<?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>215003</bug_id>
          
          <creation_ts>2020-07-30 19:34:52 -0700</creation_ts>
          <short_desc>[MSVC] wtf/Optional.h: error C2280: &apos;WTF::constexpr_storage_t&lt;T&gt; &amp;WTF::constexpr_storage_t&lt;T&gt;::operator =(const WTF::constexpr_storage_t&lt;T&gt; &amp;)&apos;: attempting to reference a deleted function</short_desc>
          <delta_ts>2020-08-04 15:55:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="QuellaZhang">1998zhangyi</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>keith_miller</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676687</commentid>
    <comment_count>0</comment_count>
      <attachid>405653</attachid>
    <who name="QuellaZhang">1998zhangyi</who>
    <bug_when>2020-07-30 19:34:52 -0700</bug_when>
    <thetext>Created attachment 405653
build_log

Environment:
VS 2019 + Windows Server 2016

Issue description:
We tried to build WebKit using VS2019 on Windows Server 2016. WebKit failed to build due to error C2280: &apos;WTF::constexpr_storage_t&lt;T&gt; &amp;WTF::constexpr_storage_t&lt;T&gt;::operator =(const WTF::constexpr_storage_t&lt;T&gt; &amp;)&apos;: attempting to reference a deleted function on windows with MSVC. It can be reproduced on master branch latest commit 4d2d7cb. Could you please help take a look at this? Thanks in advance!

Repro steps:
1. git clone https://github.com/WebKit/webkit F:\gitP\WebKit\webkit
2. open a VS 2019 x64 command prompt as admin and browse to F:\gitP\WebKit\webkit
3. set path=F:\tools\WebKit\tools;%path%
4. extra WebKitRequirementsWin64 to F:\gitP\WebKit\webkit\WebKitLibraries\win
5. mkdir build_amd64 &amp;&amp; pushd build_amd64
6. cmake -G &quot;Visual Studio 16 2019&quot; -A x64 -DCMAKE_SYSTEM_VERSION=10.0.18362.0 -DCMAKE_BUILD_TYPE=Release -DRUBY_LIBRARY=C:\tools\ruby26\lib -DPORT=&quot;WinCairo&quot; -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DSHOW_BINDINGS_GENERATION_PROGRESS=1 -DDEVELOPER_MODE=ON -DENABLE_EXPERIMENTAL_FEATURES=ON ..
7. msbuild /p:Platform=x64 /p:Configuration=Release WebKit.sln /t:Rebuild

Actual result:
F:\gitP\WebKit\webkit\build_amd64\WTF\Headers\wtf/Optional.h(419,39): error C2280: &apos;WTF::constexpr_storage_t&lt;T&gt; &amp;WTF::constexpr_storage_t&lt;T&gt;::operator =(const WTF::constexpr_storage_t&lt;T&gt; &amp;)&apos;: attempting to reference a deleted function [F:\gitP\WebKit\webkit\build_amd64\Source\JavaScriptCore\JavaScriptCore.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676758</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-31 00:27:51 -0700</bug_when>
    <thetext>I don&apos;t see any compilation errors for WinCairo trunk@265079.
&gt; perl Tools\Scripts\build-webkit --wincairo --release

I&apos;m using:

Visual Studio 2019 version 16.6.5
Windows 10 SDK (10.0.19041.0)
Windows 10 ver.1903 64bit

What&apos;s the difference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676943</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-31 13:15:30 -0700</bug_when>
    <thetext>This is my cl.exe version

Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677247</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-08-02 19:15:43 -0700</bug_when>
    <thetext>This seems a MSVC issue. Please report it to Microsoft.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677256</commentid>
    <comment_count>4</comment_count>
    <who name="QuellaZhang">1998zhangyi</who>
    <bug_when>2020-08-03 01:14:42 -0700</bug_when>
    <thetext>Hi Fujii,

Thanks for your info. We use open source projects to test the unreleased version of vs. We will report it to VC++ Team. 

Thanks,
Lin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677571</commentid>
    <comment_count>5</comment_count>
    <who name="QuellaZhang">1998zhangyi</who>
    <bug_when>2020-08-03 23:01:15 -0700</bug_when>
    <thetext>Hi Fujii,

VC++ Team feedback detailed as below: 

Nope: this is not a compiler issue. The problem is this code:

  constexpr Optional(const Optional&amp; rhs)
  : OptionalBase&lt;T&gt;()
  {
    if (rhs.initialized()) {
        if constexpr (std::is_trivially_copyable_v&lt;T&gt;)
            OptionalBase&lt;T&gt;::storage_ = *rhs;
        else
            ::new (static_cast&lt;void*&gt;(dataptr())) T(*rhs);
        OptionalBase&lt;T&gt;::init_ = true;
    }
  }

In C++ the definition of std::is_trivially_copyable is currently:

&quot;A trivially copyable class is a class:

   - that has at least one eligible copy constructor, move constructor, copy assignment operator, or move

     assignment operator (11.4.3, 11.4.4.2, 11.4.5),

   - where each eligible copy constructor, move constructor, copy assignment operator, and move assignment

     operator is trivial, and

   - that has a trivial, non-deleted destructor(11.4.6).&quot;

And std::pair&lt;JSC::SamplingProfiler::StackFrame::CodeLocation,JSC::CodeBlock *&gt; meets the conditions of this definition. Note: just because a class meets the conditions of std::is_trivially_copyable doesn&apos;t mean it is trivially copyable in all circumstances it just means there exists at least one condition under which it would be trivially copyable. Note: if I change the definition of the function above to use &apos;std::is_trivially_copy_assignable_v&apos; instead of &apos;std::is_trivially_copyable_v&apos; then the code compiles. I also had to change the move-constructor just below.


We used unreleased version of vs as below:
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29129.96 for x64 

I&apos;ve attached the UnifiedSource-f2e18ffc-32.i file. 

cl.exe /c /std:c++17 /TP UnifiedSource-f2e18ffc-32.i can reproduced this issue. If we tried to use &apos;std::is_trivially_copy_assignable_v&apos; instead of &apos;std::is_trivially_copyable_v&apos; in this UnifiedSource-f2e18ffc-32.i file. We can compile pass. Could you please take a look at this issue again? Thanks in advance!

Thanks,
Lin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677572</commentid>
    <comment_count>6</comment_count>
      <attachid>405904</attachid>
    <who name="QuellaZhang">1998zhangyi</who>
    <bug_when>2020-08-03 23:03:23 -0700</bug_when>
    <thetext>Created attachment 405904
UnifiedSource-f2e18ffc-32.cpp Precompiled file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677579</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-08-04 01:04:02 -0700</bug_when>
    <thetext>std::is_trivially_copyable_v was added by r262252.

Bug 212383 – for-of should check the iterable is a JSArray for FastArray in DFG iterator_open</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677713</commentid>
    <comment_count>8</comment_count>
      <attachid>405940</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-08-04 13:38:44 -0700</bug_when>
    <thetext>Created attachment 405940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677719</commentid>
    <comment_count>9</comment_count>
      <attachid>405940</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-04 13:58:38 -0700</bug_when>
    <thetext>Comment on attachment 405940
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677777</commentid>
    <comment_count>10</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-08-04 15:49:04 -0700</bug_when>
    <thetext>Thank you for the review.

jsc testing EWS failed wasm.yaml/wasm/lowExecutableMemory/imports-oom.js.default-wasm.
However, the test case seems flaky on EWS. Other patch also failed it flakily.
https://ews-build.webkit.org/#/builders/1/builds/19563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677779</commentid>
    <comment_count>11</comment_count>
      <attachid>405940</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-08-04 15:54:23 -0700</bug_when>
    <thetext>Comment on attachment 405940
Patch

Clearing flags on attachment: 405940

Committed r265265: &lt;https://trac.webkit.org/changeset/265265&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677780</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-08-04 15:54:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677781</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-04 15:55:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/66546102&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>405653</attachid>
            <date>2020-07-30 19:34:52 -0700</date>
            <delta_ts>2020-07-30 19:34:52 -0700</delta_ts>
            <desc>build_log</desc>
            <filename>WebKit_build_amd64.log</filename>
            <type>application/octet-stream</type>
            <size>655868</size>
            <attacher name="QuellaZhang">1998zhangyi</attacher>
            
              <data encoding="base64">//4jACMAWwBjAG8AbQBtAGEAbgBkAF0AIABDAG8AbQBtAGEAbgBkACAAIwAwACAAKABPAHUAdABw
AHUAdAAgAGkAbgAgACIAYgB1AGkAbABkAC4AbABvAGcAIgApADoAIAAgAHMAZQB0ACAAVgBTAEMA
TQBEAF8AUwBLAEkAUABfAFMARQBOAEQAVABFAEwARQBNAEUAVABSAFkAPQAxACAAJgAgACIAQwA6
AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0AaQBjAHIAbwBzAG8A
ZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABFAG4AdABlAHIAcABy
AGkAcwBlAFwAQwBvAG0AbQBvAG4ANwBcAFQAbwBvAGwAcwBcAFYAcwBEAGUAdgBDAG0AZAAuAGIA
YQB0ACIAIAAtAGgAbwBzAHQAXwBhAHIAYwBoAD0AYQBtAGQANgA0ACAALQBhAHIAYwBoAD0AYQBt
AGQANgA0AA0ACgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoA
KgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq
ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ACgAqACoAIABWAGkAcwB1AGEA
bAAgAFMAdAB1AGQAaQBvACAAMgAwADEAOQAgAEQAZQB2AGUAbABvAHAAZQByACAAQwBvAG0AbQBh
AG4AZAAgAFAAcgBvAG0AcAB0ACAAdgAxADYALgA2AC4AMAANAAoAKgAqACAAQwBvAHAAeQByAGkA
ZwBoAHQAIAAoAGMAKQAgADIAMAAyADAAIABNAGkAYwByAG8AcwBvAGYAdAAgAEMAbwByAHAAbwBy
AGEAdABpAG8AbgANAAoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoA
KgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAq
ACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgANAAoAIwAjAFsAZABlAGIA
dQBnAF0AIABDAG8AbQBtAGEAbgBkACAAIwAwACAAZQB4AGkAdABlAGQAIAB3AGkAdABoACAAYwBv
AGQAZQAgAFsAMABdAC4ADQAKACMAIwBbAGMAbwBtAG0AYQBuAGQAXQAgAEMAbwBtAG0AYQBuAGQA
IAAjADEAIAAoAE8AdQB0AHAAdQB0ACAAaQBuACAAIgBiAHUAaQBsAGQALgBsAG8AZwAiACkAOgAg
ACAAYwBkACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQADQAKACMAIwBbAGQAZQBiAHUAZwBdACAAQwBvAG0AbQBhAG4AZAAg
ACMAMQAgAGUAeABpAHQAZQBkACAAdwBpAHQAaAAgAGMAbwBkAGUAIABbADAAXQAuAA0ACgAjACMA
WwBjAG8AbQBtAGEAbgBkAF0AIABDAG8AbQBtAGEAbgBkACAAIwAyACAAKABPAHUAdABwAHUAdAAg
AGkAbgAgACIAYgB1AGkAbABkAC4AbABvAGcAIgApADoAIAAgAG0AcwBiAHUAaQBsAGQAIAAvAHAA
OgBQAGwAYQB0AGYAbwByAG0APQB4ADYANAAgAC8AcAA6AEMAbwBuAGYAaQBnAHUAcgBhAHQAaQBv
AG4APQBSAGUAbABlAGEAcwBlACAAVwBlAGIASwBpAHQALgBzAGwAbgAgAC8AdAA6AFIAZQBiAHUA
aQBsAGQAIAAyAD4AJgAxAA0ACgBNAGkAYwByAG8AcwBvAGYAdAAgACgAUgApACAAQgB1AGkAbABk
ACAARQBuAGcAaQBuAGUAIAB2AGUAcgBzAGkAbwBuACAAMQA2AC4ANgAuADAAKwA1AGYAZgA3AGIA
MABjADkAZQAgAGYAbwByACAALgBOAEUAVAAgAEYAcgBhAG0AZQB3AG8AcgBrAA0ACgBDAG8AcAB5
AHIAaQBnAGgAdAAgACgAQwApACAATQBpAGMAcgBvAHMAbwBmAHQAIABDAG8AcgBwAG8AcgBhAHQA
aQBvAG4ALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgANAAoADQAK
AEIAdQBpAGwAZABpAG4AZwAgAHQAaABlACAAcAByAG8AagBlAGMAdABzACAAaQBuACAAdABoAGkA
cwAgAHMAbwBsAHUAdABpAG8AbgAgAG8AbgBlACAAYQB0ACAAYQAgAHQAaQBtAGUALgAgAFQAbwAg
AGUAbgBhAGIAbABlACAAcABhAHIAYQBsAGwAZQBsACAAYgB1AGkAbABkACwAIABwAGwAZQBhAHMA
ZQAgAGEAZABkACAAdABoAGUAIAAiAC0AbQAiACAAcwB3AGkAdABjAGgALgANAAoAQgB1AGkAbABk
ACAAcwB0AGEAcgB0AGUAZAAgADcALwAzADAALwAyADAAMgAwACAAMgA6ADQAOQA6ADAAMQAgAEEA
TQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFcAZQBiAEsAaQB0AC4AcwBsAG4A
IgAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABz
ACkAKQAuAA0ACgBWAGEAbABpAGQAYQB0AGUAUwBvAGwAdQB0AGkAbwBuAEMAbwBuAGYAaQBnAHUA
cgBhAHQAaQBvAG4AOgANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAHMAbwBsAHUAdABpAG8AbgAg
AGMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4AIAAiAFIAZQBsAGUAYQBzAGUAfAB4ADYANAAiAC4A
DQAKAFYAYQBsAGkAZABhAHQAZQBQAHIAbwBqAGUAYwB0AHMAOgANAAoAIAAgAFQAaABlACAAcABy
AG8AagBlAGMAdAAgACIASQBOAFMAVABBAEwATAAiACAAaQBzACAAbgBvAHQAIABzAGUAbABlAGMA
dABlAGQAIABmAG8AcgAgAGIAdQBpAGwAZABpAG4AZwAgAGkAbgAgAHMAbwBsAHUAdABpAG8AbgAg
AGMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4AIAAiAFIAZQBsAGUAYQBzAGUAfAB4ADYANAAiAC4A
DQAKACAAIABUAGgAZQAgAHAAcgBvAGoAZQBjAHQAIAAiAFAAQQBDAEsAQQBHAEUAIgAgAGkAcwAg
AG4AbwB0ACAAcwBlAGwAZQBjAHQAZQBkACAAZgBvAHIAIABiAHUAaQBsAGQAaQBuAGcAIABpAG4A
IABzAG8AbAB1AHQAaQBvAG4AIABjAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuACAAIgBSAGUAbABl
AGEAcwBlAHwAeAA2ADQAIgAuAA0ACgAgACAAVABoAGUAIABwAHIAbwBqAGUAYwB0ACAAIgBSAFUA
TgBfAFQARQBTAFQAUwAiACAAaQBzACAAbgBvAHQAIABzAGUAbABlAGMAdABlAGQAIABmAG8AcgAg
AGIAdQBpAGwAZABpAG4AZwAgAGkAbgAgAHMAbwBsAHUAdABpAG8AbgAgAGMAbwBuAGYAaQBnAHUA
cgBhAHQAaQBvAG4AIAAiAFIAZQBsAGUAYQBzAGUAfAB4ADYANAAiAC4ADQAKAFAAcgBvAGoAZQBj
AHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwAVwBlAGIASwBpAHQALgBzAGwAbgAiACAAKAAxACkAIABpAHMAIABi
AHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAQQBMAEwAXwBCAFUASQBMAEQALgB2AGMAeABw
AHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADIAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAA
KABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAEEATABMAF8AQgBVAEkATABEAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0
AGEAcAByAG8AagAiACAAKAAyACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAQQBOAEcA
TABFAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAzACkAIABvAG4AIABu
AG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoA
UAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEA
cgB0AHkAXABBAE4ARwBMAEUAXABBAE4ARwBMAEUALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBw
AHIAbwBqACIAIAAoADMAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABa
AEUAUgBPAF8AQwBIAEUAQwBLAC4AdgBjAHgAcAByAG8AagAiACAAKAA0ACkAIABvAG4AIABuAG8A
ZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAQwBv
AHIAZQBDAGwAZQBhAG4AOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8A
cgB5ACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABaAEUAUgBPAF8AQwBIAEUAQwBLAFwAIgAu
AA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwAZAA6AA0ACgAgACAAQwByAGUAYQB0AGkA
bgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAFoARQBS
AE8AXwBDAEgARQBDAEsAXABaAEUAUgBPAF8AQwBIAEUAQwBLAC4AdABsAG8AZwBcACIALgANAAoA
SQBuAGkAdABpAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBl
AGEAdABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAWgBFAFIATwBfAEMASABFAEMA
SwBcAFoARQBSAE8AXwBDAEgARQBDAEsALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1
AGwAYgB1AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwAdwBhAHkAcwBDAHIAZQBhAHQA
ZQAiACAAdwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBs
AGQAOgANAAoAIAAgAEMAaABlAGMAawBpAG4AZwAgAEIAdQBpAGwAZAAgAFMAeQBzAHQAZQBtAA0A
CgBGAGkAbgBhAGwAaQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABEAGUAbABl
AHQAaQBuAGcAIABmAGkAbABlACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABaAEUAUgBPAF8A
QwBIAEUAQwBLAFwAWgBFAFIATwBfAEMASABFAEMASwAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBl
AHMAcwBmAHUAbABiAHUAaQBsAGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkAbgBnACAAIgB4ADYA
NABcAFIAZQBsAGUAYQBzAGUAXABaAEUAUgBPAF8AQwBIAEUAQwBLAFwAWgBFAFIATwBfAEMASABF
AEMASwAuAHQAbABvAGcAXABaAEUAUgBPAF8AQwBIAEUAQwBLAC4AbABhAHMAdABiAHUAaQBsAGQA
cwB0AGEAdABlACIALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBj
AHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwAWgBFAFIATwBfAEMASABFAEMASwAuAHYAYwB4AHAAcgBvAGoAIgAg
ACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMA
dAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABBAE4ARwBMAEUALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAo
ADMAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABBAE4ARwBMAEUALgB2AGMAeABwAHIA
bwBqACIAIAAoADUAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABh
AHIAZwBlAHQAKABzACkAKQAuAA0ACgBDAG8AcgBlAEMAbABlAGEAbgA6AA0ACgAgACAAQwByAGUA
YQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcACIALgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUAaQBsAGQAOgANAAoA
IAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAGwA
aQBiADYANABcACIALgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5
ACAAIgBBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAE4ARwBMAEUALgB0AGwA
bwBnAFwAIgAuAA0ACgBJAG4AaQB0AGkAYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6
AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAIgBBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABBAE4ARwBMAEUALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1
AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwAdwBhAHkAcwBDAHIAZQBhAHQAZQAiACAA
dwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgAN
AAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYAOgAvAGcA
aQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBUAGgAaQBy
AGQAUABhAHIAdAB5AC8AQQBOAEcATABFAC8AQwBNAGEAawBlAEwAaQBzAHQAcwAuAHQAeAB0AA0A
CgBNAGEAawBlAEQAaQByAHMARgBvAHIAQwBsADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABk
AGkAcgBlAGMAdABvAHIAeQAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABzAHIAYwBcAGMAbwBtAG0AbwBuACIALgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQBy
AGUAYwB0AG8AcgB5ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHMA
cgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgAiAC4ADQAKACAAIABD
AHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABzAHIAYwBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAHMAeQBz
AHQAZQBtAGkAbgBmAG8AIgAuAA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQA
bwByAHkAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAcwByAGMAXABn
AHAAdQBfAGkAbgBmAG8AXwB1AHQAaQBsACIALgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQA
aQByAGUAYwB0AG8AcgB5ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AHMAcgBjAFwAbABpAGIAQQBOAEcATABFACIALgANAAoAQwBsAEMAbwBtAHAAaQBsAGUAOgANAAoA
IAAgAEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwBy
AG8AcwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQA
ZQByAHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAy
ADgAOAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAEMATAAuAGUAeABlACAA
LwBjACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBl
AGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlACAALwBJAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQBcAEsASABSACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAIAAvAEkARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAG0AbwBuAFwAdABoAGkA
cgBkAF8AcABhAHIAdAB5AFwAYgBhAHMAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAHoAbABpAGIAXABnAG8AbwBnAGwAZQAg
AC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBvAGwAbwBnAG8AIAAvAFcANAAgAC8A
VwBYAC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMAbwBsAHUAbQBuACAALwBNAFAAIAAv
AE8AMgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJAE4AMwAyACAALwBEACAAXwBXAEkA
TgBEAE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQAIABHAEwAXwBHAEwARQBTAF8AUABS
AE8AVABPAFQAWQBQAEUAUwA9ADAAIAAvAEQAIABFAEcATABfAEUARwBMAF8AUABSAE8AVABPAFQA
WQBQAEUAUwA9ADAAIAAvAEQAIABMAEkAQgBBAE4ARwBMAEUAXwBJAE0AUABMAEUATQBFAE4AVABB
AFQASQBPAE4AIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEUAUwBTAEwAIAAvAEQA
IABHAEwAXwBBAFAASQBDAEEATABMAD0AIAAvAEQAIABHAEwAXwBBAFAASQA9ACAALwBEACAATgBP
AE0ASQBOAE0AQQBYACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBIAEwAUwBMACAA
LwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBEADMARAAxADEAIAAvAEQAIABBAE4ARwBM
AEUAXwBFAE4AQQBCAEwARQBfAEQAMwBEADkAIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBXAEkA
VABIAF8AQwBNAEEASwBFAD0AMQAgAC8ARAAgAEgAQQBWAEUAXwBDAE8ATgBGAEkARwBfAEgAPQAx
ACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8A
SABBAFMAXwBFAFgAQwBFAFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBV
AFIARQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIA
RQBfAEMAUABQAF8ATwBWAEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBEAF8ATgBBAE0ARQBT
AD0AMQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQAIABXAFQARgBfAFAA
TABBAFQARgBPAFIATQBfAFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAE4ATwBDAFIAWQBQ
AFQAIAAvAEQAIAAiAEMATQBBAEsARQBfAEkATgBUAEQASQBSAD0AXAAiAFIAZQBsAGUAYQBzAGUA
XAAiACIAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABVAE4ASQBDAE8ARABFACAALwBH
AG0ALQAgAC8ATQBEACAALwBHAFMAIAAvAGYAcAA6AHAAcgBlAGMAaQBzAGUAIAAvAGYAcAA6AGUA
eABjAGUAcAB0AC0AIAAvAFoAYwA6AHcAYwBoAGEAcgBfAHQAIAAvAFoAYwA6AGYAbwByAFMAYwBv
AHAAZQAgAC8AWgBjADoAaQBuAGwAaQBuAGUAIAAvAEcAUgAtACAALwBzAHQAZAA6AGMAKwArADEA
NwAgAC8ARgBvACIAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAXAAiACAALwBG
AGQAIgBBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAE4ARwBMAEUALgBwAGQA
YgAiACAALwBHAGQAIAAvAFQAUAAgAC8AdwBkADQAMAAxADgAIAAvAHcAZAA0ADAANgA4ACAALwB3
AGQANAAwADkAOQAgAC8AdwBkADQAMQAwADAAIAAvAHcAZAA0ADEAMgA3ACAALwB3AGQANAAxADMA
OAAgAC8AdwBkADQAMQA0ADYAIAAvAHcAZAA0ADEAOAAwACAALwB3AGQANAAxADgAOQAgAC8AdwBk
ADQAMgAwADEAIAAvAHcAZAA0ADIAMAA2ACAALwB3AGQANAAyADQANAAgAC8AdwBkADQAMgA1ADEA
IAAvAHcAZAA0ADIANgA3ACAALwB3AGQANAAyADcANQAgAC8AdwBkADQAMgA4ADgAIAAvAHcAZAA0
ADIAOQAxACAALwB3AGQANAAzADAANQAgAC8AdwBkADQAMwAwADkAIAAvAHcAZAA0ADMANAA0ACAA
LwB3AGQANAAzADUANQAgAC8AdwBkADQAMwA4ADkAIAAvAHcAZAA0ADMAOQA2ACAALwB3AGQANAA0
ADUANgAgAC8AdwBkADQANAA1ADcAIAAvAHcAZAA0ADQANQA4ACAALwB3AGQANAA0ADUAOQAgAC8A
dwBkADQANAA4ADEAIAAvAHcAZAA0ADUAMAAzACAALwB3AGQANAA1ADAANQAgAC8AdwBkADQANQAx
ADAAIAAvAHcAZAA0ADUAMQAyACAALwB3AGQANAA1ADMAMAAgAC8AdwBkADQANgAxADAAIAAvAHcA
ZAA0ADYAMQAxACAALwB3AGQANAA2ADQANgAgAC8AdwBkADQANwAwADIAIAAvAHcAZAA0ADcAMAA2
ACAALwB3AGQANAA3ADIAMgAgAC8AdwBkADQAOAAwADAAIAAvAHcAZAA0ADgAMQA5ACAALwB3AGQA
NAA5ADUAMQAgAC8AdwBkADQAOQA1ADIAIAAvAHcAZAA0ADkAOQA2ACAALwB3AGQANgAwADEAMQAg
AC8AdwBkADYAMAAzADEAIAAvAHcAZAA2ADIAMQAxACAALwB3AGQANgAyADQANgAgAC8AdwBkADYA
MgA1ADUAIAAvAHcAZAA2ADMAOAA3ACAALwB3AGQANAAwADkAMQAgAC8AYQBuAGEAbAB5AHoAZQAt
ACAALwBlAHIAcgBvAHIAUgBlAHAAbwByAHQAOgBxAHUAZQB1AGUAIAAgAC8ARQBIAHMALQAgAC8A
RQBIAGMALQAgAC8ARQBIAGEALQAgAC8ARQBIAGMALQAgAC8ARQBIAHMALQAgAC8AYgBpAGcAbwBi
AGoAIAAvAHUAdABmAC0AOAAgAC8AdgBhAGwAaQBkAGEAdABlAC0AYwBoAGEAcgBzAGUAdAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAEYA
bABvAGEAdAAxADYAVABvAEYAbABvAGEAdAAzADIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAE0AZQBtAG8AcgB5AEIAdQBm
AGYAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBj
AFwAYwBvAG0AbQBvAG4AXABQAGEAYwBrAGUAZABFAEcATABFAG4AdQBtAHMAXwBhAHUAdABvAGcA
ZQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwA
YwBvAG0AbQBvAG4AXABQAGEAYwBrAGUAZABFAG4AdQBtAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAFAAYQBjAGsAZQBk
AEcATABFAG4AdQBtAHMAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXABhAGwAaQBnAG4AZQBkAF8A
bQBlAG0AbwByAHkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABjAG8AbQBtAG8AbgBcAGEAbgBkAHIAbwBpAGQAXwB1AHQAaQBsAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXABh
AG4AZwBsAGUAdQB0AGkAbABzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXABlAHYAZQBuAHQAXwB0AHIAYQBjAGUAcgAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAG0A
bwBuAFwAbQBhAHQAaAB1AHQAaQBsAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXABtAGEAdAByAGkAeABfAHUAdABpAGwAcwAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBt
AG0AbwBuAFwAcwB0AHIAaQBuAGcAXwB1AHQAaQBsAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAHQAaABpAHIAZABfAHAA
YQByAHQAeQBcAGIAYQBzAGUAXABhAG4AZwBsAGUAYgBhAHMAZQBcAHMAaABhADEALgBjAGMAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXAB0
AGgAaQByAGQAXwBwAGEAcgB0AHkAXABzAG0AaABhAHMAaABlAHIAXABzAHIAYwBcAFAATQB1AHIA
SABhAHMAaAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGMAbwBtAG0AbwBuAFwAdABsAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAHUAbgBpAGYAbwByAG0AXwB0AHkAcABl
AF8AaQBuAGYAbwBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAHUAdABpAGwAaQB0AGkAZQBzAC4A
YwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1
AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0A
cABpAGwAZQByAFwAcAByAGUAcAByAG8AYwBlAHMAcwBvAHIAXABEAGkAYQBnAG4AbwBzAHQAaQBj
AHMAQgBhAHMAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABz
AHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHAAcgBlAHAAcgBvAGMAZQBzAHMAbwByAFwARABpAHIA
ZQBjAHQAaQB2AGUASABhAG4AZABsAGUAcgBCAGEAcwBlAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAcAByAGUAcABy
AG8AYwBlAHMAcwBvAHIAXABEAGkAcgBlAGMAdABpAHYAZQBQAGEAcgBzAGUAcgAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUA
cgBcAHAAcgBlAHAAcgBvAGMAZQBzAHMAbwByAFwASQBuAHAAdQB0AC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAcABy
AGUAcAByAG8AYwBlAHMAcwBvAHIAXABMAGUAeABlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXABwAHIAZQBwAHIA
bwBjAGUAcwBzAG8AcgBcAE0AYQBjAHIAbwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkA
XABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHAAcgBlAHAAcgBvAGMAZQBz
AHMAbwByAFwATQBhAGMAcgBvAEUAeABwAGEAbgBkAGUAcgAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHAAcgBlAHAA
cgBvAGMAZQBzAHMAbwByAFwAUAByAGUAcAByAG8AYwBlAHMAcwBvAHIALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXABw
AHIAZQBwAHIAbwBjAGUAcwBzAG8AcgBcAFQAbwBrAGUAbgAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHAAcgBlAHAA
cgBvAGMAZQBzAHMAbwByAFwAcAByAGUAcAByAG8AYwBlAHMAcwBvAHIAXwBsAGUAeABfAGEAdQB0
AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwBy
AGMAXABjAG8AbQBwAGkAbABlAHIAXABwAHIAZQBwAHIAbwBjAGUAcwBzAG8AcgBcAHAAcgBlAHAA
cgBvAGMAZQBzAHMAbwByAF8AdABhAGIAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdABy
AGEAbgBzAGwAYQB0AG8AcgBcAE8AdQB0AHAAdQB0AEUAUwBTAEwALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIA
YQBuAHMAbABhAHQAbwByAFwAVAByAGEAbgBzAGwAYQB0AG8AcgBFAFMAUwBMAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQBy
AFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAEIAdQBpAGwAdABJAG4ARgB1AG4AYwB0AGkAbwBuAEUA
bQB1AGwAYQB0AG8AcgBHAEwAUwBMAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBc
AEIAdQBpAGwAdABpAG4AcwBXAG8AcgBrAGEAcgBvAHUAbgBkAEcATABTAEwALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIA
XAB0AHIAYQBuAHMAbABhAHQAbwByAFwARQB4AHQAZQBuAHMAaQBvAG4ARwBMAFMATAAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBs
AGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABPAHUAdABwAHUAdABHAEwAUwBMAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwA
ZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAE8AdQB0AHAAdQB0AEcATABTAEwAQgBhAHMAZQAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBt
AHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABUAHIAYQBuAHMAbABhAHQAbwByAEcA
TABTAEwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAVgBlAHIAcwBpAG8AbgBH
AEwAUwBMAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBj
AFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAEIAdQBpAGwAdABJAG4A
RgB1AG4AYwB0AGkAbwBuAEUAbQB1AGwAYQB0AG8AcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEA
cgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBs
AGEAdABvAHIAXABDAGEAbABsAEQAQQBHAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8A
cgBcAEMAbwBkAGUARwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAQwBv
AGwAbABlAGMAdABWAGEAcgBpAGEAYgBsAGUAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0
AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEA
dABvAHIAXABDAG8AbgBzAHQAYQBuAHQAVQBuAGkAbwBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBz
AGwAYQB0AG8AcgBcAEQAZQBjAGwAYQByAGEAdABvAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMA
bABhAHQAbwByAFwARABpAGEAZwBuAG8AcwB0AGkAYwBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBz
AGwAYQB0AG8AcgBcAEQAaQByAGUAYwB0AGkAdgBlAEgAYQBuAGQAbABlAHIALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIA
XAB0AHIAYQBuAHMAbABhAHQAbwByAFwARQB4AHQAZQBuAHMAaQBvAG4AQgBlAGgAYQB2AGkAbwBy
AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBv
AG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAEYAbABhAGcAUwB0AGQAMQA0ADAA
UwB0AHIAdQBjAHQAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUA
XABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABGAHUAbgBj
AHQAaQBvAG4ATABvAG8AawB1AHAALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwA
SABhAHMAaABOAGEAbQBlAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwASQBt
AG0AdQB0AGEAYgBsAGUAUwB0AHIAaQBuAGcAQgB1AGkAbABkAGUAcgAuAGMAcABwACAARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQA
cgBhAG4AcwBsAGEAdABvAHIAXABJAG4AZgBvAFMAaQBuAGsALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBu
AHMAbABhAHQAbwByAFwASQBuAGkAdABpAGEAbABpAHoAZQAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4A
cwBsAGEAdABvAHIAXABJAG4AaQB0AGkAYQBsAGkAegBlAEQAbABsAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdABy
AGEAbgBzAGwAYQB0AG8AcgBcAEkAbgB0AGUAcgBtAE4AbwBkAGUALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIA
YQBuAHMAbABhAHQAbwByAFwASQBzAEEAUwBUAEQAZQBwAHQAaABCAGUAbABvAHcATABpAG0AaQB0
AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBv
AG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAE8AcABlAHIAYQB0AG8AcgAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAA
aQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABPAHUAdABwAHUAdABUAHIAZQBlAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABp
AGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAFAAYQByAHMAZQBDAG8AbgB0AGUAeAB0AC4A
YwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1
AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0A
cABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAFEAdQBhAGwAaQBmAGkAZQByAFQAeQBw
AGUAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBc
AGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABTAGgAYQBkAGUAcgBMAGEA
bgBnAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwA
YwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAFMAaABhAGQAZQByAFYAYQBy
AHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABj
AG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAUwB5AG0AYgBvAGwALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkA
bABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAUwB5AG0AYgBvAGwAVABhAGIAbABlAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABp
AGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAFMAeQBtAGIAbwBsAFUAbgBpAHEAdQBlAEkA
ZAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMA
bwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABUAHkAcABlAHMALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABl
AHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAVgBhAGwAaQBkAGEAdABlAEEAUwBUAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwA
ZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAFYAYQBsAGkAZABhAHQAZQBHAGwAbwBiAGEAbABJ
AG4AaQB0AGkAYQBsAGkAegBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwA
VgBhAGwAaQBkAGEAdABlAEwAaQBtAGkAdABhAHQAaQBvAG4AcwAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIA
ZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBh
AG4AcwBsAGEAdABvAHIAXABWAGEAbABpAGQAYQB0AGUATQBhAHgAUABhAHIAYQBtAGUAdABlAHIA
cwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMA
bwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABWAGEAbABpAGQAYQB0AGUATwB1
AHQAcAB1AHQAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABz
AHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABWAGEAbABpAGQA
YQB0AGUAUwB3AGkAdABjAGgALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAVgBh
AGwAaQBkAGEAdABlAFYAYQByAHkAaQBuAGcATABvAGMAYQB0AGkAbwBuAHMALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIA
XAB0AHIAYQBuAHMAbABhAHQAbwByAFwAVgBhAHIAaQBhAGIAbABlAFAAYQBjAGsAZQByAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABp
AGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAGIAbABvAGMAawBsAGEAeQBvAHUAdAAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAA
aQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABnAGwAcwBsAGEAbgBnAF8AbABlAHgAXwBh
AHUAdABvAGcAZQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBc
AHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAGcAbABzAGwA
YQBuAGcAXwB0AGEAYgBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABh
AHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwAQQBkAGQAQQBuAGQAVAByAHUAZQBUAG8ATABvAG8A
cABDAG8AbgBkAGkAdABpAG8AbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0
AHIAZQBlAF8AbwBwAHMAXABCAHIAZQBhAGsAVgBhAHIAaQBhAGIAbABlAEEAbABpAGEAcwBpAG4A
ZwBJAG4ASQBuAG4AZQByAEwAbwBvAHAAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkA
XABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABv
AHIAXAB0AHIAZQBlAF8AbwBwAHMAXABDAGwAYQBtAHAARgByAGEAZwBEAGUAcAB0AGgALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkA
bABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwAQwBsAGEAbQBw
AFAAbwBpAG4AdABTAGkAegBlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQA
cgBlAGUAXwBvAHAAcwBcAEQAZQBjAGwAYQByAGUAQQBuAGQASQBuAGkAdABCAHUAaQBsAHQAaQBu
AHMARgBvAHIASQBuAHMAdABhAG4AYwBlAGQATQB1AGwAdABpAHYAaQBlAHcALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIA
XAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwARABlAGYAZQByAEcAbABv
AGIAYQBsAEkAbgBpAHQAaQBhAGwAaQB6AGUAcgBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwA
YQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAEUAYQByAGwAeQBGAHIAYQBnAG0AZQBuAHQAVABl
AHMAdABzAE8AcAB0AGkAbQBpAHoAYQB0AGkAbwBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwA
YQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAEUAbQB1AGwAYQB0AGUARwBMAEYAcgBhAGcAQwBv
AGwAbwByAEIAcgBvAGEAZABjAGEAcwB0AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8A
cgBcAHQAcgBlAGUAXwBvAHAAcwBcAEUAbQB1AGwAYQB0AGUATQB1AGwAdABpAEQAcgBhAHcAUwBo
AGEAZABlAHIAQgB1AGkAbAB0AGkAbgBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8A
cgBcAHQAcgBlAGUAXwBvAHAAcwBcAEUAbQB1AGwAYQB0AGUAUAByAGUAYwBpAHMAaQBvAG4ALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBw
AGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwARQB4AHAA
YQBuAGQASQBuAHQAZQBnAGUAcgBQAG8AdwBFAHgAcAByAGUAcwBzAGkAbwBuAHMALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABl
AHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwARgBvAGwAZABFAHgA
cAByAGUAcwBzAGkAbwBuAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdABy
AGUAZQBfAG8AcABzAFwASQBuAGkAdABpAGEAbABpAHoAZQBWAGEAcgBpAGEAYgBsAGUAcwAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAA
aQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0AHIAZQBlAF8AbwBwAHMAXABOAGEAbQBl
AEUAbQBiAGUAZABkAGUAZABVAG4AaQBmAG8AcgBtAFMAdAByAHUAYwB0AHMALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIA
XAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwAUAByAHUAbgBlAEUAbQBw
AHQAeQBDAGEAcwBlAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUA
ZQBfAG8AcABzAFwAUAByAHUAbgBlAE4AbwBPAHAAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEA
cgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBs
AGEAdABvAHIAXAB0AHIAZQBlAF8AbwBwAHMAXABSAGUAYwBvAHIAZABDAG8AbgBzAHQAYQBuAHQA
UAByAGUAYwBpAHMAaQBvAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdABy
AGUAZQBfAG8AcABzAFwAUgBlAGcAZQBuAGUAcgBhAHQAZQBTAHQAcgB1AGMAdABOAGEAbQBlAHMA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8A
bQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwAUgBl
AG0AbwB2AGUAQQByAHIAYQB5AEwAZQBuAGcAdABoAE0AZQB0AGgAbwBkAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwA
dAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAFIAZQBtAG8AdgBlAEEAdABv
AG0AaQBjAEMAbwB1AG4AdABlAHIAQgB1AGkAbAB0AGkAbgBzAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBk
AFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEA
bgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAFIAZQBtAG8AdgBlAEQAeQBuAGEAbQBp
AGMASQBuAGQAZQB4AGkAbgBnAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQA
cgBlAGUAXwBvAHAAcwBcAFIAZQBtAG8AdgBlAEkAbgBhAGMAdABpAHYAZQBJAG4AdABlAHIAZgBh
AGMAZQBWAGEAcgBpAGEAYgBsAGUAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABB
AE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIA
XAB0AHIAZQBlAF8AbwBwAHMAXABSAGUAbQBvAHYAZQBJAG4AdgBhAHIAaQBhAG4AdABEAGUAYwBs
AGEAcgBhAHQAaQBvAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUA
ZQBfAG8AcABzAFwAUgBlAG0AbwB2AGUAUABvAHcALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABh
AHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwAUgBlAG0AbwB2AGUAVQBuAHIAZQBmAGUAcgBlAG4A
YwBlAGQAVgBhAHIAaQBhAGIAbABlAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwBy
AFwAdAByAGUAZQBfAG8AcABzAFwAUgBlAHcAcgBpAHQAZQBBAHQAbwBtAGkAYwBDAG8AdQBuAHQA
ZQByAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABz
AFwAUgBlAHcAcgBpAHQAZQBBAHQAbwBtAGkAYwBGAHUAbgBjAHQAaQBvAG4ARQB4AHAAcgBlAHMA
cwBpAG8AbgBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMA
cgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBv
AHAAcwBcAFIAZQB3AHIAaQB0AGUAQwB1AGIAZQBNAGEAcABTAGEAbQBwAGwAZQByAHMAQQBzADIA
RABBAHIAcgBhAHkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBf
AG8AcABzAFwAUgBlAHcAcgBpAHQAZQBEAGYAZAB5AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwA
YQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAFIAZQB3AHIAaQB0AGUARABvAFcAaABpAGwAZQAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBt
AHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0AHIAZQBlAF8AbwBwAHMAXABSAGUA
dwByAGkAdABlAEUAeABwAHIAZQBzAHMAaQBvAG4AcwBXAGkAdABoAFMAaABhAGQAZQByAFMAdABv
AHIAYQBnAGUAQgBsAG8AYwBrAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQA
cgBlAGUAXwBvAHAAcwBcAFIAZQB3AHIAaQB0AGUAUgBlAHAAZQBhAHQAZQBkAEEAcwBzAGkAZwBu
AFQAbwBTAHcAaQB6AHoAbABlAGQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwA
dAByAGUAZQBfAG8AcABzAFwAUgBlAHcAcgBpAHQAZQBSAG8AdwBNAGEAagBvAHIATQBhAHQAcgBp
AGMAZQBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBj
AFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAA
cwBcAFIAZQB3AHIAaQB0AGUAUwB0AHIAdQBjAHQAUwBhAG0AcABsAGUAcgBzAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQBy
AFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAFIAZQB3AHIAaQB0AGUA
UwB0AHIAdQBjAHQAUwBhAG0AcABsAGUAcgBzAE8AbABkAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBz
AGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAFIAZQB3AHIAaQB0AGUAVABlAHgAZQBsAEYA
ZQB0AGMAaABPAGYAZgBzAGUAdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0
AHIAZQBlAF8AbwBwAHMAXABSAGUAdwByAGkAdABlAFUAbgBhAHIAeQBNAGkAbgB1AHMATwBwAGUA
cgBhAHQAbwByAEYAbABvAGEAdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0
AHIAZQBlAF8AbwBwAHMAXABSAGUAdwByAGkAdABlAFUAbgBhAHIAeQBNAGkAbgB1AHMATwBwAGUA
cgBhAHQAbwByAEkAbgB0AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBl
AGUAXwBvAHAAcwBcAFMAYwBhAGwAYQByAGkAegBlAFYAZQBjAEEAbgBkAE0AYQB0AEMAbwBuAHMA
dAByAHUAYwB0AG8AcgBBAHIAZwBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBc
AHQAcgBlAGUAXwBvAHAAcwBcAFMAZQBwAGEAcgBhAHQAZQBEAGUAYwBsAGEAcgBhAHQAaQBvAG4A
cwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMA
bwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0AHIAZQBlAF8AbwBwAHMAXABT
AGkAbQBwAGwAaQBmAHkATABvAG8AcABDAG8AbgBkAGkAdABpAG8AbgBzAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwA
dAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAFMAcABsAGkAdABTAGUAcQB1
AGUAbgBjAGUATwBwAGUAcgBhAHQAbwByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8A
cgBcAHQAcgBlAGUAXwBvAHAAcwBcAFUAbgBmAG8AbABkAFMAaABvAHIAdABDAGkAcgBjAHUAaQB0
AEEAUwBUAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBj
AFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAA
cwBcAFUAcwBlAEkAbgB0AGUAcgBmAGEAYwBlAEIAbABvAGMAawBGAGkAZQBsAGQAcwAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBs
AGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0AHIAZQBlAF8AbwBwAHMAXABWAGUAYwB0AG8A
cgBpAHoAZQBWAGUAYwB0AG8AcgBTAGMAYQBsAGEAcgBBAHIAaQB0AGgAbQBlAHQAaQBjAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABp
AGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwB1AHQAaQBsAFwARgBpAG4A
ZABGAHUAbgBjAHQAaQBvAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdABy
AGUAZQBfAHUAdABpAGwAXABGAGkAbgBkAE0AYQBpAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMA
bABhAHQAbwByAFwAdAByAGUAZQBfAHUAdABpAGwAXABGAGkAbgBkAFMAeQBtAGIAbwBsAE4AbwBk
AGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABj
AG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAHUAdABpAGwA
XABJAG4AdABlAHIAbQBOAG8AZABlAFAAYQB0AHQAZQByAG4ATQBhAHQAYwBoAGUAcgAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBs
AGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0AHIAZQBlAF8AdQB0AGkAbABcAEkAbgB0AGUA
cgBtAE4AbwBkAGUAXwB1AHQAaQBsAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBc
AHQAcgBlAGUAXwB1AHQAaQBsAFwASQBuAHQAZQByAG0AVAByAGEAdgBlAHIAcwBlAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwA
ZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwB1AHQAaQBsAFwAUgBlAHAAbABh
AGMAZQBDAGwAaQBwAEQAaQBzAHQAYQBuAGMAZQBWAGEAcgBpAGEAYgBsAGUALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIA
XAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAHUAdABpAGwAXABSAGUAcABsAGEAYwBl
AFMAaABhAGQAbwB3AGkAbgBnAFYAYQByAGkAYQBiAGwAZQBzAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBk
AFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEA
bgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwB1AHQAaQBsAFwAUgBlAHAAbABhAGMAZQBWAGEAcgBp
AGEAYgBsAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwBy
AGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAHUA
dABpAGwAXABSAHUAbgBBAHQAVABoAGUARQBuAGQATwBmAFMAaABhAGQAZQByAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQBy
AFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHUAdABpAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkAXABjAG8A
bQBwAGkAbABlAHIAXABBAHIAcgBhAHkAQgBvAHUAbgBkAHMAQwBsAGEAbQBwAGUAcgAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBs
AGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABJAG0AbQB1AHQAYQBiAGwAZQBTAHQAcgBpAG4A
ZwBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAUwB5
AG0AYgBvAGwAVABhAGIAbABlAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAG0AbwBuAFwAcwB5AHMAdABlAG0A
XwB1AHQAaQBsAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABjAG8AbQBtAG8AbgBcAHMAeQBzAHQAZQBtAF8AdQB0AGkAbABzAF8AdwBpAG4ALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBt
AG8AbgBcAHMAeQBzAHQAZQBtAF8AdQB0AGkAbABzAF8AdwBpAG4AMwAyAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwA
RgByAGEAbQBlAEMAYQBwAHQAdQByAGUAXwBtAG8AYwBrAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBz
AGwAYQB0AG8AcgBcAEEAUwBUAE0AZQB0AGEAZABhAHQAYQBIAEwAUwBMAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwA
dAByAGEAbgBzAGwAYQB0AG8AcgBcAEEAdABvAG0AaQBjAEMAbwB1AG4AdABlAHIARgB1AG4AYwB0
AGkAbwBuAEgATABTAEwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAQgB1AGkA
bAB0AEkAbgBGAHUAbgBjAHQAaQBvAG4ARQBtAHUAbABhAHQAbwByAEgATABTAEwALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABl
AHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwASQBtAGEAZwBlAEYAdQBuAGMAdABpAG8AbgBIAEwA
UwBMAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwA
YwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAE8AdQB0AHAAdQB0AEgATABT
AEwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABj
AG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAUgBlAHMAbwB1AHIAYwBlAHMA
SABMAFMATAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABTAGgAYQBkAGUAcgBT
AHQAbwByAGEAZwBlAEIAbABvAGMAawBGAHUAbgBjAHQAaQBvAG4ASABMAFMATAAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUA
cgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABTAGgAYQBkAGUAcgBTAHQAbwByAGEAZwBlAEIAbABv
AGMAawBPAHUAdABwAHUAdABIAEwAUwBMAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8A
cgBcAFMAdAByAHUAYwB0AHUAcgBlAEgATABTAEwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABh
AHQAbwByAFwAVABlAHgAdAB1AHIAZQBGAHUAbgBjAHQAaQBvAG4ASABMAFMATAAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUA
cgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABUAHIAYQBuAHMAbABhAHQAbwByAEgATABTAEwALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBw
AGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAVQB0AGkAbABzAEgATABTAEwALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBwAGkA
bABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAYgBsAG8AYwBrAGwAYQB5AG8AdQB0AEgATABT
AEwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABj
AG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAZQBtAHUAbABhAHQAZQBkAF8A
YgB1AGkAbAB0AGkAbgBfAGYAdQBuAGMAdABpAG8AbgBzAF8AaABsAHMAbABfAGEAdQB0AG8AZwBl
AG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABj
AG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABzAFwA
QQBkAGQARABlAGYAYQB1AGwAdABSAGUAdAB1AHIAbgBTAHQAYQB0AGUAbQBlAG4AdABzAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABp
AGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAEEAcgByAGEA
eQBSAGUAdAB1AHIAbgBWAGEAbAB1AGUAVABvAE8AdQB0AFAAYQByAGEAbQBlAHQAZQByAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABp
AGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAHQAcgBlAGUAXwBvAHAAcwBcAFIAZQBtAG8A
dgBlAFMAdwBpAHQAYwBoAEYAYQBsAGwAVABoAHIAbwB1AGcAaAAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIA
ZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBh
AG4AcwBsAGEAdABvAHIAXAB0AHIAZQBlAF8AbwBwAHMAXABSAGUAdwByAGkAdABlAEUAbABzAGUA
QgBsAG8AYwBrAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBf
AG8AcABzAFwAUwBlAHAAYQByAGEAdABlAEEAcgByAGEAeQBDAG8AbgBzAHQAcgB1AGMAdABvAHIA
UwB0AGEAdABlAG0AZQBuAHQAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0
AHIAZQBlAF8AbwBwAHMAXABTAGUAcABhAHIAYQB0AGUAQQByAHIAYQB5AEkAbgBpAHQAaQBhAGwA
aQB6AGEAdABpAG8AbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUA
XABzAHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXAB0AHIAZQBl
AF8AbwBwAHMAXABTAGUAcABhAHIAYQB0AGUARQB4AHAAcgBlAHMAcwBpAG8AbgBzAFIAZQB0AHUA
cgBuAGkAbgBnAEEAcgByAGEAeQBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBc
AHQAcgBlAGUAXwBvAHAAcwBcAFUAbgBmAG8AbABkAFMAaABvAHIAdABDAGkAcgBjAHUAaQB0AFQA
bwBJAGYALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABjAG8AbQBwAGkAbABlAHIAXAB0AHIAYQBuAHMAbABhAHQAbwByAFwAdAByAGUAZQBfAG8AcABz
AFwAVwByAGEAcABTAHcAaQB0AGMAaABTAHQAYQB0AGUAbQBlAG4AdABzAEkAbgBCAGwAbwBjAGsA
cwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwA
aQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAQgB1AGYAZgBlAHIARAAz
AEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABs
AGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAEMAbwBtAHAAaQBsAGUA
cgBEADMARAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwARABlAHYAaQBj
AGUARAAzAEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwBy
AGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAEQAaQBzAHAA
bABhAHkARAAzAEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAEQAeQBu
AGEAbQBpAGMASABMAFMATAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwA
RAB5AG4AYQBtAGkAYwBJAG0AYQBnAGUAMgBEAEgATABTAEwALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBk
AGUAcgBlAHIAXABkADMAZABcAEUARwBMAEkAbQBhAGcAZQBEADMARAAuAGMAcABwACAARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIA
ZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwARgByAGEAbQBlAGIAdQBmAGYAZQByAEQAMwBEAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBO
AEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABIAEwAUwBMAEMAbwBtAHAAaQBsAGUA
cgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwA
aQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwASQBtAGEAZwBlAEQAMwBE
AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABp
AGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABJAG4AZABlAHgAQgB1AGYA
ZgBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAEkAbgBkAGUAeABE
AGEAdABhAE0AYQBuAGEAZwBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMA
ZABcAE4AYQB0AGkAdgBlAFcAaQBuAGQAbwB3AEQAMwBEAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABl
AHIAZQByAFwAZAAzAGQAXABQAHIAbwBnAHIAYQBtAEQAMwBEAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBk
AFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4A
ZABlAHIAZQByAFwAZAAzAGQAXABSAGUAbgBkAGUAcgBUAGEAcgBnAGUAdABEADMARAAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBH
AEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAUgBlAG4AZABlAHIAYgB1AGYAZgBlAHIA
RAAzAEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAFIAZQBuAGQAZQBy
AGUAcgBEADMARAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABz
AHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAUwBoAGEA
ZABlAHIARAAzAEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAFMAaABh
AGQAZQByAEUAeABlAGMAdQB0AGEAYgBsAGUARAAzAEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUA
cgBlAHIAXABkADMAZABcAFMAdQByAGYAYQBjAGUARAAzAEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBk
AGUAcgBlAHIAXABkADMAZABcAFMAdwBhAHAAQwBoAGEAaQBuAEQAMwBEAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwA
cgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABUAGUAeAB0AHUAcgBlAEQAMwBEAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABF
AFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABWAGUAcgB0AGUAeABCAHUAZgBmAGUAcgAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEA
TgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAVgBlAHIAdABlAHgARABhAHQAYQBN
AGEAbgBhAGcAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBc
AHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMA
ZAAxADEAXABCAGwAaQB0ADEAMQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBk
AFwAZAAzAGQAMQAxAFwAQgB1AGYAZgBlAHIAMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIA
ZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABDAGwAZQBhAHIAMQAxAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBl
AG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABDAG8AbgB0AGUAeAB0ADEAMQAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEA
TgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAMQAxAFwARABlAGIAdQBn
AEEAbgBuAG8AdABhAHQAbwByADEAMQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABB
AE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQA
MwBkAFwAZAAzAGQAMQAxAFwARQB4AHQAZQByAG4AYQBsAEkAbQBhAGcAZQBTAGkAYgBsAGkAbgBn
AEkAbQBwAGwAMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBc
AHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMA
ZAAxADEAXABGAGUAbgBjAGUAMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAz
AGQAXABkADMAZAAxADEAXABGAHIAYQBtAGUAYgB1AGYAZgBlAHIAMQAxAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwA
cgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABJAG0AYQBnAGUAMQAxAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBO
AEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABJAG4AZABlAHgA
QgB1AGYAZgBlAHIAMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABk
ADMAZAAxADEAXABJAG4AcAB1AHQATABhAHkAbwB1AHQAQwBhAGMAaABlAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwA
cgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABNAGEAcABwAGUAZABTAHUAYgBy
AGUAcwBvAHUAcgBjAGUAVgBlAHIAaQBmAGkAZQByADEAMQAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQA
ZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAMQAxAFwAUABpAHgAZQBsAFQAcgBhAG4AcwBmAGUAcgAx
ADEALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABs
AGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADEAMQBcAFAA
cgBvAGcAcgBhAG0AMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABk
ADMAZAAxADEAXABQAHIAbwBnAHIAYQBtAFAAaQBwAGUAbABpAG4AZQAxADEALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUA
XAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADEAMQBcAFEAdQBlAHIAeQAxADEALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBB
AE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADEAMQBcAFIAZQBuAGQA
ZQByAFMAdABhAHQAZQBDAGEAYwBoAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABk
ADMAZABcAGQAMwBkADEAMQBcAFIAZQBuAGQAZQByAFQAYQByAGcAZQB0ADEAMQAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwA
RQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAMQAxAFwAUgBlAG4AZABlAHIAZQBy
ADEAMQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBc
AGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAMQAxAFwA
UgBlAHMAbwB1AHIAYwBlAE0AYQBuAGEAZwBlAHIAMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABl
AHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABTAGgAYQBkAGUAcgBFAHgAZQBjAHUAdABhAGIA
bABlADEAMQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAMQAx
AFwAUwB0AGEAdABlAE0AYQBuAGEAZwBlAHIAMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIA
ZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABTAHQAcgBlAGEAbQBQAHIAbwBkAHUAYwBlAHIARAAz
AEQAVABlAHgAdAB1AHIAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwA
ZAAzAGQAMQAxAFwAUwB3AGEAcABDAGgAYQBpAG4AMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABl
AHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABUAGUAeAB0AHUAcgBlAFMAdABvAHIAYQBnAGUA
MQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwA
bABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABU
AHIAYQBuAHMAZgBvAHIAbQBGAGUAZQBkAGIAYQBjAGsAMQAxAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBk
AFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4A
ZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABUAHIAaQBtADEAMQAuAGMAcABwACAARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQA
aABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBc
AHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAMQAxAFwAVgBlAHIAdABlAHgAQQByAHIA
YQB5ADEAMQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAMQAx
AFwAVgBlAHIAdABlAHgAQgB1AGYAZgBlAHIAMQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIA
ZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABmAG8AcgBtAGEAdAB1AHQAaQBsAHMAMQAxAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBO
AEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXAByAGUAbgBkAGUA
cgBlAHIAMQAxAF8AdQB0AGkAbABzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAz
AGQAXABkADMAZAAxADEAXAB0AGUAeAB0AHUAcgBlAF8AZgBvAHIAbQBhAHQAXwB0AGEAYgBsAGUA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkA
YgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADEAMQBcAHQAZQB4
AHQAdQByAGUAXwBmAG8AcgBtAGEAdABfAHQAYQBiAGwAZQBfAGEAdQB0AG8AZwBlAG4ALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4A
RwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADEAMQBcAGMAbwBuAHYAZQBy
AGcAZQBkAFwAQwBvAG0AcABvAHMAaQB0AG8AcgBOAGEAdABpAHYAZQBXAGkAbgBkAG8AdwAxADEA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkA
YgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADEAMQBcAHcAaQBu
ADMAMgBcAE4AYQB0AGkAdgBlAFcAaQBuAGQAbwB3ADEAMQBXAGkAbgAzADIALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUA
XAByAGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADEAMQBcAGQAeABnAGkAXwBmAG8AcgBt
AGEAdABfAG0AYQBwAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0
AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUA
cgBcAGQAMwBkAFwAZAAzAGQAMQAxAFwAZAB4AGcAaQBfAHMAdQBwAHAAbwByAHQAXwB0AGEAYgBs
AGUAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAHMAcgBjAFwAZwBwAHUAXwBpAG4AZgBvAF8AdQB0AGkAbABcAFMAeQBzAHQAZQBtAEkA
bgBmAG8AXwB3AGkAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUA
XABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAz
AGQAOQBcAEIAbABpAHQAOQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwA
ZAAzAGQAOQBcAEIAdQBmAGYAZQByADkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABk
ADMAZABcAGQAMwBkADkAXABDAG8AbgB0AGUAeAB0ADkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUA
cgBlAHIAXABkADMAZABcAGQAMwBkADkAXABEAGUAYgB1AGcAQQBuAG4AbwB0AGEAdABvAHIAOQAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBi
AEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAOQBcAEYAZQBuAGMA
ZQA5AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwA
bABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAA5AFwARgBy
AGEAbQBlAGIAdQBmAGYAZQByADkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkADMA
ZABcAGQAMwBkADkAXABJAG0AYQBnAGUAOQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkA
XABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBc
AGQAMwBkAFwAZAAzAGQAOQBcAEkAbgBkAGUAeABCAHUAZgBmAGUAcgA5AC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwA
cgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAA5AFwATgBhAHQAaQB2AGUAVwBpAG4AZABv
AHcAOQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBc
AGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAOQBcAFEA
dQBlAHIAeQA5AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMA
cgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAA5
AFwAUgBlAG4AZABlAHIAVABhAHIAZwBlAHQAOQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0
AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUA
cgBcAGQAMwBkAFwAZAAzAGQAOQBcAFIAZQBuAGQAZQByAGUAcgA5AC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBl
AG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAA5AFwAUwBoAGEAZABlAHIARQB4AGUAYwB1AHQA
YQBiAGwAZQA5AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMA
cgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAA5
AFwAUwB0AGEAdABlAE0AYQBuAGEAZwBlAHIAOQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0
AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUA
cgBcAGQAMwBkAFwAZAAzAGQAOQBcAFMAdwBhAHAAQwBoAGEAaQBuADkALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABy
AGUAbgBkAGUAcgBlAHIAXABkADMAZABcAGQAMwBkADkAXABUAGUAeAB0AHUAcgBlAFMAdABvAHIA
YQBnAGUAOQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGQAMwBkAFwAZAAzAGQAOQBc
AFYAZQByAHQAZQB4AEIAdQBmAGYAZQByADkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIA
XABkADMAZABcAGQAMwBkADkAXABWAGUAcgB0AGUAeABEAGUAYwBsAGEAcgBhAHQAaQBvAG4AQwBh
AGMAaABlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBj
AFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAZAAzAGQAXABkADMAZAA5AFwA
ZgBvAHIAbQBhAHQAdQB0AGkAbABzADkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABk
ADMAZABcAGQAMwBkADkAXAByAGUAbgBkAGUAcgBlAHIAOQBfAHUAdABpAGwAcwAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwA
RQBcAEEAdAB0AHIAaQBiAHUAdABlAE0AYQBwAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQA
eQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAQgBsAG8AYgBDAGEAYwBo
AGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABs
AGkAYgBBAE4ARwBMAEUAXABCAHUAZgBmAGUAcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0
AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAEMAYQBwAHMALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4A
RwBMAEUAXABDAG8AbgBmAGkAZwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAEMAbwBuAHQAZQB4AHQALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBM
AEUAXABDAG8AbgB0AGUAeAB0AF8AZwBsAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAQwBvAG4AdABlAHgAdABfAGcA
bABlAHMAXwAxAF8AMAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUA
XABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAEQAZQB2AGkAYwBlAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwARABp
AHMAcABsAGEAeQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABz
AHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAEUARwBMAFMAeQBuAGMALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABFAHIA
cgBvAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABsAGkAYgBBAE4ARwBMAEUAXABGAGUAbgBjAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABGAHIAYQBtAGUAYgB1
AGYAZgBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwBy
AGMAXABsAGkAYgBBAE4ARwBMAEUAXABGAHIAYQBtAGUAYgB1AGYAZgBlAHIAQQB0AHQAYQBjAGgA
bQBlAG4AdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGwAaQBiAEEATgBHAEwARQBcAEcATABFAFMAMQBSAGUAbgBkAGUAcgBlAHIALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBM
AEUAXABHAEwARQBTADEAUwB0AGEAdABlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwASABhAG4AZABsAGUAQQBsAGwA
bwBjAGEAdABvAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABJAG0AYQBnAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABJAG0AYQBn
AGUASQBuAGQAZQB4AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBc
AHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwASQBuAGQAZQB4AFIAYQBuAGcAZQBDAGEAYwBoAGUA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkA
YgBBAE4ARwBMAEUAXABMAG8AZwBnAGkAbgBnAEEAbgBuAG8AdABhAHQAbwByAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABF
AFwATQBlAG0AbwByAHkATwBiAGoAZQBjAHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABNAGUAbQBvAHIAeQBQAHIA
bwBnAHIAYQBtAEMAYQBjAGgAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAE8AYgBzAGUAcgB2AGUAcgAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBH
AEwARQBcAFAAbABhAHQAZgBvAHIAbQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABB
AE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAFAAcgBvAGcAcgBhAG0ALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4A
RwBMAEUAXABQAHIAbwBnAHIAYQBtAEUAeABlAGMAdQB0AGEAYgBsAGUALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABQ
AHIAbwBnAHIAYQBtAEwAaQBuAGsAZQBkAFIAZQBzAG8AdQByAGMAZQBzAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwA
UAByAG8AZwByAGEAbQBQAGkAcABlAGwAaQBuAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABRAHUAZQByAHkALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBB
AE4ARwBMAEUAXABSAGUAbgBkAGUAcgBiAHUAZgBmAGUAcgAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAFIAZQBzAG8A
dQByAGMAZQBNAGEAbgBhAGcAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAUwBhAG0AcABsAGUAcgAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBH
AEwARQBcAFMAZQBtAGEAcABoAG8AcgBlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAUwBoAGEAZABlAHIALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4A
RwBMAEUAXABTAHQAYQB0AGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABTAHQAcgBlAGEAbQAuAGMAcABwACAARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQA
aABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBc
AFMAdQByAGYAYQBjAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABUAGUAeAB0AHUAcgBlAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwA
VABoAHIAZQBhAGQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABUAHIAYQBuAHMAZgBvAHIAbQBGAGUAZQBkAGIAYQBj
AGsALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABs
AGkAYgBBAE4ARwBMAEUAXABVAG4AaQBmAG8AcgBtAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAVgBhAHIAeQBpAG4A
ZwBQAGEAYwBrAGkAbgBnAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAVgBlAHIAdABlAHgAQQByAHIAYQB5AC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBO
AEcATABFAFwAVgBlAHIAdABlAHgAQQB0AHQAcgBpAGIAdQB0AGUALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABXAG8A
cgBrAGUAcgBUAGgAcgBlAGEAZAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAGEAbgBnAGwAZQB0AHkAcABlAHMALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBB
AE4ARwBMAEUAXABlAG4AdAByAHkAXwBwAG8AaQBuAHQAcwBfAGUAbgB1AG0AXwBhAHUAdABvAGcA
ZQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwA
bABpAGIAQQBOAEcATABFAFwAZQBzADMAXwBjAG8AcAB5AF8AYwBvAG4AdgBlAHIAcwBpAG8AbgBf
AHQAYQBiAGwAZQBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABmAG8AcgBtAGEAdABfAG0A
YQBwAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAGYAbwByAG0AYQB0AF8AbQBhAHAAXwBk
AGUAcwBrAHQAbwBwAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBc
AHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAZgBvAHIAbQBhAHQAdQB0AGkAbABzAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcA
TABFAFwAcQB1AGUAcgB5AGMAbwBuAHYAZQByAHMAaQBvAG4AcwAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIA
ZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHEAdQBl
AHIAeQB1AHQAaQBsAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABCAHUAZgBmAGUA
cgBJAG0AcABsAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMA
cgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwAQwBvAG4AdABlAHgAdABJ
AG0AcABsAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBj
AFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABlAHIAZQByAFwARABlAHYAaQBjAGUASQBtAHAA
bAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwA
aQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAEQAaQBzAHAAbABhAHkASQBtAHAAbAAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBi
AEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAEYAbwByAG0AYQB0AF8AdABhAGIAbABlAF8A
YQB1AHQAbwBnAGUAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUA
XABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAFAAcgBvAGcAcgBh
AG0AUABpAHAAZQBsAGkAbgBlAEkAbQBwAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIA
XABRAHUAZQByAHkASQBtAHAAbAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAFMAaABh
AGQAZQByAEkAbQBwAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABTAHUAcgBmAGEA
YwBlAEkAbQBwAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABUAGUAeAB0AHUAcgBl
AEkAbQBwAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwBy
AGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUAbgBkAGUAcgBlAHIAXABkAHIAaQB2AGUAcgBfAHUA
dABpAGwAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUAcgBcAGwAbwBhAGQAXwBmAHUAbgBj
AHQAaQBvAG4AcwBfAHQAYQBiAGwAZQBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAByAGUA
bgBkAGUAcgBlAHIAXAByAGUAbgBkAGUAcgBlAHIAXwB1AHQAaQBsAHMALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2
AGEAbABpAGQAYQB0AGkAbwBuAEUARwBMAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAdgBhAGwAaQBkAGEAdABpAG8A
bgBFAFMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEUAUwAxAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABF
AFwAdgBhAGwAaQBkAGEAdABpAG8AbgBFAFMAMgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0
AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHYAYQBsAGkAZABhAHQA
aQBvAG4ARQBTADMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
cwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEUAUwAzADEALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBB
AE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEUAUwAzADIALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEA
bABpAGQAYQB0AGkAbwBuAEUAUwBFAFgAVAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkA
XABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHYAYQBsAGkAZABhAHQAaQBv
AG4ARwBMADEALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwBy
AGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAxADEALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4A
RwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAxADIALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABp
AGQAYQB0AGkAbwBuAEcATAAxADMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcA
TAAxADQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAxADUALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBM
AEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAyAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAdgBhAGwAaQBkAGEA
dABpAG8AbgBHAEwAMgAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwAMwAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBi
AEEATgBHAEwARQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADMAMQAuAGMAcABwACAARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHYA
YQBsAGkAZABhAHQAaQBvAG4ARwBMADMAMgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkA
XABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHYAYQBsAGkAZABhAHQAaQBv
AG4ARwBMADMAMwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABz
AHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADQALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4A
RwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAA0ADEALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABp
AGQAYQB0AGkAbwBuAEcATAA0ADIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcA
TAA0ADMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMA
XABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAA0ADQALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBM
AEUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAA0ADUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXAB2AGEAbABpAGQA
YQB0AGkAbwBuAEcATAA0ADYALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABPAHYAZQByAGwAYQB5AC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABF
AFwATwB2AGUAcgBsAGEAeQBXAGkAZABnAGUAdABzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwATwB2AGUAcgBsAGEA
eQBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXABsAGkAYgBBAE4ARwBMAEUAXABPAHYAZQByAGwAYQB5AF8AZgBvAG4AdABf
AGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABpAG0AYQBnAGUAXwB1AHQAaQBsAFwAYwBvAHAAeQBpAG0AYQBnAGUALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABpAG0AYQBnAGUA
XwB1AHQAaQBsAFwAaQBtAGEAZwBlAGYAbwByAG0AYQB0AHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABpAG0AYQBnAGUAXwB1AHQAaQBsAFwAbABv
AGEAZABpAG0AYQBnAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABpAG0AYQBnAGUAXwB1AHQAaQBsAFwAbABvAGEAZABpAG0AYQBnAGUAXwBlAHQA
YwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXAB0AGgAaQByAGQA
XwBwAGEAcgB0AHkAXAB6AGwAaQBiAFwAZwBvAG8AZwBsAGUAXABjAG8AbQBwAHIAZQBzAHMAaQBv
AG4AXwB1AHQAaQBsAHMAXwBwAG8AcgB0AGEAYgBsAGUALgBjAGMADQAKACAAIABGAGwAbwBhAHQA
MQA2AFQAbwBGAGwAbwBhAHQAMwAyAC4AYwBwAHAADQAKACAAIABNAGUAbQBvAHIAeQBCAHUAZgBm
AGUAcgAuAGMAcABwAA0ACgAgACAAUABhAGMAawBlAGQARQBHAEwARQBuAHUAbQBzAF8AYQB1AHQA
bwBnAGUAbgAuAGMAcABwAA0ACgAgACAAUABhAGMAawBlAGQARQBuAHUAbQBzAC4AYwBwAHAADQAK
ACAAIABQAGEAYwBrAGUAZABHAEwARQBuAHUAbQBzAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwAA0A
CgAgACAAYQBsAGkAZwBuAGUAZABfAG0AZQBtAG8AcgB5AC4AYwBwAHAADQAKACAAIABhAG4AZABy
AG8AaQBkAF8AdQB0AGkAbAAuAGMAcABwAA0ACgAgACAAYQBuAGcAbABlAHUAdABpAGwAcwAuAGMA
cABwAA0ACgAgACAAZQB2AGUAbgB0AF8AdAByAGEAYwBlAHIALgBjAHAAcAANAAoAIAAgAG0AYQB0
AGgAdQB0AGkAbAAuAGMAcABwAA0ACgAgACAAbQBhAHQAcgBpAHgAXwB1AHQAaQBsAHMALgBjAHAA
cAANAAoAIAAgAHMAdAByAGkAbgBnAF8AdQB0AGkAbABzAC4AYwBwAHAADQAKACAAIABzAGgAYQAx
AC4AYwBjAA0ACgAgACAAUABNAHUAcgBIAGEAcwBoAC4AYwBwAHAADQAKACAAIAB0AGwAcwAuAGMA
cABwAA0ACgAgACAAdQBuAGkAZgBvAHIAbQBfAHQAeQBwAGUAXwBpAG4AZgBvAF8AYQB1AHQAbwBn
AGUAbgAuAGMAcABwAA0ACgAgACAAdQB0AGkAbABpAHQAaQBlAHMALgBjAHAAcAANAAoAIAAgAEQA
aQBhAGcAbgBvAHMAdABpAGMAcwBCAGEAcwBlAC4AYwBwAHAADQAKAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAGEAbgBkAHIAbwBpAGQAXwB1
AHQAaQBsAC4AYwBwAHAAKAAyADEALAAxADYAKQA6ACAAdwBhAHIAbgBpAG4AZwAgAEMANAAyADAA
MAA6ACAAbgBvAG4AcwB0AGEAbgBkAGEAcgBkACAAZQB4AHQAZQBuAHMAaQBvAG4AIAB1AHMAZQBk
ADoAIAB6AGUAcgBvAC0AcwBpAHoAZQBkACAAYQByAHIAYQB5ACAAaQBuACAAcwB0AHIAdQBjAHQA
LwB1AG4AaQBvAG4AIABbAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAQQBOAEcATABFAC4AdgBjAHgAcAByAG8AagBdAA0ACgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXABhAG4AZABy
AG8AaQBkAF8AdQB0AGkAbAAuAGMAcABwACgAMgAxACwAMQA2ACkAOgAgAG0AZQBzAHMAYQBnAGUA
IAA6ACAAVABoAGkAcwAgAG0AZQBtAGIAZQByACAAdwBpAGwAbAAgAGIAZQAgAGkAZwBuAG8AcgBl
AGQAIABiAHkAIABhACAAZABlAGYAYQB1AGwAdABlAGQAIABjAG8AbgBzAHQAcgB1AGMAdABvAHIA
IABvAHIAIABjAG8AcAB5AC8AbQBvAHYAZQAgAGEAcwBzAGkAZwBuAG0AZQBuAHQAIABvAHAAZQBy
AGEAdABvAHIAIABbAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAQQBOAEcATABFAC4AdgBjAHgAcAByAG8AagBdAA0ACgAgACAARABpAHIA
ZQBjAHQAaQB2AGUASABhAG4AZABsAGUAcgBCAGEAcwBlAC4AYwBwAHAADQAKACAAIABEAGkAcgBl
AGMAdABpAHYAZQBQAGEAcgBzAGUAcgAuAGMAcABwAA0ACgAgACAASQBuAHAAdQB0AC4AYwBwAHAA
DQAKACAAIABMAGUAeABlAHIALgBjAHAAcAANAAoAIAAgAE0AYQBjAHIAbwAuAGMAcABwAA0ACgAg
ACAATQBhAGMAcgBvAEUAeABwAGEAbgBkAGUAcgAuAGMAcABwAA0ACgAgACAAUAByAGUAcAByAG8A
YwBlAHMAcwBvAHIALgBjAHAAcAANAAoAIAAgAFQAbwBrAGUAbgAuAGMAcABwAA0ACgAgACAAcABy
AGUAcAByAG8AYwBlAHMAcwBvAHIAXwBsAGUAeABfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAANAAoA
IAAgAHAAcgBlAHAAcgBvAGMAZQBzAHMAbwByAF8AdABhAGIAXwBhAHUAdABvAGcAZQBuAC4AYwBw
AHAADQAKACAAIABPAHUAdABwAHUAdABFAFMAUwBMAC4AYwBwAHAADQAKACAAIABUAHIAYQBuAHMA
bABhAHQAbwByAEUAUwBTAEwALgBjAHAAcAANAAoAIAAgAEIAdQBpAGwAdABJAG4ARgB1AG4AYwB0
AGkAbwBuAEUAbQB1AGwAYQB0AG8AcgBHAEwAUwBMAC4AYwBwAHAADQAKACAAIABCAHUAaQBsAHQA
aQBuAHMAVwBvAHIAawBhAHIAbwB1AG4AZABHAEwAUwBMAC4AYwBwAHAADQAKACAAIABFAHgAdABl
AG4AcwBpAG8AbgBHAEwAUwBMAC4AYwBwAHAADQAKACAAIABPAHUAdABwAHUAdABHAEwAUwBMAC4A
YwBwAHAADQAKACAAIABPAHUAdABwAHUAdABHAEwAUwBMAEIAYQBzAGUALgBjAHAAcAANAAoAIAAg
AFQAcgBhAG4AcwBsAGEAdABvAHIARwBMAFMATAAuAGMAcABwAA0ACgAgACAAVgBlAHIAcwBpAG8A
bgBHAEwAUwBMAC4AYwBwAHAADQAKACAAIABCAHUAaQBsAHQASQBuAEYAdQBuAGMAdABpAG8AbgBF
AG0AdQBsAGEAdABvAHIALgBjAHAAcAANAAoAIAAgAEMAYQBsAGwARABBAEcALgBjAHAAcAANAAoA
IAAgAEMAbwBkAGUARwBlAG4ALgBjAHAAcAANAAoAIAAgAEMAbwBsAGwAZQBjAHQAVgBhAHIAaQBh
AGIAbABlAHMALgBjAHAAcAANAAoAIAAgAEMAbwBuAHMAdABhAG4AdABVAG4AaQBvAG4ALgBjAHAA
cAANAAoAIAAgAEQAZQBjAGwAYQByAGEAdABvAHIALgBjAHAAcAANAAoAIAAgAEQAaQBhAGcAbgBv
AHMAdABpAGMAcwAuAGMAcABwAA0ACgAgACAARABpAHIAZQBjAHQAaQB2AGUASABhAG4AZABsAGUA
cgAuAGMAcABwAA0ACgAgACAARQB4AHQAZQBuAHMAaQBvAG4AQgBlAGgAYQB2AGkAbwByAC4AYwBw
AHAADQAKACAAIABGAGwAYQBnAFMAdABkADEANAAwAFMAdAByAHUAYwB0AHMALgBjAHAAcAANAAoA
IAAgAEYAdQBuAGMAdABpAG8AbgBMAG8AbwBrAHUAcAAuAGMAcABwAA0ACgAgACAASABhAHMAaABO
AGEAbQBlAHMALgBjAHAAcAANAAoAIAAgAEkAbQBtAHUAdABhAGIAbABlAFMAdAByAGkAbgBnAEIA
dQBpAGwAZABlAHIALgBjAHAAcAANAAoAIAAgAEkAbgBmAG8AUwBpAG4AawAuAGMAcABwAA0ACgAg
ACAASQBuAGkAdABpAGEAbABpAHoAZQAuAGMAcABwAA0ACgAgACAASQBuAGkAdABpAGEAbABpAHoA
ZQBEAGwAbAAuAGMAcABwAA0ACgAgACAASQBuAHQAZQByAG0ATgBvAGQAZQAuAGMAcABwAA0ACgAg
ACAASQBzAEEAUwBUAEQAZQBwAHQAaABCAGUAbABvAHcATABpAG0AaQB0AC4AYwBwAHAADQAKACAA
IABPAHAAZQByAGEAdABvAHIALgBjAHAAcAANAAoAIAAgAE8AdQB0AHAAdQB0AFQAcgBlAGUALgBj
AHAAcAANAAoAIAAgAFAAYQByAHMAZQBDAG8AbgB0AGUAeAB0AC4AYwBwAHAADQAKACAAIABRAHUA
YQBsAGkAZgBpAGUAcgBUAHkAcABlAHMALgBjAHAAcAANAAoAIAAgAFMAaABhAGQAZQByAEwAYQBu
AGcALgBjAHAAcAANAAoAIAAgAFMAaABhAGQAZQByAFYAYQByAHMALgBjAHAAcAANAAoAIAAgAFMA
eQBtAGIAbwBsAC4AYwBwAHAADQAKACAAIABTAHkAbQBiAG8AbABUAGEAYgBsAGUALgBjAHAAcAAN
AAoAIAAgAFMAeQBtAGIAbwBsAFUAbgBpAHEAdQBlAEkAZAAuAGMAcABwAA0ACgAgACAAVAB5AHAA
ZQBzAC4AYwBwAHAADQAKACAAIABWAGEAbABpAGQAYQB0AGUAQQBTAFQALgBjAHAAcAANAAoAIAAg
AFYAYQBsAGkAZABhAHQAZQBHAGwAbwBiAGEAbABJAG4AaQB0AGkAYQBsAGkAegBlAHIALgBjAHAA
cAANAAoAIAAgAFYAYQBsAGkAZABhAHQAZQBMAGkAbQBpAHQAYQB0AGkAbwBuAHMALgBjAHAAcAAN
AAoAIAAgAFYAYQBsAGkAZABhAHQAZQBNAGEAeABQAGEAcgBhAG0AZQB0AGUAcgBzAC4AYwBwAHAA
DQAKACAAIABWAGEAbABpAGQAYQB0AGUATwB1AHQAcAB1AHQAcwAuAGMAcABwAA0ACgAgACAAVgBh
AGwAaQBkAGEAdABlAFMAdwBpAHQAYwBoAC4AYwBwAHAADQAKACAAIABWAGEAbABpAGQAYQB0AGUA
VgBhAHIAeQBpAG4AZwBMAG8AYwBhAHQAaQBvAG4AcwAuAGMAcABwAA0ACgAgACAAVgBhAHIAaQBh
AGIAbABlAFAAYQBjAGsAZQByAC4AYwBwAHAADQAKACAAIABiAGwAbwBjAGsAbABhAHkAbwB1AHQA
LgBjAHAAcAANAAoAIAAgAGcAbABzAGwAYQBuAGcAXwBsAGUAeABfAGEAdQB0AG8AZwBlAG4ALgBj
AHAAcAANAAoAIAAgAGcAbABzAGwAYQBuAGcAXwB0AGEAYgBfAGEAdQB0AG8AZwBlAG4ALgBjAHAA
cAANAAoAIAAgAEEAZABkAEEAbgBkAFQAcgB1AGUAVABvAEwAbwBvAHAAQwBvAG4AZABpAHQAaQBv
AG4ALgBjAHAAcAANAAoAIAAgAEIAcgBlAGEAawBWAGEAcgBpAGEAYgBsAGUAQQBsAGkAYQBzAGkA
bgBnAEkAbgBJAG4AbgBlAHIATABvAG8AcABzAC4AYwBwAHAADQAKACAAIABDAGwAYQBtAHAARgBy
AGEAZwBEAGUAcAB0AGgALgBjAHAAcAANAAoAIAAgAEMAbABhAG0AcABQAG8AaQBuAHQAUwBpAHoA
ZQAuAGMAcABwAA0ACgAgACAARABlAGMAbABhAHIAZQBBAG4AZABJAG4AaQB0AEIAdQBpAGwAdABp
AG4AcwBGAG8AcgBJAG4AcwB0AGEAbgBjAGUAZABNAHUAbAB0AGkAdgBpAGUAdwAuAGMAcABwAA0A
CgAgACAARABlAGYAZQByAEcAbABvAGIAYQBsAEkAbgBpAHQAaQBhAGwAaQB6AGUAcgBzAC4AYwBw
AHAADQAKACAAIABFAGEAcgBsAHkARgByAGEAZwBtAGUAbgB0AFQAZQBzAHQAcwBPAHAAdABpAG0A
aQB6AGEAdABpAG8AbgAuAGMAcABwAA0ACgAgACAARQBtAHUAbABhAHQAZQBHAEwARgByAGEAZwBD
AG8AbABvAHIAQgByAG8AYQBkAGMAYQBzAHQALgBjAHAAcAANAAoAIAAgAEUAbQB1AGwAYQB0AGUA
TQB1AGwAdABpAEQAcgBhAHcAUwBoAGEAZABlAHIAQgB1AGkAbAB0AGkAbgBzAC4AYwBwAHAADQAK
ACAAIABFAG0AdQBsAGEAdABlAFAAcgBlAGMAaQBzAGkAbwBuAC4AYwBwAHAADQAKACAAIABFAHgA
cABhAG4AZABJAG4AdABlAGcAZQByAFAAbwB3AEUAeABwAHIAZQBzAHMAaQBvAG4AcwAuAGMAcABw
AA0ACgAgACAARgBvAGwAZABFAHgAcAByAGUAcwBzAGkAbwBuAHMALgBjAHAAcAANAAoAIAAgAEkA
bgBpAHQAaQBhAGwAaQB6AGUAVgBhAHIAaQBhAGIAbABlAHMALgBjAHAAcAANAAoAIAAgAE4AYQBt
AGUARQBtAGIAZQBkAGQAZQBkAFUAbgBpAGYAbwByAG0AUwB0AHIAdQBjAHQAcwAuAGMAcABwAA0A
CgAgACAAUAByAHUAbgBlAEUAbQBwAHQAeQBDAGEAcwBlAHMALgBjAHAAcAANAAoAIAAgAFAAcgB1
AG4AZQBOAG8ATwBwAHMALgBjAHAAcAANAAoAIAAgAFIAZQBjAG8AcgBkAEMAbwBuAHMAdABhAG4A
dABQAHIAZQBjAGkAcwBpAG8AbgAuAGMAcABwAA0ACgAgACAAUgBlAGcAZQBuAGUAcgBhAHQAZQBT
AHQAcgB1AGMAdABOAGEAbQBlAHMALgBjAHAAcAANAAoAIAAgAFIAZQBtAG8AdgBlAEEAcgByAGEA
eQBMAGUAbgBnAHQAaABNAGUAdABoAG8AZAAuAGMAcABwAA0ACgAgACAAUgBlAG0AbwB2AGUAQQB0
AG8AbQBpAGMAQwBvAHUAbgB0AGUAcgBCAHUAaQBsAHQAaQBuAHMALgBjAHAAcAANAAoAIAAgAFIA
ZQBtAG8AdgBlAEQAeQBuAGEAbQBpAGMASQBuAGQAZQB4AGkAbgBnAC4AYwBwAHAADQAKACAAIABS
AGUAbQBvAHYAZQBJAG4AYQBjAHQAaQB2AGUASQBuAHQAZQByAGYAYQBjAGUAVgBhAHIAaQBhAGIA
bABlAHMALgBjAHAAcAANAAoAIAAgAFIAZQBtAG8AdgBlAEkAbgB2AGEAcgBpAGEAbgB0AEQAZQBj
AGwAYQByAGEAdABpAG8AbgAuAGMAcABwAA0ACgAgACAAUgBlAG0AbwB2AGUAUABvAHcALgBjAHAA
cAANAAoAIAAgAFIAZQBtAG8AdgBlAFUAbgByAGUAZgBlAHIAZQBuAGMAZQBkAFYAYQByAGkAYQBi
AGwAZQBzAC4AYwBwAHAADQAKACAAIABSAGUAdwByAGkAdABlAEEAdABvAG0AaQBjAEMAbwB1AG4A
dABlAHIAcwAuAGMAcABwAA0ACgAgACAAUgBlAHcAcgBpAHQAZQBBAHQAbwBtAGkAYwBGAHUAbgBj
AHQAaQBvAG4ARQB4AHAAcgBlAHMAcwBpAG8AbgBzAC4AYwBwAHAADQAKACAAIABSAGUAdwByAGkA
dABlAEMAdQBiAGUATQBhAHAAUwBhAG0AcABsAGUAcgBzAEEAcwAyAEQAQQByAHIAYQB5AC4AYwBw
AHAADQAKACAAIABSAGUAdwByAGkAdABlAEQAZgBkAHkALgBjAHAAcAANAAoAIAAgAFIAZQB3AHIA
aQB0AGUARABvAFcAaABpAGwAZQAuAGMAcABwAA0ACgAgACAAUgBlAHcAcgBpAHQAZQBFAHgAcABy
AGUAcwBzAGkAbwBuAHMAVwBpAHQAaABTAGgAYQBkAGUAcgBTAHQAbwByAGEAZwBlAEIAbABvAGMA
awAuAGMAcABwAA0ACgAgACAAUgBlAHcAcgBpAHQAZQBSAGUAcABlAGEAdABlAGQAQQBzAHMAaQBn
AG4AVABvAFMAdwBpAHoAegBsAGUAZAAuAGMAcABwAA0ACgAgACAAUgBlAHcAcgBpAHQAZQBSAG8A
dwBNAGEAagBvAHIATQBhAHQAcgBpAGMAZQBzAC4AYwBwAHAADQAKACAAIABSAGUAdwByAGkAdABl
AFMAdAByAHUAYwB0AFMAYQBtAHAAbABlAHIAcwAuAGMAcABwAA0ACgAgACAAUgBlAHcAcgBpAHQA
ZQBTAHQAcgB1AGMAdABTAGEAbQBwAGwAZQByAHMATwBsAGQALgBjAHAAcAANAAoAIAAgAFIAZQB3
AHIAaQB0AGUAVABlAHgAZQBsAEYAZQB0AGMAaABPAGYAZgBzAGUAdAAuAGMAcABwAA0ACgAgACAA
UgBlAHcAcgBpAHQAZQBVAG4AYQByAHkATQBpAG4AdQBzAE8AcABlAHIAYQB0AG8AcgBGAGwAbwBh
AHQALgBjAHAAcAANAAoAIAAgAFIAZQB3AHIAaQB0AGUAVQBuAGEAcgB5AE0AaQBuAHUAcwBPAHAA
ZQByAGEAdABvAHIASQBuAHQALgBjAHAAcAANAAoAIAAgAFMAYwBhAGwAYQByAGkAegBlAFYAZQBj
AEEAbgBkAE0AYQB0AEMAbwBuAHMAdAByAHUAYwB0AG8AcgBBAHIAZwBzAC4AYwBwAHAADQAKACAA
IABTAGUAcABhAHIAYQB0AGUARABlAGMAbABhAHIAYQB0AGkAbwBuAHMALgBjAHAAcAANAAoAIAAg
AFMAaQBtAHAAbABpAGYAeQBMAG8AbwBwAEMAbwBuAGQAaQB0AGkAbwBuAHMALgBjAHAAcAANAAoA
IAAgAFMAcABsAGkAdABTAGUAcQB1AGUAbgBjAGUATwBwAGUAcgBhAHQAbwByAC4AYwBwAHAADQAK
ACAAIABVAG4AZgBvAGwAZABTAGgAbwByAHQAQwBpAHIAYwB1AGkAdABBAFMAVAAuAGMAcABwAA0A
CgAgACAAVQBzAGUASQBuAHQAZQByAGYAYQBjAGUAQgBsAG8AYwBrAEYAaQBlAGwAZABzAC4AYwBw
AHAADQAKACAAIABWAGUAYwB0AG8AcgBpAHoAZQBWAGUAYwB0AG8AcgBTAGMAYQBsAGEAcgBBAHIA
aQB0AGgAbQBlAHQAaQBjAC4AYwBwAHAADQAKACAAIABGAGkAbgBkAEYAdQBuAGMAdABpAG8AbgAu
AGMAcABwAA0ACgAgACAARgBpAG4AZABNAGEAaQBuAC4AYwBwAHAADQAKACAAIABGAGkAbgBkAFMA
eQBtAGIAbwBsAE4AbwBkAGUALgBjAHAAcAANAAoAIAAgAEkAbgB0AGUAcgBtAE4AbwBkAGUAUABh
AHQAdABlAHIAbgBNAGEAdABjAGgAZQByAC4AYwBwAHAADQAKACAAIABJAG4AdABlAHIAbQBOAG8A
ZABlAF8AdQB0AGkAbAAuAGMAcABwAA0ACgAgACAASQBuAHQAZQByAG0AVAByAGEAdgBlAHIAcwBl
AC4AYwBwAHAADQAKACAAIABSAGUAcABsAGEAYwBlAEMAbABpAHAARABpAHMAdABhAG4AYwBlAFYA
YQByAGkAYQBiAGwAZQAuAGMAcABwAA0ACgAgACAAUgBlAHAAbABhAGMAZQBTAGgAYQBkAG8AdwBp
AG4AZwBWAGEAcgBpAGEAYgBsAGUAcwAuAGMAcABwAA0ACgAgACAAUgBlAHAAbABhAGMAZQBWAGEA
cgBpAGEAYgBsAGUALgBjAHAAcAANAAoAIAAgAFIAdQBuAEEAdABUAGgAZQBFAG4AZABPAGYAUwBo
AGEAZABlAHIALgBjAHAAcAANAAoAIAAgAHUAdABpAGwALgBjAHAAcAANAAoAIAAgAEEAcgByAGEA
eQBCAG8AdQBuAGQAcwBDAGwAYQBtAHAAZQByAC4AYwBwAHAADQAKACAAIABJAG0AbQB1AHQAYQBi
AGwAZQBTAHQAcgBpAG4AZwBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAANAAoAIAAgAFMAeQBtAGIA
bwBsAFQAYQBiAGwAZQBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAANAAoAIAAgAHMAeQBzAHQAZQBt
AF8AdQB0AGkAbABzAC4AYwBwAHAADQAKACAAIABzAHkAcwB0AGUAbQBfAHUAdABpAGwAcwBfAHcA
aQBuAC4AYwBwAHAADQAKACAAIABzAHkAcwB0AGUAbQBfAHUAdABpAGwAcwBfAHcAaQBuADMAMgAu
AGMAcABwAA0ACgAgACAARgByAGEAbQBlAEMAYQBwAHQAdQByAGUAXwBtAG8AYwBrAC4AYwBwAHAA
DQAKACAAIABBAFMAVABNAGUAdABhAGQAYQB0AGEASABMAFMATAAuAGMAcABwAA0ACgAgACAAQQB0
AG8AbQBpAGMAQwBvAHUAbgB0AGUAcgBGAHUAbgBjAHQAaQBvAG4ASABMAFMATAAuAGMAcABwAA0A
CgAgACAAQgB1AGkAbAB0AEkAbgBGAHUAbgBjAHQAaQBvAG4ARQBtAHUAbABhAHQAbwByAEgATABT
AEwALgBjAHAAcAANAAoAIAAgAEkAbQBhAGcAZQBGAHUAbgBjAHQAaQBvAG4ASABMAFMATAAuAGMA
cABwAA0ACgAgACAATwB1AHQAcAB1AHQASABMAFMATAAuAGMAcABwAA0ACgAgACAAUgBlAHMAbwB1
AHIAYwBlAHMASABMAFMATAAuAGMAcABwAA0ACgAgACAAUwBoAGEAZABlAHIAUwB0AG8AcgBhAGcA
ZQBCAGwAbwBjAGsARgB1AG4AYwB0AGkAbwBuAEgATABTAEwALgBjAHAAcAANAAoAIAAgAFMAaABh
AGQAZQByAFMAdABvAHIAYQBnAGUAQgBsAG8AYwBrAE8AdQB0AHAAdQB0AEgATABTAEwALgBjAHAA
cAANAAoAIAAgAFMAdAByAHUAYwB0AHUAcgBlAEgATABTAEwALgBjAHAAcAANAAoAIAAgAFQAZQB4
AHQAdQByAGUARgB1AG4AYwB0AGkAbwBuAEgATABTAEwALgBjAHAAcAANAAoAIAAgAFQAcgBhAG4A
cwBsAGEAdABvAHIASABMAFMATAAuAGMAcABwAA0ACgAgACAAVQB0AGkAbABzAEgATABTAEwALgBj
AHAAcAANAAoAIAAgAGIAbABvAGMAawBsAGEAeQBvAHUAdABIAEwAUwBMAC4AYwBwAHAADQAKACAA
IABlAG0AdQBsAGEAdABlAGQAXwBiAHUAaQBsAHQAaQBuAF8AZgB1AG4AYwB0AGkAbwBuAHMAXwBo
AGwAcwBsAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwAA0ACgAgACAAQQBkAGQARABlAGYAYQB1AGwA
dABSAGUAdAB1AHIAbgBTAHQAYQB0AGUAbQBlAG4AdABzAC4AYwBwAHAADQAKACAAIABBAHIAcgBh
AHkAUgBlAHQAdQByAG4AVgBhAGwAdQBlAFQAbwBPAHUAdABQAGEAcgBhAG0AZQB0AGUAcgAuAGMA
cABwAA0ACgAgACAAUgBlAG0AbwB2AGUAUwB3AGkAdABjAGgARgBhAGwAbABUAGgAcgBvAHUAZwBo
AC4AYwBwAHAADQAKACAAIABSAGUAdwByAGkAdABlAEUAbABzAGUAQgBsAG8AYwBrAHMALgBjAHAA
cAANAAoAIAAgAFMAZQBwAGEAcgBhAHQAZQBBAHIAcgBhAHkAQwBvAG4AcwB0AHIAdQBjAHQAbwBy
AFMAdABhAHQAZQBtAGUAbgB0AHMALgBjAHAAcAANAAoAIAAgAFMAZQBwAGEAcgBhAHQAZQBBAHIA
cgBhAHkASQBuAGkAdABpAGEAbABpAHoAYQB0AGkAbwBuAC4AYwBwAHAADQAKACAAIABTAGUAcABh
AHIAYQB0AGUARQB4AHAAcgBlAHMAcwBpAG8AbgBzAFIAZQB0AHUAcgBuAGkAbgBnAEEAcgByAGEA
eQBzAC4AYwBwAHAADQAKACAAIABVAG4AZgBvAGwAZABTAGgAbwByAHQAQwBpAHIAYwB1AGkAdABU
AG8ASQBmAC4AYwBwAHAADQAKACAAIABXAHIAYQBwAFMAdwBpAHQAYwBoAFMAdABhAHQAZQBtAGUA
bgB0AHMASQBuAEIAbABvAGMAawBzAC4AYwBwAHAADQAKACAAIABCAHUAZgBmAGUAcgBEADMARAAu
AGMAcABwAA0ACgAgACAAQwBvAG0AcABpAGwAZQByAEQAMwBEAC4AYwBwAHAADQAKACAAIABEAGUA
dgBpAGMAZQBEADMARAAuAGMAcABwAA0ACgAgACAARABpAHMAcABsAGEAeQBEADMARAAuAGMAcABw
AA0ACgAgACAARAB5AG4AYQBtAGkAYwBIAEwAUwBMAC4AYwBwAHAADQAKACAAIABEAHkAbgBhAG0A
aQBjAEkAbQBhAGcAZQAyAEQASABMAFMATAAuAGMAcABwAA0ACgAgACAARQBHAEwASQBtAGEAZwBl
AEQAMwBEAC4AYwBwAHAADQAKACAAIABGAHIAYQBtAGUAYgB1AGYAZgBlAHIARAAzAEQALgBjAHAA
cAANAAoAIAAgAEgATABTAEwAQwBvAG0AcABpAGwAZQByAC4AYwBwAHAADQAKACAAIABJAG0AYQBn
AGUARAAzAEQALgBjAHAAcAANAAoAIAAgAEkAbgBkAGUAeABCAHUAZgBmAGUAcgAuAGMAcABwAA0A
CgAgACAASQBuAGQAZQB4AEQAYQB0AGEATQBhAG4AYQBnAGUAcgAuAGMAcABwAA0ACgAgACAATgBh
AHQAaQB2AGUAVwBpAG4AZABvAHcARAAzAEQALgBjAHAAcAANAAoAIAAgAFAAcgBvAGcAcgBhAG0A
RAAzAEQALgBjAHAAcAANAAoAIAAgAFIAZQBuAGQAZQByAFQAYQByAGcAZQB0AEQAMwBEAC4AYwBw
AHAADQAKACAAIABSAGUAbgBkAGUAcgBiAHUAZgBmAGUAcgBEADMARAAuAGMAcABwAA0ACgAgACAA
UgBlAG4AZABlAHIAZQByAEQAMwBEAC4AYwBwAHAADQAKACAAIABTAGgAYQBkAGUAcgBEADMARAAu
AGMAcABwAA0ACgAgACAAUwBoAGEAZABlAHIARQB4AGUAYwB1AHQAYQBiAGwAZQBEADMARAAuAGMA
cABwAA0ACgAgACAAUwB1AHIAZgBhAGMAZQBEADMARAAuAGMAcABwAA0ACgAgACAAUwB3AGEAcABD
AGgAYQBpAG4ARAAzAEQALgBjAHAAcAANAAoAIAAgAFQAZQB4AHQAdQByAGUARAAzAEQALgBjAHAA
cAANAAoAIAAgAFYAZQByAHQAZQB4AEIAdQBmAGYAZQByAC4AYwBwAHAADQAKACAAIABWAGUAcgB0
AGUAeABEAGEAdABhAE0AYQBuAGEAZwBlAHIALgBjAHAAcAANAAoAIAAgAEIAbABpAHQAMQAxAC4A
YwBwAHAADQAKACAAIABCAHUAZgBmAGUAcgAxADEALgBjAHAAcAANAAoAIAAgAEMAbABlAGEAcgAx
ADEALgBjAHAAcAANAAoAIAAgAEMAbwBuAHQAZQB4AHQAMQAxAC4AYwBwAHAADQAKACAAIABEAGUA
YgB1AGcAQQBuAG4AbwB0AGEAdABvAHIAMQAxAC4AYwBwAHAADQAKACAAIABFAHgAdABlAHIAbgBh
AGwASQBtAGEAZwBlAFMAaQBiAGwAaQBuAGcASQBtAHAAbAAxADEALgBjAHAAcAANAAoAIAAgAEYA
ZQBuAGMAZQAxADEALgBjAHAAcAANAAoAIAAgAEYAcgBhAG0AZQBiAHUAZgBmAGUAcgAxADEALgBj
AHAAcAANAAoAIAAgAEkAbQBhAGcAZQAxADEALgBjAHAAcAANAAoAIAAgAEkAbgBkAGUAeABCAHUA
ZgBmAGUAcgAxADEALgBjAHAAcAANAAoAIAAgAEkAbgBwAHUAdABMAGEAeQBvAHUAdABDAGEAYwBo
AGUALgBjAHAAcAANAAoAIAAgAE0AYQBwAHAAZQBkAFMAdQBiAHIAZQBzAG8AdQByAGMAZQBWAGUA
cgBpAGYAaQBlAHIAMQAxAC4AYwBwAHAADQAKACAAIABQAGkAeABlAGwAVAByAGEAbgBzAGYAZQBy
ADEAMQAuAGMAcABwAA0ACgAgACAAUAByAG8AZwByAGEAbQAxADEALgBjAHAAcAANAAoAIAAgAFAA
cgBvAGcAcgBhAG0AUABpAHAAZQBsAGkAbgBlADEAMQAuAGMAcABwAA0ACgAgACAAUQB1AGUAcgB5
ADEAMQAuAGMAcABwAA0ACgAgACAAUgBlAG4AZABlAHIAUwB0AGEAdABlAEMAYQBjAGgAZQAuAGMA
cABwAA0ACgAgACAAUgBlAG4AZABlAHIAVABhAHIAZwBlAHQAMQAxAC4AYwBwAHAADQAKACAAIABS
AGUAbgBkAGUAcgBlAHIAMQAxAC4AYwBwAHAADQAKACAAIABSAGUAcwBvAHUAcgBjAGUATQBhAG4A
YQBnAGUAcgAxADEALgBjAHAAcAANAAoAIAAgAFMAaABhAGQAZQByAEUAeABlAGMAdQB0AGEAYgBs
AGUAMQAxAC4AYwBwAHAADQAKACAAIABTAHQAYQB0AGUATQBhAG4AYQBnAGUAcgAxADEALgBjAHAA
cAANAAoAIAAgAFMAdAByAGUAYQBtAFAAcgBvAGQAdQBjAGUAcgBEADMARABUAGUAeAB0AHUAcgBl
AC4AYwBwAHAADQAKACAAIABTAHcAYQBwAEMAaABhAGkAbgAxADEALgBjAHAAcAANAAoAIAAgAFQA
ZQB4AHQAdQByAGUAUwB0AG8AcgBhAGcAZQAxADEALgBjAHAAcAANAAoAIAAgAFQAcgBhAG4AcwBm
AG8AcgBtAEYAZQBlAGQAYgBhAGMAawAxADEALgBjAHAAcAANAAoAIAAgAFQAcgBpAG0AMQAxAC4A
YwBwAHAADQAKACAAIABWAGUAcgB0AGUAeABBAHIAcgBhAHkAMQAxAC4AYwBwAHAADQAKACAAIABW
AGUAcgB0AGUAeABCAHUAZgBmAGUAcgAxADEALgBjAHAAcAANAAoAIAAgAGYAbwByAG0AYQB0AHUA
dABpAGwAcwAxADEALgBjAHAAcAANAAoAIAAgAHIAZQBuAGQAZQByAGUAcgAxADEAXwB1AHQAaQBs
AHMALgBjAHAAcAANAAoAIAAgAHQAZQB4AHQAdQByAGUAXwBmAG8AcgBtAGEAdABfAHQAYQBiAGwA
ZQAuAGMAcABwAA0ACgAgACAAdABlAHgAdAB1AHIAZQBfAGYAbwByAG0AYQB0AF8AdABhAGIAbABl
AF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwAA0ACgAgACAAQwBvAG0AcABvAHMAaQB0AG8AcgBOAGEA
dABpAHYAZQBXAGkAbgBkAG8AdwAxADEALgBjAHAAcAANAAoAIAAgAE4AYQB0AGkAdgBlAFcAaQBu
AGQAbwB3ADEAMQBXAGkAbgAzADIALgBjAHAAcAANAAoAIAAgAGQAeABnAGkAXwBmAG8AcgBtAGEA
dABfAG0AYQBwAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwAA0ACgAgACAAZAB4AGcAaQBfAHMAdQBw
AHAAbwByAHQAXwB0AGEAYgBsAGUAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAADQAKACAAIABTAHkA
cwB0AGUAbQBJAG4AZgBvAF8AdwBpAG4ALgBjAHAAcAANAAoAIAAgAEIAbABpAHQAOQAuAGMAcABw
AA0ACgAgACAAQgB1AGYAZgBlAHIAOQAuAGMAcABwAA0ACgAgACAAQwBvAG4AdABlAHgAdAA5AC4A
YwBwAHAADQAKACAAIABEAGUAYgB1AGcAQQBuAG4AbwB0AGEAdABvAHIAOQAuAGMAcABwAA0ACgAg
ACAARgBlAG4AYwBlADkALgBjAHAAcAANAAoAIAAgAEYAcgBhAG0AZQBiAHUAZgBmAGUAcgA5AC4A
YwBwAHAADQAKACAAIABJAG0AYQBnAGUAOQAuAGMAcABwAA0ACgAgACAASQBuAGQAZQB4AEIAdQBm
AGYAZQByADkALgBjAHAAcAANAAoAIAAgAE4AYQB0AGkAdgBlAFcAaQBuAGQAbwB3ADkALgBjAHAA
cAANAAoAIAAgAFEAdQBlAHIAeQA5AC4AYwBwAHAADQAKACAAIABSAGUAbgBkAGUAcgBUAGEAcgBn
AGUAdAA5AC4AYwBwAHAADQAKACAAIABSAGUAbgBkAGUAcgBlAHIAOQAuAGMAcABwAA0ACgAgACAA
UwBoAGEAZABlAHIARQB4AGUAYwB1AHQAYQBiAGwAZQA5AC4AYwBwAHAADQAKACAAIABTAHQAYQB0
AGUATQBhAG4AYQBnAGUAcgA5AC4AYwBwAHAADQAKACAAIABTAHcAYQBwAEMAaABhAGkAbgA5AC4A
YwBwAHAADQAKACAAIABUAGUAeAB0AHUAcgBlAFMAdABvAHIAYQBnAGUAOQAuAGMAcABwAA0ACgAg
ACAAVgBlAHIAdABlAHgAQgB1AGYAZgBlAHIAOQAuAGMAcABwAA0ACgAgACAAVgBlAHIAdABlAHgA
RABlAGMAbABhAHIAYQB0AGkAbwBuAEMAYQBjAGgAZQAuAGMAcABwAA0ACgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIAQQBOAEcATABFAFwAcgBlAG4AZABl
AHIAZQByAFwAZAAzAGQAXABkADMAZAAxADEAXABSAGUAbgBkAGUAcgBlAHIAMQAxAC4AYwBwAHAA
KAA0ADEAMAAxACwANQAwACkAOgAgAHcAYQByAG4AaQBuAGcAIABDADQAMgA0ADUAOgAgACcAcgBl
AHQAdQByAG4AJwA6ACAAYwBvAG4AdgBlAHIAcwBpAG8AbgAgAGYAcgBvAG0AIAAnAEQAMwBEADEA
MQBfAFMAVABBAE4ARABBAFIARABfAE0AVQBMAFQASQBTAEEATQBQAEwARQBfAFEAVQBBAEwASQBU
AFkAXwBMAEUAVgBFAEwAUwAnACAAdABvACAAJwBVAEkATgBUACcALAAgAHMAaQBnAG4AZQBkAC8A
dQBuAHMAaQBnAG4AZQBkACAAbQBpAHMAbQBhAHQAYwBoACAAWwBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAEEATgBHAEwARQAuAHYAYwB4
AHAAcgBvAGoAXQANAAoAIAAgAGYAbwByAG0AYQB0AHUAdABpAGwAcwA5AC4AYwBwAHAADQAKACAA
IAByAGUAbgBkAGUAcgBlAHIAOQBfAHUAdABpAGwAcwAuAGMAcABwAA0ACgAgACAAQQB0AHQAcgBp
AGIAdQB0AGUATQBhAHAALgBjAHAAcAANAAoAIAAgAEIAbABvAGIAQwBhAGMAaABlAC4AYwBwAHAA
DQAKACAAIABCAHUAZgBmAGUAcgAuAGMAcABwAA0ACgAgACAAQwBhAHAAcwAuAGMAcABwAA0ACgAg
ACAAQwBvAG4AZgBpAGcALgBjAHAAcAANAAoAIAAgAEMAbwBuAHQAZQB4AHQALgBjAHAAcAANAAoA
IAAgAEMAbwBuAHQAZQB4AHQAXwBnAGwALgBjAHAAcAANAAoAIAAgAEMAbwBuAHQAZQB4AHQAXwBn
AGwAZQBzAF8AMQBfADAALgBjAHAAcAANAAoAIAAgAEQAZQB2AGkAYwBlAC4AYwBwAHAADQAKACAA
IABEAGkAcwBwAGwAYQB5AC4AYwBwAHAADQAKACAAIABFAEcATABTAHkAbgBjAC4AYwBwAHAADQAK
ACAAIABFAHIAcgBvAHIALgBjAHAAcAANAAoAIAAgAEYAZQBuAGMAZQAuAGMAcABwAA0ACgAgACAA
RgByAGEAbQBlAGIAdQBmAGYAZQByAC4AYwBwAHAADQAKACAAIABGAHIAYQBtAGUAYgB1AGYAZgBl
AHIAQQB0AHQAYQBjAGgAbQBlAG4AdAAuAGMAcABwAA0ACgAgACAARwBMAEUAUwAxAFIAZQBuAGQA
ZQByAGUAcgAuAGMAcABwAA0ACgAgACAARwBMAEUAUwAxAFMAdABhAHQAZQAuAGMAcABwAA0ACgAg
ACAASABhAG4AZABsAGUAQQBsAGwAbwBjAGEAdABvAHIALgBjAHAAcAANAAoAIAAgAEkAbQBhAGcA
ZQAuAGMAcABwAA0ACgAgACAASQBtAGEAZwBlAEkAbgBkAGUAeAAuAGMAcABwAA0ACgAgACAASQBu
AGQAZQB4AFIAYQBuAGcAZQBDAGEAYwBoAGUALgBjAHAAcAANAAoAIAAgAEwAbwBnAGcAaQBuAGcA
QQBuAG4AbwB0AGEAdABvAHIALgBjAHAAcAANAAoAIAAgAE0AZQBtAG8AcgB5AE8AYgBqAGUAYwB0
AC4AYwBwAHAADQAKACAAIABNAGUAbQBvAHIAeQBQAHIAbwBnAHIAYQBtAEMAYQBjAGgAZQAuAGMA
cABwAA0ACgAgACAATwBiAHMAZQByAHYAZQByAC4AYwBwAHAADQAKACAAIABQAGwAYQB0AGYAbwBy
AG0ALgBjAHAAcAANAAoAIAAgAFAAcgBvAGcAcgBhAG0ALgBjAHAAcAANAAoAIAAgAFAAcgBvAGcA
cgBhAG0ARQB4AGUAYwB1AHQAYQBiAGwAZQAuAGMAcABwAA0ACgAgACAAUAByAG8AZwByAGEAbQBM
AGkAbgBrAGUAZABSAGUAcwBvAHUAcgBjAGUAcwAuAGMAcABwAA0ACgAgACAAUAByAG8AZwByAGEA
bQBQAGkAcABlAGwAaQBuAGUALgBjAHAAcAANAAoAIAAgAFEAdQBlAHIAeQAuAGMAcABwAA0ACgAg
ACAAUgBlAG4AZABlAHIAYgB1AGYAZgBlAHIALgBjAHAAcAANAAoAIAAgAFIAZQBzAG8AdQByAGMA
ZQBNAGEAbgBhAGcAZQByAC4AYwBwAHAADQAKACAAIABTAGEAbQBwAGwAZQByAC4AYwBwAHAADQAK
ACAAIABTAGUAbQBhAHAAaABvAHIAZQAuAGMAcABwAA0ACgAgACAAUwBoAGEAZABlAHIALgBjAHAA
cAANAAoAIAAgAFMAdABhAHQAZQAuAGMAcABwAA0ACgAgACAAUwB0AHIAZQBhAG0ALgBjAHAAcAAN
AAoAIAAgAFMAdQByAGYAYQBjAGUALgBjAHAAcAANAAoAIAAgAFQAZQB4AHQAdQByAGUALgBjAHAA
cAANAAoAIAAgAFQAaAByAGUAYQBkAC4AYwBwAHAADQAKACAAIABUAHIAYQBuAHMAZgBvAHIAbQBG
AGUAZQBkAGIAYQBjAGsALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAbwByAG0ALgBjAHAAcAANAAoA
IAAgAFYAYQByAHkAaQBuAGcAUABhAGMAawBpAG4AZwAuAGMAcABwAA0ACgAgACAAVgBlAHIAdABl
AHgAQQByAHIAYQB5AC4AYwBwAHAADQAKACAAIABWAGUAcgB0AGUAeABBAHQAdAByAGkAYgB1AHQA
ZQAuAGMAcABwAA0ACgAgACAAVwBvAHIAawBlAHIAVABoAHIAZQBhAGQALgBjAHAAcAANAAoAIAAg
AGEAbgBnAGwAZQB0AHkAcABlAHMALgBjAHAAcAANAAoAIAAgAGUAbgB0AHIAeQBfAHAAbwBpAG4A
dABzAF8AZQBuAHUAbQBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAANAAoAIAAgAGUAcwAzAF8AYwBv
AHAAeQBfAGMAbwBuAHYAZQByAHMAaQBvAG4AXwB0AGEAYgBsAGUAXwBhAHUAdABvAGcAZQBuAC4A
YwBwAHAADQAKACAAIABmAG8AcgBtAGEAdABfAG0AYQBwAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABw
AA0ACgAgACAAZgBvAHIAbQBhAHQAXwBtAGEAcABfAGQAZQBzAGsAdABvAHAALgBjAHAAcAANAAoA
IAAgAGYAbwByAG0AYQB0AHUAdABpAGwAcwAuAGMAcABwAA0ACgAgACAAcQB1AGUAcgB5AGMAbwBu
AHYAZQByAHMAaQBvAG4AcwAuAGMAcABwAA0ACgAgACAAcQB1AGUAcgB5AHUAdABpAGwAcwAuAGMA
cABwAA0ACgAgACAAQgB1AGYAZgBlAHIASQBtAHAAbAAuAGMAcABwAA0ACgAgACAAQwBvAG4AdABl
AHgAdABJAG0AcABsAC4AYwBwAHAADQAKACAAIABEAGUAdgBpAGMAZQBJAG0AcABsAC4AYwBwAHAA
DQAKACAAIABEAGkAcwBwAGwAYQB5AEkAbQBwAGwALgBjAHAAcAANAAoAIAAgAEYAbwByAG0AYQB0
AF8AdABhAGIAbABlAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwAA0ACgAgACAAUAByAG8AZwByAGEA
bQBQAGkAcABlAGwAaQBuAGUASQBtAHAAbAAuAGMAcABwAA0ACgAgACAAUQB1AGUAcgB5AEkAbQBw
AGwALgBjAHAAcAANAAoAIAAgAFMAaABhAGQAZQByAEkAbQBwAGwALgBjAHAAcAANAAoAIAAgAFMA
dQByAGYAYQBjAGUASQBtAHAAbAAuAGMAcABwAA0ACgAgACAAVABlAHgAdAB1AHIAZQBJAG0AcABs
AC4AYwBwAHAADQAKACAAIABkAHIAaQB2AGUAcgBfAHUAdABpAGwAcwAuAGMAcABwAA0ACgAgACAA
bABvAGEAZABfAGYAdQBuAGMAdABpAG8AbgBzAF8AdABhAGIAbABlAF8AYQB1AHQAbwBnAGUAbgAu
AGMAcABwAA0ACgAgACAAcgBlAG4AZABlAHIAZQByAF8AdQB0AGkAbABzAC4AYwBwAHAADQAKACAA
IAB2AGEAbABpAGQAYQB0AGkAbwBuAEUARwBMAC4AYwBwAHAADQAKACAAIAB2AGEAbABpAGQAYQB0
AGkAbwBuAEUAUwAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8AbgBFAFMAMQAuAGMA
cABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8AbgBFAFMAMgAuAGMAcABwAA0ACgAgACAAdgBh
AGwAaQBkAGEAdABpAG8AbgBFAFMAMwAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8A
bgBFAFMAMwAxAC4AYwBwAHAADQAKACAAIAB2AGEAbABpAGQAYQB0AGkAbwBuAEUAUwAzADIALgBj
AHAAcAANAAoAIAAgAHYAYQBsAGkAZABhAHQAaQBvAG4ARQBTAEUAWABUAC4AYwBwAHAADQAKACAA
IAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAxAC4AYwBwAHAADQAKACAAIAB2AGEAbABpAGQAYQB0
AGkAbwBuAEcATAAxADEALgBjAHAAcAANAAoAIAAgAHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADEA
MgAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwAMQAzAC4AYwBwAHAADQAK
ACAAIAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAxADQALgBjAHAAcAANAAoAIAAgAHYAYQBsAGkA
ZABhAHQAaQBvAG4ARwBMADEANQAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8AbgBH
AEwAMgAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwAMgAxAC4AYwBwAHAA
DQAKACAAIAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAzAC4AYwBwAHAADQAKACAAIAB2AGEAbABp
AGQAYQB0AGkAbwBuAEcATAAzADEALgBjAHAAcAANAAoAIAAgAHYAYQBsAGkAZABhAHQAaQBvAG4A
RwBMADMAMgAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwAMwAzAC4AYwBw
AHAADQAKACAAIAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAA0AC4AYwBwAHAADQAKACAAIAB2AGEA
bABpAGQAYQB0AGkAbwBuAEcATAA0ADEALgBjAHAAcAANAAoAIAAgAHYAYQBsAGkAZABhAHQAaQBv
AG4ARwBMADQAMgAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwANAAzAC4A
YwBwAHAADQAKACAAIAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAA0ADQALgBjAHAAcAANAAoAIAAg
AHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADQANQAuAGMAcABwAA0ACgAgACAAdgBhAGwAaQBkAGEA
dABpAG8AbgBHAEwANAA2AC4AYwBwAHAADQAKACAAIABPAHYAZQByAGwAYQB5AC4AYwBwAHAADQAK
ACAAIABPAHYAZQByAGwAYQB5AFcAaQBkAGcAZQB0AHMALgBjAHAAcAANAAoAIAAgAE8AdgBlAHIA
bABhAHkAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAADQAKACAAIABPAHYAZQByAGwAYQB5AF8AZgBv
AG4AdABfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAANAAoAIAAgAGMAbwBwAHkAaQBtAGEAZwBlAC4A
YwBwAHAADQAKACAAIABpAG0AYQBnAGUAZgBvAHIAbQBhAHQAcwAuAGMAcABwAA0ACgAgACAAbABv
AGEAZABpAG0AYQBnAGUALgBjAHAAcAANAAoAIAAgAGwAbwBhAGQAaQBtAGEAZwBlAF8AZQB0AGMA
LgBjAHAAcAANAAoAIAAgAGMAbwBtAHAAcgBlAHMAcwBpAG8AbgBfAHUAdABpAGwAcwBfAHAAbwBy
AHQAYQBiAGwAZQAuAGMAYwANAAoAIAAgAEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMA
IAAoAHgAOAA2ACkAXABNAGkAYwByAG8AcwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABp
AG8AXAAyADAAMQA5AFwARQBuAHQAZQByAHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0A
UwBWAEMAXAAxADQALgAyADYALgAyADgAOAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4
ADYANABcAEMATAAuAGUAeABlACAALwBjACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBc
AGkAbgBjAGwAdQBkAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABp
AG4AYwBsAHUAZABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBu
AGMAbAB1AGQAZQBcAEsASABSACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBc
AGMAbwBtAG0AbwBuAFwAdABoAGkAcgBkAF8AcABhAHIAdAB5AFwAYgBhAHMAZQAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAHoA
bABpAGIAXABnAG8AbwBnAGwAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBv
AGwAbwBnAG8AIAAvAFcANAAgAC8AVwBYAC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMA
bwBsAHUAbQBuACAALwBNAFAAIAAvAE8AMgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJ
AE4AMwAyACAALwBEACAAXwBXAEkATgBEAE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQA
IABHAEwAXwBHAEwARQBTAF8AUABSAE8AVABPAFQAWQBQAEUAUwA9ADAAIAAvAEQAIABFAEcATABf
AEUARwBMAF8AUABSAE8AVABPAFQAWQBQAEUAUwA9ADAAIAAvAEQAIABMAEkAQgBBAE4ARwBMAEUA
XwBJAE0AUABMAEUATQBFAE4AVABBAFQASQBPAE4AIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBC
AEwARQBfAEUAUwBTAEwAIAAvAEQAIABHAEwAXwBBAFAASQBDAEEATABMAD0AIAAvAEQAIABHAEwA
XwBBAFAASQA9ACAALwBEACAATgBPAE0ASQBOAE0AQQBYACAALwBEACAAQQBOAEcATABFAF8ARQBO
AEEAQgBMAEUAXwBIAEwAUwBMACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBEADMA
RAAxADEAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEQAMwBEADkAIAAvAEQAIABC
AFUASQBMAEQASQBOAEcAXwBXAEkAVABIAF8AQwBNAEEASwBFAD0AMQAgAC8ARAAgAEgAQQBWAEUA
XwBDAE8ATgBGAEkARwBfAEgAPQAxACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8AVQBO
AEkAQwBPAEQARQAgAC8ARAAgAF8ASABBAFMAXwBFAFgAQwBFAFAAVABJAE8ATgBTAD0AMAAgAC8A
RAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcAUwAgAC8ARAAg
AF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAEMAUABQAF8ATwBWAEUAUgBMAE8AQQBEAF8AUwBUAEEA
TgBEAEEAUgBEAF8ATgBBAE0ARQBTAD0AMQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMASwBBAFAASQBf
AD0AIAAvAEQAIABXAFQARgBfAFAATABBAFQARgBPAFIATQBfAFcASQBOAF8AQwBBAEkAUgBPAD0A
MQAgAC8ARAAgAE4ATwBDAFIAWQBQAFQAIAAvAEQAIAAiAEMATQBBAEsARQBfAEkATgBUAEQASQBS
AD0AXAAiAFIAZQBsAGUAYQBzAGUAXAAiACIAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQA
IABVAE4ASQBDAE8ARABFACAALwBHAG0ALQAgAC8ATQBEACAALwBHAFMAIAAvAGYAcAA6AHAAcgBl
AGMAaQBzAGUAIAAvAGYAcAA6AGUAeABjAGUAcAB0AC0AIAAvAFoAYwA6AHcAYwBoAGEAcgBfAHQA
IAAvAFoAYwA6AGYAbwByAFMAYwBvAHAAZQAgAC8AWgBjADoAaQBuAGwAaQBuAGUAIAAvAEcAUgAt
ACAALwBzAHQAZAA6AGMAKwArADEANwAgAC8ARgBvACIAQQBOAEcATABFAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwALwBzAHIAYwAvAGMAbwBtAG0AbwBuAC8AUABvAG8AbABBAGwAbABvAGMALgBj
AHAAcAAuAG8AYgBqACIAIAAvAEYAZAAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAEEATgBHAEwARQAuAHAAZABiACIAIAAvAEcAZAAgAC8AVABQACAALwB3AGQANAAwADEAOAAg
AC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5ACAALwB3AGQANAAxADAAMAAgAC8AdwBkADQA
MQAyADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQANAAxADQANgAgAC8AdwBkADQAMQA4ADAAIAAv
AHcAZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAgAC8AdwBkADQAMgAwADYAIAAvAHcAZAA0ADIA
NAA0ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQAMgA2ADcAIAAvAHcAZAA0ADIANwA1ACAALwB3
AGQANAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3AGQANAAzADAA
OQAgAC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMANQA1ACAALwB3AGQANAAzADgAOQAgAC8AdwBk
ADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3AGQANAA0ADUANwAgAC8AdwBkADQANAA1ADgA
IAAvAHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgAMQAgAC8AdwBkADQANQAwADMAIAAvAHcAZAA0
ADUAMAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBkADQANQAxADIAIAAvAHcAZAA0ADUAMwAwACAA
LwB3AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEAIAAvAHcAZAA0ADYANAA2ACAALwB3AGQANAA3
ADAAMgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0ADcAMgAyACAALwB3AGQANAA4ADAAMAAgAC8A
dwBkADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAALwB3AGQANAA5ADUAMgAgAC8AdwBkADQAOQA5
ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAwADMAMQAgAC8AdwBkADYAMgAxADEAIAAvAHcA
ZAA2ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8AdwBkADYAMwA4ADcAIAAvAHcAZAA0ADAAOQAx
ACAALwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgByAG8AcgBSAGUAcABvAHIAdAA6AHEAdQBlAHUA
ZQAgACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAALwBFAEgAYQAtACAALwBFAEgAYwAtACAALwBF
AEgAcwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0AGYALQA4ACAALwB2AGEAbABpAGQAYQB0AGUA
LQBjAGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGMAbwBtAG0AbwBuAFwAUABvAG8AbABBAGwAbABvAGMALgBjAHAAcAANAAoAIAAgAFAAbwBv
AGwAQQBsAGwAbwBjAC4AYwBwAHAADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwA
ZQBzACAAKAB4ADgANgApAFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1
AGQAaQBvAFwAMgAwADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMA
XABNAFMAVgBDAFwAMQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0
AFwAeAA2ADQAXABDAEwALgBlAHgAZQAgAC8AYwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAFwAdwBp
AG4AXABpAG4AYwBsAHUAZABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAaQBuAGMAbAB1AGQAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBc
AGkAbgBjAGwAdQBkAGUAXABLAEgAUgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAHMAcgBjACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwBy
AGMAXABjAG8AbQBtAG8AbgBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAGIAYQBzAGUAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkA
XAB6AGwAaQBiAFwAZwBvAG8AZwBsAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQA
aABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlACAALwBaAGkAIAAv
AG4AbwBsAG8AZwBvACAALwBXADQAIAAvAFcAWAAtACAALwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMA
OgBjAG8AbAB1AG0AbgAgAC8ATQBQACAALwBPADIAIAAvAE8AYgAyACAALwBPAHkALQAgAC8ARAAg
AFcASQBOADMAMgAgAC8ARAAgAF8AVwBJAE4ARABPAFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAA
LwBEACAARwBMAF8ARwBMAEUAUwBfAFAAUgBPAFQATwBUAFkAUABFAFMAPQAwACAALwBEACAARQBH
AEwAXwBFAEcATABfAFAAUgBPAFQATwBUAFkAUABFAFMAPQAwACAALwBEACAATABJAEIAQQBOAEcA
TABFAF8ASQBNAFAATABFAE0ARQBOAFQAQQBUAEkATwBOACAALwBEACAAQQBOAEcATABFAF8ARQBO
AEEAQgBMAEUAXwBFAFMAUwBMACAALwBEACAARwBMAF8AQQBQAEkAQwBBAEwATAA9ACAALwBEACAA
RwBMAF8AQQBQAEkAPQAgAC8ARAAgAE4ATwBNAEkATgBNAEEAWAAgAC8ARAAgAEEATgBHAEwARQBf
AEUATgBBAEIATABFAF8ASABMAFMATAAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8A
RAAzAEQAMQAxACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBEADMARAA5ACAALwBE
ACAAQgBVAEkATABEAEkATgBHAF8AVwBJAFQASABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEA
VgBFAF8AQwBPAE4ARgBJAEcAXwBIAD0AMQAgAC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAEQAIABf
AFUATgBJAEMATwBEAEUAIAAvAEQAIABfAEgAQQBTAF8ARQBYAEMARQBQAFQASQBPAE4AUwA9ADAA
IAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBOAE8AXwBXAEEAUgBOAEkATgBHAFMAIAAv
AEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBDAFAAUABfAE8AVgBFAFIATABPAEEARABfAFMA
VABBAE4ARABBAFIARABfAE4AQQBNAEUAUwA9ADEAIAAvAEQAIABfAFcASQBOAFMATwBDAEsAQQBQ
AEkAXwA9ACAALwBEACAAVwBUAEYAXwBQAEwAQQBUAEYATwBSAE0AXwBXAEkATgBfAEMAQQBJAFIA
TwA9ADEAIAAvAEQAIABOAE8AQwBSAFkAUABUACAALwBEACAAIgBDAE0AQQBLAEUAXwBJAE4AVABE
AEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwAIgAiACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAA
LwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBtAC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBw
AHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgAYwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIA
XwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBwAGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBH
AFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcAIAAvAEYAbwAiAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAC8AcwByAGMALwBjAG8AbQBtAG8AbgAvAGQAZQBiAHUAZwAuAGMAcABw
AC4AbwBiAGoAIgAgAC8ARgBkACIAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
QQBOAEcATABFAC4AcABkAGIAIgAgAC8ARwBkACAALwBUAFAAIAAvAHcAZAA0ADAAMQA4ACAALwB3
AGQANAAwADYAOAAgAC8AdwBkADQAMAA5ADkAIAAvAHcAZAA0ADEAMAAwACAALwB3AGQANAAxADIA
NwAgAC8AdwBkADQAMQAzADgAIAAvAHcAZAA0ADEANAA2ACAALwB3AGQANAAxADgAMAAgAC8AdwBk
ADQAMQA4ADkAIAAvAHcAZAA0ADIAMAAxACAALwB3AGQANAAyADAANgAgAC8AdwBkADQAMgA0ADQA
IAAvAHcAZAA0ADIANQAxACAALwB3AGQANAAyADYANwAgAC8AdwBkADQAMgA3ADUAIAAvAHcAZAA0
ADIAOAA4ACAALwB3AGQANAAyADkAMQAgAC8AdwBkADQAMwAwADUAIAAvAHcAZAA0ADMAMAA5ACAA
LwB3AGQANAAzADQANAAgAC8AdwBkADQAMwA1ADUAIAAvAHcAZAA0ADMAOAA5ACAALwB3AGQANAAz
ADkANgAgAC8AdwBkADQANAA1ADYAIAAvAHcAZAA0ADQANQA3ACAALwB3AGQANAA0ADUAOAAgAC8A
dwBkADQANAA1ADkAIAAvAHcAZAA0ADQAOAAxACAALwB3AGQANAA1ADAAMwAgAC8AdwBkADQANQAw
ADUAIAAvAHcAZAA0ADUAMQAwACAALwB3AGQANAA1ADEAMgAgAC8AdwBkADQANQAzADAAIAAvAHcA
ZAA0ADYAMQAwACAALwB3AGQANAA2ADEAMQAgAC8AdwBkADQANgA0ADYAIAAvAHcAZAA0ADcAMAAy
ACAALwB3AGQANAA3ADAANgAgAC8AdwBkADQANwAyADIAIAAvAHcAZAA0ADgAMAAwACAALwB3AGQA
NAA4ADEAOQAgAC8AdwBkADQAOQA1ADEAIAAvAHcAZAA0ADkANQAyACAALwB3AGQANAA5ADkANgAg
AC8AdwBkADYAMAAxADEAIAAvAHcAZAA2ADAAMwAxACAALwB3AGQANgAyADEAMQAgAC8AdwBkADYA
MgA0ADYAIAAvAHcAZAA2ADIANQA1ACAALwB3AGQANgAzADgANwAgAC8AdwBkADQAMAA5ADEAIAAv
AGEAbgBhAGwAeQB6AGUALQAgAC8AZQByAHIAbwByAFIAZQBwAG8AcgB0ADoAcQB1AGUAdQBlACAA
IAAvAEUASABzAC0AIAAvAEUASABjAC0AIAAvAEUASABhAC0AIAAvAEUASABjAC0AIAAvAEUASABz
AC0AIAAvAGIAaQBnAG8AYgBqACAALwB1AHQAZgAtADgAIAAvAHYAYQBsAGkAZABhAHQAZQAtAGMA
aABhAHIAcwBlAHQAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwA
YwBvAG0AbQBvAG4AXABkAGUAYgB1AGcALgBjAHAAcAANAAoAIAAgAGQAZQBiAHUAZwAuAGMAcABw
AA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0A
aQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABF
AG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAuADIA
NgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwAQwBMAC4AZQB4
AGUAIAAvAGMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAaQBuAGMAbAB1AGQAZQAg
AC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAIAAv
AEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlAFwASwBI
AFIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwAgAC8ASQBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXAB0
AGgAaQByAGQAXwBwAGEAcgB0AHkAXABiAGEAcwBlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAdABoAGkAcgBkAF8AcABhAHIAdAB5AFwAegBsAGkAYgBcAGcAbwBvAGcA
bABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQAgAC8AWgBpACAALwBuAG8AbABvAGcAbwAgAC8AVwA0
ACAALwBXAFgALQAgAC8AZABpAGEAZwBuAG8AcwB0AGkAYwBzADoAYwBvAGwAdQBtAG4AIAAvAE0A
UAAgAC8ATwAyACAALwBPAGIAMgAgAC8ATwB5AC0AIAAvAEQAIABXAEkATgAzADIAIAAvAEQAIABf
AFcASQBOAEQATwBXAFMAIAAvAEQAIABOAEQARQBCAFUARwAgAC8ARAAgAEcATABfAEcATABFAFMA
XwBQAFIATwBUAE8AVABZAFAARQBTAD0AMAAgAC8ARAAgAEUARwBMAF8ARQBHAEwAXwBQAFIATwBU
AE8AVABZAFAARQBTAD0AMAAgAC8ARAAgAEwASQBCAEEATgBHAEwARQBfAEkATQBQAEwARQBNAEUA
TgBUAEEAVABJAE8ATgAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ARQBTAFMATAAg
AC8ARAAgAEcATABfAEEAUABJAEMAQQBMAEwAPQAgAC8ARAAgAEcATABfAEEAUABJAD0AIAAvAEQA
IABOAE8ATQBJAE4ATQBBAFgAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEgATABT
AEwAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEQAMwBEADEAMQAgAC8ARAAgAEEA
TgBHAEwARQBfAEUATgBBAEIATABFAF8ARAAzAEQAOQAgAC8ARAAgAEIAVQBJAEwARABJAE4ARwBf
AFcASQBUAEgAXwBDAE0AQQBLAEUAPQAxACAALwBEACAASABBAFYARQBfAEMATwBOAEYASQBHAF8A
SAA9ADEAIAAvAEQAIABVAE4ASQBDAE8ARABFACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBE
ACAAXwBIAEEAUwBfAEUAWABDAEUAUABUAEkATwBOAFMAPQAwACAALwBEACAAXwBDAFIAVABfAFMA
RQBDAFUAUgBFAF8ATgBPAF8AVwBBAFIATgBJAE4ARwBTACAALwBEACAAXwBDAFIAVABfAFMARQBD
AFUAUgBFAF8AQwBQAFAAXwBPAFYARQBSAEwATwBBAEQAXwBTAFQAQQBOAEQAQQBSAEQAXwBOAEEA
TQBFAFMAPQAxACAALwBEACAAXwBXAEkATgBTAE8AQwBLAEEAUABJAF8APQAgAC8ARAAgAFcAVABG
AF8AUABMAEEAVABGAE8AUgBNAF8AVwBJAE4AXwBDAEEASQBSAE8APQAxACAALwBEACAATgBPAEMA
UgBZAFAAVAAgAC8ARAAgACIAQwBNAEEASwBFAF8ASQBOAFQARABJAFIAPQBcACIAUgBlAGwAZQBh
AHMAZQBcACIAIgAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAFUATgBJAEMATwBEAEUA
IAAvAEcAbQAtACAALwBNAEQAIAAvAEcAUwAgAC8AZgBwADoAcAByAGUAYwBpAHMAZQAgAC8AZgBw
ADoAZQB4AGMAZQBwAHQALQAgAC8AWgBjADoAdwBjAGgAYQByAF8AdAAgAC8AWgBjADoAZgBvAHIA
UwBjAG8AcABlACAALwBaAGMAOgBpAG4AbABpAG4AZQAgAC8ARwBSAC0AIAAvAHMAdABkADoAYwAr
ACsAMQA3ACAALwBGAG8AIgBBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAAvAHMA
cgBjAC8AYwBvAG0AcABpAGwAZQByAC8AdAByAGEAbgBzAGwAYQB0AG8AcgAvAEMAbwBtAHAAaQBs
AGUAcgAuAGMAcABwAC4AbwBiAGoAIgAgAC8ARgBkACIAQQBOAEcATABFAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAQQBOAEcATABFAC4AcABkAGIAIgAgAC8ARwBkACAALwBUAFAAIAAvAHcAZAA0
ADAAMQA4ACAALwB3AGQANAAwADYAOAAgAC8AdwBkADQAMAA5ADkAIAAvAHcAZAA0ADEAMAAwACAA
LwB3AGQANAAxADIANwAgAC8AdwBkADQAMQAzADgAIAAvAHcAZAA0ADEANAA2ACAALwB3AGQANAAx
ADgAMAAgAC8AdwBkADQAMQA4ADkAIAAvAHcAZAA0ADIAMAAxACAALwB3AGQANAAyADAANgAgAC8A
dwBkADQAMgA0ADQAIAAvAHcAZAA0ADIANQAxACAALwB3AGQANAAyADYANwAgAC8AdwBkADQAMgA3
ADUAIAAvAHcAZAA0ADIAOAA4ACAALwB3AGQANAAyADkAMQAgAC8AdwBkADQAMwAwADUAIAAvAHcA
ZAA0ADMAMAA5ACAALwB3AGQANAAzADQANAAgAC8AdwBkADQAMwA1ADUAIAAvAHcAZAA0ADMAOAA5
ACAALwB3AGQANAAzADkANgAgAC8AdwBkADQANAA1ADYAIAAvAHcAZAA0ADQANQA3ACAALwB3AGQA
NAA0ADUAOAAgAC8AdwBkADQANAA1ADkAIAAvAHcAZAA0ADQAOAAxACAALwB3AGQANAA1ADAAMwAg
AC8AdwBkADQANQAwADUAIAAvAHcAZAA0ADUAMQAwACAALwB3AGQANAA1ADEAMgAgAC8AdwBkADQA
NQAzADAAIAAvAHcAZAA0ADYAMQAwACAALwB3AGQANAA2ADEAMQAgAC8AdwBkADQANgA0ADYAIAAv
AHcAZAA0ADcAMAAyACAALwB3AGQANAA3ADAANgAgAC8AdwBkADQANwAyADIAIAAvAHcAZAA0ADgA
MAAwACAALwB3AGQANAA4ADEAOQAgAC8AdwBkADQAOQA1ADEAIAAvAHcAZAA0ADkANQAyACAALwB3
AGQANAA5ADkANgAgAC8AdwBkADYAMAAxADEAIAAvAHcAZAA2ADAAMwAxACAALwB3AGQANgAyADEA
MQAgAC8AdwBkADYAMgA0ADYAIAAvAHcAZAA2ADIANQA1ACAALwB3AGQANgAzADgANwAgAC8AdwBk
ADQAMAA5ADEAIAAvAGEAbgBhAGwAeQB6AGUALQAgAC8AZQByAHIAbwByAFIAZQBwAG8AcgB0ADoA
cQB1AGUAdQBlACAAIAAvAEUASABzAC0AIAAvAEUASABjAC0AIAAvAEUASABhAC0AIAAvAEUASABj
AC0AIAAvAEUASABzAC0AIAAvAGIAaQBnAG8AYgBqACAALwB1AHQAZgAtADgAIAAvAHYAYQBsAGkA
ZABhAHQAZQAtAGMAaABhAHIAcwBlAHQAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAHMAcgBjAFwAYwBvAG0AcABpAGwAZQByAFwAdAByAGEAbgBzAGwAYQB0AG8AcgBcAEMAbwBt
AHAAaQBsAGUAcgAuAGMAcABwAA0ACgAgACAAQwBvAG0AcABpAGwAZQByAC4AYwBwAHAADQAKACAA
IABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgANgApAFwATQBpAGMAcgBv
AHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAwADEAOQBcAEUAbgB0AGUA
cgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwAMQA0AC4AMgA2AC4AMgA4
ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABDAEwALgBlAHgAZQAgAC8A
YwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFcAZQBi
AEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAFwAdwBpAG4AXABpAG4AYwBsAHUAZABlACAALwBJAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABU
AGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAXABLAEgAUgAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjACAALwBJAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAHQAaABpAHIA
ZABfAHAAYQByAHQAeQBcAGIAYQBzAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkAXAB6AGwAaQBiAFwAZwBvAG8AZwBsAGUAIAAv
AEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQA
XwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXABpAG4AYwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8AZwBvACAALwBXADQAIAAvAFcA
WAAtACAALwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1AG0AbgAgAC8ATQBQACAALwBP
ADIAIAAvAE8AYgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAgAF8AVwBJAE4A
RABPAFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAARwBMAF8ARwBMAEUAUwBfAFAAUgBP
AFQATwBUAFkAUABFAFMAPQAwACAALwBEACAARQBHAEwAXwBFAEcATABfAFAAUgBPAFQATwBUAFkA
UABFAFMAPQAwACAALwBEACAATABJAEIAQQBOAEcATABFAF8ASQBNAFAATABFAE0ARQBOAFQAQQBU
AEkATwBOACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBFAFMAUwBMACAALwBEACAA
RwBMAF8AQQBQAEkAQwBBAEwATAA9ACAALwBEACAARwBMAF8AQQBQAEkAPQAgAC8ARAAgAE4ATwBN
AEkATgBNAEEAWAAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ASABMAFMATAAgAC8A
RAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ARAAzAEQAMQAxACAALwBEACAAQQBOAEcATABF
AF8ARQBOAEEAQgBMAEUAXwBEADMARAA5ACAALwBEACAAQgBVAEkATABEAEkATgBHAF8AVwBJAFQA
SABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4ARgBJAEcAXwBIAD0AMQAg
AC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAEgA
QQBTAF8ARQBYAEMARQBQAFQASQBPAE4AUwA9ADAAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBS
AEUAXwBOAE8AXwBXAEEAUgBOAEkATgBHAFMAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUA
XwBDAFAAUABfAE8AVgBFAFIATABPAEEARABfAFMAVABBAE4ARABBAFIARABfAE4AQQBNAEUAUwA9
ADEAIAAvAEQAIABfAFcASQBOAFMATwBDAEsAQQBQAEkAXwA9ACAALwBEACAAVwBUAEYAXwBQAEwA
QQBUAEYATwBSAE0AXwBXAEkATgBfAEMAQQBJAFIATwA9ADEAIAAvAEQAIABOAE8AQwBSAFkAUABU
ACAALwBEACAAIgBDAE0AQQBLAEUAXwBJAE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwA
IgAiACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBt
AC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgA
YwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBw
AGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcA
IAAvAEYAbwAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAC8AcwByAGMALwBj
AG8AbQBwAGkAbABlAHIALwB0AHIAYQBuAHMAbABhAHQAbwByAC8AUABvAG8AbABBAGwAbABvAGMA
LgBjAHAAcAAuAG8AYgBqACIAIAAvAEYAZAAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAEEATgBHAEwARQAuAHAAZABiACIAIAAvAEcAZAAgAC8AVABQACAALwB3AGQANAAwADEA
OAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5ACAALwB3AGQANAAxADAAMAAgAC8AdwBk
ADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQANAAxADQANgAgAC8AdwBkADQAMQA4ADAA
IAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAgAC8AdwBkADQAMgAwADYAIAAvAHcAZAA0
ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQAMgA2ADcAIAAvAHcAZAA0ADIANwA1ACAA
LwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3AGQANAAz
ADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMANQA1ACAALwB3AGQANAAzADgAOQAgAC8A
dwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3AGQANAA0ADUANwAgAC8AdwBkADQANAA1
ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgAMQAgAC8AdwBkADQANQAwADMAIAAvAHcA
ZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBkADQANQAxADIAIAAvAHcAZAA0ADUAMwAw
ACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEAIAAvAHcAZAA0ADYANAA2ACAALwB3AGQA
NAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0ADcAMgAyACAALwB3AGQANAA4ADAAMAAg
AC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAALwB3AGQANAA5ADUAMgAgAC8AdwBkADQA
OQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAwADMAMQAgAC8AdwBkADYAMgAxADEAIAAv
AHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8AdwBkADYAMwA4ADcAIAAvAHcAZAA0ADAA
OQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgByAG8AcgBSAGUAcABvAHIAdAA6AHEAdQBl
AHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAALwBFAEgAYQAtACAALwBFAEgAYwAtACAA
LwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0AGYALQA4ACAALwB2AGEAbABpAGQAYQB0
AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABz
AHIAYwBcAGMAbwBtAHAAaQBsAGUAcgBcAHQAcgBhAG4AcwBsAGEAdABvAHIAXABQAG8AbwBsAEEA
bABsAG8AYwAuAGMAcABwAA0ACgAgACAAUABvAG8AbABBAGwAbABvAGMALgBjAHAAcAANAAoAIAAg
AEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8A
cwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQBy
AHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAyADgA
OAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAEMATAAuAGUAeABlACAALwBj
ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIA
SwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAEkARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQA
aABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlACAALwBJAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQBcAEsASABSACAALwBJ
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAIAAvAEkARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIA
ZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAG0AbwBuAFwAdABoAGkAcgBk
AF8AcABhAHIAdAB5AFwAYgBhAHMAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAHoAbABpAGIAXABnAG8AbwBnAGwAZQAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBvAGwAbwBnAG8AIAAvAFcANAAgAC8AVwBY
AC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMAbwBsAHUAbQBuACAALwBNAFAAIAAvAE8A
MgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJAE4AMwAyACAALwBEACAAXwBXAEkATgBE
AE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQAIABHAEwAXwBHAEwARQBTAF8AUABSAE8A
VABPAFQAWQBQAEUAUwA9ADAAIAAvAEQAIABFAEcATABfAEUARwBMAF8AUABSAE8AVABPAFQAWQBQ
AEUAUwA9ADAAIAAvAEQAIABMAEkAQgBBAE4ARwBMAEUAXwBJAE0AUABMAEUATQBFAE4AVABBAFQA
SQBPAE4AIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEUAUwBTAEwAIAAvAEQAIABH
AEwAXwBBAFAASQBDAEEATABMAD0AIAAvAEQAIABHAEwAXwBBAFAASQA9ACAALwBEACAATgBPAE0A
SQBOAE0AQQBYACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBIAEwAUwBMACAALwBE
ACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBEADMARAAxADEAIAAvAEQAIABBAE4ARwBMAEUA
XwBFAE4AQQBCAEwARQBfAEQAMwBEADkAIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBXAEkAVABI
AF8AQwBNAEEASwBFAD0AMQAgAC8ARAAgAEgAQQBWAEUAXwBDAE8ATgBGAEkARwBfAEgAPQAxACAA
LwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8ASABB
AFMAXwBFAFgAQwBFAFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIA
RQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBf
AEMAUABQAF8ATwBWAEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBEAF8ATgBBAE0ARQBTAD0A
MQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQAIABXAFQARgBfAFAATABB
AFQARgBPAFIATQBfAFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAE4ATwBDAFIAWQBQAFQA
IAAvAEQAIAAiAEMATQBBAEsARQBfAEkATgBUAEQASQBSAD0AXAAiAFIAZQBsAGUAYQBzAGUAXAAi
ACIAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABVAE4ASQBDAE8ARABFACAALwBHAG0A
LQAgAC8ATQBEACAALwBHAFMAIAAvAGYAcAA6AHAAcgBlAGMAaQBzAGUAIAAvAGYAcAA6AGUAeABj
AGUAcAB0AC0AIAAvAFoAYwA6AHcAYwBoAGEAcgBfAHQAIAAvAFoAYwA6AGYAbwByAFMAYwBvAHAA
ZQAgAC8AWgBjADoAaQBuAGwAaQBuAGUAIAAvAEcAUgAtACAALwBzAHQAZAA6AGMAKwArADEANwAg
AC8ARgBvACIAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwALwBzAHIAYwAvAHQA
aABpAHIAZABfAHAAYQByAHQAeQAvAHMAeQBzAHQAZQBtAGkAbgBmAG8ALwBTAHkAcwB0AGUAbQBJ
AG4AZgBvAC4AYwBwAHAALgBvAGIAagAiACAALwBGAGQAIgBBAE4ARwBMAEUALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABBAE4ARwBMAEUALgBwAGQAYgAiACAALwBHAGQAIAAvAFQAUAAgAC8AdwBk
ADQAMAAxADgAIAAvAHcAZAA0ADAANgA4ACAALwB3AGQANAAwADkAOQAgAC8AdwBkADQAMQAwADAA
IAAvAHcAZAA0ADEAMgA3ACAALwB3AGQANAAxADMAOAAgAC8AdwBkADQAMQA0ADYAIAAvAHcAZAA0
ADEAOAAwACAALwB3AGQANAAxADgAOQAgAC8AdwBkADQAMgAwADEAIAAvAHcAZAA0ADIAMAA2ACAA
LwB3AGQANAAyADQANAAgAC8AdwBkADQAMgA1ADEAIAAvAHcAZAA0ADIANgA3ACAALwB3AGQANAAy
ADcANQAgAC8AdwBkADQAMgA4ADgAIAAvAHcAZAA0ADIAOQAxACAALwB3AGQANAAzADAANQAgAC8A
dwBkADQAMwAwADkAIAAvAHcAZAA0ADMANAA0ACAALwB3AGQANAAzADUANQAgAC8AdwBkADQAMwA4
ADkAIAAvAHcAZAA0ADMAOQA2ACAALwB3AGQANAA0ADUANgAgAC8AdwBkADQANAA1ADcAIAAvAHcA
ZAA0ADQANQA4ACAALwB3AGQANAA0ADUAOQAgAC8AdwBkADQANAA4ADEAIAAvAHcAZAA0ADUAMAAz
ACAALwB3AGQANAA1ADAANQAgAC8AdwBkADQANQAxADAAIAAvAHcAZAA0ADUAMQAyACAALwB3AGQA
NAA1ADMAMAAgAC8AdwBkADQANgAxADAAIAAvAHcAZAA0ADYAMQAxACAALwB3AGQANAA2ADQANgAg
AC8AdwBkADQANwAwADIAIAAvAHcAZAA0ADcAMAA2ACAALwB3AGQANAA3ADIAMgAgAC8AdwBkADQA
OAAwADAAIAAvAHcAZAA0ADgAMQA5ACAALwB3AGQANAA5ADUAMQAgAC8AdwBkADQAOQA1ADIAIAAv
AHcAZAA0ADkAOQA2ACAALwB3AGQANgAwADEAMQAgAC8AdwBkADYAMAAzADEAIAAvAHcAZAA2ADIA
MQAxACAALwB3AGQANgAyADQANgAgAC8AdwBkADYAMgA1ADUAIAAvAHcAZAA2ADMAOAA3ACAALwB3
AGQANAAwADkAMQAgAC8AYQBuAGEAbAB5AHoAZQAtACAALwBlAHIAcgBvAHIAUgBlAHAAbwByAHQA
OgBxAHUAZQB1AGUAIAAgAC8ARQBIAHMALQAgAC8ARQBIAGMALQAgAC8ARQBIAGEALQAgAC8ARQBI
AGMALQAgAC8ARQBIAHMALQAgAC8AYgBpAGcAbwBiAGoAIAAvAHUAdABmAC0AOAAgAC8AdgBhAGwA
aQBkAGEAdABlAC0AYwBoAGEAcgBzAGUAdAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcA
TABFAFwAcwByAGMAXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkAXABzAHkAcwB0AGUAbQBpAG4AZgBv
AFwAUwB5AHMAdABlAG0ASQBuAGYAbwAuAGMAcABwAA0ACgAgACAAUwB5AHMAdABlAG0ASQBuAGYA
bwAuAGMAcABwAA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4
ADYAKQBcAE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIA
MAAxADkAXABFAG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBc
ADEANAAuADIANgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwA
QwBMAC4AZQB4AGUAIAAvAGMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAaQBuAGMA
bAB1AGQAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwA
dQBkAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUA
ZABlAFwASwBIAFIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1
AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0A
bQBvAG4AXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkAXABiAGEAcwBlACAALwBJAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAdABoAGkAcgBkAF8AcABhAHIAdAB5AFwAegBsAGkAYgBc
AGcAbwBvAGcAbABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABh
AHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQAgAC8AWgBpACAALwBuAG8AbABvAGcA
bwAgAC8AVwA0ACAALwBXAFgALQAgAC8AZABpAGEAZwBuAG8AcwB0AGkAYwBzADoAYwBvAGwAdQBt
AG4AIAAvAE0AUAAgAC8ATwAyACAALwBPAGIAMgAgAC8ATwB5AC0AIAAvAEQAIABXAEkATgAzADIA
IAAvAEQAIABfAFcASQBOAEQATwBXAFMAIAAvAEQAIABOAEQARQBCAFUARwAgAC8ARAAgAEcATABf
AEcATABFAFMAXwBQAFIATwBUAE8AVABZAFAARQBTAD0AMAAgAC8ARAAgAEUARwBMAF8ARQBHAEwA
XwBQAFIATwBUAE8AVABZAFAARQBTAD0AMAAgAC8ARAAgAEwASQBCAEEATgBHAEwARQBfAEkATQBQ
AEwARQBNAEUATgBUAEEAVABJAE8ATgAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8A
RQBTAFMATAAgAC8ARAAgAEcATABfAEEAUABJAEMAQQBMAEwAPQAgAC8ARAAgAEcATABfAEEAUABJ
AD0AIAAvAEQAIABOAE8ATQBJAE4ATQBBAFgAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwA
RQBfAEgATABTAEwAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEQAMwBEADEAMQAg
AC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ARAAzAEQAOQAgAC8ARAAgAEIAVQBJAEwA
RABJAE4ARwBfAFcASQBUAEgAXwBDAE0AQQBLAEUAPQAxACAALwBEACAASABBAFYARQBfAEMATwBO
AEYASQBHAF8ASAA9ADEAIAAvAEQAIABVAE4ASQBDAE8ARABFACAALwBEACAAXwBVAE4ASQBDAE8A
RABFACAALwBEACAAXwBIAEEAUwBfAEUAWABDAEUAUABUAEkATwBOAFMAPQAwACAALwBEACAAXwBD
AFIAVABfAFMARQBDAFUAUgBFAF8ATgBPAF8AVwBBAFIATgBJAE4ARwBTACAALwBEACAAXwBDAFIA
VABfAFMARQBDAFUAUgBFAF8AQwBQAFAAXwBPAFYARQBSAEwATwBBAEQAXwBTAFQAQQBOAEQAQQBS
AEQAXwBOAEEATQBFAFMAPQAxACAALwBEACAAXwBXAEkATgBTAE8AQwBLAEEAUABJAF8APQAgAC8A
RAAgAFcAVABGAF8AUABMAEEAVABGAE8AUgBNAF8AVwBJAE4AXwBDAEEASQBSAE8APQAxACAALwBE
ACAATgBPAEMAUgBZAFAAVAAgAC8ARAAgACIAQwBNAEEASwBFAF8ASQBOAFQARABJAFIAPQBcACIA
UgBlAGwAZQBhAHMAZQBcACIAIgAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAFUATgBJ
AEMATwBEAEUAIAAvAEcAbQAtACAALwBNAEQAIAAvAEcAUwAgAC8AZgBwADoAcAByAGUAYwBpAHMA
ZQAgAC8AZgBwADoAZQB4AGMAZQBwAHQALQAgAC8AWgBjADoAdwBjAGgAYQByAF8AdAAgAC8AWgBj
ADoAZgBvAHIAUwBjAG8AcABlACAALwBaAGMAOgBpAG4AbABpAG4AZQAgAC8ARwBSAC0AIAAvAHMA
dABkADoAYwArACsAMQA3ACAALwBGAG8AIgBBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXAAvAHMAcgBjAC8AZwBwAHUAXwBpAG4AZgBvAF8AdQB0AGkAbAAvAFMAeQBzAHQAZQBtAEkA
bgBmAG8ALgBjAHAAcAAuAG8AYgBqACIAIAAvAEYAZAAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEEATgBHAEwARQAuAHAAZABiACIAIAAvAEcAZAAgAC8AVABQACAALwB3AGQA
NAAwADEAOAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5ACAALwB3AGQANAAxADAAMAAg
AC8AdwBkADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQANAAxADQANgAgAC8AdwBkADQA
MQA4ADAAIAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAgAC8AdwBkADQAMgAwADYAIAAv
AHcAZAA0ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQAMgA2ADcAIAAvAHcAZAA0ADIA
NwA1ACAALwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3
AGQANAAzADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMANQA1ACAALwB3AGQANAAzADgA
OQAgAC8AdwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3AGQANAA0ADUANwAgAC8AdwBk
ADQANAA1ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgAMQAgAC8AdwBkADQANQAwADMA
IAAvAHcAZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBkADQANQAxADIAIAAvAHcAZAA0
ADUAMwAwACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEAIAAvAHcAZAA0ADYANAA2ACAA
LwB3AGQANAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0ADcAMgAyACAALwB3AGQANAA4
ADAAMAAgAC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAALwB3AGQANAA5ADUAMgAgAC8A
dwBkADQAOQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAwADMAMQAgAC8AdwBkADYAMgAx
ADEAIAAvAHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8AdwBkADYAMwA4ADcAIAAvAHcA
ZAA0ADAAOQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgByAG8AcgBSAGUAcABvAHIAdAA6
AHEAdQBlAHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAALwBFAEgAYQAtACAALwBFAEgA
YwAtACAALwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0AGYALQA4ACAALwB2AGEAbABp
AGQAYQB0AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXABzAHIAYwBcAGcAcAB1AF8AaQBuAGYAbwBfAHUAdABpAGwAXABTAHkAcwB0AGUAbQBJAG4A
ZgBvAC4AYwBwAHAADQAKACAAIABTAHkAcwB0AGUAbQBJAG4AZgBvAC4AYwBwAHAADQAKACAAIABD
ADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgANgApAFwATQBpAGMAcgBvAHMA
bwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAwADEAOQBcAEUAbgB0AGUAcgBw
AHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwAMQA0AC4AMgA2AC4AMgA4ADgA
MAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABDAEwALgBlAHgAZQAgAC8AYwAg
AC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFcAZQBiAEsA
aQB0AEwAaQBiAHIAYQByAGkAZQBzAFwAdwBpAG4AXABpAG4AYwBsAHUAZABlACAALwBJAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQAgAC8ASQBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAXABLAEgAUgAgAC8ASQBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjACAALwBJAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAHQAaABpAHIAZABf
AHAAYQByAHQAeQBcAGIAYQBzAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkAXAB6AGwAaQBiAFwAZwBvAG8AZwBsAGUAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUA
XABpAG4AYwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8AZwBvACAALwBXADQAIAAvAFcAWAAt
ACAALwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1AG0AbgAgAC8ATQBQACAALwBPADIA
IAAvAE8AYgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAgAF8AVwBJAE4ARABP
AFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAARwBMAF8ARwBMAEUAUwBfAFAAUgBPAFQA
TwBUAFkAUABFAFMAPQAwACAALwBEACAARQBHAEwAXwBFAEcATABfAFAAUgBPAFQATwBUAFkAUABF
AFMAPQAwACAALwBEACAATABJAEIAQQBOAEcATABFAF8ASQBNAFAATABFAE0ARQBOAFQAQQBUAEkA
TwBOACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBFAFMAUwBMACAALwBEACAARwBM
AF8AQQBQAEkAQwBBAEwATAA9ACAALwBEACAARwBMAF8AQQBQAEkAPQAgAC8ARAAgAE4ATwBNAEkA
TgBNAEEAWAAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ASABMAFMATAAgAC8ARAAg
AEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ARAAzAEQAMQAxACAALwBEACAAQQBOAEcATABFAF8A
RQBOAEEAQgBMAEUAXwBEADMARAA5ACAALwBEACAAQgBVAEkATABEAEkATgBHAF8AVwBJAFQASABf
AEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4ARgBJAEcAXwBIAD0AMQAgAC8A
RAAgAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAEgAQQBT
AF8ARQBYAEMARQBQAFQASQBPAE4AUwA9ADAAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUA
XwBOAE8AXwBXAEEAUgBOAEkATgBHAFMAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBD
AFAAUABfAE8AVgBFAFIATABPAEEARABfAFMAVABBAE4ARABBAFIARABfAE4AQQBNAEUAUwA9ADEA
IAAvAEQAIABfAFcASQBOAFMATwBDAEsAQQBQAEkAXwA9ACAALwBEACAAVwBUAEYAXwBQAEwAQQBU
AEYATwBSAE0AXwBXAEkATgBfAEMAQQBJAFIATwA9ADEAIAAvAEQAIABOAE8AQwBSAFkAUABUACAA
LwBEACAAIgBDAE0AQQBLAEUAXwBJAE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwAIgAi
ACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBtAC0A
IAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgAYwBl
AHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBwAGUA
IAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcAIAAv
AEYAbwAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAC8AcwByAGMALwBsAGkA
YgBBAE4ARwBMAEUALwBDAG8AbQBwAGkAbABlAHIALgBjAHAAcAAuAG8AYgBqACIAIAAvAEYAZAAi
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEEATgBHAEwARQAuAHAAZABiACIA
IAAvAEcAZAAgAC8AVABQACAALwB3AGQANAAwADEAOAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0
ADAAOQA5ACAALwB3AGQANAAxADAAMAAgAC8AdwBkADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAA
LwB3AGQANAAxADQANgAgAC8AdwBkADQAMQA4ADAAIAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAy
ADAAMQAgAC8AdwBkADQAMgAwADYAIAAvAHcAZAA0ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8A
dwBkADQAMgA2ADcAIAAvAHcAZAA0ADIANwA1ACAALwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5
ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3AGQANAAzADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcA
ZAA0ADMANQA1ACAALwB3AGQANAAzADgAOQAgAC8AdwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2
ACAALwB3AGQANAA0ADUANwAgAC8AdwBkADQANAA1ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQA
NAA0ADgAMQAgAC8AdwBkADQANQAwADMAIAAvAHcAZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAg
AC8AdwBkADQANQAxADIAIAAvAHcAZAA0ADUAMwAwACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQA
NgAxADEAIAAvAHcAZAA0ADYANAA2ACAALwB3AGQANAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAv
AHcAZAA0ADcAMgAyACAALwB3AGQANAA4ADAAMAAgAC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkA
NQAxACAALwB3AGQANAA5ADUAMgAgAC8AdwBkADQAOQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3
AGQANgAwADMAMQAgAC8AdwBkADYAMgAxADEAIAAvAHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUA
NQAgAC8AdwBkADYAMwA4ADcAIAAvAHcAZAA0ADAAOQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAv
AGUAcgByAG8AcgBSAGUAcABvAHIAdAA6AHEAdQBlAHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgA
YwAtACAALwBFAEgAYQAtACAALwBFAEgAYwAtACAALwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAg
AC8AdQB0AGYALQA4ACAALwB2AGEAbABpAGQAYQB0AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAEMA
bwBtAHAAaQBsAGUAcgAuAGMAcABwAA0ACgAgACAAQwBvAG0AcABpAGwAZQByAC4AYwBwAHAADQAK
ACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgANgApAFwATQBpAGMA
cgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAwADEAOQBcAEUAbgB0
AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwAMQA0AC4AMgA2AC4A
MgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABDAEwALgBlAHgAZQAg
AC8AYwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFcA
ZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAFwAdwBpAG4AXABpAG4AYwBsAHUAZABlACAALwBJ
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQAgAC8ASQBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAXABLAEgAUgAg
AC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjACAALwBJAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAHQAaABp
AHIAZABfAHAAYQByAHQAeQBcAGIAYQBzAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABB
AE4ARwBMAEUAXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkAXAB6AGwAaQBiAFwAZwBvAG8AZwBsAGUA
IAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4A
RwBMAEUAXABpAG4AYwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8AZwBvACAALwBXADQAIAAv
AFcAWAAtACAALwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1AG0AbgAgAC8ATQBQACAA
LwBPADIAIAAvAE8AYgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAgAF8AVwBJ
AE4ARABPAFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAARwBMAF8ARwBMAEUAUwBfAFAA
UgBPAFQATwBUAFkAUABFAFMAPQAwACAALwBEACAARQBHAEwAXwBFAEcATABfAFAAUgBPAFQATwBU
AFkAUABFAFMAPQAwACAALwBEACAATABJAEIAQQBOAEcATABFAF8ASQBNAFAATABFAE0ARQBOAFQA
QQBUAEkATwBOACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBFAFMAUwBMACAALwBE
ACAARwBMAF8AQQBQAEkAQwBBAEwATAA9ACAALwBEACAARwBMAF8AQQBQAEkAPQAgAC8ARAAgAE4A
TwBNAEkATgBNAEEAWAAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ASABMAFMATAAg
AC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ARAAzAEQAMQAxACAALwBEACAAQQBOAEcA
TABFAF8ARQBOAEEAQgBMAEUAXwBEADMARAA5ACAALwBEACAAQgBVAEkATABEAEkATgBHAF8AVwBJ
AFQASABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4ARgBJAEcAXwBIAD0A
MQAgAC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABf
AEgAQQBTAF8ARQBYAEMARQBQAFQASQBPAE4AUwA9ADAAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMA
VQBSAEUAXwBOAE8AXwBXAEEAUgBOAEkATgBHAFMAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBS
AEUAXwBDAFAAUABfAE8AVgBFAFIATABPAEEARABfAFMAVABBAE4ARABBAFIARABfAE4AQQBNAEUA
UwA9ADEAIAAvAEQAIABfAFcASQBOAFMATwBDAEsAQQBQAEkAXwA9ACAALwBEACAAVwBUAEYAXwBQ
AEwAQQBUAEYATwBSAE0AXwBXAEkATgBfAEMAQQBJAFIATwA9ADEAIAAvAEQAIABOAE8AQwBSAFkA
UABUACAALwBEACAAIgBDAE0AQQBLAEUAXwBJAE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBl
AFwAIgAiACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8A
RwBtAC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBl
AHgAYwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMA
bwBwAGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAx
ADcAIAAvAEYAbwAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAC8AcwByAGMA
LwBsAGkAYgBBAE4ARwBMAEUALwBEAGUAYgB1AGcALgBjAHAAcAAuAG8AYgBqACIAIAAvAEYAZAAi
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEEATgBHAEwARQAuAHAAZABiACIA
IAAvAEcAZAAgAC8AVABQACAALwB3AGQANAAwADEAOAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0
ADAAOQA5ACAALwB3AGQANAAxADAAMAAgAC8AdwBkADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAA
LwB3AGQANAAxADQANgAgAC8AdwBkADQAMQA4ADAAIAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAy
ADAAMQAgAC8AdwBkADQAMgAwADYAIAAvAHcAZAA0ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8A
dwBkADQAMgA2ADcAIAAvAHcAZAA0ADIANwA1ACAALwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5
ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3AGQANAAzADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcA
ZAA0ADMANQA1ACAALwB3AGQANAAzADgAOQAgAC8AdwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2
ACAALwB3AGQANAA0ADUANwAgAC8AdwBkADQANAA1ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQA
NAA0ADgAMQAgAC8AdwBkADQANQAwADMAIAAvAHcAZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAg
AC8AdwBkADQANQAxADIAIAAvAHcAZAA0ADUAMwAwACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQA
NgAxADEAIAAvAHcAZAA0ADYANAA2ACAALwB3AGQANAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAv
AHcAZAA0ADcAMgAyACAALwB3AGQANAA4ADAAMAAgAC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkA
NQAxACAALwB3AGQANAA5ADUAMgAgAC8AdwBkADQAOQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3
AGQANgAwADMAMQAgAC8AdwBkADYAMgAxADEAIAAvAHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUA
NQAgAC8AdwBkADYAMwA4ADcAIAAvAHcAZAA0ADAAOQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAv
AGUAcgByAG8AcgBSAGUAcABvAHIAdAA6AHEAdQBlAHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgA
YwAtACAALwBFAEgAYQAtACAALwBFAEgAYwAtACAALwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAg
AC8AdQB0AGYALQA4ACAALwB2AGEAbABpAGQAYQB0AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAEQA
ZQBiAHUAZwAuAGMAcABwAA0ACgAgACAARABlAGIAdQBnAC4AYwBwAHAADQAKACAAIABDADoAXABQ
AHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgANgApAFwATQBpAGMAcgBvAHMAbwBmAHQA
IABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAwADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBz
AGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwAMQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwA
YgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABDAEwALgBlAHgAZQAgAC8AYwAgAC8ASQBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFcAZQBiAEsAaQB0AEwA
aQBiAHIAYQByAGkAZQBzAFwAdwBpAG4AXABpAG4AYwBsAHUAZABlACAALwBJAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQAgAC8ASQBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAXABLAEgAUgAgAC8ASQBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjACAALwBJAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIA
dAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAHQAaABpAHIAZABfAHAAYQBy
AHQAeQBcAGIAYQBzAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXAB0
AGgAaQByAGQAXwBwAGEAcgB0AHkAXAB6AGwAaQBiAFwAZwBvAG8AZwBsAGUAIAAvAEkARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4A
YwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8AZwBvACAALwBXADQAIAAvAFcAWAAtACAALwBk
AGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1AG0AbgAgAC8ATQBQACAALwBPADIAIAAvAE8A
YgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAgAF8AVwBJAE4ARABPAFcAUwAg
AC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAARwBMAF8ARwBMAEUAUwBfAFAAUgBPAFQATwBUAFkA
UABFAFMAPQAwACAALwBEACAARQBHAEwAXwBFAEcATABfAFAAUgBPAFQATwBUAFkAUABFAFMAPQAw
ACAALwBEACAATABJAEIAQQBOAEcATABFAF8ASQBNAFAATABFAE0ARQBOAFQAQQBUAEkATwBOACAA
LwBEACAAQQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBFAFMAUwBMACAALwBEACAARwBMAF8AQQBQ
AEkAQwBBAEwATAA9ACAALwBEACAARwBMAF8AQQBQAEkAPQAgAC8ARAAgAE4ATwBNAEkATgBNAEEA
WAAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ASABMAFMATAAgAC8ARAAgAEEATgBH
AEwARQBfAEUATgBBAEIATABFAF8ARAAzAEQAMQAxACAALwBEACAAQQBOAEcATABFAF8ARQBOAEEA
QgBMAEUAXwBEADMARAA5ACAALwBEACAAQgBVAEkATABEAEkATgBHAF8AVwBJAFQASABfAEMATQBB
AEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4ARgBJAEcAXwBIAD0AMQAgAC8ARAAgAFUA
TgBJAEMATwBEAEUAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAEgAQQBTAF8ARQBY
AEMARQBQAFQASQBPAE4AUwA9ADAAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBOAE8A
XwBXAEEAUgBOAEkATgBHAFMAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBDAFAAUABf
AE8AVgBFAFIATABPAEEARABfAFMAVABBAE4ARABBAFIARABfAE4AQQBNAEUAUwA9ADEAIAAvAEQA
IABfAFcASQBOAFMATwBDAEsAQQBQAEkAXwA9ACAALwBEACAAVwBUAEYAXwBQAEwAQQBUAEYATwBS
AE0AXwBXAEkATgBfAEMAQQBJAFIATwA9ADEAIAAvAEQAIABOAE8AQwBSAFkAUABUACAALwBEACAA
IgBDAE0AQQBLAEUAXwBJAE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwAIgAiACAALwBE
ACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBtAC0AIAAvAE0A
RAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgAYwBlAHAAdAAt
ACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBwAGUAIAAvAFoA
YwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcAIAAvAEYAbwAi
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFwAIgAgAC8ARgBkACIAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQQBOAEcATABFAC4AcABkAGIAIgAgAC8ARwBk
ACAALwBUAEMAIAAvAHcAZAA0ADAAMQA4ACAALwB3AGQANAAwADYAOAAgAC8AdwBkADQAMAA5ADkA
IAAvAHcAZAA0ADEAMAAwACAALwB3AGQANAAxADIANwAgAC8AdwBkADQAMQAzADgAIAAvAHcAZAA0
ADEANAA2ACAALwB3AGQANAAxADgAMAAgAC8AdwBkADQAMQA4ADkAIAAvAHcAZAA0ADIAMAAxACAA
LwB3AGQANAAyADAANgAgAC8AdwBkADQAMgA0ADQAIAAvAHcAZAA0ADIANQAxACAALwB3AGQANAAy
ADYANwAgAC8AdwBkADQAMgA3ADUAIAAvAHcAZAA0ADIAOAA4ACAALwB3AGQANAAyADkAMQAgAC8A
dwBkADQAMwAwADUAIAAvAHcAZAA0ADMAMAA5ACAALwB3AGQANAAzADQANAAgAC8AdwBkADQAMwA1
ADUAIAAvAHcAZAA0ADMAOAA5ACAALwB3AGQANAAzADkANgAgAC8AdwBkADQANAA1ADYAIAAvAHcA
ZAA0ADQANQA3ACAALwB3AGQANAA0ADUAOAAgAC8AdwBkADQANAA1ADkAIAAvAHcAZAA0ADQAOAAx
ACAALwB3AGQANAA1ADAAMwAgAC8AdwBkADQANQAwADUAIAAvAHcAZAA0ADUAMQAwACAALwB3AGQA
NAA1ADEAMgAgAC8AdwBkADQANQAzADAAIAAvAHcAZAA0ADYAMQAwACAALwB3AGQANAA2ADEAMQAg
AC8AdwBkADQANgA0ADYAIAAvAHcAZAA0ADcAMAAyACAALwB3AGQANAA3ADAANgAgAC8AdwBkADQA
NwAyADIAIAAvAHcAZAA0ADgAMAAwACAALwB3AGQANAA4ADEAOQAgAC8AdwBkADQAOQA1ADEAIAAv
AHcAZAA0ADkANQAyACAALwB3AGQANAA5ADkANgAgAC8AdwBkADYAMAAxADEAIAAvAHcAZAA2ADAA
MwAxACAALwB3AGQANgAyADEAMQAgAC8AdwBkADYAMgA0ADYAIAAvAHcAZAA2ADIANQA1ACAALwB3
AGQANgAzADgANwAgAC8AdwBkADQAMAA5ADEAIAAvAGEAbgBhAGwAeQB6AGUALQAgAC8AZQByAHIA
bwByAFIAZQBwAG8AcgB0ADoAcQB1AGUAdQBlACAAIAAvAEUASABzAC0AIAAvAEUASABjAC0AIAAv
AEUASABhAC0AIAAvAEUASABjAC0AIAAvAEUASABzAC0AIAAvAGIAaQBnAG8AYgBqACAALwB1AHQA
ZgAtADgAIAAvAHYAYQBsAGkAZABhAHQAZQAtAGMAaABhAHIAcwBlAHQAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAA
YQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAYwBvAG0AbQBvAG4AXAB0AGgAaQByAGQAXwBw
AGEAcgB0AHkAXAB4AHgAaABhAHMAaABcAHgAeABoAGEAcwBoAC4AYwANAAoAIAAgAHgAeABoAGEA
cwBoAC4AYwANAAoATABpAGIAOgANAAoAIAAgAEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABl
AHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8AcwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUA
ZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQByAHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBc
AE0AUwBWAEMAXAAxADQALgAyADYALgAyADgAOAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQA
XAB4ADYANABcAEwAaQBiAC4AZQB4AGUAIAAvAE8AVQBUADoAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAGwAaQBiADYA
NABcAEEATgBHAEwARQAuAGwAaQBiACIAIAAvAE4ATwBMAE8ARwBPACAALwBNAEEAQwBIAEkATgBF
ADoAWAA2ADQAIAAgAC8AbQBhAGMAaABpAG4AZQA6AHgANgA0ACAAQQBOAEcATABFAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwARgBsAG8AYQB0ADEANgBUAG8ARgBsAG8AYQB0ADMAMgAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATQBlAG0AbwByAHkA
QgB1AGYAZgBlAHIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFAAYQBjAGsAZQBkAEUARwBMAEUAbgB1AG0AcwBfAGEAdQB0AG8AZwBlAG4ALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFAAYQBjAGsAZQBk
AEUAbgB1AG0AcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAUABhAGMAawBlAGQARwBMAEUAbgB1AG0AcwBfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagAN
AAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGEAbABpAGcAbgBlAGQA
XwBtAGUAbQBvAHIAeQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwAYQBuAGQAcgBvAGkAZABfAHUAdABpAGwALgBvAGIAagANAAoAIAAgAEEATgBHAEwA
RQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGEAbgBnAGwAZQB1AHQAaQBsAHMALgBvAGIAagAN
AAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGUAdgBlAG4AdABfAHQA
cgBhAGMAZQByAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABtAGEAdABoAHUAdABpAGwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAG0AYQB0AHIAaQB4AF8AdQB0AGkAbABzAC4AbwBiAGoADQAKACAAIABB
AE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABzAHQAcgBpAG4AZwBfAHUAdABpAGwA
cwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAcwBo
AGEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
UABNAHUAcgBIAGEAcwBoAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXAB0AGwAcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAdQBuAGkAZgBvAHIAbQBfAHQAeQBwAGUAXwBpAG4AZgBvAF8AYQB1AHQAbwBn
AGUAbgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
dQB0AGkAbABpAHQAaQBlAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEQAaQBhAGcAbgBvAHMAdABpAGMAcwBCAGEAcwBlAC4AbwBiAGoADQAKACAA
IABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAGkAcgBlAGMAdABpAHYAZQBI
AGEAbgBkAGwAZQByAEIAYQBzAGUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAEQAaQByAGUAYwB0AGkAdgBlAFAAYQByAHMAZQByAC4AbwBiAGoADQAK
ACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAG4AcAB1AHQALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEwAZQB4AGUAcgAu
AG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATQBhAGMA
cgBvAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABN
AGEAYwByAG8ARQB4AHAAYQBuAGQAZQByAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABQAHIAZQBwAHIAbwBjAGUAcwBzAG8AcgAuAG8AYgBqAA0ACgAg
ACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVABvAGsAZQBuAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABwAHIAZQBwAHIAbwBj
AGUAcwBzAG8AcgBfAGwAZQB4AF8AYQB1AHQAbwBnAGUAbgAuAG8AYgBqAA0ACgAgACAAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAcAByAGUAcAByAG8AYwBlAHMAcwBvAHIAXwB0
AGEAYgBfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAE8AdQB0AHAAdQB0AEUAUwBTAEwALgBvAGIAagANAAoAIAAgAEEATgBH
AEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQAcgBhAG4AcwBsAGEAdABvAHIARQBTAFMA
TAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQgB1
AGkAbAB0AEkAbgBGAHUAbgBjAHQAaQBvAG4ARQBtAHUAbABhAHQAbwByAEcATABTAEwALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEIAdQBpAGwAdABp
AG4AcwBXAG8AcgBrAGEAcgBvAHUAbgBkAEcATABTAEwALgBvAGIAagANAAoAIAAgAEEATgBHAEwA
RQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEUAeAB0AGUAbgBzAGkAbwBuAEcATABTAEwALgBv
AGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAE8AdQB0AHAA
dQB0AEcATABTAEwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAE8AdQB0AHAAdQB0AEcATABTAEwAQgBhAHMAZQAuAG8AYgBqAA0ACgAgACAAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVAByAGEAbgBzAGwAYQB0AG8AcgBHAEwAUwBM
AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABWAGUA
cgBzAGkAbwBuAEcATABTAEwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEIAdQBpAGwAdABJAG4ARgB1AG4AYwB0AGkAbwBuAEUAbQB1AGwAYQB0AG8A
cgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQwBh
AGwAbABEAEEARwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAQwBvAGQAZQBHAGUAbgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAQwBvAGwAbABlAGMAdABWAGEAcgBpAGEAYgBsAGUAcwAuAG8AYgBqAA0A
CgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQwBvAG4AcwB0AGEAbgB0
AFUAbgBpAG8AbgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwARABlAGMAbABhAHIAYQB0AG8AcgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwARABpAGEAZwBuAG8AcwB0AGkAYwBzAC4AbwBiAGoADQAKACAA
IABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAGkAcgBlAGMAdABpAHYAZQBI
AGEAbgBkAGwAZQByAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABFAHgAdABlAG4AcwBpAG8AbgBCAGUAaABhAHYAaQBvAHIALgBvAGIAagANAAoAIAAg
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEYAbABhAGcAUwB0AGQAMQA0ADAA
UwB0AHIAdQBjAHQAcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwARgB1AG4AYwB0AGkAbwBuAEwAbwBvAGsAdQBwAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABIAGEAcwBoAE4AYQBtAGUAcwAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBtAG0AdQB0AGEA
YgBsAGUAUwB0AHIAaQBuAGcAQgB1AGkAbABkAGUAcgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABF
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBuAGYAbwBTAGkAbgBrAC4AbwBiAGoADQAKACAA
IABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAG4AaQB0AGkAYQBsAGkAegBl
AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAG4A
aQB0AGkAYQBsAGkAegBlAEQAbABsAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABJAG4AdABlAHIAbQBOAG8AZABlAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAHMAQQBTAFQARABlAHAAdABoAEIAZQBs
AG8AdwBMAGkAbQBpAHQALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAE8AcABlAHIAYQB0AG8AcgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwATwB1AHQAcAB1AHQAVAByAGUAZQAuAG8AYgBqAA0ACgAgACAA
QQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABhAHIAcwBlAEMAbwBuAHQAZQB4
AHQALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFEA
dQBhAGwAaQBmAGkAZQByAFQAeQBwAGUAcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAUwBoAGEAZABlAHIATABhAG4AZwAuAG8AYgBqAA0ACgAgACAA
QQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBoAGEAZABlAHIAVgBhAHIAcwAu
AG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwB5AG0A
YgBvAGwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFMAeQBtAGIAbwBsAFQAYQBiAGwAZQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwAUwB5AG0AYgBvAGwAVQBuAGkAcQB1AGUASQBkAC4AbwBiAGoADQAK
ACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABUAHkAcABlAHMALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFYAYQBsAGkAZABh
AHQAZQBBAFMAVAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAVgBhAGwAaQBkAGEAdABlAEcAbABvAGIAYQBsAEkAbgBpAHQAaQBhAGwAaQB6AGUAcgAu
AG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVgBhAGwA
aQBkAGEAdABlAEwAaQBtAGkAdABhAHQAaQBvAG4AcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABF
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVgBhAGwAaQBkAGEAdABlAE0AYQB4AFAAYQByAGEA
bQBlAHQAZQByAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFYAYQBsAGkAZABhAHQAZQBPAHUAdABwAHUAdABzAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABWAGEAbABpAGQAYQB0AGUAUwB3AGkAdABj
AGgALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFYA
YQBsAGkAZABhAHQAZQBWAGEAcgB5AGkAbgBnAEwAbwBjAGEAdABpAG8AbgBzAC4AbwBiAGoADQAK
ACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABWAGEAcgBpAGEAYgBsAGUA
UABhAGMAawBlAHIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAGIAbABvAGMAawBsAGEAeQBvAHUAdAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZwBsAHMAbABhAG4AZwBfAGwAZQB4AF8AYQB1AHQAbwBn
AGUAbgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
ZwBsAHMAbABhAG4AZwBfAHQAYQBiAF8AYQB1AHQAbwBnAGUAbgAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQQBkAGQAQQBuAGQAVAByAHUAZQBUAG8A
TABvAG8AcABDAG8AbgBkAGkAdABpAG8AbgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAQgByAGUAYQBrAFYAYQByAGkAYQBiAGwAZQBBAGwAaQBhAHMA
aQBuAGcASQBuAEkAbgBuAGUAcgBMAG8AbwBwAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEMAbABhAG0AcABGAHIAYQBnAEQAZQBwAHQAaAAuAG8A
YgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQwBsAGEAbQBw
AFAAbwBpAG4AdABTAGkAegBlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABEAGUAYwBsAGEAcgBlAEEAbgBkAEkAbgBpAHQAQgB1AGkAbAB0AGkAbgBz
AEYAbwByAEkAbgBzAHQAYQBuAGMAZQBkAE0AdQBsAHQAaQB2AGkAZQB3AC4AbwBiAGoADQAKACAA
IABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAGUAZgBlAHIARwBsAG8AYgBh
AGwASQBuAGkAdABpAGEAbABpAHoAZQByAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAEUAYQByAGwAeQBGAHIAYQBnAG0AZQBuAHQAVABlAHMAdABz
AE8AcAB0AGkAbQBpAHoAYQB0AGkAbwBuAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABFAG0AdQBsAGEAdABlAEcATABGAHIAYQBnAEMAbwBsAG8AcgBC
AHIAbwBhAGQAYwBhAHMAdAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwARQBtAHUAbABhAHQAZQBNAHUAbAB0AGkARAByAGEAdwBTAGgAYQBkAGUAcgBC
AHUAaQBsAHQAaQBuAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAEUAbQB1AGwAYQB0AGUAUAByAGUAYwBpAHMAaQBvAG4ALgBvAGIAagANAAoAIAAg
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEUAeABwAGEAbgBkAEkAbgB0AGUA
ZwBlAHIAUABvAHcARQB4AHAAcgBlAHMAcwBpAG8AbgBzAC4AbwBiAGoADQAKACAAIABBAE4ARwBM
AEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABGAG8AbABkAEUAeABwAHIAZQBzAHMAaQBvAG4A
cwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBu
AGkAdABpAGEAbABpAHoAZQBWAGEAcgBpAGEAYgBsAGUAcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATgBhAG0AZQBFAG0AYgBlAGQAZABlAGQAVQBu
AGkAZgBvAHIAbQBTAHQAcgB1AGMAdABzAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABQAHIAdQBuAGUARQBtAHAAdAB5AEMAYQBzAGUAcwAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUAByAHUAbgBlAE4A
bwBPAHAAcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwAUgBlAGMAbwByAGQAQwBvAG4AcwB0AGEAbgB0AFAAcgBlAGMAaQBzAGkAbwBuAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAZwBlAG4AZQBy
AGEAdABlAFMAdAByAHUAYwB0AE4AYQBtAGUAcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBlAG0AbwB2AGUAQQByAHIAYQB5AEwAZQBuAGcAdABo
AE0AZQB0AGgAbwBkAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABSAGUAbQBvAHYAZQBBAHQAbwBtAGkAYwBDAG8AdQBuAHQAZQByAEIAdQBpAGwAdABp
AG4AcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
UgBlAG0AbwB2AGUARAB5AG4AYQBtAGkAYwBJAG4AZABlAHgAaQBuAGcALgBvAGIAagANAAoAIAAg
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAZQBtAG8AdgBlAEkAbgBhAGMA
dABpAHYAZQBJAG4AdABlAHIAZgBhAGMAZQBWAGEAcgBpAGEAYgBsAGUAcwAuAG8AYgBqAA0ACgAg
ACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBlAG0AbwB2AGUASQBuAHYA
YQByAGkAYQBuAHQARABlAGMAbABhAHIAYQB0AGkAbwBuAC4AbwBiAGoADQAKACAAIABBAE4ARwBM
AEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAbQBvAHYAZQBQAG8AdwAuAG8AYgBqAA0A
CgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBlAG0AbwB2AGUAVQBu
AHIAZQBmAGUAcgBlAG4AYwBlAGQAVgBhAHIAaQBhAGIAbABlAHMALgBvAGIAagANAAoAIAAgAEEA
TgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAZQB3AHIAaQB0AGUAQQB0AG8AbQBp
AGMAQwBvAHUAbgB0AGUAcgBzAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABSAGUAdwByAGkAdABlAEEAdABvAG0AaQBjAEYAdQBuAGMAdABpAG8AbgBF
AHgAcAByAGUAcwBzAGkAbwBuAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFIAZQB3AHIAaQB0AGUAQwB1AGIAZQBNAGEAcABTAGEAbQBwAGwAZQBy
AHMAQQBzADIARABBAHIAcgBhAHkALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFIAZQB3AHIAaQB0AGUARABmAGQAeQAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBlAHcAcgBpAHQAZQBEAG8AVwBoAGkA
bABlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABS
AGUAdwByAGkAdABlAEUAeABwAHIAZQBzAHMAaQBvAG4AcwBXAGkAdABoAFMAaABhAGQAZQByAFMA
dABvAHIAYQBnAGUAQgBsAG8AYwBrAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABSAGUAdwByAGkAdABlAFIAZQBwAGUAYQB0AGUAZABBAHMAcwBpAGcA
bgBUAG8AUwB3AGkAegB6AGwAZQBkAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABSAGUAdwByAGkAdABlAFIAbwB3AE0AYQBqAG8AcgBNAGEAdAByAGkA
YwBlAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFIAZQB3AHIAaQB0AGUAUwB0AHIAdQBjAHQAUwBhAG0AcABsAGUAcgBzAC4AbwBiAGoADQAKACAA
IABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAdwByAGkAdABlAFMAdABy
AHUAYwB0AFMAYQBtAHAAbABlAHIAcwBPAGwAZAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBlAHcAcgBpAHQAZQBUAGUAeABlAGwARgBlAHQAYwBo
AE8AZgBmAHMAZQB0AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABSAGUAdwByAGkAdABlAFUAbgBhAHIAeQBNAGkAbgB1AHMATwBwAGUAcgBhAHQAbwBy
AEYAbABvAGEAdAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAUgBlAHcAcgBpAHQAZQBVAG4AYQByAHkATQBpAG4AdQBzAE8AcABlAHIAYQB0AG8AcgBJ
AG4AdAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
UwBjAGEAbABhAHIAaQB6AGUAVgBlAGMAQQBuAGQATQBhAHQAQwBvAG4AcwB0AHIAdQBjAHQAbwBy
AEEAcgBnAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAFMAZQBwAGEAcgBhAHQAZQBEAGUAYwBsAGEAcgBhAHQAaQBvAG4AcwAuAG8AYgBqAA0ACgAg
ACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBpAG0AcABsAGkAZgB5AEwA
bwBvAHAAQwBvAG4AZABpAHQAaQBvAG4AcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAUwBwAGwAaQB0AFMAZQBxAHUAZQBuAGMAZQBPAHAAZQByAGEA
dABvAHIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFUAbgBmAG8AbABkAFMAaABvAHIAdABDAGkAcgBjAHUAaQB0AEEAUwBUAC4AbwBiAGoADQAKACAA
IABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABVAHMAZQBJAG4AdABlAHIAZgBh
AGMAZQBCAGwAbwBjAGsARgBpAGUAbABkAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAFYAZQBjAHQAbwByAGkAegBlAFYAZQBjAHQAbwByAFMAYwBh
AGwAYQByAEEAcgBpAHQAaABtAGUAdABpAGMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAEYAaQBuAGQARgB1AG4AYwB0AGkAbwBuAC4AbwBiAGoADQAK
ACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABGAGkAbgBkAE0AYQBpAG4A
LgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEYAaQBu
AGQAUwB5AG0AYgBvAGwATgBvAGQAZQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwASQBuAHQAZQByAG0ATgBvAGQAZQBQAGEAdAB0AGUAcgBuAE0AYQB0
AGMAaABlAHIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAEkAbgB0AGUAcgBtAE4AbwBkAGUAXwB1AHQAaQBsAC4AbwBiAGoADQAKACAAIABBAE4ARwBM
AEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAG4AdABlAHIAbQBUAHIAYQB2AGUAcgBzAGUA
LgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAZQBw
AGwAYQBjAGUAQwBsAGkAcABEAGkAcwB0AGEAbgBjAGUAVgBhAHIAaQBhAGIAbABlAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAcABsAGEAYwBl
AFMAaABhAGQAbwB3AGkAbgBnAFYAYQByAGkAYQBiAGwAZQBzAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAcABsAGEAYwBlAFYAYQByAGkAYQBi
AGwAZQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
UgB1AG4AQQB0AFQAaABlAEUAbgBkAE8AZgBTAGgAYQBkAGUAcgAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdQB0AGkAbAAuAG8AYgBqAA0ACgAgACAA
QQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQQByAHIAYQB5AEIAbwB1AG4AZABz
AEMAbABhAG0AcABlAHIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAEkAbQBtAHUAdABhAGIAbABlAFMAdAByAGkAbgBnAF8AYQB1AHQAbwBnAGUAbgAu
AG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwB5AG0A
YgBvAGwAVABhAGIAbABlAF8AYQB1AHQAbwBnAGUAbgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABF
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAcwB5AHMAdABlAG0AXwB1AHQAaQBsAHMALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHMAeQBzAHQAZQBt
AF8AdQB0AGkAbABzAF8AdwBpAG4ALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAHMAeQBzAHQAZQBtAF8AdQB0AGkAbABzAF8AdwBpAG4AMwAyAC4AbwBi
AGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABGAHIAYQBtAGUA
QwBhAHAAdAB1AHIAZQBfAG0AbwBjAGsALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAEEAUwBUAE0AZQB0AGEAZABhAHQAYQBIAEwAUwBMAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAHQAbwBtAGkAYwBD
AG8AdQBuAHQAZQByAEYAdQBuAGMAdABpAG8AbgBIAEwAUwBMAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABCAHUAaQBsAHQASQBuAEYAdQBuAGMAdABp
AG8AbgBFAG0AdQBsAGEAdABvAHIASABMAFMATAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBtAGEAZwBlAEYAdQBuAGMAdABpAG8AbgBIAEwAUwBM
AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABPAHUA
dABwAHUAdABIAEwAUwBMAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABSAGUAcwBvAHUAcgBjAGUAcwBIAEwAUwBMAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAGgAYQBkAGUAcgBTAHQAbwByAGEAZwBl
AEIAbABvAGMAawBGAHUAbgBjAHQAaQBvAG4ASABMAFMATAAuAG8AYgBqAA0ACgAgACAAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBoAGEAZABlAHIAUwB0AG8AcgBhAGcAZQBC
AGwAbwBjAGsATwB1AHQAcAB1AHQASABMAFMATAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwB0AHIAdQBjAHQAdQByAGUASABMAFMATAAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVABlAHgAdAB1AHIA
ZQBGAHUAbgBjAHQAaQBvAG4ASABMAFMATAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAVAByAGEAbgBzAGwAYQB0AG8AcgBIAEwAUwBMAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABVAHQAaQBsAHMASABM
AFMATAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
YgBsAG8AYwBrAGwAYQB5AG8AdQB0AEgATABTAEwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGUAbQB1AGwAYQB0AGUAZABfAGIAdQBpAGwAdABpAG4A
XwBmAHUAbgBjAHQAaQBvAG4AcwBfAGgAbABzAGwAXwBhAHUAdABvAGcAZQBuAC4AbwBiAGoADQAK
ACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAGQAZABEAGUAZgBhAHUA
bAB0AFIAZQB0AHUAcgBuAFMAdABhAHQAZQBtAGUAbgB0AHMALgBvAGIAagANAAoAIAAgAEEATgBH
AEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEEAcgByAGEAeQBSAGUAdAB1AHIAbgBWAGEA
bAB1AGUAVABvAE8AdQB0AFAAYQByAGEAbQBlAHQAZQByAC4AbwBiAGoADQAKACAAIABBAE4ARwBM
AEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAbQBvAHYAZQBTAHcAaQB0AGMAaABGAGEA
bABsAFQAaAByAG8AdQBnAGgALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAFIAZQB3AHIAaQB0AGUARQBsAHMAZQBCAGwAbwBjAGsAcwAuAG8AYgBqAA0A
CgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBlAHAAYQByAGEAdABl
AEEAcgByAGEAeQBDAG8AbgBzAHQAcgB1AGMAdABvAHIAUwB0AGEAdABlAG0AZQBuAHQAcwAuAG8A
YgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBlAHAAYQBy
AGEAdABlAEEAcgByAGEAeQBJAG4AaQB0AGkAYQBsAGkAegBhAHQAaQBvAG4ALgBvAGIAagANAAoA
IAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAZQBwAGEAcgBhAHQAZQBF
AHgAcAByAGUAcwBzAGkAbwBuAHMAUgBlAHQAdQByAG4AaQBuAGcAQQByAHIAYQB5AHMALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFUAbgBmAG8AbABk
AFMAaABvAHIAdABDAGkAcgBjAHUAaQB0AFQAbwBJAGYALgBvAGIAagANAAoAIAAgAEEATgBHAEwA
RQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFcAcgBhAHAAUwB3AGkAdABjAGgAUwB0AGEAdABl
AG0AZQBuAHQAcwBJAG4AQgBsAG8AYwBrAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAEIAdQBmAGYAZQByAEQAMwBEAC4AbwBiAGoADQAKACAAIABB
AE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AbQBwAGkAbABlAHIARAAzAEQA
LgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEQAZQB2
AGkAYwBlAEQAMwBEAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABEAGkAcwBwAGwAYQB5AEQAMwBEAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAHkAbgBhAG0AaQBjAEgATABTAEwALgBvAGIAagANAAoA
IAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEQAeQBuAGEAbQBpAGMASQBt
AGEAZwBlADIARABIAEwAUwBMAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABFAEcATABJAG0AYQBnAGUARAAzAEQALgBvAGIAagANAAoAIAAgAEEATgBH
AEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEYAcgBhAG0AZQBiAHUAZgBmAGUAcgBEADMA
RAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASABM
AFMATABDAG8AbQBwAGkAbABlAHIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAEkAbQBhAGcAZQBEADMARAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABF
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBuAGQAZQB4AEIAdQBmAGYAZQByAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAG4AZABlAHgARABh
AHQAYQBNAGEAbgBhAGcAZQByAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABOAGEAdABpAHYAZQBXAGkAbgBkAG8AdwBEADMARAAuAG8AYgBqAA0ACgAg
ACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUAByAG8AZwByAGEAbQBEADMA
RAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBl
AG4AZABlAHIAVABhAHIAZwBlAHQARAAzAEQALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAZQBuAGQAZQByAGIAdQBmAGYAZQByAEQAMwBEAC4AbwBi
AGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAbgBkAGUA
cgBlAHIARAAzAEQALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFMAaABhAGQAZQByAEQAMwBEAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABTAGgAYQBkAGUAcgBFAHgAZQBjAHUAdABhAGIAbABlAEQAMwBE
AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHUA
cgBmAGEAYwBlAEQAMwBEAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABTAHcAYQBwAEMAaABhAGkAbgBEADMARAAuAG8AYgBqAA0ACgAgACAAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVABlAHgAdAB1AHIAZQBEADMARAAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVgBlAHIAdABlAHgA
QgB1AGYAZgBlAHIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFYAZQByAHQAZQB4AEQAYQB0AGEATQBhAG4AYQBnAGUAcgAuAG8AYgBqAA0ACgAgACAA
QQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQgBsAGkAdAAxADEALgBvAGIAagAN
AAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEIAdQBmAGYAZQByADEA
MQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQwBs
AGUAYQByADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAQwBvAG4AdABlAHgAdAAxADEALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAEQAZQBiAHUAZwBBAG4AbgBvAHQAYQB0AG8AcgAxADEALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEUAeAB0AGUAcgBu
AGEAbABJAG0AYQBnAGUAUwBpAGIAbABpAG4AZwBJAG0AcABsADEAMQAuAG8AYgBqAA0ACgAgACAA
QQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARgBlAG4AYwBlADEAMQAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARgByAGEAbQBlAGIA
dQBmAGYAZQByADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwASQBtAGEAZwBlADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwASQBuAGQAZQB4AEIAdQBmAGYAZQByADEAMQAuAG8AYgBqAA0ACgAg
ACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBuAHAAdQB0AEwAYQB5AG8A
dQB0AEMAYQBjAGgAZQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwATQBhAHAAcABlAGQAUwB1AGIAcgBlAHMAbwB1AHIAYwBlAFYAZQByAGkAZgBpAGUA
cgAxADEALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFAAaQB4AGUAbABUAHIAYQBuAHMAZgBlAHIAMQAxAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABQAHIAbwBnAHIAYQBtADEAMQAuAG8AYgBqAA0ACgAg
ACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUAByAG8AZwByAGEAbQBQAGkA
cABlAGwAaQBuAGUAMQAxAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABRAHUAZQByAHkAMQAxAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAbgBkAGUAcgBTAHQAYQB0AGUAQwBhAGMAaABlAC4AbwBi
AGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAbgBkAGUA
cgBUAGEAcgBnAGUAdAAxADEALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAFIAZQBuAGQAZQByAGUAcgAxADEALgBvAGIAagANAAoAIAAgAEEATgBHAEwA
RQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAZQBzAG8AdQByAGMAZQBNAGEAbgBhAGcAZQBy
ADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
UwBoAGEAZABlAHIARQB4AGUAYwB1AHQAYQBiAGwAZQAxADEALgBvAGIAagANAAoAIAAgAEEATgBH
AEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAdABhAHQAZQBNAGEAbgBhAGcAZQByADEA
MQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwB0
AHIAZQBhAG0AUAByAG8AZAB1AGMAZQByAEQAMwBEAFQAZQB4AHQAdQByAGUALgBvAGIAagANAAoA
IAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAdwBhAHAAQwBoAGEAaQBu
ADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
VABlAHgAdAB1AHIAZQBTAHQAbwByAGEAZwBlADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABF
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVAByAGEAbgBzAGYAbwByAG0ARgBlAGUAZABiAGEA
YwBrADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwAVAByAGkAbQAxADEALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAFYAZQByAHQAZQB4AEEAcgByAGEAeQAxADEALgBvAGIAagANAAoAIAAgAEEATgBH
AEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFYAZQByAHQAZQB4AEIAdQBmAGYAZQByADEA
MQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZgBv
AHIAbQBhAHQAdQB0AGkAbABzADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwAcgBlAG4AZABlAHIAZQByADEAMQBfAHUAdABpAGwAcwAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdABlAHgAdAB1AHIA
ZQBfAGYAbwByAG0AYQB0AF8AdABhAGIAbABlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB0AGUAeAB0AHUAcgBlAF8AZgBvAHIAbQBhAHQAXwB0AGEA
YgBsAGUAXwBhAHUAdABvAGcAZQBuAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABDAG8AbQBwAG8AcwBpAHQAbwByAE4AYQB0AGkAdgBlAFcAaQBuAGQA
bwB3ADEAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwATgBhAHQAaQB2AGUAVwBpAG4AZABvAHcAMQAxAFcAaQBuADMAMgAuAG8AYgBqAA0ACgAgACAA
QQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZAB4AGcAaQBfAGYAbwByAG0AYQB0
AF8AbQBhAHAAXwBhAHUAdABvAGcAZQBuAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABkAHgAZwBpAF8AcwB1AHAAcABvAHIAdABfAHQAYQBiAGwAZQBf
AGEAdQB0AG8AZwBlAG4ALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAFMAeQBzAHQAZQBtAEkAbgBmAG8AXwB3AGkAbgAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQgBsAGkAdAA5AC4AbwBiAGoADQAKACAA
IABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABCAHUAZgBmAGUAcgA5AC4AbwBi
AGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AbgB0AGUA
eAB0ADkALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEQAZQBiAHUAZwBBAG4AbgBvAHQAYQB0AG8AcgA5AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABGAGUAbgBjAGUAOQAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARgByAGEAbQBlAGIAdQBmAGYAZQByADkA
LgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEkAbQBh
AGcAZQA5AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABJAG4AZABlAHgAQgB1AGYAZgBlAHIAOQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwATgBhAHQAaQB2AGUAVwBpAG4AZABvAHcAOQAuAG8AYgBqAA0A
CgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUQB1AGUAcgB5ADkALgBv
AGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAZQBuAGQA
ZQByAFQAYQByAGcAZQB0ADkALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAFIAZQBuAGQAZQByAGUAcgA5AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAGgAYQBkAGUAcgBFAHgAZQBjAHUAdABhAGIAbABl
ADkALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMA
dABhAHQAZQBNAGEAbgBhAGcAZQByADkALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAFMAdwBhAHAAQwBoAGEAaQBuADkALgBvAGIAagANAAoAIAAgAEEA
TgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQAZQB4AHQAdQByAGUAUwB0AG8AcgBh
AGcAZQA5AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABWAGUAcgB0AGUAeABCAHUAZgBmAGUAcgA5AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXABWAGUAcgB0AGUAeABEAGUAYwBsAGEAcgBhAHQAaQBvAG4A
QwBhAGMAaABlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABmAG8AcgBtAGEAdAB1AHQAaQBsAHMAOQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAcgBlAG4AZABlAHIAZQByADkAXwB1AHQAaQBsAHMALgBv
AGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEEAdAB0AHIA
aQBiAHUAdABlAE0AYQBwAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABCAGwAbwBiAEMAYQBjAGgAZQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQgB1AGYAZgBlAHIALgBvAGIAagANAAoAIAAgAEEATgBH
AEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEMAYQBwAHMALgBvAGIAagANAAoAIAAgAEEA
TgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEMAbwBuAGYAaQBnAC4AbwBiAGoADQAK
ACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AbgB0AGUAeAB0AC4A
bwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AbgB0
AGUAeAB0AF8AZwBsAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABDAG8AbgB0AGUAeAB0AF8AZwBsAGUAcwBfADEAXwAwAC4AbwBiAGoADQAKACAAIABB
AE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAGUAdgBpAGMAZQAuAG8AYgBqAA0A
CgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARABpAHMAcABsAGEAeQAu
AG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARQBHAEwA
UwB5AG4AYwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwARQByAHIAbwByAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABGAGUAbgBjAGUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEYAcgBhAG0AZQBiAHUAZgBmAGUAcgAuAG8AYgBqAA0ACgAgACAAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARgByAGEAbQBlAGIAdQBmAGYAZQByAEEAdAB0
AGEAYwBoAG0AZQBuAHQALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAEcATABFAFMAMQBSAGUAbgBkAGUAcgBlAHIALgBvAGIAagANAAoAIAAgAEEATgBH
AEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEcATABFAFMAMQBTAHQAYQB0AGUALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEgAYQBuAGQAbABl
AEEAbABsAG8AYwBhAHQAbwByAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABJAG0AYQBnAGUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAEkAbQBhAGcAZQBJAG4AZABlAHgALgBvAGIAagANAAoAIAAgAEEA
TgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEkAbgBkAGUAeABSAGEAbgBnAGUAQwBh
AGMAaABlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABMAG8AZwBnAGkAbgBnAEEAbgBuAG8AdABhAHQAbwByAC4AbwBiAGoADQAKACAAIABBAE4ARwBM
AEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABNAGUAbQBvAHIAeQBPAGIAagBlAGMAdAAuAG8A
YgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATQBlAG0AbwBy
AHkAUAByAG8AZwByAGEAbQBDAGEAYwBoAGUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAE8AYgBzAGUAcgB2AGUAcgAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABsAGEAdABmAG8AcgBtAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABQAHIAbwBnAHIAYQBt
AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABQAHIA
bwBnAHIAYQBtAEUAeABlAGMAdQB0AGEAYgBsAGUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFAAcgBvAGcAcgBhAG0ATABpAG4AawBlAGQAUgBlAHMA
bwB1AHIAYwBlAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFAAcgBvAGcAcgBhAG0AUABpAHAAZQBsAGkAbgBlAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABRAHUAZQByAHkALgBvAGIAagANAAoAIAAg
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAZQBuAGQAZQByAGIAdQBmAGYA
ZQByAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABS
AGUAcwBvAHUAcgBjAGUATQBhAG4AYQBnAGUAcgAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBhAG0AcABsAGUAcgAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBlAG0AYQBwAGgAbwByAGUALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAaABhAGQAZQBy
AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQA
YQB0AGUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFMAdAByAGUAYQBtAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABTAHUAcgBmAGEAYwBlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABUAGUAeAB0AHUAcgBlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABUAGgAcgBlAGEAZAAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVAByAGEAbgBzAGYAbwByAG0ARgBlAGUA
ZABiAGEAYwBrAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABVAG4AaQBmAG8AcgBtAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABWAGEAcgB5AGkAbgBnAFAAYQBjAGsAaQBuAGcALgBvAGIAagANAAoAIAAg
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFYAZQByAHQAZQB4AEEAcgByAGEA
eQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVgBl
AHIAdABlAHgAQQB0AHQAcgBpAGIAdQB0AGUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAFcAbwByAGsAZQByAFQAaAByAGUAYQBkAC4AbwBiAGoADQAK
ACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABhAG4AZwBsAGUAdAB5AHAA
ZQBzAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABl
AG4AdAByAHkAXwBwAG8AaQBuAHQAcwBfAGUAbgB1AG0AXwBhAHUAdABvAGcAZQBuAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABlAHMAMwBfAGMAbwBw
AHkAXwBjAG8AbgB2AGUAcgBzAGkAbwBuAF8AdABhAGIAbABlAF8AYQB1AHQAbwBnAGUAbgAuAG8A
YgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZgBvAHIAbQBh
AHQAXwBtAGEAcABfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAGYAbwByAG0AYQB0AF8AbQBhAHAAXwBkAGUAcwBrAHQAbwBw
AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABmAG8A
cgBtAGEAdAB1AHQAaQBsAHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAHEAdQBlAHIAeQBjAG8AbgB2AGUAcgBzAGkAbwBuAHMALgBvAGIAagANAAoA
IAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHEAdQBlAHIAeQB1AHQAaQBs
AHMALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEIA
dQBmAGYAZQByAEkAbQBwAGwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEMAbwBuAHQAZQB4AHQASQBtAHAAbAAuAG8AYgBqAA0ACgAgACAAQQBOAEcA
TABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARABlAHYAaQBjAGUASQBtAHAAbAAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARABpAHMAcABsAGEA
eQBJAG0AcABsAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABGAG8AcgBtAGEAdABfAHQAYQBiAGwAZQBfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagANAAoA
IAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFAAcgBvAGcAcgBhAG0AUABp
AHAAZQBsAGkAbgBlAEkAbQBwAGwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFEAdQBlAHIAeQBJAG0AcABsAC4AbwBiAGoADQAKACAAIABBAE4ARwBM
AEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAGgAYQBkAGUAcgBJAG0AcABsAC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHUAcgBmAGEAYwBl
AEkAbQBwAGwALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAFQAZQB4AHQAdQByAGUASQBtAHAAbAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAZAByAGkAdgBlAHIAXwB1AHQAaQBsAHMALgBvAGIAagANAAoA
IAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGwAbwBhAGQAXwBmAHUAbgBj
AHQAaQBvAG4AcwBfAHQAYQBiAGwAZQBfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagANAAoAIAAgAEEA
TgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHIAZQBuAGQAZQByAGUAcgBfAHUAdABp
AGwAcwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
dgBhAGwAaQBkAGEAdABpAG8AbgBFAEcATAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBFAFMALgBvAGIAagANAAoA
IAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHYAYQBsAGkAZABhAHQAaQBv
AG4ARQBTADEALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARQBTADIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARQBTADMALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHYAYQBsAGkAZABh
AHQAaQBvAG4ARQBTADMAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBFAFMAMwAyAC4AbwBiAGoADQAKACAAIABB
AE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEUA
UwBFAFgAVAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwAMQAxAC4AbwBi
AGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB2AGEAbABpAGQA
YQB0AGkAbwBuAEcATAAxADIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADEAMwAuAG8AYgBqAA0ACgAgACAA
QQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBH
AEwAMQA0AC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAAxADUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADIALgBvAGIA
agANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHYAYQBsAGkAZABh
AHQAaQBvAG4ARwBMADIAMQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwAMwAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwA
MwAxAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB2
AGEAbABpAGQAYQB0AGkAbwBuAEcATAAzADIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADMAMwAuAG8AYgBq
AA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdgBhAGwAaQBkAGEA
dABpAG8AbgBHAEwANAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwANAAxAC4AbwBiAGoADQAKACAAIABBAE4A
RwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB2AGEAbABpAGQAYQB0AGkAbwBuAEcATAA0
ADIALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHYA
YQBsAGkAZABhAHQAaQBvAG4ARwBMADQAMwAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAdgBhAGwAaQBkAGEAdABpAG8AbgBHAEwANAA0AC4AbwBiAGoA
DQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB2AGEAbABpAGQAYQB0
AGkAbwBuAEcATAA0ADUALgBvAGIAagANAAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAHYAYQBsAGkAZABhAHQAaQBvAG4ARwBMADQANgAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATwB2AGUAcgBsAGEAeQAuAG8AYgBqAA0A
CgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATwB2AGUAcgBsAGEAeQBX
AGkAZABnAGUAdABzAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABPAHYAZQByAGwAYQB5AF8AYQB1AHQAbwBnAGUAbgAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATwB2AGUAcgBsAGEAeQBfAGYAbwBuAHQA
XwBhAHUAdABvAGcAZQBuAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABjAG8AcAB5AGkAbQBhAGcAZQAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAaQBtAGEAZwBlAGYAbwByAG0AYQB0AHMALgBvAGIAagAN
AAoAIAAgAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGwAbwBhAGQAaQBtAGEA
ZwBlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABs
AG8AYQBkAGkAbQBhAGcAZQBfAGUAdABjAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXAB4AHgAaABhAHMAaAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABF
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAYwBvAG0AcAByAGUAcwBzAGkAbwBuAF8AdQB0AGkA
bABzAF8AcABvAHIAdABhAGIAbABlAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXAAvAHMAcgBjAC8AYwBvAG0AbQBvAG4ALwBQAG8AbwBsAEEAbABsAG8A
YwAuAGMAcABwAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXAAvAHMAcgBjAC8AYwBvAG0AbQBvAG4ALwBkAGUAYgB1AGcALgBjAHAAcAAuAG8AYgBqAA0A
CgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwALwBzAHIAYwAvAGMAbwBt
AHAAaQBsAGUAcgAvAHQAcgBhAG4AcwBsAGEAdABvAHIALwBDAG8AbQBwAGkAbABlAHIALgBjAHAA
cAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwALwBz
AHIAYwAvAGMAbwBtAHAAaQBsAGUAcgAvAHQAcgBhAG4AcwBsAGEAdABvAHIALwBQAG8AbwBsAEEA
bABsAG8AYwAuAGMAcABwAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXAAvAHMAcgBjAC8AdABoAGkAcgBkAF8AcABhAHIAdAB5AC8AcwB5AHMAdABlAG0A
aQBuAGYAbwAvAFMAeQBzAHQAZQBtAEkAbgBmAG8ALgBjAHAAcAAuAG8AYgBqAA0ACgAgACAAQQBO
AEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwALwBzAHIAYwAvAGcAcAB1AF8AaQBuAGYA
bwBfAHUAdABpAGwALwBTAHkAcwB0AGUAbQBJAG4AZgBvAC4AYwBwAHAALgBvAGIAagANAAoAIAAg
AEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAC8AcwByAGMALwBsAGkAYgBBAE4A
RwBMAEUALwBDAG8AbQBwAGkAbABlAHIALgBjAHAAcAAuAG8AYgBqAA0ACgAgACAAQQBOAEcATABF
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwALwBzAHIAYwAvAGwAaQBiAEEATgBHAEwARQAvAEQA
ZQBiAHUAZwAuAGMAcABwAC4AbwBiAGoADQAKACAAIABBAE4ARwBMAEUALgB2AGMAeABwAHIAbwBq
ACAALQA+ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABsAGkAYgA2ADQAXABBAE4ARwBMAEUALgBsAGkAYgANAAoARgBp
AG4AYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkA
bgBnACAAZgBpAGwAZQAgACIAQQBOAEcATABFAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQQBO
AEcATABFAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiAC4A
DQAKACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAEEATgBHAEwARQAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAEEATgBHAEwARQAuAHQAbABvAGcAXABBAE4ARwBMAEUALgBsAGEAcwB0AGIAdQBpAGwA
ZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBl
AGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABB
AE4ARwBMAEUAXABBAE4ARwBMAEUALgB2AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQA
IAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQ
AHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAEEATgBHAEwARQAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAA
cgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUABy
AG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAEwATABfAEIAVQBJAEwARAAuAHYAYwB4AHAAcgBv
AGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwA
RQBcAGkAbgBjAGwAdQBkAGUAXABBAE4ARwBMAEUASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBv
AGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANgApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIA
ZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAaQBuAGMAbAB1AGQAZQBcAEEATgBHAEwARQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8A
agAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA2ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAaQBuAGMAbAB1AGQAZQBcAEEATgBHAEwARQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8A
agAiACAAKAA3ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoAQwBvAHIAZQBDAGwAZQBhAG4AOgANAAoAIAAgAEMAcgBlAGEA
dABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABB
AE4ARwBMAEUASABlAGEAZABlAHIAcwBcACIALgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUA
aQBsAGQAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgB4
ADYANABcAFIAZQBsAGUAYQBzAGUAXABBAE4ARwBMAEUASABlAGEAZABlAHIAcwBcAEEATgBHAEwA
RQBIAGUAYQBkAGUAcgBzAC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABpAHoAZQBC
AHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIAeAA2ADQA
XABSAGUAbABlAGEAcwBlAFwAQQBOAEcATABFAEgAZQBhAGQAZQByAHMAXABBAE4ARwBMAEUASABl
AGEAZABlAHIAcwAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQA
IgAgAGIAZQBjAGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3AGEAcwAg
AHMAcABlAGMAaQBmAGkAZQBkAC4ADQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwAZAA6AA0ACgAgACAA
IgBUAGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABDAE0AYQBrAGUARgBpAGwA
ZQBzAFwAYwAzAGUAMgA1ADkAYQA0ADkAOQA3ADEAYQBhADAAYwAwADYAMgA5ADkANgBlADgAZABi
ADMANwAwAGMAOABhAFwAQQBOAEcATABFAEgAZQBhAGQAZQByAHMALgByAHUAbABlACcAIABkAGUA
cABlAG4AZABzACAAbwBuACAAJwBGADoAXABHAEkAVABQAFwAVwBFAEIASwBJAFQAXABXAEUAQgBL
AEkAVABcAEIAVQBJAEwARABfAEEATQBEADYANABcAEEATgBHAEwARQBcAEgARQBBAEQARQBSAFMA
XABLAEgAUgBcAEsASABSAFAATABBAFQARgBPAFIATQAuAEgAJwAgAHcAaABpAGMAaAAgAGkAcwAg
AHAAcgBvAGQAdQBjAGUAZAAgAGIAeQAgAHQAaABlACAAYgB1AGkAbABkACAAbwBmACAAJwBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAXABLAEgAUgBcAGsA
aAByAHAAbABhAHQAZgBvAHIAbQAuAGgAJwAuACAAVABoAGUAIABpAHQAZQBtAHMAIABjAGEAbgBu
AG8AdAAgAGIAZQAgAGIAdQBpAGwAdAAgAGkAbgAgAHAAYQByAGEAbABsAGUAbAAuACIADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8ALgAuAC8AQQBOAEcATABF
AC8ASABlAGEAZABlAHIAcwAvAEsASABSAC8AawBoAHIAcABsAGEAdABmAG8AcgBtAC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBBAE4ARwBM
AEUALwBIAGUAYQBkAGUAcgBzAC8ARQBHAEwALwBlAGcAbAAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8ALgAuAC8AQQBOAEcATABFAC8ASABlAGEAZABl
AHIAcwAvAEUARwBMAC8AZQBnAGwAZQB4AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAEEATgBHAEwARQAvAEgAZQBhAGQAZQByAHMALwBF
AEcATAAvAGUAZwBsAGUAeAB0AF8AYQBuAGcAbABlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBBAE4ARwBMAEUALwBIAGUAYQBkAGUAcgBz
AC8ARQBHAEwALwBlAGcAbABwAGwAYQB0AGYAbwByAG0ALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAEEATgBHAEwARQAvAEgAZQBhAGQAZQBy
AHMALwBHAEwARQBTAC8AZwBsAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwAuAC4ALwBBAE4ARwBMAEUALwBIAGUAYQBkAGUAcgBzAC8ARwBMAEUAUwAv
AGcAbABwAGwAYQB0AGYAbwByAG0ALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAC4ALgAvAC4ALgAvAEEATgBHAEwARQAvAEgAZQBhAGQAZQByAHMALwBHAEwARQBT
AC8AZwBsAGUAeAB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwAuAC4ALwBBAE4ARwBMAEUALwBIAGUAYQBkAGUAcgBzAC8ARwBMAEUAUwAvAGcAbABl
AHgAdABfAGEAbgBnAGwAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ALgAuAC8ALgAuAC8AQQBOAEcATABFAC8ASABlAGEAZABlAHIAcwAvAEcATABFAFMALwBn
AGwAZQB4AHQAXwBlAHgAcABsAGkAYwBpAHQAXwBjAG8AbgB0AGUAeAB0AF8AYQB1AHQAbwBnAGUA
bgAuAGkAbgBjAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AC4ALgAvAEEATgBHAEwARQAvAEgAZQBhAGQAZQByAHMALwBHAEwARQBTADIALwBnAGwAMgAuAGgA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8ALgAuAC8AQQBO
AEcATABFAC8ASABlAGEAZABlAHIAcwAvAEcATABFAFMAMgAvAGcAbAAyAGUAeAB0AC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBBAE4ARwBM
AEUALwBIAGUAYQBkAGUAcgBzAC8ARwBMAEUAUwAyAC8AZwBsADIAZQB4AHQAXwBhAG4AZwBsAGUA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAv
AEEATgBHAEwARQAvAEgAZQBhAGQAZQByAHMALwBHAEwARQBTADIALwBnAGwAMgBlAHgAdABfAGUA
eABwAGwAaQBjAGkAdABfAGMAbwBuAHQAZQB4AHQAXwBhAHUAdABvAGcAZQBuAC4AaQBuAGMADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8ALgAuAC8AQQBOAEcA
TABFAC8ASABlAGEAZABlAHIAcwAvAEcATABFAFMAMgAvAGcAbAAyAHAAbABhAHQAZgBvAHIAbQAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8ALgAuAC8A
QQBOAEcATABFAC8ASABlAGEAZABlAHIAcwAvAEcATABFAFMAMwAvAGcAbAAzAC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBBAE4ARwBMAEUA
LwBIAGUAYQBkAGUAcgBzAC8ARwBMAEUAUwAzAC8AZwBsADMAZQB4AHQAXwBlAHgAcABsAGkAYwBp
AHQAXwBjAG8AbgB0AGUAeAB0AF8AYQB1AHQAbwBnAGUAbgAuAGkAbgBjAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAEEATgBHAEwARQAvAEgAZQBh
AGQAZQByAHMALwBHAEwARQBTADMALwBnAGwAMwBwAGwAYQB0AGYAbwByAG0ALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAEEATgBHAEwARQAv
AEgAZQBhAGQAZQByAHMALwBHAEwARQBTADMALwBnAGwAMwAxAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBBAE4ARwBMAEUALwBIAGUAYQBk
AGUAcgBzAC8ARwBMAEUAUwAzAC8AZwBsADMAMQBlAHgAdABfAGUAeABwAGwAaQBjAGkAdABfAGMA
bwBuAHQAZQB4AHQAXwBhAHUAdABvAGcAZQBuAC4AaQBuAGMADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8ALgAuAC8AQQBOAEcATABFAC8ASABlAGEAZABlAHIA
cwAvAEcATABFAFMAMwAvAGcAbAAzADIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAEEATgBHAEwARQAvAEgAZQBhAGQAZQByAHMALwBHAEwA
RQBTADMALwBnAGwAMwAyAGUAeAB0AF8AZQB4AHAAbABpAGMAaQB0AF8AYwBvAG4AdABlAHgAdABf
AGEAdQB0AG8AZwBlAG4ALgBpAG4AYwANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQA
bwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0
AC8AUwBvAHUAcgBjAGUALwBUAGgAaQByAGQAUABhAHIAdAB5AC8AQQBOAEcATABFAC8AaQBuAGMA
bAB1AGQAZQAvAEMATQBhAGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoARgBpAG4AYQBsAGkAegBl
AEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBnACAAZgBpAGwA
ZQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAQQBOAEcATABFAEgAZQBhAGQAZQByAHMAXABB
AE4ARwBMAEUASABlAGEAZABlAHIAcwAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUA
bABiAHUAaQBsAGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkAbgBnACAAIgB4ADYANABcAFIAZQBs
AGUAYQBzAGUAXABBAE4ARwBMAEUASABlAGEAZABlAHIAcwBcAEEATgBHAEwARQBIAGUAYQBkAGUA
cgBzAC4AdABsAG8AZwBcAEEATgBHAEwARQBIAGUAYQBkAGUAcgBzAC4AbABhAHMAdABiAHUAaQBs
AGQAcwB0AGEAdABlACIALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoA
ZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQBcAEEATgBHAEwARQBIAGUAYQBkAGUAcgBzAC4AdgBj
AHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0A
CgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBs
AHUAZABlAFwAQQBOAEcATABFAEgAZQBhAGQAZQByAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQA
YQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAK
AFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAQQBMAEwAXwBCAFUASQBMAEQALgB2AGMAeABw
AHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADIAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4A
ZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABDAG8AcAB5AF8A
VwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQAUAByAGkAdgBhAHQAZQBIAGUAYQBk
AGUAcgBzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA4ACkAIABvAG4A
IABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgAN
AAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwBy
AGUAXABDAG8AcAB5AF8AVwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQAUAByAGkA
dgBhAHQAZQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAi
ACAAKAA4ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBj
AGUAXABXAGUAYgBDAG8AcgBlAFwAQwBvAHAAeQBfAFcAZQBiAEMAbwByAGUAVABlAHMAdABTAHUA
cABwAG8AcgB0AFAAcgBpAHYAYQB0AGUASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBvAGoAIgAg
ACgAOQApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUA
dAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBu
AGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAQwBvAHAA
eQBfAFcAZQBiAEMAbwByAGUAVABlAHMAdABTAHUAcABwAG8AcgB0AFAAcgBpAHYAYQB0AGUASABl
AGEAZABlAHIAcwBcACIALgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUAaQBsAGQAOgANAAoA
IAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgB4ADYANABcAFIAZQBs
AGUAYQBzAGUAXABDAG8AcAB5AF8AVwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQA
UAByAGkAdgBhAHQAZQBIAGUAYQBkAGUAcgBzAFwAQwBvAHAAeQBfAFcAZQBiAC4ANwBCAEIARABB
ADMANwAxAC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABpAHoAZQBCAHUAaQBsAGQA
UwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABl
AGEAcwBlAFwAQwBvAHAAeQBfAFcAZQBiAEMAbwByAGUAVABlAHMAdABTAHUAcABwAG8AcgB0AFAA
cgBpAHYAYQB0AGUASABlAGEAZABlAHIAcwBcAEMAbwBwAHkAXwBXAGUAYgAuADcAQgBCAEQAQQAz
ADcAMQAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAgAGIA
ZQBjAGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3AGEAcwAgAHMAcABl
AGMAaQBmAGkAZQBkAC4ADQAKAEMAbwBtAHAAdQB0AGUAQwB1AHMAdABvAG0AQgB1AGkAbABkAE8A
dQB0AHAAdQB0ADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAg
ACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQA
XwBhAG0AZAA2ADQAXABXAGUAYgBDAG8AcgBlAFwAUAByAGkAdgBhAHQAZQBIAGUAYQBkAGUAcgBz
AFwAVwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQAXAAiAC4ADQAKAEMAdQBzAHQA
bwBtAEIAdQBpAGwAZAA6AA0ACgAgACAAIgBUAGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAgACcARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0A
ZAA2ADQAXABDAE0AYQBrAGUARgBpAGwAZQBzAFwAYwBlAGUAYQA3AGYAYwA2ADMAYgAxAGMAMQA4
ADEAZABlAGUAOQBkADAAYgA1ADIAZgBmAGUAMAAyAGYAYgBiAFwAQwBvAHAAeQBfAFcAZQBiAEMA
bwByAGUAVABlAHMAdABTAHUAcABwAG8AcgB0AFAAcgBpAHYAYQB0AGUASABlAGEAZABlAHIAcwAu
AHIAdQBsAGUAJwAgAGQAZQBwAGUAbgBkAHMAIABvAG4AIAAnAEYAOgBcAEcASQBUAFAAXABXAEUA
QgBLAEkAVABcAFcARQBCAEsASQBUAFwAQgBVAEkATABEAF8AQQBNAEQANgA0AFwAVwBFAEIAQwBP
AFIARQBcAFAAUgBJAFYAQQBUAEUASABFAEEARABFAFIAUwBcAFcARQBCAEMATwBSAEUAVABFAFMA
VABTAFUAUABQAE8AUgBUAFwAVwBFAEIAQwBPAFIARQBUAEUAUwBUAFMAVQBQAFAATwBSAFQALgBI
ACcAIAB3AGgAaQBjAGgAIABpAHMAIABwAHIAbwBkAHUAYwBlAGQAIABiAHkAIAB0AGgAZQAgAGIA
dQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXAB0AGUAcwB0AGkAbgBnAFwAagBzAFwA
VwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQALgBoACcALgAgAFQAaABlACAAaQB0
AGUAbQBzACAAYwBhAG4AbgBvAHQAIABiAGUAIABiAHUAaQBsAHQAIABpAG4AIABwAGEAcgBhAGwA
bABlAGwALgAiAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBi
AEMAbwByAGUALwBQAHIAaQB2AGEAdABlAEgAZQBhAGQAZQByAHMALwBXAGUAYgBDAG8AcgBlAFQA
ZQBzAHQAUwB1AHAAcABvAHIAdAAvAFcAZQBiAEMAbwByAGUAVABlAHMAdABTAHUAcABwAG8AcgB0
AC4AaAANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYA
OgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBX
AGUAYgBDAG8AcgBlAC8AQwBNAGEAawBlAEwAaQBzAHQAcwAuAHQAeAB0AA0ACgBGAGkAbgBhAGwA
aQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABEAGUAbABlAHQAaQBuAGcAIABm
AGkAbABlACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABDAG8AcAB5AF8AVwBlAGIAQwBvAHIA
ZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQAUAByAGkAdgBhAHQAZQBIAGUAYQBkAGUAcgBzAFwAQwBv
AHAAeQBfAFcAZQBiAC4ANwBCAEIARABBADMANwAxAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUA
cwBzAGYAdQBsAGIAdQBpAGwAZAAiAC4ADQAKACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAHgANgA0
AFwAUgBlAGwAZQBhAHMAZQBcAEMAbwBwAHkAXwBXAGUAYgBDAG8AcgBlAFQAZQBzAHQAUwB1AHAA
cABvAHIAdABQAHIAaQB2AGEAdABlAEgAZQBhAGQAZQByAHMAXABDAG8AcAB5AF8AVwBlAGIALgA3
AEIAQgBEAEEAMwA3ADEALgB0AGwAbwBnAFwAQwBvAHAAeQBfAFcAZQBiAEMAbwByAGUAVABlAHMA
dABTAHUAcABwAG8AcgB0AFAAcgBpAHYAYQB0AGUASABlAGEAZABlAHIAcwAuAGwAYQBzAHQAYgB1
AGkAbABkAHMAdABhAHQAZQAiAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIA
bwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAEMA
bwBwAHkAXwBXAGUAYgBDAG8AcgBlAFQAZQBzAHQAUwB1AHAAcABvAHIAdABQAHIAaQB2AGEAdABl
AEgAZQBhAGQAZQByAHMALgB2AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEA
cgBnAGUAdAAoAHMAKQApAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBq
AGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAEMAbwBw
AHkAXwBXAGUAYgBDAG8AcgBlAFQAZQBzAHQAUwB1AHAAcABvAHIAdABQAHIAaQB2AGEAdABlAEgA
ZQBhAGQAZQByAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBi
AHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwAQQBMAEwAXwBCAFUASQBMAEQALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIA
bwBqACIAIAAoADIAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8A
bwBsAHMAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUAXABEAHUAbQBwAFIAZQBuAGQAZQBy
AFQAcgBlAGUALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADEAMAApACAA
bwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQAp
AC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwARAB1AG0AcABS
AGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAC4AdgBjAHgA
cAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAxADAAKQAgAGkAcwAgAGIAdQBpAGwAZABp
AG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBl
AGUAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUATABpAGIALgB2AGMAeABwAHIAbwBqAC4A
bQBlAHQAYQBwAHIAbwBqACIAIAAoADEAMQApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBi
AHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwAVABvAG8AbABzAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0A
cABSAGUAbgBkAGUAcgBUAHIAZQBlAEwAaQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcABy
AG8AagAiACAAKAAxADEAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABU
AG8AbwBsAHMAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUAXABEAHUAbQBwAFIAZQBuAGQA
ZQByAFQAcgBlAGUAQgBpAG4AZABpAG4AZwBzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcABy
AG8AagAiACAAKAAxADIAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAA
dABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQA
bwBvAGwAcwBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQBcAEQAdQBtAHAAUgBlAG4AZABl
AHIAVAByAGUAZQBCAGkAbgBkAGkAbgBnAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIA
bwBqACIAIAAoADEAMgApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQA
bwBvAGwAcwBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQBcAEQAdQBtAHAAUgBlAG4AZABl
AHIAVAByAGUAZQBCAGkAbgBkAGkAbgBnAHMALgB2AGMAeABwAHIAbwBqACIAIAAoADEAMwApACAA
bwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQAp
AC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkA
cgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwARAB1AG0AcABSAGUAbgBk
AGUAcgBUAHIAZQBlAEIAaQBuAGQAaQBuAGcAcwBcACIALgANAAoAUAByAGUAcABhAHIAZQBGAG8A
cgBCAHUAaQBsAGQAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5
ACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUA
QgBpAG4AZABpAG4AZwBzAFwARAB1AG0AcABSAGUAbgBkAC4ANwA4AEIARABCADEAQQAyAC4AdABs
AG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMA
OgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwARAB1
AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAEIAaQBuAGQAaQBuAGcAcwBcAEQAdQBtAHAAUgBlAG4A
ZAAuADcAOABCAEQAQgAxAEEAMgAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABi
AHUAaQBsAGQAIgAgAGIAZQBjAGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIA
IAB3AGEAcwAgAHMAcABlAGMAaQBmAGkAZQBkAC4ADQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwAZAA6
AA0ACgAgACAARwBlAG4AZQByAGEAdABlACAAYgBpAG4AZABpAG4AZwBzACAAKABEAHUAbQBwAFIA
ZQBuAGQAZQByAFQAcgBlAGUAQgBpAG4AZABpAG4AZwBzACkADQAKACAAIABbADEALwAxAF0AIABV
AEkAUwBjAHIAaQBwAHQAQwBvAG4AdAByAG8AbABsAGUAcgAuAGkAZABsAA0ACgAgACAAQgB1AGkA
bABkAGkAbgBnACAAQwB1AHMAdABvAG0AIABSAHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBi
AEsAaQB0AC8AdwBlAGIAawBpAHQALwBUAG8AbwBsAHMALwBEAHUAbQBwAFIAZQBuAGQAZQByAFQA
cgBlAGUALwBDAE0AYQBrAGUATABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEAbABpAHoAZQBC
AHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUA
IAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQBC
AGkAbgBkAGkAbgBnAHMAXABEAHUAbQBwAFIAZQBuAGQALgA3ADgAQgBEAEIAMQBBADIALgB0AGwA
bwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIALgANAAoAIAAgAFQAbwB1
AGMAaABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwARAB1AG0AcABSAGUAbgBkAGUA
cgBUAHIAZQBlAEIAaQBuAGQAaQBuAGcAcwBcAEQAdQBtAHAAUgBlAG4AZAAuADcAOABCAEQAQgAx
AEEAMgAuAHQAbABvAGcAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUAQgBpAG4AZABpAG4A
ZwBzAC4AbABhAHMAdABiAHUAaQBsAGQAcwB0AGEAdABlACIALgANAAoARABvAG4AZQAgAEIAdQBp
AGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwARAB1
AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAEIA
aQBuAGQAaQBuAGcAcwAuAHYAYwB4AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoA
ZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIA
ZQBlAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAEIAaQBuAGQAaQBuAGcAcwAuAHYAYwB4
AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcA
ZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMA
XABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBl
AGUATABpAGIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADEAMQApACAA
aQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAEUARwBMAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0
AGEAcAByAG8AagAiACAAKAAxADQAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkA
bABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAEUARwBM
AC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAxADQAKQAgAGkAcwAgAGIA
dQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEA
cgB0AHkAXABBAE4ARwBMAEUAXABHAEwARQBTAHYAMgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABh
AHAAcgBvAGoAIgAgACgAMQA1ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwA
ZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABHAEwARQBT
AHYAMgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMQA1ACkAIABpAHMA
IABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQA
UABhAHIAdAB5AFwAQQBOAEcATABFAFwARwBMAEUAUwB2ADIALgB2AGMAeABwAHIAbwBqACIAIAAo
ADEANgApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUA
dAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBu
AGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIARwBMAEUAUwB2ADIALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAKACAAIABD
AHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIARwBMAEUAUwB2ADIALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABHAEwARQBTAHYAMgAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBp
AHQAaQBhAGwAaQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQA
aQBuAGcAIAAiAEcATABFAFMAdgAyAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARwBMAEUAUwB2
ADIALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIAIABiAGUA
YwBhAHUAcwBlACAAIgBBAGwAdwBhAHkAcwBDAHIAZQBhAHQAZQAiACAAdwBhAHMAIABzAHAAZQBj
AGkAZgBpAGUAZAAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgANAAoAIAAgAEIAdQBpAGwA
ZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBL
AGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBUAGgAaQByAGQAUABhAHIAdAB5AC8A
QQBOAEcATABFAC8AQwBNAGEAawBlAEwAaQBzAHQAcwAuAHQAeAB0AA0ACgBDAGwAQwBvAG0AcABp
AGwAZQA6AA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYA
KQBcAE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAx
ADkAXABFAG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEA
NAAuADIANgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwAQwBM
AC4AZQB4AGUAIAAvAGMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABp
AG4AYwBsAHUAZABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBu
AGMAbAB1AGQAZQBcAEsASABSACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBc
AGMAbwBtAG0AbwBuAFwAdABoAGkAcgBkAF8AcABhAHIAdAB5AFwAYgBhAHMAZQAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAHoA
bABpAGIAXABnAG8AbwBnAGwAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkA
cgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAIAAvAEkARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABXAGUAYgBLAGkAdABMAGkAYgByAGEA
cgBpAGUAcwBcAHcAaQBuAFwAaQBuAGMAbAB1AGQAZQAgAC8AWgBpACAALwBuAG8AbABvAGcAbwAg
AC8AVwA0ACAALwBXAFgALQAgAC8AZABpAGEAZwBuAG8AcwB0AGkAYwBzADoAYwBvAGwAdQBtAG4A
IAAvAE0AUAAgAC8ATwAyACAALwBPAGIAMgAgAC8ATwB5AC0AIAAvAEQAIABXAEkATgAzADIAIAAv
AEQAIABfAFcASQBOAEQATwBXAFMAIAAvAEQAIABOAEQARQBCAFUARwAgAC8ARAAgAEwASQBCAEcA
TABFAFMAVgAyAF8ASQBNAFAATABFAE0ARQBOAFQAQQBUAEkATwBOACAALwBEACAAQgBVAEkATABE
AEkATgBHAF8AVwBJAFQASABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4A
RgBJAEcAXwBIAD0AMQAgAC8ARAAgAE4ATwBNAEkATgBNAEEAWAAgAC8ARAAgAFUATgBJAEMATwBE
AEUAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAEgAQQBTAF8ARQBYAEMARQBQAFQA
SQBPAE4AUwA9ADAAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBOAE8AXwBXAEEAUgBO
AEkATgBHAFMAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBDAFAAUABfAE8AVgBFAFIA
TABPAEEARABfAFMAVABBAE4ARABBAFIARABfAE4AQQBNAEUAUwA9ADEAIAAvAEQAIABfAFcASQBO
AFMATwBDAEsAQQBQAEkAXwA9ACAALwBEACAAVwBUAEYAXwBQAEwAQQBUAEYATwBSAE0AXwBXAEkA
TgBfAEMAQQBJAFIATwA9ADEAIAAvAEQAIABOAE8AQwBSAFkAUABUACAALwBEACAAQQBOAEcATABF
AF8ARQBOAEEAQgBMAEUAXwBFAFMAUwBMACAALwBEACAARwBMAF8AQQBQAEkAQwBBAEwATAA9ACAA
LwBEACAARwBMAF8AQQBQAEkAPQAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ASABM
AFMATAAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBBAEIATABFAF8ARAAzAEQAMQAxACAALwBEACAA
QQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBEADMARAA5ACAALwBEACAAIgBDAE0AQQBLAEUAXwBJ
AE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwAIgAiACAALwBEACAARwBMAEUAUwB2ADIA
XwBFAFgAUABPAFIAVABTACAALwBEACAAXwBXAEkATgBEAEwATAAgAC8ARAAgAF8AVQBOAEkAQwBP
AEQARQAgAC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAEcAbQAtACAALwBNAEQAIAAvAEcAUwAgAC8A
ZgBwADoAcAByAGUAYwBpAHMAZQAgAC8AZgBwADoAZQB4AGMAZQBwAHQALQAgAC8AWgBjADoAdwBj
AGgAYQByAF8AdAAgAC8AWgBjADoAZgBvAHIAUwBjAG8AcABlACAALwBaAGMAOgBpAG4AbABpAG4A
ZQAgAC8ARwBSAC0AIAAvAHMAdABkADoAYwArACsAMQA3ACAALwBGAG8AIgBHAEwARQBTAHYAMgAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFwAIgAgAC8ARgBkACIARwBMAEUAUwB2ADIALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXAB2AGMAMQA0ADIALgBwAGQAYgAiACAALwBHAGQAIAAvAFQAUAAg
AC8AdwBkADQAMAAxADgAIAAvAHcAZAA0ADAANgA4ACAALwB3AGQANAAwADkAOQAgAC8AdwBkADQA
MQAwADAAIAAvAHcAZAA0ADEAMgA3ACAALwB3AGQANAAxADMAOAAgAC8AdwBkADQAMQA0ADYAIAAv
AHcAZAA0ADEAOAAwACAALwB3AGQANAAxADgAOQAgAC8AdwBkADQAMgAwADEAIAAvAHcAZAA0ADIA
MAA2ACAALwB3AGQANAAyADQANAAgAC8AdwBkADQAMgA1ADEAIAAvAHcAZAA0ADIANgA3ACAALwB3
AGQANAAyADcANQAgAC8AdwBkADQAMgA4ADgAIAAvAHcAZAA0ADIAOQAxACAALwB3AGQANAAzADAA
NQAgAC8AdwBkADQAMwAwADkAIAAvAHcAZAA0ADMANAA0ACAALwB3AGQANAAzADUANQAgAC8AdwBk
ADQAMwA4ADkAIAAvAHcAZAA0ADMAOQA2ACAALwB3AGQANAA0ADUANgAgAC8AdwBkADQANAA1ADcA
IAAvAHcAZAA0ADQANQA4ACAALwB3AGQANAA0ADUAOQAgAC8AdwBkADQANAA4ADEAIAAvAHcAZAA0
ADUAMAAzACAALwB3AGQANAA1ADAANQAgAC8AdwBkADQANQAxADAAIAAvAHcAZAA0ADUAMQAyACAA
LwB3AGQANAA1ADMAMAAgAC8AdwBkADQANgAxADAAIAAvAHcAZAA0ADYAMQAxACAALwB3AGQANAA2
ADQANgAgAC8AdwBkADQANwAwADIAIAAvAHcAZAA0ADcAMAA2ACAALwB3AGQANAA3ADIAMgAgAC8A
dwBkADQAOAAwADAAIAAvAHcAZAA0ADgAMQA5ACAALwB3AGQANAA5ADUAMQAgAC8AdwBkADQAOQA1
ADIAIAAvAHcAZAA0ADkAOQA2ACAALwB3AGQANgAwADEAMQAgAC8AdwBkADYAMAAzADEAIAAvAHcA
ZAA2ADIAMQAxACAALwB3AGQANgAyADQANgAgAC8AdwBkADYAMgA1ADUAIAAvAHcAZAA2ADMAOAA3
ACAALwB3AGQANAAwADkAMQAgAC8AYQBuAGEAbAB5AHoAZQAtACAALwBlAHIAcgBvAHIAUgBlAHAA
bwByAHQAOgBxAHUAZQB1AGUAIAAgAC8ARQBIAHMALQAgAC8ARQBIAGMALQAgAC8ARQBIAGEALQAg
AC8ARQBIAGMALQAgAC8ARQBIAHMALQAgAC8AYgBpAGcAbwBiAGoAIAAvAHUAdABmAC0AOAAgAC8A
dgBhAGwAaQBkAGEAdABlAC0AYwBoAGEAcgBzAGUAdAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwA
QQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBHAEwARQBTAHYAMgBcAGUAbgB0AHIAeQBfAHAAbwBp
AG4AdABzAF8AZQBnAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABsAGkAYgBHAEwARQBTAHYAMgBcAGUAbgB0AHIAeQBfAHAAbwBpAG4AdABzAF8A
ZQBnAGwAXwBlAHgAdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUA
XABzAHIAYwBcAGwAaQBiAEcATABFAFMAdgAyAFwAZQBuAHQAcgB5AF8AcABvAGkAbgB0AHMAXwBn
AGwAZQBzAF8AMQBfADAAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIARwBMAEUAUwB2ADIAXABlAG4AdAByAHkA
XwBwAG8AaQBuAHQAcwBfAGcAbABlAHMAXwAyAF8AMABfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBHAEwARQBT
AHYAMgBcAGUAbgB0AHIAeQBfAHAAbwBpAG4AdABzAF8AZwBsAGUAcwBfADMAXwAwAF8AYQB1AHQA
bwBnAGUAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIA
YwBcAGwAaQBiAEcATABFAFMAdgAyAFwAZQBuAHQAcgB5AF8AcABvAGkAbgB0AHMAXwBnAGwAZQBz
AF8AMwBfADEAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAHMAcgBjAFwAbABpAGIARwBMAEUAUwB2ADIAXABlAG4AdAByAHkAXwBwAG8A
aQBuAHQAcwBfAGcAbABlAHMAXwAzAF8AMgBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBHAEwARQBTAHYAMgBc
AGUAbgB0AHIAeQBfAHAAbwBpAG4AdABzAF8AZwBsAGUAcwBfAGUAeAB0AF8AYQB1AHQAbwBnAGUA
bgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwA
aQBiAEcATABFAFMAdgAyAFwAZwBsAG8AYgBhAGwAXwBzAHQAYQB0AGUALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBHAEwARQBTAHYAMgBc
AGwAaQBiAEcATABFAFMAdgAyAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEcATABFAFMAdgAyAFwAcAByAG8A
YwBfAHQAYQBiAGwAZQBfAGUAZwBsAF8AYQB1AHQAbwBnAGUAbgAuAGMAcABwAA0ACgAgACAAZQBu
AHQAcgB5AF8AcABvAGkAbgB0AHMAXwBlAGcAbAAuAGMAcABwAA0ACgAgACAAZQBuAHQAcgB5AF8A
cABvAGkAbgB0AHMAXwBlAGcAbABfAGUAeAB0AC4AYwBwAHAADQAKACAAIABlAG4AdAByAHkAXwBw
AG8AaQBuAHQAcwBfAGcAbABlAHMAXwAxAF8AMABfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAANAAoA
IAAgAGUAbgB0AHIAeQBfAHAAbwBpAG4AdABzAF8AZwBsAGUAcwBfADIAXwAwAF8AYQB1AHQAbwBn
AGUAbgAuAGMAcABwAA0ACgAgACAAZQBuAHQAcgB5AF8AcABvAGkAbgB0AHMAXwBnAGwAZQBzAF8A
MwBfADAAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAADQAKACAAIABlAG4AdAByAHkAXwBwAG8AaQBu
AHQAcwBfAGcAbABlAHMAXwAzAF8AMQBfAGEAdQB0AG8AZwBlAG4ALgBjAHAAcAANAAoAIAAgAGUA
bgB0AHIAeQBfAHAAbwBpAG4AdABzAF8AZwBsAGUAcwBfADMAXwAyAF8AYQB1AHQAbwBnAGUAbgAu
AGMAcABwAA0ACgAgACAAZQBuAHQAcgB5AF8AcABvAGkAbgB0AHMAXwBnAGwAZQBzAF8AZQB4AHQA
XwBhAHUAdABvAGcAZQBuAC4AYwBwAHAADQAKACAAIABnAGwAbwBiAGEAbABfAHMAdABhAHQAZQAu
AGMAcABwAA0ACgAgACAAbABpAGIARwBMAEUAUwB2ADIAXwBhAHUAdABvAGcAZQBuAC4AYwBwAHAA
DQAKACAAIABwAHIAbwBjAF8AdABhAGIAbABlAF8AZQBnAGwAXwBhAHUAdABvAGcAZQBuAC4AYwBw
AHAADQAKAFIAZQBzAG8AdQByAGMAZQBDAG8AbQBwAGkAbABlADoADQAKACAAIABDADoAXABQAHIA
bwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgANgApAFwAVwBpAG4AZABvAHcAcwAgAEsAaQB0
AHMAXAAxADAAXABiAGkAbgBcADEAMAAuADAALgAxADgAMwA2ADIALgAwAFwAeAA2ADQAXAByAGMA
LgBlAHgAZQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAgAF8AVwBJAE4ARABPAFcAUwAgAC8ARAAg
AE4ARABFAEIAVQBHACAALwBEACAATABJAEIARwBMAEUAUwBWADIAXwBJAE0AUABMAEUATQBFAE4A
VABBAFQASQBPAE4AIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBXAEkAVABIAF8AQwBNAEEASwBF
AD0AMQAgAC8ARAAgAEgAQQBWAEUAXwBDAE8ATgBGAEkARwBfAEgAPQAxACAALwBEACAATgBPAE0A
SQBOAE0AQQBYACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAg
AC8ARAAgAF8ASABBAFMAXwBFAFgAQwBFAFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBSAFQA
XwBTAEUAQwBVAFIARQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQAXwBT
AEUAQwBVAFIARQBfAEMAUABQAF8ATwBWAEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBEAF8A
TgBBAE0ARQBTAD0AMQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQAIABX
AFQARgBfAFAATABBAFQARgBPAFIATQBfAFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAE4A
TwBDAFIAWQBQAFQAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEUAUwBTAEwAIAAv
AEQAIABHAEwAXwBBAFAASQBDAEEATABMAD0AIAAvAEQAIABHAEwAXwBBAFAASQA9ACAALwBEACAA
QQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBIAEwAUwBMACAALwBEACAAQQBOAEcATABFAF8ARQBO
AEEAQgBMAEUAXwBEADMARAAxADEAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEQA
MwBEADkAIAAvAEQAIAAiAEMATQBBAEsARQBfAEkATgBUAEQASQBSAD0AXABcAFwAIgBSAGUAbABl
AGEAcwBlAFwAXABcACIAIgAgAC8ARAAgAEcATABFAFMAdgAyAF8ARQBYAFAATwBSAFQAUwAgAC8A
RAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAGwAIgAwAHgAMAA0
ADAAOQAiACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1
AGQAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBk
AGUAXABLAEgAUgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHMAcgBj
ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABjAG8AbQBt
AG8AbgBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAGIAYQBzAGUAIAAvAEkARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXAB0AGgAaQByAGQAXwBwAGEAcgB0AHkAXAB6AGwAaQBiAFwA
ZwBvAG8AZwBsAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEA
cgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMA
XAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAG4AbwBsAG8AZwBvACAALwBmAG8AIgBHAEwARQBT
AHYAMgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGwAaQBiAEcATABFAFMAdgAyAC4AcgBlAHMA
IgAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAXABsAGkAYgBHAEwA
RQBTAHYAMgBcAGwAaQBiAEcATABFAFMAdgAyAC4AcgBjACAADQAKAEwAaQBuAGsAOgANAAoAIAAg
AEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8A
cwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQBy
AHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAyADgA
OAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAGwAaQBuAGsALgBlAHgAZQAg
AC8ARQBSAFIATwBSAFIARQBQAE8AUgBUADoAUQBVAEUAVQBFACAALwBPAFUAVAA6ACIARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABiAGkAbgA2ADQAXABsAGkAYgBHAEwARQBTAHYAMgAuAGQAbABsACIAIAAvAEkATgBDAFIA
RQBNAEUATgBUAEEATAA6AE4ATwAgAC8ATgBPAEwATwBHAE8AIAAvAEwASQBCAFAAQQBUAEgAOgBG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEA
bQBkADYANAAvAGwAaQBiADYANAAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMA
LwB3AGkAbgAvAGwAaQBiADYANAAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMA
LwB3AGkAbgAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBzAGUAIAAvAEwASQBCAFAAQQBUAEgAOgBG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEA
bQBkADYANAAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBzAGUAIAAvAEwASQBCAFAAQQBUAEgAOgBG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEA
bQBkADYANAAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBzAGUALwBSAGUAbABlAGEAcwBlACAALgAu
AFwALgAuAFwALgAuAFwAbABpAGIANgA0AFwAQQBOAEcATABFAC4AbABpAGIAIABkAHgAZwB1AGkA
ZAAuAGwAaQBiACAAZAB4AGcAaQAuAGwAaQBiACAALgAuAFwALgAuAFwALgAuAFwALgAuAFwAVwBl
AGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGwAaQBiADYANABcAHoAbABpAGIA
LgBsAGkAYgAgAGQAMwBkADkALgBsAGkAYgAgAGsAZQByAG4AZQBsADMAMgAuAGwAaQBiACAAdQBz
AGUAcgAzADIALgBsAGkAYgAgAGcAZABpADMAMgAuAGwAaQBiACAAdwBpAG4AcwBwAG8AbwBsAC4A
bABpAGIAIABzAGgAZQBsAGwAMwAyAC4AbABpAGIAIABvAGwAZQAzADIALgBsAGkAYgAgAG8AbABl
AGEAdQB0ADMAMgAuAGwAaQBiACAAdQB1AGkAZAAuAGwAaQBiACAAYwBvAG0AZABsAGcAMwAyAC4A
bABpAGIAIABhAGQAdgBhAHAAaQAzADIALgBsAGkAYgAgAC8ARABFAEYAOgAiAEYAOgAvAGcAaQB0
AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBUAGgAaQByAGQA
UABhAHIAdAB5AC8AQQBOAEcATABFAC8AcwByAGMALwBsAGkAYgBHAEwARQBTAHYAMgAvAGwAaQBi
AEcATABFAFMAdgAyAF8AYQB1AHQAbwBnAGUAbgAuAGQAZQBmACIAIAAvAE0AQQBOAEkARgBFAFMA
VAAgAC8ATQBBAE4ASQBGAEUAUwBUAFUAQQBDADoAIgBsAGUAdgBlAGwAPQAnAGEAcwBJAG4AdgBv
AGsAZQByACcAIAB1AGkAQQBjAGMAZQBzAHMAPQAnAGYAYQBsAHMAZQAnACIAIAAvAG0AYQBuAGkA
ZgBlAHMAdAA6AGUAbQBiAGUAZAAgAC8ARABFAEIAVQBHACAALwBQAEQAQgA6ACIARgA6AC8AZwBp
AHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
LwBiAGkAbgA2ADQALwBsAGkAYgBHAEwARQBTAHYAMgAuAHAAZABiACIAIAAvAFMAVQBCAFMAWQBT
AFQARQBNADoAQwBPAE4AUwBPAEwARQAgAC8ATwBQAFQAOgBSAEUARgAgAC8ATwBQAFQAOgBJAEMA
RgAgAC8AVABMAEIASQBEADoAMQAgAC8ARABZAE4AQQBNAEkAQwBCAEEAUwBFACAALwBOAFgAQwBP
AE0AUABBAFQAIAAvAEkATQBQAEwASQBCADoAIgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQA
LwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAGwAaQBi
AEcATABFAFMAdgAyAC4AbABpAGIAIgAgAC8ATQBBAEMASABJAE4ARQA6AFgANgA0ACAAIAAvAG0A
YQBjAGgAaQBuAGUAOgB4ADYANAAgAC8ARABMAEwAIABHAEwARQBTAHYAMgAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAGwAaQBiAEcATABFAFMAdgAyAC4AcgBlAHMADQAKACAAIABHAEwARQBTAHYA
MgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGUAbgB0AHIAeQBfAHAAbwBpAG4AdABzAF8AZQBn
AGwALgBvAGIAagANAAoAIAAgAEcATABFAFMAdgAyAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
ZQBuAHQAcgB5AF8AcABvAGkAbgB0AHMAXwBlAGcAbABfAGUAeAB0AC4AbwBiAGoADQAKACAAIABH
AEwARQBTAHYAMgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGUAbgB0AHIAeQBfAHAAbwBpAG4A
dABzAF8AZwBsAGUAcwBfADEAXwAwAF8AYQB1AHQAbwBnAGUAbgAuAG8AYgBqAA0ACgAgACAARwBM
AEUAUwB2ADIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABlAG4AdAByAHkAXwBwAG8AaQBuAHQA
cwBfAGcAbABlAHMAXwAyAF8AMABfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagANAAoAIAAgAEcATABF
AFMAdgAyAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZQBuAHQAcgB5AF8AcABvAGkAbgB0AHMA
XwBnAGwAZQBzAF8AMwBfADAAXwBhAHUAdABvAGcAZQBuAC4AbwBiAGoADQAKACAAIABHAEwARQBT
AHYAMgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGUAbgB0AHIAeQBfAHAAbwBpAG4AdABzAF8A
ZwBsAGUAcwBfADMAXwAxAF8AYQB1AHQAbwBnAGUAbgAuAG8AYgBqAA0ACgAgACAARwBMAEUAUwB2
ADIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABlAG4AdAByAHkAXwBwAG8AaQBuAHQAcwBfAGcA
bABlAHMAXwAzAF8AMgBfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagANAAoAIAAgAEcATABFAFMAdgAy
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZQBuAHQAcgB5AF8AcABvAGkAbgB0AHMAXwBnAGwA
ZQBzAF8AZQB4AHQAXwBhAHUAdABvAGcAZQBuAC4AbwBiAGoADQAKACAAIABHAEwARQBTAHYAMgAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGcAbABvAGIAYQBsAF8AcwB0AGEAdABlAC4AbwBiAGoA
DQAKACAAIABHAEwARQBTAHYAMgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGwAaQBiAEcATABF
AFMAdgAyAF8AYQB1AHQAbwBnAGUAbgAuAG8AYgBqAA0ACgAgACAARwBMAEUAUwB2ADIALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABwAHIAbwBjAF8AdABhAGIAbABlAF8AZQBnAGwAXwBhAHUAdABv
AGcAZQBuAC4AbwBiAGoADQAKACAAIAAgACAAIABDAHIAZQBhAHQAaQBuAGcAIABsAGkAYgByAGEA
cgB5ACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBs
AGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBsAGkAYgBHAEwARQBTAHYAMgAuAGwAaQBiACAA
YQBuAGQAIABvAGIAagBlAGMAdAAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBi
AGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0AC8AbABpAGIARwBMAEUA
UwB2ADIALgBlAHgAcAANAAoATABJAE4ASwAgADoAIAB3AGEAcgBuAGkAbgBnACAATABOAEsANAAy
ADEANwA6ACAAcwB5AG0AYgBvAGwAIAAnAEEATgBHAEwARQBHAGUAdABEAGkAcwBwAGwAYQB5AFAA
bABhAHQAZgBvAHIAbQAnACAAZABlAGYAaQBuAGUAZAAgAGkAbgAgACcAQQBOAEcATABFAC4AbABp
AGIAKABQAGwAYQB0AGYAbwByAG0ALgBvAGIAagApACcAIABpAHMAIABpAG0AcABvAHIAdABlAGQA
IABiAHkAIAAnAHAAcgBvAGMAXwB0AGEAYgBsAGUAXwBlAGcAbABfAGEAdQB0AG8AZwBlAG4ALgBv
AGIAagAnACAAaQBuACAAZgB1AG4AYwB0AGkAbwBuACAAJwAiAHYAbwBpAGQAIABfAF8AYwBkAGUA
YwBsACAAZQBnAGwAOgA6AGAAZAB5AG4AYQBtAGkAYwAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAcgAg
AGYAbwByACAAJwBnAF8AcAByAG8AYwBUAGEAYgBsAGUAJwAnACgAdgBvAGkAZAApACIAIAAoAD8A
PwBfAF8ARQBnAF8AcAByAG8AYwBUAGEAYgBsAGUAQABlAGcAbABAAEAAWQBBAFgAWABaACkAJwAg
AFsARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQA
XwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXABHAEwARQBTAHYAMgAuAHYAYwB4AHAAcgBvAGoAXQANAAoATABJAE4ASwAgADoAIAB3AGEA
cgBuAGkAbgBnACAATABOAEsANAAyADEANwA6ACAAcwB5AG0AYgBvAGwAIAAnAEEATgBHAEwARQBS
AGUAcwBlAHQARABpAHMAcABsAGEAeQBQAGwAYQB0AGYAbwByAG0AJwAgAGQAZQBmAGkAbgBlAGQA
IABpAG4AIAAnAEEATgBHAEwARQAuAGwAaQBiACgAUABsAGEAdABmAG8AcgBtAC4AbwBiAGoAKQAn
ACAAaQBzACAAaQBtAHAAbwByAHQAZQBkACAAYgB5ACAAJwBwAHIAbwBjAF8AdABhAGIAbABlAF8A
ZQBnAGwAXwBhAHUAdABvAGcAZQBuAC4AbwBiAGoAJwAgAGkAbgAgAGYAdQBuAGMAdABpAG8AbgAg
ACcAIgB2AG8AaQBkACAAXwBfAGMAZABlAGMAbAAgAGUAZwBsADoAOgBgAGQAeQBuAGEAbQBpAGMA
IABpAG4AaQB0AGkAYQBsAGkAegBlAHIAIABmAG8AcgAgACcAZwBfAHAAcgBvAGMAVABhAGIAbABl
ACcAJwAoAHYAbwBpAGQAKQAiACAAKAA/AD8AXwBfAEUAZwBfAHAAcgBvAGMAVABhAGIAbABlAEAA
ZQBnAGwAQABAAFkAQQBYAFgAWgApACcAIABbAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgA
aQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwARwBMAEUAUwB2ADIALgB2AGMAeABwAHIAbwBq
AF0ADQAKACAAIABHAEwARQBTAHYAMgAuAHYAYwB4AHAAcgBvAGoAIAAtAD4AIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABc
AGIAaQBuADYANABcAGwAaQBiAEcATABFAFMAdgAyAC4AZABsAGwADQAKAEYAaQBuAGEAbABpAHoA
ZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBs
AGUAIAAiAEcATABFAFMAdgAyAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARwBMAEUAUwB2ADIA
LgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIALgANAAoAIAAg
AFQAbwB1AGMAaABpAG4AZwAgACIARwBMAEUAUwB2ADIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABHAEwARQBTAHYAMgAuAHQAbABvAGcAXABHAEwARQBTAHYAMgAuAGwAYQBzAHQAYgB1AGkAbABk
AHMAdABhAHQAZQAiAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUA
YwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAEcATABFAFMAdgAyAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABk
ACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAA
UAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEA
cgB0AHkAXABBAE4ARwBMAEUAXABHAEwARQBTAHYAMgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABh
AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoA
UAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEA
cgB0AHkAXABBAE4ARwBMAEUAXABFAEcATAAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBv
AGoAIgAgACgAMQA0ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwARQBHAEwALgB2AGMA
eABwAHIAbwBqACIAIAAoADEANwApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBs
AGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAA
IABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIARQBHAEwALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoA
DQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIARQBHAEwALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXABFAEcATAAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQA
aQBhAGwAaQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBu
AGcAIAAiAEUARwBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARQBHAEwALgB0AGwAbwBnAFwA
dQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBB
AGwAdwBhAHkAcwBDAHIAZQBhAHQAZQAiACAAdwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0A
CgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBz
AHQAbwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsA
aQB0AC8AUwBvAHUAcgBjAGUALwBUAGgAaQByAGQAUABhAHIAdAB5AC8AQQBOAEcATABFAC8AQwBN
AGEAawBlAEwAaQBzAHQAcwAuAHQAeAB0AA0ACgBDAGwAQwBvAG0AcABpAGwAZQA6AA0ACgAgACAA
QwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0AaQBjAHIAbwBz
AG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABFAG4AdABlAHIA
cAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAuADIANgAuADIAOAA4
ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwAQwBMAC4AZQB4AGUAIAAvAGMA
IAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQBcAEsA
SABSACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwAcwByAGMAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGMAbwBtAG0AbwBuAFwA
dABoAGkAcgBkAF8AcABhAHIAdAB5AFwAYgBhAHMAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQA
eQBcAEEATgBHAEwARQBcAHQAaABpAHIAZABfAHAAYQByAHQAeQBcAHoAbABpAGIAXABnAG8AbwBn
AGwAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBc
AEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBu
AFwAaQBuAGMAbAB1AGQAZQAgAC8AWgBpACAALwBuAG8AbABvAGcAbwAgAC8AVwA0ACAALwBXAFgA
LQAgAC8AZABpAGEAZwBuAG8AcwB0AGkAYwBzADoAYwBvAGwAdQBtAG4AIAAvAE0AUAAgAC8ATwAy
ACAALwBPAGIAMgAgAC8ATwB5AC0AIAAvAEQAIABXAEkATgAzADIAIAAvAEQAIABfAFcASQBOAEQA
TwBXAFMAIAAvAEQAIABOAEQARQBCAFUARwAgAC8ARAAgAEcATABfAEcATABFAFMAXwBQAFIATwBU
AE8AVABZAFAARQBTAD0AMQAgAC8ARAAgAEUARwBMAF8ARQBHAEwAXwBQAFIATwBUAE8AVABZAFAA
RQBTAD0AMQAgAC8ARAAgAEcATABfAEcATABFAFgAVABfAFAAUgBPAFQATwBUAFkAUABFAFMAIAAv
AEQAIABFAEcATABfAEUARwBMAEUAWABUAF8AUABSAE8AVABPAFQAWQBQAEUAUwAgAC8ARAAgAEUA
RwBMAEEAUABJAD0AIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBXAEkAVABIAF8AQwBNAEEASwBF
AD0AMQAgAC8ARAAgAEgAQQBWAEUAXwBDAE8ATgBGAEkARwBfAEgAPQAxACAALwBEACAATgBPAE0A
SQBOAE0AQQBYACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAg
AC8ARAAgAF8ASABBAFMAXwBFAFgAQwBFAFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBSAFQA
XwBTAEUAQwBVAFIARQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQAXwBT
AEUAQwBVAFIARQBfAEMAUABQAF8ATwBWAEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBEAF8A
TgBBAE0ARQBTAD0AMQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQAIABX
AFQARgBfAFAATABBAFQARgBPAFIATQBfAFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAE4A
TwBDAFIAWQBQAFQAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEUAUwBTAEwAIAAv
AEQAIABHAEwAXwBBAFAASQBDAEEATABMAD0AIAAvAEQAIABHAEwAXwBBAFAASQA9ACAALwBEACAA
QQBOAEcATABFAF8ARQBOAEEAQgBMAEUAXwBIAEwAUwBMACAALwBEACAAQQBOAEcATABFAF8ARQBO
AEEAQgBMAEUAXwBEADMARAAxADEAIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEQA
MwBEADkAIAAvAEQAIAAiAEMATQBBAEsARQBfAEkATgBUAEQASQBSAD0AXAAiAFIAZQBsAGUAYQBz
AGUAXAAiACIAIAAvAEQAIABFAEcATABfAEUAWABQAE8AUgBUAFMAIAAvAEQAIABfAFcASQBOAEQA
TABMACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBt
AC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgA
YwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBw
AGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcA
IAAvAEYAbwAiAEUARwBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAXAAiACAALwBGAGQAIgBF
AEcATAAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAHYAYwAxADQAMgAuAHAAZABiACIAIAAvAEcA
ZAAgAC8AVABQACAALwB3AGQANAAwADEAOAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5
ACAALwB3AGQANAAxADAAMAAgAC8AdwBkADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQA
NAAxADQANgAgAC8AdwBkADQAMQA4ADAAIAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAg
AC8AdwBkADQAMgAwADYAIAAvAHcAZAA0ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQA
MgA2ADcAIAAvAHcAZAA0ADIANwA1ACAALwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAv
AHcAZAA0ADMAMAA1ACAALwB3AGQANAAzADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMA
NQA1ACAALwB3AGQANAAzADgAOQAgAC8AdwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3
AGQANAA0ADUANwAgAC8AdwBkADQANAA1ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgA
MQAgAC8AdwBkADQANQAwADMAIAAvAHcAZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBk
ADQANQAxADIAIAAvAHcAZAA0ADUAMwAwACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEA
IAAvAHcAZAA0ADYANAA2ACAALwB3AGQANAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0
ADcAMgAyACAALwB3AGQANAA4ADAAMAAgAC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAA
LwB3AGQANAA5ADUAMgAgAC8AdwBkADQAOQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAw
ADMAMQAgAC8AdwBkADYAMgAxADEAIAAvAHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8A
dwBkADYAMwA4ADcAIAAvAHcAZAA0ADAAOQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgBy
AG8AcgBSAGUAcABvAHIAdAA6AHEAdQBlAHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAA
LwBFAEgAYQAtACAALwBFAEgAYwAtACAALwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0
AGYALQA4ACAALwB2AGEAbABpAGQAYQB0AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEUARwBMAFwAbABpAGIARQBHAEwA
LgBjAHAAcAANAAoAIAAgAGwAaQBiAEUARwBMAC4AYwBwAHAADQAKAFIAZQBzAG8AdQByAGMAZQBD
AG8AbQBwAGkAbABlADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAA
KAB4ADgANgApAFwAVwBpAG4AZABvAHcAcwAgAEsAaQB0AHMAXAAxADAAXABiAGkAbgBcADEAMAAu
ADAALgAxADgAMwA2ADIALgAwAFwAeAA2ADQAXAByAGMALgBlAHgAZQAgAC8ARAAgAFcASQBOADMA
MgAgAC8ARAAgAF8AVwBJAE4ARABPAFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAARwBM
AF8ARwBMAEUAUwBfAFAAUgBPAFQATwBUAFkAUABFAFMAPQAxACAALwBEACAARQBHAEwAXwBFAEcA
TABfAFAAUgBPAFQATwBUAFkAUABFAFMAPQAxACAALwBEACAARwBMAF8ARwBMAEUAWABUAF8AUABS
AE8AVABPAFQAWQBQAEUAUwAgAC8ARAAgAEUARwBMAF8ARQBHAEwARQBYAFQAXwBQAFIATwBUAE8A
VABZAFAARQBTACAALwBEACAARQBHAEwAQQBQAEkAPQAgAC8ARAAgAEIAVQBJAEwARABJAE4ARwBf
AFcASQBUAEgAXwBDAE0AQQBLAEUAPQAxACAALwBEACAASABBAFYARQBfAEMATwBOAEYASQBHAF8A
SAA9ADEAIAAvAEQAIABOAE8ATQBJAE4ATQBBAFgAIAAvAEQAIABVAE4ASQBDAE8ARABFACAALwBE
ACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAXwBIAEEAUwBfAEUAWABDAEUAUABUAEkATwBOAFMA
PQAwACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBFAF8ATgBPAF8AVwBBAFIATgBJAE4ARwBT
ACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBFAF8AQwBQAFAAXwBPAFYARQBSAEwATwBBAEQA
XwBTAFQAQQBOAEQAQQBSAEQAXwBOAEEATQBFAFMAPQAxACAALwBEACAAXwBXAEkATgBTAE8AQwBL
AEEAUABJAF8APQAgAC8ARAAgAFcAVABGAF8AUABMAEEAVABGAE8AUgBNAF8AVwBJAE4AXwBDAEEA
SQBSAE8APQAxACAALwBEACAATgBPAEMAUgBZAFAAVAAgAC8ARAAgAEEATgBHAEwARQBfAEUATgBB
AEIATABFAF8ARQBTAFMATAAgAC8ARAAgAEcATABfAEEAUABJAEMAQQBMAEwAPQAgAC8ARAAgAEcA
TABfAEEAUABJAD0AIAAvAEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEgATABTAEwAIAAv
AEQAIABBAE4ARwBMAEUAXwBFAE4AQQBCAEwARQBfAEQAMwBEADEAMQAgAC8ARAAgAEEATgBHAEwA
RQBfAEUATgBBAEIATABFAF8ARAAzAEQAOQAgAC8ARAAgACIAQwBNAEEASwBFAF8ASQBOAFQARABJ
AFIAPQBcAFwAXAAiAFIAZQBsAGUAYQBzAGUAXABcAFwAIgAiACAALwBEACAARQBHAEwAXwBFAFgA
UABPAFIAVABTACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAg
AC8AbAAiADAAeAAwADQAMAA5ACIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBM
AEUAXABpAG4AYwBsAHUAZABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAaQBuAGMAbAB1AGQAZQBcAEsASABSACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBO
AEcATABFAFwAcwByAGMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABz
AHIAYwBcAGMAbwBtAG0AbwBuAFwAdABoAGkAcgBkAF8AcABhAHIAdAB5AFwAYgBhAHMAZQAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAHQAaABpAHIAZABfAHAAYQByAHQA
eQBcAHoAbABpAGIAXABnAG8AbwBnAGwAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAIAAvAEkARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABXAGUAYgBLAGkAdABMAGkA
YgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAaQBuAGMAbAB1AGQAZQAgAC8AbgBvAGwAbwBnAG8AIAAv
AGYAbwAiAEUARwBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAbABpAGIARQBHAEwALgByAGUA
cwAiACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEUA
RwBMAFwAbABpAGIARQBHAEwALgByAGMAIAANAAoATABpAG4AawA6AA0ACgAgACAAQwA6AFwAUABy
AG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0AaQBjAHIAbwBzAG8AZgB0ACAA
VgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABFAG4AdABlAHIAcAByAGkAcwBl
AFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAuADIANgAuADIAOAA4ADAAMQBcAGIA
aQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwAbABpAG4AawAuAGUAeABlACAALwBFAFIAUgBP
AFIAUgBFAFAATwBSAFQAOgBRAFUARQBVAEUAIAAvAE8AVQBUADoAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAGIAaQBu
ADYANABcAGwAaQBiAEUARwBMAC4AZABsAGwAIgAgAC8ASQBOAEMAUgBFAE0ARQBOAFQAQQBMADoA
TgBPACAALwBOAE8ATABPAEcATwAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0ACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBSAGUAbABlAGEA
cwBlACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIA
NgA0ACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIA
NgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0AC8AUgBlAGwAZQBhAHMAZQAvAFIAZQBsAGUAYQBzAGUAIAAuAC4AXAAuAC4AXAAuAC4AXABs
AGkAYgA2ADQAXABsAGkAYgBHAEwARQBTAHYAMgAuAGwAaQBiACAALgAuAFwALgAuAFwALgAuAFwA
bABpAGIANgA0AFwAQQBOAEcATABFAC4AbABpAGIAIABkAHgAZwB1AGkAZAAuAGwAaQBiACAAZAB4
AGcAaQAuAGwAaQBiACAALgAuAFwALgAuAFwALgAuAFwALgAuAFwAVwBlAGIASwBpAHQATABpAGIA
cgBhAHIAaQBlAHMAXAB3AGkAbgBcAGwAaQBiADYANABcAHoAbABpAGIALgBsAGkAYgAgAGQAMwBk
ADkALgBsAGkAYgAgAGsAZQByAG4AZQBsADMAMgAuAGwAaQBiACAAdQBzAGUAcgAzADIALgBsAGkA
YgAgAGcAZABpADMAMgAuAGwAaQBiACAAdwBpAG4AcwBwAG8AbwBsAC4AbABpAGIAIABzAGgAZQBs
AGwAMwAyAC4AbABpAGIAIABvAGwAZQAzADIALgBsAGkAYgAgAG8AbABlAGEAdQB0ADMAMgAuAGwA
aQBiACAAdQB1AGkAZAAuAGwAaQBiACAAYwBvAG0AZABsAGcAMwAyAC4AbABpAGIAIABhAGQAdgBh
AHAAaQAzADIALgBsAGkAYgAgAC8ARABFAEYAOgAiAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkA
dAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBUAGgAaQByAGQAUABhAHIAdAB5AC8AQQBO
AEcATABFAC8AcwByAGMALwBsAGkAYgBFAEcATAAvAGwAaQBiAEUARwBMAC4AZABlAGYAIgAgAC8A
TQBBAE4ASQBGAEUAUwBUACAALwBNAEEATgBJAEYARQBTAFQAVQBBAEMAOgAiAGwAZQB2AGUAbAA9
ACcAYQBzAEkAbgB2AG8AawBlAHIAJwAgAHUAaQBBAGMAYwBlAHMAcwA9ACcAZgBhAGwAcwBlACcA
IgAgAC8AbQBhAG4AaQBmAGUAcwB0ADoAZQBtAGIAZQBkACAALwBEAEUAQgBVAEcAIAAvAFAARABC
ADoAIgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwA
ZABfAGEAbQBkADYANAAvAGIAaQBuADYANAAvAGwAaQBiAEUARwBMAC4AcABkAGIAIgAgAC8AUwBV
AEIAUwBZAFMAVABFAE0AOgBDAE8ATgBTAE8ATABFACAALwBPAFAAVAA6AFIARQBGACAALwBPAFAA
VAA6AEkAQwBGACAALwBUAEwAQgBJAEQAOgAxACAALwBEAFkATgBBAE0ASQBDAEIAQQBTAEUAIAAv
AE4AWABDAE8ATQBQAEEAVAAgAC8ASQBNAFAATABJAEIAOgAiAEYAOgAvAGcAaQB0AFAALwBXAGUA
YgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0
AC8AbABpAGIARQBHAEwALgBsAGkAYgAiACAALwBNAEEAQwBIAEkATgBFADoAWAA2ADQAIAAgAC8A
bQBhAGMAaABpAG4AZQA6AHgANgA0ACAALwBEAEwATAAgAEUARwBMAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwAbABpAGIARQBHAEwALgByAGUAcwANAAoAIAAgAEUARwBMAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAbABpAGIARQBHAEwALgBvAGIAagANAAoAIAAgACAAIAAgAEMAcgBlAGEAdABp
AG4AZwAgAGwAaQBiAHIAYQByAHkAIABGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUA
YgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAGwAaQBiAEUARwBM
AC4AbABpAGIAIABhAG4AZAAgAG8AYgBqAGUAYwB0ACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsA
aQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBs
AGkAYgBFAEcATAAuAGUAeABwAA0ACgAgACAARQBHAEwALgB2AGMAeABwAHIAbwBqACAALQA+ACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABiAGkAbgA2ADQAXABsAGkAYgBFAEcATAAuAGQAbABsAA0ACgBGAGkAbgBhAGwA
aQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABEAGUAbABlAHQAaQBuAGcAIABm
AGkAbABlACAAIgBFAEcATAAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEUARwBMAC4AdABsAG8A
ZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiAC4ADQAKACAAIABUAG8AdQBj
AGgAaQBuAGcAIAAiAEUARwBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARQBHAEwALgB0AGwA
bwBnAFwARQBHAEwALgBsAGEAcwB0AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8AbgBl
ACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABFAEcATAAuAHYAYwB4AHAA
cgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoARABv
AG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwARQBHAEwALgB2AGMA
eABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBn
AGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABz
AFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIA
ZQBlAEwAaQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAxADEAKQAg
AGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlAFwARwBMAFMATABBAE4A
RwBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAx
ADgAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQA
KABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAXABHAEwAUwBM
AEEATgBHAEgAZQBhAGQAZQByAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIA
IAAoADEAOAApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIA
YwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBHAEwARQBcAGkAbgBjAGwAdQBkAGUAXABH
AEwAUwBMAEEATgBHAEgAZQBhAGQAZQByAHMALgB2AGMAeABwAHIAbwBqACIAIAAoADEAOQApACAA
bwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQAp
AC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkA
cgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwARwBMAFMATABBAE4ARwBI
AGUAYQBkAGUAcgBzAFwAIgAuAA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwAZAA6AA0A
CgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAHgANgA0AFwAUgBl
AGwAZQBhAHMAZQBcAEcATABTAEwAQQBOAEcASABlAGEAZABlAHIAcwBcAEcATABTAEwAQQBOAEcA
SABlAGEAZABlAHIAcwAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6AGUAQgB1
AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAHgANgA0AFwA
UgBlAGwAZQBhAHMAZQBcAEcATABTAEwAQQBOAEcASABlAGEAZABlAHIAcwBcAEcATABTAEwAQQBO
AEcASABlAGEAZABlAHIAcwAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUA
aQBsAGQAIgAgAGIAZQBjAGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3
AGEAcwAgAHMAcABlAGMAaQBmAGkAZQBkAC4ADQAKAEMAbwBtAHAAdQB0AGUAQwB1AHMAdABvAG0A
QgB1AGkAbABkAE8AdQB0AHAAdQB0ADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBl
AGMAdABvAHIAeQAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAE4ARwBMAEUAXABIAGUAYQBkAGUAcgBzAFwAQQBO
AEcATABFAFwAIgAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgANAAoAIAAgACIAVABoAGUA
IABiAHUAaQBsAGQAIABvAGYAIAAnAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAQwBNAGEAawBlAEYAaQBsAGUAcwBcAGMA
MwBlADIANQA5AGEANAA5ADkANwAxAGEAYQAwAGMAMAA2ADIAOQA5ADYAZQA4AGQAYgAzADcAMABj
ADgAYQBcAEcATABTAEwAQQBOAEcASABlAGEAZABlAHIAcwAuAHIAdQBsAGUAJwAgAGQAZQBwAGUA
bgBkAHMAIABvAG4AIAAnAEYAOgBcAEcASQBUAFAAXABXAEUAQgBLAEkAVABcAFcARQBCAEsASQBU
AFwAQgBVAEkATABEAF8AQQBNAEQANgA0AFwAQQBOAEcATABFAFwASABFAEEARABFAFIAUwBcAEEA
TgBHAEwARQBcAFMASABBAEQARQBSAEwAQQBOAEcALgBIACcAIAB3AGgAaQBjAGgAIABpAHMAIABw
AHIAbwBkAHUAYwBlAGQAIABiAHkAIAB0AGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABp
AHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABpAG4AYwBsAHUAZABlAFwARwBMAFMATABBAE4A
RwBcAFMAaABhAGQAZQByAEwAYQBuAGcALgBoACcALgAgAFQAaABlACAAaQB0AGUAbQBzACAAYwBh
AG4AbgBvAHQAIABiAGUAIABiAHUAaQBsAHQAIABpAG4AIABwAGEAcgBhAGwAbABlAGwALgAiAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAEEATgBH
AEwARQAvAEgAZQBhAGQAZQByAHMALwBBAE4ARwBMAEUALwBTAGgAYQBkAGUAcgBMAGEAbgBnAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBB
AE4ARwBMAEUALwBIAGUAYQBkAGUAcgBzAC8AQQBOAEcATABFAC8AUwBoAGEAZABlAHIAVgBhAHIA
cwAuAGgADQAKACAAIABCAHUAaQBsAGQAaQBuAGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFMAbwB1AHIAYwBlAC8A
VABoAGkAcgBkAFAAYQByAHQAeQAvAEEATgBHAEwARQAvAGkAbgBjAGwAdQBkAGUALwBDAE0AYQBr
AGUATABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEA
dAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUAIAAiAHgANgA0AFwAUgBl
AGwAZQBhAHMAZQBcAEcATABTAEwAQQBOAEcASABlAGEAZABlAHIAcwBcAEcATABTAEwAQQBOAEcA
SABlAGEAZABlAHIAcwAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBs
AGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkAbgBnACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUA
XABHAEwAUwBMAEEATgBHAEgAZQBhAGQAZQByAHMAXABHAEwAUwBMAEEATgBHAEgAZQBhAGQAZQBy
AHMALgB0AGwAbwBnAFwARwBMAFMATABBAE4ARwBIAGUAYQBkAGUAcgBzAC4AbABhAHMAdABiAHUA
aQBsAGQAcwB0AGEAdABlACIALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBv
AGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5
AFwAQQBOAEcATABFAFwAaQBuAGMAbAB1AGQAZQBcAEcATABTAEwAQQBOAEcASABlAGEAZABlAHIA
cwAuAHYAYwB4AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwAp
ACkALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwA
aQBuAGMAbAB1AGQAZQBcAEcATABTAEwAQQBOAEcASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBv
AGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgA
cwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABEAHUA
bQBwAFIAZQBuAGQAZQByAFQAcgBlAGUAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUATABp
AGIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADEAMQApACAAaQBzACAA
YgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMA
cgBpAHAAdABDAG8AcgBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC4AdgBjAHgAcABy
AG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAyADAAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAA
KABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEA
cAByAG8AagAiACAAKAAyADAAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEkAbgBzAHAAZQBj
AHQAbwByAEIAYQBjAGsAZQBuAGQAQwBvAG0AbQBhAG4AZABzAC4AdgBjAHgAcAByAG8AagAuAG0A
ZQB0AGEAcAByAG8AagAiACAAKAAyADEAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1
AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASQBuAHMA
cABlAGMAdABvAHIAQgBhAGMAawBlAG4AZABDAG8AbQBtAGEAbgBkAHMALgB2AGMAeABwAHIAbwBq
AC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADIAMQApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwA
SQBuAHMAcABlAGMAdABvAHIAQgBhAGMAawBlAG4AZABDAG8AbQBtAGEAbgBkAHMALgB2AGMAeABw
AHIAbwBqACIAIAAoADIAMgApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQA
IAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABD
AHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEA
cwBlAFwASQBuAHMAcABlAGMAdABvAHIAQgBhAGMAawBlAG4AZABDAG8AbQBtAGEAbgBkAHMAXAAi
AC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAKACAAIABDAHIAZQBhAHQA
aQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwASQBu
AHMAcABlAGMAdABvAHIAQgBhAGMAawBlAG4AZABDAG8AbQBtAGEAbgBkAHMAXABJAG4AcwBwAGUA
YwB0AG8ALgAzAEUAQgA5ADUAMwBFAEUALgB0AGwAbwBnAFwAIgAuAA0ACgBJAG4AaQB0AGkAYQBs
AGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAA
IgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABJAG4AcwBwAGUAYwB0AG8AcgBCAGEAYwBrAGUAbgBk
AEMAbwBtAG0AYQBuAGQAcwBcAEkAbgBzAHAAZQBjAHQAbwAuADMARQBCADkANQAzAEUARQAuAHQA
bABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAgAGIAZQBjAGEAdQBz
AGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3AGEAcwAgAHMAcABlAGMAaQBmAGkA
ZQBkAC4ADQAKAEMAbwBtAHAAdQB0AGUAQwB1AHMAdABvAG0AQgB1AGkAbABkAE8AdQB0AHAAdQB0
ADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABTAGMAcgBpAHAAdABzAFwAIgAuAA0A
CgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgANAAoAIAAgACIAVABoAGUAIABiAHUAaQBsAGQAIABv
AGYAIAAnAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwAQwBNAGEAawBlAEYAaQBsAGUAcwBcADYAZAA3ADgAMwA2ADkAMABi
AGEANgA1AGUANgAxAGQAYwA1ADAAYQA0ADAAMQBhAGIAZQA5ADEAZgAxADkANwBcAEkAbgBzAHAA
ZQBjAHQAbwByAEIAYQBjAGsAZQBuAGQAQwBvAG0AbQBhAG4AZABzAC4AagBzAC4AcgB1AGwAZQAn
ACAAZABlAHAAZQBuAGQAcwAgAG8AbgAgACcARgA6AFwARwBJAFQAUABcAFcARQBCAEsASQBUAFwA
VwBFAEIASwBJAFQAXABCAFUASQBMAEQAXwBBAE0ARAA2ADQAXABKAEEAVgBBAFMAQwBSAEkAUABU
AEMATwBSAEUAXABEAEUAUgBJAFYARQBEAFMATwBVAFIAQwBFAFMAXABDAE8ATQBCAEkATgBFAEQA
RABPAE0AQQBJAE4AUwAuAEoAUwBPAE4AJwAgAHcAaABpAGMAaAAgAGkAcwAgAHAAcgBvAGQAdQBj
AGUAZAAgAGIAeQAgAHQAaABlACAAYgB1AGkAbABkACAAbwBmACAAJwBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAFMAYwByAGkAcAB0AHMAXABnAGUAbgBlAHIAYQB0AGUA
LQBjAG8AbQBiAGkAbgBlAGQALQBpAG4AcwBwAGUAYwB0AG8AcgAtAGoAcwBvAG4ALgBwAHkAJwAu
ACAAVABoAGUAIABpAHQAZQBtAHMAIABjAGEAbgBuAG8AdAAgAGIAZQAgAGIAdQBpAGwAdAAgAGkA
bgAgAHAAYQByAGEAbABsAGUAbAAuACIADQAKACAAIAAiAFQAaABlACAAYgB1AGkAbABkACAAbwBm
ACAAJwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAEMATQBhAGsAZQBGAGkAbABlAHMAXAA5ADEAOAAyAGMANwBlAGEAMwBi
ADEANAA2ADIANwA2AGIAOAA2AGMAOQBjADIAZQBmADUAMAA3AGQAOAA2ADcAXABJAG4AcwBwAGUA
YwB0AG8AcgBCAGEAYwBrAGUAbgBkAEMAbwBtAG0AYQBuAGQAcwAuAHIAdQBsAGUAJwAgAGQAZQBw
AGUAbgBkAHMAIABvAG4AIAAnAEYAOgBcAEcASQBUAFAAXABXAEUAQgBLAEkAVABcAFcARQBCAEsA
SQBUAFwAQgBVAEkATABEAF8AQQBNAEQANgA0AFwASgBBAFYAQQBTAEMAUgBJAFAAVABDAE8AUgBF
AFwARABFAFIASQBWAEUARABTAE8AVQBSAEMARQBTAFwASQBOAFMAUABFAEMAVABPAFIAXABJAE4A
UwBQAEUAQwBUAE8AUgBCAEEAQwBLAEUATgBEAEMATwBNAE0AQQBOAEQAUwAuAEoAUwAnACAAdwBo
AGkAYwBoACAAaQBzACAAcAByAG8AZAB1AGMAZQBkACAAYgB5ACAAdABoAGUAIABiAHUAaQBsAGQA
IABvAGYAIAAnAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAQwBNAGEAawBlAEYAaQBsAGUAcwBcADYAZAA3ADgAMwA2ADkA
MABiAGEANgA1AGUANgAxAGQAYwA1ADAAYQA0ADAAMQBhAGIAZQA5ADEAZgAxADkANwBcAEkAbgBz
AHAAZQBjAHQAbwByAEIAYQBjAGsAZQBuAGQAQwBvAG0AbQBhAG4AZABzAC4AagBzAC4AcgB1AGwA
ZQAnAC4AIABUAGgAZQAgAGkAdABlAG0AcwAgAGMAYQBuAG4AbwB0ACAAYgBlACAAYgB1AGkAbAB0
ACAAaQBuACAAcABhAHIAYQBsAGwAZQBsAC4AIgANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABz
AC8AZwBlAG4AZQByAGEAdABlAC0AYwBvAG0AYgBpAG4AZQBkAC0AaQBuAHMAcABlAGMAdABvAHIA
LQBqAHMAbwBuAC4AcAB5AA0ACgAgACAAQgB1AGkAbABkAGkAbgBnACAAQwB1AHMAdABvAG0AIABS
AHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBTAG8A
dQByAGMAZQAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEMATQBhAGsAZQBMAGkAcwB0
AHMALgB0AHgAdAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBD
AG8AbQBiAGkAbgBlAGQARABvAG0AYQBpAG4AcwAuAGoAcwBvAG4ADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABl
AHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AaQBuAHMAcABlAGMAdABvAHIALwBJAG4AcwBwAGUA
YwB0AG8AcgBCAGEAYwBrAGUAbgBkAEMAbwBtAG0AYQBuAGQAcwAuAGoAcwAsACAALgAuAC8ALgAu
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAC8AaQBuAHMAcABlAGMAdABvAHIALwBJAG4AcwBwAGUAYwB0AG8AcgBCAGEAYwBrAGUAbgBk
AEMAbwBtAG0AYQBuAGQAcwAuAGoAcwAuAGkAbgANAAoARgBpAG4AYQBsAGkAegBlAEIAdQBpAGwA
ZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBnACAAZgBpAGwAZQAgACIAeAA2
ADQAXABSAGUAbABlAGEAcwBlAFwASQBuAHMAcABlAGMAdABvAHIAQgBhAGMAawBlAG4AZABDAG8A
bQBtAGEAbgBkAHMAXABJAG4AcwBwAGUAYwB0AG8ALgAzAEUAQgA5ADUAMwBFAEUALgB0AGwAbwBn
AFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIALgANAAoAIAAgAFQAbwB1AGMA
aABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwASQBuAHMAcABlAGMAdABvAHIAQgBh
AGMAawBlAG4AZABDAG8AbQBtAGEAbgBkAHMAXABJAG4AcwBwAGUAYwB0AG8ALgAzAEUAQgA5ADUA
MwBFAEUALgB0AGwAbwBnAFwASQBuAHMAcABlAGMAdABvAHIAQgBhAGMAawBlAG4AZABDAG8AbQBt
AGEAbgBkAHMALgBsAGEAcwB0AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8AbgBlACAA
QgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMA
ZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEkAbgBzAHAAZQBjAHQAbwByAEIAYQBj
AGsAZQBuAGQAQwBvAG0AbQBhAG4AZABzAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkA
bABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBn
ACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEkAbgBzAHAAZQBjAHQAbwByAEIAYQBjAGsAZQBuAGQAQwBvAG0A
bQBhAG4AZABzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1
AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAi
ACAAKAAyADAAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQBy
AGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBTAGgAYQByAGUAZABTAGMAcgBpAHAAdABzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0
AGEAcAByAG8AagAiACAAKAAyADMAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkA
bABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFMAaABhAHIAZQBkAFMAYwByAGkAcAB0AHMALgB2AGMAeABwAHIA
bwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADIAMwApACAAaQBzACAAYgB1AGkAbABkAGkAbgBn
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFMAaABhAHIAZQBkAFMAYwByAGkAcAB0AHMA
LgB2AGMAeABwAHIAbwBqACIAIAAoADIANAApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBi
AHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoA
DQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABS
AGUAbABlAGEAcwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFMAaABhAHIAZQBkAFMA
YwByAGkAcAB0AHMAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAK
ACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUA
bABlAGEAcwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFMAaABhAHIAZQBkAFMAYwBy
AGkAcAB0AHMAXABKAGEAdgBhAFMAYwByAGkALgA4AEQAQgAxADIAMABCADIALgB0AGwAbwBnAFwA
IgAuAA0ACgBJAG4AaQB0AGkAYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAg
ACAAQwByAGUAYQB0AGkAbgBnACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUAUwBoAGEAcgBlAGQAUwBjAHIAaQBwAHQAcwBcAEoAYQB2AGEAUwBj
AHIAaQAuADgARABCADEAMgAwAEIAMgAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUA
bABiAHUAaQBsAGQAIgAgAGIAZQBjAGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABl
ACIAIAB3AGEAcwAgAHMAcABlAGMAaQBmAGkAZQBkAC4ADQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwA
ZAA6AA0ACgAgACAAIgBUAGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABDAE0A
YQBrAGUARgBpAGwAZQBzAFwAOQAxADgAMgBjADcAZQBhADMAYgAxADQANgAyADcANgBiADgANgBj
ADkAYwAyAGUAZgA1ADAANwBkADgANgA3AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFMA
aABhAHIAZQBkAFMAYwByAGkAcAB0AHMALgByAHUAbABlACcAIABkAGUAcABlAG4AZABzACAAbwBu
ACAAJwBGADoAXABHAEkAVABQAFwAVwBFAEIASwBJAFQAXABXAEUAQgBLAEkAVABcAEIAVQBJAEwA
RABfAEEATQBEADYANABcAEoAQQBWAEEAUwBDAFIASQBQAFQAQwBPAFIARQBcAFMAQwBSAEkAUABU
AFMAXABVAFAARABBAFQARQBDAE8ATgBUAEUATgBUAFMALgBQAFkAJwAgAHcAaABpAGMAaAAgAGkA
cwAgAHAAcgBvAGQAdQBjAGUAZAAgAGIAeQAgAHQAaABlACAAYgB1AGkAbABkACAAbwBmACAAJwBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAUwBjAHIAaQBwAHQAcwBcAFUAcABkAGEAdABl
AEMAbwBuAHQAZQBuAHQAcwAuAHAAeQAnAC4AIABUAGgAZQAgAGkAdABlAG0AcwAgAGMAYQBuAG4A
bwB0ACAAYgBlACAAYgB1AGkAbAB0ACAAaQBuACAAcABhAHIAYQBsAGwAZQBsAC4AIgANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUALwBTAGMAcgBpAHAAdABzAC8AVQBwAGQAYQB0AGUAQwBvAG4AdABlAG4AdABzAC4AcAB5
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBjAHMAcwBtAGkAbgAuAHAAeQANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUALwBTAGMAcgBpAHAAdABzAC8AZwBlAG4AZQByAGEAdABlAC0AYwBvAG0AYgBpAG4AZQBk
AC0AaQBuAHMAcABlAGMAdABvAHIALQBqAHMAbwBuAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwBy
AGkAcAB0AHMALwBnAGUAbgBlAHIAYQB0AGUALQBqAHMALQBiAHUAaQBsAHQAaQBuAHMALgBwAHkA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAC8AUwBjAHIAaQBwAHQAcwAvAGkAbgBsAGkAbgBlAC0AYQBuAGQALQBtAGkA
bgBpAGYAeQAtAHMAdAB5AGwAZQBzAGgAZQBlAHQAcwAtAGEAbgBkAC0AcwBjAHIAaQBwAHQAcwAu
AHAAeQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AagBzAG0AaQBuAC4AcAB5AA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBsAGEAegB5AHcAcgBpAHQAZQByAC4AcAB5AA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBtAGEAawBlAC0AagBzAC0AZgBpAGwAZQAtAGEAcgBy
AGEAeQBzAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBiAHUAaQBsAHQAaQBu
AHMAXwBnAGUAbgBlAHIAYQB0AGUAXwBjAG8AbQBiAGkAbgBlAGQAXwBoAGUAYQBkAGUAcgAuAHAA
eQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AYgB1AGkAbAB0AGkAbgBzAF8AZwBlAG4A
ZQByAGEAdABlAF8AYwBvAG0AYgBpAG4AZQBkAF8AaQBtAHAAbABlAG0AZQBuAHQAYQB0AGkAbwBu
AC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBiAHUAaQBsAHQAaQBuAHMAXwBn
AGUAbgBlAHIAYQB0AGUAXwBpAG4AdABlAHIAbgBhAGwAcwBfAHcAcgBhAHAAcABlAHIAXwBoAGUA
YQBkAGUAcgAuAHAAeQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AYgB1AGkAbAB0AGkA
bgBzAF8AZwBlAG4AZQByAGEAdABlAF8AaQBuAHQAZQByAG4AYQBsAHMAXwB3AHIAYQBwAHAAZQBy
AF8AaQBtAHAAbABlAG0AZQBuAHQAYQB0AGkAbwBuAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwBy
AGkAcAB0AHMALwBiAHUAaQBsAHQAaQBuAHMAXwBnAGUAbgBlAHIAYQB0AGUAXwBzAGUAcABhAHIA
YQB0AGUAXwBoAGUAYQBkAGUAcgAuAHAAeQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8A
YgB1AGkAbAB0AGkAbgBzAF8AZwBlAG4AZQByAGEAdABlAF8AcwBlAHAAYQByAGEAdABlAF8AaQBt
AHAAbABlAG0AZQBuAHQAYQB0AGkAbwBuAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0
AHMALwBiAHUAaQBsAHQAaQBuAHMAXwBnAGUAbgBlAHIAYQB0AGUAXwB3AHIAYQBwAHAAZQByAF8A
aABlAGEAZABlAHIALgBwAHkADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8AUwBjAHIAaQBwAHQAcwAvAGIAdQBpAGwA
dABpAG4AcwBfAGcAZQBuAGUAcgBhAHQAZQBfAHcAcgBhAHAAcABlAHIAXwBpAG0AcABsAGUAbQBl
AG4AdABhAHQAaQBvAG4ALgBwAHkADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8AUwBjAHIAaQBwAHQAcwAvAGIAdQBp
AGwAdABpAG4AcwBfAGcAZQBuAGUAcgBhAHQAbwByAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwBy
AGkAcAB0AHMALwBiAHUAaQBsAHQAaQBuAHMAXwBtAG8AZABlAGwALgBwAHkADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AC8AUwBjAHIAaQBwAHQAcwAvAGIAdQBpAGwAdABpAG4AcwBfAHQAZQBtAHAAbABhAHQAZQBzAC4A
cAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwB3AGsAYgB1AGkAbAB0AGkAbgBzAC4A
cAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwB4AHgAZAAuAHAAbAANAAoAIAAgAEIA
dQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUALwBDAE0AYQBrAGUATABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEAbABp
AHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYA
aQBsAGUAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBTAGgAYQByAGUAZABTAGMAcgBpAHAAdABzAFwASgBhAHYAYQBTAGMAcgBpAC4AOABEAEIA
MQAyADAAQgAyAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAi
AC4ADQAKACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBTAGgAYQByAGUAZABTAGMAcgBpAHAAdABzAFwASgBh
AHYAYQBTAGMAcgBpAC4AOABEAEIAMQAyADAAQgAyAC4AdABsAG8AZwBcAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQBTAGgAYQByAGUAZABTAGMAcgBpAHAAdABzAC4AbABhAHMAdABiAHUAaQBs
AGQAcwB0AGEAdABlACIALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoA
ZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAUwBoAGEAcgBlAGQAUwBjAHIAaQBw
AHQAcwAuAHYAYwB4AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgA
cwApACkALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAUwBoAGEAcgBlAGQAUwBjAHIAaQBwAHQAcwAuAHYA
YwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQBy
AGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgAwACkAIABp
AHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUAXABMAEwASQBuAHQATwBmAGYAcwBlAHQAcwBFAHgAdAByAGEA
YwB0AG8AcgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgA1ACkAIABv
AG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkA
LgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBj
AHQAbwByAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAyADUAKQAgAGkA
cwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBfAEMAbwBw
AHkASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgA
MgA2ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0
ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBv
AGoAIgAgACgAMgA2ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBv
AHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMALgB2AGMAeABwAHIAbwBqACIAIAAo
ADIANwApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUA
dAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBu
AGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAFwAIgAuAA0ACgBQ
AHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwAZAA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAA
ZABpAHIAZQBjAHQAbwByAHkAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBfAEMAbwBwAHkASABlAGEAZABlAHIAcwBcAEoAYQB2AGEAUwBjAHIA
aQAuADAAMAAwADcAOQAwADAARQAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6
AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAHgA
NgA0AFwAUgBlAGwAZQBhAHMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBfAEMAbwBw
AHkASABlAGEAZABlAHIAcwBcAEoAYQB2AGEAUwBjAHIAaQAuADAAMAAwADcAOQAwADAARQAuAHQA
bABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAgAGIAZQBjAGEAdQBz
AGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3AGEAcwAgAHMAcABlAGMAaQBmAGkA
ZQBkAC4ADQAKAEMAbwBtAHAAdQB0AGUAQwB1AHMAdABvAG0AQgB1AGkAbABkAE8AdQB0AHAAdQB0
ADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABIAGUAYQBkAGUAcgBzAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAIgAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgAN
AAoAIAAgACIAVABoAGUAIABiAHUAaQBsAGQAIABvAGYAIAAnAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAQwBNAGEAawBl
AEYAaQBsAGUAcwBcADkAMQA4ADIAYwA3AGUAYQAzAGIAMQA0ADYAMgA3ADYAYgA4ADYAYwA5AGMA
MgBlAGYANQAwADcAZAA4ADYANwBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBfAEMAbwBw
AHkASABlAGEAZABlAHIAcwAuAHIAdQBsAGUAJwAgAGQAZQBwAGUAbgBkAHMAIABvAG4AIAAnAEYA
OgBcAEcASQBUAFAAXABXAEUAQgBLAEkAVABcAFcARQBCAEsASQBUAFwAQgBVAEkATABEAF8AQQBN
AEQANgA0AFwASgBBAFYAQQBTAEMAUgBJAFAAVABDAE8AUgBFAFwASABFAEEARABFAFIAUwBcAEoA
QQBWAEEAUwBDAFIASQBQAFQAQwBPAFIARQBcAEoAUwBCAEEAUwBFAC4ASAAnACAAdwBoAGkAYwBo
ACAAaQBzACAAcAByAG8AZAB1AGMAZQBkACAAYgB5ACAAdABoAGUAIABiAHUAaQBsAGQAIABvAGYA
IAAnAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABBAFAASQBcAEoAUwBCAGEAcwBlAC4A
aAAnAC4AIABUAGgAZQAgAGkAdABlAG0AcwAgAGMAYQBuAG4AbwB0ACAAYgBlACAAYgB1AGkAbAB0
ACAAaQBuACAAcABhAHIAYQBsAGwAZQBsAC4AIgANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBIAGUAYQBkAGUAcgBz
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ASgBTAEIAYQBzAGUALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQAvAEgAZQBhAGQAZQByAHMALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBKAFMA
QwBvAG4AdABlAHgAdABSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ASABlAGEAZABlAHIAcwAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEoAUwBPAGIAagBlAGMAdABSAGUAZgAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAC8ASABlAGEAZABlAHIAcwAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAv
AEoAUwBTAHQAcgBpAG4AZwBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ASABlAGEAZABlAHIAcwAv
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEoAUwBUAHkAcABlAGQAQQByAHIAYQB5AC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUALwBIAGUAYQBkAGUAcgBzAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAC8ASgBTAFYAYQBsAHUAZQBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ASABlAGEAZABlAHIA
cwAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEoAYQB2AGEAUwBjAHIAaQBwAHQALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQAvAEgAZQBhAGQAZQByAHMALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUALwBXAGUAYgBLAGkAdABBAHYAYQBpAGwAYQBiAGkAbABpAHQAeQAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AC8ASABlAGEAZABlAHIAcwAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEoAUwBTAHQA
cgBpAG4AZwBSAGUAZgBCAFMAVABSAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBIAGUAYQBkAGUAcgBzAC8A
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUALwBIAGUAYQBkAGUAcgBzAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAC8ASgBTAFMAdAByAGkAbgBnAFIAZQBmAEMARgAuAGgADQAKACAAIABCAHUAaQBsAGQA
aQBuAGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABGADoALwBnAGkAdABQAC8AVwBlAGIASwBp
AHQALwB3AGUAYgBrAGkAdAAvAFMAbwB1AHIAYwBlAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAC8AQwBNAGEAawBlAEwAaQBzAHQAcwAuAHQAeAB0AA0ACgBGAGkAbgBhAGwAaQB6AGUAQgB1
AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABEAGUAbABlAHQAaQBuAGcAIABmAGkAbABlACAA
IgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXwBD
AG8AcAB5AEgAZQBhAGQAZQByAHMAXABKAGEAdgBhAFMAYwByAGkALgAwADAAMAA3ADkAMAAwAEUA
LgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIALgANAAoAIAAg
AFQAbwB1AGMAaABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwASgBhAHYAYQBTAGMA
cgBpAHAAdABDAG8AcgBlAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAFwASgBhAHYAYQBTAGMAcgBp
AC4AMAAwADAANwA5ADAAMABFAC4AdABsAG8AZwBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAGwAYQBzAHQAYgB1AGkAbABkAHMAdABhAHQAZQAi
AC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcABy
AG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8A
bgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUA
dABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgAN
AAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBjAHQA
bwByAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAyADUAKQAgAGkAcwAg
AGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEwATABJAG4AdABTAGUAdAB0AGkAbgBnAHMARQB4AHQAcgBhAGMA
dABvAHIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADIAOAApACAAbwBu
ACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4A
DQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUAXABMAEwASQBuAHQAUwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBj
AHQAbwByAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAyADgAKQAgAGkA
cwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwA
dwB0AGYAXABXAFQARgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgA5
ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgA
cwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcA
VABGAFwAdwB0AGYAXABXAFQARgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAg
ACgAMgA5ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBj
AGUAXABXAFQARgBcAHcAdABmAFwAVwBUAEYALgB2AGMAeABwAHIAbwBqACIAIAAoADMAMAApACAA
bwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQAp
AC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkA
cgBlAGMAdABvAHIAeQAgACIAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAAiAC4ADQAK
AFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcA
IABkAGkAcgBlAGMAdABvAHIAeQAgACIAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABX
AFQARgAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6AGUAQgB1AGkAbABkAFMA
dABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAFcAVABGAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAVwBUAEYALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwA
YgB1AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwAdwBhAHkAcwBDAHIAZQBhAHQAZQAi
ACAAdwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQA
OgANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYAOgAv
AGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBXAFQA
RgAvAHcAdABmAC8AQwBNAGEAawBlAEwAaQBzAHQAcwAuAHQAeAB0AA0ACgBDAGwAQwBvAG0AcABp
AGwAZQA6AA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYA
KQBcAE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAx
ADkAXABFAG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEA
NAAuADIANgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwAQwBM
AC4AZQB4AGUAIAAvAGMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABXAFQARgBcAEQA
ZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAIAAvAEkARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0
AGYAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABkAHQAbwBhACAALwBJAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwA
cABlAHIAcwBpAHMAdABlAG4AYwBlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAdABlAHgAdAAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABpAGMAdQAgAC8ASQBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBc
AHQAaAByAGUAYQBkAHMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB1AG4AaQBjAG8AZABlACAALwBJ
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBpAHQA
TABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBv
AGwAbwBnAG8AIAAvAFcANAAgAC8AVwBYAC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMA
bwBsAHUAbQBuACAALwBNAFAAIAAvAE8AMgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJ
AE4AMwAyACAALwBEACAAXwBXAEkATgBEAE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQA
IABCAFUASQBMAEQASQBOAEcAXwBXAFQARgAgAC8ARAAgAEIAVQBJAEwARABJAE4ARwBfAFcASQBU
AEgAXwBDAE0AQQBLAEUAPQAxACAALwBEACAASABBAFYARQBfAEMATwBOAEYASQBHAF8ASAA9ADEA
IAAvAEQAIABXAEkATgBWAEUAUgA9ADAAeAA2ADAAMQAgAC8ARAAgAF8AVwBJAE4AMwAyAF8AVwBJ
AE4ATgBUAD0AMAB4ADYAMAAxACAALwBEACAATgBPAE0ASQBOAE0AQQBYACAALwBEACAAVQBOAEkA
QwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8ASABBAFMAXwBFAFgAQwBF
AFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAE4ATwBfAFcA
QQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAEMAUABQAF8ATwBW
AEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBEAF8ATgBBAE0ARQBTAD0AMQAgAC8ARAAgAF8A
VwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQAIABXAFQARgBfAFAATABBAFQARgBPAFIATQBf
AFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAE4ATwBDAFIAWQBQAFQAIAAvAEQAIAAiAEMA
TQBBAEsARQBfAEkATgBUAEQASQBSAD0AXAAiAFIAZQBsAGUAYQBzAGUAXAAiACIAIAAvAEQAIABX
AFQARgBfAEUAWABQAE8AUgBUAFMAIAAvAEQAIABfAFcASQBOAEQATABMACAALwBEACAAXwBVAE4A
SQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBtAC0AIAAvAE0ARAAgAC8ARwBT
ACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgAYwBlAHAAdAAtACAALwBaAGMA
OgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBwAGUAIAAvAFoAYwA6AGkAbgBs
AGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcAIAAvAEYAbwAiAFcAVABGAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAXAAiACAALwBGAGQAIgBXAFQARgAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAHYAYwAxADQAMgAuAHAAZABiACIAIAAvAEcAZAAgAC8AVABQACAALwB3AGQA
NAAwADEAOAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5ACAALwB3AGQANAAxADAAMAAg
AC8AdwBkADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQANAAxADQANgAgAC8AdwBkADQA
MQA4ADAAIAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAgAC8AdwBkADQAMgAwADYAIAAv
AHcAZAA0ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQAMgA2ADcAIAAvAHcAZAA0ADIA
NwA1ACAALwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3
AGQANAAzADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMANQA1ACAALwB3AGQANAAzADgA
OQAgAC8AdwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3AGQANAA0ADUANwAgAC8AdwBk
ADQANAA1ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgAMQAgAC8AdwBkADQANQAwADMA
IAAvAHcAZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBkADQANQAxADIAIAAvAHcAZAA0
ADUAMwAwACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEAIAAvAHcAZAA0ADYANAA2ACAA
LwB3AGQANAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0ADcAMgAyACAALwB3AGQANAA4
ADAAMAAgAC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAALwB3AGQANAA5ADUAMgAgAC8A
dwBkADQAOQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAwADMAMQAgAC8AdwBkADYAMgAx
ADEAIAAvAHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8AdwBkADYAMwA4ADcAIAAvAHcA
ZAA0ADAAOQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgByAG8AcgBSAGUAcABvAHIAdAA6
AHEAdQBlAHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAALwBFAEgAYQAtACAALwBFAEgA
YwAtACAALwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0AGYALQA4ACAALwB2AGEAbABp
AGQAYQB0AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABBAFMAQwBJAEkAQwBU
AHkAcABlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAEEAcwBzAGUAcgB0AGkAbwBuAHMALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABXAFQARgBcAHcAdABmAFwAQQB1AHQAbwBtAGEAdABpAGMAVABoAHIAZQBhAGQALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABXAFQARgBcAHcAdABmAFwAQgBhAGcALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwA
QgBpAHQAVgBlAGMAdABvAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAQwBQAFUAVABpAG0A
ZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABDAGwAbwBjAGsAVAB5AHAAZQAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFcAVABGAFwAdwB0AGYAXABDAG8AbQBwAGkAbABhAHQAaQBvAG4AVABoAHIAZQBhAGQALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABXAFQARgBcAHcAdABmAFwAQwBvAG4AYwB1AHIAcgBlAG4AdABCAHUAZgBmAGUAcgAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFcAVABGAFwAdwB0AGYAXABDAG8AbgBjAHUAcgByAGUAbgB0AFAAdAByAEgAYQBzAGgA
UwBlAHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAQwBvAHUAbgB0AGkAbgBnAEwAbwBjAGsA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAQwByAG8AcwBzAFQAaAByAGUAYQBkAEMAbwBwAGkA
ZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAEMAcgBvAHMAcwBUAGgAcgBlAGEAZABUAGEA
cwBrAEgAYQBuAGQAbABlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAQwByAHkAcAB0AG8A
ZwByAGEAcABoAGkAYwBVAHQAaQBsAGkAdABpAGUAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYA
XABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjAGEAbABsAHkAUgBhAG4AZABvAG0ATgB1AG0AYgBl
AHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAQwB1AHIAcgBlAG4AdABUAGkAbQBlAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVwBUAEYAXAB3AHQAZgBcAEQAYQB0AGEATABvAGcALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcA
dABmAFwARABhAHQAZQBNAGEAdABoAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAEQAZQBiAHUA
ZwBIAGUAYQBwAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAEYAYQBzAHQAQgBpAHQAVgBlAGMA
dABvAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwARgBhAHMAdABNAGEAbABsAG8AYwAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFcAVABGAFwAdwB0AGYAXABGAGkAbABlAFAAcgBpAG4AdABTAHQAcgBlAGEAbQAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFcAVABGAFwAdwB0AGYAXABGAGkAbABlAFMAeQBzAHQAZQBtAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBU
AEYAXAB3AHQAZgBcAEYAdQBuAGMAdABpAG8AbgBEAGkAcwBwAGEAdABjAGgAZQByAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVwBUAEYAXAB3AHQAZgBcAEcAaQBnAGEAYwBhAGcAZQAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0
AGYAXABHAGwAbwBiAGEAbABWAGUAcgBzAGkAbwBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBc
AEcAcgBlAGcAbwByAGkAYQBuAEQAYQB0AGUAVABpAG0AZQAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0
AGYAXABIAGEAcwBoAFQAYQBiAGwAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABIAGUAeABO
AHUAbQBiAGUAcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABKAFMATwBOAFYAYQBsAHUAZQBz
AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAEoAUwBWAGEAbAB1AGUATQBhAGwAbABvAGMALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABXAFQARgBcAHcAdABmAFwATABhAG4AZwB1AGEAZwBlAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYA
XAB3AHQAZgBcAEwAbwBjAGsALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwATABvAGMAawBlAGQA
UAByAGkAbgB0AFMAdAByAGUAYQBtAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAEwAbwBnAGcA
ZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAE0AYQBpAG4AVABoAHIAZQBhAGQALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABXAFQARgBcAHcAdABmAFwATQBlAGQAaQBhAFQAaQBtAGUALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBc
AHcAdABmAFwATQBlAG0AbwByAHkAUAByAGUAcwBzAHUAcgBlAEgAYQBuAGQAbABlAHIALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABXAFQARgBcAHcAdABmAFwATQBlAHQAYQBBAGwAbABvAGMAYQB0AG8AcgAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFcAVABGAFwAdwB0AGYAXABNAG8AbgBvAHQAbwBuAGkAYwBUAGkAbQBlAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBU
AEYAXAB3AHQAZgBcAE4AdQBtAGIAZQByAE8AZgBDAG8AcgBlAHMALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBc
AHcAdABmAFwATwBTAEwAbwBnAFAAcgBpAG4AdABTAHQAcgBlAGEAbQAuAGMAcABwACAARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABG
AFwAdwB0AGYAXABPAFMAUgBhAG4AZABvAG0AUwBvAHUAcgBjAGUALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBc
AHcAdABmAFwATwBiAGoAZQBjAHQASQBkAGUAbgB0AGkAZgBpAGUAcgAuAGMAcABwACAARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABG
AFwAdwB0AGYAXABQAGEAZwBlAEIAbABvAGMAawAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABQ
AGEAcgBhAGwAbABlAGwASABlAGwAcABlAHIAUABvAG8AbAAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0
AGYAXABQAGEAcgBhAGwAbABlAGwASgBvAGIAcwBHAGUAbgBlAHIAaQBjAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBU
AEYAXAB3AHQAZgBcAFAAYQByAGsAaQBuAGcATABvAHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABm
AFwAUAByAGkAbgB0AFMAdAByAGUAYQBtAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAFAAcgBv
AGMAZQBzAHMAUAByAGkAdgBpAGwAZQBnAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAUgBB
AE0AUwBpAHoAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABSAGEAbgBkAG8AbQBEAGUAdgBp
AGMAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABSAGEAbgBkAG8AbQBOAHUAbQBiAGUAcgAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABSAGUAYQBkAFcAcgBpAHQAZQBMAG8AYwBrAC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVwBUAEYAXAB3AHQAZgBcAFIAZQBmAEMAbwB1AG4AdABlAGQALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQA
RgBcAHcAdABmAFwAUgBlAGYAQwBvAHUAbgB0AGUAZABBAHIAcgBhAHkALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQA
RgBcAHcAdABmAFwAUgBlAGYAQwBvAHUAbgB0AGUAZABMAGUAYQBrAEMAbwB1AG4AdABlAHIALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABXAFQARgBcAHcAdABmAFwAUgB1AG4ATABvAG8AcAAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwA
dwB0AGYAXABTAEgAQQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAFMAZQBjAG8AbgBkAHMA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAUwBlAGcAbQBlAG4AdABlAGQAVgBlAGMAdABvAHIA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAUwBpAHgAQwBoAGEAcgBhAGMAdABlAHIASABhAHMA
aAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABTAG0AYQBsAGwAUAB0AHIAUwBlAHQALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABXAFQARgBcAHcAdABmAFwAUwB0AGEAYwBrAEIAbwB1AG4AZABzAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBU
AEYAXAB3AHQAZgBcAFMAdABhAGMAawBQAG8AaQBuAHQAZQByAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3
AHQAZgBcAFMAdABhAGMAawBTAHQAYQB0AHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAUwB0
AGEAYwBrAFQAcgBhAGMAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABTAHQAcgBpAG4AZwBQ
AHIAaQBuAHQAUwB0AHIAZQBhAG0ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAVABoAHIAZQBh
AGQARwByAG8AdQBwAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAFQAaAByAGUAYQBkAE0AZQBz
AHMAYQBnAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAVABoAHIAZQBhAGQAaQBuAGcALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABXAFQARgBcAHcAdABmAFwAVABpAG0AZQBXAGkAdABoAEQAeQBuAGEAbQBpAGMAQwBs
AG8AYwBrAFQAeQBwAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAVABpAG0AaQBuAGcAUwBj
AG8AcABlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAFUAUgBMAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYA
XAB3AHQAZgBcAFUAUgBMAEgAZQBsAHAAZQByAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwA
VQBSAEwAUABhAHIAcwBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAVQBVAEkARAAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFcAVABGAFwAdwB0AGYAXABVAG4AaQBxAHUAZQBBAHIAcgBhAHkALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABX
AFQARgBcAHcAdABmAFwAVgBlAGMAdABvAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAVwBU
AEYAQQBzAHMAZQByAHQAaQBvAG4AcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABXAFQARgBD
AG8AbgBmAGkAZwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABXAGEAbABsAFQAaQBtAGUALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABXAFQARgBcAHcAdABmAFwAVwBvAHIAZABMAG8AYwBrAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYA
XAB3AHQAZgBcAFcAbwByAGsAUQB1AGUAdQBlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAFcA
bwByAGsAZQByAFAAbwBvAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAZAB0AG8AYQAuAGMA
cABwACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1
AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAGQAdABvAGEAXABiAGkAZwBuAHUAbQAtAGQAdABvAGEA
LgBjAGMAIgAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAZAB0AG8AYQBcAGIAaQBnAG4AdQBtAC4AYwBjACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVwBUAEYAXAB3AHQAZgBcAGQAdABvAGEAXABjAGEAYwBoAGUAZAAtAHAAbwB3AGUAcgBzAC4A
YwBjACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAZAB0AG8AYQBcAGQAaQB5AC0AZgBwAC4AYwBjACIA
IAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABXAFQARgBcAHcAdABmAFwAZAB0AG8AYQBcAGQAbwB1AGIAbABlAC0AYwBvAG4AdgBlAHIA
cwBpAG8AbgAuAGMAYwAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAGQAdABvAGEAXABmAGEAcwB0AC0A
ZAB0AG8AYQAuAGMAYwAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAGQAdABvAGEAXABmAGkAeABlAGQA
LQBkAHQAbwBhAC4AYwBjACIAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAGQAdABvAGEAXABzAHQAcgB0AG8A
ZAAuAGMAYwAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAcABlAHIAcwBpAHMAdABlAG4AYwBlAFwAUABlAHIA
cwBpAHMAdABlAG4AdABDAG8AZABlAHIAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABwAGUA
cgBzAGkAcwB0AGUAbgBjAGUAXABQAGUAcgBzAGkAcwB0AGUAbgB0AEQAZQBjAG8AZABlAHIALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABXAFQARgBcAHcAdABmAFwAcABlAHIAcwBpAHMAdABlAG4AYwBlAFwAUABlAHIAcwBp
AHMAdABlAG4AdABFAG4AYwBvAGQAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4
AHQAXABBAFMAQwBJAEkATABpAHQAZQByAGEAbAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB0
AGUAeAB0AFwAQQB0AG8AbQBTAHQAcgBpAG4AZwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB0
AGUAeAB0AFwAQQB0AG8AbQBTAHQAcgBpAG4AZwBJAG0AcABsAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3
AHQAZgBcAHQAZQB4AHQAXABBAHQAbwBtAFMAdAByAGkAbgBnAFQAYQBiAGwAZQAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AFcAVABGAFwAdwB0AGYAXAB0AGUAeAB0AFwAQgBhAHMAZQA2ADQALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBc
AHcAdABmAFwAdABlAHgAdABcAEMAUwB0AHIAaQBuAGcALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABm
AFwAdABlAHgAdABcAEUAeAB0AGUAcgBuAGEAbABTAHQAcgBpAG4AZwBJAG0AcABsAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABMAGkAbgBlAEUAbgBkAGkAbgBnAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABTAHQAcgBpAG4AZwBCAHUAZgBmAGUAcgAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFcAVABGAFwAdwB0AGYAXAB0AGUAeAB0AFwAUwB0AHIAaQBuAGcAQgB1AGkAbABkAGUA
cgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB0AGUAeAB0AFwAUwB0AHIAaQBuAGcAQgB1AGkA
bABkAGUAcgBKAFMATwBOAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABTAHQA
cgBpAG4AZwBJAG0AcABsAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABTAHQA
cgBpAG4AZwBWAGkAZQB3AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABTAHkA
bQBiAG8AbABJAG0AcABsAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABTAHkA
bQBiAG8AbABSAGUAZwBpAHMAdAByAHkALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAdABlAHgA
dABcAFQAZQB4AHQAQgByAGUAYQBrAEkAdABlAHIAYQB0AG8AcgAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwA
dwB0AGYAXAB0AGUAeAB0AFwAVABlAHgAdABTAHQAcgBlAGEAbQAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwA
dwB0AGYAXAB0AGUAeAB0AFwAVwBUAEYAUwB0AHIAaQBuAGcALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcA
dABmAFwAdABlAHgAdABcAGkAYwB1AFwAVQBUAGUAeAB0AFAAcgBvAHYAaQBkAGUAcgAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFcAVABGAFwAdwB0AGYAXAB0AGUAeAB0AFwAaQBjAHUAXABVAFQAZQB4AHQAUAByAG8AdgBp
AGQAZQByAEwAYQB0AGkAbgAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABp
AGMAdQBcAFUAVABlAHgAdABQAHIAbwB2AGkAZABlAHIAVQBUAEYAMQA2AC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBU
AEYAXAB3AHQAZgBcAHQAaAByAGUAYQBkAHMAXABCAGkAbgBhAHIAeQBTAGUAbQBhAHAAaABvAHIA
ZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB0AGgAcgBlAGEAZABzAFwAUwBpAGcAbgBhAGwA
cwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB1AG4AaQBjAG8AZABlAFwAQwBvAGwAbABhAHQA
bwByAEQAZQBmAGEAdQBsAHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAdQBuAGkAYwBvAGQA
ZQBcAFUAVABGADgAQwBvAG4AdgBlAHIAcwBpAG8AbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYA
XAB1AG4AaQBjAG8AZABlAFwAaQBjAHUAXABDAG8AbABsAGEAdABvAHIASQBDAFUALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABXAFQARgBcAHcAdABmAFwAdQBuAGkAYwBvAGQAZQBcAGkAYwB1AFwASQBDAFUASABlAGwAcABl
AHIAcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABnAGUAbgBlAHIAaQBjAFwAVwBvAHIAawBR
AHUAZQB1AGUARwBlAG4AZQByAGkAYwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB0AGUAeAB0
AFwAdwBpAG4AXABTAHQAcgBpAG4AZwBXAGkAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB0
AGUAeAB0AFwAdwBpAG4AXABUAGUAeAB0AEIAcgBlAGEAawBJAHQAZQByAGEAdABvAHIASQBuAHQA
ZQByAG4AYQBsAEkAQwBVAFcAaQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHcAaQBuAFwA
QwBQAFUAVABpAG0AZQBXAGkAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB3AGkAbgBcAEQA
YgBnAEgAZQBsAHAAZQByAFcAaQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHcAaQBuAFwA
RgBpAGwAZQBTAHkAcwB0AGUAbQBXAGkAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB3AGkA
bgBcAEwAYQBuAGcAdQBhAGcAZQBXAGkAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB3AGkA
bgBcAE0AYQBpAG4AVABoAHIAZQBhAGQAVwBpAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwA
dwBpAG4AXABNAGUAbQBvAHIAeQBGAG8AbwB0AHAAcgBpAG4AdABXAGkAbgAuAGMAcABwACAARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcA
VABGAFwAdwB0AGYAXAB3AGkAbgBcAE0AZQBtAG8AcgB5AFAAcgBlAHMAcwB1AHIAZQBIAGEAbgBk
AGwAZQByAFcAaQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHcAaQBuAFwATwBTAEEAbABs
AG8AYwBhAHQAbwByAFcAaQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHcAaQBuAFwAUABh
AHQAaABXAGEAbABrAGUAcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXAB3AGkAbgBcAFIAdQBu
AEwAbwBvAHAAVwBpAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAdwBpAG4AXABUAGgAcgBl
AGEAZABpAG4AZwBXAGkAbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABjAGYAXABDAEYAVQBS
AEwARQB4AHQAcgBhAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAYwBmAFwARgBpAGwAZQBT
AHkAcwB0AGUAbQBDAEYALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAYwBmAFwAVQBSAEwAQwBG
AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABjAGYAXABBAHQAbwBtAFMAdABy
AGkAbgBnAEkAbQBwAGwAQwBGAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAHQAZQB4AHQAXABj
AGYAXABTAHQAcgBpAG4AZwBDAEYALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAFQARgBcAHcAdABmAFwAdABlAHgAdABc
AGMAZgBcAFMAdAByAGkAbgBnAEkAbQBwAGwAQwBGAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBc
AHQAZQB4AHQAXABjAGYAXABTAHQAcgBpAG4AZwBWAGkAZQB3AEMARgAuAGMAcABwAA0ACgAgACAA
QQBTAEMASQBJAEMAVAB5AHAAZQAuAGMAcABwAA0ACgAgACAAQQBzAHMAZQByAHQAaQBvAG4AcwAu
AGMAcABwAA0ACgAgACAAQQB1AHQAbwBtAGEAdABpAGMAVABoAHIAZQBhAGQALgBjAHAAcAANAAoA
IAAgAEIAYQBnAC4AYwBwAHAADQAKACAAIABCAGkAdABWAGUAYwB0AG8AcgAuAGMAcABwAA0ACgAg
ACAAQwBQAFUAVABpAG0AZQAuAGMAcABwAA0ACgAgACAAQwBsAG8AYwBrAFQAeQBwAGUALgBjAHAA
cAANAAoAIAAgAEMAbwBtAHAAaQBsAGEAdABpAG8AbgBUAGgAcgBlAGEAZAAuAGMAcABwAA0ACgAg
ACAAQwBvAG4AYwB1AHIAcgBlAG4AdABCAHUAZgBmAGUAcgAuAGMAcABwAA0ACgAgACAAQwBvAG4A
YwB1AHIAcgBlAG4AdABQAHQAcgBIAGEAcwBoAFMAZQB0AC4AYwBwAHAADQAKACAAIABDAG8AdQBu
AHQAaQBuAGcATABvAGMAawAuAGMAcABwAA0ACgAgACAAQwByAG8AcwBzAFQAaAByAGUAYQBkAEMA
bwBwAGkAZQByAC4AYwBwAHAADQAKACAAIABDAHIAbwBzAHMAVABoAHIAZQBhAGQAVABhAHMAawBI
AGEAbgBkAGwAZQByAC4AYwBwAHAADQAKACAAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjAFUA
dABpAGwAaQB0AGkAZQBzAC4AYwBwAHAADQAKACAAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBj
AGEAbABsAHkAUgBhAG4AZABvAG0ATgB1AG0AYgBlAHIALgBjAHAAcAANAAoAIAAgAEMAdQByAHIA
ZQBuAHQAVABpAG0AZQAuAGMAcABwAA0ACgAgACAARABhAHQAYQBMAG8AZwAuAGMAcABwAA0ACgAg
ACAARABhAHQAZQBNAGEAdABoAC4AYwBwAHAADQAKACAAIABEAGUAYgB1AGcASABlAGEAcAAuAGMA
cABwAA0ACgAgACAARgBhAHMAdABCAGkAdABWAGUAYwB0AG8AcgAuAGMAcABwAA0ACgAgACAARgBh
AHMAdABNAGEAbABsAG8AYwAuAGMAcABwAA0ACgAgACAARgBpAGwAZQBQAHIAaQBuAHQAUwB0AHIA
ZQBhAG0ALgBjAHAAcAANAAoAIAAgAEYAaQBsAGUAUwB5AHMAdABlAG0ALgBjAHAAcAANAAoAIAAg
AEYAdQBuAGMAdABpAG8AbgBEAGkAcwBwAGEAdABjAGgAZQByAC4AYwBwAHAADQAKACAAIABHAGkA
ZwBhAGMAYQBnAGUALgBjAHAAcAANAAoAIAAgAEcAbABvAGIAYQBsAFYAZQByAHMAaQBvAG4ALgBj
AHAAcAANAAoAIAAgAEcAcgBlAGcAbwByAGkAYQBuAEQAYQB0AGUAVABpAG0AZQAuAGMAcABwAA0A
CgAgACAASABhAHMAaABUAGEAYgBsAGUALgBjAHAAcAANAAoAIAAgAEgAZQB4AE4AdQBtAGIAZQBy
AC4AYwBwAHAADQAKACAAIABKAFMATwBOAFYAYQBsAHUAZQBzAC4AYwBwAHAADQAKACAAIABKAFMA
VgBhAGwAdQBlAE0AYQBsAGwAbwBjAC4AYwBwAHAADQAKACAAIABMAGEAbgBnAHUAYQBnAGUALgBj
AHAAcAANAAoAIAAgAEwAbwBjAGsALgBjAHAAcAANAAoAIAAgAEwAbwBjAGsAZQBkAFAAcgBpAG4A
dABTAHQAcgBlAGEAbQAuAGMAcABwAA0ACgAgACAATABvAGcAZwBlAHIALgBjAHAAcAANAAoAIAAg
AE0AYQBpAG4AVABoAHIAZQBhAGQALgBjAHAAcAANAAoAIAAgAE0AZQBkAGkAYQBUAGkAbQBlAC4A
YwBwAHAADQAKACAAIABNAGUAbQBvAHIAeQBQAHIAZQBzAHMAdQByAGUASABhAG4AZABsAGUAcgAu
AGMAcABwAA0ACgAgACAATQBlAHQAYQBBAGwAbABvAGMAYQB0AG8AcgAuAGMAcABwAA0ACgAgACAA
TQBvAG4AbwB0AG8AbgBpAGMAVABpAG0AZQAuAGMAcABwAA0ACgAgACAATgB1AG0AYgBlAHIATwBm
AEMAbwByAGUAcwAuAGMAcABwAA0ACgAgACAATwBTAEwAbwBnAFAAcgBpAG4AdABTAHQAcgBlAGEA
bQAuAGMAcABwAA0ACgAgACAATwBTAFIAYQBuAGQAbwBtAFMAbwB1AHIAYwBlAC4AYwBwAHAADQAK
ACAAIABPAGIAagBlAGMAdABJAGQAZQBuAHQAaQBmAGkAZQByAC4AYwBwAHAADQAKACAAIABQAGEA
ZwBlAEIAbABvAGMAawAuAGMAcABwAA0ACgAgACAAUABhAHIAYQBsAGwAZQBsAEgAZQBsAHAAZQBy
AFAAbwBvAGwALgBjAHAAcAANAAoAIAAgAFAAYQByAGEAbABsAGUAbABKAG8AYgBzAEcAZQBuAGUA
cgBpAGMALgBjAHAAcAANAAoAIAAgAFAAYQByAGsAaQBuAGcATABvAHQALgBjAHAAcAANAAoAIAAg
AFAAcgBpAG4AdABTAHQAcgBlAGEAbQAuAGMAcABwAA0ACgAgACAAUAByAG8AYwBlAHMAcwBQAHIA
aQB2AGkAbABlAGcAZQAuAGMAcABwAA0ACgAgACAAUgBBAE0AUwBpAHoAZQAuAGMAcABwAA0ACgAg
ACAAUgBhAG4AZABvAG0ARABlAHYAaQBjAGUALgBjAHAAcAANAAoAIAAgAFIAYQBuAGQAbwBtAE4A
dQBtAGIAZQByAC4AYwBwAHAADQAKACAAIABSAGUAYQBkAFcAcgBpAHQAZQBMAG8AYwBrAC4AYwBw
AHAADQAKACAAIABSAGUAZgBDAG8AdQBuAHQAZQBkAC4AYwBwAHAADQAKACAAIABSAGUAZgBDAG8A
dQBuAHQAZQBkAEEAcgByAGEAeQAuAGMAcABwAA0ACgAgACAAUgBlAGYAQwBvAHUAbgB0AGUAZABM
AGUAYQBrAEMAbwB1AG4AdABlAHIALgBjAHAAcAANAAoAIAAgAFIAdQBuAEwAbwBvAHAALgBjAHAA
cAANAAoAIAAgAFMASABBADEALgBjAHAAcAANAAoAIAAgAFMAZQBjAG8AbgBkAHMALgBjAHAAcAAN
AAoAIAAgAFMAZQBnAG0AZQBuAHQAZQBkAFYAZQBjAHQAbwByAC4AYwBwAHAADQAKACAAIABTAGkA
eABDAGgAYQByAGEAYwB0AGUAcgBIAGEAcwBoAC4AYwBwAHAADQAKACAAIABTAG0AYQBsAGwAUAB0
AHIAUwBlAHQALgBjAHAAcAANAAoAIAAgAFMAdABhAGMAawBCAG8AdQBuAGQAcwAuAGMAcABwAA0A
CgAgACAAUwB0AGEAYwBrAFAAbwBpAG4AdABlAHIALgBjAHAAcAANAAoAIAAgAFMAdABhAGMAawBT
AHQAYQB0AHMALgBjAHAAcAANAAoAIAAgAFMAdABhAGMAawBUAHIAYQBjAGUALgBjAHAAcAANAAoA
IAAgAFMAdAByAGkAbgBnAFAAcgBpAG4AdABTAHQAcgBlAGEAbQAuAGMAcABwAA0ACgAgACAAVABo
AHIAZQBhAGQARwByAG8AdQBwAC4AYwBwAHAADQAKACAAIABUAGgAcgBlAGEAZABNAGUAcwBzAGEA
ZwBlAC4AYwBwAHAADQAKACAAIABUAGgAcgBlAGEAZABpAG4AZwAuAGMAcABwAA0ACgAgACAAVABp
AG0AZQBXAGkAdABoAEQAeQBuAGEAbQBpAGMAQwBsAG8AYwBrAFQAeQBwAGUALgBjAHAAcAANAAoA
IAAgAFQAaQBtAGkAbgBnAFMAYwBvAHAAZQAuAGMAcABwAA0ACgAgACAAVQBSAEwALgBjAHAAcAAN
AAoAIAAgAFUAUgBMAEgAZQBsAHAAZQByAHMALgBjAHAAcAANAAoAIAAgAFUAUgBMAFAAYQByAHMA
ZQByAC4AYwBwAHAADQAKACAAIABVAFUASQBEAC4AYwBwAHAADQAKACAAIABVAG4AaQBxAHUAZQBB
AHIAcgBhAHkALgBjAHAAcAANAAoAIAAgAFYAZQBjAHQAbwByAC4AYwBwAHAADQAKACAAIABXAFQA
RgBBAHMAcwBlAHIAdABpAG8AbgBzAC4AYwBwAHAADQAKACAAIABXAFQARgBDAG8AbgBmAGkAZwAu
AGMAcABwAA0ACgAgACAAVwBhAGwAbABUAGkAbQBlAC4AYwBwAHAADQAKACAAIABXAG8AcgBkAEwA
bwBjAGsALgBjAHAAcAANAAoAIAAgAFcAbwByAGsAUQB1AGUAdQBlAC4AYwBwAHAADQAKACAAIABX
AG8AcgBrAGUAcgBQAG8AbwBsAC4AYwBwAHAADQAKACAAIABkAHQAbwBhAC4AYwBwAHAADQAKACAA
IABiAGkAZwBuAHUAbQAtAGQAdABvAGEALgBjAGMADQAKACAAIABiAGkAZwBuAHUAbQAuAGMAYwAN
AAoAIAAgAGMAYQBjAGgAZQBkAC0AcABvAHcAZQByAHMALgBjAGMADQAKACAAIABkAGkAeQAtAGYA
cAAuAGMAYwANAAoAIAAgAGQAbwB1AGIAbABlAC0AYwBvAG4AdgBlAHIAcwBpAG8AbgAuAGMAYwAN
AAoAIAAgAGYAYQBzAHQALQBkAHQAbwBhAC4AYwBjAA0ACgAgACAAZgBpAHgAZQBkAC0AZAB0AG8A
YQAuAGMAYwANAAoAIAAgAHMAdAByAHQAbwBkAC4AYwBjAA0ACgAgACAAUABlAHIAcwBpAHMAdABl
AG4AdABDAG8AZABlAHIAcwAuAGMAcABwAA0ACgAgACAAUABlAHIAcwBpAHMAdABlAG4AdABEAGUA
YwBvAGQAZQByAC4AYwBwAHAADQAKACAAIABQAGUAcgBzAGkAcwB0AGUAbgB0AEUAbgBjAG8AZABl
AHIALgBjAHAAcAANAAoAIAAgAEEAUwBDAEkASQBMAGkAdABlAHIAYQBsAC4AYwBwAHAADQAKACAA
IABBAHQAbwBtAFMAdAByAGkAbgBnAC4AYwBwAHAADQAKACAAIABBAHQAbwBtAFMAdAByAGkAbgBn
AEkAbQBwAGwALgBjAHAAcAANAAoAIAAgAEEAdABvAG0AUwB0AHIAaQBuAGcAVABhAGIAbABlAC4A
YwBwAHAADQAKACAAIABCAGEAcwBlADYANAAuAGMAcABwAA0ACgAgACAAQwBTAHQAcgBpAG4AZwAu
AGMAcABwAA0ACgAgACAARQB4AHQAZQByAG4AYQBsAFMAdAByAGkAbgBnAEkAbQBwAGwALgBjAHAA
cAANAAoAIAAgAEwAaQBuAGUARQBuAGQAaQBuAGcALgBjAHAAcAANAAoAIAAgAFMAdAByAGkAbgBn
AEIAdQBmAGYAZQByAC4AYwBwAHAADQAKACAAIABTAHQAcgBpAG4AZwBCAHUAaQBsAGQAZQByAC4A
YwBwAHAADQAKACAAIABTAHQAcgBpAG4AZwBCAHUAaQBsAGQAZQByAEoAUwBPAE4ALgBjAHAAcAAN
AAoAIAAgAFMAdAByAGkAbgBnAEkAbQBwAGwALgBjAHAAcAANAAoAIAAgAFMAdAByAGkAbgBnAFYA
aQBlAHcALgBjAHAAcAANAAoAIAAgAFMAeQBtAGIAbwBsAEkAbQBwAGwALgBjAHAAcAANAAoAIAAg
AFMAeQBtAGIAbwBsAFIAZQBnAGkAcwB0AHIAeQAuAGMAcABwAA0ACgAgACAAVABlAHgAdABCAHIA
ZQBhAGsASQB0AGUAcgBhAHQAbwByAC4AYwBwAHAADQAKACAAIABUAGUAeAB0AFMAdAByAGUAYQBt
AC4AYwBwAHAADQAKACAAIABXAFQARgBTAHQAcgBpAG4AZwAuAGMAcABwAA0ACgAgACAAVQBUAGUA
eAB0AFAAcgBvAHYAaQBkAGUAcgAuAGMAcABwAA0ACgAgACAAVQBUAGUAeAB0AFAAcgBvAHYAaQBk
AGUAcgBMAGEAdABpAG4AMQAuAGMAcABwAA0ACgAgACAAVQBUAGUAeAB0AFAAcgBvAHYAaQBkAGUA
cgBVAFQARgAxADYALgBjAHAAcAANAAoAIAAgAEIAaQBuAGEAcgB5AFMAZQBtAGEAcABoAG8AcgBl
AC4AYwBwAHAADQAKACAAIABTAGkAZwBuAGEAbABzAC4AYwBwAHAADQAKACAAIABDAG8AbABsAGEA
dABvAHIARABlAGYAYQB1AGwAdAAuAGMAcABwAA0ACgAgACAAVQBUAEYAOABDAG8AbgB2AGUAcgBz
AGkAbwBuAC4AYwBwAHAADQAKACAAIABDAG8AbABsAGEAdABvAHIASQBDAFUALgBjAHAAcAANAAoA
IAAgAEkAQwBVAEgAZQBsAHAAZQByAHMALgBjAHAAcAANAAoAIAAgAFcAbwByAGsAUQB1AGUAdQBl
AEcAZQBuAGUAcgBpAGMALgBjAHAAcAANAAoAIAAgAFMAdAByAGkAbgBnAFcAaQBuAC4AYwBwAHAA
DQAKACAAIABUAGUAeAB0AEIAcgBlAGEAawBJAHQAZQByAGEAdABvAHIASQBuAHQAZQByAG4AYQBs
AEkAQwBVAFcAaQBuAC4AYwBwAHAADQAKACAAIABDAFAAVQBUAGkAbQBlAFcAaQBuAC4AYwBwAHAA
DQAKACAAIABEAGIAZwBIAGUAbABwAGUAcgBXAGkAbgAuAGMAcABwAA0ACgAgACAARgBpAGwAZQBT
AHkAcwB0AGUAbQBXAGkAbgAuAGMAcABwAA0ACgAgACAATABhAG4AZwB1AGEAZwBlAFcAaQBuAC4A
YwBwAHAADQAKACAAIABNAGEAaQBuAFQAaAByAGUAYQBkAFcAaQBuAC4AYwBwAHAADQAKACAAIABN
AGUAbQBvAHIAeQBGAG8AbwB0AHAAcgBpAG4AdABXAGkAbgAuAGMAcABwAA0ACgAgACAATQBlAG0A
bwByAHkAUAByAGUAcwBzAHUAcgBlAEgAYQBuAGQAbABlAHIAVwBpAG4ALgBjAHAAcAANAAoAIAAg
AE8AUwBBAGwAbABvAGMAYQB0AG8AcgBXAGkAbgAuAGMAcABwAA0ACgAgACAAUABhAHQAaABXAGEA
bABrAGUAcgAuAGMAcABwAA0ACgAgACAAUgB1AG4ATABvAG8AcABXAGkAbgAuAGMAcABwAA0ACgAg
ACAAVABoAHIAZQBhAGQAaQBuAGcAVwBpAG4ALgBjAHAAcAANAAoAIAAgAEMARgBVAFIATABFAHgA
dAByAGEAcwAuAGMAcABwAA0ACgAgACAARgBpAGwAZQBTAHkAcwB0AGUAbQBDAEYALgBjAHAAcAAN
AAoAIAAgAFUAUgBMAEMARgAuAGMAcABwAA0ACgAgACAAQQB0AG8AbQBTAHQAcgBpAG4AZwBJAG0A
cABsAEMARgAuAGMAcABwAA0ACgAgACAAUwB0AHIAaQBuAGcAQwBGAC4AYwBwAHAADQAKACAAIABT
AHQAcgBpAG4AZwBJAG0AcABsAEMARgAuAGMAcABwAA0ACgAgACAAUwB0AHIAaQBuAGcAVgBpAGUA
dwBDAEYALgBjAHAAcAANAAoATABpAG4AawA6AA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAg
AEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwA
IABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABFAG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABv
AG8AbABzAFwATQBTAFYAQwBcADEANAAuADIANgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMA
dABYADYANABcAHgANgA0AFwAbABpAG4AawAuAGUAeABlACAALwBFAFIAUgBPAFIAUgBFAFAATwBS
AFQAOgBRAFUARQBVAEUAIAAvAE8AVQBUADoAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAGIAaQBuADYANABcAFcAVABG
AC4AZABsAGwAIgAgAC8ASQBOAEMAUgBFAE0ARQBOAFQAQQBMADoATgBPACAALwBOAE8ATABPAEcA
TwAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBi
AGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0ACAALwBMAEkAQgBQAEEA
VABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBs
AGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkAQgBQAEEA
VABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBXAGUAYgBL
AGkAdABMAGkAYgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIANgA0ACAALwBMAEkAQgBQAEEA
VABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBXAGUAYgBL
AGkAdABMAGkAYgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIANgA0AC8AUgBlAGwAZQBhAHMA
ZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBi
AGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0AC8AUgBlAGwAZQBhAHMA
ZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBi
AGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0AC8AUgBlAGwAZQBhAHMA
ZQAvAFIAZQBsAGUAYQBzAGUAIAAuAC4AXAAuAC4AXAAuAC4AXAAuAC4AXABXAGUAYgBLAGkAdABM
AGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAbABpAGIANgA0AFwAaQBjAHUAZAB0AC4AbABpAGIA
IAAuAC4AXAAuAC4AXAAuAC4AXAAuAC4AXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBc
AHcAaQBuAFwAbABpAGIANgA0AFwAaQBjAHUAaQBuAC4AbABpAGIAIAAuAC4AXAAuAC4AXAAuAC4A
XAAuAC4AXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAbABpAGIANgA0
AFwAaQBjAHUAdQBjAC4AbABpAGIAIABEAGIAZwBIAGUAbABwAC4AbABpAGIAIABzAGgAbAB3AGEA
cABpAC4AbABpAGIAIAB3AGkAbgBtAG0ALgBsAGkAYgAgAEMARgBsAGkAdABlAC4AbABpAGIAIABr
AGUAcgBuAGUAbAAzADIALgBsAGkAYgAgAHUAcwBlAHIAMwAyAC4AbABpAGIAIABnAGQAaQAzADIA
LgBsAGkAYgAgAHcAaQBuAHMAcABvAG8AbAAuAGwAaQBiACAAcwBoAGUAbABsADMAMgAuAGwAaQBi
ACAAbwBsAGUAMwAyAC4AbABpAGIAIABvAGwAZQBhAHUAdAAzADIALgBsAGkAYgAgAHUAdQBpAGQA
LgBsAGkAYgAgAGMAbwBtAGQAbABnADMAMgAuAGwAaQBiACAAYQBkAHYAYQBwAGkAMwAyAC4AbABp
AGIAIAAvAE0AQQBOAEkARgBFAFMAVAAgAC8ATQBBAE4ASQBGAEUAUwBUAFUAQQBDADoAIgBsAGUA
dgBlAGwAPQAnAGEAcwBJAG4AdgBvAGsAZQByACcAIAB1AGkAQQBjAGMAZQBzAHMAPQAnAGYAYQBs
AHMAZQAnACIAIAAvAG0AYQBuAGkAZgBlAHMAdAA6AGUAbQBiAGUAZAAgAC8ARABFAEIAVQBHACAA
LwBQAEQAQgA6ACIARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBi
AHUAaQBsAGQAXwBhAG0AZAA2ADQALwBiAGkAbgA2ADQALwBXAFQARgAuAHAAZABiACIAIAAvAFMA
VQBCAFMAWQBTAFQARQBNADoAVwBJAE4ARABPAFcAUwAgAC8ATwBQAFQAOgBSAEUARgAgAC8ATwBQ
AFQAOgBJAEMARgAgAC8AVABMAEIASQBEADoAMQAgAC8ARABZAE4AQQBNAEkAQwBCAEEAUwBFACAA
LwBOAFgAQwBPAE0AUABBAFQAIAAvAEkATQBQAEwASQBCADoAIgBGADoALwBnAGkAdABQAC8AVwBl
AGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYA
NAAvAFcAVABGAC4AbABpAGIAIgAgAC8ATQBBAEMASABJAE4ARQA6AFgANgA0ACAAIAAvAG0AYQBj
AGgAaQBuAGUAOgB4ADYANAAgAC8ARABMAEwAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAEEAUwBDAEkASQBDAFQAeQBwAGUALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAQQBzAHMAZQByAHQAaQBvAG4AcwAuAG8AYgBqAA0ACgAgACAAVwBUAEYA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAHUAdABvAG0AYQB0AGkAYwBUAGgAcgBlAGEAZAAu
AG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABCAGEAZwAuAG8A
YgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABCAGkAdABWAGUAYwB0
AG8AcgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAFAA
VQBUAGkAbQBlAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEMAbABvAGMAawBUAHkAcABlAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAEMAbwBtAHAAaQBsAGEAdABpAG8AbgBUAGgAcgBlAGEAZAAuAG8AYgBqAA0ACgAg
ACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AbgBjAHUAcgByAGUAbgB0AEIA
dQBmAGYAZQByAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEMAbwBuAGMAdQByAHIAZQBuAHQAUAB0AHIASABhAHMAaABTAGUAdAAuAG8AYgBqAA0ACgAgACAA
VwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AdQBuAHQAaQBuAGcATABvAGMAawAu
AG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAHIAbwBzAHMA
VABoAHIAZQBhAGQAQwBvAHAAaQBlAHIALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAQwByAG8AcwBzAFQAaAByAGUAYQBkAFQAYQBzAGsASABhAG4AZABsAGUA
cgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAHIAeQBw
AHQAbwBnAHIAYQBwAGgAaQBjAFUAdABpAGwAaQB0AGkAZQBzAC4AbwBiAGoADQAKACAAIABXAFQA
RgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAYQBs
AGwAeQBSAGEAbgBkAG8AbQBOAHUAbQBiAGUAcgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABDAHUAcgByAGUAbgB0AFQAaQBtAGUALgBvAGIAagANAAoAIAAg
AFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARABhAHQAYQBMAG8AZwAuAG8AYgBqAA0A
CgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAGEAdABlAE0AYQB0AGgALgBv
AGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARABlAGIAdQBnAEgA
ZQBhAHAALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARgBh
AHMAdABCAGkAdABWAGUAYwB0AG8AcgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABGAGEAcwB0AE0AYQBsAGwAbwBjAC4AbwBiAGoADQAKACAAIABXAFQARgAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEYAaQBsAGUAUAByAGkAbgB0AFMAdAByAGUAYQBtAC4A
bwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEYAaQBsAGUAUwB5
AHMAdABlAG0ALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
RgB1AG4AYwB0AGkAbwBuAEQAaQBzAHAAYQB0AGMAaABlAHIALgBvAGIAagANAAoAIAAgAFcAVABG
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARwBpAGcAYQBjAGEAZwBlAC4AbwBiAGoADQAKACAA
IABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEcAbABvAGIAYQBsAFYAZQByAHMAaQBv
AG4ALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARwByAGUA
ZwBvAHIAaQBhAG4ARABhAHQAZQBUAGkAbQBlAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAEgAYQBzAGgAVABhAGIAbABlAC4AbwBiAGoADQAKACAAIABXAFQA
RgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEgAZQB4AE4AdQBtAGIAZQByAC4AbwBiAGoADQAK
ACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEoAUwBPAE4AVgBhAGwAdQBlAHMA
LgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASgBTAFYAYQBs
AHUAZQBNAGEAbABsAG8AYwAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABMAGEAbgBnAHUAYQBnAGUALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwATABvAGMAawAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABMAG8AYwBrAGUAZABQAHIAaQBuAHQAUwB0AHIAZQBhAG0ALgBvAGIAagAN
AAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATABvAGcAZwBlAHIALgBvAGIA
agANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATQBhAGkAbgBUAGgAcgBl
AGEAZAAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABNAGUA
ZABpAGEAVABpAG0AZQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABNAGUAbQBvAHIAeQBQAHIAZQBzAHMAdQByAGUASABhAG4AZABsAGUAcgAuAG8AYgBqAA0A
CgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABNAGUAdABhAEEAbABsAG8AYwBh
AHQAbwByAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAE0A
bwBuAG8AdABvAG4AaQBjAFQAaQBtAGUALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwATgB1AG0AYgBlAHIATwBmAEMAbwByAGUAcwAuAG8AYgBqAA0ACgAgACAA
VwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABPAFMATABvAGcAUAByAGkAbgB0AFMAdABy
AGUAYQBtAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAE8A
UwBSAGEAbgBkAG8AbQBTAG8AdQByAGMAZQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABPAGIAagBlAGMAdABJAGQAZQBuAHQAaQBmAGkAZQByAC4AbwBiAGoA
DQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFAAYQBnAGUAQgBsAG8AYwBr
AC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFAAYQByAGEA
bABsAGUAbABIAGUAbABwAGUAcgBQAG8AbwBsAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAFAAYQByAGEAbABsAGUAbABKAG8AYgBzAEcAZQBuAGUAcgBpAGMA
LgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABhAHIAawBp
AG4AZwBMAG8AdAAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABQAHIAaQBuAHQAUwB0AHIAZQBhAG0ALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAUAByAG8AYwBlAHMAcwBQAHIAaQB2AGkAbABlAGcAZQAuAG8AYgBqAA0A
CgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAEEATQBTAGkAegBlAC4AbwBi
AGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAYQBuAGQAbwBtAEQA
ZQB2AGkAYwBlAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFIAYQBuAGQAbwBtAE4AdQBtAGIAZQByAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFIAZQBhAGQAVwByAGkAdABlAEwAbwBjAGsALgBvAGIAagANAAoAIAAg
AFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBlAGYAQwBvAHUAbgB0AGUAZAAuAG8A
YgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAZgBDAG8AdQBu
AHQAZQBkAEEAcgByAGEAeQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABSAGUAZgBDAG8AdQBuAHQAZQBkAEwAZQBhAGsAQwBvAHUAbgB0AGUAcgAuAG8AYgBq
AA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAHUAbgBMAG8AbwBwAC4A
bwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMASABBADEALgBv
AGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBlAGMAbwBuAGQA
cwAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAGUAZwBt
AGUAbgB0AGUAZABWAGUAYwB0AG8AcgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABTAGkAeABDAGgAYQByAGEAYwB0AGUAcgBIAGEAcwBoAC4AbwBiAGoADQAK
ACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAbQBhAGwAbABQAHQAcgBTAGUA
dAAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAYQBj
AGsAQgBvAHUAbgBkAHMALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAUwB0AGEAYwBrAFAAbwBpAG4AdABlAHIALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAUwB0AGEAYwBrAFMAdABhAHQAcwAuAG8AYgBqAA0ACgAgACAA
VwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAYQBjAGsAVAByAGEAYwBlAC4AbwBi
AGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAdAByAGkAbgBnAFAA
cgBpAG4AdABTAHQAcgBlAGEAbQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABUAGgAcgBlAGEAZABHAHIAbwB1AHAALgBvAGIAagANAAoAIAAgAFcAVABGAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVABoAHIAZQBhAGQATQBlAHMAcwBhAGcAZQAuAG8AYgBq
AA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABUAGgAcgBlAGEAZABpAG4A
ZwAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABUAGkAbQBl
AFcAaQB0AGgARAB5AG4AYQBtAGkAYwBDAGwAbwBjAGsAVAB5AHAAZQAuAG8AYgBqAA0ACgAgACAA
VwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABUAGkAbQBpAG4AZwBTAGMAbwBwAGUALgBv
AGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVQBSAEwALgBvAGIA
agANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVQBSAEwASABlAGwAcABl
AHIAcwAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABVAFIA
TABQAGEAcgBzAGUAcgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABVAFUASQBEAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAFUAbgBpAHEAdQBlAEEAcgByAGEAeQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABWAGUAYwB0AG8AcgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABXAFQARgBBAHMAcwBlAHIAdABpAG8AbgBzAC4AbwBiAGoADQAK
ACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFcAVABGAEMAbwBuAGYAaQBnAC4A
bwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFcAYQBsAGwAVABp
AG0AZQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABXAG8A
cgBkAEwAbwBjAGsALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwAVwBvAHIAawBRAHUAZQB1AGUALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAVwBvAHIAawBlAHIAUABvAG8AbAAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXABkAHQAbwBhAC4AbwBiAGoADQAKACAAIAAiAFcAVABGAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAYgBpAGcAbgB1AG0ALQBkAHQAbwBhAC4AbwBiAGoAIgAN
AAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAYgBpAGcAbgB1AG0ALgBvAGIA
agANAAoAIAAgACIAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABjAGEAYwBoAGUAZAAt
AHAAbwB3AGUAcgBzAC4AbwBiAGoAIgANAAoAIAAgACIAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABkAGkAeQAtAGYAcAAuAG8AYgBqACIADQAKACAAIAAiAFcAVABGAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAZABvAHUAYgBsAGUALQBjAG8AbgB2AGUAcgBzAGkAbwBuAC4AbwBiAGoA
IgANAAoAIAAgACIAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABmAGEAcwB0AC0AZAB0
AG8AYQAuAG8AYgBqACIADQAKACAAIAAiAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
ZgBpAHgAZQBkAC0AZAB0AG8AYQAuAG8AYgBqACIADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAHMAdAByAHQAbwBkAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFAAZQByAHMAaQBzAHQAZQBuAHQAQwBvAGQAZQByAHMALgBvAGIAagAN
AAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABlAHIAcwBpAHMAdABlAG4A
dABEAGUAYwBvAGQAZQByAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFAAZQByAHMAaQBzAHQAZQBuAHQARQBuAGMAbwBkAGUAcgAuAG8AYgBqAA0ACgAgACAA
VwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAFMAQwBJAEkATABpAHQAZQByAGEAbAAu
AG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAHQAbwBtAFMA
dAByAGkAbgBnAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEEAdABvAG0AUwB0AHIAaQBuAGcASQBtAHAAbAAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABBAHQAbwBtAFMAdAByAGkAbgBnAFQAYQBiAGwAZQAuAG8AYgBq
AA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABCAGEAcwBlADYANAAuAG8A
YgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAFMAdAByAGkAbgBn
AC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEUAeAB0AGUA
cgBuAGEAbABTAHQAcgBpAG4AZwBJAG0AcABsAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAEwAaQBuAGUARQBuAGQAaQBuAGcALgBvAGIAagANAAoAIAAgAFcA
VABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwB0AHIAaQBuAGcAQgB1AGYAZgBlAHIALgBv
AGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwB0AHIAaQBuAGcA
QgB1AGkAbABkAGUAcgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABTAHQAcgBpAG4AZwBCAHUAaQBsAGQAZQByAEoAUwBPAE4ALgBvAGIAagANAAoAIAAgAFcA
VABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwB0AHIAaQBuAGcASQBtAHAAbAAuAG8AYgBq
AA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAcgBpAG4AZwBWAGkA
ZQB3AC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAeQBt
AGIAbwBsAEkAbQBwAGwALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAUwB5AG0AYgBvAGwAUgBlAGcAaQBzAHQAcgB5AC4AbwBiAGoADQAKACAAIABXAFQARgAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQAZQB4AHQAQgByAGUAYQBrAEkAdABlAHIAYQB0AG8A
cgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABUAGUAeAB0
AFMAdAByAGUAYQBtAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAFcAVABGAFMAdAByAGkAbgBnAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAFUAVABlAHgAdABQAHIAbwB2AGkAZABlAHIALgBvAGIAagANAAoAIAAgAFcA
VABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVQBUAGUAeAB0AFAAcgBvAHYAaQBkAGUAcgBM
AGEAdABpAG4AMQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABVAFQAZQB4AHQAUAByAG8AdgBpAGQAZQByAFUAVABGADEANgAuAG8AYgBqAA0ACgAgACAAVwBU
AEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABCAGkAbgBhAHIAeQBTAGUAbQBhAHAAaABvAHIA
ZQAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAGkAZwBu
AGEAbABzAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEMA
bwBsAGwAYQB0AG8AcgBEAGUAZgBhAHUAbAB0AC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAFUAVABGADgAQwBvAG4AdgBlAHIAcwBpAG8AbgAuAG8AYgBqAA0A
CgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AbABsAGEAdABvAHIASQBD
AFUALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBDAFUA
SABlAGwAcABlAHIAcwAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABXAG8AcgBrAFEAdQBlAHUAZQBHAGUAbgBlAHIAaQBjAC4AbwBiAGoADQAKACAAIABXAFQA
RgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAdAByAGkAbgBnAFcAaQBuAC4AbwBiAGoADQAK
ACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQAZQB4AHQAQgByAGUAYQBrAEkA
dABlAHIAYQB0AG8AcgBJAG4AdABlAHIAbgBhAGwASQBDAFUAVwBpAG4ALgBvAGIAagANAAoAIAAg
AFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQwBQAFUAVABpAG0AZQBXAGkAbgAuAG8A
YgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAGIAZwBIAGUAbABw
AGUAcgBXAGkAbgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABGAGkAbABlAFMAeQBzAHQAZQBtAFcAaQBuAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAEwAYQBuAGcAdQBhAGcAZQBXAGkAbgAuAG8AYgBqAA0ACgAgACAA
VwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABNAGEAaQBuAFQAaAByAGUAYQBkAFcAaQBu
AC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAE0AZQBtAG8A
cgB5AEYAbwBvAHQAcAByAGkAbgB0AFcAaQBuAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAE0AZQBtAG8AcgB5AFAAcgBlAHMAcwB1AHIAZQBIAGEAbgBkAGwA
ZQByAFcAaQBuAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AE8AUwBBAGwAbABvAGMAYQB0AG8AcgBXAGkAbgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABQAGEAdABoAFcAYQBsAGsAZQByAC4AbwBiAGoADQAKACAAIABX
AFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAdQBuAEwAbwBvAHAAVwBpAG4ALgBvAGIA
agANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVABoAHIAZQBhAGQAaQBu
AGcAVwBpAG4ALgBvAGIAagANAAoAIAAgAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
QwBGAFUAUgBMAEUAeAB0AHIAYQBzAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEYAaQBsAGUAUwB5AHMAdABlAG0AQwBGAC4AbwBiAGoADQAKACAAIABXAFQA
RgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFUAUgBMAEMARgAuAG8AYgBqAA0ACgAgACAAVwBU
AEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABBAHQAbwBtAFMAdAByAGkAbgBnAEkAbQBwAGwA
QwBGAC4AbwBiAGoADQAKACAAIABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAdABy
AGkAbgBnAEMARgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABTAHQAcgBpAG4AZwBJAG0AcABsAEMARgAuAG8AYgBqAA0ACgAgACAAVwBUAEYALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABTAHQAcgBpAG4AZwBWAGkAZQB3AEMARgAuAG8AYgBqAA0ACgAgACAA
IAAgACAAQwByAGUAYQB0AGkAbgBnACAAbABpAGIAcgBhAHIAeQAgAEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0AC8AVwBUAEYALgBsAGkAYgAgAGEAbgBkACAAbwBiAGoAZQBjAHQAIABGADoALwBnAGkAdABQ
AC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwA
aQBiADYANAAvAFcAVABGAC4AZQB4AHAADQAKACAAIABXAFQARgAuAHYAYwB4AHAAcgBvAGoAIAAt
AD4AIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAGIAaQBuADYANABcAFcAVABGAC4AZABsAGwADQAKAEYAaQBuAGEAbABp
AHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYA
aQBsAGUAIAAiAFcAVABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVwBUAEYALgB0AGwAbwBn
AFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIALgANAAoAIAAgAFQAbwB1AGMA
aABpAG4AZwAgACIAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABXAFQARgAuAHQAbABv
AGcAXABXAFQARgAuAGwAYQBzAHQAYgB1AGkAbABkAHMAdABhAHQAZQAiAC4ADQAKAEQAbwBuAGUA
IABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIA
YwBlAFwAVwBUAEYAXAB3AHQAZgBcAFcAVABGAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1
AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkA
bgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwA
dwB0AGYAXABXAFQARgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBl
AGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEwA
TABJAG4AdABTAGUAdAB0AGkAbgBnAHMARQB4AHQAcgBhAGMAdABvAHIALgB2AGMAeABwAHIAbwBq
AC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADIAOAApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQAZgBcAFcAVABGAF8AQwBvAHAA
eQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAz
ADEAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQA
KABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwA
VwBUAEYAXAB3AHQAZgBcAFcAVABGAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcABy
AG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAzADEAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4A
ZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAVABGAFwAdwB0AGYAXABXAFQARgBfAEMA
bwBwAHkASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBvAGoAIgAgACgAMwAyACkAIABvAG4AIABu
AG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoA
QwBvAHIAZQBDAGwAZQBhAG4AOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0
AG8AcgB5ACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABXAFQARgBfAEMAbwBwAHkASABlAGEA
ZABlAHIAcwBcACIALgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUAaQBsAGQAOgANAAoAIAAg
AEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgB4ADYANABcAFIAZQBsAGUA
YQBzAGUAXABXAFQARgBfAEMAbwBwAHkASABlAGEAZABlAHIAcwBcAFcAVABGAF8AQwBvAHAAeQBI
AGUAYQBkAGUAcgBzAC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABpAHoAZQBCAHUA
aQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIAeAA2ADQAXABS
AGUAbABlAGEAcwBlAFwAVwBUAEYAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMAXABXAFQARgBfAEMA
bwBwAHkASABlAGEAZABlAHIAcwAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABi
AHUAaQBsAGQAIgAgAGIAZQBjAGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIA
IAB3AGEAcwAgAHMAcABlAGMAaQBmAGkAZQBkAC4ADQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwAZAA6
AA0ACgAgACAAIgBUAGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABDAE0AYQBr
AGUARgBpAGwAZQBzAFwANQAxADMAYwBhADEANwA0ADUAMAA4AGYAYwBkADcAYwAyAGUAYQA5ADYA
MgBkADYAMAA4ADQAZQAwAGIAMQBmAFwAVwBUAEYAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMALgBy
AHUAbABlACcAIABkAGUAcABlAG4AZABzACAAbwBuACAAJwBGADoAXABHAEkAVABQAFwAVwBFAEIA
SwBJAFQAXABXAEUAQgBLAEkAVABcAEIAVQBJAEwARABfAEEATQBEADYANABcAFcAVABGAFwASABF
AEEARABFAFIAUwBcAFcAVABGAFwAQQBTAEMASQBJAEMAVABZAFAARQAuAEgAJwAgAHcAaABpAGMA
aAAgAGkAcwAgAHAAcgBvAGQAdQBjAGUAZAAgAGIAeQAgAHQAaABlACAAYgB1AGkAbABkACAAbwBm
ACAAJwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVwBUAEYAXAB3AHQAZgBcAEEAUwBDAEkASQBDAFQAeQBwAGUALgBoACcALgAgAFQAaABl
ACAAaQB0AGUAbQBzACAAYwBhAG4AbgBvAHQAIABiAGUAIABiAHUAaQBsAHQAIABpAG4AIABwAGEA
cgBhAGwAbABlAGwALgAiAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AQQBTAEMASQBJAEMAVAB5AHAA
ZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBBAGcAZwByAGUAZwBhAHQAZQBMAG8AZwBnAGUA
cgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBBAGwAZwBvAHIAaQB0AGgAbQBzAC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBh
AGQAZQByAHMALwB3AHQAZgAvAEEAbgBzAGkAQwBvAGwAbwByAHMALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAv
AHcAdABmAC8AQQBzAHMAZQByAHQAaQBvAG4AcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBB
AHQAbwBtAGkAYwBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEEAdQB0AG8AZAByAGEAaQBu
AGUAZABQAG8AbwBsAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEEAdQB0AG8AbQBhAHQAaQBj
AFQAaAByAGUAYQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEIAYQBjAGsAdwBhAHIAZABz
AEcAcgBhAHAAaAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
LgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBCAGEAZwAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBCAGEAZwBUAG8ASABhAHMAaABNAGEAcAAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBCAGkAdABWAGUAYwB0AG8AcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBCAGkA
dABtAGEAcAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAu
AC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBCAGwAbwBjAGsATwBiAGoAQwBFAHgA
YwBlAHAAdABpAG8AbgBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEIAbABvAGMAawBQAHQA
cgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBCAGwAbwBvAG0ARgBpAGwAdABlAHIALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABl
AGEAZABlAHIAcwAvAHcAdABmAC8AQgBvAG8AbABlAGEAbgBMAGEAdAB0AGkAYwBlAC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBh
AGQAZQByAHMALwB3AHQAZgAvAEIAbwB4AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEIAbwB4
AFAAdAByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4A
LwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEIAcgBpAGcAYQBuAGQALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8AQgB1AGIAYgBsAGUAUwBvAHIAdAAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBCAHUAbQBwAFAAbwBpAG4AdABlAHIAQQBsAGwAbwBjAGEAdABvAHIALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8AQgB5AHQAZQBPAHIAZABlAHIALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcA
dABmAC8AQwBQAFUAVABpAG0AZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBDAGEAZwBlAGQA
UAB0AHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AQwBhAGcAZQBkAFUAbgBpAHEAdQBlAFAA
dAByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAYQBsAGwAYgBhAGMAawBBAGcAZwByAGUA
ZwBhAHQAbwByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAu
AC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAaABlAGMAawBlAGQAQQByAGkA
dABoAG0AZQB0AGkAYwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBDAGgAZQBjAGsAZQBkAEIA
bwBvAGwAZQBhAG4ALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AQwBsAG8AYwBrAFQAeQBwAGUA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABG
AC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AQwBvAG0AbQBhAFAAcgBpAG4AdABlAHIALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABl
AGEAZABlAHIAcwAvAHcAdABmAC8AQwBvAG0AcABhAGMAdABQAG8AaQBuAHQAZQByAFQAdQBwAGwA
ZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBDAG8AbQBwAGEAYwB0AFIAZQBmAFAAdAByAFQA
dQBwAGwAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAu
AC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBDAG8AbQBwAGkAbABhAHQAaQBvAG4A
VABoAHIAZQBhAGQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AQwBvAG0AcABpAGwAZQByAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAv
AEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAbwBtAHAAbABlAHQAaQBvAG4ASABhAG4AZABsAGUA
cgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBDAG8AbgBjAHUAcgByAGUAbgB0AEIAdQBmAGYA
ZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAbwBuAGMAdQByAHIAZQBuAHQAUAB0AHIA
SABhAHMAaABTAGUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBDAG8AbgBjAHUAcgByAGUA
bgB0AFYAZQBjAHQAbwByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAbwBuAGQAaQB0AGkA
bwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAbwB1AG4AdABpAG4AZwBMAG8AYwBrAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAv
AEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAcgBvAHMAcwBUAGgAcgBlAGEAZABDAG8AcABpAGUA
cgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBDAHIAbwBzAHMAVABoAHIAZQBhAGQAUQB1AGUA
dQBlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAcgBvAHMAcwBUAGgAcgBlAGEAZABUAGEA
cwBrAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEMAcgBvAHMAcwBUAGgAcgBlAGEAZABUAGEA
cwBrAEgAYQBuAGQAbABlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AQwByAHkAcAB0AG8A
ZwByAGEAcABoAGkAYwBVAHQAaQBsAGkAdABpAGUAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjAGEAbABsAHkAUgBhAG4AZABvAG0ATgB1AG0AYgBl
AHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcA
VABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARABhAHQAYQBMAG8AZwAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBEAGEAdABhAE0AdQB0AGUAeAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBEAGEAdABhAFIAZQBmAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEQAYQB0AGUATQBhAHQA
aAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBEAGUAYgB1AGcASABlAGEAcAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBEAGUAYgB1AGcAVQB0AGkAbABpAHQAaQBlAHMALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABl
AHIAcwAvAHcAdABmAC8ARABlAGYAZQByAHIAYQBiAGwAZQBSAGUAZgBDAG8AdQBuAHQAZQBkAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAv
AEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEQAZQBxAHUAZQAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwBEAGkAcwBhAGwAbABvAHcAQwBUAHkAcABlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AEQAbwBtAGkAbgBhAHQAbwByAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARABvAHUAYgBs
AHkATABpAG4AawBlAGQATABpAHMAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBEAHUAbQBi
AFAAdAByAFQAcgBhAGkAdABzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEQAdQBtAGIAVgBh
AGwAdQBlAFQAcgBhAGkAdABzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEUAbgB1AG0AQwBs
AGEAcwBzAE8AcABlAHIAYQB0AG8AcgBPAHYAZQByAGwAbwBhAGQAcwAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBz
AC8AdwB0AGYALwBFAG4AdQBtAFQAcgBhAGkAdABzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AEUAeABwAGUAYwB0AGUAZAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBFAHgAcABvAHIAdABN
AGEAYwByAG8AcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
LgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBGAGEAaQBsAHUAcgBlAEEAYwB0
AGkAbwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4A
LwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEYAYQBzAHQAQgBpAHQAVgBlAGMAdABv
AHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcA
VABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARgBhAHMAdABNAGEAbABsAG8AYwAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwBGAGEAcwB0AFQATABTAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAEYAaQBsAGUATQBlAHQAYQBkAGEAdABhAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEYA
aQBsAGUAUAByAGkAbgB0AFMAdAByAGUAYQBtAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEYA
aQBsAGUAUwB5AHMAdABlAG0ALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARgBsAGkAcABCAHkA
dABlAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARgBvAHIAYgBpAGQASABlAGEAcABBAGwA
bABvAGMAYQB0AGkAbwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEYAbwByAHcAYQByAGQA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABG
AC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARgB1AG4AYwB0AGkAbwBuAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAEYAdQBuAGMAdABpAG8AbgBEAGkAcwBwAGEAdABjAGgAZQByAC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBh
AGQAZQByAHMALwB3AHQAZgAvAEYAdQBuAGMAdABpAG8AbgBUAHIAYQBpAHQAcwAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBHAGUAdABQAHQAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBH
AGkAZwBhAGMAYQBnAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARwBsAG8AYgBhAGwAVgBl
AHIAcwBpAG8AbgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
LgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBHAHIAYQBwAGgATgBvAGQAZQBX
AG8AcgBrAGwAaQBzAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ARwByAGUAZwBvAHIAaQBh
AG4ARABhAHQAZQBUAGkAbQBlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEgAYQBzAGgAQwBv
AHUAbgB0AGUAZABTAGUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBIAGEAcwBoAEYAdQBu
AGMAdABpAG8AbgBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEgAYQBzAGgASQB0AGUAcgBh
AHQAbwByAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4A
LgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ASABhAHMAaABNAGEAcAAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwBIAGEAcwBoAE0AZQB0AGgAbwBkAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAEgAYQBzAGgAUwBlAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ASABhAHMA
aABUAGEAYgBsAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ASABhAHMAaABUAHIAYQBpAHQA
cwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBIAGEAcwBoAGUAcgAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBz
AC8AdwB0AGYALwBIAGUAeABOAHUAbQBiAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBJ
AGQAZQBuAHQAaQBmAGkAZQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEkAbgBkAGUAbgB0
AGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8A
VwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBJAG4AZABlAHgASwBlAHkAVAB5AHAAZQAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYA
LwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBJAG4AZABlAHgATQBhAHAALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIA
cwAvAHcAdABmAC8ASQBuAGQAZQB4AFMAZQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEkA
bgBkAGUAeABTAHAAYQByAHMAZQBTAGUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBJAG4A
ZABlAHgAZQBkAEMAbwBuAHQAYQBpAG4AZQByAEkAdABlAHIAYQB0AG8AcgAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBJAG4AbABpAG4AZQBBAFMATQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBJAG4AcwBlAHIAdABpAG8AbgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBJAG4AcwB0AGEA
bgBjAGUAQwBvAHUAbgB0AGUAZAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBJAHMAbwBNAGEA
bABsAG8AYwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAu
AC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBJAHMAbwBNAGEAbABsAG8AYwBJAG4A
bABpAG4AZQBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAu
AC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEkAdABlAHIAYQB0AG8AcgBBAGQA
YQBwAHQAbwByAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ASQB0AGUAcgBhAHQAbwByAFIA
YQBuAGcAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAu
AC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBKAFMATwBOAFYAYQBsAHUAZQBzAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAv
AEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEoAUwBWAGEAbAB1AGUATQBhAGwAbABvAGMALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABl
AGEAZABlAHIAcwAvAHcAdABmAC8ASwBlAHkAVgBhAGwAdQBlAFAAYQBpAHIALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABl
AHIAcwAvAHcAdABmAC8ATABFAEIARABlAGMAbwBkAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwBMAGEAbgBnAHUAYQBnAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ATABpAHMAdABE
AHUAbQBwAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4A
LwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEwAaQBzAHQASABhAHMAaABTAGUAdAAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYA
LwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBMAGkAdgBlAG4AZQBzAHMALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIA
cwAvAHcAdABmAC8ATABvAGMAawAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBMAG8AYwBrAEEA
bABnAG8AcgBpAHQAaABtAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEwAbwBjAGsAQQBsAGcA
bwByAGkAdABoAG0ASQBuAGwAaQBuAGUAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBMAG8A
YwBrAGUAZABQAHIAaQBuAHQAUwB0AHIAZQBhAG0ALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8A
TABvAGMAawBlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ATABvAGMAawBsAGUAcwBzAEIA
YQBnAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAEwAbwBnAGcAZQByAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAEwAbwBnAGcAZQByAEgAZQBsAHAAZQByAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3
AHQAZgAvAEwAbwBnAGcAaQBuAGcAQQBjAGMAdQBtAHUAbABhAHQAbwByAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAEwAbwBnAGcAaQBuAGcASABhAHMAaABJAEQALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAv
AHcAdABmAC8ATABvAGcAZwBpAG4AZwBIAGEAcwBoAE0AYQBwAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3
AHQAZgAvAEwAbwBnAGcAaQBuAGcASABhAHMAaABTAGUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwBMAG8AZwBnAGkAbgBnAEgAYQBzAGgAVAByAGEAaQB0AHMALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAv
AHcAdABmAC8ATQBhAGMAaABTAGUAbgBkAFIAaQBnAGgAdAAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwBNAGEAaQBuAFQAaAByAGUAYQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAE0AYQBp
AG4AVABoAHIAZQBhAGQARABhAHQAYQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBNAGEAbABs
AG8AYwBQAHQAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
LgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBNAGEAcgBrAGEAYgBsAGUALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8A
SABlAGEAZABlAHIAcwAvAHcAdABmAC8ATQBhAHQAaABFAHgAdAByAGEAcwAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBNAGUAZABpAGEAVABpAG0AZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBNAGUAbQBvAHIAeQBGAG8AbwB0AHAAcgBpAG4AdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBNAGUAbQBvAHIAeQBQAHIAZQBzAHMAdQByAGUASABhAG4AZABsAGUAcgAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBNAGUAcwBzAGEAZwBlAFEAdQBlAHUAZQAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBNAGUAdABhAEEAbABsAG8AYwBhAHQAbwByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAE0AZQB0AGEAQQBsAGwAbwBjAGEAdABvAHIASABhAG4AZABsAGUALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIA
cwAvAHcAdABmAC8ATQBlAHQAYQBBAGwAbABvAGMAYQB0AG8AcgBQAHQAcgAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBNAG8AbgBvAHQAbwBuAGkAYwBUAGkAbQBlAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAE4AYQBrAGUAZABQAHQAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBOAGEA
awBlAGQAUgBlAGYALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ATgBhAHQAdQByAGEAbABMAG8A
bwBwAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ATgBlAHYAZQByAEQAZQBzAHQAcgBvAHkA
ZQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAE4AbwBMAG8AYwBrAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAE4AbwBUAGEAaQBsAEMAYQBsAGwAcwAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwBOAG8AbgBjAG8AcAB5AGEAYgBsAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ATgBv
AG4AbQBvAHYAYQBiAGwAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBOAG8AdABGAG8AdQBu
AGQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcA
VABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8ATgB1AG0AYgBlAHIATwBmAEMAbwByAGUAcwAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYA
LwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBPAFMAQQBsAGwAbwBjAGEAdABvAHIALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8ATwBTAEwAbwBnAFAAcgBpAG4AdABTAHQAcgBlAGEAbQAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwBPAFMATwBiAGoAZQBjAHQAUAB0AHIALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIA
cwAvAHcAdABmAC8ATwBTAFIAYQBuAGQAbwBtAFMAbwB1AHIAYwBlAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAE8AYgBqAEMAUgB1AG4AdABpAG0AZQBFAHgAdAByAGEAcwAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBPAGIAagBlAGMAdABJAGQAZQBuAHQAaQBmAGkAZQByAC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQA
ZQByAHMALwB3AHQAZgAvAE8AcAB0AGkAbwBuAFMAZQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAE8AcAB0AGkAbwBuAFMAZQB0AEgAYQBzAGgALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8A
TwBwAHQAaQBvAG4AYQBsAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAE8AcgBkAGUAcgBNAGEA
awBlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUABhAGMAawBlAGQALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABl
AHIAcwAvAHcAdABmAC8AUABhAGMAawBlAGQAUgBlAGYALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABm
AC8AUABhAGMAawBlAGQAUgBlAGYAUAB0AHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUABh
AGcAZQBBAGwAbABvAGMAYQB0AGkAbwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAYQBn
AGUAQgBsAG8AYwBrAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAYQBnAGUAUgBlAHMAZQBy
AHYAYQB0AGkAbwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAYQByAGEAbABsAGUAbABI
AGUAbABwAGUAcgBQAG8AbwBsAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAYQByAGEAbABs
AGUAbABKAG8AYgBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAYQByAGEAbABsAGUAbABK
AG8AYgBzAEcAZQBuAGUAcgBpAGMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUABhAHIAYQBs
AGwAZQBsAEoAbwBiAHMATABpAGIAZABpAHMAcABhAHQAYwBoAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3
AHQAZgAvAFAAYQByAGEAbABsAGUAbABKAG8AYgBzAE8AcABlAG4ATQBQAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAFAAYQByAGEAbABsAGUAbABWAGUAYwB0AG8AcgBJAHQAZQByAGEAdABvAHIA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABG
AC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUABhAHIAawBpAG4AZwBMAG8AdAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBQAGwAYQB0AGYAbwByAG0ALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABm
AC8AUABsAGEAdABmAG8AcgBtAEMAYQBsAGwAaQBuAGcAQwBvAG4AdgBlAG4AdABpAG8AbgBzAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAv
AEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAbABhAHQAZgBvAHIAbQBDAFAAVQAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBQAGwAYQB0AGYAbwByAG0ARQBuAGEAYgBsAGUALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABl
AHIAcwAvAHcAdABmAC8AUABsAGEAdABmAG8AcgBtAEUAbgBhAGIAbABlAEMAbwBjAG8AYQAuAGgA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBI
AGUAYQBkAGUAcgBzAC8AdwB0AGYALwBQAGwAYQB0AGYAbwByAG0ARQBuAGEAYgBsAGUAUABsAGEA
eQBTAHQAYQB0AGkAbwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAbABhAHQAZgBvAHIA
bQBFAG4AYQBiAGwAZQBXAGkAbgBBAHAAcABsAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8A
UABsAGEAdABmAG8AcgBtAEUAbgBhAGIAbABlAFcAaQBuAEMAYQBpAHIAbwAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwBQAGwAYQB0AGYAbwByAG0ASABhAHYAZQAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBQAGwAYQB0AGYAbwByAG0ATABlAGcAYQBjAHkALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcA
dABmAC8AUABsAGEAdABmAG8AcgBtAE8AUwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBQAGwA
YQB0AGYAbwByAG0AUgBlAGcAaQBzAHQAZQByAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8A
UABsAGEAdABmAG8AcgBtAFUAcwBlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAbwBpAG4A
dABlAHIAQwBvAG0AcABhAHIAaQBzAG8AbgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBQAG8A
aQBuAHQAZQByAFAAcgBlAHAAYQByAGEAdABpAG8AbgBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAFAAcgBpAG4AdABTAHQAcgBlAGEAbQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBQAHIA
aQBvAHIAaQB0AHkAUQB1AGUAdQBlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAcgBvAGMA
ZQBzAHMASQBEAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAu
AC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFAAcgBvAGMAZQBzAHMAUAByAGkA
dgBpAGwAZQBnAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUAB0AHIAVABhAGcALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABl
AGEAZABlAHIAcwAvAHcAdABmAC8AUgBBAE0AUwBpAHoAZQAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwBSAGEAbgBkAG8AbQBEAGUAdgBpAGMAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBS
AGEAbgBkAG8AbQBOAHUAbQBiAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBSAGEAbgBk
AG8AbQBOAHUAbQBiAGUAcgBTAGUAZQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFIAYQBu
AGcAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8A
VwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBSAGEAbgBnAGUAUwBlAHQALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8AUgBhAHcAUABvAGkAbgB0AGUAcgAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBSAGUAYQBkAFcAcgBpAHQAZQBMAG8AYwBrAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAFIAZQBjAHUAcgBzAGEAYgBsAGUATABhAG0AYgBkAGEALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcA
dABmAC8AUgBlAGMAdQByAHMAaQB2AGUATABvAGMAawBBAGQAYQBwAHQAZQByAC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQA
ZQByAHMALwB3AHQAZgAvAFIAZQBkAEIAbABhAGMAawBUAHIAZQBlAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAFIAZQBmAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFIAZQBmAEMAbwB1AG4A
dABlAGQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUgBlAGYAQwBvAHUAbgB0AGUAZABBAHIA
cgBhAHkALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUgBlAGYAQwBvAHUAbgB0AGUAZABMAGUA
YQBrAEMAbwB1AG4AdABlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUgBlAGYAQwBvAHUA
bgB0AGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAu
AC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBSAGUAZgBQAHQAcgAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBSAGUAcwBvAHUAcgBjAGUAVQBzAGEAZwBlAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAFIAZQB0AGEAaQBuAFAAdAByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AFIAdQBuAEwAbwBvAHAALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUwBIAEEAMQAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwBTAGEAdAB1AHIAYQB0AGUAZABBAHIAaQB0AGgAbQBlAHQAaQBj
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQA
RgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAYwBoAGUAZAB1AGwAZQBQAGEAaQByAC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgA
ZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAYwBvAHAAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBTAGMAbwBwAGUAZABMAGEAbQBiAGQAYQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBTAGUA
YwBvAG4AZABzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAu
AC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAZQBnAG0AZQBuAHQAZQBkAFYA
ZQBjAHQAbwByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAu
AC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAZQBuAHQAaQBuAGUAbABMAGkA
bgBrAGUAZABMAGkAcwB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAZQB0AEYAbwByAFMA
YwBvAHAAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAu
AC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBTAGgAYQByAGUAZABUAGEAcwBrAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAv
AEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAaQBtAHAAbABlAFMAdABhAHQAcwAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBTAGkAbgBnAGwAZQBSAG8AbwB0AEcAcgBhAHAAaAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBTAGkAbgBnAGwAeQBMAGkAbgBrAGUAZABMAGkAcwB0AC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBh
AGQAZQByAHMALwB3AHQAZgAvAFMAaQBuAGcAbAB5AEwAaQBuAGsAZQBkAEwAaQBzAHQAVwBpAHQA
aABUAGEAaQBsAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAu
AC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAaQB4AEMAaABhAHIAYQBjAHQA
ZQByAEgAYQBzAGgALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUwBtAGEAbABsAFAAdAByAFMA
ZQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAbwBmAHQATABpAG4AawBpAG4AZwAuAGgA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBI
AGUAYQBkAGUAcgBzAC8AdwB0AGYALwBTAHAAYQBuAG4AaQBuAGcAVAByAGUAZQAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBTAHAAZQBjAHQAcgB1AG0ALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABm
AC8AUwB0AGEAYwBrAEIAbwB1AG4AZABzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAdABh
AGMAawBDAGgAZQBjAGsALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUwB0AGEAYwBrAFAAbwBp
AG4AdABlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4A
LgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUwB0AGEAYwBrAFMAaABvAHQALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8A
SABlAGEAZABlAHIAcwAvAHcAdABmAC8AUwB0AGEAYwBrAFMAaABvAHQAUAByAG8AZgBpAGwAZQBy
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQA
RgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAdABhAGMAawBTAHQAYQB0AHMALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8AUwB0AGEAYwBrAFQAcgBhAGMAZQAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBTAHQAZABJAG4AdABFAHgAdAByAGEAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBTAHQAZABMAGkAYgBFAHgAdAByAGEAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBTAHQA
ZABMAGkAcwB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAu
AC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAdABkAE0AYQBwAC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBh
AGQAZQByAHMALwB3AHQAZgAvAFMAdABkAFMAZQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AFMAdABkAFUAbgBvAHIAZABlAHIAZQBkAE0AYQBwAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AFMAdABkAFUAbgBvAHIAZABlAHIAZQBkAFMAZQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AFMAdABvAHAAdwBhAHQAYwBoAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAdAByAGUAYQBt
AEIAdQBmAGYAZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAdAByAGkAbgBnAEUAeAB0
AHIAYQBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4A
LwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAdAByAGkAbgBnAEgAYQBzAGgARAB1
AG0AcABDAG8AbgB0AGUAeAB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFMAdAByAGkAbgBn
AFAAcgBpAG4AdABTAHQAcgBlAGEAbQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBTAHkAbgBj
AGgAcgBvAG4AaQB6AGUAZABGAGkAeABlAGQAUQB1AGUAdQBlAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3
AHQAZgAvAFMAeQBzAHQAZQBtAEYAcgBlAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AUwB5
AHMAdABlAG0AVAByAGEAYwBpAG4AZwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBUAGEAZwBn
AGUAZABBAHIAcgBhAHkAUwB0AG8AcgBhAGcAZQBQAHQAcgAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwBUAGgAcgBlAGEAZABHAHIAbwB1AHAALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AVABo
AHIAZQBhAGQATQBlAHMAcwBhAGcAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBUAGgAcgBl
AGEAZABTAGEAZgBlAFIAZQBmAEMAbwB1AG4AdABlAGQALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABm
AC8AVABoAHIAZQBhAGQAUwBwAGUAYwBpAGYAaQBjAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AFQAaAByAGUAYQBkAGkAbgBnAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFQAaAByAGUAYQBk
AGkAbgBnAFAAcgBpAG0AaQB0AGkAdgBlAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AVABp
AG0AZQBXAGkAdABoAEQAeQBuAGEAbQBpAGMAQwBsAG8AYwBrAFQAeQBwAGUALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABl
AHIAcwAvAHcAdABmAC8AVABpAG0AaQBuAGcAUwBjAG8AcABlAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3
AHQAZgAvAFQAaQBuAHkATABSAFUAQwBhAGMAaABlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AFQAaQBuAHkAUAB0AHIAUwBlAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AVAByAGEAbgBz
AGwAYQB0AGUAZABQAHIAbwBjAGUAcwBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFQAcgBp
AFMAdABhAHQAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
LgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBUAHkAcABlAEMAYQBzAHQAcwAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYA
LwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBVAFIATAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwBVAFIATABIAGUAbABwAGUAcgBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFUAUgBMAEgA
YQBzAGgALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AVQBSAEwAUABhAHIAcwBlAHIALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABl
AGEAZABlAHIAcwAvAHcAdABmAC8AVQBVAEkARAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBV
AG4AYQBsAGkAZwBuAGUAZABBAGMAYwBlAHMAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBV
AG4AZQB4AHAAZQBjAHQAZQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFUAbgBpAFMAdABk
AEUAeAB0AHIAYQBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFUAbgBpAG8AbgBGAGkAbgBk
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQA
RgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFUAbgBpAHEAdQBlAEEAcgByAGEAeQAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwBVAG4AaQBxAHUAZQBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBVAG4AcwBhAGYAZQBQAG8AaQBuAHQAZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAFYATQBUAGEAZwBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFYAYQBsAHUAZQBDAGgA
ZQBjAGsALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AVgBhAHIAaQBhAG4AdAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwBWAGUAYwB0AG8AcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBW
AGUAYwB0AG8AcgBIAGEAcwBoAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFYAZQBjAHQAbwBy
AFQAcgBhAGkAdABzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFcAVABGAEMAbwBuAGYAaQBn
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQA
RgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFcAVABGAFMAZQBtAGEAcABoAG8AcgBlAC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgA
ZQBhAGQAZQByAHMALwB3AHQAZgAvAFcAYQBsAGwAVABpAG0AZQAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8A
dwB0AGYALwBXAGUAYQBrAEgAYQBzAGgAUwBlAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8A
VwBlAGEAawBQAHQAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBXAGUAYQBrAFIAYQBuAGQA
bwBtAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAFcAaQBuAGQAbwB3AHMARQB4AHQAcgBhAHMA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABG
AC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AVwBvAHIAZABMAG8AYwBrAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAFcAbwByAGsAUQB1AGUAdQBlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AFcAbwByAGsAZQByAFAAbwBvAGwALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AZAB0AG8AYQAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYA
LwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBkAHQAbwBhAC8AYgBpAGcAbgB1AG0ALQBkAHQAbwBh
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQA
RgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAGQAdABvAGEALwBiAGkAZwBuAHUAbQAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwBkAHQAbwBhAC8AYwBhAGMAaABlAGQALQBwAG8AdwBlAHIAcwAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYA
LwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBkAHQAbwBhAC8AZABpAHkALQBmAHAALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8AZAB0AG8AYQAvAGQAbwB1AGIAbABlAC0AYwBvAG4AdgBlAHIAcwBp
AG8AbgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8A
VwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBkAHQAbwBhAC8AZgBhAHMAdAAtAGQAdABv
AGEALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcA
VABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AZAB0AG8AYQAvAGYAaQB4AGUAZAAtAGQAdABv
AGEALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcA
VABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AZAB0AG8AYQAvAGkAZQBlAGUALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8AZAB0AG8AYQAvAHMAdAByAHQAbwBkAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAGQAdABvAGEALwB1AHQAaQBsAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8A
cABlAHIAcwBpAHMAdABlAG4AYwBlAC8AUABlAHIAcwBpAHMAdABlAG4AdABDAG8AZABlAHIALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8A
SABlAGEAZABlAHIAcwAvAHcAdABmAC8AcABlAHIAcwBpAHMAdABlAG4AYwBlAC8AUABlAHIAcwBp
AHMAdABlAG4AdABDAG8AZABlAHIAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBwAGUAcgBz
AGkAcwB0AGUAbgBjAGUALwBQAGUAcgBzAGkAcwB0AGUAbgB0AEQAZQBjAG8AZABlAHIALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABl
AGEAZABlAHIAcwAvAHcAdABmAC8AcABlAHIAcwBpAHMAdABlAG4AYwBlAC8AUABlAHIAcwBpAHMA
dABlAG4AdABFAG4AYwBvAGQAZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHQAZQB4AHQA
LwBBAFMAQwBJAEkARgBhAHMAdABQAGEAdABoAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHQA
ZQB4AHQALwBBAFMAQwBJAEkATABpAHQAZQByAGEAbAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwB0AGUAeAB0AC8AQQB0AG8AbQBTAHQAcgBpAG4AZwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYA
LwB0AGUAeAB0AC8AQQB0AG8AbQBTAHQAcgBpAG4AZwBIAGEAcwBoAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAHQAZQB4AHQALwBBAHQAbwBtAFMAdAByAGkAbgBnAEkAbQBwAGwALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEA
ZABlAHIAcwAvAHcAdABmAC8AdABlAHgAdAAvAEEAdABvAG0AUwB0AHIAaQBuAGcAVABhAGIAbABl
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQA
RgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHQAZQB4AHQALwBCAGEAcwBlADYANAAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0AC8AQwBTAHQAcgBpAG4AZwAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwB0AGUAeAB0AC8AQwBvAG4AdgBlAHIAcwBpAG8AbgBNAG8AZABlAC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgA
ZQBhAGQAZQByAHMALwB3AHQAZgAvAHQAZQB4AHQALwBFAHgAdABlAHIAbgBhAGwAUwB0AHIAaQBu
AGcASQBtAHAAbAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
LgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0AC8ASQBuAHQAZQBn
AGUAcgBUAG8AUwB0AHIAaQBuAGcAQwBvAG4AdgBlAHIAcwBpAG8AbgAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBz
AC8AdwB0AGYALwB0AGUAeAB0AC8ATABDAGgAYQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAv
AHQAZQB4AHQALwBMAGkAbgBlAEIAcgBlAGEAawBJAHQAZQByAGEAdABvAHIAUABvAG8AbABJAEMA
VQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0AC8ATABpAG4AZQBFAG4AZABpAG4A
ZwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBU
AEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0AC8ATgB1AGwAbABUAGUAeAB0AEIA
cgBlAGEAawBJAHQAZQByAGEAdABvAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AdABlAHgA
dAAvAE8AcgBkAGkAbgBhAGwATgB1AG0AYgBlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8A
dABlAHgAdAAvAFMAdAByAGkAbgBnAEIAdQBmAGYAZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAHQAZQB4AHQALwBTAHQAcgBpAG4AZwBCAHUAaQBsAGQAZQByAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAHQAZQB4AHQALwBTAHQAcgBpAG4AZwBDAG8AbQBtAG8AbgAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUA
cgBzAC8AdwB0AGYALwB0AGUAeAB0AC8AUwB0AHIAaQBuAGcAQwBvAG4AYwBhAHQAZQBuAGEAdABl
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQA
RgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHQAZQB4AHQALwBTAHQAcgBpAG4AZwBDAG8AbgBj
AGEAdABlAG4AYQB0AGUATgB1AG0AYgBlAHIAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0
AGUAeAB0AC8AUwB0AHIAaQBuAGcASABhAHMAaAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0
AGUAeAB0AC8AUwB0AHIAaQBuAGcASABhAHMAaABlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABm
AC8AdABlAHgAdAAvAFMAdAByAGkAbgBnAEkAbQBwAGwALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABm
AC8AdABlAHgAdAAvAFMAdAByAGkAbgBnAE8AcABlAHIAYQB0AG8AcgBzAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQBy
AHMALwB3AHQAZgAvAHQAZQB4AHQALwBTAHQAcgBpAG4AZwBQAGEAcgBzAGkAbgBnAEIAdQBmAGYA
ZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBX
AFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHQAZQB4AHQALwBTAHQAcgBpAG4AZwBUAG8A
SQBuAHQAZQBnAGUAcgBDAG8AbgB2AGUAcgBzAGkAbwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAHQAZQB4AHQALwBTAHQAcgBpAG4AZwBWAGkAZQB3AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAHQAZQB4AHQALwBTAHkAbQBiAG8AbABJAG0AcABsAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBh
AHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQA
ZgAvAHQAZQB4AHQALwBTAHkAbQBiAG8AbABSAGUAZwBpAHMAdAByAHkALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIA
cwAvAHcAdABmAC8AdABlAHgAdAAvAFQAZQB4AHQAQgByAGUAYQBrAEkAdABlAHIAYQB0AG8AcgAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYA
LwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0AC8AVABlAHgAdABCAHIAZQBhAGsASQB0
AGUAcgBhAHQAbwByAEkAbgB0AGUAcgBuAGEAbABJAEMAVQAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0
AGYALwB0AGUAeAB0AC8AVABlAHgAdABQAG8AcwBpAHQAaQBvAG4ALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAv
AHcAdABmAC8AdABlAHgAdAAvAFQAZQB4AHQAUwB0AHIAZQBhAG0ALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAv
AHcAdABmAC8AdABlAHgAdAAvAFUAVABGADgAQwBvAG4AdgBlAHIAcwBpAG8AbgBFAHIAcgBvAHIA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABG
AC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AdABlAHgAdAAvAFUAbgBpAHEAdQBlAGQAUwB0AHIA
aQBuAGcASQBtAHAAbAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0AC8AVwBUAEYA
UwB0AHIAaQBuAGcALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AdABlAHgAdAAvAGkAYwB1AC8A
VABlAHgAdABCAHIAZQBhAGsASQB0AGUAcgBhAHQAbwByAEkAQwBVAC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMA
LwB3AHQAZgAvAHQAZQB4AHQALwBpAGMAdQAvAFUAVABlAHgAdABQAHIAbwB2AGkAZABlAHIALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8A
SABlAGEAZABlAHIAcwAvAHcAdABmAC8AdABlAHgAdAAvAGkAYwB1AC8AVQBUAGUAeAB0AFAAcgBv
AHYAaQBkAGUAcgBMAGEAdABpAG4AMQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0
AC8AaQBjAHUALwBVAFQAZQB4AHQAUAByAG8AdgBpAGQAZQByAFUAVABGADEANgAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBk
AGUAcgBzAC8AdwB0AGYALwB0AGgAcgBlAGEAZABzAC8AQgBpAG4AYQByAHkAUwBlAG0AYQBwAGgA
bwByAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AdABoAHIAZQBhAGQAcwAvAFMAaQBnAG4A
YQBsAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAv
AFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AdQBuAGkAYwBvAGQAZQAvAEMAaABhAHIA
YQBjAHQAZQByAE4AYQBtAGUAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB1AG4AaQBjAG8A
ZABlAC8AQwBvAGwAbABhAHQAbwByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHUAbgBpAGMA
bwBkAGUALwBVAFQARgA4AEMAbwBuAHYAZQByAHMAaQBvAG4ALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcA
dABmAC8AdQBuAGkAYwBvAGQAZQAvAGkAYwB1AC8ASQBDAFUASABlAGwAcABlAHIAcwAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8AVwBUAEYALwBIAGUA
YQBkAGUAcgBzAC8AdwB0AGYALwB0AGUAeAB0AC8AdwBpAG4ALwBXAEMAaABhAHIAUwB0AHIAaQBu
AGcARQB4AHQAcgBhAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAC4ALgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AdwBpAG4ALwBEAGIAZwBI
AGUAbABwAGUAcgBXAGkAbgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ALgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwB3AGkAbgAvAEcARABJ
AE8AYgBqAGUAYwB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHcAaQBuAC8AUwBvAGYAdABM
AGkAbgBrAGkAbgBnAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAHcAaQBuAC8AVwBpAG4AMwAy
AEgAYQBuAGQAbABlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwAuAC4ALwBXAFQARgAvAEgAZQBhAGQAZQByAHMALwB3AHQAZgAvAGMAZgAvAEMARgBVAFIATABF
AHgAdAByAGEAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
LgAuAC8AVwBUAEYALwBIAGUAYQBkAGUAcgBzAC8AdwB0AGYALwBjAGYALwBUAHkAcABlAEMAYQBz
AHQAcwBDAEYALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAC4A
LgAvAFcAVABGAC8ASABlAGEAZABlAHIAcwAvAHcAdABmAC8AdABlAHgAdAAvAGMAZgAvAFQAZQB4
AHQAQgByAGUAYQBrAEkAdABlAHIAYQB0AG8AcgBDAEYALgBoAA0ACgAgACAAQgB1AGkAbABkAGkA
bgBnACAAQwB1AHMAdABvAG0AIABSAHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0
AC8AdwBlAGIAawBpAHQALwBTAG8AdQByAGMAZQAvAFcAVABGAC8AdwB0AGYALwBDAE0AYQBrAGUA
TABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1
AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUAIAAiAHgANgA0AFwAUgBlAGwA
ZQBhAHMAZQBcAFcAVABGAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAFwAVwBUAEYAXwBDAG8AcAB5
AEgAZQBhAGQAZQByAHMALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkA
bABkACIALgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBl
AFwAVwBUAEYAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMAXABXAFQARgBfAEMAbwBwAHkASABlAGEA
ZABlAHIAcwAuAHQAbABvAGcAXABXAFQARgBfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAGwAYQBz
AHQAYgB1AGkAbABkAHMAdABhAHQAZQAiAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcA
IABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBUAEYAXAB3AHQA
ZgBcAFcAVABGAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8AagAiACAAKABS
AGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkA
bABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcA
VABGAFwAdwB0AGYAXABXAFQARgBfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBv
AGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgA
cwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEwATABJAG4AdABTAGUAdAB0AGkAbgBnAHMARQB4
AHQAcgBhAGMAdABvAHIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADIA
OAApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwA
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwATABMAEkAbgB0AFMAZQB0AHQAaQBuAGcAcwBF
AHgAdAByAGEAYwB0AG8AcgAuAHYAYwB4AHAAcgBvAGoAIgAgACgAMwAzACkAIABvAG4AIABuAG8A
ZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAQwBv
AHIAZQBDAGwAZQBhAG4AOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8A
cgB5ACAAIgBMAEwASQBuAHQAUwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBjAHQAbwByAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAIgAuAA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwA
ZAA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAEwATABJ
AG4AdABTAGUAdAB0AGkAbgBnAHMARQB4AHQAcgBhAGMAdABvAHIALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXABMAEwASQBuAHQAUwBlAHQALgA3AEYANgA2AEEAQQAxADkALgB0AGwAbwBnAFwAIgAu
AA0ACgBJAG4AaQB0AGkAYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAA
QwByAGUAYQB0AGkAbgBnACAAIgBMAEwASQBuAHQAUwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBj
AHQAbwByAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATABMAEkAbgB0AFMAZQB0AC4ANwBGADYA
NgBBAEEAMQA5AC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAi
ACAAYgBlAGMAYQB1AHMAZQAgACIAQQBsAHcAYQB5AHMAQwByAGUAYQB0AGUAIgAgAHcAYQBzACAA
cwBwAGUAYwBpAGYAaQBlAGQALgANAAoAQwBvAG0AcAB1AHQAZQBDAHUAcwB0AG8AbQBCAHUAaQBs
AGQATwB1AHQAcAB1AHQAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8A
cgB5ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAFAAcgBpAHYA
YQB0AGUASABlAGEAZABlAHIAcwBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcACIALgAN
AAoAQwB1AHMAdABvAG0AQgB1AGkAbABkADoADQAKACAAIAAiAFQAaABlACAAYgB1AGkAbABkACAA
bwBmACAAJwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1
AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAbwBmAGYAbABpAG4AZQBhAHMA
bQBcAGcAZQBuAGUAcgBhAHQAZQBfAHMAZQB0AHQAaQBuAGcAcwBfAGUAeAB0AHIAYQBjAHQAbwBy
AC4AcgBiACcAIABkAGUAcABlAG4AZABzACAAbwBuACAAJwBGADoAXABHAEkAVABQAFwAVwBFAEIA
SwBJAFQAXABXAEUAQgBLAEkAVABcAEIAVQBJAEwARABfAEEATQBEADYANABcAEoAQQBWAEEAUwBD
AFIASQBQAFQAQwBPAFIARQBcAEQARQBSAEkAVgBFAEQAUwBPAFUAUgBDAEUAUwBcAEkATgBJAFQA
QgBZAFQARQBDAE8ARABFAFMALgBBAFMATQAnACAAdwBoAGkAYwBoACAAaQBzACAAcAByAG8AZAB1
AGMAZQBkACAAYgB5ACAAdABoAGUAIABiAHUAaQBsAGQAIABvAGYAIAAnAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABnAGUAbgBlAHIAYQB0AG8AcgBcAG0AYQBpAG4ALgByAGIAJwAuACAA
VABoAGUAIABpAHQAZQBtAHMAIABjAGEAbgBuAG8AdAAgAGIAZQAgAGIAdQBpAGwAdAAgAGkAbgAg
AHAAYQByAGEAbABsAGUAbAAuACIADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQBy
AGMAZQBzAC8AQgB5AHQAZQBjAG8AZABlAHMALgBoACwAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBJAG4AaQB0
AEIAeQB0AGUAYwBvAGQAZQBzAC4AYQBzAG0ALAAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEIAeQB0AGUAYwBv
AGQAZQBTAHQAcgB1AGMAdABzAC4AaAAsACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AQgB5AHQAZQBjAG8AZABl
AEkAbgBkAGkAYwBlAHMALgBoACwAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBXAGEAcwBtAEwATABJAG4AdABH
AGUAbgBlAHIAYQB0AG8AcgBJAG4AbABpAG4AZQBzAC4AaAAsACAALgAuAC8ALgAuAC8ASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBu
AGkAdABXAGEAcwBtAC4AYQBzAG0ALAAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEIAeQB0AGUAYwBvAGQAZQBE
AHUAbQBwAGUAcgBHAGUAbgBlAHIAYQB0AGUAZAAuAGMAcABwAA0ACgAgACAAQgB1AGkAbABkAGkA
bgBnACAAQwB1AHMAdABvAG0AIABSAHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0
AC8AdwBlAGIAawBpAHQALwBTAG8AdQByAGMAZQAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQAvAEMATQBhAGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBQAHIAaQB2AGEA
dABlAEgAZQBhAGQAZQByAHMALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBCAHkAdABl
AGMAbwBkAGUAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBz
AC8ATABMAEkAbgB0AEQAZQBzAGkAcgBlAGQAUwBlAHQAdABpAG4AZwBzAC4AaAANAAoAQwBsAEMA
bwBtAHAAaQBsAGUAOgANAAoAIAAgAEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAo
AHgAOAA2ACkAXABNAGkAYwByAG8AcwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8A
XAAyADAAMQA5AFwARQBuAHQAZQByAHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBW
AEMAXAAxADQALgAyADYALgAyADgAOAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYA
NABcAEMATAAuAGUAeABlACAALwBjACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAFwASABlAGEAZABlAHIAcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANAAgAC8ASQBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABB
AFAASQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAYQBzAHMAZQBtAGIAbABl
AHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGIAMwAgAC8ASQBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAYgAzAFwAYQBpAHIAIAAvAEkARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQBcAGIAaQBuAGQAaQBuAGcAcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAFwAYgB1AGkAbAB0AGkAbgBzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABiAHkAdABlAGMAbwBkAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAGIAeQB0AGUAYwBvAG0AcABpAGwAZQByACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABkAGYAZwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAZABpAHMA
YQBzAHMAZQBtAGIAbABlAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGQA
aQBzAGEAcwBzAGUAbQBiAGwAZQByAFwAQQBSAE0ANgA0ACAALwBJAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUAXABkAGkAcwBhAHMAcwBlAG0AYgBsAGUAcgBcAHUAZABpAHMAOAA2ACAALwBJ
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUA
XABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABkAG8AbQBqAGkAdAAgAC8ASQBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAZgB0AGwAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAGgAZQBhAHAAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGQA
ZQBiAHUAZwBnAGUAcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAaQBuAHMA
cABlAGMAdABvAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGkAbgBzAHAA
ZQBjAHQAbwByAFwAYQBnAGUAbgB0AHMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAGkAbgBzAHAAZQBjAHQAbwByAFwAYQB1AGcAbQBlAG4AdABhAGIAbABlACAALwBJAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBcAHIAZQBtAG8AdABl
ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AdABlAHIAcAByAGUAdABl
AHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGoAaQB0ACAALwBJAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABsAGwAaQBuAHQAIAAvAEkARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQBcAHAAYQByAHMAZQByACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABwAHIAbwBmAGkAbABlAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAHIAdQBuAHQAaQBtAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAHQA
bwBvAGwAcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAdwBhAHMAbQAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAdwBhAHMAbQBcAGoAcwAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAeQBhAHIAcgAgAC8ASQBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQA
UwBvAHUAcgBjAGUAcwBcAGkAbgBzAHAAZQBjAHQAbwByACAALwBJAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAcgB1
AG4AdABpAG0AZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHkAYQByAHIAIAAvAEkARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXAAu
AC4AXABpAG4AYwBsAHUAZABlAFwAcAByAGkAdgBhAHQAZQAgAC8ASQBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAFwAaQBuAHMAcABlAGMAdABvAHIAXAByAGUAbQBvAHQAZQBcAHMAbwBjAGsA
ZQB0ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAVwBUAEYAXABIAGUAYQBkAGUAcgBzACAALwBJAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBpAHQATABpAGIAcgBh
AHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBvAGwAbwBnAG8A
IAAvAFcANAAgAC8AVwBYAC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMAbwBsAHUAbQBu
ACAALwBNAFAAIAAvAE8AMgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJAE4AMwAyACAA
LwBEACAAXwBXAEkATgBEAE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQAIABCAFUASQBM
AEQASQBOAEcAXwBXAEkAVABIAF8AQwBNAEEASwBFAD0AMQAgAC8ARAAgAEgAQQBWAEUAXwBDAE8A
TgBGAEkARwBfAEgAPQAxACAALwBEACAAVwBJAE4AVgBFAFIAPQAwAHgANgAwADEAIAAvAEQAIABf
AFcASQBOADMAMgBfAFcASQBOAE4AVAA9ADAAeAA2ADAAMQAgAC8ARAAgAE4ATwBNAEkATgBNAEEA
WAAgAC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABf
AEgAQQBTAF8ARQBYAEMARQBQAFQASQBPAE4AUwA9ADAAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMA
VQBSAEUAXwBOAE8AXwBXAEEAUgBOAEkATgBHAFMAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBS
AEUAXwBDAFAAUABfAE8AVgBFAFIATABPAEEARABfAFMAVABBAE4ARABBAFIARABfAE4AQQBNAEUA
UwA9ADEAIAAvAEQAIABfAFcASQBOAFMATwBDAEsAQQBQAEkAXwA9ACAALwBEACAAVwBUAEYAXwBQ
AEwAQQBUAEYATwBSAE0AXwBXAEkATgBfAEMAQQBJAFIATwA9ADEAIAAvAEQAIABOAE8AQwBSAFkA
UABUACAALwBEACAAIgBDAE0AQQBLAEUAXwBJAE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBl
AFwAIgAiACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8A
RwBtAC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBl
AHgAYwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMA
bwBwAGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAx
ADcAIAAvAEYAbwAiAEwATABJAG4AdABTAGUAdAB0AGkAbgBnAHMARQB4AHQAcgBhAGMAdABvAHIA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABcACIAIAAvAEYAZAAiAEwATABJAG4AdABTAGUAdAB0
AGkAbgBnAHMARQB4AHQAcgBhAGMAdABvAHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB2AGMA
MQA0ADIALgBwAGQAYgAiACAALwBHAGQAIAAvAFQAUAAgAC8AdwBkADQAMAAxADgAIAAvAHcAZAA0
ADAANgA4ACAALwB3AGQANAAwADkAOQAgAC8AdwBkADQAMQAwADAAIAAvAHcAZAA0ADEAMgA3ACAA
LwB3AGQANAAxADMAOAAgAC8AdwBkADQAMQA0ADYAIAAvAHcAZAA0ADEAOAAwACAALwB3AGQANAAx
ADgAOQAgAC8AdwBkADQAMgAwADEAIAAvAHcAZAA0ADIAMAA2ACAALwB3AGQANAAyADQANAAgAC8A
dwBkADQAMgA1ADEAIAAvAHcAZAA0ADIANgA3ACAALwB3AGQANAAyADcANQAgAC8AdwBkADQAMgA4
ADgAIAAvAHcAZAA0ADIAOQAxACAALwB3AGQANAAzADAANQAgAC8AdwBkADQAMwAwADkAIAAvAHcA
ZAA0ADMANAA0ACAALwB3AGQANAAzADUANQAgAC8AdwBkADQAMwA4ADkAIAAvAHcAZAA0ADMAOQA2
ACAALwB3AGQANAA0ADUANgAgAC8AdwBkADQANAA1ADcAIAAvAHcAZAA0ADQANQA4ACAALwB3AGQA
NAA0ADUAOQAgAC8AdwBkADQANAA4ADEAIAAvAHcAZAA0ADUAMAAzACAALwB3AGQANAA1ADAANQAg
AC8AdwBkADQANQAxADAAIAAvAHcAZAA0ADUAMQAyACAALwB3AGQANAA1ADMAMAAgAC8AdwBkADQA
NgAxADAAIAAvAHcAZAA0ADYAMQAxACAALwB3AGQANAA2ADQANgAgAC8AdwBkADQANwAwADIAIAAv
AHcAZAA0ADcAMAA2ACAALwB3AGQANAA3ADIAMgAgAC8AdwBkADQAOAAwADAAIAAvAHcAZAA0ADgA
MQA5ACAALwB3AGQANAA5ADUAMQAgAC8AdwBkADQAOQA1ADIAIAAvAHcAZAA0ADkAOQA2ACAALwB3
AGQANgAwADEAMQAgAC8AdwBkADYAMAAzADEAIAAvAHcAZAA2ADIAMQAxACAALwB3AGQANgAyADQA
NgAgAC8AdwBkADYAMgA1ADUAIAAvAHcAZAA2ADMAOAA3ACAALwB3AGQANAAwADkAMQAgAC8AYQBu
AGEAbAB5AHoAZQAtACAALwBlAHIAcgBvAHIAUgBlAHAAbwByAHQAOgBxAHUAZQB1AGUAIAAgAC8A
RQBIAHMALQAgAC8ARQBIAGMALQAgAC8ARQBIAGEALQAgAC8ARQBIAGMALQAgAC8ARQBIAHMALQAg
AC8AYgBpAGcAbwBiAGoAIAAvAHUAdABmAC0AOAAgAC8AdgBhAGwAaQBkAGEAdABlAC0AYwBoAGEA
cgBzAGUAdAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABsAGwAaQBuAHQAXABMAEwA
SQBuAHQAUwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBjAHQAbwByAC4AYwBwAHAADQAKACAAIABM
AEwASQBuAHQAUwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBjAHQAbwByAC4AYwBwAHAADQAKAEwA
aQBuAGsAOgANAAoAIAAgAEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2
ACkAXABNAGkAYwByAG8AcwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAA
MQA5AFwARQBuAHQAZQByAHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAx
ADQALgAyADYALgAyADgAOAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAGwA
aQBuAGsALgBlAHgAZQAgAC8ARQBSAFIATwBSAFIARQBQAE8AUgBUADoAUQBVAEUAVQBFACAALwBP
AFUAVAA6ACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABiAGkAbgA2ADQAXABMAEwASQBuAHQAUwBlAHQAdABpAG4AZwBz
AEUAeAB0AHIAYQBjAHQAbwByAC4AZQB4AGUAIgAgAC8ASQBOAEMAUgBFAE0ARQBOAFQAQQBMADoA
TgBPACAALwBOAE8ATABPAEcATwAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0ACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBSAGUAbABlAGEA
cwBlACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIA
NgA0ACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIA
NgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIA
NgA0AC8AUgBlAGwAZQBhAHMAZQAvAFIAZQBsAGUAYQBzAGUAIAAuAC4AXAAuAC4AXABsAGkAYgA2
ADQAXABXAFQARgAuAGwAaQBiACAALgAuAFwALgAuAFwALgAuAFwAVwBlAGIASwBpAHQATABpAGIA
cgBhAHIAaQBlAHMAXAB3AGkAbgBcAGwAaQBiADYANABcAGkAYwB1AGQAdAAuAGwAaQBiACAALgAu
AFwALgAuAFwALgAuAFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGwA
aQBiADYANABcAGkAYwB1AGkAbgAuAGwAaQBiACAALgAuAFwALgAuAFwALgAuAFwAVwBlAGIASwBp
AHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGwAaQBiADYANABcAGkAYwB1AHUAYwAuAGwA
aQBiACAARABiAGcASABlAGwAcAAuAGwAaQBiACAAcwBoAGwAdwBhAHAAaQAuAGwAaQBiACAAdwBp
AG4AbQBtAC4AbABpAGIAIABDAEYAbABpAHQAZQAuAGwAaQBiACAAawBlAHIAbgBlAGwAMwAyAC4A
bABpAGIAIAB1AHMAZQByADMAMgAuAGwAaQBiACAAZwBkAGkAMwAyAC4AbABpAGIAIAB3AGkAbgBz
AHAAbwBvAGwALgBsAGkAYgAgAHMAaABlAGwAbAAzADIALgBsAGkAYgAgAG8AbABlADMAMgAuAGwA
aQBiACAAbwBsAGUAYQB1AHQAMwAyAC4AbABpAGIAIAB1AHUAaQBkAC4AbABpAGIAIABjAG8AbQBk
AGwAZwAzADIALgBsAGkAYgAgAGEAZAB2AGEAcABpADMAMgAuAGwAaQBiACAALwBNAEEATgBJAEYA
RQBTAFQAIAAvAE0AQQBOAEkARgBFAFMAVABVAEEAQwA6ACIAbABlAHYAZQBsAD0AJwBhAHMASQBu
AHYAbwBrAGUAcgAnACAAdQBpAEEAYwBjAGUAcwBzAD0AJwBmAGEAbABzAGUAJwAiACAALwBtAGEA
bgBpAGYAZQBzAHQAOgBlAG0AYgBlAGQAIAAvAEQARQBCAFUARwAgAC8AUABEAEIAOgAiAEYAOgAv
AGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQA
NgA0AC8AYgBpAG4ANgA0AC8ATABMAEkAbgB0AFMAZQB0AHQAaQBuAGcAcwBFAHgAdAByAGEAYwB0
AG8AcgAuAHAAZABiACIAIAAvAFMAVQBCAFMAWQBTAFQARQBNADoAQwBPAE4AUwBPAEwARQAgAC8A
TwBQAFQAOgBSAEUARgAgAC8ATwBQAFQAOgBJAEMARgAgAC8AVABMAEIASQBEADoAMQAgAC8ARABZ
AE4AQQBNAEkAQwBCAEEAUwBFACAALwBOAFgAQwBPAE0AUABBAFQAIAAvAEkATQBQAEwASQBCADoA
IgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABf
AGEAbQBkADYANAAvAGwAaQBiADYANAAvAEwATABJAG4AdABTAGUAdAB0AGkAbgBnAHMARQB4AHQA
cgBhAGMAdABvAHIALgBsAGkAYgAiACAALwBNAEEAQwBIAEkATgBFADoAWAA2ADQAIAAgAC8AbQBh
AGMAaABpAG4AZQA6AHgANgA0ACAATABMAEkAbgB0AFMAZQB0AHQAaQBuAGcAcwBFAHgAdAByAGEA
YwB0AG8AcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEwATABJAG4AdABTAGUAdAB0AGkAbgBn
AHMARQB4AHQAcgBhAGMAdABvAHIALgBvAGIAagANAAoAIAAgAEwATABJAG4AdABTAGUAdAB0AGkA
bgBnAHMARQB4AHQAcgBhAGMAdABvAHIALgB2AGMAeABwAHIAbwBqACAALQA+ACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABiAGkAbgA2ADQAXABMAEwASQBuAHQAUwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBjAHQAbwBy
AC4AZQB4AGUADQAKAEYAaQBuAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoA
IAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUAIAAiAEwATABJAG4AdABTAGUAdAB0AGkAbgBn
AHMARQB4AHQAcgBhAGMAdABvAHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAEwASQBuAHQA
UwBlAHQALgA3AEYANgA2AEEAQQAxADkALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1
AGwAYgB1AGkAbABkACIALgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIATABMAEkAbgB0AFMA
ZQB0AHQAaQBuAGcAcwBFAHgAdAByAGEAYwB0AG8AcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEwATABJAG4AdABTAGUAdAAuADcARgA2ADYAQQBBADEAOQAuAHQAbABvAGcAXABMAEwASQBuAHQA
UwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBjAHQAbwByAC4AbABhAHMAdABiAHUAaQBsAGQAcwB0
AGEAdABlACIALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQA
IAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABk
AF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABMAEwASQBuAHQAUwBlAHQAdABpAG4AZwBzAEUAeAB0AHIAYQBjAHQAbwByAC4AdgBjAHgAcABy
AG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8A
bgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEwATABJAG4AdABTAGUAdAB0
AGkAbgBnAHMARQB4AHQAcgBhAGMAdABvAHIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIA
bwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBv
AGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0
AEMAbwByAGUAXABMAEwASQBuAHQATwBmAGYAcwBlAHQAcwBFAHgAdAByAGEAYwB0AG8AcgAuAHYA
YwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgA1ACkAIABpAHMAIABiAHUAaQBs
AGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0
AEMAbwByAGUAXABMAEwASQBuAHQATwBmAGYAcwBlAHQAcwBFAHgAdAByAGEAYwB0AG8AcgAuAHYA
YwB4AHAAcgBvAGoAIgAgACgAMwA0ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBp
AGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAQwBvAHIAZQBDAGwAZQBhAG4AOgANAAoA
IAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBMAEwASQBuAHQATwBm
AGYAcwBlAHQAcwBFAHgAdAByAGEAYwB0AG8AcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcACIA
LgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUAaQBsAGQAOgANAAoAIAAgAEMAcgBlAGEAdABp
AG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBMAEwASQBuAHQATwBmAGYAcwBlAHQAcwBFAHgA
dAByAGEAYwB0AG8AcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEwATABJAG4AdABPAGYAZgAu
ADMANQAwADUAQQBBAEYANgAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6AGUA
QgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAEwATABJ
AG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBjAHQAbwByAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwATABMAEkAbgB0AE8AZgBmAC4AMwA1ADAANQBBAEEARgA2AC4AdABsAG8AZwBcAHUAbgBz
AHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiACAAYgBlAGMAYQB1AHMAZQAgACIAQQBsAHcA
YQB5AHMAQwByAGUAYQB0AGUAIgAgAHcAYQBzACAAcwBwAGUAYwBpAGYAaQBlAGQALgANAAoAQwB1
AHMAdABvAG0AQgB1AGkAbABkADoADQAKACAAIAAiAFQAaABlACAAYgB1AGkAbABkACAAbwBmACAA
JwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAbwBmAGYAbABpAG4AZQBhAHMAbQBcAGcA
ZQBuAGUAcgBhAHQAZQBfAG8AZgBmAHMAZQB0AF8AZQB4AHQAcgBhAGMAdABvAHIALgByAGIAJwAg
AGQAZQBwAGUAbgBkAHMAIABvAG4AIAAnAEYAOgBcAEcASQBUAFAAXABXAEUAQgBLAEkAVABcAFcA
RQBCAEsASQBUAFwAQgBVAEkATABEAF8AQQBNAEQANgA0AFwASgBBAFYAQQBTAEMAUgBJAFAAVABD
AE8AUgBFAFwARABFAFIASQBWAEUARABTAE8AVQBSAEMARQBTAFwAQQBJAFIATwBQAEMATwBEAEUA
LgBIACcAIAB3AGgAaQBjAGgAIABpAHMAIABwAHIAbwBkAHUAYwBlAGQAIABiAHkAIAB0AGgAZQAg
AGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGIAMwBc
AGEAaQByAFwAQQBpAHIATwBwAGMAbwBkAGUALgBvAHAAYwBvAGQAZQBzACcALgAgAFQAaABlACAA
aQB0AGUAbQBzACAAYwBhAG4AbgBvAHQAIABiAGUAIABiAHUAaQBsAHQAIABpAG4AIABwAGEAcgBh
AGwAbABlAGwALgAiAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAv
AEEAaQByAE8AcABjAG8AZABlAC4AaAAsACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AQQBpAHIATwBwAGMAbwBk
AGUARwBlAG4AZQByAGEAdABlAGQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwAvAFcAYQBzAG0ATwBwAHMALgBoAA0ACgAgACAAQgB1AGkAbABkAGkAbgBnACAA
QwB1AHMAdABvAG0AIABSAHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBTAG8AdQByAGMAZQAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEMA
TQBhAGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMA
bwB1AHIAYwBlAHMALwBMAEwASQBuAHQARABlAHMAaQByAGUAZABPAGYAZgBzAGUAdABzAC4AaAAN
AAoAQwBsAEMAbwBtAHAAaQBsAGUAOgANAAoAIAAgAEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkA
bABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8AcwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0
AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQByAHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwA
cwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAyADgAOAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2
ADQAXAB4ADYANABcAEMATAAuAGUAeABlACAALwBjACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwASABlAGEAZABlAHIAcwAgAC8ASQBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANAAgAC8ASQBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABBAFAASQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAYQBzAHMA
ZQBtAGIAbABlAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGIAMwAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAYgAzAFwAYQBpAHIAIAAvAEkARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGIAaQBuAGQAaQBuAGcAcwAgAC8ASQBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwAYgB1AGkAbAB0AGkAbgBzACAALwBJAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABiAHkAdABlAGMAbwBkAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAGIAeQB0AGUAYwBvAG0AcABpAGwAZQByACAALwBJAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABkAGYAZwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AFwAZABpAHMAYQBzAHMAZQBtAGIAbABlAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBcAGQAaQBzAGEAcwBzAGUAbQBiAGwAZQByAFwAQQBSAE0ANgA0ACAALwBJAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUAXABkAGkAcwBhAHMAcwBlAG0AYgBsAGUAcgBcAHUAZABpAHMA
OAA2ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABkAG8AbQBqAGkAdAAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAZgB0AGwAIAAvAEkARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAGgAZQBhAHAAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBcAGQAZQBiAHUAZwBnAGUAcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AFwAaQBuAHMAcABlAGMAdABvAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AGkAbgBzAHAAZQBjAHQAbwByAFwAYQBnAGUAbgB0AHMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAGkAbgBzAHAAZQBjAHQAbwByAFwAYQB1AGcAbQBlAG4AdABhAGIAbABlACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBcAHIA
ZQBtAG8AdABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AdABlAHIA
cAByAGUAdABlAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGoAaQB0ACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABsAGwAaQBuAHQAIAAvAEkARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAHAAYQByAHMAZQByACAALwBJAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABwAHIAbwBmAGkAbABlAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAHIAdQBuAHQAaQBtAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBcAHQAbwBvAGwAcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAdwBh
AHMAbQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAdwBhAHMAbQBcAGoAcwAg
AC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAeQBhAHIAcgAgAC8ASQBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBj
AGUAcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQBy
AGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAGkAbgBzAHAAZQBjAHQAbwByACAALwBJAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAFwAcgB1AG4AdABpAG0AZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHkAYQByAHIAIAAvAEkARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0A
ZAA2ADQAXAAuAC4AXABpAG4AYwBsAHUAZABlAFwAcAByAGkAdgBhAHQAZQAgAC8ASQBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAaQBuAHMAcABlAGMAdABvAHIAXAByAGUAbQBvAHQAZQBc
AHMAbwBjAGsAZQB0ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVwBUAEYAXABIAGUAYQBkAGUAcgBzACAALwBJ
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBpAHQA
TABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBv
AGwAbwBnAG8AIAAvAFcANAAgAC8AVwBYAC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMA
bwBsAHUAbQBuACAALwBNAFAAIAAvAE8AMgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJ
AE4AMwAyACAALwBEACAAXwBXAEkATgBEAE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQA
IABCAFUASQBMAEQASQBOAEcAXwBXAEkAVABIAF8AQwBNAEEASwBFAD0AMQAgAC8ARAAgAEgAQQBW
AEUAXwBDAE8ATgBGAEkARwBfAEgAPQAxACAALwBEACAAVwBJAE4AVgBFAFIAPQAwAHgANgAwADEA
IAAvAEQAIABfAFcASQBOADMAMgBfAFcASQBOAE4AVAA9ADAAeAA2ADAAMQAgAC8ARAAgAE4ATwBN
AEkATgBNAEEAWAAgAC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAFUATgBJAEMATwBEAEUA
IAAvAEQAIABfAEgAQQBTAF8ARQBYAEMARQBQAFQASQBPAE4AUwA9ADAAIAAvAEQAIABfAEMAUgBU
AF8AUwBFAEMAVQBSAEUAXwBOAE8AXwBXAEEAUgBOAEkATgBHAFMAIAAvAEQAIABfAEMAUgBUAF8A
UwBFAEMAVQBSAEUAXwBDAFAAUABfAE8AVgBFAFIATABPAEEARABfAFMAVABBAE4ARABBAFIARABf
AE4AQQBNAEUAUwA9ADEAIAAvAEQAIABfAFcASQBOAFMATwBDAEsAQQBQAEkAXwA9ACAALwBEACAA
VwBUAEYAXwBQAEwAQQBUAEYATwBSAE0AXwBXAEkATgBfAEMAQQBJAFIATwA9ADEAIAAvAEQAIABO
AE8AQwBSAFkAUABUACAALwBEACAAIgBDAE0AQQBLAEUAXwBJAE4AVABEAEkAUgA9AFwAIgBSAGUA
bABlAGEAcwBlAFwAIgAiACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBP
AEQARQAgAC8ARwBtAC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAA
LwBmAHAAOgBlAHgAYwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBm
AG8AcgBTAGMAbwBwAGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQA
OgBjACsAKwAxADcAIAAvAEYAbwAiAEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBj
AHQAbwByAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAXAAiACAALwBGAGQAIgBMAEwASQBuAHQA
TwBmAGYAcwBlAHQAcwBFAHgAdAByAGEAYwB0AG8AcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AHYAYwAxADQAMgAuAHAAZABiACIAIAAvAEcAZAAgAC8AVABQACAALwB3AGQANAAwADEAOAAgAC8A
dwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5ACAALwB3AGQANAAxADAAMAAgAC8AdwBkADQAMQAy
ADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQANAAxADQANgAgAC8AdwBkADQAMQA4ADAAIAAvAHcA
ZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAgAC8AdwBkADQAMgAwADYAIAAvAHcAZAA0ADIANAA0
ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQAMgA2ADcAIAAvAHcAZAA0ADIANwA1ACAALwB3AGQA
NAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3AGQANAAzADAAOQAg
AC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMANQA1ACAALwB3AGQANAAzADgAOQAgAC8AdwBkADQA
MwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3AGQANAA0ADUANwAgAC8AdwBkADQANAA1ADgAIAAv
AHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgAMQAgAC8AdwBkADQANQAwADMAIAAvAHcAZAA0ADUA
MAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBkADQANQAxADIAIAAvAHcAZAA0ADUAMwAwACAALwB3
AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEAIAAvAHcAZAA0ADYANAA2ACAALwB3AGQANAA3ADAA
MgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0ADcAMgAyACAALwB3AGQANAA4ADAAMAAgAC8AdwBk
ADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAALwB3AGQANAA5ADUAMgAgAC8AdwBkADQAOQA5ADYA
IAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAwADMAMQAgAC8AdwBkADYAMgAxADEAIAAvAHcAZAA2
ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8AdwBkADYAMwA4ADcAIAAvAHcAZAA0ADAAOQAxACAA
LwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgByAG8AcgBSAGUAcABvAHIAdAA6AHEAdQBlAHUAZQAg
ACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAALwBFAEgAYQAtACAALwBFAEgAYwAtACAALwBFAEgA
cwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0AGYALQA4ACAALwB2AGEAbABpAGQAYQB0AGUALQBj
AGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGwAbABpAG4AdABc
AEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBjAHQAbwByAC4AYwBwAHAADQAKACAA
IABMAEwASQBuAHQATwBmAGYAcwBlAHQAcwBFAHgAdAByAGEAYwB0AG8AcgAuAGMAcABwAA0ACgBM
AGkAbgBrADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgA
NgApAFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAw
ADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwA
MQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABs
AGkAbgBrAC4AZQB4AGUAIAAvAEUAUgBSAE8AUgBSAEUAUABPAFIAVAA6AFEAVQBFAFUARQAgAC8A
TwBVAFQAOgAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAYgBpAG4ANgA0AFwATABMAEkAbgB0AE8AZgBmAHMAZQB0AHMA
RQB4AHQAcgBhAGMAdABvAHIALgBlAHgAZQAiACAALwBJAE4AQwBSAEUATQBFAE4AVABBAEwAOgBO
AE8AIAAvAE4ATwBMAE8ARwBPACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcA
ZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2
ADQAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUA
YgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBz
AGUAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUA
YgBrAGkAdAAvAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAC8AdwBpAG4ALwBsAGkAYgA2
ADQAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUA
YgBrAGkAdAAvAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAC8AdwBpAG4ALwBsAGkAYgA2
ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcA
ZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2
ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcA
ZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2
ADQALwBSAGUAbABlAGEAcwBlAC8AUgBlAGwAZQBhAHMAZQAgAC4ALgBcAC4ALgBcAGwAaQBiADYA
NABcAFcAVABGAC4AbABpAGIAIAAuAC4AXAAuAC4AXAAuAC4AXABXAGUAYgBLAGkAdABMAGkAYgBy
AGEAcgBpAGUAcwBcAHcAaQBuAFwAbABpAGIANgA0AFwAaQBjAHUAZAB0AC4AbABpAGIAIAAuAC4A
XAAuAC4AXAAuAC4AXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAbABp
AGIANgA0AFwAaQBjAHUAaQBuAC4AbABpAGIAIAAuAC4AXAAuAC4AXAAuAC4AXABXAGUAYgBLAGkA
dABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAbABpAGIANgA0AFwAaQBjAHUAdQBjAC4AbABp
AGIAIABEAGIAZwBIAGUAbABwAC4AbABpAGIAIABzAGgAbAB3AGEAcABpAC4AbABpAGIAIAB3AGkA
bgBtAG0ALgBsAGkAYgAgAEMARgBsAGkAdABlAC4AbABpAGIAIABrAGUAcgBuAGUAbAAzADIALgBs
AGkAYgAgAHUAcwBlAHIAMwAyAC4AbABpAGIAIABnAGQAaQAzADIALgBsAGkAYgAgAHcAaQBuAHMA
cABvAG8AbAAuAGwAaQBiACAAcwBoAGUAbABsADMAMgAuAGwAaQBiACAAbwBsAGUAMwAyAC4AbABp
AGIAIABvAGwAZQBhAHUAdAAzADIALgBsAGkAYgAgAHUAdQBpAGQALgBsAGkAYgAgAGMAbwBtAGQA
bABnADMAMgAuAGwAaQBiACAAYQBkAHYAYQBwAGkAMwAyAC4AbABpAGIAIAAvAE0AQQBOAEkARgBF
AFMAVAAgAC8ATQBBAE4ASQBGAEUAUwBUAFUAQQBDADoAIgBsAGUAdgBlAGwAPQAnAGEAcwBJAG4A
dgBvAGsAZQByACcAIAB1AGkAQQBjAGMAZQBzAHMAPQAnAGYAYQBsAHMAZQAnACIAIAAvAG0AYQBu
AGkAZgBlAHMAdAA6AGUAbQBiAGUAZAAgAC8ARABFAEIAVQBHACAALwBQAEQAQgA6ACIARgA6AC8A
ZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2
ADQALwBiAGkAbgA2ADQALwBMAEwASQBuAHQATwBmAGYAcwBlAHQAcwBFAHgAdAByAGEAYwB0AG8A
cgAuAHAAZABiACIAIAAvAFMAVQBCAFMAWQBTAFQARQBNADoAQwBPAE4AUwBPAEwARQAgAC8ATwBQ
AFQAOgBSAEUARgAgAC8ATwBQAFQAOgBJAEMARgAgAC8AVABMAEIASQBEADoAMQAgAC8ARABZAE4A
QQBNAEkAQwBCAEEAUwBFACAALwBOAFgAQwBPAE0AUABBAFQAIAAvAEkATQBQAEwASQBCADoAIgBG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEA
bQBkADYANAAvAGwAaQBiADYANAAvAEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBj
AHQAbwByAC4AbABpAGIAIgAgAC8ATQBBAEMASABJAE4ARQA6AFgANgA0ACAAIAAvAG0AYQBjAGgA
aQBuAGUAOgB4ADYANAAgAEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBjAHQAbwBy
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATABMAEkAbgB0AE8AZgBmAHMAZQB0AHMARQB4AHQA
cgBhAGMAdABvAHIALgBvAGIAagANAAoAIAAgAEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0
AHIAYQBjAHQAbwByAC4AdgBjAHgAcAByAG8AagAgAC0APgAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAYgBpAG4ANgA0
AFwATABMAEkAbgB0AE8AZgBmAHMAZQB0AHMARQB4AHQAcgBhAGMAdABvAHIALgBlAHgAZQANAAoA
RgBpAG4AYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0
AGkAbgBnACAAZgBpAGwAZQAgACIATABMAEkAbgB0AE8AZgBmAHMAZQB0AHMARQB4AHQAcgBhAGMA
dABvAHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAEwASQBuAHQATwBmAGYALgAzADUAMAA1
AEEAQQBGADYALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIA
LgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIATABMAEkAbgB0AE8AZgBmAHMAZQB0AHMARQB4
AHQAcgBhAGMAdABvAHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAEwASQBuAHQATwBmAGYA
LgAzADUAMAA1AEEAQQBGADYALgB0AGwAbwBnAFwATABMAEkAbgB0AE8AZgBmAHMAZQB0AHMARQB4
AHQAcgBhAGMAdABvAHIALgBsAGEAcwB0AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8A
bgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEwATABJAG4AdABPAGYAZgBz
AGUAdABzAEUAeAB0AHIAYQBjAHQAbwByAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkA
bABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBn
ACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEwATABJAG4AdABPAGYAZgBzAGUAdABzAEUAeAB0AHIAYQBjAHQA
bwByAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABk
ACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABc
AFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYAYQBTAGMA
cgBpAHAAdABDAG8AcgBlAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAy
ADAAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEwAbwB3AEwAZQB2AGUAbABJAG4AdABlAHIA
cAByAGUAdABlAHIATABpAGIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAo
ADMANQApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUA
dAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUA
XABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABMAG8AdwBMAGUAdgBlAGwASQBuAHQAZQBy
AHAAcgBlAHQAZQByAEwAaQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAA
KAAzADUAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMA
ZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEIAeQB0AGUAYwBvAGQAZQBzAC4AdgBj
AHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAzADYAKQAgAG8AbgAgAG4AbwBkAGUA
IAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBq
AGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAFwAQgB5AHQAZQBjAG8AZABlAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIA
bwBqACIAIAAoADMANgApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMA
bwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAQgB5AHQAZQBjAG8AZABl
AHMALgB2AGMAeABwAHIAbwBqACIAIAAoADMANwApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIA
ZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBu
ADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQA
XABSAGUAbABlAGEAcwBlAFwAQgB5AHQAZQBjAG8AZABlAHMAXAAiAC4ADQAKAFAAcgBlAHAAYQBy
AGUARgBvAHIAQgB1AGkAbABkADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMA
dABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAQgB5AHQAZQBjAG8AZABlAHMAXABC
AHkAdABlAGMAbwBkAGUAcwAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6AGUA
QgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAHgANgA0
AFwAUgBlAGwAZQBhAHMAZQBcAEIAeQB0AGUAYwBvAGQAZQBzAFwAQgB5AHQAZQBjAG8AZABlAHMA
LgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIAIABiAGUAYwBh
AHUAcwBlACAAIgBBAGwAdwBhAHkAcwBDAHIAZQBhAHQAZQAiACAAdwBhAHMAIABzAHAAZQBjAGkA
ZgBpAGUAZAAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgANAAoAIAAgACIAVABoAGUAIABi
AHUAaQBsAGQAIABvAGYAIAAnAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAQwBNAGEAawBlAEYAaQBsAGUAcwBcADkAMQA4
ADIAYwA3AGUAYQAzAGIAMQA0ADYAMgA3ADYAYgA4ADYAYwA5AGMAMgBlAGYANQAwADcAZAA4ADYA
NwBcAEIAeQB0AGUAYwBvAGQAZQBzAC4AcgB1AGwAZQAnACAAZABlAHAAZQBuAGQAcwAgAG8AbgAg
ACcARgA6AFwARwBJAFQAUABcAFcARQBCAEsASQBUAFwAVwBFAEIASwBJAFQAXABCAFUASQBMAEQA
XwBBAE0ARAA2ADQAXABKAEEAVgBBAFMAQwBSAEkAUABUAEMATwBSAEUAXABEAEUAUgBJAFYARQBE
AFMATwBVAFIAQwBFAFMAXABCAFkAVABFAEMATwBEAEUAUwAuAEgAJwAgAHcAaABpAGMAaAAgAGkA
cwAgAHAAcgBvAGQAdQBjAGUAZAAgAGIAeQAgAHQAaABlACAAYgB1AGkAbABkACAAbwBmACAAJwBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAZwBlAG4AZQByAGEAdABvAHIAXABtAGEAaQBu
AC4AcgBiACcALgAgAFQAaABlACAAaQB0AGUAbQBzACAAYwBhAG4AbgBvAHQAIABiAGUAIABiAHUA
aQBsAHQAIABpAG4AIABwAGEAcgBhAGwAbABlAGwALgAiAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkA
dgBlAGQAUwBvAHUAcgBjAGUAcwAvAEIAeQB0AGUAYwBvAGQAZQBzAC4AaAAsACAALgAuAC8ALgAu
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAC8ASQBuAGkAdABCAHkAdABlAGMAbwBkAGUAcwAuAGEAcwBtACwAIAAuAC4ALwAuAC4ALwBK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
LwBCAHkAdABlAGMAbwBkAGUAUwB0AHIAdQBjAHQAcwAuAGgALAAgAC4ALgAvAC4ALgAvAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEIA
eQB0AGUAYwBvAGQAZQBJAG4AZABpAGMAZQBzAC4AaAAsACAALgAuAC8ALgAuAC8ASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AVwBhAHMA
bQBMAEwASQBuAHQARwBlAG4AZQByAGEAdABvAHIASQBuAGwAaQBuAGUAcwAuAGgALAAgAC4ALgAv
AC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwAvAEkAbgBpAHQAVwBhAHMAbQAuAGEAcwBtACwAIAAuAC4ALwAuAC4ALwBKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBCAHkA
dABlAGMAbwBkAGUARAB1AG0AcABlAHIARwBlAG4AZQByAGEAdABlAGQALgBjAHAAcAANAAoAIAAg
AEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAA
LwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUALwBDAE0AYQBrAGUATABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEA
bABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAg
AGYAaQBsAGUAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAEIAeQB0AGUAYwBvAGQAZQBzAFwA
QgB5AHQAZQBjAG8AZABlAHMALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1
AGkAbABkACIALgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEA
cwBlAFwAQgB5AHQAZQBjAG8AZABlAHMAXABCAHkAdABlAGMAbwBkAGUAcwAuAHQAbABvAGcAXABC
AHkAdABlAGMAbwBkAGUAcwAuAGwAYQBzAHQAYgB1AGkAbABkAHMAdABhAHQAZQAiAC4ADQAKAEQA
bwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMA
bwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAQgB5AHQAZQBjAG8AZABl
AHMALgB2AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMA
KQApAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAQgB5
AHQAZQBjAG8AZABlAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIA
ZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABM
AG8AdwBMAGUAdgBlAGwASQBuAHQAZQByAHAAcgBlAHQAZQByAEwAaQBiAC4AdgBjAHgAcAByAG8A
agAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAzADUAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAg
ACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQA
XwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEoAUwBDAEIAdQBpAGwAdABpAG4AcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoA
IgAgACgAMwA4ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQBy
AGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAUwBDAEIAdQBpAGwAdABpAG4A
cwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMwA4ACkAIABpAHMAIABi
AHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABKAFMAQwBCAHUAaQBsAHQAaQBuAHMALgB2AGMAeABwAHIAbwBqACIA
IAAoADMAOQApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBn
AGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQA
aQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwASgBT
AEMAQgB1AGkAbAB0AGkAbgBzAFwAIgAuAA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwA
ZAA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAHgANgA0
AFwAUgBlAGwAZQBhAHMAZQBcAEoAUwBDAEIAdQBpAGwAdABpAG4AcwBcAEoAUwBDAEIAdQBpAGwA
dABpAG4AcwAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6AGUAQgB1AGkAbABk
AFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAHgANgA0AFwAUgBlAGwA
ZQBhAHMAZQBcAEoAUwBDAEIAdQBpAGwAdABpAG4AcwBcAEoAUwBDAEIAdQBpAGwAdABpAG4AcwAu
AHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAgAGIAZQBjAGEA
dQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3AGEAcwAgAHMAcABlAGMAaQBm
AGkAZQBkAC4ADQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwAZAA6AA0ACgAgACAAIgBUAGgAZQAgAGIA
dQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABTAGMAcgBpAHAAdABzAFwAZwBlAG4AZQByAGEAdABlAC0AagBzAC0AYgB1AGkAbAB0AGkAbgBz
AC4AcAB5ACcAIABkAGUAcABlAG4AZABzACAAbwBuACAAJwBGADoAXABHAEkAVABQAFwAVwBFAEIA
SwBJAFQAXABXAEUAQgBLAEkAVABcAEIAVQBJAEwARABfAEEATQBEADYANABcAEoAQQBWAEEAUwBD
AFIASQBQAFQAQwBPAFIARQBcAFMAQwBSAEkAUABUAFMAXABXAEsAQgBVAEkATABUAEkATgBTAC4A
UABZACcAIAB3AGgAaQBjAGgAIABpAHMAIABwAHIAbwBkAHUAYwBlAGQAIABiAHkAIAB0AGgAZQAg
AGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAFMAYwBy
AGkAcAB0AHMAXAB3AGsAYgB1AGkAbAB0AGkAbgBzAFwAdwBrAGIAdQBpAGwAdABpAG4AcwAuAHAA
eQAnAC4AIABUAGgAZQAgAGkAdABlAG0AcwAgAGMAYQBuAG4AbwB0ACAAYgBlACAAYgB1AGkAbAB0
ACAAaQBuACAAcABhAHIAYQBsAGwAZQBsAC4AIgANAAoAIAAgACIAVABoAGUAIABiAHUAaQBsAGQA
IABvAGYAIAAnAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAQwBNAGEAawBlAEYAaQBsAGUAcwBcADkAMQA4ADIAYwA3AGUA
YQAzAGIAMQA0ADYAMgA3ADYAYgA4ADYAYwA5AGMAMgBlAGYANQAwADcAZAA4ADYANwBcAEoAUwBD
AEIAdQBpAGwAdABpAG4AcwAuAHIAdQBsAGUAJwAgAGQAZQBwAGUAbgBkAHMAIABvAG4AIAAnAEYA
OgBcAEcASQBUAFAAXABXAEUAQgBLAEkAVABcAFcARQBCAEsASQBUAFwAQgBVAEkATABEAF8AQQBN
AEQANgA0AFwASgBBAFYAQQBTAEMAUgBJAFAAVABDAE8AUgBFAFwARABFAFIASQBWAEUARABTAE8A
VQBSAEMARQBTAFwASgBTAEMAQgBVAEkATABUAEkATgBTAC4ASAAnACAAdwBoAGkAYwBoACAAaQBz
ACAAcAByAG8AZAB1AGMAZQBkACAAYgB5ACAAdABoAGUAIABiAHUAaQBsAGQAIABvAGYAIAAnAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAUwBjAHIAaQBwAHQAcwBcAGcA
ZQBuAGUAcgBhAHQAZQAtAGoAcwAtAGIAdQBpAGwAdABpAG4AcwAuAHAAeQAnAC4AIABUAGgAZQAg
AGkAdABlAG0AcwAgAGMAYQBuAG4AbwB0ACAAYgBlACAAYgB1AGkAbAB0ACAAaQBuACAAcABhAHIA
YQBsAGwAZQBsAC4AIgANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AZwBlAG4AZQByAGEA
dABlAC0AagBzAC0AYgB1AGkAbAB0AGkAbgBzAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkA
cAB0AHMALwB3AGsAYgB1AGkAbAB0AGkAbgBzAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkA
cAB0AHMALwBiAHUAaQBsAHQAaQBuAHMAXwBnAGUAbgBlAHIAYQB0AG8AcgAuAHAAeQANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUALwBTAGMAcgBpAHAAdABzAC8AYgB1AGkAbAB0AGkAbgBzAF8AbQBvAGQAZQBsAC4AcAB5
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBiAHUAaQBsAHQAaQBuAHMAXwB0AGUAbQBw
AGwAYQB0AGUAcwAuAHAAeQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AYgB1AGkAbAB0
AGkAbgBzAF8AZwBlAG4AZQByAGEAdABlAF8AYwBvAG0AYgBpAG4AZQBkAF8AaABlAGEAZABlAHIA
LgBwAHkADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAC8AUwBjAHIAaQBwAHQAcwAvAGIAdQBpAGwAdABpAG4AcwBfAGcA
ZQBuAGUAcgBhAHQAZQBfAGMAbwBtAGIAaQBuAGUAZABfAGkAbQBwAGwAZQBtAGUAbgB0AGEAdABp
AG8AbgAuAHAAeQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AYgB1AGkAbAB0AGkAbgBz
AF8AZwBlAG4AZQByAGEAdABlAF8AcwBlAHAAYQByAGEAdABlAF8AaABlAGEAZABlAHIALgBwAHkA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAC8AUwBjAHIAaQBwAHQAcwAvAGIAdQBpAGwAdABpAG4AcwBfAGcAZQBuAGUA
cgBhAHQAZQBfAHMAZQBwAGEAcgBhAHQAZQBfAGkAbQBwAGwAZQBtAGUAbgB0AGEAdABpAG8AbgAu
AHAAeQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AYgB1AGkAbAB0AGkAbgBzAF8AZwBl
AG4AZQByAGEAdABlAF8AdwByAGEAcABwAGUAcgBfAGgAZQBhAGQAZQByAC4AcAB5AA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQAvAFMAYwByAGkAcAB0AHMALwBiAHUAaQBsAHQAaQBuAHMAXwBnAGUAbgBlAHIAYQB0AGUA
XwB3AHIAYQBwAHAAZQByAF8AaQBtAHAAbABlAG0AZQBuAHQAYQB0AGkAbwBuAC4AcAB5AA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBiAHUAaQBsAHQAaQBuAHMAXwBnAGUAbgBlAHIAYQB0
AGUAXwBpAG4AdABlAHIAbgBhAGwAcwBfAHcAcgBhAHAAcABlAHIAXwBoAGUAYQBkAGUAcgAuAHAA
eQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUALwBTAGMAcgBpAHAAdABzAC8AYgB1AGkAbAB0AGkAbgBzAF8AZwBlAG4A
ZQByAGEAdABlAF8AaQBuAHQAZQByAG4AYQBsAHMAXwB3AHIAYQBwAHAAZQByAF8AaQBtAHAAbABl
AG0AZQBuAHQAYQB0AGkAbwBuAC4AcAB5AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFMAYwByAGkAcAB0AHMALwBs
AGEAegB5AHcAcgBpAHQAZQByAC4AcAB5AA0ACgAgACAAQgB1AGkAbABkAGkAbgBnACAAQwB1AHMA
dABvAG0AIABSAHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBp
AHQALwBTAG8AdQByAGMAZQAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEMATQBhAGsA
ZQBMAGkAcwB0AHMALgB0AHgAdAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIA
YwBlAHMALwBKAFMAQwBCAHUAaQBsAHQAaQBuAHMALgBjAHAAcAAsACAALgAuAC8ALgAuAC8ASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8A
SgBTAEMAQgB1AGkAbAB0AGkAbgBzAC4AaAANAAoARgBpAG4AYQBsAGkAegBlAEIAdQBpAGwAZABT
AHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBnACAAZgBpAGwAZQAgACIAeAA2ADQA
XABSAGUAbABlAGEAcwBlAFwASgBTAEMAQgB1AGkAbAB0AGkAbgBzAFwASgBTAEMAQgB1AGkAbAB0
AGkAbgBzAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiAC4A
DQAKACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAEoAUwBD
AEIAdQBpAGwAdABpAG4AcwBcAEoAUwBDAEIAdQBpAGwAdABpAG4AcwAuAHQAbABvAGcAXABKAFMA
QwBCAHUAaQBsAHQAaQBuAHMALgBsAGEAcwB0AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0ACgBE
AG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABT
AG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAUwBDAEIAdQBpAGwA
dABpAG4AcwAuAHYAYwB4AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0
ACgAcwApACkALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQA
IAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABk
AF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABKAFMAQwBCAHUAaQBsAHQAaQBuAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBq
ACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoA
ZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABMAG8AdwBMAGUAdgBlAGwASQBuAHQAZQByAHAAcgBlAHQAZQByAEwAaQBiAC4AdgBj
AHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAzADUAKQAgAGkAcwAgAGIAdQBpAGwA
ZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEwAbwB3AEwAZQB2AGUAbABJAG4AdABlAHIAcAByAGUAdABlAHIATABpAGIALgB2
AGMAeABwAHIAbwBqACIAIAAoADQAMAApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUA
aQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAK
ACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIATABvAHcATABlAHYA
ZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
ACIALgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUAaQBsAGQAOgANAAoAIAAgAEMAcgBlAGEA
dABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBMAG8AdwBMAGUAdgBlAGwASQBuAHQAZQBy
AHAAcgBlAHQAZQByAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATABvAHcATABlAHYA
ZQBsAC4AMAAwADgARAA2AEIAQwA5AC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABp
AHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIA
TABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgBMAGkAYgAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEwAbwB3AEwAZQB2AGUAbAAuADAAMAA4AEQANgBCAEMAOQAuAHQAbABvAGcA
XAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAgAGIAZQBjAGEAdQBzAGUAIAAi
AEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3AGEAcwAgAHMAcABlAGMAaQBmAGkAZQBkAC4A
DQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwAZAA6AA0ACgAgACAAQgB1AGkAbABkAGkAbgBnACAAQwB1
AHMAdABvAG0AIABSAHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIA
awBpAHQALwBTAG8AdQByAGMAZQAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEMATQBh
AGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoAQwBsAEMAbwBtAHAAaQBsAGUAOgANAAoAIAAgAEMA
OgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8AcwBv
AGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQByAHAA
cgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAyADgAOAAw
ADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAEMATAAuAGUAeABlACAALwBjACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBp
AHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAEkARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABIAGUAYQBkAGUAcgBzACAALwBJAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAIAAvAEkARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAEEAUABJACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABhAHMAcwBlAG0AYgBsAGUAcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAFwAYgAzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABiADMAXABhAGkA
cgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1
AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAYgBpAG4AZABpAG4AZwBzACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABiAHUAaQBsAHQAaQBuAHMAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGIAeQB0AGUAYwBvAGQAZQAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAYgB5AHQAZQBjAG8AbQBwAGkAbABlAHIAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGQAZgBnACAALwBJAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABkAGkAcwBhAHMAcwBlAG0AYgBsAGUAcgAgAC8ASQBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwAZABpAHMAYQBzAHMAZQBtAGIAbABlAHIAXABBAFIATQA2ADQA
IAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGQAaQBzAGEAcwBzAGUAbQBiAGwA
ZQByAFwAdQBkAGkAcwA4ADYAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGQA
bwBtAGoAaQB0ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABmAHQAbAAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAaABlAGEAcAAgAC8ASQBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwAZABlAGIAdQBnAGcAZQByACAALwBJAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgAgAC8ASQBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAFwAaQBuAHMAcABlAGMAdABvAHIAXABhAGcAZQBuAHQAcwAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAaQBuAHMAcABlAGMAdABvAHIAXABhAHUAZwBtAGUA
bgB0AGEAYgBsAGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGkAbgBzAHAA
ZQBjAHQAbwByAFwAcgBlAG0AbwB0AGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAGkAbgB0AGUAcgBwAHIAZQB0AGUAcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAFwAagBpAHQAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGwAbABpAG4A
dAAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1
AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAcABhAHIAcwBlAHIAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAHAAcgBvAGYAaQBsAGUAcgAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAcgB1AG4AdABpAG0AZQAgAC8ASQBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwAdABvAG8AbABzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0
AEMAbwByAGUAXAB3AGEAcwBtACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXAB3
AGEAcwBtAFwAagBzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXAB5AGEAcgBy
ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2
AGUAZABTAG8AdQByAGMAZQBzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAaQBuAHMAcABlAGMAdABvAHIA
IAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYA
ZQBkAFMAbwB1AHIAYwBlAHMAXAByAHUAbgB0AGkAbQBlACAALwBJAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAeQBh
AHIAcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAC4ALgBcAGkAbgBjAGwAdQBkAGUAXABwAHIAaQB2AGEAdABl
ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBc
AHIAZQBtAG8AdABlAFwAcwBvAGMAawBlAHQAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABXAFQARgBcAEgAZQBh
AGQAZQByAHMAIAAvAFoAaQAgAC8AbgBvAGwAbwBnAG8AIAAvAFcANAAgAC8AVwBYAC0AIAAvAGQA
aQBhAGcAbgBvAHMAdABpAGMAcwA6AGMAbwBsAHUAbQBuACAALwBNAFAAIAAvAE8AMgAgAC8ATwBi
ADIAIAAvAE8AeQAtACAALwBEACAAVwBJAE4AMwAyACAALwBEACAAXwBXAEkATgBEAE8AVwBTACAA
LwBEACAATgBEAEUAQgBVAEcAIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBXAEkAVABIAF8AQwBN
AEEASwBFAD0AMQAgAC8ARAAgAEgAQQBWAEUAXwBDAE8ATgBGAEkARwBfAEgAPQAxACAALwBEACAA
VwBJAE4AVgBFAFIAPQAwAHgANgAwADEAIAAvAEQAIABfAFcASQBOADMAMgBfAFcASQBOAE4AVAA9
ADAAeAA2ADAAMQAgAC8ARAAgAE4ATwBNAEkATgBNAEEAWAAgAC8ARAAgAFUATgBJAEMATwBEAEUA
IAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABfAEgAQQBTAF8ARQBYAEMARQBQAFQASQBP
AE4AUwA9ADAAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBOAE8AXwBXAEEAUgBOAEkA
TgBHAFMAIAAvAEQAIABfAEMAUgBUAF8AUwBFAEMAVQBSAEUAXwBDAFAAUABfAE8AVgBFAFIATABP
AEEARABfAFMAVABBAE4ARABBAFIARABfAE4AQQBNAEUAUwA9ADEAIAAvAEQAIABfAFcASQBOAFMA
TwBDAEsAQQBQAEkAXwA9ACAALwBEACAAVwBUAEYAXwBQAEwAQQBUAEYATwBSAE0AXwBXAEkATgBf
AEMAQQBJAFIATwA9ADEAIAAvAEQAIABOAE8AQwBSAFkAUABUACAALwBEACAAIgBDAE0AQQBLAEUA
XwBJAE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwAIgAiACAALwBEACAAXwBVAE4ASQBD
AE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBtAC0AIAAvAE0ARAAgAC8ARwBTACAA
LwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgAYwBlAHAAdAAtACAALwBaAGMAOgB3
AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBwAGUAIAAvAFoAYwA6AGkAbgBsAGkA
bgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcAIAAvAEYAbwAiAEwAbwB3AEwAZQB2
AGUAbABJAG4AdABlAHIAcAByAGUAdABlAHIATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABcACIAIAAvAEYAZAAiAEwAbwB3AEwAZQB2AGUAbABJAG4AdABlAHIAcAByAGUAdABlAHIATABp
AGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAG8AdwBMAGUAdgBlAGwASQBuAHQAZQByAHAA
cgBlAHQAZQByAEwAaQBiAC4AcABkAGIAIgAgAC8ARwBkACAALwBUAFAAIAAvAHcAZAA0ADAAMQA4
ACAALwB3AGQANAAwADYAOAAgAC8AdwBkADQAMAA5ADkAIAAvAHcAZAA0ADEAMAAwACAALwB3AGQA
NAAxADIANwAgAC8AdwBkADQAMQAzADgAIAAvAHcAZAA0ADEANAA2ACAALwB3AGQANAAxADgAMAAg
AC8AdwBkADQAMQA4ADkAIAAvAHcAZAA0ADIAMAAxACAALwB3AGQANAAyADAANgAgAC8AdwBkADQA
MgA0ADQAIAAvAHcAZAA0ADIANQAxACAALwB3AGQANAAyADYANwAgAC8AdwBkADQAMgA3ADUAIAAv
AHcAZAA0ADIAOAA4ACAALwB3AGQANAAyADkAMQAgAC8AdwBkADQAMwAwADUAIAAvAHcAZAA0ADMA
MAA5ACAALwB3AGQANAAzADQANAAgAC8AdwBkADQAMwA1ADUAIAAvAHcAZAA0ADMAOAA5ACAALwB3
AGQANAAzADkANgAgAC8AdwBkADQANAA1ADYAIAAvAHcAZAA0ADQANQA3ACAALwB3AGQANAA0ADUA
OAAgAC8AdwBkADQANAA1ADkAIAAvAHcAZAA0ADQAOAAxACAALwB3AGQANAA1ADAAMwAgAC8AdwBk
ADQANQAwADUAIAAvAHcAZAA0ADUAMQAwACAALwB3AGQANAA1ADEAMgAgAC8AdwBkADQANQAzADAA
IAAvAHcAZAA0ADYAMQAwACAALwB3AGQANAA2ADEAMQAgAC8AdwBkADQANgA0ADYAIAAvAHcAZAA0
ADcAMAAyACAALwB3AGQANAA3ADAANgAgAC8AdwBkADQANwAyADIAIAAvAHcAZAA0ADgAMAAwACAA
LwB3AGQANAA4ADEAOQAgAC8AdwBkADQAOQA1ADEAIAAvAHcAZAA0ADkANQAyACAALwB3AGQANAA5
ADkANgAgAC8AdwBkADYAMAAxADEAIAAvAHcAZAA2ADAAMwAxACAALwB3AGQANgAyADEAMQAgAC8A
dwBkADYAMgA0ADYAIAAvAHcAZAA2ADIANQA1ACAALwB3AGQANgAzADgANwAgAC8AdwBkADQAMAA5
ADEAIAAvAGEAbgBhAGwAeQB6AGUALQAgAC8AZQByAHIAbwByAFIAZQBwAG8AcgB0ADoAcQB1AGUA
dQBlACAAIAAvAEUASABzAC0AIAAvAEUASABjAC0AIAAvAEUASABhAC0AIAAvAEUASABjAC0AIAAv
AEUASABzAC0AIAAvAGIAaQBnAG8AYgBqACAALwB1AHQAZgAtADgAIAAvAHYAYQBsAGkAZABhAHQA
ZQAtAGMAaABhAHIAcwBlAHQAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAbABsAGkA
bgB0AFwATABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgAuAGMAcABwAA0ACgAg
ACAATABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgAuAGMAcABwAA0ACgBMAGkA
YgA6AA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBc
AE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkA
XABFAG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAu
ADIANgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwATABpAGIA
LgBlAHgAZQAgAC8ATwBVAFQAOgAiAEwAbwB3AEwAZQB2AGUAbABJAG4AdABlAHIAcAByAGUAdABl
AHIATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAG8AdwBMAGUAdgBlAGwASQBuAHQA
ZQByAHAAcgBlAHQAZQByAEwAaQBiAC4AbABpAGIAIgAgAC8ATgBPAEwATwBHAE8AIAAvAE0AQQBD
AEgASQBOAEUAOgBYADYANAAgACAALwBtAGEAYwBoAGkAbgBlADoAeAA2ADQAIABMAG8AdwBMAGUA
dgBlAGwASQBuAHQAZQByAHAAcgBlAHQAZQByAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwATABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgAuAG8AYgBqAA0ACgAgACAA
TABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgBMAGkAYgAuAHYAYwB4AHAAcgBv
AGoAIAAtAD4AIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAFwATABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgBMAGkAYgAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAEwAbwB3AEwAZQB2AGUAbABJAG4AdABlAHIAcAByAGUAdABl
AHIATABpAGIALgBsAGkAYgANAAoARgBpAG4AYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUA
cwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBnACAAZgBpAGwAZQAgACIATABvAHcATABlAHYAZQBs
AEkAbgB0AGUAcgBwAHIAZQB0AGUAcgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEwA
bwB3AEwAZQB2AGUAbAAuADAAMAA4AEQANgBCAEMAOQAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBl
AHMAcwBmAHUAbABiAHUAaQBsAGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkAbgBnACAAIgBMAG8A
dwBMAGUAdgBlAGwASQBuAHQAZQByAHAAcgBlAHQAZQByAEwAaQBiAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwATABvAHcATABlAHYAZQBsAC4AMAAwADgARAA2AEIAQwA5AC4AdABsAG8AZwBcAEwA
bwB3AEwAZQB2AGUAbABJAG4AdABlAHIAcAByAGUAdABlAHIATABpAGIALgBsAGEAcwB0AGIAdQBp
AGwAZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8A
agBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEwAbwB3AEwAZQB2AGUAbABJAG4AdABlAHIAcAByAGUAdABlAHIATABpAGIALgB2
AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4A
DQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwATABvAHcATABl
AHYAZQBsAEkAbgB0AGUAcgBwAHIAZQB0AGUAcgBMAGkAYgAuAHYAYwB4AHAAcgBvAGoALgBtAGUA
dABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgAN
AAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAuAHYAYwB4AHAA
cgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgAwACkAIABpAHMAIABiAHUAaQBsAGQAaQBu
AGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALgB2AGMAeABwAHIAbwBqACIAIAAoADQA
MQApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAo
AHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcA
IABkAGkAcgBlAGMAdABvAHIAeQAgACIASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAIgAuAA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwA
ZAA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6
AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUA
bABiAHUAaQBsAGQAIgAgAGIAZQBjAGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABl
ACIAIAB3AGEAcwAgAHMAcABlAGMAaQBmAGkAZQBkAC4ADQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwA
ZAA6AA0ACgAgACAAIgBUAGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABDAE0A
YQBrAGUARgBpAGwAZQBzAFwANwAyAGYAMgA0ADIANwA4ADEAZAA1ADkANwA4AGQAMwAzAGIAYwA1
AGYAOQBmAGMAZAAzAGIAYQBiADUAYgA1AFwATABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIA
ZQB0AGUAcgBXAGkAbgAuAG8AYgBqAC4AcgB1AGwAZQAnACAAZABlAHAAZQBuAGQAcwAgAG8AbgAg
ACcARgA6AFwARwBJAFQAUABcAFcARQBCAEsASQBUAFwAVwBFAEIASwBJAFQAXABCAFUASQBMAEQA
XwBBAE0ARAA2ADQAXABKAEEAVgBBAFMAQwBSAEkAUABUAEMATwBSAEUAXABEAEUAUgBJAFYARQBE
AFMATwBVAFIAQwBFAFMAXABMAE8AVwBMAEUAVgBFAEwASQBOAFQARQBSAFAAUgBFAFQARQBSAFcA
SQBOAC4AQQBTAE0AJwAgAHcAaABpAGMAaAAgAGkAcwAgAHAAcgBvAGQAdQBjAGUAZAAgAGIAeQAg
AHQAaABlACAAYgB1AGkAbABkACAAbwBmACAAJwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AFwAbwBmAGYAbABpAG4AZQBhAHMAbQBcAGEAcwBtAC4AcgBiACcALgAgAFQAaABlACAAaQB0AGUA
bQBzACAAYwBhAG4AbgBvAHQAIABiAGUAIABiAHUAaQBsAHQAIABpAG4AIABwAGEAcgBhAGwAbABl
AGwALgAiAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQAvAFAAcgBpAHYAYQB0AGUASABlAGEAZABlAHIAcwAvAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFcAYQBzAG0ATwBwAHMALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAv
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAGkAbgBzAHAAZQBjAHQAbwByAC8ASQBuAHMA
cABlAGMAdABvAHIAQgBhAGMAawBlAG4AZABEAGkAcwBwAGEAdABjAGgAZQByAHMALgBjAHAAcAAs
ACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUA
ZABTAG8AdQByAGMAZQBzAC8AaQBuAHMAcABlAGMAdABvAHIALwBJAG4AcwBwAGUAYwB0AG8AcgBC
AGEAYwBrAGUAbgBkAEQAaQBzAHAAYQB0AGMAaABlAHIAcwAuAGgALAAgAC4ALgAvAC4ALgAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAv
AGkAbgBzAHAAZQBjAHQAbwByAC8ASQBuAHMAcABlAGMAdABvAHIARgByAG8AbgB0AGUAbgBkAEQA
aQBzAHAAYQB0AGMAaABlAHIAcwAuAGMAcABwACwAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBpAG4AcwBwAGUA
YwB0AG8AcgAvAEkAbgBzAHAAZQBjAHQAbwByAEYAcgBvAG4AdABlAG4AZABEAGkAcwBwAGEAdABj
AGgAZQByAHMALgBoACwAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
LwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBpAG4AcwBwAGUAYwB0AG8AcgAvAEkAbgBz
AHAAZQBjAHQAbwByAFAAcgBvAHQAbwBjAG8AbABPAGIAagBlAGMAdABzAC4AYwBwAHAALAAgAC4A
LgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwAvAGkAbgBzAHAAZQBjAHQAbwByAC8ASQBuAHMAcABlAGMAdABvAHIAUAByAG8A
dABvAGMAbwBsAE8AYgBqAGUAYwB0AHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAFAAcgBpAHYAYQB0AGUA
SABlAGEAZABlAHIAcwAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEoAUwBDAEIAdQBp
AGwAdABpAG4AcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8AUAByAGkAdgBhAHQAZQBIAGUAYQBkAGUAcgBz
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8AVwBhAHMAbQBFAG0AYgBlAGQAZABlAHIA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAHUAZABpAHMA
OAA2AF8AaQB0AGEAYgAuAGMALAAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAHUAZABpAHMAOAA2AF8AaQB0AGEA
YgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AVwBhAHMA
bQBCADMASQBSAEcAZQBuAGUAcgBhAHQAbwByAEkAbgBsAGkAbgBlAHMALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEEAcgByAGEAeQBDAG8AbgBzAHQAcgB1
AGMAdABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQBy
AGMAZQBzAC8AQQBzAHkAbgBjAEYAcgBvAG0AUwB5AG4AYwBJAHQAZQByAGEAdABvAHIAUAByAG8A
dABvAHQAeQBwAGUALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8A
dQByAGMAZQBzAC8AQQBzAHkAbgBjAEcAZQBuAGUAcgBhAHQAbwByAFAAcgBvAHQAbwB0AHkAcABl
AC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAv
AEIAaQBnAEkAbgB0AEMAbwBuAHMAdAByAHUAYwB0AG8AcgAuAGwAdQB0AC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBCAGkAZwBJAG4AdABQAHIAbwB0AG8A
dAB5AHAAZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIA
YwBlAHMALwBCAG8AbwBsAGUAYQBuAFAAcgBvAHQAbwB0AHkAcABlAC4AbAB1AHQALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEQAYQB0AGUAQwBvAG4AcwB0
AHIAdQBjAHQAbwByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwAvAEQAYQB0AGUAUAByAG8AdABvAHQAeQBwAGUALgBsAHUAdAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ARQByAHIAbwByAFAAcgBvAHQA
bwB0AHkAcABlAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwAvAEcAZQBuAGUAcgBhAHQAbwByAFAAcgBvAHQAbwB0AHkAcABlAC4AbAB1AHQALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEkAbgBzAHAAZQBj
AHQAbwByAEkAbgBzAHQAcgB1AG0AZQBuAHQAYQB0AGkAbwBuAE8AYgBqAGUAYwB0AC4AbAB1AHQA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEkAbgB0AGwA
QwBvAGwAbABhAHQAbwByAEMAbwBuAHMAdAByAHUAYwB0AG8AcgAuAGwAdQB0AC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBJAG4AdABsAEMAbwBsAGwAYQB0
AG8AcgBQAHIAbwB0AG8AdAB5AHAAZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQA
aQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBp
AHYAZQBkAFMAbwB1AHIAYwBlAHMALwBJAG4AdABsAEQAYQB0AGUAVABpAG0AZQBGAG8AcgBtAGEA
dABDAG8AbgBzAHQAcgB1AGMAdABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIA
aQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBuAHQAbABEAGEAdABlAFQAaQBtAGUARgBvAHIAbQBh
AHQAUAByAG8AdABvAHQAeQBwAGUALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2
AGUAZABTAG8AdQByAGMAZQBzAC8ASQBuAHQAbABEAGkAcwBwAGwAYQB5AE4AYQBtAGUAcwBDAG8A
bgBzAHQAcgB1AGMAdABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUA
ZABTAG8AdQByAGMAZQBzAC8ASQBuAHQAbABEAGkAcwBwAGwAYQB5AE4AYQBtAGUAcwBQAHIAbwB0
AG8AdAB5AHAAZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1
AHIAYwBlAHMALwBJAG4AdABsAEwAbwBjAGEAbABlAFAAcgBvAHQAbwB0AHkAcABlAC4AbAB1AHQA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEkAbgB0AGwA
TgB1AG0AYgBlAHIARgBvAHIAbQBhAHQAQwBvAG4AcwB0AHIAdQBjAHQAbwByAC4AbAB1AHQALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEkAbgB0AGwATgB1
AG0AYgBlAHIARgBvAHIAbQBhAHQAUAByAG8AdABvAHQAeQBwAGUALgBsAHUAdAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBuAHQAbABPAGIAagBlAGMA
dAAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
LwBJAG4AdABsAFAAbAB1AHIAYQBsAFIAdQBsAGUAcwBDAG8AbgBzAHQAcgB1AGMAdABvAHIALgBs
AHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBu
AHQAbABQAGwAdQByAGEAbABSAHUAbABlAHMAUAByAG8AdABvAHQAeQBwAGUALgBsAHUAdAAuAGgA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBuAHQAbABSAGUA
bABhAHQAaQB2AGUAVABpAG0AZQBGAG8AcgBtAGEAdABDAG8AbgBzAHQAcgB1AGMAdABvAHIALgBs
AHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBu
AHQAbABSAGUAbABhAHQAaQB2AGUAVABpAG0AZQBGAG8AcgBtAGEAdABQAHIAbwB0AG8AdAB5AHAA
ZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
LwBKAFMARABhAHQAYQBWAGkAZQB3AFAAcgBvAHQAbwB0AHkAcABlAC4AbAB1AHQALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEoAUwBHAGwAbwBiAGEAbABP
AGIAagBlAGMAdAAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1
AHIAYwBlAHMALwBKAFMASQBuAHQAZQByAG4AYQBsAFAAcgBvAG0AaQBzAGUAQwBvAG4AcwB0AHIA
dQBjAHQAbwByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwAvAEoAUwBNAG8AZAB1AGwAZQBMAG8AYQBkAGUAcgAuAGwAdQB0AC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBKAFMATwBOAE8AYgBqAGUAYwB0
AC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAv
AEoAUwBQAHIAbwBtAGkAcwBlAEMAbwBuAHMAdAByAHUAYwB0AG8AcgAuAGwAdQB0AC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0
AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBKAFMAUAByAG8AbQBpAHMA
ZQBQAHIAbwB0AG8AdAB5AHAAZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYA
ZQBkAFMAbwB1AHIAYwBlAHMALwBNAGEAcABQAHIAbwB0AG8AdAB5AHAAZQAuAGwAdQB0AC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBOAHUAbQBiAGUAcgBD
AG8AbgBzAHQAcgB1AGMAdABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2
AGUAZABTAG8AdQByAGMAZQBzAC8ATgB1AG0AYgBlAHIAUAByAG8AdABvAHQAeQBwAGUALgBsAHUA
dAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ATwBiAGoA
ZQBjAHQAQwBvAG4AcwB0AHIAdQBjAHQAbwByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQA
ZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAFIAZQBmAGwAZQBjAHQATwBiAGoAZQBjAHQALgBs
AHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AUgBl
AGcARQB4AHAAQwBvAG4AcwB0AHIAdQBjAHQAbwByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAv
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAFIAZQBnAEUAeABwAFAAcgBvAHQAbwB0AHkA
cABlAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUA
cwAvAFIAZQBnAEUAeABwAFMAdAByAGkAbgBnAEkAdABlAHIAYQB0AG8AcgBQAHIAbwB0AG8AdAB5
AHAAZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBl
AHMALwBTAGUAdABQAHIAbwB0AG8AdAB5AHAAZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBE
AGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBTAHQAcgBpAG4AZwBDAG8AbgBzAHQAcgB1AGMA
dABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAC8AUwB0AHIAaQBuAGcAUAByAG8AdABvAHQAeQBwAGUALgBsAHUAdAAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AUwB5AG0AYgBvAGwAQwBvAG4AcwB0
AHIAdQBjAHQAbwByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwAvAFMAeQBtAGIAbwBsAFAAcgBvAHQAbwB0AHkAcABlAC4AbAB1AHQALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEoAUwBXAGUAYgBBAHMA
cwBlAG0AYgBsAHkALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8A
dQByAGMAZQBzAC8ASgBTAFQAbwBXAGEAcwBtAEkAQwBDAGEAbABsAGUAZQAuAGwAdQB0AC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBXAGUAYgBBAHMAcwBl
AG0AYgBsAHkAQwBvAG0AcABpAGwAZQBFAHIAcgBvAHIAQwBvAG4AcwB0AHIAdQBjAHQAbwByAC4A
bAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAFcA
ZQBiAEEAcwBzAGUAbQBiAGwAeQBDAG8AbQBwAGkAbABlAEUAcgByAG8AcgBQAHIAbwB0AG8AdAB5
AHAAZQAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBl
AHMALwBXAGUAYgBBAHMAcwBlAG0AYgBsAHkARwBsAG8AYgBhAGwAQwBvAG4AcwB0AHIAdQBjAHQA
bwByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUA
cwAvAFcAZQBiAEEAcwBzAGUAbQBiAGwAeQBHAGwAbwBiAGEAbABQAHIAbwB0AG8AdAB5AHAAZQAu
AGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBX
AGUAYgBBAHMAcwBlAG0AYgBsAHkASQBuAHMAdABhAG4AYwBlAEMAbwBuAHMAdAByAHUAYwB0AG8A
cgAuAGwAdQB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
LwBXAGUAYgBBAHMAcwBlAG0AYgBsAHkASQBuAHMAdABhAG4AYwBlAFAAcgBvAHQAbwB0AHkAcABl
AC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAv
AFcAZQBiAEEAcwBzAGUAbQBiAGwAeQBMAGkAbgBrAEUAcgByAG8AcgBDAG8AbgBzAHQAcgB1AGMA
dABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAC8AVwBlAGIAQQBzAHMAZQBtAGIAbAB5AEwAaQBuAGsARQByAHIAbwByAFAAcgBvAHQAbwB0
AHkAcABlAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBj
AGUAcwAvAFcAZQBiAEEAcwBzAGUAbQBiAGwAeQBNAGUAbQBvAHIAeQBDAG8AbgBzAHQAcgB1AGMA
dABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAC8AVwBlAGIAQQBzAHMAZQBtAGIAbAB5AE0AZQBtAG8AcgB5AFAAcgBvAHQAbwB0AHkAcABl
AC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAv
AFcAZQBiAEEAcwBzAGUAbQBiAGwAeQBNAG8AZAB1AGwAZQBDAG8AbgBzAHQAcgB1AGMAdABvAHIA
LgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8A
VwBlAGIAQQBzAHMAZQBtAGIAbAB5AE0AbwBkAHUAbABlAFAAcgBvAHQAbwB0AHkAcABlAC4AbAB1
AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAFcAZQBi
AEEAcwBzAGUAbQBiAGwAeQBSAHUAbgB0AGkAbQBlAEUAcgByAG8AcgBDAG8AbgBzAHQAcgB1AGMA
dABvAHIALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAC8AVwBlAGIAQQBzAHMAZQBtAGIAbAB5AFIAdQBuAHQAaQBtAGUARQByAHIAbwByAFAAcgBv
AHQAbwB0AHkAcABlAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwAvAFcAZQBiAEEAcwBzAGUAbQBiAGwAeQBUAGEAYgBsAGUAQwBvAG4AcwB0AHIA
dQBjAHQAbwByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwAvAFcAZQBiAEEAcwBzAGUAbQBiAGwAeQBUAGEAYgBsAGUAUAByAG8AdABvAHQAeQBw
AGUALgBsAHUAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBz
AC8ATABlAHgAZQByAC4AbAB1AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4A
LgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAvAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwAvAHkAYQByAHIALwBSAGUAZwBFAHgAcABKAGkAdABUAGEAYgBsAGUAcwAuAGgA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AeQBhAHIAcgAvAFUA
bgBpAGMAbwBkAGUAUABhAHQAdABlAHIAbgBUAGEAYgBsAGUAcwAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8A
RABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASwBlAHkAdwBvAHIAZABMAG8AbwBrAHUAcAAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMA
cgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBuAGoAZQBj
AHQAZQBkAFMAYwByAGkAcAB0AFMAbwB1AHIAYwBlAC4AaAAsACAALgAuAC8ALgAuAC8ASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBu
AGoAZQBjAHQAZQBkAFMAYwByAGkAcAB0AFMAbwB1AHIAYwBlAC4AbQBpAG4ALgBqAHMADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AeQBhAHIAcgAvAFkAYQByAHIA
QwBhAG4AbwBuAGkAYwBhAGwAaQB6AGUAVQBuAGkAYwBvAGQAZQAuAGMAcABwAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAEwAbwB3AEwAZQB2AGUAbABJAG4AdABl
AHIAcAByAGUAdABlAHIAVwBpAG4ALgBhAHMAbQANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBEAGUAcgBpAHYAZQBk
AFMAbwB1AHIAYwBlAHMALwBKAEkAVABTAHQAdQBiAHMATQBTAFYAQwA2ADQALgBvAGIAagANAAoA
IAAgACAAQQBzAHMAZQBtAGIAbABpAG4AZwA6ACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0
AC8AdwBlAGIAawBpAHQALwBTAG8AdQByAGMAZQAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQAvAGoAaQB0AC8ASgBJAFQAUwB0AHUAYgBzAE0AUwBWAEMANgA0AC4AYQBzAG0ADQAKACAAIABC
AHUAaQBsAGQAaQBuAGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABGADoALwBnAGkAdABQAC8A
VwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFMAbwB1AHIAYwBlAC8ASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAC8AQwBNAGEAawBlAEwAaQBzAHQAcwAuAHQAeAB0AA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAv
AFAAcgBpAHYAYQB0AGUASABlAGEAZABlAHIAcwAvAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQAvAEkAbgBzAHAAZQBjAHQAbwByAEIAYQBjAGsAZQBuAGQARABpAHMAcABhAHQAYwBoAGUAcgBz
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUALwBQAHIAaQB2AGEAdABlAEgAZQBhAGQAZQByAHMALwBKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUALwBJAG4AcwBwAGUAYwB0AG8AcgBGAHIAbwBuAHQAZQBuAGQA
RABpAHMAcABhAHQAYwBoAGUAcgBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBQAHIAaQB2AGEAdABlAEgA
ZQBhAGQAZQByAHMALwBKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALwBJAG4AcwBwAGUAYwB0
AG8AcgBQAHIAbwB0AG8AYwBvAGwATwBiAGoAZQBjAHQAcwAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8ASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC8ARABl
AHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ATABvAHcATABlAHYAZQBsAEkAbgB0AGUAcgBwAHIA
ZQB0AGUAcgBXAGkAbgAuAG8AYgBqAA0ACgAgACAATQBpAGMAcgBvAHMAbwBmAHQAIAAoAFIAKQAg
AE0AYQBjAHIAbwAgAEEAcwBzAGUAbQBiAGwAZQByACAAKAB4ADYANAApACAAVgBlAHIAcwBpAG8A
bgAgADEANAAuADIAOAAuADIAOQAxADIAOQAuADkANgANAAoAIAAgAEMAbwBwAHkAcgBpAGcAaAB0
ACAAKABDACkAIABNAGkAYwByAG8AcwBvAGYAdAAgAEMAbwByAHAAbwByAGEAdABpAG8AbgAuACAA
IABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ADQAKACAAIAANAAoAIAAg
ACAAQQBzAHMAZQBtAGIAbABpAG4AZwA6ACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8A
dwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBKAGEAdgBhAFMAYwByAGkAcAB0
AEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBMAG8AdwBMAGUAdgBlAGwA
SQBuAHQAZQByAHAAcgBlAHQAZQByAFcAaQBuAC4AYQBzAG0ADQAKAEMAbABDAG8AbQBwAGkAbABl
ADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgANgApAFwA
TQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAwADEAOQBc
AEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwAMQA0AC4A
MgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABDAEwALgBl
AHgAZQAgAC8AYwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEgAZQBhAGQAZQByAHMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAQQBQAEkAIAAvAEkA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGEAcwBzAGUAbQBiAGwAZQByACAALwBJAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABiADMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAGIAMwBcAGEAaQByACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUAXABiAGkAbgBkAGkAbgBnAHMAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AGIAdQBpAGwAdABpAG4AcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAYgB5
AHQAZQBjAG8AZABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABiAHkAdABl
AGMAbwBtAHAAaQBsAGUAcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAZABm
AGcAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGQAaQBzAGEAcwBzAGUAbQBi
AGwAZQByACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABkAGkAcwBhAHMAcwBl
AG0AYgBsAGUAcgBcAEEAUgBNADYANAAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AFwAZABpAHMAYQBzAHMAZQBtAGIAbABlAHIAXAB1AGQAaQBzADgANgAgAC8ASQBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwAZABvAG0AagBpAHQAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAGYAdABsACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABo
AGUAYQBwACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABkAGUAYgB1AGcAZwBl
AHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGkAbgBzAHAAZQBjAHQAbwBy
ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBc
AGEAZwBlAG4AdABzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBw
AGUAYwB0AG8AcgBcAGEAdQBnAG0AZQBuAHQAYQBiAGwAZQAgAC8ASQBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAFwAaQBuAHMAcABlAGMAdABvAHIAXAByAGUAbQBvAHQAZQAgAC8ASQBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAaQBuAHQAZQByAHAAcgBlAHQAZQByACAALwBJAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABqAGkAdAAgAC8ASQBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAFwAbABsAGkAbgB0ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUAXABwAGEAcgBzAGUAcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAcABy
AG8AZgBpAGwAZQByACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXAByAHUAbgB0
AGkAbQBlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXAB0AG8AbwBsAHMAIAAv
AEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAHcAYQBzAG0AIAAvAEkARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAHcAYQBzAG0AXABqAHMAIAAvAEkARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQBcAHkAYQByAHIAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAIAAvAEkARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBl
AHMAXABpAG4AcwBwAGUAYwB0AG8AcgAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHIAdQBuAHQAaQBtAGUA
IAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYA
ZQBkAFMAbwB1AHIAYwBlAHMAXAB5AGEAcgByACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwALgAuAFwAaQBuAGMA
bAB1AGQAZQBcAHAAcgBpAHYAYQB0AGUAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAGkAbgBzAHAAZQBjAHQAbwByAFwAcgBlAG0AbwB0AGUAXABzAG8AYwBrAGUAdAAgAC8ASQBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFcAVABGAFwASABlAGEAZABlAHIAcwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAFwA
dwBpAG4AXABpAG4AYwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8AZwBvACAALwBXADQAIAAv
AFcAWAAtACAALwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1AG0AbgAgAC8ATQBQACAA
LwBPADIAIAAvAE8AYgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAgAF8AVwBJ
AE4ARABPAFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAAQgBVAEkATABEAEkATgBHAF8A
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlACAALwBEACAAQgBVAEkATABEAEkATgBHAF8AVwBJ
AFQASABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4ARgBJAEcAXwBIAD0A
MQAgAC8ARAAgAFcASQBOAFYARQBSAD0AMAB4ADYAMAAxACAALwBEACAAXwBXAEkATgAzADIAXwBX
AEkATgBOAFQAPQAwAHgANgAwADEAIAAvAEQAIABOAE8ATQBJAE4ATQBBAFgAIAAvAEQAIABVAE4A
SQBDAE8ARABFACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAXwBIAEEAUwBfAEUAWABD
AEUAUABUAEkATwBOAFMAPQAwACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBFAF8ATgBPAF8A
VwBBAFIATgBJAE4ARwBTACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBFAF8AQwBQAFAAXwBP
AFYARQBSAEwATwBBAEQAXwBTAFQAQQBOAEQAQQBSAEQAXwBOAEEATQBFAFMAPQAxACAALwBEACAA
XwBXAEkATgBTAE8AQwBLAEEAUABJAF8APQAgAC8ARAAgAFcAVABGAF8AUABMAEEAVABGAE8AUgBN
AF8AVwBJAE4AXwBDAEEASQBSAE8APQAxACAALwBEACAATgBPAEMAUgBZAFAAVAAgAC8ARAAgACIA
QwBNAEEASwBFAF8ASQBOAFQARABJAFIAPQBcACIAUgBlAGwAZQBhAHMAZQBcACIAIgAgAC8ARAAg
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBfAEUAWABQAE8AUgBUAFMAIAAvAEQAIABfAFcA
SQBOAEQATABMACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAg
AC8ARwBtAC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAA
OgBlAHgAYwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBT
AGMAbwBwAGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsA
KwAxADcAIAAvAEYAbwAiAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAFwAIgAgAC8ARgBkACIASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdgBjADEANAAyAC4AcABkAGIAIgAgAC8ARwBkACAALwBU
AFAAIAAvAHcAZAA0ADAAMQA4ACAALwB3AGQANAAwADYAOAAgAC8AdwBkADQAMAA5ADkAIAAvAHcA
ZAA0ADEAMAAwACAALwB3AGQANAAxADIANwAgAC8AdwBkADQAMQAzADgAIAAvAHcAZAA0ADEANAA2
ACAALwB3AGQANAAxADgAMAAgAC8AdwBkADQAMQA4ADkAIAAvAHcAZAA0ADIAMAAxACAALwB3AGQA
NAAyADAANgAgAC8AdwBkADQAMgA0ADQAIAAvAHcAZAA0ADIANQAxACAALwB3AGQANAAyADYANwAg
AC8AdwBkADQAMgA3ADUAIAAvAHcAZAA0ADIAOAA4ACAALwB3AGQANAAyADkAMQAgAC8AdwBkADQA
MwAwADUAIAAvAHcAZAA0ADMAMAA5ACAALwB3AGQANAAzADQANAAgAC8AdwBkADQAMwA1ADUAIAAv
AHcAZAA0ADMAOAA5ACAALwB3AGQANAAzADkANgAgAC8AdwBkADQANAA1ADYAIAAvAHcAZAA0ADQA
NQA3ACAALwB3AGQANAA0ADUAOAAgAC8AdwBkADQANAA1ADkAIAAvAHcAZAA0ADQAOAAxACAALwB3
AGQANAA1ADAAMwAgAC8AdwBkADQANQAwADUAIAAvAHcAZAA0ADUAMQAwACAALwB3AGQANAA1ADEA
MgAgAC8AdwBkADQANQAzADAAIAAvAHcAZAA0ADYAMQAwACAALwB3AGQANAA2ADEAMQAgAC8AdwBk
ADQANgA0ADYAIAAvAHcAZAA0ADcAMAAyACAALwB3AGQANAA3ADAANgAgAC8AdwBkADQANwAyADIA
IAAvAHcAZAA0ADgAMAAwACAALwB3AGQANAA4ADEAOQAgAC8AdwBkADQAOQA1ADEAIAAvAHcAZAA0
ADkANQAyACAALwB3AGQANAA5ADkANgAgAC8AdwBkADYAMAAxADEAIAAvAHcAZAA2ADAAMwAxACAA
LwB3AGQANgAyADEAMQAgAC8AdwBkADYAMgA0ADYAIAAvAHcAZAA2ADIANQA1ACAALwB3AGQANgAz
ADgANwAgAC8AdwBkADQAMAA5ADEAIAAvAGEAbgBhAGwAeQB6AGUALQAgAC8AZQByAHIAbwByAFIA
ZQBwAG8AcgB0ADoAcQB1AGUAdQBlACAAIAAvAEUASABzAC0AIAAvAEUASABjAC0AIAAvAEUASABh
AC0AIAAvAEUASABjAC0AIAAvAEUASABzAC0AIAAvAGIAaQBnAG8AYgBqACAALwB1AHQAZgAtADgA
IAAvAHYAYQBsAGkAZABhAHQAZQAtAGMAaABhAHIAcwBlAHQAIABGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAFwAQQBQAEkAXABKAFMAUwB0AHIAaQBuAGcAUgBlAGYAQgBTAFQAUgAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEEAUABJAFwASgBTAFMAdAByAGkAbgBn
AFIAZQBmAEMARgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEEAUABJ
AFwASgBTAFIAZQBtAG8AdABlAEkAbgBzAHAAZQBjAHQAbwByAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwAaQBuAHMAcABlAGMAdABvAHIAXAByAGUAbQBvAHQAZQBcAFIA
ZQBtAG8AdABlAEEAdQB0AG8AbQBhAHQAaQBvAG4AVABhAHIAZwBlAHQALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBcAHIAZQBtAG8AdABl
AFwAUgBlAG0AbwB0AGUAQwBvAG4AbgBlAGMAdABpAG8AbgBUAG8AVABhAHIAZwBlAHQALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBj
AGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBcAHIA
ZQBtAG8AdABlAFwAUgBlAG0AbwB0AGUAQwBvAG4AdAByAG8AbABsAGEAYgBsAGUAVABhAHIAZwBl
AHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0
AG8AcgBcAHIAZQBtAG8AdABlAFwAUgBlAG0AbwB0AGUASQBuAHMAcABlAGMAdABpAG8AbgBUAGEA
cgBnAGUAdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGkAbgBzAHAA
ZQBjAHQAbwByAFwAcgBlAG0AbwB0AGUAXABSAGUAbQBvAHQAZQBJAG4AcwBwAGUAYwB0AG8AcgAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGkAbgBzAHAAZQBjAHQAbwBy
AFwAcgBlAG0AbwB0AGUAXABzAG8AYwBrAGUAdABcAFIAZQBtAG8AdABlAEkAbgBzAHAAZQBjAHQA
bwByAEMAbwBuAG4AZQBjAHQAaQBvAG4AQwBsAGkAZQBuAHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBcAHIAZQBtAG8AdABlAFwAcwBv
AGMAawBlAHQAXABSAGUAbQBvAHQAZQBJAG4AcwBwAGUAYwB0AG8AcgBNAGUAcwBzAGEAZwBlAFAA
YQByAHMAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAaQBuAHMA
cABlAGMAdABvAHIAXAByAGUAbQBvAHQAZQBcAHMAbwBjAGsAZQB0AFwAUgBlAG0AbwB0AGUASQBu
AHMAcABlAGMAdABvAHIAUwBlAHIAdgBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0
AEMAbwByAGUAXABpAG4AcwBwAGUAYwB0AG8AcgBcAHIAZQBtAG8AdABlAFwAcwBvAGMAawBlAHQA
XABSAGUAbQBvAHQAZQBJAG4AcwBwAGUAYwB0AG8AcgBTAG8AYwBrAGUAdAAuAGMAcABwACAARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGkAbgBzAHAAZQBjAHQAbwByAFwAcgBlAG0AbwB0
AGUAXABzAG8AYwBrAGUAdABcAFIAZQBtAG8AdABlAEkAbgBzAHAAZQBjAHQAbwByAFMAbwBjAGsA
ZQB0AEUAbgBkAHAAbwBpAG4AdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAGkAbgBzAHAAZQBjAHQAbwByAFwAcgBlAG0AbwB0AGUAXABzAG8AYwBrAGUAdABcAHcAaQBu
AFwAUgBlAG0AbwB0AGUASQBuAHMAcABlAGMAdABvAHIAUwBvAGMAawBlAHQAVwBpAG4ALgBjAHAA
cAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYA
ZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBp
AGYAaQBlAGQAUwBvAHUAcgBjAGUALQAzAGEANQAyAGMAZQA3ADgALQAxAC4AYwBwAHAAIgAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMA
bwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQBkADkAMwBkADEAMABmAGYALQAxAC4AYwBwAHAAIgAgACIARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIA
YwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBv
AHUAcgBjAGUALQBkADkAMwBkADEAMABmAGYALQAyAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
XAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQBkADkAMwBkADEAMABmAGYALQAzAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4A
aQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBj
AGQAMgBlADgAYwBmAGEALQAxAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkA
ZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBjAGQAMgBl
ADgAYwBmAGEALQAyAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0
AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0A
cwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAw
AGUALQAxAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUA
cgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQAy
AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABE
AGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUA
cwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQAzAC4AYwBw
AHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBp
AHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUA
bgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQA0AC4AYwBwAHAAIgAg
ACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQA
XwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBk
AFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYA
aQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQA1AC4AYwBwAHAAIgAgACIARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0A
ZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1
AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQA
UwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQA2AC4AYwBwAHAAIgAgACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBl
AHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUA
cgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQA3AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1
AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUA
LQAyADMAYQA1AGYAZAAwAGUALQA4AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBm
AGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMA
YQA1AGYAZAAwAGUALQA5AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBk
AC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYA
ZAAwAGUALQAxADAALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBz
AG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADIAMwBhADUAZgBkADAA
ZQAtADEAMQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1
AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABlAC0A
MQAyAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBj
AGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQAxADMA
LgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQA
ZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBz
AFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADIAMwBhADUAZgBkADAAZQAtADEANAAuAGMA
cABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIA
aQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABV
AG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABlAC0AMQA1AC4AYwBwAHAA
IgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYA
ZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBp
AGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQAxADYALgBjAHAAcAAiACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQA
UwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBp
AGUAZABTAG8AdQByAGMAZQAtAGQAYQAzAGYAZQA5ADIAMgAtADEALgBjAHAAcAAiACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABT
AG8AdQByAGMAZQAtAGIAZAAxAGQAYwA2AGYANwAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUA
cwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQBy
AGMAZQAtAGYAMABhADcAOAA3AGEAOQAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUA
bgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAt
AGYAMABhADcAOAA3AGEAOQAtADIALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYA
aQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABh
ADcAOAA3AGEAOQAtADMALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQA
LQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3
AGEAOQAtADQALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8A
dQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3AGEAOQAt
ADUALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMA
ZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3AGEAOQAtADYALgBj
AHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQBy
AGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwA
VQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3AGEAOQAtADcALgBjAHAAcAAi
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBl
AGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkA
ZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3AGEAOQAtADgALgBjAHAAcAAiACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUA
ZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3AGEAOQAtADkALgBjAHAAcAAiACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBj
AGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8A
dQByAGMAZQAtAGYAMABhADcAOAA3AGEAOQAtADEAMAAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwA
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBz
AFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIA
YwBlAC0AZgAwAGEANwA4ADcAYQA5AC0AMQAxAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1
AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUA
LQBmADAAYQA3ADgANwBhADkALQAxADIALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBp
AGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYA
MABhADcAOAA3AGEAOQAtADEAMwAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMA
cgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBp
AGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMwBiAGUA
YwA2AGUAZgAyAC0AMQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAt
AHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0ANQBmAGIAZAAwADIA
MgA0AC0AMQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1
AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0A
MQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwA
RABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBl
AHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0AMgAuAGMA
cABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIA
aQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABV
AG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0AMwAuAGMAcABwACIA
IAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABk
AF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUA
ZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBm
AGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0ANAAuAGMAcABwACIAIAAiAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8A
dQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBk
AFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0ANQAuAGMAcABwACIAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1
AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0ANgAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBh
AHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwA
dQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBl
AC0AYgBmAGMAOAA5ADYAZQAxAC0ANwAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkA
ZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBm
AGMAOAA5ADYAZQAxAC0AOAAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBp
AHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUA
ZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5
ADYAZQAxAC0AOQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMA
bwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAx
AC0AMQAwAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUA
cgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBiAGYAYwA4ADkANgBlADEALQAx
ADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMA
ZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGIAZgBjADgAOQA2AGUAMQAtADEAMgAu
AGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABl
AHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMA
XABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0AMQAzAC4AYwBw
AHAAIgAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABkAGYAZwBcAEQARgBHAFMAcABl
AGMAdQBsAGEAdABpAHYAZQBKAEkAVAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBcAGQAZgBnAFwARABGAEcAUwBwAGUAYwB1AGwAYQB0AGkAdgBlAEoASQBUADMAMgBfADYA
NAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABT
AG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAGQAZgBnAFwARABGAEcA
UwBwAGUAYwB1AGwAYQB0AGkAdgBlAEoASQBUADYANAAuAGMAcABwACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBc
AHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMA
ZQAtAGIAZgBjADgAOQA2AGUAMQAtADEANAAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBu
AGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0A
YgBmAGMAOAA5ADYAZQAxAC0AMQA1AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBm
AGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBiAGYA
YwA4ADkANgBlADEALQAxADYALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBl
AGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGIAZgBjADgA
OQA2AGUAMQAtADEANwAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAt
AHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMwBjADMAZQAwAGQA
OABjAC0AMQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1
AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0ANAA4ADcAOQAzADkANwAxAC0A
MQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwA
RABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBl
AHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMAAyAGEAYQAyADkAOQA3AC0AMQAuAGMA
cABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIA
aQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABV
AG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMAAyAGEAYQAyADkAOQA3AC0AMgAuAGMAcABwACIA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwAZgB0AGwAXABGAFQATABMAG8AdwBlAHIA
RABGAEcAVABvAEIAMwAuAGMAcABwACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBz
AG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADAAMgBhAGEAMgA5ADkA
NwAtADMALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQBy
AGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADAAMgBhAGEAMgA5ADkANwAtADQA
LgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQA
ZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBz
AFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADAAMgBhAGEAMgA5ADkANwAtADUALgBjAHAA
cAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkA
dgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBu
AGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGUAZQA4AGEANwBhADcAYQAtADEALgBjAHAAcAAiACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQA
UwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBp
AGUAZABTAG8AdQByAGMAZQAtAGUAZQA4AGEANwBhADcAYQAtADIALgBjAHAAcAAiACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABT
AG8AdQByAGMAZQAtAGUAZQA4AGEANwBhADcAYQAtADMALgBjAHAAcAAiACAAIgBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUA
cwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQBy
AGMAZQAtAGUAZQA4AGEANwBhADcAYQAtADQALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUA
bgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAt
AGUAZQA4AGEANwBhADcAYQAtADUALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYA
aQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGUAZQA4
AGEANwBhADcAYQAtADYALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQA
LQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGUAZQA4AGEANwBh
ADcAYQAtADcALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8A
dQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGUAZQA4AGEANwBhADcAYQAt
ADgALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMA
ZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADgANABjADkAZgA0ADMAZgAtADEALgBj
AHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQBy
AGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwA
VQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADgANABjADkAZgA0ADMAZgAtADIALgBjAHAAcAAi
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBl
AGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkA
ZgBpAGUAZABTAG8AdQByAGMAZQAtADgANABjADkAZgA0ADMAZgAtADMALgBjAHAAcAAiACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUA
ZABTAG8AdQByAGMAZQAtADgANABjADkAZgA0ADMAZgAtADQALgBjAHAAcAAiACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBj
AGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8A
dQByAGMAZQAtADgANABjADkAZgA0ADMAZgAtADUALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBc
AHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMA
ZQAtADgANABjADkAZgA0ADMAZgAtADYALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBp
AGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADAA
ZQA1ADQAMwBiADYANgAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBl
AGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAYQAzAGMA
NABlAGMAMAAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBz
AG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAYQAzAGMANABlAGMA
MAAtADIALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQBy
AGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAYQAzAGMANABlAGMAMAAtADMA
LgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQA
ZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBz
AFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAYQAzAGMANABlAGMAMAAtADQALgBjAHAA
cAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkA
dgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBu
AGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAYQAzAGMANABlAGMAMAAtADUALgBjAHAAcAAiACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQA
UwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBp
AGUAZABTAG8AdQByAGMAZQAtADMAYQAzAGMANABlAGMAMAAtADYALgBjAHAAcAAiACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABT
AG8AdQByAGMAZQAtADMAYQAzAGMANABlAGMAMAAtADcALgBjAHAAcAAiACAAIgBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUA
cwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQBy
AGMAZQAtADYAZQA0ADUAMgA1AGIAOQAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUA
bgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAt
ADkANQAzADIANABkAGUANgAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYA
aQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADkANQAz
ADIANABkAGUANgAtADIALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQA
LQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAMgA0ADMANQBl
ADUAYwAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBv
AHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8A
dQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAMgA0ADMANQBlADUAYwAt
ADIALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMA
ZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADEALgBj
AHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQBy
AGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwA
VQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADIALgBjAHAAcAAi
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBl
AGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkA
ZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADMALgBjAHAAcAAiACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBv
AHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUA
ZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADQALgBjAHAAcAAiACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBj
AGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8A
dQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADUALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBc
AHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMA
ZQAtAGYAMgBlADEAOABmAGYAYwAtADYALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBp
AGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYA
MgBlADEAOABmAGYAYwAtADcALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIA
aQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBl
AGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEA
OABmAGYAYwAtADgALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBz
AG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYA
YwAtADkALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQBy
AGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADEA
MAAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwA
RABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBl
AHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMQAxAC4A
YwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUA
cgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBc
AFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADIALgBjAHAA
cAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkA
dgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBu
AGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADEAMwAuAGMAcABwACIA
IAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABk
AF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUA
ZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBm
AGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMQA0AC4AYwBwAHAAIgAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMA
bwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADUALgBjAHAAcAAiACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUA
cgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABT
AG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADEANgAuAGMAcABwACIAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMA
ZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1
AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMQA3AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
XAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQBmADIAZQAxADgAZgBmAGMALQAxADgALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2
AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUA
bgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAt
AGYAMgBlADEAOABmAGYAYwAtADEAOQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBT
AGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkA
ZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAy
AGUAMQA4AGYAZgBjAC0AMgAwAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwBy
AGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkA
ZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAx
ADgAZgBmAGMALQAyADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQA
LQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABm
AGYAYwAtADIAMgAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABD
AG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMA
bwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBj
AC0AMgAzAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUA
cgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAy
ADQALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBc
AEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMA
ZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADIANQAu
AGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABl
AHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMA
XABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMgA2AC4AYwBw
AHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBp
AHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUA
bgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAyADcALgBjAHAAcAAi
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBl
AGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkA
ZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADIAOAAuAGMAcABwACIAIAAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABT
AG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkA
ZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMgA5AC4AYwBwAHAAIgAgACIARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0A
ZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1
AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQA
UwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAzADAALgBjAHAAcAAiACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBj
AGUAcwBcAHUAbgBpAGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8A
dQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADMAMQAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwA
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBz
AFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIA
YwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMwAyAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1
AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUA
LQBmADIAZQAxADgAZgBmAGMALQAzADMALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEA
UwBjAHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBp
AGYAaQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYA
MgBlADEAOABmAGYAYwAtADMANAAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMA
cgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBp
AGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUA
MQA4AGYAZgBjAC0AMwA1AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBk
AC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgA
ZgBmAGMALQAzADYALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBz
AG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYA
YwAtADMANwAuAGMAcABwACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1
AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0A
MwA4AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBj
AGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAwADIAOAA0AGMANgBhAGMALQAxAC4A
YwBwAHAAIgAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXAB3AGEAcwBtAFwAVwBhAHMA
bQBBAGkAcgBJAFIARwBlAG4AZQByAGEAdABvAHIALgBjAHAAcAAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1
AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUA
LQAwADIAOAA0AGMANgBhAGMALQAyAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBm
AGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUA
ZABiADQAYQBkADkALQAxAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkA
cAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBk
AC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQA
YQBkADkALQAyAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBv
AHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQAYQBkADkA
LQAzAC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBj
AGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQAYQBkADkALQA0AC4A
YwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUA
cgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBc
AFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQAYQBkADkALQA1AC4AYwBwAHAA
IgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYA
ZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBp
AGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQAYQBkADkALQA2AC4AYwBwAHAAIgAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMA
bwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQAYQBkADkALQA3AC4AYwBwAHAAIgAgACIARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIA
YwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBv
AHUAcgBjAGUALQAxADUAZABiADQAYQBkADkALQA4AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
XAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQAxADUAZABiADQAYQBkADkALQA5AC4AYwBwAHAAIgAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4A
aQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAx
ADUAZABiADQAYQBkADkALQAxADAALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYA
aQBlAGQALQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADYAYwBi
AGMAOQA4ADkAZgAtADEALgBjAHAAcAAiACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQA
LQBzAG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADYAYwBiAGMAOQA4
ADkAZgAtADIALgBjAHAAcAAiAA0ACgAgACAASgBTAFMAdAByAGkAbgBnAFIAZQBmAEIAUwBUAFIA
LgBjAHAAcAANAAoAIAAgAEoAUwBTAHQAcgBpAG4AZwBSAGUAZgBDAEYALgBjAHAAcAANAAoAIAAg
AEoAUwBSAGUAbQBvAHQAZQBJAG4AcwBwAGUAYwB0AG8AcgAuAGMAcABwAA0ACgAgACAAUgBlAG0A
bwB0AGUAQQB1AHQAbwBtAGEAdABpAG8AbgBUAGEAcgBnAGUAdAAuAGMAcABwAA0ACgAgACAAUgBl
AG0AbwB0AGUAQwBvAG4AbgBlAGMAdABpAG8AbgBUAG8AVABhAHIAZwBlAHQALgBjAHAAcAANAAoA
IAAgAFIAZQBtAG8AdABlAEMAbwBuAHQAcgBvAGwAbABhAGIAbABlAFQAYQByAGcAZQB0AC4AYwBw
AHAADQAKACAAIABSAGUAbQBvAHQAZQBJAG4AcwBwAGUAYwB0AGkAbwBuAFQAYQByAGcAZQB0AC4A
YwBwAHAADQAKACAAIABSAGUAbQBvAHQAZQBJAG4AcwBwAGUAYwB0AG8AcgAuAGMAcABwAA0ACgAg
ACAAUgBlAG0AbwB0AGUASQBuAHMAcABlAGMAdABvAHIAQwBvAG4AbgBlAGMAdABpAG8AbgBDAGwA
aQBlAG4AdAAuAGMAcABwAA0ACgAgACAAUgBlAG0AbwB0AGUASQBuAHMAcABlAGMAdABvAHIATQBl
AHMAcwBhAGcAZQBQAGEAcgBzAGUAcgAuAGMAcABwAA0ACgAgACAAUgBlAG0AbwB0AGUASQBuAHMA
cABlAGMAdABvAHIAUwBlAHIAdgBlAHIALgBjAHAAcAANAAoAIAAgAFIAZQBtAG8AdABlAEkAbgBz
AHAAZQBjAHQAbwByAFMAbwBjAGsAZQB0AC4AYwBwAHAADQAKACAAIABSAGUAbQBvAHQAZQBJAG4A
cwBwAGUAYwB0AG8AcgBTAG8AYwBrAGUAdABFAG4AZABwAG8AaQBuAHQALgBjAHAAcAANAAoAIAAg
AFIAZQBtAG8AdABlAEkAbgBzAHAAZQBjAHQAbwByAFMAbwBjAGsAZQB0AFcAaQBuAC4AYwBwAHAA
DQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMwBhADUAMgBjAGUANwA4AC0AMQAu
AGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGQAOQAzAGQAMQAwAGYA
ZgAtADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBkADkAMwBk
ADEAMABmAGYALQAyAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0A
ZAA5ADMAZAAxADAAZgBmAC0AMwAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQBy
AGMAZQAtAGMAZAAyAGUAOABjAGYAYQAtADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQA
UwBvAHUAcgBjAGUALQBjAGQAMgBlADgAYwBmAGEALQAyAC4AYwBwAHAADQAKACAAIABVAG4AaQBm
AGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABlAC0AMQAuAGMAcABwAA0ACgAgACAA
VQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADIAMwBhADUAZgBkADAAZQAtADIALgBjAHAAcAAN
AAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQAzAC4A
YwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABl
AC0ANAAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADIAMwBhADUA
ZgBkADAAZQAtADUALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAy
ADMAYQA1AGYAZAAwAGUALQA2AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIA
YwBlAC0AMgAzAGEANQBmAGQAMABlAC0ANwAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABT
AG8AdQByAGMAZQAtADIAMwBhADUAZgBkADAAZQAtADgALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYA
aQBlAGQAUwBvAHUAcgBjAGUALQAyADMAYQA1AGYAZAAwAGUALQA5AC4AYwBwAHAADQAKACAAIABV
AG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABlAC0AMQAwAC4AYwBwAHAA
DQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABlAC0AMQAx
AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQA
MABlAC0AMQAyAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAz
AGEANQBmAGQAMABlAC0AMQAzAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIA
YwBlAC0AMgAzAGEANQBmAGQAMABlAC0AMQA0AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBk
AFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABlAC0AMQA1AC4AYwBwAHAADQAKACAAIABVAG4A
aQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMgAzAGEANQBmAGQAMABlAC0AMQA2AC4AYwBwAHAADQAK
ACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZABhADMAZgBlADkAMgAyAC0AMQAuAGMA
cABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGIAZAAxAGQAYwA2AGYANwAt
ADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADAAYQA3ADgA
NwBhADkALQAxAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAw
AGEANwA4ADcAYQA5AC0AMgAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMA
ZQAtAGYAMABhADcAOAA3AGEAOQAtADMALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBv
AHUAcgBjAGUALQBmADAAYQA3ADgANwBhADkALQA0AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkA
ZQBkAFMAbwB1AHIAYwBlAC0AZgAwAGEANwA4ADcAYQA5AC0ANQAuAGMAcABwAA0ACgAgACAAVQBu
AGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3AGEAOQAtADYALgBjAHAAcAANAAoA
IAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADAAYQA3ADgANwBhADkALQA3AC4AYwBw
AHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAwAGEANwA4ADcAYQA5AC0A
OAAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMABhADcAOAA3
AGEAOQAtADkALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADAA
YQA3ADgANwBhADkALQAxADAALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQBmADAAYQA3ADgANwBhADkALQAxADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQA
UwBvAHUAcgBjAGUALQBmADAAYQA3ADgANwBhADkALQAxADIALgBjAHAAcAANAAoAIAAgAFUAbgBp
AGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADAAYQA3ADgANwBhADkALQAxADMALgBjAHAAcAANAAoA
IAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAzAGIAZQBjADYAZQBmADIALQAxAC4AYwBw
AHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0ANQBmAGIAZAAwADIAMgA0AC0A
MQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGIAZgBjADgAOQA2
AGUAMQAtADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBiAGYA
YwA4ADkANgBlADEALQAyAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBl
AC0AYgBmAGMAOAA5ADYAZQAxAC0AMwAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8A
dQByAGMAZQAtAGIAZgBjADgAOQA2AGUAMQAtADQALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQBiAGYAYwA4ADkANgBlADEALQA1AC4AYwBwAHAADQAKACAAIABVAG4A
aQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0ANgAuAGMAcABwAA0ACgAg
ACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGIAZgBjADgAOQA2AGUAMQAtADcALgBjAHAA
cAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBiAGYAYwA4ADkANgBlADEALQA4
AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYA
ZQAxAC0AOQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGIAZgBj
ADgAOQA2AGUAMQAtADEAMAAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMA
ZQAtAGIAZgBjADgAOQA2AGUAMQAtADEAMQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABT
AG8AdQByAGMAZQAtAGIAZgBjADgAOQA2AGUAMQAtADEAMgAuAGMAcABwAA0ACgAgACAAVQBuAGkA
ZgBpAGUAZABTAG8AdQByAGMAZQAtAGIAZgBjADgAOQA2AGUAMQAtADEAMwAuAGMAcABwAA0ACgAg
ACAARABGAEcAUwBwAGUAYwB1AGwAYQB0AGkAdgBlAEoASQBUAC4AYwBwAHAADQAKACAAIABEAEYA
RwBTAHAAZQBjAHUAbABhAHQAaQB2AGUASgBJAFQAMwAyAF8ANgA0AC4AYwBwAHAADQAKACAAIABE
AEYARwBTAHAAZQBjAHUAbABhAHQAaQB2AGUASgBJAFQANgA0AC4AYwBwAHAADQAKACAAIABVAG4A
aQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0AMQA0AC4AYwBwAHAADQAK
ACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAxAC0AMQA1AC4A
YwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMAOAA5ADYAZQAx
AC0AMQA2AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AYgBmAGMA
OAA5ADYAZQAxAC0AMQA3AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBl
AC0AMwBjADMAZQAwAGQAOABjAC0AMQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8A
dQByAGMAZQAtADQAOAA3ADkAMwA5ADcAMQAtADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQAwADIAYQBhADIAOQA5ADcALQAxAC4AYwBwAHAADQAKACAAIABVAG4A
aQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMAAyAGEAYQAyADkAOQA3AC0AMgAuAGMAcABwAA0ACgAg
ACAARgBUAEwATABvAHcAZQByAEQARgBHAFQAbwBCADMALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYA
aQBlAGQAUwBvAHUAcgBjAGUALQAwADIAYQBhADIAOQA5ADcALQAzAC4AYwBwAHAADQAKACAAIABV
AG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMAAyAGEAYQAyADkAOQA3AC0ANAAuAGMAcABwAA0A
CgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADAAMgBhAGEAMgA5ADkANwAtADUALgBj
AHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBlAGUAOABhADcAYQA3AGEA
LQAxAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZQBlADgAYQA3
AGEANwBhAC0AMgAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGUA
ZQA4AGEANwBhADcAYQAtADMALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQBlAGUAOABhADcAYQA3AGEALQA0AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMA
bwB1AHIAYwBlAC0AZQBlADgAYQA3AGEANwBhAC0ANQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBp
AGUAZABTAG8AdQByAGMAZQAtAGUAZQA4AGEANwBhADcAYQAtADYALgBjAHAAcAANAAoAIAAgAFUA
bgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBlAGUAOABhADcAYQA3AGEALQA3AC4AYwBwAHAADQAK
ACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZQBlADgAYQA3AGEANwBhAC0AOAAuAGMA
cABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADgANABjADkAZgA0ADMAZgAt
ADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQA4ADQAYwA5AGYA
NAAzAGYALQAyAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AOAA0
AGMAOQBmADQAMwBmAC0AMwAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMA
ZQAtADgANABjADkAZgA0ADMAZgAtADQALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBv
AHUAcgBjAGUALQA4ADQAYwA5AGYANAAzAGYALQA1AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkA
ZQBkAFMAbwB1AHIAYwBlAC0AOAA0AGMAOQBmADQAMwBmAC0ANgAuAGMAcABwAA0ACgAgACAAVQBu
AGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADAAZQA1ADQAMwBiADYANgAtADEALgBjAHAAcAANAAoA
IAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAzAGEAMwBjADQAZQBjADAALQAxAC4AYwBw
AHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMwBhADMAYwA0AGUAYwAwAC0A
MgAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAYQAzAGMANABl
AGMAMAAtADMALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAzAGEA
MwBjADQAZQBjADAALQA0AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBl
AC0AMwBhADMAYwA0AGUAYwAwAC0ANQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8A
dQByAGMAZQAtADMAYQAzAGMANABlAGMAMAAtADYALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQAzAGEAMwBjADQAZQBjADAALQA3AC4AYwBwAHAADQAKACAAIABVAG4A
aQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0ANgBlADQANQAyADUAYgA5AC0AMQAuAGMAcABwAA0ACgAg
ACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADkANQAzADIANABkAGUANgAtADEALgBjAHAA
cAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQA5ADUAMwAyADQAZABlADYALQAy
AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMwAyADQAMwA1AGUA
NQBjAC0AMQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADMAMgA0
ADMANQBlADUAYwAtADIALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUA
LQBmADIAZQAxADgAZgBmAGMALQAxAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1
AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMgAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUA
ZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADMALgBjAHAAcAANAAoAIAAgAFUAbgBp
AGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQA0AC4AYwBwAHAADQAKACAA
IABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0ANQAuAGMAcABw
AA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADYA
LgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBm
AGMALQA3AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUA
MQA4AGYAZgBjAC0AOAAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAt
AGYAMgBlADEAOABmAGYAYwAtADkALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUA
cgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADAALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADEALgBjAHAAcAANAAoAIAAgAFUA
bgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADIALgBjAHAAcAAN
AAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADMA
LgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBm
AGMALQAxADQALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIA
ZQAxADgAZgBmAGMALQAxADUALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQBmADIAZQAxADgAZgBmAGMALQAxADYALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQA
UwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADcALgBjAHAAcAANAAoAIAAgAFUAbgBp
AGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADgALgBjAHAAcAANAAoA
IAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAxADkALgBj
AHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMA
LQAyADAALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAx
ADgAZgBmAGMALQAyADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUA
LQBmADIAZQAxADgAZgBmAGMALQAyADIALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBv
AHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAyADMALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYA
aQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAyADQALgBjAHAAcAANAAoAIAAg
AFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAyADUALgBjAHAA
cAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAy
ADYALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgA
ZgBmAGMALQAyADcALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBm
ADIAZQAxADgAZgBmAGMALQAyADgALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUA
cgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAyADkALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBl
AGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAzADAALgBjAHAAcAANAAoAIAAgAFUA
bgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAzADEALgBjAHAAcAAN
AAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAzADIA
LgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBm
AGMALQAzADMALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIA
ZQAxADgAZgBmAGMALQAzADQALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQBmADIAZQAxADgAZgBmAGMALQAzADUALgBjAHAAcAANAAoARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABXAFQARgBc
AEgAZQBhAGQAZQByAHMAXAB3AHQAZgAvAE8AcAB0AGkAbwBuAGEAbAAuAGgAKAA0ADEAOQAsADMA
OQApADoAIABlAHIAcgBvAHIAIABDADIAMgA4ADAAOgAgACcAVwBUAEYAOgA6AGMAbwBuAHMAdABl
AHgAcAByAF8AcwB0AG8AcgBhAGcAZQBfAHQAPABUAD4AIAAmAFcAVABGADoAOgBjAG8AbgBzAHQA
ZQB4AHAAcgBfAHMAdABvAHIAYQBnAGUAXwB0ADwAVAA+ADoAOgBvAHAAZQByAGEAdABvAHIAIAA9
ACgAYwBvAG4AcwB0ACAAVwBUAEYAOgA6AGMAbwBuAHMAdABlAHgAcAByAF8AcwB0AG8AcgBhAGcA
ZQBfAHQAPABUAD4AIAAmACkAJwA6ACAAYQB0AHQAZQBtAHAAdABpAG4AZwAgAHQAbwAgAHIAZQBm
AGUAcgBlAG4AYwBlACAAYQAgAGQAZQBsAGUAdABlAGQAIABmAHUAbgBjAHQAaQBvAG4AIABbAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABKAGEA
dgBhAFMAYwByAGkAcAB0AEMAbwByAGUALgB2AGMAeABwAHIAbwBqAF0ADQAKACAAIAAgACAAIAAg
ACAAIAAgACAAdwBpAHQAaAANAAoAIAAgACAAIAAgACAAIAAgACAAIABbAA0ACgAgACAAIAAgACAA
IAAgACAAIAAgACAAIAAgACAAVAA9AHMAdABkADoAOgBwAGEAaQByADwASgBTAEMAOgA6AFMAYQBt
AHAAbABpAG4AZwBQAHIAbwBmAGkAbABlAHIAOgA6AFMAdABhAGMAawBGAHIAYQBtAGUAOgA6AEMA
bwBkAGUATABvAGMAYQB0AGkAbwBuACwASgBTAEMAOgA6AEMAbwBkAGUAQgBsAG8AYwBrACAAKgA+
AA0ACgAgACAAIAAgACAAIAAgACAAIAAgAF0AIAAoAGMAbwBtAHAAaQBsAGkAbgBnACAAcwBvAHUA
cgBjAGUAIABmAGkAbABlACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBj
AGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAzADIA
LgBjAHAAcAApAA0ACgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAFcAVABGAFwASABlAGEAZABlAHIAcwBcAHcAdABmAC8A
TwBwAHQAaQBvAG4AYQBsAC4AaAAoADMAMAA4ACkAOgAgAG0AZQBzAHMAYQBnAGUAIAA6ACAAYwBv
AG0AcABpAGwAZQByACAAaABhAHMAIABnAGUAbgBlAHIAYQB0AGUAZAAgACcAVwBUAEYAOgA6AGMA
bwBuAHMAdABlAHgAcAByAF8AcwB0AG8AcgBhAGcAZQBfAHQAPABUAD4AOgA6AG8AcABlAHIAYQB0
AG8AcgAgAD0AJwAgAGgAZQByAGUAIABbAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALgB2AGMA
eABwAHIAbwBqAF0ADQAKACAAIAAgACAAIAAgACAAIAAgACAAdwBpAHQAaAANAAoAIAAgACAAIAAg
ACAAIAAgACAAIABbAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAVAA9AHMAdABkADoA
OgBwAGEAaQByADwASgBTAEMAOgA6AFMAYQBtAHAAbABpAG4AZwBQAHIAbwBmAGkAbABlAHIAOgA6
AFMAdABhAGMAawBGAHIAYQBtAGUAOgA6AEMAbwBkAGUATABvAGMAYQB0AGkAbwBuACwASgBTAEMA
OgA6AEMAbwBkAGUAQgBsAG8AYwBrACAAKgA+AA0ACgAgACAAIAAgACAAIAAgACAAIAAgAF0AIAAo
AGMAbwBtAHAAaQBsAGkAbgBnACAAcwBvAHUAcgBjAGUAIABmAGkAbABlACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABK
AGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMA
XAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQBmADIAZQAxADgAZgBmAGMALQAzADIALgBjAHAAcAApAA0ACgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFcAVABG
AFwASABlAGEAZABlAHIAcwBcAHcAdABmAC8ATwBwAHQAaQBvAG4AYQBsAC4AaAAoADMAMAA4ACwA
MQApADoAIABtAGUAcwBzAGEAZwBlACAAOgAgACcAVwBUAEYAOgA6AGMAbwBuAHMAdABlAHgAcABy
AF8AcwB0AG8AcgBhAGcAZQBfAHQAPABUAD4AIAAmAFcAVABGADoAOgBjAG8AbgBzAHQAZQB4AHAA
cgBfAHMAdABvAHIAYQBnAGUAXwB0ADwAVAA+ADoAOgBvAHAAZQByAGEAdABvAHIAIAA9ACgAYwBv
AG4AcwB0ACAAVwBUAEYAOgA6AGMAbwBuAHMAdABlAHgAcAByAF8AcwB0AG8AcgBhAGcAZQBfAHQA
PABUAD4AIAAmACkAJwA6ACAAZgB1AG4AYwB0AGkAbwBuACAAdwBhAHMAIABpAG0AcABsAGkAYwBp
AHQAbAB5ACAAZABlAGwAZQB0AGUAZAAgAGIAZQBjAGEAdQBzAGUAIAAnAFcAVABGADoAOgBjAG8A
bgBzAHQAZQB4AHAAcgBfAHMAdABvAHIAYQBnAGUAXwB0ADwAVAA+ACcAIABoAGEAcwAgAGEAIAB2
AGEAcgBpAGEAbgB0ACAAZABhAHQAYQAgAG0AZQBtAGIAZQByACAAJwBXAFQARgA6ADoAYwBvAG4A
cwB0AGUAeABwAHIAXwBzAHQAbwByAGEAZwBlAF8AdAA8AFQAPgA6ADoAdgBhAGwAdQBlAF8AJwAg
AHcAaQB0AGgAIABhACAAbgBvAG4ALQB0AHIAaQB2AGkAYQBsACAAYwBvAHAAeQAgAGEAcwBzAGkA
ZwBuAG0AZQBuAHQAIABvAHAAZQByAGEAdABvAHIAIABbAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUA
XABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUALgB2AGMAeABwAHIAbwBqAF0ADQAKACAAIAAgACAAIAAgACAAIAAgACAAdwBpAHQAaAANAAoA
IAAgACAAIAAgACAAIAAgACAAIABbAA0ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAVAA9
AHMAdABkADoAOgBwAGEAaQByADwASgBTAEMAOgA6AFMAYQBtAHAAbABpAG4AZwBQAHIAbwBmAGkA
bABlAHIAOgA6AFMAdABhAGMAawBGAHIAYQBtAGUAOgA6AEMAbwBkAGUATABvAGMAYQB0AGkAbwBu
ACwASgBTAEMAOgA6AEMAbwBkAGUAQgBsAG8AYwBrACAAKgA+AA0ACgAgACAAIAAgACAAIAAgACAA
IAAgAF0AIAAoAGMAbwBtAHAAaQBsAGkAbgBnACAAcwBvAHUAcgBjAGUAIABmAGkAbABlACAARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0A
ZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABEAGUAcgBpAHYAZQBkAFMAbwB1
AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBjAGUAcwBcAFUAbgBpAGYAaQBlAGQA
UwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAzADIALgBjAHAAcAApAA0ACgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAFcAVABGAFwASABlAGEAZABlAHIAcwBcAHcAdABmAC8ATwBwAHQAaQBvAG4AYQBsAC4AaAAo
ADMAMAAwACkAOgAgAG0AZQBzAHMAYQBnAGUAIAA6ACAAcwBlAGUAIABkAGUAYwBsAGEAcgBhAHQA
aQBvAG4AIABvAGYAIAAnAFcAVABGADoAOgBjAG8AbgBzAHQAZQB4AHAAcgBfAHMAdABvAHIAYQBn
AGUAXwB0ADwAVAA+ADoAOgB2AGEAbAB1AGUAXwAnACAAWwBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBl
AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8A
cgBlAC4AdgBjAHgAcAByAG8AagBdAA0ACgAgACAAIAAgACAAIAAgACAAIAAgAHcAaQB0AGgADQAK
ACAAIAAgACAAIAAgACAAIAAgACAAWwANAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAFQA
PQBzAHQAZAA6ADoAcABhAGkAcgA8AEoAUwBDADoAOgBTAGEAbQBwAGwAaQBuAGcAUAByAG8AZgBp
AGwAZQByADoAOgBTAHQAYQBjAGsARgByAGEAbQBlADoAOgBDAG8AZABlAEwAbwBjAGEAdABpAG8A
bgAsAEoAUwBDADoAOgBDAG8AZABlAEIAbABvAGMAawAgACoAPgANAAoAIAAgACAAIAAgACAAIAAg
ACAAIABdACAAKABjAG8AbQBwAGkAbABpAG4AZwAgAHMAbwB1AHIAYwBlACAAZgBpAGwAZQAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8A
dQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBk
AFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMwAyAC4AYwBwAHAAKQANAAoARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABXAFQARgBcAEgAZQBhAGQAZQByAHMAXAB3AHQAZgAvAE8AcAB0AGkAbwBuAGEAbAAuAGgA
KAA0ADEANAApADoAIABtAGUAcwBzAGEAZwBlACAAOgAgAHcAaABpAGwAZQAgAGMAbwBtAHAAaQBs
AGkAbgBnACAAYwBsAGEAcwBzACAAdABlAG0AcABsAGEAdABlACAAbQBlAG0AYgBlAHIAIABmAHUA
bgBjAHQAaQBvAG4AIAAnAFcAVABGADoAOgBPAHAAdABpAG8AbgBhAGwAPABzAHQAZAA6ADoAcABh
AGkAcgA8AEoAUwBDADoAOgBTAGEAbQBwAGwAaQBuAGcAUAByAG8AZgBpAGwAZQByADoAOgBTAHQA
YQBjAGsARgByAGEAbQBlADoAOgBDAG8AZABlAEwAbwBjAGEAdABpAG8AbgAsAEoAUwBDADoAOgBD
AG8AZABlAEIAbABvAGMAawAgACoAPgA+ADoAOgBPAHAAdABpAG8AbgBhAGwAKABjAG8AbgBzAHQA
IABXAFQARgA6ADoATwBwAHQAaQBvAG4AYQBsADwAcwB0AGQAOgA6AHAAYQBpAHIAPABKAFMAQwA6
ADoAUwBhAG0AcABsAGkAbgBnAFAAcgBvAGYAaQBsAGUAcgA6ADoAUwB0AGEAYwBrAEYAcgBhAG0A
ZQA6ADoAQwBvAGQAZQBMAG8AYwBhAHQAaQBvAG4ALABKAFMAQwA6ADoAQwBvAGQAZQBCAGwAbwBj
AGsAIAAqAD4APgAgACYAKQAnACAAKABjAG8AbQBwAGkAbABpAG4AZwAgAHMAbwB1AHIAYwBlACAA
ZgBpAGwAZQAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwARABlAHIA
aQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBlAHMAXABV
AG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMwAyAC4AYwBwAHAA
KQAgAFsARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAuAHYAYwB4AHAAcgBvAGoAXQANAAoARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAHIAdQBuAHQAaQBtAGUALwBTAGEAbQBwAGwAaQBu
AGcAUAByAG8AZgBpAGwAZQByAC4AYwBwAHAAKAAxADEAMQAwACkAOgAgAG0AZQBzAHMAYQBnAGUA
IAA6ACAAcwBlAGUAIAByAGUAZgBlAHIAZQBuAGMAZQAgAHQAbwAgAGYAdQBuAGMAdABpAG8AbgAg
AHQAZQBtAHAAbABhAHQAZQAgAGkAbgBzAHQAYQBuAHQAaQBhAHQAaQBvAG4AIAAnAFcAVABGADoA
OgBPAHAAdABpAG8AbgBhAGwAPABzAHQAZAA6ADoAcABhAGkAcgA8AEoAUwBDADoAOgBTAGEAbQBw
AGwAaQBuAGcAUAByAG8AZgBpAGwAZQByADoAOgBTAHQAYQBjAGsARgByAGEAbQBlADoAOgBDAG8A
ZABlAEwAbwBjAGEAdABpAG8AbgAsAEoAUwBDADoAOgBDAG8AZABlAEIAbABvAGMAawAgACoAPgA+
ADoAOgBPAHAAdABpAG8AbgBhAGwAKABjAG8AbgBzAHQAIABXAFQARgA6ADoATwBwAHQAaQBvAG4A
YQBsADwAcwB0AGQAOgA6AHAAYQBpAHIAPABKAFMAQwA6ADoAUwBhAG0AcABsAGkAbgBnAFAAcgBv
AGYAaQBsAGUAcgA6ADoAUwB0AGEAYwBrAEYAcgBhAG0AZQA6ADoAQwBvAGQAZQBMAG8AYwBhAHQA
aQBvAG4ALABKAFMAQwA6ADoAQwBvAGQAZQBCAGwAbwBjAGsAIAAqAD4APgAgACYAKQAnACAAYgBl
AGkAbgBnACAAYwBvAG0AcABpAGwAZQBkACAAKABjAG8AbQBwAGkAbABpAG4AZwAgAHMAbwB1AHIA
YwBlACAAZgBpAGwAZQAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwA
RABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBpAGUAZAAtAHMAbwB1AHIAYwBl
AHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUAMQA4AGYAZgBjAC0AMwAyAC4A
YwBwAHAAKQAgAFsARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAuAHYAYwB4AHAAcgBvAGoAXQAN
AAoARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAHIAdQBuAHQAaQBtAGUAXABTAGEAbQBw
AGwAaQBuAGcAUAByAG8AZgBpAGwAZQByAC4AaAAoADEAMgA2ACkAOgAgAG0AZQBzAHMAYQBnAGUA
IAA6ACAAcwBlAGUAIAByAGUAZgBlAHIAZQBuAGMAZQAgAHQAbwAgAGMAbABhAHMAcwAgAHQAZQBt
AHAAbABhAHQAZQAgAGkAbgBzAHQAYQBuAHQAaQBhAHQAaQBvAG4AIAAnAFcAVABGADoAOgBPAHAA
dABpAG8AbgBhAGwAPABzAHQAZAA6ADoAcABhAGkAcgA8AEoAUwBDADoAOgBTAGEAbQBwAGwAaQBu
AGcAUAByAG8AZgBpAGwAZQByADoAOgBTAHQAYQBjAGsARgByAGEAbQBlADoAOgBDAG8AZABlAEwA
bwBjAGEAdABpAG8AbgAsAEoAUwBDADoAOgBDAG8AZABlAEIAbABvAGMAawAgACoAPgA+ACcAIABi
AGUAaQBuAGcAIABjAG8AbQBwAGkAbABlAGQAIAAoAGMAbwBtAHAAaQBsAGkAbgBnACAAcwBvAHUA
cgBjAGUAIABmAGkAbABlACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUA
XABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXAB1AG4AaQBmAGkAZQBkAC0AcwBvAHUAcgBj
AGUAcwBcAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQBmADIAZQAxADgAZgBmAGMALQAzADIA
LgBjAHAAcAApACAAWwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC4AdgBjAHgAcAByAG8AagBd
AA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYAYwAtADMA
NgAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABm
AGYAYwAtADMANwAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYA
MgBlADEAOABmAGYAYwAtADMAOAAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQBy
AGMAZQAtADAAMgA4ADQAYwA2AGEAYwAtADEALgBjAHAAcAANAAoARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBw
AHQAQwBvAHIAZQBcAHIAdQBuAHQAaQBtAGUALwBTAHQAcgB1AGMAdAB1AHIAZQAuAGMAcABwACgA
MQAyADgAMgAsADcAOAApADoAIAB3AGEAcgBuAGkAbgBnACAAQwA0ADMAMQAyADoAIAAnAHIAZQBp
AG4AdABlAHIAcAByAGUAdABfAGMAYQBzAHQAJwA6ACAAYwBvAG4AdgBlAHIAcwBpAG8AbgAgAGYA
cgBvAG0AIAAnAEoAUwBDADoAOgBTAHQAcgB1AGMAdAB1AHIAZQBJAEQAJwAgAHQAbwAgACcAdgBv
AGkAZAAgACoAJwAgAG8AZgAgAGcAcgBlAGEAdABlAHIAIABzAGkAegBlACAAKABjAG8AbQBwAGkA
bABpAG4AZwAgAHMAbwB1AHIAYwBlACAAZgBpAGwAZQAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwASgBhAHYAYQBTAGMA
cgBpAHAAdABDAG8AcgBlAFwARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAFwAdQBuAGkAZgBp
AGUAZAAtAHMAbwB1AHIAYwBlAHMAXABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AZgAyAGUA
MQA4AGYAZgBjAC0AMwA0AC4AYwBwAHAAKQAgAFsARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAEoA
YQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQAu
AHYAYwB4AHAAcgBvAGoAXQANAAoAIAAgAFcAYQBzAG0AQQBpAHIASQBSAEcAZQBuAGUAcgBhAHQA
bwByAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMAAyADgANABj
ADYAYQBjAC0AMgAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADEA
NQBkAGIANABhAGQAOQAtADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBj
AGUALQAxADUAZABiADQAYQBkADkALQAyAC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMA
bwB1AHIAYwBlAC0AMQA1AGQAYgA0AGEAZAA5AC0AMwAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBp
AGUAZABTAG8AdQByAGMAZQAtADEANQBkAGIANABhAGQAOQAtADQALgBjAHAAcAANAAoAIAAgAFUA
bgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQAYQBkADkALQA1AC4AYwBwAHAADQAK
ACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMQA1AGQAYgA0AGEAZAA5AC0ANgAuAGMA
cABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtADEANQBkAGIANABhAGQAOQAt
ADcALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYAaQBlAGQAUwBvAHUAcgBjAGUALQAxADUAZABiADQA
YQBkADkALQA4AC4AYwBwAHAADQAKACAAIABVAG4AaQBmAGkAZQBkAFMAbwB1AHIAYwBlAC0AMQA1
AGQAYgA0AGEAZAA5AC0AOQAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMA
ZQAtADEANQBkAGIANABhAGQAOQAtADEAMAAuAGMAcABwAA0ACgAgACAAVQBuAGkAZgBpAGUAZABT
AG8AdQByAGMAZQAtADYAYwBiAGMAOQA4ADkAZgAtADEALgBjAHAAcAANAAoAIAAgAFUAbgBpAGYA
aQBlAGQAUwBvAHUAcgBjAGUALQA2AGMAYgBjADkAOAA5AGYALQAyAC4AYwBwAHAADQAKAEQAbwBu
AGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1
AHIAYwBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYAYQBTAGMAcgBpAHAA
dABDAG8AcgBlAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBl
AHQAKABzACkAKQAgAC0ALQAgAEYAQQBJAEwARQBEAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQA
aQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwASgBhAHYA
YQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAC4AdgBj
AHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIA
ZwBlAHQAKABzACkAKQAgAC0ALQAgAEYAQQBJAEwARQBEAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAVABvAG8AbABzAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1
AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAEwAaQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEA
cAByAG8AagAiACAAKAAxADEAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABQAEEATABcAHAAYQBsAFwAUABBAEwALgB2
AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADQAMwApACAAbwBuACAAbgBvAGQA
ZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBv
AGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAUABB
AEwAXABwAGEAbABcAFAAQQBMAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAA
KAA0ADMAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMA
ZQBcAFcAZQBiAEMAbwByAGUAXABQAEEATABcAHAAYQBsAFwAUABBAEwALgB2AGMAeABwAHIAbwBq
ACIAIAAoADQANAApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEA
cgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBh
AHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAUABBAEwALgBkAGkAcgBcAFIAZQBsAGUA
YQBzAGUAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAKACAAIABD
AHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAUABBAEwALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABQAEEATAAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6
AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAFAA
QQBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABBAEwALgB0AGwAbwBnAFwAdQBuAHMAdQBj
AGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwAdwBhAHkA
cwBDAHIAZQBhAHQAZQAiACAAdwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBDAHUAcwB0
AG8AbQBCAHUAaQBsAGQAOgANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAA
UgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBv
AHUAcgBjAGUALwBXAGUAYgBDAG8AcgBlAC8AUABBAEwALwBwAGEAbAAvAEMATQBhAGsAZQBMAGkA
cwB0AHMALgB0AHgAdAANAAoAQwBsAEMAbwBtAHAAaQBsAGUAOgANAAoAIAAgAEMAOgBcAFAAcgBv
AGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8AcwBvAGYAdAAgAFYA
aQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQByAHAAcgBpAHMAZQBc
AFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAyADgAOAAwADEAXABiAGkA
bgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAEMATAAuAGUAeABlACAALwBjACAALwBJAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQA
NgA0AFwALgAuAFwAaQBuAGMAbAB1AGQAZQBcAHAAcgBpAHYAYQB0AGUAIAAvAEkARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
IAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBs
AGQAXwBhAG0AZAA2ADQAXABEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMAXABQAEEATAAgAC8A
SQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBl
AFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAUABBAEwAXABw
AGEAbAAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMA
bwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwAcABhAGwAXABjAHIAeQBwAHQAbwAg
AC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIA
YwBlAFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwAcABhAGwAXABzAHkAcwB0AGUAbQAgAC8ASQBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwA
VwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwAcABhAGwAXAB0AGUAeAB0ACAALwBJAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwA
VwBUAEYAXABIAGUAYQBkAGUAcgBzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkA
bgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBvAGwAbwBnAG8AIAAvAFcANAAgAC8AVwBYAC0AIAAv
AGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMAbwBsAHUAbQBuACAALwBNAFAAIAAvAE8AMgAgAC8A
TwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJAE4AMwAyACAALwBEACAAXwBXAEkATgBEAE8AVwBT
ACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBQAEEATAAgAC8A
RAAgAEIAVQBJAEwARABJAE4ARwBfAFcASQBUAEgAXwBDAE0AQQBLAEUAPQAxACAALwBEACAASABB
AFYARQBfAEMATwBOAEYASQBHAF8ASAA9ADEAIAAvAEQAIABXAEkATgBWAEUAUgA9ADAAeAA2ADAA
MQAgAC8ARAAgAF8AVwBJAE4AMwAyAF8AVwBJAE4ATgBUAD0AMAB4ADYAMAAxACAALwBEACAATgBP
AE0ASQBOAE0AQQBYACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQA
RQAgAC8ARAAgAF8ASABBAFMAXwBFAFgAQwBFAFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBS
AFQAXwBTAEUAQwBVAFIARQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQA
XwBTAEUAQwBVAFIARQBfAEMAUABQAF8ATwBWAEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBE
AF8ATgBBAE0ARQBTAD0AMQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQA
IABXAFQARgBfAFAATABBAFQARgBPAFIATQBfAFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAg
AE4ATwBDAFIAWQBQAFQAIAAvAEQAIAAiAEMATQBBAEsARQBfAEkATgBUAEQASQBSAD0AXAAiAFIA
ZQBsAGUAYQBzAGUAXAAiACIAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABVAE4ASQBD
AE8ARABFACAALwBHAG0ALQAgAC8ATQBEACAALwBHAFMAIAAvAGYAcAA6AHAAcgBlAGMAaQBzAGUA
IAAvAGYAcAA6AGUAeABjAGUAcAB0AC0AIAAvAFoAYwA6AHcAYwBoAGEAcgBfAHQAIAAvAFoAYwA6
AGYAbwByAFMAYwBvAHAAZQAgAC8AWgBjADoAaQBuAGwAaQBuAGUAIAAvAEcAUgAtACAALwBzAHQA
ZAA6AGMAKwArADEANwAgAC8ARgBvACIAUABBAEwALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABc
ACIAIAAvAEYAZAAiAFAAQQBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABBAEwALgBwAGQA
YgAiACAALwBHAGQAIAAvAFQAUAAgAC8AdwBkADQAMAAxADgAIAAvAHcAZAA0ADAANgA4ACAALwB3
AGQANAAwADkAOQAgAC8AdwBkADQAMQAwADAAIAAvAHcAZAA0ADEAMgA3ACAALwB3AGQANAAxADMA
OAAgAC8AdwBkADQAMQA0ADYAIAAvAHcAZAA0ADEAOAAwACAALwB3AGQANAAxADgAOQAgAC8AdwBk
ADQAMgAwADEAIAAvAHcAZAA0ADIAMAA2ACAALwB3AGQANAAyADQANAAgAC8AdwBkADQAMgA1ADEA
IAAvAHcAZAA0ADIANgA3ACAALwB3AGQANAAyADcANQAgAC8AdwBkADQAMgA4ADgAIAAvAHcAZAA0
ADIAOQAxACAALwB3AGQANAAzADAANQAgAC8AdwBkADQAMwAwADkAIAAvAHcAZAA0ADMANAA0ACAA
LwB3AGQANAAzADUANQAgAC8AdwBkADQAMwA4ADkAIAAvAHcAZAA0ADMAOQA2ACAALwB3AGQANAA0
ADUANgAgAC8AdwBkADQANAA1ADcAIAAvAHcAZAA0ADQANQA4ACAALwB3AGQANAA0ADUAOQAgAC8A
dwBkADQANAA4ADEAIAAvAHcAZAA0ADUAMAAzACAALwB3AGQANAA1ADAANQAgAC8AdwBkADQANQAx
ADAAIAAvAHcAZAA0ADUAMQAyACAALwB3AGQANAA1ADMAMAAgAC8AdwBkADQANgAxADAAIAAvAHcA
ZAA0ADYAMQAxACAALwB3AGQANAA2ADQANgAgAC8AdwBkADQANwAwADIAIAAvAHcAZAA0ADcAMAA2
ACAALwB3AGQANAA3ADIAMgAgAC8AdwBkADQAOAAwADAAIAAvAHcAZAA0ADgAMQA5ACAALwB3AGQA
NAA5ADUAMQAgAC8AdwBkADQAOQA1ADIAIAAvAHcAZAA0ADkAOQA2ACAALwB3AGQANgAwADEAMQAg
AC8AdwBkADYAMAAzADEAIAAvAHcAZAA2ADIAMQAxACAALwB3AGQANgAyADQANgAgAC8AdwBkADYA
MgA1ADUAIAAvAHcAZAA2ADMAOAA3ACAALwB3AGQANAAwADkAMQAgAC8AYQBuAGEAbAB5AHoAZQAt
ACAALwBlAHIAcgBvAHIAUgBlAHAAbwByAHQAOgBxAHUAZQB1AGUAIAAgAC8ARQBIAHMALQAgAC8A
RQBIAGMALQAgAC8ARQBIAGEALQAgAC8ARQBIAGMALQAgAC8ARQBIAHMALQAgAC8AYgBpAGcAbwBi
AGoAIAAvAHUAdABmAC0AOAAgAC8AdgBhAGwAaQBkAGEAdABlAC0AYwBoAGEAcgBzAGUAdAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABX
AGUAYgBDAG8AcgBlAFwAUABBAEwAXABwAGEAbABcAEYAaQBsAGUAUwBpAHoAZQBGAG8AcgBtAGEA
dAB0AGUAcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABQAEEATABcAHAAYQBsAFwATABvAGcA
ZwBpAG4AZwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABQAEEATABcAHAAYQBsAFwAUwBlAHMA
cwBpAG8AbgBJAEQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAUABBAEwAXABwAGEAbABcAHMA
eQBzAHQAZQBtAFwAUwBsAGUAZQBwAEQAaQBzAGEAYgBsAGUAcgAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMA
bwByAGUAXABQAEEATABcAHAAYQBsAFwAcwB5AHMAdABlAG0AXABTAHkAcwB0AGUAbQBTAGwAZQBl
AHAATABpAHMAdABlAG4AZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwAcABh
AGwAXABzAHkAcwB0AGUAbQBcAEMAbABvAGMAawBHAGUAbgBlAHIAaQBjAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBl
AGIAQwBvAHIAZQBcAFAAQQBMAFwAcABhAGwAXABzAHkAcwB0AGUAbQBcAHcAaQBuAFwAUwBvAHUA
bgBkAFcAaQBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwAcABhAGwAXAB0AGUA
eAB0AFwASwBpAGwAbABSAGkAbgBnAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwA
cABhAGwAXAB3AGkAbgBcAEwAbwBnAGcAaQBuAGcAVwBpAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBDAG8A
cgBlAFwAUABBAEwAXABwAGEAbABcAGMAcgB5AHAAdABvAFwAbwBwAGUAbgBzAHMAbABcAEMAcgB5
AHAAdABvAEQAaQBnAGUAcwB0AE8AcABlAG4AUwBTAEwALgBjAHAAcAANAAoAIAAgAEYAaQBsAGUA
UwBpAHoAZQBGAG8AcgBtAGEAdAB0AGUAcgAuAGMAcABwAA0ACgAgACAATABvAGcAZwBpAG4AZwAu
AGMAcABwAA0ACgAgACAAUwBlAHMAcwBpAG8AbgBJAEQALgBjAHAAcAANAAoAIAAgAFMAbABlAGUA
cABEAGkAcwBhAGIAbABlAHIALgBjAHAAcAANAAoAIAAgAFMAeQBzAHQAZQBtAFMAbABlAGUAcABM
AGkAcwB0AGUAbgBlAHIALgBjAHAAcAANAAoAIAAgAEMAbABvAGMAawBHAGUAbgBlAHIAaQBjAC4A
YwBwAHAADQAKACAAIABTAG8AdQBuAGQAVwBpAG4ALgBjAHAAcAANAAoAIAAgAEsAaQBsAGwAUgBp
AG4AZwAuAGMAcABwAA0ACgAgACAATABvAGcAZwBpAG4AZwBXAGkAbgAuAGMAcABwAA0ACgAgACAA
QwByAHkAcAB0AG8ARABpAGcAZQBzAHQATwBwAGUAbgBTAFMATAAuAGMAcABwAA0ACgBMAGkAYgA6
AA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0A
aQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABF
AG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAuADIA
NgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwATABpAGIALgBl
AHgAZQAgAC8ATwBVAFQAOgAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAbABpAGIANgA0AFwAUABBAEwALgBsAGkAYgAi
ACAALwBOAE8ATABPAEcATwAgAC8ATQBBAEMASABJAE4ARQA6AFgANgA0ACAAIAAvAG0AYQBjAGgA
aQBuAGUAOgB4ADYANAAgAFAAQQBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARgBpAGwAZQBT
AGkAegBlAEYAbwByAG0AYQB0AHQAZQByAC4AbwBiAGoADQAKACAAIABQAEEATAAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAEwAbwBnAGcAaQBuAGcALgBvAGIAagANAAoAIAAgAFAAQQBMAC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAUwBlAHMAcwBpAG8AbgBJAEQALgBvAGIAagANAAoAIAAgAFAA
QQBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBsAGUAZQBwAEQAaQBzAGEAYgBsAGUAcgAu
AG8AYgBqAA0ACgAgACAAUABBAEwALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHkAcwB0AGUA
bQBTAGwAZQBlAHAATABpAHMAdABlAG4AZQByAC4AbwBiAGoADQAKACAAIABQAEEATAAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAEMAbABvAGMAawBHAGUAbgBlAHIAaQBjAC4AbwBiAGoADQAKACAA
IABQAEEATAAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAbwB1AG4AZABXAGkAbgAuAG8AYgBq
AA0ACgAgACAAUABBAEwALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABLAGkAbABsAFIAaQBuAGcA
LgBvAGIAagANAAoAIAAgAFAAQQBMAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATABvAGcAZwBp
AG4AZwBXAGkAbgAuAG8AYgBqAA0ACgAgACAAUABBAEwALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABDAHIAeQBwAHQAbwBEAGkAZwBlAHMAdABPAHAAZQBuAFMAUwBMAC4AbwBiAGoADQAKACAAIABQ
AEEATAAuAHYAYwB4AHAAcgBvAGoAIAAtAD4AIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAGwAaQBiADYANABcAFAAQQBM
AC4AbABpAGIADQAKAEYAaQBuAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoA
IAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUAIAAiAFAAQQBMAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwAUABBAEwALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkA
bABkACIALgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIAUABBAEwALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABQAEEATAAuAHQAbABvAGcAXABQAEEATAAuAGwAYQBzAHQAYgB1AGkAbABkAHMA
dABhAHQAZQAiAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwAcABh
AGwAXABQAEEATAAuAHYAYwB4AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcA
ZQB0ACgAcwApACkALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBj
AHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAUABBAEwAXABw
AGEAbABcAFAAQQBMAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUA
YgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFQAbwBvAGwAcwBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQBcAEQAdQBt
AHAAUgBlAG4AZABlAHIAVAByAGUAZQBMAGkAYgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAA
cgBvAGoAIgAgACgAMQAxACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwA
UwBvAHUAcgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAUABBAEwAXABwAGEAbABcAFAAQQBMAF8AQwBv
AHAAeQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAA
KAA0ADUAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBl
AHQAKABzACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBl
AFwAVwBlAGIAQwBvAHIAZQBcAFAAQQBMAFwAcABhAGwAXABQAEEATABfAEMAbwBwAHkASABlAGEA
ZABlAHIAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANAA1ACkAIABp
AHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBD
AG8AcgBlAFwAUABBAEwAXABwAGEAbABcAFAAQQBMAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAC4A
dgBjAHgAcAByAG8AagAiACAAKAA0ADYAKQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1
AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBDAG8AcgBlAEMAbABlAGEAbgA6AA0A
CgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAHgANgA0AFwAUgBl
AGwAZQBhAHMAZQBcAFAAQQBMAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAFwAIgAuAA0ACgBQAHIA
ZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwAZAA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABp
AHIAZQBjAHQAbwByAHkAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAFAAQQBMAF8AQwBvAHAA
eQBIAGUAYQBkAGUAcgBzAFwAUABBAEwAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMALgB0AGwAbwBn
AFwAIgAuAA0ACgBJAG4AaQB0AGkAYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0A
CgAgACAAQwByAGUAYQB0AGkAbgBnACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABQAEEATABf
AEMAbwBwAHkASABlAGEAZABlAHIAcwBcAFAAQQBMAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAC4A
dABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiACAAYgBlAGMAYQB1
AHMAZQAgACIAQQBsAHcAYQB5AHMAQwByAGUAYQB0AGUAIgAgAHcAYQBzACAAcwBwAGUAYwBpAGYA
aQBlAGQALgANAAoAQwB1AHMAdABvAG0AQgB1AGkAbABkADoADQAKACAAIAAiAFQAaABlACAAYgB1
AGkAbABkACAAbwBmACAAJwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEMATQBhAGsAZQBGAGkAbABlAHMAXABkADAAZABm
ADIAOABkAGMAZQA3AGUAMAAwAGMAYwBiADMAZgA0ADEAMQA2ADIAYQBiADYAMgA3AGYAMgBjADQA
XABQAEEATABfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAHIAdQBsAGUAJwAgAGQAZQBwAGUAbgBk
AHMAIABvAG4AIAAnAEYAOgBcAEcASQBUAFAAXABXAEUAQgBLAEkAVABcAFcARQBCAEsASQBUAFwA
QgBVAEkATABEAF8AQQBNAEQANgA0AFwAUABBAEwAXABIAEUAQQBEAEUAUgBTAFwAUABBAEwAXABF
AFgAUABPAFIAVABNAEEAQwBSAE8AUwAuAEgAJwAgAHcAaABpAGMAaAAgAGkAcwAgAHAAcgBvAGQA
dQBjAGUAZAAgAGIAeQAgAHQAaABlACAAYgB1AGkAbABkACAAbwBmACAAJwBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIA
ZQBcAFAAQQBMAFwAcABhAGwAXABFAHgAcABvAHIAdABNAGEAYwByAG8AcwAuAGgAJwAuACAAVABo
AGUAIABpAHQAZQBtAHMAIABjAGEAbgBuAG8AdAAgAGIAZQAgAGIAdQBpAGwAdAAgAGkAbgAgAHAA
YQByAGEAbABsAGUAbAAuACIADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ALgAuAC8ALgAuAC8AUABBAEwALwBIAGUAYQBkAGUAcgBzAC8AcABhAGwALwBFAHgAcABvAHIA
dABNAGEAYwByAG8AcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8ALgAuAC8ALgAuAC8AUABBAEwALwBIAGUAYQBkAGUAcgBzAC8AcABhAGwALwBGAGkAbABlAFMA
aQB6AGUARgBvAHIAbQBhAHQAdABlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAFAAQQBMAC8ASABlAGEAZABlAHIAcwAvAHAAYQBsAC8A
RwB1AG4AegBpAHAALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AC4ALgAvAC4ALgAvAFAAQQBMAC8ASABlAGEAZABlAHIAcwAvAHAAYQBsAC8ASAB5AHMAdABlAHIA
ZQBzAGkAcwBBAGMAdABpAHYAaQB0AHkALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAFAAQQBMAC8ASABlAGEAZABlAHIAcwAvAHAAYQBsAC8A
TABvAGcATQBhAGMAcgBvAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAC4ALgAvAC4ALgAvAFAAQQBMAC8ASABlAGEAZABlAHIAcwAvAHAAYQBsAC8ATABvAGcA
ZwBpAG4AZwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAu
AC8ALgAuAC8AUABBAEwALwBIAGUAYQBkAGUAcgBzAC8AcABhAGwALwBTAGUAcwBzAGkAbwBuAEkA
RAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8ALgAuAC8ALgAu
AC8AUABBAEwALwBIAGUAYQBkAGUAcgBzAC8AcABhAGwALwBjAHIAeQBwAHQAbwAvAEMAcgB5AHAA
dABvAEQAaQBnAGUAcwB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwAuAC4ALwBQAEEATAAvAEgAZQBhAGQAZQByAHMALwBwAGEAbAAvAHMAeQBzAHQA
ZQBtAC8AQwBsAG8AYwBrAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwAuAC4ALwAuAC4ALwBQAEEATAAvAEgAZQBhAGQAZQByAHMALwBwAGEAbAAvAHMAeQBzAHQA
ZQBtAC8AQwBsAG8AYwBrAEcAZQBuAGUAcgBpAGMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAC4ALgAvAC4ALgAvAFAAQQBMAC8ASABlAGEAZABlAHIAcwAvAHAA
YQBsAC8AcwB5AHMAdABlAG0ALwBTAGwAZQBlAHAARABpAHMAYQBiAGwAZQByAC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBQAEEATAAvAEgA
ZQBhAGQAZQByAHMALwBwAGEAbAAvAHMAeQBzAHQAZQBtAC8AUwBvAHUAbgBkAC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwAuAC4ALwAuAC4ALwBQAEEATAAvAEgA
ZQBhAGQAZQByAHMALwBwAGEAbAAvAHMAeQBzAHQAZQBtAC8AUwB5AHMAdABlAG0AUwBsAGUAZQBw
AEwAaQBzAHQAZQBuAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8ALgAuAC8ALgAuAC8AUABBAEwALwBIAGUAYQBkAGUAcgBzAC8AcABhAGwALwB0AGUAeAB0
AC8ASwBpAGwAbABSAGkAbgBnAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwAuAC4ALwAuAC4ALwBQAEEATAAvAEgAZQBhAGQAZQByAHMALwBwAGEAbAAvAHQAZQB4
AHQALwBVAG4AZQBuAGMAbwBkAGEAYgBsAGUASABhAG4AZABsAGkAbgBnAC4AaAANAAoAIAAgAEIA
dQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBX
AGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBXAGUAYgBDAG8AcgBlAC8A
UABBAEwALwBwAGEAbAAvAEMATQBhAGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoARgBpAG4AYQBs
AGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBnACAA
ZgBpAGwAZQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAUABBAEwAXwBDAG8AcAB5AEgAZQBh
AGQAZQByAHMAXABQAEEATABfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAHQAbABvAGcAXAB1AG4A
cwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkAbgBn
ACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABQAEEATABfAEMAbwBwAHkASABlAGEAZABlAHIA
cwBcAFAAQQBMAF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAC4AdABsAG8AZwBcAFAAQQBMAF8AQwBv
AHAAeQBIAGUAYQBkAGUAcgBzAC4AbABhAHMAdABiAHUAaQBsAGQAcwB0AGEAdABlACIALgANAAoA
RABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwA
UwBvAHUAcgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAUABBAEwAXABwAGEAbABcAFAAQQBMAF8AQwBv
AHAAeQBIAGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAA
dABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUABy
AG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABQ
AEEATABcAHAAYQBsAFwAUABBAEwAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMALgB2AGMAeABwAHIA
bwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAo
AHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwARAB1
AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAEwA
aQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAAxADEAKQAgAGkAcwAg
AGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwBy
AGUAXABXAGUAYgBDAG8AcgBlAFQAZQBzAHQAUwB1AHAAcABvAHIAdAAuAHYAYwB4AHAAcgBvAGoA
LgBtAGUAdABhAHAAcgBvAGoAIgAgACgANAA3ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBl
AGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABXAGUAYgBDAG8AcgBlAFQA
ZQBzAHQAUwB1AHAAcABvAHIAdAAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAg
ACgANAA3ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBj
AGUAXABXAGUAYgBDAG8AcgBlAFwAVwBlAGIAQwBvAHIAZQAuAHYAYwB4AHAAcgBvAGoALgBtAGUA
dABhAHAAcgBvAGoAIgAgACgANAA4ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBp
AGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABXAGUAYgBDAG8AcgBlAC4AdgBjAHgA
cAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA0ADgAKQAgAGkAcwAgAGIAdQBpAGwAZABp
AG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABXAGUAYgBD
AG8AcgBlAEIAaQBuAGQAaQBuAGcAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoA
IgAgACgANAA5ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQBy
AGMAZQBcAFcAZQBiAEMAbwByAGUAXABXAGUAYgBDAG8AcgBlAEIAaQBuAGQAaQBuAGcAcwAuAHYA
YwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANAA5ACkAIABpAHMAIABiAHUAaQBs
AGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAVwBl
AGIAQwBvAHIAZQBCAGkAbgBkAGkAbgBnAHMALgB2AGMAeABwAHIAbwBqACIAIAAoADUAMAApACAA
bwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQAp
AC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkA
cgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIAQwBvAHIAZQBC
AGkAbgBkAGkAbgBnAHMAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoA
DQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABS
AGUAbABlAGEAcwBlAFwAVwBlAGIAQwBvAHIAZQBCAGkAbgBkAGkAbgBnAHMAXABXAGUAYgBDAG8A
cgBlAEIAaQBuAGQAaQBuAGcAcwAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6
AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAHgA
NgA0AFwAUgBlAGwAZQBhAHMAZQBcAFcAZQBiAEMAbwByAGUAQgBpAG4AZABpAG4AZwBzAFwAVwBl
AGIAQwBvAHIAZQBCAGkAbgBkAGkAbgBnAHMALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMA
ZgB1AGwAYgB1AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwAdwBhAHkAcwBDAHIAZQBh
AHQAZQAiACAAdwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBDAHUAcwB0AG8AbQBCAHUA
aQBsAGQAOgANAAoAIAAgACIAVABoAGUAIABiAHUAaQBsAGQAIABvAGYAIAAnAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwA
QwBNAGEAawBlAEYAaQBsAGUAcwBcAGMAZQBlAGEANwBmAGMANgAzAGIAMQBjADEAOAAxAGQAZQBl
ADkAZAAwAGIANQAyAGYAZgBlADAAMgBmAGIAYgBcAFcAZQBiAEMAbwByAGUAQgBpAG4AZABpAG4A
ZwBzAC4AcgB1AGwAZQAnACAAZABlAHAAZQBuAGQAcwAgAG8AbgAgACcARgA6AFwARwBJAFQAUABc
AFcARQBCAEsASQBUAFwAVwBFAEIASwBJAFQAXABCAFUASQBMAEQAXwBBAE0ARAA2ADQAXABXAEUA
QgBDAE8AUgBFAFwARABFAFIASQBWAEUARABTAE8AVQBSAEMARQBTAFwASQBOAFQARQBSAE4AQQBM
AFMARQBUAFQASQBOAEcAUwBHAEUATgBFAFIAQQBUAEUARAAuAEkARABMACcAIAB3AGgAaQBjAGgA
IABpAHMAIABwAHIAbwBkAHUAYwBlAGQAIABiAHkAIAB0AGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAg
ACcARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMA
ZQBcAFcAZQBiAEMAbwByAGUAXABwAGEAZwBlAFwAUwBlAHQAdABpAG4AZwBzAC4AeQBhAG0AbAAn
AC4AIABUAGgAZQAgAGkAdABlAG0AcwAgAGMAYQBuAG4AbwB0ACAAYgBlACAAYgB1AGkAbAB0ACAA
aQBuACAAcABhAHIAYQBsAGwAZQBsAC4AIgANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBXAGUAYgBDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8A
UwBlAHQAdABpAG4AZwBzAC4AaAAsACAALgAuAC8ALgAuAC8AVwBlAGIAQwBvAHIAZQAvAEQAZQBy
AGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAFMAZQB0AHQAaQBuAGcAcwAuAGMAcABwACwAIAAuAC4A
LwAuAC4ALwBXAGUAYgBDAG8AcgBlAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8ASQBu
AHQAZQByAG4AYQBsAFMAZQB0AHQAaQBuAGcAcwBHAGUAbgBlAHIAYQB0AGUAZAAuAGgALAAgAC4A
LgAvAC4ALgAvAFcAZQBiAEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBlAHMALwBJ
AG4AdABlAHIAbgBhAGwAUwBlAHQAdABpAG4AZwBzAEcAZQBuAGUAcgBhAHQAZQBkAC4AYwBwAHAA
LAAgAC4ALgAvAC4ALgAvAFcAZQBiAEMAbwByAGUALwBEAGUAcgBpAHYAZQBkAFMAbwB1AHIAYwBl
AHMALwBJAG4AdABlAHIAbgBhAGwAUwBlAHQAdABpAG4AZwBzAEcAZQBuAGUAcgBhAHQAZQBkAC4A
aQBkAGwADQAKACAAIABCAHUAaQBsAGQAaQBuAGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFMAbwB1AHIAYwBlAC8A
VwBlAGIAQwBvAHIAZQAvAEMATQBhAGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAZQAgAGIAaQBuAGQAaQBuAGcAcwAgACgAVwBlAGIAQwBvAHIAZQBCAGkAbgBkAGkA
bgBnAHMAKQANAAoAIAAgAFAAcgBlAHAAcgBvAGMAZQBzAHMAIABJAEQATAANAAoAIAAgAFsAMQAv
ADEAMAAzADcAXQAgAFcAZQBiAEsAaQB0AFAAbABhAHkAYgBhAGMAawBUAGEAcgBnAGUAdABBAHYA
YQBpAGwAYQBiAGkAbABpAHQAeQBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAMgAvADEAMAAz
ADcAXQAgAEMAbABpAHAAYgBvAGEAcgBkAC4AaQBkAGwADQAKACAAIABbADMALwAxADAAMwA3AF0A
IABDAGwAaQBwAGIAbwBhAHIAZABJAHQAZQBtAC4AaQBkAGwADQAKACAAIABbADQALwAxADAAMwA3
AF0AIABOAGEAdgBpAGcAYQB0AG8AcgBDAGwAaQBwAGIAbwBhAHIAZAAuAGkAZABsAA0ACgAgACAA
WwA1AC8AMQAwADMANwBdACAATgBhAHYAaQBnAGEAdABvAHIAQgBlAGEAYwBvAG4ALgBpAGQAbAAN
AAoAIAAgAFsANgAvADEAMAAzADcAXQAgAEMAYQBjAGgAZQBRAHUAZQByAHkATwBwAHQAaQBvAG4A
cwAuAGkAZABsAA0ACgAgACAAWwA3AC8AMQAwADMANwBdACAARABPAE0AQwBhAGMAaABlAC4AaQBk
AGwADQAKACAAIABbADgALwAxADAAMwA3AF0AIABEAE8ATQBDAGEAYwBoAGUAUwB0AG8AcgBhAGcA
ZQAuAGkAZABsAA0ACgAgACAAWwA5AC8AMQAwADMANwBdACAARABPAE0AVwBpAG4AZABvAHcAQwBh
AGMAaABlAHMALgBpAGQAbAANAAoAIAAgAFsAMQAwAC8AMQAwADMANwBdACAAVwBvAHIAawBlAHIA
RwBsAG8AYgBhAGwAUwBjAG8AcABlAEMAYQBjAGgAZQBzAC4AaQBkAGwADQAKACAAIABbADEAMQAv
ADEAMAAzADcAXQAgAEIAYQBzAGkAYwBDAHIAZQBkAGUAbgB0AGkAYQBsAC4AaQBkAGwADQAKACAA
IABbADEAMgAvADEAMAAzADcAXQAgAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwByAGUAYQB0AGkAbwBu
AE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAgAFsAMQAzAC8AMQAwADMANwBdACAAQwByAGUA
ZABlAG4AdABpAGEAbABSAGUAcQB1AGUAcwB0AE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAg
AFsAMQA0AC8AMQAwADMANwBdACAAQwByAGUAZABlAG4AdABpAGEAbABzAEMAbwBuAHQAYQBpAG4A
ZQByAC4AaQBkAGwADQAKACAAIABbADEANQAvADEAMAAzADcAXQAgAE4AYQB2AGkAZwBhAHQAbwBy
AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwAuAGkAZABsAA0ACgAgACAAWwAxADYALwAxADAAMwA3AF0A
IABNAGUAZABpAGEASwBlAHkARQBuAGMAcgB5AHAAdABpAG8AbgBTAGMAaABlAG0AZQAuAGkAZABs
AA0ACgAgACAAWwAxADcALwAxADAAMwA3AF0AIABNAGUAZABpAGEASwBlAHkATQBlAHMAcwBhAGcA
ZQBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAMQA4AC8AMQAwADMANwBdACAATQBlAGQAaQBh
AEsAZQB5AFMAZQBzAHMAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAMQA5AC8AMQAwADMANwBdACAA
TQBlAGQAaQBhAEsAZQB5AFMAZQBzAHMAaQBvAG4AVAB5AHAAZQAuAGkAZABsAA0ACgAgACAAWwAy
ADAALwAxADAAMwA3AF0AIABNAGUAZABpAGEASwBlAHkAUwB0AGEAdAB1AHMATQBhAHAALgBpAGQA
bAANAAoAIAAgAFsAMgAxAC8AMQAwADMANwBdACAATQBlAGQAaQBhAEsAZQB5AFMAeQBzAHQAZQBt
AEEAYwBjAGUAcwBzAC4AaQBkAGwADQAKACAAIABbADIAMgAvADEAMAAzADcAXQAgAE0AZQBkAGkA
YQBLAGUAeQBTAHkAcwB0AGUAbQBDAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuAC4AaQBkAGwADQAK
ACAAIABbADIAMwAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBLAGUAeQBTAHkAcwB0AGUAbQBNAGUA
ZABpAGEAQwBhAHAAYQBiAGkAbABpAHQAeQAuAGkAZABsAA0ACgAgACAAWwAyADQALwAxADAAMwA3
AF0AIABNAGUAZABpAGEASwBlAHkAcwAuAGkAZABsAA0ACgAgACAAWwAyADUALwAxADAAMwA3AF0A
IABNAGUAZABpAGEASwBlAHkAcwBSAGUAcQB1AGkAcgBlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAg
AFsAMgA2AC8AMQAwADMANwBdACAATgBhAHYAaQBnAGEAdABvAHIARQBNAEUALgBpAGQAbAANAAoA
IAAgAFsAMgA3AC8AMQAwADMANwBdACAARABPAE0ARgBpAGwAZQBTAHkAcwB0AGUAbQAuAGkAZABs
AA0ACgAgACAAWwAyADgALwAxADAAMwA3AF0AIABFAHIAcgBvAHIAQwBhAGwAbABiAGEAYwBrAC4A
aQBkAGwADQAKACAAIABbADIAOQAvADEAMAAzADcAXQAgAEYAaQBsAGUAQwBhAGwAbABiAGEAYwBr
AC4AaQBkAGwADQAKACAAIABbADMAMAAvADEAMAAzADcAXQAgAEYAaQBsAGUAUwB5AHMAdABlAG0A
RABpAHIAZQBjAHQAbwByAHkARQBuAHQAcgB5AC4AaQBkAGwADQAKACAAIABbADMAMQAvADEAMAAz
ADcAXQAgAEYAaQBsAGUAUwB5AHMAdABlAG0ARABpAHIAZQBjAHQAbwByAHkAUgBlAGEAZABlAHIA
LgBpAGQAbAANAAoAIAAgAFsAMwAyAC8AMQAwADMANwBdACAARgBpAGwAZQBTAHkAcwB0AGUAbQBF
AG4AdAByAGkAZQBzAEMAYQBsAGwAYgBhAGMAawAuAGkAZABsAA0ACgAgACAAWwAzADMALwAxADAA
MwA3AF0AIABGAGkAbABlAFMAeQBzAHQAZQBtAEUAbgB0AHIAeQAuAGkAZABsAA0ACgAgACAAWwAz
ADQALwAxADAAMwA3AF0AIABGAGkAbABlAFMAeQBzAHQAZQBtAEUAbgB0AHIAeQBDAGEAbABsAGIA
YQBjAGsALgBpAGQAbAANAAoAIAAgAFsAMwA1AC8AMQAwADMANwBdACAARgBpAGwAZQBTAHkAcwB0
AGUAbQBGAGkAbABlAEUAbgB0AHIAeQAuAGkAZABsAA0ACgAgACAAWwAzADYALwAxADAAMwA3AF0A
IABIAFQATQBMAEkAbgBwAHUAdABFAGwAZQBtAGUAbgB0AEUAbgB0AHIAaQBlAHMAQQBQAEkALgBp
AGQAbAANAAoAIAAgAFsAMwA3AC8AMQAwADMANwBdACAARABPAE0AVwBpAG4AZABvAHcARgBlAHQA
YwBoAC4AaQBkAGwADQAKACAAIABbADMAOAAvADEAMAAzADcAXQAgAEYAZQB0AGMAaABCAG8AZAB5
AC4AaQBkAGwADQAKACAAIABbADMAOQAvADEAMAAzADcAXQAgAEYAZQB0AGMAaABIAGUAYQBkAGUA
cgBzAC4AaQBkAGwADQAKACAAIABbADQAMAAvADEAMAAzADcAXQAgAEYAZQB0AGMAaABSAGUAZgBl
AHIAcgBlAHIAUABvAGwAaQBjAHkALgBpAGQAbAANAAoAIAAgAFsANAAxAC8AMQAwADMANwBdACAA
RgBlAHQAYwBoAFIAZQBxAHUAZQBzAHQALgBpAGQAbAANAAoAIAAgAFsANAAyAC8AMQAwADMANwBd
ACAARgBlAHQAYwBoAFIAZQBxAHUAZQBzAHQAQwBhAGMAaABlAC4AaQBkAGwADQAKACAAIABbADQA
MwAvADEAMAAzADcAXQAgAEYAZQB0AGMAaABSAGUAcQB1AGUAcwB0AEMAcgBlAGQAZQBuAHQAaQBh
AGwAcwAuAGkAZABsAA0ACgAgACAAWwA0ADQALwAxADAAMwA3AF0AIABGAGUAdABjAGgAUgBlAHEA
dQBlAHMAdABJAG4AaQB0AC4AaQBkAGwADQAKACAAIABbADQANQAvADEAMAAzADcAXQAgAEYAZQB0
AGMAaABSAGUAcQB1AGUAcwB0AE0AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsANAA2AC8AMQAwADMA
NwBdACAARgBlAHQAYwBoAFIAZQBxAHUAZQBzAHQAUgBlAGQAaQByAGUAYwB0AC4AaQBkAGwADQAK
ACAAIABbADQANwAvADEAMAAzADcAXQAgAEYAZQB0AGMAaABSAGUAcwBwAG8AbgBzAGUALgBpAGQA
bAANAAoAIAAgAFsANAA4AC8AMQAwADMANwBdACAAVwBvAHIAawBlAHIARwBsAG8AYgBhAGwAUwBj
AG8AcABlAEYAZQB0AGMAaAAuAGkAZABsAA0ACgAgACAAWwA0ADkALwAxADAAMwA3AF0AIABHAGUA
bwBsAG8AYwBhAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsANQAwAC8AMQAwADMANwBdACAARwBl
AG8AbABvAGMAYQB0AGkAbwBuAEMAbwBvAHIAZABpAG4AYQB0AGUAcwAuAGkAZABsAA0ACgAgACAA
WwA1ADEALwAxADAAMwA3AF0AIABHAGUAbwBsAG8AYwBhAHQAaQBvAG4AUABvAHMAaQB0AGkAbwBu
AC4AaQBkAGwADQAKACAAIABbADUAMgAvADEAMAAzADcAXQAgAEcAZQBvAGwAbwBjAGEAdABpAG8A
bgBQAG8AcwBpAHQAaQBvAG4ARQByAHIAbwByAC4AaQBkAGwADQAKACAAIABbADUAMwAvADEAMAAz
ADcAXQAgAE4AYQB2AGkAZwBhAHQAbwByAEcAZQBvAGwAbwBjAGEAdABpAG8AbgAuAGkAZABsAA0A
CgAgACAAWwA1ADQALwAxADAAMwA3AF0AIABQAG8AcwBpAHQAaQBvAG4AQwBhAGwAbABiAGEAYwBr
AC4AaQBkAGwADQAKACAAIABbADUANQAvADEAMAAzADcAXQAgAFAAbwBzAGkAdABpAG8AbgBFAHIA
cgBvAHIAQwBhAGwAbABiAGEAYwBrAC4AaQBkAGwADQAKACAAIABbADUANgAvADEAMAAzADcAXQAg
AFAAbwBzAGkAdABpAG8AbgBPAHAAdABpAG8AbgBzAC4AaQBkAGwADQAKACAAIABbADUANwAvADEA
MAAzADcAXQAgAEgAaQBnAGgAbABpAGcAaAB0AE0AYQBwAC4AaQBkAGwADQAKACAAIABbADUAOAAv
ADEAMAAzADcAXQAgAEgAaQBnAGgAbABpAGcAaAB0AFIAYQBuAGcAZQBHAHIAbwB1AHAALgBpAGQA
bAANAAoAIAAgAFsANQA5AC8AMQAwADMANwBdACAARABPAE0AVwBpAG4AZABvAHcASQBuAGQAZQB4
AGUAZABEAGEAdABhAGIAYQBzAGUALgBpAGQAbAANAAoAIAAgAFsANgAwAC8AMQAwADMANwBdACAA
SQBEAEIAQwB1AHIAcwBvAHIALgBpAGQAbAANAAoAIAAgAFsANgAxAC8AMQAwADMANwBdACAASQBE
AEIAQwB1AHIAcwBvAHIARABpAHIAZQBjAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsANgAyAC8A
MQAwADMANwBdACAASQBEAEIAQwB1AHIAcwBvAHIAVwBpAHQAaABWAGEAbAB1AGUALgBpAGQAbAAN
AAoAIAAgAFsANgAzAC8AMQAwADMANwBdACAASQBEAEIARABhAHQAYQBiAGEAcwBlAC4AaQBkAGwA
DQAKACAAIABbADYANAAvADEAMAAzADcAXQAgAEkARABCAEYAYQBjAHQAbwByAHkALgBpAGQAbAAN
AAoAIAAgAFsANgA1AC8AMQAwADMANwBdACAASQBEAEIASQBuAGQAZQB4AC4AaQBkAGwADQAKACAA
IABbADYANgAvADEAMAAzADcAXQAgAEkARABCAEsAZQB5AFIAYQBuAGcAZQAuAGkAZABsAA0ACgAg
ACAAWwA2ADcALwAxADAAMwA3AF0AIABJAEQAQgBPAGIAagBlAGMAdABTAHQAbwByAGUALgBpAGQA
bAANAAoAIAAgAFsANgA4AC8AMQAwADMANwBdACAASQBEAEIATwBwAGUAbgBEAEIAUgBlAHEAdQBl
AHMAdAAuAGkAZABsAA0ACgAgACAAWwA2ADkALwAxADAAMwA3AF0AIABJAEQAQgBSAGUAcQB1AGUA
cwB0AC4AaQBkAGwADQAKACAAIABbADcAMAAvADEAMAAzADcAXQAgAEkARABCAFQAcgBhAG4AcwBh
AGMAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA3ADEALwAxADAAMwA3AF0AIABJAEQAQgBUAHIA
YQBuAHMAYQBjAHQAaQBvAG4ATQBvAGQAZQAuAGkAZABsAA0ACgAgACAAWwA3ADIALwAxADAAMwA3
AF0AIABJAEQAQgBWAGUAcgBzAGkAbwBuAEMAaABhAG4AZwBlAEUAdgBlAG4AdAAuAGkAZABsAA0A
CgAgACAAWwA3ADMALwAxADAAMwA3AF0AIABXAG8AcgBrAGUAcgBHAGwAbwBiAGEAbABTAGMAbwBw
AGUASQBuAGQAZQB4AGUAZABEAGEAdABhAGIAYQBzAGUALgBpAGQAbAANAAoAIAAgAFsANwA0AC8A
MQAwADMANwBdACAAQQB1AGQAaQBvAEMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4ALgBpAGQAbAAN
AAoAIAAgAFsANwA1AC8AMQAwADMANwBdACAAQwBvAGwAbwByAEcAYQBtAHUAdAAuAGkAZABsAA0A
CgAgACAAWwA3ADYALwAxADAAMwA3AF0AIABIAGQAcgBNAGUAdABhAGQAYQB0AGEAVAB5AHAAZQAu
AGkAZABsAA0ACgAgACAAWwA3ADcALwAxADAAMwA3AF0AIABNAGUAZABpAGEAQwBhAHAAYQBiAGkA
bABpAHQAaQBlAHMALgBpAGQAbAANAAoAIAAgAFsANwA4AC8AMQAwADMANwBdACAATQBlAGQAaQBh
AEMAYQBwAGEAYgBpAGwAaQB0AGkAZQBzAEQAZQBjAG8AZABpAG4AZwBJAG4AZgBvAC4AaQBkAGwA
DQAKACAAIABbADcAOQAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBDAGEAcABhAGIAaQBsAGkAdABp
AGUAcwBFAG4AYwBvAGQAaQBuAGcASQBuAGYAbwAuAGkAZABsAA0ACgAgACAAWwA4ADAALwAxADAA
MwA3AF0AIABNAGUAZABpAGEAQwBhAHAAYQBiAGkAbABpAHQAaQBlAHMASQBuAGYAbwAuAGkAZABs
AA0ACgAgACAAWwA4ADEALwAxADAAMwA3AF0AIABNAGUAZABpAGEAQwBvAG4AZgBpAGcAdQByAGEA
dABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA4ADIALwAxADAAMwA3AF0AIABNAGUAZABpAGEARABl
AGMAbwBkAGkAbgBnAEMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsA
OAAzAC8AMQAwADMANwBdACAATQBlAGQAaQBhAEQAZQBjAG8AZABpAG4AZwBUAHkAcABlAC4AaQBk
AGwADQAKACAAIABbADgANAAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBFAG4AYwBvAGQAaQBuAGcA
QwBvAG4AZgBpAGcAdQByAGEAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA4ADUALwAxADAAMwA3
AF0AIABNAGUAZABpAGEARQBuAGMAbwBkAGkAbgBnAFQAeQBwAGUALgBpAGQAbAANAAoAIAAgAFsA
OAA2AC8AMQAwADMANwBdACAATgBhAHYAaQBnAGEAdABvAHIATQBlAGQAaQBhAEMAYQBwAGEAYgBp
AGwAaQB0AGkAZQBzAC4AaQBkAGwADQAKACAAIABbADgANwAvADEAMAAzADcAXQAgAFQAcgBhAG4A
cwBmAGUAcgBGAHUAbgBjAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAOAA4AC8AMQAwADMANwBd
ACAAVgBpAGQAZQBvAEMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsA
OAA5AC8AMQAwADMANwBdACAATQBlAGQAaQBhAEMAbwBuAHQAcgBvAGwAcwBIAG8AcwB0AC4AaQBk
AGwADQAKACAAIABbADkAMAAvADEAMAAzADcAXQAgAEIAbABvAGIARQB2AGUAbgB0AC4AaQBkAGwA
DQAKACAAIABbADkAMQAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBSAGUAYwBvAHIAZABlAHIALgBp
AGQAbAANAAoAIAAgAFsAOQAyAC8AMQAwADMANwBdACAATQBlAGQAaQBhAFIAZQBjAG8AcgBkAGUA
cgBFAHIAcgBvAHIARQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkAMwAvADEAMAAzADcAXQAg
AEgAVABNAEwATQBlAGQAaQBhAEUAbABlAG0AZQBuAHQATQBlAGQAaQBhAFMAZQBzAHMAaQBvAG4A
LgBpAGQAbAANAAoAIAAgAFsAOQA0AC8AMQAwADMANwBdACAATQBlAGQAaQBhAFIAZQBtAG8AdABl
AEMAbwBuAHQAcgBvAGwAcwAuAGkAZABsAA0ACgAgACAAWwA5ADUALwAxADAAMwA3AF0AIABNAGUA
ZABpAGEAUwBlAHMAcwBpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA5ADYALwAxADAAMwA3AF0AIABB
AHUAZABpAG8AVAByAGEAYwBrAE0AZQBkAGkAYQBTAG8AdQByAGMAZQAuAGkAZABsAA0ACgAgACAA
WwA5ADcALwAxADAAMwA3AF0AIABEAE8ATQBVAFIATABNAGUAZABpAGEAUwBvAHUAcgBjAGUALgBp
AGQAbAANAAoAIAAgAFsAOQA4AC8AMQAwADMANwBdACAATQBlAGQAaQBhAFMAbwB1AHIAYwBlAC4A
aQBkAGwADQAKACAAIABbADkAOQAvADEAMAAzADcAXQAgAFMAbwB1AHIAYwBlAEIAdQBmAGYAZQBy
AC4AaQBkAGwADQAKACAAIABbADEAMAAwAC8AMQAwADMANwBdACAAUwBvAHUAcgBjAGUAQgB1AGYA
ZgBlAHIATABpAHMAdAAuAGkAZABsAA0ACgAgACAAWwAxADAAMQAvADEAMAAzADcAXQAgAFQAZQB4
AHQAVAByAGEAYwBrAE0AZQBkAGkAYQBTAG8AdQByAGMAZQAuAGkAZABsAA0ACgAgACAAWwAxADAA
MgAvADEAMAAzADcAXQAgAFYAaQBkAGUAbwBQAGwAYQB5AGIAYQBjAGsAUQB1AGEAbABpAHQAeQAu
AGkAZABsAA0ACgAgACAAWwAxADAAMwAvADEAMAAzADcAXQAgAFYAaQBkAGUAbwBUAHIAYQBjAGsA
TQBlAGQAaQBhAFMAbwB1AHIAYwBlAC4AaQBkAGwADQAKACAAIABbADEAMAA0AC8AMQAwADMANwBd
ACAAQwBhAG4AdgBhAHMAQwBhAHAAdAB1AHIAZQBNAGUAZABpAGEAUwB0AHIAZQBhAG0AVAByAGEA
YwBrAC4AaQBkAGwADQAKACAAIABbADEAMAA1AC8AMQAwADMANwBdACAARABvAHUAYgBsAGUAUgBh
AG4AZwBlAC4AaQBkAGwADQAKACAAIABbADEAMAA2AC8AMQAwADMANwBdACAATABvAG4AZwBSAGEA
bgBnAGUALgBpAGQAbAANAAoAIAAgAFsAMQAwADcALwAxADAAMwA3AF0AIABNAGUAZABpAGEARABl
AHYAaQBjAGUASQBuAGYAbwAuAGkAZABsAA0ACgAgACAAWwAxADAAOAAvADEAMAAzADcAXQAgAE0A
ZQBkAGkAYQBEAGUAdgBpAGMAZQBzAC4AaQBkAGwADQAKACAAIABbADEAMAA5AC8AMQAwADMANwBd
ACAATQBlAGQAaQBhAFMAdAByAGUAYQBtAC4AaQBkAGwADQAKACAAIABbADEAMQAwAC8AMQAwADMA
NwBdACAATQBlAGQAaQBhAFMAdAByAGUAYQBtAFQAcgBhAGMAawAuAGkAZABsAA0ACgAgACAAWwAx
ADEAMQAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBTAHQAcgBlAGEAbQBUAHIAYQBjAGsARQB2AGUA
bgB0AC4AaQBkAGwADQAKACAAIABbADEAMQAyAC8AMQAwADMANwBdACAATQBlAGQAaQBhAFQAcgBh
AGMAawBDAG8AbgBzAHQAcgBhAGkAbgB0AHMALgBpAGQAbAANAAoAIAAgAFsAMQAxADMALwAxADAA
MwA3AF0AIABNAGUAZABpAGEAVAByAGEAYwBrAFMAdQBwAHAAbwByAHQAZQBkAEMAbwBuAHMAdABy
AGEAaQBuAHQAcwAuAGkAZABsAA0ACgAgACAAWwAxADEANAAvADEAMAAzADcAXQAgAE4AYQB2AGkA
ZwBhAHQAbwByAE0AZQBkAGkAYQBEAGUAdgBpAGMAZQBzAC4AaQBkAGwADQAKACAAIABbADEAMQA1
AC8AMQAwADMANwBdACAATwB2AGUAcgBjAG8AbgBzAHQAcgBhAGkAbgBlAGQARQByAHIAbwByAC4A
aQBkAGwADQAKACAAIABbADEAMQA2AC8AMQAwADMANwBdACAATwB2AGUAcgBjAG8AbgBzAHQAcgBh
AGkAbgBlAGQARQByAHIAbwByAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwAxADEANwAvADEA
MAAzADcAXQAgAFIAVABDAEEAbgBzAHcAZQByAE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAg
AFsAMQAxADgALwAxADAAMwA3AF0AIABSAFQAQwBDAGUAcgB0AGkAZgBpAGMAYQB0AGUALgBpAGQA
bAANAAoAIAAgAFsAMQAxADkALwAxADAAMwA3AF0AIABSAFQAQwBDAG8AbgBmAGkAZwB1AHIAYQB0
AGkAbwBuAC4AaQBkAGwADQAKACAAIABbADEAMgAwAC8AMQAwADMANwBdACAAUgBUAEMARABUAE0A
RgBTAGUAbgBkAGUAcgAuAGkAZABsAA0ACgAgACAAWwAxADIAMQAvADEAMAAzADcAXQAgAFIAVABD
AEQAVABNAEYAVABvAG4AZQBDAGgAYQBuAGcAZQBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
MQAyADIALwAxADAAMwA3AF0AIABSAFQAQwBEAGEAdABhAEMAaABhAG4AbgBlAGwALgBpAGQAbAAN
AAoAIAAgAFsAMQAyADMALwAxADAAMwA3AF0AIABSAFQAQwBEAGEAdABhAEMAaABhAG4AbgBlAGwA
RQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADEAMgA0AC8AMQAwADMANwBdACAAUgBUAEMARABl
AGcAcgBhAGQAYQB0AGkAbwBuAFAAcgBlAGYAZQByAGUAbgBjAGUALgBpAGQAbAANAAoAIAAgAFsA
MQAyADUALwAxADAAMwA3AF0AIABSAFQAQwBEAHQAeABTAHQAYQB0AHUAcwAuAGkAZABsAA0ACgAg
ACAAWwAxADIANgAvADEAMAAzADcAXQAgAFIAVABDAEkAYwBlAEMAYQBuAGQAaQBkAGEAdABlAC4A
aQBkAGwADQAKACAAIABbADEAMgA3AC8AMQAwADMANwBdACAAUgBUAEMASQBjAGUAQwBvAG4AbgBl
AGMAdABpAG8AbgBTAHQAYQB0AGUALgBpAGQAbAANAAoAIAAgAFsAMQAyADgALwAxADAAMwA3AF0A
IABSAFQAQwBJAGMAZQBHAGEAdABoAGUAcgBpAG4AZwBTAHQAYQB0AGUALgBpAGQAbAANAAoAIAAg
AFsAMQAyADkALwAxADAAMwA3AF0AIABSAFQAQwBJAGMAZQBTAGUAcgB2AGUAcgAuAGkAZABsAA0A
CgAgACAAWwAxADMAMAAvADEAMAAzADcAXQAgAFIAVABDAEkAYwBlAFQAcgBhAG4AcwBwAG8AcgB0
AC4AaQBkAGwADQAKACAAIABbADEAMwAxAC8AMQAwADMANwBdACAAUgBUAEMASQBjAGUAVAByAGEA
bgBzAHAAbwByAHQAUwB0AGEAdABlAC4AaQBkAGwADQAKACAAIABbADEAMwAyAC8AMQAwADMANwBd
ACAAUgBUAEMATwBmAGYAZQByAEEAbgBzAHcAZQByAE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoA
IAAgAFsAMQAzADMALwAxADAAMwA3AF0AIABSAFQAQwBPAGYAZgBlAHIATwBwAHQAaQBvAG4AcwAu
AGkAZABsAA0ACgAgACAAWwAxADMANAAvADEAMAAzADcAXQAgAFIAVABDAFAAZQBlAHIAQwBvAG4A
bgBlAGMAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwAxADMANQAvADEAMAAzADcAXQAgAFIAVABD
AFAAZQBlAHIAQwBvAG4AbgBlAGMAdABpAG8AbgBJAGMAZQBFAHYAZQBuAHQALgBpAGQAbAANAAoA
IAAgAFsAMQAzADYALwAxADAAMwA3AF0AIABSAFQAQwBQAGUAZQByAEMAbwBuAG4AZQBjAHQAaQBv
AG4AUwB0AGEAdABlAC4AaQBkAGwADQAKACAAIABbADEAMwA3AC8AMQAwADMANwBdACAAUgBUAEMA
UAByAGkAbwByAGkAdAB5AFQAeQBwAGUALgBpAGQAbAANAAoAIAAgAFsAMQAzADgALwAxADAAMwA3
AF0AIABSAFQAQwBSAHQAcABDAGEAcABhAGIAaQBsAGkAdABpAGUAcwAuAGkAZABsAA0ACgAgACAA
WwAxADMAOQAvADEAMAAzADcAXQAgAFIAVABDAFIAdABwAEMAbwBkAGUAYwBDAGEAcABhAGIAaQBs
AGkAdAB5AC4AaQBkAGwADQAKACAAIABbADEANAAwAC8AMQAwADMANwBdACAAUgBUAEMAUgB0AHAA
QwBvAGQAZQBjAFAAYQByAGEAbQBlAHQAZQByAHMALgBpAGQAbAANAAoAIAAgAFsAMQA0ADEALwAx
ADAAMwA3AF0AIABSAFQAQwBSAHQAcABDAG8AbgB0AHIAaQBiAHUAdABpAG4AZwBTAG8AdQByAGMA
ZQAuAGkAZABsAA0ACgAgACAAWwAxADQAMgAvADEAMAAzADcAXQAgAFIAVABDAFIAdABwAEUAbgBj
AG8AZABpAG4AZwBQAGEAcgBhAG0AZQB0AGUAcgBzAC4AaQBkAGwADQAKACAAIABbADEANAAzAC8A
MQAwADMANwBdACAAUgBUAEMAUgB0AHAARgBlAGMAUABhAHIAYQBtAGUAdABlAHIAcwAuAGkAZABs
AA0ACgAgACAAWwAxADQANAAvADEAMAAzADcAXQAgAFIAVABDAFIAdABwAEgAZQBhAGQAZQByAEUA
eAB0AGUAbgBzAGkAbwBuAFAAYQByAGEAbQBlAHQAZQByAHMALgBpAGQAbAANAAoAIAAgAFsAMQA0
ADUALwAxADAAMwA3AF0AIABSAFQAQwBSAHQAcABQAGEAcgBhAG0AZQB0AGUAcgBzAC4AaQBkAGwA
DQAKACAAIABbADEANAA2AC8AMQAwADMANwBdACAAUgBUAEMAUgB0AHAAUgBlAGMAZQBpAHYAZQBy
AC4AaQBkAGwADQAKACAAIABbADEANAA3AC8AMQAwADMANwBdACAAUgBUAEMAUgB0AHAAUgB0AHgA
UABhAHIAYQBtAGUAdABlAHIAcwAuAGkAZABsAA0ACgAgACAAWwAxADQAOAAvADEAMAAzADcAXQAg
AFIAVABDAFIAdABwAFMAZQBuAGQAUABhAHIAYQBtAGUAdABlAHIAcwAuAGkAZABsAA0ACgAgACAA
WwAxADQAOQAvADEAMAAzADcAXQAgAFIAVABDAFIAdABwAFMAZQBuAGQAZQByAC4AaQBkAGwADQAK
ACAAIABbADEANQAwAC8AMQAwADMANwBdACAAUgBUAEMAUgB0AHAAUwB5AG4AYwBoAHIAbwBuAGkA
egBhAHQAaQBvAG4AUwBvAHUAcgBjAGUALgBpAGQAbAANAAoAIAAgAFsAMQA1ADEALwAxADAAMwA3
AF0AIABSAFQAQwBSAHQAcABUAHIAYQBuAHMAYwBlAGkAdgBlAHIALgBpAGQAbAANAAoAIAAgAFsA
MQA1ADIALwAxADAAMwA3AF0AIABSAFQAQwBSAHQAcABUAHIAYQBuAHMAYwBlAGkAdgBlAHIARABp
AHIAZQBjAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAMQA1ADMALwAxADAAMwA3AF0AIABSAFQA
QwBTAGUAcwBzAGkAbwBuAEQAZQBzAGMAcgBpAHAAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwAx
ADUANAAvADEAMAAzADcAXQAgAFIAVABDAFMAaQBnAG4AYQBsAGkAbgBnAFMAdABhAHQAZQAuAGkA
ZABsAA0ACgAgACAAWwAxADUANQAvADEAMAAzADcAXQAgAFIAVABDAFMAdABhAHQAcwBSAGUAcABv
AHIAdAAuAGkAZABsAA0ACgAgACAAWwAxADUANgAvADEAMAAzADcAXQAgAFIAVABDAFQAcgBhAGMA
awBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAMQA1ADcALwAxADAAMwA3AF0AIABOAG8AdABp
AGYAaQBjAGEAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwAxADUAOAAvADEAMAAzADcAXQAgAE4A
bwB0AGkAZgBpAGMAYQB0AGkAbwBuAFAAZQByAG0AaQBzAHMAaQBvAG4ALgBpAGQAbAANAAoAIAAg
AFsAMQA1ADkALwAxADAAMwA3AF0AIABOAG8AdABpAGYAaQBjAGEAdABpAG8AbgBQAGUAcgBtAGkA
cwBzAGkAbwBuAEMAYQBsAGwAYgBhAGMAawAuAGkAZABsAA0ACgAgACAAWwAxADYAMAAvADEAMAAz
ADcAXQAgAEEAZABkAHIAZQBzAHMARQByAHIAbwByAHMALgBpAGQAbAANAAoAIAAgAFsAMQA2ADEA
LwAxADAAMwA3AF0AIABNAGUAcgBjAGgAYQBuAHQAVgBhAGwAaQBkAGEAdABpAG8AbgBFAHYAZQBu
AHQALgBpAGQAbAANAAoAIAAgAFsAMQA2ADIALwAxADAAMwA3AF0AIABQAGEAeQBlAHIARQByAHIA
bwByAEYAaQBlAGwAZABzAC4AaQBkAGwADQAKACAAIABbADEANgAzAC8AMQAwADMANwBdACAAUABh
AHkAbQBlAG4AdABBAGQAZAByAGUAcwBzAC4AaQBkAGwADQAKACAAIABbADEANgA0AC8AMQAwADMA
NwBdACAAUABhAHkAbQBlAG4AdABDAG8AbQBwAGwAZQB0AGUALgBpAGQAbAANAAoAIAAgAFsAMQA2
ADUALwAxADAAMwA3AF0AIABQAGEAeQBtAGUAbgB0AEMAdQByAHIAZQBuAGMAeQBBAG0AbwB1AG4A
dAAuAGkAZABsAA0ACgAgACAAWwAxADYANgAvADEAMAAzADcAXQAgAFAAYQB5AG0AZQBuAHQARABl
AHQAYQBpAGwAcwBCAGEAcwBlAC4AaQBkAGwADQAKACAAIABbADEANgA3AC8AMQAwADMANwBdACAA
UABhAHkAbQBlAG4AdABEAGUAdABhAGkAbABzAEkAbgBpAHQALgBpAGQAbAANAAoAIAAgAFsAMQA2
ADgALwAxADAAMwA3AF0AIABQAGEAeQBtAGUAbgB0AEQAZQB0AGEAaQBsAHMATQBvAGQAaQBmAGkA
ZQByAC4AaQBkAGwADQAKACAAIABbADEANgA5AC8AMQAwADMANwBdACAAUABhAHkAbQBlAG4AdABE
AGUAdABhAGkAbABzAFUAcABkAGEAdABlAC4AaQBkAGwADQAKACAAIABbADEANwAwAC8AMQAwADMA
NwBdACAAUABhAHkAbQBlAG4AdABJAHQAZQBtAC4AaQBkAGwADQAKACAAIABbADEANwAxAC8AMQAw
ADMANwBdACAAUABhAHkAbQBlAG4AdABNAGUAdABoAG8AZABDAGgAYQBuAGcAZQBFAHYAZQBuAHQA
LgBpAGQAbAANAAoAIAAgAFsAMQA3ADIALwAxADAAMwA3AF0AIABQAGEAeQBtAGUAbgB0AE0AZQB0
AGgAbwBkAEQAYQB0AGEALgBpAGQAbAANAAoAIAAgAFsAMQA3ADMALwAxADAAMwA3AF0AIABQAGEA
eQBtAGUAbgB0AE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAgAFsAMQA3ADQALwAxADAAMwA3
AF0AIABQAGEAeQBtAGUAbgB0AFIAZQBxAHUAZQBzAHQALgBpAGQAbAANAAoAIAAgAFsAMQA3ADUA
LwAxADAAMwA3AF0AIABQAGEAeQBtAGUAbgB0AFIAZQBxAHUAZQBzAHQAVQBwAGQAYQB0AGUARQB2
AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADEANwA2AC8AMQAwADMANwBdACAAUABhAHkAbQBlAG4A
dABSAGUAcQB1AGUAcwB0AFUAcABkAGEAdABlAEUAdgBlAG4AdABJAG4AaQB0AC4AaQBkAGwADQAK
ACAAIABbADEANwA3AC8AMQAwADMANwBdACAAUABhAHkAbQBlAG4AdABSAGUAcwBwAG8AbgBzAGUA
LgBpAGQAbAANAAoAIAAgAFsAMQA3ADgALwAxADAAMwA3AF0AIABQAGEAeQBtAGUAbgB0AFMAaABp
AHAAcABpAG4AZwBPAHAAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwAxADcAOQAvADEAMAAzADcA
XQAgAFAAYQB5AG0AZQBuAHQAUwBoAGkAcABwAGkAbgBnAFQAeQBwAGUALgBpAGQAbAANAAoAIAAg
AFsAMQA4ADAALwAxADAAMwA3AF0AIABQAGEAeQBtAGUAbgB0AFYAYQBsAGkAZABhAHQAaQBvAG4A
RQByAHIAbwByAHMALgBpAGQAbAANAAoAIAAgAFsAMQA4ADEALwAxADAAMwA3AF0AIABEAG8AYwB1
AG0AZQBuAHQAUABpAGMAdAB1AHIAZQBJAG4AUABpAGMAdAB1AHIAZQAuAGkAZABsAA0ACgAgACAA
WwAxADgAMgAvADEAMAAzADcAXQAgAEUAbgB0AGUAcgBQAGkAYwB0AHUAcgBlAEkAbgBQAGkAYwB0
AHUAcgBlAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwAxADgAMwAvADEAMAAzADcAXQAgAEgA
VABNAEwAVgBpAGQAZQBvAEUAbABlAG0AZQBuAHQAUABpAGMAdAB1AHIAZQBJAG4AUABpAGMAdAB1
AHIAZQAuAGkAZABsAA0ACgAgACAAWwAxADgANAAvADEAMAAzADcAXQAgAFAAaQBjAHQAdQByAGUA
SQBuAFAAaQBjAHQAdQByAGUAVwBpAG4AZABvAHcALgBpAGQAbAANAAoAIAAgAFsAMQA4ADUALwAx
ADAAMwA3AF0AIABSAGUAbQBvAHQAZQBQAGwAYQB5AGIAYQBjAGsALgBpAGQAbAANAAoAIAAgAFsA
MQA4ADYALwAxADAAMwA3AF0AIABSAGUAbQBvAHQAZQBQAGwAYQB5AGIAYQBjAGsAQQB2AGEAaQBs
AGEAYgBpAGwAaQB0AHkAQwBhAGwAbABiAGEAYwBrAC4AaQBkAGwADQAKACAAIABbADEAOAA3AC8A
MQAwADMANwBdACAARABPAE0AVwBpAG4AZABvAHcAUwBwAGUAZQBjAGgAUwB5AG4AdABoAGUAcwBp
AHMALgBpAGQAbAANAAoAIAAgAFsAMQA4ADgALwAxADAAMwA3AF0AIABTAHAAZQBlAGMAaABTAHkA
bgB0AGgAZQBzAGkAcwAuAGkAZABsAA0ACgAgACAAWwAxADgAOQAvADEAMAAzADcAXQAgAFMAcABl
AGUAYwBoAFMAeQBuAHQAaABlAHMAaQBzAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwAxADkA
MAAvADEAMAAzADcAXQAgAFMAcABlAGUAYwBoAFMAeQBuAHQAaABlAHMAaQBzAFUAdAB0AGUAcgBh
AG4AYwBlAC4AaQBkAGwADQAKACAAIABbADEAOQAxAC8AMQAwADMANwBdACAAUwBwAGUAZQBjAGgA
UwB5AG4AdABoAGUAcwBpAHMAVgBvAGkAYwBlAC4AaQBkAGwADQAKACAAIABbADEAOQAyAC8AMQAw
ADMANwBdACAAQgB5AHQAZQBMAGUAbgBnAHQAaABRAHUAZQB1AGkAbgBnAFMAdAByAGEAdABlAGcA
eQAuAGkAZABsAA0ACgAgACAAWwAxADkAMwAvADEAMAAzADcAXQAgAEMAbwB1AG4AdABRAHUAZQB1
AGkAbgBnAFMAdAByAGEAdABlAGcAeQAuAGkAZABsAA0ACgAgACAAWwAxADkANAAvADEAMAAzADcA
XQAgAFIAZQBhAGQAYQBiAGwAZQBCAHkAdABlAFMAdAByAGUAYQBtAEMAbwBuAHQAcgBvAGwAbABl
AHIALgBpAGQAbAANAAoAIAAgAFsAMQA5ADUALwAxADAAMwA3AF0AIABSAGUAYQBkAGEAYgBsAGUA
UwB0AHIAZQBhAG0ALgBpAGQAbAANAAoAIAAgAFsAMQA5ADYALwAxADAAMwA3AF0AIABSAGUAYQBk
AGEAYgBsAGUAUwB0AHIAZQBhAG0AQgBZAE8AQgBSAGUAYQBkAGUAcgAuAGkAZABsAA0ACgAgACAA
WwAxADkANwAvADEAMAAzADcAXQAgAFIAZQBhAGQAYQBiAGwAZQBTAHQAcgBlAGEAbQBCAFkATwBC
AFIAZQBxAHUAZQBzAHQALgBpAGQAbAANAAoAIAAgAFsAMQA5ADgALwAxADAAMwA3AF0AIABSAGUA
YQBkAGEAYgBsAGUAUwB0AHIAZQBhAG0ARABlAGYAYQB1AGwAdABDAG8AbgB0AHIAbwBsAGwAZQBy
AC4AaQBkAGwADQAKACAAIABbADEAOQA5AC8AMQAwADMANwBdACAAUgBlAGEAZABhAGIAbABlAFMA
dAByAGUAYQBtAEQAZQBmAGEAdQBsAHQAUgBlAGEAZABlAHIALgBpAGQAbAANAAoAIAAgAFsAMgAw
ADAALwAxADAAMwA3AF0AIABSAGUAYQBkAGEAYgBsAGUAUwB0AHIAZQBhAG0AUwBpAG4AawAuAGkA
ZABsAA0ACgAgACAAWwAyADAAMQAvADEAMAAzADcAXQAgAFIAZQBhAGQAYQBiAGwAZQBTAHQAcgBl
AGEAbQBTAG8AdQByAGMAZQAuAGkAZABsAA0ACgAgACAAWwAyADAAMgAvADEAMAAzADcAXQAgAFcA
cgBpAHQAYQBiAGwAZQBTAHQAcgBlAGEAbQAuAGkAZABsAA0ACgAgACAAWwAyADAAMwAvADEAMAAz
ADcAXQAgAEEAbgBhAGwAeQBzAGUAcgBOAG8AZABlAC4AaQBkAGwADQAKACAAIABbADIAMAA0AC8A
MQAwADMANwBdACAAQQB1AGQAaQBvAEIAdQBmAGYAZQByAC4AaQBkAGwADQAKACAAIABbADIAMAA1
AC8AMQAwADMANwBdACAAQQB1AGQAaQBvAEIAdQBmAGYAZQByAEMAYQBsAGwAYgBhAGMAawAuAGkA
ZABsAA0ACgAgACAAWwAyADAANgAvADEAMAAzADcAXQAgAEEAdQBkAGkAbwBCAHUAZgBmAGUAcgBT
AG8AdQByAGMAZQBOAG8AZABlAC4AaQBkAGwADQAKACAAIABbADIAMAA3AC8AMQAwADMANwBdACAA
QQB1AGQAaQBvAEMAbwBuAHQAZQB4AHQALgBpAGQAbAANAAoAIAAgAFsAMgAwADgALwAxADAAMwA3
AF0AIABBAHUAZABpAG8AQwBvAG4AdABlAHgAdABMAGEAdABlAG4AYwB5AEMAYQB0AGUAZwBvAHIA
eQAuAGkAZABsAA0ACgAgACAAWwAyADAAOQAvADEAMAAzADcAXQAgAEEAdQBkAGkAbwBDAG8AbgB0
AGUAeAB0AE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAgAFsAMgAxADAALwAxADAAMwA3AF0A
IABBAHUAZABpAG8AQwBvAG4AdABlAHgAdABTAHQAYQB0AGUALgBpAGQAbAANAAoAIAAgAFsAMgAx
ADEALwAxADAAMwA3AF0AIABBAHUAZABpAG8ARABlAHMAdABpAG4AYQB0AGkAbwBuAE4AbwBkAGUA
LgBpAGQAbAANAAoAIAAgAFsAMgAxADIALwAxADAAMwA3AF0AIABBAHUAZABpAG8ATABpAHMAdABl
AG4AZQByAC4AaQBkAGwADQAKACAAIABbADIAMQAzAC8AMQAwADMANwBdACAAQQB1AGQAaQBvAE4A
bwBkAGUALgBpAGQAbAANAAoAIAAgAFsAMgAxADQALwAxADAAMwA3AF0AIABBAHUAZABpAG8ATgBv
AGQAZQBPAHAAdABpAG8AbgBzAC4AaQBkAGwADQAKACAAIABbADIAMQA1AC8AMQAwADMANwBdACAA
QQB1AGQAaQBvAFAAYQByAGEAbQAuAGkAZABsAA0ACgAgACAAWwAyADEANgAvADEAMAAzADcAXQAg
AEEAdQBkAGkAbwBQAHIAbwBjAGUAcwBzAGkAbgBnAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAA
WwAyADEANwAvADEAMAAzADcAXQAgAEEAdQBkAGkAbwBTAGMAaABlAGQAdQBsAGUAZABTAG8AdQBy
AGMAZQBOAG8AZABlAC4AaQBkAGwADQAKACAAIABbADIAMQA4AC8AMQAwADMANwBdACAAQgBhAHMA
ZQBBAHUAZABpAG8AQwBvAG4AdABlAHgAdAAuAGkAZABsAA0ACgAgACAAWwAyADEAOQAvADEAMAAz
ADcAXQAgAEIAaQBxAHUAYQBkAEYAaQBsAHQAZQByAE4AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsA
MgAyADAALwAxADAAMwA3AF0AIABDAGgAYQBuAG4AZQBsAEMAbwB1AG4AdABNAG8AZABlAC4AaQBk
AGwADQAKACAAIABbADIAMgAxAC8AMQAwADMANwBdACAAQwBoAGEAbgBuAGUAbABJAG4AdABlAHIA
cAByAGUAdABhAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAMgAyADIALwAxADAAMwA3AF0AIABD
AGgAYQBuAG4AZQBsAE0AZQByAGcAZQByAE4AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsAMgAyADMA
LwAxADAAMwA3AF0AIABDAGgAYQBuAG4AZQBsAE0AZQByAGcAZQByAE8AcAB0AGkAbwBuAHMALgBp
AGQAbAANAAoAIAAgAFsAMgAyADQALwAxADAAMwA3AF0AIABDAGgAYQBuAG4AZQBsAFMAcABsAGkA
dAB0AGUAcgBOAG8AZABlAC4AaQBkAGwADQAKACAAIABbADIAMgA1AC8AMQAwADMANwBdACAAQwBo
AGEAbgBuAGUAbABTAHAAbABpAHQAdABlAHIATwBwAHQAaQBvAG4AcwAuAGkAZABsAA0ACgAgACAA
WwAyADIANgAvADEAMAAzADcAXQAgAEMAbwBuAHYAbwBsAHYAZQByAE4AbwBkAGUALgBpAGQAbAAN
AAoAIAAgAFsAMgAyADcALwAxADAAMwA3AF0AIABEAGUAbABhAHkATgBvAGQAZQAuAGkAZABsAA0A
CgAgACAAWwAyADIAOAAvADEAMAAzADcAXQAgAEQAaQBzAHQAYQBuAGMAZQBNAG8AZABlAGwAVAB5
AHAAZQAuAGkAZABsAA0ACgAgACAAWwAyADIAOQAvADEAMAAzADcAXQAgAEQAeQBuAGEAbQBpAGMA
cwBDAG8AbQBwAHIAZQBzAHMAbwByAE4AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsAMgAzADAALwAx
ADAAMwA3AF0AIABHAGEAaQBuAE4AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsAMgAzADEALwAxADAA
MwA3AF0AIABNAGUAZABpAGEARQBsAGUAbQBlAG4AdABBAHUAZABpAG8AUwBvAHUAcgBjAGUATgBv
AGQAZQAuAGkAZABsAA0ACgAgACAAWwAyADMAMgAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBTAHQA
cgBlAGEAbQBBAHUAZABpAG8ARABlAHMAdABpAG4AYQB0AGkAbwBuAE4AbwBkAGUALgBpAGQAbAAN
AAoAIAAgAFsAMgAzADMALwAxADAAMwA3AF0AIABNAGUAZABpAGEAUwB0AHIAZQBhAG0AQQB1AGQA
aQBvAFMAbwB1AHIAYwBlAE4AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsAMgAzADQALwAxADAAMwA3
AF0AIABPAGYAZgBsAGkAbgBlAEEAdQBkAGkAbwBDAG8AbQBwAGwAZQB0AGkAbwBuAEUAdgBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwAyADMANQAvADEAMAAzADcAXQAgAE8AZgBmAGwAaQBuAGUAQQB1
AGQAaQBvAEMAbwBuAHQAZQB4AHQALgBpAGQAbAANAAoAIAAgAFsAMgAzADYALwAxADAAMwA3AF0A
IABPAGYAZgBsAGkAbgBlAEEAdQBkAGkAbwBDAG8AbgB0AGUAeAB0AE8AcAB0AGkAbwBuAHMALgBp
AGQAbAANAAoAIAAgAFsAMgAzADcALwAxADAAMwA3AF0AIABPAHMAYwBpAGwAbABhAHQAbwByAE4A
bwBkAGUALgBpAGQAbAANAAoAIAAgAFsAMgAzADgALwAxADAAMwA3AF0AIABPAHMAYwBpAGwAbABh
AHQAbwByAE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAgAFsAMgAzADkALwAxADAAMwA3AF0A
IABPAHMAYwBpAGwAbABhAHQAbwByAFQAeQBwAGUALgBpAGQAbAANAAoAIAAgAFsAMgA0ADAALwAx
ADAAMwA3AF0AIABQAGEAbgBuAGUAcgBOAG8AZABlAC4AaQBkAGwADQAKACAAIABbADIANAAxAC8A
MQAwADMANwBdACAAUABhAG4AbgBlAHIATwBwAHQAaQBvAG4AcwAuAGkAZABsAA0ACgAgACAAWwAy
ADQAMgAvADEAMAAzADcAXQAgAFAAYQBuAG4AaQBuAGcATQBvAGQAZQBsAFQAeQBwAGUALgBpAGQA
bAANAAoAIAAgAFsAMgA0ADMALwAxADAAMwA3AF0AIABQAGUAcgBpAG8AZABpAGMAVwBhAHYAZQAu
AGkAZABsAA0ACgAgACAAWwAyADQANAAvADEAMAAzADcAXQAgAFAAZQByAGkAbwBkAGkAYwBXAGEA
dgBlAEMAbwBuAHMAdAByAGEAaQBuAHQAcwAuAGkAZABsAA0ACgAgACAAWwAyADQANQAvADEAMAAz
ADcAXQAgAFAAZQByAGkAbwBkAGkAYwBXAGEAdgBlAE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoA
IAAgAFsAMgA0ADYALwAxADAAMwA3AF0AIABTAGMAcgBpAHAAdABQAHIAbwBjAGUAcwBzAG8AcgBO
AG8AZABlAC4AaQBkAGwADQAKACAAIABbADIANAA3AC8AMQAwADMANwBdACAAVwBhAHYAZQBTAGgA
YQBwAGUAcgBOAG8AZABlAC4AaQBkAGwADQAKACAAIABbADIANAA4AC8AMQAwADMANwBdACAAVwBl
AGIASwBpAHQAQQB1AGQAaQBvAEMAbwBuAHQAZQB4AHQALgBpAGQAbAANAAoAIAAgAFsAMgA0ADkA
LwAxADAAMwA3AF0AIABXAGUAYgBLAGkAdABBAHUAZABpAG8AUABhAG4AbgBlAHIATgBvAGQAZQAu
AGkAZABsAA0ACgAgACAAWwAyADUAMAAvADEAMAAzADcAXQAgAFcAZQBiAEsAaQB0AE8AZgBmAGwA
aQBuAGUAQQB1AGQAaQBvAEMAbwBuAHQAZQB4AHQALgBpAGQAbAANAAoAIAAgAFsAMgA1ADEALwAx
ADAAMwA3AF0AIABXAGUAYgBLAGkAdABPAHMAYwBpAGwAbABhAHQAbwByAE4AbwBkAGUALgBpAGQA
bAANAAoAIAAgAFsAMgA1ADIALwAxADAAMwA3AF0AIABBAHQAdABlAHMAdABhAHQAaQBvAG4AQwBv
AG4AdgBlAHkAYQBuAGMAZQBQAHIAZQBmAGUAcgBlAG4AYwBlAC4AaQBkAGwADQAKACAAIABbADIA
NQAzAC8AMQAwADMANwBdACAAQQB1AHQAaABlAG4AdABpAGMAYQB0AGkAbwBuAEUAeAB0AGUAbgBz
AGkAbwBuAHMAQwBsAGkAZQBuAHQASQBuAHAAdQB0AHMALgBpAGQAbAANAAoAIAAgAFsAMgA1ADQA
LwAxADAAMwA3AF0AIABBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4ARQB4AHQAZQBuAHMAaQBv
AG4AcwBDAGwAaQBlAG4AdABPAHUAdABwAHUAdABzAC4AaQBkAGwADQAKACAAIABbADIANQA1AC8A
MQAwADMANwBdACAAQQB1AHQAaABlAG4AdABpAGMAYQB0AG8AcgBBAHMAcwBlAHIAdABpAG8AbgBS
AGUAcwBwAG8AbgBzAGUALgBpAGQAbAANAAoAIAAgAFsAMgA1ADYALwAxADAAMwA3AF0AIABBAHUA
dABoAGUAbgB0AGkAYwBhAHQAbwByAEEAdAB0AGUAcwB0AGEAdABpAG8AbgBSAGUAcwBwAG8AbgBz
AGUALgBpAGQAbAANAAoAIAAgAFsAMgA1ADcALwAxADAAMwA3AF0AIABBAHUAdABoAGUAbgB0AGkA
YwBhAHQAbwByAFIAZQBzAHAAbwBuAHMAZQAuAGkAZABsAA0ACgAgACAAWwAyADUAOAAvADEAMAAz
ADcAXQAgAEEAdQB0AGgAZQBuAHQAaQBjAGEAdABvAHIAVAByAGEAbgBzAHAAbwByAHQALgBpAGQA
bAANAAoAIAAgAFsAMgA1ADkALwAxADAAMwA3AF0AIABQAHUAYgBsAGkAYwBLAGUAeQBDAHIAZQBk
AGUAbgB0AGkAYQBsAC4AaQBkAGwADQAKACAAIABbADIANgAwAC8AMQAwADMANwBdACAAUAB1AGIA
bABpAGMASwBlAHkAQwByAGUAZABlAG4AdABpAGEAbABDAHIAZQBhAHQAaQBvAG4ATwBwAHQAaQBv
AG4AcwAuAGkAZABsAA0ACgAgACAAWwAyADYAMQAvADEAMAAzADcAXQAgAFAAdQBiAGwAaQBjAEsA
ZQB5AEMAcgBlAGQAZQBuAHQAaQBhAGwARABlAHMAYwByAGkAcAB0AG8AcgAuAGkAZABsAA0ACgAg
ACAAWwAyADYAMgAvADEAMAAzADcAXQAgAFAAdQBiAGwAaQBjAEsAZQB5AEMAcgBlAGQAZQBuAHQA
aQBhAGwAUgBlAHEAdQBlAHMAdABPAHAAdABpAG8AbgBzAC4AaQBkAGwADQAKACAAIABbADIANgAz
AC8AMQAwADMANwBdACAAUAB1AGIAbABpAGMASwBlAHkAQwByAGUAZABlAG4AdABpAGEAbABUAHkA
cABlAC4AaQBkAGwADQAKACAAIABbADIANgA0AC8AMQAwADMANwBdACAAVQBzAGUAcgBWAGUAcgBp
AGYAaQBjAGEAdABpAG8AbgBSAGUAcQB1AGkAcgBlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
MgA2ADUALwAxADAAMwA3AF0AIABEAE8ATQBXAGkAbgBkAG8AdwBXAGUAYgBEAGEAdABhAGIAYQBz
AGUALgBpAGQAbAANAAoAIAAgAFsAMgA2ADYALwAxADAAMwA3AF0AIABEAGEAdABhAGIAYQBzAGUA
LgBpAGQAbAANAAoAIAAgAFsAMgA2ADcALwAxADAAMwA3AF0AIABEAGEAdABhAGIAYQBzAGUAQwBh
AGwAbABiAGEAYwBrAC4AaQBkAGwADQAKACAAIABbADIANgA4AC8AMQAwADMANwBdACAAUwBRAEwA
RQByAHIAbwByAC4AaQBkAGwADQAKACAAIABbADIANgA5AC8AMQAwADMANwBdACAAUwBRAEwAUgBl
AHMAdQBsAHQAUwBlAHQALgBpAGQAbAANAAoAIAAgAFsAMgA3ADAALwAxADAAMwA3AF0AIABTAFEA
TABSAGUAcwB1AGwAdABTAGUAdABSAG8AdwBMAGkAcwB0AC4AaQBkAGwADQAKACAAIABbADIANwAx
AC8AMQAwADMANwBdACAAUwBRAEwAUwB0AGEAdABlAG0AZQBuAHQAQwBhAGwAbABiAGEAYwBrAC4A
aQBkAGwADQAKACAAIABbADIANwAyAC8AMQAwADMANwBdACAAUwBRAEwAUwB0AGEAdABlAG0AZQBu
AHQARQByAHIAbwByAEMAYQBsAGwAYgBhAGMAawAuAGkAZABsAA0ACgAgACAAWwAyADcAMwAvADEA
MAAzADcAXQAgAFMAUQBMAFQAcgBhAG4AcwBhAGMAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwAy
ADcANAAvADEAMAAzADcAXQAgAFMAUQBMAFQAcgBhAG4AcwBhAGMAdABpAG8AbgBDAGEAbABsAGIA
YQBjAGsALgBpAGQAbAANAAoAIAAgAFsAMgA3ADUALwAxADAAMwA3AF0AIABTAFEATABUAHIAYQBu
AHMAYQBjAHQAaQBvAG4ARQByAHIAbwByAEMAYQBsAGwAYgBhAGMAawAuAGkAZABsAA0ACgAgACAA
WwAyADcANgAvADEAMAAzADcAXQAgAE4AYQB2AGkAZwBhAHQAbwByAFcAZQBiAEQAcgBpAHYAZQBy
AC4AaQBkAGwADQAKACAAIABbADIANwA3AC8AMQAwADMANwBdACAARwBQAFUAQgBpAG4AZABHAHIA
bwB1AHAATABhAHkAbwB1AHQAQgBpAG4AZABpAG4AZwAuAGkAZABsAA0ACgAgACAAWwAyADcAOAAv
ADEAMAAzADcAXQAgAEcAUABVAEIAaQBuAGQARwByAG8AdQBwAEwAYQB5AG8AdQB0AEQAZQBzAGMA
cgBpAHAAdABvAHIALgBpAGQAbAANAAoAIAAgAFsAMgA3ADkALwAxADAAMwA3AF0AIABHAFAAVQBC
AGwAZQBuAGQARABlAHMAYwByAGkAcAB0AG8AcgAuAGkAZABsAA0ACgAgACAAWwAyADgAMAAvADEA
MAAzADcAXQAgAEcAUABVAEIAdQBmAGYAZQByAEQAZQBzAGMAcgBpAHAAdABvAHIALgBpAGQAbAAN
AAoAIAAgAFsAMgA4ADEALwAxADAAMwA3AF0AIABHAFAAVQBCAHUAZgBmAGUAcgBVAHMAYQBnAGUA
LgBpAGQAbAANAAoAIAAgAFsAMgA4ADIALwAxADAAMwA3AF0AIABHAFAAVQBDAGEAbgB2AGEAcwBD
AG8AbgB0AGUAeAB0AC4AaQBkAGwADQAKACAAIABbADIAOAAzAC8AMQAwADMANwBdACAARwBQAFUA
QwBvAGwAbwByAC4AaQBkAGwADQAKACAAIABbADIAOAA0AC8AMQAwADMANwBdACAARwBQAFUAQwBv
AGwAbwByAFMAdABhAHQAZQBEAGUAcwBjAHIAaQBwAHQAbwByAC4AaQBkAGwADQAKACAAIABbADIA
OAA1AC8AMQAwADMANwBdACAARwBQAFUAQwBvAGwAbwByAFcAcgBpAHQAZQAuAGkAZABsAA0ACgAg
ACAAWwAyADgANgAvADEAMAAzADcAXQAgAEcAUABVAEMAbwBtAHAAYQByAGUARgB1AG4AYwB0AGkA
bwBuAC4AaQBkAGwADQAKACAAIABbADIAOAA3AC8AMQAwADMANwBdACAARwBQAFUARABlAHAAdABo
AFMAdABlAG4AYwBpAGwAUwB0AGEAdABlAEQAZQBzAGMAcgBpAHAAdABvAHIALgBpAGQAbAANAAoA
IAAgAFsAMgA4ADgALwAxADAAMwA3AF0AIABHAFAAVQBFAHIAcgBvAHIARgBpAGwAdABlAHIALgBp
AGQAbAANAAoAIAAgAFsAMgA4ADkALwAxADAAMwA3AF0AIABHAFAAVQBFAHgAdABlAG4AdAAzAEQA
LgBpAGQAbAANAAoAIAAgAFsAMgA5ADAALwAxADAAMwA3AF0AIABHAFAAVQBMAG8AYQBkAE8AcAAu
AGkAZABsAA0ACgAgACAAWwAyADkAMQAvADEAMAAzADcAXQAgAEcAUABVAE8AcgBpAGcAaQBuADMA
RAAuAGkAZABsAA0ACgAgACAAWwAyADkAMgAvADEAMAAzADcAXQAgAEcAUABVAE8AdQB0AE8AZgBN
AGUAbQBvAHIAeQBFAHIAcgBvAHIALgBpAGQAbAANAAoAIAAgAFsAMgA5ADMALwAxADAAMwA3AF0A
IABHAFAAVQBSAGUAcQB1AGUAcwB0AEEAZABhAHAAdABlAHIATwBwAHQAaQBvAG4AcwAuAGkAZABs
AA0ACgAgACAAWwAyADkANAAvADEAMAAzADcAXQAgAEcAUABVAFMAYQBtAHAAbABlAHIARABlAHMA
YwByAGkAcAB0AG8AcgAuAGkAZABsAA0ACgAgACAAWwAyADkANQAvADEAMAAzADcAXQAgAEcAUABV
AFMAaABhAGQAZQByAFMAdABhAGcAZQAuAGkAZABsAA0ACgAgACAAWwAyADkANgAvADEAMAAzADcA
XQAgAEcAUABVAFMAdABvAHIAZQBPAHAALgBpAGQAbAANAAoAIAAgAFsAMgA5ADcALwAxADAAMwA3
AF0AIABHAFAAVQBUAGUAeAB0AHUAcgBlAEQAZQBzAGMAcgBpAHAAdABvAHIALgBpAGQAbAANAAoA
IAAgAFsAMgA5ADgALwAxADAAMwA3AF0AIABHAFAAVQBUAGUAeAB0AHUAcgBlAEYAbwByAG0AYQB0
AC4AaQBkAGwADQAKACAAIABbADIAOQA5AC8AMQAwADMANwBdACAARwBQAFUAVABlAHgAdAB1AHIA
ZQBVAHMAYQBnAGUALgBpAGQAbAANAAoAIAAgAFsAMwAwADAALwAxADAAMwA3AF0AIABHAFAAVQBV
AG4AYwBhAHAAdAB1AHIAZQBkAEUAcgByAG8AcgBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
MwAwADEALwAxADAAMwA3AF0AIABHAFAAVQBWAGEAbABpAGQAYQB0AGkAbwBuAEUAcgByAG8AcgAu
AGkAZABsAA0ACgAgACAAWwAzADAAMgAvADEAMAAzADcAXQAgAEcAUABVAFYAZQByAHQAZQB4AEEA
dAB0AHIAaQBiAHUAdABlAEQAZQBzAGMAcgBpAHAAdABvAHIALgBpAGQAbAANAAoAIAAgAFsAMwAw
ADMALwAxADAAMwA3AF0AIABHAFAAVQBWAGUAcgB0AGUAeABCAHUAZgBmAGUAcgBEAGUAcwBjAHIA
aQBwAHQAbwByAC4AaQBkAGwADQAKACAAIABbADMAMAA0AC8AMQAwADMANwBdACAARwBQAFUAVgBl
AHIAdABlAHgASQBuAHAAdQB0AEQAZQBzAGMAcgBpAHAAdABvAHIALgBpAGQAbAANAAoAIAAgAFsA
MwAwADUALwAxADAAMwA3AF0AIABOAGEAdgBpAGcAYQB0AG8AcgBHAFAAVQAuAGkAZABsAA0ACgAg
ACAAWwAzADAANgAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAC4AaQBkAGwADQAKACAAIABbADMA
MAA3AC8AMQAwADMANwBdACAAVwBlAGIARwBQAFUAQQBkAGEAcAB0AGUAcgAuAGkAZABsAA0ACgAg
ACAAWwAzADAAOAAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAEIAaQBuAGQARwByAG8AdQBwAC4A
aQBkAGwADQAKACAAIABbADMAMAA5AC8AMQAwADMANwBdACAAVwBlAGIARwBQAFUAQgBpAG4AZABH
AHIAbwB1AHAAQgBpAG4AZABpAG4AZwAuAGkAZABsAA0ACgAgACAAWwAzADEAMAAvADEAMAAzADcA
XQAgAFcAZQBiAEcAUABVAEIAaQBuAGQARwByAG8AdQBwAEQAZQBzAGMAcgBpAHAAdABvAHIALgBp
AGQAbAANAAoAIAAgAFsAMwAxADEALwAxADAAMwA3AF0AIABXAGUAYgBHAFAAVQBCAGkAbgBkAEcA
cgBvAHUAcABMAGEAeQBvAHUAdAAuAGkAZABsAA0ACgAgACAAWwAzADEAMgAvADEAMAAzADcAXQAg
AFcAZQBiAEcAUABVAEIAdQBmAGYAZQByAC4AaQBkAGwADQAKACAAIABbADMAMQAzAC8AMQAwADMA
NwBdACAAVwBlAGIARwBQAFUAQgB1AGYAZgBlAHIAQgBpAG4AZABpAG4AZwAuAGkAZABsAA0ACgAg
ACAAWwAzADEANAAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAEMAbwBtAG0AYQBuAGQAQgB1AGYA
ZgBlAHIALgBpAGQAbAANAAoAIAAgAFsAMwAxADUALwAxADAAMwA3AF0AIABXAGUAYgBHAFAAVQBD
AG8AbQBtAGEAbgBkAEUAbgBjAG8AZABlAHIALgBpAGQAbAANAAoAIAAgAFsAMwAxADYALwAxADAA
MwA3AF0AIABXAGUAYgBHAFAAVQBDAG8AbQBwAHUAdABlAFAAYQBzAHMARQBuAGMAbwBkAGUAcgAu
AGkAZABsAA0ACgAgACAAWwAzADEANwAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAEMAbwBtAHAA
dQB0AGUAUABpAHAAZQBsAGkAbgBlAC4AaQBkAGwADQAKACAAIABbADMAMQA4AC8AMQAwADMANwBd
ACAAVwBlAGIARwBQAFUAQwBvAG0AcAB1AHQAZQBQAGkAcABlAGwAaQBuAGUARABlAHMAYwByAGkA
cAB0AG8AcgAuAGkAZABsAA0ACgAgACAAWwAzADEAOQAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABV
AEQAZQB2AGkAYwBlAC4AaQBkAGwADQAKACAAIABbADMAMgAwAC8AMQAwADMANwBdACAAVwBlAGIA
RwBQAFUARABlAHYAaQBjAGUARQByAHIAbwByAFMAYwBvAHAAZQBzAC4AaQBkAGwADQAKACAAIABb
ADMAMgAxAC8AMQAwADMANwBdACAAVwBlAGIARwBQAFUARABlAHYAaQBjAGUARQB2AGUAbgB0AEgA
YQBuAGQAbABlAHIALgBpAGQAbAANAAoAIAAgAFsAMwAyADIALwAxADAAMwA3AF0AIABXAGUAYgBH
AFAAVQBQAGkAcABlAGwAaQBuAGUARABlAHMAYwByAGkAcAB0AG8AcgBCAGEAcwBlAC4AaQBkAGwA
DQAKACAAIABbADMAMgAzAC8AMQAwADMANwBdACAAVwBlAGIARwBQAFUAUABpAHAAZQBsAGkAbgBl
AEwAYQB5AG8AdQB0AC4AaQBkAGwADQAKACAAIABbADMAMgA0AC8AMQAwADMANwBdACAAVwBlAGIA
RwBQAFUAUABpAHAAZQBsAGkAbgBlAEwAYQB5AG8AdQB0AEQAZQBzAGMAcgBpAHAAdABvAHIALgBp
AGQAbAANAAoAIAAgAFsAMwAyADUALwAxADAAMwA3AF0AIABXAGUAYgBHAFAAVQBQAHIAbwBnAHIA
YQBtAG0AYQBiAGwAZQBTAHQAYQBnAGUARABlAHMAYwByAGkAcAB0AG8AcgAuAGkAZABsAA0ACgAg
ACAAWwAzADIANgAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAFAAcgBvAGcAcgBhAG0AbQBhAGIA
bABlAFAAYQBzAHMARQBuAGMAbwBkAGUAcgAuAGkAZABsAA0ACgAgACAAWwAzADIANwAvADEAMAAz
ADcAXQAgAFcAZQBiAEcAUABVAFEAdQBlAHUAZQAuAGkAZABsAA0ACgAgACAAWwAzADIAOAAvADEA
MAAzADcAXQAgAFcAZQBiAEcAUABVAFIAZQBuAGQAZQByAFAAYQBzAHMARABlAHMAYwByAGkAcAB0
AG8AcgAuAGkAZABsAA0ACgAgACAAWwAzADIAOQAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAFIA
ZQBuAGQAZQByAFAAYQBzAHMARQBuAGMAbwBkAGUAcgAuAGkAZABsAA0ACgAgACAAWwAzADMAMAAv
ADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAFIAZQBuAGQAZQByAFAAaQBwAGUAbABpAG4AZQAuAGkA
ZABsAA0ACgAgACAAWwAzADMAMQAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAFIAZQBuAGQAZQBy
AFAAaQBwAGUAbABpAG4AZQBEAGUAcwBjAHIAaQBwAHQAbwByAC4AaQBkAGwADQAKACAAIABbADMA
MwAyAC8AMQAwADMANwBdACAAVwBlAGIARwBQAFUAUwBhAG0AcABsAGUAcgAuAGkAZABsAA0ACgAg
ACAAWwAzADMAMwAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAFMAaABhAGQAZQByAE0AbwBkAHUA
bABlAC4AaQBkAGwADQAKACAAIABbADMAMwA0AC8AMQAwADMANwBdACAAVwBlAGIARwBQAFUAUwBo
AGEAZABlAHIATQBvAGQAdQBsAGUARABlAHMAYwByAGkAcAB0AG8AcgAuAGkAZABsAA0ACgAgACAA
WwAzADMANQAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAFMAdwBhAHAAQwBoAGEAaQBuAC4AaQBk
AGwADQAKACAAIABbADMAMwA2AC8AMQAwADMANwBdACAAVwBlAGIARwBQAFUAVABlAHgAdAB1AHIA
ZQAuAGkAZABsAA0ACgAgACAAWwAzADMANwAvADEAMAAzADcAXQAgAFcAZQBiAEcAUABVAFQAZQB4
AHQAdQByAGUAVgBpAGUAdwAuAGkAZABsAA0ACgAgACAAWwAzADMAOAAvADEAMAAzADcAXQAgAFcA
bwByAGsAZQByAE4AYQB2AGkAZwBhAHQAbwByAEcAUABVAC4AaQBkAGwADQAKACAAIABbADMAMwA5
AC8AMQAwADMANwBdACAAQwBsAG8AcwBlAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwAzADQA
MAAvADEAMAAzADcAXQAgAFcAZQBiAFMAbwBjAGsAZQB0AC4AaQBkAGwADQAKACAAIABbADMANAAx
AC8AMQAwADMANwBdACAAQQBjAGMAZQBzAHMAaQBiAGkAbABpAHQAeQBSAG8AbABlAC4AaQBkAGwA
DQAKACAAIABbADMANAAyAC8AMQAwADMANwBdACAAQQByAGkAYQBBAHQAdAByAGkAYgB1AHQAZQBz
AC4AaQBkAGwADQAKACAAIABbADMANAAzAC8AMQAwADMANwBdACAAQQBuAGkAbQBhAHQAYQBiAGwA
ZQAuAGkAZABsAA0ACgAgACAAWwAzADQANAAvADEAMAAzADcAXQAgAEEAbgBpAG0AYQB0AGkAbwBu
AEUAZgBmAGUAYwB0AC4AaQBkAGwADQAKACAAIABbADMANAA1AC8AMQAwADMANwBdACAARQBmAGYA
ZQBjAHQAVABpAG0AaQBuAGcALgBpAGQAbAANAAoAIAAgAFsAMwA0ADYALwAxADAAMwA3AF0AIABB
AG4AaQBtAGEAdABpAG8AbgBQAGwAYQB5AGIAYQBjAGsARQB2AGUAbgB0AC4AaQBkAGwADQAKACAA
IABbADMANAA3AC8AMQAwADMANwBdACAAQQBuAGkAbQBhAHQAaQBvAG4AUABsAGEAeQBiAGEAYwBr
AEUAdgBlAG4AdABJAG4AaQB0AC4AaQBkAGwADQAKACAAIABbADMANAA4AC8AMQAwADMANwBdACAA
QQBuAGkAbQBhAHQAaQBvAG4AVABpAG0AZQBsAGkAbgBlAC4AaQBkAGwADQAKACAAIABbADMANAA5
AC8AMQAwADMANwBdACAAQwBTAFMAQQBuAGkAbQBhAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsA
MwA1ADAALwAxADAAMwA3AF0AIABDAFMAUwBUAHIAYQBuAHMAaQB0AGkAbwBuAC4AaQBkAGwADQAK
ACAAIABbADMANQAxAC8AMQAwADMANwBdACAAQwBvAG0AcABvAHMAaQB0AGUATwBwAGUAcgBhAHQA
aQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAMwA1ADIALwAxADAAMwA3AF0AIABDAG8AbQBwAG8AcwBp
AHQAZQBPAHAAZQByAGEAdABpAG8AbgBPAHIAQQB1AHQAbwAuAGkAZABsAA0ACgAgACAAWwAzADUA
MwAvADEAMAAzADcAXQAgAEMAbwBtAHAAdQB0AGUAZABFAGYAZgBlAGMAdABUAGkAbQBpAG4AZwAu
AGkAZABsAA0ACgAgACAAWwAzADUANAAvADEAMAAzADcAXQAgAEQAbwBjAHUAbQBlAG4AdABUAGkA
bQBlAGwAaQBuAGUALgBpAGQAbAANAAoAIAAgAFsAMwA1ADUALwAxADAAMwA3AF0AIABEAG8AYwB1
AG0AZQBuAHQAVABpAG0AZQBsAGkAbgBlAE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAgAFsA
MwA1ADYALwAxADAAMwA3AF0AIABGAGkAbABsAE0AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsAMwA1
ADcALwAxADAAMwA3AF0AIABHAGUAdABBAG4AaQBtAGEAdABpAG8AbgBzAE8AcAB0AGkAbwBuAHMA
LgBpAGQAbAANAAoAIAAgAFsAMwA1ADgALwAxADAAMwA3AF0AIABJAHQAZQByAGEAdABpAG8AbgBD
AG8AbQBwAG8AcwBpAHQAZQBPAHAAZQByAGEAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwAzADUA
OQAvADEAMAAzADcAXQAgAEsAZQB5AGYAcgBhAG0AZQBBAG4AaQBtAGEAdABpAG8AbgBPAHAAdABp
AG8AbgBzAC4AaQBkAGwADQAKACAAIABbADMANgAwAC8AMQAwADMANwBdACAASwBlAHkAZgByAGEA
bQBlAEUAZgBmAGUAYwB0AC4AaQBkAGwADQAKACAAIABbADMANgAxAC8AMQAwADMANwBdACAASwBl
AHkAZgByAGEAbQBlAEUAZgBmAGUAYwB0AE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAgAFsA
MwA2ADIALwAxADAAMwA3AF0AIABPAHAAdABpAG8AbgBhAGwARQBmAGYAZQBjAHQAVABpAG0AaQBu
AGcALgBpAGQAbAANAAoAIAAgAFsAMwA2ADMALwAxADAAMwA3AF0AIABQAGwAYQB5AGIAYQBjAGsA
RABpAHIAZQBjAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAMwA2ADQALwAxADAAMwA3AF0AIABX
AGUAYgBBAG4AaQBtAGEAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwAzADYANQAvADEAMAAzADcA
XQAgAEMAcgB5AHAAdABvAEEAbABnAG8AcgBpAHQAaABtAFAAYQByAGEAbQBlAHQAZQByAHMALgBp
AGQAbAANAAoAIAAgAFsAMwA2ADYALwAxADAAMwA3AF0AIABDAHIAeQBwAHQAbwBLAGUAeQAuAGkA
ZABsAA0ACgAgACAAWwAzADYANwAvADEAMAAzADcAXQAgAEMAcgB5AHAAdABvAEsAZQB5AFAAYQBp
AHIALgBpAGQAbAANAAoAIAAgAFsAMwA2ADgALwAxADAAMwA3AF0AIABDAHIAeQBwAHQAbwBLAGUA
eQBVAHMAYQBnAGUALgBpAGQAbAANAAoAIAAgAFsAMwA2ADkALwAxADAAMwA3AF0AIABKAHMAbwBu
AFcAZQBiAEsAZQB5AC4AaQBkAGwADQAKACAAIABbADMANwAwAC8AMQAwADMANwBdACAAUgBzAGEA
TwB0AGgAZQByAFAAcgBpAG0AZQBzAEkAbgBmAG8ALgBpAGQAbAANAAoAIAAgAFsAMwA3ADEALwAx
ADAAMwA3AF0AIABTAHUAYgB0AGwAZQBDAHIAeQBwAHQAbwAuAGkAZABsAA0ACgAgACAAWwAzADcA
MgAvADEAMAAzADcAXQAgAEMAcgB5AHAAdABvAEEAZQBzAEsAZQB5AEEAbABnAG8AcgBpAHQAaABt
AC4AaQBkAGwADQAKACAAIABbADMANwAzAC8AMQAwADMANwBdACAAQwByAHkAcAB0AG8ARQBjAEsA
ZQB5AEEAbABnAG8AcgBpAHQAaABtAC4AaQBkAGwADQAKACAAIABbADMANwA0AC8AMQAwADMANwBd
ACAAQwByAHkAcAB0AG8ASABtAGEAYwBLAGUAeQBBAGwAZwBvAHIAaQB0AGgAbQAuAGkAZABsAA0A
CgAgACAAWwAzADcANQAvADEAMAAzADcAXQAgAEMAcgB5AHAAdABvAEsAZQB5AEEAbABnAG8AcgBp
AHQAaABtAC4AaQBkAGwADQAKACAAIABbADMANwA2AC8AMQAwADMANwBdACAAQwByAHkAcAB0AG8A
UgBzAGEASABhAHMAaABlAGQASwBlAHkAQQBsAGcAbwByAGkAdABoAG0ALgBpAGQAbAANAAoAIAAg
AFsAMwA3ADcALwAxADAAMwA3AF0AIABDAHIAeQBwAHQAbwBSAHMAYQBLAGUAeQBBAGwAZwBvAHIA
aQB0AGgAbQAuAGkAZABsAA0ACgAgACAAWwAzADcAOAAvADEAMAAzADcAXQAgAEEAZQBzAEMAYgBj
AEMAZgBiAFAAYQByAGEAbQBzAC4AaQBkAGwADQAKACAAIABbADMANwA5AC8AMQAwADMANwBdACAA
QQBlAHMAQwB0AHIAUABhAHIAYQBtAHMALgBpAGQAbAANAAoAIAAgAFsAMwA4ADAALwAxADAAMwA3
AF0AIABBAGUAcwBHAGMAbQBQAGEAcgBhAG0AcwAuAGkAZABsAA0ACgAgACAAWwAzADgAMQAvADEA
MAAzADcAXQAgAEEAZQBzAEsAZQB5AFAAYQByAGEAbQBzAC4AaQBkAGwADQAKACAAIABbADMAOAAy
AC8AMQAwADMANwBdACAARQBjAEsAZQB5AFAAYQByAGEAbQBzAC4AaQBkAGwADQAKACAAIABbADMA
OAAzAC8AMQAwADMANwBdACAARQBjAGQAaABLAGUAeQBEAGUAcgBpAHYAZQBQAGEAcgBhAG0AcwAu
AGkAZABsAA0ACgAgACAAWwAzADgANAAvADEAMAAzADcAXQAgAEUAYwBkAHMAYQBQAGEAcgBhAG0A
cwAuAGkAZABsAA0ACgAgACAAWwAzADgANQAvADEAMAAzADcAXQAgAEgAawBkAGYAUABhAHIAYQBt
AHMALgBpAGQAbAANAAoAIAAgAFsAMwA4ADYALwAxADAAMwA3AF0AIABIAG0AYQBjAEsAZQB5AFAA
YQByAGEAbQBzAC4AaQBkAGwADQAKACAAIABbADMAOAA3AC8AMQAwADMANwBdACAAUABiAGsAZABm
ADIAUABhAHIAYQBtAHMALgBpAGQAbAANAAoAIAAgAFsAMwA4ADgALwAxADAAMwA3AF0AIABSAHMA
YQBIAGEAcwBoAGUAZABJAG0AcABvAHIAdABQAGEAcgBhAG0AcwAuAGkAZABsAA0ACgAgACAAWwAz
ADgAOQAvADEAMAAzADcAXQAgAFIAcwBhAEgAYQBzAGgAZQBkAEsAZQB5AEcAZQBuAFAAYQByAGEA
bQBzAC4AaQBkAGwADQAKACAAIABbADMAOQAwAC8AMQAwADMANwBdACAAUgBzAGEASwBlAHkARwBl
AG4AUABhAHIAYQBtAHMALgBpAGQAbAANAAoAIAAgAFsAMwA5ADEALwAxADAAMwA3AF0AIABSAHMA
YQBPAGEAZQBwAFAAYQByAGEAbQBzAC4AaQBkAGwADQAKACAAIABbADMAOQAyAC8AMQAwADMANwBd
ACAAUgBzAGEAUABzAHMAUABhAHIAYQBtAHMALgBpAGQAbAANAAoAIAAgAFsAMwA5ADMALwAxADAA
MwA3AF0AIABDAFMAUwBGAG8AbgB0AEYAYQBjAGUAUgB1AGwAZQAuAGkAZABsAA0ACgAgACAAWwAz
ADkANAAvADEAMAAzADcAXQAgAEMAUwBTAEkAbQBwAG8AcgB0AFIAdQBsAGUALgBpAGQAbAANAAoA
IAAgAFsAMwA5ADUALwAxADAAMwA3AF0AIABDAFMAUwBLAGUAeQBmAHIAYQBtAGUAUgB1AGwAZQAu
AGkAZABsAA0ACgAgACAAWwAzADkANgAvADEAMAAzADcAXQAgAEMAUwBTAEsAZQB5AGYAcgBhAG0A
ZQBzAFIAdQBsAGUALgBpAGQAbAANAAoAIAAgAFsAMwA5ADcALwAxADAAMwA3AF0AIABDAFMAUwBN
AGUAZABpAGEAUgB1AGwAZQAuAGkAZABsAA0ACgAgACAAWwAzADkAOAAvADEAMAAzADcAXQAgAEMA
UwBTAE4AYQBtAGUAcwBwAGEAYwBlAFIAdQBsAGUALgBpAGQAbAANAAoAIAAgAFsAMwA5ADkALwAx
ADAAMwA3AF0AIABDAFMAUwBQAGEAaQBuAHQAQwBhAGwAbABiAGEAYwBrAC4AaQBkAGwADQAKACAA
IABbADQAMAAwAC8AMQAwADMANwBdACAAQwBTAFMAUABhAGkAbgB0AFMAaQB6AGUALgBpAGQAbAAN
AAoAIAAgAFsANAAwADEALwAxADAAMwA3AF0AIABDAFMAUwBQAGEAZwBlAFIAdQBsAGUALgBpAGQA
bAANAAoAIAAgAFsANAAwADIALwAxADAAMwA3AF0AIABDAFMAUwBSAHUAbABlAC4AaQBkAGwADQAK
ACAAIABbADQAMAAzAC8AMQAwADMANwBdACAAQwBTAFMAUgB1AGwAZQBMAGkAcwB0AC4AaQBkAGwA
DQAKACAAIABbADQAMAA0AC8AMQAwADMANwBdACAAQwBTAFMAUwB0AHkAbABlAEQAZQBjAGwAYQBy
AGEAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA0ADAANQAvADEAMAAzADcAXQAgAEMAUwBTAFMA
dAB5AGwAZQBSAHUAbABlAC4AaQBkAGwADQAKACAAIABbADQAMAA2AC8AMQAwADMANwBdACAAQwBT
AFMAUwB0AHkAbABlAFMAaABlAGUAdAAuAGkAZABsAA0ACgAgACAAWwA0ADAANwAvADEAMAAzADcA
XQAgAEMAUwBTAFMAdQBwAHAAbwByAHQAcwBSAHUAbABlAC4AaQBkAGwADQAKACAAIABbADQAMAA4
AC8AMQAwADMANwBdACAAQwBTAFMAVQBuAGsAbgBvAHcAbgBSAHUAbABlAC4AaQBkAGwADQAKACAA
IABbADQAMAA5AC8AMQAwADMANwBdACAARABPAE0AQwBTAFMAQwB1AHMAdABvAG0AUAByAG8AcABl
AHIAdAB5AEQAZQBzAGMAcgBpAHAAdABvAHIALgBpAGQAbAANAAoAIAAgAFsANAAxADAALwAxADAA
MwA3AF0AIABEAE8ATQBDAFMAUwBOAGEAbQBlAHMAcABhAGMAZQAuAGkAZABsAA0ACgAgACAAWwA0
ADEAMQAvADEAMAAzADcAXQAgAEQATwBNAEMAUwBTAFAAYQBpAG4AdABXAG8AcgBrAGwAZQB0AC4A
aQBkAGwADQAKACAAIABbADQAMQAyAC8AMQAwADMANwBdACAARABPAE0AQwBTAFMAUgBlAGcAaQBz
AHQAZQByAEMAdQBzAHQAbwBtAFAAcgBvAHAAZQByAHQAeQAuAGkAZABsAA0ACgAgACAAWwA0ADEA
MwAvADEAMAAzADcAXQAgAEQATwBNAE0AYQB0AHIAaQB4AC4AaQBkAGwADQAKACAAIABbADQAMQA0
AC8AMQAwADMANwBdACAARABPAE0ATQBhAHQAcgBpAHgAMgBEAEkAbgBpAHQALgBpAGQAbAANAAoA
IAAgAFsANAAxADUALwAxADAAMwA3AF0AIABEAE8ATQBNAGEAdAByAGkAeABJAG4AaQB0AC4AaQBk
AGwADQAKACAAIABbADQAMQA2AC8AMQAwADMANwBdACAARABPAE0ATQBhAHQAcgBpAHgAUgBlAGEA
ZABPAG4AbAB5AC4AaQBkAGwADQAKACAAIABbADQAMQA3AC8AMQAwADMANwBdACAARABlAHAAcgBl
AGMAYQB0AGUAZABDAFMAUwBPAE0AQwBvAHUAbgB0AGUAcgAuAGkAZABsAA0ACgAgACAAWwA0ADEA
OAAvADEAMAAzADcAXQAgAEQAZQBwAHIAZQBjAGEAdABlAGQAQwBTAFMATwBNAFAAcgBpAG0AaQB0
AGkAdgBlAFYAYQBsAHUAZQAuAGkAZABsAA0ACgAgACAAWwA0ADEAOQAvADEAMAAzADcAXQAgAEQA
ZQBwAHIAZQBjAGEAdABlAGQAQwBTAFMATwBNAFIARwBCAEMAbwBsAG8AcgAuAGkAZABsAA0ACgAg
ACAAWwA0ADIAMAAvADEAMAAzADcAXQAgAEQAZQBwAHIAZQBjAGEAdABlAGQAQwBTAFMATwBNAFIA
ZQBjAHQALgBpAGQAbAANAAoAIAAgAFsANAAyADEALwAxADAAMwA3AF0AIABEAGUAcAByAGUAYwBh
AHQAZQBkAEMAUwBTAE8ATQBWAGEAbAB1AGUALgBpAGQAbAANAAoAIAAgAFsANAAyADIALwAxADAA
MwA3AF0AIABEAGUAcAByAGUAYwBhAHQAZQBkAEMAUwBTAE8ATQBWAGEAbAB1AGUATABpAHMAdAAu
AGkAZABsAA0ACgAgACAAWwA0ADIAMwAvADEAMAAzADcAXQAgAEUAbABlAG0AZQBuAHQAQwBTAFMA
SQBuAGwAaQBuAGUAUwB0AHkAbABlAC4AaQBkAGwADQAKACAAIABbADQAMgA0AC8AMQAwADMANwBd
ACAARgBvAG4AdABGAGEAYwBlAC4AaQBkAGwADQAKACAAIABbADQAMgA1AC8AMQAwADMANwBdACAA
RgBvAG4AdABGAGEAYwBlAFMAZQB0AC4AaQBkAGwADQAKACAAIABbADQAMgA2AC8AMQAwADMANwBd
ACAATQBlAGQAaQBhAEwAaQBzAHQALgBpAGQAbAANAAoAIAAgAFsANAAyADcALwAxADAAMwA3AF0A
IABNAGUAZABpAGEAUQB1AGUAcgB5AEwAaQBzAHQALgBpAGQAbAANAAoAIAAgAFsANAAyADgALwAx
ADAAMwA3AF0AIABNAGUAZABpAGEAUQB1AGUAcgB5AEwAaQBzAHQARQB2AGUAbgB0AC4AaQBkAGwA
DQAKACAAIABbADQAMgA5AC8AMQAwADMANwBdACAAUwB0AHkAbABlAE0AZQBkAGkAYQAuAGkAZABs
AA0ACgAgACAAWwA0ADMAMAAvADEAMAAzADcAXQAgAFMAdAB5AGwAZQBTAGgAZQBlAHQALgBpAGQA
bAANAAoAIAAgAFsANAAzADEALwAxADAAMwA3AF0AIABTAHQAeQBsAGUAUwBoAGUAZQB0AEwAaQBz
AHQALgBpAGQAbAANAAoAIAAgAFsANAAzADIALwAxADAAMwA3AF0AIABTAHQAeQBsAGUAUAByAG8A
cABlAHIAdAB5AE0AYQBwAC4AaQBkAGwADQAKACAAIABbADQAMwAzAC8AMQAwADMANwBdACAAUwB0
AHkAbABlAFAAcgBvAHAAZQByAHQAeQBNAGEAcABSAGUAYQBkAE8AbgBsAHkALgBpAGQAbAANAAoA
IAAgAFsANAAzADQALwAxADAAMwA3AF0AIABUAHkAcABlAGQATwBNAEMAUwBTAEkAbQBhAGcAZQBW
AGEAbAB1AGUALgBpAGQAbAANAAoAIAAgAFsANAAzADUALwAxADAAMwA3AF0AIABUAHkAcABlAGQA
TwBNAEMAUwBTAE4AdQBtAGUAcgBpAGMAVgBhAGwAdQBlAC4AaQBkAGwADQAKACAAIABbADQAMwA2
AC8AMQAwADMANwBdACAAVAB5AHAAZQBkAE8ATQBDAFMAUwBTAHQAeQBsAGUAVgBhAGwAdQBlAC4A
aQBkAGwADQAKACAAIABbADQAMwA3AC8AMQAwADMANwBdACAAVAB5AHAAZQBkAE8ATQBDAFMAUwBV
AG4AaQB0AFYAYQBsAHUAZQAuAGkAZABsAA0ACgAgACAAWwA0ADMAOAAvADEAMAAzADcAXQAgAFQA
eQBwAGUAZABPAE0AQwBTAFMAVQBuAHAAYQByAHMAZQBkAFYAYQBsAHUAZQAuAGkAZABsAA0ACgAg
ACAAWwA0ADMAOQAvADEAMAAzADcAXQAgAFcAZQBiAEsAaQB0AEMAUwBTAE0AYQB0AHIAaQB4AC4A
aQBkAGwADQAKACAAIABbADQANAAwAC8AMQAwADMANwBdACAAQQBiAG8AcgB0AEMAbwBuAHQAcgBv
AGwAbABlAHIALgBpAGQAbAANAAoAIAAgAFsANAA0ADEALwAxADAAMwA3AF0AIABBAGIAbwByAHQA
UwBpAGcAbgBhAGwALgBpAGQAbAANAAoAIAAgAFsANAA0ADIALwAxADAAMwA3AF0AIABBAG4AaQBt
AGEAdABpAG8AbgBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANAA0ADMALwAxADAAMwA3AF0A
IABBAHQAdAByAC4AaQBkAGwADQAKACAAIABbADQANAA0AC8AMQAwADMANwBdACAAQgBlAGYAbwBy
AGUATABvAGEAZABFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANAA0ADUALwAxADAAMwA3AF0A
IABCAGUAZgBvAHIAZQBVAG4AbABvAGEAZABFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANAA0
ADYALwAxADAAMwA3AF0AIABDAEQAQQBUAEEAUwBlAGMAdABpAG8AbgAuAGkAZABsAA0ACgAgACAA
WwA0ADQANwAvADEAMAAzADcAXQAgAEMAaABhAHIAYQBjAHQAZQByAEQAYQB0AGEALgBpAGQAbAAN
AAoAIAAgAFsANAA0ADgALwAxADAAMwA3AF0AIABDAGgAaQBsAGQATgBvAGQAZQAuAGkAZABsAA0A
CgAgACAAWwA0ADQAOQAvADEAMAAzADcAXQAgAEMAbABpAHAAYgBvAGEAcgBkAEUAdgBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA0ADUAMAAvADEAMAAzADcAXQAgAEMAbwBtAG0AZQBuAHQALgBpAGQA
bAANAAoAIAAgAFsANAA1ADEALwAxADAAMwA3AF0AIABDAG8AbQBwAG8AcwBpAHQAaQBvAG4ARQB2
AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADQANQAyAC8AMQAwADMANwBdACAAQwB1AHMAdABvAG0A
RQBsAGUAbQBlAG4AdABSAGUAZwBpAHMAdAByAHkALgBpAGQAbAANAAoAIAAgAFsANAA1ADMALwAx
ADAAMwA3AF0AIABDAHUAcwB0AG8AbQBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANAA1ADQA
LwAxADAAMwA3AF0AIABEAE8ATQBFAHgAYwBlAHAAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA0
ADUANQAvADEAMAAzADcAXQAgAEQATwBNAEkAbQBwAGwAZQBtAGUAbgB0AGEAdABpAG8AbgAuAGkA
ZABsAA0ACgAgACAAWwA0ADUANgAvADEAMAAzADcAXQAgAEQATwBNAFAAbwBpAG4AdAAuAGkAZABs
AA0ACgAgACAAWwA0ADUANwAvADEAMAAzADcAXQAgAEQATwBNAFAAbwBpAG4AdABJAG4AaQB0AC4A
aQBkAGwADQAKACAAIABbADQANQA4AC8AMQAwADMANwBdACAARABPAE0AUABvAGkAbgB0AFIAZQBh
AGQATwBuAGwAeQAuAGkAZABsAA0ACgAgACAAWwA0ADUAOQAvADEAMAAzADcAXQAgAEQATwBNAFEA
dQBhAGQALgBpAGQAbAANAAoAIAAgAFsANAA2ADAALwAxADAAMwA3AF0AIABEAE8ATQBRAHUAYQBk
AEkAbgBpAHQALgBpAGQAbAANAAoAIAAgAFsANAA2ADEALwAxADAAMwA3AF0AIABEAE8ATQBSAGUA
YwB0AC4AaQBkAGwADQAKACAAIABbADQANgAyAC8AMQAwADMANwBdACAARABPAE0AUgBlAGMAdABJ
AG4AaQB0AC4AaQBkAGwADQAKACAAIABbADQANgAzAC8AMQAwADMANwBdACAARABPAE0AUgBlAGMA
dABMAGkAcwB0AC4AaQBkAGwADQAKACAAIABbADQANgA0AC8AMQAwADMANwBdACAARABPAE0AUgBl
AGMAdABSAGUAYQBkAE8AbgBsAHkALgBpAGQAbAANAAoAIAAgAFsANAA2ADUALwAxADAAMwA3AF0A
IABEAE8ATQBTAHQAcgBpAG4AZwBMAGkAcwB0AC4AaQBkAGwADQAKACAAIABbADQANgA2AC8AMQAw
ADMANwBdACAARABPAE0AUwB0AHIAaQBuAGcATQBhAHAALgBpAGQAbAANAAoAIAAgAFsANAA2ADcA
LwAxADAAMwA3AF0AIABEAGEAdABhAFQAcgBhAG4AcwBmAGUAcgAuAGkAZABsAA0ACgAgACAAWwA0
ADYAOAAvADEAMAAzADcAXQAgAEQAYQB0AGEAVAByAGEAbgBzAGYAZQByAEkAdABlAG0ALgBpAGQA
bAANAAoAIAAgAFsANAA2ADkALwAxADAAMwA3AF0AIABEAGEAdABhAFQAcgBhAG4AcwBmAGUAcgBJ
AHQAZQBtAEwAaQBzAHQALgBpAGQAbAANAAoAIAAgAFsANAA3ADAALwAxADAAMwA3AF0AIABEAGUA
dgBpAGMAZQBNAG8AdABpAG8AbgBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANAA3ADEALwAx
ADAAMwA3AF0AIABEAGUAdgBpAGMAZQBPAHIAaQBlAG4AdABhAHQAaQBvAG4ARQB2AGUAbgB0AC4A
aQBkAGwADQAKACAAIABbADQANwAyAC8AMQAwADMANwBdACAARABlAHYAaQBjAGUATwByAGkAZQBu
AHQAYQB0AGkAbwBuAE8AcgBNAG8AdABpAG8AbgBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
NAA3ADMALwAxADAAMwA3AF0AIABEAGUAdgBpAGMAZQBPAHIAaQBlAG4AdABhAHQAaQBvAG4ATwBy
AE0AbwB0AGkAbwBuAFAAZQByAG0AaQBzAHMAaQBvAG4AUwB0AGEAdABlAC4AaQBkAGwADQAKACAA
IABbADQANwA0AC8AMQAwADMANwBdACAARABvAGMAdQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABb
ADQANwA1AC8AMQAwADMANwBdACAARABvAGMAdQBtAGUAbgB0AEEAbgBkAEUAbABlAG0AZQBuAHQA
RQB2AGUAbgB0AEgAYQBuAGQAbABlAHIAcwAuAGkAZABsAA0ACgAgACAAWwA0ADcANgAvADEAMAAz
ADcAXQAgAEQAbwBjAHUAbQBlAG4AdABGAHIAYQBnAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
NAA3ADcALwAxADAAMwA3AF0AIABEAG8AYwB1AG0AZQBuAHQARgB1AGwAbABzAGMAcgBlAGUAbgAu
AGkAZABsAA0ACgAgACAAWwA0ADcAOAAvADEAMAAzADcAXQAgAEQAbwBjAHUAbQBlAG4AdABPAHIA
UwBoAGEAZABvAHcAUgBvAG8AdAAuAGkAZABsAA0ACgAgACAAWwA0ADcAOQAvADEAMAAzADcAXQAg
AEQAbwBjAHUAbQBlAG4AdABTAHQAbwByAGEAZwBlAEEAYwBjAGUAcwBzAC4AaQBkAGwADQAKACAA
IABbADQAOAAwAC8AMQAwADMANwBdACAARABvAGMAdQBtAGUAbgB0AFQAbwB1AGMAaAAuAGkAZABs
AA0ACgAgACAAWwA0ADgAMQAvADEAMAAzADcAXQAgAEQAbwBjAHUAbQBlAG4AdABUAHkAcABlAC4A
aQBkAGwADQAKACAAIABbADQAOAAyAC8AMQAwADMANwBdACAARAByAGEAZwBFAHYAZQBuAHQALgBp
AGQAbAANAAoAIAAgAFsANAA4ADMALwAxADAAMwA3AF0AIABFAGwAZQBtAGUAbgB0AC4AaQBkAGwA
DQAKACAAIABbADQAOAA0AC8AMQAwADMANwBdACAARQByAHIAbwByAEUAdgBlAG4AdAAuAGkAZABs
AA0ACgAgACAAWwA0ADgANQAvADEAMAAzADcAXQAgAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAA
WwA0ADgANgAvADEAMAAzADcAXQAgAEUAdgBlAG4AdABJAG4AaQB0AC4AaQBkAGwADQAKACAAIABb
ADQAOAA3AC8AMQAwADMANwBdACAARQB2AGUAbgB0AE0AbwBkAGkAZgBpAGUAcgBJAG4AaQB0AC4A
aQBkAGwADQAKACAAIABbADQAOAA4AC8AMQAwADMANwBdACAARQB2AGUAbgB0AFQAYQByAGcAZQB0
AC4AaQBkAGwADQAKACAAIABbADQAOAA5AC8AMQAwADMANwBdACAARgBvAGMAdQBzAEUAdgBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwA0ADkAMAAvADEAMAAzADcAXQAgAEcAbABvAGIAYQBsAEUAdgBl
AG4AdABIAGEAbgBkAGwAZQByAHMALgBpAGQAbAANAAoAIAAgAFsANAA5ADEALwAxADAAMwA3AF0A
IABIAGEAcwBoAEMAaABhAG4AZwBlAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA0ADkAMgAv
ADEAMAAzADcAXQAgAEkAZABsAGUARABlAGEAZABsAGkAbgBlAC4AaQBkAGwADQAKACAAIABbADQA
OQAzAC8AMQAwADMANwBdACAASQBkAGwAZQBSAGUAcQB1AGUAcwB0AEMAYQBsAGwAYgBhAGMAawAu
AGkAZABsAA0ACgAgACAAWwA0ADkANAAvADEAMAAzADcAXQAgAEkAZABsAGUAUgBlAHEAdQBlAHMA
dABPAHAAdABpAG8AbgBzAC4AaQBkAGwADQAKACAAIABbADQAOQA1AC8AMQAwADMANwBdACAASQBu
AHAAdQB0AEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA0ADkANgAvADEAMAAzADcAXQAgAEsA
ZQB5AGIAbwBhAHIAZABFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANAA5ADcALwAxADAAMwA3
AF0AIABNAGUAcwBzAGEAZwBlAEMAaABhAG4AbgBlAGwALgBpAGQAbAANAAoAIAAgAFsANAA5ADgA
LwAxADAAMwA3AF0AIABNAGUAcwBzAGEAZwBlAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA0
ADkAOQAvADEAMAAzADcAXQAgAE0AZQBzAHMAYQBnAGUAUABvAHIAdAAuAGkAZABsAA0ACgAgACAA
WwA1ADAAMAAvADEAMAAzADcAXQAgAE0AbwB1AHMAZQBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAg
AFsANQAwADEALwAxADAAMwA3AF0AIABNAG8AdQBzAGUARQB2AGUAbgB0AEkAbgBpAHQALgBpAGQA
bAANAAoAIAAgAFsANQAwADIALwAxADAAMwA3AF0AIABNAHUAdABhAHQAaQBvAG4AQwBhAGwAbABi
AGEAYwBrAC4AaQBkAGwADQAKACAAIABbADUAMAAzAC8AMQAwADMANwBdACAATQB1AHQAYQB0AGkA
bwBuAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADAANAAvADEAMAAzADcAXQAgAE0AdQB0
AGEAdABpAG8AbgBPAGIAcwBlAHIAdgBlAHIALgBpAGQAbAANAAoAIAAgAFsANQAwADUALwAxADAA
MwA3AF0AIABNAHUAdABhAHQAaQBvAG4AUgBlAGMAbwByAGQALgBpAGQAbAANAAoAIAAgAFsANQAw
ADYALwAxADAAMwA3AF0AIABOAGEAbQBlAGQATgBvAGQAZQBNAGEAcAAuAGkAZABsAA0ACgAgACAA
WwA1ADAANwAvADEAMAAzADcAXQAgAE4AYQB2AGkAZwBhAHQAbwByAE0AYQB4AFQAbwB1AGMAaABQ
AG8AaQBuAHQAcwAuAGkAZABsAA0ACgAgACAAWwA1ADAAOAAvADEAMAAzADcAXQAgAE4AbwBkAGUA
LgBpAGQAbAANAAoAIAAgAFsANQAwADkALwAxADAAMwA3AF0AIABOAG8AZABlAEYAaQBsAHQAZQBy
AC4AaQBkAGwADQAKACAAIABbADUAMQAwAC8AMQAwADMANwBdACAATgBvAGQAZQBJAHQAZQByAGEA
dABvAHIALgBpAGQAbAANAAoAIAAgAFsANQAxADEALwAxADAAMwA3AF0AIABOAG8AZABlAEwAaQBz
AHQALgBpAGQAbAANAAoAIAAgAFsANQAxADIALwAxADAAMwA3AF0AIABOAG8AbgBEAG8AYwB1AG0A
ZQBuAHQAVAB5AHAAZQBDAGgAaQBsAGQATgBvAGQAZQAuAGkAZABsAA0ACgAgACAAWwA1ADEAMwAv
ADEAMAAzADcAXQAgAE4AbwBuAEUAbABlAG0AZQBuAHQAUABhAHIAZQBuAHQATgBvAGQAZQAuAGkA
ZABsAA0ACgAgACAAWwA1ADEANAAvADEAMAAzADcAXQAgAE8AdgBlAHIAZgBsAG8AdwBFAHYAZQBu
AHQALgBpAGQAbAANAAoAIAAgAFsANQAxADUALwAxADAAMwA3AF0AIABQAGEAZwBlAFQAcgBhAG4A
cwBpAHQAaQBvAG4ARQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAMQA2AC8AMQAwADMANwBd
ACAAUABhAHIAZQBuAHQATgBvAGQAZQAuAGkAZABsAA0ACgAgACAAWwA1ADEANwAvADEAMAAzADcA
XQAgAFAAbwBpAG4AdABlAHIARQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAMQA4AC8AMQAw
ADMANwBdACAAUABvAHAAUwB0AGEAdABlAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADEA
OQAvADEAMAAzADcAXQAgAFAAcgBvAGMAZQBzAHMAaQBuAGcASQBuAHMAdAByAHUAYwB0AGkAbwBu
AC4AaQBkAGwADQAKACAAIABbADUAMgAwAC8AMQAwADMANwBdACAAUAByAG8AZwByAGUAcwBzAEUA
dgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADIAMQAvADEAMAAzADcAXQAgAFAAcgBvAG0AaQBz
AGUAUgBlAGoAZQBjAHQAaQBvAG4ARQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAMgAyAC8A
MQAwADMANwBdACAAUgBhAG4AZwBlAC4AaQBkAGwADQAKACAAIABbADUAMgAzAC8AMQAwADMANwBd
ACAAUgBlAHEAdQBlAHMAdABBAG4AaQBtAGEAdABpAG8AbgBGAHIAYQBtAGUAQwBhAGwAbABiAGEA
YwBrAC4AaQBkAGwADQAKACAAIABbADUAMgA0AC8AMQAwADMANwBdACAAUwBlAGMAdQByAGkAdAB5
AFAAbwBsAGkAYwB5AFYAaQBvAGwAYQB0AGkAbwBuAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAA
WwA1ADIANQAvADEAMAAzADcAXQAgAFMAaABhAGQAbwB3AFIAbwBvAHQALgBpAGQAbAANAAoAIAAg
AFsANQAyADYALwAxADAAMwA3AF0AIABTAGgAYQBkAG8AdwBSAG8AbwB0AE0AbwBkAGUALgBpAGQA
bAANAAoAIAAgAFsANQAyADcALwAxADAAMwA3AF0AIABTAGwAbwB0AGEAYgBsAGUALgBpAGQAbAAN
AAoAIAAgAFsANQAyADgALwAxADAAMwA3AF0AIABTAHQAYQB0AGkAYwBSAGEAbgBnAGUALgBpAGQA
bAANAAoAIAAgAFsANQAyADkALwAxADAAMwA3AF0AIABTAHQAcgBpAG4AZwBDAGEAbABsAGIAYQBj
AGsALgBpAGQAbAANAAoAIAAgAFsANQAzADAALwAxADAAMwA3AF0AIABUAGUAeAB0AC4AaQBkAGwA
DQAKACAAIABbADUAMwAxAC8AMQAwADMANwBdACAAVABlAHgAdABEAGUAYwBvAGQAZQByAC4AaQBk
AGwADQAKACAAIABbADUAMwAyAC8AMQAwADMANwBdACAAVABlAHgAdABFAG4AYwBvAGQAZQByAC4A
aQBkAGwADQAKACAAIABbADUAMwAzAC8AMQAwADMANwBdACAAVABlAHgAdABFAHYAZQBuAHQALgBp
AGQAbAANAAoAIAAgAFsANQAzADQALwAxADAAMwA3AF0AIABUAG8AdQBjAGgALgBpAGQAbAANAAoA
IAAgAFsANQAzADUALwAxADAAMwA3AF0AIABUAG8AdQBjAGgARQB2AGUAbgB0AC4AaQBkAGwADQAK
ACAAIABbADUAMwA2AC8AMQAwADMANwBdACAAVABvAHUAYwBoAEwAaQBzAHQALgBpAGQAbAANAAoA
IAAgAFsANQAzADcALwAxADAAMwA3AF0AIABUAHIAYQBuAHMAaQB0AGkAbwBuAEUAdgBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA1ADMAOAAvADEAMAAzADcAXQAgAFQAcgBlAGUAVwBhAGwAawBlAHIA
LgBpAGQAbAANAAoAIAAgAFsANQAzADkALwAxADAAMwA3AF0AIABVAEkARQB2AGUAbgB0AC4AaQBk
AGwADQAKACAAIABbADUANAAwAC8AMQAwADMANwBdACAAVQBJAEUAdgBlAG4AdABJAG4AaQB0AC4A
aQBkAGwADQAKACAAIABbADUANAAxAC8AMQAwADMANwBdACAAVgBpAHMAaQBiAGkAbABpAHQAeQBT
AHQAYQB0AGUALgBpAGQAbAANAAoAIAAgAFsANQA0ADIALwAxADAAMwA3AF0AIABXAGUAYgBLAGkA
dABBAG4AaQBtAGEAdABpAG8AbgBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANQA0ADMALwAx
ADAAMwA3AF0AIABXAGUAYgBLAGkAdABUAHIAYQBuAHMAaQB0AGkAbwBuAEUAdgBlAG4AdAAuAGkA
ZABsAA0ACgAgACAAWwA1ADQANAAvADEAMAAzADcAXQAgAFcAaABlAGUAbABFAHYAZQBuAHQALgBp
AGQAbAANAAoAIAAgAFsANQA0ADUALwAxADAAMwA3AF0AIABYAE0ATABEAG8AYwB1AG0AZQBuAHQA
LgBpAGQAbAANAAoAIAAgAFsANQA0ADYALwAxADAAMwA3AF0AIABCAGwAbwBiAC4AaQBkAGwADQAK
ACAAIABbADUANAA3AC8AMQAwADMANwBdACAAQgBsAG8AYgBDAGEAbABsAGIAYQBjAGsALgBpAGQA
bAANAAoAIAAgAFsANQA0ADgALwAxADAAMwA3AF0AIABCAGwAbwBiAFAAcgBvAHAAZQByAHQAeQBC
AGEAZwAuAGkAZABsAA0ACgAgACAAWwA1ADQAOQAvADEAMAAzADcAXQAgAEUAbgBkAGkAbgBnAFQA
eQBwAGUALgBpAGQAbAANAAoAIAAgAFsANQA1ADAALwAxADAAMwA3AF0AIABGAGkAbABlAC4AaQBk
AGwADQAKACAAIABbADUANQAxAC8AMQAwADMANwBdACAARgBpAGwAZQBMAGkAcwB0AC4AaQBkAGwA
DQAKACAAIABbADUANQAyAC8AMQAwADMANwBdACAARgBpAGwAZQBSAGUAYQBkAGUAcgAuAGkAZABs
AA0ACgAgACAAWwA1ADUAMwAvADEAMAAzADcAXQAgAEYAaQBsAGUAUgBlAGEAZABlAHIAUwB5AG4A
YwAuAGkAZABsAA0ACgAgACAAWwA1ADUANAAvADEAMAAzADcAXQAgAEQATwBNAEYAbwByAG0ARABh
AHQAYQAuAGkAZABsAA0ACgAgACAAWwA1ADUANQAvADEAMAAzADcAXQAgAEQATwBNAFQAbwBrAGUA
bgBMAGkAcwB0AC4AaQBkAGwADQAKACAAIABbADUANQA2AC8AMQAwADMANwBdACAARABPAE0AVQBS
AEwALgBpAGQAbAANAAoAIAAgAFsANQA1ADcALwAxADAAMwA3AF0AIABIAFQATQBMAEEAbABsAEMA
bwBsAGwAZQBjAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsANQA1ADgALwAxADAAMwA3AF0AIABI
AFQATQBMAEEAbgBjAGgAbwByAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANQA1ADkA
LwAxADAAMwA3AF0AIABIAFQATQBMAEEAcABwAGwAZQB0AEUAbABlAG0AZQBuAHQALgBpAGQAbAAN
AAoAIAAgAFsANQA2ADAALwAxADAAMwA3AF0AIABIAFQATQBMAEEAcgBlAGEARQBsAGUAbQBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwA1ADYAMQAvADEAMAAzADcAXQAgAEgAVABNAEwAQQB0AHQAYQBj
AGgAbQBlAG4AdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUANgAyAC8AMQAwADMA
NwBdACAASABUAE0ATABBAHUAZABpAG8ARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1
ADYAMwAvADEAMAAzADcAXQAgAEgAVABNAEwAQgBSAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoA
IAAgAFsANQA2ADQALwAxADAAMwA3AF0AIABIAFQATQBMAEIAYQBzAGUARQBsAGUAbQBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA1ADYANQAvADEAMAAzADcAXQAgAEgAVABNAEwAQgBvAGQAeQBFAGwA
ZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUANgA2AC8AMQAwADMANwBdACAASABUAE0ATABC
AHUAdAB0AG8AbgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUANgA3AC8AMQAwADMA
NwBdACAASABUAE0ATABDAGEAbgB2AGEAcwBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABb
ADUANgA4AC8AMQAwADMANwBdACAASABUAE0ATABDAG8AbABsAGUAYwB0AGkAbwBuAC4AaQBkAGwA
DQAKACAAIABbADUANgA5AC8AMQAwADMANwBdACAASABUAE0ATABEAEwAaQBzAHQARQBsAGUAbQBl
AG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADcAMAAvADEAMAAzADcAXQAgAEgAVABNAEwARABhAHQA
YQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUANwAxAC8AMQAwADMANwBdACAASABU
AE0ATABEAGEAdABhAEwAaQBzAHQARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADcA
MgAvADEAMAAzADcAXQAgAEgAVABNAEwARABlAHQAYQBpAGwAcwBFAGwAZQBtAGUAbgB0AC4AaQBk
AGwADQAKACAAIABbADUANwAzAC8AMQAwADMANwBdACAASABUAE0ATABEAGkAYQBsAG8AZwBFAGwA
ZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUANwA0AC8AMQAwADMANwBdACAASABUAE0ATABE
AGkAcgBlAGMAdABvAHIAeQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUANwA1AC8A
MQAwADMANwBdACAASABUAE0ATABEAGkAdgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABb
ADUANwA2AC8AMQAwADMANwBdACAASABUAE0ATABEAG8AYwB1AG0AZQBuAHQALgBpAGQAbAANAAoA
IAAgAFsANQA3ADcALwAxADAAMwA3AF0AIABIAFQATQBMAEUAbABlAG0AZQBuAHQALgBpAGQAbAAN
AAoAIAAgAFsANQA3ADgALwAxADAAMwA3AF0AIABIAFQATQBMAEUAbQBiAGUAZABFAGwAZQBtAGUA
bgB0AC4AaQBkAGwADQAKACAAIABbADUANwA5AC8AMQAwADMANwBdACAASABUAE0ATABGAGkAZQBs
AGQAUwBlAHQARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADgAMAAvADEAMAAzADcA
XQAgAEgAVABNAEwARgBvAG4AdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAOAAx
AC8AMQAwADMANwBdACAASABUAE0ATABGAG8AcgBtAEMAbwBuAHQAcgBvAGwAcwBDAG8AbABsAGUA
YwB0AGkAbwBuAC4AaQBkAGwADQAKACAAIABbADUAOAAyAC8AMQAwADMANwBdACAASABUAE0ATABG
AG8AcgBtAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANQA4ADMALwAxADAAMwA3AF0A
IABIAFQATQBMAEYAcgBhAG0AZQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAOAA0
AC8AMQAwADMANwBdACAASABUAE0ATABGAHIAYQBtAGUAUwBlAHQARQBsAGUAbQBlAG4AdAAuAGkA
ZABsAA0ACgAgACAAWwA1ADgANQAvADEAMAAzADcAXQAgAEgAVABNAEwASABSAEUAbABlAG0AZQBu
AHQALgBpAGQAbAANAAoAIAAgAFsANQA4ADYALwAxADAAMwA3AF0AIABIAFQATQBMAEgAZQBhAGQA
RQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADgANwAvADEAMAAzADcAXQAgAEgAVABN
AEwASABlAGEAZABpAG4AZwBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAOAA4AC8A
MQAwADMANwBdACAASABUAE0ATABIAHQAbQBsAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAg
AFsANQA4ADkALwAxADAAMwA3AF0AIABIAFQATQBMAEgAeQBwAGUAcgBsAGkAbgBrAEUAbABlAG0A
ZQBuAHQAVQB0AGkAbABzAC4AaQBkAGwADQAKACAAIABbADUAOQAwAC8AMQAwADMANwBdACAASABU
AE0ATABJAEYAcgBhAG0AZQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAOQAxAC8A
MQAwADMANwBdACAASABUAE0ATABJAG0AYQBnAGUARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAg
ACAAWwA1ADkAMgAvADEAMAAzADcAXQAgAEgAVABNAEwASQBuAHAAdQB0AEUAbABlAG0AZQBuAHQA
LgBpAGQAbAANAAoAIAAgAFsANQA5ADMALwAxADAAMwA3AF0AIABIAFQATQBMAEsAZQB5AGcAZQBu
AEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANQA5ADQALwAxADAAMwA3AF0AIABIAFQA
TQBMAEwASQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAOQA1AC8AMQAwADMANwBd
ACAASABUAE0ATABMAGEAYgBlAGwARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA1ADkA
NgAvADEAMAAzADcAXQAgAEgAVABNAEwATABlAGcAZQBuAGQARQBsAGUAbQBlAG4AdAAuAGkAZABs
AA0ACgAgACAAWwA1ADkANwAvADEAMAAzADcAXQAgAEgAVABNAEwATABpAG4AawBFAGwAZQBtAGUA
bgB0AC4AaQBkAGwADQAKACAAIABbADUAOQA4AC8AMQAwADMANwBdACAASABUAE0ATABNAGEAcABF
AGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADUAOQA5AC8AMQAwADMANwBdACAASABUAE0A
TABNAGEAcgBxAHUAZQBlAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAwADAALwAx
ADAAMwA3AF0AIABIAFQATQBMAE0AZQBkAGkAYQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAA
IABbADYAMAAxAC8AMQAwADMANwBdACAASABUAE0ATABNAGUAbgB1AEUAbABlAG0AZQBuAHQALgBp
AGQAbAANAAoAIAAgAFsANgAwADIALwAxADAAMwA3AF0AIABIAFQATQBMAE0AZQBuAHUASQB0AGUA
bQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADYAMAAzAC8AMQAwADMANwBdACAASABU
AE0ATABNAGUAdABhAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAwADQALwAxADAA
MwA3AF0AIABIAFQATQBMAE0AZQB0AGUAcgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABb
ADYAMAA1AC8AMQAwADMANwBdACAASABUAE0ATABNAG8AZABFAGwAZQBtAGUAbgB0AC4AaQBkAGwA
DQAKACAAIABbADYAMAA2AC8AMQAwADMANwBdACAASABUAE0ATABPAEwAaQBzAHQARQBsAGUAbQBl
AG4AdAAuAGkAZABsAA0ACgAgACAAWwA2ADAANwAvADEAMAAzADcAXQAgAEgAVABNAEwATwBiAGoA
ZQBjAHQARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA2ADAAOAAvADEAMAAzADcAXQAg
AEgAVABNAEwATwBwAHQARwByAG8AdQBwAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
NgAwADkALwAxADAAMwA3AF0AIABIAFQATQBMAE8AcAB0AGkAbwBuAEUAbABlAG0AZQBuAHQALgBp
AGQAbAANAAoAIAAgAFsANgAxADAALwAxADAAMwA3AF0AIABIAFQATQBMAE8AcAB0AGkAbwBuAHMA
QwBvAGwAbABlAGMAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA2ADEAMQAvADEAMAAzADcAXQAg
AEgAVABNAEwATwByAEYAbwByAGUAaQBnAG4ARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAA
WwA2ADEAMgAvADEAMAAzADcAXQAgAEgAVABNAEwATwB1AHQAcAB1AHQARQBsAGUAbQBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA2ADEAMwAvADEAMAAzADcAXQAgAEgAVABNAEwAUABhAHIAYQBnAHIA
YQBwAGgARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA2ADEANAAvADEAMAAzADcAXQAg
AEgAVABNAEwAUABhAHIAYQBtAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAxADUA
LwAxADAAMwA3AF0AIABIAFQATQBMAFAAaQBjAHQAdQByAGUARQBsAGUAbQBlAG4AdAAuAGkAZABs
AA0ACgAgACAAWwA2ADEANgAvADEAMAAzADcAXQAgAEgAVABNAEwAUAByAGUARQBsAGUAbQBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwA2ADEANwAvADEAMAAzADcAXQAgAEgAVABNAEwAUAByAG8AZwBy
AGUAcwBzAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAxADgALwAxADAAMwA3AF0A
IABIAFQATQBMAFEAdQBvAHQAZQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADYAMQA5
AC8AMQAwADMANwBdACAASABUAE0ATABTAGMAcgBpAHAAdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwA
DQAKACAAIABbADYAMgAwAC8AMQAwADMANwBdACAASABUAE0ATABTAGUAbABlAGMAdABFAGwAZQBt
AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADYAMgAxAC8AMQAwADMANwBdACAASABUAE0ATABTAGwA
bwB0AEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAyADIALwAxADAAMwA3AF0AIABI
AFQATQBMAFMAbwB1AHIAYwBlAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAyADMA
LwAxADAAMwA3AF0AIABIAFQATQBMAFMAcABhAG4ARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAg
ACAAWwA2ADIANAAvADEAMAAzADcAXQAgAEgAVABNAEwAUwB0AHkAbABlAEUAbABlAG0AZQBuAHQA
LgBpAGQAbAANAAoAIAAgAFsANgAyADUALwAxADAAMwA3AF0AIABIAFQATQBMAFQAYQBiAGwAZQBD
AGEAcAB0AGkAbwBuAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAyADYALwAxADAA
MwA3AF0AIABIAFQATQBMAFQAYQBiAGwAZQBDAGUAbABsAEUAbABlAG0AZQBuAHQALgBpAGQAbAAN
AAoAIAAgAFsANgAyADcALwAxADAAMwA3AF0AIABIAFQATQBMAFQAYQBiAGwAZQBDAG8AbABFAGwA
ZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADYAMgA4AC8AMQAwADMANwBdACAASABUAE0ATABU
AGEAYgBsAGUARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA2ADIAOQAvADEAMAAzADcA
XQAgAEgAVABNAEwAVABhAGIAbABlAFIAbwB3AEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAg
AFsANgAzADAALwAxADAAMwA3AF0AIABIAFQATQBMAFQAYQBiAGwAZQBTAGUAYwB0AGkAbwBuAEUA
bABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAzADEALwAxADAAMwA3AF0AIABIAFQATQBM
AFQAZQBtAHAAbABhAHQAZQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADYAMwAyAC8A
MQAwADMANwBdACAASABUAE0ATABUAGUAeAB0AEEAcgBlAGEARQBsAGUAbQBlAG4AdAAuAGkAZABs
AA0ACgAgACAAWwA2ADMAMwAvADEAMAAzADcAXQAgAEgAVABNAEwAVABpAG0AZQBFAGwAZQBtAGUA
bgB0AC4AaQBkAGwADQAKACAAIABbADYAMwA0AC8AMQAwADMANwBdACAASABUAE0ATABUAGkAdABs
AGUARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA2ADMANQAvADEAMAAzADcAXQAgAEgA
VABNAEwAVAByAGEAYwBrAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgAzADYALwAx
ADAAMwA3AF0AIABIAFQATQBMAFUATABpAHMAdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAA
IABbADYAMwA3AC8AMQAwADMANwBdACAASABUAE0ATABVAG4AawBuAG8AdwBuAEUAbABlAG0AZQBu
AHQALgBpAGQAbAANAAoAIAAgAFsANgAzADgALwAxADAAMwA3AF0AIABIAFQATQBMAFYAaQBkAGUA
bwBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADYAMwA5AC8AMQAwADMANwBdACAASQBt
AGEAZwBlAEIAaQB0AG0AYQBwAC4AaQBkAGwADQAKACAAIABbADYANAAwAC8AMQAwADMANwBdACAA
SQBtAGEAZwBlAEIAaQB0AG0AYQBwAE8AcAB0AGkAbwBuAHMALgBpAGQAbAANAAoAIAAgAFsANgA0
ADEALwAxADAAMwA3AF0AIABJAG0AYQBnAGUARABhAHQAYQAuAGkAZABsAA0ACgAgACAAWwA2ADQA
MgAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBDAG8AbgB0AHIAbwBsAGwAZQByAC4AaQBkAGwADQAK
ACAAIABbADYANAAzAC8AMQAwADMANwBdACAATQBlAGQAaQBhAEUAbgBjAHIAeQBwAHQAZQBkAEUA
dgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA2ADQANAAvADEAMAAzADcAXQAgAE0AZQBkAGkAYQBF
AHIAcgBvAHIALgBpAGQAbAANAAoAIAAgAFsANgA0ADUALwAxADAAMwA3AF0AIABPAGYAZgBzAGMA
cgBlAGUAbgBDAGEAbgB2AGEAcwAuAGkAZABsAA0ACgAgACAAWwA2ADQANgAvADEAMAAzADcAXQAg
AFIAYQBkAGkAbwBOAG8AZABlAEwAaQBzAHQALgBpAGQAbAANAAoAIAAgAFsANgA0ADcALwAxADAA
MwA3AF0AIABUAGUAeAB0AE0AZQB0AHIAaQBjAHMALgBpAGQAbAANAAoAIAAgAFsANgA0ADgALwAx
ADAAMwA3AF0AIABUAGkAbQBlAFIAYQBuAGcAZQBzAC4AaQBkAGwADQAKACAAIABbADYANAA5AC8A
MQAwADMANwBdACAAVQBSAEwAUwBlAGEAcgBjAGgAUABhAHIAYQBtAHMALgBpAGQAbAANAAoAIAAg
AFsANgA1ADAALwAxADAAMwA3AF0AIABWAGEAbABpAGQAaQB0AHkAUwB0AGEAdABlAC4AaQBkAGwA
DQAKACAAIABbADYANQAxAC8AMQAwADMANwBdACAAVgBvAGkAZABDAGEAbABsAGIAYQBjAGsALgBp
AGQAbAANAAoAIAAgAFsANgA1ADIALwAxADAAMwA3AF0AIABDAGEAbgB2AGEAcwBDAG8AbQBwAG8A
cwBpAHQAaQBuAGcALgBpAGQAbAANAAoAIAAgAFsANgA1ADMALwAxADAAMwA3AF0AIABDAGEAbgB2
AGEAcwBEAGkAcgBlAGMAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA2ADUANAAvADEAMAAzADcA
XQAgAEMAYQBuAHYAYQBzAEQAcgBhAHcASQBtAGEAZwBlAC4AaQBkAGwADQAKACAAIABbADYANQA1
AC8AMQAwADMANwBdACAAQwBhAG4AdgBhAHMARAByAGEAdwBQAGEAdABoAC4AaQBkAGwADQAKACAA
IABbADYANQA2AC8AMQAwADMANwBdACAAQwBhAG4AdgBhAHMARgBpAGwAbABSAHUAbABlAC4AaQBk
AGwADQAKACAAIABbADYANQA3AC8AMQAwADMANwBdACAAQwBhAG4AdgBhAHMARgBpAGwAbABTAHQA
cgBvAGsAZQBTAHQAeQBsAGUAcwAuAGkAZABsAA0ACgAgACAAWwA2ADUAOAAvADEAMAAzADcAXQAg
AEMAYQBuAHYAYQBzAEYAaQBsAHQAZQByAHMALgBpAGQAbAANAAoAIAAgAFsANgA1ADkALwAxADAA
MwA3AF0AIABDAGEAbgB2AGEAcwBHAHIAYQBkAGkAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgA2
ADAALwAxADAAMwA3AF0AIABDAGEAbgB2AGEAcwBJAG0AYQBnAGUARABhAHQAYQAuAGkAZABsAA0A
CgAgACAAWwA2ADYAMQAvADEAMAAzADcAXQAgAEMAYQBuAHYAYQBzAEkAbQBhAGcAZQBTAG0AbwBv
AHQAaABpAG4AZwAuAGkAZABsAA0ACgAgACAAWwA2ADYAMgAvADEAMAAzADcAXQAgAEMAYQBuAHYA
YQBzAEwAaQBuAGUAQwBhAHAALgBpAGQAbAANAAoAIAAgAFsANgA2ADMALwAxADAAMwA3AF0AIABD
AGEAbgB2AGEAcwBMAGkAbgBlAEoAbwBpAG4ALgBpAGQAbAANAAoAIAAgAFsANgA2ADQALwAxADAA
MwA3AF0AIABDAGEAbgB2AGEAcwBQAGEAdABoAC4AaQBkAGwADQAKACAAIABbADYANgA1AC8AMQAw
ADMANwBdACAAQwBhAG4AdgBhAHMAUABhAHQAaABEAHIAYQB3AGkAbgBnAFMAdAB5AGwAZQBzAC4A
aQBkAGwADQAKACAAIABbADYANgA2AC8AMQAwADMANwBdACAAQwBhAG4AdgBhAHMAUABhAHQAdABl
AHIAbgAuAGkAZABsAA0ACgAgACAAWwA2ADYANwAvADEAMAAzADcAXQAgAEMAYQBuAHYAYQBzAFIA
ZQBjAHQALgBpAGQAbAANAAoAIAAgAFsANgA2ADgALwAxADAAMwA3AF0AIABDAGEAbgB2AGEAcwBS
AGUAbgBkAGUAcgBpAG4AZwBDAG8AbgB0AGUAeAB0ADIARAAuAGkAZABsAA0ACgAgACAAWwA2ADYA
OQAvADEAMAAzADcAXQAgAEMAYQBuAHYAYQBzAFMAaABhAGQAbwB3AFMAdAB5AGwAZQBzAC4AaQBk
AGwADQAKACAAIABbADYANwAwAC8AMQAwADMANwBdACAAQwBhAG4AdgBhAHMAUwB0AGEAdABlAC4A
aQBkAGwADQAKACAAIABbADYANwAxAC8AMQAwADMANwBdACAAQwBhAG4AdgBhAHMAVABlAHgAdAAu
AGkAZABsAA0ACgAgACAAWwA2ADcAMgAvADEAMAAzADcAXQAgAEMAYQBuAHYAYQBzAFQAZQB4AHQA
QQBsAGkAZwBuAC4AaQBkAGwADQAKACAAIABbADYANwAzAC8AMQAwADMANwBdACAAQwBhAG4AdgBh
AHMAVABlAHgAdABCAGEAcwBlAGwAaQBuAGUALgBpAGQAbAANAAoAIAAgAFsANgA3ADQALwAxADAA
MwA3AF0AIABDAGEAbgB2AGEAcwBUAGUAeAB0AEQAcgBhAHcAaQBuAGcAUwB0AHkAbABlAHMALgBp
AGQAbAANAAoAIAAgAFsANgA3ADUALwAxADAAMwA3AF0AIABDAGEAbgB2AGEAcwBUAHIAYQBuAHMA
ZgBvAHIAbQAuAGkAZABsAA0ACgAgACAAWwA2ADcANgAvADEAMAAzADcAXQAgAEMAYQBuAHYAYQBz
AFUAcwBlAHIASQBuAHQAZQByAGYAYQBjAGUALgBpAGQAbAANAAoAIAAgAFsANgA3ADcALwAxADAA
MwA3AF0AIABJAG0AYQBnAGUAQgBpAHQAbQBhAHAAUgBlAG4AZABlAHIAaQBuAGcAQwBvAG4AdABl
AHgAdAAuAGkAZABsAA0ACgAgACAAWwA2ADcAOAAvADEAMAAzADcAXQAgAEkAbQBhAGcAZQBCAGkA
dABtAGEAcABSAGUAbgBkAGUAcgBpAG4AZwBDAG8AbgB0AGUAeAB0AFMAZQB0AHQAaQBuAGcAcwAu
AGkAZABsAA0ACgAgACAAWwA2ADcAOQAvADEAMAAzADcAXQAgAEkAbQBhAGcAZQBTAG0AbwBvAHQA
aABpAG4AZwBRAHUAYQBsAGkAdAB5AC4AaQBkAGwADQAKACAAIABbADYAOAAwAC8AMQAwADMANwBd
ACAATwBmAGYAcwBjAHIAZQBlAG4AQwBhAG4AdgBhAHMAUgBlAG4AZABlAHIAaQBuAGcAQwBvAG4A
dABlAHgAdAAyAEQALgBpAGQAbAANAAoAIAAgAFsANgA4ADEALwAxADAAMwA3AF0AIABQAGEAaQBu
AHQAUgBlAG4AZABlAHIAaQBuAGcAQwBvAG4AdABlAHgAdAAyAEQALgBpAGQAbAANAAoAIAAgAFsA
NgA4ADIALwAxADAAMwA3AF0AIABQAGEAdABoADIARAAuAGkAZABsAA0ACgAgACAAWwA2ADgAMwAv
ADEAMAAzADcAXQAgAEEAdQBkAGkAbwBUAHIAYQBjAGsALgBpAGQAbAANAAoAIAAgAFsANgA4ADQA
LwAxADAAMwA3AF0AIABBAHUAZABpAG8AVAByAGEAYwBrAEwAaQBzAHQALgBpAGQAbAANAAoAIAAg
AFsANgA4ADUALwAxADAAMwA3AF0AIABEAGEAdABhAEMAdQBlAC4AaQBkAGwADQAKACAAIABbADYA
OAA2AC8AMQAwADMANwBdACAAVABlAHgAdABUAHIAYQBjAGsALgBpAGQAbAANAAoAIAAgAFsANgA4
ADcALwAxADAAMwA3AF0AIABUAGUAeAB0AFQAcgBhAGMAawBDAHUAZQAuAGkAZABsAA0ACgAgACAA
WwA2ADgAOAAvADEAMAAzADcAXQAgAFQAZQB4AHQAVAByAGEAYwBrAEMAdQBlAEcAZQBuAGUAcgBp
AGMALgBpAGQAbAANAAoAIAAgAFsANgA4ADkALwAxADAAMwA3AF0AIABUAGUAeAB0AFQAcgBhAGMA
awBDAHUAZQBMAGkAcwB0AC4AaQBkAGwADQAKACAAIABbADYAOQAwAC8AMQAwADMANwBdACAAVABl
AHgAdABUAHIAYQBjAGsATABpAHMAdAAuAGkAZABsAA0ACgAgACAAWwA2ADkAMQAvADEAMAAzADcA
XQAgAFQAcgBhAGMAawBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANgA5ADIALwAxADAAMwA3
AF0AIABWAFQAVABDAHUAZQAuAGkAZABsAA0ACgAgACAAWwA2ADkAMwAvADEAMAAzADcAXQAgAFYA
VABUAFIAZQBnAGkAbwBuAC4AaQBkAGwADQAKACAAIABbADYAOQA0AC8AMQAwADMANwBdACAAVgBU
AFQAUgBlAGcAaQBvAG4ATABpAHMAdAAuAGkAZABsAA0ACgAgACAAWwA2ADkANQAvADEAMAAzADcA
XQAgAFYAaQBkAGUAbwBUAHIAYQBjAGsALgBpAGQAbAANAAoAIAAgAFsANgA5ADYALwAxADAAMwA3
AF0AIABWAGkAZABlAG8AVAByAGEAYwBrAEwAaQBzAHQALgBpAGQAbAANAAoAIAAgAFsANgA5ADcA
LwAxADAAMwA3AF0AIABDAG8AbQBtAGEAbgBkAEwAaQBuAGUAQQBQAEkASABvAHMAdAAuAGkAZABs
AA0ACgAgACAAWwA2ADkAOAAvADEAMAAzADcAXQAgAEkAbgBzAHAAZQBjAHQAbwByAEEAdQBkAGkA
dABBAGMAYwBlAHMAcwBpAGIAaQBsAGkAdAB5AE8AYgBqAGUAYwB0AC4AaQBkAGwADQAKACAAIABb
ADYAOQA5AC8AMQAwADMANwBdACAASQBuAHMAcABlAGMAdABvAHIAQQB1AGQAaQB0AEQATwBNAE8A
YgBqAGUAYwB0AC4AaQBkAGwADQAKACAAIABbADcAMAAwAC8AMQAwADMANwBdACAASQBuAHMAcABl
AGMAdABvAHIAQQB1AGQAaQB0AFIAZQBzAG8AdQByAGMAZQBzAE8AYgBqAGUAYwB0AC4AaQBkAGwA
DQAKACAAIABbADcAMAAxAC8AMQAwADMANwBdACAASQBuAHMAcABlAGMAdABvAHIARgByAG8AbgB0
AGUAbgBkAEgAbwBzAHQALgBpAGQAbAANAAoAIAAgAFsANwAwADIALwAxADAAMwA3AF0AIABEAE8A
TQBBAHAAcABsAGkAYwBhAHQAaQBvAG4AQwBhAGMAaABlAC4AaQBkAGwADQAKACAAIABbADcAMAAz
AC8AMQAwADMANwBdACAATQBhAHQAaABNAEwARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAA
WwA3ADAANAAvADEAMAAzADcAXQAgAE0AYQB0AGgATQBMAE0AYQB0AGgARQBsAGUAbQBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA3ADAANQAvADEAMAAzADcAXQAgAEIAYQByAFAAcgBvAHAALgBpAGQA
bAANAAoAIAAgAFsANwAwADYALwAxADAAMwA3AF0AIABDAHIAeQBwAHQAbwAuAGkAZABsAA0ACgAg
ACAAWwA3ADAANwAvADEAMAAzADcAXQAgAEQATwBNAFMAZQBsAGUAYwB0AGkAbwBuAC4AaQBkAGwA
DQAKACAAIABbADcAMAA4AC8AMQAwADMANwBdACAARABPAE0AVwBpAG4AZABvAHcALgBpAGQAbAAN
AAoAIAAgAFsANwAwADkALwAxADAAMwA3AF0AIABFAHYAZQBuAHQAUwBvAHUAcgBjAGUALgBpAGQA
bAANAAoAIAAgAFsANwAxADAALwAxADAAMwA3AF0AIABHAGwAbwBiAGEAbABDAHIAeQBwAHQAbwAu
AGkAZABsAA0ACgAgACAAWwA3ADEAMQAvADEAMAAzADcAXQAgAEcAbABvAGIAYQBsAFAAZQByAGYA
bwByAG0AYQBuAGMAZQAuAGkAZABsAA0ACgAgACAAWwA3ADEAMgAvADEAMAAzADcAXQAgAEgAaQBz
AHQAbwByAHkALgBpAGQAbAANAAoAIAAgAFsANwAxADMALwAxADAAMwA3AF0AIABJAG4AdABlAHIA
cwBlAGMAdABpAG8AbgBPAGIAcwBlAHIAdgBlAHIALgBpAGQAbAANAAoAIAAgAFsANwAxADQALwAx
ADAAMwA3AF0AIABJAG4AdABlAHIAcwBlAGMAdABpAG8AbgBPAGIAcwBlAHIAdgBlAHIAQwBhAGwA
bABiAGEAYwBrAC4AaQBkAGwADQAKACAAIABbADcAMQA1AC8AMQAwADMANwBdACAASQBuAHQAZQBy
AHMAZQBjAHQAaQBvAG4ATwBiAHMAZQByAHYAZQByAEUAbgB0AHIAeQAuAGkAZABsAA0ACgAgACAA
WwA3ADEANgAvADEAMAAzADcAXQAgAEwAbwBjAGEAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA3
ADEANwAvADEAMAAzADcAXQAgAE4AYQB2AGkAZwBhAHQAbwByAC4AaQBkAGwADQAKACAAIABbADcA
MQA4AC8AMQAwADMANwBdACAATgBhAHYAaQBnAGEAdABvAHIASQBEAC4AaQBkAGwADQAKACAAIABb
ADcAMQA5AC8AMQAwADMANwBdACAATgBhAHYAaQBnAGEAdABvAHIATABhAG4AZwB1AGEAZwBlAC4A
aQBkAGwADQAKACAAIABbADcAMgAwAC8AMQAwADMANwBdACAATgBhAHYAaQBnAGEAdABvAHIATwBu
AEwAaQBuAGUALgBpAGQAbAANAAoAIAAgAFsANwAyADEALwAxADAAMwA3AF0AIABOAGEAdgBpAGcA
YQB0AG8AcgBQAGwAdQBnAGkAbgBzAC4AaQBkAGwADQAKACAAIABbADcAMgAyAC8AMQAwADMANwBd
ACAATgBhAHYAaQBnAGEAdABvAHIAUwBlAHIAdgBpAGMAZQBXAG8AcgBrAGUAcgAuAGkAZABsAA0A
CgAgACAAWwA3ADIAMwAvADEAMAAzADcAXQAgAE4AYQB2AGkAZwBhAHQAbwByAFMAaABhAHIAZQAu
AGkAZABsAA0ACgAgACAAWwA3ADIANAAvADEAMAAzADcAXQAgAFAAZQByAGYAbwByAG0AYQBuAGMA
ZQAuAGkAZABsAA0ACgAgACAAWwA3ADIANQAvADEAMAAzADcAXQAgAFAAZQByAGYAbwByAG0AYQBu
AGMAZQBFAG4AdAByAHkALgBpAGQAbAANAAoAIAAgAFsANwAyADYALwAxADAAMwA3AF0AIABQAGUA
cgBmAG8AcgBtAGEAbgBjAGUATQBhAHIAawAuAGkAZABsAA0ACgAgACAAWwA3ADIANwAvADEAMAAz
ADcAXQAgAFAAZQByAGYAbwByAG0AYQBuAGMAZQBNAGUAYQBzAHUAcgBlAC4AaQBkAGwADQAKACAA
IABbADcAMgA4AC8AMQAwADMANwBdACAAUABlAHIAZgBvAHIAbQBhAG4AYwBlAE8AYgBzAGUAcgB2
AGUAcgAuAGkAZABsAA0ACgAgACAAWwA3ADIAOQAvADEAMAAzADcAXQAgAFAAZQByAGYAbwByAG0A
YQBuAGMAZQBPAGIAcwBlAHIAdgBlAHIAQwBhAGwAbABiAGEAYwBrAC4AaQBkAGwADQAKACAAIABb
ADcAMwAwAC8AMQAwADMANwBdACAAUABlAHIAZgBvAHIAbQBhAG4AYwBlAE8AYgBzAGUAcgB2AGUA
cgBFAG4AdAByAHkATABpAHMAdAAuAGkAZABsAA0ACgAgACAAWwA3ADMAMQAvADEAMAAzADcAXQAg
AFAAZQByAGYAbwByAG0AYQBuAGMAZQBOAGEAdgBpAGcAYQB0AGkAbwBuAC4AaQBkAGwADQAKACAA
IABbADcAMwAyAC8AMQAwADMANwBdACAAUABlAHIAZgBvAHIAbQBhAG4AYwBlAFAAYQBpAG4AdABU
AGkAbQBpAG4AZwAuAGkAZABsAA0ACgAgACAAWwA3ADMAMwAvADEAMAAzADcAXQAgAFAAZQByAGYA
bwByAG0AYQBuAGMAZQBSAGUAcwBvAHUAcgBjAGUAVABpAG0AaQBuAGcALgBpAGQAbAANAAoAIAAg
AFsANwAzADQALwAxADAAMwA3AF0AIABQAGUAcgBmAG8AcgBtAGEAbgBjAGUAUwBlAHIAdgBlAHIA
VABpAG0AaQBuAGcALgBpAGQAbAANAAoAIAAgAFsANwAzADUALwAxADAAMwA3AF0AIABQAGUAcgBm
AG8AcgBtAGEAbgBjAGUAVABpAG0AaQBuAGcALgBpAGQAbAANAAoAIAAgAFsANwAzADYALwAxADAA
MwA3AF0AIABQAG8AcwB0AE0AZQBzAHMAYQBnAGUATwBwAHQAaQBvAG4AcwAuAGkAZABsAA0ACgAg
ACAAWwA3ADMANwAvADEAMAAzADcAXQAgAFIAZQBtAG8AdABlAEQATwBNAFcAaQBuAGQAbwB3AC4A
aQBkAGwADQAKACAAIABbADcAMwA4AC8AMQAwADMANwBdACAAUgBlAHMAaQB6AGUATwBiAHMAZQBy
AHYAZQByAC4AaQBkAGwADQAKACAAIABbADcAMwA5AC8AMQAwADMANwBdACAAUgBlAHMAaQB6AGUA
TwBiAHMAZQByAHYAZQByAEMAYQBsAGwAYgBhAGMAawAuAGkAZABsAA0ACgAgACAAWwA3ADQAMAAv
ADEAMAAzADcAXQAgAFIAZQBzAGkAegBlAE8AYgBzAGUAcgB2AGUAcgBFAG4AdAByAHkALgBpAGQA
bAANAAoAIAAgAFsANwA0ADEALwAxADAAMwA3AF0AIABTAGMAcgBlAGUAbgAuAGkAZABsAA0ACgAg
ACAAWwA3ADQAMgAvADEAMAAzADcAXQAgAFMAYwByAG8AbABsAEIAZQBoAGEAdgBpAG8AcgAuAGkA
ZABsAA0ACgAgACAAWwA3ADQAMwAvADEAMAAzADcAXQAgAFMAYwByAG8AbABsAEkAbgB0AG8AVgBp
AGUAdwBPAHAAdABpAG8AbgBzAC4AaQBkAGwADQAKACAAIABbADcANAA0AC8AMQAwADMANwBdACAA
UwBjAHIAbwBsAGwATABvAGcAaQBjAGEAbABQAG8AcwBpAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAg
AFsANwA0ADUALwAxADAAMwA3AF0AIABTAGMAcgBvAGwAbABPAHAAdABpAG8AbgBzAC4AaQBkAGwA
DQAKACAAIABbADcANAA2AC8AMQAwADMANwBdACAAUwBjAHIAbwBsAGwAVABvAE8AcAB0AGkAbwBu
AHMALgBpAGQAbAANAAoAIAAgAFsANwA0ADcALwAxADAAMwA3AF0AIABTAGgAYQByAGUARABhAHQA
YQAuAGkAZABsAA0ACgAgACAAWwA3ADQAOAAvADEAMAAzADcAXQAgAFUAbgBkAG8ASQB0AGUAbQAu
AGkAZABsAA0ACgAgACAAWwA3ADQAOQAvADEAMAAzADcAXQAgAFUAbgBkAG8ATQBhAG4AYQBnAGUA
cgAuAGkAZABsAA0ACgAgACAAWwA3ADUAMAAvADEAMAAzADcAXQAgAFYAaQBzAHUAYQBsAFYAaQBl
AHcAcABvAHIAdAAuAGkAZABsAA0ACgAgACAAWwA3ADUAMQAvADEAMAAzADcAXQAgAFcAZQBiAEsA
aQB0AFAAbwBpAG4AdAAuAGkAZABsAA0ACgAgACAAWwA3ADUAMgAvADEAMAAzADcAXQAgAFcAaQBu
AGQAbwB3AEUAdgBlAG4AdABIAGEAbgBkAGwAZQByAHMALgBpAGQAbAANAAoAIAAgAFsANwA1ADMA
LwAxADAAMwA3AF0AIABXAGkAbgBkAG8AdwBPAHIAVwBvAHIAawBlAHIARwBsAG8AYgBhAGwAUwBj
AG8AcABlAC4AaQBkAGwADQAKACAAIABbADcANQA0AC8AMQAwADMANwBdACAAVwBvAHIAawBlAHIA
TgBhAHYAaQBnAGEAdABvAHIALgBpAGQAbAANAAoAIAAgAFsANwA1ADUALwAxADAAMwA3AF0AIABE
AE8ATQBNAGkAbQBlAFQAeQBwAGUALgBpAGQAbAANAAoAIAAgAFsANwA1ADYALwAxADAAMwA3AF0A
IABEAE8ATQBNAGkAbQBlAFQAeQBwAGUAQQByAHIAYQB5AC4AaQBkAGwADQAKACAAIABbADcANQA3
AC8AMQAwADMANwBdACAARABPAE0AUABsAHUAZwBpAG4ALgBpAGQAbAANAAoAIAAgAFsANwA1ADgA
LwAxADAAMwA3AF0AIABEAE8ATQBQAGwAdQBnAGkAbgBBAHIAcgBhAHkALgBpAGQAbAANAAoAIAAg
AFsANwA1ADkALwAxADAAMwA3AF0AIABTAHQAbwByAGEAZwBlAC4AaQBkAGwADQAKACAAIABbADcA
NgAwAC8AMQAwADMANwBdACAAUwB0AG8AcgBhAGcAZQBFAHYAZQBuAHQALgBpAGQAbAANAAoAIAAg
AFsANwA2ADEALwAxADAAMwA3AF0AIABBAGIAcwB0AHIAYQBjAHQAVwBvAHIAawBlAHIALgBpAGQA
bAANAAoAIAAgAFsANwA2ADIALwAxADAAMwA3AF0AIABEAGUAZABpAGMAYQB0AGUAZABXAG8AcgBr
AGUAcgBHAGwAbwBiAGEAbABTAGMAbwBwAGUALgBpAGQAbAANAAoAIAAgAFsANwA2ADMALwAxADAA
MwA3AF0AIABXAG8AcgBrAGUAcgAuAGkAZABsAA0ACgAgACAAWwA3ADYANAAvADEAMAAzADcAXQAg
AFcAbwByAGsAZQByAEcAbABvAGIAYQBsAFMAYwBvAHAAZQAuAGkAZABsAA0ACgAgACAAWwA3ADYA
NQAvADEAMAAzADcAXQAgAFcAbwByAGsAZQByAEwAbwBjAGEAdABpAG8AbgAuAGkAZABsAA0ACgAg
ACAAWwA3ADYANgAvADEAMAAzADcAXQAgAFcAbwByAGsAZQByAFQAeQBwAGUALgBpAGQAbAANAAoA
IAAgAFsANwA2ADcALwAxADAAMwA3AF0AIABFAHgAdABlAG4AZABhAGIAbABlAEUAdgBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA3ADYAOAAvADEAMAAzADcAXQAgAEUAeAB0AGUAbgBkAGEAYgBsAGUA
RQB2AGUAbgB0AEkAbgBpAHQALgBpAGQAbAANAAoAIAAgAFsANwA2ADkALwAxADAAMwA3AF0AIABF
AHgAdABlAG4AZABhAGIAbABlAE0AZQBzAHMAYQBnAGUARQB2AGUAbgB0AC4AaQBkAGwADQAKACAA
IABbADcANwAwAC8AMQAwADMANwBdACAARgBlAHQAYwBoAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAg
ACAAWwA3ADcAMQAvADEAMAAzADcAXQAgAFMAZQByAHYAaQBjAGUAVwBvAHIAawBlAHIALgBpAGQA
bAANAAoAIAAgAFsANwA3ADIALwAxADAAMwA3AF0AIABTAGUAcgB2AGkAYwBlAFcAbwByAGsAZQBy
AEMAbABpAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADcANwAzAC8AMQAwADMANwBdACAAUwBlAHIA
dgBpAGMAZQBXAG8AcgBrAGUAcgBDAGwAaQBlAG4AdABUAHkAcABlAC4AaQBkAGwADQAKACAAIABb
ADcANwA0AC8AMQAwADMANwBdACAAUwBlAHIAdgBpAGMAZQBXAG8AcgBrAGUAcgBDAGwAaQBlAG4A
dABzAC4AaQBkAGwADQAKACAAIABbADcANwA1AC8AMQAwADMANwBdACAAUwBlAHIAdgBpAGMAZQBX
AG8AcgBrAGUAcgBDAG8AbgB0AGEAaQBuAGUAcgAuAGkAZABsAA0ACgAgACAAWwA3ADcANgAvADEA
MAAzADcAXQAgAFMAZQByAHYAaQBjAGUAVwBvAHIAawBlAHIARwBsAG8AYgBhAGwAUwBjAG8AcABl
AC4AaQBkAGwADQAKACAAIABbADcANwA3AC8AMQAwADMANwBdACAAUwBlAHIAdgBpAGMAZQBXAG8A
cgBrAGUAcgBSAGUAZwBpAHMAdAByAGEAdABpAG8AbgAuAGkAZABsAA0ACgAgACAAWwA3ADcAOAAv
ADEAMAAzADcAXQAgAFMAZQByAHYAaQBjAGUAVwBvAHIAawBlAHIAVQBwAGQAYQB0AGUAVgBpAGEA
QwBhAGMAaABlAC4AaQBkAGwADQAKACAAIABbADcANwA5AC8AMQAwADMANwBdACAAUwBlAHIAdgBp
AGMAZQBXAG8AcgBrAGUAcgBXAGkAbgBkAG8AdwBDAGwAaQBlAG4AdAAuAGkAZABsAA0ACgAgACAA
WwA3ADgAMAAvADEAMAAzADcAXQAgAFAAYQBpAG4AdABXAG8AcgBrAGwAZQB0AEcAbABvAGIAYQBs
AFMAYwBvAHAAZQAuAGkAZABsAA0ACgAgACAAWwA3ADgAMQAvADEAMAAzADcAXQAgAFcAbwByAGsA
bABlAHQALgBpAGQAbAANAAoAIAAgAFsANwA4ADIALwAxADAAMwA3AF0AIABXAG8AcgBrAGwAZQB0
AEcAbABvAGIAYQBsAFMAYwBvAHAAZQAuAGkAZABsAA0ACgAgACAAWwA3ADgAMwAvADEAMAAzADcA
XQAgAEQATwBNAFAAYQByAHMAZQByAC4AaQBkAGwADQAKACAAIABbADcAOAA0AC8AMQAwADMANwBd
ACAAWABNAEwASAB0AHQAcABSAGUAcQB1AGUAcwB0AC4AaQBkAGwADQAKACAAIABbADcAOAA1AC8A
MQAwADMANwBdACAAWABNAEwASAB0AHQAcABSAGUAcQB1AGUAcwB0AEUAdgBlAG4AdABUAGEAcgBn
AGUAdAAuAGkAZABsAA0ACgAgACAAWwA3ADgANgAvADEAMAAzADcAXQAgAFgATQBMAEgAdAB0AHAA
UgBlAHEAdQBlAHMAdABQAHIAbwBnAHIAZQBzAHMARQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABb
ADcAOAA3AC8AMQAwADMANwBdACAAWABNAEwASAB0AHQAcABSAGUAcQB1AGUAcwB0AFUAcABsAG8A
YQBkAC4AaQBkAGwADQAKACAAIABbADcAOAA4AC8AMQAwADMANwBdACAAWABNAEwAUwBlAHIAaQBh
AGwAaQB6AGUAcgAuAGkAZABsAA0ACgAgACAAWwA3ADgAOQAvADEAMAAzADcAXQAgAFgAUABhAHQA
aABFAHYAYQBsAHUAYQB0AG8AcgAuAGkAZABsAA0ACgAgACAAWwA3ADkAMAAvADEAMAAzADcAXQAg
AFgAUABhAHQAaABFAHgAcAByAGUAcwBzAGkAbwBuAC4AaQBkAGwADQAKACAAIABbADcAOQAxAC8A
MQAwADMANwBdACAAWABQAGEAdABoAE4AUwBSAGUAcwBvAGwAdgBlAHIALgBpAGQAbAANAAoAIAAg
AFsANwA5ADIALwAxADAAMwA3AF0AIABYAFAAYQB0AGgAUgBlAHMAdQBsAHQALgBpAGQAbAANAAoA
IAAgAFsANwA5ADMALwAxADAAMwA3AF0AIABYAFMATABUAFAAcgBvAGMAZQBzAHMAbwByAC4AaQBk
AGwADQAKACAAIABbADcAOQA0AC8AMQAwADMANwBdACAARwBhAG0AZQBwAGEAZAAuAGkAZABsAA0A
CgAgACAAWwA3ADkANQAvADEAMAAzADcAXQAgAEcAYQBtAGUAcABhAGQAQgB1AHQAdABvAG4ALgBp
AGQAbAANAAoAIAAgAFsANwA5ADYALwAxADAAMwA3AF0AIABHAGEAbQBlAHAAYQBkAEUAdgBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwA3ADkANwAvADEAMAAzADcAXQAgAE4AYQB2AGkAZwBhAHQAbwBy
AEcAYQBtAGUAcABhAGQALgBpAGQAbAANAAoAIAAgAFsANwA5ADgALwAxADAAMwA3AF0AIABOAGEA
dgBpAGcAYQB0AG8AcgBXAGUAYgBYAFIALgBpAGQAbAANAAoAIAAgAFsANwA5ADkALwAxADAAMwA3
AF0AIABXAGUAYgBYAFIAQgBvAHUAbgBkAGUAZABSAGUAZgBlAHIAZQBuAGMAZQBTAHAAYQBjAGUA
LgBpAGQAbAANAAoAIAAgAFsAOAAwADAALwAxADAAMwA3AF0AIABXAGUAYgBYAFIARgByAGEAbQBl
AC4AaQBkAGwADQAKACAAIABbADgAMAAxAC8AMQAwADMANwBdACAAVwBlAGIAWABSAEkAbgBwAHUA
dABTAG8AdQByAGMAZQAuAGkAZABsAA0ACgAgACAAWwA4ADAAMgAvADEAMAAzADcAXQAgAFcAZQBi
AFgAUgBJAG4AcAB1AHQAUwBvAHUAcgBjAGUAQQByAHIAYQB5AC4AaQBkAGwADQAKACAAIABbADgA
MAAzAC8AMQAwADMANwBdACAAVwBlAGIAWABSAEwAYQB5AGUAcgAuAGkAZABsAA0ACgAgACAAWwA4
ADAANAAvADEAMAAzADcAXQAgAFcAZQBiAFgAUgBQAG8AcwBlAC4AaQBkAGwADQAKACAAIABbADgA
MAA1AC8AMQAwADMANwBdACAAVwBlAGIAWABSAFIAZQBmAGUAcgBlAG4AYwBlAFMAcABhAGMAZQAu
AGkAZABsAA0ACgAgACAAWwA4ADAANgAvADEAMAAzADcAXQAgAFcAZQBiAFgAUgBSAGUAbgBkAGUA
cgBTAHQAYQB0AGUALgBpAGQAbAANAAoAIAAgAFsAOAAwADcALwAxADAAMwA3AF0AIABXAGUAYgBY
AFIAUgBpAGcAaQBkAFQAcgBhAG4AcwBmAG8AcgBtAC4AaQBkAGwADQAKACAAIABbADgAMAA4AC8A
MQAwADMANwBdACAAVwBlAGIAWABSAFMAZQBzAHMAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAOAAw
ADkALwAxADAAMwA3AF0AIABXAGUAYgBYAFIAUwBwAGEAYwBlAC4AaQBkAGwADQAKACAAIABbADgA
MQAwAC8AMQAwADMANwBdACAAVwBlAGIAWABSAFMAeQBzAHQAZQBtAC4AaQBkAGwADQAKACAAIABb
ADgAMQAxAC8AMQAwADMANwBdACAAVwBlAGIAWABSAFYAaQBlAHcALgBpAGQAbAANAAoAIAAgAFsA
OAAxADIALwAxADAAMwA3AF0AIABXAGUAYgBYAFIAVgBpAGUAdwBlAHIAUABvAHMAZQAuAGkAZABs
AA0ACgAgACAAWwA4ADEAMwAvADEAMAAzADcAXQAgAFcAZQBiAFgAUgBWAGkAZQB3AHAAbwByAHQA
LgBpAGQAbAANAAoAIAAgAFsAOAAxADQALwAxADAAMwA3AF0AIABXAGUAYgBYAFIAVwBlAGIARwBM
AEwAYQB5AGUAcgAuAGkAZABsAA0ACgAgACAAWwA4ADEANQAvADEAMAAzADcAXQAgAFgAUgBFAG4A
dgBpAHIAbwBuAG0AZQBuAHQAQgBsAGUAbgBkAE0AbwBkAGUALgBpAGQAbAANAAoAIAAgAFsAOAAx
ADYALwAxADAAMwA3AF0AIABYAFIARQB5AGUALgBpAGQAbAANAAoAIAAgAFsAOAAxADcALwAxADAA
MwA3AF0AIABYAFIARgByAGEAbQBlAFIAZQBxAHUAZQBzAHQAQwBhAGwAbABiAGEAYwBrAC4AaQBk
AGwADQAKACAAIABbADgAMQA4AC8AMQAwADMANwBdACAAWABSAEgAYQBuAGQAZQBkAG4AZQBzAHMA
LgBpAGQAbAANAAoAIAAgAFsAOAAxADkALwAxADAAMwA3AF0AIABYAFIASQBuAHAAdQB0AFMAbwB1
AHIAYwBlAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADIAMAAvADEAMAAzADcAXQAgAFgA
UgBJAG4AcAB1AHQAUwBvAHUAcgBjAGUAcwBDAGgAYQBuAGcAZQBFAHYAZQBuAHQALgBpAGQAbAAN
AAoAIAAgAFsAOAAyADEALwAxADAAMwA3AF0AIABYAFIASQBuAHQAZQByAGEAYwB0AGkAbwBuAE0A
bwBkAGUALgBpAGQAbAANAAoAIAAgAFsAOAAyADIALwAxADAAMwA3AF0AIABYAFIAUgBlAGYAZQBy
AGUAbgBjAGUAUwBwAGEAYwBlAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADIAMwAvADEA
MAAzADcAXQAgAFgAUgBSAGUAZgBlAHIAZQBuAGMAZQBTAHAAYQBjAGUAVAB5AHAAZQAuAGkAZABs
AA0ACgAgACAAWwA4ADIANAAvADEAMAAzADcAXQAgAFgAUgBSAGUAbgBkAGUAcgBTAHQAYQB0AGUA
SQBuAGkAdAAuAGkAZABsAA0ACgAgACAAWwA4ADIANQAvADEAMAAzADcAXQAgAFgAUgBTAGUAcwBz
AGkAbwBuAEUAdgBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADIANgAvADEAMAAzADcAXQAgAFgA
UgBTAGUAcwBzAGkAbwBuAEkAbgBpAHQALgBpAGQAbAANAAoAIAAgAFsAOAAyADcALwAxADAAMwA3
AF0AIABYAFIAUwBlAHMAcwBpAG8AbgBNAG8AZABlAC4AaQBkAGwADQAKACAAIABbADgAMgA4AC8A
MQAwADMANwBdACAAWABSAFQAYQByAGcAZQB0AFIAYQB5AE0AbwBkAGUALgBpAGQAbAANAAoAIAAg
AFsAOAAyADkALwAxADAAMwA3AF0AIABYAFIAVgBpAHMAaQBiAGkAbABpAHQAeQBTAHQAYQB0AGUA
LgBpAGQAbAANAAoAIAAgAFsAOAAzADAALwAxADAAMwA3AF0AIABYAFIAVwBlAGIARwBMAEwAYQB5
AGUAcgBJAG4AaQB0AC4AaQBkAGwADQAKACAAIABbADgAMwAxAC8AMQAwADMANwBdACAAUwBWAEcA
QQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgAMwAyAC8AMQAwADMANwBdACAAUwBW
AEcAQQBsAHQARwBsAHkAcABoAEQAZQBmAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
OAAzADMALwAxADAAMwA3AF0AIABTAFYARwBBAGwAdABHAGwAeQBwAGgARQBsAGUAbQBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA4ADMANAAvADEAMAAzADcAXQAgAFMAVgBHAEEAbAB0AEcAbAB5AHAA
aABJAHQAZQBtAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAAzADUALwAxADAAMwA3
AF0AIABTAFYARwBBAG4AZwBsAGUALgBpAGQAbAANAAoAIAAgAFsAOAAzADYALwAxADAAMwA3AF0A
IABTAFYARwBBAG4AaQBtAGEAdABlAEMAbwBsAG8AcgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAK
ACAAIABbADgAMwA3AC8AMQAwADMANwBdACAAUwBWAEcAQQBuAGkAbQBhAHQAZQBFAGwAZQBtAGUA
bgB0AC4AaQBkAGwADQAKACAAIABbADgAMwA4AC8AMQAwADMANwBdACAAUwBWAEcAQQBuAGkAbQBh
AHQAZQBNAG8AdABpAG8AbgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgAMwA5AC8A
MQAwADMANwBdACAAUwBWAEcAQQBuAGkAbQBhAHQAZQBUAHIAYQBuAHMAZgBvAHIAbQBFAGwAZQBt
AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgANAAwAC8AMQAwADMANwBdACAAUwBWAEcAQQBuAGkA
bQBhAHQAZQBkAEEAbgBnAGwAZQAuAGkAZABsAA0ACgAgACAAWwA4ADQAMQAvADEAMAAzADcAXQAg
AFMAVgBHAEEAbgBpAG0AYQB0AGUAZABCAG8AbwBsAGUAYQBuAC4AaQBkAGwADQAKACAAIABbADgA
NAAyAC8AMQAwADMANwBdACAAUwBWAEcAQQBuAGkAbQBhAHQAZQBkAEUAbgB1AG0AZQByAGEAdABp
AG8AbgAuAGkAZABsAA0ACgAgACAAWwA4ADQAMwAvADEAMAAzADcAXQAgAFMAVgBHAEEAbgBpAG0A
YQB0AGUAZABJAG4AdABlAGcAZQByAC4AaQBkAGwADQAKACAAIABbADgANAA0AC8AMQAwADMANwBd
ACAAUwBWAEcAQQBuAGkAbQBhAHQAZQBkAEwAZQBuAGcAdABoAC4AaQBkAGwADQAKACAAIABbADgA
NAA1AC8AMQAwADMANwBdACAAUwBWAEcAQQBuAGkAbQBhAHQAZQBkAEwAZQBuAGcAdABoAEwAaQBz
AHQALgBpAGQAbAANAAoAIAAgAFsAOAA0ADYALwAxADAAMwA3AF0AIABTAFYARwBBAG4AaQBtAGEA
dABlAGQATgB1AG0AYgBlAHIALgBpAGQAbAANAAoAIAAgAFsAOAA0ADcALwAxADAAMwA3AF0AIABT
AFYARwBBAG4AaQBtAGEAdABlAGQATgB1AG0AYgBlAHIATABpAHMAdAAuAGkAZABsAA0ACgAgACAA
WwA4ADQAOAAvADEAMAAzADcAXQAgAFMAVgBHAEEAbgBpAG0AYQB0AGUAZABQAHIAZQBzAGUAcgB2
AGUAQQBzAHAAZQBjAHQAUgBhAHQAaQBvAC4AaQBkAGwADQAKACAAIABbADgANAA5AC8AMQAwADMA
NwBdACAAUwBWAEcAQQBuAGkAbQBhAHQAZQBkAFIAZQBjAHQALgBpAGQAbAANAAoAIAAgAFsAOAA1
ADAALwAxADAAMwA3AF0AIABTAFYARwBBAG4AaQBtAGEAdABlAGQAUwB0AHIAaQBuAGcALgBpAGQA
bAANAAoAIAAgAFsAOAA1ADEALwAxADAAMwA3AF0AIABTAFYARwBBAG4AaQBtAGEAdABlAGQAVABy
AGEAbgBzAGYAbwByAG0ATABpAHMAdAAuAGkAZABsAA0ACgAgACAAWwA4ADUAMgAvADEAMAAzADcA
XQAgAFMAVgBHAEEAbgBpAG0AYQB0AGkAbwBuAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAg
AFsAOAA1ADMALwAxADAAMwA3AF0AIABTAFYARwBDAGkAcgBjAGwAZQBFAGwAZQBtAGUAbgB0AC4A
aQBkAGwADQAKACAAIABbADgANQA0AC8AMQAwADMANwBdACAAUwBWAEcAQwBsAGkAcABQAGEAdABo
AEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAA1ADUALwAxADAAMwA3AF0AIABTAFYA
RwBDAG8AbQBwAG8AbgBlAG4AdABUAHIAYQBuAHMAZgBlAHIARgB1AG4AYwB0AGkAbwBuAEUAbABl
AG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAA1ADYALwAxADAAMwA3AF0AIABTAFYARwBDAHUA
cgBzAG8AcgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgANQA3AC8AMQAwADMANwBd
ACAAUwBWAEcARABlAGYAcwBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgANQA4AC8A
MQAwADMANwBdACAAUwBWAEcARABlAHMAYwBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABb
ADgANQA5AC8AMQAwADMANwBdACAAUwBWAEcARABvAGMAdQBtAGUAbgB0AC4AaQBkAGwADQAKACAA
IABbADgANgAwAC8AMQAwADMANwBdACAAUwBWAEcARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAg
ACAAWwA4ADYAMQAvADEAMAAzADcAXQAgAFMAVgBHAEUAbABsAGkAcABzAGUARQBsAGUAbQBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwA4ADYAMgAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBCAGwAZQBu
AGQARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADYAMwAvADEAMAAzADcAXQAgAFMA
VgBHAEYARQBDAG8AbABvAHIATQBhAHQAcgBpAHgARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAg
ACAAWwA4ADYANAAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBDAG8AbQBwAG8AbgBlAG4AdABUAHIA
YQBuAHMAZgBlAHIARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADYANQAvADEAMAAz
ADcAXQAgAFMAVgBHAEYARQBDAG8AbQBwAG8AcwBpAHQAZQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwA
DQAKACAAIABbADgANgA2AC8AMQAwADMANwBdACAAUwBWAEcARgBFAEMAbwBuAHYAbwBsAHYAZQBN
AGEAdAByAGkAeABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgANgA3AC8AMQAwADMA
NwBdACAAUwBWAEcARgBFAEQAaQBmAGYAdQBzAGUATABpAGcAaAB0AGkAbgBnAEUAbABlAG0AZQBu
AHQALgBpAGQAbAANAAoAIAAgAFsAOAA2ADgALwAxADAAMwA3AF0AIABTAFYARwBGAEUARABpAHMA
cABsAGEAYwBlAG0AZQBuAHQATQBhAHAARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4
ADYAOQAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBEAGkAcwB0AGEAbgB0AEwAaQBnAGgAdABFAGwA
ZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgANwAwAC8AMQAwADMANwBdACAAUwBWAEcARgBF
AEQAcgBvAHAAUwBoAGEAZABvAHcARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADcA
MQAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBGAGwAbwBvAGQARQBsAGUAbQBlAG4AdAAuAGkAZABs
AA0ACgAgACAAWwA4ADcAMgAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBGAHUAbgBjAEEARQBsAGUA
bQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADcAMwAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBG
AHUAbgBjAEIARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADcANAAvADEAMAAzADcA
XQAgAFMAVgBHAEYARQBGAHUAbgBjAEcARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4
ADcANQAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBGAHUAbgBjAFIARQBsAGUAbQBlAG4AdAAuAGkA
ZABsAA0ACgAgACAAWwA4ADcANgAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBHAGEAdQBzAHMAaQBh
AG4AQgBsAHUAcgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgANwA3AC8AMQAwADMA
NwBdACAAUwBWAEcARgBFAEkAbQBhAGcAZQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABb
ADgANwA4AC8AMQAwADMANwBdACAAUwBWAEcARgBFAE0AZQByAGcAZQBFAGwAZQBtAGUAbgB0AC4A
aQBkAGwADQAKACAAIABbADgANwA5AC8AMQAwADMANwBdACAAUwBWAEcARgBFAE0AZQByAGcAZQBO
AG8AZABlAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAA4ADAALwAxADAAMwA3AF0A
IABTAFYARwBGAEUATQBvAHIAcABoAG8AbABvAGcAeQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAK
ACAAIABbADgAOAAxAC8AMQAwADMANwBdACAAUwBWAEcARgBFAE8AZgBmAHMAZQB0AEUAbABlAG0A
ZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAA4ADIALwAxADAAMwA3AF0AIABTAFYARwBGAEUAUABv
AGkAbgB0AEwAaQBnAGgAdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgAOAAzAC8A
MQAwADMANwBdACAAUwBWAEcARgBFAFMAcABlAGMAdQBsAGEAcgBMAGkAZwBoAHQAaQBuAGcARQBs
AGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADgANAAvADEAMAAzADcAXQAgAFMAVgBHAEYA
RQBTAHAAbwB0AEwAaQBnAGgAdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgAOAA1
AC8AMQAwADMANwBdACAAUwBWAEcARgBFAFQAaQBsAGUARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0A
CgAgACAAWwA4ADgANgAvADEAMAAzADcAXQAgAFMAVgBHAEYARQBUAHUAcgBiAHUAbABlAG4AYwBl
AEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAA4ADcALwAxADAAMwA3AF0AIABTAFYA
RwBGAGkAbAB0AGUAcgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgAOAA4AC8AMQAw
ADMANwBdACAAUwBWAEcARgBpAGwAdABlAHIAUAByAGkAbQBpAHQAaQB2AGUAUwB0AGEAbgBkAGEA
cgBkAEEAdAB0AHIAaQBiAHUAdABlAHMALgBpAGQAbAANAAoAIAAgAFsAOAA4ADkALwAxADAAMwA3
AF0AIABTAFYARwBGAGkAdABUAG8AVgBpAGUAdwBCAG8AeAAuAGkAZABsAA0ACgAgACAAWwA4ADkA
MAAvADEAMAAzADcAXQAgAFMAVgBHAEYAbwBuAHQARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAg
ACAAWwA4ADkAMQAvADEAMAAzADcAXQAgAFMAVgBHAEYAbwBuAHQARgBhAGMAZQBFAGwAZQBtAGUA
bgB0AC4AaQBkAGwADQAKACAAIABbADgAOQAyAC8AMQAwADMANwBdACAAUwBWAEcARgBvAG4AdABG
AGEAYwBlAEYAbwByAG0AYQB0AEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAA5ADMA
LwAxADAAMwA3AF0AIABTAFYARwBGAG8AbgB0AEYAYQBjAGUATgBhAG0AZQBFAGwAZQBtAGUAbgB0
AC4AaQBkAGwADQAKACAAIABbADgAOQA0AC8AMQAwADMANwBdACAAUwBWAEcARgBvAG4AdABGAGEA
YwBlAFMAcgBjAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOAA5ADUALwAxADAAMwA3
AF0AIABTAFYARwBGAG8AbgB0AEYAYQBjAGUAVQByAGkARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0A
CgAgACAAWwA4ADkANgAvADEAMAAzADcAXQAgAFMAVgBHAEYAbwByAGUAaQBnAG4ATwBiAGoAZQBj
AHQARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADkANwAvADEAMAAzADcAXQAgAFMA
VgBHAEcARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA4ADkAOAAvADEAMAAzADcAXQAg
AFMAVgBHAEcAZQBvAG0AZQB0AHIAeQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADgA
OQA5AC8AMQAwADMANwBdACAAUwBWAEcARwBsAHkAcABoAEUAbABlAG0AZQBuAHQALgBpAGQAbAAN
AAoAIAAgAFsAOQAwADAALwAxADAAMwA3AF0AIABTAFYARwBHAGwAeQBwAGgAUgBlAGYARQBsAGUA
bQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA5ADAAMQAvADEAMAAzADcAXQAgAFMAVgBHAEcAcgBh
AGQAaQBlAG4AdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkAMAAyAC8AMQAwADMA
NwBdACAAUwBWAEcARwByAGEAcABoAGkAYwBzAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAg
AFsAOQAwADMALwAxADAAMwA3AF0AIABTAFYARwBIAEsAZQByAG4ARQBsAGUAbQBlAG4AdAAuAGkA
ZABsAA0ACgAgACAAWwA5ADAANAAvADEAMAAzADcAXQAgAFMAVgBHAEkAbQBhAGcAZQBFAGwAZQBt
AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkAMAA1AC8AMQAwADMANwBdACAAUwBWAEcATABlAG4A
ZwB0AGgALgBpAGQAbAANAAoAIAAgAFsAOQAwADYALwAxADAAMwA3AF0AIABTAFYARwBMAGUAbgBn
AHQAaABMAGkAcwB0AC4AaQBkAGwADQAKACAAIABbADkAMAA3AC8AMQAwADMANwBdACAAUwBWAEcA
TABpAG4AZQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkAMAA4AC8AMQAwADMANwBd
ACAAUwBWAEcATABpAG4AZQBhAHIARwByAGEAZABpAGUAbgB0AEUAbABlAG0AZQBuAHQALgBpAGQA
bAANAAoAIAAgAFsAOQAwADkALwAxADAAMwA3AF0AIABTAFYARwBNAFAAYQB0AGgARQBsAGUAbQBl
AG4AdAAuAGkAZABsAA0ACgAgACAAWwA5ADEAMAAvADEAMAAzADcAXQAgAFMAVgBHAE0AYQByAGsA
ZQByAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOQAxADEALwAxADAAMwA3AF0AIABT
AFYARwBNAGEAcwBrAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOQAxADIALwAxADAA
MwA3AF0AIABTAFYARwBNAGEAdAByAGkAeAAuAGkAZABsAA0ACgAgACAAWwA5ADEAMwAvADEAMAAz
ADcAXQAgAFMAVgBHAE0AZQB0AGEAZABhAHQAYQBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAA
IABbADkAMQA0AC8AMQAwADMANwBdACAAUwBWAEcATQBpAHMAcwBpAG4AZwBHAGwAeQBwAGgARQBs
AGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA5ADEANQAvADEAMAAzADcAXQAgAFMAVgBHAE4A
dQBtAGIAZQByAC4AaQBkAGwADQAKACAAIABbADkAMQA2AC8AMQAwADMANwBdACAAUwBWAEcATgB1
AG0AYgBlAHIATABpAHMAdAAuAGkAZABsAA0ACgAgACAAWwA5ADEANwAvADEAMAAzADcAXQAgAFMA
VgBHAFAAYQB0AGgARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA5ADEAOAAvADEAMAAz
ADcAXQAgAFMAVgBHAFAAYQB0AGgAUwBlAGcALgBpAGQAbAANAAoAIAAgAFsAOQAxADkALwAxADAA
MwA3AF0AIABTAFYARwBQAGEAdABoAFMAZQBnAEEAcgBjAEEAYgBzAC4AaQBkAGwADQAKACAAIABb
ADkAMgAwAC8AMQAwADMANwBdACAAUwBWAEcAUABhAHQAaABTAGUAZwBBAHIAYwBSAGUAbAAuAGkA
ZABsAA0ACgAgACAAWwA5ADIAMQAvADEAMAAzADcAXQAgAFMAVgBHAFAAYQB0AGgAUwBlAGcAQwBs
AG8AcwBlAFAAYQB0AGgALgBpAGQAbAANAAoAIAAgAFsAOQAyADIALwAxADAAMwA3AF0AIABTAFYA
RwBQAGEAdABoAFMAZQBnAEMAdQByAHYAZQB0AG8AQwB1AGIAaQBjAEEAYgBzAC4AaQBkAGwADQAK
ACAAIABbADkAMgAzAC8AMQAwADMANwBdACAAUwBWAEcAUABhAHQAaABTAGUAZwBDAHUAcgB2AGUA
dABvAEMAdQBiAGkAYwBSAGUAbAAuAGkAZABsAA0ACgAgACAAWwA5ADIANAAvADEAMAAzADcAXQAg
AFMAVgBHAFAAYQB0AGgAUwBlAGcAQwB1AHIAdgBlAHQAbwBDAHUAYgBpAGMAUwBtAG8AbwB0AGgA
QQBiAHMALgBpAGQAbAANAAoAIAAgAFsAOQAyADUALwAxADAAMwA3AF0AIABTAFYARwBQAGEAdABo
AFMAZQBnAEMAdQByAHYAZQB0AG8AQwB1AGIAaQBjAFMAbQBvAG8AdABoAFIAZQBsAC4AaQBkAGwA
DQAKACAAIABbADkAMgA2AC8AMQAwADMANwBdACAAUwBWAEcAUABhAHQAaABTAGUAZwBDAHUAcgB2
AGUAdABvAFEAdQBhAGQAcgBhAHQAaQBjAEEAYgBzAC4AaQBkAGwADQAKACAAIABbADkAMgA3AC8A
MQAwADMANwBdACAAUwBWAEcAUABhAHQAaABTAGUAZwBDAHUAcgB2AGUAdABvAFEAdQBhAGQAcgBh
AHQAaQBjAFIAZQBsAC4AaQBkAGwADQAKACAAIABbADkAMgA4AC8AMQAwADMANwBdACAAUwBWAEcA
UABhAHQAaABTAGUAZwBDAHUAcgB2AGUAdABvAFEAdQBhAGQAcgBhAHQAaQBjAFMAbQBvAG8AdABo
AEEAYgBzAC4AaQBkAGwADQAKACAAIABbADkAMgA5AC8AMQAwADMANwBdACAAUwBWAEcAUABhAHQA
aABTAGUAZwBDAHUAcgB2AGUAdABvAFEAdQBhAGQAcgBhAHQAaQBjAFMAbQBvAG8AdABoAFIAZQBs
AC4AaQBkAGwADQAKACAAIABbADkAMwAwAC8AMQAwADMANwBdACAAUwBWAEcAUABhAHQAaABTAGUA
ZwBMAGkAbgBlAHQAbwBBAGIAcwAuAGkAZABsAA0ACgAgACAAWwA5ADMAMQAvADEAMAAzADcAXQAg
AFMAVgBHAFAAYQB0AGgAUwBlAGcATABpAG4AZQB0AG8ASABvAHIAaQB6AG8AbgB0AGEAbABBAGIA
cwAuAGkAZABsAA0ACgAgACAAWwA5ADMAMgAvADEAMAAzADcAXQAgAFMAVgBHAFAAYQB0AGgAUwBl
AGcATABpAG4AZQB0AG8ASABvAHIAaQB6AG8AbgB0AGEAbABSAGUAbAAuAGkAZABsAA0ACgAgACAA
WwA5ADMAMwAvADEAMAAzADcAXQAgAFMAVgBHAFAAYQB0AGgAUwBlAGcATABpAG4AZQB0AG8AUgBl
AGwALgBpAGQAbAANAAoAIAAgAFsAOQAzADQALwAxADAAMwA3AF0AIABTAFYARwBQAGEAdABoAFMA
ZQBnAEwAaQBuAGUAdABvAFYAZQByAHQAaQBjAGEAbABBAGIAcwAuAGkAZABsAA0ACgAgACAAWwA5
ADMANQAvADEAMAAzADcAXQAgAFMAVgBHAFAAYQB0AGgAUwBlAGcATABpAG4AZQB0AG8AVgBlAHIA
dABpAGMAYQBsAFIAZQBsAC4AaQBkAGwADQAKACAAIABbADkAMwA2AC8AMQAwADMANwBdACAAUwBW
AEcAUABhAHQAaABTAGUAZwBMAGkAcwB0AC4AaQBkAGwADQAKACAAIABbADkAMwA3AC8AMQAwADMA
NwBdACAAUwBWAEcAUABhAHQAaABTAGUAZwBNAG8AdgBlAHQAbwBBAGIAcwAuAGkAZABsAA0ACgAg
ACAAWwA5ADMAOAAvADEAMAAzADcAXQAgAFMAVgBHAFAAYQB0AGgAUwBlAGcATQBvAHYAZQB0AG8A
UgBlAGwALgBpAGQAbAANAAoAIAAgAFsAOQAzADkALwAxADAAMwA3AF0AIABTAFYARwBQAGEAdAB0
AGUAcgBuAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOQA0ADAALwAxADAAMwA3AF0A
IABTAFYARwBQAG8AaQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOQA0ADEALwAxADAAMwA3AF0AIABT
AFYARwBQAG8AaQBuAHQATABpAHMAdAAuAGkAZABsAA0ACgAgACAAWwA5ADQAMgAvADEAMAAzADcA
XQAgAFMAVgBHAFAAbwBsAHkAZwBvAG4ARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA5
ADQAMwAvADEAMAAzADcAXQAgAFMAVgBHAFAAbwBsAHkAbABpAG4AZQBFAGwAZQBtAGUAbgB0AC4A
aQBkAGwADQAKACAAIABbADkANAA0AC8AMQAwADMANwBdACAAUwBWAEcAUAByAGUAcwBlAHIAdgBl
AEEAcwBwAGUAYwB0AFIAYQB0AGkAbwAuAGkAZABsAA0ACgAgACAAWwA5ADQANQAvADEAMAAzADcA
XQAgAFMAVgBHAFIAYQBkAGkAYQBsAEcAcgBhAGQAaQBlAG4AdABFAGwAZQBtAGUAbgB0AC4AaQBk
AGwADQAKACAAIABbADkANAA2AC8AMQAwADMANwBdACAAUwBWAEcAUgBlAGMAdAAuAGkAZABsAA0A
CgAgACAAWwA5ADQANwAvADEAMAAzADcAXQAgAFMAVgBHAFIAZQBjAHQARQBsAGUAbQBlAG4AdAAu
AGkAZABsAA0ACgAgACAAWwA5ADQAOAAvADEAMAAzADcAXQAgAFMAVgBHAFIAZQBuAGQAZQByAGkA
bgBnAEkAbgB0AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkANAA5AC8AMQAwADMANwBdACAAUwBW
AEcAUwBWAEcARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA5ADUAMAAvADEAMAAzADcA
XQAgAFMAVgBHAFMAYwByAGkAcAB0AEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOQA1
ADEALwAxADAAMwA3AF0AIABTAFYARwBTAGUAdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAA
IABbADkANQAyAC8AMQAwADMANwBdACAAUwBWAEcAUwB0AG8AcABFAGwAZQBtAGUAbgB0AC4AaQBk
AGwADQAKACAAIABbADkANQAzAC8AMQAwADMANwBdACAAUwBWAEcAUwB0AHIAaQBuAGcATABpAHMA
dAAuAGkAZABsAA0ACgAgACAAWwA5ADUANAAvADEAMAAzADcAXQAgAFMAVgBHAFMAdAB5AGwAZQBF
AGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkANQA1AC8AMQAwADMANwBdACAAUwBWAEcA
UwB3AGkAdABjAGgARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA5ADUANgAvADEAMAAz
ADcAXQAgAFMAVgBHAFMAeQBtAGIAbwBsAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsA
OQA1ADcALwAxADAAMwA3AF0AIABTAFYARwBUAFIAZQBmAEUAbABlAG0AZQBuAHQALgBpAGQAbAAN
AAoAIAAgAFsAOQA1ADgALwAxADAAMwA3AF0AIABTAFYARwBUAFMAcABhAG4ARQBsAGUAbQBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwA5ADUAOQAvADEAMAAzADcAXQAgAFMAVgBHAFQAZQBzAHQAcwAu
AGkAZABsAA0ACgAgACAAWwA5ADYAMAAvADEAMAAzADcAXQAgAFMAVgBHAFQAZQB4AHQAQwBvAG4A
dABlAG4AdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkANgAxAC8AMQAwADMANwBd
ACAAUwBWAEcAVABlAHgAdABFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkANgAyAC8A
MQAwADMANwBdACAAUwBWAEcAVABlAHgAdABQAGEAdABoAEUAbABlAG0AZQBuAHQALgBpAGQAbAAN
AAoAIAAgAFsAOQA2ADMALwAxADAAMwA3AF0AIABTAFYARwBUAGUAeAB0AFAAbwBzAGkAdABpAG8A
bgBpAG4AZwBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkANgA0AC8AMQAwADMANwBd
ACAAUwBWAEcAVABpAHQAbABlAEUAbABlAG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOQA2ADUA
LwAxADAAMwA3AF0AIABTAFYARwBUAHIAYQBuAHMAZgBvAHIAbQAuAGkAZABsAA0ACgAgACAAWwA5
ADYANgAvADEAMAAzADcAXQAgAFMAVgBHAFQAcgBhAG4AcwBmAG8AcgBtAEwAaQBzAHQALgBpAGQA
bAANAAoAIAAgAFsAOQA2ADcALwAxADAAMwA3AF0AIABTAFYARwBVAFIASQBSAGUAZgBlAHIAZQBu
AGMAZQAuAGkAZABsAA0ACgAgACAAWwA5ADYAOAAvADEAMAAzADcAXQAgAFMAVgBHAFUAbgBpAHQA
VAB5AHAAZQBzAC4AaQBkAGwADQAKACAAIABbADkANgA5AC8AMQAwADMANwBdACAAUwBWAEcAVQBz
AGUARQBsAGUAbQBlAG4AdAAuAGkAZABsAA0ACgAgACAAWwA5ADcAMAAvADEAMAAzADcAXQAgAFMA
VgBHAFYASwBlAHIAbgBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkANwAxAC8AMQAw
ADMANwBdACAAUwBWAEcAVgBpAGUAdwBFAGwAZQBtAGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkA
NwAyAC8AMQAwADMANwBdACAAUwBWAEcAVgBpAGUAdwBTAHAAZQBjAC4AaQBkAGwADQAKACAAIABb
ADkANwAzAC8AMQAwADMANwBdACAAUwBWAEcAWgBvAG8AbQBBAG4AZABQAGEAbgAuAGkAZABsAA0A
CgAgACAAWwA5ADcANAAvADEAMAAzADcAXQAgAFMAVgBHAFoAbwBvAG0ARQB2AGUAbgB0AC4AaQBk
AGwADQAKACAAIABbADkANwA1AC8AMQAwADMANwBdACAAVwBlAGIASwBpAHQATQBlAGQAaQBhAEsA
ZQB5AE0AZQBzAHMAYQBnAGUARQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADkANwA2AC8AMQAw
ADMANwBdACAAVwBlAGIASwBpAHQATQBlAGQAaQBhAEsAZQB5AE4AZQBlAGQAZQBkAEUAdgBlAG4A
dAAuAGkAZABsAA0ACgAgACAAWwA5ADcANwAvADEAMAAzADcAXQAgAFcAZQBiAEsAaQB0AE0AZQBk
AGkAYQBLAGUAeQBTAGUAcwBzAGkAbwBuAC4AaQBkAGwADQAKACAAIABbADkANwA4AC8AMQAwADMA
NwBdACAAVwBlAGIASwBpAHQATQBlAGQAaQBhAEsAZQB5AHMALgBpAGQAbAANAAoAIAAgAFsAOQA3
ADkALwAxADAAMwA3AF0AIABXAGUAYgBLAGkAdABNAGUAZABpAGEASwBlAHkARQByAHIAbwByAC4A
aQBkAGwADQAKACAAIABbADkAOAAwAC8AMQAwADMANwBdACAAQQBOAEcATABFAEkAbgBzAHQAYQBu
AGMAZQBkAEEAcgByAGEAeQBzAC4AaQBkAGwADQAKACAAIABbADkAOAAxAC8AMQAwADMANwBdACAA
RQBYAFQAQgBsAGUAbgBkAE0AaQBuAE0AYQB4AC4AaQBkAGwADQAKACAAIABbADkAOAAyAC8AMQAw
ADMANwBdACAARQBYAFQAQwBvAGwAbwByAEIAdQBmAGYAZQByAEYAbABvAGEAdAAuAGkAZABsAA0A
CgAgACAAWwA5ADgAMwAvADEAMAAzADcAXQAgAEUAWABUAEMAbwBsAG8AcgBCAHUAZgBmAGUAcgBI
AGEAbABmAEYAbABvAGEAdAAuAGkAZABsAA0ACgAgACAAWwA5ADgANAAvADEAMAAzADcAXQAgAEUA
WABUAEYAcgBhAGcARABlAHAAdABoAC4AaQBkAGwADQAKACAAIABbADkAOAA1AC8AMQAwADMANwBd
ACAARQBYAFQAUwBoAGEAZABlAHIAVABlAHgAdAB1AHIAZQBMAE8ARAAuAGkAZABsAA0ACgAgACAA
WwA5ADgANgAvADEAMAAzADcAXQAgAEUAWABUAFQAZQB4AHQAdQByAGUARgBpAGwAdABlAHIAQQBu
AGkAcwBvAHQAcgBvAHAAaQBjAC4AaQBkAGwADQAKACAAIABbADkAOAA3AC8AMQAwADMANwBdACAA
RQBYAFQAcwBSAEcAQgAuAGkAZABsAA0ACgAgACAAWwA5ADgAOAAvADEAMAAzADcAXQAgAE8ARQBT
AEUAbABlAG0AZQBuAHQASQBuAGQAZQB4AFUAaQBuAHQALgBpAGQAbAANAAoAIAAgAFsAOQA4ADkA
LwAxADAAMwA3AF0AIABPAEUAUwBTAHQAYQBuAGQAYQByAGQARABlAHIAaQB2AGEAdABpAHYAZQBz
AC4AaQBkAGwADQAKACAAIABbADkAOQAwAC8AMQAwADMANwBdACAATwBFAFMAVABlAHgAdAB1AHIA
ZQBGAGwAbwBhAHQALgBpAGQAbAANAAoAIAAgAFsAOQA5ADEALwAxADAAMwA3AF0AIABPAEUAUwBU
AGUAeAB0AHUAcgBlAEYAbABvAGEAdABMAGkAbgBlAGEAcgAuAGkAZABsAA0ACgAgACAAWwA5ADkA
MgAvADEAMAAzADcAXQAgAE8ARQBTAFQAZQB4AHQAdQByAGUASABhAGwAZgBGAGwAbwBhAHQALgBp
AGQAbAANAAoAIAAgAFsAOQA5ADMALwAxADAAMwA3AF0AIABPAEUAUwBUAGUAeAB0AHUAcgBlAEgA
YQBsAGYARgBsAG8AYQB0AEwAaQBuAGUAYQByAC4AaQBkAGwADQAKACAAIABbADkAOQA0AC8AMQAw
ADMANwBdACAATwBFAFMAVgBlAHIAdABlAHgAQQByAHIAYQB5AE8AYgBqAGUAYwB0AC4AaQBkAGwA
DQAKACAAIABbADkAOQA1AC8AMQAwADMANwBdACAAVwBlAGIARwBMADIAUgBlAG4AZABlAHIAaQBu
AGcAQwBvAG4AdABlAHgAdAAuAGkAZABsAA0ACgAgACAAWwA5ADkANgAvADEAMAAzADcAXQAgAFcA
ZQBiAEcATABBAGMAdABpAHYAZQBJAG4AZgBvAC4AaQBkAGwADQAKACAAIABbADkAOQA3AC8AMQAw
ADMANwBdACAAVwBlAGIARwBMAEIAdQBmAGYAZQByAC4AaQBkAGwADQAKACAAIABbADkAOQA4AC8A
MQAwADMANwBdACAAVwBlAGIARwBMAEMAbwBsAG8AcgBCAHUAZgBmAGUAcgBGAGwAbwBhAHQALgBp
AGQAbAANAAoAIAAgAFsAOQA5ADkALwAxADAAMwA3AF0AIABXAGUAYgBHAEwAQwBvAG0AcAByAGUA
cwBzAGUAZABUAGUAeAB0AHUAcgBlAEEAUwBUAEMALgBpAGQAbAANAAoAIAAgAFsAMQAwADAAMAAv
ADEAMAAzADcAXQAgAFcAZQBiAEcATABDAG8AbQBwAHIAZQBzAHMAZQBkAFQAZQB4AHQAdQByAGUA
QQBUAEMALgBpAGQAbAANAAoAIAAgAFsAMQAwADAAMQAvADEAMAAzADcAXQAgAFcAZQBiAEcATABD
AG8AbQBwAHIAZQBzAHMAZQBkAFQAZQB4AHQAdQByAGUARQBUAEMALgBpAGQAbAANAAoAIAAgAFsA
MQAwADAAMgAvADEAMAAzADcAXQAgAFcAZQBiAEcATABDAG8AbQBwAHIAZQBzAHMAZQBkAFQAZQB4
AHQAdQByAGUARQBUAEMAMQAuAGkAZABsAA0ACgAgACAAWwAxADAAMAAzAC8AMQAwADMANwBdACAA
VwBlAGIARwBMAEMAbwBtAHAAcgBlAHMAcwBlAGQAVABlAHgAdAB1AHIAZQBQAFYAUgBUAEMALgBp
AGQAbAANAAoAIAAgAFsAMQAwADAANAAvADEAMAAzADcAXQAgAFcAZQBiAEcATABDAG8AbQBwAHIA
ZQBzAHMAZQBkAFQAZQB4AHQAdQByAGUAUwAzAFQAQwAuAGkAZABsAA0ACgAgACAAWwAxADAAMAA1
AC8AMQAwADMANwBdACAAVwBlAGIARwBMAEMAbwBuAHQAZQB4AHQAQQB0AHQAcgBpAGIAdQB0AGUA
cwAuAGkAZABsAA0ACgAgACAAWwAxADAAMAA2AC8AMQAwADMANwBdACAAVwBlAGIARwBMAEMAbwBu
AHQAZQB4AHQARQB2AGUAbgB0AC4AaQBkAGwADQAKACAAIABbADEAMAAwADcALwAxADAAMwA3AF0A
IABXAGUAYgBHAEwARABlAGIAdQBnAFIAZQBuAGQAZQByAGUAcgBJAG4AZgBvAC4AaQBkAGwADQAK
ACAAIABbADEAMAAwADgALwAxADAAMwA3AF0AIABXAGUAYgBHAEwARABlAGIAdQBnAFMAaABhAGQA
ZQByAHMALgBpAGQAbAANAAoAIAAgAFsAMQAwADAAOQAvADEAMAAzADcAXQAgAFcAZQBiAEcATABE
AGUAcAB0AGgAVABlAHgAdAB1AHIAZQAuAGkAZABsAA0ACgAgACAAWwAxADAAMQAwAC8AMQAwADMA
NwBdACAAVwBlAGIARwBMAEQAcgBhAHcAQgB1AGYAZgBlAHIAcwAuAGkAZABsAA0ACgAgACAAWwAx
ADAAMQAxAC8AMQAwADMANwBdACAAVwBlAGIARwBMAEYAcgBhAG0AZQBiAHUAZgBmAGUAcgAuAGkA
ZABsAA0ACgAgACAAWwAxADAAMQAyAC8AMQAwADMANwBdACAAVwBlAGIARwBMAEwAbwBzAGUAQwBv
AG4AdABlAHgAdAAuAGkAZABsAA0ACgAgACAAWwAxADAAMQAzAC8AMQAwADMANwBdACAAVwBlAGIA
RwBMAFAAcgBvAGcAcgBhAG0ALgBpAGQAbAANAAoAIAAgAFsAMQAwADEANAAvADEAMAAzADcAXQAg
AFcAZQBiAEcATABRAHUAZQByAHkALgBpAGQAbAANAAoAIAAgAFsAMQAwADEANQAvADEAMAAzADcA
XQAgAFcAZQBiAEcATABSAGUAbgBkAGUAcgBiAHUAZgBmAGUAcgAuAGkAZABsAA0ACgAgACAAWwAx
ADAAMQA2AC8AMQAwADMANwBdACAAVwBlAGIARwBMAFIAZQBuAGQAZQByAGkAbgBnAEMAbwBuAHQA
ZQB4AHQALgBpAGQAbAANAAoAIAAgAFsAMQAwADEANwAvADEAMAAzADcAXQAgAFcAZQBiAEcATABS
AGUAbgBkAGUAcgBpAG4AZwBDAG8AbgB0AGUAeAB0AEIAYQBzAGUALgBpAGQAbAANAAoAIAAgAFsA
MQAwADEAOAAvADEAMAAzADcAXQAgAFcAZQBiAEcATABTAGEAbQBwAGwAZQByAC4AaQBkAGwADQAK
ACAAIABbADEAMAAxADkALwAxADAAMwA3AF0AIABXAGUAYgBHAEwAUwBoAGEAZABlAHIALgBpAGQA
bAANAAoAIAAgAFsAMQAwADIAMAAvADEAMAAzADcAXQAgAFcAZQBiAEcATABTAGgAYQBkAGUAcgBQ
AHIAZQBjAGkAcwBpAG8AbgBGAG8AcgBtAGEAdAAuAGkAZABsAA0ACgAgACAAWwAxADAAMgAxAC8A
MQAwADMANwBdACAAVwBlAGIARwBMAFMAeQBuAGMALgBpAGQAbAANAAoAIAAgAFsAMQAwADIAMgAv
ADEAMAAzADcAXQAgAFcAZQBiAEcATABUAGUAeAB0AHUAcgBlAC4AaQBkAGwADQAKACAAIABbADEA
MAAyADMALwAxADAAMwA3AF0AIABXAGUAYgBHAEwAVAByAGEAbgBzAGYAbwByAG0ARgBlAGUAZABi
AGEAYwBrAC4AaQBkAGwADQAKACAAIABbADEAMAAyADQALwAxADAAMwA3AF0AIABXAGUAYgBHAEwA
VQBuAGkAZgBvAHIAbQBMAG8AYwBhAHQAaQBvAG4ALgBpAGQAbAANAAoAIAAgAFsAMQAwADIANQAv
ADEAMAAzADcAXQAgAFcAZQBiAEcATABWAGUAcgB0AGUAeABBAHIAcgBhAHkATwBiAGoAZQBjAHQA
LgBpAGQAbAANAAoAIAAgAFsAMQAwADIANgAvADEAMAAzADcAXQAgAFcAZQBiAEcATABWAGUAcgB0
AGUAeABBAHIAcgBhAHkATwBiAGoAZQBjAHQATwBFAFMALgBpAGQAbAANAAoAIAAgAFsAMQAwADIA
NwAvADEAMAAzADcAXQAgAEQATwBNAFcAaQBuAGQAbwB3AFEAdQBvAHQAYQAuAGkAZABsAA0ACgAg
ACAAWwAxADAAMgA4AC8AMQAwADMANwBdACAATgBhAHYAaQBnAGEAdABvAHIAUwB0AG8AcgBhAGcA
ZQBRAHUAbwB0AGEALgBpAGQAbAANAAoAIAAgAFsAMQAwADIAOQAvADEAMAAzADcAXQAgAFMAdABv
AHIAYQBnAGUARQByAHIAbwByAEMAYQBsAGwAYgBhAGMAawAuAGkAZABsAA0ACgAgACAAWwAxADAA
MwAwAC8AMQAwADMANwBdACAAUwB0AG8AcgBhAGcAZQBJAG4AZgBvAC4AaQBkAGwADQAKACAAIABb
ADEAMAAzADEALwAxADAAMwA3AF0AIABTAHQAbwByAGEAZwBlAFEAdQBvAHQAYQAuAGkAZABsAA0A
CgAgACAAWwAxADAAMwAyAC8AMQAwADMANwBdACAAUwB0AG8AcgBhAGcAZQBRAHUAbwB0AGEAQwBh
AGwAbABiAGEAYwBrAC4AaQBkAGwADQAKACAAIABbADEAMAAzADMALwAxADAAMwA3AF0AIABTAHQA
bwByAGEAZwBlAFUAcwBhAGcAZQBDAGEAbABsAGIAYQBjAGsALgBpAGQAbAANAAoAIAAgAFsAMQAw
ADMANAAvADEAMAAzADcAXQAgAFcAbwByAGsAZQByAE4AYQB2AGkAZwBhAHQAbwByAFMAdABvAHIA
YQBnAGUAUQB1AG8AdABhAC4AaQBkAGwADQAKACAAIABbADEAMAAzADUALwAxADAAMwA3AF0AIABV
AHMAZQByAE0AZQBzAHMAYQBnAGUASABhAG4AZABsAGUAcgAuAGkAZABsAA0ACgAgACAAWwAxADAA
MwA2AC8AMQAwADMANwBdACAAVQBzAGUAcgBNAGUAcwBzAGEAZwBlAEgAYQBuAGQAbABlAHIAcwBO
AGEAbQBlAHMAcABhAGMAZQAuAGkAZABsAA0ACgAgACAAWwAxADAAMwA3AC8AMQAwADMANwBdACAA
VwBlAGIASwBpAHQATgBhAG0AZQBzAHAAYQBjAGUALgBpAGQAbAANAAoARgBpAG4AYQBsAGkAegBl
AEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBnACAAZgBpAGwA
ZQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIAQwBvAHIAZQBCAGkAbgBkAGkAbgBn
AHMAXABXAGUAYgBDAG8AcgBlAEIAaQBuAGQAaQBuAGcAcwAuAHQAbABvAGcAXAB1AG4AcwB1AGMA
YwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkAbgBnACAAIgB4
ADYANABcAFIAZQBsAGUAYQBzAGUAXABXAGUAYgBDAG8AcgBlAEIAaQBuAGQAaQBuAGcAcwBcAFcA
ZQBiAEMAbwByAGUAQgBpAG4AZABpAG4AZwBzAC4AdABsAG8AZwBcAFcAZQBiAEMAbwByAGUAQgBp
AG4AZABpAG4AZwBzAC4AbABhAHMAdABiAHUAaQBsAGQAcwB0AGEAdABlACIALgANAAoARABvAG4A
ZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUA
cgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAVwBlAGIAQwBvAHIAZQBCAGkAbgBkAGkAbgBnAHMALgB2
AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4A
DQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFcAZQBiAEMAbwByAGUAQgBpAG4AZABp
AG4AZwBzAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkA
bABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBn
ACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwBy
AGUAXABXAGUAYgBDAG8AcgBlAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAA
KABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAgAC0ALQAgAEYAQQBJAEwARQBE
AC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBD
AG8AcgBlAFwAVwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQALgB2AGMAeABwAHIA
bwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADQANwApACAAaQBzACAAYgB1AGkAbABkAGkAbgBn
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFcAZQBiAEMAbwBy
AGUAVABlAHMAdABTAHUAcABwAG8AcgB0AEIAaQBuAGQAaQBuAGcAcwAuAHYAYwB4AHAAcgBvAGoA
LgBtAGUAdABhAHAAcgBvAGoAIgAgACgANQAyACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBl
AGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABXAGUAYgBDAG8AcgBlAFQA
ZQBzAHQAUwB1AHAAcABvAHIAdABCAGkAbgBkAGkAbgBnAHMALgB2AGMAeABwAHIAbwBqAC4AbQBl
AHQAYQBwAHIAbwBqACIAIAAoADUAMgApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFcAZQBiAEMAbwByAGUAVABlAHMA
dABTAHUAcABwAG8AcgB0AEIAaQBuAGQAaQBuAGcAcwAuAHYAYwB4AHAAcgBvAGoAIgAgACgANQAz
ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgA
cwApACkALgANAAoAQwBvAHIAZQBDAGwAZQBhAG4AOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAg
AGQAaQByAGUAYwB0AG8AcgB5ACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABXAGUAYgBDAG8A
cgBlAFQAZQBzAHQAUwB1AHAAcABvAHIAdABCAGkAbgBkAGkAbgBnAHMAXAAiAC4ADQAKAFAAcgBl
AHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkA
cgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIAQwBvAHIAZQBU
AGUAcwB0AFMAdQBwAHAAbwByAHQAQgBpAG4AZABpAG4AZwBzAFwAVwBlAGIAQwBvAHIAZQBUAC4A
RABDADMARABDAEEAMgBFAC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABpAHoAZQBC
AHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIAeAA2ADQA
XABSAGUAbABlAGEAcwBlAFwAVwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQAQgBp
AG4AZABpAG4AZwBzAFwAVwBlAGIAQwBvAHIAZQBUAC4ARABDADMARABDAEEAMgBFAC4AdABsAG8A
ZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiACAAYgBlAGMAYQB1AHMAZQAg
ACIAQQBsAHcAYQB5AHMAQwByAGUAYQB0AGUAIgAgAHcAYQBzACAAcwBwAGUAYwBpAGYAaQBlAGQA
LgANAAoAQwB1AHMAdABvAG0AQgB1AGkAbABkADoADQAKACAAIABHAGUAbgBlAHIAYQB0AGUAIABi
AGkAbgBkAGkAbgBnAHMAIAAoAFcAZQBiAEMAbwByAGUAVABlAHMAdABTAHUAcABwAG8AcgB0AEIA
aQBuAGQAaQBuAGcAcwApAA0ACgAgACAAWwAxAC8AMQAzAF0AIABHAEMATwBiAHMAZQByAHYAYQB0
AGkAbwBuAC4AaQBkAGwADQAKACAAIABbADIALwAxADMAXQAgAEkAbgB0AGUAcgBuAGEAbABTAGUA
dAB0AGkAbgBnAHMALgBpAGQAbAANAAoAIAAgAFsAMwAvADEAMwBdACAASQBuAHQAZQByAG4AYQBs
AHMALgBpAGQAbAANAAoAIAAgAFsANAAvADEAMwBdACAASQBuAHQAZQByAG4AYQBsAHMATQBhAHAA
TABpAGsAZQAuAGkAZABsAA0ACgAgACAAWwA1AC8AMQAzAF0AIABJAG4AdABlAHIAbgBhAGwAcwBT
AGUAdABMAGkAawBlAC4AaQBkAGwADQAKACAAIABbADYALwAxADMAXQAgAE0AYQBsAGwAbwBjAFMA
dABhAHQAaQBzAHQAaQBjAHMALgBpAGQAbAANAAoAIAAgAFsANwAvADEAMwBdACAATQBlAG0AbwBy
AHkASQBuAGYAbwAuAGkAZABsAA0ACgAgACAAWwA4AC8AMQAzAF0AIABNAG8AYwBrAEMARABNAEYA
YQBjAHQAbwByAHkALgBpAGQAbAANAAoAIAAgAFsAOQAvADEAMwBdACAATQBvAGMAawBDAG8AbgB0
AGUAbgB0AEYAaQBsAHQAZQByAFMAZQB0AHQAaQBuAGcAcwAuAGkAZABsAA0ACgAgACAAWwAxADAA
LwAxADMAXQAgAE0AbwBjAGsAUABhAGcAZQBPAHYAZQByAGwAYQB5AC4AaQBkAGwADQAKACAAIABb
ADEAMQAvADEAMwBdACAAUwBlAHIAdgBpAGMAZQBXAG8AcgBrAGUAcgBJAG4AdABlAHIAbgBhAGwA
cwAuAGkAZABsAA0ACgAgACAAWwAxADIALwAxADMAXQAgAFQAeQBwAGUAQwBvAG4AdgBlAHIAcwBp
AG8AbgBzAC4AaQBkAGwADQAKACAAIABbADEAMwAvADEAMwBdACAASQBuAHQAZQByAG4AYQBsAFMA
ZQB0AHQAaQBuAGcAcwBHAGUAbgBlAHIAYQB0AGUAZAAuAGkAZABsAA0ACgAgACAAQgB1AGkAbABk
AGkAbgBnACAAQwB1AHMAdABvAG0AIABSAHUAbABlACAARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsA
aQB0AC8AdwBlAGIAawBpAHQALwBTAG8AdQByAGMAZQAvAFcAZQBiAEMAbwByAGUALwBDAE0AYQBr
AGUATABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEA
dAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUAIAAiAHgANgA0AFwAUgBl
AGwAZQBhAHMAZQBcAFcAZQBiAEMAbwByAGUAVABlAHMAdABTAHUAcABwAG8AcgB0AEIAaQBuAGQA
aQBuAGcAcwBcAFcAZQBiAEMAbwByAGUAVAAuAEQAQwAzAEQAQwBBADIARQAuAHQAbABvAGcAXAB1
AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkA
bgBnACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABXAGUAYgBDAG8AcgBlAFQAZQBzAHQAUwB1
AHAAcABvAHIAdABCAGkAbgBkAGkAbgBnAHMAXABXAGUAYgBDAG8AcgBlAFQALgBEAEMAMwBEAEMA
QQAyAEUALgB0AGwAbwBnAFwAVwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwByAHQAQgBp
AG4AZABpAG4AZwBzAC4AbABhAHMAdABiAHUAaQBsAGQAcwB0AGEAdABlACIALgANAAoARABvAG4A
ZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUA
cgBjAGUAXABXAGUAYgBDAG8AcgBlAFwAVwBlAGIAQwBvAHIAZQBUAGUAcwB0AFMAdQBwAHAAbwBy
AHQAQgBpAG4AZABpAG4AZwBzAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAA
dABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUABy
AG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEMAbwByAGUAXABX
AGUAYgBDAG8AcgBlAFQAZQBzAHQAUwB1AHAAcABvAHIAdABCAGkAbgBkAGkAbgBnAHMALgB2AGMA
eABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBn
AGUAdAAoAHMAKQApAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUA
YwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIAQwBvAHIAZQBcAFcAZQBiAEMA
bwByAGUAVABlAHMAdABTAHUAcABwAG8AcgB0AC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcABy
AG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAgAC0ALQAgAEYA
QQBJAEwARQBEAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0
ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQBc
AEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQBMAGkAYgAuAHYAYwB4AHAAcgBvAGoALgBtAGUA
dABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkAIAAt
AC0AIABGAEEASQBMAEUARAAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8A
agBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQA
cgBlAGUAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUALgB2AGMAeABwAHIAbwBqAC4AbQBl
AHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApACAA
LQAtACAARgBBAEkATABFAEQALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAEwA
TABfAEIAVQBJAEwARAAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgAp
ACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAEkAbQBh
AGcAZQBEAGkAZgBmAFwASQBtAGEAZwBlAEQAaQBmAGYALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQA
YQBwAHIAbwBqACIAIAAoADUAOAApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBs
AGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwAVABvAG8AbABzAFwASQBtAGEAZwBlAEQAaQBmAGYAXABJAG0AYQBnAGUARABpAGYAZgAuAHYA
YwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANQA4ACkAIABpAHMAIABiAHUAaQBs
AGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwASQBtAGEAZwBlAEQAaQBmAGYAXABJ
AG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoA
IgAgACgANQA5ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBs
AHMAXABJAG0AYQBnAGUARABpAGYAZgBcAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AdgBjAHgA
cAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA1ADkAKQAgAGkAcwAgAGIAdQBpAGwAZABp
AG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABJAG0AYQBnAGUARABpAGYAZgBcAEkAbQBh
AGcAZQBEAGkAZgBmAEwAaQBiAC4AdgBjAHgAcAByAG8AagAiACAAKAA2ADAAKQAgAG8AbgAgAG4A
bwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBD
AG8AcgBlAEMAbABlAGEAbgA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQA
bwByAHkAIAAiAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwAIgAuAA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwAZAA6AA0ACgAgACAAQwByAGUA
YQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBi
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBtAGEAZwBlAEQAaQBmAGYATABpAGIALgB0AGwA
bwBnAFwAIgAuAA0ACgBJAG4AaQB0AGkAYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6
AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAIgBJAG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AdABsAG8AZwBc
AHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiACAAYgBlAGMAYQB1AHMAZQAgACIA
QQBsAHcAYQB5AHMAQwByAGUAYQB0AGUAIgAgAHcAYQBzACAAcwBwAGUAYwBpAGYAaQBlAGQALgAN
AAoAQwB1AHMAdABvAG0AQgB1AGkAbABkADoADQAKACAAIABCAHUAaQBsAGQAaQBuAGcAIABDAHUA
cwB0AG8AbQAgAFIAdQBsAGUAIABGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBr
AGkAdAAvAFQAbwBvAGwAcwAvAEkAbQBhAGcAZQBEAGkAZgBmAC8AQwBNAGEAawBlAEwAaQBzAHQA
cwAuAHQAeAB0AA0ACgBDAGwAQwBvAG0AcABpAGwAZQA6AA0ACgAgACAAQwA6AFwAUAByAG8AZwBy
AGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0AaQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMA
dQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABFAG4AdABlAHIAcAByAGkAcwBlAFwAVgBD
AFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAuADIANgAuADIAOAA4ADAAMQBcAGIAaQBuAFwA
SABvAHMAdABYADYANABcAHgANgA0AFwAQwBMAC4AZQB4AGUAIAAvAGMAIAAvAEkARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABXAGUAYgBLAGkAdABMAGkAYgByAGEA
cgBpAGUAcwBcAHcAaQBuAFwAaQBuAGMAbAB1AGQAZQAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAEkAbQBhAGcAZQBEAGkAZgBmACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBp
AHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAXABjAGEAaQByAG8A
IAAvAFoAaQAgAC8AbgBvAGwAbwBnAG8AIAAvAFcANAAgAC8AVwBYAC0AIAAvAGQAaQBhAGcAbgBv
AHMAdABpAGMAcwA6AGMAbwBsAHUAbQBuACAALwBNAFAAIAAvAE8AMgAgAC8ATwBiADIAIAAvAE8A
eQAtACAALwBEACAAVwBJAE4AMwAyACAALwBEACAAXwBXAEkATgBEAE8AVwBTACAALwBEACAATgBE
AEUAQgBVAEcAIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBJAG0AYQBnAGUARABpAGYAZgAgAC8A
RAAgAFUAUwBFAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAEIAVQBJAEwARABJAE4ARwBfAFcASQBU
AEgAXwBDAE0AQQBLAEUAPQAxACAALwBEACAASABBAFYARQBfAEMATwBOAEYASQBHAF8ASAA9ADEA
IAAvAEQAIABXAEkATgBWAEUAUgA9ADAAeAA2ADAAMQAgAC8ARAAgAF8AVwBJAE4AMwAyAF8AVwBJ
AE4ATgBUAD0AMAB4ADYAMAAxACAALwBEACAATgBPAE0ASQBOAE0AQQBYACAALwBEACAAVQBOAEkA
QwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8ASABBAFMAXwBFAFgAQwBF
AFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAE4ATwBfAFcA
QQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAEMAUABQAF8ATwBW
AEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBEAF8ATgBBAE0ARQBTAD0AMQAgAC8ARAAgAF8A
VwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQAIABXAFQARgBfAFAATABBAFQARgBPAFIATQBf
AFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAE4ATwBDAFIAWQBQAFQAIAAvAEQAIAAiAEMA
TQBBAEsARQBfAEkATgBUAEQASQBSAD0AXAAiAFIAZQBsAGUAYQBzAGUAXAAiACIAIAAvAEQAIABJ
AG0AYQBnAGUARABpAGYAZgBMAGkAYgBfAEUAWABQAE8AUgBUAFMAIAAvAEQAIABfAFcASQBOAEQA
TABMACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBt
AC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgA
YwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBw
AGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcA
IAAvAEYAbwAiAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwAXAAiACAALwBGAGQAIgBJAG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAHYAYwAxADQAMgAuAHAAZABiACIAIAAvAEcAZAAgAC8AVABQACAALwB3AGQANAAw
ADEAOAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5ACAALwB3AGQANAAxADAAMAAgAC8A
dwBkADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQANAAxADQANgAgAC8AdwBkADQAMQA4
ADAAIAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAgAC8AdwBkADQAMgAwADYAIAAvAHcA
ZAA0ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQAMgA2ADcAIAAvAHcAZAA0ADIANwA1
ACAALwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAvAHcAZAA0ADMAMAA1ACAALwB3AGQA
NAAzADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMANQA1ACAALwB3AGQANAAzADgAOQAg
AC8AdwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3AGQANAA0ADUANwAgAC8AdwBkADQA
NAA1ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgAMQAgAC8AdwBkADQANQAwADMAIAAv
AHcAZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBkADQANQAxADIAIAAvAHcAZAA0ADUA
MwAwACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEAIAAvAHcAZAA0ADYANAA2ACAALwB3
AGQANAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0ADcAMgAyACAALwB3AGQANAA4ADAA
MAAgAC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAALwB3AGQANAA5ADUAMgAgAC8AdwBk
ADQAOQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAwADMAMQAgAC8AdwBkADYAMgAxADEA
IAAvAHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8AdwBkADYAMwA4ADcAIAAvAHcAZAA0
ADAAOQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgByAG8AcgBSAGUAcABvAHIAdAA6AHEA
dQBlAHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAALwBFAEgAYQAtACAALwBFAEgAYwAt
ACAALwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0AGYALQA4ACAALwB2AGEAbABpAGQA
YQB0AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABUAG8AbwBsAHMAXABJAG0AYQBnAGUARABpAGYAZgBcAEkAbQBhAGcAZQBEAGkA
ZgBmAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AFQAbwBvAGwAcwBcAEkAbQBhAGcAZQBEAGkAZgBmAFwAUABsAGEAdABmAG8AcgBtAEkAbQBhAGcA
ZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABU
AG8AbwBsAHMAXABJAG0AYQBnAGUARABpAGYAZgBcAGMAYQBpAHIAbwBcAFAAbABhAHQAZgBvAHIA
bQBJAG0AYQBnAGUAQwBhAGkAcgBvAC4AYwBwAHAADQAKACAAIABJAG0AYQBnAGUARABpAGYAZgAu
AGMAcABwAA0ACgAgACAAUABsAGEAdABmAG8AcgBtAEkAbQBhAGcAZQAuAGMAcABwAA0ACgAgACAA
UABsAGEAdABmAG8AcgBtAEkAbQBhAGcAZQBDAGEAaQByAG8ALgBjAHAAcAANAAoATABpAG4AawA6
AA0ACgAgACAAQwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0A
aQBjAHIAbwBzAG8AZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABF
AG4AdABlAHIAcAByAGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAuADIA
NgAuADIAOAA4ADAAMQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwAbABpAG4AawAu
AGUAeABlACAALwBFAFIAUgBPAFIAUgBFAFAATwBSAFQAOgBRAFUARQBVAEUAIAAvAE8AVQBUADoA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAGIAaQBuADYANABcAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AZABsAGwA
IgAgAC8ASQBOAEMAUgBFAE0ARQBOAFQAQQBMADoATgBPACAALwBOAE8ATABPAEcATwAgAC8ATABJ
AEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8A
YgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0ACAALwBMAEkAQgBQAEEAVABIADoARgA6
AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0A
ZAA2ADQALwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkAQgBQAEEAVABIADoARgA6
AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBXAGUAYgBLAGkAdABMAGkA
YgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIANgA0ACAALwBMAEkAQgBQAEEAVABIADoARgA6
AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBXAGUAYgBLAGkAdABMAGkA
YgByAGEAcgBpAGUAcwAvAHcAaQBuAC8AbABpAGIANgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJ
AEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8A
YgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJ
AEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8A
YgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0AC8AUgBlAGwAZQBhAHMAZQAvAFIAZQBs
AGUAYQBzAGUAIAAuAC4AXAAuAC4AXAAuAC4AXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUA
cwBcAHcAaQBuAFwAbABpAGIANgA0AFwAYwBhAGkAcgBvAC4AbABpAGIAIABrAGUAcgBuAGUAbAAz
ADIALgBsAGkAYgAgAHUAcwBlAHIAMwAyAC4AbABpAGIAIABnAGQAaQAzADIALgBsAGkAYgAgAHcA
aQBuAHMAcABvAG8AbAAuAGwAaQBiACAAcwBoAGUAbABsADMAMgAuAGwAaQBiACAAbwBsAGUAMwAy
AC4AbABpAGIAIABvAGwAZQBhAHUAdAAzADIALgBsAGkAYgAgAHUAdQBpAGQALgBsAGkAYgAgAGMA
bwBtAGQAbABnADMAMgAuAGwAaQBiACAAYQBkAHYAYQBwAGkAMwAyAC4AbABpAGIAIAAvAE0AQQBO
AEkARgBFAFMAVAAgAC8ATQBBAE4ASQBGAEUAUwBUAFUAQQBDADoAIgBsAGUAdgBlAGwAPQAnAGEA
cwBJAG4AdgBvAGsAZQByACcAIAB1AGkAQQBjAGMAZQBzAHMAPQAnAGYAYQBsAHMAZQAnACIAIAAv
AG0AYQBuAGkAZgBlAHMAdAA6AGUAbQBiAGUAZAAgAC8ARABFAEIAVQBHACAALwBQAEQAQgA6ACIA
RgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBh
AG0AZAA2ADQALwBiAGkAbgA2ADQALwBJAG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAHAAZABiACIA
IAAvAFMAVQBCAFMAWQBTAFQARQBNADoAQwBPAE4AUwBPAEwARQAgAC8ATwBQAFQAOgBSAEUARgAg
AC8ATwBQAFQAOgBJAEMARgAgAC8AVABMAEIASQBEADoAMQAgAC8ARABZAE4AQQBNAEkAQwBCAEEA
UwBFACAALwBOAFgAQwBPAE0AUABBAFQAIAAvAEkATQBQAEwASQBCADoAIgBGADoALwBnAGkAdABQ
AC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwA
aQBiADYANAAvAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AbABpAGIAIgAgAC8ATQBBAEMASABJ
AE4ARQA6AFgANgA0ACAAIAAvAG0AYQBjAGgAaQBuAGUAOgB4ADYANAAgAC8ARABMAEwAIABJAG0A
YQBnAGUARABpAGYAZgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEkAbQBhAGcAZQBE
AGkAZgBmAC4AbwBiAGoADQAKACAAIABJAG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFAAbABhAHQAZgBvAHIAbQBJAG0AYQBnAGUALgBvAGIAagANAAoAIAAg
AEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABsAGEA
dABmAG8AcgBtAEkAbQBhAGcAZQBDAGEAaQByAG8ALgBvAGIAagANAAoAIAAgACAAIAAgAEMAcgBl
AGEAdABpAG4AZwAgAGwAaQBiAHIAYQByAHkAIABGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQA
LwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAEkAbQBh
AGcAZQBEAGkAZgBmAEwAaQBiAC4AbABpAGIAIABhAG4AZAAgAG8AYgBqAGUAYwB0ACAARgA6AC8A
ZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2
ADQALwBsAGkAYgA2ADQALwBJAG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAGUAeABwAA0ACgAgACAA
SQBtAGEAZwBlAEQAaQBmAGYATABpAGIALgB2AGMAeABwAHIAbwBqACAALQA+ACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABiAGkAbgA2ADQAXABJAG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAGQAbABsAA0ACgBGAGkAbgBh
AGwAaQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABEAGUAbABlAHQAaQBuAGcA
IABmAGkAbABlACAAIgBJAG0AYQBnAGUARABpAGYAZgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUA
cwBzAGYAdQBsAGIAdQBpAGwAZAAiAC4ADQAKACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAEkAbQBh
AGcAZQBEAGkAZgBmAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBtAGEAZwBlAEQA
aQBmAGYATABpAGIALgB0AGwAbwBnAFwASQBtAGEAZwBlAEQAaQBmAGYATABpAGIALgBsAGEAcwB0
AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAA
UAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABJAG0AYQBnAGUARABpAGYA
ZgBcAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1
AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkA
bgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABJAG0AYQBnAGUA
RABpAGYAZgBcAEkAbQBhAGcAZQBEAGkAZgBmAEwAaQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0
AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0A
CgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAEkAbQBhAGcAZQBEAGkA
ZgBmAFwASQBtAGEAZwBlAEQAaQBmAGYALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBq
ACIAIAAoADUAOAApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBv
AGwAcwBcAEkAbQBhAGcAZQBEAGkAZgBmAFwASQBtAGEAZwBlAEQAaQBmAGYALgB2AGMAeABwAHIA
bwBqACIAIAAoADYAMQApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0
AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIA
ZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIASQBtAGEAZwBlAEQAaQBmAGYALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkA
bABkADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIASQBt
AGEAZwBlAEQAaQBmAGYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAG0AYQBnAGUARABpAGYA
ZgAuAHQAbABvAGcAXAAiAC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6AGUAQgB1AGkAbABkAFMAdABh
AHQAdQBzADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIAAiAEkAbQBhAGcAZQBEAGkAZgBmAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwASQBtAGEAZwBlAEQAaQBmAGYALgB0AGwAbwBnAFwAdQBu
AHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwA
dwBhAHkAcwBDAHIAZQBhAHQAZQAiACAAdwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBD
AHUAcwB0AG8AbQBCAHUAaQBsAGQAOgANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQA
bwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0
AC8AVABvAG8AbABzAC8ASQBtAGEAZwBlAEQAaQBmAGYALwBDAE0AYQBrAGUATABpAHMAdABzAC4A
dAB4AHQADQAKAEMAbABDAG8AbQBwAGkAbABlADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBt
ACAARgBpAGwAZQBzACAAKAB4ADgANgApAFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEA
bAAgAFMAdAB1AGQAaQBvAFwAMgAwADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABU
AG8AbwBsAHMAXABNAFMAVgBDAFwAMQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8A
cwB0AFgANgA0AFwAeAA2ADQAXABDAEwALgBlAHgAZQAgAC8AYwAgAC8ASQBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkA
ZQBzAFwAdwBpAG4AXABpAG4AYwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8AZwBvACAALwBX
ADQAIAAvAFcAWAAtACAALwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1AG0AbgAgAC8A
TQBQACAALwBPADIAIAAvAE8AYgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAg
AF8AVwBJAE4ARABPAFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAAVQBTAEUAXwBDAE8A
TgBTAE8ATABFAF8ARQBOAFQAUgBZAF8AUABPAEkATgBUACAALwBEACAAVwBJAE4AXwBDAEEASQBS
AE8AIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBJAG0AYQBnAGUARABpAGYAZgAgAC8ARAAgAEIA
VQBJAEwARABJAE4ARwBfAFcASQBUAEgAXwBDAE0AQQBLAEUAPQAxACAALwBEACAASABBAFYARQBf
AEMATwBOAEYASQBHAF8ASAA9ADEAIAAvAEQAIABXAEkATgBWAEUAUgA9ADAAeAA2ADAAMQAgAC8A
RAAgAF8AVwBJAE4AMwAyAF8AVwBJAE4ATgBUAD0AMAB4ADYAMAAxACAALwBEACAATgBPAE0ASQBO
AE0AQQBYACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8AVQBOAEkAQwBPAEQARQAgAC8A
RAAgAF8ASABBAFMAXwBFAFgAQwBFAFAAVABJAE8ATgBTAD0AMAAgAC8ARAAgAF8AQwBSAFQAXwBT
AEUAQwBVAFIARQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcAUwAgAC8ARAAgAF8AQwBSAFQAXwBTAEUA
QwBVAFIARQBfAEMAUABQAF8ATwBWAEUAUgBMAE8AQQBEAF8AUwBUAEEATgBEAEEAUgBEAF8ATgBB
AE0ARQBTAD0AMQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMASwBBAFAASQBfAD0AIAAvAEQAIABXAFQA
RgBfAFAATABBAFQARgBPAFIATQBfAFcASQBOAF8AQwBBAEkAUgBPAD0AMQAgAC8ARAAgAE4ATwBD
AFIAWQBQAFQAIAAvAEQAIAAiAEMATQBBAEsARQBfAEkATgBUAEQASQBSAD0AXAAiAFIAZQBsAGUA
YQBzAGUAXAAiACIAIAAvAEQAIABfAFUATgBJAEMATwBEAEUAIAAvAEQAIABVAE4ASQBDAE8ARABF
ACAALwBHAG0ALQAgAC8ATQBEACAALwBHAFMAIAAvAGYAcAA6AHAAcgBlAGMAaQBzAGUAIAAvAGYA
cAA6AGUAeABjAGUAcAB0AC0AIAAvAFoAYwA6AHcAYwBoAGEAcgBfAHQAIAAvAFoAYwA6AGYAbwBy
AFMAYwBvAHAAZQAgAC8AWgBjADoAaQBuAGwAaQBuAGUAIAAvAEcAUgAtACAALwBzAHQAZAA6AGMA
KwArADEANwAgAC8ARgBvACIASQBtAGEAZwBlAEQAaQBmAGYALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABcACIAIAAvAEYAZAAiAEkAbQBhAGcAZQBEAGkAZgBmAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwAdgBjADEANAAyAC4AcABkAGIAIgAgAC8ARwBkACAALwBUAFAAIAAvAHcAZAA0ADAAMQA4
ACAALwB3AGQANAAwADYAOAAgAC8AdwBkADQAMAA5ADkAIAAvAHcAZAA0ADEAMAAwACAALwB3AGQA
NAAxADIANwAgAC8AdwBkADQAMQAzADgAIAAvAHcAZAA0ADEANAA2ACAALwB3AGQANAAxADgAMAAg
AC8AdwBkADQAMQA4ADkAIAAvAHcAZAA0ADIAMAAxACAALwB3AGQANAAyADAANgAgAC8AdwBkADQA
MgA0ADQAIAAvAHcAZAA0ADIANQAxACAALwB3AGQANAAyADYANwAgAC8AdwBkADQAMgA3ADUAIAAv
AHcAZAA0ADIAOAA4ACAALwB3AGQANAAyADkAMQAgAC8AdwBkADQAMwAwADUAIAAvAHcAZAA0ADMA
MAA5ACAALwB3AGQANAAzADQANAAgAC8AdwBkADQAMwA1ADUAIAAvAHcAZAA0ADMAOAA5ACAALwB3
AGQANAAzADkANgAgAC8AdwBkADQANAA1ADYAIAAvAHcAZAA0ADQANQA3ACAALwB3AGQANAA0ADUA
OAAgAC8AdwBkADQANAA1ADkAIAAvAHcAZAA0ADQAOAAxACAALwB3AGQANAA1ADAAMwAgAC8AdwBk
ADQANQAwADUAIAAvAHcAZAA0ADUAMQAwACAALwB3AGQANAA1ADEAMgAgAC8AdwBkADQANQAzADAA
IAAvAHcAZAA0ADYAMQAwACAALwB3AGQANAA2ADEAMQAgAC8AdwBkADQANgA0ADYAIAAvAHcAZAA0
ADcAMAAyACAALwB3AGQANAA3ADAANgAgAC8AdwBkADQANwAyADIAIAAvAHcAZAA0ADgAMAAwACAA
LwB3AGQANAA4ADEAOQAgAC8AdwBkADQAOQA1ADEAIAAvAHcAZAA0ADkANQAyACAALwB3AGQANAA5
ADkANgAgAC8AdwBkADYAMAAxADEAIAAvAHcAZAA2ADAAMwAxACAALwB3AGQANgAyADEAMQAgAC8A
dwBkADYAMgA0ADYAIAAvAHcAZAA2ADIANQA1ACAALwB3AGQANgAzADgANwAgAC8AdwBkADQAMAA5
ADEAIAAvAGEAbgBhAGwAeQB6AGUALQAgAC8AZQByAHIAbwByAFIAZQBwAG8AcgB0ADoAcQB1AGUA
dQBlACAAIAAvAEUASABzAC0AIAAvAEUASABjAC0AIAAvAEUASABhAC0AIAAvAEUASABjAC0AIAAv
AEUASABzAC0AIAAvAGIAaQBnAG8AYgBqACAALwB1AHQAZgAtADgAIAAvAHYAYQBsAGkAZABhAHQA
ZQAtAGMAaABhAHIAcwBlAHQAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFQAbwBvAGwAcwBcAHcAaQBuAFwARABMAEwATABhAHUAbgBjAGgAZQByAFwARABMAEwA
TABhAHUAbgBjAGgAZQByAE0AYQBpAG4ALgBjAHAAcAANAAoAIAAgAEQATABMAEwAYQB1AG4AYwBo
AGUAcgBNAGEAaQBuAC4AYwBwAHAADQAKAEwAaQBuAGsAOgANAAoAIAAgAEMAOgBcAFAAcgBvAGcA
cgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8AcwBvAGYAdAAgAFYAaQBz
AHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQByAHAAcgBpAHMAZQBcAFYA
QwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAyADgAOAAwADEAXABiAGkAbgBc
AEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAGwAaQBuAGsALgBlAHgAZQAgAC8ARQBSAFIATwBSAFIA
RQBQAE8AUgBUADoAUQBVAEUAVQBFACAALwBPAFUAVAA6ACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABiAGkAbgA2ADQA
XABJAG0AYQBnAGUARABpAGYAZgAuAGUAeABlACIAIAAvAEkATgBDAFIARQBNAEUATgBUAEEATAA6
AE4ATwAgAC8ATgBPAEwATwBHAE8AIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8A
VwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBi
ADYANAAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcA
ZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0AC8AUgBlAGwAZQBh
AHMAZQAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcA
ZQBiAGsAaQB0AC8AVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMALwB3AGkAbgAvAGwAaQBi
ADYANAAgAC8ATABJAEIAUABBAFQASAA6AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcA
ZQBiAGsAaQB0AC8AVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMALwB3AGkAbgAvAGwAaQBi
ADYANAAvAFIAZQBsAGUAYQBzAGUAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8A
VwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBi
ADYANAAvAFIAZQBsAGUAYQBzAGUAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8A
VwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBi
ADYANAAvAFIAZQBsAGUAYQBzAGUALwBSAGUAbABlAGEAcwBlACAAcwBoAGwAdwBhAHAAaQAuAGwA
aQBiACAAawBlAHIAbgBlAGwAMwAyAC4AbABpAGIAIAB1AHMAZQByADMAMgAuAGwAaQBiACAAZwBk
AGkAMwAyAC4AbABpAGIAIAB3AGkAbgBzAHAAbwBvAGwALgBsAGkAYgAgAHMAaABlAGwAbAAzADIA
LgBsAGkAYgAgAG8AbABlADMAMgAuAGwAaQBiACAAbwBsAGUAYQB1AHQAMwAyAC4AbABpAGIAIAB1
AHUAaQBkAC4AbABpAGIAIABjAG8AbQBkAGwAZwAzADIALgBsAGkAYgAgAGEAZAB2AGEAcABpADMA
MgAuAGwAaQBiACAALwBNAEEATgBJAEYARQBTAFQAIAAvAE0AQQBOAEkARgBFAFMAVABVAEEAQwA6
ACIAbABlAHYAZQBsAD0AJwBhAHMASQBuAHYAbwBrAGUAcgAnACAAdQBpAEEAYwBjAGUAcwBzAD0A
JwBmAGEAbABzAGUAJwAiACAALwBtAGEAbgBpAGYAZQBzAHQAOgBlAG0AYgBlAGQAIAAvAEQARQBC
AFUARwAgAC8AUABEAEIAOgAiAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsA
aQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AYgBpAG4ANgA0AC8ASQBtAGEAZwBlAEQAaQBm
AGYALgBwAGQAYgAiACAALwBTAFUAQgBTAFkAUwBUAEUATQA6AEMATwBOAFMATwBMAEUAIAAvAE8A
UABUADoAUgBFAEYAIAAvAE8AUABUADoASQBDAEYAIAAvAFQATABCAEkARAA6ADEAIAAvAEQAWQBO
AEEATQBJAEMAQgBBAFMARQAgAC8ATgBYAEMATwBNAFAAQQBUACAALwBJAE0AUABMAEkAQgA6ACIA
RgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBh
AG0AZAA2ADQALwBsAGkAYgA2ADQALwBJAG0AYQBnAGUARABpAGYAZgAuAGwAaQBiACIAIAAvAE0A
QQBDAEgASQBOAEUAOgBYADYANAAgACAALwBtAGEAYwBoAGkAbgBlADoAeAA2ADQAIAAiAC8AbQBh
AG4AaQBmAGUAcwB0AGQAZQBwAGUAbgBkAGUAbgBjAHkAOgB0AHkAcABlAD0AJwB3AGkAbgAzADIA
JwAgAG4AYQBtAGUAPQAnAE0AaQBjAHIAbwBzAG8AZgB0AC4AVwBpAG4AZABvAHcAcwAuAEMAbwBt
AG0AbwBuAC0AQwBvAG4AdAByAG8AbABzACcAIAB2AGUAcgBzAGkAbwBuAD0AJwA2AC4AMAAuADAA
LgAwACcAIABwAHIAbwBjAGUAcwBzAG8AcgBBAHIAYwBoAGkAdABlAGMAdAB1AHIAZQA9ACcAYQBt
AGQANgA0ACcAIABwAHUAYgBsAGkAYwBLAGUAeQBUAG8AawBlAG4APQAnADYANQA5ADUAYgA2ADQA
MQA0ADQAYwBjAGYAMQBkAGYAJwAgAGwAYQBuAGcAdQBhAGcAZQA9ACcAKgAnACIAIABJAG0AYQBn
AGUARABpAGYAZgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEQATABMAEwAYQB1AG4AYwBoAGUA
cgBNAGEAaQBuAC4AbwBiAGoADQAKACAAIABJAG0AYQBnAGUARABpAGYAZgAuAHYAYwB4AHAAcgBv
AGoAIAAtAD4AIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAGIAaQBuADYANABcAEkAbQBhAGcAZQBEAGkAZgBmAC4AZQB4
AGUADQAKAEYAaQBuAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEQA
ZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUAIAAiAEkAbQBhAGcAZQBEAGkAZgBmAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwASQBtAGEAZwBlAEQAaQBmAGYALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMA
ZQBzAHMAZgB1AGwAYgB1AGkAbABkACIALgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIASQBt
AGEAZwBlAEQAaQBmAGYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABJAG0AYQBnAGUARABpAGYA
ZgAuAHQAbABvAGcAXABJAG0AYQBnAGUARABpAGYAZgAuAGwAYQBzAHQAYgB1AGkAbABkAHMAdABh
AHQAZQAiAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAFQAbwBvAGwAcwBcAEkAbQBhAGcAZQBEAGkAZgBmAFwASQBtAGEAZwBlAEQA
aQBmAGYALgB2AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAo
AHMAKQApAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAA
IgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAFQAbwBvAGwAcwBcAEkAbQBhAGcAZQBEAGkAZgBmAFwASQBtAGEAZwBlAEQA
aQBmAGYALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBs
AGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwAQQBMAEwAXwBCAFUASQBMAEQALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIA
IAAoADIAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMA
XABNAGkAbgBpAEIAcgBvAHcAcwBlAHIAXAB3AGkAbgBcAE0AaQBuAGkAQgByAG8AdwBzAGUAcgAu
AHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANgAyACkAIABvAG4AIABuAG8A
ZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUABy
AG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQA
XABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABNAGkAbgBpAEIAcgBvAHcAcwBl
AHIAXAB3AGkAbgBcAE0AaQBuAGkAQgByAG8AdwBzAGUAcgAuAHYAYwB4AHAAcgBvAGoALgBtAGUA
dABhAHAAcgBvAGoAIgAgACgANgAyACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQA
NgA0AFwAVABvAG8AbABzAFwATQBpAG4AaQBCAHIAbwB3AHMAZQByAFwAdwBpAG4AXABNAGkAbgBp
AEIAcgBvAHcAcwBlAHIATABpAGIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIA
IAAoADYAMwApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBn
AGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABz
AFwATQBpAG4AaQBCAHIAbwB3AHMAZQByAFwAdwBpAG4AXABNAGkAbgBpAEIAcgBvAHcAcwBlAHIA
TABpAGIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADYAMwApACAAaQBz
ACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIASwBp
AHQAXABOAGUAdAB3AG8AcgBrAFAAcgBvAGMAZQBzAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQA
YQBwAHIAbwBqACIAIAAoADYANAApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBs
AGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBLAGkAdABcAE4AZQB0AHcAbwByAGsAUAByAG8AYwBlAHMA
cwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANgA0ACkAIABpAHMAIABi
AHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBLAGkAdABc
AFcAZQBiAEsAaQB0AC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA2ADUA
KQAgAG8AbgAgAG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABz
ACkAKQAuAA0ACgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBl
AGIASwBpAHQAXABXAGUAYgBLAGkAdAAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoA
IgAgACgANgA1ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUA
cgBjAGUAXABXAGUAYgBLAGkAdABcAFcAZQBiAEsAaQB0AF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBz
AC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA2ADYAKQAgAG8AbgAgAG4A
bwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQ
AHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIASwBpAHQAXABX
AGUAYgBLAGkAdABfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUA
dABhAHAAcgBvAGoAIgAgACgANgA2ACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQA
NgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBLAGkAdABcAFcAZQBiAEsAaQB0AF8AQwBvAHAAeQBI
AGUAYQBkAGUAcgBzAC4AdgBjAHgAcAByAG8AagAiACAAKAA2ADcAKQAgAG8AbgAgAG4AbwBkAGUA
IAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBDAG8AcgBl
AEMAbABlAGEAbgA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkA
IAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAFcAZQBiAEsAaQB0AF8AQwBvAHAAeQBIAGUAYQBk
AGUAcgBzAFwAIgAuAA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwAZAA6AA0ACgAgACAA
QwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAHgANgA0AFwAUgBlAGwAZQBh
AHMAZQBcAFcAZQBiAEsAaQB0AF8AQwBvAHAAeQBIAGUAYQBkAGUAcgBzAFwAVwBlAGIASwBpAHQA
XwBDAC4ANwAxAEEANgAzADcAOQA3AC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABp
AHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIA
eAA2ADQAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIASwBpAHQAXwBDAG8AcAB5AEgAZQBhAGQAZQBy
AHMAXABXAGUAYgBLAGkAdABfAEMALgA3ADEAQQA2ADMANwA5ADcALgB0AGwAbwBnAFwAdQBuAHMA
dQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwAdwBh
AHkAcwBDAHIAZQBhAHQAZQAiACAAdwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBDAG8A
bQBwAHUAdABlAEMAdQBzAHQAbwBtAEIAdQBpAGwAZABPAHUAdABwAHUAdAA6AA0ACgAgACAAQwBy
AGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVwBlAGIASwBp
AHQAXABIAGUAYQBkAGUAcgBzAFwAVwBlAGIASwBpAHQAXAAiAC4ADQAKAEMAdQBzAHQAbwBtAEIA
dQBpAGwAZAA6AA0ACgAgACAAIgBUAGgAZQAgAGIAdQBpAGwAZAAgAG8AZgAgACcARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABDAE0AYQBrAGUARgBpAGwAZQBzAFwAMQAyAGIANQBmADAAYQBkADkAZAA1ADIAZQA0AGMAMQA2
ADMAYgBjAGEAOQBmADIAZgBlADMAZQBmAGYANwBkAFwAVwBlAGIASwBpAHQAXwBDAG8AcAB5AEgA
ZQBhAGQAZQByAHMALgByAHUAbABlACcAIABkAGUAcABlAG4AZABzACAAbwBuACAAJwBGADoAXABH
AEkAVABQAFwAVwBFAEIASwBJAFQAXABXAEUAQgBLAEkAVABcAEIAVQBJAEwARABfAEEATQBEADYA
NABcAFcARQBCAEsASQBUAFwASABFAEEARABFAFIAUwBcAFcARQBCAEsASQBUAFwAVwBLAEEAUgBS
AEEAWQAuAEgAJwAgAHcAaABpAGMAaAAgAGkAcwAgAHAAcgBvAGQAdQBjAGUAZAAgAGIAeQAgAHQA
aABlACAAYgB1AGkAbABkACAAbwBmACAAJwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIASwBpAHQAXABTAGgAYQByAGUAZABcAEEA
UABJAFwAYwBcAFcASwBBAHIAcgBhAHkALgBoACcALgAgAFQAaABlACAAaQB0AGUAbQBzACAAYwBh
AG4AbgBvAHQAIABiAGUAIABiAHUAaQBsAHQAIABpAG4AIABwAGEAcgBhAGwAbABlAGwALgAiAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABl
AGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEEAcgByAGEAeQAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBz
AC8AVwBlAGIASwBpAHQALwBXAEsAQgBhAHMAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBp
AHQALwBXAEsAQwBlAHIAdABpAGYAaQBjAGEAdABlAEkAbgBmAG8ALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAv
AFcAZQBiAEsAaQB0AC8AVwBLAEMAbwBuAG4AZQBjAHQAaQBvAG4AUgBlAGYALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABl
AHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEMAbwBuAHQAZQB4AHQATQBlAG4AdQBJAHQAZQBtAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAv
AEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBDAG8AbgB0AGUAeAB0AE0AZQBuAHUA
SQB0AGUAbQBUAHkAcABlAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEQA
YQB0AGEALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBi
AEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEQAZQBjAGwAYQByAGEA
dABpAG8AbgBTAHAAZQBjAGkAZgBpAGUAcgBzAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkA
dAAvAFcASwBEAGUAcAByAGUAYwBhAHQAZQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkA
dAAvAFcASwBEAGkAYQBnAG4AbwBzAHQAaQBjAEwAbwBnAGcAaQBuAGcAUgBlAHMAdQBsAHQAVAB5
AHAAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIA
SwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsARABpAGMAdABpAG8AbgBh
AHIAeQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIA
SwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsARQByAHIAbwByAFIAZQBm
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkA
dAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBFAHYAZQBuAHQALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEA
ZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEYAaQBuAGQATwBwAHQAaQBvAG4AcwAuAGgADQAK
ACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUA
YQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsARwBlAG8AbQBlAHQAcgB5AC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQA
ZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBJAG0AYQBnAGUALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcA
ZQBiAEsAaQB0AC8AVwBLAE0AdQB0AGEAYgBsAGUAQQByAHIAYQB5AC4AaAANAAoAIAAgAEcAZQBu
AGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMA
LwBXAGUAYgBLAGkAdAAvAFcASwBNAHUAdABhAGIAbABlAEQAaQBjAHQAaQBvAG4AYQByAHkALgBo
AA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8A
SABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAE4AdQBtAGIAZQByAC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQA
ZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBQAGEAZwBlAEwAbwBhAGQAVAB5AHAAZQBzAC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgA
ZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBQAGEAZwBlAEwAbwBhAGQAVAB5AHAAZQBz
AFAAcgBpAHYAYQB0AGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFAAYQBn
AGUAVgBpAHMAaQBiAGkAbABpAHQAeQBUAHkAcABlAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBi
AEsAaQB0AC8AVwBLAFAAbAB1AGcAaQBuAEkAbgBmAG8AcgBtAGEAdABpAG8AbgAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBk
AGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAUwBlAGMAdQByAGkAdAB5AE8AcgBpAGcAaQBuAFIA
ZQBmAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBL
AGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBTAGUAcgBpAGEAbABpAHoA
ZQBkAFMAYwByAGkAcAB0AFYAYQBsAHUAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQA
LwBXAEsAUwB0AHIAaQBuAGcALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFMA
dAByAGkAbgBnAFAAcgBpAHYAYQB0AGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8A
VwBLAFQAeQBwAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAv
AFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFUAUgBMAC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAv
AEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBVAFIATABSAGUAcQB1AGUAcwB0AC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAv
AEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBVAFIATABSAGUAcwBwAG8AbgBzAGUA
LgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0
AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFUAcwBlAHIAQwBvAG4AdABlAG4A
dABJAG4AagBlAGMAdABlAGQARgByAGEAbQBlAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsA
aQB0AC8AVwBLAFUAcwBlAHIAUwBjAHIAaQBwAHQASQBuAGoAZQBjAHQAaQBvAG4AVABpAG0AZQAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQA
LwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQQB1AHQAaABlAG4AdABpAGMAYQB0
AGkAbwBuAEMAaABhAGwAbABlAG4AZwBlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcA
IAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAv
AFcASwBBAHUAdABoAGUAbgB0AGkAYwBhAHQAaQBvAG4ARABlAGMAaQBzAGkAbwBuAEwAaQBzAHQA
ZQBuAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBl
AGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQgBhAGMAawBGAG8A
cgB3AGEAcgBkAEwAaQBzAHQASQB0AGUAbQBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIA
SwBpAHQALwBXAEsAQgBhAGMAawBGAG8AcgB3AGEAcgBkAEwAaQBzAHQAUgBlAGYALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEA
ZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEMAbwBuAHQAZQB4AHQALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIA
cwAvAFcAZQBiAEsAaQB0AC8AVwBLAEMAbwBuAHQAZQB4AHQAQwBvAG4AZgBpAGcAdQByAGEAdABp
AG8AbgBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
VwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQwBvAG4AdABl
AHgAdABDAG8AbgBuAGUAYwB0AGkAbwBuAEMAbABpAGUAbgB0AC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBX
AGUAYgBLAGkAdAAvAFcASwBDAG8AbgB0AGUAeAB0AEQAbwB3AG4AbABvAGEAZABDAGwAaQBlAG4A
dAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBp
AHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQwBvAG4AdABlAHgAdABIAGkA
cwB0AG8AcgB5AEMAbABpAGUAbgB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcA
SwBDAG8AbgB0AGUAeAB0AEkAbgBqAGUAYwB0AGUAZABCAHUAbgBkAGwAZQBDAGwAaQBlAG4AdAAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQA
LwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQwBvAG4AdABlAHgAdABQAHIAaQB2
AGEAdABlAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUA
YgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBDAG8AbwBrAGkAZQBN
AGEAbgBhAGcAZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBDAHIAZQBk
AGUAbgB0AGkAYQBsAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBDAHIAZQBk
AGUAbgB0AGkAYQBsAFQAeQBwAGUAcwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBX
AEsARABvAHcAbgBsAG8AYQBkAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBG
AG8AcgBtAFMAdQBiAG0AaQBzAHMAaQBvAG4ATABpAHMAdABlAG4AZQByAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQBy
AHMALwBXAGUAYgBLAGkAdAAvAFcASwBGAHIAYQBtAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBi
AEsAaQB0AC8AVwBLAEYAcgBhAG0AZQBIAGEAbgBkAGwAZQBSAGUAZgAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBz
AC8AVwBlAGIASwBpAHQALwBXAEsARgByAGEAbQBlAEkAbgBmAG8AUgBlAGYALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABl
AHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEYAcgBhAG0AZQBQAG8AbABpAGMAeQBMAGkAcwB0AGUA
bgBlAHIALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBi
AEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEcAZQBvAGwAbwBjAGEA
dABpAG8AbgBNAGEAbgBhAGcAZQByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcA
SwBHAGUAbwBsAG8AYwBhAHQAaQBvAG4AUABlAHIAbQBpAHMAcwBpAG8AbgBSAGUAcQB1AGUAcwB0
AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkA
dAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBHAGUAbwBsAG8AYwBhAHQAaQBv
AG4AUABvAHMAaQB0AGkAbwBuAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBI
AFQAVABQAEMAbwBvAGsAaQBlAFMAdABvAHIAZQBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBl
AGIASwBpAHQALwBXAEsASABpAHQAVABlAHMAdABSAGUAcwB1AGwAdAAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBz
AC8AVwBlAGIASwBpAHQALwBXAEsASQBjAG8AbgBEAGEAdABhAGIAYQBzAGUALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABl
AHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEkAbgBzAHAAZQBjAHQAbwByAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQBy
AHMALwBXAGUAYgBLAGkAdAAvAFcASwBMAGEAeQBvAHUAdABNAG8AZABlAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQBy
AHMALwBXAGUAYgBLAGkAdAAvAFcASwBNAGUAcwBzAGEAZwBlAEwAaQBzAHQAZQBuAGUAcgAuAGgA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBI
AGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsATQBvAGMAawBEAGkAcwBwAGwAYQB5AC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAv
AEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBNAG8AYwBrAE0AZQBkAGkAYQBEAGUA
dgBpAGMAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBl
AGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsATgBhAHQAaQB2AGUA
RQB2AGUAbgB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBX
AGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBOAGEAdgBpAGcA
YQB0AGkAbwBuAEEAYwB0AGkAbwBuAFIAZQBmAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkA
dAAvAFcASwBOAGEAdgBpAGcAYQB0AGkAbwBuAEQAYQB0AGEAUgBlAGYALgBoAA0ACgAgACAARwBl
AG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIA
cwAvAFcAZQBiAEsAaQB0AC8AVwBLAE4AYQB2AGkAZwBhAHQAaQBvAG4AUgBlAGYALgBoAA0ACgAg
ACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEA
ZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAE4AYQB2AGkAZwBhAHQAaQBvAG4AUgBlAHMAcABv
AG4AcwBlAFIAZQBmAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBOAG8AdABp
AGYAaQBjAGEAdABpAG8AbgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsATgBv
AHQAaQBmAGkAYwBhAHQAaQBvAG4ATQBhAG4AYQBnAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBl
AGIASwBpAHQALwBXAEsATgBvAHQAaQBmAGkAYwBhAHQAaQBvAG4AUABlAHIAbQBpAHMAcwBpAG8A
bgBSAGUAcQB1AGUAcwB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAu
AC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBOAG8A
dABpAGYAaQBjAGEAdABpAG8AbgBQAHIAbwB2AGkAZABlAHIALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcA
ZQBiAEsAaQB0AC8AVwBLAE8AcABlAG4AUABhAG4AZQBsAFAAYQByAGEAbQBlAHQAZQByAHMAUgBl
AGYALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsA
aQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAE8AcABlAG4AUABhAG4AZQBs
AFIAZQBzAHUAbAB0AEwAaQBzAHQAZQBuAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBp
AHQALwBXAEsAUABhAGcAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAUABh
AGcAZQBDAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuAFIAZQBmAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBX
AGUAYgBLAGkAdAAvAFcASwBQAGEAZwBlAEMAbwBuAHQAZQB4AHQATQBlAG4AdQBDAGwAaQBlAG4A
dAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBp
AHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAUABhAGcAZQBEAGkAYQBnAG4A
bwBzAHQAaQBjAEwAbwBnAGcAaQBuAGcAQwBsAGkAZQBuAHQALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcA
ZQBiAEsAaQB0AC8AVwBLAFAAYQBnAGUARgBpAG4AZABDAGwAaQBlAG4AdAAuAGgADQAKACAAIABH
AGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUA
cgBzAC8AVwBlAGIASwBpAHQALwBXAEsAUABhAGcAZQBGAGkAbgBkAE0AYQB0AGMAaABlAHMAQwBs
AGkAZQBuAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcA
ZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFAAYQBnAGUARgBv
AHIAbQBDAGwAaQBlAG4AdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAUABh
AGcAZQBHAHIAbwB1AHAALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4A
LgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFAAYQBn
AGUASQBuAGoAZQBjAHQAZQBkAEIAdQBuAGQAbABlAEMAbABpAGUAbgB0AC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQBy
AHMALwBXAGUAYgBLAGkAdAAvAFcASwBQAGEAZwBlAEwAbwBhAGQAZQByAEMAbABpAGUAbgB0AC4A
aAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAv
AEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBQAGEAZwBlAE4AYQB2AGkAZwBhAHQA
aQBvAG4AQwBsAGkAZQBuAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFAA
YQBnAGUAUABvAGwAaQBjAHkAQwBsAGkAZQBuAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsA
aQB0AC8AVwBLAFAAYQBnAGUAUAByAGkAdgBhAHQAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIA
SwBpAHQALwBXAEsAUABhAGcAZQBSAGUAbgBkAGUAcgBpAG4AZwBQAHIAbwBnAHIAZQBzAHMARQB2
AGUAbgB0AHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcA
ZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFAAYQBnAGUAUwB0
AGEAdABlAEMAbABpAGUAbgB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4A
LwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBQ
AGEAZwBlAFUASQBDAGwAaQBlAG4AdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBX
AEsAUABsAHUAZwBpAG4ATABvAGEAZABQAG8AbABpAGMAeQAuAGgADQAKACAAIABHAGUAbgBlAHIA
YQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBl
AGIASwBpAHQALwBXAEsAUAByAGUAZgBlAHIAZQBuAGMAZQBzAFIAZQBmAC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQBy
AHMALwBXAGUAYgBLAGkAdAAvAFcASwBQAHIAZQBmAGUAcgBlAG4AYwBlAHMAUgBlAGYAUAByAGkA
dgBhAHQAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBl
AGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAUAByAG8AYwBlAHMA
cwBUAGUAcgBtAGkAbgBhAHQAaQBvAG4AUgBlAGEAcwBvAG4ALgBoAA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcA
ZQBiAEsAaQB0AC8AVwBLAFAAcgBvAHQAZQBjAHQAaQBvAG4AUwBwAGEAYwBlAC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQA
ZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBQAHIAbwB0AGUAYwB0AGkAbwBuAFMAcABhAGMAZQBU
AHkAcABlAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcA
ZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAFIAZQBzAG8AdQBy
AGMAZQBDAGEAYwBoAGUATQBhAG4AYQBnAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBp
AHQALwBXAEsAUwBlAHMAcwBpAG8AbgBTAHQAYQB0AGUAUgBlAGYALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAv
AFcAZQBiAEsAaQB0AC8AVwBLAFQAZQBzAHQAaQBuAGcAUwB1AHAAcABvAHIAdAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBk
AGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAVABlAHgAdABDAGgAZQBjAGsAZQByAC4AaAANAAoA
IAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBh
AGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBVAHMAZQByAEMAbwBuAHQAZQBuAHQAQwBvAG4A
dAByAG8AbABsAGUAcgBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAu
AC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsA
VQBzAGUAcgBDAG8AbgB0AGUAbgB0AEUAeAB0AGUAbgBzAGkAbwBuAFMAdABvAHIAZQBSAGUAZgAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQA
LwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAVQBzAGUAcgBNAGUAZABpAGEAUABl
AHIAbQBpAHMAcwBpAG8AbgBDAGgAZQBjAGsALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0
AC8AVwBLAFUAcwBlAHIATQBlAGQAaQBhAFAAZQByAG0AaQBzAHMAaQBvAG4AUgBlAHEAdQBlAHMA
dAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBp
AHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAVQBzAGUAcgBTAGMAcgBpAHAA
dABSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBl
AGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAVgBpAGUAdwBwAG8A
cgB0AEEAdAB0AHIAaQBiAHUAdABlAHMALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAg
AC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8A
VwBLAFcAZQBiAHMAaQB0AGUARABhAHQAYQBTAHQAbwByAGUAQwBvAG4AZgBpAGcAdQByAGEAdABp
AG8AbgBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8A
VwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAVwBlAGIAcwBp
AHQAZQBEAGEAdABhAFMAdABvAHIAZQBSAGUAZgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBp
AHQALwBXAEsAVwBlAGIAcwBpAHQAZQBQAG8AbABpAGMAaQBlAHMALgBoAA0ACgAgACAARwBlAG4A
ZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAv
AFcAZQBiAEsAaQB0AC8AVwBLAFcAaQBuAGQAbwB3AEYAZQBhAHQAdQByAGUAcwBSAGUAZgAuAGgA
DQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBI
AGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAGUAYgBLAGkAdAAyAF8AQwAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBk
AGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAUgBlAHQAYQBpAG4AUAB0AHIALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABl
AHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABlAC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBX
AGUAYgBLAGkAdAAvAFcASwBCAHUAbgBkAGwAZQBBAFAASQBDAGEAcwB0AC4AaAANAAoAIAAgAEcA
ZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQBy
AHMALwBXAGUAYgBLAGkAdAAvAFcASwBCAHUAbgBkAGwAZQBCAGEAYwBrAEYAbwByAHcAYQByAGQA
TABpAHMAdAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBl
AGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQgB1AG4AZABsAGUA
QgBhAGMAawBGAG8AcgB3AGEAcgBkAEwAaQBzAHQASQB0AGUAbQAuAGgADQAKACAAIABHAGUAbgBl
AHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8A
VwBlAGIASwBpAHQALwBXAEsAQgB1AG4AZABsAGUARABPAE0AVwBpAG4AZABvAHcARQB4AHQAZQBu
AHMAaQBvAG4ALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcA
ZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABl
AEYAaQBsAGUASABhAG4AZABsAGUAUgBlAGYALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0
AC8AVwBLAEIAdQBuAGQAbABlAEYAcgBhAG0AZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkA
bgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBp
AHQALwBXAEsAQgB1AG4AZABsAGUARgByAGEAbQBlAFAAcgBpAHYAYQB0AGUALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABl
AHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABlAEgAaQB0AFQAZQBzAHQAUgBlAHMA
dQBsAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBi
AEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABlAEkA
bgBpAHQAaQBhAGwAaQB6AGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAv
AC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIA
dQBuAGQAbABlAEkAbgBzAHAAZQBjAHQAbwByAC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBu
AGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkA
dAAvAFcASwBCAHUAbgBkAGwAZQBOAGEAdgBpAGcAYQB0AGkAbwBuAEEAYwB0AGkAbwBuAC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgA
ZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBCAHUAbgBkAGwAZQBOAGEAdgBpAGcAYQB0
AGkAbwBuAEEAYwB0AGkAbwBuAFAAcgBpAHYAYQB0AGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEA
dABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBi
AEsAaQB0AC8AVwBLAEIAdQBuAGQAbABlAE4AbwBkAGUASABhAG4AZABsAGUALgBoAA0ACgAgACAA
RwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABl
AHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABlAE4AbwBkAGUASABhAG4AZABsAGUA
UAByAGkAdgBhAHQAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQgB1AG4A
ZABsAGUAUABhAGcAZQAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAu
AC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQgB1AG4A
ZABsAGUAUABhAGcAZQBCAGEAbgBuAGUAcgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBn
ACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQA
LwBXAEsAQgB1AG4AZABsAGUAUABhAGcAZQBDAG8AbgB0AGUAeAB0AE0AZQBuAHUAQwBsAGkAZQBu
AHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsA
aQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABlAFAAYQBn
AGUARQBkAGkAdABvAHIAQwBsAGkAZQBuAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4A
ZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0
AC8AVwBLAEIAdQBuAGQAbABlAFAAYQBnAGUARgBvAHIAbQBDAGwAaQBlAG4AdAAuAGgADQAKACAA
IABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBk
AGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQgB1AG4AZABsAGUAUABhAGcAZQBGAHUAbABsAFMA
YwByAGUAZQBuAEMAbABpAGUAbgB0AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAu
AC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcA
SwBCAHUAbgBkAGwAZQBQAGEAZwBlAEcAcgBvAHUAcAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0
AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIA
SwBpAHQALwBXAEsAQgB1AG4AZABsAGUAUABhAGcAZQBMAG8AYQBkAGUAcgBDAGwAaQBlAG4AdAAu
AGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQA
LwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQgB1AG4AZABsAGUAUABhAGcAZQBP
AHYAZQByAGwAYQB5AC4AaAANAAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4A
LwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBCAHUAbgBk
AGwAZQBQAGEAZwBlAFAAbwBsAGkAYwB5AEMAbABpAGUAbgB0AC4AaAANAAoAIAAgAEcAZQBuAGUA
cgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQAZQByAHMALwBX
AGUAYgBLAGkAdAAvAFcASwBCAHUAbgBkAGwAZQBQAGEAZwBlAFAAcgBpAHYAYQB0AGUALgBoAA0A
CgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABl
AGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABlAFAAYQBnAGUAUgBlAHMA
bwB1AHIAYwBlAEwAbwBhAGQAQwBsAGkAZQBuAHQALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABp
AG4AZwAgAC4ALgAvAC4ALgAvAFcAZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsA
aQB0AC8AVwBLAEIAdQBuAGQAbABlAFAAYQBnAGUAVQBJAEMAbABpAGUAbgB0AC4AaAANAAoAIAAg
AEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgAZQBhAGQA
ZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBCAHUAbgBkAGwAZQBQAHIAaQB2AGEAdABlAC4AaAAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAaQBuAGcAIAAuAC4ALwAuAC4ALwBXAGUAYgBLAGkAdAAvAEgA
ZQBhAGQAZQByAHMALwBXAGUAYgBLAGkAdAAvAFcASwBCAHUAbgBkAGwAZQBSAGEAbgBnAGUASABh
AG4AZABsAGUALgBoAA0ACgAgACAARwBlAG4AZQByAGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAFcA
ZQBiAEsAaQB0AC8ASABlAGEAZABlAHIAcwAvAFcAZQBiAEsAaQB0AC8AVwBLAEIAdQBuAGQAbABl
AFMAYwByAGkAcAB0AFcAbwByAGwAZAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBX
AEsAQgBhAHMAZQBXAGkAbgAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8A
LgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAVgBp
AGUAdwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIA
SwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsASQBtAGEAZwBlAEMAYQBp
AHIAbwAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIA
SwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBXAEsAQwBlAHIAdABpAGYAaQBj
AGEAdABlAEkAbgBmAG8AQwB1AHIAbAAuAGgADQAKACAAIABHAGUAbgBlAHIAYQB0AGkAbgBnACAA
LgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBzAC8AVwBlAGIASwBpAHQALwBX
AEsAUAByAG8AdABlAGMAdABpAG8AbgBTAHAAYQBjAGUAQwB1AHIAbAAuAGgADQAKACAAIABHAGUA
bgBlAHIAYQB0AGkAbgBnACAALgAuAC8ALgAuAC8AVwBlAGIASwBpAHQALwBIAGUAYQBkAGUAcgBz
AC8AVwBlAGIASwBpAHQALwBXAEsAVwBlAGIAcwBpAHQAZQBEAGEAdABhAFMAdABvAHIAZQBSAGUA
ZgBDAHUAcgBsAC4AaAANAAoAIAAgAEIAdQBpAGwAZABpAG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1
AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUA
cgBjAGUALwBXAGUAYgBLAGkAdAAvAEMATQBhAGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoARgBp
AG4AYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkA
bgBnACAAZgBpAGwAZQAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIASwBpAHQAXwBD
AG8AcAB5AEgAZQBhAGQAZQByAHMAXABXAGUAYgBLAGkAdABfAEMALgA3ADEAQQA2ADMANwA5ADcA
LgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABkACIALgANAAoAIAAg
AFQAbwB1AGMAaABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIASwBpAHQA
XwBDAG8AcAB5AEgAZQBhAGQAZQByAHMAXABXAGUAYgBLAGkAdABfAEMALgA3ADEAQQA2ADMANwA5
ADcALgB0AGwAbwBnAFwAVwBlAGIASwBpAHQAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMALgBsAGEA
cwB0AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBn
ACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIA
awBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEsAaQB0
AFwAVwBlAGIASwBpAHQAXwBDAG8AcAB5AEgAZQBhAGQAZQByAHMALgB2AGMAeABwAHIAbwBqACIA
IAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEQAbwBuAGUAIABC
AHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBl
AFwAVwBlAGIASwBpAHQAXABXAGUAYgBLAGkAdABfAEMAbwBwAHkASABlAGEAZABlAHIAcwAuAHYA
YwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoA
ZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBLAGkAdABcAFcAZQBiAEsA
aQB0AC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABk
ACAAdABhAHIAZwBlAHQAKABzACkAKQAgAC0ALQAgAEYAQQBJAEwARQBEAC4ADQAKAEQAbwBuAGUA
IABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIA
YwBlAFwAVwBlAGIASwBpAHQAXABOAGUAdAB3AG8AcgBrAFAAcgBvAGMAZQBzAHMALgB2AGMAeABw
AHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUA
dAAoAHMAKQApACAALQAtACAARgBBAEkATABFAEQALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABp
AG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwATQBpAG4AaQBC
AHIAbwB3AHMAZQByAFwAdwBpAG4AXABNAGkAbgBpAEIAcgBvAHcAcwBlAHIATABpAGIALgB2AGMA
eABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBn
AGUAdAAoAHMAKQApACAALQAtACAARgBBAEkATABFAEQALgANAAoARABvAG4AZQAgAEIAdQBpAGwA
ZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwATQBpAG4A
aQBCAHIAbwB3AHMAZQByAFwAdwBpAG4AXABNAGkAbgBpAEIAcgBvAHcAcwBlAHIALgB2AGMAeABw
AHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUA
dAAoAHMAKQApACAALQAtACAARgBBAEkATABFAEQALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0A
ZAA2ADQAXABBAEwATABfAEIAVQBJAEwARAAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBv
AGoAIgAgACgAMgApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBv
AGwAcwBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAXABUAGUAcwB0AFIAdQBuAG4A
ZQByAEkAbgBqAGUAYwB0AGUAZABCAHUAbgBkAGwAZQAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABh
AHAAcgBvAGoAIgAgACgANgA5ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwA
ZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABUAG8AbwBsAHMAXABXAGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4AZQByAFwAVABlAHMAdABS
AHUAbgBuAGUAcgBJAG4AagBlAGMAdABlAGQAQgB1AG4AZABsAGUALgB2AGMAeABwAHIAbwBqAC4A
bQBlAHQAYQBwAHIAbwBqACIAIAAoADYAOQApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFQAbwBvAGwAcwBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAXABX
AGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4AZQByAEkAbgBqAGUAYwB0AGUAZABCAHUAbgBkAGwA
ZQBCAGkAbgBkAGkAbgBnAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAo
ADcAMAApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUA
dAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwA
VwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1
AG4AbgBlAHIASQBuAGoAZQBjAHQAZQBkAEIAdQBuAGQAbABlAEIAaQBuAGQAaQBuAGcAcwAuAHYA
YwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANwAwACkAIABpAHMAIABiAHUAaQBs
AGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
YgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwAVwBlAGIASwBpAHQAVABlAHMAdABS
AHUAbgBuAGUAcgBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIASQBuAGoAZQBjAHQA
ZQBkAEIAdQBuAGQAbABlAEIAaQBuAGQAaQBuAGcAcwAuAHYAYwB4AHAAcgBvAGoAIgAgACgANwAx
ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgA
cwApACkALgANAAoAQwBvAHIAZQBDAGwAZQBhAG4AOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAg
AGQAaQByAGUAYwB0AG8AcgB5ACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUAXABXAGUAYgBLAGkA
dABUAGUAcwB0AFIAdQBuAG4AZQByAEkAbgBqAGUAYwB0AGUAZABCAHUAbgBkAGwAZQBCAGkAbgBk
AGkAbgBnAHMAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAKACAA
IABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAeAA2ADQAXABSAGUAbABl
AGEAcwBlAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBJAG4AagBlAGMAdABlAGQA
QgB1AG4AZABsAGUAQgBpAG4AZABpAG4AZwBzAFwAVwBlAGIASwBpAHQAVABlAC4AMgBBAEEARABG
ADEANABDAC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABpAHoAZQBCAHUAaQBsAGQA
UwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABl
AGEAcwBlAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBJAG4AagBlAGMAdABlAGQA
QgB1AG4AZABsAGUAQgBpAG4AZABpAG4AZwBzAFwAVwBlAGIASwBpAHQAVABlAC4AMgBBAEEARABG
ADEANABDAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiACAA
YgBlAGMAYQB1AHMAZQAgACIAQQBsAHcAYQB5AHMAQwByAGUAYQB0AGUAIgAgAHcAYQBzACAAcwBw
AGUAYwBpAGYAaQBlAGQALgANAAoAQwB1AHMAdABvAG0AQgB1AGkAbABkADoADQAKACAAIABHAGUA
bgBlAHIAYQB0AGUAIABiAGkAbgBkAGkAbgBnAHMAIAAoAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1
AG4AbgBlAHIASQBuAGoAZQBjAHQAZQBkAEIAdQBuAGQAbABlAEIAaQBuAGQAaQBuAGcAcwApAA0A
CgAgACAAWwAxAC8AOABdACAAQQBjAGMAZQBzAHMAaQBiAGkAbABpAHQAeQBDAG8AbgB0AHIAbwBs
AGwAZQByAC4AaQBkAGwADQAKACAAIABbADIALwA4AF0AIABBAGMAYwBlAHMAcwBpAGIAaQBsAGkA
dAB5AFQAZQB4AHQATQBhAHIAawBlAHIALgBpAGQAbAANAAoAIAAgAFsAMwAvADgAXQAgAEEAYwBj
AGUAcwBzAGkAYgBpAGwAaQB0AHkAVABlAHgAdABNAGEAcgBrAGUAcgBSAGEAbgBnAGUALgBpAGQA
bAANAAoAIAAgAFsANAAvADgAXQAgAEEAYwBjAGUAcwBzAGkAYgBpAGwAaQB0AHkAVQBJAEUAbABl
AG0AZQBuAHQALgBpAGQAbAANAAoAIAAgAFsANQAvADgAXQAgAEUAdgBlAG4AdABTAGUAbgBkAGkA
bgBnAEMAbwBuAHQAcgBvAGwAbABlAHIALgBpAGQAbAANAAoAIAAgAFsANgAvADgAXQAgAEcAQwBD
AG8AbgB0AHIAbwBsAGwAZQByAC4AaQBkAGwADQAKACAAIABbADcALwA4AF0AIABUAGUAcwB0AFIA
dQBuAG4AZQByAC4AaQBkAGwADQAKACAAIABbADgALwA4AF0AIABUAGUAeAB0AEkAbgBwAHUAdABD
AG8AbgB0AHIAbwBsAGwAZQByAC4AaQBkAGwADQAKACAAIABCAHUAaQBsAGQAaQBuAGcAIABDAHUA
cwB0AG8AbQAgAFIAdQBsAGUAIABGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBr
AGkAdAAvAFQAbwBvAGwAcwAvAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIALwBDAE0A
YQBrAGUATABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0
AGEAdAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYAaQBsAGUAIAAiAHgANgA0AFwA
UgBlAGwAZQBhAHMAZQBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIASQBuAGoAZQBj
AHQAZQBkAEIAdQBuAGQAbABlAEIAaQBuAGQAaQBuAGcAcwBcAFcAZQBiAEsAaQB0AFQAZQAuADIA
QQBBAEQARgAxADQAQwAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBs
AGQAIgAuAA0ACgAgACAAVABvAHUAYwBoAGkAbgBnACAAIgB4ADYANABcAFIAZQBsAGUAYQBzAGUA
XABXAGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4AZQByAEkAbgBqAGUAYwB0AGUAZABCAHUAbgBk
AGwAZQBCAGkAbgBkAGkAbgBnAHMAXABXAGUAYgBLAGkAdABUAGUALgAyAEEAQQBEAEYAMQA0AEMA
LgB0AGwAbwBnAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBJAG4AagBlAGMAdABl
AGQAQgB1AG4AZABsAGUAQgBpAG4AZABpAG4AZwBzAC4AbABhAHMAdABiAHUAaQBsAGQAcwB0AGEA
dABlACIALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAVABvAG8AbABzAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBc
AFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIASQBuAGoAZQBjAHQAZQBkAEIAdQBuAGQA
bABlAEIAaQBuAGQAaQBuAGcAcwAuAHYAYwB4AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAg
AHQAYQByAGcAZQB0ACgAcwApACkALgANAAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAA
cgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwAVwBlAGIASwBpAHQAVABlAHMA
dABSAHUAbgBuAGUAcgBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIASQBuAGoAZQBj
AHQAZQBkAEIAdQBuAGQAbABlAEIAaQBuAGQAaQBuAGcAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUA
dABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgAN
AAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwAVABvAG8AbABzAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBcAFQAZQBzAHQA
UgB1AG4AbgBlAHIASQBuAGoAZQBjAHQAZQBkAEIAdQBuAGQAbABlAC4AdgBjAHgAcAByAG8AagAu
AG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkA
KQAgAC0ALQAgAEYAQQBJAEwARQBEAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwA
QQBMAEwAXwBCAFUASQBMAEQALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAo
ADIAKQAgAGkAcwAgAGIAdQBpAGwAZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABU
AGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABXAFQARgAuAHYAYwB4AHAAcgBvAGoA
LgBtAGUAdABhAHAAcgBvAGoAIgAgACgANwAyACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBl
AGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMA
dABXAFQARgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANwAyACkAIABp
AHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwAVABlAHMAdABX
AGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAVwBUAEYATABpAGIALgB2AGMAeABwAHIAbwBqAC4A
bQBlAHQAYQBwAHIAbwBqACIAIAAoADcAMwApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBi
AHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAFAAcgBvAGoAZQBjAHQAIAAiAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQA
VwBUAEYATABpAGIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADcAMwAp
ACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAGcAdABlAHMAdABcAGcAdABlAHMAdAAuAHYAYwB4AHAAcgBvAGoA
LgBtAGUAdABhAHAAcgBvAGoAIgAgACgANwA0ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBl
AGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABnAHQAZQBzAHQA
XABnAHQAZQBzAHQALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoADcANAAp
ACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABo
AGkAcgBkAFAAYQByAHQAeQBcAGcAdABlAHMAdABcAGcAdABlAHMAdAAuAHYAYwB4AHAAcgBvAGoA
IgAgACgANwA1ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQBy
AGcAZQB0ACgAcwApACkALgANAAoAQwBvAHIAZQBDAGwAZQBhAG4AOgANAAoAIAAgAEMAcgBlAGEA
dABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBnAHQAZQBzAHQALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXAAiAC4ADQAKAFAAcgBlAHAAYQByAGUARgBvAHIAQgB1AGkAbABkADoADQAKACAA
IABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAZwB0AGUAcwB0AC4AZABp
AHIAXABSAGUAbABlAGEAcwBlAFwAZwB0AGUAcwB0AC4AdABsAG8AZwBcACIALgANAAoASQBuAGkA
dABpAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABp
AG4AZwAgACIAZwB0AGUAcwB0AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZwB0AGUAcwB0AC4A
dABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiACAAYgBlAGMAYQB1
AHMAZQAgACIAQQBsAHcAYQB5AHMAQwByAGUAYQB0AGUAIgAgAHcAYQBzACAAcwBwAGUAYwBpAGYA
aQBlAGQALgANAAoAQwB1AHMAdABvAG0AQgB1AGkAbABkADoADQAKACAAIABCAHUAaQBsAGQAaQBu
AGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQA
LwB3AGUAYgBrAGkAdAAvAFMAbwB1AHIAYwBlAC8AVABoAGkAcgBkAFAAYQByAHQAeQAvAGcAdABl
AHMAdAAvAEMATQBhAGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoAQwBsAEMAbwBtAHAAaQBsAGUA
OgANAAoAIAAgAEMAOgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABN
AGkAYwByAG8AcwBvAGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwA
RQBuAHQAZQByAHAAcgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAy
ADYALgAyADgAOAAwADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAEMATAAuAGUA
eABlACAALwBjACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUA
IAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQBy
AGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABnAHQAZQBzAHQAIAAvAEkARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQ
AGEAcgB0AHkAXABnAHQAZQBzAHQAXABpAG4AYwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8A
ZwBvACAALwBXADQAIAAvAFcAWAAtACAALwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1
AG0AbgAgAC8ATQBQACAALwBPADIAIAAvAE8AYgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMA
MgAgAC8ARAAgAF8AVwBJAE4ARABPAFcAUwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAAQgBV
AEkATABEAEkATgBHAF8AVwBJAFQASABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8A
QwBPAE4ARgBJAEcAXwBIAD0AMQAgAC8ARAAgAFcASQBOAFYARQBSAD0AMAB4ADYAMAAxACAALwBE
ACAAXwBXAEkATgAzADIAXwBXAEkATgBOAFQAPQAwAHgANgAwADEAIAAvAEQAIABOAE8ATQBJAE4A
TQBBAFgAIAAvAEQAIABVAE4ASQBDAE8ARABFACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBE
ACAAXwBIAEEAUwBfAEUAWABDAEUAUABUAEkATwBOAFMAPQAwACAALwBEACAAXwBDAFIAVABfAFMA
RQBDAFUAUgBFAF8ATgBPAF8AVwBBAFIATgBJAE4ARwBTACAALwBEACAAXwBDAFIAVABfAFMARQBD
AFUAUgBFAF8AQwBQAFAAXwBPAFYARQBSAEwATwBBAEQAXwBTAFQAQQBOAEQAQQBSAEQAXwBOAEEA
TQBFAFMAPQAxACAALwBEACAAXwBXAEkATgBTAE8AQwBLAEEAUABJAF8APQAgAC8ARAAgAFcAVABG
AF8AUABMAEEAVABGAE8AUgBNAF8AVwBJAE4AXwBDAEEASQBSAE8APQAxACAALwBEACAATgBPAEMA
UgBZAFAAVAAgAC8ARAAgAF8AXwBTAFQARABDAF8ATABJAE0ASQBUAF8ATQBBAEMAUgBPAFMAIAAv
AEQAIABHAFQARQBTAFQAXwBIAEEAUwBfAFIAVABUAEkAPQAwACAALwBEACAARwBUAEUAUwBUAF8A
QwBSAEUAQQBUAEUAXwBTAEgAQQBSAEUARABfAEwASQBCAFIAQQBSAFkAPQAwACAALwBEACAARwBU
AEUAUwBUAF8ASABBAFMAXwBQAFQASABSAEUAQQBEAD0AMAAgAC8ARAAgACIAQwBNAEEASwBFAF8A
SQBOAFQARABJAFIAPQBcACIAUgBlAGwAZQBhAHMAZQBcACIAIgAgAC8ARAAgAF8AVQBOAEkAQwBP
AEQARQAgAC8ARAAgAFUATgBJAEMATwBEAEUAIAAvAEcAbQAtACAALwBNAEQAIAAvAEcAUwAgAC8A
ZgBwADoAcAByAGUAYwBpAHMAZQAgAC8AZgBwADoAZQB4AGMAZQBwAHQALQAgAC8AWgBjADoAdwBj
AGgAYQByAF8AdAAgAC8AWgBjADoAZgBvAHIAUwBjAG8AcABlACAALwBaAGMAOgBpAG4AbABpAG4A
ZQAgAC8ARwBSAC0AIAAvAHMAdABkADoAYwArACsAMQA3ACAALwBGAG8AIgBnAHQAZQBzAHQALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXABcACIAIAAvAEYAZAAiAGcAdABlAHMAdAAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAGcAdABlAHMAdAAuAHAAZABiACIAIAAvAEcAZAAgAC8AVABQACAALwB3
AGQANAAwADEAOAAgAC8AdwBkADQAMAA2ADgAIAAvAHcAZAA0ADAAOQA5ACAALwB3AGQANAAxADAA
MAAgAC8AdwBkADQAMQAyADcAIAAvAHcAZAA0ADEAMwA4ACAALwB3AGQANAAxADQANgAgAC8AdwBk
ADQAMQA4ADAAIAAvAHcAZAA0ADEAOAA5ACAALwB3AGQANAAyADAAMQAgAC8AdwBkADQAMgAwADYA
IAAvAHcAZAA0ADIANAA0ACAALwB3AGQANAAyADUAMQAgAC8AdwBkADQAMgA2ADcAIAAvAHcAZAA0
ADIANwA1ACAALwB3AGQANAAyADgAOAAgAC8AdwBkADQAMgA5ADEAIAAvAHcAZAA0ADMAMAA1ACAA
LwB3AGQANAAzADAAOQAgAC8AdwBkADQAMwA0ADQAIAAvAHcAZAA0ADMANQA1ACAALwB3AGQANAAz
ADgAOQAgAC8AdwBkADQAMwA5ADYAIAAvAHcAZAA0ADQANQA2ACAALwB3AGQANAA0ADUANwAgAC8A
dwBkADQANAA1ADgAIAAvAHcAZAA0ADQANQA5ACAALwB3AGQANAA0ADgAMQAgAC8AdwBkADQANQAw
ADMAIAAvAHcAZAA0ADUAMAA1ACAALwB3AGQANAA1ADEAMAAgAC8AdwBkADQANQAxADIAIAAvAHcA
ZAA0ADUAMwAwACAALwB3AGQANAA2ADEAMAAgAC8AdwBkADQANgAxADEAIAAvAHcAZAA0ADYANAA2
ACAALwB3AGQANAA3ADAAMgAgAC8AdwBkADQANwAwADYAIAAvAHcAZAA0ADcAMgAyACAALwB3AGQA
NAA4ADAAMAAgAC8AdwBkADQAOAAxADkAIAAvAHcAZAA0ADkANQAxACAALwB3AGQANAA5ADUAMgAg
AC8AdwBkADQAOQA5ADYAIAAvAHcAZAA2ADAAMQAxACAALwB3AGQANgAwADMAMQAgAC8AdwBkADYA
MgAxADEAIAAvAHcAZAA2ADIANAA2ACAALwB3AGQANgAyADUANQAgAC8AdwBkADYAMwA4ADcAIAAv
AHcAZAA0ADAAOQAxACAALwBhAG4AYQBsAHkAegBlAC0AIAAvAGUAcgByAG8AcgBSAGUAcABvAHIA
dAA6AHEAdQBlAHUAZQAgACAALwBFAEgAcwAtACAALwBFAEgAYwAtACAALwBFAEgAYQAtACAALwBF
AEgAYwAtACAALwBFAEgAcwAtACAALwBiAGkAZwBvAGIAagAgAC8AdQB0AGYALQA4ACAALwB2AGEA
bABpAGQAYQB0AGUALQBjAGgAYQByAHMAZQB0ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABnAHQA
ZQBzAHQAXABzAHIAYwBcAGcAdABlAHMAdAAuAGMAYwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkA
XABnAHQAZQBzAHQAXABzAHIAYwBcAGcAdABlAHMAdAAtAGQAZQBhAHQAaAAtAHQAZQBzAHQALgBj
AGMAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABnAHQAZQBzAHQAXABzAHIAYwBcAGcAdABl
AHMAdAAtAGYAaQBsAGUAcABhAHQAaAAuAGMAYwAiACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABn
AHQAZQBzAHQAXABzAHIAYwBcAGcAdABlAHMAdABfAG0AYQBpAG4ALgBjAGMAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQBy
AGQAUABhAHIAdAB5AFwAZwB0AGUAcwB0AFwAcwByAGMAXABnAHQAZQBzAHQALQBwAG8AcgB0AC4A
YwBjACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAZwB0AGUAcwB0AFwAcwByAGMAXABnAHQA
ZQBzAHQALQBwAHIAaQBuAHQAZQByAHMALgBjAGMAIgAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkA
XABnAHQAZQBzAHQAXABzAHIAYwBcAGcAdABlAHMAdAAtAHQAZQBzAHQALQBwAGEAcgB0AC4AYwBj
ACIAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUA
cgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAZwB0AGUAcwB0AFwAcwByAGMAXABnAHQAZQBz
AHQALQB0AHkAcABlAGQALQB0AGUAcwB0AC4AYwBjACIADQAKACAAIABnAHQAZQBzAHQALgBjAGMA
DQAKACAAIABnAHQAZQBzAHQALQBkAGUAYQB0AGgALQB0AGUAcwB0AC4AYwBjAA0ACgAgACAAZwB0
AGUAcwB0AC0AZgBpAGwAZQBwAGEAdABoAC4AYwBjAA0ACgAgACAAZwB0AGUAcwB0AF8AbQBhAGkA
bgAuAGMAYwANAAoAIAAgAGcAdABlAHMAdAAtAHAAbwByAHQALgBjAGMADQAKACAAIABnAHQAZQBz
AHQALQBwAHIAaQBuAHQAZQByAHMALgBjAGMADQAKACAAIABnAHQAZQBzAHQALQB0AGUAcwB0AC0A
cABhAHIAdAAuAGMAYwANAAoAIAAgAGcAdABlAHMAdAAtAHQAeQBwAGUAZAAtAHQAZQBzAHQALgBj
AGMADQAKAEwAaQBiADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAA
KAB4ADgANgApAFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBv
AFwAMgAwADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMA
VgBDAFwAMQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2
ADQAXABMAGkAYgAuAGUAeABlACAALwBPAFUAVAA6ACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABsAGkAYgA2ADQAXABn
AHQAZQBzAHQALgBsAGkAYgAiACAALwBOAE8ATABPAEcATwAgAC8ATQBBAEMASABJAE4ARQA6AFgA
NgA0ACAAIAAvAG0AYQBjAGgAaQBuAGUAOgB4ADYANAAgAGcAdABlAHMAdAAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAGcAdABlAHMAdAAuAG8AYgBqAA0ACgAgACAAIgBnAHQAZQBzAHQALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABnAHQAZQBzAHQALQBkAGUAYQB0AGgALQB0AGUAcwB0AC4AbwBi
AGoAIgANAAoAIAAgACIAZwB0AGUAcwB0AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZwB0AGUA
cwB0AC0AZgBpAGwAZQBwAGEAdABoAC4AbwBiAGoAIgANAAoAIAAgAGcAdABlAHMAdAAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAGcAdABlAHMAdABfAG0AYQBpAG4ALgBvAGIAagANAAoAIAAgACIA
ZwB0AGUAcwB0AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZwB0AGUAcwB0AC0AcABvAHIAdAAu
AG8AYgBqACIADQAKACAAIAAiAGcAdABlAHMAdAAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGcA
dABlAHMAdAAtAHAAcgBpAG4AdABlAHIAcwAuAG8AYgBqACIADQAKACAAIAAiAGcAdABlAHMAdAAu
AGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAGcAdABlAHMAdAAtAHQAZQBzAHQALQBwAGEAcgB0AC4A
bwBiAGoAIgANAAoAIAAgACIAZwB0AGUAcwB0AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAZwB0
AGUAcwB0AC0AdAB5AHAAZQBkAC0AdABlAHMAdAAuAG8AYgBqACIADQAKACAAIABnAHQAZQBzAHQA
LgB2AGMAeABwAHIAbwBqACAALQA+ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABsAGkAYgA2ADQAXABnAHQAZQBzAHQA
LgBsAGkAYgANAAoARgBpAG4AYQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAg
ACAARABlAGwAZQB0AGkAbgBnACAAZgBpAGwAZQAgACIAZwB0AGUAcwB0AC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAZwB0AGUAcwB0AC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBs
AGIAdQBpAGwAZAAiAC4ADQAKACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAGcAdABlAHMAdAAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAGcAdABlAHMAdAAuAHQAbABvAGcAXABnAHQAZQBzAHQALgBs
AGEAcwB0AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkA
bgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIA
ZABQAGEAcgB0AHkAXABnAHQAZQBzAHQAXABnAHQAZQBzAHQALgB2AGMAeABwAHIAbwBqACIAIAAo
AFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEQAbwBuAGUAIABCAHUA
aQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwA
VABoAGkAcgBkAFAAYQByAHQAeQBcAGcAdABlAHMAdABcAGcAdABlAHMAdAAuAHYAYwB4AHAAcgBv
AGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgA
cwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABUAGUA
cwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABXAFQARgBMAGkAYgAuAHYAYwB4AHAAcgBv
AGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgANwAzACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcA
IAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABk
AF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQA
ZQBzAHQAVwBUAEYATABpAGIALgB2AGMAeABwAHIAbwBqACIAIAAoADcANgApACAAbwBuACAAbgBv
AGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEMA
bwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBhAHQAaQBuAGcAIABkAGkAcgBlAGMAdABv
AHIAeQAgACIAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcACIA
LgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUAaQBsAGQAOgANAAoAIAAgAEMAcgBlAGEAdABp
AG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwAVABlAHMAdABXAFQARgBMAGkAYgAuAHQAbABvAGcAXAAiAC4ADQAK
AEkAbgBpAHQAaQBhAGwAaQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABDAHIA
ZQBhAHQAaQBuAGcAIAAiAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABUAGUAcwB0AFcAVABGAEwAaQBiAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYA
dQBsAGIAdQBpAGwAZAAiACAAYgBlAGMAYQB1AHMAZQAgACIAQQBsAHcAYQB5AHMAQwByAGUAYQB0
AGUAIgAgAHcAYQBzACAAcwBwAGUAYwBpAGYAaQBlAGQALgANAAoAQwB1AHMAdABvAG0AQgB1AGkA
bABkADoADQAKACAAIABCAHUAaQBsAGQAaQBuAGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFQAbwBvAGwAcwAvAFQA
ZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkALwBDAE0AYQBrAGUATABpAHMAdABzAC4AdAB4AHQADQAK
AEMAbABDAG8AbQBwAGkAbABlADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwA
ZQBzACAAKAB4ADgANgApAFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1
AGQAaQBvAFwAMgAwADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMA
XABNAFMAVgBDAFwAMQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0
AFwAeAA2ADQAXABDAEwALgBlAHgAZQAgAC8AYwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANAAgAC8ASQBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQA
VwBlAGIASwBpAHQAQQBQAEkAIAAvAEkARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABnAHQAZQBzAHQA
XABpAG4AYwBsAHUAZABlACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVwBUAEYAXABIAGUAYQBkAGUAcgBzACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBp
AHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8A
bgBvAGwAbwBnAG8AIAAvAFcANAAgAC8AVwBYAC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6
AGMAbwBsAHUAbQBuACAALwBNAFAAIAAvAE8AMgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAA
VwBJAE4AMwAyACAALwBEACAAXwBXAEkATgBEAE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAv
AEQAIABCAFUASQBMAEQASQBOAEcAXwBUAGUAcwB0AFcAVABGACAALwBEACAAQgBVAEkATABEAEkA
TgBHAF8AVwBJAFQASABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4ARgBJ
AEcAXwBIAD0AMQAgAC8ARAAgAFcASQBOAFYARQBSAD0AMAB4ADYAMAAxACAALwBEACAAXwBXAEkA
TgAzADIAXwBXAEkATgBOAFQAPQAwAHgANgAwADEAIAAvAEQAIABOAE8ATQBJAE4ATQBBAFgAIAAv
AEQAIABVAE4ASQBDAE8ARABFACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAXwBIAEEA
UwBfAEUAWABDAEUAUABUAEkATwBOAFMAPQAwACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBF
AF8ATgBPAF8AVwBBAFIATgBJAE4ARwBTACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBFAF8A
QwBQAFAAXwBPAFYARQBSAEwATwBBAEQAXwBTAFQAQQBOAEQAQQBSAEQAXwBOAEEATQBFAFMAPQAx
ACAALwBEACAAXwBXAEkATgBTAE8AQwBLAEEAUABJAF8APQAgAC8ARAAgAFcAVABGAF8AUABMAEEA
VABGAE8AUgBNAF8AVwBJAE4AXwBDAEEASQBSAE8APQAxACAALwBEACAATgBPAEMAUgBZAFAAVAAg
AC8ARAAgAEcAVABFAFMAVABfAEgAQQBTAF8AUgBUAFQASQA9ADAAIAAvAEQAIABHAFQARQBTAFQA
XwBDAFIARQBBAFQARQBfAFMASABBAFIARQBEAF8ATABJAEIAUgBBAFIAWQA9ADAAIAAvAEQAIABH
AFQARQBTAFQAXwBIAEEAUwBfAFAAVABIAFIARQBBAEQAPQAwACAALwBEACAAIgBDAE0AQQBLAEUA
XwBJAE4AVABEAEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwAIgAiACAALwBEACAAVABlAHMAdABX
AFQARgBMAGkAYgBfAEUAWABQAE8AUgBUAFMAIAAvAEQAIABfAFcASQBOAEQATABMACAALwBEACAA
XwBVAE4ASQBDAE8ARABFACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBtAC0AIAAvAE0ARAAg
AC8ARwBTACAALwBmAHAAOgBwAHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgAYwBlAHAAdAAtACAA
LwBaAGMAOgB3AGMAaABhAHIAXwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBwAGUAIAAvAFoAYwA6
AGkAbgBsAGkAbgBlACAALwBHAFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcAIAAvAEYAbwAiAFQA
ZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABcACIAIAAvAEYAZAAi
AFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXAB2AGMAMQA0ADIA
LgBwAGQAYgAiACAALwBHAGQAIAAvAFQAUAAgAC8AdwBkADQAMAAxADgAIAAvAHcAZAA0ADAANgA4
ACAALwB3AGQANAAwADkAOQAgAC8AdwBkADQAMQAwADAAIAAvAHcAZAA0ADEAMgA3ACAALwB3AGQA
NAAxADMAOAAgAC8AdwBkADQAMQA0ADYAIAAvAHcAZAA0ADEAOAAwACAALwB3AGQANAAxADgAOQAg
AC8AdwBkADQAMgAwADEAIAAvAHcAZAA0ADIAMAA2ACAALwB3AGQANAAyADQANAAgAC8AdwBkADQA
MgA1ADEAIAAvAHcAZAA0ADIANgA3ACAALwB3AGQANAAyADcANQAgAC8AdwBkADQAMgA4ADgAIAAv
AHcAZAA0ADIAOQAxACAALwB3AGQANAAzADAANQAgAC8AdwBkADQAMwAwADkAIAAvAHcAZAA0ADMA
NAA0ACAALwB3AGQANAAzADUANQAgAC8AdwBkADQAMwA4ADkAIAAvAHcAZAA0ADMAOQA2ACAALwB3
AGQANAA0ADUANgAgAC8AdwBkADQANAA1ADcAIAAvAHcAZAA0ADQANQA4ACAALwB3AGQANAA0ADUA
OQAgAC8AdwBkADQANAA4ADEAIAAvAHcAZAA0ADUAMAAzACAALwB3AGQANAA1ADAANQAgAC8AdwBk
ADQANQAxADAAIAAvAHcAZAA0ADUAMQAyACAALwB3AGQANAA1ADMAMAAgAC8AdwBkADQANgAxADAA
IAAvAHcAZAA0ADYAMQAxACAALwB3AGQANAA2ADQANgAgAC8AdwBkADQANwAwADIAIAAvAHcAZAA0
ADcAMAA2ACAALwB3AGQANAA3ADIAMgAgAC8AdwBkADQAOAAwADAAIAAvAHcAZAA0ADgAMQA5ACAA
LwB3AGQANAA5ADUAMQAgAC8AdwBkADQAOQA1ADIAIAAvAHcAZAA0ADkAOQA2ACAALwB3AGQANgAw
ADEAMQAgAC8AdwBkADYAMAAzADEAIAAvAHcAZAA2ADIAMQAxACAALwB3AGQANgAyADQANgAgAC8A
dwBkADYAMgA1ADUAIAAvAHcAZAA2ADMAOAA3ACAALwB3AGQANAAwADkAMQAgAC8AYQBuAGEAbAB5
AHoAZQAtACAALwBlAHIAcgBvAHIAUgBlAHAAbwByAHQAOgBxAHUAZQB1AGUAIAAgAC8ARQBIAHMA
LQAgAC8ARQBIAGMALQAgAC8ARQBIAGEALQAgAC8ARQBIAGMALQAgAC8ARQBIAHMALQAgAC8AYgBp
AGcAbwBiAGoAIAAvAHUAdABmAC0AOAAgAC8AdgBhAGwAaQBkAGEAdABlAC0AYwBoAGEAcgBzAGUA
dAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABz
AFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAEMAbwB1AG4AdABlAHIAcwAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABU
AGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAEMAbwBuAHQAcgBvAGwAbABlAHIA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABv
AG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFcAVABGAFMAdAByAGkAbgBnAFUA
dABpAGwAaQB0AGkAZQBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUA
cwB0AHMAXABXAFQARgBcAEEAdABvAG0AUwB0AHIAaQBuAGcALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUA
YgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAQgBpAHQAbQBhAHAALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwA
VABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAQgBsAG8AbwBt
AEYAaQBsAHQAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0
AHMAXABXAFQARgBcAEIAbwB4AFAAdAByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIA
SwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQ
AEkAXABUAGUAcwB0AHMAXABXAFQARgBcAEIAdQBtAHAAUABvAGkAbgB0AGUAcgBBAGwAbABvAGMA
YQB0AG8AcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwA
VwBUAEYAXABDAFMAdAByAGkAbgBnAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkA
XABUAGUAcwB0AHMAXABXAFQARgBcAEMAaABlAGMAawBlAGQAQQByAGkAdABoAG0AZQB0AGkAYwBP
AHAAZQByAGEAdABpAG8AbgBzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABU
AGUAcwB0AHMAXABXAFQARgBcAEMAbwBtAHAAYQBjAHQAUgBlAGYAUAB0AHIAVAB1AHAAbABlAC4A
YwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBv
AGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAEMA
bwBuAGMAdQByAHIAZQBuAHQAUAB0AHIASABhAHMAaABTAGUAdAAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcA
ZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABDAG8AbgBkAGkAdABpAG8AbgAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8A
bwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABD
AHIAbwBzAHMAVABoAHIAZQBhAGQAQwBvAHAAaQBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBL
AGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAQwByAG8AcwBzAFQAaAByAGUAYQBkAFQA
YQBzAGsALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcA
VABGAFwARABhAHQAYQBNAHUAdABlAHgALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAA
SQBcAFQAZQBzAHQAcwBcAFcAVABGAFwARABhAHQAZQBNAGEAdABoAC4AYwBwAHAAIABGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQA
VwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAEQAZQBxAHUAZQAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMA
XABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABFAG4AdQBt
AFQAcgBhAGkAdABzAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0
AHMAXABXAFQARgBcAEUAeABwAGUAYwB0AGUAZAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0
AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABGAGkAbABlAFMAeQBzAHQAZQBtAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBc
AFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAEYAdQBuAGMA
dABpAG8AbgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwA
VwBUAEYAXABIAGEAcwBoAEMAbwB1AG4AdABlAGQAUwBlAHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUA
YgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwASABhAHMAaABNAGEAcAAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMA
XABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABIAGEAcwBo
AFMAZQB0AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABX
AFQARgBcAEgAYQBzAGgAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABU
AGUAcwB0AHMAXABXAFQARgBcAEgAZQB4AE4AdQBtAGIAZQByAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBl
AGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAEkAbgB0AGUAZwBlAHIAVABvAFMA
dAByAGkAbgBnAEMAbwBuAHYAZQByAHMAaQBvAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkA
dABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwASQB0AGUAcgBhAHQAbwByAFIAYQBuAGcAZQAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8A
bwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABK
AFMATwBOAFYAYQBsAHUAZQAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABl
AHMAdABzAFwAVwBUAEYAXABMAEUAQgBEAGUAYwBvAGQAZQByAC4AYwBwAHAAIABGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBl
AGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAEwAaQBmAGUAYwB5AGMAbABlAEwA
bwBnAGcAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMA
XABXAFQARgBcAEwAaQBuAGUARQBuAGQAaQBuAGcALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkA
dABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwATABpAHMAdABIAGEAcwBoAFMAZQB0AC4AYwBw
AHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwA
cwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAEwAbwBj
AGsALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
VABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABG
AFwATABvAGcAZwBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBz
AHQAcwBcAFcAVABGAFwATQBhAHIAawBhAGIAbABlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBp
AHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAE0AYQB0AGgARQB4AHQAcgBhAHMALgBjAHAA
cAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABz
AFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwATQBlAGQA
aQBhAFQAaQBtAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQA
cwBcAFcAVABGAFwATQBlAHQAYQBBAGwAbABvAGMAYQB0AG8AcgAuAGMAcABwACAARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcA
ZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABNAG8AdgBlAE8AbgBsAHkATABp
AGYAZQBjAHkAYwBsAGUATABvAGcAZwBlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABB
AFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwATgBhAGsAZQBkAFAAdAByAC4AYwBwAHAAIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBz
AHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAE4AZQB2AGUAcgBEAGUA
cwB0AHIAbwB5AGUAZAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMA
dABzAFwAVwBUAEYAXABPAHAAdABpAG8AbgBTAGUAdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsA
aQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABPAHAAdABpAG8AbgBhAGwALgBjAHAAcAAg
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwA
VABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAUABhAGMAawBl
AGQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
VABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABG
AFwAUABhAGMAawBlAGQAUgBlAGYALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBc
AFQAZQBzAHQAcwBcAFcAVABGAFwAUABhAGMAawBlAGQAUgBlAGYAUAB0AHIALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABl
AHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAUABhAHIAawBpAG4A
ZwBMAG8AdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwA
VwBUAEYAXABQAHIAaQBvAHIAaQB0AHkAUQB1AGUAdQBlAC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIA
SwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAFIAZQBkAEIAbABhAGMAawBUAHIAZQBl
AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQA
bwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBc
AFIAZQBmAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABX
AFQARgBcAFIAZQBmAEMAbwB1AG4AdABlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABB
AFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAUgBlAGYATABvAGcAZwBlAHIALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABl
AHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAUgBlAGYAUAB0AHIA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABv
AG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwA
UgB1AG4ATABvAG8AcAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMA
dABzAFwAVwBUAEYAXABTAEgAQQAxAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkA
XABUAGUAcwB0AHMAXABXAFQARgBcAFMAYQB0AHUAcgBhAHQAZQBkAEEAcgBpAHQAaABtAGUAdABp
AGMATwBwAGUAcgBhAHQAaQBvAG4AcwAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJ
AFwAVABlAHMAdABzAFwAVwBUAEYAXABTAGMAbwBwAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBL
AGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAUwBjAG8AcABlAGQATABhAG0AYgBkAGEA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABv
AG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwA
UwBlAHQARgBvAHIAUwBjAG8AcABlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkA
XABUAGUAcwB0AHMAXABXAFQARgBcAFMAdABkAEwAaQBiAEUAeAB0AHIAYQBzAC4AYwBwAHAAIABG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQA
ZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAFMAdAByAGkAbgBn
AEIAdQBpAGwAZABlAHIALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBz
AHQAcwBcAFcAVABGAFwAUwB0AHIAaQBuAGcAQwBvAG4AYwBhAHQAZQBuAGEAdABlAC4AYwBwAHAA
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBc
AFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAFMAdAByAGkA
bgBnAEgAYQBzAGgAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUA
cwB0AHMAXABXAFQARgBcAFMAdAByAGkAbgBnAEkAbQBwAGwALgBjAHAAcAAgAEYAOgBcAGcAaQB0
AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUA
YgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAUwB0AHIAaQBuAGcATwBwAGUAcgBh
AHQAbwByAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBc
AFcAVABGAFwAUwB0AHIAaQBuAGcAUABhAHIAcwBpAG4AZwBCAHUAZgBmAGUAcgAuAGMAcABwACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABU
AGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABTAHQAcgBpAG4A
ZwBWAGkAZQB3AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMA
XABXAFQARgBcAFMAeQBuAGMAaAByAG8AbgBpAHoAZQBkAEYAaQB4AGUAZABRAHUAZQB1AGUALgBj
AHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8A
bABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAVABl
AHgAdABCAHIAZQBhAGsASQB0AGUAcgBhAHQAbwByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBp
AHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAFQAaAByAGUAYQBkAEcAcgBvAHUAcAAuAGMA
cABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBs
AHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABUAGgA
cgBlAGEAZABNAGUAcwBzAGEAZwBlAHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAA
SQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAVABoAHIAZQBhAGQAaQBuAGcALgBjAHAAcAAgAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMA
dABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAVABpAG0AZQAuAGMAcABw
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMA
XABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABVAFIATAAu
AGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8A
bwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABV
AFIATABQAGEAcgBzAGUAcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwA
dwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABl
AHMAdABzAFwAVwBUAEYAXABVAG4AaQBxAHUAZQBBAHIAcgBhAHkALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABX
AGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwAVQBuAGkAcQB1AGUAUgBlAGYA
LgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABv
AG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAcwBcAFcAVABGAFwA
VgBhAHIAaQBhAG4AdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMA
dABzAFwAVwBUAEYAXABWAGUAYwB0AG8AcgAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEA
UABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABXAFQARgBTAHQAcgBpAG4AZwAuAGMAcABwACAARgA6
AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUA
cwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABXAGUAYQBrAFAAdABy
AC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQA
bwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBc
AFcAbwByAGsAUQB1AGUAdQBlAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABU
AGUAcwB0AHMAXABXAFQARgBcAFcAbwByAGsAZQByAFAAbwBvAGwALgBjAHAAcAAgAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAVABlAHMAdABX
AGUAYgBLAGkAdABBAFAASQBcAHcAaQBuAFwAbQBhAGkAbgAuAGMAcABwACAARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBi
AEsAaQB0AEEAUABJAFwAdwBpAG4AXABVAHQAaQBsAGkAdABpAGUAcwBXAGkAbgAuAGMAcABwAA0A
CgAgACAAQwBvAHUAbgB0AGUAcgBzAC4AYwBwAHAADQAKACAAIABUAGUAcwB0AHMAQwBvAG4AdABy
AG8AbABsAGUAcgAuAGMAcABwAA0ACgAgACAAVwBUAEYAUwB0AHIAaQBuAGcAVQB0AGkAbABpAHQA
aQBlAHMALgBjAHAAcAANAAoAIAAgAEEAdABvAG0AUwB0AHIAaQBuAGcALgBjAHAAcAANAAoAIAAg
AEIAaQB0AG0AYQBwAC4AYwBwAHAADQAKACAAIABCAGwAbwBvAG0ARgBpAGwAdABlAHIALgBjAHAA
cAANAAoAIAAgAEIAbwB4AFAAdAByAC4AYwBwAHAADQAKACAAIABCAHUAbQBwAFAAbwBpAG4AdABl
AHIAQQBsAGwAbwBjAGEAdABvAHIALgBjAHAAcAANAAoAIAAgAEMAUwB0AHIAaQBuAGcALgBjAHAA
cAANAAoAIAAgAEMAaABlAGMAawBlAGQAQQByAGkAdABoAG0AZQB0AGkAYwBPAHAAZQByAGEAdABp
AG8AbgBzAC4AYwBwAHAADQAKACAAIABDAG8AbQBwAGEAYwB0AFIAZQBmAFAAdAByAFQAdQBwAGwA
ZQAuAGMAcABwAA0ACgAgACAAQwBvAG4AYwB1AHIAcgBlAG4AdABQAHQAcgBIAGEAcwBoAFMAZQB0
AC4AYwBwAHAADQAKACAAIABDAG8AbgBkAGkAdABpAG8AbgAuAGMAcABwAA0ACgAgACAAQwByAG8A
cwBzAFQAaAByAGUAYQBkAEMAbwBwAGkAZQByAC4AYwBwAHAADQAKACAAIABDAHIAbwBzAHMAVABo
AHIAZQBhAGQAVABhAHMAawAuAGMAcABwAA0ACgAgACAARABhAHQAYQBNAHUAdABlAHgALgBjAHAA
cAANAAoAIAAgAEQAYQB0AGUATQBhAHQAaAAuAGMAcABwAA0ACgAgACAARABlAHEAdQBlAC4AYwBw
AHAADQAKACAAIABFAG4AdQBtAFQAcgBhAGkAdABzAC4AYwBwAHAADQAKACAAIABFAHgAcABlAGMA
dABlAGQALgBjAHAAcAANAAoAIAAgAEYAaQBsAGUAUwB5AHMAdABlAG0ALgBjAHAAcAANAAoAIAAg
AEYAdQBuAGMAdABpAG8AbgAuAGMAcABwAA0ACgAgACAASABhAHMAaABDAG8AdQBuAHQAZQBkAFMA
ZQB0AC4AYwBwAHAADQAKACAAIABIAGEAcwBoAE0AYQBwAC4AYwBwAHAADQAKACAAIABIAGEAcwBo
AFMAZQB0AC4AYwBwAHAADQAKACAAIABIAGEAcwBoAGUAcgAuAGMAcABwAA0ACgAgACAASABlAHgA
TgB1AG0AYgBlAHIALgBjAHAAcAANAAoAIAAgAEkAbgB0AGUAZwBlAHIAVABvAFMAdAByAGkAbgBn
AEMAbwBuAHYAZQByAHMAaQBvAG4ALgBjAHAAcAANAAoAIAAgAEkAdABlAHIAYQB0AG8AcgBSAGEA
bgBnAGUALgBjAHAAcAANAAoAIAAgAEoAUwBPAE4AVgBhAGwAdQBlAC4AYwBwAHAADQAKACAAIABM
AEUAQgBEAGUAYwBvAGQAZQByAC4AYwBwAHAADQAKACAAIABMAGkAZgBlAGMAeQBjAGwAZQBMAG8A
ZwBnAGUAcgAuAGMAcABwAA0ACgAgACAATABpAG4AZQBFAG4AZABpAG4AZwAuAGMAcABwAA0ACgAg
ACAATABpAHMAdABIAGEAcwBoAFMAZQB0AC4AYwBwAHAADQAKACAAIABMAG8AYwBrAC4AYwBwAHAA
DQAKACAAIABMAG8AZwBnAGUAcgAuAGMAcABwAA0ACgAgACAATQBhAHIAawBhAGIAbABlAC4AYwBw
AHAADQAKACAAIABNAGEAdABoAEUAeAB0AHIAYQBzAC4AYwBwAHAADQAKACAAIABNAGUAZABpAGEA
VABpAG0AZQAuAGMAcABwAA0ACgAgACAATQBlAHQAYQBBAGwAbABvAGMAYQB0AG8AcgAuAGMAcABw
AA0ACgAgACAATQBvAHYAZQBPAG4AbAB5AEwAaQBmAGUAYwB5AGMAbABlAEwAbwBnAGcAZQByAC4A
YwBwAHAADQAKACAAIABOAGEAawBlAGQAUAB0AHIALgBjAHAAcAANAAoAIAAgAE4AZQB2AGUAcgBE
AGUAcwB0AHIAbwB5AGUAZAAuAGMAcABwAA0ACgAgACAATwBwAHQAaQBvAG4AUwBlAHQALgBjAHAA
cAANAAoAIAAgAE8AcAB0AGkAbwBuAGEAbAAuAGMAcABwAA0ACgAgACAAUABhAGMAawBlAGQALgBj
AHAAcAANAAoAIAAgAFAAYQBjAGsAZQBkAFIAZQBmAC4AYwBwAHAADQAKACAAIABQAGEAYwBrAGUA
ZABSAGUAZgBQAHQAcgAuAGMAcABwAA0ACgAgACAAUABhAHIAawBpAG4AZwBMAG8AdAAuAGMAcABw
AA0ACgAgACAAUAByAGkAbwByAGkAdAB5AFEAdQBlAHUAZQAuAGMAcABwAA0ACgAgACAAUgBlAGQA
QgBsAGEAYwBrAFQAcgBlAGUALgBjAHAAcAANAAoAIAAgAFIAZQBmAC4AYwBwAHAADQAKACAAIABS
AGUAZgBDAG8AdQBuAHQAZQByAC4AYwBwAHAADQAKACAAIABSAGUAZgBMAG8AZwBnAGUAcgAuAGMA
cABwAA0ACgAgACAAUgBlAGYAUAB0AHIALgBjAHAAcAANAAoAIAAgAFIAdQBuAEwAbwBvAHAALgBj
AHAAcAANAAoAIAAgAFMASABBADEALgBjAHAAcAANAAoAIAAgAFMAYQB0AHUAcgBhAHQAZQBkAEEA
cgBpAHQAaABtAGUAdABpAGMATwBwAGUAcgBhAHQAaQBvAG4AcwAuAGMAcABwAA0ACgAgACAAUwBj
AG8AcABlAC4AYwBwAHAADQAKACAAIABTAGMAbwBwAGUAZABMAGEAbQBiAGQAYQAuAGMAcABwAA0A
CgAgACAAUwBlAHQARgBvAHIAUwBjAG8AcABlAC4AYwBwAHAADQAKACAAIABTAHQAZABMAGkAYgBF
AHgAdAByAGEAcwAuAGMAcABwAA0ACgAgACAAUwB0AHIAaQBuAGcAQgB1AGkAbABkAGUAcgAuAGMA
cABwAA0ACgAgACAAUwB0AHIAaQBuAGcAQwBvAG4AYwBhAHQAZQBuAGEAdABlAC4AYwBwAHAADQAK
ACAAIABTAHQAcgBpAG4AZwBIAGEAcwBoAGUAcgAuAGMAcABwAA0ACgAgACAAUwB0AHIAaQBuAGcA
SQBtAHAAbAAuAGMAcABwAA0ACgAgACAAUwB0AHIAaQBuAGcATwBwAGUAcgBhAHQAbwByAHMALgBj
AHAAcAANAAoAIAAgAFMAdAByAGkAbgBnAFAAYQByAHMAaQBuAGcAQgB1AGYAZgBlAHIALgBjAHAA
cAANAAoAIAAgAFMAdAByAGkAbgBnAFYAaQBlAHcALgBjAHAAcAANAAoAIAAgAFMAeQBuAGMAaABy
AG8AbgBpAHoAZQBkAEYAaQB4AGUAZABRAHUAZQB1AGUALgBjAHAAcAANAAoAIAAgAFQAZQB4AHQA
QgByAGUAYQBrAEkAdABlAHIAYQB0AG8AcgAuAGMAcABwAA0ACgAgACAAVABoAHIAZQBhAGQARwBy
AG8AdQBwAC4AYwBwAHAADQAKACAAIABUAGgAcgBlAGEAZABNAGUAcwBzAGEAZwBlAHMALgBjAHAA
cAANAAoARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBs
AHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABTAHQA
ZABMAGkAYgBFAHgAdAByAGEAcwAuAGMAcABwACgANAA5ACwAMgA0ACkAOgAgAHcAYQByAG4AaQBu
AGcAIABDADQAOAAzADgAOgAgAGMAbwBuAHYAZQByAHMAaQBvAG4AIABmAHIAbwBtACAAJwBzAGkA
egBlAF8AdAAnACAAdABvACAAJwB1AGkAbgB0ADgAXwB0ACcAIAByAGUAcQB1AGkAcgBlAHMAIABh
ACAAbgBhAHIAcgBvAHcAaQBuAGcAIABjAG8AbgB2AGUAcgBzAGkAbwBuACAAWwBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABc
AFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AFcAVABGAEwA
aQBiAC4AdgBjAHgAcAByAG8AagBdAA0ACgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUA
cwB0AHMAXABXAFQARgBcAFMAdABkAEwAaQBiAEUAeAB0AHIAYQBzAC4AYwBwAHAAKAAxADEAMQAp
ADoAIABtAGUAcwBzAGEAZwBlACAAOgAgAHMAZQBlACAAcgBlAGYAZQByAGUAbgBjAGUAIAB0AG8A
IABmAHUAbgBjAHQAaQBvAG4AIAB0AGUAbQBwAGwAYQB0AGUAIABpAG4AcwB0AGEAbgB0AGkAYQB0
AGkAbwBuACAAJwB2AG8AaQBkACAAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQA6ADoAdABlAHMA
dABGAGkAbgBkAEIAaQB0AEkAbgBXAG8AcgBkADwAdQBpAG4AdAAzADIAXwB0AD4AKAB2AG8AaQBk
ACkAJwAgAGIAZQBpAG4AZwAgAGMAbwBtAHAAaQBsAGUAZAAgAFsARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBs
AHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABXAFQARgBMAGkAYgAuAHYA
YwB4AHAAcgBvAGoAXQANAAoARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwA
VwBUAEYAXABTAHQAZABMAGkAYgBFAHgAdAByAGEAcwAuAGMAcABwACgANQAwACwAMgA0ACkAOgAg
AHcAYQByAG4AaQBuAGcAIABDADQAOAAzADgAOgAgAGMAbwBuAHYAZQByAHMAaQBvAG4AIABmAHIA
bwBtACAAJwBzAGkAegBlAF8AdAAnACAAdABvACAAJwB1AGkAbgB0ADgAXwB0ACcAIAByAGUAcQB1
AGkAcgBlAHMAIABhACAAbgBhAHIAcgBvAHcAaQBuAGcAIABjAG8AbgB2AGUAcgBzAGkAbwBuACAA
WwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUA
cwB0AFcAVABGAEwAaQBiAC4AdgBjAHgAcAByAG8AagBdAA0ACgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQA
QQBQAEkAXABUAGUAcwB0AHMAXABXAFQARgBcAFMAdABkAEwAaQBiAEUAeAB0AHIAYQBzAC4AYwBw
AHAAKAA1ADEALAAxADMAKQA6ACAAdwBhAHIAbgBpAG4AZwAgAEMANAA4ADMAOAA6ACAAYwBvAG4A
dgBlAHIAcwBpAG8AbgAgAGYAcgBvAG0AIAAnAGMAbwBuAHMAdAAgAHMAaQB6AGUAXwB0ACcAIAB0
AG8AIAAnAHUAaQBuAHQAOABfAHQAJwAgAHIAZQBxAHUAaQByAGUAcwAgAGEAIABuAGEAcgByAG8A
dwBpAG4AZwAgAGMAbwBuAHYAZQByAHMAaQBvAG4AIABbAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwA
VABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAVwBUAEYATABpAGIALgB2AGMAeABw
AHIAbwBqAF0ADQAKACAAIABUAGgAcgBlAGEAZABpAG4AZwAuAGMAcABwAA0ACgAgACAAVABpAG0A
ZQAuAGMAcABwAA0ACgAgACAAVQBSAEwALgBjAHAAcAANAAoAIAAgAFUAUgBMAFAAYQByAHMAZQBy
AC4AYwBwAHAADQAKACAAIABVAG4AaQBxAHUAZQBBAHIAcgBhAHkALgBjAHAAcAANAAoAIAAgAFUA
bgBpAHEAdQBlAFIAZQBmAC4AYwBwAHAADQAKACAAIABWAGEAcgBpAGEAbgB0AC4AYwBwAHAADQAK
ACAAIABWAGUAYwB0AG8AcgAuAGMAcABwAA0ACgAgACAAVwBUAEYAUwB0AHIAaQBuAGcALgBjAHAA
cAANAAoAIAAgAFcAZQBhAGsAUAB0AHIALgBjAHAAcAANAAoAIAAgAFcAbwByAGsAUQB1AGUAdQBl
AC4AYwBwAHAADQAKACAAIABXAG8AcgBrAGUAcgBQAG8AbwBsAC4AYwBwAHAADQAKACAAIABtAGEA
aQBuAC4AYwBwAHAADQAKACAAIABVAHQAaQBsAGkAdABpAGUAcwBXAGkAbgAuAGMAcABwAA0ACgBM
AGkAbgBrADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgA
NgApAFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAw
ADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwA
MQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABs
AGkAbgBrAC4AZQB4AGUAIAAvAEUAUgBSAE8AUgBSAEUAUABPAFIAVAA6AFEAVQBFAFUARQAgAC8A
TwBVAFQAOgAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1
AGkAbABkAF8AYQBtAGQANgA0AFwAYgBpAG4ANgA0AFwAVABlAHMAdABXAFQARgBMAGkAYgAuAGQA
bABsACIAIAAvAEkATgBDAFIARQBNAEUATgBUAEEATAA6AE4ATwAgAC8ATgBPAEwATwBHAE8AIAAv
AEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkA
dAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAgAC8ATABJAEIAUABBAFQASAA6
AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8A
YQBtAGQANgA0AC8AbABpAGIANgA0AC8AUgBlAGwAZQBhAHMAZQAgAC8ATABJAEIAUABBAFQASAA6
AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AVwBlAGIASwBpAHQA
TABpAGIAcgBhAHIAaQBlAHMALwB3AGkAbgAvAGwAaQBiADYANAAgAC8ATABJAEIAUABBAFQASAA6
AEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AVwBlAGIASwBpAHQA
TABpAGIAcgBhAHIAaQBlAHMALwB3AGkAbgAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBzAGUAIAAv
AEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkA
dAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBzAGUAIAAv
AEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkA
dAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBzAGUALwBS
AGUAbABlAGEAcwBlACAALgAuAFwALgAuAFwAbABpAGIANgA0AFwAZwB0AGUAcwB0AC4AbABpAGIA
IAAuAC4AXAAuAC4AXABsAGkAYgA2ADQAXABXAFQARgAuAGwAaQBiACAALgAuAFwALgAuAFwALgAu
AFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGwAaQBiADYANABcAGkA
YwB1AGQAdAAuAGwAaQBiACAALgAuAFwALgAuAFwALgAuAFwAVwBlAGIASwBpAHQATABpAGIAcgBh
AHIAaQBlAHMAXAB3AGkAbgBcAGwAaQBiADYANABcAGkAYwB1AGkAbgAuAGwAaQBiACAALgAuAFwA
LgAuAFwALgAuAFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkAbgBcAGwAaQBi
ADYANABcAGkAYwB1AHUAYwAuAGwAaQBiACAARABiAGcASABlAGwAcAAuAGwAaQBiACAAcwBoAGwA
dwBhAHAAaQAuAGwAaQBiACAAdwBpAG4AbQBtAC4AbABpAGIAIABDAEYAbABpAHQAZQAuAGwAaQBi
ACAAawBlAHIAbgBlAGwAMwAyAC4AbABpAGIAIAB1AHMAZQByADMAMgAuAGwAaQBiACAAZwBkAGkA
MwAyAC4AbABpAGIAIAB3AGkAbgBzAHAAbwBvAGwALgBsAGkAYgAgAHMAaABlAGwAbAAzADIALgBs
AGkAYgAgAG8AbABlADMAMgAuAGwAaQBiACAAbwBsAGUAYQB1AHQAMwAyAC4AbABpAGIAIAB1AHUA
aQBkAC4AbABpAGIAIABjAG8AbQBkAGwAZwAzADIALgBsAGkAYgAgAGEAZAB2AGEAcABpADMAMgAu
AGwAaQBiACAALwBNAEEATgBJAEYARQBTAFQAIAAvAE0AQQBOAEkARgBFAFMAVABVAEEAQwA6ACIA
bABlAHYAZQBsAD0AJwBhAHMASQBuAHYAbwBrAGUAcgAnACAAdQBpAEEAYwBjAGUAcwBzAD0AJwBm
AGEAbABzAGUAJwAiACAALwBtAGEAbgBpAGYAZQBzAHQAOgBlAG0AYgBlAGQAIAAvAEQARQBCAFUA
RwAgAC8AUABEAEIAOgAiAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0
AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8AYgBpAG4ANgA0AC8AVABlAHMAdABXAFQARgBMAGkA
YgAuAHAAZABiACIAIAAvAFMAVQBCAFMAWQBTAFQARQBNADoAQwBPAE4AUwBPAEwARQAgAC8ATwBQ
AFQAOgBSAEUARgAgAC8ATwBQAFQAOgBJAEMARgAgAC8AVABMAEIASQBEADoAMQAgAC8ARABZAE4A
QQBNAEkAQwBCAEEAUwBFACAALwBOAFgAQwBPAE0AUABBAFQAIAAvAEkATQBQAEwASQBCADoAIgBG
ADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEA
bQBkADYANAAvAGwAaQBiADYANAAvAFQAZQBzAHQAVwBUAEYATABpAGIALgBsAGkAYgAiACAALwBN
AEEAQwBIAEkATgBFADoAWAA2ADQAIAAgAC8AbQBhAGMAaABpAG4AZQA6AHgANgA0ACAALwBEAEwA
TAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAG8AdQBu
AHQAZQByAHMALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABUAGUAcwB0AHMAQwBvAG4AdAByAG8AbABsAGUAcgAuAG8AYgBqAA0ACgAg
ACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFcAVABGAFMA
dAByAGkAbgBnAFUAdABpAGwAaQB0AGkAZQBzAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABG
AEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQQB0AG8AbQBTAHQAcgBpAG4AZwAuAG8A
YgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEIAaQB0AG0AYQBwAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwAQgBsAG8AbwBtAEYAaQBsAHQAZQByAC4AbwBiAGoADQAKACAAIABU
AGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQgBvAHgAUAB0AHIA
LgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABCAHUAbQBwAFAAbwBpAG4AdABlAHIAQQBsAGwAbwBjAGEAdABvAHIALgBvAGIAagANAAoA
IAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABDAFMAdABy
AGkAbgBnAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwAQwBoAGUAYwBrAGUAZABBAHIAaQB0AGgAbQBlAHQAaQBjAE8AcABlAHIAYQB0
AGkAbwBuAHMALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABDAG8AbQBwAGEAYwB0AFIAZQBmAFAAdAByAFQAdQBwAGwAZQAuAG8AYgBq
AA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEMA
bwBuAGMAdQByAHIAZQBuAHQAUAB0AHIASABhAHMAaABTAGUAdAAuAG8AYgBqAA0ACgAgACAAVABl
AHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEMAbwBuAGQAaQB0AGkA
bwBuAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwAQwByAG8AcwBzAFQAaAByAGUAYQBkAEMAbwBwAGkAZQByAC4AbwBiAGoADQAKACAA
IABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQwByAG8AcwBz
AFQAaAByAGUAYQBkAFQAYQBzAGsALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAGEAdABhAE0AdQB0AGUAeAAuAG8AYgBqAA0ACgAg
ACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEQAYQB0AGUA
TQBhAHQAaAAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBl
AGwAZQBhAHMAZQBcAEQAZQBxAHUAZQAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkA
YgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEUAbgB1AG0AVAByAGEAaQB0AHMALgBvAGIAagAN
AAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABFAHgA
cABlAGMAdABlAGQALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABGAGkAbABlAFMAeQBzAHQAZQBtAC4AbwBiAGoADQAKACAAIABUAGUA
cwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwARgB1AG4AYwB0AGkAbwBu
AC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwASABhAHMAaABDAG8AdQBuAHQAZQBkAFMAZQB0AC4AbwBiAGoADQAKACAAIABUAGUAcwB0
AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwASABhAHMAaABNAGEAcAAuAG8A
YgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEgAYQBzAGgAUwBlAHQALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABIAGEAcwBoAGUAcgAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABX
AFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEgAZQB4AE4AdQBtAGIAZQByAC4A
bwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwASQBuAHQAZQBnAGUAcgBUAG8AUwB0AHIAaQBuAGcAQwBvAG4AdgBlAHIAcwBpAG8AbgAuAG8A
YgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEkAdABlAHIAYQB0AG8AcgBSAGEAbgBnAGUALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYA
TABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABKAFMATwBOAFYAYQBsAHUAZQAuAG8AYgBq
AA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAEwA
RQBCAEQAZQBjAG8AZABlAHIALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAGkAZgBlAGMAeQBjAGwAZQBMAG8AZwBnAGUAcgAuAG8A
YgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AEwAaQBuAGUARQBuAGQAaQBuAGcALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAGkAcwB0AEgAYQBzAGgAUwBlAHQALgBvAGIAagAN
AAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABMAG8A
YwBrAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwATABvAGcAZwBlAHIALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABNAGEAcgBrAGEAYgBsAGUALgBvAGIAagANAAoAIAAg
AFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABNAGEAdABoAEUA
eAB0AHIAYQBzAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwATQBlAGQAaQBhAFQAaQBtAGUALgBvAGIAagANAAoAIAAgAFQAZQBzAHQA
VwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABNAGUAdABhAEEAbABsAG8AYwBh
AHQAbwByAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUA
bABlAGEAcwBlAFwATQBvAHYAZQBPAG4AbAB5AEwAaQBmAGUAYwB5AGMAbABlAEwAbwBnAGcAZQBy
AC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEA
cwBlAFwATgBhAGsAZQBkAFAAdAByAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBi
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwATgBlAHYAZQByAEQAZQBzAHQAcgBvAHkAZQBkAC4A
bwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwATwBwAHQAaQBvAG4AUwBlAHQALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABPAHAAdABpAG8AbgBhAGwALgBvAGIAagANAAoAIAAg
AFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABQAGEAYwBrAGUA
ZAAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFAAYQBjAGsAZQBkAFIAZQBmAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwA
aQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUABhAGMAawBlAGQAUgBlAGYAUAB0AHIALgBv
AGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUA
XABQAGEAcgBrAGkAbgBnAEwAbwB0AC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBi
AC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUAByAGkAbwByAGkAdAB5AFEAdQBlAHUAZQAuAG8A
YgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFIAZQBkAEIAbABhAGMAawBUAHIAZQBlAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwA
aQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUgBlAGYALgBvAGIAagANAAoAIAAgAFQAZQBz
AHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAZgBDAG8AdQBuAHQA
ZQByAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABl
AGEAcwBlAFwAUgBlAGYATABvAGcAZwBlAHIALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYA
TABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABSAGUAZgBQAHQAcgAuAG8AYgBqAA0ACgAg
ACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFIAdQBuAEwA
bwBvAHAALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBs
AGUAYQBzAGUAXABTAEgAQQAxAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4A
ZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBhAHQAdQByAGEAdABlAGQAQQByAGkAdABoAG0AZQB0
AGkAYwBPAHAAZQByAGEAdABpAG8AbgBzAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwA
aQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBjAG8AcABlAC4AbwBiAGoADQAKACAAIABU
AGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBjAG8AcABlAGQA
TABhAG0AYgBkAGEALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABTAGUAdABGAG8AcgBTAGMAbwBwAGUALgBvAGIAagANAAoAIAAgAFQA
ZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAZABMAGkAYgBF
AHgAdAByAGEAcwAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFMAdAByAGkAbgBnAEIAdQBpAGwAZABlAHIALgBvAGIAagANAAoAIAAg
AFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAcgBpAG4A
ZwBDAG8AbgBjAGEAdABlAG4AYQB0AGUALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABp
AGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAcgBpAG4AZwBIAGEAcwBoAGUAcgAuAG8A
YgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFMAdAByAGkAbgBnAEkAbQBwAGwALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIA
LgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAcgBpAG4AZwBPAHAAZQByAGEAdABvAHIAcwAu
AG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAFMAdAByAGkAbgBnAFAAYQByAHMAaQBuAGcAQgB1AGYAZgBlAHIALgBvAGIAagANAAoAIAAg
AFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAHQAcgBpAG4A
ZwBWAGkAZQB3AC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAUwB5AG4AYwBoAHIAbwBuAGkAegBlAGQARgBpAHgAZQBkAFEAdQBlAHUA
ZQAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBh
AHMAZQBcAFQAZQB4AHQAQgByAGUAYQBrAEkAdABlAHIAYQB0AG8AcgAuAG8AYgBqAA0ACgAgACAA
VABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQAaAByAGUAYQBk
AEcAcgBvAHUAcAAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFQAaAByAGUAYQBkAE0AZQBzAHMAYQBnAGUAcwAuAG8AYgBqAA0ACgAg
ACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQAaAByAGUA
YQBkAGkAbgBnAC4AbwBiAGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABS
AGUAbABlAGEAcwBlAFwAVABpAG0AZQAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkA
YgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFUAUgBMAC4AbwBiAGoADQAKACAAIABUAGUAcwB0
AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVQBSAEwAUABhAHIAcwBlAHIA
LgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABVAG4AaQBxAHUAZQBBAHIAcgBhAHkALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYA
TABpAGIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABVAG4AaQBxAHUAZQBSAGUAZgAuAG8AYgBq
AA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFYA
YQByAGkAYQBuAHQALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXABWAGUAYwB0AG8AcgAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQA
RgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFcAVABGAFMAdAByAGkAbgBnAC4AbwBi
AGoADQAKACAAIABUAGUAcwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwA
VwBlAGEAawBQAHQAcgAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQBy
AFwAUgBlAGwAZQBhAHMAZQBcAFcAbwByAGsAUQB1AGUAdQBlAC4AbwBiAGoADQAKACAAIABUAGUA
cwB0AFcAVABGAEwAaQBiAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVwBvAHIAawBlAHIAUABv
AG8AbAAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwA
ZQBhAHMAZQBcAG0AYQBpAG4ALgBvAGIAagANAAoAIAAgAFQAZQBzAHQAVwBUAEYATABpAGIALgBk
AGkAcgBcAFIAZQBsAGUAYQBzAGUAXABVAHQAaQBsAGkAdABpAGUAcwBXAGkAbgAuAG8AYgBqAA0A
CgAgACAAIAAgACAAQwByAGUAYQB0AGkAbgBnACAAbABpAGIAcgBhAHIAeQAgAEYAOgAvAGcAaQB0
AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkAbABkAF8AYQBtAGQANgA0AC8A
bABpAGIANgA0AC8AVABlAHMAdABXAFQARgBMAGkAYgAuAGwAaQBiACAAYQBuAGQAIABvAGIAagBl
AGMAdAAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkAdAAvAHcAZQBiAGsAaQB0AC8AYgB1AGkA
bABkAF8AYQBtAGQANgA0AC8AbABpAGIANgA0AC8AVABlAHMAdABXAFQARgBMAGkAYgAuAGUAeABw
AA0ACgAgACAAVABlAHMAdABXAFQARgBMAGkAYgAuAHYAYwB4AHAAcgBvAGoAIAAtAD4AIABGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAGIAaQBuADYANABcAFQAZQBzAHQAVwBUAEYATABpAGIALgBkAGwAbAANAAoARgBpAG4A
YQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBn
ACAAZgBpAGwAZQAgACIAVABlAHMAdABXAFQARgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAFQAZQBzAHQAVwBUAEYATABpAGIALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1
AGwAYgB1AGkAbABkACIALgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIAVABlAHMAdABXAFQA
RgBMAGkAYgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQAZQBzAHQAVwBUAEYATABpAGIALgB0
AGwAbwBnAFwAVABlAHMAdABXAFQARgBMAGkAYgAuAGwAYQBzAHQAYgB1AGkAbABkAHMAdABhAHQA
ZQAiAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0
AFcAVABGAEwAaQBiAC4AdgBjAHgAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIA
ZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBl
AGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJ
AFwAVABlAHMAdABXAFQARgBMAGkAYgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoA
IgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBl
AGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJ
AFwAVABlAHMAdABXAFQARgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgA
NwAyACkAIABpAHMAIABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwA
VABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBzAHQAVwBUAEYALgB2AGMAeABwAHIAbwBq
ACIAIAAoADcANwApACAAbwBuACAAbgBvAGQAZQAgADEAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEA
cgBnAGUAdAAoAHMAKQApAC4ADQAKAEMAbwByAGUAQwBsAGUAYQBuADoADQAKACAAIABDAHIAZQBh
AHQAaQBuAGcAIABkAGkAcgBlAGMAdABvAHIAeQAgACIAVABlAHMAdABXAFQARgAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcACIALgANAAoAUAByAGUAcABhAHIAZQBGAG8AcgBCAHUAaQBsAGQAOgAN
AAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBUAGUAcwB0AFcA
VABGAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVABlAHMAdABXAFQARgAuAHQAbABvAGcAXAAi
AC4ADQAKAEkAbgBpAHQAaQBhAGwAaQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAA
IABDAHIAZQBhAHQAaQBuAGcAIAAiAFQAZQBzAHQAVwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBz
AGUAXABUAGUAcwB0AFcAVABGAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIA
dQBpAGwAZAAiACAAYgBlAGMAYQB1AHMAZQAgACIAQQBsAHcAYQB5AHMAQwByAGUAYQB0AGUAIgAg
AHcAYQBzACAAcwBwAGUAYwBpAGYAaQBlAGQALgANAAoAQwB1AHMAdABvAG0AQgB1AGkAbABkADoA
DQAKACAAIABCAHUAaQBsAGQAaQBuAGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABGADoALwBn
AGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFQAbwBvAGwAcwAvAFQAZQBzAHQA
VwBlAGIASwBpAHQAQQBQAEkALwBDAE0AYQBrAGUATABpAHMAdABzAC4AdAB4AHQADQAKAEMAbABD
AG8AbQBwAGkAbABlADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAA
KAB4ADgANgApAFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBv
AFwAMgAwADEAOQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMA
VgBDAFwAMQA0AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2
ADQAXABDAEwALgBlAHgAZQAgAC8AYwAgAC8ASQBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAFwAdwBpAG4AXABp
AG4AYwBsAHUAZABlACAALwBaAGkAIAAvAG4AbwBsAG8AZwBvACAALwBXADQAIAAvAFcAWAAtACAA
LwBkAGkAYQBnAG4AbwBzAHQAaQBjAHMAOgBjAG8AbAB1AG0AbgAgAC8ATQBQACAALwBPADIAIAAv
AE8AYgAyACAALwBPAHkALQAgAC8ARAAgAFcASQBOADMAMgAgAC8ARAAgAF8AVwBJAE4ARABPAFcA
UwAgAC8ARAAgAE4ARABFAEIAVQBHACAALwBEACAAVQBTAEUAXwBDAE8ATgBTAE8ATABFAF8ARQBO
AFQAUgBZAF8AUABPAEkATgBUACAALwBEACAAVwBJAE4AXwBDAEEASQBSAE8AIAAvAEQAIABCAFUA
SQBMAEQASQBOAEcAXwBUAGUAcwB0AFcAVABGACAALwBEACAAQgBVAEkATABEAEkATgBHAF8AVwBJ
AFQASABfAEMATQBBAEsARQA9ADEAIAAvAEQAIABIAEEAVgBFAF8AQwBPAE4ARgBJAEcAXwBIAD0A
MQAgAC8ARAAgAFcASQBOAFYARQBSAD0AMAB4ADYAMAAxACAALwBEACAAXwBXAEkATgAzADIAXwBX
AEkATgBOAFQAPQAwAHgANgAwADEAIAAvAEQAIABOAE8ATQBJAE4ATQBBAFgAIAAvAEQAIABVAE4A
SQBDAE8ARABFACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAALwBEACAAXwBIAEEAUwBfAEUAWABD
AEUAUABUAEkATwBOAFMAPQAwACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBFAF8ATgBPAF8A
VwBBAFIATgBJAE4ARwBTACAALwBEACAAXwBDAFIAVABfAFMARQBDAFUAUgBFAF8AQwBQAFAAXwBP
AFYARQBSAEwATwBBAEQAXwBTAFQAQQBOAEQAQQBSAEQAXwBOAEEATQBFAFMAPQAxACAALwBEACAA
XwBXAEkATgBTAE8AQwBLAEEAUABJAF8APQAgAC8ARAAgAFcAVABGAF8AUABMAEEAVABGAE8AUgBN
AF8AVwBJAE4AXwBDAEEASQBSAE8APQAxACAALwBEACAATgBPAEMAUgBZAFAAVAAgAC8ARAAgAEcA
VABFAFMAVABfAEgAQQBTAF8AUgBUAFQASQA9ADAAIAAvAEQAIABHAFQARQBTAFQAXwBDAFIARQBB
AFQARQBfAFMASABBAFIARQBEAF8ATABJAEIAUgBBAFIAWQA9ADAAIAAvAEQAIABHAFQARQBTAFQA
XwBIAEEAUwBfAFAAVABIAFIARQBBAEQAPQAwACAALwBEACAAIgBDAE0AQQBLAEUAXwBJAE4AVABE
AEkAUgA9AFwAIgBSAGUAbABlAGEAcwBlAFwAIgAiACAALwBEACAAXwBVAE4ASQBDAE8ARABFACAA
LwBEACAAVQBOAEkAQwBPAEQARQAgAC8ARwBtAC0AIAAvAE0ARAAgAC8ARwBTACAALwBmAHAAOgBw
AHIAZQBjAGkAcwBlACAALwBmAHAAOgBlAHgAYwBlAHAAdAAtACAALwBaAGMAOgB3AGMAaABhAHIA
XwB0ACAALwBaAGMAOgBmAG8AcgBTAGMAbwBwAGUAIAAvAFoAYwA6AGkAbgBsAGkAbgBlACAALwBH
AFIALQAgAC8AcwB0AGQAOgBjACsAKwAxADcAIAAvAEYAbwAiAFQAZQBzAHQAVwBUAEYALgBkAGkA
cgBcAFIAZQBsAGUAYQBzAGUAXABcACIAIAAvAEYAZAAiAFQAZQBzAHQAVwBUAEYALgBkAGkAcgBc
AFIAZQBsAGUAYQBzAGUAXAB2AGMAMQA0ADIALgBwAGQAYgAiACAALwBHAGQAIAAvAFQAUAAgAC8A
dwBkADQAMAAxADgAIAAvAHcAZAA0ADAANgA4ACAALwB3AGQANAAwADkAOQAgAC8AdwBkADQAMQAw
ADAAIAAvAHcAZAA0ADEAMgA3ACAALwB3AGQANAAxADMAOAAgAC8AdwBkADQAMQA0ADYAIAAvAHcA
ZAA0ADEAOAAwACAALwB3AGQANAAxADgAOQAgAC8AdwBkADQAMgAwADEAIAAvAHcAZAA0ADIAMAA2
ACAALwB3AGQANAAyADQANAAgAC8AdwBkADQAMgA1ADEAIAAvAHcAZAA0ADIANgA3ACAALwB3AGQA
NAAyADcANQAgAC8AdwBkADQAMgA4ADgAIAAvAHcAZAA0ADIAOQAxACAALwB3AGQANAAzADAANQAg
AC8AdwBkADQAMwAwADkAIAAvAHcAZAA0ADMANAA0ACAALwB3AGQANAAzADUANQAgAC8AdwBkADQA
MwA4ADkAIAAvAHcAZAA0ADMAOQA2ACAALwB3AGQANAA0ADUANgAgAC8AdwBkADQANAA1ADcAIAAv
AHcAZAA0ADQANQA4ACAALwB3AGQANAA0ADUAOQAgAC8AdwBkADQANAA4ADEAIAAvAHcAZAA0ADUA
MAAzACAALwB3AGQANAA1ADAANQAgAC8AdwBkADQANQAxADAAIAAvAHcAZAA0ADUAMQAyACAALwB3
AGQANAA1ADMAMAAgAC8AdwBkADQANgAxADAAIAAvAHcAZAA0ADYAMQAxACAALwB3AGQANAA2ADQA
NgAgAC8AdwBkADQANwAwADIAIAAvAHcAZAA0ADcAMAA2ACAALwB3AGQANAA3ADIAMgAgAC8AdwBk
ADQAOAAwADAAIAAvAHcAZAA0ADgAMQA5ACAALwB3AGQANAA5ADUAMQAgAC8AdwBkADQAOQA1ADIA
IAAvAHcAZAA0ADkAOQA2ACAALwB3AGQANgAwADEAMQAgAC8AdwBkADYAMAAzADEAIAAvAHcAZAA2
ADIAMQAxACAALwB3AGQANgAyADQANgAgAC8AdwBkADYAMgA1ADUAIAAvAHcAZAA2ADMAOAA3ACAA
LwB3AGQANAAwADkAMQAgAC8AYQBuAGEAbAB5AHoAZQAtACAALwBlAHIAcgBvAHIAUgBlAHAAbwBy
AHQAOgBxAHUAZQB1AGUAIAAgAC8ARQBIAHMALQAgAC8ARQBIAGMALQAgAC8ARQBIAGEALQAgAC8A
RQBIAGMALQAgAC8ARQBIAHMALQAgAC8AYgBpAGcAbwBiAGoAIAAvAHUAdABmAC0AOAAgAC8AdgBh
AGwAaQBkAGEAdABlAC0AYwBoAGEAcgBzAGUAdAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAVABvAG8AbABzAFwAdwBpAG4AXABEAEwATABMAGEAdQBuAGMAaABl
AHIAXABEAEwATABMAGEAdQBuAGMAaABlAHIATQBhAGkAbgAuAGMAcABwAA0ACgAgACAARABMAEwA
TABhAHUAbgBjAGgAZQByAE0AYQBpAG4ALgBjAHAAcAANAAoATABpAG4AawA6AA0ACgAgACAAQwA6
AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwAgACgAeAA4ADYAKQBcAE0AaQBjAHIAbwBzAG8A
ZgB0ACAAVgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAbwBcADIAMAAxADkAXABFAG4AdABlAHIAcABy
AGkAcwBlAFwAVgBDAFwAVABvAG8AbABzAFwATQBTAFYAQwBcADEANAAuADIANgAuADIAOAA4ADAA
MQBcAGIAaQBuAFwASABvAHMAdABYADYANABcAHgANgA0AFwAbABpAG4AawAuAGUAeABlACAALwBF
AFIAUgBPAFIAUgBFAFAATwBSAFQAOgBRAFUARQBVAEUAIAAvAE8AVQBUADoAIgBGADoAXABnAGkA
dABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABc
AGIAaQBuADYANABcAFQAZQBzAHQAVwBUAEYALgBlAHgAZQAiACAALwBJAE4AQwBSAEUATQBFAE4A
VABBAEwAOgBOAE8AIAAvAE4ATwBMAE8ARwBPACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBp
AHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
LwBsAGkAYgA2ADQAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBp
AHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAFIA
ZQBsAGUAYQBzAGUAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBp
AHQALwB3AGUAYgBrAGkAdAAvAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAC8AdwBpAG4A
LwBsAGkAYgA2ADQAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBp
AHQALwB3AGUAYgBrAGkAdAAvAFcAZQBiAEsAaQB0AEwAaQBiAHIAYQByAGkAZQBzAC8AdwBpAG4A
LwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBp
AHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
LwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkAQgBQAEEAVABIADoARgA6AC8AZwBp
AHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
LwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlAC8AUgBlAGwAZQBhAHMAZQAgAHMAaABsAHcAYQBw
AGkALgBsAGkAYgAgAGsAZQByAG4AZQBsADMAMgAuAGwAaQBiACAAdQBzAGUAcgAzADIALgBsAGkA
YgAgAGcAZABpADMAMgAuAGwAaQBiACAAdwBpAG4AcwBwAG8AbwBsAC4AbABpAGIAIABzAGgAZQBs
AGwAMwAyAC4AbABpAGIAIABvAGwAZQAzADIALgBsAGkAYgAgAG8AbABlAGEAdQB0ADMAMgAuAGwA
aQBiACAAdQB1AGkAZAAuAGwAaQBiACAAYwBvAG0AZABsAGcAMwAyAC4AbABpAGIAIABhAGQAdgBh
AHAAaQAzADIALgBsAGkAYgAgAC8ATQBBAE4ASQBGAEUAUwBUACAALwBNAEEATgBJAEYARQBTAFQA
VQBBAEMAOgAiAGwAZQB2AGUAbAA9ACcAYQBzAEkAbgB2AG8AawBlAHIAJwAgAHUAaQBBAGMAYwBl
AHMAcwA9ACcAZgBhAGwAcwBlACcAIgAgAC8AbQBhAG4AaQBmAGUAcwB0ADoAZQBtAGIAZQBkACAA
LwBEAEUAQgBVAEcAIAAvAFAARABCADoAIgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3
AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBkADYANAAvAGIAaQBuADYANAAvAFQAZQBzAHQA
VwBUAEYALgBwAGQAYgAiACAALwBTAFUAQgBTAFkAUwBUAEUATQA6AEMATwBOAFMATwBMAEUAIAAv
AE8AUABUADoAUgBFAEYAIAAvAE8AUABUADoASQBDAEYAIAAvAFQATABCAEkARAA6ADEAIAAvAEQA
WQBOAEEATQBJAEMAQgBBAFMARQAgAC8ATgBYAEMATwBNAFAAQQBUACAALwBJAE0AUABMAEkAQgA6
ACIARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBiAHUAaQBsAGQA
XwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBUAGUAcwB0AFcAVABGAC4AbABpAGIAIgAgAC8ATQBB
AEMASABJAE4ARQA6AFgANgA0ACAAIAAvAG0AYQBjAGgAaQBuAGUAOgB4ADYANAAgACIALwBtAGEA
bgBpAGYAZQBzAHQAZABlAHAAZQBuAGQAZQBuAGMAeQA6AHQAeQBwAGUAPQAnAHcAaQBuADMAMgAn
ACAAbgBhAG0AZQA9ACcATQBpAGMAcgBvAHMAbwBmAHQALgBXAGkAbgBkAG8AdwBzAC4AQwBvAG0A
bQBvAG4ALQBDAG8AbgB0AHIAbwBsAHMAJwAgAHYAZQByAHMAaQBvAG4APQAnADYALgAwAC4AMAAu
ADAAJwAgAHAAcgBvAGMAZQBzAHMAbwByAEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBlAD0AJwBhAG0A
ZAA2ADQAJwAgAHAAdQBiAGwAaQBjAEsAZQB5AFQAbwBrAGUAbgA9ACcANgA1ADkANQBiADYANAAx
ADQANABjAGMAZgAxAGQAZgAnACAAbABhAG4AZwB1AGEAZwBlAD0AJwAqACcAIgAgAFQAZQBzAHQA
VwBUAEYALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABEAEwATABMAGEAdQBuAGMAaABlAHIATQBh
AGkAbgAuAG8AYgBqAA0ACgAgACAAVABlAHMAdABXAFQARgAuAHYAYwB4AHAAcgBvAGoAIAAtAD4A
IABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABf
AGEAbQBkADYANABcAGIAaQBuADYANABcAFQAZQBzAHQAVwBUAEYALgBlAHgAZQANAAoARgBpAG4A
YQBsAGkAegBlAEIAdQBpAGwAZABTAHQAYQB0AHUAcwA6AA0ACgAgACAARABlAGwAZQB0AGkAbgBn
ACAAZgBpAGwAZQAgACIAVABlAHMAdABXAFQARgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFQA
ZQBzAHQAVwBUAEYALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1AGkAbABk
ACIALgANAAoAIAAgAFQAbwB1AGMAaABpAG4AZwAgACIAVABlAHMAdABXAFQARgAuAGQAaQByAFwA
UgBlAGwAZQBhAHMAZQBcAFQAZQBzAHQAVwBUAEYALgB0AGwAbwBnAFwAVABlAHMAdABXAFQARgAu
AGwAYQBzAHQAYgB1AGkAbABkAHMAdABhAHQAZQAiAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQA
aQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAFQAZQBzAHQA
VwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AFcAVABGAC4AdgBjAHgAcAByAG8AagAiACAAKABS
AGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAAQgB1AGkA
bABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0
AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABUAGUA
cwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABXAFQARgAuAHYAYwB4AHAAcgBvAGoALgBt
AGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkA
LgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBl
AGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAEwATABfAEIAVQBJAEwARAAuAHYA
YwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgApACAAaQBzACAAYgB1AGkAbABk
AGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIA
dQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIARAByAGkAdgBlAHIAXABX
AGUAYgBEAHIAaQB2AGUAcgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgA
OAA2ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0
ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBc
AFcAZQBiAEQAcgBpAHYAZQByAFwAVwBlAGIARAByAGkAdgBlAHIALgB2AGMAeABwAHIAbwBqAC4A
bQBlAHQAYQBwAHIAbwBqACIAIAAoADgANgApACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFMAbwB1AHIAYwBlAFwAVwBlAGIARAByAGkAdgBlAHIAXABXAGUAYgBEAHIAaQB2
AGUAcgAuAHYAYwB4AHAAcgBvAGoAIgAgACgAOAA3ACkAIABvAG4AIABuAG8AZABlACAAMQAgACgA
UgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAQwBvAHIAZQBDAGwAZQBh
AG4AOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUAYwB0AG8AcgB5ACAAIgBXAGUA
YgBEAHIAaQB2AGUAcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcACIALgANAAoAUAByAGUAcABh
AHIAZQBGAG8AcgBCAHUAaQBsAGQAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgAGQAaQByAGUA
YwB0AG8AcgB5ACAAIgBXAGUAYgBEAHIAaQB2AGUAcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBc
AFcAZQBiAEQAcgBpAHYAZQByAC4AdABsAG8AZwBcACIALgANAAoASQBuAGkAdABpAGEAbABpAHoA
ZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEMAcgBlAGEAdABpAG4AZwAgACIAVwBl
AGIARAByAGkAdgBlAHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABXAGUAYgBEAHIAaQB2AGUA
cgAuAHQAbABvAGcAXAB1AG4AcwB1AGMAYwBlAHMAcwBmAHUAbABiAHUAaQBsAGQAIgAgAGIAZQBj
AGEAdQBzAGUAIAAiAEEAbAB3AGEAeQBzAEMAcgBlAGEAdABlACIAIAB3AGEAcwAgAHMAcABlAGMA
aQBmAGkAZQBkAC4ADQAKAEMAdQBzAHQAbwBtAEIAdQBpAGwAZAA6AA0ACgAgACAARwBlAG4AZQBy
AGEAdABpAG4AZwAgAC4ALgAvAC4ALgAvAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwAvAFcA
ZQBiAEQAcgBpAHYAZQByAC8AVwBlAGIARAByAGkAdgBlAHIAQQB0AG8AbQBzAC4AaAAsACAALgAu
AC8ALgAuAC8ARABlAHIAaQB2AGUAZABTAG8AdQByAGMAZQBzAC8AVwBlAGIARAByAGkAdgBlAHIA
LwBXAGUAYgBEAHIAaQB2AGUAcgBBAHQAbwBtAHMALgBjAHAAcAANAAoAIAAgAEIAdQBpAGwAZABp
AG4AZwAgAEMAdQBzAHQAbwBtACAAUgB1AGwAZQAgAEYAOgAvAGcAaQB0AFAALwBXAGUAYgBLAGkA
dAAvAHcAZQBiAGsAaQB0AC8AUwBvAHUAcgBjAGUALwBXAGUAYgBEAHIAaQB2AGUAcgAvAEMATQBh
AGsAZQBMAGkAcwB0AHMALgB0AHgAdAANAAoAQwBsAEMAbwBtAHAAaQBsAGUAOgANAAoAIAAgAEMA
OgBcAFAAcgBvAGcAcgBhAG0AIABGAGkAbABlAHMAIAAoAHgAOAA2ACkAXABNAGkAYwByAG8AcwBv
AGYAdAAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AXAAyADAAMQA5AFwARQBuAHQAZQByAHAA
cgBpAHMAZQBcAFYAQwBcAFQAbwBvAGwAcwBcAE0AUwBWAEMAXAAxADQALgAyADYALgAyADgAOAAw
ADEAXABiAGkAbgBcAEgAbwBzAHQAWAA2ADQAXAB4ADYANABcAEMATAAuAGUAeABlACAALwBjACAA
LwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABk
AF8AYQBtAGQANgA0ACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsA
aQB0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBEAHIAaQB2AGUAcgAgAC8ASQBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEQA
ZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAFcAZQBiAEQAcgBpAHYAZQByACAALwBJAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQA
NgA0AFwAVwBUAEYAXABIAGUAYQBkAGUAcgBzACAALwBJAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBL
AGkAdABcAHcAZQBiAGsAaQB0AFwAVwBlAGIASwBpAHQATABpAGIAcgBhAHIAaQBlAHMAXAB3AGkA
bgBcAGkAbgBjAGwAdQBkAGUAIAAvAFoAaQAgAC8AbgBvAGwAbwBnAG8AIAAvAFcANAAgAC8AVwBY
AC0AIAAvAGQAaQBhAGcAbgBvAHMAdABpAGMAcwA6AGMAbwBsAHUAbQBuACAALwBNAFAAIAAvAE8A
MgAgAC8ATwBiADIAIAAvAE8AeQAtACAALwBEACAAVwBJAE4AMwAyACAALwBEACAAXwBXAEkATgBE
AE8AVwBTACAALwBEACAATgBEAEUAQgBVAEcAIAAvAEQAIABCAFUASQBMAEQASQBOAEcAXwBXAGUA
YgBEAHIAaQB2AGUAcgAgAC8ARAAgAEIAVQBJAEwARABJAE4ARwBfAFcASQBUAEgAXwBDAE0AQQBL
AEUAPQAxACAALwBEACAASABBAFYARQBfAEMATwBOAEYASQBHAF8ASAA9ADEAIAAvAEQAIABXAEkA
TgBWAEUAUgA9ADAAeAA2ADAAMQAgAC8ARAAgAF8AVwBJAE4AMwAyAF8AVwBJAE4ATgBUAD0AMAB4
ADYAMAAxACAALwBEACAATgBPAE0ASQBOAE0AQQBYACAALwBEACAAVQBOAEkAQwBPAEQARQAgAC8A
RAAgAF8AVQBOAEkAQwBPAEQARQAgAC8ARAAgAF8ASABBAFMAXwBFAFgAQwBFAFAAVABJAE8ATgBT
AD0AMAAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAE4ATwBfAFcAQQBSAE4ASQBOAEcA
UwAgAC8ARAAgAF8AQwBSAFQAXwBTAEUAQwBVAFIARQBfAEMAUABQAF8ATwBWAEUAUgBMAE8AQQBE
AF8AUwBUAEEATgBEAEEAUgBEAF8ATgBBAE0ARQBTAD0AMQAgAC8ARAAgAF8AVwBJAE4AUwBPAEMA
SwBBAFAASQBfAD0AIAAvAEQAIABXAFQARgBfAFAATABBAFQARgBPAFIATQBfAFcASQBOAF8AQwBB
AEkAUgBPAD0AMQAgAC8ARAAgAE4ATwBDAFIAWQBQAFQAIAAvAEQAIAAiAEMATQBBAEsARQBfAEkA
TgBUAEQASQBSAD0AXAAiAFIAZQBsAGUAYQBzAGUAXAAiACIAIAAvAEQAIABfAFUATgBJAEMATwBE
AEUAIAAvAEQAIABVAE4ASQBDAE8ARABFACAALwBHAG0ALQAgAC8ATQBEACAALwBHAFMAIAAvAGYA
cAA6AHAAcgBlAGMAaQBzAGUAIAAvAGYAcAA6AGUAeABjAGUAcAB0AC0AIAAvAFoAYwA6AHcAYwBo
AGEAcgBfAHQAIAAvAFoAYwA6AGYAbwByAFMAYwBvAHAAZQAgAC8AWgBjADoAaQBuAGwAaQBuAGUA
IAAvAEcAUgAtACAALwBzAHQAZAA6AGMAKwArADEANwAgAC8ARgBvACIAVwBlAGIARAByAGkAdgBl
AHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABcACIAIAAvAEYAZAAiAFcAZQBiAEQAcgBpAHYA
ZQByAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAdgBjADEANAAyAC4AcABkAGIAIgAgAC8ARwBk
ACAALwBUAFAAIAAvAHcAZAA0ADAAMQA4ACAALwB3AGQANAAwADYAOAAgAC8AdwBkADQAMAA5ADkA
IAAvAHcAZAA0ADEAMAAwACAALwB3AGQANAAxADIANwAgAC8AdwBkADQAMQAzADgAIAAvAHcAZAA0
ADEANAA2ACAALwB3AGQANAAxADgAMAAgAC8AdwBkADQAMQA4ADkAIAAvAHcAZAA0ADIAMAAxACAA
LwB3AGQANAAyADAANgAgAC8AdwBkADQAMgA0ADQAIAAvAHcAZAA0ADIANQAxACAALwB3AGQANAAy
ADYANwAgAC8AdwBkADQAMgA3ADUAIAAvAHcAZAA0ADIAOAA4ACAALwB3AGQANAAyADkAMQAgAC8A
dwBkADQAMwAwADUAIAAvAHcAZAA0ADMAMAA5ACAALwB3AGQANAAzADQANAAgAC8AdwBkADQAMwA1
ADUAIAAvAHcAZAA0ADMAOAA5ACAALwB3AGQANAAzADkANgAgAC8AdwBkADQANAA1ADYAIAAvAHcA
ZAA0ADQANQA3ACAALwB3AGQANAA0ADUAOAAgAC8AdwBkADQANAA1ADkAIAAvAHcAZAA0ADQAOAAx
ACAALwB3AGQANAA1ADAAMwAgAC8AdwBkADQANQAwADUAIAAvAHcAZAA0ADUAMQAwACAALwB3AGQA
NAA1ADEAMgAgAC8AdwBkADQANQAzADAAIAAvAHcAZAA0ADYAMQAwACAALwB3AGQANAA2ADEAMQAg
AC8AdwBkADQANgA0ADYAIAAvAHcAZAA0ADcAMAAyACAALwB3AGQANAA3ADAANgAgAC8AdwBkADQA
NwAyADIAIAAvAHcAZAA0ADgAMAAwACAALwB3AGQANAA4ADEAOQAgAC8AdwBkADQAOQA1ADEAIAAv
AHcAZAA0ADkANQAyACAALwB3AGQANAA5ADkANgAgAC8AdwBkADYAMAAxADEAIAAvAHcAZAA2ADAA
MwAxACAALwB3AGQANgAyADEAMQAgAC8AdwBkADYAMgA0ADYAIAAvAHcAZAA2ADIANQA1ACAALwB3
AGQANgAzADgANwAgAC8AdwBkADQAMAA5ADEAIAAvAGEAbgBhAGwAeQB6AGUALQAgAC8AZQByAHIA
bwByAFIAZQBwAG8AcgB0ADoAcQB1AGUAdQBlACAAIAAvAEUASABzAC0AIAAvAEUASABjAC0AIAAv
AEUASABhAC0AIAAvAEUASABjAC0AIAAvAEUASABzAC0AIAAvAGIAaQBnAG8AYgBqACAALwB1AHQA
ZgAtADgAIAAvAHYAYQBsAGkAZABhAHQAZQAtAGMAaABhAHIAcwBlAHQAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIARAByAGkA
dgBlAHIAXABDAG8AbQBtAGEAbgBkAFIAZQBzAHUAbAB0AC4AYwBwAHAAIABGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIARAByAGkA
dgBlAHIAXABIAFQAVABQAFMAZQByAHYAZQByAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIARAByAGkAdgBlAHIA
XABTAGUAcwBzAGkAbwBuAC4AYwBwAHAAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAFMAbwB1AHIAYwBlAFwAVwBlAGIARAByAGkAdgBlAHIAXABTAGUAcwBzAGkA
bwBuAEgAbwBzAHQALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBEAHIAaQB2AGUAcgBcAFcAZQBiAEQAcgBpAHYA
ZQByAE0AYQBpAG4ALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAUwBvAHUAcgBjAGUAXABXAGUAYgBEAHIAaQB2AGUAcgBcAFcAZQBiAEQAcgBpAHYA
ZQByAFMAZQByAHYAaQBjAGUALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABc
AHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwARABlAHIAaQB2AGUAZABTAG8A
dQByAGMAZQBzAFwAVwBlAGIARAByAGkAdgBlAHIAXABXAGUAYgBEAHIAaQB2AGUAcgBBAHQAbwBt
AHMALgBjAHAAcAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwA
UwBvAHUAcgBjAGUAXABXAGUAYgBEAHIAaQB2AGUAcgBcAHMAbwBjAGsAZQB0AFwASABUAFQAUABT
AGUAcgB2AGUAcgBTAG8AYwBrAGUAdAAuAGMAcABwACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFcAZQBiAEQAcgBpAHYAZQByAFwAcwBv
AGMAawBlAHQAXABTAGUAcwBzAGkAbwBuAEgAbwBzAHQAUwBvAGMAawBlAHQALgBjAHAAcAAgAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABX
AGUAYgBEAHIAaQB2AGUAcgBcAHcAaQBuAFwAVwBlAGIARAByAGkAdgBlAHIAUwBlAHIAdgBpAGMA
ZQBXAGkAbgAuAGMAcABwAA0ACgAgACAAQwBvAG0AbQBhAG4AZABSAGUAcwB1AGwAdAAuAGMAcABw
AA0ACgAgACAASABUAFQAUABTAGUAcgB2AGUAcgAuAGMAcABwAA0ACgAgACAAUwBlAHMAcwBpAG8A
bgAuAGMAcABwAA0ACgAgACAAUwBlAHMAcwBpAG8AbgBIAG8AcwB0AC4AYwBwAHAADQAKACAAIABX
AGUAYgBEAHIAaQB2AGUAcgBNAGEAaQBuAC4AYwBwAHAADQAKACAAIABXAGUAYgBEAHIAaQB2AGUA
cgBTAGUAcgB2AGkAYwBlAC4AYwBwAHAADQAKACAAIABXAGUAYgBEAHIAaQB2AGUAcgBBAHQAbwBt
AHMALgBjAHAAcAANAAoAIAAgAEgAVABUAFAAUwBlAHIAdgBlAHIAUwBvAGMAawBlAHQALgBjAHAA
cAANAAoAIAAgAFMAZQBzAHMAaQBvAG4ASABvAHMAdABTAG8AYwBrAGUAdAAuAGMAcABwAA0ACgAg
ACAAVwBlAGIARAByAGkAdgBlAHIAUwBlAHIAdgBpAGMAZQBXAGkAbgAuAGMAcABwAA0ACgBMAGkA
bgBrADoADQAKACAAIABDADoAXABQAHIAbwBnAHIAYQBtACAARgBpAGwAZQBzACAAKAB4ADgANgAp
AFwATQBpAGMAcgBvAHMAbwBmAHQAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvAFwAMgAwADEA
OQBcAEUAbgB0AGUAcgBwAHIAaQBzAGUAXABWAEMAXABUAG8AbwBsAHMAXABNAFMAVgBDAFwAMQA0
AC4AMgA2AC4AMgA4ADgAMAAxAFwAYgBpAG4AXABIAG8AcwB0AFgANgA0AFwAeAA2ADQAXABsAGkA
bgBrAC4AZQB4AGUAIAAvAEUAUgBSAE8AUgBSAEUAUABPAFIAVAA6AFEAVQBFAFUARQAgAC8ATwBV
AFQAOgAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwAYgBpAG4ANgA0AFwAVwBlAGIARAByAGkAdgBlAHIALgBlAHgAZQAi
ACAALwBJAE4AQwBSAEUATQBFAE4AVABBAEwAOgBOAE8AIAAvAE4ATwBMAE8ARwBPACAALwBMAEkA
QgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBi
AHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoA
LwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwAZABfAGEAbQBk
ADYANAAvAGwAaQBiADYANAAvAFIAZQBsAGUAYQBzAGUAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoA
LwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFcAZQBiAEsAaQB0AEwAaQBi
AHIAYQByAGkAZQBzAC8AdwBpAG4ALwBsAGkAYgA2ADQAIAAvAEwASQBCAFAAQQBUAEgAOgBGADoA
LwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFcAZQBiAEsAaQB0AEwAaQBi
AHIAYQByAGkAZQBzAC8AdwBpAG4ALwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkA
QgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBi
AHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlACAALwBMAEkA
QgBQAEEAVABIADoARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBlAGIAawBpAHQALwBi
AHUAaQBsAGQAXwBhAG0AZAA2ADQALwBsAGkAYgA2ADQALwBSAGUAbABlAGEAcwBlAC8AUgBlAGwA
ZQBhAHMAZQAgAC4ALgBcAC4ALgBcAGwAaQBiADYANABcAFcAVABGAC4AbABpAGIAIAAuAC4AXAAu
AC4AXAAuAC4AXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAbABpAGIA
NgA0AFwAaQBjAHUAZAB0AC4AbABpAGIAIAAuAC4AXAAuAC4AXAAuAC4AXABXAGUAYgBLAGkAdABM
AGkAYgByAGEAcgBpAGUAcwBcAHcAaQBuAFwAbABpAGIANgA0AFwAaQBjAHUAaQBuAC4AbABpAGIA
IAAuAC4AXAAuAC4AXAAuAC4AXABXAGUAYgBLAGkAdABMAGkAYgByAGEAcgBpAGUAcwBcAHcAaQBu
AFwAbABpAGIANgA0AFwAaQBjAHUAdQBjAC4AbABpAGIAIABEAGIAZwBIAGUAbABwAC4AbABpAGIA
IABzAGgAbAB3AGEAcABpAC4AbABpAGIAIAB3AGkAbgBtAG0ALgBsAGkAYgAgAEMARgBsAGkAdABl
AC4AbABpAGIAIABrAGUAcgBuAGUAbAAzADIALgBsAGkAYgAgAHUAcwBlAHIAMwAyAC4AbABpAGIA
IABnAGQAaQAzADIALgBsAGkAYgAgAHcAaQBuAHMAcABvAG8AbAAuAGwAaQBiACAAcwBoAGUAbABs
ADMAMgAuAGwAaQBiACAAbwBsAGUAMwAyAC4AbABpAGIAIABvAGwAZQBhAHUAdAAzADIALgBsAGkA
YgAgAHUAdQBpAGQALgBsAGkAYgAgAGMAbwBtAGQAbABnADMAMgAuAGwAaQBiACAAYQBkAHYAYQBw
AGkAMwAyAC4AbABpAGIAIAAvAE0AQQBOAEkARgBFAFMAVAAgAC8ATQBBAE4ASQBGAEUAUwBUAFUA
QQBDADoAIgBsAGUAdgBlAGwAPQAnAGEAcwBJAG4AdgBvAGsAZQByACcAIAB1AGkAQQBjAGMAZQBz
AHMAPQAnAGYAYQBsAHMAZQAnACIAIAAvAG0AYQBuAGkAZgBlAHMAdAA6AGUAbQBiAGUAZAAgAC8A
RABFAEIAVQBHACAALwBQAEQAQgA6ACIARgA6AC8AZwBpAHQAUAAvAFcAZQBiAEsAaQB0AC8AdwBl
AGIAawBpAHQALwBiAHUAaQBsAGQAXwBhAG0AZAA2ADQALwBiAGkAbgA2ADQALwBXAGUAYgBEAHIA
aQB2AGUAcgAuAHAAZABiACIAIAAvAFMAVQBCAFMAWQBTAFQARQBNADoAQwBPAE4AUwBPAEwARQAg
AC8ATwBQAFQAOgBSAEUARgAgAC8ATwBQAFQAOgBJAEMARgAgAC8AVABMAEIASQBEADoAMQAgAC8A
RABZAE4AQQBNAEkAQwBCAEEAUwBFACAALwBOAFgAQwBPAE0AUABBAFQAIAAvAEkATQBQAEwASQBC
ADoAIgBGADoALwBnAGkAdABQAC8AVwBlAGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAGIAdQBpAGwA
ZABfAGEAbQBkADYANAAvAGwAaQBiADYANAAvAFcAZQBiAEQAcgBpAHYAZQByAC4AbABpAGIAIgAg
AC8ATQBBAEMASABJAE4ARQA6AFgANgA0ACAAIAAvAG0AYQBjAGgAaQBuAGUAOgB4ADYANAAgACIA
LwBtAGEAbgBpAGYAZQBzAHQAZABlAHAAZQBuAGQAZQBuAGMAeQA6AHQAeQBwAGUAPQAnAHcAaQBu
ADMAMgAnACAAbgBhAG0AZQA9ACcATQBpAGMAcgBvAHMAbwBmAHQALgBXAGkAbgBkAG8AdwBzAC4A
QwBvAG0AbQBvAG4ALQBDAG8AbgB0AHIAbwBsAHMAJwAgAHYAZQByAHMAaQBvAG4APQAnADYALgAw
AC4AMAAuADAAJwAgAHAAcgBvAGMAZQBzAHMAbwByAEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBlAD0A
JwBhAG0AZAA2ADQAJwAgAHAAdQBiAGwAaQBjAEsAZQB5AFQAbwBrAGUAbgA9ACcANgA1ADkANQBi
ADYANAAxADQANABjAGMAZgAxAGQAZgAnACAAbABhAG4AZwB1AGEAZwBlAD0AJwAqACcAIgAgAFcA
ZQBiAEQAcgBpAHYAZQByAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAQwBvAG0AbQBhAG4AZABS
AGUAcwB1AGwAdAAuAG8AYgBqAA0ACgAgACAAVwBlAGIARAByAGkAdgBlAHIALgBkAGkAcgBcAFIA
ZQBsAGUAYQBzAGUAXABIAFQAVABQAFMAZQByAHYAZQByAC4AbwBiAGoADQAKACAAIABXAGUAYgBE
AHIAaQB2AGUAcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMAZQBcAFMAZQBzAHMAaQBvAG4ALgBvAGIA
agANAAoAIAAgAFcAZQBiAEQAcgBpAHYAZQByAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAUwBl
AHMAcwBpAG8AbgBIAG8AcwB0AC4AbwBiAGoADQAKACAAIABXAGUAYgBEAHIAaQB2AGUAcgAuAGQA
aQByAFwAUgBlAGwAZQBhAHMAZQBcAFcAZQBiAEQAcgBpAHYAZQByAE0AYQBpAG4ALgBvAGIAagAN
AAoAIAAgAFcAZQBiAEQAcgBpAHYAZQByAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIA
RAByAGkAdgBlAHIAUwBlAHIAdgBpAGMAZQAuAG8AYgBqAA0ACgAgACAAVwBlAGIARAByAGkAdgBl
AHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABXAGUAYgBEAHIAaQB2AGUAcgBBAHQAbwBtAHMA
LgBvAGIAagANAAoAIAAgAFcAZQBiAEQAcgBpAHYAZQByAC4AZABpAHIAXABSAGUAbABlAGEAcwBl
AFwASABUAFQAUABTAGUAcgB2AGUAcgBTAG8AYwBrAGUAdAAuAG8AYgBqAA0ACgAgACAAVwBlAGIA
RAByAGkAdgBlAHIALgBkAGkAcgBcAFIAZQBsAGUAYQBzAGUAXABTAGUAcwBzAGkAbwBuAEgAbwBz
AHQAUwBvAGMAawBlAHQALgBvAGIAagANAAoAIAAgAFcAZQBiAEQAcgBpAHYAZQByAC4AZABpAHIA
XABSAGUAbABlAGEAcwBlAFwAVwBlAGIARAByAGkAdgBlAHIAUwBlAHIAdgBpAGMAZQBXAGkAbgAu
AG8AYgBqAA0ACgAgACAAVwBlAGIARAByAGkAdgBlAHIALgB2AGMAeABwAHIAbwBqACAALQA+ACAA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABiAGkAbgA2ADQAXABXAGUAYgBEAHIAaQB2AGUAcgAuAGUAeABlAA0ACgBGAGkA
bgBhAGwAaQB6AGUAQgB1AGkAbABkAFMAdABhAHQAdQBzADoADQAKACAAIABEAGUAbABlAHQAaQBu
AGcAIABmAGkAbABlACAAIgBXAGUAYgBEAHIAaQB2AGUAcgAuAGQAaQByAFwAUgBlAGwAZQBhAHMA
ZQBcAFcAZQBiAEQAcgBpAHYAZQByAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBs
AGIAdQBpAGwAZAAiAC4ADQAKACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAFcAZQBiAEQAcgBpAHYA
ZQByAC4AZABpAHIAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIARAByAGkAdgBlAHIALgB0AGwAbwBn
AFwAVwBlAGIARAByAGkAdgBlAHIALgBsAGEAcwB0AGIAdQBpAGwAZABzAHQAYQB0AGUAIgAuAA0A
CgBEAG8AbgBlACAAQgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABTAG8AdQByAGMAZQBcAFcAZQBiAEQAcgBpAHYAZQByAFwAVwBlAGIARAByAGkAdgBlAHIALgB2
AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4A
DQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAFMAbwB1AHIAYwBlAFwAVwBlAGIARAByAGkAdgBlAHIAXABXAGUAYgBEAHIAaQB2AGUAcgAu
AHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQA
YQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAEwA
TABfAEIAVQBJAEwARAAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAMgAp
ACAAaQBzACAAYgB1AGkAbABkAGkAbgBnACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQA
XAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAFcAZQBi
AEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAXABXAGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4A
ZQByAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA4ADgAKQAgAG8AbgAg
AG4AbwBkAGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0A
CgBQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAFcAZQBiAEsAaQB0AFQA
ZQBzAHQAUgB1AG4AbgBlAHIAXABXAGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4AZQByAC4AdgBj
AHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA4ADgAKQAgAGkAcwAgAGIAdQBpAGwA
ZABpAG4AZwAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABXAGUAYgBLAGkAdABUAGUAcwB0AFIA
dQBuAG4AZQByAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBMAGkAYgAuAHYAYwB4
AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAOAA5ACkAIABvAG4AIABuAG8AZABlACAA
MQAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkALgANAAoAUAByAG8AagBl
AGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUA
aQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMAXABXAGUAYgBLAGkAdABUAGUAcwB0AFIAdQBu
AG4AZQByAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBMAGkAYgAuAHYAYwB4AHAA
cgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAOAA5ACkAIABpAHMAIABiAHUAaQBsAGQAaQBu
AGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkA
bABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBu
AGUAcgBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAQgBpAG4AZABpAG4AZwBzAC4A
dgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKAA5ADAAKQAgAG8AbgAgAG4AbwBk
AGUAIAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBQAHIA
bwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAFcAZQBiAEsAaQB0AFQAZQBzAHQA
UgB1AG4AbgBlAHIAXABXAGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4AZQByAEIAaQBuAGQAaQBu
AGcAcwAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAOQAwACkAIABpAHMA
IABiAHUAaQBsAGQAaQBuAGcAIAAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwAVwBlAGIASwBpAHQA
VABlAHMAdABSAHUAbgBuAGUAcgBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAQgBp
AG4AZABpAG4AZwBzAC4AdgBjAHgAcAByAG8AagAiACAAKAA5ADEAKQAgAG8AbgAgAG4AbwBkAGUA
IAAxACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBDAG8AcgBl
AEMAbABlAGEAbgA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkA
IAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBl
AHIAQgBpAG4AZABpAG4AZwBzAFwAIgAuAA0ACgBQAHIAZQBwAGEAcgBlAEYAbwByAEIAdQBpAGwA
ZAA6AA0ACgAgACAAQwByAGUAYQB0AGkAbgBnACAAZABpAHIAZQBjAHQAbwByAHkAIAAiAHgANgA0
AFwAUgBlAGwAZQBhAHMAZQBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAQgBpAG4A
ZABpAG4AZwBzAFwAVwBlAGIASwBpAHQAVABlAC4AMQBBAEUARgAwADUAMQAxAC4AdABsAG8AZwBc
ACIALgANAAoASQBuAGkAdABpAGEAbABpAHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoA
IAAgAEMAcgBlAGEAdABpAG4AZwAgACIAeAA2ADQAXABSAGUAbABlAGEAcwBlAFwAVwBlAGIASwBp
AHQAVABlAHMAdABSAHUAbgBuAGUAcgBCAGkAbgBkAGkAbgBnAHMAXABXAGUAYgBLAGkAdABUAGUA
LgAxAEEARQBGADAANQAxADEALgB0AGwAbwBnAFwAdQBuAHMAdQBjAGMAZQBzAHMAZgB1AGwAYgB1
AGkAbABkACIAIABiAGUAYwBhAHUAcwBlACAAIgBBAGwAdwBhAHkAcwBDAHIAZQBhAHQAZQAiACAA
dwBhAHMAIABzAHAAZQBjAGkAZgBpAGUAZAAuAA0ACgBDAHUAcwB0AG8AbQBCAHUAaQBsAGQAOgAN
AAoAIAAgAEcAZQBuAGUAcgBhAHQAZQAgAGIAaQBuAGQAaQBuAGcAcwAgACgAVwBlAGIASwBpAHQA
VABlAHMAdABSAHUAbgBuAGUAcgBCAGkAbgBkAGkAbgBnAHMAKQANAAoAIAAgAFsAMQAvADEAXQAg
AFUASQBTAGMAcgBpAHAAdABDAG8AbgB0AHIAbwBsAGwAZQByAC4AaQBkAGwADQAKACAAIABCAHUA
aQBsAGQAaQBuAGcAIABDAHUAcwB0AG8AbQAgAFIAdQBsAGUAIABGADoALwBnAGkAdABQAC8AVwBl
AGIASwBpAHQALwB3AGUAYgBrAGkAdAAvAFQAbwBvAGwAcwAvAFcAZQBiAEsAaQB0AFQAZQBzAHQA
UgB1AG4AbgBlAHIALwBDAE0AYQBrAGUATABpAHMAdABzAC4AdAB4AHQADQAKAEYAaQBuAGEAbABp
AHoAZQBCAHUAaQBsAGQAUwB0AGEAdAB1AHMAOgANAAoAIAAgAEQAZQBsAGUAdABpAG4AZwAgAGYA
aQBsAGUAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1
AG4AbgBlAHIAQgBpAG4AZABpAG4AZwBzAFwAVwBlAGIASwBpAHQAVABlAC4AMQBBAEUARgAwADUA
MQAxAC4AdABsAG8AZwBcAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsAGIAdQBpAGwAZAAiAC4ADQAK
ACAAIABUAG8AdQBjAGgAaQBuAGcAIAAiAHgANgA0AFwAUgBlAGwAZQBhAHMAZQBcAFcAZQBiAEsA
aQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAQgBpAG4AZABpAG4AZwBzAFwAVwBlAGIASwBpAHQAVABl
AC4AMQBBAEUARgAwADUAMQAxAC4AdABsAG8AZwBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4A
bgBlAHIAQgBpAG4AZABpAG4AZwBzAC4AbABhAHMAdABiAHUAaQBsAGQAcwB0AGEAdABlACIALgAN
AAoARABvAG4AZQAgAEIAdQBpAGwAZABpAG4AZwAgAFAAcgBvAGoAZQBjAHQAIAAiAEYAOgBcAGcA
aQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0
AFwAVABvAG8AbABzAFwAVwBlAGIASwBpAHQAVABlAHMAdABSAHUAbgBuAGUAcgBcAFcAZQBiAEsA
aQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAQgBpAG4AZABpAG4AZwBzAC4AdgBjAHgAcAByAG8AagAi
ACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAuAA0ACgBEAG8AbgBlACAA
QgB1AGkAbABkAGkAbgBnACAAUAByAG8AagBlAGMAdAAgACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMA
XABXAGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4AZQByAFwAVwBlAGIASwBpAHQAVABlAHMAdABS
AHUAbgBuAGUAcgBCAGkAbgBkAGkAbgBnAHMALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIA
bwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAoAHMAKQApAC4ADQAKAEQAbwBu
AGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwA
VwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBv
AGwAcwBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAXABXAGUAYgBLAGkAdABUAGUA
cwB0AFIAdQBuAG4AZQByAEwAaQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAi
ACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAgAC0ALQAgAEYAQQBJAEwA
RQBEAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUAYwB0ACAAIgBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFQAbwBvAGwAcwBcAFcAZQBiAEsAaQB0AFQAZQBzAHQAUgB1AG4AbgBlAHIAXABX
AGUAYgBLAGkAdABUAGUAcwB0AFIAdQBuAG4AZQByAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEA
cAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAgAC0ALQAg
AEYAQQBJAEwARQBEAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIAbwBqAGUA
YwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAEEATABMAF8AQgBVAEkATABEAC4AdgBjAHgAcAByAG8AagAuAG0A
ZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKABzACkAKQAg
AC0ALQAgAEYAQQBJAEwARQBEAC4ADQAKAEQAbwBuAGUAIABCAHUAaQBsAGQAaQBuAGcAIABQAHIA
bwBqAGUAYwB0ACAAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAFcAZQBiAEsAaQB0AC4AcwBsAG4AIgAgACgAUgBlAGIA
dQBpAGwAZAAgAHQAYQByAGcAZQB0ACgAcwApACkAIAAtAC0AIABGAEEASQBMAEUARAAuAA0ACgAN
AAoAQgB1AGkAbABkACAARgBBAEkATABFAEQALgANAAoADQAKACIARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABXAGUAYgBL
AGkAdAAuAHMAbABuACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAApACAAKAAxACkA
IAAtAD4ADQAKACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABi
AHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAEwATABfAEIAVQBJAEwARAAuAHYAYwB4AHAAcgBvAGoA
LgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACkAIAAo
ADIAKQAgAC0APgANAAoAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkA
dABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQBy
AHQAeQBcAEEATgBHAEwARQBcAEEATgBHAEwARQAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAA
cgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACkAIAAoADMAKQAgAC0APgAN
AAoAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwA
ZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEATgBH
AEwARQBcAEEATgBHAEwARQAuAHYAYwB4AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQA
YQByAGcAZQB0ACkAIAAoADUAKQAgAC0APgANAAoAKABDAGwAQwBvAG0AcABpAGwAZQAgAHQAYQBy
AGcAZQB0ACkAIAAtAD4AIAANAAoAIAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAcwByAGMAXABjAG8AbQBtAG8AbgBcAGEAbgBkAHIAbwBpAGQAXwB1AHQAaQBsAC4AYwBwAHAA
KAAyADEALAAxADYAKQA6ACAAdwBhAHIAbgBpAG4AZwAgAEMANAAyADAAMAA6ACAAbgBvAG4AcwB0
AGEAbgBkAGEAcgBkACAAZQB4AHQAZQBuAHMAaQBvAG4AIAB1AHMAZQBkADoAIAB6AGUAcgBvAC0A
cwBpAHoAZQBkACAAYQByAHIAYQB5ACAAaQBuACAAcwB0AHIAdQBjAHQALwB1AG4AaQBvAG4AIABb
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABF
AFwAQQBOAEcATABFAC4AdgBjAHgAcAByAG8AagBdAA0ACgAgACAARgA6AFwAZwBpAHQAUABcAFcA
ZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0
AHkAXABBAE4ARwBMAEUAXABzAHIAYwBcAGwAaQBiAEEATgBHAEwARQBcAHIAZQBuAGQAZQByAGUA
cgBcAGQAMwBkAFwAZAAzAGQAMQAxAFwAUgBlAG4AZABlAHIAZQByADEAMQAuAGMAcABwACgANAAx
ADAAMQAsADUAMAApADoAIAB3AGEAcgBuAGkAbgBnACAAQwA0ADIANAA1ADoAIAAnAHIAZQB0AHUA
cgBuACcAOgAgAGMAbwBuAHYAZQByAHMAaQBvAG4AIABmAHIAbwBtACAAJwBEADMARAAxADEAXwBT
AFQAQQBOAEQAQQBSAEQAXwBNAFUATABUAEkAUwBBAE0AUABMAEUAXwBRAFUAQQBMAEkAVABZAF8A
TABFAFYARQBMAFMAJwAgAHQAbwAgACcAVQBJAE4AVAAnACwAIABzAGkAZwBuAGUAZAAvAHUAbgBz
AGkAZwBuAGUAZAAgAG0AaQBzAG0AYQB0AGMAaAAgAFsARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBc
AFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABBAE4ARwBMAEUALgB2AGMAeABwAHIA
bwBqAF0ADQAKAA0ACgANAAoAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFcAZQBiAEsAaQB0AC4AcwBsAG4AIgAgACgA
UgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACkAIAAoADEAKQAgAC0APgANAAoAIgBGADoAXABn
AGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYA
NABcAEEATABMAF8AQgBVAEkATABEAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAi
ACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKQAgACgAMgApACAALQA+AA0ACgAiAEYA
OgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBt
AGQANgA0AFwAVABvAG8AbABzAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0A
cABSAGUAbgBkAGUAcgBUAHIAZQBlAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAi
ACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKQAgACgAMQAwACkAIAAtAD4ADQAKACIA
RgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBh
AG0AZAA2ADQAXABUAG8AbwBsAHMAXABEAHUAbQBwAFIAZQBuAGQAZQByAFQAcgBlAGUAXABEAHUA
bQBwAFIAZQBuAGQAZQByAFQAcgBlAGUATABpAGIALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBw
AHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAApACAAKAAxADEAKQAgAC0A
PgANAAoAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBp
AGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQAeQBcAEEA
TgBHAEwARQBcAEUARwBMAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABS
AGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKQAgACgAMQA0ACkAIAAtAD4ADQAKACIARgA6AFwA
ZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2
ADQAXABTAG8AdQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABHAEwA
RQBTAHYAMgAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBp
AGwAZAAgAHQAYQByAGcAZQB0ACkAIAAoADEANQApACAALQA+AA0ACgAiAEYAOgBcAGcAaQB0AFAA
XABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBv
AHUAcgBjAGUAXABUAGgAaQByAGQAUABhAHIAdAB5AFwAQQBOAEcATABFAFwARwBMAEUAUwB2ADIA
LgB2AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAApACAAKAAx
ADYAKQAgAC0APgANAAoAKABMAGkAbgBrACAAdABhAHIAZwBlAHQAKQAgAC0APgAgAA0ACgAgACAA
TABJAE4ASwAgADoAIAB3AGEAcgBuAGkAbgBnACAATABOAEsANAAyADEANwA6ACAAcwB5AG0AYgBv
AGwAIAAnAEEATgBHAEwARQBHAGUAdABEAGkAcwBwAGwAYQB5AFAAbABhAHQAZgBvAHIAbQAnACAA
ZABlAGYAaQBuAGUAZAAgAGkAbgAgACcAQQBOAEcATABFAC4AbABpAGIAKABQAGwAYQB0AGYAbwBy
AG0ALgBvAGIAagApACcAIABpAHMAIABpAG0AcABvAHIAdABlAGQAIABiAHkAIAAnAHAAcgBvAGMA
XwB0AGEAYgBsAGUAXwBlAGcAbABfAGEAdQB0AG8AZwBlAG4ALgBvAGIAagAnACAAaQBuACAAZgB1
AG4AYwB0AGkAbwBuACAAJwAiAHYAbwBpAGQAIABfAF8AYwBkAGUAYwBsACAAZQBnAGwAOgA6AGAA
ZAB5AG4AYQBtAGkAYwAgAGkAbgBpAHQAaQBhAGwAaQB6AGUAcgAgAGYAbwByACAAJwBnAF8AcABy
AG8AYwBUAGEAYgBsAGUAJwAnACgAdgBvAGkAZAApACIAIAAoAD8APwBfAF8ARQBnAF8AcAByAG8A
YwBUAGEAYgBsAGUAQABlAGcAbABAAEAAWQBBAFgAWABaACkAJwAgAFsARgA6AFwAZwBpAHQAUABc
AFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8A
dQByAGMAZQBcAFQAaABpAHIAZABQAGEAcgB0AHkAXABBAE4ARwBMAEUAXABHAEwARQBTAHYAMgAu
AHYAYwB4AHAAcgBvAGoAXQANAAoAIAAgAEwASQBOAEsAIAA6ACAAdwBhAHIAbgBpAG4AZwAgAEwA
TgBLADQAMgAxADcAOgAgAHMAeQBtAGIAbwBsACAAJwBBAE4ARwBMAEUAUgBlAHMAZQB0AEQAaQBz
AHAAbABhAHkAUABsAGEAdABmAG8AcgBtACcAIABkAGUAZgBpAG4AZQBkACAAaQBuACAAJwBBAE4A
RwBMAEUALgBsAGkAYgAoAFAAbABhAHQAZgBvAHIAbQAuAG8AYgBqACkAJwAgAGkAcwAgAGkAbQBw
AG8AcgB0AGUAZAAgAGIAeQAgACcAcAByAG8AYwBfAHQAYQBiAGwAZQBfAGUAZwBsAF8AYQB1AHQA
bwBnAGUAbgAuAG8AYgBqACcAIABpAG4AIABmAHUAbgBjAHQAaQBvAG4AIAAnACIAdgBvAGkAZAAg
AF8AXwBjAGQAZQBjAGwAIABlAGcAbAA6ADoAYABkAHkAbgBhAG0AaQBjACAAaQBuAGkAdABpAGEA
bABpAHoAZQByACAAZgBvAHIAIAAnAGcAXwBwAHIAbwBjAFQAYQBiAGwAZQAnACcAKAB2AG8AaQBk
ACkAIgAgACgAPwA/AF8AXwBFAGcAXwBwAHIAbwBjAFQAYQBiAGwAZQBAAGUAZwBsAEAAQABZAEEA
WABYAFoAKQAnACAAWwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABc
AGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwAVABoAGkAcgBkAFAAYQByAHQA
eQBcAEEATgBHAEwARQBcAEcATABFAFMAdgAyAC4AdgBjAHgAcAByAG8AagBdAA0ACgANAAoADQAK
ACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQA
XwBhAG0AZAA2ADQAXABXAGUAYgBLAGkAdAAuAHMAbABuACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0
AGEAcgBnAGUAdAApACAAKAAxACkAIAAtAD4ADQAKACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAEwATABfAEIAVQBJ
AEwARAAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwA
ZAAgAHQAYQByAGcAZQB0ACkAIAAoADIAKQAgAC0APgANAAoAIgBGADoAXABnAGkAdABQAFwAVwBl
AGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwA
cwBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVABy
AGUAZQAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwA
ZAAgAHQAYQByAGcAZQB0ACkAIAAoADEAMAApACAALQA+AA0ACgAiAEYAOgBcAGcAaQB0AFAAXABX
AGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8A
bABzAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0AcABSAGUAbgBkAGUAcgBU
AHIAZQBlAEwAaQBiAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUA
YgB1AGkAbABkACAAdABhAHIAZwBlAHQAKQAgACgAMQAxACkAIAAtAD4ADQAKACIARgA6AFwAZwBp
AHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQA
XABTAG8AdQByAGMAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBj
AHIAaQBwAHQAQwBvAHIAZQAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgA
UgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACkAIAAoADIAMAApACAALQA+AA0ACgAiAEYAOgBc
AGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQA
NgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABKAGEAdgBh
AFMAYwByAGkAcAB0AEMAbwByAGUALgB2AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQA
IAB0AGEAcgBnAGUAdAApACAAKAA0ADEAKQAgAC0APgANAAoAKABDAGwAQwBvAG0AcABpAGwAZQAg
AHQAYQByAGcAZQB0ACkAIAAtAD4AIAANAAoAIAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkA
dABcAHcAZQBiAGsAaQB0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwBy
AGUAXAByAHUAbgB0AGkAbQBlAC8AUwB0AHIAdQBjAHQAdQByAGUALgBjAHAAcAAoADEAMgA4ADIA
LAA3ADgAKQA6ACAAdwBhAHIAbgBpAG4AZwAgAEMANAAzADEAMgA6ACAAJwByAGUAaQBuAHQAZQBy
AHAAcgBlAHQAXwBjAGEAcwB0ACcAOgAgAGMAbwBuAHYAZQByAHMAaQBvAG4AIABmAHIAbwBtACAA
JwBKAFMAQwA6ADoAUwB0AHIAdQBjAHQAdQByAGUASQBEACcAIAB0AG8AIAAnAHYAbwBpAGQAIAAq
ACcAIABvAGYAIABnAHIAZQBhAHQAZQByACAAcwBpAHoAZQAgACgAYwBvAG0AcABpAGwAaQBuAGcA
IABzAG8AdQByAGMAZQAgAGYAaQBsAGUAIABGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3
AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAEoAYQB2AGEAUwBjAHIAaQBwAHQA
QwBvAHIAZQBcAEQAZQByAGkAdgBlAGQAUwBvAHUAcgBjAGUAcwBcAHUAbgBpAGYAaQBlAGQALQBz
AG8AdQByAGMAZQBzAFwAVQBuAGkAZgBpAGUAZABTAG8AdQByAGMAZQAtAGYAMgBlADEAOABmAGYA
YwAtADMANAAuAGMAcABwACkAIABbAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBi
AGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBjAGUAXABKAGEAdgBhAFMA
YwByAGkAcAB0AEMAbwByAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUALgB2AGMAeABw
AHIAbwBqAF0ADQAKAA0ACgANAAoAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFcAZQBiAEsAaQB0AC4AcwBsAG4AIgAg
ACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACkAIAAoADEAKQAgAC0APgANAAoAIgBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAEEATABMAF8AQgBVAEkATABEAC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8A
agAiACAAKABSAGUAYgB1AGkAbABkACAAdABhAHIAZwBlAHQAKQAgACgAMgApACAALQA+AA0ACgAi
AEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8A
YQBtAGQANgA0AFwAVABvAG8AbABzAFwAVABlAHMAdABXAGUAYgBLAGkAdABBAFAASQBcAFQAZQBz
AHQAVwBUAEYALgB2AGMAeABwAHIAbwBqAC4AbQBlAHQAYQBwAHIAbwBqACIAIAAoAFIAZQBiAHUA
aQBsAGQAIAB0AGEAcgBnAGUAdAApACAAKAA3ADIAKQAgAC0APgANAAoAIgBGADoAXABnAGkAdABQ
AFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQA
bwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AFcAVABGAEwAaQBi
AC4AdgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAA
dABhAHIAZwBlAHQAKQAgACgANwAzACkAIAAtAD4ADQAKACIARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABUAG8AbwBsAHMA
XABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABXAFQARgBMAGkAYgAuAHYAYwB4
AHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0ACkAIAAoADcANgApACAA
LQA+AA0ACgAgACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABU
AG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYA
XABTAHQAZABMAGkAYgBFAHgAdAByAGEAcwAuAGMAcABwACgANAA5ACwAMgA0ACkAOgAgAHcAYQBy
AG4AaQBuAGcAIABDADQAOAAzADgAOgAgAGMAbwBuAHYAZQByAHMAaQBvAG4AIABmAHIAbwBtACAA
JwBzAGkAegBlAF8AdAAnACAAdABvACAAJwB1AGkAbgB0ADgAXwB0ACcAIAByAGUAcQB1AGkAcgBl
AHMAIABhACAAbgBhAHIAcgBvAHcAaQBuAGcAIABjAG8AbgB2AGUAcgBzAGkAbwBuACAAWwBGADoA
XABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBk
ADYANABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0AFcA
VABGAEwAaQBiAC4AdgBjAHgAcAByAG8AagBdAA0ACgAgACAARgA6AFwAZwBpAHQAUABcAFcAZQBi
AEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMAXABUAGUAcwB0AFcAZQBiAEsAaQB0AEEA
UABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABTAHQAZABMAGkAYgBFAHgAdAByAGEAcwAuAGMAcABw
ACgANQAwACwAMgA0ACkAOgAgAHcAYQByAG4AaQBuAGcAIABDADQAOAAzADgAOgAgAGMAbwBuAHYA
ZQByAHMAaQBvAG4AIABmAHIAbwBtACAAJwBzAGkAegBlAF8AdAAnACAAdABvACAAJwB1AGkAbgB0
ADgAXwB0ACcAIAByAGUAcQB1AGkAcgBlAHMAIABhACAAbgBhAHIAcgBvAHcAaQBuAGcAIABjAG8A
bgB2AGUAcgBzAGkAbwBuACAAWwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBr
AGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIA
SwBpAHQAQQBQAEkAXABUAGUAcwB0AFcAVABGAEwAaQBiAC4AdgBjAHgAcAByAG8AagBdAA0ACgAg
ACAARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABUAG8AbwBsAHMA
XABUAGUAcwB0AFcAZQBiAEsAaQB0AEEAUABJAFwAVABlAHMAdABzAFwAVwBUAEYAXABTAHQAZABM
AGkAYgBFAHgAdAByAGEAcwAuAGMAcABwACgANQAxACwAMQAzACkAOgAgAHcAYQByAG4AaQBuAGcA
IABDADQAOAAzADgAOgAgAGMAbwBuAHYAZQByAHMAaQBvAG4AIABmAHIAbwBtACAAJwBjAG8AbgBz
AHQAIABzAGkAegBlAF8AdAAnACAAdABvACAAJwB1AGkAbgB0ADgAXwB0ACcAIAByAGUAcQB1AGkA
cgBlAHMAIABhACAAbgBhAHIAcgBvAHcAaQBuAGcAIABjAG8AbgB2AGUAcgBzAGkAbwBuACAAWwBG
ADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEA
bQBkADYANABcAFQAbwBvAGwAcwBcAFQAZQBzAHQAVwBlAGIASwBpAHQAQQBQAEkAXABUAGUAcwB0
AFcAVABGAEwAaQBiAC4AdgBjAHgAcAByAG8AagBdAA0ACgANAAoADQAKACIARgA6AFwAZwBpAHQA
UABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABX
AGUAYgBLAGkAdAAuAHMAbABuACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAApACAA
KAAxACkAIAAtAD4ADQAKACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsAaQB0AFwAdwBlAGIAawBp
AHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABBAEwATABfAEIAVQBJAEwARAAuAHYAYwB4AHAA
cgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0
ACkAIAAoADIAKQAgAC0APgANAAoAIgBGADoAXABnAGkAdABQAFwAVwBlAGIASwBpAHQAXAB3AGUA
YgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFQAbwBvAGwAcwBcAEQAdQBtAHAAUgBl
AG4AZABlAHIAVAByAGUAZQBcAEQAdQBtAHAAUgBlAG4AZABlAHIAVAByAGUAZQAuAHYAYwB4AHAA
cgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAgAHQAYQByAGcAZQB0
ACkAIAAoADEAMAApACAALQA+AA0ACgAiAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcA
ZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVABvAG8AbABzAFwARAB1AG0AcABS
AGUAbgBkAGUAcgBUAHIAZQBlAFwARAB1AG0AcABSAGUAbgBkAGUAcgBUAHIAZQBlAEwAaQBiAC4A
dgBjAHgAcAByAG8AagAuAG0AZQB0AGEAcAByAG8AagAiACAAKABSAGUAYgB1AGkAbABkACAAdABh
AHIAZwBlAHQAKQAgACgAMQAxACkAIAAtAD4ADQAKACIARgA6AFwAZwBpAHQAUABcAFcAZQBiAEsA
aQB0AFwAdwBlAGIAawBpAHQAXABiAHUAaQBsAGQAXwBhAG0AZAA2ADQAXABTAG8AdQByAGMAZQBc
AEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIAZQBcAEoAYQB2AGEAUwBjAHIAaQBwAHQAQwBvAHIA
ZQAuAHYAYwB4AHAAcgBvAGoALgBtAGUAdABhAHAAcgBvAGoAIgAgACgAUgBlAGIAdQBpAGwAZAAg
AHQAYQByAGcAZQB0ACkAIAAoADIAMAApACAALQA+AA0ACgAiAEYAOgBcAGcAaQB0AFAAXABXAGUA
YgBLAGkAdABcAHcAZQBiAGsAaQB0AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAUwBvAHUAcgBj
AGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMAbwByAGUAXABKAGEAdgBhAFMAYwByAGkAcAB0AEMA
bwByAGUALgB2AGMAeABwAHIAbwBqACIAIAAoAFIAZQBiAHUAaQBsAGQAIAB0AGEAcgBnAGUAdAAp
ACAAKAA0ADEAKQAgAC0APgANAAoAKABDAGwAQwBvAG0AcABpAGwAZQAgAHQAYQByAGcAZQB0ACkA
IAAtAD4AIAANAAoAIAAgAEYAOgBcAGcAaQB0AFAAXABXAGUAYgBLAGkAdABcAHcAZQBiAGsAaQB0
AFwAYgB1AGkAbABkAF8AYQBtAGQANgA0AFwAVwBUAEYAXABIAGUAYQBkAGUAcgBzAFwAdwB0AGYA
LwBPAHAAdABpAG8AbgBhAGwALgBoACgANAAxADkALAAzADkAKQA6ACAAZQByAHIAbwByACAAQwAy
ADIAOAAwADoAIAAnAFcAVABGADoAOgBjAG8AbgBzAHQAZQB4AHAAcgBfAHMAdABvAHIAYQBnAGUA
XwB0ADwAVAA+ACAAJgBXAFQARgA6ADoAYwBvAG4AcwB0AGUAeABwAHIAXwBzAHQAbwByAGEAZwBl
AF8AdAA8AFQAPgA6ADoAbwBwAGUAcgBhAHQAbwByACAAPQAoAGMAbwBuAHMAdAAgAFcAVABGADoA
OgBjAG8AbgBzAHQAZQB4AHAAcgBfAHMAdABvAHIAYQBnAGUAXwB0ADwAVAA+ACAAJgApACcAOgAg
AGEAdAB0AGUAbQBwAHQAaQBuAGcAIAB0AG8AIAByAGUAZgBlAHIAZQBuAGMAZQAgAGEAIABkAGUA
bABlAHQAZQBkACAAZgB1AG4AYwB0AGkAbwBuACAAWwBGADoAXABnAGkAdABQAFwAVwBlAGIASwBp
AHQAXAB3AGUAYgBrAGkAdABcAGIAdQBpAGwAZABfAGEAbQBkADYANABcAFMAbwB1AHIAYwBlAFwA
SgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBlAFwASgBhAHYAYQBTAGMAcgBpAHAAdABDAG8AcgBl
AC4AdgBjAHgAcAByAG8AagBdAA0ACgANAAoAIAAgACAAIAA4ACAAVwBhAHIAbgBpAG4AZwAoAHMA
KQANAAoAIAAgACAAIAAxACAARQByAHIAbwByACgAcwApAA0ACgANAAoAVABpAG0AZQAgAEUAbABh
AHAAcwBlAGQAIAAwADAAOgAyADgAOgAzADAALgA1ADQADQAKACMAIwBbAGQAZQBiAHUAZwBdACAA
QwBvAG0AbQBhAG4AZAAgACMAMgAgAGUAeABpAHQAZQBkACAAdwBpAHQAaAAgAGMAbwBkAGUAIABb
ADEAXQAuAA0ACgAjACMAWwBlAHIAcgBvAHIAXQAgAEQAZQB0AGUAYwB0AGUAZAAgAGUAcgByAG8A
cgAgAGMAbwBkAGUAIABbADEAXQAuAA0ACgA=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>405904</attachid>
            <date>2020-08-03 23:03:23 -0700</date>
            <delta_ts>2020-08-03 23:03:23 -0700</delta_ts>
            <desc>UnifiedSource-f2e18ffc-32.cpp Precompiled file</desc>
            <filename>UnifiedSource-f2e18ffc-32.i</filename>
            <type>text/plain</type>
            <size>9853896</size>
            <attacher name="QuellaZhang">1998zhangyi</attacher>
            
              <data encoding="base64">I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlw
dENvcmVcXERlcml2ZWRTb3VyY2VzXFx1bmlmaWVkLXNvdXJjZXNcXFVuaWZpZWRTb3VyY2UtZjJl
MThmZmMtMzIuY3BwIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nQ291bnRlci5jcHAiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXGNtYWtlY29uZmlnLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4OSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcY21ha2Vjb25maWcuaCINCiNsaW5lIDI0ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGNvbmZpZy5oIg0KI2xpbmUg
MjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29u
ZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0V4cG9ydE1hY3Jvcy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9FeHBvcnRNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVy
LmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQoNCiNsaW5lIDg3ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxl
ci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoN
Cg0KDQojbGluZSAxMDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQoNCg0KDQojbGluZSAxMTIgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBp
bGVyLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDEzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KI2xpbmUgMTMyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0K
DQoNCg0KI2xpbmUgMTM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDQgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Nv
bXBpbGVyLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCiNs
aW5lIDE1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KI2xpbmUgMTU4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTY4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KI2xpbmUgMTcyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxl
ci5oIg0KDQoNCg0KI2xpbmUgMTc2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDE4MiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
Q29tcGlsZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDIxNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCiNsaW5lIDIxOSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIu
aCINCg0KDQoNCg0KDQojbGluZSAyMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQojbGluZSAyMjkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Nv
bXBpbGVyLmgiDQoNCg0KDQoNCg0KI2xpbmUgMjM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KI2xpbmUg
MjM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9Db21waWxlci5oIg0KDQoNCg0KI2xpbmUgMjQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KDQoN
CiNsaW5lIDI0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCiNsaW5lIDI1MyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0K
DQoNCiNsaW5lIDI1NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjY1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21w
aWxlci5oIg0KDQoNCg0KI2xpbmUgMjY5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KDQojbGluZSAyNzQg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L0NvbXBpbGVyLmgiDQoNCg0KDQojbGluZSAyNzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQoNCg0KI2xp
bmUgMjg0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KI2xpbmUgMjg4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0K
DQoNCiNsaW5lIDI5NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCiNsaW5lIDI5OCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCIN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMzA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KI2xpbmUgMzEwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9D
b21waWxlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDMxNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCiNsaW5l
IDMyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KDQojbGluZSAzMjYgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0K
DQojbGluZSAzMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQoNCg0KI2xpbmUgMzM2ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5o
Ig0KDQoNCg0KI2xpbmUgMzQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDM0NiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29t
cGlsZXIuaCINCg0KDQoNCiNsaW5lIDM1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KDQojbGluZSAz
NTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL0NvbXBpbGVyLmgiDQoNCg0KDQojbGluZSAzNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMzY5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCg0KI2xpbmUgMzczICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Db21waWxlci5o
Ig0KDQoNCg0KDQoNCiNsaW5lIDM3OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KI2xpbmUgMzg0ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9D
b21waWxlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDM5MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCiNsaW5l
IDM5NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDQwMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0K
DQoNCiNsaW5lIDQwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCiNsaW5lIDQwOSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA0NDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbXBpbGVyLmgiDQoNCg0KDQoNCg0KI2xpbmUgNDUx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9Db21waWxlci5oIg0KDQoNCiNsaW5lIDQ1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KI2xpbmUg
NDU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9Db21waWxlci5oIg0KDQoNCiNsaW5lIDQ2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0KI2xp
bmUgNDY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9Db21waWxlci5oIg0KDQoNCiNsaW5lIDQ3MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29tcGlsZXIuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybS5oIg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ1BVLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU3
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUNQVS5oIg0KDQoNCg0KDQoNCiNsaW5lIDY2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUNQVS5oIg0KDQoN
Cg0KDQoNCiNsaW5lIDc3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUNQVS5oIg0KDQoNCg0KDQoNCiNsaW5lIDkxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybUNQVS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDYgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ1BVLmgi
DQoNCg0KDQoNCg0KDQojbGluZSAxMTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ1BVLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxMjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtQ1BVLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI3OSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
UGxhdGZvcm1DUFUuaCINCg0KDQoNCiNsaW5lIDI4MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1DUFUuaCINCg0KDQoNCiNs
aW5lIDI4NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1DUFUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjk4ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybUNQVS5oIg0KDQoNCg0KDQojbGluZSAzMDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ1BVLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzMTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ1BVLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDMyMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1DUFUuaCINCiNsaW5lIDMyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1DUFUuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUNQVS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDM2OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1DUFUuaCINCiNsaW5lIDM3MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1DUFUuaCINCg0KDQoNCiNs
aW5lIDM3NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1DUFUuaCINCiNsaW5lIDQxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybS5oIg0KDQoNCg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1PUy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QbGF0Zm9ybU9TLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTUg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtT1MuaCINCg0KDQoNCg0KI2xpbmUgNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtT1MuaCINCg0KDQoNCg0K
I2xpbmUgNjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtT1MuaCINCg0KDQoNCg0KI2xpbmUgNzAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtT1MuaCIN
Cg0KDQoNCg0KI2xpbmUgNzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtT1MuaCINCg0KDQoNCg0KI2xpbmUgODAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtT1MuaCINCg0KDQoNCg0KDQojbGluZSA4NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1PUy5oIg0KDQoNCg0KDQojbGlu
ZSA5MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1PUy5oIg0KDQoNCg0KDQojbGluZSA5NiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1PUy5oIg0KDQoN
Cg0KDQojbGluZSAxMDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtT1MuaCINCg0KDQoNCg0KI2xpbmUgMTA2ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bU9TLmgiDQoNCg0KDQoNCiNsaW5lIDExMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1PUy5oIg0KDQoNCg0KDQojbGluZSAx
MTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtT1MuaCINCg0KDQoNCg0KI2xpbmUgMTIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybU9TLmgiDQoNCg0K
DQoNCg0KI2xpbmUgMTM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybU9TLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTQzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybU9TLmgiDQoNCg0KI2xpbmUgMTQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybU9TLmgiDQoNCg0KI2xpbmUgMTQ5ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybU9TLmgiDQoNCg0KDQoNCg0KDQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQoNCg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1MZWdhY3kuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1MZWdhY3kuaCINCg0K
I2xpbmUgNTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtTGVnYWN5LmgiDQoNCiNsaW5lIDU2ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUxlZ2FjeS5o
Ig0KDQojbGluZSA1OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1MZWdhY3kuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDc0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUxlZ2FjeS5oIg0KDQojbGluZSA3NiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1M
ZWdhY3kuaCINCg0KDQoNCg0KI2xpbmUgODEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtTGVnYWN5LmgiDQoNCg0KDQoNCiNs
aW5lIDg2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9QbGF0Zm9ybUxlZ2FjeS5oIg0KDQoNCg0KDQojbGluZSA5MSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1MZWdh
Y3kuaCINCiNsaW5lIDUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybS5oIg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUhhdmUuaCINCg0KDQoNCg0KDQojbGluZSA0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQoNCiNs
aW5lIDU0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDU4ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCIN
Cg0KDQoNCiNsaW5lIDYyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDY2ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUhhdmUuaCINCg0KDQoNCiNsaW5lIDcwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDc0
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCg0KI2xpbmUgNzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoN
Cg0KI2xpbmUgODMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgODcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2
ZS5oIg0KDQoNCg0KI2xpbmUgOTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgOTUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtSGF2ZS5oIg0KDQoNCg0KDQojbGluZSAxMDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0K
I2xpbmUgMTA0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDEwOCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZl
LmgiDQoNCg0KDQojbGluZSAxMTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMTE2ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDEyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQoj
bGluZSAxMjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMTI4ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUu
aCINCg0KDQoNCiNsaW5lIDEzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAxMzYgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMTQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNs
aW5lIDE0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAxNDggIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5o
Ig0KDQoNCg0KI2xpbmUgMTUyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDE1NiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAxNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xp
bmUgMTY0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDE2OCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgi
DQoNCg0KDQojbGluZSAxNzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMTc2ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDE4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGlu
ZSAxODQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMTg4ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCIN
Cg0KDQoNCiNsaW5lIDE5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAxOTYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMjAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5l
IDIwNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAyMDggIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0K
DQoNCg0KI2xpbmUgMjEyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDIxNiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZv
cm1IYXZlLmgiDQoNCg0KDQojbGluZSAyMjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUg
MjI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDIyOCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoN
Cg0KDQojbGluZSAyMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMjM2ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUhhdmUuaCINCg0KDQoNCiNsaW5lIDI0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAy
NDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMjQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0K
DQoNCiNsaW5lIDI1MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAyNTYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
SGF2ZS5oIg0KDQoNCg0KI2xpbmUgMjYwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDI2
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAyNjggIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoN
Cg0KI2xpbmUgMjcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDI3NiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1I
YXZlLmgiDQoNCg0KDQojbGluZSAyODAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMjg0
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDI4OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0K
DQojbGluZSAyOTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMjk2ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhh
dmUuaCINCg0KDQoNCiNsaW5lIDMwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAzMDQg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMzA4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoN
CiNsaW5lIDMxMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAzMTYgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2
ZS5oIg0KDQoNCg0KI2xpbmUgMzIwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCg0KI2xpbmUgMzI1
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCg0KI2xpbmUgMzMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0K
DQoNCiNsaW5lIDMzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAzMzggIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
SGF2ZS5oIg0KDQoNCg0KI2xpbmUgMzQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDM0
NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAzNTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzNTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KDQojbGluZSAzNjMg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgMzY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoN
CiNsaW5lIDM3MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAzNzggIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2
ZS5oIg0KDQoNCg0KI2xpbmUgMzg2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDM5MCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
UGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSAzOTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0K
I2xpbmUgMzk4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDQwMiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZl
LmgiDQoNCg0KDQojbGluZSA0MDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNDEzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDQxNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQoj
bGluZSA0MjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNDI3ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUu
aCINCg0KDQoNCiNsaW5lIDQzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA0MzUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNDM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNs
aW5lIDQ0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA0NDcgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5o
Ig0KDQoNCg0KI2xpbmUgNDUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDQ1NSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1IYXZlLmgiDQoNCg0KDQoNCiNsaW5lIDQ2MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQoj
bGluZSA0NjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNDY4ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUu
aCINCg0KDQoNCiNsaW5lIDQ3MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA0NzYgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNDgwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNs
aW5lIDQ4NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA0ODggIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5o
Ig0KDQoNCg0KI2xpbmUgNDkyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDQ5NiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA1MDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xp
bmUgNTA0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDUwOCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgi
DQoNCg0KDQojbGluZSA1MTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNTE2ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDUyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGlu
ZSA1MjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNTI4ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCIN
Cg0KDQoNCiNsaW5lIDUzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA1MzYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNTQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5l
IDU0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA1NDggIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0K
DQoNCg0KI2xpbmUgNTUyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDU1NiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZv
cm1IYXZlLmgiDQoNCg0KDQojbGluZSA1NjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUg
NTY0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDU2OCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoN
Cg0KDQojbGluZSA1NzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNTc2ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUhhdmUuaCINCg0KDQoNCiNsaW5lIDU4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA1
ODQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNTg4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0K
DQoNCiNsaW5lIDU5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA1OTYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
SGF2ZS5oIg0KDQoNCg0KI2xpbmUgNjAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDYw
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA2MDggIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoN
Cg0KI2xpbmUgNjEyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDYxNiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1I
YXZlLmgiDQoNCg0KDQoNCiNsaW5lIDYyMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA2
MjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNjI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0K
DQoNCiNsaW5lIDYzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA2MzcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
SGF2ZS5oIg0KDQoNCg0KI2xpbmUgNjQxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDY0
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA2NDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoN
Cg0KI2xpbmUgNjUzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDY1NyAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1I
YXZlLmgiDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNjY1
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoNCiNsaW5lIDY2OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0K
DQojbGluZSA2NzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNjgwICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhh
dmUuaCINCg0KDQoNCiNsaW5lIDY4NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA2OTEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtSGF2ZS5oIg0KDQoNCg0KI2xpbmUgNjk1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCg0KDQoN
CiNsaW5lIDcwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1IYXZlLmgiDQoNCg0KDQojbGluZSA3MDYgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtSGF2
ZS5oIg0KDQoNCg0KI2xpbmUgNzEwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUhhdmUuaCINCiNsaW5lIDUzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bS5oIg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSA1NiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1V
c2UuaCINCg0KDQoNCiNsaW5lIDYwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybVVzZS5oIg0KDQoNCg0KI2xpbmUgNjQgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSA2OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCiNsaW5l
IDcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QbGF0Zm9ybVVzZS5oIg0KDQoNCg0KI2xpbmUgNzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0K
DQojbGluZSA4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCiNsaW5lIDg0ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybVVzZS5o
Ig0KDQoNCg0KDQojbGluZSA4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCiNsaW5lIDkzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybVVzZS5oIg0KDQoNCg0KI2xpbmUgOTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAx
MDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxMDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0K
DQojbGluZSAxMDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxMTMgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNl
LmgiDQoNCg0KDQojbGluZSAxMTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxMjEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGlu
ZSAxMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxMzMgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoN
Cg0KDQojbGluZSAxMzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTQzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybVVzZS5oIg0KDQoNCg0KDQoNCiNsaW5lIDE0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCg0K
DQojbGluZSAxNTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxNTkgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNl
LmgiDQoNCg0KDQojbGluZSAxNjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxNjcgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxNzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGlu
ZSAxNzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxNzkgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoN
Cg0KDQojbGluZSAxODMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxODcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
VXNlLmgiDQoNCg0KDQojbGluZSAxOTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxOTUg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAxOTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQoj
bGluZSAyMDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQoNCiNsaW5lIDIwOCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2Uu
aCINCg0KDQoNCg0KI2xpbmUgMjEzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybVVzZS5oIg0KDQoNCg0KI2xpbmUgMjE3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybVVzZS5oIg0KDQoNCg0KI2xpbmUgMjIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybVVzZS5oIg0KDQoNCg0KI2xp
bmUgMjI1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9QbGF0Zm9ybVVzZS5oIg0KDQoNCg0KI2xpbmUgMjI5ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybVVzZS5oIg0K
DQoNCg0KI2xpbmUgMjMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybVVzZS5oIg0KDQoNCg0KI2xpbmUgMjM3ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bVVzZS5oIg0KDQoNCg0KDQoNCiNsaW5lIDI0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCiNsaW5lIDI1NyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZv
cm1Vc2UuaCINCg0KDQoNCiNsaW5lIDI2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCiNsaW5lIDI2
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoNCiNsaW5lIDI2OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1Vc2UuaCINCg0KDQoN
Cg0KI2xpbmUgMjc0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybVVzZS5oIg0KDQoNCg0KDQojbGluZSAyNzkgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
VXNlLmgiDQoNCg0KDQojbGluZSAyODMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAyODcg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAyOTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQoj
bGluZSAyOTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAyOTkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgi
DQoNCg0KDQojbGluZSAzMDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtVXNlLmgiDQoNCg0KDQojbGluZSAzMDcgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtVXNlLmgiDQojbGluZSA1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybUVuYWJsZS5oIg0KI2xpbmUgNzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoNCg0KDQoj
bGluZSA3OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1FbmFibGUuaCINCg0KDQoNCg0KI2xpbmUgOTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZVdpbkNhaXJvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQoNCg0KDQojbGluZSAzOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGVXaW5DYWlyby5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGVXaW5DYWlyby5oIg0KDQoNCg0KI2xpbmUg
NTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtRW5hYmxlV2luQ2Fpcm8uaCINCg0KDQoNCiNsaW5lIDU3ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVu
YWJsZVdpbkNhaXJvLmgiDQojbGluZSA5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCiNsaW5lIDk3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KDQojbGluZSAxMDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDExMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDEx
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDExOCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCIN
Cg0KDQoNCiNsaW5lIDEyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDEyNiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDEzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoN
CiNsaW5lIDEzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDEzOCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1F
bmFibGUuaCINCg0KDQoNCiNsaW5lIDE0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5l
IDE0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDE1MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUu
aCINCg0KDQoNCiNsaW5lIDE1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDE1OCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
UGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDE2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0K
DQoNCiNsaW5lIDE2NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KI2xpbmUgMTcxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMTc1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0K
I2xpbmUgMTc5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMTgzICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oIg0KDQoNCg0KI2xpbmUgMTg3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUg
MTkxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMTk1ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5o
Ig0KDQoNCg0KI2xpbmUgMTk5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjAzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjA3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoN
Cg0KI2xpbmUgMjExICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjE1ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjE5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xp
bmUgMjIzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjI3ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJs
ZS5oIg0KDQoNCg0KI2xpbmUgMjMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjM1
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0K
DQoNCg0KI2xpbmUgMjQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjQ3ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0K
I2xpbmUgMjU1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjU5ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oIg0KDQoNCg0KI2xpbmUgMjYzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUg
MjY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgMjcxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5o
Ig0KDQoNCg0KDQoNCiNsaW5lIDI3NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDI4
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDI4NSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCIN
Cg0KDQoNCiNsaW5lIDI4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDI5MyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDI5NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoN
CiNsaW5lIDMwMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDMwNSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1F
bmFibGUuaCINCg0KDQoNCiNsaW5lIDMwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5l
IDMxMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDMxNyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUu
aCINCg0KDQoNCg0KDQojbGluZSAzMjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAz
MjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzMzEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgi
DQoNCg0KDQojbGluZSAzMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzMzkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0K
DQojbGluZSAzNDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzNTEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
RW5hYmxlLmgiDQoNCg0KDQojbGluZSAzNTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGlu
ZSAzNTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzNjMgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxl
LmgiDQoNCg0KDQojbGluZSAzNjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzNzEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzNzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoN
Cg0KDQojbGluZSAzNzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzODMgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzODcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoj
bGluZSAzOTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSAzOTUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5h
YmxlLmgiDQoNCg0KDQojbGluZSAzOTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0
MDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0MDcgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgi
DQoNCg0KDQoNCiNsaW5lIDQxMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCiNsaW5lIDQxMyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZv
cm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDQxNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNs
aW5lIDQyMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDQyNSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFi
bGUuaCINCg0KDQoNCiNsaW5lIDQyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDQz
MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDQzNyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCIN
Cg0KDQoNCg0KDQojbGluZSA0NDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQojbGluZSA0NDQgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0NDggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoj
bGluZSA0NTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0NTYgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5h
YmxlLmgiDQoNCg0KDQojbGluZSA0NjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0
NjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0NjggIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgi
DQoNCg0KDQojbGluZSA0NzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0NzYgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0ODAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0K
DQojbGluZSA0ODQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA0ODggIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
RW5hYmxlLmgiDQoNCg0KDQojbGluZSA0OTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGlu
ZSA0OTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1MDAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxl
LmgiDQoNCg0KDQojbGluZSA1MDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1MDgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1MTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoN
Cg0KDQojbGluZSA1MTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1MjAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1MjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoj
bGluZSA1MjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1MzIgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5h
YmxlLmgiDQoNCg0KDQojbGluZSA1MzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1
NDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1NDQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgi
DQoNCg0KDQojbGluZSA1NDggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1NTIgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA1NTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDU2NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDU2OCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
UGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU3OCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1F
bmFibGUuaCINCiNsaW5lIDU3OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KI2xpbmUgNTg0
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTk3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Q
bGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MDUgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxl
LmgiDQoNCg0KDQoNCg0KDQojbGluZSA2MTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoNCg0K
DQojbGluZSA2MTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA2MjMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
RW5hYmxlLmgiDQoNCg0KDQojbGluZSA2MjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDY1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDY1
OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDY2MiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY3MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0K
DQoNCiNsaW5lIDY3OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KI2xpbmUgNjg0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUgNjg4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0K
DQoNCg0KDQojbGluZSA2OTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA3MDAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoNCg0KI2xpbmUgNzA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzE2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KDQoN
CiNsaW5lIDcyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KI2xpbmUgNzI3ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUVuYWJsZS5oIg0KDQoNCg0KDQojbGluZSA3MzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoN
CiNsaW5lIDczNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KI2xpbmUgNzQyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUVuYWJsZS5oIg0KDQoNCg0KDQojbGluZSA3NDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoN
CiNsaW5lIDc1MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDc1OSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1FbmFibGUuaCINCg0KDQojbGluZSA3NjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQojbGluZSA3
NjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoNCg0KI2xpbmUgNzY5ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJs
ZS5oIg0KDQoNCiNsaW5lIDc3MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCiNsaW5lIDc3MyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZv
cm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDc3NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNs
aW5lIDc4MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KI2xpbmUgNzg2ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oIg0KDQoNCg0KI2xpbmUgNzkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KI2xpbmUg
Nzk0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQojbGluZSA3OTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoN
CiNsaW5lIDc5OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDgwMiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1F
bmFibGUuaCINCg0KDQoNCiNsaW5lIDgwNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5l
IDgxMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDgxNCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUu
aCINCg0KDQoNCiNsaW5lIDgxOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCiNsaW5lIDgyMiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
UGxhdGZvcm1FbmFibGUuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgODMwICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJs
ZS5oIg0KDQoNCg0KDQojbGluZSA4MzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoNCiNsaW5l
IDg0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUGxhdGZvcm1FbmFibGUuaCINCg0KI2xpbmUgODQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0K
I2xpbmUgODQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9QbGF0Zm9ybUVuYWJsZS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NTEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtRW5hYmxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NjEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5h
YmxlLmgiDQoNCg0KDQojbGluZSA4NjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA4
NjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA4NzMgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgi
DQoNCg0KDQojbGluZSA4NzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtRW5hYmxlLmgiDQoNCg0KDQojbGluZSA4ODEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bs
YXRmb3JtRW5hYmxlLmgiDQojbGluZSA2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQoNCg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oIg0KDQojbGluZSA0
MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUGxhdGZvcm1DYWxsaW5nQ29udmVudGlvbnMuaCINCg0KI2xpbmUgNDQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ2Fs
bGluZ0NvbnZlbnRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU1ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bUNhbGxpbmdDb252ZW50aW9ucy5oIg0KDQojbGluZSA1NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1DYWxsaW5nQ29udmVu
dGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjggIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ2FsbGluZ0Nv
bnZlbnRpb25zLmgiDQoNCiNsaW5lIDcwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oIg0K
DQoNCg0KI2xpbmUgNzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZlbnRpb25zLmgiDQoNCiNsaW5lIDc2
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QbGF0Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oIg0KI2xpbmUgNjggIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtLmgiDQoN
Cg0KDQoNCg0KDQojbGluZSA3NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA5MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQoNCiNsaW5lIDk3ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9y
bS5oIg0KDQoNCg0KI2xpbmUgMTAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExNyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0K
DQojbGluZSAxMjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQojbGluZSAxMjcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3Jt
LmgiDQoNCg0KDQogDQoNCg0KI2xpbmUgMTM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybS5oIg0KDQoNCg0KDQojcHJhZ21h
IHN0cmljdF9nc19jaGVjayhvbikNCiNsaW5lIDE0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQoNCg0KI2xp
bmUgMTQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9QbGF0Zm9ybS5oIg0KDQoNCg0KDQojbGluZSAxNTAgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtLmgiDQoNCg0K
DQoNCiNsaW5lIDE1NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4OSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0u
aCINCg0KDQoNCg0KI2xpbmUgMTk0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0Zm9ybS5oIg0KDQoNCg0KI2xpbmUgMTk4ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QbGF0
Zm9ybS5oIg0KDQojbGluZSAyMDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtLmgiDQoNCg0KDQojbGluZSAyMDQgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRm
b3JtLmgiDQoNCg0KDQoNCiNsaW5lIDIwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm0uaCINCg0KI2xpbmUgMzMgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0V4cG9y
dE1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDkgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0V4cG9y
dE1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRXhwb3J0TWFjcm9zLmgi
DQoNCg0KDQoNCg0KI2xpbmUgNjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL0V4cG9ydE1hY3Jvcy5oIg0KDQojbGluZSA2OCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRXhwb3J0
TWFjcm9zLmgiDQoNCiNsaW5lIDcwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9FeHBvcnRNYWNyb3MuaCINCiNsaW5lIDMzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTRXhw
b3J0TWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTRXhwb3J0TWFjcm9zLmgi
DQoNCiNsaW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEpTRXhwb3J0TWFjcm9zLmgiDQojbGluZSAzNCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxjb25maWcuaCINCg0KDQoNCg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvRmFzdE1hbGxvYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG5ldyINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx5dmFsc19jb3JlLmgiDQoNCiNsaW5lIDE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCiNsaW5lIDE5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
dmNydW50aW1lLmgiDQoNCiNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KI2xpbmUgMzUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQoNCg0KICAg
IA0KI2xpbmUgMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcdmNydW50aW1lLmgiDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQoNCiNsaW5lIDQ5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGlt
ZS5oIg0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCg0KI2xpbmUgNTQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgi
DQogICAgI2xpbmUgNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcdmNydW50aW1lLmgiDQojbGluZSA1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KI2xpbmUgMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQojbGluZSAxNTUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MTg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNh
bC5oIg0KDQoNCiNsaW5lIDE4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxzYWwuaCINCg0KI2xpbmUgMTkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNhbC5oIg0KDQoNCg0KDQoNCiNsaW5lIDE5NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCIN
Cg0KDQoNCiNsaW5lIDIwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxzYWwuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDIwNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAyMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjI4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNhbC5oIg0KI2xpbmUgMjI5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNhbC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
cmVnaW9uIElucHV0IEJ1ZmZlciBTQUwgMSBjb21wYXRpYmlsaXR5IG1hY3Jvcw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIGVuZHJlZ2lvbiBJbnB1
dCBCdWZmZXIgU0FMIDEgY29tcGF0aWJpbGl0eSBtYWNyb3MNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1NTUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTg2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNhbC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTYx
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE2MjQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTY2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxzYWwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDE3NzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxODc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHNhbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMjA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxzYWwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAy
MTQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNh
bC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMzYxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNhbC5oIg0KZXh0ZXJuICJDIiB7DQoN
Cg0KDQoNCiNsaW5lIDIzNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjU5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCINCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KDQogICAgDQogICAgDQoNCiNsaW5lIDI2MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjg2OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI4NzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KICAgIA0KICAgIA0KI2xpbmUgMjg4MyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCIN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI4OTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcc2FsLmgiDQojbGluZSAyODkxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNhbC5oIg0KDQoNCg0KDQoNCg0KI2xpbmUg
Mjg5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxz
YWwuaCINCiNsaW5lIDI4OTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjkxMSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDI5NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCn0NCiNsaW5lIDI5NjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcc2FsLmgiDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY29uY3VycmVuY3lzYWwuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCmV4dGVybiAiQyIgew0K
I2xpbmUgMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcY29uY3VycmVuY3lzYWwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI5MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjb25jdXJyZW5j
eXNhbC5oIg0KDQoNCg0KI2xpbmUgMjk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGNvbmN1cnJlbmN5c2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY29uY3VycmVuY3lzYWwuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMzg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGNvbmN1cnJlbmN5c2FsLmgiDQoNCg0KfQ0KI2xpbmUgMzkzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNvbmN1cnJl
bmN5c2FsLmgiDQoNCiNsaW5lIDM5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxjb25jdXJyZW5jeXNhbC5oIg0KI2xpbmUgMjk3MSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzYWwuaCINCiNsaW5lIDU4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVu
dGltZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx2YWRlZnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkNCg0KDQoNCiAgICANCg0KDQogICAgICAgIA0KICAg
ICNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHZhZGVmcy5oIg0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgiDQoNCg0KDQoNCiAgICANCg0KDQogICAgICAgIA0K
ICAgICNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHZhZGVmcy5oIg0KI2xpbmUgMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgiDQoNCg0KDQogICAgDQojbGluZSA0MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2YWRlZnMuaCIN
Cg0KDQoNCg0KICAgIA0KI2xpbmUgNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgiDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6ICAgNDUxNCA0ODIwICkNCg0KDQpleHRlcm4gIkMiIHsNCiNs
aW5lIDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHZhZGVmcy5oIg0KDQoNCg0KI2xpbmUgNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgiDQoNCg0KICAgIA0KICAgIA0KICAgICAgICB0
eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnRwdHJfdDsNCiAgICANCg0KI2xpbmUgNjUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgi
DQojbGluZSA2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx2YWRlZnMuaCINCg0KDQogICAgDQogICAgDQoNCg0KICAgICAgICB0eXBlZGVmIGNoYXIq
IHZhX2xpc3Q7DQogICAgI2xpbmUgNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgiDQojbGluZSA3NSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2YWRlZnMuaCINCg0KDQogICAgDQoNCg0K
I2xpbmUgODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcdmFkZWZzLmgiDQoNCg0KDQoNCg0KI2xpbmUgODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgiDQoNCg0KDQojbGluZSA5MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2YWRlZnMuaCIN
CiAgICANCiAgICANCiNsaW5lIDk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHZhZGVmcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEw
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2YWRl
ZnMuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZhZGVmcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDEyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx2YWRlZnMuaCINCg0KDQoNCg0KDQojbGluZSAxMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmFkZWZzLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDE0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx2YWRlZnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTU0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZhZGVmcy5oIg0KDQog
ICAgdm9pZCBfX2NkZWNsIF9fdmFfc3RhcnQodmFfbGlzdCogLCAuLi4pOw0KDQogICAgDQogICAg
DQoNCg0KDQogICAgDQoNCiNsaW5lIDE2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx2YWRlZnMuaCINCg0KDQp9IA0KI2xpbmUgMTY5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZhZGVmcy5oIg0KDQoN
CiAgICBleHRlcm4gIkMrKyINCiAgICB7DQogICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHk+
DQogICAgICAgIHN0cnVjdCBfX3ZjcnRfdmFfbGlzdF9pc19yZWZlcmVuY2UNCiAgICAgICAgew0K
ICAgICAgICAgICAgZW51bSA6IGJvb2wgeyBfX3RoZV92YWx1ZSA9IGZhbHNlIH07DQogICAgICAg
IH07DQoNCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9UeT4NCiAgICAgICAgc3RydWN0IF9f
dmNydF92YV9saXN0X2lzX3JlZmVyZW5jZTxfVHkmPg0KICAgICAgICB7DQogICAgICAgICAgICBl
bnVtIDogYm9vbCB7IF9fdGhlX3ZhbHVlID0gdHJ1ZSB9Ow0KICAgICAgICB9Ow0KDQogICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBfVHk+DQogICAgICAgIHN0cnVjdCBfX3ZjcnRfdmFfbGlzdF9p
c19yZWZlcmVuY2U8X1R5JiY+DQogICAgICAgIHsNCiAgICAgICAgICAgIGVudW0gOiBib29sIHsg
X190aGVfdmFsdWUgPSB0cnVlIH07DQogICAgICAgIH07DQoNCiAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIF9UeT4NCiAgICAgICAgc3RydWN0IF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90
X3JlZmVyZW5jZQ0KICAgICAgICB7DQogICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KCFfX3ZjcnRf
dmFfbGlzdF9pc19yZWZlcmVuY2U8X1R5Pjo6X190aGVfdmFsdWUsDQogICAgICAgICAgICAgICAg
InZhX3N0YXJ0IGFyZ3VtZW50IG11c3Qgbm90IGhhdmUgcmVmZXJlbmNlIHR5cGUgYW5kIG11c3Qg
bm90IGJlIHBhcmVudGhlc2l6ZWQiKTsNCiAgICAgICAgfTsNCiAgICB9IA0KDQogICAgDQoNCg0K
DQoNCg0KI2xpbmUgMjA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHZhZGVmcy5oIg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNwcmFnbWEgcGFj
ayhwb3ApDQojbGluZSA1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogICA0NTE0IDQ4MjAgKQ0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50
aW1lLmgiDQoNCl9fcHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KI2xpbmUg
MTI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZj
cnVudGltZS5oIg0KDQojbGluZSAxMjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQogICAgICAgIA0KICAgICNsaW5lIDEzMCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRp
bWUuaCINCiNsaW5lIDEzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KDQogICAgDQoNCiNsaW5lIDEzNiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCiAg
ICAgICAgDQogICAgI2xpbmUgMTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KI2xpbmUgMTM5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KDQoNCg0KDQoN
CiNsaW5lIDE0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx2Y3J1bnRpbWUuaCINCiAgICANCiAgICANCiNsaW5lIDE0OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KDQoNCg0K
ICAgIA0KI2xpbmUgMTU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHZjcnVudGltZS5oIg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQojbGluZSAx
NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNy
dW50aW1lLmgiDQoNCg0KDQojbGluZSAxNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQogICAgDQojbGluZSAxNzIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgi
DQoNCg0KDQoNCiAgICANCiNsaW5lIDE3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KDQogICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICANCg0KI2xpbmUgMTg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KI2xpbmUgMTg3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KDQoNCg0K
DQoNCg0KICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBzaXplX3Q7DQogICAgdHlwZWRlZiBf
X2ludDY0ICAgICAgICAgIHB0cmRpZmZfdDsNCiAgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAg
aW50cHRyX3Q7DQoNCg0KDQoNCiNsaW5lIDIwMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KDQogICAgdHlwZWRlZiBib29s
ICBfX3ZjcnRfYm9vbDsNCg0KDQoNCg0KDQoNCiNsaW5lIDIxMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KDQoNCiAgICAN
CiNsaW5lIDIxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx2Y3J1bnRpbWUuaCINCg0KDQogICAgDQojbGluZSAyMjAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQoNCg0KICAgIA0K
I2xpbmUgMjI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHZjcnVudGltZS5oIg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICAgICAgDQogICAgDQoN
CiNsaW5lIDIzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx2Y3J1bnRpbWUuaCINCiNsaW5lIDIzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KDQogICAgDQoNCg0KI2xpbmUg
MjQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZj
cnVudGltZS5oIg0KDQoNCg0KI2xpbmUgMjQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KDQoNCiAgICBleHRlcm4gIkMrKyIN
CiAgICB7DQogICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfQ291bnRvZlR5cGUsIHNpemVfdCBf
U2l6ZU9mQXJyYXk+DQogICAgICAgIGNoYXIgKCpfX2NvdW50b2ZfaGVscGVyKF9fdW5hbGlnbmVk
IF9Db3VudG9mVHlwZSAoJl9BcnJheSlbX1NpemVPZkFycmF5XSkpW19TaXplT2ZBcnJheV07DQoN
CiAgICAgICAgDQogICAgfQ0KDQoNCiNsaW5lIDI2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KDQoNCiNsaW5lIDI2NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRp
bWUuaCINCg0KDQogICAgDQogICAgICAgIA0KICAgIA0KDQoNCg0KI2xpbmUgMjczICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0K
DQogICAgDQoNCg0KI2xpbmUgMjc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KICAgICAgICANCiAgICAgICAgDQogICAgDQoN
Cg0KI2xpbmUgMjg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHZjcnVudGltZS5oIg0KDQogICAgDQojbGluZSAyODcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQoNCg0KDQojbGlu
ZSAyOTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
dmNydW50aW1lLmgiDQoNCg0KDQogICAgDQoNCg0KICAgICAgICANCiAgICANCg0KI2xpbmUgMzAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVu
dGltZS5oIg0KI2xpbmUgMzAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KDQoNCiAgICANCg0KDQojbGluZSAzMDggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgi
DQoNCg0KDQoNCg0KDQojbGluZSAzMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQoNCg0KICAgIA0KICAgICAgICANCiAgICAN
Cg0KDQoNCg0KDQojbGluZSAzMjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQojbGluZSAzMjcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQoNCg0KDQojbGlu
ZSAzMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
dmNydW50aW1lLmgiDQoNCg0KICAgIA0KICAgICAgICANCiAgICANCg0KDQojbGluZSAzMzkgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1l
LmgiDQojbGluZSAzNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcdmNydW50aW1lLmgiDQoNCg0KICAgIHZvaWQgX19jZGVjbCBfX3NlY3VyaXR5X2lu
aXRfY29va2llKHZvaWQpOw0KDQogICAgDQoNCg0KDQogICAgICAgIHZvaWQgX19jZGVjbCBfX3Nl
Y3VyaXR5X2NoZWNrX2Nvb2tpZSggIHVpbnRwdHJfdCBfU3RhY2tDb29raWUpOw0KICAgICAgICBf
X2RlY2xzcGVjKG5vcmV0dXJuKSB2b2lkIF9fY2RlY2wgX19yZXBvcnRfZ3NmYWlsdXJlKCAgdWlu
dHB0cl90IF9TdGFja0Nvb2tpZSk7DQogICAgI2xpbmUgMzUxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZS5oIg0KI2xpbmUgMzUyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGlt
ZS5oIg0KDQpleHRlcm4gdWludHB0cl90IF9fc2VjdXJpdHlfY29va2llOw0KDQoNCiAgICANCiAg
ICANCiAgICANCiNsaW5lIDM2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWUuaCINCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNw
cmFnbWEgd2FybmluZyhwb3ApIA0KDQojbGluZSAzNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lLmgiDQojbGluZSAzMTYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5o
Ig0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0K
I2xpbmUgMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xp
bmUgNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUg
NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtl
eWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNzIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNo
ZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgODQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNr
LmgiDQoNCg0KDQoNCg0KI2xpbmUgOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgOTYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgi
DQoNCg0KDQoNCg0KI2xpbmUgMTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDEwOCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCIN
Cg0KDQoNCg0KDQojbGluZSAxMTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTIwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0K
DQoNCg0KDQoNCiNsaW5lIDEyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAxMzIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoN
Cg0KDQoNCg0KI2xpbmUgMTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDE0NCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0K
DQoNCg0KDQojbGluZSAxNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTU2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoN
Cg0KDQoNCiNsaW5lIDE2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAxNjggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0K
DQoNCg0KI2xpbmUgMTc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDE4MCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoN
Cg0KDQojbGluZSAxODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTkyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0K
DQoNCiNsaW5lIDE5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAyMDQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoN
Cg0KI2xpbmUgMjEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDIxNiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0K
DQojbGluZSAyMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMjI4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoN
CiNsaW5lIDIzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAyNDAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0K
I2xpbmUgMjQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDI1MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQoj
bGluZSAyNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMjY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNs
aW5lIDI3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAyNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xp
bmUgMjgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDI4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGlu
ZSAyOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KDQojbGluZSAzMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xp
bmUgMzA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDMxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGlu
ZSAzMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMzI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5l
IDMzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4
a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAzMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUg
MzQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhr
ZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDM0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAz
NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtl
eWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMzYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDM2
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5
Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAzNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMzc5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXlj
aGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDM4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSAzOTEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNo
ZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgMzk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDQwMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hl
Y2suaCINCg0KDQoNCg0KDQojbGluZSA0MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNDE1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVj
ay5oIg0KDQoNCg0KDQoNCiNsaW5lIDQyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSA0MjcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNr
LmgiDQoNCg0KDQoNCg0KI2xpbmUgNDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDQzOSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2su
aCINCg0KDQoNCg0KDQojbGluZSA0NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNDUxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5o
Ig0KDQoNCg0KDQoNCiNsaW5lIDQ1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSA0NjMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgi
DQoNCg0KDQoNCg0KI2xpbmUgNDY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDQ3NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCIN
Cg0KDQoNCg0KDQojbGluZSA0ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQoNCg0KI2xpbmUgNDg3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0K
DQoNCg0KDQoNCiNsaW5lIDQ5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSA0OTkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoN
Cg0KDQoNCg0KI2xpbmUgNTA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDUxMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0K
DQoNCg0KDQoNCiNsaW5lIDUxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSA1MjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoN
Cg0KDQoNCg0KI2xpbmUgNTMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDUzNiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0K
DQoNCg0KDQoNCiNsaW5lIDU0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCg0KDQoNCg0KDQojbGluZSA1NDkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoN
Cg0KDQoNCg0KI2xpbmUgNTU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NjMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgi
DQoNCg0KDQoNCg0KI2xpbmUgNTY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhrZXljaGVjay5oIg0KDQoNCg0KDQoNCiNsaW5lIDU3NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCIN
Cg0KDQoNCg0KDQojbGluZSA1ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCg0KDQojbGluZSA1ODUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGtleWNoZWNrLmgiDQoNCiNs
aW5lIDU4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4a2V5Y2hlY2suaCINCiNsaW5lIDU4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4a2V5Y2hlY2suaCINCiNsaW5lIDMxNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0K
DQoNCg0KDQojbGluZSAzMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KI2xpbmUgMzI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCiNsaW5l
IDMyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5
dmFsc19jb3JlLmgiDQoNCg0KDQojbGluZSAzMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAzNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KI2xpbmUgMzQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMzU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzX2NvcmUuaCINCiNsaW5lIDM1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDM2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx5dmFsc19jb3JlLmgiDQoNCiNsaW5lIDM2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQojbGluZSAzNjggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0K
DQoNCg0KDQoNCiNsaW5lIDM3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCiNsaW5lIDM3NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoN
CiNsaW5lIDM4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx5dmFsc19jb3JlLmgiDQoNCiNsaW5lIDM4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQojbGlu
ZSAzOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eXZhbHNfY29yZS5oIg0KDQoNCg0KI2xpbmUgMzk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSA0MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDQ1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx5dmFsc19jb3JlLmgiDQojbGluZSA0NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KI2xp
bmUgNDYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHl2YWxzX2NvcmUuaCINCiNsaW5lIDQ2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHl2YWxzX2NvcmUuaCINCiNsaW5lIDQ3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDQ4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5
dmFsc19jb3JlLmgiDQojbGluZSA0ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNDk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQojbGluZSA1MDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCiNsaW5lIDUwNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19j
b3JlLmgiDQojbGluZSA1MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KI2xpbmUgNTA5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoN
CiNsaW5lIDUxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MjMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0K
DQoNCg0KDQojbGluZSA1MjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQojbGluZSA1MzAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNTM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KI2xpbmUgNTQyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0K
I2xpbmUgNTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KI2xpbmUgNTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KI2xp
bmUgNTU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTY1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0K
I2xpbmUgNTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1ODUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNf
Y29yZS5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgNTkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNjAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjE0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUu
aCINCg0KDQoNCg0KDQojbGluZSA2MjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCiNsaW5lIDYyNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3Jl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCiNsaW5lIDYzNiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjUyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDY2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
Njc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2
YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY5MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNzE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3
MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZh
bHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NDMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA3NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDc2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3ODUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNf
Y29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3OTcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4MTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA4MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA4NDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQojbGluZSA4NDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA4NjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQojbGluZSA4NjMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDg3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA4ODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MDAgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0K
DQojbGluZSA5MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTEzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCIN
Cg0KI2xpbmUgOTE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0K
DQojbGluZSA5MjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTM3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCIN
Cg0KI2xpbmUgOTM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5NDkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0K
DQojbGluZSA5NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk2MSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoN
CiNsaW5lIDk2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk3MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCiNs
aW5lIDk3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk4MyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCiNsaW5l
IDk4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5
dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQojbGluZSA5OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KI2xpbmUg
OTk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2
YWxzX2NvcmUuaCINCg0KDQoNCiNsaW5lIDEwMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KI2xpbmUgMTAwNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19j
b3JlLmgiDQoNCg0KDQojbGluZSAxMDA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCiNsaW5lIDEwMTIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5o
Ig0KDQoNCg0KI2xpbmUgMTAxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQojbGluZSAxMDIwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0K
DQoNCiNsaW5lIDEwMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwMzYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNf
Y29yZS5oIg0KDQoNCg0KDQoNCiNsaW5lIDEwNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA5NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19j
b3JlLmgiDQoNCg0KDQojbGluZSAxMDk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxMTE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEyNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19j
b3JlLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTEzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExODYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoN
Cg0KI2xpbmUgMTE5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCiNsaW5lIDExOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KI2xpbmUg
MTE5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5
dmFsc19jb3JlLmgiDQoNCiNsaW5lIDExOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxMjM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHl2YWxzX2NvcmUuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI0NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFsc19jb3JlLmgiDQoNCg0KDQoj
bGluZSAxMjQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHl2YWxzX2NvcmUuaCINCg0KDQoNCiNsaW5lIDEyNTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KDQojbGluZSAxMjU0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxz
X2NvcmUuaCINCiNsaW5lIDEyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceXZhbHNfY29yZS5oIg0KI2xpbmUgMTAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbmV3Ig0KDQojbGluZSAxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGV4Y2VwdGlvbiINCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY3J0ZGJnLmgiDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dC5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiAgICANCg0KDQogICAgICAgIA0KICAgICNsaW5lIDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0
LmgiDQojbGluZSAyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KICAgIA0KI2xp
bmUgMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KICAgIA0KI2xpbmUgNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQogICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICANCiAgICAjbGluZSA2MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydC5oIg0KI2xpbmUgNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQog
ICAgDQoNCg0KICAgICAgICANCiAgICAjbGluZSA3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5o
Ig0KI2xpbmUgNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KI3ByYWdtYSB3YXJuaW5n
KHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5
MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhw
dXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCiAgICANCg0KI2xpbmUgODggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCiAgICAgICAgDQogICAgDQoNCiNsaW5lIDkyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQojbGluZSA5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5o
Ig0KDQoNCg0KDQogICAgDQojbGluZSA5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoN
CiAgICANCg0KI2xpbmUgMTA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQogICAgICAgIA0K
ICAgIA0KDQojbGluZSAxMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCiNsaW5lIDEwOSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KI2xpbmUgMTEzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxjb3JlY3J0LmgiDQogICAgDQojbGluZSAxMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCIN
Cg0KDQogICAgDQoNCg0KI2xpbmUgMTIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0K
DQoNCg0KI2xpbmUgMTI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQogICAgDQojbGluZSAx
MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQoNCg0KDQogICAgDQojbGluZSAxMzYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQoNCiNsaW5lIDE0MCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydC5oIg0KICAgIA0KI2xpbmUgMTQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0Lmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQojbGluZSAxNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVj
cnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCiAgICAgICAgDQogICAg
I2xpbmUgMTcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQojbGluZSAxNzIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnQuaCINCg0KDQoNCiNsaW5lIDE3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dC5oIg0KICAgIA0KI2xpbmUgMTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KDQoj
bGluZSAxODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCiAgICANCiNsaW5lIDE4NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KI2xpbmUgMTg4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxj
b3JlY3J0LmgiDQogICAgDQojbGluZSAxOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQysrIg0Kew0KICAgIHRlbXBsYXRlPGJvb2wgX0VuYWJs
ZSwgdHlwZW5hbWUgX1R5Pg0KICAgIHN0cnVjdCBfQ3J0RW5hYmxlSWY7DQoNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHk+DQogICAgc3RydWN0IF9DcnRFbmFibGVJZjx0cnVlLCBfVHk+DQogICAg
ew0KICAgICAgICB0eXBlZGVmIF9UeSBfVHlwZTsNCiAgICB9Ow0KfQ0KI2xpbmUgMjExICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KICAgIHR5cGVkZWYgYm9vbCAgX19jcnRfYm9vbDsN
Cg0KDQoNCg0KDQoNCiNsaW5lIDIyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgDQogICAgICAgIA0KICAgICNsaW5lIDIzNCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydC5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0MyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoN
CiNsaW5lIDI2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KICAgICAgICANCiAgICAjbGlu
ZSAyNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCiNsaW5lIDI2OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydC5oIg0KDQoNCg0KI2xpbmUgMjcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0Lmgi
DQoNCg0KICAgIA0KI2xpbmUgMjc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KIA0K
ICANCiAgIA0KICANCg0KI2xpbmUgMjg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQogDQoN
Cg0KDQoNCg0KI2xpbmUgMjkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQojbGluZSAyOTIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQogICAgI2xpbmUgMzE5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxjb3JlY3J0LmgiDQojbGluZSAzMjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCIN
Cg0KDQogICAgDQojbGluZSAzMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQogICAg
DQogICAgICAgIA0KICAgIA0KDQojbGluZSAzMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCIN
CiNsaW5lIDMzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9p
ZCBfX2NkZWNsIF9pbnZhbGlkX3BhcmFtZXRlcl9ub2luZm8odm9pZCk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgdm9pZCBfX2NkZWNsIF9pbnZhbGlkX3BhcmFt
ZXRlcl9ub2luZm9fbm9yZXR1cm4odm9pZCk7DQoNCl9fZGVjbHNwZWMobm9yZXR1cm4pDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF9pbnZva2Vfd2F0c29uKA0KICAgICAgd2No
YXJfdCBjb25zdCogX0V4cHJlc3Npb24sDQogICAgICB3Y2hhcl90IGNvbnN0KiBfRnVuY3Rpb25O
YW1lLA0KICAgICAgd2NoYXJfdCBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9MaW5lTm8sDQogICAgICAgICAgICB1aW50cHRyX3QgX1Jlc2VydmVkKTsNCg0KDQog
ICAgDQoNCg0KDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQoNCiAgICAjbGluZSAzODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQu
aCINCiNsaW5lIDM4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KICAgIA0KDQoNCiNsaW5lIDQwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0K
DQoNCg0KI2xpbmUgNDA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KICAgIA0KDQoN
CiAgICAgICAgDQoNCg0KICAgICNsaW5lIDQxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0K
I2xpbmUgNDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQog
ICAgDQoNCg0KDQoNCg0KDQogICAgICAgIA0KICAgICNsaW5lIDQzNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydC5oIg0KI2xpbmUgNDM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KICAg
IA0KDQoNCiAgICAgICAgDQogICAgI2xpbmUgNDQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0Lmgi
DQojbGluZSA0NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQoNCiNsaW5lIDQ1MCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA0NjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDQ4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KDQoNCiAg
ICANCiNsaW5lIDQ4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQoNCg0KI2xpbmUgNDkx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KICAgIA0KDQojbGluZSA0OTYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXGNvcmVjcnQuaCINCiNsaW5lIDQ5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5o
Ig0KDQoNCiAgICANCg0KDQogICAgICAgIA0KDQoNCiAgICAgICAgICAgIA0KICAgICAgICAjbGlu
ZSA1MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCiAgICAjbGluZSA1MDggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnQuaCINCiNsaW5lIDUwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0K
DQoNCg0KI2xpbmUgNTEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KDQoNCg0KI2xp
bmUgNTE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KICAgIA0KDQoNCiAgICAgICAg
DQoNCg0KDQogICAgI2xpbmUgNTI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQojbGluZSA1
MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KDQogICAgDQoNCg0KICAgICAgICANCg0K
I2xpbmUgNTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQogICAgI2xpbmUgNTM5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCiAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICANCg0KDQoNCiNsaW5lIDU0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQog
ICAgDQogICAgICAgIA0KICAgICAgICAgICAgICANCiAgICAgICAgDQoNCiNsaW5lIDU1NiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcY29yZWNydC5oIg0KICAgIA0KDQoNCg0KI2xpbmUgNTYxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxjb3JlY3J0LmgiDQoNCiAgICANCiAgICAgICAgDQogICAgDQoNCg0KDQojbGluZSA1Njkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCg0KICAgIA0KICAgICAgICANCiAgICANCg0KDQoN
CiNsaW5lIDU3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KI2xpbmUgNTc4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KICAgIA0KI2xpbmUgNTgyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxj
b3JlY3J0LmgiDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJub190Ow0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICAgICAgICAgICAgICB3
aW50X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgICAgICAgICAgICAgIHdjdHlwZV90Ow0K
dHlwZWRlZiBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RpbWUzMl90Ow0KdHlwZWRl
ZiBfX2ludDY0ICAgICAgICAgICAgICAgICAgICAgICBfX3RpbWU2NF90Ow0KDQp0eXBlZGVmIHN0
cnVjdCBfX2NydF9sb2NhbGVfZGF0YV9wdWJsaWMNCnsNCiAgICAgIHVuc2lnbmVkIHNob3J0IGNv
bnN0KiBfbG9jYWxlX3BjdHlwZTsNCiAgICAgIGludCBfbG9jYWxlX21iX2N1cl9tYXg7DQogICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xvY2FsZV9sY19jb2RlcGFnZTsNCn0gX19jcnRfbG9j
YWxlX2RhdGFfcHVibGljOw0KDQp0eXBlZGVmIHN0cnVjdCBfX2NydF9sb2NhbGVfcG9pbnRlcnMN
CnsNCiAgICBzdHJ1Y3QgX19jcnRfbG9jYWxlX2RhdGEqICAgIGxvY2luZm87DQogICAgc3RydWN0
IF9fY3J0X211bHRpYnl0ZV9kYXRhKiBtYmNpbmZvOw0KfSBfX2NydF9sb2NhbGVfcG9pbnRlcnM7
DQoNCnR5cGVkZWYgX19jcnRfbG9jYWxlX3BvaW50ZXJzKiBfbG9jYWxlX3Q7DQoNCnR5cGVkZWYg
c3RydWN0IF9NYnN0YXRldA0KeyANCiAgICB1bnNpZ25lZCBsb25nIF9XY2hhcjsNCiAgICB1bnNp
Z25lZCBzaG9ydCBfQnl0ZSwgX1N0YXRlOw0KfSBfTWJzdGF0ZXQ7DQoNCnR5cGVkZWYgX01ic3Rh
dGV0IG1ic3RhdGVfdDsNCg0KDQoNCiNsaW5lIDYyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5o
Ig0KDQoNCg0KI2xpbmUgNjI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCg0KICAgIA0K
DQoNCiAgICAgICAgdHlwZWRlZiBfX3RpbWU2NF90IHRpbWVfdDsNCiAgICAjbGluZSA2MzMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCiNsaW5lIDYzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dC5oIg0KDQoNCg0KICAgIA0KI2xpbmUgNjM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoN
Cg0KICAgIHR5cGVkZWYgc2l6ZV90IHJzaXplX3Q7DQojbGluZSA2NDMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQogICAgICAgIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAg
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA4MTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnQuaCINCiNsaW5lIDgxNCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQog
ICAgDQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQoNCiAgICAgICAg
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAg
ICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoNCg0KDQogICAgICAgIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiAgICAgICAgDQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAg
DQoNCg0KDQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTc5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQogICAgICAgICAg
ICANCg0KDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICAN
Cg0KDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCg0K
DQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCg0KDQoNCiAgICAgICAgICAgIA0KDQoN
Cg0KICAgICAgICAgICAgDQoNCg0KDQogICAgICAgICAgICANCg0KDQogICAgICAgICAgICANCg0K
DQoNCiAgICAgICAgICAgIA0KDQoNCg0KDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgDQoN
Cg0KDQoNCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCg0KDQoNCg0KICAgICAgICAgICAg
DQoNCiAgICAgICAgICAgIA0KDQoNCg0KDQogICAgICAgICAgICANCg0KICAgICAgICAjbGluZSAx
ODYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0LmgiDQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjA1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5o
Ig0KI2xpbmUgMjA1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydC5oIg0KDQp9IF9fcHJhZ21hKHBh
Y2socG9wKSkNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDEzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxjcnRkYmcuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lX25ld19kZWJ1Zy5oIg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWVfbmV3LmgiDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogICA0NTE0IDQ4MjAgKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5ODUpIA0KDQoNCmV4
dGVybiAiQysrIiB7DQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0KDQoNCg0KDQoNCm5hbWVzcGFj
ZSBzdGQNCnsNCiAgICBlbnVtIGNsYXNzIGFsaWduX3ZhbF90IDogc2l6ZV90IHt9Ow0KfQ0KI2xp
bmUgMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
dmNydW50aW1lX25ldy5oIg0KDQoNCg0KICAgIG5hbWVzcGFjZSBzdGQNCiAgICB7DQogICAgICAg
IHN0cnVjdCBub3Rocm93X3Qgew0KICAgICAgICAgICAgZXhwbGljaXQgbm90aHJvd190KCkgPSBk
ZWZhdWx0Ow0KICAgICAgICB9Ow0KDQogICAgICAgIA0KDQoNCiAgICAgICAgICAgIGV4dGVybiBu
b3Rocm93X3QgY29uc3Qgbm90aHJvdzsNCiAgICAgICAgI2xpbmUgNDQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lX25ldy5oIg0KICAg
IH0NCiNsaW5lIDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHZjcnVudGltZV9uZXcuaCINCg0KW1tub2Rpc2NhcmRdXSAgICAgX19kZWNsc3BlYyhh
bGxvY2F0b3IpDQp2b2lkKiBfX2NkZWNsIG9wZXJhdG9yIG5ldygNCiAgICBzaXplX3QgX1NpemUN
CiAgICApOw0KDQpbW25vZGlzY2FyZF1dICAgICAgIF9fZGVjbHNwZWMoYWxsb2NhdG9yKQ0Kdm9p
ZCogX19jZGVjbCBvcGVyYXRvciBuZXcoDQogICAgc2l6ZV90IF9TaXplLA0KICAgIDo6c3RkOjpu
b3Rocm93X3QgY29uc3QmDQogICAgKSBub2V4Y2VwdDsNCg0KW1tub2Rpc2NhcmRdXSAgICAgX19k
ZWNsc3BlYyhhbGxvY2F0b3IpDQp2b2lkKiBfX2NkZWNsIG9wZXJhdG9yIG5ld1tdKA0KICAgIHNp
emVfdCBfU2l6ZQ0KICAgICk7DQoNCltbbm9kaXNjYXJkXV0gICAgICAgX19kZWNsc3BlYyhhbGxv
Y2F0b3IpDQp2b2lkKiBfX2NkZWNsIG9wZXJhdG9yIG5ld1tdKA0KICAgIHNpemVfdCBfU2l6ZSwN
CiAgICA6OnN0ZDo6bm90aHJvd190IGNvbnN0Jg0KICAgICkgbm9leGNlcHQ7DQoNCnZvaWQgX19j
ZGVjbCBvcGVyYXRvciBkZWxldGUoDQogICAgdm9pZCogX0Jsb2NrDQogICAgKSBub2V4Y2VwdDsN
Cg0Kdm9pZCBfX2NkZWNsIG9wZXJhdG9yIGRlbGV0ZSgNCiAgICB2b2lkKiBfQmxvY2ssDQogICAg
OjpzdGQ6Om5vdGhyb3dfdCBjb25zdCYNCiAgICApIG5vZXhjZXB0Ow0KDQp2b2lkIF9fY2RlY2wg
b3BlcmF0b3IgZGVsZXRlW10oDQogICAgdm9pZCogX0Jsb2NrDQogICAgKSBub2V4Y2VwdDsNCg0K
dm9pZCBfX2NkZWNsIG9wZXJhdG9yIGRlbGV0ZVtdKA0KICAgIHZvaWQqIF9CbG9jaywNCiAgICA6
OnN0ZDo6bm90aHJvd190IGNvbnN0Jg0KICAgICkgbm9leGNlcHQ7DQoNCnZvaWQgX19jZGVjbCBv
cGVyYXRvciBkZWxldGUoDQogICAgdm9pZCogIF9CbG9jaywNCiAgICBzaXplX3QgX1NpemUNCiAg
ICApIG5vZXhjZXB0Ow0KDQp2b2lkIF9fY2RlY2wgb3BlcmF0b3IgZGVsZXRlW10oDQogICAgdm9p
ZCogX0Jsb2NrLA0KICAgIHNpemVfdCBfU2l6ZQ0KICAgICkgbm9leGNlcHQ7DQoNCg0KW1tub2Rp
c2NhcmRdXSAgICAgX19kZWNsc3BlYyhhbGxvY2F0b3IpDQp2b2lkKiBfX2NkZWNsIG9wZXJhdG9y
IG5ldygNCiAgICBzaXplX3QgICAgICAgICAgICAgX1NpemUsDQogICAgOjpzdGQ6OmFsaWduX3Zh
bF90IF9BbA0KICAgICk7DQoNCltbbm9kaXNjYXJkXV0gICAgICAgX19kZWNsc3BlYyhhbGxvY2F0
b3IpDQp2b2lkKiBfX2NkZWNsIG9wZXJhdG9yIG5ldygNCiAgICBzaXplX3QgICAgICAgICAgICAg
ICAgICBfU2l6ZSwNCiAgICA6OnN0ZDo6YWxpZ25fdmFsX3QgICAgICBfQWwsDQogICAgOjpzdGQ6
Om5vdGhyb3dfdCBjb25zdCYNCiAgICApIG5vZXhjZXB0Ow0KDQoNCltbbm9kaXNjYXJkXV0gICAg
IF9fZGVjbHNwZWMoYWxsb2NhdG9yKQ0Kdm9pZCogX19jZGVjbCBvcGVyYXRvciBuZXdbXSgNCiAg
ICBzaXplX3QgICAgICAgICAgICAgX1NpemUsDQogICAgOjpzdGQ6OmFsaWduX3ZhbF90IF9BbA0K
ICAgICk7DQoNCltbbm9kaXNjYXJkXV0gICAgICAgX19kZWNsc3BlYyhhbGxvY2F0b3IpDQp2b2lk
KiBfX2NkZWNsIG9wZXJhdG9yIG5ld1tdKA0KICAgIHNpemVfdCAgICAgICAgICAgICAgICAgIF9T
aXplLA0KICAgIDo6c3RkOjphbGlnbl92YWxfdCAgICAgIF9BbCwNCiAgICA6OnN0ZDo6bm90aHJv
d190IGNvbnN0Jg0KICAgICkgbm9leGNlcHQ7DQoNCnZvaWQgX19jZGVjbCBvcGVyYXRvciBkZWxl
dGUoDQogICAgdm9pZCogICAgICAgICAgICAgIF9CbG9jaywNCiAgICA6OnN0ZDo6YWxpZ25fdmFs
X3QgX0FsDQogICAgKSBub2V4Y2VwdDsNCg0Kdm9pZCBfX2NkZWNsIG9wZXJhdG9yIGRlbGV0ZSgN
CiAgICB2b2lkKiAgICAgICAgICAgICAgICAgICBfQmxvY2ssDQogICAgOjpzdGQ6OmFsaWduX3Zh
bF90ICAgICAgX0FsLA0KICAgIDo6c3RkOjpub3Rocm93X3QgY29uc3QmDQogICAgKSBub2V4Y2Vw
dDsNCg0Kdm9pZCBfX2NkZWNsIG9wZXJhdG9yIGRlbGV0ZVtdKA0KICAgIHZvaWQqICAgICAgICAg
ICAgICBfQmxvY2ssDQogICAgOjpzdGQ6OmFsaWduX3ZhbF90IF9BbA0KICAgICkgbm9leGNlcHQ7
DQoNCnZvaWQgX19jZGVjbCBvcGVyYXRvciBkZWxldGVbXSgNCiAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICBfQmxvY2ssDQogICAgOjpzdGQ6OmFsaWduX3ZhbF90ICAgICAgX0FsLA0KICAgIDo6
c3RkOjpub3Rocm93X3QgY29uc3QmDQogICAgKSBub2V4Y2VwdDsNCg0Kdm9pZCBfX2NkZWNsIG9w
ZXJhdG9yIGRlbGV0ZSgNCiAgICB2b2lkKiAgICAgICAgICAgICAgX0Jsb2NrLA0KICAgIHNpemVf
dCAgICAgICAgICAgICBfU2l6ZSwNCiAgICA6OnN0ZDo6YWxpZ25fdmFsX3QgX0FsDQogICAgKSBu
b2V4Y2VwdDsNCg0Kdm9pZCBfX2NkZWNsIG9wZXJhdG9yIGRlbGV0ZVtdKA0KICAgIHZvaWQqICAg
ICAgICAgICAgICBfQmxvY2ssDQogICAgc2l6ZV90ICAgICAgICAgICAgIF9TaXplLA0KICAgIDo6
c3RkOjphbGlnbl92YWxfdCBfQWwNCiAgICApIG5vZXhjZXB0Ow0KI2xpbmUgMTU5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV9uZXcu
aCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDU3
NykgDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxNCkgDQoNCiAgICANCiAgICBbW25vZGlz
Y2FyZF1dICAgICAgDQogICAgaW5saW5lIHZvaWQqIF9fY2RlY2wgb3BlcmF0b3IgbmV3KHNpemVf
dCBfU2l6ZSwgICB2b2lkKiBfV2hlcmUpIG5vZXhjZXB0DQogICAgew0KICAgICAgICAodm9pZClf
U2l6ZTsNCiAgICAgICAgcmV0dXJuIF9XaGVyZTsNCiAgICB9DQoNCiAgICBpbmxpbmUgdm9pZCBf
X2NkZWNsIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgdm9pZCopIG5vZXhjZXB0DQogICAgew0KICAg
ICAgICByZXR1cm47DQogICAgfQ0KI2xpbmUgMTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV9uZXcuaCINCg0KDQogICAgDQogICAg
W1tub2Rpc2NhcmRdXSAgICAgIA0KICAgIGlubGluZSB2b2lkKiBfX2NkZWNsIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBfU2l6ZSwNCiAgICAgICAgICB2b2lkKiBfV2hlcmUpIG5vZXhjZXB0DQogICAg
ew0KICAgICAgICAodm9pZClfU2l6ZTsNCiAgICAgICAgcmV0dXJuIF9XaGVyZTsNCiAgICB9DQoN
CiAgICBpbmxpbmUgdm9pZCBfX2NkZWNsIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCB2b2lkKikg
bm9leGNlcHQNCiAgICB7DQogICAgfQ0KI2xpbmUgMTkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV9uZXcuaCINCiNwcmFnbWEgd2Fy
bmluZyhwb3ApDQoNCg0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQp9IA0KI2xpbmUgMjAwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV9u
ZXcuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWVfbmV3X2RlYnVnLmgi
DQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6ICAgNDUx
NCA0ODIwICkNCg0KDQpleHRlcm4gIkMrKyIgew0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkNCg0K
DQoNCg0KDQoNCiAgICBbW25vZGlzY2FyZF1dICAgICAgDQogICAgX19kZWNsc3BlYyhhbGxvY2F0
b3IpIHZvaWQqIF9fY2RlY2wgb3BlcmF0b3IgbmV3KA0KICAgICAgICAgICAgc2l6ZV90ICAgICAg
X1NpemUsDQogICAgICAgICAgICBpbnQgICAgICAgICBfQmxvY2tVc2UsDQogICAgICAgICAgY2hh
ciBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgICAgaW50ICAgICAgICAgX0xpbmVOdW1iZXIN
CiAgICAgICAgKTsNCg0KICAgIFtbbm9kaXNjYXJkXV0gICAgICANCiAgICBfX2RlY2xzcGVjKGFs
bG9jYXRvcikgdm9pZCogX19jZGVjbCBvcGVyYXRvciBuZXdbXSgNCiAgICAgICAgICAgIHNpemVf
dCAgICAgIF9TaXplLA0KICAgICAgICAgICAgaW50ICAgICAgICAgX0Jsb2NrVXNlLA0KICAgICAg
ICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICAgIGludCAgICAgICAgIF9MaW5l
TnVtYmVyDQogICAgICAgICk7DQoNCiAgICB2b2lkIF9fY2RlY2wgb3BlcmF0b3IgZGVsZXRlKA0K
ICAgICAgICB2b2lkKiAgICAgICBfQmxvY2ssDQogICAgICAgIGludCAgICAgICAgIF9CbG9ja1Vz
ZSwNCiAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICBpbnQgICAgICAgICBf
TGluZU51bWJlcg0KICAgICAgICApIG5vZXhjZXB0Ow0KDQogICAgdm9pZCBfX2NkZWNsIG9wZXJh
dG9yIGRlbGV0ZVtdKA0KICAgICAgICB2b2lkKiAgICAgICBfQmxvY2ssDQogICAgICAgIGludCAg
ICAgICAgIF9CbG9ja1VzZSwNCiAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAg
ICBpbnQgICAgICAgICBfTGluZU51bWJlcg0KICAgICAgICApIG5vZXhjZXB0Ow0KDQojbGluZSA1
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1
bnRpbWVfbmV3X2RlYnVnLmgiDQoNCg0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQp9IA0KI2xpbmUg
NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNy
dW50aW1lX25ld19kZWJ1Zy5oIg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDE0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjcnRkYmcuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5
NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJu
ICJDIiB7DQoNCg0KDQp0eXBlZGVmIHZvaWQqIF9IRklMRTsgDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgaW50IChfX2NkZWNsKiBfQ1JU
X1JFUE9SVF9IT09LICkoaW50LCBjaGFyKiwgICAgaW50Kik7DQp0eXBlZGVmIGludCAoX19jZGVj
bCogX0NSVF9SRVBPUlRfSE9PS1cpKGludCwgd2NoYXJfdCosIGludCopOw0KDQoNCg0KDQoNCnR5
cGVkZWYgaW50IChfX2NkZWNsKiBfQ1JUX0FMTE9DX0hPT0spKGludCwgdm9pZCosIHNpemVfdCwg
aW50LCBsb25nLCB1bnNpZ25lZCBjaGFyIGNvbnN0KiwgaW50KTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiB2b2lkIChfX2NkZWNs
KiBfQ1JUX0RVTVBfQ0xJRU5UKSh2b2lkKiwgc2l6ZV90KTsNCg0KDQoNCg0KDQpzdHJ1Y3QgX0Ny
dE1lbUJsb2NrSGVhZGVyOw0KDQp0eXBlZGVmIHN0cnVjdCBfQ3J0TWVtU3RhdGUNCnsNCiAgICBz
dHJ1Y3QgX0NydE1lbUJsb2NrSGVhZGVyKiBwQmxvY2tIZWFkZXI7DQogICAgc2l6ZV90IGxDb3Vu
dHNbNV07DQogICAgc2l6ZV90IGxTaXplc1s1XTsNCiAgICBzaXplX3QgbEhpZ2hXYXRlckNvdW50
Ow0KICAgIHNpemVfdCBsVG90YWxDb3VudDsNCn0gX0NydE1lbVN0YXRlOw0KDQoNCg0KICAgIA0K
ICAgIA0KDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjM5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjcnRkYmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDU5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY3J0ZGJnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjkwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxjcnRkYmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoNCiAgICANCiAgICAg
ICAgDQogICAgI2xpbmUgNzA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjcnRkYmcuaCINCg0KICAgIA0KICAg
ICAgICANCiAgICAjbGluZSA3MTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNydGRiZy5oIg0KDQogICAgDQog
ICAgICAgIA0KICAgICNsaW5lIDcxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY3J0ZGJnLmgiDQoNCiAgICAN
CiAgICANCg0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQoNCiAgICANCiAgICANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNydGRiZy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQojbGluZSA3ODYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXGNydGRiZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3Ap
IA0KI2xpbmUgODE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjcnRkYmcuaCINCiNsaW5lIDEzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQojbGlu
ZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNy
dGRlZnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoN
CiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGNydGRlZnMuaCINCiAgICAgICAgDQogICAgI2xpbmUgMjYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3J0ZGVmcy5oIg0KI2xpbmUgMjcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3J0ZGVmcy5o
Ig0KDQoNCg0KICAgIA0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxjcnRkZWZzLmgiDQogICAgICAgIA0KICAgICNsaW5lIDM1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNydGRlZnMu
aCINCiNsaW5lIDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGNydGRlZnMuaCINCg0KDQoNCiAgICANCg0KI2xpbmUgNDIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3J0ZGVmcy5oIg0KICAgICAgICAN
CiAgICAjbGluZSA0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxjcnRkZWZzLmgiDQojbGluZSA0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjcnRkZWZzLmgiDQoNCg0KDQoNCg0KICAgIA0KDQoNCiNs
aW5lIDU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGNydGRlZnMuaCINCiAgICAgICAgDQogICAgICAgIA0KICAgIA0KDQoNCiNsaW5lIDYwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNydGRlZnMuaCIN
CiNsaW5lIDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGNydGRlZnMuaCINCg0KDQogICAgDQoNCiNsaW5lIDY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNydGRlZnMuaCINCiAgICAgICAgDQogICAg
ICAgICAgICANCiAgICAgICAgDQoNCiNsaW5lIDcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNydGRlZnMuaCINCiAgICAjbGluZSA3MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjcnRkZWZzLmgiDQoj
bGluZSA3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxjcnRkZWZzLmgiDQoNCg0KICAgIA0KDQojbGluZSA3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjcnRkZWZzLmgiDQoNCiNsaW5lIDgwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNydGRlZnMuaCIN
CiAgICAgICAgDQogICAgI2xpbmUgODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcY3J0ZGVmcy5oIg0KI2xpbmUgODMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3J0ZGVmcy5oIg0KI2xpbmUgMTQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCIN
Cg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFn
bWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0
NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgy
MCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx5dmFscy5oIg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KI2xpbmUgNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCiNsaW5lIDUyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCIN
CiNsaW5lIDEwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx5dmFscy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCiNsaW5lIDEy
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFs
cy5oIg0KI2xpbmUgMTIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHl2YWxzLmgiDQoNCg0KDQoNCiNsaW5lIDEyNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KDQojbGluZSAxMjggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCIN
Cg0KI2xpbmUgMTMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzLmgiDQoNCiNsaW5lIDEzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KDQoNCg0KI3ByYWdtYSBkZXRlY3RfbWlz
bWF0Y2goIl9NU0NfVkVSIiwgIjE5MDAiKQ0KI2xpbmUgMTM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCg0KI3ByYWdtYSBkZXRl
Y3RfbWlzbWF0Y2goIl9JVEVSQVRPUl9ERUJVR19MRVZFTCIsICIwIikNCiNsaW5lIDE0MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0K
DQoNCg0KDQojbGluZSAxNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceXZhbHMuaCINCg0KI2xpbmUgMTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQojcHJhZ21hIGRldGVjdF9taXNt
YXRjaCgiUnVudGltZUxpYnJhcnkiLCAiTURfRHluYW1pY1JlbGVhc2UiKQ0KDQoNCiNsaW5lIDE1
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFs
cy5oIg0KI2xpbmUgMTUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHl2YWxzLmgiDQojbGluZSAxNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDE2MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5o
Ig0KI2xpbmUgMTYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzLmgiDQoNCg0KDQojbGluZSAxNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCg0KDQoN
Cg0KDQojbGluZSAyMDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceXZhbHMuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjEwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCiNsaW5lIDEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXNlX2Fu
c2kuaCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1c2VfYW5z
aS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1c2VfYW5zaS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdXNlX2Fuc2kuaCINCg0KDQoNCg0KI2xpbmUgNDggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXNlX2Fuc2kuaCINCg0K
I3ByYWdtYSBjb21tZW50KGxpYiwgIm1zdmNwcnQiICIiICIiKQ0KDQoNCg0KDQoNCg0KI2xpbmUg
NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXNl
X2Fuc2kuaCINCg0KI2xpbmUgNTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcdXNlX2Fuc2kuaCINCg0KI2xpbmUgNjEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXNlX2Fuc2kuaCINCiNsaW5lIDIxMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMzIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCg0K
DQoNCg0KDQoNCiNsaW5lIDIzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KI2xpbmUgMjQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCg0KDQojbGluZSAyNDQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCIN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KI2xpbmUgMjUyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAyNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceXZhbHMuaCINCg0KDQoNCiNsaW5lIDI2OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KI2xpbmUgMjcwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoN
Cg0KDQoNCg0KDQojbGluZSAyNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCiNsaW5lIDI3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KDQoNCg0KDQoNCg0KI2xpbmUg
Mjg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2
YWxzLmgiDQojbGluZSAyODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceXZhbHMuaCINCg0KDQoNCg0KI2xpbmUgMjkxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoNCiNsaW5lIDI5MyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5o
Ig0KI2xpbmUgMjk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHl2YWxzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFj
ZSBzdGQgew0KZW51bSBfVW5pbml0aWFsaXplZCB7IA0KICAgIF9Ob2luaXQNCn07DQoNCg0KY2xh
c3MgX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9Mb2NraXQgeyANCnB1YmxpYzoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQogICAgX190aGlzY2FsbCBfTG9ja2l0KCkgbm9leGNlcHQ7DQogICAg
ZXhwbGljaXQgX190aGlzY2FsbCBfTG9ja2l0KGludCkgbm9leGNlcHQ7IA0KICAgIF9fdGhpc2Nh
bGwgfl9Mb2NraXQoKSBub2V4Y2VwdDsgDQojbGluZSAzMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCg0KICAgIHN0YXRpYyB2b2lk
IF9fY2RlY2wgX0xvY2tpdF9jdG9yKGludCkgbm9leGNlcHQ7DQogICAgc3RhdGljIHZvaWQgX19j
ZGVjbCBfTG9ja2l0X2R0b3IoaW50KSBub2V4Y2VwdDsNCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMg
dm9pZCBfX2NkZWNsIF9Mb2NraXRfY3RvcihfTG9ja2l0Kikgbm9leGNlcHQ7DQogICAgc3RhdGlj
IHZvaWQgX19jZGVjbCBfTG9ja2l0X2N0b3IoX0xvY2tpdCosIGludCkgbm9leGNlcHQ7DQogICAg
c3RhdGljIHZvaWQgX19jZGVjbCBfTG9ja2l0X2R0b3IoX0xvY2tpdCopIG5vZXhjZXB0Ow0KDQpw
dWJsaWM6DQogICAgIF9Mb2NraXQoY29uc3QgX0xvY2tpdCYpID0gZGVsZXRlOw0KICAgIF9Mb2Nr
aXQmICBvcGVyYXRvcj0oY29uc3QgX0xvY2tpdCYpID0gZGVsZXRlOw0KDQpwcml2YXRlOg0KICAg
IGludCBfTG9ja3R5cGU7DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
NDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2
YWxzLmgiDQoNCmNsYXNzIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfSW5pdF9sb2NrcyB7IA0KcHVi
bGljOg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgX190aGlzY2FsbCBfSW5pdF9sb2NrcygpIG5v
ZXhjZXB0Ow0KICAgIF9fdGhpc2NhbGwgfl9Jbml0X2xvY2tzKCkgbm9leGNlcHQ7DQojbGluZSA0
NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceXZh
bHMuaCINCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgdm9pZCBfX2NkZWNsIF9Jbml0X2xvY2tzX2N0
b3IoX0luaXRfbG9ja3MqKSBub2V4Y2VwdDsNCiAgICBzdGF0aWMgdm9pZCBfX2NkZWNsIF9Jbml0
X2xvY2tzX2R0b3IoX0luaXRfbG9ja3MqKSBub2V4Y2VwdDsNCn07DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA0NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA0ODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceXZhbHMuaCINCg0KDQoNCiNsaW5lIDQ4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx5dmFscy5oIg0KfQ0KI2xpbmUgNDg2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHl2YWxzLmgiDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KI2xp
bmUgNDk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHl2YWxzLmgiDQojbGluZSA0OTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceXZhbHMuaCINCiNsaW5lIDEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGV4Y2VwdGlvbiINCg0KDQojbGluZSAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR5cGVfdHJhaXRz
Ig0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdGRkZWYiDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3N0ZGRlZiINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRkZWYuaCINCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5
NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJu
ICJDIiB7DQoNCg0KDQoNCiAgICBuYW1lc3BhY2Ugc3RkDQogICAgew0KICAgICAgICB0eXBlZGVm
IGRlY2x0eXBlKF9fbnVsbHB0cikgbnVsbHB0cl90Ow0KICAgIH0NCg0KICAgIHVzaW5nIDo6c3Rk
OjpudWxscHRyX3Q7DQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkZGVmLmgiDQoNCg0KDQoN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQqIF9fY2RlY2wgX2Vycm5vKHZvaWQpOw0K
ICAgIA0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfc2V0X2Vy
cm5vKCAgaW50IF9WYWx1ZSk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19j
ZGVjbCBfZ2V0X2Vycm5vKCAgaW50KiBfVmFsdWUpOw0KDQojbGluZSA0MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkZGVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
c3RkZGVmLmgiDQogICAgDQojbGluZSA1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkZGVmLmgiDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBleHRlcm4gdW5zaWduZWQgbG9uZyAgX19jZGVjbCBfX3RocmVh
ZGlkKHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXh0ZXJuIHVpbnRwdHJfdCBfX2Nk
ZWNsIF9fdGhyZWFkaGFuZGxlKHZvaWQpOw0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoN
CiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGRlZi5o
Ig0KI2xpbmUgMTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcY3N0ZGRlZiINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceHRyMWNvbW1vbiINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCg0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkNCiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0K
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTgwIDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0
NTgyIDQ1ODMgNDU4NyA0NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5
MyA0ODIwIDQ5ODggNTAyNiA1MDI3IDUwNDUgNjI5NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KbmFt
ZXNwYWNlIHN0ZCB7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIF9UeSBfVmFsPg0Kc3RydWN0IGlu
dGVncmFsX2NvbnN0YW50IHsNCiAgICBzdGF0aWMgY29uc3RleHByIF9UeSB2YWx1ZSA9IF9WYWw7
DQoNCiAgICB1c2luZyB2YWx1ZV90eXBlID0gX1R5Ow0KICAgIHVzaW5nIHR5cGUgICAgICAgPSBp
bnRlZ3JhbF9jb25zdGFudDsNCg0KICAgIGNvbnN0ZXhwciBvcGVyYXRvciB2YWx1ZV90eXBlKCkg
Y29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gdmFsdWU7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgdmFsdWVfdHlwZSBvcGVyYXRvcigpKCkgY29uc3Qgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gdmFsdWU7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Ym9v
bCBfVmFsPg0KdXNpbmcgYm9vbF9jb25zdGFudCA9IGludGVncmFsX2NvbnN0YW50PGJvb2wsIF9W
YWw+Ow0KDQp1c2luZyB0cnVlX3R5cGUgID0gYm9vbF9jb25zdGFudDx0cnVlPjsNCnVzaW5nIGZh
bHNlX3R5cGUgPSBib29sX2NvbnN0YW50PGZhbHNlPjsNCg0KDQp0ZW1wbGF0ZSA8Ym9vbCBfVGVz
dCwgY2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBlbmFibGVfaWYge307IA0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0Kc3RydWN0IGVuYWJsZV9pZjx0cnVlLCBfVHk+IHsgDQogICAgdXNpbmcgdHlw
ZSA9IF9UeTsNCn07DQoNCnRlbXBsYXRlIDxib29sIF9UZXN0LCBjbGFzcyBfVHkgPSB2b2lkPg0K
dXNpbmcgZW5hYmxlX2lmX3QgPSB0eXBlbmFtZSBlbmFibGVfaWY8X1Rlc3QsIF9UeT46OnR5cGU7
DQoNCg0KdGVtcGxhdGUgPGJvb2wgX1Rlc3QsIGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpzdHJ1
Y3QgY29uZGl0aW9uYWwgeyANCiAgICB1c2luZyB0eXBlID0gX1R5MTsNCn07DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0IGNvbmRpdGlvbmFsPGZhbHNlLCBfVHkx
LCBfVHkyPiB7DQogICAgdXNpbmcgdHlwZSA9IF9UeTI7DQp9Ow0KDQp0ZW1wbGF0ZSA8Ym9vbCBf
VGVzdCwgY2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCnVzaW5nIGNvbmRpdGlvbmFsX3QgPSB0eXBl
bmFtZSBjb25kaXRpb25hbDxfVGVzdCwgX1R5MSwgX1R5Mj46OnR5cGU7DQoNCg0KDQoNCg0KDQoN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MsIGNsYXNzPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3Nh
bWVfdiA9IGZhbHNlOyANCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJv
b2wgaXNfc2FtZV92PF9UeSwgX1R5PiA9IHRydWU7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBj
bGFzcyBfVHkyPg0Kc3RydWN0IGlzX3NhbWUgOiBib29sX2NvbnN0YW50PGlzX3NhbWVfdjxfVHkx
LCBfVHkyPj4ge307DQojbGluZSA4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4dHIxY29tbW9uIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpz
dHJ1Y3QgcmVtb3ZlX2NvbnN0IHsgDQogICAgdXNpbmcgdHlwZSA9IF9UeTsNCn07DQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgcmVtb3ZlX2NvbnN0PGNvbnN0IF9UeT4gew0KICAgIHVz
aW5nIHR5cGUgPSBfVHk7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KdXNpbmcgcmVtb3Zl
X2NvbnN0X3QgPSB0eXBlbmFtZSByZW1vdmVfY29uc3Q8X1R5Pjo6dHlwZTsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IHJlbW92ZV92b2xhdGlsZSB7IA0KICAgIHVzaW5nIHR5cGUg
PSBfVHk7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IHJlbW92ZV92b2xhdGls
ZTx2b2xhdGlsZSBfVHk+IHsNCiAgICB1c2luZyB0eXBlID0gX1R5Ow0KfTsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCnVzaW5nIHJlbW92ZV92b2xhdGlsZV90ID0gdHlwZW5hbWUgcmVtb3ZlX3Zv
bGF0aWxlPF9UeT46OnR5cGU7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCByZW1v
dmVfY3YgeyANCiAgICB1c2luZyB0eXBlID0gX1R5Ow0KDQogICAgdGVtcGxhdGUgPHRlbXBsYXRl
IDxjbGFzcz4gY2xhc3MgX0ZuPg0KICAgIHVzaW5nIF9BcHBseSA9IF9GbjxfVHk+OyANCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgcmVtb3ZlX2N2PGNvbnN0IF9UeT4gew0KICAg
IHVzaW5nIHR5cGUgPSBfVHk7DQoNCiAgICB0ZW1wbGF0ZSA8dGVtcGxhdGUgPGNsYXNzPiBjbGFz
cyBfRm4+DQogICAgdXNpbmcgX0FwcGx5ID0gY29uc3QgX0ZuPF9UeT47DQp9Ow0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IHJlbW92ZV9jdjx2b2xhdGlsZSBfVHk+IHsNCiAgICB1c2lu
ZyB0eXBlID0gX1R5Ow0KDQogICAgdGVtcGxhdGUgPHRlbXBsYXRlIDxjbGFzcz4gY2xhc3MgX0Zu
Pg0KICAgIHVzaW5nIF9BcHBseSA9IHZvbGF0aWxlIF9GbjxfVHk+Ow0KfTsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCnN0cnVjdCByZW1vdmVfY3Y8Y29uc3Qgdm9sYXRpbGUgX1R5PiB7DQogICAg
dXNpbmcgdHlwZSA9IF9UeTsNCg0KICAgIHRlbXBsYXRlIDx0ZW1wbGF0ZSA8Y2xhc3M+IGNsYXNz
IF9Gbj4NCiAgICB1c2luZyBfQXBwbHkgPSBjb25zdCB2b2xhdGlsZSBfRm48X1R5PjsNCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyByZW1vdmVfY3ZfdCA9IHR5cGVuYW1lIHJlbW92
ZV9jdjxfVHk+Ojp0eXBlOw0KDQoNCnRlbXBsYXRlIDxib29sIF9GaXJzdF92YWx1ZSwgY2xhc3Mg
X0ZpcnN0LCBjbGFzcy4uLiBfUmVzdD4NCnN0cnVjdCBfRGlzanVuY3Rpb24geyANCiAgICB1c2lu
ZyB0eXBlID0gX0ZpcnN0Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9GYWxzZSwgY2xhc3MgX05l
eHQsIGNsYXNzLi4uIF9SZXN0Pg0Kc3RydWN0IF9EaXNqdW5jdGlvbjxmYWxzZSwgX0ZhbHNlLCBf
TmV4dCwgX1Jlc3QuLi4+IHsgDQogICAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIF9EaXNqdW5jdGlv
bjxfTmV4dDo6dmFsdWUsIF9OZXh0LCBfUmVzdC4uLj46OnR5cGU7DQp9Ow0KDQp0ZW1wbGF0ZSA8
Y2xhc3MuLi4gX1RyYWl0cz4NCnN0cnVjdCBkaXNqdW5jdGlvbiA6IGZhbHNlX3R5cGUge307IA0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0ZpcnN0LCBjbGFzcy4uLiBfUmVzdD4NCnN0cnVjdCBkaXNqdW5j
dGlvbjxfRmlyc3QsIF9SZXN0Li4uPiA6IF9EaXNqdW5jdGlvbjxfRmlyc3Q6OnZhbHVlLCBfRmly
c3QsIF9SZXN0Li4uPjo6dHlwZSB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1Ry
YWl0cz4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBkaXNqdW5jdGlvbl92ID0gZGlzanVuY3Rpb248
X1RyYWl0cy4uLj46OnZhbHVlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzLi4uIF9U
eXBlcz4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNfYW55X29mX3YgPSANCiAgICBkaXNqdW5j
dGlvbl92PGlzX3NhbWU8X1R5LCBfVHlwZXM+Li4uPjsNCg0KDQoNCg0KDQoNCiNsaW5lIDE4NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dHIxY29t
bW9uIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNf
aW50ZWdyYWxfdiA9IF9Jc19hbnlfb2ZfdjxyZW1vdmVfY3ZfdDxfVHk+LCBib29sLCBjaGFyLCBz
aWduZWQgY2hhciwgdW5zaWduZWQgY2hhciwNCiAgICB3Y2hhcl90LA0KDQoNCg0KICAgIGNoYXIx
Nl90LCBjaGFyMzJfdCwgc2hvcnQsIHVuc2lnbmVkIHNob3J0LCBpbnQsIHVuc2lnbmVkIGludCwg
bG9uZywgdW5zaWduZWQgbG9uZywgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmc+Ow0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX2ludGVncmFsIDogYm9vbF9jb25zdGFudDxp
c19pbnRlZ3JhbF92PF9UeT4+IHt9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUg
Y29uc3RleHByIGJvb2wgaXNfZmxvYXRpbmdfcG9pbnRfdiA9IF9Jc19hbnlfb2ZfdjxyZW1vdmVf
Y3ZfdDxfVHk+LCBmbG9hdCwgZG91YmxlLCBsb25nIGRvdWJsZT47DQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHk+DQpzdHJ1Y3QgaXNfZmxvYXRpbmdfcG9pbnQgOiBib29sX2NvbnN0YW50PGlzX2Zsb2F0
aW5nX3BvaW50X3Y8X1R5Pj4ge307DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBj
b25zdGV4cHIgYm9vbCBpc19hcml0aG1ldGljX3YgPSANCiAgICBpc19pbnRlZ3JhbF92PF9UeT4g
fHwgaXNfZmxvYXRpbmdfcG9pbnRfdjxfVHk+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3Ry
dWN0IGlzX2FyaXRobWV0aWMgOiBib29sX2NvbnN0YW50PGlzX2FyaXRobWV0aWNfdjxfVHk+PiB7
fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IHJlbW92ZV9yZWZlcmVuY2Ugew0K
ICAgIHVzaW5nIHR5cGUgICAgICAgICAgICAgICAgID0gX1R5Ow0KICAgIHVzaW5nIF9Db25zdF90
aHJ1X3JlZl90eXBlID0gY29uc3QgX1R5Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0
cnVjdCByZW1vdmVfcmVmZXJlbmNlPF9UeSY+IHsNCiAgICB1c2luZyB0eXBlICAgICAgICAgICAg
ICAgICA9IF9UeTsNCiAgICB1c2luZyBfQ29uc3RfdGhydV9yZWZfdHlwZSA9IGNvbnN0IF9UeSY7
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IHJlbW92ZV9yZWZlcmVuY2U8X1R5
JiY+IHsNCiAgICB1c2luZyB0eXBlICAgICAgICAgICAgICAgICA9IF9UeTsNCiAgICB1c2luZyBf
Q29uc3RfdGhydV9yZWZfdHlwZSA9IGNvbnN0IF9UeSYmOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCnVzaW5nIHJlbW92ZV9yZWZlcmVuY2VfdCA9IHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVu
Y2U8X1R5Pjo6dHlwZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KdXNpbmcgX0NvbnN0X3Ro
cnVfcmVmID0gdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxfVHk+OjpfQ29uc3RfdGhydV9yZWZf
dHlwZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnVzaW5nIF9SZW1vdmVfY3ZyZWZfdCA9IHJl
bW92ZV9jdl90PHJlbW92ZV9yZWZlcmVuY2VfdDxfVHk+PjsNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDI1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4dHIxY29tbW9uIg0KDQp9DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFj
ayhwb3ApDQojbGluZSAyNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHRyMWNvbW1vbiINCiNsaW5lIDI1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dHIxY29tbW9uIg0KI2xpbmUgMTQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3N0ZGRlZiINCg0K
I3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEg
d2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgz
IDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0
OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBz
dGQgew0KdXNpbmcgOjogcHRyZGlmZl90Ow0KdXNpbmcgOjogc2l6ZV90Ow0KdXNpbmcgbWF4X2Fs
aWduX3QgPSBkb3VibGU7IA0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmVudW0g
Y2xhc3MgYnl0ZSA6IHVuc2lnbmVkIGNoYXIge307DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW50VHlw
ZSwgZW5hYmxlX2lmX3Q8aXNfaW50ZWdyYWxfdjxfSW50VHlwZT4sIGludD4gPSAwPg0KW1tub2Rp
c2NhcmRdXSBjb25zdGV4cHIgYnl0ZSBvcGVyYXRvcjw8KA0KICAgIGNvbnN0IGJ5dGUgX0FyZywg
Y29uc3QgX0ludFR5cGUgX1NoaWZ0KSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxieXRlPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KF9BcmcpIDw8IF9TaGlmdCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0ludFR5cGUsIGVu
YWJsZV9pZl90PGlzX2ludGVncmFsX3Y8X0ludFR5cGU+LCBpbnQ+ID0gMD4NCltbbm9kaXNjYXJk
XV0gY29uc3RleHByIGJ5dGUgb3BlcmF0b3I+PigNCiAgICBjb25zdCBieXRlIF9BcmcsIGNvbnN0
IF9JbnRUeXBlIF9TaGlmdCkgbm9leGNlcHQgeyANCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ynl0
ZT4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihf
QXJnKSA+PiBfU2hpZnQpKTsNCn0NCg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYnl0ZSBvcGVy
YXRvcnwoDQogICAgY29uc3QgYnl0ZSBfTGVmdCwgY29uc3QgYnl0ZSBfUmlnaHQpIG5vZXhjZXB0
IHsgDQogICAgcmV0dXJuIHN0YXRpY19jYXN0PGJ5dGU+KA0KICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KF9MZWZ0KSB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oX1JpZ2h0KSkpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhw
ciBieXRlIG9wZXJhdG9yJigNCiAgICBjb25zdCBieXRlIF9MZWZ0LCBjb25zdCBieXRlIF9SaWdo
dCkgbm9leGNlcHQgeyANCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ynl0ZT4oDQogICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oX0xlZnQp
ICYgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihfUmlnaHQpKSk7DQp9DQoNCltbbm9kaXNjYXJk
XV0gY29uc3RleHByIGJ5dGUgb3BlcmF0b3JeKA0KICAgIGNvbnN0IGJ5dGUgX0xlZnQsIGNvbnN0
IGJ5dGUgX1JpZ2h0KSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxieXRlPigN
CiAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihfTGVmdCkgXiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KF9SaWdodCkpKTsNCn0NCg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYnl0ZSBvcGVyYXRvcn4oY29uc3QgYnl0ZSBfQXJnKSBu
b2V4Y2VwdCB7IA0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxieXRlPihzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPih+c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihfQXJnKSkpOw0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0ludFR5cGUsIGVuYWJsZV9pZl90PGlzX2ludGVncmFsX3Y8X0ludFR5cGU+
LCBpbnQ+ID0gMD4NCmNvbnN0ZXhwciBieXRlJiBvcGVyYXRvcjw8PShieXRlJiBfQXJnLCBjb25z
dCBfSW50VHlwZSBfU2hpZnQpIG5vZXhjZXB0IHsgDQogICAgcmV0dXJuIF9BcmcgPSBfQXJnIDw8
IF9TaGlmdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9JbnRUeXBlLCBlbmFibGVfaWZfdDxpc19p
bnRlZ3JhbF92PF9JbnRUeXBlPiwgaW50PiA9IDA+DQpjb25zdGV4cHIgYnl0ZSYgb3BlcmF0b3I+
Pj0oYnl0ZSYgX0FyZywgY29uc3QgX0ludFR5cGUgX1NoaWZ0KSBub2V4Y2VwdCB7IA0KICAgIHJl
dHVybiBfQXJnID0gX0FyZyA+PiBfU2hpZnQ7DQp9DQoNCmNvbnN0ZXhwciBieXRlJiBvcGVyYXRv
cnw9KGJ5dGUmIF9MZWZ0LCBjb25zdCBieXRlIF9SaWdodCkgbm9leGNlcHQgeyANCiAgICByZXR1
cm4gX0xlZnQgPSBfTGVmdCB8IF9SaWdodDsNCn0NCg0KY29uc3RleHByIGJ5dGUmIG9wZXJhdG9y
Jj0oYnl0ZSYgX0xlZnQsIGNvbnN0IGJ5dGUgX1JpZ2h0KSBub2V4Y2VwdCB7IA0KICAgIHJldHVy
biBfTGVmdCA9IF9MZWZ0ICYgX1JpZ2h0Ow0KfQ0KDQpjb25zdGV4cHIgYnl0ZSYgb3BlcmF0b3Je
PShieXRlJiBfTGVmdCwgY29uc3QgYnl0ZSBfUmlnaHQpIG5vZXhjZXB0IHsgDQogICAgcmV0dXJu
IF9MZWZ0ID0gX0xlZnQgXiBfUmlnaHQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW50VHlwZSwg
ZW5hYmxlX2lmX3Q8aXNfaW50ZWdyYWxfdjxfSW50VHlwZT4sIGludD4gPSAwPg0KW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgX0ludFR5cGUgdG9faW50ZWdlcihjb25zdCBieXRlIF9BcmcpIG5vZXhj
ZXB0IHsgDQogICAgcmV0dXJuIHN0YXRpY19jYXN0PF9JbnRUeXBlPihfQXJnKTsNCn0NCiNsaW5l
IDkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNz
dGRkZWYiDQoNCn0NCg0KdXNpbmcgOjpzdGQ6OiBtYXhfYWxpZ25fdDsgDQoNCg0KDQojcHJhZ21h
IHdhcm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBvcCkNCg0KI2xpbmUgMTAzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNzdGRkZWYiDQojbGluZSAx
MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3N0
ZGRlZiINCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhzdGRkZWYiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNzdGRsaWIiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcbWF0aC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X21hdGguaCINCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5
NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJu
ICJDIiB7DQoNCg0KICAgIA0KICAgIA0KICAgIHN0cnVjdCBfZXhjZXB0aW9uDQogICAgew0KICAg
ICAgICBpbnQgICAgdHlwZTsgICANCiAgICAgICAgY2hhciogIG5hbWU7ICAgDQogICAgICAgIGRv
dWJsZSBhcmcxOyAgIA0KICAgICAgICBkb3VibGUgYXJnMjsgICANCiAgICAgICAgZG91YmxlIHJl
dHZhbDsgDQogICAgfTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCg0KICAgICAgICBz
dHJ1Y3QgX2NvbXBsZXgNCiAgICAgICAgew0KICAgICAgICAgICAgZG91YmxlIHgsIHk7IA0KICAg
ICAgICB9Ow0KDQogICAgICAgIA0KDQoNCiNsaW5lIDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0
X21hdGguaCINCiAgICAjbGluZSA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoj
bGluZSA0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X21hdGguaCINCiAgICB0eXBlZGVm
IGZsb2F0ICBmbG9hdF90Ow0KICAgIHR5cGVkZWYgZG91YmxlIGRvdWJsZV90Ow0KI2xpbmUgNjIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfbWF0aC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KICAgIA0KICAgICAgICBleHRlcm4gZG91YmxlIGNvbnN0IF9IVUdFOw0KICAgIA0KDQoj
bGluZSA4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQojbGluZSA4MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoNCg0KICAgIA0KI2xpbmUgODcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXGNvcmVjcnRfbWF0aC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp2b2lkIF9fY2RlY2wgX2ZwZXJycmFpc2UoICBpbnQgX0V4Y2VwdCk7DQoN
CiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNob3J0IF9fY2RlY2wgX2RjbGFzcyggIGRvdWJsZSBf
WCk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaG9ydCBfX2NkZWNsIF9sZGNsYXNzKCAgbG9u
ZyBkb3VibGUgX1gpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2hvcnQgX19jZGVjbCBfZmRj
bGFzcyggIGZsb2F0IF9YKTsNCg0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wg
X2RzaWduKCAgZG91YmxlIF9YKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNs
IF9sZHNpZ24oICBsb25nIGRvdWJsZSBfWCk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
X19jZGVjbCBfZmRzaWduKCAgZmxvYXQgX1gpOw0KDQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnQgX19jZGVjbCBfZHBjb21wKCAgZG91YmxlIF9YLCAgIGRvdWJsZSBfWSk7DQogIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfbGRwY29tcCggIGxvbmcgZG91YmxlIF9YLCAgIGxv
bmcgZG91YmxlIF9ZKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9mZHBj
b21wKCAgZmxvYXQgX1gsICAgZmxvYXQgX1kpOw0KDQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBz
aG9ydCBfX2NkZWNsIF9kdGVzdCggIGRvdWJsZSogX1B4KTsNCiAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIHNob3J0IF9fY2RlY2wgX2xkdGVzdCggIGxvbmcgZG91YmxlKiBfUHgpOw0KICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgc2hvcnQgX19jZGVjbCBfZmR0ZXN0KCAgZmxvYXQqIF9QeCk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBzaG9ydCBfX2NkZWNsIF9kX2ludCggIGRvdWJsZSogX1B4LCAg
IHNob3J0IF9YZXhwKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaG9ydCBfX2NkZWNsIF9sZF9p
bnQoICBsb25nIGRvdWJsZSogX1B4LCAgIHNob3J0IF9YZXhwKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBzaG9ydCBfX2NkZWNsIF9mZF9pbnQoICBmbG9hdCogX1B4LCAgIHNob3J0IF9YZXhwKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNob3J0IF9fY2RlY2wgX2RzY2FsZSggIGRvdWJsZSog
X1B4LCAgIGxvbmcgX0xleHApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNob3J0IF9fY2RlY2wg
X2xkc2NhbGUoICBsb25nIGRvdWJsZSogX1B4LCAgIGxvbmcgX0xleHApOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIHNob3J0IF9fY2RlY2wgX2Zkc2NhbGUoICBmbG9hdCogX1B4LCAgIGxvbmcgX0xl
eHApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2hvcnQgX19jZGVjbCBfZHVuc2NhbGUoICBz
aG9ydCogX1BleCwgICBkb3VibGUqIF9QeCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2hvcnQg
X19jZGVjbCBfbGR1bnNjYWxlKCAgc2hvcnQqIF9QZXgsICAgbG9uZyBkb3VibGUqIF9QeCk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgc2hvcnQgX19jZGVjbCBfZmR1bnNjYWxlKCAgc2hvcnQqIF9Q
ZXgsICAgZmxvYXQqIF9QeCk7DQoNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNob3J0IF9fY2Rl
Y2wgX2RleHAoICBkb3VibGUqIF9QeCwgICBkb3VibGUgX1ksICAgbG9uZyBfRW9mZik7DQogIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBzaG9ydCBfX2NkZWNsIF9sZGV4cCggIGxvbmcgZG91YmxlKiBf
UHgsICAgbG9uZyBkb3VibGUgX1ksICAgbG9uZyBfRW9mZik7DQogIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBzaG9ydCBfX2NkZWNsIF9mZGV4cCggIGZsb2F0KiBfUHgsICAgZmxvYXQgX1ksICAgbG9u
ZyBfRW9mZik7DQoNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNob3J0IF9fY2RlY2wgX2Rub3Jt
KCAgdW5zaWduZWQgc2hvcnQqIF9Qcyk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaG9ydCBf
X2NkZWNsIF9mZG5vcm0oICB1bnNpZ25lZCBzaG9ydCogX1BzKTsNCg0KICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgZG91YmxlIF9fY2RlY2wgX2Rwb2x5KCAgZG91YmxlIF9YLCAgIGRvdWJsZSBjb25z
dCogX1RhYiwgICBpbnQgX04pOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUg
X19jZGVjbCBfbGRwb2x5KCAgbG9uZyBkb3VibGUgX1gsICAgbG9uZyBkb3VibGUgY29uc3QqIF9U
YWIsICAgaW50IF9OKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0IF9fY2RlY2wgX2Zk
cG9seSggIGZsb2F0IF9YLCAgIGZsb2F0IGNvbnN0KiBfVGFiLCAgIGludCBfTik7DQoNCiAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBfX2NkZWNsIF9kbG9nKCAgZG91YmxlIF9YLCAgIGlu
dCBfQmFzZWZsYWcpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUgX19jZGVj
bCBfbGRsb2coICBsb25nIGRvdWJsZSBfWCwgICBpbnQgX0Jhc2VmbGFnKTsNCiAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGZsb2F0IF9fY2RlY2wgX2ZkbG9nKCAgZmxvYXQgX1gsICAgaW50IF9CYXNl
ZmxhZyk7DQoNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBfX2NkZWNsIF9kc2luKCAg
ZG91YmxlIF9YLCAgIHVuc2lnbmVkIGludCBfUW9mZik7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBsb25nIGRvdWJsZSBfX2NkZWNsIF9sZHNpbiggIGxvbmcgZG91YmxlIF9YLCAgIHVuc2lnbmVk
IGludCBfUW9mZik7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCBfX2NkZWNsIF9mZHNp
biggIGZsb2F0IF9YLCAgIHVuc2lnbmVkIGludCBfUW9mZik7DQoNCg0KdHlwZWRlZiB1bmlvbg0K
eyAgIA0KICAgIHVuc2lnbmVkIHNob3J0IF9TaFs0XTsNCiAgICBkb3VibGUgX1ZhbDsNCn0gX2Rv
dWJsZV92YWw7DQoNCg0KdHlwZWRlZiB1bmlvbg0KeyAgIA0KICAgIHVuc2lnbmVkIHNob3J0IF9T
aFsyXTsNCiAgICBmbG9hdCBfVmFsOw0KfSBfZmxvYXRfdmFsOw0KDQoNCnR5cGVkZWYgdW5pb24N
CnsgICANCiAgICB1bnNpZ25lZCBzaG9ydCBfU2hbNF07DQogICAgbG9uZyBkb3VibGUgX1ZhbDsN
Cn0gX2xkb3VibGVfdmFsOw0KDQp0eXBlZGVmIHVuaW9uDQp7ICAgDQogICAgdW5zaWduZWQgc2hv
cnQgX1dvcmRbNF07DQogICAgZmxvYXQgX0Zsb2F0Ow0KICAgIGRvdWJsZSBfRG91YmxlOw0KICAg
IGxvbmcgZG91YmxlIF9Mb25nX2RvdWJsZTsNCn0gX2Zsb2F0X2NvbnN0Ow0KDQpleHRlcm4gY29u
c3QgX2Zsb2F0X2NvbnN0IF9EZW5vcm1fQywgIF9JbmZfQywgIF9OYW5fQywgIF9TbmFuX0MsIF9I
dWdldmFsX0M7DQpleHRlcm4gY29uc3QgX2Zsb2F0X2NvbnN0IF9GRGVub3JtX0MsIF9GSW5mX0Ms
IF9GTmFuX0MsIF9GU25hbl9DOw0KZXh0ZXJuIGNvbnN0IF9mbG9hdF9jb25zdCBfTERlbm9ybV9D
LCBfTEluZl9DLCBfTE5hbl9DLCBfTFNuYW5fQzsNCg0KZXh0ZXJuIGNvbnN0IF9mbG9hdF9jb25z
dCBfRXBzX0MsICBfUnRlcHNfQzsNCmV4dGVybiBjb25zdCBfZmxvYXRfY29uc3QgX0ZFcHNfQywg
X0ZSdGVwc19DOw0KZXh0ZXJuIGNvbnN0IF9mbG9hdF9jb25zdCBfTEVwc19DLCBfTFJ0ZXBzX0M7
DQoNCmV4dGVybiBjb25zdCBkb3VibGUgICAgICBfWmVyb19DLCAgX1hiaWdfQzsNCmV4dGVybiBj
b25zdCBmbG9hdCAgICAgICBfRlplcm9fQywgX0ZYYmlnX0M7DQpleHRlcm4gY29uc3QgbG9uZyBk
b3VibGUgX0xaZXJvX0MsIF9MWGJpZ19DOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMrKyINCnsNCiAgICAgIGlubGluZSBp
bnQgZnBjbGFzc2lmeSggIGZsb2F0IF9YKSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1cm4g
X2ZkdGVzdCgmX1gpOw0KICAgIH0NCg0KICAgICAgaW5saW5lIGludCBmcGNsYXNzaWZ5KCAgZG91
YmxlIF9YKSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1cm4gX2R0ZXN0KCZfWCk7DQogICAg
fQ0KDQogICAgICBpbmxpbmUgaW50IGZwY2xhc3NpZnkoICBsb25nIGRvdWJsZSBfWCkgdGhyb3co
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9sZHRlc3QoJl9YKTsNCiAgICB9DQoNCiAgICAgIGlu
bGluZSBib29sIHNpZ25iaXQoICBmbG9hdCBfWCkgdGhyb3coKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIF9mZHNpZ24oX1gpICE9IDA7DQogICAgfQ0KDQogICAgICBpbmxpbmUgYm9vbCBzaWduYml0
KCAgZG91YmxlIF9YKSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1cm4gX2RzaWduKF9YKSAh
PSAwOw0KICAgIH0NCg0KICAgICAgaW5saW5lIGJvb2wgc2lnbmJpdCggIGxvbmcgZG91YmxlIF9Y
KSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1cm4gX2xkc2lnbihfWCkgIT0gMDsNCiAgICB9
DQoNCiAgICAgIGlubGluZSBpbnQgX2ZwY29tcCggIGZsb2F0IF9YLCAgIGZsb2F0IF9ZKSB0aHJv
dygpDQogICAgew0KICAgICAgICByZXR1cm4gX2ZkcGNvbXAoX1gsIF9ZKTsNCiAgICB9DQoNCiAg
ICAgIGlubGluZSBpbnQgX2ZwY29tcCggIGRvdWJsZSBfWCwgICBkb3VibGUgX1kpIHRocm93KCkN
CiAgICB7DQogICAgICAgIHJldHVybiBfZHBjb21wKF9YLCBfWSk7DQogICAgfQ0KDQogICAgICBp
bmxpbmUgaW50IF9mcGNvbXAoICBsb25nIGRvdWJsZSBfWCwgICBsb25nIGRvdWJsZSBfWSkgdGhy
b3coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9sZHBjb21wKF9YLCBfWSk7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzIF9UcmMsIGNsYXNzIF9UcmU+IHN0cnVjdCBfQ29tYmluZWRfdHlw
ZQ0KICAgIHsgICANCiAgICAgICAgdHlwZWRlZiBmbG9hdCBfVHlwZTsNCiAgICB9Ow0KDQogICAg
dGVtcGxhdGUgPD4gc3RydWN0IF9Db21iaW5lZF90eXBlPGZsb2F0LCBkb3VibGU+DQogICAgeyAg
IA0KICAgICAgICB0eXBlZGVmIGRvdWJsZSBfVHlwZTsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGUg
PD4gc3RydWN0IF9Db21iaW5lZF90eXBlPGZsb2F0LCBsb25nIGRvdWJsZT4NCiAgICB7ICAgDQog
ICAgICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgX1R5cGU7DQogICAgfTsNCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfVHksIGNsYXNzIF9UMj4gc3RydWN0IF9SZWFsX3dpZGVuZWQNCiAgICB7ICAgDQog
ICAgICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgX1R5cGU7DQogICAgfTsNCg0KICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBfUmVhbF93aWRlbmVkPGZsb2F0LCBmbG9hdD4NCiAgICB7ICAgDQogICAgICAg
IHR5cGVkZWYgZmxvYXQgX1R5cGU7DQogICAgfTsNCg0KICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBf
UmVhbF93aWRlbmVkPGZsb2F0LCBkb3VibGU+DQogICAgeyAgIA0KICAgICAgICB0eXBlZGVmIGRv
dWJsZSBfVHlwZTsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGUgPD4gc3RydWN0IF9SZWFsX3dpZGVu
ZWQ8ZG91YmxlLCBmbG9hdD4NCiAgICB7ICAgDQogICAgICAgIHR5cGVkZWYgZG91YmxlIF9UeXBl
Ow0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgX1JlYWxfd2lkZW5lZDxkb3VibGUs
IGRvdWJsZT4NCiAgICB7ICAgDQogICAgICAgIHR5cGVkZWYgZG91YmxlIF9UeXBlOw0KICAgIH07
DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5PiBzdHJ1Y3QgX1JlYWxfdHlwZQ0KICAgIHsgICAN
CiAgICAgICAgdHlwZWRlZiBkb3VibGUgX1R5cGU7ICAgDQogICAgfTsNCg0KICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBfUmVhbF90eXBlPGZsb2F0Pg0KICAgIHsgICANCiAgICAgICAgdHlwZWRlZiBm
bG9hdCBfVHlwZTsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGUgPD4gc3RydWN0IF9SZWFsX3R5cGU8
bG9uZyBkb3VibGU+DQogICAgeyAgIA0KICAgICAgICB0eXBlZGVmIGxvbmcgZG91YmxlIF9UeXBl
Ow0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+DQogICAgICBp
bmxpbmUgaW50IF9mcGNvbXAoICBfVDEgX1gsICAgX1QyIF9ZKSB0aHJvdygpDQogICAgeyAgIA0K
ICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9Db21iaW5lZF90eXBlPGZsb2F0LA0KICAgICAgICAg
ICAgdHlwZW5hbWUgX1JlYWxfd2lkZW5lZDwNCiAgICAgICAgICAgIHR5cGVuYW1lIF9SZWFsX3R5
cGU8X1QxPjo6X1R5cGUsDQogICAgICAgICAgICB0eXBlbmFtZSBfUmVhbF90eXBlPF9UMj46Ol9U
eXBlPjo6X1R5cGU+OjpfVHlwZSBfVHc7DQogICAgICAgIHJldHVybiBfZnBjb21wKChfVHcpX1gs
IChfVHcpX1kpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHk+DQogICAgICBpbmxp
bmUgYm9vbCBpc2Zpbml0ZSggIF9UeSBfWCkgdGhyb3coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IGZwY2xhc3NpZnkoX1gpIDw9IDA7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeT4N
CiAgICAgIGlubGluZSBib29sIGlzaW5mKCAgX1R5IF9YKSB0aHJvdygpDQogICAgew0KICAgICAg
ICByZXR1cm4gZnBjbGFzc2lmeShfWCkgPT0gMTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1R5Pg0KICAgICAgaW5saW5lIGJvb2wgaXNuYW4oICBfVHkgX1gpIHRocm93KCkNCiAgICB7
DQogICAgICAgIHJldHVybiBmcGNsYXNzaWZ5KF9YKSA9PSAyOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlIDxjbGFzcyBfVHk+DQogICAgICBpbmxpbmUgYm9vbCBpc25vcm1hbCggIF9UeSBfWCkgdGhy
b3coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGZwY2xhc3NpZnkoX1gpID09ICgtMSk7DQogICAg
fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQogICAgICBpbmxpbmUg
Ym9vbCBpc2dyZWF0ZXIoICBfVHkxIF9YLCAgIF9UeTIgX1kpIHRocm93KCkNCiAgICB7DQogICAg
ICAgIHJldHVybiAoX2ZwY29tcChfWCwgX1kpICYgNCkgIT0gMDsNCiAgICB9DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCiAgICAgIGlubGluZSBib29sIGlzZ3JlYXRl
cmVxdWFsKCAgX1R5MSBfWCwgICBfVHkyIF9ZKSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1
cm4gKF9mcGNvbXAoX1gsIF9ZKSAmICgyIHwgNCkpICE9IDA7DQogICAgfQ0KDQogICAgdGVtcGxh
dGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQogICAgICBpbmxpbmUgYm9vbCBpc2xlc3MoICBf
VHkxIF9YLCAgIF9UeTIgX1kpIHRocm93KCkNCiAgICB7DQogICAgICAgIHJldHVybiAoX2ZwY29t
cChfWCwgX1kpICYgMSkgIT0gMDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwg
Y2xhc3MgX1R5Mj4NCiAgICAgIGlubGluZSBib29sIGlzbGVzc2VxdWFsKCAgX1R5MSBfWCwgICBf
VHkyIF9ZKSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1cm4gKF9mcGNvbXAoX1gsIF9ZKSAm
ICgxIHwgMikpICE9IDA7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNz
IF9UeTI+DQogICAgICBpbmxpbmUgYm9vbCBpc2xlc3NncmVhdGVyKCAgX1R5MSBfWCwgICBfVHky
IF9ZKSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1cm4gKF9mcGNvbXAoX1gsIF9ZKSAmICgx
IHwgNCkpICE9IDA7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9U
eTI+DQogICAgICBpbmxpbmUgYm9vbCBpc3Vub3JkZXJlZCggIF9UeTEgX1gsICAgX1R5MiBfWSkg
dGhyb3coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9mcGNvbXAoX1gsIF9ZKSA9PSAwOw0KICAg
IH0NCn0gIA0KI2xpbmUgNDU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X21hdGguaCINCg0KDQoN
Cg0KDQogICAgICBpbnQgICAgICAgX19jZGVjbCBhYnMoICBpbnQgX1gpOw0KICAgICAgbG9uZyAg
ICAgIF9fY2RlY2wgbGFicyggIGxvbmcgX1gpOw0KICAgICAgbG9uZyBsb25nIF9fY2RlY2wgbGxh
YnMoICBsb25nIGxvbmcgX1gpOw0KDQogICAgICBkb3VibGUgX19jZGVjbCBhY29zKCAgZG91Ymxl
IF9YKTsNCiAgICAgIGRvdWJsZSBfX2NkZWNsIGFzaW4oICBkb3VibGUgX1gpOw0KICAgICAgZG91
YmxlIF9fY2RlY2wgYXRhbiggIGRvdWJsZSBfWCk7DQogICAgICBkb3VibGUgX19jZGVjbCBhdGFu
MiggIGRvdWJsZSBfWSwgICBkb3VibGUgX1gpOw0KDQogICAgICBkb3VibGUgX19jZGVjbCBjb3Mo
ICBkb3VibGUgX1gpOw0KICAgICAgZG91YmxlIF9fY2RlY2wgY29zaCggIGRvdWJsZSBfWCk7DQog
ICAgICBkb3VibGUgX19jZGVjbCBleHAoICBkb3VibGUgX1gpOw0KICAgICAgIGRvdWJsZSBfX2Nk
ZWNsIGZhYnMoICBkb3VibGUgX1gpOw0KICAgICAgZG91YmxlIF9fY2RlY2wgZm1vZCggIGRvdWJs
ZSBfWCwgICBkb3VibGUgX1kpOw0KICAgICAgZG91YmxlIF9fY2RlY2wgbG9nKCAgZG91YmxlIF9Y
KTsNCiAgICAgIGRvdWJsZSBfX2NkZWNsIGxvZzEwKCAgZG91YmxlIF9YKTsNCiAgICAgIGRvdWJs
ZSBfX2NkZWNsIHBvdyggIGRvdWJsZSBfWCwgICBkb3VibGUgX1kpOw0KICAgICAgZG91YmxlIF9f
Y2RlY2wgc2luKCAgZG91YmxlIF9YKTsNCiAgICAgIGRvdWJsZSBfX2NkZWNsIHNpbmgoICBkb3Vi
bGUgX1gpOw0KICAgICAgIGRvdWJsZSBfX2NkZWNsIHNxcnQoICBkb3VibGUgX1gpOw0KICAgICAg
ZG91YmxlIF9fY2RlY2wgdGFuKCAgZG91YmxlIF9YKTsNCiAgICAgIGRvdWJsZSBfX2NkZWNsIHRh
bmgoICBkb3VibGUgX1gpOw0KDQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlICAg
IF9fY2RlY2wgYWNvc2goICBkb3VibGUgX1gpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGRvdWJsZSAgICBfX2NkZWNsIGFzaW5oKCAgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVjbCBhdGFuaCggIGRvdWJsZSBfWCk7DQogICAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgIGRvdWJsZSAgICBfX2NkZWNsIGF0b2YoICBjaGFyIGNvbnN0
KiBfU3RyaW5nKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSAgZG91YmxlICAgIF9fY2Rl
Y2wgX2F0b2ZfbCggIGNoYXIgY29uc3QqIF9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0K
ICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSAgICBfX2NkZWNsIF9jYWJzKCAgc3Ry
dWN0IF9jb21wbGV4IF9Db21wbGV4X3ZhbHVlKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBkb3VibGUgICAgX19jZGVjbCBjYnJ0KCAgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVjbCBjZWlsKCAgZG91YmxlIF9YKTsNCiAgICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVjbCBfY2hnc2lnbiggIGRvdWJsZSBf
WCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlICAgIF9fY2RlY2wgY29weXNp
Z24oICBkb3VibGUgX051bWJlciwgICBkb3VibGUgX1NpZ24pOw0KICAgICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGRvdWJsZSAgICBfX2NkZWNsIF9jb3B5c2lnbiggIGRvdWJsZSBfTnVtYmVyLCAg
IGRvdWJsZSBfU2lnbik7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlICAgIF9f
Y2RlY2wgZXJmKCAgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3Vi
bGUgICAgX19jZGVjbCBlcmZjKCAgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBkb3VibGUgICAgX19jZGVjbCBleHAyKCAgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVjbCBleHBtMSggIGRvdWJsZSBfWCk7DQogICAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlICAgIF9fY2RlY2wgZmRpbSggIGRvdWJsZSBf
WCwgICBkb3VibGUgX1kpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSAgICBf
X2NkZWNsIGZsb29yKCAgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBk
b3VibGUgICAgX19jZGVjbCBmbWEoICBkb3VibGUgX1gsICAgZG91YmxlIF9ZLCAgIGRvdWJsZSBf
Wik7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlICAgIF9fY2RlY2wgZm1heCgg
IGRvdWJsZSBfWCwgICBkb3VibGUgX1kpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRv
dWJsZSAgICBfX2NkZWNsIGZtaW4oICBkb3VibGUgX1gsICAgZG91YmxlIF9ZKTsNCiAgICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVjbCBmcmV4cCggIGRvdWJsZSBfWCwg
ICBpbnQqIF9ZKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVj
bCBoeXBvdCggIGRvdWJsZSBfWCwgICBkb3VibGUgX1kpOw0KICAgICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGRvdWJsZSAgICBfX2NkZWNsIF9oeXBvdCggIGRvdWJsZSBfWCwgICBkb3VibGUgX1kp
Ow0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgICAgICBfX2NkZWNsIGlsb2diKCAg
ZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVj
bCBsZGV4cCggIGRvdWJsZSBfWCwgICBpbnQgX1kpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGRvdWJsZSAgICBfX2NkZWNsIGxnYW1tYSggIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgbG9uZyBsb25nIF9fY2RlY2wgbGxyaW50KCAgZG91YmxlIF9YKTsNCiAg
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGxvbmcgX19jZGVjbCBsbHJvdW5kKCAgZG91
YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVjbCBs
b2cxcCggIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlICAg
IF9fY2RlY2wgbG9nMiggIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
ZG91YmxlICAgIF9fY2RlY2wgbG9nYiggIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgbG9uZyAgICAgIF9fY2RlY2wgbHJpbnQoICBkb3VibGUgX1gpOw0KICAgICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgICAgICBfX2NkZWNsIGxyb3VuZCggIGRvdWJsZSBfWCk7
DQoNCiAgICBpbnQgX19jZGVjbCBfbWF0aGVyciggIHN0cnVjdCBfZXhjZXB0aW9uKiBfRXhjZXB0
KTsNCg0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBfX2NkZWNsIG1vZGYoICBk
b3VibGUgX1gsICAgZG91YmxlKiBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91
YmxlIF9fY2RlY2wgbmFuKCAgY2hhciBjb25zdCogX1gpOw0KICAgICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGRvdWJsZSBfX2NkZWNsIG5lYXJieWludCggIGRvdWJsZSBfWCk7DQogICAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIF9fY2RlY2wgbmV4dGFmdGVyKCAgZG91YmxlIF9YLCAg
IGRvdWJsZSBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIF9fY2RlY2wg
bmV4dHRvd2FyZCggIGRvdWJsZSBfWCwgICBsb25nIGRvdWJsZSBfWSk7DQogICAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgZG91YmxlIF9fY2RlY2wgcmVtYWluZGVyKCAgZG91YmxlIF9YLCAgIGRv
dWJsZSBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIF9fY2RlY2wgcmVt
cXVvKCAgZG91YmxlIF9YLCAgIGRvdWJsZSBfWSwgICBpbnQqIF9aKTsNCiAgICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCByaW50KCAgZG91YmxlIF9YKTsNCiAgICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCByb3VuZCggIGRvdWJsZSBfWCk7DQog
ICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIF9fY2RlY2wgc2NhbGJsbiggIGRvdWJs
ZSBfWCwgICBsb25nIF9ZKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19j
ZGVjbCBzY2FsYm4oICBkb3VibGUgX1gsICAgaW50IF9ZKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBkb3VibGUgX19jZGVjbCB0Z2FtbWEoICBkb3VibGUgX1gpOw0KICAgICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBfX2NkZWNsIHRydW5jKCAgZG91YmxlIF9YKTsNCiAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBfajAoICBkb3VibGUgX1ggKTsN
CiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBfajEoICBkb3VibGUg
X1ggKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBfam4oaW50
IF9YLCAgIGRvdWJsZSBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIF9f
Y2RlY2wgX3kwKCAgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3Vi
bGUgX19jZGVjbCBfeTEoICBkb3VibGUgX1gpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGRvdWJsZSBfX2NkZWNsIF95biggIGludCBfWCwgICBkb3VibGUgX1kpOw0KDQogICAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2RlY2wgYWNvc2hmKCAgZmxvYXQgX1gpOw0K
ICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNsIGFzaW5oZiggIGZs
b2F0IF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAgICAgX19jZGVjbCBh
dGFuaGYoICBmbG9hdCBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgICAg
IF9fY2RlY2wgY2JydGYoICBmbG9hdCBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
ZmxvYXQgICAgIF9fY2RlY2wgX2NoZ3NpZ25mKCAgZmxvYXQgX1gpOw0KICAgICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNsIGNvcHlzaWduZiggIGZsb2F0IF9OdW1iZXIs
ICAgZmxvYXQgX1NpZ24pOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBf
X2NkZWNsIF9jb3B5c2lnbmYoICBmbG9hdCBfTnVtYmVyLCAgIGZsb2F0IF9TaWduKTsNCiAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAgICAgX19jZGVjbCBlcmZmKCAgZmxvYXQgX1gp
Ow0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNsIGVyZmNmKCAg
ZmxvYXQgX1gpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNs
IGV4cG0xZiggIGZsb2F0IF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAg
ICAgX19jZGVjbCBleHAyZiggIGZsb2F0IF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBmbG9hdCAgICAgX19jZGVjbCBmZGltZiggIGZsb2F0IF9YLCAgIGZsb2F0IF9ZKTsNCiAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAgICAgX19jZGVjbCBmbWFmKCAgZmxvYXQgX1gs
ICAgZmxvYXQgX1ksICAgZmxvYXQgX1opOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZs
b2F0ICAgICBfX2NkZWNsIGZtYXhmKCAgZmxvYXQgX1gsICAgZmxvYXQgX1kpOw0KICAgICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNsIGZtaW5mKCAgZmxvYXQgX1gsICAg
ZmxvYXQgX1kpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNs
IF9oeXBvdGYoICBmbG9hdCBfWCwgICBmbG9hdCBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgaW50ICAgICAgIF9fY2RlY2wgaWxvZ2JmKCAgZmxvYXQgX1gpOw0KICAgICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNsIGxnYW1tYWYoICBmbG9hdCBfWCk7DQog
ICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBsb25nIF9fY2RlY2wgbGxyaW50ZiggIGZs
b2F0IF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGxvbmcgX19jZGVjbCBs
bHJvdW5kZiggIGZsb2F0IF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAg
ICAgX19jZGVjbCBsb2cxcGYoICBmbG9hdCBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgZmxvYXQgICAgIF9fY2RlY2wgbG9nMmYoICBmbG9hdCBfWCk7DQogICAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2RlY2wgbG9nYmYoICBmbG9hdCBfWCk7DQogICAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyAgICAgIF9fY2RlY2wgbHJpbnRmKCAgZmxvYXQgX1gp
Ow0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgICAgICBfX2NkZWNsIGxyb3VuZGYo
ICBmbG9hdCBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2Rl
Y2wgbmFuZiggIGNoYXIgY29uc3QqIF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBm
bG9hdCAgICAgX19jZGVjbCBuZWFyYnlpbnRmKCAgZmxvYXQgX1gpOw0KICAgICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNsIG5leHRhZnRlcmYoICBmbG9hdCBfWCwgICBm
bG9hdCBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2RlY2wg
bmV4dHRvd2FyZGYoICBmbG9hdCBfWCwgICBsb25nIGRvdWJsZSBfWSk7DQogICAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2RlY2wgcmVtYWluZGVyZiggIGZsb2F0IF9YLCAg
IGZsb2F0IF9ZKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAgICAgX19jZGVj
bCByZW1xdW9mKCAgZmxvYXQgX1gsICAgZmxvYXQgX1ksICAgaW50KiBfWik7DQogICAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2RlY2wgcmludGYoICBmbG9hdCBfWCk7DQog
ICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2RlY2wgcm91bmRmKCAgZmxv
YXQgX1gpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICAgICBfX2NkZWNsIHNj
YWxibG5mKCAgZmxvYXQgX1gsICAgbG9uZyBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgZmxvYXQgICAgIF9fY2RlY2wgc2NhbGJuZiggIGZsb2F0IF9YLCAgIGludCBfWSk7DQogICAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgICAgIF9fY2RlY2wgdGdhbW1hZiggIGZsb2F0
IF9YKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAgICAgX19jZGVjbCB0cnVu
Y2YoICBmbG9hdCBfWCk7DQoNCiAgICANCg0KDQoNCiNsaW5lIDU4NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydF9tYXRoLmgiDQoNCiAgICANCg0KICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBmbG9hdCBfX2NkZWNsIF9sb2diZiggIGZsb2F0IF9YKTsNCiAgICAgICAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgZmxvYXQgX19jZGVjbCBfbmV4dGFmdGVyZiggIGZsb2F0IF9YLCAgIGZsb2F0
IF9ZKTsNCiAgICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19jZGVjbCBfZmlu
aXRlZiggIGZsb2F0IF9YKTsNCiAgICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAg
X19jZGVjbCBfaXNuYW5mKCAgZmxvYXQgX1gpOw0KICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBpbnQgICBfX2NkZWNsIF9mcGNsYXNzZiggIGZsb2F0IF9YKTsNCg0KICAgICAgICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICBfX2NkZWNsIF9zZXRfRk1BM19lbmFibGUoICBpbnQg
X0ZsYWcpOw0KICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICBfX2NkZWNsIF9n
ZXRfRk1BM19lbmFibGUodm9pZCk7DQoNCiAgICANCg0KDQoNCg0KI2xpbmUgNjA0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxjb3JlY3J0X21hdGguaCINCg0KDQoNCiAgICANCg0KICAgICAgICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBmbG9hdCBfX2NkZWNsIGFjb3NmKCAgZmxvYXQgX1gpOw0KICAgICAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCBfX2NkZWNsIGFzaW5mKCAgZmxvYXQgX1gpOw0K
ICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCBfX2NkZWNsIGF0YW4yZiggIGZs
b2F0IF9ZLCAgIGZsb2F0IF9YKTsNCiAgICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZmxv
YXQgX19jZGVjbCBhdGFuZiggIGZsb2F0IF9YKTsNCiAgICAgICAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgZmxvYXQgX19jZGVjbCBjZWlsZiggIGZsb2F0IF9YKTsNCiAgICAgICAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgZmxvYXQgX19jZGVjbCBjb3NmKCAgZmxvYXQgX1gpOw0KICAgICAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCBfX2NkZWNsIGNvc2hmKCAgZmxvYXQgX1gpOw0K
ICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCBfX2NkZWNsIGV4cGYoICBmbG9h
dCBfWCk7DQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXGNvcmVjcnRfbWF0aC5oIg0KDQogICAgDQoNCg0KDQojbGluZSA2NjcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXGNvcmVjcnRfbWF0aC5oIg0KDQogICAgICAgICAgX19pbmxpbmUgZmxvYXQgX19j
ZGVjbCBmYWJzZiggIGZsb2F0IF9YKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKGZs
b2F0KWZhYnMoX1gpOw0KICAgICAgICB9DQoNCiAgICAjbGluZSA2NzQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfbWF0aC5oIg0KDQogICAgDQoNCiAgICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgZmxvYXQgX19jZGVjbCBmbG9vcmYoICBmbG9hdCBfWCk7DQogICAgICAgICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGZsb2F0IF9fY2RlY2wgZm1vZGYoICBmbG9hdCBfWCwgICBmbG9hdCBfWSk7
DQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2OTMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfbWF0aC5oIg0KDQogICAgICBfX2lubGluZSBmbG9hdCBfX2NkZWNsIGZyZXhwZigg
IGZsb2F0IF9YLCAgIGludCAqX1kpDQogICAgew0KICAgICAgICByZXR1cm4gKGZsb2F0KWZyZXhw
KF9YLCBfWSk7DQogICAgfQ0KDQogICAgICBfX2lubGluZSBmbG9hdCBfX2NkZWNsIGh5cG90Zigg
IGZsb2F0IF9YLCAgIGZsb2F0IF9ZKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9oeXBvdGYoX1gs
IF9ZKTsNCiAgICB9DQoNCiAgICAgIF9faW5saW5lIGZsb2F0IF9fY2RlY2wgbGRleHBmKCAgZmxv
YXQgX1gsICAgaW50IF9ZKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChmbG9hdClsZGV4cChfWCwg
X1kpOw0KICAgIH0NCg0KICAgIA0KDQogICAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZs
b2F0ICBfX2NkZWNsIGxvZzEwZiggIGZsb2F0IF9YKTsNCiAgICAgICAgICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgZmxvYXQgIF9fY2RlY2wgbG9nZiggIGZsb2F0IF9YKTsNCiAgICAgICAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgIF9fY2RlY2wgbW9kZmYoICBmbG9hdCBfWCwgICBmbG9h
dCAqX1kpOw0KICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCAgX19jZGVjbCBw
b3dmKCAgZmxvYXQgX1gsICAgZmxvYXQgX1kpOw0KICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBmbG9hdCAgX19jZGVjbCBzaW5mKCAgZmxvYXQgX1gpOw0KICAgICAgICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBmbG9hdCAgX19jZGVjbCBzaW5oZiggIGZsb2F0IF9YKTsNCiAgICAgICAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgIF9fY2RlY2wgc3FydGYoICBmbG9hdCBfWCk7
DQogICAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICBfX2NkZWNsIHRhbmYoICBm
bG9hdCBfWCk7DQogICAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0ICBfX2NkZWNs
IHRhbmhmKCAgZmxvYXQgX1gpOw0KDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDc3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoN
CiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBfX2NkZWNsIGFjb3NobCgg
IGxvbmcgZG91YmxlIF9YKTsNCg0KICAgICAgX19pbmxpbmUgbG9uZyBkb3VibGUgX19jZGVjbCBh
Y29zbCggIGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGFjb3MoKGRvdWJs
ZSlfWCk7DQogICAgfQ0KDQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUg
X19jZGVjbCBhc2luaGwoICBsb25nIGRvdWJsZSBfWCk7DQoNCiAgICAgIF9faW5saW5lIGxvbmcg
ZG91YmxlIF9fY2RlY2wgYXNpbmwoICBsb25nIGRvdWJsZSBfWCkNCiAgICB7DQogICAgICAgIHJl
dHVybiBhc2luKChkb3VibGUpX1gpOw0KICAgIH0NCg0KICAgICAgX19pbmxpbmUgbG9uZyBkb3Vi
bGUgX19jZGVjbCBhdGFuMmwoICBsb25nIGRvdWJsZSBfWSwgICBsb25nIGRvdWJsZSBfWCkNCiAg
ICB7DQogICAgICAgIHJldHVybiBhdGFuMigoZG91YmxlKV9ZLCAoZG91YmxlKV9YKTsNCiAgICB9
DQoNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBfX2NkZWNsIGF0YW5o
bCggIGxvbmcgZG91YmxlIF9YKTsNCg0KICAgICAgX19pbmxpbmUgbG9uZyBkb3VibGUgX19jZGVj
bCBhdGFubCggIGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGF0YW4oKGRv
dWJsZSlfWCk7DQogICAgfQ0KDQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3Vi
bGUgX19jZGVjbCBjYnJ0bCggIGxvbmcgZG91YmxlIF9YKTsNCg0KICAgICAgX19pbmxpbmUgbG9u
ZyBkb3VibGUgX19jZGVjbCBjZWlsbCggIGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGNlaWwoKGRvdWJsZSlfWCk7DQogICAgfQ0KDQogICAgICBfX2lubGluZSBsb25nIGRv
dWJsZSBfX2NkZWNsIF9jaGdzaWdubCggIGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIF9jaGdzaWduKChkb3VibGUpX1gpOw0KICAgIH0NCg0KICAgICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGxvbmcgZG91YmxlIF9fY2RlY2wgY29weXNpZ25sKCAgbG9uZyBkb3VibGUgX051
bWJlciwgICBsb25nIGRvdWJsZSBfU2lnbik7DQoNCiAgICAgIF9faW5saW5lIGxvbmcgZG91Ymxl
IF9fY2RlY2wgX2NvcHlzaWdubCggIGxvbmcgZG91YmxlIF9OdW1iZXIsICAgbG9uZyBkb3VibGUg
X1NpZ24pDQogICAgew0KICAgICAgICByZXR1cm4gX2NvcHlzaWduKChkb3VibGUpX051bWJlciwg
KGRvdWJsZSlfU2lnbik7DQogICAgfQ0KDQogICAgICBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nk
ZWNsIGNvc2hsKCAgbG9uZyBkb3VibGUgX1gpDQogICAgew0KICAgICAgICByZXR1cm4gY29zaCgo
ZG91YmxlKV9YKTsNCiAgICB9DQoNCiAgICAgIF9faW5saW5lIGxvbmcgZG91YmxlIF9fY2RlY2wg
Y29zbCggIGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGNvcygoZG91Ymxl
KV9YKTsNCiAgICB9DQoNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBf
X2NkZWNsIGVyZmwoICBsb25nIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgbG9uZyBkb3VibGUgX19jZGVjbCBlcmZjbCggIGxvbmcgZG91YmxlIF9YKTsNCg0KICAgICAg
X19pbmxpbmUgbG9uZyBkb3VibGUgX19jZGVjbCBleHBsKCAgbG9uZyBkb3VibGUgX1gpDQogICAg
ew0KICAgICAgICByZXR1cm4gZXhwKChkb3VibGUpX1gpOw0KICAgIH0NCg0KICAgICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGxvbmcgZG91YmxlIF9fY2RlY2wgZXhwMmwoICBsb25nIGRvdWJsZSBf
WCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUgX19jZGVjbCBleHBt
MWwoICBsb25nIGRvdWJsZSBfWCk7DQoNCiAgICAgIF9faW5saW5lIGxvbmcgZG91YmxlIF9fY2Rl
Y2wgZmFic2woICBsb25nIGRvdWJsZSBfWCkNCiAgICB7DQogICAgICAgIHJldHVybiBmYWJzKChk
b3VibGUpX1gpOw0KICAgIH0NCg0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgZG91
YmxlIF9fY2RlY2wgZmRpbWwoICBsb25nIGRvdWJsZSBfWCwgICBsb25nIGRvdWJsZSBfWSk7DQoN
CiAgICAgIF9faW5saW5lIGxvbmcgZG91YmxlIF9fY2RlY2wgZmxvb3JsKCAgbG9uZyBkb3VibGUg
X1gpDQogICAgew0KICAgICAgICByZXR1cm4gZmxvb3IoKGRvdWJsZSlfWCk7DQogICAgfQ0KDQog
ICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUgX19jZGVjbCBmbWFsKCAgbG9u
ZyBkb3VibGUgX1gsICAgbG9uZyBkb3VibGUgX1ksICAgbG9uZyBkb3VibGUgX1opOw0KICAgICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgZG91YmxlIF9fY2RlY2wgZm1heGwoICBsb25nIGRv
dWJsZSBfWCwgICBsb25nIGRvdWJsZSBfWSk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
bG9uZyBkb3VibGUgX19jZGVjbCBmbWlubCggIGxvbmcgZG91YmxlIF9YLCAgIGxvbmcgZG91Ymxl
IF9ZKTsNCg0KICAgICAgX19pbmxpbmUgbG9uZyBkb3VibGUgX19jZGVjbCBmbW9kbCggIGxvbmcg
ZG91YmxlIF9YLCAgIGxvbmcgZG91YmxlIF9ZKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGZtb2Qo
KGRvdWJsZSlfWCwgKGRvdWJsZSlfWSk7DQogICAgfQ0KDQogICAgICBfX2lubGluZSBsb25nIGRv
dWJsZSBfX2NkZWNsIGZyZXhwbCggIGxvbmcgZG91YmxlIF9YLCAgIGludCAqX1kpDQogICAgew0K
ICAgICAgICByZXR1cm4gZnJleHAoKGRvdWJsZSlfWCwgX1kpOw0KICAgIH0NCg0KICAgICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIGlsb2dibCggIGxvbmcgZG91YmxlIF9YKTsN
Cg0KICAgICAgX19pbmxpbmUgbG9uZyBkb3VibGUgX19jZGVjbCBfaHlwb3RsKCAgbG9uZyBkb3Vi
bGUgX1gsICAgbG9uZyBkb3VibGUgX1kpDQogICAgew0KICAgICAgICByZXR1cm4gX2h5cG90KChk
b3VibGUpX1gsIChkb3VibGUpX1kpOw0KICAgIH0NCg0KICAgICAgX19pbmxpbmUgbG9uZyBkb3Vi
bGUgX19jZGVjbCBoeXBvdGwoICBsb25nIGRvdWJsZSBfWCwgICBsb25nIGRvdWJsZSBfWSkNCiAg
ICB7DQogICAgICAgIHJldHVybiBfaHlwb3QoKGRvdWJsZSlfWCwgKGRvdWJsZSlfWSk7DQogICAg
fQ0KDQogICAgICBfX2lubGluZSBsb25nIGRvdWJsZSBfX2NkZWNsIGxkZXhwbCggIGxvbmcgZG91
YmxlIF9YLCAgIGludCBfWSkNCiAgICB7DQogICAgICAgIHJldHVybiBsZGV4cCgoZG91YmxlKV9Y
LCBfWSk7DQogICAgfQ0KDQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUg
X19jZGVjbCBsZ2FtbWFsKCAgbG9uZyBkb3VibGUgX1gpOw0KICAgICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGxvbmcgbG9uZyBfX2NkZWNsIGxscmludGwoICBsb25nIGRvdWJsZSBfWCk7DQogICAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBsb25nIF9fY2RlY2wgbGxyb3VuZGwoICBsb25n
IGRvdWJsZSBfWCk7DQoNCiAgICAgIF9faW5saW5lIGxvbmcgZG91YmxlIF9fY2RlY2wgbG9nbCgg
IGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGxvZygoZG91YmxlKV9YKTsN
CiAgICB9DQoNCiAgICAgIF9faW5saW5lIGxvbmcgZG91YmxlIF9fY2RlY2wgbG9nMTBsKCAgbG9u
ZyBkb3VibGUgX1gpDQogICAgew0KICAgICAgICByZXR1cm4gbG9nMTAoKGRvdWJsZSlfWCk7DQog
ICAgfQ0KDQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUgX19jZGVjbCBs
b2cxcGwoICBsb25nIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9u
ZyBkb3VibGUgX19jZGVjbCBsb2cybCggIGxvbmcgZG91YmxlIF9YKTsNCiAgICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBfX2NkZWNsIGxvZ2JsKCAgbG9uZyBkb3VibGUgX1gp
Ow0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgX19jZGVjbCBscmludGwoICBsb25n
IGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBfX2NkZWNsIGxy
b3VuZGwoICBsb25nIGRvdWJsZSBfWCk7DQoNCiAgICAgIF9faW5saW5lIGxvbmcgZG91YmxlIF9f
Y2RlY2wgbW9kZmwoICBsb25nIGRvdWJsZSBfWCwgICBsb25nIGRvdWJsZSogX1kpDQogICAgew0K
ICAgICAgICBkb3VibGUgX0YsIF9JOw0KICAgICAgICBfRiA9IG1vZGYoKGRvdWJsZSlfWCwgJl9J
KTsNCiAgICAgICAgKl9ZID0gX0k7DQogICAgICAgIHJldHVybiBfRjsNCiAgICB9DQoNCiAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBfX2NkZWNsIG5hbmwoICBjaGFyIGNv
bnN0KiBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUgX19jZGVj
bCBuZWFyYnlpbnRsKCAgbG9uZyBkb3VibGUgX1gpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGxvbmcgZG91YmxlIF9fY2RlY2wgbmV4dGFmdGVybCggIGxvbmcgZG91YmxlIF9YLCAgIGxv
bmcgZG91YmxlIF9ZKTsNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBf
X2NkZWNsIG5leHR0b3dhcmRsKCAgbG9uZyBkb3VibGUgX1gsICAgbG9uZyBkb3VibGUgX1kpOw0K
DQogICAgICBfX2lubGluZSBsb25nIGRvdWJsZSBfX2NkZWNsIHBvd2woICBsb25nIGRvdWJsZSBf
WCwgICBsb25nIGRvdWJsZSBfWSkNCiAgICB7DQogICAgICAgIHJldHVybiBwb3coKGRvdWJsZSlf
WCwgKGRvdWJsZSlfWSk7DQogICAgfQ0KDQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9u
ZyBkb3VibGUgX19jZGVjbCByZW1haW5kZXJsKCAgbG9uZyBkb3VibGUgX1gsICAgbG9uZyBkb3Vi
bGUgX1kpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgZG91YmxlIF9fY2RlY2wg
cmVtcXVvbCggIGxvbmcgZG91YmxlIF9YLCAgIGxvbmcgZG91YmxlIF9ZLCAgIGludCogX1opOw0K
ICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgZG91YmxlIF9fY2RlY2wgcmludGwoICBs
b25nIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUg
X19jZGVjbCByb3VuZGwoICBsb25nIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgbG9uZyBkb3VibGUgX19jZGVjbCBzY2FsYmxubCggIGxvbmcgZG91YmxlIF9YLCAgIGxv
bmcgX1kpOw0KICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgZG91YmxlIF9fY2RlY2wg
c2NhbGJubCggIGxvbmcgZG91YmxlIF9YLCAgIGludCBfWSk7DQoNCiAgICAgIF9faW5saW5lIGxv
bmcgZG91YmxlIF9fY2RlY2wgc2luaGwoICBsb25nIGRvdWJsZSBfWCkNCiAgICB7DQogICAgICAg
IHJldHVybiBzaW5oKChkb3VibGUpX1gpOw0KICAgIH0NCg0KICAgICAgX19pbmxpbmUgbG9uZyBk
b3VibGUgX19jZGVjbCBzaW5sKCAgbG9uZyBkb3VibGUgX1gpDQogICAgew0KICAgICAgICByZXR1
cm4gc2luKChkb3VibGUpX1gpOw0KICAgIH0NCg0KICAgICAgX19pbmxpbmUgbG9uZyBkb3VibGUg
X19jZGVjbCBzcXJ0bCggIGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHNx
cnQoKGRvdWJsZSlfWCk7DQogICAgfQ0KDQogICAgICBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nk
ZWNsIHRhbmhsKCAgbG9uZyBkb3VibGUgX1gpDQogICAgew0KICAgICAgICByZXR1cm4gdGFuaCgo
ZG91YmxlKV9YKTsNCiAgICB9DQoNCiAgICAgIF9faW5saW5lIGxvbmcgZG91YmxlIF9fY2RlY2wg
dGFubCggIGxvbmcgZG91YmxlIF9YKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHRhbigoZG91Ymxl
KV9YKTsNCiAgICB9DQoNCiAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBf
X2NkZWNsIHRnYW1tYWwoICBsb25nIGRvdWJsZSBfWCk7DQogICAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgbG9uZyBkb3VibGUgX19jZGVjbCB0cnVuY2woICBsb25nIGRvdWJsZSBfWCk7DQoNCiAg
ICANCg0KDQoNCiNsaW5lIDk2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoNCg0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KICAg
ICAgICANCiAgICAgICAgICAgIGV4dGVybiBkb3VibGUgSFVHRTsNCiAgICAgICAgDQoNCiNsaW5l
IDk3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoNCiAgICAgICAgX19kZWNsc3Bl
YyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQu
IEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9q
MCIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKSAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBkb3VibGUgX19jZGVjbCBqMCggIGRvdWJsZSBfWCk7DQogICAgICAgIF9fZGVjbHNwZWMo
ZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJ
bnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfajEi
ICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgZG91YmxlIF9fY2RlY2wgajEoICBkb3VibGUgX1gpOw0KICAgICAgICBfX2RlY2xzcGVjKGRl
cHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5z
dGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX2puIiAi
LiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGRvdWJsZSBfX2NkZWNsIGpuKCAgaW50IF9YLCAgIGRvdWJsZSBfWSk7DQogICAgICAgIF9fZGVj
bHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNh
dGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAi
ICJfeTAiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkgICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgZG91YmxlIF9fY2RlY2wgeTAoICBkb3VibGUgX1gpOw0KICAgICAgICBfX2RlY2xz
cGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRl
ZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAi
X3kxIiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGRvdWJsZSBfX2NkZWNsIHkxKCAgZG91YmxlIF9YKTsNCiAgICAgICAgX19kZWNsc3Bl
YyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQu
IEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl95
biIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKSAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBkb3VibGUgX19jZGVjbCB5biggIGludCBfWCwgICBkb3VibGUgX1kpOw0KICAgICNsaW5l
IDk4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoNCiNsaW5lIDk4OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF9tYXRoLmgiDQoNCn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQojcHJh
Z21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDk5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYXRo
LmgiDQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcbWF0aC5oIg0KDQoNCg0KDQojbGluZSAxMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjc3RkbGli
Ig0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X21hbGxvYy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1
c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0
ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNo
LCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxjb3JlY3J0X21hbGxvYy5oIg0KDQogICAgIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9f
ZGVjbHNwZWMoYWxsb2NhdG9yKSBfX2RlY2xzcGVjKHJlc3RyaWN0KQ0Kdm9pZCogX19jZGVjbCBf
Y2FsbG9jX2Jhc2UoDQogICAgICBzaXplX3QgX0NvdW50LA0KICAgICAgc2l6ZV90IF9TaXplDQog
ICAgKTsNCg0KICAgICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSAgX19kZWNsc3BlYyhhbGxvY2F0
b3IpIF9fZGVjbHNwZWMocmVzdHJpY3QpIA0Kdm9pZCogX19jZGVjbCBjYWxsb2MoDQogICAgICAg
c2l6ZV90IF9Db3VudCwNCiAgICAgICBzaXplX3QgX1NpemUNCiAgICApOw0KDQogDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2NhbGxuZXdoKA0KICAgICAgc2l6ZV90IF9TaXpl
DQogICAgKTsNCg0KICAgICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVjKGFsbG9j
YXRvcikgDQp2b2lkKiBfX2NkZWNsIF9leHBhbmQoDQogICAgICAgICAgICAgICAgdm9pZCogIF9C
bG9jaywNCiAgICAgICBzaXplX3QgX1NpemUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCnZvaWQgX19jZGVjbCBfZnJlZV9iYXNlKA0KICAgICAgICB2b2lkKiBfQmxvY2sNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgDQp2b2lkIF9fY2RlY2wgZnJlZSgNCiAgICAgICAg
dm9pZCogX0Jsb2NrDQogICAgKTsNCg0KICAgICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2Rl
Y2xzcGVjKGFsbG9jYXRvcikgX19kZWNsc3BlYyhyZXN0cmljdCkNCnZvaWQqIF9fY2RlY2wgX21h
bGxvY19iYXNlKA0KICAgICAgc2l6ZV90IF9TaXplDQogICAgKTsNCg0KICAgICANCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVjKGFsbG9jYXRvcikgIF9fZGVjbHNwZWMocmVzdHJpY3Qp
IA0Kdm9pZCogX19jZGVjbCBtYWxsb2MoDQogICAgICAgc2l6ZV90IF9TaXplDQogICAgKTsNCg0K
IA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpzaXplX3QgX19jZGVjbCBfbXNpemVfYmFzZSgNCiAg
ICAgIHZvaWQqIF9CbG9jaw0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSANCnNp
emVfdCBfX2NkZWNsIF9tc2l6ZSgNCiAgICAgIHZvaWQqIF9CbG9jaw0KICAgICk7DQoNCiAgICAg
ICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVjKGFsbG9jYXRvcikgX19kZWNsc3Bl
YyhyZXN0cmljdCkNCnZvaWQqIF9fY2RlY2wgX3JlYWxsb2NfYmFzZSgNCiAgICAgICAgIHZvaWQq
ICBfQmxvY2ssDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX1NpemUN
CiAgICApOw0KDQogICAgICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhhbGxv
Y2F0b3IpIF9fZGVjbHNwZWMocmVzdHJpY3QpIA0Kdm9pZCogX19jZGVjbCByZWFsbG9jKA0KICAg
ICAgICB2b2lkKiAgX0Jsb2NrLA0KICAgICAgICAgICAgICBzaXplX3QgX1NpemUNCiAgICApOw0K
DQogICAgICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhhbGxvY2F0b3IpIF9f
ZGVjbHNwZWMocmVzdHJpY3QpDQp2b2lkKiBfX2NkZWNsIF9yZWNhbGxvY19iYXNlKA0KICAgICAg
ICB2b2lkKiAgX0Jsb2NrLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X0NvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX1NpemUNCiAg
ICApOw0KDQogICAgICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhhbGxvY2F0
b3IpIF9fZGVjbHNwZWMocmVzdHJpY3QpDQp2b2lkKiBfX2NkZWNsIF9yZWNhbGxvYygNCiAgICAg
ICAgdm9pZCogIF9CbG9jaywNCiAgICAgICAgICAgICAgc2l6ZV90IF9Db3VudCwNCiAgICAgICAg
ICAgICAgc2l6ZV90IF9TaXplDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
IF9fY2RlY2wgX2FsaWduZWRfZnJlZSgNCiAgICAgICAgdm9pZCogX0Jsb2NrDQogICAgKTsNCg0K
ICAgICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVjKGFsbG9jYXRvcikgX19kZWNs
c3BlYyhyZXN0cmljdCkNCnZvaWQqIF9fY2RlY2wgX2FsaWduZWRfbWFsbG9jKA0KICAgICAgIHNp
emVfdCBfU2l6ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX0FsaWdubWVudA0K
ICAgICk7DQoNCiAgICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhhbGxvY2F0
b3IpIF9fZGVjbHNwZWMocmVzdHJpY3QpDQp2b2lkKiBfX2NkZWNsIF9hbGlnbmVkX29mZnNldF9t
YWxsb2MoDQogICAgICAgc2l6ZV90IF9TaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfQWxpZ25tZW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfT2Zmc2V0
DQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpzaXplX3QgX19jZGVjbCBfYWxp
Z25lZF9tc2l6ZSgNCiAgICAgIHZvaWQqICBfQmxvY2ssDQogICAgICAgICAgICAgICBzaXplX3Qg
X0FsaWdubWVudCwNCiAgICAgICAgICAgICAgIHNpemVfdCBfT2Zmc2V0DQogICAgKTsNCg0KICAg
ICAgIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSBfX2RlY2xz
cGVjKHJlc3RyaWN0KQ0Kdm9pZCogX19jZGVjbCBfYWxpZ25lZF9vZmZzZXRfcmVhbGxvYygNCiAg
ICAgICAgdm9pZCogIF9CbG9jaywNCiAgICAgICAgICAgICAgc2l6ZV90IF9TaXplLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX0FsaWdubWVudCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9PZmZzZXQNCiAgICApOw0KDQogICAgICAgDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhhbGxvY2F0b3IpIF9fZGVjbHNwZWMocmVz
dHJpY3QpDQp2b2lkKiBfX2NkZWNsIF9hbGlnbmVkX29mZnNldF9yZWNhbGxvYygNCiAgICAgICAg
dm9pZCogIF9CbG9jaywNCiAgICAgICAgICAgICAgc2l6ZV90IF9Db3VudCwNCiAgICAgICAgICAg
ICAgc2l6ZV90IF9TaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X0FsaWdubWVudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9PZmZz
ZXQNCiAgICApOw0KDQogICAgICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhh
bGxvY2F0b3IpIF9fZGVjbHNwZWMocmVzdHJpY3QpDQp2b2lkKiBfX2NkZWNsIF9hbGlnbmVkX3Jl
YWxsb2MoDQogICAgICAgIHZvaWQqICBfQmxvY2ssDQogICAgICAgICAgICAgIHNpemVfdCBfU2l6
ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9BbGlnbm1lbnQNCiAg
ICApOw0KDQogICAgICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhhbGxvY2F0
b3IpIF9fZGVjbHNwZWMocmVzdHJpY3QpDQp2b2lkKiBfX2NkZWNsIF9hbGlnbmVkX3JlY2FsbG9j
KA0KICAgICAgICB2b2lkKiAgX0Jsb2NrLA0KICAgICAgICAgICAgICBzaXplX3QgX0NvdW50LA0K
ICAgICAgICAgICAgICBzaXplX3QgX1NpemUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfQWxpZ25tZW50DQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tYWxsb2MuaCINCg0K
DQoNCn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5l
IDE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNv
cmVjcnRfc2VhcmNoLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzI0ICA0
NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2IDI4NzI3ICkNCg0K
DQpfX3ByYWdtYShwYWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQogICAgdHlwZWRlZiBp
bnQgKF9fY2RlY2wqIF9Db3JlQ3J0U2VjdXJlU2VhcmNoU29ydENvbXBhcmVGdW5jdGlvbikodm9p
ZCosIHZvaWQgY29uc3QqLCB2b2lkIGNvbnN0Kik7DQogICAgdHlwZWRlZiBpbnQgKF9fY2RlY2wq
IF9Db3JlQ3J0Tm9uU2VjdXJlU2VhcmNoU29ydENvbXBhcmVGdW5jdGlvbikodm9pZCBjb25zdCos
IHZvaWQgY29uc3QqKTsNCg0KDQoNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCogX19jZGVjbCBic2VhcmNoX3MoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgY29uc3QqIF9LZXksDQogICAgICAgICAgdm9p
ZCBjb25zdCogX0Jhc2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJzaXplX3QgICAgIF9OdW1PZkVsZW1lbnRzLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc2l6ZV90ICAgICBf
U2l6ZU9mRWxlbWVudHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvcmVDcnRTZWN1
cmVTZWFyY2hTb3J0Q29tcGFyZUZ1bmN0aW9uIF9Db21wYXJlRnVuY3Rpb24sDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgX0Nv
bnRleHQNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fY2Rl
Y2wgcXNvcnRfcygNCiAgICAgICAgICB2b2lkKiAgIF9CYXNlLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzaXplX3QgX051bU9m
RWxlbWVudHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnNpemVfdCBfU2l6ZU9mRWxlbWVudHMsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9Db3JlQ3J0U2VjdXJlU2VhcmNoU29ydENvbXBhcmVGdW5jdGlvbiBfQ29t
cGFyZUZ1bmN0aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCogICBfQ29udGV4dA0KICAgICAgICApOw0KDQojbGluZSA0OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydF9zZWFyY2guaCINCg0KDQoNCiANCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkKiBfX2NkZWNsIGJzZWFyY2goDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCBjb25zdCogX0tleSwNCiAgICAgIHZvaWQg
Y29uc3QqIF9CYXNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAgICAgIF9OdW1PZkVsZW1lbnRzLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9TaXplT2ZFbGVt
ZW50cywNCiAgICAgICAgICAgICAgICAgICAgIF9Db3JlQ3J0Tm9uU2VjdXJlU2VhcmNoU29ydENv
bXBhcmVGdW5jdGlvbiBfQ29tcGFyZUZ1bmN0aW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIHZvaWQgX19jZGVjbCBxc29ydCgNCiAgICAgIHZvaWQqICBfQmFzZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
TnVtT2ZFbGVtZW50cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfU2l6ZU9mRWxlbWVudHMsDQogICAgICAgICAgICAgICAg
ICAgICBfQ29yZUNydE5vblNlY3VyZVNlYXJjaFNvcnRDb21wYXJlRnVuY3Rpb24gX0NvbXBhcmVG
dW5jdGlvbg0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkKiBfX2NkZWNs
IF9sZmluZF9zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgY29uc3QqICAgX0tleSwNCiAgICAgIHZvaWQgY29uc3QqICAgX0Jhc2Us
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50KiBfTnVtT2ZFbGVtZW50cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIF9TaXplT2ZFbGVtZW50cywN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvcmVDcnRTZWN1cmVTZWFyY2hTb3J0Q29t
cGFyZUZ1bmN0aW9uIF9Db21wYXJlRnVuY3Rpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogICAgICAgICBfQ29udGV4dA0KICAg
ICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkKiBfX2NkZWNsIF9sZmluZCgNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
IGNvbnN0KiAgIF9LZXksDQogICAgICB2b2lkIGNvbnN0KiAgIF9CYXNlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogX051
bU9mRWxlbWVudHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50ICBfU2l6ZU9mRWxlbWVudHMsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9Db3JlQ3J0Tm9uU2VjdXJlU2VhcmNoU29ydENvbXBhcmVGdW5jdGlvbiBf
Q29tcGFyZUZ1bmN0aW9uDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQq
IF9fY2RlY2wgX2xzZWFyY2hfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIGNvbnN0KiAgIF9LZXksDQogICAgICB2b2lk
KiAgICAgICAgIF9CYXNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogX051bU9mRWxlbWVudHMsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICAgICAgICBfU2l6ZU9mRWxlbWVudHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9Db3JlQ3J0U2VjdXJlU2VhcmNoU29ydENvbXBhcmVGdW5jdGlvbiBfQ29tcGFyZUZ1
bmN0aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQqICAgICAgICAgX0NvbnRleHQNCiAgICApOw0KDQogDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCogX19jZGVjbCBfbHNlYXJjaCgNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIGNvbnN0KiAg
IF9LZXksDQogICAgICB2b2lkKiAgICAgICAgIF9CYXNlLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogX051bU9m
RWxlbWVudHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICBfU2l6ZU9mRWxlbWVudHMsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9Db3JlQ3J0Tm9uU2VjdXJlU2VhcmNoU29ydENvbXBhcmVG
dW5jdGlvbiBfQ29tcGFyZUZ1bmN0aW9uDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydF9zZWFyY2guaCINCg0KDQoNCg0KDQogICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQo
IlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNl
IHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX2xmaW5kIiAiLiBTZWUg
b25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZv
aWQqIF9fY2RlY2wgbGZpbmQoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgY29uc3QqICAgX0tleSwNCiAgICAgICAgICB2b2lk
IGNvbnN0KiAgIF9CYXNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIF9OdW1PZkVsZW1lbnRzLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgIF9TaXplT2ZFbGVtZW50cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9D
b3JlQ3J0Tm9uU2VjdXJlU2VhcmNoU29ydENvbXBhcmVGdW5jdGlvbiBfQ29tcGFyZUZ1bmN0aW9u
DQogICAgICAgICk7DQoNCiAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5h
bWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIg
ImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfbHNlYXJjaCIgIi4gU2VlIG9ubGluZSBoZWxw
IGZvciBkZXRhaWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkKiBfX2NkZWNs
IGxzZWFyY2goDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCBjb25zdCogICBfS2V5LA0KICAgICAgICAgIHZvaWQqICAg
ICAgICAgX0Jhc2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBfTnVtT2ZFbGVtZW50cywNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgIF9TaXplT2ZFbGVtZW50cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0NvcmVDcnROb25TZWN1cmVTZWFyY2hTb3J0Q29tcGFyZUZ1bmN0aW9uIF9Db21w
YXJlRnVuY3Rpb24NCiAgICAgICAgKTsNCg0KI2xpbmUgMjEzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3NlYXJjaC5oIg0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2Fy
bmluZyhwb3ApIA0KI2xpbmUgMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGxpYi5oIg0KI2xpbmUgMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkbGliLmgiDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2
IDI4NzI3ICkNCg0KDQpfX3ByYWdtYShwYWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KICAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2Nk
ZWNsIF9pdG93X3MoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAg
X1ZhbHVlLA0KICAgICAgICAgIHdjaGFyX3QqIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90ICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCAgICAgIF9SYWRpeA0KICAgICAgICApOw0KDQogICAgZXh0ZXJu
ICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCBf
aXRvd19zKCAgaW50IF9WYWx1ZSwgd2NoYXJfdCAoJl9CdWZmZXIpW19TaXplXSwgICBpbnQgX1Jh
ZGl4KSB0aHJvdygpIHsgcmV0dXJuIF9pdG93X3MoX1ZhbHVlLCBfQnVmZmVyLCBfU2l6ZSwgX1Jh
ZGl4KTsgfSB9DQojbGluZSA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkbGliLmgiDQoN
CiAgICBfX2lubGluZSB3Y2hhcl90KiBfX2NkZWNsIF9faW5zZWN1cmVfX2l0b3coIGludCBfVmFs
dWUsICAgd2NoYXJfdCAqX0J1ZmZlciwgIGludCBfUmFkaXgpIHsgd2NoYXJfdCogX19jZGVjbCBf
aXRvdyggaW50IF9WYWx1ZSwgICB3Y2hhcl90ICpfQnVmZmVyLCAgaW50IF9SYWRpeCk7IHJldHVy
biBfaXRvdyhfVmFsdWUsIF9CdWZmZXIsIF9SYWRpeCk7IH0gZXh0ZXJuICJDKysiIHsgdGVtcGxh
dGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wgX2l0b3coIGludCBfVmFs
dWUsIF9UICZfQnVmZmVyLCAgaW50IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJl
X19pdG93KF9WYWx1ZSwgc3RhdGljX2Nhc3Q8d2NoYXJfdCAqPihfQnVmZmVyKSwgX1JhZGl4KTsg
fSB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgd2NoYXJfdCogX19jZGVjbCBfaXRvdygg
aW50IF9WYWx1ZSwgY29uc3QgX1QgJl9CdWZmZXIsICBpbnQgX1JhZGl4KSB0aHJvdygpIHsgcmV0
dXJuIF9faW5zZWN1cmVfX2l0b3coX1ZhbHVlLCBzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZm
ZXIpLCBfUmFkaXgpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgd2NoYXJfdCogX19jZGVjbCBfaXRv
dyggaW50IF9WYWx1ZSwgICB3Y2hhcl90ICogJl9CdWZmZXIsICBpbnQgX1JhZGl4KSB0aHJvdygp
IHsgcmV0dXJuIF9faW5zZWN1cmVfX2l0b3coX1ZhbHVlLCBfQnVmZmVyLCBfUmFkaXgpOyB9IHRl
bXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSB3Y2hhcl90KiBfX2NkZWNsIF9pdG93KCBpbnQg
X1ZhbHVlLCB3Y2hhcl90ICgmX0J1ZmZlcilbX1NpemVdLCAgaW50IF9SYWRpeCkgdGhyb3coKSB7
IHJldHVybiAoKF9pdG93X3MoX1ZhbHVlLCBfQnVmZmVyLCBfU2l6ZSwgX1JhZGl4KSkgPT0gMCA/
IF9CdWZmZXIgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wgX2l0
b3c8MT4oIGludCBfVmFsdWUsIHdjaGFyX3QgKCZfQnVmZmVyKVsxXSwgIGludCBfUmFkaXgpIHRo
cm93KCkgeyByZXR1cm4gKChfaXRvd19zKF9WYWx1ZSwgX0J1ZmZlciwgMSwgX1JhZGl4KSkgPT0g
MCA/IF9CdWZmZXIgOiAwKTsgfSB9DQojbGluZSA3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RkbGliLmgiDQoNCiAgICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5v
X3QgX19jZGVjbCBfbHRvd19zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
bmcgICAgIF9WYWx1ZSwNCiAgICAgICAgICB3Y2hhcl90KiBfQnVmZmVyLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgIF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICBfUmFkaXgNCiAgICAgICAgKTsNCg0KICAg
IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9f
Y2RlY2wgX2x0b3dfcyggIGxvbmcgX1ZhbHVlLCB3Y2hhcl90ICgmX0J1ZmZlcilbX1NpemVdLCAg
IGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gX2x0b3dfcyhfVmFsdWUsIF9CdWZmZXIsIF9T
aXplLCBfUmFkaXgpOyB9IH0NCiNsaW5lIDkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRs
aWIuaCINCg0KICAgIF9faW5saW5lIHdjaGFyX3QqIF9fY2RlY2wgX19pbnNlY3VyZV9fbHRvdygg
bG9uZyBfVmFsdWUsICAgd2NoYXJfdCAqX0J1ZmZlciwgIGludCBfUmFkaXgpIHsgd2NoYXJfdCog
X19jZGVjbCBfbHRvdyggbG9uZyBfVmFsdWUsICAgd2NoYXJfdCAqX0J1ZmZlciwgIGludCBfUmFk
aXgpOyByZXR1cm4gX2x0b3coX1ZhbHVlLCBfQnVmZmVyLCBfUmFkaXgpOyB9IGV4dGVybiAiQysr
IiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF9sdG93
KCBsb25nIF9WYWx1ZSwgX1QgJl9CdWZmZXIsICBpbnQgX1JhZGl4KSB0aHJvdygpIHsgcmV0dXJu
IF9faW5zZWN1cmVfX2x0b3coX1ZhbHVlLCBzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZmZXIp
LCBfUmFkaXgpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2Nk
ZWNsIF9sdG93KCBsb25nIF9WYWx1ZSwgY29uc3QgX1QgJl9CdWZmZXIsICBpbnQgX1JhZGl4KSB0
aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX2x0b3coX1ZhbHVlLCBzdGF0aWNfY2FzdDx3Y2hh
cl90ICo+KF9CdWZmZXIpLCBfUmFkaXgpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgd2NoYXJfdCog
X19jZGVjbCBfbHRvdyggbG9uZyBfVmFsdWUsICAgd2NoYXJfdCAqICZfQnVmZmVyLCAgaW50IF9S
YWRpeCkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX19sdG93KF9WYWx1ZSwgX0J1ZmZlciwg
X1JhZGl4KTsgfSB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgd2NoYXJfdCogX19jZGVj
bCBfbHRvdyggbG9uZyBfVmFsdWUsIHdjaGFyX3QgKCZfQnVmZmVyKVtfU2l6ZV0sICBpbnQgX1Jh
ZGl4KSB0aHJvdygpIHsgcmV0dXJuICgoX2x0b3dfcyhfVmFsdWUsIF9CdWZmZXIsIF9TaXplLCBf
UmFkaXgpKSA9PSAwID8gX0J1ZmZlciA6IDApOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgd2NoYXJf
dCogX19jZGVjbCBfbHRvdzwxPiggbG9uZyBfVmFsdWUsIHdjaGFyX3QgKCZfQnVmZmVyKVsxXSwg
IGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gKChfbHRvd19zKF9WYWx1ZSwgX0J1ZmZlciwg
MSwgX1JhZGl4KSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB9DQojbGluZSA5NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkbGliLmgiDQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgZXJybm9fdCBfX2NkZWNsIF91bHRvd19zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgX1ZhbHVlLA0KICAgICAgICAgIHdjaGFyX3QqICAgICAgX0J1
ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIF9C
dWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAg
ICAgIF9SYWRpeA0KICAgICAgICApOw0KDQogICAgZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNp
emVfdCBfU2l6ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCBfdWx0b3dfcyggIHVuc2lnbmVkIGxv
bmcgX1ZhbHVlLCB3Y2hhcl90ICgmX0J1ZmZlcilbX1NpemVdLCAgIGludCBfUmFkaXgpIHRocm93
KCkgeyByZXR1cm4gX3VsdG93X3MoX1ZhbHVlLCBfQnVmZmVyLCBfU2l6ZSwgX1JhZGl4KTsgfSB9
DQojbGluZSAxMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGxpYi5oIg0KDQogICAgX19p
bmxpbmUgd2NoYXJfdCogX19jZGVjbCBfX2luc2VjdXJlX191bHRvdyggdW5zaWduZWQgbG9uZyBf
VmFsdWUsICAgd2NoYXJfdCAqX0J1ZmZlciwgIGludCBfUmFkaXgpIHsgd2NoYXJfdCogX19jZGVj
bCBfdWx0b3coIHVuc2lnbmVkIGxvbmcgX1ZhbHVlLCAgIHdjaGFyX3QgKl9CdWZmZXIsICBpbnQg
X1JhZGl4KTsgcmV0dXJuIF91bHRvdyhfVmFsdWUsIF9CdWZmZXIsIF9SYWRpeCk7IH0gZXh0ZXJu
ICJDKysiIHsgdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wg
X3VsdG93KCB1bnNpZ25lZCBsb25nIF9WYWx1ZSwgX1QgJl9CdWZmZXIsICBpbnQgX1JhZGl4KSB0
aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3VsdG93KF9WYWx1ZSwgc3RhdGljX2Nhc3Q8d2No
YXJfdCAqPihfQnVmZmVyKSwgX1JhZGl4KTsgfSB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGlu
ZSAgd2NoYXJfdCogX19jZGVjbCBfdWx0b3coIHVuc2lnbmVkIGxvbmcgX1ZhbHVlLCBjb25zdCBf
VCAmX0J1ZmZlciwgIGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fdWx0
b3coX1ZhbHVlLCBzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZmZXIpLCBfUmFkaXgpOyB9IHRl
bXBsYXRlIDw+IGlubGluZSAgd2NoYXJfdCogX19jZGVjbCBfdWx0b3coIHVuc2lnbmVkIGxvbmcg
X1ZhbHVlLCAgIHdjaGFyX3QgKiAmX0J1ZmZlciwgIGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1
cm4gX19pbnNlY3VyZV9fdWx0b3coX1ZhbHVlLCBfQnVmZmVyLCBfUmFkaXgpOyB9IHRlbXBsYXRl
IDxzaXplX3QgX1NpemU+IGlubGluZSB3Y2hhcl90KiBfX2NkZWNsIF91bHRvdyggdW5zaWduZWQg
bG9uZyBfVmFsdWUsIHdjaGFyX3QgKCZfQnVmZmVyKVtfU2l6ZV0sICBpbnQgX1JhZGl4KSB0aHJv
dygpIHsgcmV0dXJuICgoX3VsdG93X3MoX1ZhbHVlLCBfQnVmZmVyLCBfU2l6ZSwgX1JhZGl4KSkg
PT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHdjaGFyX3QqIF9fY2Rl
Y2wgX3VsdG93PDE+KCB1bnNpZ25lZCBsb25nIF9WYWx1ZSwgd2NoYXJfdCAoJl9CdWZmZXIpWzFd
LCAgaW50IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiAoKF91bHRvd19zKF9WYWx1ZSwgX0J1ZmZl
ciwgMSwgX1JhZGl4KSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB9DQojbGluZSAxMTkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGxpYi5oIg0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBkb3VibGUgX19jZGVjbCB3Y3N0b2QoDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywNCiAgICAgICAgICAgIHdjaGFyX3QqKiAgICAgIF9F
bmRQdHINCiAgICAgICAgKTsNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91
YmxlIF9fY2RlY2wgX3djc3RvZF9sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIF9TdHJpbmcsDQogICAgICAgICAgICB3Y2hhcl90KiogICAgICBfRW5kUHRyLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBfTG9jYWxlDQogICAgICAg
ICk7DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgX19jZGVjbCB3Y3N0
b2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywN
CiAgICAgICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgICAgICAgICAgICBfUmFkaXgNCiAgICAgICAgKTsNCg0KICAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBfX2NkZWNsIF93Y3N0b2xfbCgNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICAgICAg
d2NoYXJfdCoqICAgICAgX0VuZFB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAgICAgICAgICAgIF9SYWRpeCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90
ICAgICAgX0xvY2FsZQ0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBsb25nIGxvbmcgX19jZGVjbCB3Y3N0b2xsKA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdjaGFyX3QgY29uc3QqIF9TdHJpbmcsDQogICAgICAgICAgICB3Y2hhcl90KiogICAgICBf
RW5kUHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgX1Jh
ZGl4DQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcg
bG9uZyBfX2NkZWNsIF93Y3N0b2xsX2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogX1N0cmluZywNCiAgICAgICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBfUmFkaXgsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIF9Mb2NhbGUNCiAgICAgICAg
KTsNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgbG9uZyBfX2Nk
ZWNsIHdjc3RvdWwoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCog
X1N0cmluZywNCiAgICAgICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBfUmFkaXgNCiAgICAgICAgKTsNCg0K
ICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgbG9uZyBfX2NkZWNsIF93
Y3N0b3VsX2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0
cmluZywNCiAgICAgICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBfUmFkaXgsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgIF9sb2NhbGVfdCAgICAgIF9Mb2NhbGUNCiAgICAgICAgKTsNCg0KICAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgbG9uZyBsb25nIF9fY2RlY2wgd2NzdG91
bGwoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywN
CiAgICAgICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgICAgICAgICAgICBfUmFkaXgNCiAgICAgICAgKTsNCg0KICAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgbG9uZyBsb25nIF9fY2RlY2wgX3djc3Rv
dWxsX2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmlu
ZywNCiAgICAgICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBfUmFkaXgsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgIF9sb2NhbGVfdCAgICAgIF9Mb2NhbGUNCiAgICAgICAgKTsNCg0KICAgICANCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBkb3VibGUgX19jZGVjbCB3Y3N0b2xkKA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9TdHJpbmcsDQogICAgICAgICAg
ICB3Y2hhcl90KiogICAgICBfRW5kUHRyDQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGxvbmcgZG91YmxlIF9fY2RlY2wgX3djc3RvbGRfbCgNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICAgICAg
d2NoYXJfdCoqICAgICAgX0VuZFB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2Fs
ZV90ICAgICAgX0xvY2FsZQ0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBmbG9hdCBfX2NkZWNsIHdjc3RvZigNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICAgICAgd2NoYXJfdCoqICAgICAgX0Vu
ZFB0cg0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9h
dCBfX2NkZWNsIF93Y3N0b2ZfbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90
IGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICAgICAgd2NoYXJfdCoqICAgICAgX0VuZFB0ciwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgX0xvY2FsZQ0KICAgICAgICAp
Ow0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBfd3Rv
ZigNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nDQogICAgICAgICk7DQoNCiAgICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBfX2NkZWNsIF93dG9mX2woDQogICAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICAgIF9sb2NhbGVfdCAgICAg
IF9Mb2NhbGUNCiAgICAgICAgKTsNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
aW50IF9fY2RlY2wgX3d0b2koDQogICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZw0KICAg
ICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBf
d3RvaV9sKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywNCiAgICAgICAgICBf
bG9jYWxlX3QgICAgICBfTG9jYWxlDQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGxvbmcgX19jZGVjbCBfd3RvbCgNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0
KiBfU3RyaW5nDQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGxvbmcgX19jZGVjbCBfd3RvbF9sKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmlu
ZywNCiAgICAgICAgICBfbG9jYWxlX3QgICAgICBfTG9jYWxlDQogICAgICAgICk7DQoNCiAgICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgbG9uZyBfX2NkZWNsIF93dG9sbCgNCiAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nDQogICAgICAgICk7DQoNCiAgICAgDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgbG9uZyBfX2NkZWNsIF93dG9sbF9sKA0KICAgICAg
ICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywNCiAgICAgICAgICBfbG9jYWxlX3QgICAgICBf
TG9jYWxlDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJy
bm9fdCBfX2NkZWNsIF9pNjR0b3dfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2ludDY0ICBfVmFsdWUsDQogICAgICAgICAgd2NoYXJfdCogX0J1ZmZlciwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICBfQnVmZmVyQ291bnQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgX1JhZGl4DQogICAgICAgICk7DQoN
CiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCogX19jZGVjbCBfaTY0dG93
KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgIF9WYWx1ZSwNCiAgICAgICAg
ICAgIHdjaGFyX3QqIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAg
ICAgX1JhZGl4DQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
ZXJybm9fdCBfX2NkZWNsIF91aTY0dG93X3MoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgX19pbnQ2NCBfVmFsdWUsDQogICAgICAgICAgd2NoYXJfdCogICAgICAg
ICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAg
ICAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAgICAgICAgICAgICAgX1JhZGl4DQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgd2NoYXJfdCogX19jZGVjbCBfdWk2NHRvdygNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0IF9WYWx1ZSwNCiAgICAgICAgICAgIHdjaGFyX3Qq
ICAgICAgICAgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAg
ICAgICAgIF9SYWRpeA0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBfX2ludDY0IF9fY2RlY2wgX3d0b2k2NCgNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBf
U3RyaW5nDQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9f
aW50NjQgX19jZGVjbCBfd3RvaTY0X2woDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3Ry
aW5nLA0KICAgICAgICAgIF9sb2NhbGVfdCAgICAgIF9Mb2NhbGUNCiAgICAgICAgKTsNCg0KICAg
ICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19pbnQ2NCBfX2NkZWNsIF93Y3N0b2k2NCgN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nLA0KICAg
ICAgICAgICAgd2NoYXJfdCoqICAgICAgX0VuZFB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAgICAgICAgICAgIF9SYWRpeA0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2ludDY0IF9fY2RlY2wgX3djc3RvaTY0X2woDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywNCiAgICAgICAgICAg
IHdjaGFyX3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgICAgICAgICAgICBfUmFkaXgsDQogICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVf
dCAgICAgIF9Mb2NhbGUNCiAgICAgICAgKTsNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdW5zaWduZWQgX19pbnQ2NCBfX2NkZWNsIF93Y3N0b3VpNjQoDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywNCiAgICAgICAgICAgIHdjaGFy
X3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAg
ICAgICAgICBfUmFkaXgNCiAgICAgICAgKTsNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdW5zaWduZWQgX19pbnQ2NCBfX2NkZWNsIF93Y3N0b3VpNjRfbCgNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICAgICAgd2No
YXJfdCoqICAgICAgX0VuZFB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAg
ICAgICAgICAgIF9SYWRpeCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAg
ICAgX0xvY2FsZQ0KICAgICAgICApOw0KDQogICAgDQogICAgDQoNCiAgICAgDQogICAgIA0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVjKGFsbG9jYXRvcikgd2NoYXJfdCogX19j
ZGVjbCBfd2Z1bGxwYXRoKA0KICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9CdWZmZXIsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfUGF0aCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX0J1ZmZl
ckNvdW50DQogICAgICAgICk7DQoNCiAgICANCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBlcnJub190IF9fY2RlY2wgX3dtYWtlcGF0aF9zKA0KICAgICAgICAgIHdjaGFyX3QqICAg
ICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAg
ICAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3Qg
Y29uc3QqIF9Ecml2ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0
KiBfRGlyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9GaWxl
bmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRXh0DQog
ICAgICAgICk7DQoNCiAgICBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBp
bmxpbmUgZXJybm9fdCBfX2NkZWNsIF93bWFrZXBhdGhfcyh3Y2hhcl90ICgmX0J1ZmZlcilbX1Np
emVdLCAgIHdjaGFyX3QgY29uc3QqIF9Ecml2ZSwgICB3Y2hhcl90IGNvbnN0KiBfRGlyLCAgIHdj
aGFyX3QgY29uc3QqIF9GaWxlbmFtZSwgICB3Y2hhcl90IGNvbnN0KiBfRXh0KSB0aHJvdygpIHsg
cmV0dXJuIF93bWFrZXBhdGhfcyhfQnVmZmVyLCBfU2l6ZSwgX0RyaXZlLCBfRGlyLCBfRmlsZW5h
bWUsIF9FeHQpOyB9IH0NCiNsaW5lIDM2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkbGli
LmgiDQoNCl9faW5saW5lIHZvaWQgX19jZGVjbCBfX2luc2VjdXJlX193bWFrZXBhdGgoICB3Y2hh
cl90ICpfQnVmZmVyLCAgd2NoYXJfdCBjb25zdCogX0RyaXZlLCAgd2NoYXJfdCBjb25zdCogX0Rp
ciwgIHdjaGFyX3QgY29uc3QqIF9GaWxlbmFtZSwgIHdjaGFyX3QgY29uc3QqIF9FeHQpIHsgdm9p
ZCBfX2NkZWNsIF93bWFrZXBhdGgoICB3Y2hhcl90ICpfQnVmZmVyLCAgd2NoYXJfdCBjb25zdCog
X0RyaXZlLCAgd2NoYXJfdCBjb25zdCogX0RpciwgIHdjaGFyX3QgY29uc3QqIF9GaWxlbmFtZSwg
IHdjaGFyX3QgY29uc3QqIF9FeHQpOyByZXR1cm4gX3dtYWtlcGF0aChfQnVmZmVyLCBfRHJpdmUs
IF9EaXIsIF9GaWxlbmFtZSwgX0V4dCk7IH0gZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHR5cGVu
YW1lIF9UPiBpbmxpbmUgIHZvaWQgX19jZGVjbCBfd21ha2VwYXRoKF9UICZfQnVmZmVyLCAgd2No
YXJfdCBjb25zdCogX0RyaXZlLCAgd2NoYXJfdCBjb25zdCogX0RpciwgIHdjaGFyX3QgY29uc3Qq
IF9GaWxlbmFtZSwgIHdjaGFyX3QgY29uc3QqIF9FeHQpIHRocm93KCkgeyByZXR1cm4gX19pbnNl
Y3VyZV9fd21ha2VwYXRoKHN0YXRpY19jYXN0PHdjaGFyX3QgKj4oX0J1ZmZlciksIF9Ecml2ZSwg
X0RpciwgX0ZpbGVuYW1lLCBfRXh0KTsgfSB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAg
dm9pZCBfX2NkZWNsIF93bWFrZXBhdGgoY29uc3QgX1QgJl9CdWZmZXIsICB3Y2hhcl90IGNvbnN0
KiBfRHJpdmUsICB3Y2hhcl90IGNvbnN0KiBfRGlyLCAgd2NoYXJfdCBjb25zdCogX0ZpbGVuYW1l
LCAgd2NoYXJfdCBjb25zdCogX0V4dCkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX193bWFr
ZXBhdGgoc3RhdGljX2Nhc3Q8d2NoYXJfdCAqPihfQnVmZmVyKSwgX0RyaXZlLCBfRGlyLCBfRmls
ZW5hbWUsIF9FeHQpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgdm9pZCBfX2NkZWNsIF93bWFrZXBh
dGgoICB3Y2hhcl90ICogJl9CdWZmZXIsICB3Y2hhcl90IGNvbnN0KiBfRHJpdmUsICB3Y2hhcl90
IGNvbnN0KiBfRGlyLCAgd2NoYXJfdCBjb25zdCogX0ZpbGVuYW1lLCAgd2NoYXJfdCBjb25zdCog
X0V4dCkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX193bWFrZXBhdGgoX0J1ZmZlciwgX0Ry
aXZlLCBfRGlyLCBfRmlsZW5hbWUsIF9FeHQpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlu
bGluZSB2b2lkIF9fY2RlY2wgX3dtYWtlcGF0aCh3Y2hhcl90ICgmX0J1ZmZlcilbX1NpemVdLCAg
d2NoYXJfdCBjb25zdCogX0RyaXZlLCAgd2NoYXJfdCBjb25zdCogX0RpciwgIHdjaGFyX3QgY29u
c3QqIF9GaWxlbmFtZSwgIHdjaGFyX3QgY29uc3QqIF9FeHQpIHRocm93KCkgeyAoX3dtYWtlcGF0
aF9zKF9CdWZmZXIsIF9TaXplLCBfRHJpdmUsIF9EaXIsIF9GaWxlbmFtZSwgX0V4dCkpOyByZXR1
cm47IH0gdGVtcGxhdGUgPD4gaW5saW5lICB2b2lkIF9fY2RlY2wgX3dtYWtlcGF0aDwxPih3Y2hh
cl90ICgmX0J1ZmZlcilbMV0sICB3Y2hhcl90IGNvbnN0KiBfRHJpdmUsICB3Y2hhcl90IGNvbnN0
KiBfRGlyLCAgd2NoYXJfdCBjb25zdCogX0ZpbGVuYW1lLCAgd2NoYXJfdCBjb25zdCogX0V4dCkg
dGhyb3coKSB7IChfd21ha2VwYXRoX3MoX0J1ZmZlciwgMSwgX0RyaXZlLCBfRGlyLCBfRmlsZW5h
bWUsIF9FeHQpKTsgcmV0dXJuOyB9IH0NCiNsaW5lIDM3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dF93c3RkbGliLmgiDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF93
cGVycm9yKA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9FcnJvck1lc3NhZ2UNCiAgICAgICAg
KTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fY2RlY2wgX3dzcGxp
dHBhdGgoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0Z1bGxQ
YXRoLA0KICAgICAgICAgICAgd2NoYXJfdCogICAgICAgX0RyaXZlLA0KICAgICAgICAgICAgd2No
YXJfdCogICAgICAgX0RpciwNCiAgICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9GaWxlbmFtZSwN
CiAgICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9FeHQNCiAgICAgICAgKTsNCg0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3dzcGxpdHBhdGhfcygNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0Z1bGxQYXRoLA0K
ICAgICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9Ecml2ZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBfRHJpdmVDb3VudCwNCiAgICAgICAg
ICAgICAgIHdjaGFyX3QqICAgICAgIF9EaXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX0RpckNvdW50LA0KICAgICAgICAgIHdjaGFyX3Qq
ICAgICAgIF9GaWxlbmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICAgICAgICBfRmlsZW5hbWVDb3VudCwNCiAgICAgICAgICAgICAgIHdjaGFyX3Qq
ICAgICAgIF9FeHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICAgICAgICAgX0V4dENvdW50DQogICAgICAgICk7DQoNCiAgICBleHRlcm4gIkMrKyIgeyB0
ZW1wbGF0ZSA8c2l6ZV90IF9Ecml2ZVNpemUsIHNpemVfdCBfRGlyU2l6ZSwgc2l6ZV90IF9OYW1l
U2l6ZSwgc2l6ZV90IF9FeHRTaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF93c3BsaXRwYXRo
X3MoICAgd2NoYXJfdCBjb25zdCogX1BhdGgsICAgd2NoYXJfdCAoJl9Ecml2ZSlbX0RyaXZlU2l6
ZV0sICAgd2NoYXJfdCAoJl9EaXIpW19EaXJTaXplXSwgICB3Y2hhcl90ICgmX05hbWUpW19OYW1l
U2l6ZV0sICAgd2NoYXJfdCAoJl9FeHQpW19FeHRTaXplXSApIHRocm93KCkgeyByZXR1cm4gX3dz
cGxpdHBhdGhfcyhfUGF0aCwgX0RyaXZlLCBfRHJpdmVTaXplLCBfRGlyLCBfRGlyU2l6ZSwgX05h
bWUsIF9OYW1lU2l6ZSwgX0V4dCwgX0V4dFNpemUpOyB9IH0NCiNsaW5lIDQwNCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkbGliLmgiDQoNCiAgICAgICAgDQogICAgICAgIA0KDQogICAgICAg
IA0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF93ZHVwZW52
X3MoDQogICAgICAgICAgICAgICAgd2NoYXJfdCoqICAgICAgX0J1ZmZlciwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90KiAgICAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfVmFyTmFtZQ0KICAgICAgICAgICAgKTsNCg0KICAg
ICAgICANCg0KICAgICAgICAgIA0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJf
dCogX19jZGVjbCBfd2dldGVudigNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1Zhck5h
bWUNCiAgICAgICAgICAgICk7DQoNCiAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfd2dldGVudl9zKA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QqICAgICAgICBfUmVxdWlyZWRDb3Vu
dCwNCiAgICAgICAgICAgICAgd2NoYXJfdCogICAgICAgX0J1ZmZlciwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIF9CdWZmZXJDb3VudCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBf
VmFyTmFtZQ0KICAgICAgICAgICAgKTsNCg0KICAgICAgICBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0
ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgICBlcnJub190IF9fY2RlY2wgX3dnZXRlbnZfcyggIHNp
emVfdCogX1JlcXVpcmVkQ291bnQsIHdjaGFyX3QgKCZfQnVmZmVyKVtfU2l6ZV0sICAgd2NoYXJf
dCBjb25zdCogX1Zhck5hbWUpIHRocm93KCkgeyByZXR1cm4gX3dnZXRlbnZfcyhfUmVxdWlyZWRD
b3VudCwgX0J1ZmZlciwgX1NpemUsIF9WYXJOYW1lKTsgfSB9DQojbGluZSA0MzggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfd3N0ZGxpYi5oIg0KDQogICAgICAgICANCiAgICAgICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF93cHV0ZW52KA0KICAgICAgICAgICAgICB3Y2hhcl90
IGNvbnN0KiBfRW52U3RyaW5nDQogICAgICAgICAgICApOw0KDQogICAgICAgIA0KICAgICAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF93cHV0ZW52X3MoDQogICAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIF9OYW1lLA0KICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0
KiBfVmFsdWUNCiAgICAgICAgICAgICk7DQoNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGVycm5vX3QgX19jZGVjbCBfd3NlYXJjaGVudl9zKA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0ZpbGVuYW1lLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1Zhck5hbWUsDQogICAgICAgICAgICAg
IHdjaGFyX3QqICAgICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCAgICAgICAgIF9CdWZmZXJDb3VudA0KICAgICAgICAgICAgKTsNCg0KICAg
ICAgICBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9f
dCBfX2NkZWNsIF93c2VhcmNoZW52X3MoICB3Y2hhcl90IGNvbnN0KiBfRmlsZW5hbWUsICAgd2No
YXJfdCBjb25zdCogX1Zhck5hbWUsIHdjaGFyX3QgKCZfUmVzdWx0UGF0aClbX1NpemVdKSB0aHJv
dygpIHsgcmV0dXJuIF93c2VhcmNoZW52X3MoX0ZpbGVuYW1lLCBfVmFyTmFtZSwgX1Jlc3VsdFBh
dGgsIF9TaXplKTsgfSB9DQojbGluZSA0NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGxp
Yi5oIg0KDQogICAgICAgIF9faW5saW5lIHZvaWQgX19jZGVjbCBfX2luc2VjdXJlX193c2VhcmNo
ZW52KCB3Y2hhcl90IGNvbnN0KiBfRmlsZW5hbWUsICB3Y2hhcl90IGNvbnN0KiBfVmFyTmFtZSwg
ICB3Y2hhcl90ICpfUmVzdWx0UGF0aCkgeyB2b2lkIF9fY2RlY2wgX3dzZWFyY2hlbnYoIHdjaGFy
X3QgY29uc3QqIF9GaWxlbmFtZSwgIHdjaGFyX3QgY29uc3QqIF9WYXJOYW1lLCAgIHdjaGFyX3Qg
Kl9SZXN1bHRQYXRoKTsgcmV0dXJuIF93c2VhcmNoZW52KF9GaWxlbmFtZSwgX1Zhck5hbWUsIF9S
ZXN1bHRQYXRoKTsgfSBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGlu
ZSAgdm9pZCBfX2NkZWNsIF93c2VhcmNoZW52KCB3Y2hhcl90IGNvbnN0KiBfRmlsZW5hbWUsICB3
Y2hhcl90IGNvbnN0KiBfVmFyTmFtZSwgX1QgJl9SZXN1bHRQYXRoKSB0aHJvdygpIHsgcmV0dXJu
IF9faW5zZWN1cmVfX3dzZWFyY2hlbnYoX0ZpbGVuYW1lLCBfVmFyTmFtZSwgc3RhdGljX2Nhc3Q8
d2NoYXJfdCAqPihfUmVzdWx0UGF0aCkpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5l
ICB2b2lkIF9fY2RlY2wgX3dzZWFyY2hlbnYoIHdjaGFyX3QgY29uc3QqIF9GaWxlbmFtZSwgIHdj
aGFyX3QgY29uc3QqIF9WYXJOYW1lLCBjb25zdCBfVCAmX1Jlc3VsdFBhdGgpIHRocm93KCkgeyBy
ZXR1cm4gX19pbnNlY3VyZV9fd3NlYXJjaGVudihfRmlsZW5hbWUsIF9WYXJOYW1lLCBzdGF0aWNf
Y2FzdDx3Y2hhcl90ICo+KF9SZXN1bHRQYXRoKSk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICB2b2lk
IF9fY2RlY2wgX3dzZWFyY2hlbnYoIHdjaGFyX3QgY29uc3QqIF9GaWxlbmFtZSwgIHdjaGFyX3Qg
Y29uc3QqIF9WYXJOYW1lLCAgIHdjaGFyX3QgKiAmX1Jlc3VsdFBhdGgpIHRocm93KCkgeyByZXR1
cm4gX19pbnNlY3VyZV9fd3NlYXJjaGVudihfRmlsZW5hbWUsIF9WYXJOYW1lLCBfUmVzdWx0UGF0
aCk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIHZvaWQgX19jZGVjbCBfd3NlYXJj
aGVudiggd2NoYXJfdCBjb25zdCogX0ZpbGVuYW1lLCAgd2NoYXJfdCBjb25zdCogX1Zhck5hbWUs
IHdjaGFyX3QgKCZfUmVzdWx0UGF0aClbX1NpemVdKSB0aHJvdygpIHsgKF93c2VhcmNoZW52X3Mo
X0ZpbGVuYW1lLCBfVmFyTmFtZSwgX1Jlc3VsdFBhdGgsIF9TaXplKSk7IHJldHVybjsgfSB0ZW1w
bGF0ZSA8PiBpbmxpbmUgIHZvaWQgX19jZGVjbCBfd3NlYXJjaGVudjwxPiggd2NoYXJfdCBjb25z
dCogX0ZpbGVuYW1lLCAgd2NoYXJfdCBjb25zdCogX1Zhck5hbWUsIHdjaGFyX3QgKCZfUmVzdWx0
UGF0aClbMV0pIHRocm93KCkgeyAoX3dzZWFyY2hlbnZfcyhfRmlsZW5hbWUsIF9WYXJOYW1lLCBf
UmVzdWx0UGF0aCwgMSkpOyByZXR1cm47IH0gfQ0KI2xpbmUgNDcwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxj
b3JlY3J0X3dzdGRsaWIuaCINCg0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9f
Y2RlY2wgX3dzeXN0ZW0oDQogICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Db21tYW5kDQog
ICAgICAgICAgICApOw0KDQojbGluZSA0NzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGxp
Yi5oIg0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3Ap
IA0KI2xpbmUgMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGxpYi5oIg0KI2xpbmUgMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaW1pdHMuaCINCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6ICAgNDUxNCA0ODIwICkNCg0KX19wcmFnbWEocGFjayhwdXNo
LCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCg0KDQoNCiNsaW5l
IDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxp
bWl0cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICAgICAgDQogICAgDQoNCiNsaW5lIDY4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpbWl0cy5o
Ig0KI2xpbmUgNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcbGltaXRzLmgiDQoNCg0KICAgIA0KICAgICAgICANCiAgICAjbGluZSA3NCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaW1pdHMuaCINCiNs
aW5lIDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGxpbWl0cy5oIg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkgDQojbGluZSAxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCiNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3
OTMgNDgyMCA0OTk1IDQ5OTYgMjg3MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCl9fcHJhZ21hKHBhY2so
cHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQoNCg0KDQogICAgDQojbGluZSAyOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcc3RkbGliLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCBfX2NkZWNsIF9zd2FiKA0KICAgICAgICBjaGFyKiBfQnVmMSwNCiAgICAgICAgY2hhciog
X0J1ZjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgICBfU2l6ZUluQnl0ZXMNCiAgICApOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9fZGVjbHNwZWMobm9yZXR1
cm4pIHZvaWQgX19jZGVjbCBleGl0KCAgaW50IF9Db2RlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgdm9pZCBfX2NkZWNsIF9leGl0KCAgaW50IF9Db2Rl
KTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgdm9pZCBf
X2NkZWNsIF9FeGl0KCAgaW50IF9Db2RlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19k
ZWNsc3BlYyhub3JldHVybikgdm9pZCBfX2NkZWNsIHF1aWNrX2V4aXQoICBpbnQgX0NvZGUpOw0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVjKG5vcmV0dXJuKSB2b2lkIF9fY2Rl
Y2wgYWJvcnQodm9pZCk7DQojbGluZSA2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHVuc2lnbmVkIGludCBfX2NkZWNsIF9zZXRfYWJv
cnRfYmVoYXZpb3IoDQogICAgICB1bnNpZ25lZCBpbnQgX0ZsYWdzLA0KICAgICAgdW5zaWduZWQg
aW50IF9NYXNrDQogICAgKTsNCg0KDQoNCg0KICAgIA0KDQogICAgdHlwZWRlZiBpbnQgKF9fY2Rl
Y2wqIF9vbmV4aXRfdCkodm9pZCk7DQogICAgDQoNCg0KI2xpbmUgODIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XHN0ZGxpYi5oIg0KDQoNCiAgICANCiAgICANCiNsaW5lIDg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRs
aWIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiAgICBpbnQgICAgICAgX19jZGVjbCBhdGV4aXQodm9pZCAoX19jZGVjbCopKHZvaWQp
KTsNCiAgICBfb25leGl0X3QgX19jZGVjbCBfb25leGl0KCAgX29uZXhpdF90IF9GdW5jKTsNCiNs
aW5lIDE0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCmludCBfX2NkZWNsIGF0X3F1aWNr
X2V4aXQodm9pZCAoX19jZGVjbCopKHZvaWQpKTsNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAg
ICB0eXBlZGVmIHZvaWQgKF9fY2RlY2wqIF9wdXJlY2FsbF9oYW5kbGVyKSh2b2lkKTsNCg0KICAg
IA0KICAgIHR5cGVkZWYgdm9pZCAoX19jZGVjbCogX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIp
KA0KICAgICAgICB3Y2hhcl90IGNvbnN0KiwNCiAgICAgICAgd2NoYXJfdCBjb25zdCosDQogICAg
ICAgIHdjaGFyX3QgY29uc3QqLA0KICAgICAgICB1bnNpZ25lZCBpbnQsDQogICAgICAgIHVpbnRw
dHJfdA0KICAgICAgICApOw0KDQogICAgDQogICAgIF9wdXJlY2FsbF9oYW5kbGVyIF9fY2RlY2wg
X3NldF9wdXJlY2FsbF9oYW5kbGVyKA0KICAgICAgICAgIF9wdXJlY2FsbF9oYW5kbGVyIF9IYW5k
bGVyDQogICAgICAgICk7DQoNCiAgICAgX3B1cmVjYWxsX2hhbmRsZXIgX19jZGVjbCBfZ2V0X3B1
cmVjYWxsX2hhbmRsZXIodm9pZCk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgX19jZGVjbCBfc2V0X2ludmFsaWRfcGFyYW1ldGVy
X2hhbmRsZXIoDQogICAgICAgICAgX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgX0hhbmRsZXIN
CiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfaW52YWxpZF9wYXJhbWV0
ZXJfaGFuZGxlciBfX2NkZWNsIF9nZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcih2b2lkKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBf
X2NkZWNsIF9zZXRfdGhyZWFkX2xvY2FsX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoDQogICAg
ICAgICAgX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgX0hhbmRsZXINCiAgICAgICAgKTsNCg0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBfX2Nk
ZWNsIF9nZXRfdGhyZWFkX2xvY2FsX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIodm9pZCk7DQoj
bGluZSAxOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGxpYi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3NldF9lcnJvcl9tb2RlKCAgaW50
IF9Nb2RlKTsNCg0KDQoNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQqIF9fY2RlY2wg
X2Vycm5vKHZvaWQpOw0KICAgIA0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3Qg
X19jZGVjbCBfc2V0X2Vycm5vKCAgaW50IF9WYWx1ZSk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGVycm5vX3QgX19jZGVjbCBfZ2V0X2Vycm5vKCAgaW50KiBfVmFsdWUpOw0KDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIHVuc2lnbmVkIGxvbmcqIF9fY2RlY2wgX19kb3NlcnJubyh2b2lk
KTsNCiAgICANCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3Nl
dF9kb3NlcnJubyggIHVuc2lnbmVkIGxvbmcgX1ZhbHVlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgZXJybm9fdCBfX2NkZWNsIF9nZXRfZG9zZXJybm8oICB1bnNpZ25lZCBsb25nICogX1Zh
bHVlKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSAgY2hhcioqIF9fY2RlY2wg
X19zeXNfZXJybGlzdCh2b2lkKTsNCiAgICANCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSAg
aW50ICogX19jZGVjbCBfX3N5c19uZXJyKHZvaWQpOw0KICAgIA0KDQogICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIHZvaWQgX19jZGVjbCBwZXJyb3IoICBjaGFyIGNvbnN0KiBfRXJyTXNnKTsNCiNs
aW5lIDIzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0KDQoNCiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgY2hhcioqICAgIF9fY2RlY2wgX19wX19wZ21wdHIgKHZvaWQpOw0KIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSB3Y2hhcl90KiogX19jZGVjbCBfX3BfX3dwZ21wdHIodm9pZCk7DQogX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCogICAgICBfX2NkZWNsIF9fcF9fZm1vZGUgICh2b2lkKTsN
Cg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQojbGluZSAyNTcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGxpYi5oIg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNs
IF9nZXRfcGdtcHRyICggIGNoYXIqKiAgICBfVmFsdWUpOw0KDQogDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgZXJybm9fdCBfX2NkZWNsIF9nZXRfd3BnbXB0ciggIHdjaGFyX3QqKiBfVmFsdWUpOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9zZXRfZm1vZGUgICggICAg
ICAgICAgICAgICBpbnQgICAgICAgX01vZGUgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVy
cm5vX3QgX19jZGVjbCBfZ2V0X2Ztb2RlICAoICAgICAgICAgICAgICBpbnQqICAgICAgX1BNb2Rl
KTsNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfZGl2X3QNCnsNCiAgICBpbnQgcXVv
dDsNCiAgICBpbnQgcmVtOw0KfSBkaXZfdDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX2xkaXZfdA0Kew0K
ICAgIGxvbmcgcXVvdDsNCiAgICBsb25nIHJlbTsNCn0gbGRpdl90Ow0KDQp0eXBlZGVmIHN0cnVj
dCBfbGxkaXZfdA0Kew0KICAgIGxvbmcgbG9uZyBxdW90Ow0KICAgIGxvbmcgbG9uZyByZW07DQp9
IGxsZGl2X3Q7DQoNCiAgaW50ICAgICAgIF9fY2RlY2wgYWJzICAgKCAgaW50ICAgICAgIF9OdW1i
ZXIpOw0KICBsb25nICAgICAgX19jZGVjbCBsYWJzICAoICBsb25nICAgICAgX051bWJlcik7DQog
IGxvbmcgbG9uZyBfX2NkZWNsIGxsYWJzICggIGxvbmcgbG9uZyBfTnVtYmVyKTsNCiAgX19pbnQ2
NCAgIF9fY2RlY2wgX2FiczY0KCAgX19pbnQ2NCAgIF9OdW1iZXIpOw0KDQogIHVuc2lnbmVkIHNo
b3J0ICAgX19jZGVjbCBfYnl0ZXN3YXBfdXNob3J0KCAgdW5zaWduZWQgc2hvcnQgICBfTnVtYmVy
KTsNCiAgdW5zaWduZWQgbG9uZyAgICBfX2NkZWNsIF9ieXRlc3dhcF91bG9uZyAoICB1bnNpZ25l
ZCBsb25nICAgIF9OdW1iZXIpOw0KICB1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX2J5dGVzd2Fw
X3VpbnQ2NCggIHVuc2lnbmVkIF9faW50NjQgX051bWJlcik7DQoNCiAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGRpdl90ICAgX19jZGVjbCBkaXYgICggIGludCAgICAgICBfTnVtZXJhdG9yLCAgIGlu
dCAgICAgICBfRGVub21pbmF0b3IpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbGRpdl90ICBf
X2NkZWNsIGxkaXYgKCAgbG9uZyAgICAgIF9OdW1lcmF0b3IsICAgbG9uZyAgICAgIF9EZW5vbWlu
YXRvcik7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsbGRpdl90IF9fY2RlY2wgbGxkaXYoICBs
b25nIGxvbmcgX051bWVyYXRvciwgICBsb25nIGxvbmcgX0Rlbm9taW5hdG9yKTsNCg0KDQoNCiNw
cmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDY1NDApDQoNCnVu
c2lnbmVkIGludCBfX2NkZWNsIF9yb3RsKA0KICAgICAgdW5zaWduZWQgaW50IF9WYWx1ZSwNCiAg
ICAgIGludCAgICAgICAgICBfU2hpZnQNCiAgICApOw0KDQogDQp1bnNpZ25lZCBsb25nIF9fY2Rl
Y2wgX2xyb3RsKA0KICAgICAgdW5zaWduZWQgbG9uZyBfVmFsdWUsDQogICAgICBpbnQgICAgICAg
ICAgIF9TaGlmdA0KICAgICk7DQoNCnVuc2lnbmVkIF9faW50NjQgX19jZGVjbCBfcm90bDY0KA0K
ICAgICAgdW5zaWduZWQgX19pbnQ2NCBfVmFsdWUsDQogICAgICBpbnQgICAgICAgICAgICAgIF9T
aGlmdA0KICAgICk7DQoNCnVuc2lnbmVkIGludCBfX2NkZWNsIF9yb3RyKA0KICAgICAgdW5zaWdu
ZWQgaW50IF9WYWx1ZSwNCiAgICAgIGludCAgICAgICAgICBfU2hpZnQNCiAgICApOw0KDQogDQp1
bnNpZ25lZCBsb25nIF9fY2RlY2wgX2xyb3RyKA0KICAgICAgdW5zaWduZWQgbG9uZyBfVmFsdWUs
DQogICAgICBpbnQgICAgICAgICAgIF9TaGlmdA0KICAgICk7DQoNCnVuc2lnbmVkIF9faW50NjQg
X19jZGVjbCBfcm90cjY0KA0KICAgICAgdW5zaWduZWQgX19pbnQ2NCBfVmFsdWUsDQogICAgICBp
bnQgICAgICAgICAgICAgIF9TaGlmdA0KICAgICk7DQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQoN
Cg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIHNyYW5kKCAgdW5z
aWduZWQgaW50IF9TZWVkKTsNCg0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wg
cmFuZCh2b2lkKTsNCg0KDQoNCiNsaW5lIDM1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoN
Cg0KDQoNCmV4dGVybiAiQysrIg0Kew0KICAgIGlubGluZSBsb25nIGFicyhsb25nIGNvbnN0IF9Y
KSB0aHJvdygpDQogICAgew0KICAgICAgICByZXR1cm4gbGFicyhfWCk7DQogICAgfQ0KDQogICAg
aW5saW5lIGxvbmcgbG9uZyBhYnMobG9uZyBsb25nIGNvbnN0IF9YKSB0aHJvdygpDQogICAgew0K
ICAgICAgICByZXR1cm4gbGxhYnMoX1gpOw0KICAgIH0NCg0KICAgIGlubGluZSBsZGl2X3QgZGl2
KGxvbmcgY29uc3QgX0ExLCBsb25nIGNvbnN0IF9BMikgdGhyb3coKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGxkaXYoX0ExLCBfQTIpOw0KICAgIH0NCg0KICAgIGlubGluZSBsbGRpdl90IGRpdihs
b25nIGxvbmcgY29uc3QgX0ExLCBsb25nIGxvbmcgY29uc3QgX0EyKSB0aHJvdygpDQogICAgew0K
ICAgICAgICByZXR1cm4gbGxkaXYoX0ExLCBfQTIpOw0KICAgIH0NCn0NCiNsaW5lIDM4NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAjcHJhZ21hIHBh
Y2socHVzaCwgNCkNCiAgICB0eXBlZGVmIHN0cnVjdA0KICAgIHsNCiAgICAgICAgdW5zaWduZWQg
Y2hhciBsZFsxMF07DQogICAgfSBfTERPVUJMRTsNCiAgICAjcHJhZ21hIHBhY2socG9wKQ0KDQog
ICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRs
aWIuaCINCg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgICBkb3VibGUgeDsNCn0gX0NSVF9ET1VCTEU7
DQoNCnR5cGVkZWYgc3RydWN0DQp7DQogICAgZmxvYXQgZjsNCn0gX0NSVF9GTE9BVDsNCg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdA0Kew0KICAgIGxvbmcgZG91YmxlIHg7DQp9IF9MT05HRE9VQkxF
Ow0KDQoNCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDQpDQp0eXBlZGVmIHN0cnVjdA0Kew0KICAgIHVu
c2lnbmVkIGNoYXIgbGQxMlsxMl07DQp9IF9MREJMMTI7DQojcHJhZ21hIHBhY2socG9wKQ0KDQoN
Cg0KDQoNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBk
b3VibGUgICAgX19jZGVjbCBhdG9mICAgKCAgY2hhciBjb25zdCogX1N0cmluZyk7DQogICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50ICAgICAgIF9fY2RlY2wgYXRvaSAgICggIGNoYXIgY29uc3Qq
IF9TdHJpbmcpOw0KICAgICAgICAgICAgICAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxv
bmcgICAgICBfX2NkZWNsIGF0b2wgICAoICBjaGFyIGNvbnN0KiBfU3RyaW5nKTsNCiAgICAgICAg
ICAgICAgICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGxvbmcgX19jZGVjbCBhdG9s
bCAgKCAgY2hhciBjb25zdCogX1N0cmluZyk7DQogICAgICAgICAgICAgICAgICAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgX19pbnQ2NCAgIF9fY2RlY2wgX2F0b2k2NCggIGNoYXIgY29uc3QqIF9T
dHJpbmcpOw0KDQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgICAgX19jZGVjbCBfYXRv
Zl9sICAoICBjaGFyIGNvbnN0KiBfU3RyaW5nLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCiAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgICAgICBfX2NkZWNsIF9hdG9pX2wgICggIGNoYXIgY29u
c3QqIF9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgbG9uZyAgICAgIF9fY2RlY2wgX2F0b2xfbCAgKCAgY2hhciBjb25zdCogX1N0cmluZywgICBf
bG9jYWxlX3QgX0xvY2FsZSk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGxvbmcgX19j
ZGVjbCBfYXRvbGxfbCAoICBjaGFyIGNvbnN0KiBfU3RyaW5nLCAgIF9sb2NhbGVfdCBfTG9jYWxl
KTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9faW50NjQgICBfX2NkZWNsIF9hdG9pNjRfbCgg
IGNoYXIgY29uc3QqIF9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0KDQogIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfYXRvZmx0ICggIF9DUlRfRkxPQVQqICBfUmVzdWx0
LCAgIGNoYXIgY29uc3QqIF9TdHJpbmcpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9f
Y2RlY2wgX2F0b2RibCAoICBfQ1JUX0RPVUJMRSogX1Jlc3VsdCwgICBjaGFyKiAgICAgICBfU3Ry
aW5nKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9hdG9sZGJsKCAgX0xE
T1VCTEUqICAgIF9SZXN1bHQsICAgY2hhciogICAgICAgX1N0cmluZyk7DQoNCiANCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfYXRvZmx0X2woDQogICAgICAgICBfQ1JUX0ZMT0FU
KiBfUmVzdWx0LA0KICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAgICAgX2xvY2FsZV90
ICAgX0xvY2FsZQ0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVj
bCBfYXRvZGJsX2woDQogICAgICAgICBfQ1JUX0RPVUJMRSogX1Jlc3VsdCwNCiAgICAgICAgY2hh
ciogICAgICAgIF9TdHJpbmcsDQogICAgICBfbG9jYWxlX3QgICAgX0xvY2FsZQ0KICAgICk7DQoN
Cg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9hdG9sZGJsX2woDQogICAg
ICAgICBfTERPVUJMRSogX1Jlc3VsdCwNCiAgICAgICAgY2hhciogICAgIF9TdHJpbmcsDQogICAg
ICBfbG9jYWxlX3QgX0xvY2FsZQ0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBm
bG9hdCBfX2NkZWNsIHN0cnRvZigNCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qq
IF9TdHJpbmcsDQogICAgICAgIGNoYXIqKiAgICAgIF9FbmRQdHINCiAgICApOw0KDQogDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgZmxvYXQgX19jZGVjbCBfc3RydG9mX2woDQogICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICBjaGFyKiogICAgICBfRW5k
UHRyLA0KICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIF9Mb2NhbGUNCiAgICApOw0K
DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIF9fY2RlY2wgc3RydG9kKA0KICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX1N0cmluZywNCiAgICAgICAgY2hhcioqICAg
ICAgX0VuZFB0cg0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19j
ZGVjbCBfc3RydG9kX2woDQogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3Ry
aW5nLA0KICAgICAgICBjaGFyKiogICAgICBfRW5kUHRyLA0KICAgICAgICAgICAgICAgICAgICAg
IF9sb2NhbGVfdCAgIF9Mb2NhbGUNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
bG9uZyBkb3VibGUgX19jZGVjbCBzdHJ0b2xkKA0KICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciBjb25zdCogX1N0cmluZywNCiAgICAgICAgY2hhcioqICAgICAgX0VuZFB0cg0KICAgICk7DQoN
CiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIGRvdWJsZSBfX2NkZWNsIF9zdHJ0b2xkX2wo
DQogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICBj
aGFyKiogICAgICBfRW5kUHRyLA0KICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIF9M
b2NhbGUNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBfX2NkZWNsIHN0
cnRvbCgNCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcsDQogICAg
ICAgIGNoYXIqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAg
ICAgICAgIF9SYWRpeA0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBsb25nIF9f
Y2RlY2wgX3N0cnRvbF9sKA0KICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX1N0
cmluZywNCiAgICAgICAgY2hhcioqICAgICAgX0VuZFB0ciwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ICAgICAgICAgX1JhZGl4LA0KICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVf
dCAgIF9Mb2NhbGUNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBsb25n
IF9fY2RlY2wgc3RydG9sbCgNCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9T
dHJpbmcsDQogICAgICAgIGNoYXIqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAgICAgICAgIF9SYWRpeA0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBsb25nIGxvbmcgX19jZGVjbCBfc3RydG9sbF9sKA0KICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciBjb25zdCogX1N0cmluZywNCiAgICAgICAgY2hhcioqICAgICAgX0VuZFB0ciwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgX1JhZGl4LA0KICAgICAgICAgICAg
ICAgICAgICAgIF9sb2NhbGVfdCAgIF9Mb2NhbGUNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgdW5zaWduZWQgbG9uZyBfX2NkZWNsIHN0cnRvdWwoDQogICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICBjaGFyKiogICAgICBfRW5kUHRy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICBfUmFkaXgNCiAgICApOw0K
DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgbG9uZyBfX2NkZWNsIF9zdHJ0b3Vs
X2woDQogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAgICAg
ICBjaGFyKiogICAgICBfRW5kUHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAg
ICAgICBfUmFkaXgsDQogICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgX0xvY2FsZQ0K
ICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB1bnNpZ25lZCBsb25nIGxvbmcgX19j
ZGVjbCBzdHJ0b3VsbCgNCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9TdHJp
bmcsDQogICAgICAgIGNoYXIqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAgICAgICAgIF9SYWRpeA0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB1bnNpZ25lZCBsb25nIGxvbmcgX19jZGVjbCBfc3RydG91bGxfbCgNCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcsDQogICAgICAgIGNoYXIqKiAgICAgIF9FbmRQ
dHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIF9SYWRpeCwNCiAgICAg
ICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBfTG9jYWxlDQogICAgKTsNCg0KIA0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIF9faW50NjQgX19jZGVjbCBfc3RydG9pNjQoDQogICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICBjaGFyKiogICAgICBfRW5k
UHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICBfUmFkaXgNCiAgICAp
Ow0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19pbnQ2NCBfX2NkZWNsIF9zdHJ0b2k2NF9s
KA0KICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX1N0cmluZywNCiAgICAgICAg
Y2hhcioqICAgICAgX0VuZFB0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAg
ICAgX1JhZGl4LA0KICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIF9Mb2NhbGUNCiAg
ICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgX19pbnQ2NCBfX2NkZWNs
IF9zdHJ0b3VpNjQoDQogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5n
LA0KICAgICAgICBjaGFyKiogICAgICBfRW5kUHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgICAgICAgICBfUmFkaXgNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dW5zaWduZWQgX19pbnQ2NCBfX2NkZWNsIF9zdHJ0b3VpNjRfbCgNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcsDQogICAgICAgIGNoYXIqKiAgICAgIF9FbmRQdHIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIF9SYWRpeCwNCiAgICAgICAg
ICAgICAgICAgICAgICBfbG9jYWxlX3QgICBfTG9jYWxlDQogICAgKTsNCg0KDQoNCg0KDQoNCg0K
DQogDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX2l0b2FfcygNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICBfVmFsdWUsDQogICAgICBjaGFyKiAg
X0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfQnVmZmVyQ291
bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgX1JhZGl4DQogICAgKTsN
Cg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lICAgZXJybm9f
dCBfX2NkZWNsIF9pdG9hX3MoICBpbnQgX1ZhbHVlLCBjaGFyICgmX0J1ZmZlcilbX1NpemVdLCAg
IGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gX2l0b2FfcyhfVmFsdWUsIF9CdWZmZXIsIF9T
aXplLCBfUmFkaXgpOyB9IH0NCiNsaW5lIDY0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoN
Cl9faW5saW5lIGNoYXIqIF9fY2RlY2wgX19pbnNlY3VyZV9faXRvYSggaW50IF9WYWx1ZSwgICBj
aGFyICpfQnVmZmVyLCAgaW50IF9SYWRpeCkgeyBjaGFyKiBfX2NkZWNsIF9pdG9hKCBpbnQgX1Zh
bHVlLCAgIGNoYXIgKl9CdWZmZXIsICBpbnQgX1JhZGl4KTsgcmV0dXJuIF9pdG9hKF9WYWx1ZSwg
X0J1ZmZlciwgX1JhZGl4KTsgfSBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+
IGlubGluZSAgY2hhciogX19jZGVjbCBfaXRvYSggaW50IF9WYWx1ZSwgX1QgJl9CdWZmZXIsICBp
bnQgX1JhZGl4KSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX2l0b2EoX1ZhbHVlLCBzdGF0
aWNfY2FzdDxjaGFyICo+KF9CdWZmZXIpLCBfUmFkaXgpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBf
VD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF9pdG9hKCBpbnQgX1ZhbHVlLCBjb25zdCBfVCAmX0J1
ZmZlciwgIGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9faXRvYShfVmFs
dWUsIHN0YXRpY19jYXN0PGNoYXIgKj4oX0J1ZmZlciksIF9SYWRpeCk7IH0gdGVtcGxhdGUgPD4g
aW5saW5lICBjaGFyKiBfX2NkZWNsIF9pdG9hKCBpbnQgX1ZhbHVlLCAgIGNoYXIgKiAmX0J1ZmZl
ciwgIGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9faXRvYShfVmFsdWUs
IF9CdWZmZXIsIF9SYWRpeCk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGNoYXIq
IF9fY2RlY2wgX2l0b2EoIGludCBfVmFsdWUsIGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0sICBpbnQg
X1JhZGl4KSB0aHJvdygpIHsgcmV0dXJuICgoX2l0b2FfcyhfVmFsdWUsIF9CdWZmZXIsIF9TaXpl
LCBfUmFkaXgpKSA9PSAwID8gX0J1ZmZlciA6IDApOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgY2hh
ciogX19jZGVjbCBfaXRvYTwxPiggaW50IF9WYWx1ZSwgY2hhciAoJl9CdWZmZXIpWzFdLCAgaW50
IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiAoKF9pdG9hX3MoX1ZhbHVlLCBfQnVmZmVyLCAxLCBf
UmFkaXgpKSA9PSAwID8gX0J1ZmZlciA6IDApOyB9IH0NCiNsaW5lIDY0NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkbGliLmgiDQoNCiANCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVj
bCBfbHRvYV9zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAgIF9WYWx1ZSwN
CiAgICAgIGNoYXIqICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICBf
UmFkaXgNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBp
bmxpbmUgZXJybm9fdCBfX2NkZWNsIF9sdG9hX3MoICBsb25nIF9WYWx1ZSwgY2hhciAoJl9CdWZm
ZXIpW19TaXplXSwgICBpbnQgX1JhZGl4KSB0aHJvdygpIHsgcmV0dXJuIF9sdG9hX3MoX1ZhbHVl
LCBfQnVmZmVyLCBfU2l6ZSwgX1JhZGl4KTsgfSB9DQojbGluZSA2NjMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XHN0ZGxpYi5oIg0KDQpfX2lubGluZSBjaGFyKiBfX2NkZWNsIF9faW5zZWN1cmVfX2x0b2EoIGxv
bmcgX1ZhbHVlLCAgIGNoYXIgKl9CdWZmZXIsICBpbnQgX1JhZGl4KSB7IGNoYXIqIF9fY2RlY2wg
X2x0b2EoIGxvbmcgX1ZhbHVlLCAgIGNoYXIgKl9CdWZmZXIsICBpbnQgX1JhZGl4KTsgcmV0dXJu
IF9sdG9hKF9WYWx1ZSwgX0J1ZmZlciwgX1JhZGl4KTsgfSBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0
ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgY2hhciogX19jZGVjbCBfbHRvYSggbG9uZyBfVmFsdWUs
IF9UICZfQnVmZmVyLCAgaW50IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX19s
dG9hKF9WYWx1ZSwgc3RhdGljX2Nhc3Q8Y2hhciAqPihfQnVmZmVyKSwgX1JhZGl4KTsgfSB0ZW1w
bGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgY2hhciogX19jZGVjbCBfbHRvYSggbG9uZyBfVmFs
dWUsIGNvbnN0IF9UICZfQnVmZmVyLCAgaW50IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiBfX2lu
c2VjdXJlX19sdG9hKF9WYWx1ZSwgc3RhdGljX2Nhc3Q8Y2hhciAqPihfQnVmZmVyKSwgX1JhZGl4
KTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgX2x0b2EoIGxvbmcgX1ZhbHVl
LCAgIGNoYXIgKiAmX0J1ZmZlciwgIGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gX19pbnNl
Y3VyZV9fbHRvYShfVmFsdWUsIF9CdWZmZXIsIF9SYWRpeCk7IH0gdGVtcGxhdGUgPHNpemVfdCBf
U2l6ZT4gaW5saW5lIGNoYXIqIF9fY2RlY2wgX2x0b2EoIGxvbmcgX1ZhbHVlLCBjaGFyICgmX0J1
ZmZlcilbX1NpemVdLCAgaW50IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiAoKF9sdG9hX3MoX1Zh
bHVlLCBfQnVmZmVyLCBfU2l6ZSwgX1JhZGl4KSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB0ZW1w
bGF0ZSA8PiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgX2x0b2E8MT4oIGxvbmcgX1ZhbHVlLCBjaGFy
ICgmX0J1ZmZlcilbMV0sICBpbnQgX1JhZGl4KSB0aHJvdygpIHsgcmV0dXJuICgoX2x0b2Ffcyhf
VmFsdWUsIF9CdWZmZXIsIDEsIF9SYWRpeCkpID09IDAgPyBfQnVmZmVyIDogMCk7IH0gfQ0KI2xp
bmUgNjcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KIA0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgZXJybm9fdCBfX2NkZWNsIF91bHRvYV9zKA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBfVmFsdWUsDQogICAgICBjaGFyKiAgICAgICAgIF9CdWZmZXIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIF9CdWZmZXJDb3Vu
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgX1JhZGl4DQog
ICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVy
cm5vX3QgX19jZGVjbCBfdWx0b2FfcyggIHVuc2lnbmVkIGxvbmcgX1ZhbHVlLCBjaGFyICgmX0J1
ZmZlcilbX1NpemVdLCAgIGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gX3VsdG9hX3MoX1Zh
bHVlLCBfQnVmZmVyLCBfU2l6ZSwgX1JhZGl4KTsgfSB9DQojbGluZSA2ODYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGxpYi5oIg0KDQpfX2lubGluZSBjaGFyKiBfX2NkZWNsIF9faW5zZWN1cmVfX3VsdG9h
KCB1bnNpZ25lZCBsb25nIF9WYWx1ZSwgICBjaGFyICpfQnVmZmVyLCAgaW50IF9SYWRpeCkgeyBj
aGFyKiBfX2NkZWNsIF91bHRvYSggdW5zaWduZWQgbG9uZyBfVmFsdWUsICAgY2hhciAqX0J1ZmZl
ciwgIGludCBfUmFkaXgpOyByZXR1cm4gX3VsdG9hKF9WYWx1ZSwgX0J1ZmZlciwgX1JhZGl4KTsg
fSBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgY2hhciogX19j
ZGVjbCBfdWx0b2EoIHVuc2lnbmVkIGxvbmcgX1ZhbHVlLCBfVCAmX0J1ZmZlciwgIGludCBfUmFk
aXgpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fdWx0b2EoX1ZhbHVlLCBzdGF0aWNfY2Fz
dDxjaGFyICo+KF9CdWZmZXIpLCBfUmFkaXgpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5s
aW5lICBjaGFyKiBfX2NkZWNsIF91bHRvYSggdW5zaWduZWQgbG9uZyBfVmFsdWUsIGNvbnN0IF9U
ICZfQnVmZmVyLCAgaW50IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX191bHRv
YShfVmFsdWUsIHN0YXRpY19jYXN0PGNoYXIgKj4oX0J1ZmZlciksIF9SYWRpeCk7IH0gdGVtcGxh
dGUgPD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF91bHRvYSggdW5zaWduZWQgbG9uZyBfVmFsdWUs
ICAgY2hhciAqICZfQnVmZmVyLCAgaW50IF9SYWRpeCkgdGhyb3coKSB7IHJldHVybiBfX2luc2Vj
dXJlX191bHRvYShfVmFsdWUsIF9CdWZmZXIsIF9SYWRpeCk7IH0gdGVtcGxhdGUgPHNpemVfdCBf
U2l6ZT4gaW5saW5lIGNoYXIqIF9fY2RlY2wgX3VsdG9hKCB1bnNpZ25lZCBsb25nIF9WYWx1ZSwg
Y2hhciAoJl9CdWZmZXIpW19TaXplXSwgIGludCBfUmFkaXgpIHRocm93KCkgeyByZXR1cm4gKChf
dWx0b2FfcyhfVmFsdWUsIF9CdWZmZXIsIF9TaXplLCBfUmFkaXgpKSA9PSAwID8gX0J1ZmZlciA6
IDApOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgY2hhciogX19jZGVjbCBfdWx0b2E8MT4oIHVuc2ln
bmVkIGxvbmcgX1ZhbHVlLCBjaGFyICgmX0J1ZmZlcilbMV0sICBpbnQgX1JhZGl4KSB0aHJvdygp
IHsgcmV0dXJuICgoX3VsdG9hX3MoX1ZhbHVlLCBfQnVmZmVyLCAxLCBfUmFkaXgpKSA9PSAwID8g
X0J1ZmZlciA6IDApOyB9IH0NCiNsaW5lIDY5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoN
CiANCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfaTY0dG9hX3MoDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0IF9WYWx1ZSwNCiAgICAgIGNoYXIq
ICAgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgX0J1ZmZl
ckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICBfUmFkaXgNCiAg
ICApOw0KDQogDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIF9pNjR0b2Eo
DQogICAgICAgICAgICAgICAgICAgICAgICBfX2ludDY0IF9WYWx1ZSwNCiAgICAgICAgY2hhciog
ICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICBfUmFkaXgNCiAgICAp
Ow0KDQogDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3VpNjR0b2Ff
cygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQgX1ZhbHVl
LA0KICAgICAgY2hhciogICAgICAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICAgICAgICAgICBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgIF9SYWRpeA0KICAgICk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9fY2RlY2wgX3VpNjR0b2EoDQogICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBfX2ludDY0IF9WYWx1ZSwNCiAgICAgICAgY2hhciogICAgICAgICAg
ICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICBfUmFk
aXgNCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBlcnJub190IF9fY2RlY2wgX2VjdnRfcygNCiAgICAgIGNoYXIqIF9CdWZmZXIsDQog
ICAgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBfQnVmZmVyQ291bnQsDQogICAgICAg
ZG91YmxlICAgICAgICAgICAgICAgICAgICAgICBfVmFsdWUsDQogICAgICAgaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRGlnaXRDb3VudCwNCiAgICAgIGludCogICAgICAgICAgICAgICAg
ICAgICAgICAgX1B0RGVjLA0KICAgICAgaW50KiAgICAgICAgICAgICAgICAgICAgICAgICBfUHRT
aWduDQogICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5s
aW5lIGVycm5vX3QgX19jZGVjbCBfZWN2dF9zKGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0sICAgZG91
YmxlIF9WYWx1ZSwgICBpbnQgX0RpZ2l0Q291bnQsICAgaW50KiBfUHREZWMsICAgaW50KiBfUHRT
aWduKSB0aHJvdygpIHsgcmV0dXJuIF9lY3Z0X3MoX0J1ZmZlciwgX1NpemUsIF9WYWx1ZSwgX0Rp
Z2l0Q291bnQsIF9QdERlYywgX1B0U2lnbik7IH0gfQ0KI2xpbmUgNzU4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRsaWIuaCINCg0KICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIF9l
Y3Z0KA0KICAgICAgIGRvdWJsZSBfVmFsdWUsDQogICAgICAgaW50ICAgIF9EaWdpdENvdW50LA0K
ICAgICAgaW50KiAgIF9QdERlYywNCiAgICAgIGludCogICBfUHRTaWduDQogICAgKTsNCg0KIA0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9mY3Z0X3MoDQogICAgICBj
aGFyKiAgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfQnVm
ZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgX1ZhbHVlLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgIF9GcmFjdGlvbmFsRGlnaXRDb3Vu
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiAgIF9QdERlYywNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50KiAgIF9QdFNpZ24NCiAgICApOw0KDQpleHRlcm4gIkMr
KyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgICBlcnJub190IF9fY2RlY2wgX2Zj
dnRfcyhjaGFyICgmX0J1ZmZlcilbX1NpemVdLCAgIGRvdWJsZSBfVmFsdWUsICAgaW50IF9GcmFj
dGlvbmFsRGlnaXRDb3VudCwgICBpbnQqIF9QdERlYywgICBpbnQqIF9QdFNpZ24pIHRocm93KCkg
eyByZXR1cm4gX2ZjdnRfcyhfQnVmZmVyLCBfU2l6ZSwgX1ZhbHVlLCBfRnJhY3Rpb25hbERpZ2l0
Q291bnQsIF9QdERlYywgX1B0U2lnbik7IH0gfQ0KI2xpbmUgNzg3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRsaWIuaCINCg0KIA0KICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIF9m
Y3Z0KA0KICAgICAgIGRvdWJsZSBfVmFsdWUsDQogICAgICAgaW50ICAgIF9GcmFjdGlvbmFsRGln
aXRDb3VudCwNCiAgICAgIGludCogICBfUHREZWMsDQogICAgICBpbnQqICAgX1B0U2lnbg0KICAg
ICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX2djdnRfcygN
CiAgICAgIGNoYXIqICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBf
VmFsdWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgX0RpZ2l0Q291bnQN
CiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUg
ICBlcnJub190IF9fY2RlY2wgX2djdnRfcyhjaGFyICgmX0J1ZmZlcilbX1NpemVdLCAgIGRvdWJs
ZSBfVmFsdWUsICAgaW50IF9EaWdpdENvdW50KSB0aHJvdygpIHsgcmV0dXJuIF9nY3Z0X3MoX0J1
ZmZlciwgX1NpemUsIF9WYWx1ZSwgX0RpZ2l0Q291bnQpOyB9IH0NCiNsaW5lIDgxMiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RkbGliLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9fY2Rl
Y2wgX2djdnQoDQogICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgX1ZhbHVlLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ICAgIF9EaWdpdENvdW50LA0KICAgICAgICBjaGFyKiAgX0J1
ZmZlcg0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQojbGluZSA4MzMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0ZGxpYi5oIg0KICAgICAgICANCiAgICAjbGluZSA4MzUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHN0ZGxpYi5oIg0KDQogICAgDQoNCg0KICAgICAgICANCiAgICAjbGluZSA4NDEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0ZGxpYi5oIg0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnQgX19jZGVjbCBfX19tYl9jdXJfbWF4X2Z1bmModm9pZCk7DQoNCiAgICAgDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fX21iX2N1cl9tYXhfbF9mdW5jKF9sb2Nh
bGVfdCBfTG9jYWxlKTsNCiNsaW5lIDg0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0K
DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgbWJsZW4oDQogICAgICAgIGNo
YXIgY29uc3QqIF9DaCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAgICAgIF9NYXhDb3VudA0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBpbnQgX19jZGVjbCBfbWJsZW5fbCgNCiAgICAgICAgY2hhciBjb25zdCogX0NoLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgX01h
eENvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxl
X3QgICBfTG9jYWxlDQogICAgKTsNCg0KIA0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVf
dCBfX2NkZWNsIF9tYnN0cmxlbigNCiAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcNCiAgICApOw0K
DQogDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgX21ic3RybGVuX2wo
DQogICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcsDQogICAgICBfbG9jYWxlX3QgICBfTG9jYWxl
DQogICAgKTsNCg0KIA0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBfX2NkZWNsIF9t
YnN0cm5sZW4oDQogICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAgICAgICBzaXplX3QgICAg
ICBfTWF4Q291bnQNCiAgICApOw0KDQogDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90
IF9fY2RlY2wgX21ic3Rybmxlbl9sKA0KICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0KICAg
ICAgICAgIHNpemVfdCAgICAgIF9NYXhDb3VudCwNCiAgICAgIF9sb2NhbGVfdCAgIF9Mb2NhbGUN
CiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgbWJ0b3djKA0K
ICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QqICAgIF9Ec3RDaCwNCiAgICAgIGNoYXIgY29u
c3QqIF9TcmNDaCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICAgICAgX1NyY1NpemVJbkJ5dGVzDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGludCBfX2NkZWNsIF9tYnRvd2NfbCgNCiAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90KiAg
ICBfRHN0Q2gsDQogICAgICBjaGFyIGNvbnN0KiBfU3JjQ2gsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9TcmNTaXplSW5CeXRlcywNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBfTG9jYWxlDQogICAgKTsNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIG1ic3Rvd2NzX3MoDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qq
ICAgICBfUHROdW1PZkNoYXJDb252ZXJ0ZWQsDQogICAgICB3Y2hhcl90KiAgICBfRHN0QnVmLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICAgICBfU2l6ZUluV29yZHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciBjb25zdCogX1NyY0J1ZiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgX01heENvdW50DQog
ICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVy
cm5vX3QgX19jZGVjbCBtYnN0b3djc19zKCAgc2l6ZV90KiBfUHROdW1PZkNoYXJDb252ZXJ0ZWQs
ICAgd2NoYXJfdCAoJl9EZXN0KVtfU2l6ZV0sICAgY2hhciBjb25zdCogX1NvdXJjZSwgICBzaXpl
X3QgX01heENvdW50KSB0aHJvdygpIHsgcmV0dXJuIG1ic3Rvd2NzX3MoX1B0TnVtT2ZDaGFyQ29u
dmVydGVkLCBfRGVzdCwgX1NpemUsIF9Tb3VyY2UsIF9NYXhDb3VudCk7IH0gfQ0KI2xpbmUgOTIz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXpl
X3QgX19jZGVjbCBtYnN0b3djcyggd2NoYXJfdCAqX0Rlc3QsICBjaGFyIGNvbnN0KiBfU291cmNl
LCAgc2l6ZV90IF9NYXhDb3VudCk7DQojbGluZSA5MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGxpYi5o
Ig0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX21ic3Rvd2NzX3Nf
bCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCogICAgIF9QdE51bU9mQ2hhckNvbnZlcnRlZCwNCiAgICAgIHdjaGFyX3QqICAgIF9E
c3RCdWYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAgICAgIF9TaXplSW5Xb3JkcywNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3JjQnVmLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBfTWF4
Q291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvY2FsZV90ICAgX0xvY2FsZQ0KICAgICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBs
YXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX21ic3Rvd2NzX3NfbCgg
IHNpemVfdCogX1B0TnVtT2ZDaGFyQ29udmVydGVkLCAgIHdjaGFyX3QgKCZfRGVzdClbX1NpemVd
LCAgIGNoYXIgY29uc3QqIF9Tb3VyY2UsICAgc2l6ZV90IF9NYXhDb3VudCwgICBfbG9jYWxlX3Qg
X0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiBfbWJzdG93Y3Nfc19sKF9QdE51bU9mQ2hhckNvbnZl
cnRlZCwgX0Rlc3QsIF9TaXplLCBfU291cmNlLCBfTWF4Q291bnQsIF9Mb2NhbGUpOyB9IH0NCiNs
aW5lIDk0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgc2l6ZV90IF9fY2RlY2wgX21ic3Rvd2NzX2woICB3Y2hhcl90ICpfRGVzdCwgICBjaGFyIGNv
bnN0KiBfU291cmNlLCAgIHNpemVfdCBfTWF4Q291bnQsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0K
I2xpbmUgOTU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50IF9fY2RlY2wgd2N0b21iKA0KICAgICAgY2hhciogICBfTWJDaCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBfV0NoDQogICAgKTsNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3djdG9tYl9sKA0KICAgICAgICBjaGFy
KiAgICAgX01iQ2gsDQogICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgICBfV0NoLA0K
ICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCBfTG9jYWxlDQogICAgKTsNCg0KDQoNCiAg
ICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIHdjdG9tYl9zKA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50KiAgICBfU2l6ZUNvbnZlcnRlZCwNCiAgICAgICAgICBjaGFyKiAgIF9NYkNoLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c2l6ZV90IF9TaXplSW5CeXRlcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBfV0NoDQogICAgICAgICk7DQoNCiNs
aW5lIDk4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGVycm5vX3QgX19jZGVjbCBfd2N0b21iX3NfbCgNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50KiAgICAgX1NpemVDb252ZXJ0ZWQsDQogICAgICBjaGFyKiAgICAgX01iQ2gsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgIF9TaXplSW5CeXRlcywN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICAgX1dDaCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIHdjc3RvbWJzX3MoDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qq
ICAgICAgICBfUHROdW1PZkNoYXJDb252ZXJ0ZWQsDQogICAgICBjaGFyKiAgICAgICAgICBfRHN0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBfRHN0U2l6ZUluQnl0ZXMsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
Y2hhcl90IGNvbnN0KiBfU3JjLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBfTWF4Q291bnRJ
bkJ5dGVzDQogICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4g
aW5saW5lIGVycm5vX3QgX19jZGVjbCB3Y3N0b21ic19zKCAgc2l6ZV90KiBfUHROdW1PZkNoYXJD
b252ZXJ0ZWQsICAgY2hhciAoJl9EZXN0KVtfU2l6ZV0sICAgd2NoYXJfdCBjb25zdCogX1NvdXJj
ZSwgICBzaXplX3QgX01heENvdW50KSB0aHJvdygpIHsgcmV0dXJuIHdjc3RvbWJzX3MoX1B0TnVt
T2ZDaGFyQ29udmVydGVkLCBfRGVzdCwgX1NpemUsIF9Tb3VyY2UsIF9NYXhDb3VudCk7IH0gfQ0K
I2xpbmUgMTAxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgc2l6ZV90IF9fY2RlY2wgd2NzdG9tYnMoIGNoYXIgKl9EZXN0LCAgd2NoYXJfdCBjb25z
dCogX1NvdXJjZSwgIHNpemVfdCBfTWF4Q291bnQpOw0KI2xpbmUgMTAxOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkbGliLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBf
d2NzdG9tYnNfc19sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiAgICAgICAgX1B0TnVtT2ZDaGFyQ29udmVydGVk
LA0KICAgICAgY2hhciogICAgICAgICAgX0RzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAg
X0RzdFNpemVJbkJ5dGVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1NyYywNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90ICAgICAgICAgX01heENvdW50SW5CeXRlcywNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAg
ICBfTG9jYWxlDQogICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6
ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCBfd2NzdG9tYnNfc19sKCAgc2l6ZV90KiBfUHROdW1P
ZkNoYXJDb252ZXJ0ZWQsICAgY2hhciAoJl9EZXN0KVtfU2l6ZV0sICAgd2NoYXJfdCBjb25zdCog
X1NvdXJjZSwgICBzaXplX3QgX01heENvdW50LCAgIF9sb2NhbGVfdCBfTG9jYWxlKSB0aHJvdygp
IHsgcmV0dXJuIF93Y3N0b21ic19zX2woX1B0TnVtT2ZDaGFyQ29udmVydGVkLCBfRGVzdCwgX1Np
emUsIF9Tb3VyY2UsIF9NYXhDb3VudCwgX0xvY2FsZSk7IH0gfQ0KI2xpbmUgMTAzNyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RkbGliLmgiDQoNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2Rl
Y2wgX3djc3RvbWJzX2woICBjaGFyICpfRGVzdCwgICB3Y2hhcl90IGNvbnN0KiBfU291cmNlLCAg
IHNpemVfdCBfTWF4Q291bnQsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0KI2xpbmUgMTA0NiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KIA0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSBj
aGFyKiBfX2NkZWNsIF9mdWxscGF0aCgNCiAgICAgIGNoYXIqICAgICAgIF9CdWZmZXIsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9QYXRoLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9CdWZmZXJDb3VudA0KICAgICk7
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX21ha2VwYXRo
X3MoDQogICAgICBjaGFyKiAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciBjb25zdCogX0RyaXZlLA0KICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCog
X0RpciwNCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9GaWxlbmFtZSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9FeHQNCiAgICApOw0KDQpleHRlcm4g
IkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF9t
YWtlcGF0aF9zKGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0sICAgY2hhciBjb25zdCogX0RyaXZlLCAg
IGNoYXIgY29uc3QqIF9EaXIsICAgY2hhciBjb25zdCogX0ZpbGVuYW1lLCAgIGNoYXIgY29uc3Qq
IF9FeHQpIHRocm93KCkgeyByZXR1cm4gX21ha2VwYXRoX3MoX0J1ZmZlciwgX1NpemUsIF9Ecml2
ZSwgX0RpciwgX0ZpbGVuYW1lLCBfRXh0KTsgfSB9DQojbGluZSAxMDk0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRsaWIuaCINCg0KX19pbmxpbmUgdm9pZCBfX2NkZWNsIF9faW5zZWN1cmVfX21ha2VwYXRo
KCAgY2hhciAqX0J1ZmZlciwgIGNoYXIgY29uc3QqIF9Ecml2ZSwgIGNoYXIgY29uc3QqIF9EaXIs
ICBjaGFyIGNvbnN0KiBfRmlsZW5hbWUsICBjaGFyIGNvbnN0KiBfRXh0KSB7IHZvaWQgX19jZGVj
bCBfbWFrZXBhdGgoICBjaGFyICpfQnVmZmVyLCAgY2hhciBjb25zdCogX0RyaXZlLCAgY2hhciBj
b25zdCogX0RpciwgIGNoYXIgY29uc3QqIF9GaWxlbmFtZSwgIGNoYXIgY29uc3QqIF9FeHQpOyBy
ZXR1cm4gX21ha2VwYXRoKF9CdWZmZXIsIF9Ecml2ZSwgX0RpciwgX0ZpbGVuYW1lLCBfRXh0KTsg
fSBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgdm9pZCBfX2Nk
ZWNsIF9tYWtlcGF0aChfVCAmX0J1ZmZlciwgIGNoYXIgY29uc3QqIF9Ecml2ZSwgIGNoYXIgY29u
c3QqIF9EaXIsICBjaGFyIGNvbnN0KiBfRmlsZW5hbWUsICBjaGFyIGNvbnN0KiBfRXh0KSB0aHJv
dygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX21ha2VwYXRoKHN0YXRpY19jYXN0PGNoYXIgKj4oX0J1
ZmZlciksIF9Ecml2ZSwgX0RpciwgX0ZpbGVuYW1lLCBfRXh0KTsgfSB0ZW1wbGF0ZSA8dHlwZW5h
bWUgX1Q+IGlubGluZSAgdm9pZCBfX2NkZWNsIF9tYWtlcGF0aChjb25zdCBfVCAmX0J1ZmZlciwg
IGNoYXIgY29uc3QqIF9Ecml2ZSwgIGNoYXIgY29uc3QqIF9EaXIsICBjaGFyIGNvbnN0KiBfRmls
ZW5hbWUsICBjaGFyIGNvbnN0KiBfRXh0KSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX21h
a2VwYXRoKHN0YXRpY19jYXN0PGNoYXIgKj4oX0J1ZmZlciksIF9Ecml2ZSwgX0RpciwgX0ZpbGVu
YW1lLCBfRXh0KTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHZvaWQgX19jZGVjbCBfbWFrZXBhdGgo
ICBjaGFyICogJl9CdWZmZXIsICBjaGFyIGNvbnN0KiBfRHJpdmUsICBjaGFyIGNvbnN0KiBfRGly
LCAgY2hhciBjb25zdCogX0ZpbGVuYW1lLCAgY2hhciBjb25zdCogX0V4dCkgdGhyb3coKSB7IHJl
dHVybiBfX2luc2VjdXJlX19tYWtlcGF0aChfQnVmZmVyLCBfRHJpdmUsIF9EaXIsIF9GaWxlbmFt
ZSwgX0V4dCk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIHZvaWQgX19jZGVjbCBf
bWFrZXBhdGgoY2hhciAoJl9CdWZmZXIpW19TaXplXSwgIGNoYXIgY29uc3QqIF9Ecml2ZSwgIGNo
YXIgY29uc3QqIF9EaXIsICBjaGFyIGNvbnN0KiBfRmlsZW5hbWUsICBjaGFyIGNvbnN0KiBfRXh0
KSB0aHJvdygpIHsgKF9tYWtlcGF0aF9zKF9CdWZmZXIsIF9TaXplLCBfRHJpdmUsIF9EaXIsIF9G
aWxlbmFtZSwgX0V4dCkpOyByZXR1cm47IH0gdGVtcGxhdGUgPD4gaW5saW5lICB2b2lkIF9fY2Rl
Y2wgX21ha2VwYXRoPDE+KGNoYXIgKCZfQnVmZmVyKVsxXSwgIGNoYXIgY29uc3QqIF9Ecml2ZSwg
IGNoYXIgY29uc3QqIF9EaXIsICBjaGFyIGNvbnN0KiBfRmlsZW5hbWUsICBjaGFyIGNvbnN0KiBf
RXh0KSB0aHJvdygpIHsgKF9tYWtlcGF0aF9zKF9CdWZmZXIsIDEsIF9Ecml2ZSwgX0RpciwgX0Zp
bGVuYW1lLCBfRXh0KSk7IHJldHVybjsgfSB9DQojbGluZSAxMTAzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRsaWIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF9zcGxpdHBh
dGgoDQogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfRnVsbFBhdGgsDQogICAg
ICAgIGNoYXIqICAgICAgIF9Ecml2ZSwNCiAgICAgICAgY2hhciogICAgICAgX0RpciwNCiAgICAg
ICAgY2hhciogICAgICAgX0ZpbGVuYW1lLA0KICAgICAgICBjaGFyKiAgICAgICBfRXh0DQogICAg
KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9zcGxpdHBhdGhf
cygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfRnVsbFBh
dGgsDQogICAgICAgICBjaGFyKiAgICAgICBfRHJpdmUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgICAgICBfRHJpdmVDb3VudCwNCiAgICAgICAgICAgY2hhciog
ICAgICAgX0RpciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAg
ICAgIF9EaXJDb3VudCwNCiAgICAgIGNoYXIqICAgICAgIF9GaWxlbmFtZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9GaWxlbmFtZUNvdW50LA0KICAg
ICAgICAgICBjaGFyKiAgICAgICBfRXh0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICAgICAgX0V4dENvdW50DQogICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVt
cGxhdGUgPHNpemVfdCBfRHJpdmVTaXplLCBzaXplX3QgX0RpclNpemUsIHNpemVfdCBfTmFtZVNp
emUsIHNpemVfdCBfRXh0U2l6ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCBfc3BsaXRwYXRoX3Mo
ICAgY2hhciBjb25zdCogX0Rlc3QsICAgY2hhciAoJl9Ecml2ZSlbX0RyaXZlU2l6ZV0sICAgY2hh
ciAoJl9EaXIpW19EaXJTaXplXSwgICBjaGFyICgmX05hbWUpW19OYW1lU2l6ZV0sICAgY2hhciAo
Jl9FeHQpW19FeHRTaXplXSApIHRocm93KCkgeyByZXR1cm4gX3NwbGl0cGF0aF9zKF9EZXN0LCBf
RHJpdmUsIF9Ecml2ZVNpemUsIF9EaXIsIF9EaXJTaXplLCBfTmFtZSwgX05hbWVTaXplLCBfRXh0
LCBfRXh0U2l6ZSk7IH0gfQ0KDQoNCg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9f
dCBfX2NkZWNsIGdldGVudl9zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90KiAgICAgX1JlcXVpcmVkQ291bnQsDQogICAgICBjaGFyKiAgICAgICBfQnVmZmVyLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzaXplX3QgICAgIF9CdWZmZXJDb3VudCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX1Zhck5hbWUNCiAg
ICApOw0KDQojbGluZSAxMTQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KDQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCogICAgICAgX19jZGVjbCBfX3BfX19hcmdjICh2b2lkKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKioqICAgIF9fY2RlY2wgX19wX19fYXJndiAodm9p
ZCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCoqKiBfX2NkZWNsIF9fcF9fX3dhcmd2
KHZvaWQpOw0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KICAgIA0KI2xpbmUgMTE1NyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RkbGliLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKioqICAgIF9f
Y2RlY2wgX19wX19lbnZpcm9uICh2b2lkKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3Y2hhcl90
KioqIF9fY2RlY2wgX19wX193ZW52aXJvbih2b2lkKTsNCg0KDQogICAgDQojbGluZSAxMTY0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KI2xpbmUg
MTE3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciogX19jZGVjbCBnZXRlbnYoDQogICAgICAg
ICAgY2hhciBjb25zdCogX1Zhck5hbWUNCiAgICAgICAgKTsNCg0KICAgIGV4dGVybiAiQysrIiB7
IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgZ2V0ZW52X3Mo
ICBzaXplX3QqIF9SZXF1aXJlZENvdW50LCBjaGFyICgmX0J1ZmZlcilbX1NpemVdLCAgIGNoYXIg
Y29uc3QqIF9WYXJOYW1lKSB0aHJvdygpIHsgcmV0dXJuIGdldGVudl9zKF9SZXF1aXJlZENvdW50
LCBfQnVmZmVyLCBfU2l6ZSwgX1Zhck5hbWUpOyB9IH0NCiNsaW5lIDExOTQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGxpYi5oIg0KDQogICAgDQoNCg0KI2xpbmUgMTE5OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3Rk
bGliLmgiDQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNs
IF9kdXBlbnZfcygNCiAgICAgICAgICAgIGNoYXIqKiAgICAgIF9CdWZmZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90KiAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgY29uc3QqIF9WYXJOYW1lDQogICAgICAgICk7DQoNCiAgICANCg0KI2xpbmUgMTIxMCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcc3RkbGliLmgiDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
IF9fY2RlY2wgc3lzdGVtKA0KICAgICAgICAgIGNoYXIgY29uc3QqIF9Db21tYW5kDQogICAgICAg
ICk7DQoNCiAgICANCiAgICANCiAgICAjcHJhZ21hIHdhcm5pbmcocHVzaCkNCiAgICAjcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNjU0MCkNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50IF9fY2RlY2wgX3B1dGVudigNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfRW52U3RyaW5n
DQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBf
X2NkZWNsIF9wdXRlbnZfcygNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfTmFtZSwNCiAgICAgICAg
ICBjaGFyIGNvbnN0KiBfVmFsdWUNCiAgICAgICAgKTsNCg0KICAgICNwcmFnbWEgd2FybmluZyhw
b3ApDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9zZWFyY2hl
bnZfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX0ZpbGVu
YW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfVmFyTmFt
ZSwNCiAgICAgICAgICBjaGFyKiAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAgICAgIF9CdWZmZXJDb3VudA0KICAgICAgICApOw0KDQogICAg
ZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVycm5vX3QgX19j
ZGVjbCBfc2VhcmNoZW52X3MoICBjaGFyIGNvbnN0KiBfRmlsZW5hbWUsICAgY2hhciBjb25zdCog
X1Zhck5hbWUsIGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0pIHRocm93KCkgeyByZXR1cm4gX3NlYXJj
aGVudl9zKF9GaWxlbmFtZSwgX1Zhck5hbWUsIF9CdWZmZXIsIF9TaXplKTsgfSB9DQojbGluZSAx
MjQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KICAgIF9faW5saW5lIHZvaWQgX19jZGVj
bCBfX2luc2VjdXJlX19zZWFyY2hlbnYoIGNoYXIgY29uc3QqIF9GaWxlbmFtZSwgIGNoYXIgY29u
c3QqIF9WYXJOYW1lLCAgIGNoYXIgKl9CdWZmZXIpIHsgdm9pZCBfX2NkZWNsIF9zZWFyY2hlbnYo
IGNoYXIgY29uc3QqIF9GaWxlbmFtZSwgIGNoYXIgY29uc3QqIF9WYXJOYW1lLCAgIGNoYXIgKl9C
dWZmZXIpOyByZXR1cm4gX3NlYXJjaGVudihfRmlsZW5hbWUsIF9WYXJOYW1lLCBfQnVmZmVyKTsg
fSBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgdm9pZCBfX2Nk
ZWNsIF9zZWFyY2hlbnYoIGNoYXIgY29uc3QqIF9GaWxlbmFtZSwgIGNoYXIgY29uc3QqIF9WYXJO
YW1lLCBfVCAmX0J1ZmZlcikgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX19zZWFyY2hlbnYo
X0ZpbGVuYW1lLCBfVmFyTmFtZSwgc3RhdGljX2Nhc3Q8Y2hhciAqPihfQnVmZmVyKSk7IH0gdGVt
cGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIHZvaWQgX19jZGVjbCBfc2VhcmNoZW52KCBjaGFy
IGNvbnN0KiBfRmlsZW5hbWUsICBjaGFyIGNvbnN0KiBfVmFyTmFtZSwgY29uc3QgX1QgJl9CdWZm
ZXIpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fc2VhcmNoZW52KF9GaWxlbmFtZSwgX1Zh
ck5hbWUsIHN0YXRpY19jYXN0PGNoYXIgKj4oX0J1ZmZlcikpOyB9IHRlbXBsYXRlIDw+IGlubGlu
ZSAgdm9pZCBfX2NkZWNsIF9zZWFyY2hlbnYoIGNoYXIgY29uc3QqIF9GaWxlbmFtZSwgIGNoYXIg
Y29uc3QqIF9WYXJOYW1lLCAgIGNoYXIgKiAmX0J1ZmZlcikgdGhyb3coKSB7IHJldHVybiBfX2lu
c2VjdXJlX19zZWFyY2hlbnYoX0ZpbGVuYW1lLCBfVmFyTmFtZSwgX0J1ZmZlcik7IH0gdGVtcGxh
dGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIHZvaWQgX19jZGVjbCBfc2VhcmNoZW52KCBjaGFyIGNv
bnN0KiBfRmlsZW5hbWUsICBjaGFyIGNvbnN0KiBfVmFyTmFtZSwgY2hhciAoJl9CdWZmZXIpW19T
aXplXSkgdGhyb3coKSB7IChfc2VhcmNoZW52X3MoX0ZpbGVuYW1lLCBfVmFyTmFtZSwgX0J1ZmZl
ciwgX1NpemUpKTsgcmV0dXJuOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgdm9pZCBfX2NkZWNsIF9z
ZWFyY2hlbnY8MT4oIGNoYXIgY29uc3QqIF9GaWxlbmFtZSwgIGNoYXIgY29uc3QqIF9WYXJOYW1l
LCBjaGFyICgmX0J1ZmZlcilbMV0pIHRocm93KCkgeyAoX3NlYXJjaGVudl9zKF9GaWxlbmFtZSwg
X1Zhck5hbWUsIF9CdWZmZXIsIDEpKTsgcmV0dXJuOyB9IH0NCiNsaW5lIDEyNTMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHN0ZGxpYi5oIg0KDQogICAgDQogICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGlz
IGZ1bmN0aW9uIG9yIHZhcmlhYmxlIGhhcyBiZWVuIHN1cGVyY2VkZWQgYnkgbmV3ZXIgbGlicmFy
eSAiICJvciBvcGVyYXRpbmcgc3lzdGVtIGZ1bmN0aW9uYWxpdHkuIENvbnNpZGVyIHVzaW5nICIg
IlNldEVycm9yTW9kZSIgIiAiICJpbnN0ZWFkLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMu
IikpDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19jZGVjbCBfc2V0ZXJyb3Jtb2Rl
KA0KICAgICAgICAgIGludCBfTW9kZQ0KICAgICAgICApOw0KDQogICAgX19kZWNsc3BlYyhkZXBy
ZWNhdGVkKCJUaGlzIGZ1bmN0aW9uIG9yIHZhcmlhYmxlIGhhcyBiZWVuIHN1cGVyY2VkZWQgYnkg
bmV3ZXIgbGlicmFyeSAiICJvciBvcGVyYXRpbmcgc3lzdGVtIGZ1bmN0aW9uYWxpdHkuIENvbnNp
ZGVyIHVzaW5nICIgIkJlZXAiICIgIiAiaW5zdGVhZC4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRh
aWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fY2RlY2wgX2JlZXAoDQog
ICAgICAgICAgdW5zaWduZWQgX0ZyZXF1ZW5jeSwNCiAgICAgICAgICB1bnNpZ25lZCBfRHVyYXRp
b24NCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhpcyBmdW5jdGlv
biBvciB2YXJpYWJsZSBoYXMgYmVlbiBzdXBlcmNlZGVkIGJ5IG5ld2VyIGxpYnJhcnkgIiAib3Ig
b3BlcmF0aW5nIHN5c3RlbSBmdW5jdGlvbmFsaXR5LiBDb25zaWRlciB1c2luZyAiICJTbGVlcCIg
IiAiICJpbnN0ZWFkLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHZvaWQgX19jZGVjbCBfc2xlZXAoDQogICAgICAgICAgdW5zaWduZWQg
bG9uZyBfRHVyYXRpb24NCiAgICAgICAgKTsNCg0KI2xpbmUgMTI3MiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
c3RkbGliLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoNCg0KDQoNCiAgICANCiAgICANCg0K
ICAgICNwcmFnbWEgd2FybmluZyhwdXNoKQ0KICAgICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
MTQxKSANCg0KICAgICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3Ig
dGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMr
KyBjb25mb3JtYW50IG5hbWU6ICIgIl9lY3Z0IiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFp
bHMuIikpIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIGVjdnQoDQog
ICAgICAgICAgIGRvdWJsZSBfVmFsdWUsDQogICAgICAgICAgIGludCAgICBfRGlnaXRDb3VudCwN
CiAgICAgICAgICBpbnQqICAgX1B0RGVjLA0KICAgICAgICAgIGludCogICBfUHRTaWduDQogICAg
ICAgICk7DQoNCiAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9y
IHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBD
KysgY29uZm9ybWFudCBuYW1lOiAiICJfZmN2dCIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRh
aWxzLiIpKSANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciogX19jZGVjbCBmY3Z0KA0K
ICAgICAgICAgICBkb3VibGUgX1ZhbHVlLA0KICAgICAgICAgICBpbnQgICAgX0ZyYWN0aW9uYWxE
aWdpdENvdW50LA0KICAgICAgICAgIGludCogICBfUHREZWMsDQogICAgICAgICAgaW50KiAgIF9Q
dFNpZ24NCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lY
IG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBD
ICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfZ2N2dCIgIi4gU2VlIG9ubGluZSBoZWxw
IGZvciBkZXRhaWxzLiIpKSANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciogX19jZGVj
bCBnY3Z0KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBfVmFsdWUsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgIF9EaWdpdENvdW50LA0KICAgICAgICAgICAg
Y2hhciogIF9Ec3RCdWYNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgi
VGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2Ug
dGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfaXRvYSIgIi4gU2VlIG9u
bGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKSANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hh
ciogX19jZGVjbCBpdG9hKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgIF9WYWx1
ZSwNCiAgICAgICAgICAgIGNoYXIqIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICAgX1JhZGl4DQogICAgICAgICk7DQoNCiAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQo
IlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNl
IHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX2x0b2EiICIuIFNlZSBv
bmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNo
YXIqIF9fY2RlY2wgbHRvYSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICBfVmFs
dWUsDQogICAgICAgICAgICBjaGFyKiBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAgIF9SYWRpeA0KICAgICAgICApOw0KDQoNCiAgICBfX2RlY2xzcGVjKGRlcHJlY2F0
ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwg
dXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3N3YWIiICIuIFNl
ZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCBfX2NkZWNsIHN3YWIoDQogICAgICAgICAgY2hhciogX0J1ZjEsDQogICAgICAgICAgY2hh
ciogX0J1ZjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgX1Np
emVJbkJ5dGVzDQogICAgICAgICk7DQoNCiAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQ
T1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJ
U08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3VsdG9hIiAiLiBTZWUgb25saW5l
IGhlbHAgZm9yIGRldGFpbHMuIikpIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBf
X2NkZWNsIHVsdG9hKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
X1ZhbHVlLA0KICAgICAgICAgICAgY2hhciogICAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgX1JhZGl4DQogICAgICAgICk7DQoNCiAgICAN
Cg0KICAgICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBp
dGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25m
b3JtYW50IG5hbWU6ICIgIl9wdXRlbnYiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4i
KSkNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgcHV0ZW52KA0KICAgICAg
ICAgIGNoYXIgY29uc3QqIF9FbnZTdHJpbmcNCiAgICAgICAgKTsNCg0KICAgICNwcmFnbWEgd2Fy
bmluZyhwb3ApDQoNCiAgICBfb25leGl0X3QgX19jZGVjbCBvbmV4aXQoICBfb25leGl0X3QgX0Z1
bmMpOw0KDQojbGluZSAxMzU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRsaWIuaCINCg0KDQoNCn0gX19w
cmFnbWEocGFjayhwb3ApKQ0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDEzNjMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0ZGxpYi5oIg0KI2xpbmUgMTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3N0ZGxpYiINCg0KI3ByYWdtYSBwYWNrKHB1c2gs
IDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDog
NDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2
MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1
IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBkb3Vi
bGUgYWJzKCAgZG91YmxlIF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZmFicyhfWHgp
Ow0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGFicyggIGZsb2F0IF9YeCkgbm9l
eGNlcHQgIHsNCiAgICByZXR1cm4gOjogZmFic2YoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAg
IGlubGluZSBsb25nIGRvdWJsZSBhYnMoICBsb25nIGRvdWJsZSBfWHgpIG5vZXhjZXB0ICB7DQog
ICAgcmV0dXJuIDo6IGZhYnNsKF9YeCk7DQp9DQoNCm5hbWVzcGFjZSBzdGQgew0KdXNpbmcgOjog
c2l6ZV90Ow0KdXNpbmcgOjogZGl2X3Q7DQp1c2luZyA6OiBsZGl2X3Q7DQp1c2luZyA6OiBhYm9y
dDsNCnVzaW5nIDo6IGFiczsNCnVzaW5nIDo6IGF0ZXhpdDsNCnVzaW5nIDo6IGF0b2Y7DQp1c2lu
ZyA6OiBhdG9pOw0KdXNpbmcgOjogYXRvbDsNCnVzaW5nIDo6IGJzZWFyY2g7DQp1c2luZyA6OiBj
YWxsb2M7DQp1c2luZyA6OiBkaXY7DQp1c2luZyA6OiBleGl0Ow0KdXNpbmcgOjogZnJlZTsNCnVz
aW5nIDo6IGxhYnM7DQp1c2luZyA6OiBsZGl2Ow0KdXNpbmcgOjogbWFsbG9jOw0KdXNpbmcgOjog
bWJsZW47DQp1c2luZyA6OiBtYnN0b3djczsNCnVzaW5nIDo6IG1idG93YzsNCnVzaW5nIDo6IHFz
b3J0Ow0KdXNpbmcgOjogcmFuZDsNCnVzaW5nIDo6IHJlYWxsb2M7DQp1c2luZyA6OiBzcmFuZDsN
CnVzaW5nIDo6IHN0cnRvZDsNCnVzaW5nIDo6IHN0cnRvbDsNCnVzaW5nIDo6IHN0cnRvdWw7DQp1
c2luZyA6OiB3Y3N0b21iczsNCnVzaW5nIDo6IHdjdG9tYjsNCg0KdXNpbmcgOjogbGxkaXZfdDsN
Cg0KDQp1c2luZyA6OiBnZXRlbnY7DQp1c2luZyA6OiBzeXN0ZW07DQojbGluZSA3MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjc3RkbGliIg0KDQp1
c2luZyA6OiBhdG9sbDsNCnVzaW5nIDo6IGxsYWJzOw0KdXNpbmcgOjogbGxkaXY7DQp1c2luZyA6
OiBzdHJ0b2Y7DQp1c2luZyA6OiBzdHJ0b2xkOw0KdXNpbmcgOjogc3RydG9sbDsNCnVzaW5nIDo6
IHN0cnRvdWxsOw0KDQp1c2luZyA6OiBfRXhpdDsNCnVzaW5nIDo6IGF0X3F1aWNrX2V4aXQ7DQp1
c2luZyA6OiBxdWlja19leGl0Ow0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFn
bWEgcGFjayhwb3ApDQoNCiNsaW5lIDkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGNzdGRsaWIiDQojbGluZSA5MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjc3RkbGliIg0KI2xpbmUgMTMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0ZGRlZiINCiNs
aW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
aW5pdGlhbGl6ZXJfbGlzdCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0
NTg3IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4
OCA1MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3Rk
IHsNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtPg0KY2xhc3MgaW5pdGlhbGl6ZXJfbGlzdCB7DQpw
dWJsaWM6DQogICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgID0gX0VsZW07DQogICAgdXNpbmcgcmVm
ZXJlbmNlICAgICAgID0gY29uc3QgX0VsZW0mOw0KICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9
IGNvbnN0IF9FbGVtJjsNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICAgPSBzaXplX3Q7DQoNCiAg
ICB1c2luZyBpdGVyYXRvciAgICAgICA9IGNvbnN0IF9FbGVtKjsNCiAgICB1c2luZyBjb25zdF9p
dGVyYXRvciA9IGNvbnN0IF9FbGVtKjsNCg0KICAgIGNvbnN0ZXhwciBpbml0aWFsaXplcl9saXN0
KCkgbm9leGNlcHQgOiBfRmlyc3QobnVsbHB0ciksIF9MYXN0KG51bGxwdHIpIHt9DQoNCiAgICBj
b25zdGV4cHIgaW5pdGlhbGl6ZXJfbGlzdChjb25zdCBfRWxlbSogX0ZpcnN0X2FyZywgY29uc3Qg
X0VsZW0qIF9MYXN0X2FyZykgbm9leGNlcHQNCiAgICAgICAgOiBfRmlyc3QoX0ZpcnN0X2FyZyks
IF9MYXN0KF9MYXN0X2FyZykge30NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0
IF9FbGVtKiBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9GaXJzdDsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdCBfRWxlbSogZW5kKCkg
Y29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX0xhc3Q7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9MYXN0IC0gX0ZpcnN0KTsNCiAgICB9DQoN
CnByaXZhdGU6DQogICAgY29uc3QgX0VsZW0qIF9GaXJzdDsNCiAgICBjb25zdCBfRWxlbSogX0xh
c3Q7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbT4NCltbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIGNvbnN0IF9FbGVtKiBiZWdpbihpbml0aWFsaXplcl9saXN0PF9FbGVtPiBfSWxpc3QpIG5v
ZXhjZXB0IHsNCiAgICByZXR1cm4gX0lsaXN0LmJlZ2luKCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9FbGVtPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3QgX0VsZW0qIGVuZChpbml0
aWFsaXplcl9saXN0PF9FbGVtPiBfSWxpc3QpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX0lsaXN0
LmVuZCgpOw0KfQ0KfQ0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9w
KQ0KI2xpbmUgNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcaW5pdGlhbGl6ZXJfbGlzdCINCiNsaW5lIDczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGluaXRpYWxpemVyX2xpc3QiDQojbGluZSAxNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RkZGVm
Ig0KDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1
ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0Nzkz
IDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1l
c3BhY2Ugc3RkIHsNCg0KdGVtcGxhdGUgPGNsYXNzPg0KDQppbmxpbmUgY29uc3RleHByIGJvb2wg
X0Fsd2F5c19mYWxzZSA9IGZhbHNlOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhzdGRkZWYiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSA9IHZvaWQ+DQpzdHJ1Y3QgcGx1
cyB7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBl
IHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwg
YW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3
LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJF
Q0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5J
TkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIp
XV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBzZWNvbmRfYXJn
dW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9UeSByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBfVHkg
b3BlcmF0b3IoKShjb25zdCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkmIF9SaWdodCkgY29uc3Qgew0K
ICAgICAgICByZXR1cm4gX0xlZnQgKyBfUmlnaHQ7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBtaW51cyB7DQogICAgW1tkZXByZWNhdGVkKCAid2Fy
bmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1l
bnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5
cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5D
RV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVO
Q0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91
IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJndW1l
bnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0
X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90
eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4g
QysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNf
REVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05f
V0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5p
bmcuIildXSB0eXBlZGVmIF9UeSBzZWNvbmRfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0
ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFs
bCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50
X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5l
IF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJv
ciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2Ug
dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSByZXN1
bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBfVHkgb3BlcmF0b3IoKShjb25zdCBfVHkmIF9MZWZ0
LCBjb25zdCBfVHkmIF9SaWdodCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gX0xlZnQgLSBfUmln
aHQ7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBt
dWx0aXBsaWVzIHsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9UeSBmaXJzdF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVj
YXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQg
YWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1l
bnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZp
bmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIg
Im9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRn
ZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IHNl
Y29uZF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzog
TWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0
X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVw
cmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRP
Ul9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19E
RVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVk
IHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IHJlc3VsdF90eXBlOw0KDQogICAgY29uc3Rl
eHByIF9UeSBvcGVyYXRvcigpKGNvbnN0IF9UeSYgX0xlZnQsIGNvbnN0IF9UeSYgX1JpZ2h0KSBj
b25zdCB7DQogICAgICAgIHJldHVybiBfTGVmdCAqIF9SaWdodDsNCiAgICB9DQp9Ow0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHkgPSB2b2lkPg0Kc3RydWN0IGVxdWFsX3RvIHsNCiAgICBbW2RlcHJl
Y2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5k
IGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3Vt
ZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVm
aW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAi
ICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVk
Z2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBm
aXJzdF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzog
TWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0
X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVw
cmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRP
Ul9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19E
RVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVk
IHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IHNlY29uZF9hcmd1bWVudF90eXBlOw0KICAg
IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVm
cyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNv
bmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91
IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9X
QVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBh
Y2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVk
ZWYgYm9vbCByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yKCkoY29u
c3QgX1R5JiBfTGVmdCwgY29uc3QgX1R5JiBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJu
IF9MZWZ0ID09IF9SaWdodDsNCiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkgPSB2
b2lkPg0Kc3RydWN0IG5vdF9lcXVhbF90byB7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJndW1lbnRfdHlw
ZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUg
dHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBh
bmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcu
ICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVD
QVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklO
R1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIild
XSB0eXBlZGVmIF9UeSBzZWNvbmRfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5
cGU7DQoNCiAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UeSYgX0xlZnQsIGNv
bnN0IF9UeSYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIHJldHVybiBfTGVmdCAhPSBfUmlnaHQ7
DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBncmVh
dGVyIHsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5
cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBl
LCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysr
MTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQ
UkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FS
TklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcu
IildXSB0eXBlZGVmIF9UeSBmaXJzdF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCgg
Indhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFy
Z3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlw
ZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJ
TEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9T
SUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0
IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IHNlY29uZF9h
cmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSBy
ZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3Vt
ZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRl
ZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBF
REVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNB
VElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMg
d2FybmluZy4iKV1dIHR5cGVkZWYgYm9vbCByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yKCkoY29uc3QgX1R5JiBfTGVmdCwgY29uc3QgX1R5JiBfUmlnaHQpIGNvbnN0
IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0ID4gX1JpZ2h0Ow0KICAgIH0NCn07DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeSA9IHZvaWQ+DQpzdHJ1Y3QgbGVzcyB7DQogICAgW1tkZXByZWNhdGVkKCAi
d2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJn
dW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBl
IHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lM
RU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJ
TEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQg
eW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJn
dW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9UeSBzZWNvbmRfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJl
Y2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5k
IGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3Vt
ZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVm
aW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAi
ICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVk
Z2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIGJvb2wg
cmVzdWx0X3R5cGU7DQoNCiAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UeSYg
X0xlZnQsIGNvbnN0IF9UeSYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIHJldHVybiBfTGVmdCA8
IF9SaWdodDsNCiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkgPSB2b2lkPg0Kc3Ry
dWN0IGdyZWF0ZXJfZXF1YWwgew0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzog
TWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0
X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVw
cmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRP
Ul9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19E
RVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVk
IHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IGZpcnN0X2FyZ3VtZW50X3R5cGU7DQogICAg
W1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZz
ICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29u
ZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3Ug
Y2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dB
Uk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFj
a25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRl
ZiBfVHkgc2Vjb25kX2FyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOw0KDQog
ICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkm
IF9SaWdodCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gX0xlZnQgPj0gX1JpZ2h0Ow0KICAgIH0N
Cn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSA9IHZvaWQ+DQpzdHJ1Y3QgbGVzc19lcXVhbCB7
DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5
cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5k
IHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAi
ICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FU
SU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdT
IHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0g
dHlwZWRlZiBfVHkgZmlyc3RfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJu
aW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVu
dF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlw
ZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBzZWNvbmRfYXJndW1l
bnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0
X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90
eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4g
QysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNf
REVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05f
V0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5p
bmcuIildXSB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5cGU7DQoNCiAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcigpKGNvbnN0IF9UeSYgX0xlZnQsIGNvbnN0IF9UeSYgX1JpZ2h0KSBjb25zdCB7DQog
ICAgICAgIHJldHVybiBfTGVmdCA8PSBfUmlnaHQ7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Pg0Kc3RydWN0IHBsdXM8dm9pZD4gew0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBf
VHkyPg0KICAgIGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yKCkoX1R5MSYmIF9MZWZ0LCBfVHkyJiYg
X1JpZ2h0KSBjb25zdA0KICAgICAgICBub2V4Y2VwdChub2V4Y2VwdChzdGF0aWNfY2FzdDxfVHkx
JiY+KF9MZWZ0KSArIHN0YXRpY19jYXN0PF9UeTImJj4oX1JpZ2h0KSkpIA0KICAgICAgICAtPiBk
ZWNsdHlwZShzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSArIHN0YXRpY19jYXN0PF9UeTImJj4o
X1JpZ2h0KSkgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5MSYmPihfTGVmdCkgKyBz
dGF0aWNfY2FzdDxfVHkyJiY+KF9SaWdodCk7DQogICAgfQ0KDQogICAgdXNpbmcgaXNfdHJhbnNw
YXJlbnQgPSBpbnQ7DQp9Ow0KDQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgbWludXM8dm9pZD4gew0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KICAgIGNvbnN0ZXhwciBhdXRv
IG9wZXJhdG9yKCkoX1R5MSYmIF9MZWZ0LCBfVHkyJiYgX1JpZ2h0KSBjb25zdA0KICAgICAgICBu
b2V4Y2VwdChub2V4Y2VwdChzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSAtIHN0YXRpY19jYXN0
PF9UeTImJj4oX1JpZ2h0KSkpIA0KICAgICAgICAtPiBkZWNsdHlwZShzdGF0aWNfY2FzdDxfVHkx
JiY+KF9MZWZ0KSAtIHN0YXRpY19jYXN0PF9UeTImJj4oX1JpZ2h0KSkgew0KICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8X1R5MSYmPihfTGVmdCkgLSBzdGF0aWNfY2FzdDxfVHkyJiY+KF9SaWdo
dCk7DQogICAgfQ0KDQogICAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSBpbnQ7DQp9Ow0KDQoNCnRl
bXBsYXRlIDw+DQpzdHJ1Y3QgbXVsdGlwbGllczx2b2lkPiB7DQogICAgdGVtcGxhdGUgPGNsYXNz
IF9UeTEsIGNsYXNzIF9UeTI+DQogICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkxJiYg
X0xlZnQsIF9UeTImJiBfUmlnaHQpIGNvbnN0DQogICAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KHN0
YXRpY19jYXN0PF9UeTEmJj4oX0xlZnQpICogc3RhdGljX2Nhc3Q8X1R5MiYmPihfUmlnaHQpKSkg
DQogICAgICAgIC0+IGRlY2x0eXBlKHN0YXRpY19jYXN0PF9UeTEmJj4oX0xlZnQpICogc3RhdGlj
X2Nhc3Q8X1R5MiYmPihfUmlnaHQpKSB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHkx
JiY+KF9MZWZ0KSAqIHN0YXRpY19jYXN0PF9UeTImJj4oX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB1
c2luZyBpc190cmFuc3BhcmVudCA9IGludDsNCn07DQoNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBl
cXVhbF90bzx2b2lkPiB7DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQog
ICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkxJiYgX0xlZnQsIF9UeTImJiBfUmlnaHQp
IGNvbnN0DQogICAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KHN0YXRpY19jYXN0PF9UeTEmJj4oX0xl
ZnQpID09IHN0YXRpY19jYXN0PF9UeTImJj4oX1JpZ2h0KSkpIA0KICAgICAgICAtPiBkZWNsdHlw
ZShzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSA9PSBzdGF0aWNfY2FzdDxfVHkyJiY+KF9SaWdo
dCkpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeTEmJj4oX0xlZnQpID09IHN0YXRp
Y19jYXN0PF9UeTImJj4oX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB1c2luZyBpc190cmFuc3BhcmVu
dCA9IGludDsNCn07DQoNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBub3RfZXF1YWxfdG88dm9pZD4g
ew0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KICAgIGNvbnN0ZXhwciBh
dXRvIG9wZXJhdG9yKCkoX1R5MSYmIF9MZWZ0LCBfVHkyJiYgX1JpZ2h0KSBjb25zdA0KICAgICAg
ICBub2V4Y2VwdChub2V4Y2VwdChzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSAhPSBzdGF0aWNf
Y2FzdDxfVHkyJiY+KF9SaWdodCkpKSANCiAgICAgICAgLT4gZGVjbHR5cGUoc3RhdGljX2Nhc3Q8
X1R5MSYmPihfTGVmdCkgIT0gc3RhdGljX2Nhc3Q8X1R5MiYmPihfUmlnaHQpKSB7DQogICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSAhPSBzdGF0aWNfY2FzdDxfVHkyJiY+
KF9SaWdodCk7DQogICAgfQ0KDQogICAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSBpbnQ7DQp9Ow0K
DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgZ3JlYXRlcjx2b2lkPiB7DQogICAgdGVtcGxhdGUgPGNs
YXNzIF9UeTEsIGNsYXNzIF9UeTI+DQogICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkx
JiYgX0xlZnQsIF9UeTImJiBfUmlnaHQpIGNvbnN0DQogICAgICAgIG5vZXhjZXB0KG5vZXhjZXB0
KHN0YXRpY19jYXN0PF9UeTEmJj4oX0xlZnQpID4gc3RhdGljX2Nhc3Q8X1R5MiYmPihfUmlnaHQp
KSkgDQogICAgICAgIC0+IGRlY2x0eXBlKHN0YXRpY19jYXN0PF9UeTEmJj4oX0xlZnQpID4gc3Rh
dGljX2Nhc3Q8X1R5MiYmPihfUmlnaHQpKSB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxf
VHkxJiY+KF9MZWZ0KSA+IHN0YXRpY19jYXN0PF9UeTImJj4oX1JpZ2h0KTsNCiAgICB9DQoNCiAg
ICB1c2luZyBpc190cmFuc3BhcmVudCA9IGludDsNCn07DQoNCg0KdGVtcGxhdGUgPD4NCnN0cnVj
dCBsZXNzPHZvaWQ+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCiAg
ICBjb25zdGV4cHIgYXV0byBvcGVyYXRvcigpKF9UeTEmJiBfTGVmdCwgX1R5MiYmIF9SaWdodCkg
Y29uc3QNCiAgICAgICAgbm9leGNlcHQobm9leGNlcHQoc3RhdGljX2Nhc3Q8X1R5MSYmPihfTGVm
dCkgPCBzdGF0aWNfY2FzdDxfVHkyJiY+KF9SaWdodCkpKSANCiAgICAgICAgLT4gZGVjbHR5cGUo
c3RhdGljX2Nhc3Q8X1R5MSYmPihfTGVmdCkgPCBzdGF0aWNfY2FzdDxfVHkyJiY+KF9SaWdodCkp
IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeTEmJj4oX0xlZnQpIDwgc3RhdGljX2Nh
c3Q8X1R5MiYmPihfUmlnaHQpOw0KICAgIH0NCg0KICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0g
aW50Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0IGdyZWF0ZXJfZXF1YWw8dm9pZD4gew0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KICAgIGNvbnN0ZXhwciBhdXRv
IG9wZXJhdG9yKCkoX1R5MSYmIF9MZWZ0LCBfVHkyJiYgX1JpZ2h0KSBjb25zdA0KICAgICAgICBu
b2V4Y2VwdChub2V4Y2VwdChzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSA+PSBzdGF0aWNfY2Fz
dDxfVHkyJiY+KF9SaWdodCkpKSANCiAgICAgICAgLT4gZGVjbHR5cGUoc3RhdGljX2Nhc3Q8X1R5
MSYmPihfTGVmdCkgPj0gc3RhdGljX2Nhc3Q8X1R5MiYmPihfUmlnaHQpKSB7DQogICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSA+PSBzdGF0aWNfY2FzdDxfVHkyJiY+KF9S
aWdodCk7DQogICAgfQ0KDQogICAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSBpbnQ7DQp9Ow0KDQoN
CnRlbXBsYXRlIDw+DQpzdHJ1Y3QgbGVzc19lcXVhbDx2b2lkPiB7DQogICAgdGVtcGxhdGUgPGNs
YXNzIF9UeTEsIGNsYXNzIF9UeTI+DQogICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkx
JiYgX0xlZnQsIF9UeTImJiBfUmlnaHQpIGNvbnN0DQogICAgICAgIG5vZXhjZXB0KG5vZXhjZXB0
KHN0YXRpY19jYXN0PF9UeTEmJj4oX0xlZnQpIDw9IHN0YXRpY19jYXN0PF9UeTImJj4oX1JpZ2h0
KSkpIA0KICAgICAgICAtPiBkZWNsdHlwZShzdGF0aWNfY2FzdDxfVHkxJiY+KF9MZWZ0KSA8PSBz
dGF0aWNfY2FzdDxfVHkyJiY+KF9SaWdodCkpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PF9UeTEmJj4oX0xlZnQpIDw9IHN0YXRpY19jYXN0PF9UeTImJj4oX1JpZ2h0KTsNCiAgICB9DQoN
CiAgICB1c2luZyBpc190cmFuc3BhcmVudCA9IGludDsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeSogYWRkcmVzc29mKF9UeSYgX1ZhbCkg
bm9leGNlcHQgew0KICAgIHJldHVybiBfX2J1aWx0aW5fYWRkcmVzc29mKF9WYWwpOw0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KY29uc3QgX1R5KiBhZGRyZXNzb2YoY29uc3QgX1R5JiYpID0g
ZGVsZXRlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUHRydHk+DQpbW25vZGlzY2FyZF1dIGNvbnN0
ZXhwciBhdXRvIF9VbmZhbmN5KF9QdHJ0eSBfUHRyKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiA6
OnN0ZDo6IGFkZHJlc3NvZigqX1B0cik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBfVHkqIF9VbmZhbmN5KF9UeSogX1B0cikgbm9leGNlcHQgeyAN
CiAgICByZXR1cm4gX1B0cjsNCn0NCn0NCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0ZGRlZiINCg0K
DQoNCg0KI2xpbmUgMzA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhzdGRkZWYiDQoNCiNsaW5lIDMwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RkZGVmIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDMxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4
c3RkZGVmIg0KDQoNCg0KDQoNCg0KI2xpbmUgMzI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdGRkZWYiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM1MCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RkZGVmIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RkZGVmIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDIzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdGRkZWYiDQoNCg0KDQojcHJhZ21hIHdh
cm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBvcCkNCiNsaW5lIDQyOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RkZGVmIg0KI2xpbmUgNDMwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdGRkZWYi
DQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx0eXBlX3RyYWl0cyINCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5p
bmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5
NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMg
NDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyAp
DQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBfVHkuLi4g
X1ZhbHM+DQpzdHJ1Y3QgaW50ZWdlcl9zZXF1ZW5jZSB7IA0KICAgIHN0YXRpY19hc3NlcnQoaXNf
aW50ZWdyYWxfdjxfVHk+LCAiaW50ZWdlcl9zZXF1ZW5jZTxULCBJLi4uPiByZXF1aXJlcyBUIHRv
IGJlIGFuIGludGVncmFsIHR5cGUuIik7DQoNCiAgICB1c2luZyB2YWx1ZV90eXBlID0gX1R5Ow0K
DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplKCkgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gc2l6ZW9mLi4uKF9WYWxzKTsNCiAgICB9DQp9Ow0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHksIF9UeSBfU2l6ZT4NCnVzaW5nIG1ha2VfaW50ZWdlcl9zZXF1ZW5j
ZSA9IF9fbWFrZV9pbnRlZ2VyX3NlcTxpbnRlZ2VyX3NlcXVlbmNlLCBfVHksIF9TaXplPjsNCg0K
dGVtcGxhdGUgPHNpemVfdC4uLiBfVmFscz4NCnVzaW5nIGluZGV4X3NlcXVlbmNlID0gaW50ZWdl
cl9zZXF1ZW5jZTxzaXplX3QsIF9WYWxzLi4uPjsNCg0KdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4N
CnVzaW5nIG1ha2VfaW5kZXhfc2VxdWVuY2UgPSBtYWtlX2ludGVnZXJfc2VxdWVuY2U8c2l6ZV90
LCBfU2l6ZT47DQoNCnRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXM+DQp1c2luZyBpbmRleF9zZXF1
ZW5jZV9mb3IgPSBtYWtlX2luZGV4X3NlcXVlbmNlPHNpemVvZi4uLihfVHlwZXMpPjsNCg0KDQp0
ZW1wbGF0ZSA8Ym9vbCBfRmlyc3RfdmFsdWUsIGNsYXNzIF9GaXJzdCwgY2xhc3MuLi4gX1Jlc3Q+
DQpzdHJ1Y3QgX0Nvbmp1bmN0aW9uIHsgDQogICAgdXNpbmcgdHlwZSA9IF9GaXJzdDsNCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHJ1ZSwgY2xhc3MgX05leHQsIGNsYXNzLi4uIF9SZXN0Pg0Kc3Ry
dWN0IF9Db25qdW5jdGlvbjx0cnVlLCBfVHJ1ZSwgX05leHQsIF9SZXN0Li4uPiB7IA0KICAgIHVz
aW5nIHR5cGUgPSB0eXBlbmFtZSBfQ29uanVuY3Rpb248X05leHQ6OnZhbHVlLCBfTmV4dCwgX1Jl
c3QuLi4+Ojp0eXBlOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzLi4uIF9UcmFpdHM+DQpzdHJ1Y3Qg
Y29uanVuY3Rpb24gOiB0cnVlX3R5cGUge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0ZpcnN0LCBj
bGFzcy4uLiBfUmVzdD4NCnN0cnVjdCBjb25qdW5jdGlvbjxfRmlyc3QsIF9SZXN0Li4uPiA6IF9D
b25qdW5jdGlvbjxfRmlyc3Q6OnZhbHVlLCBfRmlyc3QsIF9SZXN0Li4uPjo6dHlwZSB7DQogICAg
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1RyYWl0cz4NCmlubGluZSBjb25zdGV4cHIgYm9v
bCBjb25qdW5jdGlvbl92ID0gY29uanVuY3Rpb248X1RyYWl0cy4uLj46OnZhbHVlOw0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHJhaXQ+DQpzdHJ1Y3QgbmVnYXRpb24gOiBib29sX2NvbnN0YW50PCFz
dGF0aWNfY2FzdDxib29sPihfVHJhaXQ6OnZhbHVlKT4ge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RyYWl0Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIG5lZ2F0aW9uX3YgPSBuZWdhdGlvbjxfVHJh
aXQ+Ojp2YWx1ZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R5cGVzPg0Kc3RydWN0IF9Bcmdf
dHlwZXMge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MT4NCnN0cnVjdCBfQXJnX3R5cGVzPF9U
eTE+IHsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5
cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBl
LCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysr
MTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQ
UkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FS
TklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcu
IildXSB0eXBlZGVmIF9UeTEgYXJndW1lbnRfdHlwZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0IF9BcmdfdHlwZXM8X1R5MSwgX1R5Mj4gew0KICAgIFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
X1R5MSBmaXJzdF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RM
NDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUs
IGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
QURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5MiBzZWNvbmRfYXJndW1lbnRfdHlw
ZTsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfSXNfZnVuY3Rpb24geyAN
CiAgICB1c2luZyBfQm9vbF90eXBlID0gZmFsc2VfdHlwZTsgDQp9Ow0KDQoNCg0KDQoNCg0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rp
b248X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgICA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsg
dXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0
MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwg
Zmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFy
ZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19B
REFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NY
WDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVj
ZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9u
PF9SZXQgX192ZWN0b3JjYWxsKF9UeXBlcy4uLikgICA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+
IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0
ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9u
PF9SZXQgX19jZGVjbChfVHlwZXMuLi4pIGNvbnN0ICA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+
IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0
aW9uPF9SZXQgX192ZWN0b3JjYWxsKF9UeXBlcy4uLikgY29uc3QgID4gOiBfQXJnX3R5cGVzPF9U
eXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5
cGU7IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNf
ZnVuY3Rpb248X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgdm9sYXRpbGUgID4gOiBfQXJnX3R5cGVz
PF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQo
ICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBh
cmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5
cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9T
SUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBf
U0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhh
dCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0
X3R5cGU7IH07ICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVj
dCBfSXNfZnVuY3Rpb248X1JldCBfX3ZlY3RvcmNhbGwoX1R5cGVzLi4uKSB2b2xhdGlsZSAgPiA6
IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
X1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBl
cz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fY2RlY2woX1R5cGVzLi4uKSBjb25zdCB2b2xh
dGlsZSAgPiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVl
X3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0
eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFu
ZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNB
VElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5H
UyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1d
IHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNs
YXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fdmVjdG9yY2FsbChfVHlw
ZXMuLi4pIGNvbnN0IHZvbGF0aWxlICA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcg
X0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBN
YW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3Rf
YXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXBy
ZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9S
X1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RF
UFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQg
dGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8
Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX19j
ZGVjbChfVHlwZXMuLi4pICAmID4gOiBfQXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1c2luZyBfQm9v
bF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkg
cmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1
bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0
ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQ
RURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVD
QVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz
IHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07ICAgIHRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldCBfX3Zl
Y3RvcmNhbGwoX1R5cGVzLi4uKSAgJiA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcg
X0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBN
YW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3Rf
YXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXBy
ZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9S
X1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RF
UFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQg
dGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8
Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX19j
ZGVjbChfVHlwZXMuLi4pIGNvbnN0ICYgPiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5n
IF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzog
TWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0
X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVw
cmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRP
Ul9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19E
RVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVk
IHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgICAgdGVtcGxh
dGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0
IF9fdmVjdG9yY2FsbChfVHlwZXMuLi4pIGNvbnN0ICYgPiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4u
PiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcg
U1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5
cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVm
cyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hY
MTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FM
TF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZl
IHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsg
dGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlv
bjxfUmV0IF9fY2RlY2woX1R5cGVzLi4uKSB2b2xhdGlsZSAmID4gOiBfQXJnX3R5cGVzPF9UeXBl
cy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJu
aW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVu
dF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlw
ZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7
IH07ICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNf
ZnVuY3Rpb248X1JldCBfX3ZlY3RvcmNhbGwoX1R5cGVzLi4uKSB2b2xhdGlsZSAmID4gOiBfQXJn
X3R5cGVzPF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJl
Y2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5k
IGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3Vt
ZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVm
aW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAi
ICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVk
Z2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQg
cmVzdWx0X3R5cGU7IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0
cnVjdCBfSXNfZnVuY3Rpb248X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgY29uc3Qgdm9sYXRpbGUg
JiA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlw
ZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVk
ZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNl
Y29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZ
b3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9O
X1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRv
IGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlw
ZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mu
Li4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX192ZWN0b3JjYWxsKF9UeXBlcy4u
LikgY29uc3Qgdm9sYXRpbGUgJiA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jv
b2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55
IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJn
dW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNh
dGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZ
UEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJF
Q0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhp
cyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX19jZGVj
bChfVHlwZXMuLi4pICAmJiA+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xf
dHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJl
c3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1l
bnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVk
IGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVE
RUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FU
SU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3
YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX192ZWN0
b3JjYWxsKF9UeXBlcy4uLikgICYmID4gOiBfQXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1c2luZyBf
Qm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1h
bnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9h
cmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJl
Y2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1Jf
VFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQ
UkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldCBfX2Nk
ZWNsKF9UeXBlcy4uLikgY29uc3QgJiYgPiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5n
IF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzog
TWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0
X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVw
cmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRP
Ul9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19E
RVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVk
IHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgICAgdGVtcGxh
dGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0
IF9fdmVjdG9yY2FsbChfVHlwZXMuLi4pIGNvbnN0ICYmID4gOiBfQXJnX3R5cGVzPF9UeXBlcy4u
Lj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5n
IFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90
eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRl
ZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NY
WDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9B
TExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2
ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07
IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rp
b248X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgdm9sYXRpbGUgJiYgPiA6IF9BcmdfdHlwZXM8X1R5
cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndh
cm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3Vt
ZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0
eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVO
Q0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxF
TkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlv
dSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlw
ZTsgfTsgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9J
c19mdW5jdGlvbjxfUmV0IF9fdmVjdG9yY2FsbChfVHlwZXMuLi4pIHZvbGF0aWxlICYmID4gOiBf
QXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2Rl
cHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAi
YW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2Fy
Z3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4g
ZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklO
RyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93
bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9S
ZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+
IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgY29uc3Qgdm9sYXRp
bGUgJiYgPiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVl
X3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0
eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFu
ZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNB
VElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5H
UyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1d
IHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNs
YXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fdmVjdG9yY2FsbChfVHlw
ZXMuLi4pIGNvbnN0IHZvbGF0aWxlICYmID4gOiBfQXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1c2lu
ZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6
IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJz
dF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRl
cHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBU
T1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdf
REVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZl
ZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRl
IDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldCBf
X2NkZWNsKF9UeXBlcy4uLikgICBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1
c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQw
MDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBm
aXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJl
IGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FE
QVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hY
MTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNl
aXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07ICAgIHRl
bXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248
X1JldCBfX3ZlY3RvcmNhbGwoX1R5cGVzLi4uKSAgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5
cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndh
cm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3Vt
ZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0
eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVO
Q0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxF
TkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlv
dSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlw
ZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19m
dW5jdGlvbjxfUmV0IF9fY2RlY2woX1R5cGVzLi4uKSBjb25zdCAgbm9leGNlcHQ+IDogX0FyZ190
eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNh
dGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBh
bGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVu
dF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmlu
ZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAi
b3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdl
IHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJl
c3VsdF90eXBlOyB9OyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBz
dHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX192ZWN0b3JjYWxsKF9UeXBlcy4uLikgY29uc3QgIG5v
ZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVl
X3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0
eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFu
ZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNB
VElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5H
UyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1d
IHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNz
Li4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fY2RlY2woX1R5cGVzLi4uKSB2
b2xhdGlsZSAgbm9leGNlcHQ+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xf
dHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJl
c3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1l
bnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVk
IGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVE
RUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FU
SU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3
YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX192ZWN0
b3JjYWxsKF9UeXBlcy4uLikgdm9sYXRpbGUgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5cGVz
Li4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5p
bmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50
X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBl
ZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0Vf
Q1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNF
X0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBo
YXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsg
fTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5j
dGlvbjxfUmV0IF9fY2RlY2woX1R5cGVzLi4uKSBjb25zdCB2b2xhdGlsZSAgbm9leGNlcHQ+IDog
X0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIg
ImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9h
cmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2Fu
IGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBf
UmV0IHJlc3VsdF90eXBlOyB9OyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5
cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX192ZWN0b3JjYWxsKF9UeXBlcy4uLikgY29u
c3Qgdm9sYXRpbGUgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9C
b29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFu
eSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2Fy
Z3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVj
YXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9U
WVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBS
RUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRo
aXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNs
YXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fY2Rl
Y2woX1R5cGVzLi4uKSAgJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1c2lu
ZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6
IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJz
dF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRl
cHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBU
T1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdf
REVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZl
ZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07ICAgIHRlbXBs
YXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1Jl
dCBfX3ZlY3RvcmNhbGwoX1R5cGVzLi4uKSAgJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPF9UeXBl
cy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJu
aW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVu
dF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlw
ZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7
IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVu
Y3Rpb248X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgY29uc3QgJiBub2V4Y2VwdD4gOiBfQXJnX3R5
cGVzPF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0
ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFs
bCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50
X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5l
IF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJv
ciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2Ug
dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVz
dWx0X3R5cGU7IH07ICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0
cnVjdCBfSXNfZnVuY3Rpb248X1JldCBfX3ZlY3RvcmNhbGwoX1R5cGVzLi4uKSBjb25zdCAmIG5v
ZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVl
X3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0
eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFu
ZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNB
VElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5H
UyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1d
IHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNz
Li4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fY2RlY2woX1R5cGVzLi4uKSB2
b2xhdGlsZSAmIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29s
X3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSBy
ZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3Vt
ZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRl
ZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBF
REVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNB
VElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMg
d2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgICAgdGVtcGxhdGUgPGNs
YXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fdmVj
dG9yY2FsbChfVHlwZXMuLi4pIHZvbGF0aWxlICYgbm9leGNlcHQ+IDogX0FyZ190eXBlczxfVHlw
ZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2Fy
bmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1l
bnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5
cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5D
RV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVO
Q0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91
IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBl
OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1
bmN0aW9uPF9SZXQgX19jZGVjbChfVHlwZXMuLi4pIGNvbnN0IHZvbGF0aWxlICYgbm9leGNlcHQ+
IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsg
W1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZz
ICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29u
ZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3Ug
Y2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dB
Uk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFj
a25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRl
ZiBfUmV0IHJlc3VsdF90eXBlOyB9OyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4g
X1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX192ZWN0b3JjYWxsKF9UeXBlcy4uLikg
Y29uc3Qgdm9sYXRpbGUgJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1c2lu
ZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6
IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJz
dF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRl
cHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBU
T1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdf
REVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZl
ZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRl
IDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldCBf
X2NkZWNsKF9UeXBlcy4uLikgICYmIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7
IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RM
NDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUs
IGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
QURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgICAg
dGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlv
bjxfUmV0IF9fdmVjdG9yY2FsbChfVHlwZXMuLi4pICAmJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVz
PF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQo
ICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBh
cmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5
cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9T
SUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBf
U0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhh
dCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0
X3R5cGU7IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBf
SXNfZnVuY3Rpb248X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgY29uc3QgJiYgbm9leGNlcHQ+IDog
X0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIg
ImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9h
cmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2Fu
IGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBf
UmV0IHJlc3VsdF90eXBlOyB9OyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5
cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX192ZWN0b3JjYWxsKF9UeXBlcy4uLikgY29u
c3QgJiYgbm9leGNlcHQ+IDogX0FyZ190eXBlczxfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlw
ZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3Vs
dF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRf
dHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZT
X0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9O
X1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJu
aW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQgX19jZGVjbChfVHlw
ZXMuLi4pIHZvbGF0aWxlICYmIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7IHVz
aW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAw
NzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZp
cnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUg
ZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURB
UFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgx
N19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2Vp
dmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgICAgdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxf
UmV0IF9fdmVjdG9yY2FsbChfVHlwZXMuLi4pIHZvbGF0aWxlICYmIG5vZXhjZXB0PiA6IF9Bcmdf
dHlwZXM8X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVj
YXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQg
YWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1l
bnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZp
bmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIg
Im9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRn
ZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCBy
ZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3Ry
dWN0IF9Jc19mdW5jdGlvbjxfUmV0IF9fY2RlY2woX1R5cGVzLi4uKSBjb25zdCB2b2xhdGlsZSAm
JiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0g
dHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5
cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBl
LCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysr
MTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQ
UkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FS
TklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcu
IildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07ICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0
LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldCBfX3ZlY3RvcmNhbGwo
X1R5cGVzLi4uKSBjb25zdCB2b2xhdGlsZSAmJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPF9UeXBl
cy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJu
aW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVu
dF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlw
ZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7
IH07DQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5
cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4pID4geyB1c2luZyBf
Qm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1h
bnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9h
cmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJl
Y2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1Jf
VFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQ
UkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldChfVHlw
ZXMuLi4sIC4uLikgY29uc3Q+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXBy
ZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFu
ZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1
bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRl
ZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcg
IiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xl
ZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0
IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBz
dHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4pIHZvbGF0aWxlPiB7IHVzaW5n
IF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzog
TWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0
X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVw
cmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRP
Ul9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19E
RVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVk
IHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUg
PGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0KF9U
eXBlcy4uLiwgLi4uKSBjb25zdCB2b2xhdGlsZT4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90
eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlw
ZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQg
c2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIg
IllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJ
T05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1Mg
dG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0
eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4u
LiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldChfVHlwZXMuLi4sIC4uLikgJj4geyB1
c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQw
MDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBm
aXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJl
IGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FE
QVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hY
MTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNl
aXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBs
YXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1Jl
dChfVHlwZXMuLi4sIC4uLikgY29uc3QmPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7
IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVm
cyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNv
bmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91
IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9X
QVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBh
Y2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVk
ZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9U
eXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0KF9UeXBlcy4uLiwgLi4uKSB2b2xhdGlsZSY+
IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0
ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9u
PF9SZXQoX1R5cGVzLi4uLCAuLi4pIGNvbnN0IHZvbGF0aWxlJj4geyB1c2luZyBfQm9vbF90eXBl
ID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0
X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90
eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4g
QysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNf
REVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05f
V0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5p
bmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0
LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldChfVHlwZXMuLi4sIC4u
LikgJiY+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2Fy
bmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1l
bnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5
cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5D
RV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVO
Q0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91
IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBl
OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1
bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4pIGNvbnN0JiY+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9
IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90
eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlw
ZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMr
KzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RF
UFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dB
Uk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5n
LiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwg
Y2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4p
IHZvbGF0aWxlJiY+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVk
KCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwg
YXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90
eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBf
U0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3Ig
X1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRo
YXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3Vs
dF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3Qg
X0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4pIGNvbnN0IHZvbGF0aWxlJiY+IHsgdXNp
bmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3
OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmly
c3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBk
ZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQ
VE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3
X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2
ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0
ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQo
X1R5cGVzLi4uLCAuLi4pIG5vZXhjZXB0PiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7
IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVm
cyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNv
bmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91
IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9X
QVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBh
Y2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVk
ZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9U
eXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0KF9UeXBlcy4uLiwgLi4uKSBjb25zdCBub2V4
Y2VwdD4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJu
aW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVu
dF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlw
ZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7
IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVu
Y3Rpb248X1JldChfVHlwZXMuLi4sIC4uLikgdm9sYXRpbGUgbm9leGNlcHQ+IHsgdXNpbmcgX0Jv
b2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55
IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJn
dW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNh
dGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZ
UEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJF
Q0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhp
cyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVz
Li4uLCAuLi4pIGNvbnN0IHZvbGF0aWxlIG5vZXhjZXB0PiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0
cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlw
ZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUs
IGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysx
Ny4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBS
RUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJO
SU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4i
KV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNs
YXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0KF9UeXBlcy4uLiwgLi4uKSAm
bm9leGNlcHQ+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAi
d2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJn
dW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBl
IHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lM
RU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJ
TEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQg
eW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90
eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lz
X2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4pIGNvbnN0JiBub2V4Y2VwdD4geyB1c2luZyBf
Qm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1h
bnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9h
cmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJl
Y2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1Jf
VFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQ
UkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IH07IHRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfZnVuY3Rpb248X1JldChfVHlw
ZXMuLi4sIC4uLikgdm9sYXRpbGUmIG5vZXhjZXB0PiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVl
X3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0
eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFu
ZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNB
VElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5H
UyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1d
IHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNz
Li4uIF9UeXBlcz4gc3RydWN0IF9Jc19mdW5jdGlvbjxfUmV0KF9UeXBlcy4uLiwgLi4uKSBjb25z
dCB2b2xhdGlsZSYgbm9leGNlcHQ+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIg
ImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9h
cmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2Fu
IGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBf
UmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVz
PiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4pICYmbm9leGNlcHQ+IHsg
dXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0
MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwg
Zmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFy
ZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19B
REFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NY
WDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVj
ZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1w
bGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9S
ZXQoX1R5cGVzLi4uLCAuLi4pIGNvbnN0JiYgbm9leGNlcHQ+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9
IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90
eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlw
ZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMr
KzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RF
UFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dB
Uk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5n
LiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwg
Y2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4p
IHZvbGF0aWxlJiYgbm9leGNlcHQ+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIg
ImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9h
cmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2Fu
IGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBf
UmV0IHJlc3VsdF90eXBlOyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVz
PiBzdHJ1Y3QgX0lzX2Z1bmN0aW9uPF9SZXQoX1R5cGVzLi4uLCAuLi4pIGNvbnN0IHZvbGF0aWxl
JiYgbm9leGNlcHQ+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVk
KCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwg
YXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90
eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBf
U0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3Ig
X1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRo
YXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3Vs
dF90eXBlOyB9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfZnVuY3Rpb24g
OiBfSXNfZnVuY3Rpb248X1R5Pjo6X0Jvb2xfdHlwZSB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfZnVuY3Rpb25fdiA9IF9Jc19mdW5jdGlvbjxf
VHk+OjpfQm9vbF90eXBlOjp2YWx1ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBf
SXNfbWVtZnVucHRyIHsgDQogICAgdXNpbmcgX0Jvb2xfdHlwZSA9IGZhbHNlX3R5cGU7IA0KfTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAs
IGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX19jZGVjbCBfQXJn
MDo6KikoX1R5cGVzLi4uKSAgID4gOiBfQXJnX3R5cGVzPCBfQXJnMCosIF9UeXBlcy4uLj4geyB1
c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQw
MDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBm
aXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJl
IGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FE
QVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hY
MTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNl
aXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9D
bGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1l
X3Y8aW50ICwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9OyAgICAgdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRy
PF9SZXQgKF9fdmVjdG9yY2FsbCBfQXJnMDo6KikoX1R5cGVzLi4uKSAgID4gOiBfQXJnX3R5cGVz
PCBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2Rl
cHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAi
YW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2Fy
Z3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4g
ZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklO
RyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93
bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9S
ZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90
eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+
OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4g
c3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX19jZGVjbCBfQXJnMDo6KikoX1R5cGVzLi4uKSBj
b25zdCAgPiA6IF9BcmdfdHlwZXM8Y29uc3QgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jv
b2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55
IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJn
dW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNh
dGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZ
UEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJF
Q0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhp
cyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlw
ZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAs
IGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj
bGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChf
X3ZlY3RvcmNhbGwgX0FyZzA6OiopKF9UeXBlcy4uLikgY29uc3QgID4gOiBfQXJnX3R5cGVzPGNv
bnN0IF9BcmcwKiwgX1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
X1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRl
X3R5cGUgPSBlbmFibGVfaWY8IWlzX3NhbWVfdjxpbnQgLCBpbnQmJj4sIF9SZXQoX1R5cGVzLi4u
KT47IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVz
PiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX2NkZWNsIF9BcmcwOjoqKShfVHlwZXMuLi4p
IHZvbGF0aWxlICA+IDogX0FyZ190eXBlczx2b2xhdGlsZSBfQXJnMCosIF9UeXBlcy4uLj4geyB1
c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQw
MDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBm
aXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJl
IGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FE
QVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hY
MTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNl
aXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9D
bGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1l
X3Y8aW50ICwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9OyAgICAgdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRy
PF9SZXQgKF9fdmVjdG9yY2FsbCBfQXJnMDo6KikoX1R5cGVzLi4uKSB2b2xhdGlsZSAgPiA6IF9B
cmdfdHlwZXM8dm9sYXRpbGUgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9
IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90
eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlw
ZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMr
KzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RF
UFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dB
Uk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5n
LiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9Bcmcw
OyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAsIGludCYmPiwg
X1JldChfVHlwZXMuLi4pPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBj
bGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6
OiopKF9UeXBlcy4uLikgY29uc3Qgdm9sYXRpbGUgID4gOiBfQXJnX3R5cGVzPGNvbnN0IHZvbGF0
aWxlIF9BcmcwKiwgX1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
X1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRl
X3R5cGUgPSBlbmFibGVfaWY8IWlzX3NhbWVfdjxpbnQgLCBpbnQmJj4sIF9SZXQoX1R5cGVzLi4u
KT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9U
eXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX192ZWN0b3JjYWxsIF9BcmcwOjoqKShf
VHlwZXMuLi4pIGNvbnN0IHZvbGF0aWxlICA+IDogX0FyZ190eXBlczxjb25zdCB2b2xhdGlsZSBf
QXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJl
Y2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5k
IGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3Vt
ZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVm
aW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAi
ICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVk
Z2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQg
cmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBl
ID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9
OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3Ry
dWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX19jZGVjbCBfQXJnMDo6KikoX1R5cGVzLi4uKSAgJiA+
IDogX0FyZ190eXBlczwgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRy
dWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBl
IHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwg
YW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3
LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJF
Q0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5J
TkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIp
XV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1
c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAmLCBpbnQmJj4sIF9S
ZXQoX1R5cGVzLi4uKT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAs
IGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX192ZWN0b3JjYWxs
IF9BcmcwOjoqKShfVHlwZXMuLi4pICAmID4gOiBfQXJnX3R5cGVzPCBfQXJnMCosIF9UeXBlcy4u
Lj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5n
IFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90
eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRl
ZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NY
WDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9B
TExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2
ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVz
aW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFp
c19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgdGVtcGxhdGUgPGNs
YXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVu
cHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4uLikgY29uc3QgJiA+IDogX0FyZ190
eXBlczxjb25zdCBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90
eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlw
ZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQg
c2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIg
IllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJ
T05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1Mg
dG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0
eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5n
IF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1JldChf
VHlwZXMuLi4pPjsgfTsgICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xh
c3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0Fy
ZzA6OiopKF9UeXBlcy4uLikgY29uc3QgJiA+IDogX0FyZ190eXBlczxjb25zdCBfQXJnMCosIF9U
eXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5
cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxl
X2lmPCFpc19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgdGVtcGxh
dGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNf
bWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4uLikgdm9sYXRpbGUgJiA+
IDogX0FyZ190eXBlczx2b2xhdGlsZSBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90
eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0g
X0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYsIGlu
dCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFz
cyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX3Zl
Y3RvcmNhbGwgX0FyZzA6OiopKF9UeXBlcy4uLikgdm9sYXRpbGUgJiA+IDogX0FyZ190eXBlczx2
b2xhdGlsZSBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBl
OyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRl
ZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vj
b25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllv
dSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05f
V0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8g
YWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBl
ZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9H
dWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1JldChfVHlw
ZXMuLi4pPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBf
VHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBl
cy4uLikgY29uc3Qgdm9sYXRpbGUgJiA+IDogX0FyZ190eXBlczxjb25zdCB2b2xhdGlsZSBfQXJn
MCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0
ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFs
bCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50
X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5l
IF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJv
ciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2Ug
dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVz
dWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0g
ZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsg
ICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBz
dHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0FyZzA6OiopKF9UeXBlcy4u
LikgY29uc3Qgdm9sYXRpbGUgJiA+IDogX0FyZ190eXBlczxjb25zdCB2b2xhdGlsZSBfQXJnMCos
IF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQo
ICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBh
cmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5
cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9T
SUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBf
U0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhh
dCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0
X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5h
YmxlX2lmPCFpc19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBf
SXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4uLikgICYmID4gOiBf
QXJnX3R5cGVzPCBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90
eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlw
ZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQg
c2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIg
IllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJ
T05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1Mg
dG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0
eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5n
IF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYmLCBpbnQmJj4sIF9SZXQo
X1R5cGVzLi4uKT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNs
YXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX192ZWN0b3JjYWxsIF9B
cmcwOjoqKShfVHlwZXMuLi4pICAmJiA+IDogX0FyZ190eXBlczwgX0FyZzAqLCBfVHlwZXMuLi4+
IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2lu
ZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNf
c2FtZV92PGludCAmJiwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9OyB0ZW1wbGF0ZSA8Y2xh
c3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5w
dHI8X1JldCAoX19jZGVjbCBfQXJnMDo6KikoX1R5cGVzLi4uKSBjb25zdCAmJiA+IDogX0FyZ190
eXBlczxjb25zdCBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90
eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlw
ZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQg
c2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIg
IllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJ
T05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1Mg
dG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0
eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5n
IF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYmLCBpbnQmJj4sIF9SZXQo
X1R5cGVzLi4uKT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNs
YXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX192ZWN0b3JjYWxsIF9B
cmcwOjoqKShfVHlwZXMuLi4pIGNvbnN0ICYmID4gOiBfQXJnX3R5cGVzPGNvbnN0IF9BcmcwKiwg
X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCgg
Indhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFy
Z3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlw
ZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJ
TEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9T
SUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0
IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRf
dHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUgPSBlbmFi
bGVfaWY8IWlzX3NhbWVfdjxpbnQgJiYsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBf
SXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4uLikgdm9sYXRpbGUg
JiYgPiA6IF9BcmdfdHlwZXM8dm9sYXRpbGUgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jv
b2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55
IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJn
dW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNh
dGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZ
UEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJF
Q0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhp
cyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlw
ZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAm
JiwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9OyAgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQs
IGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQg
KF9fdmVjdG9yY2FsbCBfQXJnMDo6KikoX1R5cGVzLi4uKSB2b2xhdGlsZSAmJiA+IDogX0FyZ190
eXBlczx2b2xhdGlsZSBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1
ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUg
dHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBh
bmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcu
ICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVD
QVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklO
R1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIild
XSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVz
aW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYmLCBpbnQmJj4sIF9S
ZXQoX1R5cGVzLi4uKT47IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xh
c3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX2NkZWNsIF9BcmcwOjoq
KShfVHlwZXMuLi4pIGNvbnN0IHZvbGF0aWxlICYmID4gOiBfQXJnX3R5cGVzPGNvbnN0IHZvbGF0
aWxlIF9BcmcwKiwgX1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
X1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRl
X3R5cGUgPSBlbmFibGVfaWY8IWlzX3NhbWVfdjxpbnQgJiYsIGludCYmPiwgX1JldChfVHlwZXMu
Li4pPjsgfTsgICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4g
X1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0FyZzA6Oiop
KF9UeXBlcy4uLikgY29uc3Qgdm9sYXRpbGUgJiYgPiA6IF9BcmdfdHlwZXM8Y29uc3Qgdm9sYXRp
bGUgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIg
ImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9h
cmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2Fu
IGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBf
UmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVf
dHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAmJiwgaW50JiY+LCBfUmV0KF9UeXBlcy4u
Lik+OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBl
cz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX19jZGVjbCBfQXJnMDo6KikoX1R5cGVzLi4u
KSAgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8IF9BcmcwKiwgX1R5cGVzLi4uPiB7IHVzaW5nIF9C
b29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFu
eSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2Fy
Z3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVj
YXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9U
WVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBS
RUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRo
aXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5
cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUgPSBlbmFibGVfaWY8IWlzX3NhbWVfdjxpbnQg
LCBpbnQmJj4sIF9SZXQoX1R5cGVzLi4uKT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwg
Y2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAo
X192ZWN0b3JjYWxsIF9BcmcwOjoqKShfVHlwZXMuLi4pICAgbm9leGNlcHQ+IDogX0FyZ190eXBl
czwgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIg
ImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9h
cmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2Fu
IGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBf
UmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVf
dHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAsIGludCYmPiwgX1JldChfVHlwZXMuLi4p
PjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+
IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4uLikg
Y29uc3QgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8Y29uc3QgX0FyZzAqLCBfVHlwZXMuLi4+IHsg
dXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0
MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwg
Zmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFy
ZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19B
REFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NY
WDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVj
ZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBf
Q2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2Ft
ZV92PGludCAsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgICAgIHRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0
cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0FyZzA6OiopKF9UeXBlcy4uLikgY29uc3QgIG5vZXhjZXB0
PiA6IF9BcmdfdHlwZXM8Y29uc3QgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlw
ZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3Vs
dF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRf
dHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZT
X0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9O
X1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJu
aW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9B
cmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAsIGludCYm
PiwgX1JldChfVHlwZXMuLi4pPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9Bcmcw
LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0Fy
ZzA6OiopKF9UeXBlcy4uLikgdm9sYXRpbGUgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8dm9sYXRp
bGUgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIg
ImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9h
cmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2Fu
IGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBf
UmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVf
dHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAsIGludCYmPiwgX1JldChfVHlwZXMuLi4p
PjsgfTsgICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5
cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0FyZzA6OiopKF9U
eXBlcy4uLikgdm9sYXRpbGUgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8dm9sYXRpbGUgX0FyZzAq
LCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVk
KCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwg
YXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90
eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBf
U0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3Ig
X1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRo
YXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3Vs
dF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVu
YWJsZV9pZjwhaXNfc2FtZV92PGludCAsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBf
SXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4uLikgY29uc3Qgdm9s
YXRpbGUgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8Y29uc3Qgdm9sYXRpbGUgX0FyZzAqLCBfVHlw
ZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2Fy
bmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1l
bnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5
cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5D
RV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVO
Q0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91
IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBl
OyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9p
ZjwhaXNfc2FtZV92PGludCAsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgICAgIHRlbXBs
YXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lz
X21lbWZ1bnB0cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0FyZzA6OiopKF9UeXBlcy4uLikgY29uc3Qg
dm9sYXRpbGUgIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8Y29uc3Qgdm9sYXRpbGUgX0FyZzAqLCBf
VHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAi
d2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJn
dW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBl
IHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lM
RU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJ
TEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQg
eW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90
eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJs
ZV9pZjwhaXNfc2FtZV92PGludCAsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgdGVtcGxh
dGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNf
bWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4uLikgICYgbm9leGNlcHQ+
IDogX0FyZ190eXBlczwgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRy
dWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBl
IHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwg
YW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3
LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJF
Q0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5J
TkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIp
XV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1
c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAmLCBpbnQmJj4sIF9S
ZXQoX1R5cGVzLi4uKT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAs
IGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX192ZWN0b3JjYWxs
IF9BcmcwOjoqKShfVHlwZXMuLi4pICAmIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8IF9BcmcwKiwg
X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCgg
Indhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFy
Z3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlw
ZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJ
TEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9T
SUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0
IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRf
dHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUgPSBlbmFi
bGVfaWY8IWlzX3NhbWVfdjxpbnQgJiwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9OyB0ZW1w
bGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9J
c19tZW1mdW5wdHI8X1JldCAoX19jZGVjbCBfQXJnMDo6KikoX1R5cGVzLi4uKSBjb25zdCAmIG5v
ZXhjZXB0PiA6IF9BcmdfdHlwZXM8Y29uc3QgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jv
b2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55
IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJn
dW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNh
dGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZ
UEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJF
Q0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhp
cyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlw
ZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAm
LCBpbnQmJj4sIF9SZXQoX1R5cGVzLi4uKT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwg
Y2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAo
X192ZWN0b3JjYWxsIF9BcmcwOjoqKShfVHlwZXMuLi4pIGNvbnN0ICYgbm9leGNlcHQ+IDogX0Fy
Z190eXBlczxjb25zdCBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1
ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUg
dHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBh
bmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcu
ICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVD
QVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklO
R1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIild
XSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVz
aW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1Jl
dChfVHlwZXMuLi4pPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFz
cy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6Oiop
KF9UeXBlcy4uLikgdm9sYXRpbGUgJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPHZvbGF0aWxlIF9B
cmcwKiwgX1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVj
YXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQg
YWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1l
bnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZp
bmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIg
Im9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRn
ZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCBy
ZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUg
PSBlbmFibGVfaWY8IWlzX3NhbWVfdjxpbnQgJiwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9
OyAgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+
IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fdmVjdG9yY2FsbCBfQXJnMDo6KikoX1R5cGVz
Li4uKSB2b2xhdGlsZSAmIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8dm9sYXRpbGUgX0FyZzAqLCBf
VHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAi
d2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJn
dW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBl
IHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lM
RU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJ
TEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQg
eW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90
eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJs
ZV9pZjwhaXNfc2FtZV92PGludCAmLCBpbnQmJj4sIF9SZXQoX1R5cGVzLi4uKT47IH07IHRlbXBs
YXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lz
X21lbWZ1bnB0cjxfUmV0IChfX2NkZWNsIF9BcmcwOjoqKShfVHlwZXMuLi4pIGNvbnN0IHZvbGF0
aWxlICYgbm9leGNlcHQ+IDogX0FyZ190eXBlczxjb25zdCB2b2xhdGlsZSBfQXJnMCosIF9UeXBl
cy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJu
aW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVu
dF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlw
ZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7
IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lm
PCFpc19zYW1lX3Y8aW50ICYsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgICAgIHRlbXBs
YXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lz
X21lbWZ1bnB0cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0FyZzA6OiopKF9UeXBlcy4uLikgY29uc3Qg
dm9sYXRpbGUgJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPGNvbnN0IHZvbGF0aWxlIF9BcmcwKiwg
X1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCgg
Indhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFy
Z3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlw
ZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJ
TEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9T
SUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0
IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRf
dHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUgPSBlbmFi
bGVfaWY8IWlzX3NhbWVfdjxpbnQgJiwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9OyB0ZW1w
bGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9J
c19tZW1mdW5wdHI8X1JldCAoX19jZGVjbCBfQXJnMDo6KikoX1R5cGVzLi4uKSAgJiYgbm9leGNl
cHQ+IDogX0FyZ190eXBlczwgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9
IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90
eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlw
ZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMr
KzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RF
UFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dB
Uk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5n
LiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9Bcmcw
OyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAmJiwgaW50JiY+
LCBfUmV0KF9UeXBlcy4uLik+OyB9OyAgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9B
cmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fdmVjdG9y
Y2FsbCBfQXJnMDo6KikoX1R5cGVzLi4uKSAgJiYgbm9leGNlcHQ+IDogX0FyZ190eXBlczwgX0Fy
ZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNh
dGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBh
bGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVu
dF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmlu
ZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAi
b3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdl
IHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJl
c3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9
IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAmJiwgaW50JiY+LCBfUmV0KF9UeXBlcy4uLik+OyB9
OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3Ry
dWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX19jZGVjbCBfQXJnMDo6KikoX1R5cGVzLi4uKSBjb25z
dCAmJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPGNvbnN0IF9BcmcwKiwgX1R5cGVzLi4uPiB7IHVz
aW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAw
NzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZp
cnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUg
ZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURB
UFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgx
N19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2Vp
dmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0Ns
YXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUgPSBlbmFibGVfaWY8IWlzX3NhbWVf
djxpbnQgJiYsIGludCYmPiwgX1JldChfVHlwZXMuLi4pPjsgfTsgICAgIHRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0
cjxfUmV0IChfX3ZlY3RvcmNhbGwgX0FyZzA6OiopKF9UeXBlcy4uLikgY29uc3QgJiYgbm9leGNl
cHQ+IDogX0FyZ190eXBlczxjb25zdCBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90
eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0g
X0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYmLCBp
bnQmJj4sIF9SZXQoX1R5cGVzLi4uKT47IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBf
QXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfX2NkZWNs
IF9BcmcwOjoqKShfVHlwZXMuLi4pIHZvbGF0aWxlICYmIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8
dm9sYXRpbGUgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlw
ZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVk
ZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNl
Y29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZ
b3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9O
X1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRv
IGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlw
ZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBf
R3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAmJiwgaW50JiY+LCBfUmV0KF9U
eXBlcy4uLik+OyB9OyAgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFz
cy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fdmVjdG9yY2FsbCBfQXJn
MDo6KikoX1R5cGVzLi4uKSB2b2xhdGlsZSAmJiBub2V4Y2VwdD4gOiBfQXJnX3R5cGVzPHZvbGF0
aWxlIF9BcmcwKiwgX1R5cGVzLi4uPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
X1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRl
X3R5cGUgPSBlbmFibGVfaWY8IWlzX3NhbWVfdjxpbnQgJiYsIGludCYmPiwgX1JldChfVHlwZXMu
Li4pPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlw
ZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9fY2RlY2wgX0FyZzA6OiopKF9UeXBlcy4u
LikgY29uc3Qgdm9sYXRpbGUgJiYgbm9leGNlcHQ+IDogX0FyZ190eXBlczxjb25zdCB2b2xhdGls
ZSBfQXJnMCosIF9UeXBlcy4uLj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2Rl
cHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAi
YW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2Fy
Z3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4g
ZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklO
RyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93
bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9S
ZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90
eXBlID0gZW5hYmxlX2lmPCFpc19zYW1lX3Y8aW50ICYmLCBpbnQmJj4sIF9SZXQoX1R5cGVzLi4u
KT47IH07ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9U
eXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX192ZWN0b3JjYWxsIF9BcmcwOjoqKShf
VHlwZXMuLi4pIGNvbnN0IHZvbGF0aWxlICYmIG5vZXhjZXB0PiA6IF9BcmdfdHlwZXM8Y29uc3Qg
dm9sYXRpbGUgX0FyZzAqLCBfVHlwZXMuLi4+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlw
ZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVk
ZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNl
Y29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZ
b3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9O
X1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRv
IGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlw
ZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBf
R3VpZGVfdHlwZSA9IGVuYWJsZV9pZjwhaXNfc2FtZV92PGludCAmJiwgaW50JiY+LCBfUmV0KF9U
eXBlcy4uLik+OyB9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9S
ZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9S
ZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVl
X3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0
eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFu
ZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNB
VElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5H
UyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1d
IHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNp
bmcgX0d1aWRlX3R5cGUgPSBlbmFibGVfaWY8ZmFsc2U+OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1Jl
dCAoX0FyZzA6OiopKF9UeXBlcy4uLiwgLi4uKSBjb25zdD4geyB1c2luZyBfQm9vbF90eXBlID0g
dHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5
cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBl
LCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysr
MTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQ
UkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FS
TklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcu
IildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7
IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRy
PF9SZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgdm9sYXRpbGU+IHsgdXNpbmcgX0Jvb2xf
dHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJl
c3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1l
bnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVk
IGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVE
RUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FU
SU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3
YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9
IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjxmYWxzZT47IH07IHRlbXBsYXRl
IDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21l
bWZ1bnB0cjxfUmV0IChfQXJnMDo6KikoX1R5cGVzLi4uLCAuLi4pIGNvbnN0IHZvbGF0aWxlPiB7
IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RM
NDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUs
IGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
QURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgdXNpbmcg
X0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUgPSBlbmFibGVfaWY8ZmFsc2U+
OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4g
c3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX0FyZzA6OiopKF9UeXBlcy4uLiwgLi4uKSAmPiB7
IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RM
NDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUs
IGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
QURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsgdXNpbmcg
X0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5cGUgPSBlbmFibGVfaWY8ZmFsc2U+
OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4g
c3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX0FyZzA6OiopKF9UeXBlcy4uLiwgLi4uKSBjb25z
dCY+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2Fybmlu
ZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRf
dHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVk
ZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9D
WFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0Vf
QUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhh
dmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1
c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjxm
YWxzZT47IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5
cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfQXJnMDo6KikoX1R5cGVzLi4uLCAuLi4p
IHZvbGF0aWxlJj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQo
ICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBh
cmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5
cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9T
SUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBf
U0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhh
dCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0
X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5h
YmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFz
cy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9BcmcwOjoqKShfVHlwZXMu
Li4sIC4uLikgY29uc3Qgdm9sYXRpbGUmPiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7
IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVm
cyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNv
bmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91
IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9X
QVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBh
Y2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVk
ZWYgX1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1
aWRlX3R5cGUgPSBlbmFibGVfaWY8ZmFsc2U+OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xh
c3MgX0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX0Fy
ZzA6OiopKF9UeXBlcy4uLiwgLi4uKSAmJj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBl
OyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRl
ZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vj
b25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllv
dSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05f
V0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8g
YWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBl
ZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9H
dWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNs
YXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9B
cmcwOjoqKShfVHlwZXMuLi4sIC4uLikgY29uc3QmJj4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1
ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUg
dHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBh
bmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcu
ICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVD
QVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklO
R1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIild
XSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVz
aW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9S
ZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9S
ZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgdm9sYXRpbGUmJj4geyB1c2luZyBfQm9vbF90
eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0g
X0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUg
PGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVt
ZnVucHRyPF9SZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgY29uc3Qgdm9sYXRpbGUmJj4g
eyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNU
TDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBl
LCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMg
YXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3
X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExf
Q1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSBy
ZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5n
IF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNl
PjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+
IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgbm9l
eGNlcHQ+IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2Fy
bmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1l
bnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5
cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5D
RV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVO
Q0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91
IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBl
OyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9p
ZjxmYWxzZT47IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4g
X1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfQXJnMDo6KikoX1R5cGVzLi4uLCAu
Li4pIGNvbnN0IG5vZXhjZXB0PiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtbZGVw
cmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJh
bmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJn
dW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBk
ZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5H
ICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3ds
ZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1Jl
dCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRlX3R5
cGUgPSBlbmFibGVfaWY8ZmFsc2U+OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0Fy
ZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX0FyZzA6Oiop
KF9UeXBlcy4uLiwgLi4uKSB2b2xhdGlsZSBub2V4Y2VwdD4geyB1c2luZyBfQm9vbF90eXBlID0g
dHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5
cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBl
LCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysr
MTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQ
UkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FS
TklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcu
IildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7
IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRy
PF9SZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgY29uc3Qgdm9sYXRpbGUgbm9leGNlcHQ+
IHsgdXNpbmcgX0Jvb2xfdHlwZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2lu
ZyBfQ2xhc3NfdHlwZSA9IF9BcmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjxmYWxz
ZT47IH07IHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVz
PiBzdHJ1Y3QgX0lzX21lbWZ1bnB0cjxfUmV0IChfQXJnMDo6KikoX1R5cGVzLi4uLCAuLi4pICZu
b2V4Y2VwdD4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5
cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxl
X2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4u
LiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4s
IC4uLikgY29uc3QmIG5vZXhjZXB0PiB7IHVzaW5nIF9Cb29sX3R5cGUgPSB0cnVlX3R5cGU7IFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
X1JldCByZXN1bHRfdHlwZTsgdXNpbmcgX0NsYXNzX3R5cGUgPSBfQXJnMDsgdXNpbmcgX0d1aWRl
X3R5cGUgPSBlbmFibGVfaWY8ZmFsc2U+OyB9OyB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X0FyZzAsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9Jc19tZW1mdW5wdHI8X1JldCAoX0FyZzA6
OiopKF9UeXBlcy4uLiwgLi4uKSB2b2xhdGlsZSYgbm9leGNlcHQ+IHsgdXNpbmcgX0Jvb2xfdHlw
ZSA9IHRydWVfdHlwZTsgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3Vs
dF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRf
dHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZT
X0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9O
X1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJu
aW5nLiIpXV0gdHlwZWRlZiBfUmV0IHJlc3VsdF90eXBlOyB1c2luZyBfQ2xhc3NfdHlwZSA9IF9B
cmcwOyB1c2luZyBfR3VpZGVfdHlwZSA9IGVuYWJsZV9pZjxmYWxzZT47IH07IHRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcyBfQXJnMCwgY2xhc3MuLi4gX1R5cGVzPiBzdHJ1Y3QgX0lzX21lbWZ1
bnB0cjxfUmV0IChfQXJnMDo6KikoX1R5cGVzLi4uLCAuLi4pIGNvbnN0IHZvbGF0aWxlJiBub2V4
Y2VwdD4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJu
aW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVu
dF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlw
ZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7
IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lm
PGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBf
VHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4u
LikgJiZub2V4Y2VwdD4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0
ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFs
bCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50
X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5l
IF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJv
ciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2Ug
dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVz
dWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0g
ZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBj
bGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQgKF9BcmcwOjoqKShfVHlw
ZXMuLi4sIC4uLikgY29uc3QmJiBub2V4Y2VwdD4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90
eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlw
ZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQg
c2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIg
IllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJ
T05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1Mg
dG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0
eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5n
IF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVtcGxhdGUgPGNsYXNzIF9SZXQs
IGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfSXNfbWVtZnVucHRyPF9SZXQg
KF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgdm9sYXRpbGUmJiBub2V4Y2VwdD4geyB1c2luZyBf
Qm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1h
bnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9h
cmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJl
Y2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1Jf
VFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQ
UkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVzdWx0X3R5cGU7IHVzaW5nIF9DbGFzc190
eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0gZW5hYmxlX2lmPGZhbHNlPjsgfTsgdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9BcmcwLCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBf
SXNfbWVtZnVucHRyPF9SZXQgKF9BcmcwOjoqKShfVHlwZXMuLi4sIC4uLikgY29uc3Qgdm9sYXRp
bGUmJiBub2V4Y2VwdD4geyB1c2luZyBfQm9vbF90eXBlID0gdHJ1ZV90eXBlOyBbW2RlcHJlY2F0
ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFs
bCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50
X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5l
IF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJv
ciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2Ug
dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9SZXQgcmVz
dWx0X3R5cGU7IHVzaW5nIF9DbGFzc190eXBlID0gX0FyZzA7IHVzaW5nIF9HdWlkZV90eXBlID0g
ZW5hYmxlX2lmPGZhbHNlPjsgfTsNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUg
Y29uc3RleHByIGJvb2wgaXNfdm9pZF92ID0gaXNfc2FtZV92PHJlbW92ZV9jdl90PF9UeT4sIHZv
aWQ+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX3ZvaWQgOiBib29sX2NvbnN0
YW50PGlzX3ZvaWRfdjxfVHk+PiB7fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R5cGVzPg0K
dXNpbmcgdm9pZF90ID0gdm9pZDsNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3Qg
YWRkX2NvbnN0IHsgDQogICAgdXNpbmcgdHlwZSA9IGNvbnN0IF9UeTsNCn07DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQp1c2luZyBhZGRfY29uc3RfdCA9IHR5cGVuYW1lIGFkZF9jb25zdDxfVHk+
Ojp0eXBlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgYWRkX3ZvbGF0aWxlIHsg
DQogICAgdXNpbmcgdHlwZSA9IHZvbGF0aWxlIF9UeTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHk+DQp1c2luZyBhZGRfdm9sYXRpbGVfdCA9IHR5cGVuYW1lIGFkZF92b2xhdGlsZTxfVHk+Ojp0
eXBlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgYWRkX2N2IHsgDQogICAgdXNp
bmcgdHlwZSA9IGNvbnN0IHZvbGF0aWxlIF9UeTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+
DQp1c2luZyBhZGRfY3ZfdCA9IHR5cGVuYW1lIGFkZF9jdjxfVHk+Ojp0eXBlOw0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHksIGNsYXNzID0gdm9pZD4NCnN0cnVjdCBfQWRkX3JlZmVyZW5jZSB7IA0K
ICAgIHVzaW5nIF9MdmFsdWUgPSBfVHk7DQogICAgdXNpbmcgX1J2YWx1ZSA9IF9UeTsNCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0FkZF9yZWZlcmVuY2U8X1R5LCB2b2lkX3Q8
X1R5Jj4+IHsgDQogICAgdXNpbmcgX0x2YWx1ZSA9IF9UeSY7DQogICAgdXNpbmcgX1J2YWx1ZSA9
IF9UeSYmOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGFkZF9sdmFsdWVf
cmVmZXJlbmNlIHsNCiAgICB1c2luZyB0eXBlID0gdHlwZW5hbWUgX0FkZF9yZWZlcmVuY2U8X1R5
Pjo6X0x2YWx1ZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyBhZGRfbHZhbHVl
X3JlZmVyZW5jZV90ID0gdHlwZW5hbWUgX0FkZF9yZWZlcmVuY2U8X1R5Pjo6X0x2YWx1ZTsNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlIHsNCiAg
ICB1c2luZyB0eXBlID0gdHlwZW5hbWUgX0FkZF9yZWZlcmVuY2U8X1R5Pjo6X1J2YWx1ZTsNCn07
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyBhZGRfcnZhbHVlX3JlZmVyZW5jZV90ID0g
dHlwZW5hbWUgX0FkZF9yZWZlcmVuY2U8X1R5Pjo6X1J2YWx1ZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5Pg0KYWRkX3J2YWx1ZV9yZWZlcmVuY2VfdDxfVHk+IGRlY2x2YWwoKSBub2V4Y2VwdDsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IHJlbW92ZV9leHRlbnQgeyANCiAgICB1
c2luZyB0eXBlID0gX1R5Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgc2l6ZV90IF9JeD4N
CnN0cnVjdCByZW1vdmVfZXh0ZW50PF9UeVtfSXhdPiB7DQogICAgdXNpbmcgdHlwZSA9IF9UeTsN
Cn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgcmVtb3ZlX2V4dGVudDxfVHlbXT4g
ew0KICAgIHVzaW5nIHR5cGUgPSBfVHk7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KdXNp
bmcgcmVtb3ZlX2V4dGVudF90ID0gdHlwZW5hbWUgcmVtb3ZlX2V4dGVudDxfVHk+Ojp0eXBlOw0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzIHsgDQog
ICAgdXNpbmcgdHlwZSA9IF9UeTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBf
SXg+DQpzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzPF9UeVtfSXhdPiB7DQogICAgdXNpbmcgdHlw
ZSA9IHR5cGVuYW1lIHJlbW92ZV9hbGxfZXh0ZW50czxfVHk+Ojp0eXBlOw0KfTsNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCnN0cnVjdCByZW1vdmVfYWxsX2V4dGVudHM8X1R5W10+IHsNCiAgICB1
c2luZyB0eXBlID0gdHlwZW5hbWUgcmVtb3ZlX2FsbF9leHRlbnRzPF9UeT46OnR5cGU7DQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KdXNpbmcgcmVtb3ZlX2FsbF9leHRlbnRzX3QgPSB0eXBl
bmFtZSByZW1vdmVfYWxsX2V4dGVudHM8X1R5Pjo6dHlwZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5Pg0Kc3RydWN0IHJlbW92ZV9wb2ludGVyIHsNCiAgICB1c2luZyB0eXBlID0gX1R5Ow0KfTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCByZW1vdmVfcG9pbnRlcjxfVHkqPiB7DQog
ICAgdXNpbmcgdHlwZSA9IF9UeTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3Qg
cmVtb3ZlX3BvaW50ZXI8X1R5KiBjb25zdD4gew0KICAgIHVzaW5nIHR5cGUgPSBfVHk7DQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IHJlbW92ZV9wb2ludGVyPF9UeSogdm9sYXRp
bGU+IHsNCiAgICB1c2luZyB0eXBlID0gX1R5Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4N
CnN0cnVjdCByZW1vdmVfcG9pbnRlcjxfVHkqIGNvbnN0IHZvbGF0aWxlPiB7DQogICAgdXNpbmcg
dHlwZSA9IF9UeTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyByZW1vdmVfcG9p
bnRlcl90ID0gdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8X1R5Pjo6dHlwZTsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0FkZF9wb2ludGVyIHsgDQogICAg
dXNpbmcgdHlwZSA9IF9UeTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0Fk
ZF9wb2ludGVyPF9UeSwgdm9pZF90PHJlbW92ZV9yZWZlcmVuY2VfdDxfVHk+Kj4+IHsgDQogICAg
dXNpbmcgdHlwZSA9IHJlbW92ZV9yZWZlcmVuY2VfdDxfVHk+KjsNCn07DQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHk+DQpzdHJ1Y3QgYWRkX3BvaW50ZXIgew0KICAgIHVzaW5nIHR5cGUgPSB0eXBlbmFt
ZSBfQWRkX3BvaW50ZXI8X1R5Pjo6dHlwZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1
c2luZyBhZGRfcG9pbnRlcl90ID0gdHlwZW5hbWUgX0FkZF9wb2ludGVyPF9UeT46OnR5cGU7DQoN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfYXJyYXlfdiA9
IGZhbHNlOyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgc2l6ZV90IF9OeD4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCBpc19hcnJheV92PF9UeVtfTnhdPiA9IHRydWU7DQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfYXJyYXlfdjxfVHlbXT4gPSB0cnVlOw0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX2FycmF5IDogYm9vbF9jb25zdGFudDxp
c19hcnJheV92PF9UeT4+IHt9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMzQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHR5cGVfdHJhaXRzIg0KDQoNCnRlbXBsYXRlIDxjbGFzcz4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCBpc19sdmFsdWVfcmVmZXJlbmNlX3YgPSBmYWxzZTsgDQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbHZhbHVlX3JlZmVyZW5jZV92PF9U
eSY+ID0gdHJ1ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc19sdmFsdWVfcmVm
ZXJlbmNlIDogYm9vbF9jb25zdGFudDxpc19sdmFsdWVfcmVmZXJlbmNlX3Y8X1R5Pj4ge307DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3J2YWx1ZV9yZWZl
cmVuY2VfdiA9IGZhbHNlOyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4
cHIgYm9vbCBpc19ydmFsdWVfcmVmZXJlbmNlX3Y8X1R5JiY+ID0gdHJ1ZTsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCnN0cnVjdCBpc19ydmFsdWVfcmVmZXJlbmNlIDogYm9vbF9jb25zdGFudDxp
c19ydmFsdWVfcmVmZXJlbmNlX3Y8X1R5Pj4ge307DQoNCg0KdGVtcGxhdGUgPGNsYXNzPg0KaW5s
aW5lIGNvbnN0ZXhwciBib29sIGlzX3JlZmVyZW5jZV92ID0gZmFsc2U7IA0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3JlZmVyZW5jZV92PF9UeSY+ID0g
dHJ1ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19y
ZWZlcmVuY2VfdjxfVHkmJj4gPSB0cnVlOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0
IGlzX3JlZmVyZW5jZSA6IGJvb2xfY29uc3RhbnQ8aXNfcmVmZXJlbmNlX3Y8X1R5Pj4ge307DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgYm9vbCBfUG1mID0gX0lzX21lbWZ1bnB0cjxfVHk+Ojpf
Qm9vbF90eXBlOjp2YWx1ZT4NCnN0cnVjdCBfSXNfbWVtYmVyX29iamVjdF9wb2ludGVyIHsgDQog
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gZmFsc2U7DQp9Ow0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCnN0cnVjdCBfSXNfbWVtYmVyX29iamVjdF9wb2ludGVy
PF9UeTEgX1R5Mjo6KiwgZmFsc2U+IHsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUg
PSB0cnVlOw0KICAgIHVzaW5nIF9DbGFzc190eXBlICAgICAgICAgICA9IF9UeTI7DQp9Ow0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX21lbWJlcl9vYmpl
Y3RfcG9pbnRlcl92ID0gDQogICAgX0lzX21lbWJlcl9vYmplY3RfcG9pbnRlcjxyZW1vdmVfY3Zf
dDxfVHk+Pjo6dmFsdWU7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfbWVtYmVy
X29iamVjdF9wb2ludGVyIDogYm9vbF9jb25zdGFudDxpc19tZW1iZXJfb2JqZWN0X3BvaW50ZXJf
djxfVHk+PiB7fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBi
b29sIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX3YgPSANCiAgICBfSXNfbWVtZnVucHRyPHJl
bW92ZV9jdl90PF9UeT4+OjpfQm9vbF90eXBlOjp2YWx1ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9U
eT4NCnN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlciA6IGJvb2xfY29uc3RhbnQ8aXNf
bWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfdjxfVHk+PiB7fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3M+
DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfcG9pbnRlcl92ID0gZmFsc2U7IA0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3BvaW50ZXJfdjxfVHkqPiA9
IHRydWU7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNf
cG9pbnRlcl92PF9UeSogY29uc3Q+ID0gdHJ1ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlu
bGluZSBjb25zdGV4cHIgYm9vbCBpc19wb2ludGVyX3Y8X1R5KiB2b2xhdGlsZT4gPSB0cnVlOw0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3BvaW50ZXJf
djxfVHkqIGNvbnN0IHZvbGF0aWxlPiA9IHRydWU7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpz
dHJ1Y3QgaXNfcG9pbnRlciA6IGJvb2xfY29uc3RhbnQ8aXNfcG9pbnRlcl92PF9UeT4+IHt9Ow0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbnVsbF9w
b2ludGVyX3YgPQ0KICAgIGlzX3NhbWVfdjxyZW1vdmVfY3ZfdDxfVHk+LCBudWxscHRyX3Q+OyAN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc19udWxsX3BvaW50ZXIgOiBib29sX2Nv
bnN0YW50PGlzX251bGxfcG9pbnRlcl92PF9UeT4+IHt9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHk+DQpzdHJ1Y3QgaXNfdW5pb24gOiBib29sX2NvbnN0YW50PF9faXNfdW5pb24oX1R5KT4ge307
IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3VuaW9u
X3YgPSBfX2lzX3VuaW9uKF9UeSk7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBp
c19jbGFzcyA6IGJvb2xfY29uc3RhbnQ8X19pc19jbGFzcyhfVHkpPiB7fTsgDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfY2xhc3NfdiA9IF9faXNfY2xh
c3MoX1R5KTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29s
IGlzX2Z1bmRhbWVudGFsX3YgPSBpc19hcml0aG1ldGljX3Y8X1R5PiB8fCBpc192b2lkX3Y8X1R5
PiB8fCBpc19udWxsX3BvaW50ZXJfdjxfVHk+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3Ry
dWN0IGlzX2Z1bmRhbWVudGFsIDogYm9vbF9jb25zdGFudDxpc19mdW5kYW1lbnRhbF92PF9UeT4+
IHt9OyANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlz
X29iamVjdF92ID0gIWlzX2Z1bmN0aW9uX3Y8X1R5PiAmJiAhaXNfcmVmZXJlbmNlX3Y8X1R5PiAm
JiAhaXNfdm9pZF92PF9UeT47DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfb2Jq
ZWN0IDogYm9vbF9jb25zdGFudDxpc19vYmplY3RfdjxfVHk+PiB7fTsgDQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9Gcm9tLCBjbGFzcyBfVG8+DQpzdHJ1Y3QgaXNfY29udmVydGlibGUgOiBib29sX2Nv
bnN0YW50PF9faXNfY29udmVydGlibGVfdG8oX0Zyb20sIF9Ubyk+IHsNCiAgICANCn07DQoNCnRl
bXBsYXRlIDxjbGFzcyBfRnJvbSwgY2xhc3MgX1RvPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlz
X2NvbnZlcnRpYmxlX3YgPSBfX2lzX2NvbnZlcnRpYmxlX3RvKF9Gcm9tLCBfVG8pOw0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfZW51bSA6IGJvb2xfY29uc3RhbnQ8X19pc19l
bnVtKF9UeSk+IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIg
Ym9vbCBpc19lbnVtX3YgPSBfX2lzX2VudW0oX1R5KTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
Pg0Kc3RydWN0IGlzX2NvbXBvdW5kIDogYm9vbF9jb25zdGFudDwhaXNfZnVuZGFtZW50YWxfdjxf
VHk+PiB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wg
aXNfY29tcG91bmRfdiA9ICFpc19mdW5kYW1lbnRhbF92PF9UeT47DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19tZW1iZXJfcG9pbnRlcl92ID0gaXNf
bWVtYmVyX29iamVjdF9wb2ludGVyX3Y8X1R5PiB8fCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRl
cl92PF9UeT47DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfbWVtYmVyX3BvaW50
ZXIgOiBib29sX2NvbnN0YW50PGlzX21lbWJlcl9wb2ludGVyX3Y8X1R5Pj4ge307IA0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfc2NhbGFyX3YgPSAN
CiAgICBpc19hcml0aG1ldGljX3Y8X1R5PiB8fCBpc19lbnVtX3Y8X1R5PiB8fCBpc19wb2ludGVy
X3Y8X1R5PiB8fCBpc19tZW1iZXJfcG9pbnRlcl92PF9UeT4gfHwgaXNfbnVsbF9wb2ludGVyX3Y8
X1R5PjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc19zY2FsYXIgOiBib29sX2Nv
bnN0YW50PGlzX3NjYWxhcl92PF9UeT4+IHt9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcz4NCmlubGlu
ZSBjb25zdGV4cHIgYm9vbCBpc19jb25zdF92ID0gZmFsc2U7IA0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2NvbnN0X3Y8Y29uc3QgX1R5PiA9IHRydWU7
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfY29uc3QgOiBib29sX2NvbnN0YW50
PGlzX2NvbnN0X3Y8X1R5Pj4ge307DQoNCg0KdGVtcGxhdGUgPGNsYXNzPg0KaW5saW5lIGNvbnN0
ZXhwciBib29sIGlzX3ZvbGF0aWxlX3YgPSBmYWxzZTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+
DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfdm9sYXRpbGVfdjx2b2xhdGlsZSBfVHk+ID0gdHJ1
ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc192b2xhdGlsZSA6IGJvb2xfY29u
c3RhbnQ8aXNfdm9sYXRpbGVfdjxfVHk+PiB7fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
c3RydWN0ICBpc19wb2QgOiBib29sX2NvbnN0YW50PF9faXNfcG9kKF9UeSk+IHt9OyANCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeT4NCiBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNfcG9kX3YgPSBfX2lz
X3BvZChfVHkpOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfZW1wdHkgOiBi
b29sX2NvbnN0YW50PF9faXNfZW1wdHkoX1R5KT4ge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2VtcHR5X3YgPSBfX2lzX2VtcHR5KF9UeSk7DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc19wb2x5bW9ycGhpYyA6IGJvb2xfY29u
c3RhbnQ8X19pc19wb2x5bW9ycGhpYyhfVHkpPiB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+
DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfcG9seW1vcnBoaWNfdiA9IF9faXNfcG9seW1vcnBo
aWMoX1R5KTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX2Fic3RyYWN0IDog
Ym9vbF9jb25zdGFudDxfX2lzX2Fic3RyYWN0KF9UeSk+IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19hYnN0cmFjdF92ID0gX19pc19hYnN0cmFj
dChfVHkpOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfZmluYWwgOiBib29s
X2NvbnN0YW50PF9faXNfZmluYWwoX1R5KT4ge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
aW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2ZpbmFsX3YgPSBfX2lzX2ZpbmFsKF9UeSk7DQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc19zdGFuZGFyZF9sYXlvdXQgOiBib29sX2Nv
bnN0YW50PF9faXNfc3RhbmRhcmRfbGF5b3V0KF9UeSk+IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19zdGFuZGFyZF9sYXlvdXRfdiA9IF9faXNf
c3RhbmRhcmRfbGF5b3V0KF9UeSk7DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0
IFtbZGVwcmVjYXRlZCgid2FybmluZyBTVEw0MDEzOiAiICJzdGQ6OmlzX2xpdGVyYWxfdHlwZSBh
bmQgc3RkOjppc19saXRlcmFsX3R5cGVfdiBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91
IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfSVNfTElURVJBTF9UWVBFX0RFUFJFQ0FUSU9OX1dB
Uk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFj
a25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gaXNfbGl0
ZXJhbF90eXBlIDogYm9vbF9jb25zdGFudDxfX2lzX2xpdGVyYWxfdHlwZShfVHkpPiB7DQogICAg
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQw
MTM6ICIgInN0ZDo6aXNfbGl0ZXJhbF90eXBlIGFuZCBzdGQ6OmlzX2xpdGVyYWxfdHlwZV92IGFy
ZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19J
U19MSVRFUkFMX1RZUEVfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hY
MTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNl
aXZlZCB0aGlzIHdhcm5pbmcuIildXSBpbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbGl0ZXJhbF90
eXBlX3YgPSBfX2lzX2xpdGVyYWxfdHlwZShfVHkpOw0KI2xpbmUgNTc0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR5cGVfdHJhaXRzIg0KDQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc190cml2aWFsIDogYm9vbF9jb25zdGFudDxf
X2lzX3RyaXZpYWxseV9jb25zdHJ1Y3RpYmxlKF9UeSkgJiYgX19pc190cml2aWFsbHlfY29weWFi
bGUoX1R5KT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCBpc190cml2aWFsX3YgPSBfX2lzX3RyaXZpYWxseV9jb25zdHJ1Y3RpYmxlKF9U
eSkgJiYgX19pc190cml2aWFsbHlfY29weWFibGUoX1R5KTsNCg0KDQoNCg0KDQoNCiNsaW5lIDU5
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0eXBl
X3RyYWl0cyINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX3RyaXZpYWxseV9j
b3B5YWJsZSA6IGJvb2xfY29uc3RhbnQ8X19pc190cml2aWFsbHlfY29weWFibGUoX1R5KT4gew0K
ICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBp
c190cml2aWFsbHlfY29weWFibGVfdiA9IF9faXNfdHJpdmlhbGx5X2NvcHlhYmxlKF9UeSk7DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBoYXNfdmlydHVhbF9kZXN0cnVjdG9yIDog
Ym9vbF9jb25zdGFudDxfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoX1R5KT4gew0KICAgIA0KfTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBoYXNfdmlydHVh
bF9kZXN0cnVjdG9yX3YgPSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoX1R5KTsNCg0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaGFzX3VuaXF1ZV9vYmplY3RfcmVwcmVzZW50YXRp
b25zIDogYm9vbF9jb25zdGFudDxfX2hhc191bmlxdWVfb2JqZWN0X3JlcHJlc2VudGF0aW9ucyhf
VHkpPiB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhw
ciBib29sIGhhc191bmlxdWVfb2JqZWN0X3JlcHJlc2VudGF0aW9uc192ID0gX19oYXNfdW5pcXVl
X29iamVjdF9yZXByZXNlbnRhdGlvbnMoX1R5KTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
c3RydWN0IGlzX2FnZ3JlZ2F0ZSA6IGJvb2xfY29uc3RhbnQ8X19pc19hZ2dyZWdhdGUoX1R5KT4g
e307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2Fn
Z3JlZ2F0ZV92ID0gX19pc19hZ2dyZWdhdGUoX1R5KTsNCiNsaW5lIDYyNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0cyINCg0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzLi4uIF9BcmdzPg0Kc3RydWN0IGlzX2NvbnN0cnVj
dGlibGUgOiBib29sX2NvbnN0YW50PF9faXNfY29uc3RydWN0aWJsZShfVHksIF9BcmdzLi4uKT4g
ew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MuLi4gX0FyZ3M+DQppbmxp
bmUgY29uc3RleHByIGJvb2wgaXNfY29uc3RydWN0aWJsZV92ID0gX19pc19jb25zdHJ1Y3RpYmxl
KF9UeSwgX0FyZ3MuLi4pOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfY29w
eV9jb25zdHJ1Y3RpYmxlIDogYm9vbF9jb25zdGFudDxfX2lzX2NvbnN0cnVjdGlibGUoX1R5LCBh
ZGRfbHZhbHVlX3JlZmVyZW5jZV90PGNvbnN0IF9UeT4pPiB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2NvcHlfY29uc3RydWN0aWJs
ZV92ID0gX19pc19jb25zdHJ1Y3RpYmxlKF9UeSwgYWRkX2x2YWx1ZV9yZWZlcmVuY2VfdDxjb25z
dCBfVHk+KTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX2RlZmF1bHRfY29u
c3RydWN0aWJsZSA6IGJvb2xfY29uc3RhbnQ8X19pc19jb25zdHJ1Y3RpYmxlKF9UeSk+IHsNCiAg
ICANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNf
ZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX3YgPSBfX2lzX2NvbnN0cnVjdGlibGUoX1R5KTsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0lzX2ltcGxpY2l0bHlf
ZGVmYXVsdF9jb25zdHJ1Y3RpYmxlIDogZmFsc2VfdHlwZSB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5Pg0Kdm9pZCBfSW1wbGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdChjb25zdCBf
VHkmKTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfSXNfaW1wbGljaXRseV9kZWZh
dWx0X2NvbnN0cnVjdGlibGU8X1R5LCB2b2lkX3Q8ZGVjbHR5cGUoX0ltcGxpY2l0bHlfZGVmYXVs
dF9jb25zdHJ1Y3Q8X1R5Pih7fSkpPj4gOiB0cnVlX3R5cGUgew0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX21vdmVfY29uc3RydWN0aWJsZSA6IGJvb2xfY29uc3RhbnQ8
X19pc19jb25zdHJ1Y3RpYmxlKF9UeSwgX1R5KT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19tb3ZlX2NvbnN0cnVjdGlibGVfdiA9
IF9faXNfY29uc3RydWN0aWJsZShfVHksIF9UeSk7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Ubywg
Y2xhc3MgX0Zyb20+DQpzdHJ1Y3QgaXNfYXNzaWduYWJsZSA6IGJvb2xfY29uc3RhbnQ8X19pc19h
c3NpZ25hYmxlKF9UbywgX0Zyb20pPiB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVG8sIGNsYXNz
IF9Gcm9tPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2Fzc2lnbmFibGVfdiA9IF9faXNfYXNz
aWduYWJsZShfVG8sIF9Gcm9tKTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlz
X2NvcHlfYXNzaWduYWJsZQ0KICAgIDogYm9vbF9jb25zdGFudDxfX2lzX2Fzc2lnbmFibGUoYWRk
X2x2YWx1ZV9yZWZlcmVuY2VfdDxfVHk+LCBhZGRfbHZhbHVlX3JlZmVyZW5jZV90PGNvbnN0IF9U
eT4pPiB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhw
ciBib29sIGlzX2NvcHlfYXNzaWduYWJsZV92ID0gX19pc19hc3NpZ25hYmxlKA0KICAgIGFkZF9s
dmFsdWVfcmVmZXJlbmNlX3Q8X1R5PiwgYWRkX2x2YWx1ZV9yZWZlcmVuY2VfdDxjb25zdCBfVHk+
KTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9Jc19jb3B5X2Fzc2lnbmFibGVf
bm9fcHJlY29uZGl0aW9uX2NoZWNrDQogICAgOiBib29sX2NvbnN0YW50PF9faXNfYXNzaWduYWJs
ZV9ub19wcmVjb25kaXRpb25fY2hlY2soDQogICAgICAgICAgYWRkX2x2YWx1ZV9yZWZlcmVuY2Vf
dDxfVHk+LCBhZGRfbHZhbHVlX3JlZmVyZW5jZV90PGNvbnN0IF9UeT4pPiB7fTsNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNfY29weV9hc3NpZ25hYmxl
X3VuY2hlY2tlZF92ID0gX19pc19hc3NpZ25hYmxlX25vX3ByZWNvbmRpdGlvbl9jaGVjaygNCiAg
ICBhZGRfbHZhbHVlX3JlZmVyZW5jZV90PF9UeT4sIGFkZF9sdmFsdWVfcmVmZXJlbmNlX3Q8Y29u
c3QgX1R5Pik7DQoNCg0KDQoNCg0KDQojbGluZSA3MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHlwZV90cmFpdHMiDQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeT4NCnN0cnVjdCBpc19tb3ZlX2Fzc2lnbmFibGUgOiBib29sX2NvbnN0YW50PF9faXNf
YXNzaWduYWJsZShhZGRfbHZhbHVlX3JlZmVyZW5jZV90PF9UeT4sIF9UeSk+IHsNCiAgICANCn07
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbW92ZV9h
c3NpZ25hYmxlX3YgPSBfX2lzX2Fzc2lnbmFibGUoYWRkX2x2YWx1ZV9yZWZlcmVuY2VfdDxfVHk+
LCBfVHkpOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0lzX21vdmVfYXNzaWdu
YWJsZV9ub19wcmVjb25kaXRpb25fY2hlY2sNCiAgICA6IGJvb2xfY29uc3RhbnQ8X19pc19hc3Np
Z25hYmxlX25vX3ByZWNvbmRpdGlvbl9jaGVjayhhZGRfbHZhbHVlX3JlZmVyZW5jZV90PF9UeT4s
IF9UeSk+IHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29s
IF9Jc19tb3ZlX2Fzc2lnbmFibGVfdW5jaGVja2VkX3YgPSBfX2lzX2Fzc2lnbmFibGVfbm9fcHJl
Y29uZGl0aW9uX2NoZWNrKA0KICAgIGFkZF9sdmFsdWVfcmVmZXJlbmNlX3Q8X1R5PiwgX1R5KTsN
Cg0KDQoNCg0KDQoNCiNsaW5lIDczNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0cyINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
c3RydWN0IGlzX2Rlc3RydWN0aWJsZSA6IGJvb2xfY29uc3RhbnQ8X19pc19kZXN0cnVjdGlibGUo
X1R5KT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4
cHIgYm9vbCBpc19kZXN0cnVjdGlibGVfdiA9IF9faXNfZGVzdHJ1Y3RpYmxlKF9UeSk7DQoNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcy4uLiBfQXJncz4NCnN0cnVjdCBpc190cml2aWFs
bHlfY29uc3RydWN0aWJsZSA6IGJvb2xfY29uc3RhbnQ8X19pc190cml2aWFsbHlfY29uc3RydWN0
aWJsZShfVHksIF9BcmdzLi4uKT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwg
Y2xhc3MuLi4gX0FyZ3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfdHJpdmlhbGx5X2NvbnN0
cnVjdGlibGVfdiA9IF9faXNfdHJpdmlhbGx5X2NvbnN0cnVjdGlibGUoX1R5LCBfQXJncy4uLik7
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc190cml2aWFsbHlfY29weV9jb25z
dHJ1Y3RpYmxlDQogICAgOiBib29sX2NvbnN0YW50PF9faXNfdHJpdmlhbGx5X2NvbnN0cnVjdGli
bGUoX1R5LCBhZGRfbHZhbHVlX3JlZmVyZW5jZV90PGNvbnN0IF9UeT4pPiB7DQogICAgDQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3RyaXZpYWxs
eV9jb3B5X2NvbnN0cnVjdGlibGVfdiA9IF9faXNfdHJpdmlhbGx5X2NvbnN0cnVjdGlibGUoDQog
ICAgX1R5LCBhZGRfbHZhbHVlX3JlZmVyZW5jZV90PGNvbnN0IF9UeT4pOw0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfdHJpdmlhbGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZSA6
IGJvb2xfY29uc3RhbnQ8X19pc190cml2aWFsbHlfY29uc3RydWN0aWJsZShfVHkpPiB7DQogICAg
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3Ry
aXZpYWxseV9kZWZhdWx0X2NvbnN0cnVjdGlibGVfdiA9IF9faXNfdHJpdmlhbGx5X2NvbnN0cnVj
dGlibGUoX1R5KTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX3RyaXZpYWxs
eV9tb3ZlX2NvbnN0cnVjdGlibGUgOiBib29sX2NvbnN0YW50PF9faXNfdHJpdmlhbGx5X2NvbnN0
cnVjdGlibGUoX1R5LCBfVHkpPiB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
aW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGVfdiA9
IF9faXNfdHJpdmlhbGx5X2NvbnN0cnVjdGlibGUoX1R5LCBfVHkpOw0KDQoNCnRlbXBsYXRlIDxj
bGFzcyBfVG8sIGNsYXNzIF9Gcm9tPg0Kc3RydWN0IGlzX3RyaXZpYWxseV9hc3NpZ25hYmxlIDog
Ym9vbF9jb25zdGFudDxfX2lzX3RyaXZpYWxseV9hc3NpZ25hYmxlKF9UbywgX0Zyb20pPiB7DQog
ICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RvLCBjbGFzcyBfRnJvbT4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCBpc190cml2aWFsbHlfYXNzaWduYWJsZV92ID0gX19pc190cml2aWFsbHlfYXNz
aWduYWJsZShfVG8sIF9Gcm9tKTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlz
X3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGUNCiAgICA6IGJvb2xfY29uc3RhbnQ8X19pc190cml2
aWFsbHlfYXNzaWduYWJsZShhZGRfbHZhbHVlX3JlZmVyZW5jZV90PF9UeT4sIGFkZF9sdmFsdWVf
cmVmZXJlbmNlX3Q8Y29uc3QgX1R5Pik+IHsNCiAgICANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfdHJpdmlhbGx5X2NvcHlfYXNzaWduYWJsZV92
ID0gX19pc190cml2aWFsbHlfYXNzaWduYWJsZSgNCiAgICBhZGRfbHZhbHVlX3JlZmVyZW5jZV90
PF9UeT4sIGFkZF9sdmFsdWVfcmVmZXJlbmNlX3Q8Y29uc3QgX1R5Pik7DQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCnN0cnVjdCBpc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlIDogYm9vbF9j
b25zdGFudDxfX2lzX3RyaXZpYWxseV9hc3NpZ25hYmxlKGFkZF9sdmFsdWVfcmVmZXJlbmNlX3Q8
X1R5PiwgX1R5KT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBj
b25zdGV4cHIgYm9vbCBpc190cml2aWFsbHlfbW92ZV9hc3NpZ25hYmxlX3YgPSBfX2lzX3RyaXZp
YWxseV9hc3NpZ25hYmxlKGFkZF9sdmFsdWVfcmVmZXJlbmNlX3Q8X1R5PiwgX1R5KTsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGUgOiBi
b29sX2NvbnN0YW50PF9faXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZShfVHkpPiB7DQogICAgDQp9
Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGVfdiA9IF9faXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZShfVHkpOw0K
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MuLi4gX0FyZ3M+DQpzdHJ1Y3QgaXNfbm90
aHJvd19jb25zdHJ1Y3RpYmxlIDogYm9vbF9jb25zdGFudDxfX2lzX25vdGhyb3dfY29uc3RydWN0
aWJsZShfVHksIF9BcmdzLi4uKT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwg
Y2xhc3MuLi4gX0FyZ3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbm90aHJvd19jb25zdHJ1
Y3RpYmxlX3YgPSBfX2lzX25vdGhyb3dfY29uc3RydWN0aWJsZShfVHksIF9BcmdzLi4uKTsNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX25vdGhyb3dfY29weV9jb25zdHJ1Y3Rp
YmxlDQogICAgOiBib29sX2NvbnN0YW50PF9faXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlKF9UeSwg
YWRkX2x2YWx1ZV9yZWZlcmVuY2VfdDxjb25zdCBfVHk+KT4gew0KICAgIA0KICAgIA0KfTsNCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19ub3Rocm93X2Nv
cHlfY29uc3RydWN0aWJsZV92ID0gX19pc19ub3Rocm93X2NvbnN0cnVjdGlibGUoDQogICAgX1R5
LCBhZGRfbHZhbHVlX3JlZmVyZW5jZV90PGNvbnN0IF9UeT4pOw0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHk+DQpzdHJ1Y3QgaXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdGlibGUgOiBib29sX2Nv
bnN0YW50PF9faXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlKF9UeSk+IHsNCiAgICANCn07DQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbm90aHJvd19kZWZh
dWx0X2NvbnN0cnVjdGlibGVfdiA9IF9faXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlKF9UeSk7DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc19ub3Rocm93X21vdmVfY29uc3RydWN0
aWJsZSA6IGJvb2xfY29uc3RhbnQ8X19pc19ub3Rocm93X2NvbnN0cnVjdGlibGUoX1R5LCBfVHkp
PiB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBi
b29sIGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX3YgPSBfX2lzX25vdGhyb3dfY29uc3Ry
dWN0aWJsZShfVHksIF9UeSk7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UbywgY2xhc3MgX0Zyb20+
DQpzdHJ1Y3QgaXNfbm90aHJvd19hc3NpZ25hYmxlIDogYm9vbF9jb25zdGFudDxfX2lzX25vdGhy
b3dfYXNzaWduYWJsZShfVG8sIF9Gcm9tKT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UbywgY2xhc3MgX0Zyb20+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbm90aHJvd19hc3Np
Z25hYmxlX3YgPSBfX2lzX25vdGhyb3dfYXNzaWduYWJsZShfVG8sIF9Gcm9tKTsNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGlzX25vdGhyb3dfY29weV9hc3NpZ25hYmxlDQogICAg
OiBib29sX2NvbnN0YW50PF9faXNfbm90aHJvd19hc3NpZ25hYmxlKGFkZF9sdmFsdWVfcmVmZXJl
bmNlX3Q8X1R5PiwgYWRkX2x2YWx1ZV9yZWZlcmVuY2VfdDxjb25zdCBfVHk+KT4gew0KICAgIA0K
fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19ub3Ro
cm93X2NvcHlfYXNzaWduYWJsZV92ID0gX19pc19ub3Rocm93X2Fzc2lnbmFibGUoDQogICAgYWRk
X2x2YWx1ZV9yZWZlcmVuY2VfdDxfVHk+LCBhZGRfbHZhbHVlX3JlZmVyZW5jZV90PGNvbnN0IF9U
eT4pOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2Fz
c2lnbmFibGUgOiBib29sX2NvbnN0YW50PF9faXNfbm90aHJvd19hc3NpZ25hYmxlKGFkZF9sdmFs
dWVfcmVmZXJlbmNlX3Q8X1R5PiwgX1R5KT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZV92
ID0gX19pc19ub3Rocm93X2Fzc2lnbmFibGUoYWRkX2x2YWx1ZV9yZWZlcmVuY2VfdDxfVHk+LCBf
VHkpOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfbm90aHJvd19kZXN0cnVj
dGlibGUgOiBib29sX2NvbnN0YW50PF9faXNfbm90aHJvd19kZXN0cnVjdGlibGUoX1R5KT4gew0K
ICAgIA0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIg
Ym9vbCBpc19ub3Rocm93X2Rlc3RydWN0aWJsZV92ID0gX19pc19ub3Rocm93X2Rlc3RydWN0aWJs
ZShfVHkpOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGJvb2wgPSBpc19pbnRlZ3JhbF92PF9U
eT4+DQpzdHJ1Y3QgX1NpZ25fYmFzZSB7IA0KICAgIHVzaW5nIF9VdHkgPSByZW1vdmVfY3ZfdDxf
VHk+Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9TaWduZWQgICA9IF9VdHkoLTEpIDwg
X1V0eSgwKTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1Vuc2lnbmVkID0gIV9TaWduZWQ7
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9TaWduX2Jhc2U8X1R5LCBmYWxz
ZT4geyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIF9TaWduZWQgICA9IGlzX2Zsb2F0aW5nX3BvaW50X3Y8X1R5PjsNCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgX1Vuc2lnbmVkID0gZmFsc2U7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5Pg0Kc3RydWN0IGlzX3NpZ25lZCA6IGJvb2xfY29uc3RhbnQ8X1NpZ25fYmFzZTxfVHk+
OjpfU2lnbmVkPiB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHBy
IGJvb2wgaXNfc2lnbmVkX3YgPSBfU2lnbl9iYXNlPF9UeT46Ol9TaWduZWQ7DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc191bnNpZ25lZCA6IGJvb2xfY29uc3RhbnQ8X1NpZ25f
YmFzZTxfVHk+OjpfVW5zaWduZWQ+IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGlu
ZSBjb25zdGV4cHIgYm9vbCBpc191bnNpZ25lZF92ID0gX1NpZ25fYmFzZTxfVHk+OjpfVW5zaWdu
ZWQ7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNf
bm9uYm9vbF9pbnRlZ3JhbCA9IGlzX2ludGVncmFsX3Y8X1R5PiAmJiAhaXNfc2FtZV92PHJlbW92
ZV9jdl90PF9UeT4sIGJvb2w+Ow0KDQoNCnRlbXBsYXRlIDxib29sPg0Kc3RydWN0IF9TZWxlY3Qg
eyANCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3M+DQogICAgdXNpbmcgX0FwcGx5ID0g
X1R5MTsNCn07DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgX1NlbGVjdDxmYWxzZT4gew0KICAgIHRl
bXBsYXRlIDxjbGFzcywgY2xhc3MgX1R5Mj4NCiAgICB1c2luZyBfQXBwbHkgPSBfVHkyOw0KfTsN
Cg0KdGVtcGxhdGUgPHNpemVfdD4NCnN0cnVjdCBfTWFrZV9zaWduZWQyOyANCg0KdGVtcGxhdGUg
PD4NCnN0cnVjdCBfTWFrZV9zaWduZWQyPDE+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3M+DQogICAg
dXNpbmcgX0FwcGx5ID0gc2lnbmVkIGNoYXI7DQp9Ow0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0IF9N
YWtlX3NpZ25lZDI8Mj4gew0KICAgIHRlbXBsYXRlIDxjbGFzcz4NCiAgICB1c2luZyBfQXBwbHkg
PSBzaG9ydDsNCn07DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgX01ha2Vfc2lnbmVkMjw0PiB7DQog
ICAgdGVtcGxhdGUgPGNsYXNzIF9UeT4NCiAgICB1c2luZyBfQXBwbHkgPSANCiAgICAgICAgdHlw
ZW5hbWUgX1NlbGVjdDxpc19zYW1lX3Y8X1R5LCBsb25nPiB8fCBpc19zYW1lX3Y8X1R5LCB1bnNp
Z25lZCBsb25nPj46OnRlbXBsYXRlIF9BcHBseTxsb25nLCBpbnQ+Ow0KfTsNCg0KdGVtcGxhdGUg
PD4NCnN0cnVjdCBfTWFrZV9zaWduZWQyPDg+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3M+DQogICAg
dXNpbmcgX0FwcGx5ID0gbG9uZyBsb25nOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnVz
aW5nIF9NYWtlX3NpZ25lZDEgPSANCiAgICB0eXBlbmFtZSBfTWFrZV9zaWduZWQyPHNpemVvZihf
VHkpPjo6dGVtcGxhdGUgX0FwcGx5PF9UeT47DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1
Y3QgbWFrZV9zaWduZWQgeyANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19ub25ib29sX2ludGVncmFs
PF9UeT4gfHwgaXNfZW51bV92PF9UeT4sDQogICAgICAgICJtYWtlX3NpZ25lZDxUPiByZXF1aXJl
cyB0aGF0IFQgc2hhbGwgYmUgYSAocG9zc2libHkgY3YtcXVhbGlmaWVkKSAiDQogICAgICAgICJp
bnRlZ3JhbCB0eXBlIG9yIGVudW1lcmF0aW9uIGJ1dCBub3QgYSBib29sIHR5cGUuIik7DQoNCiAg
ICB1c2luZyB0eXBlID0gdHlwZW5hbWUgcmVtb3ZlX2N2PF9UeT46OnRlbXBsYXRlIF9BcHBseTxf
TWFrZV9zaWduZWQxPjsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyBtYWtlX3Np
Z25lZF90ID0gdHlwZW5hbWUgbWFrZV9zaWduZWQ8X1R5Pjo6dHlwZTsNCg0KDQp0ZW1wbGF0ZSA8
c2l6ZV90Pg0Kc3RydWN0IF9NYWtlX3Vuc2lnbmVkMjsgDQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3Qg
X01ha2VfdW5zaWduZWQyPDE+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3M+DQogICAgdXNpbmcgX0Fw
cGx5ID0gdW5zaWduZWQgY2hhcjsNCn07DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgX01ha2VfdW5z
aWduZWQyPDI+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3M+DQogICAgdXNpbmcgX0FwcGx5ID0gdW5z
aWduZWQgc2hvcnQ7DQp9Ow0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0IF9NYWtlX3Vuc2lnbmVkMjw0
PiB7DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeT4NCiAgICB1c2luZyBfQXBwbHkgPSANCiAgICAg
ICAgdHlwZW5hbWUgX1NlbGVjdDxpc19zYW1lX3Y8X1R5LCBsb25nPiB8fCBpc19zYW1lX3Y8X1R5
LCB1bnNpZ25lZCBsb25nPj46OnRlbXBsYXRlIF9BcHBseTx1bnNpZ25lZCBsb25nLA0KICAgICAg
ICAgICAgdW5zaWduZWQgaW50PjsNCn07DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgX01ha2VfdW5z
aWduZWQyPDg+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3M+DQogICAgdXNpbmcgX0FwcGx5ID0gdW5z
aWduZWQgbG9uZyBsb25nOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnVzaW5nIF9NYWtl
X3Vuc2lnbmVkMSA9IA0KICAgIHR5cGVuYW1lIF9NYWtlX3Vuc2lnbmVkMjxzaXplb2YoX1R5KT46
OnRlbXBsYXRlIF9BcHBseTxfVHk+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IG1h
a2VfdW5zaWduZWQgeyANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19ub25ib29sX2ludGVncmFsPF9U
eT4gfHwgaXNfZW51bV92PF9UeT4sDQogICAgICAgICJtYWtlX3Vuc2lnbmVkPFQ+IHJlcXVpcmVz
IHRoYXQgVCBzaGFsbCBiZSBhIChwb3NzaWJseSBjdi1xdWFsaWZpZWQpICINCiAgICAgICAgImlu
dGVncmFsIHR5cGUgb3IgZW51bWVyYXRpb24gYnV0IG5vdCBhIGJvb2wgdHlwZS4iKTsNCg0KICAg
IHVzaW5nIHR5cGUgPSB0eXBlbmFtZSByZW1vdmVfY3Y8X1R5Pjo6dGVtcGxhdGUgX0FwcGx5PF9N
YWtlX3Vuc2lnbmVkMT47DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KdXNpbmcgbWFrZV91
bnNpZ25lZF90ID0gdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxfVHk+Ojp0eXBlOw0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfUmVwPg0KY29uc3RleHByIG1ha2VfdW5zaWduZWRfdDxfUmVwPiBfVW5zaWdu
ZWRfdmFsdWUoX1JlcCBfVmFsKSB7IA0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxtYWtlX3Vuc2ln
bmVkX3Q8X1JlcD4+KF9WYWwpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3Qg
YWxpZ25tZW50X29mIDogaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBhbGlnbm9mKF9UeSk+IHt9
OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgc2l6ZV90IGFsaWdu
bWVudF9vZl92ID0gYWxpZ25vZihfVHkpOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVf
dCBfTGVuPg0KdW5pb24gX0FsaWduX3R5cGUgeyANCiAgICBfVHkgX1ZhbDsNCiAgICBjaGFyIF9Q
YWRbX0xlbl07DQp9Ow0KDQp0ZW1wbGF0ZSA8c2l6ZV90IF9MZW4sIHNpemVfdCBfQWxpZ24sIGNs
YXNzIF9UeSwgYm9vbCBfT2s+DQpzdHJ1Y3QgX0FsaWduZWQ7IA0KDQp0ZW1wbGF0ZSA8c2l6ZV90
IF9MZW4sIHNpemVfdCBfQWxpZ24sIGNsYXNzIF9UeT4NCnN0cnVjdCBfQWxpZ25lZDxfTGVuLCBf
QWxpZ24sIF9UeSwgdHJ1ZT4gew0KICAgIHVzaW5nIHR5cGUgPSBfQWxpZ25fdHlwZTxfVHksIF9M
ZW4+Ow0KfTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfTGVuLCBzaXplX3QgX0FsaWduPg0Kc3RydWN0
IF9BbGlnbmVkPF9MZW4sIF9BbGlnbiwgZG91YmxlLCBmYWxzZT4gew0KDQoNCg0KDQoNCg0KICAg
IHN0YXRpY19hc3NlcnQoX0Fsd2F5c19mYWxzZTxfQWxpZ25lZD4sDQogICAgICAgICJZb3UndmUg
aW5zdGFudGlhdGVkIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPExlbiwgQWxpZ24+IHdpdGggYW4gZXh0
ZW5kZWQgYWxpZ25tZW50IChpbiBvdGhlciAiDQogICAgICAgICJ3b3JkcywgQWxpZ24gPiBhbGln
bm9mKG1heF9hbGlnbl90KSkuIEJlZm9yZSBWUyAyMDE3IDE1LjgsIHRoZSBtZW1iZXIgXCJ0eXBl
XCIgd291bGQgIg0KICAgICAgICAibm9uLWNvbmZvcm1pbmdseSBoYXZlIGFuIGFsaWdubWVudCBv
ZiBvbmx5IGFsaWdub2YobWF4X2FsaWduX3QpLiBWUyAyMDE3IDE1Ljggd2FzIGZpeGVkIHRvICIN
CiAgICAgICAgImhhbmRsZSB0aGlzIGNvcnJlY3RseSwgYnV0IHRoZSBmaXggaW5oZXJlbnRseSBj
aGFuZ2VzIGxheW91dCBhbmQgYnJlYWtzIGJpbmFyeSBjb21wYXRpYmlsaXR5ICINCiAgICAgICAg
Iigqb25seSogZm9yIHVzZXMgb2YgYWxpZ25lZF9zdG9yYWdlIHdpdGggZXh0ZW5kZWQgYWxpZ25t
ZW50cykuICINCiAgICAgICAgIlBsZWFzZSBkZWZpbmUgZWl0aGVyICINCiAgICAgICAgIigxKSBf
RU5BQkxFX0VYVEVOREVEX0FMSUdORURfU1RPUkFHRSB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSB1
bmRlcnN0YW5kIHRoaXMgbWVzc2FnZSBhbmQgIg0KICAgICAgICAidGhhdCB5b3UgYWN0dWFsbHkg
d2FudCBhIHR5cGUgd2l0aCBhbiBleHRlbmRlZCBhbGlnbm1lbnQsIG9yICINCiAgICAgICAgIigy
KSBfRElTQUJMRV9FWFRFTkRFRF9BTElHTkVEX1NUT1JBR0UgdG8gc2lsZW5jZSB0aGlzIG1lc3Nh
Z2UgYW5kIGdldCB0aGUgb2xkIG5vbi1jb25mb3JtaW5nICINCiAgICAgICAgImJlaGF2aW9yLiIp
Ow0KI2xpbmUgMTA4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx0eXBlX3RyYWl0cyINCiAgICB1c2luZyB0eXBlID0gX0FsaWduX3R5cGU8bWF4X2Fs
aWduX3QsIF9MZW4+Ow0KI2xpbmUgMTA4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0cyINCn07DQoNCnRlbXBsYXRlIDxzaXplX3Qg
X0xlbiwgc2l6ZV90IF9BbGlnbj4NCnN0cnVjdCBfQWxpZ25lZDxfTGVuLCBfQWxpZ24sIGludCwg
ZmFsc2U+IHsNCiAgICB1c2luZyBfTmV4dCAgICAgICAgICAgICAgICAgPSBkb3VibGU7DQogICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIF9GaXRzID0gX0FsaWduIDw9IGFsaWdub2YoX05leHQpOw0K
ICAgIHVzaW5nIHR5cGUgICAgICAgICAgICAgICAgICA9IHR5cGVuYW1lIF9BbGlnbmVkPF9MZW4s
IF9BbGlnbiwgX05leHQsIF9GaXRzPjo6dHlwZTsNCn07DQoNCnRlbXBsYXRlIDxzaXplX3QgX0xl
biwgc2l6ZV90IF9BbGlnbj4NCnN0cnVjdCBfQWxpZ25lZDxfTGVuLCBfQWxpZ24sIHNob3J0LCBm
YWxzZT4gew0KICAgIHVzaW5nIF9OZXh0ICAgICAgICAgICAgICAgICA9IGludDsNCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgX0ZpdHMgPSBfQWxpZ24gPD0gYWxpZ25vZihfTmV4dCk7DQogICAg
dXNpbmcgdHlwZSAgICAgICAgICAgICAgICAgID0gdHlwZW5hbWUgX0FsaWduZWQ8X0xlbiwgX0Fs
aWduLCBfTmV4dCwgX0ZpdHM+Ojp0eXBlOw0KfTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfTGVuLCBz
aXplX3QgX0FsaWduPg0Kc3RydWN0IF9BbGlnbmVkPF9MZW4sIF9BbGlnbiwgY2hhciwgZmFsc2U+
IHsNCiAgICB1c2luZyBfTmV4dCAgICAgICAgICAgICAgICAgPSBzaG9ydDsNCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgX0ZpdHMgPSBfQWxpZ24gPD0gYWxpZ25vZihfTmV4dCk7DQogICAgdXNp
bmcgdHlwZSAgICAgICAgICAgICAgICAgID0gdHlwZW5hbWUgX0FsaWduZWQ8X0xlbiwgX0FsaWdu
LCBfTmV4dCwgX0ZpdHM+Ojp0eXBlOw0KfTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfTGVuLCBzaXpl
X3QgX0FsaWduID0gYWxpZ25vZihtYXhfYWxpZ25fdCk+DQpzdHJ1Y3QgYWxpZ25lZF9zdG9yYWdl
IHsgDQogICAgdXNpbmcgX05leHQgICAgICAgICAgICAgICAgID0gY2hhcjsNCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgX0ZpdHMgPSBfQWxpZ24gPD0gYWxpZ25vZihfTmV4dCk7DQogICAgdXNp
bmcgdHlwZSAgICAgICAgICAgICAgICAgID0gdHlwZW5hbWUgX0FsaWduZWQ8X0xlbiwgX0FsaWdu
LCBfTmV4dCwgX0ZpdHM+Ojp0eXBlOw0KfTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfTGVuLCBzaXpl
X3QgX0FsaWduID0gYWxpZ25vZihtYXhfYWxpZ25fdCk+DQp1c2luZyBhbGlnbmVkX3N0b3JhZ2Vf
dCA9IHR5cGVuYW1lIGFsaWduZWRfc3RvcmFnZTxfTGVuLCBfQWxpZ24+Ojp0eXBlOw0KDQoNCnRl
bXBsYXRlIDxzaXplX3QuLi4gX1ZhbHM+DQpzdHJ1Y3QgX01heGltdW07DQoNCnRlbXBsYXRlIDw+
DQpzdHJ1Y3QgX01heGltdW08PiA6IGludGVncmFsX2NvbnN0YW50PHNpemVfdCwgMD4ge307IA0K
DQp0ZW1wbGF0ZSA8c2l6ZV90IF9WYWw+DQpzdHJ1Y3QgX01heGltdW08X1ZhbD4gOiBpbnRlZ3Jh
bF9jb25zdGFudDxzaXplX3QsIF9WYWw+IHt9OyANCg0KdGVtcGxhdGUgPHNpemVfdCBfRmlyc3Qs
IHNpemVfdCBfU2Vjb25kLCBzaXplX3QuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX01heGltdW08X0ZpcnN0
LCBfU2Vjb25kLCBfUmVzdC4uLj4gOiBfTWF4aW11bTwoX0ZpcnN0IDwgX1NlY29uZCA/IF9TZWNv
bmQgOiBfRmlyc3QpLCBfUmVzdC4uLj46OnR5cGUgew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPHNp
emVfdCBfTGVuLCBjbGFzcy4uLiBfVHlwZXM+DQpzdHJ1Y3QgYWxpZ25lZF91bmlvbiB7IA0KICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IF9NYXhfbGVuICAgICAgICA9IF9NYXhpbXVtPF9MZW4s
IHNpemVvZihfVHlwZXMpLi4uPjo6dmFsdWU7IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGFsaWdubWVudF92YWx1ZSA9IF9NYXhpbXVtPGFsaWdub2YoX1R5cGVzKS4uLj46OnZhbHVlOw0K
DQogICAgdXNpbmcgdHlwZSA9IGFsaWduZWRfc3RvcmFnZV90PF9NYXhfbGVuLCBhbGlnbm1lbnRf
dmFsdWU+Ow0KfTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfTGVuLCBjbGFzcy4uLiBfVHlwZXM+DQp1
c2luZyBhbGlnbmVkX3VuaW9uX3QgPSB0eXBlbmFtZSBhbGlnbmVkX3VuaW9uPF9MZW4sIF9UeXBl
cy4uLj46OnR5cGU7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgYm9vbCA9IGlzX2VudW1fdjxf
VHk+Pg0Kc3RydWN0IF9VbmRlcmx5aW5nX3R5cGUgew0KICAgIHVzaW5nIHR5cGUgPSBfX3VuZGVy
bHlpbmdfdHlwZShfVHkpOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfVW5k
ZXJseWluZ190eXBlPF9UeSwgZmFsc2U+IHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3Ry
dWN0IHVuZGVybHlpbmdfdHlwZSA6IF9VbmRlcmx5aW5nX3R5cGU8X1R5PiB7fTsgDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQp1c2luZyB1bmRlcmx5aW5nX3R5cGVfdCA9IHR5cGVuYW1lIF9VbmRl
cmx5aW5nX3R5cGU8X1R5Pjo6dHlwZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5l
IGNvbnN0ZXhwciBzaXplX3QgcmFua192ID0gMDsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNp
emVfdCBfTng+DQppbmxpbmUgY29uc3RleHByIHNpemVfdCByYW5rX3Y8X1R5W19OeF0+ID0gcmFu
a192PF9UeT4gKyAxOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBz
aXplX3QgcmFua192PF9UeVtdPiA9IHJhbmtfdjxfVHk+ICsgMTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCnN0cnVjdCByYW5rIDogaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCByYW5rX3Y8X1R5
Pj4ge307DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgdW5zaWduZWQgaW50IF9JeCA9IDA+DQpp
bmxpbmUgY29uc3RleHByIHNpemVfdCBleHRlbnRfdiA9IDA7IA0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5LCBzaXplX3QgX054Pg0KaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgZXh0ZW50X3Y8X1R5W19O
eF0sIDA+ID0gX054Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCB1bnNpZ25lZCBpbnQgX0l4LCBz
aXplX3QgX054Pg0KaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgZXh0ZW50X3Y8X1R5W19OeF0sIF9J
eD4gPSBleHRlbnRfdjxfVHksIF9JeCAtIDE+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCB1bnNp
Z25lZCBpbnQgX0l4Pg0KaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgZXh0ZW50X3Y8X1R5W10sIF9J
eD4gPSBleHRlbnRfdjxfVHksIF9JeCAtIDE+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCB1bnNp
Z25lZCBpbnQgX0l4ID0gMD4NCnN0cnVjdCBleHRlbnQgOiBpbnRlZ3JhbF9jb25zdGFudDxzaXpl
X3QsIGV4dGVudF92PF9UeSwgX0l4Pj4ge307DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9CYXNlLCBj
bGFzcyBfRGVyaXZlZD4NCnN0cnVjdCBpc19iYXNlX29mIDogYm9vbF9jb25zdGFudDxfX2lzX2Jh
c2Vfb2YoX0Jhc2UsIF9EZXJpdmVkKT4gew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9C
YXNlLCBjbGFzcyBfRGVyaXZlZD4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19iYXNlX29mX3Yg
PSBfX2lzX2Jhc2Vfb2YoX0Jhc2UsIF9EZXJpdmVkKTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
Pg0Kc3RydWN0IGRlY2F5IHsgDQogICAgdXNpbmcgX1R5MSA9IHJlbW92ZV9yZWZlcmVuY2VfdDxf
VHk+Ow0KICAgIHVzaW5nIF9UeTIgPSB0eXBlbmFtZSBfU2VsZWN0PGlzX2Z1bmN0aW9uX3Y8X1R5
MT4+Ojp0ZW1wbGF0ZSBfQXBwbHk8YWRkX3BvaW50ZXI8X1R5MT4sIHJlbW92ZV9jdjxfVHkxPj47
DQogICAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIF9TZWxlY3Q8aXNfYXJyYXlfdjxfVHkxPj46OnRl
bXBsYXRlIF9BcHBseTxhZGRfcG9pbnRlcjxyZW1vdmVfZXh0ZW50X3Q8X1R5MT4+LCBfVHkyPjo6
dHlwZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyBkZWNheV90ID0gdHlwZW5h
bWUgZGVjYXk8X1R5Pjo6dHlwZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5
Mj4NCnVzaW5nIF9Db25kaXRpb25hbF90eXBlID0gZGVjbHR5cGUoZmFsc2UgPyA6OnN0ZDo6IGRl
Y2x2YWw8X1R5MT4oKSA6IDo6c3RkOjogZGVjbHZhbDxfVHkyPigpKTsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdHlwZV90cmFpdHMiDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwg
Y2xhc3MgX1R5MiwgY2xhc3MgPSB2b2lkPg0Kc3RydWN0IF9EZWNheWVkX2NvbmRfb3BlciB7fTsN
CiNsaW5lIDEyMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcdHlwZV90cmFpdHMiDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0K
c3RydWN0IF9EZWNheWVkX2NvbmRfb3BlcjxfVHkxLCBfVHkyLCB2b2lkX3Q8X0NvbmRpdGlvbmFs
X3R5cGU8X1R5MSwgX1R5Mj4+PiB7DQogICAgdXNpbmcgdHlwZSA9IGRlY2F5X3Q8X0NvbmRpdGlv
bmFsX3R5cGU8X1R5MSwgX1R5Mj4+Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzLi4uIF9UeT4NCnN0
cnVjdCBjb21tb25fdHlwZTsNCg0KdGVtcGxhdGUgPGNsYXNzLi4uIF9UeT4NCnVzaW5nIGNvbW1v
bl90eXBlX3QgPSB0eXBlbmFtZSBjb21tb25fdHlwZTxfVHkuLi4+Ojp0eXBlOw0KDQp0ZW1wbGF0
ZSA8Pg0Kc3RydWN0IGNvbW1vbl90eXBlPD4ge307DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxPg0K
c3RydWN0IGNvbW1vbl90eXBlPF9UeTE+IDogY29tbW9uX3R5cGU8X1R5MSwgX1R5MT4ge307DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCBjbGFzcyBfRGVjYXllZDEgPSBkZWNh
eV90PF9UeTE+LCBjbGFzcyBfRGVjYXllZDIgPSBkZWNheV90PF9UeTI+Pg0Kc3RydWN0IF9Db21t
b25fdHlwZTIgOiBjb21tb25fdHlwZTxfRGVjYXllZDEsIF9EZWNheWVkMj4ge307DQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0IF9Db21tb25fdHlwZTI8X1R5MSwg
X1R5MiwgX1R5MSwgX1R5Mj4gOiBfRGVjYXllZF9jb25kX29wZXI8X1R5MSwgX1R5Mj4ge307DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0IGNvbW1vbl90eXBlPF9U
eTEsIF9UeTI+IDogX0NvbW1vbl90eXBlMjxfVHkxLCBfVHkyPiB7fTsNCg0KdGVtcGxhdGUgPGNs
YXNzIF9Wb2lkLCBjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCBjbGFzcy4uLiBfUmVzdD4NCnN0cnVj
dCBfQ29tbW9uX3R5cGUzIHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Miwg
Y2xhc3MuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX0NvbW1vbl90eXBlMzx2b2lkX3Q8Y29tbW9uX3R5cGVf
dDxfVHkxLCBfVHkyPj4sIF9UeTEsIF9UeTIsIF9SZXN0Li4uPg0KICAgIDogY29tbW9uX3R5cGU8
Y29tbW9uX3R5cGVfdDxfVHkxLCBfVHkyPiwgX1Jlc3QuLi4+IHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5MSwgY2xhc3MgX1R5MiwgY2xhc3MuLi4gX1Jlc3Q+DQpzdHJ1Y3QgY29tbW9uX3R5cGU8
X1R5MSwgX1R5MiwgX1Jlc3QuLi4+IDogX0NvbW1vbl90eXBlMzx2b2lkLCBfVHkxLCBfVHkyLCBf
UmVzdC4uLj4ge307DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDIxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR5cGVfdHJhaXRzIg0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0lkZW50aXR5IHsNCiAgICB1c2luZyB0eXBlID0gX1R5
Ow0KfTsNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyBfSWRlbnRpdHlfdCA9IHR5cGVuYW1l
IF9JZGVudGl0eTxfVHk+Ojp0eXBlOw0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQzOSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0
cyINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5cGUsIHRlbXBsYXRlIDxjbGFzcy4uLj4gY2xhc3Mg
X1RlbXBsYXRlPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9Jc19zcGVjaWFsaXphdGlvbl92ID0g
ZmFsc2U7IA0KdGVtcGxhdGUgPHRlbXBsYXRlIDxjbGFzcy4uLj4gY2xhc3MgX1RlbXBsYXRlLCBj
bGFzcy4uLiBfVHlwZXM+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX0lzX3NwZWNpYWxpemF0aW9u
X3Y8X1RlbXBsYXRlPF9UeXBlcy4uLj4sIF9UZW1wbGF0ZT4gPSB0cnVlOw0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5cGUsIHRlbXBsYXRlIDxjbGFzcy4uLj4gY2xhc3MgX1RlbXBsYXRlPg0Kc3RydWN0
IF9Jc19zcGVjaWFsaXphdGlvbiA6IGJvb2xfY29uc3RhbnQ8X0lzX3NwZWNpYWxpemF0aW9uX3Y8
X1R5cGUsIF9UZW1wbGF0ZT4+IHt9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBfVHkmJiBmb3J3YXJkKA0KICAgIHJlbW92ZV9yZWZlcmVuY2VfdDxf
VHk+JiBfQXJnKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHkmJj4oX0Fy
Zyk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBf
VHkmJiBmb3J3YXJkKHJlbW92ZV9yZWZlcmVuY2VfdDxfVHk+JiYgX0FyZykgbm9leGNlcHQgeyAN
CiAgICBzdGF0aWNfYXNzZXJ0KCFpc19sdmFsdWVfcmVmZXJlbmNlX3Y8X1R5PiwgImJhZCBmb3J3
YXJkIGNhbGwiKTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5JiY+KF9BcmcpOw0KfQ0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciByZW1vdmVfcmVm
ZXJlbmNlX3Q8X1R5PiYmIG1vdmUoX1R5JiYgX0FyZykgbm9leGNlcHQgeyANCiAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8cmVtb3ZlX3JlZmVyZW5jZV90PF9UeT4mJj4oX0FyZyk7DQp9DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbmRpdGlvbmFsX3Q8
IWlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX3Y8X1R5PiAmJiBpc19jb3B5X2NvbnN0cnVj
dGlibGVfdjxfVHk+LCBjb25zdCBfVHkmLA0KICAgIF9UeSYmPg0KICAgIG1vdmVfaWZfbm9leGNl
cHQoX1R5JiBfQXJnKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiA6OnN0ZDo6IG1vdmUoX0FyZyk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpjbGFzcyByZWZlcmVuY2Vfd3JhcHBlcjsNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKSANCiNwcmFnbWEgd2FybmluZyhkaXNhYmxl
IDogMjgyNzgpIA0KZW51bSBjbGFzcyBfSW52b2tlcl9zdHJhdGVneSB7DQogICAgX0Z1bmN0b3Is
DQogICAgX1BtZl9vYmplY3QsDQogICAgX1BtZl9yZWZ3cmFwLA0KICAgIF9QbWZfcG9pbnRlciwN
CiAgICBfUG1kX29iamVjdCwNCiAgICBfUG1kX3JlZndyYXAsDQogICAgX1BtZF9wb2ludGVyDQp9
Ow0KDQpzdHJ1Y3QgX0ludm9rZXJfZnVuY3RvciB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBfSW52
b2tlcl9zdHJhdGVneSBfU3RyYXRlZ3kgPSBfSW52b2tlcl9zdHJhdGVneTo6X0Z1bmN0b3I7DQoN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxhYmxlLCBjbGFzcy4uLiBfVHlwZXM+DQogICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIF9DYWxsKF9DYWxsYWJsZSYmIF9PYmosIF9UeXBlcyYmLi4uIF9B
cmdzKSBub2V4Y2VwdCgNCiAgICAgICAgbm9leGNlcHQoc3RhdGljX2Nhc3Q8X0NhbGxhYmxlJiY+
KF9PYmopKHN0YXRpY19jYXN0PF9UeXBlcyYmPihfQXJncykuLi4pKSkNCiAgICAgICAgLT4gZGVj
bHR5cGUoc3RhdGljX2Nhc3Q8X0NhbGxhYmxlJiY+KF9PYmopKHN0YXRpY19jYXN0PF9UeXBlcyYm
PihfQXJncykuLi4pKSB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfQ2FsbGFibGUmJj4o
X09iaikoc3RhdGljX2Nhc3Q8X1R5cGVzJiY+KF9BcmdzKS4uLik7DQogICAgfQ0KfTsNCg0Kc3Ry
dWN0IF9JbnZva2VyX3BtZl9vYmplY3Qgew0KICAgIHN0YXRpYyBjb25zdGV4cHIgX0ludm9rZXJf
c3RyYXRlZ3kgX1N0cmF0ZWd5ID0gX0ludm9rZXJfc3RyYXRlZ3k6Ol9QbWZfb2JqZWN0Ow0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzIF9EZWNheWVkLCBjbGFzcyBfVHkxLCBjbGFzcy4uLiBfVHlwZXMy
Pg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBfQ2FsbChfRGVjYXllZCBfUG1mLCBfVHkxJiYg
X0FyZzEsIF9UeXBlczImJi4uLiBfQXJnczIpIG5vZXhjZXB0KA0KICAgICAgICBub2V4Y2VwdCgo
c3RhdGljX2Nhc3Q8X1R5MSYmPihfQXJnMSkuKl9QbWYpKHN0YXRpY19jYXN0PF9UeXBlczImJj4o
X0FyZ3MyKS4uLikpKQ0KICAgICAgICAtPiBkZWNsdHlwZSgoc3RhdGljX2Nhc3Q8X1R5MSYmPihf
QXJnMSkuKl9QbWYpKHN0YXRpY19jYXN0PF9UeXBlczImJj4oX0FyZ3MyKS4uLikpIHsNCiAgICAg
ICAgcmV0dXJuIChzdGF0aWNfY2FzdDxfVHkxJiY+KF9BcmcxKS4qX1BtZikoc3RhdGljX2Nhc3Q8
X1R5cGVzMiYmPihfQXJnczIpLi4uKTsNCiAgICB9DQp9Ow0KDQpzdHJ1Y3QgX0ludm9rZXJfcG1m
X3JlZndyYXAgew0KICAgIHN0YXRpYyBjb25zdGV4cHIgX0ludm9rZXJfc3RyYXRlZ3kgX1N0cmF0
ZWd5ID0gX0ludm9rZXJfc3RyYXRlZ3k6Ol9QbWZfcmVmd3JhcDsNCg0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfRGVjYXllZCwgY2xhc3MgX1JlZndyYXAsIGNsYXNzLi4uIF9UeXBlczI+DQogICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIF9DYWxsKF9EZWNheWVkIF9QbWYsIF9SZWZ3cmFwIF9SdywgX1R5
cGVzMiYmLi4uIF9BcmdzMikgbm9leGNlcHQoDQogICAgICAgIG5vZXhjZXB0KChfUncuZ2V0KCku
Kl9QbWYpKHN0YXRpY19jYXN0PF9UeXBlczImJj4oX0FyZ3MyKS4uLikpKQ0KICAgICAgICAtPiBk
ZWNsdHlwZSgoX1J3LmdldCgpLipfUG1mKShzdGF0aWNfY2FzdDxfVHlwZXMyJiY+KF9BcmdzMiku
Li4pKSB7DQogICAgICAgIHJldHVybiAoX1J3LmdldCgpLipfUG1mKShzdGF0aWNfY2FzdDxfVHlw
ZXMyJiY+KF9BcmdzMikuLi4pOw0KICAgIH0NCn07DQoNCnN0cnVjdCBfSW52b2tlcl9wbWZfcG9p
bnRlciB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBfSW52b2tlcl9zdHJhdGVneSBfU3RyYXRlZ3kg
PSBfSW52b2tlcl9zdHJhdGVneTo6X1BtZl9wb2ludGVyOw0KDQogICAgdGVtcGxhdGUgPGNsYXNz
IF9EZWNheWVkLCBjbGFzcyBfVHkxLCBjbGFzcy4uLiBfVHlwZXMyPg0KICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBfQ2FsbChfRGVjYXllZCBfUG1mLCBfVHkxJiYgX0FyZzEsIF9UeXBlczImJi4u
LiBfQXJnczIpIG5vZXhjZXB0KA0KICAgICAgICBub2V4Y2VwdCgoKCpzdGF0aWNfY2FzdDxfVHkx
JiY+KF9BcmcxKSkuKl9QbWYpKHN0YXRpY19jYXN0PF9UeXBlczImJj4oX0FyZ3MyKS4uLikpKQ0K
ICAgICAgICAtPiBkZWNsdHlwZSgoKCpzdGF0aWNfY2FzdDxfVHkxJiY+KF9BcmcxKSkuKl9QbWYp
KHN0YXRpY19jYXN0PF9UeXBlczImJj4oX0FyZ3MyKS4uLikpIHsNCiAgICAgICAgcmV0dXJuICgo
KnN0YXRpY19jYXN0PF9UeTEmJj4oX0FyZzEpKS4qX1BtZikoc3RhdGljX2Nhc3Q8X1R5cGVzMiYm
PihfQXJnczIpLi4uKTsNCiAgICB9DQp9Ow0KDQpzdHJ1Y3QgX0ludm9rZXJfcG1kX29iamVjdCB7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBfSW52b2tlcl9zdHJhdGVneSBfU3RyYXRlZ3kgPSBfSW52
b2tlcl9zdHJhdGVneTo6X1BtZF9vYmplY3Q7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0RlY2F5
ZWQsIGNsYXNzIF9UeTE+DQogICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIF9DYWxsKF9EZWNheWVk
IF9QbWQsIF9UeTEmJiBfQXJnMSkgbm9leGNlcHQgLT4gZGVjbHR5cGUoc3RhdGljX2Nhc3Q8X1R5
MSYmPihfQXJnMSkuKl9QbWQpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeTEmJj4o
X0FyZzEpLipfUG1kOw0KICAgIH0NCn07DQoNCnN0cnVjdCBfSW52b2tlcl9wbWRfcmVmd3JhcCB7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBfSW52b2tlcl9zdHJhdGVneSBfU3RyYXRlZ3kgPSBfSW52
b2tlcl9zdHJhdGVneTo6X1BtZF9yZWZ3cmFwOw0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9EZWNh
eWVkLCBjbGFzcyBfUmVmd3JhcD4NCiAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gX0NhbGwoX0Rl
Y2F5ZWQgX1BtZCwgX1JlZndyYXAgX1J3KSBub2V4Y2VwdCAtPiBkZWNsdHlwZShfUncuZ2V0KCku
Kl9QbWQpIHsNCiAgICAgICAgcmV0dXJuIF9Sdy5nZXQoKS4qX1BtZDsNCiAgICB9DQp9Ow0KDQpz
dHJ1Y3QgX0ludm9rZXJfcG1kX3BvaW50ZXIgew0KICAgIHN0YXRpYyBjb25zdGV4cHIgX0ludm9r
ZXJfc3RyYXRlZ3kgX1N0cmF0ZWd5ID0gX0ludm9rZXJfc3RyYXRlZ3k6Ol9QbWRfcG9pbnRlcjsN
Cg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRGVjYXllZCwgY2xhc3MgX1R5MT4NCiAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gX0NhbGwoX0RlY2F5ZWQgX1BtZCwgX1R5MSYmIF9BcmcxKSBub2V4Y2Vw
dChub2V4Y2VwdCgoKnN0YXRpY19jYXN0PF9UeTEmJj4oX0FyZzEpKS4qX1BtZCkpDQogICAgICAg
IC0+IGRlY2x0eXBlKCgqc3RhdGljX2Nhc3Q8X1R5MSYmPihfQXJnMSkpLipfUG1kKSB7DQogICAg
ICAgIHJldHVybiAoKnN0YXRpY19jYXN0PF9UeTEmJj4oX0FyZzEpKS4qX1BtZDsNCiAgICB9DQp9
Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxhYmxlLCBjbGFzcyBfVHkxLCBjbGFzcyBfUmVtb3Zl
ZF9jdnJlZiA9IF9SZW1vdmVfY3ZyZWZfdDxfQ2FsbGFibGU+LA0KICAgIGJvb2wgX0lzX3BtZiA9
IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX3Y8X1JlbW92ZWRfY3ZyZWY+LA0KICAgIGJvb2wg
X0lzX3BtZCA9IGlzX21lbWJlcl9vYmplY3RfcG9pbnRlcl92PF9SZW1vdmVkX2N2cmVmPj4NCnN0
cnVjdCBfSW52b2tlcjE7DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ2FsbGFibGUsIGNsYXNzIF9UeTEs
IGNsYXNzIF9SZW1vdmVkX2N2cmVmPg0Kc3RydWN0IF9JbnZva2VyMTxfQ2FsbGFibGUsIF9UeTEs
IF9SZW1vdmVkX2N2cmVmLCB0cnVlLCBmYWxzZT4NCiAgICA6IGNvbmRpdGlvbmFsX3Q8aXNfYmFz
ZV9vZl92PHR5cGVuYW1lIF9Jc19tZW1mdW5wdHI8X1JlbW92ZWRfY3ZyZWY+OjpfQ2xhc3NfdHlw
ZSwgcmVtb3ZlX3JlZmVyZW5jZV90PF9UeTE+PiwNCiAgICAgICAgICBfSW52b2tlcl9wbWZfb2Jq
ZWN0LA0KICAgICAgICAgIGNvbmRpdGlvbmFsX3Q8X0lzX3NwZWNpYWxpemF0aW9uX3Y8X1JlbW92
ZV9jdnJlZl90PF9UeTE+LCByZWZlcmVuY2Vfd3JhcHBlcj4sIF9JbnZva2VyX3BtZl9yZWZ3cmFw
LA0KICAgICAgICAgICAgICBfSW52b2tlcl9wbWZfcG9pbnRlcj4+IHt9OyANCg0KdGVtcGxhdGUg
PGNsYXNzIF9DYWxsYWJsZSwgY2xhc3MgX1R5MSwgY2xhc3MgX1JlbW92ZWRfY3ZyZWY+DQpzdHJ1
Y3QgX0ludm9rZXIxPF9DYWxsYWJsZSwgX1R5MSwgX1JlbW92ZWRfY3ZyZWYsIGZhbHNlLCB0cnVl
Pg0KICAgIDogY29uZGl0aW9uYWxfdDwNCiAgICAgICAgICBpc19iYXNlX29mX3Y8dHlwZW5hbWUg
X0lzX21lbWJlcl9vYmplY3RfcG9pbnRlcjxfUmVtb3ZlZF9jdnJlZj46Ol9DbGFzc190eXBlLCBy
ZW1vdmVfcmVmZXJlbmNlX3Q8X1R5MT4+LA0KICAgICAgICAgIF9JbnZva2VyX3BtZF9vYmplY3Qs
DQogICAgICAgICAgY29uZGl0aW9uYWxfdDxfSXNfc3BlY2lhbGl6YXRpb25fdjxfUmVtb3ZlX2N2
cmVmX3Q8X1R5MT4sIHJlZmVyZW5jZV93cmFwcGVyPiwgX0ludm9rZXJfcG1kX3JlZndyYXAsDQog
ICAgICAgICAgICAgIF9JbnZva2VyX3BtZF9wb2ludGVyPj4ge307IA0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0NhbGxhYmxlLCBjbGFzcyBfVHkxLCBjbGFzcyBfUmVtb3ZlZF9jdnJlZj4NCnN0cnVjdCBf
SW52b2tlcjE8X0NhbGxhYmxlLCBfVHkxLCBfUmVtb3ZlZF9jdnJlZiwgZmFsc2UsIGZhbHNlPiA6
IF9JbnZva2VyX2Z1bmN0b3Ige307DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ2FsbGFibGU+DQpjb25z
dGV4cHIgYXV0byBpbnZva2UoX0NhbGxhYmxlJiYgX09iaikgbm9leGNlcHQobm9leGNlcHQoc3Rh
dGljX2Nhc3Q8X0NhbGxhYmxlJiY+KF9PYmopKCkpKQ0KICAgIC0+IGRlY2x0eXBlKHN0YXRpY19j
YXN0PF9DYWxsYWJsZSYmPihfT2JqKSgpKSB7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PF9DYWxs
YWJsZSYmPihfT2JqKSgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxhYmxlLCBjbGFzcyBf
VHkxLCBjbGFzcy4uLiBfVHlwZXMyPg0KY29uc3RleHByIGF1dG8gaW52b2tlKF9DYWxsYWJsZSYm
IF9PYmosIF9UeTEmJiBfQXJnMSwgX1R5cGVzMiYmLi4uIF9BcmdzMikgbm9leGNlcHQoDQogICAg
bm9leGNlcHQoX0ludm9rZXIxPF9DYWxsYWJsZSwgX1R5MT46Ol9DYWxsKA0KICAgICAgICBzdGF0
aWNfY2FzdDxfQ2FsbGFibGUmJj4oX09iaiksIHN0YXRpY19jYXN0PF9UeTEmJj4oX0FyZzEpLCBz
dGF0aWNfY2FzdDxfVHlwZXMyJiY+KF9BcmdzMikuLi4pKSkNCiAgICAtPiBkZWNsdHlwZShfSW52
b2tlcjE8X0NhbGxhYmxlLCBfVHkxPjo6X0NhbGwoDQogICAgICAgIHN0YXRpY19jYXN0PF9DYWxs
YWJsZSYmPihfT2JqKSwgc3RhdGljX2Nhc3Q8X1R5MSYmPihfQXJnMSksIHN0YXRpY19jYXN0PF9U
eXBlczImJj4oX0FyZ3MyKS4uLikpIHsNCg0KICAgIGlmIGNvbnN0ZXhwciAoX0ludm9rZXIxPF9D
YWxsYWJsZSwgX1R5MT46Ol9TdHJhdGVneSA9PSBfSW52b2tlcl9zdHJhdGVneTo6X0Z1bmN0b3Ip
IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9DYWxsYWJsZSYmPihfT2JqKShzdGF0aWNf
Y2FzdDxfVHkxJiY+KF9BcmcxKSwgc3RhdGljX2Nhc3Q8X1R5cGVzMiYmPihfQXJnczIpLi4uKTsN
CiAgICB9IGVsc2UgaWYgY29uc3RleHByIChfSW52b2tlcjE8X0NhbGxhYmxlLCBfVHkxPjo6X1N0
cmF0ZWd5ID09IF9JbnZva2VyX3N0cmF0ZWd5OjpfUG1mX29iamVjdCkgew0KICAgICAgICByZXR1
cm4gKHN0YXRpY19jYXN0PF9UeTEmJj4oX0FyZzEpLipfT2JqKShzdGF0aWNfY2FzdDxfVHlwZXMy
JiY+KF9BcmdzMikuLi4pOw0KICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKF9JbnZva2VyMTxfQ2Fs
bGFibGUsIF9UeTE+OjpfU3RyYXRlZ3kgPT0gX0ludm9rZXJfc3RyYXRlZ3k6Ol9QbWZfcmVmd3Jh
cCkgew0KICAgICAgICByZXR1cm4gKF9BcmcxLmdldCgpLipfT2JqKShzdGF0aWNfY2FzdDxfVHlw
ZXMyJiY+KF9BcmdzMikuLi4pOw0KICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKF9JbnZva2VyMTxf
Q2FsbGFibGUsIF9UeTE+OjpfU3RyYXRlZ3kgPT0gX0ludm9rZXJfc3RyYXRlZ3k6Ol9QbWZfcG9p
bnRlcikgew0KICAgICAgICByZXR1cm4gKCgqc3RhdGljX2Nhc3Q8X1R5MSYmPihfQXJnMSkpLipf
T2JqKShzdGF0aWNfY2FzdDxfVHlwZXMyJiY+KF9BcmdzMikuLi4pOw0KICAgIH0gZWxzZSBpZiBj
b25zdGV4cHIgKF9JbnZva2VyMTxfQ2FsbGFibGUsIF9UeTE+OjpfU3RyYXRlZ3kgPT0gX0ludm9r
ZXJfc3RyYXRlZ3k6Ol9QbWRfb2JqZWN0KSB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxf
VHkxJiY+KF9BcmcxKS4qX09iajsNCiAgICB9IGVsc2UgaWYgY29uc3RleHByIChfSW52b2tlcjE8
X0NhbGxhYmxlLCBfVHkxPjo6X1N0cmF0ZWd5ID09IF9JbnZva2VyX3N0cmF0ZWd5OjpfUG1kX3Jl
ZndyYXApIHsNCiAgICAgICAgcmV0dXJuIF9BcmcxLmdldCgpLipfT2JqOw0KICAgIH0gZWxzZSB7
DQogICAgICAgIHN0YXRpY19hc3NlcnQoX0ludm9rZXIxPF9DYWxsYWJsZSwgX1R5MT46Ol9TdHJh
dGVneSA9PSBfSW52b2tlcl9zdHJhdGVneTo6X1BtZF9wb2ludGVyLCAiYnVnIGluIGludm9rZSIp
Ow0KICAgICAgICByZXR1cm4gKCpzdGF0aWNfY2FzdDxfVHkxJiY+KF9BcmcxKSkuKl9PYmo7DQog
ICAgfQ0KDQoNCg0KI2xpbmUgMTYyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0cyINCn0NCiNwcmFnbWEgd2FybmluZyhwb3ApIA0K
DQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjQy
KSANCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI0NCkgDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZSA6IDQzNjUpIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA1MjE1KSANCg0KDQoNCg0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVG8+DQp2b2lkIF9JbXBsaWNpdGx5X2NvbnZlcnRfdG8oX1Rv
KSBub2V4Y2VwdDsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfRnJvbSwgY2xhc3MgX1RvLCBib29sID0g
aXNfY29udmVydGlibGVfdjxfRnJvbSwgX1RvPiwgYm9vbCA9IGlzX3ZvaWRfdjxfVG8+Pg0KaW5s
aW5lIGNvbnN0ZXhwciBib29sIF9Jc19ub3Rocm93X2NvbnZlcnRpYmxlX3YgPSBub2V4Y2VwdChf
SW1wbGljaXRseV9jb252ZXJ0X3RvPF9Ubz4oOjpzdGQ6OiBkZWNsdmFsPF9Gcm9tPigpKSk7DQoN
Cg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gcm9tLCBj
bGFzcyBfVG8sIGJvb2wgX0lzVm9pZD4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNfbm90aHJv
d19jb252ZXJ0aWJsZV92PF9Gcm9tLCBfVG8sIGZhbHNlLCBfSXNWb2lkPiA9IGZhbHNlOw0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0Zyb20sIGNsYXNzIF9Ubz4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBf
SXNfbm90aHJvd19jb252ZXJ0aWJsZV92PF9Gcm9tLCBfVG8sIHRydWUsIHRydWU+ID0gdHJ1ZTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9Gcm9tLCBjbGFzcyBfVG8+DQpzdHJ1Y3QgX0lzX25vdGhyb3df
Y29udmVydGlibGUgOiBib29sX2NvbnN0YW50PF9Jc19ub3Rocm93X2NvbnZlcnRpYmxlX3Y8X0Zy
b20sIF9Ubz4+IHsNCiAgICANCn07DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE2NjkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHlwZV90cmFpdHMiDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVm9pZCwgY2xhc3MgX0NhbGxhYmxlPg0Kc3RydWN0IF9JbnZva2Vf
dHJhaXRzX3plcm8gew0KICAgIA0KICAgIHVzaW5nIF9Jc19pbnZvY2FibGUgICAgICAgICA9IGZh
bHNlX3R5cGU7DQogICAgdXNpbmcgX0lzX25vdGhyb3dfaW52b2NhYmxlID0gZmFsc2VfdHlwZTsN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1J4Pg0KICAgIHVzaW5nIF9Jc19pbnZvY2FibGVfciA9IGZh
bHNlX3R5cGU7DQogICAgdGVtcGxhdGUgPGNsYXNzIF9SeD4NCiAgICB1c2luZyBfSXNfbm90aHJv
d19pbnZvY2FibGVfciA9IGZhbHNlX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxh
YmxlPg0KdXNpbmcgX0RlY2x0eXBlX2ludm9rZV96ZXJvID0gZGVjbHR5cGUoOjpzdGQ6OiBkZWNs
dmFsPF9DYWxsYWJsZT4oKSgpKTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9DYWxsYWJsZT4NCnN0cnVj
dCBfSW52b2tlX3RyYWl0c196ZXJvPHZvaWRfdDxfRGVjbHR5cGVfaW52b2tlX3plcm88X0NhbGxh
YmxlPj4sIF9DYWxsYWJsZT4gew0KICAgIA0KICAgIHVzaW5nIHR5cGUgICAgICAgICAgICAgICAg
ICA9IF9EZWNsdHlwZV9pbnZva2VfemVybzxfQ2FsbGFibGU+Ow0KICAgIHVzaW5nIF9Jc19pbnZv
Y2FibGUgICAgICAgICA9IHRydWVfdHlwZTsNCiAgICB1c2luZyBfSXNfbm90aHJvd19pbnZvY2Fi
bGUgPSBib29sX2NvbnN0YW50PG5vZXhjZXB0KDo6c3RkOjogZGVjbHZhbDxfQ2FsbGFibGU+KCko
KSk+Ow0KICAgIHRlbXBsYXRlIDxjbGFzcyBfUng+DQogICAgdXNpbmcgX0lzX2ludm9jYWJsZV9y
ID0gYm9vbF9jb25zdGFudDxkaXNqdW5jdGlvbl92PGlzX3ZvaWQ8X1J4PiwgaXNfY29udmVydGli
bGU8dHlwZSwgX1J4Pj4+Ow0KICAgIHRlbXBsYXRlIDxjbGFzcyBfUng+DQogICAgdXNpbmcgX0lz
X25vdGhyb3dfaW52b2NhYmxlX3IgPSBib29sX2NvbnN0YW50PA0KICAgICAgICBjb25qdW5jdGlv
bl92PF9Jc19ub3Rocm93X2ludm9jYWJsZSwgZGlzanVuY3Rpb248aXNfdm9pZDxfUng+LCBfSXNf
bm90aHJvd19jb252ZXJ0aWJsZTx0eXBlLCBfUng+Pj4+Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9Wb2lkLCBjbGFzcy4uLiBfVHlwZXM+DQpzdHJ1Y3QgX0ludm9rZV90cmFpdHNfbm9uemVybyB7
DQogICAgDQogICAgdXNpbmcgX0lzX2ludm9jYWJsZSAgICAgICAgID0gZmFsc2VfdHlwZTsNCiAg
ICB1c2luZyBfSXNfbm90aHJvd19pbnZvY2FibGUgPSBmYWxzZV90eXBlOw0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfUng+DQogICAgdXNpbmcgX0lzX2ludm9jYWJsZV9yID0gZmFsc2VfdHlwZTsNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1J4Pg0KICAgIHVzaW5nIF9Jc19ub3Rocm93X2ludm9jYWJsZV9y
ID0gZmFsc2VfdHlwZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ2FsbGFibGUsIGNsYXNzIF9U
eTEsIGNsYXNzLi4uIF9UeXBlczI+DQp1c2luZyBfRGVjbHR5cGVfaW52b2tlX25vbnplcm8gPSBk
ZWNsdHlwZSgNCiAgICBfSW52b2tlcjE8X0NhbGxhYmxlLCBfVHkxPjo6X0NhbGwoOjpzdGQ6OiBk
ZWNsdmFsPF9DYWxsYWJsZT4oKSwgOjpzdGQ6OiBkZWNsdmFsPF9UeTE+KCksIDo6c3RkOjogZGVj
bHZhbDxfVHlwZXMyPigpLi4uKSk7DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ2FsbGFibGUsIGNsYXNz
IF9UeTEsIGNsYXNzLi4uIF9UeXBlczI+DQpzdHJ1Y3QgX0ludm9rZV90cmFpdHNfbm9uemVybzx2
b2lkX3Q8X0RlY2x0eXBlX2ludm9rZV9ub256ZXJvPF9DYWxsYWJsZSwgX1R5MSwgX1R5cGVzMi4u
Lj4+LCBfQ2FsbGFibGUsIF9UeTEsDQogICAgX1R5cGVzMi4uLj4gew0KICAgIA0KICAgIHVzaW5n
IHR5cGUgICAgICAgICAgICAgICAgICA9IF9EZWNsdHlwZV9pbnZva2Vfbm9uemVybzxfQ2FsbGFi
bGUsIF9UeTEsIF9UeXBlczIuLi4+Ow0KICAgIHVzaW5nIF9Jc19pbnZvY2FibGUgICAgICAgICA9
IHRydWVfdHlwZTsNCiAgICB1c2luZyBfSXNfbm90aHJvd19pbnZvY2FibGUgPSBib29sX2NvbnN0
YW50PG5vZXhjZXB0KF9JbnZva2VyMTxfQ2FsbGFibGUsIF9UeTE+OjpfQ2FsbCgNCiAgICAgICAg
OjpzdGQ6OiBkZWNsdmFsPF9DYWxsYWJsZT4oKSwgOjpzdGQ6OiBkZWNsdmFsPF9UeTE+KCksIDo6
c3RkOjogZGVjbHZhbDxfVHlwZXMyPigpLi4uKSk+Ow0KICAgIHRlbXBsYXRlIDxjbGFzcyBfUng+
DQogICAgdXNpbmcgX0lzX2ludm9jYWJsZV9yID0gYm9vbF9jb25zdGFudDxkaXNqdW5jdGlvbl92
PGlzX3ZvaWQ8X1J4PiwgaXNfY29udmVydGlibGU8dHlwZSwgX1J4Pj4+Ow0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfUng+DQogICAgdXNpbmcgX0lzX25vdGhyb3dfaW52b2NhYmxlX3IgPSBib29sX2Nv
bnN0YW50PA0KICAgICAgICBjb25qdW5jdGlvbl92PF9Jc19ub3Rocm93X2ludm9jYWJsZSwgZGlz
anVuY3Rpb248aXNfdm9pZDxfUng+LCBfSXNfbm90aHJvd19jb252ZXJ0aWJsZTx0eXBlLCBfUng+
Pj4+Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9DYWxsYWJsZSwgY2xhc3MuLi4gX0FyZ3M+DQp1
c2luZyBfU2VsZWN0X2ludm9rZV90cmFpdHMgPSBjb25kaXRpb25hbF90PHNpemVvZi4uLihfQXJn
cykgPT0gMCwgX0ludm9rZV90cmFpdHNfemVybzx2b2lkLCBfQ2FsbGFibGU+LA0KICAgIF9JbnZv
a2VfdHJhaXRzX25vbnplcm88dm9pZCwgX0NhbGxhYmxlLCBfQXJncy4uLj4+Ow0KDQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9GdHk+DQpzdHJ1Y3QgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTQ6
ICIgInN0ZDo6cmVzdWx0X29mIGFuZCBzdGQ6OnJlc3VsdF9vZl90IGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJUaGV5IGFyZSBzdXBlcnNlZGVkIGJ5IHN0ZDo6aW52b2tlX3Jlc3VsdCBhbmQg
c3RkOjppbnZva2VfcmVzdWx0X3QuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X1JF
U1VMVF9PRl9ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBS
RUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRo
aXMgd2FybmluZy4iKV1dIHJlc3VsdF9vZiB7IA0KICAgIHN0YXRpY19hc3NlcnQoX0Fsd2F5c19m
YWxzZTxfRnR5PiwgInJlc3VsdF9vZjxDYWxsYWJsZVR5cGU+IGlzIGludmFsaWQ7IHVzZSAiDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0X29mPENhbGxhYmxl
VHlwZSh6ZXJvIG9yIG1vcmUgYXJndW1lbnQgdHlwZXMpPiBpbnN0ZWFkLiIpOw0KfTsNCg0KDQoN
Cg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9DYWxsYWJsZSwgY2xhc3MuLi4gX0FyZ3M+IHN0cnVj
dCBbW2RlcHJlY2F0ZWQoIndhcm5pbmcgU1RMNDAxNDogIiAic3RkOjpyZXN1bHRfb2YgYW5kIHN0
ZDo6cmVzdWx0X29mX3QgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIlRoZXkgYXJlIHN1cGVy
c2VkZWQgYnkgc3RkOjppbnZva2VfcmVzdWx0IGFuZCBzdGQ6Omludm9rZV9yZXN1bHRfdC4gIiAi
WW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfUkVTVUxUX09GX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25v
d2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gcmVzdWx0X29m
PF9DYWxsYWJsZSBfX2NkZWNsKF9BcmdzLi4uKT4gOiBfU2VsZWN0X2ludm9rZV90cmFpdHM8X0Nh
bGxhYmxlLCBfQXJncy4uLj4geyB9OyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxhYmxlLCBjbGFz
cy4uLiBfQXJncz4gc3RydWN0IFtbZGVwcmVjYXRlZCgid2FybmluZyBTVEw0MDE0OiAiICJzdGQ6
OnJlc3VsdF9vZiBhbmQgc3RkOjpyZXN1bHRfb2ZfdCBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiVGhleSBhcmUgc3VwZXJzZWRlZCBieSBzdGQ6Omludm9rZV9yZXN1bHQgYW5kIHN0ZDo6aW52
b2tlX3Jlc3VsdF90LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19SRVNVTFRfT0Zf
REVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05f
V0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5p
bmcuIildXSByZXN1bHRfb2Y8X0NhbGxhYmxlIF9fdmVjdG9yY2FsbChfQXJncy4uLik+IDogX1Nl
bGVjdF9pbnZva2VfdHJhaXRzPF9DYWxsYWJsZSwgX0FyZ3MuLi4+IHsgfTsNCg0KDQpfX3ByYWdt
YSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0OTk2KSkNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQp1c2luZyByZXN1bHRfb2ZfdCBbW2RlcHJlY2F0ZWQoIndhcm5pbmcg
U1RMNDAxNDogIiAic3RkOjpyZXN1bHRfb2YgYW5kIHN0ZDo6cmVzdWx0X29mX3QgYXJlIGRlcHJl
Y2F0ZWQgaW4gQysrMTcuICIgIlRoZXkgYXJlIHN1cGVyc2VkZWQgYnkgc3RkOjppbnZva2VfcmVz
dWx0IGFuZCBzdGQ6Omludm9rZV9yZXN1bHRfdC4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0Vf
Q1hYMTdfUkVTVUxUX09GX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NY
WDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVj
ZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gPSB0eXBlbmFtZSByZXN1bHRfb2Y8X1R5Pjo6dHlwZTsN
Cl9fcHJhZ21hKHdhcm5pbmcocG9wKSkNCiNsaW5lIDE3NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHlwZV90cmFpdHMiDQoNCnRlbXBsYXRlIDxj
bGFzcyBfQ2FsbGFibGUsIGNsYXNzLi4uIF9BcmdzPg0KdXNpbmcgX0ludm9rZV9yZXN1bHRfdCA9
IHR5cGVuYW1lIF9TZWxlY3RfaW52b2tlX3RyYWl0czxfQ2FsbGFibGUsIF9BcmdzLi4uPjo6dHlw
ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9SeCwgY2xhc3MgX0NhbGxhYmxlLCBjbGFzcy4uLiBfQXJn
cz4NCnVzaW5nIF9Jc19pbnZvY2FibGVfcl8gPSB0eXBlbmFtZSBfU2VsZWN0X2ludm9rZV90cmFp
dHM8X0NhbGxhYmxlLCBfQXJncy4uLj46OnRlbXBsYXRlIF9Jc19pbnZvY2FibGVfcjxfUng+Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4LCBjbGFzcyBfQ2FsbGFibGUsIGNsYXNzLi4uIF9BcmdzPg0K
c3RydWN0IF9Jc19pbnZvY2FibGVfciA6IF9Jc19pbnZvY2FibGVfcl88X1J4LCBfQ2FsbGFibGUs
IF9BcmdzLi4uPiB7DQogICAgDQp9Ow0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9DYWxsYWJsZSwg
Y2xhc3MuLi4gX0FyZ3M+DQpzdHJ1Y3QgaW52b2tlX3Jlc3VsdCA6IF9TZWxlY3RfaW52b2tlX3Ry
YWl0czxfQ2FsbGFibGUsIF9BcmdzLi4uPiB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0NhbGxhYmxlLCBjbGFzcy4uLiBfQXJncz4NCnVzaW5nIGludm9rZV9yZXN1bHRfdCA9IHR5cGVu
YW1lIF9TZWxlY3RfaW52b2tlX3RyYWl0czxfQ2FsbGFibGUsIF9BcmdzLi4uPjo6dHlwZTsNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxhYmxlLCBjbGFzcy4uLiBfQXJncz4NCnN0cnVjdCBpc19p
bnZvY2FibGUgOiBfU2VsZWN0X2ludm9rZV90cmFpdHM8X0NhbGxhYmxlLCBfQXJncy4uLj46Ol9J
c19pbnZvY2FibGUgew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9DYWxsYWJsZSwgY2xh
c3MuLi4gX0FyZ3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfaW52b2NhYmxlX3YgPSBfU2Vs
ZWN0X2ludm9rZV90cmFpdHM8X0NhbGxhYmxlLCBfQXJncy4uLj46Ol9Jc19pbnZvY2FibGU6OnZh
bHVlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQ2FsbGFibGUsIGNsYXNzLi4uIF9BcmdzPg0Kc3Ry
dWN0IGlzX25vdGhyb3dfaW52b2NhYmxlIDogX1NlbGVjdF9pbnZva2VfdHJhaXRzPF9DYWxsYWJs
ZSwgX0FyZ3MuLi4+OjpfSXNfbm90aHJvd19pbnZvY2FibGUgew0KICAgIA0KfTsNCg0KdGVtcGxh
dGUgPGNsYXNzIF9DYWxsYWJsZSwgY2xhc3MuLi4gX0FyZ3M+DQppbmxpbmUgY29uc3RleHByIGJv
b2wgaXNfbm90aHJvd19pbnZvY2FibGVfdiA9IF9TZWxlY3RfaW52b2tlX3RyYWl0czxfQ2FsbGFi
bGUsIF9BcmdzLi4uPjo6X0lzX25vdGhyb3dfaW52b2NhYmxlOjp2YWx1ZTsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1J4LCBjbGFzcyBfQ2FsbGFibGUsIGNsYXNzLi4uIF9BcmdzPg0Kc3RydWN0IGlz
X2ludm9jYWJsZV9yIDogX0lzX2ludm9jYWJsZV9yXzxfUngsIF9DYWxsYWJsZSwgX0FyZ3MuLi4+
IHsNCiAgICANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUngsIGNsYXNzIF9DYWxsYWJsZSwgY2xh
c3MuLi4gX0FyZ3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfaW52b2NhYmxlX3JfdiA9IF9J
c19pbnZvY2FibGVfcl88X1J4LCBfQ2FsbGFibGUsIF9BcmdzLi4uPjo6dmFsdWU7DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9SeCwgY2xhc3MgX0NhbGxhYmxlLCBjbGFzcy4uLiBfQXJncz4NCnN0cnVj
dCBpc19ub3Rocm93X2ludm9jYWJsZV9yIDogX1NlbGVjdF9pbnZva2VfdHJhaXRzPF9DYWxsYWJs
ZSwgX0FyZ3MuLi4+Ojp0ZW1wbGF0ZSBfSXNfbm90aHJvd19pbnZvY2FibGVfcjxfUng+IHsNCiAg
ICANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUngsIGNsYXNzIF9DYWxsYWJsZSwgY2xhc3MuLi4g
X0FyZ3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbm90aHJvd19pbnZvY2FibGVfcl92ID0N
CiAgICBfU2VsZWN0X2ludm9rZV90cmFpdHM8X0NhbGxhYmxlLCBfQXJncy4uLj46OnRlbXBsYXRl
IF9Jc19ub3Rocm93X2ludm9jYWJsZV9yPF9SeD46OnZhbHVlOw0KI2xpbmUgMTgxMiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0cyIN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX1dlYWtfcmVz
dWx0X3R5cGUge307IA0KDQpfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5n
KGRpc2FibGUgOiA0OTk2KSkNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX1dlYWtfcmVz
dWx0X3R5cGU8X1R5LCB2b2lkX3Q8dHlwZW5hbWUgX1R5OjpyZXN1bHRfdHlwZT4+IHsgDQogICAg
W1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZz
ICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29u
ZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3Ug
Y2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dB
Uk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFj
a25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRl
ZiB0eXBlbmFtZSBfVHk6OnJlc3VsdF90eXBlIHJlc3VsdF90eXBlOw0KfTsNCl9fcHJhZ21hKHdh
cm5pbmcocG9wKSkNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgPSB2b2lkPg0Kc3RydWN0
IF9XZWFrX2FyZ3VtZW50X3R5cGUgOiBfV2Vha19yZXN1bHRfdHlwZTxfVHk+IHt9OyANCg0KX19w
cmFnbWEod2FybmluZyhwdXNoKSkgX19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5NikpDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9XZWFrX2FyZ3VtZW50X3R5cGU8X1R5LCB2b2lk
X3Q8dHlwZW5hbWUgX1R5Ojphcmd1bWVudF90eXBlPj4NCiAgICA6IF9XZWFrX3Jlc3VsdF90eXBl
PF9UeT4geyANCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0
X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90
eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4g
QysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNf
REVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05f
V0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5p
bmcuIildXSB0eXBlZGVmIHR5cGVuYW1lIF9UeTo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBl
Ow0KfTsNCl9fcHJhZ21hKHdhcm5pbmcocG9wKSkNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xh
c3MgPSB2b2lkPg0Kc3RydWN0IF9XZWFrX2JpbmFyeV9hcmdzIDogX1dlYWtfYXJndW1lbnRfdHlw
ZTxfVHk+IHt9OyANCg0KX19wcmFnbWEod2FybmluZyhwdXNoKSkgX19wcmFnbWEod2FybmluZyhk
aXNhYmxlIDogNDk5NikpDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9XZWFrX2JpbmFy
eV9hcmdzPF9UeSwgdm9pZF90PHR5cGVuYW1lIF9UeTo6Zmlyc3RfYXJndW1lbnRfdHlwZSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfVHk6OnNlY29uZF9hcmd1
bWVudF90eXBlPj4NCiAgICA6IF9XZWFrX2FyZ3VtZW50X3R5cGU8X1R5PiB7IA0KICAgIFtbZGVw
cmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJh
bmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJn
dW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBk
ZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5H
ICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3ds
ZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgdHlw
ZW5hbWUgX1R5OjpmaXJzdF9hcmd1bWVudF90eXBlIGZpcnN0X2FyZ3VtZW50X3R5cGU7DQogICAg
W1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZz
ICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29u
ZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3Ug
Y2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dB
Uk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFj
a25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRl
ZiB0eXBlbmFtZSBfVHk6OnNlY29uZF9hcmd1bWVudF90eXBlIHNlY29uZF9hcmd1bWVudF90eXBl
Ow0KfTsNCl9fcHJhZ21hKHdhcm5pbmcocG9wKSkNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0
cnVjdCBfV2Vha190eXBlcyB7IA0KICAgIHVzaW5nIF9Jc19mX29yX3BmID0gX0lzX2Z1bmN0aW9u
PHJlbW92ZV9wb2ludGVyX3Q8X1R5Pj47DQogICAgdXNpbmcgX0lzX3BtZiAgICAgPSBfSXNfbWVt
ZnVucHRyPHJlbW92ZV9jdl90PF9UeT4+Ow0KICAgIHVzaW5nIHR5cGUgICAgICAgID0gY29uZGl0
aW9uYWxfdDxpc19mdW5jdGlvbl92PHJlbW92ZV9wb2ludGVyX3Q8X1R5Pj4sIF9Jc19mX29yX3Bm
LA0KICAgICAgICBjb25kaXRpb25hbF90PGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX3Y8X1R5
PiwgX0lzX3BtZiwgX1dlYWtfYmluYXJ5X2FyZ3M8X1R5Pj4+Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0Kdm9pZCBfUmVmd3JhcF9jdG9yX2Z1bihfSWRlbnRpdHlfdDxfVHkmPikgbm9l
eGNlcHQ7DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kdm9pZCBfUmVmd3JhcF9jdG9yX2Z1bihfSWRl
bnRpdHlfdDxfVHkmJj4pID0gZGVsZXRlOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBf
VXR5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX1JlZndyYXBfaGFzX2N0b3JfZnJvbSA6IGZhbHNl
X3R5cGUge307DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9VdHk+DQpzdHJ1Y3QgX1Jl
ZndyYXBfaGFzX2N0b3JfZnJvbTxfVHksIF9VdHksIHZvaWRfdDxkZWNsdHlwZShfUmVmd3JhcF9j
dG9yX2Z1bjxfVHk+KDo6c3RkOjogZGVjbHZhbDxfVXR5PigpKSk+PiA6IHRydWVfdHlwZSB7fTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmNsYXNzIHJlZmVyZW5jZV93cmFwcGVyDQoNCiAgICA6
IHB1YmxpYyBfV2Vha190eXBlczxfVHk+Ojp0eXBlDQojbGluZSAxODczICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR5cGVfdHJhaXRzIg0Kew0KcHVi
bGljOg0KICAgIHN0YXRpY19hc3NlcnQoaXNfb2JqZWN0X3Y8X1R5PiB8fCBpc19mdW5jdGlvbl92
PF9UeT4sDQogICAgICAgICJyZWZlcmVuY2Vfd3JhcHBlcjxUPiByZXF1aXJlcyBUIHRvIGJlIGFu
IG9iamVjdCB0eXBlIG9yIGEgZnVuY3Rpb24gdHlwZS4iKTsNCg0KICAgIHVzaW5nIHR5cGUgPSBf
VHk7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgZW5hYmxlX2lmX3Q8Y29uanVuY3Rpb25f
djxuZWdhdGlvbjxpc19zYW1lPF9SZW1vdmVfY3ZyZWZfdDxfVXR5PiwgcmVmZXJlbmNlX3dyYXBw
ZXI+PiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZ3cmFw
X2hhc19jdG9yX2Zyb208X1R5LCBfVXR5Pj4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQ+ID0gMD4NCiAgICBpbmxpbmUgcmVmZXJlbmNlX3dyYXBwZXIoX1V0eSYmIF9WYWwpIG5v
ZXhjZXB0KG5vZXhjZXB0KF9SZWZ3cmFwX2N0b3JfZnVuPF9UeT4oOjpzdGQ6OiBkZWNsdmFsPF9V
dHk+KCkpKSkgew0KICAgICAgICBfVHkmIF9SZWYgPSBzdGF0aWNfY2FzdDxfVXR5JiY+KF9WYWwp
Ow0KICAgICAgICBfUHRyICAgICAgPSA6OnN0ZDo6IGFkZHJlc3NvZihfUmVmKTsNCiAgICB9DQoN
CiAgICBpbmxpbmUgb3BlcmF0b3IgX1R5JigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0
dXJuICpfUHRyOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaW5saW5lIF9UeSYgZ2V0KCkg
Y29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKl9QdHI7DQogICAgfQ0KDQpwcml2YXRl
Og0KICAgIF9UeSogX1B0cnt9Ow0KDQpwdWJsaWM6DQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9U
eXBlcz4NCiAgICBpbmxpbmUgYXV0byBvcGVyYXRvcigpKF9UeXBlcyYmLi4uIF9BcmdzKSBjb25z
dA0KICAgICAgICBub2V4Y2VwdChub2V4Y2VwdCg6OnN0ZDo6IGludm9rZSgqX1B0ciwgc3RhdGlj
X2Nhc3Q8X1R5cGVzJiY+KF9BcmdzKS4uLikpKSANCiAgICAgICAgLT4gZGVjbHR5cGUoOjpzdGQ6
OiBpbnZva2UoKl9QdHIsIHN0YXRpY19jYXN0PF9UeXBlcyYmPihfQXJncykuLi4pKSB7DQogICAg
ICAgIHJldHVybiA6OnN0ZDo6IGludm9rZSgqX1B0ciwgc3RhdGljX2Nhc3Q8X1R5cGVzJiY+KF9B
cmdzKS4uLik7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KcmVmZXJlbmNl
X3dyYXBwZXIoX1R5JikgLT4gcmVmZXJlbmNlX3dyYXBwZXI8X1R5PjsNCiNsaW5lIDE5MTIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHlwZV90cmFp
dHMiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gaW5saW5lIHJlZmVy
ZW5jZV93cmFwcGVyPF9UeT4gcmVmKF9UeSYgX1ZhbCkgbm9leGNlcHQgew0KICAgIHJldHVybiBy
ZWZlcmVuY2Vfd3JhcHBlcjxfVHk+KF9WYWwpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
dm9pZCByZWYoY29uc3QgX1R5JiYpID0gZGVsZXRlOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
W1tub2Rpc2NhcmRdXSBpbmxpbmUgcmVmZXJlbmNlX3dyYXBwZXI8X1R5PiByZWYocmVmZXJlbmNl
X3dyYXBwZXI8X1R5PiBfVmFsKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIDo6c3RkOjogcmVmKF9W
YWwuZ2V0KCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBpbmxp
bmUgcmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgX1R5PiBjcmVmKGNvbnN0IF9UeSYgX1ZhbCkgbm9l
eGNlcHQgew0KICAgIHJldHVybiByZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBfVHk+KF9WYWwpOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kdm9pZCBjcmVmKGNvbnN0IF9UeSYmKSA9IGRlbGV0
ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gaW5saW5lIHJlZmVyZW5j
ZV93cmFwcGVyPGNvbnN0IF9UeT4gY3JlZihyZWZlcmVuY2Vfd3JhcHBlcjxfVHk+IF9WYWwpIG5v
ZXhjZXB0IHsNCiAgICByZXR1cm4gOjpzdGQ6OiBjcmVmKF9WYWwuZ2V0KCkpOw0KfQ0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTk2MSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0cyINCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9Jc19zd2FwcGFibGU7DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfSXNfbm90aHJvd19zd2FwcGFibGU7DQoNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5LCBlbmFibGVfaWZfdDxpc19tb3ZlX2NvbnN0cnVjdGlibGVfdjxfVHk+
ICYmIGlzX21vdmVfYXNzaWduYWJsZV92PF9UeT4sIGludD4gPSAwPg0KDQoNCiNsaW5lIDE5NzYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHlwZV90
cmFpdHMiDQppbmxpbmUgdm9pZCBzd2FwKF9UeSYsIF9UeSYpIG5vZXhjZXB0KGlzX25vdGhyb3df
bW92ZV9jb25zdHJ1Y3RpYmxlX3Y8X1R5PiYmIGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlX3Y8
X1R5Pik7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBfU2l6ZSwgZW5hYmxlX2lmX3Q8
X0lzX3N3YXBwYWJsZTxfVHk+Ojp2YWx1ZSwgaW50PiA9IDA+DQppbmxpbmUgdm9pZCBzd2FwKF9U
eSAoJilbX1NpemVdLCBfVHkgKCYpW19TaXplXSkgbm9leGNlcHQoX0lzX25vdGhyb3dfc3dhcHBh
YmxlPF9UeT46OnZhbHVlKTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Miwg
Y2xhc3MgPSB2b2lkPg0Kc3RydWN0IF9Td2FwcGFibGVfd2l0aF9oZWxwZXIgOiBmYWxzZV90eXBl
IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpzdHJ1Y3QgX1N3YXBw
YWJsZV93aXRoX2hlbHBlcjxfVHkxLCBfVHkyLCB2b2lkX3Q8ZGVjbHR5cGUoc3dhcCg6OnN0ZDo6
IGRlY2x2YWw8X1R5MT4oKSwgOjpzdGQ6OiBkZWNsdmFsPF9UeTI+KCkpKT4+DQogICAgOiB0cnVl
X3R5cGUge307IA0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0
IF9Jc19zd2FwcGFibGVfd2l0aA0KICAgIDogYm9vbF9jb25zdGFudDxjb25qdW5jdGlvbl92PF9T
d2FwcGFibGVfd2l0aF9oZWxwZXI8X1R5MSwgX1R5Mj4sIF9Td2FwcGFibGVfd2l0aF9oZWxwZXI8
X1R5MiwgX1R5MT4+PiB7DQogICAgDQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1
Y3QgX0lzX3N3YXBwYWJsZSA6IF9Jc19zd2FwcGFibGVfd2l0aDxhZGRfbHZhbHVlX3JlZmVyZW5j
ZV90PF9UeT4sIGFkZF9sdmFsdWVfcmVmZXJlbmNlX3Q8X1R5Pj46OnR5cGUgew0KICAgIA0KfTsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCnN0cnVjdCBfU3dhcF9jYW5u
b3RfdGhyb3cgOiBib29sX2NvbnN0YW50PG5vZXhjZXB0KHN3YXAoOjpzdGQ6OiBkZWNsdmFsPF9U
eTE+KCksIDo6c3RkOjogZGVjbHZhbDxfVHkyPigpKSkgDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBub2V4Y2VwdChzd2FwKDo6c3RkOjogZGVjbHZhbDxfVHkyPigpLCA6
OnN0ZDo6IGRlY2x2YWw8X1R5MT4oKSkpPiB7DQogICAgDQogICAgDQp9Ow0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0IF9Jc19ub3Rocm93X3N3YXBwYWJsZV93
aXRoDQogICAgOiBib29sX2NvbnN0YW50PGNvbmp1bmN0aW9uX3Y8X0lzX3N3YXBwYWJsZV93aXRo
PF9UeTEsIF9UeTI+LCBfU3dhcF9jYW5ub3RfdGhyb3c8X1R5MSwgX1R5Mj4+PiB7DQogICAgDQog
ICAgDQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0lzX25vdGhyb3dfc3dh
cHBhYmxlDQogICAgOiBfSXNfbm90aHJvd19zd2FwcGFibGVfd2l0aDxhZGRfbHZhbHVlX3JlZmVy
ZW5jZV90PF9UeT4sIGFkZF9sdmFsdWVfcmVmZXJlbmNlX3Q8X1R5Pj46OnR5cGUgew0KICAgIA0K
fTsNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0IGlzX3N3
YXBwYWJsZV93aXRoIDogX0lzX3N3YXBwYWJsZV93aXRoPF9UeTEsIF9UeTI+Ojp0eXBlIHsNCiAg
ICANCiAgICANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KaW5saW5l
IGNvbnN0ZXhwciBib29sIGlzX3N3YXBwYWJsZV93aXRoX3YgPQ0KICAgIGNvbmp1bmN0aW9uX3Y8
X1N3YXBwYWJsZV93aXRoX2hlbHBlcjxfVHkxLCBfVHkyPiwgX1N3YXBwYWJsZV93aXRoX2hlbHBl
cjxfVHkyLCBfVHkxPj47DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBpc19zd2Fw
cGFibGUgOiBfSXNfc3dhcHBhYmxlPF9UeT46OnR5cGUge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX3N3YXBwYWJsZV92ID0gX0lzX3N3YXBwYWJs
ZTxfVHk+Ojp2YWx1ZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCnN0
cnVjdCBpc19ub3Rocm93X3N3YXBwYWJsZV93aXRoIDogX0lzX25vdGhyb3dfc3dhcHBhYmxlX3dp
dGg8X1R5MSwgX1R5Mj46OnR5cGUgew0KICAgIA0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeTEsIGNsYXNzIF9UeTI+DQppbmxpbmUgY29uc3RleHByIGJvb2wgaXNfbm90aHJvd19zd2Fw
cGFibGVfd2l0aF92ID0gX0lzX25vdGhyb3dfc3dhcHBhYmxlX3dpdGg8X1R5MSwgX1R5Mj46OnZh
bHVlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgaXNfbm90aHJvd19zd2FwcGFi
bGUgOiBfSXNfbm90aHJvd19zd2FwcGFibGU8X1R5Pjo6dHlwZSB7DQogICAgDQp9Ow0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX25vdGhyb3dfc3dhcHBh
YmxlX3YgPSBfSXNfbm90aHJvd19zd2FwcGFibGU8X1R5Pjo6dmFsdWU7DQojbGluZSAyMDYzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR5cGVfdHJh
aXRzIg0KDQoNCm5hbWVzcGFjZSBfSGFzX0FETF9zd2FwX2RldGFpbCB7DQogICAgdm9pZCBzd2Fw
KCk7IA0KDQogICAgdGVtcGxhdGUgPGNsYXNzLCBjbGFzcyA9IHZvaWQ+DQogICAgc3RydWN0IF9I
YXNfQURMX3N3YXAgOiBmYWxzZV90eXBlIHt9Ow0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHk+DQog
ICAgc3RydWN0IF9IYXNfQURMX3N3YXA8X1R5LCB2b2lkX3Q8ZGVjbHR5cGUoc3dhcCg6OnN0ZDo6
IGRlY2x2YWw8X1R5Jj4oKSwgOjpzdGQ6OiBkZWNsdmFsPF9UeSY+KCkpKT4+IDogdHJ1ZV90eXBl
IHt9Ow0KfSANCnVzaW5nIF9IYXNfQURMX3N3YXBfZGV0YWlsOjpfSGFzX0FETF9zd2FwOw0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9Jc190cml2aWFsbHlf
c3dhcHBhYmxlX3YgPSBjb25qdW5jdGlvbl92PGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8X1R5
PiwNCiAgICBpc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPF9UeT4sIGlzX3RyaXZpYWxs
eV9tb3ZlX2Fzc2lnbmFibGU8X1R5PiwgbmVnYXRpb248X0hhc19BRExfc3dhcDxfVHk+Pj47DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0lzX3RyaXZpYWxseV9zd2FwcGFibGUgOiBi
b29sX2NvbnN0YW50PF9Jc190cml2aWFsbHlfc3dhcHBhYmxlX3Y8X1R5Pj4gew0KICAgIA0KfTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KaW5saW5lIGNvbnN0ZXhw
ciBzaXplX3QgX0ZOVl9vZmZzZXRfYmFzaXMgPSAxNDY5NTk4MTAzOTM0NjY1NjAzN1VMTDsNCmlu
bGluZSBjb25zdGV4cHIgc2l6ZV90IF9GTlZfcHJpbWUgICAgICAgID0gMTA5OTUxMTYyODIxMVVM
TDsNCg0KDQoNCiNsaW5lIDIxMzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcdHlwZV90cmFpdHMiDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIHNpemVf
dCBfRm52MWFfYXBwZW5kX2J5dGVzKHNpemVfdCBfVmFsLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBj
b25zdCBfRmlyc3QsDQogICAgY29uc3Qgc2l6ZV90IF9Db3VudCkgbm9leGNlcHQgeyANCiAgICBm
b3IgKHNpemVfdCBfSWR4ID0gMDsgX0lkeCA8IF9Db3VudDsgKytfSWR4KSB7DQogICAgICAgIF9W
YWwgXj0gc3RhdGljX2Nhc3Q8c2l6ZV90PihfRmlyc3RbX0lkeF0pOw0KICAgICAgICBfVmFsICo9
IF9GTlZfcHJpbWU7DQogICAgfQ0KDQogICAgcmV0dXJuIF9WYWw7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIHNpemVfdCBfRm52MWFfYXBwZW5kX3JhbmdlKGNvbnN0
IHNpemVfdCBfVmFsLCBjb25zdCBfVHkqIGNvbnN0IF9GaXJzdCwNCiAgICBjb25zdCBfVHkqIGNv
bnN0IF9MYXN0KSBub2V4Y2VwdCB7IA0KICAgIHN0YXRpY19hc3NlcnQoaXNfdHJpdmlhbF92PF9U
eT4sICJPbmx5IHRyaXZpYWwgdHlwZXMgY2FuIGJlIGRpcmVjdGx5IGhhc2hlZC4iKTsNCiAgICBj
b25zdCBhdXRvIF9GaXJzdGIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX0xhc3RiICA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KF9MYXN0KTsNCiAgICByZXR1cm4gX0ZudjFhX2FwcGVuZF9ieXRl
cyhfVmFsLCBfRmlyc3RiLCBzdGF0aWNfY2FzdDxzaXplX3Q+KF9MYXN0YiAtIF9GaXJzdGIpKTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9LdHk+DQpbW25vZGlzY2FyZF1dIHNpemVfdCBfRm52MWFf
YXBwZW5kX3ZhbHVlKA0KICAgIGNvbnN0IHNpemVfdCBfVmFsLCBjb25zdCBfS3R5JiBfS2V5dmFs
KSBub2V4Y2VwdCB7IA0KICAgIHN0YXRpY19hc3NlcnQoaXNfdHJpdmlhbF92PF9LdHk+LCAiT25s
eSB0cml2aWFsIHR5cGVzIGNhbiBiZSBkaXJlY3RseSBoYXNoZWQuIik7DQogICAgcmV0dXJuIF9G
bnYxYV9hcHBlbmRfYnl0ZXMoX1ZhbCwgJnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhciY+KF9LZXl2YWwpLCBzaXplb2YoX0t0eSkpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
S3R5Pg0KW1tub2Rpc2NhcmRdXSBzaXplX3QgX0hhc2hfcmVwcmVzZW50YXRpb24oY29uc3QgX0t0
eSYgX0tleXZhbCkgbm9leGNlcHQgeyANCiAgICByZXR1cm4gX0ZudjFhX2FwcGVuZF92YWx1ZShf
Rk5WX29mZnNldF9iYXNpcywgX0tleXZhbCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9LdHk+
DQpbW25vZGlzY2FyZF1dIHNpemVfdCBfSGFzaF9hcnJheV9yZXByZXNlbnRhdGlvbigNCiAgICBj
b25zdCBfS3R5KiBjb25zdCBfRmlyc3QsIGNvbnN0IHNpemVfdCBfQ291bnQpIG5vZXhjZXB0IHsg
DQogICAgc3RhdGljX2Fzc2VydChpc190cml2aWFsX3Y8X0t0eT4sICJPbmx5IHRyaXZpYWwgdHlw
ZXMgY2FuIGJlIGRpcmVjdGx5IGhhc2hlZC4iKTsNCiAgICByZXR1cm4gX0ZudjFhX2FwcGVuZF9i
eXRlcygNCiAgICAgICAgX0ZOVl9vZmZzZXRfYmFzaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KF9GaXJzdCksIF9Db3VudCAqIHNpemVvZihfS3R5KSk7DQp9DQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9LdHk+DQpzdHJ1Y3QgaGFzaDsNCg0KdGVtcGxhdGUgPGNsYXNzIF9L
dHksIGJvb2wgX0VuYWJsZWQ+DQpzdHJ1Y3QgX0NvbmRpdGlvbmFsbHlfZW5hYmxlZF9oYXNoIHsg
DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5
cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5k
IHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAi
ICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FU
SU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdT
IHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0g
dHlwZWRlZiBfS3R5IGFyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBzaXplX3QgcmVzdWx0X3R5cGU7DQoN
CiAgICBbW25vZGlzY2FyZF1dIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IF9LdHkmIF9LZXl2YWwp
IGNvbnN0DQogICAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KGhhc2g8X0t0eT46Ol9Eb19oYXNoKF9L
ZXl2YWwpKSkgIHsNCiAgICAgICAgcmV0dXJuIGhhc2g8X0t0eT46Ol9Eb19oYXNoKF9LZXl2YWwp
Ow0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfS3R5Pg0Kc3RydWN0IF9Db25kaXRpb25h
bGx5X2VuYWJsZWRfaGFzaDxfS3R5LCBmYWxzZT4geyANCiAgICBfQ29uZGl0aW9uYWxseV9lbmFi
bGVkX2hhc2goKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBkZWxldGU7DQog
ICAgX0NvbmRpdGlvbmFsbHlfZW5hYmxlZF9oYXNoKGNvbnN0IF9Db25kaXRpb25hbGx5X2VuYWJs
ZWRfaGFzaCYpID0gZGVsZXRlOw0KICAgIF9Db25kaXRpb25hbGx5X2VuYWJsZWRfaGFzaChfQ29u
ZGl0aW9uYWxseV9lbmFibGVkX2hhc2gmJikgICAgICA9IGRlbGV0ZTsNCiAgICBfQ29uZGl0aW9u
YWxseV9lbmFibGVkX2hhc2gmIG9wZXJhdG9yPShjb25zdCBfQ29uZGl0aW9uYWxseV9lbmFibGVk
X2hhc2gmKSA9IGRlbGV0ZTsNCiAgICBfQ29uZGl0aW9uYWxseV9lbmFibGVkX2hhc2gmIG9wZXJh
dG9yPShfQ29uZGl0aW9uYWxseV9lbmFibGVkX2hhc2gmJikgPSBkZWxldGU7DQp9Ow0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfS3R5Pg0Kc3RydWN0IGhhc2gNCiAgICA6IF9Db25kaXRpb25hbGx5X2Vu
YWJsZWRfaGFzaDxfS3R5LA0KICAgICAgICAgICFpc19jb25zdF92PF9LdHk+ICYmICFpc192b2xh
dGlsZV92PF9LdHk+ICYmIChpc19lbnVtX3Y8X0t0eT4gfHwgaXNfaW50ZWdyYWxfdjxfS3R5PiB8
fCBpc19wb2ludGVyX3Y8X0t0eT4pPiB7DQogICAgDQogICAgc3RhdGljIHNpemVfdCBfRG9faGFz
aChjb25zdCBfS3R5JiBfS2V5dmFsKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfSGFzaF9y
ZXByZXNlbnRhdGlvbihfS2V5dmFsKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0
IGhhc2g8ZmxvYXQ+IHsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkg
cmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1
bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0
ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQ
RURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVD
QVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz
IHdhcm5pbmcuIildXSB0eXBlZGVmIGZsb2F0IGFyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNh
dGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBh
bGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVu
dF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmlu
ZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAi
b3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdl
IHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBzaXplX3Qg
cmVzdWx0X3R5cGU7DQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBm
bG9hdCBfS2V5dmFsKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfSGFzaF9yZXBy
ZXNlbnRhdGlvbihfS2V5dmFsID09IDAuMEYgPyAwLjBGIDogX0tleXZhbCk7IA0KICAgIH0NCn07
DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgaGFzaDxkb3VibGU+IHsNCiAgICBbW2RlcHJlY2F0ZWQo
ICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBh
cmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5
cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9T
SUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBf
U0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhh
dCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIGRvdWJsZSBhcmd1
bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1
bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50
X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBp
biBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVG
U19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElP
Tl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2Fy
bmluZy4iKV1dIHR5cGVkZWYgc2l6ZV90IHJlc3VsdF90eXBlOw0KICAgIFtbbm9kaXNjYXJkXV0g
c2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgZG91YmxlIF9LZXl2YWwpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIF9IYXNoX3JlcHJlc2VudGF0aW9uKF9LZXl2YWwgPT0gMC4wID8gMC4w
IDogX0tleXZhbCk7IA0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgaGFzaDxsb25n
IGRvdWJsZT4gew0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1
bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50
X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBp
biBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVG
U19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElP
Tl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2Fy
bmluZy4iKV1dIHR5cGVkZWYgbG9uZyBkb3VibGUgYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJl
Y2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5k
IGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3Vt
ZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVm
aW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAi
ICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVk
Z2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIHNpemVf
dCByZXN1bHRfdHlwZTsNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0
IGxvbmcgZG91YmxlIF9LZXl2YWwpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9I
YXNoX3JlcHJlc2VudGF0aW9uKF9LZXl2YWwgPT0gMC4wTCA/IDAuMEwgOiBfS2V5dmFsKTsgDQog
ICAgfQ0KfTsNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBoYXNoPG51bGxwdHJfdD4gew0KICAgIFtb
ZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAi
ICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRf
YXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYg
bnVsbHB0cl90IGFyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0
MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwg
Zmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFy
ZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19B
REFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NY
WDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVj
ZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBzaXplX3QgcmVzdWx0X3R5cGU7DQogICAg
W1tub2Rpc2NhcmRdXSBzaXplX3Qgb3BlcmF0b3IoKShudWxscHRyX3QpIGNvbnN0IG5vZXhjZXB0
IHsNCiAgICAgICAgdm9pZCogX051bGx7fTsNCiAgICAgICAgcmV0dXJuIF9IYXNoX3JlcHJlc2Vu
dGF0aW9uKF9OdWxsKTsNCiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfS3R5LCBjbGFz
cyA9IHZvaWQ+DQpzdHJ1Y3QgX0lzX25vdGhyb3dfaGFzaGFibGUgOiBmYWxzZV90eXBlIHt9OyAN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9LdHk+DQpzdHJ1Y3QgX0lzX25vdGhyb3dfaGFzaGFibGU8X0t0
eSwgdm9pZF90PGRlY2x0eXBlKGhhc2g8X0t0eT57fSg6OnN0ZDo6IGRlY2x2YWw8Y29uc3QgX0t0
eSY+KCkpKT4+DQogICAgOiBib29sX2NvbnN0YW50PG5vZXhjZXB0KGhhc2g8X0t0eT57fSg6OnN0
ZDo6IGRlY2x2YWw8Y29uc3QgX0t0eSY+KCkpKT4ge307DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyMzI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHR5cGVfdHJhaXRzIg0KDQp9DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI3ByYWdtYSBw
YWNrKHBvcCkNCg0KI2xpbmUgMjMzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx0eXBlX3RyYWl0cyINCiNsaW5lIDIzMzYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHlwZV90cmFpdHMiDQojbGluZSAx
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxleGNl
cHRpb24iDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQp
DQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0
IDQ1ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0
NzkzIDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpu
YW1lc3BhY2Ugc3RkIHsNCg0KDQpbW2RlcHJlY2F0ZWQoIndhcm5pbmcgU1RMNDAwNjogIiAic3Rk
Ojp1bmNhdWdodF9leGNlcHRpb24oKSBpcyBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJJdCBpcyBz
dXBlcnNlZGVkIGJ5IHN0ZDo6dW5jYXVnaHRfZXhjZXB0aW9ucygpLCBwbHVyYWwuICIgIllvdSBj
YW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X1VOQ0FVR0hUX0VYQ0VQVElPTl9ERVBSRUNBVElPTl9X
QVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBh
Y2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dICBib29s
IF9fY2RlY2wgdW5jYXVnaHRfZXhjZXB0aW9uKCkgbm9leGNlcHQ7DQojbGluZSAyNiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxleGNlcHRpb24iDQog
aW50IF9fY2RlY2wgdW5jYXVnaHRfZXhjZXB0aW9ucygpIG5vZXhjZXB0Ow0KDQp9DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGV4Y2VwdGlvbiINCg0KDQpuYW1lc3BhY2Ugc3RkZXh0IHsNCmNsYXNzIGV4Y2VwdGlv
bjsNCn0NCg0KbmFtZXNwYWNlIHN0ZCB7DQoNCnVzaW5nIDo6c3RkZXh0OjogZXhjZXB0aW9uOw0K
DQp1c2luZyBfUHJoYW5kID0gdm9pZChfX2NkZWNsKikoY29uc3QgZXhjZXB0aW9uJik7DQoNCmV4
dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgX1ByaGFuZCBfUmFpc2VfaGFuZGxlcjsgDQoNCn0N
Cg0KbmFtZXNwYWNlIHN0ZGV4dCB7DQpjbGFzcyBleGNlcHRpb24geyANCnB1YmxpYzoNCiAgICBz
dGF0aWMgOjpzdGQ6OiBfUHJoYW5kIF9TZXRfcmFpc2VfaGFuZGxlcig6OnN0ZDo6IF9QcmhhbmQg
X1BuZXcpIHsgDQogICAgICAgIGNvbnN0IDo6c3RkOjogX1ByaGFuZCBfUG9sZCA9IDo6c3RkOjog
X1JhaXNlX2hhbmRsZXI7DQogICAgICAgIDo6c3RkOjogX1JhaXNlX2hhbmRsZXIgICAgICA9IF9Q
bmV3Ow0KICAgICAgICByZXR1cm4gX1BvbGQ7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgZXhw
bGljaXQgIGV4Y2VwdGlvbihjb25zdCBjaGFyKiBfTWVzc2FnZSA9ICJ1bmtub3duIiwgaW50ID0g
MSkgbm9leGNlcHQgOiBfUHRyKF9NZXNzYWdlKSB7fQ0KDQogICAgIGV4Y2VwdGlvbihjb25zdCBl
eGNlcHRpb24mIF9SaWdodCkgbm9leGNlcHQgOiBfUHRyKF9SaWdodC5fUHRyKSB7fQ0KDQogICAg
ZXhjZXB0aW9uJiAgb3BlcmF0b3I9KGNvbnN0IGV4Y2VwdGlvbiYgX1JpZ2h0KSBub2V4Y2VwdCB7
DQogICAgICAgIF9QdHIgPSBfUmlnaHQuX1B0cjsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIHZpcnR1YWwgIH5leGNlcHRpb24oKSBub2V4Y2VwdCB7fQ0KDQogICAgW1tub2Rp
c2NhcmRdXSB2aXJ0dWFsIGNvbnN0IGNoYXIqICB3aGF0KCkgY29uc3Qgbm9leGNlcHQgeyANCiAg
ICAgICAgcmV0dXJuIF9QdHIgPyBfUHRyIDogInVua25vd24gZXhjZXB0aW9uIjsNCiAgICB9DQoN
CiAgICBbW25vcmV0dXJuXV0gdm9pZCAgX1JhaXNlKCkgY29uc3QgeyANCiAgICAgICAgaWYgKDo6
c3RkOjogX1JhaXNlX2hhbmRsZXIpIHsNCiAgICAgICAgICAgICgqOjpzdGQ6OiBfUmFpc2VfaGFu
ZGxlcikoKnRoaXMpOyANCiAgICAgICAgfQ0KDQogICAgICAgIF9Eb3JhaXNlKCk7IA0KICAgICAg
ICBfaW52b2tlX3dhdHNvbihudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwLCAwKTsgDQogICAg
fQ0KDQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCB2b2lkICBfRG9yYWlzZSgpIGNvbnN0IHt9IA0K
DQpwcm90ZWN0ZWQ6DQogICAgY29uc3QgY2hhciogX1B0cjsgDQp9Ow0KDQoNCmNsYXNzIGJhZF9l
eGNlcHRpb24gOiBwdWJsaWMgZXhjZXB0aW9uIHsgDQpwdWJsaWM6DQogICAgIGJhZF9leGNlcHRp
b24oY29uc3QgY2hhciogX01lc3NhZ2UgPSAiYmFkIGV4Y2VwdGlvbiIpIG5vZXhjZXB0IDogZXhj
ZXB0aW9uKF9NZXNzYWdlKSB7fQ0KDQogICAgdmlydHVhbCAgfmJhZF9leGNlcHRpb24oKSBub2V4
Y2VwdCB7fQ0KDQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCB2b2lkICBfRG9yYWlzZSgpIGNvbnN0
IG92ZXJyaWRlIHsgDQogICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIDAsIDApOw0KICAgIH0NCn07DQoNCg0KY2xhc3MgYmFkX2FsbG9jIDogcHVibGljIGV4
Y2VwdGlvbiB7IA0KcHVibGljOg0KICAgICBiYWRfYWxsb2MoKSBub2V4Y2VwdA0KICAgICAgICA6
IGV4Y2VwdGlvbigiYmFkIGFsbG9jYXRpb24iLCAxKSB7fSANCg0KICAgIHZpcnR1YWwgIH5iYWRf
YWxsb2MoKSBub2V4Y2VwdCB7fQ0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBiYWRfYXJy
YXlfbmV3X2xlbmd0aDsNCg0KICAgICBiYWRfYWxsb2MoY29uc3QgY2hhciogX01lc3NhZ2UpIG5v
ZXhjZXB0DQogICAgICAgIDogZXhjZXB0aW9uKF9NZXNzYWdlLCAxKSB7fSANCg0KcHJvdGVjdGVk
Og0KICAgIHZpcnR1YWwgdm9pZCAgX0RvcmFpc2UoKSBjb25zdCBvdmVycmlkZSB7IA0KICAgICAg
ICBfaW52b2tlX3dhdHNvbihudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwLCAwKTsNCiAgICB9
DQp9Ow0KDQpjbGFzcyBiYWRfYXJyYXlfbmV3X2xlbmd0aCA6IHB1YmxpYyBiYWRfYWxsb2Mgew0K
cHVibGljOg0KICAgIGJhZF9hcnJheV9uZXdfbGVuZ3RoKCkgbm9leGNlcHQgOiBiYWRfYWxsb2Mo
ImJhZCBhcnJheSBuZXcgbGVuZ3RoIikge30NCn07DQoNCn0NCg0KbmFtZXNwYWNlIHN0ZCB7DQoN
CnVzaW5nIHRlcm1pbmF0ZV9oYW5kbGVyID0gdm9pZChfX2NkZWNsKikoKTsNCg0KaW5saW5lIHRl
cm1pbmF0ZV9oYW5kbGVyIF9fY2RlY2wgc2V0X3Rlcm1pbmF0ZSh0ZXJtaW5hdGVfaGFuZGxlcikg
bm9leGNlcHQgeyANCiAgICByZXR1cm4gbnVsbHB0cjsNCn0NCg0KW1tub3JldHVybl1dIGlubGlu
ZSB2b2lkIF9fY2RlY2wgdGVybWluYXRlKCkgbm9leGNlcHQgeyANCiAgICA6OiBhYm9ydCgpOw0K
fQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSB0ZXJtaW5hdGVfaGFuZGxlciBfX2NkZWNsIGdldF90
ZXJtaW5hdGUoKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiBudWxscHRyOw0KfQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcZXhjZXB0aW9uIg0KDQp1c2luZyA6OnN0ZGV4dDo6IGJhZF9h
bGxvYzsNCnVzaW5nIDo6c3RkZXh0OjogYmFkX2FycmF5X25ld19sZW5ndGg7DQp1c2luZyA6OnN0
ZGV4dDo6IGJhZF9leGNlcHRpb247DQoNCn0NCg0KI2xpbmUgMTk5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGV4Y2VwdGlvbiINCg0KIHZvaWQgX19j
ZGVjbCBfX0V4Y2VwdGlvblB0ckNyZWF0ZSggIHZvaWQqKSBub2V4Y2VwdDsNCiB2b2lkIF9fY2Rl
Y2wgX19FeGNlcHRpb25QdHJEZXN0cm95KCAgdm9pZCopIG5vZXhjZXB0Ow0KIHZvaWQgX19jZGVj
bCBfX0V4Y2VwdGlvblB0ckNvcHkoICB2b2lkKiwgICBjb25zdCB2b2lkKikgbm9leGNlcHQ7DQog
dm9pZCBfX2NkZWNsIF9fRXhjZXB0aW9uUHRyQXNzaWduKCAgdm9pZCosICAgY29uc3Qgdm9pZCop
IG5vZXhjZXB0Ow0KIGJvb2wgX19jZGVjbCBfX0V4Y2VwdGlvblB0ckNvbXBhcmUoICBjb25zdCB2
b2lkKiwgICBjb25zdCB2b2lkKikgbm9leGNlcHQ7DQogYm9vbCBfX2NkZWNsIF9fRXhjZXB0aW9u
UHRyVG9Cb29sKCAgY29uc3Qgdm9pZCopIG5vZXhjZXB0Ow0KIHZvaWQgX19jZGVjbCBfX0V4Y2Vw
dGlvblB0clN3YXAoICB2b2lkKiwgICB2b2lkKikgbm9leGNlcHQ7DQogdm9pZCBfX2NkZWNsIF9f
RXhjZXB0aW9uUHRyQ3VycmVudEV4Y2VwdGlvbiggIHZvaWQqKSBub2V4Y2VwdDsNCltbbm9yZXR1
cm5dXSAgdm9pZCBfX2NkZWNsIF9fRXhjZXB0aW9uUHRyUmV0aHJvdyggIGNvbnN0IHZvaWQqKTsN
CiB2b2lkIF9fY2RlY2wgX19FeGNlcHRpb25QdHJDb3B5RXhjZXB0aW9uKA0KICAgICAgdm9pZCos
ICAgY29uc3Qgdm9pZCosICAgY29uc3Qgdm9pZCopIG5vZXhjZXB0Ow0KDQpuYW1lc3BhY2Ugc3Rk
IHsNCg0KY2xhc3MgZXhjZXB0aW9uX3B0ciB7DQpwdWJsaWM6DQogICAgZXhjZXB0aW9uX3B0cigp
IG5vZXhjZXB0IHsNCiAgICAgICAgX19FeGNlcHRpb25QdHJDcmVhdGUodGhpcyk7DQogICAgfQ0K
DQogICAgZXhjZXB0aW9uX3B0cihudWxscHRyX3QpIG5vZXhjZXB0IHsNCiAgICAgICAgX19FeGNl
cHRpb25QdHJDcmVhdGUodGhpcyk7DQogICAgfQ0KDQogICAgfmV4Y2VwdGlvbl9wdHIoKSBub2V4
Y2VwdCB7DQogICAgICAgIF9fRXhjZXB0aW9uUHRyRGVzdHJveSh0aGlzKTsNCiAgICB9DQoNCiAg
ICBleGNlcHRpb25fcHRyKGNvbnN0IGV4Y2VwdGlvbl9wdHImIF9SaHMpIG5vZXhjZXB0IHsNCiAg
ICAgICAgX19FeGNlcHRpb25QdHJDb3B5KHRoaXMsICZfUmhzKTsNCiAgICB9DQoNCiAgICBleGNl
cHRpb25fcHRyJiBvcGVyYXRvcj0oY29uc3QgZXhjZXB0aW9uX3B0ciYgX1Jocykgbm9leGNlcHQg
ew0KICAgICAgICBfX0V4Y2VwdGlvblB0ckFzc2lnbih0aGlzLCAmX1Jocyk7DQogICAgICAgIHJl
dHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBleGNlcHRpb25fcHRyJiBvcGVyYXRvcj0obnVsbHB0
cl90KSBub2V4Y2VwdCB7DQogICAgICAgIGV4Y2VwdGlvbl9wdHIgX1B0cjsNCiAgICAgICAgX19F
eGNlcHRpb25QdHJBc3NpZ24odGhpcywgJl9QdHIpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIF9fRXhjZXB0aW9uUHRyVG9Cb29sKHRoaXMpOw0KICAgIH0NCg0KICAgIHN0
YXRpYyBleGNlcHRpb25fcHRyIF9DdXJyZW50X2V4Y2VwdGlvbigpIG5vZXhjZXB0IHsNCiAgICAg
ICAgZXhjZXB0aW9uX3B0ciBfUmV0dmFsOw0KICAgICAgICBfX0V4Y2VwdGlvblB0ckN1cnJlbnRF
eGNlcHRpb24oJl9SZXR2YWwpOw0KICAgICAgICByZXR1cm4gX1JldHZhbDsNCiAgICB9DQoNCiAg
ICBzdGF0aWMgZXhjZXB0aW9uX3B0ciBfQ29weV9leGNlcHRpb24oICB2b2lkKiBfRXhjZXB0LCAg
IGNvbnN0IHZvaWQqIF9QdHIpIHsNCiAgICAgICAgZXhjZXB0aW9uX3B0ciBfUmV0dmFsOw0KICAg
ICAgICBpZiAoIV9QdHIpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIF9SZXR2
YWw7DQogICAgICAgIH0NCiAgICAgICAgX19FeGNlcHRpb25QdHJDb3B5RXhjZXB0aW9uKCZfUmV0
dmFsLCBfRXhjZXB0LCBfUHRyKTsNCiAgICAgICAgcmV0dXJuIF9SZXR2YWw7DQogICAgfQ0KDQog
ICAgZnJpZW5kIHZvaWQgc3dhcChleGNlcHRpb25fcHRyJiBfTGhzLCBleGNlcHRpb25fcHRyJiBf
UmhzKSBub2V4Y2VwdCB7DQogICAgICAgIF9fRXhjZXB0aW9uUHRyU3dhcCgmX0xocywgJl9SaHMp
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBleGNlcHRpb25fcHRyJiBfTGhzLCBjb25zdCBleGNlcHRpb25fcHRyJiBfUmhzKSBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiBfX0V4Y2VwdGlvblB0ckNvbXBhcmUoJl9MaHMsICZfUmhzKTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yPT0obnVsbHB0
cl90LCBjb25zdCBleGNlcHRpb25fcHRyJiBfUmhzKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biAhX1JoczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oY29uc3QgZXhjZXB0aW9uX3B0ciYgX0xocywgbnVsbHB0cl90KSBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiAhX0xoczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oY29uc3QgZXhjZXB0aW9uX3B0ciYgX0xocywgY29uc3QgZXhjZXB0aW9uX3B0
ciYgX1Jocykgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gIShfTGhzID09IF9SaHMpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShudWxscHRyX3Qg
X0xocywgY29uc3QgZXhjZXB0aW9uX3B0ciYgX1Jocykgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gIShfTGhzID09IF9SaHMpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gZnJpZW5kIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBleGNlcHRpb25fcHRyJiBfTGhzLCBudWxscHRyX3QgX1Jocykg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gIShfTGhzID09IF9SaHMpOw0KICAgIH0NCg0KcHJp
dmF0ZToNCg0KDQoNCg0KICAgIHZvaWQqIF9EYXRhMTsNCiAgICB2b2lkKiBfRGF0YTI7DQoNCg0K
DQp9Ow0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBleGNlcHRpb25fcHRyIGN1cnJlbnRfZXhjZXB0
aW9uKCkgbm9leGNlcHQgew0KICAgIHJldHVybiBleGNlcHRpb25fcHRyOjpfQ3VycmVudF9leGNl
cHRpb24oKTsNCn0NCg0KW1tub3JldHVybl1dIGlubGluZSB2b2lkIHJldGhyb3dfZXhjZXB0aW9u
KCAgZXhjZXB0aW9uX3B0ciBfUHRyKSB7DQogICAgX19FeGNlcHRpb25QdHJSZXRocm93KCZfUHRy
KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FeD4NCnZvaWQqIF9fR2V0RXhjZXB0aW9uSW5mbyhf
RXgpOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4Pg0KW1tub2Rpc2NhcmRdXSBleGNlcHRpb25fcHRy
IG1ha2VfZXhjZXB0aW9uX3B0cihfRXggX0V4Y2VwdCkgbm9leGNlcHQgew0KICAgIHJldHVybiBl
eGNlcHRpb25fcHRyOjpfQ29weV9leGNlcHRpb24oOjpzdGQ6OiBhZGRyZXNzb2YoX0V4Y2VwdCks
IF9fR2V0RXhjZXB0aW9uSW5mbyhfRXhjZXB0KSk7DQp9DQoNCg0KW1tub3JldHVybl1dIGlubGlu
ZSB2b2lkIF9UaHJvd19iYWRfYXJyYXlfbmV3X2xlbmd0aCgpIHsNCiAgICBiYWRfYXJyYXlfbmV3
X2xlbmd0aHt9Ll9SYWlzZSgpOw0KfQ0KDQoNCmNsYXNzIG5lc3RlZF9leGNlcHRpb24geyANCnB1
YmxpYzoNCiAgICBuZXN0ZWRfZXhjZXB0aW9uKCkgbm9leGNlcHQgOiBfRXhjKDo6c3RkOjogY3Vy
cmVudF9leGNlcHRpb24oKSkge30NCg0KICAgIG5lc3RlZF9leGNlcHRpb24oY29uc3QgbmVzdGVk
X2V4Y2VwdGlvbiYpIG5vZXhjZXB0ID0gZGVmYXVsdDsNCiAgICBuZXN0ZWRfZXhjZXB0aW9uJiBv
cGVyYXRvcj0oY29uc3QgbmVzdGVkX2V4Y2VwdGlvbiYpIG5vZXhjZXB0ID0gZGVmYXVsdDsNCiAg
ICB2aXJ0dWFsIH5uZXN0ZWRfZXhjZXB0aW9uKCkgbm9leGNlcHQge30NCg0KICAgIFtbbm9yZXR1
cm5dXSB2b2lkIHJldGhyb3dfbmVzdGVkKCkgY29uc3QgeyANCiAgICAgICAgaWYgKF9FeGMpIHsN
CiAgICAgICAgICAgIDo6c3RkOjogcmV0aHJvd19leGNlcHRpb24oX0V4Yyk7DQogICAgICAgIH0g
ZWxzZSB7DQogICAgICAgICAgICA6OnN0ZDo6IHRlcm1pbmF0ZSgpOw0KICAgICAgICB9DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBleGNlcHRpb25fcHRyIG5lc3RlZF9wdHIoKSBjb25zdCBu
b2V4Y2VwdCB7IA0KICAgICAgICByZXR1cm4gX0V4YzsNCiAgICB9DQoNCnByaXZhdGU6DQogICAg
ZXhjZXB0aW9uX3B0ciBfRXhjOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBf
VXR5Pg0Kc3RydWN0IF9XaXRoX25lc3RlZCA6IF9VdHksIG5lc3RlZF9leGNlcHRpb24geyANCiAg
ICBleHBsaWNpdCBfV2l0aF9uZXN0ZWQoX1R5JiYgX0FyZykNCiAgICAgICAgOiBfVXR5KDo6c3Rk
OjogZm9yd2FyZDxfVHk+KF9BcmcpKSwgbmVzdGVkX2V4Y2VwdGlvbigpIHt9IA0KfTsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub3JldHVybl1dIHZvaWQgdGhyb3dfd2l0aF9uZXN0ZWQo
X1R5JiYgX0FyZykgeyANCiAgICB1c2luZyBfVXR5ID0gZGVjYXlfdDxfVHk+Ow0KDQogICAgaWYg
Y29uc3RleHByIChpc19jbGFzc192PF9VdHk+ICYmICFpc19iYXNlX29mX3Y8bmVzdGVkX2V4Y2Vw
dGlvbiwgX1V0eT4gJiYgIWlzX2ZpbmFsX3Y8X1V0eT4pIHsNCiAgICAgICAgDQogICAgICAgIHVz
aW5nIF9HbHVlZCA9IF9XaXRoX25lc3RlZDxfVHksIF9VdHk+Ow0KICAgICAgICBfR2x1ZWQoOjpz
dGQ6OiBmb3J3YXJkPF9UeT4oX0FyZykpLl9SYWlzZSgpOw0KICAgIH0gZWxzZSB7DQogICAgICAg
IA0KICAgICAgICA6OnN0ZDo6IGZvcndhcmQ8X1R5PihfQXJnKS5fUmFpc2UoKTsNCiAgICB9DQp9
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM5MyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxleGNlcHRp
b24iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Pg0Kdm9pZCByZXRocm93X2lmX25lc3RlZChjb25zdCBfVHkmKSA9IGRl
bGV0ZTsgDQojbGluZSA0MjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcZXhjZXB0aW9uIg0KDQp9DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0K
I3ByYWdtYSBwYWNrKHBvcCkNCg0KI2xpbmUgNDI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGV4Y2VwdGlvbiINCiNsaW5lIDQzMCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxleGNlcHRpb24iDQojbGlu
ZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxu
ZXciDQoNCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkN
CiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQg
NDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3
OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5h
bWVzcGFjZSBzdGQgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX1R5KiBsYXVuZGVyKF9UeSogX1B0cikgbm9leGNlcHQg
ew0KICAgIHN0YXRpY19hc3NlcnQoIWlzX2Z1bmN0aW9uX3Y8X1R5PiAmJiAhaXNfdm9pZF92PF9U
eT4sDQogICAgICAgICJONDcyNyAyMS42LjQgW3B0ci5sYXVuZGVyXS8zOiBUaGUgcHJvZ3JhbSBp
cyBpbGwtZm9ybWVkIGlmIFQgaXMgYSBmdW5jdGlvbiB0eXBlIG9yIGN2IHZvaWQuIik7DQogICAg
cmV0dXJuIF9fYnVpbHRpbl9sYXVuZGVyKF9QdHIpOw0KfQ0KDQoNCmlubGluZSBjb25zdGV4cHIg
c2l6ZV90IGhhcmR3YXJlX2NvbnN0cnVjdGl2ZV9pbnRlcmZlcmVuY2Vfc2l6ZSA9IDY0Ow0KaW5s
aW5lIGNvbnN0ZXhwciBzaXplX3QgaGFyZHdhcmVfZGVzdHJ1Y3RpdmVfaW50ZXJmZXJlbmNlX3Np
emUgID0gNjQ7DQoNCg0KI2xpbmUgNDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcbmV3Ig0KDQojbGluZSA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxuZXciDQoNCg0KDQoNCnVzaW5nIG5ld19oYW5k
bGVyID0gdm9pZChfX2NkZWNsKikoKTsNCiNsaW5lIDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG5ldyINCg0KDQogbmV3X2hhbmRsZXIgX19jZGVj
bCBzZXRfbmV3X2hhbmRsZXIoICBuZXdfaGFuZGxlcikgbm9leGNlcHQ7DQpbW25vZGlzY2FyZF1d
ICBuZXdfaGFuZGxlciBfX2NkZWNsIGdldF9uZXdfaGFuZGxlcigpIG5vZXhjZXB0Ow0KfQ0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQoNCiNsaW5lIDY1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG5ldyINCiNs
aW5lIDY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XG5ldyINCiNsaW5lIDI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9GYXN0TWFsbG9jLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0RlYnVnSGVhcC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9EZWJ1Z0hlYXAuaCINCg0KbmFtZXNw
YWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgOTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL0RlYnVnSGVhcC5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA5OCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRGVidWdIZWFwLmgi
DQoNCn0gDQojbGluZSAyNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvRmFzdE1hbGxvYy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU3RkTGliRXh0cmFzLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcY3N0cmluZyINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0K
DQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfbWVtb3J5Lmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfbWVtY3B5X3MuaCINCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcZXJybm8uaCINCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAy
ODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoN
Cg0KDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50KiBfX2NkZWNsIF9lcnJubyh2b2lk
KTsNCiAgICANCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3Nl
dF9lcnJubyggIGludCBfVmFsdWUpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190
IF9fY2RlY2wgX2dldF9lcnJubyggIGludCogX1ZhbHVlKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB1bnNpZ25lZCBsb25nKiBfX2NkZWNsIF9fZG9zZXJybm8odm9pZCk7DQogICAgDQoN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9zZXRfZG9zZXJybm8o
ICB1bnNpZ25lZCBsb25nIF9WYWx1ZSk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5v
X3QgX19jZGVjbCBfZ2V0X2Rvc2Vycm5vKCAgdW5zaWduZWQgbG9uZyAqIF9WYWx1ZSk7DQojbGlu
ZSAzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcZXJybm8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiNsaW5lIDgzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxl
cnJuby5oIg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KI2xpbmUgMTMxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxlcnJuby5oIg0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEg
d2FybmluZyhwb3ApIA0KI2xpbmUgMTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxlcnJuby5oIg0KI2xpbmUg
MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfbWVtY3B5X3MuaCINCiNsaW5lIDEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1lX3N0cmlu
Zy5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhw
dXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6ICAgNDUxNCA0ODIwICkNCg0KDQoNCl9fcHJh
Z21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQoNCg0KW1tub2Rpc2NhcmRdXSAgDQog
dm9pZCBjb25zdCogX19jZGVjbCBtZW1jaHIoDQogICAgICB2b2lkIGNvbnN0KiBfQnVmLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgX1ZhbCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9NYXhDb3VudA0KICAgICk7DQoN
Cltbbm9kaXNjYXJkXV0gIA0KaW50IF9fY2RlY2wgbWVtY21wKA0KICAgICAgdm9pZCBjb25zdCog
X0J1ZjEsDQogICAgICB2b2lkIGNvbnN0KiBfQnVmMiwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICAgICBfU2l6ZQ0KICAgICk7DQoNCg0KIA0KDQojbGluZSA0MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWVfc3RyaW5n
LmgiDQp2b2lkKiBfX2NkZWNsIG1lbWNweSgNCiAgICAgIHZvaWQqIF9Ec3QsDQogICAgICAgICAg
ICB2b2lkIGNvbnN0KiBfU3JjLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAgICAgIF9TaXplDQogICAgKTsNCg0KDQogdm9pZCogX19jZGVjbCBtZW1tb3ZlKA0KICAgICAg
dm9pZCogICAgICAgX0RzdCwNCiAgICAgICAgICAgIHZvaWQgY29uc3QqIF9TcmMsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9TaXplDQogICAgKTsNCg0K
IA0KDQojbGluZSA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx2Y3J1bnRpbWVfc3RyaW5nLmgiDQp2b2lkKiBfX2NkZWNsIG1lbXNldCgNCiAgICAg
IHZvaWQqICBfRHN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICBfVmFs
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfU2l6ZQ0KICAgICk7DQoN
Cltbbm9kaXNjYXJkXV0gIA0KIGNoYXIgY29uc3QqIF9fY2RlY2wgc3RyY2hyKA0KICAgICAgY2hh
ciBjb25zdCogX1N0ciwNCiAgICAgICAgaW50ICAgICAgICAgX1ZhbA0KICAgICk7DQoNCltbbm9k
aXNjYXJkXV0gIA0KIGNoYXIgY29uc3QqIF9fY2RlY2wgc3RycmNocigNCiAgICAgIGNoYXIgY29u
c3QqIF9TdHIsDQogICAgICAgIGludCAgICAgICAgIF9DaA0KICAgICk7DQoNCltbbm9kaXNjYXJk
XV0gICAgDQogY2hhciBjb25zdCogX19jZGVjbCBzdHJzdHIoDQogICAgICBjaGFyIGNvbnN0KiBf
U3RyLA0KICAgICAgY2hhciBjb25zdCogX1N1YlN0cg0KICAgICk7DQoNCltbbm9kaXNjYXJkXV0g
IA0KDQogd2NoYXJfdCBjb25zdCogX19jZGVjbCB3Y3NjaHIoDQogICAgICB3Y2hhcl90IGNvbnN0
KiBfU3RyLA0KICAgICAgICB3Y2hhcl90ICAgICAgICBfQ2gNCiAgICApOw0KDQpbW25vZGlzY2Fy
ZF1dICANCiB3Y2hhcl90IGNvbnN0KiBfX2NkZWNsIHdjc3JjaHIoDQogICAgICB3Y2hhcl90IGNv
bnN0KiBfU3RyLA0KICAgICAgICB3Y2hhcl90ICAgICAgICBfQ2gNCiAgICApOw0KDQpbW25vZGlz
Y2FyZF1dICAgIA0KDQogd2NoYXJfdCBjb25zdCogX19jZGVjbCB3Y3NzdHIoDQogICAgICB3Y2hh
cl90IGNvbnN0KiBfU3RyLA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N1YlN0cg0KICAgICk7DQoN
Cg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI2xpbmUgMTEyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV9zdHJpbmcuaCINCg0K
I3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9t
ZW1jcHlfcy5oIg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2
IDI4NzI3ICkNCg0KDQpfX3ByYWdtYShwYWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQog
ICAgDQojbGluZSAyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tZW1jcHlfcy5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgDQogICAgDQogICAgc3RhdGljIF9faW5saW5lIGVy
cm5vX3QgX19jZGVjbCBtZW1jcHlfcygNCiAgICAgICAgICB2b2lkKiAgICAgICBjb25zdCBfRGVz
dGluYXRpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJzaXplX3QgICAgIGNvbnN0IF9EZXN0aW5hdGlvblNpemUsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIGNvbnN0KiBjb25zdCBfU291cmNlLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByc2l6ZV90ICAgICBjb25zdCBfU291cmNlU2l6ZQ0KICAgICAgICApDQogICAgew0KICAg
ICAgICBpZiAoX1NvdXJjZVNpemUgPT0gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJu
IDA7DQogICAgICAgIH0NCg0KICAgICAgICB7IGludCBfRXhwcl92YWw9ISEoX0Rlc3RpbmF0aW9u
ICE9IDApOyBpZiAoIShfRXhwcl92YWwpKSB7ICgqX2Vycm5vKCkpID0gMjI7IF9pbnZhbGlkX3Bh
cmFtZXRlcl9ub2luZm8oKTsgcmV0dXJuIDIyOyB9IH07DQogICAgICAgIGlmIChfU291cmNlID09
IDAgfHwgX0Rlc3RpbmF0aW9uU2l6ZSA8IF9Tb3VyY2VTaXplKQ0KICAgICAgICB7DQogICAgICAg
ICAgICBtZW1zZXQoX0Rlc3RpbmF0aW9uLCAwLCBfRGVzdGluYXRpb25TaXplKTsNCg0KICAgICAg
ICAgICAgeyBpbnQgX0V4cHJfdmFsPSEhKF9Tb3VyY2UgIT0gMCk7IGlmICghKF9FeHByX3ZhbCkp
IHsgKCpfZXJybm8oKSkgPSAyMjsgX2ludmFsaWRfcGFyYW1ldGVyX25vaW5mbygpOyByZXR1cm4g
MjI7IH0gfTsNCiAgICAgICAgICAgIHsgaW50IF9FeHByX3ZhbD0hIShfRGVzdGluYXRpb25TaXpl
ID49IF9Tb3VyY2VTaXplKTsgaWYgKCEoX0V4cHJfdmFsKSkgeyAoKl9lcnJubygpKSA9IDM0OyBf
aW52YWxpZF9wYXJhbWV0ZXJfbm9pbmZvKCk7IHJldHVybiAzNDsgfSB9Ow0KDQogICAgICAgICAg
ICANCiAgICAgICAgICAgIHJldHVybiAyMjsNCiAgICAgICAgfQ0KICAgICAgICBtZW1jcHkoX0Rl
c3RpbmF0aW9uLCBfU291cmNlLCBfU291cmNlU2l6ZSk7DQogICAgICAgIHJldHVybiAwOw0KICAg
IH0NCg0KICAgIA0KICAgIHN0YXRpYyBfX2lubGluZSBlcnJub190IF9fY2RlY2wgbWVtbW92ZV9z
KA0KICAgICAgICAgIHZvaWQqICAgICAgIGNvbnN0IF9EZXN0aW5hdGlvbiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNpemVf
dCAgICAgY29uc3QgX0Rlc3RpbmF0aW9uU2l6ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgY29uc3QqIGNvbnN0IF9Tb3VyY2UsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzaXplX3QgICAgIGNvbnN0
IF9Tb3VyY2VTaXplDQogICAgICAgICkNCiAgICB7DQogICAgICAgIGlmIChfU291cmNlU2l6ZSA9
PSAwKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgfQ0KDQogICAg
ICAgIHsgaW50IF9FeHByX3ZhbD0hIShfRGVzdGluYXRpb24gIT0gMCk7IGlmICghKF9FeHByX3Zh
bCkpIHsgKCpfZXJybm8oKSkgPSAyMjsgX2ludmFsaWRfcGFyYW1ldGVyX25vaW5mbygpOyByZXR1
cm4gMjI7IH0gfTsNCiAgICAgICAgeyBpbnQgX0V4cHJfdmFsPSEhKF9Tb3VyY2UgIT0gMCk7IGlm
ICghKF9FeHByX3ZhbCkpIHsgKCpfZXJybm8oKSkgPSAyMjsgX2ludmFsaWRfcGFyYW1ldGVyX25v
aW5mbygpOyByZXR1cm4gMjI7IH0gfTsNCiAgICAgICAgeyBpbnQgX0V4cHJfdmFsPSEhKF9EZXN0
aW5hdGlvblNpemUgPj0gX1NvdXJjZVNpemUpOyBpZiAoIShfRXhwcl92YWwpKSB7ICgqX2Vycm5v
KCkpID0gMzQ7IF9pbnZhbGlkX3BhcmFtZXRlcl9ub2luZm8oKTsgcmV0dXJuIDM0OyB9IH07DQoN
CiAgICAgICAgbWVtbW92ZShfRGVzdGluYXRpb24sIF9Tb3VyY2UsIF9Tb3VyY2VTaXplKTsNCiAg
ICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQojbGluZSA4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dF9tZW1jcHlfcy5oIg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCn0gX19wcmFnbWEo
cGFjayhwb3ApKQ0KI2xpbmUgMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfbWVtb3J5LmgiDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAg
NDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoN
Cg0KDQoNCl9fcHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQoNCg0KIA0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9tZW1pY21wKA0KICAgICAgdm9pZCBjb25z
dCogX0J1ZjEsDQogICAgICB2b2lkIGNvbnN0KiBfQnVmMiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICAgICAgX1NpemUNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgaW50IF9fY2RlY2wgX21lbWljbXBfbCgNCiAgICAgIHZvaWQgY29uc3QqIF9CdWYxLA0K
ICAgICAgdm9pZCBjb25zdCogX0J1ZjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAgICAgIF9TaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIF9M
b2NhbGUNCiAgICApOw0KDQoNCg0KDQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X21lbW9yeS5oIg0KDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tZW1vcnku
aCINCg0KI2xpbmUgNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfbWVtb3J5LmgiDQoNCg0KDQoN
Cg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRl
bSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9y
bWFudCBuYW1lOiAiICJfbWVtY2NweSIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIp
KQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkKiBfX2NkZWNsIG1lbWNjcHkoDQogICAg
ICAgICAgdm9pZCogICAgICAgX0RzdCwNCiAgICAgICAgICAgIHZvaWQgY29uc3QqIF9TcmMsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIF9WYWwsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9TaXplDQogICAgICAg
ICk7DQoNCiAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRo
aXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysg
Y29uZm9ybWFudCBuYW1lOiAiICJfbWVtaWNtcCIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRh
aWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBtZW1pY21wKA0K
ICAgICAgICAgIHZvaWQgY29uc3QqIF9CdWYxLA0KICAgICAgICAgIHZvaWQgY29uc3QqIF9CdWYy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgX1NpemUNCiAg
ICAgICAgKTsNCg0KI2xpbmUgOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfbWVtb3J5LmgiDQoN
Cg0KDQoNCg0KICAgIGV4dGVybiAiQysrIiAgDQogICAgaW5saW5lIHZvaWQqIF9fY2RlY2wgbWVt
Y2hyKA0KICAgICAgICAgIHZvaWQqICBfUHYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgICAgX0MsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX04NCiAg
ICAgICAgKQ0KICAgIHsNCiAgICAgICAgdm9pZCBjb25zdCogY29uc3QgX1B2YyA9IF9QdjsNCiAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1lbWNocihfUHZjLCBfQywgX04pKTsNCiAg
ICB9DQoNCiNsaW5lIDExNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9tZW1vcnkuaCINCg0KDQoN
Cn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQojbGluZSAxMjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVj
cnRfbWVtb3J5LmgiDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgMTQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHN0cmluZy5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5n
LmgiDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3
OTMgNDgyMCA0OTk1IDQ5OTYgMjg3MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCg0KDQpfX3ByYWdtYShw
YWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgd2NzY2F0X3MoDQogICAgICAg
ICAgd2NoYXJfdCogX0Rlc3RpbmF0aW9uLA0KICAgICAgICAgIHJzaXplX3QgX1NpemVJbldvcmRz
LA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UNCiAgICAgICAgKTsNCg0KICAgIA0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgd2NzY3B5X3MoDQogICAg
ICAgICAgd2NoYXJfdCogX0Rlc3RpbmF0aW9uLA0KICAgICAgICAgIHJzaXplX3QgX1NpemVJbldv
cmRzLA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UNCiAgICAgICAgKTsNCg0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgd2NzbmNhdF9zKA0K
ICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9EZXN0aW5hdGlvbiwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByc2l6ZV90ICAgICAgICBfU2l6ZUluV29yZHMsDQogICAgICAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU291cmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJzaXplX3QgICAgICAgIF9NYXhDb3VudA0KICAgICAgICApOw0KDQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCB3Y3NuY3B5X3MoDQog
ICAgICAgICAgd2NoYXJfdCogICAgICAgX0Rlc3RpbmF0aW9uLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJzaXplX3QgICAgICAgIF9TaXplSW5Xb3JkcywNCiAgICAgICAgICAg
IHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnNpemVfdCAgICAgICAgX01heENvdW50DQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIHdjaGFyX3QqIF9fY2RlY2wgd2NzdG9rX3MoDQogICAgICAgICAg
ICAgICAgICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9TdHJpbmcsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRGVsaW1pdGVyLA0KICAgICAgICAgICAg
d2NoYXJfdCoqICAgICAgX0NvbnRleHQNCiAgICAgICAgKTsNCg0KI2xpbmUgNjkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KIA0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSB3Y2hhcl90KiBfX2NkZWNsIF93Y3NkdXAoDQog
ICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nDQogICAgKTsNCg0KDQoNCiNsaW5lIDkwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KDQoNCmV4dGVybiAiQysrIiB7IHRlbXBs
YXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgd2NzY2F0X3Mod2NoYXJf
dCAoJl9EZXN0aW5hdGlvbilbX1NpemVdLCAgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UpIHRocm93
KCkgeyByZXR1cm4gd2NzY2F0X3MoX0Rlc3RpbmF0aW9uLCBfU2l6ZSwgX1NvdXJjZSk7IH0gfQ0K
I2xpbmUgOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQoNCiAgICBfX2lu
bGluZSB3Y2hhcl90KiBfX2NkZWNsIF9faW5zZWN1cmVfd2NzY2F0KCB3Y2hhcl90ICpfRGVzdGlu
YXRpb24sICB3Y2hhcl90IGNvbnN0KiBfU291cmNlKSB7IHdjaGFyX3QqIF9fY2RlY2wgd2NzY2F0
KCB3Y2hhcl90ICpfRGVzdGluYXRpb24sICB3Y2hhcl90IGNvbnN0KiBfU291cmNlKTsgcmV0dXJu
IHdjc2NhdChfRGVzdGluYXRpb24sIF9Tb3VyY2UpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRl
IDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIHdjc2NhdChfVCAmX0Rlc3Rp
bmF0aW9uLCAgd2NoYXJfdCBjb25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2Vj
dXJlX3djc2NhdChzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9EZXN0aW5hdGlvbiksIF9Tb3VyY2Up
OyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIHdjc2Nh
dChjb25zdCBfVCAmX0Rlc3RpbmF0aW9uLCAgd2NoYXJfdCBjb25zdCogX1NvdXJjZSkgdGhyb3co
KSB7IHJldHVybiBfX2luc2VjdXJlX3djc2NhdChzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9EZXN0
aW5hdGlvbiksIF9Tb3VyY2UpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgd2NoYXJfdCogX19jZGVj
bCB3Y3NjYXQoIHdjaGFyX3QgKiAmX0Rlc3RpbmF0aW9uLCAgd2NoYXJfdCBjb25zdCogX1NvdXJj
ZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3djc2NhdChfRGVzdGluYXRpb24sIF9Tb3Vy
Y2UpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSB3Y2hhcl90KiBfX2NkZWNsIHdj
c2NhdCh3Y2hhcl90ICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0sICB3Y2hhcl90IGNvbnN0KiBfU291
cmNlKSB0aHJvdygpIHsgcmV0dXJuICgod2NzY2F0X3MoX0Rlc3RpbmF0aW9uLCBfU2l6ZSwgX1Nv
dXJjZSkpID09IDAgPyBfRGVzdGluYXRpb24gOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHdj
aGFyX3QqIF9fY2RlY2wgd2NzY2F0PDE+KHdjaGFyX3QgKCZfRGVzdGluYXRpb24pWzFdLCAgd2No
YXJfdCBjb25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiAoKHdjc2NhdF9zKF9EZXN0aW5h
dGlvbiwgMSwgX1NvdXJjZSkpID09IDAgPyBfRGVzdGluYXRpb24gOiAwKTsgfSB9DQojbGluZSAx
MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KI2xpbmUgMTA2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dCBfX2NkZWNsIHdjc2NtcCgNCiAgICAgIHdjaGFyX3QgY29uc3QqIF9TdHJpbmcxLA0KICAgICAg
d2NoYXJfdCBjb25zdCogX1N0cmluZzINCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0
ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIHdjc2NweV9zKHdjaGFyX3Qg
KCZfRGVzdGluYXRpb24pW19TaXplXSwgICB3Y2hhcl90IGNvbnN0KiBfU291cmNlKSB0aHJvdygp
IHsgcmV0dXJuIHdjc2NweV9zKF9EZXN0aW5hdGlvbiwgX1NpemUsIF9Tb3VyY2UpOyB9IH0NCiNs
aW5lIDExOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgiDQoNCl9faW5saW5lIHdj
aGFyX3QqIF9fY2RlY2wgX19pbnNlY3VyZV93Y3NjcHkoIHdjaGFyX3QgKl9EZXN0aW5hdGlvbiwg
IHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UpIHsgd2NoYXJfdCogX19jZGVjbCB3Y3NjcHkoIHdjaGFy
X3QgKl9EZXN0aW5hdGlvbiwgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UpOyByZXR1cm4gd2NzY3B5
KF9EZXN0aW5hdGlvbiwgX1NvdXJjZSk7IH0gZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHR5cGVu
YW1lIF9UPiBpbmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wgd2NzY3B5KF9UICZfRGVzdGluYXRpb24s
ICB3Y2hhcl90IGNvbnN0KiBfU291cmNlKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfd2Nz
Y3B5KHN0YXRpY19jYXN0PHdjaGFyX3QgKj4oX0Rlc3RpbmF0aW9uKSwgX1NvdXJjZSk7IH0gdGVt
cGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wgd2NzY3B5KGNvbnN0
IF9UICZfRGVzdGluYXRpb24sICB3Y2hhcl90IGNvbnN0KiBfU291cmNlKSB0aHJvdygpIHsgcmV0
dXJuIF9faW5zZWN1cmVfd2NzY3B5KHN0YXRpY19jYXN0PHdjaGFyX3QgKj4oX0Rlc3RpbmF0aW9u
KSwgX1NvdXJjZSk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIHdjc2Nw
eSggd2NoYXJfdCAqICZfRGVzdGluYXRpb24sICB3Y2hhcl90IGNvbnN0KiBfU291cmNlKSB0aHJv
dygpIHsgcmV0dXJuIF9faW5zZWN1cmVfd2NzY3B5KF9EZXN0aW5hdGlvbiwgX1NvdXJjZSk7IH0g
dGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIHdjaGFyX3QqIF9fY2RlY2wgd2NzY3B5KHdj
aGFyX3QgKCZfRGVzdGluYXRpb24pW19TaXplXSwgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UpIHRo
cm93KCkgeyByZXR1cm4gKCh3Y3NjcHlfcyhfRGVzdGluYXRpb24sIF9TaXplLCBfU291cmNlKSkg
PT0gMCA/IF9EZXN0aW5hdGlvbiA6IDApOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgd2NoYXJfdCog
X19jZGVjbCB3Y3NjcHk8MT4od2NoYXJfdCAoJl9EZXN0aW5hdGlvbilbMV0sICB3Y2hhcl90IGNv
bnN0KiBfU291cmNlKSB0aHJvdygpIHsgcmV0dXJuICgod2NzY3B5X3MoX0Rlc3RpbmF0aW9uLCAx
LCBfU291cmNlKSkgPT0gMCA/IF9EZXN0aW5hdGlvbiA6IDApOyB9IH0NCiNsaW5lIDEyNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgiDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBzaXplX3QgX19jZGVjbCB3Y3Njc3BuKA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZywN
CiAgICAgIHdjaGFyX3QgY29uc3QqIF9Db250cm9sDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIHNpemVfdCBfX2NkZWNsIHdjc2xlbigNCiAgICAgIHdjaGFyX3QgY29uc3QqIF9T
dHJpbmcNCiAgICApOw0KDQogDQoNCiNsaW5lIDE0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RyaW5nLmgiDQoNCiNsaW5lIDE0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgi
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgd2NzbmxlbigNCiAgICAgIHdj
aGFyX3QgY29uc3QqIF9Tb3VyY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICAgICAgICAgX01heENvdW50DQogICAgKTsNCg0KDQoNCiAgICAgDQogICAgDQojbGluZSAxNTcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KICAgIA0KI2xpbmUgMTYxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCiAgICBzdGF0aWMgX19pbmxpbmUgc2l6ZV90
IF9fY2RlY2wgd2Nzbmxlbl9zKA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIF9NYXhDb3VudA0K
ICAgICAgICApDQogICAgew0KICAgICAgICByZXR1cm4gKF9Tb3VyY2UgPT0gMCkgPyAwIDogd2Nz
bmxlbihfU291cmNlLCBfTWF4Q291bnQpOw0KICAgIH0NCg0KI2xpbmUgMTcwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVf
dCBfU2l6ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCB3Y3NuY2F0X3MoICB3Y2hhcl90ICgmX0Rl
c3RpbmF0aW9uKVtfU2l6ZV0sICAgd2NoYXJfdCBjb25zdCogX1NvdXJjZSwgICBzaXplX3QgX0Nv
dW50KSB0aHJvdygpIHsgcmV0dXJuIHdjc25jYXRfcyhfRGVzdGluYXRpb24sIF9TaXplLCBfU291
cmNlLCBfQ291bnQpOyB9IH0NCiNsaW5lIDE3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Ry
aW5nLmgiDQoNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCogX19jZGVjbCB3Y3NuY2F0
KCAgd2NoYXJfdCAqX0Rlc3RpbmF0aW9uLCAgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UsICAgc2l6
ZV90IF9Db3VudCk7DQojbGluZSAxODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5o
Ig0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgd2NzbmNtcCgNCiAgICAg
IHdjaGFyX3QgY29uc3QqIF9TdHJpbmcxLA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX01heENvdW50DQog
ICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVy
cm5vX3QgX19jZGVjbCB3Y3NuY3B5X3Mod2NoYXJfdCAoJl9EZXN0aW5hdGlvbilbX1NpemVdLCAg
IHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UsICAgc2l6ZV90IF9Db3VudCkgdGhyb3coKSB7IHJldHVy
biB3Y3NuY3B5X3MoX0Rlc3RpbmF0aW9uLCBfU2l6ZSwgX1NvdXJjZSwgX0NvdW50KTsgfSB9DQoj
bGluZSAxOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQogX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHdjaGFyX3QqIF9fY2RlY2wgd2NzbmNweSggICAgd2NoYXJfdCAqX0Rlc3Rp
bmF0aW9uLCAgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UsICAgc2l6ZV90IF9Db3VudCk7DQojbGlu
ZSAyMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQogDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgd2NoYXJfdCBjb25zdCogX19jZGVjbCB3Y3NwYnJrKA0KICAgICAgd2NoYXJf
dCBjb25zdCogX1N0cmluZywNCiAgICAgIHdjaGFyX3QgY29uc3QqIF9Db250cm9sDQogICAgKTsN
Cg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBfX2NkZWNsIHdjc3NwbigNCiAgICAg
IHdjaGFyX3QgY29uc3QqIF9TdHJpbmcsDQogICAgICB3Y2hhcl90IGNvbnN0KiBfQ29udHJvbA0K
ICAgICk7DQoNCiAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCogX19jZGVjbCB3Y3N0
b2soDQogICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9TdHJpbmcsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRGVsaW1pdGVy
LA0KICAgICAgICB3Y2hhcl90KiogICAgICBfQ29udGV4dA0KICAgICk7DQoNCg0KDQogICAgDQoN
CiNsaW5lIDIzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgiDQogICAgICAgIA0K
DQoNCg0KICAgICNsaW5lIDIzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgiDQoN
CiAgICAgIA0KICAgIHN0YXRpYyBfX2lubGluZSB3Y2hhcl90KiBfX2NkZWNsIF93Y3N0b2soDQog
ICAgICAgICAgd2NoYXJfdCogICAgICAgY29uc3QgX1N0cmluZywNCiAgICAgICAgICAgICAgICAg
d2NoYXJfdCBjb25zdCogY29uc3QgX0RlbGltaXRlcg0KICAgICAgICApDQogICAgew0KICAgICAg
ICByZXR1cm4gd2NzdG9rKF9TdHJpbmcsIF9EZWxpbWl0ZXIsIDApOw0KICAgIH0NCg0KICAgIA0K
DQojbGluZSAyNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQogICAgDQog
ICAgICAgIGV4dGVybiAiQysrIiAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgid2NzdG9rIGhhcyBi
ZWVuIGNoYW5nZWQgdG8gY29uZm9ybSB3aXRoIHRoZSBJU08gQyBzdGFuZGFyZCwgIiAiYWRkaW5n
IGFuIGV4dHJhIGNvbnRleHQgcGFyYW1ldGVyLiBUbyB1c2UgdGhlIGxlZ2FjeSBNaWNyb3NvZnQg
IiAid2NzdG9rLCBkZWZpbmUgX0NSVF9OT05fQ09ORk9STUlOR19XQ1NUT0suIikpDQogICAgICAg
IGlubGluZSB3Y2hhcl90KiBfX2NkZWNsIHdjc3RvaygNCiAgICAgICAgICAgICAgd2NoYXJfdCog
ICAgICAgX1N0cmluZywNCiAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9EZWxp
bWl0ZXINCiAgICAgICAgICAgICkgdGhyb3coKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1
cm4gd2NzdG9rKF9TdHJpbmcsIF9EZWxpbWl0ZXIsIDApOw0KICAgICAgICB9DQogICAgI2xpbmUg
MjYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KI2xpbmUgMjYzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KDQoNCiANCiAgDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgd2NoYXJfdCogX19jZGVjbCBfd2NzZXJyb3IoDQogICAgICBpbnQgX0Vycm9yTnVt
YmVyDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF93
Y3NlcnJvcl9zKA0KICAgICAgd2NoYXJfdCogX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgICBfU2l6ZUluV29yZHMsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ICAgICAgX0Vycm9yTnVtYmVyDQogICAgKTsNCg0KZXh0ZXJuICJD
KysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCBfd2Nz
ZXJyb3Jfcyh3Y2hhcl90ICgmX0J1ZmZlcilbX1NpemVdLCAgIGludCBfRXJyb3IpIHRocm93KCkg
eyByZXR1cm4gX3djc2Vycm9yX3MoX0J1ZmZlciwgX1NpemUsIF9FcnJvcik7IH0gfQ0KI2xpbmUg
Mjg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KIA0KIA0KICANCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSB3Y2hhcl90KiBfX2NkZWNsIF9fd2NzZXJyb3IoDQogICAgICB3Y2hh
cl90IGNvbnN0KiBfU3RyaW5nDQogICAgKTsNCg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJu
b190IF9fY2RlY2wgX193Y3NlcnJvcl9zKA0KICAgICAgd2NoYXJfdCogICAgICAgX0J1ZmZlciwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBfU2l6ZUlu
V29yZHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9F
cnJvck1lc3NhZ2UNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9T
aXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF9fd2NzZXJyb3Jfcyh3Y2hhcl90ICgmX0J1ZmZl
cilbX1NpemVdLCAgIHdjaGFyX3QgY29uc3QqIF9FcnJvck1lc3NhZ2UpIHRocm93KCkgeyByZXR1
cm4gX193Y3NlcnJvcl9zKF9CdWZmZXIsIF9TaXplLCBfRXJyb3JNZXNzYWdlKTsgfSB9DQojbGlu
ZSAzMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQogIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd2NzaWNtcCgNCiAgICAgIHdjaGFyX3QgY29uc3QqIF9T
dHJpbmcxLA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzINCiAgICApOw0KDQogIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd2NzaWNtcF9sKA0KICAgICAgICB3Y2hhcl90
IGNvbnN0KiBfU3RyaW5nMSwNCiAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzIsDQogICAg
ICBfbG9jYWxlX3QgICAgICBfTG9jYWxlDQogICAgKTsNCg0KICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50IF9fY2RlY2wgX3djc25pY21wKA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzEs
DQogICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMiwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgICAgICAgICBfTWF4Q291bnQNCiAgICApOw0KDQogIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnQgX19jZGVjbCBfd2NzbmljbXBfbCgNCiAgICAgIHdjaGFyX3QgY29uc3QqIF9T
dHJpbmcxLA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzIsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX01heENvdW50LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvY2FsZV90ICAgICAgX0xvY2FsZQ0KICAgICk7DQoNCiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgZXJybm9fdCBfX2NkZWNsIF93Y3Nuc2V0X3MoDQogICAgICB3Y2hhcl90KiBfRGVzdGlu
YXRpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICBfU2l6ZUlu
V29yZHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICBfVmFsdWUs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICBfTWF4Q291bnQNCiAg
ICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJy
bm9fdCBfX2NkZWNsIF93Y3Nuc2V0X3MoICB3Y2hhcl90ICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0s
ICAgd2NoYXJfdCBfVmFsdWUsICAgc2l6ZV90IF9NYXhDb3VudCkgdGhyb3coKSB7IHJldHVybiBf
d2NzbnNldF9zKF9EZXN0aW5hdGlvbiwgX1NpemUsIF9WYWx1ZSwgX01heENvdW50KTsgfSB9DQoj
bGluZSAzNDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQogX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHdjaGFyX3QqIF9fY2RlY2wgX3djc25zZXQoICB3Y2hhcl90ICpfU3RyaW5n
LCAgIHdjaGFyX3QgX1ZhbHVlLCAgIHNpemVfdCBfTWF4Q291bnQpOw0KI2xpbmUgMzQ5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdj
aGFyX3QqIF9fY2RlY2wgX3djc3JldigNCiAgICAgIHdjaGFyX3QqIF9TdHJpbmcNCiAgICApOw0K
DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfd2Nzc2V0X3MoDQogICAg
ICB3Y2hhcl90KiBfRGVzdGluYXRpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICBfU2l6ZUluV29yZHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3Y2hhcl90ICBfVmFsdWUNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6
ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF93Y3NzZXRfcyggIHdjaGFyX3QgKCZf
U3RyaW5nKVtfU2l6ZV0sICAgd2NoYXJfdCBfVmFsdWUpIHRocm93KCkgeyByZXR1cm4gX3djc3Nl
dF9zKF9TdHJpbmcsIF9TaXplLCBfVmFsdWUpOyB9IH0NCiNsaW5lIDM2NSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93c3RyaW5nLmgiDQoNCl9faW5saW5lIHdjaGFyX3QqIF9fY2RlY2wgX19pbnNl
Y3VyZV9fd2Nzc2V0KCAgd2NoYXJfdCAqX1N0cmluZywgICB3Y2hhcl90IF9WYWx1ZSkgeyB3Y2hh
cl90KiBfX2NkZWNsIF93Y3NzZXQoICB3Y2hhcl90ICpfU3RyaW5nLCAgIHdjaGFyX3QgX1ZhbHVl
KTsgcmV0dXJuIF93Y3NzZXQoX1N0cmluZywgX1ZhbHVlKTsgfSBleHRlcm4gIkMrKyIgeyB0ZW1w
bGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgd2NoYXJfdCogX19jZGVjbCBfd2Nzc2V0KF9UICZf
U3RyaW5nLCAgIHdjaGFyX3QgX1ZhbHVlKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3dj
c3NldChzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9TdHJpbmcpLCBfVmFsdWUpOyB9IHRlbXBsYXRl
IDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93Y3NzZXQoY29uc3QgX1Qg
Jl9TdHJpbmcsICAgd2NoYXJfdCBfVmFsdWUpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9f
d2Nzc2V0KHN0YXRpY19jYXN0PHdjaGFyX3QgKj4oX1N0cmluZyksIF9WYWx1ZSk7IH0gdGVtcGxh
dGUgPD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93Y3NzZXQoICB3Y2hhcl90ICogJl9TdHJp
bmcsICAgd2NoYXJfdCBfVmFsdWUpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd2Nzc2V0
KF9TdHJpbmcsIF9WYWx1ZSk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIHdjaGFy
X3QqIF9fY2RlY2wgX3djc3NldCggIHdjaGFyX3QgKCZfU3RyaW5nKVtfU2l6ZV0sICAgd2NoYXJf
dCBfVmFsdWUpIHRocm93KCkgeyByZXR1cm4gKChfd2Nzc2V0X3MoX1N0cmluZywgX1NpemUsIF9W
YWx1ZSkpID09IDAgPyBfU3RyaW5nIDogMCk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICB3Y2hhcl90
KiBfX2NkZWNsIF93Y3NzZXQ8MT4od2NoYXJfdCAoJl9TdHJpbmcpWzFdLCAgIHdjaGFyX3QgX1Zh
bHVlKSB0aHJvdygpIHsgcmV0dXJuICgoX3djc3NldF9zKF9TdHJpbmcsIDEsIF9WYWx1ZSkpID09
IDAgPyBfU3RyaW5nIDogMCk7IH0gfQ0KI2xpbmUgMzcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0
X3dzdHJpbmcuaCINCg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3dj
c2x3cl9zKA0KICAgICAgd2NoYXJfdCogX1N0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAgIF9TaXplSW5Xb3Jkcw0KICAgICk7DQoNCmV4dGVybiAiQysrIiB7
IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX3djc2x3cl9z
KCAgd2NoYXJfdCAoJl9TdHJpbmcpW19TaXplXSkgdGhyb3coKSB7IHJldHVybiBfd2NzbHdyX3Mo
X1N0cmluZywgX1NpemUpOyB9IH0NCiNsaW5lIDM4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RyaW5nLmgiDQoNCl9faW5saW5lIHdjaGFyX3QqIF9fY2RlY2wgX19pbnNlY3VyZV9fd2NzbHdy
KCB3Y2hhcl90ICpfU3RyaW5nKSB7IHdjaGFyX3QqIF9fY2RlY2wgX3djc2x3ciggd2NoYXJfdCAq
X1N0cmluZyk7IHJldHVybiBfd2NzbHdyKF9TdHJpbmcpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBs
YXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93Y3Nsd3IoX1QgJl9T
dHJpbmcpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd2NzbHdyKHN0YXRpY19jYXN0PHdj
aGFyX3QgKj4oX1N0cmluZykpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hh
cl90KiBfX2NkZWNsIF93Y3Nsd3IoY29uc3QgX1QgJl9TdHJpbmcpIHRocm93KCkgeyByZXR1cm4g
X19pbnNlY3VyZV9fd2NzbHdyKHN0YXRpY19jYXN0PHdjaGFyX3QgKj4oX1N0cmluZykpOyB9IHRl
bXBsYXRlIDw+IGlubGluZSAgd2NoYXJfdCogX19jZGVjbCBfd2NzbHdyKCB3Y2hhcl90ICogJl9T
dHJpbmcpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd2NzbHdyKF9TdHJpbmcpOyB9IHRl
bXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSB3Y2hhcl90KiBfX2NkZWNsIF93Y3Nsd3Iod2No
YXJfdCAoJl9TdHJpbmcpW19TaXplXSkgdGhyb3coKSB7IHJldHVybiAoKF93Y3Nsd3JfcyhfU3Ry
aW5nLCBfU2l6ZSkpID09IDAgPyBfU3RyaW5nIDogMCk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICB3
Y2hhcl90KiBfX2NkZWNsIF93Y3Nsd3I8MT4od2NoYXJfdCAoJl9TdHJpbmcpWzFdKSB0aHJvdygp
IHsgcmV0dXJuICgoX3djc2x3cl9zKF9TdHJpbmcsIDEpKSA9PSAwID8gX1N0cmluZyA6IDApOyB9
IH0NCiNsaW5lIDM4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgiDQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfd2NzbHdyX3NfbCgNCiAgICAgIHdj
aGFyX3QqICBfU3RyaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICAgIF9TaXplSW5Xb3JkcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90
IF9Mb2NhbGUNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXpl
PiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF93Y3Nsd3Jfc19sKCAgd2NoYXJfdCAoJl9TdHJpbmcp
W19TaXplXSwgICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiBfd2NzbHdyX3Nf
bChfU3RyaW5nLCBfU2l6ZSwgX0xvY2FsZSk7IH0gfQ0KI2xpbmUgNDAwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KX19pbmxpbmUgd2NoYXJfdCogX19jZGVjbCBfX2luc2Vj
dXJlX193Y3Nsd3JfbCggIHdjaGFyX3QgKl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpIHsg
d2NoYXJfdCogX19jZGVjbCBfd2NzbHdyX2woICB3Y2hhcl90ICpfU3RyaW5nLCAgIF9sb2NhbGVf
dCBfTG9jYWxlKTsgcmV0dXJuIF93Y3Nsd3JfbChfU3RyaW5nLCBfTG9jYWxlKTsgfSBleHRlcm4g
IkMrKyIgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgd2NoYXJfdCogX19jZGVjbCBf
d2NzbHdyX2woX1QgJl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpIHRocm93KCkgeyByZXR1
cm4gX19pbnNlY3VyZV9fd2NzbHdyX2woc3RhdGljX2Nhc3Q8d2NoYXJfdCAqPihfU3RyaW5nKSwg
X0xvY2FsZSk7IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIHdjaGFyX3QqIF9fY2Rl
Y2wgX3djc2x3cl9sKGNvbnN0IF9UICZfU3RyaW5nLCAgIF9sb2NhbGVfdCBfTG9jYWxlKSB0aHJv
dygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3djc2x3cl9sKHN0YXRpY19jYXN0PHdjaGFyX3QgKj4o
X1N0cmluZyksIF9Mb2NhbGUpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgd2NoYXJfdCogX19jZGVj
bCBfd2NzbHdyX2woICB3Y2hhcl90ICogJl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpIHRo
cm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd2NzbHdyX2woX1N0cmluZywgX0xvY2FsZSk7IH0g
dGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIHdjaGFyX3QqIF9fY2RlY2wgX3djc2x3cl9s
KCAgd2NoYXJfdCAoJl9TdHJpbmcpW19TaXplXSwgICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhyb3co
KSB7IHJldHVybiAoKF93Y3Nsd3Jfc19sKF9TdHJpbmcsIF9TaXplLCBfTG9jYWxlKSkgPT0gMCA/
IF9TdHJpbmcgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wgX3dj
c2x3cl9sPDE+KHdjaGFyX3QgKCZfU3RyaW5nKVsxXSwgICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhy
b3coKSB7IHJldHVybiAoKF93Y3Nsd3Jfc19sKF9TdHJpbmcsIDEsIF9Mb2NhbGUpKSA9PSAwID8g
X1N0cmluZyA6IDApOyB9IH0NCiNsaW5lIDQwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Ry
aW5nLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfd2NzdXBy
X3MoDQogICAgICB3Y2hhcl90KiBfU3RyaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgICBfU2l6ZQ0KICAgICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3Qg
X1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX3djc3Vwcl9zKCAgd2NoYXJfdCAoJl9TdHJp
bmcpW19TaXplXSkgdGhyb3coKSB7IHJldHVybiBfd2NzdXByX3MoX1N0cmluZywgX1NpemUpOyB9
IH0NCiNsaW5lIDQxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgiDQoNCl9faW5s
aW5lIHdjaGFyX3QqIF9fY2RlY2wgX19pbnNlY3VyZV9fd2NzdXByKCB3Y2hhcl90ICpfU3RyaW5n
KSB7IHdjaGFyX3QqIF9fY2RlY2wgX3djc3Vwciggd2NoYXJfdCAqX1N0cmluZyk7IHJldHVybiBf
d2NzdXByKF9TdHJpbmcpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4g
aW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93Y3N1cHIoX1QgJl9TdHJpbmcpIHRocm93KCkgeyBy
ZXR1cm4gX19pbnNlY3VyZV9fd2NzdXByKHN0YXRpY19jYXN0PHdjaGFyX3QgKj4oX1N0cmluZykp
OyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93Y3N1
cHIoY29uc3QgX1QgJl9TdHJpbmcpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd2NzdXBy
KHN0YXRpY19jYXN0PHdjaGFyX3QgKj4oX1N0cmluZykpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAg
d2NoYXJfdCogX19jZGVjbCBfd2NzdXByKCB3Y2hhcl90ICogJl9TdHJpbmcpIHRocm93KCkgeyBy
ZXR1cm4gX19pbnNlY3VyZV9fd2NzdXByKF9TdHJpbmcpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1Np
emU+IGlubGluZSB3Y2hhcl90KiBfX2NkZWNsIF93Y3N1cHIod2NoYXJfdCAoJl9TdHJpbmcpW19T
aXplXSkgdGhyb3coKSB7IHJldHVybiAoKF93Y3N1cHJfcyhfU3RyaW5nLCBfU2l6ZSkpID09IDAg
PyBfU3RyaW5nIDogMCk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93
Y3N1cHI8MT4od2NoYXJfdCAoJl9TdHJpbmcpWzFdKSB0aHJvdygpIHsgcmV0dXJuICgoX3djc3Vw
cl9zKF9TdHJpbmcsIDEpKSA9PSAwID8gX1N0cmluZyA6IDApOyB9IH0NCiNsaW5lIDQyMyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGVycm5vX3QgX19jZGVjbCBfd2NzdXByX3NfbCgNCiAgICAgIHdjaGFyX3QqICBfU3RyaW5nLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgX1NpemUsDQogICAgICAgICAgICAg
ICAgICAgICAgX2xvY2FsZV90IF9Mb2NhbGUNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1w
bGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF93Y3N1cHJfc19sKCAg
d2NoYXJfdCAoJl9TdHJpbmcpW19TaXplXSwgICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7
IHJldHVybiBfd2NzdXByX3NfbChfU3RyaW5nLCBfU2l6ZSwgX0xvY2FsZSk7IH0gfQ0KI2xpbmUg
NDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcuaCINCg0KX19pbmxpbmUgd2NoYXJf
dCogX19jZGVjbCBfX2luc2VjdXJlX193Y3N1cHJfbCggIHdjaGFyX3QgKl9TdHJpbmcsICAgX2xv
Y2FsZV90IF9Mb2NhbGUpIHsgd2NoYXJfdCogX19jZGVjbCBfd2NzdXByX2woICB3Y2hhcl90ICpf
U3RyaW5nLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsgcmV0dXJuIF93Y3N1cHJfbChfU3RyaW5nLCBf
TG9jYWxlKTsgfSBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAg
d2NoYXJfdCogX19jZGVjbCBfd2NzdXByX2woX1QgJl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2Nh
bGUpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd2NzdXByX2woc3RhdGljX2Nhc3Q8d2No
YXJfdCAqPihfU3RyaW5nKSwgX0xvY2FsZSk7IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxp
bmUgIHdjaGFyX3QqIF9fY2RlY2wgX3djc3Vwcl9sKGNvbnN0IF9UICZfU3RyaW5nLCAgIF9sb2Nh
bGVfdCBfTG9jYWxlKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3djc3Vwcl9sKHN0YXRp
Y19jYXN0PHdjaGFyX3QgKj4oX1N0cmluZyksIF9Mb2NhbGUpOyB9IHRlbXBsYXRlIDw+IGlubGlu
ZSAgd2NoYXJfdCogX19jZGVjbCBfd2NzdXByX2woICB3Y2hhcl90ICogJl9TdHJpbmcsICAgX2xv
Y2FsZV90IF9Mb2NhbGUpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd2NzdXByX2woX1N0
cmluZywgX0xvY2FsZSk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIHdjaGFyX3Qq
IF9fY2RlY2wgX3djc3Vwcl9sKCAgd2NoYXJfdCAoJl9TdHJpbmcpW19TaXplXSwgICBfbG9jYWxl
X3QgX0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiAoKF93Y3N1cHJfc19sKF9TdHJpbmcsIF9TaXpl
LCBfTG9jYWxlKSkgPT0gMCA/IF9TdHJpbmcgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHdj
aGFyX3QqIF9fY2RlY2wgX3djc3Vwcl9sPDE+KHdjaGFyX3QgKCZfU3RyaW5nKVsxXSwgICBfbG9j
YWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiAoKF93Y3N1cHJfc19sKF9TdHJpbmcsIDEs
IF9Mb2NhbGUpKSA9PSAwID8gX1N0cmluZyA6IDApOyB9IH0NCiNsaW5lIDQ0MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RyaW5nLmgiDQoNCiANCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNp
emVfdCBfX2NkZWNsIHdjc3hmcm0oDQogICAgICAgIHdjaGFyX3QqICAgICAgIF9EZXN0aW5hdGlv
biwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25z
dCogX1NvdXJjZSwNCiAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBfTWF4Q291bnQNCiAg
ICApOw0KDQogDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgX19jZGVjbCBfd2NzeGZy
bV9sKA0KICAgICAgICB3Y2hhcl90KiAgICAgICBfRGVzdGluYXRpb24sDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Tb3VyY2UsDQogICAg
ICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX01heENvdW50LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgX0xvY2FsZQ0KICAgICk7DQoNCiAN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCB3Y3Njb2xsKA0KICAgICAgd2NoYXJf
dCBjb25zdCogX1N0cmluZzEsDQogICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMg0KICAgICk7
DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd2NzY29sbF9sKA0KICAg
ICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMSwNCiAgICAgICAgd2NoYXJfdCBjb25zdCogX1N0
cmluZzIsDQogICAgICBfbG9jYWxlX3QgICAgICBfTG9jYWxlDQogICAgKTsNCg0KIA0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF93Y3NpY29sbCgNCiAgICAgIHdjaGFyX3QgY29u
c3QqIF9TdHJpbmcxLA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzINCiAgICApOw0KDQog
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3djc2ljb2xsX2woDQogICAgICAg
IHdjaGFyX3QgY29uc3QqIF9TdHJpbmcxLA0KICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5n
MiwNCiAgICAgIF9sb2NhbGVfdCAgICAgIF9Mb2NhbGUNCiAgICApOw0KDQogDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3djc25jb2xsKA0KICAgICAgd2NoYXJfdCBjb25zdCog
X1N0cmluZzEsDQogICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMiwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBfTWF4Q291bnQNCiAgICApOw0KDQogDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3djc25jb2xsX2woDQogICAgICB3Y2hhcl90
IGNvbnN0KiBfU3RyaW5nMSwNCiAgICAgIHdjaGFyX3QgY29uc3QqIF9TdHJpbmcyLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIF9NYXhDb3VudCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIF9Mb2NhbGUNCiAgICApOw0KDQogDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3djc25pY29sbCgNCiAgICAgIHdjaGFyX3Qg
Y29uc3QqIF9TdHJpbmcxLA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzIsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX01heENvdW50DQogICAgKTsNCg0K
IA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF93Y3NuaWNvbGxfbCgNCiAgICAg
IHdjaGFyX3QgY29uc3QqIF9TdHJpbmcxLA0KICAgICAgd2NoYXJfdCBjb25zdCogX1N0cmluZzIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX01heENvdW50LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgX0xvY2FsZQ0KICAgICk7DQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMrKyIgew0KDQogICAgIA0KICAgIA0KICAgIGlubGlu
ZSB3Y2hhcl90KiBfX2NkZWNsIHdjc2NociggIHdjaGFyX3QqIF9TdHJpbmcsIHdjaGFyX3QgX0Mp
DQogICAgew0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2NzY2hyKHN0YXRp
Y19jYXN0PHdjaGFyX3QgY29uc3QqPihfU3RyaW5nKSwgX0MpKTsNCiAgICB9DQoNCiAgICAgDQog
ICAgaW5saW5lIHdjaGFyX3QqIF9fY2RlY2wgd2NzcGJyayggIHdjaGFyX3QqIF9TdHJpbmcsICAg
d2NoYXJfdCBjb25zdCogX0NvbnRyb2wpDQogICAgew0KICAgICAgICByZXR1cm4gY29uc3RfY2Fz
dDx3Y2hhcl90Kj4od2NzcGJyayhzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4oX1N0cmluZyks
IF9Db250cm9sKSk7DQogICAgfQ0KDQogICAgIA0KICAgIGlubGluZSB3Y2hhcl90KiBfX2NkZWNs
IHdjc3JjaHIoICB3Y2hhcl90KiBfU3RyaW5nLCAgIHdjaGFyX3QgX0MpDQogICAgew0KICAgICAg
ICByZXR1cm4gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2NzcmNocihzdGF0aWNfY2FzdDx3Y2hhcl90
IGNvbnN0Kj4oX1N0cmluZyksIF9DKSk7DQogICAgfQ0KDQogICAgICAgDQogICAgDQogICAgaW5s
aW5lIHdjaGFyX3QqIF9fY2RlY2wgd2Nzc3RyKCAgd2NoYXJfdCogX1N0cmluZywgICB3Y2hhcl90
IGNvbnN0Kl9TdWJTdHIpDQogICAgew0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDx3Y2hhcl90
Kj4od2Nzc3RyKHN0YXRpY19jYXN0PHdjaGFyX3QgY29uc3QqPihfU3RyaW5nKSwgX1N1YlN0cikp
Ow0KICAgIH0NCg0KfQ0KI2xpbmUgNTU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJpbmcu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQojbGluZSA1NjggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd3N0cmluZy5oIg0KDQogICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQ
T1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJ
U08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3djc2R1cCIgIi4gU2VlIG9ubGlu
ZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3Y2hhcl90
KiBfX2NkZWNsIHdjc2R1cCgNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nDQogICAg
ICAgICk7DQoNCiAgICANCg0KI2xpbmUgNTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdHJp
bmcuaCINCg0KICAgIA0KICAgIA0KDQogICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQ
T1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJ
U08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3djc2ljbXAiICIuIFNlZSBvbmxp
bmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9f
Y2RlY2wgd2NzaWNtcCgNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMSwNCiAgICAg
ICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMg0KICAgICAgICApOw0KDQogICAgICBfX2RlY2xz
cGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRl
ZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAi
X3djc25pY21wIiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIHdjc25pY21wKA0KICAgICAgICAgIHdjaGFyX3Qg
Y29uc3QqIF9TdHJpbmcxLA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9TdHJpbmcyLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBfTWF4Q291bnQNCiAg
ICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9y
IHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBD
KysgY29uZm9ybWFudCBuYW1lOiAiICJfd2NzbnNldCIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBk
ZXRhaWxzLiIpKQ0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCogX19j
ZGVjbCB3Y3Nuc2V0KA0KICAgICAgICAgIHdjaGFyX3QqIF9TdHJpbmcsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAgX1ZhbHVlLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCAgIF9NYXhDb3VudA0KICAgICAgICApOw0KDQogICAgX19k
ZWNsc3BlYyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJl
Y2F0ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6
ICIgIl93Y3NyZXYiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdjaGFyX3QqIF9fY2RlY2wgd2NzcmV2KA0KICAgICAg
ICAgIHdjaGFyX3QqIF9TdHJpbmcNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGVwcmVj
YXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFk
LCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfd2Nzc2V0IiAi
LiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgIA0KICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB3Y2hhcl90KiBfX2NkZWNsIHdjc3NldCgNCiAgICAgICAgICB3Y2hhcl90KiBf
U3RyaW5nLA0KICAgICAgICAgICAgICAgd2NoYXJfdCAgX1ZhbHVlDQogICAgICAgICk7DQoNCiAg
ICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMg
ZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQg
bmFtZTogIiAiX3djc2x3ciIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAg
ICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCogX19jZGVjbCB3Y3Nsd3IoDQog
ICAgICAgICAgd2NoYXJfdCogX1N0cmluZw0KICAgICAgICApOw0KDQogICAgX19kZWNsc3BlYyhk
ZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIElu
c3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl93Y3N1
cHIiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHdjaGFyX3QqIF9fY2RlY2wgd2NzdXByKA0KICAgICAgICAgIHdjaGFy
X3QqIF9TdHJpbmcNCiAgICAgICAgKTsNCg0KICAgICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJU
aGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSB0
aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl93Y3NpY29sbCIgIi4gU2Vl
IG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnQgX19jZGVjbCB3Y3NpY29sbCgNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMSwN
CiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3RyaW5nMg0KICAgICAgICApOw0KDQojbGluZSA2
MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0cmluZy5oIg0KDQoNCg0KfSBfX3ByYWdtYShw
YWNrKHBvcCkpDQoNCiNsaW5lIDY0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RyaW5nLmgi
DQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0cmlu
Zy5oIg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2
IDI4NzI3ICkNCg0KDQpfX3ByYWdtYShwYWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoN
Cg0KDQoNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wg
c3RyY3B5X3MoDQogICAgICAgICAgY2hhciogICAgICAgX0Rlc3RpbmF0aW9uLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJzaXplX3QgICAgIF9TaXplSW5CeXRlcywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX1NvdXJjZQ0KICAgICAgICAp
Ow0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBzdHJj
YXRfcygNCiAgICAgICAgICBjaGFyKiAgICAgICBfRGVzdGluYXRpb24sDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnNpemVfdCAgICAgX1NpemVJbkJ5dGVzLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfU291cmNlDQogICAgICAg
ICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIHN0
cmVycm9yX3MoDQogICAgICAgICAgY2hhciogIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9TaXplSW5CeXRlcywNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgICAgX0Vycm9yTnVtYmVyKTsNCg0KICAgIA0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgc3RybmNhdF9zKA0KICAgICAgICAgIGNoYXIq
ICAgICAgIF9EZXN0aW5hdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByc2l6ZV90ICAgICBfU2l6ZUluQnl0ZXMsDQogICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBf
U291cmNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzaXplX3QgICAg
IF9NYXhDb3VudA0KICAgICAgICApOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGVycm5vX3QgX19jZGVjbCBzdHJuY3B5X3MoDQogICAgICAgICAgY2hhciogICAgICAgX0Rlc3Rp
bmF0aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzaXplX3QgICAgIF9T
aXplSW5CeXRlcywNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIF9Tb3VyY2UsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnNpemVfdCAgICAgX01heENvdW50DQogICAgICAgICk7
DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqICBfX2NkZWNsIHN0cnRv
a19zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICBfU3RyaW5nLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX0RlbGltaXRlciwNCiAg
ICAgICAgICAgIGNoYXIqKiAgICAgIF9Db250ZXh0DQogICAgICAgICk7DQoNCiNsaW5lIDc1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQqIF9f
Y2RlY2wgX21lbWNjcHkoDQogICAgICB2b2lkKiAgICAgICBfRHN0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkIGNvbnN0KiBfU3JjLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgICAgICAgICBfVmFsLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgICAgICBfTWF4Q291bnQNCiAgICApOw0KDQpleHRlcm4gIkMr
KyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIHN0cmNh
dF9zKGNoYXIgKCZfRGVzdGluYXRpb24pW19TaXplXSwgICBjaGFyIGNvbnN0KiBfU291cmNlKSB0
aHJvdygpIHsgcmV0dXJuIHN0cmNhdF9zKF9EZXN0aW5hdGlvbiwgX1NpemUsIF9Tb3VyY2UpOyB9
IH0NCiNsaW5lIDg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KDQoNCiAgICBfX2lubGlu
ZSBjaGFyKiBfX2NkZWNsIF9faW5zZWN1cmVfc3RyY2F0KCBjaGFyICpfRGVzdGluYXRpb24sICBj
aGFyIGNvbnN0KiBfU291cmNlKSB7IGNoYXIqIF9fY2RlY2wgc3RyY2F0KCBjaGFyICpfRGVzdGlu
YXRpb24sICBjaGFyIGNvbnN0KiBfU291cmNlKTsgcmV0dXJuIHN0cmNhdChfRGVzdGluYXRpb24s
IF9Tb3VyY2UpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5l
ICBjaGFyKiBfX2NkZWNsIHN0cmNhdChfVCAmX0Rlc3RpbmF0aW9uLCAgY2hhciBjb25zdCogX1Nv
dXJjZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3N0cmNhdChzdGF0aWNfY2FzdDxjaGFy
ICo+KF9EZXN0aW5hdGlvbiksIF9Tb3VyY2UpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5s
aW5lICBjaGFyKiBfX2NkZWNsIHN0cmNhdChjb25zdCBfVCAmX0Rlc3RpbmF0aW9uLCAgY2hhciBj
b25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3N0cmNhdChzdGF0aWNf
Y2FzdDxjaGFyICo+KF9EZXN0aW5hdGlvbiksIF9Tb3VyY2UpOyB9IHRlbXBsYXRlIDw+IGlubGlu
ZSAgY2hhciogX19jZGVjbCBzdHJjYXQoIGNoYXIgKiAmX0Rlc3RpbmF0aW9uLCAgY2hhciBjb25z
dCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3N0cmNhdChfRGVzdGluYXRp
b24sIF9Tb3VyY2UpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBjaGFyKiBfX2Nk
ZWNsIHN0cmNhdChjaGFyICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0sICBjaGFyIGNvbnN0KiBfU291
cmNlKSB0aHJvdygpIHsgcmV0dXJuICgoc3RyY2F0X3MoX0Rlc3RpbmF0aW9uLCBfU2l6ZSwgX1Nv
dXJjZSkpID09IDAgPyBfRGVzdGluYXRpb24gOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIGNo
YXIqIF9fY2RlY2wgc3RyY2F0PDE+KGNoYXIgKCZfRGVzdGluYXRpb24pWzFdLCAgY2hhciBjb25z
dCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiAoKHN0cmNhdF9zKF9EZXN0aW5hdGlvbiwgMSwg
X1NvdXJjZSkpID09IDAgPyBfRGVzdGluYXRpb24gOiAwKTsgfSB9DQojbGluZSA5NiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RyaW5nLmgiDQoNCiNsaW5lIDk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCIN
Cg0KIA0KaW50IF9fY2RlY2wgc3RyY21wKA0KICAgICAgY2hhciBjb25zdCogX1N0cjEsDQogICAg
ICBjaGFyIGNvbnN0KiBfU3RyMg0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnQgX19jZGVjbCBfc3RyY21waSgNCiAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcxLA0KICAgICAg
Y2hhciBjb25zdCogX1N0cmluZzINCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
aW50IF9fY2RlY2wgc3RyY29sbCgNCiAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcxLA0KICAgICAg
Y2hhciBjb25zdCogX1N0cmluZzINCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
aW50IF9fY2RlY2wgX3N0cmNvbGxfbCgNCiAgICAgICAgY2hhciBjb25zdCogX1N0cmluZzEsDQog
ICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcyLA0KICAgICAgX2xvY2FsZV90ICAgX0xvY2FsZQ0K
ICAgICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBl
cnJub190IF9fY2RlY2wgc3RyY3B5X3MoICBjaGFyICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0sICAg
Y2hhciBjb25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiBzdHJjcHlfcyhfRGVzdGluYXRp
b24sIF9TaXplLCBfU291cmNlKTsgfSB9DQojbGluZSAxMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0cmlu
Zy5oIg0KDQpfX2lubGluZSBjaGFyKiBfX2NkZWNsIF9faW5zZWN1cmVfc3RyY3B5KCBjaGFyICpf
RGVzdGluYXRpb24sICBjaGFyIGNvbnN0KiBfU291cmNlKSB7IGNoYXIqIF9fY2RlY2wgc3RyY3B5
KCBjaGFyICpfRGVzdGluYXRpb24sICBjaGFyIGNvbnN0KiBfU291cmNlKTsgcmV0dXJuIHN0cmNw
eShfRGVzdGluYXRpb24sIF9Tb3VyY2UpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBl
bmFtZSBfVD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIHN0cmNweShfVCAmX0Rlc3RpbmF0aW9uLCAg
Y2hhciBjb25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3N0cmNweShz
dGF0aWNfY2FzdDxjaGFyICo+KF9EZXN0aW5hdGlvbiksIF9Tb3VyY2UpOyB9IHRlbXBsYXRlIDx0
eXBlbmFtZSBfVD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIHN0cmNweShjb25zdCBfVCAmX0Rlc3Rp
bmF0aW9uLCAgY2hhciBjb25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJl
X3N0cmNweShzdGF0aWNfY2FzdDxjaGFyICo+KF9EZXN0aW5hdGlvbiksIF9Tb3VyY2UpOyB9IHRl
bXBsYXRlIDw+IGlubGluZSAgY2hhciogX19jZGVjbCBzdHJjcHkoIGNoYXIgKiAmX0Rlc3RpbmF0
aW9uLCAgY2hhciBjb25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3N0
cmNweShfRGVzdGluYXRpb24sIF9Tb3VyY2UpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlu
bGluZSBjaGFyKiBfX2NkZWNsIHN0cmNweShjaGFyICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0sICBj
aGFyIGNvbnN0KiBfU291cmNlKSB0aHJvdygpIHsgcmV0dXJuICgoc3RyY3B5X3MoX0Rlc3RpbmF0
aW9uLCBfU2l6ZSwgX1NvdXJjZSkpID09IDAgPyBfRGVzdGluYXRpb24gOiAwKTsgfSB0ZW1wbGF0
ZSA8PiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgc3RyY3B5PDE+KGNoYXIgKCZfRGVzdGluYXRpb24p
WzFdLCAgY2hhciBjb25zdCogX1NvdXJjZSkgdGhyb3coKSB7IHJldHVybiAoKHN0cmNweV9zKF9E
ZXN0aW5hdGlvbiwgMSwgX1NvdXJjZSkpID09IDAgPyBfRGVzdGluYXRpb24gOiAwKTsgfSB9DQoj
bGluZSAxMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0cmluZy5oIg0KDQogDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgc2l6ZV90IF9fY2RlY2wgc3RyY3NwbigNCiAgICAgIGNoYXIgY29uc3QqIF9TdHIsDQog
ICAgICBjaGFyIGNvbnN0KiBfQ29udHJvbA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDE0NiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcc3RyaW5nLmgiDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xz
cGVjKGFsbG9jYXRvcikgY2hhciogX19jZGVjbCBfc3RyZHVwKA0KICAgICAgY2hhciBjb25zdCog
X1NvdXJjZQ0KICAgICk7DQoNCg0KDQojbGluZSAxNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0cmluZy5o
Ig0KDQogDQogDQogIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqICBfX2NkZWNsIF9zdHJl
cnJvcigNCiAgICAgIGNoYXIgY29uc3QqIF9FcnJvck1lc3NhZ2UNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3N0cmVycm9yX3MoDQogICAgICBjaGFy
KiAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAg
ICAgX1NpemVJbkJ5dGVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX0Vy
cm9yTWVzc2FnZQ0KICAgICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1Np
emU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX3N0cmVycm9yX3MoY2hhciAoJl9CdWZmZXIpW19T
aXplXSwgICBjaGFyIGNvbnN0KiBfRXJyb3JNZXNzYWdlKSB0aHJvdygpIHsgcmV0dXJuIF9zdHJl
cnJvcl9zKF9CdWZmZXIsIF9TaXplLCBfRXJyb3JNZXNzYWdlKTsgfSB9DQojbGluZSAxNzUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0cmluZy5oIg0KDQogDQogIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNo
YXIqIF9fY2RlY2wgc3RyZXJyb3IoDQogICAgICBpbnQgX0Vycm9yTWVzc2FnZQ0KICAgICk7DQoN
CmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9f
Y2RlY2wgc3RyZXJyb3JfcyhjaGFyICgmX0J1ZmZlcilbX1NpemVdLCAgIGludCBfRXJyb3JNZXNz
YWdlKSB0aHJvdygpIHsgcmV0dXJuIHN0cmVycm9yX3MoX0J1ZmZlciwgX1NpemUsIF9FcnJvck1l
c3NhZ2UpOyB9IH0NCiNsaW5lIDE4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RyaW5nLmgiDQoNCiANCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfc3RyaWNtcCgNCiAgICAgIGNoYXIgY29u
c3QqIF9TdHJpbmcxLA0KICAgICAgY2hhciBjb25zdCogX1N0cmluZzINCiAgICApOw0KDQogDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3N0cmljb2xsKA0KICAgICAgY2hhciBj
b25zdCogX1N0cmluZzEsDQogICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nMg0KICAgICk7DQoNCiAN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfc3RyaWNvbGxfbCgNCiAgICAgICAg
Y2hhciBjb25zdCogX1N0cmluZzEsDQogICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcyLA0KICAg
ICAgX2xvY2FsZV90ICAgX0xvY2FsZQ0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnQgX19jZGVjbCBfc3RyaWNtcF9sKA0KICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nMSwN
CiAgICAgICAgY2hhciBjb25zdCogX1N0cmluZzIsDQogICAgICBfbG9jYWxlX3QgICBfTG9jYWxl
DQogICAgKTsNCg0KIA0Kc2l6ZV90IF9fY2RlY2wgc3RybGVuKA0KICAgICAgY2hhciBjb25zdCog
X1N0cg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBf
c3RybHdyX3MoDQogICAgICBjaGFyKiAgX1N0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9TaXplDQogICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVf
dCBfU2l6ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCBfc3RybHdyX3MoICBjaGFyICgmX1N0cmlu
ZylbX1NpemVdKSB0aHJvdygpIHsgcmV0dXJuIF9zdHJsd3JfcyhfU3RyaW5nLCBfU2l6ZSk7IH0g
fQ0KI2xpbmUgMjI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KX19pbmxpbmUgY2hhciog
X19jZGVjbCBfX2luc2VjdXJlX19zdHJsd3IoIGNoYXIgKl9TdHJpbmcpIHsgY2hhciogX19jZGVj
bCBfc3RybHdyKCBjaGFyICpfU3RyaW5nKTsgcmV0dXJuIF9zdHJsd3IoX1N0cmluZyk7IH0gZXh0
ZXJuICJDKysiIHsgdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wg
X3N0cmx3cihfVCAmX1N0cmluZykgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX19zdHJsd3Io
c3RhdGljX2Nhc3Q8Y2hhciAqPihfU3RyaW5nKSk7IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBp
bmxpbmUgIGNoYXIqIF9fY2RlY2wgX3N0cmx3cihjb25zdCBfVCAmX1N0cmluZykgdGhyb3coKSB7
IHJldHVybiBfX2luc2VjdXJlX19zdHJsd3Ioc3RhdGljX2Nhc3Q8Y2hhciAqPihfU3RyaW5nKSk7
IH0gdGVtcGxhdGUgPD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF9zdHJsd3IoIGNoYXIgKiAmX1N0
cmluZykgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX19zdHJsd3IoX1N0cmluZyk7IH0gdGVt
cGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGNoYXIqIF9fY2RlY2wgX3N0cmx3cihjaGFyICgm
X1N0cmluZylbX1NpemVdKSB0aHJvdygpIHsgcmV0dXJuICgoX3N0cmx3cl9zKF9TdHJpbmcsIF9T
aXplKSkgPT0gMCA/IF9TdHJpbmcgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIGNoYXIqIF9f
Y2RlY2wgX3N0cmx3cjwxPihjaGFyICgmX1N0cmluZylbMV0pIHRocm93KCkgeyByZXR1cm4gKChf
c3RybHdyX3MoX1N0cmluZywgMSkpID09IDAgPyBfU3RyaW5nIDogMCk7IH0gfQ0KI2xpbmUgMjM0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJy
bm9fdCBfX2NkZWNsIF9zdHJsd3Jfc19sKA0KICAgICAgY2hhciogICAgIF9TdHJpbmcsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICBfU2l6ZSwNCiAgICAgICAgICAgICAgICAg
ICAgICBfbG9jYWxlX3QgX0xvY2FsZQ0KICAgICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRl
IDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX3N0cmx3cl9zX2woICBjaGFy
ICgmX1N0cmluZylbX1NpemVdLCAgIF9sb2NhbGVfdCBfTG9jYWxlKSB0aHJvdygpIHsgcmV0dXJu
IF9zdHJsd3Jfc19sKF9TdHJpbmcsIF9TaXplLCBfTG9jYWxlKTsgfSB9DQojbGluZSAyNDcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0cmluZy5oIg0KDQpfX2lubGluZSBjaGFyKiBfX2NkZWNsIF9faW5zZWN1
cmVfX3N0cmx3cl9sKCAgY2hhciAqX1N0cmluZywgICBfbG9jYWxlX3QgX0xvY2FsZSkgeyBjaGFy
KiBfX2NkZWNsIF9zdHJsd3JfbCggIGNoYXIgKl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUp
OyByZXR1cm4gX3N0cmx3cl9sKF9TdHJpbmcsIF9Mb2NhbGUpOyB9IGV4dGVybiAiQysrIiB7IHRl
bXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF9zdHJsd3JfbChfVCAm
X1N0cmluZywgICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJl
X19zdHJsd3JfbChzdGF0aWNfY2FzdDxjaGFyICo+KF9TdHJpbmcpLCBfTG9jYWxlKTsgfSB0ZW1w
bGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgY2hhciogX19jZGVjbCBfc3RybHdyX2woY29uc3Qg
X1QgJl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpIHRocm93KCkgeyByZXR1cm4gX19pbnNl
Y3VyZV9fc3RybHdyX2woc3RhdGljX2Nhc3Q8Y2hhciAqPihfU3RyaW5nKSwgX0xvY2FsZSk7IH0g
dGVtcGxhdGUgPD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF9zdHJsd3JfbCggIGNoYXIgKiAmX1N0
cmluZywgICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX19z
dHJsd3JfbChfU3RyaW5nLCBfTG9jYWxlKTsgfSB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxp
bmUgY2hhciogX19jZGVjbCBfc3RybHdyX2woICBjaGFyICgmX1N0cmluZylbX1NpemVdLCAgIF9s
b2NhbGVfdCBfTG9jYWxlKSB0aHJvdygpIHsgcmV0dXJuICgoX3N0cmx3cl9zX2woX1N0cmluZywg
X1NpemUsIF9Mb2NhbGUpKSA9PSAwID8gX1N0cmluZyA6IDApOyB9IHRlbXBsYXRlIDw+IGlubGlu
ZSAgY2hhciogX19jZGVjbCBfc3RybHdyX2w8MT4oY2hhciAoJl9TdHJpbmcpWzFdLCAgIF9sb2Nh
bGVfdCBfTG9jYWxlKSB0aHJvdygpIHsgcmV0dXJuICgoX3N0cmx3cl9zX2woX1N0cmluZywgMSwg
X0xvY2FsZSkpID09IDAgPyBfU3RyaW5nIDogMCk7IH0gfQ0KI2xpbmUgMjU0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxzdHJpbmcuaCINCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4g
aW5saW5lIGVycm5vX3QgX19jZGVjbCBzdHJuY2F0X3MoICBjaGFyICgmX0Rlc3RpbmF0aW9uKVtf
U2l6ZV0sICAgY2hhciBjb25zdCogX1NvdXJjZSwgICBzaXplX3QgX0NvdW50KSB0aHJvdygpIHsg
cmV0dXJuIHN0cm5jYXRfcyhfRGVzdGluYXRpb24sIF9TaXplLCBfU291cmNlLCBfQ291bnQpOyB9
IH0NCiNsaW5lIDI2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RyaW5nLmgiDQoNCiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgY2hhciogX19jZGVjbCBzdHJuY2F0KCAgY2hhciAqX0Rlc3RpbmF0aW9uLCAgIGNo
YXIgY29uc3QqIF9Tb3VyY2UsICAgc2l6ZV90IF9Db3VudCk7DQojbGluZSAyNjkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHN0cmluZy5oIg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wg
c3RybmNtcCgNCiAgICAgIGNoYXIgY29uc3QqIF9TdHIxLA0KICAgICAgY2hhciBjb25zdCogX1N0
cjIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgX01heENvdW50DQog
ICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9zdHJuaWNtcCgN
CiAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcxLA0KICAgICAgY2hhciBjb25zdCogX1N0cmluZzIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgX01heENvdW50DQogICAg
KTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9zdHJuaWNtcF9sKA0K
ICAgICAgY2hhciBjb25zdCogX1N0cmluZzEsDQogICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nMiwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBfTWF4Q291bnQsDQogICAg
ICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBfTG9jYWxlDQogICAgKTsNCg0KIA0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9zdHJuaWNvbGwoDQogICAgICBjaGFyIGNv
bnN0KiBfU3RyaW5nMSwNCiAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcyLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9NYXhDb3VudA0KICAgICk7DQoNCiANCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfc3Rybmljb2xsX2woDQogICAgICBjaGFyIGNv
bnN0KiBfU3RyaW5nMSwNCiAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcyLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9NYXhDb3VudCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9sb2NhbGVfdCAgIF9Mb2NhbGUNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgaW50IF9fY2RlY2wgX3N0cm5jb2xsKA0KICAgICAgY2hhciBjb25zdCogX1N0cmluZzEs
DQogICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICAgICBfTWF4Q291bnQNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50IF9fY2RlY2wgX3N0cm5jb2xsX2woDQogICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nMSwN
CiAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAgICAgIF9NYXhDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVf
dCAgIF9Mb2NhbGUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2Rl
Y2wgX19zdHJuY250KA0KICAgICAgY2hhciBjb25zdCogX1N0cmluZywNCiAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgICAgICBfQ291bnQNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0
ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIHN0cm5jcHlfcyhj
aGFyICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0sICAgY2hhciBjb25zdCogX1NvdXJjZSwgICBzaXpl
X3QgX0NvdW50KSB0aHJvdygpIHsgcmV0dXJuIHN0cm5jcHlfcyhfRGVzdGluYXRpb24sIF9TaXpl
LCBfU291cmNlLCBfQ291bnQpOyB9IH0NCiNsaW5lIDMzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RyaW5n
LmgiDQoNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciogX19jZGVjbCBzdHJuY3B5KCAgICBj
aGFyICpfRGVzdGluYXRpb24sICAgY2hhciBjb25zdCogX1NvdXJjZSwgICBzaXplX3QgX0NvdW50
KTsNCiNsaW5lIDM0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RyaW5nLmgiDQoNCiANCg0KI2xpbmUgMzQ3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KI2xpbmUgMzUxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dHJpbmcuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgX19jZGVjbCBzdHJubGVuKA0K
ICAgICAgY2hhciBjb25zdCogX1N0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgICAgICBfTWF4Q291bnQNCiAgICApOw0KDQoNCg0KICAgICANCiAgICANCiNsaW5lIDM2
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcc3RyaW5nLmgiDQogICAgDQojbGluZSAzNjcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0cmluZy5oIg0KICAgIHN0YXRpYyBfX2lubGluZSBzaXplX3QgX19jZGVjbCBzdHJubGVu
X3MoDQogICAgICAgICAgY2hhciBjb25zdCogX1N0cmluZywNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICAgICAgX01heENvdW50DQogICAgICAgICkNCiAgICB7DQogICAg
ICAgIHJldHVybiBfU3RyaW5nID09IDAgPyAwIDogc3RybmxlbihfU3RyaW5nLCBfTWF4Q291bnQp
Ow0KICAgIH0NCg0KI2xpbmUgMzc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9zdHJuc2V0X3MoDQogICAgICBjaGFy
KiAgX1N0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfU2l6
ZUluQnl0ZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgX1ZhbHVl
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9NYXhDb3VudA0KICAg
ICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJu
b190IF9fY2RlY2wgX3N0cm5zZXRfcyggIGNoYXIgKCZfRGVzdGluYXRpb24pW19TaXplXSwgICBp
bnQgX1ZhbHVlLCAgIHNpemVfdCBfQ291bnQpIHRocm93KCkgeyByZXR1cm4gX3N0cm5zZXRfcyhf
RGVzdGluYXRpb24sIF9TaXplLCBfVmFsdWUsIF9Db3VudCk7IH0gfQ0KI2xpbmUgMzkxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2Nk
ZWNsIF9zdHJuc2V0KCAgY2hhciAqX0Rlc3RpbmF0aW9uLCAgIGludCBfVmFsdWUsICAgc2l6ZV90
IF9Db3VudCk7DQojbGluZSAzOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0cmluZy5oIg0KDQogDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgY2hhciBjb25zdCogX19jZGVjbCBzdHJwYnJrKA0KICAgICAgY2hh
ciBjb25zdCogX1N0ciwNCiAgICAgIGNoYXIgY29uc3QqIF9Db250cm9sDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9fY2RlY2wgX3N0cnJldigNCiAgICAgIGNoYXIqIF9T
dHINCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3N0
cnNldF9zKA0KICAgICAgY2hhciogIF9EZXN0aW5hdGlvbiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX0Rlc3RpbmF0aW9uU2l6ZSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgX1ZhbHVlDQogICAgKTsNCg0KZXh0ZXJuICJD
KysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVycm5vX3QgX19jZGVjbCBfc3Ry
c2V0X3MoICBjaGFyICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0sICAgaW50IF9WYWx1ZSkgdGhyb3co
KSB7IHJldHVybiBfc3Ryc2V0X3MoX0Rlc3RpbmF0aW9uLCBfU2l6ZSwgX1ZhbHVlKTsgfSB9DQoj
bGluZSA0MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0cmluZy5oIg0KDQpfX2lubGluZSBjaGFyKiBfX2Nk
ZWNsIF9faW5zZWN1cmVfX3N0cnNldCggY2hhciAqX0Rlc3RpbmF0aW9uLCAgaW50IF9WYWx1ZSkg
eyBjaGFyKiBfX2NkZWNsIF9zdHJzZXQoIGNoYXIgKl9EZXN0aW5hdGlvbiwgIGludCBfVmFsdWUp
OyByZXR1cm4gX3N0cnNldChfRGVzdGluYXRpb24sIF9WYWx1ZSk7IH0gZXh0ZXJuICJDKysiIHsg
dGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgX3N0cnNldChfVCAm
X0Rlc3RpbmF0aW9uLCAgaW50IF9WYWx1ZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX19z
dHJzZXQoc3RhdGljX2Nhc3Q8Y2hhciAqPihfRGVzdGluYXRpb24pLCBfVmFsdWUpOyB9IHRlbXBs
YXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF9zdHJzZXQoY29uc3QgX1Qg
Jl9EZXN0aW5hdGlvbiwgIGludCBfVmFsdWUpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9f
c3Ryc2V0KHN0YXRpY19jYXN0PGNoYXIgKj4oX0Rlc3RpbmF0aW9uKSwgX1ZhbHVlKTsgfSB0ZW1w
bGF0ZSA8PiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgX3N0cnNldCggY2hhciAqICZfRGVzdGluYXRp
b24sICBpbnQgX1ZhbHVlKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3N0cnNldChfRGVz
dGluYXRpb24sIF9WYWx1ZSk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGNoYXIq
IF9fY2RlY2wgX3N0cnNldChjaGFyICgmX0Rlc3RpbmF0aW9uKVtfU2l6ZV0sICBpbnQgX1ZhbHVl
KSB0aHJvdygpIHsgcmV0dXJuICgoX3N0cnNldF9zKF9EZXN0aW5hdGlvbiwgX1NpemUsIF9WYWx1
ZSkpID09IDAgPyBfRGVzdGluYXRpb24gOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIGNoYXIq
IF9fY2RlY2wgX3N0cnNldDwxPihjaGFyICgmX0Rlc3RpbmF0aW9uKVsxXSwgIGludCBfVmFsdWUp
IHRocm93KCkgeyByZXR1cm4gKChfc3Ryc2V0X3MoX0Rlc3RpbmF0aW9uLCAxLCBfVmFsdWUpKSA9
PSAwID8gX0Rlc3RpbmF0aW9uIDogMCk7IH0gfQ0KI2xpbmUgNDI4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dHJpbmcuaCINCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBfX2NkZWNsIHN0cnNw
bigNCiAgICAgIGNoYXIgY29uc3QqIF9TdHIsDQogICAgICBjaGFyIGNvbnN0KiBfQ29udHJvbA0K
ICAgICk7DQoNCiAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciogX19jZGVjbCBzdHJ0b2so
DQogICAgICBjaGFyKiAgICAgICBfU3RyaW5nLA0KICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9E
ZWxpbWl0ZXINCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2Rl
Y2wgX3N0cnVwcl9zKA0KICAgICAgY2hhciogIF9TdHJpbmcsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfU2l6ZQ0KICAgICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxz
aXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX3N0cnVwcl9zKCAgY2hhciAoJl9T
dHJpbmcpW19TaXplXSkgdGhyb3coKSB7IHJldHVybiBfc3RydXByX3MoX1N0cmluZywgX1NpemUp
OyB9IH0NCiNsaW5lIDQ1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RyaW5nLmgiDQoNCl9faW5saW5lIGNo
YXIqIF9fY2RlY2wgX19pbnNlY3VyZV9fc3RydXByKCBjaGFyICpfU3RyaW5nKSB7IGNoYXIqIF9f
Y2RlY2wgX3N0cnVwciggY2hhciAqX1N0cmluZyk7IHJldHVybiBfc3RydXByKF9TdHJpbmcpOyB9
IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICBjaGFyKiBfX2Nk
ZWNsIF9zdHJ1cHIoX1QgJl9TdHJpbmcpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fc3Ry
dXByKHN0YXRpY19jYXN0PGNoYXIgKj4oX1N0cmluZykpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBf
VD4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF9zdHJ1cHIoY29uc3QgX1QgJl9TdHJpbmcpIHRocm93
KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fc3RydXByKHN0YXRpY19jYXN0PGNoYXIgKj4oX1N0cmlu
ZykpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgY2hhciogX19jZGVjbCBfc3RydXByKCBjaGFyICog
Jl9TdHJpbmcpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fc3RydXByKF9TdHJpbmcpOyB9
IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBjaGFyKiBfX2NkZWNsIF9zdHJ1cHIoY2hh
ciAoJl9TdHJpbmcpW19TaXplXSkgdGhyb3coKSB7IHJldHVybiAoKF9zdHJ1cHJfcyhfU3RyaW5n
LCBfU2l6ZSkpID09IDAgPyBfU3RyaW5nIDogMCk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICBjaGFy
KiBfX2NkZWNsIF9zdHJ1cHI8MT4oY2hhciAoJl9TdHJpbmcpWzFdKSB0aHJvdygpIHsgcmV0dXJu
ICgoX3N0cnVwcl9zKF9TdHJpbmcsIDEpKSA9PSAwID8gX1N0cmluZyA6IDApOyB9IH0NCiNsaW5l
IDQ1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcc3RyaW5nLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGVycm5vX3QgX19jZGVjbCBfc3RydXByX3NfbCgNCiAgICAgIGNoYXIqICAgICBfU3RyaW5nLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgX1NpemUsDQogICAgICAgICAgICAg
ICAgICAgICAgX2xvY2FsZV90IF9Mb2NhbGUNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1w
bGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF9zdHJ1cHJfc19sKCAg
Y2hhciAoJl9TdHJpbmcpW19TaXplXSwgICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7IHJl
dHVybiBfc3RydXByX3NfbChfU3RyaW5nLCBfU2l6ZSwgX0xvY2FsZSk7IH0gfQ0KI2xpbmUgNDY5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0KX19pbmxpbmUgY2hhciogX19jZGVjbCBfX2lu
c2VjdXJlX19zdHJ1cHJfbCggIGNoYXIgKl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpIHsg
Y2hhciogX19jZGVjbCBfc3RydXByX2woICBjaGFyICpfU3RyaW5nLCAgIF9sb2NhbGVfdCBfTG9j
YWxlKTsgcmV0dXJuIF9zdHJ1cHJfbChfU3RyaW5nLCBfTG9jYWxlKTsgfSBleHRlcm4gIkMrKyIg
eyB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgY2hhciogX19jZGVjbCBfc3RydXByX2wo
X1QgJl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpIHRocm93KCkgeyByZXR1cm4gX19pbnNl
Y3VyZV9fc3RydXByX2woc3RhdGljX2Nhc3Q8Y2hhciAqPihfU3RyaW5nKSwgX0xvY2FsZSk7IH0g
dGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgX3N0cnVwcl9sKGNv
bnN0IF9UICZfU3RyaW5nLCAgIF9sb2NhbGVfdCBfTG9jYWxlKSB0aHJvdygpIHsgcmV0dXJuIF9f
aW5zZWN1cmVfX3N0cnVwcl9sKHN0YXRpY19jYXN0PGNoYXIgKj4oX1N0cmluZyksIF9Mb2NhbGUp
OyB9IHRlbXBsYXRlIDw+IGlubGluZSAgY2hhciogX19jZGVjbCBfc3RydXByX2woICBjaGFyICog
Jl9TdHJpbmcsICAgX2xvY2FsZV90IF9Mb2NhbGUpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3Vy
ZV9fc3RydXByX2woX1N0cmluZywgX0xvY2FsZSk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4g
aW5saW5lIGNoYXIqIF9fY2RlY2wgX3N0cnVwcl9sKCAgY2hhciAoJl9TdHJpbmcpW19TaXplXSwg
ICBfbG9jYWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiAoKF9zdHJ1cHJfc19sKF9TdHJp
bmcsIF9TaXplLCBfTG9jYWxlKSkgPT0gMCA/IF9TdHJpbmcgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBp
bmxpbmUgIGNoYXIqIF9fY2RlY2wgX3N0cnVwcl9sPDE+KGNoYXIgKCZfU3RyaW5nKVsxXSwgICBf
bG9jYWxlX3QgX0xvY2FsZSkgdGhyb3coKSB7IHJldHVybiAoKF9zdHJ1cHJfc19sKF9TdHJpbmcs
IDEsIF9Mb2NhbGUpKSA9PSAwID8gX1N0cmluZyA6IDApOyB9IH0NCiNsaW5lIDQ3NiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RyaW5nLmgiDQoNCiANCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBf
X2NkZWNsIHN0cnhmcm0oDQogICAgICAgIGNoYXIqICAgICAgIF9EZXN0aW5hdGlvbiwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogX1NvdXJjZSwN
CiAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgX01heENvdW50DQogICAgKTsNCg0KIA0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgX3N0cnhmcm1fbCgNCiAgICAgICAg
Y2hhciogICAgICAgX0Rlc3RpbmF0aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyIGNvbnN0KiBfU291cmNlLA0KICAgICAgICAgICAgICAgICBzaXplX3Qg
ICAgICBfTWF4Q291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
bG9jYWxlX3QgICBfTG9jYWxlDQogICAgKTsNCg0KDQoNCg0KZXh0ZXJuICJDKysiDQp7DQogICAg
IA0KICAgIGlubGluZSBjaGFyKiBfX2NkZWNsIHN0cmNociggIGNoYXIqIGNvbnN0IF9TdHJpbmcs
ICAgaW50IGNvbnN0IF9DaCkNCiAgICB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PGNoYXIq
PihzdHJjaHIoc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KF9TdHJpbmcpLCBfQ2gpKTsNCiAgICB9
DQoNCiAgICAgDQogICAgaW5saW5lIGNoYXIqIF9fY2RlY2wgc3RycGJyayggIGNoYXIqIGNvbnN0
IF9TdHJpbmcsICAgY2hhciBjb25zdCogY29uc3QgX0NvbnRyb2wpDQogICAgew0KICAgICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxjaGFyKj4oc3RycGJyayhzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4o
X1N0cmluZyksIF9Db250cm9sKSk7DQogICAgfQ0KDQogICAgIA0KICAgIGlubGluZSBjaGFyKiBf
X2NkZWNsIHN0cnJjaHIoICBjaGFyKiBjb25zdCBfU3RyaW5nLCAgIGludCBjb25zdCBfQ2gpDQog
ICAgew0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxjaGFyKj4oc3RycmNocihzdGF0aWNfY2Fz
dDxjaGFyIGNvbnN0Kj4oX1N0cmluZyksIF9DaCkpOw0KICAgIH0NCg0KICAgICAgIA0KICAgIGlu
bGluZSBjaGFyKiBfX2NkZWNsIHN0cnN0ciggIGNoYXIqIGNvbnN0IF9TdHJpbmcsICAgY2hhciBj
b25zdCogY29uc3QgX1N1YlN0cmluZykNCiAgICB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0
PGNoYXIqPihzdHJzdHIoc3RhdGljX2Nhc3Q8Y2hhciBjb25zdCo+KF9TdHJpbmcpLCBfU3ViU3Ry
aW5nKSk7DQogICAgfQ0KfQ0KI2xpbmUgNTI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdHJpbmcuaCINCg0K
DQoNCg0KDQogICAgDQogICAgDQogICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJ
WCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08g
QyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3N0cmR1cCIgIi4gU2VlIG9ubGluZSBo
ZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2Nk
ZWNsIHN0cmR1cCgNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nDQogICAgICAgICk7DQog
ICAgDQoNCiAgICANCiAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUg
Zm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFu
ZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfc3RyY21waSIgIi4gU2VlIG9ubGluZSBoZWxwIGZv
ciBkZXRhaWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBzdHJj
bXBpKA0KICAgICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcxLA0KICAgICAgICAgIGNoYXIgY29u
c3QqIF9TdHJpbmcyDQogICAgICAgICk7DQoNCiAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgi
VGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2Ug
dGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfc3RyaWNtcCIgIi4gU2Vl
IG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnQgX19jZGVjbCBzdHJpY21wKA0KICAgICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcxLA0KICAg
ICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcyDQogICAgICAgICk7DQoNCiAgICBfX2RlY2xzcGVj
KGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4g
SW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3N0
cmx3ciIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIHN0cmx3cigNCiAgICAgICAgICBjaGFyKiBfU3RyaW5n
DQogICAgICAgICk7DQoNCiAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5h
bWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIg
ImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfc3RybmljbXAiICIuIFNlZSBvbmxpbmUgaGVs
cCBmb3IgZGV0YWlscy4iKSkNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wg
c3RybmljbXAoDQogICAgICAgICAgY2hhciBjb25zdCogX1N0cmluZzEsDQogICAgICAgICAgY2hh
ciBjb25zdCogX1N0cmluZzIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAgICAgIF9NYXhDb3VudA0KICAgICAgICApOw0KDQogICAgX19kZWNsc3BlYyhkZXByZWNhdGVk
KCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVz
ZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9zdHJuc2V0IiAiLiBT
ZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGNoYXIqIF9fY2RlY2wgc3RybnNldCgNCiAgICAgICAgICBjaGFyKiAgX1N0cmluZywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgX1ZhbHVlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfTWF4Q291bnQNCiAgICAgICAgKTsNCg0KICAg
IF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBk
ZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBu
YW1lOiAiICJfc3RycmV2IiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9fY2RlY2wgc3RycmV2KA0KICAgICAgICAgIGNo
YXIqIF9TdHJpbmcNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhl
IFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhl
IElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfc3Ryc2V0IiAiLiBTZWUgb25s
aW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgY2hhciogX19jZGVjbCBzdHJzZXQoDQogICAg
ICAgICAgY2hhciogX1N0cmluZywNCiAgICAgICAgICAgICAgIGludCAgIF9WYWx1ZSk7DQoNCiAg
ICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMg
ZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQg
bmFtZTogIiAiX3N0cnVwciIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIHN0cnVwcigNCiAgICAgICAgICBj
aGFyKiBfU3RyaW5nDQogICAgICAgICk7DQoNCiNsaW5lIDU4NSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3Ry
aW5nLmgiDQoNCg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkgDQojbGluZSA1OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0cmluZy5oIg0KI2xpbmUgNTkzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdHJpbmcuaCINCiNsaW5lIDEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNzdHJpbmciDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4
KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQx
ODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIz
IDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2
Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCiNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0OTk1KSANCg0KdXNpbmcgOjogc2l6
ZV90Ow0KdXNpbmcgOjogbWVtY2hyOw0KdXNpbmcgOjogbWVtY21wOw0KdXNpbmcgOjogbWVtY3B5
Ow0KdXNpbmcgOjogbWVtbW92ZTsNCnVzaW5nIDo6IG1lbXNldDsNCnVzaW5nIDo6IHN0cmNhdDsN
CnVzaW5nIDo6IHN0cmNocjsNCnVzaW5nIDo6IHN0cmNtcDsNCnVzaW5nIDo6IHN0cmNvbGw7DQp1
c2luZyA6OiBzdHJjcHk7DQp1c2luZyA6OiBzdHJjc3BuOw0KdXNpbmcgOjogc3RyZXJyb3I7DQp1
c2luZyA6OiBzdHJsZW47DQp1c2luZyA6OiBzdHJuY2F0Ow0KdXNpbmcgOjogc3RybmNtcDsNCnVz
aW5nIDo6IHN0cm5jcHk7DQp1c2luZyA6OiBzdHJwYnJrOw0KdXNpbmcgOjogc3RycmNocjsNCnVz
aW5nIDo6IHN0cnNwbjsNCnVzaW5nIDo6IHN0cnN0cjsNCnVzaW5nIDo6IHN0cnRvazsNCnVzaW5n
IDo6IHN0cnhmcm07DQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQp9DQoNCg0KDQojcHJhZ21hIHdh
cm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBvcCkNCg0KI2xpbmUgNTggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3N0cmluZyINCiNsaW5lIDU5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNzdHJpbmci
DQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvU3RkTGliRXh0cmFzLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1lbW9yeSINCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGlvc2Z3ZCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGNzdGRpbyINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQojbGluZSAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVj
cnRfc3RkaW9fY29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI3By
YWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0
NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19w
cmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQojbGluZSAyMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF9zdGRpb19jb25maWcuaCINCg0KDQoNCg0KI2xpbmUgMjYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXGNvcmVjcnRfc3RkaW9fY29uZmlnLmgiDQogICAgDQojbGluZSAyOCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF9zdGRpb19jb25maWcuaCINCg0KDQogICAgDQoNCiNsaW5lIDMzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3N0ZGlvX2NvbmZpZy5oIg0KICAgICAgICANCiAgICANCg0K
I2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfc3RkaW9fY29uZmlnLmgiDQojbGluZSAz
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9zdGRpb19jb25maWcuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXGNvcmVjcnRfc3RkaW9fY29uZmlnLmgiDQoNCg0KDQoNCiNsaW5lIDY3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxjb3JlY3J0X3N0ZGlvX2NvbmZpZy5oIg0KDQogICAgDQogICAgICAgIA0KDQoNCiAgICAg
ICAgICAgICNwcmFnbWEgZGV0ZWN0X21pc21hdGNoKCJfQ1JUX1NURElPX0lTT19XSURFX1NQRUNJ
RklFUlMiLCAiMCIpDQogICAgICAgICNsaW5lIDc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3N0
ZGlvX2NvbmZpZy5oIg0KICAgICNsaW5lIDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3N0ZGlv
X2NvbmZpZy5oIg0KI2xpbmUgNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfc3RkaW9fY29uZmln
LmgiDQoNCg0KDQoNCg0KDQojbGluZSA4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9zdGRpb19j
b25maWcuaCINCg0KDQogICAgDQogICAgDQogICAgICAgDQogICAgDQogICAgX19kZWNsc3BlYyhu
b2lubGluZSkgX19pbmxpbmUgdW5zaWduZWQgX19pbnQ2NCogX19jZGVjbCBfX2xvY2FsX3N0ZGlv
X3ByaW50Zl9vcHRpb25zKHZvaWQpDQogICAgew0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgX19p
bnQ2NCBfT3B0aW9uc1N0b3JhZ2U7DQogICAgICAgIHJldHVybiAmX09wdGlvbnNTdG9yYWdlOw0K
ICAgIH0NCg0KICAgIA0KICAgIA0KICAgICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMobm9pbmxp
bmUpIF9faW5saW5lIHVuc2lnbmVkIF9faW50NjQqIF9fY2RlY2wgX19sb2NhbF9zdGRpb19zY2Fu
Zl9vcHRpb25zKHZvaWQpDQogICAgew0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgX19pbnQ2NCBf
T3B0aW9uc1N0b3JhZ2U7DQogICAgICAgIHJldHVybiAmX09wdGlvbnNTdG9yYWdlOw0KICAgIH0N
CiNsaW5lIDEwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9zdGRpb19jb25maWcuaCINCg0KDQoN
CiNsaW5lIDEwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9zdGRpb19jb25maWcuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkN
Cg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dF93c3RkaW8uaCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcy
NiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0K
DQoNCg0KDQoNCiAgICANCiAgICB0eXBlZGVmIHN0cnVjdCBfaW9idWYNCiAgICB7DQogICAgICAg
IHZvaWQqIF9QbGFjZWhvbGRlcjsNCiAgICB9IEZJTEU7DQojbGluZSAzMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93c3RkaW8uaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEZJTEUqIF9fY2Rl
Y2wgX19hY3J0X2lvYl9mdW5jKHVuc2lnbmVkIF9JeCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgd2ludF90IF9fY2RlY2wgZmdldHdjKA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAg
ICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3aW50X3QgX19jZGVjbCBf
ZmdldHdjaGFyKHZvaWQpOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdpbnRf
dCBfX2NkZWNsIGZwdXR3YygNCiAgICAgICAgICAgICB3Y2hhcl90IF9DaGFyYWN0ZXIsDQogICAg
ICAgICAgRklMRSogICBfU3RyZWFtKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB3aW50X3QgX19jZGVjbCBfZnB1dHdjaGFyKA0KICAgICAgICAgIHdjaGFyX3QgX0NoYXJhY3Rl
cg0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3aW50X3Qg
X19jZGVjbCBnZXR3YygNCiAgICAgICAgICBGSUxFKiBfU3RyZWFtDQogICAgICAgICk7DQoNCiAg
ICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdpbnRfdCBfX2NkZWNsIGdldHdjaGFyKHZv
aWQpOw0KDQoNCiAgICANCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdjaGFyX3Qq
IF9fY2RlY2wgZmdldHdzKA0KICAgICAgICAgIHdjaGFyX3QqIF9CdWZmZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBmcHV0d3MoDQogICAgICAg
ICAgIHdjaGFyX3QgY29uc3QqIF9CdWZmZXIsDQogICAgICAgICAgRklMRSogICAgICAgICAgX1N0
cmVhbQ0KICAgICAgICApOw0KDQogICAgDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB3Y2hhcl90KiBfX2NkZWNsIF9nZXR3c19zKA0KICAgICAgICAgIHdjaGFyX3QqIF9CdWZmZXIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgX0J1ZmZlckNvdW50
DQogICAgICAgICk7DQoNCiAgICBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXpl
PiBpbmxpbmUgICB3Y2hhcl90KiBfX2NkZWNsIF9nZXR3c19zKCB3Y2hhcl90ICgmX0J1ZmZlcilb
X1NpemVdKSB0aHJvdygpIHsgcmV0dXJuIF9nZXR3c19zKF9CdWZmZXIsIF9TaXplKTsgfSB9DQoj
bGluZSAxMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICANCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgcHV0d2MoDQogICAgICAgICAgICAg
d2NoYXJfdCBfQ2hhcmFjdGVyLA0KICAgICAgICAgIEZJTEUqICAgX1N0cmVhbQ0KICAgICAgICAp
Ow0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdpbnRfdCBfX2NkZWNsIHB1dHdj
aGFyKA0KICAgICAgICAgIHdjaGFyX3QgX0NoYXJhY3Rlcg0KICAgICAgICApOw0KDQogICAgDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9wdXR3cygNCiAgICAgICAgICB3
Y2hhcl90IGNvbnN0KiBfQnVmZmVyDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgdW5nZXR3YygNCiAgICAgICAgICAgICB3aW50X3Qg
X0NoYXJhY3RlciwNCiAgICAgICAgICBGSUxFKiAgX1N0cmVhbQ0KICAgICAgICApOw0KDQogICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBGSUxFICogX19jZGVjbCBfd2Zkb3BlbigNCiAg
ICAgICAgICAgIGludCAgICAgICAgICAgIF9GaWxlSGFuZGxlLA0KICAgICAgICAgIHdjaGFyX3Qg
Y29uc3QqIF9Nb2RlDQogICAgICAgICk7DQoNCiAgICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBGSUxFKiBfX2NkZWNsIF93Zm9wZW4oDQogICAgICAgICAgd2NoYXJfdCBjb25zdCogX0Zp
bGVOYW1lLA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Nb2RlDQogICAgICAgICk7DQoNCiAg
ICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF93Zm9wZW5fcygN
CiAgICAgICAgICBGSUxFKiogICAgICAgICBfU3RyZWFtLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIF9Nb2RlDQogICAgICAgICk7DQoNCiAgICAgDQogICAgDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEZJTEUqIF9fY2RlY2wgX3dmcmVvcGVuKA0KICAgICAg
ICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgICAgIHdjaGFyX3QgY29uc3Qq
IF9Nb2RlLA0KICAgICAgICAgIEZJTEUqICAgICAgICAgIF9PbGRTdHJlYW0NCiAgICAgICAgKTsN
Cg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3dmcmVv
cGVuX3MoDQogICAgICAgICAgRklMRSoqICAgICAgICAgX1N0cmVhbSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfTW9kZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGSUxFKiAgICAgICAgICBfT2xkU3RyZWFtDQogICAgICAgICk7DQoNCiAgICAgDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEZJTEUqIF9fY2RlY2wgX3dmc29wZW4oDQogICAgICAg
ICAgd2NoYXJfdCBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9N
b2RlLA0KICAgICAgICAgICAgaW50ICAgICAgICAgICAgX1NoRmxhZw0KICAgICAgICApOw0KDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19jZGVjbCBfd3BlcnJvcigNCiAgICAgICAg
ICB3Y2hhcl90IGNvbnN0KiBfRXJyb3JNZXNzYWdlDQogICAgICAgICk7DQoNCiAgICANCg0KICAg
ICAgICAgDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBGSUxFKiBfX2NkZWNsIF93cG9w
ZW4oDQogICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Db21tYW5kLA0KICAgICAgICAgICAg
ICB3Y2hhcl90IGNvbnN0KiBfTW9kZQ0KICAgICAgICAgICAgKTsNCg0KICAgICNsaW5lIDE4MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBpbnQgX19jZGVjbCBfd3JlbW92ZSgNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRmls
ZU5hbWUNCiAgICAgICAgKTsNCg0KICAgIA0KICAgIA0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBfX2RlY2xzcGVjKGFsbG9jYXRvcikgd2NoYXJfdCogX19jZGVjbCBfd3RlbXBu
YW0oDQogICAgICAgICAgd2NoYXJfdCBjb25zdCogX0RpcmVjdG9yeSwNCiAgICAgICAgICB3Y2hh
cl90IGNvbnN0KiBfRmlsZVByZWZpeA0KICAgICAgICApOw0KDQogICAgDQoNCiAgICAgDQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfd3RtcG5hbV9zKA0K
ICAgICAgICAgIHdjaGFyX3QqIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICAgX0J1ZmZlckNvdW50DQogICAgICAgICk7DQoNCiAgICBleHRlcm4gIkMr
KyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgICBlcnJub190IF9fY2RlY2wgX3d0
bXBuYW1fcyggd2NoYXJfdCAoJl9CdWZmZXIpW19TaXplXSkgdGhyb3coKSB7IHJldHVybiBfd3Rt
cG5hbV9zKF9CdWZmZXIsIF9TaXplKTsgfSB9DQojbGluZSAyMDkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNv
cmVjcnRfd3N0ZGlvLmgiDQoNCiAgICBfX2lubGluZSAgd2NoYXJfdCogX19jZGVjbCBfX2luc2Vj
dXJlX193dG1wbmFtKCAgd2NoYXJfdCAqX0J1ZmZlcikgeyAgd2NoYXJfdCogX19jZGVjbCBfd3Rt
cG5hbSggIHdjaGFyX3QgKl9CdWZmZXIpOyByZXR1cm4gX3d0bXBuYW0oX0J1ZmZlcik7IH0gZXh0
ZXJuICJDKysiIHsgdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICB3Y2hhcl90KiBfX2Nk
ZWNsIF93dG1wbmFtKF9UICZfQnVmZmVyKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3d0
bXBuYW0oc3RhdGljX2Nhc3Q8d2NoYXJfdCAqPihfQnVmZmVyKSk7IH0gdGVtcGxhdGUgPHR5cGVu
YW1lIF9UPiBpbmxpbmUgICB3Y2hhcl90KiBfX2NkZWNsIF93dG1wbmFtKGNvbnN0IF9UICZfQnVm
ZmVyKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3d0bXBuYW0oc3RhdGljX2Nhc3Q8d2No
YXJfdCAqPihfQnVmZmVyKSk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICAgd2NoYXJfdCogX19jZGVj
bCBfd3RtcG5hbSggIHdjaGFyX3QgKiAmX0J1ZmZlcikgdGhyb3coKSB7IHJldHVybiBfX2luc2Vj
dXJlX193dG1wbmFtKF9CdWZmZXIpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSAg
d2NoYXJfdCogX19jZGVjbCBfd3RtcG5hbSh3Y2hhcl90ICgmX0J1ZmZlcilbX1NpemVdKSB0aHJv
dygpIHsgcmV0dXJuICgoX3d0bXBuYW1fcyhfQnVmZmVyLCBfU2l6ZSkpID09IDAgPyBfQnVmZmVy
IDogMCk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICAgd2NoYXJfdCogX19jZGVjbCBfd3RtcG5hbTwx
Pih3Y2hhcl90ICgmX0J1ZmZlcilbMV0pIHRocm93KCkgeyByZXR1cm4gKChfd3RtcG5hbV9zKF9C
dWZmZXIsIDEpKSA9PSAwID8gX0J1ZmZlciA6IDApOyB9IH0NCiNsaW5lIDIxNSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgX2ZnZXR3
Y19ub2xvY2soDQogICAgICAgICAgRklMRSogX1N0cmVhbQ0KICAgICAgICApOw0KDQogICAgDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdpbnRfdCBfX2NkZWNsIF9mcHV0d2Nfbm9sb2NrKA0K
ICAgICAgICAgICAgIHdjaGFyX3QgX0NoYXJhY3RlciwNCiAgICAgICAgICBGSUxFKiAgIF9TdHJl
YW0NCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3aW50X3Qg
X19jZGVjbCBfZ2V0d2Nfbm9sb2NrKA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAg
KTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3aW50X3QgX19jZGVjbCBfcHV0
d2Nfbm9sb2NrKA0KICAgICAgICAgICAgIHdjaGFyX3QgX0NoYXJhY3RlciwNCiAgICAgICAgICBG
SUxFKiAgIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSB3aW50X3QgX19jZGVjbCBfdW5nZXR3Y19ub2xvY2soDQogICAgICAgICAgICAgd2ludF90
IF9DaGFyYWN0ZXIsDQogICAgICAgICAgRklMRSogIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAg
IA0KDQoNCg0KI2xpbmUgMjU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQoN
Cg0KICAgIA0KICAgIA0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX19zdGRpb19jb21tb25f
dmZ3cHJpbnRmKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgX19pbnQ2NCBfT3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUqICAgICAgICAgICAgX1N0cmVhbSwNCiAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICBfQXJnTGlzdA0KICAgICAg
ICApOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fc3Rk
aW9fY29tbW9uX3Zmd3ByaW50Zl9zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBfT3B0aW9ucywNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgICAgICAgX1N0cmVhbSwNCiAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICBfQXJn
TGlzdA0KICAgICAgICApOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBf
X2NkZWNsIF9fc3RkaW9fY29tbW9uX3Zmd3ByaW50Zl9wKA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBfT3B0aW9ucywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgICAgICAgX1N0
cmVhbSwNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqICAgX0Zvcm1hdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAg
ICAgICAgICBfQXJnTGlzdA0KICAgICAgICApOw0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9f
Y2RlY2wgX3Zmd3ByaW50Zl9sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRklMRSogICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIHdjaGFyX3Qg
Y29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlz
dA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDMwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfX3N0ZGlvX2NvbW1vbl92ZndwcmludGYo
KCpfX2xvY2FsX3N0ZGlvX3ByaW50Zl9vcHRpb25zKCkpLCBfU3RyZWFtLCBfRm9ybWF0LCBfTG9j
YWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDMxMiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29y
ZWNydF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIHZmd3ByaW50
ZigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSogICAgICAgICAgY29uc3Qg
X1N0cmVhbSwNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9B
cmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMzIyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92ZndwcmludGZfbChfU3RyZWFt
LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDMyNiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNs
IF92ZndwcmludGZfc19sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRklMRSogICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIHdjaGFyX3QgY29u
c3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0K
ICAgICAgICApDQogICAgDQoNCiNsaW5lIDMzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Rk
aW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfX3N0ZGlvX2NvbW1vbl92ZndwcmludGZfcygo
Kl9fbG9jYWxfc3RkaW9fcHJpbnRmX29wdGlvbnMoKSksIF9TdHJlYW0sIF9Gb3JtYXQsIF9Mb2Nh
bGUsIF9BcmdMaXN0KTsNCiAgICB9DQogICAgI2xpbmUgMzQxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dzdGRpby5oIg0KDQogICAgDQoNCiAgICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBf
X2NkZWNsIHZmd3ByaW50Zl9zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RklMRSogICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgICAgICB3Y2hhcl90IGNv
bnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgICAgICkNCiAgICAN
Cg0KI2xpbmUgMzUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgICAgICB7
DQogICAgICAgICAgICByZXR1cm4gX3Zmd3ByaW50Zl9zX2woX1N0cmVhbSwgX0Zvcm1hdCwgMCwg
X0FyZ0xpc3QpOw0KICAgICAgICB9DQogICAgI2xpbmUgMzU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dzdGRpby5oIg0KDQogICAgI2xpbmUgMzU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dz
dGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zmd3ByaW50Zl9wX2wo
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFKiAgICAgICAg
ICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1h
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAg
ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICAN
Cg0KI2xpbmUgMzcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIF9fc3RkaW9fY29tbW9uX3Zmd3ByaW50Zl9wKCgqX19sb2NhbF9zdGRpb19w
cmludGZfb3B0aW9ucygpKSwgX1N0cmVhbSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0K
ICAgIH0NCiAgICAjbGluZSAzNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoN
CiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdmZ3cHJpbnRmX3AoDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgICAgIGNvbnN0IF9TdHJlYW0sDQogICAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAg
ICApDQogICAgDQoNCiNsaW5lIDM4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCIN
CiAgICB7DQogICAgICAgIHJldHVybiBfdmZ3cHJpbnRmX3BfbChfU3RyZWFtLCBfRm9ybWF0LCAw
LCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDM4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92d3ByaW50Zl9s
KA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2Fs
ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xp
c3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMzk4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92
ZndwcmludGZfbCgoX19hY3J0X2lvYl9mdW5jKDEpKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xp
c3QpOw0KICAgIH0NCiAgICAjbGluZSA0MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlv
LmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCB2d3ByaW50ZigNCiAgICAgICAg
ICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkN
CiAgICANCg0KI2xpbmUgNDExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAg
IHsNCiAgICAgICAgcmV0dXJuIF92ZndwcmludGZfbCgoX19hY3J0X2lvYl9mdW5jKDEpKSwgX0Zv
cm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGluZSA0MTUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdndw
cmludGZfc19sKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29u
c3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xp
bmUgNDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAg
cmV0dXJuIF92ZndwcmludGZfc19sKChfX2FjcnRfaW9iX2Z1bmMoMSkpLCBfRm9ybWF0LCBfTG9j
YWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDQyOSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29y
ZWNydF93c3RkaW8uaCINCg0KICAgIA0KDQogICAgICAgIA0KICAgICAgICBfX2lubGluZSBpbnQg
X19jZGVjbCB2d3ByaW50Zl9zKA0KICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0
IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9s
aXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICAgICAgKQ0KICAgIA0KDQojbGluZSA0
NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgICAgIHsNCiAgICAgICAg
ICAgIHJldHVybiBfdmZ3cHJpbnRmX3NfbCgoX19hY3J0X2lvYl9mdW5jKDEpKSwgX0Zvcm1hdCwg
MCwgX0FyZ0xpc3QpOw0KICAgICAgICB9DQogICAgI2xpbmUgNDQ0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxj
b3JlY3J0X3dzdGRpby5oIg0KDQogICAgI2xpbmUgNDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0
X3dzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Z3cHJpbnRmX3Bf
bCgNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2Nh
bGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9s
aXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDQ1NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBf
dmZ3cHJpbnRmX3BfbCgoX19hY3J0X2lvYl9mdW5jKDEpKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0Fy
Z0xpc3QpOw0KICAgIH0NCiAgICAjbGluZSA0NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0
ZGlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdndwcmludGZfcCgNCiAg
ICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAg
ICAgICkNCiAgICANCg0KI2xpbmUgNDY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5o
Ig0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92ZndwcmludGZfcF9sKChfX2FjcnRfaW9iX2Z1bmMo
MSkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDQ3MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2Nk
ZWNsIF9md3ByaW50Zl9sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRklMRSogICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIHdjaGFyX3QgY29u
c3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgIC4uLikNCiAgICANCg0K
I2xpbmUgNDgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAg
ICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9p
ZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Mb2Nh
bGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7DQogICAg
ICAgIF9SZXN1bHQgPSBfdmZ3cHJpbnRmX2woX1N0cmVhbSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0Fy
Z0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAg
ICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgNDkyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxj
b3JlY3J0X3dzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgZndwcmlu
dGYoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgICAgIGNvbnN0
IF9TdHJlYW0sDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAg
ICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDUwMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Rk
aW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdM
aXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVy
ZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwg
X0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmd3ByaW50Zl9sKF9TdHJlYW0sIF9G
b3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0
KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDUxMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBf
X2NkZWNsIF9md3ByaW50Zl9zX2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGSUxFKiAgICAgICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgd2NoYXJf
dCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KICAg
IA0KDQojbGluZSA1MjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0K
ICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAg
KCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUo
X0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsN
CiAgICAgICAgX1Jlc3VsdCA9IF92ZndwcmludGZfc19sKF9TdHJlYW0sIF9Gb3JtYXQsIF9Mb2Nh
bGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsN
CiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDUyOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KDQogICAgICAgIA0KICAgICAgICBfX2lu
bGluZSBpbnQgX19jZGVjbCBmd3ByaW50Zl9zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRSogICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgICAgICB3
Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgLi4uKQ0KICAgIA0KDQoj
bGluZSA1NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgICAgIHsNCiAg
ICAgICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAg
ICAgICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNl
PGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9y
bWF0KSkpKSk7DQogICAgICAgICAgICBfUmVzdWx0ID0gX3Zmd3ByaW50Zl9zX2woX1N0cmVhbSwg
X0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2
YV9saXN0KTApKTsNCiAgICAgICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgICAgICB9DQogICAg
I2xpbmUgNTQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgI2xpbmUg
NTUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxp
bmUgaW50IF9fY2RlY2wgX2Z3cHJpbnRmX3BfbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZJTEUqICAgICAgICAgIGNvbnN0IF9TdHJlYW0sDQogICAgICAgICAg
ICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAu
Li4pDQogICAgDQoNCiNsaW5lIDU2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCIN
CiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0K
ICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxk
ZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2Fs
ZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmd3ByaW50Zl9wX2woX1N0cmVhbSwgX0Zvcm1h
dCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xp
c3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgNTcwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50
IF9fY2RlY2wgX2Z3cHJpbnRmX3AoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJ
TEUqICAgICAgICAgIGNvbnN0IF9TdHJlYW0sDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBj
b25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDU3OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAg
ICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFf
c3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3Zh
X3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmd3By
aW50Zl9wX2woX1N0cmVhbSwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQp
KF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9
DQogICAgI2xpbmUgNTg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAg
DQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3dwcmludGZfbCgNCiAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgIC4uLikNCiAg
ICANCg0KI2xpbmUgNTk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsN
CiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAg
ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBl
KF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7
DQogICAgICAgIF9SZXN1bHQgPSBfdmZ3cHJpbnRmX2woKF9fYWNydF9pb2JfZnVuYygxKSksIF9G
b3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2
YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDYw
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5l
IGludCBfX2NkZWNsIHdwcmludGYoDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBf
Rm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDYxNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2
YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRf
aXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0
KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmd3ByaW50Zl9s
KChfX2FjcnRfaW9iX2Z1bmMoMSkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICgo
dm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0K
ICAgIH0NCiAgICAjbGluZSA2MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoN
CiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfd3ByaW50Zl9zX2woDQogICAgICAgICAg
ICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAu
Li4pDQogICAgDQoNCiNsaW5lIDYzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCIN
CiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0K
ICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxk
ZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2Fs
ZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmd3ByaW50Zl9zX2woKF9fYWNydF9pb2JfZnVu
YygxKSksIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJn
TGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAg
ICNsaW5lIDY0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KDQog
ICAgICAgIA0KICAgICAgICBfX2lubGluZSBpbnQgX19jZGVjbCB3cHJpbnRmX3MoDQogICAgICAg
ICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgIC4uLikN
CiAgICANCg0KI2xpbmUgNjUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAg
ICAgICB7DQogICAgICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgICAgIHZhX2xpc3QgX0Fy
Z0xpc3Q7DQogICAgICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90
X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJn
TGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICAgICAgX1Jlc3VsdCA9IF92ZndwcmludGZfc19s
KChfX2FjcnRfaW9iX2Z1bmMoMSkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICAg
ICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICAgICAgcmV0dXJuIF9S
ZXN1bHQ7DQogICAgICAgIH0NCiAgICAjbGluZSA2NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRf
d3N0ZGlvLmgiDQoNCiAgICAjbGluZSA2NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlv
LmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfd3ByaW50Zl9wX2woDQogICAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAg
ICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDY3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Rk
aW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdM
aXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVy
ZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwg
X0xvY2FsZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmd3ByaW50Zl9wX2woKF9fYWNydF9p
b2JfZnVuYygxKSksIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lk
KShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAg
fQ0KICAgICNsaW5lIDY4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAg
IA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF93cHJpbnRmX3AoDQogICAgICAgICAgICB3Y2hh
cl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDY4
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBf
UmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNy
dF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwg
KCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVz
dWx0ID0gX3Zmd3ByaW50Zl9wX2woKF9fYWNydF9pb2JfZnVuYygxKSksIF9Gb3JtYXQsIDAsIF9B
cmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAg
ICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDY5NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydF93c3RkaW8uaCINCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fc3RkaW9fY29tbW9uX3Zm
d3NjYW5mKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBfX2ludDY0IF9PcHRpb25zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGSUxFKiAgICAgICAgICAgIF9TdHJlYW0sDQogICAgICAgICAgICB3Y2hhcl90IGNv
bnN0KiAgIF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICk7DQoN
CiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdmZ3c2NhbmZfbCgNCiAgICAgICAgICBG
SUxFKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0FyZ0xpc3QNCiAg
ICAgICAgKQ0KICAgIA0KDQojbGluZSA3MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlv
LmgiDQogICAgew0KICAgICAgICByZXR1cm4gX19zdGRpb19jb21tb25fdmZ3c2NhbmYoDQogICAg
ICAgICAgICAoKl9fbG9jYWxfc3RkaW9fc2NhbmZfb3B0aW9ucyAoKSksDQogICAgICAgICAgICBf
U3RyZWFtLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDcy
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5l
IGludCBfX2NkZWNsIHZmd3NjYW5mKA0KICAgICAgICAgIEZJTEUqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCog
Y29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFf
bGlzdCAgICAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSA3Mzkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4g
X3Zmd3NjYW5mX2woX1N0cmVhbSwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAj
bGluZSA3NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICANCiAgICBf
X2lubGluZSBpbnQgX19jZGVjbCBfdmZ3c2NhbmZfc19sKA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGSUxFKiAgICAgICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQog
ICAgDQoNCiNsaW5lIDc1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7
DQogICAgICAgIHJldHVybiBfX3N0ZGlvX2NvbW1vbl92ZndzY2FuZigNCiAgICAgICAgICAgICgq
X19sb2NhbF9zdGRpb19zY2FuZl9vcHRpb25zICgpKSB8ICgxVUxMIDw8IDApLA0KICAgICAgICAg
ICAgX1N0cmVhbSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGlu
ZSA3NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICANCg0KICAgICAg
ICANCiAgICAgICAgX19pbmxpbmUgaW50IF9fY2RlY2wgdmZ3c2NhbmZfcygNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgICAgIGNvbnN0IF9TdHJlYW0sDQog
ICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdM
aXN0DQogICAgICAgICAgICApDQogICAgDQoNCiNsaW5lIDc3MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29y
ZWNydF93c3RkaW8uaCINCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIF92ZndzY2FuZl9z
X2woX1N0cmVhbSwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICB9DQogICAgI2xpbmUg
Nzc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgI2xpbmUgNzc4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgX19pbmxpbmUgaW50IF9fY2Rl
Y2wgX3Z3c2NhbmZfbCgNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xv
Y2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAg
ICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSA3ODcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3Zmd3NjYW5m
X2woKF9fYWNydF9pb2JfZnVuYygwKSksIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAg
ICB9DQogICAgI2xpbmUgNzkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQog
ICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgdndzY2FuZigNCiAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0K
I2xpbmUgODAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIF92ZndzY2FuZl9sKChfX2FjcnRfaW9iX2Z1bmMoMCkpLCBfRm9ybWF0LCAwLCBf
QXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDgwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92d3NjYW5mX3NfbCgN
CiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0FyZ0xp
c3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSA4MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRf
d3N0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3Zmd3NjYW5mX3NfbCgoX19hY3J0X2lv
Yl9mdW5jKDApKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGlu
ZSA4MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICANCg0KICAgICAg
ICANCiAgICAgICAgX19pbmxpbmUgaW50IF9fY2RlY2wgdndzY2FuZl9zKA0KICAgICAgICAgICAg
ICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAg
ICAgICAgKQ0KICAgIA0KDQojbGluZSA4MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlv
LmgiDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfdmZ3c2NhbmZfc19sKChfX2FjcnRf
aW9iX2Z1bmMoMCkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgIH0NCiAgICAjbGlu
ZSA4MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAjbGluZSA4MzUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgX19pbmxpbmUg
aW50IF9fY2RlY2wgX2Z3c2NhbmZfbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRSogICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KICAg
IA0KDQojbGluZSA4NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0K
ICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAg
KCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUo
X0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsN
CiAgICAgICAgX1Jlc3VsdCA9IF92ZndzY2FuZl9sKF9TdHJlYW0sIF9Gb3JtYXQsIF9Mb2NhbGUs
IF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAg
ICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDg1NCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wg
ZndzY2FuZigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFKiAgICAgICAgICBj
b25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwN
CiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSA4NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRf
d3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBf
QXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9y
ZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xp
c3QsIF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92ZndzY2FuZl9sKF9TdHJlYW0s
IF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9s
aXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDg3MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGlu
dCBfX2NkZWNsIF9md3NjYW5mX3NfbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGSUxFKiAgICAgICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgIC4uLikN
CiAgICANCg0KI2xpbmUgODgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAg
IHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAg
ICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0
eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkp
KSk7DQogICAgICAgIF9SZXN1bHQgPSBfdmZ3c2NhbmZfc19sKF9TdHJlYW0sIF9Gb3JtYXQsIF9M
b2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTAp
KTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDg5MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgIA0KDQogICAgICAgIA0KICAgICAgICBf
X2lubGluZSBpbnQgX19jZGVjbCBmd3NjYW5mX3MoDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRklMRSogICAgICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgICAg
ICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgLi4uKQ0KICAgIA0K
DQojbGluZSA5MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgICAgIHsN
CiAgICAgICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsN
CiAgICAgICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJl
bmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBf
Rm9ybWF0KSkpKSk7DQogICAgICAgICAgICBfUmVzdWx0ID0gX3Zmd3NjYW5mX3NfbChfU3RyZWFt
LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0g
KHZhX2xpc3QpMCkpOw0KICAgICAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgICAgIH0NCiAg
ICAjbGluZSA5MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAjbGlu
ZSA5MTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgX19p
bmxpbmUgaW50IF9fY2RlY2wgX3dzY2FuZl9sKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCog
Y29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
bG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5l
IDkyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGlu
dCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9f
dmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4o
KSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KICAgICAgICBf
UmVzdWx0ID0gX3Zmd3NjYW5mX2woKF9fYWNydF9pb2JfZnVuYygwKSksIF9Gb3JtYXQsIF9Mb2Nh
bGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsN
CiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDkzMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICAgDQogICAgX19pbmxpbmUgaW50IF9fY2Rl
Y2wgd3NjYW5mKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAg
ICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSA5MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0
ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJn
TGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZl
cmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3Qs
IF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92ZndzY2FuZl9sKChfX2FjcnRfaW9i
X2Z1bmMoMCkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xp
c3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAj
bGluZSA5NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICANCiAgICBf
X2lubGluZSBpbnQgX19jZGVjbCBfd3NjYW5mX3NfbCgNCiAgICAgICAgICAgIHdjaGFyX3QgY29u
c3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoN
CiNsaW5lIDk1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAg
ICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZv
aWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9j
YWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KICAg
ICAgICBfUmVzdWx0ID0gX3Zmd3NjYW5mX3NfbCgoX19hY3J0X2lvYl9mdW5jKDApKSwgX0Zvcm1h
dCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xp
c3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgOTY2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgDQoNCiAgICAgICAgDQogICAg
ICAgIF9faW5saW5lIGludCBfX2NkZWNsIHdzY2FuZl9zKA0KICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5l
IDk3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICAgICAgew0KICAgICAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAg
ICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVj
bHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQp
KSkpKTsNCiAgICAgICAgICAgIF9SZXN1bHQgPSBfdmZ3c2NhbmZfc19sKChfX2FjcnRfaW9iX2Z1
bmMoMCkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICAgICAoKHZvaWQpKF9BcmdM
aXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgICAg
IH0NCiAgICAjbGluZSA5ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAg
ICAjbGluZSA5ODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCg0KDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgICAgIA0KDQoNCg0KICAgIA0KDQoj
bGluZSAxMDAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX3N0ZGlvX2NvbW1vbl92
c3dwcmludGYoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBfX2ludDY0IF9PcHRpb25zLA0KICAgICAgICAgICAgICAgICB3Y2hhcl90KiAgICAg
ICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICAgICAgICAgIF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgIHdjaGFyX3QgY29u
c3QqICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApOw0K
DQogICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX3N0
ZGlvX2NvbW1vbl92c3dwcmludGZfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQgX09wdGlvbnMsDQogICAgICAgICAgICAgICAg
ICAgICB3Y2hhcl90KiAgICAgICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgIF9CdWZmZXJDb3VudCwNCiAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICBfQXJn
TGlzdA0KICAgICAgICApOw0KDQogICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnQgX19jZGVjbCBfX3N0ZGlvX2NvbW1vbl92c253cHJpbnRmX3MoDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0IF9PcHRpb25z
LA0KICAgICAgICAgICAgICAgICB3Y2hhcl90KiAgICAgICAgIF9CdWZmZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgIF9CdWZm
ZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAgICAgICAgICAgX01heENvdW50LA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogICBf
Rm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxl
X3QgICAgICAgIF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YV9saXN0ICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICk7DQoNCiAgICAg
DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fc3RkaW9fY29t
bW9uX3Zzd3ByaW50Zl9wKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgX19pbnQ2NCBfT3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgIHdj
aGFyX3QqICAgICAgICAgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAg
d2NoYXJfdCBjb25zdCogICBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfbG9jYWxlX3QgICAgICAgIF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgIF9BcmdMaXN0DQog
ICAgICAgICk7DQoNCiAgICAgDQogICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92c253
cHJpbnRmX2woDQogICAgICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAg
ICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3Qq
IGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0Fy
Z0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxMDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IGNvbnN0IF9SZXN1bHQgPSBfX3N0ZGlv
X2NvbW1vbl92c3dwcmludGYoDQogICAgICAgICAgICAoKl9fbG9jYWxfc3RkaW9fcHJpbnRmX29w
dGlvbnMoKSkgfCAoMVVMTCA8PCAwKSwNCiAgICAgICAgICAgIF9CdWZmZXIsIF9CdWZmZXJDb3Vu
dCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KDQogICAgICAgIHJldHVybiBfUmVzdWx0
IDwgMCA/IC0xIDogX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTA2OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19j
ZGVjbCBfdnNud3ByaW50Zl9zX2woDQogICAgICAgICAgIHdjaGFyX3QqICAgICAgIGNvbnN0IF9C
dWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIGNv
bnN0IF9NYXhDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25z
dCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAg
ICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDEwODMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgY29uc3QgX1Jlc3VsdCA9IF9f
c3RkaW9fY29tbW9uX3ZzbndwcmludGZfcygNCiAgICAgICAgICAgICgqX19sb2NhbF9zdGRpb19w
cmludGZfb3B0aW9ucygpKSwNCiAgICAgICAgICAgIF9CdWZmZXIsIF9CdWZmZXJDb3VudCwgX01h
eENvdW50LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQoNCiAgICAgICAgcmV0dXJuIF9S
ZXN1bHQgPCAwID8gLTEgOiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxMDkxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5lIGlu
dCBfX2NkZWNsIF92c253cHJpbnRmX3MoDQogICAgICAgICAgIHdjaGFyX3QqICAgICAgIGNvbnN0
IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAg
IGNvbnN0IF9NYXhDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJf
dCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0K
ICAgICAgICApDQogICAgDQoNCiNsaW5lIDExMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0
ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3ZzbndwcmludGZfc19sKF9CdWZmZXIsIF9C
dWZmZXJDb3VudCwgX01heENvdW50LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0KICAg
ICNsaW5lIDExMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgX19p
bmxpbmUgICBpbnQgX19jZGVjbCBfc253cHJpbnRmKCAgICB3Y2hhcl90ICpfQnVmZmVyLCAgIHNp
emVfdCBfQnVmZmVyQ291bnQsICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0LCAuLi4pOyAgX19p
bmxpbmUgICBpbnQgX19jZGVjbCBfdnNud3ByaW50ZiggICAgd2NoYXJfdCAqX0J1ZmZlciwgICBz
aXplX3QgX0J1ZmZlckNvdW50LCAgICAgd2NoYXJfdCBjb25zdCogX0Zvcm1hdCwgdmFfbGlzdCBf
QXJncyk7DQojbGluZSAxMTE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQog
ICAgIA0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnNud3ByaW50ZigNCiAgICAg
ICAgICAgIHdjaGFyX3QqICAgICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIF9CdWZmZXJDb3VudCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3JtYXQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAg
ICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTEyOSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdnNud3ByaW50Zl9s
KF9CdWZmZXIsIF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAg
ICAjbGluZSAxMTMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgZXh0
ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lICAgaW50IF9fY2RlY2wg
X3ZzbndwcmludGZfcyggd2NoYXJfdCAoJl9CdWZmZXIpW19TaXplXSwgICBzaXplX3QgX0J1ZmZl
ckNvdW50LCAgICAgd2NoYXJfdCBjb25zdCogX0Zvcm1hdCwgdmFfbGlzdCBfQXJnTGlzdCkgdGhy
b3coKSB7IHJldHVybiBfdnNud3ByaW50Zl9zKF9CdWZmZXIsIF9TaXplLCBfQnVmZmVyQ291bnQs
IF9Gb3JtYXQsIF9BcmdMaXN0KTsgfSB9DQojbGluZSAxMTQyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92
c3dwcmludGZfY19sKA0KICAgICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICB3
Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDEx
NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQg
Y29uc3QgX1Jlc3VsdCA9IF9fc3RkaW9fY29tbW9uX3Zzd3ByaW50ZigNCiAgICAgICAgICAgICgq
X19sb2NhbF9zdGRpb19wcmludGZfb3B0aW9ucygpKSwNCiAgICAgICAgICAgIF9CdWZmZXIsIF9C
dWZmZXJDb3VudCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KDQogICAgICAgIHJldHVy
biBfUmVzdWx0IDwgMCA/IC0xIDogX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTE2MyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGlu
ZSBpbnQgX19jZGVjbCBfdnN3cHJpbnRmX2MoDQogICAgICAgICAgIHdjaGFyX3QqICAgICAgIGNv
bnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTE3
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVy
biBfdnN3cHJpbnRmX2NfbChfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIDAsIF9BcmdM
aXN0KTsNCiAgICB9DQogICAgI2xpbmUgMTE3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Rk
aW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnN3cHJpbnRm
X2woDQogICAgICAgICAgIHdjaGFyX3QqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAg
ICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29u
c3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAg
ICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTE5MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdnN3cHJp
bnRmX2NfbChfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0
KTsNCiAgICB9DQogICAgI2xpbmUgMTE5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8u
aCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfX3Zzd3ByaW50Zl9s
KA0KICAgICAgICAgICAgICAgICAgd2NoYXJfdCogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAg
ICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDEyMDggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3Zzd3ByaW50
Zl9sKF9CdWZmZXIsIChzaXplX3QpLTEsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAg
ICB9DQogICAgI2xpbmUgMTIxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0K
ICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnN3cHJpbnRmKA0KICAgICAg
ICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgd2NoYXJf
dCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0K
DQojbGluZSAxMjIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIF92c3dwcmludGZfbChfQnVmZmVyLCAoc2l6ZV90KS0xLCBfRm9ybWF0LCAw
LCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDEyMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVj
cnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgdnN3
cHJpbnRmKA0KICAgICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAg
ICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90
IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQog
ICAgICAgICkNCiAgICANCg0KI2xpbmUgMTIzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Rk
aW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdnN3cHJpbnRmX2NfbChfQnVmZmVyLCBfQnVm
ZmVyQ291bnQsIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQogICAgI2xpbmUgMTI0MyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lu
bGluZSBpbnQgX19jZGVjbCBfdnN3cHJpbnRmX3NfbCgNCiAgICAgICAgICAgd2NoYXJfdCogICAg
ICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAg
ICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2Nh
bGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5l
IDEyNTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBp
bnQgY29uc3QgX1Jlc3VsdCA9IF9fc3RkaW9fY29tbW9uX3Zzd3ByaW50Zl9zKA0KICAgICAgICAg
ICAgKCpfX2xvY2FsX3N0ZGlvX3ByaW50Zl9vcHRpb25zKCkpLA0KICAgICAgICAgICAgX0J1ZmZl
ciwgX0J1ZmZlckNvdW50LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQoNCiAgICAgICAg
cmV0dXJuIF9SZXN1bHQgPCAwID8gLTEgOiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxMjY0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgDQoNCiAgICAgICAgIA0K
ICAgICAgICBfX2lubGluZSBpbnQgX19jZGVjbCB2c3dwcmludGZfcygNCiAgICAgICAgICAgICAg
IHdjaGFyX3QqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZl
ckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBj
b25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICAg
ICApDQogICAgDQoNCiNsaW5lIDEyNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgi
DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfdnN3cHJpbnRmX3NfbChfQnVmZmVyLCBf
QnVmZmVyQ291bnQsIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgfQ0KICAgICNsaW5l
IDEyODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAjbGluZSAxMjgz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgZXh0ZXJuICJDKysiIHsg
dGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lICAgaW50IF9fY2RlY2wgdnN3cHJpbnRmX3Mo
IHdjaGFyX3QgKCZfQnVmZmVyKVtfU2l6ZV0sICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0LCB2
YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsgcmV0dXJuIHZzd3ByaW50Zl9zKF9CdWZmZXIsIF9T
aXplLCBfRm9ybWF0LCBfQXJnTGlzdCk7IH0gfQ0KI2xpbmUgMTI5MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVj
bCBfdnN3cHJpbnRmX3BfbCgNCiAgICAgICAgICAgd2NoYXJfdCogICAgICAgY29uc3QgX0J1ZmZl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAg
ICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDEzMDQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgY29uc3QgX1Jlc3Vs
dCA9IF9fc3RkaW9fY29tbW9uX3Zzd3ByaW50Zl9wKA0KICAgICAgICAgICAgKCpfX2xvY2FsX3N0
ZGlvX3ByaW50Zl9vcHRpb25zKCkpLA0KICAgICAgICAgICAgX0J1ZmZlciwgX0J1ZmZlckNvdW50
LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQoNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQg
PCAwID8gLTEgOiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxMzEyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2Nk
ZWNsIF92c3dwcmludGZfcCgNCiAgICAgICAgICAgd2NoYXJfdCogICAgICAgY29uc3QgX0J1ZmZl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0Fy
Z0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxMzI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92c3dwcmludGZfcF9sKF9CdWZm
ZXIsIF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGlu
ZSAxMzI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgICAN
CiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnNjd3ByaW50Zl9sKA0KICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9B
cmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTMzOSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29y
ZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBjb25zdCBfUmVzdWx0ID0gX19zdGRp
b19jb21tb25fdnN3cHJpbnRmKA0KICAgICAgICAgICAgKCpfX2xvY2FsX3N0ZGlvX3ByaW50Zl9v
cHRpb25zKCkpIHwgKDFVTEwgPDwgMSksDQogICAgICAgICAgICAwLCAwLCBfRm9ybWF0LCBfTG9j
YWxlLCBfQXJnTGlzdCk7DQoNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQgPCAwID8gLTEgOiBfUmVz
dWx0Ow0KICAgIH0NCiAgICAjbGluZSAxMzQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRp
by5oIg0KDQogICAgIA0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnNjd3ByaW50
ZigNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0
DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTM1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdnNjd3ByaW50Zl9sKF9Gb3JtYXQsIDAs
IF9BcmdMaXN0KTsNCiAgICB9DQogICAgI2xpbmUgMTM2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dF93c3RkaW8uaCINCg0KICAgICANCiAgICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zz
Y3dwcmludGZfcF9sKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAg
Y29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0K
I2xpbmUgMTM3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAg
ICAgIGludCBjb25zdCBfUmVzdWx0ID0gX19zdGRpb19jb21tb25fdnN3cHJpbnRmX3AoDQogICAg
ICAgICAgICAoKl9fbG9jYWxfc3RkaW9fcHJpbnRmX29wdGlvbnMoKSkgfCAoMVVMTCA8PCAxKSwN
CiAgICAgICAgICAgIDAsIDAsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCg0KICAgICAg
ICByZXR1cm4gX1Jlc3VsdCA8IDAgPyAtMSA6IF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDEz
ODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgIA0KICAg
IF9faW5saW5lIGludCBfX2NkZWNsIF92c2N3cHJpbnRmX3AoDQogICAgICAgICAgICB3Y2hhcl90
IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNs
aW5lIDEzOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAg
ICByZXR1cm4gX3ZzY3dwcmludGZfcF9sKF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQog
ICAgI2xpbmUgMTM5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICAN
CiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfX3N3cHJpbnRmX2woDQogICAgICAgICAg
ICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgd2NoYXJf
dCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KICAg
IA0KDQojbGluZSAxNDA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsN
CiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAg
ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBl
KF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7
DQogICAgICAgIF9SZXN1bHQgPSBfX3Zzd3ByaW50Zl9sKF9CdWZmZXIsIF9Gb3JtYXQsIF9Mb2Nh
bGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsN
CiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDE0MTQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgDQogICAgX19pbmxpbmUgaW50
IF9fY2RlY2wgX3N3cHJpbnRmX2woDQogICAgICAgICAgIHdjaGFyX3QqICAgICAgIGNvbnN0IF9C
dWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9j
YWxlLA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDE0MjYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNv
cmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFf
bGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lz
X25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgm
X0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c3dwcmludGZfY19s
KF9CdWZmZXIsIF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAg
ICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jl
c3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTQzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3Rk
aW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfc3dwcmludGYo
DQogICAgICAgICAgIHdjaGFyX3QqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAg
ICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNs
aW5lIDE0NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAg
ICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lk
KShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1h
dCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsNCiAgICAg
ICAgX1Jlc3VsdCA9IF9fdnN3cHJpbnRmX2woX0J1ZmZlciwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3Qp
Ow0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1
cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTQ1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dF93c3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBzd3By
aW50ZigNCiAgICAgICAgICAgd2NoYXJfdCogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAg
ICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xp
bmUgMTQ2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAg
IGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQp
KF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0
KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAg
ICBfUmVzdWx0ID0gX3Zzd3ByaW50Zl9jX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBfRm9ybWF0
LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7
DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNDc0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgX19pbmxpbmUgICBpbnQgX19jZGVjbCBf
X2luc2VjdXJlX19fdnN3cHJpbnRmX2woICAgd2NoYXJfdCAqX0J1ZmZlciwgICAgIHdjaGFyX3Qg
Y29uc3QqIF9Gb3JtYXQsICAgX2xvY2FsZV90IF9Mb2NhbGUsIHZhX2xpc3QgX0FyZ0xpc3QpIHsg
ICBpbnQgX19jZGVjbCBfX3Zzd3ByaW50Zl9sKCAgIHdjaGFyX3QgKl9CdWZmZXIsICAgICB3Y2hh
cl90IGNvbnN0KiBfRm9ybWF0LCAgIF9sb2NhbGVfdCBfTG9jYWxlLCB2YV9saXN0IF9BcmdMaXN0
KTsgcmV0dXJuIF9fdnN3cHJpbnRmX2woX0J1ZmZlciwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xp
c3QpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICAgIGlu
dCBfX2NkZWNsIF9fc3dwcmludGZfbChfVCAmX0J1ZmZlciwgICAgIHdjaGFyX3QgY29uc3QqIF9G
b3JtYXQsICAgX2xvY2FsZV90IF9Mb2NhbGUsIC4uLikgdGhyb3coKSB7IHZhX2xpc3QgX0FyZ0xp
c3Q7ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0
eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkp
KSk7IHJldHVybiBfX2luc2VjdXJlX19fdnN3cHJpbnRmX2woc3RhdGljX2Nhc3Q8d2NoYXJfdCAq
PihfQnVmZmVyKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOyB9IHRlbXBsYXRlIDx0eXBl
bmFtZSBfVD4gaW5saW5lICAgIGludCBfX2NkZWNsIF9fc3dwcmludGZfbChjb25zdCBfVCAmX0J1
ZmZlciwgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3JtYXQsICAgX2xvY2FsZV90IF9Mb2NhbGUsIC4u
LikgdGhyb3coKSB7IHZhX2xpc3QgX0FyZ0xpc3Q7ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9z
dGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFf
c3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7IHJldHVybiBfX2luc2VjdXJlX19fdnN3cHJp
bnRmX2woc3RhdGljX2Nhc3Q8d2NoYXJfdCAqPihfQnVmZmVyKSwgX0Zvcm1hdCwgX0xvY2FsZSwg
X0FyZ0xpc3QpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgICBpbnQgX19jZGVjbCBfX3N3cHJpbnRm
X2woICAgd2NoYXJfdCAqICZfQnVmZmVyLCAgICAgd2NoYXJfdCBjb25zdCogX0Zvcm1hdCwgICBf
bG9jYWxlX3QgX0xvY2FsZSwgLi4uKSB0aHJvdygpIHsgdmFfbGlzdCBfQXJnTGlzdDsgKCh2b2lk
KShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2Fs
ZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsgcmV0dXJu
IF9faW5zZWN1cmVfX192c3dwcmludGZfbChfQnVmZmVyLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJn
TGlzdCk7IH0gdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lICAgaW50IF9fY2RlY2wgX19z
d3ByaW50Zl9sKCAgIHdjaGFyX3QgKCZfQnVmZmVyKVtfU2l6ZV0sICAgICB3Y2hhcl90IGNvbnN0
KiBfRm9ybWF0LCAgIF9sb2NhbGVfdCBfTG9jYWxlLCAuLi4pIHRocm93KCkgeyB2YV9saXN0IF9B
cmdMaXN0OyAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxk
ZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2Fs
ZSkpKSkpOyByZXR1cm4gKF92c3dwcmludGZfc19sKF9CdWZmZXIsIF9TaXplLCBfRm9ybWF0LCBf
TG9jYWxlLCBfQXJnTGlzdCkpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgICBpbnQgX19jZGVjbCBf
X3N3cHJpbnRmX2w8MT4od2NoYXJfdCAoJl9CdWZmZXIpWzFdLCAgICAgd2NoYXJfdCBjb25zdCog
X0Zvcm1hdCwgICBfbG9jYWxlX3QgX0xvY2FsZSwgLi4uKSB0aHJvdygpIHsgdmFfbGlzdCBfQXJn
TGlzdDsgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVj
bHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUp
KSkpKTsgcmV0dXJuIChfdnN3cHJpbnRmX3NfbChfQnVmZmVyLCAxLCBfRm9ybWF0LCBfTG9jYWxl
LCBfQXJnTGlzdCkpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICAgIGludCBfX2Nk
ZWNsIF9fdnN3cHJpbnRmX2woX1QgJl9CdWZmZXIsICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0
LCAgIF9sb2NhbGVfdCBfTG9jYWxlLCB2YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsgcmV0dXJu
IF9faW5zZWN1cmVfX192c3dwcmludGZfbChzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZmZXIp
LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBp
bmxpbmUgICAgaW50IF9fY2RlY2wgX192c3dwcmludGZfbChjb25zdCBfVCAmX0J1ZmZlciwgICAg
IHdjaGFyX3QgY29uc3QqIF9Gb3JtYXQsICAgX2xvY2FsZV90IF9Mb2NhbGUsIHZhX2xpc3QgX0Fy
Z0xpc3QpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fX3Zzd3ByaW50Zl9sKHN0YXRpY19j
YXN0PHdjaGFyX3QgKj4oX0J1ZmZlciksIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsgfSB0
ZW1wbGF0ZSA8PiBpbmxpbmUgICAgaW50IF9fY2RlY2wgX192c3dwcmludGZfbCggICB3Y2hhcl90
IComX0J1ZmZlciwgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3JtYXQsICAgX2xvY2FsZV90IF9Mb2Nh
bGUsIHZhX2xpc3QgX0FyZ0xpc3QpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fX3Zzd3By
aW50Zl9sKF9CdWZmZXIsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsgfSB0ZW1wbGF0ZSA8
c2l6ZV90IF9TaXplPiBpbmxpbmUgICBpbnQgX19jZGVjbCBfX3Zzd3ByaW50Zl9sKCAgIHdjaGFy
X3QgKCZfQnVmZmVyKVtfU2l6ZV0sICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0LCAgIF9sb2Nh
bGVfdCBfTG9jYWxlLCB2YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsgcmV0dXJuIChfdnN3cHJp
bnRmX3NfbChfQnVmZmVyLCBfU2l6ZSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpKTsgfSB0
ZW1wbGF0ZSA8PiBpbmxpbmUgICAgaW50IF9fY2RlY2wgX192c3dwcmludGZfbDwxPih3Y2hhcl90
ICgmX0J1ZmZlcilbMV0sICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0LCAgIF9sb2NhbGVfdCBf
TG9jYWxlLCB2YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsgcmV0dXJuIChfdnN3cHJpbnRmX3Nf
bChfQnVmZmVyLCAxLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCkpOyB9IH0NCiNsaW5lIDE0
ODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICBfX2lubGluZSAgIGlu
dCBfX2NkZWNsIF9faW5zZWN1cmVfX3Zzd3ByaW50ZiggICB3Y2hhcl90ICpfQnVmZmVyLCAgICAg
d2NoYXJfdCBjb25zdCogX0Zvcm1hdCwgdmFfbGlzdCBfQXJnTGlzdCkgeyAgIGludCBfX2NkZWNs
IF92c3dwcmludGYoICAgd2NoYXJfdCAqX0J1ZmZlciwgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3Jt
YXQsIHZhX2xpc3QgX0FyZ0xpc3QpOyByZXR1cm4gX3Zzd3ByaW50ZihfQnVmZmVyLCBfRm9ybWF0
LCBfQXJnTGlzdCk7IH0gZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxp
bmUgICAgaW50IF9fY2RlY2wgX3N3cHJpbnRmKF9UICZfQnVmZmVyLCAgICAgd2NoYXJfdCBjb25z
dCogX0Zvcm1hdCwgLi4uKSB0aHJvdygpIHsgdmFfbGlzdCBfQXJnTGlzdDsgKCh2b2lkKShfX3Zj
cnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCks
ICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsgcmV0dXJuIF9faW5z
ZWN1cmVfX3Zzd3ByaW50ZihzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZmZXIpLCBfRm9ybWF0
LCBfQXJnTGlzdCk7IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICAgaW50IF9fY2Rl
Y2wgX3N3cHJpbnRmKGNvbnN0IF9UICZfQnVmZmVyLCAgICAgd2NoYXJfdCBjb25zdCogX0Zvcm1h
dCwgLi4uKSB0aHJvdygpIHsgdmFfbGlzdCBfQXJnTGlzdDsgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0
X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCko
X192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsgcmV0dXJuIF9faW5zZWN1cmVfX3Zz
d3ByaW50ZihzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZmZXIpLCBfRm9ybWF0LCBfQXJnTGlz
dCk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICAgIGludCBfX2NkZWNsIF9zd3ByaW50ZiggICB3Y2hh
cl90ICogJl9CdWZmZXIsICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0LCAuLi4pIHRocm93KCkg
eyB2YV9saXN0IF9BcmdMaXN0OyAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90
X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJn
TGlzdCwgX0Zvcm1hdCkpKSkpOyByZXR1cm4gX19pbnNlY3VyZV9fdnN3cHJpbnRmKF9CdWZmZXIs
IF9Gb3JtYXQsIF9BcmdMaXN0KTsgfSB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgICBp
bnQgX19jZGVjbCBfc3dwcmludGYod2NoYXJfdCAoJl9CdWZmZXIpW19TaXplXSwgICAgIHdjaGFy
X3QgY29uc3QqIF9Gb3JtYXQsIC4uLikgdGhyb3coKSB7IHZhX2xpc3QgX0FyZ0xpc3Q7ICgodm9p
ZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3Jt
YXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7IHJldHVy
biAodnN3cHJpbnRmX3MoX0J1ZmZlciwgX1NpemUsIF9Gb3JtYXQsIF9BcmdMaXN0KSk7IH0gdGVt
cGxhdGUgPD4gaW5saW5lICAgIGludCBfX2NkZWNsIF9zd3ByaW50ZjwxPih3Y2hhcl90ICgmX0J1
ZmZlcilbMV0sICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0LCAuLi4pIHRocm93KCkgeyB2YV9s
aXN0IF9BcmdMaXN0OyAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVy
ZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwg
X0Zvcm1hdCkpKSkpOyByZXR1cm4gKHZzd3ByaW50Zl9zKF9CdWZmZXIsIDEsIF9Gb3JtYXQsIF9B
cmdMaXN0KSk7IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICAgaW50IF9fY2RlY2wg
X3Zzd3ByaW50ZihfVCAmX0J1ZmZlciwgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3JtYXQsIHZhX2xp
c3QgX0FyZ0xpc3QpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fdnN3cHJpbnRmKHN0YXRp
Y19jYXN0PHdjaGFyX3QgKj4oX0J1ZmZlciksIF9Gb3JtYXQsIF9BcmdMaXN0KTsgfSB0ZW1wbGF0
ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgICBpbnQgX19jZGVjbCBfdnN3cHJpbnRmKGNvbnN0IF9U
ICZfQnVmZmVyLCAgICAgd2NoYXJfdCBjb25zdCogX0Zvcm1hdCwgdmFfbGlzdCBfQXJnTGlzdCkg
dGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX192c3dwcmludGYoc3RhdGljX2Nhc3Q8d2NoYXJf
dCAqPihfQnVmZmVyKSwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAg
ICBpbnQgX19jZGVjbCBfdnN3cHJpbnRmKCAgIHdjaGFyX3QgKiZfQnVmZmVyLCAgICAgd2NoYXJf
dCBjb25zdCogX0Zvcm1hdCwgdmFfbGlzdCBfQXJnTGlzdCkgdGhyb3coKSB7IHJldHVybiBfX2lu
c2VjdXJlX192c3dwcmludGYoX0J1ZmZlciwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IHRlbXBsYXRl
IDxzaXplX3QgX1NpemU+IGlubGluZSAgIGludCBfX2NkZWNsIF92c3dwcmludGYod2NoYXJfdCAo
Jl9CdWZmZXIpW19TaXplXSwgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3JtYXQsIHZhX2xpc3QgX0Fy
Z0xpc3QpIHRocm93KCkgeyByZXR1cm4gKHZzd3ByaW50Zl9zKF9CdWZmZXIsIF9TaXplLCBfRm9y
bWF0LCBfQXJnTGlzdCkpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgICBpbnQgX19jZGVjbCBfdnN3
cHJpbnRmPDE+KHdjaGFyX3QgKCZfQnVmZmVyKVsxXSwgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3Jt
YXQsIHZhX2xpc3QgX0FyZ0xpc3QpIHRocm93KCkgeyByZXR1cm4gKHZzd3ByaW50Zl9zKF9CdWZm
ZXIsIDEsIF9Gb3JtYXQsIF9BcmdMaXN0KSk7IH0gfQ0KI2xpbmUgMTQ5MCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19j
ZGVjbCBfc3dwcmludGZfc19sKA0KICAgICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVm
ZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAg
Li4uKQ0KICAgIA0KDQojbGluZSAxNTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5o
Ig0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7
DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNl
PGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9j
YWxlKSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdnN3cHJpbnRmX3NfbChfQnVmZmVyLCBfQnVm
ZmVyQ291bnQsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShf
QXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0K
ICAgICNsaW5lIDE1MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAN
Cg0KICAgICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIHN3cHJpbnRmX3MoDQog
ICAgICAgICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAg
IGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgIC4uLikNCiAgICANCg0KI2xp
bmUgMTUyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICAgICAgew0KICAg
ICAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAg
ICAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8
ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3Jt
YXQpKSkpKTsNCiAgICAgICAgICAgIF9SZXN1bHQgPSBfdnN3cHJpbnRmX3NfbChfQnVmZmVyLCBf
QnVmZmVyQ291bnQsIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgICAgICgodm9pZCko
X0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAg
ICAgICAgfQ0KICAgICNsaW5lIDE1MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgi
DQoNCiAgICAjbGluZSAxNTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQog
ICAgZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lICAgaW50IF9f
Y2RlY2wgc3dwcmludGZfcyggd2NoYXJfdCAoJl9CdWZmZXIpW19TaXplXSwgICAgIHdjaGFyX3Qg
Y29uc3QqIF9Gb3JtYXQsIC4uLikgdGhyb3coKSB7IHZhX2xpc3QgX0FyZ0xpc3Q7ICgodm9pZCko
X192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQp
PigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7IHJldHVybiB2
c3dwcmludGZfcyhfQnVmZmVyLCBfU2l6ZSwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IH0NCiNsaW5l
IDE1NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgDQog
ICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3N3cHJpbnRmX3BfbCgNCiAgICAgICAgICAgd2NoYXJf
dCogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAg
ICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0
IF9Mb2NhbGUsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTU1MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAg
ICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3Rh
cnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0
YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zzd3ByaW50
Zl9wX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7
DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVy
biBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNTYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0
X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9zd3By
aW50Zl9wKA0KICAgICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAg
ICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTU3
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBf
UmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNy
dF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwg
KCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVz
dWx0ID0gX3Zzd3ByaW50Zl9wX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBfRm9ybWF0LCAwLCBf
QXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAg
ICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNTgyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2Nk
ZWNsIF9zd3ByaW50Zl9jX2woDQogICAgICAgICAgIHdjaGFyX3QqICAgICAgIGNvbnN0IF9CdWZm
ZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAg
ICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxl
LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDE1OTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVj
cnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlz
dCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25v
dF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0Fy
Z0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c3dwcmludGZfY19sKF9C
dWZmZXIsIF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAg
ICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3Vs
dDsNCiAgICB9DQogICAgI2xpbmUgMTYwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8u
aCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfc3dwcmludGZfYygN
CiAgICAgICAgICAgd2NoYXJfdCogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBj
b25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTYx
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBf
UmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNy
dF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwg
KCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVz
dWx0ID0gX3Zzd3ByaW50Zl9jX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBfRm9ybWF0LCAwLCBf
QXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAg
ICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNjIzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19j
ZGVjbCBfc253cHJpbnRmX2woDQogICAgICAgICAgICB3Y2hhcl90KiAgICAgICBjb25zdCBfQnVm
ZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgICAgICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4u
KQ0KICAgIA0KDQojbGluZSAxNjM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0K
ICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQog
ICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRl
Y2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxl
KSkpKSk7DQoNCiAgICAgICAgX1Jlc3VsdCA9IF92c253cHJpbnRmX2woX0J1ZmZlciwgX0J1ZmZl
ckNvdW50LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQoNCiAgICAgICAgKCh2b2lkKShf
QXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0K
ICAgICNsaW5lIDE2NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAg
DQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Nud3ByaW50ZigNCiAgICAgICAgICAg
IHdjaGFyX3QqICAgICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIF9CdWZmZXJDb3VudCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Gb3JtYXQsDQogICAgICAgIC4uLikN
CiAgICANCg0KI2xpbmUgMTY1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAg
ICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAg
ICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNs
dHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkp
KSkpOw0KDQogICAgICAgIF9SZXN1bHQgPSBfdnNud3ByaW50Zl9sKF9CdWZmZXIsIF9CdWZmZXJD
b3VudCwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KDQogICAgICAgICgodm9pZCkoX0FyZ0xpc3Qg
PSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGlu
ZSAxNjY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0K
ICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9zbndwcmludGZfc19sKA0KICAgICAgICAgICB3Y2hh
cl90KiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3Vu
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICAgICAgICBjb25zdCBfTWF4Q291bnQsDQogICAgICAgICAgICAgICAgICAgICAg
d2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQog
ICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTY4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9B
cmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3Jl
ZmVyZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlz
dCwgX0xvY2FsZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3ZzbndwcmludGZfc19sKF9CdWZm
ZXIsIF9CdWZmZXJDb3VudCwgX01heENvdW50LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7
DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVy
biBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNjkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0
X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9zbndw
cmludGZfcygNCiAgICAgICAgICAgd2NoYXJfdCogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ICAgICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgY29uc3QgX01heENvdW50
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBf
Rm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDE3MDIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAg
dmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0
X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFy
dCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c253cHJpbnRm
X3NfbChfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9NYXhDb3VudCwgX0Zvcm1hdCwgMCwgX0FyZ0xp
c3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICBy
ZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTcxMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29y
ZWNydF93c3RkaW8uaCINCg0KICAgIGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1Np
emU+IGlubGluZSAgIGludCBfX2NkZWNsIF9zbndwcmludGZfcyggd2NoYXJfdCAoJl9CdWZmZXIp
W19TaXplXSwgICBzaXplX3QgX0J1ZmZlckNvdW50LCAgICAgd2NoYXJfdCBjb25zdCogX0Zvcm1h
dCwgLi4uKSB0aHJvdygpIHsgdmFfbGlzdCBfQXJnTGlzdDsgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0
X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCko
X192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsgcmV0dXJuIF92c253cHJpbnRmX3Mo
X0J1ZmZlciwgX1NpemUsIF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IH0NCiNs
aW5lIDE3MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAg
X19pbmxpbmUgaW50IF9fY2RlY2wgX3Njd3ByaW50Zl9sKA0KICAgICAgICAgICAgd2NoYXJfdCBj
b25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KICAgIA0K
DQojbGluZSAxNzI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9M
b2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7DQog
ICAgICAgIF9SZXN1bHQgPSBfdnNjd3ByaW50Zl9sKF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0
KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0
dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDE3MzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVj
cnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9z
Y3dwcmludGYoDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAg
ICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDE3NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0
ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJn
TGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZl
cmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3Qs
IF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c2N3cHJpbnRmX2woX0Zvcm1hdCwg
MCwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0K
ICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTc1NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAgICAgDQogICAgX19pbmxpbmUgaW50
IF9fY2RlY2wgX3Njd3ByaW50Zl9wX2woDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25z
dCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9j
YWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDE3
NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQg
X1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3Zj
cnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCks
ICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jl
c3VsdCA9IF92c2N3cHJpbnRmX3BfbChfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAg
ICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVz
dWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNzc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRp
by5oIg0KDQogICAgIA0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfc2N3cHJpbnRm
X3AoDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAu
Li4pDQogICAgDQoNCiNsaW5lIDE3ODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgi
DQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsN
CiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8
ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3Jt
YXQpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c2N3cHJpbnRmX3BfbChfRm9ybWF0LCAwLCBf
QXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAg
ICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNzkyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxjb3JlY3J0X3dzdGRpby5oIg0KDQoNCiAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICAjcHJhZ21hIHdhcm5pbmcocHVzaCkNCiAgICAgICAgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQxNDEgNjA1NCkNCg0KICAgICAgICANCg0KICAgICAgICAgICAgZXh0ZXJuICJDKysiIF9fZGVj
bHNwZWMoZGVwcmVjYXRlZCgiZnVuY3Rpb24gaGFzIGJlZW4gY2hhbmdlZCB0byBjb25mb3JtIHdp
dGggdGhlIElTTyBDIHN0YW5kYXJkLCAiICJhZGRpbmcgYW4gZXh0cmEgY2hhcmFjdGVyIGNvdW50
IHBhcmFtZXRlci4gVG8gdXNlIHRoZSB0cmFkaXRpb25hbCAiICJNaWNyb3NvZnQgdmVyc2lvbiwg
c2V0IF9DUlRfTk9OX0NPTkZPUk1JTkdfU1dQUklOVEZTLiIpKSANCiAgICAgICAgICAgIGlubGlu
ZSBpbnQgc3dwcmludGYoDQogICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90KiAgICAg
ICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25z
dCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgIC4uLikgdGhyb3coKQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICAgICAgICAgIHZhX2xpc3QgX0Fy
Z0xpc3Q7DQogICAgICAgICAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lz
X25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgm
X0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgICAgICAgICBfUmVzdWx0ID0gdnN3cHJp
bnRmKF9CdWZmZXIsIDIxNDc0ODM2NDcsIF9Gb3JtYXQsIF9BcmdMaXN0KTsNCiAgICAgICAgICAg
ICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICAgICAgICAgIHJl
dHVybiBfUmVzdWx0Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBleHRlcm4gIkMrKyIg
X19kZWNsc3BlYyhkZXByZWNhdGVkKCJmdW5jdGlvbiBoYXMgYmVlbiBjaGFuZ2VkIHRvIGNvbmZv
cm0gd2l0aCB0aGUgSVNPIEMgc3RhbmRhcmQsICIgImFkZGluZyBhbiBleHRyYSBjaGFyYWN0ZXIg
Y291bnQgcGFyYW1ldGVyLiBUbyB1c2UgdGhlIHRyYWRpdGlvbmFsICIgIk1pY3Jvc29mdCB2ZXJz
aW9uLCBzZXQgX0NSVF9OT05fQ09ORk9STUlOR19TV1BSSU5URlMuIikpIA0KICAgICAgICAgICAg
aW5saW5lIGludCBfX2NkZWNsIHZzd3ByaW50ZigNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdjaGFyX3QqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgICAg
ICAgICApIHRocm93KCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdnN3
cHJpbnRmKF9CdWZmZXIsIDIxNDc0ODM2NDcsIF9Gb3JtYXQsIF9BcmdMaXN0KTsNCiAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgZXh0ZXJuICJDKysiIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgi
ZnVuY3Rpb24gaGFzIGJlZW4gY2hhbmdlZCB0byBjb25mb3JtIHdpdGggdGhlIElTTyBDIHN0YW5k
YXJkLCAiICJhZGRpbmcgYW4gZXh0cmEgY2hhcmFjdGVyIGNvdW50IHBhcmFtZXRlci4gVG8gdXNl
IHRoZSB0cmFkaXRpb25hbCAiICJNaWNyb3NvZnQgdmVyc2lvbiwgc2V0IF9DUlRfTk9OX0NPTkZP
Uk1JTkdfU1dQUklOVEZTLiIpKSANCiAgICAgICAgICAgIGlubGluZSBpbnQgX3N3cHJpbnRmX2wo
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCogICAgICAgY29u
c3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zv
cm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
bG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAgICAgICAgIC4uLikgdGhyb3co
KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICAg
ICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICAgICAgICAgKCh2b2lkKShfX3ZjcnRf
YXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgo
dm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgICAgICAg
ICBfUmVzdWx0ID0gX3Zzd3ByaW50Zl9sKF9CdWZmZXIsIChzaXplX3QpLTEsIF9Gb3JtYXQsIF9M
b2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZh
X2xpc3QpMCkpOw0KICAgICAgICAgICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgICAgICAgICAg
fQ0KDQogICAgICAgICAgICBleHRlcm4gIkMrKyIgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJmdW5j
dGlvbiBoYXMgYmVlbiBjaGFuZ2VkIHRvIGNvbmZvcm0gd2l0aCB0aGUgSVNPIEMgc3RhbmRhcmQs
ICIgImFkZGluZyBhbiBleHRyYSBjaGFyYWN0ZXIgY291bnQgcGFyYW1ldGVyLiBUbyB1c2UgdGhl
IHRyYWRpdGlvbmFsICIgIk1pY3Jvc29mdCB2ZXJzaW9uLCBzZXQgX0NSVF9OT05fQ09ORk9STUlO
R19TV1BSSU5URlMuIikpIA0KICAgICAgICAgICAgaW5saW5lIGludCBfX2NkZWNsIF92c3dwcmlu
dGZfbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90KiAgICAg
ICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25z
dCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9B
cmdMaXN0DQogICAgICAgICAgICAgICAgKSB0aHJvdygpDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgcmV0dXJuIF92c3dwcmludGZfbChfQnVmZmVyLCAoc2l6ZV90KS0xLCBfRm9ybWF0
LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgI2xpbmUgMTg1
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICAgICAjcHJhZ21hIHdh
cm5pbmcocG9wKQ0KICAgICNsaW5lIDE4NTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlv
LmgiDQoNCiAgICANCg0KDQoNCg0KI2xpbmUgMTg2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93
c3RkaW8uaCINCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX3N0ZGlvX2NvbW1vbl92c3dzY2FuZigN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19p
bnQ2NCBfT3B0aW9ucywNCiAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqICAgX0J1ZmZl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAg
ICAgICAgICBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAgIF9Gb3Jt
YXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAg
ICAgICBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YV9saXN0ICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICk7DQoNCiAgICAgDQogICAg
DQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zzd3NjYW5mX2woDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAg
ICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAg
ICApDQogICAgDQoNCiNsaW5lIDE4OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgi
DQogICAgew0KICAgICAgICByZXR1cm4gX19zdGRpb19jb21tb25fdnN3c2NhbmYoDQogICAgICAg
ICAgICAoKl9fbG9jYWxfc3RkaW9fc2NhbmZfb3B0aW9ucyAoKSksDQogICAgICAgICAgICBfQnVm
ZmVyLCAoc2l6ZV90KS0xLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAg
ICNsaW5lIDE4OTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQog
ICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgdnN3c2NhbmYoDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfQnVmZmVyLA0KICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFfbGlzdCAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxOTA4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJu
IF92c3dzY2FuZl9sKF9CdWZmZXIsIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQogICAg
I2xpbmUgMTkxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAg
ICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnN3c2NhbmZfc19sKA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0J1ZmZlciwNCiAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0FyZ0xpc3QNCiAg
ICAgICAgKQ0KICAgIA0KDQojbGluZSAxOTI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRp
by5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9fc3RkaW9fY29tbW9uX3Zzd3NjYW5mKA0KICAg
ICAgICAgICAgKCpfX2xvY2FsX3N0ZGlvX3NjYW5mX29wdGlvbnMgKCkpIHwgKDFVTEwgPDwgMCks
DQogICAgICAgICAgICBfQnVmZmVyLCAoc2l6ZV90KS0xLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJn
TGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDE5MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0
ZGlvLmgiDQoNCiAgICANCg0KICAgICAgICAgDQogICAgICAgIA0KICAgICAgICBfX2lubGluZSBp
bnQgX19jZGVjbCB2c3dzY2FuZl9zKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgd2NoYXJf
dCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICAgICApDQog
ICAgDQoNCiNsaW5lIDE5NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAg
ICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfdnN3c2NhbmZfc19sKF9CdWZmZXIsIF9Gb3JtYXQs
IDAsIF9BcmdMaXN0KTsNCiAgICAgICAgfQ0KICAgICNsaW5lIDE5NDcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAjbGluZSAxOTQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dzdGRpby5oIg0KDQogICAgZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6
ZT4gaW5saW5lICAgaW50IF9fY2RlY2wgdnN3c2NhbmZfcyggIHdjaGFyX3QgKCZfQnVmZmVyKVtf
U2l6ZV0sICAgICB3Y2hhcl90IGNvbnN0KiBfRm9ybWF0LCB2YV9saXN0IF9BcmdMaXN0KSB0aHJv
dygpIHsgcmV0dXJuIHZzd3NjYW5mX3MoX0J1ZmZlciwgX1NpemUsIF9Gb3JtYXQsIF9BcmdMaXN0
KTsgfSB9DQojbGluZSAxOTU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQog
ICAgIA0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnNud3NjYW5mX2woDQogICAg
ICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICBjb25zdCBfQnVm
ZmVyQ291bnQsDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0
IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUg
MTk3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJl
dHVybiBfX3N0ZGlvX2NvbW1vbl92c3dzY2FuZigNCiAgICAgICAgICAgICgqX19sb2NhbF9zdGRp
b19zY2FuZl9vcHRpb25zICgpKSwNCiAgICAgICAgICAgIF9CdWZmZXIsIF9CdWZmZXJDb3VudCwg
X0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGluZSAxOTc2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5l
IGludCBfX2NkZWNsIF92c253c2NhbmZfc19sKA0KICAgICAgICAgICAgICAgICAgICB3Y2hhcl90
IGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAg
ICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAg
ICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTk4OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfX3N0ZGlvX2Nv
bW1vbl92c3dzY2FuZigNCiAgICAgICAgICAgICgqX19sb2NhbF9zdGRpb19zY2FuZl9vcHRpb25z
ICgpKSB8ICgxVUxMIDw8IDApLA0KICAgICAgICAgICAgX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBf
Rm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDE5OTUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgIA0KICAgIF9faW5saW5l
IGludCBfX2NkZWNsIF9zd3NjYW5mX2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfbG9jYWxlX3QgICAgICAgICAgICBfTG9jYWxlLA0KICAgICAgICAuLi4pDQog
ICAgDQoNCiNsaW5lIDIwMDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAg
ew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAg
ICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5
cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkp
KTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c3dzY2FuZl9sKF9CdWZmZXIsIF9Gb3JtYXQsIF9Mb2Nh
bGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsN
CiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDIwMTUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgICANCiAgICBfX2lubGluZSBp
bnQgX19jZGVjbCBzd3NjYW5mKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hh
cl90IGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29u
c3QgX0Zvcm1hdCwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAyMDI1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAg
ICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9z
dGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFf
c3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdnN3c2Nh
bmZfbChfQnVmZmVyLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0Fy
Z0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAg
ICAjbGluZSAyMDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0K
ICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9zd3NjYW5mX3NfbCgNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0J1
ZmZlciwNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBf
TG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDIwNDUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAg
dmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0
X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFy
dCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c3dzY2FuZl9z
X2woX0J1ZmZlciwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQp
KF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9
DQogICAgI2xpbmUgMjA1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAg
IA0KDQogICAgICAgICANCiAgICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIHN3
c2NhbmZfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBj
b25zdCogY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25z
dCBfRm9ybWF0LA0KICAgICAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAyMDY2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgICAgICB7DQogICAgICAgICAgICBpbnQgX1Jl
c3VsdDsNCiAgICAgICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICAgICAoKHZvaWQp
KF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0
KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAg
ICAgICAgX1Jlc3VsdCA9IF92c3dzY2FuZl9zX2woX0J1ZmZlciwgX0Zvcm1hdCwgMCwgX0FyZ0xp
c3QpOw0KICAgICAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAg
ICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgICAgICB9DQogICAgI2xpbmUgMjA3NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICNsaW5lIDIwNzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICAgDQogICAgIA0KICAgIF9faW5saW5lIGludCBf
X2NkZWNsIF9zbndzY2FuZl9sKA0KICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29u
c3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgd2NoYXJfdCBj
b25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoN
CiNsaW5lIDIwODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQogICAgew0KICAg
ICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2
b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xv
Y2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCg0K
ICAgICAgICBfUmVzdWx0ID0gX3ZzbndzY2FuZl9sKF9CdWZmZXIsIF9CdWZmZXJDb3VudCwgX0Zv
cm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KDQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAo
dmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAy
MTAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQogICAgIA0KICAgICANCiAg
ICBfX2lubGluZSBpbnQgX19jZGVjbCBfc253c2NhbmYoDQogICAgICAgICAgICB3Y2hhcl90IGNv
bnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgICAgICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgd2No
YXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAy
MTExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50
IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192
Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigp
LCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQoNCiAgICAgICAg
X1Jlc3VsdCA9IF92c253c2NhbmZfbChfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIDAs
IF9BcmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0K
ICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMjEyMiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQg
X19jZGVjbCBfc253c2NhbmZfc19sKA0KICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0
KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCAgICAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgIHdj
aGFyX3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4p
DQogICAgDQoNCiNsaW5lIDIxMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQog
ICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAg
ICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVj
bHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUp
KSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c253c2NhbmZfc19sKF9CdWZmZXIsIF9CdWZmZXJD
b3VudCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdM
aXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAg
I2xpbmUgMjE0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93c3RkaW8uaCINCg0KICAgICANCiAg
ICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfc253c2NhbmZfcygNCiAgICAgICAgICAgICB3
Y2hhcl90IGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAg
ICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgLi4uKQ0KICAgIA0K
DQojbGluZSAyMTU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9G
b3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQog
ICAgICAgIF9SZXN1bHQgPSBfdnNud3NjYW5mX3NfbChfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9G
b3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0
KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDIxNjMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3N0ZGlvLmgiDQoNCiAgICANCg0KDQojbGluZSAyMTY4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dzdGRpby5oIg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkN
Cg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8u
aCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMy
NCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyAp
DQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiNs
aW5lIDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KICAgIA0KICAgIA0KI2xpbmUgNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCg0K
dHlwZWRlZiBfX2ludDY0IGZwb3NfdDsNCg0KDQoNCg0KDQogICAgDQogICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfZ2V0X3N0cmVhbV9idWZmZXJfcG9pbnRlcnMoDQog
ICAgICAgICAgICAgICBGSUxFKiAgIF9TdHJlYW0sDQogICAgICAgICAgY2hhcioqKiBfQmFzZSwN
CiAgICAgICAgICBjaGFyKioqIF9Qb2ludGVyLA0KICAgICAgICAgIGludCoqICAgX0NvdW50DQog
ICAgICAgICk7DQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAg
ICAgIA0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIGNsZWFy
ZXJyX3MoDQogICAgICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgICAgICk7DQoNCiAg
ICAgICAgDQogICAgICAgICANCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3Qg
X19jZGVjbCBmb3Blbl9zKA0KICAgICAgICAgICAgICBGSUxFKiogICAgICBfU3RyZWFtLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfTW9kZQ0K
ICAgICAgICAgICAgKTsNCg0KICAgICAgICANCiAgICAgICAgIA0KICAgICAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgZnJlYWRfcygNCiAgICAgICAgICAgICAgICB2b2lk
KiAgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
QnVmZmVyU2l6ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX0VsZW1lbnRTaXplLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfRWxlbWVudENvdW50LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJ
TEUqICBfU3RyZWFtDQogICAgICAgICAgICApOw0KDQogICAgICAgIA0KICAgICAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIGZyZW9wZW5fcygNCiAgICAgICAgICAgICAg
RklMRSoqICAgICAgX1N0cmVhbSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgY29uc3QqIF9Nb2RlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFKiAg
ICAgICBfT2xkU3RyZWFtDQogICAgICAgICAgICApOw0KDQogICAgICAgICANCiAgICAgICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9fY2RlY2wgZ2V0c19zKA0KICAgICAgICAgICAgICBj
aGFyKiAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNpemVfdCBf
U2l6ZQ0KICAgICAgICAgICAgKTsNCg0KICAgICAgICANCiAgICAgICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGVycm5vX3QgX19jZGVjbCB0bXBmaWxlX3MoDQogICAgICAgICAgICAgICAgRklMRSoq
IF9TdHJlYW0NCiAgICAgICAgICAgICk7DQoNCiAgICAgICAgIA0KICAgICAgICANCiAgICAgICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCB0bXBuYW1fcygNCiAgICAgICAg
ICAgICAgY2hhciogICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJz
aXplX3QgX1NpemUNCiAgICAgICAgICAgICk7DQoNCiAgICAjbGluZSAxNDUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGlvLmgiDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIGNs
ZWFyZXJyKA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAgICANCiAg
ICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgZmNsb3NlKA0KICAgICAg
ICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnQgX19jZGVjbCBfZmNsb3NlYWxsKHZvaWQpOw0KDQogICAgIA0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBGSUxFKiBfX2NkZWNsIF9mZG9wZW4oDQogICAgICAgICAgICBpbnQg
ICAgICAgICBfRmlsZUhhbmRsZSwNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfTW9kZQ0KICAgICAg
ICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBmZW9m
KA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAgICANCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgZmVycm9yKA0KICAgICAgICAgIEZJTEUqIF9T
dHJlYW0NCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
X19jZGVjbCBmZmx1c2goDQogICAgICAgICAgRklMRSogX1N0cmVhbQ0KICAgICAgICApOw0KDQog
ICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBmZ2V0YygN
CiAgICAgICAgICBGSUxFKiBfU3RyZWFtDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2ZnZXRjaGFyKHZvaWQpOw0KDQogICAgIA0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBmZ2V0cG9zKA0KICAgICAg
ICAgIEZJTEUqICAgX1N0cmVhbSwNCiAgICAgICAgICAgIGZwb3NfdCogX1Bvc2l0aW9uDQogICAg
ICAgICk7DQoNCiAgICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9f
Y2RlY2wgZmdldHMoDQogICAgICAgICAgY2hhciogX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgICBfTWF4Q291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRklMRSogX1N0cmVhbQ0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnQgX19jZGVjbCBfZmlsZW5vKA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAg
ICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBf
Zmx1c2hhbGwodm9pZCk7DQoNCiAgICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBGSUxF
KiBfX2NkZWNsIGZvcGVuKA0KICAgICAgICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAg
ICAgICBjaGFyIGNvbnN0KiBfTW9kZQ0KICAgICAgICApOw0KDQoNCiAgICAgDQogICAgDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIGZwdXRjKA0KICAgICAgICAgICAgIGlu
dCAgIF9DaGFyYWN0ZXIsDQogICAgICAgICAgRklMRSogX1N0cmVhbQ0KICAgICAgICApOw0KDQog
ICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9mcHV0Y2hhcigNCiAg
ICAgICAgICBpbnQgX0NoYXJhY3Rlcg0KICAgICAgICApOw0KDQogICAgIA0KICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBmcHV0cygNCiAgICAgICAgICAgY2hhciBj
b25zdCogX0J1ZmZlciwNCiAgICAgICAgICBGSUxFKiAgICAgICBfU3RyZWFtDQogICAgICAgICk7
DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgZnJlYWQo
DQogICAgICAgICAgdm9pZCogIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX0VsZW1lbnRTaXplLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9FbGVt
ZW50Q291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGSUxFKiAgX1N0cmVhbQ0KICAgICAgICApOw0KDQogICAgIA0KICAgICAgDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEZJTEUqIF9fY2RlY2wgZnJlb3BlbigNCiAgICAgICAgICAgY2hh
ciBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgICBjaGFyIGNvbnN0KiBfTW9kZSwNCiAgICAg
ICAgICBGSUxFKiAgICAgICBfU3RyZWFtDQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEZJTEUqIF9fY2RlY2wgX2Zzb3BlbigNCiAgICAgICAgICBjaGFyIGNv
bnN0KiBfRmlsZU5hbWUsDQogICAgICAgICAgY2hhciBjb25zdCogX01vZGUsDQogICAgICAgICAg
ICBpbnQgICAgICAgICBfU2hGbGFnDQogICAgICAgICk7DQoNCiAgICAgDQogICAgDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIGZzZXRwb3MoDQogICAgICAgICAgRklMRSog
ICAgICAgICBfU3RyZWFtLA0KICAgICAgICAgICAgIGZwb3NfdCBjb25zdCogX1Bvc2l0aW9uDQog
ICAgICAgICk7DQoNCiAgICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBf
X2NkZWNsIGZzZWVrKA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0sDQogICAgICAgICAgICAgbG9u
ZyAgX09mZnNldCwNCiAgICAgICAgICAgICBpbnQgICBfT3JpZ2luDQogICAgICAgICk7DQoNCiAg
ICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9mc2Vla2k2
NCgNCiAgICAgICAgICBGSUxFKiAgIF9TdHJlYW0sDQogICAgICAgICAgICAgX19pbnQ2NCBfT2Zm
c2V0LA0KICAgICAgICAgICAgIGludCAgICAgX09yaWdpbg0KICAgICAgICApOw0KDQogICAgIA0K
ICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBfX2NkZWNsIGZ0ZWxsKA0KICAg
ICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAgICANCiAgICAgDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIF9faW50NjQgX19jZGVjbCBfZnRlbGxpNjQoDQogICAgICAgICAg
RklMRSogX1N0cmVhbQ0KICAgICAgICApOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIHNpemVfdCBfX2NkZWNsIGZ3cml0ZSgNCiAgICAgICAgICB2b2lkIGNvbnN0KiBfQnVmZmVy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAgICAgIF9FbGVtZW50U2l6ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBfRWxlbWVudENvdW50LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgIF9TdHJl
YW0NCiAgICAgICAgKTsNCg0KICAgICANCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGludCBfX2NkZWNsIGdldGMoDQogICAgICAgICAgRklMRSogX1N0cmVhbQ0KICAgICAgICApOw0K
DQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBnZXRjaGFyKHZv
aWQpOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfZ2V0
bWF4c3RkaW8odm9pZCk7DQoNCiAgICBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9T
aXplPiBpbmxpbmUgY2hhciogX19jZGVjbCBnZXRzX3MoY2hhciAoJl9CdWZmZXIpW19TaXplXSkg
dGhyb3coKSB7IHJldHVybiBnZXRzX3MoX0J1ZmZlciwgX1NpemUpOyB9IH0NCiNsaW5lIDMxOSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50IF9fY2RlY2wgX2dldHcoDQogICAgICAgICAgRklMRSogX1N0cmVhbQ0KICAgICAgICAp
Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19jZGVjbCBwZXJyb3IoDQogICAg
ICAgICAgY2hhciBjb25zdCogX0Vycm9yTWVzc2FnZQ0KICAgICAgICApOw0KDQogICAgDQoNCiAg
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIF9wY2xvc2UoDQogICAgICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgICAgICk7
DQoNCiAgICAgICAgIA0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRklMRSogX19jZGVj
bCBfcG9wZW4oDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9Db21tYW5kLA0KICAgICAgICAg
ICAgICBjaGFyIGNvbnN0KiBfTW9kZQ0KICAgICAgICAgICAgKTsNCg0KICAgICNsaW5lIDM0NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50IF9fY2RlY2wgcHV0YygNCiAgICAgICAgICAgICBpbnQgICBfQ2hhcmFjdGVy
LA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBwdXRjaGFyKA0KICAgICAgICAgIGludCBfQ2hh
cmFjdGVyDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
IF9fY2RlY2wgcHV0cygNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfQnVmZmVyDQogICAgICAgICk7
DQoNCiAgICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9w
dXR3KA0KICAgICAgICAgICAgIGludCAgIF9Xb3JkLA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0N
CiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCByZW1v
dmUoDQogICAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lDQogICAgICAgICk7DQoNCiAgICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIHJlbmFtZSgNCiAgICAgICAg
ICBjaGFyIGNvbnN0KiBfT2xkRmlsZU5hbWUsDQogICAgICAgICAgY2hhciBjb25zdCogX05ld0Zp
bGVOYW1lDQogICAgICAgICk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2Rl
Y2wgX3VubGluaygNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfRmlsZU5hbWUNCiAgICAgICAgKTsN
Cg0KICAgIA0KDQogICAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUg
Zm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFu
ZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfdW5saW5rIiAiLiBTZWUgb25saW5lIGhlbHAgZm9y
IGRldGFpbHMuIikpDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCB1
bmxpbmsoDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZQ0KICAgICAgICAgICAg
KTsNCg0KICAgICNsaW5lIDM5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fY2RlY2wgcmV3aW5kKA0KICAgICAgICAgIEZJTEUqIF9T
dHJlYW0NCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
X19jZGVjbCBfcm10bXAodm9pZCk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCBfX2NkZWNsIHNldGJ1ZigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZJTEUqIF9TdHJlYW0sDQogICAgICAgICAgICBjaGFyKiBfQnVm
ZmVyDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9f
Y2RlY2wgX3NldG1heHN0ZGlvKA0KICAgICAgICAgIGludCBfTWF4aW11bQ0KICAgICAgICApOw0K
DQogICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBzZXR2
YnVmKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICBfU3RyZWFtLA0KICAg
ICAgICAgICAgY2hhciogIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICAgIF9Nb2RlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfU2l6ZQ0KICAgICAgICApOw0KDQogICAgDQoNCg0KI2xpbmUgNDIzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRpby5oIg0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVj
KGFsbG9jYXRvcikgY2hhciogX19jZGVjbCBfdGVtcG5hbSgNCiAgICAgICAgICBjaGFyIGNvbnN0
KiBfRGlyZWN0b3J5TmFtZSwNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfRmlsZVByZWZpeA0KICAg
ICAgICApOw0KDQogICAgDQoNCiNsaW5lIDQzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0K
ICAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEZJTEUqIF9fY2RlY2wgdG1wZmlsZSh2
b2lkKTsNCg0KICAgIGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGlu
ZSAgIGVycm5vX3QgX19jZGVjbCB0bXBuYW1fcyggY2hhciAoJl9CdWZmZXIpW19TaXplXSkgdGhy
b3coKSB7IHJldHVybiB0bXBuYW1fcyhfQnVmZmVyLCBfU2l6ZSk7IH0gfQ0KI2xpbmUgNDQyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQpfX2lubGluZSAgY2hhciogX19jZGVjbCBfX2luc2Vj
dXJlX3RtcG5hbSggIGNoYXIgKl9CdWZmZXIpIHsgIGNoYXIqIF9fY2RlY2wgdG1wbmFtKCAgY2hh
ciAqX0J1ZmZlcik7IHJldHVybiB0bXBuYW0oX0J1ZmZlcik7IH0gZXh0ZXJuICJDKysiIHsgdGVt
cGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICBjaGFyKiBfX2NkZWNsIHRtcG5hbShfVCAmX0J1
ZmZlcikgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3RtcG5hbShzdGF0aWNfY2FzdDxjaGFy
ICo+KF9CdWZmZXIpKTsgfSB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgIGNoYXIqIF9f
Y2RlY2wgdG1wbmFtKGNvbnN0IF9UICZfQnVmZmVyKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1
cmVfdG1wbmFtKHN0YXRpY19jYXN0PGNoYXIgKj4oX0J1ZmZlcikpOyB9IHRlbXBsYXRlIDw+IGlu
bGluZSAgIGNoYXIqIF9fY2RlY2wgdG1wbmFtKCAgY2hhciAqICZfQnVmZmVyKSB0aHJvdygpIHsg
cmV0dXJuIF9faW5zZWN1cmVfdG1wbmFtKF9CdWZmZXIpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1Np
emU+IGlubGluZSAgY2hhciogX19jZGVjbCB0bXBuYW0oY2hhciAoJl9CdWZmZXIpW19TaXplXSkg
dGhyb3coKSB7IHJldHVybiAoKHRtcG5hbV9zKF9CdWZmZXIsIF9TaXplKSkgPT0gMCA/IF9CdWZm
ZXIgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgICBjaGFyKiBfX2NkZWNsIHRtcG5hbTwxPihj
aGFyICgmX0J1ZmZlcilbMV0pIHRocm93KCkgeyByZXR1cm4gKCh0bXBuYW1fcyhfQnVmZmVyLCAx
KSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB9DQojbGluZSA0NDggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0
ZGlvLmgiDQoNCiAgICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIHVuZ2V0YygNCiAgICAgICAgICAgICBpbnQgICBfQ2hhcmFjdGVyLA0KICAgICAgICAgIEZJ
TEUqIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF9sb2NrX2ZpbGUoDQog
ICAgICAgICAgRklMRSogX1N0cmVhbQ0KICAgICAgICApOw0KDQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIHZvaWQgX19jZGVjbCBfdW5sb2NrX2ZpbGUoDQogICAgICAgICAgRklMRSogX1N0cmVh
bQ0KICAgICAgICApOw0KDQogICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnQgX19jZGVjbCBfZmNsb3NlX25vbG9jaygNCiAgICAgICAgICBGSUxFKiBfU3RyZWFtDQogICAg
ICAgICk7DQoNCiAgICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIF9mZmx1c2hfbm9sb2NrKA0KICAgICAgICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgKTsN
Cg0KICAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2Zn
ZXRjX25vbG9jaygNCiAgICAgICAgICBGSUxFKiBfU3RyZWFtDQogICAgICAgICk7DQoNCiAgICAg
DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9mcHV0Y19ub2xv
Y2soDQogICAgICAgICAgICAgaW50ICAgX0NoYXJhY3RlciwNCiAgICAgICAgICBGSUxFKiBfU3Ry
ZWFtDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90
IF9fY2RlY2wgX2ZyZWFkX25vbG9jaygNCiAgICAgICAgICB2b2lkKiAgX0J1ZmZlciwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
RWxlbWVudFNpemUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX0VsZW1lbnRDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICBfU3RyZWFtDQogICAgICAgICk7DQoN
CiAgICANCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBfX2NkZWNsIF9m
cmVhZF9ub2xvY2tfcygNCiAgICAgICAgICB2b2lkKiAgX0J1ZmZlciwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfQnVmZmVyU2l6ZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X0VsZW1lbnRTaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfRWxlbWVudENvdW50LA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZJTEUqICBfU3RyZWFtDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50IF9fY2RlY2wgX2ZzZWVrX25vbG9jaygNCiAgICAgICAgICBGSUxFKiBfU3Ry
ZWFtLA0KICAgICAgICAgICAgIGxvbmcgIF9PZmZzZXQsDQogICAgICAgICAgICAgaW50ICAgX09y
aWdpbg0KICAgICAgICApOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBf
X2NkZWNsIF9mc2Vla2k2NF9ub2xvY2soDQogICAgICAgICAgRklMRSogICBfU3RyZWFtLA0KICAg
ICAgICAgICAgIF9faW50NjQgX09mZnNldCwNCiAgICAgICAgICAgICBpbnQgICAgIF9PcmlnaW4N
CiAgICAgICAgKTsNCg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyBfX2Nk
ZWNsIF9mdGVsbF9ub2xvY2soDQogICAgICAgICAgRklMRSogX1N0cmVhbQ0KICAgICAgICApOw0K
DQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2ludDY0IF9fY2RlY2wgX2Z0ZWxs
aTY0X25vbG9jaygNCiAgICAgICAgICBGSUxFKiBfU3RyZWFtDQogICAgICAgICk7DQoNCiAgICAN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgX2Z3cml0ZV9ub2xvY2so
DQogICAgICAgICAgdm9pZCBjb25zdCogX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBfRWxlbWVudFNpemUsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICAgICAgX0VsZW1lbnRDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGSUxFKiAgICAgICBfU3RyZWFtDQogICAgICAgICk7DQoNCiAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2dldGNfbm9sb2NrKA0KICAgICAg
ICAgIEZJTEUqIF9TdHJlYW0NCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnQgX19jZGVjbCBfcHV0Y19ub2xvY2soDQogICAgICAgICAgICAgaW50ICAgX0No
YXJhY3RlciwNCiAgICAgICAgICBGSUxFKiBfU3RyZWFtDQogICAgICAgICk7DQoNCiAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3VuZ2V0Y19ub2xvY2soDQogICAg
ICAgICAgICAgaW50ICAgX0NoYXJhY3RlciwNCiAgICAgICAgICBGSUxFKiBfU3RyZWFtDQogICAg
ICAgICk7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA1ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCg0K
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCogX19jZGVjbCBfX3BfX2NvbW1vZGUodm9p
ZCk7DQoNCiAgICANCg0KDQogICAgICAgIA0KICAgICNsaW5lIDU5NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
c3RkaW8uaCINCg0KDQoNCiAgICANCiAgICANCg0KI2xpbmUgNjAzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX2NkZWNsIF9fc3RkaW9fY29tbW9uX3ZmcHJpbnRmKA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBfT3B0
aW9ucywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAg
ICAgICAgICAgX1N0cmVhbSwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgX0Zvcm1hdCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAg
ICBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFfbGlzdCAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApOw0KDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fc3RkaW9fY29tbW9uX3ZmcHJpbnRmX3MoDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0
IF9PcHRpb25zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklM
RSogICAgICAgICAgICBfU3RyZWFtLA0KICAgICAgICAgICAgY2hhciBjb25zdCogICAgICBfRm9y
bWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3Qg
ICAgICAgIF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YV9saXN0ICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICk7DQoNCiAgICAgDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fc3RkaW9fY29tbW9uX3ZmcHJp
bnRmX3AoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBfX2ludDY0IF9PcHRpb25zLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRSogICAgICAgICAgICBfU3RyZWFtLA0KICAgICAgICAgICAgY2hhciBjb25z
dCogICAgICBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfbG9jYWxlX3QgICAgICAgIF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICk7
DQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdmZwcmludGZfbCgNCiAgICAgICAg
ICAgRklMRSogICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNv
bnN0IF9Gb3JtYXQsDQogICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAg
ICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0K
DQojbGluZSA2NDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1
cm4gX19zdGRpb19jb21tb25fdmZwcmludGYoKCpfX2xvY2FsX3N0ZGlvX3ByaW50Zl9vcHRpb25z
KCkpLCBfU3RyZWFtLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNs
aW5lIDY0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGlu
dCBfX2NkZWNsIHZmcHJpbnRmKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
KiAgICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zv
cm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAg
ICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSA2NTggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3ZmcHJpbnRmX2woX1N0cmVhbSwg
X0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGluZSA2NjIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdmZwcmludGZf
c19sKA0KICAgICAgICAgICBGSUxFKiAgICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAg
Y2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICBfbG9jYWxlX3QgICBjb25zdCBf
TG9jYWxlLA0KICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAg
ICAgICApDQogICAgDQoNCiNsaW5lIDY3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7
DQogICAgICAgIHJldHVybiBfX3N0ZGlvX2NvbW1vbl92ZnByaW50Zl9zKCgqX19sb2NhbF9zdGRp
b19wcmludGZfb3B0aW9ucygpKSwgX1N0cmVhbSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3Qp
Ow0KICAgIH0NCiAgICAjbGluZSA2NzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAN
Cg0KICAgICAgICANCiAgICAgICAgX19pbmxpbmUgaW50IF9fY2RlY2wgdmZwcmludGZfcygNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgIGNvbnN0IF9TdHJl
YW0sDQogICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgIF9BcmdM
aXN0DQogICAgICAgICAgICApDQogICAgDQoNCiNsaW5lIDY4OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3Rk
aW8uaCINCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIF92ZnByaW50Zl9zX2woX1N0cmVh
bSwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICB9DQogICAgI2xpbmUgNjkzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgI2xpbmUgNjk1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRp
by5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3ZmcHJpbnRmX3BfbCgNCiAg
ICAgICAgICAgRklMRSogICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIGNoYXIgY29u
c3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwN
CiAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0K
ICAgIA0KDQojbGluZSA3MDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAg
ICByZXR1cm4gX19zdGRpb19jb21tb25fdmZwcmludGZfcCgoKl9fbG9jYWxfc3RkaW9fcHJpbnRm
X29wdGlvbnMoKSksIF9TdHJlYW0sIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICB9
DQogICAgI2xpbmUgNzEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19p
bmxpbmUgaW50IF9fY2RlY2wgX3ZmcHJpbnRmX3AoDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZJTEUqICAgICAgIGNvbnN0IF9TdHJlYW0sDQogICAgICAgICAgICBjaGFyIGNvbnN0
KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDcyMCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdmZwcmludGZf
cF9sKF9TdHJlYW0sIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQogICAgI2xpbmUgNzI0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2Rl
Y2wgX3ZwcmludGZfbCgNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIGNvbnN0
IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDcz
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdmZwcmlu
dGZfbCgoX19hY3J0X2lvYl9mdW5jKDEpKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0K
ICAgIH0NCiAgICAjbGluZSA3MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICANCiAg
ICBfX2lubGluZSBpbnQgX19jZGVjbCB2cHJpbnRmKA0KICAgICAgICAgICAgY2hhciBjb25zdCog
Y29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFf
bGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSA3NDcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3ZmcHJpbnRmX2wo
KF9fYWNydF9pb2JfZnVuYygxKSksIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQogICAg
I2xpbmUgNzUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUg
aW50IF9fY2RlY2wgX3ZwcmludGZfc19sKA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3Qg
X0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2Fs
ZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICAN
Cg0KI2xpbmUgNzYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0
dXJuIF92ZnByaW50Zl9zX2woKF9fYWNydF9pb2JfZnVuYygxKSksIF9Gb3JtYXQsIF9Mb2NhbGUs
IF9BcmdMaXN0KTsNCiAgICB9DQogICAgI2xpbmUgNzY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5o
Ig0KDQogICAgDQoNCiAgICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIHZwcmlu
dGZfcygNCiAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0Fy
Z0xpc3QNCiAgICAgICAgICAgICkNCiAgICANCg0KI2xpbmUgNzc2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX3ZmcHJpbnRmX3NfbCgoX19h
Y3J0X2lvYl9mdW5jKDEpKSwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICB9DQogICAg
I2xpbmUgNzgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgI2xpbmUgNzgyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zw
cmludGZfcF9sKA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xv
Y2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgNzkyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92ZnByaW50Zl9w
X2woKF9fYWNydF9pb2JfZnVuYygxKSksIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAg
ICB9DQogICAgI2xpbmUgNzk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAg
X19pbmxpbmUgaW50IF9fY2RlY2wgX3ZwcmludGZfcCgNCiAgICAgICAgICAgIGNoYXIgY29uc3Qq
IGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgODA1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92ZnByaW50Zl9w
X2woKF9fYWNydF9pb2JfZnVuYygxKSksIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQog
ICAgI2xpbmUgODA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxp
bmUgaW50IF9fY2RlY2wgX2ZwcmludGZfbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUqICAgICAgIGNvbnN0IF9TdHJlYW0sDQogICAgICAgICAgICBjaGFy
IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfbG9jYWxlX3QgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoN
CiNsaW5lIDgxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBf
UmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNy
dF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwg
KCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KICAgICAgICBfUmVz
dWx0ID0gX3ZmcHJpbnRmX2woX1N0cmVhbSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0K
ICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4g
X1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgODI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0K
DQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgZnByaW50ZigNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRklMRSogICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAg
IGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUg
ODM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7
DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2Vy
dF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQp
KF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBf
dmZwcmludGZfbChfU3RyZWFtLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9p
ZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAg
IH0NCiAgICAjbGluZSA4NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3NldF9wcmludGZfY291bnRfb3V0cHV0KA0KICAg
ICAgICAgIGludCBfVmFsdWUNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnQgX19jZGVjbCBfZ2V0X3ByaW50Zl9jb3VudF9vdXRwdXQodm9pZCk7DQoNCiAgICANCiAg
ICBfX2lubGluZSBpbnQgX19jZGVjbCBfZnByaW50Zl9zX2woDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGSUxFKiAgICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAg
ICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4u
KQ0KICAgIA0KDQojbGluZSA4NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAg
ICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2
b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xv
Y2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAg
ICAgICAgX1Jlc3VsdCA9IF92ZnByaW50Zl9zX2woX1N0cmVhbSwgX0Zvcm1hdCwgX0xvY2FsZSwg
X0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAg
ICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgODcxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRpby5oIg0KDQogICAgDQoNCiAgICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBfX2Nk
ZWNsIGZwcmludGZfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUq
ICAgICAgIGNvbnN0IF9TdHJlYW0sDQogICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3Qg
X0Zvcm1hdCwNCiAgICAgICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgODgyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxzdGRpby5oIg0KICAgICAgICB7DQogICAgICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAg
ICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3Nl
cnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lk
KShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICAgICAgX1Jlc3Vs
dCA9IF92ZnByaW50Zl9zX2woX1N0cmVhbSwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgICAg
ICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgICAgIHJldHVy
biBfUmVzdWx0Ow0KICAgICAgICB9DQogICAgI2xpbmUgODkxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRp
by5oIg0KDQogICAgI2xpbmUgODkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQog
ICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX2ZwcmludGZfcF9sKA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRklMRSogICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAg
ICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgIC4u
LikNCiAgICANCg0KI2xpbmUgOTAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9M
b2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7DQog
ICAgICAgIF9SZXN1bHQgPSBfdmZwcmludGZfcF9sKF9TdHJlYW0sIF9Gb3JtYXQsIF9Mb2NhbGUs
IF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAg
ICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDkxMiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9mcHJpbnRmX3Ao
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgIGNvbnN0IF9TdHJl
YW0sDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4p
DQogICAgDQoNCiNsaW5lIDkyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAg
ICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZv
aWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9y
bWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAg
ICAgICBfUmVzdWx0ID0gX3ZmcHJpbnRmX3BfbChfU3RyZWFtLCBfRm9ybWF0LCAwLCBfQXJnTGlz
dCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJl
dHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSA5MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlv
LmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfcHJpbnRmX2woDQogICAgICAg
ICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4p
DQogICAgDQoNCiNsaW5lIDkzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAg
ICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZv
aWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9j
YWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KICAg
ICAgICBfUmVzdWx0ID0gX3ZmcHJpbnRmX2woKF9fYWNydF9pb2JfZnVuYygxKSksIF9Gb3JtYXQs
IF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0
KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDk0OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIHBy
aW50ZigNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgIC4u
LikNCiAgICANCg0KI2xpbmUgOTU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9G
b3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQog
ICAgICAgIF9SZXN1bHQgPSBfdmZwcmludGZfbCgoX19hY3J0X2lvYl9mdW5jKDEpKSwgX0Zvcm1h
dCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkp
Ow0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgOTY1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3ByaW50
Zl9zX2woDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBjb25zdCBfTG9jYWxl
LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDk3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8u
aCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0
Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5j
ZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xv
Y2FsZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3ZmcHJpbnRmX3NfbCgoX19hY3J0X2lvYl9m
dW5jKDEpKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9B
cmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQog
ICAgI2xpbmUgOTgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQoNCiAgICAgICAg
DQogICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIHByaW50Zl9zKA0KICAgICAgICAgICAgICAg
IGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAuLi4pDQogICAgDQoNCiNs
aW5lIDk5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICAgICAgew0KICAgICAgICAgICAg
aW50IF9SZXN1bHQ7DQogICAgICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAgICAg
KCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUo
X0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsN
CiAgICAgICAgICAgIF9SZXN1bHQgPSBfdmZwcmludGZfc19sKChfX2FjcnRfaW9iX2Z1bmMoMSkp
LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0g
KHZhX2xpc3QpMCkpOw0KICAgICAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgICAgIH0NCiAg
ICAjbGluZSAxMDAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgI2xpbmUgMTAwNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNs
IF9wcmludGZfcF9sKA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3Qg
X0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAxMDEzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3Qg
X0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3Rf
cmVmZXJlbmNlPGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdM
aXN0LCBfTG9jYWxlKSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdmZwcmludGZfcF9sKChfX2Fj
cnRfaW9iX2Z1bmMoMSkpLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgICAgICgo
dm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0K
ICAgIH0NCiAgICAjbGluZSAxMDIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQog
ICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3ByaW50Zl9wKA0KICAgICAgICAgICAgY2hhciBjb25z
dCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAxMDMwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAg
IHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFy
dF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3Rh
cnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdmZwcmludGZf
cF9sKChfX2FjcnRfaW9iX2Z1bmMoMSkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAg
ICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0
Ow0KICAgIH0NCiAgICAjbGluZSAxMDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQoNCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
IF9fY2RlY2wgX19zdGRpb19jb21tb25fdmZzY2FuZigNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBfT3B0aW9ucywNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSogICAgICAgICAgICBfU3RyZWFt
LA0KICAgICAgICAgICAgY2hhciBjb25zdCogICAgICBfRm9ybWF0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgICAgX0xvY2FsZSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAg
ICBfQXJnbGlzdA0KICAgICAgICApOw0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wg
X3Zmc2NhbmZfbCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSogICAgICAg
Y29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAg
X0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxMDY0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9fc3RkaW9fY29tbW9uX3Zmc2NhbmYoDQog
ICAgICAgICAgICAoKl9fbG9jYWxfc3RkaW9fc2NhbmZfb3B0aW9ucyAoKSksDQogICAgICAgICAg
ICBfU3RyZWFtLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5l
IDEwNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQg
X19jZGVjbCB2ZnNjYW5mKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFKiAg
ICAgICBjb25zdCBfU3RyZWFtLA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1h
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAg
ICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxMDgwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92ZnNjYW5mX2woX1N0cmVhbSwgX0Zv
cm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGluZSAxMDg0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zmc2NhbmZfc19s
KA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFKiAgICAgICBjb25zdCBfU3Ry
ZWFtLA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0K
ICAgICAgICApDQogICAgDQoNCiNsaW5lIDEwOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQog
ICAgew0KICAgICAgICByZXR1cm4gX19zdGRpb19jb21tb25fdmZzY2FuZigNCiAgICAgICAgICAg
ICgqX19sb2NhbF9zdGRpb19zY2FuZl9vcHRpb25zICgpKSB8ICgxVUxMIDw8IDApLA0KICAgICAg
ICAgICAgX1N0cmVhbSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAj
bGluZSAxMTAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQoNCiAgICANCg0KICAgICAgICAN
CiAgICAgICAgX19pbmxpbmUgaW50IF9fY2RlY2wgdmZzY2FuZl9zKA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRklMRSogICAgICAgY29uc3QgX1N0cmVhbSwNCiAgICAgICAg
ICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAg
ICAgICkNCiAgICANCg0KI2xpbmUgMTExNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICAg
ICAgew0KICAgICAgICAgICAgcmV0dXJuIF92ZnNjYW5mX3NfbChfU3RyZWFtLCBfRm9ybWF0LCAw
LCBfQXJnTGlzdCk7DQogICAgICAgIH0NCiAgICAjbGluZSAxMTE4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KDQogICAgI2xpbmUgMTEyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAg
IA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92c2NhbmZfbCgNCiAgICAgICAgICAgIGNoYXIg
Y29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xv
Y2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGlu
ZSAxMTMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92
ZnNjYW5mX2woKF9fYWNydF9pb2JfZnVuYygwKSksIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0
KTsNCiAgICB9DQogICAgI2xpbmUgMTEzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAg
IA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIHZzY2FuZigNCiAgICAgICAgICAgIGNoYXIgY29u
c3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhX2xpc3QgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTE0
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdmZzY2Fu
Zl9sKChfX2FjcnRfaW9iX2Z1bmMoMCkpLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0K
ICAgICNsaW5lIDExNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICANCiAgICBfX2lu
bGluZSBpbnQgX19jZGVjbCBfdnNjYW5mX3NfbCgNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNv
bnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAg
Y29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFf
bGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxMTU3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92ZnNjYW5mX3Nf
bCgoX19hY3J0X2lvYl9mdW5jKDApKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAg
IH0NCiAgICAjbGluZSAxMTYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQoNCiAg
ICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIHZzY2FuZl9zKA0KICAgICAgICAg
ICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICAg
ICAgKQ0KICAgIA0KDQojbGluZSAxMTcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgICAg
ICB7DQogICAgICAgICAgICByZXR1cm4gX3Zmc2NhbmZfc19sKChfX2FjcnRfaW9iX2Z1bmMoMCkp
LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgIH0NCiAgICAjbGluZSAxMTc2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgI2xpbmUgMTE3OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3Rk
aW8uaCINCg0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfZnNjYW5mX2woDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgIGNvbnN0IF9T
dHJlYW0sDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIGNvbnN0IF9Mb2NhbGUs
DQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTE4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8u
aCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0
Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5j
ZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xv
Y2FsZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmc2NhbmZfbChfU3RyZWFtLCBfRm9ybWF0
LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlz
dCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxMTk3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVj
bCBmc2NhbmYoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSogICAgICAgY29u
c3QgX1N0cmVhbSwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAg
ICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTIwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAg
ICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAg
ICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNs
dHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkp
KSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmc2NhbmZfbChfU3RyZWFtLCBfRm9ybWF0LCAwLCBf
QXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAg
ICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxMjE1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX2ZzY2FuZl9zX2wo
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSogICAgICAg
Y29uc3QgX1N0cmVhbSwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBjb25z
dCBfTG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDEyMjUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlz
dCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25v
dF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0Fy
Z0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92ZnNjYW5mX3NfbChfU3Ry
ZWFtLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xp
c3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAj
bGluZSAxMjM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQoNCiAgICAgICAgDQog
ICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIGZzY2FuZl9zKA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZJTEUqICAgICAgIGNvbnN0IF9TdHJlYW0sDQogICAgICAgICAg
ICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgIC4uLikNCiAgICAN
Cg0KI2xpbmUgMTI0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICAgICAgew0KICAgICAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAg
ICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVj
bHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQp
KSkpKTsNCiAgICAgICAgICAgIF9SZXN1bHQgPSBfdmZzY2FuZl9zX2woX1N0cmVhbSwgX0Zvcm1h
dCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0
KTApKTsNCiAgICAgICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgICAgICB9DQogICAgI2xpbmUg
MTI1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICNsaW5lIDEyNTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3NjYW5m
X2woDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIGNvbnN0IF9Mb2NhbGUsDQog
ICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTI2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCIN
CiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0K
ICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxk
ZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2Fs
ZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmc2NhbmZfbCgoX19hY3J0X2lvYl9mdW5jKDAp
KSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0
ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xp
bmUgMTI3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICAgDQogICAgX19pbmxpbmUg
aW50IF9fY2RlY2wgc2NhbmYoDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0
LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDEyODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlv
LmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlz
dDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVu
Y2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9G
b3JtYXQpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92ZnNjYW5mX2woKF9fYWNydF9pb2JfZnVu
YygwKSksIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9
ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5l
IDEyOTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQg
X19jZGVjbCBfc2NhbmZfc19sKA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1h
dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAg
IGNvbnN0IF9Mb2NhbGUsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMTMwMCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2
YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRf
aXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0
KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zmc2NhbmZfc19s
KChfX2FjcnRfaW9iX2Z1bmMoMCkpLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAg
ICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVz
dWx0Ow0KICAgIH0NCiAgICAjbGluZSAxMzA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQog
ICAgDQoNCiAgICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIHNjYW5mX3MoDQog
ICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgIC4u
LikNCiAgICANCg0KI2xpbmUgMTMxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICAgICAg
ew0KICAgICAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgICAgICB2YV9saXN0IF9BcmdMaXN0
Ow0KICAgICAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZl
cmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3Qs
IF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgICAgIF9SZXN1bHQgPSBfdmZzY2FuZl9zX2woKF9fYWNy
dF9pb2JfZnVuYygwKSksIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgICAgICgodm9p
ZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgICAgICByZXR1cm4gX1Jlc3VsdDsN
CiAgICAgICAgfQ0KICAgICNsaW5lIDEzMjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAg
ICAjbGluZSAxMzMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQoNCg0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9f
Y2RlY2wgX19zdGRpb19jb21tb25fdnNwcmludGYoDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0IF9PcHRpb25zLA0KICAgICAgICAg
ICAgICAgICBjaGFyKiAgICAgICAgICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgIF9CdWZmZXJDb3VudCwNCiAg
ICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICBf
QXJnTGlzdA0KICAgICAgICApOw0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnQgX19jZGVjbCBfX3N0ZGlvX2NvbW1vbl92c3ByaW50Zl9zKA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBfT3B0aW9ucywNCiAg
ICAgICAgICAgICAgICAgICAgIGNoYXIqICAgICAgICAgICAgX0J1ZmZlciwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgX0J1ZmZl
ckNvdW50LA0KICAgICAgICAgICAgY2hhciBjb25zdCogICAgICBfRm9ybWF0LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICAgIF9Mb2NhbGUs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0
ICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX2NkZWNsIF9fc3RkaW9fY29tbW9uX3ZzbnByaW50Zl9zKA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBf
T3B0aW9ucywNCiAgICAgICAgICAgICAgICAgY2hhciogICAgICAgICAgICBfQnVmZmVyLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAg
ICBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgICAgICAgICAgIF9NYXhDb3VudCwNCiAgICAgICAgICAgIGNoYXIgY29uc3Qq
ICAgICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X2xvY2FsZV90ICAgICAgICBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApOw0K
DQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX3N0ZGlvX2Nv
bW1vbl92c3ByaW50Zl9wKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgX19pbnQ2NCBfT3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgIGNo
YXIqICAgICAgICAgICAgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAg
Y2hhciBjb25zdCogICAgICBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfbG9jYWxlX3QgICAgICAgIF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgIF9BcmdMaXN0DQog
ICAgICAgICk7DQoNCiAgICAgDQogICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92c25w
cmludGZfbCgNCiAgICAgICAgICAgIGNoYXIqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIGNv
bnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zv
cm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9j
YWxlX3QgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICAp
DQogICAgDQoNCiNsaW5lIDEzOTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAg
ICAgICBpbnQgY29uc3QgX1Jlc3VsdCA9IF9fc3RkaW9fY29tbW9uX3ZzcHJpbnRmKA0KICAgICAg
ICAgICAgKCpfX2xvY2FsX3N0ZGlvX3ByaW50Zl9vcHRpb25zKCkpIHwgKDFVTEwgPDwgMCksDQog
ICAgICAgICAgICBfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdM
aXN0KTsNCg0KICAgICAgICByZXR1cm4gX1Jlc3VsdCA8IDAgPyAtMSA6IF9SZXN1bHQ7DQogICAg
fQ0KICAgICNsaW5lIDEzOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQogICAg
DQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3ZzbnByaW50ZigNCiAgICAgICAgICAgIGNoYXIq
ICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAg
IF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTQxMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
c3RkaW8uaCINCiAgICB7DQogICAgICAgIHJldHVybiBfdnNucHJpbnRmX2woX0J1ZmZlciwgX0J1
ZmZlckNvdW50LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDE0MTUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
NDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5l
IGludCBfX2NkZWNsIHZzbnByaW50ZigNCiAgICAgICAgICAgY2hhciogICAgICAgY29uc3QgX0J1
ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAg
ICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxNDM4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IGNvbnN0IF9SZXN1bHQgPSBfX3N0ZGlvX2Nv
bW1vbl92c3ByaW50ZigNCiAgICAgICAgICAgICgqX19sb2NhbF9zdGRpb19wcmludGZfb3B0aW9u
cygpKSB8ICgxVUxMIDw8IDEpLA0KICAgICAgICAgICAgX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBf
Rm9ybWF0LCAwLCBfQXJnTGlzdCk7DQoNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQgPCAwID8gLTEg
OiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5o
Ig0KDQogICAgIA0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnNwcmludGZfbCgN
CiAgICAgICAgICAgY2hhciogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0Fy
Z0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxNDU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRp
by5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92c25wcmludGZfbChfQnVmZmVyLCAoc2l6ZV90
KS0xLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDE0NjIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQogICAgIA0KICAgIF9faW5saW5lIGlu
dCBfX2NkZWNsIHZzcHJpbnRmKA0KICAgICAgICAgICBjaGFyKiAgICAgICBjb25zdCBfQnVmZmVy
LA0KICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QN
CiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAxNDczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIF92c25wcmludGZfbChfQnVmZmVyLCAoc2l6ZV90KS0xLCBf
Rm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDE0NzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN0ZGlvLmgiDQoNCiAgICAgDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zz
cHJpbnRmX3NfbCgNCiAgICAgICAgICAgY2hhciogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAg
IGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0
IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9sb2NhbGVfdCAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAg
ICAgICApDQogICAgDQoNCiNsaW5lIDE0OTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAg
ew0KICAgICAgICBpbnQgY29uc3QgX1Jlc3VsdCA9IF9fc3RkaW9fY29tbW9uX3ZzcHJpbnRmX3Mo
DQogICAgICAgICAgICAoKl9fbG9jYWxfc3RkaW9fcHJpbnRmX29wdGlvbnMoKSksDQogICAgICAg
ICAgICBfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsN
Cg0KICAgICAgICByZXR1cm4gX1Jlc3VsdCA8IDAgPyAtMSA6IF9SZXN1bHQ7DQogICAgfQ0KICAg
ICNsaW5lIDE0OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICANCg0KICAgICAgICAg
DQogICAgICAgIA0KICAgICAgICBfX2lubGluZSBpbnQgX19jZGVjbCB2c3ByaW50Zl9zKA0KICAg
ICAgICAgICAgICAgY2hhciogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBjb25zdCBf
QnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qq
IGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgICAg
ICkNCiAgICANCg0KI2xpbmUgMTUxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICAgICAg
ew0KICAgICAgICAgICAgcmV0dXJuIF92c3ByaW50Zl9zX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50
LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgIH0NCiAgICAjbGluZSAxNTE2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgICAgIGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxz
aXplX3QgX1NpemU+IGlubGluZSAgIGludCBfX2NkZWNsIHZzcHJpbnRmX3MoIGNoYXIgKCZfQnVm
ZmVyKVtfU2l6ZV0sICAgICBjaGFyIGNvbnN0KiBfRm9ybWF0LCB2YV9saXN0IF9BcmdMaXN0KSB0
aHJvdygpIHsgcmV0dXJuIHZzcHJpbnRmX3MoX0J1ZmZlciwgX1NpemUsIF9Gb3JtYXQsIF9BcmdM
aXN0KTsgfSB9DQojbGluZSAxNTI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgI2xp
bmUgMTUyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lu
bGluZSBpbnQgX19jZGVjbCBfdnNwcmludGZfcF9sKA0KICAgICAgICAgICBjaGFyKiAgICAgICBj
b25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAg
ICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAg
ICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTUzOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBjb25zdCBfUmVzdWx0ID0gX19zdGRp
b19jb21tb25fdnNwcmludGZfcCgNCiAgICAgICAgICAgICgqX19sb2NhbF9zdGRpb19wcmludGZf
b3B0aW9ucygpKSwNCiAgICAgICAgICAgIF9CdWZmZXIsIF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwg
X0xvY2FsZSwgX0FyZ0xpc3QpOw0KDQogICAgICAgIHJldHVybiBfUmVzdWx0IDwgMCA/IC0xIDog
X1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTU0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCIN
Cg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnNwcmludGZfcCgNCiAg
ICAgICAgICAgY2hhciogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIGNvbnN0IF9CdWZmZXJD
b3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9y
bWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAx
NTU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92c3By
aW50Zl9wX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQog
ICAgfQ0KICAgICNsaW5lIDE1NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQog
ICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3ZzbnByaW50Zl9zX2woDQogICAgICAgICAg
IGNoYXIqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1ZmZlckNvdW50
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAgICAgIGNvbnN0IF9NYXhDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICBjaGFy
IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAg
ICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTU3NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBjb25zdCBfUmVzdWx0ID0gX19zdGRp
b19jb21tb25fdnNucHJpbnRmX3MoDQogICAgICAgICAgICAoKl9fbG9jYWxfc3RkaW9fcHJpbnRm
X29wdGlvbnMoKSksDQogICAgICAgICAgICBfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9NYXhDb3Vu
dCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KDQogICAgICAgIHJldHVybiBfUmVzdWx0
IDwgMCA/IC0xIDogX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTU4NSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdnNu
cHJpbnRmX3MoDQogICAgICAgICAgIGNoYXIqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAg
ICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIGNvbnN0IF9NYXhDb3VudCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDE1OTgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3ZzbnByaW50
Zl9zX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBfTWF4Q291bnQsIF9Gb3JtYXQsIDAsIF9BcmdM
aXN0KTsNCiAgICB9DQogICAgI2xpbmUgMTYwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0K
ICAgIGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSAgIGludCBf
X2NkZWNsIF92c25wcmludGZfcyggY2hhciAoJl9CdWZmZXIpW19TaXplXSwgICBzaXplX3QgX0J1
ZmZlckNvdW50LCAgICAgY2hhciBjb25zdCogX0Zvcm1hdCwgdmFfbGlzdCBfQXJnTGlzdCkgdGhy
b3coKSB7IHJldHVybiBfdnNucHJpbnRmX3MoX0J1ZmZlciwgX1NpemUsIF9CdWZmZXJDb3VudCwg
X0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IH0NCiNsaW5lIDE2MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlv
LmgiDQoNCiAgICANCg0KICAgICAgICAgDQogICAgICAgIA0KICAgICAgICBfX2lubGluZSBpbnQg
X19jZGVjbCB2c25wcmludGZfcygNCiAgICAgICAgICAgICAgIGNoYXIqICAgICAgIGNvbnN0IF9C
dWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAg
Y29uc3QgX01heENvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgX0FyZ0xpc3QN
CiAgICAgICAgICAgICkNCiAgICANCg0KI2xpbmUgMTYyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8u
aCINCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIF92c25wcmludGZfc19sKF9CdWZmZXIs
IF9CdWZmZXJDb3VudCwgX01heENvdW50LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAg
IH0NCiAgICAjbGluZSAxNjMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgICAgIGV4
dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSAgIGludCBfX2NkZWNs
IHZzbnByaW50Zl9zKCBjaGFyICgmX0J1ZmZlcilbX1NpemVdLCAgIHNpemVfdCBfQnVmZmVyQ291
bnQsICAgICBjaGFyIGNvbnN0KiBfRm9ybWF0LCB2YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsg
cmV0dXJuIHZzbnByaW50Zl9zKF9CdWZmZXIsIF9TaXplLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQs
IF9BcmdMaXN0KTsgfSB9DQojbGluZSAxNjM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQog
ICAgI2xpbmUgMTY0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5s
aW5lIGludCBfX2NkZWNsIF92c2NwcmludGZfbCgNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNv
bnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9s
b2NhbGVfdCAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQog
ICAgDQoNCiNsaW5lIDE2NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAg
ICBpbnQgY29uc3QgX1Jlc3VsdCA9IF9fc3RkaW9fY29tbW9uX3ZzcHJpbnRmKA0KICAgICAgICAg
ICAgKCpfX2xvY2FsX3N0ZGlvX3ByaW50Zl9vcHRpb25zKCkpIHwgKDFVTEwgPDwgMSksDQogICAg
ICAgICAgICAwLCAwLCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQoNCiAgICAgICAgcmV0
dXJuIF9SZXN1bHQgPCAwID8gLTEgOiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNjU5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNs
IF92c2NwcmludGYoDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJn
TGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDE2NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlv
LmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3ZzY3ByaW50Zl9sKF9Gb3JtYXQsIDAsIF9BcmdM
aXN0KTsNCiAgICB9DQogICAgI2xpbmUgMTY3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0K
ICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92c2NwcmludGZfcF9sKA0KICAgICAgICAg
ICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgIF9BcmdM
aXN0DQogICAgICAgICkNCiAgICANCg0KI2xpbmUgMTY4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8u
aCINCiAgICB7DQogICAgICAgIGludCBjb25zdCBfUmVzdWx0ID0gX19zdGRpb19jb21tb25fdnNw
cmludGZfcCgNCiAgICAgICAgICAgICgqX19sb2NhbF9zdGRpb19wcmludGZfb3B0aW9ucygpKSB8
ICgxVUxMIDw8IDEpLA0KICAgICAgICAgICAgMCwgMCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xp
c3QpOw0KDQogICAgICAgIHJldHVybiBfUmVzdWx0IDwgMCA/IC0xIDogX1Jlc3VsdDsNCiAgICB9
DQogICAgI2xpbmUgMTY5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICANCiAgICBf
X2lubGluZSBpbnQgX19jZGVjbCBfdnNjcHJpbnRmX3AoDQogICAgICAgICAgICBjaGFyIGNvbnN0
KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDE2OTkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3ZzY3ByaW50
Zl9wX2woX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGluZSAxNzAzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zz
bnByaW50Zl9jX2woDQogICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgY29uc3QgX0J1ZmZl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAg
ICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9G
b3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVf
dCAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQogICAgDQoN
CiNsaW5lIDE3MTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQg
Y29uc3QgX1Jlc3VsdCA9IF9fc3RkaW9fY29tbW9uX3ZzcHJpbnRmKA0KICAgICAgICAgICAgKCpf
X2xvY2FsX3N0ZGlvX3ByaW50Zl9vcHRpb25zKCkpLA0KICAgICAgICAgICAgX0J1ZmZlciwgX0J1
ZmZlckNvdW50LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQoNCiAgICAgICAgcmV0dXJu
IF9SZXN1bHQgPCAwID8gLTEgOiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAxNzIzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgIA0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2Nk
ZWNsIF92c25wcmludGZfYygNCiAgICAgICAgICBjaGFyKiAgICAgICBjb25zdCBfQnVmZmVyLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1
ZmZlckNvdW50LA0KICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJn
TGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDE3MzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlv
LmgiDQogICAgew0KICAgICAgICByZXR1cm4gX3ZzbnByaW50Zl9jX2woX0J1ZmZlciwgX0J1ZmZl
ckNvdW50LCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0KICAgICNsaW5lIDE3MzkgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQogICAgIA0KICAgIF9faW5saW5lIGludCBf
X2NkZWNsIF9zcHJpbnRmX2woDQogICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICBjb25zdCBf
QnVmZmVyLA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2Fs
ZSwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAxNzUwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRp
by5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xp
c3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJl
bmNlPGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBf
TG9jYWxlKSkpKSk7DQoNCiAgICAgICAgX1Jlc3VsdCA9IF92c3ByaW50Zl9sKF9CdWZmZXIsIF9G
b3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0g
KHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUg
MTc2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICANCiAgICANCiAgICBfX2lubGlu
ZSBpbnQgX19jZGVjbCBzcHJpbnRmKA0KICAgICAgICAgICBjaGFyKiAgICAgICBjb25zdCBfQnVm
ZmVyLA0KICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAg
Li4uKQ0KICAgIA0KDQojbGluZSAxNzcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsN
CiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAg
ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBl
KF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7
DQoNCiAgICAgICAgX1Jlc3VsdCA9IF92c3ByaW50Zl9sKF9CdWZmZXIsIF9Gb3JtYXQsIDAsIF9B
cmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAg
ICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTc4MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkaW8uaCINCg0KICAgIF9faW5saW5lICBpbnQgX19jZGVjbCBfX2luc2VjdXJlX3ZzcHJp
bnRmKCAgY2hhciAqX0J1ZmZlciwgIGNoYXIgY29uc3QqIF9Gb3JtYXQsIHZhX2xpc3QgX0FyZ0xp
c3QpIHsgIGludCBfX2NkZWNsIHZzcHJpbnRmKCAgY2hhciAqX0J1ZmZlciwgIGNoYXIgY29uc3Qq
IF9Gb3JtYXQsIHZhX2xpc3QgX0FyZ0xpc3QpOyByZXR1cm4gdnNwcmludGYoX0J1ZmZlciwgX0Zv
cm1hdCwgX0FyZ0xpc3QpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4g
aW5saW5lICAgaW50IF9fY2RlY2wgc3ByaW50ZihfVCAmX0J1ZmZlciwgIGNoYXIgY29uc3QqIF9G
b3JtYXQsIC4uLikgdGhyb3coKSB7IHZhX2xpc3QgX0FyZ0xpc3Q7ICgodm9pZCkoX192Y3J0X2Fz
c2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZv
aWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7IHJldHVybiBfX2luc2VjdXJl
X3ZzcHJpbnRmKHN0YXRpY19jYXN0PGNoYXIgKj4oX0J1ZmZlciksIF9Gb3JtYXQsIF9BcmdMaXN0
KTsgfSB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgIGludCBfX2NkZWNsIHNwcmludGYo
Y29uc3QgX1QgJl9CdWZmZXIsICBjaGFyIGNvbnN0KiBfRm9ybWF0LCAuLi4pIHRocm93KCkgeyB2
YV9saXN0IF9BcmdMaXN0OyAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3Jl
ZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlz
dCwgX0Zvcm1hdCkpKSkpOyByZXR1cm4gX19pbnNlY3VyZV92c3ByaW50ZihzdGF0aWNfY2FzdDxj
aGFyICo+KF9CdWZmZXIpLCBfRm9ybWF0LCBfQXJnTGlzdCk7IH0gdGVtcGxhdGUgPD4gaW5saW5l
ICAgaW50IF9fY2RlY2wgc3ByaW50ZiggIGNoYXIgKiAmX0J1ZmZlciwgIGNoYXIgY29uc3QqIF9G
b3JtYXQsIC4uLikgdGhyb3coKSB7IHZhX2xpc3QgX0FyZ0xpc3Q7ICgodm9pZCkoX192Y3J0X2Fz
c2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZv
aWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7IHJldHVybiBfX2luc2VjdXJl
X3ZzcHJpbnRmKF9CdWZmZXIsIF9Gb3JtYXQsIF9BcmdMaXN0KTsgfSB0ZW1wbGF0ZSA8c2l6ZV90
IF9TaXplPiBpbmxpbmUgIGludCBfX2NkZWNsIHNwcmludGYoY2hhciAoJl9CdWZmZXIpW19TaXpl
XSwgIGNoYXIgY29uc3QqIF9Gb3JtYXQsIC4uLikgdGhyb3coKSB7IHZhX2xpc3QgX0FyZ0xpc3Q7
ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBl
KF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7
IHJldHVybiAodnNwcmludGZfcyhfQnVmZmVyLCBfU2l6ZSwgX0Zvcm1hdCwgX0FyZ0xpc3QpKTsg
fSB0ZW1wbGF0ZSA8PiBpbmxpbmUgICBpbnQgX19jZGVjbCBzcHJpbnRmPDE+KGNoYXIgKCZfQnVm
ZmVyKVsxXSwgIGNoYXIgY29uc3QqIF9Gb3JtYXQsIC4uLikgdGhyb3coKSB7IHZhX2xpc3QgX0Fy
Z0xpc3Q7ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRl
Y2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0
KSkpKSk7IHJldHVybiAodnNwcmludGZfcyhfQnVmZmVyLCAxLCBfRm9ybWF0LCBfQXJnTGlzdCkp
OyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICAgaW50IF9fY2RlY2wgdnNwcmludGYo
X1QgJl9CdWZmZXIsICBjaGFyIGNvbnN0KiBfRm9ybWF0LCB2YV9saXN0IF9BcmdMaXN0KSB0aHJv
dygpIHsgcmV0dXJuIF9faW5zZWN1cmVfdnNwcmludGYoc3RhdGljX2Nhc3Q8Y2hhciAqPihfQnVm
ZmVyKSwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5l
ICAgaW50IF9fY2RlY2wgdnNwcmludGYoY29uc3QgX1QgJl9CdWZmZXIsICBjaGFyIGNvbnN0KiBf
Rm9ybWF0LCB2YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfdnNw
cmludGYoc3RhdGljX2Nhc3Q8Y2hhciAqPihfQnVmZmVyKSwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9
IHRlbXBsYXRlIDw+IGlubGluZSAgIGludCBfX2NkZWNsIHZzcHJpbnRmKCAgY2hhciAqJl9CdWZm
ZXIsICBjaGFyIGNvbnN0KiBfRm9ybWF0LCB2YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsgcmV0
dXJuIF9faW5zZWN1cmVfdnNwcmludGYoX0J1ZmZlciwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IHRl
bXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSAgaW50IF9fY2RlY2wgdnNwcmludGYoY2hhciAo
Jl9CdWZmZXIpW19TaXplXSwgIGNoYXIgY29uc3QqIF9Gb3JtYXQsIHZhX2xpc3QgX0FyZ0xpc3Qp
IHRocm93KCkgeyByZXR1cm4gKHZzcHJpbnRmX3MoX0J1ZmZlciwgX1NpemUsIF9Gb3JtYXQsIF9B
cmdMaXN0KSk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICAgaW50IF9fY2RlY2wgdnNwcmludGY8MT4o
Y2hhciAoJl9CdWZmZXIpWzFdLCAgY2hhciBjb25zdCogX0Zvcm1hdCwgdmFfbGlzdCBfQXJnTGlz
dCkgdGhyb3coKSB7IHJldHVybiAodnNwcmludGZfcyhfQnVmZmVyLCAxLCBfRm9ybWF0LCBfQXJn
TGlzdCkpOyB9IH0NCiNsaW5lIDE3ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAg
DQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3NwcmludGZfc19sKA0KICAgICAgICAg
ICBjaGFyKiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0K
ICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xv
Y2FsZSwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAxODAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0Fy
Z0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVm
ZXJlbmNlPGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0
LCBfTG9jYWxlKSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdnNwcmludGZfc19sKF9CdWZmZXIs
IF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZv
aWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAg
ICB9DQogICAgI2xpbmUgMTgxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KDQog
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIF9faW5saW5lIGludCBfX2NkZWNsIHNwcmludGZf
cygNCiAgICAgICAgICAgICAgIGNoYXIqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAg
Y29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAx
ODIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgICAgICB7DQogICAgICAgICAgICBpbnQg
X1Jlc3VsdDsNCiAgICAgICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICAgICAoKHZv
aWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9y
bWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAg
ICAgICAgICAgX1Jlc3VsdCA9IF92c3ByaW50Zl9zX2woX0J1ZmZlciwgX0J1ZmZlckNvdW50LCBf
Rm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZh
X2xpc3QpMCkpOw0KICAgICAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgICAgIH0NCiAgICAj
bGluZSAxODMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgI2xpbmUgMTgzNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXpl
X3QgX1NpemU+IGlubGluZSAgIGludCBfX2NkZWNsIHNwcmludGZfcyggY2hhciAoJl9CdWZmZXIp
W19TaXplXSwgICAgIGNoYXIgY29uc3QqIF9Gb3JtYXQsIC4uLikgdGhyb3coKSB7IHZhX2xpc3Qg
X0FyZ0xpc3Q7ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNl
PGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9y
bWF0KSkpKSk7IHJldHVybiB2c3ByaW50Zl9zKF9CdWZmZXIsIF9TaXplLCBfRm9ybWF0LCBfQXJn
TGlzdCk7IH0gfQ0KI2xpbmUgMTg0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICAN
CiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfc3ByaW50Zl9wX2woDQogICAgICAgICAg
IGNoYXIqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQog
ICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBjb25zdCBfTG9j
YWxlLA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDE4NTMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0
ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJn
TGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZl
cmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3Qs
IF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c3ByaW50Zl9wX2woX0J1ZmZlciwg
X0J1ZmZlckNvdW50LCBfRm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9p
ZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAg
IH0NCiAgICAjbGluZSAxODYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgIA0KICAg
IA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9zcHJpbnRmX3AoDQogICAgICAgICAgIGNoYXIq
ICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAg
Li4uKQ0KICAgIA0KDQojbGluZSAxODczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsN
CiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAg
ICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBl
KF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7
DQogICAgICAgIF9SZXN1bHQgPSBfdnNwcmludGZfcF9sKF9CdWZmZXIsIF9CdWZmZXJDb3VudCwg
X0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xp
c3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTg4MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICANCiAgICAgDQogICAgX19pbmxpbmUgaW50
IF9fY2RlY2wgX3NucHJpbnRmX2woDQogICAgICAgICAgICBjaGFyKiAgICAgICBjb25zdCBfQnVm
ZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgIGNoYXIgY29u
c3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KICAgIA0K
DQojbGluZSAxODk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50
IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192
Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Mb2NhbGUpPigp
LCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7DQoNCiAgICAgICAg
X1Jlc3VsdCA9IF92c25wcmludGZfbChfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9M
b2NhbGUsIF9BcmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3Qp
MCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMTkwNSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5MTYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQogICAgDQogICAgX19pbmxpbmUgaW50
IF9fY2RlY2wgc25wcmludGYoDQogICAgICAgICAgIGNoYXIqICAgICAgIGNvbnN0IF9CdWZmZXIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoN
CiNsaW5lIDE5MjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQg
X1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3Zj
cnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCks
ICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgX1Jl
c3VsdCA9IHZzbnByaW50ZihfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9BcmdMaXN0
KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0
dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDE5MzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlv
LmgiDQoNCiAgICAgDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3NucHJpbnRmKA0K
ICAgICAgICAgICAgY2hhciogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1ZmZl
ckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zv
cm1hdCwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAxOTQ3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0Fy
Z0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVm
ZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0
LCBfRm9ybWF0KSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdnNucHJpbnRmKF9CdWZmZXIsIF9C
dWZmZXJDb3VudCwgX0Zvcm1hdCwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0
ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xp
bmUgMTk1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICAgICBpbnQgX19jZGVjbCBf
c25wcmludGYoICAgIGNoYXIgKl9CdWZmZXIsICAgc2l6ZV90IF9CdWZmZXJDb3VudCwgICAgIGNo
YXIgY29uc3QqIF9Gb3JtYXQsIC4uLik7ICAgICBpbnQgX19jZGVjbCBfdnNucHJpbnRmKCAgICBj
aGFyICpfQnVmZmVyLCAgIHNpemVfdCBfQnVmZmVyQ291bnQsICAgICBjaGFyIGNvbnN0KiBfRm9y
bWF0LCB2YV9saXN0IF9BcmdzKTsNCiNsaW5lIDE5NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgi
DQoNCiAgICAgDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3NucHJpbnRmX2NfbCgN
CiAgICAgICAgICAgICAgICAgICBjaGFyKiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1
ZmZlckNvdW50LA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xv
Y2FsZSwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAxOTc3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0Fy
Z0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVm
ZXJlbmNlPGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0
LCBfTG9jYWxlKSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdnNucHJpbnRmX2NfbChfQnVmZmVy
LCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2
b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQog
ICAgfQ0KICAgICNsaW5lIDE5ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQog
ICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3NucHJpbnRmX2MoDQogICAgICAgICAgY2hh
ciogICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICBjaGFyIGNv
bnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDE5OTcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAg
ICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0
YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9pZCkoX192YV9z
dGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c25wcmlu
dGZfY19sKF9CdWZmZXIsIF9CdWZmZXJDb3VudCwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAg
ICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jl
c3VsdDsNCiAgICB9DQogICAgI2xpbmUgMjAwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0K
ICAgICANCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfc25wcmludGZfc19sKA0KICAg
ICAgICAgICBjaGFyKiAgICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIGNvbnN0IF9CdWZm
ZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgICAgICBjb25zdCBfTWF4Q291bnQsDQogICAgICAgICAgICAgICAgICAg
ICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgIGNvbnN0IF9Mb2NhbGUsDQogICAg
ICAgIC4uLikNCiAgICANCg0KI2xpbmUgMjAxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAg
ICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAg
ICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNs
dHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkp
KSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3ZzbnByaW50Zl9zX2woX0J1ZmZlciwgX0J1ZmZlckNv
dW50LCBfTWF4Q291bnQsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2
b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQog
ICAgfQ0KICAgICNsaW5lIDIwMjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQog
ICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3NucHJpbnRmX3MoDQogICAgICAgICAgIGNo
YXIqICAgICAgIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY29uc3QgX0J1ZmZlckNvdW50LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCAgICAgIGNvbnN0IF9NYXhDb3VudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQojbGlu
ZSAyMDQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1
bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fz
c2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZv
aWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQogICAgICAgIF9SZXN1bHQg
PSBfdnNucHJpbnRmX3NfbChfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9NYXhDb3VudCwgX0Zvcm1h
dCwgMCwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkp
Ow0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMjA0OSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RkaW8uaCINCg0KICAgIGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3Qg
X1NpemU+IGlubGluZSAgIGludCBfX2NkZWNsIF9zbnByaW50Zl9zKCBjaGFyICgmX0J1ZmZlcilb
X1NpemVdLCAgIHNpemVfdCBfQnVmZmVyQ291bnQsICAgICBjaGFyIGNvbnN0KiBfRm9ybWF0LCAu
Li4pIHRocm93KCkgeyB2YV9saXN0IF9BcmdMaXN0OyAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFf
c3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3Zh
X3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOyByZXR1cm4gX3ZzbnByaW50Zl9zKF9CdWZm
ZXIsIF9TaXplLCBfQnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9BcmdMaXN0KTsgfSB9DQojbGluZSAy
MDU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9f
Y2RlY2wgX3NjcHJpbnRmX2woDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBj
b25zdCBfTG9jYWxlLA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5lIDIwNjYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFf
bGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lz
X25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgm
X0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92c2NwcmludGZfbChf
Rm9ybWF0LCBfTG9jYWxlLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAo
dmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAy
MDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgIA0KICAgIF9faW5saW5lIGludCBf
X2NkZWNsIF9zY3ByaW50ZigNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQs
DQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMjA4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8u
aCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0
Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5j
ZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zv
cm1hdCkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3ZzY3ByaW50Zl9sKF9Gb3JtYXQsIDAsIF9B
cmdMaXN0KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAg
ICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDIwOTIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XHN0ZGlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfc2NwcmludGZfcF9s
KA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAg
ICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAyMTAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0K
ICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQog
ICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRl
Y2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxl
KSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdnNjcHJpbnRmX3BfbChfRm9ybWF0LCBfTG9jYWxl
LCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQog
ICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAyMTEwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFxzdGRpby5oIg0KDQogICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9zY3ByaW50
Zl9wKA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgLi4u
KQ0KICAgIA0KDQojbGluZSAyMTE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9G
b3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQog
ICAgICAgIF9SZXN1bHQgPSBfdnNjcHJpbnRmX3AoX0Zvcm1hdCwgX0FyZ0xpc3QpOw0KICAgICAg
ICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3Vs
dDsNCiAgICB9DQogICAgI2xpbmUgMjEyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
X19jZGVjbCBfX3N0ZGlvX2NvbW1vbl92c3NjYW5mKA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0IF9PcHRpb25zLA0KICAgICAgICAg
ICAgICAgICAgY2hhciBjb25zdCogICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgIF9CdWZmZXJDb3VudCwNCiAg
ICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICAgIF9Mb2NhbGUsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgX0Fy
Z0xpc3QNCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92c3Nj
YW5mX2woDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25z
dCBfQnVmZmVyLA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBjb25zdCBfTG9jYWxlLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICBfQXJn
TGlzdA0KICAgICAgICApDQogICAgDQoNCiNsaW5lIDIxNTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlv
LmgiDQogICAgew0KICAgICAgICByZXR1cm4gX19zdGRpb19jb21tb25fdnNzY2FuZigNCiAgICAg
ICAgICAgICgqX19sb2NhbF9zdGRpb19zY2FuZl9vcHRpb25zICgpKSwNCiAgICAgICAgICAgIF9C
dWZmZXIsIChzaXplX3QpLTEsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICB9DQog
ICAgI2xpbmUgMjE1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5s
aW5lIGludCBfX2NkZWNsIHZzc2NhbmYoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29u
c3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlz
dCAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAyMTY4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92c3NjYW5mX2woX0J1
ZmZlciwgX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiAgICAjbGluZSAyMTcyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zz
c2NhbmZfc19sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCog
Y29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAg
X0FyZ0xpc3QNCiAgICAgICAgKQ0KICAgIA0KDQojbGluZSAyMTgzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxz
dGRpby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9fc3RkaW9fY29tbW9uX3Zzc2NhbmYoDQog
ICAgICAgICAgICAoKl9fbG9jYWxfc3RkaW9fc2NhbmZfb3B0aW9ucyAoKSkgfCAoMVVMTCA8PCAw
KSwNCiAgICAgICAgICAgIF9CdWZmZXIsIChzaXplX3QpLTEsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9B
cmdMaXN0KTsNCiAgICB9DQogICAgI2xpbmUgMjE4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCIN
Cg0KICAgIA0KDQogICAgICAgICNwcmFnbWEgd2FybmluZyhwdXNoKQ0KICAgICAgICAjcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNjUzMCkgDQoNCiAgICAgICAgDQogICAgICAgIF9faW5saW5lIGlu
dCBfX2NkZWNsIHZzc2NhbmZfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiBjb25zdCBfQnVmZmVyLA0KICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qq
IGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YV9saXN0ICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICAgICAgKQ0KICAgIA0KDQojbGlu
ZSAyMjA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgICAgICB7DQogICAgICAgICAgICBy
ZXR1cm4gX3Zzc2NhbmZfc19sKF9CdWZmZXIsIF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAg
ICAgfQ0KICAgICNsaW5lIDIyMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgICAg
ZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGludCBfX2NkZWNs
IHZzc2NhbmZfcyggIGNoYXIgY29uc3QgKCZfQnVmZmVyKVtfU2l6ZV0sICAgICBjaGFyIGNvbnN0
KiBfRm9ybWF0LCB2YV9saXN0IF9BcmdMaXN0KSB0aHJvdygpIHsgcmV0dXJuIHZzc2NhbmZfcyhf
QnVmZmVyLCBfU2l6ZSwgX0Zvcm1hdCwgX0FyZ0xpc3QpOyB9IH0NCiNsaW5lIDIyMTUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgICAgI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KICAg
ICNsaW5lIDIyMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAgDQogICAgX19pbmxp
bmUgaW50IF9fY2RlY2wgX3NzY2FuZl9sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgIGNoYXIg
Y29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KICAgIA0KDQoj
bGluZSAyMjI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAgICAgICAgaW50IF9S
ZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgodm9pZCkoX192Y3J0
X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAo
KHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7DQogICAgICAgIF9SZXN1
bHQgPSBfdnNzY2FuZl9sKF9CdWZmZXIsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAg
ICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9S
ZXN1bHQ7DQogICAgfQ0KICAgICNsaW5lIDIyMzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoN
CiAgICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIHNzY2FuZigNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAg
IGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUg
MjI0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0
Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3Nl
cnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lk
KShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0g
X3Zzc2NhbmZfbChfQnVmZmVyLCBfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9p
ZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAg
IH0NCiAgICAjbGluZSAyMjU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgDQogICAg
X19pbmxpbmUgaW50IF9fY2RlY2wgX3NzY2FuZl9zX2woDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9CdWZmZXIsDQogICAgICAg
ICAgICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4u
KQ0KICAgIA0KDQojbGluZSAyMjY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9M
b2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7DQog
ICAgICAgIF9SZXN1bHQgPSBfdnNzY2FuZl9zX2woX0J1ZmZlciwgX0Zvcm1hdCwgX0xvY2FsZSwg
X0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAg
ICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMjI3NSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkaW8uaCINCg0KICAgIA0KDQogICAgICAgIA0KICAgICAgICBfX2lubGluZSBpbnQgX19j
ZGVjbCBzc2NhbmZfcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciBjb25zdCogY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25z
dCBfRm9ybWF0LA0KICAgICAgICAgICAgLi4uKQ0KICAgIA0KDQojbGluZSAyMjg2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxzdGRpby5oIg0KICAgICAgICB7DQogICAgICAgICAgICBpbnQgX1Jlc3VsdDsNCiAg
ICAgICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICAgICAoKHZvaWQpKF9fdmNydF9h
c3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2
b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KDQogICAgICAgICAgICBf
UmVzdWx0ID0gdnNzY2FuZl9zKF9CdWZmZXIsIF9Gb3JtYXQsIF9BcmdMaXN0KTsNCg0KICAgICAg
ICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgICAgIHJldHVy
biBfUmVzdWx0Ow0KICAgICAgICB9DQogICAgI2xpbmUgMjI5NyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3Rk
aW8uaCINCg0KICAgICNsaW5lIDIyOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQoNCiAgICAj
cHJhZ21hIHdhcm5pbmcocHVzaCkNCiAgICAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNjUzMCkg
DQoNCiAgICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Nuc2NhbmZfbCgNCiAgICAgICAg
ICAgIGNoYXIgY29uc3QqIGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAg
ICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4u
KQ0KICAgIA0KDQojbGluZSAyMzEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9M
b2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9jYWxlKSkpKSk7DQoN
CiAgICAgICAgX1Jlc3VsdCA9IF9fc3RkaW9fY29tbW9uX3Zzc2NhbmYoDQogICAgICAgICAgICAo
Kl9fbG9jYWxfc3RkaW9fc2NhbmZfb3B0aW9ucyAoKSksDQogICAgICAgICAgICBfQnVmZmVyLCBf
QnVmZmVyQ291bnQsIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCg0KICAgICAgICAoKHZv
aWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAg
ICB9DQogICAgI2xpbmUgMjMyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICANCiAg
ICBfX2lubGluZSBpbnQgX19jZGVjbCBfc25zY2FuZigNCiAgICAgICAgICAgIGNoYXIgY29uc3Qq
IGNvbnN0IF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAgICAgIGNvbnN0IF9CdWZmZXJDb3VudCwNCiAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4pDQogICAgDQoNCiNsaW5l
IDIzMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3Vs
dDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNz
ZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0Zvcm1hdCk+KCksICgodm9p
ZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Gb3JtYXQpKSkpKTsNCg0KICAgICAgICBfUmVzdWx0
ID0gX19zdGRpb19jb21tb25fdnNzY2FuZigNCiAgICAgICAgICAgICgqX19sb2NhbF9zdGRpb19z
Y2FuZl9vcHRpb25zICgpKSwNCiAgICAgICAgICAgIF9CdWZmZXIsIF9CdWZmZXJDb3VudCwgX0Zv
cm1hdCwgMCwgX0FyZ0xpc3QpOw0KDQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlz
dCkwKSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiAgICAjbGluZSAyMzQ5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVj
bCBfc25zY2FuZl9zX2woDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0IF9CdWZmZXIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAg
ICAgY29uc3QgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QgX0Zv
cm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVf
dCAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMjM2MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAg
ICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3Rh
cnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4oKSwgKCh2b2lkKShfX3ZhX3N0
YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KDQogICAgICAgIF9SZXN1bHQgPSBfX3N0ZGlv
X2NvbW1vbl92c3NjYW5mKA0KICAgICAgICAgICAgKCpfX2xvY2FsX3N0ZGlvX3NjYW5mX29wdGlv
bnMgKCkpIHwgKDFVTEwgPDwgMCksDQogICAgICAgICAgICBfQnVmZmVyLCBfQnVmZmVyQ291bnQs
IF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0
ID0gKHZhX2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xp
bmUgMjM3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGlu
dCBfX2NkZWNsIF9zbnNjYW5mX3MoDQogICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCBfQnVm
ZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ICAgICBjb25zdCBfQnVmZmVyQ291bnQsDQogICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qq
IGNvbnN0IF9Gb3JtYXQsDQogICAgICAgIC4uLikNCiAgICANCg0KI2xpbmUgMjM4NCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3RkaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2
YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRf
aXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0
KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KDQogICAgICAgIF9SZXN1bHQgPSBfX3N0ZGlvX2Nv
bW1vbl92c3NjYW5mKA0KICAgICAgICAgICAgKCpfX2xvY2FsX3N0ZGlvX3NjYW5mX29wdGlvbnMg
KCkpIHwgKDFVTEwgPDwgMCksDQogICAgICAgICAgICBfQnVmZmVyLCBfQnVmZmVyQ291bnQsIF9G
b3JtYXQsIDAsIF9BcmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xp
c3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQogICAgI2xpbmUgMjM5NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KICAgICNwcmFnbWEgd2FybmluZyhwb3ApDQoNCiAg
ICANCg0KI2xpbmUgMjQwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3RkaW8uaCINCg0KDQoNCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgICAgICANCg0KICAgICAgICANCg0KDQoj
bGluZSAyNDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQogICAgICAgIF9fZGVjbHNwZWMo
ZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJ
bnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfdGVt
cG5hbSIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgICAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY2hhciogX19jZGVjbCB0ZW1wbmFtKA0KICAgICAgICAgICAgICBjaGFy
IGNvbnN0KiBfRGlyZWN0b3J5LA0KICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfRmlsZVByZWZp
eA0KICAgICAgICAgICAgKTsNCg0KICAgICAgICANCg0KI2xpbmUgMjQyOSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcc3RkaW8uaCINCg0KICAgICAgICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGUgUE9TSVgg
bmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNPIEMg
IiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9mY2xvc2VhbGwiICIuIFNlZSBvbmxpbmUg
aGVscCBmb3IgZGV0YWlscy4iKSkgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fY2RlY2wg
ZmNsb3NlYWxsKHZvaWQpOw0KICAgICAgICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRo
ZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRo
ZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX2Zkb3BlbiIgIi4gU2VlIG9u
bGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKSAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRklMRSog
X19jZGVjbCBmZG9wZW4oICBpbnQgX0ZpbGVIYW5kbGUsICAgY2hhciBjb25zdCogX0Zvcm1hdCk7
DQogICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlz
IGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNv
bmZvcm1hbnQgbmFtZTogIiAiX2ZnZXRjaGFyIiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFp
bHMuIikpICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19jZGVjbCBmZ2V0Y2hhcih2b2lk
KTsNCiAgICAgICAgICAgICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBm
b3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5k
IEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9maWxlbm8iICIuIFNlZSBvbmxpbmUgaGVscCBmb3Ig
ZGV0YWlscy4iKSkgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fY2RlY2wgZmlsZW5v
KCAgRklMRSogX1N0cmVhbSk7DQogICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQ
T1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJ
U08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX2ZsdXNoYWxsIiAiLiBTZWUgb25s
aW5lIGhlbHAgZm9yIGRldGFpbHMuIikpICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19j
ZGVjbCBmbHVzaGFsbCh2b2lkKTsNCiAgICAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhl
IFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhl
IElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfZnB1dGNoYXIiICIuIFNlZSBv
bmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICBf
X2NkZWNsIGZwdXRjaGFyKCAgaW50IF9DaCk7DQogICAgICAgICAgICAgIF9fZGVjbHNwZWMoZGVw
cmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0
ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfZ2V0dyIg
Ii4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKSAgICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBpbnQgICBfX2NkZWNsIGdldHcoICBGSUxFKiBfU3RyZWFtKTsNCiAgICAgICAgIF9fZGVj
bHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNh
dGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAi
ICJfcHV0dyIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKSAgICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgICBfX2NkZWNsIHB1dHcoICBpbnQgX0NoLCAgIEZJTEUqIF9TdHJl
YW0pOw0KICAgICAgICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1l
IGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJh
bmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3JtdG1wIiAiLiBTZWUgb25saW5lIGhlbHAgZm9y
IGRldGFpbHMuIikpICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19jZGVjbCBybXRt
cCh2b2lkKTsNCg0KICAgICNsaW5lIDI0NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN0ZGlvLmgiDQojbGlu
ZSAyNDQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzdGRpby5oIg0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBv
cCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgMjQ0OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
c3RkaW8uaCINCiNsaW5lIDEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXGNzdGRpbyINCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdh
cm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUg
NDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2
NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1
MyApDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KI3By
YWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ5OTUpIA0KDQp1
c2luZyA6OiBGSUxFOw0KdXNpbmcgOjogX01ic3RhdGV0Ow0KDQp1c2luZyA6OiBzaXplX3Q7DQp1
c2luZyA6OiBmcG9zX3Q7DQp1c2luZyA6OiBGSUxFOw0KdXNpbmcgOjogY2xlYXJlcnI7DQp1c2lu
ZyA6OiBmY2xvc2U7DQp1c2luZyA6OiBmZW9mOw0KdXNpbmcgOjogZmVycm9yOw0KdXNpbmcgOjog
ZmZsdXNoOw0KdXNpbmcgOjogZmdldGM7DQp1c2luZyA6OiBmZ2V0cG9zOw0KdXNpbmcgOjogZmdl
dHM7DQp1c2luZyA6OiBmb3BlbjsNCnVzaW5nIDo6IGZwcmludGY7DQp1c2luZyA6OiBmcHV0YzsN
CnVzaW5nIDo6IGZwdXRzOw0KdXNpbmcgOjogZnJlYWQ7DQp1c2luZyA6OiBmcmVvcGVuOw0KdXNp
bmcgOjogZnNjYW5mOw0KdXNpbmcgOjogZnNlZWs7DQp1c2luZyA6OiBmc2V0cG9zOw0KdXNpbmcg
OjogZnRlbGw7DQp1c2luZyA6OiBmd3JpdGU7DQp1c2luZyA6OiBnZXRjOw0KdXNpbmcgOjogZ2V0
Y2hhcjsNCnVzaW5nIDo6IHBlcnJvcjsNCnVzaW5nIDo6IHB1dGM7DQp1c2luZyA6OiBwdXRjaGFy
Ow0KdXNpbmcgOjogcHJpbnRmOw0KdXNpbmcgOjogcHV0czsNCnVzaW5nIDo6IHJlbW92ZTsNCnVz
aW5nIDo6IHJlbmFtZTsNCnVzaW5nIDo6IHJld2luZDsNCnVzaW5nIDo6IHNjYW5mOw0KdXNpbmcg
Ojogc2V0YnVmOw0KdXNpbmcgOjogc2V0dmJ1ZjsNCnVzaW5nIDo6IHNwcmludGY7DQp1c2luZyA6
OiBzc2NhbmY7DQp1c2luZyA6OiB0bXBmaWxlOw0KdXNpbmcgOjogdG1wbmFtOw0KdXNpbmcgOjog
dW5nZXRjOw0KdXNpbmcgOjogdmZwcmludGY7DQp1c2luZyA6OiB2cHJpbnRmOw0KdXNpbmcgOjog
dnNwcmludGY7DQoNCnVzaW5nIDo6IHNucHJpbnRmOw0KdXNpbmcgOjogdnNucHJpbnRmOw0KdXNp
bmcgOjogdmZzY2FuZjsNCnVzaW5nIDo6IHZzY2FuZjsNCnVzaW5nIDo6IHZzc2NhbmY7DQoNCiNw
cmFnbWEgd2FybmluZyhwb3ApDQp9DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI3ByYWdt
YSBwYWNrKHBvcCkNCg0KI2xpbmUgOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcY3N0ZGlvIg0KI2xpbmUgMTAwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNzdGRpbyINCiNsaW5lIDEzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGlvc2Z3ZCINCg0KI2xp
bmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxj
d2NoYXIiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFx3Y2hhci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
DQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8uaCINCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJh
Z21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUg
NDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0
ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGVycm5vX3QgX19jZGVjbCBfY2dldHdzX3MoDQogICAgICAgICAgd2NoYXJfdCogX0J1
ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICAgX0J1ZmZlckNvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCogIF9TaXplUmVhZA0KICAgICAgICApOw0KDQogICAgZXh0ZXJuICJD
KysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lICAgZXJybm9fdCBfX2NkZWNsIF9j
Z2V0d3NfcyggIHdjaGFyX3QgKCZfQnVmZmVyKVtfU2l6ZV0sICAgc2l6ZV90KiBfU2l6ZVJlYWQp
IHRocm93KCkgeyByZXR1cm4gX2NnZXR3c19zKF9CdWZmZXIsIF9TaXplLCBfU2l6ZVJlYWQpOyB9
IH0NCiNsaW5lIDQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0KDQogICAgDQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9jcHV0d3MoDQogICAgICAgICAg
d2NoYXJfdCBjb25zdCogX0J1ZmZlcg0KICAgICAgICApOw0KDQogICAgICAgICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHdpbnRfdCBfX2NkZWNsIF9nZXR3Y2ggICh2b2lkKTsNCiAgICAgICAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgX2dldHdjaGUgKHZvaWQpOw0KICAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgX3B1dHdjaCAgKCAgd2NoYXJf
dCBfQ2hhcmFjdGVyKTsNCiAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdpbnRfdCBfX2NkZWNs
IF91bmdldHdjaCggIHdpbnRfdCAgX0NoYXJhY3Rlcik7DQoNCiAgICAgICAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgX2dldHdjaF9ub2xvY2sgICh2b2lkKTsNCiAgICAg
ICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgX2dldHdjaGVfbm9sb2Nr
ICh2b2lkKTsNCiAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdpbnRfdCBfX2NkZWNsIF9wdXR3
Y2hfbm9sb2NrICAoICB3Y2hhcl90IF9DaGFyYWN0ZXIpOw0KICAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgd2ludF90IF9fY2RlY2wgX3VuZ2V0d2NoX25vbG9jayggIHdpbnRfdCAgX0NoYXJhY3Rl
cik7DQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fY29uaW9fY29tbW9uX3Zjd3ByaW50ZigNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50
NjQgX09wdGlvbnMsDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAgIF9Gb3JtYXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgICAgX0xv
Y2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX2NvbmlvX2NvbW1vbl92Y3dwcmludGZfcygNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50
NjQgX09wdGlvbnMsDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAgIF9Gb3JtYXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgICAgX0xv
Y2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX2NvbmlvX2NvbW1vbl92Y3dwcmludGZfcCgNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50
NjQgX09wdGlvbnMsDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAgIF9Gb3JtYXQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgICAgX0xv
Y2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
X2xpc3QgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9faW5saW5l
IGludCBfX2NkZWNsIF92Y3dwcmludGZfbCgNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNv
bnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9s
b2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAg
ICApDQoNCg0KI2xpbmUgOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd2NvbmlvLmgiDQogICAg
ew0KICAgICAgICByZXR1cm4gX19jb25pb19jb21tb25fdmN3cHJpbnRmKCgqX19sb2NhbF9zdGRp
b19wcmludGZfb3B0aW9ucygpKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgIH0N
CiNsaW5lIDEwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8uaCINCg0KICAgIA0KICAg
IF9faW5saW5lIGludCBfX2NkZWNsIF92Y3dwcmludGYoDQogICAgICAgICAgICB3Y2hhcl90IGNv
bnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQoNCg0KI2xpbmUgMTA5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJu
IF92Y3dwcmludGZfbChfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQogICAgfQ0KI2xpbmUgMTEzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50
IF9fY2RlY2wgX3Zjd3ByaW50Zl9zX2woDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25z
dCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9j
YWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFfbGlzdCAgICAgICAgICAgICAgX0FyZ0xpc3QNCiAgICAgICAg
KQ0KDQoNCiNsaW5lIDEyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8uaCINCiAgICB7
DQogICAgICAgIHJldHVybiBfX2NvbmlvX2NvbW1vbl92Y3dwcmludGZfcygoKl9fbG9jYWxfc3Rk
aW9fcHJpbnRmX29wdGlvbnMoKSksIF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICB9
DQojbGluZSAxMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd2NvbmlvLmgiDQoNCiAgICANCiAg
ICBfX2lubGluZSBpbnQgX19jZGVjbCBfdmN3cHJpbnRmX3MoDQogICAgICAgICAgICB3Y2hhcl90
IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQoNCg0KI2xpbmUg
MTM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0KICAgIHsNCiAgICAgICAgcmV0
dXJuIF92Y3dwcmludGZfc19sKF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQojbGluZSAx
NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd2NvbmlvLmgiDQoNCiAgICANCiAgICBfX2lubGlu
ZSBpbnQgX19jZGVjbCBfdmN3cHJpbnRmX3BfbCgNCiAgICAgICAgICAgIHdjaGFyX3QgY29uc3Qq
IGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAg
ICAgICApDQoNCg0KI2xpbmUgMTUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIF9fY29uaW9fY29tbW9uX3Zjd3ByaW50Zl9wKCgqX19sb2Nh
bF9zdGRpb19wcmludGZfb3B0aW9ucygpKSwgX0Zvcm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0K
ICAgIH0NCiNsaW5lIDE1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8uaCINCg0KICAg
IA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF92Y3dwcmludGZfcCgNCiAgICAgICAgICAgIGNv
bnN0IHdjaGFyX3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhX2xpc3QgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgICAgICkNCg0KDQoj
bGluZSAxNjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd2NvbmlvLmgiDQogICAgew0KICAgICAg
ICByZXR1cm4gX3Zjd3ByaW50Zl9wX2woX0Zvcm1hdCwgMCwgX0FyZ0xpc3QpOw0KICAgIH0NCiNs
aW5lIDE2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8uaCINCg0KICAgIA0KICAgIF9f
aW5saW5lIGludCBfX2NkZWNsIF9jd3ByaW50Zl9sKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25z
dCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX2xvY2FsZV90ICAgICAgY29uc3QgX0xvY2FsZSwNCiAgICAgICAgLi4uKQ0KDQoNCiNsaW5l
IDE3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8uaCINCiAgICB7DQogICAgICAgIGlu
dCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9f
dmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfTG9jYWxlKT4o
KSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0xvY2FsZSkpKSkpOw0KICAgICAgICBf
UmVzdWx0ID0gX3Zjd3ByaW50Zl9sKF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0KTsNCiAgICAg
ICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1
bHQ7DQogICAgfQ0KI2xpbmUgMTg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0K
DQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX2N3cHJpbnRmKA0KICAgICAgICAgICAg
d2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgLi4uKQ0KDQoNCiNsaW5lIDE5
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8uaCINCiAgICB7DQogICAgICAgIGludCBf
UmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNy
dF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwg
KCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVz
dWx0ID0gX3Zjd3ByaW50Zl9sKF9Gb3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICAgICAgKCh2b2lk
KShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAg
fQ0KI2xpbmUgMjAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0KDQogICAgDQog
ICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX2N3cHJpbnRmX3NfbCgNCiAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0IF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9Mb2NhbGUsDQogICAgICAgIC4uLikNCg0K
DQojbGluZSAyMTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd2NvbmlvLmgiDQogICAgew0KICAg
ICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlzdCBfQXJnTGlzdDsNCiAgICAgICAgKCh2
b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25vdF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xv
Y2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0FyZ0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAg
ICAgICAgX1Jlc3VsdCA9IF92Y3dwcmludGZfc19sKF9Gb3JtYXQsIF9Mb2NhbGUsIF9BcmdMaXN0
KTsNCiAgICAgICAgKCh2b2lkKShfQXJnTGlzdCA9ICh2YV9saXN0KTApKTsNCiAgICAgICAgcmV0
dXJuIF9SZXN1bHQ7DQogICAgfQ0KI2xpbmUgMjIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dj
b25pby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX2N3cHJpbnRmX3MoDQog
ICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAuLi4pDQoN
Cg0KI2xpbmUgMjI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0KICAgIHsNCiAg
ICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7DQogICAgICAgICgo
dm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNlPGRlY2x0eXBlKF9G
b3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9ybWF0KSkpKSk7DQog
ICAgICAgIF9SZXN1bHQgPSBfdmN3cHJpbnRmX3NfbChfRm9ybWF0LCAwLCBfQXJnTGlzdCk7DQog
ICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7DQogICAgICAgIHJldHVybiBf
UmVzdWx0Ow0KICAgIH0NCiNsaW5lIDIzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8u
aCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9jd3ByaW50Zl9wX2woDQogICAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAg
ICAgICAuLi4pDQoNCg0KI2xpbmUgMjQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5o
Ig0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7
DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNl
PGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9j
YWxlKSkpKSk7DQogICAgICAgIF9SZXN1bHQgPSBfdmN3cHJpbnRmX3BfbChfRm9ybWF0LCBfTG9j
YWxlLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkwKSk7
DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiNsaW5lIDI1NSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93Y29uaW8uaCINCg0KICAgIA0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9j
d3ByaW50Zl9wKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAg
ICAgICAgLi4uKQ0KDQoNCiNsaW5lIDI2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29uaW8u
aCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0IF9BcmdMaXN0
Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90X3JlZmVyZW5j
ZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJnTGlzdCwgX0Zv
cm1hdCkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zjd3ByaW50Zl9wX2woX0Zvcm1hdCwgMCwg
X0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAg
ICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQojbGluZSAyNzIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNv
cmVjcnRfd2NvbmlvLmgiDQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9fY29uaW9fY29tbW9uX3Zj
d3NjYW5mKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBfX2ludDY0IF9PcHRpb25zLA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogICBfRm9y
bWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAg
ICAgICAgX0xvY2FsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFfbGlzdCAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApOw0KDQogICAgIA0KICAg
IF9faW5saW5lIGludCBfX2NkZWNsIF92Y3dzY2FuZl9sKA0KICAgICAgICAgICAgd2NoYXJfdCBj
b25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0K
ICAgICAgICApDQoNCg0KI2xpbmUgMjk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5o
Ig0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9fY29uaW9fY29tbW9uX3Zjd3NjYW5mKA0KICAgICAg
ICAgICAgKCpfX2xvY2FsX3N0ZGlvX3NjYW5mX29wdGlvbnMgKCkpLA0KICAgICAgICAgICAgX0Zv
cm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgIH0NCiNsaW5lIDMwMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93Y29uaW8uaCINCg0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBf
dmN3c2NhbmYoDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAg
ICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQoNCg0KI2xpbmUgMzEyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxjb3JlY3J0X3djb25pby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92Y3dzY2FuZl9sKF9G
b3JtYXQsIDAsIF9BcmdMaXN0KTsNCiAgICB9DQojbGluZSAzMTYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNv
cmVjcnRfd2NvbmlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfdmN3c2Nh
bmZfc19sKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBf
TG9jYWxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YV9saXN0ICAgICAgICAgICAgICBfQXJnTGlzdA0KICAgICAgICApDQoNCg0KI2xpbmUgMzI2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9f
Y29uaW9fY29tbW9uX3Zjd3NjYW5mKA0KICAgICAgICAgICAgKCpfX2xvY2FsX3N0ZGlvX3NjYW5m
X29wdGlvbnMgKCkpIHwgKDFVTEwgPDwgMCksDQogICAgICAgICAgICBfRm9ybWF0LCBfTG9jYWxl
LCBfQXJnTGlzdCk7DQogICAgfQ0KI2xpbmUgMzMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dj
b25pby5oIg0KDQogICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wgX3Zjd3NjYW5mX3MoDQog
ICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICAgICAgICAgICAgICBfQXJn
TGlzdA0KICAgICAgICApDQoNCg0KI2xpbmUgMzQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dj
b25pby5oIg0KICAgIHsNCiAgICAgICAgcmV0dXJuIF92Y3dzY2FuZl9zX2woX0Zvcm1hdCwgMCwg
X0FyZ0xpc3QpOw0KICAgIH0NCiNsaW5lIDM0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y29u
aW8uaCINCg0KICAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfY3dzY2FuZl9sKA0KICAg
ICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBjb25zdCBfTG9jYWxlLA0KICAg
ICAgICAuLi4pDQoNCg0KI2xpbmUgMzU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5o
Ig0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7
DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNl
PGRlY2x0eXBlKF9Mb2NhbGUpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfTG9j
YWxlKSkpKSk7DQoNCiAgICAgICAgX1Jlc3VsdCA9IF92Y3dzY2FuZl9sKF9Gb3JtYXQsIF9Mb2Nh
bGUsIF9BcmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkp
Ow0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQojbGluZSAzNjUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXGNvcmVjcnRfd2NvbmlvLmgiDQoNCiAgICAgDQogICAgX19pbmxpbmUgaW50IF9fY2RlY2wg
X2N3c2NhbmYoDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAg
ICAgICAuLi4pDQoNCg0KI2xpbmUgMzczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djb25pby5o
Ig0KICAgIHsNCiAgICAgICAgaW50IF9SZXN1bHQ7DQogICAgICAgIHZhX2xpc3QgX0FyZ0xpc3Q7
DQogICAgICAgICgodm9pZCkoX192Y3J0X2Fzc2VydF92YV9zdGFydF9pc19ub3RfcmVmZXJlbmNl
PGRlY2x0eXBlKF9Gb3JtYXQpPigpLCAoKHZvaWQpKF9fdmFfc3RhcnQoJl9BcmdMaXN0LCBfRm9y
bWF0KSkpKSk7DQoNCiAgICAgICAgX1Jlc3VsdCA9IF92Y3dzY2FuZl9sKF9Gb3JtYXQsIDAsIF9B
cmdMaXN0KTsNCg0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZhX2xpc3QpMCkpOw0KICAg
ICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQojbGluZSAzODQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNv
cmVjcnRfd2NvbmlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfY3dzY2Fu
Zl9zX2woDQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCBfRm9ybWF0LA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgIGNvbnN0IF9M
b2NhbGUsDQogICAgICAgIC4uLikNCg0KDQojbGluZSAzOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVj
cnRfd2NvbmlvLmgiDQogICAgew0KICAgICAgICBpbnQgX1Jlc3VsdDsNCiAgICAgICAgdmFfbGlz
dCBfQXJnTGlzdDsNCiAgICAgICAgKCh2b2lkKShfX3ZjcnRfYXNzZXJ0X3ZhX3N0YXJ0X2lzX25v
dF9yZWZlcmVuY2U8ZGVjbHR5cGUoX0xvY2FsZSk+KCksICgodm9pZCkoX192YV9zdGFydCgmX0Fy
Z0xpc3QsIF9Mb2NhbGUpKSkpKTsNCiAgICAgICAgX1Jlc3VsdCA9IF92Y3dzY2FuZl9zX2woX0Zv
cm1hdCwgX0xvY2FsZSwgX0FyZ0xpc3QpOw0KICAgICAgICAoKHZvaWQpKF9BcmdMaXN0ID0gKHZh
X2xpc3QpMCkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQojbGluZSA0MDIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXGNvcmVjcnRfd2NvbmlvLmgiDQoNCiAgICANCiAgICBfX2lubGluZSBpbnQg
X19jZGVjbCBfY3dzY2FuZl9zKA0KICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QgX0Zv
cm1hdCwNCiAgICAgICAgLi4uKQ0KDQoNCiNsaW5lIDQxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNy
dF93Y29uaW8uaCINCiAgICB7DQogICAgICAgIGludCBfUmVzdWx0Ow0KICAgICAgICB2YV9saXN0
IF9BcmdMaXN0Ow0KICAgICAgICAoKHZvaWQpKF9fdmNydF9hc3NlcnRfdmFfc3RhcnRfaXNfbm90
X3JlZmVyZW5jZTxkZWNsdHlwZShfRm9ybWF0KT4oKSwgKCh2b2lkKShfX3ZhX3N0YXJ0KCZfQXJn
TGlzdCwgX0Zvcm1hdCkpKSkpOw0KICAgICAgICBfUmVzdWx0ID0gX3Zjd3NjYW5mX3NfbChfRm9y
bWF0LCAwLCBfQXJnTGlzdCk7DQogICAgICAgICgodm9pZCkoX0FyZ0xpc3QgPSAodmFfbGlzdCkw
KSk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCiNsaW5lIDQxOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93Y29uaW8uaCINCg0KI2xpbmUgNDIxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3djb25pby5oIg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5n
KHBvcCkgDQojbGluZSAxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcd2NoYXIuaCINCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXGNvcmVjcnRfd2N0eXBlLmgiDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
MzI0ICA0NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2IDI4NzI3
ICkNCg0KDQpfX3ByYWdtYShwYWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQogICAgDQoNCiNsaW5lIDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djdHlw
ZS5oIg0KICAgICAgICANCiAgICAjbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y3R5
cGUuaCINCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCB1bnNpZ25lZCBzaG9ydCog
X19jZGVjbCBfX3BjdHlwZV9mdW5jKHZvaWQpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBj
b25zdCB3Y3R5cGVfdCogICAgICAgX19jZGVjbCBfX3B3Y3R5cGVfZnVuYyh2b2lkKTsNCg0KICAg
IA0KDQoNCg0KICAgICAgICANCiAgICAgICAgDQogICAgI2xpbmUgNDUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd2N0eXBlLmgiDQojbGluZSA0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93Y3R5
cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIGlzd2FsbnVtICAoICB3aW50X3QgX0MpOw0KICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXN3YWxwaGEgICggIHdpbnRfdCBfQyk7
DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBpc3dhc2NpaSAgKCAgd2ludF90
IF9DKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIGlzd2JsYW5rICAoICB3
aW50X3QgX0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXN3Y250cmwg
ICggIHdpbnRfdCBfQyk7DQoNCg0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wg
aXN3ZGlnaXQgICggIHdpbnRfdCBfQyk7DQoNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBf
X2NkZWNsIGlzd2dyYXBoICAoICB3aW50X3QgX0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
aW50IF9fY2RlY2wgaXN3bG93ZXIgICggIHdpbnRfdCBfQyk7DQogIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBpbnQgX19jZGVjbCBpc3dwcmludCAgKCAgd2ludF90IF9DKTsNCiAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX2NkZWNsIGlzd3B1bmN0ICAoICB3aW50X3QgX0MpOw0KICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXN3c3BhY2UgICggIHdpbnRfdCBfQyk7DQogIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBpc3d1cHBlciAgKCAgd2ludF90IF9DKTsN
CiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIGlzd3hkaWdpdCAoICB3aW50X3Qg
X0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX19pc3djc3ltZiggIHdp
bnRfdCBfQyk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX2lzd2NzeW0g
KCAgd2ludF90IF9DKTsNCg0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2lz
d2FsbnVtX2wgKCAgd2ludF90IF9DLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCiAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc3dhbHBoYV9sICggIHdpbnRfdCBfQywgICBfbG9j
YWxlX3QgX0xvY2FsZSk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaXN3
YmxhbmtfbCAoICB3aW50X3QgX0MsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0KICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2lzd2NudHJsX2wgKCAgd2ludF90IF9DLCAgIF9sb2Nh
bGVfdCBfTG9jYWxlKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc3dk
aWdpdF9sICggIHdpbnRfdCBfQywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQogIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaXN3Z3JhcGhfbCAoICB3aW50X3QgX0MsICAgX2xvY2Fs
ZV90IF9Mb2NhbGUpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2lzd2xv
d2VyX2wgKCAgd2ludF90IF9DLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCiAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc3dwcmludF9sICggIHdpbnRfdCBfQywgICBfbG9jYWxl
X3QgX0xvY2FsZSk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaXN3cHVu
Y3RfbCAoICB3aW50X3QgX0MsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0KICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50IF9fY2RlY2wgX2lzd3NwYWNlX2wgKCAgd2ludF90IF9DLCAgIF9sb2NhbGVf
dCBfTG9jYWxlKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc3d1cHBl
cl9sICggIHdpbnRfdCBfQywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQogIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnQgX19jZGVjbCBfaXN3eGRpZ2l0X2woICB3aW50X3QgX0MsICAgX2xvY2FsZV90
IF9Mb2NhbGUpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2lzd2NzeW1m
X2wgKCAgd2ludF90IF9DLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCiAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludCBfX2NkZWNsIF9pc3djc3ltX2wgICggIHdpbnRfdCBfQywgICBfbG9jYWxlX3Qg
X0xvY2FsZSk7DQoNCg0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2ludF90IF9fY2RlY2wgdG93
dXBwZXIoICB3aW50X3QgX0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2ludF90IF9fY2Rl
Y2wgdG93bG93ZXIoICB3aW50X3QgX0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAg
IF9fY2RlY2wgaXN3Y3R5cGUoICB3aW50X3QgX0MsICAgd2N0eXBlX3QgX1R5cGUpOw0KDQogIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB3aW50X3QgX19jZGVjbCBfdG93dXBwZXJfbCggIHdpbnRfdCBf
QywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3aW50X3Qg
X19jZGVjbCBfdG93bG93ZXJfbCggIHdpbnRfdCBfQywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQog
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICAgX19jZGVjbCBfaXN3Y3R5cGVfbCggIHdpbnRf
dCBfQywgICB3Y3R5cGVfdCBfVHlwZSwgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQoNCg0KDQogICAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXNsZWFkYnl0ZSggIGludCBfQyk7
DQogICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX2lzbGVhZGJ5dGVfbCgg
IGludCBfQywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQoNCiAgICBfX2RlY2xzcGVjKGRlcHJlY2F0
ZWQoIlRoaXMgZnVuY3Rpb24gb3IgdmFyaWFibGUgaGFzIGJlZW4gc3VwZXJjZWRlZCBieSBuZXdl
ciBsaWJyYXJ5ICIgIm9yIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb25hbGl0eS4gQ29uc2lkZXIg
dXNpbmcgIiAiaXN3Y3R5cGUiICIgIiAiaW5zdGVhZC4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRh
aWxzLiIpKSBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXNfd2N0eXBlKCAgd2lu
dF90IF9DLCAgIHdjdHlwZV90IF9UeXBlKTsNCiNsaW5lIDExNyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29y
ZWNydF93Y3R5cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMjAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3djdHlwZS5oIg0KDQoN
Cg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUg
MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXHdjaGFyLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3Jl
Y3J0X3dkaXJlY3QuaCINCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNwcmFn
bWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3
NCA0NzEwIDQ3OTMgNDgyMCA0OTk1IDQ5OTYgMjg3MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCl9fcHJh
Z21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQoNCg0KDQoNCg0KIA0KICAgDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhhbGxvY2F0b3IpIHdjaGFyX3QqIF9fY2RlY2wg
X3dnZXRjd2QoDQogICAgICB3Y2hhcl90KiBfRHN0QnVmLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAgICAgIF9TaXplSW5Xb3Jkcw0KICAgICk7DQoNCiANCiAgIA0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSB3Y2hhcl90KiBfX2NkZWNs
IF93Z2V0ZGN3ZCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICBf
RHJpdmUsDQogICAgICB3Y2hhcl90KiBfRHN0QnVmLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAgICAgIF9TaXplSW5Xb3Jkcw0KICAgICk7DQoNCg0KDQoNCg0KDQogDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3djaGRpcigNCiAgICAgIHdjaGFyX3Qg
Y29uc3QqIF9QYXRoDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIF93bWtkaXIoDQogICAgICB3Y2hhcl90IGNvbnN0KiBfUGF0aA0KICAgICk7DQoNCiANCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd3JtZGlyKA0KICAgICAgd2NoYXJfdCBj
b25zdCogX1BhdGgNCiAgICApOw0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFn
bWEgd2FybmluZyhwb3ApIA0KI2xpbmUgMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHdjaGFyLmgiDQojbGlu
ZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dpby5oIg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfc2hhcmUuaCINCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0K
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgyMCA0
OTk1IDQ5OTYgMjg3MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAN
CiAgICANCiAgICANCiAgICANCiNsaW5lIDMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3NoYXJl
LmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxMyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydF93aW8uaCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDMyNCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAy
ODcyNiAyODcyNyApDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiNsaW5lIDMyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxj
b3JlY3J0X3dpby5oIg0KDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX2ZzaXplX3Q7DQoNCnN0cnVj
dCBfd2ZpbmRkYXRhMzJfdA0Kew0KICAgIHVuc2lnbmVkICAgYXR0cmliOw0KICAgIF9fdGltZTMy
X3QgdGltZV9jcmVhdGU7ICAgIA0KICAgIF9fdGltZTMyX3QgdGltZV9hY2Nlc3M7ICAgIA0KICAg
IF9fdGltZTMyX3QgdGltZV93cml0ZTsNCiAgICBfZnNpemVfdCAgIHNpemU7DQogICAgd2NoYXJf
dCAgICBuYW1lWzI2MF07DQp9Ow0KDQpzdHJ1Y3QgX3dmaW5kZGF0YTMyaTY0X3QNCnsNCiAgICB1
bnNpZ25lZCAgIGF0dHJpYjsNCiAgICBfX3RpbWUzMl90IHRpbWVfY3JlYXRlOyAgICANCiAgICBf
X3RpbWUzMl90IHRpbWVfYWNjZXNzOyAgICANCiAgICBfX3RpbWUzMl90IHRpbWVfd3JpdGU7DQog
ICAgX19pbnQ2NCAgICBzaXplOw0KICAgIHdjaGFyX3QgICAgbmFtZVsyNjBdOw0KfTsNCg0Kc3Ry
dWN0IF93ZmluZGRhdGE2NGkzMl90DQp7DQogICAgdW5zaWduZWQgICBhdHRyaWI7DQogICAgX190
aW1lNjRfdCB0aW1lX2NyZWF0ZTsgICAgDQogICAgX190aW1lNjRfdCB0aW1lX2FjY2VzczsgICAg
DQogICAgX190aW1lNjRfdCB0aW1lX3dyaXRlOw0KICAgIF9mc2l6ZV90ICAgc2l6ZTsNCiAgICB3
Y2hhcl90ICAgIG5hbWVbMjYwXTsNCn07DQoNCnN0cnVjdCBfd2ZpbmRkYXRhNjRfdA0Kew0KICAg
IHVuc2lnbmVkICAgYXR0cmliOw0KICAgIF9fdGltZTY0X3QgdGltZV9jcmVhdGU7ICAgIA0KICAg
IF9fdGltZTY0X3QgdGltZV9hY2Nlc3M7ICAgIA0KICAgIF9fdGltZTY0X3QgdGltZV93cml0ZTsN
CiAgICBfX2ludDY0ICAgIHNpemU7DQogICAgd2NoYXJfdCAgICBuYW1lWzI2MF07DQp9Ow0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiNsaW5lIDkz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3dpby5oIg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50IF9fY2RlY2wgX3dhY2Nlc3MoDQogICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUs
DQogICAgICAgIGludCAgICAgICAgICAgIF9BY2Nlc3NNb2RlDQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF93YWNjZXNzX3MoDQogICAgICB3Y2hhcl90
IGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgIGludCAgICAgICAgICAgIF9BY2Nlc3NNb2RlDQog
ICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF93Y2htb2QoDQog
ICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgIGludCAgICAgICAgICAgIF9N
b2RlDQogICAgKTsNCg0KICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd2Ny
ZWF0KA0KICAgICAgd2NoYXJfdCBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICBpbnQgICAgICAg
ICAgICBfUGVybWlzc2lvbk1vZGUNCiAgICApOw0KDQogDQogDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50cHRyX3QgX19jZGVjbCBfd2ZpbmRmaXJzdDMyKA0KICAgICAgd2NoYXJfdCBjb25zdCog
ICAgICAgICBfRmlsZU5hbWUsDQogICAgICAgc3RydWN0IF93ZmluZGRhdGEzMl90KiBfRmluZERh
dGENCiAgICApOw0KDQogDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3dm
aW5kbmV4dDMyKA0KICAgICAgIGludHB0cl90ICAgICAgICAgICAgICAgX0ZpbmRIYW5kbGUsDQog
ICAgICBzdHJ1Y3QgX3dmaW5kZGF0YTMyX3QqIF9GaW5kRGF0YQ0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd3VubGluaygNCiAgICAgIHdjaGFyX3QgY29uc3Qq
IF9GaWxlTmFtZQ0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVj
bCBfd3JlbmFtZSgNCiAgICAgIHdjaGFyX3QgY29uc3QqIF9PbGRGaWxlTmFtZSwNCiAgICAgIHdj
aGFyX3QgY29uc3QqIF9OZXdGaWxlTmFtZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBlcnJub190IF9fY2RlY2wgX3dta3RlbXBfcygNCiAgICAgIHdjaGFyX3QqIF9UZW1wbGF0ZU5h
bWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICBfU2l6ZUluV29y
ZHMNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxp
bmUgZXJybm9fdCBfX2NkZWNsIF93bWt0ZW1wX3Mod2NoYXJfdCAoJl9UZW1wbGF0ZU5hbWUpW19T
aXplXSkgdGhyb3coKSB7IHJldHVybiBfd21rdGVtcF9zKF9UZW1wbGF0ZU5hbWUsIF9TaXplKTsg
fSB9DQojbGluZSAxNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd2lvLmgiDQoNCiANCl9faW5s
aW5lIHdjaGFyX3QqIF9fY2RlY2wgX19pbnNlY3VyZV9fd21rdGVtcCggd2NoYXJfdCAqX1RlbXBs
YXRlTmFtZSkgeyB3Y2hhcl90KiBfX2NkZWNsIF93bWt0ZW1wKCB3Y2hhcl90ICpfVGVtcGxhdGVO
YW1lKTsgcmV0dXJuIF93bWt0ZW1wKF9UZW1wbGF0ZU5hbWUpOyB9IGV4dGVybiAiQysrIiB7IHRl
bXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93bWt0ZW1wKF9U
ICZfVGVtcGxhdGVOYW1lKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3dta3RlbXAoc3Rh
dGljX2Nhc3Q8d2NoYXJfdCAqPihfVGVtcGxhdGVOYW1lKSk7IH0gdGVtcGxhdGUgPHR5cGVuYW1l
IF9UPiBpbmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wgX3dta3RlbXAoY29uc3QgX1QgJl9UZW1wbGF0
ZU5hbWUpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fd21rdGVtcChzdGF0aWNfY2FzdDx3
Y2hhcl90ICo+KF9UZW1wbGF0ZU5hbWUpKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHdjaGFyX3Qq
IF9fY2RlY2wgX3dta3RlbXAoIHdjaGFyX3QgKiAmX1RlbXBsYXRlTmFtZSkgdGhyb3coKSB7IHJl
dHVybiBfX2luc2VjdXJlX193bWt0ZW1wKF9UZW1wbGF0ZU5hbWUpOyB9IHRlbXBsYXRlIDxzaXpl
X3QgX1NpemU+IGlubGluZSB3Y2hhcl90KiBfX2NkZWNsIF93bWt0ZW1wKHdjaGFyX3QgKCZfVGVt
cGxhdGVOYW1lKVtfU2l6ZV0pIHRocm93KCkgeyByZXR1cm4gKChfd21rdGVtcF9zKF9UZW1wbGF0
ZU5hbWUsIF9TaXplKSkgPT0gMCA/IF9UZW1wbGF0ZU5hbWUgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBp
bmxpbmUgIHdjaGFyX3QqIF9fY2RlY2wgX3dta3RlbXA8MT4od2NoYXJfdCAoJl9UZW1wbGF0ZU5h
bWUpWzFdKSB0aHJvdygpIHsgcmV0dXJuICgoX3dta3RlbXBfcyhfVGVtcGxhdGVOYW1lLCAxKSkg
PT0gMCA/IF9UZW1wbGF0ZU5hbWUgOiAwKTsgfSB9DQojbGluZSAxNTcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGNvcmVjcnRfd2lvLmgiDQoNCiANCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBf
X2NkZWNsIF93ZmluZGZpcnN0MzJpNjQoDQogICAgICB3Y2hhcl90IGNvbnN0KiAgICAgICAgICAg
IF9GaWxlTmFtZSwNCiAgICAgICBzdHJ1Y3QgX3dmaW5kZGF0YTMyaTY0X3QqIF9GaW5kRGF0YQ0K
ICAgICk7DQoNCiANCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIF93
ZmluZGZpcnN0NjRpMzIoDQogICAgICB3Y2hhcl90IGNvbnN0KiAgICAgICAgICAgIF9GaWxlTmFt
ZSwNCiAgICAgICBzdHJ1Y3QgX3dmaW5kZGF0YTY0aTMyX3QqIF9GaW5kRGF0YQ0KICAgICk7DQoN
CiANCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIF93ZmluZGZpcnN0
NjQoDQogICAgICB3Y2hhcl90IGNvbnN0KiAgICAgICAgIF9GaWxlTmFtZSwNCiAgICAgICBzdHJ1
Y3QgX3dmaW5kZGF0YTY0X3QqIF9GaW5kRGF0YQ0KICAgICk7DQoNCiANCiANCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd2ZpbmRuZXh0MzJpNjQoDQogICAgICAgaW50cHRyX3Qg
ICAgICAgICAgICAgICAgICBfRmluZEhhbmRsZSwNCiAgICAgIHN0cnVjdCBfd2ZpbmRkYXRhMzJp
NjRfdCogX0ZpbmREYXRhDQogICAgKTsNCg0KIA0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dCBfX2NkZWNsIF93ZmluZG5leHQ2NGkzMigNCiAgICAgICBpbnRwdHJfdCAgICAgICAgICAgICAg
ICAgIF9GaW5kSGFuZGxlLA0KICAgICAgc3RydWN0IF93ZmluZGRhdGE2NGkzMl90KiBfRmluZERh
dGENCiAgICApOw0KDQogDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3dm
aW5kbmV4dDY0KA0KICAgICAgIGludHB0cl90ICAgICAgICAgICAgICAgX0ZpbmRIYW5kbGUsDQog
ICAgICBzdHJ1Y3QgX3dmaW5kZGF0YTY0X3QqIF9GaW5kRGF0YQ0KICAgICk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfd3NvcGVuX3MoDQogICAgICAgaW50KiAg
ICAgICAgICAgX0ZpbGVIYW5kbGUsDQogICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUsDQog
ICAgICAgIGludCAgICAgICAgICAgIF9PcGVuRmxhZywNCiAgICAgICAgaW50ICAgICAgICAgICAg
X1NoYXJlRmxhZywNCiAgICAgICAgaW50ICAgICAgICAgICAgX1Blcm1pc3Npb25GbGFnDQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfd3NvcGVuX2Rpc3Bh
dGNoKA0KICAgICAgd2NoYXJfdCBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICBpbnQgICAgICAg
ICAgICBfT0ZsYWcsDQogICAgICAgIGludCAgICAgICAgICAgIF9TaEZsYWcsDQogICAgICAgIGlu
dCAgICAgICAgICAgIF9QTW9kZSwNCiAgICAgICBpbnQqICAgICAgICAgICBfUEZpbGVIYW5kbGUs
DQogICAgICAgIGludCAgICAgICAgICAgIF9CU2VjdXJlDQogICAgKTsNCg0KDQoNCg0KDQogICAg
DQogICAgZXh0ZXJuICJDKysiICAgDQogICAgaW5saW5lIGludCBfX2NkZWNsIF93b3BlbigNCiAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgICAgICBpbnQgICAgICAg
ICAgICBfT0ZsYWcsDQogICAgICAgICAgICBpbnQgICAgICAgICAgICBfUE1vZGUgPSAwDQogICAg
ICAgICkNCiAgICB7DQogICAgICAgIGludCBfRmlsZUhhbmRsZTsNCiAgICAgICAgDQogICAgICAg
IGVycm5vX3QgY29uc3QgX1Jlc3VsdCA9IF93c29wZW5fZGlzcGF0Y2goX0ZpbGVOYW1lLCBfT0Zs
YWcsIDB4NDAsIF9QTW9kZSwgJl9GaWxlSGFuZGxlLCAwKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1
bHQgPyAtMSA6IF9GaWxlSGFuZGxlOw0KICAgIH0NCg0KICAgIGV4dGVybiAiQysrIiAgIA0KICAg
IGlubGluZSBpbnQgX19jZGVjbCBfd3NvcGVuKA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9G
aWxlTmFtZSwNCiAgICAgICAgICAgIGludCAgICAgICAgICAgIF9PRmxhZywNCiAgICAgICAgICAg
IGludCAgICAgICAgICAgIF9TaEZsYWcsDQogICAgICAgICAgICBpbnQgICAgICAgICAgICBfUE1v
ZGUgPSAwDQogICAgICAgICkNCiAgICB7DQogICAgICAgIGludCBfRmlsZUhhbmRsZTsNCiAgICAg
ICAgDQogICAgICAgIGVycm5vX3QgY29uc3QgX1Jlc3VsdCA9IF93c29wZW5fZGlzcGF0Y2goX0Zp
bGVOYW1lLCBfT0ZsYWcsIF9TaEZsYWcsIF9QTW9kZSwgJl9GaWxlSGFuZGxlLCAwKTsNCiAgICAg
ICAgcmV0dXJuIF9SZXN1bHQgPyAtMSA6IF9GaWxlSGFuZGxlOw0KICAgIH0NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRf
d2lvLmgiDQoNCn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSAN
CiNsaW5lIDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFx3Y2hhci5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY29yZWNydF93cHJvY2Vzcy5oIg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAg
NDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoN
Cg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCiAgICANCg0K
ICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBfd2V4ZWNsKA0K
ICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgICAgICAgIHdj
aGFyX3QgY29uc3QqIF9BcmdMaXN0LA0KICAgICAgICAgICAgLi4uKTsNCg0KICAgICAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBfd2V4ZWNsZSgNCiAgICAgICAgICAg
ICAgd2NoYXJfdCBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0
KiBfQXJnTGlzdCwNCiAgICAgICAgICAgIC4uLik7DQoNCiAgICAgICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludHB0cl90IF9fY2RlY2wgX3dleGVjbHAoDQogICAgICAgICAgICAgIHdjaGFyX3Qg
Y29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0FyZ0xpc3Qs
DQogICAgICAgICAgICAuLi4pOw0KDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRw
dHJfdCBfX2NkZWNsIF93ZXhlY2xwZSgNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0Zp
bGVOYW1lLA0KICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfQXJnTGlzdCwNCiAgICAgICAg
ICAgIC4uLik7DQoNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2Rl
Y2wgX3dleGVjdigNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogICAgICAgIF9GaWxlTmFt
ZSwNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QqIF9BcmdMaXN0DQogICAgICAg
ICAgICApOw0KDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNs
IF93ZXhlY3ZlKA0KICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogICAgICAgIF9GaWxl
TmFtZSwNCiAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0KiBfQXJnTGlzdCwN
CiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QqIF9FbnYNCiAgICAgICAgICAgICk7
DQoNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgX3dleGVj
dnAoDQogICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqICAgICAgICBfRmlsZU5hbWUsDQogICAg
ICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0KiBfQXJnTGlzdA0KICAgICAgICAgICAgKTsN
Cg0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBfd2V4ZWN2
cGUoDQogICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAgICAgICAgX0ZpbGVOYW1lLA0K
ICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QqIF9BcmdMaXN0LA0KICAgICAg
ICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCogX0Vudg0KICAgICAgICAgICAgKTsNCg0KICAg
ICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBfd3NwYXdubCgNCiAg
ICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBfTW9kZSwNCiAgICAgICAgICAgICAgd2NoYXJf
dCBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfQXJnTGlz
dCwNCiAgICAgICAgICAgIC4uLik7DQoNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dHB0cl90IF9fY2RlY2wgX3dzcGF3bmxlKA0KICAgICAgICAgICAgICAgIGludCAgICAgICAgICAg
IF9Nb2RlLA0KICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIF9BcmdMaXN0LA0KICAgICAgICAgICAgLi4uKTsNCg0KICAg
ICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBfd3NwYXdubHAoDQog
ICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgX01vZGUsDQogICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0FyZ0xp
c3QsDQogICAgICAgICAgICAuLi4pOw0KDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnRwdHJfdCBfX2NkZWNsIF93c3Bhd25scGUoDQogICAgICAgICAgICAgICAgaW50ICAgICAgICAg
ICAgX01vZGUsDQogICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAg
ICAgICAgICAgd2NoYXJfdCBjb25zdCogX0FyZ0xpc3QsDQogICAgICAgICAgICAuLi4pOw0KDQog
ICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIF93c3Bhd252KA0K
ICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICBfTW9kZSwNCiAgICAgICAgICAg
ICAgd2NoYXJfdCBjb25zdCogICAgICAgIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgd2NoYXJf
dCBjb25zdCogY29uc3QqIF9BcmdMaXN0DQogICAgICAgICAgICApOw0KDQogICAgICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIF93c3Bhd252ZSgNCiAgICAgICAgICAg
ICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgIF9Nb2RlLA0KICAgICAgICAgICAgICAgICAg
d2NoYXJfdCBjb25zdCogICAgICAgIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqIGNvbnN0KiBfQXJnTGlzdCwNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCog
Y29uc3QqIF9FbnYNCiAgICAgICAgICAgICk7DQoNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGludHB0cl90IF9fY2RlY2wgX3dzcGF3bnZwKA0KICAgICAgICAgICAgICAgIGludCAgICAg
ICAgICAgICAgICAgICBfTW9kZSwNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogICAgICAg
IF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogY29uc3QqIF9BcmdMaXN0
DQogICAgICAgICAgICApOw0KDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJf
dCBfX2NkZWNsIF93c3Bhd252cGUoDQogICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAg
ICAgICAgICBfTW9kZSwNCiAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqICAgICAgICBf
RmlsZU5hbWUsDQogICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25zdCogX0FyZ0xp
c3QsDQogICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIGNvbnN0KiBfRW52DQogICAgICAgICAg
ICApOw0KDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd3N5c3Rl
bSgNCiAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX0NvbW1hbmQNCiAgICAgICAgICAgICk7
DQoNCiAgICAjbGluZSAxMjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3Byb2Nlc3MuaCINCiNs
aW5lIDEyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93cHJvY2Vzcy5oIg0KDQoNCg0KfSBfX3By
YWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgMjEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXHdjaGFyLmgiDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0
X3d0aW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojcHJhZ21hIHdh
cm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcx
MCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2IDI4NzI3ICkNCg0KDQpfX3ByYWdtYShw
YWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KDQpzdHJ1Y3QgdG0NCnsN
CiAgICBpbnQgdG1fc2VjOyAgIA0KICAgIGludCB0bV9taW47ICAgDQogICAgaW50IHRtX2hvdXI7
ICANCiAgICBpbnQgdG1fbWRheTsgIA0KICAgIGludCB0bV9tb247ICAgDQogICAgaW50IHRtX3ll
YXI7ICANCiAgICBpbnQgdG1fd2RheTsgIA0KICAgIGludCB0bV95ZGF5OyAgDQogICAgaW50IHRt
X2lzZHN0OyANCn07DQoNCg0KDQoNCg0KDQoNCiAgDQogDQogDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgd2NoYXJfdCogX19jZGVjbCBfd2FzY3RpbWUoDQogICAgICBzdHJ1Y3QgdG0gY29uc3QqIF9U
bQ0KICAgICk7DQoNCiANCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBf
d2FzY3RpbWVfcygNCiAgICAgICAgd2NoYXJfdCogICAgICAgICBfQnVmZmVyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgICBfU2l6ZUlu
V29yZHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHRtIGNvbnN0KiBfVG0NCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1w
bGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgICBlcnJub190IF9fY2RlY2wgX3dhc2N0aW1lX3Mo
ICB3Y2hhcl90ICgmX0J1ZmZlcilbX1NpemVdLCAgIHN0cnVjdCB0bSBjb25zdCogX1RpbWUpIHRo
cm93KCkgeyByZXR1cm4gX3dhc2N0aW1lX3MoX0J1ZmZlciwgX1NpemUsIF9UaW1lKTsgfSB9DQoj
bGluZSA2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93dGltZS5oIg0KDQogDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBzaXplX3QgX19jZGVjbCB3Y3NmdGltZSgNCiAgICAgICB3Y2hhcl90KiAg
ICAgICAgIF9CdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAg
ICAgICAgICBfU2l6ZUluV29yZHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFy
X3QgY29uc3QqICAgX0Zvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgdG0gY29uc3QqIF9UbQ0KICAgICk7DQoNCiANCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNp
emVfdCBfX2NkZWNsIF93Y3NmdGltZV9sKA0KICAgICAgIHdjaGFyX3QqICAgICAgICAgX0J1ZmZl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgICAgIF9TaXpl
SW5Xb3JkcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogICBf
Rm9ybWF0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSBjb25zdCog
X1RtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgICAgICBfTG9jYWxl
DQogICAgKTsNCg0KIA0KICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB3Y2hhcl90KiBfX2NkZWNs
IF93Y3RpbWUzMigNCiAgICAgIF9fdGltZTMyX3QgY29uc3QqIF9UaW1lDQogICAgKTsNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF93Y3RpbWUzMl9zKA0KICAgICAg
ICB3Y2hhcl90KiAgICAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgICAgICAgICAgICBfU2l6ZUluV29yZHMsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX190aW1lMzJfdCBjb25z
dCogX1RpbWUNCiAgICApOw0KDQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXpl
PiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF93Y3RpbWUzMl9zKCAgd2NoYXJfdCAoJl9CdWZmZXIp
W19TaXplXSwgICBfX3RpbWUzMl90IGNvbnN0KiBfVGltZSkgdGhyb3coKSB7IHJldHVybiBfd2N0
aW1lMzJfcyhfQnVmZmVyLCBfU2l6ZSwgX1RpbWUpOyB9IH0NCiNsaW5lIDEwNCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcY29yZWNydF93dGltZS5oIg0KDQogDQogDQogIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IHdjaGFyX3QqIF9fY2RlY2wgX3djdGltZTY0KA0KICAgICAgX190aW1lNjRfdCBjb25zdCogX1Rp
bWUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3dj
dGltZTY0X3MoDQogICAgICAgIHdjaGFyX3QqICAgICAgICAgIF9CdWZmZXIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgIF9TaXplSW5Xb3Jk
cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX3RpbWU2NF90IGNvbnN0KiBfVGltZSk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxz
aXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX3djdGltZTY0X3MoICB3Y2hhcl90
ICgmX0J1ZmZlcilbX1NpemVdLCAgIF9fdGltZTY0X3QgY29uc3QqIF9UaW1lKSB0aHJvdygpIHsg
cmV0dXJuIF93Y3RpbWU2NF9zKF9CdWZmZXIsIF9TaXplLCBfVGltZSk7IH0gfQ0KI2xpbmUgMTIz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3d0aW1lLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGVycm5vX3QgX19jZGVjbCBfd3N0cmRhdGVfcygNCiAgICAgICB3Y2hhcl90KiBfQnVmZmVy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICBfU2l6ZUluV29yZHMNCiAgICApOw0K
DQpleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBf
X2NkZWNsIF93c3RyZGF0ZV9zKCAgd2NoYXJfdCAoJl9CdWZmZXIpW19TaXplXSkgdGhyb3coKSB7
IHJldHVybiBfd3N0cmRhdGVfcyhfQnVmZmVyLCBfU2l6ZSk7IH0gfQ0KI2xpbmUgMTM0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxjb3JlY3J0X3d0aW1lLmgiDQoNCl9faW5saW5lICB3Y2hhcl90KiBfX2NkZWNs
IF9faW5zZWN1cmVfX3dzdHJkYXRlKCB3Y2hhcl90ICpfQnVmZmVyKSB7ICB3Y2hhcl90KiBfX2Nk
ZWNsIF93c3RyZGF0ZSggd2NoYXJfdCAqX0J1ZmZlcik7IHJldHVybiBfd3N0cmRhdGUoX0J1ZmZl
cik7IH0gZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICB3Y2hh
cl90KiBfX2NkZWNsIF93c3RyZGF0ZShfVCAmX0J1ZmZlcikgdGhyb3coKSB7IHJldHVybiBfX2lu
c2VjdXJlX193c3RyZGF0ZShzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZmZXIpKTsgfSB0ZW1w
bGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgIHdjaGFyX3QqIF9fY2RlY2wgX3dzdHJkYXRlKGNv
bnN0IF9UICZfQnVmZmVyKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3dzdHJkYXRlKHN0
YXRpY19jYXN0PHdjaGFyX3QgKj4oX0J1ZmZlcikpOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgIHdj
aGFyX3QqIF9fY2RlY2wgX3dzdHJkYXRlKCB3Y2hhcl90ICogJl9CdWZmZXIpIHRocm93KCkgeyBy
ZXR1cm4gX19pbnNlY3VyZV9fd3N0cmRhdGUoX0J1ZmZlcik7IH0gdGVtcGxhdGUgPHNpemVfdCBf
U2l6ZT4gaW5saW5lICB3Y2hhcl90KiBfX2NkZWNsIF93c3RyZGF0ZSh3Y2hhcl90ICgmX0J1ZmZl
cilbX1NpemVdKSB0aHJvdygpIHsgcmV0dXJuICgoX3dzdHJkYXRlX3MoX0J1ZmZlciwgX1NpemUp
KSA9PSAwID8gX0J1ZmZlciA6IDApOyB9IHRlbXBsYXRlIDw+IGlubGluZSAgIHdjaGFyX3QqIF9f
Y2RlY2wgX3dzdHJkYXRlPDE+KHdjaGFyX3QgKCZfQnVmZmVyKVsxXSkgdGhyb3coKSB7IHJldHVy
biAoKF93c3RyZGF0ZV9zKF9CdWZmZXIsIDEpKSA9PSAwID8gX0J1ZmZlciA6IDApOyB9IH0NCiNs
aW5lIDEzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93dGltZS5oIg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX3dzdHJ0aW1lX3MoDQogICAgICAgd2NoYXJfdCog
X0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgX1NpemVJbldvcmRzDQog
ICAgKTsNCg0KZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lIGVy
cm5vX3QgX19jZGVjbCBfd3N0cnRpbWVfcyggIHdjaGFyX3QgKCZfQnVmZmVyKVtfU2l6ZV0pIHRo
cm93KCkgeyByZXR1cm4gX3dzdHJ0aW1lX3MoX0J1ZmZlciwgX1NpemUpOyB9IH0NCiNsaW5lIDE1
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF93dGltZS5oIg0KDQpfX2lubGluZSAgd2NoYXJfdCog
X19jZGVjbCBfX2luc2VjdXJlX193c3RydGltZSggd2NoYXJfdCAqX0J1ZmZlcikgeyAgd2NoYXJf
dCogX19jZGVjbCBfd3N0cnRpbWUoIHdjaGFyX3QgKl9CdWZmZXIpOyByZXR1cm4gX3dzdHJ0aW1l
KF9CdWZmZXIpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5saW5l
ICAgd2NoYXJfdCogX19jZGVjbCBfd3N0cnRpbWUoX1QgJl9CdWZmZXIpIHRocm93KCkgeyByZXR1
cm4gX19pbnNlY3VyZV9fd3N0cnRpbWUoc3RhdGljX2Nhc3Q8d2NoYXJfdCAqPihfQnVmZmVyKSk7
IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICB3Y2hhcl90KiBfX2NkZWNsIF93c3Ry
dGltZShjb25zdCBfVCAmX0J1ZmZlcikgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX193c3Ry
dGltZShzdGF0aWNfY2FzdDx3Y2hhcl90ICo+KF9CdWZmZXIpKTsgfSB0ZW1wbGF0ZSA8PiBpbmxp
bmUgICB3Y2hhcl90KiBfX2NkZWNsIF93c3RydGltZSggd2NoYXJfdCAqICZfQnVmZmVyKSB0aHJv
dygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3dzdHJ0aW1lKF9CdWZmZXIpOyB9IHRlbXBsYXRlIDxz
aXplX3QgX1NpemU+IGlubGluZSAgd2NoYXJfdCogX19jZGVjbCBfd3N0cnRpbWUod2NoYXJfdCAo
Jl9CdWZmZXIpW19TaXplXSkgdGhyb3coKSB7IHJldHVybiAoKF93c3RydGltZV9zKF9CdWZmZXIs
IF9TaXplKSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgICB3Y2hh
cl90KiBfX2NkZWNsIF93c3RydGltZTwxPih3Y2hhcl90ICgmX0J1ZmZlcilbMV0pIHRocm93KCkg
eyByZXR1cm4gKChfd3N0cnRpbWVfcyhfQnVmZmVyLCAxKSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsg
fSB9DQojbGluZSAxNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3RpbWUuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQog
ICAgICAgICANCiAgICAgICAgc3RhdGljIF9faW5saW5lIHdjaGFyX3QgKiBfX2NkZWNsIF93Y3Rp
bWUoDQogICAgICAgICAgICAgIHRpbWVfdCBjb25zdCogY29uc3QgX1RpbWUpDQogICAgICAgIHsN
CiAgICAgICAgICAgIHJldHVybiBfd2N0aW1lNjQoX1RpbWUpOw0KICAgICAgICB9DQoNCiAgICAg
ICAgDQogICAgICAgIHN0YXRpYyBfX2lubGluZSBlcnJub190IF9fY2RlY2wgX3djdGltZV9zKA0K
ICAgICAgICAgICAgICAgICAgd2NoYXJfdCogICAgICBjb25zdCBfQnVmZmVyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAgICAgICAgY29uc3QgX1NpemVJbldvcmRzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfdCBjb25zdCogY29uc3QgX1Rp
bWUNCiAgICAgICAgICAgICkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIF93Y3RpbWU2
NF9zKF9CdWZmZXIsIF9TaXplSW5Xb3JkcywgX1RpbWUpOw0KICAgICAgICB9DQoNCiAgICAjbGlu
ZSAyMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfd3RpbWUuaCINCiNsaW5lIDIwNCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcY29yZWNydF93dGltZS5oIg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI3By
YWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcd2NoYXIuaCINCiNs
aW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN5cy9zdGF0LmgiDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHN5cy90eXBlcy5oIg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgyMCA0OTk1IDQ5OTYg
Mjg3MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCg0KICAgIA0KDQogICAgdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBfaW5vX3Q7IA0KDQogICAgDQogICAgICAgIHR5cGVkZWYgX2lub190IGlub190Ow0KICAg
ICNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzeXMvdHlwZXMuaCINCiNsaW5lIDI1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1Y3J0XFxzeXMvdHlwZXMuaCINCg0KDQoNCg0KICAgIA0KDQogICAgdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX2Rldl90OyANCg0KICAgIA0KICAgICAgICB0eXBlZGVmIF9kZXZfdCBkZXZfdDsNCiAg
ICAjbGluZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcc3lzL3R5cGVzLmgiDQojbGluZSAzNyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcc3lzL3R5cGVzLmgiDQoNCg0KDQoNCiAgICANCg0KICAgIHR5cGVkZWYgbG9uZyBf
b2ZmX3Q7IA0KDQogICAgDQogICAgICAgIHR5cGVkZWYgX29mZl90IG9mZl90Ow0KICAgICNsaW5l
IDQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1Y3J0XFxzeXMvdHlwZXMuaCINCiNsaW5lIDQ5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0
XFxzeXMvdHlwZXMuaCINCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDEyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxzeXMvc3RhdC5oIg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4MjAgNDk5NSA0OTk2
IDI4NzE5IDI4NzI2IDI4NzI3ICkNCg0KDQpfX3ByYWdtYShwYWNrKHB1c2gsIDgpKSBleHRlcm4g
IkMiIHsNCg0KDQoNCg0KDQoNCnN0cnVjdCBfc3RhdDMyDQp7DQogICAgX2Rldl90ICAgICAgICAg
c3RfZGV2Ow0KICAgIF9pbm9fdCAgICAgICAgIHN0X2lubzsNCiAgICB1bnNpZ25lZCBzaG9ydCBz
dF9tb2RlOw0KICAgIHNob3J0ICAgICAgICAgIHN0X25saW5rOw0KICAgIHNob3J0ICAgICAgICAg
IHN0X3VpZDsNCiAgICBzaG9ydCAgICAgICAgICBzdF9naWQ7DQogICAgX2Rldl90ICAgICAgICAg
c3RfcmRldjsNCiAgICBfb2ZmX3QgICAgICAgICBzdF9zaXplOw0KICAgIF9fdGltZTMyX3QgICAg
IHN0X2F0aW1lOw0KICAgIF9fdGltZTMyX3QgICAgIHN0X210aW1lOw0KICAgIF9fdGltZTMyX3Qg
ICAgIHN0X2N0aW1lOw0KfTsNCg0Kc3RydWN0IF9zdGF0MzJpNjQNCnsNCiAgICBfZGV2X3QgICAg
ICAgICBzdF9kZXY7DQogICAgX2lub190ICAgICAgICAgc3RfaW5vOw0KICAgIHVuc2lnbmVkIHNo
b3J0IHN0X21vZGU7DQogICAgc2hvcnQgICAgICAgICAgc3Rfbmxpbms7DQogICAgc2hvcnQgICAg
ICAgICAgc3RfdWlkOw0KICAgIHNob3J0ICAgICAgICAgIHN0X2dpZDsNCiAgICBfZGV2X3QgICAg
ICAgICBzdF9yZGV2Ow0KICAgIF9faW50NjQgICAgICAgIHN0X3NpemU7DQogICAgX190aW1lMzJf
dCAgICAgc3RfYXRpbWU7DQogICAgX190aW1lMzJfdCAgICAgc3RfbXRpbWU7DQogICAgX190aW1l
MzJfdCAgICAgc3RfY3RpbWU7DQp9Ow0KDQpzdHJ1Y3QgX3N0YXQ2NGkzMg0Kew0KICAgIF9kZXZf
dCAgICAgICAgIHN0X2RldjsNCiAgICBfaW5vX3QgICAgICAgICBzdF9pbm87DQogICAgdW5zaWdu
ZWQgc2hvcnQgc3RfbW9kZTsNCiAgICBzaG9ydCAgICAgICAgICBzdF9ubGluazsNCiAgICBzaG9y
dCAgICAgICAgICBzdF91aWQ7DQogICAgc2hvcnQgICAgICAgICAgc3RfZ2lkOw0KICAgIF9kZXZf
dCAgICAgICAgIHN0X3JkZXY7DQogICAgX29mZl90ICAgICAgICAgc3Rfc2l6ZTsNCiAgICBfX3Rp
bWU2NF90ICAgICBzdF9hdGltZTsNCiAgICBfX3RpbWU2NF90ICAgICBzdF9tdGltZTsNCiAgICBf
X3RpbWU2NF90ICAgICBzdF9jdGltZTsNCn07DQoNCnN0cnVjdCBfc3RhdDY0DQp7DQogICAgX2Rl
dl90ICAgICAgICAgc3RfZGV2Ow0KICAgIF9pbm9fdCAgICAgICAgIHN0X2lubzsNCiAgICB1bnNp
Z25lZCBzaG9ydCBzdF9tb2RlOw0KICAgIHNob3J0ICAgICAgICAgIHN0X25saW5rOw0KICAgIHNo
b3J0ICAgICAgICAgIHN0X3VpZDsNCiAgICBzaG9ydCAgICAgICAgICBzdF9naWQ7DQogICAgX2Rl
dl90ICAgICAgICAgc3RfcmRldjsNCiAgICBfX2ludDY0ICAgICAgICBzdF9zaXplOw0KICAgIF9f
dGltZTY0X3QgICAgIHN0X2F0aW1lOw0KICAgIF9fdGltZTY0X3QgICAgIHN0X210aW1lOw0KICAg
IF9fdGltZTY0X3QgICAgIHN0X2N0aW1lOw0KfTsNCg0KDQoNCg0KICAgIHN0cnVjdCBzdGF0DQog
ICAgew0KICAgICAgICBfZGV2X3QgICAgICAgICBzdF9kZXY7DQogICAgICAgIF9pbm9fdCAgICAg
ICAgIHN0X2lubzsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsNCiAgICAgICAgc2hv
cnQgICAgICAgICAgc3Rfbmxpbms7DQogICAgICAgIHNob3J0ICAgICAgICAgIHN0X3VpZDsNCiAg
ICAgICAgc2hvcnQgICAgICAgICAgc3RfZ2lkOw0KICAgICAgICBfZGV2X3QgICAgICAgICBzdF9y
ZGV2Ow0KICAgICAgICBfb2ZmX3QgICAgICAgICBzdF9zaXplOw0KICAgICAgICB0aW1lX3QgICAg
ICAgICBzdF9hdGltZTsNCiAgICAgICAgdGltZV90ICAgICAgICAgc3RfbXRpbWU7DQogICAgICAg
IHRpbWVfdCAgICAgICAgIHN0X2N0aW1lOw0KICAgIH07DQojbGluZSAxMDIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXHN5cy9zdGF0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQojbGluZSAxMjggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHN5cy9zdGF0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiNsaW5lIDE1MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
c3lzL3N0YXQuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfZnN0
YXQzMigNCiAgICAgICBpbnQgICAgICAgICAgICAgX0ZpbGVIYW5kbGUsDQogICAgICBzdHJ1Y3Qg
X3N0YXQzMiogX1N0YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2Rl
Y2wgX2ZzdGF0MzJpNjQoDQogICAgICAgaW50ICAgICAgICAgICAgICAgIF9GaWxlSGFuZGxlLA0K
ICAgICAgc3RydWN0IF9zdGF0MzJpNjQqIF9TdGF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludCBfX2NkZWNsIF9mc3RhdDY0aTMyKA0KICAgICAgIGludCAgICAgICAgICAgICAg
ICBfRmlsZUhhbmRsZSwNCiAgICAgIHN0cnVjdCBfc3RhdDY0aTMyKiBfU3RhdA0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfZnN0YXQ2NCgNCiAgICAgICBpbnQg
ICAgICAgICAgICAgX0ZpbGVIYW5kbGUsDQogICAgICBzdHJ1Y3QgX3N0YXQ2NCogX1N0YXQNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3N0YXQzMigNCiAgICAg
IGNoYXIgY29uc3QqICAgICBfRmlsZU5hbWUsDQogICAgICAgc3RydWN0IF9zdGF0MzIqIF9TdGF0
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9zdGF0MzJpNjQo
DQogICAgICBjaGFyIGNvbnN0KiAgICAgICAgX0ZpbGVOYW1lLA0KICAgICAgIHN0cnVjdCBfc3Rh
dDMyaTY0KiBfU3RhdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVj
bCBfc3RhdDY0aTMyKA0KICAgICAgY2hhciBjb25zdCogICAgICAgIF9GaWxlTmFtZSwNCiAgICAg
ICBzdHJ1Y3QgX3N0YXQ2NGkzMiogX1N0YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50IF9fY2RlY2wgX3N0YXQ2NCgNCiAgICAgIGNoYXIgY29uc3QqICAgICBfRmlsZU5hbWUs
DQogICAgICAgc3RydWN0IF9zdGF0NjQqIF9TdGF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludCBfX2NkZWNsIF93c3RhdDMyKA0KICAgICAgd2NoYXJfdCBjb25zdCogIF9GaWxl
TmFtZSwNCiAgICAgICBzdHJ1Y3QgX3N0YXQzMiogX1N0YXQNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3dzdGF0MzJpNjQoDQogICAgICB3Y2hhcl90IGNvbnN0
KiAgICAgX0ZpbGVOYW1lLA0KICAgICAgIHN0cnVjdCBfc3RhdDMyaTY0KiBfU3RhdA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfd3N0YXQ2NGkzMigNCiAgICAg
IHdjaGFyX3QgY29uc3QqICAgICBfRmlsZU5hbWUsDQogICAgICAgc3RydWN0IF9zdGF0NjRpMzIq
IF9TdGF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF93c3Rh
dDY0KA0KICAgICAgd2NoYXJfdCBjb25zdCogIF9GaWxlTmFtZSwNCiAgICAgICBzdHJ1Y3QgX3N0
YXQ2NCogX1N0YXQNCiAgICApOw0KDQoNCg0KDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQogICAgICAgIHN0YXRpYyBfX2lubGluZSBpbnQgX19jZGVjbCBmc3RhdChpbnQgY29u
c3QgX0ZpbGVIYW5kbGUsIHN0cnVjdCBzdGF0KiBjb25zdCBfU3RhdCkNCiAgICAgICAgew0KICAg
ICAgICAgICAgc3RhdGljX2Fzc2VydCgoc2l6ZW9mKHN0cnVjdCBzdGF0KSA9PSBzaXplb2Yoc3Ry
dWN0IF9zdGF0NjRpMzIpKSwgInNpemVvZihzdHJ1Y3Qgc3RhdCkgPT0gc2l6ZW9mKHN0cnVjdCBf
c3RhdDY0aTMyKSIpOw0KICAgICAgICAgICAgcmV0dXJuIF9mc3RhdDY0aTMyKF9GaWxlSGFuZGxl
LCAoc3RydWN0IF9zdGF0NjRpMzIqKV9TdGF0KTsNCiAgICAgICAgfQ0KICAgICAgICBzdGF0aWMg
X19pbmxpbmUgaW50IF9fY2RlY2wgc3RhdChjaGFyIGNvbnN0KiBjb25zdCBfRmlsZU5hbWUsIHN0
cnVjdCBzdGF0KiBjb25zdCBfU3RhdCkNCiAgICAgICAgew0KICAgICAgICAgICAgc3RhdGljX2Fz
c2VydCgoc2l6ZW9mKHN0cnVjdCBzdGF0KSA9PSBzaXplb2Yoc3RydWN0IF9zdGF0NjRpMzIpKSwg
InNpemVvZihzdHJ1Y3Qgc3RhdCkgPT0gc2l6ZW9mKHN0cnVjdCBfc3RhdDY0aTMyKSIpOw0KICAg
ICAgICAgICAgcmV0dXJuIF9zdGF0NjRpMzIoX0ZpbGVOYW1lLCAoc3RydWN0IF9zdGF0NjRpMzIq
KV9TdGF0KTsNCiAgICAgICAgfQ0KDQogICAgI2xpbmUgMjQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzeXMv
c3RhdC5oIg0KI2xpbmUgMjQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxzeXMvc3RhdC5oIg0KDQp9IF9fcHJh
Z21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAyNiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcd2NoYXIuaCINCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgyMCA0OTk1IDQ5OTYg
Mjg3MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCl9fcHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAi
QyIgew0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgd2NoYXJfdCBfV2ludF90Ow0KDQoNCg0KDQoN
CiAgICAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHdjaGFyX3QqIF9fY2RlY2wgX3dz
ZXRsb2NhbGUoDQogICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgX0NhdGVnb3J5LA0KICAg
ICAgICAgIHdjaGFyX3QgY29uc3QqIF9Mb2NhbGUNCiAgICAgICAgKTsNCg0KICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBfbG9jYWxlX3QgX19jZGVjbCBfd2NyZWF0ZV9sb2NhbGUoDQog
ICAgICAgICAgICBpbnQgICAgICAgICAgICBfQ2F0ZWdvcnksDQogICAgICAgICAgd2NoYXJfdCBj
b25zdCogX0xvY2FsZQ0KICAgICAgICApOw0KDQoNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB3aW50X3QgX19jZGVjbCBidG93YygNCiAgICAgICAgICBpbnQgX0NoDQogICAgICAgICk7DQoN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgbWJybGVuKA0KICAgICAg
ICAgICAgY2hhciBjb25zdCogX0NoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIF9TaXplSW5CeXRlcywNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYnN0YXRlX3QqICBfU3RhdGUN
CiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgX19jZGVjbCBt
YnJ0b3djKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QqICAgIF9E
c3RDaCwNCiAgICAgICAgICAgIGNoYXIgY29uc3QqIF9TcmNDaCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBfU2l6ZUluQnl0
ZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWJz
dGF0ZV90KiAgX1N0YXRlDQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGVycm5vX3QgX19jZGVjbCBtYnNydG93Y3NfcygNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QqICAgICAgX1JldHZhbCwNCiAgICAgICAgICAgICAgICAgIHdj
aGFyX3QqICAgICBfRHN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICAgICAgIF9TaXplLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0
KiogX1BTcmMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ICAgICAgX04sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYnN0YXRlX3Qq
ICAgX1N0YXRlDQogICAgICAgICk7DQoNCiAgICBleHRlcm4gIkMrKyIgeyB0ZW1wbGF0ZSA8c2l6
ZV90IF9TaXplPiBpbmxpbmUgICBlcnJub190IF9fY2RlY2wgbWJzcnRvd2NzX3MoICBzaXplX3Qq
IF9SZXR2YWwsICAgd2NoYXJfdCAoJl9EZXN0KVtfU2l6ZV0sICAgICBjaGFyIGNvbnN0KiogX1BT
b3VyY2UsICAgc2l6ZV90IF9Db3VudCwgICBtYnN0YXRlX3QqIF9TdGF0ZSkgdGhyb3coKSB7IHJl
dHVybiBtYnNydG93Y3NfcyhfUmV0dmFsLCBfRGVzdCwgX1NpemUsIF9QU291cmNlLCBfQ291bnQs
IF9TdGF0ZSk7IH0gfQ0KI2xpbmUgOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHdjaGFyLmgiDQoNCiAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgX19jZGVjbCBtYnNydG93Y3MoIHdjaGFyX3Qg
Kl9EZXN0LCAgY2hhciBjb25zdCoqIF9QU3JjLCAgc2l6ZV90IF9Db3VudCwgIG1ic3RhdGVfdCog
X1N0YXRlKTsNCiNsaW5lIDEwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcd2NoYXIuaCINCg0KICAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIHdjcnRvbWJfcygNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogICAgX1JldHZhbCwNCiAgICAgICAg
ICBjaGFyKiAgICAgIF9Ec3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAgICAgX1NpemVJbkJ5dGVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3Y2hhcl90ICAgIF9DaCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YnN0YXRlX3QqIF9TdGF0ZQ0KICAgICAgICApOw0KDQogICAgZXh0ZXJuICJDKysiIHsgdGVtcGxh
dGUgPHNpemVfdCBfU2l6ZT4gaW5saW5lICAgZXJybm9fdCBfX2NkZWNsIHdjcnRvbWJfcyggIHNp
emVfdCogX1JldHZhbCwgICBjaGFyICgmX0Rlc3QpW19TaXplXSwgICB3Y2hhcl90IF9Tb3VyY2Us
ICAgbWJzdGF0ZV90KiBfU3RhdGUpIHRocm93KCkgeyByZXR1cm4gd2NydG9tYl9zKF9SZXR2YWws
IF9EZXN0LCBfU2l6ZSwgX1NvdXJjZSwgX1N0YXRlKTsgfSB9DQojbGluZSAxMjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHdjaGFyLmgiDQoNCiAgICBfX2lubGluZSBzaXplX3QgX19jZGVjbCBfX2luc2VjdXJl
X3djcnRvbWIoICBjaGFyICpfRGVzdCwgIHdjaGFyX3QgX1NvdXJjZSwgIG1ic3RhdGVfdCogX1N0
YXRlKSB7IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgX19jZGVjbCB3Y3J0b21iKCAgY2hh
ciAqX0Rlc3QsICB3Y2hhcl90IF9Tb3VyY2UsICBtYnN0YXRlX3QqIF9TdGF0ZSk7IHJldHVybiB3
Y3J0b21iKF9EZXN0LCBfU291cmNlLCBfU3RhdGUpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRl
IDx0eXBlbmFtZSBfVD4gaW5saW5lICBzaXplX3QgX19jZGVjbCB3Y3J0b21iKF9UICZfRGVzdCwg
IHdjaGFyX3QgX1NvdXJjZSwgIG1ic3RhdGVfdCogX1N0YXRlKSB0aHJvdygpIHsgcmV0dXJuIF9f
aW5zZWN1cmVfd2NydG9tYihzdGF0aWNfY2FzdDxjaGFyICo+KF9EZXN0KSwgX1NvdXJjZSwgX1N0
YXRlKTsgfSB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1Q+IGlubGluZSAgc2l6ZV90IF9fY2RlY2wgd2Ny
dG9tYihjb25zdCBfVCAmX0Rlc3QsICB3Y2hhcl90IF9Tb3VyY2UsICBtYnN0YXRlX3QqIF9TdGF0
ZSkgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJlX3djcnRvbWIoc3RhdGljX2Nhc3Q8Y2hhciAq
PihfRGVzdCksIF9Tb3VyY2UsIF9TdGF0ZSk7IH0gdGVtcGxhdGUgPD4gaW5saW5lICBzaXplX3Qg
X19jZGVjbCB3Y3J0b21iKCAgY2hhciAqICZfRGVzdCwgIHdjaGFyX3QgX1NvdXJjZSwgIG1ic3Rh
dGVfdCogX1N0YXRlKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfd2NydG9tYihfRGVzdCwg
X1NvdXJjZSwgX1N0YXRlKTsgfSB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgc2l6ZV90
IF9fY2RlY2wgd2NydG9tYihjaGFyICgmX0Rlc3QpW19TaXplXSwgIHdjaGFyX3QgX1NvdXJjZSwg
IG1ic3RhdGVfdCogX1N0YXRlKSB0aHJvdygpIHsgc2l6ZV90IF9SZXQgPSAwOyB3Y3J0b21iX3Mo
Jl9SZXQsIF9EZXN0LCBfU2l6ZSwgX1NvdXJjZSwgX1N0YXRlKTsgcmV0dXJuIChfUmV0ID4gMCA/
IChfUmV0IC0gMSkgOiBfUmV0KTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIHNpemVfdCBfX2NkZWNs
IHdjcnRvbWI8MT4oY2hhciAoJl9EZXN0KVsxXSwgIHdjaGFyX3QgX1NvdXJjZSwgIG1ic3RhdGVf
dCogX1N0YXRlKSB0aHJvdygpIHsgc2l6ZV90IF9SZXQgPSAwOyB3Y3J0b21iX3MoJl9SZXQsIF9E
ZXN0LCAxLCBfU291cmNlLCBfU3RhdGUpOyByZXR1cm4gKF9SZXQgPiAwID8gKF9SZXQgLSAxKSA6
IF9SZXQpOyB9IH0NCiNsaW5lIDEzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcd2NoYXIuaCINCg0KICAgICAN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIHdjc3J0b21ic19zKA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qq
ICAgICAgICAgX1JldHZhbCwNCiAgICAgICAgICBjaGFyKiAgICAgICAgICAgX0RzdCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ICAgICAgICAgX1NpemVJbkJ5dGVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2NoYXJfdCBjb25zdCoqIF9TcmMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIF9TaXplLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWJzdGF0ZV90KiAgICAgIF9T
dGF0ZQ0KICAgICAgICApOw0KDQogICAgZXh0ZXJuICJDKysiIHsgdGVtcGxhdGUgPHNpemVfdCBf
U2l6ZT4gaW5saW5lICAgZXJybm9fdCBfX2NkZWNsIHdjc3J0b21ic19zKCAgc2l6ZV90KiBfUmV0
dmFsLCAgIGNoYXIgKCZfRGVzdClbX1NpemVdLCAgICAgd2NoYXJfdCBjb25zdCoqIF9QU3JjLCAg
IHNpemVfdCBfQ291bnQsICAgbWJzdGF0ZV90KiBfU3RhdGUpIHRocm93KCkgeyByZXR1cm4gd2Nz
cnRvbWJzX3MoX1JldHZhbCwgX0Rlc3QsIF9TaXplLCBfUFNyYywgX0NvdW50LCBfU3RhdGUpOyB9
IH0NCiNsaW5lIDE1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcd2NoYXIuaCINCg0KICAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgd2NzcnRvbWJzKCAgY2hhciAqX0Rlc3QsICB3Y2hh
cl90IGNvbnN0KiogX1BTb3VyY2UsICBzaXplX3QgX0NvdW50LCAgbWJzdGF0ZV90KiBfU3RhdGUp
Ow0KI2xpbmUgMTU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFx3Y2hhci5oIg0KDQogICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX2NkZWNsIHdjdG9iKA0KICAgICAgICAgIHdpbnRfdCBfV0NoDQogICAg
ICAgICk7DQoNCiAgICANCg0KICAgICAgICAgDQogICAgICAgIGVycm5vX3QgX19jZGVjbCB3bWVt
Y3B5X3MoDQogICAgICAgICAgICAgIHdjaGFyX3QqICAgICAgIF9TMSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnNpemVfdCAgICAgICAgX04xLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogX1MyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc2l6ZV90ICAgICAgICBfTg0KICAgICAgICAgICAgKTsNCg0KICAgICAg
ICAgDQogICAgICAgIGVycm5vX3QgX19jZGVjbCB3bWVtbW92ZV9zKA0KICAgICAgICAgICAgICB3
Y2hhcl90KiAgICAgICBfUzEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJzaXplX3QgICAgICAgIF9OMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29u
c3QqIF9TMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNpemVfdCAg
ICAgICAgX04NCiAgICAgICAgICAgICk7DQoNCiAgICAjbGluZSAxODMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XHdjaGFyLmgiDQoNCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBmd2lkZSgNCiAgICAgICAgICBG
SUxFKiBfRiwNCiAgICAgICAgICAgICAgaW50ICAgX00NCiAgICAgICAgKQ0KICAgIHsNCiAgICAg
ICAgKHZvaWQpX0Y7DQogICAgICAgIHJldHVybiAoX00pOw0KICAgIH0NCg0KICAgIF9faW5saW5l
IGludCBfX2NkZWNsIG1ic2luaXQoDQogICAgICAgICAgbWJzdGF0ZV90IGNvbnN0KiBfUA0KICAg
ICAgICApDQogICAgew0KICAgICAgICByZXR1cm4gX1AgPT0gMCB8fCBfUC0+X1djaGFyID09IDA7
DQogICAgfQ0KDQogICAgX19pbmxpbmUgd2NoYXJfdCBjb25zdCogX19jZGVjbCB3bWVtY2hyKA0K
ICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9TLA0KICAgICAgICAgICAgICAgICAgICB3Y2hhcl90
ICAgICAgICBfQywNCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX04NCiAgICAg
ICAgKQ0KICAgIHsNCiAgICAgICAgZm9yICg7IDAgPCBfTjsgKytfUywgLS1fTikNCiAgICAgICAg
ICAgIGlmICgqX1MgPT0gX0MpDQogICAgICAgICAgICAgICAgcmV0dXJuICh3Y2hhcl90IGNvbnN0
KilfUzsNCg0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBfX2lubGluZSBpbnQgX19j
ZGVjbCB3bWVtY21wKA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9TMSwNCiAgICAgICAgICB3
Y2hhcl90IGNvbnN0KiBfUzIsDQogICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgIF9O
DQogICAgICAgICkNCiAgICB7DQogICAgICAgIGZvciAoOyAwIDwgX047ICsrX1MxLCArK19TMiwg
LS1fTikNCiAgICAgICAgICAgIGlmICgqX1MxICE9ICpfUzIpDQogICAgICAgICAgICAgICAgcmV0
dXJuICpfUzEgPCAqX1MyID8gLTEgOiAxOw0KDQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0K
ICAgICANCiAgICANCiAgICBfX2lubGluZSANCiAgICB3Y2hhcl90KiBfX2NkZWNsIHdtZW1jcHko
DQogICAgICAgICAgd2NoYXJfdCogICAgICAgX1MxLA0KICAgICAgICAgICAgICAgIHdjaGFyX3Qg
Y29uc3QqIF9TMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgX04N
CiAgICAgICAgKQ0KICAgIHsNCiAgICAgICAgI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOiA2Mzg2
KSANCiAgICAgICAgcmV0dXJuICh3Y2hhcl90KiltZW1jcHkoX1MxLCBfUzIsIF9OKnNpemVvZih3
Y2hhcl90KSk7DQogICAgfQ0KDQogICAgX19pbmxpbmUgDQogICAgd2NoYXJfdCogX19jZGVjbCB3
bWVtbW92ZSgNCiAgICAgICAgICB3Y2hhcl90KiAgICAgICBfUzEsDQogICAgICAgICAgICAgICAg
d2NoYXJfdCBjb25zdCogX1MyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICAgICAgICAgX04NCiAgICAgICAgKQ0KICAgIHsNCiAgICAgICAgI3ByYWdtYSB3YXJuaW5nKHN1
cHByZXNzOiA2Mzg2KSANCiAgICAgICAgcmV0dXJuICh3Y2hhcl90KiltZW1tb3ZlKF9TMSwgX1My
LCBfTipzaXplb2Yod2NoYXJfdCkpOw0KICAgIH0NCg0KICAgICANCiAgICANCiAgICBfX2lubGlu
ZSB3Y2hhcl90KiBfX2NkZWNsIHdtZW1zZXQoDQogICAgICAgICAgd2NoYXJfdCogX1MsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgIF9DLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgICBfTg0KICAgICAgICApDQogICAgew0KICAgICAgICB3Y2hhcl90ICpfU3Ug
PSBfUzsNCiAgICAgICAgZm9yICg7IDAgPCBfTjsgKytfU3UsIC0tX04pDQogICAgICAgIHsNCiAg
ICAgICAgICAgICpfU3UgPSBfQzsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gX1M7DQogICAg
fQ0KDQogICAgDQoNCiAgICAgICAgZXh0ZXJuICJDKysiIGlubGluZSB3Y2hhcl90KiBfX2NkZWNs
IHdtZW1jaHIoDQogICAgICAgICAgICAgIHdjaGFyX3QqIF9TLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgd2NoYXJfdCAgX0MsDQogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICBfTg0K
ICAgICAgICAgICAgKQ0KICAgICAgICB7DQogICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBjb25z
dCBfU0MgPSBfUzsNCiAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PHdjaGFyX3QqPih3bWVt
Y2hyKF9TQywgX0MsIF9OKSk7DQogICAgICAgIH0NCg0KICAgICNsaW5lIDI3OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dWNydFxcd2NoYXIuaCINCg0KI2xpbmUgMjgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFx3Y2hhci5oIg0KDQoN
Cn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDI4
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcd2NoYXIuaCINCiNsaW5lIDE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGN3Y2hhciINCg0KI3ByYWdtYSBwYWNrKHB1
c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxl
IDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5
IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1
MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCnVzaW5nIF9NYnN0YXRldCA9IG1ic3RhdGVf
dDsNCg0KbmFtZXNwYWNlIHN0ZCB7DQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlIDogNDk5NSkgDQoNCnVzaW5nIDo6IF9NYnN0YXRldDsNCg0KdXNpbmcgOjog
bWJzdGF0ZV90Ow0KdXNpbmcgOjogc2l6ZV90Ow0KdXNpbmcgOjogdG07DQp1c2luZyA6OiB3aW50
X3Q7DQoNCnVzaW5nIDo6IGJ0b3djOw0KdXNpbmcgOjogZmdldHdjOw0KdXNpbmcgOjogZmdldHdz
Ow0KdXNpbmcgOjogZnB1dHdjOw0KdXNpbmcgOjogZnB1dHdzOw0KdXNpbmcgOjogZndpZGU7DQp1
c2luZyA6OiBmd3ByaW50ZjsNCnVzaW5nIDo6IGZ3c2NhbmY7DQp1c2luZyA6OiBnZXR3YzsNCnVz
aW5nIDo6IGdldHdjaGFyOw0KdXNpbmcgOjogbWJybGVuOw0KdXNpbmcgOjogbWJydG93YzsNCnVz
aW5nIDo6IG1ic3J0b3djczsNCnVzaW5nIDo6IG1ic2luaXQ7DQp1c2luZyA6OiBwdXR3YzsNCnVz
aW5nIDo6IHB1dHdjaGFyOw0KdXNpbmcgOjogc3dwcmludGY7DQp1c2luZyA6OiBzd3NjYW5mOw0K
dXNpbmcgOjogdW5nZXR3YzsNCnVzaW5nIDo6IHZmd3ByaW50ZjsNCnVzaW5nIDo6IHZzd3ByaW50
ZjsNCnVzaW5nIDo6IHZ3cHJpbnRmOw0KdXNpbmcgOjogd2NydG9tYjsNCnVzaW5nIDo6IHdwcmlu
dGY7DQp1c2luZyA6OiB3c2NhbmY7DQp1c2luZyA6OiB3Y3NydG9tYnM7DQp1c2luZyA6OiB3Y3N0
b2w7DQp1c2luZyA6OiB3Y3NjYXQ7DQp1c2luZyA6OiB3Y3NjaHI7DQp1c2luZyA6OiB3Y3NjbXA7
DQp1c2luZyA6OiB3Y3Njb2xsOw0KdXNpbmcgOjogd2NzY3B5Ow0KdXNpbmcgOjogd2NzY3NwbjsN
CnVzaW5nIDo6IHdjc2xlbjsNCnVzaW5nIDo6IHdjc25jYXQ7DQp1c2luZyA6OiB3Y3NuY21wOw0K
dXNpbmcgOjogd2NzbmNweTsNCnVzaW5nIDo6IHdjc3Bicms7DQp1c2luZyA6OiB3Y3NyY2hyOw0K
dXNpbmcgOjogd2Nzc3BuOw0KdXNpbmcgOjogd2NzdG9kOw0KdXNpbmcgOjogd2NzdG91bDsNCnVz
aW5nIDo6IHdjc3N0cjsNCnVzaW5nIDo6IHdjc3RvazsNCnVzaW5nIDo6IHdjc3hmcm07DQp1c2lu
ZyA6OiB3Y3RvYjsNCnVzaW5nIDo6IHdtZW1jaHI7DQp1c2luZyA6OiB3bWVtY21wOw0KdXNpbmcg
Ojogd21lbWNweTsNCnVzaW5nIDo6IHdtZW1tb3ZlOw0KdXNpbmcgOjogd21lbXNldDsNCnVzaW5n
IDo6IHdjc2Z0aW1lOw0KDQp1c2luZyA6OiB2ZndzY2FuZjsNCnVzaW5nIDo6IHZzd3NjYW5mOw0K
dXNpbmcgOjogdndzY2FuZjsNCnVzaW5nIDo6IHdjc3RvZjsNCnVzaW5nIDo6IHdjc3RvbGQ7DQp1
c2luZyA6OiB3Y3N0b2xsOw0KdXNpbmcgOjogd2NzdG91bGw7DQoNCiNwcmFnbWEgd2FybmluZyhw
b3ApDQp9DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBvcCkNCg0K
I2xpbmUgMTA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGN3Y2hhciINCiNsaW5lIDEwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxjd2NoYXIiDQojbGluZSAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpb3Nmd2QiDQoNCg0KI3ByYWdtYSBwYWNrKHB1
c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxl
IDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5
IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1
MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpb3Nmd2QiDQoNCg0KDQojbGluZSA0NiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpb3Nmd2QiDQoNCg0K
dXNpbmcgc3RyZWFtb2ZmICA9IGxvbmcgbG9uZzsNCnVzaW5nIHN0cmVhbXNpemUgPSBsb25nIGxv
bmc7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9TdGF0ZXR5cGU+DQpjbGFzcyBmcG9zIHsgDQpwdWJs
aWM6DQogICAgIGZwb3Moc3RyZWFtb2ZmIF9PZmYgPSAwKSA6IF9NeW9mZihfT2ZmKSwgX0Zwb3Mo
MCksIF9NeXN0YXRlKCkge30NCg0KICAgIGZwb3MoX1N0YXRldHlwZSBfU3RhdGUsIGZwb3NfdCBf
RmlsZXBvc2l0aW9uKSA6IF9NeW9mZihfRmlsZXBvc2l0aW9uKSwgX0Zwb3MoMCksIF9NeXN0YXRl
KF9TdGF0ZSkge30NCg0KICAgIFtbbm9kaXNjYXJkXV0gX1N0YXRldHlwZSBzdGF0ZSgpIGNvbnN0
IHsNCiAgICAgICAgcmV0dXJuIF9NeXN0YXRlOw0KICAgIH0NCg0KICAgIHZvaWQgc3RhdGUoX1N0
YXRldHlwZSBfU3RhdGUpIHsNCiAgICAgICAgX015c3RhdGUgPSBfU3RhdGU7DQogICAgfQ0KDQog
ICAgb3BlcmF0b3Igc3RyZWFtb2ZmKCkgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIHJldHVybiBfTXlvZmYgKyBfRnBvczsNCiAgICB9DQoNCg0KICAgIFtbZGVwcmVjYXRlZCgi
d2FybmluZyBTVEw0MDE5OiAiICJUaGUgbWVtYmVyIHN0ZDo6ZnBvczo6c2Vla3BvcygpIGlzIG5v
bi1TdGFuZGFyZCwgYW5kIGlzIHByZXNlcnZlZCBvbmx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
IiAid29ya2Fyb3VuZHMgZm9yIG9sZCB2ZXJzaW9ucyBvZiBWaXN1YWwgQysrLiBJdCB3aWxsIGJl
IHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSwgYW5kIGluIHRoaXMgIiAicmVsZWFzZSBhbHdh
eXMgcmV0dXJucyAwLiBQbGVhc2UgdXNlIHN0YW5kYXJkcy1jb25mb3JtaW5nIG1lY2hhbmlzbXMg
dG8gbWFuaXB1bGF0ZSBmcG9zLCBzdWNoIGFzICIgImNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHN0
cmVhbW9mZiwgb3IgYW4gaW50ZWdyYWwgdHlwZSwgaW5zdGVhZC4gSWYgeW91IGFyZSByZWNlaXZp
bmcgdGhpcyBtZXNzYWdlICIgIndoaWxlIGNvbXBpbGluZyBCb29zdC5JT1N0cmVhbXMsIGEgZml4
IGhhcyBiZWVuIHN1Ym1pdHRlZCB1cHN0cmVhbSB0byBtYWtlIEJvb3N0IHVzZSAiICJzdGFuZGFy
ZHMtY29uZm9ybWluZyBtZWNoYW5pc21zLCBhcyBpdCBkb2VzIGZvciBvdGhlciBjb21waWxlcnMu
IFlvdSBjYW4gZGVmaW5lICIgIl9TSUxFTkNFX0ZQT1NfU0VFS1BPU19ERVBSRUNBVElPTl9XQVJO
SU5HIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLCAi
ICJvciBkZWZpbmUgX1JFTU9WRV9GUE9TX1NFRUtQT1MgdG8gcmVtb3ZlIHN0ZDo6ZnBvczo6c2Vl
a3BvcyBlbnRpcmVseS4iKV1dIGZwb3NfdCBzZWVrcG9zKCkgY29uc3Qgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4ge307DQogICAgfQ0KI2xpbmUgNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW9zZndkIg0KDQogICAgW1tub2Rpc2NhcmRdXSBz
dHJlYW1vZmYgb3BlcmF0b3ItKGNvbnN0IGZwb3MmIF9SaWdodCkgY29uc3Qgew0KICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c3RyZWFtb2ZmPigqdGhpcykgLSBzdGF0aWNfY2FzdDxzdHJlYW1v
ZmY+KF9SaWdodCk7DQogICAgfQ0KDQogICAgZnBvcyYgb3BlcmF0b3IrPShzdHJlYW1vZmYgX09m
ZikgeyANCiAgICAgICAgX015b2ZmICs9IF9PZmY7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgICBmcG9zJiBvcGVyYXRvci09KHN0cmVhbW9mZiBfT2ZmKSB7IA0KICAgICAgICBf
TXlvZmYgLT0gX09mZjsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gZnBvcyBvcGVyYXRvcisoc3RyZWFtb2ZmIF9PZmYpIGNvbnN0IHsNCiAgICAgICAg
ZnBvcyBfVG1wID0gKnRoaXM7DQogICAgICAgIF9UbXAgKz0gX09mZjsNCiAgICAgICAgcmV0dXJu
IF9UbXA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBmcG9zIG9wZXJhdG9yLShzdHJlYW1v
ZmYgX09mZikgY29uc3Qgew0KICAgICAgICBmcG9zIF9UbXAgPSAqdGhpczsNCiAgICAgICAgX1Rt
cCAtPSBfT2ZmOw0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIGJvb2wgb3BlcmF0b3I9PShjb25zdCBmcG9zJiBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHN0cmVhbW9mZj4oKnRoaXMpID09IHN0YXRpY19jYXN0PHN0cmVh
bW9mZj4oX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludCwgZW5hYmxl
X2lmX3Q8aXNfaW50ZWdyYWxfdjxfSW50PiwgaW50PiA9IDA+DQogICAgW1tub2Rpc2NhcmRdXSBm
cmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGZwb3MmIF9MZWZ0LCBjb25zdCBfSW50IF9SaWdo
dCkgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RyZWFtb2ZmPihfTGVmdCkgPT0gX1Jp
Z2h0Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSW50LCBlbmFibGVfaWZfdDxpc19p
bnRlZ3JhbF92PF9JbnQ+LCBpbnQ+ID0gMD4NCiAgICBbW25vZGlzY2FyZF1dIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgX0ludCBfTGVmdCwgY29uc3QgZnBvcyYgX1JpZ2h0KSB7DQogICAg
ICAgIHJldHVybiBfTGVmdCA9PSBzdGF0aWNfY2FzdDxzdHJlYW1vZmY+KF9SaWdodCk7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yIT0oY29uc3QgZnBvcyYgX1JpZ2h0
KSBjb25zdCB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdHJlYW1vZmY+KCp0aGlzKSAh
PSBzdGF0aWNfY2FzdDxzdHJlYW1vZmY+KF9SaWdodCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUg
PGNsYXNzIF9JbnQsIGVuYWJsZV9pZl90PGlzX2ludGVncmFsX3Y8X0ludD4sIGludD4gPSAwPg0K
ICAgIFtbbm9kaXNjYXJkXV0gZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBmcG9zJiBfTGVm
dCwgY29uc3QgX0ludCBfUmlnaHQpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0cmVh
bW9mZj4oX0xlZnQpICE9IF9SaWdodDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lu
dCwgZW5hYmxlX2lmX3Q8aXNfaW50ZWdyYWxfdjxfSW50PiwgaW50PiA9IDA+DQogICAgW1tub2Rp
c2NhcmRdXSBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IF9JbnQgX0xlZnQsIGNvbnN0IGZw
b3MmIF9SaWdodCkgew0KICAgICAgICByZXR1cm4gX0xlZnQgIT0gc3RhdGljX2Nhc3Q8c3RyZWFt
b2ZmPihfUmlnaHQpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBzdHJlYW1vZmYgX015b2ZmOyAN
CiAgICBmcG9zX3QgX0Zwb3M7IA0KICAgIF9TdGF0ZXR5cGUgX015c3RhdGU7IA0KfTsNCg0KdXNp
bmcgc3RyZWFtcG9zICA9IGZwb3M8X01ic3RhdGV0PjsNCnVzaW5nIHdzdHJlYW1wb3MgPSBzdHJl
YW1wb3M7DQoNCg0KY2xhc3MgbG9jYWxlOw0KdGVtcGxhdGUgPGNsYXNzIF9GYWNldD4NCmNvbnN0
IF9GYWNldCYgX19jZGVjbCB1c2VfZmFjZXQoY29uc3QgbG9jYWxlJik7DQoNCnRlbXBsYXRlIDxj
bGFzcyBfRWxlbT4NCnN0cnVjdCBjaGFyX3RyYWl0czsNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgY2hh
cl90cmFpdHM8Y2hhcj47DQoNCg0KDQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgY2hhcl90cmFpdHM8
Y2hhcjE2X3Q+Ow0KdGVtcGxhdGUgPD4NCnN0cnVjdCBjaGFyX3RyYWl0czxjaGFyMzJfdD47DQp0
ZW1wbGF0ZSA8Pg0Kc3RydWN0IGNoYXJfdHJhaXRzPHdjaGFyX3Q+Ow0KDQp0ZW1wbGF0ZSA8Pg0K
c3RydWN0IGNoYXJfdHJhaXRzPHVuc2lnbmVkIHNob3J0PjsNCiNsaW5lIDE2NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpb3Nmd2QiDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQpjbGFzcyBhbGxvY2F0b3I7DQpjbGFzcyBpb3NfYmFzZTsNCnRlbXBs
YXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9FbGVtPj4NCmNs
YXNzIGJhc2ljX2lvczsNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cyA9IGNo
YXJfdHJhaXRzPF9FbGVtPj4NCmNsYXNzIGlzdHJlYW1idWZfaXRlcmF0b3I7DQp0ZW1wbGF0ZSA8
Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfRWxlbT4+DQpjbGFzcyBv
c3RyZWFtYnVmX2l0ZXJhdG9yOw0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRz
ID0gY2hhcl90cmFpdHM8X0VsZW0+Pg0KY2xhc3MgYmFzaWNfc3RyZWFtYnVmOw0KDQojcHJhZ21h
IHZ0b3JkaXNwKHB1c2gsIDIpIA0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRz
ID0gY2hhcl90cmFpdHM8X0VsZW0+Pg0KY2xhc3MgYmFzaWNfaXN0cmVhbTsNCnRlbXBsYXRlIDxj
bGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9FbGVtPj4NCmNsYXNzIGJh
c2ljX29zdHJlYW07DQojcHJhZ21hIHZ0b3JkaXNwKHBvcCkgDQoNCnRlbXBsYXRlIDxjbGFzcyBf
RWxlbSwgY2xhc3MgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9FbGVtPj4NCmNsYXNzIGJhc2ljX2lv
c3RyZWFtOw0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzID0gY2hhcl90cmFp
dHM8X0VsZW0+LCBjbGFzcyBfQWxsb2MgPSBhbGxvY2F0b3I8X0VsZW0+Pg0KY2xhc3MgYmFzaWNf
c3RyaW5nYnVmOw0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzID0gY2hhcl90
cmFpdHM8X0VsZW0+LCBjbGFzcyBfQWxsb2MgPSBhbGxvY2F0b3I8X0VsZW0+Pg0KY2xhc3MgYmFz
aWNfaXN0cmluZ3N0cmVhbTsNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cyA9
IGNoYXJfdHJhaXRzPF9FbGVtPiwgY2xhc3MgX0FsbG9jID0gYWxsb2NhdG9yPF9FbGVtPj4NCmNs
YXNzIGJhc2ljX29zdHJpbmdzdHJlYW07DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9U
cmFpdHMgPSBjaGFyX3RyYWl0czxfRWxlbT4sIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjxfRWxl
bT4+DQpjbGFzcyBiYXNpY19zdHJpbmdzdHJlYW07DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNs
YXNzIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfRWxlbT4+DQpjbGFzcyBiYXNpY19maWxlYnVmOw0K
dGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0VsZW0+
Pg0KY2xhc3MgYmFzaWNfaWZzdHJlYW07DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9U
cmFpdHMgPSBjaGFyX3RyYWl0czxfRWxlbT4+DQpjbGFzcyBiYXNpY19vZnN0cmVhbTsNCnRlbXBs
YXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9FbGVtPj4NCmNs
YXNzIGJhc2ljX2ZzdHJlYW07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfSW5J
dD4NCmNsYXNzIG51bV9nZXQ7DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9PdXRJdD4N
CmNsYXNzIG51bV9wdXQ7DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0+DQpjbGFzcyBjb2xsYXRlOw0K
I2xpbmUgMjEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGlvc2Z3ZCINCg0KDQp1c2luZyBpb3MgICAgICAgICAgID0gYmFzaWNfaW9zPGNoYXIsIGNo
YXJfdHJhaXRzPGNoYXI+PjsNCnVzaW5nIHN0cmVhbWJ1ZiAgICAgPSBiYXNpY19zdHJlYW1idWY8
Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4+Ow0KdXNpbmcgaXN0cmVhbSAgICAgICA9IGJhc2ljX2lz
dHJlYW08Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4+Ow0KdXNpbmcgb3N0cmVhbSAgICAgICA9IGJh
c2ljX29zdHJlYW08Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4+Ow0KdXNpbmcgaW9zdHJlYW0gICAg
ICA9IGJhc2ljX2lvc3RyZWFtPGNoYXIsIGNoYXJfdHJhaXRzPGNoYXI+PjsNCnVzaW5nIHN0cmlu
Z2J1ZiAgICAgPSBiYXNpY19zdHJpbmdidWY8Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4sIGFsbG9j
YXRvcjxjaGFyPj47DQp1c2luZyBpc3RyaW5nc3RyZWFtID0gYmFzaWNfaXN0cmluZ3N0cmVhbTxj
aGFyLCBjaGFyX3RyYWl0czxjaGFyPiwgYWxsb2NhdG9yPGNoYXI+PjsNCnVzaW5nIG9zdHJpbmdz
dHJlYW0gPSBiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXIsIGNoYXJfdHJhaXRzPGNoYXI+LCBhbGxv
Y2F0b3I8Y2hhcj4+Ow0KdXNpbmcgc3RyaW5nc3RyZWFtICA9IGJhc2ljX3N0cmluZ3N0cmVhbTxj
aGFyLCBjaGFyX3RyYWl0czxjaGFyPiwgYWxsb2NhdG9yPGNoYXI+PjsNCnVzaW5nIGZpbGVidWYg
ICAgICAgPSBiYXNpY19maWxlYnVmPGNoYXIsIGNoYXJfdHJhaXRzPGNoYXI+PjsNCnVzaW5nIGlm
c3RyZWFtICAgICAgPSBiYXNpY19pZnN0cmVhbTxjaGFyLCBjaGFyX3RyYWl0czxjaGFyPj47DQp1
c2luZyBvZnN0cmVhbSAgICAgID0gYmFzaWNfb2ZzdHJlYW08Y2hhciwgY2hhcl90cmFpdHM8Y2hh
cj4+Ow0KdXNpbmcgZnN0cmVhbSAgICAgICA9IGJhc2ljX2ZzdHJlYW08Y2hhciwgY2hhcl90cmFp
dHM8Y2hhcj4+Ow0KDQoNCnVzaW5nIHdpb3MgICAgICAgICAgID0gYmFzaWNfaW9zPHdjaGFyX3Qs
IGNoYXJfdHJhaXRzPHdjaGFyX3Q+PjsNCnVzaW5nIHdzdHJlYW1idWYgICAgID0gYmFzaWNfc3Ry
ZWFtYnVmPHdjaGFyX3QsIGNoYXJfdHJhaXRzPHdjaGFyX3Q+PjsNCnVzaW5nIHdpc3RyZWFtICAg
ICAgID0gYmFzaWNfaXN0cmVhbTx3Y2hhcl90LCBjaGFyX3RyYWl0czx3Y2hhcl90Pj47DQp1c2lu
ZyB3b3N0cmVhbSAgICAgICA9IGJhc2ljX29zdHJlYW08d2NoYXJfdCwgY2hhcl90cmFpdHM8d2No
YXJfdD4+Ow0KdXNpbmcgd2lvc3RyZWFtICAgICAgPSBiYXNpY19pb3N0cmVhbTx3Y2hhcl90LCBj
aGFyX3RyYWl0czx3Y2hhcl90Pj47DQp1c2luZyB3c3RyaW5nYnVmICAgICA9IGJhc2ljX3N0cmlu
Z2J1Zjx3Y2hhcl90LCBjaGFyX3RyYWl0czx3Y2hhcl90PiwgYWxsb2NhdG9yPHdjaGFyX3Q+PjsN
CnVzaW5nIHdpc3RyaW5nc3RyZWFtID0gYmFzaWNfaXN0cmluZ3N0cmVhbTx3Y2hhcl90LCBjaGFy
X3RyYWl0czx3Y2hhcl90PiwgYWxsb2NhdG9yPHdjaGFyX3Q+PjsNCnVzaW5nIHdvc3RyaW5nc3Ry
ZWFtID0gYmFzaWNfb3N0cmluZ3N0cmVhbTx3Y2hhcl90LCBjaGFyX3RyYWl0czx3Y2hhcl90Piwg
YWxsb2NhdG9yPHdjaGFyX3Q+PjsNCnVzaW5nIHdzdHJpbmdzdHJlYW0gID0gYmFzaWNfc3RyaW5n
c3RyZWFtPHdjaGFyX3QsIGNoYXJfdHJhaXRzPHdjaGFyX3Q+LCBhbGxvY2F0b3I8d2NoYXJfdD4+
Ow0KdXNpbmcgd2ZpbGVidWYgICAgICAgPSBiYXNpY19maWxlYnVmPHdjaGFyX3QsIGNoYXJfdHJh
aXRzPHdjaGFyX3Q+PjsNCnVzaW5nIHdpZnN0cmVhbSAgICAgID0gYmFzaWNfaWZzdHJlYW08d2No
YXJfdCwgY2hhcl90cmFpdHM8d2NoYXJfdD4+Ow0KdXNpbmcgd29mc3RyZWFtICAgICAgPSBiYXNp
Y19vZnN0cmVhbTx3Y2hhcl90LCBjaGFyX3RyYWl0czx3Y2hhcl90Pj47DQp1c2luZyB3ZnN0cmVh
bSAgICAgICA9IGJhc2ljX2ZzdHJlYW08d2NoYXJfdCwgY2hhcl90cmFpdHM8d2NoYXJfdD4+Ow0K
DQoNCg0KDQoNCg0KI2xpbmUgMjQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGlvc2Z3ZCINCn0NCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQoj
cHJhZ21hIHBhY2socG9wKQ0KI2xpbmUgMjU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGlvc2Z3ZCINCiNsaW5lIDI1NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpb3Nmd2QiDQojbGluZSAxMyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcdHlwZWluZm8iDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3
IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1
MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZSA6IDQyNzUpIA0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV90eXBlaW5mby5oIg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWVfZXhjZXB0aW9uLmgiDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGVoLmgiDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF90ZXJtaW5hdGUuaCINCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4MjAgNDk5
NSA0OTk2IDI4NzE5IDI4NzI2IDI4NzI3ICkNCg0KDQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4
KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQp0eXBlZGVmIHZvaWQgKF9fY2RlY2wqIHRlcm1pbmF0ZV9o
YW5kbGVyICkodm9pZCk7DQp0eXBlZGVmIHZvaWQgKF9fY2RlY2wqIHRlcm1pbmF0ZV9mdW5jdGlv
bikodm9pZCk7DQoNCg0KDQoNCg0KDQoNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2Rl
Y2xzcGVjKG5vcmV0dXJuKSB2b2lkIF9fY2RlY2wgYWJvcnQoKTsNCiAgICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgdm9pZCBfX2NkZWNsIHRlcm1pbmF0ZSgpIHRo
cm93KCk7DQoNCiAgICANCg0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdGVybWluYXRl
X2hhbmRsZXIgX19jZGVjbCBzZXRfdGVybWluYXRlKA0KICAgICAgICAgICAgICB0ZXJtaW5hdGVf
aGFuZGxlciBfTmV3VGVybWluYXRlSGFuZGxlcg0KICAgICAgICAgICAgKSB0aHJvdygpOw0KDQog
ICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB0ZXJtaW5hdGVfaGFuZGxlciBfX2NkZWNsIF9n
ZXRfdGVybWluYXRlKCk7DQoNCiAgICAjbGluZSA0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF90
ZXJtaW5hdGUuaCINCg0KI2xpbmUgNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfdGVybWluYXRl
LmgiDQoNCn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQojbGluZSA1MCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y29yZWNydF90ZXJtaW5hdGUuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxlaC5oIg0K
DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogICA0
NTE0IDQ4MjAgKQ0KDQpfX3ByYWdtYShwYWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoN
CnR5cGVkZWYgdm9pZCAoX19jZGVjbCogdW5leHBlY3RlZF9oYW5kbGVyICkodm9pZCk7DQp0eXBl
ZGVmIHZvaWQgKF9fY2RlY2wqIHVuZXhwZWN0ZWRfZnVuY3Rpb24pKHZvaWQpOw0KDQoNCg0KDQoN
Cg0Kc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlM7DQoNCg0KDQogICAgIF9fZGVjbHNwZWMobm9y
ZXR1cm4pIHZvaWQgX19jZGVjbCB1bmV4cGVjdGVkKCkgbm9leGNlcHQoZmFsc2UpOw0KDQogICAg
DQoNCiAgICAgICAgIHVuZXhwZWN0ZWRfaGFuZGxlciBfX2NkZWNsIHNldF91bmV4cGVjdGVkKA0K
ICAgICAgICAgICAgICB1bmV4cGVjdGVkX2hhbmRsZXIgX05ld1VuZXhwZWN0ZWRIYW5kbGVyDQog
ICAgICAgICAgICApIG5vZXhjZXB0Ow0KDQogICAgICAgICB1bmV4cGVjdGVkX2hhbmRsZXIgX19j
ZGVjbCBfZ2V0X3VuZXhwZWN0ZWQoKSBub2V4Y2VwdDsNCg0KICAgICAgICB0eXBlZGVmIHZvaWQg
KF9fY2RlY2wqIF9zZV90cmFuc2xhdG9yX2Z1bmN0aW9uKSh1bnNpZ25lZCBpbnQsIHN0cnVjdCBf
RVhDRVBUSU9OX1BPSU5URVJTKik7DQoNCiAgICAgICAgIF9zZV90cmFuc2xhdG9yX2Z1bmN0aW9u
IF9fY2RlY2wgX3NldF9zZV90cmFuc2xhdG9yKA0KICAgICAgICAgICAgICBfc2VfdHJhbnNsYXRv
cl9mdW5jdGlvbiBfTmV3U0VUcmFuc2xhdG9yDQogICAgICAgICAgICApOw0KDQogICAgI2xpbmUg
NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZWgu
aCINCg0KICAgIGNsYXNzIHR5cGVfaW5mbzsNCg0KICAgICBpbnQgX19jZGVjbCBfaXNfZXhjZXB0
aW9uX3R5cGVvZigNCiAgICAgICAgICB0eXBlX2luZm8gY29uc3QmICAgICBfVHlwZSwNCiAgICAg
ICAgICBfRVhDRVBUSU9OX1BPSU5URVJTKiBfRXhjZXB0aW9uUHRyDQogICAgICAgICk7DQoNCiAg
ICAgYm9vbCBfX2NkZWNsIF9fdW5jYXVnaHRfZXhjZXB0aW9uKCk7DQogICAgIGludCAgX19jZGVj
bCBfX3VuY2F1Z2h0X2V4Y2VwdGlvbnMoKTsNCg0KI2xpbmUgNjQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZWguaCINCg0KfSBfX3ByYWdtYShwYWNr
KHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KDQojbGluZSA3MCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxlaC5oIg0KI2xpbmUgMTEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNydW50aW1l
X2V4Y2VwdGlvbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV9leGNlcHRpb24uaCINCiNsaW5lIDE0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV90eXBl
aW5mby5oIg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OiAgIDQ1MTQgNDgyMCApDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0KDQoNCg0KDQoNCiNsaW5l
IDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZj
cnVudGltZV90eXBlaW5mby5oIg0KICAgIHN0cnVjdCBfX3R5cGVfaW5mb19ub2RlOw0KI2xpbmUg
MjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmNy
dW50aW1lX3R5cGVpbmZvLmgiDQoNCg0KDQoNCiAgICBleHRlcm4gX190eXBlX2luZm9fbm9kZSBf
X3R5cGVfaW5mb19yb290X25vZGU7DQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWVfdHlwZWluZm8uaCINCg0KDQoNCl9f
cHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQpzdHJ1Y3QgX19zdGRfdHlwZV9p
bmZvX2RhdGENCnsNCiAgICBjb25zdCBjaGFyICogX1VuZGVjb3JhdGVkTmFtZTsNCiAgICBjb25z
dCBjaGFyICAgX0RlY29yYXRlZE5hbWVbMV07DQogICAgX19zdGRfdHlwZV9pbmZvX2RhdGEoKSA9
IGRlbGV0ZTsNCiAgICBfX3N0ZF90eXBlX2luZm9fZGF0YShjb25zdCBfX3N0ZF90eXBlX2luZm9f
ZGF0YSYpID0gZGVsZXRlOw0KICAgIF9fc3RkX3R5cGVfaW5mb19kYXRhKF9fc3RkX3R5cGVfaW5m
b19kYXRhJiYpID0gZGVsZXRlOw0KDQogICAgX19zdGRfdHlwZV9pbmZvX2RhdGEmIG9wZXJhdG9y
PShjb25zdCBfX3N0ZF90eXBlX2luZm9fZGF0YSYpID0gZGVsZXRlOw0KICAgIF9fc3RkX3R5cGVf
aW5mb19kYXRhJiBvcGVyYXRvcj0oX19zdGRfdHlwZV9pbmZvX2RhdGEmJikgPSBkZWxldGU7DQp9
Ow0KDQogaW50IF9fY2RlY2wgX19zdGRfdHlwZV9pbmZvX2NvbXBhcmUoDQogICAgICBjb25zdCBf
X3N0ZF90eXBlX2luZm9fZGF0YSogX0xocywNCiAgICAgIGNvbnN0IF9fc3RkX3R5cGVfaW5mb19k
YXRhKiBfUmhzDQogICAgKTsNCg0KIHNpemVfdCBfX2NkZWNsIF9fc3RkX3R5cGVfaW5mb19oYXNo
KA0KICAgICAgY29uc3QgX19zdGRfdHlwZV9pbmZvX2RhdGEqIF9EYXRhDQogICAgKTsNCg0KIGNv
bnN0IGNoYXIqIF9fY2RlY2wgX19zdGRfdHlwZV9pbmZvX25hbWUoDQogICAgICBfX3N0ZF90eXBl
X2luZm9fZGF0YSogX0RhdGEsDQogICAgICBfX3R5cGVfaW5mb19ub2RlKiAgICAgX1Jvb3ROb2Rl
DQogICAgKTsNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1
c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDU3NykgDQpjbGFzcyB0eXBlX2luZm8NCnsN
CnB1YmxpYzoNCg0KICAgIHR5cGVfaW5mbyhjb25zdCB0eXBlX2luZm8mKSA9IGRlbGV0ZTsNCiAg
ICB0eXBlX2luZm8mIG9wZXJhdG9yPShjb25zdCB0eXBlX2luZm8mKSA9IGRlbGV0ZTsNCg0KICAg
IHNpemVfdCBoYXNoX2NvZGUoKSBjb25zdCBub2V4Y2VwdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IF9fc3RkX3R5cGVfaW5mb19oYXNoKCZfRGF0YSk7DQogICAgfQ0KDQogICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IHR5cGVfaW5mbyYgX090aGVyKSBjb25zdCBub2V4Y2VwdA0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIF9fc3RkX3R5cGVfaW5mb19jb21wYXJlKCZfRGF0YSwgJl9PdGhlci5fRGF0YSkg
PT0gMDsNCiAgICB9DQoNCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgdHlwZV9pbmZvJiBfT3Ro
ZXIpIGNvbnN0IG5vZXhjZXB0DQogICAgew0KICAgICAgICByZXR1cm4gX19zdGRfdHlwZV9pbmZv
X2NvbXBhcmUoJl9EYXRhLCAmX090aGVyLl9EYXRhKSAhPSAwOw0KICAgIH0NCg0KICAgIGJvb2wg
YmVmb3JlKGNvbnN0IHR5cGVfaW5mbyYgX090aGVyKSBjb25zdCBub2V4Y2VwdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIF9fc3RkX3R5cGVfaW5mb19jb21wYXJlKCZfRGF0YSwgJl9PdGhlci5fRGF0
YSkgPCAwOw0KICAgIH0NCg0KICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCBub2V4Y2VwdA0K
ICAgIHsNCiAgICAgICAgDQoNCg0KICAgICAgICByZXR1cm4gX19zdGRfdHlwZV9pbmZvX25hbWUo
Jl9EYXRhLCAmX190eXBlX2luZm9fcm9vdF9ub2RlKTsNCiAgICAgICAgI2xpbmUgMTAzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZjcnVudGltZV90
eXBlaW5mby5oIg0KICAgIH0NCg0KICAgIGNvbnN0IGNoYXIqIHJhd19uYW1lKCkgY29uc3Qgbm9l
eGNlcHQNCiAgICB7DQogICAgICAgIHJldHVybiBfRGF0YS5fRGVjb3JhdGVkTmFtZTsNCiAgICB9
DQoNCiAgICB2aXJ0dWFsIH50eXBlX2luZm8oKSBub2V4Y2VwdDsNCg0KcHJpdmF0ZToNCg0KICAg
IG11dGFibGUgX19zdGRfdHlwZV9pbmZvX2RhdGEgX0RhdGE7DQp9Ow0KI3ByYWdtYSB3YXJuaW5n
KHBvcCkNCg0KbmFtZXNwYWNlIHN0ZCB7DQogICAgdXNpbmcgOjp0eXBlX2luZm87DQp9DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWVfdHlwZWluZm8u
aCINCiNwcmFnbWEgcGFjayhwb3ApDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDIwMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRp
bWVfdHlwZWluZm8uaCINCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHR5cGVpbmZvIg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KDQpjb25z
dGV4cHIgaW50IF9TbWFsbF9vYmplY3RfbnVtX3B0cnMgPSA2ICsgMTYgLyBzaXplb2Yodm9pZCop
Ow0KDQoNCg0KDQpjbGFzcyBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYmFkX2Nhc3QgOiBwdWJsaWMg
ZXhjZXB0aW9uIHsgDQpwdWJsaWM6DQogICAgYmFkX2Nhc3QoY29uc3QgY2hhciogX01lc3NhZ2Ug
PSAiYmFkIGNhc3QiKSBub2V4Y2VwdCA6IGV4Y2VwdGlvbihfTWVzc2FnZSkge30NCg0KICAgIHZp
cnR1YWwgfmJhZF9jYXN0KCkgbm9leGNlcHQge30NCg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwg
dm9pZCBfRG9yYWlzZSgpIGNvbnN0IG92ZXJyaWRlIHsgDQogICAgICAgIF9pbnZva2Vfd2F0c29u
KG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDApOw0KICAgIH0NCn07DQoNCg0KY2xhc3Mg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGJhZF90eXBlaWQgOiBwdWJsaWMgZXhjZXB0aW9uIHsgDQpw
dWJsaWM6DQogICAgYmFkX3R5cGVpZChjb25zdCBjaGFyKiBfTWVzc2FnZSA9ICJiYWQgdHlwZWlk
Iikgbm9leGNlcHQgOiBleGNlcHRpb24oX01lc3NhZ2UpIHt9DQoNCiAgICB2aXJ0dWFsIH5iYWRf
dHlwZWlkKCkgbm9leGNlcHQge30NCg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9y
YWlzZSgpIGNvbnN0IG92ZXJyaWRlIHsgDQogICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIDAsIDApOw0KICAgIH0NCn07DQoNCmNsYXNzIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBfX25vbl9ydHRpX29iamVjdCA6IHB1YmxpYyBiYWRfdHlwZWlkIHsgDQpwdWJs
aWM6DQogICAgX19ub25fcnR0aV9vYmplY3QoY29uc3QgY2hhciogX01lc3NhZ2UpIDogYmFkX3R5
cGVpZChfTWVzc2FnZSkge30NCn07DQojbGluZSA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0eXBlaW5mbyINCg0KW1tub3JldHVybl1dIGlubGlu
ZSB2b2lkIF9UaHJvd19iYWRfY2FzdCgpIHsNCiAgICBiYWRfY2FzdHt9Ll9SYWlzZSgpOw0KfQ0K
DQp9DQoNCg0KDQojcHJhZ21hIHBhY2socG9wKQ0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5l
IDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR5
cGVpbmZvIg0KI2xpbmUgNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcdHlwZWluZm8iDQojbGluZSAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY3N0ZGludCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHN0ZGludC5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6ICAg
NDUxNCA0ODIwICkNCg0KdHlwZWRlZiBzaWduZWQgY2hhciAgICAgICAgaW50OF90Ow0KdHlwZWRl
ZiBzaG9ydCAgICAgICAgICAgICAgaW50MTZfdDsNCnR5cGVkZWYgaW50ICAgICAgICAgICAgICAg
IGludDMyX3Q7DQp0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICBpbnQ2NF90Ow0KdHlwZWRlZiB1
bnNpZ25lZCBjaGFyICAgICAgdWludDhfdDsNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgIHVp
bnQxNl90Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgdWludDMyX3Q7DQp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyB1aW50NjRfdDsNCg0KdHlwZWRlZiBzaWduZWQgY2hhciAgICAgICAg
aW50X2xlYXN0OF90Ow0KdHlwZWRlZiBzaG9ydCAgICAgICAgICAgICAgaW50X2xlYXN0MTZfdDsN
CnR5cGVkZWYgaW50ICAgICAgICAgICAgICAgIGludF9sZWFzdDMyX3Q7DQp0eXBlZGVmIGxvbmcg
bG9uZyAgICAgICAgICBpbnRfbGVhc3Q2NF90Ow0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgICAg
dWludF9sZWFzdDhfdDsNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgIHVpbnRfbGVhc3QxNl90
Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgdWludF9sZWFzdDMyX3Q7DQp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyB1aW50X2xlYXN0NjRfdDsNCg0KdHlwZWRlZiBzaWduZWQgY2hhciAg
ICAgICAgaW50X2Zhc3Q4X3Q7DQp0eXBlZGVmIGludCAgICAgICAgICAgICAgICBpbnRfZmFzdDE2
X3Q7DQp0eXBlZGVmIGludCAgICAgICAgICAgICAgICBpbnRfZmFzdDMyX3Q7DQp0eXBlZGVmIGxv
bmcgbG9uZyAgICAgICAgICBpbnRfZmFzdDY0X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAg
ICB1aW50X2Zhc3Q4X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICB1aW50X2Zhc3QxNl90
Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgdWludF9mYXN0MzJfdDsNCnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIHVpbnRfZmFzdDY0X3Q7DQoNCnR5cGVkZWYgbG9uZyBsb25nICAgICAg
ICAgIGludG1heF90Ow0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludG1heF90Ow0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIA0KICAgIA0KDQoNCg0KDQojbGluZSA5
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzdGRp
bnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KDQojbGlu
ZSAxMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
c3RkaW50LmgiDQojbGluZSAxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxjc3RkaW50Ig0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkNCiNwcmFnbWEg
d2FybmluZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTgwIDQ0MTIgNDQ1
NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4NyA0NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2MjYg
NDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODggNTAyNiA1MDI3IDUwNDUgNjI5NCA0NTc3ICA1
MDUzICkNCg0KDQoNCg0KbmFtZXNwYWNlIHN0ZCB7DQp1c2luZyA6OiBpbnQ4X3Q7DQp1c2luZyA6
OiBpbnQxNl90Ow0KdXNpbmcgOjogaW50MzJfdDsNCnVzaW5nIDo6IGludDY0X3Q7DQp1c2luZyA6
OiB1aW50OF90Ow0KdXNpbmcgOjogdWludDE2X3Q7DQp1c2luZyA6OiB1aW50MzJfdDsNCnVzaW5n
IDo6IHVpbnQ2NF90Ow0KDQp1c2luZyA6OiBpbnRfbGVhc3Q4X3Q7DQp1c2luZyA6OiBpbnRfbGVh
c3QxNl90Ow0KdXNpbmcgOjogaW50X2xlYXN0MzJfdDsNCnVzaW5nIDo6IGludF9sZWFzdDY0X3Q7
DQp1c2luZyA6OiB1aW50X2xlYXN0OF90Ow0KdXNpbmcgOjogdWludF9sZWFzdDE2X3Q7DQp1c2lu
ZyA6OiB1aW50X2xlYXN0MzJfdDsNCnVzaW5nIDo6IHVpbnRfbGVhc3Q2NF90Ow0KDQp1c2luZyA6
OiBpbnRfZmFzdDhfdDsNCnVzaW5nIDo6IGludF9mYXN0MTZfdDsNCnVzaW5nIDo6IGludF9mYXN0
MzJfdDsNCnVzaW5nIDo6IGludF9mYXN0NjRfdDsNCnVzaW5nIDo6IHVpbnRfZmFzdDhfdDsNCnVz
aW5nIDo6IHVpbnRfZmFzdDE2X3Q7DQp1c2luZyA6OiB1aW50X2Zhc3QzMl90Ow0KdXNpbmcgOjog
dWludF9mYXN0NjRfdDsNCg0KdXNpbmcgOjogaW50bWF4X3Q7DQp1c2luZyA6OiBpbnRwdHJfdDsN
CnVzaW5nIDo6IHVpbnRtYXhfdDsNCnVzaW5nIDo6IHVpbnRwdHJfdDsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxjc3RkaW50Ig0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhw
b3ApDQoNCiNsaW5lIDk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXGNzdGRpbnQiDQojbGluZSA5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjc3RkaW50Ig0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCg0KI2xpbmUgMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaW1pdHMi
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY2Zsb2F0Ig0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxmbG9hdC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNo
KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgy
MCA0OTk1IDQ5OTYgMjg3MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCl9fcHJhZ21hKHBhY2socHVzaCwg
OCkpIGV4dGVybiAiQyIgew0KDQoNCg0KDQogICAgDQoNCg0KICAgICAgICANCg0KDQogICAgICAg
ICAgICANCiAgICAgICAgI2xpbmUgMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGZsb2F0LmgiDQogICAgI2xp
bmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXGZsb2F0LmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
ZmxvYXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoN
Cg0KDQoNCg0KICAgICAgICANCiAgICAjbGluZSA2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcZmxvYXQuaCIN
CiNsaW5lIDYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxmbG9hdC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDIxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcZmxvYXQuaCINCg0KICAgIA0KDQojbGluZSAyMjAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXGZsb2F0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIHVuc2lnbmVkIGludCBfX2NkZWNsIF9jbGVhcmZwKHZvaWQpOw0KDQojcHJhZ21h
IHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTQxKSANCg0KIA0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIHVuc2lnbmVkIGludCBfX2NkZWNsIF9jb250cm9sZnAoDQogICAg
ICB1bnNpZ25lZCBpbnQgX05ld1ZhbHVlLA0KICAgICAgdW5zaWduZWQgaW50IF9NYXNrDQogICAg
KTsNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9p
ZCBfX2NkZWNsIF9zZXRfY29udHJvbGZwKA0KICAgICAgdW5zaWduZWQgaW50IF9OZXdWYWx1ZSwN
CiAgICAgIHVuc2lnbmVkIGludCBfTWFzaw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGVycm5vX3QgX19jZGVjbCBfY29udHJvbGZwX3MoDQogICAgICB1bnNpZ25lZCBpbnQqIF9D
dXJyZW50U3RhdGUsDQogICAgICAgICAgIHVuc2lnbmVkIGludCAgX05ld1ZhbHVlLA0KICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgIF9NYXNrDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgdW5zaWduZWQgaW50IF9fY2RlY2wgX3N0YXR1c2ZwKHZvaWQpOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB2b2lkIF9fY2RlY2wgX2ZwcmVzZXQodm9pZCk7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgaW50IF9fY2RlY2wg
X2NvbnRyb2w4NygNCiAgICAgIHVuc2lnbmVkIGludCBfTmV3VmFsdWUsDQogICAgICB1bnNpZ25l
ZCBpbnQgX01hc2sNCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludCogX19jZGVjbCBfX2ZwZWNvZGUodm9pZCk7DQoNCg0KDQogDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX19mcGVfZmx0X3JvdW5kcyh2b2lkKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBfX2Nk
ZWNsIF9jb3B5c2lnbiggIGRvdWJsZSBfTnVtYmVyLCAgIGRvdWJsZSBfU2lnbik7DQogIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBfY2hnc2lnbiggIGRvdWJsZSBfWCk7DQog
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBfc2NhbGIoICBkb3VibGUgX1gs
ICAgbG9uZyBfWSk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBfbG9n
YiggIGRvdWJsZSBfWCk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgX19jZGVjbCBf
bmV4dGFmdGVyKCAgZG91YmxlIF9YLCAgIGRvdWJsZSBfWSk7DQogIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBpbnQgICAgX19jZGVjbCBfZmluaXRlKCAgZG91YmxlIF9YKTsNCiAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCAgICBfX2NkZWNsIF9pc25hbiggIGRvdWJsZSBfWCk7DQogIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgICAgX19jZGVjbCBfZnBjbGFzcyggIGRvdWJsZSBfWCk7DQoNCg0K
ICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0IF9fY2RlY2wgX3NjYWxiZiggIGZsb2F0
IF9YLCAgIGxvbmcgX1kpOw0KI2xpbmUgMzI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxmbG9hdC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIGZwcmVzZXQodm9pZCk7DQoNCiAgICANCiAgICANCg0K
ICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQog
ICAgDQoNCiAgICANCg0KI2xpbmUgNDAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxmbG9hdC5oIg0KDQoNCg0K
fSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgNDEw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxmbG9hdC5oIg0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY2Zsb2F0Ig0KI2xpbmUgMTMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY2Zsb2F0Ig0KI2xpbmUg
MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlt
aXRzIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxjbGltaXRzIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxjbGltaXRzIg0KI2xpbmUgMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcY2xpbWl0cyINCiNsaW5lIDEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpbWl0cyINCg0KI2xpbmUgMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4wLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5p
bmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiAgIDQ1MTQgNDgyMCApDQoNCg0KZXh0
ZXJuICJDIiB7DQojbGluZSAyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxpbnRyaW4wLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluMC5oIg0KDQoNCiNsaW5l
IDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGlu
dHJpbjAuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGludHJpbjAuaCINCg0KDQoNCg0KI2xpbmUgNzMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluMC5o
Ig0KDQoNCg0KDQojbGluZSA3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxpbnRyaW4wLmgiDQoNCg0KDQoNCiNsaW5lIDgzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGludHJpbjAuaCINCg0KDQoNCg0K
DQoNCiNsaW5lIDkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGludHJpbjAuaCINCg0KDQoNCg0KI2xpbmUgOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluMC5oIg0KDQoNCg0KDQojbGluZSAx
MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50
cmluMC5oIg0KDQoNCg0KDQojbGluZSAxMDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluMC5oIg0KDQoNCg0KDQojbGluZSAxMTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluMC5oIg0K
DQoNCg0KDQojbGluZSAxMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcaW50cmluMC5oIg0KDQoNCg0KDQojbGluZSAxMjAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluMC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdW5zaWduZWQgY2hhciBfQml0U2NhbkZvcndhcmQodW5zaWduZWQgbG9uZyAqIF9J
bmRleCwgdW5zaWduZWQgbG9uZyBfTWFzayk7DQp1bnNpZ25lZCBjaGFyIF9CaXRTY2FuRm9yd2Fy
ZDY0KHVuc2lnbmVkIGxvbmcgKiBfSW5kZXgsIHVuc2lnbmVkIF9faW50NjQgX01hc2spOw0KDQp1
bnNpZ25lZCBjaGFyIF9CaXRTY2FuUmV2ZXJzZSh1bnNpZ25lZCBsb25nICogX0luZGV4LCB1bnNp
Z25lZCBsb25nIF9NYXNrKTsNCnVuc2lnbmVkIGNoYXIgX0JpdFNjYW5SZXZlcnNlNjQodW5zaWdu
ZWQgbG9uZyAqIF9JbmRleCwgdW5zaWduZWQgX19pbnQ2NCBfTWFzayk7DQoNCnVuc2lnbmVkIGNo
YXIgX2JpdHRlc3QobG9uZyBjb25zdCAqLCBsb25nKTsNCg0KDQpsb25nIF9JbnRlcmxvY2tlZEFu
ZChsb25nIHZvbGF0aWxlICogX1ZhbHVlLCBsb25nIF9NYXNrKTsNCnNob3J0IF9JbnRlcmxvY2tl
ZEFuZDE2KHNob3J0IHZvbGF0aWxlICogX1ZhbHVlLCBzaG9ydCBfTWFzayk7DQoNCg0KDQpfX2lu
dDY0IF9JbnRlcmxvY2tlZEFuZDY0KF9faW50NjQgdm9sYXRpbGUgKiBfVmFsdWUsIF9faW50NjQg
X01hc2spOw0KDQoNCg0KY2hhciBfSW50ZXJsb2NrZWRBbmQ4KGNoYXIgdm9sYXRpbGUgKiBfVmFs
dWUsIGNoYXIgX01hc2spOw0KDQoNCg0KDQoNCg0KbG9uZyAgX0ludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlKGxvbmcgdm9sYXRpbGUgKiBfRGVzdGluYXRpb24sIGxvbmcgX0V4Y2hhbmdlLCBsb25n
IF9Db21wYXJhbmQpOw0KDQpzaG9ydCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxNihzaG9y
dCB2b2xhdGlsZSAqIF9EZXN0aW5hdGlvbiwgc2hvcnQgX0V4Y2hhbmdlLCBzaG9ydCBfQ29tcGFy
YW5kKTsNCg0KDQoNCl9faW50NjQgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlNjQoX19pbnQ2
NCB2b2xhdGlsZSAqIF9EZXN0aW5hdGlvbiwgX19pbnQ2NCBfRXhjaGFuZ2UsIF9faW50NjQgX0Nv
bXBhcmFuZCk7DQoNCg0KDQpjaGFyIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTgoY2hhciB2
b2xhdGlsZSAqIF9EZXN0aW5hdGlvbiwgY2hhciBfRXhjaGFuZ2UsIGNoYXIgX0NvbXBhcmFuZCk7
DQoNCg0KDQoNCg0KDQpsb25nICBfSW50ZXJsb2NrZWREZWNyZW1lbnQobG9uZyB2b2xhdGlsZSAq
IF9BZGRlbmQpOw0KDQpzaG9ydCBfSW50ZXJsb2NrZWREZWNyZW1lbnQxNihzaG9ydCB2b2xhdGls
ZSAqIF9BZGRlbmQpOw0KX19pbnQ2NCBfSW50ZXJsb2NrZWREZWNyZW1lbnQ2NChfX2ludDY0IHZv
bGF0aWxlICogX0FkZGVuZCk7DQpsb25nICBfSW50ZXJsb2NrZWRFeGNoYW5nZShsb25nIHZvbGF0
aWxlICogX1RhcmdldCwgbG9uZyBfVmFsdWUpOw0KDQpzaG9ydCBfSW50ZXJsb2NrZWRFeGNoYW5n
ZTE2KHNob3J0IHZvbGF0aWxlICogX1RhcmdldCwgc2hvcnQgX1ZhbHVlKTsNCg0KDQoNCl9faW50
NjQgX0ludGVybG9ja2VkRXhjaGFuZ2U2NChfX2ludDY0IHZvbGF0aWxlICogX1RhcmdldCwgX19p
bnQ2NCBfVmFsdWUpOw0KDQoNCg0KY2hhciBfSW50ZXJsb2NrZWRFeGNoYW5nZTgoY2hhciB2b2xh
dGlsZSAqIF9UYXJnZXQsIGNoYXIgX1ZhbHVlKTsNCg0KDQoNCmxvbmcgIF9JbnRlcmxvY2tlZEV4
Y2hhbmdlQWRkKGxvbmcgdm9sYXRpbGUgKiBfQWRkZW5kLCBsb25nIF9WYWx1ZSk7DQpzaG9ydCBf
SW50ZXJsb2NrZWRFeGNoYW5nZUFkZDE2KHNob3J0IHZvbGF0aWxlICogX0FkZGVuZCwgc2hvcnQg
X1ZhbHVlKTsNCg0KDQoNCl9faW50NjQgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ2NChfX2ludDY0
IHZvbGF0aWxlICogX0FkZGVuZCwgX19pbnQ2NCBfVmFsdWUpOw0KDQoNCg0KY2hhciBfSW50ZXJs
b2NrZWRFeGNoYW5nZUFkZDgoY2hhciB2b2xhdGlsZSAqIF9BZGRlbmQsIGNoYXIgX1ZhbHVlKTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCmxvbmcgIF9JbnRlcmxvY2tlZEluY3JlbWVudChsb25nIHZvbGF0
aWxlICogX0FkZGVuZCk7DQoNCnNob3J0IF9JbnRlcmxvY2tlZEluY3JlbWVudDE2KHNob3J0IHZv
bGF0aWxlICogX0FkZGVuZCk7DQpfX2ludDY0IF9JbnRlcmxvY2tlZEluY3JlbWVudDY0KF9faW50
NjQgdm9sYXRpbGUgKiBfQWRkZW5kKTsNCg0KbG9uZyBfSW50ZXJsb2NrZWRPcihsb25nIHZvbGF0
aWxlICogX1ZhbHVlLCBsb25nIF9NYXNrKTsNCnNob3J0IF9JbnRlcmxvY2tlZE9yMTYoc2hvcnQg
dm9sYXRpbGUgKiBfVmFsdWUsIHNob3J0IF9NYXNrKTsNCg0KDQoNCl9faW50NjQgX0ludGVybG9j
a2VkT3I2NChfX2ludDY0IHZvbGF0aWxlICogX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsNCg0KDQoN
CmNoYXIgX0ludGVybG9ja2VkT3I4KGNoYXIgdm9sYXRpbGUgKiBfVmFsdWUsIGNoYXIgX01hc2sp
Ow0KDQoNCg0KDQoNCg0KbG9uZyBfSW50ZXJsb2NrZWRYb3IobG9uZyB2b2xhdGlsZSAqIF9WYWx1
ZSwgbG9uZyBfTWFzayk7DQpzaG9ydCBfSW50ZXJsb2NrZWRYb3IxNihzaG9ydCB2b2xhdGlsZSAq
IF9WYWx1ZSwgc2hvcnQgX01hc2spOw0KDQoNCg0KX19pbnQ2NCBfSW50ZXJsb2NrZWRYb3I2NChf
X2ludDY0IHZvbGF0aWxlICogX1ZhbHVlLCBfX2ludDY0IF9NYXNrKTsNCg0KDQoNCmNoYXIgX0lu
dGVybG9ja2VkWG9yOChjaGFyIHZvbGF0aWxlICogX1ZhbHVlLCBjaGFyIF9NYXNrKTsNCg0KDQoN
Cg0KDQoNCnZvaWQgX1JlYWRXcml0ZUJhcnJpZXIodm9pZCk7DQpfX2ludDE2IF9faXNvX3ZvbGF0
aWxlX2xvYWQxNihjb25zdCB2b2xhdGlsZSBfX2ludDE2ICopOw0KX19pbnQzMiBfX2lzb192b2xh
dGlsZV9sb2FkMzIoY29uc3Qgdm9sYXRpbGUgX19pbnQzMiAqKTsNCl9faW50NjQgX19pc29fdm9s
YXRpbGVfbG9hZDY0KGNvbnN0IHZvbGF0aWxlIF9faW50NjQgKik7DQpfX2ludDggX19pc29fdm9s
YXRpbGVfbG9hZDgoY29uc3Qgdm9sYXRpbGUgX19pbnQ4ICopOw0Kdm9pZCBfX2lzb192b2xhdGls
ZV9zdG9yZTE2KHZvbGF0aWxlIF9faW50MTYgKiwgX19pbnQxNik7DQp2b2lkIF9faXNvX3ZvbGF0
aWxlX3N0b3JlMzIodm9sYXRpbGUgX19pbnQzMiAqLCBfX2ludDMyKTsNCnZvaWQgX19pc29fdm9s
YXRpbGVfc3RvcmU2NCh2b2xhdGlsZSBfX2ludDY0ICosIF9faW50NjQpOw0Kdm9pZCBfX2lzb192
b2xhdGlsZV9zdG9yZTgodm9sYXRpbGUgX19pbnQ4ICosIF9faW50OCk7DQoNCg0KdW5zaWduZWQg
Y2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kc2V0KGxvbmcgdm9sYXRpbGUgKiwgbG9uZyk7DQoN
Cg0KDQp1bnNpZ25lZCBpbnQgX19semNudCh1bnNpZ25lZCBpbnQpOw0KdW5zaWduZWQgc2hvcnQg
X19semNudDE2KHVuc2lnbmVkIHNob3J0KTsNCnVuc2lnbmVkIF9faW50NjQgX19semNudDY0KHVu
c2lnbmVkIF9faW50NjQpOw0KdW5zaWduZWQgaW50IF9fcG9wY250KHVuc2lnbmVkIGludCk7DQp1
bnNpZ25lZCBzaG9ydCBfX3BvcGNudDE2KHVuc2lnbmVkIHNob3J0KTsNCnVuc2lnbmVkIF9faW50
NjQgX19wb3BjbnQ2NCh1bnNpZ25lZCBfX2ludDY0KTsNCnVuc2lnbmVkIF9faW50NjQgX19zaGlm
dHJpZ2h0MTI4KHVuc2lnbmVkIF9faW50NjQgX0xvd1BhcnQsIHVuc2lnbmVkIF9faW50NjQgX0hp
Z2hQYXJ0LCB1bnNpZ25lZCBjaGFyIF9TaGlmdCk7DQp1bnNpZ25lZCBpbnQgX3R6Y250X3UzMih1
bnNpZ25lZCBpbnQpOw0KdW5zaWduZWQgX19pbnQ2NCBfdHpjbnRfdTY0KHVuc2lnbmVkIF9faW50
NjQpOw0KdW5zaWduZWQgX19pbnQ2NCBfdW11bDEyOCh1bnNpZ25lZCBfX2ludDY0IF9NdWx0aXBs
aWVyLCB1bnNpZ25lZCBfX2ludDY0IF9NdWx0aXBsaWNhbmQsIHVuc2lnbmVkIF9faW50NjQgKiBf
SGlnaFByb2R1Y3QpOw0KDQoNCmNvbnN0ZXhwciB2b2lkICogX19jZGVjbCBfX2J1aWx0aW5fYXNz
dW1lX2FsaWduZWQoY29uc3Qgdm9pZCAqLCBzaXplX3QsIC4uLikgbm9leGNlcHQ7DQoNCg0KI2xp
bmUgMjc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGludHJpbjAuaCINCiNsaW5lIDI3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4wLmgiDQoNCg0KDQoNCg0KDQoNCg0KfQ0KI2xpbmUgMjg3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGludHJp
bjAuaCINCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgMjg5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGludHJpbjAuaCINCiNsaW5lIDE1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpbWl0cyIN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcaXNhX2F2YWlsYWJpbGl0eS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmVudW0g
SVNBX0FWQUlMQUJJTElUWQ0Kew0KICAgIF9fSVNBX0FWQUlMQUJMRV9YODYgICA9IDAsDQogICAg
X19JU0FfQVZBSUxBQkxFX1NTRTIgID0gMSwNCiAgICBfX0lTQV9BVkFJTEFCTEVfU1NFNDIgPSAy
LA0KICAgIF9fSVNBX0FWQUlMQUJMRV9BVlggICA9IDMsDQogICAgX19JU0FfQVZBSUxBQkxFX0VO
RlNUUkcgPSA0LA0KICAgIF9fSVNBX0FWQUlMQUJMRV9BVlgyID0gNSwNCiAgICBfX0lTQV9BVkFJ
TEFCTEVfQVZYNTEyID0gNiwNCg0KICAgIF9fSVNBX0FWQUlMQUJMRV9BUk1OVCAgID0gMCwgICAN
CiAgICBfX0lTQV9BVkFJTEFCTEVfTkVPTiAgICA9IDEsICAgDQogICAgX19JU0FfQVZBSUxBQkxF
X05FT05fQVJNNjQgPSAyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCn07
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcaXNhX2F2YWlsYWJpbGl0eS5oIg0KDQoNCg0KDQoNCg0KI2xp
bmUgNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
aXNhX2F2YWlsYWJpbGl0eS5oIg0KDQojbGluZSA0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpc2FfYXZhaWxhYmlsaXR5LmgiDQojbGluZSAxNiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaW1pdHMi
DQoNCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNw
cmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4
MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMg
NDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVz
cGFjZSBzdGQgew0KDQplbnVtIGZsb2F0X2Rlbm9ybV9zdHlsZSB7IA0KICAgIGRlbm9ybV9pbmRl
dGVybWluYXRlID0gLTEsDQogICAgZGVub3JtX2Fic2VudCAgICAgICAgPSAwLA0KICAgIGRlbm9y
bV9wcmVzZW50ICAgICAgID0gMQ0KfTsNCg0KDQplbnVtIGZsb2F0X3JvdW5kX3N0eWxlIHsgDQog
ICAgcm91bmRfaW5kZXRlcm1pbmF0ZSAgICAgICA9IC0xLA0KICAgIHJvdW5kX3Rvd2FyZF96ZXJv
ICAgICAgICAgPSAwLA0KICAgIHJvdW5kX3RvX25lYXJlc3QgICAgICAgICAgPSAxLA0KICAgIHJv
dW5kX3Rvd2FyZF9pbmZpbml0eSAgICAgPSAyLA0KICAgIHJvdW5kX3Rvd2FyZF9uZWdfaW5maW5p
dHkgPSAzDQp9Ow0KDQoNCnN0cnVjdCBfTnVtX2Jhc2UgeyANCiAgICBzdGF0aWMgY29uc3RleHBy
IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3JtX2Fic2VudDsNCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaGFzX2Rlbm9ybV9sb3NzICAgICAgICAgID0gZmFsc2U7DQogICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19pbmZpbml0eSAgICAgICAgICAgICA9IGZhbHNlOw0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfcXVpZXRfTmFOICAgICAgICAgICAgPSBmYWxz
ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3NpZ25hbGluZ19OYU4gICAgICAgID0g
ZmFsc2U7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2JvdW5kZWQgICAgICAgICAgICAg
ICA9IGZhbHNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19leGFjdCAgICAgICAgICAg
ICAgICAgPSBmYWxzZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfaWVjNTU5ICAgICAg
ICAgICAgICAgID0gZmFsc2U7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2ludGVnZXIg
ICAgICAgICAgICAgICA9IGZhbHNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1
bG8gICAgICAgICAgICAgICAgPSBmYWxzZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNf
c2lnbmVkICAgICAgICAgICAgICAgID0gZmFsc2U7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzX3NwZWNpYWxpemVkICAgICAgICAgICA9IGZhbHNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCB0aW55bmVzc19iZWZvcmUgICAgICAgICAgPSBmYWxzZTsNCiAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdHJhcHMgICAgICAgICAgICAgICAgICAgID0gZmFsc2U7DQogICAgc3RhdGljIGNv
bnN0ZXhwciBmbG9hdF9yb3VuZF9zdHlsZSByb3VuZF9zdHlsZSA9IHJvdW5kX3Rvd2FyZF96ZXJv
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0cyAgICAgICAgICAgICAgICAgICAgPSAw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwICAgICAgICAgICAgICAgICAgPSAw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdpdHMxMCAgICAgICAgICAgICAgPSAw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudCAgICAgICAgICAgICAgPSAw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwICAgICAgICAgICAgPSAw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCAgICAgICAgICAgICAgPSAw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudDEwICAgICAgICAgICAgPSAw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHJhZGl4ICAgICAgICAgICAgICAgICAgICAgPSAw
Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KY2xhc3MgbnVtZXJpY19saW1pdHMgOiBw
dWJsaWMgX051bV9iYXNlIHsgDQpwdWJsaWM6DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29u
c3RleHByIF9UeShtaW4pKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX1R5KCk7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIF9UeShtYXgpKCkgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gX1R5KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBz
dGF0aWMgY29uc3RleHByIF9UeSBsb3dlc3QoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBf
VHkoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgX1R5IGVw
c2lsb24oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfVHkoKTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgX1R5IHJvdW5kX2Vycm9yKCkgbm9leGNlcHQg
ew0KICAgICAgICByZXR1cm4gX1R5KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIF9UeSBkZW5vcm1fbWluKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
X1R5KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIF9UeSBp
bmZpbml0eSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9UeSgpOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBfVHkgcXVpZXRfTmFOKCkgbm9leGNlcHQg
ew0KICAgICAgICByZXR1cm4gX1R5KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIF9UeSBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gX1R5KCk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmNsYXNzIG51bWVy
aWNfbGltaXRzPGNvbnN0IF9UeT4gOiBwdWJsaWMgbnVtZXJpY19saW1pdHM8X1R5PiB7fTsgDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpjbGFzcyBudW1lcmljX2xpbWl0czx2b2xhdGlsZSBfVHk+
IDogcHVibGljIG51bWVyaWNfbGltaXRzPF9UeT4ge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
Pg0KY2xhc3MgbnVtZXJpY19saW1pdHM8Y29uc3Qgdm9sYXRpbGUgX1R5PiA6IHB1YmxpYyBudW1l
cmljX2xpbWl0czxfVHk+IHt9OyANCg0KDQpzdHJ1Y3QgX051bV9pbnRfYmFzZSA6IF9OdW1fYmFz
ZSB7IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19ib3VuZGVkICAgICA9IHRydWU7DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX2V4YWN0ICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNfaW50ZWdlciAgICAgPSB0cnVlOw0KICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc19zcGVjaWFsaXplZCA9IHRydWU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgcmFkaXggICAgICAgICAgID0gMjsNCn07DQoNCg0Kc3RydWN0IF9OdW1fZmxvYXRfYmFzZSA6
IF9OdW1fYmFzZSB7IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXRfZGVub3JtX3N0eWxlIGhh
c19kZW5vcm0gPSBkZW5vcm1fcHJlc2VudDsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFz
X2luZmluaXR5ICAgICAgICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aGFzX3F1aWV0X05hTiAgICAgICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaGFzX3NpZ25hbGluZ19OYU4gICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNfYm91bmRlZCAgICAgICAgICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNfaWVjNTU5ICAgICAgICAgICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNfc2lnbmVkICAgICAgICAgICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfc3BlY2lhbGl6ZWQgICAgICAgICAgID0gdHJ1ZTsNCiAgICBzdGF0
aWMgY29uc3RleHByIGZsb2F0X3JvdW5kX3N0eWxlIHJvdW5kX3N0eWxlID0gcm91bmRfdG9fbmVh
cmVzdDsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCByYWRpeCAgICAgICAgICAgICAgICAgICAg
ID0gMjsNCn07DQoNCg0KdGVtcGxhdGUgPD4NCmNsYXNzIG51bWVyaWNfbGltaXRzPGJvb2w+IDog
cHVibGljIF9OdW1faW50X2Jhc2Ugew0KcHVibGljOg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGlj
IGNvbnN0ZXhwciBib29sKG1pbikoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgYm9vbChtYXgpKCkg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBsb3dlc3QoKSBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiAobWluKSgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhw
ciBib29sIGVwc2lsb24oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBib29sIHJvdW5kX2Vycm9yKCkgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBkZW5vcm1fbWluKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
bmZpbml0eSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGJvb2wgcXVpZXRfTmFOKCkgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsN
CiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMgPSAxOw0KfTsNCg0KDQp0
ZW1wbGF0ZSA8Pg0KY2xhc3MgbnVtZXJpY19saW1pdHM8Y2hhcj4gOiBwdWJsaWMgX051bV9pbnRf
YmFzZSB7DQpwdWJsaWM6DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGNoYXIo
bWluKSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuICgtMTI4KTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgY2hhcihtYXgpKCkgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gMTI3Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0
ZXhwciBjaGFyIGxvd2VzdCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIChtaW4pKCk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGNoYXIgZXBzaWxvbigp
IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSBzdGF0aWMgY29uc3RleHByIGNoYXIgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBj
aGFyIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBjaGFyIGluZmluaXR5KCkgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgY2hhciBxdWlldF9OYU4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBjaGFyIHNpZ25h
bGluZ19OYU4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zaWduZWQgPSAoLTEyOCkgIT0gMDsNCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gKC0xMjgpID09IDA7DQogICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgZGlnaXRzICAgICA9IDggLSAoKC0xMjgpICE9IDApOw0KICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IGRpZ2l0czEwICAgPSAyOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0KY2xhc3MgbnVt
ZXJpY19saW1pdHM8c2lnbmVkIGNoYXI+IDogcHVibGljIF9OdW1faW50X2Jhc2Ugew0KcHVibGlj
Og0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hhcihtaW4pKCkg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKC0xMjgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hhcihtYXgpKCkgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gMTI3Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0
ZXhwciBzaWduZWQgY2hhciBsb3dlc3QoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAobWlu
KSgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBzaWduZWQg
Y2hhciBlcHNpbG9uKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgc2lnbmVkIGNoYXIgcm91bmRfZXJyb3Io
KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hhciBkZW5vcm1fbWluKCkgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25z
dGV4cHIgc2lnbmVkIGNoYXIgaW5maW5pdHkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hh
ciBxdWlldF9OYU4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBzaWduZWQgY2hhciBzaWduYWxpbmdfTmFO
KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNfc2lnbmVkID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBk
aWdpdHMgICAgID0gNzsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCAgID0gMjsN
Cn07DQoNCg0KdGVtcGxhdGUgPD4NCmNsYXNzIG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+
IDogcHVibGljIF9OdW1faW50X2Jhc2Ugew0KcHVibGljOg0KICAgIFtbbm9kaXNjYXJkXV0gc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjaGFyKG1pbikoKSBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBjaGFyKG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAweGZmOw0KICAgIH0N
Cg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjaGFyIGxvd2Vz
dCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIChtaW4pKCk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNoYXIgZXBzaWxvbigpIG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGNoYXIgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBjaGFyIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBj
aGFyIGluZmluaXR5KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY2hhciBxdWlldF9OYU4o
KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjaGFyIHNpZ25hbGluZ19OYU4oKSBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc19tb2R1bG8gPSB0cnVlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0cyAgICAg
PSA4Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwICAgPSAyOw0KfTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPD4NCmNsYXNzIG51
bWVyaWNfbGltaXRzPGNoYXIxNl90PiA6IHB1YmxpYyBfTnVtX2ludF9iYXNlIHsNCnB1YmxpYzoN
CiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgY2hhcjE2X3QobWluKSgpIG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIGNoYXIxNl90KG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
eGZmZmY7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGNoYXIx
Nl90IGxvd2VzdCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIChtaW4pKCk7DQogICAgfQ0K
DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGNoYXIxNl90IGVwc2lsb24oKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0g
c3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdCByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHBy
IGNoYXIxNl90IGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdCBpbmZpbml0
eSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBzdGF0aWMgY29uc3RleHByIGNoYXIxNl90IHF1aWV0X05hTigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3Rl
eHByIGNoYXIxNl90IHNpZ25hbGluZ19OYU4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19tb2R1bG8gPSB0cnVlOw0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0cyAgICAgPSAxNjsNCiAgICBzdGF0aWMgY29u
c3RleHByIGludCBkaWdpdHMxMCAgID0gNDsNCn07DQoNCg0KdGVtcGxhdGUgPD4NCmNsYXNzIG51
bWVyaWNfbGltaXRzPGNoYXIzMl90PiA6IHB1YmxpYyBfTnVtX2ludF9iYXNlIHsNCnB1YmxpYzoN
CiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3QobWluKSgpIG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIGNoYXIzMl90KG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
eGZmZmZmZmZmOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBj
aGFyMzJfdCBsb3dlc3QoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAobWluKSgpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBjaGFyMzJfdCBlcHNpbG9u
KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3Qgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0
ZXhwciBjaGFyMzJfdCBkZW5vcm1fbWluKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgY2hhcjMyX3QgaW5m
aW5pdHkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBjaGFyMzJfdCBxdWlldF9OYU4oKSBub2V4Y2VwdCB7
DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNv
bnN0ZXhwciBjaGFyMzJfdCBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gMDsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfbW9kdWxvID0gdHJ1
ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMgICAgID0gMzI7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgICA9IDk7DQp9Ow0KDQoNCnRlbXBsYXRlIDw+DQpjbGFz
cyBudW1lcmljX2xpbWl0czx3Y2hhcl90PiA6IHB1YmxpYyBfTnVtX2ludF9iYXNlIHsNCnB1Ymxp
YzoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdChtaW4pKCkgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gMHgwMDAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90KG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiAweGZmZmY7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHBy
IHdjaGFyX3QgbG93ZXN0KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKG1pbikoKTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdCBlcHNpbG9u
KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHN0YXRpYyBjb25zdGV4cHIgd2NoYXJfdCByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3Rl
eHByIHdjaGFyX3QgZGVub3JtX21pbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHdjaGFyX3QgaW5maW5p
dHkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gc3RhdGljIGNvbnN0ZXhwciB3Y2hhcl90IHF1aWV0X05hTigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3Rl
eHByIHdjaGFyX3Qgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7
DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IHRydWU7DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICA9IDE2Ow0KICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IGRpZ2l0czEwICAgPSA0Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0KY2xhc3MgbnVt
ZXJpY19saW1pdHM8c2hvcnQ+IDogcHVibGljIF9OdW1faW50X2Jhc2Ugew0KcHVibGljOg0KICAg
IFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBzaG9ydChtaW4pKCkgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gKC0zMjc2OCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIHNob3J0KG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAzMjc2
NzsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQgbG93
ZXN0KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKG1pbikoKTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQgZXBzaWxvbigpIG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29u
c3RleHByIHNob3J0IHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQgZGVub3Jt
X21pbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rp
c2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHNob3J0IGluZmluaXR5KCkgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4
cHIgc2hvcnQgcXVpZXRfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgc2hvcnQgc2lnbmFsaW5nX05h
TigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IHRydWU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQg
ZGlnaXRzICAgICA9IDE1Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRpZ2l0czEwICAgPSA0
Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0KY2xhc3MgbnVtZXJpY19saW1pdHM8aW50PiA6IHB1Ymxp
YyBfTnVtX2ludF9iYXNlIHsNCnB1YmxpYzoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25z
dGV4cHIgaW50KG1pbikoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAoLTIxNDc0ODM2NDcg
LSAxKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgaW50KG1h
eCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAyMTQ3NDgzNjQ3Ow0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnQgbG93ZXN0KCkgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gKG1pbikoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgaW50IGVwc2lsb24oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnQgcm91bmRfZXJy
b3IoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnQgZGVub3JtX21pbigpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHBy
IGludCBpbmZpbml0eSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGludCBxdWlldF9OYU4oKSBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IDA7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IHRydWU7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICA9IDMxOw0KICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IGRpZ2l0czEwICAgPSA5Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0KY2xhc3Mg
bnVtZXJpY19saW1pdHM8bG9uZz4gOiBwdWJsaWMgX051bV9pbnRfYmFzZSB7DQpwdWJsaWM6DQog
ICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGxvbmcobWluKSgpIG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuICgtMjE0NzQ4MzY0N0wgLSAxKTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgbG9uZyhtYXgpKCkgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gMjE0NzQ4MzY0N0w7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29u
c3RleHByIGxvbmcgbG93ZXN0KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKG1pbikoKTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBlcHNpbG9u
KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHN0YXRpYyBjb25zdGV4cHIgbG9uZyByb3VuZF9lcnJvcigpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHBy
IGxvbmcgZGVub3JtX21pbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0K
DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGxvbmcgaW5maW5pdHkoKSBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3Rh
dGljIGNvbnN0ZXhwciBsb25nIHF1aWV0X05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGxvbmcgc2ln
bmFsaW5nX05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAg
c3RhdGljX2Fzc2VydChzaXplb2YoaW50KSA9PSBzaXplb2YobG9uZyksICJMTFA2NCBhc3N1bXB0
aW9uIik7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IHRydWU7DQogICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICA9IDMxOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IGRpZ2l0czEwICAgPSA5Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0KY2xhc3MgbnVtZXJp
Y19saW1pdHM8bG9uZyBsb25nPiA6IHB1YmxpYyBfTnVtX2ludF9iYXNlIHsNCnB1YmxpYzoNCiAg
ICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBsb25nKG1pbikoKSBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiAoLTkyMjMzNzIwMzY4NTQ3NzU4MDdpNjQgLSAxKTsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBsb25nKG1heCkoKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiA5MjIzMzcyMDM2ODU0Nzc1ODA3aTY0Ow0KICAgIH0N
Cg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBsb25nIGxvbmcgbG93ZXN0KCkg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKG1pbikoKTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgbG9uZyBsb25nIGVwc2lsb24oKSBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0
ZXhwciBsb25nIGxvbmcgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBsb25nIGxvbmcg
ZGVub3JtX21pbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAg
W1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGxvbmcgbG9uZyBpbmZpbml0eSgpIG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIGxvbmcgbG9uZyBxdWlldF9OYU4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBsb25n
IGxvbmcgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAg
fQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX3NpZ25lZCA9IHRydWU7DQogICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICA9IDYzOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGRpZ2l0czEwICAgPSAxODsNCn07DQoNCg0KDQp0ZW1wbGF0ZSA8Pg0KY2xhc3MgbnVtZXJp
Y19saW1pdHM8dW5zaWduZWQgc2hvcnQ+IDogcHVibGljIF9OdW1faW50X2Jhc2Ugew0KcHVibGlj
Og0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaG9ydChtaW4p
KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hvcnQobWF4KSgpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIDB4ZmZmZjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgc2hvcnQgbG93ZXN0KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gKG1pbikoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgc2hvcnQgZXBzaWxvbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNob3J0
IHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hvcnQgZGVub3JtX21p
bigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNob3J0IGluZmluaXR5KCkgbm9leGNlcHQg
ew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgc2hvcnQgcXVpZXRfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgc2hvcnQgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7
DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IHRydWU7DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICA9IDE2Ow0KICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IGRpZ2l0czEwICAgPSA0Ow0KfTsNCiNsaW5lIDczMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaW1pdHMiDQoNCg0KdGVtcGxhdGUg
PD4NCmNsYXNzIG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD4gOiBwdWJsaWMgX051bV9pbnRf
YmFzZSB7DQpwdWJsaWM6DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGludChtaW4pKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50KG1heCkoKSBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiAweGZmZmZmZmZmOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQgbG93ZXN0KCkgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gKG1pbikoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgaW50IGVwc2lsb24oKSBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBpbnQgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQgZGVu
b3JtX21pbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludCBpbmZpbml0eSgpIG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGludCBxdWlldF9OYU4oKSBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBpbnQgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7
DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzX21vZHVsbyA9IHRydWU7DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICA9IDMyOw0KICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IGRpZ2l0czEwICAgPSA5Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0KY2xhc3MgbnVt
ZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgX051bV9pbnRfYmFzZSB7DQpwdWJs
aWM6DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcobWlu
KSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxvbmcobWF4KSgpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIDB4ZmZmZmZmZmZVTDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb3dlc3QoKSBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiAobWluKSgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBsb25nIGVwc2lsb24oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAw
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBs
b25nIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBkZW5vcm1f
bWluKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBpbmZpbml0eSgpIG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGxvbmcgcXVpZXRfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbG9uZyBzaWduYWxpbmdfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsN
CiAgICB9DQoNCiAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih1bnNpZ25lZCBpbnQpID09IHNpemVv
Zih1bnNpZ25lZCBsb25nKSwgIkxMUDY0IGFzc3VtcHRpb24iKTsNCiAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdp
dHMgICAgID0gMzI7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzMTAgICA9IDk7DQp9
Ow0KDQoNCnRlbXBsYXRlIDw+DQpjbGFzcyBudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nIGxv
bmc+IDogcHVibGljIF9OdW1faW50X2Jhc2Ugew0KcHVibGljOg0KICAgIFtbbm9kaXNjYXJkXV0g
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcobWluKSgpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGxvbmcgbG9uZyhtYXgpKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
MHhmZmZmZmZmZmZmZmZmZmZmdWk2NDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb25nIGxvd2VzdCgpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIChtaW4pKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGxvbmcgbG9uZyBlcHNpbG9uKCkgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbG9uZyBsb25nIHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
MDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bG9uZyBsb25nIGRlbm9ybV9taW4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxv
bmcgaW5maW5pdHkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsb25nIGxvbmcgcXVpZXRf
TmFOKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9uZyBsb25nIHNpZ25hbGluZ19OYU4o
KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc19tb2R1bG8gPSB0cnVlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGRp
Z2l0cyAgICAgPSA2NDsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCAgID0gMTk7
DQp9Ow0KDQoNCnRlbXBsYXRlIDw+DQpjbGFzcyBudW1lcmljX2xpbWl0czxmbG9hdD4gOiBwdWJs
aWMgX051bV9mbG9hdF9iYXNlIHsNCnB1YmxpYzoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBj
b25zdGV4cHIgZmxvYXQobWluKSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDEuMTc1NDk0
MzUxZS0zOEY7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGZs
b2F0KG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAzLjQwMjgyMzQ2NmUrMzhGOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBsb3dlc3Qo
KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAtKG1heCkoKTsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgZXBzaWxvbigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIDEuMTkyMDkyODk2ZS0wN0Y7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSBzdGF0aWMgY29uc3RleHByIGZsb2F0IHJvdW5kX2Vycm9yKCkgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gMC41RjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4
cHIgZmxvYXQgZGVub3JtX21pbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDEuNDAxMjk4
NDY0ZS00NUY7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGZs
b2F0IGluZmluaXR5KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX19idWlsdGluX2h1Z2Vf
dmFsZigpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBmbG9h
dCBxdWlldF9OYU4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfX2J1aWx0aW5fbmFuZigi
MCIpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBz
aWduYWxpbmdfTmFOKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX19idWlsdGluX25hbnNm
KCIxIik7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICAgICAg
PSAyNDsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBkaWdpdHMxMCAgICAgICA9IDY7DQogICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2RpZ2l0czEwICAgPSA5Ow0KICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50IG1heF9leHBvbmVudCAgID0gMTI4Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IG1heF9leHBvbmVudDEwID0gMzg7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9u
ZW50ICAgPSAoLTEyNSk7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWluX2V4cG9uZW50MTAg
PSAoLTM3KTsNCn07DQoNCg0KdGVtcGxhdGUgPD4NCmNsYXNzIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT4gOiBwdWJsaWMgX051bV9mbG9hdF9iYXNlIHsNCnB1YmxpYzoNCiAgICBbW25vZGlzY2FyZF1d
IHN0YXRpYyBjb25zdGV4cHIgZG91YmxlKG1pbikoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwODsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0
YXRpYyBjb25zdGV4cHIgZG91YmxlKG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAx
Ljc5NzY5MzEzNDg2MjMxNThlKzMwODsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgZG91YmxlIGxvd2VzdCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIC0o
bWF4KSgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgZXBzaWxvbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIDIuMjIwNDQ2MDQ5MjUwMzEz
MWUtMDE2Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAwLjU7DQogICAgfQ0K
DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBkZW5vcm1fbWluKCkg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gNC45NDA2NTY0NTg0MTI0NjU0ZS0zMjQ7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBpbmZpbml0eSgp
IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9fYnVpbHRpbl9odWdlX3ZhbCgpOw0KICAgIH0N
Cg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgcXVpZXRfTmFOKCkg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX19idWlsdGluX25hbigiMCIpOw0KICAgIH0NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgc2lnbmFsaW5nX05hTigp
IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9fYnVpbHRpbl9uYW5zKCIxIik7DQogICAgfQ0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgZGlnaXRzICAgICAgICAgPSA1MzsNCiAgICBzdGF0
aWMgY29uc3RleHByIGludCBkaWdpdHMxMCAgICAgICA9IDE1Ow0KICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50IG1heF9kaWdpdHMxMCAgID0gMTc7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4
X2V4cG9uZW50ICAgPSAxMDI0Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVu
dDEwID0gMzA4Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCAgID0gKC0x
MDIxKTsNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9ICgtMzA3KTsN
Cn07DQoNCg0KdGVtcGxhdGUgPD4NCmNsYXNzIG51bWVyaWNfbGltaXRzPGxvbmcgZG91YmxlPiA6
IHB1YmxpYyBfTnVtX2Zsb2F0X2Jhc2Ugew0KcHVibGljOg0KICAgIFtbbm9kaXNjYXJkXV0gc3Rh
dGljIGNvbnN0ZXhwciBsb25nIGRvdWJsZShtaW4pKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDg7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBz
dGF0aWMgY29uc3RleHByIGxvbmcgZG91YmxlKG1heCkoKSBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiAxLjc5NzY5MzEzNDg2MjMxNThlKzMwODsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1d
IHN0YXRpYyBjb25zdGV4cHIgbG9uZyBkb3VibGUgbG93ZXN0KCkgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gLShtYXgpKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29u
c3RleHByIGxvbmcgZG91YmxlIGVwc2lsb24oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAy
LjIyMDQ0NjA0OTI1MDMxMzFlLTAxNjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgbG9uZyBkb3VibGUgcm91bmRfZXJyb3IoKSBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiAwLjVMOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhw
ciBsb25nIGRvdWJsZSBkZW5vcm1fbWluKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gNC45
NDA2NTY0NTg0MTI0NjU0ZS0zMjQ7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMg
Y29uc3RleHByIGxvbmcgZG91YmxlIGluZmluaXR5KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gX19idWlsdGluX2h1Z2VfdmFsKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIGxvbmcgZG91YmxlIHF1aWV0X05hTigpIG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIF9fYnVpbHRpbl9uYW4oIjAiKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0
YXRpYyBjb25zdGV4cHIgbG9uZyBkb3VibGUgc2lnbmFsaW5nX05hTigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIF9fYnVpbHRpbl9uYW5zKCIxIik7DQogICAgfQ0KDQogICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgZGlnaXRzICAgICAgICAgPSA1MzsNCiAgICBzdGF0aWMgY29uc3RleHByIGlu
dCBkaWdpdHMxMCAgICAgICA9IDE1Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9kaWdp
dHMxMCAgID0gMTc7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbWF4X2V4cG9uZW50ICAgPSAx
MDI0Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heF9leHBvbmVudDEwID0gMzA4Ow0KICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50IG1pbl9leHBvbmVudCAgID0gKC0xMDIxKTsNCiAgICBzdGF0
aWMgY29uc3RleHByIGludCBtaW5fZXhwb25lbnQxMCA9ICgtMzA3KTsNCn07DQoNCg0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBpbnQgX0NvdW50bF96
ZXJvX2ZhbGxiYWNrKF9UeSBfVmFsKSBub2V4Y2VwdCB7DQogICAgX1R5IF9ZeSA9IDA7DQoNCiAg
ICB1bnNpZ25lZCBpbnQgX05uID0gbnVtZXJpY19saW1pdHM8X1R5Pjo6ZGlnaXRzOw0KICAgIHVu
c2lnbmVkIGludCBfQ2MgPSBudW1lcmljX2xpbWl0czxfVHk+OjpkaWdpdHMgLyAyOw0KICAgIGRv
IHsNCiAgICAgICAgX1l5ID0gc3RhdGljX2Nhc3Q8X1R5PihfVmFsID4+IF9DYyk7DQogICAgICAg
IGlmIChfWXkgIT0gMCkgew0KICAgICAgICAgICAgX05uIC09IF9DYzsNCiAgICAgICAgICAgIF9W
YWwgPSBfWXk7DQogICAgICAgIH0NCiAgICAgICAgX0NjID4+PSAxOw0KICAgIH0gd2hpbGUgKF9D
YyAhPSAwKTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihfTm4pIC0gc3RhdGljX2Nhc3Q8
aW50PihfVmFsKTsNCn0NCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJk
XV0gY29uc3RleHByIGludCBfQ291bnRyX3plcm9fZmFsbGJhY2soY29uc3QgX1R5IF9WYWwpIG5v
ZXhjZXB0IHsNCiAgICBjb25zdGV4cHIgaW50IF9EaWdpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PF9UeT46OmRpZ2l0czsNCiAgICByZXR1cm4gX0RpZ2l0cyAtIF9Db3VudGxfemVyb19mYWxsYmFj
ayhzdGF0aWNfY2FzdDxfVHk+KHN0YXRpY19jYXN0PF9UeT4ofl9WYWwpICYgc3RhdGljX2Nhc3Q8
X1R5PihfVmFsIC0gMSkpKTsNCn0NCg0KDQoNCmV4dGVybiAiQyIgew0KZXh0ZXJuIGludCBfX2lz
YV9hdmFpbGFibGU7DQoNCg0KDQoNCnVuc2lnbmVkIGludCBfdHpjbnRfdTMyKHVuc2lnbmVkIGlu
dCk7DQp1bnNpZ25lZCBfX2ludDY0IF90emNudF91NjQodW5zaWduZWQgX19pbnQ2NCk7Ow0KDQoN
CiNsaW5lIDEwNTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcbGltaXRzIg0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBp
bnQgX0NoZWNrZWRfeDg2X3g2NF9jb3VudHJfemVybyhjb25zdCBfVHkgX1ZhbCkgbm9leGNlcHQg
ew0KICAgIGNvbnN0ZXhwciBpbnQgX0RpZ2l0cyA9IG51bWVyaWNfbGltaXRzPF9UeT46OmRpZ2l0
czsNCiAgICBjb25zdGV4cHIgX1R5IF9NYXggICAgPSAobnVtZXJpY19saW1pdHM8X1R5Pjo6bWF4
KSgpOw0KDQoNCiAgICBjb25zdCBib29sIF9IYXZlX3R6Y250ID0gX19pc2FfYXZhaWxhYmxlID49
IF9fSVNBX0FWQUlMQUJMRV9BVlgyOw0KICAgIGlmICghX0hhdmVfdHpjbnQgJiYgX1ZhbCA9PSAw
KSB7DQogICAgICAgIHJldHVybiBfRGlnaXRzOw0KICAgIH0NCiNsaW5lIDEwNjkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGltaXRzIg0KDQogICAg
aWYgY29uc3RleHByIChfRGlnaXRzIDw9IDMyKSB7DQogICAgICAgIA0KICAgICAgICANCiAgICAg
ICAgDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KF90emNudF91MzIoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50Pih+X01heCB8IF9WYWwpKSk7DQogICAgfSBlbHNlIHsNCg0KDQoNCg0K
DQoNCg0KDQoNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oX3R6Y250X3U2NChfVmFs
KSk7DQojbGluZSAxMDg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXGxpbWl0cyINCiAgICB9DQp9DQoNCg0KI2xpbmUgMTA5MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaW1pdHMiDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQpjb25zdGV4cHIgYm9vbCBfSXNfc3RhbmRhcmRfdW5zaWduZWRfaW50ZWdl
ciA9DQogICAgX0lzX2FueV9vZl92PHJlbW92ZV9jdl90PF9UeT4sIHVuc2lnbmVkIGNoYXIsIHVu
c2lnbmVkIHNob3J0LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcg
bG9uZz47DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGVuYWJsZV9pZl90PF9Jc19zdGFuZGFyZF91
bnNpZ25lZF9pbnRlZ2VyPF9UeT4sIGludD4gPSAwPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
aW50IF9Db3VudHJfemVybyhjb25zdCBfVHkgX1ZhbCkgbm9leGNlcHQgew0KDQoNCg0KDQoNCg0K
I2xpbmUgMTEwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxsaW1pdHMiDQogICAgDQogICAgcmV0dXJuIF9Db3VudHJfemVyb19mYWxsYmFjayhfVmFs
KTsNCn0NCg0KfQ0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0K
I2xpbmUgMTExNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxsaW1pdHMiDQojbGluZSAxMTE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGxpbWl0cyINCiNsaW5lIDE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQoNCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGF0b21pYy5oIg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcGFjayhwdXNo
LCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6
IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0
NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0
NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHhhdG9taWMuaCINCg0KDQoNCg0KbmFtZXNwYWNlIHN0ZCB7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhhdG9t
aWMuaCINCg0KZW51bSBtZW1vcnlfb3JkZXIgew0KICAgIG1lbW9yeV9vcmRlcl9yZWxheGVkLA0K
ICAgIG1lbW9yeV9vcmRlcl9jb25zdW1lLA0KICAgIG1lbW9yeV9vcmRlcl9hY3F1aXJlLA0KICAg
IG1lbW9yeV9vcmRlcl9yZWxlYXNlLA0KICAgIG1lbW9yeV9vcmRlcl9hY3FfcmVsLA0KICAgIG1l
bW9yeV9vcmRlcl9zZXFfY3N0DQp9Ow0KI2xpbmUgODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGF0b21pYy5oIg0KDQp1c2luZyBfQXRvbWljX2Nv
dW50ZXJfdCA9IHVuc2lnbmVkIGxvbmc7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9JbnRlZ3JhbCwg
Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSB2b2xhdGlsZSBfSW50ZWdyYWwqIF9BdG9taWNfYWRk
cmVzc19hcyhfVHkmIF9Tb3VyY2UpIG5vZXhjZXB0IHsNCiAgICANCiAgICBzdGF0aWNfYXNzZXJ0
KGlzX2ludGVncmFsX3Y8X0ludGVncmFsPiwgIlRyaWVkIHRvIHJlaW50ZXJwcmV0IG1lbW9yeSBh
cyBub24taW50ZWdyYWwiKTsNCiAgICByZXR1cm4gJnJlaW50ZXJwcmV0X2Nhc3Q8dm9sYXRpbGUg
X0ludGVncmFsJj4oX1NvdXJjZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW50ZWdyYWwsIGNs
YXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gY29uc3Qgdm9sYXRpbGUgX0ludGVncmFsKiBfQXRvbWlj
X2FkZHJlc3NfYXMoY29uc3QgX1R5JiBfU291cmNlKSBub2V4Y2VwdCB7DQogICAgDQogICAgc3Rh
dGljX2Fzc2VydChpc19pbnRlZ3JhbF92PF9JbnRlZ3JhbD4sICJUcmllZCB0byByZWludGVycHJl
dCBtZW1vcnkgYXMgbm9uLWludGVncmFsIik7DQogICAgcmV0dXJuICZyZWludGVycHJldF9jYXN0
PGNvbnN0IHZvbGF0aWxlIF9JbnRlZ3JhbCY+KF9Tb3VyY2UpOw0KfQ0KDQp9DQoNCg0KDQojcHJh
Z21hIHdhcm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBvcCkNCiNsaW5lIDExMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4YXRvbWljLmgiDQojbGlu
ZSAxMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eGF0b21pYy5oIg0KI2xpbmUgMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1dGlsaXR5Ig0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1dGlsaXR5Ig0KDQojcHJhZ21hIHBhY2socHVz
aCwgOCkNCiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUg
OiA0MTgwIDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4NyA0NTg4IDQ2MTkg
NDYyMyA0NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODggNTAyNiA1MDI3IDUw
NDUgNjI5NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KbmFtZXNwYWNlIHN0ZCB7DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHksIGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0IF9U
eSYobWF4KShjb25zdCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkmIF9SaWdodCwgX1ByIF9QcmVkKSBu
b2V4Y2VwdCgNCiAgICBub2V4Y2VwdChfUHJlZChfTGVmdCwgX1JpZ2h0KSkpICB7DQogICAgDQog
ICAgcmV0dXJuIF9QcmVkKF9MZWZ0LCBfUmlnaHQpID8gX1JpZ2h0IDogX0xlZnQ7DQp9DQoNCiNw
cmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiAyODI4NSkgDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSAgIGNvbnN0ZXhwciBjb25zdCBfVHkm
KG1heCkoDQogICAgY29uc3QgX1R5JiBfTGVmdCwgY29uc3QgX1R5JiBfUmlnaHQpIG5vZXhjZXB0
KG5vZXhjZXB0KF9MZWZ0IDwgX1JpZ2h0KSkgIHsNCiAgICANCiAgICByZXR1cm4gX0xlZnQgPCBf
UmlnaHQgPyBfUmlnaHQgOiBfTGVmdDsNCn0NCiNwcmFnbWEgd2FybmluZyhwb3ApDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHksIGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeSht
YXgpKGluaXRpYWxpemVyX2xpc3Q8X1R5PiwgX1ByKTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+
DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfVHkobWF4KShpbml0aWFsaXplcl9saXN0PF9UeT4p
OyANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBjb25zdCBfVHkmKG1pbikoY29uc3QgX1R5JiBfTGVmdCwgY29uc3QgX1R5JiBfUmln
aHQsIF9QciBfUHJlZCkgbm9leGNlcHQoDQogICAgbm9leGNlcHQoX1ByZWQoX1JpZ2h0LCBfTGVm
dCkpKSAgew0KICAgIA0KICAgIHJldHVybiBfUHJlZChfUmlnaHQsIF9MZWZ0KSA/IF9SaWdodCA6
IF9MZWZ0Ow0KfQ0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlIDogMjgyODUpIA0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gICBjb25z
dGV4cHIgY29uc3QgX1R5JihtaW4pKA0KICAgIGNvbnN0IF9UeSYgX0xlZnQsIGNvbnN0IF9UeSYg
X1JpZ2h0KSBub2V4Y2VwdChub2V4Y2VwdChfUmlnaHQgPCBfTGVmdCkpICB7DQogICAgDQogICAg
cmV0dXJuIF9SaWdodCA8IF9MZWZ0ID8gX1JpZ2h0IDogX0xlZnQ7DQp9DQojcHJhZ21hIHdhcm5p
bmcocG9wKQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1d
IGNvbnN0ZXhwciBfVHkobWluKShpbml0aWFsaXplcl9saXN0PF9UeT4sIF9Qcik7IA0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX1R5KG1pbikoaW5pdGlh
bGl6ZXJfbGlzdDxfVHk+KTsgDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9G
d2RJdDI+DQppbmxpbmUgdm9pZCBpdGVyX3N3YXAoX0Z3ZEl0MSBfTGVmdCwgX0Z3ZEl0MiBfUmln
aHQpIHsgDQogICAgc3dhcCgqX0xlZnQsICpfUmlnaHQpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHksIHNpemVfdCBfU2l6ZSwgZW5hYmxlX2lmX3Q8X0lzX3N3YXBwYWJsZTxfVHk+Ojp2YWx1
ZSwgaW50PiBfRW5hYmxlZD4NCmlubGluZSB2b2lkIHN3YXAoX1R5ICgmX0xlZnQpW19TaXplXSwg
X1R5ICgmX1JpZ2h0KVtfU2l6ZV0pIG5vZXhjZXB0KF9Jc19ub3Rocm93X3N3YXBwYWJsZTxfVHk+
Ojp2YWx1ZSkgew0KICAgIGlmICgmX0xlZnQgIT0gJl9SaWdodCkgew0KICAgICAgICBfVHkqIF9G
aXJzdDEgPSBfTGVmdDsNCiAgICAgICAgX1R5KiBfTGFzdDEgID0gX0ZpcnN0MSArIF9TaXplOw0K
ICAgICAgICBfVHkqIF9GaXJzdDIgPSBfUmlnaHQ7DQogICAgICAgIGZvciAoOyBfRmlyc3QxICE9
IF9MYXN0MTsgKytfRmlyc3QxLCArK19GaXJzdDIpIHsNCiAgICAgICAgICAgIDo6c3RkOjogaXRl
cl9zd2FwKF9GaXJzdDEsIF9GaXJzdDIpOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHksIGVuYWJsZV9pZl90PGlzX21vdmVfY29uc3RydWN0aWJsZV92PF9UeT4g
JiYgaXNfbW92ZV9hc3NpZ25hYmxlX3Y8X1R5PiwgaW50PiBfRW5hYmxlZD4NCg0KDQojbGluZSAx
MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXRp
bGl0eSINCmlubGluZSB2b2lkIHN3YXAoX1R5JiBfTGVmdCwgX1R5JiBfUmlnaHQpIG5vZXhjZXB0
KA0KICAgIGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX3Y8X1R5PiYmIGlzX25vdGhyb3df
bW92ZV9hc3NpZ25hYmxlX3Y8X1R5Pikgew0KICAgIF9UeSBfVG1wID0gOjpzdGQ6OiBtb3ZlKF9M
ZWZ0KTsNCiAgICBfTGVmdCAgICA9IDo6c3RkOjogbW92ZShfUmlnaHQpOw0KICAgIF9SaWdodCAg
ID0gOjpzdGQ6OiBtb3ZlKF9UbXApOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxp
bmUgdm9pZCBfU3dhcF9hZGwoX1R5JiBfTGVmdCwgX1R5JiBfUmlnaHQpIG5vZXhjZXB0KF9Jc19u
b3Rocm93X3N3YXBwYWJsZTxfVHk+Ojp2YWx1ZSkgew0KICAgIHN3YXAoX0xlZnQsIF9SaWdodCk7
DQp9DQoNCg0Kc3RydWN0IHBpZWNld2lzZV9jb25zdHJ1Y3RfdCB7IA0KICAgIGV4cGxpY2l0IHBp
ZWNld2lzZV9jb25zdHJ1Y3RfdCgpID0gZGVmYXVsdDsNCn07DQoNCmlubGluZSBjb25zdGV4cHIg
cGllY2V3aXNlX2NvbnN0cnVjdF90IHBpZWNld2lzZV9jb25zdHJ1Y3R7fTsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MuLi4+DQpjbGFzcyB0dXBsZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNz
IF9UeTI+DQpzdHJ1Y3QgcGFpciB7IA0KICAgIHVzaW5nIGZpcnN0X3R5cGUgID0gX1R5MTsNCiAg
ICB1c2luZyBzZWNvbmRfdHlwZSA9IF9UeTI7DQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVXR5
MSA9IF9UeTEsIGNsYXNzIF9VdHkyID0gX1R5MiwNCiAgICAgICAgZW5hYmxlX2lmX3Q8Y29uanVu
Y3Rpb25fdjxpc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1V0eTE+LCBpc19kZWZhdWx0X2NvbnN0
cnVjdGlibGU8X1V0eTI+PiwgaW50PiA9IDA+DQogICAgY29uc3RleHByIGV4cGxpY2l0KA0KICAg
ICAgICAhX0lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9VdHkxPjo6dmFsdWUg
fHwgIV9Jc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVXR5Mj46OnZhbHVlKQ0K
ICAgICAgICBwYWlyKCkgbm9leGNlcHQoDQogICAgICAgICAgICBpc19ub3Rocm93X2RlZmF1bHRf
Y29uc3RydWN0aWJsZV92PF9VdHkxPiYmIGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxl
X3Y8X1V0eTI+KSANCiAgICAgICAgOiBmaXJzdCgpLCBzZWNvbmQoKSB7fQ0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1dGlsaXR5Ig0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1V0eTEgPSBfVHkxLCBjbGFzcyBfVXR5MiA9IF9UeTIsDQogICAgICAgIGVuYWJsZV9pZl90
PGNvbmp1bmN0aW9uX3Y8aXNfY29weV9jb25zdHJ1Y3RpYmxlPF9VdHkxPiwgaXNfY29weV9jb25z
dHJ1Y3RpYmxlPF9VdHkyPj4sIGludD4gPSAwPg0KICAgIGNvbnN0ZXhwciBleHBsaWNpdCghaXNf
Y29udmVydGlibGVfdjxjb25zdCBfVXR5MSYsIF9VdHkxPiB8fCAhaXNfY29udmVydGlibGVfdjxj
b25zdCBfVXR5MiYsIF9VdHkyPikNCiAgICAgICAgcGFpcihjb25zdCBfVHkxJiBfVmFsMSwgY29u
c3QgX1R5MiYgX1ZhbDIpIG5vZXhjZXB0KA0KICAgICAgICAgICAgaXNfbm90aHJvd19jb3B5X2Nv
bnN0cnVjdGlibGVfdjxfVXR5MT4mJiBpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZV92PF9V
dHkyPikgDQogICAgICAgIDogZmlyc3QoX1ZhbDEpLCBzZWNvbmQoX1ZhbDIpIHt9DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTgzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHV0aWxpdHkiDQoNCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfT3RoZXIxLCBjbGFzcyBfT3RoZXIyLA0KICAgICAgICBlbmFibGVfaWZfdDxjb25q
dW5jdGlvbl92PGlzX2NvbnN0cnVjdGlibGU8X1R5MSwgX090aGVyMT4sIGlzX2NvbnN0cnVjdGli
bGU8X1R5MiwgX090aGVyMj4+LCBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgZXhwbGljaXQoIWlz
X2NvbnZlcnRpYmxlX3Y8X090aGVyMSwgX1R5MT4gfHwgIWlzX2NvbnZlcnRpYmxlX3Y8X090aGVy
MiwgX1R5Mj4pDQogICAgICAgIHBhaXIoX090aGVyMSYmIF9WYWwxLCBfT3RoZXIyJiYgX1ZhbDIp
IG5vZXhjZXB0KA0KICAgICAgICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8X1R5MSwg
X090aGVyMT4mJiBpc19ub3Rocm93X2NvbnN0cnVjdGlibGVfdjxfVHkyLCBfT3RoZXIyPikgDQog
ICAgICAgIDogZmlyc3QoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcjE+KF9WYWwxKSksIHNlY29uZCg6
OnN0ZDo6IGZvcndhcmQ8X090aGVyMj4oX1ZhbDIpKSB7fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAyMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcdXRpbGl0eSINCg0KICAgIHBhaXIoY29uc3QgcGFpciYpID0gZGVmYXVs
dDsNCiAgICBwYWlyKHBhaXImJikgICAgICA9IGRlZmF1bHQ7DQoNCg0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfT3RoZXIxLCBjbGFzcyBfT3RoZXIyLA0KICAgICAgICBlbmFibGVfaWZfdDxjb25qdW5j
dGlvbl92PGlzX2NvbnN0cnVjdGlibGU8X1R5MSwgY29uc3QgX090aGVyMSY+LCBpc19jb25zdHJ1
Y3RpYmxlPF9UeTIsIGNvbnN0IF9PdGhlcjImPj4sDQogICAgICAgICAgICBpbnQ+ID0gMD4NCiAg
ICBjb25zdGV4cHIgZXhwbGljaXQoIWlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX090aGVyMSYsIF9U
eTE+IHx8ICFpc19jb252ZXJ0aWJsZV92PGNvbnN0IF9PdGhlcjImLCBfVHkyPikNCiAgICAgICAg
cGFpcihjb25zdCBwYWlyPF9PdGhlcjEsIF9PdGhlcjI+JiBfUmlnaHQpIG5vZXhjZXB0KGlzX25v
dGhyb3dfY29uc3RydWN0aWJsZV92PF9UeTEsIGNvbnN0IF9PdGhlcjEmPiYmDQogICAgICAgICAg
ICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8X1R5MiwgY29uc3QgX090aGVyMiY+KSAN
CiAgICAgICAgOiBmaXJzdChfUmlnaHQuZmlyc3QpLCBzZWNvbmQoX1JpZ2h0LnNlY29uZCkge30N
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIzOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1dGlsaXR5Ig0KDQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyMSwgY2xhc3MgX090aGVyMiwNCiAgICAgICAgZW5hYmxl
X2lmX3Q8Y29uanVuY3Rpb25fdjxpc19jb25zdHJ1Y3RpYmxlPF9UeTEsIF9PdGhlcjE+LCBpc19j
b25zdHJ1Y3RpYmxlPF9UeTIsIF9PdGhlcjI+PiwgaW50PiA9IDA+DQogICAgY29uc3RleHByIGV4
cGxpY2l0KCFpc19jb252ZXJ0aWJsZV92PF9PdGhlcjEsIF9UeTE+IHx8ICFpc19jb252ZXJ0aWJs
ZV92PF9PdGhlcjIsIF9UeTI+KQ0KICAgICAgICBwYWlyKHBhaXI8X090aGVyMSwgX090aGVyMj4m
JiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl
X3Y8X1R5MSwgX090aGVyMT4mJiBpc19ub3Rocm93X2NvbnN0cnVjdGlibGVfdjxfVHkyLCBfT3Ro
ZXIyPikgDQogICAgICAgIDogZmlyc3QoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcjE+KF9SaWdodC5m
aXJzdCkpLCBzZWNvbmQoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcjI+KF9SaWdodC5zZWNvbmQpKSB7
fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNjQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXRpbGl0eSINCg0KICAgIHRl
bXBsYXRlIDxjbGFzcyBfVHVwbGUxLCBjbGFzcyBfVHVwbGUyLCBzaXplX3QuLi4gX0luZGV4ZXMx
LCBzaXplX3QuLi4gX0luZGV4ZXMyPg0KICAgIGNvbnN0ZXhwciBwYWlyKF9UdXBsZTEmIF9WYWwx
LCBfVHVwbGUyJiBfVmFsMiwgaW5kZXhfc2VxdWVuY2U8X0luZGV4ZXMxLi4uPiwgaW5kZXhfc2Vx
dWVuY2U8X0luZGV4ZXMyLi4uPik7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R5cGVzMSwg
Y2xhc3MuLi4gX1R5cGVzMj4NCiAgICBpbmxpbmUgcGFpcihwaWVjZXdpc2VfY29uc3RydWN0X3Qs
IHR1cGxlPF9UeXBlczEuLi4+IF9WYWwxLCB0dXBsZTxfVHlwZXMyLi4uPiBfVmFsMik7DQoNCiAg
ICBwYWlyJiBvcGVyYXRvcj0oY29uc3Qgdm9sYXRpbGUgcGFpciYpID0gZGVsZXRlOw0KDQogICAg
dGVtcGxhdGUgPGNsYXNzIF9NeXNlbGYgPSBwYWlyLA0KICAgICAgICBlbmFibGVfaWZfdDxjb25q
dW5jdGlvbl92PF9Jc19jb3B5X2Fzc2lnbmFibGVfbm9fcHJlY29uZGl0aW9uX2NoZWNrPHR5cGVu
YW1lIF9NeXNlbGY6OmZpcnN0X3R5cGU+LA0KICAgICAgICAgICAgICAgICAgICAgICAgX0lzX2Nv
cHlfYXNzaWduYWJsZV9ub19wcmVjb25kaXRpb25fY2hlY2s8dHlwZW5hbWUgX015c2VsZjo6c2Vj
b25kX3R5cGU+PiwNCiAgICAgICAgICAgIGludD4gICAgICAgICAgICA9IDA+DQogICAgaW5saW5l
IHBhaXImIG9wZXJhdG9yPShfSWRlbnRpdHlfdDxjb25zdCBfTXlzZWxmJj4gX1JpZ2h0KSBub2V4
Y2VwdCgNCiAgICAgICAgY29uanVuY3Rpb25fdjxpc19ub3Rocm93X2NvcHlfYXNzaWduYWJsZTxf
VHkxPiwgaXNfbm90aHJvd19jb3B5X2Fzc2lnbmFibGU8X1R5Mj4+KSAgew0KICAgICAgICBmaXJz
dCAgPSBfUmlnaHQuZmlyc3Q7DQogICAgICAgIHNlY29uZCA9IF9SaWdodC5zZWNvbmQ7DQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX015c2VsZiA9
IHBhaXIsDQogICAgICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8X0lzX21vdmVfYXNzaWdu
YWJsZV9ub19wcmVjb25kaXRpb25fY2hlY2s8dHlwZW5hbWUgX015c2VsZjo6Zmlyc3RfdHlwZT4s
DQogICAgICAgICAgICAgICAgICAgICAgICBfSXNfbW92ZV9hc3NpZ25hYmxlX25vX3ByZWNvbmRp
dGlvbl9jaGVjazx0eXBlbmFtZSBfTXlzZWxmOjpzZWNvbmRfdHlwZT4+LA0KICAgICAgICAgICAg
aW50PiAgICAgICAgICAgID0gMD4NCiAgICBpbmxpbmUgcGFpciYgb3BlcmF0b3I9KF9JZGVudGl0
eV90PF9NeXNlbGYmJj4gX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgY29uanVuY3Rpb25fdjxp
c19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxfVHkxPiwgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFi
bGU8X1R5Mj4+KSAgew0KICAgICAgICBmaXJzdCAgPSA6OnN0ZDo6IGZvcndhcmQ8X1R5MT4oX1Jp
Z2h0LmZpcnN0KTsNCiAgICAgICAgc2Vjb25kID0gOjpzdGQ6OiBmb3J3YXJkPF9UeTI+KF9SaWdo
dC5zZWNvbmQpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlcjEsIGNsYXNzIF9PdGhlcjIsDQogICAgICAgIGVuYWJsZV9pZl90PGNvbmp1
bmN0aW9uX3Y8bmVnYXRpb248aXNfc2FtZTxwYWlyLCBwYWlyPF9PdGhlcjEsIF9PdGhlcjI+Pj4s
IGlzX2Fzc2lnbmFibGU8X1R5MSYsIGNvbnN0IF9PdGhlcjEmPiwNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlzX2Fzc2lnbmFibGU8X1R5MiYsIGNvbnN0IF9PdGhlcjImPj4sDQogICAgICAgICAg
ICBpbnQ+ID0gMD4NCiAgICBpbmxpbmUgcGFpciYgb3BlcmF0b3I9KGNvbnN0IHBhaXI8X090aGVy
MSwgX090aGVyMj4mIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAgIGlzX25vdGhyb3dfYXNzaWdu
YWJsZV92PF9UeTEmLCBjb25zdCBfT3RoZXIxJj4mJg0KICAgICAgICAgICAgaXNfbm90aHJvd19h
c3NpZ25hYmxlX3Y8X1R5MiYsIGNvbnN0IF9PdGhlcjImPikgIHsNCiAgICAgICAgZmlyc3QgID0g
X1JpZ2h0LmZpcnN0Ow0KICAgICAgICBzZWNvbmQgPSBfUmlnaHQuc2Vjb25kOw0KICAgICAgICBy
ZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlcjEsIGNsYXNz
IF9PdGhlcjIsDQogICAgICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8bmVnYXRpb248aXNf
c2FtZTxwYWlyLCBwYWlyPF9PdGhlcjEsIF9PdGhlcjI+Pj4sIGlzX2Fzc2lnbmFibGU8X1R5MSYs
IF9PdGhlcjE+LA0KICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXNzaWduYWJsZTxfVHkyJiwg
X090aGVyMj4+LA0KICAgICAgICAgICAgaW50PiA9IDA+DQogICAgaW5saW5lIHBhaXImIG9wZXJh
dG9yPShwYWlyPF9PdGhlcjEsIF9PdGhlcjI+JiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAg
aXNfbm90aHJvd19hc3NpZ25hYmxlX3Y8X1R5MSYsIF9PdGhlcjE+JiYgaXNfbm90aHJvd19hc3Np
Z25hYmxlX3Y8X1R5MiYsIF9PdGhlcjI+KSAgew0KICAgICAgICBmaXJzdCAgPSA6OnN0ZDo6IGZv
cndhcmQ8X090aGVyMT4oX1JpZ2h0LmZpcnN0KTsNCiAgICAgICAgc2Vjb25kID0gOjpzdGQ6OiBm
b3J3YXJkPF9PdGhlcjI+KF9SaWdodC5zZWNvbmQpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KDQogICAgaW5saW5lIHZvaWQgc3dhcChwYWlyJiBfUmlnaHQpIG5vZXhjZXB0KA0KICAg
ICAgICBfSXNfbm90aHJvd19zd2FwcGFibGU8X1R5MT46OnZhbHVlJiYgX0lzX25vdGhyb3dfc3dh
cHBhYmxlPF9UeTI+Ojp2YWx1ZSkgew0KICAgICAgICBpZiAodGhpcyAhPSA6OnN0ZDo6IGFkZHJl
c3NvZihfUmlnaHQpKSB7DQogICAgICAgICAgICBfU3dhcF9hZGwoZmlyc3QsIF9SaWdodC5maXJz
dCk7DQogICAgICAgICAgICBfU3dhcF9hZGwoc2Vjb25kLCBfUmlnaHQuc2Vjb25kKTsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIF9UeTEgZmlyc3Q7IA0KICAgIF9UeTIgc2Vjb25kOyANCn07DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpwYWlyKF9UeTEsIF9UeTIpIC0+
IHBhaXI8X1R5MSwgX1R5Mj47DQojbGluZSAzMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXRpbGl0eSINCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEs
IGNsYXNzIF9UeTIsIGVuYWJsZV9pZl90PF9Jc19zd2FwcGFibGU8X1R5MT46OnZhbHVlICYmIF9J
c19zd2FwcGFibGU8X1R5Mj46OnZhbHVlLCBpbnQ+ID0gMD4NCmlubGluZSB2b2lkIHN3YXAocGFp
cjxfVHkxLCBfVHkyPiYgX0xlZnQsIHBhaXI8X1R5MSwgX1R5Mj4mIF9SaWdodCkgbm9leGNlcHQo
bm9leGNlcHQoX0xlZnQuc3dhcChfUmlnaHQpKSkgew0KICAgIF9MZWZ0LnN3YXAoX1JpZ2h0KTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgcGFpcjxfVHkxLCBfVHkyPiYgX0xlZnQsIGNv
bnN0IHBhaXI8X1R5MSwgX1R5Mj4mIF9SaWdodCkgew0KICAgIHJldHVybiBfTGVmdC5maXJzdCA9
PSBfUmlnaHQuZmlyc3QgJiYgX0xlZnQuc2Vjb25kID09IF9SaWdodC5zZWNvbmQ7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IHBhaXI8X1R5MSwgX1R5Mj4mIF9MZWZ0LCBjb25zdCBwYWly
PF9UeTEsIF9UeTI+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCltbbm9kaXNjYXJkXV0gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHBhaXI8X1R5MSwgX1R5Mj4mIF9MZWZ0LCBjb25z
dCBwYWlyPF9UeTEsIF9UeTI+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX0xlZnQuZmlyc3QgPCBf
UmlnaHQuZmlyc3QgfHwgKCEoX1JpZ2h0LmZpcnN0IDwgX0xlZnQuZmlyc3QpICYmIF9MZWZ0LnNl
Y29uZCA8IF9SaWdodC5zZWNvbmQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3Mg
X1R5Mj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IHBhaXI8
X1R5MSwgX1R5Mj4mIF9MZWZ0LCBjb25zdCBwYWlyPF9UeTEsIF9UeTI+JiBfUmlnaHQpIHsNCiAg
ICByZXR1cm4gX1JpZ2h0IDwgX0xlZnQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFz
cyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IHBh
aXI8X1R5MSwgX1R5Mj4mIF9MZWZ0LCBjb25zdCBwYWlyPF9UeTEsIF9UeTI+JiBfUmlnaHQpIHsN
CiAgICByZXR1cm4gIShfUmlnaHQgPCBfTGVmdCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkx
LCBjbGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNv
bnN0IHBhaXI8X1R5MSwgX1R5Mj4mIF9MZWZ0LCBjb25zdCBwYWlyPF9UeTEsIF9UeTI+JiBfUmln
aHQpIHsNCiAgICByZXR1cm4gIShfTGVmdCA8IF9SaWdodCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeT4NCnN0cnVjdCBfVW5yZWZ3cmFwX2hlbHBlciB7IA0KICAgIHVzaW5nIHR5cGUgPSBf
VHk7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9VbnJlZndyYXBfaGVscGVy
PHJlZmVyZW5jZV93cmFwcGVyPF9UeT4+IHsgDQogICAgdXNpbmcgdHlwZSA9IF9UeSY7DQp9Ow0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp1c2luZyBfVW5yZWZ3cmFwX3QgPSB0eXBlbmFtZSBf
VW5yZWZ3cmFwX2hlbHBlcjxkZWNheV90PF9UeT4+Ojp0eXBlOw0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHkxLCBjbGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcGFpcjxfVW5yZWZ3
cmFwX3Q8X1R5MT4sIF9VbnJlZndyYXBfdDxfVHkyPj4gbWFrZV9wYWlyKF9UeTEmJiBfVmFsMSwg
X1R5MiYmIF9WYWwyKSBub2V4Y2VwdCgNCiAgICBpc19ub3Rocm93X2NvbnN0cnVjdGlibGVfdjxf
VW5yZWZ3cmFwX3Q8X1R5MT4sIF9UeTE+JiYNCiAgICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3Rp
YmxlX3Y8X1VucmVmd3JhcF90PF9UeTI+LCBfVHkyPikgIHsNCiAgICANCiAgICB1c2luZyBfTXlw
YWlyID0gcGFpcjxfVW5yZWZ3cmFwX3Q8X1R5MT4sIF9VbnJlZndyYXBfdDxfVHkyPj47DQogICAg
cmV0dXJuIF9NeXBhaXIoOjpzdGQ6OiBmb3J3YXJkPF9UeTE+KF9WYWwxKSwgOjpzdGQ6OiBmb3J3
YXJkPF9UeTI+KF9WYWwyKSk7DQp9DQoNCm5hbWVzcGFjZSAgcmVsX29wcyB7DQogICAgdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCiAgICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
X1R5JiBfTGVmdCwgY29uc3QgX1R5JiBfUmlnaHQpIHsNCiAgICAgICAgcmV0dXJuICEoX0xlZnQg
PT0gX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KICAgICBbW25v
ZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I+KGNvbnN0IF9UeSYgX0xlZnQsIGNvbnN0IF9UeSYgX1Jp
Z2h0KSB7DQogICAgICAgIHJldHVybiBfUmlnaHQgPCBfTGVmdDsNCiAgICB9DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Pg0KICAgICBbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8PShjb25z
dCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkmIF9SaWdodCkgew0KICAgICAgICByZXR1cm4gIShfUmln
aHQgPCBfTGVmdCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeT4NCiAgICAgW1tu
b2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPj0oY29uc3QgX1R5JiBfTGVmdCwgY29uc3QgX1R5JiBf
UmlnaHQpIHsNCiAgICAgICAgcmV0dXJuICEoX0xlZnQgPCBfUmlnaHQpOw0KICAgIH0NCn0gDQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UdXBsZT4NCnN0cnVjdCB0dXBsZV9zaXplOw0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R1cGxlLCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX1R1cGxlX3NpemVfc2ZpbmFl
IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UdXBsZT4NCnN0cnVjdCBfVHVwbGVfc2l6ZV9zZmlu
YWU8X1R1cGxlLCB2b2lkX3Q8ZGVjbHR5cGUodHVwbGVfc2l6ZTxfVHVwbGU+Ojp2YWx1ZSk+Pg0K
ICAgIDogaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCB0dXBsZV9zaXplPF9UdXBsZT46OnZhbHVl
PiB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHVwbGU+DQpzdHJ1Y3QgdHVwbGVfc2l6ZTxjb25z
dCBfVHVwbGU+IDogX1R1cGxlX3NpemVfc2ZpbmFlPF9UdXBsZT4ge307IA0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R1cGxlPg0Kc3RydWN0ICB0dXBsZV9zaXplPHZvbGF0aWxlIF9UdXBsZT4gOiBfVHVw
bGVfc2l6ZV9zZmluYWU8X1R1cGxlPiB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHVwbGU+DQpz
dHJ1Y3QgIHR1cGxlX3NpemU8Y29uc3Qgdm9sYXRpbGUgX1R1cGxlPiA6IF9UdXBsZV9zaXplX3Nm
aW5hZTxfVHVwbGU+IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4
cHIgc2l6ZV90IHR1cGxlX3NpemVfdiA9IHR1cGxlX3NpemU8X1R5Pjo6dmFsdWU7DQoNCnRlbXBs
YXRlIDxzaXplX3QgX0luZGV4LCBjbGFzcyBfVHVwbGU+DQpzdHJ1Y3QgdHVwbGVfZWxlbWVudDsN
Cg0KdGVtcGxhdGUgPHNpemVfdCBfSW5kZXgsIGNsYXNzIF9UdXBsZT4NCnN0cnVjdCBbW21zdmM6
Omtub3duX3NlbWFudGljc11dIHR1cGxlX2VsZW1lbnQ8X0luZGV4LCBjb25zdCBfVHVwbGU+IDog
dHVwbGVfZWxlbWVudDxfSW5kZXgsIF9UdXBsZT4gew0KICAgIHVzaW5nIF9NeWJhc2UgPSB0dXBs
ZV9lbGVtZW50PF9JbmRleCwgX1R1cGxlPjsNCiAgICB1c2luZyB0eXBlICAgID0gYWRkX2NvbnN0
X3Q8dHlwZW5hbWUgX015YmFzZTo6dHlwZT47DQp9Ow0KDQp0ZW1wbGF0ZSA8c2l6ZV90IF9JbmRl
eCwgY2xhc3MgX1R1cGxlPg0Kc3RydWN0ICBbW21zdmM6Omtub3duX3NlbWFudGljc11dIHR1cGxl
X2VsZW1lbnQ8X0luZGV4LCB2b2xhdGlsZSBfVHVwbGU+DQogICAgOiB0dXBsZV9lbGVtZW50PF9J
bmRleCwgX1R1cGxlPiB7DQogICAgdXNpbmcgX015YmFzZSA9IHR1cGxlX2VsZW1lbnQ8X0luZGV4
LCBfVHVwbGU+Ow0KICAgIHVzaW5nIHR5cGUgICAgPSBhZGRfdm9sYXRpbGVfdDx0eXBlbmFtZSBf
TXliYXNlOjp0eXBlPjsNCn07DQoNCnRlbXBsYXRlIDxzaXplX3QgX0luZGV4LCBjbGFzcyBfVHVw
bGU+DQpzdHJ1Y3QgIFtbbXN2Yzo6a25vd25fc2VtYW50aWNzXV0gdHVwbGVfZWxlbWVudDxfSW5k
ZXgsIGNvbnN0IHZvbGF0aWxlIF9UdXBsZT4NCiAgICA6IHR1cGxlX2VsZW1lbnQ8X0luZGV4LCBf
VHVwbGU+IHsNCiAgICB1c2luZyBfTXliYXNlID0gdHVwbGVfZWxlbWVudDxfSW5kZXgsIF9UdXBs
ZT47DQogICAgdXNpbmcgdHlwZSAgICA9IGFkZF9jdl90PHR5cGVuYW1lIF9NeWJhc2U6OnR5cGU+
Ow0KfTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfSW5kZXgsIGNsYXNzIF9UdXBsZT4NCnVzaW5nIHR1
cGxlX2VsZW1lbnRfdCA9IHR5cGVuYW1lIHR1cGxlX2VsZW1lbnQ8X0luZGV4LCBfVHVwbGU+Ojp0
eXBlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCmNsYXNzIGFycmF5
Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBzaXplX3QgX1NpemU+DQpzdHJ1Y3QgdHVwbGVfc2l6
ZTxhcnJheTxfVHksIF9TaXplPj4gOiBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIF9TaXplPiB7
fTsgDQoNCnRlbXBsYXRlIDxzaXplX3QgX0lkeCwgY2xhc3MgX1R5LCBzaXplX3QgX1NpemU+DQpz
dHJ1Y3QgW1ttc3ZjOjprbm93bl9zZW1hbnRpY3NdXSB0dXBsZV9lbGVtZW50PF9JZHgsIGFycmF5
PF9UeSwgX1NpemU+PiB7DQogICAgc3RhdGljX2Fzc2VydChfSWR4IDwgX1NpemUsICJhcnJheSBp
bmRleCBvdXQgb2YgYm91bmRzIik7DQoNCiAgICB1c2luZyB0eXBlID0gX1R5Ow0KfTsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R5cGVzPg0Kc3RydWN0IHR1cGxlX3NpemU8dHVwbGU8X1R5cGVz
Li4uPj4gOiBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIHNpemVvZi4uLihfVHlwZXMpPiB7fTsg
DQoNCnRlbXBsYXRlIDxzaXplX3QgX0luZGV4Pg0Kc3RydWN0IFtbbXN2Yzo6a25vd25fc2VtYW50
aWNzXV0gdHVwbGVfZWxlbWVudDxfSW5kZXgsIHR1cGxlPD4+IHsgDQogICAgc3RhdGljX2Fzc2Vy
dChfQWx3YXlzX2ZhbHNlPGludGVncmFsX2NvbnN0YW50PHNpemVfdCwgX0luZGV4Pj4sICJ0dXBs
ZSBpbmRleCBvdXQgb2YgYm91bmRzIik7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RoaXMsIGNs
YXNzLi4uIF9SZXN0Pg0Kc3RydWN0IFtbbXN2Yzo6a25vd25fc2VtYW50aWNzXV0gdHVwbGVfZWxl
bWVudDwwLCB0dXBsZTxfVGhpcywgX1Jlc3QuLi4+PiB7IA0KICAgIHVzaW5nIHR5cGUgPSBfVGhp
czsNCiAgICANCiAgICB1c2luZyBfVHR5cGUgPSB0dXBsZTxfVGhpcywgX1Jlc3QuLi4+Ow0KfTsN
Cg0KdGVtcGxhdGUgPHNpemVfdCBfSW5kZXgsIGNsYXNzIF9UaGlzLCBjbGFzcy4uLiBfUmVzdD4N
CnN0cnVjdCBbW21zdmM6Omtub3duX3NlbWFudGljc11dIHR1cGxlX2VsZW1lbnQ8X0luZGV4LCB0
dXBsZTxfVGhpcywgX1Jlc3QuLi4+Pg0KICAgIDogdHVwbGVfZWxlbWVudDxfSW5kZXggLSAxLCB0
dXBsZTxfUmVzdC4uLj4+IHt9OyANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5
Mj4NCnN0cnVjdCB0dXBsZV9zaXplPHBhaXI8X1R5MSwgX1R5Mj4+IDogaW50ZWdyYWxfY29uc3Rh
bnQ8c2l6ZV90LCAyPiB7fTsgDQoNCnRlbXBsYXRlIDxzaXplX3QgX0lkeCwgY2xhc3MgX1R5MSwg
Y2xhc3MgX1R5Mj4NCnN0cnVjdCBbW21zdmM6Omtub3duX3NlbWFudGljc11dIHR1cGxlX2VsZW1l
bnQ8X0lkeCwgcGFpcjxfVHkxLCBfVHkyPj4gew0KICAgIHN0YXRpY19hc3NlcnQoX0lkeCA8IDIs
ICJwYWlyIGluZGV4IG91dCBvZiBib3VuZHMiKTsNCg0KICAgIHVzaW5nIHR5cGUgPSBjb25kaXRp
b25hbF90PF9JZHggPT0gMCwgX1R5MSwgX1R5Mj47DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1BhaXI+DQpjb25zdGV4cHIgX1JldCBfUGFpcl9nZXQoX1BhaXImIF9QciwgaW50
ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCAwPikgbm9leGNlcHQgeyANCiAgICByZXR1cm4gX1ByLmZp
cnN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1BhaXI+DQpjb25zdGV4cHIg
X1JldCBfUGFpcl9nZXQoX1BhaXImIF9QciwgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCAxPikg
bm9leGNlcHQgeyANCiAgICByZXR1cm4gX1ByLnNlY29uZDsNCn0NCg0KdGVtcGxhdGUgPHNpemVf
dCBfSWR4LCBjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
dHVwbGVfZWxlbWVudF90PF9JZHgsIHBhaXI8X1R5MSwgX1R5Mj4+JiBnZXQoDQogICAgcGFpcjxf
VHkxLCBfVHkyPiYgX1ByKSBub2V4Y2VwdCB7IA0KICAgIHVzaW5nIF9SdHlwZSA9IHR1cGxlX2Vs
ZW1lbnRfdDxfSWR4LCBwYWlyPF9UeTEsIF9UeTI+PiY7DQogICAgcmV0dXJuIF9QYWlyX2dldDxf
UnR5cGU+KF9QciwgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBfSWR4Pnt9KTsNCn0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBf
VHkxJiBnZXQocGFpcjxfVHkxLCBfVHkyPiYgX1ByKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiA6
OnN0ZDo6IGdldDwwPihfUHIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MiwgY2xhc3MgX1R5
MT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeTImIGdldChwYWlyPF9UeTEsIF9UeTI+JiBf
UHIpIG5vZXhjZXB0IHsgDQogICAgcmV0dXJuIDo6c3RkOjogZ2V0PDE+KF9Qcik7DQp9DQoNCnRl
bXBsYXRlIDxzaXplX3QgX0lkeCwgY2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCltbbm9kaXNjYXJk
XV0gY29uc3RleHByIGNvbnN0IHR1cGxlX2VsZW1lbnRfdDxfSWR4LCBwYWlyPF9UeTEsIF9UeTI+
PiYgZ2V0KA0KICAgIGNvbnN0IHBhaXI8X1R5MSwgX1R5Mj4mIF9Qcikgbm9leGNlcHQgeyANCiAg
ICB1c2luZyBfQ3R5cGUgPSBjb25zdCB0dXBsZV9lbGVtZW50X3Q8X0lkeCwgcGFpcjxfVHkxLCBf
VHkyPj4mOw0KICAgIHJldHVybiBfUGFpcl9nZXQ8X0N0eXBlPihfUHIsIGludGVncmFsX2NvbnN0
YW50PHNpemVfdCwgX0lkeD57fSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBf
VHkyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3QgX1R5MSYgZ2V0KA0KICAgIGNvbnN0
IHBhaXI8X1R5MSwgX1R5Mj4mIF9Qcikgbm9leGNlcHQgeyANCiAgICByZXR1cm4gOjpzdGQ6OiBn
ZXQ8MD4oX1ByKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTIsIGNsYXNzIF9UeTE+DQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdCBfVHkyJiBnZXQoDQogICAgY29uc3QgcGFpcjxfVHkx
LCBfVHkyPiYgX1ByKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiA6OnN0ZDo6IGdldDwxPihfUHIp
Ow0KfQ0KDQp0ZW1wbGF0ZSA8c2l6ZV90IF9JZHgsIGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpb
W25vZGlzY2FyZF1dIGNvbnN0ZXhwciB0dXBsZV9lbGVtZW50X3Q8X0lkeCwgcGFpcjxfVHkxLCBf
VHkyPj4mJiBnZXQoDQogICAgcGFpcjxfVHkxLCBfVHkyPiYmIF9Qcikgbm9leGNlcHQgeyANCiAg
ICB1c2luZyBfUlJ0eXBlID0gdHVwbGVfZWxlbWVudF90PF9JZHgsIHBhaXI8X1R5MSwgX1R5Mj4+
JiY7DQogICAgcmV0dXJuIDo6c3RkOjogZm9yd2FyZDxfUlJ0eXBlPig6OnN0ZDo6IGdldDxfSWR4
PihfUHIpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBfVHkxJiYgZ2V0KHBhaXI8X1R5MSwgX1R5Mj4mJiBfUHIpIG5vZXhj
ZXB0IHsgDQogICAgcmV0dXJuIDo6c3RkOjogZ2V0PDA+KDo6c3RkOjogbW92ZShfUHIpKTsNCn0N
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeTIsIGNsYXNzIF9UeTE+DQpbW25vZGlzY2FyZF1dIGNvbnN0
ZXhwciBfVHkyJiYgZ2V0KHBhaXI8X1R5MSwgX1R5Mj4mJiBfUHIpIG5vZXhjZXB0IHsgDQogICAg
cmV0dXJuIDo6c3RkOjogZ2V0PDE+KDo6c3RkOjogbW92ZShfUHIpKTsNCn0NCg0KdGVtcGxhdGUg
PHNpemVfdCBfSWR4LCBjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBjb25z
dGV4cHIgY29uc3QgdHVwbGVfZWxlbWVudF90PF9JZHgsIHBhaXI8X1R5MSwgX1R5Mj4+JiYgZ2V0
KA0KICAgIGNvbnN0IHBhaXI8X1R5MSwgX1R5Mj4mJiBfUHIpIG5vZXhjZXB0IHsgDQogICAgdXNp
bmcgX1JSdHlwZSA9IGNvbnN0IHR1cGxlX2VsZW1lbnRfdDxfSWR4LCBwYWlyPF9UeTEsIF9UeTI+
PiYmOw0KICAgIHJldHVybiA6OnN0ZDo6IGZvcndhcmQ8X1JSdHlwZT4oOjpzdGQ6OiBnZXQ8X0lk
eD4oX1ByKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KW1tub2Rp
c2NhcmRdXSBjb25zdGV4cHIgY29uc3QgX1R5MSYmIGdldCgNCiAgICBjb25zdCBwYWlyPF9UeTEs
IF9UeTI+JiYgX1ByKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiA6OnN0ZDo6IGdldDwwPig6OnN0
ZDo6IG1vdmUoX1ByKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkyLCBjbGFzcyBfVHkxPg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3QgX1R5MiYmIGdldCgNCiAgICBjb25zdCBwYWly
PF9UeTEsIF9UeTI+JiYgX1ByKSBub2V4Y2VwdCB7IA0KICAgIHJldHVybiA6OnN0ZDo6IGdldDwx
Pig6OnN0ZDo6IG1vdmUoX1ByKSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3Mg
X090aGVyID0gX1R5Pg0KaW5saW5lIF9UeSBleGNoYW5nZShfVHkmIF9WYWwsIF9PdGhlciYmIF9O
ZXdfdmFsKSBub2V4Y2VwdCgNCiAgICBjb25qdW5jdGlvbl92PGlzX25vdGhyb3dfbW92ZV9jb25z
dHJ1Y3RpYmxlPF9UeT4sIGlzX25vdGhyb3dfYXNzaWduYWJsZTxfVHkmLCBfT3RoZXI+PikgIHsN
CiAgICANCiAgICBfVHkgX09sZF92YWwgPSBzdGF0aWNfY2FzdDxfVHkmJj4oX1ZhbCk7DQogICAg
X1ZhbCAgICAgICAgID0gc3RhdGljX2Nhc3Q8X090aGVyJiY+KF9OZXdfdmFsKTsNCiAgICByZXR1
cm4gX09sZF92YWw7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0g
Y29uc3RleHByIGFkZF9jb25zdF90PF9UeT4mIGFzX2NvbnN0KF9UeSYgX1ZhbCkgbm9leGNlcHQg
eyANCiAgICByZXR1cm4gX1ZhbDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnZvaWQgYXNf
Y29uc3QoY29uc3QgX1R5JiYpID0gZGVsZXRlOw0KDQoNCg0Kc3RydWN0IGluX3BsYWNlX3QgeyAN
CiAgICBleHBsaWNpdCBpbl9wbGFjZV90KCkgPSBkZWZhdWx0Ow0KfTsNCmlubGluZSBjb25zdGV4
cHIgaW5fcGxhY2VfdCBpbl9wbGFjZXt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3M+DQpzdHJ1Y3QgaW5f
cGxhY2VfdHlwZV90IHsgDQogICAgZXhwbGljaXQgaW5fcGxhY2VfdHlwZV90KCkgPSBkZWZhdWx0
Ow0KfTsNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGluX3BsYWNlX3R5
cGVfdDxfVHk+IGluX3BsYWNlX3R5cGV7fTsNCg0KdGVtcGxhdGUgPHNpemVfdD4NCnN0cnVjdCBp
bl9wbGFjZV9pbmRleF90IHsgDQogICAgZXhwbGljaXQgaW5fcGxhY2VfaW5kZXhfdCgpID0gZGVm
YXVsdDsNCn07DQp0ZW1wbGF0ZSA8c2l6ZV90IF9JZHg+DQppbmxpbmUgY29uc3RleHByIGluX3Bs
YWNlX2luZGV4X3Q8X0lkeD4gaW5fcGxhY2VfaW5kZXh7fTsNCiNsaW5lIDYzMyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1dGlsaXR5Ig0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc0
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1dGls
aXR5Ig0KDQoNCg0KDQoNCg0KDQojbGluZSA3NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXRpbGl0eSINCg0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJu
aW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSA3NjMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdXRpbGl0eSINCiNsaW5lIDc2NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1dGlsaXR5Ig0K
I2xpbmUgMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceHV0aWxpdHkiDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1
c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUx
NCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDgg
NDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCmV4dGVybiAiQyIgew0KDQoNCg0KDQoNCg0K
DQpfX2RlY2xzcGVjKG5vYWxpYXMpIHZvaWQgX19jZGVjbCBfX3N0ZF9yZXZlcnNlX3RyaXZpYWxs
eV9zd2FwcGFibGVfMSh2b2lkKiBfRmlyc3QsIHZvaWQqIF9MYXN0KSBub2V4Y2VwdDsNCl9fZGVj
bHNwZWMobm9hbGlhcykgdm9pZCBfX2NkZWNsIF9fc3RkX3JldmVyc2VfdHJpdmlhbGx5X3N3YXBw
YWJsZV8yKHZvaWQqIF9GaXJzdCwgdm9pZCogX0xhc3QpIG5vZXhjZXB0Ow0KX19kZWNsc3BlYyhu
b2FsaWFzKSB2b2lkIF9fY2RlY2wgX19zdGRfcmV2ZXJzZV90cml2aWFsbHlfc3dhcHBhYmxlXzQo
dm9pZCogX0ZpcnN0LCB2b2lkKiBfTGFzdCkgbm9leGNlcHQ7DQpfX2RlY2xzcGVjKG5vYWxpYXMp
IHZvaWQgX19jZGVjbCBfX3N0ZF9yZXZlcnNlX3RyaXZpYWxseV9zd2FwcGFibGVfOCh2b2lkKiBf
Rmlyc3QsIHZvaWQqIF9MYXN0KSBub2V4Y2VwdDsNCl9fZGVjbHNwZWMobm9hbGlhcykgdm9pZCBf
X2NkZWNsIF9fc3RkX3N3YXBfcmFuZ2VzX3RyaXZpYWxseV9zd2FwcGFibGVfbm9hbGlhcygNCiAg
ICB2b2lkKiBfRmlyc3QxLCB2b2lkKiBfTGFzdDEsIHZvaWQqIF9GaXJzdDIpIG5vZXhjZXB0Ow0K
fQ0KI2xpbmUgNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceHV0aWxpdHkiDQoNCm5hbWVzcGFjZSBzdGQgew0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
VG8sIGNsYXNzIF9Gcm9tLA0KICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8Ym9vbF9jb25z
dGFudDxzaXplb2YoX1RvKSA9PSBzaXplb2YoX0Zyb20pPiwgaXNfdHJpdmlhbGx5X2NvcHlhYmxl
PF9Ubz4sDQogICAgICAgICAgICAgICAgICAgIGlzX3RyaXZpYWxseV9jb3B5YWJsZTxfRnJvbT4+
LA0KICAgICAgICBpbnQ+ID0gMD4NCg0KDQoNCg0KDQoNCg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4
cHIgX1RvIF9CaXRfY2FzdChjb25zdCBfRnJvbSYgX1ZhbCkgbm9leGNlcHQgew0KICAgIHJldHVy
biBfX2J1aWx0aW5fYml0X2Nhc3QoX1RvLCBfVmFsKTsNCn0NCiNsaW5lIDY2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0dldF9maXJzdF9wYXJhbWV0ZXI7DQoNCnRlbXBs
YXRlIDx0ZW1wbGF0ZSA8Y2xhc3MsIGNsYXNzLi4uPiBjbGFzcyBfVHksIGNsYXNzIF9GaXJzdCwg
Y2xhc3MuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX0dldF9maXJzdF9wYXJhbWV0ZXI8X1R5PF9GaXJzdCwg
X1Jlc3QuLi4+PiB7IA0KICAgIHVzaW5nIHR5cGUgPSBfRmlyc3Q7DQp9Ow0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfTmV3Zmlyc3QsIGNsYXNzIF9UeT4NCnN0cnVjdCBfUmVwbGFjZV9maXJzdF9wYXJh
bWV0ZXI7DQoNCnRlbXBsYXRlIDxjbGFzcyBfTmV3Zmlyc3QsIHRlbXBsYXRlIDxjbGFzcywgY2xh
c3MuLi4+IGNsYXNzIF9UeSwgY2xhc3MgX0ZpcnN0LCBjbGFzcy4uLiBfUmVzdD4NCnN0cnVjdCBf
UmVwbGFjZV9maXJzdF9wYXJhbWV0ZXI8X05ld2ZpcnN0LCBfVHk8X0ZpcnN0LCBfUmVzdC4uLj4+
IHsgDQogICAgdXNpbmcgdHlwZSA9IF9UeTxfTmV3Zmlyc3QsIF9SZXN0Li4uPjsNCn07DQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgPSB2b2lkPg0Kc3RydWN0IF9HZXRfZWxlbWVudF90
eXBlIHsNCiAgICB1c2luZyB0eXBlID0gdHlwZW5hbWUgX0dldF9maXJzdF9wYXJhbWV0ZXI8X1R5
Pjo6dHlwZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0dldF9lbGVtZW50
X3R5cGU8X1R5LCB2b2lkX3Q8dHlwZW5hbWUgX1R5OjplbGVtZW50X3R5cGU+PiB7DQogICAgdXNp
bmcgdHlwZSA9IHR5cGVuYW1lIF9UeTo6ZWxlbWVudF90eXBlOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9wdHJfZGlmZmVyZW5jZV90eXBl
IHsNCiAgICB1c2luZyB0eXBlID0gcHRyZGlmZl90Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9U
eT4NCnN0cnVjdCBfR2V0X3B0cl9kaWZmZXJlbmNlX3R5cGU8X1R5LCB2b2lkX3Q8dHlwZW5hbWUg
X1R5OjpkaWZmZXJlbmNlX3R5cGU+PiB7DQogICAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIF9UeTo6
ZGlmZmVyZW5jZV90eXBlOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfT3Ro
ZXIsIGNsYXNzID0gdm9pZD4NCnN0cnVjdCBfR2V0X3JlYmluZF9hbGlhcyB7DQogICAgdXNpbmcg
dHlwZSA9IHR5cGVuYW1lIF9SZXBsYWNlX2ZpcnN0X3BhcmFtZXRlcjxfT3RoZXIsIF9UeT46OnR5
cGU7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfT3RoZXI+DQpzdHJ1Y3QgX0dl
dF9yZWJpbmRfYWxpYXM8X1R5LCBfT3RoZXIsIHZvaWRfdDx0eXBlbmFtZSBfVHk6OnRlbXBsYXRl
IHJlYmluZDxfT3RoZXI+Pj4gew0KICAgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBfVHk6OnRlbXBs
YXRlIHJlYmluZDxfT3RoZXI+Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0
IHBvaW50ZXJfdHJhaXRzIHsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSBfVHk7DQogICAg
dXNpbmcgZWxlbWVudF90eXBlICAgID0gdHlwZW5hbWUgX0dldF9lbGVtZW50X3R5cGU8X1R5Pjo6
dHlwZTsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBfR2V0X3B0cl9kaWZm
ZXJlbmNlX3R5cGU8X1R5Pjo6dHlwZTsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXI+DQog
ICAgdXNpbmcgcmViaW5kID0gdHlwZW5hbWUgX0dldF9yZWJpbmRfYWxpYXM8X1R5LCBfT3RoZXI+
Ojp0eXBlOw0KDQogICAgdXNpbmcgX1JlZnR5cGUgPSBjb25kaXRpb25hbF90PGlzX3ZvaWRfdjxl
bGVtZW50X3R5cGU+LCBjaGFyLCBlbGVtZW50X3R5cGU+JjsNCg0KICAgIFtbbm9kaXNjYXJkXV0g
c3RhdGljIHBvaW50ZXIgcG9pbnRlcl90byhfUmVmdHlwZSBfVmFsKSBub2V4Y2VwdChub2V4Y2Vw
dChfVHk6OnBvaW50ZXJfdG8oX1ZhbCkpKSAgew0KICAgICAgICByZXR1cm4gX1R5Ojpwb2ludGVy
X3RvKF9WYWwpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgcG9p
bnRlcl90cmFpdHM8X1R5Kj4gew0KICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICA9IF9UeSo7DQog
ICAgdXNpbmcgZWxlbWVudF90eXBlICAgID0gX1R5Ow0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlw
ZSA9IHB0cmRpZmZfdDsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXI+DQogICAgdXNpbmcg
cmViaW5kID0gX090aGVyKjsNCg0KICAgIHVzaW5nIF9SZWZ0eXBlID0gY29uZGl0aW9uYWxfdDxp
c192b2lkX3Y8X1R5PiwgY2hhciwgX1R5PiY7DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBp
bmxpbmUgcG9pbnRlciBwb2ludGVyX3RvKF9SZWZ0eXBlIF9WYWwpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIDo6c3RkOjogYWRkcmVzc29mKF9WYWwpOw0KICAgIH0NCn07DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9GeD4NCnN0cnVjdCBfUmVm
X2ZuIHsgDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzPg0KICAgIGNvbnN0ZXhwciBkZWNs
dHlwZShhdXRvKSBvcGVyYXRvcigpKF9BcmdzJiYuLi4gX1ZhbHMpIHsgDQogICAgICAgIHJldHVy
biBfRm4oOjpzdGQ6OiBmb3J3YXJkPF9BcmdzPihfVmFscykuLi4pOw0KICAgIH0NCg0KICAgIF9G
eCYgX0ZuOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gbj4NCmlubGluZSBjb25zdGV4cHIgYm9v
bA0KICAgIF9QYXNzX2Z1bmN0b3JfYnlfdmFsdWVfdiA9IHNpemVvZihfRm4pIDw9IHNpemVvZih2
b2lkKikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjb25qdW5jdGlvbl92PGlz
X3RyaXZpYWxseV9jb3B5X2NvbnN0cnVjdGlibGU8X0ZuPiwgaXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxfRm4+PjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9GbiwgZW5hYmxlX2lmX3Q8X1Bhc3NfZnVu
Y3Rvcl9ieV92YWx1ZV92PF9Gbj4sIGludD4gPSAwPiANCmNvbnN0ZXhwciBfRm4gX1Bhc3NfZm4o
X0ZuIF9WYWwpIHsgDQogICAgcmV0dXJuIF9WYWw7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRm4s
IGVuYWJsZV9pZl90PCFfUGFzc19mdW5jdG9yX2J5X3ZhbHVlX3Y8X0ZuPiwgaW50PiA9IDA+DQpj
b25zdGV4cHIgX1JlZl9mbjxfRm4+IF9QYXNzX2ZuKF9GbiYgX1ZhbCkgeyANCiAgICByZXR1cm4g
e19WYWx9Ow0KfQ0KDQoNCnN0cnVjdCBfVW51c2VkX3BhcmFtZXRlciB7IA0KICAgIGNvbnN0ZXhw
ciBfVW51c2VkX3BhcmFtZXRlcigpIG5vZXhjZXB0ID0gZGVmYXVsdDsNCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0KICAgIGNvbnN0ZXhwciBfVW51c2VkX3BhcmFtZXRlcihfVHkmJikgbm9leGNl
cHQge30NCn07DQoNCg0KdXNpbmcgX0FueV90YWcgPSBfVW51c2VkX3BhcmFtZXRlcjsgDQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeT4NCnVzaW5nIF9BbGdvcml0aG1faW50X3QgPSBjb25kaXRpb25h
bF90PGlzX2ludGVncmFsX3Y8X1R5PiwgX1R5LCBwdHJkaWZmX3Q+Ow0KDQoNCg0Kc3RydWN0IGlu
cHV0X2l0ZXJhdG9yX3RhZyB7fTsNCg0Kc3RydWN0IG91dHB1dF9pdGVyYXRvcl90YWcge307DQoN
CnN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyA6IGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsNCg0K
c3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIDogZm9yd2FyZF9pdGVyYXRvcl90YWcg
e307DQoNCnN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyA6IGJpZGlyZWN0aW9uYWxf
aXRlcmF0b3JfdGFnIHt9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcywgY2xhc3MgPSB2
b2lkPg0Kc3RydWN0IF9JdGVyYXRvcl90cmFpdHNfYmFzZSB7fTsgDQoNCnRlbXBsYXRlIDxjbGFz
cyBfSXRlcj4NCnN0cnVjdCBfSXRlcmF0b3JfdHJhaXRzX2Jhc2U8X0l0ZXIsDQogICAgdm9pZF90
PHR5cGVuYW1lIF9JdGVyOjppdGVyYXRvcl9jYXRlZ29yeSwgdHlwZW5hbWUgX0l0ZXI6OnZhbHVl
X3R5cGUsIHR5cGVuYW1lIF9JdGVyOjpkaWZmZXJlbmNlX3R5cGUsDQogICAgICAgIHR5cGVuYW1l
IF9JdGVyOjpwb2ludGVyLCB0eXBlbmFtZSBfSXRlcjo6cmVmZXJlbmNlPj4gew0KICAgIA0KICAg
IHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gdHlwZW5hbWUgX0l0ZXI6Oml0ZXJhdG9yX2NhdGVn
b3J5Ow0KICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgID0gdHlwZW5hbWUgX0l0ZXI6OnZhbHVl
X3R5cGU7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgPSB0eXBlbmFtZSBfSXRlcjo6ZGlm
ZmVyZW5jZV90eXBlOw0KICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgID0gdHlwZW5hbWUgX0l0
ZXI6OnBvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgPSB0eXBlbmFtZSBfSXRl
cjo6cmVmZXJlbmNlOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgYm9vbCA9IGlzX29iamVj
dF92PF9UeT4+DQpzdHJ1Y3QgX0l0ZXJhdG9yX3RyYWl0c19wb2ludGVyX2Jhc2UgeyANCiAgICB1
c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnOw0KICAg
IHVzaW5nIHZhbHVlX3R5cGUgICAgICAgID0gcmVtb3ZlX2N2X3Q8X1R5PjsNCiAgICB1c2luZyBk
aWZmZXJlbmNlX3R5cGUgICA9IHB0cmRpZmZfdDsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAg
ICA9IF9UeSo7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgPSBfVHkmOw0KfTsNCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfSXRlcmF0b3JfdHJhaXRzX3BvaW50ZXJfYmFzZTxf
VHksIGZhbHNlPiB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCnN0cnVjdCBpdGVyYXRv
cl90cmFpdHMgOiBfSXRlcmF0b3JfdHJhaXRzX2Jhc2U8X0l0ZXI+IHt9OyANCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8X1R5Kj4gOiBfSXRlcmF0b3JfdHJh
aXRzX3BvaW50ZXJfYmFzZTxfVHk+IHt9OyANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQp1
c2luZyBfSXRlcl9yZWZfdCA9IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnJlZmVy
ZW5jZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQp1c2luZyBfSXRlcl92YWx1ZV90ID0g
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6dmFsdWVfdHlwZTsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0l0ZXI+DQp1c2luZyBfSXRlcl9kaWZmX3QgPSB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGU7DQojbGluZSAxMTc0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRlbXBs
YXRlIDxjbGFzcy4uLiBfSXRlcnM+DQp1c2luZyBfQ29tbW9uX2RpZmZfdCA9IGNvbW1vbl90eXBl
X3Q8X0l0ZXJfZGlmZl90PF9JdGVycz4uLi4+Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4N
CnVzaW5nIF9JdGVyX2NhdF90ID0gdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRl
cmF0b3JfY2F0ZWdvcnk7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgPSB2b2lkPg0K
aW5saW5lIGNvbnN0ZXhwciBib29sIF9Jc19pdGVyYXRvcl92ID0gZmFsc2U7DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX0lzX2l0ZXJhdG9yX3Y8X1R5LCB2
b2lkX3Q8X0l0ZXJfY2F0X3Q8X1R5Pj4+ID0gdHJ1ZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
Pg0Kc3RydWN0IF9Jc19pdGVyYXRvciA6IGJvb2xfY29uc3RhbnQ8X0lzX2l0ZXJhdG9yX3Y8X1R5
Pj4ge307DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KaW5saW5lIGNvbnN0ZXhwciBib29s
IF9Jc19pbnB1dF9pdGVyX3YgPSBpc19jb252ZXJ0aWJsZV92PF9JdGVyX2NhdF90PF9JdGVyPiwg
aW5wdXRfaXRlcmF0b3JfdGFnPjsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQppbmxpbmUg
Y29uc3RleHByIGJvb2wgX0lzX2Z3ZF9pdGVyX3YgPSBpc19jb252ZXJ0aWJsZV92PF9JdGVyX2Nh
dF90PF9JdGVyPiwgZm9yd2FyZF9pdGVyYXRvcl90YWc+Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
SXRlcj4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNfYmlkaV9pdGVyX3YgPSBpc19jb252ZXJ0
aWJsZV92PF9JdGVyX2NhdF90PF9JdGVyPiwgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc+Ow0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNfcmFu
ZG9tX2l0ZXJfdiA9IGlzX2NvbnZlcnRpYmxlX3Y8X0l0ZXJfY2F0X3Q8X0l0ZXI+LCByYW5kb21f
YWNjZXNzX2l0ZXJhdG9yX3RhZz47DQoNCg0KdGVtcGxhdGUgPGNsYXNzLCBjbGFzcyA9IHZvaWQ+
DQpzdHJ1Y3QgX0lzX2NoZWNrZWRfaGVscGVyIHt9OyANCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MjIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1
dGlsaXR5Ig0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIsIGNsYXNzID0gdm9pZD4NCmlubGluZSBj
b25zdGV4cHIgYm9vbCBfQWxsb3dfaW5oZXJpdGluZ191bndyYXBfdiA9IHRydWU7DQoNCnRlbXBs
YXRlIDxjbGFzcyBfSXRlcj4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfQWxsb3dfaW5oZXJpdGlu
Z191bndyYXBfdjxfSXRlciwgdm9pZF90PHR5cGVuYW1lIF9JdGVyOjpfUHJldmVudF9pbmhlcml0
aW5nX3Vud3JhcD4+ID0NCiAgICBpc19zYW1lX3Y8X0l0ZXIsIHR5cGVuYW1lIF9JdGVyOjpfUHJl
dmVudF9pbmhlcml0aW5nX3Vud3JhcD47DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlciwgY2xhc3Mg
X1NlbnRpbmVsID0gX0l0ZXIsIGNsYXNzID0gdm9pZD4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBf
UmFuZ2VfdmVyaWZpYWJsZV92ID0gZmFsc2U7DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlciwgY2xh
c3MgX1NlbnRpbmVsPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9SYW5nZV92ZXJpZmlhYmxlX3Y8
X0l0ZXIsIF9TZW50aW5lbCwNCiAgICB2b2lkX3Q8ZGVjbHR5cGUoX1ZlcmlmeV9yYW5nZSg6OnN0
ZDo6IGRlY2x2YWw8Y29uc3QgX0l0ZXImPigpLCA6OnN0ZDo6IGRlY2x2YWw8Y29uc3QgX1NlbnRp
bmVsJj4oKSkpPj4gPQ0KICAgIF9BbGxvd19pbmhlcml0aW5nX3Vud3JhcF92PF9JdGVyPjsNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIsIGNsYXNzIF9TZW50aW5lbD4NCmNvbnN0ZXhwciB2b2lk
IF9BZGxfdmVyaWZ5X3JhbmdlKGNvbnN0IF9JdGVyJiBfRmlyc3QsIGNvbnN0IF9TZW50aW5lbCYg
X0xhc3QpIHsNCiAgICANCiAgICBpZiBjb25zdGV4cHIgKF9SYW5nZV92ZXJpZmlhYmxlX3Y8X0l0
ZXIsIF9TZW50aW5lbD4pIHsNCiAgICAgICAgX1ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsN
CiAgICB9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI2NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0
eSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIsIGNsYXNzID0gdm9pZD4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCBfVW53cmFwcGFibGVfdiA9IGZhbHNlOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0
ZXI+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1Vud3JhcHBhYmxlX3Y8X0l0ZXIsDQogICAgdm9p
ZF90PGRlY2x0eXBlKDo6c3RkOjogZGVjbHZhbDxfUmVtb3ZlX2N2cmVmX3Q8X0l0ZXI+Jj4oKS5f
U2Vla190byg6OnN0ZDo6IGRlY2x2YWw8X0l0ZXI+KCkuX1Vud3JhcHBlZCgpKSk+PiA9DQogICAg
X0FsbG93X2luaGVyaXRpbmdfdW53cmFwX3Y8X1JlbW92ZV9jdnJlZl90PF9JdGVyPj47DQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgZGVjbHR5cGUo
YXV0bykgX0dldF91bndyYXBwZWQoX0l0ZXImJiBfSXQpIHsNCiAgICANCiAgICBpZiBjb25zdGV4
cHIgKGlzX3BvaW50ZXJfdjxkZWNheV90PF9JdGVyPj4pIHsgDQogICAgICAgIHJldHVybiBfSXQg
KyAwOw0KICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKF9VbndyYXBwYWJsZV92PF9JdGVyPikgew0K
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X0l0ZXImJj4oX0l0KS5fVW53cmFwcGVkKCk7DQog
ICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9JdGVyJiY+KF9JdCk7DQog
ICAgfQ0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMDQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHki
DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCnVzaW5nIF9VbndyYXBwZWRfdCA9IF9SZW1vdmVf
Y3ZyZWZfdDxkZWNsdHlwZShfR2V0X3Vud3JhcHBlZCg6OnN0ZDo6IGRlY2x2YWw8X0l0ZXI+KCkp
KT47DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyLCBjbGFzcyA9IGJvb2w+DQppbmxpbmUgY29u
c3RleHByIGJvb2wgX0RvX3Vud3JhcF93aGVuX3VudmVyaWZpZWRfdiA9IGZhbHNlOw0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0l0ZXI+DQppbmxpbmUgY29uc3RleHByIGJvb2wNCiAgICBfRG9fdW53cmFw
X3doZW5fdW52ZXJpZmllZF92PF9JdGVyLCBkZWNsdHlwZShzdGF0aWNfY2FzdDxib29sPihfSXRl
cjo6X1Vud3JhcF93aGVuX3VudmVyaWZpZWQpKT4gPQ0KICAgICAgICBzdGF0aWNfY2FzdDxib29s
PihfSXRlcjo6X1Vud3JhcF93aGVuX3VudmVyaWZpZWQpOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0
ZXI+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1Vud3JhcHBhYmxlX2Zvcl91bnZlcmlmaWVkX3Yg
PQ0KICAgIF9VbndyYXBwYWJsZV92PF9JdGVyPiYmIF9Eb191bndyYXBfd2hlbl91bnZlcmlmaWVk
X3Y8X1JlbW92ZV9jdnJlZl90PF9JdGVyPj47DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgX0dldF91bndyYXBwZWRfdW52
ZXJpZmllZChfSXRlciYmIF9JdCkgew0KICAgIA0KICAgIGlmIGNvbnN0ZXhwciAoaXNfcG9pbnRl
cl92PGRlY2F5X3Q8X0l0ZXI+PikgeyANCiAgICAgICAgcmV0dXJuIF9JdCArIDA7DQogICAgfSBl
bHNlIGlmIGNvbnN0ZXhwciAoX1Vud3JhcHBhYmxlX2Zvcl91bnZlcmlmaWVkX3Y8X0l0ZXI+KSB7
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfSXRlciYmPihfSXQpLl9VbndyYXBwZWQoKTsN
CiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X0l0ZXImJj4oX0l0KTsN
CiAgICB9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM1MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0
eSINCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KdXNpbmcgX1Vud3JhcHBlZF91bnZlcmlmaWVk
X3QgPSBfUmVtb3ZlX2N2cmVmX3Q8ZGVjbHR5cGUoX0dldF91bndyYXBwZWRfdW52ZXJpZmllZCg6
OnN0ZDo6IGRlY2x2YWw8X0l0ZXI+KCkpKT47DQoNCg0Kc3RydWN0IF9EaXN0YW5jZV91bmtub3du
IHsNCiAgICBjb25zdGV4cHIgX0Rpc3RhbmNlX3Vua25vd24gb3BlcmF0b3ItKCkgY29uc3Qgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4ge307DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9EaWZmPg0KaW5saW5lIGNvbnN0ZXhwciBhdXRvIF9NYXhfcG9zc2libGVfdiA9IF9EaWZme3N0
YXRpY19jYXN0PG1ha2VfdW5zaWduZWRfdDxfRGlmZj4+KC0xKSA+PiAxfTsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9EaWZmPg0KaW5saW5lIGNvbnN0ZXhwciBhdXRvIF9NaW5fcG9zc2libGVfdiA9IF9E
aWZmey1fTWF4X3Bvc3NpYmxlX3Y8X0RpZmY+IC0gMX07DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRl
ciwgY2xhc3MgPSB2b2lkPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9PZmZzZXRfdmVyaWZpYWJs
ZV92ID0gZmFsc2U7DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCmlubGluZSBjb25zdGV4cHIg
Ym9vbA0KICAgIF9PZmZzZXRfdmVyaWZpYWJsZV92PF9JdGVyLCB2b2lkX3Q8ZGVjbHR5cGUoOjpz
dGQ6OiBkZWNsdmFsPGNvbnN0IF9JdGVyJj4oKS5fVmVyaWZ5X29mZnNldChfSXRlcl9kaWZmX3Q8
X0l0ZXI+e30pKT4+ID0NCiAgICAgICAgdHJ1ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0K
aW5saW5lIGNvbnN0ZXhwciBib29sIF9VbndyYXBwYWJsZV9mb3Jfb2Zmc2V0X3YgPQ0KICAgIF9V
bndyYXBwYWJsZV92PF9JdGVyPiYmIF9PZmZzZXRfdmVyaWZpYWJsZV92PF9SZW1vdmVfY3ZyZWZf
dDxfSXRlcj4+Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlciwgY2xhc3MgX0RpZmY+DQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBfR2V0X3Vud3JhcHBlZF9uKF9JdGVy
JiYgX0l0LCBjb25zdCBfRGlmZiBfT2ZmKSB7DQogICAgaWYgY29uc3RleHByIChpc19wb2ludGVy
X3Y8ZGVjYXlfdDxfSXRlcj4+KSB7DQogICAgICAgIHJldHVybiBfSXQgKyAwOw0KICAgIH0gZWxz
ZSBpZiBjb25zdGV4cHIgKF9VbndyYXBwYWJsZV9mb3Jfb2Zmc2V0X3Y8X0l0ZXI+ICYmIGlzX2lu
dGVncmFsX3Y8X0RpZmY+KSB7DQogICAgICAgIA0KICAgICAgICB1c2luZyBfSURpZmYgICAgID0g
X0l0ZXJfZGlmZl90PF9SZW1vdmVfY3ZyZWZfdDxfSXRlcj4+Ow0KICAgICAgICB1c2luZyBfQ0Rp
ZmYgICAgID0gY29tbW9uX3R5cGVfdDxfRGlmZiwgX0lEaWZmPjsNCiAgICAgICAgY29uc3QgYXV0
byBfQ09mZiA9IHN0YXRpY19jYXN0PF9DRGlmZj4oX09mZik7DQoNCiAgICAgICAgOw0KI2xpbmUg
MTM5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4
dXRpbGl0eSINCiAgICAgICAgKHZvaWQpIF9DT2ZmOw0KDQogICAgICAgIF9JdC5fVmVyaWZ5X29m
ZnNldChzdGF0aWNfY2FzdDxfSURpZmY+KF9PZmYpKTsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PF9JdGVyJiY+KF9JdCkuX1Vud3JhcHBlZCgpOw0KICAgIH0gZWxzZSBpZiBjb25zdGV4cHIg
KF9VbndyYXBwYWJsZV9mb3JfdW52ZXJpZmllZF92PF9JdGVyPikgew0KICAgICAgICANCiAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PF9JdGVyJiY+KF9JdCkuX1Vud3JhcHBlZCgpOw0KICAgIH0g
ZWxzZSB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X0l0ZXImJj4oX0l0
KTsNCiAgICB9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ0OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0K
dGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KdXNpbmcgX1Vud3JhcHBlZF9uX3QgPQ0KICAgIF9SZW1v
dmVfY3ZyZWZfdDxkZWNsdHlwZShfR2V0X3Vud3JhcHBlZF9uKDo6c3RkOjogZGVjbHZhbDxfSXRl
cj4oKSwgX0l0ZXJfZGlmZl90PF9SZW1vdmVfY3ZyZWZfdDxfSXRlcj4+e30pKT47DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9JdGVyLCBjbGFzcyBfVUl0ZXIsIGNsYXNzID0gdm9pZD4NCmlubGluZSBj
b25zdGV4cHIgYm9vbCBfV3JhcHBlZF9zZWVrYWJsZV92ID0gZmFsc2U7DQoNCnRlbXBsYXRlIDxj
bGFzcyBfSXRlciwgY2xhc3MgX1VJdGVyPg0KaW5saW5lIGNvbnN0ZXhwciBib29sDQogICAgX1dy
YXBwZWRfc2Vla2FibGVfdjxfSXRlciwgX1VJdGVyLCB2b2lkX3Q8ZGVjbHR5cGUoOjpzdGQ6OiBk
ZWNsdmFsPF9JdGVyJj4oKS5fU2Vla190byg6OnN0ZDo6IGRlY2x2YWw8X1VJdGVyPigpKSk+PiA9
DQogICAgICAgIHRydWU7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyLCBjbGFzcyBfVUl0ZXI+
DQpjb25zdGV4cHIgdm9pZCBfU2Vla193cmFwcGVkKF9JdGVyJiBfSXQsIF9VSXRlciYmIF9VSXQp
IHsNCiAgICBpZiBjb25zdGV4cHIgKF9XcmFwcGVkX3NlZWthYmxlX3Y8X0l0ZXIsIF9VSXRlcj4p
IHsNCiAgICAgICAgX0l0Ll9TZWVrX3RvKHN0YXRpY19jYXN0PF9VSXRlciYmPihfVUl0KSk7DQog
ICAgfSBlbHNlIHsNCiAgICAgICAgX0l0ID0gc3RhdGljX2Nhc3Q8X1VJdGVyJiY+KF9VSXQpOw0K
ICAgIH0NCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0ODcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0lzX2FsbG9j
YXRvciA6IGZhbHNlX3R5cGUge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9J
c19hbGxvY2F0b3I8X1R5LCB2b2lkX3Q8dHlwZW5hbWUgX1R5Ojp2YWx1ZV90eXBlLCBkZWNsdHlw
ZSg6OnN0ZDo6IGRlY2x2YWw8X1R5Jj4oKS5kZWFsbG9jYXRlKA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6OiBkZWNs
dmFsPF9UeSY+KCkuYWxsb2NhdGUoc2l6ZV90ezF9KSwgc2l6ZV90ezF9KSk+Pg0KICAgIDogdHJ1
ZV90eXBlIHt9OyANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQp1c2luZyBfR3VpZGVfa2V5
X3QgPSByZW1vdmVfY29uc3RfdDx0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2YWx1
ZV90eXBlOjpmaXJzdF90eXBlPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KdXNpbmcgX0d1
aWRlX3ZhbF90ID0gdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6dmFsdWVfdHlwZTo6
c2Vjb25kX3R5cGU7DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCnVzaW5nIF9HdWlkZV9wYWly
X3QgPSBwYWlyPGFkZF9jb25zdF90PHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZh
bHVlX3R5cGU6OmZpcnN0X3R5cGU+LA0KICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRl
cj46OnZhbHVlX3R5cGU6OnNlY29uZF90eXBlPjsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
c3RydWN0IGlzX2V4ZWN1dGlvbl9wb2xpY3kgOiBmYWxzZV90eXBlIHt9Ow0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2V4ZWN1dGlvbl9wb2xpY3lfdiA9
IGlzX2V4ZWN1dGlvbl9wb2xpY3k8X1R5Pjo6dmFsdWU7DQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfRXhQbz4NCnVzaW5nIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90ID0gdHlwZW5hbWUg
cmVtb3ZlX3JlZmVyZW5jZV90PF9FeFBvPjo6X1N0YW5kYXJkX2V4ZWN1dGlvbl9wb2xpY3k7DQoN
Cg0KDQoNCiNsaW5lIDE1MjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NoZWNrZWQsIGNs
YXNzIF9JdGVyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYXV0byBfSWRsX2Rpc3RhbmNlKGNv
bnN0IF9JdGVyJiBfRmlyc3QsIGNvbnN0IF9JdGVyJiBfTGFzdCkgew0KICAgIA0KICAgIGlmIGNv
bnN0ZXhwciAoX0lzX3JhbmRvbV9pdGVyX3Y8X0l0ZXI+KSB7DQogICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxfSXRlcl9kaWZmX3Q8X0NoZWNrZWQ+PihfTGFzdCAtIF9GaXJzdCk7DQogICAgfSBl
bHNlIHsNCiAgICAgICAgcmV0dXJuIF9EaXN0YW5jZV91bmtub3due307DQogICAgfQ0KfQ0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTU4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfRWxlbSwgYm9vbCBfSXNfZW51bSA9IGlzX2VudW1fdjxfRWxlbT4+DQpz
dHJ1Y3QgX1Vud3JhcF9lbnVtIHsgDQogICAgdXNpbmcgdHlwZSA9IHVuZGVybHlpbmdfdHlwZV90
PF9FbGVtPjsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbT4NCnN0cnVjdCBfVW53cmFwX2Vu
dW08X0VsZW0sIGZhbHNlPiB7IA0KICAgIHVzaW5nIHR5cGUgPSBfRWxlbTsNCn07DQoNCnRlbXBs
YXRlIDxjbGFzcyBfRWxlbT4NCnVzaW5nIF9VbndyYXBfZW51bV90ID0gdHlwZW5hbWUgX1Vud3Jh
cF9lbnVtPF9FbGVtPjo6dHlwZTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxNjgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
SXQsIGNsYXNzIF9EaWZmPg0KY29uc3RleHByIHZvaWQgYWR2YW5jZShfSW5JdCYgX1doZXJlLCBf
RGlmZiBfT2ZmKSB7IA0KICAgIGlmIGNvbnN0ZXhwciAoX0lzX3JhbmRvbV9pdGVyX3Y8X0luSXQ+
KSB7DQogICAgICAgIF9XaGVyZSArPSBfT2ZmOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGlmIGNv
bnN0ZXhwciAoaXNfc2lnbmVkX3Y8X0RpZmY+ICYmICFfSXNfYmlkaV9pdGVyX3Y8X0luSXQ+KSB7
DQogICAgICAgICAgICA7DQogICAgICAgIH0NCg0KICAgICAgICBkZWNsdHlwZShhdXRvKSBfVVdo
ZXJlICAgICAgPSBfR2V0X3Vud3JhcHBlZF9uKDo6c3RkOjogbW92ZShfV2hlcmUpLCBfT2ZmKTsN
CiAgICAgICAgY29uc3RleHByIGJvb2wgX05lZWRfcmV3cmFwID0gIWlzX3JlZmVyZW5jZV92PGRl
Y2x0eXBlKF9HZXRfdW53cmFwcGVkX24oOjpzdGQ6OiBtb3ZlKF9XaGVyZSksIF9PZmYpKT47DQoN
CiAgICAgICAgaWYgY29uc3RleHByIChpc19zaWduZWRfdjxfRGlmZj4gJiYgX0lzX2JpZGlfaXRl
cl92PF9Jbkl0Pikgew0KICAgICAgICAgICAgZm9yICg7IF9PZmYgPCAwOyArK19PZmYpIHsNCiAg
ICAgICAgICAgICAgICAtLV9VV2hlcmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAg
ICAgICBmb3IgKDsgMCA8IF9PZmY7IC0tX09mZikgew0KICAgICAgICAgICAgKytfVVdoZXJlOw0K
ICAgICAgICB9DQoNCiAgICAgICAgaWYgY29uc3RleHByIChfTmVlZF9yZXdyYXApIHsNCiAgICAg
ICAgICAgIF9TZWVrX3dyYXBwZWQoX1doZXJlLCA6OnN0ZDo6IG1vdmUoX1VXaGVyZSkpOw0KICAg
ICAgICB9DQogICAgfQ0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNzY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0Pg0KW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgX0l0ZXJfZGlmZl90PF9Jbkl0PiBkaXN0YW5jZShfSW5JdCBfRmlyc3Qs
IF9Jbkl0IF9MYXN0KSB7DQogICAgaWYgY29uc3RleHByIChfSXNfcmFuZG9tX2l0ZXJfdjxfSW5J
dD4pIHsNCiAgICAgICAgcmV0dXJuIF9MYXN0IC0gX0ZpcnN0OyANCiAgICB9IGVsc2Ugew0KICAg
ICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICAgICAgYXV0byBfVUZp
cnN0ICAgICAgICAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICAgICAgY29uc3Qg
YXV0byBfVUxhc3QgICAgICAgID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KICAgICAgICBfSXRl
cl9kaWZmX3Q8X0luSXQ+IF9PZmYgPSAwOw0KICAgICAgICBmb3IgKDsgX1VGaXJzdCAhPSBfVUxh
c3Q7ICsrX1VGaXJzdCkgew0KICAgICAgICAgICAgKytfT2ZmOw0KICAgICAgICB9DQoNCiAgICAg
ICAgcmV0dXJuIF9PZmY7DQogICAgfQ0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxODA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
SW5JdD4NCmNvbnN0ZXhwciBfSW5JdCBfTmV4dF9pdGVyKF9Jbkl0IF9GaXJzdCkgeyANCiAgICBy
ZXR1cm4gKytfRmlyc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0Pg0KW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgX0luSXQgbmV4dChfSW5JdCBfRmlyc3QsIF9JdGVyX2RpZmZfdDxfSW5J
dD4gX09mZiA9IDEpIHsgDQogICAgc3RhdGljX2Fzc2VydChfSXNfaW5wdXRfaXRlcl92PF9Jbkl0
PiwgIm5leHQgcmVxdWlyZXMgaW5wdXQgaXRlcmF0b3IiKTsNCg0KICAgIDo6c3RkOjogYWR2YW5j
ZShfRmlyc3QsIF9PZmYpOw0KICAgIHJldHVybiBfRmlyc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9CaWRJdD4NCmNvbnN0ZXhwciBfQmlkSXQgX1ByZXZfaXRlcihfQmlkSXQgX0ZpcnN0KSB7
IA0KICAgIHJldHVybiAtLV9GaXJzdDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0Pg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0JpZEl0IHByZXYoX0JpZEl0IF9GaXJzdCwgX0l0ZXJf
ZGlmZl90PF9CaWRJdD4gX09mZiA9IDEpIHsgDQogICAgc3RhdGljX2Fzc2VydChfSXNfYmlkaV9p
dGVyX3Y8X0JpZEl0PiwgInByZXYgcmVxdWlyZXMgYmlkaXJlY3Rpb25hbCBpdGVyYXRvciIpOw0K
DQogICAgOjpzdGQ6OiBhZHZhbmNlKF9GaXJzdCwgLV9PZmYpOw0KICAgIHJldHVybiBfRmlyc3Q7
DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxODUyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZEl0Pg0KY2xhc3MgcmV2ZXJzZV9pdGVyYXRvciB7DQpwdWJsaWM6DQogICAgdXNp
bmcgaXRlcmF0b3JfdHlwZSA9IF9CaWRJdDsNCg0KDQoNCg0KDQoNCg0KICAgIHVzaW5nIGl0ZXJh
dG9yX2NhdGVnb3J5ID0gX0l0ZXJfY2F0X3Q8X0JpZEl0PjsNCiNsaW5lIDE4NjYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQogICAg
dXNpbmcgdmFsdWVfdHlwZSAgICAgID0gX0l0ZXJfdmFsdWVfdDxfQmlkSXQ+Ow0KICAgIHVzaW5n
IGRpZmZlcmVuY2VfdHlwZSA9IF9JdGVyX2RpZmZfdDxfQmlkSXQ+Ow0KICAgIHVzaW5nIHBvaW50
ZXIgICAgICAgICA9IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkSXQ+Ojpwb2ludGVyOw0K
ICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICA9IF9JdGVyX3JlZl90PF9CaWRJdD47DQoNCiAgICB0
ZW1wbGF0ZSA8Y2xhc3M+DQogICAgZnJpZW5kIGNsYXNzIHJldmVyc2VfaXRlcmF0b3I7DQoNCiAg
ICBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvcigpID0gZGVmYXVsdDsNCg0KICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCByZXZlcnNlX2l0ZXJhdG9yKF9CaWRJdCBfUmlnaHQpIG5vZXhjZXB0KA0KICAg
ICAgICBpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZV92PF9CaWRJdD4pIA0KICAgICAgICA6
IGN1cnJlbnQoOjpzdGQ6OiBtb3ZlKF9SaWdodCkpIHt9DQoNCiAgICANCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX090aGVyPg0KDQoNCg0KDQogICAgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IoY29u
c3QgcmV2ZXJzZV9pdGVyYXRvcjxfT3RoZXI+JiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICBp
c19ub3Rocm93X2NvbnN0cnVjdGlibGVfdjxfQmlkSXQsIGNvbnN0IF9PdGhlciY+KSANCiAgICAg
ICAgOiBjdXJyZW50KF9SaWdodC5jdXJyZW50KSB7fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9P
dGhlcj4NCg0KDQoNCg0KDQogICAgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3ImIG9wZXJhdG9y
PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9PdGhlcj4mIF9SaWdodCkgew0KICAgICAgICBjdXJy
ZW50ID0gX1JpZ2h0LmN1cnJlbnQ7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQogICAg
DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfQmlkSXQgYmFzZSgpIGNvbnN0IHsNCiAg
ICAgICAgcmV0dXJuIGN1cnJlbnQ7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4
cHIgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsNCiAgICAgICAgX0JpZEl0IF9UbXAgPSBj
dXJyZW50Ow0KICAgICAgICByZXR1cm4gKi0tX1RtcDsNCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcG9pbnRlciBvcGVyYXRv
ci0+KCkgY29uc3Qgew0KICAgICAgICBfQmlkSXQgX1RtcCA9IGN1cnJlbnQ7DQogICAgICAgIC0t
X1RtcDsNCg0KICAgICAgICBpZiBjb25zdGV4cHIgKGlzX3BvaW50ZXJfdjxfQmlkSXQ+KSB7DQog
ICAgICAgICAgICByZXR1cm4gX1RtcDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJl
dHVybiBfVG1wLm9wZXJhdG9yLT4oKTsNCiAgICAgICAgfQ0KDQoNCiNsaW5lIDE5MzcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQog
ICAgfQ0KI2xpbmUgMTkzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KICAgIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yJiBv
cGVyYXRvcisrKCkgew0KICAgICAgICAtLWN1cnJlbnQ7DQogICAgICAgIHJldHVybiAqdGhpczsN
CiAgICB9DQoNCiAgICBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciBvcGVyYXRvcisrKGludCkg
ew0KICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgLS1jdXJy
ZW50Ow0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgcmV2ZXJz
ZV9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsNCiAgICAgICAgKytjdXJyZW50Ow0KICAgICAgICBy
ZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3Igb3Bl
cmF0b3ItLShpbnQpIHsNCiAgICAgICAgcmV2ZXJzZV9pdGVyYXRvciBfVG1wID0gKnRoaXM7DQog
ICAgICAgICsrY3VycmVudDsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciBvcGVyYXRvcisoY29uc3QgZGlm
ZmVyZW5jZV90eXBlIF9PZmYpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0
b3IoY3VycmVudCAtIF9PZmYpOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJh
dG9yJiBvcGVyYXRvcis9KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSB7DQogICAgICAgIGN1
cnJlbnQgLT0gX09mZjsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3Igb3BlcmF0b3ItKGNvbnN0IGRpZmZl
cmVuY2VfdHlwZSBfT2ZmKSBjb25zdCB7DQogICAgICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9y
KGN1cnJlbnQgKyBfT2ZmKTsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRv
ciYgb3BlcmF0b3ItPShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgew0KICAgICAgICBjdXJy
ZW50ICs9IF9PZmY7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3JbXShjb25zdCBkaWZmZXJlbmNlX3R5
cGUgX09mZikgY29uc3Qgew0KICAgICAgICByZXR1cm4gY3VycmVudFtzdGF0aWNfY2FzdDxkaWZm
ZXJlbmNlX3R5cGU+KC1fT2ZmIC0gMSldOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiAgICB1c2luZyBfUHJldmVudF9pbmhlcml0aW5nX3Vud3JhcCA9
IHJldmVyc2VfaXRlcmF0b3I7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0MiwgZW5hYmxl
X2lmX3Q8X1JhbmdlX3ZlcmlmaWFibGVfdjxfQmlkSXQsIF9CaWRJdDI+LCBpbnQ+ID0gMD4NCiAg
ICBmcmllbmQgY29uc3RleHByIHZvaWQgX1ZlcmlmeV9yYW5nZShjb25zdCByZXZlcnNlX2l0ZXJh
dG9yJiBfRmlyc3QsIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0JpZEl0Mj4mIF9MYXN0KSB7DQog
ICAgICAgIF9WZXJpZnlfcmFuZ2UoX0xhc3QuX0dldF9jdXJyZW50KCksIF9GaXJzdC5jdXJyZW50
KTsgDQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9CaWRJdDIgPSBfQmlkSXQsIGVuYWJs
ZV9pZl90PF9PZmZzZXRfdmVyaWZpYWJsZV92PF9CaWRJdDI+LCBpbnQ+ID0gMD4NCiAgICBjb25z
dGV4cHIgdm9pZCBfVmVyaWZ5X29mZnNldChjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgY29u
c3Qgew0KICAgICAgICBkbyB7IGlmIChfT2ZmICE9IF9NaW5fcG9zc2libGVfdjxkaWZmZXJlbmNl
X3R5cGU+KSB7IH0gZWxzZSB7IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFtZXRlcl9ub2luZm9fbm9y
ZXR1cm4oKTsgfSB3aGlsZSAoZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICBj
dXJyZW50Ll9WZXJpZnlfb2Zmc2V0KC1fT2ZmKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX0JpZEl0MiA9IF9CaWRJdCwgZW5hYmxlX2lmX3Q8X1Vud3JhcHBhYmxlX3Y8Y29uc3QgX0Jp
ZEl0MiY+LCBpbnQ+ID0gMD4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciByZXZlcnNlX2l0
ZXJhdG9yPF9VbndyYXBwZWRfdDxjb25zdCBfQmlkSXQyJj4+IF9VbndyYXBwZWQoKSBjb25zdCB7
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxyZXZlcnNlX2l0ZXJhdG9yPF9VbndyYXBwZWRf
dDxjb25zdCBfQmlkSXQyJj4+PihjdXJyZW50Ll9VbndyYXBwZWQoKSk7DQogICAgfQ0KDQogICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIF9VbndyYXBfd2hlbl91bnZlcmlmaWVkID0gX0RvX3Vud3Jh
cF93aGVuX3VudmVyaWZpZWRfdjxfQmlkSXQ+Ow0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9TcmMs
IGVuYWJsZV9pZl90PF9XcmFwcGVkX3NlZWthYmxlX3Y8X0JpZEl0LCBjb25zdCBfU3JjJj4sIGlu
dD4gPSAwPg0KICAgIGNvbnN0ZXhwciB2b2lkIF9TZWVrX3RvKGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X1NyYz4mIF9JdCkgew0KICAgICAgICBjdXJyZW50Ll9TZWVrX3RvKF9JdC5jdXJyZW50KTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdCBfQmlkSXQmIF9HZXRf
Y3VycmVudCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7DQogICAg
fQ0KDQpwcm90ZWN0ZWQ6DQogICAgX0JpZEl0IGN1cnJlbnR7fTsNCn07DQoNCg0KDQoNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0MSwgY2xhc3MgX0JpZEl0Mj4NCltbbm9kaXNjYXJkXV0gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9CaWRJdDE+JiBf
TGVmdCwgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkSXQyPiYgX1JpZ2h0KQ0KDQoNCg0KDQoN
Cg0KDQp7IHJldHVybiBfTGVmdC5fR2V0X2N1cnJlbnQoKSA9PSBfUmlnaHQuX0dldF9jdXJyZW50
KCk7IH0NCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdDEsIGNsYXNzIF9CaWRJdDI+DQpbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf
QmlkSXQxPiYgX0xlZnQsIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0JpZEl0Mj4mIF9SaWdodCkN
Cg0KDQoNCg0KDQoNCg0KeyByZXR1cm4gX0xlZnQuX0dldF9jdXJyZW50KCkgIT0gX1JpZ2h0Ll9H
ZXRfY3VycmVudCgpOyB9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQxLCBjbGFzcyBfQmlkSXQy
Pg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgcmV2ZXJzZV9p
dGVyYXRvcjxfQmlkSXQxPiYgX0xlZnQsIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0JpZEl0Mj4m
IF9SaWdodCkNCg0KDQoNCg0KDQoNCg0KeyByZXR1cm4gX0xlZnQuX0dldF9jdXJyZW50KCkgPiBf
UmlnaHQuX0dldF9jdXJyZW50KCk7IH0NCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdDEsIGNsYXNz
IF9CaWRJdDI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBy
ZXZlcnNlX2l0ZXJhdG9yPF9CaWRJdDE+JiBfTGVmdCwgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf
QmlkSXQyPiYgX1JpZ2h0KQ0KDQoNCg0KDQoNCg0KDQp7IHJldHVybiBfTGVmdC5fR2V0X2N1cnJl
bnQoKSA8IF9SaWdodC5fR2V0X2N1cnJlbnQoKTsgfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0
MSwgY2xhc3MgX0JpZEl0Mj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9CaWRJdDE+JiBfTGVmdCwgY29uc3QgcmV2ZXJzZV9p
dGVyYXRvcjxfQmlkSXQyPiYgX1JpZ2h0KQ0KDQoNCg0KDQoNCg0KDQp7IHJldHVybiBfTGVmdC5f
R2V0X2N1cnJlbnQoKSA+PSBfUmlnaHQuX0dldF9jdXJyZW50KCk7IH0NCg0KdGVtcGxhdGUgPGNs
YXNzIF9CaWRJdDEsIGNsYXNzIF9CaWRJdDI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPj0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkSXQxPiYgX0xlZnQsIGNvbnN0
IHJldmVyc2VfaXRlcmF0b3I8X0JpZEl0Mj4mIF9SaWdodCkNCg0KDQoNCg0KDQoNCg0KeyByZXR1
cm4gX0xlZnQuX0dldF9jdXJyZW50KCkgPD0gX1JpZ2h0Ll9HZXRfY3VycmVudCgpOyB9DQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIxMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQxLCBjbGFz
cyBfQmlkSXQyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYXV0byBvcGVyYXRvci0oY29uc3Qg
cmV2ZXJzZV9pdGVyYXRvcjxfQmlkSXQxPiYgX0xlZnQsIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8
X0JpZEl0Mj4mIF9SaWdodCkNCiAgICAtPiBkZWNsdHlwZShfUmlnaHQuX0dldF9jdXJyZW50KCkg
LSBfTGVmdC5fR2V0X2N1cnJlbnQoKSkgew0KICAgIHJldHVybiBfUmlnaHQuX0dldF9jdXJyZW50
KCkgLSBfTGVmdC5fR2V0X2N1cnJlbnQoKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdD4N
Cltbbm9kaXNjYXJkXV0gY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3I8X0JpZEl0PiBvcGVyYXRv
cisoDQogICAgdHlwZW5hbWUgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkSXQ+OjpkaWZmZXJlbmNlX3R5
cGUgX09mZiwgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkSXQ+JiBfUmlnaHQpIHsNCiAgICBy
ZXR1cm4gX1JpZ2h0ICsgX09mZjsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0Pg0KW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvcjxfQmlkSXQ+IG1ha2VfcmV2ZXJz
ZV9pdGVyYXRvcihfQmlkSXQgX0l0ZXIpIG5vZXhjZXB0KA0KICAgIGlzX25vdGhyb3dfbW92ZV9j
b25zdHJ1Y3RpYmxlX3Y8X0JpZEl0PikgIHsNCiAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcjxf
QmlkSXQ+KDo6c3RkOjogbW92ZShfSXRlcikpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGF1dG8gYmVn
aW4oX0NvbnRhaW5lciYgX0NvbnQpIC0+IGRlY2x0eXBlKF9Db250LmJlZ2luKCkpIHsNCiAgICBy
ZXR1cm4gX0NvbnQuYmVnaW4oKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+DQpb
W25vZGlzY2FyZF1dIGNvbnN0ZXhwciBhdXRvIGJlZ2luKGNvbnN0IF9Db250YWluZXImIF9Db250
KSAtPiBkZWNsdHlwZShfQ29udC5iZWdpbigpKSB7DQogICAgcmV0dXJuIF9Db250LmJlZ2luKCk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4
cHIgYXV0byBlbmQoX0NvbnRhaW5lciYgX0NvbnQpIC0+IGRlY2x0eXBlKF9Db250LmVuZCgpKSB7
DQogICAgcmV0dXJuIF9Db250LmVuZCgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5l
cj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGF1dG8gZW5kKGNvbnN0IF9Db250YWluZXImIF9D
b250KSAtPiBkZWNsdHlwZShfQ29udC5lbmQoKSkgew0KICAgIHJldHVybiBfQ29udC5lbmQoKTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgc2l6ZV90IF9TaXplPg0KW1tub2Rpc2NhcmRdXSBj
b25zdGV4cHIgX1R5KiBiZWdpbihfVHkgKCZfQXJyYXkpW19TaXplXSkgbm9leGNlcHQgew0KICAg
IHJldHVybiBfQXJyYXk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBfU2l6ZT4N
Cltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeSogZW5kKF9UeSAoJl9BcnJheSlbX1NpemVdKSBu
b2V4Y2VwdCB7DQogICAgcmV0dXJuIF9BcnJheSArIF9TaXplOw0KfQ0KDQoNCnRlbXBsYXRlIDxj
bGFzcyBfQ29udGFpbmVyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYXV0byBjYmVnaW4oY29u
c3QgX0NvbnRhaW5lciYgX0NvbnQpIG5vZXhjZXB0KG5vZXhjZXB0KDo6c3RkOjogYmVnaW4oX0Nv
bnQpKSkNCiAgICAtPiBkZWNsdHlwZSg6OnN0ZDo6IGJlZ2luKF9Db250KSkgew0KICAgIHJldHVy
biA6OnN0ZDo6IGJlZ2luKF9Db250KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+
DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBhdXRvIGNlbmQoY29uc3QgX0NvbnRhaW5lciYgX0Nv
bnQpIG5vZXhjZXB0KG5vZXhjZXB0KDo6c3RkOjogZW5kKF9Db250KSkpDQogICAgLT4gZGVjbHR5
cGUoOjpzdGQ6OiBlbmQoX0NvbnQpKSB7DQogICAgcmV0dXJuIDo6c3RkOjogZW5kKF9Db250KTsN
Cn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4NCltbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIGF1dG8gcmJlZ2luKF9Db250YWluZXImIF9Db250KSAtPiBkZWNsdHlwZShfQ29udC5yYmVn
aW4oKSkgew0KICAgIHJldHVybiBfQ29udC5yYmVnaW4oKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
IF9Db250YWluZXI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBhdXRvIHJiZWdpbihjb25zdCBf
Q29udGFpbmVyJiBfQ29udCkgLT4gZGVjbHR5cGUoX0NvbnQucmJlZ2luKCkpIHsNCiAgICByZXR1
cm4gX0NvbnQucmJlZ2luKCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPg0KW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgYXV0byByZW5kKF9Db250YWluZXImIF9Db250KSAtPiBkZWNs
dHlwZShfQ29udC5yZW5kKCkpIHsNCiAgICByZXR1cm4gX0NvbnQucmVuZCgpOw0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGF1dG8gcmVu
ZChjb25zdCBfQ29udGFpbmVyJiBfQ29udCkgLT4gZGVjbHR5cGUoX0NvbnQucmVuZCgpKSB7DQog
ICAgcmV0dXJuIF9Db250LnJlbmQoKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgc2l6ZV90
IF9TaXplPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvcjxfVHkqPiBy
YmVnaW4oX1R5ICgmX0FycmF5KVtfU2l6ZV0pIHsNCiAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRv
cjxfVHkqPihfQXJyYXkgKyBfU2l6ZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVf
dCBfU2l6ZT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3I8X1R5Kj4g
cmVuZChfVHkgKCZfQXJyYXkpW19TaXplXSkgew0KICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9y
PF9UeSo+KF9BcnJheSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbT4NCltbbm9kaXNjYXJk
XV0gY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3I8Y29uc3QgX0VsZW0qPiByYmVnaW4oaW5pdGlh
bGl6ZXJfbGlzdDxfRWxlbT4gX0lsaXN0KSB7DQogICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3I8
Y29uc3QgX0VsZW0qPihfSWxpc3QuZW5kKCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0+
DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IF9FbGVtKj4g
cmVuZChpbml0aWFsaXplcl9saXN0PF9FbGVtPiBfSWxpc3QpIHsNCiAgICByZXR1cm4gcmV2ZXJz
ZV9pdGVyYXRvcjxjb25zdCBfRWxlbSo+KF9JbGlzdC5iZWdpbigpKTsNCn0NCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0NvbnRhaW5lcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGF1dG8gY3JiZWdp
bihjb25zdCBfQ29udGFpbmVyJiBfQ29udCkgLT4gZGVjbHR5cGUoOjpzdGQ6OiByYmVnaW4oX0Nv
bnQpKSB7DQogICAgcmV0dXJuIDo6c3RkOjogcmJlZ2luKF9Db250KTsNCn0NCg0KdGVtcGxhdGUg
PGNsYXNzIF9Db250YWluZXI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBhdXRvIGNyZW5kKGNv
bnN0IF9Db250YWluZXImIF9Db250KSAtPiBkZWNsdHlwZSg6OnN0ZDo6IHJlbmQoX0NvbnQpKSB7
DQogICAgcmV0dXJuIDo6c3RkOjogcmVuZChfQ29udCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBf
Q29udGFpbmVyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYXV0byBzaXplKGNvbnN0IF9Db250
YWluZXImIF9Db250KSAtPiBkZWNsdHlwZShfQ29udC5zaXplKCkpIHsNCiAgICByZXR1cm4gX0Nv
bnQuc2l6ZSgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBzaXplX3QgX1NpemU+DQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZShjb25zdCBfVHkgKCYpW19TaXplXSkgbm9l
eGNlcHQgew0KICAgIHJldHVybiBfU2l6ZTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAyMjYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHh1dGlsaXR5Ig0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4NCltbbm9kaXNj
YXJkXV0gY29uc3RleHByIGF1dG8gZW1wdHkoY29uc3QgX0NvbnRhaW5lciYgX0NvbnQpIC0+IGRl
Y2x0eXBlKF9Db250LmVtcHR5KCkpIHsNCiAgICByZXR1cm4gX0NvbnQuZW1wdHkoKTsNCn0NCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeSwgc2l6ZV90IF9TaXplPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4
cHIgYm9vbCBlbXB0eShjb25zdCBfVHkgKCYpW19TaXplXSkgbm9leGNlcHQgew0KICAgIHJldHVy
biBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtPg0KW1tub2Rpc2NhcmRdXSBjb25z
dGV4cHIgYm9vbCBlbXB0eShpbml0aWFsaXplcl9saXN0PF9FbGVtPiBfSWxpc3QpIG5vZXhjZXB0
IHsNCiAgICByZXR1cm4gX0lsaXN0LnNpemUoKSA9PSAwOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0NvbnRhaW5lcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGF1dG8gZGF0YShfQ29udGFpbmVy
JiBfQ29udCkgLT4gZGVjbHR5cGUoX0NvbnQuZGF0YSgpKSB7DQogICAgcmV0dXJuIF9Db250LmRh
dGEoKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+DQpbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBhdXRvIGRhdGEoY29uc3QgX0NvbnRhaW5lciYgX0NvbnQpIC0+IGRlY2x0eXBlKF9D
b250LmRhdGEoKSkgew0KICAgIHJldHVybiBfQ29udC5kYXRhKCk7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeSogZGF0
YShfVHkgKCZfQXJyYXkpW19TaXplXSkgbm9leGNlcHQgew0KICAgIHJldHVybiBfQXJyYXk7DQp9
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0
IF9FbGVtKiBkYXRhKGluaXRpYWxpemVyX2xpc3Q8X0VsZW0+IF9JbGlzdCkgbm9leGNlcHQgew0K
ICAgIHJldHVybiBfSWxpc3QuYmVnaW4oKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpzdHJ1Y3QgX0NvbnRhaW5lcl9w
cm94eTsNCnN0cnVjdCBfSXRlcmF0b3JfYmFzZTEyOw0KDQoNCnN0cnVjdCBfRGVmYXVsdF9zZW50
aW5lbCB7fTsgDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCmNsYXNzIG1v
dmVfaXRlcmF0b3Igew0KcHVibGljOg0KICAgIHVzaW5nIGl0ZXJhdG9yX3R5cGUgPSBfSXRlcjsN
Cg0KDQoNCg0KDQogICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBfSXRlcl9jYXRfdDxfSXRl
cj47DQojbGluZSAzODkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHh1dGlsaXR5Ig0KICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICA9IF9JdGVyX3Zh
bHVlX3Q8X0l0ZXI+Ow0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IF9JdGVyX2RpZmZfdDxf
SXRlcj47DQogICAgdXNpbmcgcG9pbnRlciAgICAgICAgID0gX0l0ZXI7DQoNCg0KDQogICAgdXNp
bmcgcmVmZXJlbmNlID0NCiAgICAgICAgY29uZGl0aW9uYWxfdDxpc19yZWZlcmVuY2VfdjxfSXRl
cl9yZWZfdDxfSXRlcj4+LCByZW1vdmVfcmVmZXJlbmNlX3Q8X0l0ZXJfcmVmX3Q8X0l0ZXI+PiYm
LCBfSXRlcl9yZWZfdDxfSXRlcj4+Ow0KI2xpbmUgMzkwMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KICAgIGNvbnN0ZXhwciBt
b3ZlX2l0ZXJhdG9yKCkgPSBkZWZhdWx0Ow0KDQogICAgY29uc3RleHByIGV4cGxpY2l0IG1vdmVf
aXRlcmF0b3IoX0l0ZXIgX1JpZ2h0KSBub2V4Y2VwdChpc19ub3Rocm93X21vdmVfY29uc3RydWN0
aWJsZV92PF9JdGVyPikgDQogICAgICAgIDogY3VycmVudCg6OnN0ZDo6IG1vdmUoX1JpZ2h0KSkg
e30NCg0KICAgIA0KICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXI+DQoNCg0KDQoNCiAgICBjb25z
dGV4cHIgbW92ZV9pdGVyYXRvcihjb25zdCBtb3ZlX2l0ZXJhdG9yPF9PdGhlcj4mIF9SaWdodCkg
bm9leGNlcHQoDQogICAgICAgIGlzX25vdGhyb3dfY29uc3RydWN0aWJsZV92PF9JdGVyLCBjb25z
dCBfT3RoZXImPikgDQogICAgICAgIDogY3VycmVudChfUmlnaHQuYmFzZSgpKSB7fQ0KDQogICAg
dGVtcGxhdGUgPGNsYXNzIF9PdGhlcj4NCg0KDQoNCg0KDQogICAgY29uc3RleHByIG1vdmVfaXRl
cmF0b3ImIG9wZXJhdG9yPShjb25zdCBtb3ZlX2l0ZXJhdG9yPF9PdGhlcj4mIF9SaWdodCkgbm9l
eGNlcHQoDQogICAgICAgIGlzX25vdGhyb3dfYXNzaWduYWJsZV92PF9JdGVyJiwgY29uc3QgX090
aGVyJj4pICB7DQogICAgICAgIGN1cnJlbnQgPSBfUmlnaHQuYmFzZSgpOw0KICAgICAgICByZXR1
cm4gKnRoaXM7DQogICAgfQ0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIFtbbm9kaXNjYXJk
XV0gY29uc3RleHByIGl0ZXJhdG9yX3R5cGUgYmFzZSgpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJu
IGN1cnJlbnQ7DQogICAgfQ0KI2xpbmUgMzk0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KICAgIFtbbm9kaXNjYXJkXV0gY29u
c3RleHByIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7DQoNCg0KDQogICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxyZWZlcmVuY2U+KCpjdXJyZW50KTsNCiNsaW5lIDM5NDkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSAgY29uc3RleHByIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNv
bnN0IHsNCiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7DQogICAgfQ0KDQogICAgY29uc3RleHByIG1v
dmVfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7DQogICAgICAgICsrY3VycmVudDsNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yKysoaW50
KSB7DQoNCg0KDQogICAgICAgICAgICBtb3ZlX2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAg
ICAgICAgICsrY3VycmVudDsNCiAgICAgICAgICAgIHJldHVybiBfVG1wOw0KDQoNCg0KDQoNCiAg
ICB9DQoNCiAgICBjb25zdGV4cHIgbW92ZV9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsNCiAgICAg
ICAgLS1jdXJyZW50Ow0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgY29uc3Rl
eHByIG1vdmVfaXRlcmF0b3Igb3BlcmF0b3ItLShpbnQpIHsNCiAgICAgICAgbW92ZV9pdGVyYXRv
ciBfVG1wID0gKnRoaXM7DQogICAgICAgIC0tY3VycmVudDsNCiAgICAgICAgcmV0dXJuIF9UbXA7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyMiA9IF9JdGVyPg0KICAgIFtbbm9k
aXNjYXJkXV0gYXV0byBvcGVyYXRvcj09KF9EZWZhdWx0X3NlbnRpbmVsIF9TZW50aW5lbCkgY29u
c3Qgbm9leGNlcHQNCiAgICAgICAgLT4gZGVjbHR5cGUoOjpzdGQ6OiBkZWNsdmFsPGNvbnN0IF9J
dGVyMiY+KCkgPT0gX1NlbnRpbmVsKSB7DQogICAgICAgIHJldHVybiBjdXJyZW50ID09IF9TZW50
aW5lbDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIyID0gX0l0ZXI+DQogICAg
W1tub2Rpc2NhcmRdXSBhdXRvIG9wZXJhdG9yIT0oX0RlZmF1bHRfc2VudGluZWwgX1NlbnRpbmVs
KSBjb25zdCBub2V4Y2VwdA0KICAgICAgICAtPiBkZWNsdHlwZSg6OnN0ZDo6IGRlY2x2YWw8Y29u
c3QgX0l0ZXIyJj4oKSAhPSBfU2VudGluZWwpIHsNCiAgICAgICAgcmV0dXJuIGN1cnJlbnQgIT0g
X1NlbnRpbmVsOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIG1vdmVfaXRl
cmF0b3Igb3BlcmF0b3IrKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCB7DQogICAg
ICAgIHJldHVybiBtb3ZlX2l0ZXJhdG9yKGN1cnJlbnQgKyBfT2ZmKTsNCiAgICB9DQoNCiAgICBj
b25zdGV4cHIgbW92ZV9pdGVyYXRvciYgb3BlcmF0b3IrPShjb25zdCBkaWZmZXJlbmNlX3R5cGUg
X09mZikgew0KICAgICAgICBjdXJyZW50ICs9IF9PZmY7DQogICAgICAgIHJldHVybiAqdGhpczsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBtb3ZlX2l0ZXJhdG9yIG9wZXJh
dG9yLShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgY29uc3Qgew0KICAgICAgICByZXR1cm4g
bW92ZV9pdGVyYXRvcihjdXJyZW50IC0gX09mZik7DQogICAgfQ0KDQogICAgY29uc3RleHByIG1v
dmVfaXRlcmF0b3ImIG9wZXJhdG9yLT0oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIHsNCiAg
ICAgICAgY3VycmVudCAtPSBfT2ZmOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3QgZGlm
ZmVyZW5jZV90eXBlIF9PZmYpIGNvbnN0IHsNCg0KDQoNCiAgICAgICAgcmV0dXJuIDo6c3RkOjog
bW92ZShjdXJyZW50W19PZmZdKTsNCiNsaW5lIDQwMjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQogICAgfQ0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgdGVt
cGxhdGUgPGNsYXNzIF9JdGVyMiwgZW5hYmxlX2lmX3Q8X1JhbmdlX3ZlcmlmaWFibGVfdjxfSXRl
ciwgX0l0ZXIyPiwgaW50PiA9IDA+DQogICAgZnJpZW5kIGNvbnN0ZXhwciB2b2lkIF9WZXJpZnlf
cmFuZ2UoY29uc3QgbW92ZV9pdGVyYXRvciYgX0ZpcnN0LCBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9J
dGVyMj4mIF9MYXN0KSB7DQogICAgICAgIF9WZXJpZnlfcmFuZ2UoX0ZpcnN0LmN1cnJlbnQsIF9M
YXN0LmJhc2UoKSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQogICAgdXNpbmcgX1ByZXZlbnRfaW5o
ZXJpdGluZ191bndyYXAgPSBtb3ZlX2l0ZXJhdG9yOw0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9J
dGVyMiA9IGl0ZXJhdG9yX3R5cGUsIGVuYWJsZV9pZl90PF9PZmZzZXRfdmVyaWZpYWJsZV92PF9J
dGVyMj4sIGludD4gPSAwPg0KICAgIGNvbnN0ZXhwciB2b2lkIF9WZXJpZnlfb2Zmc2V0KGNvbnN0
IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCB7DQogICAgICAgIGN1cnJlbnQuX1ZlcmlmeV9v
ZmZzZXQoX09mZik7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyMiA9IGl0ZXJh
dG9yX3R5cGUsIGVuYWJsZV9pZl90PF9VbndyYXBwYWJsZV92PGNvbnN0IF9JdGVyMiY+LCBpbnQ+
ID0gMD4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBtb3ZlX2l0ZXJhdG9yPF9VbndyYXBw
ZWRfdDxjb25zdCBfSXRlcjImPj4gX1Vud3JhcHBlZCgpIGNvbnN0JiB7DQogICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxtb3ZlX2l0ZXJhdG9yPF9VbndyYXBwZWRfdDxjb25zdCBfSXRlcjImPj4+
KGN1cnJlbnQuX1Vud3JhcHBlZCgpKTsNCiAgICB9DQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVy
MiA9IGl0ZXJhdG9yX3R5cGUsIGVuYWJsZV9pZl90PF9VbndyYXBwYWJsZV92PF9JdGVyMj4sIGlu
dD4gPSAwPg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIG1vdmVfaXRlcmF0b3I8X1Vud3Jh
cHBlZF90PF9JdGVyMj4+IF9VbndyYXBwZWQoKSAmJiB7DQogICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxtb3ZlX2l0ZXJhdG9yPF9VbndyYXBwZWRfdDxfSXRlcjI+Pj4oOjpzdGQ6OiBtb3ZlKGN1
cnJlbnQpLl9VbndyYXBwZWQoKSk7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IF9VbndyYXBfd2hlbl91bnZlcmlmaWVkID0gX0RvX3Vud3JhcF93aGVuX3VudmVyaWZpZWRfdjxp
dGVyYXRvcl90eXBlPjsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfU3JjLCBlbmFibGVfaWZfdDxf
V3JhcHBlZF9zZWVrYWJsZV92PGl0ZXJhdG9yX3R5cGUsIGNvbnN0IF9TcmMmPiwgaW50PiA9IDA+
DQogICAgY29uc3RleHByIHZvaWQgX1NlZWtfdG8oY29uc3QgbW92ZV9pdGVyYXRvcjxfU3JjPiYg
X0l0KSB7DQogICAgICAgIGN1cnJlbnQuX1NlZWtfdG8oX0l0LmJhc2UoKSk7DQogICAgfQ0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfU3JjLCBlbmFibGVfaWZfdDxfV3JhcHBlZF9zZWVrYWJsZV92PGl0
ZXJhdG9yX3R5cGUsIF9TcmM+LCBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgdm9pZCBfU2Vla190
byhtb3ZlX2l0ZXJhdG9yPF9TcmM+JiYgX0l0KSB7DQogICAgICAgIGN1cnJlbnQuX1NlZWtfdG8o
OjpzdGQ6OiBtb3ZlKF9JdCkuYmFzZSgpKTsNCiAgICB9DQoNCnByb3RlY3RlZDoNCiAgICBpdGVy
YXRvcl90eXBlIGN1cnJlbnR7fTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcjEsIGNsYXNz
IF9JdGVyMj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBt
b3ZlX2l0ZXJhdG9yPF9JdGVyMT4mIF9MZWZ0LCBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyMj4m
IF9SaWdodCkNCg0KDQoNCg0KDQoNCg0KeyByZXR1cm4gX0xlZnQuYmFzZSgpID09IF9SaWdodC5i
YXNlKCk7IH0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIxLCBjbGFzcyBfSXRlcjI+DQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgbW92ZV9pdGVyYXRvcjxf
SXRlcjE+JiBfTGVmdCwgY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcjI+JiBfUmlnaHQpIHsNCiAg
ICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0KfQ0KI2xpbmUgNDExMiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KdGVtcGxh
dGUgPGNsYXNzIF9JdGVyMSwgY2xhc3MgX0l0ZXIyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRlcjE+JiBfTGVmdCwgY29uc3Qg
bW92ZV9pdGVyYXRvcjxfSXRlcjI+JiBfUmlnaHQpDQoNCg0KDQoNCg0KDQoNCnsgcmV0dXJuIF9M
ZWZ0LmJhc2UoKSA8IF9SaWdodC5iYXNlKCk7IH0NCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyMSwg
Y2xhc3MgX0l0ZXIyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29u
c3QgbW92ZV9pdGVyYXRvcjxfSXRlcjE+JiBfTGVmdCwgY29uc3QgbW92ZV9pdGVyYXRvcjxfSXRl
cjI+JiBfUmlnaHQpDQoNCg0KDQoNCg0KeyByZXR1cm4gX1JpZ2h0IDwgX0xlZnQ7IH0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9JdGVyMSwgY2xhc3MgX0l0ZXIyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXIxPiYgX0xlZnQsIGNv
bnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXIyPiYgX1JpZ2h0KQ0KDQoNCg0KDQoNCnsgcmV0dXJuICEo
X1JpZ2h0IDwgX0xlZnQpOyB9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcjEsIGNsYXNzIF9JdGVy
Mj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBtb3ZlX2l0
ZXJhdG9yPF9JdGVyMT4mIF9MZWZ0LCBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyMj4mIF9SaWdo
dCkNCg0KDQoNCg0KDQp7IHJldHVybiAhKF9MZWZ0IDwgX1JpZ2h0KTsgfQ0KDQoNCg0KDQoNCg0K
DQojbGluZSA0MTU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHh1dGlsaXR5Ig0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIxLCBjbGFzcyBfSXRlcjI+
DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yLShjb25zdCBtb3ZlX2l0ZXJh
dG9yPF9JdGVyMT4mIF9MZWZ0LCBjb25zdCBtb3ZlX2l0ZXJhdG9yPF9JdGVyMj4mIF9SaWdodCkN
CiAgICAtPiBkZWNsdHlwZShfTGVmdC5iYXNlKCkgLSBfUmlnaHQuYmFzZSgpKSB7DQogICAgcmV0
dXJuIF9MZWZ0LmJhc2UoKSAtIF9SaWdodC5iYXNlKCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBf
SXRlcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIG1vdmVfaXRlcmF0b3I8X0l0ZXI+IG9wZXJh
dG9yKygNCiAgICB0eXBlbmFtZSBtb3ZlX2l0ZXJhdG9yPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBl
IF9PZmYsIGNvbnN0IG1vdmVfaXRlcmF0b3I8X0l0ZXI+JiBfUmlnaHQpDQoNCg0KDQoNCg0KDQoN
CnsgcmV0dXJuIG1vdmVfaXRlcmF0b3I8X0l0ZXI+e19SaWdodC5iYXNlKCkgKyBfT2ZmfTsgfQ0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIG1vdmVf
aXRlcmF0b3I8X0l0ZXI+IG1ha2VfbW92ZV9pdGVyYXRvcihfSXRlciBfSXQpIHsgDQogICAgcmV0
dXJuIG1vdmVfaXRlcmF0b3I8X0l0ZXI+KDo6c3RkOjogbW92ZShfSXQpKTsNCn0NCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Tb3VyY2UsIGNsYXNzIF9EZXN0Pg0Kc3Ry
dWN0IF9QdHJfY2F0X2hlbHBlciB7DQogICAgdXNpbmcgX1VTb3VyY2UgICAgICAgICAgICAgICAg
ICAgICAgICA9IF9VbndyYXBfZW51bV90PF9Tb3VyY2U+Ow0KICAgIHVzaW5nIF9VRGVzdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBfVW53cmFwX2VudW1fdDxfRGVzdD47DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIF9SZWFsbHlfdHJpdmlhbCA9IGNvbmp1bmN0aW9uX3Y8DQogICAgICAg
IGJvb2xfY29uc3RhbnQ8c2l6ZW9mKF9VU291cmNlKSA9PSBzaXplb2YoX1VEZXN0KSAmJiBpc19z
YW1lX3Y8Ym9vbCwgX1VTb3VyY2U+ID09IGlzX3NhbWVfdjxib29sLCBfVURlc3Q+PiwNCiAgICAg
ICAgaXNfaW50ZWdyYWw8X1VTb3VyY2U+LCBpc19pbnRlZ3JhbDxfVURlc3Q+PjsNCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgX1RyaXZpYWxseV9jb3B5YWJsZSA9IF9SZWFsbHlfdHJpdmlhbDsN
Cn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbT4NCnN0cnVjdCBfUHRyX2NhdF9oZWxwZXI8X0Vs
ZW0sIF9FbGVtPiB7IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfUmVhbGx5X3RyaXZpYWwg
ICAgID0gaXNfdHJpdmlhbF92PF9FbGVtPjsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1Ry
aXZpYWxseV9jb3B5YWJsZSA9IGlzX3RyaXZpYWxseV9jb3B5YWJsZV92PF9FbGVtPjsNCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfQW55dGhpbmc+DQpzdHJ1Y3QgX1B0cl9jYXRfaGVscGVyPF9Bbnl0
aGluZyosIGNvbnN0IF9Bbnl0aGluZyo+IHsNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgX1JlYWxseV90cml2aWFsICAgICA9IHRydWU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IF9Ucml2aWFsbHlfY29weWFibGUgPSB0cnVlOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9Bbnl0
aGluZz4NCnN0cnVjdCBfUHRyX2NhdF9oZWxwZXI8X0FueXRoaW5nKiwgdm9sYXRpbGUgX0FueXRo
aW5nKj4gew0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfUmVhbGx5X3RyaXZpYWwg
ICAgID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1RyaXZpYWxseV9jb3B5YWJs
ZSA9IHRydWU7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FueXRoaW5nPg0Kc3RydWN0IF9QdHJf
Y2F0X2hlbHBlcjxfQW55dGhpbmcqLCBjb25zdCB2b2xhdGlsZSBfQW55dGhpbmcqPiB7DQogICAg
DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9SZWFsbHlfdHJpdmlhbCAgICAgPSB0cnVlOw0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfVHJpdmlhbGx5X2NvcHlhYmxlID0gdHJ1ZTsNCn07
DQoNCnN0cnVjdCBfRmFsc2VfY29weV9jYXQgew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBf
UmVhbGx5X3RyaXZpYWwgICAgID0gZmFsc2U7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9U
cml2aWFsbHlfY29weWFibGUgPSBmYWxzZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfU291cmNl
LCBjbGFzcyBfRGVzdD4NCnN0cnVjdCBfUHRyX2NvcHlfY2F0IDogX0ZhbHNlX2NvcHlfY2F0IHt9
OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9Tb3VyY2UsIGNsYXNzIF9EZXN0Pg0Kc3RydWN0IF9QdHJf
Y29weV9jYXQ8X1NvdXJjZSosIF9EZXN0Kj4NCiAgICA6IGNvbmRpdGlvbmFsX3Q8aXNfdHJpdmlh
bGx5X2Fzc2lnbmFibGVfdjxfRGVzdCYsIF9Tb3VyY2UmPiwNCiAgICAgICAgICBfUHRyX2NhdF9o
ZWxwZXI8cmVtb3ZlX2N2X3Q8X1NvdXJjZT4sIHJlbW92ZV9jdl90PF9EZXN0Pj4sIF9GYWxzZV9j
b3B5X2NhdD4ge307DQoNCnRlbXBsYXRlIDxjbGFzcyBfU291cmNlLCBjbGFzcyBfRGVzdD4NCnN0
cnVjdCBfUHRyX2NvcHlfY2F0PG1vdmVfaXRlcmF0b3I8X1NvdXJjZSo+LCBfRGVzdCo+IDogX1B0
cl9jb3B5X2NhdDxfU291cmNlKiwgX0Rlc3QqPiB7fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9Tb3Vy
Y2UsIGNsYXNzIF9EZXN0Pg0Kc3RydWN0IF9QdHJfbW92ZV9jYXQgOiBfRmFsc2VfY29weV9jYXQg
e307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1NvdXJjZSwgY2xhc3MgX0Rlc3Q+DQpzdHJ1Y3QgX1B0
cl9tb3ZlX2NhdDxfU291cmNlKiwgX0Rlc3QqPg0KICAgIDogY29uZGl0aW9uYWxfdDxpc190cml2
aWFsbHlfYXNzaWduYWJsZV92PF9EZXN0JiwgX1NvdXJjZT4sDQogICAgICAgICAgX1B0cl9jYXRf
aGVscGVyPHJlbW92ZV9jdl90PF9Tb3VyY2U+LCByZW1vdmVfY3ZfdDxfRGVzdD4+LCBfRmFsc2Vf
Y29weV9jYXQ+IHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1NvdXJjZSwgY2xhc3MgX0Rlc3Q+DQpz
dHJ1Y3QgX1B0cl9tb3ZlX2NhdDxtb3ZlX2l0ZXJhdG9yPF9Tb3VyY2UqPiwgX0Rlc3QqPiA6IF9Q
dHJfbW92ZV9jYXQ8X1NvdXJjZSosIF9EZXN0Kj4ge307DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5J
dCwgY2xhc3MgX091dEl0Pg0KX091dEl0IF9Db3B5X21lbW1vdmUoX0luSXQgX0ZpcnN0LCBfSW5J
dCBfTGFzdCwgX091dEl0IF9EZXN0KSB7DQogICAgY29uc3QgY2hhciogY29uc3QgX0ZpcnN0X2No
ID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2xhdGls
ZSBjaGFyKj4oX0ZpcnN0KSk7DQogICAgY29uc3QgY2hhciogY29uc3QgX0xhc3RfY2ggID0gY29u
c3RfY2FzdDxjb25zdCBjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2xhdGlsZSBjaGFy
Kj4oX0xhc3QpKTsNCiAgICBjaGFyKiBjb25zdCBfRGVzdF9jaCAgICAgICAgPSBjb25zdF9jYXN0
PGNoYXIqPihyZWludGVycHJldF9jYXN0PHZvbGF0aWxlIGNoYXIqPihfRGVzdCkpOw0KICAgIGNv
bnN0IGF1dG8gX0NvdW50ICAgICAgICAgICA9IHN0YXRpY19jYXN0PHNpemVfdD4oX0xhc3RfY2gg
LSBfRmlyc3RfY2gpOw0KICAgIDo6IG1lbW1vdmUoX0Rlc3RfY2gsIF9GaXJzdF9jaCwgX0NvdW50
KTsNCiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfT3V0SXQ+KF9EZXN0X2NoICsgX0NvdW50
KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfT3V0SXQ+DQpfT3V0SXQgX0Nv
cHlfbWVtbW92ZShtb3ZlX2l0ZXJhdG9yPF9Jbkl0PiBfRmlyc3QsIG1vdmVfaXRlcmF0b3I8X0lu
SXQ+IF9MYXN0LCBfT3V0SXQgX0Rlc3QpIHsNCiAgICByZXR1cm4gX0NvcHlfbWVtbW92ZShfRmly
c3QuYmFzZSgpLCBfTGFzdC5iYXNlKCksIF9EZXN0KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0luSXQsIGNsYXNzIF9PdXRJdD4NCmlubGluZSBfT3V0SXQgX0NvcHlfdW5jaGVja2VkKF9Jbkl0
IF9GaXJzdCwgX0luSXQgX0xhc3QsIF9PdXRJdCBfRGVzdCkgew0KICAgIA0KICAgIA0KICAgIGlm
IGNvbnN0ZXhwciAoX1B0cl9jb3B5X2NhdDxfSW5JdCwgX091dEl0Pjo6X1RyaXZpYWxseV9jb3B5
YWJsZSkgew0KDQoNCg0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX0NvcHlfbWVtbW92
ZShfRmlyc3QsIF9MYXN0LCBfRGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBmb3IgKDsg
X0ZpcnN0ICE9IF9MYXN0OyArK19EZXN0LCAodm9pZCkgKytfRmlyc3QpIHsNCiAgICAgICAgKl9E
ZXN0ID0gKl9GaXJzdDsNCiAgICB9DQoNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDM0NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KdGVt
cGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfT3V0SXQ+DQppbmxpbmUgX091dEl0IGNvcHkoX0lu
SXQgX0ZpcnN0LCBfSW5JdCBfTGFzdCwgX091dEl0IF9EZXN0KSB7IA0KICAgIF9BZGxfdmVyaWZ5
X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VGaXJzdCA9IF9HZXRfdW53
cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgID0gX0dldF91bndyYXBwZWQo
X0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VEZXN0ICA9IF9HZXRfdW53cmFwcGVkX24oX0Rlc3Qs
IF9JZGxfZGlzdGFuY2U8X0luSXQ+KF9VRmlyc3QsIF9VTGFzdCkpOw0KICAgIF9TZWVrX3dyYXBw
ZWQoX0Rlc3QsIF9Db3B5X3VuY2hlY2tlZChfVUZpcnN0LCBfVUxhc3QsIF9VRGVzdCkpOw0KICAg
IHJldHVybiBfRGVzdDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJ
dDEsIGNsYXNzIF9Gd2RJdDIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9
IDA+DQpfRndkSXQyIGNvcHkoX0V4UG8mJiwgX0Z3ZEl0MSBfRmlyc3QsIF9Gd2RJdDEgX0xhc3Qs
IF9Gd2RJdDIgX0Rlc3QpIG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2Vy
dChfSXNfZndkX2l0ZXJfdjxfRndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBm
b3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19m
d2RfaXRlcl92PF9Gd2RJdDI+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQg
aXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IGNvcHkoX0ZpcnN0
LCBfTGFzdCwgX0Rlc3QpOw0KfQ0KI2xpbmUgNDM2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfSW5JdCwgY2xhc3MgX0RpZmYsIGNsYXNzIF9PdXRJdD4NCmlubGluZSBfT3V0SXQgY29weV9u
KF9Jbkl0IF9GaXJzdCwgX0RpZmYgX0NvdW50X3JhdywgX091dEl0IF9EZXN0KSB7DQogICAgDQog
ICAgX0FsZ29yaXRobV9pbnRfdDxfRGlmZj4gX0NvdW50ID0gX0NvdW50X3JhdzsNCiAgICBpZiAo
MCA8IF9Db3VudCkgew0KICAgICAgICBhdXRvIF9VRmlyc3QgPSBfR2V0X3Vud3JhcHBlZF9uKF9G
aXJzdCwgX0NvdW50KTsNCiAgICAgICAgYXV0byBfVURlc3QgID0gX0dldF91bndyYXBwZWRfbihf
RGVzdCwgX0NvdW50KTsNCiAgICAgICAgaWYgY29uc3RleHByIChfUHRyX2NvcHlfY2F0PGRlY2x0
eXBlKF9VRmlyc3QpLCBkZWNsdHlwZShfVURlc3QpPjo6X1RyaXZpYWxseV9jb3B5YWJsZSkgew0K
DQoNCg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIF9VRGVzdCA9IF9Db3B5X21lbW1v
dmUoX1VGaXJzdCwgX1VGaXJzdCArIF9Db3VudCwgX1VEZXN0KTsNCiAgICAgICAgICAgICAgICBf
U2Vla193cmFwcGVkKF9EZXN0LCBfVURlc3QpOw0KICAgICAgICAgICAgICAgIHJldHVybiBfRGVz
dDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZvciAoOzspIHsNCiAgICAg
ICAgICAgICpfVURlc3QgPSAqX1VGaXJzdDsNCiAgICAgICAgICAgICsrX1VEZXN0Ow0KICAgICAg
ICAgICAgLS1fQ291bnQ7DQogICAgICAgICAgICBpZiAoX0NvdW50ID09IDApIHsgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAg
ICAgICB9DQoNCiAgICAgICAgICAgICsrX1VGaXJzdDsNCiAgICAgICAgfQ0KDQogICAgICAgIF9T
ZWVrX3dyYXBwZWQoX0Rlc3QsIF9VRGVzdCk7DQogICAgfQ0KDQogICAgcmV0dXJuIF9EZXN0Ow0K
fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDQ0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9EaWZmLCBjbGFzcyBfRndkSXQyLCBfRW5h
YmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KX0Z3ZEl0MiBjb3B5X24oX0V4
UG8mJiwgX0Z3ZEl0MSBfRmlyc3QsIF9EaWZmIF9Db3VudF9yYXcsIF9Gd2RJdDIgX0Rlc3QpIG5v
ZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxf
RndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBv
ciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdDI+
LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9u
Z2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IGNvcHlfbihfRmlyc3QsIF9Db3VudF9yYXcsIF9E
ZXN0KTsNCn0NCiNsaW5lIDQ0NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdDEsIGNs
YXNzIF9CaWRJdDI+DQpfQmlkSXQyIF9Db3B5X2JhY2t3YXJkX21lbW1vdmUoX0JpZEl0MSBfRmly
c3QsIF9CaWRJdDEgX0xhc3QsIF9CaWRJdDIgX0Rlc3QpIHsNCiAgICANCiAgICBjb25zdCBjaGFy
KiBjb25zdCBfRmlyc3RfY2ggPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihyZWludGVycHJldF9j
YXN0PGNvbnN0IHZvbGF0aWxlIGNoYXIqPihfRmlyc3QpKTsNCiAgICBjb25zdCBjaGFyKiBjb25z
dCBfTGFzdF9jaCAgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqPihyZWludGVycHJldF9jYXN0PGNv
bnN0IHZvbGF0aWxlIGNoYXIqPihfTGFzdCkpOw0KICAgIGNoYXIqIGNvbnN0IF9EZXN0X2NoICAg
ICAgICA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9sYXRpbGUgY2hhcio+
KF9EZXN0KSk7DQogICAgY29uc3QgYXV0byBfQ291bnQgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihfTGFzdF9jaCAtIF9GaXJzdF9jaCk7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PF9C
aWRJdDI+KDo6IG1lbW1vdmUoX0Rlc3RfY2ggLSBfQ291bnQsIF9GaXJzdF9jaCwgX0NvdW50KSk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQxLCBjbGFzcyBfQmlkSXQyPg0KX0JpZEl0MiBf
Q29weV9iYWNrd2FyZF9tZW1tb3ZlKG1vdmVfaXRlcmF0b3I8X0JpZEl0MT4gX0ZpcnN0LCBtb3Zl
X2l0ZXJhdG9yPF9CaWRJdDE+IF9MYXN0LCBfQmlkSXQyIF9EZXN0KSB7DQogICAgcmV0dXJuIF9D
b3B5X2JhY2t3YXJkX21lbW1vdmUoX0ZpcnN0LmJhc2UoKSwgX0xhc3QuYmFzZSgpLCBfRGVzdCk7
DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdDEsIGNsYXNzIF9CaWRJdDI+DQpbW25vZGlz
Y2FyZF1dIGlubGluZSBfQmlkSXQyIF9Db3B5X2JhY2t3YXJkX3VuY2hlY2tlZChfQmlkSXQxIF9G
aXJzdCwgX0JpZEl0MSBfTGFzdCwgX0JpZEl0MiBfRGVzdCkgew0KICAgIA0KICAgIGlmIGNvbnN0
ZXhwciAoX1B0cl9jb3B5X2NhdDxfQmlkSXQxLCBfQmlkSXQyPjo6X1RyaXZpYWxseV9jb3B5YWJs
ZSkgew0KDQoNCg0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX0NvcHlfYmFja3dhcmRf
bWVtbW92ZShfRmlyc3QsIF9MYXN0LCBfRGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB3
aGlsZSAoX0ZpcnN0ICE9IF9MYXN0KSB7DQogICAgICAgICotLV9EZXN0ID0gKi0tX0xhc3Q7DQog
ICAgfQ0KDQogICAgcmV0dXJuIF9EZXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0MSwg
Y2xhc3MgX0JpZEl0Mj4NCmlubGluZSBfQmlkSXQyIGNvcHlfYmFja3dhcmQoX0JpZEl0MSBfRmly
c3QsIF9CaWRJdDEgX0xhc3QsIF9CaWRJdDIgX0Rlc3QpIHsNCiAgICANCiAgICBfQWRsX3Zlcmlm
eV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBjb25zdCBhdXRvIF9VRmlyc3QgPSBfR2V0X3Vu
d3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0ICA9IF9HZXRfdW53cmFwcGVk
KF9MYXN0KTsNCiAgICBjb25zdCBhdXRvIF9VRGVzdCAgPSBfR2V0X3Vud3JhcHBlZF9uKF9EZXN0
LCAtX0lkbF9kaXN0YW5jZTxfQmlkSXQxPihfVUZpcnN0LCBfVUxhc3QpKTsNCiAgICBfU2Vla193
cmFwcGVkKF9EZXN0LCBfQ29weV9iYWNrd2FyZF91bmNoZWNrZWQoX1VGaXJzdCwgX1VMYXN0LCBf
VURlc3QpKTsNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NTMwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfRXhQbywgY2xhc3MgX0JpZEl0MSwgY2xhc3MgX0JpZEl0MiwgX0VuYWJsZV9pZl9l
eGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCl9CaWRJdDIgY29weV9iYWNrd2FyZChfRXhQ
byYmLCBfQmlkSXQxIF9GaXJzdCwgX0JpZEl0MSBfTGFzdCwgX0JpZEl0MiBfRGVzdCkgbm9leGNl
cHQgIHsNCiAgICANCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBjb3B5X2JhY2t3YXJkKF9GaXJz
dCwgX0xhc3QsIF9EZXN0KTsNCn0NCiNsaW5lIDQ1MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0luSXQsIGNsYXNzIF9PdXRJdD4NCmlubGluZSBfT3V0SXQgX01vdmVfdW5jaGVja2VkKF9J
bkl0IF9GaXJzdCwgX0luSXQgX0xhc3QsIF9PdXRJdCBfRGVzdCkgew0KICAgIA0KICAgIA0KICAg
IGlmIGNvbnN0ZXhwciAoX1B0cl9tb3ZlX2NhdDxfSW5JdCwgX091dEl0Pjo6X1RyaXZpYWxseV9j
b3B5YWJsZSkgew0KDQoNCg0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX0NvcHlfbWVt
bW92ZShfRmlyc3QsIF9MYXN0LCBfRGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBmb3Ig
KDsgX0ZpcnN0ICE9IF9MYXN0OyArK19EZXN0LCAodm9pZCkgKytfRmlyc3QpIHsNCiAgICAgICAg
Kl9EZXN0ID0gOjpzdGQ6OiBtb3ZlKCpfRmlyc3QpOw0KICAgIH0NCg0KICAgIHJldHVybiBfRGVz
dDsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA0NTg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHh1dGlsaXR5Ig0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQsIGNsYXNzIF9PdXRJdD4NCmlubGlu
ZSBfT3V0SXQgbW92ZShfSW5JdCBfRmlyc3QsIF9Jbkl0IF9MYXN0LCBfT3V0SXQgX0Rlc3QpIHsN
CiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBjb25zdCBh
dXRvIF9VRmlyc3QgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VM
YXN0ICA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBjb25zdCBhdXRvIF9VRGVzdCAgPSBf
R2V0X3Vud3JhcHBlZF9uKF9EZXN0LCBfSWRsX2Rpc3RhbmNlPF9Jbkl0PihfVUZpcnN0LCBfVUxh
c3QpKTsNCiAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfTW92ZV91bmNoZWNrZWQoX1VGaXJzdCwg
X1VMYXN0LCBfVURlc3QpKTsNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBfRW5hYmxlX2lmX2V4ZWN1
dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KX0Z3ZEl0MiBtb3ZlKF9FeFBvJiYsIF9Gd2RJdDEg
X0ZpcnN0LCBfRndkSXQxIF9MYXN0LCBfRndkSXQyIF9EZXN0KSBub2V4Y2VwdCAgew0KICAgIA0K
ICAgIA0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxl
bCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQog
ICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29y
aXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICByZXR1
cm4gOjpzdGQ6OiBtb3ZlKF9GaXJzdCwgX0xhc3QsIF9EZXN0KTsNCn0NCiNsaW5lIDQ2MDcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHki
DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0MSwgY2xhc3MgX0JpZEl0Mj4NCmlubGluZSBf
QmlkSXQyIF9Nb3ZlX2JhY2t3YXJkX3VuY2hlY2tlZChfQmlkSXQxIF9GaXJzdCwgX0JpZEl0MSBf
TGFzdCwgX0JpZEl0MiBfRGVzdCkgew0KICAgIA0KICAgIA0KICAgIGlmIGNvbnN0ZXhwciAoX1B0
cl9tb3ZlX2NhdDxfQmlkSXQxLCBfQmlkSXQyPjo6X1RyaXZpYWxseV9jb3B5YWJsZSkgew0KDQoN
Cg0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX0NvcHlfYmFja3dhcmRfbWVtbW92ZShf
Rmlyc3QsIF9MYXN0LCBfRGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB3aGlsZSAoX0Zp
cnN0ICE9IF9MYXN0KSB7DQogICAgICAgICotLV9EZXN0ID0gOjpzdGQ6OiBtb3ZlKCotLV9MYXN0
KTsNCiAgICB9DQoNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NjU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0JpZEl0MSwgY2xhc3MgX0JpZEl0Mj4NCmlubGluZSBfQmlkSXQyIG1vdmVfYmFja3dhcmQo
X0JpZEl0MSBfRmlyc3QsIF9CaWRJdDEgX0xhc3QsIF9CaWRJdDIgX0Rlc3QpIHsNCiAgICANCiAg
ICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBjb25zdCBhdXRvIF9VRmly
c3QgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0ICA9IF9H
ZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBjb25zdCBhdXRvIF9VRGVzdCAgPSBfR2V0X3Vud3Jh
cHBlZF9uKF9EZXN0LCAtX0lkbF9kaXN0YW5jZTxfQmlkSXQxPihfVUZpcnN0LCBfVUxhc3QpKTsN
CiAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfTW92ZV9iYWNrd2FyZF91bmNoZWNrZWQoX1VGaXJz
dCwgX1VMYXN0LCBfVURlc3QpKTsNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9FeFBvLCBjbGFzcyBfQmlkSXQxLCBjbGFzcyBfQmlkSXQyLCBfRW5hYmxlX2lmX2V4
ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KX0JpZEl0MiBtb3ZlX2JhY2t3YXJkKF9FeFBv
JiYsIF9CaWRJdDEgX0ZpcnN0LCBfQmlkSXQxIF9MYXN0LCBfQmlkSXQyIF9EZXN0KSBub2V4Y2Vw
dCAgew0KICAgIA0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IG1vdmVfYmFja3dhcmQoX0ZpcnN0
LCBfTGFzdCwgX0Rlc3QpOw0KfQ0KI2xpbmUgNDY3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5Pg0Kc3RydWN0IF9Jc19jaGFyYWN0ZXIgOiBmYWxzZV90eXBlIHt9OyANCg0KdGVtcGxhdGUg
PD4NCnN0cnVjdCBfSXNfY2hhcmFjdGVyPGNoYXI+IDogdHJ1ZV90eXBlIHt9OyANCg0KdGVtcGxh
dGUgPD4NCnN0cnVjdCBfSXNfY2hhcmFjdGVyPHNpZ25lZCBjaGFyPiA6IHRydWVfdHlwZSB7fTsg
DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgX0lzX2NoYXJhY3Rlcjx1bnNpZ25lZCBjaGFyPiA6IHRy
dWVfdHlwZSB7fTsgDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9J
c19jaGFyYWN0ZXJfb3JfYnl0ZSA6IF9Jc19jaGFyYWN0ZXI8X1R5Pjo6dHlwZSB7fTsNCg0KDQp0
ZW1wbGF0ZSA8Pg0Kc3RydWN0IF9Jc19jaGFyYWN0ZXJfb3JfYnl0ZTxieXRlPiA6IHRydWVfdHlw
ZSB7fTsNCiNsaW5lIDQ3MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3Mg
X1R5LCBib29sID0gaXNfcG9pbnRlcl92PF9Gd2RJdD4+DQppbmxpbmUgY29uc3RleHByIGJvb2wg
X0ZpbGxfbWVtc2V0X2lzX3NhZmUgPSBjb25qdW5jdGlvbl92PA0KICAgIGRpc2p1bmN0aW9uPGNv
bmp1bmN0aW9uPF9Jc19jaGFyYWN0ZXJfb3JfYnl0ZTxfVW53cmFwX2VudW1fdDxfVHk+PiwNCiAg
ICAgICAgICAgICAgICAgICAgX0lzX2NoYXJhY3Rlcl9vcl9ieXRlPF9VbndyYXBfZW51bV90PF9J
dGVyX3ZhbHVlX3Q8X0Z3ZEl0Pj4+PiwNCiAgICAgICAgY29uanVuY3Rpb248aXNfc2FtZTxib29s
LCBfVW53cmFwX2VudW1fdDxfVHk+PiwgaXNfc2FtZTxib29sLCBfVW53cmFwX2VudW1fdDxfSXRl
cl92YWx1ZV90PF9Gd2RJdD4+Pj4+LA0KICAgIGlzX2Fzc2lnbmFibGU8X0l0ZXJfcmVmX3Q8X0Z3
ZEl0PiwgY29uc3QgX1R5Jj4+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0LCBjbGFzcyBfVHk+
DQppbmxpbmUgY29uc3RleHByIGJvb2wgX0ZpbGxfbWVtc2V0X2lzX3NhZmU8X0Z3ZEl0LCBfVHks
IGZhbHNlPiA9IGZhbHNlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNzIF9UeT4N
CmlubGluZSB2b2lkIGZpbGwoY29uc3QgX0Z3ZEl0IF9GaXJzdCwgY29uc3QgX0Z3ZEl0IF9MYXN0
LCBjb25zdCBfVHkmIF9WYWwpIHsNCiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3Qs
IF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7
DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgaWYg
Y29uc3RleHByIChfRmlsbF9tZW1zZXRfaXNfc2FmZTxkZWNsdHlwZShfVUZpcnN0KSwgX1R5Pikg
ew0KDQoNCg0KICAgICAgICB7DQogICAgICAgICAgICA6OiBtZW1zZXQoX1VGaXJzdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oX1ZhbCksIHN0YXRpY19jYXN0PHNpemVfdD4oX1VMYXN0IC0g
X1VGaXJzdCkpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgfQ0KDQogICAg
Zm9yICg7IF9VRmlyc3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgKl9VRmlyc3Qg
PSBfVmFsOw0KICAgIH0NCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDQ3NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndk
SXQsIGNsYXNzIF9UeSwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4N
CnZvaWQgZmlsbChfRXhQbyYmLCBfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QsIGNvbnN0IF9U
eSYgX1ZhbCkgbm9leGNlcHQgIHsNCiAgICANCiAgICANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19m
d2RfaXRlcl92PF9Gd2RJdD4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBp
dGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgcmV0dXJuIDo6c3RkOjogZmlsbChfRmlyc3Qs
IF9MYXN0LCBfVmFsKTsNCn0NCiNsaW5lIDQ3NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X091dEl0LCBjbGFzcyBfRGlmZiwgY2xhc3MgX1R5Pg0KaW5saW5lIF9PdXRJdCBmaWxsX24oX091
dEl0IF9EZXN0LCBjb25zdCBfRGlmZiBfQ291bnRfcmF3LCBjb25zdCBfVHkmIF9WYWwpIHsNCiAg
ICANCiAgICBfQWxnb3JpdGhtX2ludF90PF9EaWZmPiBfQ291bnQgPSBfQ291bnRfcmF3Ow0KICAg
IGlmICgwIDwgX0NvdW50KSB7DQogICAgICAgIGF1dG8gX1VEZXN0ID0gX0dldF91bndyYXBwZWRf
bihfRGVzdCwgX0NvdW50KTsNCiAgICAgICAgaWYgY29uc3RleHByIChfRmlsbF9tZW1zZXRfaXNf
c2FmZTxkZWNsdHlwZShfVURlc3QpLCBfVHk+KSB7DQoNCg0KDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgOjogbWVtc2V0KF9VRGVzdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
X1ZhbCksIHN0YXRpY19jYXN0PHNpemVfdD4oX0NvdW50KSk7DQogICAgICAgICAgICAgICAgX1VE
ZXN0ICs9IF9Db3VudDsNCiAgICAgICAgICAgICAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfVURl
c3QpOw0KICAgICAgICAgICAgICAgIHJldHVybiBfRGVzdDsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KDQogICAgICAgIGZvciAoOyAwIDwgX0NvdW50OyAtLV9Db3VudCwgKHZvaWQpICsrX1VE
ZXN0KSB7DQogICAgICAgICAgICAqX1VEZXN0ID0gX1ZhbDsNCiAgICAgICAgfQ0KDQogICAgICAg
IF9TZWVrX3dyYXBwZWQoX0Rlc3QsIF9VRGVzdCk7DQogICAgfQ0KDQogICAgcmV0dXJuIF9EZXN0
Ow0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA0ODI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xh
c3MgX0Z3ZEl0LCBjbGFzcyBfRGlmZiwgY2xhc3MgX1R5LCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9w
b2xpY3lfdDxfRXhQbz4gPSAwPg0KX0Z3ZEl0IGZpbGxfbihfRXhQbyYmLCBfRndkSXQgX0Rlc3Qs
IF9EaWZmIF9Db3VudF9yYXcsIGNvbnN0IF9UeSYgX1ZhbCkgbm9leGNlcHQgIHsNCiAgICANCiAg
ICANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdD4sICJQYXJhbGxlbCBh
bGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAg
cmV0dXJuIDo6c3RkOjogZmlsbF9uKF9EZXN0LCBfQ291bnRfcmF3LCBfVmFsKTsNCn0NCiNsaW5l
IDQ4MzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eHV0aWxpdHkiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0x
LCBjbGFzcyBfRWxlbTIsDQogICAgYm9vbCA9IHNpemVvZihfRWxlbTEpID09IHNpemVvZihfRWxl
bTIpIA0KICAgICAgICAgICAmJiBfSXNfbm9uYm9vbF9pbnRlZ3JhbDxfRWxlbTE+ICYmICFpc192
b2xhdGlsZV92PF9FbGVtMT4gDQogICAgICAgICAgICYmIF9Jc19ub25ib29sX2ludGVncmFsPF9F
bGVtMj4gJiYgIWlzX3ZvbGF0aWxlX3Y8X0VsZW0yPj4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBf
Q2FuX21lbWNtcF9lbGVtZW50cyA9IHN0YXRpY19jYXN0PF9FbGVtMT4oLTEpID09IHN0YXRpY19j
YXN0PF9FbGVtMj4oLTEpOw0KDQoNCg0KDQoNCnRlbXBsYXRlIDw+DQppbmxpbmUgY29uc3RleHBy
IGJvb2wgX0Nhbl9tZW1jbXBfZWxlbWVudHM8Ynl0ZSwgYnl0ZSwgZmFsc2U+ID0gdHJ1ZTsNCiNs
aW5lIDQ4NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceHV0aWxpdHkiDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0K
aW5saW5lIGNvbnN0ZXhwciBib29sIF9DYW5fbWVtY21wX2VsZW1lbnRzPF9UeTEqLCBfVHkyKiwg
ZmFsc2U+ID0gaXNfc2FtZV92PHJlbW92ZV9jdl90PF9UeTE+LCByZW1vdmVfY3ZfdDxfVHkyPj47
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbTEsIGNsYXNzIF9FbGVtMj4NCmlubGluZSBjb25zdGV4
cHIgYm9vbCBfQ2FuX21lbWNtcF9lbGVtZW50czxfRWxlbTEsIF9FbGVtMiwgZmFsc2U+ID0gZmFs
c2U7DQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtMSwgY2xhc3MgX0VsZW0yLCBjbGFz
cyBfUHI+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1ByZWRfaXNfY29uc2lzdGVudF93aXRoX21l
bWNtcCA9IGZhbHNlOw0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtPg0KaW5saW5lIGNvbnN0
ZXhwciBib29sIF9QcmVkX2lzX2NvbnNpc3RlbnRfd2l0aF9tZW1jbXA8X0VsZW0sIF9FbGVtLCBl
cXVhbF90bzxfRWxlbT4+ID0gdHJ1ZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0xLCBjbGFz
cyBfRWxlbTI+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1ByZWRfaXNfY29uc2lzdGVudF93aXRo
X21lbWNtcDxfRWxlbTEsIF9FbGVtMiwgZXF1YWxfdG88Pj4gPSB0cnVlOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0xLCBjbGFzcyBfRWxlbTIsIGNsYXNzIF9Qcj4N
CmlubGluZSBjb25zdGV4cHIgYm9vbCBfQ2FuX21lbWNtcF9lbGVtZW50c193aXRoX3ByZWQgPSBf
Q2FuX21lbWNtcF9lbGVtZW50czxfRWxlbTEsIF9FbGVtMj4gDQogICAgJiYgX1ByZWRfaXNfY29u
c2lzdGVudF93aXRoX21lbWNtcDxfRWxlbTEsIF9FbGVtMiwgX1ByPjsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIxLCBjbGFzcyBfSXRlcjI+DQppbmxpbmUgY29u
c3RleHByIGJvb2wgX0l0ZXJhdG9yc19hcmVfY29udGlndW91cyA9IGNvbmp1bmN0aW9uX3Y8aXNf
cG9pbnRlcjxfSXRlcjE+LCBpc19wb2ludGVyPF9JdGVyMj4+Ow0KI2xpbmUgNDkxNCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0K
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyMSwgY2xhc3MgX0l0ZXIyLCBjbGFzcyBfUHI+DQpp
bmxpbmUgY29uc3RleHByIGJvb2wgX0VxdWFsX21lbWNtcF9pc19zYWZlX2hlbHBlciA9IF9JdGVy
YXRvcnNfYXJlX2NvbnRpZ3VvdXM8X0l0ZXIxLCBfSXRlcjI+IA0KICAgICYmIF9DYW5fbWVtY21w
X2VsZW1lbnRzX3dpdGhfcHJlZDxyZW1vdmVfY29uc3RfdDxyZW1vdmVfcmVmZXJlbmNlX3Q8X0l0
ZXJfcmVmX3Q8X0l0ZXIxPj4+LA0KICAgICAgICByZW1vdmVfY29uc3RfdDxyZW1vdmVfcmVmZXJl
bmNlX3Q8X0l0ZXJfcmVmX3Q8X0l0ZXIyPj4+LCBfUHI+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0
ZXIxLCBjbGFzcyBfSXRlcjIsIGNsYXNzIF9Qcj4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfRXF1
YWxfbWVtY21wX2lzX3NhZmUgPQ0KICAgIF9FcXVhbF9tZW1jbXBfaXNfc2FmZV9oZWxwZXI8cmVt
b3ZlX2NvbnN0X3Q8X0l0ZXIxPiwgcmVtb3ZlX2NvbnN0X3Q8X0l0ZXIyPiwgX1ByPjsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0luSXQxLCBjbGFzcyBfSW5JdDIsIGNsYXNzIF9Qcj4NCltbbm9kaXNj
YXJkXV0gaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgX0luSXQxIF9GaXJzdDEsIGNvbnN0IF9Jbkl0
MSBfTGFzdDEsIGNvbnN0IF9Jbkl0MiBfRmlyc3QyLCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBf
QWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QxLCBfTGFzdDEpOw0KICAgIGF1dG8gX1VGaXJzdDEgICAg
ICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdDEpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MSA9IF9H
ZXRfdW53cmFwcGVkKF9MYXN0MSk7DQogICAgYXV0byBfVUZpcnN0MiAgICAgID0gX0dldF91bndy
YXBwZWRfbihfRmlyc3QyLCBfSWRsX2Rpc3RhbmNlPF9Jbkl0MT4oX1VGaXJzdDEsIF9VTGFzdDEp
KTsNCiAgICBpZiBjb25zdGV4cHIgKF9FcXVhbF9tZW1jbXBfaXNfc2FmZTxkZWNsdHlwZShfVUZp
cnN0MSksIGRlY2x0eXBlKF9VRmlyc3QyKSwgX1ByPikgew0KDQoNCg0KICAgICAgICB7DQogICAg
ICAgICAgICBjb25zdCBhdXRvIF9GaXJzdDFfY2ggPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihfVUZpcnN0MSk7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9GaXJzdDJfY2ggPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihfVUZpcnN0Mik7DQogICAgICAgICAgICBjb25zdCBh
dXRvIF9Db3VudCAgICAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KF9VTGFzdDEpIC0gX0ZpcnN0MV9jaCk7DQogICAgICAgICAgICByZXR1cm4gOjog
bWVtY21wKF9GaXJzdDFfY2gsIF9GaXJzdDJfY2gsIF9Db3VudCkgPT0gMDsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIGZvciAoOyBfVUZpcnN0MSAhPSBfVUxhc3QxOyArK19VRmlyc3QxLCAodm9p
ZCkgKytfVUZpcnN0Mikgew0KICAgICAgICBpZiAoIV9QcmVkKCpfVUZpcnN0MSwgKl9VRmlyc3Qy
KSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgfQ0KDQogICAg
cmV0dXJuIHRydWU7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ5ODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFzcyBfUHIsIF9FbmFibGVf
aWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIGJvb2wgZXF1
YWwoX0V4UG8mJiBfRXhlYywgY29uc3QgX0Z3ZEl0MSBfRmlyc3QxLCBjb25zdCBfRndkSXQxIF9M
YXN0MSwgY29uc3QgX0Z3ZEl0MiBfRmlyc3QyLA0KICAgIF9QciBfUHJlZCkgbm9leGNlcHQ7IA0K
I2xpbmUgNDk5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4dXRpbGl0eSINCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0MSwgY2xhc3MgX0luSXQyPg0K
W1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBfSW5JdDEgX0ZpcnN0MSwgY29u
c3QgX0luSXQxIF9MYXN0MSwgY29uc3QgX0luSXQyIF9GaXJzdDIpIHsNCiAgICANCiAgICByZXR1
cm4gOjpzdGQ6OiBlcXVhbChfRmlyc3QxLCBfTGFzdDEsIF9GaXJzdDIsIGVxdWFsX3RvPD57fSk7
DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndk
SXQyLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KW1tub2Rpc2Nh
cmRdXSBib29sIGVxdWFsKF9FeFBvJiYgX0V4ZWMsIGNvbnN0IF9Gd2RJdDEgX0ZpcnN0MSwgY29u
c3QgX0Z3ZEl0MSBfTGFzdDEsIGNvbnN0IF9Gd2RJdDIgX0ZpcnN0Mikgbm9leGNlcHQNCiB7DQog
ICAgDQogICAgcmV0dXJuIDo6c3RkOjogZXF1YWwoOjpzdGQ6OiBmb3J3YXJkPF9FeFBvPihfRXhl
YyksIF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgZXF1YWxfdG97fSk7DQp9DQojbGluZSA1MDA4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGls
aXR5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdDEsIGNsYXNzIF9Jbkl0MiwgY2xhc3MgX1By
Pg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBlcXVhbCgNCiAgICBjb25zdCBfSW5JdDEgX0Zp
cnN0MSwgY29uc3QgX0luSXQxIF9MYXN0MSwgY29uc3QgX0luSXQyIF9GaXJzdDIsIGNvbnN0IF9J
bkl0MiBfTGFzdDIsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9G
aXJzdDEsIF9MYXN0MSk7DQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0MiwgX0xhc3QyKTsN
CiAgICBhdXRvIF9VRmlyc3QxICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QxKTsNCiAgICBj
b25zdCBhdXRvIF9VTGFzdDEgPSBfR2V0X3Vud3JhcHBlZChfTGFzdDEpOw0KICAgIGF1dG8gX1VG
aXJzdDIgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdDIpOw0KICAgIGNvbnN0IGF1dG8gX1VM
YXN0MiA9IF9HZXRfdW53cmFwcGVkKF9MYXN0Mik7DQogICAgaWYgY29uc3RleHByIChfSXNfcmFu
ZG9tX2l0ZXJfdjxfSW5JdDE+ICYmIF9Jc19yYW5kb21faXRlcl92PF9Jbkl0Mj4pIHsNCiAgICAg
ICAgaWYgKF9VTGFzdDEgLSBfVUZpcnN0MSAhPSBfVUxhc3QyIC0gX1VGaXJzdDIpIHsNCiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiA6OnN0ZDo6
IGVxdWFsKF9VRmlyc3QxLCBfVUxhc3QxLCBfVUZpcnN0MiwgX1Bhc3NfZm4oX1ByZWQpKTsNCiAg
ICB9IGVsc2Ugew0KICAgICAgICBmb3IgKDs7KSB7DQogICAgICAgICAgICBpZiAoX1VGaXJzdDEg
PT0gX1VMYXN0MSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBfVUZpcnN0MiA9PSBfVUxhc3Qy
Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoX1VGaXJzdDIgPT0gX1VMYXN0Mikg
ew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAg
ICAgICAgaWYgKCFfUHJlZCgqX1VGaXJzdDEsICpfVUZpcnN0MikpIHsNCiAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICsrX1VGaXJzdDE7
DQogICAgICAgICAgICArK19VRmlyc3QyOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTA4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4
UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9l
eGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gYm9vbCBlcXVhbChf
RXhQbyYmIF9FeGVjLCBjb25zdCBfRndkSXQxIF9GaXJzdDEsIGNvbnN0IF9Gd2RJdDEgX0xhc3Qx
LCBjb25zdCBfRndkSXQyIF9GaXJzdDIsDQogICAgY29uc3QgX0Z3ZEl0MiBfTGFzdDIsIF9QciBf
UHJlZCkgbm9leGNlcHQ7IA0KI2xpbmUgNTA5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0
MSwgY2xhc3MgX0luSXQyPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBlcXVhbCgNCiAgICBj
b25zdCBfSW5JdDEgX0ZpcnN0MSwgY29uc3QgX0luSXQxIF9MYXN0MSwgY29uc3QgX0luSXQyIF9G
aXJzdDIsIGNvbnN0IF9Jbkl0MiBfTGFzdDIpIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBl
cXVhbChfRmlyc3QxLCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0MiwgZXF1YWxfdG88Pnt9KTsNCn0N
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIs
IF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1d
IGJvb2wgZXF1YWwoX0V4UG8mJiBfRXhlYywgY29uc3QgX0Z3ZEl0MSBfRmlyc3QxLCBjb25zdCBf
RndkSXQxIF9MYXN0MSwgY29uc3QgX0Z3ZEl0MiBfRmlyc3QyLA0KICAgIGNvbnN0IF9Gd2RJdDIg
X0xhc3QyKSBub2V4Y2VwdCAgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IGVxdWFsKDo6c3Rk
OjogZm9yd2FyZDxfRXhQbz4oX0V4ZWMpLCBfRmlyc3QxLCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0
MiwgZXF1YWxfdG97fSk7DQp9DQojbGluZSA1MTEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
RWxlbTEsIGNsYXNzIF9FbGVtMiwgY2xhc3MgX0ZUeT4NCnN0cnVjdCBfTGV4X2NvbXBhcmVfY2hl
Y2tfZWxlbWVudF90eXBlc19oZWxwZXINCiAgICA6IGJvb2xfY29uc3RhbnQ8DQogICAgICAgICAg
Y29uanVuY3Rpb25fdjxfSXNfY2hhcmFjdGVyPF9FbGVtMT4sIF9Jc19jaGFyYWN0ZXI8X0VsZW0y
PiwgX0lzX2NoYXJhY3RlcjxfRlR5PiwgaXNfdW5zaWduZWQ8X0ZUeT4+PiB7DQogICAgDQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0xLCBjbGFzcyBfRWxlbTI+DQpzdHJ1Y3QgX0xleF9jb21w
YXJlX2NoZWNrX2VsZW1lbnRfdHlwZXNfaGVscGVyPF9FbGVtMSwgX0VsZW0yLCB2b2lkPg0KICAg
IDogYm9vbF9jb25zdGFudDwNCiAgICAgICAgICBjb25qdW5jdGlvbl92PF9Jc19jaGFyYWN0ZXI8
X0VsZW0xPiwgX0lzX2NoYXJhY3RlcjxfRWxlbTI+LCBpc191bnNpZ25lZDxfRWxlbTE+LCBpc191
bnNpZ25lZDxfRWxlbTI+Pj4gew0KICAgIA0KfTsNCg0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0IF9M
ZXhfY29tcGFyZV9jaGVja19lbGVtZW50X3R5cGVzX2hlbHBlcjxieXRlLCBieXRlLCBieXRlPiA6
IHRydWVfdHlwZSB7DQogICAgDQp9Ow0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0IF9MZXhfY29tcGFy
ZV9jaGVja19lbGVtZW50X3R5cGVzX2hlbHBlcjxieXRlLCBieXRlLCB2b2lkPiA6IHRydWVfdHlw
ZSB7DQogICAgDQp9Ow0KI2xpbmUgNTEzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KdGVtcGxhdGUgPGNsYXNzIF9NZW1jbXBf
cHI+DQpzdHJ1Y3QgX0xleF9jb21wYXJlX29wdGltaXplIHsNCiAgICBleHBsaWNpdCBfTGV4X2Nv
bXBhcmVfb3B0aW1pemUoKSA9IGRlZmF1bHQ7DQp9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9NZW1j
bXBfcHIsIGNsYXNzIF9PYmoxLCBjbGFzcyBfT2JqMiwgY2xhc3MgX0ZUeT4NCnVzaW5nIF9MZXhf
Y29tcGFyZV9jaGVja19lbGVtZW50X3R5cGVzID0gX0xleF9jb21wYXJlX29wdGltaXplPGNvbmRp
dGlvbmFsX3Q8DQogICAgX0xleF9jb21wYXJlX2NoZWNrX2VsZW1lbnRfdHlwZXNfaGVscGVyPHJl
bW92ZV9jb25zdF90PF9PYmoxPiwgcmVtb3ZlX2NvbnN0X3Q8X09iajI+LCBfRlR5Pjo6dmFsdWUs
IF9NZW1jbXBfcHIsDQogICAgdm9pZD4+OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0MSwgY2xh
c3MgX0luSXQyLCBjbGFzcyBfUHI+DQpjb25zdGV4cHIgYXV0byBfTGV4X2NvbXBhcmVfbWVtY21w
X2NsYXNzaWZ5KGNvbnN0IF9Jbkl0MSYsIGNvbnN0IF9Jbkl0MiYsIGNvbnN0IF9QciYpIHsNCiAg
ICANCiAgICByZXR1cm4gX0xleF9jb21wYXJlX29wdGltaXplPHZvaWQ+e307DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfT2JqMSwgY2xhc3MgX09iajIsIGNsYXNzIF9GVHk+DQpjb25zdGV4cHIgYXV0
byBfTGV4X2NvbXBhcmVfbWVtY21wX2NsYXNzaWZ5KF9PYmoxKiBjb25zdCYsIF9PYmoyKiBjb25z
dCYsIGNvbnN0IGxlc3M8X0ZUeT4mKSB7DQogICAgDQogICAgcmV0dXJuIF9MZXhfY29tcGFyZV9j
aGVja19lbGVtZW50X3R5cGVzPGxlc3M8aW50PiwgX09iajEsIF9PYmoyLCBfRlR5Pnt9Ow0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX09iajEsIGNsYXNzIF9PYmoyLCBjbGFzcyBfRlR5Pg0KY29uc3Rl
eHByIGF1dG8gX0xleF9jb21wYXJlX21lbWNtcF9jbGFzc2lmeShfT2JqMSogY29uc3QmLCBfT2Jq
MiogY29uc3QmLCBjb25zdCBncmVhdGVyPF9GVHk+Jikgew0KICAgIA0KICAgIHJldHVybiBfTGV4
X2NvbXBhcmVfY2hlY2tfZWxlbWVudF90eXBlczxncmVhdGVyPGludD4sIF9PYmoxLCBfT2JqMiwg
X0ZUeT57fTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0MSwgY2xhc3MgX0luSXQyLCBjbGFz
cyBfUHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIF9MZXhfY29tcGFyZV91bmNoZWNr
ZWQoDQogICAgX0luSXQxIF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEsIF9Jbkl0MiBfRmlyc3QyLCBf
SW5JdDIgX0xhc3QyLCBfUHIgX1ByZWQsIF9MZXhfY29tcGFyZV9vcHRpbWl6ZTx2b2lkPikgew0K
ICAgIA0KICAgIGZvciAoOyBfRmlyc3QxICE9IF9MYXN0MSAmJiBfRmlyc3QyICE9IF9MYXN0Mjsg
KytfRmlyc3QxLCAodm9pZCkgKytfRmlyc3QyKSB7IA0KICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
Ym9vbD4oX1ByZWQoKl9GaXJzdDEsICpfRmlyc3QyKSkpIHsNCiAgICAgICAgICAgIHJldHVybiB0
cnVlOw0KICAgICAgICB9IGVsc2UgaWYgKF9QcmVkKCpfRmlyc3QyLCAqX0ZpcnN0MSkpIHsNCiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiBf
Rmlyc3QxID09IF9MYXN0MSAmJiBfRmlyc3QyICE9IF9MYXN0MjsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIF9Jbkl0MSwgY2xhc3MgX0luSXQyLCBjbGFzcyBfUHIsIGNsYXNzIF9NZW1jbXBfcHI+DQpb
W25vZGlzY2FyZF1dIGlubGluZSBib29sIF9MZXhfY29tcGFyZV91bmNoZWNrZWQoDQogICAgX0lu
SXQxIF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEsIF9Jbkl0MiBfRmlyc3QyLCBfSW5JdDIgX0xhc3Qy
LCBfUHIgX1ByZWQsIF9MZXhfY29tcGFyZV9vcHRpbWl6ZTxfTWVtY21wX3ByPikgew0KICAgIA0K
DQoNCg0KDQoNCiAgICAodm9pZCkgX1ByZWQ7DQogICAgY29uc3QgYXV0byBfTnVtMSA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oX0xhc3QxIC0gX0ZpcnN0MSk7DQogICAgY29uc3QgYXV0byBfTnVtMiA9
IHN0YXRpY19jYXN0PHNpemVfdD4oX0xhc3QyIC0gX0ZpcnN0Mik7DQogICAgY29uc3QgaW50IF9B
bnMgICA9IDo6IG1lbWNtcChfRmlyc3QxLCBfRmlyc3QyLCBfTnVtMSA8IF9OdW0yID8gX051bTEg
OiBfTnVtMik7DQogICAgcmV0dXJuIF9NZW1jbXBfcHJ7fShfQW5zLCAwKSB8fCAoX0FucyA9PSAw
ICYmIF9OdW0xIDwgX051bTIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQxLCBjbGFzcyBf
SW5JdDIsIGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgbGV4aWNvZ3JhcGhp
Y2FsX2NvbXBhcmUoDQogICAgX0luSXQxIF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEsIF9Jbkl0MiBf
Rmlyc3QyLCBfSW5JdDIgX0xhc3QyLCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3Zlcmlm
eV9yYW5nZShfRmlyc3QxLCBfTGFzdDEpOw0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdDIs
IF9MYXN0Mik7DQogICAgY29uc3QgYXV0byBfVUZpcnN0MSA9IF9HZXRfdW53cmFwcGVkKF9GaXJz
dDEpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MSAgPSBfR2V0X3Vud3JhcHBlZChfTGFzdDEpOw0K
ICAgIGNvbnN0IGF1dG8gX1VGaXJzdDIgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QyKTsNCiAgICBj
b25zdCBhdXRvIF9VTGFzdDIgID0gX0dldF91bndyYXBwZWQoX0xhc3QyKTsNCiAgICByZXR1cm4g
X0xleF9jb21wYXJlX3VuY2hlY2tlZCgNCiAgICAgICAgX1VGaXJzdDEsIF9VTGFzdDEsIF9VRmly
c3QyLCBfVUxhc3QyLCBfUGFzc19mbihfUHJlZCksIF9MZXhfY29tcGFyZV9tZW1jbXBfY2xhc3Np
ZnkoX1VGaXJzdDEsIF9VRmlyc3QyLCBfUHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
SXQxLCBjbGFzcyBfSW5JdDI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIGxleGljb2dyYXBo
aWNhbF9jb21wYXJlKF9Jbkl0MSBfRmlyc3QxLCBfSW5JdDEgX0xhc3QxLCBfSW5JdDIgX0ZpcnN0
MiwgX0luSXQyIF9MYXN0Mikgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IGxleGljb2dyYXBo
aWNhbF9jb21wYXJlKF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBsZXNzPD57fSk7
DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndk
SXQyLCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+
DQpbW25vZGlzY2FyZF1dIGJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoDQogICAgX0V4UG8m
JiwgX0Z3ZEl0MSBfRmlyc3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfRndk
SXQyIF9MYXN0MiwgX1ByIF9QcmVkKSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIHN0YXRp
Y19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJl
cXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgc3RhdGljX2Fzc2Vy
dChfSXNfZndkX2l0ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBm
b3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICByZXR1cm4gOjpzdGQ6OiBsZXhp
Y29ncmFwaGljYWxfY29tcGFyZShfRmlyc3QxLCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0MiwgX1Bh
c3NfZm4oX1ByZWQpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQx
LCBjbGFzcyBfRndkSXQyLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAw
Pg0KW1tub2Rpc2NhcmRdXSBib29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKA0KICAgIF9FeFBv
JiYsIF9Gd2RJdDEgX0ZpcnN0MSwgX0Z3ZEl0MSBfTGFzdDEsIF9Gd2RJdDIgX0ZpcnN0MiwgX0Z3
ZEl0MiBfTGFzdDIpIG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChf
SXNfZndkX2l0ZXJfdjxfRndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3
YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2Rf
aXRlcl92PF9Gd2RJdDI+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRl
cmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IGxleGljb2dyYXBoaWNh
bF9jb21wYXJlKF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyKTsNCn0NCiNsaW5lIDUy
MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0
aWxpdHkiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNTI5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBfV2l0aGluX2xpbWl0cyhjb25zdCBfVHkmIF9WYWws
IHRydWVfdHlwZSwgdHJ1ZV90eXBlLCBfQW55X3RhZykgeyANCiAgICByZXR1cm4gKC0xMjgpIDw9
IF9WYWwgJiYgX1ZhbCA8PSAxMjc7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBib29sIF9XaXRoaW5fbGltaXRzKGNvbnN0IF9UeSYgX1ZhbCwgdHJ1
ZV90eXBlLCBmYWxzZV90eXBlLCB0cnVlX3R5cGUpIHsNCiAgICANCiAgICByZXR1cm4gX1ZhbCA8
PSAxMjcgfHwgc3RhdGljX2Nhc3Q8X1R5PigoLTEyOCkpIDw9IF9WYWw7DQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIF9XaXRoaW5fbGltaXRz
KGNvbnN0IF9UeSYgX1ZhbCwgdHJ1ZV90eXBlLCBmYWxzZV90eXBlLCBmYWxzZV90eXBlKSB7DQog
ICAgDQogICAgcmV0dXJuIF9WYWwgPD0gMTI3Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBfV2l0aGluX2xpbWl0cyhjb25zdCBfVHkmIF9W
YWwsIGZhbHNlX3R5cGUsIHRydWVfdHlwZSwgX0FueV90YWcpIHsNCiAgICANCiAgICByZXR1cm4g
MCA8PSBfVmFsICYmIF9WYWwgPD0gMHhmZjsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltb
bm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgX1dpdGhpbl9saW1pdHMoY29uc3QgX1R5JiBfVmFs
LCBmYWxzZV90eXBlLCBmYWxzZV90eXBlLCBfQW55X3RhZykgew0KICAgIA0KICAgIHJldHVybiBf
VmFsIDw9IDB4ZmY7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX1R5Pg0KW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBfV2l0aGluX2xpbWl0cyhfSW5JdCwgY29uc3QgX1R5
JiBfVmFsKSB7IA0KICAgIHVzaW5nIF9FbGVtID0gcmVtb3ZlX3BvaW50ZXJfdDxfSW5JdD47DQog
ICAgcmV0dXJuIF9XaXRoaW5fbGltaXRzKF9WYWwsIGlzX3NpZ25lZDxfRWxlbT57fSwgaXNfc2ln
bmVkPF9UeT57fSwgYm9vbF9jb25zdGFudDwtMSA9PSBzdGF0aWNfY2FzdDxfVHk+KC0xKT57fSk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdD4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJv
b2wgX1dpdGhpbl9saW1pdHMoX0luSXQsIGNvbnN0IGJvb2wmKSB7IA0KICAgIHJldHVybiB0cnVl
Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQsIGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0g
Y29uc3RleHByIF9Jbkl0IF9GaW5kX3VuY2hlY2tlZDEoX0luSXQgX0ZpcnN0LCBjb25zdCBfSW5J
dCBfTGFzdCwgY29uc3QgX1R5JiBfVmFsLCBmYWxzZV90eXBlKSB7DQogICAgDQogICAgZm9yICg7
IF9GaXJzdCAhPSBfTGFzdDsgKytfRmlyc3QpIHsNCiAgICAgICAgaWYgKCpfRmlyc3QgPT0gX1Zh
bCkgew0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4g
X0ZpcnN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQsIGNsYXNzIF9UeT4NCltbbm9kaXNj
YXJkXV0gaW5saW5lIF9Jbkl0IF9GaW5kX3VuY2hlY2tlZDEoX0luSXQgX0ZpcnN0LCBjb25zdCBf
SW5JdCBfTGFzdCwgY29uc3QgX1R5JiBfVmFsLCB0cnVlX3R5cGUpIHsNCiAgICANCiAgICBpZiAo
IV9XaXRoaW5fbGltaXRzKF9GaXJzdCwgX1ZhbCkpIHsNCiAgICAgICAgcmV0dXJuIF9MYXN0Ow0K
ICAgIH0NCg0KDQoNCg0KDQoNCg0KICAgIF9GaXJzdCA9DQogICAgICAgIHN0YXRpY19jYXN0PF9J
bkl0Pig6OiBtZW1jaHIoX0ZpcnN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfVmFsKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihfTGFzdCAtIF9GaXJzdCkpKTsNCiAgICByZXR1cm4gX0ZpcnN0
ID8gX0ZpcnN0IDogX0xhc3Q7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX1R5
Pg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0luSXQgX0ZpbmRfdW5jaGVja2VkKGNvbnN0IF9Jbkl0
IF9GaXJzdCwgY29uc3QgX0luSXQgX0xhc3QsIGNvbnN0IF9UeSYgX1ZhbCkgew0KICAgIA0KICAg
IA0KICAgIHVzaW5nIF9NZW1jaHJfb3B0ID0gYm9vbF9jb25zdGFudDwNCiAgICAgICAgaXNfaW50
ZWdyYWxfdjxfVHk+ICYmIF9Jc19hbnlfb2ZfdjxfSW5JdCwgY2hhciosIHNpZ25lZCBjaGFyKiwg
dW5zaWduZWQgY2hhciosIA0KICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IHNpZ25lZCBj
aGFyKiwgY29uc3QgdW5zaWduZWQgY2hhcio+PjsNCg0KICAgIHJldHVybiBfRmluZF91bmNoZWNr
ZWQxKF9GaXJzdCwgX0xhc3QsIF9WYWwsIF9NZW1jaHJfb3B0e30pOw0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0luSXQsIGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9Jbkl0IGZpbmQo
X0luSXQgX0ZpcnN0LCBjb25zdCBfSW5JdCBfTGFzdCwgY29uc3QgX1R5JiBfVmFsKSB7IA0KICAg
IF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIF9TZWVrX3dyYXBwZWQoX0Zp
cnN0LCBfRmluZF91bmNoZWNrZWQoX0dldF91bndyYXBwZWQoX0ZpcnN0KSwgX0dldF91bndyYXBw
ZWQoX0xhc3QpLCBfVmFsKSk7DQogICAgcmV0dXJuIF9GaXJzdDsNCn0NCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1R5LCBfRW5hYmxlX2lmX2V4ZWN1dGlv
bl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KW1tub2Rpc2NhcmRdXSBfRndkSXQgZmluZChfRXhQbyYm
IF9FeGVjLCBfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndkSXQgX0xhc3QsIGNvbnN0IF9UeSYgX1Zh
bCkgbm9leGNlcHQ7IA0KI2xpbmUgNTM5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQs
IGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9JdGVyX2RpZmZfdDxfSW5JdD4gY291
bnQoY29uc3QgX0luSXQgX0ZpcnN0LCBjb25zdCBfSW5JdCBfTGFzdCwgY29uc3QgX1R5JiBfVmFs
KSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0
byBfVUZpcnN0ICAgICAgICAgICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNv
bnN0IGF1dG8gX1VMYXN0ICAgICAgICAgID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KICAgIF9J
dGVyX2RpZmZfdDxfSW5JdD4gX0NvdW50ID0gMDsNCg0KICAgIGZvciAoOyBfVUZpcnN0ICE9IF9V
TGFzdDsgKytfVUZpcnN0KSB7DQogICAgICAgIGlmICgqX1VGaXJzdCA9PSBfVmFsKSB7DQogICAg
ICAgICAgICArK19Db3VudDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiBfQ291bnQ7
DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNsYXNzIF9UeSwg
X0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0g
X0l0ZXJfZGlmZl90PF9Gd2RJdD4gY291bnQoDQogICAgX0V4UG8mJiBfRXhlYywgY29uc3QgX0Z3
ZEl0IF9GaXJzdCwgY29uc3QgX0Z3ZEl0IF9MYXN0LCBjb25zdCBfVHkmIF9WYWwpIG5vZXhjZXB0
OyANCiNsaW5lIDU0MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfVHks
IGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9Jbkl0IF9GaW5kX3ByKF9Jbkl0
IF9GaXJzdCwgY29uc3QgX0luSXQgX0xhc3QsIGNvbnN0IF9UeSYgX1ZhbCwgX1ByIF9QcmVkKSB7
DQogICAgZm9yICg7IF9GaXJzdCAhPSBfTGFzdDsgKytfRmlyc3QpIHsNCiAgICAgICAgaWYgKF9Q
cmVkKCpfRmlyc3QsIF9WYWwpKSB7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAg
IH0NCg0KICAgIHJldHVybiBfRmlyc3Q7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xh
c3MgX1R5LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfSXRlcl9kaWZmX3Q8
X0luSXQ+IF9Db3VudF9wcihfSW5JdCBfRmlyc3QsIGNvbnN0IF9Jbkl0IF9MYXN0LCBjb25zdCBf
VHkmIF9WYWwsIF9QciBfUHJlZCkgew0KICAgIF9JdGVyX2RpZmZfdDxfSW5JdD4gX0NvdW50ID0g
MDsNCg0KICAgIGZvciAoOyBfRmlyc3QgIT0gX0xhc3Q7ICsrX0ZpcnN0KSB7DQogICAgICAgIGlm
IChfUHJlZCgqX0ZpcnN0LCBfVmFsKSkgew0KICAgICAgICAgICAgKytfQ291bnQ7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICByZXR1cm4gX0NvdW50Ow0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0
MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBf
Q2hlY2tfbWF0Y2hfY291bnRzKA0KICAgIGNvbnN0IF9Gd2RJdDEgX0ZpcnN0MSwgX0Z3ZEl0MSBf
TGFzdDEsIGNvbnN0IF9Gd2RJdDIgX0ZpcnN0MiwgX0Z3ZEl0MiBfTGFzdDIsIF9QciBfUHJlZCkg
ew0KICAgIA0KICAgIDsNCiAgICA7DQoNCiAgICBpZiBjb25zdGV4cHIgKF9Jc19iaWRpX2l0ZXJf
djxfRndkSXQxPiAmJiBfSXNfYmlkaV9pdGVyX3Y8X0Z3ZEl0Mj4pIHsNCiAgICAgICAgZG8geyAN
CiAgICAgICAgICAgIC0tX0xhc3QxOw0KICAgICAgICAgICAgLS1fTGFzdDI7DQogICAgICAgIH0g
d2hpbGUgKF9QcmVkKCpfTGFzdDEsICpfTGFzdDIpKTsNCiAgICAgICAgKytfTGFzdDE7DQogICAg
ICAgICsrX0xhc3QyOw0KICAgIH0NCg0KDQojbGluZSA1NDgwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KICAgIGZvciAoX0Z3ZEl0
MSBfTmV4dDEgPSBfRmlyc3QxOyBfTmV4dDEgIT0gX0xhc3QxOyArK19OZXh0MSkgew0KICAgICAg
ICBpZiAoX05leHQxID09IF9GaW5kX3ByKF9GaXJzdDEsIF9OZXh0MSwgKl9OZXh0MSwgX1ByZWQp
KSB7IA0KICAgICAgICAgICAgX0l0ZXJfZGlmZl90PF9Gd2RJdDI+IF9Db3VudDIgPSBfQ291bnRf
cHIoX0ZpcnN0MiwgX0xhc3QyLCAqX05leHQxLCBfUHJlZCk7DQogICAgICAgICAgICBpZiAoX0Nv
dW50MiA9PSAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyANCiAgICAgICAgICAg
IH0NCg0KICAgICAgICAgICAgX0Z3ZEl0MSBfU2tpcDEgICAgICAgICAgICAgICAgPSBfTmV4dF9p
dGVyKF9OZXh0MSk7DQogICAgICAgICAgICBfSXRlcl9kaWZmX3Q8X0Z3ZEl0MT4gX0NvdW50MSA9
IF9Db3VudF9wcihfU2tpcDEsIF9MYXN0MSwgKl9OZXh0MSwgX1ByZWQpICsgMTsNCiAgICAgICAg
ICAgIGlmIChfQ291bnQyICE9IF9Db3VudDEpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7IA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIHRydWU7
DQp9DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0Pg0KaW5saW5lIHZvaWQgcmV2ZXJzZShj
b25zdCBfQmlkSXQgX0ZpcnN0LCBjb25zdCBfQmlkSXQgX0xhc3QpIHsgDQogICAgX0FkbF92ZXJp
ZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0byBfVUZpcnN0ID0gX0dldF91bndyYXBw
ZWQoX0ZpcnN0KTsNCiAgICBhdXRvIF9VTGFzdCAgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQoN
CiAgICB1c2luZyBfRWxlbSA9IHJlbW92ZV9wb2ludGVyX3Q8ZGVjbHR5cGUoX1VGaXJzdCk+Ow0K
ICAgIGNvbnN0ZXhwciBib29sIF9BbGxvd192ZWN0b3JpemF0aW9uID0NCiAgICAgICAgY29uanVu
Y3Rpb25fdjxpc19wb2ludGVyPGRlY2x0eXBlKF9VRmlyc3QpPiwgX0lzX3RyaXZpYWxseV9zd2Fw
cGFibGU8X0VsZW0+LCBuZWdhdGlvbjxpc192b2xhdGlsZTxfRWxlbT4+PjsNCg0KICAgIGlmIGNv
bnN0ZXhwciAoX0FsbG93X3ZlY3Rvcml6YXRpb24gJiYgc2l6ZW9mKF9FbGVtKSA9PSAxKSB7DQoN
Cg0KDQogICAgICAgIHsNCiAgICAgICAgICAgIF9fc3RkX3JldmVyc2VfdHJpdmlhbGx5X3N3YXBw
YWJsZV8xKF9VRmlyc3QsIF9VTGFzdCk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0N
CiAgICB9IGVsc2UgaWYgY29uc3RleHByIChfQWxsb3dfdmVjdG9yaXphdGlvbiAmJiBzaXplb2Yo
X0VsZW0pID09IDIpIHsNCg0KDQoNCiAgICAgICAgew0KICAgICAgICAgICAgX19zdGRfcmV2ZXJz
ZV90cml2aWFsbHlfc3dhcHBhYmxlXzIoX1VGaXJzdCwgX1VMYXN0KTsNCiAgICAgICAgICAgIHJl
dHVybjsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSBpZiBjb25zdGV4cHIgKF9BbGxvd192ZWN0b3Jp
emF0aW9uICYmIHNpemVvZihfRWxlbSkgPT0gNCkgew0KDQoNCg0KICAgICAgICB7DQogICAgICAg
ICAgICBfX3N0ZF9yZXZlcnNlX3RyaXZpYWxseV9zd2FwcGFibGVfNChfVUZpcnN0LCBfVUxhc3Qp
Ow0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgfSBlbHNlIGlmIGNvbnN0ZXhw
ciAoX0FsbG93X3ZlY3Rvcml6YXRpb24gJiYgc2l6ZW9mKF9FbGVtKSA9PSA4KSB7DQoNCg0KDQog
ICAgICAgIHsNCiAgICAgICAgICAgIF9fc3RkX3JldmVyc2VfdHJpdmlhbGx5X3N3YXBwYWJsZV84
KF9VRmlyc3QsIF9VTGFzdCk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICB9
DQojbGluZSA1NTQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHh1dGlsaXR5Ig0KDQogICAgZm9yICg7IF9VRmlyc3QgIT0gX1VMYXN0ICYmIF9VRmly
c3QgIT0gLS1fVUxhc3Q7ICsrX1VGaXJzdCkgew0KICAgICAgICA6OnN0ZDo6IGl0ZXJfc3dhcChf
VUZpcnN0LCBfVUxhc3QpOw0KICAgIH0NCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NjA5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0JpZEl0LCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xp
Y3lfdDxfRXhQbz4gPSAwPg0Kdm9pZCByZXZlcnNlKF9FeFBvJiYsIF9CaWRJdCBfRmlyc3QsIF9C
aWRJdCBfTGFzdCkgbm9leGNlcHQgIHsNCiAgICANCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBy
ZXZlcnNlKF9GaXJzdCwgX0xhc3QpOw0KfQ0KI2xpbmUgNTYxOCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZEl0Pg0KY29uc3RleHByIHBhaXI8X0JpZEl0LCBfQmlkSXQ+IF9SZXZlcnNlX3Vu
dGlsX3NlbnRpbmVsX3VuY2hlY2tlZChfQmlkSXQgX0ZpcnN0LCBfQmlkSXQgX1NlbnRpbmVsLCBf
QmlkSXQgX0xhc3QpIHsNCiAgICANCiAgICB3aGlsZSAoX0ZpcnN0ICE9IF9TZW50aW5lbCAmJiBf
TGFzdCAhPSBfU2VudGluZWwpIHsNCiAgICAgICAgOjpzdGQ6OiBpdGVyX3N3YXAoX0ZpcnN0LCAt
LV9MYXN0KTsNCiAgICAgICAgKytfRmlyc3Q7DQogICAgfQ0KDQogICAgcmV0dXJuIHBhaXI8X0Jp
ZEl0LCBfQmlkSXQ+KF9GaXJzdCwgX0xhc3QpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndk
SXQ+DQppbmxpbmUgX0Z3ZEl0IHJvdGF0ZShfRndkSXQgX0ZpcnN0LCBfRndkSXQgX01pZCwgX0Z3
ZEl0IF9MYXN0KSB7DQogICAgDQogICAgDQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0Zp
cnN0LCBfTWlkKTsNCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfTWlkLCBfTGFzdCk7DQogICAgYXV0
byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGF1dG8gX1VNaWQg
ICAgICAgID0gX0dldF91bndyYXBwZWQoX01pZCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBf
R2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgaWYgKF9VRmlyc3QgPT0gX1VNaWQpIHsNCiAgICAg
ICAgcmV0dXJuIF9MYXN0Ow0KICAgIH0NCg0KICAgIGlmIChfVU1pZCA9PSBfVUxhc3QpIHsNCiAg
ICAgICAgcmV0dXJuIF9GaXJzdDsNCiAgICB9DQoNCiAgICBpZiBjb25zdGV4cHIgKF9Jc19yYW5k
b21faXRlcl92PF9Gd2RJdD4pIHsNCiAgICAgICAgOjpzdGQ6OiByZXZlcnNlKF9VRmlyc3QsIF9V
TWlkKTsNCiAgICAgICAgOjpzdGQ6OiByZXZlcnNlKF9VTWlkLCBfVUxhc3QpOw0KICAgICAgICA6
OnN0ZDo6IHJldmVyc2UoX1VGaXJzdCwgX1VMYXN0KTsNCiAgICAgICAgX1NlZWtfd3JhcHBlZChf
Rmlyc3QsIF9VRmlyc3QgKyAoX1VMYXN0IC0gX1VNaWQpKTsNCiAgICB9IGVsc2UgaWYgY29uc3Rl
eHByIChfSXNfYmlkaV9pdGVyX3Y8X0Z3ZEl0Pikgew0KICAgICAgICA6OnN0ZDo6IHJldmVyc2Uo
X1VGaXJzdCwgX1VNaWQpOw0KICAgICAgICA6OnN0ZDo6IHJldmVyc2UoX1VNaWQsIF9VTGFzdCk7
DQogICAgICAgIGF1dG8gX1RtcCA9IF9SZXZlcnNlX3VudGlsX3NlbnRpbmVsX3VuY2hlY2tlZChf
VUZpcnN0LCBfVU1pZCwgX1VMYXN0KTsNCiAgICAgICAgOjpzdGQ6OiByZXZlcnNlKF9UbXAuZmly
c3QsIF9UbXAuc2Vjb25kKTsNCiAgICAgICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9VTWlkICE9
IF9UbXAuZmlyc3QgPyBfVG1wLmZpcnN0IDogX1RtcC5zZWNvbmQpOw0KICAgIH0gZWxzZSB7DQog
ICAgICAgIGF1dG8gX1VOZXh0ID0gX1VNaWQ7DQogICAgICAgIGRvIHsgDQogICAgICAgICAgICA6
OnN0ZDo6IGl0ZXJfc3dhcChfVUZpcnN0LCBfVU5leHQpOw0KICAgICAgICAgICAgKytfVUZpcnN0
Ow0KICAgICAgICAgICAgKytfVU5leHQ7DQogICAgICAgICAgICBpZiAoX1VGaXJzdCA9PSBfVU1p
ZCkgew0KICAgICAgICAgICAgICAgIF9VTWlkID0gX1VOZXh0Ow0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9IHdoaWxlIChfVU5leHQgIT0gX1VMYXN0KTsNCiAgICAgICAgX1NlZWtfd3JhcHBlZChf
Rmlyc3QsIF9VRmlyc3QpOw0KICAgICAgICB3aGlsZSAoX1VNaWQgIT0gX1VMYXN0KSB7IA0KICAg
ICAgICAgICAgX1VOZXh0ID0gX1VNaWQ7DQogICAgICAgICAgICBkbyB7DQogICAgICAgICAgICAg
ICAgOjpzdGQ6OiBpdGVyX3N3YXAoX1VGaXJzdCwgX1VOZXh0KTsNCiAgICAgICAgICAgICAgICAr
K19VRmlyc3Q7DQogICAgICAgICAgICAgICAgKytfVU5leHQ7DQogICAgICAgICAgICAgICAgaWYg
KF9VRmlyc3QgPT0gX1VNaWQpIHsNCiAgICAgICAgICAgICAgICAgICAgX1VNaWQgPSBfVU5leHQ7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSB3aGlsZSAoX1VOZXh0ICE9IF9VTGFz
dCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gX0ZpcnN0Ow0KfQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDU3NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBf
RndkSXQsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQg
cm90YXRlKF9FeFBvJiYsIF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTWlkLCBfRndkSXQgX0xhc3Qp
IG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogcm90YXRlKF9GaXJz
dCwgX01pZCwgX0xhc3QpOw0KfQ0KI2xpbmUgNTc2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dXRpbGl0eSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0luSXQsIGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9Jbkl0IGZpbmRfaWYoX0lu
SXQgX0ZpcnN0LCBjb25zdCBfSW5JdCBfTGFzdCwgX1ByIF9QcmVkKSB7IA0KICAgIF9BZGxfdmVy
aWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgID0gX0dldF91
bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVk
KF9MYXN0KTsNCiAgICBmb3IgKDsgX1VGaXJzdCAhPSBfVUxhc3Q7ICsrX1VGaXJzdCkgew0KICAg
ICAgICBpZiAoX1ByZWQoKl9VRmlyc3QpKSB7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0LCBfVUZpcnN0KTsNCiAgICByZXR1
cm4gX0ZpcnN0Ow0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNzIF9UeSwgY2xh
c3MgX1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0Z3ZEl0IGxvd2VyX2JvdW5kKF9Gd2RJdCBf
Rmlyc3QsIGNvbnN0IF9Gd2RJdCBfTGFzdCwgY29uc3QgX1R5JiBfVmFsLCBfUHIgX1ByZWQpIHsN
CiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9V
Rmlyc3QgICAgICAgICAgICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIF9JdGVy
X2RpZmZfdDxfRndkSXQ+IF9Db3VudCA9IDo6c3RkOjogZGlzdGFuY2UoX1VGaXJzdCwgX0dldF91
bndyYXBwZWQoX0xhc3QpKTsNCg0KICAgIHdoaWxlICgwIDwgX0NvdW50KSB7IA0KICAgICAgICBj
b25zdCBfSXRlcl9kaWZmX3Q8X0Z3ZEl0PiBfQ291bnQyID0gX0NvdW50IC8gMjsNCiAgICAgICAg
Y29uc3QgYXV0byBfVU1pZCAgICAgICAgICAgICAgICAgICA9IDo6c3RkOjogbmV4dChfVUZpcnN0
LCBfQ291bnQyKTsNCiAgICAgICAgaWYgKF9QcmVkKCpfVU1pZCwgX1ZhbCkpIHsgDQogICAgICAg
ICAgICBfVUZpcnN0ID0gX05leHRfaXRlcihfVU1pZCk7DQogICAgICAgICAgICBfQ291bnQgLT0g
X0NvdW50MiArIDE7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBfQ291bnQgPSBfQ291
bnQyOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9VRmly
c3QpOw0KICAgIHJldHVybiBfRmlyc3Q7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNs
YXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9Gd2RJdCBsb3dlcl9ib3VuZChfRndkSXQg
X0ZpcnN0LCBfRndkSXQgX0xhc3QsIGNvbnN0IF9UeSYgX1ZhbCkgew0KICAgIA0KICAgIHJldHVy
biA6OnN0ZDo6IGxvd2VyX2JvdW5kKF9GaXJzdCwgX0xhc3QsIF9WYWwsIGxlc3M8Pnt9KTsNCn0N
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0Mj4NCmlubGluZSBfRndk
SXQyIF9Td2FwX3Jhbmdlc191bmNoZWNrZWQoX0Z3ZEl0MSBfRmlyc3QxLCBjb25zdCBfRndkSXQx
IF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyKSB7DQogICAgDQogICAgZm9yICg7IF9GaXJzdDEgIT0g
X0xhc3QxOyArK19GaXJzdDEsICh2b2lkKSArK19GaXJzdDIpIHsNCiAgICAgICAgOjpzdGQ6OiBp
dGVyX3N3YXAoX0ZpcnN0MSwgX0ZpcnN0Mik7DQogICAgfQ0KDQogICAgcmV0dXJuIF9GaXJzdDI7
DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgZW5hYmxlX2lmX3Q8X0lzX3RyaXZpYWxseV9z
d2FwcGFibGVfdjxfVHk+LCBpbnQ+ID0gMD4NCmlubGluZSBfVHkqIF9Td2FwX3Jhbmdlc191bmNo
ZWNrZWQoX1R5KiBfRmlyc3QxLCBfVHkqIGNvbnN0IF9MYXN0MSwgX1R5KiBfRmlyc3QyKSB7DQog
ICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICBfX3N0ZF9zd2FwX3Jhbmdlc190cml2aWFsbHlf
c3dhcHBhYmxlX25vYWxpYXMoX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyKTsNCiAgICByZXR1cm4g
X0ZpcnN0MiArIChfTGFzdDEgLSBfRmlyc3QxKTsNCn0NCiNsaW5lIDU4MzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHV0aWxpdHkiDQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9EaWZmLCBjbGFzcyBfVXJuZz4NCmNsYXNzIF9SbmdfZnJvbV91cm5nIHsg
DQpwdWJsaWM6DQogICAgdXNpbmcgX1R5MCA9IG1ha2VfdW5zaWduZWRfdDxfRGlmZj47DQogICAg
dXNpbmcgX1R5MSA9IHR5cGVuYW1lIF9Vcm5nOjpyZXN1bHRfdHlwZTsNCg0KICAgIHVzaW5nIF9V
ZGlmZiA9IGNvbmRpdGlvbmFsX3Q8c2l6ZW9mKF9UeTEpIDwgc2l6ZW9mKF9UeTApLCBfVHkwLCBf
VHkxPjsNCg0KICAgIGV4cGxpY2l0IF9SbmdfZnJvbV91cm5nKF9Vcm5nJiBfRnVuYykgOiBfUmVm
KF9GdW5jKSwgX0JpdHMoOCAqIHNpemVvZihfVWRpZmYpKSwgX0JtYXNrKF9VZGlmZigtMSkpIHsN
CiAgICAgICAgZm9yICg7IChfVXJuZzo6bWF4KSgpIC0gKF9Vcm5nOjptaW4pKCkgPCBfQm1hc2s7
IF9CbWFzayA+Pj0gMSkgew0KICAgICAgICAgICAgLS1fQml0czsNCiAgICAgICAgfQ0KICAgIH0N
Cg0KICAgIF9EaWZmIG9wZXJhdG9yKCkoX0RpZmYgX0luZGV4KSB7IA0KICAgICAgICBmb3IgKDs7
KSB7IA0KICAgICAgICAgICAgX1VkaWZmIF9SZXQgID0gMDsgDQogICAgICAgICAgICBfVWRpZmYg
X01hc2sgPSAwOyANCg0KICAgICAgICAgICAgd2hpbGUgKF9NYXNrIDwgX1VkaWZmKF9JbmRleCAt
IDEpKSB7IA0KICAgICAgICAgICAgICAgIF9SZXQgPDw9IF9CaXRzIC0gMTsgDQogICAgICAgICAg
ICAgICAgX1JldCA8PD0gMTsNCiAgICAgICAgICAgICAgICBfUmV0IHw9IF9HZXRfYml0cygpOw0K
ICAgICAgICAgICAgICAgIF9NYXNrIDw8PSBfQml0cyAtIDE7IA0KICAgICAgICAgICAgICAgIF9N
YXNrIDw8PSAxOw0KICAgICAgICAgICAgICAgIF9NYXNrIHw9IF9CbWFzazsNCiAgICAgICAgICAg
IH0NCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoX1JldCAvIF9JbmRleCA8IF9NYXNr
IC8gX0luZGV4IHx8IF9NYXNrICUgX0luZGV4ID09IF9VZGlmZihfSW5kZXggLSAxKSkgew0KICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfRGlmZj4oX1JldCAlIF9JbmRleCk7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfVWRpZmYgX0dldF9hbGxfYml0
cygpIHsNCiAgICAgICAgX1VkaWZmIF9SZXQgPSAwOw0KDQogICAgICAgIGZvciAoc2l6ZV90IF9O
dW0gPSAwOyBfTnVtIDwgOCAqIHNpemVvZihfVWRpZmYpOyBfTnVtICs9IF9CaXRzKSB7IA0KICAg
ICAgICAgICAgX1JldCA8PD0gX0JpdHMgLSAxOyANCiAgICAgICAgICAgIF9SZXQgPDw9IDE7DQog
ICAgICAgICAgICBfUmV0IHw9IF9HZXRfYml0cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0
dXJuIF9SZXQ7DQogICAgfQ0KDQogICAgX1JuZ19mcm9tX3VybmcoY29uc3QgX1JuZ19mcm9tX3Vy
bmcmKSA9IGRlbGV0ZTsNCiAgICBfUm5nX2Zyb21fdXJuZyYgb3BlcmF0b3I9KGNvbnN0IF9Sbmdf
ZnJvbV91cm5nJikgPSBkZWxldGU7DQoNCnByaXZhdGU6DQogICAgX1VkaWZmIF9HZXRfYml0cygp
IHsgDQogICAgICAgIGZvciAoOzspIHsgDQogICAgICAgICAgICBfVWRpZmYgX1ZhbCA9IF9SZWYo
KSAtIChfVXJuZzo6bWluKSgpOw0KDQogICAgICAgICAgICBpZiAoX1ZhbCA8PSBfQm1hc2spIHsN
CiAgICAgICAgICAgICAgICByZXR1cm4gX1ZhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIF9Vcm5nJiBfUmVmOyANCiAgICBzaXplX3QgX0JpdHM7IA0KICAgIF9VZGlm
ZiBfQm1hc2s7IA0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2MsIGNs
YXNzID0gdm9pZD4NCnN0cnVjdCBfSGFzX2FsbG9jYXRvcl90eXBlIDogZmFsc2VfdHlwZSB7fTsg
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9BbGxvYz4NCnN0cnVjdCBfSGFzX2FsbG9j
YXRvcl90eXBlPF9UeSwgX0FsbG9jLCB2b2lkX3Q8dHlwZW5hbWUgX1R5OjphbGxvY2F0b3JfdHlw
ZT4+DQogICAgOiBpc19jb252ZXJ0aWJsZTxfQWxsb2MsIHR5cGVuYW1lIF9UeTo6YWxsb2NhdG9y
X3R5cGU+Ojp0eXBlIHt9OyANCg0KDQpzdHJ1Y3QgYWxsb2NhdG9yX2FyZ190IHsgDQogICAgZXhw
bGljaXQgYWxsb2NhdG9yX2FyZ190KCkgPSBkZWZhdWx0Ow0KfTsNCg0KaW5saW5lIGNvbnN0ZXhw
ciBhbGxvY2F0b3JfYXJnX3QgYWxsb2NhdG9yX2FyZ3t9Ow0KDQpbW25vcmV0dXJuXV0gIHZvaWQg
X19jZGVjbCBfWGJhZF9hbGxvYygpOw0KW1tub3JldHVybl1dICB2b2lkIF9fY2RlY2wgX1hpbnZh
bGlkX2FyZ3VtZW50KCAgY29uc3QgY2hhciopOw0KW1tub3JldHVybl1dICB2b2lkIF9fY2RlY2wg
X1hsZW5ndGhfZXJyb3IoICBjb25zdCBjaGFyKik7DQpbW25vcmV0dXJuXV0gIHZvaWQgX19jZGVj
bCBfWG91dF9vZl9yYW5nZSggIGNvbnN0IGNoYXIqKTsNCltbbm9yZXR1cm5dXSAgdm9pZCBfX2Nk
ZWNsIF9Yb3ZlcmZsb3dfZXJyb3IoICBjb25zdCBjaGFyKik7DQpbW25vcmV0dXJuXV0gIHZvaWQg
X19jZGVjbCBfWHJ1bnRpbWVfZXJyb3IoICBjb25zdCBjaGFyKik7DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeSwgY2xhc3MgX0FsbG9jPg0Kc3RydWN0IHVzZXNfYWxsb2NhdG9yIDogX0hhc19hbGxv
Y2F0b3JfdHlwZTxfVHksIF9BbGxvYz46OnR5cGUgew0KICAgIA0KfTsNCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeSwgY2xhc3MgX0FsbG9jPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIHVzZXNfYWxsb2Nh
dG9yX3YgPSB1c2VzX2FsbG9jYXRvcjxfVHksIF9BbGxvYz46OnZhbHVlOw0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfQ2F0ZWdvcnksIGNsYXNzIF9UeSwgY2xhc3MgX0RpZmYgPSBwdHJkaWZmX3QsIGNs
YXNzIF9Qb2ludGVyID0gX1R5KiwgY2xhc3MgX1JlZmVyZW5jZSA9IF9UeSY+DQpzdHJ1Y3QgW1tk
ZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDE1OiAiICJUaGUgc3RkOjppdGVyYXRvciBjbGFzcyB0
ZW1wbGF0ZSAodXNlZCBhcyBhIGJhc2UgY2xhc3MgdG8gcHJvdmlkZSB0eXBlZGVmcykgaXMgZGVw
cmVjYXRlZCBpbiBDKysxNy4gIiAiKFRoZSA8aXRlcmF0b3I+IGhlYWRlciBpcyBOT1QgZGVwcmVj
YXRlZC4pIFRoZSBDKysgU3RhbmRhcmQgaGFzIG5ldmVyIHJlcXVpcmVkIHVzZXItZGVmaW5lZCBp
dGVyYXRvcnMgdG8gIiAiZGVyaXZlIGZyb20gc3RkOjppdGVyYXRvci4gVG8gZml4IHRoaXMgd2Fy
bmluZywgc3RvcCBkZXJpdmluZyBmcm9tIHN0ZDo6aXRlcmF0b3IgYW5kIHN0YXJ0IHByb3ZpZGlu
ZyAiICJwdWJsaWNseSBhY2Nlc3NpYmxlIHR5cGVkZWZzIG5hbWVkIGl0ZXJhdG9yX2NhdGVnb3J5
LCB2YWx1ZV90eXBlLCBkaWZmZXJlbmNlX3R5cGUsIHBvaW50ZXIsIGFuZCByZWZlcmVuY2UuICIg
Ik5vdGUgdGhhdCB2YWx1ZV90eXBlIGlzIHJlcXVpcmVkIHRvIGJlIG5vbi1jb25zdCwgZXZlbiBm
b3IgY29uc3RhbnQgaXRlcmF0b3JzLiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19J
VEVSQVRPUl9CQVNFX0NMQVNTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gaXRlcmF0b3IgeyANCiAgICB1c2luZyBpdGVyYXRv
cl9jYXRlZ29yeSA9IF9DYXRlZ29yeTsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IF9U
eTsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgICA9IF9EaWZmOw0KICAgIHVzaW5nIHBvaW50
ZXIgICAgICAgICAgID0gX1BvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgPSBf
UmVmZXJlbmNlOw0KfTsNCn0NCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNr
KHBvcCkNCiNsaW5lIDU5NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHV0aWxpdHkiDQojbGluZSA1OTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh1dGlsaXR5Ig0KI2xpbmUgMTcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCg0KI3By
YWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1
ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4
IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQg
ew0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9UaWR5X2d1YXJkIHsgDQogICAgX1R5
KiBfVGFyZ2V0Ow0KICAgIH5fVGlkeV9ndWFyZCgpIHsNCiAgICAgICAgaWYgKF9UYXJnZXQpIHsN
CiAgICAgICAgICAgIF9UYXJnZXQtPl9UaWR5KCk7DQogICAgICAgIH0NCiAgICB9DQp9Ow0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX1RpZHlfZGVhbGxvY2F0ZV9ndWFyZCB7IA0K
ICAgIF9UeSogX1RhcmdldDsNCiAgICB+X1RpZHlfZGVhbGxvY2F0ZV9ndWFyZCgpIHsNCiAgICAg
ICAgaWYgKF9UYXJnZXQpIHsNCiAgICAgICAgICAgIF9UYXJnZXQtPl9UaWR5X2RlYWxsb2NhdGUo
KTsNCiAgICAgICAgfQ0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9LZXljbXAsIGNs
YXNzIF9MaHMsIGNsYXNzIF9SaHM+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX05vdGhyb3dfY29t
cGFyZSA9IG5vZXhjZXB0KA0KICAgIHN0YXRpY19jYXN0PGJvb2w+KDo6c3RkOjogZGVjbHZhbDxj
b25zdCBfS2V5Y21wJj4oKSg6OnN0ZDo6IGRlY2x2YWw8Y29uc3QgX0xocyY+KCksIDo6c3RkOjog
ZGVjbHZhbDxjb25zdCBfUmhzJj4oKSkpKTsNCg0KDQp0ZW1wbGF0ZSA8c2l6ZV90IF9UeV9zaXpl
Pg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6ZV90IF9HZXRfc2l6ZV9vZl9uKGNvbnN0IHNp
emVfdCBfQ291bnQpIHsNCiAgICBjb25zdGV4cHIgYm9vbCBfT3ZlcmZsb3dfaXNfcG9zc2libGUg
PSBfVHlfc2l6ZSA+IDE7DQoNCiAgICBpZiBjb25zdGV4cHIgKF9PdmVyZmxvd19pc19wb3NzaWJs
ZSkgew0KICAgICAgICBjb25zdGV4cHIgc2l6ZV90IF9NYXhfcG9zc2libGUgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KC0xKSAvIF9UeV9zaXplOw0KICAgICAgICBpZiAoX0NvdW50ID4gX01heF9wb3Nz
aWJsZSkgew0KICAgICAgICAgICAgX1Rocm93X2JhZF9hcnJheV9uZXdfbGVuZ3RoKCk7IA0KICAg
ICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIF9Db3VudCAqIF9UeV9zaXplOw0KfQ0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQppbmxpbmUgY29uc3RleHByIHNpemVfdCBfTmV3X2FsaWdub2Yg
PSAoOjpzdGQ6OiBtYXgpKGFsaWdub2YoX1R5KSwNCiAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KDE2
dWxsKSANCik7DQoNCg0Kc3RydWN0IF9EZWZhdWx0X2FsbG9jYXRlX3RyYWl0cyB7DQogICAgX19k
ZWNsc3BlYyhhbGxvY2F0b3IpIHN0YXRpYyB2b2lkKiBfQWxsb2NhdGUoY29uc3Qgc2l6ZV90IF9C
eXRlcykgew0KICAgICAgICByZXR1cm4gOjpvcGVyYXRvciBuZXcoX0J5dGVzKTsNCiAgICB9DQoN
Cg0KICAgIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSBzdGF0aWMgdm9pZCogX0FsbG9jYXRlX2FsaWdu
ZWQoY29uc3Qgc2l6ZV90IF9CeXRlcywgY29uc3Qgc2l6ZV90IF9BbGlnbikgew0KICAgICAgICBy
ZXR1cm4gOjpvcGVyYXRvciBuZXcgKF9CeXRlcywgYWxpZ25fdmFsX3R7X0FsaWdufSk7DQogICAg
fQ0KI2xpbmUgODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceG1lbW9yeSINCn07DQoNCmNvbnN0ZXhwciBib29sIF9Jc19wb3dfMihjb25zdCBzaXpl
X3QgX1ZhbHVlKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9WYWx1ZSAhPSAwICYmIChfVmFsdWUg
JiAoX1ZhbHVlIC0gMSkpID09IDA7DQp9DQoNCg0KY29uc3RleHByIHNpemVfdCBfQmlnX2FsbG9j
YXRpb25fdGhyZXNob2xkID0gNDA5NjsNCmNvbnN0ZXhwciBzaXplX3QgX0JpZ19hbGxvY2F0aW9u
X2FsaWdubWVudCA9IDMyOw0KDQpzdGF0aWNfYXNzZXJ0KDIgKiBzaXplb2Yodm9pZCopIDw9IF9C
aWdfYWxsb2NhdGlvbl9hbGlnbm1lbnQsDQogICAgIkJpZyBhbGxvY2F0aW9uIGFsaWdubWVudCBz
aG91bGQgYXQgbGVhc3QgbWF0Y2ggdmVjdG9yIHJlZ2lzdGVyIGFsaWdubWVudCIpOw0Kc3RhdGlj
X2Fzc2VydChfSXNfcG93XzIoX0JpZ19hbGxvY2F0aW9uX2FsaWdubWVudCksICJCaWcgYWxsb2Nh
dGlvbiBhbGlnbm1lbnQgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byIpOw0KDQoNCg0KDQpjb25zdGV4
cHIgc2l6ZV90IF9Ob25fdXNlcl9zaXplICAgICAgICAgICA9IHNpemVvZih2b2lkKikgKyBfQmln
X2FsbG9jYXRpb25fYWxpZ25tZW50IC0gMTsNCiNsaW5lIDEwNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KDQoNCmNvbnN0ZXhwciBz
aXplX3QgX0JpZ19hbGxvY2F0aW9uX3NlbnRpbmVsID0gMHhGQUZBRkFGQUZBRkFGQUZBVUxMOw0K
DQoNCiNsaW5lIDExMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx4bWVtb3J5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHJhaXRzPg0KX19kZWNsc3Bl
YyhhbGxvY2F0b3IpIHZvaWQqIF9BbGxvY2F0ZV9tYW51YWxseV92ZWN0b3JfYWxpZ25lZChjb25z
dCBzaXplX3QgX0J5dGVzKSB7DQogICAgDQogICAgY29uc3Qgc2l6ZV90IF9CbG9ja19zaXplID0g
X05vbl91c2VyX3NpemUgKyBfQnl0ZXM7DQogICAgaWYgKF9CbG9ja19zaXplIDw9IF9CeXRlcykg
ew0KICAgICAgICBfVGhyb3dfYmFkX2FycmF5X25ld19sZW5ndGgoKTsgDQogICAgfQ0KDQogICAg
Y29uc3QgdWludHB0cl90IF9QdHJfY29udGFpbmVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KF9UcmFpdHM6Ol9BbGxvY2F0ZShfQmxvY2tfc2l6ZSkpOw0KICAgIGRvIHsgaWYgKF9QdHJf
Y29udGFpbmVyICE9IDApIHsgfSBlbHNlIHsgZG8geyA7IDo6X2ludmFsaWRfcGFyYW1ldGVyX25v
aW5mb19ub3JldHVybigpOyB9IHdoaWxlIChmYWxzZSk7IH0gOyB9IHdoaWxlIChmYWxzZSk7IA0K
ICAgIHZvaWQqIGNvbnN0IF9QdHIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigoX1B0cl9jb250
YWluZXIgKyBfTm9uX3VzZXJfc2l6ZSkgJiB+KF9CaWdfYWxsb2NhdGlvbl9hbGlnbm1lbnQgLSAx
KSk7DQogICAgc3RhdGljX2Nhc3Q8dWludHB0cl90Kj4oX1B0cilbLTFdID0gX1B0cl9jb250YWlu
ZXI7DQoNCg0KDQoNCiAgICByZXR1cm4gX1B0cjsNCn0NCg0KDQppbmxpbmUgdm9pZCBfQWRqdXN0
X21hbnVhbGx5X3ZlY3Rvcl9hbGlnbmVkKHZvaWQqJiBfUHRyLCBzaXplX3QmIF9CeXRlcykgew0K
ICAgIA0KICAgIF9CeXRlcyArPSBfTm9uX3VzZXJfc2l6ZTsNCg0KICAgIGNvbnN0IHVpbnRwdHJf
dCogY29uc3QgX1B0cl91c2VyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPihfUHRyKTsN
CiAgICBjb25zdCB1aW50cHRyX3QgX1B0cl9jb250YWluZXIgICA9IF9QdHJfdXNlclstMV07DQoN
CiAgICANCiAgICANCiAgICA7DQoNCiAgICANCiAgICANCg0KDQoNCiAgICBjb25zdGV4cHIgdWlu
dHB0cl90IF9NaW5fYmFja19zaGlmdCA9IHNpemVvZih2b2lkKik7DQojbGluZSAxNTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCiAg
ICBjb25zdCB1aW50cHRyX3QgX0JhY2tfc2hpZnQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oX1B0cikgLSBfUHRyX2NvbnRhaW5lcjsNCiAgICBkbyB7IGlmIChfQmFja19zaGlmdCA+PSBf
TWluX2JhY2tfc2hpZnQgJiYgX0JhY2tfc2hpZnQgPD0gX05vbl91c2VyX3NpemUpIHsgfSBlbHNl
IHsgZG8geyA7IDo6X2ludmFsaWRfcGFyYW1ldGVyX25vaW5mb19ub3JldHVybigpOyB9IHdoaWxl
IChmYWxzZSk7IH0gOyB9IHdoaWxlIChmYWxzZSk7DQogICAgX1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KF9QdHJfY29udGFpbmVyKTsNCn0NCiNsaW5lIDE1NSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KDQoNCg0KdGVtcGxh
dGUgPHNpemVfdCBfQWxpZ24sIGNsYXNzIF9UcmFpdHMgPSBfRGVmYXVsdF9hbGxvY2F0ZV90cmFp
dHMsDQogICAgZW5hYmxlX2lmX3Q8KF9BbGlnbiA+IDE2dWxsKSwgaW50PiA9IDA+DQpfX2RlY2xz
cGVjKGFsbG9jYXRvcikgdm9pZCogX0FsbG9jYXRlKGNvbnN0IHNpemVfdCBfQnl0ZXMpIHsNCiAg
ICANCiAgICBpZiAoX0J5dGVzID09IDApIHsNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAg
fQ0KDQogICAgc2l6ZV90IF9QYXNzZWRfYWxpZ24gPSBfQWxpZ247DQoNCiAgICBpZiAoX0J5dGVz
ID49IF9CaWdfYWxsb2NhdGlvbl90aHJlc2hvbGQpIHsNCiAgICAgICAgDQogICAgICAgIF9QYXNz
ZWRfYWxpZ24gPSAoOjpzdGQ6OiBtYXgpKF9BbGlnbiwgX0JpZ19hbGxvY2F0aW9uX2FsaWdubWVu
dCk7DQogICAgfQ0KI2xpbmUgMTczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQoNCiAgICByZXR1cm4gX1RyYWl0czo6X0FsbG9jYXRl
X2FsaWduZWQoX0J5dGVzLCBfUGFzc2VkX2FsaWduKTsNCn0NCg0KdGVtcGxhdGUgPHNpemVfdCBf
QWxpZ24sIGVuYWJsZV9pZl90PChfQWxpZ24gPiAxNnVsbCksIGludD4gPSAwPg0Kdm9pZCBfRGVh
bGxvY2F0ZSh2b2lkKiBfUHRyLCBjb25zdCBzaXplX3QgX0J5dGVzKSBub2V4Y2VwdCB7DQogICAg
DQogICAgc2l6ZV90IF9QYXNzZWRfYWxpZ24gPSBfQWxpZ247DQoNCiAgICBpZiAoX0J5dGVzID49
IF9CaWdfYWxsb2NhdGlvbl90aHJlc2hvbGQpIHsgDQogICAgICAgIF9QYXNzZWRfYWxpZ24gPSAo
OjpzdGQ6OiBtYXgpKF9BbGlnbiwgX0JpZ19hbGxvY2F0aW9uX2FsaWdubWVudCk7DQogICAgfQ0K
I2xpbmUgMTg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhtZW1vcnkiDQoNCiAgICA6Om9wZXJhdG9yIGRlbGV0ZSAoX1B0ciwgX0J5dGVzLCBhbGln
bl92YWxfdHtfUGFzc2VkX2FsaWdufSk7DQp9DQoNCg0KDQoNCiNsaW5lIDE5NCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KDQp0ZW1w
bGF0ZSA8c2l6ZV90IF9BbGlnbiwgY2xhc3MgX1RyYWl0cyA9IF9EZWZhdWx0X2FsbG9jYXRlX3Ry
YWl0cywNCiAgICBlbmFibGVfaWZfdDwoITEgfHwgX0FsaWduIDw9IDE2dWxsKSwgaW50PiA9IDA+
DQpfX2RlY2xzcGVjKGFsbG9jYXRvcikgdm9pZCogX0FsbG9jYXRlKGNvbnN0IHNpemVfdCBfQnl0
ZXMpIHsNCiAgICANCg0KICAgIGlmIChfQnl0ZXMgPj0gX0JpZ19hbGxvY2F0aW9uX3RocmVzaG9s
ZCkgeyANCiAgICAgICAgcmV0dXJuIF9BbGxvY2F0ZV9tYW51YWxseV92ZWN0b3JfYWxpZ25lZDxf
VHJhaXRzPihfQnl0ZXMpOw0KICAgIH0NCiNsaW5lIDIwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KDQogICAgaWYgKF9CeXRlcyAh
PSAwKSB7DQogICAgICAgIHJldHVybiBfVHJhaXRzOjpfQWxsb2NhdGUoX0J5dGVzKTsNCiAgICB9
DQoNCiAgICByZXR1cm4gbnVsbHB0cjsNCn0NCg0KdGVtcGxhdGUgPHNpemVfdCBfQWxpZ24sIGVu
YWJsZV9pZl90PCghMSB8fCBfQWxpZ24gPD0gMTZ1bGwpLCBpbnQ+ID0gMD4NCnZvaWQgX0RlYWxs
b2NhdGUodm9pZCogX1B0ciwgc2l6ZV90IF9CeXRlcykgbm9leGNlcHQgew0KICAgIA0KDQogICAg
aWYgKF9CeXRlcyA+PSBfQmlnX2FsbG9jYXRpb25fdGhyZXNob2xkKSB7IA0KICAgICAgICBfQWRq
dXN0X21hbnVhbGx5X3ZlY3Rvcl9hbGlnbmVkKF9QdHIsIF9CeXRlcyk7DQogICAgfQ0KI2xpbmUg
MjIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHht
ZW1vcnkiDQoNCiAgICA6Om9wZXJhdG9yIGRlbGV0ZShfUHRyLCBfQnl0ZXMpOw0KfQ0KDQoNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcy4uLiBfVHlwZXM+DQp2b2lkIF9Db25zdHJ1Y3Rf
aW5fcGxhY2UoX1R5JiBfT2JqLCBfVHlwZXMmJi4uLiBfQXJncykgbm9leGNlcHQoaXNfbm90aHJv
d19jb25zdHJ1Y3RpYmxlX3Y8X1R5LCBfVHlwZXMuLi4+KSB7DQogICAgOjpuZXcgKGNvbnN0X2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGNvbnN0IHZvbGF0aWxlIHZvaWQqPig6OnN0ZDo6IGFkZHJl
c3NvZihfT2JqKSkpKQ0KICAgICAgICBfVHkoOjpzdGQ6OiBmb3J3YXJkPF9UeXBlcz4oX0FyZ3Mp
Li4uKTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcy4uLiBfVHlwZXM+DQpfVHkq
IF9HbG9iYWxfbmV3KF9UeXBlcyYmLi4uIF9BcmdzKSB7IA0KICAgIHN0cnVjdCBfR3VhcmRfdHlw
ZSB7DQogICAgICAgIHZvaWQqIF9SZXN1bHQ7DQogICAgICAgIH5fR3VhcmRfdHlwZSgpIHsNCiAg
ICAgICAgICAgIGlmIChfUmVzdWx0KSB7DQogICAgICAgICAgICAgICAgX0RlYWxsb2NhdGU8X05l
d19hbGlnbm9mPF9UeT4+KF9SZXN1bHQsIHNpemVvZihfVHkpKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KICAgIH07DQoNCiAgICBfR3VhcmRfdHlwZSBfR3VhcmR7X0FsbG9jYXRlPF9OZXdf
YWxpZ25vZjxfVHk+PihzaXplb2YoX1R5KSl9Ow0KICAgIDo6bmV3IChfR3VhcmQuX1Jlc3VsdCkg
X1R5KDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgcmV0dXJuIHN0YXRp
Y19jYXN0PF9UeSo+KDo6c3RkOjogZXhjaGFuZ2UoX0d1YXJkLl9SZXN1bHQsIG51bGxwdHIpKTsN
Cn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1B0ciwgY2xhc3MgX1R5Pg0KdXNpbmcgX1JlYmluZF9w
b2ludGVyX3QgPSB0eXBlbmFtZSBwb2ludGVyX3RyYWl0czxfUHRyPjo6dGVtcGxhdGUgcmViaW5k
PF9UeT47DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Qb2ludGVyLCBlbmFibGVfaWZfdDwhaXNfcG9p
bnRlcl92PF9Qb2ludGVyPiwgaW50PiA9IDA+DQpfUG9pbnRlciBfUmVmYW5jeSh0eXBlbmFtZSBw
b2ludGVyX3RyYWl0czxfUG9pbnRlcj46OmVsZW1lbnRfdHlwZSogX1B0cikgbm9leGNlcHQgew0K
ICAgIHJldHVybiBwb2ludGVyX3RyYWl0czxfUG9pbnRlcj46OnBvaW50ZXJfdG8oKl9QdHIpOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1BvaW50ZXIsIGVuYWJsZV9pZl90PGlzX3BvaW50ZXJfdjxf
UG9pbnRlcj4sIGludD4gPSAwPg0KX1BvaW50ZXIgX1JlZmFuY3koX1BvaW50ZXIgX1B0cikgbm9l
eGNlcHQgew0KICAgIHJldHVybiBfUHRyOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp2
b2lkIF9EZXN0cm95X2luX3BsYWNlKF9UeSYgX09iaikgbm9leGNlcHQgew0KICAgIF9PYmoufl9U
eSgpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUHRydHk+DQphdXRvIF9Db25zdF9jYXN0KF9Q
dHJ0eSBfUHRyKSBub2V4Y2VwdCB7IA0KICAgIHVzaW5nIF9FbGVtICAgICAgID0gdHlwZW5hbWUg
cG9pbnRlcl90cmFpdHM8X1B0cnR5Pjo6ZWxlbWVudF90eXBlOw0KICAgIHVzaW5nIF9Nb2RpZmlh
YmxlID0gcmVtb3ZlX2NvbnN0X3Q8X0VsZW0+Ow0KICAgIHVzaW5nIF9EZXN0ICAgICAgID0gdHlw
ZW5hbWUgcG9pbnRlcl90cmFpdHM8X1B0cnR5Pjo6dGVtcGxhdGUgcmViaW5kPF9Nb2RpZmlhYmxl
PjsNCg0KICAgIHJldHVybiBwb2ludGVyX3RyYWl0czxfRGVzdD46OnBvaW50ZXJfdG8oY29uc3Rf
Y2FzdDxfTW9kaWZpYWJsZSY+KCpfUHRyKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQph
dXRvIF9Db25zdF9jYXN0KF9UeSogX1B0cikgbm9leGNlcHQgew0KICAgIHJldHVybiBjb25zdF9j
YXN0PHJlbW92ZV9jb25zdF90PF9UeT4qPihfUHRyKTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9wb2ludGVyX3R5cGUgew0KICAgIHVzaW5n
IHR5cGUgPSB0eXBlbmFtZSBfVHk6OnZhbHVlX3R5cGUqOw0KfTsNCg0KX19wcmFnbWEod2Fybmlu
ZyhwdXNoKSkgX19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5NikpDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5Pg0Kc3RydWN0IF9HZXRfcG9pbnRlcl90eXBlPF9UeSwgdm9pZF90PHR5cGVuYW1lIF9U
eTo6cG9pbnRlcj4+IHsNCiAgICB1c2luZyB0eXBlID0gdHlwZW5hbWUgX1R5Ojpwb2ludGVyOw0K
fTsNCl9fcHJhZ21hKHdhcm5pbmcocG9wKSkNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFz
cyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9jb25zdF9wb2ludGVyX3R5cGUgew0KICAgIHVzaW5nIF9Q
dHJ0eSA9IHR5cGVuYW1lIF9HZXRfcG9pbnRlcl90eXBlPF9UeT46OnR5cGU7DQogICAgdXNpbmcg
X1ZhbHR5ID0gdHlwZW5hbWUgX1R5Ojp2YWx1ZV90eXBlOw0KICAgIHVzaW5nIHR5cGUgICA9IHR5
cGVuYW1lIHBvaW50ZXJfdHJhaXRzPF9QdHJ0eT46OnRlbXBsYXRlIHJlYmluZDxjb25zdCBfVmFs
dHk+Ow0KfTsNCg0KX19wcmFnbWEod2FybmluZyhwdXNoKSkgX19wcmFnbWEod2FybmluZyhkaXNh
YmxlIDogNDk5NikpDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9HZXRfY29uc3RfcG9p
bnRlcl90eXBlPF9UeSwgdm9pZF90PHR5cGVuYW1lIF9UeTo6Y29uc3RfcG9pbnRlcj4+IHsNCiAg
ICB1c2luZyB0eXBlID0gdHlwZW5hbWUgX1R5Ojpjb25zdF9wb2ludGVyOw0KfTsNCl9fcHJhZ21h
KHdhcm5pbmcocG9wKSkNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+DQpz
dHJ1Y3QgX0dldF92b2lkX3BvaW50ZXJfdHlwZSB7DQogICAgdXNpbmcgX1B0cnR5ID0gdHlwZW5h
bWUgX0dldF9wb2ludGVyX3R5cGU8X1R5Pjo6dHlwZTsNCiAgICB1c2luZyB0eXBlICAgPSB0eXBl
bmFtZSBwb2ludGVyX3RyYWl0czxfUHRydHk+Ojp0ZW1wbGF0ZSByZWJpbmQ8dm9pZD47DQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9HZXRfdm9pZF9wb2ludGVyX3R5cGU8X1R5
LCB2b2lkX3Q8dHlwZW5hbWUgX1R5Ojp2b2lkX3BvaW50ZXI+PiB7DQogICAgdXNpbmcgdHlwZSA9
IHR5cGVuYW1lIF9UeTo6dm9pZF9wb2ludGVyOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9jb25zdF92b2lkX3BvaW50ZXJfdHlwZSB7DQog
ICAgdXNpbmcgX1B0cnR5ID0gdHlwZW5hbWUgX0dldF9wb2ludGVyX3R5cGU8X1R5Pjo6dHlwZTsN
CiAgICB1c2luZyB0eXBlICAgPSB0eXBlbmFtZSBwb2ludGVyX3RyYWl0czxfUHRydHk+Ojp0ZW1w
bGF0ZSByZWJpbmQ8Y29uc3Qgdm9pZD47DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3Ry
dWN0IF9HZXRfY29uc3Rfdm9pZF9wb2ludGVyX3R5cGU8X1R5LCB2b2lkX3Q8dHlwZW5hbWUgX1R5
Ojpjb25zdF92b2lkX3BvaW50ZXI+PiB7DQogICAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIF9UeTo6
Y29uc3Rfdm9pZF9wb2ludGVyOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9
IHZvaWQ+DQpzdHJ1Y3QgX0dldF9kaWZmZXJlbmNlX3R5cGUgew0KICAgIHVzaW5nIF9QdHJ0eSA9
IHR5cGVuYW1lIF9HZXRfcG9pbnRlcl90eXBlPF9UeT46OnR5cGU7DQogICAgdXNpbmcgdHlwZSAg
ID0gdHlwZW5hbWUgcG9pbnRlcl90cmFpdHM8X1B0cnR5Pjo6ZGlmZmVyZW5jZV90eXBlOw0KfTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfR2V0X2RpZmZlcmVuY2VfdHlwZTxfVHks
IHZvaWRfdDx0eXBlbmFtZSBfVHk6OmRpZmZlcmVuY2VfdHlwZT4+IHsNCiAgICB1c2luZyB0eXBl
ID0gdHlwZW5hbWUgX1R5OjpkaWZmZXJlbmNlX3R5cGU7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHksIGNsYXNzID0gdm9pZD4NCnN0cnVjdCBfR2V0X3NpemVfdHlwZSB7DQogICAgdXNpbmcg
dHlwZSA9IG1ha2VfdW5zaWduZWRfdDx0eXBlbmFtZSBfR2V0X2RpZmZlcmVuY2VfdHlwZTxfVHk+
Ojp0eXBlPjsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0dldF9zaXplX3R5
cGU8X1R5LCB2b2lkX3Q8dHlwZW5hbWUgX1R5OjpzaXplX3R5cGU+PiB7DQogICAgdXNpbmcgdHlw
ZSA9IHR5cGVuYW1lIF9UeTo6c2l6ZV90eXBlOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9wcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHkg
ew0KICAgIHVzaW5nIHR5cGUgPSBmYWxzZV90eXBlOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9U
eT4NCnN0cnVjdCBfR2V0X3Byb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weTxfVHksIHZvaWRfdDx0
eXBlbmFtZSBfVHk6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50Pj4gew0K
ICAgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBfVHk6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29w
eV9hc3NpZ25tZW50Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+
DQpzdHJ1Y3QgX0dldF9wcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmUgew0KICAgIHVzaW5nIHR5
cGUgPSBmYWxzZV90eXBlOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfR2V0
X3Byb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZTxfVHksIHZvaWRfdDx0eXBlbmFtZSBfVHk6OnBy
b3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50Pj4gew0KICAgIHVzaW5nIHR5cGUg
PSB0eXBlbmFtZSBfVHk6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50Ow0K
fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9w
cm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXAgew0KICAgIHVzaW5nIHR5cGUgPSBmYWxzZV90eXBl
Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfR2V0X3Byb3BhZ2F0ZV9vbl9j
b250YWluZXJfc3dhcDxfVHksIHZvaWRfdDx0eXBlbmFtZSBfVHk6OnByb3BhZ2F0ZV9vbl9jb250
YWluZXJfc3dhcD4+IHsNCiAgICB1c2luZyB0eXBlID0gdHlwZW5hbWUgX1R5Ojpwcm9wYWdhdGVf
b25fY29udGFpbmVyX3N3YXA7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzID0g
dm9pZD4NCnN0cnVjdCBfR2V0X2lzX2Fsd2F5c19lcXVhbCB7DQogICAgdXNpbmcgdHlwZSA9IHR5
cGVuYW1lIGlzX2VtcHR5PF9UeT46OnR5cGU7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
c3RydWN0IF9HZXRfaXNfYWx3YXlzX2VxdWFsPF9UeSwgdm9pZF90PHR5cGVuYW1lIF9UeTo6aXNf
YWx3YXlzX2VxdWFsPj4gew0KICAgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBfVHk6OmlzX2Fsd2F5
c19lcXVhbDsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX090aGVyLCBjbGFz
cyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9yZWJpbmRfdHlwZSB7DQogICAgdXNpbmcgdHlwZSA9IHR5
cGVuYW1lIF9SZXBsYWNlX2ZpcnN0X3BhcmFtZXRlcjxfT3RoZXIsIF9UeT46OnR5cGU7DQp9Ow0K
DQpfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0OTk2
KSkNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9PdGhlcj4NCnN0cnVjdCBfR2V0X3JlYmlu
ZF90eXBlPF9UeSwgX090aGVyLCB2b2lkX3Q8dHlwZW5hbWUgX1R5Ojp0ZW1wbGF0ZSByZWJpbmQ8
X090aGVyPjo6b3RoZXI+PiB7DQogICAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIF9UeTo6dGVtcGxh
dGUgcmViaW5kPF9PdGhlcj46Om90aGVyOw0KfTsNCl9fcHJhZ21hKHdhcm5pbmcocG9wKSkNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KY2xhc3MgYWxsb2NhdG9yOw0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0FsbG9jLCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0lzX2RlZmF1bHRfYWxsb2NhdG9yIDog
ZmFsc2VfdHlwZSB7fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfSXNfZGVmYXVs
dF9hbGxvY2F0b3I8YWxsb2NhdG9yPF9UeT4sIHZvaWRfdDx0eXBlbmFtZSBhbGxvY2F0b3I8X1R5
Pjo6X0Zyb21fcHJpbWFyeT4+DQogICAgOiBpc19zYW1lPHR5cGVuYW1lIGFsbG9jYXRvcjxfVHk+
OjpfRnJvbV9wcmltYXJ5LCBhbGxvY2F0b3I8X1R5Pj46OnR5cGUge307DQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9Wb2lkLCBjbGFzcy4uLiBfVHlwZXM+DQpzdHJ1Y3QgX0hhc19ub19hbGxvY2F0b3Jf
Y29uc3RydWN0IDogdHJ1ZV90eXBlIHt9Ow0KDQpfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3By
YWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0OTk2KSkNCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNs
YXNzIF9QdHIsIGNsYXNzLi4uIF9BcmdzPg0Kc3RydWN0IF9IYXNfbm9fYWxsb2NhdG9yX2NvbnN0
cnVjdDwNCiAgICB2b2lkX3Q8ZGVjbHR5cGUoOjpzdGQ6OiBkZWNsdmFsPF9BbGxvYyY+KCkuY29u
c3RydWN0KDo6c3RkOjogZGVjbHZhbDxfUHRyPigpLCA6OnN0ZDo6IGRlY2x2YWw8X0FyZ3M+KCku
Li4pKT4sIF9BbGxvYywgX1B0ciwNCiAgICBfQXJncy4uLj4gOiBmYWxzZV90eXBlIHt9Ow0KX19w
cmFnbWEod2FybmluZyhwb3ApKQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jLCBjbGFzcyBfUHRy
LCBjbGFzcy4uLiBfQXJncz4NCnVzaW5nIF9Vc2VzX2RlZmF1bHRfY29uc3RydWN0ID0NCiAgICBk
aXNqdW5jdGlvbjxfSXNfZGVmYXVsdF9hbGxvY2F0b3I8X0FsbG9jPiwgX0hhc19ub19hbGxvY2F0
b3JfY29uc3RydWN0PHZvaWQsIF9BbGxvYywgX1B0ciwgX0FyZ3MuLi4+PjsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0FsbG9jLCBjbGFzcyBfUHRyLCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0hhc19u
b19hbGxvY19kZXN0cm95IDogdHJ1ZV90eXBlIHt9Ow0KDQpfX3ByYWdtYSh3YXJuaW5nKHB1c2gp
KSBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0OTk2KSkNCnRlbXBsYXRlIDxjbGFzcyBfQWxs
b2MsIGNsYXNzIF9QdHI+DQpzdHJ1Y3QgX0hhc19ub19hbGxvY19kZXN0cm95PF9BbGxvYywgX1B0
ciwgdm9pZF90PGRlY2x0eXBlKDo6c3RkOjogZGVjbHZhbDxfQWxsb2MmPigpLmRlc3Ryb3koOjpz
dGQ6OiBkZWNsdmFsPF9QdHI+KCkpKT4+DQogICAgOiBmYWxzZV90eXBlIHt9Ow0KX19wcmFnbWEo
d2FybmluZyhwb3ApKQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jLCBjbGFzcyBfUHRyPg0KdXNp
bmcgX1VzZXNfZGVmYXVsdF9kZXN0cm95ID0gZGlzanVuY3Rpb248X0lzX2RlZmF1bHRfYWxsb2Nh
dG9yPF9BbGxvYz4sIF9IYXNfbm9fYWxsb2NfZGVzdHJveTxfQWxsb2MsIF9QdHI+PjsNCg0KdGVt
cGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MgX1B0cj4NCnVzaW5nIF9Vc2VzX2RlZmF1bHRfZGVz
dHJveV90ID0gdHlwZW5hbWUgX1VzZXNfZGVmYXVsdF9kZXN0cm95PF9BbGxvYywgX1B0cj46OnR5
cGU7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MgX1NpemVfdHlwZSwgY2xhc3Mg
X0NvbnN0X3ZvaWRfcG9pbnRlciwgY2xhc3MgPSB2b2lkPg0Kc3RydWN0IF9IYXNfYWxsb2NhdGVf
aGludCA6IGZhbHNlX3R5cGUge307DQoNCl9fcHJhZ21hKHdhcm5pbmcocHVzaCkpIF9fcHJhZ21h
KHdhcm5pbmcoZGlzYWJsZSA6IDQ5OTYpKQ0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3Mg
X1NpemVfdHlwZSwgY2xhc3MgX0NvbnN0X3ZvaWRfcG9pbnRlcj4NCnN0cnVjdCBfSGFzX2FsbG9j
YXRlX2hpbnQ8X0FsbG9jLCBfU2l6ZV90eXBlLCBfQ29uc3Rfdm9pZF9wb2ludGVyLA0KICAgIHZv
aWRfdDxkZWNsdHlwZSg6OnN0ZDo6IGRlY2x2YWw8X0FsbG9jJj4oKS5hbGxvY2F0ZSgNCiAgICAg
ICAgOjpzdGQ6OiBkZWNsdmFsPGNvbnN0IF9TaXplX3R5cGUmPigpLCA6OnN0ZDo6IGRlY2x2YWw8
Y29uc3QgX0NvbnN0X3ZvaWRfcG9pbnRlciY+KCkpKT4+IDogdHJ1ZV90eXBlIHt9Ow0KX19wcmFn
bWEod2FybmluZyhwb3ApKQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzID0gdm9p
ZD4NCnN0cnVjdCBfSGFzX21heF9zaXplIDogZmFsc2VfdHlwZSB7fTsNCg0KX19wcmFnbWEod2Fy
bmluZyhwdXNoKSkgX19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5NikpDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0FsbG9jPg0Kc3RydWN0IF9IYXNfbWF4X3NpemU8X0FsbG9jLCB2b2lkX3Q8ZGVjbHR5
cGUoOjpzdGQ6OiBkZWNsdmFsPGNvbnN0IF9BbGxvYyY+KCkubWF4X3NpemUoKSk+PiA6IHRydWVf
dHlwZSB7fTsNCl9fcHJhZ21hKHdhcm5pbmcocG9wKSkNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Fs
bG9jLCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0hhc19zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlf
Y29uc3RydWN0aW9uIDogZmFsc2VfdHlwZSB7fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4N
CnN0cnVjdCBfSGFzX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb248X0FsbG9j
LA0KICAgIHZvaWRfdDxkZWNsdHlwZSg6OnN0ZDo6IGRlY2x2YWw8Y29uc3QgX0FsbG9jJj4oKS5z
ZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKCkpPj4gOiB0cnVlX3R5cGUge307
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCnN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzOw0K
DQpfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0OTk2
KSkNCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+DQpzdHJ1Y3QgX05vcm1hbF9hbGxvY2F0b3JfdHJh
aXRzIHsgDQogICAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBfQWxsb2M7DQogICAgdXNpbmcgdmFs
dWVfdHlwZSAgICAgPSB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGU7DQoNCiAgICB1c2luZyBw
b2ludGVyICAgICAgICAgICAgPSB0eXBlbmFtZSBfR2V0X3BvaW50ZXJfdHlwZTxfQWxsb2M+Ojp0
eXBlOw0KICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgICAgICA9IHR5cGVuYW1lIF9HZXRfY29uc3Rf
cG9pbnRlcl90eXBlPF9BbGxvYz46OnR5cGU7DQogICAgdXNpbmcgdm9pZF9wb2ludGVyICAgICAg
ID0gdHlwZW5hbWUgX0dldF92b2lkX3BvaW50ZXJfdHlwZTxfQWxsb2M+Ojp0eXBlOw0KICAgIHVz
aW5nIGNvbnN0X3ZvaWRfcG9pbnRlciA9IHR5cGVuYW1lIF9HZXRfY29uc3Rfdm9pZF9wb2ludGVy
X3R5cGU8X0FsbG9jPjo6dHlwZTsNCg0KICAgIHVzaW5nIHNpemVfdHlwZSAgICAgICA9IHR5cGVu
YW1lIF9HZXRfc2l6ZV90eXBlPF9BbGxvYz46OnR5cGU7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90
eXBlID0gdHlwZW5hbWUgX0dldF9kaWZmZXJlbmNlX3R5cGU8X0FsbG9jPjo6dHlwZTsNCg0KICAg
IHVzaW5nIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50ID0gdHlwZW5hbWUg
X0dldF9wcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHk8X0FsbG9jPjo6dHlwZTsNCiAgICB1c2lu
ZyBwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudCA9IHR5cGVuYW1lIF9HZXRf
cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlPF9BbGxvYz46OnR5cGU7DQogICAgdXNpbmcgcHJv
cGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwICAgICAgICAgICAgPSB0eXBlbmFtZSBfR2V0X3Byb3Bh
Z2F0ZV9vbl9jb250YWluZXJfc3dhcDxfQWxsb2M+Ojp0eXBlOw0KICAgIHVzaW5nIGlzX2Fsd2F5
c19lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgID0gdHlwZW5hbWUgX0dldF9pc19hbHdheXNf
ZXF1YWw8X0FsbG9jPjo6dHlwZTsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXI+DQogICAg
dXNpbmcgcmViaW5kX2FsbG9jID0gdHlwZW5hbWUgX0dldF9yZWJpbmRfdHlwZTxfQWxsb2MsIF9P
dGhlcj46OnR5cGU7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyPg0KICAgIHVzaW5nIHJl
YmluZF90cmFpdHMgPSBhbGxvY2F0b3JfdHJhaXRzPHJlYmluZF9hbGxvYzxfT3RoZXI+PjsNCg0K
ICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSBwb2ludGVyIGFs
bG9jYXRlKF9BbGxvYyYgX0FsLCAgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgew0KICAgICAgICBy
ZXR1cm4gX0FsLmFsbG9jYXRlKF9Db3VudCk7DQogICAgfQ0KDQoNCiAgICBbW25vZGlzY2FyZF1d
IHN0YXRpYyBfX2RlY2xzcGVjKGFsbG9jYXRvcikgcG9pbnRlcg0KICAgICAgICBhbGxvY2F0ZShf
QWxsb2MmIF9BbCwgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQsIGNvbnN0IGNvbnN0X3ZvaWRfcG9p
bnRlciBfSGludCkgew0KICAgICAgICBpZiBjb25zdGV4cHIgKF9IYXNfYWxsb2NhdGVfaGludDxf
QWxsb2MsIHNpemVfdHlwZSwgY29uc3Rfdm9pZF9wb2ludGVyPjo6dmFsdWUpIHsNCiAgICAgICAg
ICAgIHJldHVybiBfQWwuYWxsb2NhdGUoX0NvdW50LCBfSGludCk7DQogICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICByZXR1cm4gX0FsLmFsbG9jYXRlKF9Db3VudCk7DQogICAgICAgIH0NCiAg
ICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NDYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCg0KICAgIHN0
YXRpYyB2b2lkIGRlYWxsb2NhdGUoX0FsbG9jJiBfQWwsIHBvaW50ZXIgX1B0ciwgc2l6ZV90eXBl
IF9Db3VudCkgew0KICAgICAgICBfQWwuZGVhbGxvY2F0ZShfUHRyLCBfQ291bnQpOw0KICAgIH0N
Cg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MuLi4gX1R5cGVzPg0KICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdChfQWxsb2MmIF9BbCwgX1R5KiBfUHRyLCBfVHlwZXMmJi4uLiBfQXJn
cykgew0KICAgICAgICBpZiBjb25zdGV4cHIgKF9Vc2VzX2RlZmF1bHRfY29uc3RydWN0PF9BbGxv
YywgX1R5KiwgX1R5cGVzLi4uPjo6dmFsdWUpIHsNCiAgICAgICAgICAgICh2b2lkKSBfQWw7IA0K
ICAgICAgICAgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihfUHRyKSkgX1R5KDo6c3RkOjog
Zm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICBfQWwuY29uc3RydWN0KF9QdHIsIDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7
DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDU3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4
bWVtb3J5Ig0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koX0FsbG9jJiBfQWwsIF9UeSogX1B0cikgew0KICAgICAgICBpZiBjb25zdGV4cHIgKF9V
c2VzX2RlZmF1bHRfZGVzdHJveTxfQWxsb2MsIF9UeSo+Ojp2YWx1ZSkgew0KICAgICAgICAgICAg
X1B0ci0+fl9UeSgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX0FsLmRlc3Ryb3ko
X1B0cik7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA2MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceG1lbW9yeSINCg0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgc2l6ZV90eXBlIG1heF9z
aXplKGNvbnN0IF9BbGxvYyYgX0FsKSBub2V4Y2VwdCB7DQogICAgICAgIGlmIGNvbnN0ZXhwciAo
X0hhc19tYXhfc2l6ZTxfQWxsb2M+Ojp2YWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIF9BbC5t
YXhfc2l6ZSgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIChudW1lcmlj
X2xpbWl0czxzaXplX3R5cGU+OjptYXgpKCkgLyBzaXplb2YodmFsdWVfdHlwZSk7DQogICAgICAg
IH0NCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MjYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCg0KDQogICAg
W1tub2Rpc2NhcmRdXSBzdGF0aWMgX0FsbG9jIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25z
dHJ1Y3Rpb24oY29uc3QgX0FsbG9jJiBfQWwpIHsNCiAgICAgICAgaWYgY29uc3RleHByIChfSGFz
X3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb248X0FsbG9jPjo6dmFsdWUpIHsN
CiAgICAgICAgICAgIHJldHVybiBfQWwuc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVj
dGlvbigpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIF9BbDsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY0OCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KfTsNCl9f
cHJhZ21hKHdhcm5pbmcocG9wKSkNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCnN0cnVjdCBf
RGVmYXVsdF9hbGxvY2F0b3JfdHJhaXRzIHsgDQogICAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgPSBf
QWxsb2M7DQogICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgPSB0eXBlbmFtZSBfQWxsb2M6OnZhbHVl
X3R5cGU7DQoNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAgPSB2YWx1ZV90eXBlKjsNCiAg
ICB1c2luZyBjb25zdF9wb2ludGVyICAgICAgPSBjb25zdCB2YWx1ZV90eXBlKjsNCiAgICB1c2lu
ZyB2b2lkX3BvaW50ZXIgICAgICAgPSB2b2lkKjsNCiAgICB1c2luZyBjb25zdF92b2lkX3BvaW50
ZXIgPSBjb25zdCB2b2lkKjsNCg0KICAgIHVzaW5nIHNpemVfdHlwZSAgICAgICA9IHNpemVfdDsN
CiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJkaWZmX3Q7DQoNCiAgICB1c2luZyBwcm9w
YWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudCA9IGZhbHNlX3R5cGU7DQogICAgdXNp
bmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQgPSB0cnVlX3R5cGU7DQog
ICAgdXNpbmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwICAgICAgICAgICAgPSBmYWxzZV90
eXBlOw0KICAgIHVzaW5nIGlzX2Fsd2F5c19lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgID0g
dHJ1ZV90eXBlOw0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlcj4NCiAgICB1c2luZyByZWJp
bmRfYWxsb2MgPSBhbGxvY2F0b3I8X090aGVyPjsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfT3Ro
ZXI+DQogICAgdXNpbmcgcmViaW5kX3RyYWl0cyA9IGFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9y
PF9PdGhlcj4+Ow0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgX19kZWNsc3BlYyhhbGxvY2F0
b3IpIHBvaW50ZXIgYWxsb2NhdGUoX0FsbG9jJiwgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQpIHsN
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHBvaW50ZXI+KF9BbGxvY2F0ZTxfTmV3X2FsaWdu
b2Y8dmFsdWVfdHlwZT4+KF9HZXRfc2l6ZV9vZl9uPHNpemVvZih2YWx1ZV90eXBlKT4oX0NvdW50
KSkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIF9fZGVjbHNwZWMoYWxsb2Nh
dG9yKSBwb2ludGVyDQogICAgICAgIGFsbG9jYXRlKF9BbGxvYyYsICBjb25zdCBzaXplX3R5cGUg
X0NvdW50LCBjb25zdF92b2lkX3BvaW50ZXIpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHBvaW50ZXI+KF9BbGxvY2F0ZTxfTmV3X2FsaWdub2Y8dmFsdWVfdHlwZT4+KF9HZXRfc2l6ZV9v
Zl9uPHNpemVvZih2YWx1ZV90eXBlKT4oX0NvdW50KSkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyB2
b2lkIGRlYWxsb2NhdGUoX0FsbG9jJiwgY29uc3QgcG9pbnRlciBfUHRyLCBjb25zdCBzaXplX3R5
cGUgX0NvdW50KSB7DQogICAgICAgIA0KICAgICAgICBfRGVhbGxvY2F0ZTxfTmV3X2FsaWdub2Y8
dmFsdWVfdHlwZT4+KF9QdHIsIHNpemVvZih2YWx1ZV90eXBlKSAqIF9Db3VudCk7DQogICAgfQ0K
DQogICAgdGVtcGxhdGUgPGNsYXNzIF9PYmp0eSwgY2xhc3MuLi4gX1R5cGVzPg0KICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdChfQWxsb2MmLCBfT2JqdHkqIGNvbnN0IF9QdHIsIF9UeXBlcyYmLi4u
IF9BcmdzKSB7DQogICAgICAgIDo6bmV3IChjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxj
b25zdCB2b2xhdGlsZSB2b2lkKj4oX1B0cikpKSBfT2JqdHkoOjpzdGQ6OiBmb3J3YXJkPF9UeXBl
cz4oX0FyZ3MpLi4uKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eT4NCiAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KF9BbGxvYyYsIF9VdHkqIGNvbnN0IF9QdHIpIHsNCiAgICAgICAg
X1B0ci0+fl9VdHkoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBzaXplX3R5
cGUgbWF4X3NpemUoY29uc3QgX0FsbG9jJikgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PigtMSkgLyBzaXplb2YodmFsdWVfdHlwZSk7DQogICAgfQ0KDQogICAg
W1tub2Rpc2NhcmRdXSBzdGF0aWMgX0FsbG9jIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25z
dHJ1Y3Rpb24oY29uc3QgX0FsbG9jJiBfQWwpIHsNCiAgICAgICAgcmV0dXJuIF9BbDsNCiAgICB9
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPg0Kc3RydWN0IGFsbG9jYXRvcl90cmFpdHMg
OiBjb25kaXRpb25hbF90PF9Jc19kZWZhdWx0X2FsbG9jYXRvcjxfQWxsb2M+Ojp2YWx1ZSwgX0Rl
ZmF1bHRfYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX05vcm1hbF9hbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz4+IHt9Ow0KDQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9BbGxvYz4NCnVzaW5nIF9DaG9vc2VfcG9jY2EgPSBib29sX2NvbnN0YW50PGFs
bG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2ln
bm1lbnQ6OnZhbHVlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhYWxs
b2NhdG9yX3RyYWl0czxfQWxsb2M+Ojppc19hbHdheXNfZXF1YWw6OnZhbHVlPjsNCg0Kc3RydWN0
IF9FcXVhbF9hbGxvY2F0b3JzIHt9OyANCnVzaW5nIF9Qcm9wYWdhdGVfYWxsb2NhdG9ycyAgICA9
IHRydWVfdHlwZTsgDQp1c2luZyBfTm9fcHJvcGFnYXRlX2FsbG9jYXRvcnMgPSBmYWxzZV90eXBl
OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCnVzaW5nIF9DaG9vc2VfcG9jbWEgPSBjb25k
aXRpb25hbF90PGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1
ZSwgX0VxdWFsX2FsbG9jYXRvcnMsDQogICAgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czxfQWxs
b2M+Ojpwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudDo6dHlwZT47DQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MgX1ZhbHVlX3R5cGU+DQp1c2luZyBfUmViaW5k
X2FsbG9jX3QgPSB0eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz46OnRlbXBsYXRlIHJl
YmluZF9hbGxvYzxfVmFsdWVfdHlwZT47DQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2Ms
IGNsYXNzIF9WYWx1ZV90eXBlPg0KdXNpbmcgX01heWJlX3JlYmluZF9hbGxvY190ID0NCiAgICB0
eXBlbmFtZSBfU2VsZWN0PGlzX3NhbWVfdjx0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGUsIF9W
YWx1ZV90eXBlPj46OnRlbXBsYXRlIF9BcHBseTxfQWxsb2MmLA0KICAgICAgICBfUmViaW5kX2Fs
bG9jX3Q8X0FsbG9jLCBfVmFsdWVfdHlwZT4+Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+
IA0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9Jc19zaW1wbGVfYWxsb2NfdiA9IGlzX3NhbWVfdjx0
eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz46OnNpemVfdHlwZSwgc2l6ZV90PiYmDQog
ICAgaXNfc2FtZV92PHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6ZGlmZmVyZW5j
ZV90eXBlLCBwdHJkaWZmX3Q+JiYNCiAgICAgICAgaXNfc2FtZV92PHR5cGVuYW1lIGFsbG9jYXRv
cl90cmFpdHM8X0FsbG9jPjo6cG9pbnRlciwgdHlwZW5hbWUgX0FsbG9jOjp2YWx1ZV90eXBlKj4m
Jg0KICAgICAgICAgICAgaXNfc2FtZV92PHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9j
Pjo6Y29uc3RfcG9pbnRlciwgY29uc3QgdHlwZW5hbWUgX0FsbG9jOjp2YWx1ZV90eXBlKj47DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZV90eXBlPg0Kc3RydWN0IF9TaW1wbGVfdHlwZXMgeyAN
CiAgICAgICAgICAgICAgICAgICAgICAgDQogICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgID0gX1Zh
bHVlX3R5cGU7DQogICAgdXNpbmcgc2l6ZV90eXBlICAgICAgID0gc2l6ZV90Ow0KICAgIHVzaW5n
IGRpZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZfdDsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAg
PSB2YWx1ZV90eXBlKjsNCiAgICB1c2luZyBjb25zdF9wb2ludGVyICAgPSBjb25zdCB2YWx1ZV90
eXBlKjsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmNsYXNzIGFsbG9jYXRvciB7DQpw
dWJsaWM6DQogICAgc3RhdGljX2Fzc2VydCghaXNfY29uc3RfdjxfVHk+LCAiVGhlIEMrKyBTdGFu
ZGFyZCBmb3JiaWRzIGNvbnRhaW5lcnMgb2YgY29uc3QgZWxlbWVudHMgIg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImJlY2F1c2UgYWxsb2NhdG9yPGNvbnN0IFQ+IGlzIGls
bC1mb3JtZWQuIik7DQoNCiAgICB1c2luZyBfRnJvbV9wcmltYXJ5ID0gYWxsb2NhdG9yOw0KDQog
ICAgdXNpbmcgdmFsdWVfdHlwZSA9IF9UeTsNCg0KICAgIFtbZGVwcmVjYXRlZCgid2FybmluZyBT
VEw0MDEwOiAiICJWYXJpb3VzIG1lbWJlcnMgb2Ygc3RkOjphbGxvY2F0b3IgYXJlIGRlcHJlY2F0
ZWQgaW4gQysrMTcuICIgIlVzZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHMgaW5zdGVhZCBvZiBhY2Nl
c3NpbmcgdGhlc2UgbWVtYmVycyBkaXJlY3RseS4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0Vf
Q1hYMTdfT0xEX0FMTE9DQVRPUl9NRU1CRVJTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJ
TEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQg
eW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfVHkqIHBvaW50ZXI7
DQogICAgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTA6ICIgIlZhcmlvdXMgbWVtYmVycyBv
ZiBzdGQ6OmFsbG9jYXRvciBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiVXNlIHN0ZDo6YWxs
b2NhdG9yX3RyYWl0cyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGVzZSBtZW1iZXJzIGRpcmVjdGx5
LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19PTERfQUxMT0NBVE9SX01FTUJFUlNf
REVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05f
V0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5p
bmcuIildXSB0eXBlZGVmIGNvbnN0IF9UeSogY29uc3RfcG9pbnRlcjsNCg0KICAgIFtbZGVwcmVj
YXRlZCgid2FybmluZyBTVEw0MDEwOiAiICJWYXJpb3VzIG1lbWJlcnMgb2Ygc3RkOjphbGxvY2F0
b3IgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIlVzZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHMg
aW5zdGVhZCBvZiBhY2Nlc3NpbmcgdGhlc2UgbWVtYmVycyBkaXJlY3RseS4gIiAiWW91IGNhbiBk
ZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfT0xEX0FMTE9DQVRPUl9NRU1CRVJTX0RFUFJFQ0FUSU9OX1dB
Uk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFj
a25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRl
ZiBfVHkmIHJlZmVyZW5jZTsNCiAgICBbW2RlcHJlY2F0ZWQoIndhcm5pbmcgU1RMNDAxMDogIiAi
VmFyaW91cyBtZW1iZXJzIG9mIHN0ZDo6YWxsb2NhdG9yIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3
LiAiICJVc2Ugc3RkOjphbGxvY2F0b3JfdHJhaXRzIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZXNl
IG1lbWJlcnMgZGlyZWN0bHkuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X09MRF9B
TExPQ0FUT1JfTUVNQkVSU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgY29uc3QgX1R5JiBjb25zdF9yZWZlcmVu
Y2U7DQoNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICAgPSBzaXplX3Q7DQogICAgdXNpbmcgZGlm
ZmVyZW5jZV90eXBlID0gcHRyZGlmZl90Ow0KDQogICAgdXNpbmcgcHJvcGFnYXRlX29uX2NvbnRh
aW5lcl9tb3ZlX2Fzc2lnbm1lbnQgPSB0cnVlX3R5cGU7DQogICAgdXNpbmcgaXNfYWx3YXlzX2Vx
dWFsICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlX3R5cGU7DQoNCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX090aGVyPg0KICAgIHN0cnVjdCBbW2RlcHJlY2F0ZWQoIndhcm5pbmcgU1RMNDAxMDog
IiAiVmFyaW91cyBtZW1iZXJzIG9mIHN0ZDo6YWxsb2NhdG9yIGFyZSBkZXByZWNhdGVkIGluIEMr
KzE3LiAiICJVc2Ugc3RkOjphbGxvY2F0b3JfdHJhaXRzIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRo
ZXNlIG1lbWJlcnMgZGlyZWN0bHkuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X09M
RF9BTExPQ0FUT1JfTUVNQkVSU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FM
TF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZl
IHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHJlYmluZCB7DQogICAgICAgIHVzaW5nIG90aGVy
ID0gYWxsb2NhdG9yPF9PdGhlcj47DQogICAgfTsNCg0KICAgIFtbZGVwcmVjYXRlZCgid2Fybmlu
ZyBTVEw0MDEwOiAiICJWYXJpb3VzIG1lbWJlcnMgb2Ygc3RkOjphbGxvY2F0b3IgYXJlIGRlcHJl
Y2F0ZWQgaW4gQysrMTcuICIgIlVzZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHMgaW5zdGVhZCBvZiBh
Y2Nlc3NpbmcgdGhlc2UgbWVtYmVycyBkaXJlY3RseS4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVO
Q0VfQ1hYMTdfT0xEX0FMTE9DQVRPUl9NRU1CRVJTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3Ig
X1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRo
YXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gW1tub2Rpc2NhcmRdXSBfVHkq
IGFkZHJlc3MoX1R5JiBfVmFsKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiA6OnN0
ZDo6IGFkZHJlc3NvZihfVmFsKTsNCiAgICB9DQoNCiAgICBbW2RlcHJlY2F0ZWQoIndhcm5pbmcg
U1RMNDAxMDogIiAiVmFyaW91cyBtZW1iZXJzIG9mIHN0ZDo6YWxsb2NhdG9yIGFyZSBkZXByZWNh
dGVkIGluIEMrKzE3LiAiICJVc2Ugc3RkOjphbGxvY2F0b3JfdHJhaXRzIGluc3RlYWQgb2YgYWNj
ZXNzaW5nIHRoZXNlIG1lbWJlcnMgZGlyZWN0bHkuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X09MRF9BTExPQ0FUT1JfTUVNQkVSU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9T
SUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0
IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIFtbbm9kaXNjYXJkXV0gY29uc3Qg
X1R5KiBhZGRyZXNzKGNvbnN0IF9UeSYgX1ZhbCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gOjpzdGQ6OiBhZGRyZXNzb2YoX1ZhbCk7DQogICAgfQ0KDQogICAgY29uc3RleHByIGFs
bG9jYXRvcigpIG5vZXhjZXB0IHt9DQoNCiAgICBjb25zdGV4cHIgYWxsb2NhdG9yKGNvbnN0IGFs
bG9jYXRvciYpIG5vZXhjZXB0ID0gZGVmYXVsdDsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVy
Pg0KICAgIGNvbnN0ZXhwciBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yPF9PdGhlcj4mKSBub2V4
Y2VwdCB7fQ0KDQogICAgdm9pZCBkZWFsbG9jYXRlKF9UeSogY29uc3QgX1B0ciwgY29uc3Qgc2l6
ZV90IF9Db3VudCkgew0KICAgICAgICANCiAgICAgICAgX0RlYWxsb2NhdGU8X05ld19hbGlnbm9m
PF9UeT4+KF9QdHIsIHNpemVvZihfVHkpICogX0NvdW50KTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSBfVHkqIGFsbG9jYXRlKCBjb25zdCBzaXplX3Qg
X0NvdW50KSB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHkqPihfQWxsb2NhdGU8X05l
d19hbGlnbm9mPF9UeT4+KF9HZXRfc2l6ZV9vZl9uPHNpemVvZihfVHkpPihfQ291bnQpKSk7DQog
ICAgfQ0KDQogICAgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTA6ICIgIlZhcmlvdXMgbWVt
YmVycyBvZiBzdGQ6OmFsbG9jYXRvciBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiVXNlIHN0
ZDo6YWxsb2NhdG9yX3RyYWl0cyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGVzZSBtZW1iZXJzIGRp
cmVjdGx5LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19PTERfQUxMT0NBVE9SX01F
TUJFUlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVD
QVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz
IHdhcm5pbmcuIildXSBbW25vZGlzY2FyZF1dIF9fZGVjbHNwZWMoYWxsb2NhdG9yKSBfVHkqIGFs
bG9jYXRlKA0KICAgICAgICAgY29uc3Qgc2l6ZV90IF9Db3VudCwgY29uc3Qgdm9pZCopIHsNCiAg
ICAgICAgcmV0dXJuIGFsbG9jYXRlKF9Db3VudCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNs
YXNzIF9PYmp0eSwgY2xhc3MuLi4gX1R5cGVzPg0KICAgIFtbZGVwcmVjYXRlZCgid2FybmluZyBT
VEw0MDEwOiAiICJWYXJpb3VzIG1lbWJlcnMgb2Ygc3RkOjphbGxvY2F0b3IgYXJlIGRlcHJlY2F0
ZWQgaW4gQysrMTcuICIgIlVzZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHMgaW5zdGVhZCBvZiBhY2Nl
c3NpbmcgdGhlc2UgbWVtYmVycyBkaXJlY3RseS4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0Vf
Q1hYMTdfT0xEX0FMTE9DQVRPUl9NRU1CRVJTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJ
TEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQg
eW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdm9pZCBjb25zdHJ1Y3QoX09ianR5
KiBjb25zdCBfUHRyLCBfVHlwZXMmJi4uLiBfQXJncykgew0KICAgICAgICA6Om5ldyAoY29uc3Rf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgdm9pZCo+KF9QdHIpKSkgX09i
anR5KDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPGNsYXNzIF9VdHk+DQogICAgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTA6ICIg
IlZhcmlvdXMgbWVtYmVycyBvZiBzdGQ6OmFsbG9jYXRvciBhcmUgZGVwcmVjYXRlZCBpbiBDKysx
Ny4gIiAiVXNlIHN0ZDo6YWxsb2NhdG9yX3RyYWl0cyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGVz
ZSBtZW1iZXJzIGRpcmVjdGx5LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19PTERf
QUxMT0NBVE9SX01FTUJFUlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExf
Q1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSBy
ZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB2b2lkIGRlc3Ryb3koX1V0eSogY29uc3QgX1B0cikg
ew0KICAgICAgICBfUHRyLT5+X1V0eSgpOw0KICAgIH0NCg0KICAgIFtbZGVwcmVjYXRlZCgid2Fy
bmluZyBTVEw0MDEwOiAiICJWYXJpb3VzIG1lbWJlcnMgb2Ygc3RkOjphbGxvY2F0b3IgYXJlIGRl
cHJlY2F0ZWQgaW4gQysrMTcuICIgIlVzZSBzdGQ6OmFsbG9jYXRvcl90cmFpdHMgaW5zdGVhZCBv
ZiBhY2Nlc3NpbmcgdGhlc2UgbWVtYmVycyBkaXJlY3RseS4gIiAiWW91IGNhbiBkZWZpbmUgX1NJ
TEVOQ0VfQ1hYMTdfT0xEX0FMTE9DQVRPUl9NRU1CRVJTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAi
b3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdl
IHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gW1tub2Rpc2NhcmRdXSBz
aXplX3QgbWF4X3NpemUoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KC0xKSAvIHNpemVvZihfVHkpOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGUg
PD4NCmNsYXNzIGFsbG9jYXRvcjx2b2lkPiB7DQpwdWJsaWM6DQogICAgdXNpbmcgdmFsdWVfdHlw
ZSA9IHZvaWQ7DQogICAgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTA6ICIgIlZhcmlvdXMg
bWVtYmVycyBvZiBzdGQ6OmFsbG9jYXRvciBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiVXNl
IHN0ZDo6YWxsb2NhdG9yX3RyYWl0cyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGVzZSBtZW1iZXJz
IGRpcmVjdGx5LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19PTERfQUxMT0NBVE9S
X01FTUJFUlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQ
UkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIHZvaWQqIHBvaW50ZXI7DQogICAgW1tkZXByZWNhdGVk
KCJ3YXJuaW5nIFNUTDQwMTA6ICIgIlZhcmlvdXMgbWVtYmVycyBvZiBzdGQ6OmFsbG9jYXRvciBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiVXNlIHN0ZDo6YWxsb2NhdG9yX3RyYWl0cyBpbnN0
ZWFkIG9mIGFjY2Vzc2luZyB0aGVzZSBtZW1iZXJzIGRpcmVjdGx5LiAiICJZb3UgY2FuIGRlZmlu
ZSBfU0lMRU5DRV9DWFgxN19PTERfQUxMT0NBVE9SX01FTUJFUlNfREVQUkVDQVRJT05fV0FSTklO
RyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93
bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIGNv
bnN0IHZvaWQqIGNvbnN0X3BvaW50ZXI7DQoNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICAgPSBz
aXplX3Q7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90Ow0KDQogICAgdXNp
bmcgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQgPSB0cnVlX3R5cGU7DQog
ICAgdXNpbmcgaXNfYWx3YXlzX2VxdWFsICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlX3R5
cGU7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyPg0KICAgIHN0cnVjdCBbW2RlcHJlY2F0
ZWQoIndhcm5pbmcgU1RMNDAxMDogIiAiVmFyaW91cyBtZW1iZXJzIG9mIHN0ZDo6YWxsb2NhdG9y
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJVc2Ugc3RkOjphbGxvY2F0b3JfdHJhaXRzIGlu
c3RlYWQgb2YgYWNjZXNzaW5nIHRoZXNlIG1lbWJlcnMgZGlyZWN0bHkuICIgIllvdSBjYW4gZGVm
aW5lIF9TSUxFTkNFX0NYWDE3X09MRF9BTExPQ0FUT1JfTUVNQkVSU19ERVBSRUNBVElPTl9XQVJO
SU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tu
b3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHJlYmluZCB7
DQogICAgICAgIHVzaW5nIG90aGVyID0gYWxsb2NhdG9yPF9PdGhlcj47DQogICAgfTsNCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9PdGhlcj4NCltbbm9kaXNjYXJkXV0gYm9vbCBv
cGVyYXRvcj09KGNvbnN0IGFsbG9jYXRvcjxfVHk+JiwgY29uc3QgYWxsb2NhdG9yPF9PdGhlcj4m
KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHks
IGNsYXNzIF9PdGhlcj4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvciE9KGNvbnN0IGFsbG9j
YXRvcjxfVHk+JiwgY29uc3QgYWxsb2NhdG9yPF9PdGhlcj4mKSBub2V4Y2VwdCB7DQogICAgcmV0
dXJuIGZhbHNlOw0KfQ0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCnVzaW5nIF9HdWlk
ZV9zaXplX3R5cGVfdCA9DQogICAgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czxjb25kaXRpb25h
bF90PF9Jc19hbGxvY2F0b3I8X0FsbG9jPjo6dmFsdWUsIF9BbGxvYywgYWxsb2NhdG9yPGludD4+
Pjo6c2l6ZV90eXBlOw0KI2xpbmUgODYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4N
CnVzaW5nIF9BbGxvY19wdHJfdCA9IHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6
cG9pbnRlcjsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPg0KdXNpbmcgX0FsbG9jX3NpemVf
dCA9IHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6c2l6ZV90eXBlOw0KDQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCnZvaWQgX1BvY2NhKF9BbGxvYyYgX0xlZnQsIGNvbnN0
IF9BbGxvYyYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgaWYgY29uc3RleHByIChhbGxvY2F0b3Jf
dHJhaXRzPF9BbGxvYz46OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50Ojp2
YWx1ZSkgew0KICAgICAgICBfTGVmdCA9IF9SaWdodDsNCiAgICB9DQp9DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDg5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4N
CnZvaWQgX1BvY21hKF9BbGxvYyYgX0xlZnQsIF9BbGxvYyYgX1JpZ2h0KSBub2V4Y2VwdCB7IA0K
ICAgIGlmIGNvbnN0ZXhwciAoYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+Ojpwcm9wYWdhdGVfb25f
Y29udGFpbmVyX21vdmVfYXNzaWdubWVudDo6dmFsdWUpIHsNCiAgICAgICAgX0xlZnQgPSA6OnN0
ZDo6IG1vdmUoX1JpZ2h0KTsNCiAgICB9DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgOTE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhtZW1vcnkiDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPg0Kdm9pZCBfUG9jcyhf
QWxsb2MmIF9MZWZ0LCBfQWxsb2MmIF9SaWdodCkgbm9leGNlcHQgew0KICAgIGlmIGNvbnN0ZXhw
ciAoYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+Ojpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6
OnZhbHVlKSB7DQogICAgICAgIF9Td2FwX2FkbChfTGVmdCwgX1JpZ2h0KTsNCiAgICB9IGVsc2Ug
ew0KICAgICAgICA7DQogICAgfQ0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgOTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHhtZW1vcnkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCnZvaWQgX0Rlc3Ry
b3lfcmFuZ2UoX0FsbG9jX3B0cl90PF9BbGxvYz4gX0ZpcnN0LCBjb25zdCBfQWxsb2NfcHRyX3Q8
X0FsbG9jPiBfTGFzdCwgX0FsbG9jJiBfQWwpIG5vZXhjZXB0IHsNCiAgICANCiAgICB1c2luZyBf
VHkgPSB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGU7DQogICAgaWYgY29uc3RleHByICghY29u
anVuY3Rpb25fdjxpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPF9UeT4sIF9Vc2VzX2RlZmF1bHRf
ZGVzdHJveTxfQWxsb2MsIF9UeSo+Pikgew0KICAgICAgICBmb3IgKDsgX0ZpcnN0ICE9IF9MYXN0
OyArK19GaXJzdCkgew0KICAgICAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+OjpkZXN0
cm95KF9BbCwgX1VuZmFuY3koX0ZpcnN0KSk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9Ob1Rocm93RndkSXQ+DQp2b2lkIF9EZXN0cm95X3JhbmdlKF9Ob1Rocm93
RndkSXQgX0ZpcnN0LCBjb25zdCBfTm9UaHJvd0Z3ZEl0IF9MYXN0KSBub2V4Y2VwdCB7DQogICAg
DQogICAgaWYgY29uc3RleHByICghaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZV92PF9JdGVyX3Zh
bHVlX3Q8X05vVGhyb3dGd2RJdD4+KSB7DQogICAgICAgIGZvciAoOyBfRmlyc3QgIT0gX0xhc3Q7
ICsrX0ZpcnN0KSB7DQogICAgICAgICAgICBfRGVzdHJveV9pbl9wbGFjZSgqX0ZpcnN0KTsNCiAg
ICAgICAgfQ0KICAgIH0NCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1NpemVfdHlwZT4NCltbbm9k
aXNjYXJkXV0gY29uc3RleHByIF9TaXplX3R5cGUgX0NvbnZlcnRfc2l6ZShjb25zdCBzaXplX3Qg
X0xlbikgbm9leGNlcHQgew0KICAgIA0KICAgIGlmIChfTGVuID4gKG51bWVyaWNfbGltaXRzPF9T
aXplX3R5cGU+OjptYXgpKCkpIHsNCiAgICAgICAgX1hsZW5ndGhfZXJyb3IoInNpemVfdCB0b28g
bG9uZyBmb3IgX1NpemVfdHlwZSIpOw0KICAgIH0NCg0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxf
U2l6ZV90eXBlPihfTGVuKTsNCn0NCg0KdGVtcGxhdGUgPD4NCltbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIHNpemVfdCBfQ29udmVydF9zaXplPHNpemVfdD4oY29uc3Qgc2l6ZV90IF9MZW4pIG5vZXhj
ZXB0IHsNCiAgICANCiAgICByZXR1cm4gX0xlbjsNCn0NCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
QWxsb2M+DQp2b2lkIF9EZWFsbG9jYXRlX3BsYWluKF9BbGxvYyYgX0FsLCB0eXBlbmFtZSBfQWxs
b2M6OnZhbHVlX3R5cGUqIGNvbnN0IF9QdHIpIG5vZXhjZXB0IHsNCiAgICANCiAgICB1c2luZyBf
QWxsb2NfdHJhaXRzID0gYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+Ow0KICAgIGlmIGNvbnN0ZXhw
ciAoaXNfc2FtZV92PF9BbGxvY19wdHJfdDxfQWxsb2M+LCB0eXBlbmFtZSBfQWxsb2M6OnZhbHVl
X3R5cGUqPikgew0KICAgICAgICBfQWxsb2NfdHJhaXRzOjpkZWFsbG9jYXRlKF9BbCwgX1B0ciwg
MSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgdXNpbmcgX1B0cl90cmFpdHMgPSBwb2ludGVyX3Ry
YWl0czxfQWxsb2NfcHRyX3Q8X0FsbG9jPj47DQogICAgICAgIF9BbGxvY190cmFpdHM6OmRlYWxs
b2NhdGUoX0FsLCBfUHRyX3RyYWl0czo6cG9pbnRlcl90bygqX1B0ciksIDEpOw0KICAgIH0NCn0N
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDE3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9BbGxvYz4NCnZvaWQgX0RlbGV0ZV9wbGFpbl9pbnRlcm5hbChfQWxsb2MmIF9BbCwg
dHlwZW5hbWUgX0FsbG9jOjp2YWx1ZV90eXBlKiBjb25zdCBfUHRyKSBub2V4Y2VwdCB7DQogICAg
DQogICAgdXNpbmcgX1R5ID0gdHlwZW5hbWUgX0FsbG9jOjp2YWx1ZV90eXBlOw0KICAgIF9QdHIt
Pn5fVHkoKTsNCiAgICBfRGVhbGxvY2F0ZV9wbGFpbihfQWwsIF9QdHIpOw0KfQ0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfQWxsb2M+DQpzdHJ1Y3QgX0FsbG9jX2NvbnN0cnVjdF9wdHIgeyANCiAgICB1
c2luZyBwb2ludGVyID0gX0FsbG9jX3B0cl90PF9BbGxvYz47DQogICAgX0FsbG9jJiBfQWw7DQog
ICAgcG9pbnRlciBfUHRyOw0KDQogICAgZXhwbGljaXQgX0FsbG9jX2NvbnN0cnVjdF9wdHIoX0Fs
bG9jJiBfQWxfKSA6IF9BbChfQWxfKSwgX1B0cihudWxscHRyKSB7fQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBwb2ludGVyIF9SZWxlYXNlKCkgbm9leGNlcHQgeyANCiAgICAgICAgcmV0dXJuIDo6c3Rk
OjogZXhjaGFuZ2UoX1B0ciwgbnVsbHB0cik7DQogICAgfQ0KDQogICAgdm9pZCBfQWxsb2NhdGUo
KSB7IA0KICAgICAgICBfUHRyID0gbnVsbHB0cjsgDQogICAgICAgIF9QdHIgPSBfQWwuYWxsb2Nh
dGUoMSk7DQogICAgfQ0KDQogICAgfl9BbGxvY19jb25zdHJ1Y3RfcHRyKCkgeyANCiAgICAgICAg
aWYgKF9QdHIpIHsNCiAgICAgICAgICAgIF9BbC5kZWFsbG9jYXRlKF9QdHIsIDEpOw0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgX0FsbG9jX2NvbnN0cnVjdF9wdHIoY29uc3QgX0FsbG9jX2NvbnN0
cnVjdF9wdHImKSA9IGRlbGV0ZTsNCiAgICBfQWxsb2NfY29uc3RydWN0X3B0ciYgb3BlcmF0b3I9
KGNvbnN0IF9BbGxvY19jb25zdHJ1Y3RfcHRyJikgPSBkZWxldGU7DQp9Ow0KDQoNCnN0cnVjdCBf
RmFrZV9hbGxvY2F0b3Ige307DQoNCnN0cnVjdCBfQ29udGFpbmVyX2Jhc2UwIHsNCiAgICB2b2lk
IF9PcnBoYW5fYWxsKCkgbm9leGNlcHQge30NCiAgICB2b2lkIF9Td2FwX3Byb3h5X2FuZF9pdGVy
YXRvcnMoX0NvbnRhaW5lcl9iYXNlMCYpIG5vZXhjZXB0IHt9DQogICAgdm9pZCBfQWxsb2NfcHJv
eHkoY29uc3QgX0Zha2VfYWxsb2NhdG9yJikgbm9leGNlcHQge30NCiAgICB2b2lkIF9SZWxvYWRf
cHJveHkoY29uc3QgX0Zha2VfYWxsb2NhdG9yJiwgY29uc3QgX0Zha2VfYWxsb2NhdG9yJikgbm9l
eGNlcHQge30NCn07DQoNCnN0cnVjdCBfSXRlcmF0b3JfYmFzZTAgew0KICAgIHZvaWQgX0Fkb3B0
KGNvbnN0IHZvaWQqKSBub2V4Y2VwdCB7fQ0KICAgIGNvbnN0IF9Db250YWluZXJfYmFzZTAqIF9H
ZXRjb250KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9
DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1Vud3JhcF93aGVuX3VudmVyaWZpZWQgPSB0
cnVlOw0KfTsNCg0KDQpzdHJ1Y3QgX0NvbnRhaW5lcl9iYXNlMTI7DQpzdHJ1Y3QgX0NvbnRhaW5l
cl9wcm94eSB7IA0KICAgIF9Db250YWluZXJfcHJveHkoKSBub2V4Y2VwdCA6IF9NeWNvbnQobnVs
bHB0ciksIF9NeWZpcnN0aXRlcihudWxscHRyKSB7fQ0KICAgIF9Db250YWluZXJfcHJveHkoX0Nv
bnRhaW5lcl9iYXNlMTIqIF9NeWNvbnRfKSBub2V4Y2VwdCA6IF9NeWNvbnQoX015Y29udF8pLCBf
TXlmaXJzdGl0ZXIobnVsbHB0cikge30NCg0KICAgIGNvbnN0IF9Db250YWluZXJfYmFzZTEyKiBf
TXljb250Ow0KICAgIF9JdGVyYXRvcl9iYXNlMTIqIF9NeWZpcnN0aXRlcjsNCn07DQoNCnN0cnVj
dCBfQ29udGFpbmVyX2Jhc2UxMiB7DQpwdWJsaWM6DQogICAgX0NvbnRhaW5lcl9iYXNlMTIoKSBu
b2V4Y2VwdCA6IF9NeXByb3h5KG51bGxwdHIpIHt9DQoNCiAgICBfQ29udGFpbmVyX2Jhc2UxMihj
b25zdCBfQ29udGFpbmVyX2Jhc2UxMiYpID0gZGVsZXRlOw0KICAgIF9Db250YWluZXJfYmFzZTEy
JiBvcGVyYXRvcj0oY29uc3QgX0NvbnRhaW5lcl9iYXNlMTImKSA9IGRlbGV0ZTsNCg0KICAgIHZv
aWQgX09ycGhhbl9hbGwoKSBub2V4Y2VwdDsNCiAgICB2b2lkIF9Td2FwX3Byb3h5X2FuZF9pdGVy
YXRvcnMoX0NvbnRhaW5lcl9iYXNlMTImKSBub2V4Y2VwdDsNCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfQWxsb2M+DQogICAgdm9pZCBfQWxsb2NfcHJveHkoX0FsbG9jJiYgX0FsKSB7DQogICAgICAg
IF9Db250YWluZXJfcHJveHkqIGNvbnN0IF9OZXdfcHJveHkgPSBfVW5mYW5jeShfQWwuYWxsb2Nh
dGUoMSkpOw0KICAgICAgICBfQ29uc3RydWN0X2luX3BsYWNlKCpfTmV3X3Byb3h5LCB0aGlzKTsN
CiAgICAgICAgX015cHJveHkgICAgICAgICAgICA9IF9OZXdfcHJveHk7DQogICAgICAgIF9OZXdf
cHJveHktPl9NeWNvbnQgPSB0aGlzOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQWxs
b2M+DQogICAgdm9pZCBfUmVsb2FkX3Byb3h5KF9BbGxvYyYmIF9PbGRfYWxsb2MsIF9BbGxvYyYm
IF9OZXdfYWxsb2MpIHsNCiAgICAgICAgDQogICAgICAgIF9Db250YWluZXJfcHJveHkqIGNvbnN0
IF9OZXdfcHJveHkgPSBfVW5mYW5jeShfTmV3X2FsbG9jLmFsbG9jYXRlKDEpKTsNCiAgICAgICAg
X0NvbnN0cnVjdF9pbl9wbGFjZSgqX05ld19wcm94eSwgdGhpcyk7DQogICAgICAgIF9OZXdfcHJv
eHktPl9NeWNvbnQgPSB0aGlzOw0KICAgICAgICBfRGVsZXRlX3BsYWluX2ludGVybmFsKF9PbGRf
YWxsb2MsIDo6c3RkOjogZXhjaGFuZ2UoX015cHJveHksIF9OZXdfcHJveHkpKTsNCiAgICB9DQoN
CiAgICBfQ29udGFpbmVyX3Byb3h5KiBfTXlwcm94eTsNCn07DQoNCnN0cnVjdCBfSXRlcmF0b3Jf
YmFzZTEyIHsgDQogICAgX0l0ZXJhdG9yX2Jhc2UxMigpIG5vZXhjZXB0IDogX015cHJveHkobnVs
bHB0ciksIF9NeW5leHRpdGVyKG51bGxwdHIpIHt9IA0KDQogICAgX0l0ZXJhdG9yX2Jhc2UxMihj
b25zdCBfSXRlcmF0b3JfYmFzZTEyJiBfUmlnaHQpIG5vZXhjZXB0IDogX015cHJveHkobnVsbHB0
ciksIF9NeW5leHRpdGVyKG51bGxwdHIpIHsNCiAgICAgICAgKnRoaXMgPSBfUmlnaHQ7DQogICAg
fQ0KDQogICAgX0l0ZXJhdG9yX2Jhc2UxMiYgb3BlcmF0b3I9KGNvbnN0IF9JdGVyYXRvcl9iYXNl
MTImIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICBpZiAoX015cHJveHkgIT0gX1JpZ2h0Ll9N
eXByb3h5KSB7DQogICAgICAgICAgICBpZiAoX1JpZ2h0Ll9NeXByb3h5KSB7DQogICAgICAgICAg
ICAgICAgX0Fkb3B0KF9SaWdodC5fTXlwcm94eS0+X015Y29udCk7DQogICAgICAgICAgICB9IGVs
c2UgeyANCg0KDQoNCiNsaW5lIDExMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCiAgICAgICAgICAgICAgICBfTXlwcm94eSA9IG51
bGxwdHI7DQojbGluZSAxMTMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAg
ICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgfl9JdGVyYXRvcl9iYXNlMTIoKSBub2V4Y2Vw
dCB7DQoNCg0KDQojbGluZSAxMTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQogICAgfQ0KDQogICAgdm9pZCBfQWRvcHQoY29uc3Qg
X0NvbnRhaW5lcl9iYXNlMTIqIF9QYXJlbnQpIG5vZXhjZXB0IHsNCiAgICAgICAgaWYgKF9QYXJl
bnQpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgX0NvbnRhaW5lcl9wcm94eSogX1BhcmVu
dF9wcm94eSA9IF9QYXJlbnQtPl9NeXByb3h5Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MTYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHht
ZW1vcnkiDQogICAgICAgICAgICBfTXlwcm94eSA9IF9QYXJlbnRfcHJveHk7DQojbGluZSAxMTYy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1v
cnkiDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICANCg0KDQoNCiNsaW5lIDExNjggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSIN
CiAgICAgICAgICAgIF9NeXByb3h5ID0gbnVsbHB0cjsNCiNsaW5lIDExNzAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIGNvbnN0IF9Db250YWluZXJfYmFzZTEyKiBfR2V0Y29udCgpIGNvbnN0
IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXByb3h5ID8gX015cHJveHktPl9NeWNvbnQg
OiBudWxscHRyOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTkx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1v
cnkiDQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1Vud3JhcF93aGVuX3VudmVyaWZpZWQg
PSAwID09IDA7DQoNCiAgICBfQ29udGFpbmVyX3Byb3h5KiBfTXlwcm94eTsNCiAgICBfSXRlcmF0
b3JfYmFzZTEyKiBfTXluZXh0aXRlcjsNCn07DQoNCg0KaW5saW5lIHZvaWQgX0NvbnRhaW5lcl9i
YXNlMTI6Ol9PcnBoYW5fYWxsKCkgbm9leGNlcHQgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxMjExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhtZW1vcnkiDQp9DQoNCmlubGluZSB2b2lkIF9Db250YWluZXJfYmFzZTEyOjpfU3dhcF9wcm94
eV9hbmRfaXRlcmF0b3JzKF9Db250YWluZXJfYmFzZTEyJiBfUmlnaHQpIG5vZXhjZXB0IHsNCg0K
DQojbGluZSAxMjE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHhtZW1vcnkiDQoNCiAgICBfQ29udGFpbmVyX3Byb3h5KiBfVGVtcCA9IF9NeXByb3h5
Ow0KICAgIF9NeXByb3h5ICAgICAgICAgICAgICAgID0gX1JpZ2h0Ll9NeXByb3h5Ow0KICAgIF9S
aWdodC5fTXlwcm94eSAgICAgICAgID0gX1RlbXA7DQoNCiAgICBpZiAoX015cHJveHkpIHsNCiAg
ICAgICAgX015cHJveHktPl9NeWNvbnQgPSB0aGlzOw0KICAgIH0NCg0KICAgIGlmIChfUmlnaHQu
X015cHJveHkpIHsNCiAgICAgICAgX1JpZ2h0Ll9NeXByb3h5LT5fTXljb250ID0gJl9SaWdodDsN
CiAgICB9DQp9DQoNCg0KdXNpbmcgX0NvbnRhaW5lcl9iYXNlID0gX0NvbnRhaW5lcl9iYXNlMDsN
CnVzaW5nIF9JdGVyYXRvcl9iYXNlICA9IF9JdGVyYXRvcl9iYXNlMDsNCg0KDQoNCiNsaW5lIDEy
MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1l
bW9yeSINCg0KDQpzdHJ1Y3QgX0xlYXZlX3Byb3h5X3VuYm91bmQgew0KICAgIGV4cGxpY2l0IF9M
ZWF2ZV9wcm94eV91bmJvdW5kKCkgPSBkZWZhdWx0Ow0KfTsgDQoNCnN0cnVjdCBfRmFrZV9wcm94
eV9wdHJfaW1wbCB7IA0KICAgIF9GYWtlX3Byb3h5X3B0cl9pbXBsKGNvbnN0IF9GYWtlX3Byb3h5
X3B0cl9pbXBsJikgPSBkZWxldGU7DQogICAgX0Zha2VfcHJveHlfcHRyX2ltcGwmIG9wZXJhdG9y
PShjb25zdCBfRmFrZV9wcm94eV9wdHJfaW1wbCYpID0gZGVsZXRlOw0KICAgIF9GYWtlX3Byb3h5
X3B0cl9pbXBsKGNvbnN0IF9GYWtlX2FsbG9jYXRvciYsIF9MZWF2ZV9wcm94eV91bmJvdW5kKSBu
b2V4Y2VwdCB7fQ0KICAgIF9GYWtlX3Byb3h5X3B0cl9pbXBsKGNvbnN0IF9GYWtlX2FsbG9jYXRv
ciYsIGNvbnN0IF9Db250YWluZXJfYmFzZTAmKSBub2V4Y2VwdCB7fQ0KDQogICAgdm9pZCBfQmlu
ZChjb25zdCBfRmFrZV9hbGxvY2F0b3ImLCBfQ29udGFpbmVyX2Jhc2UwKikgbm9leGNlcHQge30N
CiAgICB2b2lkIF9SZWxlYXNlKCkgbm9leGNlcHQge30NCn07DQoNCnN0cnVjdCBfQmFzaWNfY29u
dGFpbmVyX3Byb3h5X3B0cjEyIHsNCiAgICANCiAgICBfQ29udGFpbmVyX3Byb3h5KiBfUHRyOw0K
DQogICAgdm9pZCBfUmVsZWFzZSgpIG5vZXhjZXB0IHsgDQogICAgICAgIF9QdHIgPSBudWxscHRy
Ow0KICAgIH0NCg0KcHJvdGVjdGVkOg0KICAgIF9CYXNpY19jb250YWluZXJfcHJveHlfcHRyMTIo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZGVmYXVsdDsNCiAgICBfQmFz
aWNfY29udGFpbmVyX3Byb3h5X3B0cjEyKGNvbnN0IF9CYXNpY19jb250YWluZXJfcHJveHlfcHRy
MTImKSA9IGRlbGV0ZTsNCiAgICBfQmFzaWNfY29udGFpbmVyX3Byb3h5X3B0cjEyKF9CYXNpY19j
b250YWluZXJfcHJveHlfcHRyMTImJikgICAgICA9IGRlbGV0ZTsNCn07DQoNCnRlbXBsYXRlIDxj
bGFzcyBfQWxsb2M+DQpzdHJ1Y3QgX0NvbnRhaW5lcl9wcm94eV9wdHIxMiA6IF9CYXNpY19jb250
YWluZXJfcHJveHlfcHRyMTIgew0KICAgIA0KICAgIF9BbGxvYyYgX0FsOw0KDQogICAgX0NvbnRh
aW5lcl9wcm94eV9wdHIxMihfQWxsb2MmIF9BbF8sIF9MZWF2ZV9wcm94eV91bmJvdW5kKSA6IF9B
bChfQWxfKSB7IA0KICAgICAgICBfUHRyID0gX1VuZmFuY3koX0FsXy5hbGxvY2F0ZSgxKSk7DQog
ICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoKl9QdHIpOw0KICAgIH0NCg0KICAgIF9Db250YWlu
ZXJfcHJveHlfcHRyMTIoX0FsbG9jJiBfQWxfLCBfQ29udGFpbmVyX2Jhc2UxMiYgX015Y29udCkN
CiAgICAgICAgOiBfQWwoX0FsXykgeyANCiAgICAgICAgX1B0ciA9IF9VbmZhbmN5KF9BbF8uYWxs
b2NhdGUoMSkpOw0KICAgICAgICBfQ29uc3RydWN0X2luX3BsYWNlKCpfUHRyLCA6OnN0ZDo6IGFk
ZHJlc3NvZihfTXljb250KSk7DQogICAgICAgIF9NeWNvbnQuX015cHJveHkgPSBfUHRyOw0KICAg
IH0NCg0KICAgIHZvaWQgX0JpbmQoX0FsbG9jJiBfT2xkX2FsbG9jLCBfQ29udGFpbmVyX2Jhc2Ux
MiogX015Y29udCkgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIF9QdHIt
Pl9NeWNvbnQgPSBfTXljb250Ow0KICAgICAgICBfRGVsZXRlX3BsYWluX2ludGVybmFsKF9PbGRf
YWxsb2MsIDo6c3RkOjogZXhjaGFuZ2UoX015Y29udC0+X015cHJveHksIDo6c3RkOjogZXhjaGFu
Z2UoX1B0ciwgbnVsbHB0cikpKTsNCiAgICB9DQoNCiAgICB+X0NvbnRhaW5lcl9wcm94eV9wdHIx
MigpIHsNCiAgICAgICAgaWYgKF9QdHIpIHsNCiAgICAgICAgICAgIF9EZWxldGVfcGxhaW5faW50
ZXJuYWwoX0FsLCBfUHRyKTsNCiAgICAgICAgfQ0KICAgIH0NCn07DQoNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0FsbG9jPg0KdXNpbmcgX0NvbnRhaW5lcl9wcm94eV9wdHIgPSBfRmFrZV9wcm94eV9w
dHJfaW1wbDsNCg0KDQoNCg0KI2xpbmUgMTMwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KDQoNCnN0cnVjdCBfWmVyb190aGVuX3Zh
cmlhZGljX2FyZ3NfdCB7DQogICAgZXhwbGljaXQgX1plcm9fdGhlbl92YXJpYWRpY19hcmdzX3Qo
KSA9IGRlZmF1bHQ7DQp9OyANCg0Kc3RydWN0IF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3Qgew0K
ICAgIGV4cGxpY2l0IF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3QoKSA9IGRlZmF1bHQ7DQp9OyAN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTIsIGJvb2wgPSBpc19lbXB0eV92PF9U
eTE+ICYmICFpc19maW5hbF92PF9UeTE+Pg0KY2xhc3MgX0NvbXByZXNzZWRfcGFpciBmaW5hbCA6
IHByaXZhdGUgX1R5MSB7IA0KcHVibGljOg0KICAgIF9UeTIgX015dmFsMjsNCg0KICAgIHVzaW5n
IF9NeWJhc2UgPSBfVHkxOyANCg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfT3RoZXIyPg0KICAg
IGNvbnN0ZXhwciBleHBsaWNpdCBfQ29tcHJlc3NlZF9wYWlyKF9aZXJvX3RoZW5fdmFyaWFkaWNf
YXJnc190LCBfT3RoZXIyJiYuLi4gX1ZhbDIpIG5vZXhjZXB0KA0KICAgICAgICBjb25qdW5jdGlv
bl92PGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9UeTE+LCBpc19ub3Rocm93X2Nv
bnN0cnVjdGlibGU8X1R5MiwgX090aGVyMi4uLj4+KQ0KICAgICAgICA6IF9UeTEoKSwgX015dmFs
Mig6OnN0ZDo6IGZvcndhcmQ8X090aGVyMj4oX1ZhbDIpLi4uKSB7fQ0KDQogICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlcjEsIGNsYXNzLi4uIF9PdGhlcjI+DQogICAgY29uc3RleHByIF9Db21wcmVz
c2VkX3BhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdCwgX090aGVyMSYmIF9WYWwxLCBfT3Ro
ZXIyJiYuLi4gX1ZhbDIpIG5vZXhjZXB0KA0KICAgICAgICBjb25qdW5jdGlvbl92PGlzX25vdGhy
b3dfY29uc3RydWN0aWJsZTxfVHkxLCBfT3RoZXIxPiwgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl
PF9UeTIsIF9PdGhlcjIuLi4+PikNCiAgICAgICAgOiBfVHkxKDo6c3RkOjogZm9yd2FyZDxfT3Ro
ZXIxPihfVmFsMSkpLCBfTXl2YWwyKDo6c3RkOjogZm9yd2FyZDxfT3RoZXIyPihfVmFsMikuLi4p
IHt9DQoNCiAgICBjb25zdGV4cHIgX1R5MSYgX0dldF9maXJzdCgpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBjb25zdCBfVHkxJiBfR2V0
X2ZpcnN0KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0K
fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpjbGFzcyBfQ29tcHJlc3Nl
ZF9wYWlyPF9UeTEsIF9UeTIsIGZhbHNlPiBmaW5hbCB7IA0KcHVibGljOg0KICAgIF9UeTEgX015
dmFsMTsNCiAgICBfVHkyIF9NeXZhbDI7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX090aGVy
Mj4NCiAgICBjb25zdGV4cHIgZXhwbGljaXQgX0NvbXByZXNzZWRfcGFpcihfWmVyb190aGVuX3Zh
cmlhZGljX2FyZ3NfdCwgX090aGVyMiYmLi4uIF9WYWwyKSBub2V4Y2VwdCgNCiAgICAgICAgY29u
anVuY3Rpb25fdjxpc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVHkxPiwgaXNfbm90
aHJvd19jb25zdHJ1Y3RpYmxlPF9UeTIsIF9PdGhlcjIuLi4+PikNCiAgICAgICAgOiBfTXl2YWwx
KCksIF9NeXZhbDIoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcjI+KF9WYWwyKS4uLikge30NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfT3RoZXIxLCBjbGFzcy4uLiBfT3RoZXIyPg0KICAgIGNvbnN0ZXhw
ciBfQ29tcHJlc3NlZF9wYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3QsIF9PdGhlcjEmJiBf
VmFsMSwgX090aGVyMiYmLi4uIF9WYWwyKSBub2V4Y2VwdCgNCiAgICAgICAgY29uanVuY3Rpb25f
djxpc19ub3Rocm93X2NvbnN0cnVjdGlibGU8X1R5MSwgX090aGVyMT4sIGlzX25vdGhyb3dfY29u
c3RydWN0aWJsZTxfVHkyLCBfT3RoZXIyLi4uPj4pDQogICAgICAgIDogX015dmFsMSg6OnN0ZDo6
IGZvcndhcmQ8X090aGVyMT4oX1ZhbDEpKSwgX015dmFsMig6OnN0ZDo6IGZvcndhcmQ8X090aGVy
Mj4oX1ZhbDIpLi4uKSB7fQ0KDQogICAgY29uc3RleHByIF9UeTEmIF9HZXRfZmlyc3QoKSBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXl2YWwxOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBj
b25zdCBfVHkxJiBfR2V0X2ZpcnN0KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
X015dmFsMTsNCiAgICB9DQp9Ow0KDQpzdHJ1Y3QgX01vdmVfYWxsb2NhdG9yX3RhZyB7DQogICAg
ZXhwbGljaXQgX01vdmVfYWxsb2NhdG9yX3RhZygpID0gZGVmYXVsdDsNCn07DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCnBhaXI8X1R5KiwgcHRyZGlmZl90PiBfR2V0X3RlbXBvcmFyeV9idWZm
ZXIocHRyZGlmZl90IF9Db3VudCkgbm9leGNlcHQgew0KICAgIGlmIChzdGF0aWNfY2FzdDxzaXpl
X3Q+KF9Db3VudCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkgLyBzaXplb2YoX1R5KSkgew0K
ICAgICAgICBmb3IgKDsgMCA8IF9Db3VudDsgX0NvdW50IC89IDIpIHsNCiAgICAgICAgICAgIGNv
bnN0IGF1dG8gX1NpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9Db3VudCkgKiBzaXplb2YoX1R5
KTsNCiAgICAgICAgICAgIHZvaWQqIF9QYnVmOw0KDQogICAgICAgICAgICBpZiBjb25zdGV4cHIg
KGFsaWdub2YoX1R5KSA+IDE2dWxsKSB7DQogICAgICAgICAgICAgICAgX1BidWYgPSA6Om9wZXJh
dG9yIG5ldyAoX1NpemUsIGFsaWduX3ZhbF90e2FsaWdub2YoX1R5KX0sIG5vdGhyb3cpOw0KICAg
ICAgICAgICAgfSBlbHNlDQojbGluZSAxMzg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQogICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgX1BidWYgPSA6Om9wZXJhdG9yIG5ldyhfU2l6ZSwgbm90aHJvdyk7DQogICAgICAgICAg
ICB9DQoNCiAgICAgICAgICAgIGlmIChfUGJ1Zikgew0KICAgICAgICAgICAgICAgIHJldHVybiB7
c3RhdGljX2Nhc3Q8X1R5Kj4oX1BidWYpLCBfQ291bnR9Ow0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgcmV0dXJuIHtudWxscHRyLCAwfTsNCn0NCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0Kdm9pZCBfUmV0dXJuX3RlbXBvcmFyeV9idWZmZXIoX1R5KiBjb25zdCBfUGJ1
Zikgbm9leGNlcHQgew0KDQogICAgaWYgY29uc3RleHByIChhbGlnbm9mKF9UeSkgPiAxNnVsbCkg
ew0KICAgICAgICA6Om9wZXJhdG9yIGRlbGV0ZSAoX1BidWYsIGFsaWduX3ZhbF90e2FsaWdub2Yo
X1R5KX0pOw0KICAgIH0gZWxzZQ0KI2xpbmUgMTQwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KICAgIHsNCiAgICAgICAgOjpvcGVy
YXRvciBkZWxldGUoX1BidWYpOw0KICAgIH0NCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX05vVGhy
b3dGd2RJdD4NCnN0cnVjdCBfVW5pbml0aWFsaXplZF9iYWNrb3V0IHsgDQogICAgX05vVGhyb3dG
d2RJdCBfRmlyc3Q7DQogICAgX05vVGhyb3dGd2RJdCBfTGFzdDsNCg0KICAgIGV4cGxpY2l0IF9V
bmluaXRpYWxpemVkX2JhY2tvdXQoX05vVGhyb3dGd2RJdCBfRGVzdCkgOiBfRmlyc3QoX0Rlc3Qp
LCBfTGFzdChfRGVzdCkge30NCg0KICAgIF9VbmluaXRpYWxpemVkX2JhY2tvdXQoX05vVGhyb3dG
d2RJdCBfRmlyc3RfLCBfTm9UaHJvd0Z3ZEl0IF9MYXN0XykgOiBfRmlyc3QoX0ZpcnN0XyksIF9M
YXN0KF9MYXN0Xykge30NCg0KICAgIF9VbmluaXRpYWxpemVkX2JhY2tvdXQoY29uc3QgX1VuaW5p
dGlhbGl6ZWRfYmFja291dCYpID0gZGVsZXRlOw0KICAgIF9VbmluaXRpYWxpemVkX2JhY2tvdXQm
IG9wZXJhdG9yPShjb25zdCBfVW5pbml0aWFsaXplZF9iYWNrb3V0JikgPSBkZWxldGU7DQoNCiAg
ICB+X1VuaW5pdGlhbGl6ZWRfYmFja291dCgpIHsNCiAgICAgICAgX0Rlc3Ryb3lfcmFuZ2UoX0Zp
cnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9UeXBlcz4NCiAg
ICB2b2lkIF9FbXBsYWNlX2JhY2soX1R5cGVzJiYuLi4gX1ZhbHMpIHsgDQogICAgICAgIF9Db25z
dHJ1Y3RfaW5fcGxhY2UoKl9MYXN0LCA6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfVmFscykuLi4p
Ow0KICAgICAgICArK19MYXN0Ow0KICAgIH0NCg0KICAgIF9Ob1Rocm93RndkSXQgX1JlbGVhc2Uo
KSB7IA0KICAgICAgICBfRmlyc3QgPSBfTGFzdDsNCiAgICAgICAgcmV0dXJuIF9MYXN0Ow0KICAg
IH0NCn07DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQsIGNsYXNzIF9Ob1Rocm93RndkSXQ+
DQpfTm9UaHJvd0Z3ZEl0IF9VbmluaXRpYWxpemVkX21vdmVfdW5jaGVja2VkKF9Jbkl0IF9GaXJz
dCwgY29uc3QgX0luSXQgX0xhc3QsIF9Ob1Rocm93RndkSXQgX0Rlc3QpIHsNCiAgICANCiAgICBp
ZiBjb25zdGV4cHIgKF9QdHJfbW92ZV9jYXQ8X0luSXQsIF9Ob1Rocm93RndkSXQ+OjpfUmVhbGx5
X3RyaXZpYWwpIHsNCiAgICAgICAgcmV0dXJuIF9Db3B5X21lbW1vdmUoX0ZpcnN0LCBfTGFzdCwg
X0Rlc3QpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIF9VbmluaXRpYWxpemVkX2JhY2tvdXQ8X05v
VGhyb3dGd2RJdD4gX0JhY2tvdXR7X0Rlc3R9Ow0KICAgICAgICBmb3IgKDsgX0ZpcnN0ICE9IF9M
YXN0OyArK19GaXJzdCkgew0KICAgICAgICAgICAgX0JhY2tvdXQuX0VtcGxhY2VfYmFjayg6OnN0
ZDo6IG1vdmUoKl9GaXJzdCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9CYWNrb3V0
Ll9SZWxlYXNlKCk7DQogICAgfQ0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxv
Yz4NCmNsYXNzIF9VbmluaXRpYWxpemVkX2JhY2tvdXRfYWwgeyANCiAgICB1c2luZyBwb2ludGVy
ID0gX0FsbG9jX3B0cl90PF9BbGxvYz47DQoNCnB1YmxpYzoNCiAgICBfVW5pbml0aWFsaXplZF9i
YWNrb3V0X2FsKHBvaW50ZXIgX0Rlc3QsIF9BbGxvYyYgX0FsXykgOiBfRmlyc3QoX0Rlc3QpLCBf
TGFzdChfRGVzdCksIF9BbChfQWxfKSB7fQ0KDQogICAgX1VuaW5pdGlhbGl6ZWRfYmFja291dF9h
bChjb25zdCBfVW5pbml0aWFsaXplZF9iYWNrb3V0X2FsJikgPSBkZWxldGU7DQogICAgX1VuaW5p
dGlhbGl6ZWRfYmFja291dF9hbCYgb3BlcmF0b3I9KGNvbnN0IF9VbmluaXRpYWxpemVkX2JhY2tv
dXRfYWwmKSA9IGRlbGV0ZTsNCg0KICAgIH5fVW5pbml0aWFsaXplZF9iYWNrb3V0X2FsKCkgew0K
ICAgICAgICBfRGVzdHJveV9yYW5nZShfRmlyc3QsIF9MYXN0LCBfQWwpOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXM+DQogICAgdm9pZCBfRW1wbGFjZV9iYWNrKF9UeXBl
cyYmLi4uIF9WYWxzKSB7IA0KICAgICAgICBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz46OmNvbnN0
cnVjdChfQWwsIF9VbmZhbmN5KF9MYXN0KSwgOjpzdGQ6OiBmb3J3YXJkPF9UeXBlcz4oX1ZhbHMp
Li4uKTsNCiAgICAgICAgKytfTGFzdDsNCiAgICB9DQoNCiAgICBwb2ludGVyIF9SZWxlYXNlKCkg
eyANCiAgICAgICAgX0ZpcnN0ID0gX0xhc3Q7DQogICAgICAgIHJldHVybiBfTGFzdDsNCiAgICB9
DQoNCnByaXZhdGU6DQogICAgcG9pbnRlciBfRmlyc3Q7DQogICAgcG9pbnRlciBfTGFzdDsNCiAg
ICBfQWxsb2MmIF9BbDsNCn07DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQsIGNsYXNzIF9B
bGxvYz4NCl9BbGxvY19wdHJfdDxfQWxsb2M+IF9VbmluaXRpYWxpemVkX2NvcHkoDQogICAgY29u
c3QgX0luSXQgX0ZpcnN0LCBjb25zdCBfSW5JdCBfTGFzdCwgX0FsbG9jX3B0cl90PF9BbGxvYz4g
X0Rlc3QsIF9BbGxvYyYgX0FsKSB7DQogICAgDQogICAgDQogICAgdXNpbmcgX1B0cnZhbCA9IHR5
cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZSo7DQoNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9H
ZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3Jh
cHBlZChfTGFzdCk7DQoNCiAgICBpZiBjb25zdGV4cHIgKGNvbmp1bmN0aW9uX3Y8Ym9vbF9jb25z
dGFudDxfUHRyX2NvcHlfY2F0PGRlY2x0eXBlKF9VRmlyc3QpLCBfUHRydmFsPjo6X1JlYWxseV90
cml2aWFsPiwNCiAgICAgICAgICAgICAgICAgICAgICBfVXNlc19kZWZhdWx0X2NvbnN0cnVjdDxf
QWxsb2MsIF9QdHJ2YWwsIGRlY2x0eXBlKCpfVUZpcnN0KT4+KSB7DQogICAgICAgIF9Db3B5X21l
bW1vdmUoX1VGaXJzdCwgX1VMYXN0LCBfVW5mYW5jeShfRGVzdCkpOw0KICAgICAgICBfRGVzdCAr
PSBfVUxhc3QgLSBfVUZpcnN0Ow0KICAgIH0gZWxzZSB7DQogICAgICAgIF9VbmluaXRpYWxpemVk
X2JhY2tvdXRfYWw8X0FsbG9jPiBfQmFja291dHtfRGVzdCwgX0FsfTsNCiAgICAgICAgZm9yICg7
IF9VRmlyc3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgICAgIF9CYWNrb3V0Ll9F
bXBsYWNlX2JhY2soKl9VRmlyc3QpOw0KICAgICAgICB9DQoNCiAgICAgICAgX0Rlc3QgPSBfQmFj
a291dC5fUmVsZWFzZSgpOw0KICAgIH0NCg0KICAgIHJldHVybiBfRGVzdDsNCn0NCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDE1NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceG1lbW9yeSINCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3Mg
X05vVGhyb3dGd2RJdD4NCl9Ob1Rocm93RndkSXQgdW5pbml0aWFsaXplZF9jb3B5KGNvbnN0IF9J
bkl0IF9GaXJzdCwgY29uc3QgX0luSXQgX0xhc3QsIF9Ob1Rocm93RndkSXQgX0Rlc3QpIHsNCiAg
ICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmly
c3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3Qg
PSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgYXV0byBfVURlc3QgICAgICAgPSBfR2V0X3Vu
d3JhcHBlZF9uKF9EZXN0LCBfSWRsX2Rpc3RhbmNlPF9Jbkl0PihfVUZpcnN0LCBfVUxhc3QpKTsN
CiAgICBpZiBjb25zdGV4cHIgKF9QdHJfY29weV9jYXQ8ZGVjbHR5cGUoX1VGaXJzdCksIGRlY2x0
eXBlKF9VRGVzdCk+OjpfUmVhbGx5X3RyaXZpYWwpIHsNCiAgICAgICAgX1VEZXN0ID0gX0NvcHlf
bWVtbW92ZShfVUZpcnN0LCBfVUxhc3QsIF9VRGVzdCk7DQogICAgfSBlbHNlIHsNCiAgICAgICAg
X1VuaW5pdGlhbGl6ZWRfYmFja291dDxkZWNsdHlwZShfVURlc3QpPiBfQmFja291dHtfVURlc3R9
Ow0KICAgICAgICBmb3IgKDsgX1VGaXJzdCAhPSBfVUxhc3Q7ICsrX1VGaXJzdCkgew0KICAgICAg
ICAgICAgX0JhY2tvdXQuX0VtcGxhY2VfYmFjaygqX1VGaXJzdCk7DQogICAgICAgIH0NCg0KICAg
ICAgICBfVURlc3QgPSBfQmFja291dC5fUmVsZWFzZSgpOw0KICAgIH0NCg0KICAgIF9TZWVrX3dy
YXBwZWQoX0Rlc3QsIF9VRGVzdCk7DQogICAgcmV0dXJuIF9EZXN0Ow0KfQ0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTYz
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVt
b3J5Ig0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfQWxsb2M+DQpfQWxsb2Nf
cHRyX3Q8X0FsbG9jPiBfVW5pbml0aWFsaXplZF9tb3ZlKA0KICAgIGNvbnN0IF9Jbkl0IF9GaXJz
dCwgY29uc3QgX0luSXQgX0xhc3QsIF9BbGxvY19wdHJfdDxfQWxsb2M+IF9EZXN0LCBfQWxsb2Mm
IF9BbCkgew0KICAgIA0KICAgIA0KICAgIHVzaW5nIF9QdHJ2YWwgICAgID0gdHlwZW5hbWUgX0Fs
bG9jOjp2YWx1ZV90eXBlKjsNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53cmFwcGVk
KF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7
DQogICAgaWYgY29uc3RleHByIChjb25qdW5jdGlvbl92PGJvb2xfY29uc3RhbnQ8X1B0cl9tb3Zl
X2NhdDxkZWNsdHlwZShfVUZpcnN0KSwgX1B0cnZhbD46Ol9SZWFsbHlfdHJpdmlhbD4sDQogICAg
ICAgICAgICAgICAgICAgICAgX1VzZXNfZGVmYXVsdF9jb25zdHJ1Y3Q8X0FsbG9jLCBfUHRydmFs
LCBkZWNsdHlwZSg6OnN0ZDo6IG1vdmUoKl9VRmlyc3QpKT4+KSB7DQogICAgICAgIF9Db3B5X21l
bW1vdmUoX1VGaXJzdCwgX1VMYXN0LCBfVW5mYW5jeShfRGVzdCkpOw0KICAgICAgICByZXR1cm4g
X0Rlc3QgKyAoX1VMYXN0IC0gX1VGaXJzdCk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgX1VuaW5p
dGlhbGl6ZWRfYmFja291dF9hbDxfQWxsb2M+IF9CYWNrb3V0e19EZXN0LCBfQWx9Ow0KICAgICAg
ICBmb3IgKDsgX1VGaXJzdCAhPSBfVUxhc3Q7ICsrX1VGaXJzdCkgew0KICAgICAgICAgICAgX0Jh
Y2tvdXQuX0VtcGxhY2VfYmFjayg6OnN0ZDo6IG1vdmUoKl9VRmlyc3QpKTsNCiAgICAgICAgfQ0K
DQogICAgICAgIHJldHVybiBfQmFja291dC5fUmVsZWFzZSgpOw0KICAgIH0NCn0NCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTY5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4bWVtb3J5Ig0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxv
Yz4NCl9BbGxvY19wdHJfdDxfQWxsb2M+IF9VbmluaXRpYWxpemVkX2ZpbGxfbigNCiAgICBfQWxs
b2NfcHRyX3Q8X0FsbG9jPiBfRmlyc3QsIF9BbGxvY19zaXplX3Q8X0FsbG9jPiBfQ291bnQsIGNv
bnN0IHR5cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZSYgX1ZhbCwgX0FsbG9jJiBfQWwpIHsNCiAg
ICANCiAgICB1c2luZyBfVHkgPSB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGU7DQogICAgaWYg
Y29uc3RleHByIChfRmlsbF9tZW1zZXRfaXNfc2FmZTxfVHkqLCBfVHk+ICYmIF9Vc2VzX2RlZmF1
bHRfY29uc3RydWN0PF9BbGxvYywgX1R5KiwgX1R5Pjo6dmFsdWUpIHsNCiAgICAgICAgOjogbWVt
c2V0KF9VbmZhbmN5KF9GaXJzdCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9WYWwpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KF9Db3VudCkpOw0KICAgICAgICByZXR1cm4gX0ZpcnN0ICsgX0Nv
dW50Ow0KICAgIH0gZWxzZSB7DQogICAgICAgIF9VbmluaXRpYWxpemVkX2JhY2tvdXRfYWw8X0Fs
bG9jPiBfQmFja291dHtfRmlyc3QsIF9BbH07DQogICAgICAgIGZvciAoOyAwIDwgX0NvdW50OyAt
LV9Db3VudCkgew0KICAgICAgICAgICAgX0JhY2tvdXQuX0VtcGxhY2VfYmFjayhfVmFsKTsNCiAg
ICAgICAgfQ0KDQogICAgICAgIHJldHVybiBfQmFja291dC5fUmVsZWFzZSgpOw0KICAgIH0NCn0N
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNzQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHhtZW1vcnkiDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX05vVGhyb3dGd2RJdCwgY2xh
c3MgX1R2YWw+DQp2b2lkIHVuaW5pdGlhbGl6ZWRfZmlsbChjb25zdCBfTm9UaHJvd0Z3ZEl0IF9G
aXJzdCwgY29uc3QgX05vVGhyb3dGd2RJdCBfTGFzdCwgY29uc3QgX1R2YWwmIF9WYWwpIHsNCiAg
ICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmly
c3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3Qg
PSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgaWYgY29uc3RleHByIChfRmlsbF9tZW1zZXRf
aXNfc2FmZTxfVW53cmFwcGVkX3Q8Y29uc3QgX05vVGhyb3dGd2RJdCY+LCBfVHZhbD4pIHsNCiAg
ICAgICAgOjogbWVtc2V0KF9VRmlyc3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9WYWwp
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KF9VTGFzdCAtIF9VRmlyc3QpKTsNCiAgICB9IGVsc2Ugew0K
ICAgICAgICBfVW5pbml0aWFsaXplZF9iYWNrb3V0PF9VbndyYXBwZWRfdDxjb25zdCBfTm9UaHJv
d0Z3ZEl0Jj4+IF9CYWNrb3V0e19VRmlyc3R9Ow0KICAgICAgICB3aGlsZSAoX0JhY2tvdXQuX0xh
c3QgIT0gX1VMYXN0KSB7DQogICAgICAgICAgICBfQmFja291dC5fRW1wbGFjZV9iYWNrKF9WYWwp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgX0JhY2tvdXQuX1JlbGVhc2UoKTsNCiAgICB9DQp9DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDE3OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceG1lbW9yeSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX05vVGhyb3dGd2RJdD4NCmlubGluZSBj
b25zdGV4cHIgYm9vbCBfVXNlX21lbXNldF92YWx1ZV9jb25zdHJ1Y3RfdiA9IGNvbmp1bmN0aW9u
X3Y8aXNfcG9pbnRlcjxfTm9UaHJvd0Z3ZEl0PiwNCiAgICBpc19zY2FsYXI8X0l0ZXJfdmFsdWVf
dDxfTm9UaHJvd0Z3ZEl0Pj4sIG5lZ2F0aW9uPGlzX3ZvbGF0aWxlPHJlbW92ZV9yZWZlcmVuY2Vf
dDxfSXRlcl9yZWZfdDxfTm9UaHJvd0Z3ZEl0Pj4+PiwNCiAgICBuZWdhdGlvbjxpc19tZW1iZXJf
cG9pbnRlcjxfSXRlcl92YWx1ZV90PF9Ob1Rocm93RndkSXQ+Pj4+Ow0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1B0cj4NCl9QdHIgX1plcm9fcmFuZ2UoY29uc3QgX1B0ciBfRmlyc3QsIGNvbnN0IF9QdHIg
X0xhc3QpIHsgDQogICAgY2hhciogY29uc3QgX0ZpcnN0X2NoID0gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oX0ZpcnN0KTsNCiAgICBjaGFyKiBjb25zdCBfTGFzdF9jaCAgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPihfTGFzdCk7DQogICAgOjogbWVtc2V0KF9GaXJzdF9jaCwgMCwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihfTGFzdF9jaCAtIF9GaXJzdF9jaCkpOw0KICAgIHJldHVybiBfTGFzdDsNCn0N
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPg0KX0FsbG9jX3B0cl90PF9BbGxvYz4gX1VuaW5p
dGlhbGl6ZWRfdmFsdWVfY29uc3RydWN0X24oDQogICAgX0FsbG9jX3B0cl90PF9BbGxvYz4gX0Zp
cnN0LCBfQWxsb2Nfc2l6ZV90PF9BbGxvYz4gX0NvdW50LCBfQWxsb2MmIF9BbCkgew0KICAgIA0K
ICAgIHVzaW5nIF9QdHJ0eSA9IHR5cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZSo7DQogICAgaWYg
Y29uc3RleHByIChfVXNlX21lbXNldF92YWx1ZV9jb25zdHJ1Y3RfdjxfUHRydHk+ICYmIF9Vc2Vz
X2RlZmF1bHRfY29uc3RydWN0PF9BbGxvYywgX1B0cnR5Pjo6dmFsdWUpIHsNCiAgICAgICAgYXV0
byBfUEZpcnN0ID0gX1VuZmFuY3koX0ZpcnN0KTsNCiAgICAgICAgX1plcm9fcmFuZ2UoX1BGaXJz
dCwgX1BGaXJzdCArIF9Db3VudCk7DQogICAgICAgIHJldHVybiBfRmlyc3QgKyBfQ291bnQ7DQog
ICAgfSBlbHNlIHsNCiAgICAgICAgX1VuaW5pdGlhbGl6ZWRfYmFja291dF9hbDxfQWxsb2M+IF9C
YWNrb3V0e19GaXJzdCwgX0FsfTsNCiAgICAgICAgZm9yICg7IDAgPCBfQ291bnQ7IC0tX0NvdW50
KSB7DQogICAgICAgICAgICBfQmFja291dC5fRW1wbGFjZV9iYWNrKCk7DQogICAgICAgIH0NCg0K
ICAgICAgICByZXR1cm4gX0JhY2tvdXQuX1JlbGVhc2UoKTsNCiAgICB9DQp9DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
ODYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHht
ZW1vcnkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Ob1Rocm93RndkSXQsIGNsYXNzIF9EaWZmPg0K
X05vVGhyb3dGd2RJdCBfVW5pbml0aWFsaXplZF92YWx1ZV9jb25zdHJ1Y3Rfbl91bmNoZWNrZWQx
KF9Ob1Rocm93RndkSXQgX1VGaXJzdCwgX0RpZmYgX0NvdW50KSB7DQogICAgDQogICAgOw0KICAg
IGlmIGNvbnN0ZXhwciAoX1VzZV9tZW1zZXRfdmFsdWVfY29uc3RydWN0X3Y8X05vVGhyb3dGd2RJ
dD4pIHsNCiAgICAgICAgcmV0dXJuIF9aZXJvX3JhbmdlKF9VRmlyc3QsIF9VRmlyc3QgKyBfQ291
bnQpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIF9VbmluaXRpYWxpemVkX2JhY2tvdXQ8X05vVGhy
b3dGd2RJdD4gX0JhY2tvdXR7X1VGaXJzdH07DQogICAgICAgIGZvciAoOyAwIDwgX0NvdW50OyAt
LV9Db3VudCkgew0KICAgICAgICAgICAgX0JhY2tvdXQuX0VtcGxhY2VfYmFjaygpOw0KICAgICAg
ICB9DQoNCiAgICAgICAgcmV0dXJuIF9CYWNrb3V0Ll9SZWxlYXNlKCk7DQogICAgfQ0KfQ0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTAwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtZW1vcnkiDQoNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTI6ICIgInN0
ZDo6Z2V0X3RlbXBvcmFyeV9idWZmZXIoKSBhbmQgc3RkOjpyZXR1cm5fdGVtcG9yYXJ5X2J1ZmZl
cigpIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9D
WFgxN19URU1QT1JBUllfQlVGRkVSX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0Vf
QUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhh
dmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gW1tub2Rpc2NhcmRdXSBwYWlyPF9UeSosIHB0
cmRpZmZfdD4gZ2V0X3RlbXBvcmFyeV9idWZmZXIocHRyZGlmZl90IF9Db3VudCkgbm9leGNlcHQg
ew0KICAgIHJldHVybiBfR2V0X3RlbXBvcmFyeV9idWZmZXI8X1R5PihfQ291bnQpOw0KfQ0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW2RlcHJlY2F0ZWQoIndhcm5pbmcgU1RMNDAxMjogIiAi
c3RkOjpnZXRfdGVtcG9yYXJ5X2J1ZmZlcigpIGFuZCBzdGQ6OnJldHVybl90ZW1wb3JhcnlfYnVm
ZmVyKCkgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNF
X0NYWDE3X1RFTVBPUkFSWV9CVUZGRVJfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5D
RV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3Ug
aGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB2b2lkIHJldHVybl90ZW1wb3JhcnlfYnVm
ZmVyKF9UeSogX1BidWYpIHsNCiAgICBfUmV0dXJuX3RlbXBvcmFyeV9idWZmZXIoX1BidWYpOw0K
fQ0KI2xpbmUgMTkxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx4bWVtb3J5Ig0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzLi4uIF9B
cmdzPg0Kc3RydWN0IF9Jbl9wbGFjZV9rZXlfZXh0cmFjdF9zZXQgew0KICAgIA0KICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBfRXh0cmFjdGFibGUgPSBmYWxzZTsNCn07DQoNCnRlbXBsYXRlIDxj
bGFzcyBfS2V5Pg0Kc3RydWN0IF9Jbl9wbGFjZV9rZXlfZXh0cmFjdF9zZXQ8X0tleSwgX0tleT4g
ew0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfRXh0cmFjdGFibGUgPSB0cnVlOw0K
ICAgIHN0YXRpYyBjb25zdCBfS2V5JiBfRXh0cmFjdChjb25zdCBfS2V5JiBfVmFsKSBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiBfVmFsOw0KICAgIH0NCn07DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0tleSwgY2xhc3MuLi4gQXJncz4NCnN0cnVjdCBfSW5fcGxhY2Vfa2V5X2V4dHJhY3RfbWFw
IHsNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX0V4dHJhY3RhYmxlID0gZmFsc2U7
DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1NlY29uZD4NCnN0cnVjdCBfSW5f
cGxhY2Vfa2V5X2V4dHJhY3RfbWFwPF9LZXksIF9LZXksIF9TZWNvbmQ+IHsNCiAgICANCiAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgX0V4dHJhY3RhYmxlID0gdHJ1ZTsNCiAgICBzdGF0aWMgY29u
c3QgX0tleSYgX0V4dHJhY3QoY29uc3QgX0tleSYgX1ZhbCwgY29uc3QgX1NlY29uZCYpIG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIF9WYWw7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNz
IF9LZXksIGNsYXNzIF9GaXJzdCwgY2xhc3MgX1NlY29uZD4NCnN0cnVjdCBfSW5fcGxhY2Vfa2V5
X2V4dHJhY3RfbWFwPF9LZXksIHBhaXI8X0ZpcnN0LCBfU2Vjb25kPj4gew0KICAgIA0KICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBfRXh0cmFjdGFibGUgPSBpc19zYW1lX3Y8X0tleSwgX1JlbW92
ZV9jdnJlZl90PF9GaXJzdD4+Ow0KICAgIHN0YXRpYyBjb25zdCBfS2V5JiBfRXh0cmFjdChjb25z
dCBwYWlyPF9GaXJzdCwgX1NlY29uZD4mIF9WYWwpIHsNCiAgICAgICAgcmV0dXJuIF9WYWwuZmly
c3Q7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9XcmFwIHsN
CiAgICBfVHkgX1ZhbHVlOyANCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCnN0cnVj
dCBfQWxsb2NfdGVtcG9yYXJ5IHsNCiAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgX0Fs
bG9jOjp2YWx1ZV90eXBlOw0KICAgIHVzaW5nIF9UcmFpdHMgICAgPSBhbGxvY2F0b3JfdHJhaXRz
PF9BbGxvYz47DQoNCiAgICBfQWxsb2MmIF9BbDsNCiAgICB1bmlvbiB7DQogICAgICAgIF9XcmFw
PHZhbHVlX3R5cGU+IF9TdG9yYWdlOw0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4g
X0FyZ3M+DQogICAgZXhwbGljaXQgX0FsbG9jX3RlbXBvcmFyeShfQWxsb2MmIF9BbF8sIF9Bcmdz
JiYuLi4gX1ZhbHMpIG5vZXhjZXB0KA0KICAgICAgICBub2V4Y2VwdChfVHJhaXRzOjpjb25zdHJ1
Y3QoX0FsXywgOjpzdGQ6OiBhZGRyZXNzb2YoX1N0b3JhZ2UuX1ZhbHVlKSwgOjpzdGQ6OiBmb3J3
YXJkPF9BcmdzPihfVmFscykuLi4pKSkNCiAgICAgICAgOiBfQWwoX0FsXykgew0KICAgICAgICBf
VHJhaXRzOjpjb25zdHJ1Y3QoX0FsLCA6OnN0ZDo6IGFkZHJlc3NvZihfU3RvcmFnZS5fVmFsdWUp
LCA6OnN0ZDo6IGZvcndhcmQ8X0FyZ3M+KF9WYWxzKS4uLik7DQogICAgfQ0KDQogICAgX0FsbG9j
X3RlbXBvcmFyeShjb25zdCBfQWxsb2NfdGVtcG9yYXJ5JikgPSBkZWxldGU7DQogICAgX0FsbG9j
X3RlbXBvcmFyeSYgb3BlcmF0b3I9KGNvbnN0IF9BbGxvY190ZW1wb3JhcnkmKSA9IGRlbGV0ZTsN
Cg0KICAgIH5fQWxsb2NfdGVtcG9yYXJ5KCkgew0KICAgICAgICBfVHJhaXRzOjpkZXN0cm95KF9B
bCwgOjpzdGQ6OiBhZGRyZXNzb2YoX1N0b3JhZ2UuX1ZhbHVlKSk7DQogICAgfQ0KfTsNCg0KdGVt
cGxhdGUgPGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgX0FsbG9j
YXRvcnNfZXF1YWwoY29uc3QgX0FsbG9jJiBfTGhzLCBjb25zdCBfQWxsb2MmIF9SaHMpIG5vZXhj
ZXB0IHsNCiAgICBpZiBjb25zdGV4cHIgKGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6aXNfYWx3
YXlzX2VxdWFsOjp2YWx1ZSkgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9IGVsc2Ugew0K
ICAgICAgICByZXR1cm4gX0xocyA9PSBfUmhzOw0KICAgIH0NCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0Z3ZEl0LCBjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGlubGluZSBfRndkSXQgcmVtb3Zl
KF9Gd2RJdCBfRmlyc3QsIGNvbnN0IF9Gd2RJdCBfTGFzdCwgY29uc3QgX1R5JiBfVmFsKSB7DQog
ICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0byBfVUZp
cnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0
ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KICAgIF9VRmlyc3QgICAgICAgICAgID0gX0ZpbmRf
dW5jaGVja2VkKF9VRmlyc3QsIF9VTGFzdCwgX1ZhbCk7DQogICAgYXV0byBfVU5leHQgICAgICAg
PSBfVUZpcnN0Ow0KICAgIGlmIChfVUZpcnN0ICE9IF9VTGFzdCkgew0KICAgICAgICB3aGlsZSAo
KytfVUZpcnN0ICE9IF9VTGFzdCkgew0KICAgICAgICAgICAgaWYgKCEoKl9VRmlyc3QgPT0gX1Zh
bCkpIHsNCiAgICAgICAgICAgICAgICAqX1VOZXh0ID0gOjpzdGQ6OiBtb3ZlKCpfVUZpcnN0KTsN
CiAgICAgICAgICAgICAgICArK19VTmV4dDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
IH0NCg0KICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0LCBfVU5leHQpOw0KICAgIHJldHVybiBfRmly
c3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByPg0KW1tub2Rpc2Nh
cmRdXSBpbmxpbmUgX0Z3ZEl0IHJlbW92ZV9pZihfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndkSXQg
X0xhc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwg
X0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsN
CiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBfVUZp
cnN0ICAgICAgICAgICA9IDo6c3RkOjogZmluZF9pZihfVUZpcnN0LCBfVUxhc3QsIF9QYXNzX2Zu
KF9QcmVkKSk7DQogICAgYXV0byBfVU5leHQgICAgICAgPSBfVUZpcnN0Ow0KICAgIGlmIChfVUZp
cnN0ICE9IF9VTGFzdCkgew0KICAgICAgICB3aGlsZSAoKytfVUZpcnN0ICE9IF9VTGFzdCkgew0K
ICAgICAgICAgICAgaWYgKCFfUHJlZCgqX1VGaXJzdCkpIHsNCiAgICAgICAgICAgICAgICAqX1VO
ZXh0ID0gOjpzdGQ6OiBtb3ZlKCpfVUZpcnN0KTsNCiAgICAgICAgICAgICAgICArK19VTmV4dDsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIF9TZWVrX3dyYXBwZWQoX0Zp
cnN0LCBfVU5leHQpOw0KICAgIHJldHVybiBfRmlyc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9Db250YWluZXIsIGNsYXNzIF9VdHk+DQp0eXBlbmFtZSBfQ29udGFpbmVyOjpzaXplX3R5cGUg
X0VyYXNlX3JlbW92ZShfQ29udGFpbmVyJiBfQ29udCwgY29uc3QgX1V0eSYgX1ZhbCkgeyANCiAg
ICBhdXRvIF9GaXJzdCAgICAgICAgICA9IF9Db250LmJlZ2luKCk7DQogICAgY29uc3QgYXV0byBf
TGFzdCAgICAgPSBfQ29udC5lbmQoKTsNCiAgICBjb25zdCBhdXRvIF9PbGRfc2l6ZSA9IF9Db250
LnNpemUoKTsNCiAgICBfU2Vla193cmFwcGVkKF9GaXJzdCwgOjpzdGQ6OiByZW1vdmUoX0dldF91
bndyYXBwZWQoX0ZpcnN0KSwgX0dldF91bndyYXBwZWQoX0xhc3QpLCBfVmFsKSk7DQogICAgX0Nv
bnQuZXJhc2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgcmV0dXJuIF9PbGRfc2l6ZSAtIF9Db250LnNp
emUoKTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lciwgY2xhc3MgX1ByPg0KdHlw
ZW5hbWUgX0NvbnRhaW5lcjo6c2l6ZV90eXBlIF9FcmFzZV9yZW1vdmVfaWYoX0NvbnRhaW5lciYg
X0NvbnQsIF9QciBfUHJlZCkgeyANCiAgICBhdXRvIF9GaXJzdCAgICAgICAgICA9IF9Db250LmJl
Z2luKCk7DQogICAgY29uc3QgYXV0byBfTGFzdCAgICAgPSBfQ29udC5lbmQoKTsNCiAgICBjb25z
dCBhdXRvIF9PbGRfc2l6ZSA9IF9Db250LnNpemUoKTsNCiAgICBfU2Vla193cmFwcGVkKF9GaXJz
dCwgOjpzdGQ6OiByZW1vdmVfaWYoX0dldF91bndyYXBwZWQoX0ZpcnN0KSwgX0dldF91bndyYXBw
ZWQoX0xhc3QpLCBfUHJlZCkpOw0KICAgIF9Db250LmVyYXNlKF9GaXJzdCwgX0xhc3QpOw0KICAg
IHJldHVybiBfT2xkX3NpemUgLSBfQ29udC5zaXplKCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9Db250YWluZXIsIGNsYXNzIF9Qcj4NCnR5cGVuYW1lIF9Db250YWluZXI6OnNpemVfdHlwZSBf
RXJhc2Vfbm9kZXNfaWYoX0NvbnRhaW5lciYgX0NvbnQsIF9QciBfUHJlZCkgeyANCiAgICBhdXRv
IF9GaXJzdCAgICAgICAgICA9IF9Db250LmJlZ2luKCk7DQogICAgY29uc3QgYXV0byBfTGFzdCAg
ICAgPSBfQ29udC5lbmQoKTsNCiAgICBjb25zdCBhdXRvIF9PbGRfc2l6ZSA9IF9Db250LnNpemUo
KTsNCiAgICB3aGlsZSAoX0ZpcnN0ICE9IF9MYXN0KSB7DQogICAgICAgIGlmIChfUHJlZCgqX0Zp
cnN0KSkgew0KICAgICAgICAgICAgX0ZpcnN0ID0gX0NvbnQuZXJhc2UoX0ZpcnN0KTsNCiAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgICsrX0ZpcnN0Ow0KICAgICAgICB9DQogICAgfQ0KICAg
IHJldHVybiBfT2xkX3NpemUgLSBfQ29udC5zaXplKCk7DQp9DQp9DQoNCg0KDQojcHJhZ21hIHdh
cm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBvcCkNCiNsaW5lIDIwODcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9yeSINCiNsaW5lIDIwODgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1lbW9y
eSINCiNsaW5lIDE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXG1lbW9yeSINCg0KDQoNCiNsaW5lIDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1lbW9yeSINCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgp
DQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4
MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMg
NDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYy
OTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KDQoNCnRlbXBsYXRlIDxj
bGFzcyBfSW5JdCwgY2xhc3MgX0RpZmYsIGNsYXNzIF9Ob1Rocm93RndkSXQ+DQpfTm9UaHJvd0Z3
ZEl0IHVuaW5pdGlhbGl6ZWRfY29weV9uKGNvbnN0IF9Jbkl0IF9GaXJzdCwgY29uc3QgX0RpZmYg
X0NvdW50X3JhdywgX05vVGhyb3dGd2RJdCBfRGVzdCkgew0KICAgIA0KICAgIF9BbGdvcml0aG1f
aW50X3Q8X0RpZmY+IF9Db3VudCA9IF9Db3VudF9yYXc7DQogICAgaWYgKDAgPCBfQ291bnQpIHsN
CiAgICAgICAgYXV0byBfVUZpcnN0ID0gX0dldF91bndyYXBwZWRfbihfRmlyc3QsIF9Db3VudCk7
DQogICAgICAgIGF1dG8gX1VEZXN0ICA9IF9HZXRfdW53cmFwcGVkX24oX0Rlc3QsIF9Db3VudCk7
DQogICAgICAgIGlmIGNvbnN0ZXhwciAoX1B0cl9jb3B5X2NhdDxkZWNsdHlwZShfVUZpcnN0KSwg
ZGVjbHR5cGUoX1VEZXN0KT46Ol9SZWFsbHlfdHJpdmlhbCkgew0KICAgICAgICAgICAgX1VEZXN0
ID0gX0NvcHlfbWVtbW92ZShfVUZpcnN0LCBfVUZpcnN0ICsgX0NvdW50LCBfVURlc3QpOw0KICAg
ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX1VuaW5pdGlhbGl6ZWRfYmFja291dDxkZWNsdHlw
ZShfVURlc3QpPiBfQmFja291dHtfVURlc3R9Ow0KICAgICAgICAgICAgZm9yICg7IDAgPCBfQ291
bnQ7IC0tX0NvdW50LCAodm9pZCkgKytfVUZpcnN0KSB7DQogICAgICAgICAgICAgICAgX0JhY2tv
dXQuX0VtcGxhY2VfYmFjaygqX1VGaXJzdCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
IF9VRGVzdCA9IF9CYWNrb3V0Ll9SZWxlYXNlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBfU2Vl
a193cmFwcGVkKF9EZXN0LCBfVURlc3QpOw0KICAgIH0NCg0KICAgIHJldHVybiBfRGVzdDsNCn0N
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcbWVtb3J5Ig0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfTm9U
aHJvd0Z3ZEl0Pg0KX05vVGhyb3dGd2RJdCB1bmluaXRpYWxpemVkX21vdmUoY29uc3QgX0luSXQg
X0ZpcnN0LCBjb25zdCBfSW5JdCBfTGFzdCwgX05vVGhyb3dGd2RJdCBfRGVzdCkgew0KICAgIA0K
ICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VG
aXJzdCA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgID0g
X0dldF91bndyYXBwZWQoX0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VEZXN0ICA9IF9HZXRfdW53
cmFwcGVkX24oX0Rlc3QsIF9JZGxfZGlzdGFuY2U8X0luSXQ+KF9VRmlyc3QsIF9VTGFzdCkpOw0K
ICAgIF9TZWVrX3dyYXBwZWQoX0Rlc3QsIF9VbmluaXRpYWxpemVkX21vdmVfdW5jaGVja2VkKF9V
Rmlyc3QsIF9VTGFzdCwgX1VEZXN0KSk7DQogICAgcmV0dXJuIF9EZXN0Ow0KfQ0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX0RpZmYsIGNsYXNzIF9Ob1Rocm93RndkSXQ+DQpwYWly
PF9Jbkl0LCBfTm9UaHJvd0Z3ZEl0PiB1bmluaXRpYWxpemVkX21vdmVfbihfSW5JdCBfRmlyc3Qs
IGNvbnN0IF9EaWZmIF9Db3VudF9yYXcsIF9Ob1Rocm93RndkSXQgX0Rlc3QpIHsNCiAgICANCiAg
ICBfQWxnb3JpdGhtX2ludF90PF9EaWZmPiBfQ291bnQgPSBfQ291bnRfcmF3Ow0KICAgIGlmICgw
IDwgX0NvdW50KSB7DQogICAgICAgIGF1dG8gX1VGaXJzdCA9IF9HZXRfdW53cmFwcGVkX24oX0Zp
cnN0LCBfQ291bnQpOw0KICAgICAgICBhdXRvIF9VRGVzdCAgPSBfR2V0X3Vud3JhcHBlZF9uKF9E
ZXN0LCBfQ291bnQpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKF9QdHJfbW92ZV9jYXQ8ZGVjbHR5
cGUoX1VGaXJzdCksIGRlY2x0eXBlKF9VRGVzdCk+OjpfUmVhbGx5X3RyaXZpYWwpIHsNCiAgICAg
ICAgICAgIF9VRGVzdCA9IF9Db3B5X21lbW1vdmUoX1VGaXJzdCwgX1VGaXJzdCArIF9Db3VudCwg
X1VEZXN0KTsNCiAgICAgICAgICAgIF9VRmlyc3QgKz0gX0NvdW50Ow0KICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgX1VuaW5pdGlhbGl6ZWRfYmFja291dDxkZWNsdHlwZShfVURlc3QpPiBf
QmFja291dHtfVURlc3R9Ow0KICAgICAgICAgICAgZm9yICg7IDAgPCBfQ291bnQ7IC0tX0NvdW50
LCAodm9pZCkgKytfVUZpcnN0KSB7DQogICAgICAgICAgICAgICAgX0JhY2tvdXQuX0VtcGxhY2Vf
YmFjayg6OnN0ZDo6IG1vdmUoKl9VRmlyc3QpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgX1VEZXN0ID0gX0JhY2tvdXQuX1JlbGVhc2UoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9T
ZWVrX3dyYXBwZWQoX0Rlc3QsIF9VRGVzdCk7DQogICAgICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0
LCBfVUZpcnN0KTsNCiAgICB9DQoNCiAgICByZXR1cm4ge19GaXJzdCwgX0Rlc3R9Ow0KfQ0KI2xp
bmUgMTI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XG1lbW9yeSINCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfTm9UaHJvd0Z3ZEl0LCBjbGFzcyBfRGlm
ZiwgY2xhc3MgX1R2YWw+DQpfTm9UaHJvd0Z3ZEl0IHVuaW5pdGlhbGl6ZWRfZmlsbF9uKF9Ob1Ro
cm93RndkSXQgX0ZpcnN0LCBjb25zdCBfRGlmZiBfQ291bnRfcmF3LCBjb25zdCBfVHZhbCYgX1Zh
bCkgew0KICAgIA0KICAgIF9BbGdvcml0aG1faW50X3Q8X0RpZmY+IF9Db3VudCA9IF9Db3VudF9y
YXc7DQogICAgaWYgKDAgPCBfQ291bnQpIHsNCiAgICAgICAgYXV0byBfVUZpcnN0ID0gX0dldF91
bndyYXBwZWRfbihfRmlyc3QsIF9Db3VudCk7DQogICAgICAgIGlmIGNvbnN0ZXhwciAoX0ZpbGxf
bWVtc2V0X2lzX3NhZmU8X1Vud3JhcHBlZF9uX3Q8Y29uc3QgX05vVGhyb3dGd2RJdCY+LCBfVHZh
bD4pIHsNCiAgICAgICAgICAgIDo6IG1lbXNldChfVUZpcnN0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihfVmFsKSwgX0NvdW50KTsNCiAgICAgICAgICAgIF9VRmlyc3QgKz0gX0NvdW50Ow0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX1VuaW5pdGlhbGl6ZWRfYmFja291dDxfVW53
cmFwcGVkX25fdDxjb25zdCBfTm9UaHJvd0Z3ZEl0Jj4+IF9CYWNrb3V0e19VRmlyc3R9Ow0KICAg
ICAgICAgICAgZm9yICg7IDAgPCBfQ291bnQ7IC0tX0NvdW50KSB7DQogICAgICAgICAgICAgICAg
X0JhY2tvdXQuX0VtcGxhY2VfYmFjayhfVmFsKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgX1VGaXJzdCA9IF9CYWNrb3V0Ll9SZWxlYXNlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBf
U2Vla193cmFwcGVkKF9GaXJzdCwgX1VGaXJzdCk7DQogICAgfQ0KDQogICAgcmV0dXJuIF9GaXJz
dDsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDIwMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxtZW1vcnkiDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kdm9pZCBkZXN0cm95X2F0KF9U
eSogY29uc3QgX0xvY2F0aW9uKSBub2V4Y2VwdCAgew0KICAgIF9Mb2NhdGlvbi0+fl9UeSgpOw0K
fQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfTm9UaHJvd0Z3ZEl0Pg0Kdm9pZCBkZXN0cm95KGNvbnN0
IF9Ob1Rocm93RndkSXQgX0ZpcnN0LCBjb25zdCBfTm9UaHJvd0Z3ZEl0IF9MYXN0KSB7IA0KICAg
IF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIF9EZXN0cm95X3JhbmdlKF9H
ZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53cmFwcGVkKF9MYXN0KSk7DQp9DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9Ob1Rocm93RndkSXQsIGNsYXNzIF9EaWZmPg0KX05vVGhyb3dGd2RJdCBk
ZXN0cm95X24oX05vVGhyb3dGd2RJdCBfRmlyc3QsIGNvbnN0IF9EaWZmIF9Db3VudF9yYXcpIHsN
CiAgICANCiAgICBfQWxnb3JpdGhtX2ludF90PF9EaWZmPiBfQ291bnQgPSBfQ291bnRfcmF3Ow0K
ICAgIGlmICgwIDwgX0NvdW50KSB7DQogICAgICAgIGF1dG8gX1VGaXJzdCA9IF9HZXRfdW53cmFw
cGVkX24oX0ZpcnN0LCBfQ291bnQpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKGlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGVfdjxfSXRlcl92YWx1ZV90PF9Ob1Rocm93RndkSXQ+Pikgew0KICAgICAg
ICAgICAgOjpzdGQ6OiBhZHZhbmNlKF9VRmlyc3QsIF9Db3VudCk7DQogICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICBkbyB7DQogICAgICAgICAgICAgICAgX0Rlc3Ryb3lfaW5fcGxhY2UoKl9V
Rmlyc3QpOw0KICAgICAgICAgICAgICAgICsrX1VGaXJzdDsNCiAgICAgICAgICAgICAgICAtLV9D
b3VudDsNCiAgICAgICAgICAgIH0gd2hpbGUgKDAgPCBfQ291bnQpOw0KICAgICAgICB9DQoNCiAg
ICAgICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9VRmlyc3QpOw0KICAgIH0NCg0KICAgIHJldHVy
biBfRmlyc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Ob1Rocm93RndkSXQ+DQp2b2lkIHVu
aW5pdGlhbGl6ZWRfZGVmYXVsdF9jb25zdHJ1Y3QoY29uc3QgX05vVGhyb3dGd2RJdCBfRmlyc3Qs
IGNvbnN0IF9Ob1Rocm93RndkSXQgX0xhc3QpIHsNCiAgICANCiAgICB1c2luZyBfVHkgPSBfSXRl
cl92YWx1ZV90PF9Ob1Rocm93RndkSXQ+Ow0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwg
X0xhc3QpOw0KICAgIGlmIGNvbnN0ZXhwciAoIWlzX3RyaXZpYWxseV9kZWZhdWx0X2NvbnN0cnVj
dGlibGVfdjxfVHk+KSB7DQogICAgICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX0dldF91bndyYXBw
ZWQoX0xhc3QpOw0KICAgICAgICBfVW5pbml0aWFsaXplZF9iYWNrb3V0IF9CYWNrb3V0e19HZXRf
dW53cmFwcGVkKF9GaXJzdCl9Ow0KICAgICAgICBmb3IgKDsgX0JhY2tvdXQuX0xhc3QgIT0gX1VM
YXN0OyArK19CYWNrb3V0Ll9MYXN0KSB7DQogICAgICAgICAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8
dm9pZCo+KF9VbmZhbmN5KF9CYWNrb3V0Ll9MYXN0KSkpIF9UeTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIF9CYWNrb3V0Ll9SZWxlYXNlKCk7DQogICAgfQ0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
Tm9UaHJvd0Z3ZEl0LCBjbGFzcyBfRGlmZj4NCl9Ob1Rocm93RndkSXQgdW5pbml0aWFsaXplZF9k
ZWZhdWx0X2NvbnN0cnVjdF9uKF9Ob1Rocm93RndkSXQgX0ZpcnN0LCBjb25zdCBfRGlmZiBfQ291
bnRfcmF3KSB7DQogICAgDQogICAgdXNpbmcgX1R5ICAgICAgICAgICAgICAgICAgICAgID0gX0l0
ZXJfdmFsdWVfdDxfTm9UaHJvd0Z3ZEl0PjsNCiAgICBfQWxnb3JpdGhtX2ludF90PF9EaWZmPiBf
Q291bnQgPSBfQ291bnRfcmF3Ow0KICAgIGlmICgwIDwgX0NvdW50KSB7DQogICAgICAgIGlmIGNv
bnN0ZXhwciAoaXNfdHJpdmlhbGx5X2RlZmF1bHRfY29uc3RydWN0aWJsZV92PF9UeT4pIHsNCiAg
ICAgICAgICAgIDo6c3RkOjogYWR2YW5jZShfRmlyc3QsIF9Db3VudCk7DQogICAgICAgIH0gZWxz
ZSB7DQogICAgICAgICAgICBfVW5pbml0aWFsaXplZF9iYWNrb3V0IF9CYWNrb3V0e19HZXRfdW53
cmFwcGVkX24oX0ZpcnN0LCBfQ291bnQpfTsNCiAgICAgICAgICAgIGZvciAoOyAwIDwgX0NvdW50
OyArK19CYWNrb3V0Ll9MYXN0LCAodm9pZCkgLS1fQ291bnQpIHsNCiAgICAgICAgICAgICAgICA6
Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KF9VbmZhbmN5KF9CYWNrb3V0Ll9MYXN0KSkpIF9UeTsN
CiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9CYWNr
b3V0Ll9SZWxlYXNlKCkpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIF9GaXJzdDsN
Cn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX05vVGhyb3dGd2RJdD4NCnZvaWQgdW5pbml0aWFsaXpl
ZF92YWx1ZV9jb25zdHJ1Y3QoY29uc3QgX05vVGhyb3dGd2RJdCBfRmlyc3QsIGNvbnN0IF9Ob1Ro
cm93RndkSXQgX0xhc3QpIHsNCiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9M
YXN0KTsNCiAgICBjb25zdCBhdXRvIF9VRmlyc3QgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0K
ICAgIGNvbnN0IGF1dG8gX1VMYXN0ICA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBpZiBj
b25zdGV4cHIgKF9Vc2VfbWVtc2V0X3ZhbHVlX2NvbnN0cnVjdF92PF9VbndyYXBwZWRfdDxjb25z
dCBfTm9UaHJvd0Z3ZEl0Jj4+KSB7DQogICAgICAgIF9aZXJvX3JhbmdlKF9VRmlyc3QsIF9VTGFz
dCk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgX1VuaW5pdGlhbGl6ZWRfYmFja291dCBfQmFja291
dHtfVUZpcnN0fTsNCiAgICAgICAgd2hpbGUgKF9CYWNrb3V0Ll9MYXN0ICE9IF9VTGFzdCkgew0K
ICAgICAgICAgICAgX0JhY2tvdXQuX0VtcGxhY2VfYmFjaygpOw0KICAgICAgICB9DQoNCiAgICAg
ICAgX0JhY2tvdXQuX1JlbGVhc2UoKTsNCiAgICB9DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9O
b1Rocm93RndkSXQsIGNsYXNzIF9EaWZmPg0KX05vVGhyb3dGd2RJdCB1bmluaXRpYWxpemVkX3Zh
bHVlX2NvbnN0cnVjdF9uKF9Ob1Rocm93RndkSXQgX0ZpcnN0LCBjb25zdCBfRGlmZiBfQ291bnRf
cmF3KSB7DQogICAgDQogICAgX0FsZ29yaXRobV9pbnRfdDxfRGlmZj4gX0NvdW50ID0gX0NvdW50
X3JhdzsNCiAgICBpZiAoMCA8IF9Db3VudCkgew0KICAgICAgICBfU2Vla193cmFwcGVkKF9GaXJz
dCwgX1VuaW5pdGlhbGl6ZWRfdmFsdWVfY29uc3RydWN0X25fdW5jaGVja2VkMShfR2V0X3Vud3Jh
cHBlZF9uKF9GaXJzdCwgX0NvdW50KSwgX0NvdW50KSk7DQogICAgfQ0KDQogICAgcmV0dXJuIF9G
aXJzdDsNCn0NCg0KI2xpbmUgMzEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXG1lbW9yeSINCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9PdXRJdCwg
Y2xhc3MgX1R5Pg0KY2xhc3MgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTE6ICIgInN0ZDo6
cmF3X3N0b3JhZ2VfaXRlcmF0b3IgaXMgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiQ29uc2lkZXIg
dXNpbmcgdGhlIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KCkgZmFtaWx5IG9mIGFsZ29yaXRobXMg
aW5zdGVhZC4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfUkFXX1NUT1JBR0VfSVRF
UkFUT1JfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVD
QVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz
IHdhcm5pbmcuIildXSByYXdfc3RvcmFnZV9pdGVyYXRvciB7IA0KcHVibGljOg0KICAgIHVzaW5n
IGl0ZXJhdG9yX2NhdGVnb3J5ID0gb3V0cHV0X2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1
ZV90eXBlICAgICAgICA9IHZvaWQ7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgPSB2b2lk
Ow0KICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgID0gdm9pZDsNCiAgICB1c2luZyByZWZlcmVu
Y2UgICAgICAgICA9IHZvaWQ7DQoNCiAgICBleHBsaWNpdCByYXdfc3RvcmFnZV9pdGVyYXRvcihf
T3V0SXQgX0ZpcnN0KSA6IF9OZXh0KF9GaXJzdCkge30NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmF3
X3N0b3JhZ2VfaXRlcmF0b3ImIG9wZXJhdG9yKigpIHsgDQogICAgICAgIHJldHVybiAqdGhpczsN
CiAgICB9DQoNCiAgICByYXdfc3RvcmFnZV9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IF9UeSYg
X1ZhbCkgeyANCiAgICAgICAgX0NvbnN0cnVjdF9pbl9wbGFjZSgqX05leHQsIF9WYWwpOw0KICAg
ICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3ImIG9w
ZXJhdG9yPShfVHkmJiBfVmFsKSB7IA0KICAgICAgICBfQ29uc3RydWN0X2luX3BsYWNlKCpfTmV4
dCwgOjpzdGQ6OiBtb3ZlKF9WYWwpKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0K
ICAgIHJhd19zdG9yYWdlX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgew0KICAgICAgICArK19OZXh0
Ow0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgcmF3X3N0b3JhZ2VfaXRlcmF0
b3Igb3BlcmF0b3IrKyhpbnQpIHsNCiAgICAgICAgcmF3X3N0b3JhZ2VfaXRlcmF0b3IgX0FucyA9
ICp0aGlzOw0KICAgICAgICArK19OZXh0Ow0KICAgICAgICByZXR1cm4gX0FuczsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIF9PdXRJdCBiYXNlKCkgY29uc3Qgew0KICAgICAgICByZXR1cm4g
X05leHQ7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIF9PdXRJdCBfTmV4dDsNCn07DQojbGluZSAz
NTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbWVt
b3J5Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDQ2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxtZW1vcnkiDQoNCg0KDQpjbGFzcyBiYWRfd2Vha19wdHIgOiBwdWJsaWMgZXhjZXB0aW9uIHsg
DQpwdWJsaWM6DQogICAgYmFkX3dlYWtfcHRyKCkgbm9leGNlcHQge30NCg0KICAgIFtbbm9kaXNj
YXJkXV0gdmlydHVhbCBjb25zdCBjaGFyKiAgd2hhdCgpIGNvbnN0IG5vZXhjZXB0IG92ZXJyaWRl
IHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiAiYmFkX3dlYWtfcHRyIjsNCiAgICB9DQp9Ow0K
DQpbW25vcmV0dXJuXV0gaW5saW5lIHZvaWQgX1Rocm93X2JhZF93ZWFrX3B0cigpIHsNCiAgICBi
YWRfd2Vha19wdHJ7fS5fUmFpc2UoKTsNCn0NCg0KDQpjbGFzcyBfX2RlY2xzcGVjKG5vdnRhYmxl
KSBfUmVmX2NvdW50X2Jhc2UgeyANCnByaXZhdGU6DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICB2
aXJ0dWFsIHZvaWQgX0Rlc3Ryb3koKSBub2V4Y2VwdCAgICAgPSAwOyANCiAgICB2aXJ0dWFsIHZv
aWQgX0RlbGV0ZV90aGlzKCkgbm9leGNlcHQgPSAwOyANCiNsaW5lIDUwMiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoNCiAgICBfQXRv
bWljX2NvdW50ZXJfdCBfVXNlcyAgPSAxOw0KICAgIF9BdG9taWNfY291bnRlcl90IF9XZWFrcyA9
IDE7DQoNCnByb3RlY3RlZDoNCiAgICBjb25zdGV4cHIgX1JlZl9jb3VudF9iYXNlKCkgbm9leGNl
cHQgPSBkZWZhdWx0OyANCg0KcHVibGljOg0KICAgIF9SZWZfY291bnRfYmFzZShjb25zdCBfUmVm
X2NvdW50X2Jhc2UmKSA9IGRlbGV0ZTsNCiAgICBfUmVmX2NvdW50X2Jhc2UmIG9wZXJhdG9yPShj
b25zdCBfUmVmX2NvdW50X2Jhc2UmKSA9IGRlbGV0ZTsNCg0KICAgIHZpcnR1YWwgfl9SZWZfY291
bnRfYmFzZSgpIG5vZXhjZXB0IHt9IA0KDQogICAgYm9vbCBfSW5jcmVmX256KCkgbm9leGNlcHQg
eyANCiAgICAgICAgYXV0byYgX1ZvbGF0aWxlX3VzZXMgPSByZWludGVycHJldF9jYXN0PHZvbGF0
aWxlIGxvbmcmPihfVXNlcyk7DQoNCg0KDQogICAgICAgIGxvbmcgX0NvdW50ID0gX19pc29fdm9s
YXRpbGVfbG9hZDMyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9sYXRpbGUgaW50Kj4oJl9Wb2xhdGlsZV91
c2VzKSk7DQojbGluZSA1MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcbWVtb3J5Ig0KICAgICAgICB3aGlsZSAoX0NvdW50ICE9IDApIHsNCiAgICAg
ICAgICAgIGNvbnN0IGxvbmcgX09sZF92YWx1ZSA9IF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5n
ZSgmX1ZvbGF0aWxlX3VzZXMsIF9Db3VudCArIDEsIF9Db3VudCk7DQogICAgICAgICAgICBpZiAo
X09sZF92YWx1ZSA9PSBfQ291bnQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAg
ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX0NvdW50ID0gX09sZF92YWx1ZTsNCiAgICAgICAg
fQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICB2b2lkIF9JbmNyZWYoKSBu
b2V4Y2VwdCB7IA0KICAgICAgICBfSW50ZXJsb2NrZWRJbmNyZW1lbnQocmVpbnRlcnByZXRfY2Fz
dDx2b2xhdGlsZSBsb25nKj4oJl9Vc2VzKSk7DQogICAgfQ0KDQogICAgdm9pZCBfSW5jd3JlZigp
IG5vZXhjZXB0IHsgDQogICAgICAgIF9JbnRlcmxvY2tlZEluY3JlbWVudChyZWludGVycHJldF9j
YXN0PHZvbGF0aWxlIGxvbmcqPigmX1dlYWtzKSk7DQogICAgfQ0KDQogICAgdm9pZCBfRGVjcmVm
KCkgbm9leGNlcHQgeyANCiAgICAgICAgaWYgKF9JbnRlcmxvY2tlZERlY3JlbWVudChyZWludGVy
cHJldF9jYXN0PHZvbGF0aWxlIGxvbmcqPigmX1VzZXMpKSA9PSAwKSB7DQogICAgICAgICAgICBf
RGVzdHJveSgpOw0KICAgICAgICAgICAgX0RlY3dyZWYoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0K
ICAgIHZvaWQgX0RlY3dyZWYoKSBub2V4Y2VwdCB7IA0KICAgICAgICBpZiAoX0ludGVybG9ja2Vk
RGVjcmVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8dm9sYXRpbGUgbG9uZyo+KCZfV2Vha3MpKSA9PSAw
KSB7DQogICAgICAgICAgICBfRGVsZXRlX3RoaXMoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IGxvbmcgX1VzZV9jb3VudCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGxvbmc+KF9Vc2VzKTsNCiAgICB9DQoNCiAgICB2aXJ0dWFsIHZvaWQqIF9HZXRfZGVs
ZXRlcihjb25zdCB0eXBlX2luZm8mKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBu
dWxscHRyOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmNsYXNzIF9SZWZf
Y291bnQgOiBwdWJsaWMgX1JlZl9jb3VudF9iYXNlIHsgDQpwdWJsaWM6DQogICAgZXhwbGljaXQg
X1JlZl9jb3VudChfVHkqIF9QeCkgOiBfUmVmX2NvdW50X2Jhc2UoKSwgX1B0cihfUHgpIHt9DQoN
CnByaXZhdGU6DQogICAgdmlydHVhbCB2b2lkIF9EZXN0cm95KCkgbm9leGNlcHQgb3ZlcnJpZGUg
eyANCiAgICAgICAgZGVsZXRlIF9QdHI7DQogICAgfQ0KDQogICAgdmlydHVhbCB2b2lkIF9EZWxl
dGVfdGhpcygpIG5vZXhjZXB0IG92ZXJyaWRlIHsgDQogICAgICAgIGRlbGV0ZSB0aGlzOw0KICAg
IH0NCg0KICAgIF9UeSogX1B0cjsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXNvdXJjZSwg
Y2xhc3MgX0R4Pg0KY2xhc3MgX1JlZl9jb3VudF9yZXNvdXJjZSA6IHB1YmxpYyBfUmVmX2NvdW50
X2Jhc2UgeyANCnB1YmxpYzoNCiAgICBfUmVmX2NvdW50X3Jlc291cmNlKF9SZXNvdXJjZSBfUHgs
IF9EeCBfRHQpDQogICAgICAgIDogX1JlZl9jb3VudF9iYXNlKCksIF9NeXBhaXIoX09uZV90aGVu
X3ZhcmlhZGljX2FyZ3NfdHt9LCA6OnN0ZDo6IG1vdmUoX0R0KSwgX1B4KSB7fQ0KDQogICAgdmly
dHVhbCB2b2lkKiBfR2V0X2RlbGV0ZXIoY29uc3QgdHlwZV9pbmZvJiBfVHlwZWlkKSBjb25zdCBu
b2V4Y2VwdCBvdmVycmlkZSB7DQoNCiAgICAgICAgaWYgKF9UeXBlaWQgPT0gdHlwZWlkKF9EeCkp
IHsNCiAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PF9EeCo+KDo6c3RkOjogYWRkcmVzc29m
KF9NeXBhaXIuX0dldF9maXJzdCgpKSk7DQogICAgICAgIH0NCg0KDQojbGluZSA1OTcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbWVtb3J5Ig0KDQog
ICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB2aXJ0dWFsIHZv
aWQgX0Rlc3Ryb3koKSBub2V4Y2VwdCBvdmVycmlkZSB7IA0KICAgICAgICBfTXlwYWlyLl9HZXRf
Zmlyc3QoKShfTXlwYWlyLl9NeXZhbDIpOw0KICAgIH0NCg0KICAgIHZpcnR1YWwgdm9pZCBfRGVs
ZXRlX3RoaXMoKSBub2V4Y2VwdCBvdmVycmlkZSB7IA0KICAgICAgICBkZWxldGUgdGhpczsNCiAg
ICB9DQoNCiAgICBfQ29tcHJlc3NlZF9wYWlyPF9EeCwgX1Jlc291cmNlPiBfTXlwYWlyOw0KfTsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc291cmNlLCBjbGFzcyBfRHgsIGNsYXNzIF9BbGxvYz4N
CmNsYXNzIF9SZWZfY291bnRfcmVzb3VyY2VfYWxsb2MgOiBwdWJsaWMgX1JlZl9jb3VudF9iYXNl
IHsNCiAgICANCnB1YmxpYzoNCiAgICBfUmVmX2NvdW50X3Jlc291cmNlX2FsbG9jKF9SZXNvdXJj
ZSBfUHgsIF9EeCBfRHQsIGNvbnN0IF9BbGxvYyYgX0F4KQ0KICAgICAgICA6IF9SZWZfY291bnRf
YmFzZSgpLA0KICAgICAgICAgIF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCA6
OnN0ZDo6IG1vdmUoX0R0KSwgX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCBfQXgsIF9QeCkg
e30NCg0KICAgIHZpcnR1YWwgdm9pZCogX0dldF9kZWxldGVyKGNvbnN0IHR5cGVfaW5mbyYgX1R5
cGVpZCkgY29uc3Qgbm9leGNlcHQgb3ZlcnJpZGUgew0KDQogICAgICAgIGlmIChfVHlwZWlkID09
IHR5cGVpZChfRHgpKSB7DQogICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxfRHgqPig6OnN0
ZDo6IGFkZHJlc3NvZihfTXlwYWlyLl9HZXRfZmlyc3QoKSkpOw0KICAgICAgICB9DQoNCg0KI2xp
bmUgNjMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XG1lbW9yeSINCg0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQoNCnByaXZhdGU6DQog
ICAgdXNpbmcgX015YWx0eSA9IF9SZWJpbmRfYWxsb2NfdDxfQWxsb2MsIF9SZWZfY291bnRfcmVz
b3VyY2VfYWxsb2M+Ow0KDQogICAgdmlydHVhbCB2b2lkIF9EZXN0cm95KCkgbm9leGNlcHQgb3Zl
cnJpZGUgeyANCiAgICAgICAgX015cGFpci5fR2V0X2ZpcnN0KCkoX015cGFpci5fTXl2YWwyLl9N
eXZhbDIpOw0KICAgIH0NCg0KICAgIHZpcnR1YWwgdm9pZCBfRGVsZXRlX3RoaXMoKSBub2V4Y2Vw
dCBvdmVycmlkZSB7IA0KICAgICAgICBfTXlhbHR5IF9BbCA9IF9NeXBhaXIuX015dmFsMi5fR2V0
X2ZpcnN0KCk7DQogICAgICAgIHRoaXMtPn5fUmVmX2NvdW50X3Jlc291cmNlX2FsbG9jKCk7DQog
ICAgICAgIF9EZWFsbG9jYXRlX3BsYWluKF9BbCwgdGhpcyk7DQogICAgfQ0KDQogICAgX0NvbXBy
ZXNzZWRfcGFpcjxfRHgsIF9Db21wcmVzc2VkX3BhaXI8X015YWx0eSwgX1Jlc291cmNlPj4gX015
cGFpcjsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBkZWZhdWx0X2RlbGV0
ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX0R4ID0gZGVmYXVsdF9kZWxldGU8X1R5
Pj4NCmNsYXNzIHVuaXF1ZV9wdHI7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpjbGFzcyBzaGFy
ZWRfcHRyOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KY2xhc3Mgd2Vha19wdHI7DQoNCnRlbXBs
YXRlIDxjbGFzcyBfWXR5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0Nhbl9lbmFibGVfc2hhcmVk
IDogZmFsc2VfdHlwZSB7fTsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfWXR5Pg0Kc3RydWN0IF9DYW5f
ZW5hYmxlX3NoYXJlZDxfWXR5LCB2b2lkX3Q8dHlwZW5hbWUgX1l0eTo6X0VzZnRfdHlwZT4+DQog
ICAgOiBpc19jb252ZXJ0aWJsZTxyZW1vdmVfY3ZfdDxfWXR5PiosIHR5cGVuYW1lIF9ZdHk6Ol9F
c2Z0X3R5cGUqPjo6dHlwZSB7DQogICAgDQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDY4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxtZW1vcnkiDQoNCg0Kc3RydWN0IF9FeGNlcHRpb25fcHRyX2FjY2VzczsNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCmNsYXNzIF9QdHJfYmFzZSB7IA0KcHVibGljOg0KICAgIHVzaW5nIGVs
ZW1lbnRfdHlwZSA9IHJlbW92ZV9leHRlbnRfdDxfVHk+Ow0KDQogICAgW1tub2Rpc2NhcmRdXSBs
b25nIHVzZV9jb3VudCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9SZXAgPyBf
UmVwLT5fVXNlX2NvdW50KCkgOiAwOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHky
Pg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBvd25lcl9iZWZvcmUoY29uc3QgX1B0cl9iYXNlPF9U
eTI+JiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsgDQogICAgICAgIHJldHVybiBfUmVwIDwgX1Jp
Z2h0Ll9SZXA7DQogICAgfQ0KDQogICAgX1B0cl9iYXNlKGNvbnN0IF9QdHJfYmFzZSYpID0gZGVs
ZXRlOw0KICAgIF9QdHJfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IF9QdHJfYmFzZSYpID0gZGVsZXRl
Ow0KDQpwcm90ZWN0ZWQ6DQogICAgW1tub2Rpc2NhcmRdXSBlbGVtZW50X3R5cGUqIGdldCgpIGNv
bnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9QdHI7DQogICAgfQ0KDQogICAgY29uc3Rl
eHByIF9QdHJfYmFzZSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsNCg0KICAgIH5fUHRyX2Jhc2UoKSA9
IGRlZmF1bHQ7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Mj4NCiAgICB2b2lkIF9Nb3ZlX2Nv
bnN0cnVjdF9mcm9tKF9QdHJfYmFzZTxfVHkyPiYmIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAg
ICANCiAgICAgICAgX1B0ciA9IF9SaWdodC5fUHRyOw0KICAgICAgICBfUmVwID0gX1JpZ2h0Ll9S
ZXA7DQoNCiAgICAgICAgX1JpZ2h0Ll9QdHIgPSBudWxscHRyOw0KICAgICAgICBfUmlnaHQuX1Jl
cCA9IG51bGxwdHI7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTI+DQogICAgdm9p
ZCBfQ29weV9jb25zdHJ1Y3RfZnJvbShjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfT3RoZXIpIG5v
ZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIF9PdGhlci5fSW5jcmVmKCk7DQoNCiAgICAgICAg
X1B0ciA9IF9PdGhlci5fUHRyOw0KICAgICAgICBfUmVwID0gX090aGVyLl9SZXA7DQogICAgfQ0K
DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTI+DQogICAgdm9pZCBfQWxpYXNfY29uc3RydWN0X2Zy
b20oY29uc3Qgc2hhcmVkX3B0cjxfVHkyPiYgX090aGVyLCBlbGVtZW50X3R5cGUqIF9QeCkgbm9l
eGNlcHQgew0KICAgICAgICANCiAgICAgICAgX090aGVyLl9JbmNyZWYoKTsNCg0KICAgICAgICBf
UHRyID0gX1B4Ow0KICAgICAgICBfUmVwID0gX090aGVyLl9SZXA7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPGNsYXNzIF9UeTI+DQogICAgdm9pZCBfQWxpYXNfbW92ZV9jb25zdHJ1Y3RfZnJvbShz
aGFyZWRfcHRyPF9UeTI+JiYgX090aGVyLCBlbGVtZW50X3R5cGUqIF9QeCkgbm9leGNlcHQgew0K
ICAgICAgICANCiAgICAgICAgX1B0ciA9IF9QeDsNCiAgICAgICAgX1JlcCA9IF9PdGhlci5fUmVw
Ow0KDQogICAgICAgIF9PdGhlci5fUHRyID0gbnVsbHB0cjsNCiAgICAgICAgX090aGVyLl9SZXAg
PSBudWxscHRyOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkwPg0KICAgIGZyaWVu
ZCBjbGFzcyB3ZWFrX3B0cjsgDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Mj4NCiAgICBib29s
IF9Db25zdHJ1Y3RfZnJvbV93ZWFrKGNvbnN0IHdlYWtfcHRyPF9UeTI+JiBfT3RoZXIpIG5vZXhj
ZXB0IHsNCiAgICAgICAgDQogICAgICAgIGlmIChfT3RoZXIuX1JlcCAmJiBfT3RoZXIuX1JlcC0+
X0luY3JlZl9ueigpKSB7DQogICAgICAgICAgICBfUHRyID0gX090aGVyLl9QdHI7DQogICAgICAg
ICAgICBfUmVwID0gX090aGVyLl9SZXA7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICB2b2lkIF9JbmNyZWYo
KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIGlmIChfUmVwKSB7DQogICAgICAgICAgICBfUmVw
LT5fSW5jcmVmKCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIF9EZWNyZWYoKSBub2V4
Y2VwdCB7IA0KICAgICAgICBpZiAoX1JlcCkgew0KICAgICAgICAgICAgX1JlcC0+X0RlY3JlZigp
Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBfU3dhcChfUHRyX2Jhc2UmIF9SaWdodCkg
bm9leGNlcHQgeyANCiAgICAgICAgOjpzdGQ6OiBzd2FwKF9QdHIsIF9SaWdodC5fUHRyKTsNCiAg
ICAgICAgOjpzdGQ6OiBzd2FwKF9SZXAsIF9SaWdodC5fUmVwKTsNCiAgICB9DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Mj4NCiAgICB2b2lkIF9XZWFrbHlfY29uc3RydWN0X2Zyb20oY29uc3Qg
X1B0cl9iYXNlPF9UeTI+JiBfT3RoZXIpIG5vZXhjZXB0IHsgDQogICAgICAgIGlmIChfT3RoZXIu
X1JlcCkgew0KICAgICAgICAgICAgX1B0ciA9IF9PdGhlci5fUHRyOw0KICAgICAgICAgICAgX1Jl
cCA9IF9PdGhlci5fUmVwOw0KICAgICAgICAgICAgX1JlcC0+X0luY3dyZWYoKTsNCiAgICAgICAg
fSBlbHNlIHsNCiAgICAgICAgICAgIDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgX0lu
Y3dyZWYoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIGlmIChfUmVwKSB7DQogICAgICAgICAg
ICBfUmVwLT5fSW5jd3JlZigpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBfRGVjd3Jl
ZigpIG5vZXhjZXB0IHsgDQogICAgICAgIGlmIChfUmVwKSB7DQogICAgICAgICAgICBfUmVwLT5f
RGVjd3JlZigpOw0KICAgICAgICB9DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIGVsZW1lbnRfdHlw
ZSogX1B0cntudWxscHRyfTsNCiAgICBfUmVmX2NvdW50X2Jhc2UqIF9SZXB7bnVsbHB0cn07DQoN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MD4NCiAgICBmcmllbmQgY2xhc3MgX1B0cl9iYXNlOw0K
DQogICAgZnJpZW5kIHNoYXJlZF9wdHI8X1R5PjsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkw
Pg0KICAgIGZyaWVuZCBzdHJ1Y3QgYXRvbWljOw0KDQogICAgZnJpZW5kIF9FeGNlcHRpb25fcHRy
X2FjY2VzczsNCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9EeCwgY2xhc3MgX1R5MD4NCiAgICBm
cmllbmQgX0R4KiBnZXRfZGVsZXRlcihjb25zdCBzaGFyZWRfcHRyPF9UeTA+JiBfU3gpIG5vZXhj
ZXB0Ow0KI2xpbmUgODI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXG1lbW9yeSINCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9ZdHksIGNsYXNzID0g
dm9pZD4NCnN0cnVjdCBfQ2FuX3NjYWxhcl9kZWxldGUgOiBmYWxzZV90eXBlIHt9Ow0KdGVtcGxh
dGUgPGNsYXNzIF9ZdHk+DQpzdHJ1Y3QgX0Nhbl9zY2FsYXJfZGVsZXRlPF9ZdHksIHZvaWRfdDxk
ZWNsdHlwZShkZWxldGUgOjpzdGQ6OiBkZWNsdmFsPF9ZdHkqPigpKT4+IDogdHJ1ZV90eXBlIHt9
Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfWXR5LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0Nhbl9h
cnJheV9kZWxldGUgOiBmYWxzZV90eXBlIHt9Ow0KdGVtcGxhdGUgPGNsYXNzIF9ZdHk+DQpzdHJ1
Y3QgX0Nhbl9hcnJheV9kZWxldGU8X1l0eSwgdm9pZF90PGRlY2x0eXBlKGRlbGV0ZVtdIDo6c3Rk
OjogZGVjbHZhbDxfWXR5Kj4oKSk+PiA6IHRydWVfdHlwZSB7fTsNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0Z4LCBjbGFzcyBfQXJnLCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0Nhbl9jYWxsX2Z1bmN0
aW9uX29iamVjdCA6IGZhbHNlX3R5cGUge307DQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z4LCBjbGFzcyBf
QXJnPg0Kc3RydWN0IF9DYW5fY2FsbF9mdW5jdGlvbl9vYmplY3Q8X0Z4LCBfQXJnLCB2b2lkX3Q8
ZGVjbHR5cGUoOjpzdGQ6OiBkZWNsdmFsPF9GeD4oKSg6OnN0ZDo6IGRlY2x2YWw8X0FyZz4oKSkp
Pj4gOiB0cnVlX3R5cGUge307DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9ZdHksIGNsYXNzIF9UeT4N
CnN0cnVjdCBfU1BfY29udmVydGlibGUgOiBpc19jb252ZXJ0aWJsZTxfWXR5KiwgX1R5Kj46OnR5
cGUge307DQp0ZW1wbGF0ZSA8Y2xhc3MgX1l0eSwgY2xhc3MgX1V0eT4NCnN0cnVjdCBfU1BfY29u
dmVydGlibGU8X1l0eSwgX1V0eVtdPiA6IGlzX2NvbnZlcnRpYmxlPF9ZdHkgKCopW10sIF9VdHkg
KCopW10+Ojp0eXBlIHt9Ow0KdGVtcGxhdGUgPGNsYXNzIF9ZdHksIGNsYXNzIF9VdHksIHNpemVf
dCBfRXh0Pg0Kc3RydWN0IF9TUF9jb252ZXJ0aWJsZTxfWXR5LCBfVXR5W19FeHRdPiA6IGlzX2Nv
bnZlcnRpYmxlPF9ZdHkgKCopW19FeHRdLCBfVXR5ICgqKVtfRXh0XT46OnR5cGUge307DQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9ZdHksIGNsYXNzIF9UeT4NCnN0cnVjdCBfU1BfcG9pbnRlcl9jb21w
YXRpYmxlIDogaXNfY29udmVydGlibGU8X1l0eSosIF9UeSo+Ojp0eXBlIHsNCiAgICANCiAgICAN
Cn07DQp0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgc2l6ZV90IF9FeHQ+DQpzdHJ1Y3QgX1NQX3BvaW50
ZXJfY29tcGF0aWJsZTxfVXR5W19FeHRdLCBfVXR5W10+IDogdHJ1ZV90eXBlIHsNCiAgICANCn07
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgc2l6ZV90IF9FeHQ+DQpzdHJ1Y3QgX1NQX3BvaW50ZXJf
Y29tcGF0aWJsZTxfVXR5W19FeHRdLCBjb25zdCBfVXR5W10+IDogdHJ1ZV90eXBlIHsNCiAgICAN
Cn07DQp0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgc2l6ZV90IF9FeHQ+DQpzdHJ1Y3QgX1NQX3BvaW50
ZXJfY29tcGF0aWJsZTxfVXR5W19FeHRdLCB2b2xhdGlsZSBfVXR5W10+IDogdHJ1ZV90eXBlIHsN
CiAgICANCn07DQp0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgc2l6ZV90IF9FeHQ+DQpzdHJ1Y3QgX1NQ
X3BvaW50ZXJfY29tcGF0aWJsZTxfVXR5W19FeHRdLCBjb25zdCB2b2xhdGlsZSBfVXR5W10+IDog
dHJ1ZV90eXBlIHsNCiAgICANCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9VeD4NCnN0cnVjdCBf
VGVtcG9yYXJ5X293bmVyIHsNCiAgICBfVXgqIF9QdHI7DQoNCiAgICBleHBsaWNpdCBfVGVtcG9y
YXJ5X293bmVyKF9VeCogY29uc3QgX1B0cl8pIG5vZXhjZXB0IDogX1B0cihfUHRyXykge30NCiAg
ICBfVGVtcG9yYXJ5X293bmVyKGNvbnN0IF9UZW1wb3Jhcnlfb3duZXImKSA9IGRlbGV0ZTsNCiAg
ICBfVGVtcG9yYXJ5X293bmVyJiBvcGVyYXRvcj0oY29uc3QgX1RlbXBvcmFyeV9vd25lciYpID0g
ZGVsZXRlOw0KICAgIH5fVGVtcG9yYXJ5X293bmVyKCkgew0KICAgICAgICBkZWxldGUgX1B0cjsN
CiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1V4cHRyT3JOdWxscHRyLCBjbGFzcyBfRHg+
DQpzdHJ1Y3QgX1RlbXBvcmFyeV9vd25lcl9kZWwgew0KICAgIF9VeHB0ck9yTnVsbHB0ciBfUHRy
Ow0KICAgIF9EeCYgX0R0Ow0KICAgIGJvb2wgX0NhbGxfZGVsZXRlciA9IHRydWU7DQoNCiAgICBl
eHBsaWNpdCBfVGVtcG9yYXJ5X293bmVyX2RlbChjb25zdCBfVXhwdHJPck51bGxwdHIgX1B0cl8s
IF9EeCYgX0R0Xykgbm9leGNlcHQgOiBfUHRyKF9QdHJfKSwgX0R0KF9EdF8pIHt9DQogICAgX1Rl
bXBvcmFyeV9vd25lcl9kZWwoY29uc3QgX1RlbXBvcmFyeV9vd25lcl9kZWwmKSA9IGRlbGV0ZTsN
CiAgICBfVGVtcG9yYXJ5X293bmVyX2RlbCYgb3BlcmF0b3I9KGNvbnN0IF9UZW1wb3Jhcnlfb3du
ZXJfZGVsJikgPSBkZWxldGU7DQogICAgfl9UZW1wb3Jhcnlfb3duZXJfZGVsKCkgew0KICAgICAg
ICBpZiAoX0NhbGxfZGVsZXRlcikgew0KICAgICAgICAgICAgX0R0KF9QdHIpOw0KICAgICAgICB9
DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmNsYXNzIHNoYXJlZF9wdHIgOiBw
dWJsaWMgX1B0cl9iYXNlPF9UeT4geyANCnByaXZhdGU6DQogICAgdXNpbmcgX015YmFzZSA9IF9Q
dHJfYmFzZTxfVHk+Ow0KDQpwdWJsaWM6DQogICAgdXNpbmcgdHlwZW5hbWUgX015YmFzZTo6ZWxl
bWVudF90eXBlOw0KDQoNCiAgICB1c2luZyB3ZWFrX3R5cGUgPSB3ZWFrX3B0cjxfVHk+Ow0KI2xp
bmUgOTE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XG1lbW9yeSINCg0KICAgIGNvbnN0ZXhwciBzaGFyZWRfcHRyKCkgbm9leGNlcHQgPSBkZWZhdWx0
Ow0KDQogICAgY29uc3RleHByIHNoYXJlZF9wdHIobnVsbHB0cl90KSBub2V4Y2VwdCB7fSANCg0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfVXgsDQogICAgICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9u
X3Y8Y29uZGl0aW9uYWxfdDxpc19hcnJheV92PF9UeT4sIF9DYW5fYXJyYXlfZGVsZXRlPF9VeD4s
IF9DYW5fc2NhbGFyX2RlbGV0ZTxfVXg+PiwNCiAgICAgICAgICAgICAgICAgICAgICAgIF9TUF9j
b252ZXJ0aWJsZTxfVXgsIF9UeT4+LA0KICAgICAgICAgICAgaW50PiA9IDA+DQogICAgZXhwbGlj
aXQgc2hhcmVkX3B0cihfVXgqIF9QeCkgeyANCg0KICAgICAgICBpZiBjb25zdGV4cHIgKGlzX2Fy
cmF5X3Y8X1R5Pikgew0KICAgICAgICAgICAgX1NldHBkKF9QeCwgZGVmYXVsdF9kZWxldGU8X1V4
W10+e30pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX1RlbXBvcmFyeV9vd25lcjxf
VXg+IF9Pd25lcihfUHgpOw0KICAgICAgICAgICAgX1NldF9wdHJfcmVwX2FuZF9lbmFibGVfc2hh
cmVkKF9Pd25lci5fUHRyLCBuZXcgX1JlZl9jb3VudDxfVXg+KF9Pd25lci5fUHRyKSk7DQogICAg
ICAgICAgICBfT3duZXIuX1B0ciA9IG51bGxwdHI7DQogICAgICAgIH0NCg0KDQojbGluZSA5Mzkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbWVtb3J5
Ig0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVXgsIGNsYXNzIF9EeCwNCiAgICAgICAg
ZW5hYmxlX2lmX3Q8Y29uanVuY3Rpb25fdjxpc19tb3ZlX2NvbnN0cnVjdGlibGU8X0R4PiwgX0Nh
bl9jYWxsX2Z1bmN0aW9uX29iamVjdDxfRHgmLCBfVXgqJj4sDQogICAgICAgICAgICAgICAgICAg
ICAgICBfU1BfY29udmVydGlibGU8X1V4LCBfVHk+PiwNCiAgICAgICAgICAgIGludD4gPSAwPg0K
ICAgIHNoYXJlZF9wdHIoX1V4KiBfUHgsIF9EeCBfRHQpIHsgDQogICAgICAgIF9TZXRwZChfUHgs
IDo6c3RkOjogbW92ZShfRHQpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V4LCBj
bGFzcyBfRHgsIGNsYXNzIF9BbGxvYywNCiAgICAgICAgZW5hYmxlX2lmX3Q8Y29uanVuY3Rpb25f
djxpc19tb3ZlX2NvbnN0cnVjdGlibGU8X0R4PiwgX0Nhbl9jYWxsX2Z1bmN0aW9uX29iamVjdDxf
RHgmLCBfVXgqJj4sDQogICAgICAgICAgICAgICAgICAgICAgICBfU1BfY29udmVydGlibGU8X1V4
LCBfVHk+PiwNCiAgICAgICAgICAgIGludD4gPSAwPg0KICAgIHNoYXJlZF9wdHIoX1V4KiBfUHgs
IF9EeCBfRHQsIF9BbGxvYyBfQXgpIHsgDQogICAgICAgIF9TZXRwZGEoX1B4LCA6OnN0ZDo6IG1v
dmUoX0R0KSwgX0F4KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0R4LA0KICAgICAg
ICBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PGlzX21vdmVfY29uc3RydWN0aWJsZTxfRHg+LCBf
Q2FuX2NhbGxfZnVuY3Rpb25fb2JqZWN0PF9EeCYsIG51bGxwdHJfdCY+PiwgaW50PiA9IDA+DQog
ICAgc2hhcmVkX3B0cihudWxscHRyX3QsIF9EeCBfRHQpIHsgDQogICAgICAgIF9TZXRwZChudWxs
cHRyLCA6OnN0ZDo6IG1vdmUoX0R0KSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9E
eCwgY2xhc3MgX0FsbG9jLA0KICAgICAgICBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PGlzX21v
dmVfY29uc3RydWN0aWJsZTxfRHg+LCBfQ2FuX2NhbGxfZnVuY3Rpb25fb2JqZWN0PF9EeCYsIG51
bGxwdHJfdCY+PiwgaW50PiA9IDA+DQogICAgc2hhcmVkX3B0cihudWxscHRyX3QsIF9EeCBfRHQs
IF9BbGxvYyBfQXgpIHsgDQogICAgICAgIF9TZXRwZGEobnVsbHB0ciwgOjpzdGQ6OiBtb3ZlKF9E
dCksIF9BeCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTI+DQogICAgc2hhcmVk
X3B0cihjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfUmlnaHQsIGVsZW1lbnRfdHlwZSogX1B4KSBu
b2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICB0aGlzLT5fQWxpYXNfY29uc3RydWN0X2Zyb20o
X1JpZ2h0LCBfUHgpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkyPg0KICAgIHNo
YXJlZF9wdHIoc2hhcmVkX3B0cjxfVHkyPiYmIF9SaWdodCwgZWxlbWVudF90eXBlKiBfUHgpIG5v
ZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIHRoaXMtPl9BbGlhc19tb3ZlX2NvbnN0cnVjdF9m
cm9tKDo6c3RkOjogbW92ZShfUmlnaHQpLCBfUHgpOw0KICAgIH0NCg0KICAgIHNoYXJlZF9wdHIo
Y29uc3Qgc2hhcmVkX3B0ciYgX090aGVyKSBub2V4Y2VwdCB7IA0KICAgICAgICB0aGlzLT5fQ29w
eV9jb25zdHJ1Y3RfZnJvbShfT3RoZXIpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
VHkyLCBlbmFibGVfaWZfdDxfU1BfcG9pbnRlcl9jb21wYXRpYmxlPF9UeTIsIF9UeT46OnZhbHVl
LCBpbnQ+ID0gMD4NCiAgICBzaGFyZWRfcHRyKGNvbnN0IHNoYXJlZF9wdHI8X1R5Mj4mIF9PdGhl
cikgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgdGhpcy0+X0NvcHlfY29uc3RydWN0X2Zy
b20oX090aGVyKTsNCiAgICB9DQoNCiAgICBzaGFyZWRfcHRyKHNoYXJlZF9wdHImJiBfUmlnaHQp
IG5vZXhjZXB0IHsgDQogICAgICAgIHRoaXMtPl9Nb3ZlX2NvbnN0cnVjdF9mcm9tKDo6c3RkOjog
bW92ZShfUmlnaHQpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MiwgZW5hYmxl
X2lmX3Q8X1NQX3BvaW50ZXJfY29tcGF0aWJsZTxfVHkyLCBfVHk+Ojp2YWx1ZSwgaW50PiA9IDA+
DQogICAgc2hhcmVkX3B0cihzaGFyZWRfcHRyPF9UeTI+JiYgX1JpZ2h0KSBub2V4Y2VwdCB7IA0K
ICAgICAgICB0aGlzLT5fTW92ZV9jb25zdHJ1Y3RfZnJvbSg6OnN0ZDo6IG1vdmUoX1JpZ2h0KSk7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTIsIGVuYWJsZV9pZl90PF9TUF9wb2lu
dGVyX2NvbXBhdGlibGU8X1R5MiwgX1R5Pjo6dmFsdWUsIGludD4gPSAwPg0KICAgIGV4cGxpY2l0
IHNoYXJlZF9wdHIoY29uc3Qgd2Vha19wdHI8X1R5Mj4mIF9PdGhlcikgeyANCiAgICAgICAgaWYg
KCF0aGlzLT5fQ29uc3RydWN0X2Zyb21fd2VhayhfT3RoZXIpKSB7DQogICAgICAgICAgICBfVGhy
b3dfYmFkX3dlYWtfcHRyKCk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMTAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxtZW1vcnkiDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V4LCBjbGFzcyBfRHgsDQogICAgICAg
IGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8X1NQX3BvaW50ZXJfY29tcGF0aWJsZTxfVXgsIF9U
eT4sDQogICAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTx0eXBlbmFtZSB1bmlx
dWVfcHRyPF9VeCwgX0R4Pjo6cG9pbnRlciwgZWxlbWVudF90eXBlKj4+LA0KICAgICAgICAgICAg
aW50PiA9IDA+DQogICAgc2hhcmVkX3B0cih1bmlxdWVfcHRyPF9VeCwgX0R4PiYmIF9PdGhlcikg
ew0KICAgICAgICB1c2luZyBfRmFuY3lfdCAgID0gdHlwZW5hbWUgdW5pcXVlX3B0cjxfVXgsIF9E
eD46OnBvaW50ZXI7DQogICAgICAgIHVzaW5nIF9SYXdfdCAgICAgPSB0eXBlbmFtZSB1bmlxdWVf
cHRyPF9VeCwgX0R4Pjo6ZWxlbWVudF90eXBlKjsNCiAgICAgICAgdXNpbmcgX0RlbGV0ZXJfdCA9
IGNvbmRpdGlvbmFsX3Q8aXNfcmVmZXJlbmNlX3Y8X0R4PiwgZGVjbHR5cGUoOjpzdGQ6OiByZWYo
X090aGVyLmdldF9kZWxldGVyKCkpKSwgX0R4PjsNCg0KICAgICAgICBjb25zdCBfRmFuY3lfdCBf
RmFuY3kgPSBfT3RoZXIuZ2V0KCk7DQoNCiAgICAgICAgaWYgKF9GYW5jeSkgew0KICAgICAgICAg
ICAgY29uc3QgX1Jhd190IF9SYXcgPSBfRmFuY3k7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9S
eCAgICA9IG5ldyBfUmVmX2NvdW50X3Jlc291cmNlPF9GYW5jeV90LCBfRGVsZXRlcl90PihfRmFu
Y3ksIF9PdGhlci5nZXRfZGVsZXRlcigpKTsNCiAgICAgICAgICAgIF9TZXRfcHRyX3JlcF9hbmRf
ZW5hYmxlX3NoYXJlZChfUmF3LCBfUngpOw0KICAgICAgICAgICAgX090aGVyLnJlbGVhc2UoKTsN
CiAgICAgICAgfQ0KICAgIH0NCg0KICAgIH5zaGFyZWRfcHRyKCkgbm9leGNlcHQgeyANCiAgICAg
ICAgdGhpcy0+X0RlY3JlZigpOw0KICAgIH0NCg0KICAgIHNoYXJlZF9wdHImIG9wZXJhdG9yPShj
b25zdCBzaGFyZWRfcHRyJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgc2hhcmVkX3B0cihf
UmlnaHQpLnN3YXAoKnRoaXMpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAg
dGVtcGxhdGUgPGNsYXNzIF9UeTI+DQogICAgc2hhcmVkX3B0ciYgb3BlcmF0b3I9KGNvbnN0IHNo
YXJlZF9wdHI8X1R5Mj4mIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICBzaGFyZWRfcHRyKF9S
aWdodCkuc3dhcCgqdGhpcyk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBz
aGFyZWRfcHRyJiBvcGVyYXRvcj0oc2hhcmVkX3B0ciYmIF9SaWdodCkgbm9leGNlcHQgeyANCiAg
ICAgICAgc2hhcmVkX3B0cig6OnN0ZDo6IG1vdmUoX1JpZ2h0KSkuc3dhcCgqdGhpcyk7DQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Mj4NCiAg
ICBzaGFyZWRfcHRyJiBvcGVyYXRvcj0oc2hhcmVkX3B0cjxfVHkyPiYmIF9SaWdodCkgbm9leGNl
cHQgeyANCiAgICAgICAgc2hhcmVkX3B0cig6OnN0ZDo6IG1vdmUoX1JpZ2h0KSkuc3dhcCgqdGhp
cyk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEw
NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbWVt
b3J5Ig0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9VeCwgY2xhc3MgX0R4Pg0KICAgIHNoYXJlZF9w
dHImIG9wZXJhdG9yPSh1bmlxdWVfcHRyPF9VeCwgX0R4PiYmIF9SaWdodCkgeyANCiAgICAgICAg
c2hhcmVkX3B0cig6OnN0ZDo6IG1vdmUoX1JpZ2h0KSkuc3dhcCgqdGhpcyk7DQogICAgICAgIHJl
dHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAoc2hhcmVkX3B0ciYgX090aGVyKSBu
b2V4Y2VwdCB7DQogICAgICAgIHRoaXMtPl9Td2FwKF9PdGhlcik7DQogICAgfQ0KDQogICAgdm9p
ZCByZXNldCgpIG5vZXhjZXB0IHsgDQogICAgICAgIHNoYXJlZF9wdHIoKS5zd2FwKCp0aGlzKTsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V4Pg0KICAgIHZvaWQgcmVzZXQoX1V4KiBf
UHgpIHsgDQogICAgICAgIHNoYXJlZF9wdHIoX1B4KS5zd2FwKCp0aGlzKTsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1V4LCBjbGFzcyBfRHg+DQogICAgdm9pZCByZXNldChfVXgqIF9Q
eCwgX0R4IF9EdCkgeyANCiAgICAgICAgc2hhcmVkX3B0cihfUHgsIF9EdCkuc3dhcCgqdGhpcyk7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9VeCwgY2xhc3MgX0R4LCBjbGFzcyBfQWxs
b2M+DQogICAgdm9pZCByZXNldChfVXgqIF9QeCwgX0R4IF9EdCwgX0FsbG9jIF9BeCkgeyANCiAg
ICAgICAgc2hhcmVkX3B0cihfUHgsIF9EdCwgX0F4KS5zd2FwKCp0aGlzKTsNCiAgICB9DQoNCiAg
ICB1c2luZyBfTXliYXNlOjpnZXQ7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MiA9IF9UeSwg
ZW5hYmxlX2lmX3Q8IWRpc2p1bmN0aW9uX3Y8aXNfYXJyYXk8X1R5Mj4sIGlzX3ZvaWQ8X1R5Mj4+
LCBpbnQ+ID0gMD4NCiAgICBbW25vZGlzY2FyZF1dIF9UeTImIG9wZXJhdG9yKigpIGNvbnN0IG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuICpnZXQoKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX1R5MiA9IF9UeSwgZW5hYmxlX2lmX3Q8IWlzX2FycmF5X3Y8X1R5Mj4sIGludD4gPSAw
Pg0KICAgIFtbbm9kaXNjYXJkXV0gX1R5Miogb3BlcmF0b3ItPigpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIGdldCgpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHky
ID0gX1R5LCBjbGFzcyBfRWxlbSA9IGVsZW1lbnRfdHlwZSwgZW5hYmxlX2lmX3Q8aXNfYXJyYXlf
djxfVHkyPiwgaW50PiA9IDA+DQogICAgW1tub2Rpc2NhcmRdXSBfRWxlbSYgb3BlcmF0b3JbXShw
dHJkaWZmX3QgX0lkeCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgcmV0dXJuIGdldCgpW19J
ZHhdOw0KICAgIH0NCg0KDQogICAgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMTY6ICIgInN0
ZDo6c2hhcmVkX3B0cjo6dW5pcXVlKCkgaXMgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNh
biBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfU0hBUkVEX1BUUl9VTklRVUVfREVQUkVDQVRJT05fV0FS
TklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNr
bm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSBbW25vZGlz
Y2FyZF1dIGJvb2wgdW5pcXVlKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAg
cmV0dXJuIHRoaXMtPnVzZV9jb3VudCgpID09IDE7DQogICAgfQ0KI2xpbmUgMTEyMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoNCiAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gZ2V0KCkgIT0gbnVsbHB0cjsNCiAgICB9DQoNCnByaXZhdGU6DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxMTQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXG1lbW9yeSINCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVXhwdHJPck51bGxw
dHIsIGNsYXNzIF9EeD4NCiAgICB2b2lkIF9TZXRwZChjb25zdCBfVXhwdHJPck51bGxwdHIgX1B4
LCBfRHggX0R0KSB7IA0KICAgICAgICBfVGVtcG9yYXJ5X293bmVyX2RlbDxfVXhwdHJPck51bGxw
dHIsIF9EeD4gX093bmVyKF9QeCwgX0R0KTsNCiAgICAgICAgX1NldF9wdHJfcmVwX2FuZF9lbmFi
bGVfc2hhcmVkKA0KICAgICAgICAgICAgX093bmVyLl9QdHIsIG5ldyBfUmVmX2NvdW50X3Jlc291
cmNlPF9VeHB0ck9yTnVsbHB0ciwgX0R4PihfT3duZXIuX1B0ciwgOjpzdGQ6OiBtb3ZlKF9EdCkp
KTsNCiAgICAgICAgX093bmVyLl9DYWxsX2RlbGV0ZXIgPSBmYWxzZTsNCiAgICB9DQoNCiAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX1V4cHRyT3JOdWxscHRyLCBjbGFzcyBfRHgsIGNsYXNzIF9BbGxvYz4N
CiAgICB2b2lkIF9TZXRwZGEoY29uc3QgX1V4cHRyT3JOdWxscHRyIF9QeCwgX0R4IF9EdCwgX0Fs
bG9jIF9BeCkgeyANCiAgICAgICAgdXNpbmcgX0FscmVmX2FsbG9jID0gX1JlYmluZF9hbGxvY190
PF9BbGxvYywgX1JlZl9jb3VudF9yZXNvdXJjZV9hbGxvYzxfVXhwdHJPck51bGxwdHIsIF9EeCwg
X0FsbG9jPj47DQoNCiAgICAgICAgX1RlbXBvcmFyeV9vd25lcl9kZWw8X1V4cHRyT3JOdWxscHRy
LCBfRHg+IF9Pd25lcihfUHgsIF9EdCk7DQogICAgICAgIF9BbHJlZl9hbGxvYyBfQWxyZWYoX0F4
KTsNCiAgICAgICAgX0FsbG9jX2NvbnN0cnVjdF9wdHI8X0FscmVmX2FsbG9jPiBfQ29uc3RydWN0
b3IoX0FscmVmKTsNCiAgICAgICAgX0NvbnN0cnVjdG9yLl9BbGxvY2F0ZSgpOw0KICAgICAgICBf
Q29uc3RydWN0X2luX3BsYWNlKCpfQ29uc3RydWN0b3IuX1B0ciwgX093bmVyLl9QdHIsIDo6c3Rk
OjogbW92ZShfRHQpLCBfQXgpOw0KICAgICAgICBfU2V0X3B0cl9yZXBfYW5kX2VuYWJsZV9zaGFy
ZWQoX093bmVyLl9QdHIsIF9VbmZhbmN5KF9Db25zdHJ1Y3Rvci5fUHRyKSk7DQogICAgICAgIF9D
b25zdHJ1Y3Rvci5fUHRyICAgID0gbnVsbHB0cjsNCiAgICAgICAgX093bmVyLl9DYWxsX2RlbGV0
ZXIgPSBmYWxzZTsNCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE5OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQogICAgdGVtcGxh
dGUgPGNsYXNzIF9UeTAsIGNsYXNzLi4uIF9UeXBlcz4NCiAgICBmcmllbmQgc2hhcmVkX3B0cjxf
VHkwPiBtYWtlX3NoYXJlZChfVHlwZXMmJi4uLiBfQXJncyk7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1R5MCwgY2xhc3MgX0FsbG9jLCBjbGFzcy4uLiBfVHlwZXM+DQogICAgZnJpZW5kIHNoYXJl
ZF9wdHI8X1R5MD4gYWxsb2NhdGVfc2hhcmVkKGNvbnN0IF9BbGxvYyYgX0FsX2FyZywgX1R5cGVz
JiYuLi4gX0FyZ3MpOw0KI2xpbmUgMTIwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V4Pg0K
ICAgIHZvaWQgX1NldF9wdHJfcmVwX2FuZF9lbmFibGVfc2hhcmVkKF9VeCogY29uc3QgX1B4LCBf
UmVmX2NvdW50X2Jhc2UqIGNvbnN0IF9SeCkgbm9leGNlcHQgeyANCiAgICAgICAgdGhpcy0+X1B0
ciA9IF9QeDsNCiAgICAgICAgdGhpcy0+X1JlcCA9IF9SeDsNCg0KICAgICAgICBpZiBjb25zdGV4
cHIgKGNvbmp1bmN0aW9uX3Y8bmVnYXRpb248aXNfYXJyYXk8X1R5Pj4sIG5lZ2F0aW9uPGlzX3Zv
bGF0aWxlPF9VeD4+LCBfQ2FuX2VuYWJsZV9zaGFyZWQ8X1V4Pj4pIHsNCiAgICAgICAgICAgIGlm
IChfUHggJiYgX1B4LT5fV3B0ci5leHBpcmVkKCkpIHsNCiAgICAgICAgICAgICAgICBfUHgtPl9X
cHRyID0gc2hhcmVkX3B0cjxyZW1vdmVfY3ZfdDxfVXg+PigqdGhpcywgY29uc3RfY2FzdDxyZW1v
dmVfY3ZfdDxfVXg+Kj4oX1B4KSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KDQoNCg0K
I2xpbmUgMTIyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxtZW1vcnkiDQogICAgfQ0KDQogICAgdm9pZCBfU2V0X3B0cl9yZXBfYW5kX2VuYWJsZV9z
aGFyZWQobnVsbHB0cl90LCBfUmVmX2NvdW50X2Jhc2UqIGNvbnN0IF9SeCkgbm9leGNlcHQgeyAN
CiAgICAgICAgdGhpcy0+X1B0ciA9IG51bGxwdHI7DQogICAgICAgIHRoaXMtPl9SZXAgPSBfUng7
DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc2hhcmVkX3B0cih3ZWFrX3B0
cjxfVHk+KSAtPiBzaGFyZWRfcHRyPF9UeT47DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNz
IF9EeD4NCnNoYXJlZF9wdHIodW5pcXVlX3B0cjxfVHksIF9EeD4pIC0+IHNoYXJlZF9wdHI8X1R5
PjsNCiNsaW5lIDEyMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcbWVtb3J5Ig0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCltb
bm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj09KGNvbnN0IHNoYXJlZF9wdHI8X1R5MT4mIF9MZWZ0
LCBjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4g
X0xlZnQuZ2V0KCkgPT0gX1JpZ2h0LmdldCgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwg
Y2xhc3MgX1R5Mj4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvciE9KGNvbnN0IHNoYXJlZF9w
dHI8X1R5MT4mIF9MZWZ0LCBjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfUmlnaHQpIG5vZXhjZXB0
IHsNCiAgICByZXR1cm4gX0xlZnQuZ2V0KCkgIT0gX1JpZ2h0LmdldCgpOw0KfQ0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcjwo
Y29uc3Qgc2hhcmVkX3B0cjxfVHkxPiYgX0xlZnQsIGNvbnN0IHNoYXJlZF9wdHI8X1R5Mj4mIF9S
aWdodCkgbm9leGNlcHQgew0KICAgIHJldHVybiBfTGVmdC5nZXQoKSA8IF9SaWdodC5nZXQoKTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpbW25vZGlzY2FyZF1dIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBzaGFyZWRfcHRyPF9UeTE+JiBfTGVmdCwgY29uc3Qgc2hhcmVk
X3B0cjxfVHkyPiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9MZWZ0LmdldCgpID49
IF9SaWdodC5nZXQoKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpb
W25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I+KGNvbnN0IHNoYXJlZF9wdHI8X1R5MT4mIF9MZWZ0
LCBjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4g
X0xlZnQuZ2V0KCkgPiBfUmlnaHQuZ2V0KCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBj
bGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPD0oY29uc3Qgc2hhcmVkX3B0
cjxfVHkxPiYgX0xlZnQsIGNvbnN0IHNoYXJlZF9wdHI8X1R5Mj4mIF9SaWdodCkgbm9leGNlcHQg
ew0KICAgIHJldHVybiBfTGVmdC5nZXQoKSA8PSBfUmlnaHQuZ2V0KCk7DQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I9PShjb25zdCBzaGFyZWRf
cHRyPF9UeT4mIF9MZWZ0LCBudWxscHRyX3QpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX0xlZnQu
Z2V0KCkgPT0gbnVsbHB0cjsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJk
XV0gYm9vbCBvcGVyYXRvcj09KG51bGxwdHJfdCwgY29uc3Qgc2hhcmVkX3B0cjxfVHk+JiBfUmln
aHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gbnVsbHB0ciA9PSBfUmlnaHQuZ2V0KCk7DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBzaGFyZWRfcHRyPF9UeT4mIF9MZWZ0LCBudWxscHRyX3QpIG5vZXhjZXB0IHsNCiAgICByZXR1
cm4gX0xlZnQuZ2V0KCkgIT0gbnVsbHB0cjsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltb
bm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvciE9KG51bGxwdHJfdCwgY29uc3Qgc2hhcmVkX3B0cjxf
VHk+JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gbnVsbHB0ciAhPSBfUmlnaHQuZ2V0
KCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IHNoYXJlZF9wdHI8X1R5PiYgX0xlZnQsIG51bGxwdHJfdCkgbm9leGNlcHQgew0K
ICAgIHJldHVybiBfTGVmdC5nZXQoKSA8IHN0YXRpY19jYXN0PHR5cGVuYW1lIHNoYXJlZF9wdHI8
X1R5Pjo6ZWxlbWVudF90eXBlKj4obnVsbHB0cik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+
DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8KG51bGxwdHJfdCwgY29uc3Qgc2hhcmVkX3B0
cjxfVHk+JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgc2hhcmVkX3B0cjxfVHk+OjplbGVtZW50X3R5cGUqPihudWxscHRyKSA8IF9SaWdodC5nZXQo
KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRv
cj49KGNvbnN0IHNoYXJlZF9wdHI8X1R5PiYgX0xlZnQsIG51bGxwdHJfdCkgbm9leGNlcHQgew0K
ICAgIHJldHVybiBfTGVmdC5nZXQoKSA+PSBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzaGFyZWRfcHRy
PF9UeT46OmVsZW1lbnRfdHlwZSo+KG51bGxwdHIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
Pg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPj0obnVsbHB0cl90LCBjb25zdCBzaGFyZWRf
cHRyPF9UeT4mIF9SaWdodCkgbm9leGNlcHQgew0KICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBl
bmFtZSBzaGFyZWRfcHRyPF9UeT46OmVsZW1lbnRfdHlwZSo+KG51bGxwdHIpID49IF9SaWdodC5n
ZXQoKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVy
YXRvcj4oY29uc3Qgc2hhcmVkX3B0cjxfVHk+JiBfTGVmdCwgbnVsbHB0cl90KSBub2V4Y2VwdCB7
DQogICAgcmV0dXJuIF9MZWZ0LmdldCgpID4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc2hhcmVkX3B0
cjxfVHk+OjplbGVtZW50X3R5cGUqPihudWxscHRyKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9U
eT4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj4obnVsbHB0cl90LCBjb25zdCBzaGFyZWRf
cHRyPF9UeT4mIF9SaWdodCkgbm9leGNlcHQgew0KICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBl
bmFtZSBzaGFyZWRfcHRyPF9UeT46OmVsZW1lbnRfdHlwZSo+KG51bGxwdHIpID4gX1JpZ2h0Lmdl
dCgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJh
dG9yPD0oY29uc3Qgc2hhcmVkX3B0cjxfVHk+JiBfTGVmdCwgbnVsbHB0cl90KSBub2V4Y2VwdCB7
DQogICAgcmV0dXJuIF9MZWZ0LmdldCgpIDw9IHN0YXRpY19jYXN0PHR5cGVuYW1lIHNoYXJlZF9w
dHI8X1R5Pjo6ZWxlbWVudF90eXBlKj4obnVsbHB0cik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHk+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8PShudWxscHRyX3QsIGNvbnN0IHNoYXJl
ZF9wdHI8X1R5PiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5
cGVuYW1lIHNoYXJlZF9wdHI8X1R5Pjo6ZWxlbWVudF90eXBlKj4obnVsbHB0cikgPD0gX1JpZ2h0
LmdldCgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNz
IF9UeT4NCmJhc2ljX29zdHJlYW08X0VsZW0sIF9UcmFpdHM+JiBvcGVyYXRvcjw8KGJhc2ljX29z
dHJlYW08X0VsZW0sIF9UcmFpdHM+JiBfT3V0LCBjb25zdCBzaGFyZWRfcHRyPF9UeT4mIF9QeCkg
ew0KICAgIA0KICAgIHJldHVybiBfT3V0IDw8IF9QeC5nZXQoKTsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeT4NCnZvaWQgc3dhcChzaGFyZWRfcHRyPF9UeT4mIF9MZWZ0LCBzaGFyZWRfcHRyPF9U
eT4mIF9SaWdodCkgbm9leGNlcHQgew0KICAgIF9MZWZ0LnN3YXAoX1JpZ2h0KTsNCn0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQpbW25vZGlzY2FyZF1dIHNoYXJlZF9wdHI8
X1R5MT4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfT3RoZXIp
IG5vZXhjZXB0IHsNCiAgICANCiAgICBjb25zdCBhdXRvIF9QdHIgPSBzdGF0aWNfY2FzdDx0eXBl
bmFtZSBzaGFyZWRfcHRyPF9UeTE+OjplbGVtZW50X3R5cGUqPihfT3RoZXIuZ2V0KCkpOw0KICAg
IHJldHVybiBzaGFyZWRfcHRyPF9UeTE+KF9PdGhlciwgX1B0cik7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBzaGFyZWRfcHRyPF9UeTE+IHN0
YXRpY19wb2ludGVyX2Nhc3Qoc2hhcmVkX3B0cjxfVHkyPiYmIF9PdGhlcikgbm9leGNlcHQgew0K
ICAgIA0KICAgIGNvbnN0IGF1dG8gX1B0ciA9IHN0YXRpY19jYXN0PHR5cGVuYW1lIHNoYXJlZF9w
dHI8X1R5MT46OmVsZW1lbnRfdHlwZSo+KF9PdGhlci5nZXQoKSk7DQogICAgcmV0dXJuIHNoYXJl
ZF9wdHI8X1R5MT4oOjpzdGQ6OiBtb3ZlKF9PdGhlciksIF9QdHIpOw0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCltbbm9kaXNjYXJkXV0gc2hhcmVkX3B0cjxfVHkxPiBj
b25zdF9wb2ludGVyX2Nhc3QoY29uc3Qgc2hhcmVkX3B0cjxfVHkyPiYgX090aGVyKSBub2V4Y2Vw
dCB7DQogICAgDQogICAgY29uc3QgYXV0byBfUHRyID0gY29uc3RfY2FzdDx0eXBlbmFtZSBzaGFy
ZWRfcHRyPF9UeTE+OjplbGVtZW50X3R5cGUqPihfT3RoZXIuZ2V0KCkpOw0KICAgIHJldHVybiBz
aGFyZWRfcHRyPF9UeTE+KF9PdGhlciwgX1B0cik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkx
LCBjbGFzcyBfVHkyPg0KW1tub2Rpc2NhcmRdXSBzaGFyZWRfcHRyPF9UeTE+IGNvbnN0X3BvaW50
ZXJfY2FzdChzaGFyZWRfcHRyPF9UeTI+JiYgX090aGVyKSBub2V4Y2VwdCB7DQogICAgDQogICAg
Y29uc3QgYXV0byBfUHRyID0gY29uc3RfY2FzdDx0eXBlbmFtZSBzaGFyZWRfcHRyPF9UeTE+Ojpl
bGVtZW50X3R5cGUqPihfT3RoZXIuZ2V0KCkpOw0KICAgIHJldHVybiBzaGFyZWRfcHRyPF9UeTE+
KDo6c3RkOjogbW92ZShfT3RoZXIpLCBfUHRyKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEs
IGNsYXNzIF9UeTI+DQpbW25vZGlzY2FyZF1dIHNoYXJlZF9wdHI8X1R5MT4gcmVpbnRlcnByZXRf
cG9pbnRlcl9jYXN0KGNvbnN0IHNoYXJlZF9wdHI8X1R5Mj4mIF9PdGhlcikgbm9leGNlcHQgew0K
ICAgIA0KICAgIGNvbnN0IGF1dG8gX1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dHlwZW5hbWUgc2hh
cmVkX3B0cjxfVHkxPjo6ZWxlbWVudF90eXBlKj4oX090aGVyLmdldCgpKTsNCiAgICByZXR1cm4g
c2hhcmVkX3B0cjxfVHkxPihfT3RoZXIsIF9QdHIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
MSwgY2xhc3MgX1R5Mj4NCltbbm9kaXNjYXJkXV0gc2hhcmVkX3B0cjxfVHkxPiByZWludGVycHJl
dF9wb2ludGVyX2Nhc3Qoc2hhcmVkX3B0cjxfVHkyPiYmIF9PdGhlcikgbm9leGNlcHQgew0KICAg
IA0KICAgIGNvbnN0IGF1dG8gX1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dHlwZW5hbWUgc2hhcmVk
X3B0cjxfVHkxPjo6ZWxlbWVudF90eXBlKj4oX090aGVyLmdldCgpKTsNCiAgICByZXR1cm4gc2hh
cmVkX3B0cjxfVHkxPig6OnN0ZDo6IG1vdmUoX090aGVyKSwgX1B0cik7DQp9DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeTEsIGNsYXNzIF9UeTI+DQpzaGFyZWRfcHRyPF9UeTE+IGR5bmFtaWNfcG9pbnRlcl9jYXN0
KGNvbnN0IHNoYXJlZF9wdHI8X1R5Mj4mKSBub2V4Y2VwdCA9IGRlbGV0ZTsgDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCnNoYXJlZF9wdHI8X1R5MT4gZHluYW1pY19wb2ludGVy
X2Nhc3Qoc2hhcmVkX3B0cjxfVHkyPiYmKSBub2V4Y2VwdCA9IGRlbGV0ZTsgDQojbGluZSAxNDA5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1lbW9y
eSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0R4LCBjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIF9E
eCogZ2V0X2RlbGV0ZXIoY29uc3Qgc2hhcmVkX3B0cjxfVHk+JiBfU3gpIG5vZXhjZXB0IHsNCiAg
ICANCiAgICBpZiAoX1N4Ll9SZXApIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9EeCo+
KF9TeC5fUmVwLT5fR2V0X2RlbGV0ZXIodHlwZWlkKF9EeCkpKTsNCiAgICB9DQoNCiAgICByZXR1
cm4gbnVsbHB0cjsNCn0NCg0KDQoNCiNsaW5lIDE0MjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbWVtb3J5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHk+DQpjbGFzcyBfUmVmX2NvdW50X29iajIgOiBwdWJsaWMgX1JlZl9jb3VudF9iYXNlIHsgDQpw
dWJsaWM6DQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9UeXBlcz4NCiAgICBleHBsaWNpdCBfUmVm
X2NvdW50X29iajIoX1R5cGVzJiYuLi4gX0FyZ3MpIDogX1JlZl9jb3VudF9iYXNlKCkgew0KICAg
ICAgICBfQ29uc3RydWN0X2luX3BsYWNlKF9TdG9yYWdlLl9WYWx1ZSwgOjpzdGQ6OiBmb3J3YXJk
PF9UeXBlcz4oX0FyZ3MpLi4uKTsNCiAgICB9DQoNCiAgICB+X1JlZl9jb3VudF9vYmoyKCkgew0K
ICAgICAgICANCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgIH0NCg0KICAgIHVu
aW9uIHsNCiAgICAgICAgX1dyYXA8X1R5PiBfU3RvcmFnZTsNCiAgICB9Ow0KDQpwcml2YXRlOg0K
ICAgIHZpcnR1YWwgdm9pZCBfRGVzdHJveSgpIG5vZXhjZXB0IG92ZXJyaWRlIHsgDQogICAgICAg
IF9EZXN0cm95X2luX3BsYWNlKF9TdG9yYWdlLl9WYWx1ZSk7DQogICAgfQ0KDQogICAgdmlydHVh
bCB2b2lkIF9EZWxldGVfdGhpcygpIG5vZXhjZXB0IG92ZXJyaWRlIHsgDQogICAgICAgIGRlbGV0
ZSB0aGlzOw0KICAgIH0NCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTc1MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwNCiAgICBib29sID0gaXNfZW1wdHlfdjxfVHk+ICYmICFp
c19maW5hbF92PF9UeT4+DQpjbGFzcyBfRWJjb19iYXNlIDogcHJpdmF0ZSBfVHkgeyANCnByaXZh
dGU6DQogICAgdXNpbmcgX015YmFzZSA9IF9UeTsgDQoNCnByb3RlY3RlZDoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX090aGVyLCBlbmFibGVfaWZfdDwhaXNfc2FtZV92PF9SZW1vdmVfY3ZyZWZfdDxf
T3RoZXI+LCBfRWJjb19iYXNlPiwgaW50PiA9IDA+DQogICAgY29uc3RleHByIGV4cGxpY2l0IF9F
YmNvX2Jhc2UoX090aGVyJiYgX1ZhbCkgbm9leGNlcHQoaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl
X3Y8X1R5LCBfT3RoZXI+KQ0KICAgICAgICA6IF9UeSg6OnN0ZDo6IGZvcndhcmQ8X090aGVyPihf
VmFsKSkge30NCg0KICAgIGNvbnN0ZXhwciBfVHkmIF9HZXRfdmFsKCkgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgY29uc3RleHByIGNvbnN0IF9UeSYgX0dl
dF92YWwoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQp9
Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KY2xhc3MgX0ViY29fYmFzZTxfVHksIGZhbHNlPiB7
IA0KcHJpdmF0ZToNCiAgICBfVHkgX015dmFsOw0KDQpwcm90ZWN0ZWQ6DQogICAgdGVtcGxhdGUg
PGNsYXNzIF9PdGhlciwgZW5hYmxlX2lmX3Q8IWlzX3NhbWVfdjxfUmVtb3ZlX2N2cmVmX3Q8X090
aGVyPiwgX0ViY29fYmFzZT4sIGludD4gPSAwPg0KICAgIGNvbnN0ZXhwciBleHBsaWNpdCBfRWJj
b19iYXNlKF9PdGhlciYmIF9WYWwpIG5vZXhjZXB0KGlzX25vdGhyb3dfY29uc3RydWN0aWJsZV92
PF9UeSwgX090aGVyPikNCiAgICAgICAgOiBfTXl2YWwoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcj4o
X1ZhbCkpIHt9DQoNCiAgICBjb25zdGV4cHIgX1R5JiBfR2V0X3ZhbCgpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIF9NeXZhbDsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgY29uc3QgX1R5JiBf
R2V0X3ZhbCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXZhbDsNCiAgICB9
DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9BbGxvYz4NCmNsYXNzIF9SZWZf
Y291bnRfb2JqX2FsbG9jMyA6IHB1YmxpYyBfRWJjb19iYXNlPF9SZWJpbmRfYWxsb2NfdDxfQWxs
b2MsIF9UeT4+LCBwdWJsaWMgX1JlZl9jb3VudF9iYXNlIHsNCiAgICANCnByaXZhdGU6DQogICAg
c3RhdGljX2Fzc2VydChpc19zYW1lX3Y8X1R5LCByZW1vdmVfY3ZfdDxfVHk+PiwgImFsbG9jYXRl
X3NoYXJlZCBzaG91bGQgcmVtb3ZlX2N2X3QiKTsNCg0KICAgIHVzaW5nIF9SZWJvdW5kID0gX1Jl
YmluZF9hbGxvY190PF9BbGxvYywgX1R5PjsNCg0KcHVibGljOg0KICAgIHRlbXBsYXRlIDxjbGFz
cy4uLiBfVHlwZXM+DQogICAgZXhwbGljaXQgX1JlZl9jb3VudF9vYmpfYWxsb2MzKGNvbnN0IF9B
bGxvYyYgX0FsX2FyZywgX1R5cGVzJiYuLi4gX0FyZ3MpDQogICAgICAgIDogX0ViY29fYmFzZTxf
UmVib3VuZD4oX0FsX2FyZyksIF9SZWZfY291bnRfYmFzZSgpIHsNCiAgICAgICAgYWxsb2NhdG9y
X3RyYWl0czxfUmVib3VuZD46OmNvbnN0cnVjdCgNCiAgICAgICAgICAgIHRoaXMtPl9HZXRfdmFs
KCksIDo6c3RkOjogYWRkcmVzc29mKF9TdG9yYWdlLl9WYWx1ZSksIDo6c3RkOjogZm9yd2FyZDxf
VHlwZXM+KF9BcmdzKS4uLik7DQogICAgfQ0KDQogICAgdW5pb24gew0KICAgICAgICBfV3JhcDxf
VHk+IF9TdG9yYWdlOw0KICAgIH07DQoNCnByaXZhdGU6DQogICAgfl9SZWZfY291bnRfb2JqX2Fs
bG9jMygpIHsNCiAgICAgICAgDQoNCiAgICAgICAgDQogICAgfQ0KDQogICAgdmlydHVhbCB2b2lk
IF9EZXN0cm95KCkgbm9leGNlcHQgb3ZlcnJpZGUgeyANCiAgICAgICAgYWxsb2NhdG9yX3RyYWl0
czxfUmVib3VuZD46OmRlc3Ryb3kodGhpcy0+X0dldF92YWwoKSwgOjpzdGQ6OiBhZGRyZXNzb2Yo
X1N0b3JhZ2UuX1ZhbHVlKSk7DQogICAgfQ0KDQogICAgdmlydHVhbCB2b2lkIF9EZWxldGVfdGhp
cygpIG5vZXhjZXB0IG92ZXJyaWRlIHsgDQogICAgICAgIF9SZWJpbmRfYWxsb2NfdDxfQWxsb2Ms
IF9SZWZfY291bnRfb2JqX2FsbG9jMz4gX0FsKHRoaXMtPl9HZXRfdmFsKCkpOw0KICAgICAgICB0
aGlzLT5+X1JlZl9jb3VudF9vYmpfYWxsb2MzKCk7DQogICAgICAgIF9EZWFsbG9jYXRlX3BsYWlu
KF9BbCwgdGhpcyk7DQogICAgfQ0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDY1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1lbW9yeSINCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcy4uLiBfVHlwZXM+DQpbW25vZGlzY2FyZF1dDQoNCg0KI2xp
bmUgMjA3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxtZW1vcnkiDQogICAgc2hhcmVkX3B0cjxfVHk+DQojbGluZSAyMDc0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1lbW9yeSINCiAgICBtYWtlX3No
YXJlZChfVHlwZXMmJi4uLiBfQXJncykgeyANCiAgICBjb25zdCBhdXRvIF9SeCA9IG5ldyBfUmVm
X2NvdW50X29iajI8X1R5Pig6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJncykuLi4pOw0KICAg
IHNoYXJlZF9wdHI8X1R5PiBfUmV0Ow0KICAgIF9SZXQuX1NldF9wdHJfcmVwX2FuZF9lbmFibGVf
c2hhcmVkKDo6c3RkOjogYWRkcmVzc29mKF9SeC0+X1N0b3JhZ2UuX1ZhbHVlKSwgX1J4KTsNCiAg
ICByZXR1cm4gX1JldDsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxNDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbWVtb3J5Ig0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHksIGNsYXNzIF9BbGxvYywgY2xhc3MuLi4gX1R5cGVzPg0KW1tub2Rpc2NhcmRdXQ0KDQoN
CiNsaW5lIDIxNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcbWVtb3J5Ig0KICAgIHNoYXJlZF9wdHI8X1R5Pg0KI2xpbmUgMjE1MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQogICAgYWxs
b2NhdGVfc2hhcmVkKGNvbnN0IF9BbGxvYyYgX0FsLCBfVHlwZXMmJi4uLiBfQXJncykgeyANCiAg
ICANCiAgICANCiAgICB1c2luZyBfUmVmb2EgICA9IF9SZWZfY291bnRfb2JqX2FsbG9jMzxyZW1v
dmVfY3ZfdDxfVHk+LCBfQWxsb2M+Ow0KICAgIHVzaW5nIF9BbGJsb2NrID0gX1JlYmluZF9hbGxv
Y190PF9BbGxvYywgX1JlZm9hPjsNCiAgICBfQWxibG9jayBfUmVib3VuZChfQWwpOw0KICAgIF9B
bGxvY19jb25zdHJ1Y3RfcHRyPF9BbGJsb2NrPiBfQ29uc3RydWN0b3J7X1JlYm91bmR9Ow0KICAg
IF9Db25zdHJ1Y3Rvci5fQWxsb2NhdGUoKTsNCiAgICBfQ29uc3RydWN0X2luX3BsYWNlKCpfQ29u
c3RydWN0b3IuX1B0ciwgX0FsLCA6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJncykuLi4pOw0K
ICAgIHNoYXJlZF9wdHI8X1R5PiBfUmV0Ow0KICAgIGNvbnN0IGF1dG8gX1B0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8X1R5Kj4oOjpzdGQ6OiBhZGRyZXNzb2YoX0NvbnN0cnVjdG9yLl9QdHItPl9TdG9y
YWdlLl9WYWx1ZSkpOw0KICAgIF9SZXQuX1NldF9wdHJfcmVwX2FuZF9lbmFibGVfc2hhcmVkKF9Q
dHIsIF9VbmZhbmN5KF9Db25zdHJ1Y3Rvci5fUmVsZWFzZSgpKSk7DQogICAgcmV0dXJuIF9SZXQ7
DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIyNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcbWVtb3J5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpjbGFzcyB3
ZWFrX3B0ciA6IHB1YmxpYyBfUHRyX2Jhc2U8X1R5PiB7IA0KcHVibGljOg0KICAgIGNvbnN0ZXhw
ciB3ZWFrX3B0cigpIG5vZXhjZXB0IHt9IA0KDQogICAgd2Vha19wdHIoY29uc3Qgd2Vha19wdHIm
IF9PdGhlcikgbm9leGNlcHQgeyANCiAgICAgICAgdGhpcy0+X1dlYWtseV9jb25zdHJ1Y3RfZnJv
bShfT3RoZXIpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkyLCBlbmFibGVfaWZf
dDxfU1BfcG9pbnRlcl9jb21wYXRpYmxlPF9UeTIsIF9UeT46OnZhbHVlLCBpbnQ+ID0gMD4NCiAg
ICB3ZWFrX3B0cihjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfT3RoZXIpIG5vZXhjZXB0IHsgDQog
ICAgICAgIHRoaXMtPl9XZWFrbHlfY29uc3RydWN0X2Zyb20oX090aGVyKTsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MiwgZW5hYmxlX2lmX3Q8X1NQX3BvaW50ZXJfY29tcGF0aWJs
ZTxfVHkyLCBfVHk+Ojp2YWx1ZSwgaW50PiA9IDA+DQogICAgd2Vha19wdHIoY29uc3Qgd2Vha19w
dHI8X1R5Mj4mIF9PdGhlcikgbm9leGNlcHQgeyANCiAgICAgICAgdGhpcy0+X1dlYWtseV9jb25z
dHJ1Y3RfZnJvbShfT3RoZXIubG9jaygpKTsNCiAgICB9DQoNCiAgICB3ZWFrX3B0cih3ZWFrX3B0
ciYmIF9PdGhlcikgbm9leGNlcHQgeyANCiAgICAgICAgdGhpcy0+X01vdmVfY29uc3RydWN0X2Zy
b20oOjpzdGQ6OiBtb3ZlKF9PdGhlcikpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
VHkyLCBlbmFibGVfaWZfdDxfU1BfcG9pbnRlcl9jb21wYXRpYmxlPF9UeTIsIF9UeT46OnZhbHVl
LCBpbnQ+ID0gMD4NCiAgICB3ZWFrX3B0cih3ZWFrX3B0cjxfVHkyPiYmIF9PdGhlcikgbm9leGNl
cHQgeyANCiAgICAgICAgdGhpcy0+X1dlYWtseV9jb25zdHJ1Y3RfZnJvbShfT3RoZXIubG9jaygp
KTsNCiAgICAgICAgX090aGVyLnJlc2V0KCk7DQogICAgfQ0KDQogICAgfndlYWtfcHRyKCkgbm9l
eGNlcHQgew0KICAgICAgICB0aGlzLT5fRGVjd3JlZigpOw0KICAgIH0NCg0KICAgIHdlYWtfcHRy
JiBvcGVyYXRvcj0oY29uc3Qgd2Vha19wdHImIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICB3
ZWFrX3B0cihfUmlnaHQpLnN3YXAoKnRoaXMpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAg
fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTI+DQogICAgd2Vha19wdHImIG9wZXJhdG9yPShj
b25zdCB3ZWFrX3B0cjxfVHkyPiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIHdlYWtfcHRy
KF9SaWdodCkuc3dhcCgqdGhpcyk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAg
ICB3ZWFrX3B0ciYgb3BlcmF0b3I9KHdlYWtfcHRyJiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAg
ICAgIHdlYWtfcHRyKDo6c3RkOjogbW92ZShfUmlnaHQpKS5zd2FwKCp0aGlzKTsNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkyPg0KICAgIHdl
YWtfcHRyJiBvcGVyYXRvcj0od2Vha19wdHI8X1R5Mj4mJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAg
ICAgICAgd2Vha19wdHIoOjpzdGQ6OiBtb3ZlKF9SaWdodCkpLnN3YXAoKnRoaXMpOw0KICAgICAg
ICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTI+DQogICAg
d2Vha19wdHImIG9wZXJhdG9yPShjb25zdCBzaGFyZWRfcHRyPF9UeTI+JiBfUmlnaHQpIG5vZXhj
ZXB0IHsNCiAgICAgICAgd2Vha19wdHIoX1JpZ2h0KS5zd2FwKCp0aGlzKTsNCiAgICAgICAgcmV0
dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHZvaWQgcmVzZXQoKSBub2V4Y2VwdCB7IA0KICAgICAg
ICB3ZWFrX3B0cnt9LnN3YXAoKnRoaXMpOw0KICAgIH0NCg0KICAgIHZvaWQgc3dhcCh3ZWFrX3B0
ciYgX090aGVyKSBub2V4Y2VwdCB7DQogICAgICAgIHRoaXMtPl9Td2FwKF9PdGhlcik7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIGV4cGlyZWQoKSBjb25zdCBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiB0aGlzLT51c2VfY291bnQoKSA9PSAwOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gc2hhcmVkX3B0cjxfVHk+IGxvY2soKSBjb25zdCBub2V4Y2VwdCB7IA0KICAgICAg
ICBzaGFyZWRfcHRyPF9UeT4gX1JldDsNCiAgICAgICAgKHZvaWQpIF9SZXQuX0NvbnN0cnVjdF9m
cm9tX3dlYWsoKnRoaXMpOw0KICAgICAgICByZXR1cm4gX1JldDsNCiAgICB9DQp9Ow0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQp3ZWFrX3B0cihzaGFyZWRfcHRyPF9UeT4pIC0+IHdlYWtfcHRy
PF9UeT47DQojbGluZSAyMzM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXG1lbW9yeSINCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnZvaWQgc3dhcCh3
ZWFrX3B0cjxfVHk+JiBfTGVmdCwgd2Vha19wdHI8X1R5PiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQog
ICAgX0xlZnQuc3dhcChfUmlnaHQpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpjbGFz
cyBlbmFibGVfc2hhcmVkX2Zyb21fdGhpcyB7IA0KcHVibGljOg0KICAgIHVzaW5nIF9Fc2Z0X3R5
cGUgPSBlbmFibGVfc2hhcmVkX2Zyb21fdGhpczsNCg0KICAgIFtbbm9kaXNjYXJkXV0gc2hhcmVk
X3B0cjxfVHk+IHNoYXJlZF9mcm9tX3RoaXMoKSB7DQogICAgICAgIHJldHVybiBzaGFyZWRfcHRy
PF9UeT4oX1dwdHIpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2hhcmVkX3B0cjxjb25z
dCBfVHk+IHNoYXJlZF9mcm9tX3RoaXMoKSBjb25zdCB7DQogICAgICAgIHJldHVybiBzaGFyZWRf
cHRyPGNvbnN0IF9UeT4oX1dwdHIpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gd2Vha19w
dHI8X1R5PiB3ZWFrX2Zyb21fdGhpcygpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9XcHRy
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gd2Vha19wdHI8Y29uc3QgX1R5PiB3ZWFrX2Zy
b21fdGhpcygpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9XcHRyOw0KICAgIH0N
Cg0KcHJvdGVjdGVkOg0KICAgIGNvbnN0ZXhwciBlbmFibGVfc2hhcmVkX2Zyb21fdGhpcygpIG5v
ZXhjZXB0IDogX1dwdHIoKSB7fQ0KDQogICAgZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoY29uc3Qg
ZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMmKSBub2V4Y2VwdCA6IF9XcHRyKCkgew0KICAgICAgICAN
CiAgICB9DQoNCiAgICBlbmFibGVfc2hhcmVkX2Zyb21fdGhpcyYgb3BlcmF0b3I9KGNvbnN0IGVu
YWJsZV9zaGFyZWRfZnJvbV90aGlzJikgbm9leGNlcHQgeyANCiAgICAgICAgcmV0dXJuICp0aGlz
Ow0KICAgIH0NCg0KICAgIH5lbmFibGVfc2hhcmVkX2Zyb21fdGhpcygpID0gZGVmYXVsdDsNCg0K
cHJpdmF0ZToNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfWXR5Pg0KICAgIGZyaWVuZCBjbGFzcyBz
aGFyZWRfcHRyOw0KDQoNCg0KI2xpbmUgMjM4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoNCiAgICBtdXRhYmxlIHdlYWtfcHRyPF9U
eT4gX1dwdHI7DQp9Ow0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgZGVm
YXVsdF9kZWxldGUgeyANCiAgICBjb25zdGV4cHIgZGVmYXVsdF9kZWxldGUoKSBub2V4Y2VwdCA9
IGRlZmF1bHQ7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MiwgZW5hYmxlX2lmX3Q8aXNfY29u
dmVydGlibGVfdjxfVHkyKiwgX1R5Kj4sIGludD4gPSAwPg0KICAgIGRlZmF1bHRfZGVsZXRlKGNv
bnN0IGRlZmF1bHRfZGVsZXRlPF9UeTI+Jikgbm9leGNlcHQge30NCg0KICAgIHZvaWQgb3BlcmF0
b3IoKShfVHkqIF9QdHIpIGNvbnN0IG5vZXhjZXB0ICB7IA0KICAgICAgICBzdGF0aWNfYXNzZXJ0
KDAgPCBzaXplb2YoX1R5KSwgImNhbid0IGRlbGV0ZSBhbiBpbmNvbXBsZXRlIHR5cGUiKTsNCiAg
ICAgICAgZGVsZXRlIF9QdHI7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0
cnVjdCBkZWZhdWx0X2RlbGV0ZTxfVHlbXT4geyANCiAgICBjb25zdGV4cHIgZGVmYXVsdF9kZWxl
dGUoKSBub2V4Y2VwdCA9IGRlZmF1bHQ7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgZW5h
YmxlX2lmX3Q8aXNfY29udmVydGlibGVfdjxfVXR5ICgqKVtdLCBfVHkgKCopW10+LCBpbnQ+ID0g
MD4NCiAgICBkZWZhdWx0X2RlbGV0ZShjb25zdCBkZWZhdWx0X2RlbGV0ZTxfVXR5W10+Jikgbm9l
eGNlcHQge30NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVXR5LCBlbmFibGVfaWZfdDxpc19jb252
ZXJ0aWJsZV92PF9VdHkgKCopW10sIF9UeSAoKilbXT4sIGludD4gPSAwPg0KICAgIHZvaWQgb3Bl
cmF0b3IoKShfVXR5KiBfUHRyKSBjb25zdCBub2V4Y2VwdCAgeyANCiAgICAgICAgc3RhdGljX2Fz
c2VydCgwIDwgc2l6ZW9mKF9VdHkpLCAiY2FuJ3QgZGVsZXRlIGFuIGluY29tcGxldGUgdHlwZSIp
Ow0KICAgICAgICBkZWxldGVbXSBfUHRyOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeSwgY2xhc3MgX0R4X25vcmVmLCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0dldF9kZWxldGVy
X3BvaW50ZXJfdHlwZSB7IA0KICAgIHVzaW5nIHR5cGUgPSBfVHkqOw0KfTsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeSwgY2xhc3MgX0R4X25vcmVmPg0Kc3RydWN0IF9HZXRfZGVsZXRlcl9wb2ludGVy
X3R5cGU8X1R5LCBfRHhfbm9yZWYsIHZvaWRfdDx0eXBlbmFtZSBfRHhfbm9yZWY6OnBvaW50ZXI+
PiB7IA0KICAgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBfRHhfbm9yZWY6OnBvaW50ZXI7DQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0R4Mj4NCnVzaW5nIF9VbmlxdWVfcHRyX2VuYWJsZV9kZWZhdWx0
X3QgPQ0KICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8bmVnYXRpb248aXNfcG9pbnRlcjxf
RHgyPj4sIGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxfRHgyPj4sIGludD47DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeSwgY2xhc3MgX0R4ID4NCmNsYXNzIHVuaXF1ZV9wdHIgeyANCnB1YmxpYzoN
CiAgICB1c2luZyBwb2ludGVyICAgICAgPSB0eXBlbmFtZSBfR2V0X2RlbGV0ZXJfcG9pbnRlcl90
eXBlPF9UeSwgcmVtb3ZlX3JlZmVyZW5jZV90PF9EeD4+Ojp0eXBlOw0KICAgIHVzaW5nIGVsZW1l
bnRfdHlwZSA9IF9UeTsNCiAgICB1c2luZyBkZWxldGVyX3R5cGUgPSBfRHg7DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX0R4MiA9IF9EeCwgX1VuaXF1ZV9wdHJfZW5hYmxlX2RlZmF1bHRfdDxfRHgy
PiA9IDA+DQogICAgY29uc3RleHByIHVuaXF1ZV9wdHIoKSBub2V4Y2VwdCA6IF9NeXBhaXIoX1pl
cm9fdGhlbl92YXJpYWRpY19hcmdzX3R7fSkge30NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRHgy
ID0gX0R4LCBfVW5pcXVlX3B0cl9lbmFibGVfZGVmYXVsdF90PF9EeDI+ID0gMD4NCiAgICBjb25z
dGV4cHIgdW5pcXVlX3B0cihudWxscHRyX3QpIG5vZXhjZXB0IDogX015cGFpcihfWmVyb190aGVu
X3ZhcmlhZGljX2FyZ3NfdHt9KSB7fQ0KDQogICAgdW5pcXVlX3B0ciYgb3BlcmF0b3I9KG51bGxw
dHJfdCkgbm9leGNlcHQgew0KICAgICAgICByZXNldCgpOw0KICAgICAgICByZXR1cm4gKnRoaXM7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9EeDIgPSBfRHgsIF9VbmlxdWVfcHRyX2Vu
YWJsZV9kZWZhdWx0X3Q8X0R4Mj4gPSAwPg0KICAgIGV4cGxpY2l0IHVuaXF1ZV9wdHIocG9pbnRl
ciBfUHRyKSBub2V4Y2VwdCA6IF9NeXBhaXIoX1plcm9fdGhlbl92YXJpYWRpY19hcmdzX3R7fSwg
X1B0cikge30NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRHgyID0gX0R4LCBlbmFibGVfaWZfdDxp
c19jb25zdHJ1Y3RpYmxlX3Y8X0R4MiwgY29uc3QgX0R4MiY+LCBpbnQ+ID0gMD4NCiAgICB1bmlx
dWVfcHRyKHBvaW50ZXIgX1B0ciwgY29uc3QgX0R4JiBfRHQpIG5vZXhjZXB0IDogX015cGFpcihf
T25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9EdCwgX1B0cikge30NCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfRHgyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gX0R4LA0KICAgICAgICBlbmFibGVfaWZf
dDxjb25qdW5jdGlvbl92PG5lZ2F0aW9uPGlzX3JlZmVyZW5jZTxfRHgyPj4sIGlzX2NvbnN0cnVj
dGlibGU8X0R4MiwgX0R4Mj4+LCBpbnQ+ID0gMD4NCiAgICB1bmlxdWVfcHRyKHBvaW50ZXIgX1B0
ciwgX0R4JiYgX0R0KSBub2V4Y2VwdCA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3Nf
dHt9LCA6OnN0ZDo6IG1vdmUoX0R0KSwgX1B0cikge30NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
RHgyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IF9EeCwNCiAgICAgICAgZW5hYmxlX2lm
X3Q8Y29uanVuY3Rpb25fdjxpc19yZWZlcmVuY2U8X0R4Mj4sIGlzX2NvbnN0cnVjdGlibGU8X0R4
MiwgcmVtb3ZlX3JlZmVyZW5jZV90PF9EeDI+Pj4sIGludD4gPSAwPg0KICAgIHVuaXF1ZV9wdHIo
cG9pbnRlciwgcmVtb3ZlX3JlZmVyZW5jZV90PF9EeD4mJikgPSBkZWxldGU7DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX0R4MiA9IF9EeCwgZW5hYmxlX2lmX3Q8aXNfbW92ZV9jb25zdHJ1Y3RpYmxl
X3Y8X0R4Mj4sIGludD4gPSAwPg0KICAgIHVuaXF1ZV9wdHIodW5pcXVlX3B0ciYmIF9SaWdodCkg
bm9leGNlcHQNCiAgICAgICAgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3R7fSwg
OjpzdGQ6OiBmb3J3YXJkPF9EeD4oX1JpZ2h0LmdldF9kZWxldGVyKCkpLCBfUmlnaHQucmVsZWFz
ZSgpKSB7fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTIsIGNsYXNzIF9EeDIsDQogICAgICAg
IGVuYWJsZV9pZl90PA0KICAgICAgICAgICAgY29uanVuY3Rpb25fdjxuZWdhdGlvbjxpc19hcnJh
eTxfVHkyPj4sIGlzX2NvbnZlcnRpYmxlPHR5cGVuYW1lIHVuaXF1ZV9wdHI8X1R5MiwgX0R4Mj46
OnBvaW50ZXIsIHBvaW50ZXI+LA0KICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsX3Q8aXNfcmVm
ZXJlbmNlX3Y8X0R4PiwgaXNfc2FtZTxfRHgyLCBfRHg+LCBpc19jb252ZXJ0aWJsZTxfRHgyLCBf
RHg+Pj4sDQogICAgICAgICAgICBpbnQ+ID0gMD4NCiAgICB1bmlxdWVfcHRyKHVuaXF1ZV9wdHI8
X1R5MiwgX0R4Mj4mJiBfUmlnaHQpIG5vZXhjZXB0DQogICAgICAgIDogX015cGFpcihfT25lX3Ro
ZW5fdmFyaWFkaWNfYXJnc190e30sIDo6c3RkOjogZm9yd2FyZDxfRHgyPihfUmlnaHQuZ2V0X2Rl
bGV0ZXIoKSksIF9SaWdodC5yZWxlYXNlKCkpIHt9DQoNCg0KDQoNCg0KI2xpbmUgMjQ4OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MiwgY2xhc3MgX0R4MiwNCiAgICAgICAgZW5hYmxlX2lm
X3Q8Y29uanVuY3Rpb25fdjxuZWdhdGlvbjxpc19hcnJheTxfVHkyPj4sIGlzX2Fzc2lnbmFibGU8
X0R4JiwgX0R4Mj4sDQogICAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTx0eXBl
bmFtZSB1bmlxdWVfcHRyPF9UeTIsIF9EeDI+Ojpwb2ludGVyLCBwb2ludGVyPj4sDQogICAgICAg
ICAgICBpbnQ+ID0gMD4NCiAgICB1bmlxdWVfcHRyJiBvcGVyYXRvcj0odW5pcXVlX3B0cjxfVHky
LCBfRHgyPiYmIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICByZXNldChfUmlnaHQucmVsZWFz
ZSgpKTsNCiAgICAgICAgX015cGFpci5fR2V0X2ZpcnN0KCkgPSA6OnN0ZDo6IGZvcndhcmQ8X0R4
Mj4oX1JpZ2h0Ll9NeXBhaXIuX0dldF9maXJzdCgpKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRHgyID0gX0R4LCBlbmFibGVfaWZfdDxpc19t
b3ZlX2Fzc2lnbmFibGVfdjxfRHgyPiwgaW50PiA9IDA+DQogICAgdW5pcXVlX3B0ciYgb3BlcmF0
b3I9KHVuaXF1ZV9wdHImJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgaWYgKHRoaXMgIT0g
OjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0KSkgew0KICAgICAgICAgICAgcmVzZXQoX1JpZ2h0LnJl
bGVhc2UoKSk7DQogICAgICAgICAgICBfTXlwYWlyLl9HZXRfZmlyc3QoKSA9IDo6c3RkOjogZm9y
d2FyZDxfRHg+KF9SaWdodC5fTXlwYWlyLl9HZXRfZmlyc3QoKSk7DQogICAgICAgIH0NCiAgICAg
ICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHZvaWQgc3dhcCh1bmlxdWVfcHRyJiBfUmln
aHQpIG5vZXhjZXB0IHsNCiAgICAgICAgX1N3YXBfYWRsKF9NeXBhaXIuX015dmFsMiwgX1JpZ2h0
Ll9NeXBhaXIuX015dmFsMik7DQogICAgICAgIF9Td2FwX2FkbChfTXlwYWlyLl9HZXRfZmlyc3Qo
KSwgX1JpZ2h0Ll9NeXBhaXIuX0dldF9maXJzdCgpKTsNCiAgICB9DQoNCiAgICB+dW5pcXVlX3B0
cigpIG5vZXhjZXB0IHsNCiAgICAgICAgaWYgKF9NeXBhaXIuX015dmFsMikgew0KICAgICAgICAg
ICAgX015cGFpci5fR2V0X2ZpcnN0KCkoX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgfQ0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gX0R4JiBnZXRfZGVsZXRlcigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIF9NeXBhaXIuX0dldF9maXJzdCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gY29uc3QgX0R4JiBnZXRfZGVsZXRlcigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIF9NeXBhaXIuX0dldF9maXJzdCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0g
YWRkX2x2YWx1ZV9yZWZlcmVuY2VfdDxfVHk+IG9wZXJhdG9yKigpIGNvbnN0IG5vZXhjZXB0ICB7
DQogICAgICAgIHJldHVybiAqX015cGFpci5fTXl2YWwyOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gX015cGFpci5fTXl2YWwyOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcG9pbnRlciBn
ZXQoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDI7DQog
ICAgfQ0KDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9NeXBhaXIuX015dmFsMik7DQogICAgfQ0K
DQogICAgcG9pbnRlciByZWxlYXNlKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gOjpzdGQ6
OiBleGNoYW5nZShfTXlwYWlyLl9NeXZhbDIsIHBvaW50ZXIoKSk7DQogICAgfQ0KDQogICAgdm9p
ZCByZXNldChwb2ludGVyIF9QdHIgPSBwb2ludGVyKCkpIG5vZXhjZXB0IHsNCiAgICAgICAgcG9p
bnRlciBfT2xkID0gOjpzdGQ6OiBleGNoYW5nZShfTXlwYWlyLl9NeXZhbDIsIF9QdHIpOw0KICAg
ICAgICBpZiAoX09sZCkgew0KICAgICAgICAgICAgX015cGFpci5fR2V0X2ZpcnN0KCkoX09sZCk7
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB1bmlxdWVfcHRyKGNvbnN0IHVuaXF1ZV9wdHImKSA9
IGRlbGV0ZTsNCiAgICB1bmlxdWVfcHRyJiBvcGVyYXRvcj0oY29uc3QgdW5pcXVlX3B0ciYpID0g
ZGVsZXRlOw0KDQpwcml2YXRlOg0KICAgIHRlbXBsYXRlIDxjbGFzcywgY2xhc3M+DQogICAgZnJp
ZW5kIGNsYXNzIHVuaXF1ZV9wdHI7DQoNCiAgICBfQ29tcHJlc3NlZF9wYWlyPF9EeCwgcG9pbnRl
cj4gX015cGFpcjsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX0R4Pg0KY2xh
c3MgdW5pcXVlX3B0cjxfVHlbXSwgX0R4PiB7IA0KcHVibGljOg0KICAgIHVzaW5nIHBvaW50ZXIg
ICAgICA9IHR5cGVuYW1lIF9HZXRfZGVsZXRlcl9wb2ludGVyX3R5cGU8X1R5LCByZW1vdmVfcmVm
ZXJlbmNlX3Q8X0R4Pj46OnR5cGU7DQogICAgdXNpbmcgZWxlbWVudF90eXBlID0gX1R5Ow0KICAg
IHVzaW5nIGRlbGV0ZXJfdHlwZSA9IF9EeDsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRHgyID0g
X0R4LCBfVW5pcXVlX3B0cl9lbmFibGVfZGVmYXVsdF90PF9EeDI+ID0gMD4NCiAgICBjb25zdGV4
cHIgdW5pcXVlX3B0cigpIG5vZXhjZXB0IDogX015cGFpcihfWmVyb190aGVuX3ZhcmlhZGljX2Fy
Z3NfdHt9KSB7fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9VdHksIGNsYXNzIF9Jc19udWxscHRy
ID0gaXNfc2FtZTxfVXR5LCBudWxscHRyX3Q+Pg0KICAgIHVzaW5nIF9FbmFibGVfY3Rvcl9yZXNl
dCA9DQogICAgICAgIGVuYWJsZV9pZl90PGlzX3NhbWVfdjxfVXR5LCBwb2ludGVyPiANCiAgICAg
ICAgICAgICAgICAgICAgfHwgX0lzX251bGxwdHI6OnZhbHVlIA0KICAgICAgICAgICAgICAgICAg
ICB8fCAoaXNfc2FtZV92PHBvaW50ZXIsIGVsZW1lbnRfdHlwZSo+IA0KICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgaXNfcG9pbnRlcl92PF9VdHk+IA0KICAgICAgICAgICAgICAgICAgICAgICAg
JiYgaXNfY29udmVydGlibGVfdjxyZW1vdmVfcG9pbnRlcl90PF9VdHk+ICgqKVtdLCBlbGVtZW50
X3R5cGUgKCopW10+KT47IA0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9VdHksIGNsYXNzIF9EeDIg
PSBfRHgsIF9VbmlxdWVfcHRyX2VuYWJsZV9kZWZhdWx0X3Q8X0R4Mj4gPSAwLCBjbGFzcyA9IF9F
bmFibGVfY3Rvcl9yZXNldDxfVXR5Pj4NCiAgICBleHBsaWNpdCB1bmlxdWVfcHRyKF9VdHkgX1B0
cikgbm9leGNlcHQgOiBfTXlwYWlyKF9aZXJvX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9QdHIp
IHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgY2xhc3MgX0R4MiA9IF9EeCwgZW5hYmxl
X2lmX3Q8aXNfY29uc3RydWN0aWJsZV92PF9EeDIsIGNvbnN0IF9EeDImPiwgaW50PiA9IDAsDQog
ICAgICAgIGNsYXNzID0gX0VuYWJsZV9jdG9yX3Jlc2V0PF9VdHk+Pg0KICAgIHVuaXF1ZV9wdHIo
X1V0eSBfUHRyLCBjb25zdCBfRHgmIF9EdCkgbm9leGNlcHQgOiBfTXlwYWlyKF9PbmVfdGhlbl92
YXJpYWRpY19hcmdzX3R7fSwgX0R0LCBfUHRyKSB7fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9V
dHksIGNsYXNzIF9EeDIgPSBfRHgsDQogICAgICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8
bmVnYXRpb248aXNfcmVmZXJlbmNlPF9EeDI+PiwgaXNfY29uc3RydWN0aWJsZTxfRHgyLCBfRHgy
Pj4sIGludD4gPSAwLA0KICAgICAgICBjbGFzcyA9IF9FbmFibGVfY3Rvcl9yZXNldDxfVXR5Pj4N
CiAgICB1bmlxdWVfcHRyKF9VdHkgX1B0ciwgX0R4JiYgX0R0KSBub2V4Y2VwdCA6IF9NeXBhaXIo
X09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCA6OnN0ZDo6IG1vdmUoX0R0KSwgX1B0cikge30N
Cg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVXR5LCBjbGFzcyBfRHgyID0gX0R4LA0KICAgICAgICBl
bmFibGVfaWZfdDxjb25qdW5jdGlvbl92PGlzX3JlZmVyZW5jZTxfRHgyPiwgaXNfY29uc3RydWN0
aWJsZTxfRHgyLCByZW1vdmVfcmVmZXJlbmNlX3Q8X0R4Mj4+PiwgaW50PiA9IDA+DQogICAgdW5p
cXVlX3B0cihfVXR5LCByZW1vdmVfcmVmZXJlbmNlX3Q8X0R4PiYmKSA9IGRlbGV0ZTsNCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfRHgyID0gX0R4LCBlbmFibGVfaWZfdDxpc19tb3ZlX2NvbnN0cnVj
dGlibGVfdjxfRHgyPiwgaW50PiA9IDA+DQogICAgdW5pcXVlX3B0cih1bmlxdWVfcHRyJiYgX1Jp
Z2h0KSBub2V4Y2VwdA0KICAgICAgICA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3Nf
dHt9LCA6OnN0ZDo6IGZvcndhcmQ8X0R4PihfUmlnaHQuZ2V0X2RlbGV0ZXIoKSksIF9SaWdodC5y
ZWxlYXNlKCkpIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0R4MiA9IF9EeCwgZW5hYmxlX2lm
X3Q8aXNfbW92ZV9hc3NpZ25hYmxlX3Y8X0R4Mj4sIGludD4gPSAwPg0KICAgIHVuaXF1ZV9wdHIm
IG9wZXJhdG9yPSh1bmlxdWVfcHRyJiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIGlmICh0
aGlzICE9IDo6c3RkOjogYWRkcmVzc29mKF9SaWdodCkpIHsNCiAgICAgICAgICAgIHJlc2V0KF9S
aWdodC5yZWxlYXNlKCkpOw0KICAgICAgICAgICAgX015cGFpci5fR2V0X2ZpcnN0KCkgPSA6OnN0
ZDo6IG1vdmUoX1JpZ2h0Ll9NeXBhaXIuX0dldF9maXJzdCgpKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgY2xh
c3MgX0V4LCBjbGFzcyBfTW9yZSwgY2xhc3MgX1VQX3BvaW50ZXIgPSB0eXBlbmFtZSB1bmlxdWVf
cHRyPF9VdHksIF9FeD46OnBvaW50ZXIsDQogICAgICAgIGNsYXNzIF9VUF9lbGVtZW50X3R5cGUg
PSB0eXBlbmFtZSB1bmlxdWVfcHRyPF9VdHksIF9FeD46OmVsZW1lbnRfdHlwZT4NCiAgICB1c2lu
ZyBfRW5hYmxlX2NvbnZlcnNpb24gPSBlbmFibGVfaWZfdDwNCiAgICAgICAgY29uanVuY3Rpb25f
djxpc19hcnJheTxfVXR5PiwgaXNfc2FtZTxwb2ludGVyLCBlbGVtZW50X3R5cGUqPiwgaXNfc2Ft
ZTxfVVBfcG9pbnRlciwgX1VQX2VsZW1lbnRfdHlwZSo+LA0KICAgICAgICAgICAgaXNfY29udmVy
dGlibGU8X1VQX2VsZW1lbnRfdHlwZSAoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgX01vcmU+
PjsgDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgY2xhc3MgX0V4LA0KICAgICAgICBjbGFz
cyA9IF9FbmFibGVfY29udmVyc2lvbjxfVXR5LCBfRXgsDQogICAgICAgICAgICBjb25kaXRpb25h
bF90PGlzX3JlZmVyZW5jZV92PF9EeD4sIGlzX3NhbWU8X0V4LCBfRHg+LCBpc19jb252ZXJ0aWJs
ZTxfRXgsIF9EeD4+Pj4NCiAgICB1bmlxdWVfcHRyKHVuaXF1ZV9wdHI8X1V0eSwgX0V4PiYmIF9S
aWdodCkgbm9leGNlcHQNCiAgICAgICAgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdz
X3R7fSwgOjpzdGQ6OiBmb3J3YXJkPF9FeD4oX1JpZ2h0LmdldF9kZWxldGVyKCkpLCBfUmlnaHQu
cmVsZWFzZSgpKSB7fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9VdHksIGNsYXNzIF9FeCwgY2xh
c3MgPSBfRW5hYmxlX2NvbnZlcnNpb248X1V0eSwgX0V4LCBpc19hc3NpZ25hYmxlPF9EeCYsIF9F
eD4+Pg0KICAgIHVuaXF1ZV9wdHImIG9wZXJhdG9yPSh1bmlxdWVfcHRyPF9VdHksIF9FeD4mJiBf
UmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmVzZXQoX1JpZ2h0LnJlbGVhc2UoKSk7DQogICAg
ICAgIF9NeXBhaXIuX0dldF9maXJzdCgpID0gOjpzdGQ6OiBmb3J3YXJkPF9FeD4oX1JpZ2h0Ll9N
eXBhaXIuX0dldF9maXJzdCgpKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfRHgyID0gX0R4LCBfVW5pcXVlX3B0cl9lbmFibGVfZGVmYXVsdF90
PF9EeDI+ID0gMD4NCiAgICBjb25zdGV4cHIgdW5pcXVlX3B0cihudWxscHRyX3QpIG5vZXhjZXB0
IDogX015cGFpcihfWmVyb190aGVuX3ZhcmlhZGljX2FyZ3NfdHt9KSB7fQ0KDQogICAgdW5pcXVl
X3B0ciYgb3BlcmF0b3I9KG51bGxwdHJfdCkgbm9leGNlcHQgew0KICAgICAgICByZXNldCgpOw0K
ICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdm9pZCByZXNldChudWxscHRyX3Qg
PSBudWxscHRyKSBub2V4Y2VwdCB7DQogICAgICAgIHJlc2V0KHBvaW50ZXIoKSk7DQogICAgfQ0K
DQogICAgdm9pZCBzd2FwKHVuaXF1ZV9wdHImIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICBf
U3dhcF9hZGwoX015cGFpci5fTXl2YWwyLCBfUmlnaHQuX015cGFpci5fTXl2YWwyKTsNCiAgICAg
ICAgX1N3YXBfYWRsKF9NeXBhaXIuX0dldF9maXJzdCgpLCBfUmlnaHQuX015cGFpci5fR2V0X2Zp
cnN0KCkpOw0KICAgIH0NCg0KICAgIH51bmlxdWVfcHRyKCkgbm9leGNlcHQgew0KICAgICAgICBp
ZiAoX015cGFpci5fTXl2YWwyKSB7DQogICAgICAgICAgICBfTXlwYWlyLl9HZXRfZmlyc3QoKShf
TXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBf
RHgmIGdldF9kZWxldGVyKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015cGFpci5fR2V0
X2ZpcnN0KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdCBfRHgmIGdldF9kZWxl
dGVyKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015cGFpci5fR2V0X2ZpcnN0
KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBfVHkmIG9wZXJhdG9yW10oc2l6ZV90IF9J
ZHgpIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDJbX0lk
eF07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBwb2ludGVyIGdldCgpIGNvbnN0IG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMjsNCiAgICB9DQoNCiAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4oX015cGFpci5fTXl2YWwyKTsNCiAgICB9DQoNCiAgICBwb2ludGVyIHJl
bGVhc2UoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiA6OnN0ZDo6IGV4Y2hhbmdlKF9NeXBh
aXIuX015dmFsMiwgcG9pbnRlcigpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0
eSwgY2xhc3MgPSBfRW5hYmxlX2N0b3JfcmVzZXQ8X1V0eSwgZmFsc2VfdHlwZT4+DQogICAgdm9p
ZCByZXNldChfVXR5IF9QdHIpIG5vZXhjZXB0IHsNCiAgICAgICAgcG9pbnRlciBfT2xkID0gOjpz
dGQ6OiBleGNoYW5nZShfTXlwYWlyLl9NeXZhbDIsIF9QdHIpOw0KICAgICAgICBpZiAoX09sZCkg
ew0KICAgICAgICAgICAgX015cGFpci5fR2V0X2ZpcnN0KCkoX09sZCk7DQogICAgICAgIH0NCiAg
ICB9DQoNCiAgICB1bmlxdWVfcHRyKGNvbnN0IHVuaXF1ZV9wdHImKSA9IGRlbGV0ZTsNCiAgICB1
bmlxdWVfcHRyJiBvcGVyYXRvcj0oY29uc3QgdW5pcXVlX3B0ciYpID0gZGVsZXRlOw0KDQpwcml2
YXRlOg0KICAgIHRlbXBsYXRlIDxjbGFzcywgY2xhc3M+DQogICAgZnJpZW5kIGNsYXNzIHVuaXF1
ZV9wdHI7DQoNCiAgICBfQ29tcHJlc3NlZF9wYWlyPF9EeCwgcG9pbnRlcj4gX015cGFpcjsNCn07
DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcy4uLiBfVHlwZXMsIGVuYWJsZV9pZl90
PCFpc19hcnJheV92PF9UeT4sIGludD4gPSAwPg0KW1tub2Rpc2NhcmRdXSB1bmlxdWVfcHRyPF9U
eT4gbWFrZV91bmlxdWUoX1R5cGVzJiYuLi4gX0FyZ3MpIHsgDQogICAgcmV0dXJuIHVuaXF1ZV9w
dHI8X1R5PihuZXcgX1R5KDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLikpOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBlbmFibGVfaWZfdDxpc19hcnJheV92PF9UeT4gJiYgZXh0
ZW50X3Y8X1R5PiA9PSAwLCBpbnQ+ID0gMD4NCltbbm9kaXNjYXJkXV0gdW5pcXVlX3B0cjxfVHk+
IG1ha2VfdW5pcXVlKHNpemVfdCBfU2l6ZSkgeyANCiAgICB1c2luZyBfRWxlbSA9IHJlbW92ZV9l
eHRlbnRfdDxfVHk+Ow0KICAgIHJldHVybiB1bmlxdWVfcHRyPF9UeT4obmV3IF9FbGVtW19TaXpl
XSgpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MuLi4gX1R5cGVzLCBlbmFibGVf
aWZfdDxleHRlbnRfdjxfVHk+ICE9IDAsIGludD4gPSAwPg0Kdm9pZCBtYWtlX3VuaXF1ZShfVHlw
ZXMmJi4uLikgPSBkZWxldGU7DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9EeCwgZW5h
YmxlX2lmX3Q8X0lzX3N3YXBwYWJsZTxfRHg+Ojp2YWx1ZSwgaW50PiA9IDA+DQp2b2lkIHN3YXAo
dW5pcXVlX3B0cjxfVHksIF9EeD4mIF9MZWZ0LCB1bmlxdWVfcHRyPF9UeSwgX0R4PiYgX1JpZ2h0
KSBub2V4Y2VwdCB7DQogICAgX0xlZnQuc3dhcChfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5MSwgY2xhc3MgX0R4MSwgY2xhc3MgX1R5MiwgY2xhc3MgX0R4Mj4NCltbbm9kaXNjYXJk
XV0gYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuaXF1ZV9wdHI8X1R5MSwgX0R4MT4mIF9MZWZ0LCBj
b25zdCB1bmlxdWVfcHRyPF9UeTIsIF9EeDI+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX0xlZnQu
Z2V0KCkgPT0gX1JpZ2h0LmdldCgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3Mg
X0R4MSwgY2xhc3MgX1R5MiwgY2xhc3MgX0R4Mj4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IHVuaXF1ZV9wdHI8X1R5MSwgX0R4MT4mIF9MZWZ0LCBjb25zdCB1bmlxdWVfcHRy
PF9UeTIsIF9EeDI+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX0R4MSwgY2xhc3MgX1R5MiwgY2xhc3Mg
X0R4Mj4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcjwoY29uc3QgdW5pcXVlX3B0cjxfVHkx
LCBfRHgxPiYgX0xlZnQsIGNvbnN0IHVuaXF1ZV9wdHI8X1R5MiwgX0R4Mj4mIF9SaWdodCkgew0K
ICAgIHVzaW5nIF9QdHIxICAgPSB0eXBlbmFtZSB1bmlxdWVfcHRyPF9UeTEsIF9EeDE+Ojpwb2lu
dGVyOw0KICAgIHVzaW5nIF9QdHIyICAgPSB0eXBlbmFtZSB1bmlxdWVfcHRyPF9UeTIsIF9EeDI+
Ojpwb2ludGVyOw0KICAgIHVzaW5nIF9Db21tb24gPSBjb21tb25fdHlwZV90PF9QdHIxLCBfUHRy
Mj47DQogICAgcmV0dXJuIGxlc3M8X0NvbW1vbj57fShfTGVmdC5nZXQoKSwgX1JpZ2h0LmdldCgp
KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9EeDEsIGNsYXNzIF9UeTIsIGNs
YXNzIF9EeDI+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I+PShjb25zdCB1bmlxdWVfcHRy
PF9UeTEsIF9EeDE+JiBfTGVmdCwgY29uc3QgdW5pcXVlX3B0cjxfVHkyLCBfRHgyPiYgX1JpZ2h0
KSB7DQogICAgcmV0dXJuICEoX0xlZnQgPCBfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5MSwgY2xhc3MgX0R4MSwgY2xhc3MgX1R5MiwgY2xhc3MgX0R4Mj4NCltbbm9kaXNjYXJkXV0g
Ym9vbCBvcGVyYXRvcj4oY29uc3QgdW5pcXVlX3B0cjxfVHkxLCBfRHgxPiYgX0xlZnQsIGNvbnN0
IHVuaXF1ZV9wdHI8X1R5MiwgX0R4Mj4mIF9SaWdodCkgew0KICAgIHJldHVybiBfUmlnaHQgPCBf
TGVmdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9EeDEsIGNsYXNzIF9UeTIs
IGNsYXNzIF9EeDI+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8PShjb25zdCB1bmlxdWVf
cHRyPF9UeTEsIF9EeDE+JiBfTGVmdCwgY29uc3QgdW5pcXVlX3B0cjxfVHkyLCBfRHgyPiYgX1Jp
Z2h0KSB7DQogICAgcmV0dXJuICEoX1JpZ2h0IDwgX0xlZnQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5LCBjbGFzcyBfRHg+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1
bmlxdWVfcHRyPF9UeSwgX0R4PiYgX0xlZnQsIG51bGxwdHJfdCkgbm9leGNlcHQgew0KICAgIHJl
dHVybiAhX0xlZnQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9EeD4NCltbbm9k
aXNjYXJkXV0gYm9vbCBvcGVyYXRvcj09KG51bGxwdHJfdCwgY29uc3QgdW5pcXVlX3B0cjxfVHks
IF9EeD4mIF9SaWdodCkgbm9leGNlcHQgew0KICAgIHJldHVybiAhX1JpZ2h0Ow0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfRHg+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCB1bmlxdWVfcHRyPF9UeSwgX0R4PiYgX0xlZnQsIG51bGxwdHJfdCBfUmlnaHQpIG5v
ZXhjZXB0IHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5LCBjbGFzcyBfRHg+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3IhPShudWxs
cHRyX3QgX0xlZnQsIGNvbnN0IHVuaXF1ZV9wdHI8X1R5LCBfRHg+JiBfUmlnaHQpIG5vZXhjZXB0
IHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5LCBjbGFzcyBfRHg+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHVuaXF1
ZV9wdHI8X1R5LCBfRHg+JiBfTGVmdCwgbnVsbHB0cl90IF9SaWdodCkgew0KICAgIHVzaW5nIF9Q
dHIgPSB0eXBlbmFtZSB1bmlxdWVfcHRyPF9UeSwgX0R4Pjo6cG9pbnRlcjsNCiAgICByZXR1cm4g
bGVzczxfUHRyPnt9KF9MZWZ0LmdldCgpLCBfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5LCBjbGFzcyBfRHg+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8KG51bGxwdHJfdCBf
TGVmdCwgY29uc3QgdW5pcXVlX3B0cjxfVHksIF9EeD4mIF9SaWdodCkgew0KICAgIHVzaW5nIF9Q
dHIgPSB0eXBlbmFtZSB1bmlxdWVfcHRyPF9UeSwgX0R4Pjo6cG9pbnRlcjsNCiAgICByZXR1cm4g
bGVzczxfUHRyPnt9KF9MZWZ0LCBfUmlnaHQuZ2V0KCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5LCBjbGFzcyBfRHg+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I+PShjb25zdCB1bmlx
dWVfcHRyPF9UeSwgX0R4PiYgX0xlZnQsIG51bGxwdHJfdCBfUmlnaHQpIHsNCiAgICByZXR1cm4g
IShfTGVmdCA8IF9SaWdodCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9EeD4N
Cltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj49KG51bGxwdHJfdCBfTGVmdCwgY29uc3QgdW5p
cXVlX3B0cjxfVHksIF9EeD4mIF9SaWdodCkgew0KICAgIHJldHVybiAhKF9MZWZ0IDwgX1JpZ2h0
KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX0R4Pg0KW1tub2Rpc2NhcmRdXSBi
b29sIG9wZXJhdG9yPihjb25zdCB1bmlxdWVfcHRyPF9UeSwgX0R4PiYgX0xlZnQsIG51bGxwdHJf
dCBfUmlnaHQpIHsNCiAgICByZXR1cm4gX1JpZ2h0IDwgX0xlZnQ7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHksIGNsYXNzIF9EeD4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj4obnVsbHB0
cl90IF9MZWZ0LCBjb25zdCB1bmlxdWVfcHRyPF9UeSwgX0R4PiYgX1JpZ2h0KSB7DQogICAgcmV0
dXJuIF9SaWdodCA8IF9MZWZ0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfRHg+
DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8PShjb25zdCB1bmlxdWVfcHRyPF9UeSwgX0R4
PiYgX0xlZnQsIG51bGxwdHJfdCBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShfUmlnaHQgPCBfTGVm
dCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9EeD4NCltbbm9kaXNjYXJkXV0g
Ym9vbCBvcGVyYXRvcjw9KG51bGxwdHJfdCBfTGVmdCwgY29uc3QgdW5pcXVlX3B0cjxfVHksIF9E
eD4mIF9SaWdodCkgew0KICAgIHJldHVybiAhKF9SaWdodCA8IF9MZWZ0KTsNCn0NCg0KdGVtcGxh
dGUgPGNsYXNzIF9PdXRUeSwgY2xhc3MgX1B4VHksIGNsYXNzID0gdm9pZD4NCnN0cnVjdCBfQ2Fu
X3N0cmVhbV91bmlxdWVfcHRyIDogZmFsc2VfdHlwZSB7fTsNCnRlbXBsYXRlIDxjbGFzcyBfT3V0
VHksIGNsYXNzIF9QeFR5Pg0Kc3RydWN0IF9DYW5fc3RyZWFtX3VuaXF1ZV9wdHI8X091dFR5LCBf
UHhUeSwgdm9pZF90PGRlY2x0eXBlKDo6c3RkOjogZGVjbHZhbDxfT3V0VHk+KCkgPDwgOjpzdGQ6
OiBkZWNsdmFsPF9QeFR5PigpLmdldCgpKT4+DQogICAgOiB0cnVlX3R5cGUge307DQoNCnRlbXBs
YXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX1l0eSwgY2xhc3MgX0R4LA0K
ICAgIGVuYWJsZV9pZl90PF9DYW5fc3RyZWFtX3VuaXF1ZV9wdHI8YmFzaWNfb3N0cmVhbTxfRWxl
bSwgX1RyYWl0cz4mLCBjb25zdCB1bmlxdWVfcHRyPF9ZdHksIF9EeD4mPjo6dmFsdWUsIGludD4g
PSAwPg0KYmFzaWNfb3N0cmVhbTxfRWxlbSwgX1RyYWl0cz4mIG9wZXJhdG9yPDwoYmFzaWNfb3N0
cmVhbTxfRWxlbSwgX1RyYWl0cz4mIF9PdXQsIGNvbnN0IHVuaXF1ZV9wdHI8X1l0eSwgX0R4PiYg
X1B4KSB7DQogICAgDQogICAgX091dCA8PCBfUHguZ2V0KCk7DQogICAgcmV0dXJuIF9PdXQ7DQp9
DQoNCg0KZW51bSBjbGFzcyBwb2ludGVyX3NhZmV0eSB7IHJlbGF4ZWQsIHByZWZlcnJlZCwgc3Ry
aWN0IH07DQoNCmlubGluZSB2b2lkIGRlY2xhcmVfcmVhY2hhYmxlKHZvaWQqKSB7fQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5KiB1bmRlY2xhcmVfcmVhY2hhYmxlKF9UeSogX1B0cikgew0K
ICAgIHJldHVybiBfUHRyOw0KfQ0KDQppbmxpbmUgdm9pZCBkZWNsYXJlX25vX3BvaW50ZXJzKGNo
YXIqLCBzaXplX3QpIHt9DQoNCmlubGluZSB2b2lkIHVuZGVjbGFyZV9ub19wb2ludGVycyhjaGFy
Kiwgc2l6ZV90KSB7fQ0KDQppbmxpbmUgcG9pbnRlcl9zYWZldHkgZ2V0X3BvaW50ZXJfc2FmZXR5
KCkgbm9leGNlcHQgew0KICAgIHJldHVybiBwb2ludGVyX3NhZmV0eTo6cmVsYXhlZDsNCn0NCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBvd25lcl9sZXNzOyANCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBvd25lcl9sZXNzPHNoYXJlZF9wdHI8X1R5Pj4gew0K
ICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBl
ZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBz
ZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAi
WW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElP
Tl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0
byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5
cGVkZWYgc2hhcmVkX3B0cjxfVHk+IGZpcnN0X2FyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNh
dGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBh
bGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVu
dF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmlu
ZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAi
b3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdl
IHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBzaGFyZWRf
cHRyPF9UeT4gc2Vjb25kX2FyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2Fybmlu
ZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRf
dHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVk
ZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9D
WFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0Vf
QUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhh
dmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOw0K
DQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yKCkoY29uc3Qgc2hhcmVkX3B0cjxfVHk+
JiBfTGVmdCwgY29uc3Qgc2hhcmVkX3B0cjxfVHk+JiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIF9MZWZ0Lm93bmVyX2JlZm9yZShfUmlnaHQpOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcigpKGNvbnN0IHNoYXJlZF9wdHI8X1R5PiYgX0xl
ZnQsIGNvbnN0IHdlYWtfcHRyPF9UeT4mIF9SaWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gX0xlZnQub3duZXJfYmVmb3JlKF9SaWdodCk7DQogICAgfQ0KDQogICAgW1tub2Rp
c2NhcmRdXSBib29sIG9wZXJhdG9yKCkoY29uc3Qgd2Vha19wdHI8X1R5PiYgX0xlZnQsIGNvbnN0
IHNoYXJlZF9wdHI8X1R5PiYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biBfTGVmdC5vd25lcl9iZWZvcmUoX1JpZ2h0KTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5Pg0Kc3RydWN0IG93bmVyX2xlc3M8d2Vha19wdHI8X1R5Pj4gew0KICAgIFtbZGVwcmVj
YXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQg
YWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1l
bnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZp
bmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIg
Im9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRn
ZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgd2Vha19w
dHI8X1R5PiBmaXJzdF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcg
U1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5
cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVm
cyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hY
MTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FM
TF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZl
IHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgd2Vha19wdHI8X1R5PiBzZWNvbmRf
YXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkg
cmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1
bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0
ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQ
RURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVD
QVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz
IHdhcm5pbmcuIildXSB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5cGU7DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIGJvb2wgb3BlcmF0b3IoKShjb25zdCB3ZWFrX3B0cjxfVHk+JiBfTGVmdCwgY29uc3Qgd2Vh
a19wdHI8X1R5PiYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTGVm
dC5vd25lcl9iZWZvcmUoX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wg
b3BlcmF0b3IoKShjb25zdCB3ZWFrX3B0cjxfVHk+JiBfTGVmdCwgY29uc3Qgc2hhcmVkX3B0cjxf
VHk+JiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0Lm93bmVy
X2JlZm9yZShfUmlnaHQpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRv
cigpKGNvbnN0IHNoYXJlZF9wdHI8X1R5PiYgX0xlZnQsIGNvbnN0IHdlYWtfcHRyPF9UeT4mIF9S
aWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX0xlZnQub3duZXJfYmVmb3Jl
KF9SaWdodCk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBvd25lcl9sZXNzPHZv
aWQ+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfVXR5Pg0KICAgIFtbbm9kaXNj
YXJkXV0gYm9vbCBvcGVyYXRvcigpKGNvbnN0IHNoYXJlZF9wdHI8X1R5PiYgX0xlZnQsIGNvbnN0
IHNoYXJlZF9wdHI8X1V0eT4mIF9SaWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gX0xlZnQub3duZXJfYmVmb3JlKF9SaWdodCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNs
YXNzIF9UeSwgY2xhc3MgX1V0eT4NCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3IoKShj
b25zdCBzaGFyZWRfcHRyPF9UeT4mIF9MZWZ0LCBjb25zdCB3ZWFrX3B0cjxfVXR5PiYgX1JpZ2h0
KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTGVmdC5vd25lcl9iZWZvcmUoX1Jp
Z2h0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfVXR5Pg0KICAg
IFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcigpKGNvbnN0IHdlYWtfcHRyPF9UeT4mIF9MZWZ0
LCBjb25zdCBzaGFyZWRfcHRyPF9VdHk+JiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIF9MZWZ0Lm93bmVyX2JlZm9yZShfUmlnaHQpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlIDxjbGFzcyBfVHksIGNsYXNzIF9VdHk+DQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJh
dG9yKCkoY29uc3Qgd2Vha19wdHI8X1R5PiYgX0xlZnQsIGNvbnN0IHdlYWtfcHRyPF9VdHk+JiBf
UmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0Lm93bmVyX2JlZm9y
ZShfUmlnaHQpOw0KICAgIH0NCg0KICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gaW50Ow0KfTsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfRHg+DQpzdHJ1Y3QgaGFzaDx1bmlxdWVf
cHRyPF9UeSwgX0R4Pj4gOiBfQ29uZGl0aW9uYWxseV9lbmFibGVkX2hhc2g8dW5pcXVlX3B0cjxf
VHksIF9EeD4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVm
YXVsdF9jb25zdHJ1Y3RpYmxlX3Y8aGFzaDx0eXBlbmFtZSB1bmlxdWVfcHRyPF9UeSwgX0R4Pjo6
cG9pbnRlcj4+PiB7DQogICAgc3RhdGljIHNpemVfdCBfRG9faGFzaChjb25zdCB1bmlxdWVfcHRy
PF9UeSwgX0R4PiYgX0tleXZhbCkgbm9leGNlcHQoDQogICAgICAgIF9Jc19ub3Rocm93X2hhc2hh
YmxlPHR5cGVuYW1lIHVuaXF1ZV9wdHI8X1R5LCBfRHg+Ojpwb2ludGVyPjo6dmFsdWUpIHsNCiAg
ICAgICAgcmV0dXJuIGhhc2g8dHlwZW5hbWUgdW5pcXVlX3B0cjxfVHksIF9EeD46OnBvaW50ZXI+
e30oX0tleXZhbC5nZXQoKSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0
cnVjdCBoYXNoPHNoYXJlZF9wdHI8X1R5Pj4gew0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcg
U1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5
cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVm
cyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hY
MTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FM
TF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZl
IHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgc2hhcmVkX3B0cjxfVHk+IGFyZ3Vt
ZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3Vs
dF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRf
dHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZT
X0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9O
X1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJu
aW5nLiIpXV0gdHlwZWRlZiBzaXplX3QgcmVzdWx0X3R5cGU7DQoNCiAgICBbW25vZGlzY2FyZF1d
IHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IHNoYXJlZF9wdHI8X1R5PiYgX0tleXZhbCkgY29uc3Qg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gaGFzaDx0eXBlbmFtZSBzaGFyZWRfcHRyPF9UeT46
OmVsZW1lbnRfdHlwZSo+KCkoX0tleXZhbC5nZXQoKSk7DQogICAgfQ0KfTsNCg0KDQppbmxpbmUg
dm9pZCogYWxpZ24oc2l6ZV90IF9Cb3VuZCwgc2l6ZV90IF9TaXplLCB2b2lkKiYgX1B0ciwgc2l6
ZV90JiBfU3BhY2UpIG5vZXhjZXB0ICB7DQogICAgDQogICAgc2l6ZV90IF9PZmYgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihfUHRyKSAmIChfQm91bmQg
LSAxKSk7DQogICAgaWYgKF9PZmYgIT0gMCkgew0KICAgICAgICBfT2ZmID0gX0JvdW5kIC0gX09m
ZjsgDQogICAgfQ0KDQogICAgaWYgKF9TcGFjZSA8IF9PZmYgfHwgX1NwYWNlIC0gX09mZiA8IF9T
aXplKSB7DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KICAgIA0KICAgIF9QdHIg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oX1B0cikgKyBfT2ZmOw0KICAgIF9TcGFjZSAtPSBfT2ZmOw0K
ICAgIHJldHVybiBfUHRyOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjk1OSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoNCg0K
ZXh0ZXJuICJDIiB7DQogdm9pZCBfX2NkZWNsIF9Mb2NrX3NoYXJlZF9wdHJfc3Bpbl9sb2NrKCk7
DQogdm9pZCBfX2NkZWNsIF9VbmxvY2tfc2hhcmVkX3B0cl9zcGluX2xvY2soKTsNCn0NCg0KDQpz
dHJ1Y3QgX1NoYXJlZF9wdHJfc3Bpbl9sb2NrIHsgDQogICAgX1NoYXJlZF9wdHJfc3Bpbl9sb2Nr
KCkgeyANCiAgICAgICAgX0xvY2tfc2hhcmVkX3B0cl9zcGluX2xvY2soKTsNCiAgICB9DQoNCiAg
ICB+X1NoYXJlZF9wdHJfc3Bpbl9sb2NrKCkgbm9leGNlcHQgeyANCiAgICAgICAgX1VubG9ja19z
aGFyZWRfcHRyX3NwaW5fbG9jaygpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+
DQogW1tub2Rpc2NhcmRdXSBib29sIGF0b21pY19pc19sb2NrX2ZyZWUoY29uc3Qgc2hhcmVkX3B0
cjxfVHk+Kikgew0KICAgIA0KICAgIHJldHVybiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCiBbW25vZGlzY2FyZF1dIHNoYXJlZF9wdHI8X1R5PiBhdG9taWNfbG9hZF9leHBsaWNp
dCgNCiAgICBjb25zdCBzaGFyZWRfcHRyPF9UeT4qIF9QdHIsIG1lbW9yeV9vcmRlcikgew0KICAg
IA0KICAgIF9TaGFyZWRfcHRyX3NwaW5fbG9jayBfTG9jazsNCiAgICBzaGFyZWRfcHRyPF9UeT4g
X1Jlc3VsdCA9ICpfUHRyOw0KICAgIHJldHVybiBfUmVzdWx0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5Pg0KIFtbbm9kaXNjYXJkXV0gc2hhcmVkX3B0cjxfVHk+IGF0b21pY19sb2FkKA0KICAg
IGNvbnN0IHNoYXJlZF9wdHI8X1R5PiogX1B0cikgeyANCiAgICByZXR1cm4gOjpzdGQ6OiBhdG9t
aWNfbG9hZF9leHBsaWNpdChfUHRyLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQogdm9pZCBhdG9taWNfc3RvcmVfZXhwbGljaXQoDQogICAgc2hhcmVk
X3B0cjxfVHk+KiBfUHRyLCBzaGFyZWRfcHRyPF9UeT4gX090aGVyLCBtZW1vcnlfb3JkZXIpIHsN
CiAgICANCiAgICBfU2hhcmVkX3B0cl9zcGluX2xvY2sgX0xvY2s7DQogICAgX1B0ci0+c3dhcChf
T3RoZXIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KIHZvaWQgYXRvbWljX3N0b3JlKA0K
ICAgIHNoYXJlZF9wdHI8X1R5PiogX1B0ciwgc2hhcmVkX3B0cjxfVHk+IF9PdGhlcikgeyANCiAg
ICA6OnN0ZDo6IGF0b21pY19zdG9yZV9leHBsaWNpdChfUHRyLCA6OnN0ZDo6IG1vdmUoX090aGVy
KSwgbWVtb3J5X29yZGVyX3NlcV9jc3QpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KIHNo
YXJlZF9wdHI8X1R5PiBhdG9taWNfZXhjaGFuZ2VfZXhwbGljaXQoDQogICAgc2hhcmVkX3B0cjxf
VHk+KiBfUHRyLCBzaGFyZWRfcHRyPF9UeT4gX090aGVyLCBtZW1vcnlfb3JkZXIpIHsNCiAgICAN
CiAgICBfU2hhcmVkX3B0cl9zcGluX2xvY2sgX0xvY2s7DQogICAgX1B0ci0+c3dhcChfT3RoZXIp
Ow0KICAgIHJldHVybiBfT3RoZXI7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQogc2hhcmVk
X3B0cjxfVHk+IGF0b21pY19leGNoYW5nZSgNCiAgICBzaGFyZWRfcHRyPF9UeT4qIF9QdHIsIHNo
YXJlZF9wdHI8X1R5PiBfT3RoZXIpIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBhdG9taWNf
ZXhjaGFuZ2VfZXhwbGljaXQoX1B0ciwgOjpzdGQ6OiBtb3ZlKF9PdGhlciksIG1lbW9yeV9vcmRl
cl9zZXFfY3N0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCiBib29sIGF0b21pY19jb21w
YXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQoc2hhcmVkX3B0cjxfVHk+KiBfUHRyLA0KICAgIHNo
YXJlZF9wdHI8X1R5PiogX0V4cCwgc2hhcmVkX3B0cjxfVHk+IF9WYWx1ZSwgbWVtb3J5X29yZGVy
LCBtZW1vcnlfb3JkZXIpIHsgDQogICAgc2hhcmVkX3B0cjxfVHk+IF9PbGRfZXhwOyANCiAgICBf
U2hhcmVkX3B0cl9zcGluX2xvY2sgX0xvY2s7DQogICAgYm9vbCBfU3VjY2VzcyA9IF9QdHItPmdl
dCgpID09IF9FeHAtPmdldCgpICYmICFfUHRyLT5vd25lcl9iZWZvcmUoKl9FeHApICYmICFfRXhw
LT5vd25lcl9iZWZvcmUoKl9QdHIpOw0KICAgIGlmIChfU3VjY2Vzcykgew0KICAgICAgICBfUHRy
LT5zd2FwKF9WYWx1ZSk7DQogICAgfSBlbHNlIHsgDQogICAgICAgIF9FeHAtPnN3YXAoX09sZF9l
eHApOw0KICAgICAgICAqX0V4cCA9ICpfUHRyOw0KICAgIH0NCiAgICByZXR1cm4gX1N1Y2Nlc3M7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQogYm9vbCBhdG9taWNfY29tcGFyZV9leGNoYW5n
ZV93ZWFrKA0KICAgIHNoYXJlZF9wdHI8X1R5PiogX1B0ciwgc2hhcmVkX3B0cjxfVHk+KiBfRXhw
LCBzaGFyZWRfcHRyPF9UeT4gX1ZhbHVlKSB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogYXRv
bWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdCgNCiAgICAgICAgX1B0ciwgX0V4cCwg
OjpzdGQ6OiBtb3ZlKF9WYWx1ZSksIG1lbW9yeV9vcmRlcl9zZXFfY3N0LCBtZW1vcnlfb3JkZXJf
c2VxX2NzdCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQogYm9vbCBhdG9taWNfY29tcGFy
ZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQoc2hhcmVkX3B0cjxfVHk+KiBfUHRyLA0KICAgIHNo
YXJlZF9wdHI8X1R5PiogX0V4cCwgc2hhcmVkX3B0cjxfVHk+IF9WYWx1ZSwgbWVtb3J5X29yZGVy
LCBtZW1vcnlfb3JkZXIpIHsgDQogICAgcmV0dXJuIDo6c3RkOjogYXRvbWljX2NvbXBhcmVfZXhj
aGFuZ2Vfd2Vha19leHBsaWNpdCgNCiAgICAgICAgX1B0ciwgX0V4cCwgOjpzdGQ6OiBtb3ZlKF9W
YWx1ZSksIG1lbW9yeV9vcmRlcl9zZXFfY3N0LCBtZW1vcnlfb3JkZXJfc2VxX2NzdCk7DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQogYm9vbCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJv
bmcoDQogICAgc2hhcmVkX3B0cjxfVHk+KiBfUHRyLCBzaGFyZWRfcHRyPF9UeT4qIF9FeHAsIHNo
YXJlZF9wdHI8X1R5PiBfVmFsdWUpIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBhdG9taWNf
Y29tcGFyZV9leGNoYW5nZV9zdHJvbmdfZXhwbGljaXQoDQogICAgICAgIF9QdHIsIF9FeHAsIDo6
c3RkOjogbW92ZShfVmFsdWUpLCBtZW1vcnlfb3JkZXJfc2VxX2NzdCwgbWVtb3J5X29yZGVyX3Nl
cV9jc3QpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzMwOSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMzI1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1lbW9yeSINCg0KfQ0KDQoNCiNwcmFn
bWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KI2xpbmUgMzMzMiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtZW1vcnkiDQojbGluZSAz
MzMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1l
bW9yeSINCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9TdGRMaWJFeHRyYXMuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdWNydFxcaW50dHlwZXMuaCINCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQz
MjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgyMCA0OTk1IDQ5OTYgMjg3MTkgMjg3MjYgMjg3Mjcg
KQ0KDQoNCl9fcHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0DQp7DQogICAgaW50bWF4X3QgcXVvdDsNCiAgICBpbnRtYXhfdCBy
ZW07DQp9IF9MbGRpdl90Ow0KDQp0eXBlZGVmIF9MbGRpdl90IGltYXhkaXZfdDsNCg0KDQoNCg0K
DQoNCg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50bWF4X3QgX19jZGVjbCBpbWF4YWJz
KA0KICAgICAgaW50bWF4X3QgX051bWJlcg0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBpbWF4ZGl2X3QgX19jZGVjbCBpbWF4ZGl2KA0KICAgICAgaW50bWF4X3QgX051bWVyYXRv
ciwNCiAgICAgIGludG1heF90IF9EZW5vbWluYXRvcg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnRtYXhfdCBfX2NkZWNsIHN0cnRvaW1heCgNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgY29uc3QqIF9TdHJpbmcsDQogICAgICAgIGNoYXIqKiAgICAgIF9FbmRQdHIsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIF9SYWRpeA0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRtYXhfdCBfX2NkZWNsIF9zdHJ0b2ltYXhfbCgNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcsDQogICAgICAgIGNoYXIqKiAg
ICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIF9SYWRp
eCwNCiAgICAgICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICBfTG9jYWxlDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHVpbnRtYXhfdCBfX2NkZWNsIHN0cnRvdW1heCgNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9TdHJpbmcsDQogICAgICAgIGNoYXIqKiAg
ICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgIF9SYWRp
eA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB1aW50bWF4X3QgX19jZGVjbCBfc3Ry
dG91bWF4X2woDQogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfU3RyaW5nLA0K
ICAgICAgICBjaGFyKiogICAgICBfRW5kUHRyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgICAgICAgICBfUmFkaXgsDQogICAgICAgICAgICAgICAgICAgICAgX2xvY2FsZV90ICAgX0xv
Y2FsZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRtYXhfdCBfX2NkZWNsIHdj
c3RvaW1heCgNCiAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9TdHJpbmcs
DQogICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAgICAgICAgICAgIF9SYWRpeA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnRtYXhfdCBfX2NkZWNsIF93Y3N0b2ltYXhfbCgNCiAgICAgICAgICAgICAgICAgICAgICAg
IHdjaGFyX3QgY29uc3QqIF9TdHJpbmcsDQogICAgICAgIHdjaGFyX3QqKiAgICAgIF9FbmRQdHIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgIF9SYWRpeCwNCiAgICAg
ICAgICAgICAgICAgICAgICBfbG9jYWxlX3QgICAgICBfTG9jYWxlDQogICAgKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHVpbnRtYXhfdCBfX2NkZWNsIHdjc3RvdW1heCgNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9TdHJpbmcsDQogICAgICAgIHdjaGFyX3QqKiAg
ICAgIF9FbmRQdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgIF9S
YWRpeA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB1aW50bWF4X3QgX19jZGVjbCBf
d2NzdG91bWF4X2woDQogICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBfU3Ry
aW5nLA0KICAgICAgICB3Y2hhcl90KiogICAgICBfRW5kUHRyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgICAgICAgICAgICBfUmFkaXgsDQogICAgICAgICAgICAgICAgICAgICAgX2xv
Y2FsZV90ICAgICAgX0xvY2FsZQ0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQojbGluZSAxMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGludHR5
cGVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoNCg0KI2xpbmUgMTUx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFxpbnR0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KICAgIA0KDQoNCiNsaW5lIDE3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcaW50dHlwZXMuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQojbGluZSAxODkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVj
cnRcXGludHR5cGVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoNCg0K
I2xpbmUgMjA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxpbnR0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KICAgIA0KDQoNCiNsaW5lIDIyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcaW50dHlwZXMu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoN
CiNsaW5lIDI1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcaW50dHlwZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiAgICANCg0KDQojbGluZSAyNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGludHR5cGVz
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoNCg0KI2xpbmUgMjkxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxpbnR0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ICAgIA0KDQoNCiNsaW5lIDMxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcaW50dHlwZXMuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQojbGluZSAzMjkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGludHR5cGVzLmgiDQoNCg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAzNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGludHR5cGVz
LmgiDQojbGluZSA0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzdGRhcmcuaCINCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6ICAgNDUxNCA0ODIwICkNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0
ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQoj
cHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQojbGluZSAxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN0ZGJvb2wu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzdGRib29sLmgi
DQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgNTMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlv
bnMuaCINCg0KDQoNCg0KI2xpbmUgNTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiB2b2lkIF9SZWFkV3JpdGVCYXJyaWVyKHZvaWQpOw0KI3ByYWdtYSBpbnRyaW5zaWMo
X1JlYWRXcml0ZUJhcnJpZXIpDQojbGluZSA2OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KI2xpbmUgMSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4uaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNwcmFnbWEg
d2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6ICAgNDUxNCA0ODIwICkNCg0K
DQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHNldGptcC5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
ICAgNDUxNCA0ODIwICkNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzZXRqbXAu
aCINCg0KICAgIHR5cGVkZWYgc3RydWN0IF9fZGVjbHNwZWMoYWxpZ24oMTYpKSBfU0VUSk1QX0ZM
T0FUMTI4DQogICAgew0KICAgICAgICB1bnNpZ25lZCBfX2ludDY0IFBhcnRbMl07DQogICAgfSBT
RVRKTVBfRkxPQVQxMjg7DQoNCiAgICANCiAgICB0eXBlZGVmIFNFVEpNUF9GTE9BVDEyOCBfSkJU
WVBFOw0KDQogICAgdHlwZWRlZiBzdHJ1Y3QgX0pVTVBfQlVGRkVSDQogICAgew0KICAgICAgICB1
bnNpZ25lZCBfX2ludDY0IEZyYW1lOw0KICAgICAgICB1bnNpZ25lZCBfX2ludDY0IFJieDsNCiAg
ICAgICAgdW5zaWduZWQgX19pbnQ2NCBSc3A7DQogICAgICAgIHVuc2lnbmVkIF9faW50NjQgUmJw
Ow0KICAgICAgICB1bnNpZ25lZCBfX2ludDY0IFJzaTsNCiAgICAgICAgdW5zaWduZWQgX19pbnQ2
NCBSZGk7DQogICAgICAgIHVuc2lnbmVkIF9faW50NjQgUjEyOw0KICAgICAgICB1bnNpZ25lZCBf
X2ludDY0IFIxMzsNCiAgICAgICAgdW5zaWduZWQgX19pbnQ2NCBSMTQ7DQogICAgICAgIHVuc2ln
bmVkIF9faW50NjQgUjE1Ow0KICAgICAgICB1bnNpZ25lZCBfX2ludDY0IFJpcDsNCiAgICAgICAg
dW5zaWduZWQgbG9uZyBNeENzcjsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgRnBDc3I7DQogICAg
ICAgIHVuc2lnbmVkIHNob3J0IFNwYXJlOw0KDQogICAgICAgIFNFVEpNUF9GTE9BVDEyOCBYbW02
Ow0KICAgICAgICBTRVRKTVBfRkxPQVQxMjggWG1tNzsNCiAgICAgICAgU0VUSk1QX0ZMT0FUMTI4
IFhtbTg7DQogICAgICAgIFNFVEpNUF9GTE9BVDEyOCBYbW05Ow0KICAgICAgICBTRVRKTVBfRkxP
QVQxMjggWG1tMTA7DQogICAgICAgIFNFVEpNUF9GTE9BVDEyOCBYbW0xMTsNCiAgICAgICAgU0VU
Sk1QX0ZMT0FUMTI4IFhtbTEyOw0KICAgICAgICBTRVRKTVBfRkxPQVQxMjggWG1tMTM7DQogICAg
ICAgIFNFVEpNUF9GTE9BVDEyOCBYbW0xNDsNCiAgICAgICAgU0VUSk1QX0ZMT0FUMTI4IFhtbTE1
Ow0KICAgIH0gX0pVTVBfQlVGRkVSOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNldGptcC5oIg0KDQoNCg0KDQoNCiAgICANCiAgICB0eXBl
ZGVmIF9KQlRZUEUgam1wX2J1ZlsxNl07DQojbGluZSAxNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc2V0am1wLmgiDQoNCg0KDQoNCiAgICANCiNs
aW5lIDE1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxzZXRqbXAuaCINCg0KDQoNCg0KaW50IF9fY2RlY2wgX3NldGptcCgNCiAgICAgIGptcF9idWYg
X0J1Zg0KICAgICk7DQoNCg0KICAgIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgX19jZGVjbCBs
b25nam1wKA0KICAgICAgICAgIGptcF9idWYgX0J1ZiwNCiAgICAgICAgICBpbnQgICAgIF9WYWx1
ZQ0KICAgICAgICApIG5vZXhjZXB0KGZhbHNlKTsNCg0KDQoNCg0KDQojbGluZSAxNzUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc2V0am1wLmgiDQoN
Cg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUg
MjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50
cmluLmgiDQoNCg0KDQojbGluZSAyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4uaCINCg0KDQoNCiAgICANCiAgICAgICAgI2xpbmUgMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbW1pbnRy
aW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGlu
ZSAxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxp
bW1pbnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW1taW50cmluLmgiDQoNCiNsaW5lIDEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcd21taW50cmlu
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
I2xpbmUgMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcd21taW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHdtbWludHJpbi5oIg0KDQojbGluZSAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG5tbWlu
dHJpbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KI2xpbmUgMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcbm1taW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG5tbWludHJpbi5oIg0KDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHNtbWludHJpbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCg0KI2xpbmUgMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcc21taW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNtbWludHJpbi5o
Ig0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHRtbWludHJpbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCiNsaW5lIDE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHRtbWludHJpbi5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0bW1pbnRyaW4uaCINCg0KI2xp
bmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxw
bW1pbnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQojbGluZSAyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxwbW1pbnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxccG1taW50cmluLmgiDQoN
Cg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcZW1taW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxlbW1pbnRyaW4uaCINCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcZW1taW50cmluLmgiDQoNCg0KDQojbGluZSAzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxlbW1pbnRyaW4uaCINCg0KDQoNCg0KI2xpbmUgMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bW1pbnRy
aW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1taW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhtbWludHJpbi5oIg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbW1pbnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCiNsaW5lIDIzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1taW50cmluLmgiDQoNCg0K
DQojbGluZSAyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxtbWludHJpbi5oIg0KDQoNCmV4dGVybiAiQyIgeyANCg0KDQojbGluZSAzMyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtbWludHJpbi5oIg0K
DQp0eXBlZGVmIHVuaW9uIF9fZGVjbHNwZWMoaW50cmluX3R5cGUpIF9fZGVjbHNwZWMoYWxpZ24o
OCkpIF9fbTY0DQp7DQogICAgdW5zaWduZWQgX19pbnQ2NCAgICBtNjRfdTY0Ow0KICAgIGZsb2F0
ICAgICAgICAgICAgICAgbTY0X2YzMlsyXTsNCiAgICBfX2ludDggICAgICAgICAgICAgIG02NF9p
OFs4XTsNCiAgICBfX2ludDE2ICAgICAgICAgICAgIG02NF9pMTZbNF07DQogICAgX19pbnQzMiAg
ICAgICAgICAgICBtNjRfaTMyWzJdOw0KICAgIF9faW50NjQgICAgICAgICAgICAgbTY0X2k2NDsN
CiAgICB1bnNpZ25lZCBfX2ludDggICAgIG02NF91OFs4XTsNCiAgICB1bnNpZ25lZCBfX2ludDE2
ICAgIG02NF91MTZbNF07DQogICAgdW5zaWduZWQgX19pbnQzMiAgICBtNjRfdTMyWzJdOw0KfSBf
X202NDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
bW1pbnRyaW4uaCINCg0KDQp9OyANCiNsaW5lIDE4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtbWludHJpbi5oIg0KDQojbGluZSAxOTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbW1pbnRyaW4uaCIN
CiNsaW5lIDE5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxtbWludHJpbi5oIg0KI2xpbmUgMTkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXG1taW50cmluLmgiDQojbGluZSA0NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bW1pbnRyaW4uaCINCiNsaW5l
IDQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHht
bWludHJpbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdW5p
b24gX19kZWNsc3BlYyhpbnRyaW5fdHlwZSkgX19kZWNsc3BlYyhhbGlnbigxNikpIF9fbTEyOCB7
DQogICAgIGZsb2F0ICAgICAgICAgICAgICAgbTEyOF9mMzJbNF07DQogICAgIHVuc2lnbmVkIF9f
aW50NjQgICAgbTEyOF91NjRbMl07DQogICAgIF9faW50OCAgICAgICAgICAgICAgbTEyOF9pOFsx
Nl07DQogICAgIF9faW50MTYgICAgICAgICAgICAgbTEyOF9pMTZbOF07DQogICAgIF9faW50MzIg
ICAgICAgICAgICAgbTEyOF9pMzJbNF07DQogICAgIF9faW50NjQgICAgICAgICAgICAgbTEyOF9p
NjRbMl07DQogICAgIHVuc2lnbmVkIF9faW50OCAgICAgbTEyOF91OFsxNl07DQogICAgIHVuc2ln
bmVkIF9faW50MTYgICAgbTEyOF91MTZbOF07DQogICAgIHVuc2lnbmVkIF9faW50MzIgICAgbTEy
OF91MzJbNF07DQogfSBfX20xMjg7DQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxtYWxs
b2MuaCINCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdh
cm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcx
MCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2IDI4NzI3ICkNCg0KDQpfX3ByYWdtYShw
YWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQogICAgDQoNCg0KI2xpbmUgMjkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXG1hbGxvYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBfaGVhcGluZm8NCnsNCiAgICBpbnQqIF9wZW50cnk7DQogICAgc2l6ZV90IF9z
aXplOw0KICAgIGludCBfdXNlZmxhZzsNCn0gX0hFQVBJTkZPOw0KDQoNCg0KDQoNCg0KICAgDQp2
b2lkKiBfX2NkZWNsIF9hbGxvY2EoICBzaXplX3QgX1NpemUpOw0KDQoNCg0KDQoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBfZ2V0X2hlYXBfaGFuZGxlKHZvaWQp
Ow0KDQogICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaGVhcG1p
bih2b2lkKTsNCg0KICAgIA0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2Rl
Y2wgX2hlYXB3YWxrKCAgX0hFQVBJTkZPKiBfRW50cnlJbmZvKTsNCiAgICAjbGluZSA2OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdWNydFxcbWFsbG9jLmgiDQoNCiAgICANCiAgICAgICAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgaW50IF9fY2RlY2wgX2hlYXBjaGsodm9pZCk7DQogICAgI2xpbmUgNzMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXG1hbGxvYy5oIg0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNs
IF9yZXNldHN0a29mbHcodm9pZCk7DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgICAg
ICANCiAgICANCg0KI2xpbmUgODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXG1hbGxvYy5oIg0KDQogICAgc3Rh
dGljX2Fzc2VydCgoc2l6ZW9mKHVuc2lnbmVkIGludCkgPD0gMTYpLCAic2l6ZW9mKHVuc2lnbmVk
IGludCkgPD0gX0FMTE9DQV9TX01BUktFUl9TSVpFIik7DQoNCg0KICAgICNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQ0KICAgICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA2NTQwKSANCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiAgICBfX2lubGluZSB2b2lkKiBfTWFya0FsbG9j
YVMoICAgdm9pZCogX1B0ciwgdW5zaWduZWQgaW50IF9NYXJrZXIpDQogICAgew0KICAgICAgICBp
ZiAoX1B0cikNCiAgICAgICAgew0KICAgICAgICAgICAgKigodW5zaWduZWQgaW50KilfUHRyKSA9
IF9NYXJrZXI7DQogICAgICAgICAgICBfUHRyID0gKGNoYXIqKV9QdHIgKyAxNjsNCiAgICAgICAg
fQ0KICAgICAgICByZXR1cm4gX1B0cjsNCiAgICB9DQoNCiAgICBfX2lubGluZSBzaXplX3QgX01h
bGxvY2FDb21wdXRlU2l6ZShzaXplX3QgX1NpemUpDQogICAgew0KICAgICAgICBzaXplX3QgX01h
cmtlZFNpemUgPSBfU2l6ZSArIDE2Ow0KICAgICAgICByZXR1cm4gX01hcmtlZFNpemUgPiBfU2l6
ZSA/IF9NYXJrZWRTaXplIDogMDsNCiAgICB9DQoNCiAgICAjcHJhZ21hIHdhcm5pbmcocG9wKQ0K
DQojbGluZSAxMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXG1hbGxvYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFxtYWxsb2MuaCINCg0KDQoNCg0KI2xpbmUgMTQ0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxt
YWxsb2MuaCINCiNsaW5lIDE0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcbWFsbG9jLmgiDQoNCiAgICANCg0K
ICAgICNwcmFnbWEgd2FybmluZyhwdXNoKQ0KICAgICNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA2
MDE0KSANCiAgICBfX2lubGluZSB2b2lkIF9fY2RlY2wgX2ZyZWVhKCAgICB2b2lkKiBfTWVtb3J5
KQ0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgaW50IF9NYXJrZXI7DQogICAgICAgIGlmIChfTWVt
b3J5KQ0KICAgICAgICB7DQogICAgICAgICAgICBfTWVtb3J5ID0gKGNoYXIqKV9NZW1vcnkgLSAx
NjsNCiAgICAgICAgICAgIF9NYXJrZXIgPSAqKHVuc2lnbmVkIGludCopX01lbW9yeTsNCiAgICAg
ICAgICAgIGlmIChfTWFya2VyID09IDB4RERERCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICBmcmVlKF9NZW1vcnkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAg
ICAgICBlbHNlIGlmIChfTWFya2VyICE9IDB4Q0NDQykNCiAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAjbGluZSAxNjcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVjcnRcXG1hbGxvYy5oIg0KICAgICAgICB9DQogICAgfQ0KICAgICNwcmFnbWEg
d2FybmluZyhwb3ApDQoNCiNsaW5lIDE3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcbWFsbG9jLmgiDQoNCg0K
DQoNCiAgICANCiNsaW5lIDE3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcbWFsbG9jLmgiDQoNCg0KDQp9IF9f
cHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxODUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXG1hbGxvYy5oIg0KI2xpbmUgODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1taW50cmluLmgiDQojbGluZSA4MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bW1pbnRyaW4uaCIN
CiNsaW5lIDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhtbWludHJpbi5oIg0KDQogDQogDQogDQogDQogDQogDQogDQogDQogDQogDQoNCg0KDQoN
CiANCiANCiANCiANCiANCiANCiANCiANCiANCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KIA0KIA0KIA0KDQoNCmV4dGVybiAiQyIgeyANCiAgDQojbGluZSAxOTEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceG1taW50cmlu
LmgiDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOCBfbW1fYWRkX3NzKF9fbTEyOCBfQSwgX19tMTI4
IF9CKTsNCmV4dGVybiBfX20xMjggX21tX2FkZF9wcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpl
eHRlcm4gX19tMTI4IF9tbV9zdWJfc3MoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIF9f
bTEyOCBfbW1fc3ViX3BzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsNCmV4dGVybiBfX20xMjggX21t
X211bF9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9tdWxfcHMo
X19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fZGl2X3NzKF9fbTEyOCBf
QSwgX19tMTI4IF9CKTsNCmV4dGVybiBfX20xMjggX21tX2Rpdl9wcyhfX20xMjggX0EsIF9fbTEy
OCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9zcXJ0X3NzKF9fbTEyOCBfQSk7DQpleHRlcm4gX19t
MTI4IF9tbV9zcXJ0X3BzKF9fbTEyOCBfQSk7DQpleHRlcm4gX19tMTI4IF9tbV9yY3Bfc3MoX19t
MTI4IF9BKTsNCmV4dGVybiBfX20xMjggX21tX3JjcF9wcyhfX20xMjggX0EpOw0KZXh0ZXJuIF9f
bTEyOCBfbW1fcnNxcnRfc3MoX19tMTI4IF9BKTsNCmV4dGVybiBfX20xMjggX21tX3JzcXJ0X3Bz
KF9fbTEyOCBfQSk7DQpleHRlcm4gX19tMTI4IF9tbV9taW5fc3MoX19tMTI4IF9BLCBfX20xMjgg
X0IpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fbWluX3BzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsNCmV4
dGVybiBfX20xMjggX21tX21heF9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19t
MTI4IF9tbV9tYXhfcHMoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KDQoNCg0KDQoNCmV4dGVybiBf
X20xMjggX21tX2FuZF9wcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9t
bV9hbmRub3RfcHMoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fb3Jf
cHMoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIF9fbTEyOCBfbW1feG9yX3BzKF9fbTEy
OCBfQSwgX19tMTI4IF9CKTsNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4IF9tbV9jbXBlcV9zcyhf
X20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXBlcV9wcyhfX20xMjgg
X0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXBsdF9zcyhfX20xMjggX0EsIF9f
bTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXBsdF9wcyhfX20xMjggX0EsIF9fbTEyOCBf
Qik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXBsZV9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpl
eHRlcm4gX19tMTI4IF9tbV9jbXBsZV9wcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4g
X19tMTI4IF9tbV9jbXBndF9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4
IF9tbV9jbXBndF9wcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9j
bXBnZV9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXBnZV9w
cyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXBuZXFfc3MoX19t
MTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fY21wbmVxX3BzKF9fbTEyOCBf
QSwgX19tMTI4IF9CKTsNCmV4dGVybiBfX20xMjggX21tX2NtcG5sdF9zcyhfX20xMjggX0EsIF9f
bTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXBubHRfcHMoX19tMTI4IF9BLCBfX20xMjgg
X0IpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fY21wbmxlX3NzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsN
CmV4dGVybiBfX20xMjggX21tX2NtcG5sZV9wcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRl
cm4gX19tMTI4IF9tbV9jbXBuZ3Rfc3MoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIF9f
bTEyOCBfbW1fY21wbmd0X3BzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsNCmV4dGVybiBfX20xMjgg
X21tX2NtcG5nZV9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9j
bXBuZ2VfcHMoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fY21wb3Jk
X3NzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsNCmV4dGVybiBfX20xMjggX21tX2NtcG9yZF9wcyhf
X20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXB1bm9yZF9zcyhfX20x
MjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9jbXB1bm9yZF9wcyhfX20xMjgg
X0EsIF9fbTEyOCBfQik7DQpleHRlcm4gaW50IF9tbV9jb21pZXFfc3MoX19tMTI4IF9BLCBfX20x
MjggX0IpOw0KZXh0ZXJuIGludCBfbW1fY29taWx0X3NzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsN
CmV4dGVybiBpbnQgX21tX2NvbWlsZV9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4g
aW50IF9tbV9jb21pZ3Rfc3MoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIGludCBfbW1f
Y29taWdlX3NzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsNCmV4dGVybiBpbnQgX21tX2NvbWluZXFf
c3MoX19tMTI4IF9BLCBfX20xMjggX0IpOw0KZXh0ZXJuIGludCBfbW1fdWNvbWllcV9zcyhfX20x
MjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gaW50IF9tbV91Y29taWx0X3NzKF9fbTEyOCBfQSwg
X19tMTI4IF9CKTsNCmV4dGVybiBpbnQgX21tX3Vjb21pbGVfc3MoX19tMTI4IF9BLCBfX20xMjgg
X0IpOw0KZXh0ZXJuIGludCBfbW1fdWNvbWlndF9zcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpl
eHRlcm4gaW50IF9tbV91Y29taWdlX3NzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsNCmV4dGVybiBp
bnQgX21tX3Vjb21pbmVxX3NzKF9fbTEyOCBfQSwgX19tMTI4IF9CKTsNCg0KDQoNCg0KDQpleHRl
cm4gaW50IF9tbV9jdnRfc3Myc2koX19tMTI4IF9BKTsNCmV4dGVybiBpbnQgX21tX2N2dHRfc3My
c2koX19tMTI4IF9BKTsNCmV4dGVybiBfX20xMjggX21tX2N2dF9zaTJzcyhfX20xMjgsIGludCk7
DQpleHRlcm4gZmxvYXQgX21tX2N2dHNzX2YzMihfX20xMjggX0EpOw0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDI4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4bW1pbnRyaW4uaCINCg0KDQoNCg0KDQpleHRlcm4gX19pbnQ2NCBfbW1fY3Z0c3Nfc2k2
NChfX20xMjggX0EpOw0KZXh0ZXJuIF9faW50NjQgX21tX2N2dHRzc19zaTY0KF9fbTEyOCBfQSk7
DQpleHRlcm4gX19tMTI4ICBfbW1fY3Z0c2k2NF9zcyhfX20xMjggX0EsIF9faW50NjQgX0IpOw0K
I2xpbmUgMjkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhtbWludHJpbi5oIg0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjggX21tX3NodWZmbGVfcHMo
X19tMTI4IF9BLCBfX20xMjggX0IsIHVuc2lnbmVkIGludCBfSW1tOCk7DQpleHRlcm4gX19tMTI4
IF9tbV91bnBhY2toaV9wcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9t
bV91bnBhY2tsb19wcyhfX20xMjggX0EsIF9fbTEyOCBfQik7DQpleHRlcm4gX19tMTI4IF9tbV9s
b2FkaF9waShfX20xMjgsIF9fbTY0IGNvbnN0Kik7DQpleHRlcm4gX19tMTI4IF9tbV9tb3ZlaGxf
cHMoX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fbW92ZWxoX3BzKF9fbTEyOCwg
X19tMTI4KTsNCmV4dGVybiB2b2lkIF9tbV9zdG9yZWhfcGkoX19tNjQgKiwgX19tMTI4KTsNCmV4
dGVybiBfX20xMjggX21tX2xvYWRsX3BpKF9fbTEyOCwgX19tNjQgY29uc3QqKTsNCmV4dGVybiB2
b2lkIF9tbV9zdG9yZWxfcGkoX19tNjQgKiwgX19tMTI4KTsNCmV4dGVybiBpbnQgX21tX21vdmVt
YXNrX3BzKF9fbTEyOCBfQSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDMyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4bW1pbnRyaW4uaCINCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4IF9tbV9zZXRfc3MoZmxv
YXQgX0EpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fc2V0X3BzMShmbG9hdCBfQSk7DQpleHRlcm4gX19t
MTI4IF9tbV9zZXRfcHMoZmxvYXQgX0EsIGZsb2F0IF9CLCBmbG9hdCBfQywgZmxvYXQgX0QpOw0K
ZXh0ZXJuIF9fbTEyOCBfbW1fc2V0cl9wcyhmbG9hdCBfQSwgZmxvYXQgX0IsIGZsb2F0IF9DLCBm
bG9hdCBfRCk7DQpleHRlcm4gX19tMTI4IF9tbV9zZXR6ZXJvX3BzKHZvaWQpOw0KZXh0ZXJuIF9f
bTEyOCBfbW1fbG9hZF9zcyhmbG9hdCBjb25zdCpfQSk7DQpleHRlcm4gX19tMTI4IF9tbV9sb2Fk
X3BzMShmbG9hdCBjb25zdCpfQSk7DQpleHRlcm4gX19tMTI4IF9tbV9sb2FkX3BzKGZsb2F0IGNv
bnN0Kl9BKTsNCmV4dGVybiBfX20xMjggX21tX2xvYWRyX3BzKGZsb2F0IGNvbnN0Kl9BKTsNCmV4
dGVybiBfX20xMjggX21tX2xvYWR1X3BzKGZsb2F0IGNvbnN0Kl9BKTsNCmV4dGVybiB2b2lkIF9t
bV9zdG9yZV9zcyhmbG9hdCAqX1YsIF9fbTEyOCBfQSk7DQpleHRlcm4gdm9pZCBfbW1fc3RvcmVf
cHMxKGZsb2F0ICpfViwgX19tMTI4IF9BKTsNCmV4dGVybiB2b2lkIF9tbV9zdG9yZV9wcyhmbG9h
dCAqX1YsIF9fbTEyOCBfQSk7DQpleHRlcm4gdm9pZCBfbW1fc3RvcmVyX3BzKGZsb2F0ICpfViwg
X19tMTI4IF9BKTsNCmV4dGVybiB2b2lkIF9tbV9zdG9yZXVfcHMoZmxvYXQgKl9WLCBfX20xMjgg
X0EpOw0KZXh0ZXJuIHZvaWQgX21tX3ByZWZldGNoKGNoYXIgY29uc3QqX0EsIGludCBfU2VsKTsN
Cg0KDQojbGluZSAzNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceG1taW50cmluLmgiDQpleHRlcm4gdm9pZCBfbW1fc3RyZWFtX3BzKGZsb2F0ICos
IF9fbTEyOCk7DQpleHRlcm4gX19tMTI4IF9tbV9tb3ZlX3NzKF9fbTEyOCBfQSwgX19tMTI4IF9C
KTsNCg0KZXh0ZXJuIHZvaWQgX21tX3NmZW5jZSh2b2lkKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQg
X21tX2dldGNzcih2b2lkKTsNCmV4dGVybiB2b2lkIF9tbV9zZXRjc3IodW5zaWduZWQgaW50KTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM4
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bW1p
bnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KIA0KIA0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTA5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhtbWludHJpbi5oIg0K
DQoNCg0KfTsgDQojbGluZSA1MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceG1taW50cmluLmgiDQoNCiNsaW5lIDUxNiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bW1pbnRyaW4uaCINCiNsaW5lIDUx
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4bW1p
bnRyaW4uaCINCiNsaW5lIDUxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx4bW1pbnRyaW4uaCINCiNsaW5lIDQzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGVtbWludHJpbi5oIg0KDQp0eXBlZGVmIHVu
aW9uIF9fZGVjbHNwZWMoaW50cmluX3R5cGUpIF9fZGVjbHNwZWMoYWxpZ24oMTYpKSBfX20xMjhp
IHsNCiAgICBfX2ludDggICAgICAgICAgICAgIG0xMjhpX2k4WzE2XTsNCiAgICBfX2ludDE2ICAg
ICAgICAgICAgIG0xMjhpX2kxNls4XTsNCiAgICBfX2ludDMyICAgICAgICAgICAgIG0xMjhpX2kz
Mls0XTsNCiAgICBfX2ludDY0ICAgICAgICAgICAgIG0xMjhpX2k2NFsyXTsNCiAgICB1bnNpZ25l
ZCBfX2ludDggICAgIG0xMjhpX3U4WzE2XTsNCiAgICB1bnNpZ25lZCBfX2ludDE2ICAgIG0xMjhp
X3UxNls4XTsNCiAgICB1bnNpZ25lZCBfX2ludDMyICAgIG0xMjhpX3UzMls0XTsNCiAgICB1bnNp
Z25lZCBfX2ludDY0ICAgIG0xMjhpX3U2NFsyXTsNCn0gX19tMTI4aTsNCg0KdHlwZWRlZiBzdHJ1
Y3QgX19kZWNsc3BlYyhpbnRyaW5fdHlwZSkgX19kZWNsc3BlYyhhbGlnbigxNikpIF9fbTEyOGQg
ew0KICAgIGRvdWJsZSAgICAgICAgICAgICAgbTEyOGRfZjY0WzJdOw0KfSBfX20xMjhkOw0KDQoN
Cg0KDQoNCg0KIA0KIA0KIA0KDQoNCmV4dGVybiAiQyIgeyANCiAgDQojbGluZSA3MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxlbW1pbnRyaW4uaCIN
Cg0KDQoNCg0KDQpleHRlcm4gX19tMTI4ZCBfbW1fYWRkX3NkKF9fbTEyOGQgX0EsIF9fbTEyOGQg
X0IpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2FkZF9wZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsN
CmV4dGVybiBfX20xMjhkIF9tbV9zdWJfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRl
cm4gX19tMTI4ZCBfbW1fc3ViX3BkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0IpOw0KZXh0ZXJuIF9f
bTEyOGQgX21tX211bF9zZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCmV4dGVybiBfX20xMjhk
IF9tbV9tdWxfcGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1f
c3FydF9zZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCmV4dGVybiBfX20xMjhkIF9tbV9zcXJ0
X3BkKF9fbTEyOGQgX0EpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2Rpdl9zZChfX20xMjhkIF9BLCBf
X20xMjhkIF9CKTsNCmV4dGVybiBfX20xMjhkIF9tbV9kaXZfcGQoX19tMTI4ZCBfQSwgX19tMTI4
ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fbWluX3NkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0Ip
Ow0KZXh0ZXJuIF9fbTEyOGQgX21tX21pbl9wZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCmV4
dGVybiBfX20xMjhkIF9tbV9tYXhfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4g
X19tMTI4ZCBfbW1fbWF4X3BkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0IpOw0KDQoNCg0KDQoNCmV4
dGVybiBfX20xMjhkIF9tbV9hbmRfcGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4g
X19tMTI4ZCBfbW1fYW5kbm90X3BkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0IpOw0KZXh0ZXJuIF9f
bTEyOGQgX21tX29yX3BkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0IpOw0KZXh0ZXJuIF9fbTEyOGQg
X21tX3hvcl9wZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCg0KDQoNCg0KDQpleHRlcm4gX19t
MTI4ZCBfbW1fY21wZXFfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4
ZCBfbW1fY21wZXFfcGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBf
bW1fY21wbHRfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1f
Y21wbHRfcGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21w
bGVfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wbGVf
cGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wZ3Rfc2Qo
X19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wZ3RfcGQoX19t
MTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wZ2Vfc2QoX19tMTI4
ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wZ2VfcGQoX19tMTI4ZCBf
QSwgX19tMTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wbmVxX3NkKF9fbTEyOGQgX0Es
IF9fbTEyOGQgX0IpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2NtcG5lcV9wZChfX20xMjhkIF9BLCBf
X20xMjhkIF9CKTsNCmV4dGVybiBfX20xMjhkIF9tbV9jbXBubHRfc2QoX19tMTI4ZCBfQSwgX19t
MTI4ZCBfQik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wbmx0X3BkKF9fbTEyOGQgX0EsIF9fbTEy
OGQgX0IpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2NtcG5sZV9zZChfX20xMjhkIF9BLCBfX20xMjhk
IF9CKTsNCmV4dGVybiBfX20xMjhkIF9tbV9jbXBubGVfcGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBf
Qik7DQpleHRlcm4gX19tMTI4ZCBfbW1fY21wbmd0X3NkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0Ip
Ow0KZXh0ZXJuIF9fbTEyOGQgX21tX2NtcG5ndF9wZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsN
CmV4dGVybiBfX20xMjhkIF9tbV9jbXBuZ2Vfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpl
eHRlcm4gX19tMTI4ZCBfbW1fY21wbmdlX3BkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0IpOw0KZXh0
ZXJuIF9fbTEyOGQgX21tX2NtcG9yZF9wZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCmV4dGVy
biBfX20xMjhkIF9tbV9jbXBvcmRfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4g
X19tMTI4ZCBfbW1fY21wdW5vcmRfcGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4g
X19tMTI4ZCBfbW1fY21wdW5vcmRfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4g
aW50IF9tbV9jb21pZXFfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gaW50IF9t
bV9jb21pbHRfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gaW50IF9tbV9jb21p
bGVfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gaW50IF9tbV9jb21pZ3Rfc2Qo
X19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gaW50IF9tbV9jb21pZ2Vfc2QoX19tMTI4
ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gaW50IF9tbV9jb21pbmVxX3NkKF9fbTEyOGQgX0Es
IF9fbTEyOGQgX0IpOw0KZXh0ZXJuIGludCBfbW1fdWNvbWllcV9zZChfX20xMjhkIF9BLCBfX20x
MjhkIF9CKTsNCmV4dGVybiBpbnQgX21tX3Vjb21pbHRfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBf
Qik7DQpleHRlcm4gaW50IF9tbV91Y29taWxlX3NkKF9fbTEyOGQgX0EsIF9fbTEyOGQgX0IpOw0K
ZXh0ZXJuIGludCBfbW1fdWNvbWlndF9zZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCmV4dGVy
biBpbnQgX21tX3Vjb21pZ2Vfc2QoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQik7DQpleHRlcm4gaW50
IF9tbV91Y29taW5lcV9zZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCg0KDQoNCg0KDQpleHRl
cm4gX19tMTI4ZCBfbW1fY3Z0ZXBpMzJfcGQoX19tMTI4aSBfQSk7DQpleHRlcm4gX19tMTI4aSBf
bW1fY3Z0cGRfZXBpMzIoX19tMTI4ZCBfQSk7DQpleHRlcm4gX19tMTI4aSBfbW1fY3Z0dHBkX2Vw
aTMyKF9fbTEyOGQgX0EpOw0KZXh0ZXJuIF9fbTEyOCBfbW1fY3Z0ZXBpMzJfcHMoX19tMTI4aSBf
QSk7DQpleHRlcm4gX19tMTI4aSBfbW1fY3Z0cHNfZXBpMzIoX19tMTI4IF9BKTsNCmV4dGVybiBf
X20xMjhpIF9tbV9jdnR0cHNfZXBpMzIoX19tMTI4IF9BKTsNCmV4dGVybiBfX20xMjggX21tX2N2
dHBkX3BzKF9fbTEyOGQgX0EpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2N2dHBzX3BkKF9fbTEyOCBf
QSk7DQpleHRlcm4gX19tMTI4IF9tbV9jdnRzZF9zcyhfX20xMjggX0EsIF9fbTEyOGQgX0IpOw0K
ZXh0ZXJuIF9fbTEyOGQgX21tX2N2dHNzX3NkKF9fbTEyOGQgX0EsIF9fbTEyOCBfQik7DQoNCmV4
dGVybiBpbnQgX21tX2N2dHNkX3NpMzIoX19tMTI4ZCBfQSk7DQpleHRlcm4gaW50IF9tbV9jdnR0
c2Rfc2kzMihfX20xMjhkIF9BKTsNCmV4dGVybiBfX20xMjhkIF9tbV9jdnRzaTMyX3NkKF9fbTEy
OGQgX0EsIGludCBfQik7DQoNCg0KDQoNCg0KI2xpbmUgMTY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGVtbWludHJpbi5oIg0KDQoNCg0KDQoNCmV4
dGVybiBfX20xMjhkIF9tbV91bnBhY2toaV9wZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCmV4
dGVybiBfX20xMjhkIF9tbV91bnBhY2tsb19wZChfX20xMjhkIF9BLCBfX20xMjhkIF9CKTsNCmV4
dGVybiBpbnQgX21tX21vdmVtYXNrX3BkKF9fbTEyOGQgX0EpOw0KZXh0ZXJuIF9fbTEyOGQgX21t
X3NodWZmbGVfcGQoX19tMTI4ZCBfQSwgX19tMTI4ZCBfQiwgaW50IF9JKTsNCg0KDQoNCg0KDQpl
eHRlcm4gX19tMTI4ZCBfbW1fbG9hZF9wZChkb3VibGUgY29uc3QqX0RwKTsNCmV4dGVybiBfX20x
MjhkIF9tbV9sb2FkMV9wZChkb3VibGUgY29uc3QqX0RwKTsNCmV4dGVybiBfX20xMjhkIF9tbV9s
b2Fkcl9wZChkb3VibGUgY29uc3QqX0RwKTsNCmV4dGVybiBfX20xMjhkIF9tbV9sb2FkdV9wZChk
b3VibGUgY29uc3QqX0RwKTsNCmV4dGVybiBfX20xMjhkIF9tbV9sb2FkX3NkKGRvdWJsZSBjb25z
dCpfRHApOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2xvYWRoX3BkKF9fbTEyOGQgX0EsIGRvdWJsZSBj
b25zdCpfRHApOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2xvYWRsX3BkKF9fbTEyOGQgX0EsIGRvdWJs
ZSBjb25zdCpfRHApOw0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjhkIF9tbV9zZXRfc2QoZG91Ymxl
IF9XKTsNCmV4dGVybiBfX20xMjhkIF9tbV9zZXQxX3BkKGRvdWJsZSBfQSk7DQpleHRlcm4gX19t
MTI4ZCBfbW1fc2V0X3BkKGRvdWJsZSBfWiwgZG91YmxlIF9ZKTsNCmV4dGVybiBfX20xMjhkIF9t
bV9zZXRyX3BkKGRvdWJsZSBfWSwgZG91YmxlIF9aKTsNCmV4dGVybiBfX20xMjhkIF9tbV9zZXR6
ZXJvX3BkKHZvaWQpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX21vdmVfc2QoX19tMTI4ZCBfQSwgX19t
MTI4ZCBfQik7DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX21tX3N0b3JlX3NkKGRvdWJsZSAqX0Rw
LCBfX20xMjhkIF9BKTsNCmV4dGVybiB2b2lkIF9tbV9zdG9yZTFfcGQoZG91YmxlICpfRHAsIF9f
bTEyOGQgX0EpOw0KZXh0ZXJuIHZvaWQgX21tX3N0b3JlX3BkKGRvdWJsZSAqX0RwLCBfX20xMjhk
IF9BKTsNCmV4dGVybiB2b2lkIF9tbV9zdG9yZXVfcGQoZG91YmxlICpfRHAsIF9fbTEyOGQgX0Ep
Ow0KZXh0ZXJuIHZvaWQgX21tX3N0b3Jlcl9wZChkb3VibGUgKl9EcCwgX19tMTI4ZCBfQSk7DQpl
eHRlcm4gdm9pZCBfbW1fc3RvcmVoX3BkKGRvdWJsZSAqX0RwLCBfX20xMjhkIF9BKTsNCmV4dGVy
biB2b2lkIF9tbV9zdG9yZWxfcGQoZG91YmxlICpfRHAsIF9fbTEyOGQgX0EpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gX19tMTI4aSBfbW1fYWRkX2VwaTgoX19tMTI4aSBfQSwgX19tMTI4
aSBfQik7DQpleHRlcm4gX19tMTI4aSBfbW1fYWRkX2VwaTE2KF9fbTEyOGkgX0EsIF9fbTEyOGkg
X0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2FkZF9lcGkzMihfX20xMjhpIF9BLCBfX20xMjhpIF9C
KTsNCg0KDQojbGluZSAyMjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcZW1taW50cmluLmgiDQpleHRlcm4gX19tMTI4aSBfbW1fYWRkX2VwaTY0KF9f
bTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2FkZHNfZXBpOChfX20x
MjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9hZGRzX2VwaTE2KF9fbTEy
OGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2FkZHNfZXB1OChfX20xMjhp
IF9BLCBfX20xMjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9hZGRzX2VwdTE2KF9fbTEyOGkg
X0EsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2F2Z19lcHU4KF9fbTEyOGkgX0Es
IF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2F2Z19lcHUxNihfX20xMjhpIF9BLCBf
X20xMjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9tYWRkX2VwaTE2KF9fbTEyOGkgX0EsIF9f
bTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX21heF9lcGkxNihfX20xMjhpIF9BLCBfX20x
MjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9tYXhfZXB1OChfX20xMjhpIF9BLCBfX20xMjhp
IF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9taW5fZXBpMTYoX19tMTI4aSBfQSwgX19tMTI4aSBf
Qik7DQpleHRlcm4gX19tMTI4aSBfbW1fbWluX2VwdTgoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7
DQpleHRlcm4gX19tMTI4aSBfbW1fbXVsaGlfZXBpMTYoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7
DQpleHRlcm4gX19tMTI4aSBfbW1fbXVsaGlfZXB1MTYoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7
DQpleHRlcm4gX19tMTI4aSBfbW1fbXVsbG9fZXBpMTYoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7
DQoNCg0KI2xpbmUgMjQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXGVtbWludHJpbi5oIg0KZXh0ZXJuIF9fbTEyOGkgX21tX211bF9lcHUzMihfX20x
MjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9zYWRfZXB1OChfX20xMjhp
IF9BLCBfX20xMjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9zdWJfZXBpOChfX20xMjhpIF9B
LCBfX20xMjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9zdWJfZXBpMTYoX19tMTI4aSBfQSwg
X19tMTI4aSBfQik7DQpleHRlcm4gX19tMTI4aSBfbW1fc3ViX2VwaTMyKF9fbTEyOGkgX0EsIF9f
bTEyOGkgX0IpOw0KDQoNCiNsaW5lIDI1MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxlbW1pbnRyaW4uaCINCmV4dGVybiBfX20xMjhpIF9tbV9zdWJf
ZXBpNjQoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4gX19tMTI4aSBfbW1fc3Vic19l
cGk4KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3N1YnNfZXBp
MTYoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4gX19tMTI4aSBfbW1fc3Vic19lcHU4
KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3N1YnNfZXB1MTYo
X19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOGkgX21tX2Fu
ZF9zaTEyOChfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4dGVybiBfX20xMjhpIF9tbV9hbmRu
b3Rfc2kxMjgoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4gX19tMTI4aSBfbW1fb3Jf
c2kxMjgoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4gX19tMTI4aSBfbW1feG9yX3Np
MTI4KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjhpIF9t
bV9zbGxpX3NpMTI4KF9fbTEyOGkgX0EsIGludCBfSW1tKTsNCg0KZXh0ZXJuIF9fbTEyOGkgX21t
X3NsbGlfZXBpMTYoX19tMTI4aSBfQSwgaW50IF9Db3VudCk7DQpleHRlcm4gX19tMTI4aSBfbW1f
c2xsX2VwaTE2KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0NvdW50KTsNCmV4dGVybiBfX20xMjhpIF9t
bV9zbGxpX2VwaTMyKF9fbTEyOGkgX0EsIGludCBfQ291bnQpOw0KZXh0ZXJuIF9fbTEyOGkgX21t
X3NsbF9lcGkzMihfX20xMjhpIF9BLCBfX20xMjhpIF9Db3VudCk7DQpleHRlcm4gX19tMTI4aSBf
bW1fc2xsaV9lcGk2NChfX20xMjhpIF9BLCBpbnQgX0NvdW50KTsNCmV4dGVybiBfX20xMjhpIF9t
bV9zbGxfZXBpNjQoX19tMTI4aSBfQSwgX19tMTI4aSBfQ291bnQpOw0KZXh0ZXJuIF9fbTEyOGkg
X21tX3NyYWlfZXBpMTYoX19tMTI4aSBfQSwgaW50IF9Db3VudCk7DQpleHRlcm4gX19tMTI4aSBf
bW1fc3JhX2VwaTE2KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0NvdW50KTsNCmV4dGVybiBfX20xMjhp
IF9tbV9zcmFpX2VwaTMyKF9fbTEyOGkgX0EsIGludCBfQ291bnQpOw0KZXh0ZXJuIF9fbTEyOGkg
X21tX3NyYV9lcGkzMihfX20xMjhpIF9BLCBfX20xMjhpIF9Db3VudCk7DQpleHRlcm4gX19tMTI4
aSBfbW1fc3JsaV9zaTEyOChfX20xMjhpIF9BLCBpbnQgX0ltbSk7DQoNCmV4dGVybiBfX20xMjhp
IF9tbV9zcmxpX2VwaTE2KF9fbTEyOGkgX0EsIGludCBfQ291bnQpOw0KZXh0ZXJuIF9fbTEyOGkg
X21tX3NybF9lcGkxNihfX20xMjhpIF9BLCBfX20xMjhpIF9Db3VudCk7DQpleHRlcm4gX19tMTI4
aSBfbW1fc3JsaV9lcGkzMihfX20xMjhpIF9BLCBpbnQgX0NvdW50KTsNCmV4dGVybiBfX20xMjhp
IF9tbV9zcmxfZXBpMzIoX19tMTI4aSBfQSwgX19tMTI4aSBfQ291bnQpOw0KZXh0ZXJuIF9fbTEy
OGkgX21tX3NybGlfZXBpNjQoX19tMTI4aSBfQSwgaW50IF9Db3VudCk7DQpleHRlcm4gX19tMTI4
aSBfbW1fc3JsX2VwaTY0KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0NvdW50KTsNCg0KDQoNCg0KDQpl
eHRlcm4gX19tMTI4aSBfbW1fY21wZXFfZXBpOChfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4
dGVybiBfX20xMjhpIF9tbV9jbXBlcV9lcGkxNihfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4
dGVybiBfX20xMjhpIF9tbV9jbXBlcV9lcGkzMihfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4
dGVybiBfX20xMjhpIF9tbV9jbXBndF9lcGk4KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0
ZXJuIF9fbTEyOGkgX21tX2NtcGd0X2VwaTE2KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0
ZXJuIF9fbTEyOGkgX21tX2NtcGd0X2VwaTMyKF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0
ZXJuIF9fbTEyOGkgX21tX2NtcGx0X2VwaTgoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRl
cm4gX19tMTI4aSBfbW1fY21wbHRfZXBpMTYoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRl
cm4gX19tMTI4aSBfbW1fY21wbHRfZXBpMzIoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQoNCg0K
DQoNCg0KZXh0ZXJuIF9fbTEyOGkgX21tX2N2dHNpMzJfc2kxMjgoaW50IF9BKTsNCmV4dGVybiBp
bnQgX21tX2N2dHNpMTI4X3NpMzIoX19tMTI4aSBfQSk7DQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEy
OGkgX21tX3BhY2tzX2VwaTE2KF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEy
OGkgX21tX3BhY2tzX2VwaTMyKF9fbTEyOGkgX0EsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIF9fbTEy
OGkgX21tX3BhY2t1c19lcGkxNihfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4dGVybiBpbnQg
X21tX2V4dHJhY3RfZXBpMTYoX19tMTI4aSBfQSwgaW50IF9JbW0pOw0KZXh0ZXJuIF9fbTEyOGkg
X21tX2luc2VydF9lcGkxNihfX20xMjhpIF9BLCBpbnQgX0IsIGludCBfSW1tKTsNCmV4dGVybiBp
bnQgX21tX21vdmVtYXNrX2VwaTgoX19tMTI4aSBfQSk7DQpleHRlcm4gX19tMTI4aSBfbW1fc2h1
ZmZsZV9lcGkzMihfX20xMjhpIF9BLCBpbnQgX0ltbSk7DQpleHRlcm4gX19tMTI4aSBfbW1fc2h1
ZmZsZWhpX2VwaTE2KF9fbTEyOGkgX0EsIGludCBfSW1tKTsNCmV4dGVybiBfX20xMjhpIF9tbV9z
aHVmZmxlbG9fZXBpMTYoX19tMTI4aSBfQSwgaW50IF9JbW0pOw0KZXh0ZXJuIF9fbTEyOGkgX21t
X3VucGFja2hpX2VwaTgoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4gX19tMTI4aSBf
bW1fdW5wYWNraGlfZXBpMTYoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4gX19tMTI4
aSBfbW1fdW5wYWNraGlfZXBpMzIoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4gX19t
MTI4aSBfbW1fdW5wYWNraGlfZXBpNjQoX19tMTI4aSBfQSwgX19tMTI4aSBfQik7DQpleHRlcm4g
X19tMTI4aSBfbW1fdW5wYWNrbG9fZXBpOChfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4dGVy
biBfX20xMjhpIF9tbV91bnBhY2tsb19lcGkxNihfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsNCmV4
dGVybiBfX20xMjhpIF9tbV91bnBhY2tsb19lcGkzMihfX20xMjhpIF9BLCBfX20xMjhpIF9CKTsN
CmV4dGVybiBfX20xMjhpIF9tbV91bnBhY2tsb19lcGk2NChfX20xMjhpIF9BLCBfX20xMjhpIF9C
KTsNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4aSBfbW1fbG9hZF9zaTEyOChfX20xMjhpIGNvbnN0
Kl9QKTsNCmV4dGVybiBfX20xMjhpIF9tbV9sb2FkdV9zaTEyOChfX20xMjhpIGNvbnN0Kl9QKTsN
CmV4dGVybiBfX20xMjhpIF9tbV9sb2FkbF9lcGk2NChfX20xMjhpIGNvbnN0Kl9QKTsNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMzUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXGVtbWludHJpbi5oIg0KZXh0ZXJuIF9fbTEyOGkgX21tX3NldF9lcGk2NHgo
X19pbnQ2NCBfSTEsX19pbnQ2NCBfSTApOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3NldF9lcGkzMihp
bnQgX0kzLCBpbnQgX0kyLCBpbnQgX0kxLCBpbnQgX0kwKTsNCmV4dGVybiBfX20xMjhpIF9tbV9z
ZXRfZXBpMTYoc2hvcnQgX1c3LCBzaG9ydCBfVzYsIHNob3J0IF9XNSwgc2hvcnQgX1c0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBfVzMsIHNob3J0IF9XMiwgc2hvcnQgX1cx
LCBzaG9ydCBfVzApOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3NldF9lcGk4KGNoYXIgX0IxNSwgY2hh
ciBfQjE0LCBjaGFyIF9CMTMsIGNoYXIgX0IxMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIF9CMTEsIGNoYXIgX0IxMCwgY2hhciBfQjksIGNoYXIgX0I4LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgX0I3LCBjaGFyIF9CNiwgY2hhciBfQjUsIGNoYXIgX0I0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX0IzLCBjaGFyIF9CMiwgY2hhciBfQjEs
IGNoYXIgX0IwKTsNCg0KDQojbGluZSAzNjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcZW1taW50cmluLmgiDQpleHRlcm4gX19tMTI4aSBfbW1fc2V0
MV9lcGk2NHgoX19pbnQ2NCBpKTsNCmV4dGVybiBfX20xMjhpIF9tbV9zZXQxX2VwaTMyKGludCBf
SSk7DQpleHRlcm4gX19tMTI4aSBfbW1fc2V0MV9lcGkxNihzaG9ydCBfVyk7DQpleHRlcm4gX19t
MTI4aSBfbW1fc2V0MV9lcGk4KGNoYXIgX0IpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3NldGxfZXBp
NjQoX19tMTI4aSBfUSk7DQoNCg0KI2xpbmUgMzY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGVtbWludHJpbi5oIg0KZXh0ZXJuIF9fbTEyOGkgX21t
X3NldHJfZXBpMzIoaW50IF9JMCwgaW50IF9JMSwgaW50IF9JMiwgaW50IF9JMyk7DQpleHRlcm4g
X19tMTI4aSBfbW1fc2V0cl9lcGkxNihzaG9ydCBfVzAsIHNob3J0IF9XMSwgc2hvcnQgX1cyLCBz
aG9ydCBfVzMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBfVzQsIHNob3J0
IF9XNSwgc2hvcnQgX1c2LCBzaG9ydCBfVzcpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3NldHJfZXBp
OChjaGFyIF9CMTUsIGNoYXIgX0IxNCwgY2hhciBfQjEzLCBjaGFyIF9CMTIsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgX0IxMSwgY2hhciBfQjEwLCBjaGFyIF9COSwgY2hhciBf
QjgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX0I3LCBjaGFyIF9CNiwgY2hh
ciBfQjUsIGNoYXIgX0I0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9CMywg
Y2hhciBfQjIsIGNoYXIgX0IxLCBjaGFyIF9CMCk7DQpleHRlcm4gX19tMTI4aSBfbW1fc2V0emVy
b19zaTEyOCh2b2lkKTsNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCBfbW1fc3RvcmVfc2kxMjgoX19t
MTI4aSAqX1AsIF9fbTEyOGkgX0IpOw0KZXh0ZXJuIHZvaWQgX21tX3N0b3JldV9zaTEyOChfX20x
MjhpICpfUCwgX19tMTI4aSBfQik7DQpleHRlcm4gdm9pZCBfbW1fc3RvcmVsX2VwaTY0KF9fbTEy
OGkgKl9QLCBfX20xMjhpIF9RKTsNCmV4dGVybiB2b2lkIF9tbV9tYXNrbW92ZXVfc2kxMjgoX19t
MTI4aSBfRCwgX19tMTI4aSBfTiwgY2hhciAqX1ApOw0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjhp
IF9tbV9tb3ZlX2VwaTY0KF9fbTEyOGkgX1EpOw0KDQoNCg0KI2xpbmUgMzk2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGVtbWludHJpbi5oIg0KDQoN
Cg0KDQoNCmV4dGVybiB2b2lkIF9tbV9zdHJlYW1fcGQoZG91YmxlICpfRHAsIF9fbTEyOGQgX0Ep
Ow0KZXh0ZXJuIHZvaWQgX21tX3N0cmVhbV9zaTEyOChfX20xMjhpICpfUCwgX19tMTI4aSBfQSk7
DQpleHRlcm4gdm9pZCBfbW1fY2xmbHVzaCh2b2lkIGNvbnN0Kl9QKTsNCmV4dGVybiB2b2lkIF9t
bV9sZmVuY2Uodm9pZCk7DQpleHRlcm4gdm9pZCBfbW1fbWZlbmNlKHZvaWQpOw0KZXh0ZXJuIHZv
aWQgX21tX3N0cmVhbV9zaTMyKGludCAqX1AsIGludCBfSSk7DQpleHRlcm4gdm9pZCBfbW1fcGF1
c2Uodm9pZCk7DQoNCg0KDQoNCg0KZXh0ZXJuIGRvdWJsZSBfbW1fY3Z0c2RfZjY0KF9fbTEyOGQg
X0EpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4ICBfbW1fY2FzdHBkX3BzKF9fbTEyOGQp
Ow0KZXh0ZXJuIF9fbTEyOGkgX21tX2Nhc3RwZF9zaTEyOChfX20xMjhkKTsNCmV4dGVybiBfX20x
MjhkIF9tbV9jYXN0cHNfcGQoX19tMTI4KTsNCmV4dGVybiBfX20xMjhpIF9tbV9jYXN0cHNfc2kx
MjgoX19tMTI4KTsNCmV4dGVybiBfX20xMjggIF9tbV9jYXN0c2kxMjhfcHMoX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4ZCBfbW1fY2FzdHNpMTI4X3BkKF9fbTEyOGkpOw0KDQoNCg0KDQoNCg0KZXh0
ZXJuIF9faW50NjQgX21tX2N2dHNkX3NpNjQoX19tMTI4ZCk7DQpleHRlcm4gX19pbnQ2NCBfbW1f
Y3Z0dHNkX3NpNjQoX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fY3Z0c2k2NF9zZChfX20x
MjhkLCBfX2ludDY0KTsNCmV4dGVybiBfX20xMjhpIF9tbV9jdnRzaTY0X3NpMTI4KF9faW50NjQp
Ow0KZXh0ZXJuIF9faW50NjQgX21tX2N2dHNpMTI4X3NpNjQoX19tMTI4aSk7DQoNCg0KI2xpbmUg
NDQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGVt
bWludHJpbi5oIg0KDQoNCn07IA0KI2xpbmUgNDQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGVtbWludHJpbi5oIg0KDQojbGluZSA0NDcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZW1taW50cmluLmgi
DQojbGluZSA0NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcZW1taW50cmluLmgiDQojbGluZSA0NDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZW1taW50cmluLmgiDQojbGluZSAzNSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxwbW1pbnRyaW4uaCINCg0K
IA0KIA0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCiANCiANCg0KDQpleHRlcm4g
IkMiIHsgDQogIA0KI2xpbmUgNjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxccG1taW50cmluLmgiDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOCBfbW1f
YWRkc3ViX3BzKF9fbTEyOCAsIF9fbTEyOCApOw0KZXh0ZXJuIF9fbTEyOCBfbW1faGFkZF9wcyhf
X20xMjggLCBfX20xMjggKTsNCmV4dGVybiBfX20xMjggX21tX2hzdWJfcHMoX19tMTI4ICwgX19t
MTI4ICk7DQpleHRlcm4gX19tMTI4IF9tbV9tb3ZlaGR1cF9wcyhfX20xMjggKTsNCmV4dGVybiBf
X20xMjggX21tX21vdmVsZHVwX3BzKF9fbTEyOCApOw0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjhk
IF9tbV9hZGRzdWJfcGQoX19tMTI4ZCAsIF9fbTEyOGQgKTsNCmV4dGVybiBfX20xMjhkIF9tbV9o
YWRkX3BkKF9fbTEyOGQgLCBfX20xMjhkICk7DQpleHRlcm4gX19tMTI4ZCBfbW1faHN1Yl9wZChf
X20xMjhkICwgX19tMTI4ZCApOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2xvYWRkdXBfcGQoZG91Ymxl
IGNvbnN0ICogKTsNCmV4dGVybiBfX20xMjhkIF9tbV9tb3ZlZHVwX3BkKF9fbTEyOGQgKTsNCg0K
DQoNCg0KZXh0ZXJuIF9fbTEyOGkgX21tX2xkZHF1X3NpMTI4KF9fbTEyOGkgY29uc3QgKiApOw0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCBfbW1fbW9uaXRvcih2b2lkIGNvbnN0ICogLCB1bnNp
Z25lZCAsIHVuc2lnbmVkICk7DQoNCg0KDQoNCmV4dGVybiB2b2lkIF9tbV9td2FpdCh1bnNpZ25l
ZCAsIHVuc2lnbmVkICk7DQoNCg0KfTsgDQojbGluZSAxMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxccG1taW50cmluLmgiDQoNCiNsaW5lIDEwNSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxwbW1pbnRy
aW4uaCINCiNsaW5lIDEwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxwbW1pbnRyaW4uaCINCiNsaW5lIDEwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxwbW1pbnRyaW4uaCINCiNsaW5lIDI2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHRtbWludHJpbi5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAzNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0bW1pbnRyaW4uaCINCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgZXh0ZXJuIF9fbTEyOGkgX21t
X2hhZGRfZXBpMTYgKF9fbTEyOGksIF9fbTEyOGkpOw0KICAgIGV4dGVybiBfX20xMjhpIF9tbV9o
YWRkX2VwaTMyIChfX20xMjhpLCBfX20xMjhpKTsNCiAgICBleHRlcm4gX19tMTI4aSBfbW1faGFk
ZHNfZXBpMTYgKF9fbTEyOGksIF9fbTEyOGkpOw0KDQoNCg0KDQoNCiNsaW5lIDU0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHRtbWludHJpbi5oIg0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICBleHRlcm4g
X19tMTI4aSBfbW1faHN1Yl9lcGkxNiAoX19tMTI4aSwgX19tMTI4aSk7DQogICAgZXh0ZXJuIF9f
bTEyOGkgX21tX2hzdWJfZXBpMzIgKF9fbTEyOGksIF9fbTEyOGkpOw0KICAgIGV4dGVybiBfX20x
MjhpIF9tbV9oc3Vic19lcGkxNiAoX19tMTI4aSwgX19tMTI4aSk7DQoNCg0KDQoNCg0KI2xpbmUg
NzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdG1t
aW50cmluLmgiDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCg0KICAgIGV4dGVybiBfX20xMjhpIF9tbV9tYWRkdWJzX2VwaTE2IChfX20xMjhpLCBfX20x
MjhpKTsNCg0KDQoNCiNsaW5lIDg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHRtbWludHJpbi5oIg0KDQogICAgDQogICAgDQoNCiAgICBleHRlcm4g
X19tMTI4aSBfbW1fbXVsaHJzX2VwaTE2IChfX20xMjhpLCBfX20xMjhpKTsNCg0KDQoNCiNsaW5l
IDk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHRt
bWludHJpbi5oIg0KDQogICAgDQogICAgDQoNCiAgICBleHRlcm4gX19tMTI4aSBfbW1fc2h1ZmZs
ZV9lcGk4IChfX20xMjhpLCBfX20xMjhpKTsNCg0KDQoNCiNsaW5lIDEwNSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0bW1pbnRyaW4uaCINCg0KICAg
IA0KICAgIA0KDQogICAgZXh0ZXJuIF9fbTEyOGkgX21tX3NpZ25fZXBpOCAoX19tMTI4aSwgX19t
MTI4aSk7DQogICAgZXh0ZXJuIF9fbTEyOGkgX21tX3NpZ25fZXBpMTYgKF9fbTEyOGksIF9fbTEy
OGkpOw0KICAgIGV4dGVybiBfX20xMjhpIF9tbV9zaWduX2VwaTMyIChfX20xMjhpLCBfX20xMjhp
KTsNCg0KDQoNCg0KDQojbGluZSAxMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdG1taW50cmluLmgiDQoNCiAgICANCiAgICANCg0KICAgIGV4dGVy
biBfX20xMjhpIF9tbV9hbGlnbnJfZXBpOCAoX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCg0KDQoN
CiNsaW5lIDEyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx0bW1pbnRyaW4uaCINCg0KICAgIA0KICAgIA0KDQogICAgZXh0ZXJuIF9fbTEyOGkgX21t
X2Fic19lcGk4IChfX20xMjhpKTsNCiAgICBleHRlcm4gX19tMTI4aSBfbW1fYWJzX2VwaTE2IChf
X20xMjhpKTsNCiAgICBleHRlcm4gX19tMTI4aSBfbW1fYWJzX2VwaTMyIChfX20xMjhpKTsNCg0K
DQoNCg0KDQojbGluZSAxNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcdG1taW50cmluLmgiDQoNCg0KfTsNCiNsaW5lIDE0NCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0bW1pbnRyaW4uaCINCg0KI2xp
bmUgMTQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHRtbWludHJpbi5oIg0KI2xpbmUgMTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHRtbWludHJpbi5oIg0KI2xpbmUgMTQ4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHRtbWludHJpbi5oIg0KI2xpbmUg
MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc21t
aW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiB7DQojbGluZSA4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxzbW1pbnRyaW4uaCINCg0KICAgICAgICANCiAgICAgICAgDQoNCiAgICAg
ICAgZXh0ZXJuIF9fbTEyOGkgX21tX2JsZW5kX2VwaTE2IChfX20xMjhpLCBfX20xMjhpLCBjb25z
dCBpbnQgKTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX2JsZW5kdl9lcGk4IChfX20xMjhp
LCBfX20xMjhpLCBfX20xMjhpIG1hc2spOw0KDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAg
ICBleHRlcm4gX19tMTI4ICBfbW1fYmxlbmRfcHMgKF9fbTEyOCwgX19tMTI4LCBjb25zdCBpbnQg
KTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOCAgX21tX2JsZW5kdl9wcyhfX20xMjgsIF9fbTEyOCwg
X19tMTI4ICk7DQoNCiAgICAgICAgDQogICAgICAgIA0KDQogICAgICAgIGV4dGVybiBfX20xMjhk
IF9tbV9ibGVuZF9wZCAoX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50ICk7DQogICAgICAgIGV4
dGVybiBfX20xMjhkIF9tbV9ibGVuZHZfcGQoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCApOw0K
DQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICBleHRlcm4gX19tMTI4ICBfbW1fZHBfcHMo
X19tMTI4LCBfX20xMjgsIGNvbnN0IGludCApOw0KICAgICAgICBleHRlcm4gX19tMTI4ZCBfbW1f
ZHBfcGQoX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50ICk7DQoNCiAgICAgICAgDQogICAgICAg
IA0KDQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9jbXBlcV9lcGk2NChfX20xMjhpLCBfX20x
MjhpKTsNCg0KICAgICAgICANCg0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fbWluX2VwaTgg
KF9fbTEyOGksIF9fbTEyOGkpOw0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fbWF4X2VwaTgg
KF9fbTEyOGksIF9fbTEyOGkpOw0KDQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9taW5fZXB1
MTYoX19tMTI4aSwgX19tMTI4aSk7DQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9tYXhfZXB1
MTYoX19tMTI4aSwgX19tMTI4aSk7DQoNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX21pbl9l
cGkzMihfX20xMjhpLCBfX20xMjhpKTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX21heF9l
cGkzMihfX20xMjhpLCBfX20xMjhpKTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX21pbl9l
cHUzMihfX20xMjhpLCBfX20xMjhpKTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX21heF9l
cHUzMihfX20xMjhpLCBfX20xMjhpKTsNCg0KICAgICAgICANCiAgICAgICAgDQoNCiAgICAgICAg
ZXh0ZXJuIF9fbTEyOGkgX21tX211bGxvX2VwaTMyKF9fbTEyOGksIF9fbTEyOGkpOw0KDQogICAg
ICAgIA0KICAgICAgICANCg0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fbXVsX2VwaTMyKF9f
bTEyOGksIF9fbTEyOGkpOw0KDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICBleHRlcm4g
aW50IF9tbV90ZXN0el9zaTEyOChfX20xMjhpICwgX19tMTI4aSApOw0KDQogICAgICAgIA0KICAg
ICAgICANCg0KICAgICAgICBleHRlcm4gaW50IF9tbV90ZXN0Y19zaTEyOChfX20xMjhpICwgX19t
MTI4aSApOw0KDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQoNCiAgICAgICAgZXh0ZXJu
IGludCBfbW1fdGVzdG56Y19zaTEyOChfX20xMjhpICwgX19tMTI4aSApOw0KDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICBleHRlcm4g
X19tMTI4IF9tbV9pbnNlcnRfcHMoX19tMTI4ICwgX19tMTI4ICwgY29uc3QgaW50ICk7DQoNCiAg
ICAgICAgDQoNCg0KDQoNCiAgICAgICAgDQogICAgICAgIA0KDQogICAgICAgIGV4dGVybiBpbnQg
X21tX2V4dHJhY3RfcHMoX19tMTI4ICwgY29uc3QgaW50ICk7DQoNCiAgICAgICAgDQogICAgICAg
IA0KDQoNCg0KDQogICAgICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgIA0KICAgICAg
ICANCg0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1faW5zZXJ0X2VwaTggKF9fbTEyOGkgLCBp
bnQgLCBjb25zdCBpbnQgKTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX2luc2VydF9lcGkz
MihfX20xMjhpICwgaW50ICwgY29uc3QgaW50ICk7DQoNCg0KICAgICAgICBleHRlcm4gX19tMTI4
aSBfbW1faW5zZXJ0X2VwaTY0KF9fbTEyOGkgLCBfX2ludDY0ICwgY29uc3QgaW50ICk7DQojbGlu
ZSAxOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
c21taW50cmluLmgiDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICBleHRlcm4gaW50ICAg
X21tX2V4dHJhY3RfZXBpOCAoX19tMTI4aSAsIGNvbnN0IGludCApOw0KICAgICAgICBleHRlcm4g
aW50ICAgX21tX2V4dHJhY3RfZXBpMzIoX19tMTI4aSAsIGNvbnN0IGludCApOw0KDQoNCiAgICAg
ICAgZXh0ZXJuIF9faW50NjQgX21tX2V4dHJhY3RfZXBpNjQoX19tMTI4aSAsIGNvbnN0IGludCAp
Ow0KI2xpbmUgMjAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHNtbWludHJpbi5oIg0KDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICBleHRl
cm4gX19tMTI4aSBfbW1fbWlucG9zX2VwdTE2KF9fbTEyOGkpOw0KDQogICAgICAgIA0KDQogICAg
ICAgIGV4dGVybiBfX20xMjhkIF9tbV9yb3VuZF9wZChfX20xMjhkICwgaW50ICk7DQogICAgICAg
IGV4dGVybiBfX20xMjhkIF9tbV9yb3VuZF9zZChfX20xMjhkICwgX19tMTI4ZCAsIGludCApOw0K
DQogICAgICAgIA0KDQogICAgICAgIGV4dGVybiBfX20xMjggIF9tbV9yb3VuZF9wcyhfX20xMjgg
ICwgaW50ICk7DQogICAgICAgIGV4dGVybiBfX20xMjggIF9tbV9yb3VuZF9zcyhfX20xMjggLCBf
X20xMjggICwgaW50ICk7DQoNCiAgICAgICAgDQoNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21t
X2N2dGVwaThfZXBpMzIgKF9fbTEyOGkpOw0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fY3Z0
ZXBpMTZfZXBpMzIoX19tMTI4aSk7DQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9jdnRlcGk4
X2VwaTY0IChfX20xMjhpKTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX2N2dGVwaTMyX2Vw
aTY0KF9fbTEyOGkpOw0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fY3Z0ZXBpMTZfZXBpNjQo
X19tMTI4aSk7DQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9jdnRlcGk4X2VwaTE2IChfX20x
MjhpKTsNCg0KICAgICAgICANCg0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fY3Z0ZXB1OF9l
cGkzMiAoX19tMTI4aSk7DQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9jdnRlcHUxNl9lcGkz
MihfX20xMjhpKTsNCiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX2N2dGVwdThfZXBpNjQgKF9f
bTEyOGkpOw0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fY3Z0ZXB1MzJfZXBpNjQoX19tMTI4
aSk7DQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9jdnRlcHUxNl9lcGk2NChfX20xMjhpKTsN
CiAgICAgICAgZXh0ZXJuIF9fbTEyOGkgX21tX2N2dGVwdThfZXBpMTYgKF9fbTEyOGkpOw0KDQoN
CiAgICAgICAgDQogICAgICAgIA0KDQogICAgICAgIGV4dGVybiBfX20xMjhpIF9tbV9wYWNrdXNf
ZXBpMzIoX19tMTI4aSwgX19tMTI4aSk7DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICAN
Cg0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fbXBzYWRid19lcHU4KF9fbTEyOGkgLCBfX20x
MjhpICwgY29uc3QgaW50ICk7DQoNCiAgICAgICAgDQoNCg0KDQoNCg0KI2xpbmUgMjU2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNtbWludHJpbi5o
Ig0KICAgICAgICBleHRlcm4gX19tMTI4aSBfbW1fc3RyZWFtX2xvYWRfc2kxMjgoY29uc3QgX19t
MTI4aSopOw0KI2xpbmUgMjU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHNtbWludHJpbi5oIg0KDQoNCn07IA0KI2xpbmUgMjYyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHNtbWludHJpbi5oIg0KDQoj
bGluZSAyNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcc21taW50cmluLmgiDQojbGluZSAyNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcc21taW50cmluLmgiDQojbGluZSAyNjYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc21taW50cmluLmgiDQojbGlu
ZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxu
bW1pbnRyaW4uaCINCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMzggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbm1taW50cmluLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgZXh0ZXJuIF9fbTEyOGkgX21tX2NtcGlzdHJt
IChfX20xMjhpICwgX19tMTI4aSAsIGNvbnN0IGludCApOw0KICAgIGV4dGVybiBpbnQgICAgIF9t
bV9jbXBpc3RyaSAoX19tMTI4aSAsIF9fbTEyOGkgLCBjb25zdCBpbnQgKTsNCg0KICAgIGV4dGVy
biBfX20xMjhpIF9tbV9jbXBlc3RybSAoX19tMTI4aSAsIGludCAsIF9fbTEyOGkgLCBpbnQgLCBj
b25zdCBpbnQgKTsNCiAgICBleHRlcm4gaW50ICAgICBfbW1fY21wZXN0cmkgKF9fbTEyOGkgLCBp
bnQgLCBfX20xMjhpICwgaW50ICwgY29uc3QgaW50ICk7DQoNCg0KDQoNCg0KICAgIGV4dGVybiBp
bnQgICAgIF9tbV9jbXBpc3RyeiAoX19tMTI4aSAsIF9fbTEyOGkgLCBjb25zdCBpbnQgKTsNCiAg
ICBleHRlcm4gaW50ICAgICBfbW1fY21waXN0cmMgKF9fbTEyOGkgLCBfX20xMjhpICwgY29uc3Qg
aW50ICk7DQogICAgZXh0ZXJuIGludCAgICAgX21tX2NtcGlzdHJzIChfX20xMjhpICwgX19tMTI4
aSAsIGNvbnN0IGludCApOw0KICAgIGV4dGVybiBpbnQgICAgIF9tbV9jbXBpc3RybyAoX19tMTI4
aSAsIF9fbTEyOGkgLCBjb25zdCBpbnQgKTsNCiAgICBleHRlcm4gaW50ICAgICBfbW1fY21waXN0
cmEgKF9fbTEyOGkgLCBfX20xMjhpICwgY29uc3QgaW50ICk7DQoNCiAgICBleHRlcm4gaW50ICAg
ICBfbW1fY21wZXN0cnogKF9fbTEyOGkgLCBpbnQgLCBfX20xMjhpICwgaW50ICwgY29uc3QgaW50
ICk7DQogICAgZXh0ZXJuIGludCAgICAgX21tX2NtcGVzdHJjIChfX20xMjhpICwgaW50ICwgX19t
MTI4aSAsIGludCAsIGNvbnN0IGludCApOw0KICAgIGV4dGVybiBpbnQgICAgIF9tbV9jbXBlc3Ry
cyAoX19tMTI4aSAsIGludCAsIF9fbTEyOGkgLCBpbnQgLCBjb25zdCBpbnQgKTsNCiAgICBleHRl
cm4gaW50ICAgICBfbW1fY21wZXN0cm8gKF9fbTEyOGkgLCBpbnQgLCBfX20xMjhpICwgaW50ICwg
Y29uc3QgaW50ICk7DQogICAgZXh0ZXJuIGludCAgICAgX21tX2NtcGVzdHJhIChfX20xMjhpICwg
aW50ICwgX19tMTI4aSAsIGludCAsIGNvbnN0IGludCApOw0KDQoNCg0KDQoNCg0KICAgIGV4dGVy
biBfX20xMjhpIF9tbV9jbXBndF9lcGk2NChfX20xMjhpICwgX19tMTI4aSApOw0KDQoNCg0KDQoN
CiAgICBleHRlcm4gaW50IF9tbV9wb3BjbnRfdTMyKHVuc2lnbmVkIGludCApOw0KDQoNCiAgICBl
eHRlcm4gX19pbnQ2NCBfbW1fcG9wY250X3U2NCh1bnNpZ25lZCBfX2ludDY0ICk7DQojbGluZSAx
MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbm1t
aW50cmluLmgiDQoNCg0KDQoNCg0KICAgIGV4dGVybiB1bnNpZ25lZCBpbnQgX21tX2NyYzMyX3U4
ICh1bnNpZ25lZCBpbnQgLCB1bnNpZ25lZCBjaGFyICk7DQogICAgZXh0ZXJuIHVuc2lnbmVkIGlu
dCBfbW1fY3JjMzJfdTE2KHVuc2lnbmVkIGludCAsIHVuc2lnbmVkIHNob3J0ICk7DQogICAgZXh0
ZXJuIHVuc2lnbmVkIGludCBfbW1fY3JjMzJfdTMyKHVuc2lnbmVkIGludCAsIHVuc2lnbmVkIGlu
dCApOw0KDQoNCiAgICBleHRlcm4gdW5zaWduZWQgX19pbnQ2NCBfbW1fY3JjMzJfdTY0KHVuc2ln
bmVkIF9faW50NjQgLCB1bnNpZ25lZCBfX2ludDY0ICk7DQojbGluZSAxMzMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbm1taW50cmluLmgiDQoNCg0K
fTsgDQojbGluZSAxMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcbm1taW50cmluLmgiDQoNCiNsaW5lIDEzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxubW1pbnRyaW4uaCINCiNsaW5lIDE0MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxubW1pbnRyaW4u
aCINCiNsaW5lIDE0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxubW1pbnRyaW4uaCINCiNsaW5lIDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHdtbWludHJpbi5oIg0KDQoNCg0KZXh0ZXJuICJDIiB7
DQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx3bW1pbnRyaW4uaCINCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4aSBfbW1fYWVzZGVjX3Np
MTI4KF9fbTEyOGkgLCBfX20xMjhpICk7DQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOGkgX21tX2Fl
c2RlY2xhc3Rfc2kxMjgoX19tMTI4aSAsIF9fbTEyOGkgKTsNCg0KDQoNCg0KDQpleHRlcm4gX19t
MTI4aSBfbW1fYWVzZW5jX3NpMTI4KF9fbTEyOGkgLCBfX20xMjhpICk7DQoNCg0KDQoNCg0KZXh0
ZXJuIF9fbTEyOGkgX21tX2Flc2VuY2xhc3Rfc2kxMjgoX19tMTI4aSAsIF9fbTEyOGkgKTsNCg0K
DQoNCg0KDQpleHRlcm4gX19tMTI4aSBfbW1fYWVzaW1jX3NpMTI4KF9fbTEyOGkgKTsNCg0KDQoN
Cg0KDQoNCmV4dGVybiBfX20xMjhpIF9tbV9hZXNrZXlnZW5hc3Npc3Rfc2kxMjgoX19tMTI4aSAs
IGNvbnN0IGludCApOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4aSBfbW1fY2xtdWxlcGk2
NF9zaTEyOChfX20xMjhpICwgX19tMTI4aSAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludCApOw0KDQoNCg0KfTsgDQojbGluZSA4OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx3bW1pbnRyaW4uaCIN
Cg0KI2xpbmUgOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcd21taW50cmluLmgiDQojbGluZSA5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx3bW1pbnRyaW4uaCINCiNsaW5lIDkyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHdtbWludHJpbi5oIg0KI2xp
bmUgMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
aW1taW50cmluLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbW1pbnRyaW4uaCINCg0KDQoNCg0K
dHlwZWRlZiB1bmlvbiBfX2RlY2xzcGVjKGludHJpbl90eXBlKSBfX2RlY2xzcGVjKGFsaWduKDMy
KSkgX19tMjU2IHsNCiAgICBmbG9hdCBtMjU2X2YzMls4XTsNCn0gX19tMjU2Ow0KDQp0eXBlZGVm
IHN0cnVjdCBfX2RlY2xzcGVjKGludHJpbl90eXBlKSBfX2RlY2xzcGVjKGFsaWduKDMyKSkgX19t
MjU2ZCB7DQogICAgZG91YmxlIG0yNTZkX2Y2NFs0XTsNCn0gX19tMjU2ZDsNCg0KdHlwZWRlZiB1
bmlvbiAgX19kZWNsc3BlYyhpbnRyaW5fdHlwZSkgX19kZWNsc3BlYyhhbGlnbigzMikpIF9fbTI1
Nmkgew0KICAgIF9faW50OCAgICAgICAgICAgICAgbTI1NmlfaThbMzJdOw0KICAgIF9faW50MTYg
ICAgICAgICAgICAgbTI1NmlfaTE2WzE2XTsNCiAgICBfX2ludDMyICAgICAgICAgICAgIG0yNTZp
X2kzMls4XTsNCiAgICBfX2ludDY0ICAgICAgICAgICAgIG0yNTZpX2k2NFs0XTsNCiAgICB1bnNp
Z25lZCBfX2ludDggICAgIG0yNTZpX3U4WzMyXTsNCiAgICB1bnNpZ25lZCBfX2ludDE2ICAgIG0y
NTZpX3UxNlsxNl07DQogICAgdW5zaWduZWQgX19pbnQzMiAgICBtMjU2aV91MzJbOF07DQogICAg
dW5zaWduZWQgX19pbnQ2NCAgICBtMjU2aV91NjRbNF07DQp9IF9fbTI1Nmk7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNs
IF9tbTI1Nl9hZGRfcGQoX19tMjU2ZCwgX19tMjU2ZCk7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gX19tMjU2IF9fY2RlY2wgX21tMjU2X2FkZF9wcyhfX20yNTYsIF9fbTI1Nik7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9hZGRzdWJfcGQo
X19tMjU2ZCwgX19tMjU2ZCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2
IF9fY2RlY2wgX21tMjU2X2FkZHN1Yl9wcyhfX20yNTYsIF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfYW5kX3BkKF9fbTI1NmQsIF9fbTI1NmQp
Ow0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYgX19jZGVjbCBfbW0yNTZfYW5kX3BzKF9f
bTI1NiwgX19tMjU2KTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9t
bTI1Nl9hbmRub3RfcGQoX19tMjU2ZCwgX19tMjU2ZCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
IF9fbTI1NiBfX2NkZWNsIF9tbTI1Nl9hbmRub3RfcHMoX19tMjU2LCBfX20yNTYpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9ibGVuZF9w
ZChfX20yNTZkLCBfX20yNTZkLCBjb25zdCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gX19tMjU2IF9fY2RlY2wgX21tMjU2X2JsZW5kX3BzKF9fbTI1NiwgX19tMjU2LCBj
b25zdCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0y
NTZfYmxlbmR2X3BkKF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuIF9fbTI1NiBfX2NkZWNsIF9tbTI1Nl9ibGVuZHZfcHMoX19tMjU2LCBfX20yNTYs
IF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZf
ZGl2X3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYg
X19jZGVjbCBfbW0yNTZfZGl2X3BzKF9fbTI1NiwgX19tMjU2KTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gX19tMjU2IF9fY2RlY2wgX21tMjU2X2RwX3BzKF9fbTI1NiwgX19t
MjU2LCBjb25zdCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wg
X21tMjU2X2hhZGRfcGQoX19tMjU2ZCwgX19tMjU2ZCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
IF9fbTI1NiBfX2NkZWNsIF9tbTI1Nl9oYWRkX3BzKF9fbTI1NiwgX19tMjU2KTsNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9oc3ViX3BkKF9fbTI1NmQsIF9f
bTI1NmQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYgX19jZGVjbCBfbW0yNTZfaHN1
Yl9wcyhfX20yNTYsIF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19j
ZGVjbCBfbW0yNTZfbWF4X3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiBfX20yNTYgX19jZGVjbCBfbW0yNTZfbWF4X3BzKF9fbTI1NiwgX19tMjU2KTsNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9taW5fcGQoX19tMjU2ZCwg
X19tMjU2ZCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NiBfX2NkZWNsIF9tbTI1Nl9t
aW5fcHMoX19tMjU2LCBfX20yNTYpOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQg
X19jZGVjbCBfbW0yNTZfbXVsX3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuIF9fbTI1NiBfX2NkZWNsIF9tbTI1Nl9tdWxfcHMoX19tMjU2LCBfX20yNTYpOw0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X29yX3BkKF9fbTI1
NmQsIF9fbTI1NmQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYgX19jZGVjbCBfbW0y
NTZfb3JfcHMoX19tMjU2LCBfX20yNTYpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBf
X20yNTZkIF9fY2RlY2wgX21tMjU2X3NodWZmbGVfcGQoX19tMjU2ZCwgX19tMjU2ZCwgY29uc3Qg
aW50KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYgX19jZGVjbCBfbW0y
NTZfc2h1ZmZsZV9wcyhfX20yNTYsIF9fbTI1NiwgY29uc3QgaW50KTsNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9zdWJfcGQoX19tMjU2ZCwgX19tMjU2ZCk7
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2IF9fY2RlY2wgX21tMjU2X3N1Yl9wcyhf
X20yNTYsIF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBf
bW0yNTZfeG9yX3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBf
X20yNTYgX19jZGVjbCBfbW0yNTZfeG9yX3BzKF9fbTI1NiwgX19tMjU2KTsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjhkIF9fY2RlY2wgX21tX2NtcF9wZChfX20x
MjhkLCBfX20xMjhkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZf
Y21wX3BkKF9fbTI1NmQsIF9fbTI1NmQsIGNvbnN0IGludCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gX19tMTI4IF9fY2RlY2wgX21tX2NtcF9wcyhfX20xMjgsIF9fbTEy
OCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTYgX19jZGVjbCBfbW0yNTZfY21wX3BzKF9fbTI1
NiwgX19tMjU2LCBjb25zdCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9f
bTEyOGQgX19jZGVjbCBfbW1fY21wX3NkKF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCk7DQoN
Cg0KDQoNCg0KZXh0ZXJuIGludCBfX2NkZWNsIF9tbV9jb21pX3NkKF9fbTEyOGQsIF9fbTEyOGQs
IGNvbnN0IGludCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4IF9fY2Rl
Y2wgX21tX2NtcF9zcyhfX20xMjgsIF9fbTEyOCwgY29uc3QgaW50KTsNCg0KDQoNCg0KDQpleHRl
cm4gaW50IF9fY2RlY2wgX21tX2NvbWlfc3MoX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCk7DQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfY3Z0ZXBpMzJfcGQo
X19tMTI4aSk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW0yNTZf
Y3Z0ZXBpMzJfcHMoX19tMjU2aSk7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4ICBf
X2NkZWNsIF9tbTI1Nl9jdnRwZF9wcyhfX20yNTZkKTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
X19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jdnRwc19lcGkzMihfX20yNTYpOw0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfY3Z0cHNfcGQoX19tMTI4KTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tMjU2X2N2dHRw
ZF9lcGkzMihfX20yNTZkKTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4aSBfX2NkZWNs
IF9tbTI1Nl9jdnRwZF9lcGkzMihfX20yNTZkKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2N2dHRwc19lcGkzMihfX20yNTYpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjE0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGltbWlu
dHJpbi5oIg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20xMjggIF9fY2RlY2wgX21tMjU2X2V4
dHJhY3RmMTI4X3BzKF9fbTI1NiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhkIF9fY2RlY2wg
X21tMjU2X2V4dHJhY3RmMTI4X3BkKF9fbTI1NmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4
aSBfX2NkZWNsIF9tbTI1Nl9leHRyYWN0ZjEyOF9zaTI1NihfX20yNTZpLCBjb25zdCBpbnQpOw0K
DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW0yNTZfemVyb2FsbCh2b2lkKTsNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW0yNTZfemVyb3VwcGVyKHZvaWQpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW0yNTZfcGVybXV0ZXZh
cl9wcyhfX20yNTYsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1fcGVybXV0
ZXZhcl9wcyhfX20xMjgsIF9fbTEyOGkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1
NiAgX19jZGVjbCBfbW0yNTZfcGVybXV0ZV9wcyhfX20yNTYsIGludCk7DQpleHRlcm4gX19tMTI4
ICBfX2NkZWNsIF9tbV9wZXJtdXRlX3BzKF9fbTEyOCwgaW50KTsNCg0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X3Blcm11dGV2YXJfcGQoX19tMjU2ZCwgX19t
MjU2aSk7DQpleHRlcm4gX19tMTI4ZCBfX2NkZWNsIF9tbV9wZXJtdXRldmFyX3BkKF9fbTEyOGQs
IF9fbTEyOGkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0y
NTZfcGVybXV0ZV9wZChfX20yNTZkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBfbW1f
cGVybXV0ZV9wZChfX20xMjhkLCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYg
IF9fY2RlY2wgX21tMjU2X3Blcm11dGUyZjEyOF9wcyhfX20yNTYsIF9fbTI1NiwgaW50KTsNCmV4
dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X3Blcm11dGUyZjEyOF9wZChfX20yNTZkLCBfX20y
NTZkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfcGVybXV0ZTJmMTI4X3Np
MjU2KF9fbTI1NmksIF9fbTI1NmksIGludCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1
NiAgX19jZGVjbCBfbW0yNTZfYnJvYWRjYXN0X3NzKGZsb2F0IGNvbnN0ICopOw0KZXh0ZXJuIF9f
bTEyOCAgX19jZGVjbCBfbW1fYnJvYWRjYXN0X3NzKGZsb2F0IGNvbnN0ICopOw0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9icm9hZGNhc3Rfc2QoZG91YmxlIGNv
bnN0ICopOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTI1Nl9icm9h
ZGNhc3RfcHMoX19tMTI4IGNvbnN0ICopOw0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZf
YnJvYWRjYXN0X3BkKF9fbTEyOGQgY29uc3QgKik7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
X19tMjU2ICBfX2NkZWNsIF9tbTI1Nl9pbnNlcnRmMTI4X3BzKF9fbTI1NiwgX19tMTI4LCBpbnQp
Ow0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfaW5zZXJ0ZjEyOF9wZChfX20yNTZkLCBf
X20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfaW5zZXJ0ZjEyOF9z
aTI1NihfX20yNTZpLCBfX20xMjhpLCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20y
NTZkIF9fY2RlY2wgX21tMjU2X2xvYWRfcGQoZG91YmxlIGNvbnN0ICopOw0KZXh0ZXJuIHZvaWQg
ICAgX19jZGVjbCBfbW0yNTZfc3RvcmVfcGQoZG91YmxlICosIF9fbTI1NmQpOw0KDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tMjU2X2xvYWRfcHMoZmxvYXQgY29uc3Qg
Kik7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTI1Nl9zdG9yZV9wcyhmbG9hdCAqLCBfX20y
NTYpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X2xvYWR1
X3BkKGRvdWJsZSBjb25zdCAqKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tMjU2X3N0b3Jl
dV9wZChkb3VibGUgKiwgX19tMjU2ZCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NiAg
X19jZGVjbCBfbW0yNTZfbG9hZHVfcHMoZmxvYXQgY29uc3QgKik7DQpleHRlcm4gdm9pZCAgICBf
X2NkZWNsIF9tbTI1Nl9zdG9yZXVfcHMoZmxvYXQgKiwgX19tMjU2KTsNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9sb2FkX3NpMjU2KF9fbTI1NmkgY29uc3Qg
Kik7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTI1Nl9zdG9yZV9zaTI1NihfX20yNTZpICos
IF9fbTI1NmkpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2
X2xvYWR1X3NpMjU2KF9fbTI1NmkgY29uc3QgKik7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9t
bTI1Nl9zdG9yZXVfc2kyNTYoX19tMjU2aSAqLCBfX20yNTZpKTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9tYXNrbG9hZF9wZChkb3Vi
bGUgY29uc3QgKiwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
c3RvcmVfcGQoZG91YmxlICosIF9fbTI1NmksIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOGQgX19j
ZGVjbCBfbW1fbWFza2xvYWRfcGQoZG91YmxlIGNvbnN0ICosIF9fbTEyOGkpOw0KZXh0ZXJuIHZv
aWQgICAgX19jZGVjbCBfbW1fbWFza3N0b3JlX3BkKGRvdWJsZSAqLCBfX20xMjhpLCBfX20xMjhk
KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NiAg
X19jZGVjbCBfbW0yNTZfbWFza2xvYWRfcHMoZmxvYXQgY29uc3QgKiwgX19tMjU2aSk7DQpleHRl
cm4gdm9pZCAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrc3RvcmVfcHMoZmxvYXQgKiwgX19tMjU2aSwg
X19tMjU2KTsNCmV4dGVybiBfX20xMjggIF9fY2RlY2wgX21tX21hc2tsb2FkX3BzKGZsb2F0IGNv
bnN0ICosIF9fbTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW1fbWFza3N0b3JlX3Bz
KGZsb2F0ICosIF9fbTEyOGksIF9fbTEyOCk7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYg
IF9fY2RlY2wgX21tMjU2X21vdmVoZHVwX3BzKF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoNCmV4dGVy
biBfX20yNTYgIF9fY2RlY2wgX21tMjU2X21vdmVsZHVwX3BzKF9fbTI1Nik7DQoNCg0KDQoNCg0K
DQoNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X21vdmVkdXBfcGQoX19tMjU2ZCk7DQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9sZGRxdV9zaTI1
NihfX20yNTZpIGNvbnN0ICopOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCAgICBfX2NkZWNs
IF9tbTI1Nl9zdHJlYW1fc2kyNTYoX19tMjU2aSAqLCBfX20yNTZpKTsNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTI1Nl9zdHJlYW1fcGQoZG91YmxlICosIF9fbTI1
NmQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tMjU2X3N0cmVh
bV9wcyhmbG9hdCAqLCBfX20yNTYpOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NiAg
X19jZGVjbCBfbW0yNTZfcmNwX3BzKF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biBfX20yNTYgIF9fY2RlY2wgX21tMjU2X3JzcXJ0X3BzKF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfc3FydF9wZChfX20yNTZkKTsNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTI1Nl9zcXJ0X3BzKF9fbTI1Nik7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9y
b3VuZF9wZChfX20yNTZkLCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biBfX20yNTYgIF9fY2RlY2wgX21tMjU2X3JvdW5kX3BzKF9fbTI1NiwgaW50KTsNCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X3VucGFja2hpX3BkKF9fbTI1
NmQsIF9fbTI1NmQpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTI1
Nl91bnBhY2toaV9wcyhfX20yNTYsIF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20y
NTZkIF9fY2RlY2wgX21tMjU2X3VucGFja2xvX3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTI1Nl91bnBhY2tsb19wcyhfX20yNTYs
IF9fbTI1Nik7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTI1
Nl90ZXN0el9zaTI1NihfX20yNTZpLCBfX20yNTZpKTsNCg0KDQoNCmV4dGVybiBpbnQgICAgIF9f
Y2RlY2wgX21tMjU2X3Rlc3RjX3NpMjU2KF9fbTI1NmksIF9fbTI1NmkpOw0KDQoNCg0KZXh0ZXJu
IGludCAgICAgX19jZGVjbCBfbW0yNTZfdGVzdG56Y19zaTI1NihfX20yNTZpLCBfX20yNTZpKTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTI1
Nl90ZXN0el9wZChfX20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBpbnQgICAgIF9fY2RlY2wgX21t
MjU2X3Rlc3RjX3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBf
bW0yNTZfdGVzdG56Y19wZChfX20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBpbnQgICAgIF9fY2Rl
Y2wgX21tX3Rlc3R6X3BkKF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIGludCAgICAgX19jZGVj
bCBfbW1fdGVzdGNfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gaW50ICAgICBfX2NkZWNs
IF9tbV90ZXN0bnpjX3BkKF9fbTEyOGQsIF9fbTEyOGQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW0yNTZfdGVzdHpfcHMoX19tMjU2LCBfX20yNTYp
Ow0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW0yNTZfdGVzdGNfcHMoX19tMjU2LCBfX20yNTYp
Ow0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW0yNTZfdGVzdG56Y19wcyhfX20yNTYsIF9fbTI1
Nik7DQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbV90ZXN0el9wcyhfX20xMjgsIF9fbTEyOCk7
DQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbV90ZXN0Y19wcyhfX20xMjgsIF9fbTEyOCk7DQpl
eHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbV90ZXN0bnpjX3BzKF9fbTEyOCwgX19tMTI4KTsNCg0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTI1Nl9tb3ZlbWFza19wZChf
X20yNTZkKTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTI1Nl9t
b3ZlbWFza19wcyhfX20yNTYpOw0KDQoNCg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1
Nl9zZXR6ZXJvX3BkKHZvaWQpOw0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW0yNTZfc2V0emVy
b19wcyh2b2lkKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NldHplcm9fc2kyNTYo
dm9pZCk7DQoNCg0KDQoNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X3NldF9wZChkb3Vi
bGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpOw0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW0y
NTZfc2V0X3BzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7DQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zZXRfZXBpOChjaGFyLCBjaGFyLCBjaGFyLCBj
aGFyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIs
IGNoYXIsIGNoYXIsIGNoYXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciwgY2hhciwgY2hhciwgY2hhciwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIsIGNoYXIsIGNoYXIsIGNo
YXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciwg
Y2hhciwgY2hhciwgY2hhciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIpOw0KZXh0ZXJuIF9f
bTI1NmkgX19jZGVjbCBfbW0yNTZfc2V0X2VwaTE2KHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCwg
c2hvcnQsIHNob3J0LCBzaG9ydCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NldF9lcGkzMihpbnQsIGludCwgaW50
LCBpbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCwgaW50LCBpbnQsIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zZXRfZXBp
NjR4KF9faW50NjQsIF9faW50NjQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2ludDY0LCBfX2ludDY0KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfc2V0cl9wZChkb3VibGUsIGRvdWJsZSwgZG91Ymxl
LCBkb3VibGUpOw0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW0yNTZfc2V0cl9wcyhmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tMjU2X3NldHJfZXBpOChjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyLCBjaGFyLCBjaGFyLCBj
aGFyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
LCBjaGFyLCBjaGFyLCBjaGFyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyLCBjaGFyLCBjaGFy
LCBjaGFyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyLCBjaGFyLCBjaGFyLCBjaGFyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tMjU2X3NldHJfZXBpMTYoc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCwgc2hvcnQs
IHNob3J0LCBzaG9ydCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQpOw0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2V0cl9lcGkzMihpbnQsIGludCwgaW50LCBp
bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQs
IGludCwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2V0cl9lcGk2
NHgoX19pbnQ2NCwgX19pbnQ2NCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2ludDY0LCBfX2ludDY0KTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9f
bTI1NmQgX19jZGVjbCBfbW0yNTZfc2V0MV9wZChkb3VibGUpOw0KZXh0ZXJuIF9fbTI1NiAgX19j
ZGVjbCBfbW0yNTZfc2V0MV9wcyhmbG9hdCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1
Nl9zZXQxX2VwaTgoY2hhcik7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zZXQxX2Vw
aTE2KHNob3J0KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NldDFfZXBpMzIoaW50
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NldDFfZXBpNjR4KGxvbmcgbG9uZyk7
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tMjU2X2Nhc3RwZF9wcyhf
X20yNTZkKTsNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X2Nhc3Rwc19wZChfX20yNTYp
Ow0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY2FzdHBzX3NpMjU2KF9fbTI1Nik7DQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jYXN0cGRfc2kyNTYoX19tMjU2ZCk7DQpleHRl
cm4gX19tMjU2ICBfX2NkZWNsIF9tbTI1Nl9jYXN0c2kyNTZfcHMoX19tMjU2aSk7DQpleHRlcm4g
X19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9jYXN0c2kyNTZfcGQoX19tMjU2aSk7DQpleHRlcm4gX19t
MTI4ICBfX2NkZWNsIF9tbTI1Nl9jYXN0cHMyNTZfcHMxMjgoX19tMjU2KTsNCmV4dGVybiBfX20x
MjhkIF9fY2RlY2wgX21tMjU2X2Nhc3RwZDI1Nl9wZDEyOChfX20yNTZkKTsNCmV4dGVybiBfX20x
MjhpIF9fY2RlY2wgX21tMjU2X2Nhc3RzaTI1Nl9zaTEyOChfX20yNTZpKTsNCmV4dGVybiBfX20y
NTYgIF9fY2RlY2wgX21tMjU2X2Nhc3RwczEyOF9wczI1NihfX20xMjgpOw0KZXh0ZXJuIF9fbTI1
NmQgX19jZGVjbCBfbW0yNTZfY2FzdHBkMTI4X3BkMjU2KF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1
NmkgX19jZGVjbCBfbW0yNTZfY2FzdHNpMTI4X3NpMjU2KF9fbTEyOGkpOw0KDQoNCg0KDQoNCg0K
ZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1fY3Z0cGhfcHMoX19tMTI4aSk7DQpleHRlcm4gX19t
MjU2ICBfX2NkZWNsIF9tbTI1Nl9jdnRwaF9wcyhfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9f
Y2RlY2wgX21tX2N2dHBzX3BoKF9fbTEyOCAsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTEyOGkg
X19jZGVjbCBfbW0yNTZfY3Z0cHNfcGgoX19tMjU2LCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX3hn
ZXRidih1bnNpZ25lZCBpbnQpOw0KDQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX3hzZXRidih1bnNp
Z25lZCBpbnQsIHVuc2lnbmVkIF9faW50NjQpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX19j
ZGVjbCBfeHNhdmUodm9pZCAqLCB1bnNpZ25lZCBfX2ludDY0KTsNCg0KZXh0ZXJuIHZvaWQgX19j
ZGVjbCBfeHNhdmU2NCh2b2lkICosIHVuc2lnbmVkIF9faW50NjQpOw0KI2xpbmUgMTI2MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbW1pbnRyaW4u
aCINCg0KDQoNCg0KDQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX3hzYXZlb3B0KHZvaWQgKiwgdW5z
aWduZWQgX19pbnQ2NCk7DQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX3hzYXZlb3B0NjQodm9pZCAq
LCB1bnNpZ25lZCBfX2ludDY0KTsNCiNsaW5lIDEyNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW1taW50cmluLmgiDQoNCg0KDQoNCg0KZXh0ZXJu
IHZvaWQgX19jZGVjbCBfeHNhdmVjKHZvaWQgKiwgdW5zaWduZWQgX19pbnQ2NCk7DQoNCmV4dGVy
biB2b2lkIF9fY2RlY2wgX3hzYXZlYzY0KHZvaWQgKiwgdW5zaWduZWQgX19pbnQ2NCk7DQojbGlu
ZSAxMjgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGltbWludHJpbi5oIg0KDQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfeHJzdG9yKHZv
aWQgY29uc3QgKiwgdW5zaWduZWQgX19pbnQ2NCk7DQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX3hy
c3RvcjY0KHZvaWQgY29uc3QgKiwgdW5zaWduZWQgX19pbnQ2NCk7DQojbGluZSAxMjkxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGltbWludHJpbi5o
Ig0KDQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfeHNhdmVzKHZvaWQgKiwgdW5zaWdu
ZWQgX19pbnQ2NCk7DQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX3hzYXZlczY0KHZvaWQgKiwgdW5z
aWduZWQgX19pbnQ2NCk7DQojbGluZSAxMzAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGltbWludHJpbi5oIg0KDQoNCg0KDQoNCg0KZXh0ZXJuIHZv
aWQgX19jZGVjbCBfeHJzdG9ycyh2b2lkIGNvbnN0ICosIHVuc2lnbmVkIF9faW50NjQpOw0KDQpl
eHRlcm4gdm9pZCBfX2NkZWNsIF94cnN0b3JzNjQodm9pZCBjb25zdCAqLCB1bnNpZ25lZCBfX2lu
dDY0KTsNCiNsaW5lIDEzMTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcaW1taW50cmluLmgiDQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBf
ZnhzYXZlKHZvaWQgKik7DQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX2Z4c2F2ZTY0KHZvaWQgKik7
DQojbGluZSAxMzIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGltbWludHJpbi5oIg0KDQoNCg0KDQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX2Z4cnN0
b3Iodm9pZCBjb25zdCAqKTsNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfZnhyc3RvcjY0KHZvaWQg
Y29uc3QgKik7DQojbGluZSAxMzI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGltbWludHJpbi5oIg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IF9f
Y2RlY2wgX3JkcmFuZDE2X3N0ZXAodW5zaWduZWQgc2hvcnQgKik7DQpleHRlcm4gaW50IF9fY2Rl
Y2wgX3JkcmFuZDMyX3N0ZXAodW5zaWduZWQgaW50ICopOw0KDQpleHRlcm4gaW50IF9fY2RlY2wg
X3JkcmFuZDY0X3N0ZXAodW5zaWduZWQgX19pbnQ2NCAqKTsNCiNsaW5lIDEzNDEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW1taW50cmluLmgiDQoN
Cg0KDQoNCg0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX19jZGVjbCBfcmVhZGZzYmFzZV91MzIo
dm9pZCk7DQpleHRlcm4gdW5zaWduZWQgaW50ICAgICBfX2NkZWNsIF9yZWFkZ3NiYXNlX3UzMih2
b2lkKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX3JlYWRmc2Jhc2VfdTY0KHZv
aWQpOw0KZXh0ZXJuIHVuc2lnbmVkIF9faW50NjQgX19jZGVjbCBfcmVhZGdzYmFzZV91NjQodm9p
ZCk7DQoNCg0KDQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX3dyaXRlZnNiYXNlX3UzMih1bnNpZ25l
ZCBpbnQpOw0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfd3JpdGVnc2Jhc2VfdTMyKHVuc2lnbmVkIGlu
dCk7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF93cml0ZWZzYmFzZV91NjQodW5zaWduZWQgX19pbnQ2
NCk7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF93cml0ZWdzYmFzZV91NjQodW5zaWduZWQgX19pbnQ2
NCk7DQojbGluZSAxMzU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXGltbWludHJpbi5oIg0KDQoNCg0KDQpleHRlcm4gX19tMTI4ICBfX2NkZWNsIF9t
bV9mbWFkZF9wcyhfX20xMjgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9fY2Rl
Y2wgX21tX2ZtYWRkX3BkKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEy
OCAgX19jZGVjbCBfbW1fZm1hZGRfc3MoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4g
X19tMTI4ZCBfX2NkZWNsIF9tbV9mbWFkZF9zZChfX20xMjhkLCBfX20xMjhkLCBfX20xMjhkKTsN
CmV4dGVybiBfX20xMjggIF9fY2RlY2wgX21tX2Ztc3ViX3BzKF9fbTEyOCwgX19tMTI4LCBfX20x
MjgpOw0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBfbW1fZm1zdWJfcGQoX19tMTI4ZCwgX19tMTI4
ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ICBfX2NkZWNsIF9tbV9mbXN1Yl9zcyhfX20xMjgs
IF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9fY2RlY2wgX21tX2Ztc3ViX3NkKF9f
bTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1fZm5t
YWRkX3BzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBf
bW1fZm5tYWRkX3BkKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAg
X19jZGVjbCBfbW1fZm5tYWRkX3NzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9f
bTEyOGQgX19jZGVjbCBfbW1fZm5tYWRkX3NkKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0K
ZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1fZm5tc3ViX3BzKF9fbTEyOCwgX19tMTI4LCBfX20x
MjgpOw0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBfbW1fZm5tc3ViX3BkKF9fbTEyOGQsIF9fbTEy
OGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1fZm5tc3ViX3NzKF9fbTEy
OCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBfbW1fZm5tc3ViX3Nk
KF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KDQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9t
bTI1Nl9mbWFkZF9wcyhfX20yNTYsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9f
Y2RlY2wgX21tMjU2X2ZtYWRkX3BkKF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0ZXJu
IF9fbTI1NiAgX19jZGVjbCBfbW0yNTZfZm1zdWJfcHMoX19tMjU2LCBfX20yNTYsIF9fbTI1Nik7
DQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9mbXN1Yl9wZChfX20yNTZkLCBfX20yNTZk
LCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tMjU2X2ZubWFkZF9wcyhfX20y
NTYsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X2ZubWFk
ZF9wZChfX20yNTZkLCBfX20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wg
X21tMjU2X2ZubXN1Yl9wcyhfX20yNTYsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZk
IF9fY2RlY2wgX21tMjU2X2ZubXN1Yl9wZChfX20yNTZkLCBfX20yNTZkLCBfX20yNTZkKTsNCg0K
DQoNCg0KDQpleHRlcm4gX19tMTI4ICBfX2NkZWNsIF9tbV9mbWFkZHN1Yl9wcyhfX20xMjgsIF9f
bTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9fY2RlY2wgX21tX2ZtYWRkc3ViX3BkKF9f
bTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1fZm1z
dWJhZGRfcHMoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfX2NkZWNs
IF9tbV9mbXN1YmFkZF9wZChfX20xMjhkLCBfX20xMjhkLCBfX20xMjhkKTsNCg0KZXh0ZXJuIF9f
bTI1NiAgX19jZGVjbCBfbW0yNTZfZm1hZGRzdWJfcHMoX19tMjU2LCBfX20yNTYsIF9fbTI1Nik7
DQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9mbWFkZHN1Yl9wZChfX20yNTZkLCBfX20y
NTZkLCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tMjU2X2Ztc3ViYWRkX3Bz
KF9fbTI1NiwgX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZf
Zm1zdWJhZGRfcGQoX19tMjU2ZCwgX19tMjU2ZCwgX19tMjU2ZCk7DQoNCg0KDQoNCg0KZXh0ZXJu
IF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY21wZXFfZXBpOChfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2NtcGVxX2VwaTE2KF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY21wZXFfZXBpMzIoX19tMjU2aSwgX19t
MjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jbXBlcV9lcGk2NChfX20yNTZp
LCBfX20yNTZpKTsNCg0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY21wZ3RfZXBpOChf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2NtcGd0X2Vw
aTE2KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY21w
Z3RfZXBpMzIoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1
Nl9jbXBndF9lcGk2NChfX20yNTZpLCBfX20yNTZpKTsNCg0KDQoNCg0KDQpleHRlcm4gX19tMjU2
aSBfX2NkZWNsIF9tbTI1Nl9tYXhfZXBpOChfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tMjU2X21heF9lcGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X21heF9lcGkzMihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21heF9lcHU4KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWF4X2VwdTE2KF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWF4X2VwdTMyKF9fbTI1NmksIF9fbTI1Nmkp
Ow0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9taW5fZXBpOChfX20yNTZpLCBfX20y
NTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21pbl9lcGkxNihfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21pbl9lcGkzMihfX20yNTZp
LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21pbl9lcHU4KF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWluX2VwdTE2KF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWluX2VwdTMy
KF9fbTI1NmksIF9fbTI1NmkpOw0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21t
MjU2X2FuZF9zaTI1NihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wg
X21tMjU2X2FuZG5vdF9zaTI1NihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tMjU2X29yX3NpMjU2KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1Nmkg
X19jZGVjbCBfbW0yNTZfeG9yX3NpMjU2KF9fbTI1NmksIF9fbTI1NmkpOw0KDQoNCg0KDQoNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2Fic19lcGk4KF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTI1NmkgX19jZGVjbCBfbW0yNTZfYWJzX2VwaTE2KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1Nmkg
X19jZGVjbCBfbW0yNTZfYWJzX2VwaTMyKF9fbTI1NmkpOw0KDQpleHRlcm4gX19tMjU2aSBfX2Nk
ZWNsIF9tbTI1Nl9hZGRfZXBpOChfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tMjU2X2FkZF9lcGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZp
IF9fY2RlY2wgX21tMjU2X2FkZF9lcGkzMihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tMjU2X2FkZF9lcGk2NChfX20yNTZpLCBfX20yNTZpKTsNCg0KZXh0ZXJu
IF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfYWRkc19lcGk4KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfYWRkc19lcGkxNihfX20yNTZpLCBfX20yNTZpKTsN
CmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2FkZHNfZXB1OChfX20yNTZpLCBfX20yNTZp
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2FkZHNfZXB1MTYoX19tMjU2aSwgX19t
MjU2aSk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3N1Yl9lcGk4KF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc3ViX2VwaTE2KF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc3ViX2VwaTMyKF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc3ViX2VwaTY0
KF9fbTI1NmksIF9fbTI1NmkpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zdWJz
X2VwaTgoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9z
dWJzX2VwaTE2KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0y
NTZfc3Vic19lcHU4KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBf
bW0yNTZfc3Vic19lcHUxNihfX20yNTZpLCBfX20yNTZpKTsNCg0KZXh0ZXJuIF9fbTI1NmkgX19j
ZGVjbCBfbW0yNTZfYXZnX2VwdTgoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBf
X2NkZWNsIF9tbTI1Nl9hdmdfZXB1MTYoX19tMjU2aSwgX19tMjU2aSk7DQoNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tMjU2X2hhZGRfZXBpMTYoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9oYWRkX2VwaTMyKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfaGFkZHNfZXBpMTYoX19tMjU2aSwgX19tMjU2aSk7
DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2hzdWJfZXBpMTYoX19tMjU2aSwgX19t
MjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9oc3ViX2VwaTMyKF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfaHN1YnNfZXBpMTYoX19t
MjU2aSwgX19tMjU2aSk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hZGRfZXBp
MTYoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYWRk
dWJzX2VwaTE2KF9fbTI1NmksIF9fbTI1NmkpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9t
bTI1Nl9tdWxoaV9lcGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2Rl
Y2wgX21tMjU2X211bGhpX2VwdTE2KF9fbTI1NmksIF9fbTI1NmkpOw0KDQpleHRlcm4gX19tMjU2
aSBfX2NkZWNsIF9tbTI1Nl9tdWxsb19lcGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X211bGxvX2VwaTMyKF9fbTI1NmksIF9fbTI1NmkpOw0KDQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tdWxfZXB1MzIoX19tMjU2aSwgX19tMjU2aSk7
DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tdWxfZXBpMzIoX19tMjU2aSwgX19tMjU2
aSk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NpZ25fZXBpOChfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NpZ25fZXBpMTYoX19tMjU2
aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zaWduX2VwaTMyKF9f
bTI1NmksIF9fbTI1NmkpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tdWxocnNf
ZXBpMTYoX19tMjU2aSwgX19tMjU2aSk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2
X3NhZF9lcHU4KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0y
NTZfbXBzYWRid19lcHU4KF9fbTI1NmksIF9fbTI1NmksIGNvbnN0IGludCk7DQoNCg0KDQoNCg0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2xsaV9zaTI1NihfX20yNTZpLCBjb25zdCBp
bnQpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zcmxpX3NpMjU2KF9fbTI1Nmks
IGNvbnN0IGludCk7DQoNCg0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2xsX2VwaTE2
KF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2xsX2Vw
aTMyKF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2xs
X2VwaTY0KF9fbTI1NmksIF9fbTEyOGkpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1
Nl9zbGxpX2VwaTE2KF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1
Nl9zbGxpX2VwaTMyKF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1
Nl9zbGxpX2VwaTY0KF9fbTI1NmksIGludCk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21t
MjU2X3NsbHZfZXBpMzIoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNs
IF9tbTI1Nl9zbGx2X2VwaTY0KF9fbTI1NmksIF9fbTI1NmkpOw0KDQpleHRlcm4gX19tMTI4aSBf
X2NkZWNsIF9tbV9zbGx2X2VwaTMyKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkg
X19jZGVjbCBfbW1fc2xsdl9lcGk2NChfX20xMjhpLCBfX20xMjhpKTsNCg0KZXh0ZXJuIF9fbTI1
NmkgX19jZGVjbCBfbW0yNTZfc3JhX2VwaTE2KF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTI1NmkgX19jZGVjbCBfbW0yNTZfc3JhX2VwaTMyKF9fbTI1NmksIF9fbTEyOGkpOw0KDQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zcmFpX2VwaTE2KF9fbTI1NmksIGludCk7DQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zcmFpX2VwaTMyKF9fbTI1NmksIGludCk7DQoNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NyYXZfZXBpMzIoX19tMjU2aSwgX19tMjU2aSk7
DQoNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX3NyYXZfZXBpMzIoX19tMTI4aSwgX19tMTI4
aSk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NybF9lcGkxNihfX20yNTZpLCBf
X20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NybF9lcGkzMihfX20yNTZp
LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NybF9lcGk2NChfX20y
NTZpLCBfX20xMjhpKTsNCg0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc3JsaV9lcGkx
NihfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc3JsaV9lcGkz
MihfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc3JsaV9lcGk2
NChfX20yNTZpLCBpbnQpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zcmx2X2Vw
aTMyKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc3Js
dl9lcGk2NChfX20yNTZpLCBfX20yNTZpKTsNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1f
c3Jsdl9lcGkzMihfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21t
X3NybHZfZXBpNjQoX19tMTI4aSwgX19tMTI4aSk7DQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOGkg
X19jZGVjbCBfbW1fYmxlbmRfZXBpMzIoX19tMTI4aSwgX19tMTI4aSwgY29uc3QgaW50KTsNCg0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfYmxlbmRfZXBpMzIoX19tMjU2aSxfX20yNTZp
LCBjb25zdCBpbnQpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9hbGlnbnJfZXBp
OChfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNs
IF9tbTI1Nl9ibGVuZHZfZXBpOChfX20yNTZpLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X2JsZW5kX2VwaTE2KF9fbTI1NmksIF9fbTI1NmksIGNvbnN0
IGludCk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3BhY2tzX2VwaTE2KF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfcGFja3NfZXBpMzIo
X19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9wYWNrdXNf
ZXBpMTYoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9w
YWNrdXNfZXBpMzIoX19tMjU2aSwgX19tMjU2aSk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wg
X21tMjU2X3VucGFja2hpX2VwaTgoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBf
X2NkZWNsIF9tbTI1Nl91bnBhY2toaV9lcGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X3VucGFja2hpX2VwaTMyKF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfdW5wYWNraGlfZXBpNjQoX19tMjU2aSwgX19t
MjU2aSk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3VucGFja2xvX2VwaTgoX19t
MjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl91bnBhY2tsb19l
cGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3Vu
cGFja2xvX2VwaTMyKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBf
bW0yNTZfdW5wYWNrbG9fZXBpNjQoX19tMjU2aSwgX19tMjU2aSk7DQoNCmV4dGVybiBfX20yNTZp
IF9fY2RlY2wgX21tMjU2X3NodWZmbGVfZXBpOChfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X3NodWZmbGVfZXBpMzIoX19tMjU2aSwgY29uc3QgaW50KTsN
Cg0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2h1ZmZsZWhpX2VwaTE2KF9fbTI1Nmks
IGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9zaHVmZmxlbG9fZXBp
MTYoX19tMjU2aSwgY29uc3QgaW50KTsNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW0yNTZf
ZXh0cmFjdGkxMjhfc2kyNTYoX19tMjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tMjU2X2luc2VydGkxMjhfc2kyNTYoX19tMjU2aSwgX19tMTI4aSwgY29uc3QgaW50
KTsNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4ICBfX2NkZWNsIF9tbV9icm9hZGNhc3Rzc19wcyhf
X20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBfbW1fYnJvYWRjYXN0c2RfcGQoX19tMTI4
ZCk7DQoNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX2Jyb2FkY2FzdGJfZXBpOChfX20xMjhp
KTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX2Jyb2FkY2FzdHdfZXBpMTYoX19tMTI4aSk7
DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9icm9hZGNhc3RkX2VwaTMyKF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fYnJvYWRjYXN0cV9lcGk2NChfX20xMjhpKTsNCg0K
ZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW0yNTZfYnJvYWRjYXN0c3NfcHMoX19tMTI4KTsNCmV4
dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X2Jyb2FkY2FzdHNkX3BkKF9fbTEyOGQpOw0KDQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9icm9hZGNhc3RiX2VwaTgoX19tMTI4aSk7DQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9icm9hZGNhc3R3X2VwaTE2KF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfYnJvYWRjYXN0ZF9lcGkzMihfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2Jyb2FkY2FzdHFfZXBpNjQoX19tMTI4aSk7
DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2Jyb2FkY2FzdHNpMTI4X3NpMjU2KF9f
bTEyOGkpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY3Z0ZXBp
OF9lcGkxNihfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2N2dGVwaThf
ZXBpMzIoX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jdnRlcGk4X2Vw
aTY0KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY3Z0ZXBpMTZfZXBp
MzIoX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jdnRlcGkxNl9lcGk2
NChfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2N2dGVwaTMyX2VwaTY0
KF9fbTEyOGkpOw0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jdnRlcHU4X2VwaTE2
KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY3Z0ZXB1OF9lcGkzMihf
X20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2N2dGVwdThfZXBpNjQoX19t
MTI4aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jdnRlcHUxNl9lcGkzMihfX20x
MjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2N2dGVwdTE2X2VwaTY0KF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfY3Z0ZXB1MzJfZXBpNjQoX19tMTI4
aSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IF9fY2RlY2wgX21tMjU2X21vdmVtYXNrX2VwaTgo
X19tMjU2aSk7DQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza2xvYWRf
ZXBpMzIoaW50IGNvbnN0ICogLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19tMTI4aSAgICAgKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tsb2Fk
X2VwaTY0KF9faW50NjQgY29uc3QgKiAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX20xMjhpICAgICAgICAgKTsNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW1f
bWFza3N0b3JlX2VwaTMyKGludCAqICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbTEyOGkgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fbTEyOGkgKTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tX21hc2tzdG9yZV9lcGk2NChf
X2ludDY0ICogLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEy
OGkgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSAg
ICk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tsb2FkX2VwaTMyKGludCBj
b25zdCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bTI1NmkgICAgICk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrbG9hZF9lcGk2
NChfX2ludDY0IGNvbnN0ICogLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19tMjU2aSAgICAgICAgICk7DQoNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tMjU2
X21hc2tzdG9yZV9lcGkzMihpbnQgKiAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX20yNTZpICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX20yNTZpICk7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF9tbTI1Nl9tYXNrc3Rv
cmVfZXBpNjQoX19pbnQ2NCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX20yNTZpICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fbTI1NmkgICApOw0KDQoNCg0KDQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21t
MjU2X3Blcm11dGV2YXI4eDMyX2VwaTMyKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1
NiAgX19jZGVjbCBfbW0yNTZfcGVybXV0ZXZhcjh4MzJfcHMoX19tMjU2LCBfX20yNTZpKTsNCg0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfcGVybXV0ZTR4NjRfZXBpNjQoX19tMjU2aSwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZkIF9fY2RlY2wgX21tMjU2X3Blcm11dGU0eDY0X3Bk
KF9fbTI1NmQsIGNvbnN0IGludCk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3Bl
cm11dGUyeDEyOF9zaTI1NihfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KDQoNCg0KDQoN
CmV4dGVybiBfX20yNTZpICBfX2NkZWNsIF9tbTI1Nl9zdHJlYW1fbG9hZF9zaTI1NihfX20yNTZp
IGNvbnN0ICopOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfbWFz
a19pMzJnYXRoZXJfcGQoX19tMjU2ZCAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGNvbnN0ICogLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSAgICAgICAgLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2ZCAgICAgICAg
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50ICAgICAgKTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tMjU2X21hc2tfaTMyZ2F0aGVy
X3BzKF9fbTI1NiAgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IGNvbnN0ICogICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgICAgICAgICwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NiAgICAgICAgICwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAgICAgICk7
DQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl9tYXNrX2k2NGdhdGhlcl9wZChfX20yNTZk
ICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgY29uc3QgKiAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX20yNTZpICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX20yNTZkICAgICAgICAsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgICAgICApOw0KZXh0ZXJuIF9f
bTEyOCAgX19jZGVjbCBfbW0yNTZfbWFza19pNjRnYXRoZXJfcHMoX19tMTI4ICAgICAgICAgLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29u
c3QgKiAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19tMjU2aSAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19tMTI4ICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICAgICAgKTsNCg0KZXh0ZXJuIF9fbTEyOGQgX19j
ZGVjbCBfbW1fbWFza19pMzJnYXRoZXJfcGQoX19tMTI4ZCAgICAgICAgLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGNvbnN0ICogLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4aSAgICAgICAgLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4ZCAgICAg
ICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50ICAgICAgKTsNCmV4dGVybiBfX20xMjggIF9fY2RlY2wgX21tX21hc2tfaTMyZ2F0aGVyX3Bz
KF9fbTEyOCAgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IGNvbnN0ICogICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbTEyOGkgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fbTEyOCAgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAgICAgICk7DQpleHRlcm4gX19tMTI4
ZCBfX2NkZWNsIF9tbV9tYXNrX2k2NGdhdGhlcl9wZChfX20xMjhkICAgICAgICAsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29uc3QgKiAsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpICAgICAg
ICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhk
ICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQgICAgICApOw0KZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1fbWFza19pNjRnYXRo
ZXJfcHMoX19tMTI4ICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgY29uc3QgKiAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19tMTI4aSAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4ICAgICAgICAgLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICAgICAgKTsNCg0KDQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrX2kzMmdhdGhlcl9lcGkzMihfX20yNTZpICAg
ICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY29uc3QgKiAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX20yNTZpICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX20yNTZpICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgICApOw0KZXh0ZXJuIF9fbTI1Nmkg
X19jZGVjbCBfbW0yNTZfbWFza19pMzJnYXRoZXJfZXBpNjQoX19tMjU2aSAgICAgLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pbnQ2NCBjb25z
dCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbTEyOGkgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbTI1NmkgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAgICk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNs
IF9tbTI1Nl9tYXNrX2k2NGdhdGhlcl9lcGkzMihfX20xMjhpICAgICAsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgIGNvbnN0ICogLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2
aSAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19tMTI4aSAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgaW50ICAgKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2
X21hc2tfaTY0Z2F0aGVyX2VwaTY0KF9fbTI1NmkgICAgICwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW50NjQgY29uc3QgKiAsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZpICAgICAs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20y
NTZpICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQgICApOw0KDQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX2kz
MmdhdGhlcl9lcGkzMihfX20xMjhpICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnN0ICogICAgICwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgICAgICAgICAsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpICAgICAg
ICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgaW50ICAgICAgICk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX2kzMmdhdGhl
cl9lcGk2NChfX20xMjhpICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19pbnQ2NCBjb25zdCAqICwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgICAgICAgICAsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpICAgICAgICAgLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
ICAgICAgICk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX2k2NGdhdGhlcl9lcGkz
MihfX20xMjhpICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICAgICBjb25zdCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgICAgICAgICAsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpICAgICAgICAgLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICAgICAg
ICk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX2k2NGdhdGhlcl9lcGk2NChfX20x
MjhpICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19pbnQ2NCBjb25zdCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fbTEyOGkgICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpICAgICAgICAgLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICAgICAgICk7DQoN
Cg0KDQoNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW0yNTZfaTMyZ2F0aGVyX3BkKGRvdWJs
ZSBjb25zdCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X20xMjhpICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50ICAgICAgKTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tMjU2X2kzMmdh
dGhlcl9wcyhmbG9hdCAgY29uc3QgKiAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19tMjU2aSAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludCAgICAgICk7DQpleHRlcm4gX19tMjU2ZCBfX2NkZWNs
IF9tbTI1Nl9pNjRnYXRoZXJfcGQoZG91YmxlIGNvbnN0ICogLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTI1NmkgICAgICAgICwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgICAgICApOw0KZXh0ZXJuIF9f
bTEyOCAgX19jZGVjbCBfbW0yNTZfaTY0Z2F0aGVyX3BzKGZsb2F0ICBjb25zdCAqICwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20yNTZpICAgICAgICAsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICAgICAg
KTsNCg0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBfbW1faTMyZ2F0aGVyX3BkKGRvdWJsZSBjb25z
dCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpICAg
ICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
ICAgICAgKTsNCmV4dGVybiBfX20xMjggIF9fY2RlY2wgX21tX2kzMmdhdGhlcl9wcyhmbG9hdCAg
Y29uc3QgKiAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4
aSAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGludCAgICAgICk7DQpleHRlcm4gX19tMTI4ZCBfX2NkZWNsIF9tbV9pNjRnYXRoZXJfcGQoZG91
YmxlIGNvbnN0ICogLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bTEyOGkgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQgICAgICApOw0KZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW1faTY0Z2F0aGVyX3Bz
KGZsb2F0ICBjb25zdCAqICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX20xMjhpICAgICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50ICAgICAgKTsNCg0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfaTMy
Z2F0aGVyX2VwaTMyKGludCBjb25zdCAqICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19tMjU2aSAgICAgICAgICwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgICAgICAgKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X2kzMmdhdGhlcl9lcGk2NChfX2ludDY0IGNvbnN0ICogLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgICAg
ICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgaW50ICAgICAgICk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTI1Nl9pNjRnYXRoZXJf
ZXBpMzIoaW50IGNvbnN0ICogICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX20yNTZpICAgICAgICAgLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAgICAgICApOw0KZXh0ZXJuIF9fbTI1Nmkg
X19jZGVjbCBfbW0yNTZfaTY0Z2F0aGVyX2VwaTY0KF9faW50NjQgY29uc3QgKiAsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMjU2aSAgICAgICAgICwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQg
ICAgICAgKTsNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1faTMyZ2F0aGVyX2VwaTMyKGlu
dCBjb25zdCAqICAgICAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19tMTI4aSAgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnQgICAgICAgKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX2kz
MmdhdGhlcl9lcGk2NChfX2ludDY0IGNvbnN0ICogLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fbTEyOGkgICAgICAgICAsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICAgICAgICk7DQpleHRlcm4gX19tMTI4
aSBfX2NkZWNsIF9tbV9pNjRnYXRoZXJfZXBpMzIoaW50ICAgICBjb25zdCAqICwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX20xMjhpICAgICAgICAgLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAgICAgICAp
Ow0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1faTY0Z2F0aGVyX2VwaTY0KF9faW50NjQgY29u
c3QgKiAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tMTI4
aSAgICAgICAgICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQgICAgICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
IHVuc2lnbmVkIGludCAgICAgX2JleHRyX3UzMih1bnNpZ25lZCBpbnQgLA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAg
IF9iZXh0cjJfdTMyKHVuc2lnbmVkIGludCAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9ibHNpX3Uz
Mih1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX2Jsc21za191MzIodW5z
aWduZWQgaW50KTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9ibHNyX3UzMih1bnNpZ25lZCBp
bnQpOw0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX2J6aGlfdTMyKHVuc2lnbmVkIGludCAsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICk7DQpleHRlcm4g
dW5zaWduZWQgaW50ICAgICBfbXVseF91MzIodW5zaWduZWQgaW50ICwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqICk7DQpleHRlcm4gdW5zaWduZWQgaW50ICAgICBf
cGRlcF91MzIodW5zaWduZWQgaW50ICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9wZXh0X3UzMih1bnNp
Z25lZCBpbnQgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCApOw0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX3JvcnhfdTMyKHVuc2lnbmVkIGludCAsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50ICk7DQpl
eHRlcm4gaW50ICAgICAgICAgICAgICBfc2FyeF9pMzIoaW50ICwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAg
IF9zaGx4X3UzMih1bnNpZ25lZCBpbnQgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCApOw0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX3NocnhfdTMyKHVu
c2lnbmVkIGludCAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgKTsNCg0KDQpleHRlcm4gdW5zaWduZWQgX19pbnQ2NCBfYmV4dHJfdTY0KHVu
c2lnbmVkIF9faW50NjQgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9iZXh0cjJfdTY0KHVuc2lnbmVkIF9faW50
NjQgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2
NCApOw0KZXh0ZXJuIHVuc2lnbmVkIF9faW50NjQgX2Jsc2lfdTY0KHVuc2lnbmVkIF9faW50NjQp
Ow0KZXh0ZXJuIHVuc2lnbmVkIF9faW50NjQgX2Jsc21za191NjQodW5zaWduZWQgX19pbnQ2NCk7
DQpleHRlcm4gdW5zaWduZWQgX19pbnQ2NCBfYmxzcl91NjQodW5zaWduZWQgX19pbnQ2NCk7DQpl
eHRlcm4gdW5zaWduZWQgX19pbnQ2NCBfYnpoaV91NjQodW5zaWduZWQgX19pbnQ2NCAsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICk7DQpleHRlcm4gdW5z
aWduZWQgX19pbnQ2NCBfbXVseF91NjQodW5zaWduZWQgX19pbnQ2NCAsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCAsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCAqICk7DQpleHRlcm4gdW5zaWduZWQg
X19pbnQ2NCBfcGRlcF91NjQodW5zaWduZWQgX19pbnQ2NCAsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NCApOw0KZXh0ZXJuIHVuc2lnbmVkIF9faW50
NjQgX3BleHRfdTY0KHVuc2lnbmVkIF9faW50NjQgLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQgKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9y
b3J4X3U2NCh1bnNpZ25lZCBfX2ludDY0ICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBpbnQgKTsNCmV4dGVybiBfX2ludDY0ICAgICAgICAgIF9zYXJ4
X2k2NChfX2ludDY0ICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9zaGx4X3U2NCh1bnNpZ25lZCBfX2lu
dDY0ICwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKTsN
CmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9zaHJ4X3U2NCh1bnNpZ25lZCBfX2ludDY0ICwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCApOw0K
I2xpbmUgMTg5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxpbW1pbnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gdW5zaWduZWQgaW50ICAg
ICBfbHpjbnRfdTMyKHVuc2lnbmVkIGludCk7DQoNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9s
emNudF91NjQodW5zaWduZWQgX19pbnQ2NCk7DQojbGluZSAxOTA4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGltbWludHJpbi5oIg0KDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF90emNudF91MzIodW5zaWduZWQgaW50KTsN
Cg0KZXh0ZXJuIHVuc2lnbmVkIF9faW50NjQgX3R6Y250X3U2NCh1bnNpZ25lZCBfX2ludDY0KTsN
CiNsaW5lIDE5MjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcaW1taW50cmluLmgiDQoNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCBfX2NkZWNsIF9pbnZw
Y2lkKHVuc2lnbmVkIGludCAsIHZvaWQgKiApOw0KDQoNCmV4dGVybiB2b2lkIF9TdG9yZV9ITEVS
ZWxlYXNlKGxvbmcgdm9sYXRpbGUgKixsb25nKTsNCmV4dGVybiB2b2lkIF9TdG9yZVBvaW50ZXJf
SExFUmVsZWFzZSh2b2lkICogdm9sYXRpbGUgKix2b2lkICopOw0KDQpleHRlcm4gbG9uZyBfSW50
ZXJsb2NrZWRFeGNoYW5nZV9ITEVBY3F1aXJlKGxvbmcgdm9sYXRpbGUgKixsb25nKTsNCmV4dGVy
biBsb25nIF9JbnRlcmxvY2tlZEV4Y2hhbmdlX0hMRVJlbGVhc2UobG9uZyB2b2xhdGlsZSAqLGxv
bmcpOw0KZXh0ZXJuIHZvaWQgKiBfSW50ZXJsb2NrZWRFeGNoYW5nZVBvaW50ZXJfSExFQWNxdWly
ZSh2b2lkICp2b2xhdGlsZSAqLHZvaWQgKik7DQpleHRlcm4gdm9pZCAqIF9JbnRlcmxvY2tlZEV4
Y2hhbmdlUG9pbnRlcl9ITEVSZWxlYXNlKHZvaWQgKnZvbGF0aWxlICosdm9pZCAqKTsNCg0KZXh0
ZXJuIGxvbmcgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlX0hMRUFjcXVpcmUobG9uZyB2b2xh
dGlsZSAqLGxvbmcsbG9uZyk7DQpleHRlcm4gbG9uZyBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFu
Z2VfSExFUmVsZWFzZShsb25nIHZvbGF0aWxlICosbG9uZyxsb25nKTsNCmV4dGVybiBfX2ludDY0
IF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0X0hMRUFjcXVpcmUoX19pbnQ2NCB2b2xhdGls
ZSAqLF9faW50NjQsX19pbnQ2NCk7DQpleHRlcm4gX19pbnQ2NCBfSW50ZXJsb2NrZWRDb21wYXJl
RXhjaGFuZ2U2NF9ITEVSZWxlYXNlKF9faW50NjQgdm9sYXRpbGUgKixfX2ludDY0LF9faW50NjQp
Ow0KZXh0ZXJuIHZvaWQgKiBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyX0hMRUFj
cXVpcmUodm9pZCAqdm9sYXRpbGUgKix2b2lkICosdm9pZCAqKTsNCmV4dGVybiB2b2lkICogX0lu
dGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlcl9ITEVSZWxlYXNlKHZvaWQgKnZvbGF0aWxl
ICosdm9pZCAqLHZvaWQgKik7DQoNCmV4dGVybiBsb25nIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRk
X0hMRUFjcXVpcmUobG9uZyB2b2xhdGlsZSAqLGxvbmcpOw0KZXh0ZXJuIGxvbmcgX0ludGVybG9j
a2VkRXhjaGFuZ2VBZGRfSExFUmVsZWFzZShsb25nIHZvbGF0aWxlICosbG9uZyk7DQoNCmV4dGVy
biBsb25nIF9JbnRlcmxvY2tlZEFuZF9ITEVBY3F1aXJlKGxvbmcgdm9sYXRpbGUgKixsb25nKTsN
CmV4dGVybiBsb25nIF9JbnRlcmxvY2tlZEFuZF9ITEVSZWxlYXNlKGxvbmcgdm9sYXRpbGUgKixs
b25nKTsNCmV4dGVybiBsb25nIF9JbnRlcmxvY2tlZE9yX0hMRUFjcXVpcmUobG9uZyB2b2xhdGls
ZSAqLGxvbmcpOw0KZXh0ZXJuIGxvbmcgX0ludGVybG9ja2VkT3JfSExFUmVsZWFzZShsb25nIHZv
bGF0aWxlICosbG9uZyk7DQpleHRlcm4gbG9uZyBfSW50ZXJsb2NrZWRYb3JfSExFQWNxdWlyZShs
b25nIHZvbGF0aWxlICosbG9uZyk7DQpleHRlcm4gbG9uZyBfSW50ZXJsb2NrZWRYb3JfSExFUmVs
ZWFzZShsb25nIHZvbGF0aWxlICosbG9uZyk7DQoNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9pbnRl
cmxvY2tlZGJpdHRlc3RhbmRzZXRfSExFQWNxdWlyZShsb25nICosbG9uZyk7DQpleHRlcm4gdW5z
aWduZWQgY2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kc2V0X0hMRVJlbGVhc2UobG9uZyAqLGxv
bmcpOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX2ludGVybG9ja2VkYml0dGVzdGFuZHJlc2V0X0hM
RUFjcXVpcmUobG9uZyAqLGxvbmcpOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX2ludGVybG9ja2Vk
Yml0dGVzdGFuZHJlc2V0X0hMRVJlbGVhc2UobG9uZyAqLGxvbmcpOw0KDQoNCmV4dGVybiB2b2lk
IF9TdG9yZTY0X0hMRVJlbGVhc2UoX19pbnQ2NCB2b2xhdGlsZSAqLF9faW50NjQpOw0KZXh0ZXJu
IF9faW50NjQgX0ludGVybG9ja2VkRXhjaGFuZ2U2NF9ITEVBY3F1aXJlKF9faW50NjQgdm9sYXRp
bGUgKixfX2ludDY0KTsNCmV4dGVybiBfX2ludDY0IF9JbnRlcmxvY2tlZEV4Y2hhbmdlNjRfSExF
UmVsZWFzZShfX2ludDY0IHZvbGF0aWxlICosX19pbnQ2NCk7DQoNCmV4dGVybiBfX2ludDY0IF9J
bnRlcmxvY2tlZEV4Y2hhbmdlQWRkNjRfSExFQWNxdWlyZShfX2ludDY0IHZvbGF0aWxlICosX19p
bnQ2NCk7DQpleHRlcm4gX19pbnQ2NCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDY0X0hMRVJlbGVh
c2UoX19pbnQ2NCB2b2xhdGlsZSAqLF9faW50NjQpOw0KDQpleHRlcm4gX19pbnQ2NCBfSW50ZXJs
b2NrZWRBbmQ2NF9ITEVBY3F1aXJlKF9faW50NjQgdm9sYXRpbGUgKixfX2ludDY0KTsNCmV4dGVy
biBfX2ludDY0IF9JbnRlcmxvY2tlZEFuZDY0X0hMRVJlbGVhc2UoX19pbnQ2NCB2b2xhdGlsZSAq
LF9faW50NjQpOw0KZXh0ZXJuIF9faW50NjQgX0ludGVybG9ja2VkT3I2NF9ITEVBY3F1aXJlKF9f
aW50NjQgdm9sYXRpbGUgKixfX2ludDY0KTsNCmV4dGVybiBfX2ludDY0IF9JbnRlcmxvY2tlZE9y
NjRfSExFUmVsZWFzZShfX2ludDY0IHZvbGF0aWxlICosX19pbnQ2NCk7DQpleHRlcm4gX19pbnQ2
NCBfSW50ZXJsb2NrZWRYb3I2NF9ITEVBY3F1aXJlKF9faW50NjQgdm9sYXRpbGUgKixfX2ludDY0
KTsNCmV4dGVybiBfX2ludDY0IF9JbnRlcmxvY2tlZFhvcjY0X0hMRVJlbGVhc2UoX19pbnQ2NCB2
b2xhdGlsZSAqLF9faW50NjQpOw0KDQpleHRlcm4gdW5zaWduZWQgY2hhciBfaW50ZXJsb2NrZWRi
aXR0ZXN0YW5kc2V0NjRfSExFQWNxdWlyZShfX2ludDY0ICosX19pbnQ2NCk7DQpleHRlcm4gdW5z
aWduZWQgY2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kc2V0NjRfSExFUmVsZWFzZShfX2ludDY0
ICosX19pbnQ2NCk7DQpleHRlcm4gdW5zaWduZWQgY2hhciBfaW50ZXJsb2NrZWRiaXR0ZXN0YW5k
cmVzZXQ2NF9ITEVBY3F1aXJlKF9faW50NjQgKixfX2ludDY0KTsNCmV4dGVybiB1bnNpZ25lZCBj
aGFyIF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRyZXNldDY0X0hMRVJlbGVhc2UoX19pbnQ2NCAqLF9f
aW50NjQpOw0KI2xpbmUgMTk3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxpbW1pbnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
dW5zaWduZWQgaW50ICAgICBfX2NkZWNsIF94YmVnaW4odm9pZCk7DQpleHRlcm4gdm9pZCAgICAg
ICAgICAgICBfX2NkZWNsIF94ZW5kKHZvaWQpOw0KZXh0ZXJuIHZvaWQgICAgICAgICAgICAgX19j
ZGVjbCBfeGFib3J0KGNvbnN0IHVuc2lnbmVkIGludCk7DQpleHRlcm4gdW5zaWduZWQgY2hhciAg
ICBfX2NkZWNsIF94dGVzdCh2b2lkKTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IF9fY2Rl
Y2wgX3Jkc2VlZDE2X3N0ZXAodW5zaWduZWQgc2hvcnQgKik7DQpleHRlcm4gaW50IF9fY2RlY2wg
X3Jkc2VlZDMyX3N0ZXAodW5zaWduZWQgaW50ICopOw0KDQpleHRlcm4gaW50IF9fY2RlY2wgX3Jk
c2VlZDY0X3N0ZXAodW5zaWduZWQgX19pbnQ2NCAqKTsNCiNsaW5lIDIwMDcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW1taW50cmluLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX2FkZGNhcnJ5eF91
MzIodW5zaWduZWQgY2hhciAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqICk7DQoNCg0K
DQpleHRlcm4gdW5zaWduZWQgY2hhciBfX2NkZWNsIF9hZGRjYXJyeXhfdTY0KHVuc2lnbmVkIGNo
YXIgLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgX19pbnQ2NCAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0ICwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9faW50NjQgKiApOw0KI2xpbmUg
MjAyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxp
bW1pbnRyaW4uaCINCg0KDQoNCg0KDQpleHRlcm4gdW5zaWduZWQgc2hvcnQgICBfX2NkZWNsIF9s
b2FkX2JlX3UxNih2b2lkIGNvbnN0Kik7DQpleHRlcm4gdW5zaWduZWQgaW50ICAgICBfX2NkZWNs
IF9sb2FkX2JlX3UzMih2b2lkIGNvbnN0Kik7DQpleHRlcm4gdW5zaWduZWQgX19pbnQ2NCBfX2Nk
ZWNsIF9sb2FkX2JlX3U2NCh2b2lkIGNvbnN0Kik7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiB2b2lk
IF9fY2RlY2wgX3N0b3JlX2JlX3UxNih2b2lkICosIHVuc2lnbmVkIHNob3J0KTsNCmV4dGVybiB2
b2lkIF9fY2RlY2wgX3N0b3JlX2JlX3UzMih2b2lkICosIHVuc2lnbmVkIGludCk7DQpleHRlcm4g
dm9pZCBfX2NkZWNsIF9zdG9yZV9iZV91NjQodm9pZCAqLCB1bnNpZ25lZCBfX2ludDY0KTsNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fc2hhMW1zZzFfZXB1MzIoX19t
MTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9zaGExbXNnMl9lcHUz
MihfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX3NoYTFuZXh0
ZV9lcHUzMihfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX3No
YTFybmRzNF9lcHUzMihfX20xMjhpLCBfX20xMjhpLCBjb25zdCBpbnQpOw0KDQpleHRlcm4gX19t
MTI4aSBfX2NkZWNsIF9tbV9zaGEyNTZtc2cxX2VwdTMyKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fc2hhMjU2bXNnMl9lcHUzMihfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX3NoYTI1NnJuZHMyX2VwdTMyKF9fbTEyOGks
IF9fbTEyOGksIF9fbTEyOGkpOw0KDQoNCg0KDQpleHRlcm4gdm9pZCAqIF9fY2RlY2wgX2JuZF9z
ZXRfcHRyX2JvdW5kcyhjb25zdCB2b2lkICosIHNpemVfdCk7DQpleHRlcm4gdm9pZCAqIF9fY2Rl
Y2wgX2JuZF9uYXJyb3dfcHRyX2JvdW5kcyhjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6
ZV90KTsNCmV4dGVybiB2b2lkICogX19jZGVjbCBfYm5kX2NvcHlfcHRyX2JvdW5kcyhjb25zdCB2
b2lkICosIGNvbnN0IHZvaWQgKik7DQpleHRlcm4gdm9pZCAqIF9fY2RlY2wgX2JuZF9pbml0X3B0
cl9ib3VuZHMoY29uc3Qgdm9pZCAqKTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX2JuZF9zdG9yZV9w
dHJfYm91bmRzKGNvbnN0IHZvaWQgKiosIGNvbnN0IHZvaWQgKik7DQpleHRlcm4gdm9pZCBfX2Nk
ZWNsIF9ibmRfY2hrX3B0cl9sYm91bmRzKGNvbnN0IHZvaWQgKik7DQpleHRlcm4gdm9pZCBfX2Nk
ZWNsIF9ibmRfY2hrX3B0cl91Ym91bmRzKGNvbnN0IHZvaWQgKik7DQpleHRlcm4gdm9pZCBfX2Nk
ZWNsIF9ibmRfY2hrX3B0cl9ib3VuZHMoY29uc3Qgdm9pZCAqLCBzaXplX3QpOw0KZXh0ZXJuIHZv
aWQgKiBfX2NkZWNsIF9ibmRfbG9hZF9wdHJfYm91bmRzKGNvbnN0IHZvaWQgKiosIGNvbnN0IHZv
aWQgKik7DQpleHRlcm4gY29uc3Qgdm9pZCAqIF9fY2RlY2wgX2JuZF9nZXRfcHRyX2xib3VuZChj
b25zdCB2b2lkICopOw0KZXh0ZXJuIGNvbnN0IHZvaWQgKiBfX2NkZWNsIF9ibmRfZ2V0X3B0cl91
Ym91bmQoY29uc3Qgdm9pZCAqKTsNCg0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9p
bnNlcnRfZXBpOCAoX19tMjU2aSAsIGludCAsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTI1Nmkg
X19jZGVjbCBfbW0yNTZfaW5zZXJ0X2VwaTE2KF9fbTI1NmkgLCBpbnQgLCBjb25zdCBpbnQgKTsN
CmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2luc2VydF9lcGkzMihfX20yNTZpICwgaW50
ICwgY29uc3QgaW50ICk7DQoNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2luc2VydF9l
cGk2NChfX20yNTZpICwgX19pbnQ2NCAsIGNvbnN0IGludCApOw0KI2xpbmUgMjA4NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbW1pbnRyaW4uaCIN
Cg0KDQpleHRlcm4gaW50IF9fY2RlY2wgX21tMjU2X2V4dHJhY3RfZXBpOCAoX19tMjU2aSAsIGNv
bnN0IGludCApOw0KZXh0ZXJuIGludCBfX2NkZWNsIF9tbTI1Nl9leHRyYWN0X2VwaTE2KF9fbTI1
NmkgLCBjb25zdCBpbnQgKTsNCmV4dGVybiBpbnQgX19jZGVjbCBfbW0yNTZfZXh0cmFjdF9lcGkz
MihfX20yNTZpICwgY29uc3QgaW50ICk7DQoNCmV4dGVybiBfX2ludDY0IF9fY2RlY2wgX21tMjU2
X2V4dHJhY3RfZXBpNjQoX19tMjU2aSAsIGNvbnN0IGludCApOw0KI2xpbmUgMjA5MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbW1pbnRyaW4uaCIN
Cg0KDQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTI1Nl96ZXh0cGQxMjhfcGQyNTYoX19tMTI4
ZCk7DQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTI1Nl96ZXh0cHMxMjhfcHMyNTYoX19tMTI4
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3pleHRzaTEyOF9zaTI1NihfX20xMjhp
KTsNCg0KDQpleHRlcm4gdW5zaWduZWQgaW50IF9fY2RlY2wgX3JkcGlkX3UzMih2b2lkKTsNCg0K
ZXh0ZXJuIHZvaWQgICAgICAgICBfX2NkZWNsIF9wdHdyaXRlMzIodW5zaWduZWQgaW50KTsNCg0K
ZXh0ZXJuIHZvaWQgICAgICAgICBfX2NkZWNsIF9wdHdyaXRlNjQodW5zaWduZWQgX19pbnQ2NCk7
DQojbGluZSAyMTA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGltbWludHJpbi5oIg0KDQoNCmV4dGVybiB1bnNpZ25lZCBpbnQgX19jZGVjbCBfcGNv
bmZpZ191MzIoY29uc3QgaW50LCBzaXplX3QgX19kYXRhW10pOw0KZXh0ZXJuIHZvaWQgX19jZGVj
bCBfd2Jub2ludmQodm9pZCk7DQoNCg0KZXh0ZXJuIHVuc2lnbmVkIGludCBfX2NkZWNsIF9lbmNs
c191MzIoY29uc3QgaW50LCBzaXplX3QgX19kYXRhW10pOw0KZXh0ZXJuIHVuc2lnbmVkIGludCBf
X2NkZWNsIF9lbmNsdV91MzIoY29uc3QgaW50LCBzaXplX3QgX19kYXRhW10pOw0KZXh0ZXJuIHVu
c2lnbmVkIGludCBfX2NkZWNsIF9lbmNsdl91MzIoY29uc3QgaW50LCBzaXplX3QgX19kYXRhW10p
Ow0KDQoNCg0KZXh0ZXJuIHVuc2lnbmVkIF9faW50NjQgX19jZGVjbCBfdWRpdjEyOCh1bnNpZ25l
ZCBfX2ludDY0ICwgdW5zaWduZWQgX19pbnQ2NCAsIHVuc2lnbmVkIF9faW50NjQgLCB1bnNpZ25l
ZCBfX2ludDY0KiApOw0KZXh0ZXJuIF9faW50NjQgICAgICAgICAgX19jZGVjbCBfZGl2MTI4KF9f
aW50NjQgLCBfX2ludDY0ICwgX19pbnQ2NCAsIF9faW50NjQqICk7DQojbGluZSAyMTIxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGltbWludHJpbi5o
Ig0KZXh0ZXJuIHVuc2lnbmVkICAgICAgICAgX19jZGVjbCBfdWRpdjY0KHVuc2lnbmVkIF9faW50
NjQgLCB1bnNpZ25lZCAsIHVuc2lnbmVkKiApOw0KZXh0ZXJuIGludCAgICAgICAgICAgICAgX19j
ZGVjbCBfZGl2NjQoX19pbnQ2NCAsIGludCAsIGludCogKTsNCg0KDQpleHRlcm4gdW5zaWduZWQg
aW50ICAgICBfX2NkZWNsIF9yZHBrcnVfdTMyKHZvaWQpOw0KZXh0ZXJuIHZvaWQgICAgICAgICAg
ICAgX19jZGVjbCBfd3Jwa3J1KHVuc2lnbmVkIGludCk7DQoNCg0KZXh0ZXJuIGludCAgICAgICAg
ICAgICAgX19jZGVjbCBfZW5xY21kKHZvaWQgKiAsIGNvbnN0IHZvaWQgKiApOw0KZXh0ZXJuIGlu
dCAgICAgICAgICAgICAgX19jZGVjbCBfZW5xY21kcyh2b2lkICogLCBjb25zdCB2b2lkICogKTsN
Cg0KDQoNCg0KZXh0ZXJuIHZvaWQgICAgICAgICAgICAgX19jZGVjbCBfaW5jc3NwZCAodW5zaWdu
ZWQgaW50KTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9fY2RlY2wgX3Jkc3NwZCAodm9pZCk7
DQpleHRlcm4gdm9pZCAgICAgICAgICAgICBfX2NkZWNsIF9zYXZlcHJldnNzcCAodm9pZCk7DQpl
eHRlcm4gdm9pZCAgICAgICAgICAgICBfX2NkZWNsIF9yc3RvcnNzcCAodm9pZCAqKTsNCmV4dGVy
biB2b2lkICAgICAgICAgICAgIF9fY2RlY2wgX3dyc3NkICh1bnNpZ25lZCBpbnQsIHZvaWQgKik7
DQpleHRlcm4gdm9pZCAgICAgICAgICAgICBfX2NkZWNsIF93cnVzc2QgKHVuc2lnbmVkIGludCwg
dm9pZCAqKTsNCmV4dGVybiB2b2lkICAgICAgICAgICAgIF9fY2RlY2wgX3NldHNzYnN5ICh2b2lk
KTsNCmV4dGVybiB2b2lkICAgICAgICAgICAgIF9fY2RlY2wgX2NscnNzYnN5ICh2b2lkICopOw0K
ZXh0ZXJuIHZvaWQgKiAgICAgICAgICAgX19jZGVjbCBfc3dpdGNoc3NwKHZvaWQgKik7DQoNCmV4
dGVybiB2b2lkICAgICAgICAgICAgIF9fY2RlY2wgX2luY3NzcHEgKHVuc2lnbmVkIF9faW50NjQp
Ow0KZXh0ZXJuIHVuc2lnbmVkIF9faW50NjQgX19jZGVjbCBfcmRzc3BxICh2b2lkKTsNCmV4dGVy
biB2b2lkICAgICAgICAgICAgIF9fY2RlY2wgX3dyc3NxICh1bnNpZ25lZCBfX2ludDY0LCB2b2lk
ICopOw0KZXh0ZXJuIHZvaWQgICAgICAgICAgICAgX19jZGVjbCBfd3J1c3NxKHVuc2lnbmVkIF9f
aW50NjQsIHZvaWQgKik7DQojbGluZSAyMTUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGltbWludHJpbi5oIg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9f
bTEyOGkgX21tX2Rpdl9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX21t
X2Rpdl9lcGkxNihfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9tbV9kaXZfZXBp
MzIoX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfbW1fZGl2X2VwaTY0KF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2Rpdl9lcHU4KF9fbTEyOGksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2Rpdl9lcHUxNihfX20xMjhpLCBfX20xMjhpKTsNCmV4
dGVybiBfX20xMjhpIF9tbV9kaXZfZXB1MzIoX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19t
MTI4aSBfbW1fZGl2X2VwdTY0KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX21t
X3JlbV9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3JlbV9lcGkx
NihfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9tbV9yZW1fZXBpMzIoX19tMTI4
aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfbW1fcmVtX2VwaTY0KF9fbTEyOGksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX3JlbV9lcHU4KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgX21tX3JlbV9lcHUxNihfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20x
MjhpIF9tbV9yZW1fZXB1MzIoX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfbW1f
cmVtX2VwdTY0KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgX21tMjU2X2Rpdl9l
cGk4KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX21tMjU2X2Rpdl9lcGkxNihf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9tbTI1Nl9kaXZfZXBpMzIoX19tMjU2
aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfbW0yNTZfZGl2X2VwaTY0KF9fbTI1NmksIF9f
bTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX21tMjU2X2Rpdl9lcHU4KF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTI1NmkgX21tMjU2X2Rpdl9lcHUxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX20yNTZpIF9tbTI1Nl9kaXZfZXB1MzIoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMjU2aSBfbW0yNTZfZGl2X2VwdTY0KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1
NmkgX21tMjU2X3JlbV9lcGk4KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX21t
MjU2X3JlbV9lcGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9tbTI1Nl9y
ZW1fZXBpMzIoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfbW0yNTZfcmVtX2Vw
aTY0KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX21tMjU2X3JlbV9lcHU4KF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX21tMjU2X3JlbV9lcHUxNihfX20yNTZp
LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9tbTI1Nl9yZW1fZXB1MzIoX19tMjU2aSwgX19t
MjU2aSk7DQpleHRlcm4gX19tMjU2aSBfbW0yNTZfcmVtX2VwdTY0KF9fbTI1NmksIF9fbTI1Nmkp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4aSBfbW1fZGl2cmVtX2VwaTMyKF9f
bTEyOGkgKiAsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX21tX2RpdnJlbV9l
cHUzMihfX20xMjhpICogLCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9tbTI1
Nl9kaXZyZW1fZXBpMzIoX19tMjU2aSAqICwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
MjU2aSBfbW0yNTZfZGl2cmVtX2VwdTMyKF9fbTI1NmkgKiAsIF9fbTI1NmksIF9fbTI1NmkpOw0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gX19tMTI4ICBfbW1fc2luX3BzKF9fbTEyOCk7DQpleHRlcm4g
X19tMTI4ZCBfbW1fc2luX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X3Npbl9w
cyhfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX21tMjU2X3Npbl9wZChfX20yNTZkKTsNCmV4dGVy
biBfX20xMjggIF9tbV9jb3NfcHMoX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9tbV9jb3NfcGQo
X19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfY29zX3BzKF9fbTI1Nik7DQpleHRlcm4g
X19tMjU2ZCBfbW0yNTZfY29zX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX3NpbmNv
c19wcyhfX20xMjggICogLCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX3NpbmNvc19wZChf
X20xMjhkICogLCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9zaW5jb3NfcHMoX19t
MjU2ICAqICwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9zaW5jb3NfcGQoX19tMjU2
ZCAqICwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1fdGFuX3BzKF9fbTEyOCk7DQpleHRl
cm4gX19tMTI4ZCBfbW1fdGFuX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X3Rh
bl9wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX21tMjU2X3Rhbl9wZChfX20yNTZkKTsNCmV4
dGVybiBfX20xMjggIF9tbV9hc2luX3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fYXNp
bl9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9hc2luX3BzKF9fbTI1Nik7DQpl
eHRlcm4gX19tMjU2ZCBfbW0yNTZfYXNpbl9wZChfX20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9t
bV9hY29zX3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fYWNvc19wZChfX20xMjhkKTsN
CmV4dGVybiBfX20yNTYgIF9tbTI1Nl9hY29zX3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBf
bW0yNTZfYWNvc19wZChfX20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9hdGFuX3BzKF9fbTEy
OCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fYXRhbl9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYg
IF9tbTI1Nl9hdGFuX3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBfbW0yNTZfYXRhbl9wZChf
X20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9hdGFuMl9wcyhfX20xMjgsIF9fbTEyOCk7DQpl
eHRlcm4gX19tMTI4ZCBfbW1fYXRhbjJfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19t
MjU2ICBfbW0yNTZfYXRhbjJfcHMoX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX21t
MjU2X2F0YW4yX3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX3NpbmRf
cHMoX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9tbV9zaW5kX3BkKF9fbTEyOGQpOw0KZXh0ZXJu
IF9fbTI1NiAgX21tMjU2X3NpbmRfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9z
aW5kX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX2Nvc2RfcHMoX19tMTI4KTsNCmV4
dGVybiBfX20xMjhkIF9tbV9jb3NkX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2
X2Nvc2RfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9jb3NkX3BkKF9fbTI1NmQp
Ow0KZXh0ZXJuIF9fbTEyOCAgX21tX3RhbmRfcHMoX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9t
bV90YW5kX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X3RhbmRfcHMoX19tMjU2
KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl90YW5kX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEy
OCAgX21tX3NpbmhfcHMoX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9tbV9zaW5oX3BkKF9fbTEy
OGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X3NpbmhfcHMoX19tMjU2KTsNCmV4dGVybiBfX20y
NTZkIF9tbTI1Nl9zaW5oX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX2Nvc2hfcHMo
X19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9tbV9jb3NoX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9f
bTI1NiAgX21tMjU2X2Nvc2hfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9jb3No
X3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX3RhbmhfcHMoX19tMTI4KTsNCmV4dGVy
biBfX20xMjhkIF9tbV90YW5oX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X3Rh
bmhfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl90YW5oX3BkKF9fbTI1NmQpOw0K
ZXh0ZXJuIF9fbTEyOCAgX21tX2FzaW5oX3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1f
YXNpbmhfcGQoX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfYXNpbmhfcHMoX19tMjU2
KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9hc2luaF9wZChfX20yNTZkKTsNCmV4dGVybiBfX20x
MjggIF9tbV9hY29zaF9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2Fjb3NoX3BkKF9f
bTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X2Fjb3NoX3BzKF9fbTI1Nik7DQpleHRlcm4g
X19tMjU2ZCBfbW0yNTZfYWNvc2hfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1fYXRh
bmhfcHMoX19tMTI4KTsNCmV4dGVybiBfX20xMjhkIF9tbV9hdGFuaF9wZChfX20xMjhkKTsNCmV4
dGVybiBfX20yNTYgIF9tbTI1Nl9hdGFuaF9wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX21t
MjU2X2F0YW5oX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX2xvZ19wcyhfX20xMjgp
Ow0KZXh0ZXJuIF9fbTEyOGQgX21tX2xvZ19wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9t
bTI1Nl9sb2dfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9sb2dfcGQoX19tMjU2
ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1fbG9nMXBfcHMoX19tMTI4KTsNCmV4dGVybiBfX20xMjhk
IF9tbV9sb2cxcF9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9sb2cxcF9wcyhf
X20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX21tMjU2X2xvZzFwX3BkKF9fbTI1NmQpOw0KZXh0ZXJu
IF9fbTEyOCAgX21tX2xvZzEwX3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fbG9nMTBf
cGQoX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfbG9nMTBfcHMoX19tMjU2KTsNCmV4
dGVybiBfX20yNTZkIF9tbTI1Nl9sb2cxMF9wZChfX20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9t
bV9sb2cyX3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fbG9nMl9wZChfX20xMjhkKTsN
CmV4dGVybiBfX20yNTYgIF9tbTI1Nl9sb2cyX3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBf
bW0yNTZfbG9nMl9wZChfX20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9sb2diX3BzKF9fbTEy
OCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fbG9nYl9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYg
IF9tbTI1Nl9sb2diX3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBfbW0yNTZfbG9nYl9wZChf
X20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9leHBfcHMoX19tMTI4KTsNCmV4dGVybiBfX20x
MjhkIF9tbV9leHBfcGQoX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfZXhwX3BzKF9f
bTI1Nik7DQpleHRlcm4gX19tMjU2ZCBfbW0yNTZfZXhwX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9f
bTEyOCAgX21tX2V4cDEwX3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fZXhwMTBfcGQo
X19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfZXhwMTBfcHMoX19tMjU2KTsNCmV4dGVy
biBfX20yNTZkIF9tbTI1Nl9leHAxMF9wZChfX20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9l
eHAyX3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fZXhwMl9wZChfX20xMjhkKTsNCmV4
dGVybiBfX20yNTYgIF9tbTI1Nl9leHAyX3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBfbW0y
NTZfZXhwMl9wZChfX20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9leHBtMV9wcyhfX20xMjgp
Ow0KZXh0ZXJuIF9fbTEyOGQgX21tX2V4cG0xX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAg
X21tMjU2X2V4cG0xX3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBfbW0yNTZfZXhwbTFfcGQo
X19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1fcG93X3BzKF9fbTEyOCwgX19tMTI4KTsNCmV4
dGVybiBfX20xMjhkIF9tbV9wb3dfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2
ICBfbW0yNTZfcG93X3BzKF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9w
b3dfcGQoX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1fdHJ1bmNfcHMoX19t
MTI4KTsNCmV4dGVybiBfX20xMjhkIF9tbV90cnVuY19wZChfX20xMjhkKTsNCmV4dGVybiBfX20y
NTYgIF9tbTI1Nl90cnVuY19wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX21tMjU2X3RydW5j
X3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX3N2bWxfZmxvb3JfcHMoX19tMTI4KTsN
CmV4dGVybiBfX20xMjhkIF9tbV9zdm1sX2Zsb29yX3BkKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1
NiAgX21tMjU2X3N2bWxfZmxvb3JfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9z
dm1sX2Zsb29yX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX3N2bWxfY2VpbF9wcyhf
X20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX3N2bWxfY2VpbF9wZChfX20xMjhkKTsNCmV4dGVy
biBfX20yNTYgIF9tbTI1Nl9zdm1sX2NlaWxfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9t
bTI1Nl9zdm1sX2NlaWxfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1fc3ZtbF9yb3Vu
ZF9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX3N2bWxfcm91bmRfcGQoX19tMTI4ZCk7
DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfc3ZtbF9yb3VuZF9wcyhfX20yNTYpOw0KZXh0ZXJuIF9f
bTI1NmQgX21tMjU2X3N2bWxfcm91bmRfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1f
Zm1vZF9wcyhfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fZm1vZF9wZChfX20x
MjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9mbW9kX3BzKF9fbTI1NiwgX19t
MjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9mbW9kX3BkKF9fbTI1NmQsIF9fbTI1NmQpOw0K
ZXh0ZXJuIF9fbTEyOCAgX21tX3N2bWxfc3FydF9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQg
X21tX3N2bWxfc3FydF9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9zdm1sX3Nx
cnRfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9zdm1sX3NxcnRfcGQoX19tMjU2
ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1faW52c3FydF9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEy
OGQgX21tX2ludnNxcnRfcGQoX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfaW52c3Fy
dF9wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NmQgX21tMjU2X2ludnNxcnRfcGQoX19tMjU2ZCk7
DQpleHRlcm4gX19tMTI4ICBfbW1fY2JydF9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21t
X2NicnRfcGQoX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfY2JydF9wcyhfX20yNTYp
Ow0KZXh0ZXJuIF9fbTI1NmQgX21tMjU2X2NicnRfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4
ICBfbW1faW52Y2JydF9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2ludmNicnRfcGQo
X19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfaW52Y2JydF9wcyhfX20yNTYpOw0KZXh0
ZXJuIF9fbTI1NmQgX21tMjU2X2ludmNicnRfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBf
bW1faHlwb3RfcHMoX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2h5cG90X3Bk
KF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X2h5cG90X3BzKF9fbTI1
NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9oeXBvdF9wZChfX20yNTZkLCBfX20y
NTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9jZGZub3JtX3BzKF9fbTEyOCk7DQpleHRlcm4gX19t
MTI4ZCBfbW1fY2Rmbm9ybV9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9jZGZu
b3JtX3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBfbW0yNTZfY2Rmbm9ybV9wZChfX20yNTZk
KTsNCmV4dGVybiBfX20xMjggIF9tbV9jZGZub3JtaW52X3BzKF9fbTEyOCk7DQpleHRlcm4gX19t
MTI4ZCBfbW1fY2Rmbm9ybWludl9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9j
ZGZub3JtaW52X3BzKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ZCBfbW0yNTZfY2Rmbm9ybWludl9w
ZChfX20yNTZkKTsNCmV4dGVybiBfX20xMjggIF9tbV9jZXhwX3BzKF9fbTEyOCk7DQpleHRlcm4g
X19tMjU2ICBfbW0yNTZfY2V4cF9wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX2Nsb2df
cHMoX19tMTI4KTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9jbG9nX3BzKF9fbTI1Nik7DQpleHRl
cm4gX19tMTI4ICBfbW1fY3NxcnRfcHMoX19tMTI4KTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9j
c3FydF9wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOCAgX21tX2VyZl9wcyhfX20xMjgpOw0KZXh0
ZXJuIF9fbTEyOGQgX21tX2VyZl9wZChfX20xMjhkKTsNCmV4dGVybiBfX20yNTYgIF9tbTI1Nl9l
cmZfcHMoX19tMjU2KTsNCmV4dGVybiBfX20yNTZkIF9tbTI1Nl9lcmZfcGQoX19tMjU2ZCk7DQpl
eHRlcm4gX19tMTI4ICBfbW1fZXJmY19wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2Vy
ZmNfcGQoX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfZXJmY19wcyhfX20yNTYpOw0K
ZXh0ZXJuIF9fbTI1NmQgX21tMjU2X2VyZmNfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBf
bW1fZXJmY2ludl9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgX21tX2VyZmNpbnZfcGQoX19t
MTI4ZCk7DQpleHRlcm4gX19tMjU2ICBfbW0yNTZfZXJmY2ludl9wcyhfX20yNTYpOw0KZXh0ZXJu
IF9fbTI1NmQgX21tMjU2X2VyZmNpbnZfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICBfbW1f
ZXJmaW52X3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ZCBfbW1fZXJmaW52X3BkKF9fbTEyOGQp
Ow0KZXh0ZXJuIF9fbTI1NiAgX21tMjU2X2VyZmludl9wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTI1
NmQgX21tMjU2X2VyZmludl9wZChfX20yNTZkKTsNCg0KDQpleHRlcm4gdm9pZCBfbW1fY2xkZW1v
dGUodm9pZCBjb25zdCAqKTsNCg0KDQoNCmV4dGVybiB2b2lkIF9kaXJlY3RzdG9yZXVfdTMyKHZv
aWQgKiwgdW5zaWduZWQgaW50KTsNCg0KZXh0ZXJuIHZvaWQgX2RpcmVjdHN0b3JldV91NjQodm9p
ZCAqLCB1bnNpZ25lZCBfX2ludDY0KTsNCiNsaW5lIDIzOTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW1taW50cmluLmgiDQpleHRlcm4gdm9pZCBf
bW92ZGlyNjRiKHZvaWQgKiwgdm9pZCBjb25zdCAqKTsNCg0KDQpleHRlcm4gdm9pZCBfX2NkZWNs
IF9zZXJpYWxpemUodm9pZCk7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF94c3VzbGR0cmsodm9pZCk7
DQpleHRlcm4gdm9pZCBfX2NkZWNsIF94cmVzbGR0cmsodm9pZCk7DQoNCg0KZXh0ZXJuIHZvaWQg
X3Vtb25pdG9yKHZvaWQgKik7DQpleHRlcm4gdW5zaWduZWQgY2hhciBfdW13YWl0KHVuc2lnbmVk
IGludCwgdW5zaWduZWQgX19pbnQ2NCk7DQpleHRlcm4gdW5zaWduZWQgY2hhciBfdHBhdXNlKHVu
c2lnbmVkIGludCwgdW5zaWduZWQgX19pbnQ2NCk7DQoNCg0KDQp9OyANCiNsaW5lIDI0MTMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW1taW50cmlu
LmgiDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcem1taW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IHVuc2lnbmVkIGNoYXIgICAgICAgX19tbWFzazg7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAg
ICAgX19tbWFzazE2Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgIF9fbW1hc2szMjsNCnR5
cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICBfX21tYXNrNjQ7DQoNCnR5cGVkZWYgdW5pb24gX19k
ZWNsc3BlYyhpbnRyaW5fdHlwZSkgX19kZWNsc3BlYyhhbGlnbig2NCkpIF9fbTUxMiB7DQogICAg
ZmxvYXQgbTUxMl9mMzJbMTZdOw0KfSBfX201MTI7DQoNCnR5cGVkZWYgc3RydWN0IF9fZGVjbHNw
ZWMoaW50cmluX3R5cGUpIF9fZGVjbHNwZWMoYWxpZ24oNjQpKSBfX201MTJkIHsNCiAgICBkb3Vi
bGUgbTUxMmRfZjY0WzhdOw0KfSBfX201MTJkOw0KDQp0eXBlZGVmIHVuaW9uICBfX2RlY2xzcGVj
KGludHJpbl90eXBlKSBfX2RlY2xzcGVjKGFsaWduKDY0KSkgX19tNTEyaSB7DQogICAgX19pbnQ4
ICAgICAgICAgICAgICBtNTEyaV9pOFs2NF07DQogICAgX19pbnQxNiAgICAgICAgICAgICBtNTEy
aV9pMTZbMzJdOw0KICAgIF9faW50MzIgICAgICAgICAgICAgbTUxMmlfaTMyWzE2XTsNCiAgICBf
X2ludDY0ICAgICAgICAgICAgIG01MTJpX2k2NFs4XTsNCiAgICB1bnNpZ25lZCBfX2ludDggICAg
IG01MTJpX3U4WzY0XTsNCiAgICB1bnNpZ25lZCBfX2ludDE2ICAgIG01MTJpX3UxNlszMl07DQog
ICAgdW5zaWduZWQgX19pbnQzMiAgICBtNTEyaV91MzJbMTZdOw0KICAgIHVuc2lnbmVkIF9faW50
NjQgICAgbTUxMmlfdTY0WzhdOw0KfSBfX201MTJpOw0KDQoNCg0KZXh0ZXJuICJDIiB7DQoNCiNs
aW5lIDcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHptbWludHJpbi5oIg0KDQoNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tNTEyX2Nhc3RwczUx
Ml9wczI1NihfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfY2FzdHBkX3Bz
KF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfY2FzdHBzMjU2X3BzNTEy
KF9fbTI1Nik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9jYXN0c2k1MTJfcHMoX19t
NTEyaSk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9jYXN0cHMxMjhfcHM1MTIoX19t
MTI4KTsNCg0KZXh0ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW01MTJfY2FzdHBkNTEyX3BkMjU2KF9f
bTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfY2FzdHBkMjU2X3BkNTEyKF9f
bTI1NmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfY2FzdHBzX3BkKF9fbTUxMik7
DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9jYXN0c2k1MTJfcGQoX19tNTEyaSk7DQpl
eHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9jYXN0cGQxMjhfcGQ1MTIoX19tMTI4ZCk7DQoN
CmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX2Nhc3RzaTUxMl9zaTI1NihfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2Nhc3RwZF9zaTUxMihfX201MTJkKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2Nhc3Rwc19zaTUxMihfX201MTIpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY2FzdHNpMjU2X3NpNTEyKF9fbTI1NmkpOw0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgZW51bSB7DQogICAgX01NX0JST0FEQ0FTVDMyX05PTkUsICAgDQoN
CiAgICBfTU1fQlJPQURDQVNUXzFYMTYsICAgICANCiAgICBfTU1fQlJPQURDQVNUXzRYMTYgICAg
ICANCn0gX01NX0JST0FEQ0FTVDMyX0VOVU07DQoNCg0KdHlwZWRlZiBlbnVtIHsNCiAgICBfTU1f
QlJPQURDQVNUNjRfTk9ORSwgICANCg0KICAgIF9NTV9CUk9BRENBU1RfMVg4LCAgICAgIA0KICAg
IF9NTV9CUk9BRENBU1RfNFg4ICAgICAgIA0KfSBfTU1fQlJPQURDQVNUNjRfRU5VTTsNCg0KDQoN
Cg0KDQoNCnR5cGVkZWYgZW51bSB7DQogICAgX01NX1JPVU5EX01PREVfTkVBUkVTVCwgICAgICAg
ICAgICAgDQogICAgX01NX1JPVU5EX01PREVfRE9XTiwgICAgICAgICAgICAgICAgDQogICAgX01N
X1JPVU5EX01PREVfVVAsICAgICAgICAgICAgICAgICAgDQogICAgX01NX1JPVU5EX01PREVfVE9X
QVJEX1pFUk8sICAgICAgICAgDQogICAgX01NX1JPVU5EX01PREVfREVGQVVMVCwgICAgICAgICAg
ICAgDQogICAgX01NX1JPVU5EX01PREVfTk9fRVhDID0gOCwgICAgICAgICAgDQp9IF9NTV9ST1VO
RF9NT0RFX0VOVU07DQoNCg0KdHlwZWRlZiBlbnVtIHsNCiAgICBfTU1fRVhQQURKX05PTkUsICAg
ICAgICAgICAgICAgDQogICAgX01NX0VYUEFESl80LCAgICAgICAgICAgICAgICAgIA0KICAgIF9N
TV9FWFBBREpfNSwgICAgICAgICAgICAgICAgICANCiAgICBfTU1fRVhQQURKXzgsICAgICAgICAg
ICAgICAgICAgDQogICAgX01NX0VYUEFESl8xNiwgICAgICAgICAgICAgICAgIA0KICAgIF9NTV9F
WFBBREpfMjQsICAgICAgICAgICAgICAgICANCiAgICBfTU1fRVhQQURKXzMxLCAgICAgICAgICAg
ICAgICAgDQogICAgX01NX0VYUEFESl8zMiAgICAgICAgICAgICAgICAgIA0KfSBfTU1fRVhQX0FE
Sl9FTlVNOw0KDQoNCnR5cGVkZWYgZW51bSB7DQogICAgX01NX1NDQUxFXzEgPSAxLA0KICAgIF9N
TV9TQ0FMRV8yID0gMiwNCiAgICBfTU1fU0NBTEVfNCA9IDQsDQogICAgX01NX1NDQUxFXzggPSA4
DQp9IF9NTV9JTkRFWF9TQ0FMRV9FTlVNOw0KDQoNCnR5cGVkZWYgZW51bSB7DQogICAgX01NX1BF
Uk1fQUFBQSA9IDB4MDAsIF9NTV9QRVJNX0FBQUIgPSAweDAxLCBfTU1fUEVSTV9BQUFDID0gMHgw
MiwNCiAgICBfTU1fUEVSTV9BQUFEID0gMHgwMywgX01NX1BFUk1fQUFCQSA9IDB4MDQsIF9NTV9Q
RVJNX0FBQkIgPSAweDA1LA0KICAgIF9NTV9QRVJNX0FBQkMgPSAweDA2LCBfTU1fUEVSTV9BQUJE
ID0gMHgwNywgX01NX1BFUk1fQUFDQSA9IDB4MDgsDQogICAgX01NX1BFUk1fQUFDQiA9IDB4MDks
IF9NTV9QRVJNX0FBQ0MgPSAweDBBLCBfTU1fUEVSTV9BQUNEID0gMHgwQiwNCiAgICBfTU1fUEVS
TV9BQURBID0gMHgwQywgX01NX1BFUk1fQUFEQiA9IDB4MEQsIF9NTV9QRVJNX0FBREMgPSAweDBF
LA0KICAgIF9NTV9QRVJNX0FBREQgPSAweDBGLCBfTU1fUEVSTV9BQkFBID0gMHgxMCwgX01NX1BF
Uk1fQUJBQiA9IDB4MTEsDQogICAgX01NX1BFUk1fQUJBQyA9IDB4MTIsIF9NTV9QRVJNX0FCQUQg
PSAweDEzLCBfTU1fUEVSTV9BQkJBID0gMHgxNCwNCiAgICBfTU1fUEVSTV9BQkJCID0gMHgxNSwg
X01NX1BFUk1fQUJCQyA9IDB4MTYsIF9NTV9QRVJNX0FCQkQgPSAweDE3LA0KICAgIF9NTV9QRVJN
X0FCQ0EgPSAweDE4LCBfTU1fUEVSTV9BQkNCID0gMHgxOSwgX01NX1BFUk1fQUJDQyA9IDB4MUEs
DQogICAgX01NX1BFUk1fQUJDRCA9IDB4MUIsIF9NTV9QRVJNX0FCREEgPSAweDFDLCBfTU1fUEVS
TV9BQkRCID0gMHgxRCwNCiAgICBfTU1fUEVSTV9BQkRDID0gMHgxRSwgX01NX1BFUk1fQUJERCA9
IDB4MUYsIF9NTV9QRVJNX0FDQUEgPSAweDIwLA0KICAgIF9NTV9QRVJNX0FDQUIgPSAweDIxLCBf
TU1fUEVSTV9BQ0FDID0gMHgyMiwgX01NX1BFUk1fQUNBRCA9IDB4MjMsDQogICAgX01NX1BFUk1f
QUNCQSA9IDB4MjQsIF9NTV9QRVJNX0FDQkIgPSAweDI1LCBfTU1fUEVSTV9BQ0JDID0gMHgyNiwN
CiAgICBfTU1fUEVSTV9BQ0JEID0gMHgyNywgX01NX1BFUk1fQUNDQSA9IDB4MjgsIF9NTV9QRVJN
X0FDQ0IgPSAweDI5LA0KICAgIF9NTV9QRVJNX0FDQ0MgPSAweDJBLCBfTU1fUEVSTV9BQ0NEID0g
MHgyQiwgX01NX1BFUk1fQUNEQSA9IDB4MkMsDQogICAgX01NX1BFUk1fQUNEQiA9IDB4MkQsIF9N
TV9QRVJNX0FDREMgPSAweDJFLCBfTU1fUEVSTV9BQ0REID0gMHgyRiwNCiAgICBfTU1fUEVSTV9B
REFBID0gMHgzMCwgX01NX1BFUk1fQURBQiA9IDB4MzEsIF9NTV9QRVJNX0FEQUMgPSAweDMyLA0K
ICAgIF9NTV9QRVJNX0FEQUQgPSAweDMzLCBfTU1fUEVSTV9BREJBID0gMHgzNCwgX01NX1BFUk1f
QURCQiA9IDB4MzUsDQogICAgX01NX1BFUk1fQURCQyA9IDB4MzYsIF9NTV9QRVJNX0FEQkQgPSAw
eDM3LCBfTU1fUEVSTV9BRENBID0gMHgzOCwNCiAgICBfTU1fUEVSTV9BRENCID0gMHgzOSwgX01N
X1BFUk1fQURDQyA9IDB4M0EsIF9NTV9QRVJNX0FEQ0QgPSAweDNCLA0KICAgIF9NTV9QRVJNX0FE
REEgPSAweDNDLCBfTU1fUEVSTV9BRERCID0gMHgzRCwgX01NX1BFUk1fQUREQyA9IDB4M0UsDQog
ICAgX01NX1BFUk1fQURERCA9IDB4M0YsIF9NTV9QRVJNX0JBQUEgPSAweDQwLCBfTU1fUEVSTV9C
QUFCID0gMHg0MSwNCiAgICBfTU1fUEVSTV9CQUFDID0gMHg0MiwgX01NX1BFUk1fQkFBRCA9IDB4
NDMsIF9NTV9QRVJNX0JBQkEgPSAweDQ0LA0KICAgIF9NTV9QRVJNX0JBQkIgPSAweDQ1LCBfTU1f
UEVSTV9CQUJDID0gMHg0NiwgX01NX1BFUk1fQkFCRCA9IDB4NDcsDQogICAgX01NX1BFUk1fQkFD
QSA9IDB4NDgsIF9NTV9QRVJNX0JBQ0IgPSAweDQ5LCBfTU1fUEVSTV9CQUNDID0gMHg0QSwNCiAg
ICBfTU1fUEVSTV9CQUNEID0gMHg0QiwgX01NX1BFUk1fQkFEQSA9IDB4NEMsIF9NTV9QRVJNX0JB
REIgPSAweDRELA0KICAgIF9NTV9QRVJNX0JBREMgPSAweDRFLCBfTU1fUEVSTV9CQUREID0gMHg0
RiwgX01NX1BFUk1fQkJBQSA9IDB4NTAsDQogICAgX01NX1BFUk1fQkJBQiA9IDB4NTEsIF9NTV9Q
RVJNX0JCQUMgPSAweDUyLCBfTU1fUEVSTV9CQkFEID0gMHg1MywNCiAgICBfTU1fUEVSTV9CQkJB
ID0gMHg1NCwgX01NX1BFUk1fQkJCQiA9IDB4NTUsIF9NTV9QRVJNX0JCQkMgPSAweDU2LA0KICAg
IF9NTV9QRVJNX0JCQkQgPSAweDU3LCBfTU1fUEVSTV9CQkNBID0gMHg1OCwgX01NX1BFUk1fQkJD
QiA9IDB4NTksDQogICAgX01NX1BFUk1fQkJDQyA9IDB4NUEsIF9NTV9QRVJNX0JCQ0QgPSAweDVC
LCBfTU1fUEVSTV9CQkRBID0gMHg1QywNCiAgICBfTU1fUEVSTV9CQkRCID0gMHg1RCwgX01NX1BF
Uk1fQkJEQyA9IDB4NUUsIF9NTV9QRVJNX0JCREQgPSAweDVGLA0KICAgIF9NTV9QRVJNX0JDQUEg
PSAweDYwLCBfTU1fUEVSTV9CQ0FCID0gMHg2MSwgX01NX1BFUk1fQkNBQyA9IDB4NjIsDQogICAg
X01NX1BFUk1fQkNBRCA9IDB4NjMsIF9NTV9QRVJNX0JDQkEgPSAweDY0LCBfTU1fUEVSTV9CQ0JC
ID0gMHg2NSwNCiAgICBfTU1fUEVSTV9CQ0JDID0gMHg2NiwgX01NX1BFUk1fQkNCRCA9IDB4Njcs
IF9NTV9QRVJNX0JDQ0EgPSAweDY4LA0KICAgIF9NTV9QRVJNX0JDQ0IgPSAweDY5LCBfTU1fUEVS
TV9CQ0NDID0gMHg2QSwgX01NX1BFUk1fQkNDRCA9IDB4NkIsDQogICAgX01NX1BFUk1fQkNEQSA9
IDB4NkMsIF9NTV9QRVJNX0JDREIgPSAweDZELCBfTU1fUEVSTV9CQ0RDID0gMHg2RSwNCiAgICBf
TU1fUEVSTV9CQ0REID0gMHg2RiwgX01NX1BFUk1fQkRBQSA9IDB4NzAsIF9NTV9QRVJNX0JEQUIg
PSAweDcxLA0KICAgIF9NTV9QRVJNX0JEQUMgPSAweDcyLCBfTU1fUEVSTV9CREFEID0gMHg3Mywg
X01NX1BFUk1fQkRCQSA9IDB4NzQsDQogICAgX01NX1BFUk1fQkRCQiA9IDB4NzUsIF9NTV9QRVJN
X0JEQkMgPSAweDc2LCBfTU1fUEVSTV9CREJEID0gMHg3NywNCiAgICBfTU1fUEVSTV9CRENBID0g
MHg3OCwgX01NX1BFUk1fQkRDQiA9IDB4NzksIF9NTV9QRVJNX0JEQ0MgPSAweDdBLA0KICAgIF9N
TV9QRVJNX0JEQ0QgPSAweDdCLCBfTU1fUEVSTV9CRERBID0gMHg3QywgX01NX1BFUk1fQkREQiA9
IDB4N0QsDQogICAgX01NX1BFUk1fQkREQyA9IDB4N0UsIF9NTV9QRVJNX0JEREQgPSAweDdGLCBf
TU1fUEVSTV9DQUFBID0gMHg4MCwNCiAgICBfTU1fUEVSTV9DQUFCID0gMHg4MSwgX01NX1BFUk1f
Q0FBQyA9IDB4ODIsIF9NTV9QRVJNX0NBQUQgPSAweDgzLA0KICAgIF9NTV9QRVJNX0NBQkEgPSAw
eDg0LCBfTU1fUEVSTV9DQUJCID0gMHg4NSwgX01NX1BFUk1fQ0FCQyA9IDB4ODYsDQogICAgX01N
X1BFUk1fQ0FCRCA9IDB4ODcsIF9NTV9QRVJNX0NBQ0EgPSAweDg4LCBfTU1fUEVSTV9DQUNCID0g
MHg4OSwNCiAgICBfTU1fUEVSTV9DQUNDID0gMHg4QSwgX01NX1BFUk1fQ0FDRCA9IDB4OEIsIF9N
TV9QRVJNX0NBREEgPSAweDhDLA0KICAgIF9NTV9QRVJNX0NBREIgPSAweDhELCBfTU1fUEVSTV9D
QURDID0gMHg4RSwgX01NX1BFUk1fQ0FERCA9IDB4OEYsDQogICAgX01NX1BFUk1fQ0JBQSA9IDB4
OTAsIF9NTV9QRVJNX0NCQUIgPSAweDkxLCBfTU1fUEVSTV9DQkFDID0gMHg5MiwNCiAgICBfTU1f
UEVSTV9DQkFEID0gMHg5MywgX01NX1BFUk1fQ0JCQSA9IDB4OTQsIF9NTV9QRVJNX0NCQkIgPSAw
eDk1LA0KICAgIF9NTV9QRVJNX0NCQkMgPSAweDk2LCBfTU1fUEVSTV9DQkJEID0gMHg5NywgX01N
X1BFUk1fQ0JDQSA9IDB4OTgsDQogICAgX01NX1BFUk1fQ0JDQiA9IDB4OTksIF9NTV9QRVJNX0NC
Q0MgPSAweDlBLCBfTU1fUEVSTV9DQkNEID0gMHg5QiwNCiAgICBfTU1fUEVSTV9DQkRBID0gMHg5
QywgX01NX1BFUk1fQ0JEQiA9IDB4OUQsIF9NTV9QRVJNX0NCREMgPSAweDlFLA0KICAgIF9NTV9Q
RVJNX0NCREQgPSAweDlGLCBfTU1fUEVSTV9DQ0FBID0gMHhBMCwgX01NX1BFUk1fQ0NBQiA9IDB4
QTEsDQogICAgX01NX1BFUk1fQ0NBQyA9IDB4QTIsIF9NTV9QRVJNX0NDQUQgPSAweEEzLCBfTU1f
UEVSTV9DQ0JBID0gMHhBNCwNCiAgICBfTU1fUEVSTV9DQ0JCID0gMHhBNSwgX01NX1BFUk1fQ0NC
QyA9IDB4QTYsIF9NTV9QRVJNX0NDQkQgPSAweEE3LA0KICAgIF9NTV9QRVJNX0NDQ0EgPSAweEE4
LCBfTU1fUEVSTV9DQ0NCID0gMHhBOSwgX01NX1BFUk1fQ0NDQyA9IDB4QUEsDQogICAgX01NX1BF
Uk1fQ0NDRCA9IDB4QUIsIF9NTV9QRVJNX0NDREEgPSAweEFDLCBfTU1fUEVSTV9DQ0RCID0gMHhB
RCwNCiAgICBfTU1fUEVSTV9DQ0RDID0gMHhBRSwgX01NX1BFUk1fQ0NERCA9IDB4QUYsIF9NTV9Q
RVJNX0NEQUEgPSAweEIwLA0KICAgIF9NTV9QRVJNX0NEQUIgPSAweEIxLCBfTU1fUEVSTV9DREFD
ID0gMHhCMiwgX01NX1BFUk1fQ0RBRCA9IDB4QjMsDQogICAgX01NX1BFUk1fQ0RCQSA9IDB4QjQs
IF9NTV9QRVJNX0NEQkIgPSAweEI1LCBfTU1fUEVSTV9DREJDID0gMHhCNiwNCiAgICBfTU1fUEVS
TV9DREJEID0gMHhCNywgX01NX1BFUk1fQ0RDQSA9IDB4QjgsIF9NTV9QRVJNX0NEQ0IgPSAweEI5
LA0KICAgIF9NTV9QRVJNX0NEQ0MgPSAweEJBLCBfTU1fUEVSTV9DRENEID0gMHhCQiwgX01NX1BF
Uk1fQ0REQSA9IDB4QkMsDQogICAgX01NX1BFUk1fQ0REQiA9IDB4QkQsIF9NTV9QRVJNX0NEREMg
PSAweEJFLCBfTU1fUEVSTV9DREREID0gMHhCRiwNCiAgICBfTU1fUEVSTV9EQUFBID0gMHhDMCwg
X01NX1BFUk1fREFBQiA9IDB4QzEsIF9NTV9QRVJNX0RBQUMgPSAweEMyLA0KICAgIF9NTV9QRVJN
X0RBQUQgPSAweEMzLCBfTU1fUEVSTV9EQUJBID0gMHhDNCwgX01NX1BFUk1fREFCQiA9IDB4QzUs
DQogICAgX01NX1BFUk1fREFCQyA9IDB4QzYsIF9NTV9QRVJNX0RBQkQgPSAweEM3LCBfTU1fUEVS
TV9EQUNBID0gMHhDOCwNCiAgICBfTU1fUEVSTV9EQUNCID0gMHhDOSwgX01NX1BFUk1fREFDQyA9
IDB4Q0EsIF9NTV9QRVJNX0RBQ0QgPSAweENCLA0KICAgIF9NTV9QRVJNX0RBREEgPSAweENDLCBf
TU1fUEVSTV9EQURCID0gMHhDRCwgX01NX1BFUk1fREFEQyA9IDB4Q0UsDQogICAgX01NX1BFUk1f
REFERCA9IDB4Q0YsIF9NTV9QRVJNX0RCQUEgPSAweEQwLCBfTU1fUEVSTV9EQkFCID0gMHhEMSwN
CiAgICBfTU1fUEVSTV9EQkFDID0gMHhEMiwgX01NX1BFUk1fREJBRCA9IDB4RDMsIF9NTV9QRVJN
X0RCQkEgPSAweEQ0LA0KICAgIF9NTV9QRVJNX0RCQkIgPSAweEQ1LCBfTU1fUEVSTV9EQkJDID0g
MHhENiwgX01NX1BFUk1fREJCRCA9IDB4RDcsDQogICAgX01NX1BFUk1fREJDQSA9IDB4RDgsIF9N
TV9QRVJNX0RCQ0IgPSAweEQ5LCBfTU1fUEVSTV9EQkNDID0gMHhEQSwNCiAgICBfTU1fUEVSTV9E
QkNEID0gMHhEQiwgX01NX1BFUk1fREJEQSA9IDB4REMsIF9NTV9QRVJNX0RCREIgPSAweERELA0K
ICAgIF9NTV9QRVJNX0RCREMgPSAweERFLCBfTU1fUEVSTV9EQkREID0gMHhERiwgX01NX1BFUk1f
RENBQSA9IDB4RTAsDQogICAgX01NX1BFUk1fRENBQiA9IDB4RTEsIF9NTV9QRVJNX0RDQUMgPSAw
eEUyLCBfTU1fUEVSTV9EQ0FEID0gMHhFMywNCiAgICBfTU1fUEVSTV9EQ0JBID0gMHhFNCwgX01N
X1BFUk1fRENCQiA9IDB4RTUsIF9NTV9QRVJNX0RDQkMgPSAweEU2LA0KICAgIF9NTV9QRVJNX0RD
QkQgPSAweEU3LCBfTU1fUEVSTV9EQ0NBID0gMHhFOCwgX01NX1BFUk1fRENDQiA9IDB4RTksDQog
ICAgX01NX1BFUk1fRENDQyA9IDB4RUEsIF9NTV9QRVJNX0RDQ0QgPSAweEVCLCBfTU1fUEVSTV9E
Q0RBID0gMHhFQywNCiAgICBfTU1fUEVSTV9EQ0RCID0gMHhFRCwgX01NX1BFUk1fRENEQyA9IDB4
RUUsIF9NTV9QRVJNX0RDREQgPSAweEVGLA0KICAgIF9NTV9QRVJNX0REQUEgPSAweEYwLCBfTU1f
UEVSTV9EREFCID0gMHhGMSwgX01NX1BFUk1fRERBQyA9IDB4RjIsDQogICAgX01NX1BFUk1fRERB
RCA9IDB4RjMsIF9NTV9QRVJNX0REQkEgPSAweEY0LCBfTU1fUEVSTV9EREJCID0gMHhGNSwNCiAg
ICBfTU1fUEVSTV9EREJDID0gMHhGNiwgX01NX1BFUk1fRERCRCA9IDB4RjcsIF9NTV9QRVJNX0RE
Q0EgPSAweEY4LA0KICAgIF9NTV9QRVJNX0REQ0IgPSAweEY5LCBfTU1fUEVSTV9ERENDID0gMHhG
QSwgX01NX1BFUk1fRERDRCA9IDB4RkIsDQogICAgX01NX1BFUk1fREREQSA9IDB4RkMsIF9NTV9Q
RVJNX0REREIgPSAweEZELCBfTU1fUEVSTV9ERERDID0gMHhGRSwNCiAgICBfTU1fUEVSTV9ERERE
ID0gMHhGRg0KfSBfTU1fUEVSTV9FTlVNOw0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSB7DQogICAg
X01NX0ZJWFVQX05PX0NIQU5HRSwNCiAgICBfTU1fRklYVVBfTkVHX0lORiwNCiAgICBfTU1fRklY
VVBfTkVHX1pFUk8sDQogICAgX01NX0ZJWFVQX1BPU19aRVJPLA0KICAgIF9NTV9GSVhVUF9QT1Nf
SU5GLA0KICAgIF9NTV9GSVhVUF9OQU4sDQogICAgX01NX0ZJWFVQX01BWF9GTE9BVCwNCiAgICBf
TU1fRklYVVBfTUlOX0ZMT0FUDQp9IF9NTV9GSVhVUFJFU1VMVF9FTlVNOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIHsNCiAgICBfTU1fTUFO
VF9OT1JNXzFfMiwgICAgICANCiAgICBfTU1fTUFOVF9OT1JNX3A1XzIsICAgICANCiAgICBfTU1f
TUFOVF9OT1JNX3A1XzEsICAgICANCiAgICBfTU1fTUFOVF9OT1JNX3A3NV8xcDUgICANCn0gX01N
X01BTlRJU1NBX05PUk1fRU5VTTsNCg0KdHlwZWRlZiBlbnVtIHsNCiAgICBfTU1fTUFOVF9TSUdO
X3NyYywgICAgICANCiAgICBfTU1fTUFOVF9TSUdOX3plcm8sICAgICANCiAgICBfTU1fTUFOVF9T
SUdOX25hbiAgICAgICANCn0gX01NX01BTlRJU1NBX1NJR05fRU5VTTsNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgZW51bSB7DQogICAgX01NX0NNUElOVF9FUSwgICAgICANCiAgICBfTU1fQ01QSU5UX0xU
LCAgICAgIA0KICAgIF9NTV9DTVBJTlRfTEUsICAgICAgDQogICAgX01NX0NNUElOVF9VTlVTRUQs
DQogICAgX01NX0NNUElOVF9ORSwgICAgICANCiAgICBfTU1fQ01QSU5UX05MVCwgICAgIA0KDQog
ICAgX01NX0NNUElOVF9OTEUgICAgICANCg0KfSBfTU1fQ01QSU5UX0VOVU07DQoNCg0KDQoNCg0K
ZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfc2V0emVyb19wcyh2b2lkKTsNCmV4dGVybiBf
X201MTJkIF9fY2RlY2wgX21tNTEyX3NldHplcm9fcGQodm9pZCk7DQoNCmV4dGVybiBfX201MTIg
IF9fY2RlY2wgX21tNTEyX3NldF9wcyhmbG9hdCAsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX3Nl
dF9wZChkb3VibGUgLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91
YmxlLCBkb3VibGUgKTsNCg0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfc2V0cl9wcyhm
bG9hdCAsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQgKTsN
CmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX3NldHJfcGQoZG91YmxlICwgZG91YmxlLCBk
b3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICk7DQoNCmV4dGVy
biBfX201MTIgIF9fY2RlY2wgX21tNTEyX3NldDFfcHMoZmxvYXQpOw0KZXh0ZXJuIF9fbTUxMmQg
X19jZGVjbCBfbW01MTJfc2V0MV9wZChkb3VibGUpOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNs
IF9tbTUxMl9sb2FkX3BzKHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21t
NTEyX2xvYWRfcGQodm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJf
bWFza3pfbG9hZF9wcyhfX21tYXNrMTYsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJkIF9f
Y2RlY2wgX21tNTEyX21hc2t6X2xvYWRfcGQoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVy
biBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfbG9hZF9wcyhfX201MTIsIF9fbW1hc2sxNiwg
dm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19sb2FkX3Bk
KF9fbTUxMmQsIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNs
IF9tbTUxMl9sb2FkdV9wcyh2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9t
bTUxMl9sb2FkdV9wZCh2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUx
Ml9tYXNrel9sb2FkdV9wcyhfX21tYXNrMTYsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2t6X2xvYWR1X3BkKF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpl
eHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2xvYWR1X3BzKF9fbTUxMiwgX19tbWFz
azE2LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2xv
YWR1X3BkKF9fbTUxMmQsIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQoNCmV4dGVybiB2b2lkICAg
IF9fY2RlY2wgX21tNTEyX3N0b3JlX3BzKHZvaWQqLCBfX201MTIpOw0KZXh0ZXJuIHZvaWQgICAg
X19jZGVjbCBfbW01MTJfc3RvcmVfcGQodm9pZCosIF9fbTUxMmQpOw0KZXh0ZXJuIHZvaWQgICAg
X19jZGVjbCBfbW01MTJfc3RvcmV1X3BzKHZvaWQqLCBfX201MTIpOw0KZXh0ZXJuIHZvaWQgICAg
X19jZGVjbCBfbW01MTJfc3RvcmV1X3BkKHZvaWQqLCBfX201MTJkKTsNCmV4dGVybiB2b2lkICAg
IF9fY2RlY2wgX21tNTEyX21hc2tfc3RvcmVfcHModm9pZCosIF9fbW1hc2sxNiwgX19tNTEyKTsN
CmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfc3RvcmVfcGQodm9pZCosIF9fbW1h
c2s4LCBfX201MTJkKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfc3RvcmV1
X3BzKHZvaWQqLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9t
bTUxMl9tYXNrX3N0b3JldV9wZCh2b2lkKiwgX19tbWFzazgsIF9fbTUxMmQpOw0KDQpleHRlcm4g
X19tNTEyICBfX2NkZWNsIF9tbTUxMl9hZGRfcHMoX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9f
bTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfYWRkX3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201
MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19hZGRfcHMoX19tNTEyLCBf
X21tYXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEy
X2FkZF9yb3VuZF9wcyhfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEy
ICBfX2NkZWNsIF9tbTUxMl9tYXNrel9hZGRfcm91bmRfcHMoX19tbWFzazE2LCBfX201MTIsIF9f
bTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2Fk
ZF9yb3VuZF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIGNvbnN0IGludCAp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfYWRkX3BkKF9fbTUxMmQsIF9fbTUxMmQp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfYWRkX3BkKF9fbW1hc2s4LCBf
X201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfYWRk
X3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX2FkZF9yb3VuZF9wZChfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQg
KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2FkZF9yb3VuZF9wZChfX21t
YXNrOCwgX19tNTEyZCwgX19tNTEyZCwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyZCBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2FkZF9yb3VuZF9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwg
X19tNTEyZCwgY29uc3QgaW50ICk7DQoNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX3N1
Yl9wcyhfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNr
el9zdWJfcHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3N1Yl9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIp
Ow0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfc3ViX3JvdW5kX3BzKF9fbTUxMiwgX19t
NTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X3N1
Yl9yb3VuZF9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVy
biBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfc3ViX3JvdW5kX3BzKF9fbTUxMiwgX19tbWFz
azE2LCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNs
IF9tbTUxMl9zdWJfcGQoX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNs
IF9tbTUxMl9tYXNrel9zdWJfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJu
IF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19zdWJfcGQoX19tNTEyZCwgX19tbWFzazgsIF9f
bTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfc3ViX3JvdW5k
X3BkKF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVj
bCBfbW01MTJfbWFza3pfc3ViX3JvdW5kX3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBj
b25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfc3ViX3JvdW5k
X3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQgKTsNCg0K
ZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbXVsX3BzKF9fbTUxMiwgX19tNTEyKTsNCmV4
dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X211bF9wcyhfX21tYXNrMTYsIF9fbTUx
MiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfbXVsX3BzKF9f
bTUxMiwgX19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNs
IF9tbTUxMl9tdWxfcm91bmRfcHMoIF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVy
biBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X211bF9yb3VuZF9wcyhfX21tYXNrMTYsIF9f
bTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEy
X21hc2tfbXVsX3JvdW5kX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgY29u
c3QgaW50ICk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tdWxfcGQoX19tNTEyZCwg
X19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9tdWxfcGQoX19t
bWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJf
bWFza19tdWxfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJu
IF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbXVsX3JvdW5kX3BkKF9fbTUxMmQsIF9fbTUxMmQsIGNv
bnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfbXVsX3JvdW5k
X3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201
MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfbXVsX3JvdW5kX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBf
X201MTJkLCBfX201MTJkLCBjb25zdCBpbnQgKTsNCg0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBf
bW01MTJfZGl2X3BzKF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21t
NTEyX21hc2t6X2Rpdl9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201
MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfZGl2X3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIs
IF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9kaXZfcm91bmRfcHMoX19t
NTEyLCBfX201MTIsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJf
bWFza3pfZGl2X3JvdW5kX3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIGNvbnN0IGludCAp
Ow0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19kaXZfcm91bmRfcHMoX19tNTEy
LCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX2Rpdl9wZChfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2t6X2Rpdl9wZChfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7
DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2Rpdl9wZChfX201MTJkLCBfX21t
YXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9k
aXZfcm91bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEy
ZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9kaXZfcm91bmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9f
bTUxMmQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19k
aXZfcm91bmRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGlu
dCApOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9mbWFkZF9wcyhfX201MTIsIF9f
bTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfZm1hZGRf
cHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9f
Y2RlY2wgX21tNTEyX21hc2szX2ZtYWRkX3BzKF9fbTUxMiwgX19tNTEyLCBfX201MTIsIF9fbW1h
c2sxNik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9mbWFkZF9wcyhfX21t
YXNrMTYsIF9fbTUxMiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBf
bW01MTJfZm1hZGRfcm91bmRfcHMoX19tNTEyLCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7
DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2ZtYWRkX3JvdW5kX3BzKF9fbTUx
MiwgX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEy
ICBfX2NkZWNsIF9tbTUxMl9tYXNrM19mbWFkZF9yb3VuZF9wcyhfX201MTIsIF9fbTUxMiwgX19t
NTEyLCBfX21tYXNrMTYsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfbWFza3pfZm1hZGRfcm91bmRfcHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgX19tNTEy
LCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2ZtYWRkX3BkKF9f
bTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJf
bWFza19mbWFkZF9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRl
cm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrM19mbWFkZF9wZChfX201MTJkLCBfX201MTJk
LCBfX201MTJkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
el9mbWFkZF9wZChfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4g
X19tNTEyZCBfX2NkZWNsIF9tbTUxMl9mbWFkZF9yb3VuZF9wZChfX201MTJkLCBfX201MTJkLCBf
X201MTJkLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tf
Zm1hZGRfcm91bmRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0
IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFzazNfZm1hZGRfcm91bmRf
cGQoX19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCwgX19tbWFzazgsIGNvbnN0IGludCApOw0KZXh0
ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfZm1hZGRfcm91bmRfcGQoX19tbWFzazgs
IF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KDQpleHRlcm4gX19tNTEy
ICBfX2NkZWNsIF9tbTUxMl9mbXN1Yl9wcyhfX201MTIsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVy
biBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfZm1zdWJfcHMoX19tNTEyLCBfX21tYXNrMTYs
IF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2szX2Zt
c3ViX3BzKF9fbTUxMiwgX19tNTEyLCBfX201MTIsIF9fbW1hc2sxNik7DQpleHRlcm4gX19tNTEy
ICBfX2NkZWNsIF9tbTUxMl9tYXNrel9mbXN1Yl9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEy
LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfZm1zdWJfcm91bmRfcHMo
X19tNTEyLCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2Ztc3ViX3JvdW5kX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIs
IF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNr
M19mbXN1Yl9yb3VuZF9wcyhfX201MTIsIF9fbTUxMiwgX19tNTEyLCBfX21tYXNrMTYsIGNvbnN0
IGludCApOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfZm1zdWJfcm91bmRf
cHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVy
biBfX201MTJkIF9fY2RlY2wgX21tNTEyX2Ztc3ViX3BkKF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUx
MmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19mbXN1Yl9wZChfX201MTJk
LCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9t
bTUxMl9tYXNrM19mbXN1Yl9wZChfX201MTJkLCBfX201MTJkLCBfX201MTJkLCBfX21tYXNrOCk7
DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9mbXN1Yl9wZChfX21tYXNrOCwg
X19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUx
Ml9mbXN1Yl9yb3VuZF9wZChfX201MTJkLCBfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQgKTsN
CmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfZm1zdWJfcm91bmRfcGQoX19tNTEy
ZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUx
MmQgX19jZGVjbCBfbW01MTJfbWFzazNfZm1zdWJfcm91bmRfcGQoX19tNTEyZCwgX19tNTEyZCwg
X19tNTEyZCwgX19tbWFzazgsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBf
bW01MTJfbWFza3pfZm1zdWJfcm91bmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIF9f
bTUxMmQsIGNvbnN0IGludCApOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9mbWFk
ZHN1Yl9wcyhfX201MTIsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wg
X21tNTEyX21hc2tfZm1hZGRzdWJfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEy
KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2szX2ZtYWRkc3ViX3BzKF9fbTUx
MiwgX19tNTEyLCBfX201MTIsIF9fbW1hc2sxNik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9t
bTUxMl9tYXNrel9mbWFkZHN1Yl9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyLCBfX201MTIp
Ow0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfZm1hZGRzdWJfcm91bmRfcHMoX19tNTEy
LCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9t
bTUxMl9tYXNrX2ZtYWRkc3ViX3JvdW5kX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIF9f
bTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrM19m
bWFkZHN1Yl9yb3VuZF9wcyhfX201MTIsIF9fbTUxMiwgX19tNTEyLCBfX21tYXNrMTYsIGNvbnN0
IGludCApOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfZm1hZGRzdWJfcm91
bmRfcHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4
dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2ZtYWRkc3ViX3BkKF9fbTUxMmQsIF9fbTUxMmQs
IF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19mbWFkZHN1Yl9w
ZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrM19mbWFkZHN1Yl9wZChfX201MTJkLCBfX201MTJkLCBfX201MTJk
LCBfX21tYXNrOCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9mbWFkZHN1
Yl9wZChfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEy
ZCBfX2NkZWNsIF9tbTUxMl9mbWFkZHN1Yl9yb3VuZF9wZChfX201MTJkLCBfX201MTJkLCBfX201
MTJkLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfZm1h
ZGRzdWJfcm91bmRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0
IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFzazNfZm1hZGRzdWJfcm91
bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCwgX19tbWFzazgsIGNvbnN0IGludCApOw0K
ZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfZm1hZGRzdWJfcm91bmRfcGQoX19t
bWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KDQpleHRlcm4g
X19tNTEyICBfX2NkZWNsIF9tbTUxMl9mbXN1YmFkZF9wcyhfX201MTIsIF9fbTUxMiwgX19tNTEy
KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfZm1zdWJhZGRfcHMoX19tNTEy
LCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21t
NTEyX21hc2szX2Ztc3ViYWRkX3BzKF9fbTUxMiwgX19tNTEyLCBfX201MTIsIF9fbW1hc2sxNik7
DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9mbXN1YmFkZF9wcyhfX21tYXNr
MTYsIF9fbTUxMiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfZm1zdWJhZGRfcm91bmRfcHMoX19tNTEyLCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7
DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2Ztc3ViYWRkX3JvdW5kX3BzKF9f
bTUxMiwgX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrM19mbXN1YmFkZF9yb3VuZF9wcyhfX201MTIsIF9fbTUx
MiwgX19tNTEyLCBfX21tYXNrMTYsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVj
bCBfbW01MTJfbWFza3pfZm1zdWJhZGRfcm91bmRfcHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUx
MiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2Zt
c3ViYWRkX3BkKF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19j
ZGVjbCBfbW01MTJfbWFza19mbXN1YmFkZF9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwg
X19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrM19mbXN1YmFkZF9w
ZChfX201MTJkLCBfX201MTJkLCBfX201MTJkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrel9mbXN1YmFkZF9wZChfX21tYXNrOCwgX19tNTEyZCwgX19tNTEy
ZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9mbXN1YmFkZF9yb3Vu
ZF9wZChfX201MTJkLCBfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201
MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfZm1zdWJhZGRfcm91bmRfcGQoX19tNTEyZCwgX19tbWFz
azgsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVj
bCBfbW01MTJfbWFzazNfZm1zdWJhZGRfcm91bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgX19tNTEy
ZCwgX19tbWFzazgsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJf
bWFza3pfZm1zdWJhZGRfcm91bmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUx
MmQsIGNvbnN0IGludCApOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9mbm1hZGRf
cHMoX19tNTEyLCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2ZubWFkZF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFzazNfZm5tYWRkX3BzKF9fbTUxMiwgX19tNTEy
LCBfX201MTIsIF9fbW1hc2sxNik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNr
el9mbm1hZGRfcHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBf
X201MTIgIF9fY2RlY2wgX21tNTEyX2ZubWFkZF9yb3VuZF9wcyhfX201MTIsIF9fbTUxMiwgX19t
NTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfZm5t
YWRkX3JvdW5kX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50
ICk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrM19mbm1hZGRfcm91bmRfcHMo
X19tNTEyLCBfX201MTIsIF9fbTUxMiwgX19tbWFzazE2LCBjb25zdCBpbnQgKTsNCmV4dGVybiBf
X201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X2ZubWFkZF9yb3VuZF9wcyhfX21tYXNrMTYsIF9f
bTUxMiwgX19tNTEyLCBfX201MTIsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVj
bCBfbW01MTJfZm5tYWRkX3BkKF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9f
bTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19mbm1hZGRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9f
bTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFzazNfZm5t
YWRkX3BkKF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQsIF9fbW1hc2s4KTsNCmV4dGVybiBfX201
MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2ZubWFkZF9wZChfX21tYXNrOCwgX19tNTEyZCwgX19t
NTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9mbm1hZGRfcm91
bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCwgY29uc3QgaW50ICk7DQpleHRlcm4gX19t
NTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2ZubWFkZF9yb3VuZF9wZChfX201MTJkLCBfX21tYXNr
OCwgX19tNTEyZCwgX19tNTEyZCwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNs
IF9tbTUxMl9tYXNrM19mbm1hZGRfcm91bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCwg
X19tbWFzazgsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFz
a3pfZm5tYWRkX3JvdW5kX3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBfX201MTJkLCBj
b25zdCBpbnQgKTsNCg0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfZm5tc3ViX3BzKF9f
bTUxMiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFz
a19mbm1zdWJfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBf
X201MTIgIF9fY2RlY2wgX21tNTEyX21hc2szX2ZubXN1Yl9wcyhfX201MTIsIF9fbTUxMiwgX19t
NTEyLCBfX21tYXNrMTYpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfZm5t
c3ViX3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEy
ICBfX2NkZWNsIF9tbTUxMl9mbm1zdWJfcm91bmRfcHMoX19tNTEyLCBfX201MTIsIF9fbTUxMiwg
Y29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2ZubXN1Yl9y
b3VuZF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIGNvbnN0IGludCApOw0K
ZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFzazNfZm5tc3ViX3JvdW5kX3BzKF9fbTUx
MiwgX19tNTEyLCBfX201MTIsIF9fbW1hc2sxNiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEy
ICBfX2NkZWNsIF9tbTUxMl9tYXNrel9mbm1zdWJfcm91bmRfcHMoX19tbWFzazE2LCBfX201MTIs
IF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21t
NTEyX2ZubXN1Yl9wZChfX201MTJkLCBfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2tfZm5tc3ViX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJk
LCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2szX2ZubXN1Yl9w
ZChfX201MTJkLCBfX201MTJkLCBfX201MTJkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrel9mbm1zdWJfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQs
IF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfZm5tc3ViX3JvdW5kX3Bk
KF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQg
X19jZGVjbCBfbW01MTJfbWFza19mbm1zdWJfcm91bmRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9f
bTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01
MTJfbWFzazNfZm5tc3ViX3JvdW5kX3BkKF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQsIF9fbW1h
c2s4LCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2Zu
bXN1Yl9yb3VuZF9wZChfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCwgX19tNTEyZCwgY29uc3Qg
aW50ICk7DQoNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX3NxcnRfcHMoX19tNTEyKTsN
CmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX3NxcnRfcGQoX19tNTEyZCk7DQpleHRlcm4g
X19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9zcXJ0X3BzKF9fbW1hc2sxNiwgX19tNTEyKTsN
CmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X3NxcnRfcGQoX19tbWFzazgsIF9f
bTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19zcXJ0X3BzKF9fbTUx
MiwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFz
a19zcXJ0X3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9f
Y2RlY2wgX21tNTEyX3NxcnRfcm91bmRfcHMoX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBf
X201MTJkIF9fY2RlY2wgX21tNTEyX3NxcnRfcm91bmRfcGQoX19tNTEyZCwgY29uc3QgaW50ICk7
DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9zcXJ0X3JvdW5kX3BzKF9fbW1h
c2sxNiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEy
X21hc2t6X3NxcnRfcm91bmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19zcXJ0X3JvdW5kX3BzKF9fbTUxMiwgX19t
bWFzazE2LCBfX201MTIsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01
MTJfbWFza19zcXJ0X3JvdW5kX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkLCBjb25zdCBp
bnQgKTsNCg0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfYWJzX3BzKF9fbTUxMik7DQpl
eHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9hYnNfcHMoX19tbWFzazE2LCBfX201
MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19hYnNfcHMoX19tNTEyLCBf
X21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9hYnNfcGQo
X19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9hYnNfcGQoX19t
bWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19hYnNf
cGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQpOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNs
IF9tbTUxMl9tYXhfcHMoX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBf
bW01MTJfbWF4X3BkKF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBf
bW01MTJfbWFza3pfbWF4X3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9f
bTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfbWF4X3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201
MTJkKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfbWF4X3BzKF9fbTUxMiwg
X19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUx
Ml9tYXNrX21heF9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRl
cm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXhfcm91bmRfcHMoX19tNTEyLCBfX201MTIsIGNv
bnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWF4X3JvdW5kX3BkKF9f
bTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfbWFza3pfbWF4X3JvdW5kX3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIGNvbnN0IGlu
dCApOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfbWF4X3JvdW5kX3BkKF9f
bW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX201MTIgIF9f
Y2RlY2wgX21tNTEyX21hc2tfbWF4X3JvdW5kX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIs
IF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
X21heF9yb3VuZF9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCwgY29uc3Qg
aW50ICk7DQoNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21pbl9wcyhfX201MTIsIF9f
bTUxMik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9taW5fcGQoX19tNTEyZCwgX19t
NTEyZCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9taW5fcHMoX19tbWFz
azE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
el9taW5fcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19j
ZGVjbCBfbW01MTJfbWFza19taW5fcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEy
KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfbWluX3BkKF9fbTUxMmQsIF9f
bW1hc2s4LCBfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEy
X21pbl9yb3VuZF9wcyhfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEy
ZCBfX2NkZWNsIF9tbTUxMl9taW5fcm91bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgY29uc3QgaW50
ICk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9taW5fcm91bmRfcHMoX19t
bWFzazE2LCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyZCBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel9taW5fcm91bmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQs
IGNvbnN0IGludCApOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19taW5fcm91
bmRfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQgKTsNCmV4
dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfbWluX3JvdW5kX3BkKF9fbTUxMmQsIF9f
bW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQgKTsNCg0KZXh0ZXJuIF9fbTUxMiAg
X19jZGVjbCBfbW01MTJfcmNwMTRfcHMoX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wg
X21tNTEyX3JjcDE0X3BkKF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJf
bWFza3pfcmNwMTRfcHMoX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVj
bCBfbW01MTJfbWFza3pfcmNwMTRfcGQoX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUx
MiAgX19jZGVjbCBfbW01MTJfbWFza19yY3AxNF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEy
KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfcmNwMTRfcGQoX19tNTEyZCwg
X19tbWFzazgsIF9fbTUxMmQpOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9yc3Fy
dDE0X3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9yc3FydDE0X3Bk
KF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfcnNxcnQxNF9w
cyhfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
el9yc3FydDE0X3BkKF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wg
X21tNTEyX21hc2tfcnNxcnQxNF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVy
biBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfcnNxcnQxNF9wZChfX201MTJkLCBfX21tYXNr
OCwgX19tNTEyZCk7DQoNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2N2dHBzX3BkKF9f
bTI1Nik7DQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTUxMl9jdnRwZF9wcyhfX201MTJkKTsN
CmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHBzX3BkKF9fbW1hc2s4LCBf
X20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0cGRfcHMoX19t
bWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19jdnRw
c19wZChfX201MTJkLCBfX21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wg
X21tNTEyX21hc2tfY3Z0cGRfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4g
X19tNTEyZCBfX2NkZWNsIF9tbTUxMl9jdnRfcm91bmRwc19wZChfX20yNTYsIGNvbnN0IGludCAp
Ow0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW01MTJfY3Z0X3JvdW5kcGRfcHMoX19tNTEyZCwg
Y29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRfcm91
bmRwc19wZChfX21tYXNrOCwgX19tMjU2LCBjb25zdCBpbnQgKTsNCmV4dGVybiBfX20yNTYgIF9f
Y2RlY2wgX21tNTEyX21hc2t6X2N2dF9yb3VuZHBkX3BzKF9fbW1hc2s4LCBfX201MTJkLCBjb25z
dCBpbnQgKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0X3JvdW5kcHNf
cGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTI1NiwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tMjU2
ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dF9yb3VuZHBkX3BzKF9fbTI1NiwgX19tbWFzazgsIF9f
bTUxMmQsIGNvbnN0IGludCApOw0KDQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tNTEyX2Nt
cF9wc19tYXNrKF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2sxNiBf
X2NkZWNsIF9tbTUxMl9tYXNrX2NtcF9wc19tYXNrKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIs
IGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tNTEyX2NtcF9yb3VuZF9w
c19tYXNrKF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQsIGNvbnN0IGludCApOw0KZXh0ZXJuIF9f
bW1hc2sxNiBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcF9yb3VuZF9wc19tYXNrKF9fbW1hc2sxNiwg
X19tNTEyLCBfX201MTIsIGNvbnN0IGludCwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tbWFzazgg
IF9fY2RlY2wgX21tNTEyX2NtcF9wZF9tYXNrKF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCk7
DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tNTEyX21hc2tfY21wX3BkX21hc2soX19tbWFz
azgsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2Rl
Y2wgX21tNTEyX2NtcF9yb3VuZF9wZF9tYXNrKF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCwg
Y29uc3QgaW50ICk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tNTEyX21hc2tfY21wX3Jv
dW5kX3BkX21hc2soX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCwgY29uc3Qg
aW50ICk7DQoNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX2Jyb2FkY2FzdF9mMzJ4Mihf
X20xMjgpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19icm9hZGNhc3RfZjMy
eDIoX19tNTEyLCBfX21tYXNrMTYsIF9fbTEyOCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9t
bTUxMl9tYXNrel9icm9hZGNhc3RfZjMyeDIoX19tbWFzazE2LCBfX20xMjgpOw0KZXh0ZXJuIF9f
bTUxMiAgX19jZGVjbCBfbW01MTJfYnJvYWRjYXN0X2YzMng0KF9fbTEyOCk7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2Jyb2FkY2FzdF9mMzJ4NChfX201MTIsIF9fbW1hc2sx
NiwgX19tMTI4KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X2Jyb2FkY2Fz
dF9mMzJ4NChfX21tYXNrMTYsIF9fbTEyOCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUx
Ml9icm9hZGNhc3RfZjMyeDgoX19tMjU2KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEy
X21hc2tfYnJvYWRjYXN0X2YzMng4KF9fbTUxMiwgX19tbWFzazE2LCBfX20yNTYpOw0KZXh0ZXJu
IF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfYnJvYWRjYXN0X2YzMng4KF9fbW1hc2sxNiwg
X19tMjU2KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2Jyb2FkY2FzdF9mNjR4Mihf
X20xMjhkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfYnJvYWRjYXN0X2Y2
NHgyKF9fbTUxMmQsIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wg
X21tNTEyX21hc2t6X2Jyb2FkY2FzdF9mNjR4MihfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4g
X19tNTEyZCBfX2NkZWNsIF9tbTUxMl9icm9hZGNhc3RfZjY0eDQoX19tMjU2ZCk7DQpleHRlcm4g
X19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2Jyb2FkY2FzdF9mNjR4NChfX201MTJkLCBfX21t
YXNrOCwgX19tMjU2ZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9icm9h
ZGNhc3RfZjY0eDQoX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBf
bW01MTJfYnJvYWRjYXN0c2RfcGQoX19tMTI4ZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9t
bTUxMl9tYXNrX2Jyb2FkY2FzdHNkX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4
dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2Jyb2FkY2FzdHNkX3BkKF9fbW1hc2s4
LCBfX20xMjhkKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX2Jyb2FkY2FzdHNzX3Bz
KF9fbTEyOCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2Jyb2FkY2FzdHNz
X3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBf
bW01MTJfbWFza3pfYnJvYWRjYXN0c3NfcHMoX19tbWFzazE2LCBfX20xMjgpOw0KDQpleHRlcm4g
X19tMTI4ICBfX2NkZWNsIF9tbTUxMl9leHRyYWN0ZjMyeDRfcHMoX19tNTEyLCBpbnQpOw0KZXh0
ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW01MTJfbWFza19leHRyYWN0ZjMyeDRfcHMoX19tMTI4LCBf
X21tYXNrOCwgX19tNTEyLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgX19jZGVjbCBfbW01
MTJfbWFza3pfZXh0cmFjdGYzMng0X3BzKF9fbW1hc2s4LCBfX201MTIsIGludCk7DQpleHRlcm4g
X19tMjU2ICBfX2NkZWNsIF9tbTUxMl9leHRyYWN0ZjMyeDhfcHMoX19tNTEyLCBpbnQpOw0KZXh0
ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW01MTJfbWFza19leHRyYWN0ZjMyeDhfcHMoX19tMjU2LCBf
X21tYXNrOCwgX19tNTEyLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW01
MTJfbWFza3pfZXh0cmFjdGYzMng4X3BzKF9fbW1hc2s4LCBfX201MTIsIGludCk7DQpleHRlcm4g
X19tMTI4ZCBfX2NkZWNsIF9tbTUxMl9leHRyYWN0ZjY0eDJfcGQoX19tNTEyZCwgaW50KTsNCmV4
dGVybiBfX20xMjhkIF9fY2RlY2wgX21tNTEyX21hc2tfZXh0cmFjdGY2NHgyX3BkKF9fbTEyOGQs
IF9fbW1hc2s4LCBfX201MTJkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgX19jZGVjbCBf
bW01MTJfbWFza3pfZXh0cmFjdGY2NHgyX3BkKF9fbW1hc2s4LCBfX201MTJkLCBpbnQpOw0KZXh0
ZXJuIF9fbTI1NmQgX19jZGVjbCBfbW01MTJfZXh0cmFjdGY2NHg0X3BkKF9fbTUxMmQsIGludCk7
DQpleHRlcm4gX19tMjU2ZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2V4dHJhY3RmNjR4NF9wZChfX20y
NTZkLCBfX21tYXNrOCwgX19tNTEyZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZkIF9fY2Rl
Y2wgX21tNTEyX21hc2t6X2V4dHJhY3RmNjR4NF9wZChfX21tYXNrOCwgX19tNTEyZCwgaW50KTsN
Cg0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfaW5zZXJ0ZjMyeDQoX19tNTEyLCBfX20x
MjgsIGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2luc2VydGYzMng0
KF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIF9fbTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiBf
X201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X2luc2VydGYzMng0KF9fbW1hc2sxNiwgX19tNTEy
LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9pbnNlcnRmMzJ4
OChfX201MTIsIF9fbTI1NiwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21h
c2tfaW5zZXJ0ZjMyeDgoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tMjU2LCBjb25zdCBp
bnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfaW5zZXJ0ZjMyeDgoX19t
bWFzazE2LCBfX201MTIsIF9fbTI1NiwgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21t
NTEyX2luc2VydGY2NHgyKF9fbTUxMmQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrX2luc2VydGY2NHgyKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJk
LCBfX20xMjhkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFz
a3pfaW5zZXJ0ZjY0eDIoX19tbWFzazgsIF9fbTUxMmQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4g
X19tNTEyZCBfX2NkZWNsIF9tbTUxMl9pbnNlcnRmNjR4NChfX201MTJkLCBfX20yNTZkLCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19pbnNlcnRmNjR4NChfX201MTJk
LCBfX21tYXNrOCwgX19tNTEyZCwgX19tMjU2ZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2t6X2luc2VydGY2NHg0KF9fbW1hc2s4LCBfX201MTJkLCBfX20y
NTZkLCBpbnQpOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9zaHVmZmxlX2YzMng0
KF9fbTUxMiwgX19tNTEyLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfbWFza19zaHVmZmxlX2YzMng0KF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X3NodWZmbGVf
ZjMyeDQoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMiwgY29uc3QgaW50KTsNCmV4dGVybiBfX201
MTJkIF9fY2RlY2wgX21tNTEyX3NodWZmbGVfZjY0eDIoX19tNTEyZCwgX19tNTEyZCwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfc2h1ZmZsZV9mNjR4Mihf
X201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCwgY29uc3QgaW50KTsNCmV4dGVybiBf
X201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X3NodWZmbGVfZjY0eDIoX19tbWFzazgsIF9fbTUx
MmQsIF9fbTUxMmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9z
aHVmZmxlX3BkKF9fbTUxMmQsIF9fbTUxMmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrX3NodWZmbGVfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQs
IF9fbTUxMmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
el9zaHVmZmxlX3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBjb25zdCBpbnQpOw0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfc2h1ZmZsZV9wcyhfX201MTIsIF9fbTUxMiwgY29u
c3QgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfc2h1ZmZsZV9wcyhf
X201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIGNvbnN0IGludCk7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9zaHVmZmxlX3BzKF9fbW1hc2sxNiwgX19tNTEyLCBf
X201MTIsIGNvbnN0IGludCk7DQoNCmV4dGVybiBfX21tYXNrMTYgX21tNTEyX2NtcGVxX3BzX21h
c2soX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfbW01MTJfY21wbGVfcHNfbWFz
ayhfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tbWFzazE2IF9tbTUxMl9jbXBsdF9wc19tYXNr
KF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX21tYXNrMTYgX21tNTEyX2NtcG5lcV9wc19tYXNr
KF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX21tYXNrMTYgX21tNTEyX2NtcG5sZV9wc19tYXNr
KF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX21tYXNrMTYgX21tNTEyX2NtcG5sdF9wc19tYXNr
KF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX21tYXNrMTYgX21tNTEyX2NtcG9yZF9wc19tYXNr
KF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX21tYXNrMTYgX21tNTEyX2NtcHVub3JkX3BzX21h
c2soX19tNTEyLCBfX201MTIpOw0KDQpleHRlcm4gX19tbWFzazE2IF9tbTUxMl9tYXNrX2NtcGVx
X3BzX21hc2soX19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tbWFzazE2IF9t
bTUxMl9tYXNrX2NtcGxlX3BzX21hc2soX19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRl
cm4gX19tbWFzazE2IF9tbTUxMl9tYXNrX2NtcGx0X3BzX21hc2soX19tbWFzazE2LCBfX201MTIs
IF9fbTUxMik7DQpleHRlcm4gX19tbWFzazE2IF9tbTUxMl9tYXNrX2NtcG5lcV9wc19tYXNrKF9f
bW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfbW01MTJfbWFza19j
bXBubGVfcHNfbWFzayhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX21tYXNr
MTYgX21tNTEyX21hc2tfY21wbmx0X3BzX21hc2soX19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7
DQpleHRlcm4gX19tbWFzazE2IF9tbTUxMl9tYXNrX2NtcG9yZF9wc19tYXNrKF9fbW1hc2sxNiwg
X19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfbW01MTJfbWFza19jbXB1bm9yZF9w
c19tYXNrKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KDQpleHRlcm4gX19tbWFzazggX21t
NTEyX2NtcGVxX3BkX21hc2soX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tbWFzazggX21t
NTEyX2NtcGxlX3BkX21hc2soX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tbWFzazggX21t
NTEyX2NtcGx0X3BkX21hc2soX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tbWFzazggX21t
NTEyX2NtcG5lcV9wZF9tYXNrKF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbW1hc2s4IF9t
bTUxMl9jbXBubGVfcGRfbWFzayhfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX21tYXNrOCBf
bW01MTJfY21wbmx0X3BkX21hc2soX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tbWFzazgg
X21tNTEyX2NtcG9yZF9wZF9tYXNrKF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbW1hc2s4
IF9tbTUxMl9jbXB1bm9yZF9wZF9tYXNrKF9fbTUxMmQsIF9fbTUxMmQpOw0KDQpleHRlcm4gX19t
bWFzazggX21tNTEyX21hc2tfY21wZXFfcGRfbWFzayhfX21tYXNrOCwgX19tNTEyZCwgX19tNTEy
ZCk7DQpleHRlcm4gX19tbWFzazggX21tNTEyX21hc2tfY21wbGVfcGRfbWFzayhfX21tYXNrOCwg
X19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tbWFzazggX21tNTEyX21hc2tfY21wbHRfcGRf
bWFzayhfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tbWFzazggX21tNTEy
X21hc2tfY21wbmVxX3BkX21hc2soX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJu
IF9fbW1hc2s4IF9tbTUxMl9tYXNrX2NtcG5sZV9wZF9tYXNrKF9fbW1hc2s4LCBfX201MTJkLCBf
X201MTJkKTsNCmV4dGVybiBfX21tYXNrOCBfbW01MTJfbWFza19jbXBubHRfcGRfbWFzayhfX21t
YXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tbWFzazggX21tNTEyX21hc2tfY21w
b3JkX3BkX21hc2soX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbW1hc2s4
IF9tbTUxMl9tYXNrX2NtcHVub3JkX3BkX21hc2soX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zZXR6ZXJv
X3NpNTEyKHZvaWQpOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zZXRfZXBpOChj
aGFyICwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hh
ciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwg
Y2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hh
ciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwg
Y2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hh
ciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwg
Y2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciApOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfc2V0X2VwaTE2KHNob3J0ICwgc2hvcnQsIHNob3J0LCBzaG9ydCwg
c2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBz
aG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNo
b3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hv
cnQsIHNob3J0LCBzaG9ydCwgc2hvcnQgKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X3NldF9lcGkzMihpbnQgLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50ICk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9zZXRfZXBpNjQoX19pbnQ2NCAsIF9faW50NjQsIF9faW50NjQsIF9faW50NjQs
IF9faW50NjQsIF9faW50NjQsIF9faW50NjQsIF9faW50NjQgKTsNCg0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfc2V0cl9lcGk4KGNoYXIgLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBj
aGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFy
LCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBj
aGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFy
LCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBj
aGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFy
LCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLCBj
aGFyLCBjaGFyICk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zZXRyX2VwaTE2KHNo
b3J0ICwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNo
b3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hv
cnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9y
dCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQgKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3NldHJfZXBpMzIoaW50ICwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCApOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc2V0cl9lcGk2NChfX2ludDY0
ICwgX19pbnQ2NCwgX19pbnQ2NCwgX19pbnQ2NCwgX19pbnQ2NCwgX19pbnQ2NCwgX19pbnQ2NCwg
X19pbnQ2NCApOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zZXQxX2VwaTgoY2hh
cik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NldDFfZXBpOChfX201MTJp
LCBfX21tYXNrNjQsIGNoYXIpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pf
c2V0MV9lcGk4KF9fbW1hc2s2NCwgY2hhcik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9zZXQxX2VwaTE2KHNob3J0KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tf
c2V0MV9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIHNob3J0KTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2t6X3NldDFfZXBpMTYoX19tbWFzazMyLCBzaG9ydCk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zZXQxX2VwaTMyKGludCk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrX3NldDFfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBpbnQpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc2V0MV9lcGkzMihfX21tYXNrMTYs
IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zZXQxX2VwaTY0KF9faW50NjQp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zZXQxX2VwaTY0KF9fbTUxMmks
IF9fbW1hc2s4LCBfX2ludDY0KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6
X3NldDFfZXBpNjQoX19tbWFzazgsIF9faW50NjQpOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9hZGRfZXBpOChfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX21hc2tfYWRkX2VwaTgoX19tNTEyaSwgX19tbWFzazY0LCBfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2FkZF9lcGk4KF9fbW1h
c2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9h
ZGRfZXBpMTYoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2FkZF9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfYWRkX2VwaTE2KF9fbW1hc2szMiwg
X19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hZGRfZXBp
MzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNr
X2FkZF9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfYWRkX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEy
aSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hZGRfZXBpNjQoX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2FkZF9l
cGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9hZGRfZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfYWRkc19lcGk4KF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19hZGRzX2VwaTgoX19t
NTEyaSwgX19tbWFzazY0LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX21hc2t6X2FkZHNfZXBpOChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfYWRkc19lcGkxNihfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfYWRkc19lcGkxNihfX201MTJp
LCBfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfbWFza3pfYWRkc19lcGkxNihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfYWRkc19lcHU4KF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19hZGRzX2VwdTgoX19tNTEyaSwgX19t
bWFzazY0LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X21hc2t6X2FkZHNfZXB1OChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfYWRkc19lcHUxNihfX201MTJpLCBfX201MTJpKTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfYWRkc19lcHUxNihfX201MTJpLCBfX21tYXNr
MzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a3pfYWRkc19lcHUxNihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9hYnNfZXBpOChfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2tfYWJzX2VwaTgoX19tNTEyaSwgX19tbWFzazY0LCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2Fic19lcGk4KF9fbW1hc2s2NCwg
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hYnNfZXBpMTYoX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2Fic19lcGkxNihfX201MTJp
LCBfX21tYXNrMzIsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a3pfYWJzX2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9hYnNfZXBpMzIoX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2Fic19lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfYWJzX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hYnNfZXBpNjQoX19tNTEyaSk7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2Fic19lcGk2NChfX201MTJpLCBfX21tYXNr
OCwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9hYnNfZXBp
NjQoX19tbWFzazgsIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyaSAgX19jZGVjbCBfbW01MTJf
YnJvYWRjYXN0X2kzMngyKF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgIF9fY2RlY2wgX21tNTEy
X21hc2tfYnJvYWRjYXN0X2kzMngyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tMTI4aSk7DQpleHRl
cm4gX19tNTEyaSAgX19jZGVjbCBfbW01MTJfbWFza3pfYnJvYWRjYXN0X2kzMngyKF9fbW1hc2sx
NiwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSAgX19jZGVjbCBfbW01MTJfYnJvYWRjYXN0X2kz
Mng0KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgIF9fY2RlY2wgX21tNTEyX21hc2tfYnJvYWRj
YXN0X2kzMng0KF9fbTUxMmksIF9fbW1hc2sxNiwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSAg
X19jZGVjbCBfbW01MTJfbWFza3pfYnJvYWRjYXN0X2kzMng0KF9fbW1hc2sxNiwgX19tMTI4aSk7
DQpleHRlcm4gX19tNTEyaSAgX19jZGVjbCBfbW01MTJfYnJvYWRjYXN0X2kzMng4KF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgIF9fY2RlY2wgX21tNTEyX21hc2tfYnJvYWRjYXN0X2kzMng4KF9f
bTUxMmksIF9fbW1hc2sxNiwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyaSAgX19jZGVjbCBfbW01
MTJfbWFza3pfYnJvYWRjYXN0X2kzMng4KF9fbW1hc2sxNiwgX19tMjU2aSk7DQpleHRlcm4gX19t
NTEyaSAgX19jZGVjbCBfbW01MTJfYnJvYWRjYXN0X2k2NHgyKF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTUxMmkgIF9fY2RlY2wgX21tNTEyX21hc2tfYnJvYWRjYXN0X2k2NHgyKF9fbTUxMmksIF9fbW1h
c2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpICBfX2NkZWNsIF9tbTUxMl9tYXNrel9icm9h
ZGNhc3RfaTY0eDIoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgIF9fY2RlY2wg
X21tNTEyX2Jyb2FkY2FzdF9pNjR4NChfX20yNTZpKTsNCmV4dGVybiBfX201MTJpICBfX2NkZWNs
IF9tbTUxMl9tYXNrX2Jyb2FkY2FzdF9pNjR4NChfX201MTJpLCBfX21tYXNrOCwgX19tMjU2aSk7
DQpleHRlcm4gX19tNTEyaSAgX19jZGVjbCBfbW01MTJfbWFza3pfYnJvYWRjYXN0X2k2NHg0KF9f
bW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2Jyb2FkY2Fz
dGJfZXBpOChfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfYnJv
YWRjYXN0Yl9lcGk4KF9fbTUxMmksIF9fbW1hc2s2NCwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9icm9hZGNhc3RiX2VwaTgoX19tbWFzazY0LCBfX20xMjhp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2Jyb2FkY2FzdHdfZXBpMTYoX19tMTI4
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2Jyb2FkY2FzdHdfZXBpMTYo
X19tNTEyaSwgX19tbWFzazMyLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2t6X2Jyb2FkY2FzdHdfZXBpMTYoX19tbWFzazMyLCBfX20xMjhpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX2Jyb2FkY2FzdGRfZXBpMzIoX19tMTI4aSk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2Jyb2FkY2FzdGRfZXBpMzIoX19tNTEyaSwgX19t
bWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2Jy
b2FkY2FzdGRfZXBpMzIoX19tbWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX2Jyb2FkY2FzdHFfZXBpNjQoX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2Jyb2FkY2FzdHFfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfYnJvYWRjYXN0cV9lcGk2
NChfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9icm9h
ZGNhc3Rtd19lcGkzMihfX21tYXNrMTYpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
YnJvYWRjYXN0bWJfZXBpNjQoX19tbWFzazgpOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9zdWJfZXBpOChfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2tfc3ViX2VwaTgoX19tNTEyaSwgX19tbWFzazY0LCBfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3N1Yl9lcGk4KF9fbW1hc2s2
NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zdWJf
ZXBpMTYoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrX3N1Yl9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc3ViX2VwaTE2KF9fbW1hc2szMiwgX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zdWJfZXBpMzIo
X19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3N1
Yl9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc3ViX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zdWJfZXBpNjQoX19tNTEy
aSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3N1Yl9lcGk2
NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrel9zdWJfZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc3Vic19lcGk4KF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zdWJzX2VwaTgoX19tNTEy
aSwgX19tbWFzazY0LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2t6X3N1YnNfZXBpOChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc3Vic19lcGkxNihfX201MTJpLCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc3Vic19lcGkxNihfX201MTJpLCBf
X21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWFza3pfc3Vic19lcGkxNihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc3Vic19lcHU4KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zdWJzX2VwdTgoX19tNTEyaSwgX19tbWFz
azY0LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21h
c2t6X3N1YnNfZXB1OChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfc3Vic19lcHUxNihfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc3Vic19lcHUxNihfX201MTJpLCBfX21tYXNrMzIs
IF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pf
c3Vic19lcHUxNihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXhfZXBpOChfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201
MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbWF4X2VwaTgoX19tNTEyaSwgX19tbWFzazY0LCBfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X21heF9l
cGk4KF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXhfZXBpMTYoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX21heF9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfbWF4X2VwaTE2KF9f
bW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXhfZXBpMzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrX21heF9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfbWF4X2VwaTMyKF9fbW1hc2sx
NiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXhf
ZXBpNjQoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrX21heF9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tYXhfZXBpNjQoX19tbWFzazgsIF9fbTUx
MmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWF4X2VwdTgoX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX21heF9l
cHU4KF9fbTUxMmksIF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tYXhfZXB1OChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWF4X2VwdTE2KF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19tYXhfZXB1MTYoX19t
NTEyaSwgX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX21hc2t6X21heF9lcHUxNihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWF4X2VwdTMyKF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19tYXhfZXB1MzIoX19tNTEyaSwg
X19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2t6X21heF9lcHUzMihfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWF4X2VwdTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19tYXhfZXB1NjQoX19tNTEyaSwgX19tbWFz
azgsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a3pfbWF4X2VwdTY0KF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWluX2VwaTgoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX21pbl9lcGk4KF9fbTUxMmksIF9fbW1hc2s2NCwgX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9taW5f
ZXBpOChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfbWluX2VwaTE2KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfbWFza19taW5fZXBpMTYoX19tNTEyaSwgX19tbWFzazMyLCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X21pbl9lcGkxNihf
X21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWluX2VwaTMyKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfbWFza19taW5fZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X21pbl9lcGkzMihfX21tYXNr
MTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWlu
X2VwaTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza19taW5fZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfbWluX2VwaTY0KF9fbW1hc2s4LCBfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21pbl9lcHU4KF9f
bTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19taW5f
ZXB1OChfX201MTJpLCBfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza3pfbWluX2VwdTgoX19tbWFzazY0LCBfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21pbl9lcHUxNihfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbWluX2VwdTE2KF9f
bTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel9taW5fZXB1MTYoX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21pbl9lcHUzMihfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbWluX2VwdTMyKF9fbTUxMmks
IF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrel9taW5fZXB1MzIoX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21pbl9lcHU2NChfX201MTJpLCBfX201MTJpKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbWluX2VwdTY0KF9fbTUxMmksIF9fbW1h
c2s4LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21h
c2t6X21pbl9lcHU2NChfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQoNCmV4dGVybiBfX201
MTJpIF9fY2RlY2wgX21tNTEyX211bF9lcGkzMihfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbXVsX2VwaTMyKF9fbTUxMmksIF9fbW1hc2s4LCBf
X201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X211
bF9lcGkzMihfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tdWxfZXB1MzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrX211bF9lcHUzMihfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tdWxfZXB1MzIo
X19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbXVsaGlfZXBpMTYoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX211bGhpX2VwaTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tdWxoaV9lcGkxNihf
X21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbXVsaGlfZXB1MTYoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX211bGhpX2VwdTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tdWxoaV9lcHUxNihf
X21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbXVsbG9fZXBpMTYoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX211bGxvX2VwaTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tdWxsb19lcGkxNihf
X21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbXVsbG9fZXBpMzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX211bGxvX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tdWxsb19lcGkzMihf
X21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbXVsbG9fZXBpNjQoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX211bGxvX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X211bGxvX2VwaTY0KF9f
bW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X211bGxveF9lcGk2NChfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2tfbXVsbG94X2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX211bGhyc19lcGkxNihfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbXVsaHJzX2Vw
aTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tdWxocnNfZXBpMTYoX19tbWFzazMyLCBfX201MTJpLCBf
X201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbG9hZF9lcGkzMih2b2lk
IGNvbnN0Kik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2xvYWRfZXBpMzIo
X19tNTEyaSwgX19tbWFzazE2LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrel9sb2FkX2VwaTMyKF9fbW1hc2sxNiwgdm9pZCBjb25zdCopOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbG9hZF9lcGk2NCh2b2lkIGNvbnN0Kik7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2xvYWRfZXBpNjQoX19tNTEyaSwgX19tbWFzazgs
IHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2xvYWRf
ZXBpNjQoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX2xvYWR1X2VwaTgodm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWFza19sb2FkdV9lcGk4KF9fbTUxMmksIF9fbW1hc2s2NCwgdm9pZCBjb25zdCopOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfbG9hZHVfZXBpOChfX21tYXNrNjQsIHZv
aWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2xvYWR1X2VwaTE2KHZv
aWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbG9hZHVfZXBp
MTYoX19tNTEyaSwgX19tbWFzazMyLCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel9sb2FkdV9lcGkxNihfX21tYXNrMzIsIHZvaWQgY29uc3QqKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2xvYWR1X2VwaTMyKHZvaWQgY29uc3QqKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbG9hZHVfZXBpMzIoX19tNTEyaSwgX19t
bWFzazE2LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNr
el9sb2FkdV9lcGkzMihfX21tYXNrMTYsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX2xvYWR1X2VwaTY0KHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2tfbG9hZHVfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIHZvaWQgY29u
c3QqKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2xvYWR1X2VwaTY0KF9f
bW1hc2s4LCB2b2lkIGNvbnN0Kik7DQoNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX3N0
b3JlX2VwaTMyKHZvaWQqLCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEy
X21hc2tfc3RvcmVfZXBpMzIodm9pZCosIF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gdm9p
ZCAgICBfX2NkZWNsIF9tbTUxMl9zdG9yZV9lcGk2NCh2b2lkKiwgX19tNTEyaSk7DQpleHRlcm4g
dm9pZCAgICBfX2NkZWNsIF9tbTUxMl9tYXNrX3N0b3JlX2VwaTY0KHZvaWQqLCBfX21tYXNrOCwg
X19tNTEyaSk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9zdG9yZXVfZXBpOCh2b2lk
KiwgX19tNTEyaSk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9tYXNrX3N0b3JldV9l
cGk4KHZvaWQqLCBfX21tYXNrNjQsIF9fbTUxMmkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBf
bW01MTJfc3RvcmV1X2VwaTE2KHZvaWQqLCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAgIF9fY2Rl
Y2wgX21tNTEyX21hc2tfc3RvcmV1X2VwaTE2KHZvaWQqLCBfX21tYXNrMzIsIF9fbTUxMmkpOw0K
ZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJfc3RvcmV1X2VwaTMyKHZvaWQqLCBfX201MTJp
KTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfc3RvcmV1X2VwaTMyKHZvaWQq
LCBfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJfc3Rv
cmV1X2VwaTY0KHZvaWQqLCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEy
X21hc2tfc3RvcmV1X2VwaTY0KHZvaWQqLCBfX21tYXNrOCwgX19tNTEyaSk7DQoNCmV4dGVybiBf
X20xMjhpIF9fY2RlY2wgX21tNTEyX2V4dHJhY3RpMzJ4NF9lcGkzMihfX201MTJpLCBpbnQpOw0K
ZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfbWFza19leHRyYWN0aTMyeDRfZXBpMzIoX19t
MTI4aSwgX19tbWFzazgsIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9t
bTUxMl9tYXNrel9leHRyYWN0aTMyeDRfZXBpMzIoX19tbWFzazgsIF9fbTUxMmksIGludCk7DQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9leHRyYWN0aTMyeDhfZXBpMzIoX19tNTEyaSwg
aW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21hc2tfZXh0cmFjdGkzMng4X2Vw
aTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19j
ZGVjbCBfbW01MTJfbWFza3pfZXh0cmFjdGkzMng4X2VwaTMyKF9fbW1hc2s4LCBfX201MTJpLCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfZXh0cmFjdGk2NHgyX2VwaTY0KF9f
bTUxMmksIGludCk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2V4dHJhY3Rp
NjR4Ml9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX20x
MjhpIF9fY2RlY2wgX21tNTEyX21hc2t6X2V4dHJhY3RpNjR4Ml9lcGk2NChfX21tYXNrOCwgX19t
NTEyaSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX2V4dHJhY3RpNjR4NF9l
cGk2NChfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfbWFza19l
eHRyYWN0aTY0eDRfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTUxMmksIGludCk7DQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9leHRyYWN0aTY0eDRfZXBpNjQoX19tbWFz
azgsIF9fbTUxMmksIGludCk7DQoNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2luc2Vy
dGkzMng0KF9fbTUxMmksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrX2luc2VydGkzMng0KF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSwgX19tMTI4
aSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2luc2VydGkzMng0
KF9fbW1hc2sxNiwgX19tNTEyaSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX2luc2VydGkzMng4KF9fbTUxMmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2luc2VydGkzMng4KF9fbTUxMmksIF9fbW1hc2sxNiwg
X19tNTEyaSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21h
c2t6X2luc2VydGkzMng4KF9fbW1hc2sxNiwgX19tNTEyaSwgX19tMjU2aSwgaW50KTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX2luc2VydGk2NHgyKF9fbTUxMmksIF9fbTEyOGksIGlu
dCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2luc2VydGk2NHgyKF9fbTUx
MmksIF9fbW1hc2s4LCBfX201MTJpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfbWFza3pfaW5zZXJ0aTY0eDIoX19tbWFzazgsIF9fbTUxMmksIF9fbTEyOGks
IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9pbnNlcnRpNjR4NChfX201MTJp
LCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19pbnNl
cnRpNjR4NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwgX19tMjU2aSwgaW50KTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2luc2VydGk2NHg0KF9fbW1hc2s4LCBfX201
MTJpLCBfX20yNTZpLCBpbnQpOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zaHVm
ZmxlX2VwaTgoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXNrX3NodWZmbGVfZXBpOChfX201MTJpLCBfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc2h1ZmZsZV9lcGk4KF9fbW1h
c2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9z
aHVmZmxlX2VwaTMyKF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXNrX3NodWZmbGVfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBpbnQpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc2h1ZmZsZV9lcGkzMihfX21tYXNr
MTYsIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zaHVmZmxl
X2kzMng0KF9fbTUxMmksIF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3NodWZmbGVfaTMyeDQoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJp
LCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a3pfc2h1ZmZsZV9pMzJ4NChfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmksIGNvbnN0IGludCk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zaHVmZmxlX2k2NHgyKF9fbTUxMmksIF9f
bTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3No
dWZmbGVfaTY0eDIoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmksIGNvbnN0IGlu
dCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zaHVmZmxlX2k2NHgyKF9f
bW1hc2s4LCBfX201MTJpLCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfc2h1ZmZsZWhpX2VwaTE2KF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NodWZmbGVoaV9lcGkxNihfX201MTJpLCBfX21tYXNrMzIs
IF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zaHVm
ZmxlaGlfZXBpMTYoX19tbWFzazMyLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfc2h1ZmZsZWxvX2VwaTE2KF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NodWZmbGVsb19lcGkxNihfX201MTJpLCBfX21tYXNrMzIs
IF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zaHVm
ZmxlbG9fZXBpMTYoX19tbWFzazMyLCBfX201MTJpLCBpbnQpOw0KDQpleHRlcm4gX19tNTEyICBf
X2NkZWNsIF9tbTUxMl9tYXNrX21vdl9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4
dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X21vdl9wcyhfX21tYXNrMTYsIF9fbTUx
Mik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX21vdl9wZChfX201MTJkLCBf
X21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9t
b3ZfcGQoX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza19tb3ZfZXBpOChfX201MTJpLCBfX21tYXNrNjQsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza3pfbW92X2VwaTgoX19tbWFzazY0LCBfX201MTJpKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbW92X2VwaTE2KF9fbTUxMmksIF9fbW1h
c2szMiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tb3Zf
ZXBpMTYoX19tbWFzazMyLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X21hc2tfbW92X2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9tb3ZfZXBpMzIoX19tbWFzazE2LCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbW92X2VwaTY0KF9fbTUxMmksIF9f
bW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X21v
dl9lcGk2NChfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUx
Ml9tb3ZlZHVwX3BkKF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFz
a19tb3ZlZHVwX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2t6X21vdmVkdXBfcGQoX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbW92ZWhkdXBfcHMoX19tNTEyKTsNCmV4dGVybiBf
X201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfbW92ZWhkdXBfcHMoX19tNTEyLCBfX21tYXNrMTYs
IF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9tb3ZlaGR1cF9w
cyhfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tb3Zl
bGR1cF9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19tb3Zl
bGR1cF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2Rl
Y2wgX21tNTEyX21hc2t6X21vdmVsZHVwX3BzKF9fbW1hc2sxNiwgX19tNTEyKTsNCg0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbW92bV9lcGk4KF9fbW1hc2s2NCk7DQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9tb3ZtX2VwaTE2KF9fbW1hc2szMik7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tb3ZtX2VwaTMyKF9fbW1hc2sxNik7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tb3ZtX2VwaTY0KF9fbW1hc2s4KTsNCmV4dGVybiBfX21tYXNrNjQgX19j
ZGVjbCBfbW01MTJfbW92ZXBpOF9tYXNrKF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2szMiBfX2Nk
ZWNsIF9tbTUxMl9tb3ZlcGkxNl9tYXNrKF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2Nk
ZWNsIF9tbTUxMl9tb3ZlcGkzMl9tYXNrKF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2Nk
ZWNsIF9tbTUxMl9tb3ZlcGk2NF9tYXNrKF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9hbGlnbnJfZXBpOChfX201MTJpLCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19hbGlnbnJfZXBpOChfX201MTJpLCBfX21t
YXNrNjQsIF9fbTUxMmksIF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel9hbGlnbnJfZXBpOChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmks
IGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hbGlnbnJfZXBpMzIo
X19tNTEyaSwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2tfYWxpZ25yX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEy
aSwgY29uc3QgaW50ICk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9hbGln
bnJfZXBpMzIoX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfYWxpZ25yX2VwaTY0KF9fbTUxMmksIF9fbTUxMmksIGNv
bnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2FsaWducl9lcGk2
NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2FsaWducl9lcGk2NChfX21tYXNrOCwgX19t
NTEyaSwgX19tNTEyaSwgY29uc3QgaW50KTsNCg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01
MTJfYW5kX3BkKF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01
MTJfbWFza19hbmRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0
ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfYW5kX3BkKF9fbW1hc2s4LCBfX201MTJk
LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX2FuZF9wcyhfX201MTIs
IF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2FuZF9wcyhfX201
MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBf
bW01MTJfbWFza3pfYW5kX3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfYW5kX2VwaTMyKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19hbmRfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2
LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6
X2FuZF9lcGkzMihfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfYW5kX2VwaTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza19hbmRfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUx
MmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfYW5kX2Vw
aTY0KF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVj
bCBfbW01MTJfYW5kbm90X3BkKF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19j
ZGVjbCBfbW01MTJfbWFza19hbmRub3RfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9f
bTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfYW5kbm90X3BkKF9f
bW1hc2s4LCBfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEy
X2FuZG5vdF9wcyhfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2FuZG5vdF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfYW5kbm90X3BzKF9fbW1hc2sxNiwgX19t
NTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfYW5kbm90X2VwaTMy
KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19h
bmRub3RfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2FuZG5vdF9lcGkzMihfX21tYXNrMTYsIF9f
bTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfYW5kbm90X2Vw
aTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a19hbmRub3RfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfYW5kbm90X2VwaTY0KF9fbW1hc2s4LCBf
X201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfb3JfcGQo
X19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX29y
X3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2t6X29yX3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkKTsN
CmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX29yX3BzKF9fbTUxMiwgX19tNTEyKTsNCmV4
dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfb3JfcHMoX19tNTEyLCBfX21tYXNrMTYs
IF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X29y
X3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfb3JfZXBpMzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX29yX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9vcl9lcGkzMihfX21tYXNr
MTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfb3Jf
ZXBpNjQoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrX29yX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X29yX2VwaTY0KF9fbW1hc2s4LCBfX201MTJp
LCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfeG9yX3BkKF9fbTUx
MmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza194b3JfcGQo
X19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19j
ZGVjbCBfbW01MTJfbWFza3pfeG9yX3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkKTsNCmV4
dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX3hvcl9wcyhfX201MTIsIF9fbTUxMik7DQpleHRl
cm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX3hvcl9wcyhfX201MTIsIF9fbW1hc2sxNiwg
X19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfeG9y
X3BzKF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfeG9yX2VwaTMyKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfbWFza194b3JfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3hvcl9lcGkzMihfX21t
YXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
eG9yX2VwaTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWFza194b3JfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfeG9yX2VwaTY0KF9fbW1hc2s4LCBf
X201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19i
bGVuZF9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9fY2Rl
Y2wgX21tNTEyX21hc2tfYmxlbmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19ibGVuZF9lcGk4KF9fbW1hc2s2NCwgX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2JsZW5k
X2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2JsZW5kX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2JsZW5kX2VwaTY0KF9fbW1hc2s4
LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc2xs
X2VwaTE2KF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
c2xsX2VwaTMyKF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfc2xsX2VwaTY0KF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfc2xsaV9lcGkxNihfX201MTJpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfc2xsaV9lcGkzMihfX201MTJpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc2xsaV9lcGk2NChfX201MTJpLCB1bnNpZ25lZCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc2xsdl9lcGkxNihfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3NsbHZfZXBpMzIoX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zbGx2X2VwaTY0KF9fbTUx
MmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NsbF9l
cGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza3pfc2xsX2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSwgX19t
MTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NsbF9lcGkzMihfX201
MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfbWFza3pfc2xsX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NsbF9lcGk2NChfX201MTJpLCBfX21t
YXNrOCwgX19tNTEyaSwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrel9zbGxfZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza19zbGxpX2VwaTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19t
NTEyaSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6
X3NsbGlfZXBpMTYoX19tbWFzazMyLCBfX201MTJpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zbGxpX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwg
X19tNTEyaSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21h
c2t6X3NsbGlfZXBpMzIoX19tbWFzazE2LCBfX201MTJpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zbGxpX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4
LCBfX201MTJpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza3pfc2xsaV9lcGk2NChfX21tYXNrOCwgX19tNTEyaSwgdW5zaWduZWQgaW50KTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc2xsdl9lcGkxNihfX201MTJpLCBfX21tYXNr
MzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a3pfc2xsdl9lcGkxNihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza19zbGx2X2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zbGx2
X2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3NsbHZfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc2xsdl9lcGk2NChf
X21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQoNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX3NybF9lcGkxNihfX201MTJpLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX3NybF9lcGkzMihfX201MTJpLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX3NybF9lcGk2NChfX201MTJpLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX3NybGlfZXBpMTYoX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX3NybGlfZXBpMzIoX19tNTEyaSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX3NybGlfZXBpNjQoX19tNTEyaSwgdW5zaWduZWQgaW50KTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3NybHZfZXBpMTYoX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zcmx2X2VwaTMyKF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc3Jsdl9lcGk2NChfX201MTJp
LCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zcmxfZXBp
MTYoX19tNTEyaSwgX19tbWFzazMyLCBfX201MTJpLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2t6X3NybF9lcGkxNihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zcmxfZXBpMzIoX19tNTEy
aSwgX19tbWFzazE2LCBfX201MTJpLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2t6X3NybF9lcGkzMihfX21tYXNrMTYsIF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zcmxfZXBpNjQoX19tNTEyaSwgX19tbWFz
azgsIF9fbTUxMmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a3pfc3JsX2VwaTY0KF9fbW1hc2s4LCBfX201MTJpLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2tfc3JsaV9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTUx
MmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9z
cmxpX2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX21hc2tfc3JsaV9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIHVu
c2lnbmVkIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zcmxpX2Vw
aTMyKF9fbW1hc2sxNiwgX19tNTEyaSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2tfc3JsaV9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwg
dW5zaWduZWQgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3NybGlf
ZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrX3NybHZfZXBpMTYoX19tNTEyaSwgX19tbWFzazMyLCBfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3NybHZfZXBp
MTYoX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2tfc3Jsdl9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc3Jsdl9lcGkzMihfX21t
YXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza19zcmx2X2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3NybHZfZXBpNjQoX19tbWFzazgsIF9f
bTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zcmFfZXBp
MTYoX19tNTEyaSwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zcmFf
ZXBpMzIoX19tNTEyaSwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9z
cmFfZXBpNjQoX19tNTEyaSwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9zcmFpX2VwaTE2KF9fbTUxMmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9zcmFpX2VwaTMyKF9fbTUxMmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9zcmFpX2VwaTY0KF9fbTUxMmksIHVuc2lnbmVkIGludCk7DQpl
eHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zcmF2X2VwaTE2KF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc3Jhdl9lcGkzMihfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3NyYXZfZXBpNjQoX19tNTEyaSwg
X19tNTEyaSk7DQoNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc3JhX2VwaTE2
KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrel9zcmFfZXBpMTYoX19tbWFzazMyLCBfX201MTJpLCBfX20xMjhp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc3JhX2VwaTMyKF9fbTUxMmks
IF9fbW1hc2sxNiwgX19tNTEyaSwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrel9zcmFfZXBpMzIoX19tbWFzazE2LCBfX201MTJpLCBfX20xMjhpKTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc3JhX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4
LCBfX201MTJpLCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6
X3NyYV9lcGk2NChfX21tYXNrOCwgX19tNTEyaSwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrX3NyYWlfZXBpMTYoX19tNTEyaSwgX19tbWFzazMyLCBfX201MTJp
LCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc3Jh
aV9lcGkxNihfX21tYXNrMzIsIF9fbTUxMmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NyYWlfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201
MTJpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pf
c3JhaV9lcGkzMihfX21tYXNrMTYsIF9fbTUxMmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NyYWlfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9f
bTUxMmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNr
el9zcmFpX2VwaTY0KF9fbW1hc2s4LCBfX201MTJpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zcmF2X2VwaTE2KF9fbTUxMmksIF9fbW1hc2szMiwg
X19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9z
cmF2X2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrX3NyYXZfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3NyYXZfZXBp
MzIoX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2tfc3Jhdl9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zcmF2X2VwaTY0KF9fbW1h
c2s4LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
YnNsbGlfZXBpMTI4KF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9ic3JsaV9lcGkxMjgoX19tNTEyaSwgaW50KTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfcm9sX2VwaTMyKF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3JvbF9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIGNv
bnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9yb2xfZXBpMzIo
X19tbWFzazE2LCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfcm9sX2VwaTY0KF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3JvbF9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwgY29u
c3QgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3JvbF9lcGk2NChf
X21tYXNrOCwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX3JvbHZfZXBpMzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX3JvbHZfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3JvbHZfZXBpMzIoX19t
bWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X3JvbHZfZXBpNjQoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrX3JvbHZfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfcm9sdl9lcGk2NChfX21tYXNr
OCwgX19tNTEyaSwgX19tNTEyaSk7DQoNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3Jv
cl9lcGkzMihfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a19yb3JfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfcm9yX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwg
aW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3Jvcl9lcGk2NChfX201MTJpLCBp
bnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19yb3JfZXBpNjQoX19tNTEy
aSwgX19tbWFzazgsIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXNrel9yb3JfZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9yb3J2X2VwaTMyKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19yb3J2X2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwg
X19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9y
b3J2X2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9yb3J2X2VwaTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza19yb3J2X2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3JvcnZf
ZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyZCBfX2Nk
ZWNsIF9tbTUxMl91bnBhY2toaV9wZChfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2tfdW5wYWNraGlfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUx
MmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfdW5wYWNr
aGlfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVj
bCBfbW01MTJfdW5wYWNraGlfcHMoX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19j
ZGVjbCBfbW01MTJfbWFza191bnBhY2toaV9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBf
X201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfdW5wYWNraGlfcHMo
X19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUx
Ml91bnBhY2tsb19wZChfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wg
X21tNTEyX21hc2tfdW5wYWNrbG9fcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUx
MmQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfdW5wYWNrbG9fcGQoX19t
bWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJf
dW5wYWNrbG9fcHMoX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfbWFza191bnBhY2tsb19wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0K
ZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfdW5wYWNrbG9fcHMoX19tbWFzazE2
LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl91bnBhY2to
aV9lcGk4KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza191bnBhY2toaV9lcGk4KF9fbTUxMmksIF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel91bnBhY2toaV9lcGk4KF9fbW1h
c2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl91
bnBhY2toaV9lcGkxNihfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2tfdW5wYWNraGlfZXBpMTYoX19tNTEyaSwgX19tbWFzazMyLCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3VucGFja2hpX2Vw
aTE2KF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl91bnBhY2toaV9lcGkzMihfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2tfdW5wYWNraGlfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBf
X201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3Vu
cGFja2hpX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl91bnBhY2toaV9lcGk2NChfX201MTJpLCBfX201MTJpKTsNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfdW5wYWNraGlfZXBpNjQoX19tNTEyaSwgX19t
bWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza3pfdW5wYWNraGlfZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfdW5wYWNrbG9fZXBpOChfX201MTJpLCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfdW5wYWNrbG9fZXBpOChfX201MTJp
LCBfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfbWFza3pfdW5wYWNrbG9fZXBpOChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfdW5wYWNrbG9fZXBpMTYoX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3VucGFja2xvX2VwaTE2
KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrel91bnBhY2tsb19lcGkxNihfX21tYXNrMzIsIF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfdW5wYWNrbG9fZXBpMzIoX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3VucGFj
a2xvX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel91bnBhY2tsb19lcGkzMihfX21tYXNrMTYsIF9f
bTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfdW5wYWNrbG9f
ZXBpNjQoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrX3VucGFja2xvX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3VucGFja2xvX2VwaTY0KF9fbW1h
c2s4LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJf
Z2V0ZXhwX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2dl
dGV4cF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2Rl
Y2wgX21tNTEyX21hc2t6X2dldGV4cF9wcyhfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9nZXRleHBfcm91bmRfcHMoX19tNTEyLCBpbnQpOw0KZXh0ZXJu
IF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19nZXRleHBfcm91bmRfcHMoX19tNTEyLCBfX21t
YXNrMTYsIF9fbTUxMiwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6
X2dldGV4cF9yb3VuZF9wcyhfX21tYXNrMTYsIF9fbTUxMiwgaW50KTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX2dldGV4cF9wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2Rl
Y2wgX21tNTEyX21hc2tfZ2V0ZXhwX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4
dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2dldGV4cF9wZChfX21tYXNrOCwgX19t
NTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9nZXRleHBfcm91bmRfcGQoX19t
NTEyZCwgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfZ2V0ZXhwX3Jv
dW5kX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQg
X19jZGVjbCBfbW01MTJfbWFza3pfZ2V0ZXhwX3JvdW5kX3BkKF9fbW1hc2s4LCBfX201MTJkLCBp
bnQpOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9nZXRtYW50X3BzKF9fbTUxMiwg
aW50LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19nZXRtYW50X3Bz
KF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIGludCwgaW50KTsNCmV4dGVybiBfX201MTIgIF9f
Y2RlY2wgX21tNTEyX21hc2t6X2dldG1hbnRfcHMoX19tbWFzazE2LCBfX201MTIsIGludCwgaW50
KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX2dldG1hbnRfcm91bmRfcHMoX19tNTEy
LCBpbnQsIGludCwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfZ2V0
bWFudF9yb3VuZF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBpbnQsIGludCwgaW50KTsN
CmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X2dldG1hbnRfcm91bmRfcHMoX19t
bWFzazE2LCBfX201MTIsIGludCwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBf
bW01MTJfZ2V0bWFudF9wZChfX201MTJkLCBpbnQsIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2dldG1hbnRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIGlu
dCwgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2dldG1hbnRfcGQo
X19tbWFzazgsIF9fbTUxMmQsIGludCwgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21t
NTEyX2dldG1hbnRfcm91bmRfcGQoX19tNTEyZCwgaW50LCBpbnQsIGludCk7DQpleHRlcm4gX19t
NTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2dldG1hbnRfcm91bmRfcGQoX19tNTEyZCwgX19tbWFz
azgsIF9fbTUxMmQsIGludCwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01
MTJfbWFza3pfZ2V0bWFudF9yb3VuZF9wZChfX21tYXNrOCwgX19tNTEyZCwgaW50LCBpbnQsIGlu
dCk7DQoNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX3Blcm11dGVfcGQoX19tNTEyZCwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZV9w
ZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX21hc2t6X3Blcm11dGVfcGQoX19tbWFzazgsIF9fbTUxMmQsIGNvbnN0
IGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9wZXJtdXRlX3BzKF9fbTUxMiwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZV9w
cyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAg
X19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZV9wcyhfX21tYXNrMTYsIF9fbTUxMiwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX3Blcm11dGV2YXJfcGQoX19tNTEy
ZCwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3Blcm11dGV2
YXJfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmQgX19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZXZhcl9wZChfX21tYXNrOCwgX19tNTEyZCwg
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9wZXJtdXRldmFyX3BzKF9f
bTUxMiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX3Blcm11
dGV2YXJfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyaSk7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9wZXJtdXRldmFyX3BzKF9fbW1hc2sxNiwgX19tNTEy
LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3Blcm11dGV2YXJfZXBp
MzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNr
X3Blcm11dGV2YXJfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsN
Cg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfcGVybXV0ZXhfcGQoX19tNTEyZCwgY29u
c3QgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZXhfcGQo
X19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrel9wZXJtdXRleF9wZChfX21tYXNrOCwgX19tNTEyZCwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3Blcm11dGV4X2VwaTY0KF9fbTUx
MmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3Blcm11
dGV4X2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZXhfZXBpNjQoX19tbWFzazgsIF9f
bTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9wZXJtdXRl
eHZhcl9wZChfX201MTJpLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEy
X21hc2tfcGVybXV0ZXh2YXJfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmQp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZXh2YXJfcGQoX19t
bWFzazgsIF9fbTUxMmksIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJf
cGVybXV0ZXh2YXJfcHMoX19tNTEyaSwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wg
X21tNTEyX21hc2tfcGVybXV0ZXh2YXJfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMmksIF9f
bTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9wZXJtdXRleHZhcl9w
cyhfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9wZXJtdXRleHZhcl9lcGkxNihfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZXh2YXJfZXBpMTYoX19tNTEyaSwgX19tbWFzazMy
LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6
X3Blcm11dGV4dmFyX2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9wZXJtdXRleHZhcl9lcGkzMihfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZXh2YXJfZXBpMzIo
X19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2t6X3Blcm11dGV4dmFyX2VwaTMyKF9fbW1hc2sxNiwgX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9wZXJtdXRleHZhcl9lcGk2
NChfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tf
cGVybXV0ZXh2YXJfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZXh2YXJfZXBpNjQoX19t
bWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUx
Ml9wZXJtdXRleDJ2YXJfcGQoX19tNTEyZCwgX19tNTEyaSAsIF9fbTUxMmQpOw0KZXh0ZXJuIF9f
bTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19wZXJtdXRleDJ2YXJfcGQoX19tNTEyZCwgX19tbWFz
azgsIF9fbTUxMmkgLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21h
c2syX3Blcm11dGV4MnZhcl9wZChfX201MTJkLCBfX201MTJpICwgX19tbWFzazgsIF9fbTUxMmQp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZXgydmFyX3BkKF9f
bW1hc2s4LCBfX201MTJkLCBfX201MTJpICwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfX2Nk
ZWNsIF9tbTUxMl9wZXJtdXRleDJ2YXJfcHMoX19tNTEyLCBfX201MTJpICwgX19tNTEyKTsNCmV4
dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZXgydmFyX3BzKF9fbTUxMiwg
X19tbWFzazE2LCBfX201MTJpICwgX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21t
NTEyX21hc2syX3Blcm11dGV4MnZhcl9wcyhfX201MTIsIF9fbTUxMmkgLCBfX21tYXNrMTYsIF9f
bTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9wZXJtdXRleDJ2YXJf
cHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMmkgLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfcGVybXV0ZXgydmFyX2VwaTE2KF9fbTUxMmksIF9fbTUxMmkgLCBfX201
MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZXgydmFyX2Vw
aTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSAsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFzazJfcGVybXV0ZXgydmFyX2VwaTE2KF9fbTUxMmksIF9fbTUx
MmkgLCBfX21tYXNrMzIsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza3pfcGVybXV0ZXgydmFyX2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSAsIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfcGVybXV0ZXgydmFyX2VwaTMy
KF9fbTUxMmksIF9fbTUxMmkgLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2tfcGVybXV0ZXgydmFyX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSAs
IF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFzazJfcGVybXV0ZXgy
dmFyX2VwaTMyKF9fbTUxMmksIF9fbTUxMmkgLCBfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZXgydmFyX2VwaTMyKF9fbW1hc2sx
NiwgX19tNTEyaSwgX19tNTEyaSAsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfcGVybXV0ZXgydmFyX2VwaTY0KF9fbTUxMmksIF9fbTUxMmkgLCBfX201MTJpKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfcGVybXV0ZXgydmFyX2VwaTY0KF9fbTUx
MmksIF9fbW1hc2s4LCBfX201MTJpICwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrMl9wZXJtdXRleDJ2YXJfZXBpNjQoX19tNTEyaSwgX19tNTEyaSAsIF9fbW1h
c2s4LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3Blcm11
dGV4MnZhcl9lcGk2NChfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSAsIF9fbTUxMmkpOw0KDQpl
eHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2NvbXByZXNzX3BkKF9fbTUxMmQsIF9f
bW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2Nv
bXByZXNzX3BkKF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21t
NTEyX21hc2tfY29tcHJlc3NfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4g
X19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9jb21wcmVzc19wcyhfX21tYXNrMTYsIF9fbTUx
Mik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2NvbXByZXNzX2VwaTgoX19t
NTEyaSwgX19tbWFzazY0LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X21hc2t6X2NvbXByZXNzX2VwaTgoX19tbWFzazY0LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2tfY29tcHJlc3NfZXBpMTYoX19tNTEyaSwgX19tbWFzazMyLCBf
X201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2NvbXByZXNzX2Vw
aTE2KF9fbW1hc2szMiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrX2NvbXByZXNzX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jb21wcmVzc19lcGkzMihfX21tYXNrMTYsIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jb21wcmVzc19lcGk2
NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrel9jb21wcmVzc19lcGk2NChfX21tYXNrOCwgX19tNTEyaSk7DQoNCmV4dGVybiB2
b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfY29tcHJlc3NzdG9yZXVfcGQodm9pZCosIF9fbW1h
c2s4LCBfX201MTJkKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfY29tcHJl
c3NzdG9yZXVfcHModm9pZCosIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiB2b2lkICAgIF9f
Y2RlY2wgX21tNTEyX21hc2tfY29tcHJlc3NzdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazY0LCBf
X201MTJpKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfY29tcHJlc3NzdG9y
ZXVfZXBpMTYodm9pZCosIF9fbW1hc2szMiwgX19tNTEyaSk7DQpleHRlcm4gdm9pZCAgICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTMyKHZvaWQqLCBfX21tYXNrMTYsIF9f
bTUxMmkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJfbWFza19jb21wcmVzc3N0b3Jl
dV9lcGk2NCh2b2lkKiwgX19tbWFzazgsIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyZCBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2V4cGFuZF9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCk7DQpl
eHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9leHBhbmRfcGQoX19tbWFzazgsIF9f
bTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19leHBhbmRfcHMoX19t
NTEyLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9t
YXNrel9leHBhbmRfcHMoX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfbWFza19leHBhbmRfZXBpOChfX201MTJpLCBfX21tYXNrNjQsIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfZXhwYW5kX2VwaTgoX19tbWFzazY0
LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfZXhwYW5kX2Vw
aTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrel9leHBhbmRfZXBpMTYoX19tbWFzazMyLCBfX201MTJpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfZXhwYW5kX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sx
NiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9leHBhbmRf
ZXBpMzIoX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X21hc2tfZXhwYW5kX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2V4cGFuZF9lcGk2NChfX21tYXNrOCwgX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX2V4cGFuZGxvYWR1X3BkKF9f
bTUxMmQsIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9t
bTUxMl9tYXNrel9leHBhbmRsb2FkdV9wZChfX21tYXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJu
IF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19leHBhbmRsb2FkdV9wcyhfX201MTIsIF9fbW1h
c2sxNiwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pf
ZXhwYW5kbG9hZHVfcHMoX19tbWFzazE2LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrX2V4cGFuZGxvYWR1X2VwaTgoX19tNTEyaSwgX19tbWFzazY0LCBj
b25zdCB2b2lkKik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9leHBhbmRs
b2FkdV9lcGk4KF9fbW1hc2s2NCwgY29uc3Qgdm9pZCopOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfbWFza19leHBhbmRsb2FkdV9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIGNvbnN0
IHZvaWQqKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2V4cGFuZGxvYWR1
X2VwaTE2KF9fbW1hc2szMiwgY29uc3Qgdm9pZCopOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfbWFza19leHBhbmRsb2FkdV9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIHZvaWQgY29u
c3QqKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2V4cGFuZGxvYWR1X2Vw
aTMyKF9fbW1hc2sxNiwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWFza19leHBhbmRsb2FkdV9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgdm9pZCBjb25zdCop
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfZXhwYW5kbG9hZHVfZXBpNjQo
X19tbWFzazgsIHZvaWQgY29uc3QqKTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
dGVybmFyeWxvZ2ljX2VwaTMyKF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3Rlcm5hcnlsb2dpY19lcGkzMihfX201MTJp
LCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel90ZXJuYXJ5bG9naWNfZXBpMzIoX19tbWFzazE2LCBfX201MTJpLCBf
X201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfdGVy
bmFyeWxvZ2ljX2VwaTY0KF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3Rlcm5hcnlsb2dpY19lcGk2NChfX201MTJpLCBf
X21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2t6X3Rlcm5hcnlsb2dpY19lcGk2NChfX21tYXNrOCwgX19tNTEyaSwgX19tNTEy
aSwgX19tNTEyaSwgaW50KTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY29uZmxp
Y3RfZXBpMzIoX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2Nv
bmZsaWN0X2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jb25mbGljdF9lcGkzMihfX21tYXNrMTYsIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY29uZmxpY3RfZXBpNjQoX19tNTEyaSk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2NvbmZsaWN0X2VwaTY0KF9fbTUx
MmksIF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21h
c2t6X2NvbmZsaWN0X2VwaTY0KF9fbW1hc2s4LCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfbHpjbnRfZXBpMzIoX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2x6Y250X2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9semNudF9lcGkzMihfX21tYXNr
MTYsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbHpjbnRfZXBpNjQo
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2x6Y250X2VwaTY0
KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2t6X2x6Y250X2VwaTY0KF9fbW1hc2s4LCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfYXZnX2VwdTgoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19t
NTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2F2Z19lcHU4KF9fbTUxMmksIF9fbW1hc2s2NCwgX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9hdmdf
ZXB1OChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfYXZnX2VwdTE2KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfbWFza19hdmdfZXB1MTYoX19tNTEyaSwgX19tbWFzazMyLCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2F2Z19lcHUxNihf
X21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9zYWRfZXB1OChfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX2Ric2FkX2VwdTgoX19tNTEyaSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2tfZGJzYWRfZXB1OChfX201MTJpLCBfX21tYXNrMzIsIF9fbTUx
MmksIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9k
YnNhZF9lcHU4KF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSwgaW50KTsNCg0KZXh0ZXJuIGZs
b2F0ICAgX19jZGVjbCBfbW01MTJfcmVkdWNlX2FkZF9wcyhfX201MTIpOw0KZXh0ZXJuIGZsb2F0
ICAgX19jZGVjbCBfbW01MTJfbWFza19yZWR1Y2VfYWRkX3BzKF9fbW1hc2sxNiwgX19tNTEyKTsN
CmV4dGVybiBkb3VibGUgIF9fY2RlY2wgX21tNTEyX3JlZHVjZV9hZGRfcGQoX19tNTEyZCk7DQpl
eHRlcm4gZG91YmxlICBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9hZGRfcGQoX19tbWFzazgs
IF9fbTUxMmQpOw0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW01MTJfcmVkdWNlX2FkZF9lcGk4
KF9fbTUxMmkpOw0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW01MTJfbWFza19yZWR1Y2VfYWRk
X2VwaTgoX19tbWFzazY0LCBfX201MTJpKTsNCmV4dGVybiBpbnQgICAgIF9fY2RlY2wgX21tNTEy
X3JlZHVjZV9hZGRfZXBpMTYoX19tNTEyaSk7DQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTUx
Ml9tYXNrX3JlZHVjZV9hZGRfZXBpMTYoX19tbWFzazMyLCBfX201MTJpKTsNCmV4dGVybiBpbnQg
ICAgIF9fY2RlY2wgX21tNTEyX3JlZHVjZV9hZGRfZXBpMzIoX19tNTEyaSk7DQpleHRlcm4gaW50
ICAgICBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9hZGRfZXBpMzIoX19tbWFzazE2LCBfX201
MTJpKTsNCmV4dGVybiBfX2ludDY0IF9fY2RlY2wgX21tNTEyX3JlZHVjZV9hZGRfZXBpNjQoX19t
NTEyaSk7DQpleHRlcm4gX19pbnQ2NCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9hZGRfZXBp
NjQoX19tbWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW01MTJfcmVk
dWNlX2FkZF9lcHU4KF9fbTUxMmkpOw0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW01MTJfbWFz
a19yZWR1Y2VfYWRkX2VwdTgoX19tbWFzazY0LCBfX201MTJpKTsNCmV4dGVybiBpbnQgICAgIF9f
Y2RlY2wgX21tNTEyX3JlZHVjZV9hZGRfZXB1MTYoX19tNTEyaSk7DQpleHRlcm4gaW50ICAgICBf
X2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9hZGRfZXB1MTYoX19tbWFzazMyLCBfX201MTJpKTsN
Cg0KZXh0ZXJuIGZsb2F0ICAgX19jZGVjbCBfbW01MTJfcmVkdWNlX211bF9wcyhfX201MTIpOw0K
ZXh0ZXJuIGZsb2F0ICAgX19jZGVjbCBfbW01MTJfbWFza19yZWR1Y2VfbXVsX3BzKF9fbW1hc2sx
NiwgX19tNTEyKTsNCmV4dGVybiBkb3VibGUgIF9fY2RlY2wgX21tNTEyX3JlZHVjZV9tdWxfcGQo
X19tNTEyZCk7DQpleHRlcm4gZG91YmxlICBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9tdWxf
cGQoX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIGludCAgICAgX19jZGVjbCBfbW01MTJfcmVk
dWNlX211bF9lcGkzMihfX201MTJpKTsNCmV4dGVybiBpbnQgICAgIF9fY2RlY2wgX21tNTEyX21h
c2tfcmVkdWNlX211bF9lcGkzMihfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJuIF9faW50NjQg
X19jZGVjbCBfbW01MTJfcmVkdWNlX211bF9lcGk2NChfX201MTJpKTsNCmV4dGVybiBfX2ludDY0
IF9fY2RlY2wgX21tNTEyX21hc2tfcmVkdWNlX211bF9lcGk2NChfX21tYXNrOCwgX19tNTEyaSk7
DQoNCmV4dGVybiBmbG9hdCAgIF9fY2RlY2wgX21tNTEyX3JlZHVjZV9taW5fcHMoX19tNTEyKTsN
CmV4dGVybiBmbG9hdCAgIF9fY2RlY2wgX21tNTEyX21hc2tfcmVkdWNlX21pbl9wcyhfX21tYXNr
MTYsIF9fbTUxMik7DQpleHRlcm4gZG91YmxlICBfX2NkZWNsIF9tbTUxMl9yZWR1Y2VfbWluX3Bk
KF9fbTUxMmQpOw0KZXh0ZXJuIGRvdWJsZSAgX19jZGVjbCBfbW01MTJfbWFza19yZWR1Y2VfbWlu
X3BkKF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBpbnQgICAgIF9fY2RlY2wgX21tNTEyX3Jl
ZHVjZV9taW5fZXBpMzIoX19tNTEyaSk7DQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTUxMl9t
YXNrX3JlZHVjZV9taW5fZXBpMzIoX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiBfX2ludDY0
IF9fY2RlY2wgX21tNTEyX3JlZHVjZV9taW5fZXBpNjQoX19tNTEyaSk7DQpleHRlcm4gX19pbnQ2
NCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9taW5fZXBpNjQoX19tbWFzazgsIF9fbTUxMmkp
Ow0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX19jZGVjbCBfbW01MTJfcmVkdWNlX21pbl9lcHUz
MihfX201MTJpKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9fY2RlY2wgX21tNTEyX21hc2tf
cmVkdWNlX21pbl9lcHUzMihfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJuIHVuc2lnbmVkIF9f
aW50NjQgX19jZGVjbCBfbW01MTJfcmVkdWNlX21pbl9lcHU2NChfX201MTJpKTsNCmV4dGVybiB1
bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX21tNTEyX21hc2tfcmVkdWNlX21pbl9lcHU2NChfX21t
YXNrOCwgX19tNTEyaSk7DQoNCmV4dGVybiBmbG9hdCAgIF9fY2RlY2wgX21tNTEyX3JlZHVjZV9t
YXhfcHMoX19tNTEyKTsNCmV4dGVybiBmbG9hdCAgIF9fY2RlY2wgX21tNTEyX21hc2tfcmVkdWNl
X21heF9wcyhfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gZG91YmxlICBfX2NkZWNsIF9tbTUx
Ml9yZWR1Y2VfbWF4X3BkKF9fbTUxMmQpOw0KZXh0ZXJuIGRvdWJsZSAgX19jZGVjbCBfbW01MTJf
bWFza19yZWR1Y2VfbWF4X3BkKF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBpbnQgICAgIF9f
Y2RlY2wgX21tNTEyX3JlZHVjZV9tYXhfZXBpMzIoX19tNTEyaSk7DQpleHRlcm4gaW50ICAgICBf
X2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9tYXhfZXBpMzIoX19tbWFzazE2LCBfX201MTJpKTsN
CmV4dGVybiBfX2ludDY0IF9fY2RlY2wgX21tNTEyX3JlZHVjZV9tYXhfZXBpNjQoX19tNTEyaSk7
DQpleHRlcm4gX19pbnQ2NCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9tYXhfZXBpNjQoX19t
bWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX19jZGVjbCBfbW01MTJf
cmVkdWNlX21heF9lcHUzMihfX201MTJpKTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9fY2Rl
Y2wgX21tNTEyX21hc2tfcmVkdWNlX21heF9lcHUzMihfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0
ZXJuIHVuc2lnbmVkIF9faW50NjQgX19jZGVjbCBfbW01MTJfcmVkdWNlX21heF9lcHU2NChfX201
MTJpKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX21tNTEyX21hc2tfcmVkdWNl
X21heF9lcHU2NChfX21tYXNrOCwgX19tNTEyaSk7DQoNCmV4dGVybiBpbnQgICAgIF9fY2RlY2wg
X21tNTEyX3JlZHVjZV9hbmRfZXBpMzIoX19tNTEyaSk7DQpleHRlcm4gaW50ICAgICBfX2NkZWNs
IF9tbTUxMl9tYXNrX3JlZHVjZV9hbmRfZXBpMzIoX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVy
biBfX2ludDY0IF9fY2RlY2wgX21tNTEyX3JlZHVjZV9hbmRfZXBpNjQoX19tNTEyaSk7DQpleHRl
cm4gX19pbnQ2NCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9hbmRfZXBpNjQoX19tbWFzazgs
IF9fbTUxMmkpOw0KDQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTUxMl9yZWR1Y2Vfb3JfZXBp
MzIoX19tNTEyaSk7DQpleHRlcm4gaW50ICAgICBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVjZV9v
cl9lcGkzMihfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJuIF9faW50NjQgX19jZGVjbCBfbW01
MTJfcmVkdWNlX29yX2VwaTY0KF9fbTUxMmkpOw0KZXh0ZXJuIF9faW50NjQgX19jZGVjbCBfbW01
MTJfbWFza19yZWR1Y2Vfb3JfZXBpNjQoX19tbWFzazgsIF9fbTUxMmkpOw0KDQpleHRlcm4gaW50
ICAgICBfX2NkZWNsIF9tbTUxMl9yZWR1Y2VfeG9yX2VwaTMyKF9fbTUxMmkpOw0KZXh0ZXJuIGlu
dCAgICAgX19jZGVjbCBfbW01MTJfbWFza19yZWR1Y2VfeG9yX2VwaTMyKF9fbW1hc2sxNiwgX19t
NTEyaSk7DQpleHRlcm4gX19pbnQ2NCBfX2NkZWNsIF9tbTUxMl9yZWR1Y2VfeG9yX2VwaTY0KF9f
bTUxMmkpOw0KZXh0ZXJuIF9faW50NjQgX19jZGVjbCBfbW01MTJfbWFza19yZWR1Y2VfeG9yX2Vw
aTY0KF9fbW1hc2s4LCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJf
cmVkdWNlX3BkKF9fbTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9t
YXNrX3JlZHVjZV9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgaW50KTsNCmV4dGVybiBf
X201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X3JlZHVjZV9wZChfX21tYXNrOCwgX19tNTEyZCwg
aW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX3JlZHVjZV9yb3VuZF9wZChfX201
MTJkLCBpbnQsIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JlZHVj
ZV9yb3VuZF9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwgaW50LCBpbnQpOw0KZXh0ZXJu
IF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfcmVkdWNlX3JvdW5kX3BkKF9fbW1hc2s4LCBf
X201MTJkLCBpbnQsIGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9yZWR1Y2Vf
cHMoX19tNTEyLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19yZWR1
Y2VfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgaW50KTsNCmV4dGVybiBfX201MTIgIF9f
Y2RlY2wgX21tNTEyX21hc2t6X3JlZHVjZV9wcyhfX21tYXNrMTYsIF9fbTUxMiwgaW50KTsNCmV4
dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX3JlZHVjZV9yb3VuZF9wcyhfX201MTIsIGludCwg
aW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfcmVkdWNlX3JvdW5kX3Bz
KF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIGludCwgaW50KTsNCmV4dGVybiBfX201MTIgIF9f
Y2RlY2wgX21tNTEyX21hc2t6X3JlZHVjZV9yb3VuZF9wcyhfX21tYXNrMTYsIF9fbTUxMiwgaW50
LCBpbnQpOw0KDQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9yb3VuZHNjYWxlX3BkKF9f
bTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JvdW5kc2Nh
bGVfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrel9yb3VuZHNjYWxlX3BkKF9fbW1hc2s4LCBfX201MTJkLCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfcm91bmRzY2FsZV9yb3VuZF9wZChfX201
MTJkLCBpbnQsIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JvdW5k
c2NhbGVfcm91bmRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIGludCwgaW50KTsNCmV4
dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X3JvdW5kc2NhbGVfcm91bmRfcGQoX19t
bWFzazgsIF9fbTUxMmQsIGludCwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEy
X3JvdW5kc2NhbGVfcHMoX19tNTEyLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfbWFza19yb3VuZHNjYWxlX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTIsIGludCk7DQpl
eHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9yb3VuZHNjYWxlX3BzKF9fbW1hc2sx
NiwgX19tNTEyLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfcm91bmRzY2Fs
ZV9yb3VuZF9wcyhfX201MTIsIGludCwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21t
NTEyX21hc2tfcm91bmRzY2FsZV9yb3VuZF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBp
bnQsIGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9yb3VuZHNjYWxl
X3JvdW5kX3BzKF9fbW1hc2sxNiwgX19tNTEyLCBpbnQsIGludCk7DQoNCmV4dGVybiBfX201MTJk
IF9fY2RlY2wgX21tNTEyX3NjYWxlZl9wZChfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201
MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfc2NhbGVmX3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201
MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X3NjYWxl
Zl9wZChfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNs
IF9tbTUxMl9zY2FsZWZfcm91bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgaW50KTsNCmV4dGVybiBf
X201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfc2NhbGVmX3JvdW5kX3BkKF9fbTUxMmQsIF9fbW1h
c2s4LCBfX201MTJkLCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01
MTJfbWFza3pfc2NhbGVmX3JvdW5kX3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfc2NhbGVmX3BzKF9fbTUxMiwgX19tNTEy
KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfc2NhbGVmX3BzKF9fbTUxMiwg
X19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUx
Ml9tYXNrel9zY2FsZWZfcHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9zY2FsZWZfcm91bmRfcHMoX19tNTEyLCBfX201MTIsIGludCk7
DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX3NjYWxlZl9yb3VuZF9wcyhfX201
MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEyICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel9zY2FsZWZfcm91bmRfcHMoX19tbWFzazE2LCBfX201MTIsIF9fbTUx
MiwgaW50KTsNCg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfZml4dXBpbW1fcGQoX19t
NTEyZCwgX19tNTEyZCwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2Rl
Y2wgX21tNTEyX21hc2tfZml4dXBpbW1fcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIF9f
bTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9m
aXh1cGltbV9wZChfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCwgX19tNTEyaSwgY29uc3QgaW50
KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2ZpeHVwaW1tX3JvdW5kX3BkKF9fbTUx
MmQsIF9fbTUxMmQsIF9fbTUxMmksIGNvbnN0IGludCwgY29uc3QgaW50KTsNCmV4dGVybiBfX201
MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfZml4dXBpbW1fcm91bmRfcGQoX19tNTEyZCwgX19tbWFz
azgsIF9fbTUxMmQsIF9fbTUxMmksIGNvbnN0IGludCwgY29uc3QgaW50KTsNCmV4dGVybiBfX201
MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2ZpeHVwaW1tX3JvdW5kX3BkKF9fbW1hc2s4LCBfX201
MTJkLCBfX201MTJkLCBfX201MTJpLCBjb25zdCBpbnQsIGNvbnN0IGludCk7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9maXh1cGltbV9wcyhfX201MTIsIF9fbTUxMiwgX19tNTEyaSwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfZml4dXBpbW1f
cHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVy
biBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X2ZpeHVwaW1tX3BzKF9fbW1hc2sxNiwgX19t
NTEyLCBfX201MTIsIF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNs
IF9tbTUxMl9maXh1cGltbV9yb3VuZF9wcyhfX201MTIsIF9fbTUxMiwgX19tNTEyaSwgY29uc3Qg
aW50LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19maXh1
cGltbV9yb3VuZF9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTJpLCBjb25zdCBp
bnQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9maXh1
cGltbV9yb3VuZF9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyLCBfX201MTJpLCBjb25zdCBp
bnQsIGNvbnN0IGludCk7DQoNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX3N0cmVhbV9w
ZCh2b2lkKiwgX19tNTEyZCk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9zdHJlYW1f
cHModm9pZCosIF9fbTUxMik7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9zdHJlYW1f
c2k1MTIodm9pZCosIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc3Ry
ZWFtX2xvYWRfc2k1MTIodm9pZCBjb25zdCopOw0KDQpleHRlcm4gX19tMTI4ZCBfX2NkZWNsIF9t
bTUxMl9jYXN0cGQ1MTJfcGQxMjgoX19tNTEyZCk7DQpleHRlcm4gX19tMTI4ICBfX2NkZWNsIF9t
bTUxMl9jYXN0cHM1MTJfcHMxMjgoX19tNTEyKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21t
NTEyX2Nhc3RzaTUxMl9zaTEyOChfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX2Nhc3RzaTEyOF9zaTUxMihfX20xMjhpKTsNCg0KZXh0ZXJuIF9fbW1hc2sxNiBfX2NkZWNs
IF9tbTUxMl9mcGNsYXNzX3BzX21hc2soX19tNTEyLCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2sxNiBf
X2NkZWNsIF9tbTUxMl9tYXNrX2ZwY2xhc3NfcHNfbWFzayhfX21tYXNrMTYsIF9fbTUxMiwgaW50
KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfZnBjbGFzc19wZF9tYXNrKF9fbTUx
MmQsIGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tNTEyX21hc2tfZnBjbGFzc19w
ZF9tYXNrKF9fbW1hc2s4LCBfX201MTJkLCBpbnQpOw0KDQpleHRlcm4gX19tNTEyZCBfX2NkZWNs
IF9tbTUxMl9yYW5nZV9wZChfX201MTJkLCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQg
X19jZGVjbCBfbW01MTJfbWFza19yYW5nZV9wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyZCwg
X19tNTEyZCwgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X3Jhbmdl
X3BkKF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19j
ZGVjbCBfbW01MTJfcmFuZ2Vfcm91bmRfcGQoX19tNTEyZCwgX19tNTEyZCwgaW50LCBpbnQpOw0K
ZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19yYW5nZV9yb3VuZF9wZChfX201MTJk
LCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQg
X19jZGVjbCBfbW01MTJfbWFza3pfcmFuZ2Vfcm91bmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIF9f
bTUxMmQsIGludCwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX3JhbmdlX3Bz
KF9fbTUxMiwgX19tNTEyLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFz
a19yYW5nZV9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIsIGludCk7DQpleHRl
cm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9yYW5nZV9wcyhfX21tYXNrMTYsIF9fbTUx
MiwgX19tNTEyLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfcmFuZ2Vfcm91
bmRfcHMoX19tNTEyLCBfX201MTIsIGludCwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wg
X21tNTEyX21hc2tfcmFuZ2Vfcm91bmRfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgX19t
NTEyLCBpbnQsIGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrel9yYW5n
ZV9yb3VuZF9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyLCBpbnQsIGludCk7DQoNCmV4dGVy
biBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hZGRfZXBpMTYoX19tNTEyaSwgX19tNTEyaSk7DQpl
eHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX21hZGRfZXBpMTYoX19tNTEyaSwgX19t
bWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X21hc2t6X21hZGRfZXBpMTYoX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hZGR1YnNfZXBpMTYoX19tNTEyaSwgX19tNTEyaSk7DQpl
eHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX21hZGR1YnNfZXBpMTYoX19tNTEyaSwg
X19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2t6X21hZGR1YnNfZXBpMTYoX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsNCg0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfcGFja3NfZXBpMTYoX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3BhY2tzX2VwaTE2KF9fbTUx
MmksIF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrel9wYWNrc19lcGkxNihfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfcGFja3NfZXBpMzIoX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3BhY2tzX2VwaTMyKF9fbTUx
MmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrel9wYWNrc19lcGkzMihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfcGFja3VzX2VwaTE2KF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19wYWNrdXNfZXBpMTYoX19t
NTEyaSwgX19tbWFzazY0LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX21hc2t6X3BhY2t1c19lcGkxNihfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfcGFja3VzX2VwaTMyKF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19wYWNrdXNfZXBpMzIo
X19tNTEyaSwgX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2t6X3BhY2t1c19lcGkzMihfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUx
MmkpOw0KDQpleHRlcm4gX19tbWFzazY0IF9fY2RlY2wgX21tNTEyX2NtcF9lcGk4X21hc2soX19t
NTEyaSwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrNjQgX19jZGVjbCBfbW01
MTJfbWFza19jbXBfZXBpOF9tYXNrKF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVjbCBfbW01MTJfY21wX2VwaTE2X21hc2soX19t
NTEyaSwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVjbCBfbW01
MTJfbWFza19jbXBfZXBpMTZfbWFzayhfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmksIGNvbnN0
IGludCk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tNTEyX2NtcF9lcGkzMl9tYXNrKF9f
bTUxMmksIF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21t
NTEyX21hc2tfY21wX2VwaTMyX21hc2soX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpLCBjb25z
dCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTUxMl9jbXBfZXBpNjRfbWFzayhf
X201MTJpLCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9t
bTUxMl9tYXNrX2NtcF9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpLCBjb25z
dCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s2NCBfX2NkZWNsIF9tbTUxMl9jbXBfZXB1OF9tYXNrKF9f
bTUxMmksIF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazY0IF9fY2RlY2wgX21t
NTEyX21hc2tfY21wX2VwdThfbWFzayhfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmksIGNvbnN0
IGludCk7DQpleHRlcm4gX19tbWFzazMyIF9fY2RlY2wgX21tNTEyX2NtcF9lcHUxNl9tYXNrKF9f
bTUxMmksIF9fbTUxMmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazMyIF9fY2RlY2wgX21t
NTEyX21hc2tfY21wX2VwdTE2X21hc2soX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpLCBjb25z
dCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9tbTUxMl9jbXBfZXB1MzJfbWFzayhf
X201MTJpLCBfX201MTJpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9t
bTUxMl9tYXNrX2NtcF9lcHUzMl9tYXNrKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSwgY29u
c3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfY21wX2VwdTY0X21hc2so
X19tNTEyaSwgX19tNTEyaSwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBf
bW01MTJfbWFza19jbXBfZXB1NjRfbWFzayhfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSwgY29u
c3QgaW50KTsNCg0KZXh0ZXJuIF9fbW1hc2s2NCBfX2NkZWNsIF9tbTUxMl90ZXN0X2VwaThfbWFz
ayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQgX19jZGVjbCBfbW01MTJfbWFz
a190ZXN0X2VwaThfbWFzayhfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bW1hc2szMiBfX2NkZWNsIF9tbTUxMl90ZXN0X2VwaTE2X21hc2soX19tNTEyaSwgX19tNTEyaSk7
DQpleHRlcm4gX19tbWFzazMyIF9fY2RlY2wgX21tNTEyX21hc2tfdGVzdF9lcGkxNl9tYXNrKF9f
bW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazY0IF9fY2RlY2wgX21t
NTEyX3Rlc3RuX2VwaThfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQg
X19jZGVjbCBfbW01MTJfbWFza190ZXN0bl9lcGk4X21hc2soX19tbWFzazY0LCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVjbCBfbW01MTJfdGVzdG5fZXBpMTZfbWFz
ayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVjbCBfbW01MTJfbWFz
a190ZXN0bl9lcGkxNl9tYXNrKF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4g
X19tbWFzazE2IF9fY2RlY2wgX21tNTEyX3Rlc3RfZXBpMzJfbWFzayhfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfbW01MTJfbWFza190ZXN0X2VwaTMyX21hc2so
X19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBf
bW01MTJfdGVzdF9lcGk2NF9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s4
ICBfX2NkZWNsIF9tbTUxMl9tYXNrX3Rlc3RfZXBpNjRfbWFzayhfX21tYXNrOCwgX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tNTEyX3Rlc3RuX2VwaTMyX21h
c2soX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tNTEyX21h
c2tfdGVzdG5fZXBpMzJfbWFzayhfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbTUxMl90ZXN0bl9lcGk2NF9tYXNrKF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTUxMl9tYXNrX3Rlc3RuX2VwaTY0X21h
c2soX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tbWFzazE2IF9fY2Rl
Y2wgX21tNTEyX2t1bnBhY2tiKF9fbW1hc2sxNiwgX19tbWFzazE2KTsNCmV4dGVybiBfX21tYXNr
MzIgX19jZGVjbCBfbW01MTJfa3VucGFja3coX19tbWFzazMyLCBfX21tYXNrMzIpOw0KZXh0ZXJu
IF9fbW1hc2s2NCBfX2NkZWNsIF9tbTUxMl9rdW5wYWNrZChfX21tYXNrNjQsIF9fbW1hc2s2NCk7
DQoNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX21tNTEyX3Rlc3R6X2FuZF9tYXNrOChf
X21tYXNrOCwgX19tbWFzazgpOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBfbW01MTJf
dGVzdHpfYW5kX21hc2sxNihfX21tYXNrMTYsIF9fbW1hc2sxNik7DQpleHRlcm4gdW5zaWduZWQg
Y2hhciBfX2NkZWNsIF9tbTUxMl90ZXN0el9hbmRfbWFzazMyKF9fbW1hc2szMiwgX19tbWFzazMy
KTsNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX21tNTEyX3Rlc3R6X2FuZF9tYXNrNjQo
X19tbWFzazY0LCBfX21tYXNrNjQpOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBfbW01
MTJfdGVzdHpfYW5kbl9tYXNrOChfX21tYXNrOCwgX19tbWFzazgpOw0KZXh0ZXJuIHVuc2lnbmVk
IGNoYXIgX19jZGVjbCBfbW01MTJfdGVzdHpfYW5kbl9tYXNrMTYoX19tbWFzazE2LCBfX21tYXNr
MTYpOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBfbW01MTJfdGVzdHpfYW5kbl9tYXNr
MzIoX19tbWFzazMyLCBfX21tYXNrMzIpOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBf
bW01MTJfdGVzdHpfYW5kbl9tYXNrNjQoX19tbWFzazY0LCBfX21tYXNrNjQpOw0KZXh0ZXJuIHVu
c2lnbmVkIGNoYXIgX19jZGVjbCBfbW01MTJfdGVzdHpfb3JfbWFzazgoX19tbWFzazgsIF9fbW1h
c2s4KTsNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX21tNTEyX3Rlc3R6X29yX21hc2sx
NihfX21tYXNrMTYsIF9fbW1hc2sxNik7DQpleHRlcm4gdW5zaWduZWQgY2hhciBfX2NkZWNsIF9t
bTUxMl90ZXN0el9vcl9tYXNrMzIoX19tbWFzazMyLCBfX21tYXNrMzIpOw0KZXh0ZXJuIHVuc2ln
bmVkIGNoYXIgX19jZGVjbCBfbW01MTJfdGVzdHpfb3JfbWFzazY0KF9fbW1hc2s2NCwgX19tbWFz
azY0KTsNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX21tNTEyX3Rlc3R6X25vcl9tYXNr
OChfX21tYXNrOCwgX19tbWFzazgpOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBfbW01
MTJfdGVzdHpfbm9yX21hc2sxNihfX21tYXNrMTYsIF9fbW1hc2sxNik7DQpleHRlcm4gdW5zaWdu
ZWQgY2hhciBfX2NkZWNsIF9tbTUxMl90ZXN0el9ub3JfbWFzazMyKF9fbW1hc2szMiwgX19tbWFz
azMyKTsNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX21tNTEyX3Rlc3R6X25vcl9tYXNr
NjQoX19tbWFzazY0LCBfX21tYXNrNjQpOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUx
Ml9pMzJnYXRoZXJfcHMoX19tNTEyaSwgdm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gX19tNTEy
ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2kzMmdhdGhlcl9wcyhfX201MTIsIF9fbW1hc2sxNiwgX19t
NTEyaSwgdm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9p
MzJzY2F0dGVyX3BzKHZvaWQqLCBfX201MTJpLCBfX201MTIsIGludCk7DQpleHRlcm4gdm9pZCAg
ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2kzMnNjYXR0ZXJfcHModm9pZCosIF9fbW1hc2sxNiwgX19t
NTEyaSwgX19tNTEyLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfaTY0Z2F0
aGVyX3BkKF9fbTUxMmksIHZvaWQgY29uc3QqLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVj
bCBfbW01MTJfbWFza19pNjRnYXRoZXJfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmksIHZv
aWQgY29uc3QqLCBpbnQpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJfaTY0c2NhdHRl
cl9wZCh2b2lkKiwgX19tNTEyaSwgX19tNTEyZCwgaW50KTsNCmV4dGVybiB2b2lkICAgIF9fY2Rl
Y2wgX21tNTEyX21hc2tfaTY0c2NhdHRlcl9wZCh2b2lkKiwgX19tbWFzazgsIF9fbTUxMmksIF9f
bTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9pMzJnYXRoZXJfcGQo
X19tMjU2aSwgdm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2kzMmdhdGhlcl9wZChfX201MTJkLCBfX21tYXNrOCwgX19tMjU2aSwgdm9pZCBjb25z
dCosIGludCk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9pMzJzY2F0dGVyX3BkKHZv
aWQqLCBfX20yNTZpLCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01
MTJfbWFza19pMzJzY2F0dGVyX3BkKHZvaWQqLCBfX21tYXNrOCwgX19tMjU2aSwgX19tNTEyZCwg
aW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2kzMmdhdGhlcl9lcGkzMihfX201
MTJpLCB2b2lkIGNvbnN0KiwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21h
c2tfaTMyZ2F0aGVyX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSwgdm9pZCBjb25z
dCosIGludCk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9pMzJzY2F0dGVyX2VwaTMy
KHZvaWQqLCBfX201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBf
bW01MTJfbWFza19pMzJzY2F0dGVyX2VwaTMyKHZvaWQqLCBfX21tYXNrMTYsIF9fbTUxMmksIF9f
bTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9pMzJnYXRoZXJfZXBp
NjQoX19tMjU2aSwgdm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrX2kzMmdhdGhlcl9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tMjU2aSwgdm9p
ZCBjb25zdCosIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9pNjRnYXRoZXJf
ZXBpNjQoX19tNTEyaSwgdm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX2k2NGdhdGhlcl9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSwg
dm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9pMzJzY2F0
dGVyX2VwaTY0KHZvaWQqLCBfX20yNTZpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIHZvaWQgICAg
X19jZGVjbCBfbW01MTJfbWFza19pMzJzY2F0dGVyX2VwaTY0KHZvaWQqLCBfX21tYXNrOCwgX19t
MjU2aSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX2k2NHNj
YXR0ZXJfZXBpNjQodm9pZCosIF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRlcm4gdm9pZCAg
ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2k2NHNjYXR0ZXJfZXBpNjQodm9pZCosIF9fbW1hc2s4LCBf
X201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW01MTJfaTY0
Z2F0aGVyX3BzKF9fbTUxMmksIHZvaWQgY29uc3QqLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgX19j
ZGVjbCBfbW01MTJfbWFza19pNjRnYXRoZXJfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tNTEyaSwg
dm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9pNjRzY2F0
dGVyX3BzKHZvaWQqLCBfX201MTJpLCBfX20yNTYsIGludCk7DQpleHRlcm4gdm9pZCAgICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2k2NHNjYXR0ZXJfcHModm9pZCosIF9fbW1hc2s4LCBfX201MTJpLCBf
X20yNTYsIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9pNjRnYXRoZXJfZXBp
MzIoX19tNTEyaSwgdm9pZCBjb25zdCosIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9t
bTUxMl9tYXNrX2k2NGdhdGhlcl9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tNTEyaSwgdm9p
ZCBjb25zdCosIGludCk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9pNjRzY2F0dGVy
X2VwaTMyKHZvaWQqLCBfX201MTJpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIHZvaWQgICAgX19j
ZGVjbCBfbW01MTJfbWFza19pNjRzY2F0dGVyX2VwaTMyKHZvaWQqLCBfX21tYXNrOCwgX19tNTEy
aSwgX19tMjU2aSwgaW50KTsNCg0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfY3Z0cHNs
b19wZChfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19jdnRwc2xv
X3BkKF9fbTUxMmQsIF9fbW1hc2s4LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBf
bW01MTJfY3Z0ZXBpMzJsb19wZChfX201MTJpKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21t
NTEyX21hc2tfY3Z0ZXBpMzJsb19wZChfX201MTJkLCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRl
cm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9jdnRlcHUzMmxvX3BkKF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19jdnRlcHUzMmxvX3BkKF9fbTUxMmQsIF9fbW1h
c2s4LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2N2dGVwaTMyX3Bk
KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19jdnRlcGkzMl9w
ZChfX201MTJkLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9t
bTUxMl9tYXNrel9jdnRlcGkzMl9wZChfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEy
ZCBfX2NkZWNsIF9tbTUxMl9jdnRlcHUzMl9wZChfX20yNTZpKTsNCmV4dGVybiBfX201MTJkIF9f
Y2RlY2wgX21tNTEyX21hc2tfY3Z0ZXB1MzJfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXB1MzJfcGQoX19tbWFz
azgsIF9fbTI1NmkpOw0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9jdnRlcGkzMl9w
cyggX19tNTEyaSk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dGVwaTMy
X3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wg
X21tNTEyX21hc2t6X2N2dGVwaTMyX3BzKF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19t
NTEyICBfX2NkZWNsIF9tbTUxMl9jdnRfcm91bmRlcGkzMl9wcyhfX201MTJpLCBpbnQpOw0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19jdnRfcm91bmRlcGkzMl9wcyhfX201MTIs
IF9fbW1hc2sxNiwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEy
X21hc2t6X2N2dF9yb3VuZGVwaTMyX3BzKF9fbW1hc2sxNiwgX19tNTEyaSwgaW50KTsNCmV4dGVy
biBfX201MTIgIF9fY2RlY2wgX21tNTEyX2N2dGVwdTMyX3BzKCBfX201MTJpKTsNCmV4dGVybiBf
X201MTIgIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXB1MzJfcHMoX19tNTEyLCBfX21tYXNrMTYs
IF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXB1MzJf
cHMoX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX2N2
dF9yb3VuZGVwdTMyX3BzKF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9t
bTUxMl9tYXNrX2N2dF9yb3VuZGVwdTMyX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX201MTJpLCBp
bnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0X3JvdW5kZXB1MzJf
cHMoX19tbWFzazE2LCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfY3Z0cGhfcHMoX19tMjU2aSk7DQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUxMl9tYXNr
X2N2dHBoX3BzKF9fbTUxMiwgX19tbWFzazE2LCBfX20yNTZpKTsNCmV4dGVybiBfX201MTIgIF9f
Y2RlY2wgX21tNTEyX21hc2t6X2N2dHBoX3BzKF9fbW1hc2sxNiwgX19tMjU2aSk7DQpleHRlcm4g
X19tNTEyICBfX2NkZWNsIF9tbTUxMl9jdnRfcm91bmRwaF9wcyhfX20yNTZpLCBpbnQpOw0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19jdnRfcm91bmRwaF9wcyhfX201MTIsIF9f
bW1hc2sxNiwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21h
c2t6X2N2dF9yb3VuZHBoX3BzKF9fbW1hc2sxNiwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tNTEyX2N2dHBzX3BoKF9fbTUxMiwgaW50KTsNCmV4dGVybiBfX20yNTZp
IF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0cHNfcGgoX19tMjU2aSwgX19tbWFzazE2LCBfX201MTIs
IGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRwc19waChfX21t
YXNrMTYsIF9fbTUxMiwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX2N2dF9y
b3VuZHBzX3BoKF9fbTUxMiwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21h
c2tfY3Z0X3JvdW5kcHNfcGgoX19tMjU2aSwgX19tbWFzazE2LCBfX201MTIsIGludCk7DQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRfcm91bmRwc19waChfX21tYXNrMTYs
IF9fbTUxMiwgaW50KTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tNTEyX2N2dGVwaTY0X3Bz
KF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1NiAgX19jZGVjbCBfbW01MTJfbWFza19jdnRlcGk2NF9w
cyhfX20yNTYsIF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21t
NTEyX21hc2t6X2N2dGVwaTY0X3BzKF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX20yNTYg
IF9fY2RlY2wgX21tNTEyX2N2dF9yb3VuZGVwaTY0X3BzKF9fbTUxMmksIGludCk7DQpleHRlcm4g
X19tMjU2ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dF9yb3VuZGVwaTY0X3BzKF9fbTI1NiwgX19t
bWFzazgsIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTUxMl9tYXNr
el9jdnRfcm91bmRlcGk2NF9wcyhfX21tYXNrOCwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX20y
NTYgIF9fY2RlY2wgX21tNTEyX2N2dGVwdTY0X3BzKF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1NiAg
X19jZGVjbCBfbW01MTJfbWFza19jdnRlcHU2NF9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX201MTJp
KTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dGVwdTY0X3BzKF9fbW1h
c2s4LCBfX201MTJpKTsNCmV4dGVybiBfX20yNTYgIF9fY2RlY2wgX21tNTEyX2N2dF9yb3VuZGVw
dTY0X3BzKF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tMjU2ICBfX2NkZWNsIF9tbTUxMl9tYXNr
X2N2dF9yb3VuZGVwdTY0X3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTUxMmksIGludCk7DQpleHRl
cm4gX19tMjU2ICBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRfcm91bmRlcHU2NF9wcyhfX21tYXNr
OCwgX19tNTEyaSwgaW50KTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY3Z0ZXBp
OF9lcGkzMihfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0
ZXBpOF9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXBpOF9lcGkzMihfX21tYXNrMTYsIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY3Z0ZXBpOF9lcGk2NChfX20xMjhpKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXBpOF9lcGk2NChfX201MTJpLCBf
X21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9j
dnRlcGk4X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX2N2dGVwaTE2X2VwaTMyKF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfbWFza19jdnRlcGkxNl9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXBpMTZfZXBpMzIoX19tbWFz
azE2LCBfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2N2dGVwaTE2X2Vw
aTY0KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jdnRlcGkx
Nl9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel9jdnRlcGkxNl9lcGk2NChfX21tYXNrOCwgX19tMTI4aSk7DQpleHRl
cm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9jdnRlcGkzMl9lcGk4KF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbTEyOGkgX19jZGVjbCBfbW01MTJfbWFza19jdnRlcGkzMl9lcGk4KF9fbTEyOGksIF9fbW1h
c2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRl
cGkzMl9lcGk4KF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9t
bTUxMl9tYXNrX2N2dGVwaTMyX3N0b3JldV9lcGk4KHZvaWQqLCBfX21tYXNrMTYsIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfY3Z0c2VwaTMyX2VwaTgoX19tNTEyaSk7
DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dHNlcGkzMl9lcGk4KF9fbTEy
OGksIF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9t
YXNrel9jdnRzZXBpMzJfZXBpOChfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJuIHZvaWQgICAg
X19jZGVjbCBfbW01MTJfbWFza19jdnRzZXBpMzJfc3RvcmV1X2VwaTgodm9pZCosIF9fbW1hc2sx
NiwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9jdnR1c2VwaTMyX2Vw
aTgoX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dHVzZXBp
MzJfZXBpOChfX20xMjhpLCBfX21tYXNrMTYsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkgX19j
ZGVjbCBfbW01MTJfbWFza3pfY3Z0dXNlcGkzMl9lcGk4KF9fbW1hc2sxNiwgX19tNTEyaSk7DQpl
eHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dHVzZXBpMzJfc3RvcmV1X2VwaTgo
dm9pZCosIF9fbW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUx
Ml9jdnRlcGkzMl9lcGkxNihfX201MTJpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEy
X21hc2tfY3Z0ZXBpMzJfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVy
biBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dGVwaTMyX2VwaTE2KF9fbW1hc2sxNiwg
X19tNTEyaSk7DQpleHRlcm4gdm9pZCAgICBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dGVwaTMyX3N0
b3JldV9lcGkxNih2b2lkKiwgX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tNTEyX2N2dHNlcGkzMl9lcGkxNihfX201MTJpKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tNTEyX21hc2tfY3Z0c2VwaTMyX2VwaTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19t
NTEyaSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRzZXBpMzJfZXBp
MTYoX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX21h
c2tfY3Z0c2VwaTMyX3N0b3JldV9lcGkxNih2b2lkKiwgX19tbWFzazE2LCBfX201MTJpKTsNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX2N2dHVzZXBpMzJfZXBpMTYoX19tNTEyaSk7DQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dHVzZXBpMzJfZXBpMTYoX19tMjU2
aSwgX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21h
c2t6X2N2dHVzZXBpMzJfZXBpMTYoX19tbWFzazE2LCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAg
IF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0dXNlcGkzMl9zdG9yZXVfZXBpMTYodm9pZCosIF9fbW1h
c2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRlcGkzMl9l
cGk2NChfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXBp
MzJfZXBpNjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXBpMzJfZXBpNjQoX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfY3Z0ZXBpNjRfZXBpOChfX201MTJpKTsNCmV4dGVy
biBfX20xMjhpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXBpNjRfZXBpOChfX20xMjhpLCBfX21t
YXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRl
cGk2NF9lcGk4KF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21t
NTEyX21hc2tfY3Z0ZXBpNjRfc3RvcmV1X2VwaTgodm9pZCosIF9fbW1hc2s4LCBfX201MTJpKTsN
CmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tNTEyX2N2dHNlcGk2NF9lcGk4KF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfbWFza19jdnRzZXBpNjRfZXBpOChfX20xMjhp
LCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNr
el9jdnRzZXBpNjRfZXBpOChfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gdm9pZCAgICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2N2dHNlcGk2NF9zdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazgsIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfY3Z0dXNlcGk2NF9lcGk4KF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfbWFza19jdnR1c2VwaTY0X2Vw
aTgoX19tMTI4aSwgX19tbWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBf
bW01MTJfbWFza3pfY3Z0dXNlcGk2NF9lcGk4KF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiB2
b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0dXNlcGk2NF9zdG9yZXVfZXBpOCh2b2lkKiwg
X19tbWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW01MTJfY3Z0ZXBp
NjRfZXBpMTYoX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2
dGVwaTY0X2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX20xMjhp
IF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dGVwaTY0X2VwaTE2KF9fbW1hc2s4LCBfX201MTJpKTsN
CmV4dGVybiB2b2lkICAgIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXBpNjRfc3RvcmV1X2VwaTE2
KHZvaWQqLCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUx
Ml9jdnRzZXBpNjRfZXBpMTYoX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2N2dHNlcGk2NF9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRl
cm4gX19tMTI4aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRzZXBpNjRfZXBpMTYoX19tbWFzazgs
IF9fbTUxMmkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJfbWFza19jdnRzZXBpNjRf
c3RvcmV1X2VwaTE2KHZvaWQqLCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBf
X2NkZWNsIF9tbTUxMl9jdnR1c2VwaTY0X2VwaTE2KF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkg
X19jZGVjbCBfbW01MTJfbWFza19jdnR1c2VwaTY0X2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBf
X201MTJpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHVzZXBpNjRf
ZXBpMTYoX19tbWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJf
bWFza19jdnR1c2VwaTY0X3N0b3JldV9lcGkxNih2b2lkKiwgX19tbWFzazgsIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfY3Z0ZXBpNjRfZXBpMzIoX19tNTEyaSk7DQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dGVwaTY0X2VwaTMyKF9fbTI1Nmks
IF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21hc2t6
X2N2dGVwaTY0X2VwaTMyKF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAgIF9fY2Rl
Y2wgX21tNTEyX21hc2tfY3Z0ZXBpNjRfc3RvcmV1X2VwaTMyKHZvaWQqLCBfX21tYXNrOCwgX19t
NTEyaSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9jdnRzZXBpNjRfZXBpMzIoX19t
NTEyaSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dHNlcGk2NF9lcGkz
MihfX20yNTZpLCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9t
bTUxMl9tYXNrel9jdnRzZXBpNjRfZXBpMzIoX19tbWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIHZv
aWQgICAgX19jZGVjbCBfbW01MTJfbWFza19jdnRzZXBpNjRfc3RvcmV1X2VwaTMyKHZvaWQqLCBf
X21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9jdnR1c2Vw
aTY0X2VwaTMyKF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfbWFza19j
dnR1c2VwaTY0X2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX201MTJpKTsNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHVzZXBpNjRfZXBpMzIoX19tbWFzazgsIF9fbTUx
MmkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJfbWFza19jdnR1c2VwaTY0X3N0b3Jl
dV9lcGkzMih2b2lkKiwgX19tbWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfY3Z0ZXB1OF9lcGkzMihfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX21hc2tfY3Z0ZXB1OF9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXB1OF9lcGkzMihfX21tYXNr
MTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY3Z0ZXB1OF9lcGk2
NChfX20xMjhpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXB1OF9l
cGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrel9jdnRlcHU4X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX2N2dGVwdTE2X2VwaTMyKF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jdnRlcHUxNl9lcGkzMihfX201MTJpLCBfX21tYXNr
MTYsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXB1
MTZfZXBpMzIoX19tbWFzazE2LCBfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX2N2dGVwdTE2X2VwaTY0KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWFza19jdnRlcHUxNl9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRlcHUxNl9lcGk2NChfX21tYXNrOCwg
X19tMTI4aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRlcHUzMl9lcGk2NChf
X20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXB1MzJfZXBp
NjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfbWFza3pfY3Z0ZXB1MzJfZXBpNjQoX19tbWFzazgsIF9fbTI1NmkpOw0KDQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRwc19lcGkzMihfX201MTIpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza19jdnRwc19lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9f
bTUxMik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRwc19lcGkzMihf
X21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRfcm91
bmRwc19lcGkzMihfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrX2N2dF9yb3VuZHBzX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyLCBpbnQpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcHNfZXBpMzIoX19t
bWFzazE2LCBfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnR0
cHNfZXBpMzIoX19tNTEyKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0
dHBzX2VwaTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2t6X2N2dHRwc19lcGkzMihfX21tYXNrMTYsIF9fbTUxMik7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnR0X3JvdW5kcHNfZXBpMzIoX19tNTEyLCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jdnR0X3JvdW5kcHNfZXBpMzIo
X19tNTEyaSwgX19tbWFzazE2LCBfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcHNfZXBpMzIoX19tbWFzazE2LCBfX201MTIsIGludCk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRwc19lcHUzMihfX201MTIpOw0KZXh0
ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jdnRwc19lcHUzMihfX201MTJpLCBfX21t
YXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnRw
c19lcHUzMihfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9jdnRfcm91bmRwc19lcHUzMihfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX2N2dF9yb3VuZHBzX2VwdTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEy
LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcHNf
ZXB1MzIoX19tbWFzazE2LCBfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9jdnR0cHNfZXB1MzIoX19tNTEyKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X21hc2tfY3Z0dHBzX2VwdTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHRwc19lcHUzMihfX21tYXNrMTYsIF9fbTUx
Mik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnR0X3JvdW5kcHNfZXB1MzIoX19t
NTEyLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jdnR0X3JvdW5k
cHNfZXB1MzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcHNfZXB1MzIoX19tbWFzazE2LCBfX201
MTIsIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9jdnRwZF9lcGkzMihfX201
MTJkKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0cGRfZXBpMzIoX19t
MjU2aSwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJf
bWFza3pfY3Z0cGRfZXBpMzIoX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTI1NmkgX19j
ZGVjbCBfbW01MTJfY3Z0X3JvdW5kcGRfZXBpMzIoX19tNTEyZCwgaW50KTsNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGRfZXBpMzIoX19tMjU2aSwgX19tbWFz
azgsIF9fbTUxMmQsIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9j
dnRfcm91bmRwZF9lcGkzMihfX21tYXNrOCwgX19tNTEyZCwgaW50KTsNCmV4dGVybiBfX20yNTZp
IF9fY2RlY2wgX21tNTEyX2N2dHRwZF9lcGkzMihfX201MTJkKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tNTEyX21hc2tfY3Z0dHBkX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX201MTJk
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHRwZF9lcGkzMihfX21t
YXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9jdnR0X3JvdW5k
cGRfZXBpMzIoX19tNTEyZCwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21h
c2tfY3Z0dF9yb3VuZHBkX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX201MTJkLCBpbnQpOw0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0dF9yb3VuZHBkX2VwaTMyKF9f
bW1hc2s4LCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfY3Z0
cGRfZXB1MzIoX19tNTEyZCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2
dHBkX2VwdTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tNTEyX21hc2t6X2N2dHBkX2VwdTMyKF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVy
biBfX20yNTZpIF9fY2RlY2wgX21tNTEyX2N2dF9yb3VuZHBkX2VwdTMyKF9fbTUxMmQsIGludCk7
DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dF9yb3VuZHBkX2VwdTMyKF9f
bTI1NmksIF9fbW1hc2s4LCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBf
bW01MTJfbWFza3pfY3Z0X3JvdW5kcGRfZXB1MzIoX19tbWFzazgsIF9fbTUxMmQsIGludCk7DQpl
eHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9jdnR0cGRfZXB1MzIoX19tNTEyZCk7DQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dHRwZF9lcHUzMihfX20yNTZpLCBfX21t
YXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnR0
cGRfZXB1MzIoX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01
MTJfY3Z0dF9yb3VuZHBkX2VwdTMyKF9fbTUxMmQsIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2N2dHRfcm91bmRwZF9lcHUzMihfX20yNTZpLCBfX21tYXNrOCwgX19t
NTEyZCwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHRfcm91
bmRwZF9lcHUzMihfX21tYXNrOCwgX19tNTEyZCwgaW50KTsNCg0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfY3Z0ZXBpOF9lcGkxNihfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX21hc2tfY3Z0ZXBpOF9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXBpOF9lcGkxNihfX21t
YXNrMzIsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY3Z0ZXB1OF9l
cGkxNihfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXB1
OF9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXB1OF9lcGkxNihfX21tYXNrMzIsIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfY3Z0ZXBpMTZfZXBpOChfX201MTJpKTsNCmV4dGVy
biBfX20yNTZpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0ZXBpMTZfZXBpOChfX20yNTZpLCBfX21t
YXNrMzIsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0
ZXBpMTZfZXBpOChfX21tYXNrMzIsIF9fbTUxMmkpOw0KZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBf
bW01MTJfbWFza19jdnRlcGkxNl9zdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazMyLCBfX201MTJp
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tNTEyX2N2dHNlcGkxNl9lcGk4KF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfbWFza19jdnRzZXBpMTZfZXBpOChfX20y
NTZpLCBfX21tYXNrMzIsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJf
bWFza3pfY3Z0c2VwaTE2X2VwaTgoX19tbWFzazMyLCBfX201MTJpKTsNCmV4dGVybiB2b2lkICAg
IF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0c2VwaTE2X3N0b3JldV9lcGk4KHZvaWQqLCBfX21tYXNr
MzIsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfY3Z0dXNlcGkxNl9l
cGk4KF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW01MTJfbWFza19jdnR1c2Vw
aTE2X2VwaTgoX19tMjU2aSwgX19tbWFzazMyLCBfX201MTJpKTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tNTEyX21hc2t6X2N2dHVzZXBpMTZfZXBpOChfX21tYXNrMzIsIF9fbTUxMmkpOw0K
ZXh0ZXJuIHZvaWQgICAgX19jZGVjbCBfbW01MTJfbWFza19jdnR1c2VwaTE2X3N0b3JldV9lcGk4
KHZvaWQqLCBfX21tYXNrMzIsIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9t
bTUxMl9jdnRlcGk2NF9wZChfX201MTJpKTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEy
X21hc2tfY3Z0ZXBpNjRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmQgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0ZXBpNjRfcGQoX19tbWFzazgsIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfY3Z0X3JvdW5kZXBpNjRfcGQoX19tNTEy
aSwgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0X3JvdW5kZXBp
NjRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyZCBf
X2NkZWNsIF9tbTUxMl9tYXNrel9jdnRfcm91bmRlcGk2NF9wZChfX21tYXNrOCwgX19tNTEyaSwg
aW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX2N2dGVwdTY0X3BkKF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBfbW01MTJfbWFza19jdnRlcHU2NF9wZChfX201MTJk
LCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
el9jdnRlcHU2NF9wZChfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNs
IF9tbTUxMl9jdnRfcm91bmRlcHU2NF9wZChfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQg
X19jZGVjbCBfbW01MTJfbWFza19jdnRfcm91bmRlcHU2NF9wZChfX201MTJkLCBfX21tYXNrOCwg
X19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJkIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dF9y
b3VuZGVwdTY0X3BkKF9fbW1hc2s4LCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfY3Z0cGRfZXBpNjQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX2N2dHBkX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHBkX2VwaTY0KF9fbW1hc2s4LCBf
X201MTJkKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2N2dF9yb3VuZHBkX2VwaTY0
KF9fbTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dF9y
b3VuZHBkX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0X3JvdW5kcGRfZXBpNjQoX19tbWFzazgsIF9f
bTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRwZF9lcHU2NChf
X201MTJkKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0cGRfZXB1NjQo
X19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWFza3pfY3Z0cGRfZXB1NjQoX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfY3Z0X3JvdW5kcGRfZXB1NjQoX19tNTEyZCwgaW50KTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0X3JvdW5kcGRfZXB1NjQoX19tNTEyaSwgX19t
bWFzazgsIF9fbTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNr
el9jdnRfcm91bmRwZF9lcHU2NChfX21tYXNrOCwgX19tNTEyZCwgaW50KTsNCmV4dGVybiBfX201
MTJpIF9fY2RlY2wgX21tNTEyX2N2dHRwZF9lcGk2NChfX201MTJkKTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0dHBkX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201
MTJkKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2dHRwZF9lcGk2NChf
X21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnR0X3Jv
dW5kcGRfZXBpNjQoX19tNTEyZCwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X21hc2tfY3Z0dF9yb3VuZHBkX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJkLCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0dF9yb3VuZHBkX2VwaTY0
KF9fbW1hc2s4LCBfX201MTJkLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
Y3Z0dHBkX2VwdTY0KF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFz
a19jdnR0cGRfZXB1NjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0dHBkX2VwdTY0KF9fbW1hc2s4LCBfX201MTJkKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2N2dHRfcm91bmRwZF9lcHU2NChfX201MTJk
LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jdnR0X3JvdW5kcGRf
ZXB1NjQoX19tNTEyaSwgX19tbWFzazgsIF9fbTUxMmQsIGludCk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcGRfZXB1NjQoX19tbWFzazgsIF9fbTUxMmQs
IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRwc19lcGk2NChfX20yNTYp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19jdnRwc19lcGk2NChfX201MTJp
LCBfX21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6
X2N2dHBzX2VwaTY0KF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfY3Z0X3JvdW5kcHNfZXBpNjQoX19tMjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfbWFza19jdnRfcm91bmRwc19lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19t
MjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0X3JvdW5k
cHNfZXBpNjQoX19tbWFzazgsIF9fbTI1NiwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX2N2dHBzX2VwdTY0KF9fbTI1Nik7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2N2dHBzX2VwdTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0cHNfZXB1NjQoX19tbWFzazgsIF9fbTI1Nik7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9jdnRfcm91bmRwc19lcHU2NChfX20yNTYs
IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dF9yb3VuZHBzX2Vw
dTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX20yNTYsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrel9jdnRfcm91bmRwc19lcHU2NChfX21tYXNrOCwgX19tMjU2LCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY3Z0dHBzX2VwaTY0KF9fbTI1Nik7DQpl
eHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2N2dHRwc19lcGk2NChfX201MTJpLCBf
X21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2N2
dHRwc19lcGk2NChfX21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX2N2dHRfcm91bmRwc19lcGk2NChfX20yNTYsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2N2dHRfcm91bmRwc19lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19t
MjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0dF9yb3Vu
ZHBzX2VwaTY0KF9fbW1hc2s4LCBfX20yNTYsIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9jdnR0cHNfZXB1NjQoX19tMjU2KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2tfY3Z0dHBzX2VwdTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJu
IF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfY3Z0dHBzX2VwdTY0KF9fbW1hc2s4LCBfX20y
NTYpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfY3Z0dF9yb3VuZHBzX2VwdTY0KF9f
bTI1NiwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfY3Z0dF9yb3Vu
ZHBzX2VwdTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX20yNTYsIGludCk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9jdnR0X3JvdW5kcHNfZXB1NjQoX19tbWFzazgsIF9fbTI1
NiwgaW50KTsNCg0KZXh0ZXJuIF9fbW1hc2s2NCAgX19jZGVjbCBfbW01MTJfY21wZXFfZXBpOF9t
YXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s2NCAgX19jZGVjbCBfbW01MTJf
Y21wZ2VfZXBpOF9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s2NCAgX19j
ZGVjbCBfbW01MTJfY21wZ3RfZXBpOF9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bW1hc2s2NCAgX19jZGVjbCBfbW01MTJfY21wbGVfZXBpOF9tYXNrKF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbW1hc2s2NCAgX19jZGVjbCBfbW01MTJfY21wbHRfZXBpOF9tYXNrKF9fbTUx
MmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s2NCAgX19jZGVjbCBfbW01MTJfY21wbmVxX2Vw
aThfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQgIF9fY2RlY2wgX21t
NTEyX2NtcGVxX2VwdThfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQg
IF9fY2RlY2wgX21tNTEyX2NtcGdlX2VwdThfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVy
biBfX21tYXNrNjQgIF9fY2RlY2wgX21tNTEyX2NtcGd0X2VwdThfbWFzayhfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX21tYXNrNjQgIF9fY2RlY2wgX21tNTEyX2NtcGxlX2VwdThfbWFzayhf
X201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQgIF9fY2RlY2wgX21tNTEyX2NtcGx0
X2VwdThfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQgIF9fY2RlY2wg
X21tNTEyX2NtcG5lcV9lcHU4X21hc2soX19tNTEyaSwgX19tNTEyaSk7DQoNCmV4dGVybiBfX21t
YXNrNjQgIF9fY2RlY2wgX21tNTEyX21hc2tfY21wZXFfZXBpOF9tYXNrKF9fbW1hc2s2NCwgX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazY0ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2Nt
cGdlX2VwaThfbWFzayhfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1h
c2s2NCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBndF9lcGk4X21hc2soX19tbWFzazY0LCBfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQgIF9fY2RlY2wgX21tNTEyX21hc2tfY21w
bGVfZXBpOF9tYXNrKF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFz
azY0ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcGx0X2VwaThfbWFzayhfX21tYXNrNjQsIF9fbTUx
MmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s2NCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBu
ZXFfZXBpOF9tYXNrKF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFz
azY0ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcGVxX2VwdThfbWFzayhfX21tYXNrNjQsIF9fbTUx
MmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s2NCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBn
ZV9lcHU4X21hc2soX19tbWFzazY0LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNr
NjQgIF9fY2RlY2wgX21tNTEyX21hc2tfY21wZ3RfZXB1OF9tYXNrKF9fbW1hc2s2NCwgX19tNTEy
aSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazY0ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcGxl
X2VwdThfbWFzayhfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s2
NCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBsdF9lcHU4X21hc2soX19tbWFzazY0LCBfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrNjQgIF9fY2RlY2wgX21tNTEyX21hc2tfY21wbmVx
X2VwdThfbWFzayhfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tbWFz
azMyICBfX2NkZWNsIF9tbTUxMl9jbXBlcV9lcGkxNl9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW01MTJfY21wZ2VfZXBpMTZfbWFzayhfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tNTEyX2NtcGd0X2VwaTE2
X21hc2soX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTUx
Ml9jbXBsZV9lcGkxNl9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAg
X19jZGVjbCBfbW01MTJfY21wbHRfZXBpMTZfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVy
biBfX21tYXNrMzIgIF9fY2RlY2wgX21tNTEyX2NtcG5lcV9lcGkxNl9tYXNrKF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW01MTJfY21wZXFfZXB1MTZfbWFz
ayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tNTEyX2Nt
cGdlX2VwdTE2X21hc2soX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazMyICBfX2Nk
ZWNsIF9tbTUxMl9jbXBndF9lcHUxNl9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bW1hc2szMiAgX19jZGVjbCBfbW01MTJfY21wbGVfZXB1MTZfbWFzayhfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tNTEyX2NtcGx0X2VwdTE2X21hc2soX19t
NTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTUxMl9jbXBuZXFf
ZXB1MTZfbWFzayhfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVj
bCBfbW01MTJfbWFza19jbXBlcV9lcGkxNl9tYXNrKF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcGdlX2VwaTE2X21h
c2soX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2Rl
Y2wgX21tNTEyX21hc2tfY21wZ3RfZXBpMTZfbWFzayhfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW01MTJfbWFza19jbXBsZV9lcGkxNl9t
YXNrKF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazMyICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2NtcGx0X2VwaTE2X21hc2soX19tbWFzazMyLCBfX201MTJpLCBfX201
MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tNTEyX21hc2tfY21wbmVxX2VwaTE2
X21hc2soX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9f
Y2RlY2wgX21tNTEyX21hc2tfY21wZXFfZXB1MTZfbWFzayhfX21tYXNrMzIsIF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW01MTJfbWFza19jbXBnZV9lcHUx
Nl9tYXNrKF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazMyICBf
X2NkZWNsIF9tbTUxMl9tYXNrX2NtcGd0X2VwdTE2X21hc2soX19tbWFzazMyLCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tNTEyX21hc2tfY21wbGVfZXB1
MTZfbWFzayhfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAg
X19jZGVjbCBfbW01MTJfbWFza19jbXBsdF9lcHUxNl9tYXNrKF9fbW1hc2szMiwgX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcG5lcV9l
cHUxNl9tYXNrKF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSk7DQoNCmV4dGVybiBfX21tYXNr
MTYgIF9fY2RlY2wgX21tNTEyX2NtcGVxX2VwaTMyX21hc2soX19tNTEyaSwgX19tNTEyaSk7DQpl
eHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbTUxMl9jbXBnZV9lcGkzMl9tYXNrKF9fbTUxMmks
IF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW01MTJfY21wZ3RfZXBpMzJf
bWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tNTEy
X2NtcGxlX2VwaTMyX21hc2soX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazE2ICBf
X2NkZWNsIF9tbTUxMl9jbXBsdF9lcGkzMl9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJu
IF9fbW1hc2sxNiAgX19jZGVjbCBfbW01MTJfY21wbmVxX2VwaTMyX21hc2soX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbTUxMl9jbXBlcV9lcHUzMl9tYXNr
KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW01MTJfY21w
Z2VfZXB1MzJfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2Rl
Y2wgX21tNTEyX2NtcGd0X2VwdTMyX21hc2soX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19t
bWFzazE2ICBfX2NkZWNsIF9tbTUxMl9jbXBsZV9lcHUzMl9tYXNrKF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW01MTJfY21wbHRfZXB1MzJfbWFzayhfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tNTEyX2NtcG5lcV9l
cHUzMl9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNs
IF9tbTUxMl9tYXNrX2NtcGVxX2VwaTMyX21hc2soX19tbWFzazE2LCBfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tNTEyX21hc2tfY21wZ2VfZXBpMzJfbWFz
ayhfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVj
bCBfbW01MTJfbWFza19jbXBndF9lcGkzMl9tYXNrKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcGxlX2VwaTMyX21h
c2soX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2Rl
Y2wgX21tNTEyX21hc2tfY21wbHRfZXBpMzJfbWFzayhfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW01MTJfbWFza19jbXBuZXFfZXBpMzJf
bWFzayhfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19j
ZGVjbCBfbW01MTJfbWFza19jbXBlcV9lcHUzMl9tYXNrKF9fbW1hc2sxNiwgX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbTUxMl9tYXNrX2NtcGdlX2VwdTMy
X21hc2soX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9f
Y2RlY2wgX21tNTEyX21hc2tfY21wZ3RfZXB1MzJfbWFzayhfX21tYXNrMTYsIF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW01MTJfbWFza19jbXBsZV9lcHUz
Ml9tYXNrKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazE2ICBf
X2NkZWNsIF9tbTUxMl9tYXNrX2NtcGx0X2VwdTMyX21hc2soX19tbWFzazE2LCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tNTEyX21hc2tfY21wbmVxX2Vw
dTMyX21hc2soX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbW1hc2s4
ICBfX2NkZWNsIF9tbTUxMl9jbXBlcV9lcGk2NF9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0
ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTUxMl9jbXBnZV9lcGk2NF9tYXNrKF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTUxMl9jbXBndF9lcGk2NF9tYXNr
KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTUxMl9jbXBs
ZV9lcGk2NF9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNs
IF9tbTUxMl9jbXBsdF9lcGk2NF9tYXNrKF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbW1h
c2s4ICBfX2NkZWNsIF9tbTUxMl9jbXBuZXFfZXBpNjRfbWFzayhfX201MTJpLCBfX201MTJpKTsN
CmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfY21wZXFfZXB1NjRfbWFzayhfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfY21wZ2VfZXB1NjRf
bWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJf
Y21wZ3RfZXB1NjRfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrOCAgX19j
ZGVjbCBfbW01MTJfY21wbGVfZXB1NjRfbWFzayhfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBf
X21tYXNrOCAgX19jZGVjbCBfbW01MTJfY21wbHRfZXB1NjRfbWFzayhfX201MTJpLCBfX201MTJp
KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfY21wbmVxX2VwdTY0X21hc2soX19t
NTEyaSwgX19tNTEyaSk7DQoNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfbWFza19j
bXBlcV9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21t
YXNrOCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBnZV9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBn
dF9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNr
OCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBsZV9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW01MTJfbWFza19jbXBsdF9l
cGk2NF9tYXNrKF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX21tYXNrOCAg
X19jZGVjbCBfbW01MTJfbWFza19jbXBuZXFfZXBpNjRfbWFzayhfX21tYXNrOCwgX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tNTEyX21hc2tfY21wZXFfZXB1
NjRfbWFzayhfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazggIF9f
Y2RlY2wgX21tNTEyX21hc2tfY21wZ2VfZXB1NjRfbWFzayhfX21tYXNrOCwgX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tNTEyX21hc2tfY21wZ3RfZXB1NjRf
bWFzayhfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazggIF9fY2Rl
Y2wgX21tNTEyX21hc2tfY21wbGVfZXB1NjRfbWFzayhfX21tYXNrOCwgX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tNTEyX21hc2tfY21wbHRfZXB1NjRfbWFz
ayhfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wg
X21tNTEyX21hc2tfY21wbmVxX2VwdTY0X21hc2soX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmkp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2Fic19lcGkx
NihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X2Fic19lcGkxNihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X21hc2tfYWJzX2VwaTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2
aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2Fic19lcGkxNihfX21t
YXNrMTYsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2Fic19l
cGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tX21hc2t6X2Fic19lcGkzMihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2
aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfYWJzX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20y
NTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYWJzX2VwaTMyKF9f
bW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fYWJzX2VwaTY0
KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2Fic19lcGk2NChf
X20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21t
X21hc2t6X2Fic19lcGk2NChfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X2Fic19lcGk2NChfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVj
bCBfbW0yNTZfbWFza19hYnNfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9hYnNfZXBpNjQoX19tbWFzazgsIF9f
bTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2Fic19lcGk4KF9fbTEy
OGksIF9fbW1hc2sxNiwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2t6X2Fic19lcGk4KF9fbW1hc2sxNiwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfYWJzX2VwaTgoX19tMjU2aSwgX19tbWFzazMyLCBfX20yNTZpKTsNCmV4
dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYWJzX2VwaTgoX19tbWFzazMyLCBf
X20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19hZGRfZXBpMTYoX19t
MTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXNrel9hZGRfZXBpMTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2FkZF9lcGkxNihfX20yNTZpLCBfX21t
YXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel9hZGRfZXBpMTYoX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza19hZGRfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9f
bTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9hZGRf
ZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX2FkZF9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19t
MjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2FkZF9lcGkzMihf
X21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21t
X21hc2tfYWRkX2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4
dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfYWRkX2VwaTY0KF9fbW1hc2s4LCBfX20x
MjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19hZGRf
ZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9hZGRfZXBpNjQoX19tbWFzazgsIF9fbTI1NmksIF9f
bTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2FkZF9lcGk4KF9fbTEy
OGksIF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tX21hc2t6X2FkZF9lcGk4KF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfYWRkX2VwaTgoX19tMjU2aSwgX19tbWFz
azMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bWFza3pfYWRkX2VwaTgoX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20x
MjhkICAgX19jZGVjbCBfbW1fbWFza19hZGRfcGQoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQs
IF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9hZGRfcGQoX19t
bWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrX2FkZF9wZChfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRl
cm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2FkZF9wZChfX21tYXNrOCwgX19tMjU2
ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfYWRkX3BzKF9f
bTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVj
bCBfbW1fbWFza3pfYWRkX3BzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19t
MjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfYWRkX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1
NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYWRkX3Bz
KF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1Nik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21t
X21hc2tfYWRkc19lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2FkZHNfZXBpMTYoX19tbWFzazgsIF9f
bTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Fk
ZHNfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYWRkc19lcGkxNihfX21tYXNrMTYsIF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2FkZHNfZXBp
OChfX20xMjhpLCBfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrel9hZGRzX2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19hZGRzX2VwaTgoX19tMjU2
aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVj
bCBfbW0yNTZfbWFza3pfYWRkc19lcGk4KF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfYWRkc19lcHUxNihfX20xMjhpLCBfX21t
YXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2t6X2FkZHNfZXB1MTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2FkZHNfZXB1MTYoX19tMjU2aSwgX19tbWFzazE2LCBf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
YWRkc19lcHUxNihfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrX2FkZHNfZXB1OChfX20xMjhpLCBfX21tYXNrMTYsIF9fbTEyOGks
IF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9hZGRzX2VwdTgo
X19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfbWFza19hZGRzX2VwdTgoX19tMjU2aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZp
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYWRkc19lcHU4KF9fbW1h
c2szMiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2Fs
aWducl9lcGkzMihfX20xMjhpLCBfX20xMjhpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrX2FsaWducl9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4
aSwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a3pfYWxpZ25yX2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBjb25zdCBpbnQpOw0K
ZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9hbGlnbnJfZXBpMzIoX19tMjU2aSwgX19t
MjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19h
bGlnbnJfZXBpMzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGNvbnN0IGlu
dCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2FsaWducl9lcGkzMihf
X21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fYWxpZ25yX2VwaTY0KF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGludCk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfYWxpZ25yX2VwaTY0KF9fbTEyOGksIF9f
bW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBf
X2NkZWNsIF9tbV9tYXNrel9hbGlnbnJfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGks
IGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X2FsaWducl9lcGk2
NChfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX2FsaWducl9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19t
MjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
YWxpZ25yX2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2FsaWducl9lcGk4KF9fbTEyOGksIF9fbW1h
c2sxNiwgX19tMTI4aSwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbWFza3pfYWxpZ25yX2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpLCBj
b25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2FsaWducl9l
cGk4KF9fbTI1NmksIF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSwgY29uc3QgaW50KTsNCmV4
dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYWxpZ25yX2VwaTgoX19tbWFzazMy
LCBfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9tYXNrX2FuZF9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2FuZF9lcGkzMihfX21tYXNrOCwg
X19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tf
YW5kX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYW5kX2VwaTMyKF9fbW1hc2s4LCBfX20yNTZp
LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19hbmRfZXBpNjQo
X19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBf
X2NkZWNsIF9tbV9tYXNrel9hbmRfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2FuZF9lcGk2NChfX20yNTZpLCBf
X21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21t
MjU2X21hc2t6X2FuZF9lcGk2NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfYW5kX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20x
MjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfYW5kX3Bk
KF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBf
bW0yNTZfbWFza19hbmRfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQsIF9fbTI1NmQpOw0K
ZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9hbmRfcGQoX19tbWFzazgsIF9f
bTI1NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2FuZF9w
cyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9f
Y2RlY2wgX21tX21hc2t6X2FuZF9wcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJu
IF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2FuZF9wcyhfX20yNTYsIF9fbW1hc2s4LCBf
X20yNTYsIF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2Fu
ZF9wcyhfX21tYXNrOCwgX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9tYXNrX2FuZG5vdF9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2FuZG5vdF9lcGkzMihfX21t
YXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X21hc2tfYW5kbm90X2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYW5kbm90X2VwaTMyKF9fbW1h
c2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a19hbmRub3RfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9hbmRub3RfZXBpNjQoX19tbWFzazgsIF9f
bTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Fu
ZG5vdF9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2FuZG5vdF9lcGk2NChfX21tYXNrOCwgX19t
MjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfYW5kbm90
X3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhk
ICAgX19jZGVjbCBfbW1fbWFza3pfYW5kbm90X3BkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhk
KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19hbmRub3RfcGQoX19tMjU2
ZCwgX19tbWFzazgsIF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrel9hbmRub3RfcGQoX19tbWFzazgsIF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0
ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2FuZG5vdF9wcyhfX20xMjgsIF9fbW1hc2s4
LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2Fu
ZG5vdF9wcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX2FuZG5vdF9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1
Nik7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2FuZG5vdF9wcyhfX21t
YXNrOCwgX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
X2F2Z19lcHUxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2F2Z19lcHUxNihfX21tYXNrOCwgX19tMTI4aSwg
X19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfYXZnX2VwdTE2
KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X21hc2t6X2F2Z19lcHUxNihfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2F2Z19lcHU4KF9fbTEyOGks
IF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X2F2Z19lcHU4KF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfYXZnX2VwdTgoX19tMjU2aSwgX19tbWFzazMy
LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a3pfYXZnX2VwdTgoX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fbWFza19ibGVuZF9lcGkxNihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfYmxlbmRfZXBpMTYoX19t
bWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza19ibGVuZF9lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfYmxlbmRfZXBpMzIoX19tbWFzazgsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2JsZW5kX2VwaTY0
KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfbWFza19ibGVuZF9lcGk2NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfYmxlbmRfZXBpOChfX21tYXNrMTYsIF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2JsZW5k
X2VwaTgoX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhkICAgX19j
ZGVjbCBfbW1fbWFza19ibGVuZF9wZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRl
cm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tfYmxlbmRfcGQoX19tbWFzazgsIF9fbTI1
NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2JsZW5kX3Bz
KF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21t
MjU2X21hc2tfYmxlbmRfcHMoX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20y
NTYgICAgX19jZGVjbCBfbW0yNTZfYnJvYWRjYXN0X2YzMngyKF9fbTEyOCk7DQpleHRlcm4gX19t
MjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfYnJvYWRjYXN0X2YzMngyKF9fbTI1NiwgX19tbWFz
azgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2Jyb2Fk
Y2FzdF9mMzJ4MihfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBf
bW0yNTZfYnJvYWRjYXN0X2YzMng0KF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wg
X21tMjU2X21hc2tfYnJvYWRjYXN0X2YzMng0KF9fbTI1NiwgX19tbWFzazgsIF9fbTEyOCk7DQpl
eHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2Jyb2FkY2FzdF9mMzJ4NChfX21t
YXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfYnJvYWRjYXN0
X2Y2NHgyKF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Jy
b2FkY2FzdF9mNjR4MihfX20yNTZkLCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2
ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2Jyb2FkY2FzdF9mNjR4MihfX21tYXNrOCwgX19tMTI4
ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2Jyb2FkY2FzdF9pMzJ4MihfX20xMjhp
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19icm9hZGNhc3RfaTMyeDIoX19t
MTI4aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9t
YXNrel9icm9hZGNhc3RfaTMyeDIoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9icm9hZGNhc3RfaTMyeDIoX19tMTI4aSk7DQpleHRlcm4gX19tMjU2
aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfYnJvYWRjYXN0X2kzMngyKF9fbTI1NmksIF9fbW1hc2s4
LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfYnJvYWRj
YXN0X2kzMngyKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfYnJvYWRjYXN0X2kzMng0KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX2Jyb2FkY2FzdF9pMzJ4NChfX20yNTZpLCBfX21tYXNrOCwgX19tMTI4aSk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2Jyb2FkY2FzdF9pMzJ4NChf
X21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X2Jyb2Fk
Y2FzdF9pNjR4MihfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a19icm9hZGNhc3RfaTY0eDIoX19tMjU2aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9icm9hZGNhc3RfaTY0eDIoX19tbWFzazgsIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2Jyb2FkY2FzdGJfZXBp
OChfX20xMjhpLCBfX21tYXNrMTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9tYXNrel9icm9hZGNhc3RiX2VwaTgoX19tbWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19icm9hZGNhc3RiX2VwaTgoX19tMjU2aSwgX19t
bWFzazMyLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
YnJvYWRjYXN0Yl9lcGk4KF9fbW1hc2szMiwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tX21hc2tfYnJvYWRjYXN0ZF9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2Jyb2FkY2FzdGRfZXBpMzIo
X19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X2Jyb2FkY2FzdGRfZXBpMzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9icm9hZGNhc3RkX2VwaTMyKF9fbW1hc2s4LCBf
X20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fYnJvYWRjYXN0bWJfZXBpNjQo
X19tbWFzazgpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9icm9hZGNhc3RtYl9l
cGk2NChfX21tYXNrOCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2Jyb2FkY2FzdG13
X2VwaTMyKF9fbW1hc2sxNik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X2Jyb2Fk
Y2FzdG13X2VwaTMyKF9fbW1hc2sxNik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2tfYnJvYWRjYXN0cV9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2Jyb2FkY2FzdHFfZXBpNjQoX19tbWFzazgsIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Jyb2FkY2FzdHFf
ZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrel9icm9hZGNhc3RxX2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4
dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19icm9hZGNhc3RzZF9wZChfX20yNTZk
LCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X2Jyb2FkY2FzdHNkX3BkKF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjggICAg
X19jZGVjbCBfbW1fbWFza19icm9hZGNhc3Rzc19wcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgp
Ow0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9icm9hZGNhc3Rzc19wcyhfX21t
YXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19icm9h
ZGNhc3Rzc19wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrel9icm9hZGNhc3Rzc19wcyhfX21tYXNrOCwgX19tMTI4KTsNCmV4
dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19icm9hZGNhc3R3X2VwaTE2KF9fbTEyOGks
IF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
YnJvYWRjYXN0d19lcGkxNihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfYnJvYWRjYXN0d19lcGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9icm9hZGNhc3R3
X2VwaTE2KF9fbW1hc2sxNiwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21t
X2NtcF9lcGkxNl9tYXNrKF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wX2VwaTE2X21hc2soX19tbWFzazgsIF9fbTEyOGks
IF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tMjU2X2Nt
cF9lcGkxNl9tYXNrKF9fbTI1NmksIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFz
azE2IF9fY2RlY2wgX21tMjU2X21hc2tfY21wX2VwaTE2X21hc2soX19tbWFzazE2LCBfX20yNTZp
LCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBf
ZXBpMzJfbWFzayhfX20xMjhpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2Nk
ZWNsIF9tbV9tYXNrX2NtcF9lcGkzMl9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBp
bnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBfZXBpMzJfbWFzayhfX20y
NTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X2NtcF9lcGkzMl9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBfZXBpNjRfbWFzayhfX20xMjhpLCBfX20xMjhpLCBp
bnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcF9lcGk2NF9tYXNrKF9f
bW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNs
IF9tbTI1Nl9jbXBfZXBpNjRfbWFzayhfX20yNTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9f
bW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcF9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX20y
NTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9tbV9jbXBfZXBp
OF9tYXNrKF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazE2IF9f
Y2RlY2wgX21tX21hc2tfY21wX2VwaThfbWFzayhfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGks
IGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazMyIF9fY2RlY2wgX21tMjU2X2NtcF9lcGk4X21h
c2soX19tMjU2aSwgX19tMjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVj
bCBfbW0yNTZfbWFza19jbXBfZXBpOF9tYXNrKF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wX2VwdTE2X21hc2so
X19tMTI4aSwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBf
bW1fbWFza19jbXBfZXB1MTZfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfbW0yNTZfY21wX2VwdTE2X21hc2soX19t
MjU2aSwgX19tMjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfbW0y
NTZfbWFza19jbXBfZXB1MTZfbWFzayhfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmksIGNvbnN0
IGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcF9lcHUzMl9tYXNrKF9fbTEy
OGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21w
X2VwdTMyX21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tMjU2X2NtcF9lcHUzMl9tYXNrKF9fbTI1NmksIF9fbTI1NmksIGlu
dCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X21hc2tfY21wX2VwdTMyX21hc2so
X19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2Rl
Y2wgX21tX2NtcF9lcHU2NF9tYXNrKF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wX2VwdTY0X21hc2soX19tbWFzazgsIF9fbTEyOGks
IF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X2NtcF9lcHU2
NF9tYXNrKF9fbTI1NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wg
X21tMjU2X21hc2tfY21wX2VwdTY0X21hc2soX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGlu
dCk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tX2NtcF9lcHU4X21hc2soX19tMTI4aSwg
X19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfbW1fbWFza19j
bXBfZXB1OF9tYXNrKF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4
dGVybiBfX21tYXNrMzIgX19jZGVjbCBfbW0yNTZfY21wX2VwdThfbWFzayhfX20yNTZpLCBfX20y
NTZpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2szMiBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Nt
cF9lcHU4X21hc2soX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0
ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBfcGRfbWFzayhfX20xMjhkLCBfX20xMjhkLCBj
b25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcF9wZF9tYXNr
KF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4
ICBfX2NkZWNsIF9tbTI1Nl9jbXBfcGRfbWFzayhfX20yNTZkLCBfX20yNTZkLCBjb25zdCBpbnQp
Ow0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcF9wZF9tYXNrKF9fbW1h
c2s4LCBfX20yNTZkLCBfX20yNTZkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2Nk
ZWNsIF9tbV9jbXBfcHNfbWFzayhfX20xMjgsIF9fbTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiBf
X21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBfcHNfbWFzayhfX21tYXNrOCwgX19tMTI4LCBf
X20xMjgsIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X2NtcF9w
c19tYXNrKF9fbTI1NiwgX19tMjU2LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX2NtcF9wc19tYXNrKF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1NiwgY29u
c3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jb21wcmVzc19lcGk4
KF9fbTEyOGksIF9fbW1hc2sxNiwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X2NvbXByZXNzX2VwaTgoX19tbWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jb21wcmVzc19lcGk4KF9fbTI1NmksIF9fbW1hc2sz
MiwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2NvbXBy
ZXNzX2VwaTgoX19tbWFzazMyLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW1fbWFza19jb21wcmVzc19lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2NvbXByZXNzX2VwaTE2KF9fbW1hc2s4LCBf
X20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jb21wcmVzc19l
cGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrel9jb21wcmVzc19lcGkxNihfX21tYXNrMTYsIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2NvbXByZXNzX2VwaTMyKF9fbTEyOGksIF9f
bW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY29t
cHJlc3NfZXBpMzIoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX2NvbXByZXNzX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY29tcHJlc3NfZXBpMzIoX19t
bWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2NvbXBy
ZXNzX2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fbWFza3pfY29tcHJlc3NfZXBpNjQoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NvbXByZXNzX2VwaTY0KF9fbTI1Nmks
IF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a3pfY29tcHJlc3NfZXBpNjQoX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGQgICBf
X2NkZWNsIF9tbV9tYXNrX2NvbXByZXNzX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkKTsN
CmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfY29tcHJlc3NfcGQoX19tbWFzazgs
IF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NvbXByZXNz
X3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVj
bCBfbW0yNTZfbWFza3pfY29tcHJlc3NfcGQoX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9f
bTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2NvbXByZXNzX3BzKF9fbTEyOCwgX19tbWFzazgsIF9f
bTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2NvbXByZXNzX3BzKF9f
bW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Nv
bXByZXNzX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ICAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X2NvbXByZXNzX3BzKF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJu
IHZvaWQgICAgICBfX2NkZWNsIF9tbV9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTgodm9pZCosIF9f
bW1hc2sxNiwgX19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tf
Y29tcHJlc3NzdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazMyLCBfX20yNTZpKTsNCmV4dGVybiB2
b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jb21wcmVzc3N0b3JldV9lcGkxNih2b2lkKiwgX19t
bWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Nv
bXByZXNzc3RvcmV1X2VwaTE2KHZvaWQqLCBfX21tYXNrMTYsIF9fbTI1NmkpOw0KZXh0ZXJuIHZv
aWQgICAgICBfX2NkZWNsIF9tbV9tYXNrX2NvbXByZXNzc3RvcmV1X2VwaTMyKHZvaWQqLCBfX21t
YXNrOCwgX19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfY29t
cHJlc3NzdG9yZXVfZXBpMzIodm9pZCosIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiB2b2lk
ICAgICAgX19jZGVjbCBfbW1fbWFza19jb21wcmVzc3N0b3JldV9lcGk2NCh2b2lkKiwgX19tbWFz
azgsIF9fbTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NvbXBy
ZXNzc3RvcmV1X2VwaTY0KHZvaWQqLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAg
ICAgIF9fY2RlY2wgX21tX21hc2tfY29tcHJlc3NzdG9yZXVfcGQodm9pZCosIF9fbW1hc2s4LCBf
X20xMjhkKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZfbWFza19jb21wcmVzc3N0
b3JldV9wZCh2b2lkKiwgX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2Nk
ZWNsIF9tbV9tYXNrX2NvbXByZXNzc3RvcmV1X3BzKHZvaWQqLCBfX21tYXNrOCwgX19tMTI4KTsN
CmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZfbWFza19jb21wcmVzc3N0b3JldV9wcyh2
b2lkKiwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2Nv
bmZsaWN0X2VwaTMyKF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
X2NvbmZsaWN0X2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW1fbWFza3pfY29uZmxpY3RfZXBpMzIoX19tbWFzazgsIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9jb25mbGljdF9lcGkzMihfX20yNTZp
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jb25mbGljdF9lcGkzMihf
X20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21t
MjU2X21hc2t6X2NvbmZsaWN0X2VwaTMyKF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW1fY29uZmxpY3RfZXBpNjQoX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2tfY29uZmxpY3RfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9jb25mbGljdF9lcGk2
NChfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X2Nv
bmZsaWN0X2VwaTY0KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX2NvbmZsaWN0X2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY29uZmxpY3RfZXBpNjQoX19tbWFzazgsIF9f
bTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHBzX3BoKF9fbTEy
OGksIF9fbW1hc2s4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21t
X21hc2t6X2N2dHBzX3BoKF9fbW1hc2s4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX21hc2tfY3Z0X3JvdW5kcHNfcGgoX19tMTI4aSwgX19tbWFzazgsIF9fbTEy
OCwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0X3JvdW5kcHNf
cGgoX19tbWFzazgsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0y
NTZfbWFza19jdnRwc19waChfX20xMjhpLCBfX21tYXNrOCwgX19tMjU2LCBpbnQpOw0KZXh0ZXJu
IF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRwc19waChfX21tYXNrOCwgX19tMjU2
LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dF9yb3VuZHBz
X3BoKF9fbTEyOGksIF9fbW1hc2s4LCBfX20yNTYsIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X2N2dF9yb3VuZHBzX3BoKF9fbW1hc2s4LCBfX20yNTYsIGludCk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0ZXBpMTZfZXBpMzIoX19tMTI4
aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
el9jdnRlcGkxNl9lcGkzMihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfY3Z0ZXBpMTZfZXBpMzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRlcGkxNl9lcGkz
MihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tf
Y3Z0ZXBpMTZfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEy
OGkgICBfX2NkZWNsIF9tbV9tYXNrel9jdnRlcGkxNl9lcGk2NChfX21tYXNrOCwgX19tMTI4aSk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfY3Z0ZXBpMTZfZXBpNjQoX19t
MjU2aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel9jdnRlcGkxNl9lcGk2NChfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX2N2dGVwaTE2X2VwaTgoX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX21hc2tfY3Z0ZXBpMTZfZXBpOChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dGVwaTE2X2VwaTgoX19t
bWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9jdnRlcGkx
Nl9lcGk4KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2
dGVwaTE2X2VwaTgoX19tMTI4aSwgX19tbWFzazE2LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0ZXBpMTZfZXBpOChfX21tYXNrMTYsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwaTE2X3N0b3JldV9lcGk4
KHZvaWQqLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21t
MjU2X21hc2tfY3Z0ZXBpMTZfc3RvcmV1X2VwaTgodm9pZCosIF9fbW1hc2sxNiwgX19tMjU2aSk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2dGVwaTMyX2VwaTE2KF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwaTMyX2VwaTE2KF9fbTEyOGks
IF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
Y3Z0ZXBpMzJfZXBpMTYoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbTI1Nl9jdnRlcGkzMl9lcGkxNihfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW0yNTZfbWFza19jdnRlcGkzMl9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMjU2
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dGVwaTMyX2VwaTE2
KF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19j
dnRlcGkzMl9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dGVwaTMyX2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRlcGkzMl9lcGk2NChfX20y
NTZpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X21hc2t6X2N2dGVwaTMyX2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fY3Z0ZXBpMzJfZXBpOChfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fbWFza19jdnRlcGkzMl9lcGk4KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhp
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0ZXBpMzJfZXBpOChfX21t
YXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X2N2dGVwaTMy
X2VwaTgoX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfY3Z0
ZXBpMzJfZXBpOChfX20xMjhpLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dGVwaTMyX2VwaTgoX19tbWFzazgsIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwaTMyX3BkKF9fbTEyOGQsIF9f
bW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0
ZXBpMzJfcGQoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrX2N2dGVwaTMyX3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVy
biBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0ZXBpMzJfcGQoX19tbWFzazgsIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwaTMyX3BzKF9f
bTEyOCwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9t
YXNrel9jdnRlcGkzMl9wcyhfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2ICAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfY3Z0ZXBpMzJfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2aSk7
DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dGVwaTMyX3BzKF9fbW1h
c2s4LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jdnRlcGkz
Ml9zdG9yZXVfZXBpMTYodm9pZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAg
ICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRlcGkzMl9zdG9yZXVfZXBpMTYodm9pZCosIF9fbW1h
c2s4LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jdnRlcGkz
Ml9zdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dGVwaTMyX3N0b3JldV9lcGk4KHZvaWQqLCBfX21tYXNr
OCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2dGVwaTY0X2VwaTE2
KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwaTY0X2Vw
aTE2KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVj
bCBfbW1fbWFza3pfY3Z0ZXBpNjRfZXBpMTYoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9jdnRlcGk2NF9lcGkxNihfX20yNTZpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRlcGk2NF9lcGkxNihfX20xMjhpLCBfX21t
YXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2
dGVwaTY0X2VwaTE2KF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVj
bCBfbW1fY3Z0ZXBpNjRfZXBpMzIoX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2tfY3Z0ZXBpNjRfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9jdnRlcGk2NF9lcGkzMihfX21tYXNrOCwg
X19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X2N2dGVwaTY0X2VwaTMy
KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dGVwaTY0
X2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfY3Z0ZXBpNjRfZXBpMzIoX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9jdnRlcGk2NF9lcGk4KF9fbTEyOGkpOw0KZXh0ZXJu
IF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwaTY0X2VwaTgoX19tMTI4aSwgX19tbWFz
azgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9jdnRlcGk2
NF9lcGk4KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0y
NTZfY3Z0ZXBpNjRfZXBpOChfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0y
NTZfbWFza19jdnRlcGk2NF9lcGk4KF9fbTEyOGksIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0ZXBpNjRfZXBpOChfX21tYXNrOCwg
X19tMjU2aSk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX2N2dGVwaTY0X3BkKF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwaTY0X3BkKF9fbTEy
OGQsIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFz
a3pfY3Z0ZXBpNjRfcGQoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2Nk
ZWNsIF9tbTI1Nl9jdnRlcGk2NF9wZChfX20yNTZpKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVj
bCBfbW0yNTZfbWFza19jdnRlcGk2NF9wZChfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2aSk7DQpl
eHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dGVwaTY0X3BkKF9fbW1hc2s4
LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fY3Z0ZXBpNjRfcHMoX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfY3Z0ZXBpNjRfcHMoX19t
MTI4LCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21h
c2t6X2N2dGVwaTY0X3BzKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjggICAgX19j
ZGVjbCBfbW0yNTZfY3Z0ZXBpNjRfcHMoX19tMjU2aSk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfY3Z0ZXBpNjRfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMjU2aSk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dGVwaTY0X3BzKF9fbW1hc2s4
LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jdnRlcGk2NF9z
dG9yZXVfZXBpMTYodm9pZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAgICAg
X19jZGVjbCBfbW0yNTZfbWFza19jdnRlcGk2NF9zdG9yZXVfZXBpMTYodm9pZCosIF9fbW1hc2s4
LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jdnRlcGk2NF9z
dG9yZXVfZXBpMzIodm9pZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAgICAg
X19jZGVjbCBfbW0yNTZfbWFza19jdnRlcGk2NF9zdG9yZXVfZXBpMzIodm9pZCosIF9fbW1hc2s4
LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jdnRlcGk2NF9z
dG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrX2N2dGVwaTY0X3N0b3JldV9lcGk4KHZvaWQqLCBfX21tYXNrOCwg
X19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0ZXBpOF9lcGkx
NihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X2N2dGVwaThfZXBpMTYoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dGVwaThfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2
LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0ZXBp
OF9lcGkxNihfX21tYXNrMTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrX2N2dGVwaThfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJu
IF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9jdnRlcGk4X2VwaTMyKF9fbW1hc2s4LCBfX20x
MjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRlcGk4X2VwaTMy
KF9fbTI1NmksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfbWFza3pfY3Z0ZXBpOF9lcGkzMihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0ZXBpOF9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwg
X19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dGVwaThfZXBp
NjQoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX2N2dGVwaThfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRlcGk4X2VwaTY0KF9fbW1hc2s4LCBfX20x
MjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnRlcHUxNl9lcGkzMihf
X20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21t
X21hc2t6X2N2dGVwdTE2X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRlcHUxNl9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwg
X19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dGVwdTE2
X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza19jdnRlcHUxNl9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dGVwdTE2X2VwaTY0KF9fbW1hc2s4LCBfX20x
MjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRlcHUxNl9lcGk2
NChfX20yNTZpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wg
X21tMjU2X21hc2t6X2N2dGVwdTE2X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnRlcHUzMl9lcGk2NChfX20xMjhpLCBfX21tYXNr
OCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dGVwdTMy
X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfbWFza19jdnRlcHUzMl9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dGVwdTMyX2VwaTY0KF9fbW1hc2s4
LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fY3Z0ZXB1MzJfcGQoX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfY3Z0ZXB1MzJfcGQoX19t
MTI4ZCwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9t
YXNrel9jdnRlcHUzMl9wZChfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X2N2dGVwdTMyX3BkKF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX2N2dGVwdTMyX3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0ZXB1MzJfcGQoX19tbWFz
azgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9jdnRlcHU2NF9wZChf
X20xMjhpKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19jdnRlcHU2NF9wZChf
X20xMjhkLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X21hc2t6X2N2dGVwdTY0X3BkKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZkICAg
X19jZGVjbCBfbW0yNTZfY3Z0ZXB1NjRfcGQoX19tMjU2aSk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfY3Z0ZXB1NjRfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRlcHU2NF9wZChfX21t
YXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX2N2dGVwdTY0X3Bz
KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2N2dGVwdTY0X3Bz
KF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9t
bV9tYXNrel9jdnRlcHU2NF9wcyhfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4ICAg
IF9fY2RlY2wgX21tMjU2X2N2dGVwdTY0X3BzKF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOCAgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrX2N2dGVwdTY0X3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRlcHU2NF9wcyhfX21t
YXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0ZXB1
OF9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tX21hc2t6X2N2dGVwdThfZXBpMTYoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJu
IF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dGVwdThfZXBpMTYoX19tMjU2aSwgX19t
bWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
Y3Z0ZXB1OF9lcGkxNihfX21tYXNrMTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXNrX2N2dGVwdThfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9jdnRlcHU4X2VwaTMyKF9fbW1hc2s4
LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRlcHU4
X2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfY3Z0ZXB1OF9lcGkzMihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0ZXB1OF9lcGk2NChfX20xMjhpLCBfX21t
YXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dGVw
dThfZXBpNjQoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrX2N2dGVwdThfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRlcHU4X2VwaTY0KF9fbW1hc2s4
LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnRwZF9lcGkz
MihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X2N2dHBkX2VwaTMyKF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRwZF9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19t
MjU2ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dHBkX2VwaTMy
KF9fbW1hc2s4LCBfX20yNTZkKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fY3Z0cGRf
ZXBpNjQoX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0cGRf
ZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXNrel9jdnRwZF9lcGk2NChfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X2N2dHBkX2VwaTY0KF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHBkX2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBf
X20yNTZkKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0cGRfZXBp
NjQoX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9jdnRw
ZF9lcHUzMihfX20xMjhkKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnRw
ZF9lcHUzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tX21hc2t6X2N2dHBkX2VwdTMyKF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW0yNTZfY3Z0cGRfZXB1MzIoX19tMjU2ZCk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfY3Z0cGRfZXB1MzIoX19tMTI4aSwgX19tbWFzazgs
IF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRwZF9l
cHUzMihfX21tYXNrOCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2
dHBkX2VwdTY0KF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2
dHBkX2VwdTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fbWFza3pfY3Z0cGRfZXB1NjQoX19tbWFzazgsIF9fbTEyOGQpOw0KZXh0ZXJu
IF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9jdnRwZF9lcHU2NChfX20yNTZkKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRwZF9lcHU2NChfX20yNTZpLCBfX21tYXNr
OCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dHBk
X2VwdTY0KF9fbW1hc2s4LCBfX20yNTZkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1f
bWFza19jdnRwZF9wcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjgg
ICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0cGRfcHMoX19tbWFzazgsIF9fbTEyOGQpOw0KZXh0ZXJu
IF9fbTEyOCAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHBkX3BzKF9fbTEyOCwgX19tbWFzazgs
IF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRwZF9w
cyhfX21tYXNrOCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tf
Y3Z0cGhfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4ICAgIF9f
Y2RlY2wgX21tX21hc2t6X2N2dHBoX3BzKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20y
NTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRwaF9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20x
MjhpKTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0cGhfcHMoX19t
bWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHBz
X2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXNrel9jdnRwc19lcGkzMihfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRwc19lcGkzMihfX20yNTZpLCBfX21tYXNrOCwg
X19tMjU2KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0cHNfZXBp
MzIoX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2dHBz
X2VwaTY0KF9fbTEyOCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0cHNf
ZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tX21hc2t6X2N2dHBzX2VwaTY0KF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9jdnRwc19lcGk2NChfX20xMjgpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHBzX2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20x
MjgpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRwc19lcGk2NChf
X21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fY3Z0cHNfZXB1
MzIoX19tMTI4KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnRwc19lcHUz
MihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW1fbWFza3pfY3Z0cHNfZXB1MzIoX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X2N2dHBzX2VwdTMyKF9fbTI1Nik7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfY3Z0cHNfZXB1MzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1Nik7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dHBzX2VwdTMyKF9fbW1h
c2s4LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9jdnRwc19lcHU2NChf
X20xMjgpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHBzX2VwdTY0KF9f
bTEyOGksIF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9t
YXNrel9jdnRwc19lcHU2NChfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfY3Z0cHNfZXB1NjQoX19tMTI4KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVj
bCBfbW0yNTZfbWFza19jdnRwc19lcHU2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMTI4KTsNCmV4
dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0cHNfZXB1NjQoX19tbWFzazgs
IF9fbTEyOCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2dHNlcGkxNl9lcGk4KF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHNlcGkxNl9lcGk4
KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW1fbWFza3pfY3Z0c2VwaTE2X2VwaTgoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEy
OGkgICBfX2NkZWNsIF9tbTI1Nl9jdnRzZXBpMTZfZXBpOChfX20yNTZpKTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRzZXBpMTZfZXBpOChfX20xMjhpLCBfX21tYXNr
MTYsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRz
ZXBpMTZfZXBpOChfX21tYXNrMTYsIF9fbTI1NmkpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNs
IF9tbV9tYXNrX2N2dHNlcGkxNl9zdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazgsIF9fbTEyOGkp
Ow0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHNlcGkxNl9zdG9yZXVf
ZXBpOCh2b2lkKiwgX19tbWFzazE2LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVj
bCBfbW1fY3Z0c2VwaTMyX2VwaTE2KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9tYXNrX2N2dHNlcGkzMl9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dHNlcGkzMl9lcGkxNihfX21tYXNr
OCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X2N2dHNlcGkzMl9l
cGkxNihfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRz
ZXBpMzJfZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRzZXBpMzJfZXBpMTYoX19tbWFzazgsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9jdnRzZXBpMzJfZXBpOChfX20xMjhpKTsN
CmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnRzZXBpMzJfZXBpOChfX20xMjhp
LCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6
X2N2dHNlcGkzMl9lcGk4KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW0yNTZfY3Z0c2VwaTMyX2VwaTgoX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfY3Z0c2VwaTMyX2VwaTgoX19tMTI4aSwgX19tbWFzazgsIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnRzZXBpMzJfZXBp
OChfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tf
Y3Z0c2VwaTMyX3N0b3JldV9lcGkxNih2b2lkKiwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJu
IHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHNlcGkzMl9zdG9yZXVfZXBpMTYodm9p
ZCosIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFz
a19jdnRzZXBpMzJfc3RvcmV1X2VwaTgodm9pZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVy
biB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRzZXBpMzJfc3RvcmV1X2VwaTgodm9p
ZCosIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fY3Z0
c2VwaTY0X2VwaTE2KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
X2N2dHNlcGk2NF9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dHNlcGk2NF9lcGkxNihfX21tYXNrOCwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X2N2dHNlcGk2NF9lcGkxNihfX20y
NTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRzZXBpNjRfZXBp
MTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrel9jdnRzZXBpNjRfZXBpMTYoX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJu
IF9fbTEyOGkgICBfX2NkZWNsIF9tbV9jdnRzZXBpNjRfZXBpMzIoX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0c2VwaTY0X2VwaTMyKF9fbTEyOGksIF9fbW1h
c2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0c2Vw
aTY0X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW0yNTZfY3Z0c2VwaTY0X2VwaTMyKF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX2N2dHNlcGk2NF9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMjU2aSk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dHNlcGk2NF9lcGkzMihf
X21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2dHNlcGk2
NF9lcGk4KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHNl
cGk2NF9lcGk4KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fbWFza3pfY3Z0c2VwaTY0X2VwaTgoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9jdnRzZXBpNjRfZXBpOChfX20yNTZpKTsNCmV4
dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRzZXBpNjRfZXBpOChfX20xMjhp
LCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X2N2dHNlcGk2NF9lcGk4KF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAg
X19jZGVjbCBfbW1fbWFza19jdnRzZXBpNjRfc3RvcmV1X2VwaTE2KHZvaWQqLCBfX21tYXNrOCwg
X19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfY3Z0c2VwaTY0
X3N0b3JldV9lcGkxNih2b2lkKiwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIHZvaWQgICAg
ICBfX2NkZWNsIF9tbV9tYXNrX2N2dHNlcGk2NF9zdG9yZXVfZXBpMzIodm9pZCosIF9fbW1hc2s4
LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnRzZXBp
NjRfc3RvcmV1X2VwaTMyKHZvaWQqLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAg
ICAgIF9fY2RlY2wgX21tX21hc2tfY3Z0c2VwaTY0X3N0b3JldV9lcGk4KHZvaWQqLCBfX21tYXNr
OCwgX19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfY3Z0c2Vw
aTY0X3N0b3JldV9lcGk4KHZvaWQqLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0dHBkX2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20x
MjhkKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0dHBkX2VwaTMyKF9f
bW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza19j
dnR0cGRfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnR0cGRfZXBpMzIoX19tbWFzazgsIF9fbTI1NmQpOw0K
ZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9jdnR0cGRfZXBpNjQoX19tMTI4ZCk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0dHBkX2VwaTY0KF9fbTEyOGksIF9fbW1h
c2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0dHBk
X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfY3Z0dHBkX2VwaTY0KF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrX2N2dHRwZF9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2ZCk7DQpleHRlcm4g
X19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dHRwZF9lcGk2NChfX21tYXNrOCwgX19t
MjU2ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2dHRwZF9lcHUzMihfX20xMjhk
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnR0cGRfZXB1MzIoX19tMTI4
aSwgX19tbWFzazgsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
el9jdnR0cGRfZXB1MzIoX19tbWFzazgsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbTI1Nl9jdnR0cGRfZXB1MzIoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfY3Z0dHBkX2VwdTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20yNTZkKTsN
CmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfY3Z0dHBkX2VwdTMyKF9fbW1h
c2s4LCBfX20yNTZkKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fY3Z0dHBkX2VwdTY0
KF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHRwZF9lcHU2
NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X2N2dHRwZF9lcHU2NChfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2
aSAgIF9fY2RlY2wgX21tMjU2X2N2dHRwZF9lcHU2NChfX20yNTZkKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnR0cGRfZXB1NjQoX19tMjU2aSwgX19tbWFzazgsIF9f
bTI1NmQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnR0cGRfZXB1
NjQoX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
X2N2dHRwc19lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0dHBzX2VwaTMyKF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHRwc19lcGkzMihfX20yNTZpLCBf
X21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
Y3Z0dHBzX2VwaTMyKF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9jdnR0cHNfZXBpNjQoX19tMTI4KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza19jdnR0cHNfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dHRwc19lcGk2NChfX21tYXNrOCwgX19tMTI4KTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfY3Z0dHBzX2VwaTY0KF9fbTEyOCk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfY3Z0dHBzX2VwaTY0KF9fbTI1Nmks
IF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
el9jdnR0cHNfZXBpNjQoX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tX2N2dHRwc19lcHUzMihfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrX2N2dHRwc19lcHUzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0dHBzX2VwdTMyKF9fbW1hc2s4LCBfX20xMjgp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9jdnR0cHNfZXB1MzIoX19tMjU2KTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnR0cHNfZXB1MzIoX19tMjU2
aSwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X2N2dHRwc19lcHUzMihfX21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fY3Z0dHBzX2VwdTY0KF9fbTEyOCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2tfY3Z0dHBzX2VwdTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJu
IF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9jdnR0cHNfZXB1NjQoX19tbWFzazgsIF9fbTEy
OCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X2N2dHRwc19lcHU2NChfX20xMjgp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHRwc19lcHU2NChfX20y
NTZpLCBfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bWFza3pfY3Z0dHBzX2VwdTY0KF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGkgICBf
X2NkZWNsIF9tbV9jdnR1c2VwaTE2X2VwaTgoX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tX21hc2tfY3Z0dXNlcGkxNl9lcGk4KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhp
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0dXNlcGkxNl9lcGk4KF9f
bW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfY3Z0dXNl
cGkxNl9lcGk4KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X2N2dHVzZXBpMTZfZXBpOChfX20xMjhpLCBfX21tYXNrMTYsIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9jdnR1c2VwaTE2X2VwaTgoX19tbWFzazE2LCBf
X20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jdnR1c2VwaTE2X3N0
b3JldV9lcGk4KHZvaWQqLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfY3Z0dXNlcGkxNl9zdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazE2
LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fY3Z0dXNlcGkzMl9lcGkx
NihfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnR1c2VwaTMy
X2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbWFza3pfY3Z0dXNlcGkzMl9lcGkxNihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X2N2dHVzZXBpMzJfZXBpMTYoX19tMjU2aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfY3Z0dXNlcGkzMl9lcGkxNihfX20x
MjhpLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2
X21hc2t6X2N2dHVzZXBpMzJfZXBpMTYoX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEy
OGkgICBfX2NkZWNsIF9tbV9jdnR1c2VwaTMyX2VwaTgoX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0dXNlcGkzMl9lcGk4KF9fbTEyOGksIF9fbW1hc2s4LCBf
X20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0dXNlcGkzMl9l
cGk4KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZf
Y3Z0dXNlcGkzMl9lcGk4KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrX2N2dHVzZXBpMzJfZXBpOChfX20xMjhpLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dHVzZXBpMzJfZXBpOChfX21tYXNr
OCwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tfY3Z0dXNlcGkz
Ml9zdG9yZXVfZXBpMTYodm9pZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAg
ICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnR1c2VwaTMyX3N0b3JldV9lcGkxNih2b2lkKiwgX19t
bWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHVz
ZXBpMzJfc3RvcmV1X2VwaTgodm9pZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lk
ICAgICAgX19jZGVjbCBfbW0yNTZfbWFza19jdnR1c2VwaTMyX3N0b3JldV9lcGk4KHZvaWQqLCBf
X21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX2N2dHVzZXBp
NjRfZXBpMTYoX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfY3Z0
dXNlcGk2NF9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2t6X2N2dHVzZXBpNjRfZXBpMTYoX19tbWFzazgsIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9jdnR1c2VwaTY0X2VwaTE2KF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHVzZXBpNjRfZXBp
MTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrel9jdnR1c2VwaTY0X2VwaTE2KF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fY3Z0dXNlcGk2NF9lcGkzMihfX20xMjhpKTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19jdnR1c2VwaTY0X2VwaTMyKF9fbTEyOGksIF9f
bW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0
dXNlcGk2NF9lcGkzMihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tMjU2X2N2dHVzZXBpNjRfZXBpMzIoX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfY3Z0dXNlcGk2NF9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19t
MjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2N2dHVzZXBpNjRf
ZXBpMzIoX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9j
dnR1c2VwaTY0X2VwaTgoX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2tfY3Z0dXNlcGk2NF9lcGk4KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0dXNlcGk2NF9lcGk4KF9fbW1hc2s4LCBfX20x
MjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfY3Z0dXNlcGk2NF9lcGk4KF9f
bTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2N2dHVzZXBpNjRf
ZXBpOChfX20xMjhpLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tMjU2X21hc2t6X2N2dHVzZXBpNjRfZXBpOChfX21tYXNrOCwgX19tMjU2aSk7DQpleHRl
cm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tfY3Z0dXNlcGk2NF9zdG9yZXVfZXBpMTYodm9p
ZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZf
bWFza19jdnR1c2VwaTY0X3N0b3JldV9lcGkxNih2b2lkKiwgX19tbWFzazgsIF9fbTI1NmkpOw0K
ZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbV9tYXNrX2N2dHVzZXBpNjRfc3RvcmV1X2VwaTMy
KHZvaWQqLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21t
MjU2X21hc2tfY3Z0dXNlcGk2NF9zdG9yZXVfZXBpMzIodm9pZCosIF9fbW1hc2s4LCBfX20yNTZp
KTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19jdnR1c2VwaTY0X3N0b3JldV9l
cGk4KHZvaWQqLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wg
X21tMjU2X21hc2tfY3Z0dXNlcGk2NF9zdG9yZXVfZXBpOCh2b2lkKiwgX19tbWFzazgsIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9kYnNhZF9lcHU4KF9fbTEyOGksIF9f
bTEyOGksIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfZGJzYWRfZXB1
OChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW1fbWFza3pfZGJzYWRfZXB1OChfX21tYXNrOCwgX19tMTI4aSwgX19t
MTI4aSwgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfZGJzYWRfZXB1OChf
X20yNTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX2Ric2FkX2VwdTgoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpLCBpbnQp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9kYnNhZF9lcHU4KF9fbW1h
c2sxNiwgX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBf
bW1fbWFza19kaXZfcGQoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0
ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9kaXZfcGQoX19tbWFzazgsIF9fbTEyOGQs
IF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Rpdl9wZChf
X20yNTZkLCBfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X2Rpdl9wZChfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZGl2X3BzKF9fbTEyOCwgX19tbWFzazgs
IF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfZGl2
X3BzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wg
X21tMjU2X21hc2tfZGl2X3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4
dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfZGl2X3BzKF9fbW1hc2s4LCBfX20y
NTYsIF9fbTI1Nik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfZXhwYW5kX2Vw
aTgoX19tMTI4aSwgX19tbWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVj
bCBfbW1fbWFza3pfZXhwYW5kX2VwaTgoX19tbWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19leHBhbmRfZXBpOChfX20yNTZpLCBfX21tYXNrMzIs
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9leHBhbmRf
ZXBpOChfX21tYXNrMzIsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9t
YXNrX2V4cGFuZF9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2V4cGFuZF9lcGkxNihfX21tYXNrOCwgX19tMTI4aSk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfZXhwYW5kX2VwaTE2KF9fbTI1
NmksIF9fbW1hc2sxNiwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X21hc2t6X2V4cGFuZF9lcGkxNihfX21tYXNrMTYsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrX2V4cGFuZF9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2V4cGFuZF9lcGkzMihfX21t
YXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfZXhw
YW5kX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfbWFza3pfZXhwYW5kX2VwaTMyKF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4
dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19leHBhbmRfZXBpNjQoX19tMTI4aSwgX19t
bWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9leHBh
bmRfZXBpNjQoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrX2V4cGFuZF9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2V4cGFuZF9lcGk2NChfX21tYXNrOCwg
X19tMjU2aSk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfZXhwYW5kX3BkKF9f
bTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza3pfZXhwYW5kX3BkKF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTZkICAgX19j
ZGVjbCBfbW0yNTZfbWFza19leHBhbmRfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQpOw0K
ZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9leHBhbmRfcGQoX19tbWFzazgs
IF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2V4cGFuZF9wcyhf
X20xMjgsIF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9t
YXNrel9leHBhbmRfcHMoX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfZXhwYW5kX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRl
cm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2V4cGFuZF9wcyhfX21tYXNrOCwgX19t
MjU2KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19leHBhbmRsb2FkdV9lcGk4
KF9fbTEyOGksIF9fbW1hc2sxNiwgY29uc3Qgdm9pZCopOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXNrel9leHBhbmRsb2FkdV9lcGk4KF9fbW1hc2sxNiwgY29uc3Qgdm9pZCopOw0K
ZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2V4cGFuZGxvYWR1X2VwaTgoX19t
MjU2aSwgX19tbWFzazMyLCBjb25zdCB2b2lkKik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wg
X21tMjU2X21hc2t6X2V4cGFuZGxvYWR1X2VwaTgoX19tbWFzazMyLCBjb25zdCB2b2lkKik7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfZXhwYW5kbG9hZHVfZXBpMTYoX19tMTI4
aSwgX19tbWFzazgsIGNvbnN0IHZvaWQqKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza3pfZXhwYW5kbG9hZHVfZXBpMTYoX19tbWFzazgsIGNvbnN0IHZvaWQqKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19leHBhbmRsb2FkdV9lcGkxNihfX20yNTZpLCBf
X21tYXNrMTYsIGNvbnN0IHZvaWQqKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bWFza3pfZXhwYW5kbG9hZHVfZXBpMTYoX19tbWFzazE2LCBjb25zdCB2b2lkKik7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfZXhwYW5kbG9hZHVfZXBpMzIoX19tMTI4aSwgX19t
bWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
ZXhwYW5kbG9hZHVfZXBpMzIoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19leHBhbmRsb2FkdV9lcGkzMihfX20yNTZpLCBfX21tYXNr
OCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9l
eHBhbmRsb2FkdV9lcGkzMihfX21tYXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrX2V4cGFuZGxvYWR1X2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCB2
b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2V4cGFuZGxv
YWR1X2VwaTY0KF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfZXhwYW5kbG9hZHVfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIHZvaWQg
Y29uc3QqKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfZXhwYW5kbG9h
ZHVfZXBpNjQoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFza19leHBhbmRsb2FkdV9wZChfX20xMjhkLCBfX21tYXNrOCwgdm9pZCBjb25zdCop
Ow0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9leHBhbmRsb2FkdV9wZChfX21t
YXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X2V4cGFuZGxvYWR1X3BkKF9fbTI1NmQsIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4g
X19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2V4cGFuZGxvYWR1X3BkKF9fbW1hc2s4LCB2
b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZXhwYW5kbG9h
ZHVfcHMoX19tMTI4LCBfX21tYXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTEyOCAgICBf
X2NkZWNsIF9tbV9tYXNrel9leHBhbmRsb2FkdV9wcyhfX21tYXNrOCwgdm9pZCBjb25zdCopOw0K
ZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2V4cGFuZGxvYWR1X3BzKF9fbTI1
NiwgX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0y
NTZfbWFza3pfZXhwYW5kbG9hZHVfcHMoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBf
X20xMjggICAgX19jZGVjbCBfbW0yNTZfZXh0cmFjdGYzMng0X3BzKF9fbTI1NiwgaW50KTsNCmV4
dGVybiBfX20xMjggICAgX19jZGVjbCBfbW0yNTZfbWFza19leHRyYWN0ZjMyeDRfcHMoX19tMTI4
LCBfX21tYXNrOCwgX19tMjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel9leHRyYWN0ZjMyeDRfcHMoX19tbWFzazgsIF9fbTI1NiwgaW50KTsNCmV4dGVybiBf
X20xMjhkICAgX19jZGVjbCBfbW0yNTZfZXh0cmFjdGY2NHgyX3BkKF9fbTI1NmQsIGludCk7DQpl
eHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tfZXh0cmFjdGY2NHgyX3BkKF9fbTEy
OGQsIF9fbW1hc2s4LCBfX20yNTZkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrel9leHRyYWN0ZjY0eDJfcGQoX19tbWFzazgsIF9fbTI1NmQsIGludCk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X2V4dHJhY3RpMzJ4NF9lcGkzMihfX20yNTZpLCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2V4dHJhY3RpMzJ4NF9l
cGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW0yNTZfbWFza3pfZXh0cmFjdGkzMng0X2VwaTMyKF9fbW1hc2s4LCBfX20yNTZp
LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbTI1Nl9leHRyYWN0aTY0eDJfZXBp
NjQoX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbWFza19l
eHRyYWN0aTY0eDJfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTI1NmksIGludCk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2V4dHJhY3RpNjR4Ml9lcGk2NChfX21t
YXNrOCwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fZml4dXBp
bW1fcGQoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20x
MjhkICAgX19jZGVjbCBfbW1fbWFza19maXh1cGltbV9wZChfX20xMjhkLCBfX21tYXNrOCwgX19t
MTI4ZCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza3pfZml4dXBpbW1fcGQoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGksIGNv
bnN0IGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X2ZpeHVwaW1tX3BkKF9f
bTI1NmQsIF9fbTI1NmQsIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfZml4dXBpbW1fcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQs
IF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X2ZpeHVwaW1tX3BkKF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkLCBfX20yNTZpLCBjb25z
dCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9maXh1cGltbV9wcyhfX20xMjgs
IF9fbTEyOCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBf
bW1fbWFza19maXh1cGltbV9wcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOGksIGNv
bnN0IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2ZpeHVwaW1tX3Bz
KF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBf
X20yNTYgICAgX19jZGVjbCBfbW0yNTZfZml4dXBpbW1fcHMoX19tMjU2LCBfX20yNTYsIF9fbTI1
NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfZml4
dXBpbW1fcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2LCBfX20yNTZpLCBjb25zdCBpbnQpOw0K
ZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9maXh1cGltbV9wcyhfX21tYXNr
OCwgX19tMjU2LCBfX20yNTYsIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAg
IF9fY2RlY2wgX21tX21hc2tfZm1hZGRfcGQoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9f
bTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrM19mbWFkZF9wZChfX20x
MjhkLCBfX20xMjhkLCBfX20xMjhkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2Rl
Y2wgX21tX21hc2t6X2ZtYWRkX3BkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBfX20xMjhk
KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19mbWFkZF9wZChfX20yNTZk
LCBfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wg
X21tMjU2X21hc2szX2ZtYWRkX3BkKF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQsIF9fbW1hc2s4
KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza3pfZm1hZGRfcGQoX19tbWFz
azgsIF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNs
IF9tbV9tYXNrX2ZtYWRkX3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4
dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFzazNfZm1hZGRfcHMoX19tMTI4LCBfX20xMjgs
IF9fbTEyOCwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9m
bWFkZF9wcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2
ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfZm1hZGRfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2
LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrM19mbWFkZF9w
cyhfX20yNTYsIF9fbTI1NiwgX19tMjU2LCBfX21tYXNrOCk7DQpleHRlcm4gX19tMjU2ICAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X2ZtYWRkX3BzKF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1NiwgX19t
MjU2KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19mbWFkZHN1Yl9wZChfX20x
MjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2Rl
Y2wgX21tX21hc2szX2ZtYWRkc3ViX3BkKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQsIF9fbW1h
c2s4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfZm1hZGRzdWJfcGQoX19t
bWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX2ZtYWRkc3ViX3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBf
X20yNTZkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFzazNfZm1hZGRzdWJf
cGQoX19tMjU2ZCwgX19tMjU2ZCwgX19tMjU2ZCwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbTI1NmQg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9mbWFkZHN1Yl9wZChfX21tYXNrOCwgX19tMjU2ZCwgX19t
MjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZm1hZGRz
dWJfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAg
ICBfX2NkZWNsIF9tbV9tYXNrM19mbWFkZHN1Yl9wcyhfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBf
X21tYXNrOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2ZtYWRkc3ViX3Bz
KF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19j
ZGVjbCBfbW0yNTZfbWFza19mbWFkZHN1Yl9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20yNTYsIF9f
bTI1Nik7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2szX2ZtYWRkc3ViX3Bz
KF9fbTI1NiwgX19tMjU2LCBfX20yNTYsIF9fbW1hc2s4KTsNCmV4dGVybiBfX20yNTYgICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfZm1hZGRzdWJfcHMoX19tbWFzazgsIF9fbTI1NiwgX19tMjU2LCBf
X20yNTYpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2Ztc3ViX3BkKF9fbTEy
OGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFzazNfZm1zdWJfcGQoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCwgX19tbWFzazgp
Ow0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9mbXN1Yl9wZChfX21tYXNrOCwg
X19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21t
MjU2X21hc2tfZm1zdWJfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQsIF9fbTI1NmQpOw0K
ZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrM19mbXN1Yl9wZChfX20yNTZkLCBf
X20yNTZkLCBfX20yNTZkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21t
MjU2X21hc2t6X2Ztc3ViX3BkKF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkLCBfX20yNTZkKTsN
CmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19mbXN1Yl9wcyhfX20xMjgsIF9fbW1h
c2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2sz
X2Ztc3ViX3BzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgsIF9fbW1hc2s4KTsNCmV4dGVybiBfX20x
MjggICAgX19jZGVjbCBfbW1fbWFza3pfZm1zdWJfcHMoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4
LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Ztc3ViX3Bz
KF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgICAgX19j
ZGVjbCBfbW0yNTZfbWFzazNfZm1zdWJfcHMoX19tMjU2LCBfX20yNTYsIF9fbTI1NiwgX19tbWFz
azgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9mbXN1Yl9wcyhfX21t
YXNrOCwgX19tMjU2LCBfX20yNTYsIF9fbTI1Nik7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wg
X21tX21hc2tfZm1zdWJhZGRfcGQoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQp
Ow0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrM19mbXN1YmFkZF9wZChfX20xMjhk
LCBfX20xMjhkLCBfX20xMjhkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wg
X21tX21hc2t6X2Ztc3ViYWRkX3BkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBfX20xMjhk
KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19mbXN1YmFkZF9wZChfX20y
NTZkLCBfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2Rl
Y2wgX21tMjU2X21hc2szX2Ztc3ViYWRkX3BkKF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQsIF9f
bW1hc2s4KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza3pfZm1zdWJhZGRf
cGQoX19tbWFzazgsIF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAg
ICBfX2NkZWNsIF9tbV9tYXNrX2Ztc3ViYWRkX3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwg
X19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFzazNfZm1zdWJhZGRfcHMo
X19tMTI4LCBfX20xMjgsIF9fbTEyOCwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2Nk
ZWNsIF9tbV9tYXNrel9mbXN1YmFkZF9wcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIF9fbTEy
OCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfZm1zdWJhZGRfcHMoX19t
MjU2LCBfX21tYXNrOCwgX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrM19mbXN1YmFkZF9wcyhfX20yNTYsIF9fbTI1NiwgX19tMjU2LCBfX21tYXNr
OCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2Ztc3ViYWRkX3BzKF9f
bW1hc2s4LCBfX20yNTYsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFza19mbm1hZGRfcGQoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQp
Ow0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrM19mbm1hZGRfcGQoX19tMTI4ZCwg
X19tMTI4ZCwgX19tMTI4ZCwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9t
bV9tYXNrel9mbm1hZGRfcGQoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0K
ZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2ZubWFkZF9wZChfX20yNTZkLCBf
X21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21t
MjU2X21hc2szX2ZubWFkZF9wZChfX20yNTZkLCBfX20yNTZkLCBfX20yNTZkLCBfX21tYXNrOCk7
DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2ZubWFkZF9wZChfX21tYXNr
OCwgX19tMjU2ZCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wg
X21tX21hc2tfZm5tYWRkX3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4
dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFzazNfZm5tYWRkX3BzKF9fbTEyOCwgX19tMTI4
LCBfX20xMjgsIF9fbW1hc2s4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pf
Zm5tYWRkX3BzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20y
NTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19mbm1hZGRfcHMoX19tMjU2LCBfX21tYXNrOCwgX19t
MjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrM19mbm1h
ZGRfcHMoX19tMjU2LCBfX20yNTYsIF9fbTI1NiwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbTI1NiAg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9mbm1hZGRfcHMoX19tbWFzazgsIF9fbTI1NiwgX19tMjU2
LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2ZubXN1Yl9wZChf
X20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9f
Y2RlY2wgX21tX21hc2szX2ZubXN1Yl9wZChfX20xMjhkLCBfX20xMjhkLCBfX20xMjhkLCBfX21t
YXNrOCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X2ZubXN1Yl9wZChfX21t
YXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfZm5tc3ViX3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBfX20y
NTZkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFzazNfZm5tc3ViX3BkKF9f
bTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQsIF9fbW1hc2s4KTsNCmV4dGVybiBfX20yNTZkICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfZm5tc3ViX3BkKF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkLCBf
X20yNTZkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19mbm1zdWJfcHMoX19t
MTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNs
IF9tbV9tYXNrM19mbm1zdWJfcHMoX19tMTI4LCBfX20xMjgsIF9fbTEyOCwgX19tbWFzazgpOw0K
ZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9mbm1zdWJfcHMoX19tbWFzazgsIF9f
bTEyOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX2ZubXN1Yl9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1Nik7DQpleHRlcm4g
X19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2szX2ZubXN1Yl9wcyhfX20yNTYsIF9fbTI1Niwg
X19tMjU2LCBfX21tYXNrOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6
X2ZubXN1Yl9wcyhfX21tYXNrOCwgX19tMjU2LCBfX20yNTYsIF9fbTI1Nik7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tX2ZwY2xhc3NfcGRfbWFzayhfX20xMjhkLCBpbnQpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2ZwY2xhc3NfcGRfbWFzayhfX21tYXNrOCwgX19t
MTI4ZCwgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfZnBjbGFzc19wZF9t
YXNrKF9fbTI1NmQsIGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X21hc2tf
ZnBjbGFzc19wZF9tYXNrKF9fbW1hc2s4LCBfX20yNTZkLCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4
ICBfX2NkZWNsIF9tbV9mcGNsYXNzX3BzX21hc2soX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbW1h
c2s4ICBfX2NkZWNsIF9tbV9tYXNrX2ZwY2xhc3NfcHNfbWFzayhfX21tYXNrOCwgX19tMTI4LCBp
bnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9mcGNsYXNzX3BzX21hc2soX19t
MjU2LCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2ZwY2xhc3Nf
cHNfbWFzayhfX21tYXNrOCwgX19tMjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9nZXRleHBfcGQoX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21h
c2tfZ2V0ZXhwX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhk
ICAgX19jZGVjbCBfbW1fbWFza3pfZ2V0ZXhwX3BkKF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVy
biBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfZ2V0ZXhwX3BkKF9fbTI1NmQpOw0KZXh0ZXJuIF9f
bTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2dldGV4cF9wZChfX20yNTZkLCBfX21tYXNrOCwg
X19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2dldGV4cF9w
ZChfX21tYXNrOCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX2dldGV4
cF9wcyhfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2dldGV4cF9w
cyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9t
bV9tYXNrel9nZXRleHBfcHMoX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9f
Y2RlY2wgX21tMjU2X2dldGV4cF9wcyhfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX2dldGV4cF9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJu
IF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9nZXRleHBfcHMoX19tbWFzazgsIF9fbTI1
Nik7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX2dldG1hbnRfcGQoX19tMTI4ZCwgaW50
LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2dldG1hbnRfcGQoX19t
MTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIGludCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19j
ZGVjbCBfbW1fbWFza3pfZ2V0bWFudF9wZChfX21tYXNrOCwgX19tMTI4ZCwgaW50LCBpbnQpOw0K
ZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9nZXRtYW50X3BkKF9fbTI1NmQsIGludCwg
aW50KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19nZXRtYW50X3BkKF9f
bTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBpbnQsIGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X2dldG1hbnRfcGQoX19tbWFzazgsIF9fbTI1NmQsIGludCwgaW50
KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fZ2V0bWFudF9wcyhfX20xMjgsIGludCwg
aW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19nZXRtYW50X3BzKF9fbTEy
OCwgX19tbWFzazgsIF9fbTEyOCwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNs
IF9tbV9tYXNrel9nZXRtYW50X3BzKF9fbW1hc2s4LCBfX20xMjgsIGludCwgaW50KTsNCmV4dGVy
biBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfZ2V0bWFudF9wcyhfX20yNTYsIGludCwgaW50KTsN
CmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19nZXRtYW50X3BzKF9fbTI1Niwg
X19tbWFzazgsIF9fbTI1NiwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrel9nZXRtYW50X3BzKF9fbW1hc2s4LCBfX20yNTYsIGludCwgaW50KTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fbW1hc2tfaTMyZ2F0aGVyX2VwaTMyKF9fbTEyOGksIF9f
bW1hc2s4LCBfX20xMjhpLCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbW1hc2tfaTMyZ2F0aGVyX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4
LCBfX20yNTZpLCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbW1hc2tfaTMyZ2F0aGVyX2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhp
LCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfbW1hc2tfaTMyZ2F0aGVyX2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20xMjhpLCB2b2lk
IGNvbnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbW1hc2tf
aTMyZ2F0aGVyX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhpLCB2b2lkIGNvbnN0KiwgY29u
c3QgaW50KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbW1hc2tfaTMyZ2F0aGVy
X3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20xMjhpLCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsN
CmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbW1hc2tfaTMyZ2F0aGVyX3BzKF9fbTEyOCwg
X19tbWFzazgsIF9fbTEyOGksIHZvaWQgY29uc3QqLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1
NiAgICBfX2NkZWNsIF9tbTI1Nl9tbWFza19pMzJnYXRoZXJfcHMoX19tMjU2LCBfX21tYXNrOCwg
X19tMjU2aSwgdm9pZCBjb25zdCosIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2Rl
Y2wgX21tX2kzMnNjYXR0ZXJfZXBpMzIodm9pZCosIF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGlu
dCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tfaTMyc2NhdHRlcl9lcGkzMih2
b2lkKiwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gdm9p
ZCAgICAgIF9fY2RlY2wgX21tMjU2X2kzMnNjYXR0ZXJfZXBpMzIodm9pZCosIF9fbTI1NmksIF9f
bTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tf
aTMyc2NhdHRlcl9lcGkzMih2b2lkKiwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGNvbnN0
IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX2kzMnNjYXR0ZXJfZXBpNjQodm9p
ZCosIF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2Rl
Y2wgX21tX21hc2tfaTMyc2NhdHRlcl9lcGk2NCh2b2lkKiwgX19tbWFzazgsIF9fbTEyOGksIF9f
bTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X2kzMnNj
YXR0ZXJfZXBpNjQodm9pZCosIF9fbTEyOGksIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4g
dm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfaTMyc2NhdHRlcl9lcGk2NCh2b2lkKiwgX19t
bWFzazgsIF9fbTEyOGksIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9f
Y2RlY2wgX21tX2kzMnNjYXR0ZXJfcGQodm9pZCosIF9fbTEyOGksIF9fbTEyOGQsIGNvbnN0IGlu
dCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tfaTMyc2NhdHRlcl9wZCh2b2lk
KiwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGQsIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAg
ICAgIF9fY2RlY2wgX21tMjU2X2kzMnNjYXR0ZXJfcGQodm9pZCosIF9fbTEyOGksIF9fbTI1NmQs
IGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfaTMyc2Nh
dHRlcl9wZCh2b2lkKiwgX19tbWFzazgsIF9fbTEyOGksIF9fbTI1NmQsIGNvbnN0IGludCk7DQpl
eHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX2kzMnNjYXR0ZXJfcHModm9pZCosIF9fbTEyOGks
IF9fbTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19p
MzJzY2F0dGVyX3BzKHZvaWQqLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4LCBjb25zdCBpbnQp
Ow0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9pMzJzY2F0dGVyX3BzKHZvaWQqLCBf
X20yNTZpLCBfX20yNTYsIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21t
MjU2X21hc2tfaTMyc2NhdHRlcl9wcyh2b2lkKiwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1Niwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbW1hc2tfaTY0Z2F0aGVy
X2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCB2b2lkIGNvbnN0KiwgY29uc3QgaW50
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW0yNTZfbW1hc2tfaTY0Z2F0aGVyX2VwaTMy
KF9fbTEyOGksIF9fbW1hc2s4LCBfX20yNTZpLCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsNCmV4
dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbW1hc2tfaTY0Z2F0aGVyX2VwaTY0KF9fbTEyOGks
IF9fbW1hc2s4LCBfX20xMjhpLCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbW1hc2tfaTY0Z2F0aGVyX2VwaTY0KF9fbTI1NmksIF9fbW1h
c2s4LCBfX20yNTZpLCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhkICAg
X19jZGVjbCBfbW1fbW1hc2tfaTY0Z2F0aGVyX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhp
LCB2b2lkIGNvbnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0y
NTZfbW1hc2tfaTY0Z2F0aGVyX3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZpLCB2b2lkIGNv
bnN0KiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbW1hc2tfaTY0
Z2F0aGVyX3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOGksIHZvaWQgY29uc3QqLCBjb25zdCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbTI1Nl9tbWFza19pNjRnYXRoZXJfcHMo
X19tMTI4LCBfX21tYXNrOCwgX19tMjU2aSwgdm9pZCBjb25zdCosIGNvbnN0IGludCk7DQpleHRl
cm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX2k2NHNjYXR0ZXJfZXBpMzIodm9pZCosIF9fbTEyOGks
IF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tf
aTY0c2NhdHRlcl9lcGkzMih2b2lkKiwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGNvbnN0
IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X2k2NHNjYXR0ZXJfZXBpMzIo
dm9pZCosIF9fbTI1NmksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfaTY0c2NhdHRlcl9lcGkzMih2b2lkKiwgX19tbWFzazgsIF9fbTI1
NmksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX2k2
NHNjYXR0ZXJfZXBpNjQodm9pZCosIF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRl
cm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tfaTY0c2NhdHRlcl9lcGk2NCh2b2lkKiwgX19t
bWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9f
Y2RlY2wgX21tMjU2X2k2NHNjYXR0ZXJfZXBpNjQodm9pZCosIF9fbTI1NmksIF9fbTI1NmksIGNv
bnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfaTY0c2NhdHRl
cl9lcGk2NCh2b2lkKiwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGNvbnN0IGludCk7DQpl
eHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX2k2NHNjYXR0ZXJfcGQodm9pZCosIF9fbTEyOGks
IF9fbTEyOGQsIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tf
aTY0c2NhdHRlcl9wZCh2b2lkKiwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGQsIGNvbnN0IGlu
dCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X2k2NHNjYXR0ZXJfcGQodm9pZCos
IF9fbTI1NmksIF9fbTI1NmQsIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wg
X21tMjU2X21hc2tfaTY0c2NhdHRlcl9wZCh2b2lkKiwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1
NmQsIGNvbnN0IGludCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX2k2NHNjYXR0ZXJf
cHModm9pZCosIF9fbTEyOGksIF9fbTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiB2b2lkICAgICAg
X19jZGVjbCBfbW1fbWFza19pNjRzY2F0dGVyX3BzKHZvaWQqLCBfX21tYXNrOCwgX19tMTI4aSwg
X19tMTI4LCBjb25zdCBpbnQpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9pNjRz
Y2F0dGVyX3BzKHZvaWQqLCBfX20yNTZpLCBfX20xMjgsIGNvbnN0IGludCk7DQpleHRlcm4gdm9p
ZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfaTY0c2NhdHRlcl9wcyh2b2lkKiwgX19tbWFzazgs
IF9fbTI1NmksIF9fbTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBf
bW0yNTZfaW5zZXJ0ZjMyeDQoX19tMjU2LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMjU2ICAg
IF9fY2RlY2wgX21tMjU2X21hc2tfaW5zZXJ0ZjMyeDQoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2
LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2lu
c2VydGYzMng0KF9fbW1hc2s4LCBfX20yNTYsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20yNTZk
ICAgX19jZGVjbCBfbW0yNTZfaW5zZXJ0ZjY0eDIoX19tMjU2ZCwgX19tMTI4ZCwgaW50KTsNCmV4
dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19pbnNlcnRmNjR4MihfX20yNTZkLCBf
X21tYXNrOCwgX19tMjU2ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVj
bCBfbW0yNTZfbWFza3pfaW5zZXJ0ZjY0eDIoX19tbWFzazgsIF9fbTI1NmQsIF9fbTEyOGQsIGlu
dCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X2luc2VydGkzMng0KF9fbTI1Nmks
IF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfaW5z
ZXJ0aTMyeDQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTEyOGksIGludCk7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2luc2VydGkzMng0KF9fbW1hc2s4LCBf
X20yNTZpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9p
bnNlcnRpNjR4MihfX20yNTZpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX2luc2VydGk2NHgyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBf
X20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9pbnNl
cnRpNjR4MihfX21tYXNrOCwgX19tMjU2aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fbWFza19sb2FkX2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCB2b2lkIGNv
bnN0Kik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2xvYWRfZXBpMzIoX19t
bWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a19sb2FkX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2xvYWRfZXBpMzIoX19tbWFzazgsIHZvaWQgY29u
c3QqKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19sb2FkX2VwaTY0KF9fbTEy
OGksIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21t
X21hc2t6X2xvYWRfZXBpNjQoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19sb2FkX2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCB2b2lk
IGNvbnN0Kik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2xvYWRfZXBp
NjQoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza19sb2FkX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19t
MTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X2xvYWRfcGQoX19tbWFzazgsIHZvaWQgY29uc3QqKTsN
CmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19sb2FkX3BkKF9fbTI1NmQsIF9f
bW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X2xvYWRfcGQoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjggICAgX19j
ZGVjbCBfbW1fbWFza19sb2FkX3BzKF9fbTEyOCwgX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4
dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfbG9hZF9wcyhfX21tYXNrOCwgdm9pZCBj
b25zdCopOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2xvYWRfcHMoX19t
MjU2LCBfX21tYXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrel9sb2FkX3BzKF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX2xvYWR1X2VwaTE2KHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fbWFza19sb2FkdV9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgdm9pZCBj
b25zdCopOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9sb2FkdV9lcGkxNihf
X21tYXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9s
b2FkdV9lcGkxNih2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X21hc2tfbG9hZHVfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCB2b2lkIGNvbnN0Kik7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X2xvYWR1X2VwaTE2KF9fbW1hc2sxNiwg
dm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9sb2FkdV9lcGkzMih2
b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbG9hZHVfZXBp
MzIoX19tMTI4aSwgX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbWFza3pfbG9hZHVfZXBpMzIoX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVy
biBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbG9hZHVfZXBpMzIodm9pZCBjb25zdCopOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2xvYWR1X2VwaTMyKF9fbTI1NmksIF9f
bW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X2xvYWR1X2VwaTMyKF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX2xvYWR1X2VwaTY0KHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fbWFza19sb2FkdV9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgdm9pZCBjb25z
dCopOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9sb2FkdV9lcGk2NChfX21t
YXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9sb2Fk
dV9lcGk2NCh2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2tfbG9hZHVfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbG9hZHVfZXBpNjQoX19tbWFzazgsIHZvaWQg
Y29uc3QqKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbG9hZHVfZXBpOCh2b2lkIGNv
bnN0Kik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbG9hZHVfZXBpOChfX20x
MjhpLCBfX21tYXNrMTYsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW1fbWFza3pfbG9hZHVfZXBpOChfX21tYXNrMTYsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbG9hZHVfZXBpOCh2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfbG9hZHVfZXBpOChfX20yNTZpLCBfX21tYXNrMzIs
IHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbG9h
ZHVfZXBpOChfX21tYXNrMzIsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFza19sb2FkdV9wZChfX20xMjhkLCBfX21tYXNrOCwgdm9pZCBjb25zdCopOw0KZXh0
ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9sb2FkdV9wZChfX21tYXNrOCwgdm9pZCBj
b25zdCopOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2xvYWR1X3BkKF9f
bTI1NmQsIF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wg
X21tMjU2X21hc2t6X2xvYWR1X3BkKF9fbW1hc2s4LCB2b2lkIGNvbnN0Kik7DQpleHRlcm4gX19t
MTI4ICAgIF9fY2RlY2wgX21tX21hc2tfbG9hZHVfcHMoX19tMTI4LCBfX21tYXNrOCwgdm9pZCBj
b25zdCopOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9sb2FkdV9wcyhfX21t
YXNrOCwgdm9pZCBjb25zdCopOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X2xvYWR1X3BzKF9fbTI1NiwgX19tbWFzazgsIHZvaWQgY29uc3QqKTsNCmV4dGVybiBfX20yNTYg
ICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbG9hZHVfcHMoX19tbWFzazgsIHZvaWQgY29uc3QqKTsN
CmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbHpjbnRfZXBpMzIoX19tMTI4aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbHpjbnRfZXBpMzIoX19tMTI4aSwgX19tbWFz
azgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9semNudF9l
cGkzMihfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X2x6Y250X2VwaTMyKF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX2x6Y250X2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbHpjbnRfZXBpMzIoX19tbWFzazgsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9semNudF9lcGk2NChfX20xMjhpKTsNCmV4
dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19semNudF9lcGk2NChfX20xMjhpLCBfX21t
YXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X2x6Y250
X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfbHpjbnRfZXBpNjQoX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X21hc2tfbHpjbnRfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9semNudF9lcGk2NChfX21tYXNrOCwgX19tMjU2
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbWFkZF9lcGkxNihfX20xMjhp
LCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X21hZGRfZXBpMTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJu
IF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX21hZGRfZXBpMTYoX19tMjU2aSwgX19tbWFz
azgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrel9tYWRkX2VwaTE2KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW1fbWFza19tYWRkdWJzX2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBf
X20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfbWFk
ZHVic19lcGkxNihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X21hc2tfbWFkZHVic19lcGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9t
YWRkdWJzX2VwaTE2KF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2tfbWF4X2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhp
LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfbWF4X2VwaTE2
KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfbWFza19tYXhfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZp
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbWF4X2VwaTE2KF9fbW1h
c2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2tfbWF4X2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfbWF4X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhp
LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19tYXhfZXBp
MzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tYXhfZXBpMzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX21heF9lcGk2NChfX20xMjhp
LCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X21heF9lcGk2NChfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21heF9lcGk2NChfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVy
biBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19tYXhfZXBpNjQoX19tMjU2aSwgX19tbWFz
azgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrel9tYXhfZXBpNjQoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXhfZXBpNjQoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbWF4X2VwaTgoX19tMTI4aSwgX19tbWFzazE2LCBf
X20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfbWF4
X2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfbWFza19tYXhfZXBpOChfX20yNTZpLCBfX21tYXNrMzIsIF9fbTI1NmksIF9f
bTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tYXhfZXBpOChf
X21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrX21heF9lcHUxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X21heF9lcHUxNihfX21tYXNrOCwgX19t
MTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfbWF4
X2VwdTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X21heF9lcHUxNihfX21tYXNrMTYsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX21heF9lcHUzMihf
X20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tX21hc2t6X21heF9lcHUzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfbWF4X2VwdTMyKF9fbTI1NmksIF9f
bW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfbWFza3pfbWF4X2VwdTMyKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza19tYXhfZXB1NjQoX19tMTI4aSwgX19tbWFzazgsIF9f
bTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9tYXhf
ZXB1NjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXhfZXB1NjQoX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfbWF4X2VwdTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbWF4X2VwdTY0
KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfbWF4X2VwdTY0KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXNrX21heF9lcHU4KF9fbTEyOGksIF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X21heF9lcHU4KF9fbW1hc2sx
NiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2tfbWF4X2VwdTgoX19tMjU2aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbWF4X2VwdTgoX19tbWFzazMyLCBfX20y
NTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19tYXhfcGQo
X19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBf
X2NkZWNsIF9tbV9tYXNrel9tYXhfcGQoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0
ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX21heF9wZChfX20yNTZkLCBfX21tYXNr
OCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X21heF9wZChfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAg
IF9fY2RlY2wgX21tX21hc2tfbWF4X3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4
KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfbWF4X3BzKF9fbW1hc2s4LCBf
X20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfbWF4
X3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgICAg
X19jZGVjbCBfbW0yNTZfbWFza3pfbWF4X3BzKF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1Nik7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbWluX2VwaTE2KF9fbTEyOGksIF9fbW1h
c2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a3pfbWluX2VwaTE2KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19taW5fZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20y
NTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbWlu
X2VwaTE2KF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tX21hc2tfbWluX2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfbWluX2VwaTMyKF9fbW1h
c2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bWFza19taW5fZXBpMzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9taW5fZXBpMzIoX19tbWFzazgsIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX21pbl9l
cGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2t6X21pbl9lcGk2NChfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21pbl9lcGk2NChfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19taW5fZXBpNjQoX19t
MjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrel9taW5fZXBpNjQoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9taW5fZXBpNjQoX19tMjU2aSwgX19tMjU2
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbWluX2VwaTgoX19tMTI4aSwg
X19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW1fbWFza3pfbWluX2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19taW5fZXBpOChfX20yNTZpLCBfX21tYXNrMzIs
IF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
el9taW5fZXBpOChfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrX21pbl9lcHUxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwg
X19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X21pbl9lcHUxNihf
X21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21t
MjU2X21hc2tfbWluX2VwdTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X21pbl9lcHUxNihfX21tYXNr
MTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
X21pbl9lcHUzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X21pbl9lcHUzMihfX21tYXNrOCwgX19tMTI4aSwg
X19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfbWluX2VwdTMy
KF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfbWFza3pfbWluX2VwdTMyKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZp
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19taW5fZXB1NjQoX19tMTI4aSwg
X19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrel9taW5fZXB1NjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbV9taW5fZXB1NjQoX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfbWluX2VwdTY0KF9fbTI1NmksIF9fbW1hc2s4
LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a3pfbWluX2VwdTY0KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWluX2VwdTY0KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX21pbl9lcHU4KF9fbTEyOGksIF9fbW1hc2sxNiwgX19t
MTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X21pbl9l
cHU4KF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfbWluX2VwdTgoX19tMjU2aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20y
NTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbWluX2VwdTgoX19t
bWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza19taW5fcGQoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJu
IF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9taW5fcGQoX19tbWFzazgsIF9fbTEyOGQsIF9f
bTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX21pbl9wZChfX20y
NTZkLCBfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2Rl
Y2wgX21tMjU2X21hc2t6X21pbl9wZChfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRl
cm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfbWluX3BzKF9fbTEyOCwgX19tbWFzazgsIF9f
bTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfbWluX3Bz
KF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21t
MjU2X21hc2tfbWluX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVy
biBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbWluX3BzKF9fbW1hc2s4LCBfX20yNTYs
IF9fbTI1Nik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbW92X2VwaTE2KF9f
bTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza3pfbW92X2VwaTE2KF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfbWFza19tb3ZfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbW92X2VwaTE2KF9fbW1hc2sx
NiwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbW92X2VwaTMy
KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW1fbWFza3pfbW92X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfbWFza19tb3ZfZXBpMzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tb3ZfZXBpMzIoX19tbWFz
azgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX21vdl9lcGk2
NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X21vdl9lcGk2NChfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X21hc2tfbW92X2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZp
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbW92X2VwaTY0KF9fbW1h
c2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19tb3ZfZXBp
OChfX20xMjhpLCBfX21tYXNrMTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9tYXNrel9tb3ZfZXBpOChfX21tYXNrMTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX21vdl9lcGk4KF9fbTI1NmksIF9fbW1hc2szMiwgX19tMjU2
aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X21vdl9lcGk4KF9fbW1h
c2szMiwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfbW92X3Bk
KF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBf
bW1fbWFza3pfbW92X3BkKF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTZkICAgX19j
ZGVjbCBfbW0yNTZfbWFza19tb3ZfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0
ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tb3ZfcGQoX19tbWFzazgsIF9fbTI1
NmQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX21vdl9wcyhfX20xMjgsIF9f
bW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9tb3Zf
cHMoX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21h
c2tfbW92X3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ICAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X21vdl9wcyhfX21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX20x
MjhkICAgX19jZGVjbCBfbW1fbWFza19tb3ZlZHVwX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20x
MjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfbW92ZWR1cF9wZChfX21t
YXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tfbW92
ZWR1cF9wZChfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X21vdmVkdXBfcGQoX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJu
IF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX21vdmVoZHVwX3BzKF9fbTEyOCwgX19tbWFzazgs
IF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X21vdmVoZHVwX3Bz
KF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X21vdmVoZHVwX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ICAg
IF9fY2RlY2wgX21tMjU2X21hc2t6X21vdmVoZHVwX3BzKF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0
ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX21vdmVsZHVwX3BzKF9fbTEyOCwgX19tbWFz
azgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X21vdmVsZHVw
X3BzKF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX21vdmVsZHVwX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMjU2
ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X21vdmVsZHVwX3BzKF9fbW1hc2s4LCBfX20yNTYpOw0K
ZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tb3ZlcGkxNl9tYXNrKF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9tbTI1Nl9tb3ZlcGkxNl9tYXNrKF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tb3ZlcGkzMl9tYXNrKF9fbTEyOGkpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tb3ZlcGkzMl9tYXNrKF9fbTI1NmkpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tb3ZlcGk2NF9tYXNrKF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tb3ZlcGk2NF9tYXNrKF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bW1hc2sxNiBfX2NkZWNsIF9tbV9tb3ZlcGk4X21hc2soX19tMTI4aSk7DQpleHRlcm4gX19tbWFz
azMyIF9fY2RlY2wgX21tMjU2X21vdmVwaThfbWFzayhfX20yNTZpKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fbW92bV9lcGkxNihfX21tYXNrOCk7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X21vdm1fZXBpMTYoX19tbWFzazE2KTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbW92bV9lcGkzMihfX21tYXNrOCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wg
X21tMjU2X21vdm1fZXBpMzIoX19tbWFzazgpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tb3ZtX2VwaTY0KF9fbW1hc2s4KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bW92bV9lcGk2NChfX21tYXNrOCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21vdm1f
ZXBpOChfX21tYXNrMTYpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tb3ZtX2Vw
aTgoX19tbWFzazMyKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19tdWxfZXBp
MzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrel9tdWxfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX211bF9lcGkzMihfX20yNTZp
LCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wg
X21tMjU2X21hc2t6X211bF9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbXVsX2VwdTMyKF9fbTEyOGksIF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
bXVsX2VwdTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfbWFza19tdWxfZXB1MzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tdWxfZXB1
MzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9tYXNrX211bF9wZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpl
eHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X211bF9wZChfX21tYXNrOCwgX19tMTI4
ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tfbXVsX3Bk
KF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTZkICAg
X19jZGVjbCBfbW0yNTZfbWFza3pfbXVsX3BkKF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkKTsN
CmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19tdWxfcHMoX19tMTI4LCBfX21tYXNr
OCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9t
dWxfcHMoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVj
bCBfbW0yNTZfbWFza19tdWxfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2LCBfX20yNTYpOw0K
ZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tdWxfcHMoX19tbWFzazgsIF9f
bTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19tdWxoaV9l
cGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2t6X211bGhpX2VwaTE2KF9fbW1hc2s4LCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19tdWxoaV9lcGkxNihf
X20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrel9tdWxoaV9lcGkxNihfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX211bGhpX2VwdTE2KF9fbTEy
OGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVj
bCBfbW1fbWFza3pfbXVsaGlfZXB1MTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX211bGhpX2VwdTE2KF9fbTI1NmksIF9f
bW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21t
MjU2X21hc2t6X211bGhpX2VwdTE2KF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbXVsaHJzX2VwaTE2KF9fbTEyOGksIF9fbW1h
c2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a3pfbXVsaHJzX2VwaTE2KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19tdWxocnNfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2
LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a3pfbXVsaHJzX2VwaTE2KF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2tfbXVsbG9fZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9f
bTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9tdWxs
b19lcGkxNihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfbXVsbG9fZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZp
LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfbXVsbG9f
ZXBpMTYoX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbWFza19tdWxsb19lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X211bGxvX2VwaTMyKF9f
bW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfbWFza19tdWxsb19lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X211bGxvX2VwaTMyKF9fbW1h
c2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a19tdWxsb19lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X211bGxvX2VwaTY0KF9fbW1hc2s4LCBfX20x
MjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbXVsbG9fZXBpNjQo
X19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tf
bXVsbG9fZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJu
IF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tdWxsb19lcGk2NChfX21tYXNrOCwgX19t
MjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X211bGxvX2Vw
aTY0KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
X29yX2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfb3JfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX29yX2VwaTMyKF9f
bTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfb3JfZXBpMzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX29yX2VwaTY0KF9fbTEyOGksIF9fbW1h
c2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a3pfb3JfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX29yX2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZp
LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfb3JfZXBp
NjQoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9tYXNrX29yX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4
dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfb3JfcGQoX19tbWFzazgsIF9fbTEyOGQs
IF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX29yX3BkKF9f
bTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTZkICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfb3JfcGQoX19tbWFzazgsIF9fbTI1NmQsIF9fbTI1NmQpOw0KZXh0
ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX29yX3BzKF9fbTEyOCwgX19tbWFzazgsIF9f
bTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfb3JfcHMo
X19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0y
NTZfbWFza19vcl9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1Nik7DQpleHRlcm4g
X19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X29yX3BzKF9fbW1hc2s4LCBfX20yNTYsIF9f
bTI1Nik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfcGFja3NfZXBpMTYoX19t
MTI4aSwgX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbWFza3pfcGFja3NfZXBpMTYoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19wYWNrc19lcGkxNihfX20yNTZp
LCBfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrel9wYWNrc19lcGkxNihfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3BhY2tzX2VwaTMyKF9fbTEyOGksIF9f
bW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza3pfcGFja3NfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3BhY2tzX2VwaTMyKF9fbTI1NmksIF9fbW1hc2sx
NiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X3BhY2tzX2VwaTMyKF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2tfcGFja3VzX2VwaTE2KF9fbTEyOGksIF9fbW1hc2sxNiwg
X19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3Bh
Y2t1c19lcGkxNihfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3BhY2t1c19lcGkxNihfX20yNTZpLCBfX21tYXNrMzIsIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9w
YWNrdXNfZXBpMTYoX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fbWFza19wYWNrdXNfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9wYWNrdXNf
ZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX3BhY2t1c19lcGkzMihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9wYWNrdXNf
ZXBpMzIoX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhkICAgX19j
ZGVjbCBfbW1fbWFza19wZXJtdXRlX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBjb25z
dCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9wZXJtdXRlX3BkKF9f
bW1hc2s4LCBfX20xMjhkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrX3Blcm11dGVfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQsIGNvbnN0IGlu
dCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3Blcm11dGVfcGQoX19t
bWFzazgsIF9fbTI1NmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21t
X21hc2tfcGVybXV0ZV9wcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIGNvbnN0IGludCk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3Blcm11dGVfcHMoX19tbWFzazgsIF9f
bTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19w
ZXJtdXRlX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgY29uc3QgaW50KTsNCmV4dGVybiBf
X20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfcGVybXV0ZV9wcyhfX21tYXNrOCwgX19tMjU2
LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX3Blcm11dGV2
YXJfcGQoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEy
OGQgICBfX2NkZWNsIF9tbV9tYXNrel9wZXJtdXRldmFyX3BkKF9fbW1hc2s4LCBfX20xMjhkLCBf
X20xMjhpKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19wZXJtdXRldmFy
X3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZk
ICAgX19jZGVjbCBfbW0yNTZfbWFza3pfcGVybXV0ZXZhcl9wZChfX21tYXNrOCwgX19tMjU2ZCwg
X19tMjU2aSk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfcGVybXV0ZXZhcl9w
cyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOCAgICBf
X2NkZWNsIF9tbV9tYXNrel9wZXJtdXRldmFyX3BzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Blcm11dGV2YXJfcHMoX19t
MjU2LCBfX21tYXNrOCwgX19tMjU2LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVj
bCBfbW0yNTZfbWFza3pfcGVybXV0ZXZhcl9wcyhfX21tYXNrOCwgX19tMjU2LCBfX20yNTZpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19wZXJtdXRleF9lcGk2NChfX20y
NTZpLCBfX21tYXNrOCwgX19tMjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfcGVybXV0ZXhfZXBpNjQoX19tbWFzazgsIF9fbTI1NmksIGNvbnN0
IGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X3Blcm11dGV4X2VwaTY0KF9f
bTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tf
cGVybXV0ZXhfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQsIGNvbnN0IGludCk7DQpleHRl
cm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3Blcm11dGV4X3BkKF9fbW1hc2s4LCBf
X20yNTZkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9wZXJt
dXRleF9wZChfX20yNTZkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrX3Blcm11dGV4MnZhcl9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2syX3Blcm11dGV4MnZhcl9l
cGkxNihfX20xMjhpLCBfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2t6X3Blcm11dGV4MnZhcl9lcGkxNihfX21tYXNrOCwgX19tMTI4
aSwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX3Blcm11
dGV4MnZhcl9lcGkxNihfX20xMjhpLCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19wZXJtdXRleDJ2YXJfZXBpMTYoX19tMjU2aSwgX19tbWFz
azE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bWFzazJfcGVybXV0ZXgydmFyX2VwaTE2KF9fbTI1NmksIF9fbTI1NmksIF9fbW1hc2sxNiwgX19t
MjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3Blcm11dGV4MnZh
cl9lcGkxNihfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9wZXJtdXRleDJ2YXJfZXBpMTYoX19tMjU2aSwgX19tMjU2
aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfcGVybXV0ZXgy
dmFyX2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFzazJfcGVybXV0ZXgydmFyX2VwaTMyKF9fbTEyOGksIF9f
bTEyOGksIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza3pfcGVybXV0ZXgydmFyX2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fcGVybXV0ZXgydmFyX2VwaTMyKF9f
bTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrX3Blcm11dGV4MnZhcl9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19t
MjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2syX3Blcm11dGV4MnZh
cl9lcGkzMihfX20yNTZpLCBfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3Blcm11dGV4MnZhcl9lcGkzMihfX21tYXNrOCwg
X19tMjU2aSwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21t
MjU2X3Blcm11dGV4MnZhcl9lcGkzMihfX20yNTZpLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19wZXJtdXRleDJ2YXJfZXBpNjQoX19tMTI4aSwg
X19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrMl9wZXJtdXRleDJ2YXJfZXBpNjQoX19tMTI4aSwgX19tMTI4aSwgX19tbWFzazgsIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9wZXJtdXRleDJ2YXJf
ZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEy
OGkgICBfX2NkZWNsIF9tbV9wZXJtdXRleDJ2YXJfZXBpNjQoX19tMTI4aSwgX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfcGVybXV0ZXgydmFy
X2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFzazJfcGVybXV0ZXgydmFyX2VwaTY0KF9fbTI1NmksIF9f
bTI1NmksIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfbWFza3pfcGVybXV0ZXgydmFyX2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfcGVybXV0ZXgydmFyX2Vw
aTY0KF9fbTI1NmksIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9tYXNrX3Blcm11dGV4MnZhcl9wZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4aSwgX19t
MTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2syX3Blcm11dGV4MnZhcl9w
ZChfX20xMjhkLCBfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAg
IF9fY2RlY2wgX21tX21hc2t6X3Blcm11dGV4MnZhcl9wZChfX21tYXNrOCwgX19tMTI4ZCwgX19t
MTI4aSwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX3Blcm11dGV4MnZh
cl9wZChfX20xMjhkLCBfX20xMjhpLCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVj
bCBfbW0yNTZfbWFza19wZXJtdXRleDJ2YXJfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1Nmks
IF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrMl9wZXJtdXRl
eDJ2YXJfcGQoX19tMjU2ZCwgX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9f
bTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9wZXJtdXRleDJ2YXJfcGQoX19tbWFzazgsIF9f
bTI1NmQsIF9fbTI1NmksIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1
Nl9wZXJtdXRleDJ2YXJfcGQoX19tMjU2ZCwgX19tMjU2aSwgX19tMjU2ZCk7DQpleHRlcm4gX19t
MTI4ICAgIF9fY2RlY2wgX21tX21hc2tfcGVybXV0ZXgydmFyX3BzKF9fbTEyOCwgX19tbWFzazgs
IF9fbTEyOGksIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2syX3Bl
cm11dGV4MnZhcl9wcyhfX20xMjgsIF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjgpOw0KZXh0ZXJu
IF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9wZXJtdXRleDJ2YXJfcHMoX19tbWFzazgsIF9f
bTEyOCwgX19tMTI4aSwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fcGVy
bXV0ZXgydmFyX3BzKF9fbTEyOCwgX19tMTI4aSwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAg
X19jZGVjbCBfbW0yNTZfbWFza19wZXJtdXRleDJ2YXJfcHMoX19tMjU2LCBfX21tYXNrOCwgX19t
MjU2aSwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFzazJfcGVy
bXV0ZXgydmFyX3BzKF9fbTI1NiwgX19tMjU2aSwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4g
X19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3Blcm11dGV4MnZhcl9wcyhfX21tYXNrOCwg
X19tMjU2LCBfX20yNTZpLCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1
Nl9wZXJtdXRleDJ2YXJfcHMoX19tMjU2LCBfX20yNTZpLCBfX20yNTYpOw0KZXh0ZXJuIF9fbTEy
OGkgICBfX2NkZWNsIF9tbV9tYXNrX3Blcm11dGV4dmFyX2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
cGVybXV0ZXh2YXJfZXBpMTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbV9wZXJtdXRleHZhcl9lcGkxNihfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19wZXJtdXRleHZhcl9lcGkxNihf
X20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrel9wZXJtdXRleHZhcl9lcGkxNihfX21tYXNrMTYsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9wZXJtdXRleHZhcl9l
cGkxNihfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bWFza19wZXJtdXRleHZhcl9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2
aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3Blcm11dGV4dmFyX2Vw
aTMyKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVj
bCBfbW0yNTZfcGVybXV0ZXh2YXJfZXBpMzIoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfcGVybXV0ZXh2YXJfZXBpNjQoX19tMjU2aSwgX19t
bWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel9wZXJtdXRleHZhcl9lcGk2NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X3Blcm11dGV4dmFyX2VwaTY0KF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Blcm11dGV4
dmFyX3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZkKTsNCmV4dGVybiBfX20y
NTZkICAgX19jZGVjbCBfbW0yNTZfbWFza3pfcGVybXV0ZXh2YXJfcGQoX19tbWFzazgsIF9fbTI1
NmksIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9wZXJtdXRleHZh
cl9wZChfX20yNTZpLCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZf
bWFza19wZXJtdXRleHZhcl9wcyhfX20yNTYsIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTYpOw0K
ZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9wZXJtdXRleHZhcl9wcyhfX21t
YXNrOCwgX19tMjU2aSwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZf
cGVybXV0ZXh2YXJfcHMoX19tMjU2aSwgX19tMjU2KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFza19yYW5nZV9wZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwg
aW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfcmFuZ2VfcGQoX19tbWFz
azgsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X3JhbmdlX3BkKF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2Rl
Y2wgX21tMjU2X21hc2tfcmFuZ2VfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1NmQsIF9fbTI1
NmQsIGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3JhbmdlX3Bk
KF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2Nk
ZWNsIF9tbTI1Nl9yYW5nZV9wZChfX20yNTZkLCBfX20yNTZkLCBpbnQpOw0KZXh0ZXJuIF9fbTEy
OCAgICBfX2NkZWNsIF9tbV9tYXNrX3JhbmdlX3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwg
X19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9yYW5nZV9w
cyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2Rl
Y2wgX21tX3JhbmdlX3BzKF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrX3JhbmdlX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgX19t
MjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9yYW5nZV9w
cyhfX21tYXNrOCwgX19tMjU2LCBfX20yNTYsIGludCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2Rl
Y2wgX21tMjU2X3JhbmdlX3BzKF9fbTI1NiwgX19tMjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQg
ICBfX2NkZWNsIF9tbV9tYXNrX3JjcDE0X3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkKTsN
CmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfcmNwMTRfcGQoX19tbWFzazgsIF9f
bTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9yY3AxNF9wZChfX20xMjhkKTsN
CmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19yY3AxNF9wZChfX20yNTZkLCBf
X21tYXNrOCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6
X3JjcDE0X3BkKF9fbW1hc2s4LCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBf
bW0yNTZfcmNwMTRfcGQoX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21h
c2tfcmNwMTRfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAg
X19jZGVjbCBfbW1fbWFza3pfcmNwMTRfcHMoX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19t
MTI4ICAgIF9fY2RlY2wgX21tX3JjcDE0X3BzKF9fbTEyOCk7DQpleHRlcm4gX19tMjU2ICAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfcmNwMTRfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2KTsNCmV4
dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfcmNwMTRfcHMoX19tbWFzazgsIF9f
bTI1Nik7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X3JjcDE0X3BzKF9fbTI1Nik7
DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfcmVkdWNlX3BkKF9fbTEyOGQsIF9f
bW1hc2s4LCBfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNr
el9yZWR1Y2VfcGQoX19tbWFzazgsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9f
Y2RlY2wgX21tX3JlZHVjZV9wZChfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrX3JlZHVjZV9wZChfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2ZCwgaW50
KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza3pfcmVkdWNlX3BkKF9fbW1h
c2s4LCBfX20yNTZkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9yZWR1
Y2VfcGQoX19tMjU2ZCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19y
ZWR1Y2VfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAg
ICBfX2NkZWNsIF9tbV9tYXNrel9yZWR1Y2VfcHMoX19tbWFzazgsIF9fbTEyOCwgaW50KTsNCmV4
dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fcmVkdWNlX3BzKF9fbTEyOCwgaW50KTsNCmV4dGVy
biBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19yZWR1Y2VfcHMoX19tMjU2LCBfX21tYXNr
OCwgX19tMjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9y
ZWR1Y2VfcHMoX19tbWFzazgsIF9fbTI1NiwgaW50KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVj
bCBfbW0yNTZfcmVkdWNlX3BzKF9fbTI1NiwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVj
bCBfbW1fbWFza19yb2xfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIGNvbnN0IGlu
dCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3JvbF9lcGkzMihfX21tYXNr
OCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fcm9s
X2VwaTMyKF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2tfcm9sX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9yb2xfZXBpMzIoX19tbWFzazgsIF9f
bTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X3JvbF9l
cGkzMihfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9t
YXNrX3JvbF9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4
dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfcm9sX2VwaTY0KF9fbW1hc2s4LCBfX20x
MjhpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9yb2xfZXBpNjQo
X19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a19yb2xfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3JvbF9lcGk2NChfX21tYXNrOCwgX19t
MjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfcm9sX2Vw
aTY0KF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2tfcm9sdl9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3JvbHZfZXBpMzIoX19tbWFzazgsIF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9yb2x2X2VwaTMyKF9f
bTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Jv
bHZfZXBpMzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9yb2x2X2VwaTMyKF9fbW1hc2s4LCBfX20yNTZp
LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfcm9sdl9lcGkzMihf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19yb2x2
X2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW1fbWFza3pfcm9sdl9lcGk2NChfX21tYXNrOCwgX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX3JvbHZfZXBpNjQoX19tMTI4aSwg
X19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfcm9sdl9lcGk2
NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X21hc2t6X3JvbHZfZXBpNjQoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9yb2x2X2VwaTY0KF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3Jvcl9lcGkzMihf
X20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fbWFza3pfcm9yX2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBjb25zdCBpbnQp
Ow0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9yb3JfZXBpMzIoX19tMTI4aSwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19yb3JfZXBpMzIoX19t
MjU2aSwgX19tbWFzazgsIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X3Jvcl9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgY29uc3QgaW50
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfcm9yX2VwaTMyKF9fbTI1NmksIGNv
bnN0IGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfcm9yX2VwaTY0KF9f
bTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBf
X2NkZWNsIF9tbV9tYXNrel9yb3JfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIGNvbnN0IGludCk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX3Jvcl9lcGk2NChfX20xMjhpLCBjb25zdCBp
bnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Jvcl9lcGk2NChfX20y
NTZpLCBfX21tYXNrOCwgX19tMjU2aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfcm9yX2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCBjb25zdCBpbnQp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9yb3JfZXBpNjQoX19tMjU2aSwgY29u
c3QgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19yb3J2X2VwaTMyKF9f
bTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19j
ZGVjbCBfbW1fbWFza3pfcm9ydl9lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX3JvcnZfZXBpMzIoX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfcm9ydl9lcGkzMihfX20yNTZp
LCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wg
X21tMjU2X21hc2t6X3JvcnZfZXBpMzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9yb3J2X2VwaTMyKF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3JvcnZfZXBpNjQoX19tMTI4aSwg
X19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrel9yb3J2X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fcm9ydl9lcGk2NChfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVy
biBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19yb3J2X2VwaTY0KF9fbTI1NmksIF9fbW1h
c2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZf
bWFza3pfcm9ydl9lcGk2NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X3JvcnZfZXBpNjQoX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfcm91bmRzY2FsZV9wZChfX20xMjhkLCBfX21t
YXNrOCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pf
cm91bmRzY2FsZV9wZChfX21tYXNrOCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAg
X19jZGVjbCBfbW1fcm91bmRzY2FsZV9wZChfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmQg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3JvdW5kc2NhbGVfcGQoX19tMjU2ZCwgX19tbWFzazgsIF9f
bTI1NmQsIGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3JvdW5k
c2NhbGVfcGQoX19tbWFzazgsIF9fbTI1NmQsIGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2Rl
Y2wgX21tMjU2X3JvdW5kc2NhbGVfcGQoX19tMjU2ZCwgaW50KTsNCmV4dGVybiBfX20xMjggICAg
X19jZGVjbCBfbW1fbWFza19yb3VuZHNjYWxlX3BzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwg
aW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfcm91bmRzY2FsZV9wcyhf
X21tYXNrOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9yb3Vu
ZHNjYWxlX3BzKF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZf
bWFza19yb3VuZHNjYWxlX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgaW50KTsNCmV4dGVy
biBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfcm91bmRzY2FsZV9wcyhfX21tYXNrOCwg
X19tMjU2LCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9yb3VuZHNjYWxl
X3BzKF9fbTI1NiwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19yc3Fy
dDE0X3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19j
ZGVjbCBfbW1fbWFza3pfcnNxcnQxNF9wZChfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19t
MjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tfcnNxcnQxNF9wZChfX20yNTZkLCBfX21tYXNrOCwg
X19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3JzcXJ0MTRf
cGQoX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNr
X3JzcXJ0MTRfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAg
X19jZGVjbCBfbW1fbWFza3pfcnNxcnQxNF9wcyhfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBf
X20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19yc3FydDE0X3BzKF9fbTI1NiwgX19tbWFzazgs
IF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3JzcXJ0MTRf
cHMoX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tf
c2NhbGVmX3BkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBf
X20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfc2NhbGVmX3BkKF9fbW1hc2s4LCBfX20xMjhkLCBf
X20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fc2NhbGVmX3BkKF9fbTEyOGQs
IF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NjYWxlZl9w
ZChfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAg
IF9fY2RlY2wgX21tMjU2X21hc2t6X3NjYWxlZl9wZChfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2
ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X3NjYWxlZl9wZChfX20yNTZkLCBf
X20yNTZkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19zY2FsZWZfcHMoX19t
MTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNs
IF9tbV9tYXNrel9zY2FsZWZfcHMoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBf
X20xMjggICAgX19jZGVjbCBfbW1fc2NhbGVmX3BzKF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBf
X20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19zY2FsZWZfcHMoX19tMjU2LCBfX21tYXNrOCwg
X19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9z
Y2FsZWZfcHMoX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgICAgX19j
ZGVjbCBfbW0yNTZfc2NhbGVmX3BzKF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20xMjhpICAg
X19jZGVjbCBfbW1fbWFza19zZXQxX2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBzaG9ydCk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NldDFfZXBpMTYoX19tbWFzazgsIHNo
b3J0KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zZXQxX2VwaTE2KF9f
bTI1NmksIF9fbW1hc2sxNiwgc2hvcnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel9zZXQxX2VwaTE2KF9fbW1hc2sxNiwgc2hvcnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBf
X2NkZWNsIF9tbV9tYXNrX3NldDFfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIGludCk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NldDFfZXBpMzIoX19tbWFzazgsIGludCk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfc2V0MV9lcGkzMihfX20yNTZp
LCBfX21tYXNrOCwgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
c2V0MV9lcGkzMihfX21tYXNrOCwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza19zZXQxX2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX2ludDY0KTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW1fbWFza3pfc2V0MV9lcGk2NChfX21tYXNrOCwgX19pbnQ2NCk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfc2V0MV9lcGk2NChfX20yNTZpLCBf
X21tYXNrOCwgX19pbnQ2NCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6
X3NldDFfZXBpNjQoX19tbWFzazgsIF9faW50NjQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9tYXNrX3NldDFfZXBpOChfX20xMjhpLCBfX21tYXNrMTYsIGNoYXIpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zZXQxX2VwaTgoX19tbWFzazE2LCBjaGFyKTsNCmV4
dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zZXQxX2VwaTgoX19tMjU2aSwgX19t
bWFzazMyLCBjaGFyKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc2V0
MV9lcGk4KF9fbW1hc2szMiwgY2hhcik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2tfc2h1ZmZsZV9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgaW50KTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfc2h1ZmZsZV9lcGkzMihfX21tYXNrOCwgX19t
MTI4aSwgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zaHVmZmxl
X2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zaHVmZmxlX2VwaTMyKF9fbW1hc2s4LCBfX20yNTZpLCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3NodWZmbGVfZXBpOChfX20x
MjhpLCBfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2Nk
ZWNsIF9tbV9tYXNrel9zaHVmZmxlX2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zaHVmZmxlX2VwaTgoX19tMjU2
aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVj
bCBfbW0yNTZfbWFza3pfc2h1ZmZsZV9lcGk4KF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSk7
DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfc2h1ZmZsZV9mMzJ4NChfX20y
NTYsIF9fbW1hc2s4LCBfX20yNTYsIF9fbTI1NiwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTYg
ICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc2h1ZmZsZV9mMzJ4NChfX21tYXNrOCwgX19tMjU2LCBf
X20yNTYsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X3NodWZm
bGVfZjMyeDQoX19tMjU2LCBfX20yNTYsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X21hc2tfc2h1ZmZsZV9mNjR4MihfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2
ZCwgX19tMjU2ZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZf
bWFza3pfc2h1ZmZsZV9mNjR4MihfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCwgY29uc3QgaW50
KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfc2h1ZmZsZV9mNjR4MihfX20yNTZk
LCBfX20yNTZkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX3NodWZmbGVfaTMyeDQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGNv
bnN0IGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NodWZmbGVf
aTMyeDQoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X3NodWZmbGVfaTMyeDQoX19tMjU2aSwgX19tMjU2aSwgY29u
c3QgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zaHVmZmxlX2k2
NHgyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zaHVmZmxlX2k2NHgyKF9fbW1hc2s4
LCBfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9zaHVmZmxlX2k2NHgyKF9fbTI1NmksIF9fbTI1NmksIGNvbnN0IGludCk7DQpleHRl
cm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfc2h1ZmZsZV9wZChfX20xMjhkLCBfX21tYXNr
OCwgX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFza3pfc2h1ZmZsZV9wZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza19zaHVmZmxlX3BkKF9f
bTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9f
bTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zaHVmZmxlX3BkKF9fbW1hc2s4LCBfX20yNTZk
LCBfX20yNTZkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNr
X3NodWZmbGVfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCk7
DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3NodWZmbGVfcHMoX19tbWFzazgs
IF9fbTEyOCwgX19tMTI4LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrX3NodWZmbGVfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2LCBfX20yNTYsIGNv
bnN0IGludCk7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NodWZmbGVf
cHMoX19tbWFzazgsIF9fbTI1NiwgX19tMjU2LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrX3NodWZmbGVoaV9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19t
MTI4aSwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfc2h1ZmZsZWhp
X2VwaTE2KF9fbW1hc2s4LCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX3NodWZmbGVoaV9lcGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1Nmks
IGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NodWZmbGVoaV9l
cGkxNihfX21tYXNrMTYsIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2tfc2h1ZmZsZWxvX2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBpbnQp
Ow0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zaHVmZmxlbG9fZXBpMTYoX19t
bWFzazgsIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2tfc2h1ZmZsZWxvX2VwaTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2aSwgaW50KTsNCmV4
dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc2h1ZmZsZWxvX2VwaTE2KF9fbW1h
c2sxNiwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19z
bGxfZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zbGxfZXBpMTYoX19tbWFzazgsIF9fbTEyOGksIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NsbF9lcGkxNihf
X20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrel9zbGxfZXBpMTYoX19tbWFzazE2LCBfX20yNTZpLCBfX20xMjhp
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19zbGxfZXBpMzIoX19tMTI4aSwg
X19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrel9zbGxfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NsbF9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwg
X19tMjU2aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6
X3NsbF9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX21hc2tfc2xsX2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBf
X20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfc2xsX2VwaTY0KF9f
bW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0y
NTZfbWFza19zbGxfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zbGxfZXBpNjQoX19tbWFzazgs
IF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3Ns
bGlfZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIHVuc2lnbmVkIGludCk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NsbGlfZXBpMTYoX19tbWFzazgsIF9fbTEy
OGksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tf
c2xsaV9lcGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIHVuc2lnbmVkIGludCk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NsbGlfZXBpMTYoX19tbWFzazE2
LCBfX20yNTZpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9t
YXNrX3NsbGlfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIHVuc2lnbmVkIGludCk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NsbGlfZXBpMzIoX19tbWFzazgs
IF9fbTEyOGksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X21hc2tfc2xsaV9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgdW5zaWduZWQgaW50
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc2xsaV9lcGkzMihfX21t
YXNrOCwgX19tMjU2aSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBf
bW1fbWFza19zbGxpX2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCB1bnNpZ25lZCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zbGxpX2VwaTY0KF9fbW1h
c2s4LCBfX20xMjhpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9t
bTI1Nl9tYXNrX3NsbGlfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIHVuc2lnbmVk
IGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NsbGlfZXBpNjQo
X19tbWFzazgsIF9fbTI1NmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tX21hc2tfc2xsdl9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NsbHZfZXBpMTYoX19tbWFz
azgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9zbGx2
X2VwaTE2KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrX3NsbHZfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc2xsdl9lcGkxNihfX21tYXNr
MTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9z
bGx2X2VwaTE2KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9t
bV9tYXNrX3NsbHZfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zbGx2X2VwaTMyKF9fbW1hc2s4LCBf
X20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19z
bGx2X2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc2xsdl9lcGkzMihfX21tYXNrOCwgX19tMjU2
aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc2xsdl9lcGk2
NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX21hc2t6X3NsbHZfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NsbHZfZXBpNjQoX19tMjU2
aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrel9zbGx2X2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19zcXJ0X3BkKF9fbTEyOGQsIF9fbW1hc2s4
LCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfc3FydF9wZChf
X21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tf
c3FydF9wZChfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9f
Y2RlY2wgX21tMjU2X21hc2t6X3NxcnRfcGQoX19tbWFzazgsIF9fbTI1NmQpOw0KZXh0ZXJuIF9f
bTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX3NxcnRfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4
KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfc3FydF9wcyhfX21tYXNrOCwg
X19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19zcXJ0X3BzKF9f
bTI1NiwgX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2
X21hc2t6X3NxcnRfcHMoX19tbWFzazgsIF9fbTI1Nik7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tX21hc2tfc3JhX2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfc3JhX2VwaTE2KF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a19zcmFfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20xMjhpKTsNCmV4dGVy
biBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc3JhX2VwaTE2KF9fbW1hc2sxNiwgX19t
MjU2aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc3JhX2Vw
aTMyKF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhp
ICAgX19jZGVjbCBfbW1fbWFza3pfc3JhX2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zcmFfZXBpMzIoX19tMjU2
aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrel9zcmFfZXBpMzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3NyYV9lcGk2NChfX20xMjhpLCBfX21tYXNr
OCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6
X3NyYV9lcGk2NChfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX3NyYV9lcGk2NChfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZp
ICAgX19jZGVjbCBfbW0yNTZfbWFza19zcmFfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1
NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zcmFf
ZXBpNjQoX19tbWFzazgsIF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9zcmFfZXBpNjQoX19tMjU2aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX21hc2tfc3JhaV9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwg
dW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfc3JhaV9l
cGkxNihfX21tYXNrOCwgX19tMTI4aSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfbWFza19zcmFpX2VwaTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2
aSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
c3JhaV9lcGkxNihfX21tYXNrMTYsIF9fbTI1NmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc3JhaV9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19t
MTI4aSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
c3JhaV9lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zcmFpX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBf
X20yNTZpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrel9zcmFpX2VwaTMyKF9fbW1hc2s4LCBfX20yNTZpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJu
IF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3NyYWlfZXBpNjQoX19tMTI4aSwgX19tbWFzazgs
IF9fbTEyOGksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21h
c2t6X3NyYWlfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIHVuc2lnbmVkIGludCk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX3NyYWlfZXBpNjQoX19tMTI4aSwgdW5zaWduZWQgaW50KTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zcmFpX2VwaTY0KF9fbTI1Nmks
IF9fbW1hc2s4LCBfX20yNTZpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrel9zcmFpX2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCB1bnNpZ25lZCBp
bnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9zcmFpX2VwaTY0KF9fbTI1Nmks
IHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc3Jhdl9l
cGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4
aSAgIF9fY2RlY2wgX21tX21hc2t6X3NyYXZfZXBpMTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9zcmF2X2VwaTE2KF9fbTEyOGksIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NyYXZfZXBpMTYo
X19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfbWFza3pfc3Jhdl9lcGkxNihfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9zcmF2X2VwaTE2KF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3NyYXZfZXBpMzIo
X19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBf
X2NkZWNsIF9tbV9tYXNrel9zcmF2X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zcmF2X2VwaTMyKF9fbTI1Nmks
IF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfbWFza3pfc3Jhdl9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc3Jhdl9lcGk2NChfX20xMjhpLCBfX21tYXNr
OCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6
X3NyYXZfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9zcmF2X2VwaTY0KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NyYXZfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9z
cmF2X2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfc3Jhdl9lcGk2NChfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20x
MjhpICAgX19jZGVjbCBfbW1fbWFza19zcmxfZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zcmxfZXBp
MTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX3NybF9lcGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zcmxfZXBpMTYoX19t
bWFzazE2LCBfX20yNTZpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1f
bWFza19zcmxfZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zcmxfZXBpMzIoX19tbWFzazgsIF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NybF9l
cGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2
aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NybF9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc3JsX2VwaTY0KF9fbTEy
OGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVj
bCBfbW1fbWFza3pfc3JsX2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVy
biBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zcmxfZXBpNjQoX19tMjU2aSwgX19tbWFz
azgsIF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrel9zcmxfZXBpNjQoX19tbWFzazgsIF9fbTI1NmksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEy
OGkgICBfX2NkZWNsIF9tbV9tYXNrX3NybGlfZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTEy
OGksIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NybGlfZXBpMTYo
X19tbWFzazgsIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2
X21hc2tfc3JsaV9lcGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIGludCk7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NybGlfZXBpMTYoX19tbWFzazE2LCBf
X20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3NybGlfZXBp
MzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19t
MTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NybGlfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIHVu
c2lnbmVkIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfc3JsaV9l
cGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBf
X20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc3JsaV9lcGkzMihfX21tYXNrOCwgX19tMjU2
aSwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19zcmxp
X2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJu
IF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9zcmxpX2VwaTY0KF9fbW1hc2s4LCBfX20xMjhp
LCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Ny
bGlfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIHVuc2lnbmVkIGludCk7DQpleHRl
cm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3NybGlfZXBpNjQoX19tbWFzazgsIF9f
bTI1NmksIHVuc2lnbmVkIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tf
c3Jsdl9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3NybHZfZXBpMTYoX19tbWFzazgsIF9fbTEyOGks
IF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9zcmx2X2VwaTE2KF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NybHZf
ZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20y
NTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfc3Jsdl9lcGkxNihfX21tYXNrMTYsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9zcmx2X2VwaTE2KF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3NybHZf
ZXBpMzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEy
OGkgICBfX2NkZWNsIF9tbV9tYXNrel9zcmx2X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19zcmx2X2VwaTMyKF9f
bTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19j
ZGVjbCBfbW0yNTZfbWFza3pfc3Jsdl9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc3Jsdl9lcGk2NChfX20xMjhpLCBf
X21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21t
X21hc2t6X3NybHZfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NybHZfZXBpNjQoX19tMjU2aSwgX19tbWFzazgs
IF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNr
el9zcmx2X2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAg
ICAgX19jZGVjbCBfbW1fbWFza19zdG9yZV9lcGkzMih2b2lkKiwgX19tbWFzazgsIF9fbTEyOGkp
Ow0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3N0b3JlX2VwaTMyKHZvaWQq
LCBfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tf
c3RvcmVfZXBpNjQodm9pZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAgICAg
X19jZGVjbCBfbW0yNTZfbWFza19zdG9yZV9lcGk2NCh2b2lkKiwgX19tbWFzazgsIF9fbTI1Nmkp
Ow0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbV9tYXNrX3N0b3JlX3BkKHZvaWQqLCBfX21t
YXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfc3Rv
cmVfcGQodm9pZCosIF9fbW1hc2s4LCBfX20yNTZkKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVj
bCBfbW1fbWFza19zdG9yZV9wcyh2b2lkKiwgX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gdm9p
ZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfc3RvcmVfcHModm9pZCosIF9fbW1hc2s4LCBfX20y
NTYpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbV9zdG9yZXVfZXBpMTYodm9pZCosIF9f
bTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbTI1Nl9zdG9yZXVfZXBpMTYodm9p
ZCosIF9fbTI1NmkpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNsIF9tbV9tYXNrX3N0b3JldV9l
cGkxNih2b2lkKiwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAgICBfX2NkZWNs
IF9tbTI1Nl9tYXNrX3N0b3JldV9lcGkxNih2b2lkKiwgX19tbWFzazE2LCBfX20yNTZpKTsNCmV4
dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fc3RvcmV1X2VwaTMyKHZvaWQqLCBfX20xMjhpKTsN
CmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZfc3RvcmV1X2VwaTMyKHZvaWQqLCBfX20y
NTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19zdG9yZXVfZXBpMzIodm9p
ZCosIF9fbW1hc2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZf
bWFza19zdG9yZXVfZXBpMzIodm9pZCosIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiB2b2lk
ICAgICAgX19jZGVjbCBfbW1fc3RvcmV1X2VwaTY0KHZvaWQqLCBfX20xMjhpKTsNCmV4dGVybiB2
b2lkICAgICAgX19jZGVjbCBfbW0yNTZfc3RvcmV1X2VwaTY0KHZvaWQqLCBfX20yNTZpKTsNCmV4
dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19zdG9yZXVfZXBpNjQodm9pZCosIF9fbW1h
c2s4LCBfX20xMjhpKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZfbWFza19zdG9y
ZXVfZXBpNjQodm9pZCosIF9fbW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiB2b2lkICAgICAgX19j
ZGVjbCBfbW1fc3RvcmV1X2VwaTgodm9pZCosIF9fbTEyOGkpOw0KZXh0ZXJuIHZvaWQgICAgICBf
X2NkZWNsIF9tbTI1Nl9zdG9yZXVfZXBpOCh2b2lkKiwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAg
ICAgIF9fY2RlY2wgX21tX21hc2tfc3RvcmV1X2VwaTgodm9pZCosIF9fbW1hc2sxNiwgX19tMTI4
aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tMjU2X21hc2tfc3RvcmV1X2VwaTgodm9p
ZCosIF9fbW1hc2szMiwgX19tMjU2aSk7DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21h
c2tfc3RvcmV1X3BkKHZvaWQqLCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gdm9pZCAgICAg
IF9fY2RlY2wgX21tMjU2X21hc2tfc3RvcmV1X3BkKHZvaWQqLCBfX21tYXNrOCwgX19tMjU2ZCk7
DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX21tX21hc2tfc3RvcmV1X3BzKHZvaWQqLCBfX21t
YXNrOCwgX19tMTI4KTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW0yNTZfbWFza19zdG9y
ZXVfcHModm9pZCosIF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNs
IF9tbV9tYXNrX3N1Yl9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3N1Yl9lcGkxNihfX21tYXNrOCwg
X19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tf
c3ViX2VwaTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3N1Yl9lcGkxNihfX21tYXNrMTYsIF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3N1Yl9lcGkz
MihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAg
IF9fY2RlY2wgX21tX21hc2t6X3N1Yl9lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfc3ViX2VwaTMyKF9fbTI1Nmks
IF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBf
bW0yNTZfbWFza3pfc3ViX2VwaTMyKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19zdWJfZXBpNjQoX19tMTI4aSwgX19tbWFzazgs
IF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel9z
dWJfZXBpNjQoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBf
X2NkZWNsIF9tbTI1Nl9tYXNrX3N1Yl9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwg
X19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3N1Yl9lcGk2
NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2tfc3ViX2VwaTgoX19tMTI4aSwgX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfc3ViX2VwaTgoX19tbWFzazE2LCBf
X20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza19z
dWJfZXBpOChfX20yNTZpLCBfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zdWJfZXBpOChfX21tYXNrMzIsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX3N1Yl9wZChfX20x
MjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2Rl
Y2wgX21tX21hc2t6X3N1Yl9wZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4g
X19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tfc3ViX3BkKF9fbTI1NmQsIF9fbW1hc2s4LCBf
X20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza3pf
c3ViX3BkKF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBfX20xMjggICAgX19j
ZGVjbCBfbW1fbWFza19zdWJfcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0K
ZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9zdWJfcHMoX19tbWFzazgsIF9fbTEy
OCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza19zdWJfcHMo
X19tMjU2LCBfX21tYXNrOCwgX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2Nk
ZWNsIF9tbTI1Nl9tYXNrel9zdWJfcHMoX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVy
biBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19zdWJzX2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
c3Vic19lcGkxNihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X21hc2tfc3Vic19lcGkxNihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zdWJz
X2VwaTE2KF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9f
Y2RlY2wgX21tX21hc2tfc3Vic19lcGk4KF9fbTEyOGksIF9fbW1hc2sxNiwgX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3N1YnNfZXBpOChfX21t
YXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrX3N1YnNfZXBpOChfX20yNTZpLCBfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zdWJzX2VwaTgoX19tbWFzazMy
LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza19z
dWJzX2VwdTE2KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pfc3Vic19lcHUxNihfX21tYXNrOCwgX19tMTI4aSwg
X19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfc3Vic19lcHUx
NihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1Nmkg
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zdWJzX2VwdTE2KF9fbW1hc2sxNiwgX19tMjU2aSwgX19t
MjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfc3Vic19lcHU4KF9fbTEy
OGksIF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2Rl
Y2wgX21tX21hc2t6X3N1YnNfZXB1OChfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3N1YnNfZXB1OChfX20yNTZpLCBfX21t
YXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel9zdWJzX2VwdTgoX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20xMjhpICAgX19jZGVjbCBfbW1fbWFza190ZXJuYXJ5bG9naWNfZXBpMzIoX19tMTI4aSwgX19t
bWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wg
X21tX21hc2t6X3Rlcm5hcnlsb2dpY19lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwg
X19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fdGVybmFyeWxvZ2lj
X2VwaTMyKF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMjU2aSAg
IF9fY2RlY2wgX21tMjU2X21hc2tfdGVybmFyeWxvZ2ljX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4
LCBfX20yNTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel90ZXJuYXJ5bG9naWNfZXBpMzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIF9f
bTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X3Rlcm5hcnlsb2dp
Y19lcGkzMihfX20yNTZpLCBfX20yNTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrX3Rlcm5hcnlsb2dpY19lcGk2NChfX20xMjhpLCBfX21tYXNrOCwg
X19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a3pfdGVybmFyeWxvZ2ljX2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBfX20xMjhp
LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV90ZXJuYXJ5bG9naWNfZXBpNjQo
X19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVj
bCBfbW0yNTZfbWFza190ZXJuYXJ5bG9naWNfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1
NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6
X3Rlcm5hcnlsb2dpY19lcGk2NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSwgX19tMjU2aSwg
aW50KTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfdGVybmFyeWxvZ2ljX2VwaTY0
KF9fbTI1NmksIF9fbTI1NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2Rl
Y2wgX21tX21hc2tfdGVzdF9lcGkxNl9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fdGVzdF9lcGkxNl9tYXNrKF9fbTEyOGksIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Rlc3RfZXBpMTZf
bWFzayhfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2Nk
ZWNsIF9tbTI1Nl90ZXN0X2VwaTE2X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tX21hc2tfdGVzdF9lcGkzMl9tYXNrKF9fbW1hc2s4LCBfX20xMjhp
LCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fdGVzdF9lcGkzMl9tYXNr
KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X3Rlc3RfZXBpMzJfbWFzayhfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tMjU2X3Rlc3RfZXBpMzJfbWFzayhfX20yNTZpLCBfX20yNTZpKTsN
CmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza190ZXN0X2VwaTY0X21hc2soX19tbWFz
azgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV90ZXN0
X2VwaTY0X21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wg
X21tMjU2X21hc2tfdGVzdF9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsN
CmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfdGVzdF9lcGk2NF9tYXNrKF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9tbV9tYXNrX3Rlc3RfZXBpOF9t
YXNrKF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazE2IF9fY2Rl
Y2wgX21tX3Rlc3RfZXBpOF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sz
MiBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Rlc3RfZXBpOF9tYXNrKF9fbW1hc2szMiwgX19tMjU2aSwg
X19tMjU2aSk7DQpleHRlcm4gX19tbWFzazMyIF9fY2RlY2wgX21tMjU2X3Rlc3RfZXBpOF9tYXNr
KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX3Rl
c3RuX2VwaTE2X21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1h
c2s4ICBfX2NkZWNsIF9tbV90ZXN0bl9lcGkxNl9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Rlc3RuX2VwaTE2X21hc2soX19tbWFz
azE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfbW0yNTZf
dGVzdG5fZXBpMTZfbWFzayhfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19j
ZGVjbCBfbW1fbWFza190ZXN0bl9lcGkzMl9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fdGVzdG5fZXBpMzJfbWFzayhfX20xMjhp
LCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFza190ZXN0bl9l
cGkzMl9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAg
X19jZGVjbCBfbW0yNTZfdGVzdG5fZXBpMzJfbWFzayhfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza190ZXN0bl9lcGk2NF9tYXNrKF9fbW1hc2s4LCBf
X20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fdGVzdG5fZXBp
NjRfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0y
NTZfbWFza190ZXN0bl9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfdGVzdG5fZXBpNjRfbWFzayhfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfbW1fbWFza190ZXN0bl9lcGk4X21h
c2soX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVj
bCBfbW1fdGVzdG5fZXBpOF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sz
MiBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Rlc3RuX2VwaThfbWFzayhfX21tYXNrMzIsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2szMiBfX2NkZWNsIF9tbTI1Nl90ZXN0bl9lcGk4X21h
c2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tf
dW5wYWNraGlfZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrel91bnBhY2toaV9lcGkxNihfX21tYXNrOCwg
X19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tf
dW5wYWNraGlfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFza3pfdW5wYWNraGlfZXBpMTYoX19tbWFz
azE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a191bnBhY2toaV9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3VucGFja2hpX2VwaTMyKF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a191bnBhY2toaV9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3VucGFja2hpX2VwaTMyKF9fbW1h
c2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a191bnBhY2toaV9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3VucGFja2hpX2VwaTY0KF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a191bnBhY2toaV9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3VucGFja2hpX2VwaTY0KF9fbW1h
c2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFz
a191bnBhY2toaV9lcGk4KF9fbTEyOGksIF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2t6X3VucGFja2hpX2VwaTgoX19tbWFzazE2
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAgX19jZGVjbCBfbW0yNTZfbWFz
a191bnBhY2toaV9lcGk4KF9fbTI1NmksIF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSk7DQpl
eHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3VucGFja2hpX2VwaTgoX19tbWFz
azMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFz
a191bnBhY2toaV9wZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRl
cm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X3VucGFja2hpX3BkKF9fbW1hc2s4LCBfX20x
MjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20yNTZkICAgX19jZGVjbCBfbW0yNTZfbWFza191bnBh
Y2toaV9wZChfX20yNTZkLCBfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19t
MjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2t6X3VucGFja2hpX3BkKF9fbW1hc2s4LCBfX20yNTZk
LCBfX20yNTZkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza191bnBhY2toaV9w
cyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9f
Y2RlY2wgX21tX21hc2t6X3VucGFja2hpX3BzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpl
eHRlcm4gX19tMjU2ICAgIF9fY2RlY2wgX21tMjU2X21hc2tfdW5wYWNraGlfcHMoX19tMjU2LCBf
X21tYXNrOCwgX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1
Nl9tYXNrel91bnBhY2toaV9wcyhfX21tYXNrOCwgX19tMjU2LCBfX20yNTYpOw0KZXh0ZXJuIF9f
bTEyOGkgICBfX2NkZWNsIF9tbV9tYXNrX3VucGFja2xvX2VwaTE2KF9fbTEyOGksIF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
dW5wYWNrbG9fZXBpMTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1
NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3VucGFja2xvX2VwaTE2KF9fbTI1NmksIF9fbW1hc2sx
NiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wgX21tMjU2X21h
c2t6X3VucGFja2xvX2VwaTE2KF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfdW5wYWNrbG9fZXBpMzIoX19tMTI4aSwgX19tbWFz
azgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
el91bnBhY2tsb19lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfdW5wYWNrbG9fZXBpMzIoX19tMjU2aSwgX19tbWFz
azgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrel91bnBhY2tsb19lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfdW5wYWNrbG9fZXBpNjQoX19tMTI4aSwgX19tbWFz
azgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
el91bnBhY2tsb19lcGk2NChfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfdW5wYWNrbG9fZXBpNjQoX19tMjU2aSwgX19tbWFz
azgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrel91bnBhY2tsb19lcGk2NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfdW5wYWNrbG9fZXBpOChfX20xMjhpLCBfX21tYXNr
MTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgICBfX2NkZWNsIF9tbV9tYXNr
el91bnBhY2tsb19lcGk4KF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19t
MjU2aSAgIF9fY2RlY2wgX21tMjU2X21hc2tfdW5wYWNrbG9fZXBpOChfX20yNTZpLCBfX21tYXNr
MzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrel91bnBhY2tsb19lcGk4KF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfdW5wYWNrbG9fcGQoX19tMTI4ZCwgX19tbWFzazgs
IF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel91
bnBhY2tsb19wZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAg
IF9fY2RlY2wgX21tMjU2X21hc2tfdW5wYWNrbG9fcGQoX19tMjU2ZCwgX19tbWFzazgsIF9fbTI1
NmQsIF9fbTI1NmQpOw0KZXh0ZXJuIF9fbTI1NmQgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel91bnBh
Y2tsb19wZChfX21tYXNrOCwgX19tMjU2ZCwgX19tMjU2ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9f
Y2RlY2wgX21tX21hc2tfdW5wYWNrbG9fcHMoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20x
MjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel91bnBhY2tsb19wcyhfX21t
YXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX3VucGFja2xvX3BzKF9fbTI1NiwgX19tbWFzazgsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVy
biBfX20yNTYgICAgX19jZGVjbCBfbW0yNTZfbWFza3pfdW5wYWNrbG9fcHMoX19tbWFzazgsIF9f
bTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza194b3JfZXBp
MzIoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkg
ICBfX2NkZWNsIF9tbV9tYXNrel94b3JfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrX3hvcl9lcGkzMihfX20yNTZp
LCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSAgIF9fY2RlY2wg
X21tMjU2X21hc2t6X3hvcl9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tMTI4aSAgIF9fY2RlY2wgX21tX21hc2tfeG9yX2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpICAgX19jZGVjbCBfbW1fbWFza3pf
eG9yX2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpICAg
X19jZGVjbCBfbW0yNTZfbWFza194b3JfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel94b3JfZXBp
NjQoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9tYXNrX3hvcl9wZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpl
eHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X3hvcl9wZChfX21tYXNrOCwgX19tMTI4
ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMjU2ZCAgIF9fY2RlY2wgX21tMjU2X21hc2tfeG9yX3Bk
KF9fbTI1NmQsIF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkKTsNCmV4dGVybiBfX20yNTZkICAg
X19jZGVjbCBfbW0yNTZfbWFza3pfeG9yX3BkKF9fbW1hc2s4LCBfX20yNTZkLCBfX20yNTZkKTsN
CmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza194b3JfcHMoX19tMTI4LCBfX21tYXNr
OCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel94
b3JfcHMoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20yNTYgICAgX19jZGVj
bCBfbW0yNTZfbWFza194b3JfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2LCBfX20yNTYpOw0K
ZXh0ZXJuIF9fbTI1NiAgICBfX2NkZWNsIF9tbTI1Nl9tYXNrel94b3JfcHMoX19tbWFzazgsIF9f
bTI1NiwgX19tMjU2KTsNCg0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW1fY21wZXFfZXBp
OF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW1f
Y21wZ2VfZXBpOF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19j
ZGVjbCBfbW1fY21wZ3RfZXBpOF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1h
c2sxNiAgX19jZGVjbCBfbW1fY21wbGVfZXBpOF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW1fY21wbHRfZXBpOF9tYXNrKF9fbTEyOGksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW1fY21wbmVxX2VwaThfbWFzayhfX20x
MjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tX2NtcGVxX2VwdThf
bWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tX2Nt
cGdlX2VwdThfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2Rl
Y2wgX21tX2NtcGd0X2VwdThfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNr
MTYgIF9fY2RlY2wgX21tX2NtcGxlX2VwdThfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVy
biBfX21tYXNrMTYgIF9fY2RlY2wgX21tX2NtcGx0X2VwdThfbWFzayhfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tX2NtcG5lcV9lcHU4X21hc2soX19tMTI4
aSwgX19tMTI4aSk7DQoNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tX21hc2tfY21wZXFf
ZXBpOF9tYXNrKF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazE2
ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGdlX2VwaThfbWFzayhfX21tYXNrMTYsIF9fbTEyOGksIF9f
bTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW1fbWFza19jbXBndF9lcGk4X21h
c2soX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2Rl
Y2wgX21tX21hc2tfY21wbGVfZXBpOF9tYXNrKF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGx0X2VwaThfbWFzayhfX21t
YXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW1f
bWFza19jbXBuZXFfZXBpOF9tYXNrKF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRl
cm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGVxX2VwdThfbWFzayhfX21tYXNrMTYs
IF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW1fbWFza19j
bXBnZV9lcHU4X21hc2soX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21t
YXNrMTYgIF9fY2RlY2wgX21tX21hc2tfY21wZ3RfZXB1OF9tYXNrKF9fbW1hc2sxNiwgX19tMTI4
aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGxlX2Vw
dThfbWFzayhfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAg
X19jZGVjbCBfbW1fbWFza19jbXBsdF9lcHU4X21hc2soX19tbWFzazE2LCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tX21hc2tfY21wbmVxX2VwdThfbWFz
ayhfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KDQpleHRlcm4gX19tbWFzazggIF9fY2Rl
Y2wgX21tX2NtcGVxX2VwaTE2X21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFz
azggIF9fY2RlY2wgX21tX2NtcGdlX2VwaTE2X21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRl
cm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcGd0X2VwaTE2X21hc2soX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcGxlX2VwaTE2X21hc2soX19tMTI4
aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcGx0X2VwaTE2X21h
c2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcG5l
cV9lcGkxNl9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNs
IF9tbV9jbXBlcV9lcHUxNl9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4
ICBfX2NkZWNsIF9tbV9jbXBnZV9lcHUxNl9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBndF9lcHUxNl9tYXNrKF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBsZV9lcHUxNl9tYXNrKF9fbTEyOGks
IF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBsdF9lcHUxNl9tYXNr
KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBuZXFf
ZXB1MTZfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCg0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNs
IF9tbV9tYXNrX2NtcGVxX2VwaTE2X21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGdlX2VwaTE2X21hc2soX19tbWFz
azgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNr
X2NtcGd0X2VwaTE2X21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGxlX2VwaTE2X21hc2soX19tbWFzazgsIF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGx0X2Vw
aTE2X21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBf
X2NkZWNsIF9tbV9tYXNrX2NtcG5lcV9lcGkxNl9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBlcV9lcHUxNl9tYXNr
KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBf
bW1fbWFza19jbXBnZV9lcHUxNl9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4
dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBndF9lcHUxNl9tYXNrKF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19j
bXBsZV9lcHUxNl9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21t
YXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBsdF9lcHUxNl9tYXNrKF9fbW1hc2s4LCBfX20xMjhp
LCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBuZXFfZXB1
MTZfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQoNCmV4dGVybiBfX21tYXNrOCAg
X19jZGVjbCBfbW1fY21wZXFfZXBpMzJfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBf
X21tYXNrOCAgX19jZGVjbCBfbW1fY21wZ2VfZXBpMzJfbWFzayhfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wZ3RfZXBpMzJfbWFzayhfX20xMjhpLCBf
X20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wbGVfZXBpMzJfbWFzayhf
X20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wbHRfZXBp
MzJfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1f
Y21wbmVxX2VwaTMyX21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9f
Y2RlY2wgX21tX2NtcGVxX2VwdTMyX21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tX2NtcGdlX2VwdTMyX21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcGd0X2VwdTMyX21hc2soX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcGxlX2VwdTMyX21hc2soX19t
MTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2NtcGx0X2VwdTMy
X21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2Nt
cG5lcV9lcHUzMl9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KDQpleHRlcm4gX19tbWFzazggIF9f
Y2RlY2wgX21tX21hc2tfY21wZXFfZXBpMzJfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wZ2VfZXBpMzJfbWFzayhf
X21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21t
X21hc2tfY21wZ3RfZXBpMzJfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRl
cm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wbGVfZXBpMzJfbWFzayhfX21tYXNrOCwg
X19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21w
bHRfZXBpMzJfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFz
azggIF9fY2RlY2wgX21tX21hc2tfY21wbmVxX2VwaTMyX21hc2soX19tbWFzazgsIF9fbTEyOGks
IF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGVxX2VwdTMy
X21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2Nk
ZWNsIF9tbV9tYXNrX2NtcGdlX2VwdTMyX21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGd0X2VwdTMyX21hc2soX19t
bWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9t
YXNrX2NtcGxlX2VwdTMyX21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcGx0X2VwdTMyX21hc2soX19tbWFzazgsIF9f
bTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9tYXNrX2NtcG5l
cV9lcHUzMl9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCg0KZXh0ZXJuIF9fbW1h
c2s4ICBfX2NkZWNsIF9tbV9jbXBlcV9lcGk2NF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0
ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBnZV9lcGk2NF9tYXNrKF9fbTEyOGksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBndF9lcGk2NF9tYXNrKF9fbTEy
OGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBsZV9lcGk2NF9t
YXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9jbXBs
dF9lcGk2NF9tYXNrKF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNs
IF9tbV9jbXBuZXFfZXBpNjRfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNr
OCAgX19jZGVjbCBfbW1fY21wZXFfZXB1NjRfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVy
biBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wZ2VfZXB1NjRfbWFzayhfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wZ3RfZXB1NjRfbWFzayhfX20xMjhp
LCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wbGVfZXB1NjRfbWFz
ayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wbHRf
ZXB1NjRfbWFzayhfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBf
bW1fY21wbmVxX2VwdTY0X21hc2soX19tMTI4aSwgX19tMTI4aSk7DQoNCmV4dGVybiBfX21tYXNr
OCAgX19jZGVjbCBfbW1fbWFza19jbXBlcV9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBf
X20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBnZV9lcGk2NF9t
YXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVj
bCBfbW1fbWFza19jbXBndF9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsN
CmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBsZV9lcGk2NF9tYXNrKF9fbW1h
c2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fbWFz
a19jbXBsdF9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBf
X21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19jbXBuZXFfZXBpNjRfbWFzayhfX21tYXNrOCwgX19t
MTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wZXFf
ZXB1NjRfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazgg
IF9fY2RlY2wgX21tX21hc2tfY21wZ2VfZXB1NjRfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wZ3RfZXB1NjRfbWFz
ayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wg
X21tX21hc2tfY21wbGVfZXB1NjRfbWFzayhfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wbHRfZXB1NjRfbWFzayhfX21tYXNr
OCwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tf
Y21wbmVxX2VwdTY0X21hc2soX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KDQpleHRlcm4g
X19tbWFzazMyICBfX2NkZWNsIF9tbTI1Nl9jbXBlcV9lcGk4X21hc2soX19tMjU2aSwgX19tMjU2
aSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTI1Nl9jbXBnZV9lcGk4X21hc2soX19t
MjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTI1Nl9jbXBndF9l
cGk4X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9t
bTI1Nl9jbXBsZV9lcGk4X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazMy
ICBfX2NkZWNsIF9tbTI1Nl9jbXBsdF9lcGk4X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTI1Nl9jbXBuZXFfZXBpOF9tYXNrKF9fbTI1NmksIF9f
bTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW0yNTZfY21wZXFfZXB1OF9tYXNr
KF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW0yNTZfY21w
Z2VfZXB1OF9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVj
bCBfbW0yNTZfY21wZ3RfZXB1OF9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1h
c2szMiAgX19jZGVjbCBfbW0yNTZfY21wbGVfZXB1OF9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW0yNTZfY21wbHRfZXB1OF9tYXNrKF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW0yNTZfY21wbmVxX2VwdThf
bWFzayhfX20yNTZpLCBfX20yNTZpKTsNCg0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW0y
NTZfbWFza19jbXBlcV9lcGk4X21hc2soX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tMjU2X21hc2tfY21wZ2VfZXBpOF9tYXNrKF9fbW1h
c2szMiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTI1
Nl9tYXNrX2NtcGd0X2VwaThfbWFzayhfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0
ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBsZV9lcGk4X21hc2soX19tbWFz
azMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tMjU2
X21hc2tfY21wbHRfZXBpOF9tYXNrKF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcGk4X21hc2soX19tbWFz
azMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrMzIgIF9fY2RlY2wgX21tMjU2
X21hc2tfY21wZXFfZXB1OF9tYXNrKF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcGdlX2VwdThfbWFzayhfX21tYXNr
MzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2szMiAgX19jZGVjbCBfbW0yNTZf
bWFza19jbXBndF9lcHU4X21hc2soX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX21tYXNrMzIgIF9fY2RlY2wgX21tMjU2X21hc2tfY21wbGVfZXB1OF9tYXNrKF9fbW1hc2sz
MiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazMyICBfX2NkZWNsIF9tbTI1Nl9t
YXNrX2NtcGx0X2VwdThfbWFzayhfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJu
IF9fbW1hc2szMiAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBuZXFfZXB1OF9tYXNrKF9fbW1hc2sz
MiwgX19tMjU2aSwgX19tMjU2aSk7DQoNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tMjU2
X2NtcGVxX2VwaTE2X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazE2ICBf
X2NkZWNsIF9tbTI1Nl9jbXBnZV9lcGkxNl9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJu
IF9fbW1hc2sxNiAgX19jZGVjbCBfbW0yNTZfY21wZ3RfZXBpMTZfbWFzayhfX20yNTZpLCBfX20y
NTZpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tMjU2X2NtcGxlX2VwaTE2X21hc2so
X19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbTI1Nl9jbXBs
dF9lcGkxNl9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVj
bCBfbW0yNTZfY21wbmVxX2VwaTE2X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
bWFzazE2ICBfX2NkZWNsIF9tbTI1Nl9jbXBlcV9lcHUxNl9tYXNrKF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW0yNTZfY21wZ2VfZXB1MTZfbWFzayhfX20y
NTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tMjU2X2NtcGd0X2Vw
dTE2X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9t
bTI1Nl9jbXBsZV9lcHUxNl9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2sx
NiAgX19jZGVjbCBfbW0yNTZfY21wbHRfZXB1MTZfbWFzayhfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tMjU2X2NtcG5lcV9lcHUxNl9tYXNrKF9fbTI1Nmks
IF9fbTI1NmkpOw0KDQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcGVx
X2VwaTE2X21hc2soX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNr
MTYgIF9fY2RlY2wgX21tMjU2X21hc2tfY21wZ2VfZXBpMTZfbWFzayhfX21tYXNrMTYsIF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBn
dF9lcGkxNl9tYXNrKF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFz
azE2ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcGxlX2VwaTE2X21hc2soX19tbWFzazE2LCBfX20y
NTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tMjU2X21hc2tfY21w
bHRfZXBpMTZfbWFzayhfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1h
c2sxNiAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBuZXFfZXBpMTZfbWFzayhfX21tYXNrMTYsIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgX19jZGVjbCBfbW0yNTZfbWFza19j
bXBlcV9lcHUxNl9tYXNrKF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
bWFzazE2ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcGdlX2VwdTE2X21hc2soX19tbWFzazE2LCBf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrMTYgIF9fY2RlY2wgX21tMjU2X21hc2tf
Y21wZ3RfZXB1MTZfbWFzayhfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bW1hc2sxNiAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBsZV9lcHUxNl9tYXNrKF9fbW1hc2sxNiwg
X19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazE2ICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X2NtcGx0X2VwdTE2X21hc2soX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X21tYXNrMTYgIF9fY2RlY2wgX21tMjU2X21hc2tfY21wbmVxX2VwdTE2X21hc2soX19tbWFzazE2
LCBfX20yNTZpLCBfX20yNTZpKTsNCg0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9j
bXBlcV9lcGkzMl9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2Nk
ZWNsIF9tbTI1Nl9jbXBnZV9lcGkzMl9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBndF9lcGkzMl9tYXNrKF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBsZV9lcGkzMl9tYXNrKF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBsdF9lcGkz
Ml9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1
Nl9jbXBuZXFfZXBpMzJfbWFzayhfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAg
X19jZGVjbCBfbW0yNTZfY21wZXFfZXB1MzJfbWFzayhfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfY21wZ2VfZXB1MzJfbWFzayhfX20yNTZpLCBfX20y
NTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfY21wZ3RfZXB1MzJfbWFzayhf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfY21wbGVf
ZXB1MzJfbWFzayhfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBf
bW0yNTZfY21wbHRfZXB1MzJfbWFzayhfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNr
OCAgX19jZGVjbCBfbW0yNTZfY21wbmVxX2VwdTMyX21hc2soX19tMjU2aSwgX19tMjU2aSk7DQoN
CmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBlcV9lcGkzMl9tYXNrKF9f
bW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0y
NTZfbWFza19jbXBnZV9lcGkzMl9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBndF9lcGkzMl9tYXNrKF9fbW1h
c2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZf
bWFza19jbXBsZV9lcGkzMl9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBsdF9lcGkzMl9tYXNrKF9fbW1hc2s4
LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFz
a19jbXBuZXFfZXBpMzJfbWFzayhfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tbWFzazggIF9fY2RlY2wgX21tMjU2X21hc2tfY21wZXFfZXB1MzJfbWFzayhfX21tYXNrOCwg
X19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X21hc2tf
Y21wZ2VfZXB1MzJfbWFzayhfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tMjU2X21hc2tfY21wZ3RfZXB1MzJfbWFzayhfX21tYXNrOCwgX19t
MjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X21hc2tfY21w
bGVfZXB1MzJfbWFzayhfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFz
azggIF9fY2RlY2wgX21tMjU2X21hc2tfY21wbHRfZXB1MzJfbWFzayhfX21tYXNrOCwgX19tMjU2
aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X21hc2tfY21wbmVx
X2VwdTMyX21hc2soX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KDQpleHRlcm4gX19tbWFz
azggIF9fY2RlY2wgX21tMjU2X2NtcGVxX2VwaTY0X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpl
eHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X2NtcGdlX2VwaTY0X21hc2soX19tMjU2aSwg
X19tMjU2aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X2NtcGd0X2VwaTY0X21h
c2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tMjU2X2Nt
cGxlX2VwaTY0X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tbWFzazggIF9fY2Rl
Y2wgX21tMjU2X2NtcGx0X2VwaTY0X21hc2soX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
bWFzazggIF9fY2RlY2wgX21tMjU2X2NtcG5lcV9lcGk2NF9tYXNrKF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBlcV9lcHU2NF9tYXNrKF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBnZV9lcHU2
NF9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1
Nl9jbXBndF9lcHU2NF9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBf
X2NkZWNsIF9tbTI1Nl9jbXBsZV9lcHU2NF9tYXNrKF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJu
IF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBsdF9lcHU2NF9tYXNrKF9fbTI1NmksIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9jbXBuZXFfZXB1NjRfbWFzayhf
X20yNTZpLCBfX20yNTZpKTsNCg0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNr
X2NtcGVxX2VwaTY0X21hc2soX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcGdlX2VwaTY0X21hc2soX19tbWFzazgsIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Nt
cGd0X2VwaTY0X21hc2soX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1h
c2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcGxlX2VwaTY0X21hc2soX19tbWFzazgsIF9fbTI1
NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcGx0
X2VwaTY0X21hc2soX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbW1hc2s4
ICBfX2NkZWNsIF9tbTI1Nl9tYXNrX2NtcG5lcV9lcGk2NF9tYXNrKF9fbW1hc2s4LCBfX20yNTZp
LCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBlcV9l
cHU2NF9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAg
X19jZGVjbCBfbW0yNTZfbWFza19jbXBnZV9lcHU2NF9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBndF9lcHU2
NF9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19j
ZGVjbCBfbW0yNTZfbWFza19jbXBsZV9lcHU2NF9tYXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20y
NTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW0yNTZfbWFza19jbXBsdF9lcHU2NF9t
YXNrKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVj
bCBfbW0yNTZfbWFza19jbXBuZXFfZXB1NjRfbWFzayhfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2
aSk7DQoNCg0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9hZGRfcm91bmRfc2QoX19tMTI4
ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19hZGRf
cm91bmRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRl
cm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X2FkZF9yb3VuZF9zZChfX21tYXNrOCwgX19t
MTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fYWRkX3Jv
dW5kX3NzKF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9t
bV9tYXNrX2FkZF9yb3VuZF9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgaW50
KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfYWRkX3JvdW5kX3NzKF9fbW1h
c2s4LCBfX20xMjgsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza19hZGRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJu
IF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9hZGRfc2QoX19tbWFzazgsIF9fbTEyOGQsIF9f
bTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2FkZF9zcyhfX20xMjgs
IF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21t
X21hc2t6X2FkZF9zcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbW1hc2s4
ICBfX2NkZWNsIF9tbV9jbXBfcm91bmRfc2RfbWFzayhfX20xMjhkLCBfX20xMjhkLCBjb25zdCBp
bnQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21hc2tfY21wX3Jv
dW5kX3NkX21hc2soX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wX3JvdW5kX3NzX21hc2soX19t
MTI4LCBfX20xMjgsIGNvbnN0IGludCwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19j
ZGVjbCBfbW1fbWFza19jbXBfcm91bmRfc3NfbWFzayhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgs
IGNvbnN0IGludCwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21w
X3NkX21hc2soX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAg
X19jZGVjbCBfbW1fbWFza19jbXBfc2RfbWFzayhfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwg
Y29uc3QgaW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbW1fY21wX3NzX21hc2soX19t
MTI4LCBfX20xMjgsIGNvbnN0IGludCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX21h
c2tfY21wX3NzX21hc2soX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBjb25zdCBpbnQpOw0KZXh0
ZXJuIGludCAgICAgICBfX2NkZWNsIF9tbV9jb21pX3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQs
IGNvbnN0IGludCwgY29uc3QgaW50KTsNCmV4dGVybiBpbnQgICAgICAgX19jZGVjbCBfbW1fY29t
aV9yb3VuZF9zcyhfX20xMjgsIF9fbTEyOCwgY29uc3QgaW50LCBjb25zdCBpbnQpOw0KZXh0ZXJu
IF9fbTEyOCAgICBfX2NkZWNsIF9tbV9jdnRfcm91bmRpMzJfc3MoX19tMTI4LCBpbnQsIGludCk7
DQpleHRlcm4gaW50ICAgICAgIF9fY2RlY2wgX21tX2N2dF9yb3VuZHNkX2kzMihfX20xMjhkLCBp
bnQpOw0KZXh0ZXJuIGludCAgICAgICBfX2NkZWNsIF9tbV9jdnRfcm91bmRzZF9zaTMyKF9fbTEy
OGQsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX2N2dF9yb3VuZHNkX3NzKF9f
bTEyOCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19j
dnRfcm91bmRzZF9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOGQsIGludCk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2N2dF9yb3VuZHNkX3NzKF9fbW1hc2s4
LCBfX20xMjgsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gdW5zaWduZWQgaW50IF9fY2RlY2wgX21t
X2N2dF9yb3VuZHNkX3UzMihfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNs
IF9tbV9jdnRfcm91bmRzaTMyX3NzKF9fbTEyOCwgaW50LCBpbnQpOw0KZXh0ZXJuIGludCAgICAg
ICBfX2NkZWNsIF9tbV9jdnRfcm91bmRzc19pMzIoX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEy
OGQgICBfX2NkZWNsIF9tbV9jdnRfcm91bmRzc19zZChfX20xMjhkLCBfX20xMjgsIGludCk7DQpl
eHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfY3Z0X3JvdW5kc3Nfc2QoX19tMTI4ZCwg
X19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFza3pfY3Z0X3JvdW5kc3Nfc2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOCwgaW50
KTsNCmV4dGVybiBpbnQgICAgICAgX19jZGVjbCBfbW1fY3Z0X3JvdW5kc3Nfc2kzMihfX20xMjgs
IGludCk7DQpleHRlcm4gdW5zaWduZWQgaW50IF9fY2RlY2wgX21tX2N2dF9yb3VuZHNzX3UzMihf
X20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX2N2dF9yb3VuZHUzMl9z
cyhfX20xMjgsIHVuc2lnbmVkIGludCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBf
bW1fY3Z0aTMyX3NkKF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21t
X2N2dGkzMl9zcyhfX20xMjgsIGludCk7DQpleHRlcm4gaW50ICAgICAgIF9fY2RlY2wgX21tX2N2
dHNkX2kzMihfX20xMjhkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19jdnRz
ZF9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAg
ICBfX2NkZWNsIF9tbV9tYXNrel9jdnRzZF9zcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjhkKTsN
CmV4dGVybiB1bnNpZ25lZCBpbnQgX19jZGVjbCBfbW1fY3Z0c2RfdTMyKF9fbTEyOGQpOw0KZXh0
ZXJuIGludCAgICAgICBfX2NkZWNsIF9tbV9jdnRzc19pMzIoX19tMTI4KTsNCmV4dGVybiBfX20x
MjhkICAgX19jZGVjbCBfbW1fbWFza19jdnRzc19zZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4
ZCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfY3Z0c3Nfc2Qo
X19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOCk7DQpleHRlcm4gdW5zaWduZWQgaW50IF9fY2RlY2wg
X21tX2N2dHNzX3UzMihfX20xMjgpOw0KZXh0ZXJuIGludCAgICAgICBfX2NkZWNsIF9tbV9jdnR0
X3JvdW5kc2RfaTMyKF9fbTEyOGQsIGludCk7DQpleHRlcm4gaW50ICAgICAgIF9fY2RlY2wgX21t
X2N2dHRfcm91bmRzZF9zaTMyKF9fbTEyOGQsIGludCk7DQpleHRlcm4gdW5zaWduZWQgaW50IF9f
Y2RlY2wgX21tX2N2dHRfcm91bmRzZF91MzIoX19tMTI4ZCwgaW50KTsNCmV4dGVybiBpbnQgICAg
ICAgX19jZGVjbCBfbW1fY3Z0dF9yb3VuZHNzX2kzMihfX20xMjgsIGludCk7DQpleHRlcm4gaW50
ICAgICAgIF9fY2RlY2wgX21tX2N2dHRfcm91bmRzc19zaTMyKF9fbTEyOCwgaW50KTsNCmV4dGVy
biB1bnNpZ25lZCBpbnQgX19jZGVjbCBfbW1fY3Z0dF9yb3VuZHNzX3UzMihfX20xMjgsIGludCk7
DQpleHRlcm4gaW50ICAgICAgIF9fY2RlY2wgX21tX2N2dHRzZF9pMzIoX19tMTI4ZCk7DQpleHRl
cm4gdW5zaWduZWQgaW50IF9fY2RlY2wgX21tX2N2dHRzZF91MzIoX19tMTI4ZCk7DQpleHRlcm4g
aW50ICAgICAgIF9fY2RlY2wgX21tX2N2dHRzc19pMzIoX19tMTI4KTsNCmV4dGVybiB1bnNpZ25l
ZCBpbnQgX19jZGVjbCBfbW1fY3Z0dHNzX3UzMihfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgICBf
X2NkZWNsIF9tbV9jdnR1MzJfc2QoX19tMTI4ZCwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX20x
MjggICAgX19jZGVjbCBfbW1fY3Z0dTMyX3NzKF9fbTEyOCwgdW5zaWduZWQgaW50KTsNCmV4dGVy
biBfX20xMjhkICAgX19jZGVjbCBfbW1fZGl2X3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQsIGlu
dCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfZGl2X3JvdW5kX3NkKF9fbTEy
OGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBf
X2NkZWNsIF9tbV9tYXNrel9kaXZfcm91bmRfc2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQs
IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX2Rpdl9yb3VuZF9zcyhfX20xMjgs
IF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19kaXZfcm91
bmRfc3MoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19t
MTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2Rpdl9yb3VuZF9zcyhfX21tYXNrOCwgX19tMTI4LCBf
X20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfZGl2X3NkKF9f
bTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19j
ZGVjbCBfbW1fbWFza3pfZGl2X3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19kaXZfc3MoX19tMTI4LCBfX21tYXNrOCwgX19t
MTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9kaXZfc3Mo
X19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
Zml4dXBpbW1fcm91bmRfc2QoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4aSwgY29uc3QgaW50LCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2ZpeHVwaW1tX3JvdW5kX3Nk
KF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhpLCBjb25zdCBpbnQsIGNvbnN0IGlu
dCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X2ZpeHVwaW1tX3JvdW5kX3Nk
KF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBfX20xMjhpLCBjb25zdCBpbnQsIGNvbnN0IGlu
dCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX2ZpeHVwaW1tX3JvdW5kX3NzKF9fbTEy
OCwgX19tMTI4LCBfX20xMjhpLCBjb25zdCBpbnQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4
ICAgIF9fY2RlY2wgX21tX21hc2tfZml4dXBpbW1fcm91bmRfc3MoX19tMTI4LCBfX21tYXNrOCwg
X19tMTI4LCBfX20xMjhpLCBjb25zdCBpbnQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ICAg
IF9fY2RlY2wgX21tX21hc2t6X2ZpeHVwaW1tX3JvdW5kX3NzKF9fbW1hc2s4LCBfX20xMjgsIF9f
bTEyOCwgX19tMTI4aSwgY29uc3QgaW50LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBf
X2NkZWNsIF9tbV9maXh1cGltbV9zZChfX20xMjhkLCBfX20xMjhkLCBfX20xMjhpLCBjb25zdCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2ZpeHVwaW1tX3NkKF9fbTEy
OGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEy
OGQgICBfX2NkZWNsIF9tbV9tYXNrel9maXh1cGltbV9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19t
MTI4ZCwgX19tMTI4aSwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1f
Zml4dXBpbW1fc3MoX19tMTI4LCBfX20xMjgsIF9fbTEyOGksIGNvbnN0IGludCk7DQpleHRlcm4g
X19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZml4dXBpbW1fc3MoX19tMTI4LCBfX21tYXNrOCwg
X19tMTI4LCBfX20xMjhpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9t
bV9tYXNrel9maXh1cGltbV9zcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIF9fbTEyOGksIGNv
bnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX2ZtYWRkX3JvdW5kX3NkKF9f
bTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wg
X21tX21hc2tfZm1hZGRfcm91bmRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEy
OGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2szX2ZtYWRkX3JvdW5k
X3NkKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQsIF9fbW1hc2s4LCBpbnQpOw0KZXh0ZXJuIF9f
bTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9mbWFkZF9yb3VuZF9zZChfX21tYXNrOCwgX19tMTI4
ZCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1f
Zm1hZGRfcm91bmRfc3MoX19tMTI4LCBfX20xMjgsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20x
MjggICAgX19jZGVjbCBfbW1fbWFza19mbWFkZF9yb3VuZF9zcyhfX20xMjgsIF9fbW1hc2s4LCBf
X20xMjgsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFzazNf
Zm1hZGRfcm91bmRfc3MoX19tMTI4LCBfX20xMjgsIF9fbTEyOCwgX19tbWFzazgsIGludCk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2ZtYWRkX3JvdW5kX3NzKF9fbW1hc2s4
LCBfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9tYXNrX2ZtYWRkX3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsN
CmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFzazNfZm1hZGRfc2QoX19tMTI4ZCwgX19t
MTI4ZCwgX19tMTI4ZCwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9t
YXNrel9mbWFkZF9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRl
cm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZm1hZGRfc3MoX19tMTI4LCBfX21tYXNrOCwg
X19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrM19mbWFk
ZF9zcyhfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBfX21tYXNrOCk7DQpleHRlcm4gX19tMTI4ICAg
IF9fY2RlY2wgX21tX21hc2t6X2ZtYWRkX3NzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgX19t
MTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fZm1zdWJfcm91bmRfc2QoX19tMTI4
ZCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza19mbXN1Yl9yb3VuZF9zZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwg
aW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFzazNfZm1zdWJfcm91bmRfc2Qo
X19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCwgX19tbWFzazgsIGludCk7DQpleHRlcm4gX19tMTI4
ZCAgIF9fY2RlY2wgX21tX21hc2t6X2Ztc3ViX3JvdW5kX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBf
X20xMjhkLCBfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9mbXN1
Yl9yb3VuZF9zcyhfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAg
ICBfX2NkZWNsIF9tbV9tYXNrX2Ztc3ViX3JvdW5kX3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEy
OCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrM19mbXN1
Yl9yb3VuZF9zcyhfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBfX21tYXNrOCwgaW50KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfZm1zdWJfcm91bmRfc3MoX19tbWFzazgsIF9f
bTEyOCwgX19tMTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X21hc2tfZm1zdWJfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0
ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrM19mbXN1Yl9zZChfX20xMjhkLCBfX20xMjhk
LCBfX20xMjhkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6
X2Ztc3ViX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBf
X20xMjggICAgX19jZGVjbCBfbW1fbWFza19mbXN1Yl9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20x
MjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2szX2Ztc3ViX3Nz
KF9fbTEyOCwgX19tMTI4LCBfX20xMjgsIF9fbW1hc2s4KTsNCmV4dGVybiBfX20xMjggICAgX19j
ZGVjbCBfbW1fbWFza3pfZm1zdWJfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBfX20xMjgp
Ow0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9mbm1hZGRfcm91bmRfc2QoX19tMTI4ZCwg
X19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFz
a19mbm1hZGRfcm91bmRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGlu
dCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2szX2ZubWFkZF9yb3VuZF9zZChf
X20xMjhkLCBfX20xMjhkLCBfX20xMjhkLCBfX21tYXNrOCwgaW50KTsNCmV4dGVybiBfX20xMjhk
ICAgX19jZGVjbCBfbW1fbWFza3pfZm5tYWRkX3JvdW5kX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBf
X20xMjhkLCBfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9mbm1h
ZGRfcm91bmRfc3MoX19tMTI4LCBfX20xMjgsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjgg
ICAgX19jZGVjbCBfbW1fbWFza19mbm1hZGRfcm91bmRfc3MoX19tMTI4LCBfX21tYXNrOCwgX19t
MTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2szX2Zu
bWFkZF9yb3VuZF9zcyhfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBfX21tYXNrOCwgaW50KTsNCmV4
dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfZm5tYWRkX3JvdW5kX3NzKF9fbW1hc2s4
LCBfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9tYXNrX2ZubWFkZF9zZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7
DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2szX2ZubWFkZF9zZChfX20xMjhkLCBf
X20xMjhkLCBfX20xMjhkLCBfX21tYXNrOCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X21hc2t6X2ZubWFkZF9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZm5tYWRkX3NzKF9fbTEyOCwgX19tbWFz
azgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFzazNf
Zm5tYWRkX3NzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgsIF9fbW1hc2s4KTsNCmV4dGVybiBfX20x
MjggICAgX19jZGVjbCBfbW1fbWFza3pfZm5tYWRkX3NzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEy
OCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fZm5tc3ViX3JvdW5kX3Nk
KF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2Rl
Y2wgX21tX21hc2tfZm5tc3ViX3JvdW5kX3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBf
X20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrM19mbm1zdWJf
cm91bmRfc2QoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCwgX19tbWFzazgsIGludCk7DQpleHRl
cm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X2ZubXN1Yl9yb3VuZF9zZChfX21tYXNrOCwg
X19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVj
bCBfbW1fZm5tc3ViX3JvdW5kX3NzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgsIGludCk7DQpleHRl
cm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZm5tc3ViX3JvdW5kX3NzKF9fbTEyOCwgX19t
bWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9t
bV9tYXNrM19mbm1zdWJfcm91bmRfc3MoX19tMTI4LCBfX20xMjgsIF9fbTEyOCwgX19tbWFzazgs
IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2ZubXN1Yl9yb3VuZF9z
cyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjhk
ICAgX19jZGVjbCBfbW1fbWFza19mbm1zdWJfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQs
IF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrM19mbm1zdWJfc2Qo
X19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbTEyOGQgICBf
X2NkZWNsIF9tbV9tYXNrel9mbm1zdWJfc2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIF9f
bTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2ZubXN1Yl9zcyhfX20x
MjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wg
X21tX21hc2szX2ZubXN1Yl9zcyhfX20xMjgsIF9fbTEyOCwgX19tMTI4LCBfX21tYXNrOCk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2ZubXN1Yl9zcyhfX21tYXNrOCwgX19t
MTI4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX21tX2ZwY2xh
c3Nfc2RfbWFzayhfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9tbV9t
YXNrX2ZwY2xhc3Nfc2RfbWFzayhfX21tYXNrOCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX21t
YXNrOCAgX19jZGVjbCBfbW1fZnBjbGFzc19zc19tYXNrKF9fbTEyOCwgaW50KTsNCmV4dGVybiBf
X21tYXNrOCAgX19jZGVjbCBfbW1fbWFza19mcGNsYXNzX3NzX21hc2soX19tbWFzazgsIF9fbTEy
OCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fZ2V0ZXhwX3JvdW5kX3NkKF9f
bTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X21hc2tfZ2V0ZXhwX3JvdW5kX3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhk
LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9nZXRleHBf
cm91bmRfc2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCk7DQpleHRlcm4g
X19tMTI4ICAgIF9fY2RlY2wgX21tX2dldGV4cF9yb3VuZF9zcyhfX20xMjgsIF9fbTEyOCwgY29u
c3QgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19nZXRleHBfcm91bmRf
c3MoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCk7DQpleHRlcm4g
X19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2dldGV4cF9yb3VuZF9zcyhfX21tYXNrOCwgX19t
MTI4LCBfX20xMjgsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX2dl
dGV4cF9zZChfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza19nZXRleHBfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0
ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9nZXRleHBfc2QoX19tbWFzazgsIF9fbTEy
OGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9nZXRleHBfc3MoX19t
MTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2dldGV4cF9z
cyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9f
Y2RlY2wgX21tX21hc2t6X2dldGV4cF9zcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0
ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9nZXRtYW50X3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEy
OGQsIGludCwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX2dl
dG1hbnRfcm91bmRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGludCwg
aW50LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9nZXRtYW50X3Jv
dW5kX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBpbnQsIGludCwgaW50KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fZ2V0bWFudF9yb3VuZF9zcyhfX20xMjgsIF9fbTEyOCwg
aW50LCBpbnQsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfZ2V0bWFu
dF9yb3VuZF9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgaW50LCBpbnQsIGlu
dCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2dldG1hbnRfcm91bmRfc3Mo
X19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQsIGludCwgaW50KTsNCmV4dGVybiBfX20xMjhk
ICAgX19jZGVjbCBfbW1fZ2V0bWFudF9zZChfX20xMjhkLCBfX20xMjhkLCBpbnQsIGludCk7DQpl
eHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfZ2V0bWFudF9zZChfX20xMjhkLCBfX21t
YXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2Nk
ZWNsIF9tbV9tYXNrel9nZXRtYW50X3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkLCBpbnQs
IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX2dldG1hbnRfc3MoX19tMTI4LCBf
X20xMjgsIGludCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19nZXRt
YW50X3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQsIGludCk7DQpleHRl
cm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X2dldG1hbnRfc3MoX19tbWFzazgsIF9fbTEy
OCwgX19tMTI4LCBpbnQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tf
bG9hZF9zZChfX20xMjhkLCBfX21tYXNrOCwgY29uc3QgZG91YmxlKik7DQpleHRlcm4gX19tMTI4
ZCAgIF9fY2RlY2wgX21tX21hc2t6X2xvYWRfc2QoX19tbWFzazgsIGNvbnN0IGRvdWJsZSopOw0K
ZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX2xvYWRfc3MoX19tMTI4LCBfX21tYXNr
OCwgY29uc3QgZmxvYXQqKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfbG9h
ZF9zcyhfX21tYXNrOCwgY29uc3QgZmxvYXQqKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBf
bW1fbWFza19tYXhfcm91bmRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQs
IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X21heF9yb3VuZF9zZChf
X21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWF4X3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4
ICAgIF9fY2RlY2wgX21tX21hc2tfbWF4X3JvdW5kX3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEy
OCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9tYXhf
cm91bmRfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAg
ICBfX2NkZWNsIF9tbV9tYXhfcm91bmRfc3MoX19tMTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4g
X19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfbWF4X3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20x
MjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfbWF4X3Nk
KF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBf
bW1fbWFza19tYXhfc3MoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJu
IF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9tYXhfc3MoX19tbWFzazgsIF9fbTEyOCwgX19t
MTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19taW5fcm91bmRfc2QoX19t
MTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAg
IF9fY2RlY2wgX21tX21hc2t6X21pbl9yb3VuZF9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4
ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWluX3JvdW5kX3NkKF9fbTEy
OGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfbWlu
X3JvdW5kX3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJu
IF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9taW5fcm91bmRfc3MoX19tbWFzazgsIF9fbTEy
OCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9taW5fcm91bmRf
c3MoX19tMTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21h
c2tfbWluX3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBf
X20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfbWluX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20x
MjhkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19taW5fc3MoX19tMTI4LCBf
X21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9t
YXNrel9taW5fc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkICAg
X19jZGVjbCBfbW1fbWFza19tb3ZlX3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20x
MjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfbW92ZV9zZChfX21tYXNr
OCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tf
bW92ZV9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4
ICAgIF9fY2RlY2wgX21tX21hc2t6X21vdmVfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsN
CmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19tdWxfcm91bmRfc2QoX19tMTI4ZCwg
X19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2Rl
Y2wgX21tX21hc2t6X211bF9yb3VuZF9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50
KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbXVsX3JvdW5kX3NkKF9fbTEyOGQsIF9f
bTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfbXVsX3JvdW5k
X3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEy
OCAgICBfX2NkZWNsIF9tbV9tYXNrel9tdWxfcm91bmRfc3MoX19tbWFzazgsIF9fbTEyOCwgX19t
MTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tdWxfcm91bmRfc3MoX19t
MTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfbXVs
X3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhk
ICAgX19jZGVjbCBfbW1fbWFza3pfbXVsX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsN
CmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19tdWxfc3MoX19tMTI4LCBfX21tYXNr
OCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9t
dWxfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fcmFuZ2Vfc2QoX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20x
MjhkICAgX19jZGVjbCBfbW1fbWFza19yYW5nZV9zZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4
ZCwgX19tMTI4ZCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFz
a3pfcmFuZ2Vfc2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCk7DQpleHRl
cm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX3JhbmdlX3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQs
IGNvbnN0IGludCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19yYW5n
ZV9yb3VuZF9zZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50
LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9yYW5nZV9yb3VuZF9z
ZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50LCBpbnQpOw0KZXh0ZXJuIF9f
bTEyOCAgICBfX2NkZWNsIF9tbV9yYW5nZV9zcyhfX20xMjgsIF9fbTEyOCwgY29uc3QgaW50KTsN
CmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19yYW5nZV9zcyhfX20xMjgsIF9fbW1h
c2s4LCBfX20xMjgsIF9fbTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVj
bCBfbW1fbWFza3pfcmFuZ2Vfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBjb25zdCBpbnQp
Ow0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9yYW5nZV9yb3VuZF9zcyhfX20xMjgsIF9f
bTEyOCwgY29uc3QgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNr
X3JhbmdlX3JvdW5kX3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBjb25zdCBp
bnQsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3JhbmdlX3JvdW5k
X3NzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgY29uc3QgaW50LCBpbnQpOw0KZXh0ZXJuIF9f
bTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX3JjcDE0X3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20x
MjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfcmNwMTRf
c2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNs
IF9tbV9yY3AxNF9zZChfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjggICAgX19jZGVj
bCBfbW1fbWFza19yY3AxNF9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpl
eHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3JjcDE0X3NzKF9fbW1hc2s4LCBfX20x
MjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX3JjcDE0X3NzKF9fbTEy
OCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19yY3AyOF9yb3Vu
ZF9zZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBf
X20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfcmNwMjhfcm91bmRfc2QoX19tbWFzazgsIF9fbTEy
OGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX3JjcDI4X3Jv
dW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wg
X21tX21hc2tfcmNwMjhfcm91bmRfc3MoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgs
IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3JjcDI4X3JvdW5kX3Nz
KF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVj
bCBfbW1fcmNwMjhfcm91bmRfc3MoX19tMTI4LCBfX20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4
ZCAgIF9fY2RlY2wgX21tX21hc2tfcmNwMjhfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQs
IF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9yY3AyOF9zZChf
X21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X3JjcDI4X3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9t
bV9tYXNrX3JjcDI4X3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfcmNwMjhfc3MoX19tbWFzazgsIF9fbTEyOCwg
X19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fcmNwMjhfc3MoX19tMTI4LCBf
X20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX3JlZHVjZV9yb3VuZF9z
ZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50LCBpbnQpOw0K
ZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9yZWR1Y2Vfcm91bmRfc2QoX19tbWFz
azgsIF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAg
X19jZGVjbCBfbW1fcmVkdWNlX3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCwg
aW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19yZWR1Y2Vfcm91bmRfc3Mo
X19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCwgaW50KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfcmVkdWNlX3JvdW5kX3NzKF9fbW1hc2s4LCBf
X20xMjgsIF9fbTEyOCwgY29uc3QgaW50LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNs
IF9tbV9yZWR1Y2Vfcm91bmRfc3MoX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCwgaW50KTsNCmV4
dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19yZWR1Y2Vfc2QoX19tMTI4ZCwgX19tbWFz
azgsIF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2Rl
Y2wgX21tX21hc2t6X3JlZHVjZV9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgY29uc3Qg
aW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fcmVkdWNlX3NkKF9fbTEyOGQsIF9f
bTEyOGQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfcmVk
dWNlX3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBjb25zdCBpbnQpOw0KZXh0
ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9yZWR1Y2Vfc3MoX19tbWFzazgsIF9fbTEy
OCwgX19tMTI4LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9yZWR1
Y2Vfc3MoX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2Rl
Y2wgX21tX21hc2tfcm91bmRzY2FsZV9yb3VuZF9zZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4
ZCwgX19tMTI4ZCwgY29uc3QgaW50LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2Nk
ZWNsIF9tbV9tYXNrel9yb3VuZHNjYWxlX3JvdW5kX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20x
MjhkLCBjb25zdCBpbnQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X3JvdW5kc2NhbGVfcm91bmRfc2QoX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50LCBjb25zdCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX3JvdW5kc2NhbGVfcm91bmRf
c3MoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCwgY29uc3QgaW50
KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfcm91bmRzY2FsZV9yb3VuZF9z
cyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgsIGNvbnN0IGludCwgY29uc3QgaW50KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fcm91bmRzY2FsZV9yb3VuZF9zcyhfX20xMjgsIF9fbTEy
OCwgY29uc3QgaW50LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9t
YXNrX3JvdW5kc2NhbGVfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGNv
bnN0IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X3JvdW5kc2NhbGVf
c2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tMTI4
ZCAgIF9fY2RlY2wgX21tX3JvdW5kc2NhbGVfc2QoX19tMTI4ZCwgX19tMTI4ZCwgY29uc3QgaW50
KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19yb3VuZHNjYWxlX3NzKF9fbTEy
OCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAg
ICBfX2NkZWNsIF9tbV9tYXNrel9yb3VuZHNjYWxlX3NzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEy
OCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fcm91bmRzY2FsZV9z
cyhfX20xMjgsIF9fbTEyOCwgY29uc3QgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBf
bW1fbWFza19yc3FydDE0X3NkKF9fbTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsN
CmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza3pfcnNxcnQxNF9zZChfX21tYXNrOCwg
X19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX3JzcXJ0MTRf
c2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tf
cnNxcnQxNF9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19t
MTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3JzcXJ0MTRfc3MoX19tbWFzazgsIF9fbTEyOCwgX19t
MTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fcnNxcnQxNF9zcyhfX20xMjgsIF9f
bTEyOCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfcnNxcnQyOF9yb3VuZF9z
ZChfX20xMjhkLCBfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20x
MjhkICAgX19jZGVjbCBfbW1fbWFza3pfcnNxcnQyOF9yb3VuZF9zZChfX21tYXNrOCwgX19tMTI4
ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fcnNxcnQyOF9y
b3VuZF9zZChfX20xMjhkLCBfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNs
IF9tbV9tYXNrX3JzcXJ0Mjhfcm91bmRfc3MoX19tMTI4LCBfX21tYXNrOCwgX19tMTI4LCBfX20x
MjgsIGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3JzcXJ0Mjhfcm91
bmRfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBf
X2NkZWNsIF9tbV9yc3FydDI4X3JvdW5kX3NzKF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJu
IF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrX3JzcXJ0Mjhfc2QoX19tMTI4ZCwgX19tbWFzazgs
IF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9tYXNrel9y
c3FydDI4X3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAg
X19jZGVjbCBfbW1fcnNxcnQyOF9zZChfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjgg
ICAgX19jZGVjbCBfbW1fbWFza19yc3FydDI4X3NzKF9fbTEyOCwgX19tbWFzazgsIF9fbTEyOCwg
X19tMTI4KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza3pfcnNxcnQyOF9zcyhf
X21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9y
c3FydDI4X3NzKF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza19zY2FsZWZfcm91bmRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQs
IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X3NjYWxlZl9yb3VuZF9z
ZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19j
ZGVjbCBfbW1fc2NhbGVmX3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4g
X19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfc2NhbGVmX3JvdW5kX3NzKF9fbTEyOCwgX19tbWFz
azgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9t
YXNrel9zY2FsZWZfcm91bmRfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0
ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9zY2FsZWZfcm91bmRfc3MoX19tMTI4LCBfX20xMjgs
IGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfc2NhbGVmX3NkKF9fbTEy
OGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVj
bCBfbW1fbWFza3pfc2NhbGVmX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVy
biBfX20xMjhkICAgX19jZGVjbCBfbW1fc2NhbGVmX3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0KZXh0
ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrX3NjYWxlZl9zcyhfX20xMjgsIF9fbW1hc2s4
LCBfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3Nj
YWxlZl9zcyhfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2Nk
ZWNsIF9tbV9zY2FsZWZfc3MoX19tMTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2Nk
ZWNsIF9tbV9tYXNrX3NxcnRfcm91bmRfc2QoX19tMTI4ZCwgX19tbWFzazgsIF9fbTEyOGQsIF9f
bTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2t6X3NxcnRfcm91
bmRfc2QoX19tbWFzazgsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAg
IF9fY2RlY2wgX21tX3NxcnRfcm91bmRfc2QoX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19zcXJ0X3JvdW5kX3NzKF9fbTEyOCwgX19tbWFz
azgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9t
YXNrel9zcXJ0X3JvdW5kX3NzKF9fbW1hc2s4LCBfX20xMjgsIF9fbTEyOCwgaW50KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fc3FydF9yb3VuZF9zcyhfX20xMjgsIF9fbTEyOCwgaW50
KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19zcXJ0X3NkKF9fbTEyOGQsIF9f
bW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1f
bWFza3pfc3FydF9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpleHRlcm4gX19tMTI4
ICAgIF9fY2RlY2wgX21tX21hc2tfc3FydF9zcyhfX20xMjgsIF9fbW1hc2s4LCBfX20xMjgsIF9f
bTEyOCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2t6X3NxcnRfc3MoX19tbWFz
azgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfbW1fbWFza19z
dG9yZV9zZChkb3VibGUqLCBfX21tYXNrOCwgX19tMTI4ZCk7DQpleHRlcm4gdm9pZCAgICAgIF9f
Y2RlY2wgX21tX21hc2tfc3RvcmVfc3MoZmxvYXQqLCBfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVy
biBfX20xMjhkICAgX19jZGVjbCBfbW1fbWFza19zdWJfcm91bmRfc2QoX19tMTI4ZCwgX19tbWFz
azgsIF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21t
X21hc2t6X3N1Yl9yb3VuZF9zZChfX21tYXNrOCwgX19tMTI4ZCwgX19tMTI4ZCwgaW50KTsNCmV4
dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fc3ViX3JvdW5kX3NkKF9fbTEyOGQsIF9fbTEyOGQs
IGludCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21tX21hc2tfc3ViX3JvdW5kX3NzKF9f
bTEyOCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBf
X2NkZWNsIF9tbV9tYXNrel9zdWJfcm91bmRfc3MoX19tbWFzazgsIF9fbTEyOCwgX19tMTI4LCBp
bnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9zdWJfcm91bmRfc3MoX19tMTI4LCBf
X20xMjgsIGludCk7DQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX21hc2tfc3ViX3NkKF9f
bTEyOGQsIF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVybiBfX20xMjhkICAgX19j
ZGVjbCBfbW1fbWFza3pfc3ViX3NkKF9fbW1hc2s4LCBfX20xMjhkLCBfX20xMjhkKTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fbWFza19zdWJfc3MoX19tMTI4LCBfX21tYXNrOCwgX19t
MTI4LCBfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9tYXNrel9zdWJfc3Mo
X19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCg0KDQoNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0
IF9fY2RlY2wgX21tX2N2dHNkX3U2NChfX20xMjhkKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0
IF9fY2RlY2wgX21tX2N2dHNzX3U2NChfX20xMjgpOw0KZXh0ZXJuIHVuc2lnbmVkIF9faW50NjQg
X19jZGVjbCBfbW1fY3Z0dHNkX3U2NChfX20xMjhkKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0
IF9fY2RlY2wgX21tX2N2dHRzc191NjQoX19tMTI4KTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0
IF9fY2RlY2wgX21tX2N2dF9yb3VuZHNkX3U2NChfX20xMjhkLCBpbnQpOw0KZXh0ZXJuIHVuc2ln
bmVkIF9faW50NjQgX19jZGVjbCBfbW1fY3Z0X3JvdW5kc3NfdTY0KF9fbTEyOCwgaW50KTsNCmV4
dGVybiB1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX21tX2N2dHRfcm91bmRzZF91NjQoX19tMTI4
ZCwgaW50KTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX21tX2N2dHRfcm91bmRz
c191NjQoX19tMTI4LCBpbnQpOw0KDQpleHRlcm4gX19tMTI4ZCAgIF9fY2RlY2wgX21tX2N2dGk2
NF9zZChfX20xMjhkLCBfX2ludDY0KTsNCmV4dGVybiBfX20xMjggICAgX19jZGVjbCBfbW1fY3Z0
aTY0X3NzKF9fbTEyOCwgX19pbnQ2NCk7DQpleHRlcm4gX19pbnQ2NCAgIF9fY2RlY2wgX21tX2N2
dHNkX2k2NChfX20xMjhkKTsNCmV4dGVybiBfX2ludDY0ICAgX19jZGVjbCBfbW1fY3Z0c3NfaTY0
KF9fbTEyOCk7DQpleHRlcm4gX19pbnQ2NCAgIF9fY2RlY2wgX21tX2N2dHRzZF9pNjQoX19tMTI4
ZCk7DQpleHRlcm4gX19pbnQ2NCAgIF9fY2RlY2wgX21tX2N2dHRzc19pNjQoX19tMTI4KTsNCmV4
dGVybiBfX2ludDY0ICAgX19jZGVjbCBfbW1fY3Z0dF9yb3VuZHNkX2k2NChfX20xMjhkLCBpbnQp
Ow0KZXh0ZXJuIF9faW50NjQgICBfX2NkZWNsIF9tbV9jdnR0X3JvdW5kc2Rfc2k2NChfX20xMjhk
LCBpbnQpOw0KZXh0ZXJuIF9faW50NjQgICBfX2NkZWNsIF9tbV9jdnR0X3JvdW5kc3NfaTY0KF9f
bTEyOCwgaW50KTsNCmV4dGVybiBfX2ludDY0ICAgX19jZGVjbCBfbW1fY3Z0dF9yb3VuZHNzX3Np
NjQoX19tMTI4LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGQgICBfX2NkZWNsIF9tbV9jdnR1NjRfc2Qo
X19tMTI4ZCwgdW5zaWduZWQgX19pbnQ2NCk7DQpleHRlcm4gX19tMTI4ICAgIF9fY2RlY2wgX21t
X2N2dHU2NF9zcyhfX20xMjgsIHVuc2lnbmVkIF9faW50NjQpOw0KZXh0ZXJuIF9fbTEyOGQgICBf
X2NkZWNsIF9tbV9jdnRfcm91bmRpNjRfc2QoX19tMTI4ZCwgX19pbnQ2NCwgaW50KTsNCmV4dGVy
biBfX20xMjggICAgX19jZGVjbCBfbW1fY3Z0X3JvdW5kaTY0X3NzKF9fbTEyOCwgX19pbnQ2NCwg
aW50KTsNCmV4dGVybiBfX2ludDY0ICAgX19jZGVjbCBfbW1fY3Z0X3JvdW5kc2RfaTY0KF9fbTEy
OGQsIGludCk7DQpleHRlcm4gX19pbnQ2NCAgIF9fY2RlY2wgX21tX2N2dF9yb3VuZHNkX3NpNjQo
X19tMTI4ZCwgaW50KTsNCmV4dGVybiBfX20xMjhkICAgX19jZGVjbCBfbW1fY3Z0X3JvdW5kc2k2
NF9zZChfX20xMjhkLCBfX2ludDY0LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9t
bV9jdnRfcm91bmRzaTY0X3NzKF9fbTEyOCwgX19pbnQ2NCwgaW50KTsNCmV4dGVybiBfX2ludDY0
ICAgX19jZGVjbCBfbW1fY3Z0X3JvdW5kc3NfaTY0KF9fbTEyOCwgaW50KTsNCmV4dGVybiBfX2lu
dDY0ICAgX19jZGVjbCBfbW1fY3Z0X3JvdW5kc3Nfc2k2NChfX20xMjgsIGludCk7DQpleHRlcm4g
X19tMTI4ZCAgIF9fY2RlY2wgX21tX2N2dF9yb3VuZHU2NF9zZChfX20xMjhkLCB1bnNpZ25lZCBf
X2ludDY0LCBpbnQpOw0KZXh0ZXJuIF9fbTEyOCAgICBfX2NkZWNsIF9tbV9jdnRfcm91bmR1NjRf
c3MoX19tMTI4LCB1bnNpZ25lZCBfX2ludDY0LCBpbnQpOw0KDQojbGluZSA0MzE5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHptbWludHJpbi5oIg0K
DQoNCmV4dGVybiBfX201MTJkICAgX19jZGVjbCBfbW01MTJfemV4dHBkMTI4X3BkNTEyKF9fbTEy
OGQpOw0KZXh0ZXJuIF9fbTUxMmQgICBfX2NkZWNsIF9tbTUxMl96ZXh0cGQyNTZfcGQ1MTIoX19t
MjU2ZCk7DQpleHRlcm4gX19tNTEyICAgIF9fY2RlY2wgX21tNTEyX3pleHRwczEyOF9wczUxMihf
X20xMjgpOw0KZXh0ZXJuIF9fbTUxMiAgICBfX2NkZWNsIF9tbTUxMl96ZXh0cHMyNTZfcHM1MTIo
X19tMjU2KTsNCmV4dGVybiBfX201MTJpICAgX19jZGVjbCBfbW01MTJfemV4dHNpMTI4X3NpNTEy
KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTUxMmkgICBfX2NkZWNsIF9tbTUxMl96ZXh0c2kyNTZfc2k1
MTIoX19tMjU2aSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA0MzU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHptbWludHJpbi5oIg0KDQoNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wg
X21tX21hZGQ1MmhpX2VwdTY0KF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTEyOGkgX19jZGVjbCBfbW1fbWFza19tYWRkNTJoaV9lcHU2NChfX20xMjhpLCBfX21tYXNrOCwg
X19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrel9tYWRk
NTJoaV9lcHU2NChfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYWRkNTJoaV9lcHU2NChfX20yNTZpLCBfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfbWFkZDUyaGlfZXB1
NjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1Nmkg
X19jZGVjbCBfbW0yNTZfbWFza3pfbWFkZDUyaGlfZXB1NjQoX19tbWFzazgsIF9fbTI1NmksIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFkZDUyaGlf
ZXB1NjQoX19tNTEyaSwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX21hZGQ1MmhpX2VwdTY0KF9fbTUxMmksIF9fbW1hc2s4LCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X21hZGQ1MmhpX2Vw
dTY0KF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTEy
OGkgX19jZGVjbCBfbW1fbWFkZDUybG9fZXB1NjQoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX21hZGQ1MmxvX2VwdTY0KF9fbTEyOGks
IF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21t
X21hc2t6X21hZGQ1MmxvX2VwdTY0KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hZGQ1MmxvX2VwdTY0KF9fbTI1Nmks
IF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza19t
YWRkNTJsb19lcHU2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9tYWRkNTJsb19lcHU2NChfX21tYXNrOCwg
X19tMjU2aSwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYWRkNTJsb19lcHU2NChfX201MTJpLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201
MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfbWFkZDUybG9fZXB1NjQoX19tNTEyaSwgX19tbWFzazgs
IF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pf
bWFkZDUybG9fZXB1NjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkpOw0KDQoN
CmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX3Blcm11dGV4dmFyX2VwaTgoX19tMTI4aSwgX19t
MTI4aSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX3Blcm11dGV4dmFyX2VwaTgo
X19tMTI4aSwgX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9f
Y2RlY2wgX21tX21hc2t6X3Blcm11dGV4dmFyX2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3Blcm11dGV4dmFyX2VwaTgoX19t
MjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrX3Blcm11
dGV4dmFyX2VwaTgoX19tMjU2aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVy
biBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2t6X3Blcm11dGV4dmFyX2VwaTgoX19tbWFzazMy
LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3Blcm11
dGV4dmFyX2VwaTgoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrX3Blcm11dGV4dmFyX2VwaTgoX19tNTEyaSwgX19tbWFzazY0LCBfX201MTJpLCBf
X201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3Blcm11dGV4dmFy
X2VwaTgoX19tbWFzazY0LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTEyOGkgX19j
ZGVjbCBfbW1fcGVybXV0ZXgydmFyX2VwaTgoX19tMTI4aSwgX19tMTI4aSAsIF9fbTEyOGkpOw0K
ZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza19wZXJtdXRleDJ2YXJfZXBpOChfX20xMjhp
LCBfX21tYXNrMTYsIF9fbTEyOGkgLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wg
X21tX21hc2syX3Blcm11dGV4MnZhcl9lcGk4KF9fbTEyOGksIF9fbTEyOGkgLCBfX21tYXNrMTYs
IF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza3pfcGVybXV0ZXgydmFy
X2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpICwgX19tMTI4aSk7DQpleHRlcm4gX19t
MjU2aSBfX2NkZWNsIF9tbTI1Nl9wZXJtdXRleDJ2YXJfZXBpOChfX20yNTZpLCBfX20yNTZpLCBf
X20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfcGVybXV0ZXgydmFy
X2VwaTgoX19tMjU2aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tMjU2X21hc2syX3Blcm11dGV4MnZhcl9lcGk4KF9fbTI1NmksIF9fbTI1
NmksIF9fbW1hc2szMiwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9t
YXNrel9wZXJtdXRleDJ2YXJfZXBpOChfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmksIF9fbTI1
NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfcGVybXV0ZXgydmFyX2VwaTgoX19t
NTEyaSwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9t
YXNrX3Blcm11dGV4MnZhcl9lcGk4KF9fbTUxMmksIF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEy
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrMl9wZXJtdXRleDJ2YXJfZXBp
OChfX201MTJpLCBfX201MTJpLCBfX21tYXNrNjQsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkg
X19jZGVjbCBfbW01MTJfbWFza3pfcGVybXV0ZXgydmFyX2VwaTgoX19tbWFzazY0LCBfX201MTJp
LCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbXVsdGlz
aGlmdF9lcGk2NF9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVj
bCBfbW1fbWFza19tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19tMTI4aSwgX19tbWFzazE2LCBfX20x
MjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2t6X211bHRpc2hp
ZnRfZXBpNjRfZXBpOChfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1
NmkgX19jZGVjbCBfbW0yNTZfbXVsdGlzaGlmdF9lcGk2NF9lcGk4KF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza19tdWx0aXNoaWZ0X2VwaTY0X2Vw
aTgoX19tMjU2aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZp
IF9fY2RlY2wgX21tMjU2X21hc2t6X211bHRpc2hpZnRfZXBpNjRfZXBpOChfX21tYXNrMzIsIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbXVsdGlzaGlm
dF9lcGk2NF9lcGk4KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfbWFza19tdWx0aXNoaWZ0X2VwaTY0X2VwaTgoX19tNTEyaSwgX19tbWFzazY0LCBfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X211bHRp
c2hpZnRfZXBpNjRfZXBpOChfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQoNCmV4dGVy
biBfX20xMjhpIF9fY2RlY2wgX21tX2RwYnVzZF9lcGkzMihfX20xMjhpLCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tfZHBidXNkX2VwaTMyKF9fbTEy
OGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wg
X21tX21hc2t6X2RwYnVzZF9lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9kcGJ1c2RfZXBpMzIoX19tMjU2aSwg
X19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrX2Rw
YnVzZF9lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9kcGJ1c2RfZXBpMzIoX19tbWFzazgsIF9fbTI1
NmksIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfZHBi
dXNkX2VwaTMyKF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19j
ZGVjbCBfbW01MTJfbWFza19kcGJ1c2RfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJp
LCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2RwYnVzZF9l
cGkzMihfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkpOw0KDQpleHRlcm4gX19t
MTI4aSBfX2NkZWNsIF9tbV9kcGJ1c2RzX2VwaTMyKF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza19kcGJ1c2RzX2VwaTMyKF9fbTEyOGks
IF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21t
X21hc2t6X2RwYnVzZHNfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfZHBidXNkc19lcGkzMihfX20yNTZpLCBf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfZHBi
dXNkc19lcGkzMihfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4g
X19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9kcGJ1c2RzX2VwaTMyKF9fbW1hc2s4LCBfX20y
NTZpLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2Rw
YnVzZHNfZXBpMzIoX19tNTEyaSwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9tYXNrX2RwYnVzZHNfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201
MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X2RwYnVz
ZHNfZXBpMzIoX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpLCBfX201MTJpKTsNCg0KZXh0ZXJu
IF9fbTEyOGkgX19jZGVjbCBfbW1fZHB3c3NkX2VwaTMyKF9fbTEyOGksIF9fbTEyOGksIF9fbTEy
OGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza19kcHdzc2RfZXBpMzIoX19tMTI4
aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBf
bW1fbWFza3pfZHB3c3NkX2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBfX20xMjhp
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2Rwd3NzZF9lcGkzMihfX20yNTZpLCBf
X20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfZHB3
c3NkX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2t6X2Rwd3NzZF9lcGkzMihfX21tYXNrOCwgX19tMjU2
aSwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9kcHdz
c2RfZXBpMzIoX19tNTEyaSwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX2Rwd3NzZF9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmks
IF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfZHB3c3NkX2Vw
aTMyKF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSwgX19tNTEyaSk7DQoNCmV4dGVybiBfX20x
MjhpIF9fY2RlY2wgX21tX2Rwd3NzZHNfZXBpMzIoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX2Rwd3NzZHNfZXBpMzIoX19tMTI4aSwg
X19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1f
bWFza3pfZHB3c3Nkc19lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9kcHdzc2RzX2VwaTMyKF9fbTI1NmksIF9f
bTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza19kcHdz
c2RzX2VwaTMyKF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2t6X2Rwd3NzZHNfZXBpMzIoX19tbWFzazgsIF9fbTI1
NmksIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfZHB3
c3Nkc19lcGkzMihfX201MTJpLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX21hc2tfZHB3c3Nkc19lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUx
MmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfZHB3c3Nk
c19lcGkzMihfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkpOw0KDQoNCmV4dGVy
biBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2Flc2VuY19lcGkxMjgoX19tMjU2aSwgX19tMjU2aSk7
DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hZXNlbmNfZXBpMTI4KF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfYWVzZW5jbGFzdF9lcGkxMjgo
X19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hZXNlbmNs
YXN0X2VwaTEyOChfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21t
MjU2X2Flc2RlY19lcGkxMjgoX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9hZXNkZWNfZXBpMTI4KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTI1
NmkgX19jZGVjbCBfbW0yNTZfYWVzZGVjbGFzdF9lcGkxMjgoX19tMjU2aSwgX19tMjU2aSk7DQpl
eHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9hZXNkZWNsYXN0X2VwaTEyOChfX201MTJpLCBf
X201MTJpKTsNCg0KDQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9jbG11bGVwaTY0X2Vw
aTEyOChfX20yNTZpLCBfX20yNTZpLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVj
bCBfbW01MTJfY2xtdWxlcGk2NF9lcGkxMjgoX19tNTEyaSwgX19tNTEyaSwgY29uc3QgaW50KTsN
Cg0KDQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9wb3BjbnRfZXBpMzIoX19tMTI4aSk7DQpl
eHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX3BvcGNudF9lcGkzMihfX20xMjhpLCBfX21t
YXNrOCwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrel9wb3BjbnRf
ZXBpMzIoX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZf
cG9wY250X2VwaTMyKF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFz
a19wb3BjbnRfZXBpMzIoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1
NmkgX19jZGVjbCBfbW0yNTZfbWFza3pfcG9wY250X2VwaTMyKF9fbW1hc2s4LCBfX20yNTZpKTsN
CmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3BvcGNudF9lcGkzMihfX201MTJpKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfcG9wY250X2VwaTMyKF9fbTUxMmksIF9f
bW1hc2sxNiwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9w
b3BjbnRfZXBpMzIoX19tbWFzazE2LCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVj
bCBfbW1fcG9wY250X2VwaTY0KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1f
bWFza19wb3BjbnRfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTEyOGkgX19jZGVjbCBfbW1fbWFza3pfcG9wY250X2VwaTY0KF9fbW1hc2s4LCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3BvcGNudF9lcGk2NChfX20yNTZpKTsNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfcG9wY250X2VwaTY0KF9fbTI1NmksIF9f
bW1hc2s4LCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2t6X3Bv
cGNudF9lcGk2NChfX21tYXNrOCwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9wb3BjbnRfZXBpNjQoX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUx
Ml9tYXNrX3BvcGNudF9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19tNTEyaSk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9wb3BjbnRfZXBpNjQoX19tbWFzazgsIF9fbTUx
MmkpOw0KDQoNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX3BvcGNudF9lcGk4KF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza19wb3BjbnRfZXBpOChfX20xMjhpLCBf
X21tYXNrMTYsIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza3pfcG9w
Y250X2VwaTgoX19tbWFzazE2LCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21t
MjU2X3BvcGNudF9lcGk4KF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZf
bWFza19wb3BjbnRfZXBpOChfX20yNTZpLCBfX21tYXNrMzIsIF9fbTI1NmkpOw0KZXh0ZXJuIF9f
bTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza3pfcG9wY250X2VwaTgoX19tbWFzazMyLCBfX20yNTZp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3BvcGNudF9lcGk4KF9fbTUxMmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19wb3BjbnRfZXBpOChfX201MTJpLCBf
X21tYXNrNjQsIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pf
cG9wY250X2VwaTgoX19tbWFzazY0LCBfX201MTJpKTsNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVj
bCBfbW1fcG9wY250X2VwaTE2KF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1f
bWFza19wb3BjbnRfZXBpMTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGkpOw0KZXh0ZXJuIF9f
bTEyOGkgX19jZGVjbCBfbW1fbWFza3pfcG9wY250X2VwaTE2KF9fbW1hc2s4LCBfX20xMjhpKTsN
CmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3BvcGNudF9lcGkxNihfX20yNTZpKTsNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfcG9wY250X2VwaTE2KF9fbTI1NmksIF9f
bW1hc2sxNiwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9w
b3BjbnRfZXBpMTYoX19tbWFzazE2LCBfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wg
X21tNTEyX3BvcGNudF9lcGkxNihfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2tfcG9wY250X2VwaTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSk7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9wb3BjbnRfZXBpMTYoX19tbWFzazMyLCBf
X201MTJpKTsNCg0KZXh0ZXJuIF9fbW1hc2sxNiBfX2NkZWNsIF9tbV9iaXRzaHVmZmxlX2VwaTY0
X21hc2soX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX21tX21h
c2tfYml0c2h1ZmZsZV9lcGk2NF9tYXNrKF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSk7DQpl
eHRlcm4gX19tbWFzazMyIF9fY2RlY2wgX21tMjU2X2JpdHNodWZmbGVfZXBpNjRfbWFzayhfX20y
NTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVjbCBfbW0yNTZfbWFza19iaXRz
aHVmZmxlX2VwaTY0X21hc2soX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBf
X21tYXNrNjQgX19jZGVjbCBfbW01MTJfYml0c2h1ZmZsZV9lcGk2NF9tYXNrKF9fbTUxMmksIF9f
bTUxMmkpOw0KZXh0ZXJuIF9fbW1hc2s2NCBfX2NkZWNsIF9tbTUxMl9tYXNrX2JpdHNodWZmbGVf
ZXBpNjRfbWFzayhfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmkpOw0KDQoNCmV4dGVybiBfX20x
MjhpIF9fY2RlY2wgX21tX2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoX19tMTI4aSwgX19tMTI4
aSwgaW50KTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tfZ2YycDhhZmZpbmVpbnZf
ZXBpNjRfZXBpOChfX20xMjhpLCBfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpl
eHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrel9nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4
KF9fbW1hc2sxNiwgX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2Rl
Y2wgX21tMjU2X2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoX19tMjU2aSwgX19tMjU2aSwgaW50
KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfZ2YycDhhZmZpbmVpbnZfZXBp
NjRfZXBpOChfX20yNTZpLCBfX21tYXNrMzIsIF9fbTI1NmksIF9fbTI1NmksIGludCk7DQpleHRl
cm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4
KF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2Rl
Y2wgX21tNTEyX2dmMnA4YWZmaW5laW52X2VwaTY0X2VwaTgoX19tNTEyaSwgX19tNTEyaSwgaW50
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfZ2YycDhhZmZpbmVpbnZfZXBp
NjRfZXBpOChfX201MTJpLCBfX21tYXNrNjQsIF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9nZjJwOGFmZmluZWludl9lcGk2NF9lcGk4
KF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX20xMjhpIF9fY2Rl
Y2wgX21tX2dmMnA4YWZmaW5lX2VwaTY0X2VwaTgoX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4
dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOChfX20x
MjhpLCBfX21tYXNrMTYsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMTI4aSBf
X2NkZWNsIF9tbV9tYXNrel9nZjJwOGFmZmluZV9lcGk2NF9lcGk4KF9fbW1hc2sxNiwgX19tMTI4
aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2dmMnA4YWZm
aW5lX2VwaTY0X2VwaTgoX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9f
Y2RlY2wgX21tMjU2X21hc2tfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOChfX20yNTZpLCBfX21tYXNr
MzIsIF9fbTI1NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1
Nl9tYXNrel9nZjJwOGFmZmluZV9lcGk2NF9lcGk4KF9fbW1hc2szMiwgX19tMjU2aSwgX19tMjU2
aSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2dmMnA4YWZmaW5lX2VwaTY0
X2VwaTgoX19tNTEyaSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21t
NTEyX21hc2tfZ2YycDhhZmZpbmVfZXBpNjRfZXBpOChfX201MTJpLCBfX21tYXNrNjQsIF9fbTUx
MmksIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9n
ZjJwOGFmZmluZV9lcGk2NF9lcGk4KF9fbW1hc2s2NCwgX19tNTEyaSwgX19tNTEyaSwgaW50KTsN
CmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX2dmMnA4bXVsX2VwaTgoX19tMTI4aSwgX19tMTI4
aSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX2dmMnA4bXVsX2VwaTgoX19tMTI4
aSwgX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wg
X21tX21hc2t6X2dmMnA4bXVsX2VwaTgoX19tbWFzazE2LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X2dmMnA4bXVsX2VwaTgoX19tMjU2aSwgX19tMjU2
aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrX2dmMnA4bXVsX2VwaTgoX19t
MjU2aSwgX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2Rl
Y2wgX21tMjU2X21hc2t6X2dmMnA4bXVsX2VwaTgoX19tbWFzazMyLCBfX20yNTZpLCBfX20yNTZp
KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX2dmMnA4bXVsX2VwaTgoX19tNTEyaSwg
X19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX2dmMnA4bXVsX2Vw
aTgoX19tNTEyaSwgX19tbWFzazY0LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2t6X2dmMnA4bXVsX2VwaTgoX19tbWFzazY0LCBfX201MTJpLCBf
X201MTJpKTsNCg0KDQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9zaGxkaV9lcGkxNihfX20x
MjhpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza19zaGxk
aV9lcGkxNihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVy
biBfX20xMjhpIF9fY2RlY2wgX21tX21hc2t6X3NobGRpX2VwaTE2KF9fbW1hc2s4LCBfX20xMjhp
LCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2hsZGlfZXBp
MTYoX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2
X21hc2tfc2hsZGlfZXBpMTYoX19tMjU2aSwgX19tbWFzazE2LCBfX20yNTZpLCBfX20yNTZpLCBp
bnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza3pfc2hsZGlfZXBpMTYoX19t
bWFzazE2LCBfX20yNTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBf
bW01MTJfc2hsZGlfZXBpMTYoX19tNTEyaSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJp
IF9fY2RlY2wgX21tNTEyX21hc2tfc2hsZGlfZXBpMTYoX19tNTEyaSwgX19tbWFzazMyLCBfX201
MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pf
c2hsZGlfZXBpMTYoX19tbWFzazMyLCBfX201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9f
bTEyOGkgX19jZGVjbCBfbW1fc2hsZGlfZXBpMzIoX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4
dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tfc2hsZGlfZXBpMzIoX19tMTI4aSwgX19tbWFz
azgsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9t
YXNrel9zaGxkaV9lcGkzMihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVy
biBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NobGRpX2VwaTMyKF9fbTI1NmksIF9fbTI1NmksIGlu
dCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NobGRpX2VwaTMyKF9fbTI1
NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19j
ZGVjbCBfbW0yNTZfbWFza3pfc2hsZGlfZXBpMzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1Nmks
IGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zaGxkaV9lcGkzMihfX201MTJp
LCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zaGxk
aV9lcGkzMihfX201MTJpLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRl
cm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zaGxkaV9lcGkzMihfX21tYXNrMTYsIF9f
bTUxMmksIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9zaGxkaV9l
cGk2NChfX20xMjhpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1f
bWFza19zaGxkaV9lcGk2NChfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgaW50
KTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2t6X3NobGRpX2VwaTY0KF9fbW1hc2s4
LCBfX20xMjhpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZf
c2hsZGlfZXBpNjQoX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2Rl
Y2wgX21tMjU2X21hc2tfc2hsZGlfZXBpNjQoX19tMjU2aSwgX19tbWFzazgsIF9fbTI1NmksIF9f
bTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zaGxkaV9l
cGk2NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9f
Y2RlY2wgX21tNTEyX3NobGRpX2VwaTY0KF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRlcm4g
X19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NobGRpX2VwaTY0KF9fbTUxMmksIF9fbW1hc2s4
LCBfX201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza3pfc2hsZGlfZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRl
cm4gX19tMTI4aSBfX2NkZWNsIF9tbV9zaGxkdl9lcGkxNihfX20xMjhpLCBfX20xMjhpLCBfX20x
MjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tfc2hsZHZfZXBpMTYoX19tMTI4
aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBf
bW1fbWFza3pfc2hsZHZfZXBpMTYoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfc2hsZHZfZXBpMTYoX19tMjU2aSwgX19t
MjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NobGR2
X2VwaTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19t
MjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zaGxkdl9lcGkxNihfX21tYXNrMTYsIF9fbTI1Nmks
IF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc2hsZHZf
ZXBpMTYoX19tNTEyaSwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9tYXNrX3NobGR2X2VwaTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwgX19t
NTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zaGxkdl9lcGkxNihf
X21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkgX19j
ZGVjbCBfbW1fc2hsZHZfZXBpMzIoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4g
X19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX3NobGR2X2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBf
X20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2t6X3NobGR2
X2VwaTMyKF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20y
NTZpIF9fY2RlY2wgX21tMjU2X3NobGR2X2VwaTMyKF9fbTI1NmksIF9fbTI1NmksIF9fbTI1Nmkp
Ow0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza19zaGxkdl9lcGkzMihfX20yNTZp
LCBfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9t
bTI1Nl9tYXNrel9zaGxkdl9lcGkzMihfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSwgX19tMjU2
aSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9zaGxkdl9lcGkzMihfX201MTJpLCBf
X201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc2hs
ZHZfZXBpMzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBf
X201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3NobGR2X2VwaTMyKF9fbW1hc2sxNiwgX19tNTEy
aSwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9zaGxkdl9l
cGk2NChfX20xMjhpLCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wg
X21tX21hc2tfc2hsZHZfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGkp
Ow0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza3pfc2hsZHZfZXBpNjQoX19tbWFzazgs
IF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0y
NTZfc2hsZHZfZXBpNjQoX19tMjU2aSwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tMjU2
aSBfX2NkZWNsIF9tbTI1Nl9tYXNrX3NobGR2X2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20y
NTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2t6X3NobGR2
X2VwaTY0KF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX201
MTJpIF9fY2RlY2wgX21tNTEyX3NobGR2X2VwaTY0KF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza19zaGxkdl9lcGk2NChfX201MTJp
LCBfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9t
bTUxMl9tYXNrel9zaGxkdl9lcGk2NChfX21tYXNrOCwgX19tNTEyaSwgX19tNTEyaSwgX19tNTEy
aSk7DQoNCg0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fc2hyZGlfZXBpMTYoX19tMTI4aSwg
X19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tfc2hyZGlfZXBp
MTYoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19t
MTI4aSBfX2NkZWNsIF9tbV9tYXNrel9zaHJkaV9lcGkxNihfX21tYXNrOCwgX19tMTI4aSwgX19t
MTI4aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NocmRpX2VwaTE2KF9f
bTI1NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNr
X3NocmRpX2VwaTE2KF9fbTI1NmksIF9fbW1hc2sxNiwgX19tMjU2aSwgX19tMjU2aSwgaW50KTsN
CmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2t6X3NocmRpX2VwaTE2KF9fbW1hc2sx
NiwgX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEy
X3NocmRpX2VwaTE2KF9fbTUxMmksIF9fbTUxMmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3NocmRpX2VwaTE2KF9fbTUxMmksIF9fbW1hc2szMiwgX19tNTEyaSwg
X19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6X3NocmRp
X2VwaTE2KF9fbW1hc2szMiwgX19tNTEyaSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX20xMjhp
IF9fY2RlY2wgX21tX3NocmRpX2VwaTMyKF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4g
X19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX3NocmRpX2VwaTMyKF9fbTEyOGksIF9fbW1hc2s4LCBf
X20xMjhpLCBfX20xMjhpLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fbWFza3pf
c2hyZGlfZXBpMzIoX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpleHRlcm4gX19t
MjU2aSBfX2NkZWNsIF9tbTI1Nl9zaHJkaV9lcGkzMihfX20yNTZpLCBfX20yNTZpLCBpbnQpOw0K
ZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza19zaHJkaV9lcGkzMihfX20yNTZpLCBf
X21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wg
X21tMjU2X21hc2t6X3NocmRpX2VwaTMyKF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZpLCBpbnQp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc2hyZGlfZXBpMzIoX19tNTEyaSwgX19t
NTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc2hyZGlfZXBp
MzIoX19tNTEyaSwgX19tbWFzazE2LCBfX201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9f
bTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc2hyZGlfZXBpMzIoX19tbWFzazE2LCBfX201MTJp
LCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fc2hyZGlfZXBpNjQo
X19tMTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2tf
c2hyZGlfZXBpNjQoX19tMTI4aSwgX19tbWFzazgsIF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpl
eHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrel9zaHJkaV9lcGk2NChfX21tYXNrOCwgX19t
MTI4aSwgX19tMTI4aSwgaW50KTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NocmRp
X2VwaTY0KF9fbTI1NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9t
bTI1Nl9tYXNrX3NocmRpX2VwaTY0KF9fbTI1NmksIF9fbW1hc2s4LCBfX20yNTZpLCBfX20yNTZp
LCBpbnQpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza3pfc2hyZGlfZXBpNjQo
X19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIGludCk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNs
IF9tbTUxMl9zaHJkaV9lcGk2NChfX201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9fbTUx
MmkgX19jZGVjbCBfbW01MTJfbWFza19zaHJkaV9lcGk2NChfX201MTJpLCBfX21tYXNrOCwgX19t
NTEyaSwgX19tNTEyaSwgaW50KTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2t6
X3NocmRpX2VwaTY0KF9fbW1hc2s4LCBfX201MTJpLCBfX201MTJpLCBpbnQpOw0KZXh0ZXJuIF9f
bTEyOGkgX19jZGVjbCBfbW1fc2hyZHZfZXBpMTYoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7
DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrX3NocmR2X2VwaTE2KF9fbTEyOGksIF9f
bW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21h
c2t6X3NocmR2X2VwaTE2KF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpLCBfX20xMjhpKTsNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3NocmR2X2VwaTE2KF9fbTI1NmksIF9fbTI1Nmks
IF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZfbWFza19zaHJkdl9lcGkx
NihfX20yNTZpLCBfX21tYXNrMTYsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1Nmkg
X19jZGVjbCBfbW0yNTZfbWFza3pfc2hyZHZfZXBpMTYoX19tbWFzazE2LCBfX20yNTZpLCBfX20y
NTZpLCBfX20yNTZpKTsNCmV4dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX3NocmR2X2VwaTE2
KF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01
MTJfbWFza19zaHJkdl9lcGkxNihfX201MTJpLCBfX21tYXNrMzIsIF9fbTUxMmksIF9fbTUxMmkp
Ow0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfbWFza3pfc2hyZHZfZXBpMTYoX19tbWFz
azMyLCBfX201MTJpLCBfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX20xMjhpIF9fY2RlY2wg
X21tX3NocmR2X2VwaTMyKF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KZXh0ZXJuIF9fbTEy
OGkgX19jZGVjbCBfbW1fbWFza19zaHJkdl9lcGkzMihfX20xMjhpLCBfX21tYXNrOCwgX19tMTI4
aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9tYXNrel9zaHJkdl9lcGkz
MihfX21tYXNrOCwgX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMjU2aSBf
X2NkZWNsIF9tbTI1Nl9zaHJkdl9lcGkzMihfX20yNTZpLCBfX20yNTZpLCBfX20yNTZpKTsNCmV4
dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X21hc2tfc2hyZHZfZXBpMzIoX19tMjU2aSwgX19t
bWFzazgsIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19jZGVjbCBfbW0yNTZf
bWFza3pfc2hyZHZfZXBpMzIoX19tbWFzazgsIF9fbTI1NmksIF9fbTI1NmksIF9fbTI1NmkpOw0K
ZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJfc2hyZHZfZXBpMzIoX19tNTEyaSwgX19tNTEy
aSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfX2NkZWNsIF9tbTUxMl9tYXNrX3NocmR2X2Vw
aTMyKF9fbTUxMmksIF9fbW1hc2sxNiwgX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEy
aSBfX2NkZWNsIF9tbTUxMl9tYXNrel9zaHJkdl9lcGkzMihfX21tYXNrMTYsIF9fbTUxMmksIF9f
bTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTEyOGkgX19jZGVjbCBfbW1fc2hyZHZfZXBpNjQo
X19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpleHRlcm4gX19tMTI4aSBfX2NkZWNsIF9tbV9t
YXNrX3NocmR2X2VwaTY0KF9fbTEyOGksIF9fbW1hc2s4LCBfX20xMjhpLCBfX20xMjhpKTsNCmV4
dGVybiBfX20xMjhpIF9fY2RlY2wgX21tX21hc2t6X3NocmR2X2VwaTY0KF9fbW1hc2s4LCBfX20x
MjhpLCBfX20xMjhpLCBfX20xMjhpKTsNCmV4dGVybiBfX20yNTZpIF9fY2RlY2wgX21tMjU2X3No
cmR2X2VwaTY0KF9fbTI1NmksIF9fbTI1NmksIF9fbTI1NmkpOw0KZXh0ZXJuIF9fbTI1NmkgX19j
ZGVjbCBfbW0yNTZfbWFza19zaHJkdl9lcGk2NChfX20yNTZpLCBfX21tYXNrOCwgX19tMjU2aSwg
X19tMjU2aSk7DQpleHRlcm4gX19tMjU2aSBfX2NkZWNsIF9tbTI1Nl9tYXNrel9zaHJkdl9lcGk2
NChfX21tYXNrOCwgX19tMjU2aSwgX19tMjU2aSwgX19tMjU2aSk7DQpleHRlcm4gX19tNTEyaSBf
X2NkZWNsIF9tbTUxMl9zaHJkdl9lcGk2NChfX201MTJpLCBfX201MTJpLCBfX201MTJpKTsNCmV4
dGVybiBfX201MTJpIF9fY2RlY2wgX21tNTEyX21hc2tfc2hyZHZfZXBpNjQoX19tNTEyaSwgX19t
bWFzazgsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX19jZGVjbCBfbW01MTJf
bWFza3pfc2hyZHZfZXBpNjQoX19tbWFzazgsIF9fbTUxMmksIF9fbTUxMmksIF9fbTUxMmkpOw0K
DQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTUxMmkgX21tNTEyX2Rpdl9lcGk4KF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbTUxMmkgX21tNTEyX2Rpdl9lcGkxNihfX201MTJpLCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9tbTUxMl9kaXZfZXBpMzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRl
cm4gX19tNTEyaSBfbW01MTJfZGl2X2VwaTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX21tNTEyX2Rpdl9lcHU4KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkg
X21tNTEyX2Rpdl9lcHUxNihfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9tbTUx
Ml9kaXZfZXB1MzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfbW01MTJfZGl2
X2VwdTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX21tNTEyX21hc2tfZGl2
X2VwaTMyKF9fbTUxMmkgLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX21tNTEyX21hc2tfZGl2X2VwdTMyKF9fbTUxMmkgLCBfX21tYXNrMTYsIF9fbTUxMmks
IF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX21tNTEyX3JlbV9lcGk4KF9fbTUxMmksIF9fbTUx
MmkpOw0KZXh0ZXJuIF9fbTUxMmkgX21tNTEyX3JlbV9lcGkxNihfX201MTJpLCBfX201MTJpKTsN
CmV4dGVybiBfX201MTJpIF9tbTUxMl9yZW1fZXBpMzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRl
cm4gX19tNTEyaSBfbW01MTJfcmVtX2VwaTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX21tNTEyX3JlbV9lcHU4KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkg
X21tNTEyX3JlbV9lcHUxNihfX201MTJpLCBfX201MTJpKTsNCmV4dGVybiBfX201MTJpIF9tbTUx
Ml9yZW1fZXB1MzIoX19tNTEyaSwgX19tNTEyaSk7DQpleHRlcm4gX19tNTEyaSBfbW01MTJfcmVt
X2VwdTY0KF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9fbTUxMmkgX21tNTEyX21hc2tfcmVt
X2VwaTMyKF9fbTUxMmkgLCBfX21tYXNrMTYsIF9fbTUxMmksIF9fbTUxMmkpOw0KZXh0ZXJuIF9f
bTUxMmkgX21tNTEyX21hc2tfcmVtX2VwdTMyKF9fbTUxMmkgLCBfX21tYXNrMTYsIF9fbTUxMmks
IF9fbTUxMmkpOw0KDQoNCmV4dGVybiBfX201MTIgIF9tbTUxMl9zaW5fcHMoX19tNTEyKTsNCmV4
dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX3Npbl9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201
MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX3Npbl9wZChfX201MTJkKTsNCmV4dGVybiBfX201
MTJkIF9tbTUxMl9tYXNrX3Npbl9wZChfX201MTJkICwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0
ZXJuIF9fbTUxMiAgX21tNTEyX2Nvc19wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEy
X21hc2tfY29zX3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEy
ZCBfbW01MTJfY29zX3BkKF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfY29z
X3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJf
c2luY29zX3BzKF9fbTUxMiAgKiAsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFz
a19zaW5jb3NfcHMoX19tNTEyICAqICwgX19tNTEyICAsIF9fbTUxMiAgLCBfX21tYXNrMTYsIF9f
bTUxMik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfc2luY29zX3BkKF9fbTUxMmQgKiAsIF9fbTUx
MmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfc2luY29zX3BkKF9fbTUxMmQgKiAsIF9f
bTUxMmQgLCBfX201MTJkICwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX21t
NTEyX3Rhbl9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfdGFuX3BzKF9f
bTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfdGFuX3Bk
KF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfdGFuX3BkKF9fbTUxMmQgLCBf
X21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfYXNpbl9wcyhfX201MTIp
Ow0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfYXNpbl9wcyhfX201MTIgICwgX19tbWFzazE2
LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX2FzaW5fcGQoX19tNTEyZCk7DQpleHRl
cm4gX19tNTEyZCBfbW01MTJfbWFza19hc2luX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEy
ZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfYWNvc19wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUx
MiAgX21tNTEyX21hc2tfYWNvc19wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0
ZXJuIF9fbTUxMmQgX21tNTEyX2Fjb3NfcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01
MTJfbWFza19hY29zX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19t
NTEyICBfbW01MTJfYXRhbl9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tf
YXRhbl9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21t
NTEyX2F0YW5fcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19hdGFuX3Bk
KF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfYXRh
bjJfcHMoX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfYXRhbjJf
cHMoX19tNTEyICAsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQg
X21tNTEyX2F0YW4yX3BkKF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEy
X21hc2tfYXRhbjJfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201MTJkLCBfX201MTJkKTsNCmV4
dGVybiBfX201MTIgIF9tbTUxMl9zaW5kX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01
MTJfbWFza19zaW5kX3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19t
NTEyZCBfbW01MTJfc2luZF9wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNr
X3NpbmRfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9t
bTUxMl9jb3NkX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza19jb3NkX3Bz
KF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfY29z
ZF9wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX2Nvc2RfcGQoX19tNTEy
ZCAsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl90YW5kX3BzKF9f
bTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza190YW5kX3BzKF9fbTUxMiAgLCBfX21t
YXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfdGFuZF9wZChfX201MTJkKTsN
CmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX3RhbmRfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBf
X201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9zaW5oX3BzKF9fbTUxMik7DQpleHRlcm4g
X19tNTEyICBfbW01MTJfbWFza19zaW5oX3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7
DQpleHRlcm4gX19tNTEyZCBfbW01MTJfc2luaF9wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9tbTUxMl9tYXNrX3NpbmhfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVy
biBfX201MTIgIF9tbTUxMl9jb3NoX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJf
bWFza19jb3NoX3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEy
ZCBfbW01MTJfY29zaF9wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX2Nv
c2hfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUx
Ml90YW5oX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza190YW5oX3BzKF9f
bTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfdGFuaF9w
ZChfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX3RhbmhfcGQoX19tNTEyZCAs
IF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9hc2luaF9wcyhfX201
MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfYXNpbmhfcHMoX19tNTEyICAsIF9fbW1h
c2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9hc2luaF9wZChfX201MTJkKTsN
CmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX2FzaW5oX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwg
X19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfYWNvc2hfcHMoX19tNTEyKTsNCmV4dGVy
biBfX201MTIgIF9tbTUxMl9tYXNrX2Fjb3NoX3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUx
Mik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfYWNvc2hfcGQoX19tNTEyZCk7DQpleHRlcm4gX19t
NTEyZCBfbW01MTJfbWFza19hY29zaF9wZChfX201MTJkICwgX19tbWFzazgsIF9fbTUxMmQpOw0K
ZXh0ZXJuIF9fbTUxMiAgX21tNTEyX2F0YW5oX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBf
bW01MTJfbWFza19hdGFuaF9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJu
IF9fbTUxMmQgX21tNTEyX2F0YW5oX3BkKF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEy
X21hc2tfYXRhbmhfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201
MTIgIF9tbTUxMl9sb2dfcHMoX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX2xv
Z19wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEy
X2xvZ19wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX2xvZ19wZChfX201
MTJkICwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX2xvZzFwX3Bz
KF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza19sb2cxcF9wcyhfX201MTIgICwg
X19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX2xvZzFwX3BkKF9fbTUx
MmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfbG9nMXBfcGQoX19tNTEyZCAsIF9fbW1h
c2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9sb2cxMF9wcyhfX201MTIpOw0K
ZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfbG9nMTBfcHMoX19tNTEyICAsIF9fbW1hc2sxNiwg
X19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9sb2cxMF9wZChfX201MTJkKTsNCmV4dGVy
biBfX201MTJkIF9tbTUxMl9tYXNrX2xvZzEwX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEy
ZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbG9nMl9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUx
MiAgX21tNTEyX21hc2tfbG9nMl9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0
ZXJuIF9fbTUxMmQgX21tNTEyX2xvZzJfcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01
MTJfbWFza19sb2cyX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19t
NTEyICBfbW01MTJfbG9nYl9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tf
bG9nYl9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21t
NTEyX2xvZ2JfcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19sb2diX3Bk
KF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfZXhw
X3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza19leHBfcHMoX19tNTEyICAs
IF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9leHBfcGQoX19tNTEy
ZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19leHBfcGQoX19tNTEyZCAsIF9fbW1hc2s4
LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9leHAxMF9wcyhfX201MTIpOw0KZXh0
ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfZXhwMTBfcHMoX19tNTEyICAsIF9fbW1hc2sxNiwgX19t
NTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9leHAxMF9wZChfX201MTJkKTsNCmV4dGVybiBf
X201MTJkIF9tbTUxMl9tYXNrX2V4cDEwX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7
DQpleHRlcm4gX19tNTEyICBfbW01MTJfZXhwMl9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAg
X21tNTEyX21hc2tfZXhwMl9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJu
IF9fbTUxMmQgX21tNTEyX2V4cDJfcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJf
bWFza19leHAyX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEy
ICBfbW01MTJfZXhwbTFfcHMoX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX2V4
cG0xX3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfbW01
MTJfZXhwbTFfcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19leHBtMV9w
ZChfX201MTJkICwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX3Bv
d19wcyhfX201MTIsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza19wb3dfcHMo
X19tNTEyICAsIF9fbW1hc2sxNiwgX19tNTEyLCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21t
NTEyX3Bvd19wZChfX201MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNr
X3Bvd19wZChfX201MTJkICwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9f
bTUxMiAgX21tNTEyX3RydW5jX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFz
a190cnVuY19wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQg
X21tNTEyX3RydW5jX3BkKF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfdHJ1
bmNfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUx
Ml9mbG9vcl9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfZmxvb3JfcHMo
X19tNTEyICAsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9mbG9v
cl9wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX2Zsb29yX3BkKF9fbTUx
MmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfY2VpbF9wcyhf
X201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfY2VpbF9wcyhfX201MTIgICwgX19t
bWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX2NlaWxfcGQoX19tNTEyZCk7
DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19jZWlsX3BkKF9fbTUxMmQgLCBfX21tYXNrOCwg
X19tNTEyZCk7DQpleHRlcm4gX19tNTEyIF9tbTUxMl9zdm1sX3JvdW5kX3BzKF9fbTUxMik7DQpl
eHRlcm4gX19tNTEyIF9tbTUxMl9tYXNrX3N2bWxfcm91bmRfcHMoX19tNTEyICwgX19tbWFzazE2
LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX3N2bWxfcm91bmRfcGQoX19tNTEyZCk7
DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19zdm1sX3JvdW5kX3BkKF9fbTUxMmQgLCBfX21t
YXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfZm1vZF9wcyhfX201MTIsIF9f
bTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza19mbW9kX3BzKF9fbTUxMiAgLCBfX21t
YXNrMTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9mbW9kX3BkKF9f
bTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfZm1vZF9wZChfX201
MTJkICwgX19tbWFzazgsIF9fbTUxMmQsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEy
X3JpbnRfcHMoX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX3JpbnRfcHMoX19t
NTEyICAsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9yaW50X3Bk
KF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfcmludF9wZChfX201MTJkICwg
X19tbWFzazgsIF9fbTUxMmQpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX2lu
dnNxcnRfcHMoX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX2ludnNxcnRfcHMo
X19tNTEyICAsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9pbnZz
cXJ0X3BkKF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfaW52c3FydF9wZChf
X201MTJkICwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX2NicnRf
cHMoX19tNTEyKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX2NicnRfcHMoX19tNTEyICAs
IF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9jYnJ0X3BkKF9fbTUx
MmQpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfY2JydF9wZChfX201MTJkICwgX19tbWFz
azgsIF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX2ludmNicnRfcHMoX19tNTEyKTsN
CmV4dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX2ludmNicnRfcHMoX19tNTEyICAsIF9fbW1hc2sx
NiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9pbnZjYnJ0X3BkKF9fbTUxMmQpOw0K
ZXh0ZXJuIF9fbTUxMmQgX21tNTEyX21hc2tfaW52Y2JydF9wZChfX201MTJkICwgX19tbWFzazgs
IF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX2h5cG90X3BzKF9fbTUxMiwgX19tNTEy
KTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9tYXNrX2h5cG90X3BzKF9fbTUxMiAgLCBfX21tYXNr
MTYsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9oeXBvdF9wZChfX201
MTJkLCBfX201MTJkKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX2h5cG90X3BkKF9fbTUx
MmQgLCBfX21tYXNrOCwgX19tNTEyZCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJf
Y2Rmbm9ybV9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfY2Rmbm9ybV9w
cyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEyX2Nk
Zm5vcm1fcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19jZGZub3JtX3Bk
KF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBfbW01MTJfY2Rm
bm9ybWludl9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAgX21tNTEyX21hc2tfY2Rmbm9ybWlu
dl9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmQgX21tNTEy
X2NkZm5vcm1pbnZfcGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19jZGZu
b3JtaW52X3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7DQpleHRlcm4gX19tNTEyICBf
bW01MTJfZXJmX3BzKF9fbTUxMik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza19lcmZfcHMo
X19tNTEyICAsIF9fbW1hc2sxNiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJkIF9tbTUxMl9lcmZf
cGQoX19tNTEyZCk7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfbWFza19lcmZfcGQoX19tNTEyZCAs
IF9fbW1hc2s4LCBfX201MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9lcmZjX3BzKF9fbTUx
Mik7DQpleHRlcm4gX19tNTEyICBfbW01MTJfbWFza19lcmZjX3BzKF9fbTUxMiAgLCBfX21tYXNr
MTYsIF9fbTUxMik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfZXJmY19wZChfX201MTJkKTsNCmV4
dGVybiBfX201MTJkIF9tbTUxMl9tYXNrX2VyZmNfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201
MTJkKTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9lcmZjaW52X3BzKF9fbTUxMik7DQpleHRlcm4g
X19tNTEyICBfbW01MTJfbWFza19lcmZjaW52X3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUx
Mik7DQpleHRlcm4gX19tNTEyZCBfbW01MTJfZXJmY2ludl9wZChfX201MTJkKTsNCmV4dGVybiBf
X201MTJkIF9tbTUxMl9tYXNrX2VyZmNpbnZfcGQoX19tNTEyZCAsIF9fbW1hc2s4LCBfX201MTJk
KTsNCmV4dGVybiBfX201MTIgIF9tbTUxMl9lcmZpbnZfcHMoX19tNTEyKTsNCmV4dGVybiBfX201
MTIgIF9tbTUxMl9tYXNrX2VyZmludl9wcyhfX201MTIgICwgX19tbWFzazE2LCBfX201MTIpOw0K
ZXh0ZXJuIF9fbTUxMmQgX21tNTEyX2VyZmludl9wZChfX201MTJkKTsNCmV4dGVybiBfX201MTJk
IF9tbTUxMl9tYXNrX2VyZmludl9wZChfX201MTJkICwgX19tbWFzazgsIF9fbTUxMmQpOw0KZXh0
ZXJuIF9fbTUxMiAgX21tNTEyX25lYXJieWludF9wcyhfX201MTIpOw0KZXh0ZXJuIF9fbTUxMiAg
X21tNTEyX21hc2tfbmVhcmJ5aW50X3BzKF9fbTUxMiAgLCBfX21tYXNrMTYsIF9fbTUxMik7DQpl
eHRlcm4gX19tNTEyZCBfbW01MTJfbmVhcmJ5aW50X3BkKF9fbTUxMmQpOw0KZXh0ZXJuIF9fbTUx
MmQgX21tNTEyX21hc2tfbmVhcmJ5aW50X3BkKF9fbTUxMmQgLCBfX21tYXNrOCwgX19tNTEyZCk7
DQoNCg0KdHlwZWRlZiBfX20xMjhpIF9fbTEyOGJoOw0KdHlwZWRlZiBfX20yNTZpIF9fbTI1NmJo
Ow0KdHlwZWRlZiBfX201MTJpIF9fbTUxMmJoOw0KDQpleHRlcm4gX19tMTI4YmggX21tX2N2dG5l
cHMyYmYxNihfX20xMjgpOw0KZXh0ZXJuIF9fbTEyOGJoIF9tbV9tYXNrX2N2dG5lcHMyYmYxNihf
X20xMjhiaCwgX19tbWFzazgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4YmggX21tX21hc2t6X2N2
dG5lcHMyYmYxNihfX21tYXNrOCwgX19tMTI4KTsNCmV4dGVybiBfX20xMjhiaCBfbW1fY3Z0bmUy
cHMyYmYxNihfX20xMjgsIF9fbTEyOCk7DQpleHRlcm4gX19tMTI4YmggX21tX21hc2tfY3Z0bmUy
cHMyYmYxNihfX20xMjhiaCwgX19tbWFzazgsIF9fbTEyOCwgX19tMTI4KTsNCmV4dGVybiBfX20x
MjhiaCBfbW1fbWFza3pfY3Z0bmUycHMyYmYxNihfX21tYXNrOCwgX19tMTI4LCBfX20xMjgpOw0K
ZXh0ZXJuIF9fbTEyOCAgIF9tbV9kcGJmMTZfcHMoX19tMTI4LCBfX20xMjhiaCwgX19tMTI4Ymgp
Ow0KZXh0ZXJuIF9fbTEyOCAgIF9tbV9tYXNrX2RwYmYxNl9wcyhfX20xMjgsIF9fbW1hc2s4LCBf
X20xMjhiaCwgX19tMTI4YmgpOw0KZXh0ZXJuIF9fbTEyOCAgIF9tbV9tYXNrel9kcGJmMTZfcHMo
X19tbWFzazgsIF9fbTEyOCwgX19tMTI4YmgsIF9fbTEyOGJoKTsNCmV4dGVybiBfX20xMjhiaCBf
bW0yNTZfY3Z0bmVwczJiZjE2KF9fbTI1Nik7DQpleHRlcm4gX19tMTI4YmggX21tMjU2X21hc2tf
Y3Z0bmVwczJiZjE2KF9fbTEyOGJoLCBfX21tYXNrOCwgX19tMjU2KTsNCmV4dGVybiBfX20xMjhi
aCBfbW0yNTZfbWFza3pfY3Z0bmVwczJiZjE2KF9fbW1hc2s4LCBfX20yNTYpOw0KZXh0ZXJuIF9f
bTI1NmJoIF9tbTI1Nl9jdnRuZTJwczJiZjE2KF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20y
NTZiaCBfbW0yNTZfbWFza19jdnRuZTJwczJiZjE2KF9fbTI1NmJoLCBfX21tYXNrMTYsIF9fbTI1
NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTZiaCBfbW0yNTZfbWFza3pfY3Z0bmUycHMyYmYxNihf
X21tYXNrMTYsIF9fbTI1NiwgX19tMjU2KTsNCmV4dGVybiBfX20yNTYgICBfbW0yNTZfZHBiZjE2
X3BzKF9fbTI1NiwgX19tMjU2YmgsIF9fbTI1NmJoKTsNCmV4dGVybiBfX20yNTYgICBfbW0yNTZf
bWFza19kcGJmMTZfcHMoX19tMjU2LCBfX21tYXNrOCwgX19tMjU2YmgsIF9fbTI1NmJoKTsNCmV4
dGVybiBfX20yNTYgICBfbW0yNTZfbWFza3pfZHBiZjE2X3BzKF9fbW1hc2s4LCBfX20yNTYsIF9f
bTI1NmJoLCBfX20yNTZiaCk7DQpleHRlcm4gX19tMjU2YmggX21tNTEyX2N2dG5lcHMyYmYxNihf
X201MTIpOw0KZXh0ZXJuIF9fbTI1NmJoIF9tbTUxMl9tYXNrX2N2dG5lcHMyYmYxNihfX20yNTZi
aCwgX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTI1NmJoIF9tbTUxMl9tYXNrel9jdnRu
ZXBzMmJmMTYoX19tbWFzazE2LCBfX201MTIpOw0KZXh0ZXJuIF9fbTUxMmJoIF9tbTUxMl9jdnRu
ZTJwczJiZjE2KF9fbTUxMiwgX19tNTEyKTsNCmV4dGVybiBfX201MTJiaCBfbW01MTJfbWFza19j
dnRuZTJwczJiZjE2KF9fbTUxMmJoLCBfX21tYXNrMzIsIF9fbTUxMiwgX19tNTEyKTsNCmV4dGVy
biBfX201MTJiaCBfbW01MTJfbWFza3pfY3Z0bmUycHMyYmYxNihfX21tYXNrMzIsIF9fbTUxMiwg
X19tNTEyKTsNCmV4dGVybiBfX201MTIgICBfbW01MTJfZHBiZjE2X3BzKF9fbTUxMiwgX19tNTEy
YmgsIF9fbTUxMmJoKTsNCmV4dGVybiBfX201MTIgICBfbW01MTJfbWFza19kcGJmMTZfcHMoX19t
NTEyLCBfX21tYXNrMTYsIF9fbTUxMmJoLCBfX201MTJiaCk7DQpleHRlcm4gX19tNTEyICAgX21t
NTEyX21hc2t6X2RwYmYxNl9wcyhfX21tYXNrMTYsIF9fbTUxMiwgX19tNTEyYmgsIF9fbTUxMmJo
KTsNCg0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9rYWRkX21hc2s4KF9fbW1hc2s4LCBfX21t
YXNrOCk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX2thZGRfbWFzazE2KF9fbW1hc2sxNiwg
X19tbWFzazE2KTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVjbCBfa2FkZF9tYXNrMzIoX19tbWFz
azMyLCBfX21tYXNrMzIpOw0KZXh0ZXJuIF9fbW1hc2s2NCBfX2NkZWNsIF9rYWRkX21hc2s2NChf
X21tYXNrNjQsIF9fbW1hc2s2NCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX2thbmRfbWFz
azgoX19tbWFzazgsIF9fbW1hc2s4KTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfa2FuZF9t
YXNrMTYoX19tbWFzazE2LCBfX21tYXNrMTYpOw0KZXh0ZXJuIF9fbW1hc2szMiBfX2NkZWNsIF9r
YW5kX21hc2szMihfX21tYXNrMzIsIF9fbW1hc2szMik7DQpleHRlcm4gX19tbWFzazY0IF9fY2Rl
Y2wgX2thbmRfbWFzazY0KF9fbW1hc2s2NCwgX19tbWFzazY0KTsNCmV4dGVybiBfX21tYXNrOCAg
X19jZGVjbCBfa2FuZG5fbWFzazgoX19tbWFzazgsIF9fbW1hc2s4KTsNCmV4dGVybiBfX21tYXNr
MTYgX19jZGVjbCBfa2FuZG5fbWFzazE2KF9fbW1hc2sxNiwgX19tbWFzazE2KTsNCmV4dGVybiBf
X21tYXNrMzIgX19jZGVjbCBfa2FuZG5fbWFzazMyKF9fbW1hc2szMiwgX19tbWFzazMyKTsNCmV4
dGVybiBfX21tYXNrNjQgX19jZGVjbCBfa2FuZG5fbWFzazY0KF9fbW1hc2s2NCwgX19tbWFzazY0
KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfa25vdF9tYXNrOChfX21tYXNrOCk7DQpleHRl
cm4gX19tbWFzazE2IF9fY2RlY2wgX2tub3RfbWFzazE2KF9fbW1hc2sxNik7DQpleHRlcm4gX19t
bWFzazMyIF9fY2RlY2wgX2tub3RfbWFzazMyKF9fbW1hc2szMik7DQpleHRlcm4gX19tbWFzazY0
IF9fY2RlY2wgX2tub3RfbWFzazY0KF9fbW1hc2s2NCk7DQpleHRlcm4gX19tbWFzazggIF9fY2Rl
Y2wgX2tvcl9tYXNrOChfX21tYXNrOCwgX19tbWFzazgpOw0KZXh0ZXJuIF9fbW1hc2sxNiBfX2Nk
ZWNsIF9rb3JfbWFzazE2KF9fbW1hc2sxNiwgX19tbWFzazE2KTsNCmV4dGVybiBfX21tYXNrMzIg
X19jZGVjbCBfa29yX21hc2szMihfX21tYXNrMzIsIF9fbW1hc2szMik7DQpleHRlcm4gX19tbWFz
azY0IF9fY2RlY2wgX2tvcl9tYXNrNjQoX19tbWFzazY0LCBfX21tYXNrNjQpOw0KZXh0ZXJuIF9f
bW1hc2s4ICBfX2NkZWNsIF9reG5vcl9tYXNrOChfX21tYXNrOCwgX19tbWFzazgpOw0KZXh0ZXJu
IF9fbW1hc2sxNiBfX2NkZWNsIF9reG5vcl9tYXNrMTYoX19tbWFzazE2LCBfX21tYXNrMTYpOw0K
ZXh0ZXJuIF9fbW1hc2szMiBfX2NkZWNsIF9reG5vcl9tYXNrMzIoX19tbWFzazMyLCBfX21tYXNr
MzIpOw0KZXh0ZXJuIF9fbW1hc2s2NCBfX2NkZWNsIF9reG5vcl9tYXNrNjQoX19tbWFzazY0LCBf
X21tYXNrNjQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9reG9yX21hc2s4KF9fbW1hc2s4
LCBfX21tYXNrOCk7DQpleHRlcm4gX19tbWFzazE2IF9fY2RlY2wgX2t4b3JfbWFzazE2KF9fbW1h
c2sxNiwgX19tbWFzazE2KTsNCmV4dGVybiBfX21tYXNrMzIgX19jZGVjbCBfa3hvcl9tYXNrMzIo
X19tbWFzazMyLCBfX21tYXNrMzIpOw0KZXh0ZXJuIF9fbW1hc2s2NCBfX2NkZWNsIF9reG9yX21h
c2s2NChfX21tYXNrNjQsIF9fbW1hc2s2NCk7DQpleHRlcm4gX19tbWFzazggIF9fY2RlY2wgX2tz
aGlmdGxpX21hc2s4KF9fbW1hc2s4LCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2sxNiBf
X2NkZWNsIF9rc2hpZnRsaV9tYXNrMTYoX19tbWFzazE2LCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJu
IF9fbW1hc2szMiBfX2NkZWNsIF9rc2hpZnRsaV9tYXNrMzIoX19tbWFzazMyLCB1bnNpZ25lZCBp
bnQpOw0KZXh0ZXJuIF9fbW1hc2s2NCBfX2NkZWNsIF9rc2hpZnRsaV9tYXNrNjQoX19tbWFzazY0
LCB1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2s4ICBfX2NkZWNsIF9rc2hpZnRyaV9tYXNr
OChfX21tYXNrOCwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfa3No
aWZ0cmlfbWFzazE2KF9fbW1hc2sxNiwgdW5zaWduZWQgaW50KTsNCmV4dGVybiBfX21tYXNrMzIg
X19jZGVjbCBfa3NoaWZ0cmlfbWFzazMyKF9fbW1hc2szMiwgdW5zaWduZWQgaW50KTsNCmV4dGVy
biBfX21tYXNrNjQgX19jZGVjbCBfa3NoaWZ0cmlfbWFzazY0KF9fbW1hc2s2NCwgdW5zaWduZWQg
aW50KTsNCmV4dGVybiBfX21tYXNrOCAgX19jZGVjbCBfbG9hZF9tYXNrOChfX21tYXNrOCAqKTsN
CmV4dGVybiBfX21tYXNrMTYgX19jZGVjbCBfbG9hZF9tYXNrMTYoX19tbWFzazE2ICopOw0KZXh0
ZXJuIF9fbW1hc2szMiBfX2NkZWNsIF9sb2FkX21hc2szMihfX21tYXNrMzIgKik7DQpleHRlcm4g
X19tbWFzazY0IF9fY2RlY2wgX2xvYWRfbWFzazY0KF9fbW1hc2s2NCAqKTsNCmV4dGVybiB2b2lk
ICAgICAgX19jZGVjbCBfc3RvcmVfbWFzazgoX19tbWFzazggKiwgX19tbWFzazgpOw0KZXh0ZXJu
IHZvaWQgICAgICBfX2NkZWNsIF9zdG9yZV9tYXNrMTYoX19tbWFzazE2ICosIF9fbW1hc2sxNik7
DQpleHRlcm4gdm9pZCAgICAgIF9fY2RlY2wgX3N0b3JlX21hc2szMihfX21tYXNrMzIgKiwgX19t
bWFzazMyKTsNCmV4dGVybiB2b2lkICAgICAgX19jZGVjbCBfc3RvcmVfbWFzazY0KF9fbW1hc2s2
NCAqLCBfX21tYXNrNjQpOw0KZXh0ZXJuIHVuc2lnbmVkIGludCAgICAgX19jZGVjbCBfY3Z0bWFz
azhfdTMyKF9fbW1hc2s4KTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9fY2RlY2wgX2N2dG1h
c2sxNl91MzIoX19tbWFzazE2KTsNCmV4dGVybiB1bnNpZ25lZCBpbnQgICAgIF9fY2RlY2wgX2N2
dG1hc2szMl91MzIoX19tbWFzazMyKTsNCmV4dGVybiB1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wg
X2N2dG1hc2s2NF91NjQoX19tbWFzazY0KTsNCmV4dGVybiBfX21tYXNrOCAgICAgICAgIF9fY2Rl
Y2wgX2N2dHUzMl9tYXNrOCh1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2sxNiAgICAgICAg
X19jZGVjbCBfY3Z0dTMyX21hc2sxNih1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbW1hc2szMiAg
ICAgICAgX19jZGVjbCBfY3Z0dTMyX21hc2szMih1bnNpZ25lZCBpbnQpOw0KZXh0ZXJuIF9fbW1h
c2s2NCAgICAgICAgX19jZGVjbCBfY3Z0dTY0X21hc2s2NCh1bnNpZ25lZCBfX2ludDY0KTsNCmV4
dGVybiBfX21tYXNrMTYgICAgICAgIF9fY2RlY2wgX21tNTEyX2ttb3YoX19tbWFzazE2KTsNCmV4
dGVybiB1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX2tvcnRlc3RfbWFzazhfdTgoX19tbWFzazgsIF9f
bW1hc2s4LCB1bnNpZ25lZCBjaGFyICopOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBf
a29ydGVzdF9tYXNrMTZfdTgoX19tbWFzazE2LCBfX21tYXNrMTYsIHVuc2lnbmVkIGNoYXIgKik7
DQpleHRlcm4gdW5zaWduZWQgY2hhciBfX2NkZWNsIF9rb3J0ZXN0X21hc2szMl91OChfX21tYXNr
MzIsIF9fbW1hc2szMiwgdW5zaWduZWQgY2hhciAqKTsNCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9f
Y2RlY2wgX2tvcnRlc3RfbWFzazY0X3U4KF9fbW1hc2s2NCwgX19tbWFzazY0LCB1bnNpZ25lZCBj
aGFyICopOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBfa3Rlc3RfbWFzazhfdTgoX19t
bWFzazgsIF9fbW1hc2s4LCB1bnNpZ25lZCBjaGFyICopOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIg
X19jZGVjbCBfa3Rlc3RfbWFzazE2X3U4KF9fbW1hc2sxNiwgX19tbWFzazE2LCB1bnNpZ25lZCBj
aGFyICopOw0KZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jZGVjbCBfa3Rlc3RfbWFzazMyX3U4KF9f
bW1hc2szMiwgX19tbWFzazMyLCB1bnNpZ25lZCBjaGFyICopOw0KZXh0ZXJuIHVuc2lnbmVkIGNo
YXIgX19jZGVjbCBfa3Rlc3RfbWFzazY0X3U4KF9fbW1hc2s2NCwgX19tbWFzazY0LCB1bnNpZ25l
ZCBjaGFyICopOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tNTEyICBfX2NkZWNsIF9tbTUx
Ml9tYXNrX2V4cDJhMjNfcm91bmRfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUxMiwgaW50KTsN
CmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X2V4cDJhMjNfcm91bmRfcHMoX19t
bWFzazE2LCBfX201MTIsIGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
X2V4cDJhMjNfcm91bmRfcGQoX19tNTEyZCwgX19tbWFzazgsIF9fbTUxMmQsIGludCk7DQpleHRl
cm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrel9leHAyYTIzX3JvdW5kX3BkKF9fbW1hc2s4
LCBfX201MTJkLCBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01MTJfbWFza19yY3AyOF9yb3VuZF9wcyhfX201MTIsIF9f
bW1hc2sxNiwgX19tNTEyLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMiAgX19jZGVjbCBfbW01
MTJfbWFza3pfcmNwMjhfcm91bmRfcHMoX19tbWFzazE2LCBfX201MTIsIGNvbnN0IGludCk7DQpl
eHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JjcDI4X3JvdW5kX3BkKF9fbTUxMmQs
IF9fbW1hc2s4LCBfX201MTJkLCBjb25zdCBpbnQpOw0KZXh0ZXJuIF9fbTUxMmQgX19jZGVjbCBf
bW01MTJfbWFza3pfcmNwMjhfcm91bmRfcGQoX19tbWFzazgsIF9fbTUxMmQsIGNvbnN0IGludCk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19tNTEyICBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3JzcXJ0Mjhfcm91bmRfcHMoX19tNTEyLCBfX21tYXNrMTYsIF9fbTUx
MiwgY29uc3QgaW50KTsNCmV4dGVybiBfX201MTIgIF9fY2RlY2wgX21tNTEyX21hc2t6X3JzcXJ0
Mjhfcm91bmRfcHMoX19tbWFzazE2LCBfX201MTIsIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEy
ZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3JzcXJ0Mjhfcm91bmRfcGQoX19tNTEyZCwgX19tbWFzazgs
IF9fbTUxMmQsIGNvbnN0IGludCk7DQpleHRlcm4gX19tNTEyZCBfX2NkZWNsIF9tbTUxMl9tYXNr
el9yc3FydDI4X3JvdW5kX3BkKF9fbW1hc2s4LCBfX201MTJkLCBjb25zdCBpbnQpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW01MTJf
cHJlZmV0Y2hfaTMyZ2F0aGVyX3BkKF9fbTI1NmkgdmluZGV4LCB2b2lkIGNvbnN0KiBiYXNlX2Fk
ZHIsIGludCBzY2FsZSwgY29uc3QgaW50IGhpbnQpOw0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW01
MTJfcHJlZmV0Y2hfaTMyZ2F0aGVyX3BzKF9fbTUxMmkgaW5kZXgsIHZvaWQgY29uc3QqIG12LCBp
bnQgc2NhbGUsIGNvbnN0IGludCBoaW50KTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tNTEyX3By
ZWZldGNoX2kzMnNjYXR0ZXJfcGQodm9pZCogYmFzZV9hZGRyLCBfX20yNTZpIHZpbmRleCwgaW50
IHNjYWxlLCBjb25zdCBpbnQgaGludCk7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF9tbTUxMl9wcmVm
ZXRjaF9pMzJzY2F0dGVyX3BzKHZvaWQqIG12LCBfX201MTJpIGluZGV4LCBpbnQgc2NhbGUsIGNv
bnN0IGludCBoaW50KTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tNTEyX3ByZWZldGNoX2k2NGdh
dGhlcl9wZChfX201MTJpIHZpbmRleCwgdm9pZCBjb25zdCogYmFzZV9hZGRyLCBpbnQgc2NhbGUs
IGNvbnN0IGludCBoaW50KTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tNTEyX3ByZWZldGNoX2k2
NGdhdGhlcl9wcyhfX201MTJpIHZpbmRleCwgdm9pZCBjb25zdCogYmFzZV9hZGRyLCBpbnQgc2Nh
bGUsIGNvbnN0IGludCBoaW50KTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tNTEyX3ByZWZldGNo
X2k2NHNjYXR0ZXJfcGQodm9pZCogYmFzZV9hZGRyLCBfX201MTJpIHZpbmRleCwgaW50IHNjYWxl
LCBjb25zdCBpbnQgaGludCk7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF9tbTUxMl9wcmVmZXRjaF9p
NjRzY2F0dGVyX3BzKHZvaWQqIGJhc2VfYWRkciwgX19tNTEyaSB2aW5kZXgsIGludCBzY2FsZSwg
Y29uc3QgaW50IGhpbnQpOw0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW01MTJfbWFza19wcmVmZXRj
aF9pMzJnYXRoZXJfcGQoX19tMjU2aSB2aW5kZXgsIF9fbW1hc2s4IG1hc2ssIHZvaWQgY29uc3Qq
IGJhc2VfYWRkciwgaW50IHNjYWxlLCBjb25zdCBpbnQgaGludCk7DQpleHRlcm4gdm9pZCBfX2Nk
ZWNsIF9tbTUxMl9tYXNrX3ByZWZldGNoX2kzMmdhdGhlcl9wcyhfX201MTJpIHZpbmRleCwgX19t
bWFzazE2IG1hc2ssIHZvaWQgY29uc3QqIGJhc2VfYWRkciwgaW50IHNjYWxlLCBjb25zdCBpbnQg
aGludCk7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3ByZWZldGNoX2kzMnNjYXR0
ZXJfcGQodm9pZCogYmFzZV9hZGRyLCBfX21tYXNrOCBtYXNrLCBfX20yNTZpIHZpbmRlLCBpbnQg
c2NhbGUsIGNvbnN0IGludCBoaW50KTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tNTEyX21hc2tf
cHJlZmV0Y2hfaTMyc2NhdHRlcl9wcyh2b2lkKiBtdiwgX19tbWFzazE2IGssIF9fbTUxMmkgaW5k
ZXgsIGludCBzY2FsZSwgY29uc3QgaW50IGhpbnQpOw0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW01
MTJfbWFza19wcmVmZXRjaF9pNjRnYXRoZXJfcGQoX19tNTEyaSB2aW5kZXgsIF9fbW1hc2s4IG1h
c2ssIHZvaWQgY29uc3QqIGJhc2VfYWRkciwgaW50IHNjYWxlLCBjb25zdCBpbnQgaGludCk7DQpl
eHRlcm4gdm9pZCBfX2NkZWNsIF9tbTUxMl9tYXNrX3ByZWZldGNoX2k2NGdhdGhlcl9wcyhfX201
MTJpIHZpbmRleCwgX19tbWFzazggbWFzaywgdm9pZCBjb25zdCogYmFzZV9hZGRyLCBpbnQgc2Nh
bGUsIGNvbnN0IGludCBoaW50KTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tNTEyX21hc2tfcHJl
ZmV0Y2hfaTY0c2NhdHRlcl9wZCh2b2lkKiBiYXNlX2FkZHIsIF9fbW1hc2s4IG1hc2ssIF9fbTUx
MmkgdmluZGV4LCBpbnQgc2NhbGUsIGNvbnN0IGludCBoaW50KTsNCmV4dGVybiB2b2lkIF9fY2Rl
Y2wgX21tNTEyX21hc2tfcHJlZmV0Y2hfaTY0c2NhdHRlcl9wcyh2b2lkKiBiYXNlX2FkZHIsIF9f
bW1hc2s4IG1hc2ssIF9fbTUxMmkgdmluZGV4LCBpbnQgc2NhbGUsIGNvbnN0IGludCBoaW50KTsN
Cg0KDQpleHRlcm4gdm9pZCBfX2NkZWNsIF9tbV8yaW50ZXJzZWN0X2VwaTMyKF9fbTEyOGksIF9f
bTEyOGksIF9fbW1hc2s4ICosIF9fbW1hc2s4ICopOw0KZXh0ZXJuIHZvaWQgX19jZGVjbCBfbW0y
NTZfMmludGVyc2VjdF9lcGkzMihfX20yNTZpLCBfX20yNTZpLCBfX21tYXNrOCAqLCBfX21tYXNr
OCAqKTsNCmV4dGVybiB2b2lkIF9fY2RlY2wgX21tNTEyXzJpbnRlcnNlY3RfZXBpMzIoX19tNTEy
aSwgX19tNTEyaSwgX19tbWFzazE2ICosIF9fbW1hc2sxNiAqKTsNCmV4dGVybiB2b2lkIF9fY2Rl
Y2wgX21tXzJpbnRlcnNlY3RfZXBpNjQoX19tMTI4aSwgX19tMTI4aSwgX19tbWFzazggKiwgX19t
bWFzazggKik7DQpleHRlcm4gdm9pZCBfX2NkZWNsIF9tbTI1Nl8yaW50ZXJzZWN0X2VwaTY0KF9f
bTI1NmksIF9fbTI1NmksIF9fbW1hc2s4ICosIF9fbW1hc2s4ICopOw0KZXh0ZXJuIHZvaWQgX19j
ZGVjbCBfbW01MTJfMmludGVyc2VjdF9lcGk2NChfX201MTJpLCBfX201MTJpLCBfX21tYXNrOCAq
LCBfX21tYXNrOCAqKTsNCg0KDQp9DQojbGluZSA1MDkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHptbWludHJpbi5oIg0KDQoNCiNsaW5lIDUwOTQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcem1taW50
cmluLmgiDQojbGluZSAyNDE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXGltbWludHJpbi5oIg0KDQojbGluZSAyNDE3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGltbWludHJpbi5oIg0KI2xpbmUgMjQx
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbW1p
bnRyaW4uaCINCiNsaW5lIDI0MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcaW1taW50cmluLmgiDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4uaCINCiAgICAgICAgI2xpbmUg
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbW1p
bnRyaW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xp
bmUgMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
YW1taW50cmluLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFtbWludHJpbi5oIg0KDQoNCg0KI2xpbmUg
MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYW1t
aW50cmluLmgiDQoNCg0KZXh0ZXJuICJDIiB7IA0KI2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYW1taW50cmluLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpfX20xMjggX21tX21hY2NfcHMoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhk
IF9tbV9tYWNjX3BkKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9tbV9tYWNj
X3NzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fbWFjY19zZChfX20xMjhk
LCBfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fbWFkZHN1Yl9wcyhfX20xMjgsIF9fbTEy
OCwgX19tMTI4KTsNCl9fbTEyOGQgX21tX21hZGRzdWJfcGQoX19tMTI4ZCwgX19tMTI4ZCwgX19t
MTI4ZCk7DQpfX20xMjggX21tX21zdWJhZGRfcHMoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7DQpf
X20xMjhkIF9tbV9tc3ViYWRkX3BkKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4
IF9tbV9tc3ViX3BzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fbXN1Yl9w
ZChfX20xMjhkLCBfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fbXN1Yl9zcyhfX20xMjgs
IF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGQgX21tX21zdWJfc2QoX19tMTI4ZCwgX19tMTI4ZCwg
X19tMTI4ZCk7DQpfX20xMjggX21tX25tYWNjX3BzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOw0K
X19tMTI4ZCBfbW1fbm1hY2NfcGQoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjgg
X21tX25tYWNjX3NzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fbm1hY2Nf
c2QoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX25tc3ViX3BzKF9fbTEy
OCwgX19tMTI4LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fbm1zdWJfcGQoX19tMTI4ZCwgX19tMTI4
ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX25tc3ViX3NzKF9fbTEyOCwgX19tMTI4LCBfX20xMjgp
Ow0KX19tMTI4ZCBfbW1fbm1zdWJfc2QoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQoNCg0K
X19tMTI4aSBfbW1fbWFjY3NfZXBpMTYoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpfX20x
MjhpIF9tbV9tYWNjX2VwaTE2KF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBf
bW1fbWFjY3NkX2VwaTE2KF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1f
bWFjY2RfZXBpMTYoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9tYWNj
c19lcGkzMihfX20xMjhpLCBfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX21hY2NfZXBp
MzIoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9tYWNjc2xvX2VwaTMy
KF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fbWFjY2xvX2VwaTMyKF9f
bTEyOGksIF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fbWFjY3NoaV9lcGkzMihfX20x
MjhpLCBfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX21hY2NoaV9lcGkzMihfX20xMjhp
LCBfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX21hZGRzZF9lcGkxNihfX20xMjhpLCBf
X20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX21hZGRkX2VwaTE2KF9fbTEyOGksIF9fbTEy
OGksIF9fbTEyOGkpOw0KDQoNCl9fbTEyOGkgX21tX2hhZGR3X2VwaTgoX19tMTI4aSk7DQpfX20x
MjhpIF9tbV9oYWRkZF9lcGk4KF9fbTEyOGkpOw0KX19tMTI4aSBfbW1faGFkZHFfZXBpOChfX20x
MjhpKTsNCl9fbTEyOGkgX21tX2hhZGRkX2VwaTE2KF9fbTEyOGkpOw0KX19tMTI4aSBfbW1faGFk
ZHFfZXBpMTYoX19tMTI4aSk7DQpfX20xMjhpIF9tbV9oYWRkcV9lcGkzMihfX20xMjhpKTsNCl9f
bTEyOGkgX21tX2hhZGR3X2VwdTgoX19tMTI4aSk7DQpfX20xMjhpIF9tbV9oYWRkZF9lcHU4KF9f
bTEyOGkpOw0KX19tMTI4aSBfbW1faGFkZHFfZXB1OChfX20xMjhpKTsNCl9fbTEyOGkgX21tX2hh
ZGRkX2VwdTE2KF9fbTEyOGkpOw0KX19tMTI4aSBfbW1faGFkZHFfZXB1MTYoX19tMTI4aSk7DQpf
X20xMjhpIF9tbV9oYWRkcV9lcHUzMihfX20xMjhpKTsNCl9fbTEyOGkgX21tX2hzdWJ3X2VwaTgo
X19tMTI4aSk7DQpfX20xMjhpIF9tbV9oc3ViZF9lcGkxNihfX20xMjhpKTsNCl9fbTEyOGkgX21t
X2hzdWJxX2VwaTMyKF9fbTEyOGkpOw0KDQoNCl9fbTEyOGkgX21tX2Ntb3Zfc2kxMjgoX19tMTI4
aSwgX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9wZXJtX2VwaTgoX19tMTI4aSwgX19t
MTI4aSwgX19tMTI4aSk7DQoNCg0KX19tMTI4aSBfbW1fcm90X2VwaTgoX19tMTI4aSwgX19tMTI4
aSk7DQpfX20xMjhpIF9tbV9yb3RfZXBpMTYoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9t
bV9yb3RfZXBpMzIoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9yb3RfZXBpNjQoX19t
MTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9yb3RpX2VwaTgoX19tMTI4aSwgaW50KTsNCl9f
bTEyOGkgX21tX3JvdGlfZXBpMTYoX19tMTI4aSwgaW50KTsNCl9fbTEyOGkgX21tX3JvdGlfZXBp
MzIoX19tMTI4aSwgaW50KTsNCl9fbTEyOGkgX21tX3JvdGlfZXBpNjQoX19tMTI4aSwgaW50KTsN
Cl9fbTEyOGkgX21tX3NobF9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fc2hs
X2VwaTE2KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fc2hsX2VwaTMyKF9fbTEyOGks
IF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fc2hsX2VwaTY0KF9fbTEyOGksIF9fbTEyOGkpOw0KX19t
MTI4aSBfbW1fc2hhX2VwaTgoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9zaGFfZXBp
MTYoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9zaGFfZXBpMzIoX19tMTI4aSwgX19t
MTI4aSk7DQpfX20xMjhpIF9tbV9zaGFfZXBpNjQoX19tMTI4aSwgX19tMTI4aSk7DQoNCg0KDQpf
X20xMjhpIF9tbV9jb21fZXB1OChfX20xMjhpLCBfX20xMjhpLCBpbnQpOw0KX19tMTI4aSBfbW1f
Y29tX2VwdTE2KF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpfX20xMjhpIF9tbV9jb21fZXB1MzIo
X19tMTI4aSwgX19tMTI4aSwgaW50KTsNCl9fbTEyOGkgX21tX2NvbV9lcHU2NChfX20xMjhpLCBf
X20xMjhpLCBpbnQpOw0KX19tMTI4aSBfbW1fY29tX2VwaTgoX19tMTI4aSwgX19tMTI4aSwgaW50
KTsNCl9fbTEyOGkgX21tX2NvbV9lcGkxNihfX20xMjhpLCBfX20xMjhpLCBpbnQpOw0KX19tMTI4
aSBfbW1fY29tX2VwaTMyKF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpfX20xMjhpIF9tbV9jb21f
ZXBpNjQoX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCg0KDQoNCl9fbTEyOCBfbW1fZnJjel9wcyhf
X20xMjgpOw0KX19tMTI4ZCBfbW1fZnJjel9wZChfX20xMjhkKTsNCl9fbTEyOCBfbW1fZnJjel9z
cyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9mcmN6X3NkKF9fbTEyOGQsIF9fbTEyOGQp
Ow0KDQoNCg0KDQoNCg0KDQoNCl9fbTEyOCBfbW1fcGVybXV0ZTJfcHMoX19tMTI4LCBfX20xMjgs
IF9fbTEyOGksIGludCk7DQpfX20xMjhkIF9tbV9wZXJtdXRlMl9wZChfX20xMjhkLCBfX20xMjhk
LCBfX20xMjhpLCBpbnQpOw0KDQoNCg0KX19tMjU2IF9tbTI1Nl9tYWNjX3BzKF9fbTI1NiwgX19t
MjU2LCBfX20yNTYpOw0KX19tMjU2ZCBfbW0yNTZfbWFjY19wZChfX20yNTZkLCBfX20yNTZkLCBf
X20yNTZkKTsNCl9fbTI1NiBfbW0yNTZfbWFkZHN1Yl9wcyhfX20yNTYsIF9fbTI1NiwgX19tMjU2
KTsNCl9fbTI1NmQgX21tMjU2X21hZGRzdWJfcGQoX19tMjU2ZCwgX19tMjU2ZCwgX19tMjU2ZCk7
DQpfX20yNTYgX21tMjU2X21zdWJhZGRfcHMoX19tMjU2LCBfX20yNTYsIF9fbTI1Nik7DQpfX20y
NTZkIF9tbTI1Nl9tc3ViYWRkX3BkKF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQpOw0KX19tMjU2
IF9tbTI1Nl9tc3ViX3BzKF9fbTI1NiwgX19tMjU2LCBfX20yNTYpOw0KX19tMjU2ZCBfbW0yNTZf
bXN1Yl9wZChfX20yNTZkLCBfX20yNTZkLCBfX20yNTZkKTsNCl9fbTI1NiBfbW0yNTZfbm1hY2Nf
cHMoX19tMjU2LCBfX20yNTYsIF9fbTI1Nik7DQpfX20yNTZkIF9tbTI1Nl9ubWFjY19wZChfX20y
NTZkLCBfX20yNTZkLCBfX20yNTZkKTsNCl9fbTI1NiBfbW0yNTZfbm1zdWJfcHMoX19tMjU2LCBf
X20yNTYsIF9fbTI1Nik7DQpfX20yNTZkIF9tbTI1Nl9ubXN1Yl9wZChfX20yNTZkLCBfX20yNTZk
LCBfX20yNTZkKTsNCl9fbTI1NmkgX21tMjU2X2Ntb3Zfc2kyNTYoX19tMjU2aSwgX19tMjU2aSwg
X19tMjU2aSk7DQpfX20yNTYgX21tMjU2X2ZyY3pfcHMoX19tMjU2KTsNCl9fbTI1NmQgX21tMjU2
X2ZyY3pfcGQoX19tMjU2ZCk7DQpfX20yNTYgX21tMjU2X3Blcm11dGUyX3BzKF9fbTI1NiwgX19t
MjU2LCBfX20yNTZpLCBpbnQpOw0KX19tMjU2ZCBfbW0yNTZfcGVybXV0ZTJfcGQoX19tMjU2ZCwg
X19tMjU2ZCwgX19tMjU2aSwgaW50KTsNCg0KDQp2b2lkIF9fbGx3cGNiKHZvaWQgKik7DQp2b2lk
ICpfX3Nsd3BjYih2b2lkKTsNCnZvaWQgX19sd3B2YWwzMih1bnNpZ25lZCBpbnQsIHVuc2lnbmVk
IGludCwgdW5zaWduZWQgaW50KTsNCnVuc2lnbmVkIGNoYXIgX19sd3BpbnMzMih1bnNpZ25lZCBp
bnQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsNCg0Kdm9pZCBfX2x3cHZhbDY0KHVuc2ln
bmVkIF9faW50NjQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsNCnVuc2lnbmVkIGNoYXIg
X19sd3BpbnM2NCh1bnNpZ25lZCBfX2ludDY0LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7
DQojbGluZSAyNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcYW1taW50cmluLmgiDQoNCg0KdW5zaWduZWQgaW50IF9iZXh0cl91MzIodW5zaWduZWQg
aW50LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBpbnQgX2FuZG5fdTMy
KHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsNCnVuc2lnbmVkIGludCBfdHpjbnRfdTMyKHVu
c2lnbmVkIGludCk7DQp1bnNpZ25lZCBpbnQgX2x6Y250X3UzMih1bnNpZ25lZCBpbnQpOw0KdW5z
aWduZWQgaW50IF9ibHNyX3UzMih1bnNpZ25lZCBpbnQpOw0KdW5zaWduZWQgaW50IF9ibHNtc2tf
dTMyKHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBpbnQgX2Jsc2lfdTMyKHVuc2lnbmVkIGludCk7
DQoNCnVuc2lnbmVkIF9faW50NjQgX2JleHRyX3U2NCh1bnNpZ25lZCBfX2ludDY0LCB1bnNpZ25l
ZCBpbnQsIHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBfX2ludDY0IF9hbmRuX3U2NCh1bnNpZ25l
ZCBfX2ludDY0LCB1bnNpZ25lZCBfX2ludDY0KTsNCnVuc2lnbmVkIF9faW50NjQgX3R6Y250X3U2
NCh1bnNpZ25lZCBfX2ludDY0KTsNCnVuc2lnbmVkIF9faW50NjQgX2x6Y250X3U2NCh1bnNpZ25l
ZCBfX2ludDY0KTsNCnVuc2lnbmVkIF9faW50NjQgX2Jsc3JfdTY0KHVuc2lnbmVkIF9faW50NjQp
Ow0KdW5zaWduZWQgX19pbnQ2NCBfYmxzbXNrX3U2NCh1bnNpZ25lZCBfX2ludDY0KTsNCnVuc2ln
bmVkIF9faW50NjQgX2Jsc2lfdTY0KHVuc2lnbmVkIF9faW50NjQpOw0KI2xpbmUgMjc2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFtbWludHJpbi5o
Ig0KDQoNCnVuc2lnbmVkIGludCBfYmV4dHJpX3UzMih1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGlu
dCk7DQp1bnNpZ25lZCBpbnQgX2JsY2ZpbGxfdTMyKHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBp
bnQgX2Jsc2ZpbGxfdTMyKHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBpbnQgX2JsY3NfdTMyKHVu
c2lnbmVkIGludCk7DQp1bnNpZ25lZCBpbnQgX3R6bXNrX3UzMih1bnNpZ25lZCBpbnQpOw0KdW5z
aWduZWQgaW50IF9ibGNpY191MzIodW5zaWduZWQgaW50KTsNCnVuc2lnbmVkIGludCBfYmxzaWNf
dTMyKHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBpbnQgX3QxbXNrY191MzIodW5zaWduZWQgaW50
KTsNCnVuc2lnbmVkIGludCBfYmxjbXNrX3UzMih1bnNpZ25lZCBpbnQpOw0KdW5zaWduZWQgaW50
IF9ibGNpX3UzMih1bnNpZ25lZCBpbnQpOw0KDQp1bnNpZ25lZCBfX2ludDY0IF9iZXh0cmlfdTY0
KHVuc2lnbmVkIF9faW50NjQsIHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBfX2ludDY0IF9ibGNm
aWxsX3U2NCh1bnNpZ25lZCBfX2ludDY0KTsNCnVuc2lnbmVkIF9faW50NjQgX2Jsc2ZpbGxfdTY0
KHVuc2lnbmVkIF9faW50NjQpOw0KdW5zaWduZWQgX19pbnQ2NCBfYmxjc191NjQodW5zaWduZWQg
X19pbnQ2NCk7DQp1bnNpZ25lZCBfX2ludDY0IF90em1za191NjQodW5zaWduZWQgX19pbnQ2NCk7
DQp1bnNpZ25lZCBfX2ludDY0IF9ibGNpY191NjQodW5zaWduZWQgX19pbnQ2NCk7DQp1bnNpZ25l
ZCBfX2ludDY0IF9ibHNpY191NjQodW5zaWduZWQgX19pbnQ2NCk7DQp1bnNpZ25lZCBfX2ludDY0
IF90MW1za2NfdTY0KHVuc2lnbmVkIF9faW50NjQpOw0KdW5zaWduZWQgX19pbnQ2NCBfYmxjbXNr
X3U2NCh1bnNpZ25lZCBfX2ludDY0KTsNCnVuc2lnbmVkIF9faW50NjQgX2JsY2lfdTY0KHVuc2ln
bmVkIF9faW50NjQpOw0KI2xpbmUgMzAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGFtbWludHJpbi5oIg0KDQp2b2lkIF9tbV9tb25pdG9yeCh2b2lk
IGNvbnN0ICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsNCnZvaWQgX21tX213YWl0eCh1
bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsNCg0Kdm9pZCBfbW1fY2x6
ZXJvKHZvaWQgY29uc3QgKik7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBybXBfc2VnIHsNCiAgICB1
bnNpZ25lZCBfX2ludDY0IHJtcF9ncGE7DQogICAgX19pbnQ4ICAgICAgICAgICBybXBfZW50cnk7
DQogICAgX19pbnQ4ICAgICAgICAgICBybXBfcGFnZVNpemU7DQogICAgX19pbnQ4ICAgICAgICAg
ICBybXBfcGFnZU1hcms7DQogICAgX19pbnQ4ICAgICAgICAgICBybXBfcmVzZXJ2ZWQ7DQogICAg
X19pbnQzMiAgICAgICAgICBybXBfQVNJRDsNCn0gcm1wX3NlZzsNCg0KdW5zaWduZWQgaW50IF9f
cm1wdXBkYXRlKHVuc2lnbmVkIF9faW50NjQsIHJtcF9zZWcgKiwgaW50KTsNCiNwcmFnbWEgd2Fy
bmluZyhzdXBwcmVzczo0MzkyKSANCnVuc2lnbmVkIGludCBfX3B2YWxpZGF0ZSh1bnNpZ25lZCBf
X2ludDY0LCBpbnQsIGludCwgaW50ICopOw0KdW5zaWduZWQgaW50IF9fcHNtYXNoKHVuc2lnbmVk
IF9faW50NjQpOw0KdW5zaWduZWQgaW50IF9fcm1wYWRqdXN0KHVuc2lnbmVkIF9faW50NjQsIGlu
dCwgaW50KTsNCiNsaW5lIDMyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxhbW1pbnRyaW4uaCINCg0KDQoNCnZvaWQgX19zdm1faW52bHBnYih2b2lk
KiwgaW50KTsNCnZvaWQgX19zdm1fdGxic3luYyh2b2lkKTsNCg0KDQoNCn07IA0KI2xpbmUgMzMz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFtbWlu
dHJpbi5oIg0KDQojbGluZSAzMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcYW1taW50cmluLmgiDQojbGluZSAzMzYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYW1taW50cmluLmgiDQojbGluZSAzMzcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYW1taW50
cmluLmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxpbnRyaW4uaCINCiAgICAjbGluZSAzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4uaCINCg0KICAgIA0KDQojbGluZSAz
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbnRy
aW4uaCINCg0KICAgIA0KDQoNCiNsaW5lIDQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGludHJpbi5oIg0KDQogICAgDQoNCg0KI2xpbmUgNDkgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluLmgi
DQojbGluZSA1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxpbnRyaW4uaCINCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDU0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGludHJpbi5oIg0KDQoNCnZvaWQg
KiBfQWRkcmVzc09mUmV0dXJuQWRkcmVzcyh2b2lkKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0Kc2hvcnQgX0ludGVybG9ja2VkQW5kMTZfbnAoc2hvcnQgdm9s
YXRpbGUgKiBfVmFsdWUsIHNob3J0IF9NYXNrKTsNCl9faW50NjQgX0ludGVybG9ja2VkQW5kNjRf
bnAoX19pbnQ2NCB2b2xhdGlsZSAqIF9WYWx1ZSwgX19pbnQ2NCBfTWFzayk7DQpjaGFyIF9JbnRl
cmxvY2tlZEFuZDhfbnAoY2hhciB2b2xhdGlsZSAqIF9WYWx1ZSwgY2hhciBfTWFzayk7DQpsb25n
IF9JbnRlcmxvY2tlZEFuZF9ucChsb25nIHZvbGF0aWxlICogX1ZhbHVlLCBsb25nIF9NYXNrKTsN
CnVuc2lnbmVkIGNoYXIgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMTI4KF9faW50NjQgdm9s
YXRpbGUgKiBfRGVzdGluYXRpb24sIF9faW50NjQgX0V4Y2hhbmdlSGlnaCwgX19pbnQ2NCBfRXhj
aGFuZ2VMb3csIF9faW50NjQgKiBfQ29tcGFyYW5kUmVzdWx0KTsNCg0KDQp1bnNpZ25lZCBjaGFy
IF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTEyOF9ucChfX2ludDY0IHZvbGF0aWxlICogX0Rl
c3RpbmF0aW9uLCBfX2ludDY0IF9FeGNoYW5nZUhpZ2gsIF9faW50NjQgX0V4Y2hhbmdlTG93LCBf
X2ludDY0ICogX0NvbXBhcmFuZFJlc3VsdCk7DQoNCnNob3J0IF9JbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZTE2X25wKHNob3J0IHZvbGF0aWxlICogX0Rlc3RpbmF0aW9uLCBzaG9ydCBfRXhjaGFu
Z2UsIHNob3J0IF9Db21wYXJhbmQpOw0KX19pbnQ2NCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFu
Z2U2NF9ucChfX2ludDY0IHZvbGF0aWxlICogX0Rlc3RpbmF0aW9uLCBfX2ludDY0IF9FeGNoYW5n
ZSwgX19pbnQ2NCBfQ29tcGFyYW5kKTsNCnZvaWQgKiBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFu
Z2VQb2ludGVyKHZvaWQgKiB2b2xhdGlsZSAqIF9EZXN0aW5hdGlvbiwgdm9pZCAqIF9FeGNoYW5n
ZSwgdm9pZCAqIF9Db21wYXJhbmQpOw0KDQoNCnZvaWQgKiBfSW50ZXJsb2NrZWRDb21wYXJlRXhj
aGFuZ2VQb2ludGVyX25wKHZvaWQgKiB2b2xhdGlsZSAqIF9EZXN0aW5hdGlvbiwgdm9pZCAqIF9F
eGNoYW5nZSwgdm9pZCAqIF9Db21wYXJhbmQpOw0KDQpsb25nIF9JbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZV9ucChsb25nIHZvbGF0aWxlICogX0Rlc3RpbmF0aW9uLCBsb25nIF9FeGNoYW5nZSwg
bG9uZyBfQ29tcGFyYW5kKTsNCg0KDQoNCg0KDQoNCg0KDQoNCnZvaWQgKiBfSW50ZXJsb2NrZWRF
eGNoYW5nZVBvaW50ZXIodm9pZCAqIHZvbGF0aWxlICogX1RhcmdldCwgdm9pZCAqIF9WYWx1ZSk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0Kc2hvcnQgX0ludGVybG9ja2VkT3IxNl9ucChzaG9ydCB2
b2xhdGlsZSAqIF9WYWx1ZSwgc2hvcnQgX01hc2spOw0KX19pbnQ2NCBfSW50ZXJsb2NrZWRPcjY0
X25wKF9faW50NjQgdm9sYXRpbGUgKiBfVmFsdWUsIF9faW50NjQgX01hc2spOw0KY2hhciBfSW50
ZXJsb2NrZWRPcjhfbnAoY2hhciB2b2xhdGlsZSAqIF9WYWx1ZSwgY2hhciBfTWFzayk7DQpsb25n
IF9JbnRlcmxvY2tlZE9yX25wKGxvbmcgdm9sYXRpbGUgKiBfVmFsdWUsIGxvbmcgX01hc2spOw0K
c2hvcnQgX0ludGVybG9ja2VkWG9yMTZfbnAoc2hvcnQgdm9sYXRpbGUgKiBfVmFsdWUsIHNob3J0
IF9NYXNrKTsNCl9faW50NjQgX0ludGVybG9ja2VkWG9yNjRfbnAoX19pbnQ2NCB2b2xhdGlsZSAq
IF9WYWx1ZSwgX19pbnQ2NCBfTWFzayk7DQpjaGFyIF9JbnRlcmxvY2tlZFhvcjhfbnAoY2hhciB2
b2xhdGlsZSAqIF9WYWx1ZSwgY2hhciBfTWFzayk7DQpsb25nIF9JbnRlcmxvY2tlZFhvcl9ucChs
b25nIHZvbGF0aWxlICogX1ZhbHVlLCBsb25nIF9NYXNrKTsNCg0KDQoNCg0KDQoNCg0KDQp2b2lk
IF9SZWFkQmFycmllcih2b2lkKTsNCg0KDQoNCg0KDQoNCnZvaWQgKiBfUmV0dXJuQWRkcmVzcyh2
b2lkKTsNCg0Kdm9pZCBfV3JpdGVCYXJyaWVyKHZvaWQpOw0KDQoNCg0KDQoNCg0KDQoNCg0Kdm9p
ZCBfX2FkZGdzYnl0ZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBjaGFyKTsNCnZvaWQgX19hZGRn
c2R3b3JkKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOw0Kdm9pZCBfX2FkZGdzcXdvcmQo
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgX19pbnQ2NCk7DQp2b2lkIF9fYWRkZ3N3b3JkKHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIHNob3J0KTsNCg0KDQoNCg0Kdm9pZCBfX2NsdHModm9pZCk7DQp2
b2lkIF9fY29kZV9zZWcoY29uc3QgY2hhciAqKTsNCnZvaWQgX19jcHVpZChpbnRbNF0sIGludCk7
DQp2b2lkIF9fY3B1aWRleChpbnRbNF0sIGludCwgaW50KTsNCnZvaWQgX19jZGVjbCBfX2RlYnVn
YnJlYWsodm9pZCk7DQoNCl9faW50NjQgX19lbXVsKGludCwgaW50KTsNCnVuc2lnbmVkIF9faW50
NjQgX19lbXVsdSh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7DQpfX2RlY2xzcGVjKG5vcmV0
dXJuKSB2b2lkIF9fZmFzdGZhaWwodW5zaWduZWQgaW50KTsNCnZvaWQgX19mYXN0c3RvcmVmZW5j
ZSh2b2lkKTsNCnVuc2lnbmVkIGludCBfX2dldGNhbGxlcnNlZmxhZ3Modm9pZCk7DQp2b2lkIF9f
aGFsdCh2b2lkKTsNCg0KDQp1bnNpZ25lZCBjaGFyIF9faW5ieXRlKHVuc2lnbmVkIHNob3J0KTsN
CnZvaWQgX19pbmJ5dGVzdHJpbmcodW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIGNoYXIgKiwgdW5z
aWduZWQgbG9uZyk7DQoNCg0KDQp2b2lkIF9faW5jZ3NieXRlKHVuc2lnbmVkIGxvbmcpOw0Kdm9p
ZCBfX2luY2dzZHdvcmQodW5zaWduZWQgbG9uZyk7DQp2b2lkIF9faW5jZ3Nxd29yZCh1bnNpZ25l
ZCBsb25nKTsNCnZvaWQgX19pbmNnc3dvcmQodW5zaWduZWQgbG9uZyk7DQoNCg0KDQoNCnVuc2ln
bmVkIGxvbmcgX19pbmR3b3JkKHVuc2lnbmVkIHNob3J0KTsNCnZvaWQgX19pbmR3b3Jkc3RyaW5n
KHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcpOw0Kdm9pZCBf
X2ludDJjKHZvaWQpOw0Kdm9pZCBfX2ludmxwZyh2b2lkICopOw0KdW5zaWduZWQgc2hvcnQgX19p
bndvcmQodW5zaWduZWQgc2hvcnQpOw0Kdm9pZCBfX2lud29yZHN0cmluZyh1bnNpZ25lZCBzaG9y
dCwgdW5zaWduZWQgc2hvcnQgKiwgdW5zaWduZWQgbG9uZyk7DQp2b2lkIF9fbGlkdCh2b2lkICop
Ow0KdW5zaWduZWQgX19pbnQ2NCBfX2xsX2xzaGlmdCh1bnNpZ25lZCBfX2ludDY0LCBpbnQpOw0K
X19pbnQ2NCBfX2xsX3JzaGlmdChfX2ludDY0LCBpbnQpOw0Kdm9pZCBfX21vdnNiKHVuc2lnbmVk
IGNoYXIgKiwgdW5zaWduZWQgY2hhciBjb25zdCAqLCBzaXplX3QpOw0Kdm9pZCBfX21vdnNkKHVu
c2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyBjb25zdCAqLCBzaXplX3QpOw0Kdm9pZCBfX21v
dnNxKHVuc2lnbmVkIGxvbmcgbG9uZyAqLCB1bnNpZ25lZCBsb25nIGxvbmcgY29uc3QgKiwgc2l6
ZV90KTsNCnZvaWQgX19tb3Zzdyh1bnNpZ25lZCBzaG9ydCAqLCB1bnNpZ25lZCBzaG9ydCBjb25z
dCAqLCBzaXplX3QpOw0KX19pbnQ2NCBfX211bGgoX19pbnQ2NCwgX19pbnQ2NCk7DQp2b2lkIF9f
bm9wKHZvaWQpOw0Kdm9pZCBfX252cmVnX3Jlc3RvcmVfZmVuY2Uodm9pZCk7DQp2b2lkIF9fbnZy
ZWdfc2F2ZV9mZW5jZSh2b2lkKTsNCnZvaWQgX19vdXRieXRlKHVuc2lnbmVkIHNob3J0LCB1bnNp
Z25lZCBjaGFyKTsNCnZvaWQgX19vdXRieXRlc3RyaW5nKHVuc2lnbmVkIHNob3J0LCB1bnNpZ25l
ZCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOw0Kdm9pZCBfX291dGR3b3JkKHVuc2lnbmVkIHNob3J0
LCB1bnNpZ25lZCBsb25nKTsNCnZvaWQgX19vdXRkd29yZHN0cmluZyh1bnNpZ25lZCBzaG9ydCwg
dW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nKTsNCnZvaWQgX19vdXR3b3JkKHVuc2lnbmVk
IHNob3J0LCB1bnNpZ25lZCBzaG9ydCk7DQp2b2lkIF9fb3V0d29yZHN0cmluZyh1bnNpZ25lZCBz
aG9ydCwgdW5zaWduZWQgc2hvcnQgKiwgdW5zaWduZWQgbG9uZyk7DQoNCg0KDQoNCnVuc2lnbmVk
IF9faW50NjQgX19yZHRzYyh2b2lkKTsNCnVuc2lnbmVkIF9faW50NjQgX19yZHRzY3AodW5zaWdu
ZWQgaW50ICopOw0KdW5zaWduZWQgX19pbnQ2NCBfX3JlYWRjcjAodm9pZCk7DQoNCnVuc2lnbmVk
IF9faW50NjQgX19yZWFkY3IyKHZvaWQpOw0KDQp1bnNpZ25lZCBfX2ludDY0IF9fcmVhZGNyMyh2
b2lkKTsNCg0KdW5zaWduZWQgX19pbnQ2NCBfX3JlYWRjcjQodm9pZCk7DQoNCnVuc2lnbmVkIF9f
aW50NjQgX19yZWFkY3I4KHZvaWQpOw0KDQp1bnNpZ25lZCBfX2ludDY0IF9fcmVhZGRyKHVuc2ln
bmVkIGludCk7DQoNCnVuc2lnbmVkIF9faW50NjQgX19yZWFkZWZsYWdzKHZvaWQpOw0KDQoNCg0K
DQoNCnVuc2lnbmVkIGNoYXIgX19yZWFkZ3NieXRlKHVuc2lnbmVkIGxvbmcpOw0KdW5zaWduZWQg
bG9uZyBfX3JlYWRnc2R3b3JkKHVuc2lnbmVkIGxvbmcpOw0KdW5zaWduZWQgX19pbnQ2NCBfX3Jl
YWRnc3F3b3JkKHVuc2lnbmVkIGxvbmcpOw0KdW5zaWduZWQgc2hvcnQgX19yZWFkZ3N3b3JkKHVu
c2lnbmVkIGxvbmcpOw0KdW5zaWduZWQgX19pbnQ2NCBfX3JlYWRtc3IodW5zaWduZWQgbG9uZyk7
DQp1bnNpZ25lZCBfX2ludDY0IF9fcmVhZHBtYyh1bnNpZ25lZCBsb25nKTsNCg0KDQoNCg0KdW5z
aWduZWQgbG9uZyBfX3NlZ21lbnRsaW1pdCh1bnNpZ25lZCBsb25nKTsNCg0KdW5zaWduZWQgX19p
bnQ2NCBfX3NoaWZ0bGVmdDEyOCh1bnNpZ25lZCBfX2ludDY0IF9Mb3dQYXJ0LCB1bnNpZ25lZCBf
X2ludDY0IF9IaWdoUGFydCwgdW5zaWduZWQgY2hhciBfU2hpZnQpOw0Kdm9pZCBfX3NpZHQodm9p
ZCAqKTsNCg0Kdm9pZCBfX3N0b3NiKHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciwgc2l6
ZV90KTsNCnZvaWQgX19zdG9zZCh1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcsIHNpemVf
dCk7DQp2b2lkIF9fc3Rvc3EodW5zaWduZWQgX19pbnQ2NCAqLCB1bnNpZ25lZCBfX2ludDY0LCBz
aXplX3QpOw0Kdm9pZCBfX3N0b3N3KHVuc2lnbmVkIHNob3J0ICosIHVuc2lnbmVkIHNob3J0LCBz
aXplX3QpOw0Kdm9pZCBfX3N2bV9jbGdpKHZvaWQpOw0Kdm9pZCBfX3N2bV9pbnZscGdhKHZvaWQg
KiwgaW50KTsNCnZvaWQgX19zdm1fc2tpbml0KGludCk7DQp2b2lkIF9fc3ZtX3N0Z2kodm9pZCk7
DQp2b2lkIF9fc3ZtX3ZtbG9hZChzaXplX3QpOw0Kdm9pZCBfX3N2bV92bXJ1bihzaXplX3QpOw0K
dm9pZCBfX3N2bV92bXNhdmUoc2l6ZV90KTsNCg0KDQoNCg0KDQp2b2lkIF9fdWQyKHZvaWQpOw0K
dW5zaWduZWQgX19pbnQ2NCBfX3VsbF9yc2hpZnQodW5zaWduZWQgX19pbnQ2NCwgaW50KTsNCnVu
c2lnbmVkIF9faW50NjQgX191bXVsaCh1bnNpZ25lZCBfX2ludDY0LCB1bnNpZ25lZCBfX2ludDY0
KTsNCnZvaWQgX192bXhfb2ZmKHZvaWQpOw0KdW5zaWduZWQgY2hhciBfX3ZteF9vbih1bnNpZ25l
ZCBfX2ludDY0ICopOw0KdW5zaWduZWQgY2hhciBfX3ZteF92bWNsZWFyKHVuc2lnbmVkIF9faW50
NjQgKik7DQp1bnNpZ25lZCBjaGFyIF9fdm14X3ZtbGF1bmNoKHZvaWQpOw0KdW5zaWduZWQgY2hh
ciBfX3ZteF92bXB0cmxkKHVuc2lnbmVkIF9faW50NjQgKik7DQp2b2lkIF9fdm14X3ZtcHRyc3Qo
dW5zaWduZWQgX19pbnQ2NCAqKTsNCnVuc2lnbmVkIGNoYXIgX192bXhfdm1yZWFkKHNpemVfdCwg
c2l6ZV90ICopOw0KdW5zaWduZWQgY2hhciBfX3ZteF92bXJlc3VtZSh2b2lkKTsNCnVuc2lnbmVk
IGNoYXIgX192bXhfdm13cml0ZShzaXplX3QsIHNpemVfdCk7DQp2b2lkIF9fd2JpbnZkKHZvaWQp
Ow0KDQoNCnZvaWQgX193cml0ZWNyMCh1bnNpZ25lZCBfX2ludDY0KTsNCg0Kdm9pZCBfX3dyaXRl
Y3IyKHVuc2lnbmVkIF9faW50NjQpOw0KDQp2b2lkIF9fd3JpdGVjcjModW5zaWduZWQgX19pbnQ2
NCk7DQoNCnZvaWQgX193cml0ZWNyNCh1bnNpZ25lZCBfX2ludDY0KTsNCg0Kdm9pZCBfX3dyaXRl
Y3I4KHVuc2lnbmVkIF9faW50NjQpOw0KDQp2b2lkIF9fd3JpdGVkcih1bnNpZ25lZCBpbnQsIHVu
c2lnbmVkIF9faW50NjQpOw0KDQp2b2lkIF9fd3JpdGVlZmxhZ3ModW5zaWduZWQgX19pbnQ2NCk7
DQoNCg0KDQoNCg0Kdm9pZCBfX3dyaXRlZ3NieXRlKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNo
YXIpOw0Kdm9pZCBfX3dyaXRlZ3Nkd29yZCh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsN
CnZvaWQgX193cml0ZWdzcXdvcmQodW5zaWduZWQgbG9uZywgdW5zaWduZWQgX19pbnQ2NCk7DQp2
b2lkIF9fd3JpdGVnc3dvcmQodW5zaWduZWQgbG9uZywgdW5zaWduZWQgc2hvcnQpOw0Kdm9pZCBf
X3dyaXRlbXNyKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIF9faW50NjQpOw0KDQoNCg0KDQp1bnNp
Z25lZCBjaGFyIF9iaXR0ZXN0NjQoX19pbnQ2NCBjb25zdCAqLCBfX2ludDY0KTsNCnVuc2lnbmVk
IGNoYXIgX2JpdHRlc3RhbmRjb21wbGVtZW50KGxvbmcgKiwgbG9uZyk7DQp1bnNpZ25lZCBjaGFy
IF9iaXR0ZXN0YW5kY29tcGxlbWVudDY0KF9faW50NjQgKiwgX19pbnQ2NCk7DQp1bnNpZ25lZCBj
aGFyIF9iaXR0ZXN0YW5kcmVzZXQobG9uZyAqLCBsb25nKTsNCnVuc2lnbmVkIGNoYXIgX2JpdHRl
c3RhbmRyZXNldDY0KF9faW50NjQgKiwgX19pbnQ2NCk7DQp1bnNpZ25lZCBjaGFyIF9iaXR0ZXN0
YW5kc2V0KGxvbmcgKiwgbG9uZyk7DQp1bnNpZ25lZCBjaGFyIF9iaXR0ZXN0YW5kc2V0NjQoX19p
bnQ2NCAqLCBfX2ludDY0KTsNCltbbm9kaXNjYXJkXV0gICB1bnNpZ25lZCBfX2ludDY0IF9fY2Rl
Y2wgX2J5dGVzd2FwX3VpbnQ2NCggIHVuc2lnbmVkIF9faW50NjQpOw0KW1tub2Rpc2NhcmRdXSAg
IHVuc2lnbmVkIGxvbmcgX19jZGVjbCBfYnl0ZXN3YXBfdWxvbmcoICB1bnNpZ25lZCBsb25nKTsN
Cltbbm9kaXNjYXJkXV0gICB1bnNpZ25lZCBzaG9ydCBfX2NkZWNsIF9ieXRlc3dhcF91c2hvcnQo
ICB1bnNpZ25lZCBzaG9ydCk7DQp2b2lkIF9fY2RlY2wgX2Rpc2FibGUodm9pZCk7DQp2b2lkIF9f
Y2RlY2wgX2VuYWJsZSh2b2lkKTsNCnVuc2lnbmVkIGNoYXIgX2ludGVybG9ja2VkYml0dGVzdGFu
ZHJlc2V0KGxvbmcgdm9sYXRpbGUgKiwgbG9uZyk7DQp1bnNpZ25lZCBjaGFyIF9pbnRlcmxvY2tl
ZGJpdHRlc3RhbmRyZXNldDY0KF9faW50NjQgdm9sYXRpbGUgKiwgX19pbnQ2NCk7DQoNCg0KDQoN
Cg0KDQp1bnNpZ25lZCBjaGFyIF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRzZXQ2NChfX2ludDY0IHZv
bGF0aWxlICosIF9faW50NjQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpbW25vZGlzY2Fy
ZF1dICAgdW5zaWduZWQgbG9uZyBfX2NkZWNsIF9scm90bCggIHVuc2lnbmVkIGxvbmcsICAgaW50
KTsNCltbbm9kaXNjYXJkXV0gICB1bnNpZ25lZCBsb25nIF9fY2RlY2wgX2xyb3RyKCAgdW5zaWdu
ZWQgbG9uZywgICBpbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0Kdm9pZCBfbV9wcmVmZXRjaCh2b2lkICopOw0Kdm9pZCBf
bV9wcmVmZXRjaHcodm9sYXRpbGUgY29uc3Qgdm9pZCAqKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX20xMjhp
IF9tbV9hYnNfZXBpMTYoX19tMTI4aSk7DQpfX20xMjhpIF9tbV9hYnNfZXBpMzIoX19tMTI4aSk7
DQpfX20xMjhpIF9tbV9hYnNfZXBpOChfX20xMjhpKTsNCg0KDQoNCl9fbTEyOGkgX21tX2FkZF9l
cGkxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX2FkZF9lcGkzMihfX20xMjhpLCBf
X20xMjhpKTsNCl9fbTEyOGkgX21tX2FkZF9lcGk2NChfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEy
OGkgX21tX2FkZF9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4ZCBfbW1fYWRkX3BkKF9f
bTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9tbV9hZGRfcHMoX19tMTI4LCBfX20xMjgpOw0KX19t
MTI4ZCBfbW1fYWRkX3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0KDQpfX20xMjggX21tX2FkZF9zcyhf
X20xMjgsIF9fbTEyOCk7DQpfX20xMjhpIF9tbV9hZGRzX2VwaTE2KF9fbTEyOGksIF9fbTEyOGkp
Ow0KX19tMTI4aSBfbW1fYWRkc19lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1f
YWRkc19lcHUxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX2FkZHNfZXB1OChfX20x
MjhpLCBfX20xMjhpKTsNCl9fbTEyOGQgX21tX2FkZHN1Yl9wZChfX20xMjhkLCBfX20xMjhkKTsN
Cl9fbTEyOCBfbW1fYWRkc3ViX3BzKF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGkgX21tX2FsaWdu
cl9lcGk4KF9fbTEyOGksIF9fbTEyOGksIGludCk7DQoNCl9fbTEyOGQgX21tX2FuZF9wZChfX20x
MjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fYW5kX3BzKF9fbTEyOCwgX19tMTI4KTsNCl9fbTEy
OGkgX21tX2FuZF9zaTEyOChfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGQgX21tX2FuZG5vdF9w
ZChfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fYW5kbm90X3BzKF9fbTEyOCwgX19tMTI4
KTsNCl9fbTEyOGkgX21tX2FuZG5vdF9zaTEyOChfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkg
X21tX2F2Z19lcHUxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX2F2Z19lcHU4KF9f
bTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fYmxlbmRfZXBpMTYoX19tMTI4aSwgX19tMTI4
aSwgaW50KTsNCl9fbTEyOGQgX21tX2JsZW5kX3BkKF9fbTEyOGQsIF9fbTEyOGQsIGludCk7DQpf
X20xMjggX21tX2JsZW5kX3BzKF9fbTEyOCwgX19tMTI4LCBpbnQpOw0KX19tMTI4aSBfbW1fYmxl
bmR2X2VwaTgoX19tMTI4aSwgX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhkIF9tbV9ibGVuZHZf
cGQoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2JsZW5kdl9wcyhfX20x
MjgsIF9fbTEyOCwgX19tMTI4KTsNCnZvaWQgX21tX2NsZmx1c2godm9pZCBjb25zdCAqKTsNCnZv
aWQgX21tX2NsZmx1c2hvcHQodm9pZCBjb25zdCAqKTsNCnZvaWQgX21tX2Nsd2Iodm9pZCBjb25z
dCAqKTsNCnZvaWQgX21tX2NsemVybyh2b2lkIGNvbnN0ICopOw0KX19tMTI4aSBfbW1fY21wZXFf
ZXBpMTYoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9jbXBlcV9lcGkzMihfX20xMjhp
LCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX2NtcGVxX2VwaTY0KF9fbTEyOGksIF9fbTEyOGkpOw0K
X19tMTI4aSBfbW1fY21wZXFfZXBpOChfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGQgX21tX2Nt
cGVxX3BkKF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9tbV9jbXBlcV9wcyhfX20xMjgsIF9f
bTEyOCk7DQpfX20xMjhkIF9tbV9jbXBlcV9zZChfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBf
bW1fY21wZXFfc3MoX19tMTI4LCBfX20xMjgpOw0KaW50IF9tbV9jbXBlc3RyYShfX20xMjhpLCBp
bnQsIF9fbTEyOGksIGludCwgaW50KTsNCmludCBfbW1fY21wZXN0cmMoX19tMTI4aSwgaW50LCBf
X20xMjhpLCBpbnQsIGludCk7DQppbnQgX21tX2NtcGVzdHJpKF9fbTEyOGksIGludCwgX19tMTI4
aSwgaW50LCBpbnQpOw0KX19tMTI4aSBfbW1fY21wZXN0cm0oX19tMTI4aSwgaW50LCBfX20xMjhp
LCBpbnQsIGludCk7DQppbnQgX21tX2NtcGVzdHJvKF9fbTEyOGksIGludCwgX19tMTI4aSwgaW50
LCBpbnQpOw0KaW50IF9tbV9jbXBlc3RycyhfX20xMjhpLCBpbnQsIF9fbTEyOGksIGludCwgaW50
KTsNCmludCBfbW1fY21wZXN0cnooX19tMTI4aSwgaW50LCBfX20xMjhpLCBpbnQsIGludCk7DQpf
X20xMjhkIF9tbV9jbXBnZV9wZChfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fY21wZ2Vf
cHMoX19tMTI4LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fY21wZ2Vfc2QoX19tMTI4ZCwgX19tMTI4
ZCk7DQpfX20xMjggX21tX2NtcGdlX3NzKF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGkgX21tX2Nt
cGd0X2VwaTE2KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fY21wZ3RfZXBpMzIoX19t
MTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9jbXBndF9lcGk2NChfX20xMjhpLCBfX20xMjhp
KTsNCl9fbTEyOGkgX21tX2NtcGd0X2VwaTgoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhkIF9t
bV9jbXBndF9wZChfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fY21wZ3RfcHMoX19tMTI4
LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fY21wZ3Rfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20x
MjggX21tX2NtcGd0X3NzKF9fbTEyOCwgX19tMTI4KTsNCmludCBfbW1fY21waXN0cmEoX19tMTI4
aSwgX19tMTI4aSwgaW50KTsNCmludCBfbW1fY21waXN0cmMoX19tMTI4aSwgX19tMTI4aSwgaW50
KTsNCmludCBfbW1fY21waXN0cmkoX19tMTI4aSwgX19tMTI4aSwgaW50KTsNCl9fbTEyOGkgX21t
X2NtcGlzdHJtKF9fbTEyOGksIF9fbTEyOGksIGludCk7DQppbnQgX21tX2NtcGlzdHJvKF9fbTEy
OGksIF9fbTEyOGksIGludCk7DQppbnQgX21tX2NtcGlzdHJzKF9fbTEyOGksIF9fbTEyOGksIGlu
dCk7DQppbnQgX21tX2NtcGlzdHJ6KF9fbTEyOGksIF9fbTEyOGksIGludCk7DQpfX20xMjhkIF9t
bV9jbXBsZV9wZChfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fY21wbGVfcHMoX19tMTI4
LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fY21wbGVfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20x
MjggX21tX2NtcGxlX3NzKF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGkgX21tX2NtcGx0X2VwaTE2
KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fY21wbHRfZXBpMzIoX19tMTI4aSwgX19t
MTI4aSk7DQpfX20xMjhpIF9tbV9jbXBsdF9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4
ZCBfbW1fY21wbHRfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2NtcGx0X3BzKF9f
bTEyOCwgX19tMTI4KTsNCl9fbTEyOGQgX21tX2NtcGx0X3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0K
X19tMTI4IF9tbV9jbXBsdF9zcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXBuZXFf
cGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2NtcG5lcV9wcyhfX20xMjgsIF9fbTEy
OCk7DQpfX20xMjhkIF9tbV9jbXBuZXFfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21t
X2NtcG5lcV9zcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXBuZ2VfcGQoX19tMTI4
ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2NtcG5nZV9wcyhfX20xMjgsIF9fbTEyOCk7DQpfX20x
MjhkIF9tbV9jbXBuZ2Vfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2NtcG5nZV9z
cyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXBuZ3RfcGQoX19tMTI4ZCwgX19tMTI4
ZCk7DQpfX20xMjggX21tX2NtcG5ndF9wcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9j
bXBuZ3Rfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2NtcG5ndF9zcyhfX20xMjgs
IF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXBubGVfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20x
MjggX21tX2NtcG5sZV9wcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXBubGVfc2Qo
X19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2NtcG5sZV9zcyhfX20xMjgsIF9fbTEyOCk7
DQpfX20xMjhkIF9tbV9jbXBubHRfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2Nt
cG5sdF9wcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXBubHRfc2QoX19tMTI4ZCwg
X19tMTI4ZCk7DQpfX20xMjggX21tX2NtcG5sdF9zcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhk
IF9tbV9jbXBvcmRfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX2NtcG9yZF9wcyhf
X20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXBvcmRfc2QoX19tMTI4ZCwgX19tMTI4ZCk7
DQpfX20xMjggX21tX2NtcG9yZF9zcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhkIF9tbV9jbXB1
bm9yZF9wZChfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fY21wdW5vcmRfcHMoX19tMTI4
LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fY21wdW5vcmRfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpf
X20xMjggX21tX2NtcHVub3JkX3NzKF9fbTEyOCwgX19tMTI4KTsNCmludCBfbW1fY29taWVxX3Nk
KF9fbTEyOGQsIF9fbTEyOGQpOw0KaW50IF9tbV9jb21pZXFfc3MoX19tMTI4LCBfX20xMjgpOw0K
aW50IF9tbV9jb21pZ2Vfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQppbnQgX21tX2NvbWlnZV9zcyhf
X20xMjgsIF9fbTEyOCk7DQppbnQgX21tX2NvbWlndF9zZChfX20xMjhkLCBfX20xMjhkKTsNCmlu
dCBfbW1fY29taWd0X3NzKF9fbTEyOCwgX19tMTI4KTsNCmludCBfbW1fY29taWxlX3NkKF9fbTEy
OGQsIF9fbTEyOGQpOw0KaW50IF9tbV9jb21pbGVfc3MoX19tMTI4LCBfX20xMjgpOw0KaW50IF9t
bV9jb21pbHRfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQppbnQgX21tX2NvbWlsdF9zcyhfX20xMjgs
IF9fbTEyOCk7DQppbnQgX21tX2NvbWluZXFfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQppbnQgX21t
X2NvbWluZXFfc3MoX19tMTI4LCBfX20xMjgpOw0KdW5zaWduZWQgaW50IF9tbV9jcmMzMl91MTYo
dW5zaWduZWQgaW50LCB1bnNpZ25lZCBzaG9ydCk7DQp1bnNpZ25lZCBpbnQgX21tX2NyYzMyX3Uz
Mih1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7DQp1bnNpZ25lZCBfX2ludDY0IF9tbV9jcmMz
Ml91NjQodW5zaWduZWQgX19pbnQ2NCwgdW5zaWduZWQgX19pbnQ2NCk7DQp1bnNpZ25lZCBpbnQg
X21tX2NyYzMyX3U4KHVuc2lnbmVkIGludCwgdW5zaWduZWQgY2hhcik7DQoNCg0KX19tMTI4IF9t
bV9jdnRfc2kyc3MoX19tMTI4LCBpbnQpOw0KaW50IF9tbV9jdnRfc3Myc2koX19tMTI4KTsNCl9f
bTEyOGkgX21tX2N2dGVwaTE2X2VwaTMyKF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fY3Z0ZXBpMTZf
ZXBpNjQoX19tMTI4aSk7DQpfX20xMjhpIF9tbV9jdnRlcGkzMl9lcGk2NChfX20xMjhpKTsNCl9f
bTEyOGQgX21tX2N2dGVwaTMyX3BkKF9fbTEyOGkpOw0KX19tMTI4IF9tbV9jdnRlcGkzMl9wcyhf
X20xMjhpKTsNCl9fbTEyOGkgX21tX2N2dGVwaThfZXBpMTYoX19tMTI4aSk7DQpfX20xMjhpIF9t
bV9jdnRlcGk4X2VwaTMyKF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fY3Z0ZXBpOF9lcGk2NChfX20x
MjhpKTsNCl9fbTEyOGkgX21tX2N2dGVwdTE2X2VwaTMyKF9fbTEyOGkpOw0KX19tMTI4aSBfbW1f
Y3Z0ZXB1MTZfZXBpNjQoX19tMTI4aSk7DQpfX20xMjhpIF9tbV9jdnRlcHUzMl9lcGk2NChfX20x
MjhpKTsNCl9fbTEyOGkgX21tX2N2dGVwdThfZXBpMTYoX19tMTI4aSk7DQpfX20xMjhpIF9tbV9j
dnRlcHU4X2VwaTMyKF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fY3Z0ZXB1OF9lcGk2NChfX20xMjhp
KTsNCl9fbTEyOGkgX21tX2N2dHBkX2VwaTMyKF9fbTEyOGQpOw0KDQpfX20xMjggX21tX2N2dHBk
X3BzKF9fbTEyOGQpOw0KDQpfX20xMjhpIF9tbV9jdnRwc19lcGkzMihfX20xMjgpOw0KX19tMTI4
ZCBfbW1fY3Z0cHNfcGQoX19tMTI4KTsNCmludCBfbW1fY3Z0c2Rfc2kzMihfX20xMjhkKTsNCl9f
aW50NjQgX21tX2N2dHNkX3NpNjQoX19tMTI4ZCk7DQpfX2ludDY0IF9tbV9jdnRzZF9zaTY0eChf
X20xMjhkKTsNCl9fbTEyOCBfbW1fY3Z0c2Rfc3MoX19tMTI4LCBfX20xMjhkKTsNCmludCBfbW1f
Y3Z0c2kxMjhfc2kzMihfX20xMjhpKTsNCl9faW50NjQgX21tX2N2dHNpMTI4X3NpNjQoX19tMTI4
aSk7DQpfX2ludDY0IF9tbV9jdnRzaTEyOF9zaTY0eChfX20xMjhpKTsNCl9fbTEyOGQgX21tX2N2
dHNpMzJfc2QoX19tMTI4ZCwgaW50KTsNCl9fbTEyOGkgX21tX2N2dHNpMzJfc2kxMjgoaW50KTsN
Cl9fbTEyOGQgX21tX2N2dHNpNjRfc2QoX19tMTI4ZCwgX19pbnQ2NCk7DQpfX20xMjhpIF9tbV9j
dnRzaTY0X3NpMTI4KF9faW50NjQpOw0KX19tMTI4IF9tbV9jdnRzaTY0X3NzKF9fbTEyOCwgX19p
bnQ2NCk7DQpfX20xMjhkIF9tbV9jdnRzaTY0eF9zZChfX20xMjhkLCBfX2ludDY0KTsNCl9fbTEy
OGkgX21tX2N2dHNpNjR4X3NpMTI4KF9faW50NjQpOw0KX19tMTI4IF9tbV9jdnRzaTY0eF9zcyhf
X20xMjgsIF9faW50NjQpOw0KX19tMTI4ZCBfbW1fY3Z0c3Nfc2QoX19tMTI4ZCwgX19tMTI4KTsN
Cl9faW50NjQgX21tX2N2dHNzX3NpNjQoX19tMTI4KTsNCl9faW50NjQgX21tX2N2dHNzX3NpNjR4
KF9fbTEyOCk7DQoNCmludCBfbW1fY3Z0dF9zczJzaShfX20xMjgpOw0KX19tMTI4aSBfbW1fY3Z0
dHBkX2VwaTMyKF9fbTEyOGQpOw0KDQpfX20xMjhpIF9tbV9jdnR0cHNfZXBpMzIoX19tMTI4KTsN
CmludCBfbW1fY3Z0dHNkX3NpMzIoX19tMTI4ZCk7DQpfX2ludDY0IF9tbV9jdnR0c2Rfc2k2NChf
X20xMjhkKTsNCl9faW50NjQgX21tX2N2dHRzZF9zaTY0eChfX20xMjhkKTsNCl9faW50NjQgX21t
X2N2dHRzc19zaTY0KF9fbTEyOCk7DQpfX2ludDY0IF9tbV9jdnR0c3Nfc2k2NHgoX19tMTI4KTsN
Cl9fbTEyOGQgX21tX2Rpdl9wZChfX20xMjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fZGl2X3Bz
KF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGQgX21tX2Rpdl9zZChfX20xMjhkLCBfX20xMjhkKTsN
Cl9fbTEyOCBfbW1fZGl2X3NzKF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGQgX21tX2RwX3BkKF9f
bTEyOGQsIF9fbTEyOGQsIGludCk7DQpfX20xMjggX21tX2RwX3BzKF9fbTEyOCwgX19tMTI4LCBp
bnQpOw0KaW50IF9tbV9leHRyYWN0X2VwaTE2KF9fbTEyOGksIGludCk7DQppbnQgX21tX2V4dHJh
Y3RfZXBpMzIoX19tMTI4aSwgaW50KTsNCl9faW50NjQgX21tX2V4dHJhY3RfZXBpNjQoX19tMTI4
aSwgaW50KTsNCmludCBfbW1fZXh0cmFjdF9lcGk4KF9fbTEyOGksIGludCk7DQppbnQgX21tX2V4
dHJhY3RfcHMoX19tMTI4LCBpbnQpOw0KX19tMTI4aSBfbW1fZXh0cmFjdF9zaTY0KF9fbTEyOGks
IF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fZXh0cmFjdGlfc2k2NChfX20xMjhpLCBpbnQsIGludCk7
DQp1bnNpZ25lZCBpbnQgX21tX2dldGNzcih2b2lkKTsNCl9fbTEyOGkgX21tX2hhZGRfZXBpMTYo
X19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9oYWRkX2VwaTMyKF9fbTEyOGksIF9fbTEy
OGkpOw0KX19tMTI4ZCBfbW1faGFkZF9wZChfX20xMjhkLCBfX20xMjhkKTsNCg0KDQpfX20xMjgg
X21tX2hhZGRfcHMoX19tMTI4LCBfX20xMjgpOw0KX19tMTI4aSBfbW1faGFkZHNfZXBpMTYoX19t
MTI4aSwgX19tMTI4aSk7DQoNCl9fbTEyOGkgX21tX2hzdWJfZXBpMTYoX19tMTI4aSwgX19tMTI4
aSk7DQpfX20xMjhpIF9tbV9oc3ViX2VwaTMyKF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4ZCBf
bW1faHN1Yl9wZChfX20xMjhkLCBfX20xMjhkKTsNCg0KDQpfX20xMjggX21tX2hzdWJfcHMoX19t
MTI4LCBfX20xMjgpOw0KX19tMTI4aSBfbW1faHN1YnNfZXBpMTYoX19tMTI4aSwgX19tMTI4aSk7
DQoNCl9fbTEyOGkgX21tX2luc2VydF9lcGkxNihfX20xMjhpLCBpbnQsIGludCk7DQpfX20xMjhp
IF9tbV9pbnNlcnRfZXBpMzIoX19tMTI4aSwgaW50LCBpbnQpOw0KX19tMTI4aSBfbW1faW5zZXJ0
X2VwaTY0KF9fbTEyOGksIF9faW50NjQsIGludCk7DQpfX20xMjhpIF9tbV9pbnNlcnRfZXBpOChf
X20xMjhpLCBpbnQsIGludCk7DQpfX20xMjggX21tX2luc2VydF9wcyhfX20xMjgsIF9fbTEyOCwg
aW50KTsNCl9fbTEyOGkgX21tX2luc2VydF9zaTY0KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4
aSBfbW1faW5zZXJ0aV9zaTY0KF9fbTEyOGksIF9fbTEyOGksIGludCwgaW50KTsNCl9fbTEyOGkg
X21tX2xkZHF1X3NpMTI4KF9fbTEyOGkgY29uc3QgKik7DQp2b2lkIF9tbV9sZmVuY2Uodm9pZCk7
DQpfX20xMjhkIF9tbV9sb2FkMV9wZChkb3VibGUgY29uc3QgKik7DQpfX20xMjhkIF9tbV9sb2Fk
X3BkKGRvdWJsZSBjb25zdCAqKTsNCl9fbTEyOCBfbW1fbG9hZF9wcyhmbG9hdCBjb25zdCAqKTsN
Cl9fbTEyOCBfbW1fbG9hZF9wczEoZmxvYXQgY29uc3QgKik7DQpfX20xMjhkIF9tbV9sb2FkX3Nk
KGRvdWJsZSBjb25zdCAqKTsNCl9fbTEyOGkgX21tX2xvYWRfc2kxMjgoX19tMTI4aSBjb25zdCAq
KTsNCl9fbTEyOCBfbW1fbG9hZF9zcyhmbG9hdCBjb25zdCAqKTsNCl9fbTEyOGQgX21tX2xvYWRk
dXBfcGQoZG91YmxlIGNvbnN0ICopOw0KX19tMTI4ZCBfbW1fbG9hZGhfcGQoX19tMTI4ZCwgZG91
YmxlIGNvbnN0ICopOw0KX19tMTI4IF9tbV9sb2FkaF9waShfX20xMjgsIF9fbTY0IGNvbnN0ICop
Ow0KX19tMTI4aSBfbW1fbG9hZGxfZXBpNjQoX19tMTI4aSBjb25zdCAqKTsNCl9fbTEyOGQgX21t
X2xvYWRsX3BkKF9fbTEyOGQsIGRvdWJsZSBjb25zdCAqKTsNCl9fbTEyOCBfbW1fbG9hZGxfcGko
X19tMTI4LCBfX202NCBjb25zdCAqKTsNCl9fbTEyOGQgX21tX2xvYWRyX3BkKGRvdWJsZSBjb25z
dCAqKTsNCl9fbTEyOCBfbW1fbG9hZHJfcHMoZmxvYXQgY29uc3QgKik7DQpfX20xMjhkIF9tbV9s
b2FkdV9wZChkb3VibGUgY29uc3QgKik7DQpfX20xMjggX21tX2xvYWR1X3BzKGZsb2F0IGNvbnN0
ICopOw0KX19tMTI4aSBfbW1fbG9hZHVfc2kxMjgoX19tMTI4aSBjb25zdCAqKTsNCl9fbTEyOGkg
X21tX21hZGRfZXBpMTYoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9tYWRkdWJzX2Vw
aTE2KF9fbTEyOGksIF9fbTEyOGkpOw0KDQp2b2lkIF9tbV9tYXNrbW92ZXVfc2kxMjgoX19tMTI4
aSwgX19tMTI4aSwgY2hhciAqKTsNCl9fbTEyOGkgX21tX21heF9lcGkxNihfX20xMjhpLCBfX20x
MjhpKTsNCl9fbTEyOGkgX21tX21heF9lcGkzMihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkg
X21tX21heF9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fbWF4X2VwdTE2KF9f
bTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fbWF4X2VwdTMyKF9fbTEyOGksIF9fbTEyOGkp
Ow0KX19tMTI4aSBfbW1fbWF4X2VwdTgoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhkIF9tbV9t
YXhfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX21heF9wcyhfX20xMjgsIF9fbTEy
OCk7DQpfX20xMjhkIF9tbV9tYXhfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX21h
eF9zcyhfX20xMjgsIF9fbTEyOCk7DQp2b2lkIF9tbV9tZmVuY2Uodm9pZCk7DQpfX20xMjhpIF9t
bV9taW5fZXBpMTYoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9taW5fZXBpMzIoX19t
MTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9taW5fZXBpOChfX20xMjhpLCBfX20xMjhpKTsN
Cl9fbTEyOGkgX21tX21pbl9lcHUxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX21p
bl9lcHUzMihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX21pbl9lcHU4KF9fbTEyOGks
IF9fbTEyOGkpOw0KX19tMTI4ZCBfbW1fbWluX3BkKF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4
IF9tbV9taW5fcHMoX19tMTI4LCBfX20xMjgpOw0KX19tMTI4ZCBfbW1fbWluX3NkKF9fbTEyOGQs
IF9fbTEyOGQpOw0KX19tMTI4IF9tbV9taW5fc3MoX19tMTI4LCBfX20xMjgpOw0KX19tMTI4aSBf
bW1fbWlucG9zX2VwdTE2KF9fbTEyOGkpOw0Kdm9pZCBfbW1fbW9uaXRvcih2b2lkIGNvbnN0ICos
IHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsNCl9fbTEyOGkgX21tX21vdmVfZXBpNjQoX19t
MTI4aSk7DQpfX20xMjhkIF9tbV9tb3ZlX3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9t
bV9tb3ZlX3NzKF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGQgX21tX21vdmVkdXBfcGQoX19tMTI4
ZCk7DQpfX20xMjggX21tX21vdmVoZHVwX3BzKF9fbTEyOCk7DQpfX20xMjggX21tX21vdmVobF9w
cyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjggX21tX21vdmVsZHVwX3BzKF9fbTEyOCk7DQpfX20x
MjggX21tX21vdmVsaF9wcyhfX20xMjgsIF9fbTEyOCk7DQppbnQgX21tX21vdmVtYXNrX2VwaTgo
X19tMTI4aSk7DQppbnQgX21tX21vdmVtYXNrX3BkKF9fbTEyOGQpOw0KaW50IF9tbV9tb3ZlbWFz
a19wcyhfX20xMjgpOw0KDQoNCl9fbTEyOGkgX21tX21wc2FkYndfZXB1OChfX20xMjhpLCBfX20x
MjhpLCBpbnQpOw0KX19tMTI4aSBfbW1fbXVsX2VwaTMyKF9fbTEyOGksIF9fbTEyOGkpOw0KX19t
MTI4aSBfbW1fbXVsX2VwdTMyKF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4ZCBfbW1fbXVsX3Bk
KF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9tbV9tdWxfcHMoX19tMTI4LCBfX20xMjgpOw0K
X19tMTI4ZCBfbW1fbXVsX3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9tbV9tdWxfc3Mo
X19tMTI4LCBfX20xMjgpOw0KDQpfX20xMjhpIF9tbV9tdWxoaV9lcGkxNihfX20xMjhpLCBfX20x
MjhpKTsNCl9fbTEyOGkgX21tX211bGhpX2VwdTE2KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4
aSBfbW1fbXVsaHJzX2VwaTE2KF9fbTEyOGksIF9fbTEyOGkpOw0KDQpfX20xMjhpIF9tbV9tdWxs
b19lcGkxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX211bGxvX2VwaTMyKF9fbTEy
OGksIF9fbTEyOGkpOw0Kdm9pZCBfbW1fbXdhaXQodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQp
Ow0KX19tMTI4ZCBfbW1fb3JfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX29yX3Bz
KF9fbTEyOCwgX19tMTI4KTsNCl9fbTEyOGkgX21tX29yX3NpMTI4KF9fbTEyOGksIF9fbTEyOGkp
Ow0KX19tMTI4aSBfbW1fcGFja3NfZXBpMTYoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9t
bV9wYWNrc19lcGkzMihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX3BhY2t1c19lcGkx
NihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX3BhY2t1c19lcGkzMihfX20xMjhpLCBf
X20xMjhpKTsNCnZvaWQgX21tX3BhdXNlKHZvaWQpOw0KaW50IF9tbV9wb3BjbnRfdTMyKHVuc2ln
bmVkIGludCk7DQpfX2ludDY0IF9tbV9wb3BjbnRfdTY0KHVuc2lnbmVkIF9faW50NjQpOw0Kdm9p
ZCBfbW1fcHJlZmV0Y2goY2hhciBjb25zdCAqLCBpbnQpOw0KX19tMTI4IF9tbV9yY3BfcHMoX19t
MTI4KTsNCl9fbTEyOCBfbW1fcmNwX3NzKF9fbTEyOCk7DQpfX20xMjhkIF9tbV9yb3VuZF9wZChf
X20xMjhkLCBpbnQpOw0KX19tMTI4IF9tbV9yb3VuZF9wcyhfX20xMjgsIGludCk7DQpfX20xMjhk
IF9tbV9yb3VuZF9zZChfX20xMjhkLCBfX20xMjhkLCBpbnQpOw0KX19tMTI4IF9tbV9yb3VuZF9z
cyhfX20xMjgsIF9fbTEyOCwgaW50KTsNCl9fbTEyOCBfbW1fcnNxcnRfcHMoX19tMTI4KTsNCl9f
bTEyOCBfbW1fcnNxcnRfc3MoX19tMTI4KTsNCl9fbTEyOGkgX21tX3NhZF9lcHU4KF9fbTEyOGks
IF9fbTEyOGkpOw0KX19tMTI4aSBfbW1fc2V0MV9lcGkxNihzaG9ydCk7DQpfX20xMjhpIF9tbV9z
ZXQxX2VwaTMyKGludCk7DQoNCl9fbTEyOGkgX21tX3NldDFfZXBpNjR4KF9faW50NjQpOw0KX19t
MTI4aSBfbW1fc2V0MV9lcGk4KGNoYXIpOw0KX19tMTI4ZCBfbW1fc2V0MV9wZChkb3VibGUpOw0K
DQoNCg0KX19tMTI4aSBfbW1fc2V0X2VwaTE2KHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBz
aG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCk7DQpfX20xMjhpIF9tbV9zZXRfZXBpMzIoaW50LCBp
bnQsIGludCwgaW50KTsNCg0KX19tMTI4aSBfbW1fc2V0X2VwaTY0eChfX2ludDY0LCBfX2ludDY0
KTsNCl9fbTEyOGkgX21tX3NldF9lcGk4KGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNo
YXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIs
IGNoYXIpOw0KX19tMTI4ZCBfbW1fc2V0X3BkKGRvdWJsZSwgZG91YmxlKTsNCg0KDQoNCl9fbTEy
OCBfbW1fc2V0X3BzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsNCl9fbTEyOCBfbW1fc2V0
X3BzMShmbG9hdCk7DQpfX20xMjhkIF9tbV9zZXRfc2QoZG91YmxlKTsNCl9fbTEyOCBfbW1fc2V0
X3NzKGZsb2F0KTsNCnZvaWQgX21tX3NldGNzcih1bnNpZ25lZCBpbnQpOw0KX19tMTI4aSBfbW1f
c2V0bF9lcGk2NChfX20xMjhpKTsNCl9fbTEyOGkgX21tX3NldHJfZXBpMTYoc2hvcnQsIHNob3J0
LCBzaG9ydCwgc2hvcnQsIHNob3J0LCBzaG9ydCwgc2hvcnQsIHNob3J0KTsNCl9fbTEyOGkgX21t
X3NldHJfZXBpMzIoaW50LCBpbnQsIGludCwgaW50KTsNCg0KX19tMTI4aSBfbW1fc2V0cl9lcGk2
NHgoX19pbnQ2NCwgX19pbnQ2NCk7DQpfX20xMjhpIF9tbV9zZXRyX2VwaTgoY2hhciwgY2hhciwg
Y2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hhciwgY2hh
ciwgY2hhciwgY2hhciwgY2hhciwgY2hhcik7DQpfX20xMjhkIF9tbV9zZXRyX3BkKGRvdWJsZSwg
ZG91YmxlKTsNCg0KDQoNCl9fbTEyOCBfbW1fc2V0cl9wcyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBm
bG9hdCk7DQpfX20xMjhkIF9tbV9zZXR6ZXJvX3BkKHZvaWQpOw0KX19tMTI4IF9tbV9zZXR6ZXJv
X3BzKHZvaWQpOw0KX19tMTI4aSBfbW1fc2V0emVyb19zaTEyOCh2b2lkKTsNCg0Kdm9pZCBfbW1f
c2ZlbmNlKHZvaWQpOw0KX19tMTI4aSBfbW1fc2h1ZmZsZV9lcGkzMihfX20xMjhpLCBpbnQpOw0K
X19tMTI4aSBfbW1fc2h1ZmZsZV9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4ZCBfbW1f
c2h1ZmZsZV9wZChfX20xMjhkLCBfX20xMjhkLCBpbnQpOw0KDQpfX20xMjggX21tX3NodWZmbGVf
cHMoX19tMTI4LCBfX20xMjgsIHVuc2lnbmVkIGludCk7DQpfX20xMjhpIF9tbV9zaHVmZmxlaGlf
ZXBpMTYoX19tMTI4aSwgaW50KTsNCl9fbTEyOGkgX21tX3NodWZmbGVsb19lcGkxNihfX20xMjhp
LCBpbnQpOw0KX19tMTI4aSBfbW1fc2lnbl9lcGkxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEy
OGkgX21tX3NpZ25fZXBpMzIoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9zaWduX2Vw
aTgoX19tMTI4aSwgX19tMTI4aSk7DQoNCg0KDQpfX20xMjhpIF9tbV9zbGxfZXBpMTYoX19tMTI4
aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9zbGxfZXBpMzIoX19tMTI4aSwgX19tMTI4aSk7DQpf
X20xMjhpIF9tbV9zbGxfZXBpNjQoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9zbGxp
X2VwaTE2KF9fbTEyOGksIGludCk7DQpfX20xMjhpIF9tbV9zbGxpX2VwaTMyKF9fbTEyOGksIGlu
dCk7DQpfX20xMjhpIF9tbV9zbGxpX2VwaTY0KF9fbTEyOGksIGludCk7DQpfX20xMjhpIF9tbV9z
bGxpX3NpMTI4KF9fbTEyOGksIGludCk7DQpfX20xMjhkIF9tbV9zcXJ0X3BkKF9fbTEyOGQpOw0K
X19tMTI4IF9tbV9zcXJ0X3BzKF9fbTEyOCk7DQpfX20xMjhkIF9tbV9zcXJ0X3NkKF9fbTEyOGQs
IF9fbTEyOGQpOw0KX19tMTI4IF9tbV9zcXJ0X3NzKF9fbTEyOCk7DQpfX20xMjhpIF9tbV9zcmFf
ZXBpMTYoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9zcmFfZXBpMzIoX19tMTI4aSwg
X19tMTI4aSk7DQpfX20xMjhpIF9tbV9zcmFpX2VwaTE2KF9fbTEyOGksIGludCk7DQpfX20xMjhp
IF9tbV9zcmFpX2VwaTMyKF9fbTEyOGksIGludCk7DQpfX20xMjhpIF9tbV9zcmxfZXBpMTYoX19t
MTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9zcmxfZXBpMzIoX19tMTI4aSwgX19tMTI4aSk7
DQpfX20xMjhpIF9tbV9zcmxfZXBpNjQoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhpIF9tbV9z
cmxpX2VwaTE2KF9fbTEyOGksIGludCk7DQpfX20xMjhpIF9tbV9zcmxpX2VwaTMyKF9fbTEyOGks
IGludCk7DQpfX20xMjhpIF9tbV9zcmxpX2VwaTY0KF9fbTEyOGksIGludCk7DQpfX20xMjhpIF9t
bV9zcmxpX3NpMTI4KF9fbTEyOGksIGludCk7DQp2b2lkIF9tbV9zdG9yZTFfcGQoZG91YmxlICos
IF9fbTEyOGQpOw0Kdm9pZCBfbW1fc3RvcmVfcGQoZG91YmxlICosIF9fbTEyOGQpOw0Kdm9pZCBf
bW1fc3RvcmVfcHMoZmxvYXQgKiwgX19tMTI4KTsNCnZvaWQgX21tX3N0b3JlX3BzMShmbG9hdCAq
LCBfX20xMjgpOw0Kdm9pZCBfbW1fc3RvcmVfc2QoZG91YmxlICosIF9fbTEyOGQpOw0Kdm9pZCBf
bW1fc3RvcmVfc2kxMjgoX19tMTI4aSAqLCBfX20xMjhpKTsNCnZvaWQgX21tX3N0b3JlX3NzKGZs
b2F0ICosIF9fbTEyOCk7DQp2b2lkIF9tbV9zdG9yZWhfcGQoZG91YmxlICosIF9fbTEyOGQpOw0K
dm9pZCBfbW1fc3RvcmVoX3BpKF9fbTY0ICosIF9fbTEyOCk7DQp2b2lkIF9tbV9zdG9yZWxfZXBp
NjQoX19tMTI4aSAqLCBfX20xMjhpKTsNCnZvaWQgX21tX3N0b3JlbF9wZChkb3VibGUgKiwgX19t
MTI4ZCk7DQp2b2lkIF9tbV9zdG9yZWxfcGkoX19tNjQgKiwgX19tMTI4KTsNCnZvaWQgX21tX3N0
b3Jlcl9wZChkb3VibGUgKiwgX19tMTI4ZCk7DQp2b2lkIF9tbV9zdG9yZXJfcHMoZmxvYXQgKiwg
X19tMTI4KTsNCnZvaWQgX21tX3N0b3JldV9wZChkb3VibGUgKiwgX19tMTI4ZCk7DQp2b2lkIF9t
bV9zdG9yZXVfcHMoZmxvYXQgKiwgX19tMTI4KTsNCnZvaWQgX21tX3N0b3JldV9zaTEyOChfX20x
MjhpICosIF9fbTEyOGkpOw0KDQoNCiNsaW5lIDg0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4uaCINCl9fbTEyOGkgX21tX3N0cmVhbV9s
b2FkX3NpMTI4KGNvbnN0IF9fbTEyOGkgKik7DQojbGluZSA4NTAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50cmluLmgiDQp2b2lkIF9tbV9zdHJl
YW1fcGQoZG91YmxlICosIF9fbTEyOGQpOw0KDQp2b2lkIF9tbV9zdHJlYW1fcHMoZmxvYXQgKiwg
X19tMTI4KTsNCnZvaWQgX21tX3N0cmVhbV9zZChkb3VibGUgKiwgX19tMTI4ZCk7DQp2b2lkIF9t
bV9zdHJlYW1fc2kxMjgoX19tMTI4aSAqLCBfX20xMjhpKTsNCnZvaWQgX21tX3N0cmVhbV9zaTMy
KGludCAqLCBpbnQpOw0Kdm9pZCBfbW1fc3RyZWFtX3NpNjR4KF9faW50NjQgKiwgX19pbnQ2NCk7
DQp2b2lkIF9tbV9zdHJlYW1fc3MoZmxvYXQgKiwgX19tMTI4KTsNCl9fbTEyOGkgX21tX3N1Yl9l
cGkxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX3N1Yl9lcGkzMihfX20xMjhpLCBf
X20xMjhpKTsNCl9fbTEyOGkgX21tX3N1Yl9lcGk2NChfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEy
OGkgX21tX3N1Yl9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4ZCBfbW1fc3ViX3BkKF9f
bTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9tbV9zdWJfcHMoX19tMTI4LCBfX20xMjgpOw0KX19t
MTI4ZCBfbW1fc3ViX3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0KDQpfX20xMjggX21tX3N1Yl9zcyhf
X20xMjgsIF9fbTEyOCk7DQpfX20xMjhpIF9tbV9zdWJzX2VwaTE2KF9fbTEyOGksIF9fbTEyOGkp
Ow0KX19tMTI4aSBfbW1fc3Vic19lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4aSBfbW1f
c3Vic19lcHUxNihfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX3N1YnNfZXB1OChfX20x
MjhpLCBfX20xMjhpKTsNCmludCBfbW1fdGVzdGNfc2kxMjgoX19tMTI4aSwgX19tMTI4aSk7DQpp
bnQgX21tX3Rlc3RuemNfc2kxMjgoX19tMTI4aSwgX19tMTI4aSk7DQppbnQgX21tX3Rlc3R6X3Np
MTI4KF9fbTEyOGksIF9fbTEyOGkpOw0KaW50IF9tbV91Y29taWVxX3NkKF9fbTEyOGQsIF9fbTEy
OGQpOw0KaW50IF9tbV91Y29taWVxX3NzKF9fbTEyOCwgX19tMTI4KTsNCmludCBfbW1fdWNvbWln
ZV9zZChfX20xMjhkLCBfX20xMjhkKTsNCmludCBfbW1fdWNvbWlnZV9zcyhfX20xMjgsIF9fbTEy
OCk7DQppbnQgX21tX3Vjb21pZ3Rfc2QoX19tMTI4ZCwgX19tMTI4ZCk7DQppbnQgX21tX3Vjb21p
Z3Rfc3MoX19tMTI4LCBfX20xMjgpOw0KaW50IF9tbV91Y29taWxlX3NkKF9fbTEyOGQsIF9fbTEy
OGQpOw0KaW50IF9tbV91Y29taWxlX3NzKF9fbTEyOCwgX19tMTI4KTsNCmludCBfbW1fdWNvbWls
dF9zZChfX20xMjhkLCBfX20xMjhkKTsNCmludCBfbW1fdWNvbWlsdF9zcyhfX20xMjgsIF9fbTEy
OCk7DQppbnQgX21tX3Vjb21pbmVxX3NkKF9fbTEyOGQsIF9fbTEyOGQpOw0KaW50IF9tbV91Y29t
aW5lcV9zcyhfX20xMjgsIF9fbTEyOCk7DQpfX20xMjhpIF9tbV91bnBhY2toaV9lcGkxNihfX20x
MjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX3VucGFja2hpX2VwaTMyKF9fbTEyOGksIF9fbTEy
OGkpOw0KX19tMTI4aSBfbW1fdW5wYWNraGlfZXBpNjQoX19tMTI4aSwgX19tMTI4aSk7DQpfX20x
MjhpIF9tbV91bnBhY2toaV9lcGk4KF9fbTEyOGksIF9fbTEyOGkpOw0KX19tMTI4ZCBfbW1fdW5w
YWNraGlfcGQoX19tMTI4ZCwgX19tMTI4ZCk7DQpfX20xMjggX21tX3VucGFja2hpX3BzKF9fbTEy
OCwgX19tMTI4KTsNCl9fbTEyOGkgX21tX3VucGFja2xvX2VwaTE2KF9fbTEyOGksIF9fbTEyOGkp
Ow0KX19tMTI4aSBfbW1fdW5wYWNrbG9fZXBpMzIoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhp
IF9tbV91bnBhY2tsb19lcGk2NChfX20xMjhpLCBfX20xMjhpKTsNCl9fbTEyOGkgX21tX3VucGFj
a2xvX2VwaTgoX19tMTI4aSwgX19tMTI4aSk7DQpfX20xMjhkIF9tbV91bnBhY2tsb19wZChfX20x
MjhkLCBfX20xMjhkKTsNCl9fbTEyOCBfbW1fdW5wYWNrbG9fcHMoX19tMTI4LCBfX20xMjgpOw0K
X19tMTI4ZCBfbW1feG9yX3BkKF9fbTEyOGQsIF9fbTEyOGQpOw0KX19tMTI4IF9tbV94b3JfcHMo
X19tMTI4LCBfX20xMjgpOw0KX19tMTI4aSBfbW1feG9yX3NpMTI4KF9fbTEyOGksIF9fbTEyOGkp
Ow0KX19pbnQ2NCBfbXVsMTI4KF9faW50NjQgX011bHRpcGxpZXIsIF9faW50NjQgX011bHRpcGxp
Y2FuZCwgX19pbnQ2NCAqIF9IaWdoUHJvZHVjdCk7DQp1bnNpZ25lZCBpbnQgX19jZGVjbCBfcm90
bCggIHVuc2lnbmVkIGludCBfVmFsdWUsICAgaW50IF9TaGlmdCk7DQp1bnNpZ25lZCBzaG9ydCBf
X2NkZWNsIF9yb3RsMTYodW5zaWduZWQgc2hvcnQgX1ZhbHVlLCB1bnNpZ25lZCBjaGFyIF9TaGlm
dCk7DQp1bnNpZ25lZCBfX2ludDY0IF9fY2RlY2wgX3JvdGw2NCggIHVuc2lnbmVkIF9faW50NjQg
X1ZhbHVlLCAgIGludCBfU2hpZnQpOw0KdW5zaWduZWQgY2hhciBfX2NkZWNsIF9yb3RsOCh1bnNp
Z25lZCBjaGFyIF9WYWx1ZSwgdW5zaWduZWQgY2hhciBfU2hpZnQpOw0KdW5zaWduZWQgaW50IF9f
Y2RlY2wgX3JvdHIoICB1bnNpZ25lZCBpbnQgX1ZhbHVlLCAgIGludCBfU2hpZnQpOw0KdW5zaWdu
ZWQgc2hvcnQgX19jZGVjbCBfcm90cjE2KHVuc2lnbmVkIHNob3J0IF9WYWx1ZSwgdW5zaWduZWQg
Y2hhciBfU2hpZnQpOw0KdW5zaWduZWQgX19pbnQ2NCBfX2NkZWNsIF9yb3RyNjQoICB1bnNpZ25l
ZCBfX2ludDY0IF9WYWx1ZSwgICBpbnQgX1NoaWZ0KTsNCnVuc2lnbmVkIGNoYXIgX19jZGVjbCBf
cm90cjgodW5zaWduZWQgY2hhciBfVmFsdWUsIHVuc2lnbmVkIGNoYXIgX1NoaWZ0KTsNCmludCBf
X2NkZWNsIF9zZXRqbXAoam1wX2J1Zik7DQppbnQgX19jZGVjbCBfc2V0am1wZXgoam1wX2J1Zik7
DQp2b2lkIF9yc20odm9pZCk7DQp2b2lkIF9sZ2R0KHZvaWQgKik7DQp2b2lkIF9zZ2R0KHZvaWQg
Kik7DQp2b2lkIF9jbGFjKHZvaWQpOw0Kdm9pZCBfc3RhYyh2b2lkKTsNCnVuc2lnbmVkIGNoYXIg
X19jZGVjbCBfYWRkY2FycnlfdTgodW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhciwgdW5zaWdu
ZWQgY2hhciwgdW5zaWduZWQgY2hhciAqKTsNCnVuc2lnbmVkIGNoYXIgX19jZGVjbCBfc3ViYm9y
cm93X3U4KHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGNoYXIsIHVuc2ln
bmVkIGNoYXIgKik7DQp1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX2FkZGNhcnJ5X3UxNih1bnNpZ25l
ZCBjaGFyLCB1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNob3J0ICop
Ow0KdW5zaWduZWQgY2hhciBfX2NkZWNsIF9zdWJib3Jyb3dfdTE2KHVuc2lnbmVkIGNoYXIsIHVu
c2lnbmVkIHNob3J0LCB1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQgKik7DQp1bnNpZ25l
ZCBjaGFyIF9fY2RlY2wgX2FkZGNhcnJ5X3UzMih1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQs
IHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50ICopOw0KdW5zaWduZWQgY2hhciBfX2NkZWNsIF9z
dWJib3Jyb3dfdTMyKHVuc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCB1
bnNpZ25lZCBpbnQgKik7DQp1bnNpZ25lZCBjaGFyIF9fY2RlY2wgX2FkZGNhcnJ5X3U2NCh1bnNp
Z25lZCBjaGFyLCB1bnNpZ25lZCBfX2ludDY0LCB1bnNpZ25lZCBfX2ludDY0LCB1bnNpZ25lZCBf
X2ludDY0ICopOw0KdW5zaWduZWQgY2hhciBfX2NkZWNsIF9zdWJib3Jyb3dfdTY0KHVuc2lnbmVk
IGNoYXIsIHVuc2lnbmVkIF9faW50NjQsIHVuc2lnbmVkIF9faW50NjQsIHVuc2lnbmVkIF9faW50
NjQgKik7DQp2b2lkIF9tbV9tb25pdG9yeCh2b2lkIGNvbnN0ICosIHVuc2lnbmVkIGludCwgdW5z
aWduZWQgaW50KTsNCnZvaWQgX21tX213YWl0eCh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwg
dW5zaWduZWQgaW50KTsNCnVuc2lnbmVkIGludCBfX3JtcHVwZGF0ZSh1bnNpZ25lZCBfX2ludDY0
LCBybXBfc2VnICosIGludCk7DQp1bnNpZ25lZCBpbnQgX19wc21hc2godW5zaWduZWQgX19pbnQ2
NCk7DQp1bnNpZ25lZCBpbnQgX19ybXBhZGp1c3QodW5zaWduZWQgX19pbnQ2NCwgaW50LCBpbnQp
Ow0KI3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOjQzOTIpIA0KdW5zaWduZWQgaW50IF9fcHZhbGlk
YXRlKHVuc2lnbmVkIF9faW50NjQsIGludCwgaW50LCBpbnQqKTsNCnZvaWQgX19zdm1faW52bHBn
Yih2b2lkKiwgaW50KTsNCnZvaWQgX19zdm1fdGxic3luYyh2b2lkKTsNCg0KDQp9DQojbGluZSA5
MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaW50
cmluLmgiDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDk0MCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpbnRyaW4uaCINCiNsaW5lIDY5ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9B
c3NlcnRpb25zLmgiDQojbGluZSA3MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KI2xpbmUgNzEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlv
bnMuaCINCg0KDQoNCg0KDQojbGluZSA3NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KI2xpbmUgODEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L0Fzc2VydGlvbnMuaCINCg0KDQoNCiNsaW5lIDg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQojbGlu
ZSA4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KI2xpbmUgOTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCg0KDQoN
CiNsaW5lIDk3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQojbGluZSAxMDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCIN
Cg0KDQoNCiNsaW5lIDEwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KI2xpbmUgMTA5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRp
b25zLmgiDQoNCiNsaW5lIDExMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQojbGluZSAxMTYgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fz
c2VydGlvbnMuaCINCg0KDQoNCg0KI2xpbmUgMTIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCiNsaW5lIDEy
MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMTMwICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoN
Cg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMTM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCmVudW0gY2xhc3Mg
V1RGTG9nQ2hhbm5lbFN0YXRlIDogdWludDhfdCB7IE9mZiwgT24sIE9uV2l0aEFjY3VtdWxhdGlv
biB9Ow0KDQplbnVtIGNsYXNzIFdURkxvZ0xldmVsIDogdWludDhfdCB7IEFsd2F5cywgRXJyb3Is
IFdhcm5pbmcsIEluZm8sIERlYnVnIH07DQoNCg0KDQojbGluZSAxNTkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCIN
Cg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIFdURkxvZ0NoYW5uZWxTdGF0ZSBzdGF0ZTsNCiAgICBj
b25zdCBjaGFyKiBuYW1lOw0KICAgIFdURkxvZ0xldmVsIGxldmVsOw0KDQoNCiNsaW5lIDE2NyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
QXNzZXJ0aW9ucy5oIg0KDQoNCiNsaW5lIDE3MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KfSBXVEZMb2dDaGFu
bmVsOw0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQojbGluZSAx
ODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL0Fzc2VydGlvbnMuaCINCg0KI2xpbmUgMTg0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTkzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQojbGluZSAxOTcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlv
bnMuaCINCg0KDQoNCiNsaW5lIDIwMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KI2xpbmUgMjAyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRp
b25zLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURlJlcG9ydE5vdEltcGxlbWVu
dGVkWWV0KGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbik7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hh
ciogYXNzZXJ0aW9uKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURlJlcG9ydEFzc2Vy
dGlvbkZhaWx1cmVXaXRoTWVzc2FnZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbiwgY29uc3QgY2hhciogZm9ybWF0
LCAuLi4pIDsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURlJlcG9ydEFyZ3VtZW50QXNz
ZXJ0aW9uRmFpbHVyZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVu
Y3Rpb24sIGNvbnN0IGNoYXIqIGFyZ05hbWUsIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdm9pZCBXVEZSZXBvcnRGYXRhbEVycm9yKGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9ybWF0LCAu
Li4pIDsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURlJlcG9ydEVycm9yKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pIDsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURkxvZyhXVEZMb2dDaGFu
bmVsKiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIDsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2
b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIDsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURkxvZ0Fsd2F5c1YoY29uc3QgY2hhciogZm9ybWF0
LCB2YV9saXN0KSA7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBXVEZMb2dBbHdheXMoY29u
c3QgY2hhciogZm9ybWF0LCAuLi4pIDsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVj
KG5vcmV0dXJuKSB2b2lkIFdURkxvZ0Fsd2F5c0FuZENyYXNoKGNvbnN0IGNoYXIqIGZvcm1hdCwg
Li4uKSA7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgV1RGTG9nQ2hhbm5lbCogV1RGTG9nQ2hhbm5l
bEJ5TmFtZShXVEZMb2dDaGFubmVsKltdLCBzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURkluaXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJv
bVN0cmluZyhXVEZMb2dDaGFubmVsKltdLCBzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIFdURkxvZ1dpdGhMZXZlbChXVEZMb2dDaGFubmVsKiwg
V1RGTG9nTGV2ZWwsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSA7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdm9pZCBXVEZTZXRMb2dDaGFubmVsTGV2ZWwoV1RGTG9nQ2hhbm5lbCosIFdURkxvZ0xl
dmVsKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIFdURldpbGxMb2dXaXRoTGV2ZWwoV1RG
TG9nQ2hhbm5lbCosIFdURkxvZ0xldmVsKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQg
V1RGR2V0QmFja3RyYWNlKHZvaWQqKiBzdGFjaywgaW50KiBzaXplKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkIFdURlJlcG9ydEJhY2t0cmFjZSh2b2lkKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSB2b2lkIFdURlByaW50QmFja3RyYWNlKHZvaWQqKiBzdGFjaywgaW50IHNpemUpOw0KDQoN
CiNsaW5lIDIyNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBX
VEZJc0RlYnVnZ2VyQXR0YWNoZWQodm9pZCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDI0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCiNsaW5lIDI0OCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjY0ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgi
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI3MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCiNsaW5lIDI3NSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
QXNzZXJ0aW9ucy5oIg0KDQojbGluZSAyNzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgV1RGQ3Jhc2godm9pZCk7DQoNCg0K
DQojbGluZSAyODMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9fZGVj
bHNwZWMobm9yZXR1cm4pIHZvaWQgV1RGQ3Jhc2hXaXRoU2VjdXJpdHlJbXBsaWNhdGlvbih2b2lk
KTsNCg0KDQp9DQojbGluZSAyODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMzA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDMxNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMzM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KI2xpbmUgMzQyICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3Nl
cnRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDQxNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCmNvbnN0ZXhwciBib29sIGFz
c2VydGlvbkZhaWx1cmVEdWVUb1VucmVhY2hhYmxlQ29kZSA9IGZhbHNlOw0KDQojbGluZSA0MjEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L0Fzc2VydGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQzNCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0
aW9ucy5oIg0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAg
ICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ1MiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5o
Ig0KDQoNCg0KDQoNCg0KI2xpbmUgNDU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCiNsaW5lIDQ2MSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNz
ZXJ0aW9ucy5oIg0KI2xpbmUgNDYyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDQ3MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA0ODEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2Vy
dGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDg5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDQ5NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MDUg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L0Fzc2VydGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDUyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA1NDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL0Fzc2VydGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDU2NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU3NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgIHZvaWQgV1RGQ3Jh
c2hXaXRoSW5mb0ltcGwoaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uLCBpbnQgY291bnRlciwgdWludDY0X3QgcmVhc29uLCB1aW50NjRfdCBtaXNjMSwgdWlu
dDY0X3QgbWlzYzIsIHVpbnQ2NF90IG1pc2MzLCB1aW50NjRfdCBtaXNjNCwgdWludDY0X3QgbWlz
YzUsIHVpbnQ2NF90IG1pc2M2KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVjKG5v
cmV0dXJuKSAgdm9pZCBXVEZDcmFzaFdpdGhJbmZvSW1wbChpbnQgbGluZSwgY29uc3QgY2hhciog
ZmlsZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGludCBjb3VudGVyLCB1aW50NjRfdCByZWFzb24s
IHVpbnQ2NF90IG1pc2MxLCB1aW50NjRfdCBtaXNjMiwgdWludDY0X3QgbWlzYzMsIHVpbnQ2NF90
IG1pc2M0LCB1aW50NjRfdCBtaXNjNSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3Bl
Yyhub3JldHVybikgIHZvaWQgV1RGQ3Jhc2hXaXRoSW5mb0ltcGwoaW50IGxpbmUsIGNvbnN0IGNo
YXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlciwgdWludDY0X3QgcmVh
c29uLCB1aW50NjRfdCBtaXNjMSwgdWludDY0X3QgbWlzYzIsIHVpbnQ2NF90IG1pc2MzLCB1aW50
NjRfdCBtaXNjNCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikg
IHZvaWQgV1RGQ3Jhc2hXaXRoSW5mb0ltcGwoaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZpbGUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlciwgdWludDY0X3QgcmVhc29uLCB1aW50NjRf
dCBtaXNjMSwgdWludDY0X3QgbWlzYzIsIHVpbnQ2NF90IG1pc2MzKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBfX2RlY2xzcGVjKG5vcmV0dXJuKSAgdm9pZCBXVEZDcmFzaFdpdGhJbmZvSW1wbChp
bnQgbGluZSwgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGludCBjb3Vu
dGVyLCB1aW50NjRfdCByZWFzb24sIHVpbnQ2NF90IG1pc2MxLCB1aW50NjRfdCBtaXNjMik7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgIHZvaWQgV1RGQ3Jhc2hX
aXRoSW5mb0ltcGwoaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uLCBpbnQgY291bnRlciwgdWludDY0X3QgcmVhc29uLCB1aW50NjRfdCBtaXNjMSk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgIHZvaWQgV1RGQ3Jhc2hXaXRo
SW5mb0ltcGwoaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
LCBpbnQgY291bnRlciwgdWludDY0X3QgcmVhc29uKTsNCl9fZGVjbHNwZWMobm9yZXR1cm4pICB2
b2lkIFdURkNyYXNoV2l0aEluZm8oaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlcik7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpfX2Zv
cmNlaW5saW5lIHVpbnQ2NF90IHd0ZkNyYXNoQXJnKFQqIGFyZykgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGFyZyk7IH0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCl9fZm9y
Y2VpbmxpbmUgdWludDY0X3Qgd3RmQ3Jhc2hBcmcoVCBhcmcpIHsgcmV0dXJuIGFyZzsgfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KX19kZWNsc3BlYyhub3JldHVybikgX19mb3JjZWlubGluZSB2
b2lkIFdURkNyYXNoV2l0aEluZm8oaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlciwgVCByZWFzb24pDQp7DQogICAgV1RGQ3Jhc2hXaXRo
SW5mb0ltcGwobGluZSwgZmlsZSwgZnVuY3Rpb24sIGNvdW50ZXIsIHd0ZkNyYXNoQXJnKHJlYXNv
bikpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KX19kZWNsc3BlYyhu
b3JldHVybikgX19mb3JjZWlubGluZSB2b2lkIFdURkNyYXNoV2l0aEluZm8oaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlciwgVCByZWFz
b24sIFUgbWlzYzEpDQp7DQogICAgV1RGQ3Jhc2hXaXRoSW5mb0ltcGwobGluZSwgZmlsZSwgZnVu
Y3Rpb24sIGNvdW50ZXIsIHd0ZkNyYXNoQXJnKHJlYXNvbiksIHd0ZkNyYXNoQXJnKG1pc2MxKSk7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+DQpfX2Rl
Y2xzcGVjKG5vcmV0dXJuKSBfX2ZvcmNlaW5saW5lIHZvaWQgV1RGQ3Jhc2hXaXRoSW5mbyhpbnQg
bGluZSwgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGludCBjb3VudGVy
LCBUIHJlYXNvbiwgVSBtaXNjMSwgViBtaXNjMikNCnsNCiAgICBXVEZDcmFzaFdpdGhJbmZvSW1w
bChsaW5lLCBmaWxlLCBmdW5jdGlvbiwgY291bnRlciwgd3RmQ3Jhc2hBcmcocmVhc29uKSwgd3Rm
Q3Jhc2hBcmcobWlzYzEpLCB3dGZDcmFzaEFyZyhtaXNjMikpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPg0KX19kZWNsc3BlYyhu
b3JldHVybikgX19mb3JjZWlubGluZSB2b2lkIFdURkNyYXNoV2l0aEluZm8oaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlciwgVCByZWFz
b24sIFUgbWlzYzEsIFYgbWlzYzIsIFcgbWlzYzMpDQp7DQogICAgV1RGQ3Jhc2hXaXRoSW5mb0lt
cGwobGluZSwgZmlsZSwgZnVuY3Rpb24sIGNvdW50ZXIsIHd0ZkNyYXNoQXJnKHJlYXNvbiksIHd0
ZkNyYXNoQXJnKG1pc2MxKSwgd3RmQ3Jhc2hBcmcobWlzYzIpLCB3dGZDcmFzaEFyZyhtaXNjMykp
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBYPg0KX19kZWNsc3BlYyhub3JldHVybikgX19mb3JjZWlubGluZSB2
b2lkIFdURkNyYXNoV2l0aEluZm8oaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlciwgVCByZWFzb24sIFUgbWlzYzEsIFYgbWlzYzIsIFcg
bWlzYzMsIFggbWlzYzQpDQp7DQogICAgV1RGQ3Jhc2hXaXRoSW5mb0ltcGwobGluZSwgZmlsZSwg
ZnVuY3Rpb24sIGNvdW50ZXIsIHd0ZkNyYXNoQXJnKHJlYXNvbiksIHd0ZkNyYXNoQXJnKG1pc2Mx
KSwgd3RmQ3Jhc2hBcmcobWlzYzIpLCB3dGZDcmFzaEFyZyhtaXNjMyksIHd0ZkNyYXNoQXJnKG1p
c2M0KSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+DQpfX2RlY2xzcGVjKG5vcmV0dXJu
KSBfX2ZvcmNlaW5saW5lIHZvaWQgV1RGQ3Jhc2hXaXRoSW5mbyhpbnQgbGluZSwgY29uc3QgY2hh
ciogZmlsZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGludCBjb3VudGVyLCBUIHJlYXNvbiwgVSBt
aXNjMSwgViBtaXNjMiwgVyBtaXNjMywgWCBtaXNjNCwgWSBtaXNjNSkNCnsNCiAgICBXVEZDcmFz
aFdpdGhJbmZvSW1wbChsaW5lLCBmaWxlLCBmdW5jdGlvbiwgY291bnRlciwgd3RmQ3Jhc2hBcmco
cmVhc29uKSwgd3RmQ3Jhc2hBcmcobWlzYzEpLCB3dGZDcmFzaEFyZyhtaXNjMiksIHd0ZkNyYXNo
QXJnKG1pc2MzKSwgd3RmQ3Jhc2hBcmcobWlzYzQpLCB3dGZDcmFzaEFyZyhtaXNjNSkpOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPg0KX19kZWNsc3BlYyhub3JldHVy
bikgX19mb3JjZWlubGluZSB2b2lkIFdURkNyYXNoV2l0aEluZm8oaW50IGxpbmUsIGNvbnN0IGNo
YXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBpbnQgY291bnRlciwgVCByZWFzb24sIFUg
bWlzYzEsIFYgbWlzYzIsIFcgbWlzYzMsIFggbWlzYzQsIFkgbWlzYzUsIFogbWlzYzYpDQp7DQog
ICAgV1RGQ3Jhc2hXaXRoSW5mb0ltcGwobGluZSwgZmlsZSwgZnVuY3Rpb24sIGNvdW50ZXIsIHd0
ZkNyYXNoQXJnKHJlYXNvbiksIHd0ZkNyYXNoQXJnKG1pc2MxKSwgd3RmQ3Jhc2hBcmcobWlzYzIp
LCB3dGZDcmFzaEFyZyhtaXNjMyksIHd0ZkNyYXNoQXJnKG1pc2M0KSwgd3RmQ3Jhc2hBcmcobWlz
YzUpLCB3dGZDcmFzaEFyZyhtaXNjNikpOw0KfQ0KDQppbmxpbmUgdm9pZCBXVEZDcmFzaFdpdGhJ
bmZvKGludCwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBpbnQpDQoNCg0KI2xpbmUgNjcwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9B
c3NlcnRpb25zLmgiDQp7DQogICAgV1RGQ3Jhc2goKTsNCn0NCg0KbmFtZXNwYWNlIFdURiB7DQpp
bmxpbmUgdm9pZCBpc0ludGVncmFsT3JQb2ludGVyVHlwZSgpIHsgfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZS4uLiBUeXBlcz4NCnZvaWQgaXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUo
VCwgVHlwZXMuLi4gdHlwZXMpDQp7DQogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFs
PFQ+Ojp2YWx1ZSB8fCBzdGQ6OmlzX2VudW08VD46OnZhbHVlIHx8IHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWUsICJBbGwgdHlwZXMgbmVlZCB0byBiZSBiaXR3aXNlX2Nhc3QtYWJsZSB0byBpbnRl
Z3JhbCB0eXBlIGZvciBsb2dnaW5nIik7DQogICAgaXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUodHlw
ZXMuLi4pOw0KfQ0KfQ0KDQppbmxpbmUgdm9pZCBjb21waWxlckZlbmNlRm9yQ3Jhc2goKQ0Kew0K
DQogICAgX1JlYWRXcml0ZUJhcnJpZXIoKTsNCg0KDQojbGluZSA2OTIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCIN
Cn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA3MjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCiNsaW5lIDcyNCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNzZXJ0aW9ucy5oIg0K
DQoNCg0KI2xpbmUgNzI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9Bc3NlcnRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDczNiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
QXNzZXJ0aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc1MSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXNz
ZXJ0aW9ucy5oIg0KDQojbGluZSA3NTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Fzc2VydGlvbnMuaCINCiNsaW5lIDMzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdGRMaWJF
eHRyYXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL0NoZWNrZWRBcml0aG1ldGljLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCmVudW0gY2xhc3MgQ2hlY2tlZFN0YXRlIHsN
CiAgICBEaWRPdmVyZmxvdywNCiAgICBEaWROb3RPdmVyZmxvdw0KfTsNCg0KY2xhc3MgQXNzZXJ0
Tm9PdmVyZmxvdyB7DQpwdWJsaWM6DQogICAgc3RhdGljICB2b2lkIG92ZXJmbG93ZWQoKQ0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIHZvaWQgY2xlYXJPdmVyZmxvdygp
IHsgfQ0KDQogICAgc3RhdGljIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgY3Jhc2goKQ0KICAg
IHsNCiAgICAgICAgV1RGQ3Jhc2goKTsNCiAgICB9DQoNCnB1YmxpYzoNCiAgICBjb25zdGV4cHIg
Ym9vbCBoYXNPdmVyZmxvd2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0NCn07DQoNCmNsYXNz
IENvbmRpdGlvbmFsQ3Jhc2hPbk92ZXJmbG93IHsNCnB1YmxpYzoNCiAgICB2b2lkIG92ZXJmbG93
ZWQoKQ0KICAgIHsNCiAgICAgICAgbV9vdmVyZmxvd2VkID0gdHJ1ZTsNCiAgICAgICAgaWYgKG1f
c2hvdWxkQ3Jhc2hPbk92ZXJmbG93KQ0KICAgICAgICAgICAgY3Jhc2goKTsNCiAgICB9DQoNCiAg
ICBib29sIHNob3VsZENyYXNoT25PdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ3Jh
c2hPbk92ZXJmbG93OyB9DQogICAgdm9pZCBzZXRTaG91bGRDcmFzaE9uT3ZlcmZsb3coYm9vbCB2
YWx1ZSkgeyBtX3Nob3VsZENyYXNoT25PdmVyZmxvdyA9IHZhbHVlOyB9DQoNCiAgICBib29sIGhh
c092ZXJmbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ZWQ7IH0NCiAgICB2b2lkIGNs
ZWFyT3ZlcmZsb3coKSB7IG1fb3ZlcmZsb3dlZCA9IGZhbHNlOyB9DQoNCiAgICBzdGF0aWMgX19k
ZWNsc3BlYyhub3JldHVybikgdm9pZCBjcmFzaCgpDQogICAgew0KICAgICAgICBXVEZDcmFzaCgp
Ow0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBib29sIG1fb3ZlcmZsb3dlZCB7IGZhbHNlIH07DQog
ICAgYm9vbCBtX3Nob3VsZENyYXNoT25PdmVyZmxvdyB7IHRydWUgfTsNCn07DQoNCmNsYXNzIENy
YXNoT25PdmVyZmxvdyB7DQpwdWJsaWM6DQogICAgc3RhdGljIF9fZGVjbHNwZWMobm9yZXR1cm4p
IHZvaWQgb3ZlcmZsb3dlZCgpDQogICAgew0KICAgICAgICBjcmFzaCgpOw0KICAgIH0NCg0KICAg
IHZvaWQgY2xlYXJPdmVyZmxvdygpIHsgfQ0KDQogICAgc3RhdGljIF9fZGVjbHNwZWMobm9yZXR1
cm4pIHZvaWQgY3Jhc2goKQ0KICAgIHsNCiAgICAgICAgV1RGQ3Jhc2goKTsNCiAgICB9DQoNCnB1
YmxpYzoNCiAgICBib29sIGhhc092ZXJmbG93ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQ0K
fTsNCg0KY2xhc3MgUmVjb3JkT3ZlcmZsb3cgew0KcHJvdGVjdGVkOg0KICAgIFJlY29yZE92ZXJm
bG93KCkNCiAgICAgICAgOiBtX292ZXJmbG93ZWQoZmFsc2UpDQogICAgew0KICAgIH0NCg0KICAg
IHZvaWQgY2xlYXJPdmVyZmxvdygpDQogICAgew0KICAgICAgICBtX292ZXJmbG93ZWQgPSBmYWxz
ZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgX19kZWNsc3BlYyhub3JldHVybikgdm9pZCBjcmFzaCgp
DQogICAgew0KICAgICAgICBXVEZDcmFzaCgpOw0KICAgIH0NCg0KcHVibGljOg0KICAgIGJvb2wg
aGFzT3ZlcmZsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3dlZDsgfQ0KICAgIHZvaWQg
b3ZlcmZsb3dlZCgpIHsgbV9vdmVyZmxvd2VkID0gdHJ1ZTsgfQ0KDQpwcml2YXRlOg0KICAgIHVu
c2lnbmVkIGNoYXIgbV9vdmVyZmxvd2VkOw0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGNs
YXNzIE92ZXJmbG93SGFuZGxlciA9IENyYXNoT25PdmVyZmxvdz4gY2xhc3MgQ2hlY2tlZDsNCnRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDsNCnRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQ+PjsNCg0KdGVtcGxhdGUgPHR5
cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCBib29sIGlzVGFyZ2V0QmlnZ2VyID0gc2l6
ZW9mKFRhcmdldCkgPj0gc2l6ZW9mKFNvdXJjZSksIGJvb2wgdGFyZ2V0U2lnbmVkID0gc3RkOjpu
dW1lcmljX2xpbWl0czxUYXJnZXQ+Ojppc19zaWduZWQsIGJvb2wgc291cmNlU2lnbmVkID0gc3Rk
OjpudW1lcmljX2xpbWl0czxTb3VyY2U+Ojppc19zaWduZWQ+IHN0cnVjdCBCb3VuZHNDaGVja2Vy
Ow0KdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91
bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZT4gew0KICAgIHN0
YXRpYyBib29sIGluQm91bmRzKFNvdXJjZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIA0KICAgICAg
ICByZXR1cm4gdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsNCiAg
ICB9DQp9Ow0KdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1
Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgZmFsc2UsIHRydWUsIHRydWU+IHsNCiAg
ICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpDQogICAgew0KICAgICAgICANCiAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0Pjo6bWluKCkgPD0gdmFsdWUg
JiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsNCiAgICB9DQp9
Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBC
b3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgZmFsc2UsIHRydWU+IHsNCiAgICBz
dGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpDQogICAgew0KICAgICAgICANCiAgICAg
ICAgDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6Om1ha2VfdW5zaWduZWRfdDxTb3Vy
Y2U+Pih2YWx1ZSkgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKTsNCiAgICB9
DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVj
dCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2U+IHsNCiAg
ICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpDQogICAgew0KICAgICAgICANCiAg
ICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZT4oc3RkOjpudW1lcmljX2xp
bWl0czxUYXJnZXQ+OjptYXgoKSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFRh
cmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJj
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlPiB7DQogICAgc3RhdGljIGJvb2wgaW5Cb3VuZHMoU291cmNl
KQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCn07DQoNCnRl
bXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gc3RydWN0IEJvdW5kc0No
ZWNrZXI8VGFyZ2V0LCBTb3VyY2UsIHRydWUsIHRydWUsIHRydWU+IHsNCiAgICBzdGF0aWMgYm9v
bCBpbkJvdW5kcyhTb3VyY2UpDQogICAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHRydWU7
DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNl
PiBzdHJ1Y3QgQm91bmRzQ2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2U+
IHsNCiAgICBzdGF0aWMgYm9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpDQogICAgew0KICAgICAg
ICANCiAgICAgICAgaWYgKHNpemVvZihUYXJnZXQpID4gc2l6ZW9mKFNvdXJjZSkpDQogICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgcmV0dXJuIHZhbHVlIDw9IHN0YXRpY19jYXN0PFNv
dXJjZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+OjptYXgoKSk7DQogICAgfQ0KfTsNCg0K
dGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBzdHJ1Y3QgQm91bmRz
Q2hlY2tlcjxUYXJnZXQsIFNvdXJjZSwgdHJ1ZSwgZmFsc2UsIHRydWU+IHsNCiAgICBzdGF0aWMg
Ym9vbCBpbkJvdW5kcyhTb3VyY2UgdmFsdWUpDQogICAgew0KICAgICAgICANCiAgICAgICAgcmV0
dXJuIHZhbHVlID49IDA7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwg
dHlwZW5hbWUgU291cmNlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbkJvdW5kcyhTb3VyY2UgdmFs
dWUpDQp7DQogICAgcmV0dXJuIEJvdW5kc0NoZWNrZXI8VGFyZ2V0LCBTb3VyY2U+OjppbkJvdW5k
cyh2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJj
ZT4gc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRTYWZlbHkoU291cmNlIGlucHV0LCBUYXJnZXQm
IG91dHB1dCkNCnsNCiAgICBpZiAoIWlzSW5Cb3VuZHM8VGFyZ2V0PihpbnB1dCkpDQogICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICBvdXRwdXQgPSBzdGF0aWNfY2FzdDxUYXJnZXQ+KGlucHV0KTsN
CiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1v
dmVDaGVja2VkIHsNCiAgICB0eXBlZGVmIFQgQ2xlYW5UeXBlOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgQ2xlYW5UeXBlIERlZmF1bHRWYWx1ZSA9IDA7DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxULCBDb25kaXRpb25hbENyYXNoT25PdmVy
Zmxvdz4+IHsNCiAgICB1c2luZyBDbGVhblR5cGUgPSB0eXBlbmFtZSBSZW1vdmVDaGVja2VkPFQ+
OjpDbGVhblR5cGU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBDbGVhblR5cGUgRGVmYXVsdFZhbHVl
ID0gMDsNCn07DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxD
aGVja2VkPFQsIENyYXNoT25PdmVyZmxvdz4+IHsNCiAgICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92
ZUNoZWNrZWQ8VD46OkNsZWFuVHlwZSBDbGVhblR5cGU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBD
bGVhblR5cGUgRGVmYXVsdFZhbHVlID0gMDsNCn07DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93Pj4gew0KICAgIHR5
cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ2hlY2tlZDxUPjo6Q2xlYW5UeXBlIENsZWFuVHlwZTsNCiAg
ICBzdGF0aWMgY29uc3RleHByIENsZWFuVHlwZSBEZWZhdWx0VmFsdWUgPSAwOw0KfTsNCg0KDQoN
CnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCBib29sIHVJc0JpZ2dlciA9IChzaXpl
b2YoVSkgPiBzaXplb2YoVikpLCBib29sIHNhbWVTaXplID0gKHNpemVvZihVKSA9PSBzaXplb2Yo
VikpPiBzdHJ1Y3QgUmVzdWx0QmFzZTsNCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PiBzdHJ1Y3QgUmVzdWx0QmFzZTxVLCBWLCB0cnVlLCBmYWxzZT4gew0KICAgIHR5cGVkZWYgVSBS
ZXN1bHRUeXBlOw0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVj
dCBSZXN1bHRCYXNlPFUsIFYsIGZhbHNlLCBmYWxzZT4gew0KICAgIHR5cGVkZWYgViBSZXN1bHRU
eXBlOw0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0cnVjdCBSZXN1bHRCYXNlPFUsIFUs
IGZhbHNlLCB0cnVlPiB7DQogICAgdHlwZWRlZiBVIFJlc3VsdFR5cGU7DQp9Ow0KDQp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgYm9vbCB1SXNTaWduZWQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFU+Ojppc19zaWduZWQsIGJvb2wgdklzU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0
czxWPjo6aXNfc2lnbmVkPiBzdHJ1Y3QgU2lnbmVkbmVzc1NlbGVjdG9yOw0KdGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBTaWduZWRuZXNzU2VsZWN0b3I8VSwgViwgdHJ1
ZSwgdHJ1ZT4gew0KICAgIHR5cGVkZWYgVSBSZXN1bHRUeXBlOw0KfTsNCg0KdGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBTaWduZWRuZXNzU2VsZWN0b3I8VSwgViwgZmFs
c2UsIGZhbHNlPiB7DQogICAgdHlwZWRlZiBVIFJlc3VsdFR5cGU7DQp9Ow0KDQp0ZW1wbGF0ZSA8
dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RydWN0IFNpZ25lZG5lc3NTZWxlY3RvcjxVLCBWLCB0
cnVlLCBmYWxzZT4gew0KICAgIHR5cGVkZWYgViBSZXN1bHRUeXBlOw0KfTsNCg0KdGVtcGxhdGUg
PHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IHN0cnVjdCBTaWduZWRuZXNzU2VsZWN0b3I8VSwgViwg
ZmFsc2UsIHRydWU+IHsNCiAgICB0eXBlZGVmIFUgUmVzdWx0VHlwZTsNCn07DQoNCnRlbXBsYXRl
IDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgUmVzdWx0QmFzZTxVLCBWLCBmYWxzZSwg
dHJ1ZT4gew0KICAgIHR5cGVkZWYgdHlwZW5hbWUgU2lnbmVkbmVzc1NlbGVjdG9yPFUsIFY+OjpS
ZXN1bHRUeXBlIFJlc3VsdFR5cGU7DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4gc3RydWN0IFJlc3VsdCA6IFJlc3VsdEJhc2U8dHlwZW5hbWUgUmVtb3ZlQ2hlY2tlZDxV
Pjo6Q2xlYW5UeXBlLCB0eXBlbmFtZSBSZW1vdmVDaGVja2VkPFY+OjpDbGVhblR5cGU+IHsNCn07
DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0
VHlwZSA9IHR5cGVuYW1lIFJlc3VsdDxMSFMsIFJIUz46OlJlc3VsdFR5cGUsIA0KICAgIGJvb2wg
bGhzU2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxMSFM+Ojppc19zaWduZWQsIGJvb2wgcmhz
U2lnbmVkID0gc3RkOjpudW1lcmljX2xpbWl0czxSSFM+Ojppc19zaWduZWQ+IHN0cnVjdCBBcml0
aG1ldGljT3BlcmF0aW9uczsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIExIUywgdHlwZW5hbWUgUkhT
LCB0eXBlbmFtZSBSZXN1bHRUeXBlPiBzdHJ1Y3QgQXJpdGhtZXRpY09wZXJhdGlvbnM8TEhTLCBS
SFMsIFJlc3VsdFR5cGUsIHRydWUsIHRydWU+IHsNCiAgICANCg0KICAgIA0KICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBzaWduc01hdGNoKExIUyBsaHMsIFJIUyByaHMpDQogICAgew0KICAgICAgICBy
ZXR1cm4gKGxocyBeIHJocykgPj0gMDsNCiAgICB9DQoNCiAgICBzdGF0aWMgaW5saW5lIGJvb2wg
YWRkKExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgDQogICAgew0KDQoNCg0K
DQoNCg0KI2xpbmUgMzIzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIg0KICAgICAgICBpZiAoc2lnbnNN
YXRjaChsaHMsIHJocykpIHsNCiAgICAgICAgICAgIGlmIChsaHMgPj0gMCkgew0KICAgICAgICAg
ICAgICAgIGlmICgoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLSByaHMp
IDwgbGhzKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgICAgIFJlc3VsdFR5cGUgdGVtcCA9IGxocyAtIHN0ZDo6bnVt
ZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpOw0KICAgICAgICAgICAgICAgIGlmIChyaHMg
PCAtdGVtcCkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAg
fQ0KICAgICAgICB9IA0KICAgICAgICByZXN1bHQgPSBsaHMgKyByaHM7DQogICAgICAgIHJldHVy
biB0cnVlOw0KI2xpbmUgMzM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIg0KICAgIH0NCg0KICAgIHN0
YXRpYyBpbmxpbmUgYm9vbCBzdWIoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0
KSANCiAgICB7DQoNCg0KDQoNCg0KDQojbGluZSAzNDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NoZWNrZWRBcml0aG1ldGljLmgiDQog
ICAgICAgIGlmICghc2lnbnNNYXRjaChsaHMsIHJocykpIHsNCiAgICAgICAgICAgIGlmIChsaHMg
Pj0gMCkgew0KICAgICAgICAgICAgICAgIGlmIChsaHMgPiBzdGQ6Om51bWVyaWNfbGltaXRzPFJl
c3VsdFR5cGU+OjptYXgoKSArIHJocykNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAocmhzID4gc3RkOjpu
dW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgKyBsaHMpDQogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSANCiAgICAgICAgcmVz
dWx0ID0gbGhzIC0gcmhzOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiNsaW5lIDM1OSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ2hlY2tl
ZEFyaXRobWV0aWMuaCINCiAgICB9DQoNCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgbXVsdGlwbHko
TEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSANCiAgICB7DQoNCg0KDQoNCg0K
DQojbGluZSAzNzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL0NoZWNrZWRBcml0aG1ldGljLmgiDQogICAgICAgIGlmIChzaWduc01hdGNo
KGxocywgcmhzKSkgew0KICAgICAgICAgICAgaWYgKGxocyA+PSAwKSB7DQogICAgICAgICAgICAg
ICAgaWYgKGxocyAmJiAoc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLyBs
aHMpIDwgcmhzKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAg
ICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxSZXN1bHRUeXBlPihs
aHMpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1pbigpIHx8IHN0YXRpY19j
YXN0PFJlc3VsdFR5cGU+KHJocykgPT0gc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6
bWluKCkpDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAg
ICBpZiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1heCgpIC8gLWxocykgPCAt
cmhzKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAobGhzIDwgMCkgew0KICAgICAgICAgICAg
ICAgIGlmIChyaHMgJiYgbGhzIDwgKHN0ZDo6bnVtZXJpY19saW1pdHM8UmVzdWx0VHlwZT46Om1p
bigpIC8gcmhzKSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAobGhzICYmIHJocyA8IChzdGQ6Om51bWVy
aWNfbGltaXRzPFJlc3VsdFR5cGU+OjptaW4oKSAvIGxocykpDQogICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXN1bHQg
PSBsaHMgKiByaHM7DQogICAgICAgIHJldHVybiB0cnVlOw0KI2xpbmUgMzkyICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oIg0KICAgIH0NCg0KICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBkaXZpZGUoTEhTIGxo
cywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSANCiAgICB7DQogICAgICAgIGlmICghcmhz
KQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgIHJlc3VsdCA9IGxocyAvIHJo
czsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgc3RhdGljIGlubGluZSBib29s
IGVxdWFscyhMSFMgbGhzLCBSSFMgcmhzKSB7IHJldHVybiBsaHMgPT0gcmhzOyB9DQoNCn07DQoN
CnRlbXBsYXRlIDx0eXBlbmFtZSBMSFMsIHR5cGVuYW1lIFJIUywgdHlwZW5hbWUgUmVzdWx0VHlw
ZT4gc3RydWN0IEFyaXRobWV0aWNPcGVyYXRpb25zPExIUywgUkhTLCBSZXN1bHRUeXBlLCBmYWxz
ZSwgZmFsc2U+IHsNCiAgICANCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgYWRkKExIUyBsaHMsIFJI
UyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgDQogICAgew0KDQoNCg0KDQoNCg0KI2xpbmUgNDE4
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oIg0KICAgICAgICBSZXN1bHRUeXBlIHRlbXAgPSBsaHMgKyBy
aHM7DQogICAgICAgIGlmICh0ZW1wIDwgbGhzKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgICAgICByZXN1bHQgPSB0ZW1wOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiNsaW5lIDQyNCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaCINCiAgICB9DQoNCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgc3Vi
KExIUyBsaHMsIFJIUyByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkgDQogICAgew0KDQoNCg0KDQoN
Cg0KI2xpbmUgNDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIg0KICAgICAgICBSZXN1bHRUeXBlIHRl
bXAgPSBsaHMgLSByaHM7DQogICAgICAgIGlmICh0ZW1wID4gbGhzKQ0KICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgICAgICByZXN1bHQgPSB0ZW1wOw0KICAgICAgICByZXR1cm4gdHJ1ZTsN
CiNsaW5lIDQ0MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCINCiAgICB9DQoNCiAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgbXVsdGlwbHkoTEhTIGxocywgUkhTIHJocywgUmVzdWx0VHlwZSYgcmVzdWx0KSAN
CiAgICB7DQoNCg0KDQoNCg0KDQojbGluZSA0NTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NoZWNrZWRBcml0aG1ldGljLmgiDQogICAg
ICAgIGlmICghbGhzIHx8ICFyaHMpIHsNCiAgICAgICAgICAgIHJlc3VsdCA9IDA7DQogICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoc3RkOjpudW1lcmljX2xp
bWl0czxSZXN1bHRUeXBlPjo6bWF4KCkgLyBsaHMgPCByaHMpDQogICAgICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgICAgIHJlc3VsdCA9IGxocyAqIHJoczsNCiAgICAgICAgcmV0dXJuIHRydWU7
DQojbGluZSA0NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL0NoZWNrZWRBcml0aG1ldGljLmgiDQogICAgfQ0KDQogICAgc3RhdGljIGlu
bGluZSBib29sIGRpdmlkZShMSFMgbGhzLCBSSFMgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpIA0K
ICAgIHsNCiAgICAgICAgaWYgKCFyaHMpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAg
ICAgICAgcmVzdWx0ID0gbGhzIC8gcmhzOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxzKExIUyBsaHMsIFJIUyByaHMpIHsgcmV0dXJu
IGxocyA9PSByaHM7IH0NCg0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0
cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRUeXBlLCB0cnVl
LCBmYWxzZT4gew0KICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhZGQoaW50NjRfdCBsaHMsIGludDY0
X3QgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpDQogICAgew0KDQoNCg0KDQoNCg0KI2xpbmUgNDg2
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oIg0KICAgICAgICBpbnQ2NF90IHRlbXAgPSBsaHMgKyByaHM7
DQogICAgICAgIGlmICh0ZW1wIDwgc3RkOjpudW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWlu
KCkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIGlmICh0ZW1wID4gc3RkOjpu
dW1lcmljX2xpbWl0czxSZXN1bHRUeXBlPjo6bWF4KCkpDQogICAgICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFJlc3VsdFR5cGU+KHRlbXApOw0KICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiNsaW5lIDQ5NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCINCiAgICB9
DQogICAgDQogICAgc3RhdGljIGlubGluZSBib29sIHN1YihpbnQ2NF90IGxocywgaW50NjRfdCBy
aHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkNCiAgICB7DQoNCg0KDQoNCg0KDQojbGluZSA1MDUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0No
ZWNrZWRBcml0aG1ldGljLmgiDQogICAgICAgIGludDY0X3QgdGVtcCA9IGxocyAtIHJoczsNCiAg
ICAgICAgaWYgKHRlbXAgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptaW4oKSkN
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgaWYgKHRlbXAgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8UmVzdWx0VHlwZT4odGVtcCk7DQogICAgICAg
IHJldHVybiB0cnVlOw0KI2xpbmUgNTEzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIg0KICAgIH0NCg0K
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShpbnQ2NF90IGxocywgaW50NjRfdCByaHMs
IFJlc3VsdFR5cGUmIHJlc3VsdCkNCiAgICB7DQoNCg0KDQoNCg0KDQojbGluZSA1MjQgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmgiDQogICAgICAgIGludDY0X3QgdGVtcCA9IGxocyAqIHJoczsNCiAgICAg
ICAgaWYgKHRlbXAgPCBzdGQ6Om51bWVyaWNfbGltaXRzPFJlc3VsdFR5cGU+OjptaW4oKSkNCiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgaWYgKHRlbXAgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPFJlc3VsdFR5cGU+OjptYXgoKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8UmVzdWx0VHlwZT4odGVtcCk7DQogICAgICAgIHJl
dHVybiB0cnVlOw0KI2xpbmUgNTMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oIg0KICAgIH0NCg0KICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBkaXZpZGUoaW50NjRfdCBsaHMsIGludDY0X3QgcmhzLCBSZXN1
bHRUeXBlJiByZXN1bHQpDQogICAgew0KICAgICAgICBpZiAoIXJocykNCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsNCg0KICAgICAgICBpbnQ2NF90IHRlbXAgPSBsaHMgLyByaHM7DQogICAgICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PFJlc3VsdFR5cGU+KHRlbXApOw0KICAgICAgICByZXR1cm4g
dHJ1ZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWxzKGludCBsaHMsIHVu
c2lnbmVkIHJocykNCiAgICB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90Pihs
aHMpID09IHN0YXRpY19jYXN0PGludDY0X3Q+KHJocyk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUg
PHR5cGVuYW1lIFJlc3VsdFR5cGU+IHN0cnVjdCBBcml0aG1ldGljT3BlcmF0aW9uczx1bnNpZ25l
ZCwgaW50LCBSZXN1bHRUeXBlLCBmYWxzZSwgdHJ1ZT4gew0KICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBhZGQoaW50NjRfdCBsaHMsIGludDY0X3QgcmhzLCBSZXN1bHRUeXBlJiByZXN1bHQpDQogICAg
ew0KICAgICAgICByZXR1cm4gQXJpdGhtZXRpY09wZXJhdGlvbnM8aW50LCB1bnNpZ25lZCwgUmVz
dWx0VHlwZT46OmFkZChyaHMsIGxocywgcmVzdWx0KTsNCiAgICB9DQogICAgDQogICAgc3RhdGlj
IGlubGluZSBib29sIHN1YihpbnQ2NF90IGxocywgaW50NjRfdCByaHMsIFJlc3VsdFR5cGUmIHJl
c3VsdCkNCiAgICB7DQogICAgICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVu
c2lnbmVkLCBSZXN1bHRUeXBlPjo6c3ViKGxocywgcmhzLCByZXN1bHQpOw0KICAgIH0NCg0KICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBtdWx0aXBseShpbnQ2NF90IGxocywgaW50NjRfdCByaHMsIFJl
c3VsdFR5cGUmIHJlc3VsdCkNCiAgICB7DQogICAgICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0
aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRUeXBlPjo6bXVsdGlwbHkobGhzLCByaHMsIHJlc3Vs
dCk7DQogICAgfQ0KDQogICAgc3RhdGljIGlubGluZSBib29sIGRpdmlkZShpbnQ2NF90IGxocywg
aW50NjRfdCByaHMsIFJlc3VsdFR5cGUmIHJlc3VsdCkNCiAgICB7DQogICAgICAgIHJldHVybiBB
cml0aG1ldGljT3BlcmF0aW9uczxpbnQsIHVuc2lnbmVkLCBSZXN1bHRUeXBlPjo6ZGl2aWRlKGxo
cywgcmhzLCByZXN1bHQpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbHMo
dW5zaWduZWQgbGhzLCBpbnQgcmhzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIEFyaXRobWV0aWNP
cGVyYXRpb25zPGludCwgdW5zaWduZWQsIFJlc3VsdFR5cGU+OjplcXVhbHMocmhzLCBsaHMpOw0K
ICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zY2FsYXI8T3ZlcmZsb3dIYW5kbGVyPjo6dmFsdWU+
Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIG9ic2VydmVzT3ZlcmZsb3coKSB7IHJldHVybiB0cnVl
OyB9DQoNCnRlbXBsYXRlIDw+DQppbmxpbmUgY29uc3RleHByIGJvb2wgb2JzZXJ2ZXNPdmVyZmxv
dzxBc3NlcnROb092ZXJmbG93PigpIHsgcmV0dXJuIDA7IH0NCg0KdGVtcGxhdGUgPHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgYm9vbCBzYWZlQWRkKFUg
bGhzLCBWIHJocywgUiYgcmVzdWx0KQ0Kew0KICAgIHJldHVybiBBcml0aG1ldGljT3BlcmF0aW9u
czxVLCBWLCBSPjo6YWRkKGxocywgcmhzLCByZXN1bHQpOw0KICAgIHJldHVybiB0cnVlOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBSLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2NhbGFy
PE92ZXJmbG93SGFuZGxlcj46OnZhbHVlPj4NCnN0YXRpYyBpbmxpbmUgYm9vbCBzYWZlQWRkKFUg
bGhzLCBWIHJocywgUiYgcmVzdWx0KQ0Kew0KICAgIGlmIChvYnNlcnZlc092ZXJmbG93PE92ZXJm
bG93SGFuZGxlcj4oKSkNCiAgICAgICAgcmV0dXJuIHNhZmVBZGQobGhzLCByaHMsIHJlc3VsdCk7
DQogICAgcmVzdWx0ID0gbGhzICsgcmhzOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgUj4gc3RhdGljIGlubGluZSBib29s
IHNhZmVTdWIoVSBsaHMsIFYgcmhzLCBSJiByZXN1bHQpDQp7DQogICAgcmV0dXJuIEFyaXRobWV0
aWNPcGVyYXRpb25zPFUsIFYsIFI+OjpzdWIobGhzLCByaHMsIHJlc3VsdCk7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zY2FsYXI8T3ZlcmZs
b3dIYW5kbGVyPjo6dmFsdWU+Pg0Kc3RhdGljIGlubGluZSBib29sIHNhZmVTdWIoVSBsaHMsIFYg
cmhzLCBSJiByZXN1bHQpDQp7DQogICAgaWYgKG9ic2VydmVzT3ZlcmZsb3c8T3ZlcmZsb3dIYW5k
bGVyPigpKQ0KICAgICAgICByZXR1cm4gc2FmZVN1YihsaHMsIHJocywgcmVzdWx0KTsNCiAgICBy
ZXN1bHQgPSBsaHMgLSByaHM7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlIDx0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBSPiBzdGF0aWMgaW5saW5lIGJvb2wgc2FmZU11
bHRpcGx5KFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQ0Kew0KICAgIHJldHVybiBBcml0aG1ldGlj
T3BlcmF0aW9uczxVLCBWLCBSPjo6bXVsdGlwbHkobGhzLCByaHMsIHJlc3VsdCk7DQp9DQoNCnRl
bXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBSPiBzdGF0aWMgaW5saW5l
IGJvb2wgc2FmZURpdmlkZShVIGxocywgViByaHMsIFImIHJlc3VsdCkNCnsNCiAgICByZXR1cm4g
QXJpdGhtZXRpY09wZXJhdGlvbnM8VSwgViwgUj46OmRpdmlkZShsaHMsIHJocywgcmVzdWx0KTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIE92ZXJmbG93SGFuZGxlciwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3Nj
YWxhcjxPdmVyZmxvd0hhbmRsZXI+Ojp2YWx1ZT4+DQpzdGF0aWMgaW5saW5lIGJvb2wgc2FmZU11
bHRpcGx5KFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQ0Kew0KICAgIGlmIChvYnNlcnZlc092ZXJm
bG93PE92ZXJmbG93SGFuZGxlcj4oKSkNCiAgICAgICAgcmV0dXJuIHNhZmVNdWx0aXBseShsaHMs
IHJocywgcmVzdWx0KTsNCiAgICByZXN1bHQgPSBsaHMgKiByaHM7DQogICAgcmV0dXJuIHRydWU7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19z
Y2FsYXI8T3ZlcmZsb3dIYW5kbGVyPjo6dmFsdWU+Pg0Kc3RhdGljIGlubGluZSBib29sIHNhZmVE
aXZpZGUoVSBsaHMsIFYgcmhzLCBSJiByZXN1bHQpDQp7DQogICAgaWYgKG9ic2VydmVzT3ZlcmZs
b3c8T3ZlcmZsb3dIYW5kbGVyPigpKQ0KICAgICAgICByZXR1cm4gc2FmZURpdmlkZShsaHMsIHJo
cywgcmVzdWx0KTsNCiAgICByZXN1bHQgPSBsaHMgLyByaHM7DQogICAgcmV0dXJuIHRydWU7DQp9
DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgaW5saW5lIGJvb2wg
c2FmZUVxdWFscyhVIGxocywgViByaHMpDQp7DQogICAgcmV0dXJuIEFyaXRobWV0aWNPcGVyYXRp
b25zPFUsIFY+OjplcXVhbHMobGhzLCByaHMpOw0KfQ0KDQplbnVtIFJlc3VsdE92ZXJmbG93ZWRU
YWcgeyBSZXN1bHRPdmVyZmxvd2VkIH07DQogICAgDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgY2xh
c3MgT3ZlcmZsb3dIYW5kbGVyPiBjbGFzcyBDaGVja2VkIDogcHVibGljIE92ZXJmbG93SGFuZGxl
ciB7DQpwdWJsaWM6DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9ULCBjbGFzcyBfT3ZlcmZsb3dI
YW5kbGVyPiBmcmllbmQgY2xhc3MgQ2hlY2tlZDsNCiAgICBDaGVja2VkKCkNCiAgICAgICAgOiBt
X3ZhbHVlKDApDQogICAgew0KICAgIH0NCg0KICAgIENoZWNrZWQoUmVzdWx0T3ZlcmZsb3dlZFRh
ZykNCiAgICAgICAgOiBtX3ZhbHVlKDApDQogICAgew0KICAgICAgICB0aGlzLT5vdmVyZmxvd2Vk
KCk7DQogICAgfQ0KDQogICAgQ2hlY2tlZChjb25zdCBDaGVja2VkJiB2YWx1ZSkNCiAgICB7DQog
ICAgICAgIGlmICh2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpDQogICAgICAgICAgICB0aGlzLT5vdmVy
Zmxvd2VkKCk7DQogICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxUPih2YWx1ZS5tX3ZhbHVl
KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gQ2hlY2tlZChVIHZhbHVlKQ0K
ICAgIHsNCiAgICAgICAgaWYgKCFpc0luQm91bmRzPFQ+KHZhbHVlKSkNCiAgICAgICAgICAgIHRo
aXMtPm92ZXJmbG93ZWQoKTsNCiAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KHZhbHVl
KTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+IENoZWNrZWQoY29uc3Qg
Q2hlY2tlZDxULCBWPiYgcmhzKQ0KICAgICAgICA6IG1fdmFsdWUocmhzLm1fdmFsdWUpDQogICAg
ew0KICAgICAgICBpZiAocmhzLmhhc092ZXJmbG93ZWQoKSkNCiAgICAgICAgICAgIHRoaXMtPm92
ZXJmbG93ZWQoKTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IENoZWNr
ZWQoY29uc3QgQ2hlY2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+JiByaHMpDQogICAgICAgIDogT3Zl
cmZsb3dIYW5kbGVyKHJocykNCiAgICB7DQogICAgICAgIGlmICghaXNJbkJvdW5kczxUPihyaHMu
bV92YWx1ZSkpDQogICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7DQogICAgICAgIG1fdmFs
dWUgPSBzdGF0aWNfY2FzdDxUPihyaHMubV92YWx1ZSk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBDaGVja2VkKGNvbnN0IENoZWNrZWQ8VSwgVj4m
IHJocykNCiAgICB7DQogICAgICAgIGlmIChyaHMuaGFzT3ZlcmZsb3dlZCgpKQ0KICAgICAgICAg
ICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8VD4ocmhzLm1f
dmFsdWUpKQ0KICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAgICBtX3ZhbHVl
ID0gc3RhdGljX2Nhc3Q8VD4ocmhzLm1fdmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBjb25zdCBD
aGVja2VkJiBvcGVyYXRvcj0oQ2hlY2tlZCByaHMpDQogICAgew0KICAgICAgICB0aGlzLT5jbGVh
ck92ZXJmbG93KCk7DQogICAgICAgIGlmIChyaHMuaGFzT3ZlcmZsb3dlZCgpKQ0KICAgICAgICAg
ICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VD4o
cmhzLm1fdmFsdWUpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KICAgIA0KICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVPiBjb25zdCBDaGVja2VkJiBvcGVyYXRvcj0oVSB2YWx1ZSkNCiAg
ICB7DQogICAgICAgIHJldHVybiAqdGhpcyA9IENoZWNrZWQodmFsdWUpOw0KICAgIH0NCiAgICAN
CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gY29uc3QgQ2hlY2tlZCYgb3Bl
cmF0b3I9KGNvbnN0IENoZWNrZWQ8VSwgVj4mIHJocykNCiAgICB7DQogICAgICAgIHJldHVybiAq
dGhpcyA9IENoZWNrZWQocmhzKTsNCiAgICB9DQogICAgDQogICAgDQogICAgY29uc3QgQ2hlY2tl
ZCYgb3BlcmF0b3IrKygpDQogICAgew0KICAgICAgICBpZiAobV92YWx1ZSA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPFQ+OjptYXgoKSkNCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsNCiAg
ICAgICAgbV92YWx1ZSsrOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KICAgIA0KICAg
IGNvbnN0IENoZWNrZWQmIG9wZXJhdG9yLS0oKQ0KICAgIHsNCiAgICAgICAgaWYgKG1fdmFsdWUg
PT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkpDQogICAgICAgICAgICB0aGlzLT5vdmVy
Zmxvd2VkKCk7DQogICAgICAgIG1fdmFsdWUtLTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCiAgICANCiAgICANCiAgICBjb25zdCBDaGVja2VkIG9wZXJhdG9yKysoaW50KQ0KICAgIHsN
CiAgICAgICAgaWYgKG1fdmFsdWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpDQog
ICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7DQogICAgICAgIHJldHVybiBDaGVja2VkKG1f
dmFsdWUrKyk7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0IENoZWNrZWQgb3BlcmF0b3ItLShpbnQp
DQogICAgew0KICAgICAgICBpZiAobV92YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojpt
aW4oKSkNCiAgICAgICAgICAgIHRoaXMtPm92ZXJmbG93ZWQoKTsNCiAgICAgICAgcmV0dXJuIENo
ZWNrZWQobV92YWx1ZS0tKTsNCiAgICB9DQogICAgDQogICAgDQogICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkNCiAgICAg
ICAgICAgIHRoaXMtPmNyYXNoKCk7DQogICAgICAgIHJldHVybiAhbV92YWx1ZTsNCiAgICB9DQoN
CiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICh0
aGlzLT5oYXNPdmVyZmxvd2VkKCkpDQogICAgICAgICAgICB0aGlzLT5jcmFzaCgpOw0KICAgICAg
ICByZXR1cm4gbV92YWx1ZTsNCiAgICB9DQoNCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
ID0gVD4NCiAgICBVIHVuc2FmZUdldCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAodGhpcy0+
aGFzT3ZlcmZsb3dlZCgpKQ0KICAgICAgICAgICAgdGhpcy0+Y3Jhc2goKTsNCiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFU+KG1fdmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBpbmxpbmUgQ2hl
Y2tlZFN0YXRlIHNhZmVHZXQoVCYgdmFsdWUpIGNvbnN0IA0KICAgIHsNCiAgICAgICAgdmFsdWUg
PSBtX3ZhbHVlOw0KICAgICAgICBpZiAodGhpcy0+aGFzT3ZlcmZsb3dlZCgpKQ0KICAgICAgICAg
ICAgcmV0dXJuIENoZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3c7DQogICAgICAgIHJldHVybiBDaGVj
a2VkU3RhdGU6OkRpZE5vdE92ZXJmbG93Ow0KICAgIH0NCg0KICAgIA0KICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVPiBjb25zdCBDaGVja2VkIG9wZXJhdG9yKz0oVSByaHMpDQogICAgew0KICAgICAg
ICBpZiAoIXNhZmVBZGQ8T3ZlcmZsb3dIYW5kbGVyPihtX3ZhbHVlLCByaHMsIG1fdmFsdWUpKQ0K
ICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGNvbnN0IENoZWNrZWQgb3BlcmF0b3It
PShVIHJocykNCiAgICB7DQogICAgICAgIGlmICghc2FmZVN1YjxPdmVyZmxvd0hhbmRsZXI+KG1f
dmFsdWUsIHJocywgbV92YWx1ZSkpDQogICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7DQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4g
Y29uc3QgQ2hlY2tlZCBvcGVyYXRvcio9KFUgcmhzKQ0KICAgIHsNCiAgICAgICAgaWYgKCFzYWZl
TXVsdGlwbHk8T3ZlcmZsb3dIYW5kbGVyPihtX3ZhbHVlLCByaHMsIG1fdmFsdWUpKQ0KICAgICAg
ICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0K
DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGNvbnN0IENoZWNrZWQgb3BlcmF0b3IvPShVIHJo
cykNCiAgICB7DQogICAgICAgIGlmICghc2FmZURpdmlkZTxPdmVyZmxvd0hhbmRsZXI+KG1fdmFs
dWUsIHJocywgbV92YWx1ZSkpDQogICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7DQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBjb25zdCBDaGVja2VkIG9wZXJhdG9yKj0o
ZG91YmxlIHJocykNCiAgICB7DQogICAgICAgIGRvdWJsZSByZXN1bHQgPSByaHMgKiBtX3ZhbHVl
Ow0KICAgICAgICANCiAgICAgICAgaWYgKCEoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkg
PD0gcmVzdWx0ICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpID49IHJlc3VsdCkpDQog
ICAgICAgICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7DQogICAgICAgIG1fdmFsdWUgPSAoVClyZXN1
bHQ7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBjb25zdCBDaGVja2VkIG9w
ZXJhdG9yLz0oZG91YmxlIHJocykNCiAgICB7DQogICAgICAgIGlmICghcmhzKSB7DQogICAgICAg
ICAgICB0aGlzLT5vdmVyZmxvd2VkKCk7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQogICAg
ICAgIH0NCiAgICAgICAgZG91YmxlIHJlc3VsdCA9IG1fdmFsdWUgLyByaHM7DQogICAgICAgIA0K
ICAgICAgICBpZiAoIShzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSA8PSByZXN1bHQgJiYg
c3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgPj0gcmVzdWx0KSkNCiAgICAgICAgICAgIHRo
aXMtPm92ZXJmbG93ZWQoKTsNCiAgICAgICAgbV92YWx1ZSA9IChUKXJlc3VsdDsNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIGNvbnN0IENoZWNrZWQgb3BlcmF0b3IqPShmbG9h
dCByaHMpDQogICAgew0KICAgICAgICByZXR1cm4gKnRoaXMgKj0gKGRvdWJsZSlyaHM7DQogICAg
fQ0KDQogICAgY29uc3QgQ2hlY2tlZCBvcGVyYXRvci89KGZsb2F0IHJocykNCiAgICB7DQogICAg
ICAgIHJldHVybiAqdGhpcyAvPSAoZG91YmxlKXJoczsNCiAgICB9DQogICAgDQogICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGNvbnN0IENoZWNrZWQgb3BlcmF0b3IrPShDaGVj
a2VkPFUsIFY+IHJocykNCiAgICB7DQogICAgICAgIGlmIChyaHMuaGFzT3ZlcmZsb3dlZCgpKQ0K
ICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAgICByZXR1cm4gKnRoaXMgKz0g
cmhzLm1fdmFsdWU7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFY+IGNvbnN0IENoZWNrZWQgb3BlcmF0b3ItPShDaGVja2VkPFUsIFY+IHJocykNCiAgICB7DQog
ICAgICAgIGlmIChyaHMuaGFzT3ZlcmZsb3dlZCgpKQ0KICAgICAgICAgICAgdGhpcy0+b3ZlcmZs
b3dlZCgpOw0KICAgICAgICByZXR1cm4gKnRoaXMgLT0gcmhzLm1fdmFsdWU7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IGNvbnN0IENoZWNrZWQgb3BlcmF0
b3IqPShDaGVja2VkPFUsIFY+IHJocykNCiAgICB7DQogICAgICAgIGlmIChyaHMuaGFzT3ZlcmZs
b3dlZCgpKQ0KICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAgICByZXR1cm4g
KnRoaXMgKj0gcmhzLm1fdmFsdWU7DQogICAgfQ0KDQogICAgDQogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFY+IGJvb2wgb3BlcmF0b3I9PShDaGVja2VkPFQsIFY+IHJocykNCiAgICB7DQogICAgICAg
IHJldHVybiB1bnNhZmVHZXQoKSA9PSByaHMudW5zYWZlR2V0KCk7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIHJocykNCiAgICB7DQogICAgICAg
IGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpDQogICAgICAgICAgICB0aGlzLT5jcmFzaCgpOw0K
ICAgICAgICByZXR1cm4gc2FmZUVxdWFscyhtX3ZhbHVlLCByaHMpOw0KICAgIH0NCiAgICANCiAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gY29uc3QgQ2hlY2tlZCBvcGVyYXRv
cj09KENoZWNrZWQ8VSwgVj4gcmhzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgp
ID09IENoZWNrZWQocmhzLnVuc2FmZUdldCgpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVT4gYm9vbCBvcGVyYXRvciE9KFUgcmhzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gcmhzKTsNCiAgICB9DQoNCiAgICANCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4g
Ym9vbCBvcGVyYXRvcjwoQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0DQogICAgew0KICAgICAgICBy
ZXR1cm4gdW5zYWZlR2V0KCkgPCByaHMudW5zYWZlR2V0KCk7DQogICAgfQ0KDQogICAgYm9vbCBv
cGVyYXRvcjwoVCByaHMpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkg
PCByaHM7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+IGJvb2wgb3BlcmF0b3I8
PShDaGVja2VkPFQsIFY+IHJocykgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiB1bnNhZmVH
ZXQoKSA8PSByaHMudW5zYWZlR2V0KCk7DQogICAgfQ0KDQogICAgYm9vbCBvcGVyYXRvcjw9KFQg
cmhzKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHVuc2FmZUdldCgpIDw9IHJoczsNCiAg
ICB9DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcj4oQ2hlY2tlZDxU
LCBWPiByaHMpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPiByaHMu
dW5zYWZlR2V0KCk7DQogICAgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj4oVCByaHMpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gdW5zYWZlR2V0KCkgPiByaHM7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFY+IGJvb2wgb3BlcmF0b3I+PShDaGVja2VkPFQsIFY+IHJocykgY29u
c3QNCiAgICB7DQogICAgICAgIHJldHVybiB1bnNhZmVHZXQoKSA+PSByaHMudW5zYWZlR2V0KCk7
DQogICAgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj49KFQgcmhzKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIHVuc2FmZUdldCgpID49IHJoczsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgDQog
ICAgQ2hlY2tlZChmbG9hdCk7DQogICAgQ2hlY2tlZChkb3VibGUpOw0KICAgIHZvaWQgb3BlcmF0
b3I9KGZsb2F0KTsNCiAgICB2b2lkIG9wZXJhdG9yPShkb3VibGUpOw0KICAgIHZvaWQgb3BlcmF0
b3IrPShmbG9hdCk7DQogICAgdm9pZCBvcGVyYXRvcis9KGRvdWJsZSk7DQogICAgdm9pZCBvcGVy
YXRvci09KGZsb2F0KTsNCiAgICB2b2lkIG9wZXJhdG9yLT0oZG91YmxlKTsNCiAgICBUIG1fdmFs
dWU7DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyPiBzdGF0aWMgaW5saW5lIENoZWNrZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+
OjpSZXN1bHRUeXBlLCBPdmVyZmxvd0hhbmRsZXI+IG9wZXJhdG9yKyhDaGVja2VkPFUsIE92ZXJm
bG93SGFuZGxlcj4gbGhzLCBDaGVja2VkPFYsIE92ZXJmbG93SGFuZGxlcj4gcmhzKQ0Kew0KICAg
IFUgeCA9IDA7DQogICAgViB5ID0gMDsNCiAgICBib29sIG92ZXJmbG93ZWQgPSBsaHMuc2FmZUdl
dCh4KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93IHx8IHJocy5zYWZlR2V0KHkpID09IENo
ZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3c7DQogICAgdHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1
bHRUeXBlIHJlc3VsdCA9IDA7DQogICAgb3ZlcmZsb3dlZCB8PSAhc2FmZUFkZDxPdmVyZmxvd0hh
bmRsZXI+KHgsIHksIHJlc3VsdCk7DQogICAgaWYgKG92ZXJmbG93ZWQpDQogICAgICAgIHJldHVy
biBSZXN1bHRPdmVyZmxvd2VkOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnRlbXBsYXRlIDx0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHN0YXRpYyBp
bmxpbmUgQ2hlY2tlZDx0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJlc3VsdFR5cGUsIE92ZXJmbG93
SGFuZGxlcj4gb3BlcmF0b3ItKENoZWNrZWQ8VSwgT3ZlcmZsb3dIYW5kbGVyPiBsaHMsIENoZWNr
ZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpDQp7DQogICAgVSB4ID0gMDsNCiAgICBWIHkgPSAw
Ow0KICAgIGJvb2wgb3ZlcmZsb3dlZCA9IGxocy5zYWZlR2V0KHgpID09IENoZWNrZWRTdGF0ZTo6
RGlkT3ZlcmZsb3cgfHwgcmhzLnNhZmVHZXQoeSkgPT0gQ2hlY2tlZFN0YXRlOjpEaWRPdmVyZmxv
dzsNCiAgICB0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJlc3VsdFR5cGUgcmVzdWx0ID0gMDsNCiAg
ICBvdmVyZmxvd2VkIHw9ICFzYWZlU3ViPE92ZXJmbG93SGFuZGxlcj4oeCwgeSwgcmVzdWx0KTsN
CiAgICBpZiAob3ZlcmZsb3dlZCkNCiAgICAgICAgcmV0dXJuIFJlc3VsdE92ZXJmbG93ZWQ7DQog
ICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2VkPHR5cGVuYW1l
IFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVyYXRvciooQ2hl
Y2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+IGxocywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hhbmRsZXI+
IHJocykNCnsNCiAgICBVIHggPSAwOw0KICAgIFYgeSA9IDA7DQogICAgYm9vbCBvdmVyZmxvd2Vk
ID0gbGhzLnNhZmVHZXQoeCkgPT0gQ2hlY2tlZFN0YXRlOjpEaWRPdmVyZmxvdyB8fCByaHMuc2Fm
ZUdldCh5KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93Ow0KICAgIHR5cGVuYW1lIFJlc3Vs
dDxVLCBWPjo6UmVzdWx0VHlwZSByZXN1bHQgPSAwOw0KICAgIG92ZXJmbG93ZWQgfD0gIXNhZmVN
dWx0aXBseTxPdmVyZmxvd0hhbmRsZXI+KHgsIHksIHJlc3VsdCk7DQogICAgaWYgKG92ZXJmbG93
ZWQpDQogICAgICAgIHJldHVybiBSZXN1bHRPdmVyZmxvd2VkOw0KICAgIHJldHVybiByZXN1bHQ7
DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXI+IHN0YXRpYyBpbmxpbmUgQ2hlY2tlZDx0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJl
c3VsdFR5cGUsIE92ZXJmbG93SGFuZGxlcj4gb3BlcmF0b3IvKENoZWNrZWQ8VSwgT3ZlcmZsb3dI
YW5kbGVyPiBsaHMsIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpDQp7DQogICAgVSB4
ID0gMDsNCiAgICBWIHkgPSAwOw0KICAgIGJvb2wgb3ZlcmZsb3dlZCA9IGxocy5zYWZlR2V0KHgp
ID09IENoZWNrZWRTdGF0ZTo6RGlkT3ZlcmZsb3cgfHwgcmhzLnNhZmVHZXQoeSkgPT0gQ2hlY2tl
ZFN0YXRlOjpEaWRPdmVyZmxvdzsNCiAgICB0eXBlbmFtZSBSZXN1bHQ8VSwgVj46OlJlc3VsdFR5
cGUgcmVzdWx0ID0gMDsNCiAgICBvdmVyZmxvd2VkIHw9ICFzYWZlRGl2aWRlPE92ZXJmbG93SGFu
ZGxlcj4oeCwgeSwgcmVzdWx0KTsNCiAgICBpZiAob3ZlcmZsb3dlZCkNCiAgICAgICAgcmV0dXJu
IFJlc3VsdE92ZXJmbG93ZWQ7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KdGVtcGxhdGUgPHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlu
bGluZSBDaGVja2VkPHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dI
YW5kbGVyPiBvcGVyYXRvcisoQ2hlY2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+IGxocywgViByaHMp
DQp7DQogICAgcmV0dXJuIGxocyArIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPihyaHMpOw0K
fQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPiBzdGF0aWMgaW5saW5lIENoZWNrZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1
bHRUeXBlLCBPdmVyZmxvd0hhbmRsZXI+IG9wZXJhdG9yLShDaGVja2VkPFUsIE92ZXJmbG93SGFu
ZGxlcj4gbGhzLCBWIHJocykNCnsNCiAgICByZXR1cm4gbGhzIC0gQ2hlY2tlZDxWLCBPdmVyZmxv
d0hhbmRsZXI+KHJocyk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHN0YXRpYyBpbmxpbmUgQ2hlY2tlZDx0eXBlbmFtZSBS
ZXN1bHQ8VSwgVj46OlJlc3VsdFR5cGUsIE92ZXJmbG93SGFuZGxlcj4gb3BlcmF0b3IqKENoZWNr
ZWQ8VSwgT3ZlcmZsb3dIYW5kbGVyPiBsaHMsIFYgcmhzKQ0Kew0KICAgIHJldHVybiBsaHMgKiBD
aGVja2VkPFYsIE92ZXJmbG93SGFuZGxlcj4ocmhzKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBD
aGVja2VkPHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVy
PiBvcGVyYXRvci8oQ2hlY2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+IGxocywgViByaHMpDQp7DQog
ICAgcmV0dXJuIGxocyAvIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPihyaHMpOw0KfQ0KDQp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PiBzdGF0aWMgaW5saW5lIENoZWNrZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBl
LCBPdmVyZmxvd0hhbmRsZXI+IG9wZXJhdG9yKyhVIGxocywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hh
bmRsZXI+IHJocykNCnsNCiAgICByZXR1cm4gQ2hlY2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+KGxo
cykgKyByaHM7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXI+IHN0YXRpYyBpbmxpbmUgQ2hlY2tlZDx0eXBlbmFtZSBSZXN1bHQ8
VSwgVj46OlJlc3VsdFR5cGUsIE92ZXJmbG93SGFuZGxlcj4gb3BlcmF0b3ItKFUgbGhzLCBDaGVj
a2VkPFYsIE92ZXJmbG93SGFuZGxlcj4gcmhzKQ0Kew0KICAgIHJldHVybiBDaGVja2VkPFUsIE92
ZXJmbG93SGFuZGxlcj4obGhzKSAtIHJoczsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gc3RhdGljIGlubGluZSBDaGVja2Vk
PHR5cGVuYW1lIFJlc3VsdDxVLCBWPjo6UmVzdWx0VHlwZSwgT3ZlcmZsb3dIYW5kbGVyPiBvcGVy
YXRvciooVSBsaHMsIENoZWNrZWQ8ViwgT3ZlcmZsb3dIYW5kbGVyPiByaHMpDQp7DQogICAgcmV0
dXJuIENoZWNrZWQ8VSwgT3ZlcmZsb3dIYW5kbGVyPihsaHMpICogcmhzOw0KfQ0KDQp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0
aWMgaW5saW5lIENoZWNrZWQ8dHlwZW5hbWUgUmVzdWx0PFUsIFY+OjpSZXN1bHRUeXBlLCBPdmVy
Zmxvd0hhbmRsZXI+IG9wZXJhdG9yLyhVIGxocywgQ2hlY2tlZDxWLCBPdmVyZmxvd0hhbmRsZXI+
IHJocykNCnsNCiAgICByZXR1cm4gQ2hlY2tlZDxVLCBPdmVyZmxvd0hhbmRsZXI+KGxocykgLyBy
aHM7DQp9DQoNCg0KdHlwZWRlZiBDaGVja2VkPGludDhfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNr
ZWRJbnQ4Ow0KdHlwZWRlZiBDaGVja2VkPHVpbnQ4X3QsIFJlY29yZE92ZXJmbG93PiBDaGVja2Vk
VWludDg7DQp0eXBlZGVmIENoZWNrZWQ8aW50MTZfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRJ
bnQxNjsNCnR5cGVkZWYgQ2hlY2tlZDx1aW50MTZfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRV
aW50MTY7DQp0eXBlZGVmIENoZWNrZWQ8aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRJ
bnQzMjsNCnR5cGVkZWYgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRV
aW50MzI7DQp0eXBlZGVmIENoZWNrZWQ8aW50NjRfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRJ
bnQ2NDsNCnR5cGVkZWYgQ2hlY2tlZDx1aW50NjRfdCwgUmVjb3JkT3ZlcmZsb3c+IENoZWNrZWRV
aW50NjQ7DQp0eXBlZGVmIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gQ2hlY2tlZFNp
emU7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQpDaGVja2VkPFQsIFJlY29y
ZE92ZXJmbG93PiBjaGVja2VkU3VtKFUgdmFsdWUpDQp7DQogICAgcmV0dXJuIENoZWNrZWQ8VCwg
UmVjb3JkT3ZlcmZsb3c+KHZhbHVlKTsNCn0NCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lLi4uIEFyZ3M+DQpDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBjaGVja2Vk
U3VtKFUgdmFsdWUsIEFyZ3MuLi4gYXJncykNCnsNCiAgICByZXR1cm4gQ2hlY2tlZDxULCBSZWNv
cmRPdmVyZmxvdz4odmFsdWUpICsgY2hlY2tlZFN1bTxUPihhcmdzLi4uKTsNCn0NCg0KDQoNCg0K
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBzdW1PdmVyZmxvd3Mo
QXJncy4uLiBhcmdzKQ0Kew0KICAgIHJldHVybiBjaGVja2VkU3VtPFQ+KGFyZ3MuLi4pLmhhc092
ZXJmbG93ZWQoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBk
aWZmZXJlbmNlT3ZlcmZsb3dzKFUgbGVmdCwgVSByaWdodCkNCnsNCiAgICByZXR1cm4gKENoZWNr
ZWQ8VCwgUmVjb3JkT3ZlcmZsb3c+KGxlZnQpIC0gQ2hlY2tlZDxULCBSZWNvcmRPdmVyZmxvdz4o
cmlnaHQpKS5oYXNPdmVyZmxvd2VkKCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+DQpDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93PiBjaGVja2VkUHJvZHVjdChVIHZhbHVl
KQ0Kew0KICAgIHJldHVybiBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93Pih2YWx1ZSk7DQp9DQp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZS4uLiBBcmdzPg0KQ2hlY2tl
ZDxULCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZFByb2R1Y3QoVSB2YWx1ZSwgQXJncy4uLiBhcmdz
KQ0Kew0KICAgIHJldHVybiBDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93Pih2YWx1ZSkgKiBjaGVj
a2VkUHJvZHVjdDxUPihhcmdzLi4uKTsNCn0NCg0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4gQXJncz4gYm9vbCBwcm9kdWN0T3ZlcmZsb3dzKEFyZ3MuLi4gYXJncykNCnsN
CiAgICByZXR1cm4gY2hlY2tlZFByb2R1Y3Q8VD4oYXJncy4uLikuaGFzT3ZlcmZsb3dlZCgpOw0K
fQ0KDQp9DQoNCnVzaW5nIFdURjo6QXNzZXJ0Tm9PdmVyZmxvdzsNCnVzaW5nIFdURjo6Q2hlY2tl
ZDsNCnVzaW5nIFdURjo6Q2hlY2tlZFN0YXRlOw0KdXNpbmcgV1RGOjpDaGVja2VkSW50ODsNCnVz
aW5nIFdURjo6Q2hlY2tlZFVpbnQ4Ow0KdXNpbmcgV1RGOjpDaGVja2VkSW50MTY7DQp1c2luZyBX
VEY6OkNoZWNrZWRVaW50MTY7DQp1c2luZyBXVEY6OkNoZWNrZWRJbnQzMjsNCnVzaW5nIFdURjo6
Q2hlY2tlZFVpbnQzMjsNCnVzaW5nIFdURjo6Q2hlY2tlZEludDY0Ow0KdXNpbmcgV1RGOjpDaGVj
a2VkVWludDY0Ow0KdXNpbmcgV1RGOjpDaGVja2VkU2l6ZTsNCnVzaW5nIFdURjo6Q29uZGl0aW9u
YWxDcmFzaE9uT3ZlcmZsb3c7DQp1c2luZyBXVEY6OkNyYXNoT25PdmVyZmxvdzsNCnVzaW5nIFdU
Rjo6UmVjb3JkT3ZlcmZsb3c7DQp1c2luZyBXVEY6OmNoZWNrZWRTdW07DQp1c2luZyBXVEY6OmRp
ZmZlcmVuY2VPdmVyZmxvd3M7DQp1c2luZyBXVEY6OmlzSW5Cb3VuZHM7DQp1c2luZyBXVEY6OnBy
b2R1Y3RPdmVyZmxvd3M7DQp1c2luZyBXVEY6OnN1bU92ZXJmbG93czsNCiNsaW5lIDM0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdGRM
aWJFeHRyYXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9TdGRMaWJFeHRyYXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxMDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1N0ZExpYkV4dHJhcy5oIg0KdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4N
CmlubGluZSBib29sIGlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5KFR5cGUqKQ0Kew0KICAgIHJl
dHVybiB0cnVlOw0KfQ0KDQojbGluZSAxMTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1N0ZExpYkV4dHJhcy5oIg0KDQpuYW1lc3BhY2Ug
V1RGIHsNCg0KZW51bSBDaGVja01vdmVQYXJhbWV0ZXJUYWcgeyBDaGVja01vdmVQYXJhbWV0ZXIg
fTsNCg0Kc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgS0IgPSAxMDI0Ow0Kc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgTUIgPSAxMDI0ICogMTAyNDsNCnN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IEdCID0g
MTAyNCAqIDEwMjQgKiAxMDI0Ow0KDQppbmxpbmUgYm9vbCBpc1BvaW50ZXJBbGlnbmVkKHZvaWQq
IHApDQp7DQogICAgcmV0dXJuICEoKGludHB0cl90KShwKSAmIChzaXplb2YoY2hhciopIC0gMSkp
Ow0KfQ0KDQppbmxpbmUgYm9vbCBpczhCeXRlQWxpZ25lZCh2b2lkKiBwKQ0Kew0KICAgIHJldHVy
biAhKCh1aW50cHRyX3QpKHApICYgKHNpemVvZihkb3VibGUpIC0gMSkpOw0KfQ0KDQoNCg0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBUb1R5cGUsIHR5cGVuYW1lIEZyb21UeXBlPg0KaW5saW5lIFRvVHlw
ZSBiaXR3aXNlX2Nhc3QoRnJvbVR5cGUgZnJvbSkNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihGcm9tVHlwZSkgPT0gc2l6ZW9mKFRvVHlwZSksICJiaXR3aXNlX2Nhc3Qgc2l6ZSBvZiBGcm9t
VHlwZSBhbmQgVG9UeXBlIG11c3QgYmUgZXF1YWwhIik7DQoNCg0KDQoNCiNsaW5lIDE0MiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU3Rk
TGliRXh0cmFzLmgiDQogICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VG9UeXBlPjo6dHlw
ZSB0byB7IH07DQogICAgc3RkOjptZW1jcHkoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0byksIHN0YXRp
Y19jYXN0PHZvaWQqPigmZnJvbSksIHNpemVvZih0bykpOw0KICAgIHJldHVybiB0bzsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgVG9UeXBlLCB0eXBlbmFtZSBGcm9tVHlwZT4NCmlubGluZSBUb1R5
cGUgc2FmZUNhc3QoRnJvbVR5cGUgdmFsdWUpDQp7DQogICAgZG8geyBpZiAoKCEoaXNJbkJvdW5k
czxUb1R5cGU+KHZhbHVlKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsg
Y29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTUwLCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU3RkTGliRXh0
cmFzLmgiLCAgX19GVU5DVElPTl9fICAsIDAgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgw
KTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG9UeXBlPih2YWx1ZSk7DQp9DQoNCg0KaW5saW5l
IHNpemVfdCBiaXRDb3VudCh1bnNpZ25lZCBiaXRzKQ0Kew0KICAgIGJpdHMgPSBiaXRzIC0gKChi
aXRzID4+IDEpICYgMHg1NTU1NTU1NSk7DQogICAgYml0cyA9IChiaXRzICYgMHgzMzMzMzMzMykg
KyAoKGJpdHMgPj4gMikgJiAweDMzMzMzMzMzKTsNCiAgICByZXR1cm4gKCgoYml0cyArIChiaXRz
ID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+IDI0Ow0KfQ0KDQppbmxpbmUgc2l6
ZV90IGJpdENvdW50KHVpbnQ2NF90IGJpdHMpDQp7DQogICAgcmV0dXJuIGJpdENvdW50KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihiaXRzKSkgKyBiaXRDb3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Yml0cyA+PiAzMikpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBTaXplPiBj
aGFyICgmQXJyYXlMZW5ndGhIZWxwZXJGdW5jdGlvbihUICgmKVtTaXplXSkpW1NpemVdOw0KDQoN
Cg0KI2xpbmUgMTczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9TdGRMaWJFeHRyYXMuaCINCg0KDQpfX2ZvcmNlaW5saW5lIGNvbnN0ZXhw
ciBzaXplX3Qgcm91bmRVcFRvTXVsdGlwbGVPZkltcGwoc2l6ZV90IGRpdmlzb3IsIHNpemVfdCB4
KQ0Kew0KICAgIHNpemVfdCByZW1haW5kZXJNYXNrID0gZGl2aXNvciAtIDE7DQogICAgcmV0dXJu
ICh4ICsgcmVtYWluZGVyTWFzaykgJiB+cmVtYWluZGVyTWFzazsNCn0NCg0KDQppbmxpbmUgc2l6
ZV90IHJvdW5kVXBUb011bHRpcGxlT2Yoc2l6ZV90IGRpdmlzb3IsIHNpemVfdCB4KQ0Kew0KICAg
ICgodm9pZCkwKTsNCiAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZkltcGwoZGl2aXNvciwg
eCk7DQp9DQoNCnRlbXBsYXRlPHNpemVfdCBkaXZpc29yPiBjb25zdGV4cHIgc2l6ZV90IHJvdW5k
VXBUb011bHRpcGxlT2Yoc2l6ZV90IHgpDQp7DQogICAgc3RhdGljX2Fzc2VydChkaXZpc29yICYm
ICEoZGl2aXNvciAmIChkaXZpc29yIC0gMSkpLCAiZGl2aXNvciBtdXN0IGJlIGEgcG93ZXIgb2Yg
dHdvISIpOw0KICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mSW1wbChkaXZpc29yLCB4KTsN
Cn0NCg0KdGVtcGxhdGU8c2l6ZV90IGRpdmlzb3IsIHR5cGVuYW1lIFQ+IGlubGluZSBUKiByb3Vu
ZFVwVG9NdWx0aXBsZU9mKFQqIHgpDQp7DQogICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCopID09
IHNpemVvZihzaXplX3QpLCAiIik7DQogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHJv
dW5kVXBUb011bHRpcGxlT2Y8ZGl2aXNvcj4ocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHgpKSk7
DQp9DQoNCmVudW0gQmluYXJ5U2VhcmNoTW9kZSB7DQogICAgS2V5TXVzdEJlUHJlc2VudEluQXJy
YXksDQogICAgS2V5TWlnaHROb3RCZVByZXNlbnRJbkFycmF5LA0KICAgIFJldHVybkFkamFjZW50
RWxlbWVudElmS2V5SXNOb3RQcmVzZW50DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVs
ZW1lbnRUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBBcnJheVR5cGUsIHR5cGVuYW1l
IEV4dHJhY3RLZXksIEJpbmFyeVNlYXJjaE1vZGUgbW9kZT4NCmlubGluZSBBcnJheUVsZW1lbnRU
eXBlKiBiaW5hcnlTZWFyY2hJbXBsKEFycmF5VHlwZSYgYXJyYXksIHNpemVfdCBzaXplLCBLZXlU
eXBlIGtleSwgY29uc3QgRXh0cmFjdEtleSYgZXh0cmFjdEtleSA9IEV4dHJhY3RLZXkoKSkNCnsN
CiAgICBzaXplX3Qgb2Zmc2V0ID0gMDsNCiAgICB3aGlsZSAoc2l6ZSA+IDEpIHsNCiAgICAgICAg
c2l6ZV90IHBvcyA9IChzaXplIC0gMSkgPj4gMTsNCiAgICAgICAgS2V5VHlwZSB2YWwgPSBleHRy
YWN0S2V5KCZhcnJheVtvZmZzZXQgKyBwb3NdKTsNCiAgICAgICAgDQogICAgICAgIGlmICh2YWwg
PT0ga2V5KQ0KICAgICAgICAgICAgcmV0dXJuICZhcnJheVtvZmZzZXQgKyBwb3NdOw0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIGlmIChrZXkgPCB2YWwpDQogICAgICAgICAgICBzaXplID0g
cG9zOw0KICAgICAgICANCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBzaXplIC09IChwb3Mg
KyAxKTsNCiAgICAgICAgICAgIG9mZnNldCArPSAocG9zICsgMSk7DQogICAgICAgIH0NCg0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgfQ0KICAgIA0KICAgIGlmIChtb2RlID09IEtleU1pZ2h0Tm90
QmVQcmVzZW50SW5BcnJheSAmJiAhc2l6ZSkNCiAgICAgICAgcmV0dXJuIDA7DQogICAgDQogICAg
QXJyYXlFbGVtZW50VHlwZSogcmVzdWx0ID0gJmFycmF5W29mZnNldF07DQoNCiAgICBpZiAobW9k
ZSA9PSBLZXlNaWdodE5vdEJlUHJlc2VudEluQXJyYXkgJiYga2V5ICE9IGV4dHJhY3RLZXkocmVz
dWx0KSkNCiAgICAgICAgcmV0dXJuIDA7DQoNCiAgICBpZiAobW9kZSA9PSBLZXlNdXN0QmVQcmVz
ZW50SW5BcnJheSkgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICB9DQoNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIEFycmF5
RWxlbWVudFR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIEFycmF5VHlwZSwgdHlwZW5h
bWUgRXh0cmFjdEtleT4NCmlubGluZSBBcnJheUVsZW1lbnRUeXBlKiBiaW5hcnlTZWFyY2goQXJy
YXlUeXBlJiBhcnJheSwgc2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBFeHRyYWN0S2V5IGV4dHJh
Y3RLZXkgPSBFeHRyYWN0S2V5KCkpDQp7DQogICAgcmV0dXJuIGJpbmFyeVNlYXJjaEltcGw8QXJy
YXlFbGVtZW50VHlwZSwgS2V5VHlwZSwgQXJyYXlUeXBlLCBFeHRyYWN0S2V5LCBLZXlNdXN0QmVQ
cmVzZW50SW5BcnJheT4oYXJyYXksIHNpemUsIGtleSwgZXh0cmFjdEtleSk7DQp9DQoNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5h
bWUgQXJyYXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0S2V5Pg0KaW5saW5lIEFycmF5RWxlbWVudFR5
cGUqIHRyeUJpbmFyeVNlYXJjaChBcnJheVR5cGUmIGFycmF5LCBzaXplX3Qgc2l6ZSwgS2V5VHlw
ZSBrZXksIEV4dHJhY3RLZXkgZXh0cmFjdEtleSA9IEV4dHJhY3RLZXkoKSkNCnsNCiAgICByZXR1
cm4gYmluYXJ5U2VhcmNoSW1wbDxBcnJheUVsZW1lbnRUeXBlLCBLZXlUeXBlLCBBcnJheVR5cGUs
IEV4dHJhY3RLZXksIEtleU1pZ2h0Tm90QmVQcmVzZW50SW5BcnJheT4oYXJyYXksIHNpemUsIGtl
eSwgZXh0cmFjdEtleSk7DQp9DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlFbGVtZW50VHlw
ZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgQXJyYXlUeXBlLCB0eXBlbmFtZSBFeHRyYWN0
S2V5Pg0KaW5saW5lIEFycmF5RWxlbWVudFR5cGUqIGFwcHJveGltYXRlQmluYXJ5U2VhcmNoKEFy
cmF5VHlwZSYgYXJyYXksIHNpemVfdCBzaXplLCBLZXlUeXBlIGtleSwgRXh0cmFjdEtleSBleHRy
YWN0S2V5ID0gRXh0cmFjdEtleSgpKQ0Kew0KICAgIHJldHVybiBiaW5hcnlTZWFyY2hJbXBsPEFy
cmF5RWxlbWVudFR5cGUsIEtleVR5cGUsIEFycmF5VHlwZSwgRXh0cmFjdEtleSwgUmV0dXJuQWRq
YWNlbnRFbGVtZW50SWZLZXlJc05vdFByZXNlbnQ+KGFycmF5LCBzaXplLCBrZXksIGV4dHJhY3RL
ZXkpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIEFycmF5RWxlbWVudFR5cGUsIHR5cGVuYW1l
IEtleVR5cGUsIHR5cGVuYW1lIEFycmF5VHlwZSwgdHlwZW5hbWUgRXh0cmFjdEtleT4NCmlubGlu
ZSBBcnJheUVsZW1lbnRUeXBlKiBiaW5hcnlTZWFyY2goY29uc3QgQXJyYXlUeXBlJiBhcnJheSwg
c2l6ZV90IHNpemUsIEtleVR5cGUga2V5LCBFeHRyYWN0S2V5IGV4dHJhY3RLZXkgPSBFeHRyYWN0
S2V5KCkpDQp7DQogICAgcmV0dXJuIGJpbmFyeVNlYXJjaEltcGw8QXJyYXlFbGVtZW50VHlwZSwg
S2V5VHlwZSwgQXJyYXlUeXBlLCBFeHRyYWN0S2V5LCBLZXlNdXN0QmVQcmVzZW50SW5BcnJheT4o
Y29uc3RfY2FzdDxBcnJheVR5cGUmPihhcnJheSksIHNpemUsIGtleSwgZXh0cmFjdEtleSk7DQp9
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheUVsZW1lbnRUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0
eXBlbmFtZSBBcnJheVR5cGUsIHR5cGVuYW1lIEV4dHJhY3RLZXk+DQppbmxpbmUgQXJyYXlFbGVt
ZW50VHlwZSogdHJ5QmluYXJ5U2VhcmNoKGNvbnN0IEFycmF5VHlwZSYgYXJyYXksIHNpemVfdCBz
aXplLCBLZXlUeXBlIGtleSwgRXh0cmFjdEtleSBleHRyYWN0S2V5ID0gRXh0cmFjdEtleSgpKQ0K
ew0KICAgIHJldHVybiBiaW5hcnlTZWFyY2hJbXBsPEFycmF5RWxlbWVudFR5cGUsIEtleVR5cGUs
IEFycmF5VHlwZSwgRXh0cmFjdEtleSwgS2V5TWlnaHROb3RCZVByZXNlbnRJbkFycmF5Pihjb25z
dF9jYXN0PEFycmF5VHlwZSY+KGFycmF5KSwgc2l6ZSwga2V5LCBleHRyYWN0S2V5KTsNCn0NCnRl
bXBsYXRlPHR5cGVuYW1lIEFycmF5RWxlbWVudFR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVu
YW1lIEFycmF5VHlwZSwgdHlwZW5hbWUgRXh0cmFjdEtleT4NCmlubGluZSBBcnJheUVsZW1lbnRU
eXBlKiBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaChjb25zdCBBcnJheVR5cGUmIGFycmF5LCBzaXpl
X3Qgc2l6ZSwgS2V5VHlwZSBrZXksIEV4dHJhY3RLZXkgZXh0cmFjdEtleSA9IEV4dHJhY3RLZXko
KSkNCnsNCiAgICByZXR1cm4gYmluYXJ5U2VhcmNoSW1wbDxBcnJheUVsZW1lbnRUeXBlLCBLZXlU
eXBlLCBBcnJheVR5cGUsIEV4dHJhY3RLZXksIFJldHVybkFkamFjZW50RWxlbWVudElmS2V5SXNO
b3RQcmVzZW50Pihjb25zdF9jYXN0PEFycmF5VHlwZSY+KGFycmF5KSwgc2l6ZSwga2V5LCBleHRy
YWN0S2V5KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgRWxl
bWVudFR5cGU+DQppbmxpbmUgdm9pZCBpbnNlcnRJbnRvQm91bmRlZFZlY3RvcihWZWN0b3JUeXBl
JiB2ZWN0b3IsIHNpemVfdCBzaXplLCBjb25zdCBFbGVtZW50VHlwZSYgZWxlbWVudCwgc2l6ZV90
IGluZGV4KQ0Kew0KICAgIGZvciAoc2l6ZV90IGkgPSBzaXplOyBpLS0gPiBpbmRleCArIDE7KQ0K
ICAgICAgICB2ZWN0b3JbaV0gPSB2ZWN0b3JbaSAtIDFdOw0KICAgIHZlY3RvcltpbmRleF0gPSBl
bGVtZW50Ow0KfQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBpc0NvbXBpbGF0
aW9uVGhyZWFkKCk7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQpib29sIGlzU3RhdGVsZXNz
TGFtYmRhKCkNCnsNCiAgICByZXR1cm4gc3RkOjppc19lbXB0eTxGdW5jPjo6dmFsdWU7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lIEZ1bmMsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50VHlwZXM+DQpSZXN1bHRUeXBlIGNhbGxTdGF0ZWxlc3NMYW1iZGEoQXJndW1lbnRU
eXBlcyYmLi4uIGFyZ3VtZW50cykNCnsNCiAgICB1aW50NjRfdCBkYXRhWyhzaXplb2YoRnVuYykg
KyBzaXplb2YodWludDY0X3QpIC0gMSkgLyBzaXplb2YodWludDY0X3QpXTsNCiAgICBtZW1zZXQo
ZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsNCiAgICByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8RnVuYyo+
KGRhdGEpKShzdGQ6OmZvcndhcmQ8QXJndW1lbnRUeXBlcz4oYXJndW1lbnRzKS4uLik7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQpib29sIGNoZWNrQW5kU2V0KFQmIGxl
ZnQsIFUgcmlnaHQpDQp7DQogICAgaWYgKGxlZnQgPT0gcmlnaHQpDQogICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICBsZWZ0ID0gcmlnaHQ7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFQ+DQppbmxpbmUgdW5zaWduZWQgY3R6KFQgdmFsdWUpOyANCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVD4NCmJvb2wgZmluZEJpdEluV29yZChUIHdvcmQsIHNpemVfdCYgc3RhcnRPclJl
c3VsdEluZGV4LCBzaXplX3QgZW5kSW5kZXgsIGJvb2wgdmFsdWUpDQp7DQogICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3Vuc2lnbmVkPFQ+Ojp2YWx1ZSwgIlR5cGUgdXNlZCBpbiBmaW5kQml0SW5X
b3JkIG11c3QgYmUgdW5zaWduZWQiKTsNCg0KICAgIGNvbnN0ZXhwciBzaXplX3QgYml0c0luV29y
ZCA9IHNpemVvZih3b3JkKSAqIDg7DQogICAgKCh2b2lkKWJpdHNJbldvcmQpOw0KDQogICAgc2l6
ZV90IGluZGV4ID0gc3RhcnRPclJlc3VsdEluZGV4Ow0KICAgIHdvcmQgPj49IGluZGV4Ow0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdGRMaWJFeHRyYXMuaCINCiAgICB3aGls
ZSAoaW5kZXggPCBlbmRJbmRleCkgew0KICAgICAgICBpZiAoKHdvcmQgJiAxKSA9PSBzdGF0aWNf
Y2FzdDxUPih2YWx1ZSkpIHsNCiAgICAgICAgICAgIHN0YXJ0T3JSZXN1bHRJbmRleCA9IGluZGV4
Ow0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgaW5kZXgrKzsN
CiAgICAgICAgd29yZCA+Pj0gMTsNCiAgICB9DQojbGluZSAzNTQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1N0ZExpYkV4dHJhcy5oIg0K
DQogICAgc3RhcnRPclJlc3VsdEluZGV4ID0gZW5kSW5kZXg7DQogICAgcmV0dXJuIGZhbHNlOw0K
fQ0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzLi4uIEI+DQpzdHJ1Y3QgVmlzaXRvciA6
IFZpc2l0b3I8QT4sIFZpc2l0b3I8Qi4uLj4gew0KICAgIFZpc2l0b3IoQSBhLCBCLi4uIGIpDQog
ICAgICAgIDogVmlzaXRvcjxBPihhKQ0KICAgICAgICAsIFZpc2l0b3I8Qi4uLj4oYi4uLikNCiAg
ICB7DQogICAgfQ0KDQogICAgdXNpbmcgVmlzaXRvcjxBPjo6b3BlcmF0b3IgKCk7DQogICAgdXNp
bmcgVmlzaXRvcjxCLi4uPjo6b3BlcmF0b3IgKCk7DQp9Ow0KICANCnRlbXBsYXRlIDxjbGFzcyBB
Pg0Kc3RydWN0IFZpc2l0b3I8QT4gOiBBIHsNCiAgICBWaXNpdG9yKEEgYSkNCiAgICAgICAgOiBB
KGEpDQogICAgew0KICAgIH0NCg0KICAgIHVzaW5nIEE6Om9wZXJhdG9yKCk7DQp9Ow0KIA0KdGVt
cGxhdGUgPGNsYXNzLi4uIEY+DQpWaXNpdG9yPEYuLi4+IG1ha2VWaXNpdG9yKEYuLi4gZikNCnsN
CiAgICByZXR1cm4gVmlzaXRvcjxGLi4uPihmLi4uKTsNCn0NCg0KbmFtZXNwYWNlIERldGFpbA0K
ew0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdGVtcGxhdGUgPHR5cGVuYW1lLi4uPiBjbGFzcz4N
CiAgICBzdHJ1Y3QgSXNUZW1wbGF0ZV8gOiBzdGQ6OmZhbHNlX3R5cGUNCiAgICB7DQogICAgfTsN
Cg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUcywgdGVtcGxhdGUgPHR5cGVuYW1lLi4uPiBj
bGFzcyBDPg0KICAgIHN0cnVjdCBJc1RlbXBsYXRlXzxDPFRzLi4uPiwgQz4gOiBzdGQ6OnRydWVf
dHlwZQ0KICAgIHsNCiAgICB9Ow0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uPiBjbGFzcyBUZW1wbGF0ZT4NCnN0cnVjdCBJc1RlbXBsYXRlIDogcHVibGlj
IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgRGV0YWlsOjpJc1RlbXBsYXRlXzxULCBUZW1w
bGF0ZT46OnZhbHVlPiB7fTsNCg0KbmFtZXNwYWNlIERldGFpbA0Kew0KICAgIHRlbXBsYXRlIDx0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIEJhc2UsIHR5cGVuYW1lIERlcml2ZWQ+DQogICAg
c3RydWN0IElzQmFzZU9mVGVtcGxhdGVJbXBsDQogICAgew0KICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJncz4NCiAgICAgICAgc3RhdGljIHN0ZDo6dHJ1ZV90eXBlIHRlc3QoQmFzZTxB
cmdzLi4uPiopOw0KICAgICAgICBzdGF0aWMgc3RkOjpmYWxzZV90eXBlIHRlc3Qodm9pZCopOw0K
DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgYm9vbCB2YWx1ZSA9IGRlY2x0eXBlKHRl
c3Qoc3RkOjpkZWNsdmFsPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PERlcml2ZWQ+Ojp0eXBlKj4o
KSkpOjp2YWx1ZTsNCiAgICB9Ow0KfQ0KDQp0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lLi4u
PiBjbGFzcyBCYXNlLCB0eXBlbmFtZSBEZXJpdmVkPg0Kc3RydWN0IElzQmFzZU9mVGVtcGxhdGUg
OiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBEZXRhaWw6OklzQmFzZU9mVGVt
cGxhdGVJbXBsPEJhc2UsIERlcml2ZWQ+Ojp2YWx1ZT4ge307DQoNCg0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSXNUeXBlQ29tcGxl
dGUgPSBmYWxzZTsNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBJ
c1R5cGVDb21wbGV0ZTxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzaXplb2YoVCkpPj4gPSB0cnVl
Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4NCnN0cnVjdCBSZW1vdmVDVkFuZFJlZmVyZW5jZSAgew0K
ICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cmVmZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZSB0eXBlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
SXRlcmF0b3JUeXBlTGVmdCwgdHlwZW5hbWUgSXRlcmF0b3JUeXBlUmlnaHQsIHR5cGVuYW1lIEl0
ZXJhdG9yVHlwZURzdD4NCkl0ZXJhdG9yVHlwZURzdCBtZXJnZURlZHVwbGljYXRlZFNvcnRlZChJ
dGVyYXRvclR5cGVMZWZ0IGxlZnRCZWdpbiwgSXRlcmF0b3JUeXBlTGVmdCBsZWZ0RW5kLCBJdGVy
YXRvclR5cGVSaWdodCByaWdodEJlZ2luLCBJdGVyYXRvclR5cGVSaWdodCByaWdodEVuZCwgSXRl
cmF0b3JUeXBlRHN0IGRzdEJlZ2luKQ0Kew0KICAgIEl0ZXJhdG9yVHlwZUxlZnQgbGVmdEl0ZXIg
PSBsZWZ0QmVnaW47DQogICAgSXRlcmF0b3JUeXBlUmlnaHQgcmlnaHRJdGVyID0gcmlnaHRCZWdp
bjsNCiAgICBJdGVyYXRvclR5cGVEc3QgZHN0SXRlciA9IGRzdEJlZ2luOw0KICAgIA0KICAgIGlm
IChsZWZ0SXRlciA8IGxlZnRFbmQgJiYgcmlnaHRJdGVyIDwgcmlnaHRFbmQpIHsNCiAgICAgICAg
Zm9yICg7Oykgew0KICAgICAgICAgICAgYXV0byBsZWZ0ID0gKmxlZnRJdGVyOw0KICAgICAgICAg
ICAgYXV0byByaWdodCA9ICpyaWdodEl0ZXI7DQogICAgICAgICAgICBpZiAobGVmdCA8IHJpZ2h0
KSB7DQogICAgICAgICAgICAgICAgKmRzdEl0ZXIrKyA9IGxlZnQ7DQogICAgICAgICAgICAgICAg
bGVmdEl0ZXIrKzsNCiAgICAgICAgICAgICAgICBpZiAobGVmdEl0ZXIgPj0gbGVmdEVuZCkNCiAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnQgPT0g
cmlnaHQpIHsNCiAgICAgICAgICAgICAgICAqZHN0SXRlcisrID0gbGVmdDsNCiAgICAgICAgICAg
ICAgICBsZWZ0SXRlcisrOw0KICAgICAgICAgICAgICAgIHJpZ2h0SXRlcisrOw0KICAgICAgICAg
ICAgICAgIGlmIChsZWZ0SXRlciA+PSBsZWZ0RW5kIHx8IHJpZ2h0SXRlciA+PSByaWdodEVuZCkN
CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgICAgICpkc3RJdGVyKysgPSByaWdodDsNCiAgICAgICAgICAgICAgICByaWdodEl0ZXIr
KzsNCiAgICAgICAgICAgICAgICBpZiAocmlnaHRJdGVyID49IHJpZ2h0RW5kKQ0KICAgICAgICAg
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICAN
CiAgICB3aGlsZSAobGVmdEl0ZXIgPCBsZWZ0RW5kKQ0KICAgICAgICAqZHN0SXRlcisrID0gKmxl
ZnRJdGVyKys7DQogICAgd2hpbGUgKHJpZ2h0SXRlciA8IHJpZ2h0RW5kKQ0KICAgICAgICAqZHN0
SXRlcisrID0gKnJpZ2h0SXRlcisrOw0KICAgIA0KICAgIHJldHVybiBkc3RJdGVyOw0KfQ0KDQoN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgLi4uQXJncz4NCmNvbnN0ZXhwciBzdGQ6OnR1cGxlPEFyZ3Mm
Li4uPiB0aWUoQXJncyYuLi4gdmFsdWVzKQ0Kew0KICAgIHJldHVybiBzdGQ6OnR1cGxlPEFyZ3Mm
Li4uPih2YWx1ZXMuLi4pOw0KfQ0KDQp9IA0KDQoNCmVudW0gTm90TnVsbFRhZyB7IE5vdE51bGwg
fTsNCmlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBs
b2NhdGlvbikNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIGxvY2F0aW9uOw0KfQ0KDQpu
YW1lc3BhY2Ugc3RkIHsNCg0KdGVtcGxhdGU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXJUYWcsIHR5
cGVuYW1lIFQ+DQpfX2ZvcmNlaW5saW5lIGNvbnN0ZXhwciB0eXBlbmFtZSByZW1vdmVfcmVmZXJl
bmNlPFQ+Ojp0eXBlJiYgbW92ZShUJiYgdmFsdWUpDQp7DQogICAgc3RhdGljX2Fzc2VydChpc19s
dmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgIlQgaXMgbm90IGFuIGx2YWx1ZSByZWZlcmVuY2U7
IG1vdmUoKSBpcyB1bm5lY2Vzc2FyeS4iKTsNCg0KICAgIHVzaW5nIE5vblJlZlF1YWxpZmllZFR5
cGUgPSB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlOw0KICAgIHN0YXRpY19hc3Nl
cnQoIWlzX2NvbnN0PE5vblJlZlF1YWxpZmllZFR5cGU+Ojp2YWx1ZSwgIlQgaXMgY29uc3QgcXVh
bGlmaWVkLiIpOw0KDQogICAgcmV0dXJuIG1vdmUoZm9yd2FyZDxUPih2YWx1ZSkpOw0KfQ0KDQp9
IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4N
Cl9fZm9yY2VpbmxpbmUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZShBcmdzJiYuLi4gYXJncykN
CnsNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjp3ZWJraXRGYXN0
TWFsbG9jZWQsIGludD46OnZhbHVlLCAiVCBpcyBGYXN0TWFsbG9jZWQiKTsNCiAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOw0KfQ0KDQp0
ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPg0KX19mb3JjZWlubGluZSBkZWNsdHlwZShh
dXRvKSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykNCnsN
CiAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0VHlwZSwgc2l6ZV90Li4uIElzLCB0
eXBlbmFtZSAuLi5BcmdzPg0KY29uc3RleHByIGF1dG8gY29uc3RydWN0Rml4ZWRTaXplQXJyYXlX
aXRoQXJndW1lbnRzSW1wbChzdGQ6OmluZGV4X3NlcXVlbmNlPElzLi4uPiwgQXJncyYmLi4uIGFy
Z3MpIC0+IHN0ZDo6YXJyYXk8UmVzdWx0VHlwZSwgc2l6ZW9mLi4uKElzKT4NCnsNCiAgICByZXR1
cm4geyAoKHZvaWQpSXMsIFJlc3VsdFR5cGUgeyBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4g
fSkuLi4gfTsNCn0NCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlLCBzaXplX3QgTiwg
dHlwZW5hbWUgLi4uQXJncz4NCmNvbnN0ZXhwciBhdXRvIGNvbnN0cnVjdEZpeGVkU2l6ZUFycmF5
V2l0aEFyZ3VtZW50cyhBcmdzJiYuLi4gYXJncykgLT4gZGVjbHR5cGUoYXV0bykNCnsNCiAgICBh
dXRvIHR1cGxlID0gc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPE4+KCk7DQogICAgcmV0dXJuIGNv
bnN0cnVjdEZpeGVkU2l6ZUFycmF5V2l0aEFyZ3VtZW50c0ltcGw8UmVzdWx0VHlwZT4odHVwbGUs
IHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7DQp9DQoNCn0gDQoNCg0KDQp1c2luZyBXVEY6
OktCOw0KdXNpbmcgV1RGOjpNQjsNCnVzaW5nIFdURjo6R0I7DQp1c2luZyBXVEY6OmFwcHJveGlt
YXRlQmluYXJ5U2VhcmNoOw0KdXNpbmcgV1RGOjpiaW5hcnlTZWFyY2g7DQp1c2luZyBXVEY6OmJp
dHdpc2VfY2FzdDsNCnVzaW5nIFdURjo6Y2FsbFN0YXRlbGVzc0xhbWJkYTsNCnVzaW5nIFdURjo6
Y2hlY2tBbmRTZXQ7DQp1c2luZyBXVEY6OmZpbmRCaXRJbldvcmQ7DQp1c2luZyBXVEY6Omluc2Vy
dEludG9Cb3VuZGVkVmVjdG9yOw0KdXNpbmcgV1RGOjppc0NvbXBpbGF0aW9uVGhyZWFkOw0KdXNp
bmcgV1RGOjppc1BvaW50ZXJBbGlnbmVkOw0KdXNpbmcgV1RGOjppc1N0YXRlbGVzc0xhbWJkYTsN
CnVzaW5nIFdURjo6aXM4Qnl0ZUFsaWduZWQ7DQp1c2luZyBXVEY6Om1lcmdlRGVkdXBsaWNhdGVk
U29ydGVkOw0KdXNpbmcgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mOw0KdXNpbmcgV1RGOjpzYWZl
Q2FzdDsNCnVzaW5nIFdURjo6dHJ5QmluYXJ5U2VhcmNoOw0KdXNpbmcgV1RGOjptYWtlVW5pcXVl
Ow0KdXNpbmcgV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazsNCnVzaW5nIFdU
Rjo6Y29uc3RydWN0Rml4ZWRTaXplQXJyYXlXaXRoQXJndW1lbnRzOw0KI2xpbmUgMjcgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Zhc3RN
YWxsb2MuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDc2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9GYXN0TWFsbG9jLmgiDQoNCmNsYXNzIFRyeU1hbGxvY1JldHVyblZh
bHVlIHsNCnB1YmxpYzoNCiAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lkKik7DQogICAgVHJ5
TWFsbG9jUmV0dXJuVmFsdWUoVHJ5TWFsbG9jUmV0dXJuVmFsdWUmJik7DQogICAgflRyeU1hbGxv
Y1JldHVyblZhbHVlKCk7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBnZXRWYWx1ZShU
KiYpIDsNCnByaXZhdGU6DQogICAgdm9pZCBvcGVyYXRvcj0oVHJ5TWFsbG9jUmV0dXJuVmFsdWUm
JikgPSBkZWxldGU7DQogICAgbXV0YWJsZSB2b2lkKiBtX2RhdGE7DQp9Ow0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgYm9vbCBpc0Zhc3RNYWxsb2NFbmFibGVkKCk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KSA7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgdm9pZCogZmFzdFplcm9lZE1hbGxvYyhzaXplX3QpIDsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXpl
KSA7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVf
dCkgOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciop
IDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RN
YWxsb2Moc2l6ZV90KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVfdCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVHJ5
TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVf
dCBlbGVtZW50U2l6ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVHJ5TWFsbG9jUmV0dXJuVmFs
dWUgdHJ5RmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB2b2lkIGZhc3RGcmVlKHZvaWQqKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCog
ZmFzdEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KSA7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdm9pZCogdHJ5RmFzdEFsaWduZWRNYWxsb2Moc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGZhc3RBbGlnbmVkRnJlZSh2b2lk
Kik7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qg
dm9pZCopOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgZmFzdE1hbGxvY0dvb2RT
aXplKHNpemVfdCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHJlbGVhc2VGYXN0TWFs
bG9jRnJlZU1lbW9yeSgpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcmVsZWFzZUZhc3RN
YWxsb2NGcmVlTWVtb3J5Rm9yVGhpc1RocmVhZCgpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCBmYXN0Q29tbWl0QWxpZ25lZE1lbW9yeSh2b2lkKiwgc2l6ZV90KTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB2b2lkIGZhc3REZWNvbW1pdEFsaWduZWRNZW1vcnkodm9pZCosIHNpemVfdCk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGZhc3RFbmFibGVNaW5pTW9kZSgpOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBmYXN0RGlzYWJsZVNjYXZlbmdlcigpOw0KDQpzdHJ1
Y3QgRmFzdE1hbGxvY1N0YXRpc3RpY3Mgew0KICAgIHNpemVfdCByZXNlcnZlZFZNQnl0ZXM7DQog
ICAgc2l6ZV90IGNvbW1pdHRlZFZNQnl0ZXM7DQogICAgc2l6ZV90IGZyZWVMaXN0Qnl0ZXM7DQp9
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NT
dGF0aXN0aWNzKCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGZhc3RNYWxsb2NEdW1w
TWFsbG9jU3RhdHMoKTsNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEFsbG9jQWxp
Z25tZW50SW50ZWdlcjsNCg0KaW5saW5lIFRyeU1hbGxvY1JldHVyblZhbHVlOjpUcnlNYWxsb2NS
ZXR1cm5WYWx1ZSh2b2lkKiBkYXRhKQ0KICAgIDogbV9kYXRhKGRhdGEpDQp7DQp9DQoNCmlubGlu
ZSBUcnlNYWxsb2NSZXR1cm5WYWx1ZTo6VHJ5TWFsbG9jUmV0dXJuVmFsdWUoVHJ5TWFsbG9jUmV0
dXJuVmFsdWUmJiBzb3VyY2UpDQogICAgOiBtX2RhdGEoc291cmNlLm1fZGF0YSkNCnsNCiAgICBz
b3VyY2UubV9kYXRhID0gbnVsbHB0cjsNCn0NCg0KaW5saW5lIFRyeU1hbGxvY1JldHVyblZhbHVl
Ojp+VHJ5TWFsbG9jUmV0dXJuVmFsdWUoKQ0Kew0KICAgICgodm9pZCkwKTsNCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgVHJ5TWFsbG9jUmV0dXJuVmFsdWU6OmdldFZhbHVl
KFQqJiBkYXRhKQ0Kew0KICAgIGRhdGEgPSBzdGF0aWNfY2FzdDxUKj4obV9kYXRhKTsNCiAgICBt
X2RhdGEgPSBudWxscHRyOw0KICAgIHJldHVybiBkYXRhOw0KfQ0KDQoNCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVD4NCmNsYXNzIEZhc3RBbGxvY2F0b3Igew0KcHVibGljOg0KICAgIHVzaW5nIHZhbHVl
X3R5cGUgPSBUOw0KDQogICAgRmFzdEFsbG9jYXRvcigpID0gZGVmYXVsdDsNCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IEZhc3RBbGxvY2F0b3IoY29uc3QgRmFzdEFsbG9jYXRvcjxVPiYpIHsg
fQ0KDQogICAgVCogYWxsb2NhdGUoc2l6ZV90IGNvdW50KQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291bnQpKTsNCiAg
ICB9DQoNCiAgICB2b2lkIGRlYWxsb2NhdGUoVCogcG9pbnRlciwgc2l6ZV90KQ0KICAgIHsNCiAg
ICAgICAgZmFzdEZyZWUocG9pbnRlcik7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRmFzdE1hbGxvYy5oIg0KfTsNCg0K
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGYXN0QWxsb2NhdG9yPFQ+JiwgY29uc3QgRmFzdEFsbG9jYXRvcjxVPiYpIHsgcmV0dXJu
IHRydWU7IH0NCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRmFzdEFsbG9jYXRvcjxUPiYsIGNvbnN0IEZhc3RBbGxvY2F0b3I8VT4m
KSB7IHJldHVybiBmYWxzZTsgfQ0KDQpzdHJ1Y3QgRmFzdE1hbGxvYyB7DQogICAgc3RhdGljIHZv
aWQqIG1hbGxvYyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gZmFzdE1hbGxvYyhzaXplKTsgfQ0KICAg
IA0KICAgIHN0YXRpYyB2b2lkKiB0cnlNYWxsb2Moc2l6ZV90IHNpemUpDQogICAgew0KICAgICAg
ICBhdXRvIHJlc3VsdCA9IHRyeUZhc3RNYWxsb2Moc2l6ZSk7DQogICAgICAgIHZvaWQqIHJlYWxS
ZXN1bHQ7DQogICAgICAgIGlmIChyZXN1bHQuZ2V0VmFsdWUocmVhbFJlc3VsdCkpDQogICAgICAg
ICAgICByZXR1cm4gcmVhbFJlc3VsdDsNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0K
DQogICAgc3RhdGljIHZvaWQqIHplcm9lZE1hbGxvYyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gZmFz
dFplcm9lZE1hbGxvYyhzaXplKTsgfQ0KDQogICAgc3RhdGljIHZvaWQqIHRyeVplcm9lZE1hbGxv
YyhzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIGF1dG8gcmVzdWx0ID0gdHJ5RmFzdFplcm9l
ZE1hbGxvYyhzaXplKTsNCiAgICAgICAgdm9pZCogcmVhbFJlc3VsdDsNCiAgICAgICAgaWYgKHJl
c3VsdC5nZXRWYWx1ZShyZWFsUmVzdWx0KSkNCiAgICAgICAgICAgIHJldHVybiByZWFsUmVzdWx0
Ow0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHZvaWQq
IHJlYWxsb2Modm9pZCogcCwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGZhc3RSZWFsbG9jKHAsIHNp
emUpOyB9DQoNCiAgICBzdGF0aWMgdm9pZCogdHJ5UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qgc2l6
ZSkNCiAgICB7DQogICAgICAgIGF1dG8gcmVzdWx0ID0gdHJ5RmFzdFJlYWxsb2MocCwgc2l6ZSk7
DQogICAgICAgIHZvaWQqIHJlYWxSZXN1bHQ7DQogICAgICAgIGlmIChyZXN1bHQuZ2V0VmFsdWUo
cmVhbFJlc3VsdCkpDQogICAgICAgICAgICByZXR1cm4gcmVhbFJlc3VsdDsNCiAgICAgICAgcmV0
dXJuIG51bGxwdHI7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyB2b2lkIGZyZWUodm9pZCogcCkg
eyBmYXN0RnJlZShwKTsgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnN0cnVjdCBGYXN0
RnJlZSB7DQogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
VD46OnZhbHVlLCAiIik7DQoNCiAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QN
CiAgICB7DQogICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y3Y8VD46OnR5cGUqPihwb2ludGVyKSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4NCnN0cnVjdCBGYXN0RnJlZTxUW10+IHsNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsNCg0KICAgIHZvaWQgb3BlcmF0b3Io
KShUKiBwb2ludGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsNCiAgICB9DQp9Ow0K
DQp9IA0KDQoNCg0KI2xpbmUgMzAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9GYXN0TWFsbG9jLmgiDQoNCnVzaW5nIFdURjo6RmFzdEFs
bG9jYXRvcjsNCnVzaW5nIFdURjo6RmFzdE1hbGxvYzsNCnVzaW5nIFdURjo6RmFzdEZyZWU7DQp1
c2luZyBXVEY6OmlzRmFzdE1hbGxvY0VuYWJsZWQ7DQp1c2luZyBXVEY6OmZhc3RDYWxsb2M7DQp1
c2luZyBXVEY6OmZhc3RGcmVlOw0KdXNpbmcgV1RGOjpmYXN0TWFsbG9jOw0KdXNpbmcgV1RGOjpm
YXN0TWFsbG9jR29vZFNpemU7DQp1c2luZyBXVEY6OmZhc3RNYWxsb2NTaXplOw0KdXNpbmcgV1RG
OjpmYXN0UmVhbGxvYzsNCnVzaW5nIFdURjo6ZmFzdFN0ckR1cDsNCnVzaW5nIFdURjo6ZmFzdFpl
cm9lZE1hbGxvYzsNCnVzaW5nIFdURjo6dHJ5RmFzdEFsaWduZWRNYWxsb2M7DQp1c2luZyBXVEY6
OnRyeUZhc3RDYWxsb2M7DQp1c2luZyBXVEY6OnRyeUZhc3RNYWxsb2M7DQp1c2luZyBXVEY6OnRy
eUZhc3RaZXJvZWRNYWxsb2M7DQp1c2luZyBXVEY6OmZhc3RBbGlnbmVkTWFsbG9jOw0KdXNpbmcg
V1RGOjpmYXN0QWxpZ25lZEZyZWU7DQoNCg0KDQojbGluZSAzMjQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Zhc3RNYWxsb2MuaCINCg0K
I2xpbmUgMzI2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9GYXN0TWFsbG9jLmgiDQoNCg0KDQojbGluZSAzMzAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Zhc3RNYWxsb2MuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA0MjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL0Zhc3RNYWxsb2MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDQzNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvRmFzdE1hbGxvYy5oIg0KI2xpbmUgMzkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQojbGluZSA0MCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxjb25maWcu
aCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvRGlzYWxsb3dDVHlwZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4MSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRGlzYWxsb3dDVHlwZS5o
Ig0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcY29uZmlnLmgiDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nQ291bnRlci5jcHAiDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXFNhbXBsaW5nQ291bnRlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpT
QyB7DQoNCg0KDQoNCg0KY2xhc3MgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgew0KICAgIGZyaWVu
ZCBjbGFzcyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI7DQpwdWJsaWM6DQogICAgdm9pZCBjb3Vu
dCh1aW50MzJfdCBjb3VudCA9IDEpDQogICAgew0KICAgICAgICBtX2NvdW50ZXIgKz0gY291bnQ7
DQogICAgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIGR1bXAoKTsN
Cg0KICAgIGludDY0X3QqIGFkZHJlc3NPZkNvdW50ZXIoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9
DQoNCnByb3RlY3RlZDoNCiAgICANCiAgICB2b2lkIGluaXQoY29uc3QgY2hhciogbmFtZSkNCiAg
ICB7DQogICAgICAgIG1fY291bnRlciA9IDA7DQogICAgICAgIG1fbmFtZSA9IG5hbWU7DQoNCiAg
ICAgICAgDQogICAgICAgIA0KICAgICAgICBtX25leHQgPSBzX2Fic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyQ2hhaW47DQogICAgICAgIHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbi0+bV9yZWZl
cmVyID0gJm1fbmV4dDsNCiAgICAgICAgDQogICAgICAgIHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXJDaGFpbiA9IHRoaXM7DQogICAgICAgIG1fcmVmZXJlciA9ICZzX2Fic3RyYWN0U2FtcGxpbmdD
b3VudGVyQ2hhaW47DQogICAgfQ0KDQogICAgaW50NjRfdCBtX2NvdW50ZXI7DQogICAgY29uc3Qg
Y2hhciogbV9uYW1lOw0KICAgIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBtX25leHQ7DQogICAg
DQogICAgDQogICAgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqKiBtX3JlZmVyZXI7DQogICAgDQog
ICAgc3RhdGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyIHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXJDaGFpbkVuZDsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIEFic3RyYWN0U2Ft
cGxpbmdDb3VudGVyKiBzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47DQogICAgc3RhdGlj
IGJvb2wgc19jb21wbGV0ZWQ7DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE3MiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTYW1wbGlu
Z0NvdW50ZXIuaCINCg0KfSANCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcCINCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCnZvaWQgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmR1bXAoKQ0Kew0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcCINCn0NCg0KQWJz
dHJhY3RTYW1wbGluZ0NvdW50ZXIgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OnNfYWJzdHJhY3RT
YW1wbGluZ0NvdW50ZXJDaGFpbkVuZDsNCkFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBBYnN0cmFj
dFNhbXBsaW5nQ291bnRlcjo6c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluID0gJnNfYWJz
dHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbkVuZDsNCmJvb2wgQWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXI6OnNfY29tcGxldGVkID0gZmFsc2U7DQoNCn0gDQoNCiNsaW5lIDIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXEphdmFTY3JpcHRDb3JlXFxEZXJpdmVkU291cmNlc1xc
dW5pZmllZC1zb3VyY2VzXFxVbmlmaWVkU291cmNlLWYyZTE4ZmZjLTMyLmNwcCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxjb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxjb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxjb25maWcuaCINCg0KDQojbGluZSAyNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxTYW1wbGluZ1Byb2ZpbGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxpbnRlcnByZXRl
clxcQ2FsbEZyYW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJldGVyXFxBYnN0cmFjdFBDLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxc
RXhlY3V0YWJsZUFsbG9jYXRvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEZhc3RKSVRQZXJt
aXNzaW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDgyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcRmFzdEpJVFBlcm1pc3Npb25zLmgiDQoNCmNvbnN0
ZXhwciBib29sIGZhc3RKSVRQZXJtaXNzaW9uc0lzU3VwcG9ydGVkKCkNCnsNCiAgICByZXR1cm4g
ZmFsc2U7DQp9DQoNCmNvbnN0ZXhwciBib29sIHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpDQp7DQog
ICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQpfX2RlY2xzcGVjKG5vcmV0dXJuKSBfX2ZvcmNlaW5saW5l
IHZvaWQgdGhyZWFkU2VsZlJlc3RyaWN0UldYVG9SVygpDQp7DQogICAgV1RGQ3Jhc2goKTsNCn0N
Cg0KX19kZWNsc3BlYyhub3JldHVybikgX19mb3JjZWlubGluZSB2b2lkIHRocmVhZFNlbGZSZXN0
cmljdFJXWFRvUlgoKQ0Kew0KICAgIFdURkNyYXNoKCk7DQp9DQoNCiNsaW5lIDEwNCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEZh
c3RKSVRQZXJtaXNzaW9ucy5oIg0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxFeGVjdXRhYmxlQWxsb2NhdG9yLmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcSklUQ29tcGlsYXRpb25FZmZvcnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpl
bnVtIEpJVENvbXBpbGF0aW9uRWZmb3J0IHsNCiAgICBKSVRDb21waWxhdGlvbkNhbkZhaWwsDQog
ICAgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZA0KfTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NDb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcT3B0aW9uc0xpc3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcR0NMb2dnaW5nLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEhlYXA7DQoNCmNsYXNzIEdDTG9nZ2luZyB7
DQpwdWJsaWM6DQogICAgZW51bSBMZXZlbCA6IHVpbnQ4X3Qgew0KICAgICAgICBOb25lID0gMCwN
CiAgICAgICAgQmFzaWMsDQogICAgICAgIFZlcmJvc2UNCiAgICB9Ow0KDQogICAgc3RhdGljIGNv
bnN0IGNoYXIqIGxldmVsQXNTdHJpbmcoTGV2ZWwpOw0KICAgIHN0YXRpYyB2b2lkIGR1bXBPYmpl
Y3RHcmFwaChIZWFwKik7DQp9Ow0KDQp0eXBlZGVmIEdDTG9nZ2luZzo6TGV2ZWwgZ2NMb2dMZXZl
bDsNCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIFByaW50U3RyZWFtOw0KDQp2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkdDTG9nZ2luZzo6TGV2ZWwpOw0KDQp9
IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcT3B0aW9uc0xpc3QuaCINCg0KdXNpbmcgV1RGOjpQcmludFN0cmVhbTsN
Cg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQojbGluZSAzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPcHRpb25zTGlzdC5oIg0KDQoj
bGluZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxPcHRpb25zTGlzdC5oIg0KDQoNCg0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcT3B0aW9uc0xpc3Qu
aCINCmNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7
DQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxPcHRpb25zTGlzdC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7DQogICAgU2FtZU9wdGlvbiwN
CiAgICBJbnZlcnRlZE9wdGlvbiwNCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZW51bSBFeHBlcmlt
ZW50YWxPcHRpb25GbGFncyB7DQogICAgTExJbnRBbmRCYXNlbGluZU9ubHkgPSAwLA0KICAgIFN1
cHBvcnRzREZHID0gMSA8PCAwLA0KICAgIFN1cHBvcnRzRlRMID0gMSA8PCAxLA0KfTsNCg0KDQoN
Cg0KY29uc3RleHByIHNpemVfdCBjb3VudE51bWJlck9mSlNDT3B0aW9ucygpDQp7DQoNCiAgICBz
aXplX3QgY291bnQgPSAwOw0KICAgIGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50
Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7
IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNv
dW50Kys7IGNvdW50Kys7IGNvdW50Kys7IGNvdW50Kys7Ow0KICAgIHJldHVybiBjb3VudDsNCg0K
fQ0KDQpjb25zdGV4cHIgc2l6ZV90IE51bWJlck9mT3B0aW9ucyA9IGNvdW50TnVtYmVyT2ZKU0NP
cHRpb25zKCk7DQoNCmNsYXNzIE9wdGlvblJhbmdlIHsNCnByaXZhdGU6DQogICAgZW51bSBSYW5n
ZVN0YXRlIHsgVW5pbml0aWFsaXplZCwgSW5pdEVycm9yLCBOb3JtYWwsIEludmVydGVkIH07DQpw
dWJsaWM6DQogICAgT3B0aW9uUmFuZ2UmIG9wZXJhdG9yPShpbnQgdmFsdWUpDQogICAgew0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIGRvIHsgaWYgKCghKCF2YWx1ZSkpKSBkbyB7IFdURjo6
aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNy
YXNoV2l0aEluZm8oNTkyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxPcHRpb25zTGlzdC5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxICk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQoNCiAgICAgICAgbV9zdGF0ZSA9IFVuaW5p
dGlhbGl6ZWQ7DQogICAgICAgIG1fcmFuZ2VTdHJpbmcgPSBudWxscHRyOw0KICAgICAgICBtX2xv
d0xpbWl0ID0gMDsNCiAgICAgICAgbV9oaWdoTGltaXQgPSAwOw0KICAgICAgICByZXR1cm4gKnRo
aXM7DQogICAgfQ0KDQogICAgYm9vbCBpbml0KGNvbnN0IGNoYXIqKTsNCiAgICBib29sIGlzSW5S
YW5nZSh1bnNpZ25lZCk7DQogICAgY29uc3QgY2hhciogcmFuZ2VTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiAobV9zdGF0ZSA+IEluaXRFcnJvcikgPyBtX3JhbmdlU3RyaW5nIDogc19udWxsUmFuZ2VT
dHI7IH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7DQoNCnBy
aXZhdGU6DQogICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfbnVsbFJhbmdlU3RyOw0KDQog
ICAgUmFuZ2VTdGF0ZSBtX3N0YXRlOw0KICAgIGNvbnN0IGNoYXIqIG1fcmFuZ2VTdHJpbmc7DQog
ICAgdW5zaWduZWQgbV9sb3dMaW1pdDsNCiAgICB1bnNpZ25lZCBtX2hpZ2hMaW1pdDsNCn07DQoN
CnN0cnVjdCBPcHRpb25zU3RvcmFnZSB7DQogICAgdXNpbmcgQm9vbCA9IGJvb2w7DQogICAgdXNp
bmcgVW5zaWduZWQgPSB1bnNpZ25lZDsNCiAgICB1c2luZyBEb3VibGUgPSBkb3VibGU7DQogICAg
dXNpbmcgSW50MzIgPSBpbnQzMl90Ow0KICAgIHVzaW5nIFNpemUgPSBzaXplX3Q7DQogICAgdXNp
bmcgT3B0aW9uUmFuZ2UgPSBKU0M6Ok9wdGlvblJhbmdlOw0KICAgIHVzaW5nIE9wdGlvblN0cmlu
ZyA9IGNvbnN0IGNoYXIqOw0KICAgIHVzaW5nIEdDTG9nTGV2ZWwgPSBHQ0xvZ2dpbmc6OkxldmVs
Ow0KDQogICAgYm9vbCBhbGxvd1VuZmluYWxpemVkQWNjZXNzOw0KICAgIGJvb2wgaXNGaW5hbGl6
ZWQ7DQoNCg0KDQoNCkJvb2wgdXNlS2VyblRDU007IEJvb2wgdXNlS2VyblRDU01EZWZhdWx0OyBC
b29sIHZhbGlkYXRlT3B0aW9uczsgQm9vbCB2YWxpZGF0ZU9wdGlvbnNEZWZhdWx0OyBVbnNpZ25l
ZCBkdW1wT3B0aW9uczsgVW5zaWduZWQgZHVtcE9wdGlvbnNEZWZhdWx0OyBPcHRpb25TdHJpbmcg
Y29uZmlnRmlsZTsgT3B0aW9uU3RyaW5nIGNvbmZpZ0ZpbGVEZWZhdWx0OyBCb29sIHVzZUxMSW50
OyBCb29sIHVzZUxMSW50RGVmYXVsdDsgQm9vbCB1c2VKSVQ7IEJvb2wgdXNlSklURGVmYXVsdDsg
Qm9vbCB1c2VCYXNlbGluZUpJVDsgQm9vbCB1c2VCYXNlbGluZUpJVERlZmF1bHQ7IEJvb2wgdXNl
REZHSklUOyBCb29sIHVzZURGR0pJVERlZmF1bHQ7IEJvb2wgdXNlUmVnRXhwSklUOyBCb29sIHVz
ZVJlZ0V4cEpJVERlZmF1bHQ7IEJvb2wgdXNlRE9NSklUOyBCb29sIHVzZURPTUpJVERlZmF1bHQ7
IEJvb2wgcmVwb3J0TXVzdFN1Y2NlZWRFeGVjdXRhYmxlQWxsb2NhdGlvbnM7IEJvb2wgcmVwb3J0
TXVzdFN1Y2NlZWRFeGVjdXRhYmxlQWxsb2NhdGlvbnNEZWZhdWx0OyBVbnNpZ25lZCBtYXhQZXJU
aHJlYWRTdGFja1VzYWdlOyBVbnNpZ25lZCBtYXhQZXJUaHJlYWRTdGFja1VzYWdlRGVmYXVsdDsg
VW5zaWduZWQgc29mdFJlc2VydmVkWm9uZVNpemU7IFVuc2lnbmVkIHNvZnRSZXNlcnZlZFpvbmVT
aXplRGVmYXVsdDsgVW5zaWduZWQgcmVzZXJ2ZWRab25lU2l6ZTsgVW5zaWduZWQgcmVzZXJ2ZWRa
b25lU2l6ZURlZmF1bHQ7IEJvb2wgY3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5OyBCb29sIGNyYXNo
T25EaXNhbGxvd2VkVk1FbnRyeURlZmF1bHQ7IEJvb2wgY3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1l
bW9yeTsgQm9vbCBjcmFzaElmQ2FudEFsbG9jYXRlSklUTWVtb3J5RGVmYXVsdDsgVW5zaWduZWQg
aml0TWVtb3J5UmVzZXJ2YXRpb25TaXplOyBVbnNpZ25lZCBqaXRNZW1vcnlSZXNlcnZhdGlvblNp
emVEZWZhdWx0OyBCb29sIGZvcmNlQ29kZUJsb2NrTGl2ZW5lc3M7IEJvb2wgZm9yY2VDb2RlQmxv
Y2tMaXZlbmVzc0RlZmF1bHQ7IEJvb2wgZm9yY2VJQ0ZhaWx1cmU7IEJvb2wgZm9yY2VJQ0ZhaWx1
cmVEZWZhdWx0OyBVbnNpZ25lZCByZXBhdGNoQ291bnRGb3JDb29sRG93bjsgVW5zaWduZWQgcmVw
YXRjaENvdW50Rm9yQ29vbERvd25EZWZhdWx0OyBVbnNpZ25lZCBpbml0aWFsQ29vbERvd25Db3Vu
dDsgVW5zaWduZWQgaW5pdGlhbENvb2xEb3duQ291bnREZWZhdWx0OyBVbnNpZ25lZCByZXBhdGNo
QnVmZmVyaW5nQ291bnRkb3duOyBVbnNpZ25lZCByZXBhdGNoQnVmZmVyaW5nQ291bnRkb3duRGVm
YXVsdDsgQm9vbCBkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzOyBCb29sIGR1bXBHZW5lcmF0ZWRCeXRl
Y29kZXNEZWZhdWx0OyBCb29sIGR1bXBHZW5lcmF0ZWRXYXNtQnl0ZWNvZGVzOyBCb29sIGR1bXBH
ZW5lcmF0ZWRXYXNtQnl0ZWNvZGVzRGVmYXVsdDsgQm9vbCBkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jl
c3VsdHM7IEJvb2wgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzRGVmYXVsdDsgQm9vbCB2YWxp
ZGF0ZUJ5dGVjb2RlOyBCb29sIHZhbGlkYXRlQnl0ZWNvZGVEZWZhdWx0OyBCb29sIGZvcmNlRGVi
dWdnZXJCeXRlY29kZUdlbmVyYXRpb247IEJvb2wgZm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJh
dGlvbkRlZmF1bHQ7IEJvb2wgZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbjsg
Qm9vbCBkdW1wQnl0ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uRGVmYXVsdDsgQm9vbCB1
c2VGdW5jdGlvbkRvdEFyZ3VtZW50czsgQm9vbCB1c2VGdW5jdGlvbkRvdEFyZ3VtZW50c0RlZmF1
bHQ7IEJvb2wgdXNlVGFpbENhbGxzOyBCb29sIHVzZVRhaWxDYWxsc0RlZmF1bHQ7IEJvb2wgb3B0
aW1pemVSZWN1cnNpdmVUYWlsQ2FsbHM7IEJvb2wgb3B0aW1pemVSZWN1cnNpdmVUYWlsQ2FsbHNE
ZWZhdWx0OyBCb29sIGFsd2F5c1VzZVNoYWRvd0NoaWNrZW47IEJvb2wgYWx3YXlzVXNlU2hhZG93
Q2hpY2tlbkRlZmF1bHQ7IFVuc2lnbmVkIHNoYWRvd0NoaWNrZW5Mb2dTaXplOyBVbnNpZ25lZCBz
aGFkb3dDaGlja2VuTG9nU2l6ZURlZmF1bHQ7IFVuc2lnbmVkIHNoYWRvd0NoaWNrZW5NYXhUYWls
RGVsZXRlZEZyYW1lc1NpemU7IFVuc2lnbmVkIHNoYWRvd0NoaWNrZW5NYXhUYWlsRGVsZXRlZEZy
YW1lc1NpemVEZWZhdWx0OyBCb29sIHVzZUl0ZXJhdGlvbkludHJpbnNpY3M7IEJvb2wgdXNlSXRl
cmF0aW9uSW50cmluc2ljc0RlZmF1bHQ7IEJvb2wgdXNlT1NMb2c7IEJvb2wgdXNlT1NMb2dEZWZh
dWx0OyBCb29sIGR1bXBEaXNhc3NlbWJseTsgQm9vbCBkdW1wRGlzYXNzZW1ibHlEZWZhdWx0OyBC
b29sIGFzeW5jRGlzYXNzZW1ibHk7IEJvb2wgYXN5bmNEaXNhc3NlbWJseURlZmF1bHQ7IEJvb2wg
ZHVtcERGR0Rpc2Fzc2VtYmx5OyBCb29sIGR1bXBERkdEaXNhc3NlbWJseURlZmF1bHQ7IEJvb2wg
ZHVtcEZUTERpc2Fzc2VtYmx5OyBCb29sIGR1bXBGVExEaXNhc3NlbWJseURlZmF1bHQ7IEJvb2wg
ZHVtcFJlZ0V4cERpc2Fzc2VtYmx5OyBCb29sIGR1bXBSZWdFeHBEaXNhc3NlbWJseURlZmF1bHQ7
IEJvb2wgZHVtcFdhc21EaXNhc3NlbWJseTsgQm9vbCBkdW1wV2FzbURpc2Fzc2VtYmx5RGVmYXVs
dDsgQm9vbCBkdW1wQkJRRGlzYXNzZW1ibHk7IEJvb2wgZHVtcEJCUURpc2Fzc2VtYmx5RGVmYXVs
dDsgQm9vbCBkdW1wT01HRGlzYXNzZW1ibHk7IEJvb2wgZHVtcE9NR0Rpc2Fzc2VtYmx5RGVmYXVs
dDsgQm9vbCBsb2dKSVRDb2RlRm9yUGVyZjsgQm9vbCBsb2dKSVRDb2RlRm9yUGVyZkRlZmF1bHQ7
IE9wdGlvblJhbmdlIGJ5dGVjb2RlUmFuZ2VUb0pJVENvbXBpbGU7IE9wdGlvblJhbmdlIGJ5dGVj
b2RlUmFuZ2VUb0pJVENvbXBpbGVEZWZhdWx0OyBPcHRpb25SYW5nZSBieXRlY29kZVJhbmdlVG9E
RkdDb21waWxlOyBPcHRpb25SYW5nZSBieXRlY29kZVJhbmdlVG9ERkdDb21waWxlRGVmYXVsdDsg
T3B0aW9uUmFuZ2UgYnl0ZWNvZGVSYW5nZVRvRlRMQ29tcGlsZTsgT3B0aW9uUmFuZ2UgYnl0ZWNv
ZGVSYW5nZVRvRlRMQ29tcGlsZURlZmF1bHQ7IE9wdGlvblN0cmluZyBqaXRBbGxvd2xpc3Q7IE9w
dGlvblN0cmluZyBqaXRBbGxvd2xpc3REZWZhdWx0OyBPcHRpb25TdHJpbmcgZGZnQWxsb3dsaXN0
OyBPcHRpb25TdHJpbmcgZGZnQWxsb3dsaXN0RGVmYXVsdDsgT3B0aW9uU3RyaW5nIGZ0bEFsbG93
bGlzdDsgT3B0aW9uU3RyaW5nIGZ0bEFsbG93bGlzdERlZmF1bHQ7IEJvb2wgZHVtcFNvdXJjZUF0
REZHVGltZTsgQm9vbCBkdW1wU291cmNlQXRERkdUaW1lRGVmYXVsdDsgQm9vbCBkdW1wQnl0ZWNv
ZGVBdERGR1RpbWU7IEJvb2wgZHVtcEJ5dGVjb2RlQXRERkdUaW1lRGVmYXVsdDsgQm9vbCBkdW1w
R3JhcGhBZnRlclBhcnNpbmc7IEJvb2wgZHVtcEdyYXBoQWZ0ZXJQYXJzaW5nRGVmYXVsdDsgQm9v
bCBkdW1wR3JhcGhBdEVhY2hQaGFzZTsgQm9vbCBkdW1wR3JhcGhBdEVhY2hQaGFzZURlZmF1bHQ7
IEJvb2wgZHVtcERGR0dyYXBoQXRFYWNoUGhhc2U7IEJvb2wgZHVtcERGR0dyYXBoQXRFYWNoUGhh
c2VEZWZhdWx0OyBCb29sIGR1bXBERkdGVExHcmFwaEF0RWFjaFBoYXNlOyBCb29sIGR1bXBERkdG
VExHcmFwaEF0RWFjaFBoYXNlRGVmYXVsdDsgQm9vbCBkdW1wQjNHcmFwaEF0RWFjaFBoYXNlOyBC
b29sIGR1bXBCM0dyYXBoQXRFYWNoUGhhc2VEZWZhdWx0OyBCb29sIGR1bXBBaXJHcmFwaEF0RWFj
aFBoYXNlOyBCb29sIGR1bXBBaXJHcmFwaEF0RWFjaFBoYXNlRGVmYXVsdDsgQm9vbCB2ZXJib3Nl
REZHQnl0ZWNvZGVQYXJzaW5nOyBCb29sIHZlcmJvc2VERkdCeXRlY29kZVBhcnNpbmdEZWZhdWx0
OyBCb29sIHNhZmVwb2ludEJlZm9yZUVhY2hQaGFzZTsgQm9vbCBzYWZlcG9pbnRCZWZvcmVFYWNo
UGhhc2VEZWZhdWx0OyBCb29sIHZlcmJvc2VDb21waWxhdGlvbjsgQm9vbCB2ZXJib3NlQ29tcGls
YXRpb25EZWZhdWx0OyBCb29sIHZlcmJvc2VGVExDb21waWxhdGlvbjsgQm9vbCB2ZXJib3NlRlRM
Q29tcGlsYXRpb25EZWZhdWx0OyBCb29sIGxvZ0NvbXBpbGF0aW9uQ2hhbmdlczsgQm9vbCBsb2dD
b21waWxhdGlvbkNoYW5nZXNEZWZhdWx0OyBCb29sIHVzZVByb2JlT1NSRXhpdDsgQm9vbCB1c2VQ
cm9iZU9TUkV4aXREZWZhdWx0OyBCb29sIHByaW50RWFjaE9TUkV4aXQ7IEJvb2wgcHJpbnRFYWNo
T1NSRXhpdERlZmF1bHQ7IEJvb2wgdmFsaWRhdGVEb2VzR0M7IEJvb2wgdmFsaWRhdGVEb2VzR0NE
ZWZhdWx0OyBCb29sIHZhbGlkYXRlR3JhcGg7IEJvb2wgdmFsaWRhdGVHcmFwaERlZmF1bHQ7IEJv
b2wgdmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlOyBCb29sIHZhbGlkYXRlR3JhcGhBdEVhY2hQaGFz
ZURlZmF1bHQ7IEJvb2wgdmVyYm9zZVZhbGlkYXRpb25GYWlsdXJlOyBCb29sIHZlcmJvc2VWYWxp
ZGF0aW9uRmFpbHVyZURlZmF1bHQ7IEJvb2wgdmVyYm9zZU9TUjsgQm9vbCB2ZXJib3NlT1NSRGVm
YXVsdDsgQm9vbCB2ZXJib3NlREZHT1NSRXhpdDsgQm9vbCB2ZXJib3NlREZHT1NSRXhpdERlZmF1
bHQ7IEJvb2wgdmVyYm9zZUZUTE9TUkV4aXQ7IEJvb2wgdmVyYm9zZUZUTE9TUkV4aXREZWZhdWx0
OyBCb29sIHZlcmJvc2VDYWxsTGluazsgQm9vbCB2ZXJib3NlQ2FsbExpbmtEZWZhdWx0OyBCb29s
IHZlcmJvc2VDb21waWxhdGlvblF1ZXVlOyBCb29sIHZlcmJvc2VDb21waWxhdGlvblF1ZXVlRGVm
YXVsdDsgQm9vbCByZXBvcnRDb21waWxlVGltZXM7IEJvb2wgcmVwb3J0Q29tcGlsZVRpbWVzRGVm
YXVsdDsgQm9vbCByZXBvcnRCYXNlbGluZUNvbXBpbGVUaW1lczsgQm9vbCByZXBvcnRCYXNlbGlu
ZUNvbXBpbGVUaW1lc0RlZmF1bHQ7IEJvb2wgcmVwb3J0REZHQ29tcGlsZVRpbWVzOyBCb29sIHJl
cG9ydERGR0NvbXBpbGVUaW1lc0RlZmF1bHQ7IEJvb2wgcmVwb3J0RlRMQ29tcGlsZVRpbWVzOyBC
b29sIHJlcG9ydEZUTENvbXBpbGVUaW1lc0RlZmF1bHQ7IEJvb2wgcmVwb3J0VG90YWxDb21waWxl
VGltZXM7IEJvb2wgcmVwb3J0VG90YWxDb21waWxlVGltZXNEZWZhdWx0OyBCb29sIHJlcG9ydFRv
dGFsUGhhc2VUaW1lczsgQm9vbCByZXBvcnRUb3RhbFBoYXNlVGltZXNEZWZhdWx0OyBCb29sIHJl
cG9ydFBhcnNlVGltZXM7IEJvb2wgcmVwb3J0UGFyc2VUaW1lc0RlZmF1bHQ7IEJvb2wgcmVwb3J0
Qnl0ZWNvZGVDb21waWxlVGltZXM7IEJvb2wgcmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXNEZWZh
dWx0OyBCb29sIGNvdW50UGFyc2VUaW1lczsgQm9vbCBjb3VudFBhcnNlVGltZXNEZWZhdWx0OyBC
b29sIHZlcmJvc2VFeGl0UHJvZmlsZTsgQm9vbCB2ZXJib3NlRXhpdFByb2ZpbGVEZWZhdWx0OyBC
b29sIHZlcmJvc2VDRkE7IEJvb2wgdmVyYm9zZUNGQURlZmF1bHQ7IEJvb2wgdmVyYm9zZURGR0Zh
aWx1cmU7IEJvb2wgdmVyYm9zZURGR0ZhaWx1cmVEZWZhdWx0OyBCb29sIHZlcmJvc2VGVExUb0pT
VGh1bms7IEJvb2wgdmVyYm9zZUZUTFRvSlNUaHVua0RlZmF1bHQ7IEJvb2wgdmVyYm9zZUZUTEZh
aWx1cmU7IEJvb2wgdmVyYm9zZUZUTEZhaWx1cmVEZWZhdWx0OyBCb29sIGFsd2F5c0NvbXB1dGVI
YXNoOyBCb29sIGFsd2F5c0NvbXB1dGVIYXNoRGVmYXVsdDsgQm9vbCB0ZXN0VGhlRlRMOyBCb29s
IHRlc3RUaGVGVExEZWZhdWx0OyBCb29sIHZlcmJvc2VTYW5pdGl6ZVN0YWNrOyBCb29sIHZlcmJv
c2VTYW5pdGl6ZVN0YWNrRGVmYXVsdDsgQm9vbCB1c2VHZW5lcmF0aW9uYWxHQzsgQm9vbCB1c2VH
ZW5lcmF0aW9uYWxHQ0RlZmF1bHQ7IEJvb2wgdXNlQ29uY3VycmVudEdDOyBCb29sIHVzZUNvbmN1
cnJlbnRHQ0RlZmF1bHQ7IEJvb2wgY29sbGVjdENvbnRpbnVvdXNseTsgQm9vbCBjb2xsZWN0Q29u
dGludW91c2x5RGVmYXVsdDsgRG91YmxlIGNvbGxlY3RDb250aW51b3VzbHlQZXJpb2RNUzsgRG91
YmxlIGNvbGxlY3RDb250aW51b3VzbHlQZXJpb2RNU0RlZmF1bHQ7IEJvb2wgZm9yY2VGZW5jZWRC
YXJyaWVyOyBCb29sIGZvcmNlRmVuY2VkQmFycmllckRlZmF1bHQ7IEJvb2wgdmVyYm9zZVZpc2l0
UmFjZTsgQm9vbCB2ZXJib3NlVmlzaXRSYWNlRGVmYXVsdDsgQm9vbCBvcHRpbWl6ZVBhcmFsbGVs
U2xvdFZpc2l0b3JzRm9yU3RvcHBlZE11dGF0b3I7IEJvb2wgb3B0aW1pemVQYXJhbGxlbFNsb3RW
aXNpdG9yc0ZvclN0b3BwZWRNdXRhdG9yRGVmYXVsdDsgVW5zaWduZWQgbGFyZ2VIZWFwU2l6ZTsg
VW5zaWduZWQgbGFyZ2VIZWFwU2l6ZURlZmF1bHQ7IFVuc2lnbmVkIHNtYWxsSGVhcFNpemU7IFVu
c2lnbmVkIHNtYWxsSGVhcFNpemVEZWZhdWx0OyBEb3VibGUgc21hbGxIZWFwUkFNRnJhY3Rpb247
IERvdWJsZSBzbWFsbEhlYXBSQU1GcmFjdGlvbkRlZmF1bHQ7IERvdWJsZSBzbWFsbEhlYXBHcm93
dGhGYWN0b3I7IERvdWJsZSBzbWFsbEhlYXBHcm93dGhGYWN0b3JEZWZhdWx0OyBEb3VibGUgbWVk
aXVtSGVhcFJBTUZyYWN0aW9uOyBEb3VibGUgbWVkaXVtSGVhcFJBTUZyYWN0aW9uRGVmYXVsdDsg
RG91YmxlIG1lZGl1bUhlYXBHcm93dGhGYWN0b3I7IERvdWJsZSBtZWRpdW1IZWFwR3Jvd3RoRmFj
dG9yRGVmYXVsdDsgRG91YmxlIGxhcmdlSGVhcEdyb3d0aEZhY3RvcjsgRG91YmxlIGxhcmdlSGVh
cEdyb3d0aEZhY3RvckRlZmF1bHQ7IERvdWJsZSBtaW5pVk1IZWFwR3Jvd3RoRmFjdG9yOyBEb3Vi
bGUgbWluaVZNSGVhcEdyb3d0aEZhY3RvckRlZmF1bHQ7IERvdWJsZSBjcml0aWNhbEdDTWVtb3J5
VGhyZXNob2xkOyBEb3VibGUgY3JpdGljYWxHQ01lbW9yeVRocmVzaG9sZERlZmF1bHQ7IERvdWJs
ZSBtaW5pbXVtTXV0YXRvclV0aWxpemF0aW9uOyBEb3VibGUgbWluaW11bU11dGF0b3JVdGlsaXph
dGlvbkRlZmF1bHQ7IERvdWJsZSBtYXhpbXVtTXV0YXRvclV0aWxpemF0aW9uOyBEb3VibGUgbWF4
aW11bU11dGF0b3JVdGlsaXphdGlvbkRlZmF1bHQ7IERvdWJsZSBlcHNpbG9uTXV0YXRvclV0aWxp
emF0aW9uOyBEb3VibGUgZXBzaWxvbk11dGF0b3JVdGlsaXphdGlvbkRlZmF1bHQ7IERvdWJsZSBj
b25jdXJyZW50R0NNYXhIZWFkcm9vbTsgRG91YmxlIGNvbmN1cnJlbnRHQ01heEhlYWRyb29tRGVm
YXVsdDsgRG91YmxlIGNvbmN1cnJlbnRHQ1BlcmlvZE1TOyBEb3VibGUgY29uY3VycmVudEdDUGVy
aW9kTVNEZWZhdWx0OyBCb29sIHVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyOyBCb29sIHVz
ZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyRGVmYXVsdDsgRG91YmxlIG1pbmltdW1HQ1BhdXNl
TVM7IERvdWJsZSBtaW5pbXVtR0NQYXVzZU1TRGVmYXVsdDsgRG91YmxlIGdjUGF1c2VTY2FsZTsg
RG91YmxlIGdjUGF1c2VTY2FsZURlZmF1bHQ7IERvdWJsZSBnY0luY3JlbWVudEJ5dGVzOyBEb3Vi
bGUgZ2NJbmNyZW1lbnRCeXRlc0RlZmF1bHQ7IERvdWJsZSBnY0luY3JlbWVudE1heEJ5dGVzOyBE
b3VibGUgZ2NJbmNyZW1lbnRNYXhCeXRlc0RlZmF1bHQ7IERvdWJsZSBnY0luY3JlbWVudFNjYWxl
OyBEb3VibGUgZ2NJbmNyZW1lbnRTY2FsZURlZmF1bHQ7IEJvb2wgc2NyaWJibGVGcmVlQ2VsbHM7
IEJvb2wgc2NyaWJibGVGcmVlQ2VsbHNEZWZhdWx0OyBEb3VibGUgc2l6ZUNsYXNzUHJvZ3Jlc3Np
b247IERvdWJsZSBzaXplQ2xhc3NQcm9ncmVzc2lvbkRlZmF1bHQ7IFVuc2lnbmVkIHByZWNpc2VB
bGxvY2F0aW9uQ3V0b2ZmOyBVbnNpZ25lZCBwcmVjaXNlQWxsb2NhdGlvbkN1dG9mZkRlZmF1bHQ7
IEJvb2wgZHVtcFNpemVDbGFzc2VzOyBCb29sIGR1bXBTaXplQ2xhc3Nlc0RlZmF1bHQ7IEJvb2wg
dXNlQnVtcEFsbG9jYXRvcjsgQm9vbCB1c2VCdW1wQWxsb2NhdG9yRGVmYXVsdDsgQm9vbCBzdGVh
bEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9yczsgQm9vbCBzdGVhbEVtcHR5QmxvY2tzRnJv
bU90aGVyQWxsb2NhdG9yc0RlZmF1bHQ7IEJvb2wgZWFnZXJseVVwZGF0ZVRvcENhbGxGcmFtZTsg
Qm9vbCBlYWdlcmx5VXBkYXRlVG9wQ2FsbEZyYW1lRGVmYXVsdDsgQm9vbCBkdW1wWmFwcGVkQ2Vs
bENyYXNoRGF0YTsgQm9vbCBkdW1wWmFwcGVkQ2VsbENyYXNoRGF0YURlZmF1bHQ7IEJvb2wgdXNl
T1NSRW50cnlUb0RGRzsgQm9vbCB1c2VPU1JFbnRyeVRvREZHRGVmYXVsdDsgQm9vbCB1c2VPU1JF
bnRyeVRvRlRMOyBCb29sIHVzZU9TUkVudHJ5VG9GVExEZWZhdWx0OyBCb29sIHVzZUZUTEpJVDsg
Qm9vbCB1c2VGVExKSVREZWZhdWx0OyBCb29sIHZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzOyBC
b29sIHZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzRGVmYXVsdDsgVW5zaWduZWQgZGVmYXVsdEIz
T3B0TGV2ZWw7IFVuc2lnbmVkIGRlZmF1bHRCM09wdExldmVsRGVmYXVsdDsgQm9vbCBiM0Fsd2F5
c0ZhaWxzQmVmb3JlQ29tcGlsZTsgQm9vbCBiM0Fsd2F5c0ZhaWxzQmVmb3JlQ29tcGlsZURlZmF1
bHQ7IEJvb2wgYjNBbHdheXNGYWlsc0JlZm9yZUxpbms7IEJvb2wgYjNBbHdheXNGYWlsc0JlZm9y
ZUxpbmtEZWZhdWx0OyBCb29sIGZ0bENyYXNoZXM7IEJvb2wgZnRsQ3Jhc2hlc0RlZmF1bHQ7IEJv
b2wgY2xvYmJlckFsbFJlZ3NJbkZUTElDU2xvd1BhdGg7IEJvb2wgY2xvYmJlckFsbFJlZ3NJbkZU
TElDU2xvd1BhdGhEZWZhdWx0OyBCb29sIGVuYWJsZUpJVERlYnVnQXNzZXJ0aW9uczsgQm9vbCBl
bmFibGVKSVREZWJ1Z0Fzc2VydGlvbnNEZWZhdWx0OyBCb29sIHVzZUFjY2Vzc0lubGluaW5nOyBC
b29sIHVzZUFjY2Vzc0lubGluaW5nRGVmYXVsdDsgVW5zaWduZWQgbWF4QWNjZXNzVmFyaWFudExp
c3RTaXplOyBVbnNpZ25lZCBtYXhBY2Nlc3NWYXJpYW50TGlzdFNpemVEZWZhdWx0OyBCb29sIHVz
ZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbjsgQm9vbCB1c2VQb2x5dmFyaWFudERldmlydHVh
bGl6YXRpb25EZWZhdWx0OyBCb29sIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmc7IEJvb2wg
dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0RlZmF1bHQ7IFVuc2lnbmVkIG1heFBvbHltb3Jw
aGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZTsgVW5zaWduZWQgbWF4UG9seW1vcnBoaWNBY2Nlc3NJ
bmxpbmluZ0xpc3RTaXplRGVmYXVsdDsgQm9vbCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZzsg
Qm9vbCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0RlZmF1bHQ7IEJvb2wgdXNlUG9seW1vcnBo
aWNDYWxsSW5saW5pbmdGb3JOb25TdHViU3RhdHVzOyBCb29sIHVzZVBvbHltb3JwaGljQ2FsbElu
bGluaW5nRm9yTm9uU3R1YlN0YXR1c0RlZmF1bHQ7IFVuc2lnbmVkIG1heFBvbHltb3JwaGljQ2Fs
bFZhcmlhbnRMaXN0U2l6ZTsgVW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RT
aXplRGVmYXVsdDsgVW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRm9y
VG9wVGllcjsgVW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRm9yVG9w
VGllckRlZmF1bHQ7IFVuc2lnbmVkIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZUZv
cldlYkFzc2VtYmx5VG9KUzsgVW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RT
aXplRm9yV2ViQXNzZW1ibHlUb0pTRGVmYXVsdDsgVW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxs
VmFyaWFudHNGb3JJbmxpbmluZzsgVW5zaWduZWQgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudHNG
b3JJbmxpbmluZ0RlZmF1bHQ7IFVuc2lnbmVkIGZyZXF1ZW50Q2FsbFRocmVzaG9sZDsgVW5zaWdu
ZWQgZnJlcXVlbnRDYWxsVGhyZXNob2xkRGVmYXVsdDsgRG91YmxlIG1pbmltdW1DYWxsVG9Lbm93
blJhdGU7IERvdWJsZSBtaW5pbXVtQ2FsbFRvS25vd25SYXRlRGVmYXVsdDsgQm9vbCBjcmVhdGVQ
cmVIZWFkZXJzOyBCb29sIGNyZWF0ZVByZUhlYWRlcnNEZWZhdWx0OyBCb29sIHVzZU1vdkhpbnRS
ZW1vdmFsOyBCb29sIHVzZU1vdkhpbnRSZW1vdmFsRGVmYXVsdDsgQm9vbCB1c2VQdXRTdGFja1Np
bmtpbmc7IEJvb2wgdXNlUHV0U3RhY2tTaW5raW5nRGVmYXVsdDsgQm9vbCB1c2VPYmplY3RBbGxv
Y2F0aW9uU2lua2luZzsgQm9vbCB1c2VPYmplY3RBbGxvY2F0aW9uU2lua2luZ0RlZmF1bHQ7IEJv
b2wgdXNlVmFsdWVSZXBFbGltaW5hdGlvbjsgQm9vbCB1c2VWYWx1ZVJlcEVsaW1pbmF0aW9uRGVm
YXVsdDsgQm9vbCB1c2VBcml0eUZpeHVwSW5saW5pbmc7IEJvb2wgdXNlQXJpdHlGaXh1cElubGlu
aW5nRGVmYXVsdDsgQm9vbCBsb2dFeGVjdXRhYmxlQWxsb2NhdGlvbjsgQm9vbCBsb2dFeGVjdXRh
YmxlQWxsb2NhdGlvbkRlZmF1bHQ7IFVuc2lnbmVkIG1heERGR05vZGVzSW5CYXNpY0Jsb2NrRm9y
UHJlY2lzZUFuYWx5c2lzOyBVbnNpZ25lZCBtYXhERkdOb2Rlc0luQmFzaWNCbG9ja0ZvclByZWNp
c2VBbmFseXNpc0RlZmF1bHQ7IEJvb2wgdXNlQ29uY3VycmVudEpJVDsgQm9vbCB1c2VDb25jdXJy
ZW50SklURGVmYXVsdDsgVW5zaWduZWQgbnVtYmVyT2ZERkdDb21waWxlclRocmVhZHM7IFVuc2ln
bmVkIG51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzRGVmYXVsdDsgVW5zaWduZWQgbnVtYmVyT2ZG
VExDb21waWxlclRocmVhZHM7IFVuc2lnbmVkIG51bWJlck9mRlRMQ29tcGlsZXJUaHJlYWRzRGVm
YXVsdDsgSW50MzIgcHJpb3JpdHlEZWx0YU9mREZHQ29tcGlsZXJUaHJlYWRzOyBJbnQzMiBwcmlv
cml0eURlbHRhT2ZERkdDb21waWxlclRocmVhZHNEZWZhdWx0OyBJbnQzMiBwcmlvcml0eURlbHRh
T2ZGVExDb21waWxlclRocmVhZHM7IEludDMyIHByaW9yaXR5RGVsdGFPZkZUTENvbXBpbGVyVGhy
ZWFkc0RlZmF1bHQ7IEludDMyIHByaW9yaXR5RGVsdGFPZldhc21Db21waWxlclRocmVhZHM7IElu
dDMyIHByaW9yaXR5RGVsdGFPZldhc21Db21waWxlclRocmVhZHNEZWZhdWx0OyBCb29sIHVzZVBy
b2ZpbGVyOyBCb29sIHVzZVByb2ZpbGVyRGVmYXVsdDsgQm9vbCBkaXNhc3NlbWJsZUJhc2VsaW5l
Rm9yUHJvZmlsZXI7IEJvb2wgZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyRGVmYXVsdDsg
Qm9vbCB1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnM7IEJvb2wgdXNlQXJjaGl0
ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zRGVmYXVsdDsgQm9vbCBicmVha09uVGhyb3c7IEJv
b2wgYnJlYWtPblRocm93RGVmYXVsdDsgVW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkNhbmRp
ZGF0ZUJ5dGVjb2RlQ29zdDsgVW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUJ5
dGVjb2RlQ29zdERlZmF1bHQ7IFVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVD
YW5kaWRhdGVCeXRlY29kZUNvc3Q7IFVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxp
bmVDYW5kaWRhdGVCeXRlY29kZUNvc3REZWZhdWx0OyBVbnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25G
b3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUJ5dGVjb2RlQ29zdDsgVW5zaWduZWQgbWF4aW11
bUZ1bmN0aW9uRm9yQ2xvc3VyZUNhbGxJbmxpbmVDYW5kaWRhdGVCeXRlY29kZUNvc3REZWZhdWx0
OyBVbnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVCeXRl
Y29vZGVDb3N0OyBVbnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5k
aWRhdGVCeXRlY29vZGVDb3N0RGVmYXVsdDsgVW5zaWduZWQgbWF4aW11bUZUTENhbmRpZGF0ZUJ5
dGVjb2RlQ29zdDsgVW5zaWduZWQgbWF4aW11bUZUTENhbmRpZGF0ZUJ5dGVjb2RlQ29zdERlZmF1
bHQ7IFVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyBVbnNpZ25lZCBtYXhpbXVtSW5saW5p
bmdEZXB0aERlZmF1bHQ7IFVuc2lnbmVkIG1heGltdW1JbmxpbmluZ1JlY3Vyc2lvbjsgVW5zaWdu
ZWQgbWF4aW11bUlubGluaW5nUmVjdXJzaW9uRGVmYXVsdDsgVW5zaWduZWQgbWF4aW11bUlubGlu
aW5nQ2FsbGVyQnl0ZWNvZGVDb3N0OyBVbnNpZ25lZCBtYXhpbXVtSW5saW5pbmdDYWxsZXJCeXRl
Y29kZUNvc3REZWZhdWx0OyBVbnNpZ25lZCBtYXhpbXVtVmFyYXJnc0ZvcklubGluaW5nOyBVbnNp
Z25lZCBtYXhpbXVtVmFyYXJnc0ZvcklubGluaW5nRGVmYXVsdDsgVW5zaWduZWQgbWF4aW11bUJp
bmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGg7IFVuc2lnbmVkIG1heGltdW1CaW5hcnlTdHJpbmdT
d2l0Y2hDYXNlTGVuZ3RoRGVmYXVsdDsgVW5zaWduZWQgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRj
aFRvdGFsTGVuZ3RoOyBVbnNpZ25lZCBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoVG90YWxMZW5n
dGhEZWZhdWx0OyBEb3VibGUgaml0UG9saWN5U2NhbGU7IERvdWJsZSBqaXRQb2xpY3lTY2FsZURl
ZmF1bHQ7IEJvb2wgZm9yY2VFYWdlckNvbXBpbGF0aW9uOyBCb29sIGZvcmNlRWFnZXJDb21waWxh
dGlvbkRlZmF1bHQ7IEludDMyIHRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwOyBJbnQzMiB0aHJl
c2hvbGRGb3JKSVRBZnRlcldhcm1VcERlZmF1bHQ7IEludDMyIHRocmVzaG9sZEZvckpJVFNvb247
IEludDMyIHRocmVzaG9sZEZvckpJVFNvb25EZWZhdWx0OyBJbnQzMiB0aHJlc2hvbGRGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwOyBJbnQzMiB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwRGVm
YXVsdDsgSW50MzIgdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7IEludDMyIHRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwRGVmYXVsdDsgSW50MzIgdGhyZXNob2xk
Rm9yT3B0aW1pemVTb29uOyBJbnQzMiB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb25EZWZhdWx0OyBJ
bnQzMiBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsgSW50MzIgZXhlY3V0aW9uQ291
bnRlckluY3JlbWVudEZvckxvb3BEZWZhdWx0OyBJbnQzMiBleGVjdXRpb25Db3VudGVySW5jcmVt
ZW50Rm9yRW50cnk7IEludDMyIGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JFbnRyeURlZmF1
bHQ7IEludDMyIHRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA7IEludDMyIHRocmVz
aG9sZEZvckZUTE9wdGltaXplQWZ0ZXJXYXJtVXBEZWZhdWx0OyBJbnQzMiB0aHJlc2hvbGRGb3JG
VExPcHRpbWl6ZVNvb247IEludDMyIHRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbkRlZmF1bHQ7
IEludDMyIGZ0bFRpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JMb29wOyBJbnQzMiBmdGxUaWVyVXBD
b3VudGVySW5jcmVtZW50Rm9yTG9vcERlZmF1bHQ7IEludDMyIGZ0bFRpZXJVcENvdW50ZXJJbmNy
ZW1lbnRGb3JSZXR1cm47IEludDMyIGZ0bFRpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm5E
ZWZhdWx0OyBVbnNpZ25lZCBmdGxPU1JFbnRyeUZhaWx1cmVDb3VudEZvclJlb3B0aW1pemF0aW9u
OyBVbnNpZ25lZCBmdGxPU1JFbnRyeUZhaWx1cmVDb3VudEZvclJlb3B0aW1pemF0aW9uRGVmYXVs
dDsgVW5zaWduZWQgZnRsT1NSRW50cnlSZXRyeVRocmVzaG9sZDsgVW5zaWduZWQgZnRsT1NSRW50
cnlSZXRyeVRocmVzaG9sZERlZmF1bHQ7IEludDMyIGV2YWxUaHJlc2hvbGRNdWx0aXBsaWVyOyBJ
bnQzMiBldmFsVGhyZXNob2xkTXVsdGlwbGllckRlZmF1bHQ7IFVuc2lnbmVkIG1heGltdW1FdmFs
Q2FjaGVhYmxlU291cmNlTGVuZ3RoOyBVbnNpZ25lZCBtYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJj
ZUxlbmd0aERlZmF1bHQ7IEJvb2wgcmFuZG9taXplRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNr
cG9pbnRzOyBCb29sIHJhbmRvbWl6ZUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50c0Rl
ZmF1bHQ7IEludDMyIG1heGltdW1FeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNGb3JC
YXNlbGluZTsgSW50MzIgbWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50c0Zv
ckJhc2VsaW5lRGVmYXVsdDsgSW50MzIgbWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVj
a3BvaW50c0ZvclVwcGVyVGllcnM7IEludDMyIG1heGltdW1FeGVjdXRpb25Db3VudHNCZXR3ZWVu
Q2hlY2twb2ludHNGb3JVcHBlclRpZXJzRGVmYXVsdDsgVW5zaWduZWQgbGlrZWx5VG9UYWtlU2xv
d0Nhc2VNaW5pbXVtQ291bnQ7IFVuc2lnbmVkIGxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNv
dW50RGVmYXVsdDsgVW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7IFVuc2ln
bmVkIGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50RGVmYXVsdDsgVW5zaWduZWQgb3NyRXhp
dENvdW50Rm9yUmVvcHRpbWl6YXRpb247IFVuc2lnbmVkIG9zckV4aXRDb3VudEZvclJlb3B0aW1p
emF0aW9uRGVmYXVsdDsgVW5zaWduZWQgb3NyRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb25Gcm9t
TG9vcDsgVW5zaWduZWQgb3NyRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb25Gcm9tTG9vcERlZmF1
bHQ7IFVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OyBVbnNpZ25lZCByZW9w
dGltaXphdGlvblJldHJ5Q291bnRlck1heERlZmF1bHQ7IFVuc2lnbmVkIG1pbmltdW1PcHRpbWl6
YXRpb25EZWxheTsgVW5zaWduZWQgbWluaW11bU9wdGltaXphdGlvbkRlbGF5RGVmYXVsdDsgVW5z
aWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5OyBVbnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0
aW9uRGVsYXlEZWZhdWx0OyBEb3VibGUgZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGU7IERvdWJs
ZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZURlZmF1bHQ7IERvdWJsZSBkZXNpcmVkUHJvZmls
ZUZ1bGxuZXNzUmF0ZTsgRG91YmxlIGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlRGVmYXVsdDsg
RG91YmxlIGRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdDsgRG91YmxlIGRvdWJsZVZvdGVS
YXRpb0ZvckRvdWJsZUZvcm1hdERlZmF1bHQ7IERvdWJsZSBzdHJ1Y3R1cmVDaGVja1ZvdGVSYXRp
b0ZvckhvaXN0aW5nOyBEb3VibGUgc3RydWN0dXJlQ2hlY2tWb3RlUmF0aW9Gb3JIb2lzdGluZ0Rl
ZmF1bHQ7IERvdWJsZSBjaGVja0FycmF5Vm90ZVJhdGlvRm9ySG9pc3Rpbmc7IERvdWJsZSBjaGVj
a0FycmF5Vm90ZVJhdGlvRm9ySG9pc3RpbmdEZWZhdWx0OyBVbnNpZ25lZCBtYXhpbXVtRGlyZWN0
Q2FsbFN0YWNrU2l6ZTsgVW5zaWduZWQgbWF4aW11bURpcmVjdENhbGxTdGFja1NpemVEZWZhdWx0
OyBVbnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IFVuc2lnbmVk
IG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZURlZmF1bHQ7IFVuc2lnbmVkIG51
bWJlck9mR0NNYXJrZXJzOyBVbnNpZ25lZCBudW1iZXJPZkdDTWFya2Vyc0RlZmF1bHQ7IEJvb2wg
dXNlUGFyYWxsZWxNYXJraW5nQ29uc3RyYWludFNvbHZlcjsgQm9vbCB1c2VQYXJhbGxlbE1hcmtp
bmdDb25zdHJhaW50U29sdmVyRGVmYXVsdDsgVW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNo
b2xkOyBVbnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGREZWZhdWx0OyBEb3VibGUgbWlu
SGVhcFV0aWxpemF0aW9uOyBEb3VibGUgbWluSGVhcFV0aWxpemF0aW9uRGVmYXVsdDsgRG91Ymxl
IG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb247IERvdWJsZSBtaW5NYXJrZWRCbG9ja1V0aWxpemF0
aW9uRGVmYXVsdDsgVW5zaWduZWQgc2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzOyBVbnNpZ25lZCBz
bG93UGF0aEFsbG9jc0JldHdlZW5HQ3NEZWZhdWx0OyBEb3VibGUgcGVyY2VudENQVVBlck1CRm9y
RnVsbFRpbWVyOyBEb3VibGUgcGVyY2VudENQVVBlck1CRm9yRnVsbFRpbWVyRGVmYXVsdDsgRG91
YmxlIHBlcmNlbnRDUFVQZXJNQkZvckVkZW5UaW1lcjsgRG91YmxlIHBlcmNlbnRDUFVQZXJNQkZv
ckVkZW5UaW1lckRlZmF1bHQ7IERvdWJsZSBjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVOyBE
b3VibGUgY29sbGVjdGlvblRpbWVyTWF4UGVyY2VudENQVURlZmF1bHQ7IEJvb2wgZm9yY2VXZWFr
UmFuZG9tU2VlZDsgQm9vbCBmb3JjZVdlYWtSYW5kb21TZWVkRGVmYXVsdDsgVW5zaWduZWQgZm9y
Y2VkV2Vha1JhbmRvbVNlZWQ7IFVuc2lnbmVkIGZvcmNlZFdlYWtSYW5kb21TZWVkRGVmYXVsdDsg
Qm9vbCB1c2Vab21iaWVNb2RlOyBCb29sIHVzZVpvbWJpZU1vZGVEZWZhdWx0OyBCb29sIHVzZUlt
bW9ydGFsT2JqZWN0czsgQm9vbCB1c2VJbW1vcnRhbE9iamVjdHNEZWZhdWx0OyBCb29sIHN3ZWVw
U3luY2hyb25vdXNseTsgQm9vbCBzd2VlcFN5bmNocm9ub3VzbHlEZWZhdWx0OyBVbnNpZ25lZCBt
YXhTaW5nbGVBbGxvY2F0aW9uU2l6ZTsgVW5zaWduZWQgbWF4U2luZ2xlQWxsb2NhdGlvblNpemVE
ZWZhdWx0OyBHQ0xvZ0xldmVsIGxvZ0dDOyBHQ0xvZ0xldmVsIGxvZ0dDRGVmYXVsdDsgQm9vbCB1
c2VHQzsgQm9vbCB1c2VHQ0RlZmF1bHQ7IEJvb2wgZ2NBdEVuZDsgQm9vbCBnY0F0RW5kRGVmYXVs
dDsgQm9vbCBmb3JjZUdDU2xvd1BhdGhzOyBCb29sIGZvcmNlR0NTbG93UGF0aHNEZWZhdWx0OyBC
b29sIGZvcmNlRGlkRGVmZXJHQ1dvcms7IEJvb2wgZm9yY2VEaWREZWZlckdDV29ya0RlZmF1bHQ7
IFVuc2lnbmVkIGdjTWF4SGVhcFNpemU7IFVuc2lnbmVkIGdjTWF4SGVhcFNpemVEZWZhdWx0OyBV
bnNpZ25lZCBmb3JjZVJBTVNpemU7IFVuc2lnbmVkIGZvcmNlUkFNU2l6ZURlZmF1bHQ7IEJvb2wg
cmVjb3JkR0NQYXVzZVRpbWVzOyBCb29sIHJlY29yZEdDUGF1c2VUaW1lc0RlZmF1bHQ7IEJvb2wg
ZHVtcEhlYXBTdGF0aXN0aWNzQXRWTURlc3RydWN0aW9uOyBCb29sIGR1bXBIZWFwU3RhdGlzdGlj
c0F0Vk1EZXN0cnVjdGlvbkRlZmF1bHQ7IEJvb2wgZm9yY2VDb2RlQmxvY2tUb0pldHRpc29uRHVl
VG9PbGRBZ2U7IEJvb2wgZm9yY2VDb2RlQmxvY2tUb0pldHRpc29uRHVlVG9PbGRBZ2VEZWZhdWx0
OyBCb29sIHVzZUVhZ2VyQ29kZUJsb2NrSmV0dGlzb25UaW1pbmc7IEJvb2wgdXNlRWFnZXJDb2Rl
QmxvY2tKZXR0aXNvblRpbWluZ0RlZmF1bHQ7IEJvb2wgdXNlVHlwZVByb2ZpbGVyOyBCb29sIHVz
ZVR5cGVQcm9maWxlckRlZmF1bHQ7IEJvb2wgdXNlQ29udHJvbEZsb3dQcm9maWxlcjsgQm9vbCB1
c2VDb250cm9sRmxvd1Byb2ZpbGVyRGVmYXVsdDsgQm9vbCB1c2VTYW1wbGluZ1Byb2ZpbGVyOyBC
b29sIHVzZVNhbXBsaW5nUHJvZmlsZXJEZWZhdWx0OyBVbnNpZ25lZCBzYW1wbGVJbnRlcnZhbDsg
VW5zaWduZWQgc2FtcGxlSW50ZXJ2YWxEZWZhdWx0OyBCb29sIGNvbGxlY3RTYW1wbGluZ1Byb2Zp
bGVyRGF0YUZvckpTQ1NoZWxsOyBCb29sIGNvbGxlY3RTYW1wbGluZ1Byb2ZpbGVyRGF0YUZvckpT
Q1NoZWxsRGVmYXVsdDsgVW5zaWduZWQgc2FtcGxpbmdQcm9maWxlclRvcEZ1bmN0aW9uc0NvdW50
OyBVbnNpZ25lZCBzYW1wbGluZ1Byb2ZpbGVyVG9wRnVuY3Rpb25zQ291bnREZWZhdWx0OyBVbnNp
Z25lZCBzYW1wbGluZ1Byb2ZpbGVyVG9wQnl0ZWNvZGVzQ291bnQ7IFVuc2lnbmVkIHNhbXBsaW5n
UHJvZmlsZXJUb3BCeXRlY29kZXNDb3VudERlZmF1bHQ7IE9wdGlvblN0cmluZyBzYW1wbGluZ1By
b2ZpbGVyUGF0aDsgT3B0aW9uU3RyaW5nIHNhbXBsaW5nUHJvZmlsZXJQYXRoRGVmYXVsdDsgQm9v
bCBzYW1wbGVDQ29kZTsgQm9vbCBzYW1wbGVDQ29kZURlZmF1bHQ7IEJvb2wgYWx3YXlzR2VuZXJh
dGVQQ1RvQ29kZU9yaWdpbk1hcDsgQm9vbCBhbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3JpZ2luTWFw
RGVmYXVsdDsgRG91YmxlIHJhbmRvbUludGVncml0eUF1ZGl0UmF0ZTsgRG91YmxlIHJhbmRvbUlu
dGVncml0eUF1ZGl0UmF0ZURlZmF1bHQ7IEJvb2wgdmVyaWZ5SGVhcDsgQm9vbCB2ZXJpZnlIZWFw
RGVmYXVsdDsgVW5zaWduZWQgbnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9u
OyBVbnNpZ25lZCBudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb25EZWZhdWx0
OyBVbnNpZ25lZCBleGNlcHRpb25TdGFja1RyYWNlTGltaXQ7IFVuc2lnbmVkIGV4Y2VwdGlvblN0
YWNrVHJhY2VMaW1pdERlZmF1bHQ7IFVuc2lnbmVkIGRlZmF1bHRFcnJvclN0YWNrVHJhY2VMaW1p
dDsgVW5zaWduZWQgZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0RGVmYXVsdDsgQm9vbCB1c2VF
eGNlcHRpb25GdXp6OyBCb29sIHVzZUV4Y2VwdGlvbkZ1enpEZWZhdWx0OyBVbnNpZ25lZCBmaXJl
RXhjZXB0aW9uRnV6ekF0OyBVbnNpZ25lZCBmaXJlRXhjZXB0aW9uRnV6ekF0RGVmYXVsdDsgQm9v
bCB2YWxpZGF0ZURGR0V4Y2VwdGlvbkhhbmRsaW5nOyBCb29sIHZhbGlkYXRlREZHRXhjZXB0aW9u
SGFuZGxpbmdEZWZhdWx0OyBCb29sIGR1bXBTaW11bGF0ZWRUaHJvd3M7IEJvb2wgZHVtcFNpbXVs
YXRlZFRocm93c0RlZmF1bHQ7IEJvb2wgdmFsaWRhdGVFeGNlcHRpb25DaGVja3M7IEJvb2wgdmFs
aWRhdGVFeGNlcHRpb25DaGVja3NEZWZhdWx0OyBVbnNpZ25lZCB1bmV4cGVjdGVkRXhjZXB0aW9u
U3RhY2tUcmFjZUxpbWl0OyBVbnNpZ25lZCB1bmV4cGVjdGVkRXhjZXB0aW9uU3RhY2tUcmFjZUxp
bWl0RGVmYXVsdDsgQm9vbCB2YWxpZGF0ZURGR0Nsb2JiZXJpemU7IEJvb2wgdmFsaWRhdGVERkdD
bG9iYmVyaXplRGVmYXVsdDsgQm9vbCB1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1eno7IEJvb2wg
dXNlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6RGVmYXVsdDsgVW5zaWduZWQgZmlyZUV4ZWN1dGFi
bGVBbGxvY2F0aW9uRnV6ekF0OyBVbnNpZ25lZCBmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6
QXREZWZhdWx0OyBVbnNpZ25lZCBmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXRPckFmdGVy
OyBVbnNpZ25lZCBmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXRPckFmdGVyRGVmYXVsdDsg
Qm9vbCB2ZXJib3NlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6OyBCb29sIHZlcmJvc2VFeGVjdXRh
YmxlQWxsb2NhdGlvbkZ1enpEZWZhdWx0OyBCb29sIHVzZU9TUkV4aXRGdXp6OyBCb29sIHVzZU9T
UkV4aXRGdXp6RGVmYXVsdDsgVW5zaWduZWQgZmlyZU9TUkV4aXRGdXp6QXRTdGF0aWM7IFVuc2ln
bmVkIGZpcmVPU1JFeGl0RnV6ekF0U3RhdGljRGVmYXVsdDsgVW5zaWduZWQgZmlyZU9TUkV4aXRG
dXp6QXQ7IFVuc2lnbmVkIGZpcmVPU1JFeGl0RnV6ekF0RGVmYXVsdDsgVW5zaWduZWQgZmlyZU9T
UkV4aXRGdXp6QXRPckFmdGVyOyBVbnNpZ25lZCBmaXJlT1NSRXhpdEZ1enpBdE9yQWZ0ZXJEZWZh
dWx0OyBVbnNpZ25lZCBzZWVkT2ZWTVJhbmRvbUZvckZ1enplcjsgVW5zaWduZWQgc2VlZE9mVk1S
YW5kb21Gb3JGdXp6ZXJEZWZhdWx0OyBCb29sIHVzZVJhbmRvbWl6aW5nRnV6emVyQWdlbnQ7IEJv
b2wgdXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudERlZmF1bHQ7IFVuc2lnbmVkIHNlZWRPZlJhbmRv
bWl6aW5nRnV6emVyQWdlbnQ7IFVuc2lnbmVkIHNlZWRPZlJhbmRvbWl6aW5nRnV6emVyQWdlbnRE
ZWZhdWx0OyBCb29sIGR1bXBGdXp6ZXJBZ2VudFByZWRpY3Rpb25zOyBCb29sIGR1bXBGdXp6ZXJB
Z2VudFByZWRpY3Rpb25zRGVmYXVsdDsgQm9vbCB1c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdl
bnQ7IEJvb2wgdXNlRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50RGVmYXVsdDsgQm9vbCB1c2VG
aWxlQmFzZWRGdXp6ZXJBZ2VudDsgQm9vbCB1c2VGaWxlQmFzZWRGdXp6ZXJBZ2VudERlZmF1bHQ7
IEJvb2wgdXNlUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50OyBCb29sIHVzZVByZWRp
Y3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudERlZmF1bHQ7IEJvb2wgcmVxdWlyZVByZWRpY3Rp
b25Gb3JGaWxlQmFzZWRGdXp6ZXJBZ2VudDsgQm9vbCByZXF1aXJlUHJlZGljdGlvbkZvckZpbGVC
YXNlZEZ1enplckFnZW50RGVmYXVsdDsgT3B0aW9uU3RyaW5nIGZ1enplclByZWRpY3Rpb25zRmls
ZTsgT3B0aW9uU3RyaW5nIGZ1enplclByZWRpY3Rpb25zRmlsZURlZmF1bHQ7IEJvb2wgdXNlTmFy
cm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50OyBCb29sIHVzZU5hcnJvd2luZ051bWJl
clByZWRpY3Rpb25GdXp6ZXJBZ2VudERlZmF1bHQ7IEJvb2wgdXNlV2lkZW5pbmdOdW1iZXJQcmVk
aWN0aW9uRnV6emVyQWdlbnQ7IEJvb2wgdXNlV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVy
QWdlbnREZWZhdWx0OyBCb29sIGxvZ1BoYXNlVGltZXM7IEJvb2wgbG9nUGhhc2VUaW1lc0RlZmF1
bHQ7IERvdWJsZSByYXJlQmxvY2tQZW5hbHR5OyBEb3VibGUgcmFyZUJsb2NrUGVuYWx0eURlZmF1
bHQ7IEJvb2wgYWlyTGluZWFyU2NhblZlcmJvc2U7IEJvb2wgYWlyTGluZWFyU2NhblZlcmJvc2VE
ZWZhdWx0OyBCb29sIGFpckxpbmVhclNjYW5TcGlsbHNFdmVyeXRoaW5nOyBCb29sIGFpckxpbmVh
clNjYW5TcGlsbHNFdmVyeXRoaW5nRGVmYXVsdDsgQm9vbCBhaXJGb3JjZUJyaWdnc0FsbG9jYXRv
cjsgQm9vbCBhaXJGb3JjZUJyaWdnc0FsbG9jYXRvckRlZmF1bHQ7IEJvb2wgYWlyRm9yY2VJUkNB
bGxvY2F0b3I7IEJvb2wgYWlyRm9yY2VJUkNBbGxvY2F0b3JEZWZhdWx0OyBCb29sIGFpclJhbmRv
bWl6ZVJlZ3M7IEJvb2wgYWlyUmFuZG9taXplUmVnc0RlZmF1bHQ7IFVuc2lnbmVkIGFpclJhbmRv
bWl6ZVJlZ3NTZWVkOyBVbnNpZ25lZCBhaXJSYW5kb21pemVSZWdzU2VlZERlZmF1bHQ7IEJvb2wg
Y29hbGVzY2VTcGlsbFNsb3RzOyBCb29sIGNvYWxlc2NlU3BpbGxTbG90c0RlZmF1bHQ7IEJvb2wg
bG9nQWlyUmVnaXN0ZXJQcmVzc3VyZTsgQm9vbCBsb2dBaXJSZWdpc3RlclByZXNzdXJlRGVmYXVs
dDsgQm9vbCB1c2VCM1RhaWxEdXA7IEJvb2wgdXNlQjNUYWlsRHVwRGVmYXVsdDsgVW5zaWduZWQg
bWF4QjNUYWlsRHVwQmxvY2tTaXplOyBVbnNpZ25lZCBtYXhCM1RhaWxEdXBCbG9ja1NpemVEZWZh
dWx0OyBVbnNpZ25lZCBtYXhCM1RhaWxEdXBCbG9ja1N1Y2Nlc3NvcnM7IFVuc2lnbmVkIG1heEIz
VGFpbER1cEJsb2NrU3VjY2Vzc29yc0RlZmF1bHQ7IEJvb2wgdXNlQjNIb2lzdExvb3BJbnZhcmlh
bnRWYWx1ZXM7IEJvb2wgdXNlQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXNEZWZhdWx0OyBCb29s
IHVzZURvbGxhclZNOyBCb29sIHVzZURvbGxhclZNRGVmYXVsdDsgT3B0aW9uU3RyaW5nIGZ1bmN0
aW9uT3ZlcnJpZGVzOyBPcHRpb25TdHJpbmcgZnVuY3Rpb25PdmVycmlkZXNEZWZhdWx0OyBCb29s
IHVzZVNpZ2lsbENyYXNoQW5hbHl6ZXI7IEJvb2wgdXNlU2lnaWxsQ3Jhc2hBbmFseXplckRlZmF1
bHQ7IFVuc2lnbmVkIHdhdGNoZG9nOyBVbnNpZ25lZCB3YXRjaGRvZ0RlZmF1bHQ7IEJvb2wgdXNl
UG9sbGluZ1RyYXBzOyBCb29sIHVzZVBvbGxpbmdUcmFwc0RlZmF1bHQ7IEJvb2wgdXNlTWFjaEZv
ckV4Y2VwdGlvbnM7IEJvb2wgdXNlTWFjaEZvckV4Y2VwdGlvbnNEZWZhdWx0OyBCb29sIHVzZUlD
U3RhdHM7IEJvb2wgdXNlSUNTdGF0c0RlZmF1bHQ7IFVuc2lnbmVkIHByb3RvdHlwZUhpdENvdW50
Rm9yTExJbnRDYWNoaW5nOyBVbnNpZ25lZCBwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGlu
Z0RlZmF1bHQ7IEJvb2wgZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnM7IEJvb2wgZHVtcENvbXBp
bGVkUmVnRXhwUGF0dGVybnNEZWZhdWx0OyBCb29sIGR1bXBNb2R1bGVSZWNvcmQ7IEJvb2wgZHVt
cE1vZHVsZVJlY29yZERlZmF1bHQ7IEJvb2wgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZTsgQm9vbCBk
dW1wTW9kdWxlTG9hZGluZ1N0YXRlRGVmYXVsdDsgQm9vbCBleHBvc2VJbnRlcm5hbE1vZHVsZUxv
YWRlcjsgQm9vbCBleHBvc2VJbnRlcm5hbE1vZHVsZUxvYWRlckRlZmF1bHQ7IEJvb2wgdXNlU3Vw
ZXJTYW1wbGVyOyBCb29sIHVzZVN1cGVyU2FtcGxlckRlZmF1bHQ7IEJvb2wgdXNlU291cmNlUHJv
dmlkZXJDYWNoZTsgQm9vbCB1c2VTb3VyY2VQcm92aWRlckNhY2hlRGVmYXVsdDsgQm9vbCB1c2VD
b2RlQ2FjaGU7IEJvb2wgdXNlQ29kZUNhY2hlRGVmYXVsdDsgQm9vbCB1c2VXZWJBc3NlbWJseTsg
Qm9vbCB1c2VXZWJBc3NlbWJseURlZmF1bHQ7IEJvb2wgZmFpbFRvQ29tcGlsZVdlYkFzc2VtYmx5
Q29kZTsgQm9vbCBmYWlsVG9Db21waWxlV2ViQXNzZW1ibHlDb2RlRGVmYXVsdDsgU2l6ZSB3ZWJB
c3NlbWJseVBhcnRpYWxDb21waWxlTGltaXQ7IFNpemUgd2ViQXNzZW1ibHlQYXJ0aWFsQ29tcGls
ZUxpbWl0RGVmYXVsdDsgVW5zaWduZWQgd2ViQXNzZW1ibHlCQlFBaXJPcHRpbWl6YXRpb25MZXZl
bDsgVW5zaWduZWQgd2ViQXNzZW1ibHlCQlFBaXJPcHRpbWl6YXRpb25MZXZlbERlZmF1bHQ7IFVu
c2lnbmVkIHdlYkFzc2VtYmx5QkJRQjNPcHRpbWl6YXRpb25MZXZlbDsgVW5zaWduZWQgd2ViQXNz
ZW1ibHlCQlFCM09wdGltaXphdGlvbkxldmVsRGVmYXVsdDsgVW5zaWduZWQgd2ViQXNzZW1ibHlP
TUdPcHRpbWl6YXRpb25MZXZlbDsgVW5zaWduZWQgd2ViQXNzZW1ibHlPTUdPcHRpbWl6YXRpb25M
ZXZlbERlZmF1bHQ7IFVuc2lnbmVkIHdlYkFzc2VtYmx5QkJRRmFsbGJhY2tTaXplOyBVbnNpZ25l
ZCB3ZWJBc3NlbWJseUJCUUZhbGxiYWNrU2l6ZURlZmF1bHQ7IEJvb2wgdXNlQkJRVGllclVwQ2hl
Y2tzOyBCb29sIHVzZUJCUVRpZXJVcENoZWNrc0RlZmF1bHQ7IEJvb2wgdXNlV2ViQXNzZW1ibHlP
U1I7IEJvb2wgdXNlV2ViQXNzZW1ibHlPU1JEZWZhdWx0OyBJbnQzMiB0aHJlc2hvbGRGb3JCQlFP
cHRpbWl6ZUFmdGVyV2FybVVwOyBJbnQzMiB0aHJlc2hvbGRGb3JCQlFPcHRpbWl6ZUFmdGVyV2Fy
bVVwRGVmYXVsdDsgSW50MzIgdGhyZXNob2xkRm9yQkJRT3B0aW1pemVTb29uOyBJbnQzMiB0aHJl
c2hvbGRGb3JCQlFPcHRpbWl6ZVNvb25EZWZhdWx0OyBJbnQzMiB0aHJlc2hvbGRGb3JPTUdPcHRp
bWl6ZUFmdGVyV2FybVVwOyBJbnQzMiB0aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZUFmdGVyV2FybVVw
RGVmYXVsdDsgSW50MzIgdGhyZXNob2xkRm9yT01HT3B0aW1pemVTb29uOyBJbnQzMiB0aHJlc2hv
bGRGb3JPTUdPcHRpbWl6ZVNvb25EZWZhdWx0OyBJbnQzMiBvbWdUaWVyVXBDb3VudGVySW5jcmVt
ZW50Rm9yTG9vcDsgSW50MzIgb21nVGllclVwQ291bnRlckluY3JlbWVudEZvckxvb3BEZWZhdWx0
OyBJbnQzMiBvbWdUaWVyVXBDb3VudGVySW5jcmVtZW50Rm9yRW50cnk7IEludDMyIG9tZ1RpZXJV
cENvdW50ZXJJbmNyZW1lbnRGb3JFbnRyeURlZmF1bHQ7IEJvb2wgdXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5OyBCb29sIHVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeURlZmF1bHQ7IEJvb2wgbG9nV2Vi
QXNzZW1ibHlNZW1vcnk7IEJvb2wgbG9nV2ViQXNzZW1ibHlNZW1vcnlEZWZhdWx0OyBVbnNpZ25l
ZCB3ZWJBc3NlbWJseUZhc3RNZW1vcnlSZWR6b25lUGFnZXM7IFVuc2lnbmVkIHdlYkFzc2VtYmx5
RmFzdE1lbW9yeVJlZHpvbmVQYWdlc0RlZmF1bHQ7IEJvb2wgY3Jhc2hJZldlYkFzc2VtYmx5Q2Fu
dEZhc3RNZW1vcnk7IEJvb2wgY3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnlEZWZhdWx0
OyBCb29sIGNyYXNoT25GYWlsZWRXZWJBc3NlbWJseVZhbGlkYXRlOyBCb29sIGNyYXNoT25GYWls
ZWRXZWJBc3NlbWJseVZhbGlkYXRlRGVmYXVsdDsgVW5zaWduZWQgbWF4TnVtV2ViQXNzZW1ibHlG
YXN0TWVtb3JpZXM7IFVuc2lnbmVkIG1heE51bVdlYkFzc2VtYmx5RmFzdE1lbW9yaWVzRGVmYXVs
dDsgQm9vbCB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQ7IEJvb2wgdXNlRmFzdFRMU0Zvcldhc21D
b250ZXh0RGVmYXVsdDsgQm9vbCB3YXNtQkJRVXNlc0FpcjsgQm9vbCB3YXNtQkJRVXNlc0FpckRl
ZmF1bHQ7IEJvb2wgdXNlV2FzbUxMSW50OyBCb29sIHVzZVdhc21MTEludERlZmF1bHQ7IEJvb2wg
dXNlQkJRSklUOyBCb29sIHVzZUJCUUpJVERlZmF1bHQ7IEJvb2wgdXNlT01HSklUOyBCb29sIHVz
ZU9NR0pJVERlZmF1bHQ7IEJvb2wgdXNlV2FzbUxMSW50UHJvbG9ndWVPU1I7IEJvb2wgdXNlV2Fz
bUxMSW50UHJvbG9ndWVPU1JEZWZhdWx0OyBCb29sIHVzZVdhc21MTEludExvb3BPU1I7IEJvb2wg
dXNlV2FzbUxMSW50TG9vcE9TUkRlZmF1bHQ7IEJvb2wgdXNlV2FzbUxMSW50RXBpbG9ndWVPU1I7
IEJvb2wgdXNlV2FzbUxMSW50RXBpbG9ndWVPU1JEZWZhdWx0OyBPcHRpb25SYW5nZSB3YXNtRnVu
Y3Rpb25JbmRleFJhbmdlVG9Db21waWxlOyBPcHRpb25SYW5nZSB3YXNtRnVuY3Rpb25JbmRleFJh
bmdlVG9Db21waWxlRGVmYXVsdDsgQm9vbCB3YXNtTExJbnRUaWVyc1VwVG9CQlE7IEJvb2wgd2Fz
bUxMSW50VGllcnNVcFRvQkJRRGVmYXVsdDsgU2l6ZSB3ZWJBc3NlbWJseUJCUUFpck1vZGVUaHJl
c2hvbGQ7IFNpemUgd2ViQXNzZW1ibHlCQlFBaXJNb2RlVGhyZXNob2xkRGVmYXVsdDsgQm9vbCB1
c2VXZWJBc3NlbWJseVN0cmVhbWluZ0FwaTsgQm9vbCB1c2VXZWJBc3NlbWJseVN0cmVhbWluZ0Fw
aURlZmF1bHQ7IEJvb2wgdXNlRWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hpbmc7IEJvb2wgdXNl
RWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hpbmdEZWZhdWx0OyBCb29sIHVzZVdlYkFzc2VtYmx5
UmVmZXJlbmNlczsgQm9vbCB1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXNEZWZhdWx0OyBCb29sIHVz
ZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXM7IEJvb2wgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlc0Rl
ZmF1bHQ7IEJvb2wgdXNlV2Vha1JlZnM7IEJvb2wgdXNlV2Vha1JlZnNEZWZhdWx0OyBCb29sIHVz
ZUJpZ0ludDsgQm9vbCB1c2VCaWdJbnREZWZhdWx0OyBCb29sIHVzZUludGxEaXNwbGF5TmFtZXM7
IEJvb2wgdXNlSW50bERpc3BsYXlOYW1lc0RlZmF1bHQ7IEJvb2wgdXNlQXJyYXlBbGxvY2F0aW9u
UHJvZmlsaW5nOyBCb29sIHVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZ0RlZmF1bHQ7IEJvb2wg
Zm9yY2VQb2x5UHJvdG87IEJvb2wgZm9yY2VQb2x5UHJvdG9EZWZhdWx0OyBCb29sIGZvcmNlTWlu
aVZNTW9kZTsgQm9vbCBmb3JjZU1pbmlWTU1vZGVEZWZhdWx0OyBCb29sIHVzZVRyYWNlUG9pbnRz
OyBCb29sIHVzZVRyYWNlUG9pbnRzRGVmYXVsdDsgQm9vbCB0cmFjZUxMSW50RXhlY3V0aW9uOyBC
b29sIHRyYWNlTExJbnRFeGVjdXRpb25EZWZhdWx0OyBCb29sIHRyYWNlTExJbnRTbG93UGF0aDsg
Qm9vbCB0cmFjZUxMSW50U2xvd1BhdGhEZWZhdWx0OyBCb29sIHRyYWNlQmFzZWxpbmVKSVRFeGVj
dXRpb247IEJvb2wgdHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbkRlZmF1bHQ7IFVuc2lnbmVkIHRo
cmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IFVuc2lnbmVkIHRocmVzaG9sZEZv
ckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hEZWZhdWx0OyBPcHRpb25TdHJpbmcgZGlza0NhY2hl
UGF0aDsgT3B0aW9uU3RyaW5nIGRpc2tDYWNoZVBhdGhEZWZhdWx0OyBCb29sIGZvcmNlRGlza0Nh
Y2hlOyBCb29sIGZvcmNlRGlza0NhY2hlRGVmYXVsdDsgQm9vbCB2YWxpZGF0ZUFic3RyYWN0SW50
ZXJwcmV0ZXJTdGF0ZTsgQm9vbCB2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZURlZmF1
bHQ7IERvdWJsZSB2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZVByb2JhYmlsaXR5OyBE
b3VibGUgdmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGVQcm9iYWJpbGl0eURlZmF1bHQ7
IE9wdGlvblN0cmluZyBkdW1wSklUTWVtb3J5UGF0aDsgT3B0aW9uU3RyaW5nIGR1bXBKSVRNZW1v
cnlQYXRoRGVmYXVsdDsgRG91YmxlIGR1bXBKSVRNZW1vcnlGbHVzaEludGVydmFsOyBEb3VibGUg
ZHVtcEpJVE1lbW9yeUZsdXNoSW50ZXJ2YWxEZWZhdWx0OyBCb29sIHVzZVVubGlua2VkQ29kZUJs
b2NrSmV0dGlzb25pbmc7IEJvb2wgdXNlVW5saW5rZWRDb2RlQmxvY2tKZXR0aXNvbmluZ0RlZmF1
bHQ7IEJvb2wgZm9yY2VPU1JFeGl0VG9MTEludDsgQm9vbCBmb3JjZU9TUkV4aXRUb0xMSW50RGVm
YXVsdDsgVW5zaWduZWQgZ2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnM7IFVuc2lnbmVk
IGdldEJ5VmFsSUNNYXhOdW1iZXJPZklkZW50aWZpZXJzRGVmYXVsdDsgQm9vbCB1c2VQdWJsaWND
bGFzc0ZpZWxkczsgQm9vbCB1c2VQdWJsaWNDbGFzc0ZpZWxkc0RlZmF1bHQ7IEJvb2wgdXNlUmFu
ZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbjsgQm9vbCB1c2VSYW5kb21pemluZ0V4
ZWN1dGFibGVJc2xhbmRBbGxvY2F0aW9uRGVmYXVsdDsgQm9vbCBleHBvc2VQcm9maWxlcnNPbkds
b2JhbE9iamVjdDsgQm9vbCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdERlZmF1bHQ7IEJv
b2wgYWxsb3dVbnN1cHBvcnRlZFRpZXJzOyBCb29sIGFsbG93VW5zdXBwb3J0ZWRUaWVyc0RlZmF1
bHQ7IEJvb2wgdXNlUHJpdmF0ZUNsYXNzRmllbGRzOyBCb29sIHVzZVByaXZhdGVDbGFzc0ZpZWxk
c0RlZmF1bHQ7IEJvb2wgcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmc7IEJv
b2wgcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmdEZWZhdWx0OyBTaXplIGVh
cmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdDsgU2l6ZSBlYXJseVJldHVybkZyb21JbmZp
bml0ZUxvb3BzTGltaXREZWZhdWx0OyBCb29sIHVzZUxJQ01GdXp6aW5nOyBCb29sIHVzZUxJQ01G
dXp6aW5nRGVmYXVsdDsgVW5zaWduZWQgc2VlZEZvckxJQ01GdXp6ZXI7IFVuc2lnbmVkIHNlZWRG
b3JMSUNNRnV6emVyRGVmYXVsdDsgRG91YmxlIGFsbG93SG9pc3RpbmdMSUNNUHJvYmFiaWxpdHk7
IERvdWJsZSBhbGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5RGVmYXVsdDsNCg0KfTsNCg0KDQpz
dGF0aWNfYXNzZXJ0KHNpemVvZihPcHRpb25zU3RvcmFnZSkgPD0gMTYgKiBLQik7DQoNCn0gDQoj
bGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxKU0NDb25maWcuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1dURkNvbmZpZy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9BdG9taWNzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHBhY2socHVzaCwg
OCkNCiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0
MTgwIDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4NyA0NTg4IDQ2MTkgNDYy
MyA0NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODggNTAyNiA1MDI3IDUwNDUg
NjI5NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCg0KDQoNCg0K
I2xpbmUgMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYXRvbWljIg0KDQoNCg0KDQoNCg0KI2xpbmUgNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KI2xpbmUgNDcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDEwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxh
dG9taWMiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0K
DQoNCmV4dGVybiAiQyIgaW5saW5lIHZvaWQgYXRvbWljX3RocmVhZF9mZW5jZShjb25zdCBtZW1v
cnlfb3JkZXIgX09yZGVyKSBub2V4Y2VwdCB7DQogICAgaWYgKF9PcmRlciA9PSBtZW1vcnlfb3Jk
ZXJfcmVsYXhlZCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KDQoNCiAgICBfX3ByYWdtYSh3
YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0OTk2KSkgX1JlYWRXcml0
ZUJhcnJpZXIoKSBfX3ByYWdtYSh3YXJuaW5nKHBvcCkpOw0KICAgIGlmIChfT3JkZXIgPT0gbWVt
b3J5X29yZGVyX3NlcV9jc3QpIHsNCiAgICAgICAgdm9sYXRpbGUgbG9uZyBfR3VhcmQ7IA0KDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQojcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3MgOiA2
MDAxKSANCiNwcmFnbWEgd2FybmluZyhzdXBwcmVzcyA6IDI4MTEzKSANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgKHZvaWQpIF9JbnRlcmxvY2tlZEluY3JlbWVu
dCgmX0d1YXJkKTsNCiAgICAgICAgX19wcmFnbWEod2FybmluZyhwdXNoKSkgX19wcmFnbWEod2Fy
bmluZyhkaXNhYmxlIDogNDk5NikpIF9SZWFkV3JpdGVCYXJyaWVyKCkgX19wcmFnbWEod2Fybmlu
Zyhwb3ApKTsNCiAgICB9DQoNCg0KDQoNCiNsaW5lIDE0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQp9DQoNCmV4dGVybiAiQyIgaW5s
aW5lIHZvaWQgYXRvbWljX3NpZ25hbF9mZW5jZShjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyKSBu
b2V4Y2VwdCB7DQogICAgaWYgKF9PcmRlciAhPSBtZW1vcnlfb3JkZXJfcmVsYXhlZCkgew0KICAg
ICAgICBfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0
OTk2KSkgX1JlYWRXcml0ZUJhcnJpZXIoKSBfX3ByYWdtYSh3YXJuaW5nKHBvcCkpOw0KICAgIH0N
Cn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGtpbGxfZGVwZW5kZW5jeShfVHkgX0Fy
Zykgbm9leGNlcHQgeyANCiAgICByZXR1cm4gX0FyZzsNCn0NCg0KDQppbmxpbmUgdm9pZCBfQ2hl
Y2tfbWVtb3J5X29yZGVyKGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0IHsNCiAg
ICANCiAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihfT3JkZXIpID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihtZW1vcnlfb3JkZXJfc2VxX2NzdCkpIHsNCiAgICAgICAgOw0KICAg
IH0NCn0NCg0KDQppbmxpbmUgdm9pZCBfQ2hlY2tfc3RvcmVfbWVtb3J5X29yZGVyKGNvbnN0IG1l
bW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0IHsNCiAgICBzd2l0Y2ggKF9PcmRlcikgew0KICAg
IGNhc2UgbWVtb3J5X29yZGVyX3JlbGF4ZWQ6DQogICAgY2FzZSBtZW1vcnlfb3JkZXJfcmVsZWFz
ZToNCiAgICBjYXNlIG1lbW9yeV9vcmRlcl9zZXFfY3N0Og0KICAgICAgICANCiAgICAgICAgYnJl
YWs7DQogICAgY2FzZSBtZW1vcnlfb3JkZXJfY29uc3VtZToNCiAgICBjYXNlIG1lbW9yeV9vcmRl
cl9hY3F1aXJlOg0KICAgIGNhc2UgbWVtb3J5X29yZGVyX2FjcV9yZWw6DQogICAgZGVmYXVsdDoN
CiAgICAgICAgOw0KICAgICAgICBicmVhazsNCiAgICB9DQp9DQoNCg0KaW5saW5lIHZvaWQgX0No
ZWNrX2xvYWRfbWVtb3J5X29yZGVyKGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0
IHsNCiAgICBzd2l0Y2ggKF9PcmRlcikgew0KICAgIGNhc2UgbWVtb3J5X29yZGVyX3JlbGF4ZWQ6
DQogICAgY2FzZSBtZW1vcnlfb3JkZXJfY29uc3VtZToNCiAgICBjYXNlIG1lbW9yeV9vcmRlcl9h
Y3F1aXJlOg0KICAgIGNhc2UgbWVtb3J5X29yZGVyX3NlcV9jc3Q6DQogICAgICAgIA0KICAgICAg
ICBicmVhazsNCiAgICBjYXNlIG1lbW9yeV9vcmRlcl9yZWxlYXNlOg0KICAgIGNhc2UgbWVtb3J5
X29yZGVyX2FjcV9yZWw6DQogICAgZGVmYXVsdDoNCiAgICAgICAgOw0KICAgICAgICBicmVhazsN
CiAgICB9DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgbWVtb3J5X29yZGVyIF9Db21iaW5l
X2Nhc19tZW1vcnlfb3JkZXJzKA0KICAgIGNvbnN0IG1lbW9yeV9vcmRlciBfU3VjY2VzcywgY29u
c3QgbWVtb3J5X29yZGVyIF9GYWlsdXJlKSBub2V4Y2VwdCB7DQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBzdGF0aWMgY29u
c3RleHByIG1lbW9yeV9vcmRlciBfQ29tYmluZWRfbWVtb3J5X29yZGVyc1s2XVs2XSA9IHsNCiAg
ICAgICAge21lbW9yeV9vcmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfY29uc3VtZSwgbWVtb3J5
X29yZGVyX2FjcXVpcmUsIG1lbW9yeV9vcmRlcl9yZWxlYXNlLCBtZW1vcnlfb3JkZXJfYWNxX3Jl
bCwNCiAgICAgICAgICAgIG1lbW9yeV9vcmRlcl9zZXFfY3N0fSwNCiAgICAgICAge21lbW9yeV9v
cmRlcl9jb25zdW1lLCBtZW1vcnlfb3JkZXJfY29uc3VtZSwgbWVtb3J5X29yZGVyX2FjcXVpcmUs
IG1lbW9yeV9vcmRlcl9hY3FfcmVsLCBtZW1vcnlfb3JkZXJfYWNxX3JlbCwNCiAgICAgICAgICAg
IG1lbW9yeV9vcmRlcl9zZXFfY3N0fSwNCiAgICAgICAge21lbW9yeV9vcmRlcl9hY3F1aXJlLCBt
ZW1vcnlfb3JkZXJfYWNxdWlyZSwgbWVtb3J5X29yZGVyX2FjcXVpcmUsIG1lbW9yeV9vcmRlcl9h
Y3FfcmVsLCBtZW1vcnlfb3JkZXJfYWNxX3JlbCwNCiAgICAgICAgICAgIG1lbW9yeV9vcmRlcl9z
ZXFfY3N0fSwNCiAgICAgICAge21lbW9yeV9vcmRlcl9yZWxlYXNlLCBtZW1vcnlfb3JkZXJfYWNx
X3JlbCwgbWVtb3J5X29yZGVyX2FjcV9yZWwsIG1lbW9yeV9vcmRlcl9yZWxlYXNlLCBtZW1vcnlf
b3JkZXJfYWNxX3JlbCwNCiAgICAgICAgICAgIG1lbW9yeV9vcmRlcl9zZXFfY3N0fSwNCiAgICAg
ICAge21lbW9yeV9vcmRlcl9hY3FfcmVsLCBtZW1vcnlfb3JkZXJfYWNxX3JlbCwgbWVtb3J5X29y
ZGVyX2FjcV9yZWwsIG1lbW9yeV9vcmRlcl9hY3FfcmVsLCBtZW1vcnlfb3JkZXJfYWNxX3JlbCwN
CiAgICAgICAgICAgIG1lbW9yeV9vcmRlcl9zZXFfY3N0fSwNCiAgICAgICAge21lbW9yeV9vcmRl
cl9zZXFfY3N0LCBtZW1vcnlfb3JkZXJfc2VxX2NzdCwgbWVtb3J5X29yZGVyX3NlcV9jc3QsIG1l
bW9yeV9vcmRlcl9zZXFfY3N0LCBtZW1vcnlfb3JkZXJfc2VxX2NzdCwNCiAgICAgICAgICAgIG1l
bW9yeV9vcmRlcl9zZXFfY3N0fX07DQoNCiAgICBfQ2hlY2tfbWVtb3J5X29yZGVyKF9TdWNjZXNz
KTsNCiAgICBfQ2hlY2tfbG9hZF9tZW1vcnlfb3JkZXIoX0ZhaWx1cmUpOw0KICAgIHJldHVybiBf
Q29tYmluZWRfbWVtb3J5X29yZGVyc1tzdGF0aWNfY2FzdDxpbnQ+KF9TdWNjZXNzKV1bc3RhdGlj
X2Nhc3Q8aW50PihfRmFpbHVyZSldOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW50ZWdyYWws
IGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gX0ludGVncmFsIF9BdG9taWNfcmVpbnRlcnByZXRf
YXMoY29uc3QgX1R5JiBfU291cmNlKSBub2V4Y2VwdCB7DQogICAgDQogICAgc3RhdGljX2Fzc2Vy
dChpc19pbnRlZ3JhbF92PF9JbnRlZ3JhbD4sICJUcmllZCB0byByZWludGVycHJldCBtZW1vcnkg
YXMgbm9uLWludGVncmFsIik7DQoNCiAgICBpZiBjb25zdGV4cHIgKGlzX2ludGVncmFsX3Y8X1R5
PiAmJiBzaXplb2YoX0ludGVncmFsKSA9PSBzaXplb2YoX1R5KSkgew0KICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8X0ludGVncmFsPihfU291cmNlKTsNCiAgICB9IGVsc2UgaWYgY29uc3RleHBy
IChpc19wb2ludGVyX3Y8X1R5PiAmJiBzaXplb2YoX0ludGVncmFsKSA9PSBzaXplb2YoX1R5KSkg
ew0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfSW50ZWdyYWw+KF9Tb3VyY2UpOw0K
ICAgIH0gZWxzZQ0KI2xpbmUgMjQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICB7DQogICAgICAgIF9JbnRlZ3JhbCBfUmVzdWx0
e307IA0KICAgICAgICA6OiBtZW1jcHkoJl9SZXN1bHQsIDo6c3RkOjogYWRkcmVzc29mKF9Tb3Vy
Y2UpLCBzaXplb2YoX1NvdXJjZSkpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQp9
DQoNCg0KaW5saW5lIHZvaWQgX0xvYWRfYmFycmllcihjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVy
KSBub2V4Y2VwdCB7IA0KICAgIHN3aXRjaCAoX09yZGVyKSB7DQogICAgY2FzZSBtZW1vcnlfb3Jk
ZXJfcmVsYXhlZDoNCiAgICAgICAgDQogICAgICAgIGJyZWFrOw0KICAgIGRlZmF1bHQ6DQogICAg
Y2FzZSBtZW1vcnlfb3JkZXJfcmVsZWFzZToNCiAgICBjYXNlIG1lbW9yeV9vcmRlcl9hY3FfcmVs
Og0KICAgICAgICA7DQogICAgICAgIA0KICAgIGNhc2UgbWVtb3J5X29yZGVyX2NvbnN1bWU6DQog
ICAgY2FzZSBtZW1vcnlfb3JkZXJfYWNxdWlyZToNCiAgICBjYXNlIG1lbW9yeV9vcmRlcl9zZXFf
Y3N0Og0KICAgICAgICBfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5nKGRp
c2FibGUgOiA0OTk2KSkgX1JlYWRXcml0ZUJhcnJpZXIoKSBfX3ByYWdtYSh3YXJuaW5nKHBvcCkp
Ow0KICAgICAgICBicmVhazsNCiAgICB9DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0
cnVjdCBfQXRvbWljX3BhZGRlZCB7DQogICAgYWxpZ25hcyhzaXplb2YoX1R5KSkgbXV0YWJsZSBf
VHkgX1ZhbHVlOyANCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9U
eSwgc2l6ZV90ID0gc2l6ZW9mKF9UeSk+DQoNCg0KI2xpbmUgMzE1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCnN0cnVjdCBfQXRvbWlj
X3N0b3JhZ2Ugew0KICAgIA0KICAgIA0KDQogICAgX0F0b21pY19zdG9yYWdlKCkgPSBkZWZhdWx0
Ow0KDQogICAgIGNvbnN0ZXhwciBfQXRvbWljX3N0b3JhZ2UoY29uc3QgX1R5IF9WYWx1ZSkgbm9l
eGNlcHQgOiBfU3RvcmFnZShfVmFsdWUpIHsNCiAgICAgICAgDQogICAgfQ0KDQogICAgdm9pZCBz
dG9yZShjb25zdCBfVHkgX1ZhbHVlLCBjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyID0gbWVtb3J5
X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIF9DaGVja19zdG9y
ZV9tZW1vcnlfb3JkZXIoX09yZGVyKTsNCiAgICAgICAgX0xvY2soKTsNCiAgICAgICAgX1N0b3Jh
Z2UgPSBfVmFsdWU7DQogICAgICAgIF9VbmxvY2soKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIF9UeSBsb2FkKGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIgPSBtZW1vcnlfb3JkZXJfc2Vx
X2NzdCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgX0NoZWNrX2xvYWRfbWVt
b3J5X29yZGVyKF9PcmRlcik7DQogICAgICAgIF9Mb2NrKCk7DQogICAgICAgIF9UeSBfTG9jYWwo
X1N0b3JhZ2UpOw0KICAgICAgICBfVW5sb2NrKCk7DQogICAgICAgIHJldHVybiBfTG9jYWw7DQog
ICAgfQ0KDQogICAgX1R5IGV4Y2hhbmdlKGNvbnN0IF9UeSBfVmFsdWUsIGNvbnN0IG1lbW9yeV9v
cmRlciBfT3JkZXIgPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQgew0KICAgICAgICAN
CiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIpOw0KICAgICAgICBfTG9jaygpOw0K
ICAgICAgICBfVHkgX1Jlc3VsdChfU3RvcmFnZSk7DQogICAgICAgIF9TdG9yYWdlID0gX1ZhbHVl
Ow0KICAgICAgICBfVW5sb2NrKCk7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCg0K
ICAgIGJvb2wgY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoX1R5JiBfRXhwZWN0ZWQsIGNvbnN0IF9U
eSBfRGVzaXJlZCwNCiAgICAgICAgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9yeV9v
cmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7IA0KICAgICAgICBfQ2hlY2tfbWVtb3J5X29yZGVyKF9P
cmRlcik7DQogICAgICAgIGNvbnN0IGF1dG8gX1N0b3JhZ2VfcHRyICA9IDo6c3RkOjogYWRkcmVz
c29mKF9TdG9yYWdlKTsNCiAgICAgICAgY29uc3QgYXV0byBfRXhwZWN0ZWRfcHRyID0gOjpzdGQ6
OiBhZGRyZXNzb2YoX0V4cGVjdGVkKTsNCiAgICAgICAgYm9vbCBfUmVzdWx0Ow0KICAgICAgICBf
TG9jaygpOw0KICAgICAgICBpZiAoOjogbWVtY21wKF9TdG9yYWdlX3B0ciwgX0V4cGVjdGVkX3B0
ciwgc2l6ZW9mKF9UeSkpID09IDApIHsNCiAgICAgICAgICAgIDo6IG1lbWNweShfU3RvcmFnZV9w
dHIsIDo6c3RkOjogYWRkcmVzc29mKF9EZXNpcmVkKSwgc2l6ZW9mKF9UeSkpOw0KICAgICAgICAg
ICAgX1Jlc3VsdCA9IHRydWU7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICA6OiBtZW1j
cHkoX0V4cGVjdGVkX3B0ciwgX1N0b3JhZ2VfcHRyLCBzaXplb2YoX1R5KSk7DQogICAgICAgICAg
ICBfUmVzdWx0ID0gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBfVW5sb2NrKCk7DQogICAg
ICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCg0KDQogICAgdm9pZCBfTG9jaygpIGNvbnN0IG5v
ZXhjZXB0IHsgDQogICAgICAgIHdoaWxlIChfSW50ZXJsb2NrZWRFeGNoYW5nZSgmX1NwaW5sb2Nr
LCAxKSkgew0KICAgICAgICAgICAgOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBfVW5s
b2NrKCkgY29uc3Qgbm9leGNlcHQgeyANCg0KDQoNCg0KI2xpbmUgMzg0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAgICAgX0lu
dGVybG9ja2VkRXhjaGFuZ2UoJl9TcGlubG9jaywgMCk7DQojbGluZSAzODYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KICAgIH0NCg0K
cHJpdmF0ZToNCiAgICBtdXRhYmxlIGxvbmcgX1NwaW5sb2NrID0gMDsNCg0KcHVibGljOg0KICAg
IF9UeSBfU3RvcmFnZXt9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDQxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxhdG9taWMiDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9BdG9taWNf
c3RvcmFnZTxfVHksIDE+IHsgDQogICAgX0F0b21pY19zdG9yYWdlKCkgPSBkZWZhdWx0Ow0KDQog
ICAgIGNvbnN0ZXhwciBfQXRvbWljX3N0b3JhZ2UoY29uc3QgX1R5IF9WYWx1ZSkgbm9leGNlcHQg
OiBfU3RvcmFnZXtfVmFsdWV9IHsNCiAgICAgICAgDQogICAgfQ0KDQogICAgdm9pZCBzdG9yZShj
b25zdCBfVHkgX1ZhbHVlKSBub2V4Y2VwdCB7IA0KICAgICAgICBjb25zdCBhdXRvIF9NZW0gICAg
ICA9IF9BdG9taWNfYWRkcmVzc19hczxjaGFyPihfU3RvcmFnZSk7DQogICAgICAgIGNvbnN0IGNo
YXIgX0FzX2J5dGVzID0gX0F0b21pY19yZWludGVycHJldF9hczxjaGFyPihfVmFsdWUpOw0KDQoN
Cg0KDQojbGluZSA0MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcYXRvbWljIg0KICAgICAgICAodm9pZCkgX0ludGVybG9ja2VkRXhjaGFuZ2U4KF9N
ZW0sIF9Bc19ieXRlcyk7DQojbGluZSA0MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmUoY29u
c3QgX1R5IF9WYWx1ZSwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlcikgbm9leGNlcHQgeyANCiAg
ICAgICAgY29uc3QgYXV0byBfTWVtICAgICAgPSBfQXRvbWljX2FkZHJlc3NfYXM8Y2hhcj4oX1N0
b3JhZ2UpOw0KICAgICAgICBjb25zdCBjaGFyIF9Bc19ieXRlcyA9IF9BdG9taWNfcmVpbnRlcnBy
ZXRfYXM8Y2hhcj4oX1ZhbHVlKTsNCiAgICAgICAgc3dpdGNoIChfT3JkZXIpIHsNCiAgICAgICAg
Y2FzZSBtZW1vcnlfb3JkZXJfcmVsYXhlZDoNCiAgICAgICAgICAgIF9faXNvX3ZvbGF0aWxlX3N0
b3JlOChfTWVtLCBfQXNfYnl0ZXMpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBjYXNl
IG1lbW9yeV9vcmRlcl9yZWxlYXNlOg0KICAgICAgICAgICAgX19wcmFnbWEod2FybmluZyhwdXNo
KSkgX19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5NikpIF9SZWFkV3JpdGVCYXJyaWVyKCkg
X19wcmFnbWEod2FybmluZyhwb3ApKTsNCiAgICAgICAgICAgIF9faXNvX3ZvbGF0aWxlX3N0b3Jl
OChfTWVtLCBfQXNfYnl0ZXMpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBkZWZhdWx0
Og0KICAgICAgICBjYXNlIG1lbW9yeV9vcmRlcl9jb25zdW1lOg0KICAgICAgICBjYXNlIG1lbW9y
eV9vcmRlcl9hY3F1aXJlOg0KICAgICAgICBjYXNlIG1lbW9yeV9vcmRlcl9hY3FfcmVsOg0KICAg
ICAgICAgICAgOw0KICAgICAgICAgICAgDQogICAgICAgIGNhc2UgbWVtb3J5X29yZGVyX3NlcV9j
c3Q6DQogICAgICAgICAgICBzdG9yZShfVmFsdWUpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAg
ICAgICB9DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBfVHkgbG9hZCgpIGNvbnN0IG5vZXhj
ZXB0IHsgDQogICAgICAgIGNvbnN0IGF1dG8gX01lbSA9IF9BdG9taWNfYWRkcmVzc19hczxjaGFy
PihfU3RvcmFnZSk7DQogICAgICAgIGNoYXIgX0FzX2J5dGVzICA9IF9faXNvX3ZvbGF0aWxlX2xv
YWQ4KF9NZW0pOw0KICAgICAgICBfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJu
aW5nKGRpc2FibGUgOiA0OTk2KSkgX1JlYWRXcml0ZUJhcnJpZXIoKSBfX3ByYWdtYSh3YXJuaW5n
KHBvcCkpOw0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfVHkmPihfQXNfYnl0ZXMp
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gX1R5IGxvYWQoY29uc3QgbWVtb3J5X29yZGVy
IF9PcmRlcikgY29uc3Qgbm9leGNlcHQgeyANCiAgICAgICAgY29uc3QgYXV0byBfTWVtID0gX0F0
b21pY19hZGRyZXNzX2FzPGNoYXI+KF9TdG9yYWdlKTsNCiAgICAgICAgY2hhciBfQXNfYnl0ZXMg
ID0gX19pc29fdm9sYXRpbGVfbG9hZDgoX01lbSk7DQogICAgICAgIF9Mb2FkX2JhcnJpZXIoX09y
ZGVyKTsNCiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1R5Jj4oX0FzX2J5dGVzKTsN
CiAgICB9DQoNCiAgICBfVHkgZXhjaGFuZ2UoY29uc3QgX1R5IF9WYWx1ZSwgY29uc3QgbWVtb3J5
X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAg
IA0KICAgICAgICBjaGFyIF9Bc19ieXRlczsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihf
T3JkZXIpOyBfQXNfYnl0ZXMgPSBfSW50ZXJsb2NrZWRFeGNoYW5nZTgoX0F0b21pY19hZGRyZXNz
X2FzPGNoYXI+KF9TdG9yYWdlKSwgX0F0b21pY19yZWludGVycHJldF9hczxjaGFyPihfVmFsdWUp
KTsNCiNsaW5lIDQ3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxhdG9taWMiDQogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PF9UeSY+KF9B
c19ieXRlcyk7DQogICAgfQ0KDQogICAgYm9vbCBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfVHkm
IF9FeHBlY3RlZCwgY29uc3QgX1R5IF9EZXNpcmVkLA0KICAgICAgICBjb25zdCBtZW1vcnlfb3Jk
ZXIgX09yZGVyID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0IHsgDQogICAgICAgIGNv
bnN0IGNoYXIgX0V4cGVjdGVkX2J5dGVzID0gX0F0b21pY19yZWludGVycHJldF9hczxjaGFyPihf
RXhwZWN0ZWQpOyANCiAgICAgICAgY2hhciBfUHJldl9ieXRlczsNCiAgICAgICAgX0NoZWNrX21l
bW9yeV9vcmRlcihfT3JkZXIpOyBfUHJldl9ieXRlcyA9IF9JbnRlcmxvY2tlZENvbXBhcmVFeGNo
YW5nZTgoX0F0b21pY19hZGRyZXNzX2FzPGNoYXI+KF9TdG9yYWdlKSwgX0F0b21pY19yZWludGVy
cHJldF9hczxjaGFyPihfRGVzaXJlZCksIF9FeHBlY3RlZF9ieXRlcyk7DQojbGluZSA0ODcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0K
ICAgICAgICBpZiAoX1ByZXZfYnl0ZXMgPT0gX0V4cGVjdGVkX2J5dGVzKSB7DQogICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
ciY+KF9FeHBlY3RlZCkgPSBfUHJldl9ieXRlczsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
IH0NCg0KICAgIF9BdG9taWNfcGFkZGVkPF9UeT4gX1N0b3JhZ2U7DQp9Ow0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5Pg0Kc3RydWN0IF9BdG9taWNfc3RvcmFnZTxfVHksIDI+IHsgDQogICAgX0F0b21p
Y19zdG9yYWdlKCkgPSBkZWZhdWx0Ow0KDQogICAgIGNvbnN0ZXhwciBfQXRvbWljX3N0b3JhZ2Uo
Y29uc3QgX1R5IF9WYWx1ZSkgbm9leGNlcHQgOiBfU3RvcmFnZXtfVmFsdWV9IHsNCiAgICAgICAg
DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZShjb25zdCBfVHkgX1ZhbHVlKSBub2V4Y2VwdCB7IA0K
ICAgICAgICBjb25zdCBhdXRvIF9NZW0gICAgICAgPSBfQXRvbWljX2FkZHJlc3NfYXM8c2hvcnQ+
KF9TdG9yYWdlKTsNCiAgICAgICAgY29uc3Qgc2hvcnQgX0FzX2J5dGVzID0gX0F0b21pY19yZWlu
dGVycHJldF9hczxzaG9ydD4oX1ZhbHVlKTsNCg0KDQoNCg0KI2xpbmUgNTE0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAgICAg
KHZvaWQpIF9JbnRlcmxvY2tlZEV4Y2hhbmdlMTYoX01lbSwgX0FzX2J5dGVzKTsNCiNsaW5lIDUx
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9t
aWMiDQogICAgfQ0KDQogICAgdm9pZCBzdG9yZShjb25zdCBfVHkgX1ZhbHVlLCBjb25zdCBtZW1v
cnlfb3JkZXIgX09yZGVyKSBub2V4Y2VwdCB7IA0KICAgICAgICBjb25zdCBhdXRvIF9NZW0gICAg
ICAgPSBfQXRvbWljX2FkZHJlc3NfYXM8c2hvcnQ+KF9TdG9yYWdlKTsNCiAgICAgICAgY29uc3Qg
c2hvcnQgX0FzX2J5dGVzID0gX0F0b21pY19yZWludGVycHJldF9hczxzaG9ydD4oX1ZhbHVlKTsN
CiAgICAgICAgc3dpdGNoIChfT3JkZXIpIHsNCiAgICAgICAgY2FzZSBtZW1vcnlfb3JkZXJfcmVs
YXhlZDoNCiAgICAgICAgICAgIF9faXNvX3ZvbGF0aWxlX3N0b3JlMTYoX01lbSwgX0FzX2J5dGVz
KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgY2FzZSBtZW1vcnlfb3JkZXJfcmVsZWFz
ZToNCiAgICAgICAgICAgIF9fcHJhZ21hKHdhcm5pbmcocHVzaCkpIF9fcHJhZ21hKHdhcm5pbmco
ZGlzYWJsZSA6IDQ5OTYpKSBfUmVhZFdyaXRlQmFycmllcigpIF9fcHJhZ21hKHdhcm5pbmcocG9w
KSk7DQogICAgICAgICAgICBfX2lzb192b2xhdGlsZV9zdG9yZTE2KF9NZW0sIF9Bc19ieXRlcyk7
DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgIGNhc2UgbWVt
b3J5X29yZGVyX2NvbnN1bWU6DQogICAgICAgIGNhc2UgbWVtb3J5X29yZGVyX2FjcXVpcmU6DQog
ICAgICAgIGNhc2UgbWVtb3J5X29yZGVyX2FjcV9yZWw6DQogICAgICAgICAgICA7DQogICAgICAg
ICAgICANCiAgICAgICAgY2FzZSBtZW1vcnlfb3JkZXJfc2VxX2NzdDoNCiAgICAgICAgICAgIHN0
b3JlKF9WYWx1ZSk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIF9UeSBsb2FkKCkgY29uc3Qgbm9leGNlcHQgeyANCiAgICAgICAgY29u
c3QgYXV0byBfTWVtID0gX0F0b21pY19hZGRyZXNzX2FzPHNob3J0PihfU3RvcmFnZSk7DQogICAg
ICAgIHNob3J0IF9Bc19ieXRlcyA9IF9faXNvX3ZvbGF0aWxlX2xvYWQxNihfTWVtKTsNCiAgICAg
ICAgX19wcmFnbWEod2FybmluZyhwdXNoKSkgX19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5
NikpIF9SZWFkV3JpdGVCYXJyaWVyKCkgX19wcmFnbWEod2FybmluZyhwb3ApKTsNCiAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1R5Jj4oX0FzX2J5dGVzKTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIF9UeSBsb2FkKGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIGNvbnN0IG5v
ZXhjZXB0IHsgDQogICAgICAgIGNvbnN0IGF1dG8gX01lbSA9IF9BdG9taWNfYWRkcmVzc19hczxz
aG9ydD4oX1N0b3JhZ2UpOw0KICAgICAgICBzaG9ydCBfQXNfYnl0ZXMgPSBfX2lzb192b2xhdGls
ZV9sb2FkMTYoX01lbSk7DQogICAgICAgIF9Mb2FkX2JhcnJpZXIoX09yZGVyKTsNCiAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1R5Jj4oX0FzX2J5dGVzKTsNCiAgICB9DQoNCiAgICBf
VHkgZXhjaGFuZ2UoY29uc3QgX1R5IF9WYWx1ZSwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9
IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICBzaG9y
dCBfQXNfYnl0ZXM7DQogICAgICAgIF9DaGVja19tZW1vcnlfb3JkZXIoX09yZGVyKTsgX0FzX2J5
dGVzID0gX0ludGVybG9ja2VkRXhjaGFuZ2UxNihfQXRvbWljX2FkZHJlc3NfYXM8c2hvcnQ+KF9T
dG9yYWdlKSwgX0F0b21pY19yZWludGVycHJldF9hczxzaG9ydD4oX1ZhbHVlKSk7DQojbGluZSA1
NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRv
bWljIg0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfVHkmPihfQXNfYnl0ZXMpOw0K
ICAgIH0NCg0KICAgIGJvb2wgY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoX1R5JiBfRXhwZWN0ZWQs
IGNvbnN0IF9UeSBfRGVzaXJlZCwNCiAgICAgICAgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9
IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7IA0KICAgICAgICBjb25zdCBzaG9ydCBf
RXhwZWN0ZWRfYnl0ZXMgPSBfQXRvbWljX3JlaW50ZXJwcmV0X2FzPHNob3J0PihfRXhwZWN0ZWQp
OyANCiAgICAgICAgc2hvcnQgX1ByZXZfYnl0ZXM7DQogICAgICAgIF9DaGVja19tZW1vcnlfb3Jk
ZXIoX09yZGVyKTsgX1ByZXZfYnl0ZXMgPSBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxNihf
QXRvbWljX2FkZHJlc3NfYXM8c2hvcnQ+KF9TdG9yYWdlKSwgX0F0b21pY19yZWludGVycHJldF9h
czxzaG9ydD4oX0Rlc2lyZWQpLCBfRXhwZWN0ZWRfYnl0ZXMpOw0KI2xpbmUgNTY5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAg
ICAgaWYgKF9QcmV2X2J5dGVzID09IF9FeHBlY3RlZF9ieXRlcykgew0KICAgICAgICAgICAgcmV0
dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICA6OiBtZW1jcHkoOjpzdGQ6OiBhZGRyZXNz
b2YoX0V4cGVjdGVkKSwgJl9QcmV2X2J5dGVzLCBzaXplb2YoX1R5KSk7DQogICAgICAgIHJldHVy
biBmYWxzZTsNCiAgICB9DQoNCiAgICBfQXRvbWljX3BhZGRlZDxfVHk+IF9TdG9yYWdlOw0KfTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfQXRvbWljX3N0b3JhZ2U8X1R5LCA0PiB7
IA0KICAgIF9BdG9taWNfc3RvcmFnZSgpID0gZGVmYXVsdDsNCg0KICAgICBjb25zdGV4cHIgX0F0
b21pY19zdG9yYWdlKGNvbnN0IF9UeSBfVmFsdWUpIG5vZXhjZXB0IDogX1N0b3JhZ2V7X1ZhbHVl
fSB7DQogICAgICAgIA0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmUoY29uc3QgX1R5IF9WYWx1ZSkg
bm9leGNlcHQgeyANCg0KDQoNCg0KI2xpbmUgNTk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAgICAgKHZvaWQpIF9JbnRlcmxv
Y2tlZEV4Y2hhbmdlKF9BdG9taWNfYWRkcmVzc19hczxsb25nPihfU3RvcmFnZSksIF9BdG9taWNf
cmVpbnRlcnByZXRfYXM8bG9uZz4oX1ZhbHVlKSk7DQojbGluZSA1OTYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KICAgIH0NCg0KICAg
IHZvaWQgc3RvcmUoY29uc3QgX1R5IF9WYWx1ZSwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlcikg
bm9leGNlcHQgeyANCiAgICAgICAgY29uc3QgYXV0byBfTWVtICAgICA9IF9BdG9taWNfYWRkcmVz
c19hczxpbnQ+KF9TdG9yYWdlKTsNCiAgICAgICAgY29uc3QgaW50IF9Bc19ieXRlcyA9IF9BdG9t
aWNfcmVpbnRlcnByZXRfYXM8aW50PihfVmFsdWUpOw0KICAgICAgICBzd2l0Y2ggKF9PcmRlcikg
ew0KICAgICAgICBjYXNlIG1lbW9yeV9vcmRlcl9yZWxheGVkOg0KICAgICAgICAgICAgX19pc29f
dm9sYXRpbGVfc3RvcmUzMihfTWVtLCBfQXNfYnl0ZXMpOw0KICAgICAgICAgICAgcmV0dXJuOw0K
ICAgICAgICBjYXNlIG1lbW9yeV9vcmRlcl9yZWxlYXNlOg0KICAgICAgICAgICAgX19wcmFnbWEo
d2FybmluZyhwdXNoKSkgX19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5NikpIF9SZWFkV3Jp
dGVCYXJyaWVyKCkgX19wcmFnbWEod2FybmluZyhwb3ApKTsNCiAgICAgICAgICAgIF9faXNvX3Zv
bGF0aWxlX3N0b3JlMzIoX01lbSwgX0FzX2J5dGVzKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAg
ICAgICAgZGVmYXVsdDoNCiAgICAgICAgY2FzZSBtZW1vcnlfb3JkZXJfY29uc3VtZToNCiAgICAg
ICAgY2FzZSBtZW1vcnlfb3JkZXJfYWNxdWlyZToNCiAgICAgICAgY2FzZSBtZW1vcnlfb3JkZXJf
YWNxX3JlbDoNCiAgICAgICAgICAgIDsNCiAgICAgICAgICAgIA0KICAgICAgICBjYXNlIG1lbW9y
eV9vcmRlcl9zZXFfY3N0Og0KICAgICAgICAgICAgc3RvcmUoX1ZhbHVlKTsNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gX1R5IGxvYWQo
KSBjb25zdCBub2V4Y2VwdCB7IA0KICAgICAgICBjb25zdCBhdXRvIF9NZW0gPSBfQXRvbWljX2Fk
ZHJlc3NfYXM8aW50PihfU3RvcmFnZSk7DQogICAgICAgIGF1dG8gX0FzX2J5dGVzICA9IF9faXNv
X3ZvbGF0aWxlX2xvYWQzMihfTWVtKTsNCiAgICAgICAgX19wcmFnbWEod2FybmluZyhwdXNoKSkg
X19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5NikpIF9SZWFkV3JpdGVCYXJyaWVyKCkgX19w
cmFnbWEod2FybmluZyhwb3ApKTsNCiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1R5
Jj4oX0FzX2J5dGVzKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIF9UeSBsb2FkKGNvbnN0
IG1lbW9yeV9vcmRlciBfT3JkZXIpIGNvbnN0IG5vZXhjZXB0IHsgDQogICAgICAgIGNvbnN0IGF1
dG8gX01lbSA9IF9BdG9taWNfYWRkcmVzc19hczxpbnQ+KF9TdG9yYWdlKTsNCiAgICAgICAgYXV0
byBfQXNfYnl0ZXMgID0gX19pc29fdm9sYXRpbGVfbG9hZDMyKF9NZW0pOw0KICAgICAgICBfTG9h
ZF9iYXJyaWVyKF9PcmRlcik7DQogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PF9UeSY+
KF9Bc19ieXRlcyk7DQogICAgfQ0KDQogICAgX1R5IGV4Y2hhbmdlKGNvbnN0IF9UeSBfVmFsdWUs
IGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIgPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNl
cHQgew0KICAgICAgICANCiAgICAgICAgbG9uZyBfQXNfYnl0ZXM7DQogICAgICAgIF9DaGVja19t
ZW1vcnlfb3JkZXIoX09yZGVyKTsgX0FzX2J5dGVzID0gX0ludGVybG9ja2VkRXhjaGFuZ2UoX0F0
b21pY19hZGRyZXNzX2FzPGxvbmc+KF9TdG9yYWdlKSwgX0F0b21pY19yZWludGVycHJldF9hczxs
b25nPihfVmFsdWUpKTsNCiNsaW5lIDY0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQogICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PF9UeSY+KF9Bc19ieXRlcyk7DQogICAgfQ0KDQogICAgYm9vbCBjb21wYXJlX2V4Y2hhbmdl
X3N0cm9uZyhfVHkmIF9FeHBlY3RlZCwgY29uc3QgX1R5IF9EZXNpcmVkLA0KICAgICAgICBjb25z
dCBtZW1vcnlfb3JkZXIgX09yZGVyID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0IHsg
DQogICAgICAgIGNvbnN0IGxvbmcgX0V4cGVjdGVkX2J5dGVzID0gX0F0b21pY19yZWludGVycHJl
dF9hczxsb25nPihfRXhwZWN0ZWQpOyANCiAgICAgICAgbG9uZyBfUHJldl9ieXRlczsNCiAgICAg
ICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIpOyBfUHJldl9ieXRlcyA9IF9JbnRlcmxvY2tl
ZENvbXBhcmVFeGNoYW5nZShfQXRvbWljX2FkZHJlc3NfYXM8bG9uZz4oX1N0b3JhZ2UpLCBfQXRv
bWljX3JlaW50ZXJwcmV0X2FzPGxvbmc+KF9EZXNpcmVkKSwgX0V4cGVjdGVkX2J5dGVzKTsNCiNs
aW5lIDY0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxhdG9taWMiDQogICAgICAgIGlmIChfUHJldl9ieXRlcyA9PSBfRXhwZWN0ZWRfYnl0ZXMpIHsN
CiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgOjogbWVtY3B5
KDo6c3RkOjogYWRkcmVzc29mKF9FeHBlY3RlZCksICZfUHJldl9ieXRlcywgc2l6ZW9mKF9UeSkp
Ow0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgX0F0b21pY19wYWRkZWQ8X1R5
PiBfU3RvcmFnZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0F0b21pY19z
dG9yYWdlPF9UeSwgOD4geyANCiAgICBfQXRvbWljX3N0b3JhZ2UoKSA9IGRlZmF1bHQ7DQoNCiAg
ICAgY29uc3RleHByIF9BdG9taWNfc3RvcmFnZShjb25zdCBfVHkgX1ZhbHVlKSBub2V4Y2VwdCA6
IF9TdG9yYWdle19WYWx1ZX0gew0KICAgICAgICANCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlKGNv
bnN0IF9UeSBfVmFsdWUpIG5vZXhjZXB0IHsgDQogICAgICAgIGNvbnN0IGF1dG8gX01lbSAgICAg
ICAgICAgPSBfQXRvbWljX2FkZHJlc3NfYXM8bG9uZyBsb25nPihfU3RvcmFnZSk7DQogICAgICAg
IGNvbnN0IGxvbmcgbG9uZyBfQXNfYnl0ZXMgPSBfQXRvbWljX3JlaW50ZXJwcmV0X2FzPGxvbmcg
bG9uZz4oX1ZhbHVlKTsNCg0KDQoNCg0KI2xpbmUgNjc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCg0KDQoNCiNsaW5lIDY4MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQog
ICAgICAgICh2b2lkKSBfSW50ZXJsb2NrZWRFeGNoYW5nZTY0KF9NZW0sIF9Bc19ieXRlcyk7DQoj
bGluZSA2ODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYXRvbWljIg0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmUoY29uc3QgX1R5IF9WYWx1ZSwgY29u
c3QgbWVtb3J5X29yZGVyIF9PcmRlcikgbm9leGNlcHQgeyANCiAgICAgICAgY29uc3QgYXV0byBf
TWVtICAgICAgICAgICA9IF9BdG9taWNfYWRkcmVzc19hczxsb25nIGxvbmc+KF9TdG9yYWdlKTsN
CiAgICAgICAgY29uc3QgbG9uZyBsb25nIF9Bc19ieXRlcyA9IF9BdG9taWNfcmVpbnRlcnByZXRf
YXM8bG9uZyBsb25nPihfVmFsdWUpOw0KICAgICAgICBzd2l0Y2ggKF9PcmRlcikgew0KICAgICAg
ICBjYXNlIG1lbW9yeV9vcmRlcl9yZWxheGVkOg0KICAgICAgICAgICAgX19pc29fdm9sYXRpbGVf
c3RvcmU2NChfTWVtLCBfQXNfYnl0ZXMpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBj
YXNlIG1lbW9yeV9vcmRlcl9yZWxlYXNlOg0KICAgICAgICAgICAgX19wcmFnbWEod2FybmluZyhw
dXNoKSkgX19wcmFnbWEod2FybmluZyhkaXNhYmxlIDogNDk5NikpIF9SZWFkV3JpdGVCYXJyaWVy
KCkgX19wcmFnbWEod2FybmluZyhwb3ApKTsNCiAgICAgICAgICAgIF9faXNvX3ZvbGF0aWxlX3N0
b3JlNjQoX01lbSwgX0FzX2J5dGVzKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgZGVm
YXVsdDoNCiAgICAgICAgY2FzZSBtZW1vcnlfb3JkZXJfY29uc3VtZToNCiAgICAgICAgY2FzZSBt
ZW1vcnlfb3JkZXJfYWNxdWlyZToNCiAgICAgICAgY2FzZSBtZW1vcnlfb3JkZXJfYWNxX3JlbDoN
CiAgICAgICAgICAgIDsNCiAgICAgICAgICAgIA0KICAgICAgICBjYXNlIG1lbW9yeV9vcmRlcl9z
ZXFfY3N0Og0KICAgICAgICAgICAgc3RvcmUoX1ZhbHVlKTsNCiAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgfQ0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gX1R5IGxvYWQoKSBjb25zdCBu
b2V4Y2VwdCB7IA0KICAgICAgICBjb25zdCBhdXRvIF9NZW0gPSBfQXRvbWljX2FkZHJlc3NfYXM8
bG9uZyBsb25nPihfU3RvcmFnZSk7DQogICAgICAgIGxvbmcgbG9uZyBfQXNfYnl0ZXM7DQoNCg0K
DQoNCiAgICAgICAgX0FzX2J5dGVzID0gX19pc29fdm9sYXRpbGVfbG9hZDY0KF9NZW0pOw0KICAg
ICAgICBfX3ByYWdtYSh3YXJuaW5nKHB1c2gpKSBfX3ByYWdtYSh3YXJuaW5nKGRpc2FibGUgOiA0
OTk2KSkgX1JlYWRXcml0ZUJhcnJpZXIoKSBfX3ByYWdtYSh3YXJuaW5nKHBvcCkpOw0KI2xpbmUg
NzE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0
b21pYyINCiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1R5Jj4oX0FzX2J5dGVzKTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIF9UeSBsb2FkKGNvbnN0IG1lbW9yeV9vcmRlciBf
T3JkZXIpIGNvbnN0IG5vZXhjZXB0IHsgDQogICAgICAgIGNvbnN0IGF1dG8gX01lbSA9IF9BdG9t
aWNfYWRkcmVzc19hczxsb25nIGxvbmc+KF9TdG9yYWdlKTsNCg0KDQoNCiAgICAgICAgbG9uZyBs
b25nIF9Bc19ieXRlcyA9IF9faXNvX3ZvbGF0aWxlX2xvYWQ2NChfTWVtKTsNCiNsaW5lIDcyNyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMi
DQogICAgICAgIF9Mb2FkX2JhcnJpZXIoX09yZGVyKTsNCiAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8X1R5Jj4oX0FzX2J5dGVzKTsNCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDc0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxhdG9taWMiDQogICAgX1R5IGV4Y2hhbmdlKGNvbnN0IF9UeSBfVmFsdWUsIGNvbnN0IG1lbW9y
eV9vcmRlciBfT3JkZXIgPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQgew0KICAgICAg
ICANCiAgICAgICAgbG9uZyBsb25nIF9Bc19ieXRlczsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9v
cmRlcihfT3JkZXIpOyBfQXNfYnl0ZXMgPSBfSW50ZXJsb2NrZWRFeGNoYW5nZTY0KF9BdG9taWNf
YWRkcmVzc19hczxsb25nIGxvbmc+KF9TdG9yYWdlKSwgX0F0b21pY19yZWludGVycHJldF9hczxs
b25nIGxvbmc+KF9WYWx1ZSkpOw0KI2xpbmUgNzQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8X1R5Jj4oX0FzX2J5dGVzKTsNCiAgICB9DQojbGluZSA3NDkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KDQogICAgYm9v
bCBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfVHkmIF9FeHBlY3RlZCwgY29uc3QgX1R5IF9EZXNp
cmVkLA0KICAgICAgICBjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyID0gbWVtb3J5X29yZGVyX3Nl
cV9jc3QpIG5vZXhjZXB0IHsgDQogICAgICAgIGNvbnN0IGxvbmcgbG9uZyBfRXhwZWN0ZWRfYnl0
ZXMgPSBfQXRvbWljX3JlaW50ZXJwcmV0X2FzPGxvbmcgbG9uZz4oX0V4cGVjdGVkKTsgDQogICAg
ICAgIGxvbmcgbG9uZyBfUHJldl9ieXRlczsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihf
T3JkZXIpOyBfUHJldl9ieXRlcyA9IF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0KF9BdG9t
aWNfYWRkcmVzc19hczxsb25nIGxvbmc+KF9TdG9yYWdlKSwgX0F0b21pY19yZWludGVycHJldF9h
czxsb25nIGxvbmc+KF9EZXNpcmVkKSwgX0V4cGVjdGVkX2J5dGVzKTsNCiNsaW5lIDc1NiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQog
ICAgICAgIGlmIChfUHJldl9ieXRlcyA9PSBfRXhwZWN0ZWRfYnl0ZXMpIHsNCiAgICAgICAgICAg
IHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgOjogbWVtY3B5KDo6c3RkOjogYWRk
cmVzc29mKF9FeHBlY3RlZCksICZfUHJldl9ieXRlcywgc2l6ZW9mKF9UeSkpOw0KICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgX0F0b21pY19wYWRkZWQ8X1R5PiBfU3RvcmFnZTsN
Cn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODY4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5LCBzaXplX3QgPSBzaXplb2YoX1R5KT4NCnN0cnVjdCBfQXRvbWljX2lu
dGVncmFsOyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfQXRvbWljX2ludGVncmFs
PF9UeSwgMT4gOiBfQXRvbWljX3N0b3JhZ2U8X1R5PiB7IA0KICAgIHVzaW5nIF9CYXNlID0gX0F0
b21pY19zdG9yYWdlPF9UeT47DQoNCg0KDQoNCg0KICAgIHVzaW5nIF9CYXNlOjpfQmFzZTsNCiNs
aW5lIDg4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxhdG9taWMiDQoNCiAgICBfVHkgZmV0Y2hfYWRkKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3Qg
bWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQog
ICAgICAgIGNoYXIgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIp
OyBfUmVzdWx0ID0gX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ4KF9BdG9taWNfYWRkcmVzc19hczxj
aGFyPih0aGlzLT5fU3RvcmFnZSksIHN0YXRpY19jYXN0PGNoYXI+KF9PcGVyYW5kKSk7DQojbGlu
ZSA4ODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
YXRvbWljIg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5PihfUmVzdWx0KTsNCiAgICB9
DQoNCiAgICBfVHkgZmV0Y2hfYW5kKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5X29y
ZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAgIGNo
YXIgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIpOyBfUmVzdWx0
ID0gX0ludGVybG9ja2VkQW5kOChfQXRvbWljX2FkZHJlc3NfYXM8Y2hhcj4odGhpcy0+X1N0b3Jh
Z2UpLCBzdGF0aWNfY2FzdDxjaGFyPihfT3BlcmFuZCkpOw0KI2xpbmUgODk1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX1Jlc3VsdCk7DQogICAgfQ0KDQogICAgX1R5IGZldGNo
X29yKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9y
eV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAgIGNoYXIgX1Jlc3VsdDsNCiAgICAg
ICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIpOyBfUmVzdWx0ID0gX0ludGVybG9ja2VkT3I4
KF9BdG9taWNfYWRkcmVzc19hczxjaGFyPih0aGlzLT5fU3RvcmFnZSksIHN0YXRpY19jYXN0PGNo
YXI+KF9PcGVyYW5kKSk7DQojbGluZSA5MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
X1R5PihfUmVzdWx0KTsNCiAgICB9DQoNCiAgICBfVHkgZmV0Y2hfeG9yKGNvbnN0IF9UeSBfT3Bl
cmFuZCwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBu
b2V4Y2VwdCB7DQogICAgICAgIGNoYXIgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9v
cmRlcihfT3JkZXIpOyBfUmVzdWx0ID0gX0ludGVybG9ja2VkWG9yOChfQXRvbWljX2FkZHJlc3Nf
YXM8Y2hhcj4odGhpcy0+X1N0b3JhZ2UpLCBzdGF0aWNfY2FzdDxjaGFyPihfT3BlcmFuZCkpOw0K
I2xpbmUgOTA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGF0b21pYyINCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX1Jlc3VsdCk7DQog
ICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yKysoaW50KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxfVHk+KF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkOChfQXRvbWljX2FkZHJl
c3NfYXM8Y2hhcj4odGhpcy0+X1N0b3JhZ2UpLCAxKSk7DQogICAgfQ0KDQogICAgX1R5IG9wZXJh
dG9yKysoKSBub2V4Y2VwdCB7DQogICAgICAgIHVuc2lnbmVkIGNoYXIgX0JlZm9yZSA9DQogICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfSW50ZXJsb2NrZWRFeGNoYW5nZUFk
ZDgoX0F0b21pY19hZGRyZXNzX2FzPGNoYXI+KHRoaXMtPl9TdG9yYWdlKSwgMSkpOw0KICAgICAg
ICArK19CZWZvcmU7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHk+KF9CZWZvcmUpOw0K
ICAgIH0NCg0KICAgIF9UeSBvcGVyYXRvci0tKGludCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8X1R5PihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDgoX0F0b21pY19hZGRy
ZXNzX2FzPGNoYXI+KHRoaXMtPl9TdG9yYWdlKSwgLTEpKTsNCiAgICB9DQoNCiAgICBfVHkgb3Bl
cmF0b3ItLSgpIG5vZXhjZXB0IHsNCiAgICAgICAgdW5zaWduZWQgY2hhciBfQmVmb3JlID0NCiAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9JbnRlcmxvY2tlZEV4Y2hhbmdl
QWRkOChfQXRvbWljX2FkZHJlc3NfYXM8Y2hhcj4odGhpcy0+X1N0b3JhZ2UpLCAtMSkpOw0KICAg
ICAgICAtLV9CZWZvcmU7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHk+KF9CZWZvcmUp
Ow0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0F0b21pY19pbnRl
Z3JhbDxfVHksIDI+IDogX0F0b21pY19zdG9yYWdlPF9UeT4geyANCiAgICB1c2luZyBfQmFzZSA9
IF9BdG9taWNfc3RvcmFnZTxfVHk+Ow0KDQoNCg0KDQoNCiAgICB1c2luZyBfQmFzZTo6X0Jhc2U7
DQojbGluZSA5NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcYXRvbWljIg0KDQogICAgX1R5IGZldGNoX2FkZChjb25zdCBfVHkgX09wZXJhbmQsIGNv
bnN0IG1lbW9yeV9vcmRlciBfT3JkZXIgPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQg
ew0KICAgICAgICBzaG9ydCBfUmVzdWx0Ow0KICAgICAgICBfQ2hlY2tfbWVtb3J5X29yZGVyKF9P
cmRlcik7IF9SZXN1bHQgPSBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDE2KF9BdG9taWNfYWRkcmVz
c19hczxzaG9ydD4odGhpcy0+X1N0b3JhZ2UpLCBzdGF0aWNfY2FzdDxzaG9ydD4oX09wZXJhbmQp
KTsNCiNsaW5lIDk1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxhdG9taWMiDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHk+KF9SZXN1bHQp
Ow0KICAgIH0NCg0KICAgIF9UeSBmZXRjaF9hbmQoY29uc3QgX1R5IF9PcGVyYW5kLCBjb25zdCBt
ZW1vcnlfb3JkZXIgX09yZGVyID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0IHsNCiAg
ICAgICAgc2hvcnQgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIp
OyBfUmVzdWx0ID0gX0ludGVybG9ja2VkQW5kMTYoX0F0b21pY19hZGRyZXNzX2FzPHNob3J0Pih0
aGlzLT5fU3RvcmFnZSksIHN0YXRpY19jYXN0PHNob3J0PihfT3BlcmFuZCkpOw0KI2xpbmUgOTU3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21p
YyINCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX1Jlc3VsdCk7DQogICAgfQ0KDQog
ICAgX1R5IGZldGNoX29yKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5X29yZGVyIF9P
cmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAgIHNob3J0IF9S
ZXN1bHQ7DQogICAgICAgIF9DaGVja19tZW1vcnlfb3JkZXIoX09yZGVyKTsgX1Jlc3VsdCA9IF9J
bnRlcmxvY2tlZE9yMTYoX0F0b21pY19hZGRyZXNzX2FzPHNob3J0Pih0aGlzLT5fU3RvcmFnZSks
IHN0YXRpY19jYXN0PHNob3J0PihfT3BlcmFuZCkpOw0KI2xpbmUgOTY0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PF9UeT4oX1Jlc3VsdCk7DQogICAgfQ0KDQogICAgX1R5IGZldGNoX3hv
cihjb25zdCBfVHkgX09wZXJhbmQsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIgPSBtZW1vcnlf
b3JkZXJfc2VxX2NzdCkgbm9leGNlcHQgew0KICAgICAgICBzaG9ydCBfUmVzdWx0Ow0KICAgICAg
ICBfQ2hlY2tfbWVtb3J5X29yZGVyKF9PcmRlcik7IF9SZXN1bHQgPSBfSW50ZXJsb2NrZWRYb3Ix
NihfQXRvbWljX2FkZHJlc3NfYXM8c2hvcnQ+KHRoaXMtPl9TdG9yYWdlKSwgc3RhdGljX2Nhc3Q8
c2hvcnQ+KF9PcGVyYW5kKSk7DQojbGluZSA5NzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8X1R5PihfUmVzdWx0KTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3IrKyhpbnQpIG5vZXhj
ZXB0IHsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgX0FmdGVyID0NCiAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIHNob3J0PihfSW50ZXJsb2NrZWRJbmNyZW1lbnQxNihfQXRvbWljX2Fk
ZHJlc3NfYXM8c2hvcnQ+KHRoaXMtPl9TdG9yYWdlKSkpOw0KICAgICAgICAtLV9BZnRlcjsNCiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX0FmdGVyKTsNCiAgICB9DQoNCiAgICBfVHkg
b3BlcmF0b3IrKygpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4o
X0ludGVybG9ja2VkSW5jcmVtZW50MTYoX0F0b21pY19hZGRyZXNzX2FzPHNob3J0Pih0aGlzLT5f
U3RvcmFnZSkpKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3ItLShpbnQpIG5vZXhjZXB0IHsN
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX0FmdGVyID0NCiAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIHNob3J0PihfSW50ZXJsb2NrZWREZWNyZW1lbnQxNihfQXRvbWljX2FkZHJlc3Nf
YXM8c2hvcnQ+KHRoaXMtPl9TdG9yYWdlKSkpOw0KICAgICAgICArK19BZnRlcjsNCiAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX0FmdGVyKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0
b3ItLSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX0ludGVy
bG9ja2VkRGVjcmVtZW50MTYoX0F0b21pY19hZGRyZXNzX2FzPHNob3J0Pih0aGlzLT5fU3RvcmFn
ZSkpKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9BdG9taWNf
aW50ZWdyYWw8X1R5LCA0PiA6IF9BdG9taWNfc3RvcmFnZTxfVHk+IHsgDQogICAgdXNpbmcgX0Jh
c2UgPSBfQXRvbWljX3N0b3JhZ2U8X1R5PjsNCg0KDQoNCg0KDQogICAgdXNpbmcgX0Jhc2U6Ol9C
YXNlOw0KI2xpbmUgMTAwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxhdG9taWMiDQoNCiAgICBfVHkgZmV0Y2hfYWRkKGNvbnN0IF9UeSBfT3BlcmFu
ZCwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4
Y2VwdCB7DQogICAgICAgIGxvbmcgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRl
cihfT3JkZXIpOyBfUmVzdWx0ID0gX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQoX0F0b21pY19hZGRy
ZXNzX2FzPGxvbmc+KHRoaXMtPl9TdG9yYWdlKSwgc3RhdGljX2Nhc3Q8bG9uZz4oX09wZXJhbmQp
KTsNCiNsaW5lIDEwMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcYXRvbWljIg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5PihfUmVzdWx0
KTsNCiAgICB9DQoNCiAgICBfVHkgZmV0Y2hfYW5kKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3Qg
bWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQog
ICAgICAgIGxvbmcgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIp
OyBfUmVzdWx0ID0gX0ludGVybG9ja2VkQW5kKF9BdG9taWNfYWRkcmVzc19hczxsb25nPih0aGlz
LT5fU3RvcmFnZSksIHN0YXRpY19jYXN0PGxvbmc+KF9PcGVyYW5kKSk7DQojbGluZSAxMDE5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyIN
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX1Jlc3VsdCk7DQogICAgfQ0KDQogICAg
X1R5IGZldGNoX29yKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRl
ciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAgIGxvbmcgX1Jlc3Vs
dDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIpOyBfUmVzdWx0ID0gX0ludGVy
bG9ja2VkT3IoX0F0b21pY19hZGRyZXNzX2FzPGxvbmc+KHRoaXMtPl9TdG9yYWdlKSwgc3RhdGlj
X2Nhc3Q8bG9uZz4oX09wZXJhbmQpKTsNCiNsaW5lIDEwMjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8X1R5PihfUmVzdWx0KTsNCiAgICB9DQoNCiAgICBfVHkgZmV0Y2hfeG9yKGNvbnN0
IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9z
ZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAgIGxvbmcgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNr
X21lbW9yeV9vcmRlcihfT3JkZXIpOyBfUmVzdWx0ID0gX0ludGVybG9ja2VkWG9yKF9BdG9taWNf
YWRkcmVzc19hczxsb25nPih0aGlzLT5fU3RvcmFnZSksIHN0YXRpY19jYXN0PGxvbmc+KF9PcGVy
YW5kKSk7DQojbGluZSAxMDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXGF0b21pYyINCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX1Jl
c3VsdCk7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yKysoaW50KSBub2V4Y2VwdCB7DQogICAg
ICAgIHVuc2lnbmVkIGxvbmcgX0FmdGVyID0NCiAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KF9JbnRlcmxvY2tlZEluY3JlbWVudChfQXRvbWljX2FkZHJlc3NfYXM8bG9uZz4o
dGhpcy0+X1N0b3JhZ2UpKSk7DQogICAgICAgIC0tX0FmdGVyOw0KICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8X1R5PihfQWZ0ZXIpOw0KICAgIH0NCg0KICAgIF9UeSBvcGVyYXRvcisrKCkgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5PihfSW50ZXJsb2NrZWRJbmNy
ZW1lbnQoX0F0b21pY19hZGRyZXNzX2FzPGxvbmc+KHRoaXMtPl9TdG9yYWdlKSkpOw0KICAgIH0N
Cg0KICAgIF9UeSBvcGVyYXRvci0tKGludCkgbm9leGNlcHQgew0KICAgICAgICB1bnNpZ25lZCBs
b25nIF9BZnRlciA9DQogICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihfSW50
ZXJsb2NrZWREZWNyZW1lbnQoX0F0b21pY19hZGRyZXNzX2FzPGxvbmc+KHRoaXMtPl9TdG9yYWdl
KSkpOw0KICAgICAgICArK19BZnRlcjsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4o
X0FmdGVyKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3ItLSgpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX0ludGVybG9ja2VkRGVjcmVtZW50KF9BdG9taWNf
YWRkcmVzc19hczxsb25nPih0aGlzLT5fU3RvcmFnZSkpKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9BdG9taWNfaW50ZWdyYWw8X1R5LCA4PiA6IF9BdG9taWNf
c3RvcmFnZTxfVHk+IHsgDQogICAgdXNpbmcgX0Jhc2UgPSBfQXRvbWljX3N0b3JhZ2U8X1R5PjsN
Cg0KDQoNCg0KDQogICAgdXNpbmcgX0Jhc2U6Ol9CYXNlOw0KI2xpbmUgMTA2OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTI0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyIN
CiAgICBfVHkgZmV0Y2hfYWRkKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5X29yZGVy
IF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAgIGxvbmcg
bG9uZyBfUmVzdWx0Ow0KICAgICAgICBfQ2hlY2tfbWVtb3J5X29yZGVyKF9PcmRlcik7IF9SZXN1
bHQgPSBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDY0KF9BdG9taWNfYWRkcmVzc19hczxsb25nIGxv
bmc+KHRoaXMtPl9TdG9yYWdlKSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihfT3BlcmFuZCkpOw0K
I2xpbmUgMTEyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxhdG9taWMiDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHk+KF9SZXN1bHQpOw0K
ICAgIH0NCg0KICAgIF9UeSBmZXRjaF9hbmQoY29uc3QgX1R5IF9PcGVyYW5kLCBjb25zdCBtZW1v
cnlfb3JkZXIgX09yZGVyID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0IHsNCiAgICAg
ICAgbG9uZyBsb25nIF9SZXN1bHQ7DQogICAgICAgIF9DaGVja19tZW1vcnlfb3JkZXIoX09yZGVy
KTsgX1Jlc3VsdCA9IF9JbnRlcmxvY2tlZEFuZDY0KF9BdG9taWNfYWRkcmVzc19hczxsb25nIGxv
bmc+KHRoaXMtPl9TdG9yYWdlKSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihfT3BlcmFuZCkpOw0K
I2xpbmUgMTEzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxhdG9taWMiDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHk+KF9SZXN1bHQpOw0K
ICAgIH0NCg0KICAgIF9UeSBmZXRjaF9vcihjb25zdCBfVHkgX09wZXJhbmQsIGNvbnN0IG1lbW9y
eV9vcmRlciBfT3JkZXIgPSBtZW1vcnlfb3JkZXJfc2VxX2NzdCkgbm9leGNlcHQgew0KICAgICAg
ICBsb25nIGxvbmcgX1Jlc3VsdDsNCiAgICAgICAgX0NoZWNrX21lbW9yeV9vcmRlcihfT3JkZXIp
OyBfUmVzdWx0ID0gX0ludGVybG9ja2VkT3I2NChfQXRvbWljX2FkZHJlc3NfYXM8bG9uZyBsb25n
Pih0aGlzLT5fU3RvcmFnZSksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oX09wZXJhbmQpKTsNCiNs
aW5lIDExNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYXRvbWljIg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5PihfUmVzdWx0KTsNCiAg
ICB9DQoNCiAgICBfVHkgZmV0Y2hfeG9yKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5
X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4Y2VwdCB7DQogICAgICAg
IGxvbmcgbG9uZyBfUmVzdWx0Ow0KICAgICAgICBfQ2hlY2tfbWVtb3J5X29yZGVyKF9PcmRlcik7
IF9SZXN1bHQgPSBfSW50ZXJsb2NrZWRYb3I2NChfQXRvbWljX2FkZHJlc3NfYXM8bG9uZyBsb25n
Pih0aGlzLT5fU3RvcmFnZSksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oX09wZXJhbmQpKTsNCiNs
aW5lIDExNDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYXRvbWljIg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5PihfUmVzdWx0KTsNCiAg
ICB9DQoNCiAgICBfVHkgb3BlcmF0b3IrKyhpbnQpIG5vZXhjZXB0IHsNCiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIF9BZnRlciA9DQogICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KF9JbnRlcmxvY2tlZEluY3JlbWVudDY0KF9BdG9taWNfYWRkcmVzc19hczxsb25n
IGxvbmc+KHRoaXMtPl9TdG9yYWdlKSkpOw0KICAgICAgICAtLV9BZnRlcjsNCiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PF9UeT4oX0FmdGVyKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3Ir
KygpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oX0ludGVybG9j
a2VkSW5jcmVtZW50NjQoX0F0b21pY19hZGRyZXNzX2FzPGxvbmcgbG9uZz4odGhpcy0+X1N0b3Jh
Z2UpKSk7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yLS0oaW50KSBub2V4Y2VwdCB7DQogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfQWZ0ZXIgPQ0KICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihfSW50ZXJsb2NrZWREZWNyZW1lbnQ2NChfQXRvbWljX2FkZHJl
c3NfYXM8bG9uZyBsb25nPih0aGlzLT5fU3RvcmFnZSkpKTsNCiAgICAgICAgKytfQWZ0ZXI7DQog
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHk+KF9BZnRlcik7DQogICAgfQ0KDQogICAgX1R5
IG9wZXJhdG9yLS0oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfVHk+
KF9JbnRlcmxvY2tlZERlY3JlbWVudDY0KF9BdG9taWNfYWRkcmVzc19hczxsb25nIGxvbmc+KHRo
aXMtPl9TdG9yYWdlKSkpOw0KICAgIH0NCiNsaW5lIDExNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KfTsNCg0KDQp0ZW1wbGF0ZSA8
c2l6ZV90IF9UeXBlU2l6ZT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNfYWx3YXlzX2xvY2tf
ZnJlZSA9IF9UeXBlU2l6ZSA8PSA4ICYmIChfVHlwZVNpemUgJiAoX1R5cGVTaXplIC0gMSkpID09
IDA7DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHks
IGJvb2wgX0lzX2xvY2tfZnJlZSA9IF9Jc19hbHdheXNfbG9ja19mcmVlPHNpemVvZihfVHkpPj4N
CmlubGluZSBjb25zdGV4cHIgYm9vbCBfRGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGUg
PSB0cnVlOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KIGlubGluZSBjb25zdGV4cHIgYm9vbCBf
RGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5LCBmYWxzZT4gPSB0cnVlOw0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1Y3QgX0F0b21pY19pbnRlZ3JhbF9mYWNhZGUgOiBf
QXRvbWljX2ludGVncmFsPF9UeT4gew0KICAgIA0KICAgIHVzaW5nIF9CYXNlICAgICAgICAgICA9
IF9BdG9taWNfaW50ZWdyYWw8X1R5PjsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBfVHk7
DQoNCg0KDQoNCg0KICAgIHVzaW5nIF9CYXNlOjpfQmFzZTsNCiNsaW5lIDEyMDggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KDQogICAg
DQoNCiAgICANCiAgICANCiAgICANCiAgICB1c2luZyBfQmFzZTo6ZmV0Y2hfYWRkOw0KICAgIF9U
eSBmZXRjaF9hZGQoY29uc3QgX1R5IF9PcGVyYW5kKSB2b2xhdGlsZSBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PF9BdG9taWNfaW50ZWdyYWxfZmFjYWRlKj4odGhpcyktPl9C
YXNlOjpmZXRjaF9hZGQoX09wZXJhbmQpOw0KICAgIH0NCg0KICAgIF9UeSBmZXRjaF9hZGQoY29u
c3QgX1R5IF9PcGVyYW5kLCBjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyKSB2b2xhdGlsZSBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PF9BdG9taWNfaW50ZWdyYWxfZmFjYWRl
Kj4odGhpcyktPl9CYXNlOjpmZXRjaF9hZGQoX09wZXJhbmQsIF9PcmRlcik7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgX1R5IF9OZWdhdGUoY29uc3QgX1R5IF9WYWx1ZSkgbm9l
eGNlcHQgeyANCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oMFUgLSBzdGF0aWNfY2Fz
dDxtYWtlX3Vuc2lnbmVkX3Q8X1R5Pj4oX1ZhbHVlKSk7DQogICAgfQ0KDQogICAgX1R5IGZldGNo
X3N1Yihjb25zdCBfVHkgX09wZXJhbmQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGZldGNo
X2FkZChfTmVnYXRlKF9PcGVyYW5kKSk7DQogICAgfQ0KDQogICAgX1R5IGZldGNoX3N1Yihjb25z
dCBfVHkgX09wZXJhbmQpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGZldGNo
X2FkZChfTmVnYXRlKF9PcGVyYW5kKSk7DQogICAgfQ0KDQogICAgX1R5IGZldGNoX3N1Yihjb25z
dCBfVHkgX09wZXJhbmQsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIGZldGNoX2FkZChfTmVnYXRlKF9PcGVyYW5kKSwgX09yZGVyKTsNCiAgICB9
DQoNCiAgICBfVHkgZmV0Y2hfc3ViKGNvbnN0IF9UeSBfT3BlcmFuZCwgY29uc3QgbWVtb3J5X29y
ZGVyIF9PcmRlcikgdm9sYXRpbGUgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gZmV0Y2hfYWRk
KF9OZWdhdGUoX09wZXJhbmQpLCBfT3JkZXIpOw0KICAgIH0NCg0KICAgIHVzaW5nIF9CYXNlOjpm
ZXRjaF9hbmQ7DQogICAgX1R5IGZldGNoX2FuZChjb25zdCBfVHkgX09wZXJhbmQpIHZvbGF0aWxl
IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8X0F0b21pY19pbnRlZ3JhbF9m
YWNhZGUqPih0aGlzKS0+X0Jhc2U6OmZldGNoX2FuZChfT3BlcmFuZCk7DQogICAgfQ0KDQogICAg
X1R5IGZldGNoX2FuZChjb25zdCBfVHkgX09wZXJhbmQsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3Jk
ZXIpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8X0F0b21p
Y19pbnRlZ3JhbF9mYWNhZGUqPih0aGlzKS0+X0Jhc2U6OmZldGNoX2FuZChfT3BlcmFuZCwgX09y
ZGVyKTsNCiAgICB9DQoNCiAgICB1c2luZyBfQmFzZTo6ZmV0Y2hfb3I7DQogICAgX1R5IGZldGNo
X29yKGNvbnN0IF9UeSBfT3BlcmFuZCkgdm9sYXRpbGUgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gY29uc3RfY2FzdDxfQXRvbWljX2ludGVncmFsX2ZhY2FkZSo+KHRoaXMpLT5fQmFzZTo6ZmV0
Y2hfb3IoX09wZXJhbmQpOw0KICAgIH0NCg0KICAgIF9UeSBmZXRjaF9vcihjb25zdCBfVHkgX09w
ZXJhbmQsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8X0F0b21pY19pbnRlZ3JhbF9mYWNhZGUqPih0aGlzKS0+
X0Jhc2U6OmZldGNoX29yKF9PcGVyYW5kLCBfT3JkZXIpOw0KICAgIH0NCg0KICAgIHVzaW5nIF9C
YXNlOjpmZXRjaF94b3I7DQogICAgX1R5IGZldGNoX3hvcihjb25zdCBfVHkgX09wZXJhbmQpIHZv
bGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8X0F0b21pY19pbnRl
Z3JhbF9mYWNhZGUqPih0aGlzKS0+X0Jhc2U6OmZldGNoX3hvcihfT3BlcmFuZCk7DQogICAgfQ0K
DQogICAgX1R5IGZldGNoX3hvcihjb25zdCBfVHkgX09wZXJhbmQsIGNvbnN0IG1lbW9yeV9vcmRl
ciBfT3JkZXIpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
X0F0b21pY19pbnRlZ3JhbF9mYWNhZGUqPih0aGlzKS0+X0Jhc2U6OmZldGNoX3hvcihfT3BlcmFu
ZCwgX09yZGVyKTsNCiAgICB9DQoNCiAgICB1c2luZyBfQmFzZTo6b3BlcmF0b3IrKzsNCiAgICBf
VHkgb3BlcmF0b3IrKyhpbnQpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8X0F0b21pY19pbnRlZ3JhbF9mYWNhZGUqPih0aGlzKS0+X0Jhc2U6Om9wZXJhdG9y
KysoMCk7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yKysoKSB2b2xhdGlsZSBub2V4Y2VwdCB7
DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PF9BdG9taWNfaW50ZWdyYWxfZmFjYWRlKj4odGhp
cyktPl9CYXNlOjpvcGVyYXRvcisrKCk7DQogICAgfQ0KDQogICAgdXNpbmcgX0Jhc2U6Om9wZXJh
dG9yLS07DQogICAgX1R5IG9wZXJhdG9yLS0oaW50KSB2b2xhdGlsZSBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PF9BdG9taWNfaW50ZWdyYWxfZmFjYWRlKj4odGhpcyktPl9C
YXNlOjpvcGVyYXRvci0tKDApOw0KICAgIH0NCg0KICAgIF9UeSBvcGVyYXRvci0tKCkgdm9sYXRp
bGUgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxfQXRvbWljX2ludGVncmFs
X2ZhY2FkZSo+KHRoaXMpLT5fQmFzZTo6b3BlcmF0b3ItLSgpOw0KICAgIH0NCg0KICAgIF9UeSBv
cGVyYXRvcis9KGNvbnN0IF9UeSBfT3BlcmFuZCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8X1R5Pih0aGlzLT5fQmFzZTo6ZmV0Y2hfYWRkKF9PcGVyYW5kKSArIF9PcGVy
YW5kKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3IrPShjb25zdCBfVHkgX09wZXJhbmQpIHZv
bGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oY29uc3Rf
Y2FzdDxfQXRvbWljX2ludGVncmFsX2ZhY2FkZSo+KHRoaXMpLT5fQmFzZTo6ZmV0Y2hfYWRkKF9P
cGVyYW5kKSArIF9PcGVyYW5kKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3ItPShjb25zdCBf
VHkgX09wZXJhbmQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4o
ZmV0Y2hfc3ViKF9PcGVyYW5kKSAtIF9PcGVyYW5kKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0
b3ItPShjb25zdCBfVHkgX09wZXJhbmQpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PF9UeT4oY29uc3RfY2FzdDxfQXRvbWljX2ludGVncmFsX2ZhY2FkZSo+
KHRoaXMpLT5mZXRjaF9zdWIoX09wZXJhbmQpIC0gX09wZXJhbmQpOw0KICAgIH0NCg0KICAgIF9U
eSBvcGVyYXRvciY9KGNvbnN0IF9UeSBfT3BlcmFuZCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8X1R5Pih0aGlzLT5fQmFzZTo6ZmV0Y2hfYW5kKF9PcGVyYW5kKSAmIF9P
cGVyYW5kKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3ImPShjb25zdCBfVHkgX09wZXJhbmQp
IHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oY29u
c3RfY2FzdDxfQXRvbWljX2ludGVncmFsX2ZhY2FkZSo+KHRoaXMpLT5fQmFzZTo6ZmV0Y2hfYW5k
KF9PcGVyYW5kKSAmIF9PcGVyYW5kKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3J8PShjb25z
dCBfVHkgX09wZXJhbmQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9U
eT4odGhpcy0+X0Jhc2U6OmZldGNoX29yKF9PcGVyYW5kKSB8IF9PcGVyYW5kKTsNCiAgICB9DQoN
CiAgICBfVHkgb3BlcmF0b3J8PShjb25zdCBfVHkgX09wZXJhbmQpIHZvbGF0aWxlIG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeT4oY29uc3RfY2FzdDxfQXRvbWljX2lu
dGVncmFsX2ZhY2FkZSo+KHRoaXMpLT5fQmFzZTo6ZmV0Y2hfb3IoX09wZXJhbmQpIHwgX09wZXJh
bmQpOw0KICAgIH0NCg0KICAgIF9UeSBvcGVyYXRvcl49KGNvbnN0IF9UeSBfT3BlcmFuZCkgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5Pih0aGlzLT5fQmFzZTo6ZmV0
Y2hfeG9yKF9PcGVyYW5kKSBeIF9PcGVyYW5kKTsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3Je
PShjb25zdCBfVHkgX09wZXJhbmQpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PF9UeT4oY29uc3RfY2FzdDxfQXRvbWljX2ludGVncmFsX2ZhY2FkZSo+KHRo
aXMpLT5fQmFzZTo6ZmV0Y2hfeG9yKF9PcGVyYW5kKSBeIF9PcGVyYW5kKTsNCiAgICB9DQp9Ow0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTM4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxhdG9taWMiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfQXRv
bWljX3BvaW50ZXIgOiBfQXRvbWljX3N0b3JhZ2U8X1R5PiB7DQogICAgdXNpbmcgX0Jhc2UgICAg
ICAgICAgID0gX0F0b21pY19zdG9yYWdlPF9UeT47DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBl
ID0gcHRyZGlmZl90Ow0KDQoNCg0KDQoNCiAgICB1c2luZyBfQmFzZTo6X0Jhc2U7DQojbGluZSAx
NDAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0
b21pYyINCg0KICAgIF9UeSBmZXRjaF9hZGQoY29uc3QgcHRyZGlmZl90IF9EaWZmLCBjb25zdCBt
ZW1vcnlfb3JkZXIgX09yZGVyID0gbWVtb3J5X29yZGVyX3NlcV9jc3QpIG5vZXhjZXB0IHsNCiAg
ICAgICAgY29uc3QgcHRyZGlmZl90IF9TaGlmdF9ieXRlcyA9DQogICAgICAgICAgICBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KHN0YXRpY19jYXN0PHNpemVfdD4oX0RpZmYpICogc2l6ZW9mKHJlbW92
ZV9wb2ludGVyX3Q8X1R5PikpOw0KICAgICAgICBwdHJkaWZmX3QgX1Jlc3VsdDsNCg0KDQoNCiNs
aW5lIDE0MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYXRvbWljIg0KICAgICAgICBfQ2hlY2tfbWVtb3J5X29yZGVyKF9PcmRlcik7IF9SZXN1bHQg
PSBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDY0KF9BdG9taWNfYWRkcmVzc19hczxsb25nIGxvbmc+
KHRoaXMtPl9TdG9yYWdlKSwgX1NoaWZ0X2J5dGVzKTsNCiNsaW5lIDE0MTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KI2xpbmUgMTQx
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9t
aWMiDQogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PF9UeT4oX1Jlc3VsdCk7DQogICAg
fQ0KDQogICAgDQoNCiAgICBfVHkgZmV0Y2hfYWRkKGNvbnN0IHB0cmRpZmZfdCBfRGlmZikgdm9s
YXRpbGUgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxfQXRvbWljX3BvaW50
ZXIqPih0aGlzKS0+ZmV0Y2hfYWRkKF9EaWZmKTsNCiAgICB9DQoNCiAgICBfVHkgZmV0Y2hfYWRk
KGNvbnN0IHB0cmRpZmZfdCBfRGlmZiwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlcikgdm9sYXRp
bGUgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxfQXRvbWljX3BvaW50ZXIq
Pih0aGlzKS0+ZmV0Y2hfYWRkKF9EaWZmLCBfT3JkZXIpOw0KICAgIH0NCg0KICAgIF9UeSBmZXRj
aF9zdWIoY29uc3QgcHRyZGlmZl90IF9EaWZmKSB2b2xhdGlsZSBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiBmZXRjaF9hZGQoc3RhdGljX2Nhc3Q8cHRyZGlmZl90PigwIC0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihfRGlmZikpKTsNCiAgICB9DQoNCiAgICBfVHkgZmV0Y2hfc3ViKGNvbnN0IHB0cmRp
ZmZfdCBfRGlmZikgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gZmV0Y2hfYWRkKHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4oMCAtIHN0YXRpY19jYXN0PHNpemVfdD4oX0RpZmYpKSk7DQogICAgfQ0K
DQogICAgX1R5IGZldGNoX3N1Yihjb25zdCBwdHJkaWZmX3QgX0RpZmYsIGNvbnN0IG1lbW9yeV9v
cmRlciBfT3JkZXIpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGZldGNoX2Fk
ZChzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KDAgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9EaWZmKSks
IF9PcmRlcik7DQogICAgfQ0KDQogICAgX1R5IGZldGNoX3N1Yihjb25zdCBwdHJkaWZmX3QgX0Rp
ZmYsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IGZldGNoX2FkZChzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KDAgLSBzdGF0aWNfY2FzdDxzaXplX3Q+
KF9EaWZmKSksIF9PcmRlcik7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yKysoaW50KSB2b2xh
dGlsZSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBmZXRjaF9hZGQoMSk7DQogICAgfQ0KDQog
ICAgX1R5IG9wZXJhdG9yKysoaW50KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBmZXRjaF9h
ZGQoMSk7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yKysoKSB2b2xhdGlsZSBub2V4Y2VwdCB7
DQogICAgICAgIHJldHVybiBmZXRjaF9hZGQoMSkgKyAxOw0KICAgIH0NCg0KICAgIF9UeSBvcGVy
YXRvcisrKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gZmV0Y2hfYWRkKDEpICsgMTsNCiAg
ICB9DQoNCiAgICBfVHkgb3BlcmF0b3ItLShpbnQpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIGZldGNoX2FkZCgtMSk7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yLS0oaW50
KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBmZXRjaF9hZGQoLTEpOw0KICAgIH0NCg0KICAg
IF9UeSBvcGVyYXRvci0tKCkgdm9sYXRpbGUgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gZmV0
Y2hfYWRkKC0xKSAtIDE7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yLS0oKSBub2V4Y2VwdCB7
DQogICAgICAgIHJldHVybiBmZXRjaF9hZGQoLTEpIC0gMTsNCiAgICB9DQoNCiAgICBfVHkgb3Bl
cmF0b3IrPShjb25zdCBwdHJkaWZmX3QgX0RpZmYpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIGZldGNoX2FkZChfRGlmZikgKyBfRGlmZjsNCiAgICB9DQoNCiAgICBfVHkgb3Bl
cmF0b3IrPShjb25zdCBwdHJkaWZmX3QgX0RpZmYpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IGZldGNoX2FkZChfRGlmZikgKyBfRGlmZjsNCiAgICB9DQoNCiAgICBfVHkgb3BlcmF0b3ItPShj
b25zdCBwdHJkaWZmX3QgX0RpZmYpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IGZldGNoX2FkZChzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KDAgLSBzdGF0aWNfY2FzdDxzaXplX3Q+
KF9EaWZmKSkpIC0gX0RpZmY7DQogICAgfQ0KDQogICAgX1R5IG9wZXJhdG9yLT0oY29uc3QgcHRy
ZGlmZl90IF9EaWZmKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBmZXRjaF9hZGQoc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PigwIC0gc3RhdGljX2Nhc3Q8c2l6ZV90PihfRGlmZikpKSAtIF9EaWZm
Ow0KICAgIH0NCn07DQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnVzaW5nIF9DaG9v
c2VfYXRvbWljX2Jhc2UyX3QgPQ0KICAgIHR5cGVuYW1lIF9TZWxlY3Q8aXNfaW50ZWdyYWxfdjxf
VHk+ICYmICFpc19zYW1lX3Y8Ym9vbCwgX1R5Pj46OnRlbXBsYXRlIF9BcHBseTxfQXRvbWljX2lu
dGVncmFsX2ZhY2FkZTxfVHk+LA0KICAgICAgICB0eXBlbmFtZSBfU2VsZWN0PGlzX3BvaW50ZXJf
djxfVHk+ICYmIGlzX29iamVjdF92PHJlbW92ZV9wb2ludGVyX3Q8X1R5Pj4+Ojp0ZW1wbGF0ZSBf
QXBwbHk8X0F0b21pY19wb2ludGVyPF9UeT4sDQogICAgICAgICAgICBfQXRvbWljX3N0b3JhZ2U8
X1R5Pj4+Ow0KDQoNCg0KDQoNCiNsaW5lIDE1MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnVz
aW5nIF9DaG9vc2VfYXRvbWljX2Jhc2VfdCA9IF9DaG9vc2VfYXRvbWljX2Jhc2UyX3Q8X1R5PjsN
CiNsaW5lIDE1MTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcYXRvbWljIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IGF0b21pYyA6IF9D
aG9vc2VfYXRvbWljX2Jhc2VfdDxfVHk+IHsgDQpwcml2YXRlOg0KICAgIHVzaW5nIF9CYXNlID0g
X0Nob29zZV9hdG9taWNfYmFzZV90PF9UeT47DQoNCnB1YmxpYzoNCiAgICANCiAgICBzdGF0aWNf
YXNzZXJ0KGlzX3RyaXZpYWxseV9jb3B5YWJsZV92PF9UeT4gJiYgaXNfY29weV9jb25zdHJ1Y3Rp
YmxlX3Y8X1R5PiAmJiBpc19tb3ZlX2NvbnN0cnVjdGlibGVfdjxfVHk+DQogICAgICAgICYmIGlz
X2NvcHlfYXNzaWduYWJsZV92PF9UeT4gJiYgaXNfbW92ZV9hc3NpZ25hYmxlX3Y8X1R5PiwNCiAg
ICAgICAgImF0b21pYzxUPiByZXF1aXJlcyBUIHRvIGJlIHRyaXZpYWxseSBjb3B5YWJsZSwgY29w
eSBjb25zdHJ1Y3RpYmxlLCBtb3ZlIGNvbnN0cnVjdGlibGUsIGNvcHkgYXNzaWduYWJsZSwgIg0K
ICAgICAgICAiYW5kIG1vdmUgYXNzaWduYWJsZS4iKTsNCiAgICANCg0KICAgIHVzaW5nIHZhbHVl
X3R5cGUgPSBfVHk7DQoNCg0KDQoNCiAgICB1c2luZyBfQmFzZTo6X0Jhc2U7DQojbGluZSAxNTMx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21p
YyINCg0KICAgIGNvbnN0ZXhwciBhdG9taWMoKSBub2V4Y2VwdChpc19ub3Rocm93X2RlZmF1bHRf
Y29uc3RydWN0aWJsZV92PF9UeT4pIDogX0Jhc2UoKSB7fQ0KDQogICAgYXRvbWljKGNvbnN0IGF0
b21pYyYpID0gZGVsZXRlOw0KICAgIGF0b21pYyYgb3BlcmF0b3I9KGNvbnN0IGF0b21pYyYpID0g
ZGVsZXRlOw0KDQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfYWx3YXlzX2xvY2tfZnJl
ZSA9IF9Jc19hbHdheXNfbG9ja19mcmVlPHNpemVvZihfVHkpPjsNCiNsaW5lIDE1NDAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KDQoN
CiAgICBbW25vZGlzY2FyZF1dIGJvb2wgaXNfbG9ja19mcmVlKCkgY29uc3Qgdm9sYXRpbGUgbm9l
eGNlcHQgew0KICAgICAgICBjb25zdGV4cHIgYm9vbCBfUmVzdWx0ID0gc2l6ZW9mKF9UeSkgPD0g
OCAmJiAoc2l6ZW9mKF9UeSkgJiBzaXplb2YoX1R5KSAtIDEpID09IDA7DQogICAgICAgIHJldHVy
biBfUmVzdWx0Ow0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTU1NyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQoNCiAg
ICBbW25vZGlzY2FyZF1dIGJvb2wgaXNfbG9ja19mcmVlKCkgY29uc3Qgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgYXRvbWljKj4odGhpcyktPmlz
X2xvY2tfZnJlZSgpOw0KICAgIH0NCg0KICAgIF9UeSBvcGVyYXRvcj0oY29uc3QgX1R5IF9WYWx1
ZSkgdm9sYXRpbGUgbm9leGNlcHQgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVf
bm9uX2xvY2tfZnJlZV92b2xhdGlsZTxfVHk+LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICAgICAgdGhp
cy0+c3RvcmUoX1ZhbHVlKTsNCiAgICAgICAgcmV0dXJuIF9WYWx1ZTsNCiAgICB9DQoNCiAgICBf
VHkgb3BlcmF0b3I9KGNvbnN0IF9UeSBfVmFsdWUpIG5vZXhjZXB0IHsNCiAgICAgICAgdGhpcy0+
c3RvcmUoX1ZhbHVlKTsNCiAgICAgICAgcmV0dXJuIF9WYWx1ZTsNCiAgICB9DQoNCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICB1c2luZyBfQmFzZTo6c3RvcmU7DQogICAgdm9pZCBz
dG9yZShjb25zdCBfVHkgX1ZhbHVlKSB2b2xhdGlsZSBub2V4Y2VwdCB7DQogICAgICAgIHN0YXRp
Y19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVlX3ZvbGF0aWxlPF9UeT4sICJOZXZlciBm
YWlscyIpOw0KICAgICAgICBjb25zdF9jYXN0PGF0b21pYyo+KHRoaXMpLT5fQmFzZTo6c3RvcmUo
X1ZhbHVlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlKGNvbnN0IF9UeSBfVmFsdWUsIGNvbnN0
IG1lbW9yeV9vcmRlciBfT3JkZXIpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgc3RhdGlj
X2Fzc2VydChfRGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZh
aWxzIik7DQogICAgICAgIGNvbnN0X2Nhc3Q8YXRvbWljKj4odGhpcyktPl9CYXNlOjpzdG9yZShf
VmFsdWUsIF9PcmRlcik7DQogICAgfQ0KDQogICAgdXNpbmcgX0Jhc2U6OmxvYWQ7DQogICAgW1tu
b2Rpc2NhcmRdXSBfVHkgbG9hZCgpIGNvbnN0IHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAg
c3RhdGljX2Fzc2VydChfRGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5l
dmVyIGZhaWxzIik7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PGNvbnN0IGF0b21pYyo+KHRo
aXMpLT5fQmFzZTo6bG9hZCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gX1R5IGxvYWQo
Y29uc3QgbWVtb3J5X29yZGVyIF9PcmRlcikgY29uc3Qgdm9sYXRpbGUgbm9leGNlcHQgew0KICAg
ICAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGlsZTxfVHk+
LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y29uc3QgYXRvbWlj
Kj4odGhpcyktPl9CYXNlOjpsb2FkKF9PcmRlcik7DQogICAgfQ0KDQogICAgdXNpbmcgX0Jhc2U6
OmV4Y2hhbmdlOw0KICAgIF9UeSBleGNoYW5nZShjb25zdCBfVHkgX1ZhbHVlKSB2b2xhdGlsZSBu
b2V4Y2VwdCB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVl
X3ZvbGF0aWxlPF9UeT4sICJOZXZlciBmYWlscyIpOw0KICAgICAgICByZXR1cm4gY29uc3RfY2Fz
dDxhdG9taWMqPih0aGlzKS0+X0Jhc2U6OmV4Y2hhbmdlKF9WYWx1ZSk7DQogICAgfQ0KDQogICAg
X1R5IGV4Y2hhbmdlKGNvbnN0IF9UeSBfVmFsdWUsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIp
IHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgc3RhdGljX2Fzc2VydChfRGVwcmVjYXRlX25v
bl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQogICAgICAgIHJldHVy
biBjb25zdF9jYXN0PGF0b21pYyo+KHRoaXMpLT5fQmFzZTo6ZXhjaGFuZ2UoX1ZhbHVlLCBfT3Jk
ZXIpOw0KICAgIH0NCg0KICAgIHVzaW5nIF9CYXNlOjpjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZzsN
CiAgICBib29sIGNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9UeSYgX0V4cGVjdGVkLCBjb25zdCBf
VHkgX0Rlc2lyZWQpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgc3RhdGljX2Fzc2VydChf
RGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQog
ICAgICAgIHJldHVybiBjb25zdF9jYXN0PGF0b21pYyo+KHRoaXMpLT5fQmFzZTo6Y29tcGFyZV9l
eGNoYW5nZV9zdHJvbmcoX0V4cGVjdGVkLCBfRGVzaXJlZCk7DQogICAgfQ0KDQogICAgYm9vbCBj
b21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfVHkmIF9FeHBlY3RlZCwgY29uc3QgX1R5IF9EZXNpcmVk
LCBjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyKSB2b2xhdGlsZSBub2V4Y2VwdCB7DQogICAgICAg
IHN0YXRpY19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVlX3ZvbGF0aWxlPF9UeT4sICJO
ZXZlciBmYWlscyIpOw0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxhdG9taWMqPih0aGlzKS0+
X0Jhc2U6OmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9FeHBlY3RlZCwgX0Rlc2lyZWQsIF9PcmRl
cik7DQogICAgfQ0KDQogICAgYm9vbCBjb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfVHkmIF9FeHBl
Y3RlZCwgY29uc3QgX1R5IF9EZXNpcmVkLCBjb25zdCBtZW1vcnlfb3JkZXIgX1N1Y2Nlc3MsDQog
ICAgICAgIGNvbnN0IG1lbW9yeV9vcmRlciBfRmFpbHVyZSkgdm9sYXRpbGUgbm9leGNlcHQgew0K
ICAgICAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGlsZTxf
VHk+LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICAgICAgcmV0dXJuIHRoaXMtPmNvbXBhcmVfZXhjaGFu
Z2Vfc3Ryb25nKF9FeHBlY3RlZCwgX0Rlc2lyZWQsIF9Db21iaW5lX2Nhc19tZW1vcnlfb3JkZXJz
KF9TdWNjZXNzLCBfRmFpbHVyZSkpOw0KICAgIH0NCg0KICAgIGJvb2wgY29tcGFyZV9leGNoYW5n
ZV9zdHJvbmcoDQogICAgICAgIF9UeSYgX0V4cGVjdGVkLCBjb25zdCBfVHkgX0Rlc2lyZWQsIGNv
bnN0IG1lbW9yeV9vcmRlciBfU3VjY2VzcywgY29uc3QgbWVtb3J5X29yZGVyIF9GYWlsdXJlKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiB0aGlzLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhf
RXhwZWN0ZWQsIF9EZXNpcmVkLCBfQ29tYmluZV9jYXNfbWVtb3J5X29yZGVycyhfU3VjY2Vzcywg
X0ZhaWx1cmUpKTsNCiAgICB9DQoNCiAgICBib29sIGNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhfVHkm
IF9FeHBlY3RlZCwgY29uc3QgX1R5IF9EZXNpcmVkKSB2b2xhdGlsZSBub2V4Y2VwdCB7DQogICAg
ICAgIA0KICAgICAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xh
dGlsZTxfVHk+LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICAgICAgcmV0dXJuIHRoaXMtPmNvbXBhcmVf
ZXhjaGFuZ2Vfc3Ryb25nKF9FeHBlY3RlZCwgX0Rlc2lyZWQpOw0KICAgIH0NCg0KICAgIGJvb2wg
Y29tcGFyZV9leGNoYW5nZV93ZWFrKF9UeSYgX0V4cGVjdGVkLCBjb25zdCBfVHkgX0Rlc2lyZWQp
IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHRoaXMtPmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25n
KF9FeHBlY3RlZCwgX0Rlc2lyZWQpOw0KICAgIH0NCg0KICAgIGJvb2wgY29tcGFyZV9leGNoYW5n
ZV93ZWFrKF9UeSYgX0V4cGVjdGVkLCBjb25zdCBfVHkgX0Rlc2lyZWQsIGNvbnN0IG1lbW9yeV9v
cmRlciBfT3JkZXIpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgc3RhdGljX2Fzc2VydChf
RGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQog
ICAgICAgIHJldHVybiB0aGlzLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfRXhwZWN0ZWQsIF9E
ZXNpcmVkLCBfT3JkZXIpOw0KICAgIH0NCg0KICAgIGJvb2wgY29tcGFyZV9leGNoYW5nZV93ZWFr
KF9UeSYgX0V4cGVjdGVkLCBjb25zdCBfVHkgX0Rlc2lyZWQsIGNvbnN0IG1lbW9yeV9vcmRlciBf
T3JkZXIpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHRoaXMtPmNvbXBhcmVfZXhjaGFuZ2Vf
c3Ryb25nKF9FeHBlY3RlZCwgX0Rlc2lyZWQsIF9PcmRlcik7DQogICAgfQ0KDQogICAgYm9vbCBj
b21wYXJlX2V4Y2hhbmdlX3dlYWsoX1R5JiBfRXhwZWN0ZWQsIGNvbnN0IF9UeSBfRGVzaXJlZCwg
Y29uc3QgbWVtb3J5X29yZGVyIF9TdWNjZXNzLA0KICAgICAgICBjb25zdCBtZW1vcnlfb3JkZXIg
X0ZhaWx1cmUpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgc3RhdGljX2Fzc2VydChfRGVw
cmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQogICAg
ICAgIHJldHVybiB0aGlzLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhfRXhwZWN0ZWQsIF9EZXNp
cmVkLCBfQ29tYmluZV9jYXNfbWVtb3J5X29yZGVycyhfU3VjY2VzcywgX0ZhaWx1cmUpKTsNCiAg
ICB9DQoNCiAgICBib29sIGNvbXBhcmVfZXhjaGFuZ2Vfd2VhaygNCiAgICAgICAgX1R5JiBfRXhw
ZWN0ZWQsIGNvbnN0IF9UeSBfRGVzaXJlZCwgY29uc3QgbWVtb3J5X29yZGVyIF9TdWNjZXNzLCBj
b25zdCBtZW1vcnlfb3JkZXIgX0ZhaWx1cmUpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHRo
aXMtPmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKF9FeHBlY3RlZCwgX0Rlc2lyZWQsIF9Db21iaW5l
X2Nhc19tZW1vcnlfb3JkZXJzKF9TdWNjZXNzLCBfRmFpbHVyZSkpOw0KICAgIH0NCg0KICAgIG9w
ZXJhdG9yIF9UeSgpIGNvbnN0IHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgc3RhdGljX2Fz
c2VydChfRGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZhaWxz
Iik7DQogICAgICAgIHJldHVybiB0aGlzLT5sb2FkKCk7DQogICAgfQ0KDQogICAgb3BlcmF0b3Ig
X1R5KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gdGhpcy0+bG9hZCgpOw0KICAg
IH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmF0b21pYyhfVHkpIC0+IGF0b21pYzxf
VHk+Ow0KI2xpbmUgMTY3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxhdG9taWMiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJk
XV0gYm9vbCBhdG9taWNfaXNfbG9ja19mcmVlKGNvbnN0IHZvbGF0aWxlIGF0b21pYzxfVHk+KiBf
TWVtKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmlzX2xvY2tfZnJlZSgpOw0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBib29sIGF0b21pY19pc19sb2NrX2Zy
ZWUoY29uc3QgYXRvbWljPF9UeT4qIF9NZW0pIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX01lbS0+
aXNfbG9ja19mcmVlKCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQogdm9pZCBhdG9taWNf
aW5pdCgNCiAgICBhdG9taWM8X1R5PiogY29uc3QgX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWlj
PF9UeT46OnZhbHVlX3R5cGUgX1ZhbHVlKSBub2V4Y2VwdCB7DQoNCiAgICA6OiBtZW1jcHkoOjpz
dGQ6OiBhZGRyZXNzb2YoX01lbS0+X1N0b3JhZ2UpLCA6OnN0ZDo6IGFkZHJlc3NvZihfVmFsdWUp
LCBzaXplb2YoX1R5KSk7DQoNCg0KI2xpbmUgMTY5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQogICAgOjogbWVtc2V0KHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KF9NZW0pICsgc2l6ZW9mKF9UeSksIDAsIHNpemVvZihh
dG9taWM8X1R5PikgLSBzaXplb2YoX1R5KSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQog
dm9pZCBhdG9taWNfaW5pdCgNCiAgICB2b2xhdGlsZSBhdG9taWM8X1R5PiogY29uc3QgX01lbSwg
Y29uc3QgdHlwZW5hbWUgYXRvbWljPF9UeT46OnZhbHVlX3R5cGUgX1ZhbHVlKSBub2V4Y2VwdCB7
DQogICAgDQogICAgc3RhdGljX2Fzc2VydChfRGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRp
bGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQogICAgOjpzdGQ6OiBhdG9taWNfaW5pdChjb25zdF9j
YXN0PGF0b21pYzxfVHk+Kj4oX01lbSksIF9WYWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHk+DQp2b2lkIGF0b21pY19zdG9yZSh2b2xhdGlsZSBhdG9taWM8X1R5PiogY29uc3QgX01lbSwg
Y29uc3QgX0lkZW50aXR5X3Q8X1R5PiBfVmFsdWUpIG5vZXhjZXB0IHsNCiAgICBzdGF0aWNfYXNz
ZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGlsZTxfVHk+LCAiTmV2ZXIgZmFpbHMi
KTsNCiAgICBfTWVtLT5zdG9yZShfVmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
dm9pZCBhdG9taWNfc3RvcmUoYXRvbWljPF9UeT4qIGNvbnN0IF9NZW0sIGNvbnN0IF9JZGVudGl0
eV90PF9UeT4gX1ZhbHVlKSBub2V4Y2VwdCB7DQogICAgX01lbS0+c3RvcmUoX1ZhbHVlKTsNCn0N
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnZvaWQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KA0KICAg
IHZvbGF0aWxlIGF0b21pYzxfVHk+KiBjb25zdCBfTWVtLCBjb25zdCBfSWRlbnRpdHlfdDxfVHk+
IF9WYWx1ZSwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlcikgbm9leGNlcHQgew0KICAgIHN0YXRp
Y19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVlX3ZvbGF0aWxlPF9UeT4sICJOZXZlciBm
YWlscyIpOw0KICAgIF9NZW0tPnN0b3JlKF9WYWx1ZSwgX09yZGVyKTsNCn0NCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCnZvaWQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KGF0b21pYzxfVHk+KiBjb25z
dCBfTWVtLCBjb25zdCBfSWRlbnRpdHlfdDxfVHk+IF9WYWx1ZSwgY29uc3QgbWVtb3J5X29yZGVy
IF9PcmRlcikgbm9leGNlcHQgew0KICAgIF9NZW0tPnN0b3JlKF9WYWx1ZSwgX09yZGVyKTsNCn0N
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gX1R5IGF0b21pY19sb2FkKGNv
bnN0IHZvbGF0aWxlIGF0b21pYzxfVHk+KiBjb25zdCBfTWVtKSBub2V4Y2VwdCB7DQogICAgc3Rh
dGljX2Fzc2VydChfRGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVy
IGZhaWxzIik7DQogICAgcmV0dXJuIF9NZW0tPmxvYWQoKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
IF9UeT4NCltbbm9kaXNjYXJkXV0gX1R5IGF0b21pY19sb2FkKGNvbnN0IGF0b21pYzxfVHk+KiBj
b25zdCBfTWVtKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmxvYWQoKTsNCn0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gX1R5IGF0b21pY19sb2FkX2V4cGxpY2l0
KGNvbnN0IHZvbGF0aWxlIGF0b21pYzxfVHk+KiBjb25zdCBfTWVtLCBjb25zdCBtZW1vcnlfb3Jk
ZXIgX09yZGVyKSBub2V4Y2VwdCB7DQogICAgc3RhdGljX2Fzc2VydChfRGVwcmVjYXRlX25vbl9s
b2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQogICAgcmV0dXJuIF9NZW0t
PmxvYWQoX09yZGVyKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0g
X1R5IGF0b21pY19sb2FkX2V4cGxpY2l0KGNvbnN0IGF0b21pYzxfVHk+KiBjb25zdCBfTWVtLCBj
b25zdCBtZW1vcnlfb3JkZXIgX09yZGVyKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmxv
YWQoX09yZGVyKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCl9UeSBhdG9taWNfZXhjaGFu
Z2Uodm9sYXRpbGUgYXRvbWljPF9UeT4qIGNvbnN0IF9NZW0sIGNvbnN0IF9JZGVudGl0eV90PF9U
eT4gX1ZhbHVlKSBub2V4Y2VwdCB7DQogICAgc3RhdGljX2Fzc2VydChfRGVwcmVjYXRlX25vbl9s
b2NrX2ZyZWVfdm9sYXRpbGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQogICAgcmV0dXJuIF9NZW0t
PmV4Y2hhbmdlKF9WYWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpfVHkgYXRvbWlj
X2V4Y2hhbmdlKGF0b21pYzxfVHk+KiBjb25zdCBfTWVtLCBjb25zdCBfSWRlbnRpdHlfdDxfVHk+
IF9WYWx1ZSkgbm9leGNlcHQgew0KICAgIHJldHVybiBfTWVtLT5leGNoYW5nZShfVmFsdWUpOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19leGNoYW5nZV9leHBsaWNpdCgN
CiAgICB2b2xhdGlsZSBhdG9taWM8X1R5PiogY29uc3QgX01lbSwgY29uc3QgX0lkZW50aXR5X3Q8
X1R5PiBfVmFsdWUsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0IHsNCiAgICBz
dGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGlsZTxfVHk+LCAiTmV2
ZXIgZmFpbHMiKTsNCiAgICByZXR1cm4gX01lbS0+ZXhjaGFuZ2UoX1ZhbHVlLCBfT3JkZXIpOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19leGNoYW5nZV9leHBsaWNpdCgN
CiAgICBhdG9taWM8X1R5PiogY29uc3QgX01lbSwgY29uc3QgX0lkZW50aXR5X3Q8X1R5PiBfVmFs
dWUsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX01l
bS0+ZXhjaGFuZ2UoX1ZhbHVlLCBfT3JkZXIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0K
Ym9vbCBhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcoDQogICAgdm9sYXRpbGUgYXRvbWlj
PF9UeT4qIGNvbnN0IF9NZW0sIF9JZGVudGl0eV90PF9UeT4qIGNvbnN0IF9FeHBlY3RlZCwgY29u
c3QgX0lkZW50aXR5X3Q8X1R5PiBfRGVzaXJlZCkgbm9leGNlcHQgew0KICAgIHN0YXRpY19hc3Nl
cnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVlX3ZvbGF0aWxlPF9UeT4sICJOZXZlciBmYWlscyIp
Ow0KICAgIHJldHVybiBfTWVtLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygqX0V4cGVjdGVkLCBf
RGVzaXJlZCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpib29sIGF0b21pY19jb21wYXJl
X2V4Y2hhbmdlX3N0cm9uZygNCiAgICBhdG9taWM8X1R5PiogY29uc3QgX01lbSwgX0lkZW50aXR5
X3Q8X1R5PiogY29uc3QgX0V4cGVjdGVkLCBjb25zdCBfSWRlbnRpdHlfdDxfVHk+IF9EZXNpcmVk
KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKCpf
RXhwZWN0ZWQsIF9EZXNpcmVkKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCmJvb2wgYXRv
bWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nX2V4cGxpY2l0KHZvbGF0aWxlIGF0b21pYzxfVHk+
KiBjb25zdCBfTWVtLCBfSWRlbnRpdHlfdDxfVHk+KiBjb25zdCBfRXhwZWN0ZWQsDQogICAgY29u
c3QgX0lkZW50aXR5X3Q8X1R5PiBfRGVzaXJlZCwgY29uc3QgbWVtb3J5X29yZGVyIF9TdWNjZXNz
LCBjb25zdCBtZW1vcnlfb3JkZXIgX0ZhaWx1cmUpIG5vZXhjZXB0IHsNCiAgICBzdGF0aWNfYXNz
ZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGlsZTxfVHk+LCAiTmV2ZXIgZmFpbHMi
KTsNCiAgICByZXR1cm4gX01lbS0+Y29tcGFyZV9leGNoYW5nZV9zdHJvbmcoKl9FeHBlY3RlZCwg
X0Rlc2lyZWQsIF9Db21iaW5lX2Nhc19tZW1vcnlfb3JkZXJzKF9TdWNjZXNzLCBfRmFpbHVyZSkp
Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KYm9vbCBhdG9taWNfY29tcGFyZV9leGNoYW5n
ZV9zdHJvbmdfZXhwbGljaXQoYXRvbWljPF9UeT4qIGNvbnN0IF9NZW0sIF9JZGVudGl0eV90PF9U
eT4qIGNvbnN0IF9FeHBlY3RlZCwNCiAgICBjb25zdCBfSWRlbnRpdHlfdDxfVHk+IF9EZXNpcmVk
LCBjb25zdCBtZW1vcnlfb3JkZXIgX1N1Y2Nlc3MsIGNvbnN0IG1lbW9yeV9vcmRlciBfRmFpbHVy
ZSkgbm9leGNlcHQgew0KICAgIHJldHVybiBfTWVtLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygq
X0V4cGVjdGVkLCBfRGVzaXJlZCwgX0NvbWJpbmVfY2FzX21lbW9yeV9vcmRlcnMoX1N1Y2Nlc3Ms
IF9GYWlsdXJlKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpib29sIGF0b21pY19jb21w
YXJlX2V4Y2hhbmdlX3dlYWsoDQogICAgdm9sYXRpbGUgYXRvbWljPF9UeT4qIGNvbnN0IF9NZW0s
IF9JZGVudGl0eV90PF9UeT4qIGNvbnN0IF9FeHBlY3RlZCwgY29uc3QgX0lkZW50aXR5X3Q8X1R5
PiBfRGVzaXJlZCkgbm9leGNlcHQgew0KICAgIHN0YXRpY19hc3NlcnQoX0RlcHJlY2F0ZV9ub25f
bG9ja19mcmVlX3ZvbGF0aWxlPF9UeT4sICJOZXZlciBmYWlscyIpOw0KICAgIHJldHVybiBfTWVt
LT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygqX0V4cGVjdGVkLCBfRGVzaXJlZCk7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQpib29sIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWsoDQog
ICAgYXRvbWljPF9UeT4qIGNvbnN0IF9NZW0sIF9JZGVudGl0eV90PF9UeT4qIGNvbnN0IF9FeHBl
Y3RlZCwgY29uc3QgX0lkZW50aXR5X3Q8X1R5PiBfRGVzaXJlZCkgbm9leGNlcHQgew0KICAgIHJl
dHVybiBfTWVtLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygqX0V4cGVjdGVkLCBfRGVzaXJlZCk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpib29sIGF0b21pY19jb21wYXJlX2V4Y2hhbmdl
X3dlYWtfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljPF9UeT4qIGNvbnN0IF9NZW0sIF9JZGVudGl0
eV90PF9UeT4qIGNvbnN0IF9FeHBlY3RlZCwNCiAgICBjb25zdCBfSWRlbnRpdHlfdDxfVHk+IF9E
ZXNpcmVkLCBjb25zdCBtZW1vcnlfb3JkZXIgX1N1Y2Nlc3MsIGNvbnN0IG1lbW9yeV9vcmRlciBf
RmFpbHVyZSkgbm9leGNlcHQgew0KICAgIHN0YXRpY19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9j
a19mcmVlX3ZvbGF0aWxlPF9UeT4sICJOZXZlciBmYWlscyIpOw0KICAgIHJldHVybiBfTWVtLT5j
b21wYXJlX2V4Y2hhbmdlX3N0cm9uZygqX0V4cGVjdGVkLCBfRGVzaXJlZCwgX0NvbWJpbmVfY2Fz
X21lbW9yeV9vcmRlcnMoX1N1Y2Nlc3MsIF9GYWlsdXJlKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHk+DQpib29sIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWtfZXhwbGljaXQoYXRvbWlj
PF9UeT4qIGNvbnN0IF9NZW0sIF9JZGVudGl0eV90PF9UeT4qIGNvbnN0IF9FeHBlY3RlZCwNCiAg
ICBjb25zdCBfSWRlbnRpdHlfdDxfVHk+IF9EZXNpcmVkLCBjb25zdCBtZW1vcnlfb3JkZXIgX1N1
Y2Nlc3MsIGNvbnN0IG1lbW9yeV9vcmRlciBfRmFpbHVyZSkgbm9leGNlcHQgew0KICAgIHJldHVy
biBfTWVtLT5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygqX0V4cGVjdGVkLCBfRGVzaXJlZCwgX0Nv
bWJpbmVfY2FzX21lbW9yeV9vcmRlcnMoX1N1Y2Nlc3MsIF9GYWlsdXJlKSk7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQpfVHkgYXRvbWljX2ZldGNoX2FkZCh2b2xhdGlsZSBhdG9taWM8X1R5
PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWljPF9UeT46OmRpZmZlcmVuY2VfdHlwZSBfVmFs
dWUpIG5vZXhjZXB0IHsNCiAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJl
ZV92b2xhdGlsZTxfVHk+LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICByZXR1cm4gX01lbS0+ZmV0Y2hf
YWRkKF9WYWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpfVHkgYXRvbWljX2ZldGNo
X2FkZChhdG9taWM8X1R5PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWljPF9UeT46OmRpZmZl
cmVuY2VfdHlwZSBfVmFsdWUpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX01lbS0+ZmV0Y2hfYWRk
KF9WYWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpfVHkgYXRvbWljX2ZldGNoX2Fk
ZF9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWM8X1R5PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRv
bWljPF9UeT46OmRpZmZlcmVuY2VfdHlwZSBfVmFsdWUsDQogICAgY29uc3QgbWVtb3J5X29yZGVy
IF9PcmRlcikgbm9leGNlcHQgew0KICAgIHN0YXRpY19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9j
a19mcmVlX3ZvbGF0aWxlPF9UeT4sICJOZXZlciBmYWlscyIpOw0KICAgIHJldHVybiBfTWVtLT5m
ZXRjaF9hZGQoX1ZhbHVlLCBfT3JkZXIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5
IGF0b21pY19mZXRjaF9hZGRfZXhwbGljaXQoDQogICAgYXRvbWljPF9UeT4qIF9NZW0sIGNvbnN0
IHR5cGVuYW1lIGF0b21pYzxfVHk+OjpkaWZmZXJlbmNlX3R5cGUgX1ZhbHVlLCBjb25zdCBtZW1v
cnlfb3JkZXIgX09yZGVyKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmZldGNoX2FkZChf
VmFsdWUsIF9PcmRlcik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpfVHkgYXRvbWljX2Zl
dGNoX3N1Yih2b2xhdGlsZSBhdG9taWM8X1R5PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWlj
PF9UeT46OmRpZmZlcmVuY2VfdHlwZSBfVmFsdWUpIG5vZXhjZXB0IHsNCiAgICBzdGF0aWNfYXNz
ZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGlsZTxfVHk+LCAiTmV2ZXIgZmFpbHMi
KTsNCiAgICByZXR1cm4gX01lbS0+ZmV0Y2hfc3ViKF9WYWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHk+DQpfVHkgYXRvbWljX2ZldGNoX3N1YihhdG9taWM8X1R5PiogX01lbSwgY29uc3Qg
dHlwZW5hbWUgYXRvbWljPF9UeT46OmRpZmZlcmVuY2VfdHlwZSBfVmFsdWUpIG5vZXhjZXB0IHsN
CiAgICByZXR1cm4gX01lbS0+ZmV0Y2hfc3ViKF9WYWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHk+DQpfVHkgYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdCh2b2xhdGlsZSBhdG9taWM8X1R5
PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWljPF9UeT46OmRpZmZlcmVuY2VfdHlwZSBfVmFs
dWUsDQogICAgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlcikgbm9leGNlcHQgew0KICAgIHN0YXRp
Y19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVlX3ZvbGF0aWxlPF9UeT4sICJOZXZlciBm
YWlscyIpOw0KICAgIHJldHVybiBfTWVtLT5mZXRjaF9zdWIoX1ZhbHVlLCBfT3JkZXIpOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19mZXRjaF9zdWJfZXhwbGljaXQoDQog
ICAgYXRvbWljPF9UeT4qIF9NZW0sIGNvbnN0IHR5cGVuYW1lIGF0b21pYzxfVHk+OjpkaWZmZXJl
bmNlX3R5cGUgX1ZhbHVlLCBjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyKSBub2V4Y2VwdCB7DQog
ICAgcmV0dXJuIF9NZW0tPmZldGNoX3N1YihfVmFsdWUsIF9PcmRlcik7DQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQpfVHkgYXRvbWljX2ZldGNoX2FuZCh2b2xhdGlsZSBhdG9taWM8X1R5Piog
X01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWljPF9UeT46OnZhbHVlX3R5cGUgX1ZhbHVlKSBub2V4
Y2VwdCB7DQogICAgc3RhdGljX2Fzc2VydChfRGVwcmVjYXRlX25vbl9sb2NrX2ZyZWVfdm9sYXRp
bGU8X1R5PiwgIk5ldmVyIGZhaWxzIik7DQogICAgcmV0dXJuIF9NZW0tPmZldGNoX2FuZChfVmFs
dWUpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19mZXRjaF9hbmQoYXRv
bWljPF9UeT4qIF9NZW0sIGNvbnN0IHR5cGVuYW1lIGF0b21pYzxfVHk+Ojp2YWx1ZV90eXBlIF9W
YWx1ZSkgbm9leGNlcHQgew0KICAgIHJldHVybiBfTWVtLT5mZXRjaF9hbmQoX1ZhbHVlKTsNCn0N
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCl9UeSBhdG9taWNfZmV0Y2hfYW5kX2V4cGxpY2l0KA0K
ICAgIHZvbGF0aWxlIGF0b21pYzxfVHk+KiBfTWVtLCBjb25zdCB0eXBlbmFtZSBhdG9taWM8X1R5
Pjo6dmFsdWVfdHlwZSBfVmFsdWUsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0
IHsNCiAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGlsZTxf
VHk+LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICByZXR1cm4gX01lbS0+ZmV0Y2hfYW5kKF9WYWx1ZSwg
X09yZGVyKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCl9UeSBhdG9taWNfZmV0Y2hfYW5k
X2V4cGxpY2l0KA0KICAgIGF0b21pYzxfVHk+KiBfTWVtLCBjb25zdCB0eXBlbmFtZSBhdG9taWM8
X1R5Pjo6dmFsdWVfdHlwZSBfVmFsdWUsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhj
ZXB0IHsNCiAgICByZXR1cm4gX01lbS0+ZmV0Y2hfYW5kKF9WYWx1ZSwgX09yZGVyKTsNCn0NCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeT4NCl9UeSBhdG9taWNfZmV0Y2hfb3Iodm9sYXRpbGUgYXRvbWlj
PF9UeT4qIF9NZW0sIGNvbnN0IHR5cGVuYW1lIGF0b21pYzxfVHk+Ojp2YWx1ZV90eXBlIF9WYWx1
ZSkgbm9leGNlcHQgew0KICAgIHN0YXRpY19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVl
X3ZvbGF0aWxlPF9UeT4sICJOZXZlciBmYWlscyIpOw0KICAgIHJldHVybiBfTWVtLT5mZXRjaF9v
cihfVmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19mZXRjaF9v
cihhdG9taWM8X1R5PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWljPF9UeT46OnZhbHVlX3R5
cGUgX1ZhbHVlKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmZldGNoX29yKF9WYWx1ZSk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpfVHkgYXRvbWljX2ZldGNoX29yX2V4cGxpY2l0
KA0KICAgIHZvbGF0aWxlIGF0b21pYzxfVHk+KiBfTWVtLCBjb25zdCB0eXBlbmFtZSBhdG9taWM8
X1R5Pjo6dmFsdWVfdHlwZSBfVmFsdWUsIGNvbnN0IG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhj
ZXB0IHsNCiAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJlZV92b2xhdGls
ZTxfVHk+LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICByZXR1cm4gX01lbS0+ZmV0Y2hfb3IoX1ZhbHVl
LCBfT3JkZXIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19mZXRjaF9v
cl9leHBsaWNpdCgNCiAgICBhdG9taWM8X1R5PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWlj
PF9UeT46OnZhbHVlX3R5cGUgX1ZhbHVlLCBjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyKSBub2V4
Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmZldGNoX29yKF9WYWx1ZSwgX09yZGVyKTsNCn0NCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeT4NCl9UeSBhdG9taWNfZmV0Y2hfeG9yKHZvbGF0aWxlIGF0b21p
YzxfVHk+KiBfTWVtLCBjb25zdCB0eXBlbmFtZSBhdG9taWM8X1R5Pjo6dmFsdWVfdHlwZSBfVmFs
dWUpIG5vZXhjZXB0IHsNCiAgICBzdGF0aWNfYXNzZXJ0KF9EZXByZWNhdGVfbm9uX2xvY2tfZnJl
ZV92b2xhdGlsZTxfVHk+LCAiTmV2ZXIgZmFpbHMiKTsNCiAgICByZXR1cm4gX01lbS0+ZmV0Y2hf
eG9yKF9WYWx1ZSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpfVHkgYXRvbWljX2ZldGNo
X3hvcihhdG9taWM8X1R5PiogX01lbSwgY29uc3QgdHlwZW5hbWUgYXRvbWljPF9UeT46OnZhbHVl
X3R5cGUgX1ZhbHVlKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9NZW0tPmZldGNoX3hvcihfVmFs
dWUpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19mZXRjaF94b3JfZXhw
bGljaXQoDQogICAgdm9sYXRpbGUgYXRvbWljPF9UeT4qIF9NZW0sIGNvbnN0IHR5cGVuYW1lIGF0
b21pYzxfVHk+Ojp2YWx1ZV90eXBlIF9WYWx1ZSwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlcikg
bm9leGNlcHQgew0KICAgIHN0YXRpY19hc3NlcnQoX0RlcHJlY2F0ZV9ub25fbG9ja19mcmVlX3Zv
bGF0aWxlPF9UeT4sICJOZXZlciBmYWlscyIpOw0KICAgIHJldHVybiBfTWVtLT5mZXRjaF94b3Io
X1ZhbHVlLCBfT3JkZXIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5IGF0b21pY19m
ZXRjaF94b3JfZXhwbGljaXQoDQogICAgYXRvbWljPF9UeT4qIF9NZW0sIGNvbnN0IHR5cGVuYW1l
IGF0b21pYzxfVHk+Ojp2YWx1ZV90eXBlIF9WYWx1ZSwgY29uc3QgbWVtb3J5X29yZGVyIF9PcmRl
cikgbm9leGNlcHQgew0KICAgIHJldHVybiBfTWVtLT5mZXRjaF94b3IoX1ZhbHVlLCBfT3JkZXIp
Ow0KfQ0KDQoNCnVzaW5nIGF0b21pY19ib29sID0gYXRvbWljPGJvb2w+Ow0KDQp1c2luZyBhdG9t
aWNfY2hhciAgID0gYXRvbWljPGNoYXI+Ow0KdXNpbmcgYXRvbWljX3NjaGFyICA9IGF0b21pYzxz
aWduZWQgY2hhcj47DQp1c2luZyBhdG9taWNfdWNoYXIgID0gYXRvbWljPHVuc2lnbmVkIGNoYXI+
Ow0KdXNpbmcgYXRvbWljX3Nob3J0ICA9IGF0b21pYzxzaG9ydD47DQp1c2luZyBhdG9taWNfdXNo
b3J0ID0gYXRvbWljPHVuc2lnbmVkIHNob3J0PjsNCnVzaW5nIGF0b21pY19pbnQgICAgPSBhdG9t
aWM8aW50PjsNCnVzaW5nIGF0b21pY191aW50ICAgPSBhdG9taWM8dW5zaWduZWQgaW50PjsNCnVz
aW5nIGF0b21pY19sb25nICAgPSBhdG9taWM8bG9uZz47DQp1c2luZyBhdG9taWNfdWxvbmcgID0g
YXRvbWljPHVuc2lnbmVkIGxvbmc+Ow0KdXNpbmcgYXRvbWljX2xsb25nICA9IGF0b21pYzxsb25n
IGxvbmc+Ow0KdXNpbmcgYXRvbWljX3VsbG9uZyA9IGF0b21pYzx1bnNpZ25lZCBsb25nIGxvbmc+
Ow0KDQoNCg0KDQp1c2luZyBhdG9taWNfY2hhcjE2X3QgPSBhdG9taWM8Y2hhcjE2X3Q+Ow0KdXNp
bmcgYXRvbWljX2NoYXIzMl90ID0gYXRvbWljPGNoYXIzMl90PjsNCnVzaW5nIGF0b21pY193Y2hh
cl90ICA9IGF0b21pYzx3Y2hhcl90PjsNCg0KdXNpbmcgYXRvbWljX2ludDhfdCAgID0gYXRvbWlj
PGludDhfdD47DQp1c2luZyBhdG9taWNfdWludDhfdCAgPSBhdG9taWM8dWludDhfdD47DQp1c2lu
ZyBhdG9taWNfaW50MTZfdCAgPSBhdG9taWM8aW50MTZfdD47DQp1c2luZyBhdG9taWNfdWludDE2
X3QgPSBhdG9taWM8dWludDE2X3Q+Ow0KdXNpbmcgYXRvbWljX2ludDMyX3QgID0gYXRvbWljPGlu
dDMyX3Q+Ow0KdXNpbmcgYXRvbWljX3VpbnQzMl90ID0gYXRvbWljPHVpbnQzMl90PjsNCnVzaW5n
IGF0b21pY19pbnQ2NF90ICA9IGF0b21pYzxpbnQ2NF90PjsNCnVzaW5nIGF0b21pY191aW50NjRf
dCA9IGF0b21pYzx1aW50NjRfdD47DQoNCnVzaW5nIGF0b21pY19pbnRfbGVhc3Q4X3QgICA9IGF0
b21pYzxpbnRfbGVhc3Q4X3Q+Ow0KdXNpbmcgYXRvbWljX3VpbnRfbGVhc3Q4X3QgID0gYXRvbWlj
PHVpbnRfbGVhc3Q4X3Q+Ow0KdXNpbmcgYXRvbWljX2ludF9sZWFzdDE2X3QgID0gYXRvbWljPGlu
dF9sZWFzdDE2X3Q+Ow0KdXNpbmcgYXRvbWljX3VpbnRfbGVhc3QxNl90ID0gYXRvbWljPHVpbnRf
bGVhc3QxNl90PjsNCnVzaW5nIGF0b21pY19pbnRfbGVhc3QzMl90ICA9IGF0b21pYzxpbnRfbGVh
c3QzMl90PjsNCnVzaW5nIGF0b21pY191aW50X2xlYXN0MzJfdCA9IGF0b21pYzx1aW50X2xlYXN0
MzJfdD47DQp1c2luZyBhdG9taWNfaW50X2xlYXN0NjRfdCAgPSBhdG9taWM8aW50X2xlYXN0NjRf
dD47DQp1c2luZyBhdG9taWNfdWludF9sZWFzdDY0X3QgPSBhdG9taWM8dWludF9sZWFzdDY0X3Q+
Ow0KDQp1c2luZyBhdG9taWNfaW50X2Zhc3Q4X3QgICA9IGF0b21pYzxpbnRfZmFzdDhfdD47DQp1
c2luZyBhdG9taWNfdWludF9mYXN0OF90ICA9IGF0b21pYzx1aW50X2Zhc3Q4X3Q+Ow0KdXNpbmcg
YXRvbWljX2ludF9mYXN0MTZfdCAgPSBhdG9taWM8aW50X2Zhc3QxNl90PjsNCnVzaW5nIGF0b21p
Y191aW50X2Zhc3QxNl90ID0gYXRvbWljPHVpbnRfZmFzdDE2X3Q+Ow0KdXNpbmcgYXRvbWljX2lu
dF9mYXN0MzJfdCAgPSBhdG9taWM8aW50X2Zhc3QzMl90PjsNCnVzaW5nIGF0b21pY191aW50X2Zh
c3QzMl90ID0gYXRvbWljPHVpbnRfZmFzdDMyX3Q+Ow0KdXNpbmcgYXRvbWljX2ludF9mYXN0NjRf
dCAgPSBhdG9taWM8aW50X2Zhc3Q2NF90PjsNCnVzaW5nIGF0b21pY191aW50X2Zhc3Q2NF90ID0g
YXRvbWljPHVpbnRfZmFzdDY0X3Q+Ow0KDQp1c2luZyBhdG9taWNfaW50cHRyX3QgID0gYXRvbWlj
PGludHB0cl90PjsNCnVzaW5nIGF0b21pY191aW50cHRyX3QgPSBhdG9taWM8dWludHB0cl90PjsN
CnVzaW5nIGF0b21pY19zaXplX3QgICAgPSBhdG9taWM8c2l6ZV90PjsNCnVzaW5nIGF0b21pY19w
dHJkaWZmX3QgPSBhdG9taWM8cHRyZGlmZl90PjsNCnVzaW5nIGF0b21pY19pbnRtYXhfdCAgPSBh
dG9taWM8aW50bWF4X3Q+Ow0KdXNpbmcgYXRvbWljX3VpbnRtYXhfdCA9IGF0b21pYzx1aW50bWF4
X3Q+Ow0KDQoNCg0KDQoNCg0KI2xpbmUgMjAxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQoNCg0KDQoNCnN0cnVjdCBhdG9taWNfZmxh
ZyB7IA0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXRvbWljIg0KDQogICAgYm9vbCB0ZXN0X2FuZF9z
ZXQoY29uc3QgbWVtb3J5X29yZGVyIF9PcmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiBfU3RvcmFnZS5leGNoYW5nZSh0cnVlLCBfT3JkZXIpICE9
IDA7DQogICAgfQ0KDQogICAgYm9vbCB0ZXN0X2FuZF9zZXQoY29uc3QgbWVtb3J5X29yZGVyIF9P
cmRlciA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0KSB2b2xhdGlsZSBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiBfU3RvcmFnZS5leGNoYW5nZSh0cnVlLCBfT3JkZXIpICE9IDA7DQogICAgfQ0KDQog
ICAgdm9pZCBjbGVhcihjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyID0gbWVtb3J5X29yZGVyX3Nl
cV9jc3QpIG5vZXhjZXB0IHsNCiAgICAgICAgX1N0b3JhZ2Uuc3RvcmUoZmFsc2UsIF9PcmRlcik7
DQogICAgfQ0KDQogICAgdm9pZCBjbGVhcihjb25zdCBtZW1vcnlfb3JkZXIgX09yZGVyID0gbWVt
b3J5X29yZGVyX3NlcV9jc3QpIHZvbGF0aWxlIG5vZXhjZXB0IHsNCiAgICAgICAgX1N0b3JhZ2Uu
c3RvcmUoZmFsc2UsIF9PcmRlcik7DQogICAgfQ0KDQogICAgY29uc3RleHByIGF0b21pY19mbGFn
KCkgbm9leGNlcHQgPSBkZWZhdWx0Ow0KDQoNCiAgICBhdG9taWM8bG9uZz4gX1N0b3JhZ2U7DQoN
Cg0KI2xpbmUgMjA0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxhdG9taWMiDQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDIwNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcYXRvbWljIg0KDQppbmxpbmUgYm9vbCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXQo
YXRvbWljX2ZsYWcqIF9GbGFnKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9GbGFnLT50ZXN0X2Fu
ZF9zZXQoKTsNCn0NCg0KaW5saW5lIGJvb2wgYXRvbWljX2ZsYWdfdGVzdF9hbmRfc2V0KHZvbGF0
aWxlIGF0b21pY19mbGFnKiBfRmxhZykgbm9leGNlcHQgew0KICAgIHJldHVybiBfRmxhZy0+dGVz
dF9hbmRfc2V0KCk7DQp9DQoNCmlubGluZSBib29sIGF0b21pY19mbGFnX3Rlc3RfYW5kX3NldF9l
eHBsaWNpdChhdG9taWNfZmxhZyogX0ZsYWcsIG1lbW9yeV9vcmRlciBfT3JkZXIpIG5vZXhjZXB0
IHsNCiAgICByZXR1cm4gX0ZsYWctPnRlc3RfYW5kX3NldChfT3JkZXIpOw0KfQ0KDQppbmxpbmUg
Ym9vbCBhdG9taWNfZmxhZ190ZXN0X2FuZF9zZXRfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zs
YWcqIF9GbGFnLCBtZW1vcnlfb3JkZXIgX09yZGVyKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9G
bGFnLT50ZXN0X2FuZF9zZXQoX09yZGVyKTsNCn0NCg0KaW5saW5lIHZvaWQgYXRvbWljX2ZsYWdf
Y2xlYXIoYXRvbWljX2ZsYWcqIF9GbGFnKSBub2V4Y2VwdCB7DQogICAgX0ZsYWctPmNsZWFyKCk7
DQp9DQoNCmlubGluZSB2b2lkIGF0b21pY19mbGFnX2NsZWFyKHZvbGF0aWxlIGF0b21pY19mbGFn
KiBfRmxhZykgbm9leGNlcHQgew0KICAgIF9GbGFnLT5jbGVhcigpOw0KfQ0KDQppbmxpbmUgdm9p
ZCBhdG9taWNfZmxhZ19jbGVhcl9leHBsaWNpdChhdG9taWNfZmxhZyogX0ZsYWcsIG1lbW9yeV9v
cmRlciBfT3JkZXIpIG5vZXhjZXB0IHsNCiAgICBfRmxhZy0+Y2xlYXIoX09yZGVyKTsNCn0NCg0K
aW5saW5lIHZvaWQgYXRvbWljX2ZsYWdfY2xlYXJfZXhwbGljaXQodm9sYXRpbGUgYXRvbWljX2Zs
YWcqIF9GbGFnLCBtZW1vcnlfb3JkZXIgX09yZGVyKSBub2V4Y2VwdCB7DQogICAgX0ZsYWctPmNs
ZWFyKF9PcmRlcik7DQp9DQoNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2Fy
bmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KI2xpbmUgMjEyMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhdG9taWMiDQojbGluZSAyMTIxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGF0b21pYyIN
CiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9BdG9taWNzLmgiDQoNCg0KDQoNCmV4dGVybiAiQyIgdm9pZCBfUmVhZFdyaXRl
QmFycmllcih2b2lkKTsNCiNwcmFnbWEgaW50cmluc2ljKF9SZWFkV3JpdGVCYXJyaWVyKQ0KI2xp
bmUgMzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL0F0b21pY3MuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGlu
ZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWlseS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOjQwMDEpIA0KI2xpbmUgMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luYXBpZmFtaWx5
LmgiDQojcHJhZ21hIG9uY2UNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWls
eS5oIg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbnBhY2thZ2VmYW1pbHkuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gp
DQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDAxKSANCiNsaW5lIDIzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHdpbnBhY2thZ2VmYW1pbHkuaCINCiNwcmFnbWEgb25jZQ0KI2xpbmUgMjUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxcd2lucGFja2FnZWZhbWlseS5oIg0KDQoNCg0KI2xpbmUgMjkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcd2lucGFja2FnZWZhbWlseS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI2xpbmUg
ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxcd2lucGFja2FnZWZhbWlseS5oIg0KI2xpbmUgOTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcd2lucGFja2FnZWZhbWlseS5oIg0KDQojbGluZSA5MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFx3aW5wYWNrYWdlZmFtaWx5LmgiDQojbGluZSAyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5h
cGlmYW1pbHkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFw
aWZhbWlseS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWlseS5oIg0KDQoNCg0KI2xpbmUg
MTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWlseS5oIg0KDQoNCg0KDQoNCg0KI2xpbmUg
MTU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWlseS5oIg0KDQoNCg0KDQoNCiNsaW5lIDE2
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5hcGlmYW1pbHkuaCINCg0KDQoNCiNsaW5lIDE2OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFx3aW5hcGlmYW1pbHkuaCINCg0KDQoNCg0KDQojbGluZSAxNzUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcd2luYXBpZmFtaWx5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MTg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWlseS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNDQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxcd2luYXBpZmFtaWx5LmgiDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI2xp
bmUgMjQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWlseS5oIg0KI2xpbmUgMjUwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHdpbmFwaWZhbWlseS5oIg0KDQojbGluZSAyNTIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcd2luYXBpZmFtaWx5LmgiDQojbGluZSAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcc2RrZGRrdmVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDY2OCkgDQoj
bGluZSAyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzZGtkZGt2ZXIuaCINCiNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOjQwMDEpIA0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc2RrZGRrdmVyLmgiDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjA4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHNka2Rka3Zlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIyMCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxzZGtkZGt2ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIzMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxzZGtkZGt2ZXIuaCINCg0KDQoNCiNsaW5lIDIzNCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxzZGtkZGt2ZXIuaCINCiNsaW5lIDIzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzZGtkZGt2ZXIu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1MSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxzZGtkZGt2ZXIuaCINCg0KI2xpbmUgMjUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNka2Rka3Zl
ci5oIg0KDQojbGluZSAyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc2RrZGRrdmVyLmgiDQoNCiNsaW5l
IDI1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzZGtkZGt2ZXIuaCINCg0KI2xpbmUgMjU5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHNka2Rka3Zlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDI2NSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxzZGtkZGt2ZXIuaCINCg0KDQojbGluZSAyNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc2RrZGRr
dmVyLmgiDQojbGluZSAyNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc2RrZGRrdmVyLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMjc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNka2Rka3Zlci5oIg0KDQoNCg0K
I2xpbmUgMjgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNka2Rka3Zlci5oIg0KDQoNCg0KI2xpbmUgMjg2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHNka2Rka3Zlci5oIg0KDQoNCg0KI2xpbmUgMjkwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHNka2Rka3Zlci5oIg0KDQoNCg0KI2xpbmUgMjk0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHNka2Rka3Zlci5oIg0KDQoNCg0KI2xpbmUgMjk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNka2Rka3Zl
ci5oIg0KDQojbGluZSAzMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc2RrZGRrdmVyLmgiDQoNCg0KDQoj
cHJhZ21hIHdhcm5pbmcocG9wKQ0KDQoNCiNsaW5lIDMwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzZGtk
ZGt2ZXIuaCINCiNsaW5lIDMwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzZGtkZGt2ZXIuaCINCg0KI2xp
bmUgMzEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNka2Rka3Zlci5oIg0KDQojbGluZSAyMyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmRvd3MuaCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDMwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZG93cy5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3Mu
aCINCg0KDQoNCg0KDQoNCiNsaW5lIDExMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KDQoN
CiNsaW5lIDExNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KDQoNCiNsaW5lIDEyMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KDQoNCiNsaW5lIDEyNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRv
d3MuaCINCg0KDQoNCiNsaW5lIDEyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KDQoNCiNs
aW5lIDEzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KDQoNCg0KDQojbGluZSAxMzggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoNCg0KDQoNCiNsaW5lIDE0MyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmRvd3MuaCINCiNsaW5lIDE0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMTUzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZG93cy5oIg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxNCkNCg0K
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCiNsaW5lIDE2MCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmRvd3MuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojbGluZSAxNjMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5kb3dzLmgiDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDAxKQ0KI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6NDIwMSkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMTQpDQojbGluZSAx
NjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGV4Y3B0LmgiDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6ICAgNDUxNCA0ODIwICkNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0
ZXJuICJDIiB7DQoNCg0KDQoNCnR5cGVkZWYgZW51bSBfRVhDRVBUSU9OX0RJU1BPU0lUSU9ODQp7
DQogICAgRXhjZXB0aW9uQ29udGludWVFeGVjdXRpb24sDQogICAgRXhjZXB0aW9uQ29udGludWVT
ZWFyY2gsDQogICAgRXhjZXB0aW9uTmVzdGVkRXhjZXB0aW9uLA0KICAgIEV4Y2VwdGlvbkNvbGxp
ZGVkVW53aW5kDQp9IEVYQ0VQVElPTl9ESVNQT1NJVElPTjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcZXhjcHQuaCINCiAgICANCg0KICAgICAgICBzdHJ1Y3QgX0VYQ0VQVElP
Tl9SRUNPUkQ7DQogICAgICAgIHN0cnVjdCBfQ09OVEVYVDsNCiAgICAgICAgc3RydWN0IF9ESVNQ
QVRDSEVSX0NPTlRFWFQ7DQoNCiAgICAgICAgIEVYQ0VQVElPTl9ESVNQT1NJVElPTiBfX2NkZWNs
IF9fQ19zcGVjaWZpY19oYW5kbGVyKA0KICAgICAgICAgICAgICAgICBzdHJ1Y3QgX0VYQ0VQVElP
Tl9SRUNPUkQqICAgRXhjZXB0aW9uUmVjb3JkLA0KICAgICAgICAgICAgICAgICB2b2lkKiAgICAg
ICAgICAgICAgICAgICAgICAgRXN0YWJsaXNoZXJGcmFtZSwNCiAgICAgICAgICAgICAgc3RydWN0
IF9DT05URVhUKiAgICAgICAgICAgIENvbnRleHRSZWNvcmQsDQogICAgICAgICAgICAgIHN0cnVj
dCBfRElTUEFUQ0hFUl9DT05URVhUKiBEaXNwYXRjaGVyQ29udGV4dA0KICAgICAgICAgICAgKTsN
Cg0KICAgICNsaW5lIDYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXGV4Y3B0LmgiDQojbGluZSA2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxleGNwdC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnVu
c2lnbmVkIGxvbmcgX19jZGVjbCBfZXhjZXB0aW9uX2NvZGUodm9pZCk7DQp2b2lkICogICAgICAg
IF9fY2RlY2wgX2V4Y2VwdGlvbl9pbmZvKHZvaWQpOw0KaW50ICAgICAgICAgICBfX2NkZWNsIF9h
Ym5vcm1hbF90ZXJtaW5hdGlvbih2b2lkKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KfSBfX3ByYWdt
YShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApIA0KI2xpbmUgMTY4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZG93cy5oIg0KDQojbGluZSAxNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZGVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMTkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxcd2luZGVmLmgiDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxt
aW53aW5kZWYuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUg
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxzcGVjc3RyaW5ncy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNz
dHJpbmdzLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTo0NjY4KSANCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzLmgiDQoN
Cg0KDQogDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzLmgiDQogIA0K
ICNsaW5lIDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzLmgiDQoNCiANCg0KDQoNCiAg
DQogI2xpbmUgMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KIA0KICANCiAg
DQogI2xpbmUgNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KI2xpbmUgNDYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzcGVjc3RyaW5ncy5o
Ig0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmlu
Z3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3Mu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxNiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxzcGVjc3RyaW5ncy5oIg0KI2xpbmUgMjE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNz
dHJpbmdzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMjAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzODAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzcGVj
c3RyaW5ncy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0
ODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0KDQojbGluZSA0OTQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQojbGluZSA0OTcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NjYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MDggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNjI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjQzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNw
ZWNzdHJpbmdzLmgiDQoNCg0KfQ0KI2xpbmUgNjQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJp
bmdzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzX3N0cmljdC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzcGVjc3RyaW5nc19zdHJpY3QuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHNwZWNzdHJpbmdzX3VuZGVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0
cmluZ3Nfc3RyaWN0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMTA2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzcGVjc3RyaW5nc19zdHJpY3QuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTEzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzcGVjc3RyaW5nc19zdHJpY3Qu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDExODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3Nfc3RyaWN0LmgiDQojbGluZSAx
MTg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzX3N0cmljdC5oIg0KI2xpbmUgMTE4NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFxzcGVjc3RyaW5nc19zdHJpY3QuaCINCiNsaW5lIDY3NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxzcGVjc3RyaW5ncy5oIg0KI2xpbmUgNjc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNw
ZWNzdHJpbmdzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjk0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdzLmgiDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcZHJpdmVyc3BlY3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxzZHZfZHJpdmVyc3BlY3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNkdl9kcml2ZXJzcGVj
cy5oIg0KI2xpbmUgMTI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGRyaXZlcnNwZWNzLmgiDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCiNsaW5lIDEzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxkcml2ZXJzcGVjcy5oIg0K
DQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMTM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGRyaXZlcnNwZWNz
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMjU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGRyaXZlcnNwZWNzLmgi
DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCg0KICAgIA0KICAgIA0KDQojbGluZSAyNzIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
ZHJpdmVyc3BlY3MuaCINCg0KICAgIA0KICAgIA0KICAgIA0KDQoNCg0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCiAgICANCiAgICANCg0KDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQoNCg0KICAgIA0KICAgIA0KDQoNCiAgICANCiAgICANCg0KDQogICAgDQogICAgDQoN
Cg0KDQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQoNCg0KICAgIA0KDQoNCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQoNCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCg0KICAgIA0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0K
DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQogICAgDQoNCg0KDQoNCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQoNCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCg0KDQogICAgDQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KDQogICAgDQoNCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KDQogICAgDQoNCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQoNCiAgICANCiAgICANCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KI2xpbmUgNjk5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXGRyaXZlcnNwZWNzLmgiDQogICAgDQojbGluZSA3MDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcZHJpdmVyc3BlY3MuaCINCiAgICANCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAg
DQogICAgDQoNCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KDQoNCiAgICANCiAgICANCiAgICANCg0KICAgIA0KCQ0KDQogICAgDQogICAgDQoNCg0KICAg
IA0KICAgIA0KDQoNCiAgICANCiAgICANCiAgICANCg0KDQogICAgDQogICAgDQogICAgDQoNCg0K
ICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQojbGluZSA4
ODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxcZHJpdmVyc3BlY3MuaCINCg0KICAgIA0KICAgIA0KICAgIA0K
DQogICAgDQogICAgDQogICAgDQoNCg0KfQ0KI2xpbmUgODk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGRy
aXZlcnNwZWNzLmgiDQoNCiNsaW5lIDkwMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxkcml2ZXJzcGVjcy5o
Ig0KDQojbGluZSA2OTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3BlY3N0cmluZ3MuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzcGVjc3RyaW5ncy5o
Ig0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSA3MTMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
c3BlY3N0cmluZ3MuaCINCg0KI2xpbmUgNzE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHNwZWNzdHJpbmdz
LmgiDQojbGluZSAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxtaW53aW5kZWYuaCINCg0KDQoNCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBG
YW1pbHkNCg0KDQoNCg0KDQojbGluZSAyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxtaW53aW5kZWYuaCIN
CiNsaW5lIDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDQ0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XG1pbndpbmRlZi5oIg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVUxPTkc7
DQp0eXBlZGVmIFVMT05HICpQVUxPTkc7DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVTSE9SVDsN
CnR5cGVkZWYgVVNIT1JUICpQVVNIT1JUOw0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVDSEFSOw0K
dHlwZWRlZiBVQ0hBUiAqUFVDSEFSOw0KdHlwZWRlZiAgIGNoYXIgKlBTWjsNCiNsaW5lIDU5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxtaW53aW5kZWYuaCINCg0KDQoNCiNsaW5lIDc3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQoNCg0KI2xpbmUgODEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcbWlud2luZGVmLmgiDQoNCg0KDQojbGluZSA4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxtaW53
aW5kZWYuaCINCg0KDQoNCiNsaW5lIDg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndp
bmRlZi5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRl
Zi5oIg0KDQoNCg0KI2xpbmUgMTEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KI2xp
bmUgMTE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0MSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxtaW53aW5kZWYuaCINCg0KDQoNCg0KI2xpbmUgMTQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1p
bndpbmRlZi5oIg0KI2xpbmUgMTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcbWlud2luZGVmLmgiDQoNCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICBEV09SRDsNCnR5cGVkZWYgaW50ICAgICAgICAgICAg
ICAgICBCT09MOw0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgICAgIEJZVEU7DQp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0ICAgICAgV09SRDsNCnR5cGVkZWYgZmxvYXQgICAgICAgICAgICAgICBGTE9B
VDsNCnR5cGVkZWYgRkxPQVQgICAgICAgICAgICAgICAqUEZMT0FUOw0KdHlwZWRlZiBCT09MICAg
ICAgICAgICAgKlBCT09MOw0KdHlwZWRlZiBCT09MICAgICAgICAgICAgICpMUEJPT0w7DQp0eXBl
ZGVmIEJZVEUgICAgICAgICAgICAqUEJZVEU7DQp0eXBlZGVmIEJZVEUgICAgICAgICAgICAgKkxQ
QllURTsNCnR5cGVkZWYgaW50ICAgICAgICAgICAgICpQSU5UOw0KdHlwZWRlZiBpbnQgICAgICAg
ICAgICAgICpMUElOVDsNCnR5cGVkZWYgV09SRCAgICAgICAgICAgICpQV09SRDsNCnR5cGVkZWYg
V09SRCAgICAgICAgICAgICAqTFBXT1JEOw0KdHlwZWRlZiBsb25nICAgICAgICAgICAgICpMUExP
Tkc7DQp0eXBlZGVmIERXT1JEICAgICAgICAgICAqUERXT1JEOw0KdHlwZWRlZiBEV09SRCAgICAg
ICAgICAgICpMUERXT1JEOw0KdHlwZWRlZiB2b2lkICAgICAgICAgICAgICpMUFZPSUQ7DQp0eXBl
ZGVmIGNvbnN0IHZvaWQgICAgICAgKkxQQ1ZPSUQ7DQoNCnR5cGVkZWYgaW50ICAgICAgICAgICAg
ICAgICBJTlQ7DQp0eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICAgVUlOVDsNCnR5cGVkZWYgdW5z
aWduZWQgaW50ICAgICAgICAqUFVJTlQ7DQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
d2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDY2OCkgDQojcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMDApIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIw
MSkgDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjE0KSANCg0KDQpleHRlcm4gIkMiIHsNCiNs
aW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Y3R5cGUuaCINCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQojcHJhZ21h
IHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzI0ICA0NTE0IDQ1NzQg
NDcxMCA0NzkzIDQ4MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2IDI4NzI3ICkNCg0KDQpfX3ByYWdt
YShwYWNrKHB1c2gsIDgpKSBleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KDQoNCiAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc2N0eXBlKCAgaW50IF9DLCAgIGludCBfVHlw
ZSk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaXNjdHlwZV9sKCAgaW50
IF9DLCAgIGludCBfVHlwZSwgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQogICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50IF9fY2RlY2wgaXNhbHBoYSggIGludCBfQyk7DQogIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnQgX19jZGVjbCBfaXNhbHBoYV9sKCAgaW50IF9DLCAgIF9sb2NhbGVfdCBfTG9j
YWxlKTsNCiAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBpc3VwcGVyKCAgaW50
IF9DKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc3VwcGVyX2woICBp
bnQgX0MsICAgX2xvY2FsZV90IF9Mb2NhbGUpOw0KICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dCBfX2NkZWNsIGlzbG93ZXIoICBpbnQgX0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
IF9fY2RlY2wgX2lzbG93ZXJfbCggIGludCBfQywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQoNCg0K
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIGlzZGlnaXQoICBpbnQgX0MpOw0K
DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaXNkaWdpdF9sKCAgaW50IF9D
LCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIGlzeGRpZ2l0KCAgaW50IF9DKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIF9pc3hkaWdpdF9sKCAgaW50IF9DLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCg0KDQogICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXNzcGFjZSggIGludCBfQyk7DQoNCiAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc3NwYWNlX2woICBpbnQgX0MsICAg
X2xvY2FsZV90IF9Mb2NhbGUpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wg
aXNwdW5jdCggIGludCBfQyk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBf
aXNwdW5jdF9sKCAgaW50IF9DLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCiAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX2NkZWNsIGlzYmxhbmsoICBpbnQgX0MpOw0KICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50IF9fY2RlY2wgX2lzYmxhbmtfbCggIGludCBfQywgICBfbG9jYWxlX3QgX0xv
Y2FsZSk7DQogICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXNhbG51bSggIGlu
dCBfQyk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaXNhbG51bV9sKCAg
aW50IF9DLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dCBfX2NkZWNsIGlzcHJpbnQoICBpbnQgX0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
IF9fY2RlY2wgX2lzcHJpbnRfbCggIGludCBfQywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQogIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBpc2dyYXBoKCAgaW50IF9DKTsNCiAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pc2dyYXBoX2woICBpbnQgX0MsICAgX2xv
Y2FsZV90IF9Mb2NhbGUpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgaXNj
bnRybCggIGludCBfQyk7DQogIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfaXNj
bnRybF9sKCAgaW50IF9DLCAgIF9sb2NhbGVfdCBfTG9jYWxlKTsNCg0KDQogICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50IF9fY2RlY2wgdG91cHBlciggIGludCBfQyk7DQoNCg0KICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIHRvbG93ZXIoICBpbnQgX0MpOw0KDQogICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3RvbG93ZXIoICBpbnQgX0MpOw0KICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3RvbG93ZXJfbCggIGludCBfQywgICBfbG9j
YWxlX3QgX0xvY2FsZSk7DQogICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3Rv
dXBwZXIoICBpbnQgX0MpOw0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3Rv
dXBwZXJfbCggIGludCBfQywgICBfbG9jYWxlX3QgX0xvY2FsZSk7DQoNCiAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX2NkZWNsIF9faXNhc2NpaSggIGludCBfQyk7DQogIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfX3RvYXNjaWkoICBpbnQgX0MpOw0KICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX19pc2NzeW1mKCAgaW50IF9DKTsNCiAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9faXNjc3ltKCAgaW50IF9DKTsNCg0KDQoNCg0KDQoN
Cg0KDQpfX2lubGluZSBpbnQgX19jZGVjbCBfX2FjcnRfbG9jYWxlX2dldF9jdHlwZV9hcnJheV92
YWx1ZSgNCiAgICAgIHVuc2lnbmVkIHNob3J0IGNvbnN0ICogY29uc3QgX0xvY2FsZV9wY3R5cGVf
YXJyYXksDQogICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgY29uc3QgX0NoYXJf
dmFsdWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAg
ICAgY29uc3QgX01hc2sNCiAgICApDQp7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgaWYg
KF9DaGFyX3ZhbHVlID49IC0xICYmIF9DaGFyX3ZhbHVlIDw9IDI1NSkNCiAgICB7DQogICAgICAg
IHJldHVybiBfTG9jYWxlX3BjdHlwZV9hcnJheVtfQ2hhcl92YWx1ZV0gJiBfTWFzazsNCiAgICB9
DQoNCiAgICByZXR1cm4gMDsNCn0NCg0KDQoNCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQoNCg0KDQoNCiAg
ICAgICAgDQogICAgI2xpbmUgMTM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjdHlwZS5oIg0KDQoNCg0KICAg
IA0KICAgIA0KDQogICAgDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgX19mb3JjZWlubGluZSBpbnQg
X19jZGVjbCBfX2FzY2lpX3RvbG93ZXIoaW50IGNvbnN0IF9DKQ0KICAgICAgICB7DQogICAgICAg
ICAgICBpZiAoX0MgPj0gJ0EnICYmIF9DIDw9ICdaJykNCiAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgICAgICByZXR1cm4gX0MgLSAoJ0EnIC0gJ2EnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHJldHVybiBfQzsNCiAgICAgICAgfQ0KDQogICAgICAgIF9fZm9yY2VpbmxpbmUgaW50IF9f
Y2RlY2wgX19hc2NpaV90b3VwcGVyKGludCBjb25zdCBfQykNCiAgICAgICAgew0KICAgICAgICAg
ICAgaWYgKF9DID49ICdhJyAmJiBfQyA8PSAneicpDQogICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIF9DIC0gKCdhJyAtICdBJyk7DQogICAgICAgICAgICB9DQogICAgICAgICAg
ICByZXR1cm4gX0M7DQogICAgICAgIH0NCg0KICAgICAgICBfX2ZvcmNlaW5saW5lIGludCBfX2Nk
ZWNsIF9fYXNjaWlfaXN3YWxwaGEoaW50IGNvbnN0IF9DKQ0KICAgICAgICB7DQogICAgICAgICAg
ICByZXR1cm4gKF9DID49ICdBJyAmJiBfQyA8PSAnWicpIHx8IChfQyA+PSAnYScgJiYgX0MgPD0g
J3onKTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9fZm9yY2VpbmxpbmUgaW50IF9fY2RlY2wgX19h
c2NpaV9pc3dkaWdpdChpbnQgY29uc3QgX0MpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVy
biBfQyA+PSAnMCcgJiYgX0MgPD0gJzknOw0KICAgICAgICB9DQoNCiAgICAgICAgX19mb3JjZWlu
bGluZSBpbnQgX19jZGVjbCBfX2FzY2lpX3Rvd2xvd2VyKGludCBjb25zdCBfQykNCiAgICAgICAg
ew0KICAgICAgICAgICAgcmV0dXJuIF9fYXNjaWlfdG9sb3dlcihfQyk7DQogICAgICAgIH0NCg0K
ICAgICAgICBfX2ZvcmNlaW5saW5lIGludCBfX2NkZWNsIF9fYXNjaWlfdG93dXBwZXIoaW50IGNv
bnN0IF9DKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX19hc2NpaV90b3VwcGVyKF9D
KTsNCiAgICAgICAgfQ0KICAgICNsaW5lIDE4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY3R5cGUuaCINCg0K
DQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcY3R5cGUuaCINCg0KICAgIF9faW5saW5lIF9fY3J0X2xvY2FsZV9kYXRhX3B1YmxpYyogX19j
ZGVjbCBfX2FjcnRfZ2V0X2xvY2FsZV9kYXRhX3ByZWZpeCh2b2lkIGNvbnN0IHZvbGF0aWxlKiBj
b25zdCBfTG9jYWxlUG9pbnRlcnMpDQogICAgew0KICAgICAgICBfbG9jYWxlX3QgY29uc3QgX1R5
cGVkTG9jYWxlUG9pbnRlcnMgPSAoX2xvY2FsZV90KV9Mb2NhbGVQb2ludGVyczsNCiAgICAgICAg
cmV0dXJuIChfX2NydF9sb2NhbGVfZGF0YV9wdWJsaWMqKV9UeXBlZExvY2FsZVBvaW50ZXJzLT5s
b2NpbmZvOw0KICAgIH0NCg0KICAgIA0KDQoNCg0KICAgIF9faW5saW5lIGludCBfX2NkZWNsIF9j
aHZhbGlkY2hrX2woDQogICAgICAgICAgICAgIGludCAgICAgICBjb25zdCBfQywNCiAgICAgICAg
ICAgICAgaW50ICAgICAgIGNvbnN0IF9NYXNrLA0KICAgICAgICAgIF9sb2NhbGVfdCBjb25zdCBf
TG9jYWxlDQogICAgICAgICkNCiAgICB7DQogICAgICAgIA0KDQoNCiAgICAgICAgaWYgKF9Mb2Nh
bGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfX2FjcnRfbG9jYWxlX2dldF9jdHlw
ZV9hcnJheV92YWx1ZShfX2FjcnRfZ2V0X2xvY2FsZV9kYXRhX3ByZWZpeChfTG9jYWxlKS0+X2xv
Y2FsZV9wY3R5cGUsIF9DLCBfTWFzayk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKF9f
YWNydF9sb2NhbGVfZ2V0X2N0eXBlX2FycmF5X3ZhbHVlKF9fcGN0eXBlX2Z1bmMoKSwgKF9DKSwg
KF9NYXNrKSkpOw0KICAgICAgICAjbGluZSAyMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGN0eXBlLmgiDQog
ICAgfQ0KDQogICAgDQogICAgDQoNCiAgICBfX2lubGluZSBpbnQgX19jZGVjbCBfaXNjaGFydHlw
ZV9sKA0KICAgICAgICAgICAgICBpbnQgICAgICAgY29uc3QgX0MsDQogICAgICAgICAgICAgIGlu
dCAgICAgICBjb25zdCBfTWFzaywNCiAgICAgICAgICBfbG9jYWxlX3QgY29uc3QgX0xvY2FsZQ0K
ICAgICAgICApDQogICAgew0KICAgICAgICBpZiAoX0xvY2FsZSkgew0KICAgICAgICAgICAgaWYg
KF9DID49IC0xICYmIF9DIDw9IDI1NSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBy
ZXR1cm4gX19hY3J0X2dldF9sb2NhbGVfZGF0YV9wcmVmaXgoX0xvY2FsZSktPl9sb2NhbGVfcGN0
eXBlW19DXSAmIF9NYXNrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoX19hY3J0
X2dldF9sb2NhbGVfZGF0YV9wcmVmaXgoX0xvY2FsZSktPl9sb2NhbGVfbWJfY3VyX21heCA+IDEp
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIF9pc2N0eXBlX2woX0MsIF9N
YXNrLCBfTG9jYWxlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIDA7IA0K
ICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9jaHZhbGlkY2hrX2woX0MsIF9NYXNrLCAwKTsN
CiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQoNCg0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQoN
CiNsaW5lIDI5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY3R5cGUuaCINCg0KDQoNCiAgICANCiAgICANCiAg
ICANCiAgICANCiNsaW5lIDMwMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY3R5cGUuaCINCg0KDQoNCiNsaW5l
IDMwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcY3R5cGUuaCINCn0gX19wcmFnbWEocGFjayhwb3ApKQ0KDQoj
cHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDMwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY3R5cGUuaCIN
CiNsaW5lIDM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOjQ4NDUpICAgDQojbGluZSA0NiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQoNCg0KDQoNCg0KDQojbGluZSA1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojbGluZSA1
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI2xpbmUgODMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
dC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNsaW5lIDEwMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
a2VybmVsc3BlY3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDQx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXGtlcm5lbHNwZWNzLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQojbGlu
ZSA0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxrZXJuZWxzcGVjcy5oIg0KDQogICAgDQogICAgDQogICAg
DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQojbGluZSA1NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxrZXJuZWxzcGVjcy5oIg0KICAgIA0KICAgIA0KICAgICNsaW5lIDYwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXGtlcm5lbHNwZWNzLmgiDQogICAgDQoNCiNsaW5lIDYzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGtl
cm5lbHNwZWNzLmgiDQogICAgDQoNCiNsaW5lIDY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGtlcm5lbHNw
ZWNzLmgiDQogICAgDQoNCiNsaW5lIDY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGtlcm5lbHNwZWNzLmgi
DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
Cg0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAg
ICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQog
ICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQoNCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCg0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQoNCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQogICAgDQoNCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KfQ0K
I2xpbmUgMjYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGtlcm5lbHNwZWNzLmgiDQoNCiNsaW5lIDI2MyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFxrZXJuZWxzcGVjcy5oIg0KI2xpbmUgMTA2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubnQuaCINCg0KDQoNCiNsaW5lIDExMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoN
Cg0KI2xpbmUgMTE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMTE4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5udC5oIg0KDQoNCg0KDQojbGluZSAxMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCiNsaW5lIDE1
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYmFzZXRzZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOjQ2NjgpIA0KI2xpbmUgMjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYmFzZXRz
ZC5oIg0KDQoNCiANCiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgUE9JTlRFUl82NF9JTlQ7DQog
DQogIA0KIA0KDQojbGluZSAzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxiYXNldHNkLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGJhc2V0c2QuaCIN
Cg0KDQoNCg0KDQojbGluZSA1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxiYXNldHNkLmgiDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGJhc2V0c2QuaCINCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCiNsaW5lIDcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGJhc2V0c2QuaCINCg0KDQpl
eHRlcm4gIkMiIHsNCiNsaW5lIDc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGJhc2V0c2QuaCINCg0KdHlw
ZWRlZiBzaWduZWQgY2hhciAgICAgICAgIElOVDgsICpQSU5UODsNCnR5cGVkZWYgc2lnbmVkIHNo
b3J0ICAgICAgICBJTlQxNiwgKlBJTlQxNjsNCnR5cGVkZWYgc2lnbmVkIGludCAgICAgICAgICBJ
TlQzMiwgKlBJTlQzMjsNCnR5cGVkZWYgc2lnbmVkIF9faW50NjQgICAgICBJTlQ2NCwgKlBJTlQ2
NDsNCnR5cGVkZWYgdW5zaWduZWQgY2hhciAgICAgICBVSU5UOCwgKlBVSU5UODsNCnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgICAgICBVSU5UMTYsICpQVUlOVDE2Ow0KdHlwZWRlZiB1bnNpZ25lZCBp
bnQgICAgICAgIFVJTlQzMiwgKlBVSU5UMzI7DQp0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgICAg
VUlOVDY0LCAqUFVJTlQ2NDsNCg0KDQoNCg0KDQp0eXBlZGVmIHNpZ25lZCBpbnQgTE9ORzMyLCAq
UExPTkczMjsNCg0KDQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGludCBVTE9ORzMyLCAqUFVMT05H
MzI7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBEV09SRDMyLCAqUERXT1JEMzI7DQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDEwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxiYXNldHNkLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGJhc2V0c2Qu
aCINCg0KDQoNCiAgICB0eXBlZGVmIF9faW50NjQgSU5UX1BUUiwgKlBJTlRfUFRSOw0KICAgIHR5
cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBVSU5UX1BUUiwgKlBVSU5UX1BUUjsNCg0KICAgIHR5cGVk
ZWYgX19pbnQ2NCBMT05HX1BUUiwgKlBMT05HX1BUUjsNCiAgICB0eXBlZGVmIHVuc2lnbmVkIF9f
aW50NjQgVUxPTkdfUFRSLCAqUFVMT05HX1BUUjsNCg0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYmFzZXRzZC5oIg0KI2xpbmUgMTQ0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXGJhc2V0c2QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIF9f
aW50NjQgU0hBTkRMRV9QVFI7DQp0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgSEFORExFX1BUUjsN
CnR5cGVkZWYgdW5zaWduZWQgaW50IFVIQUxGX1BUUiwgKlBVSEFMRl9QVFI7DQp0eXBlZGVmIGlu
dCBIQUxGX1BUUiwgKlBIQUxGX1BUUjsNCg0KDQpfX2lubGluZQ0KdW5zaWduZWQgbG9uZw0KSGFu
ZGxlVG9VTG9uZygNCiAgICBjb25zdCB2b2lkICpoDQogICAgKQ0Kew0KICAgIHJldHVybigodW5z
aWduZWQgbG9uZykgKFVMT05HX1BUUikgaCApOw0KfQ0KDQpfX2lubGluZQ0KbG9uZw0KSGFuZGxl
VG9Mb25nKA0KICAgIGNvbnN0IHZvaWQgKmgNCiAgICApDQp7DQogICAgcmV0dXJuKChsb25nKSAo
TE9OR19QVFIpIGggKTsNCn0NCg0KX19pbmxpbmUNCnZvaWQgKg0KVUxvbmdUb0hhbmRsZSgNCiAg
ICBjb25zdCB1bnNpZ25lZCBsb25nIGgNCiAgICApDQp7DQogICAgcmV0dXJuKCh2b2lkICopIChV
SU5UX1BUUikgaCApOw0KfQ0KDQoNCl9faW5saW5lDQp2b2lkICoNCkxvbmdUb0hhbmRsZSgNCiAg
ICBjb25zdCBsb25nIGgNCiAgICApDQp7DQogICAgcmV0dXJuKCh2b2lkICopIChJTlRfUFRSKSBo
ICk7DQp9DQoNCg0KX19pbmxpbmUNCnVuc2lnbmVkIGxvbmcNClB0clRvVWxvbmcoDQogICAgY29u
c3Qgdm9pZCAgKnANCiAgICApDQp7DQogICAgcmV0dXJuKCh1bnNpZ25lZCBsb25nKSAoVUxPTkdf
UFRSKSBwICk7DQp9DQoNCl9faW5saW5lDQp1bnNpZ25lZCBpbnQNClB0clRvVWludCgNCiAgICBj
b25zdCB2b2lkICAqcA0KICAgICkNCnsNCiAgICByZXR1cm4oKHVuc2lnbmVkIGludCkgKFVJTlRf
UFRSKSBwICk7DQp9DQoNCl9faW5saW5lDQp1bnNpZ25lZCBzaG9ydA0KUHRyVG9Vc2hvcnQoDQog
ICAgY29uc3Qgdm9pZCAgKnANCiAgICApDQp7DQogICAgcmV0dXJuKCh1bnNpZ25lZCBzaG9ydCkg
KHVuc2lnbmVkIGxvbmcpIChVTE9OR19QVFIpIHAgKTsNCn0NCg0KX19pbmxpbmUNCmxvbmcNClB0
clRvTG9uZygNCiAgICBjb25zdCB2b2lkICAqcA0KICAgICkNCnsNCiAgICByZXR1cm4oKGxvbmcp
IChMT05HX1BUUikgcCApOw0KfQ0KDQpfX2lubGluZQ0KaW50DQpQdHJUb0ludCgNCiAgICBjb25z
dCB2b2lkICAqcA0KICAgICkNCnsNCiAgICByZXR1cm4oKGludCkgKElOVF9QVFIpIHAgKTsNCn0N
Cg0KX19pbmxpbmUNCnNob3J0DQpQdHJUb1Nob3J0KA0KICAgIGNvbnN0IHZvaWQgICpwDQogICAg
KQ0Kew0KICAgIHJldHVybigoc2hvcnQpIChsb25nKSAoTE9OR19QVFIpIHAgKTsNCn0NCg0KX19p
bmxpbmUNCnZvaWQgKg0KSW50VG9QdHIoDQogICAgY29uc3QgaW50IGkNCiAgICApDQoNCnsNCiAg
ICByZXR1cm4oICh2b2lkICopKElOVF9QVFIpaSApOw0KfQ0KDQpfX2lubGluZQ0Kdm9pZCAqDQpV
SW50VG9QdHIoDQogICAgY29uc3QgdW5zaWduZWQgaW50IHVpDQogICAgKQ0KDQp7DQogICAgcmV0
dXJuKCAodm9pZCAqKShVSU5UX1BUUil1aSApOw0KfQ0KDQpfX2lubGluZQ0Kdm9pZCAqDQpMb25n
VG9QdHIoDQogICAgY29uc3QgbG9uZyBsDQogICAgKQ0KDQp7DQogICAgcmV0dXJuKCAodm9pZCAq
KShMT05HX1BUUilsICk7DQp9DQoNCl9faW5saW5lDQp2b2lkICoNClVMb25nVG9QdHIoDQogICAg
Y29uc3QgdW5zaWduZWQgbG9uZyB1bA0KICAgICkNCg0Kew0KICAgIHJldHVybiggKHZvaWQgKiko
VUxPTkdfUFRSKXVsICk7DQp9DQoNCg0KDQoNCg0KDQpfX2lubGluZQ0Kdm9pZCAqDQpQdHIzMlRv
UHRyKA0KICAgIGNvbnN0IHZvaWQgKiBfX3B0cjMyIHANCiAgICApDQp7DQogICAgcmV0dXJuKCh2
b2lkICopIChVTE9OR19QVFIpICh1bnNpZ25lZCBsb25nKSBwKTsNCn0NCg0KX19pbmxpbmUNCnZv
aWQgKg0KSGFuZGxlMzJUb0hhbmRsZSgNCiAgICBjb25zdCB2b2lkICogX19wdHIzMiBoDQogICAg
KQ0Kew0KICAgIHJldHVybigodm9pZCAqKSAoTE9OR19QVFIpIChsb25nKSBoKTsNCn0NCg0KX19p
bmxpbmUNCnZvaWQgKiBfX3B0cjMyDQpQdHJUb1B0cjMyKA0KICAgIGNvbnN0IHZvaWQgKnANCiAg
ICApDQp7DQogICAgcmV0dXJuKCh2b2lkICogX19wdHIzMikgKHVuc2lnbmVkIGxvbmcpIChVTE9O
R19QVFIpIHApOw0KfQ0KDQoNCg0KI2xpbmUgMzI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGJhc2V0c2Qu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzOTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYmFz
ZXRzZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgVUxPTkdfUFRSIFNJWkVfVCwgKlBTSVpFX1Q7DQp0eXBlZGVmIExPTkdfUFRSIFNTSVpF
X1QsICpQU1NJWkVfVDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NjQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcYmFzZXRzZC5oIg0KDQoNCg0KDQoNCnR5cGVkZWYgVUxPTkdfUFRSIERXT1JE
X1BUUiwgKlBEV09SRF9QVFI7DQoNCg0KDQoNCg0KdHlwZWRlZiBfX2ludDY0IExPTkc2NCwgKlBM
T05HNjQ7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgVUxPTkc2NCwgKlBV
TE9ORzY0Ow0KdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IERXT1JENjQsICpQRFdPUkQ2NDsNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBVTE9OR19QVFIgS0FGRklOSVRZOw0KdHlwZWRlZiBLQUZGSU5J
VFkgKlBLQUZGSU5JVFk7DQoNCg0KDQoNCn0NCiNsaW5lIDQ5OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxi
YXNldHNkLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDUwMyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxiYXNldHNkLmgiDQoNCiNsaW5lIDUwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxiYXNldHNk
LmgiDQojbGluZSAxOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI2xpbmUgMjA4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDIxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojbGlu
ZSAyMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMjIzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCiNsaW5lIDIyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0K
DQoNCg0KDQojbGluZSAyMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI2xpbmUgMjMyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDIzOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm50LmgiDQojbGluZSAyNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDI0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojbGluZSAyNTAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KDQoNCg0KI2xpbmUgMjU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoN
Cg0KDQoNCiNsaW5lIDI2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojbGluZSAyNjIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMjY5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCiNsaW5lIDI3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQojbGlu
ZSAyNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI2xpbmUgMjc4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDI4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojbGlu
ZSAyODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQojbGluZSAyOTEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5udC5oIg0KDQojbGluZSAyOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI2xpbmUg
Mjk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDMwMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm50LmgiDQojbGluZSAzMDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0K
DQoNCg0KI2xpbmUgMzA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNsaW5lIDMxMCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMjYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI2xpbmUgMzI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCIN
Cg0KDQoNCg0KDQoNCiNsaW5lIDMzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojbGluZSAzMzUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQojbGluZSAzNDAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5udC5oIg0KDQojbGluZSAzNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI2xpbmUgMzQzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KI2xpbmUgMzQ4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KI2xpbmUgMzUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNsaW5lIDM1MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzYwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubnQuaCINCiNsaW5lIDM2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzgyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQu
aCINCiNsaW5lIDM5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNDA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0K
dHlwZWRlZiB2b2lkICpQVk9JRDsNCnR5cGVkZWYgdm9pZCAqIF9fcHRyNjQgUFZPSUQ2NDsNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA0MjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoN
CiNsaW5lIDQzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDQ1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBjaGFyIENIQVI7DQp0eXBlZGVmIHNob3J0IFNIT1JUOw0KdHlwZWRlZiBsb25n
IExPTkc7DQoNCnR5cGVkZWYgaW50IElOVDsNCiNsaW5lIDQ2NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQojbGluZSA0NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KdHlwZWRl
ZiB3Y2hhcl90IFdDSEFSOyAgICANCg0KDQoNCiNsaW5lIDQ3NiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQoNCnR5cGVkZWYgV0NIQVIgKlBXQ0hBUiwgKkxQV0NILCAqUFdDSDsNCnR5cGVkZWYgY29u
c3QgV0NIQVIgKkxQQ1dDSCwgKlBDV0NIOw0KDQp0eXBlZGVmICAgV0NIQVIgKk5XUFNUUiwgKkxQ
V1NUUiwgKlBXU1RSOw0KdHlwZWRlZiAgIFBXU1RSICpQWlBXU1RSOw0KdHlwZWRlZiAgIGNvbnN0
IFBXU1RSICpQQ1pQV1NUUjsNCnR5cGVkZWYgICBXQ0hBUiBfX3VuYWxpZ25lZCAqTFBVV1NUUiwg
KlBVV1NUUjsNCnR5cGVkZWYgICBjb25zdCBXQ0hBUiAqTFBDV1NUUiwgKlBDV1NUUjsNCnR5cGVk
ZWYgICBQQ1dTVFIgKlBaUENXU1RSOw0KdHlwZWRlZiAgIGNvbnN0IFBDV1NUUiAqUENaUENXU1RS
Ow0KdHlwZWRlZiAgIGNvbnN0IFdDSEFSIF9fdW5hbGlnbmVkICpMUENVV1NUUiwgKlBDVVdTVFI7
DQoNCnR5cGVkZWYgICBXQ0hBUiAqUFpaV1NUUjsNCnR5cGVkZWYgICBjb25zdCBXQ0hBUiAqUENa
WldTVFI7DQp0eXBlZGVmICAgV0NIQVIgX191bmFsaWduZWQgKlBVWlpXU1RSOw0KdHlwZWRlZiAg
IGNvbnN0IFdDSEFSIF9fdW5hbGlnbmVkICpQQ1VaWldTVFI7DQoNCnR5cGVkZWYgIFdDSEFSICpQ
TlpXQ0g7DQp0eXBlZGVmICBjb25zdCBXQ0hBUiAqUENOWldDSDsNCnR5cGVkZWYgIFdDSEFSIF9f
dW5hbGlnbmVkICpQVU5aV0NIOw0KdHlwZWRlZiAgY29uc3QgV0NIQVIgX191bmFsaWduZWQgKlBD
VU5aV0NIOw0KDQoNCg0KdHlwZWRlZiBjb25zdCBXQ0hBUiAqTFBDV0NIQVIsICpQQ1dDSEFSOw0K
dHlwZWRlZiBjb25zdCBXQ0hBUiBfX3VuYWxpZ25lZCAqTFBDVVdDSEFSLCAqUENVV0NIQVI7DQoN
Cg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIFVDU0NIQVI7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUNTQ0hBUiAqUFVDU0NIQVI7DQp0eXBlZGVm
IGNvbnN0IFVDU0NIQVIgKlBDVUNTQ0hBUjsNCg0KdHlwZWRlZiBVQ1NDSEFSICpQVUNTU1RSOw0K
dHlwZWRlZiBVQ1NDSEFSIF9fdW5hbGlnbmVkICpQVVVDU1NUUjsNCg0KdHlwZWRlZiBjb25zdCBV
Q1NDSEFSICpQQ1VDU1NUUjsNCnR5cGVkZWYgY29uc3QgVUNTQ0hBUiBfX3VuYWxpZ25lZCAqUENV
VUNTU1RSOw0KDQp0eXBlZGVmIFVDU0NIQVIgX191bmFsaWduZWQgKlBVVUNTQ0hBUjsNCnR5cGVk
ZWYgY29uc3QgVUNTQ0hBUiBfX3VuYWxpZ25lZCAqUENVVUNTQ0hBUjsNCg0KI2xpbmUgNTQxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQp0eXBlZGVmIENIQVIgKlBDSEFSLCAqTFBD
SCwgKlBDSDsNCnR5cGVkZWYgY29uc3QgQ0hBUiAqTFBDQ0gsICpQQ0NIOw0KDQp0eXBlZGVmICAg
Q0hBUiAqTlBTVFIsICpMUFNUUiwgKlBTVFI7DQp0eXBlZGVmICAgUFNUUiAqUFpQU1RSOw0KdHlw
ZWRlZiAgIGNvbnN0IFBTVFIgKlBDWlBTVFI7DQp0eXBlZGVmICAgY29uc3QgQ0hBUiAqTFBDU1RS
LCAqUENTVFI7DQp0eXBlZGVmICAgUENTVFIgKlBaUENTVFI7DQp0eXBlZGVmICAgY29uc3QgUENT
VFIgKlBDWlBDU1RSOw0KDQp0eXBlZGVmICAgQ0hBUiAqUFpaU1RSOw0KdHlwZWRlZiAgIGNvbnN0
IENIQVIgKlBDWlpTVFI7DQoNCnR5cGVkZWYgIENIQVIgKlBOWkNIOw0KdHlwZWRlZiAgY29uc3Qg
Q0hBUiAqUENOWkNIOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIFdDSEFSIFRDSEFSLCAqUFRDSEFS
Ow0KdHlwZWRlZiBXQ0hBUiBUQllURSAsICpQVEJZVEUgOw0KDQojbGluZSA1NzIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5udC5oIg0KDQp0eXBlZGVmIExQV0NIIExQVENILCBQVENIOw0KdHlwZWRlZiBMUENX
Q0ggTFBDVENILCBQQ1RDSDsNCnR5cGVkZWYgTFBXU1RSIFBUU1RSLCBMUFRTVFI7DQp0eXBlZGVm
IExQQ1dTVFIgUENUU1RSLCBMUENUU1RSOw0KdHlwZWRlZiBMUFVXU1RSIFBVVFNUUiwgTFBVVFNU
UjsNCnR5cGVkZWYgTFBDVVdTVFIgUENVVFNUUiwgTFBDVVRTVFI7DQp0eXBlZGVmIExQV1NUUiBM
UDsNCnR5cGVkZWYgUFpaV1NUUiBQWlpUU1RSOw0KdHlwZWRlZiBQQ1paV1NUUiBQQ1paVFNUUjsN
CnR5cGVkZWYgUFVaWldTVFIgUFVaWlRTVFI7DQp0eXBlZGVmIFBDVVpaV1NUUiBQQ1VaWlRTVFI7
DQp0eXBlZGVmIFBaUFdTVFIgUFpQVFNUUjsNCnR5cGVkZWYgUE5aV0NIIFBOWlRDSDsNCnR5cGVk
ZWYgUENOWldDSCBQQ05aVENIOw0KdHlwZWRlZiBQVU5aV0NIIFBVTlpUQ0g7DQp0eXBlZGVmIFBD
VU5aV0NIIFBDVU5aVENIOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNjExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCnR5cGVkZWYgU0hPUlQg
KlBTSE9SVDsgIA0KdHlwZWRlZiBMT05HICpQTE9ORzsgICAgDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1BST0NFU1NPUl9OVU1CRVIgew0KICAgIFdPUkQgICBHcm91cDsNCiAgICBC
WVRFICBOdW1iZXI7DQogICAgQllURSAgUmVzZXJ2ZWQ7DQp9IFBST0NFU1NPUl9OVU1CRVIsICpQ
UFJPQ0VTU09SX05VTUJFUjsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9HUk9VUF9BRkZJ
TklUWSB7DQogICAgS0FGRklOSVRZIE1hc2s7DQogICAgV09SRCAgIEdyb3VwOw0KICAgIFdPUkQg
ICBSZXNlcnZlZFszXTsNCn0gR1JPVVBfQUZGSU5JVFksICpQR1JPVVBfQUZGSU5JVFk7DQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA2NTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIHZvaWQgKkhBTkRMRTsNCg0KDQojbGluZSA2NjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5udC5oIg0KDQojbGluZSA2NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0K
I2xpbmUgNjcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCnR5cGVkZWYgSEFORExFICpQSEFORExF
Ow0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIEJZVEUgICBGQ0hBUjsNCnR5cGVkZWYgV09SRCAgIEZT
SE9SVDsNCnR5cGVkZWYgRFdPUkQgIEZMT05HOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
ICAgbG9uZyBIUkVTVUxUOw0KI2xpbmUgNjkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNsaW5l
IDY5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCg0K
DQoNCg0KI2xpbmUgNzA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDcxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDczMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgY2hhciBDQ0hBUjsg
ICAgICAgICAgDQp0eXBlZGVmIERXT1JEIExDSUQ7ICAgICAgICAgDQp0eXBlZGVmIFBEV09SRCBQ
TENJRDsgICAgICAgDQp0eXBlZGVmIFdPUkQgICBMQU5HSUQ7ICAgICAgDQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBlbnVtIHsNCiAgICBVTlNQRUNJRklFRF9DT01QQVJUTUVOVF9JRCA9IDAsDQog
ICAgREVGQVVMVF9DT01QQVJUTUVOVF9JRA0KfSBDT01QQVJUTUVOVF9JRCwgKlBDT01QQVJUTUVO
VF9JRDsNCg0KI2xpbmUgNzc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgwMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm50LmgiDQp0eXBlZGVmIHN0cnVjdCBfRkxPQVQxMjggew0KICAgIF9faW50NjQgTG93UGFy
dDsNCiAgICBfX2ludDY0IEhpZ2hQYXJ0Ow0KfSBGTE9BVDEyODsNCg0KdHlwZWRlZiBGTE9BVDEy
OCAqUEZMT0FUMTI4Ow0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBfX2ludDY0IExPTkdMT05H
Ow0KdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IFVMT05HTE9ORzsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCnR5
cGVkZWYgTE9OR0xPTkcgKlBMT05HTE9ORzsNCnR5cGVkZWYgVUxPTkdMT05HICpQVUxPTkdMT05H
Ow0KDQoNCg0KdHlwZWRlZiBMT05HTE9ORyBVU047DQoNCg0KDQoNCg0KI2xpbmUgODUwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCnR5cGVkZWYgdW5pb24gX0xBUkdFX0lOVEVHRVIgew0KICAgIHN0
cnVjdCB7DQogICAgICAgIERXT1JEIExvd1BhcnQ7DQogICAgICAgIExPTkcgSGlnaFBhcnQ7DQog
ICAgfSA7DQogICAgc3RydWN0IHsNCiAgICAgICAgRFdPUkQgTG93UGFydDsNCiAgICAgICAgTE9O
RyBIaWdoUGFydDsNCiAgICB9IHU7DQogICAgTE9OR0xPTkcgUXVhZFBhcnQ7DQp9IExBUkdFX0lO
VEVHRVI7DQojbGluZSA4NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp0eXBlZGVmIExBUkdF
X0lOVEVHRVIgKlBMQVJHRV9JTlRFR0VSOw0KDQoNCg0KDQoNCiNsaW5lIDg3MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbm50LmgiDQp0eXBlZGVmIHVuaW9uIF9VTEFSR0VfSU5URUdFUiB7DQogICAgc3RydWN0
IHsNCiAgICAgICAgRFdPUkQgTG93UGFydDsNCiAgICAgICAgRFdPUkQgSGlnaFBhcnQ7DQogICAg
fSA7DQogICAgc3RydWN0IHsNCiAgICAgICAgRFdPUkQgTG93UGFydDsNCiAgICAgICAgRFdPUkQg
SGlnaFBhcnQ7DQogICAgfSB1Ow0KICAgIFVMT05HTE9ORyBRdWFkUGFydDsNCn0gVUxBUkdFX0lO
VEVHRVI7DQojbGluZSA4ODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp0eXBlZGVmIFVMQVJH
RV9JTlRFR0VSICpQVUxBUkdFX0lOVEVHRVI7DQoNCg0KDQoNCg0KdHlwZWRlZiBMT05HX1BUUiBS
VExfUkVGRVJFTkNFX0NPVU5ULCAqUFJUTF9SRUZFUkVOQ0VfQ09VTlQ7DQp0eXBlZGVmIExPTkcg
UlRMX1JFRkVSRU5DRV9DT1VOVDMyLCAqUFJUTF9SRUZFUkVOQ0VfQ09VTlQzMjsNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9MVUlEIHsNCiAgICBEV09SRCBMb3dQYXJ0Ow0KICAg
IExPTkcgSGlnaFBhcnQ7DQp9IExVSUQsICpQTFVJRDsNCg0KDQp0eXBlZGVmIFVMT05HTE9ORyAg
RFdPUkRMT05HOw0KdHlwZWRlZiBEV09SRExPTkcgKlBEV09SRExPTkc7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxMDM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgew0KI2xpbmUgMTA0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoN
Cg0KDQoNCg0KdW5zaWduZWQgY2hhcg0KX19jZGVjbA0KX3JvdGw4ICgNCiAgICAgIHVuc2lnbmVk
IGNoYXIgVmFsdWUsDQogICAgICB1bnNpZ25lZCBjaGFyIFNoaWZ0DQogICAgKTsNCg0KdW5zaWdu
ZWQgc2hvcnQNCl9fY2RlY2wNCl9yb3RsMTYgKA0KICAgICAgdW5zaWduZWQgc2hvcnQgVmFsdWUs
DQogICAgICB1bnNpZ25lZCBjaGFyIFNoaWZ0DQogICAgKTsNCg0KdW5zaWduZWQgY2hhcg0KX19j
ZGVjbA0KX3JvdHI4ICgNCiAgICAgIHVuc2lnbmVkIGNoYXIgVmFsdWUsDQogICAgICB1bnNpZ25l
ZCBjaGFyIFNoaWZ0DQogICAgKTsNCg0KdW5zaWduZWQgc2hvcnQNCl9fY2RlY2wNCl9yb3RyMTYg
KA0KICAgICAgdW5zaWduZWQgc2hvcnQgVmFsdWUsDQogICAgICB1bnNpZ25lZCBjaGFyIFNoaWZ0
DQogICAgKTsNCg0KI3ByYWdtYSBpbnRyaW5zaWMoX3JvdGw4KQ0KI3ByYWdtYSBpbnRyaW5zaWMo
X3JvdGwxNikNCiNwcmFnbWEgaW50cmluc2ljKF9yb3RyOCkNCiNwcmFnbWEgaW50cmluc2ljKF9y
b3RyMTYpDQoNCiNsaW5lIDEwODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0K
DQoNCnVuc2lnbmVkIGludA0KX19jZGVjbA0KX3JvdGwgKA0KICAgICAgdW5zaWduZWQgaW50IFZh
bHVlLA0KICAgICAgaW50IFNoaWZ0DQogICAgKTsNCg0KdW5zaWduZWQgX19pbnQ2NA0KX19jZGVj
bA0KX3JvdGw2NCAoDQogICAgICB1bnNpZ25lZCBfX2ludDY0IFZhbHVlLA0KICAgICAgaW50IFNo
aWZ0DQogICAgKTsNCg0KdW5zaWduZWQgaW50DQpfX2NkZWNsDQpfcm90ciAoDQogICAgICB1bnNp
Z25lZCBpbnQgVmFsdWUsDQogICAgICBpbnQgU2hpZnQNCiAgICApOw0KDQp1bnNpZ25lZCBfX2lu
dDY0DQpfX2NkZWNsDQpfcm90cjY0ICgNCiAgICAgIHVuc2lnbmVkIF9faW50NjQgVmFsdWUsDQog
ICAgICBpbnQgU2hpZnQNCiAgICApOw0KDQojcHJhZ21hIGludHJpbnNpYyhfcm90bCkNCiNwcmFn
bWEgaW50cmluc2ljKF9yb3RsNjQpDQojcHJhZ21hIGludHJpbnNpYyhfcm90cikNCiNwcmFnbWEg
aW50cmluc2ljKF9yb3RyNjQpDQoNCiNsaW5lIDExMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0K
DQoNCn0NCiNsaW5lIDExMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCnR5cGVk
ZWYgQllURSAgQk9PTEVBTjsgICAgICAgICAgIA0KdHlwZWRlZiBCT09MRUFOICpQQk9PTEVBTjsg
ICAgICAgDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0xJU1RfRU5UUlkgew0KICAgc3RydWN0
IF9MSVNUX0VOVFJZICpGbGluazsNCiAgIHN0cnVjdCBfTElTVF9FTlRSWSAqQmxpbms7DQp9IExJ
U1RfRU5UUlksICpQTElTVF9FTlRSWSwgKiBQUkxJU1RfRU5UUlk7DQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBfU0lOR0xFX0xJU1RfRU5UUlkgew0KICAgIHN0cnVjdCBfU0lOR0xFX0xJU1Rf
RU5UUlkgKk5leHQ7DQp9IFNJTkdMRV9MSVNUX0VOVFJZLCAqUFNJTkdMRV9MSVNUX0VOVFJZOw0K
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IExJU1RfRU5UUlkzMiB7DQogICAgRFdPUkQg
Rmxpbms7DQogICAgRFdPUkQgQmxpbms7DQp9IExJU1RfRU5UUlkzMjsNCnR5cGVkZWYgTElTVF9F
TlRSWTMyICpQTElTVF9FTlRSWTMyOw0KDQp0eXBlZGVmIHN0cnVjdCBMSVNUX0VOVFJZNjQgew0K
ICAgIFVMT05HTE9ORyBGbGluazsNCiAgICBVTE9OR0xPTkcgQmxpbms7DQp9IExJU1RfRU5UUlk2
NDsNCnR5cGVkZWYgTElTVF9FTlRSWTY0ICpQTElTVF9FTlRSWTY0Ow0KDQoNCiNsaW5lIDEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxcZ3VpZGRlZi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCnR5cGVkZWYg
c3RydWN0IF9HVUlEIHsNCiAgICB1bnNpZ25lZCBsb25nICBEYXRhMTsNCiAgICB1bnNpZ25lZCBz
aG9ydCBEYXRhMjsNCiAgICB1bnNpZ25lZCBzaG9ydCBEYXRhMzsNCiAgICB1bnNpZ25lZCBjaGFy
ICBEYXRhNFsgOCBdOw0KfSBHVUlEOw0KI2xpbmUgMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcZ3VpZGRl
Zi5oIg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcZ3VpZGRlZi5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcZ3VpZGRlZi5oIg0KDQoNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgR1VJRCAqTFBHVUlEOw0KI2xpbmUgNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcZ3VpZGRl
Zi5oIg0KDQoNCg0KdHlwZWRlZiBjb25zdCBHVUlEICpMUENHVUlEOw0KI2xpbmUgODIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcZ3VpZGRlZi5oIg0KDQoNCg0KDQp0eXBlZGVmIEdVSUQgSUlEOw0KdHlwZWRl
ZiBJSUQgKkxQSUlEOw0KDQoNCnR5cGVkZWYgR1VJRCBDTFNJRDsNCnR5cGVkZWYgQ0xTSUQgKkxQ
Q0xTSUQ7DQoNCg0KdHlwZWRlZiBHVUlEIEZNVElEOw0KdHlwZWRlZiBGTVRJRCAqTFBGTVRJRDsN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCiNsaW5l
IDExMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxndWlkZGVmLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEy
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxndWlkZGVmLmgiDQojbGluZSAxMjIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcZ3VpZGRlZi5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
Z3VpZGRlZi5oIg0KI2xpbmUgMTMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCiNsaW5lIDE0
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxndWlkZGVmLmgiDQoNCiNsaW5lIDE0MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxndWlkZGVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KX19pbmxpbmUgaW50IElubGluZUlzRXF1
YWxHVUlEKGNvbnN0IEdVSUQgJiByZ3VpZDEsIGNvbnN0IEdVSUQgJiByZ3VpZDIpDQp7DQogICBy
ZXR1cm4gKA0KICAgICAgKCh1bnNpZ25lZCBsb25nICopICZyZ3VpZDEpWzBdID09ICgodW5zaWdu
ZWQgbG9uZyAqKSAmcmd1aWQyKVswXSAmJg0KICAgICAgKCh1bnNpZ25lZCBsb25nICopICZyZ3Vp
ZDEpWzFdID09ICgodW5zaWduZWQgbG9uZyAqKSAmcmd1aWQyKVsxXSAmJg0KICAgICAgKCh1bnNp
Z25lZCBsb25nICopICZyZ3VpZDEpWzJdID09ICgodW5zaWduZWQgbG9uZyAqKSAmcmd1aWQyKVsy
XSAmJg0KICAgICAgKCh1bnNpZ25lZCBsb25nICopICZyZ3VpZDEpWzNdID09ICgodW5zaWduZWQg
bG9uZyAqKSAmcmd1aWQyKVszXSk7DQp9DQoNCl9faW5saW5lIGludCBJc0VxdWFsR1VJRChjb25z
dCBHVUlEICYgcmd1aWQxLCBjb25zdCBHVUlEICYgcmd1aWQyKQ0Kew0KICAgIHJldHVybiAhbWVt
Y21wKCZyZ3VpZDEsICZyZ3VpZDIsIHNpemVvZihHVUlEKSk7DQp9DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgR1VJ
RCAmIGd1aWRPbmUsIGNvbnN0IEdVSUQgJiBndWlkT3RoZXIpDQp7DQogICAgcmV0dXJuICEhSXNF
cXVhbEdVSUQoZ3VpZE9uZSxndWlkT3RoZXIpOw0KfQ0KDQpfX2lubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgR1VJRCAmIGd1aWRPbmUsIGNvbnN0IEdVSUQgJiBndWlkT3RoZXIpDQp7DQogICAg
cmV0dXJuICEoZ3VpZE9uZSA9PSBndWlkT3RoZXIpOw0KfQ0KI2xpbmUgMjAyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXGd1aWRkZWYuaCINCiNsaW5lIDIwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxndWlkZGVmLmgi
DQojbGluZSAyMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcZ3VpZGRlZi5oIg0KI2xpbmUgMjA1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCiNsaW5lIDIwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxndWlk
ZGVmLmgiDQojbGluZSAxMTgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgIF9PQkpFQ1RJRCB7ICAgICANCiAgICBHVUlEIExpbmVhZ2U7DQogICAgRFdPUkQg
VW5pcXVpZmllcjsNCn0gT0JKRUNUSUQ7DQojbGluZSAxMTkwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgT3IgR2FtZSBGYW1pbHkNCg0K
DQoNCg0KZXh0ZXJuICJDKysiIA0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPg0KY2hh
ciAoKlJ0bHBOdW1iZXJPZiggX191bmFsaWduZWQgVCAoJilbTl0gKSlbTl07DQoNCg0KDQojbGlu
ZSAxMjg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0K
DQoNCg0KDQoNCiNsaW5lIDEzMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEzNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmDQog
DQogDQpFWENFUFRJT05fRElTUE9TSVRJT04NCl9fc3RkY2FsbA0KRVhDRVBUSU9OX1JPVVRJTkUg
KA0KICAgICAgc3RydWN0IF9FWENFUFRJT05fUkVDT1JEICpFeGNlcHRpb25SZWNvcmQsDQogICAg
ICBQVk9JRCBFc3RhYmxpc2hlckZyYW1lLA0KICAgICAgc3RydWN0IF9DT05URVhUICpDb250ZXh0
UmVjb3JkLA0KICAgICAgUFZPSUQgRGlzcGF0Y2hlckNvbnRleHQNCiAgICApOw0KDQp0eXBlZGVm
IEVYQ0VQVElPTl9ST1VUSU5FICpQRVhDRVBUSU9OX1JPVVRJTkU7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMzU1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAyMzgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNDA5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMrKyIgew0KDQogICAg
dGVtcGxhdGUgPHNpemVfdCBTPg0KICAgIHN0cnVjdCBfRU5VTV9GTEFHX0lOVEVHRVJfRk9SX1NJ
WkU7DQoNCiAgICB0ZW1wbGF0ZSA8Pg0KICAgIHN0cnVjdCBfRU5VTV9GTEFHX0lOVEVHRVJfRk9S
X1NJWkU8MT4NCiAgICB7DQogICAgICAgIHR5cGVkZWYgSU5UOCB0eXBlOw0KICAgIH07DQoNCiAg
ICB0ZW1wbGF0ZSA8Pg0KICAgIHN0cnVjdCBfRU5VTV9GTEFHX0lOVEVHRVJfRk9SX1NJWkU8Mj4N
CiAgICB7DQogICAgICAgIHR5cGVkZWYgSU5UMTYgdHlwZTsNCiAgICB9Ow0KDQogICAgdGVtcGxh
dGUgPD4NCiAgICBzdHJ1Y3QgX0VOVU1fRkxBR19JTlRFR0VSX0ZPUl9TSVpFPDQ+DQogICAgew0K
ICAgICAgICB0eXBlZGVmIElOVDMyIHR5cGU7DQogICAgfTsNCg0KICAgIHRlbXBsYXRlIDw+DQog
ICAgc3RydWN0IF9FTlVNX0ZMQUdfSU5URUdFUl9GT1JfU0laRTw4Pg0KICAgIHsNCiAgICAgICAg
dHlwZWRlZiBJTlQ2NCB0eXBlOw0KICAgIH07DQoNCiAgICANCiAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VD4NCiAgICBzdHJ1Y3QgX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSDQogICAgew0KICAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9FTlVNX0ZMQUdfSU5URUdFUl9GT1JfU0laRTxzaXplb2YoVCk+Ojp0
eXBlIHR5cGU7DQogICAgfTsNCg0KfQ0KDQoNCg0KDQoNCiNsaW5lIDI0NjMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNDc3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0Kc3Rh
dGljX2Fzc2VydChfX2FsaWdub2YoTEFSR0VfSU5URUdFUikgPT0gOCwgIldpbmRvd3MgaGVhZGVy
cyByZXF1aXJlIHRoZSBkZWZhdWx0IHBhY2tpbmcgb3B0aW9uLiBDaGFuZ2luZyB0aGlzIGNhbiBs
ZWFkIHRvIG1lbW9yeSBjb3JydXB0aW9uLiINCiAgICAiIFRoaXMgZGlhZ25vc3RpYyBjYW4gYmUg
ZGlzYWJsZWQgYnkgYnVpbGRpbmcgd2l0aCBXSU5ET1dTX0lHTk9SRV9QQUNLSU5HX01JU01BVENI
IGRlZmluZWQuIik7DQoNCg0KDQoNCg0KI2xpbmUgMjUwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50Lmgi
DQojbGluZSAyNTA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KICANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAyNTc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiAgDQojbGluZSAyNTc4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNsaW5lIDI1NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5o
Ig0KDQoNCg0KDQoNCnR5cGVkZWYgVUxPTkdfUFRSIEtTUElOX0xPQ0s7DQp0eXBlZGVmIEtTUElO
X0xPQ0sgKlBLU1BJTl9MT0NLOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfX2RlY2xz
cGVjKGFsaWduKDE2KSkgX00xMjhBIHsNCiAgICBVTE9OR0xPTkcgTG93Ow0KICAgIExPTkdMT05H
IEhpZ2g7DQp9IE0xMjhBLCAqUE0xMjhBOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9fZGVj
bHNwZWMoYWxpZ24oMTYpKSBfWFNBVkVfRk9STUFUIHsNCiAgICBXT1JEICAgQ29udHJvbFdvcmQ7
DQogICAgV09SRCAgIFN0YXR1c1dvcmQ7DQogICAgQllURSAgVGFnV29yZDsNCiAgICBCWVRFICBS
ZXNlcnZlZDE7DQogICAgV09SRCAgIEVycm9yT3Bjb2RlOw0KICAgIERXT1JEIEVycm9yT2Zmc2V0
Ow0KICAgIFdPUkQgICBFcnJvclNlbGVjdG9yOw0KICAgIFdPUkQgICBSZXNlcnZlZDI7DQogICAg
RFdPUkQgRGF0YU9mZnNldDsNCiAgICBXT1JEICAgRGF0YVNlbGVjdG9yOw0KICAgIFdPUkQgICBS
ZXNlcnZlZDM7DQogICAgRFdPUkQgTXhDc3I7DQogICAgRFdPUkQgTXhDc3JfTWFzazsNCiAgICBN
MTI4QSBGbG9hdFJlZ2lzdGVyc1s4XTsNCg0KDQoNCiAgICBNMTI4QSBYbW1SZWdpc3RlcnNbMTZd
Ow0KICAgIEJZVEUgIFJlc2VydmVkNFs5Nl07DQoNCg0KDQoNCg0KDQojbGluZSAyNjI5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCg0KfSBYU0FWRV9GT1JNQVQsICpQWFNBVkVfRk9STUFUOw0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfWFNBVkVfQ0VUX1VfRk9STUFUIHsNCiAgICBEV09S
RDY0IElhMzJDZXRVTXNyOw0KICAgIERXT1JENjQgSWEzMlBsM1NzcE1zcjsNCn0gWFNBVkVfQ0VU
X1VfRk9STUFULCAqUFhTQVZFX0NFVF9VX0ZPUk1BVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX19kZWNs
c3BlYyhhbGlnbig4KSkgX1hTQVZFX0FSRUFfSEVBREVSIHsNCiAgICBEV09SRDY0IE1hc2s7DQog
ICAgRFdPUkQ2NCBDb21wYWN0aW9uTWFzazsNCiAgICBEV09SRDY0IFJlc2VydmVkMls2XTsNCn0g
WFNBVkVfQVJFQV9IRUFERVIsICpQWFNBVkVfQVJFQV9IRUFERVI7DQoNCnR5cGVkZWYgc3RydWN0
IF9fZGVjbHNwZWMoYWxpZ24oMTYpKSBfWFNBVkVfQVJFQSB7DQogICAgWFNBVkVfRk9STUFUIExl
Z2FjeVN0YXRlOw0KICAgIFhTQVZFX0FSRUFfSEVBREVSIEhlYWRlcjsNCn0gWFNBVkVfQVJFQSwg
KlBYU0FWRV9BUkVBOw0KDQp0eXBlZGVmIHN0cnVjdCBfWFNUQVRFX0NPTlRFWFQgew0KICAgIERX
T1JENjQgTWFzazsNCiAgICBEV09SRCBMZW5ndGg7DQogICAgRFdPUkQgUmVzZXJ2ZWQxOw0KICAg
ICAgUFhTQVZFX0FSRUEgQXJlYTsNCg0KDQoNCiNsaW5lIDI2NjMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
dC5oIg0KDQogICAgUFZPSUQgQnVmZmVyOw0KDQoNCg0KI2xpbmUgMjY2OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm50LmgiDQoNCn0gWFNUQVRFX0NPTlRFWFQsICpQWFNUQVRFX0NPTlRFWFQ7DQoNCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX1NDT1BFX1RBQkxFX0FNRDY0IHsNCiAgICBEV09SRCBDb3VudDsN
CiAgICBzdHJ1Y3Qgew0KICAgICAgICBEV09SRCBCZWdpbkFkZHJlc3M7DQogICAgICAgIERXT1JE
IEVuZEFkZHJlc3M7DQogICAgICAgIERXT1JEIEhhbmRsZXJBZGRyZXNzOw0KICAgICAgICBEV09S
RCBKdW1wVGFyZ2V0Ow0KICAgIH0gU2NvcGVSZWNvcmRbMV07DQp9IFNDT1BFX1RBQkxFX0FNRDY0
LCAqUFNDT1BFX1RBQkxFX0FNRDY0Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIHsNCiNsaW5lIDI3MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KQk9PTEVBTg0KX2JpdHRl
c3QgKA0KICAgICAgTE9ORyBjb25zdCAqQmFzZSwNCiAgICAgIExPTkcgT2Zmc2V0DQogICAgKTsN
Cg0KQk9PTEVBTg0KX2JpdHRlc3RhbmRjb21wbGVtZW50ICgNCiAgICAgIExPTkcgKkJhc2UsDQog
ICAgICBMT05HIE9mZnNldA0KICAgICk7DQoNCkJPT0xFQU4NCl9iaXR0ZXN0YW5kc2V0ICgNCiAg
ICAgIExPTkcgKkJhc2UsDQogICAgICBMT05HIE9mZnNldA0KICAgICk7DQoNCkJPT0xFQU4NCl9i
aXR0ZXN0YW5kcmVzZXQgKA0KICAgICAgTE9ORyAqQmFzZSwNCiAgICAgIExPTkcgT2Zmc2V0DQog
ICAgKTsNCg0KQk9PTEVBTg0KX2ludGVybG9ja2VkYml0dGVzdGFuZHNldCAoDQogICAgICAgTE9O
RyB2b2xhdGlsZSAqQmFzZSwNCiAgICAgIExPTkcgT2Zmc2V0DQogICAgKTsNCg0KQk9PTEVBTg0K
X2ludGVybG9ja2VkYml0dGVzdGFuZHJlc2V0ICgNCiAgICAgICBMT05HIHZvbGF0aWxlICpCYXNl
LA0KICAgICAgTE9ORyBPZmZzZXQNCiAgICApOw0KDQpCT09MRUFODQpfYml0dGVzdDY0ICgNCiAg
ICAgIExPTkc2NCBjb25zdCAqQmFzZSwNCiAgICAgIExPTkc2NCBPZmZzZXQNCiAgICApOw0KDQpC
T09MRUFODQpfYml0dGVzdGFuZGNvbXBsZW1lbnQ2NCAoDQogICAgICBMT05HNjQgKkJhc2UsDQog
ICAgICBMT05HNjQgT2Zmc2V0DQogICAgKTsNCg0KQk9PTEVBTg0KX2JpdHRlc3RhbmRzZXQ2NCAo
DQogICAgICBMT05HNjQgKkJhc2UsDQogICAgICBMT05HNjQgT2Zmc2V0DQogICAgKTsNCg0KQk9P
TEVBTg0KX2JpdHRlc3RhbmRyZXNldDY0ICgNCiAgICAgIExPTkc2NCAqQmFzZSwNCiAgICAgIExP
Tkc2NCBPZmZzZXQNCiAgICApOw0KDQpCT09MRUFODQpfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kc2V0
NjQgKA0KICAgICAgIExPTkc2NCB2b2xhdGlsZSAqQmFzZSwNCiAgICAgIExPTkc2NCBPZmZzZXQN
CiAgICApOw0KDQpCT09MRUFODQpfaW50ZXJsb2NrZWRiaXR0ZXN0YW5kcmVzZXQ2NCAoDQogICAg
ICAgTE9ORzY0IHZvbGF0aWxlICpCYXNlLA0KICAgICAgTE9ORzY0IE9mZnNldA0KICAgICk7DQoN
CiNwcmFnbWEgaW50cmluc2ljKF9iaXR0ZXN0KQ0KI3ByYWdtYSBpbnRyaW5zaWMoX2JpdHRlc3Rh
bmRjb21wbGVtZW50KQ0KI3ByYWdtYSBpbnRyaW5zaWMoX2JpdHRlc3RhbmRzZXQpDQojcHJhZ21h
IGludHJpbnNpYyhfYml0dGVzdGFuZHJlc2V0KQ0KI3ByYWdtYSBpbnRyaW5zaWMoX2ludGVybG9j
a2VkYml0dGVzdGFuZHNldCkNCiNwcmFnbWEgaW50cmluc2ljKF9pbnRlcmxvY2tlZGJpdHRlc3Rh
bmRyZXNldCkNCg0KI3ByYWdtYSBpbnRyaW5zaWMoX2JpdHRlc3Q2NCkNCiNwcmFnbWEgaW50cmlu
c2ljKF9iaXR0ZXN0YW5kY29tcGxlbWVudDY0KQ0KI3ByYWdtYSBpbnRyaW5zaWMoX2JpdHRlc3Rh
bmRzZXQ2NCkNCiNwcmFnbWEgaW50cmluc2ljKF9iaXR0ZXN0YW5kcmVzZXQ2NCkNCiNwcmFnbWEg
aW50cmluc2ljKF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRzZXQ2NCkNCiNwcmFnbWEgaW50cmluc2lj
KF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRyZXNldDY0KQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQpC
T09MRUFODQpfQml0U2NhbkZvcndhcmQgKA0KICAgICAgRFdPUkQgKkluZGV4LA0KICAgICAgRFdP
UkQgTWFzaw0KICAgICk7DQoNCiANCkJPT0xFQU4NCl9CaXRTY2FuUmV2ZXJzZSAoDQogICAgICBE
V09SRCAqSW5kZXgsDQogICAgICBEV09SRCBNYXNrDQogICAgKTsNCg0KIA0KQk9PTEVBTg0KX0Jp
dFNjYW5Gb3J3YXJkNjQgKA0KICAgICAgRFdPUkQgKkluZGV4LA0KICAgICAgRFdPUkQ2NCBNYXNr
DQogICAgKTsNCg0KIA0KQk9PTEVBTg0KX0JpdFNjYW5SZXZlcnNlNjQgKA0KICAgICAgRFdPUkQg
KkluZGV4LA0KICAgICAgRFdPUkQ2NCBNYXNrDQogICAgKTsNCg0KI3ByYWdtYSBpbnRyaW5zaWMo
X0JpdFNjYW5Gb3J3YXJkKQ0KI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5SZXZlcnNlKQ0KI3By
YWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5Gb3J3YXJkNjQpDQojcHJhZ21hIGludHJpbnNpYyhfQml0
U2NhblJldmVyc2U2NCkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KU0hPUlQNCl9JbnRlcmxvY2tlZEluY3JlbWVudDE2ICgNCiAgICAgICBTSE9SVCB2b2xh
dGlsZSAqQWRkZW5kDQogICAgKTsNCg0KU0hPUlQNCl9JbnRlcmxvY2tlZERlY3JlbWVudDE2ICgN
CiAgICAgICBTSE9SVCB2b2xhdGlsZSAqQWRkZW5kDQogICAgKTsNCg0KU0hPUlQNCl9JbnRlcmxv
Y2tlZENvbXBhcmVFeGNoYW5nZTE2ICgNCiAgICAgICBTSE9SVCB2b2xhdGlsZSAqRGVzdGluYXRp
b24sDQogICAgICBTSE9SVCBFeENoYW5nZSwNCiAgICAgIFNIT1JUIENvbXBlcmFuZA0KICAgICk7
DQoNCkxPTkcNCl9JbnRlcmxvY2tlZEFuZCAoDQogICAgICAgTE9ORyB2b2xhdGlsZSAqRGVzdGlu
YXRpb24sDQogICAgICBMT05HIFZhbHVlDQogICAgKTsNCg0KTE9ORw0KX0ludGVybG9ja2VkT3Ig
KA0KICAgICAgIExPTkcgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgTE9ORyBWYWx1ZQ0K
ICAgICk7DQoNCkxPTkcNCl9JbnRlcmxvY2tlZFhvciAoDQogICAgICAgTE9ORyB2b2xhdGlsZSAq
RGVzdGluYXRpb24sDQogICAgICBMT05HIFZhbHVlDQogICAgKTsNCg0KTE9ORzY0DQpfSW50ZXJs
b2NrZWRBbmQ2NCAoDQogICAgICAgTE9ORzY0IHZvbGF0aWxlICpEZXN0aW5hdGlvbiwNCiAgICAg
IExPTkc2NCBWYWx1ZQ0KICAgICk7DQoNCkxPTkc2NA0KX0ludGVybG9ja2VkT3I2NCAoDQogICAg
ICAgTE9ORzY0IHZvbGF0aWxlICpEZXN0aW5hdGlvbiwNCiAgICAgIExPTkc2NCBWYWx1ZQ0KICAg
ICk7DQoNCkxPTkc2NA0KX0ludGVybG9ja2VkWG9yNjQgKA0KICAgICAgIExPTkc2NCB2b2xhdGls
ZSAqRGVzdGluYXRpb24sDQogICAgICBMT05HNjQgVmFsdWUNCiAgICApOw0KDQpMT05HDQpfSW50
ZXJsb2NrZWRJbmNyZW1lbnQgKA0KICAgICAgIExPTkcgdm9sYXRpbGUgKkFkZGVuZA0KICAgICk7
DQoNCkxPTkcNCl9JbnRlcmxvY2tlZERlY3JlbWVudCAoDQogICAgICAgTE9ORyB2b2xhdGlsZSAq
QWRkZW5kDQogICAgKTsNCg0KTE9ORw0KX0ludGVybG9ja2VkRXhjaGFuZ2UgKA0KICAgICAgIExP
Tkcgdm9sYXRpbGUgKlRhcmdldCwNCiAgICAgIExPTkcgVmFsdWUNCiAgICApOw0KDQpMT05HDQpf
SW50ZXJsb2NrZWRFeGNoYW5nZUFkZCAoDQogICAgICAgTE9ORyB2b2xhdGlsZSAqQWRkZW5kLA0K
ICAgICAgTE9ORyBWYWx1ZQ0KICAgICk7DQoNCg0KDQpfX2ZvcmNlaW5saW5lDQpMT05HDQpfSW5s
aW5lSW50ZXJsb2NrZWRBZGQgKA0KICAgICAgIExPTkcgdm9sYXRpbGUgKkFkZGVuZCwNCiAgICAg
IExPTkcgVmFsdWUNCiAgICApDQoNCnsNCiAgICByZXR1cm4gX0ludGVybG9ja2VkRXhjaGFuZ2VB
ZGQoQWRkZW5kLCBWYWx1ZSkgKyBWYWx1ZTsNCn0NCg0KI2xpbmUgMzA1MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm50LmgiDQoNCkxPTkcNCl9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSAoDQogICAgICAg
TE9ORyB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBMT05HIEV4Q2hhbmdlLA0KICAgICAg
TE9ORyBDb21wZXJhbmQNCiAgICApOw0KDQpMT05HNjQNCl9JbnRlcmxvY2tlZEluY3JlbWVudDY0
ICgNCiAgICAgICBMT05HNjQgdm9sYXRpbGUgKkFkZGVuZA0KICAgICk7DQoNCkxPTkc2NA0KX0lu
dGVybG9ja2VkRGVjcmVtZW50NjQgKA0KICAgICAgIExPTkc2NCB2b2xhdGlsZSAqQWRkZW5kDQog
ICAgKTsNCg0KTE9ORzY0DQpfSW50ZXJsb2NrZWRFeGNoYW5nZTY0ICgNCiAgICAgICBMT05HNjQg
dm9sYXRpbGUgKlRhcmdldCwNCiAgICAgIExPTkc2NCBWYWx1ZQ0KICAgICk7DQoNCkxPTkc2NA0K
X0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ2NCAoDQogICAgICAgTE9ORzY0IHZvbGF0aWxlICpBZGRl
bmQsDQogICAgICBMT05HNjQgVmFsdWUNCiAgICApOw0KDQoNCg0KX19mb3JjZWlubGluZQ0KTE9O
RzY0DQpfSW5saW5lSW50ZXJsb2NrZWRBZGQ2NCAoDQogICAgICAgTE9ORzY0IHZvbGF0aWxlICpB
ZGRlbmQsDQogICAgICBMT05HNjQgVmFsdWUNCiAgICApDQoNCnsNCiAgICByZXR1cm4gX0ludGVy
bG9ja2VkRXhjaGFuZ2VBZGQ2NChBZGRlbmQsIFZhbHVlKSArIFZhbHVlOw0KfQ0KDQojbGluZSAz
MDk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KTE9ORzY0DQpfSW50ZXJsb2NrZWRDb21wYXJl
RXhjaGFuZ2U2NCAoDQogICAgICAgTE9ORzY0IHZvbGF0aWxlICpEZXN0aW5hdGlvbiwNCiAgICAg
IExPTkc2NCBFeENoYW5nZSwNCiAgICAgIExPTkc2NCBDb21wZXJhbmQNCiAgICApOw0KDQpCT09M
RUFODQpfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxMjggKA0KICAgICAgIExPTkc2NCB2b2xh
dGlsZSAqRGVzdGluYXRpb24sDQogICAgICBMT05HNjQgRXhjaGFuZ2VIaWdoLA0KICAgICAgTE9O
RzY0IEV4Y2hhbmdlTG93LA0KICAgICAgTE9ORzY0ICpDb21wYXJhbmRSZXN1bHQNCiAgICApOw0K
DQogIFBWT0lEDQpfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyICgNCiAgICAgIA0K
I2xpbmUgMzExOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQogICAgIFBWT0lEIHZvbGF0aWxlICpE
ZXN0aW5hdGlvbiwNCiAgICAgIFBWT0lEIEV4Y2hhbmdlLA0KICAgICAgUFZPSUQgQ29tcGVyYW5k
DQogICAgKTsNCg0KICBQVk9JRA0KX0ludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyKA0KICAgICAg
DQojbGluZSAzMTI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiAgICAgUFZPSUQgdm9sYXRpbGUg
KlRhcmdldCwNCiAgICAgIFBWT0lEIFZhbHVlDQogICAgKTsNCg0KI3ByYWdtYSBpbnRyaW5zaWMo
X0ludGVybG9ja2VkSW5jcmVtZW50MTYpDQojcHJhZ21hIGludHJpbnNpYyhfSW50ZXJsb2NrZWRE
ZWNyZW1lbnQxNikNCiNwcmFnbWEgaW50cmluc2ljKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5n
ZTE2KQ0KI3ByYWdtYSBpbnRyaW5zaWMoX0ludGVybG9ja2VkQW5kKQ0KI3ByYWdtYSBpbnRyaW5z
aWMoX0ludGVybG9ja2VkT3IpDQojcHJhZ21hIGludHJpbnNpYyhfSW50ZXJsb2NrZWRYb3IpDQoj
cHJhZ21hIGludHJpbnNpYyhfSW50ZXJsb2NrZWRJbmNyZW1lbnQpDQojcHJhZ21hIGludHJpbnNp
YyhfSW50ZXJsb2NrZWREZWNyZW1lbnQpDQojcHJhZ21hIGludHJpbnNpYyhfSW50ZXJsb2NrZWRF
eGNoYW5nZSkNCiNwcmFnbWEgaW50cmluc2ljKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKQ0KI3By
YWdtYSBpbnRyaW5zaWMoX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKQ0KI3ByYWdtYSBpbnRy
aW5zaWMoX0ludGVybG9ja2VkQW5kNjQpDQojcHJhZ21hIGludHJpbnNpYyhfSW50ZXJsb2NrZWRP
cjY0KQ0KI3ByYWdtYSBpbnRyaW5zaWMoX0ludGVybG9ja2VkWG9yNjQpDQojcHJhZ21hIGludHJp
bnNpYyhfSW50ZXJsb2NrZWRJbmNyZW1lbnQ2NCkNCiNwcmFnbWEgaW50cmluc2ljKF9JbnRlcmxv
Y2tlZERlY3JlbWVudDY0KQ0KI3ByYWdtYSBpbnRyaW5zaWMoX0ludGVybG9ja2VkRXhjaGFuZ2U2
NCkNCiNwcmFnbWEgaW50cmluc2ljKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkNjQpDQojcHJhZ21h
IGludHJpbnNpYyhfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U2NCkNCg0KDQoNCiNwcmFnbWEg
aW50cmluc2ljKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTEyOCkNCg0KI2xpbmUgMzE1NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiNwcmFnbWEgaW50cmluc2ljKF9JbnRlcmxvY2tlZEV4
Y2hhbmdlUG9pbnRlcikNCiNwcmFnbWEgaW50cmluc2ljKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNo
YW5nZVBvaW50ZXIpDQoNCg0KDQoNCg0KDQpDSEFSDQpfSW50ZXJsb2NrZWRFeGNoYW5nZTggKA0K
ICAgICAgIENIQVIgdm9sYXRpbGUgKlRhcmdldCwNCiAgICAgIENIQVIgVmFsdWUNCiAgICApOw0K
DQpTSE9SVA0KX0ludGVybG9ja2VkRXhjaGFuZ2UxNiAoDQogICAgICAgU0hPUlQgdm9sYXRpbGUg
KkRlc3RpbmF0aW9uLA0KICAgICAgU0hPUlQgRXhDaGFuZ2UNCiAgICApOw0KDQojcHJhZ21hIGlu
dHJpbnNpYyhfSW50ZXJsb2NrZWRFeGNoYW5nZTgpDQojcHJhZ21hIGludHJpbnNpYyhfSW50ZXJs
b2NrZWRFeGNoYW5nZTE2KQ0KDQojbGluZSAzMTgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpjaGFyDQpfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDggKA0KICAg
ICAgIGNoYXIgdm9sYXRpbGUgKiBfQWRkZW5kLA0KICAgICAgY2hhciBfVmFsdWUNCiAgICApOw0K
DQpjaGFyDQpfSW50ZXJsb2NrZWRBbmQ4ICgNCiAgICAgICBjaGFyIHZvbGF0aWxlICpEZXN0aW5h
dGlvbiwNCiAgICAgIGNoYXIgVmFsdWUNCiAgICApOw0KDQpjaGFyDQpfSW50ZXJsb2NrZWRPcjgg
KA0KICAgICAgIGNoYXIgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgY2hhciBWYWx1ZQ0K
ICAgICk7DQoNCmNoYXINCl9JbnRlcmxvY2tlZFhvcjggKA0KICAgICAgIGNoYXIgdm9sYXRpbGUg
KkRlc3RpbmF0aW9uLA0KICAgICAgY2hhciBWYWx1ZQ0KICAgICk7DQoNClNIT1JUDQpfSW50ZXJs
b2NrZWRBbmQxNigNCiAgICAgICBTSE9SVCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBT
SE9SVCBWYWx1ZQ0KICAgICk7DQoNClNIT1JUDQpfSW50ZXJsb2NrZWRPcjE2KA0KICAgICAgIFNI
T1JUIHZvbGF0aWxlICpEZXN0aW5hdGlvbiwNCiAgICAgIFNIT1JUIFZhbHVlDQogICAgKTsNCg0K
U0hPUlQNCl9JbnRlcmxvY2tlZFhvcjE2KA0KICAgICAgIFNIT1JUIHZvbGF0aWxlICpEZXN0aW5h
dGlvbiwNCiAgICAgIFNIT1JUIFZhbHVlDQogICAgKTsNCg0KI3ByYWdtYSBpbnRyaW5zaWMgKF9J
bnRlcmxvY2tlZEV4Y2hhbmdlQWRkOCkNCiNwcmFnbWEgaW50cmluc2ljIChfSW50ZXJsb2NrZWRB
bmQ4KQ0KI3ByYWdtYSBpbnRyaW5zaWMgKF9JbnRlcmxvY2tlZE9yOCkNCiNwcmFnbWEgaW50cmlu
c2ljIChfSW50ZXJsb2NrZWRYb3I4KQ0KI3ByYWdtYSBpbnRyaW5zaWMgKF9JbnRlcmxvY2tlZEFu
ZDE2KQ0KI3ByYWdtYSBpbnRyaW5zaWMgKF9JbnRlcmxvY2tlZE9yMTYpDQojcHJhZ21hIGludHJp
bnNpYyAoX0ludGVybG9ja2VkWG9yMTYpDQoNCiNsaW5lIDMyNDQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
dC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0Kdm9pZA0KX19jcHVpZGV4ICgNCiAgICBpbnQgQ1BVSW5m
b1s0XSwNCiAgICBpbnQgRnVuY3Rpb24sDQogICAgaW50IFN1YkxlYWYNCiAgICApOw0KDQojcHJh
Z21hIGludHJpbnNpYyhfX2NwdWlkZXgpDQoNCg0KDQoNCg0KDQoNCg0KDQp2b2lkDQpfbW1fY2xm
bHVzaCAoDQogICAgICB2b2lkIGNvbnN0ICpBZGRyZXNzDQogICAgKTsNCg0KI3ByYWdtYSBpbnRy
aW5zaWMoX21tX2NsZmx1c2gpDQoNCg0KDQoNCnZvaWQNCl9SZWFkV3JpdGVCYXJyaWVyICgNCiAg
ICB2b2lkDQogICAgKTsNCg0KI3ByYWdtYSBpbnRyaW5zaWMoX1JlYWRXcml0ZUJhcnJpZXIpDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp2b2lkDQpfX2Zhc3RzdG9yZWZlbmNl
ICgNCiAgICB2b2lkDQogICAgKTsNCg0KDQoNCg0Kdm9pZA0KX21tX2xmZW5jZSAoDQogICAgdm9p
ZA0KICAgICk7DQoNCnZvaWQNCl9tbV9tZmVuY2UgKA0KICAgIHZvaWQNCiAgICApOw0KDQp2b2lk
DQpfbW1fc2ZlbmNlICgNCiAgICB2b2lkDQogICAgKTsNCg0Kdm9pZA0KX21tX3BhdXNlICgNCiAg
ICB2b2lkDQogICAgKTsNCg0Kdm9pZA0KX21tX3ByZWZldGNoICgNCiAgICAgIENIQVIgY29uc3Qg
KmEsDQogICAgICBpbnQgc2VsDQogICAgKTsNCg0Kdm9pZA0KX21fcHJlZmV0Y2h3ICgNCiAgICAg
IHZvbGF0aWxlIGNvbnN0IHZvaWQgKlNvdXJjZQ0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgaW50cmluc2ljKF9fZmFzdHN0b3JlZmVuY2UpDQoNCg0KDQoNCiNwcmFn
bWEgaW50cmluc2ljKF9tbV9wYXVzZSkNCiNwcmFnbWEgaW50cmluc2ljKF9tbV9wcmVmZXRjaCkN
CiNwcmFnbWEgaW50cmluc2ljKF9tbV9sZmVuY2UpDQojcHJhZ21hIGludHJpbnNpYyhfbW1fbWZl
bmNlKQ0KI3ByYWdtYSBpbnRyaW5zaWMoX21tX3NmZW5jZSkNCiNwcmFnbWEgaW50cmluc2ljKF9t
X3ByZWZldGNodykNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp1bnNpZ25lZCBpbnQNCl9tbV9nZXRjc3IgKA0KICAgIHZvaWQNCiAgICApOw0KDQp2b2lkDQpf
bW1fc2V0Y3NyICgNCiAgICAgIHVuc2lnbmVkIGludCBNeENzcg0KICAgICk7DQoNCiNwcmFnbWEg
aW50cmluc2ljKF9tbV9nZXRjc3IpDQojcHJhZ21hIGludHJpbnNpYyhfbW1fc2V0Y3NyKQ0KDQoN
Cg0KDQoNCg0KDQp1bnNpZ25lZCBfX2ludDMyDQpfX2dldGNhbGxlcnNlZmxhZ3MgKA0KICAgIHZv
aWQNCiAgICApOw0KDQojcHJhZ21hIGludHJpbnNpYyhfX2dldGNhbGxlcnNlZmxhZ3MpDQoNCg0K
DQoNCg0KDQoNCkRXT1JEDQpfX3NlZ21lbnRsaW1pdCAoDQogICAgICBEV09SRCBTZWxlY3Rvcg0K
ICAgICk7DQoNCiNwcmFnbWEgaW50cmluc2ljKF9fc2VnbWVudGxpbWl0KQ0KDQoNCg0KDQoNCg0K
DQpEV09SRDY0DQpfX3JlYWRwbWMgKA0KICAgICAgRFdPUkQgQ291bnRlcg0KICAgICk7DQoNCiNw
cmFnbWEgaW50cmluc2ljKF9fcmVhZHBtYykNCg0KDQoNCg0KDQoNCg0KRFdPUkQ2NA0KX19yZHRz
YyAoDQogICAgdm9pZA0KICAgICk7DQoNCiNwcmFnbWEgaW50cmluc2ljKF9fcmR0c2MpDQoNCg0K
DQoNCg0Kdm9pZA0KX19tb3ZzYiAoDQogICAgICBQQllURSAgRGVzdGluYXRpb24sDQogICAgICBC
WVRFICBjb25zdCAqU291cmNlLA0KICAgICAgU0laRV9UIENvdW50DQogICAgKTsNCg0Kdm9pZA0K
X19tb3ZzdyAoDQogICAgICBQV09SRCAgIERlc3RpbmF0aW9uLA0KICAgICAgV09SRCAgIGNvbnN0
ICpTb3VyY2UsDQogICAgICBTSVpFX1QgQ291bnQNCiAgICApOw0KDQp2b2lkDQpfX21vdnNkICgN
CiAgICAgIFBEV09SRCBEZXN0aW5hdGlvbiwNCiAgICAgIERXT1JEIGNvbnN0ICpTb3VyY2UsDQog
ICAgICBTSVpFX1QgQ291bnQNCiAgICApOw0KDQp2b2lkDQpfX21vdnNxICgNCiAgICAgIFBEV09S
RDY0IERlc3RpbmF0aW9uLA0KICAgICAgRFdPUkQ2NCBjb25zdCAqU291cmNlLA0KICAgICAgU0la
RV9UIENvdW50DQogICAgKTsNCg0KI3ByYWdtYSBpbnRyaW5zaWMoX19tb3ZzYikNCiNwcmFnbWEg
aW50cmluc2ljKF9fbW92c3cpDQojcHJhZ21hIGludHJpbnNpYyhfX21vdnNkKQ0KI3ByYWdtYSBp
bnRyaW5zaWMoX19tb3ZzcSkNCg0KDQoNCg0KDQp2b2lkDQpfX3N0b3NiICgNCiAgICAgIFBCWVRF
ICBEZXN0aW5hdGlvbiwNCiAgICAgIEJZVEUgIFZhbHVlLA0KICAgICAgU0laRV9UIENvdW50DQog
ICAgKTsNCg0Kdm9pZA0KX19zdG9zdyAoDQogICAgICBQV09SRCAgIERlc3RpbmF0aW9uLA0KICAg
ICAgV09SRCAgIFZhbHVlLA0KICAgICAgU0laRV9UIENvdW50DQogICAgKTsNCg0Kdm9pZA0KX19z
dG9zZCAoDQogICAgICBQRFdPUkQgRGVzdGluYXRpb24sDQogICAgICBEV09SRCBWYWx1ZSwNCiAg
ICAgIFNJWkVfVCBDb3VudA0KICAgICk7DQoNCnZvaWQNCl9fc3Rvc3EgKA0KICAgICAgUERXT1JE
NjQgRGVzdGluYXRpb24sDQogICAgICBEV09SRDY0IFZhbHVlLA0KICAgICAgU0laRV9UIENvdW50
DQogICAgKTsNCg0KI3ByYWdtYSBpbnRyaW5zaWMoX19zdG9zYikNCiNwcmFnbWEgaW50cmluc2lj
KF9fc3Rvc3cpDQojcHJhZ21hIGludHJpbnNpYyhfX3N0b3NkKQ0KI3ByYWdtYSBpbnRyaW5zaWMo
X19zdG9zcSkNCg0KDQoNCg0KDQoNCg0KDQpMT05HTE9ORw0KX19tdWxoICgNCiAgICAgIExPTkc2
NCBNdWx0aXBsaWVyLA0KICAgICAgTE9ORzY0IE11bHRpcGxpY2FuZA0KICAgICk7DQoNClVMT05H
TE9ORw0KX191bXVsaCAoDQogICAgICBEV09SRDY0IE11bHRpcGxpZXIsDQogICAgICBEV09SRDY0
IE11bHRpcGxpY2FuZA0KICAgICk7DQoNCiNwcmFnbWEgaW50cmluc2ljKF9fbXVsaCkNCiNwcmFn
bWEgaW50cmluc2ljKF9fdW11bGgpDQoNCg0KDQoNCg0KDQoNCkRXT1JENjQNCl9fcG9wY250NjQg
KA0KICAgICAgRFdPUkQ2NCBvcGVyYW5kDQogICAgKTsNCg0KDQoNCiNwcmFnbWEgaW50cmluc2lj
KF9fcG9wY250NjQpDQoNCiNsaW5lIDM1NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0K
DQoNCg0KDQoNCkRXT1JENjQNCl9fc2hpZnRsZWZ0MTI4ICgNCiAgICAgIERXT1JENjQgTG93UGFy
dCwNCiAgICAgIERXT1JENjQgSGlnaFBhcnQsDQogICAgICBCWVRFICBTaGlmdA0KICAgICk7DQoN
CkRXT1JENjQNCl9fc2hpZnRyaWdodDEyOCAoDQogICAgICBEV09SRDY0IExvd1BhcnQsDQogICAg
ICBEV09SRDY0IEhpZ2hQYXJ0LA0KICAgICAgQllURSAgU2hpZnQNCiAgICApOw0KDQojcHJhZ21h
IGludHJpbnNpYyhfX3NoaWZ0bGVmdDEyOCkNCiNwcmFnbWEgaW50cmluc2ljKF9fc2hpZnRyaWdo
dDEyOCkNCg0KDQoNCg0KDQoNCg0KTE9ORzY0DQpfbXVsMTI4ICgNCiAgICAgIExPTkc2NCBNdWx0
aXBsaWVyLA0KICAgICAgTE9ORzY0IE11bHRpcGxpY2FuZCwNCiAgICAgIExPTkc2NCAqSGlnaFBy
b2R1Y3QNCiAgICApOw0KDQojcHJhZ21hIGludHJpbnNpYyhfbXVsMTI4KQ0KDQoNCg0KDQoNCkRX
T1JENjQNCl91bXVsMTI4ICgNCiAgICAgIERXT1JENjQgTXVsdGlwbGllciwNCiAgICAgIERXT1JE
NjQgTXVsdGlwbGljYW5kLA0KICAgICAgRFdPUkQ2NCAqSGlnaFByb2R1Y3QNCiAgICApOw0KDQoj
cHJhZ21hIGludHJpbnNpYyhfdW11bDEyOCkNCg0KI2xpbmUgMzYyMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm50LmgiDQoNCl9fZm9yY2VpbmxpbmUNCkxPTkc2NA0KTXVsdGlwbHlFeHRyYWN0MTI4ICgNCiAg
ICAgIExPTkc2NCBNdWx0aXBsaWVyLA0KICAgICAgTE9ORzY0IE11bHRpcGxpY2FuZCwNCiAgICAg
IEJZVEUgIFNoaWZ0DQogICAgKQ0KDQp7DQoNCiAgICBMT05HNjQgZXh0cmFjdGVkUHJvZHVjdDsN
CiAgICBMT05HNjQgaGlnaFByb2R1Y3Q7DQogICAgTE9ORzY0IGxvd1Byb2R1Y3Q7DQogICAgQk9P
TEVBTiBuZWdhdGU7DQogICAgRFdPUkQ2NCB1aGlnaFByb2R1Y3Q7DQogICAgRFdPUkQ2NCB1bG93
UHJvZHVjdDsNCg0KICAgIGxvd1Byb2R1Y3QgPSBfbXVsMTI4KE11bHRpcGxpZXIsIE11bHRpcGxp
Y2FuZCwgJmhpZ2hQcm9kdWN0KTsNCiAgICBuZWdhdGUgPSAwOw0KICAgIHVoaWdoUHJvZHVjdCA9
IChEV09SRDY0KWhpZ2hQcm9kdWN0Ow0KICAgIHVsb3dQcm9kdWN0ID0gKERXT1JENjQpbG93UHJv
ZHVjdDsNCiAgICBpZiAoaGlnaFByb2R1Y3QgPCAwKSB7DQogICAgICAgIG5lZ2F0ZSA9IDE7DQog
ICAgICAgIHVoaWdoUHJvZHVjdCA9IChEV09SRDY0KSgtaGlnaFByb2R1Y3QpOw0KICAgICAgICB1
bG93UHJvZHVjdCA9IChEV09SRDY0KSgtbG93UHJvZHVjdCk7DQogICAgICAgIGlmICh1bG93UHJv
ZHVjdCAhPSAwKSB7DQogICAgICAgICAgICB1aGlnaFByb2R1Y3QgLT0gMTsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIGV4dHJhY3RlZFByb2R1Y3QgPSAoTE9ORzY0KV9fc2hpZnRyaWdodDEyOCh1
bG93UHJvZHVjdCwgdWhpZ2hQcm9kdWN0LCBTaGlmdCk7DQogICAgaWYgKG5lZ2F0ZSAhPSAwKSB7
DQogICAgICAgIGV4dHJhY3RlZFByb2R1Y3QgPSAtZXh0cmFjdGVkUHJvZHVjdDsNCiAgICB9DQoN
CiAgICByZXR1cm4gZXh0cmFjdGVkUHJvZHVjdDsNCn0NCg0KX19mb3JjZWlubGluZQ0KRFdPUkQ2
NA0KVW5zaWduZWRNdWx0aXBseUV4dHJhY3QxMjggKA0KICAgICAgRFdPUkQ2NCBNdWx0aXBsaWVy
LA0KICAgICAgRFdPUkQ2NCBNdWx0aXBsaWNhbmQsDQogICAgICBCWVRFICBTaGlmdA0KICAgICkN
Cg0Kew0KDQogICAgRFdPUkQ2NCBleHRyYWN0ZWRQcm9kdWN0Ow0KICAgIERXT1JENjQgaGlnaFBy
b2R1Y3Q7DQogICAgRFdPUkQ2NCBsb3dQcm9kdWN0Ow0KDQogICAgbG93UHJvZHVjdCA9IF91bXVs
MTI4KE11bHRpcGxpZXIsIE11bHRpcGxpY2FuZCwgJmhpZ2hQcm9kdWN0KTsNCiAgICBleHRyYWN0
ZWRQcm9kdWN0ID0gX19zaGlmdHJpZ2h0MTI4KGxvd1Byb2R1Y3QsIGhpZ2hQcm9kdWN0LCBTaGlm
dCk7DQogICAgcmV0dXJuIGV4dHJhY3RlZFByb2R1Y3Q7DQp9DQoNCg0KDQoNCg0KQllURSANCl9f
cmVhZGdzYnl0ZSAoDQogICAgICBEV09SRCBPZmZzZXQNCiAgICApOw0KDQpXT1JEICANCl9fcmVh
ZGdzd29yZCAoDQogICAgICBEV09SRCBPZmZzZXQNCiAgICApOw0KDQpEV09SRA0KX19yZWFkZ3Nk
d29yZCAoDQogICAgICBEV09SRCBPZmZzZXQNCiAgICApOw0KDQpEV09SRDY0DQpfX3JlYWRnc3F3
b3JkICgNCiAgICAgIERXT1JEIE9mZnNldA0KICAgICk7DQoNCnZvaWQNCl9fd3JpdGVnc2J5dGUg
KA0KICAgICAgRFdPUkQgT2Zmc2V0LA0KICAgICAgQllURSAgRGF0YQ0KICAgICk7DQoNCnZvaWQN
Cl9fd3JpdGVnc3dvcmQgKA0KICAgICAgRFdPUkQgT2Zmc2V0LA0KICAgICAgV09SRCAgIERhdGEN
CiAgICApOw0KDQp2b2lkDQpfX3dyaXRlZ3Nkd29yZCAoDQogICAgICBEV09SRCBPZmZzZXQsDQog
ICAgICBEV09SRCBEYXRhDQogICAgKTsNCg0Kdm9pZA0KX193cml0ZWdzcXdvcmQgKA0KICAgICAg
RFdPUkQgT2Zmc2V0LA0KICAgICAgRFdPUkQ2NCBEYXRhDQogICAgKTsNCg0KI3ByYWdtYSBpbnRy
aW5zaWMoX19yZWFkZ3NieXRlKQ0KI3ByYWdtYSBpbnRyaW5zaWMoX19yZWFkZ3N3b3JkKQ0KI3By
YWdtYSBpbnRyaW5zaWMoX19yZWFkZ3Nkd29yZCkNCiNwcmFnbWEgaW50cmluc2ljKF9fcmVhZGdz
cXdvcmQpDQojcHJhZ21hIGludHJpbnNpYyhfX3dyaXRlZ3NieXRlKQ0KI3ByYWdtYSBpbnRyaW5z
aWMoX193cml0ZWdzd29yZCkNCiNwcmFnbWEgaW50cmluc2ljKF9fd3JpdGVnc2R3b3JkKQ0KI3By
YWdtYSBpbnRyaW5zaWMoX193cml0ZWdzcXdvcmQpDQoNCg0KDQp2b2lkDQpfX2luY2dzYnl0ZSAo
DQogICAgICBEV09SRCBPZmZzZXQNCiAgICApOw0KDQp2b2lkDQpfX2FkZGdzYnl0ZSAoDQogICAg
ICBEV09SRCBPZmZzZXQsDQogICAgICBCWVRFICBWYWx1ZQ0KICAgICk7DQoNCnZvaWQNCl9faW5j
Z3N3b3JkICgNCiAgICAgIERXT1JEIE9mZnNldA0KICAgICk7DQoNCnZvaWQNCl9fYWRkZ3N3b3Jk
ICgNCiAgICAgIERXT1JEIE9mZnNldCwNCiAgICAgIFdPUkQgICBWYWx1ZQ0KICAgICk7DQoNCnZv
aWQNCl9faW5jZ3Nkd29yZCAoDQogICAgICBEV09SRCBPZmZzZXQNCiAgICApOw0KDQp2b2lkDQpf
X2FkZGdzZHdvcmQgKA0KICAgICAgRFdPUkQgT2Zmc2V0LA0KICAgICAgRFdPUkQgVmFsdWUNCiAg
ICApOw0KDQp2b2lkDQpfX2luY2dzcXdvcmQgKA0KICAgICAgRFdPUkQgT2Zmc2V0DQogICAgKTsN
Cg0Kdm9pZA0KX19hZGRnc3F3b3JkICgNCiAgICAgIERXT1JEIE9mZnNldCwNCiAgICAgIERXT1JE
NjQgVmFsdWUNCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNzkxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMzc5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0K
DQp9DQojbGluZSAzNzk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMzgwMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzODQz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzODUyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgWFNBVkVf
Rk9STUFUIFhNTV9TQVZFX0FSRUEzMiwgKlBYTU1fU0FWRV9BUkVBMzI7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDE2KSkgX19kZWNsc3BlYyhub19pbml0
X2FsbCkgX0NPTlRFWFQgew0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoN
CiAgICBEV09SRDY0IFAxSG9tZTsNCiAgICBEV09SRDY0IFAySG9tZTsNCiAgICBEV09SRDY0IFAz
SG9tZTsNCiAgICBEV09SRDY0IFA0SG9tZTsNCiAgICBEV09SRDY0IFA1SG9tZTsNCiAgICBEV09S
RDY0IFA2SG9tZTsNCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgRFdPUkQgQ29udGV4dEZsYWdz
Ow0KICAgIERXT1JEIE14Q3NyOw0KDQogICAgDQogICAgDQogICAgDQoNCiAgICBXT1JEICAgU2Vn
Q3M7DQogICAgV09SRCAgIFNlZ0RzOw0KICAgIFdPUkQgICBTZWdFczsNCiAgICBXT1JEICAgU2Vn
RnM7DQogICAgV09SRCAgIFNlZ0dzOw0KICAgIFdPUkQgICBTZWdTczsNCiAgICBEV09SRCBFRmxh
Z3M7DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIERXT1JENjQgRHIwOw0KICAgIERXT1JENjQg
RHIxOw0KICAgIERXT1JENjQgRHIyOw0KICAgIERXT1JENjQgRHIzOw0KICAgIERXT1JENjQgRHI2
Ow0KICAgIERXT1JENjQgRHI3Ow0KDQogICAgDQogICAgDQogICAgDQoNCiAgICBEV09SRDY0IFJh
eDsNCiAgICBEV09SRDY0IFJjeDsNCiAgICBEV09SRDY0IFJkeDsNCiAgICBEV09SRDY0IFJieDsN
CiAgICBEV09SRDY0IFJzcDsNCiAgICBEV09SRDY0IFJicDsNCiAgICBEV09SRDY0IFJzaTsNCiAg
ICBEV09SRDY0IFJkaTsNCiAgICBEV09SRDY0IFI4Ow0KICAgIERXT1JENjQgUjk7DQogICAgRFdP
UkQ2NCBSMTA7DQogICAgRFdPUkQ2NCBSMTE7DQogICAgRFdPUkQ2NCBSMTI7DQogICAgRFdPUkQ2
NCBSMTM7DQogICAgRFdPUkQ2NCBSMTQ7DQogICAgRFdPUkQ2NCBSMTU7DQoNCiAgICANCiAgICAN
CiAgICANCg0KICAgIERXT1JENjQgUmlwOw0KDQogICAgDQogICAgDQogICAgDQoNCiAgICB1bmlv
biB7DQogICAgICAgIFhNTV9TQVZFX0FSRUEzMiBGbHRTYXZlOw0KICAgICAgICBzdHJ1Y3Qgew0K
ICAgICAgICAgICAgTTEyOEEgSGVhZGVyWzJdOw0KICAgICAgICAgICAgTTEyOEEgTGVnYWN5Wzhd
Ow0KICAgICAgICAgICAgTTEyOEEgWG1tMDsNCiAgICAgICAgICAgIE0xMjhBIFhtbTE7DQogICAg
ICAgICAgICBNMTI4QSBYbW0yOw0KICAgICAgICAgICAgTTEyOEEgWG1tMzsNCiAgICAgICAgICAg
IE0xMjhBIFhtbTQ7DQogICAgICAgICAgICBNMTI4QSBYbW01Ow0KICAgICAgICAgICAgTTEyOEEg
WG1tNjsNCiAgICAgICAgICAgIE0xMjhBIFhtbTc7DQogICAgICAgICAgICBNMTI4QSBYbW04Ow0K
ICAgICAgICAgICAgTTEyOEEgWG1tOTsNCiAgICAgICAgICAgIE0xMjhBIFhtbTEwOw0KICAgICAg
ICAgICAgTTEyOEEgWG1tMTE7DQogICAgICAgICAgICBNMTI4QSBYbW0xMjsNCiAgICAgICAgICAg
IE0xMjhBIFhtbTEzOw0KICAgICAgICAgICAgTTEyOEEgWG1tMTQ7DQogICAgICAgICAgICBNMTI4
QSBYbW0xNTsNCiAgICAgICAgfSA7DQogICAgfSA7DQoNCiAgICANCiAgICANCiAgICANCg0KICAg
IE0xMjhBIFZlY3RvclJlZ2lzdGVyWzI2XTsNCiAgICBEV09SRDY0IFZlY3RvckNvbnRyb2w7DQoN
CiAgICANCiAgICANCiAgICANCg0KICAgIERXT1JENjQgRGVidWdDb250cm9sOw0KICAgIERXT1JE
NjQgTGFzdEJyYW5jaFRvUmlwOw0KICAgIERXT1JENjQgTGFzdEJyYW5jaEZyb21SaXA7DQogICAg
RFdPUkQ2NCBMYXN0RXhjZXB0aW9uVG9SaXA7DQogICAgRFdPUkQ2NCBMYXN0RXhjZXB0aW9uRnJv
bVJpcDsNCn0gQ09OVEVYVCwgKlBDT05URVhUOw0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X0lNQUdFX1JVTlRJTUVfRlVOQ1RJT05fRU5UUlkgUlVOVElNRV9GVU5DVElPTiwgKlBSVU5USU1F
X0ZVTkNUSU9OOw0KdHlwZWRlZiBTQ09QRV9UQUJMRV9BTUQ2NCBTQ09QRV9UQUJMRSwgKlBTQ09Q
RV9UQUJMRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1VOV0lORF9ISVNUT1JZX1RBQkxFX0VOVFJZIHsNCiAgICBEV09SRDY0IElt
YWdlQmFzZTsNCiAgICBQUlVOVElNRV9GVU5DVElPTiBGdW5jdGlvbkVudHJ5Ow0KfSBVTldJTkRf
SElTVE9SWV9UQUJMRV9FTlRSWSwgKlBVTldJTkRfSElTVE9SWV9UQUJMRV9FTlRSWTsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1VOV0lORF9ISVNUT1JZX1RBQkxFIHsNCiAgICBEV09SRCBDb3VudDsNCiAg
ICBCWVRFICBMb2NhbEhpbnQ7DQogICAgQllURSAgR2xvYmFsSGludDsNCiAgICBCWVRFICBTZWFy
Y2g7DQogICAgQllURSAgT25jZTsNCiAgICBEV09SRDY0IExvd0FkZHJlc3M7DQogICAgRFdPUkQ2
NCBIaWdoQWRkcmVzczsNCiAgICBVTldJTkRfSElTVE9SWV9UQUJMRV9FTlRSWSBFbnRyeVsxMl07
DQp9IFVOV0lORF9ISVNUT1JZX1RBQkxFLCAqUFVOV0lORF9ISVNUT1JZX1RBQkxFOw0KDQoNCg0K
DQoNCnR5cGVkZWYNCiANClBSVU5USU1FX0ZVTkNUSU9ODQpHRVRfUlVOVElNRV9GVU5DVElPTl9D
QUxMQkFDSyAoDQogICAgICBEV09SRDY0IENvbnRyb2xQYywNCiAgICAgIFBWT0lEIENvbnRleHQN
CiAgICApOw0KdHlwZWRlZiBHRVRfUlVOVElNRV9GVU5DVElPTl9DQUxMQkFDSyAqUEdFVF9SVU5U
SU1FX0ZVTkNUSU9OX0NBTExCQUNLOw0KDQp0eXBlZGVmDQogDQpEV09SRCAgIA0KT1VUX09GX1BS
T0NFU1NfRlVOQ1RJT05fVEFCTEVfQ0FMTEJBQ0sgKA0KICAgICAgSEFORExFIFByb2Nlc3MsDQog
ICAgICBQVk9JRCBUYWJsZUFkZHJlc3MsDQogICAgICBQRFdPUkQgRW50cmllcywNCiAgICAgIFBS
VU5USU1FX0ZVTkNUSU9OKiBGdW5jdGlvbnMNCiAgICApOw0KdHlwZWRlZiBPVVRfT0ZfUFJPQ0VT
U19GVU5DVElPTl9UQUJMRV9DQUxMQkFDSyAqUE9VVF9PRl9QUk9DRVNTX0ZVTkNUSU9OX1RBQkxF
X0NBTExCQUNLOw0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9ESVNQQVRDSEVSX0NP
TlRFWFQgew0KICAgIERXT1JENjQgQ29udHJvbFBjOw0KICAgIERXT1JENjQgSW1hZ2VCYXNlOw0K
ICAgIFBSVU5USU1FX0ZVTkNUSU9OIEZ1bmN0aW9uRW50cnk7DQogICAgRFdPUkQ2NCBFc3RhYmxp
c2hlckZyYW1lOw0KICAgIERXT1JENjQgVGFyZ2V0SXA7DQogICAgUENPTlRFWFQgQ29udGV4dFJl
Y29yZDsNCiAgICBQRVhDRVBUSU9OX1JPVVRJTkUgTGFuZ3VhZ2VIYW5kbGVyOw0KICAgIFBWT0lE
IEhhbmRsZXJEYXRhOw0KICAgIFBVTldJTkRfSElTVE9SWV9UQUJMRSBIaXN0b3J5VGFibGU7DQog
ICAgRFdPUkQgU2NvcGVJbmRleDsNCiAgICBEV09SRCBGaWxsMDsNCn0gRElTUEFUQ0hFUl9DT05U
RVhULCAqUERJU1BBVENIRVJfQ09OVEVYVDsNCg0KDQoNCg0KDQpzdHJ1Y3QgX0VYQ0VQVElPTl9Q
T0lOVEVSUzsNCnR5cGVkZWYNCkxPTkcNCigqUEVYQ0VQVElPTl9GSUxURVIpICgNCiAgICBzdHJ1
Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyAqRXhjZXB0aW9uUG9pbnRlcnMsDQogICAgUFZPSUQgRXN0
YWJsaXNoZXJGcmFtZQ0KICAgICk7DQoNCnR5cGVkZWYNCnZvaWQNCigqUFRFUk1JTkFUSU9OX0hB
TkRMRVIpICgNCiAgICBCT09MRUFOIF9hYm5vcm1hbF90ZXJtaW5hdGlvbiwNCiAgICBQVk9JRCBF
c3RhYmxpc2hlckZyYW1lDQogICAgKTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9LTk9O
Vk9MQVRJTEVfQ09OVEVYVF9QT0lOVEVSUyB7DQogICAgdW5pb24gew0KICAgICAgICBQTTEyOEEg
RmxvYXRpbmdDb250ZXh0WzE2XTsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIFBNMTI4
QSBYbW0wOw0KICAgICAgICAgICAgUE0xMjhBIFhtbTE7DQogICAgICAgICAgICBQTTEyOEEgWG1t
MjsNCiAgICAgICAgICAgIFBNMTI4QSBYbW0zOw0KICAgICAgICAgICAgUE0xMjhBIFhtbTQ7DQog
ICAgICAgICAgICBQTTEyOEEgWG1tNTsNCiAgICAgICAgICAgIFBNMTI4QSBYbW02Ow0KICAgICAg
ICAgICAgUE0xMjhBIFhtbTc7DQogICAgICAgICAgICBQTTEyOEEgWG1tODsNCiAgICAgICAgICAg
IFBNMTI4QSBYbW05Ow0KICAgICAgICAgICAgUE0xMjhBIFhtbTEwOw0KICAgICAgICAgICAgUE0x
MjhBIFhtbTExOw0KICAgICAgICAgICAgUE0xMjhBIFhtbTEyOw0KICAgICAgICAgICAgUE0xMjhB
IFhtbTEzOw0KICAgICAgICAgICAgUE0xMjhBIFhtbTE0Ow0KICAgICAgICAgICAgUE0xMjhBIFht
bTE1Ow0KICAgICAgICB9IDsNCiAgICB9IDsNCg0KICAgIHVuaW9uIHsNCiAgICAgICAgUERXT1JE
NjQgSW50ZWdlckNvbnRleHRbMTZdOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgUERX
T1JENjQgUmF4Ow0KICAgICAgICAgICAgUERXT1JENjQgUmN4Ow0KICAgICAgICAgICAgUERXT1JE
NjQgUmR4Ow0KICAgICAgICAgICAgUERXT1JENjQgUmJ4Ow0KICAgICAgICAgICAgUERXT1JENjQg
UnNwOw0KICAgICAgICAgICAgUERXT1JENjQgUmJwOw0KICAgICAgICAgICAgUERXT1JENjQgUnNp
Ow0KICAgICAgICAgICAgUERXT1JENjQgUmRpOw0KICAgICAgICAgICAgUERXT1JENjQgUjg7DQog
ICAgICAgICAgICBQRFdPUkQ2NCBSOTsNCiAgICAgICAgICAgIFBEV09SRDY0IFIxMDsNCiAgICAg
ICAgICAgIFBEV09SRDY0IFIxMTsNCiAgICAgICAgICAgIFBEV09SRDY0IFIxMjsNCiAgICAgICAg
ICAgIFBEV09SRDY0IFIxMzsNCiAgICAgICAgICAgIFBEV09SRDY0IFIxNDsNCiAgICAgICAgICAg
IFBEV09SRDY0IFIxNTsNCiAgICAgICAgfSA7DQogICAgfSA7DQoNCn0gS05PTlZPTEFUSUxFX0NP
TlRFWFRfUE9JTlRFUlMsICpQS05PTlZPTEFUSUxFX0NPTlRFWFRfUE9JTlRFUlM7DQoNCiNsaW5l
IDQxODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9T
Q09QRV9UQUJMRV9BUk0gew0KICAgIERXT1JEIENvdW50Ow0KICAgIHN0cnVjdA0KICAgIHsNCiAg
ICAgICAgRFdPUkQgQmVnaW5BZGRyZXNzOw0KICAgICAgICBEV09SRCBFbmRBZGRyZXNzOw0KICAg
ICAgICBEV09SRCBIYW5kbGVyQWRkcmVzczsNCiAgICAgICAgRFdPUkQgSnVtcFRhcmdldDsNCiAg
ICB9IFNjb3BlUmVjb3JkWzFdOw0KfSBTQ09QRV9UQUJMRV9BUk0sICpQU0NPUEVfVEFCTEVfQVJN
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NDT1BFX1RB
QkxFX0FSTTY0IHsNCiAgICBEV09SRCBDb3VudDsNCiAgICBzdHJ1Y3QNCiAgICB7DQogICAgICAg
IERXT1JEIEJlZ2luQWRkcmVzczsNCiAgICAgICAgRFdPUkQgRW5kQWRkcmVzczsNCiAgICAgICAg
RFdPUkQgSGFuZGxlckFkZHJlc3M7DQogICAgICAgIERXT1JEIEp1bXBUYXJnZXQ7DQogICAgfSBT
Y29wZVJlY29yZFsxXTsNCn0gU0NPUEVfVEFCTEVfQVJNNjQsICpQU0NPUEVfVEFCTEVfQVJNNjQ7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNjM2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IF9LTk9OVk9MQVRJTEVfQ09OVEVYVF9QT0lOVEVSU19BUk02NCB7DQoNCiAgICBQ
RFdPUkQ2NCBYMTk7DQogICAgUERXT1JENjQgWDIwOw0KICAgIFBEV09SRDY0IFgyMTsNCiAgICBQ
RFdPUkQ2NCBYMjI7DQogICAgUERXT1JENjQgWDIzOw0KICAgIFBEV09SRDY0IFgyNDsNCiAgICBQ
RFdPUkQ2NCBYMjU7DQogICAgUERXT1JENjQgWDI2Ow0KICAgIFBEV09SRDY0IFgyNzsNCiAgICBQ
RFdPUkQ2NCBYMjg7DQogICAgUERXT1JENjQgRnA7DQogICAgUERXT1JENjQgTHI7DQoNCiAgICBQ
RFdPUkQ2NCBEODsNCiAgICBQRFdPUkQ2NCBEOTsNCiAgICBQRFdPUkQ2NCBEMTA7DQogICAgUERX
T1JENjQgRDExOw0KICAgIFBEV09SRDY0IEQxMjsNCiAgICBQRFdPUkQ2NCBEMTM7DQogICAgUERX
T1JENjQgRDE0Ow0KICAgIFBEV09SRDY0IEQxNTsNCg0KfSBLTk9OVk9MQVRJTEVfQ09OVEVYVF9Q
T0lOVEVSU19BUk02NCwgKlBLTk9OVk9MQVRJTEVfQ09OVEVYVF9QT0lOVEVSU19BUk02NDsNCg0K
DQoNCg0KDQojbGluZSA2Mzk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KZXh0ZXJu
ICJDIiB7DQojbGluZSA2NDA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY0MjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0K
DQoNCg0KDQoNCnZvaWQNCl9faW50MmMgKA0KICAgIHZvaWQNCiAgICApOw0KDQojcHJhZ21hIGlu
dHJpbnNpYyhfX2ludDJjKQ0KDQoNCg0KDQoNCiNsaW5lIDY0NDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
dC5oIg0KDQojbGluZSA2NDQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjU1MCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQojbGluZSA2NTUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQp9DQojbGluZSA2NTU1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfTERUX0VOVFJZIHsNCiAgICBXT1JE
ICAgIExpbWl0TG93Ow0KICAgIFdPUkQgICAgQmFzZUxvdzsNCiAgICB1bmlvbiB7DQogICAgICAg
IHN0cnVjdCB7DQogICAgICAgICAgICBCWVRFICAgIEJhc2VNaWQ7DQogICAgICAgICAgICBCWVRF
ICAgIEZsYWdzMTsgICAgIA0KICAgICAgICAgICAgQllURSAgICBGbGFnczI7ICAgICANCiAgICAg
ICAgICAgIEJZVEUgICAgQmFzZUhpOw0KICAgICAgICB9IEJ5dGVzOw0KICAgICAgICBzdHJ1Y3Qg
ew0KICAgICAgICAgICAgRFdPUkQgICBCYXNlTWlkIDogODsNCiAgICAgICAgICAgIERXT1JEICAg
VHlwZSA6IDU7DQogICAgICAgICAgICBEV09SRCAgIERwbCA6IDI7DQogICAgICAgICAgICBEV09S
RCAgIFByZXMgOiAxOw0KICAgICAgICAgICAgRFdPUkQgICBMaW1pdEhpIDogNDsNCiAgICAgICAg
ICAgIERXT1JEICAgU3lzIDogMTsNCiAgICAgICAgICAgIERXT1JEICAgUmVzZXJ2ZWRfMCA6IDE7
DQogICAgICAgICAgICBEV09SRCAgIERlZmF1bHRfQmlnIDogMTsNCiAgICAgICAgICAgIERXT1JE
ICAgR3JhbnVsYXJpdHkgOiAxOw0KICAgICAgICAgICAgRFdPUkQgICBCYXNlSGkgOiA4Ow0KICAg
ICAgICB9IEJpdHM7DQogICAgfSBIaWdoV29yZDsNCn0gTERUX0VOVFJZLCAqUExEVF9FTlRSWTsN
Cg0KI2xpbmUgNzc0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNzc1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiB7DQojbGluZSA3NzY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KX19mb3JjZWlubGluZQ0K
Q0hBUg0KUmVhZEFjcXVpcmU4ICgNCiAgICAgICBDSEFSIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UN
CiAgICApDQoNCnsNCg0KICAgIENIQVIgVmFsdWU7DQoNCiAgICBWYWx1ZSA9ICpTb3VyY2U7DQog
ICAgcmV0dXJuIFZhbHVlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQpDSEFSDQpSZWFkTm9GZW5jZTgg
KA0KICAgICAgIENIQVIgY29uc3Qgdm9sYXRpbGUgKlNvdXJjZQ0KICAgICkNCg0Kew0KDQogICAg
Q0hBUiBWYWx1ZTsNCg0KICAgIFZhbHVlID0gKlNvdXJjZTsNCiAgICByZXR1cm4gVmFsdWU7DQp9
DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRlUmVsZWFzZTggKA0KICAgICAgIENIQVIgdm9s
YXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgQ0hBUiBWYWx1ZQ0KICAgICkNCg0Kew0KDQogICAg
KkRlc3RpbmF0aW9uID0gVmFsdWU7DQogICAgcmV0dXJuOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp2
b2lkDQpXcml0ZU5vRmVuY2U4ICgNCiAgICAgICBDSEFSIHZvbGF0aWxlICpEZXN0aW5hdGlvbiwN
CiAgICAgIENIQVIgVmFsdWUNCiAgICApDQoNCnsNCg0KICAgICpEZXN0aW5hdGlvbiA9IFZhbHVl
Ow0KICAgIHJldHVybjsNCn0NCg0KX19mb3JjZWlubGluZQ0KU0hPUlQNClJlYWRBY3F1aXJlMTYg
KA0KICAgICAgIFNIT1JUIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAg
IFNIT1JUIFZhbHVlOw0KDQogICAgVmFsdWUgPSAqU291cmNlOw0KICAgIHJldHVybiBWYWx1ZTsN
Cn0NCg0KX19mb3JjZWlubGluZQ0KU0hPUlQNClJlYWROb0ZlbmNlMTYgKA0KICAgICAgIFNIT1JU
IGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIFNIT1JUIFZhbHVlOw0K
DQogICAgVmFsdWUgPSAqU291cmNlOw0KICAgIHJldHVybiBWYWx1ZTsNCn0NCg0KX19mb3JjZWlu
bGluZQ0Kdm9pZA0KV3JpdGVSZWxlYXNlMTYgKA0KICAgICAgIFNIT1JUIHZvbGF0aWxlICpEZXN0
aW5hdGlvbiwNCiAgICAgIFNIT1JUIFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICAqRGVzdGluYXRp
b24gPSBWYWx1ZTsNCiAgICByZXR1cm47DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRl
Tm9GZW5jZTE2ICgNCiAgICAgICBTSE9SVCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBT
SE9SVCBWYWx1ZQ0KICAgICkNCg0Kew0KDQogICAgKkRlc3RpbmF0aW9uID0gVmFsdWU7DQogICAg
cmV0dXJuOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQpMT05HDQpSZWFkQWNxdWlyZSAoDQogICAgICAg
TE9ORyBjb25zdCB2b2xhdGlsZSAqU291cmNlDQogICAgKQ0KDQp7DQoNCiAgICBMT05HIFZhbHVl
Ow0KDQogICAgVmFsdWUgPSAqU291cmNlOw0KICAgIHJldHVybiBWYWx1ZTsNCn0NCg0KX19mb3Jj
ZWlubGluZQ0KTE9ORw0KUmVhZE5vRmVuY2UgKA0KICAgICAgIExPTkcgY29uc3Qgdm9sYXRpbGUg
KlNvdXJjZQ0KICAgICkNCg0Kew0KDQogICAgTE9ORyBWYWx1ZTsNCg0KICAgIFZhbHVlID0gKlNv
dXJjZTsNCiAgICByZXR1cm4gVmFsdWU7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRl
UmVsZWFzZSAoDQogICAgICAgTE9ORyB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBMT05H
IFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICAqRGVzdGluYXRpb24gPSBWYWx1ZTsNCiAgICByZXR1
cm47DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRlTm9GZW5jZSAoDQogICAgICAgTE9O
RyB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBMT05HIFZhbHVlDQogICAgKQ0KDQp7DQoN
CiAgICAqRGVzdGluYXRpb24gPSBWYWx1ZTsNCiAgICByZXR1cm47DQp9DQoNCl9fZm9yY2Vpbmxp
bmUNCkxPTkc2NA0KUmVhZEFjcXVpcmU2NCAoDQogICAgICAgTE9ORzY0IGNvbnN0IHZvbGF0aWxl
ICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIExPTkc2NCBWYWx1ZTsNCg0KICAgIFZhbHVlID0g
KlNvdXJjZTsNCiAgICByZXR1cm4gVmFsdWU7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCkxPTkc2NA0K
UmVhZE5vRmVuY2U2NCAoDQogICAgICAgTE9ORzY0IGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAg
ICApDQoNCnsNCg0KICAgIExPTkc2NCBWYWx1ZTsNCg0KICAgIFZhbHVlID0gKlNvdXJjZTsNCiAg
ICByZXR1cm4gVmFsdWU7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRlUmVsZWFzZTY0
ICgNCiAgICAgICBMT05HNjQgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgTE9ORzY0IFZh
bHVlDQogICAgKQ0KDQp7DQoNCiAgICAqRGVzdGluYXRpb24gPSBWYWx1ZTsNCiAgICByZXR1cm47
DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRlTm9GZW5jZTY0ICgNCiAgICAgICBMT05H
NjQgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgTE9ORzY0IFZhbHVlDQogICAgKQ0KDQp7
DQoNCiAgICAqRGVzdGluYXRpb24gPSBWYWx1ZTsNCiAgICByZXR1cm47DQp9DQoNCg0KfQ0KI2xp
bmUgNzk4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiNsaW5lIDc5ODggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KDQoNCg0KDQoNCl9fZm9yY2VpbmxpbmUNCkNIQVINClJlYWRSYXc4ICgNCiAg
ICAgICBDSEFSIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIENIQVIg
VmFsdWU7DQoNCiAgICBWYWx1ZSA9ICooQ0hBUiAqKVNvdXJjZTsNCiAgICByZXR1cm4gVmFsdWU7
DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRlUmF3OCAoDQogICAgICAgQ0hBUiB2b2xh
dGlsZSAqRGVzdGluYXRpb24sDQogICAgICBDSEFSIFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICAq
KENIQVIgKilEZXN0aW5hdGlvbiA9IFZhbHVlOw0KICAgIHJldHVybjsNCn0NCg0KX19mb3JjZWlu
bGluZQ0KU0hPUlQNClJlYWRSYXcxNiAoDQogICAgICAgU0hPUlQgY29uc3Qgdm9sYXRpbGUgKlNv
dXJjZQ0KICAgICkNCg0Kew0KDQogICAgU0hPUlQgVmFsdWU7DQoNCiAgICBWYWx1ZSA9ICooU0hP
UlQgKilTb3VyY2U7DQogICAgcmV0dXJuIFZhbHVlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp2b2lk
DQpXcml0ZVJhdzE2ICgNCiAgICAgICBTSE9SVCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAg
ICBTSE9SVCBWYWx1ZQ0KICAgICkNCg0Kew0KDQogICAgKihTSE9SVCAqKURlc3RpbmF0aW9uID0g
VmFsdWU7DQogICAgcmV0dXJuOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQpMT05HDQpSZWFkUmF3ICgN
CiAgICAgICBMT05HIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIExP
TkcgVmFsdWU7DQoNCiAgICBWYWx1ZSA9ICooTE9ORyAqKVNvdXJjZTsNCiAgICByZXR1cm4gVmFs
dWU7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRlUmF3ICgNCiAgICAgICBMT05HIHZv
bGF0aWxlICpEZXN0aW5hdGlvbiwNCiAgICAgIExPTkcgVmFsdWUNCiAgICApDQoNCnsNCg0KICAg
ICooTE9ORyAqKURlc3RpbmF0aW9uID0gVmFsdWU7DQogICAgcmV0dXJuOw0KfQ0KDQpfX2ZvcmNl
aW5saW5lDQpMT05HNjQNClJlYWRSYXc2NCAoDQogICAgICAgTE9ORzY0IGNvbnN0IHZvbGF0aWxl
ICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIExPTkc2NCBWYWx1ZTsNCg0KICAgIFZhbHVlID0g
KihMT05HNjQgKilTb3VyY2U7DQogICAgcmV0dXJuIFZhbHVlOw0KfQ0KDQpfX2ZvcmNlaW5saW5l
DQp2b2lkDQpXcml0ZVJhdzY0ICgNCiAgICAgICBMT05HNjQgdm9sYXRpbGUgKkRlc3RpbmF0aW9u
LA0KICAgICAgTE9ORzY0IFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICAqKExPTkc2NCAqKURlc3Rp
bmF0aW9uID0gVmFsdWU7DQogICAgcmV0dXJuOw0KfQ0KDQoNCg0KDQoNCl9fZm9yY2VpbmxpbmUN
CkJZVEUgDQpSZWFkVUNoYXJBY3F1aXJlICgNCiAgICAgICBCWVRFICBjb25zdCB2b2xhdGlsZSAq
U291cmNlDQogICAgKQ0KDQp7DQoNCiAgICByZXR1cm4gKEJZVEUgKVJlYWRBY3F1aXJlOCgoUENI
QVIpU291cmNlKTsNCn0NCg0KX19mb3JjZWlubGluZQ0KQllURSANClJlYWRVQ2hhck5vRmVuY2Ug
KA0KICAgICAgIEJZVEUgIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAg
IHJldHVybiAoQllURSApUmVhZE5vRmVuY2U4KChQQ0hBUilTb3VyY2UpOw0KfQ0KDQpfX2ZvcmNl
aW5saW5lDQpCWVRFIA0KUmVhZEJvb2xlYW5BY3F1aXJlICgNCiAgICAgICBCT09MRUFOIGNvbnN0
IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIHJldHVybiAoQk9PTEVBTilSZWFk
QWNxdWlyZTgoKFBDSEFSKVNvdXJjZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCkJZVEUgDQpSZWFk
Qm9vbGVhbk5vRmVuY2UgKA0KICAgICAgIEJPT0xFQU4gY29uc3Qgdm9sYXRpbGUgKlNvdXJjZQ0K
ICAgICkNCg0Kew0KDQogICAgcmV0dXJuIChCT09MRUFOKVJlYWROb0ZlbmNlOCgoUENIQVIpU291
cmNlKTsNCn0NCg0KX19mb3JjZWlubGluZQ0KQllURSANClJlYWRVQ2hhclJhdyAoDQogICAgICAg
QllURSAgY29uc3Qgdm9sYXRpbGUgKlNvdXJjZQ0KICAgICkNCg0Kew0KDQogICAgcmV0dXJuIChC
WVRFIClSZWFkUmF3OCgoUENIQVIpU291cmNlKTsNCn0NCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0K
V3JpdGVVQ2hhclJlbGVhc2UgKA0KICAgICAgIEJZVEUgIHZvbGF0aWxlICpEZXN0aW5hdGlvbiwN
CiAgICAgIEJZVEUgIFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICBXcml0ZVJlbGVhc2U4KChQQ0hB
UilEZXN0aW5hdGlvbiwgKENIQVIpVmFsdWUpOw0KICAgIHJldHVybjsNCn0NCg0KX19mb3JjZWlu
bGluZQ0Kdm9pZA0KV3JpdGVVQ2hhck5vRmVuY2UgKA0KICAgICAgIEJZVEUgIHZvbGF0aWxlICpE
ZXN0aW5hdGlvbiwNCiAgICAgIEJZVEUgIFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICBXcml0ZU5v
RmVuY2U4KChQQ0hBUilEZXN0aW5hdGlvbiwgKENIQVIpVmFsdWUpOw0KICAgIHJldHVybjsNCn0N
Cg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KV3JpdGVCb29sZWFuUmVsZWFzZSAoDQogICAgICAgQk9P
TEVBTiB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBCT09MRUFOIFZhbHVlDQogICAgKQ0K
DQp7DQoNCiAgICBXcml0ZVJlbGVhc2U4KChQQ0hBUilEZXN0aW5hdGlvbiwgKENIQVIpVmFsdWUp
Ow0KICAgIHJldHVybjsNCn0NCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KV3JpdGVCb29sZWFuTm9G
ZW5jZSAoDQogICAgICAgQk9PTEVBTiB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBCT09M
RUFOIFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICBXcml0ZU5vRmVuY2U4KChQQ0hBUilEZXN0aW5h
dGlvbiwgKENIQVIpVmFsdWUpOw0KICAgIHJldHVybjsNCn0NCg0KX19mb3JjZWlubGluZQ0Kdm9p
ZA0KV3JpdGVVQ2hhclJhdyAoDQogICAgICAgQllURSAgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0K
ICAgICAgQllURSAgVmFsdWUNCiAgICApDQoNCnsNCg0KICAgIFdyaXRlUmF3OCgoUENIQVIpRGVz
dGluYXRpb24sIChDSEFSKVZhbHVlKTsNCiAgICByZXR1cm47DQp9DQoNCl9fZm9yY2VpbmxpbmUN
CldPUkQgIA0KUmVhZFVTaG9ydEFjcXVpcmUgKA0KICAgICAgIFdPUkQgICBjb25zdCB2b2xhdGls
ZSAqU291cmNlDQogICAgKQ0KDQp7DQoNCiAgICByZXR1cm4gKFdPUkQgIClSZWFkQWNxdWlyZTE2
KChQU0hPUlQpU291cmNlKTsNCn0NCg0KX19mb3JjZWlubGluZQ0KV09SRCAgDQpSZWFkVVNob3J0
Tm9GZW5jZSAoDQogICAgICAgV09SRCAgIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoN
CnsNCg0KICAgIHJldHVybiAoV09SRCAgKVJlYWROb0ZlbmNlMTYoKFBTSE9SVClTb3VyY2UpOw0K
fQ0KDQpfX2ZvcmNlaW5saW5lDQpXT1JEICANClJlYWRVU2hvcnRSYXcgKA0KICAgICAgIFdPUkQg
ICBjb25zdCB2b2xhdGlsZSAqU291cmNlDQogICAgKQ0KDQp7DQoNCiAgICByZXR1cm4gKFdPUkQg
IClSZWFkUmF3MTYoKFBTSE9SVClTb3VyY2UpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp2b2lkDQpX
cml0ZVVTaG9ydFJlbGVhc2UgKA0KICAgICAgIFdPUkQgICB2b2xhdGlsZSAqRGVzdGluYXRpb24s
DQogICAgICBXT1JEICAgVmFsdWUNCiAgICApDQoNCnsNCg0KICAgIFdyaXRlUmVsZWFzZTE2KChQ
U0hPUlQpRGVzdGluYXRpb24sIChTSE9SVClWYWx1ZSk7DQogICAgcmV0dXJuOw0KfQ0KDQpfX2Zv
cmNlaW5saW5lDQp2b2lkDQpXcml0ZVVTaG9ydE5vRmVuY2UgKA0KICAgICAgIFdPUkQgICB2b2xh
dGlsZSAqRGVzdGluYXRpb24sDQogICAgICBXT1JEICAgVmFsdWUNCiAgICApDQoNCnsNCg0KICAg
IFdyaXRlTm9GZW5jZTE2KChQU0hPUlQpRGVzdGluYXRpb24sIChTSE9SVClWYWx1ZSk7DQogICAg
cmV0dXJuOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp2b2lkDQpXcml0ZVVTaG9ydFJhdyAoDQogICAg
ICAgV09SRCAgIHZvbGF0aWxlICpEZXN0aW5hdGlvbiwNCiAgICAgIFdPUkQgICBWYWx1ZQ0KICAg
ICkNCg0Kew0KDQogICAgV3JpdGVSYXcxNigoUFNIT1JUKURlc3RpbmF0aW9uLCAoU0hPUlQpVmFs
dWUpOw0KICAgIHJldHVybjsNCn0NCg0KX19mb3JjZWlubGluZQ0KRFdPUkQNClJlYWRVTG9uZ0Fj
cXVpcmUgKA0KICAgICAgIERXT1JEIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsN
Cg0KICAgIHJldHVybiAoRFdPUkQpUmVhZEFjcXVpcmUoKFBMT05HKVNvdXJjZSk7DQp9DQoNCl9f
Zm9yY2VpbmxpbmUNCkRXT1JEDQpSZWFkVUxvbmdOb0ZlbmNlICgNCiAgICAgICBEV09SRCBjb25z
dCB2b2xhdGlsZSAqU291cmNlDQogICAgKQ0KDQp7DQoNCiAgICByZXR1cm4gKERXT1JEKVJlYWRO
b0ZlbmNlKChQTE9ORylTb3VyY2UpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQpEV09SRA0KUmVhZFVM
b25nUmF3ICgNCiAgICAgICBEV09SRCBjb25zdCB2b2xhdGlsZSAqU291cmNlDQogICAgKQ0KDQp7
DQoNCiAgICByZXR1cm4gKERXT1JEKVJlYWRSYXcoKFBMT05HKVNvdXJjZSk7DQp9DQoNCl9fZm9y
Y2VpbmxpbmUNCnZvaWQNCldyaXRlVUxvbmdSZWxlYXNlICgNCiAgICAgICBEV09SRCB2b2xhdGls
ZSAqRGVzdGluYXRpb24sDQogICAgICBEV09SRCBWYWx1ZQ0KICAgICkNCg0Kew0KDQogICAgV3Jp
dGVSZWxlYXNlKChQTE9ORylEZXN0aW5hdGlvbiwgKExPTkcpVmFsdWUpOw0KICAgIHJldHVybjsN
Cn0NCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KV3JpdGVVTG9uZ05vRmVuY2UgKA0KICAgICAgIERX
T1JEIHZvbGF0aWxlICpEZXN0aW5hdGlvbiwNCiAgICAgIERXT1JEIFZhbHVlDQogICAgKQ0KDQp7
DQoNCiAgICBXcml0ZU5vRmVuY2UoKFBMT05HKURlc3RpbmF0aW9uLCAoTE9ORylWYWx1ZSk7DQog
ICAgcmV0dXJuOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp2b2lkDQpXcml0ZVVMb25nUmF3ICgNCiAg
ICAgICBEV09SRCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBEV09SRCBWYWx1ZQ0KICAg
ICkNCg0Kew0KDQogICAgV3JpdGVSYXcoKFBMT05HKURlc3RpbmF0aW9uLCAoTE9ORylWYWx1ZSk7
DQogICAgcmV0dXJuOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQpEV09SRDY0DQpSZWFkVUxvbmc2NEFj
cXVpcmUgKA0KICAgICAgIERXT1JENjQgY29uc3Qgdm9sYXRpbGUgKlNvdXJjZQ0KICAgICkNCg0K
ew0KDQogICAgcmV0dXJuIChEV09SRDY0KVJlYWRBY3F1aXJlNjQoKFBMT05HNjQpU291cmNlKTsN
Cn0NCg0KX19mb3JjZWlubGluZQ0KRFdPUkQ2NA0KUmVhZFVMb25nNjROb0ZlbmNlICgNCiAgICAg
ICBEV09SRDY0IGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIHJldHVy
biAoRFdPUkQ2NClSZWFkTm9GZW5jZTY0KChQTE9ORzY0KVNvdXJjZSk7DQp9DQoNCl9fZm9yY2Vp
bmxpbmUNCkRXT1JENjQNClJlYWRVTG9uZzY0UmF3ICgNCiAgICAgICBEV09SRDY0IGNvbnN0IHZv
bGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAgIHJldHVybiAoRFdPUkQ2NClSZWFkUmF3
NjQoKFBMT05HNjQpU291cmNlKTsNCn0NCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KV3JpdGVVTG9u
ZzY0UmVsZWFzZSAoDQogICAgICAgRFdPUkQ2NCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAg
ICBEV09SRDY0IFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICBXcml0ZVJlbGVhc2U2NCgoUExPTkc2
NClEZXN0aW5hdGlvbiwgKExPTkc2NClWYWx1ZSk7DQogICAgcmV0dXJuOw0KfQ0KDQpfX2ZvcmNl
aW5saW5lDQp2b2lkDQpXcml0ZVVMb25nNjROb0ZlbmNlICgNCiAgICAgICBEV09SRDY0IHZvbGF0
aWxlICpEZXN0aW5hdGlvbiwNCiAgICAgIERXT1JENjQgVmFsdWUNCiAgICApDQoNCnsNCg0KICAg
IFdyaXRlTm9GZW5jZTY0KChQTE9ORzY0KURlc3RpbmF0aW9uLCAoTE9ORzY0KVZhbHVlKTsNCiAg
ICByZXR1cm47DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCldyaXRlVUxvbmc2NFJhdyAoDQog
ICAgICAgRFdPUkQ2NCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBEV09SRDY0IFZhbHVl
DQogICAgKQ0KDQp7DQoNCiAgICBXcml0ZVJhdzY0KChQTE9ORzY0KURlc3RpbmF0aW9uLCAoTE9O
RzY0KVZhbHVlKTsNCiAgICByZXR1cm47DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCIN
Cg0KX19mb3JjZWlubGluZQ0KUFZPSUQNClJlYWRQb2ludGVyQWNxdWlyZSAoDQogICAgICAgUFZP
SUQgY29uc3Qgdm9sYXRpbGUgKlNvdXJjZQ0KICAgICkNCg0Kew0KDQogICAgcmV0dXJuIChQVk9J
RClSZWFkQWNxdWlyZTY0KChQTE9ORzY0KVNvdXJjZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUNClBW
T0lEDQpSZWFkUG9pbnRlck5vRmVuY2UgKA0KICAgICAgIFBWT0lEIGNvbnN0IHZvbGF0aWxlICpT
b3VyY2UNCiAgICApDQoNCnsNCg0KICAgIHJldHVybiAoUFZPSUQpUmVhZE5vRmVuY2U2NCgoUExP
Tkc2NClTb3VyY2UpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQpQVk9JRA0KUmVhZFBvaW50ZXJSYXcg
KA0KICAgICAgIFBWT0lEIGNvbnN0IHZvbGF0aWxlICpTb3VyY2UNCiAgICApDQoNCnsNCg0KICAg
IHJldHVybiAoUFZPSUQpUmVhZFJhdzY0KChQTE9ORzY0KVNvdXJjZSk7DQp9DQoNCl9fZm9yY2Vp
bmxpbmUNCnZvaWQNCldyaXRlUG9pbnRlclJlbGVhc2UgKA0KICAgICAgIFBWT0lEIHZvbGF0aWxl
ICpEZXN0aW5hdGlvbiwNCiAgICAgIFBWT0lEIFZhbHVlDQogICAgKQ0KDQp7DQoNCiAgICBXcml0
ZVJlbGVhc2U2NCgoUExPTkc2NClEZXN0aW5hdGlvbiwgKExPTkc2NClWYWx1ZSk7DQogICAgcmV0
dXJuOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp2b2lkDQpXcml0ZVBvaW50ZXJOb0ZlbmNlICgNCiAg
ICAgICBQVk9JRCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBQVk9JRCBWYWx1ZQ0KICAg
ICkNCg0Kew0KDQogICAgV3JpdGVOb0ZlbmNlNjQoKFBMT05HNjQpRGVzdGluYXRpb24sIChMT05H
NjQpVmFsdWUpOw0KICAgIHJldHVybjsNCn0NCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KV3JpdGVQ
b2ludGVyUmF3ICgNCiAgICAgICBQVk9JRCB2b2xhdGlsZSAqRGVzdGluYXRpb24sDQogICAgICBQ
Vk9JRCBWYWx1ZQ0KICAgICkNCg0Kew0KDQogICAgV3JpdGVSYXc2NCgoUExPTkc2NClEZXN0aW5h
dGlvbiwgKExPTkc2NClWYWx1ZSk7DQogICAgcmV0dXJuOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NjUwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubnQuaCINCg0KI2xpbmUgODY1MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KI2xpbmUg
ODY1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjE0KSANCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ2
NjgpIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojbGluZSA4NjYyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA4Njg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IF9XT1c2NF9GTE9BVElOR19TQVZFX0FSRUEgew0KICAgIERX
T1JEICAgQ29udHJvbFdvcmQ7DQogICAgRFdPUkQgICBTdGF0dXNXb3JkOw0KICAgIERXT1JEICAg
VGFnV29yZDsNCiAgICBEV09SRCAgIEVycm9yT2Zmc2V0Ow0KICAgIERXT1JEICAgRXJyb3JTZWxl
Y3RvcjsNCiAgICBEV09SRCAgIERhdGFPZmZzZXQ7DQogICAgRFdPUkQgICBEYXRhU2VsZWN0b3I7
DQogICAgQllURSAgICBSZWdpc3RlckFyZWFbODBdOw0KICAgIERXT1JEICAgQ3IwTnB4U3RhdGU7
DQp9IFdPVzY0X0ZMT0FUSU5HX1NBVkVfQVJFQTsNCg0KdHlwZWRlZiBXT1c2NF9GTE9BVElOR19T
QVZFX0FSRUEgKlBXT1c2NF9GTE9BVElOR19TQVZFX0FSRUE7DQoNCiNsaW5lIDEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxccHNocGFjazQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2so
cHVzaCw0KQ0KDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s0LmgiDQoNCg0K
I2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazQuaCINCiNsaW5lIDM0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHBzaHBhY2s0LmgiDQojbGluZSA4NzEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfV09XNjRfQ09OVEVYVCB7DQoN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIERXT1JE
IENvbnRleHRGbGFnczsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgRFdP
UkQgICBEcjA7DQogICAgRFdPUkQgICBEcjE7DQogICAgRFdPUkQgICBEcjI7DQogICAgRFdPUkQg
ICBEcjM7DQogICAgRFdPUkQgICBEcjY7DQogICAgRFdPUkQgICBEcjc7DQoNCiAgICANCiAgICAN
CiAgICANCiAgICANCg0KICAgIFdPVzY0X0ZMT0FUSU5HX1NBVkVfQVJFQSBGbG9hdFNhdmU7DQoN
CiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIERXT1JEICAgU2VnR3M7DQogICAgRFdPUkQg
ICBTZWdGczsNCiAgICBEV09SRCAgIFNlZ0VzOw0KICAgIERXT1JEICAgU2VnRHM7DQoNCiAgICAN
CiAgICANCiAgICANCiAgICANCg0KICAgIERXT1JEICAgRWRpOw0KICAgIERXT1JEICAgRXNpOw0K
ICAgIERXT1JEICAgRWJ4Ow0KICAgIERXT1JEICAgRWR4Ow0KICAgIERXT1JEICAgRWN4Ow0KICAg
IERXT1JEICAgRWF4Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICBEV09SRCAgIEVi
cDsNCiAgICBEV09SRCAgIEVpcDsNCiAgICBEV09SRCAgIFNlZ0NzOyAgICAgICAgICAgICAgDQog
ICAgRFdPUkQgICBFRmxhZ3M7ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgRXNwOw0KICAgIERX
T1JEICAgU2VnU3M7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIEJZVEUg
ICAgRXh0ZW5kZWRSZWdpc3RlcnNbNTEyXTsNCg0KfSBXT1c2NF9DT05URVhUOw0KDQp0eXBlZGVm
IFdPVzY0X0NPTlRFWFQgKlBXT1c2NF9DT05URVhUOw0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHBvcHBhY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2so
cG9wKQ0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQojbGlu
ZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAzNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwb3BwYWNrLmgiDQojbGluZSA4ODEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQp0
eXBlZGVmIHN0cnVjdCBfV09XNjRfTERUX0VOVFJZIHsNCiAgICBXT1JEICAgIExpbWl0TG93Ow0K
ICAgIFdPUkQgICAgQmFzZUxvdzsNCiAgICB1bmlvbiB7DQogICAgICAgIHN0cnVjdCB7DQogICAg
ICAgICAgICBCWVRFICAgIEJhc2VNaWQ7DQogICAgICAgICAgICBCWVRFICAgIEZsYWdzMTsgICAg
IA0KICAgICAgICAgICAgQllURSAgICBGbGFnczI7ICAgICANCiAgICAgICAgICAgIEJZVEUgICAg
QmFzZUhpOw0KICAgICAgICB9IEJ5dGVzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAg
RFdPUkQgICBCYXNlTWlkIDogODsNCiAgICAgICAgICAgIERXT1JEICAgVHlwZSA6IDU7DQogICAg
ICAgICAgICBEV09SRCAgIERwbCA6IDI7DQogICAgICAgICAgICBEV09SRCAgIFByZXMgOiAxOw0K
ICAgICAgICAgICAgRFdPUkQgICBMaW1pdEhpIDogNDsNCiAgICAgICAgICAgIERXT1JEICAgU3lz
IDogMTsNCiAgICAgICAgICAgIERXT1JEICAgUmVzZXJ2ZWRfMCA6IDE7DQogICAgICAgICAgICBE
V09SRCAgIERlZmF1bHRfQmlnIDogMTsNCiAgICAgICAgICAgIERXT1JEICAgR3JhbnVsYXJpdHkg
OiAxOw0KICAgICAgICAgICAgRFdPUkQgICBCYXNlSGkgOiA4Ow0KICAgICAgICB9IEJpdHM7DQog
ICAgfSBIaWdoV29yZDsNCn0gV09XNjRfTERUX0VOVFJZLCAqUFdPVzY0X0xEVF9FTlRSWTsNCg0K
dHlwZWRlZiBzdHJ1Y3QgX1dPVzY0X0RFU0NSSVBUT1JfVEFCTEVfRU5UUlkgew0KICAgIERXT1JE
IFNlbGVjdG9yOw0KICAgIFdPVzY0X0xEVF9FTlRSWSBEZXNjcmlwdG9yOw0KfSBXT1c2NF9ERVND
UklQVE9SX1RBQkxFX0VOVFJZLCAqUFdPVzY0X0RFU0NSSVBUT1JfVEFCTEVfRU5UUlk7DQoNCg0K
I3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDg4NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfRVhDRVBUSU9OX1JFQ09SRCB7DQogICAgRFdPUkQgICAgRXhjZXB0aW9uQ29kZTsNCiAgICBE
V09SRCBFeGNlcHRpb25GbGFnczsNCiAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9SRUNPUkQgKkV4Y2Vw
dGlvblJlY29yZDsNCiAgICBQVk9JRCBFeGNlcHRpb25BZGRyZXNzOw0KICAgIERXT1JEIE51bWJl
clBhcmFtZXRlcnM7DQogICAgVUxPTkdfUFRSIEV4Y2VwdGlvbkluZm9ybWF0aW9uWzE1XTsNCiAg
ICB9IEVYQ0VQVElPTl9SRUNPUkQ7DQoNCnR5cGVkZWYgRVhDRVBUSU9OX1JFQ09SRCAqUEVYQ0VQ
VElPTl9SRUNPUkQ7DQoNCnR5cGVkZWYgc3RydWN0IF9FWENFUFRJT05fUkVDT1JEMzIgew0KICAg
IERXT1JEICAgIEV4Y2VwdGlvbkNvZGU7DQogICAgRFdPUkQgRXhjZXB0aW9uRmxhZ3M7DQogICAg
RFdPUkQgRXhjZXB0aW9uUmVjb3JkOw0KICAgIERXT1JEIEV4Y2VwdGlvbkFkZHJlc3M7DQogICAg
RFdPUkQgTnVtYmVyUGFyYW1ldGVyczsNCiAgICBEV09SRCBFeGNlcHRpb25JbmZvcm1hdGlvblsx
NV07DQp9IEVYQ0VQVElPTl9SRUNPUkQzMiwgKlBFWENFUFRJT05fUkVDT1JEMzI7DQoNCnR5cGVk
ZWYgc3RydWN0IF9FWENFUFRJT05fUkVDT1JENjQgew0KICAgIERXT1JEICAgIEV4Y2VwdGlvbkNv
ZGU7DQogICAgRFdPUkQgRXhjZXB0aW9uRmxhZ3M7DQogICAgRFdPUkQ2NCBFeGNlcHRpb25SZWNv
cmQ7DQogICAgRFdPUkQ2NCBFeGNlcHRpb25BZGRyZXNzOw0KICAgIERXT1JEIE51bWJlclBhcmFt
ZXRlcnM7DQogICAgRFdPUkQgX191bnVzZWRBbGlnbm1lbnQ7DQogICAgRFdPUkQ2NCBFeGNlcHRp
b25JbmZvcm1hdGlvblsxNV07DQp9IEVYQ0VQVElPTl9SRUNPUkQ2NCwgKlBFWENFUFRJT05fUkVD
T1JENjQ7DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyB7DQog
ICAgUEVYQ0VQVElPTl9SRUNPUkQgRXhjZXB0aW9uUmVjb3JkOw0KICAgIFBDT05URVhUIENvbnRl
eHRSZWNvcmQ7DQp9IEVYQ0VQVElPTl9QT0lOVEVSUywgKlBFWENFUFRJT05fUE9JTlRFUlM7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4OTI3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubnQuaCINCg0KdHlwZWRlZiBQVk9JRCBQQUNDRVNTX1RPS0VOOyAgICAgICAgICAgIA0K
dHlwZWRlZiBQVk9JRCBQU0VDVVJJVFlfREVTQ1JJUFRPUjsgICAgIA0KdHlwZWRlZiBQVk9JRCBQ
U0lEOyAgICAgDQp0eXBlZGVmIFBWT0lEIFBDTEFJTVNfQkxPQjsgICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIERXT1JEIEFDQ0VTU19NQVNLOw0KdHlwZWRlZiBBQ0NFU1NfTUFT
SyAqUEFDQ0VTU19NQVNLOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0dFTkVSSUNfTUFQUElORyB7DQogICAg
QUNDRVNTX01BU0sgR2VuZXJpY1JlYWQ7DQogICAgQUNDRVNTX01BU0sgR2VuZXJpY1dyaXRlOw0K
ICAgIEFDQ0VTU19NQVNLIEdlbmVyaWNFeGVjdXRlOw0KICAgIEFDQ0VTU19NQVNLIEdlbmVyaWNB
bGw7DQp9IEdFTkVSSUNfTUFQUElORzsNCnR5cGVkZWYgR0VORVJJQ19NQVBQSU5HICpQR0VORVJJ
Q19NQVBQSU5HOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwc2hwYWNrNC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFjayhwdXNo
LDQpDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazQuaCINCg0KDQojbGlu
ZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrNC5oIg0KI2xpbmUgMzQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccHNocGFjazQuaCINCiNsaW5lIDkwNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp0
eXBlZGVmIHN0cnVjdCBfTFVJRF9BTkRfQVRUUklCVVRFUyB7DQogICAgTFVJRCBMdWlkOw0KICAg
IERXT1JEIEF0dHJpYnV0ZXM7DQogICAgfSBMVUlEX0FORF9BVFRSSUJVVEVTLCAqIFBMVUlEX0FO
RF9BVFRSSUJVVEVTOw0KdHlwZWRlZiBMVUlEX0FORF9BVFRSSUJVVEVTIExVSURfQU5EX0FUVFJJ
QlVURVNfQVJSQVlbMV07DQp0eXBlZGVmIExVSURfQU5EX0FUVFJJQlVURVNfQVJSQVkgKlBMVUlE
X0FORF9BVFRSSUJVVEVTX0FSUkFZOw0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBh
Y2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQoN
CiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQojbGluZSAzNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3Bw
YWNrLmgiDQojbGluZSA5MDYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1NJRF9JREVOVElGSUVSX0FVVEhPUklUWSB7DQogICAgQllURSAgVmFsdWVb
Nl07DQp9IFNJRF9JREVOVElGSUVSX0FVVEhPUklUWSwgKlBTSURfSURFTlRJRklFUl9BVVRIT1JJ
VFk7DQojbGluZSA5MDk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX1NJRCB7DQogICBCWVRFICBSZXZpc2lvbjsNCiAgIEJZVEUgIFN1YkF1dGhvcml0eUNv
dW50Ow0KICAgU0lEX0lERU5USUZJRVJfQVVUSE9SSVRZIElkZW50aWZpZXJBdXRob3JpdHk7DQoN
Cg0KDQogICBEV09SRCBTdWJBdXRob3JpdHlbMV07DQojbGluZSA5MTExICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubnQuaCINCn0gU0lELCAqUElTSUQ7DQojbGluZSA5MTEzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQu
aCINCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIHVuaW9uIF9TRV9TSUQgew0KICAgIFNJRCBTaWQ7DQogICAgQllURSAgQnVmZmVyWyhzaXpl
b2YoU0lEKSAtIHNpemVvZihEV09SRCkgKyAoKDE1KSAqIHNpemVvZihEV09SRCkpKV07DQp9IFNF
X1NJRCwgKlBTRV9TSUQ7DQoNCiNsaW5lIDkxNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoN
CnR5cGVkZWYgZW51bSBfU0lEX05BTUVfVVNFIHsNCiAgICBTaWRUeXBlVXNlciA9IDEsDQogICAg
U2lkVHlwZUdyb3VwLA0KICAgIFNpZFR5cGVEb21haW4sDQogICAgU2lkVHlwZUFsaWFzLA0KICAg
IFNpZFR5cGVXZWxsS25vd25Hcm91cCwNCiAgICBTaWRUeXBlRGVsZXRlZEFjY291bnQsDQogICAg
U2lkVHlwZUludmFsaWQsDQogICAgU2lkVHlwZVVua25vd24sDQogICAgU2lkVHlwZUNvbXB1dGVy
LA0KICAgIFNpZFR5cGVMYWJlbCwNCiAgICBTaWRUeXBlTG9nb25TZXNzaW9uDQp9IFNJRF9OQU1F
X1VTRSwgKlBTSURfTkFNRV9VU0U7DQoNCnR5cGVkZWYgc3RydWN0IF9TSURfQU5EX0FUVFJJQlVU
RVMgew0KDQoNCg0KICAgIFBTSUQgU2lkOw0KI2xpbmUgOTE3MCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQogICAgRFdPUkQgQXR0cmlidXRlczsNCiAgICB9IFNJRF9BTkRfQVRUUklCVVRFUywgKiBQ
U0lEX0FORF9BVFRSSUJVVEVTOw0KDQp0eXBlZGVmIFNJRF9BTkRfQVRUUklCVVRFUyBTSURfQU5E
X0FUVFJJQlVURVNfQVJSQVlbMV07DQp0eXBlZGVmIFNJRF9BTkRfQVRUUklCVVRFU19BUlJBWSAq
UFNJRF9BTkRfQVRUUklCVVRFU19BUlJBWTsNCg0KDQp0eXBlZGVmIFVMT05HX1BUUiBTSURfSEFT
SF9FTlRSWSwgKlBTSURfSEFTSF9FTlRSWTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NJRF9BTkRfQVRU
UklCVVRFU19IQVNIIHsNCiAgICBEV09SRCBTaWRDb3VudDsNCiAgICBQU0lEX0FORF9BVFRSSUJV
VEVTIFNpZEF0dHI7DQogICAgU0lEX0hBU0hfRU5UUlkgSGFzaFszMl07DQp9IFNJRF9BTkRfQVRU
UklCVVRFU19IQVNILCAqUFNJRF9BTkRfQVRUUklCVVRFU19IQVNIOw0KDQoMDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIGVudW0gew0KDQogICAgV2luTnVsbFNpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDAsDQogICAgV2luV29ybGRTaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDEsDQogICAgV2luTG9jYWxTaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IDIsDQogICAgV2luQ3JlYXRvck93bmVyU2lkICAgICAgICAgICAgICAgICAgICAgICAgICA9IDMs
DQogICAgV2luQ3JlYXRvckdyb3VwU2lkICAgICAgICAgICAgICAgICAgICAgICAgICA9IDQsDQog
ICAgV2luQ3JlYXRvck93bmVyU2VydmVyU2lkICAgICAgICAgICAgICAgICAgICA9IDUsDQogICAg
V2luQ3JlYXRvckdyb3VwU2VydmVyU2lkICAgICAgICAgICAgICAgICAgICA9IDYsDQogICAgV2lu
TnRBdXRob3JpdHlTaWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDcsDQogICAgV2luRGlh
bHVwU2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDgsDQogICAgV2luTmV0d29y
a1NpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDksDQogICAgV2luQmF0Y2hTaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEwLA0KICAgIFdpbkludGVyYWN0aXZl
U2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMSwNCiAgICBXaW5TZXJ2aWNlU2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTIsDQogICAgV2luQW5vbnltb3VzU2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEzLA0KICAgIFdpblByb3h5U2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxNCwNCiAgICBXaW5FbnRlcnByaXNlQ29udHJvbGxl
cnNTaWQgICAgICAgICAgICAgICAgID0gMTUsDQogICAgV2luU2VsZlNpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDE2LA0KICAgIFdpbkF1dGhlbnRpY2F0ZWRVc2VyU2lkICAg
ICAgICAgICAgICAgICAgICAgPSAxNywNCiAgICBXaW5SZXN0cmljdGVkQ29kZVNpZCAgICAgICAg
ICAgICAgICAgICAgICAgID0gMTgsDQogICAgV2luVGVybWluYWxTZXJ2ZXJTaWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IDE5LA0KICAgIFdpblJlbW90ZUxvZ29uSWRTaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAyMCwNCiAgICBXaW5Mb2dvbklkc1NpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMjEsDQogICAgV2luTG9jYWxTeXN0ZW1TaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDIyLA0KICAgIFdpbkxvY2FsU2VydmljZVNpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAyMywNCiAgICBXaW5OZXR3b3JrU2VydmljZVNpZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gMjQsDQogICAgV2luQnVpbHRpbkRvbWFpblNpZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDI1LA0KICAgIFdpbkJ1aWx0aW5BZG1pbmlzdHJhdG9yc1NpZCAgICAgICAgICAgICAgICAg
PSAyNiwNCiAgICBXaW5CdWlsdGluVXNlcnNTaWQgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MjcsDQogICAgV2luQnVpbHRpbkd1ZXN0c1NpZCAgICAgICAgICAgICAgICAgICAgICAgICA9IDI4
LA0KICAgIFdpbkJ1aWx0aW5Qb3dlclVzZXJzU2lkICAgICAgICAgICAgICAgICAgICAgPSAyOSwN
CiAgICBXaW5CdWlsdGluQWNjb3VudE9wZXJhdG9yc1NpZCAgICAgICAgICAgICAgID0gMzAsDQog
ICAgV2luQnVpbHRpblN5c3RlbU9wZXJhdG9yc1NpZCAgICAgICAgICAgICAgICA9IDMxLA0KICAg
IFdpbkJ1aWx0aW5QcmludE9wZXJhdG9yc1NpZCAgICAgICAgICAgICAgICAgPSAzMiwNCiAgICBX
aW5CdWlsdGluQmFja3VwT3BlcmF0b3JzU2lkICAgICAgICAgICAgICAgID0gMzMsDQogICAgV2lu
QnVpbHRpblJlcGxpY2F0b3JTaWQgICAgICAgICAgICAgICAgICAgICA9IDM0LA0KICAgIFdpbkJ1
aWx0aW5QcmVXaW5kb3dzMjAwMENvbXBhdGlibGVBY2Nlc3NTaWQgPSAzNSwNCiAgICBXaW5CdWls
dGluUmVtb3RlRGVza3RvcFVzZXJzU2lkICAgICAgICAgICAgID0gMzYsDQogICAgV2luQnVpbHRp
bk5ldHdvcmtDb25maWd1cmF0aW9uT3BlcmF0b3JzU2lkICA9IDM3LA0KICAgIFdpbkFjY291bnRB
ZG1pbmlzdHJhdG9yU2lkICAgICAgICAgICAgICAgICAgPSAzOCwNCiAgICBXaW5BY2NvdW50R3Vl
c3RTaWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMzksDQogICAgV2luQWNjb3VudEtyYnRn
dFNpZCAgICAgICAgICAgICAgICAgICAgICAgICA9IDQwLA0KICAgIFdpbkFjY291bnREb21haW5B
ZG1pbnNTaWQgICAgICAgICAgICAgICAgICAgPSA0MSwNCiAgICBXaW5BY2NvdW50RG9tYWluVXNl
cnNTaWQgICAgICAgICAgICAgICAgICAgID0gNDIsDQogICAgV2luQWNjb3VudERvbWFpbkd1ZXN0
c1NpZCAgICAgICAgICAgICAgICAgICA9IDQzLA0KICAgIFdpbkFjY291bnRDb21wdXRlcnNTaWQg
ICAgICAgICAgICAgICAgICAgICAgPSA0NCwNCiAgICBXaW5BY2NvdW50Q29udHJvbGxlcnNTaWQg
ICAgICAgICAgICAgICAgICAgID0gNDUsDQogICAgV2luQWNjb3VudENlcnRBZG1pbnNTaWQgICAg
ICAgICAgICAgICAgICAgICA9IDQ2LA0KICAgIFdpbkFjY291bnRTY2hlbWFBZG1pbnNTaWQgICAg
ICAgICAgICAgICAgICAgPSA0NywNCiAgICBXaW5BY2NvdW50RW50ZXJwcmlzZUFkbWluc1NpZCAg
ICAgICAgICAgICAgID0gNDgsDQogICAgV2luQWNjb3VudFBvbGljeUFkbWluc1NpZCAgICAgICAg
ICAgICAgICAgICA9IDQ5LA0KICAgIFdpbkFjY291bnRSYXNBbmRJYXNTZXJ2ZXJzU2lkICAgICAg
ICAgICAgICAgPSA1MCwNCiAgICBXaW5OVExNQXV0aGVudGljYXRpb25TaWQgICAgICAgICAgICAg
ICAgICAgID0gNTEsDQogICAgV2luRGlnZXN0QXV0aGVudGljYXRpb25TaWQgICAgICAgICAgICAg
ICAgICA9IDUyLA0KICAgIFdpblNDaGFubmVsQXV0aGVudGljYXRpb25TaWQgICAgICAgICAgICAg
ICAgPSA1MywNCiAgICBXaW5UaGlzT3JnYW5pemF0aW9uU2lkICAgICAgICAgICAgICAgICAgICAg
ID0gNTQsDQogICAgV2luT3RoZXJPcmdhbml6YXRpb25TaWQgICAgICAgICAgICAgICAgICAgICA9
IDU1LA0KICAgIFdpbkJ1aWx0aW5JbmNvbWluZ0ZvcmVzdFRydXN0QnVpbGRlcnNTaWQgICAgPSA1
NiwNCiAgICBXaW5CdWlsdGluUGVyZk1vbml0b3JpbmdVc2Vyc1NpZCAgICAgICAgICAgID0gNTcs
DQogICAgV2luQnVpbHRpblBlcmZMb2dnaW5nVXNlcnNTaWQgICAgICAgICAgICAgICA9IDU4LA0K
ICAgIFdpbkJ1aWx0aW5BdXRob3JpemF0aW9uQWNjZXNzU2lkICAgICAgICAgICAgPSA1OSwNCiAg
ICBXaW5CdWlsdGluVGVybWluYWxTZXJ2ZXJMaWNlbnNlU2VydmVyc1NpZCAgID0gNjAsDQogICAg
V2luQnVpbHRpbkRDT01Vc2Vyc1NpZCAgICAgICAgICAgICAgICAgICAgICA9IDYxLA0KICAgIFdp
bkJ1aWx0aW5JVXNlcnNTaWQgICAgICAgICAgICAgICAgICAgICAgICAgPSA2MiwNCiAgICBXaW5J
VXNlclNpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNjMsDQogICAgV2luQnVp
bHRpbkNyeXB0b09wZXJhdG9yc1NpZCAgICAgICAgICAgICAgICA9IDY0LA0KICAgIFdpblVudHJ1
c3RlZExhYmVsU2lkICAgICAgICAgICAgICAgICAgICAgICAgPSA2NSwNCiAgICBXaW5Mb3dMYWJl
bFNpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNjYsDQogICAgV2luTWVkaXVtTGFi
ZWxTaWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDY3LA0KICAgIFdpbkhpZ2hMYWJlbFNp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA2OCwNCiAgICBXaW5TeXN0ZW1MYWJlbFNp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gNjksDQogICAgV2luV3JpdGVSZXN0cmljdGVk
Q29kZVNpZCAgICAgICAgICAgICAgICAgICA9IDcwLA0KICAgIFdpbkNyZWF0b3JPd25lclJpZ2h0
c1NpZCAgICAgICAgICAgICAgICAgICAgPSA3MSwNCiAgICBXaW5DYWNoZWFibGVQcmluY2lwYWxz
R3JvdXBTaWQgICAgICAgICAgICAgID0gNzIsDQogICAgV2luTm9uQ2FjaGVhYmxlUHJpbmNpcGFs
c0dyb3VwU2lkICAgICAgICAgICA9IDczLA0KICAgIFdpbkVudGVycHJpc2VSZWFkb25seUNvbnRy
b2xsZXJzU2lkICAgICAgICAgPSA3NCwNCiAgICBXaW5BY2NvdW50UmVhZG9ubHlDb250cm9sbGVy
c1NpZCAgICAgICAgICAgID0gNzUsDQogICAgV2luQnVpbHRpbkV2ZW50TG9nUmVhZGVyc0dyb3Vw
ICAgICAgICAgICAgICA9IDc2LA0KICAgIFdpbk5ld0VudGVycHJpc2VSZWFkb25seUNvbnRyb2xs
ZXJzU2lkICAgICAgPSA3NywNCiAgICBXaW5CdWlsdGluQ2VydFN2Y0RDb21BY2Nlc3NHcm91cCAg
ICAgICAgICAgID0gNzgsDQogICAgV2luTWVkaXVtUGx1c0xhYmVsU2lkICAgICAgICAgICAgICAg
ICAgICAgICA9IDc5LA0KICAgIFdpbkxvY2FsTG9nb25TaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSA4MCwNCiAgICBXaW5Db25zb2xlTG9nb25TaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gODEsDQogICAgV2luVGhpc09yZ2FuaXphdGlvbkNlcnRpZmljYXRlU2lkICAgICAgICAg
ICA9IDgyLA0KICAgIFdpbkFwcGxpY2F0aW9uUGFja2FnZUF1dGhvcml0eVNpZCAgICAgICAgICAg
PSA4MywNCiAgICBXaW5CdWlsdGluQW55UGFja2FnZVNpZCAgICAgICAgICAgICAgICAgICAgID0g
ODQsDQogICAgV2luQ2FwYWJpbGl0eUludGVybmV0Q2xpZW50U2lkICAgICAgICAgICAgICA9IDg1
LA0KICAgIFdpbkNhcGFiaWxpdHlJbnRlcm5ldENsaWVudFNlcnZlclNpZCAgICAgICAgPSA4NiwN
CiAgICBXaW5DYXBhYmlsaXR5UHJpdmF0ZU5ldHdvcmtDbGllbnRTZXJ2ZXJTaWQgID0gODcsDQog
ICAgV2luQ2FwYWJpbGl0eVBpY3R1cmVzTGlicmFyeVNpZCAgICAgICAgICAgICA9IDg4LA0KICAg
IFdpbkNhcGFiaWxpdHlWaWRlb3NMaWJyYXJ5U2lkICAgICAgICAgICAgICAgPSA4OSwNCiAgICBX
aW5DYXBhYmlsaXR5TXVzaWNMaWJyYXJ5U2lkICAgICAgICAgICAgICAgID0gOTAsDQogICAgV2lu
Q2FwYWJpbGl0eURvY3VtZW50c0xpYnJhcnlTaWQgICAgICAgICAgICA9IDkxLA0KICAgIFdpbkNh
cGFiaWxpdHlTaGFyZWRVc2VyQ2VydGlmaWNhdGVzU2lkICAgICAgPSA5MiwNCiAgICBXaW5DYXBh
YmlsaXR5RW50ZXJwcmlzZUF1dGhlbnRpY2F0aW9uU2lkICAgID0gOTMsDQogICAgV2luQ2FwYWJp
bGl0eVJlbW92YWJsZVN0b3JhZ2VTaWQgICAgICAgICAgICA9IDk0LA0KICAgIFdpbkJ1aWx0aW5S
RFNSZW1vdGVBY2Nlc3NTZXJ2ZXJzU2lkICAgICAgICAgPSA5NSwNCiAgICBXaW5CdWlsdGluUkRT
RW5kcG9pbnRTZXJ2ZXJzU2lkICAgICAgICAgICAgID0gOTYsDQogICAgV2luQnVpbHRpblJEU01h
bmFnZW1lbnRTZXJ2ZXJzU2lkICAgICAgICAgICA9IDk3LA0KICAgIFdpblVzZXJNb2RlRHJpdmVy
c1NpZCAgICAgICAgICAgICAgICAgICAgICAgPSA5OCwNCiAgICBXaW5CdWlsdGluSHlwZXJWQWRt
aW5zU2lkICAgICAgICAgICAgICAgICAgID0gOTksDQogICAgV2luQWNjb3VudENsb25lYWJsZUNv
bnRyb2xsZXJzU2lkICAgICAgICAgICA9IDEwMCwNCiAgICBXaW5CdWlsdGluQWNjZXNzQ29udHJv
bEFzc2lzdGFuY2VPcGVyYXRvcnNTaWQgPSAxMDEsDQogICAgV2luQnVpbHRpblJlbW90ZU1hbmFn
ZW1lbnRVc2Vyc1NpZCAgICAgICAgICA9IDEwMiwNCiAgICBXaW5BdXRoZW50aWNhdGlvbkF1dGhv
cml0eUFzc2VydGVkU2lkICAgICAgID0gMTAzLA0KICAgIFdpbkF1dGhlbnRpY2F0aW9uU2Vydmlj
ZUFzc2VydGVkU2lkICAgICAgICAgPSAxMDQsDQogICAgV2luTG9jYWxBY2NvdW50U2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDEwNSwNCiAgICBXaW5Mb2NhbEFjY291bnRBbmRBZG1pbmlz
dHJhdG9yU2lkICAgICAgICAgID0gMTA2LA0KICAgIFdpbkFjY291bnRQcm90ZWN0ZWRVc2Vyc1Np
ZCAgICAgICAgICAgICAgICAgPSAxMDcsDQogICAgV2luQ2FwYWJpbGl0eUFwcG9pbnRtZW50c1Np
ZCAgICAgICAgICAgICAgICA9IDEwOCwNCiAgICBXaW5DYXBhYmlsaXR5Q29udGFjdHNTaWQgICAg
ICAgICAgICAgICAgICAgID0gMTA5LA0KICAgIFdpbkFjY291bnREZWZhdWx0U3lzdGVtTWFuYWdl
ZFNpZCAgICAgICAgICAgPSAxMTAsDQogICAgV2luQnVpbHRpbkRlZmF1bHRTeXN0ZW1NYW5hZ2Vk
R3JvdXBTaWQgICAgICA9IDExMSwNCiAgICBXaW5CdWlsdGluU3RvcmFnZVJlcGxpY2FBZG1pbnNT
aWQgICAgICAgICAgID0gMTEyLA0KICAgIFdpbkFjY291bnRLZXlBZG1pbnNTaWQgICAgICAgICAg
ICAgICAgICAgICAgPSAxMTMsDQogICAgV2luQWNjb3VudEVudGVycHJpc2VLZXlBZG1pbnNTaWQg
ICAgICAgICAgICA9IDExNCwNCiAgICBXaW5BdXRoZW50aWNhdGlvbktleVRydXN0U2lkICAgICAg
ICAgICAgICAgID0gMTE1LA0KICAgIFdpbkF1dGhlbnRpY2F0aW9uS2V5UHJvcGVydHlNRkFTaWQg
ICAgICAgICAgPSAxMTYsDQogICAgV2luQXV0aGVudGljYXRpb25LZXlQcm9wZXJ0eUF0dGVzdGF0
aW9uU2lkICA9IDExNywNCiAgICBXaW5BdXRoZW50aWNhdGlvbkZyZXNoS2V5QXV0aFNpZCAgICAg
ICAgICAgID0gMTE4LA0KICAgIFdpbkJ1aWx0aW5EZXZpY2VPd25lcnNTaWQgICAgICAgICAgICAg
ICAgICAgPSAxMTksDQp9IFdFTExfS05PV05fU0lEX1RZUEU7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCgwNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBfQUNMIHsNCiAgICBCWVRFICBBY2xSZXZpc2lvbjsNCiAgICBC
WVRFICBTYnoxOw0KICAgIFdPUkQgICBBY2xTaXplOw0KICAgIFdPUkQgICBBY2VDb3VudDsNCiAg
ICBXT1JEICAgU2J6MjsNCn0gQUNMOw0KdHlwZWRlZiBBQ0wgKlBBQ0w7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9BQ0VfSEVBREVS
IHsNCiAgICBCWVRFICBBY2VUeXBlOw0KICAgIEJZVEUgIEFjZUZsYWdzOw0KICAgIFdPUkQgICBB
Y2VTaXplOw0KfSBBQ0VfSEVBREVSOw0KdHlwZWRlZiBBQ0VfSEVBREVSICpQQUNFX0hFQURFUjsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBf
QUNDRVNTX0FMTE9XRURfQUNFIHsNCiAgICBBQ0VfSEVBREVSIEhlYWRlcjsNCiAgICBBQ0NFU1Nf
TUFTSyBNYXNrOw0KICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBBQ0NFU1NfQUxMT1dFRF9BQ0U7DQoN
CnR5cGVkZWYgQUNDRVNTX0FMTE9XRURfQUNFICpQQUNDRVNTX0FMTE9XRURfQUNFOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfQUNDRVNTX0RFTklFRF9BQ0Ugew0KICAgIEFDRV9IRUFERVIgSGVhZGVyOw0K
ICAgIEFDQ0VTU19NQVNLIE1hc2s7DQogICAgRFdPUkQgU2lkU3RhcnQ7DQp9IEFDQ0VTU19ERU5J
RURfQUNFOw0KdHlwZWRlZiBBQ0NFU1NfREVOSUVEX0FDRSAqUEFDQ0VTU19ERU5JRURfQUNFOw0K
DQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX0FVRElUX0FDRSB7DQogICAgQUNFX0hFQURFUiBIZWFk
ZXI7DQogICAgQUNDRVNTX01BU0sgTWFzazsNCiAgICBEV09SRCBTaWRTdGFydDsNCn0gU1lTVEVN
X0FVRElUX0FDRTsNCnR5cGVkZWYgU1lTVEVNX0FVRElUX0FDRSAqUFNZU1RFTV9BVURJVF9BQ0U7
DQoNCnR5cGVkZWYgc3RydWN0IF9TWVNURU1fQUxBUk1fQUNFIHsNCiAgICBBQ0VfSEVBREVSIEhl
YWRlcjsNCiAgICBBQ0NFU1NfTUFTSyBNYXNrOw0KICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBTWVNU
RU1fQUxBUk1fQUNFOw0KdHlwZWRlZiBTWVNURU1fQUxBUk1fQUNFICpQU1lTVEVNX0FMQVJNX0FD
RTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9SRVNPVVJDRV9BVFRSSUJVVEVfQUNFIHsNCiAg
ICBBQ0VfSEVBREVSIEhlYWRlcjsNCiAgICBBQ0NFU1NfTUFTSyBNYXNrOw0KICAgIERXT1JEIFNp
ZFN0YXJ0Ow0KICAgIA0KfSBTWVNURU1fUkVTT1VSQ0VfQVRUUklCVVRFX0FDRSwgKlBTWVNURU1f
UkVTT1VSQ0VfQVRUUklCVVRFX0FDRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9TQ09QRURf
UE9MSUNZX0lEX0FDRSB7DQogICAgQUNFX0hFQURFUiBIZWFkZXI7DQogICAgQUNDRVNTX01BU0sg
TWFzazsNCiAgICBEV09SRCBTaWRTdGFydDsNCn0gU1lTVEVNX1NDT1BFRF9QT0xJQ1lfSURfQUNF
LCAqUFNZU1RFTV9TQ09QRURfUE9MSUNZX0lEX0FDRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RF
TV9NQU5EQVRPUllfTEFCRUxfQUNFIHsNCiAgICBBQ0VfSEVBREVSIEhlYWRlcjsNCiAgICBBQ0NF
U1NfTUFTSyBNYXNrOw0KICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBTWVNURU1fTUFOREFUT1JZX0xB
QkVMX0FDRSwgKlBTWVNURU1fTUFOREFUT1JZX0xBQkVMX0FDRTsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1NZU1RFTV9QUk9DRVNTX1RSVVNUX0xBQkVMX0FDRSB7DQogICAgQUNFX0hFQURFUiBIZWFkZXI7
DQogICAgQUNDRVNTX01BU0sgTWFzazsNCiAgICBEV09SRCBTaWRTdGFydDsNCn0gU1lTVEVNX1BS
T0NFU1NfVFJVU1RfTEFCRUxfQUNFLCAqUFNZU1RFTV9QUk9DRVNTX1RSVVNUX0xBQkVMX0FDRTsN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9BQ0NFU1NfRklMVEVSX0FDRSB7DQogICAgQUNFX0hF
QURFUiBIZWFkZXI7DQogICAgQUNDRVNTX01BU0sgTWFzazsNCiAgICBEV09SRCBTaWRTdGFydDsN
CiAgICANCn0gU1lTVEVNX0FDQ0VTU19GSUxURVJfQUNFLCAqUFNZU1RFTV9BQ0NFU1NfRklMVEVS
X0FDRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBf
QUNDRVNTX0FMTE9XRURfT0JKRUNUX0FDRSB7DQogICAgQUNFX0hFQURFUiBIZWFkZXI7DQogICAg
QUNDRVNTX01BU0sgTWFzazsNCiAgICBEV09SRCBGbGFnczsNCiAgICBHVUlEIE9iamVjdFR5cGU7
DQogICAgR1VJRCBJbmhlcml0ZWRPYmplY3RUeXBlOw0KICAgIERXT1JEIFNpZFN0YXJ0Ow0KfSBB
Q0NFU1NfQUxMT1dFRF9PQkpFQ1RfQUNFLCAqUEFDQ0VTU19BTExPV0VEX09CSkVDVF9BQ0U7DQoN
CnR5cGVkZWYgc3RydWN0IF9BQ0NFU1NfREVOSUVEX09CSkVDVF9BQ0Ugew0KICAgIEFDRV9IRUFE
RVIgSGVhZGVyOw0KICAgIEFDQ0VTU19NQVNLIE1hc2s7DQogICAgRFdPUkQgRmxhZ3M7DQogICAg
R1VJRCBPYmplY3RUeXBlOw0KICAgIEdVSUQgSW5oZXJpdGVkT2JqZWN0VHlwZTsNCiAgICBEV09S
RCBTaWRTdGFydDsNCn0gQUNDRVNTX0RFTklFRF9PQkpFQ1RfQUNFLCAqUEFDQ0VTU19ERU5JRURf
T0JKRUNUX0FDRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9BVURJVF9PQkpFQ1RfQUNFIHsN
CiAgICBBQ0VfSEVBREVSIEhlYWRlcjsNCiAgICBBQ0NFU1NfTUFTSyBNYXNrOw0KICAgIERXT1JE
IEZsYWdzOw0KICAgIEdVSUQgT2JqZWN0VHlwZTsNCiAgICBHVUlEIEluaGVyaXRlZE9iamVjdFR5
cGU7DQogICAgRFdPUkQgU2lkU3RhcnQ7DQp9IFNZU1RFTV9BVURJVF9PQkpFQ1RfQUNFLCAqUFNZ
U1RFTV9BVURJVF9PQkpFQ1RfQUNFOw0KDQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX0FMQVJNX09C
SkVDVF9BQ0Ugew0KICAgIEFDRV9IRUFERVIgSGVhZGVyOw0KICAgIEFDQ0VTU19NQVNLIE1hc2s7
DQogICAgRFdPUkQgRmxhZ3M7DQogICAgR1VJRCBPYmplY3RUeXBlOw0KICAgIEdVSUQgSW5oZXJp
dGVkT2JqZWN0VHlwZTsNCiAgICBEV09SRCBTaWRTdGFydDsNCn0gU1lTVEVNX0FMQVJNX09CSkVD
VF9BQ0UsICpQU1lTVEVNX0FMQVJNX09CSkVDVF9BQ0U7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBfQUNDRVNTX0FMTE9XRURfQ0FMTEJBQ0tfQUNFIHsNCiAgICBBQ0VfSEVBREVSIEhlYWRl
cjsNCiAgICBBQ0NFU1NfTUFTSyBNYXNrOw0KICAgIERXT1JEIFNpZFN0YXJ0Ow0KICAgIA0KfSBB
Q0NFU1NfQUxMT1dFRF9DQUxMQkFDS19BQ0UsICpQQUNDRVNTX0FMTE9XRURfQ0FMTEJBQ0tfQUNF
Ow0KDQp0eXBlZGVmIHN0cnVjdCBfQUNDRVNTX0RFTklFRF9DQUxMQkFDS19BQ0Ugew0KICAgIEFD
RV9IRUFERVIgSGVhZGVyOw0KICAgIEFDQ0VTU19NQVNLIE1hc2s7DQogICAgRFdPUkQgU2lkU3Rh
cnQ7DQogICAgDQp9IEFDQ0VTU19ERU5JRURfQ0FMTEJBQ0tfQUNFLCAqUEFDQ0VTU19ERU5JRURf
Q0FMTEJBQ0tfQUNFOw0KDQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX0FVRElUX0NBTExCQUNLX0FD
RSB7DQogICAgQUNFX0hFQURFUiBIZWFkZXI7DQogICAgQUNDRVNTX01BU0sgTWFzazsNCiAgICBE
V09SRCBTaWRTdGFydDsNCiAgICANCn0gU1lTVEVNX0FVRElUX0NBTExCQUNLX0FDRSwgKlBTWVNU
RU1fQVVESVRfQ0FMTEJBQ0tfQUNFOw0KDQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX0FMQVJNX0NB
TExCQUNLX0FDRSB7DQogICAgQUNFX0hFQURFUiBIZWFkZXI7DQogICAgQUNDRVNTX01BU0sgTWFz
azsNCiAgICBEV09SRCBTaWRTdGFydDsNCiAgICANCn0gU1lTVEVNX0FMQVJNX0NBTExCQUNLX0FD
RSwgKlBTWVNURU1fQUxBUk1fQ0FMTEJBQ0tfQUNFOw0KDQp0eXBlZGVmIHN0cnVjdCBfQUNDRVNT
X0FMTE9XRURfQ0FMTEJBQ0tfT0JKRUNUX0FDRSB7DQogICAgQUNFX0hFQURFUiBIZWFkZXI7DQog
ICAgQUNDRVNTX01BU0sgTWFzazsNCiAgICBEV09SRCBGbGFnczsNCiAgICBHVUlEIE9iamVjdFR5
cGU7DQogICAgR1VJRCBJbmhlcml0ZWRPYmplY3RUeXBlOw0KICAgIERXT1JEIFNpZFN0YXJ0Ow0K
ICAgIA0KfSBBQ0NFU1NfQUxMT1dFRF9DQUxMQkFDS19PQkpFQ1RfQUNFLCAqUEFDQ0VTU19BTExP
V0VEX0NBTExCQUNLX09CSkVDVF9BQ0U7DQoNCnR5cGVkZWYgc3RydWN0IF9BQ0NFU1NfREVOSUVE
X0NBTExCQUNLX09CSkVDVF9BQ0Ugew0KICAgIEFDRV9IRUFERVIgSGVhZGVyOw0KICAgIEFDQ0VT
U19NQVNLIE1hc2s7DQogICAgRFdPUkQgRmxhZ3M7DQogICAgR1VJRCBPYmplY3RUeXBlOw0KICAg
IEdVSUQgSW5oZXJpdGVkT2JqZWN0VHlwZTsNCiAgICBEV09SRCBTaWRTdGFydDsNCiAgICANCn0g
QUNDRVNTX0RFTklFRF9DQUxMQkFDS19PQkpFQ1RfQUNFLCAqUEFDQ0VTU19ERU5JRURfQ0FMTEJB
Q0tfT0JKRUNUX0FDRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9BVURJVF9DQUxMQkFDS19P
QkpFQ1RfQUNFIHsNCiAgICBBQ0VfSEVBREVSIEhlYWRlcjsNCiAgICBBQ0NFU1NfTUFTSyBNYXNr
Ow0KICAgIERXT1JEIEZsYWdzOw0KICAgIEdVSUQgT2JqZWN0VHlwZTsNCiAgICBHVUlEIEluaGVy
aXRlZE9iamVjdFR5cGU7DQogICAgRFdPUkQgU2lkU3RhcnQ7DQogICAgDQp9IFNZU1RFTV9BVURJ
VF9DQUxMQkFDS19PQkpFQ1RfQUNFLCAqUFNZU1RFTV9BVURJVF9DQUxMQkFDS19PQkpFQ1RfQUNF
Ow0KDQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX0FMQVJNX0NBTExCQUNLX09CSkVDVF9BQ0Ugew0K
ICAgIEFDRV9IRUFERVIgSGVhZGVyOw0KICAgIEFDQ0VTU19NQVNLIE1hc2s7DQogICAgRFdPUkQg
RmxhZ3M7DQogICAgR1VJRCBPYmplY3RUeXBlOw0KICAgIEdVSUQgSW5oZXJpdGVkT2JqZWN0VHlw
ZTsNCiAgICBEV09SRCBTaWRTdGFydDsNCiAgICANCn0gU1lTVEVNX0FMQVJNX0NBTExCQUNLX09C
SkVDVF9BQ0UsICpQU1lTVEVNX0FMQVJNX0NBTExCQUNLX09CSkVDVF9BQ0U7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gX0FDTF9JTkZPUk1BVElPTl9DTEFTUyB7
DQogICAgQWNsUmV2aXNpb25JbmZvcm1hdGlvbiA9IDEsDQogICAgQWNsU2l6ZUluZm9ybWF0aW9u
DQp9IEFDTF9JTkZPUk1BVElPTl9DTEFTUzsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9B
Q0xfUkVWSVNJT05fSU5GT1JNQVRJT04gew0KICAgIERXT1JEIEFjbFJldmlzaW9uOw0KfSBBQ0xf
UkVWSVNJT05fSU5GT1JNQVRJT047DQp0eXBlZGVmIEFDTF9SRVZJU0lPTl9JTkZPUk1BVElPTiAq
UEFDTF9SRVZJU0lPTl9JTkZPUk1BVElPTjsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfQUNM
X1NJWkVfSU5GT1JNQVRJT04gew0KICAgIERXT1JEIEFjZUNvdW50Ow0KICAgIERXT1JEIEFjbEJ5
dGVzSW5Vc2U7DQogICAgRFdPUkQgQWNsQnl0ZXNGcmVlOw0KfSBBQ0xfU0laRV9JTkZPUk1BVElP
TjsNCnR5cGVkZWYgQUNMX1NJWkVfSU5GT1JNQVRJT04gKlBBQ0xfU0laRV9JTkZPUk1BVElPTjsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIFdPUkQgICBTRUNVUklUWV9ERVNDUklQVE9SX0NPTlRST0wsICpQU0VDVVJJVFlfREVTQ1JJ
UFRPUl9DT05UUk9MOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TRUNVUklUWV9ERVNDUklQVE9S
X1JFTEFUSVZFIHsNCiAgICBCWVRFICBSZXZpc2lvbjsNCiAgICBCWVRFICBTYnoxOw0KICAgIFNF
Q1VSSVRZX0RFU0NSSVBUT1JfQ09OVFJPTCBDb250cm9sOw0KICAgIERXT1JEIE93bmVyOw0KICAg
IERXT1JEIEdyb3VwOw0KICAgIERXT1JEIFNhY2w7DQogICAgRFdPUkQgRGFjbDsNCiAgICB9IFNF
Q1VSSVRZX0RFU0NSSVBUT1JfUkVMQVRJVkUsICpQSVNFQ1VSSVRZX0RFU0NSSVBUT1JfUkVMQVRJ
VkU7DQoNCnR5cGVkZWYgc3RydWN0IF9TRUNVUklUWV9ERVNDUklQVE9SIHsNCiAgIEJZVEUgIFJl
dmlzaW9uOw0KICAgQllURSAgU2J6MTsNCiAgIFNFQ1VSSVRZX0RFU0NSSVBUT1JfQ09OVFJPTCBD
b250cm9sOw0KICAgUFNJRCBPd25lcjsNCiAgIFBTSUQgR3JvdXA7DQogICBQQUNMIFNhY2w7DQog
ICBQQUNMIERhY2w7DQoNCiAgIH0gU0VDVVJJVFlfREVTQ1JJUFRPUiwgKlBJU0VDVVJJVFlfREVT
Q1JJUFRPUjsNCg0KICAgDQp0eXBlZGVmIHN0cnVjdCBfU0VDVVJJVFlfT0JKRUNUX0FJX1BBUkFN
UyB7DQogICAgRFdPUkQgU2l6ZTsgICAgICAgICAgICAgDQogICAgRFdPUkQgQ29uc3RyYWludE1h
c2s7DQp9IFNFQ1VSSVRZX09CSkVDVF9BSV9QQVJBTVMsICpQU0VDVVJJVFlfT0JKRUNUX0FJX1BB
UkFNUzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IF9PQkpFQ1RfVFlQRV9MSVNUIHsNCiAgICBXT1JEICAgTGV2ZWw7DQogICAgV09S
RCAgIFNiejsNCiAgICBHVUlEICpPYmplY3RUeXBlOw0KfSBPQkpFQ1RfVFlQRV9MSVNULCAqUE9C
SkVDVF9UWVBFX0xJU1Q7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVu
dW0gX0FVRElUX0VWRU5UX1RZUEUgew0KICAgIEF1ZGl0RXZlbnRPYmplY3RBY2Nlc3MsDQogICAg
QXVkaXRFdmVudERpcmVjdG9yeVNlcnZpY2VBY2Nlc3MNCn0gQVVESVRfRVZFTlRfVFlQRSwgKlBB
VURJVF9FVkVOVF9UWVBFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IF9QUklWSUxFR0VfU0VUIHsNCiAgICBEV09SRCBQcml2aWxlZ2VD
b3VudDsNCiAgICBEV09SRCBDb250cm9sOw0KICAgIExVSURfQU5EX0FUVFJJQlVURVMgUHJpdmls
ZWdlWzFdOw0KICAgIH0gUFJJVklMRUdFX1NFVCwgKiBQUFJJVklMRUdFX1NFVDsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9BQ0NFU1NfUkVBU09OX1RZUEV7
DQoNCiAgICBBY2Nlc3NSZWFzb25Ob25lICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDAs
ICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBBY2Nlc3NSZWFzb25BbGxv
d2VkQWNlICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDAwLCAgIA0KICAgIEFjY2Vzc1JlYXNv
bkRlbmllZEFjZSAgICAgICAgICAgICAgICAgICA9IDB4MDAwMjAwMDAsICAgDQoNCiAgICBBY2Nl
c3NSZWFzb25BbGxvd2VkUGFyZW50QWNlICAgICAgICAgICAgPSAweDAwMDMwMDAwLCAgIA0KICAg
IEFjY2Vzc1JlYXNvbkRlbmllZFBhcmVudEFjZSAgICAgICAgICAgICA9IDB4MDAwNDAwMDAsICAg
DQoNCiAgICBBY2Nlc3NSZWFzb25Ob3RHcmFudGVkQnlDYXBlICAgICAgICAgICAgPSAweDAwMDUw
MDAwLCAgIA0KICAgIEFjY2Vzc1JlYXNvbk5vdEdyYW50ZWRCeVBhcmVudENhcGUgICAgICA9IDB4
MDAwNjAwMDAsICAgDQoNCiAgICBBY2Nlc3NSZWFzb25Ob3RHcmFudGVkVG9BcHBDb250YWluZXIg
ICAgPSAweDAwMDcwMDAwLCAgIA0KDQogICAgQWNjZXNzUmVhc29uTWlzc2luZ1ByaXZpbGVnZSAg
ICAgICAgICAgID0gMHgwMDEwMDAwMCwNCiAgICBBY2Nlc3NSZWFzb25Gcm9tUHJpdmlsZWdlICAg
ICAgICAgICAgICAgPSAweDAwMjAwMDAwLA0KDQoNCiAgICBBY2Nlc3NSZWFzb25JbnRlZ3JpdHlM
ZXZlbCAgICAgICAgICAgICAgPSAweDAwMzAwMDAwLA0KDQogICAgQWNjZXNzUmVhc29uT3duZXJz
aGlwICAgICAgICAgICAgICAgICAgID0gMHgwMDQwMDAwMCwNCg0KICAgIEFjY2Vzc1JlYXNvbk51
bGxEYWNsICAgICAgICAgICAgICAgICAgICA9IDB4MDA1MDAwMDAsDQogICAgQWNjZXNzUmVhc29u
RW1wdHlEYWNsICAgICAgICAgICAgICAgICAgID0gMHgwMDYwMDAwMCwNCg0KICAgIEFjY2Vzc1Jl
YXNvbk5vU0QgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDA3MDAwMDAsDQogICAgQWNjZXNz
UmVhc29uTm9HcmFudCAgICAgICAgICAgICAgICAgICAgID0gMHgwMDgwMDAwMCwgICANCg0KICAg
IEFjY2Vzc1JlYXNvblRydXN0TGFiZWwgICAgICAgICAgICAgICAgICA9IDB4MDA5MDAwMDAsICAg
DQoNCiAgICBBY2Nlc3NSZWFzb25GaWx0ZXJBY2UgICAgICAgICAgICAgICAgICAgPSAweDAwYTAw
MDAwICAgIA0KfQ0KQUNDRVNTX1JFQVNPTl9UWVBFOw0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIERXT1JEIEFDQ0VTU19SRUFTT047DQoNCnR5cGVkZWYgc3RydWN0IF9BQ0NF
U1NfUkVBU09OU3sNCiAgICAgICAgQUNDRVNTX1JFQVNPTiBEYXRhWzMyXTsNCn0gQUNDRVNTX1JF
QVNPTlMsICpQQUNDRVNTX1JFQVNPTlM7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NFX1NFQ1VSSVRZX0RF
U0NSSVBUT1INCnsNCiAgICBEV09SRCBTaXplOw0KICAgIERXT1JEIEZsYWdzOw0KICAgIFBTRUNV
UklUWV9ERVNDUklQVE9SIFNlY3VyaXR5RGVzY3JpcHRvcjsNCn0gU0VfU0VDVVJJVFlfREVTQ1JJ
UFRPUiwgKlBTRV9TRUNVUklUWV9ERVNDUklQVE9SOw0KDQp0eXBlZGVmIHN0cnVjdCBfU0VfQUND
RVNTX1JFUVVFU1QNCnsNCiAgICBEV09SRCBTaXplOw0KICAgIFBTRV9TRUNVUklUWV9ERVNDUklQ
VE9SIFNlU2VjdXJpdHlEZXNjcmlwdG9yOw0KICAgIEFDQ0VTU19NQVNLIERlc2lyZWRBY2Nlc3M7
DQogICAgQUNDRVNTX01BU0sgUHJldmlvdXNseUdyYW50ZWRBY2Nlc3M7DQogICAgUFNJRCBQcmlu
Y2lwYWxTZWxmU2lkOyAgICAgIA0KICAgIFBHRU5FUklDX01BUFBJTkcgR2VuZXJpY01hcHBpbmc7
DQogICAgRFdPUkQgT2JqZWN0VHlwZUxpc3RDb3VudDsNCiAgICBQT0JKRUNUX1RZUEVfTElTVCBP
YmplY3RUeXBlTGlzdDsNCn0gU0VfQUNDRVNTX1JFUVVFU1QsICpQU0VfQUNDRVNTX1JFUVVFU1Q7
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NFX0FDQ0VTU19SRVBMWQ0Kew0KICAgIERXT1JEIFNpemU7
DQogICAgRFdPUkQgUmVzdWx0TGlzdENvdW50OyAgDQogICAgUEFDQ0VTU19NQVNLIEdyYW50ZWRB
Y2Nlc3M7DQogICAgUERXT1JEICAgIEFjY2Vzc1N0YXR1czsNCiAgICBQQUNDRVNTX1JFQVNPTlMg
QWNjZXNzUmVhc29uOw0KICAgIFBQUklWSUxFR0VfU0VUKiBQcml2aWxlZ2VzOw0KfSBTRV9BQ0NF
U1NfUkVQTFksICpQU0VfQUNDRVNTX1JFUExZOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gX1NFQ1VSSVRZX0lNUEVSU09OQVRJT05fTEVWRUwgew0K
ICAgIFNlY3VyaXR5QW5vbnltb3VzLA0KICAgIFNlY3VyaXR5SWRlbnRpZmljYXRpb24sDQogICAg
U2VjdXJpdHlJbXBlcnNvbmF0aW9uLA0KICAgIFNlY3VyaXR5RGVsZWdhdGlvbg0KICAgIH0gU0VD
VVJJVFlfSU1QRVJTT05BVElPTl9MRVZFTCwgKiBQU0VDVVJJVFlfSU1QRVJTT05BVElPTl9MRVZF
TDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNzM1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTA3NTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIGVudW0gX1RPS0VOX1RZUEUgew0KICAgIFRva2VuUHJpbWFyeSA9IDEsDQogICAgVG9rZW5J
bXBlcnNvbmF0aW9uDQogICAgfSBUT0tFTl9UWVBFOw0KdHlwZWRlZiBUT0tFTl9UWVBFICpQVE9L
RU5fVFlQRTsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9UT0tFTl9FTEVWQVRJT05fVFlQ
RSB7DQogICAgVG9rZW5FbGV2YXRpb25UeXBlRGVmYXVsdCA9IDEsDQogICAgVG9rZW5FbGV2YXRp
b25UeXBlRnVsbCwNCiAgICBUb2tlbkVsZXZhdGlvblR5cGVMaW1pdGVkLA0KfSBUT0tFTl9FTEVW
QVRJT05fVFlQRSwgKlBUT0tFTl9FTEVWQVRJT05fVFlQRTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYg
ZW51bSBfVE9LRU5fSU5GT1JNQVRJT05fQ0xBU1Mgew0KICAgIFRva2VuVXNlciA9IDEsDQogICAg
VG9rZW5Hcm91cHMsDQogICAgVG9rZW5Qcml2aWxlZ2VzLA0KICAgIFRva2VuT3duZXIsDQogICAg
VG9rZW5QcmltYXJ5R3JvdXAsDQogICAgVG9rZW5EZWZhdWx0RGFjbCwNCiAgICBUb2tlblNvdXJj
ZSwNCiAgICBUb2tlblR5cGUsDQogICAgVG9rZW5JbXBlcnNvbmF0aW9uTGV2ZWwsDQogICAgVG9r
ZW5TdGF0aXN0aWNzLA0KICAgIFRva2VuUmVzdHJpY3RlZFNpZHMsDQogICAgVG9rZW5TZXNzaW9u
SWQsDQogICAgVG9rZW5Hcm91cHNBbmRQcml2aWxlZ2VzLA0KICAgIFRva2VuU2Vzc2lvblJlZmVy
ZW5jZSwNCiAgICBUb2tlblNhbmRCb3hJbmVydCwNCiAgICBUb2tlbkF1ZGl0UG9saWN5LA0KICAg
IFRva2VuT3JpZ2luLA0KICAgIFRva2VuRWxldmF0aW9uVHlwZSwNCiAgICBUb2tlbkxpbmtlZFRv
a2VuLA0KICAgIFRva2VuRWxldmF0aW9uLA0KICAgIFRva2VuSGFzUmVzdHJpY3Rpb25zLA0KICAg
IFRva2VuQWNjZXNzSW5mb3JtYXRpb24sDQogICAgVG9rZW5WaXJ0dWFsaXphdGlvbkFsbG93ZWQs
DQogICAgVG9rZW5WaXJ0dWFsaXphdGlvbkVuYWJsZWQsDQogICAgVG9rZW5JbnRlZ3JpdHlMZXZl
bCwNCiAgICBUb2tlblVJQWNjZXNzLA0KICAgIFRva2VuTWFuZGF0b3J5UG9saWN5LA0KICAgIFRv
a2VuTG9nb25TaWQsDQogICAgVG9rZW5Jc0FwcENvbnRhaW5lciwNCiAgICBUb2tlbkNhcGFiaWxp
dGllcywNCiAgICBUb2tlbkFwcENvbnRhaW5lclNpZCwNCiAgICBUb2tlbkFwcENvbnRhaW5lck51
bWJlciwNCiAgICBUb2tlblVzZXJDbGFpbUF0dHJpYnV0ZXMsDQogICAgVG9rZW5EZXZpY2VDbGFp
bUF0dHJpYnV0ZXMsDQogICAgVG9rZW5SZXN0cmljdGVkVXNlckNsYWltQXR0cmlidXRlcywNCiAg
ICBUb2tlblJlc3RyaWN0ZWREZXZpY2VDbGFpbUF0dHJpYnV0ZXMsDQogICAgVG9rZW5EZXZpY2VH
cm91cHMsDQogICAgVG9rZW5SZXN0cmljdGVkRGV2aWNlR3JvdXBzLA0KICAgIFRva2VuU2VjdXJp
dHlBdHRyaWJ1dGVzLA0KICAgIFRva2VuSXNSZXN0cmljdGVkLA0KICAgIFRva2VuUHJvY2Vzc1Ry
dXN0TGV2ZWwsDQogICAgVG9rZW5Qcml2YXRlTmFtZVNwYWNlLA0KICAgIFRva2VuU2luZ2xldG9u
QXR0cmlidXRlcywNCiAgICBUb2tlbkJub0lzb2xhdGlvbiwNCiAgICBUb2tlbkNoaWxkUHJvY2Vz
c0ZsYWdzLA0KICAgIFRva2VuSXNMZXNzUHJpdmlsZWdlZEFwcENvbnRhaW5lciwNCiAgICBUb2tl
bklzU2FuZGJveGVkLA0KICAgIFRva2VuT3JpZ2luYXRpbmdQcm9jZXNzVHJ1c3RMZXZlbCwNCiAg
ICBNYXhUb2tlbkluZm9DbGFzcyAgDQp9IFRPS0VOX0lORk9STUFUSU9OX0NMQVNTLCAqUFRPS0VO
X0lORk9STUFUSU9OX0NMQVNTOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9UT0tFTl9VU0VS
IHsNCiAgICBTSURfQU5EX0FUVFJJQlVURVMgVXNlcjsNCn0gVE9LRU5fVVNFUiwgKlBUT0tFTl9V
U0VSOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NFX1RPS0VOX1VTRVIgew0KICAgIHVuaW9uIHsN
CiAgICAgICAgVE9LRU5fVVNFUiBUb2tlblVzZXI7DQogICAgICAgIFNJRF9BTkRfQVRUUklCVVRF
UyBVc2VyOw0KICAgIH0gOw0KDQogICAgdW5pb24gew0KICAgICAgICBTSUQgU2lkOw0KICAgICAg
ICBCWVRFICBCdWZmZXJbKHNpemVvZihTSUQpIC0gc2l6ZW9mKERXT1JEKSArICgoMTUpICogc2l6
ZW9mKERXT1JEKSkpXTsNCiAgICB9IDsNCg0KfSBTRV9UT0tFTl9VU0VSICwgUFNFX1RPS0VOX1VT
RVI7DQoNCg0KDQojbGluZSAxMDg2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1RPS0VOX0dST1VQUyB7DQogICAgRFdPUkQgR3JvdXBDb3VudDsNCg0KDQoNCiAg
ICBTSURfQU5EX0FUVFJJQlVURVMgR3JvdXBzWzFdOw0KI2xpbmUgMTA4NzUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KfSBUT0tFTl9HUk9VUFMsICpQVE9LRU5fR1JPVVBTOw0KDQp0eXBlZGVmIHN0
cnVjdCBfVE9LRU5fUFJJVklMRUdFUyB7DQogICAgRFdPUkQgUHJpdmlsZWdlQ291bnQ7DQogICAg
TFVJRF9BTkRfQVRUUklCVVRFUyBQcml2aWxlZ2VzWzFdOw0KfSBUT0tFTl9QUklWSUxFR0VTLCAq
UFRPS0VOX1BSSVZJTEVHRVM7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RPS0VOX09XTkVSIHsNCiAg
ICBQU0lEIE93bmVyOw0KfSBUT0tFTl9PV05FUiwgKlBUT0tFTl9PV05FUjsNCg0KDQoNCiNsaW5l
IDEwODkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX1RPS0VOX1BS
SU1BUllfR1JPVVAgew0KICAgIFBTSUQgUHJpbWFyeUdyb3VwOw0KfSBUT0tFTl9QUklNQVJZX0dS
T1VQLCAqUFRPS0VOX1BSSU1BUllfR1JPVVA7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RPS0VOX0RF
RkFVTFRfREFDTCB7DQogICAgUEFDTCBEZWZhdWx0RGFjbDsNCn0gVE9LRU5fREVGQVVMVF9EQUNM
LCAqUFRPS0VOX0RFRkFVTFRfREFDTDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RPS0VOX1VTRVJfQ0xB
SU1TIHsNCiAgICBQQ0xBSU1TX0JMT0IgVXNlckNsYWltczsNCn0gVE9LRU5fVVNFUl9DTEFJTVMs
ICpQVE9LRU5fVVNFUl9DTEFJTVM7DQoNCnR5cGVkZWYgc3RydWN0IF9UT0tFTl9ERVZJQ0VfQ0xB
SU1TIHsNCiAgICBQQ0xBSU1TX0JMT0IgRGV2aWNlQ2xhaW1zOw0KfSBUT0tFTl9ERVZJQ0VfQ0xB
SU1TLCAqUFRPS0VOX0RFVklDRV9DTEFJTVM7DQoNCnR5cGVkZWYgc3RydWN0IF9UT0tFTl9HUk9V
UFNfQU5EX1BSSVZJTEVHRVMgew0KICAgIERXT1JEIFNpZENvdW50Ow0KICAgIERXT1JEIFNpZExl
bmd0aDsNCiAgICBQU0lEX0FORF9BVFRSSUJVVEVTIFNpZHM7DQogICAgRFdPUkQgUmVzdHJpY3Rl
ZFNpZENvdW50Ow0KICAgIERXT1JEIFJlc3RyaWN0ZWRTaWRMZW5ndGg7DQogICAgUFNJRF9BTkRf
QVRUUklCVVRFUyBSZXN0cmljdGVkU2lkczsNCiAgICBEV09SRCBQcml2aWxlZ2VDb3VudDsNCiAg
ICBEV09SRCBQcml2aWxlZ2VMZW5ndGg7DQogICAgUExVSURfQU5EX0FUVFJJQlVURVMgUHJpdmls
ZWdlczsNCiAgICBMVUlEIEF1dGhlbnRpY2F0aW9uSWQ7DQp9IFRPS0VOX0dST1VQU19BTkRfUFJJ
VklMRUdFUywgKlBUT0tFTl9HUk9VUFNfQU5EX1BSSVZJTEVHRVM7DQoNCnR5cGVkZWYgc3RydWN0
IF9UT0tFTl9MSU5LRURfVE9LRU4gew0KICAgIEhBTkRMRSBMaW5rZWRUb2tlbjsNCn0gVE9LRU5f
TElOS0VEX1RPS0VOLCAqUFRPS0VOX0xJTktFRF9UT0tFTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RP
S0VOX0VMRVZBVElPTiB7DQogICAgRFdPUkQgVG9rZW5Jc0VsZXZhdGVkOw0KfSBUT0tFTl9FTEVW
QVRJT04sICpQVE9LRU5fRUxFVkFUSU9OOw0KDQp0eXBlZGVmIHN0cnVjdCBfVE9LRU5fTUFOREFU
T1JZX0xBQkVMIHsNCiAgICBTSURfQU5EX0FUVFJJQlVURVMgTGFiZWw7DQp9IFRPS0VOX01BTkRB
VE9SWV9MQUJFTCwgKlBUT0tFTl9NQU5EQVRPUllfTEFCRUw7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDEwOTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX1RP
S0VOX01BTkRBVE9SWV9QT0xJQ1kgew0KICAgIERXT1JEIFBvbGljeTsNCn0gVE9LRU5fTUFOREFU
T1JZX1BPTElDWSwgKlBUT0tFTl9NQU5EQVRPUllfUE9MSUNZOw0KDQp0eXBlZGVmIFBWT0lEIFBT
RUNVUklUWV9BVFRSSUJVVEVTX09QQVFVRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RPS0VOX0FDQ0VT
U19JTkZPUk1BVElPTiB7DQogICAgUFNJRF9BTkRfQVRUUklCVVRFU19IQVNIIFNpZEhhc2g7DQog
ICAgUFNJRF9BTkRfQVRUUklCVVRFU19IQVNIIFJlc3RyaWN0ZWRTaWRIYXNoOw0KICAgIFBUT0tF
Tl9QUklWSUxFR0VTIFByaXZpbGVnZXM7DQogICAgTFVJRCBBdXRoZW50aWNhdGlvbklkOw0KICAg
IFRPS0VOX1RZUEUgVG9rZW5UeXBlOw0KICAgIFNFQ1VSSVRZX0lNUEVSU09OQVRJT05fTEVWRUwg
SW1wZXJzb25hdGlvbkxldmVsOw0KICAgIFRPS0VOX01BTkRBVE9SWV9QT0xJQ1kgTWFuZGF0b3J5
UG9saWN5Ow0KICAgIERXT1JEIEZsYWdzOw0KICAgIERXT1JEIEFwcENvbnRhaW5lck51bWJlcjsN
CiAgICBQU0lEIFBhY2thZ2VTaWQ7DQogICAgUFNJRF9BTkRfQVRUUklCVVRFU19IQVNIIENhcGFi
aWxpdGllc0hhc2g7DQogICAgUFNJRCBUcnVzdExldmVsU2lkOw0KICAgIFBTRUNVUklUWV9BVFRS
SUJVVEVTX09QQVFVRSBTZWN1cml0eUF0dHJpYnV0ZXM7DQp9IFRPS0VOX0FDQ0VTU19JTkZPUk1B
VElPTiwgKlBUT0tFTl9BQ0NFU1NfSU5GT1JNQVRJT047DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYg
c3RydWN0IF9UT0tFTl9BVURJVF9QT0xJQ1kgew0KICAgIEJZVEUgIFBlclVzZXJQb2xpY3lbKCgo
NTkpKSA+PiAxKSArIDFdOw0KfSBUT0tFTl9BVURJVF9QT0xJQ1ksICpQVE9LRU5fQVVESVRfUE9M
SUNZOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RPS0VOX1NPVVJDRSB7DQogICAgQ0hBUiBTb3Vy
Y2VOYW1lWzhdOw0KICAgIExVSUQgU291cmNlSWRlbnRpZmllcjsNCn0gVE9LRU5fU09VUkNFLCAq
UFRPS0VOX1NPVVJDRTsNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVE9LRU5fU1RBVElTVElDUyB7DQog
ICAgTFVJRCBUb2tlbklkOw0KICAgIExVSUQgQXV0aGVudGljYXRpb25JZDsNCiAgICBMQVJHRV9J
TlRFR0VSIEV4cGlyYXRpb25UaW1lOw0KICAgIFRPS0VOX1RZUEUgVG9rZW5UeXBlOw0KICAgIFNF
Q1VSSVRZX0lNUEVSU09OQVRJT05fTEVWRUwgSW1wZXJzb25hdGlvbkxldmVsOw0KICAgIERXT1JE
IER5bmFtaWNDaGFyZ2VkOw0KICAgIERXT1JEIER5bmFtaWNBdmFpbGFibGU7DQogICAgRFdPUkQg
R3JvdXBDb3VudDsNCiAgICBEV09SRCBQcml2aWxlZ2VDb3VudDsNCiAgICBMVUlEIE1vZGlmaWVk
SWQ7DQp9IFRPS0VOX1NUQVRJU1RJQ1MsICpQVE9LRU5fU1RBVElTVElDUzsNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IF9UT0tFTl9DT05UUk9MIHsNCiAgICBMVUlEIFRva2VuSWQ7DQogICAgTFVJRCBB
dXRoZW50aWNhdGlvbklkOw0KICAgIExVSUQgTW9kaWZpZWRJZDsNCiAgICBUT0tFTl9TT1VSQ0Ug
VG9rZW5Tb3VyY2U7DQp9IFRPS0VOX0NPTlRST0wsICpQVE9LRU5fQ09OVFJPTDsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1RPS0VOX09SSUdJTiB7DQogICAgTFVJRCBPcmlnaW5hdGluZ0xvZ29uU2Vzc2lv
biA7DQp9IFRPS0VOX09SSUdJTiwgKiBQVE9LRU5fT1JJR0lOIDsNCg0KDQp0eXBlZGVmIGVudW0g
X01BTkRBVE9SWV9MRVZFTCB7DQogICAgTWFuZGF0b3J5TGV2ZWxVbnRydXN0ZWQgPSAwLA0KICAg
IE1hbmRhdG9yeUxldmVsTG93LA0KICAgIE1hbmRhdG9yeUxldmVsTWVkaXVtLA0KICAgIE1hbmRh
dG9yeUxldmVsSGlnaCwNCiAgICBNYW5kYXRvcnlMZXZlbFN5c3RlbSwNCiAgICBNYW5kYXRvcnlM
ZXZlbFNlY3VyZVByb2Nlc3MsDQogICAgTWFuZGF0b3J5TGV2ZWxDb3VudA0KfSBNQU5EQVRPUllf
TEVWRUwsICpQTUFOREFUT1JZX0xFVkVMOw0KDQp0eXBlZGVmIHN0cnVjdCBfVE9LRU5fQVBQQ09O
VEFJTkVSX0lORk9STUFUSU9OIHsNCiAgICBQU0lEIFRva2VuQXBwQ29udGFpbmVyOw0KfSBUT0tF
Tl9BUFBDT05UQUlORVJfSU5GT1JNQVRJT04sICpQVE9LRU5fQVBQQ09OVEFJTkVSX0lORk9STUFU
SU9OOw0KDQoNCg0KI2xpbmUgMTEwMjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp0eXBlZGVm
IHN0cnVjdCBfVE9LRU5fU0lEX0lORk9STUFUSU9OIHsNCiAgICBQU0lEIFNpZDsNCn0gVE9LRU5f
U0lEX0lORk9STUFUSU9OLCAqUFRPS0VOX1NJRF9JTkZPUk1BVElPTjsNCg0KdHlwZWRlZiBzdHJ1
Y3QgX1RPS0VOX0JOT19JU09MQVRJT05fSU5GT1JNQVRJT04gew0KICAgIFBXU1RSICAgICAgIElz
b2xhdGlvblByZWZpeDsNCiAgICBCT09MRUFOICAgICBJc29sYXRpb25FbmFibGVkOw0KfSBUT0tF
Tl9CTk9fSVNPTEFUSU9OX0lORk9STUFUSU9OLCAqUFRPS0VOX0JOT19JU09MQVRJT05fSU5GT1JN
QVRJT047DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfQ0xBSU1fU0VDVVJJVFlfQVRUUklCVVRFX0ZRQk5f
VkFMVUUgew0KICAgIERXT1JENjQgICAgICAgICAgICAgVmVyc2lvbjsNCiAgICBQV1NUUiAgICAg
ICAgICAgICAgIE5hbWU7DQp9IENMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURV9GUUJOX1ZBTFVFLCAq
UENMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURV9GUUJOX1ZBTFVFOw0KDQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IF9DTEFJTV9TRUNVUklUWV9BVFRSSUJVVEVfT0NURVRfU1RSSU5HX1ZBTFVF
IHsNCiAgICBQVk9JRCAgIHBWYWx1ZTsgICAgICAgICANCiAgICBEV09SRCAgIFZhbHVlTGVuZ3Ro
OyAgICANCn0gQ0xBSU1fU0VDVVJJVFlfQVRUUklCVVRFX09DVEVUX1NUUklOR19WQUxVRSwNCiAg
ICAqUENMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURV9PQ1RFVF9TVFJJTkdfVkFMVUU7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9DTEFJTV9TRUNVUklUWV9BVFRSSUJVVEVfVjEg
ew0KDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICBQV1NUUiAgIE5hbWU7IA0KDQogICAg
DQogICAgDQogICAgDQoNCiAgICBXT1JEICAgIFZhbHVlVHlwZTsNCg0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KDQogICAgV09SRCAgICBSZXNlcnZlZDsNCg0KICAgIA0KICAgIA0KICAgIA0KDQog
ICAgRFdPUkQgICBGbGFnczsNCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgRFdPUkQgICBWYWx1
ZUNvdW50Ow0KDQogICAgDQogICAgDQogICAgDQoNCiAgICB1bmlvbiB7DQogICAgICAgIFBMT05H
NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnQ2NDsNCiAgICAg
ICAgUERXT1JENjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFVpbnQ2
NDsNCiAgICAgICAgUFdTVFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnBwU3RyaW5nOw0KICAgICAgICBQQ0xBSU1fU0VDVVJJVFlfQVRUUklCVVRFX0ZRQk5fVkFM
VUUgICAgICAgICAgICBwRnFibjsNCiAgICAgICAgUENMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURV9P
Q1RFVF9TVFJJTkdfVkFMVUUgICAgcE9jdGV0U3RyaW5nOw0KICAgIH0gVmFsdWVzOw0KfSBDTEFJ
TV9TRUNVUklUWV9BVFRSSUJVVEVfVjEsICpQQ0xBSU1fU0VDVVJJVFlfQVRUUklCVVRFX1YxOw0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0NMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURV9SRUxB
VElWRV9WMSB7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIERXT1JEICAgTmFtZTsN
Cg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgV09SRCAgICBWYWx1ZVR5cGU7DQoNCiAgICANCiAg
ICANCiAgICANCiAgICANCg0KICAgIFdPUkQgICAgUmVzZXJ2ZWQ7DQoNCiAgICANCiAgICANCiAg
ICANCg0KICAgIERXT1JEICAgRmxhZ3M7DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIERXT1JE
ICAgVmFsdWVDb3VudDsNCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgdW5pb24gew0KICAgICAg
ICBEV09SRCBwSW50NjRbMV07DQogICAgICAgIERXT1JEIHBVaW50NjRbMV07DQogICAgICAgIERX
T1JEIHBwU3RyaW5nWzFdOw0KICAgICAgICBEV09SRCBwRnFiblsxXTsNCiAgICAgICAgRFdPUkQg
cE9jdGV0U3RyaW5nWzFdOw0KICAgIH0gVmFsdWVzOw0KfSBDTEFJTV9TRUNVUklUWV9BVFRSSUJV
VEVfUkVMQVRJVkVfVjEsICpQQ0xBSU1fU0VDVVJJVFlfQVRUUklCVVRFX1JFTEFUSVZFX1YxOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X0NMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURVNfSU5GT1JNQVRJT04gew0KDQogICAgDQogICAgDQog
ICAgDQoNCiAgICBXT1JEICAgIFZlcnNpb247DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIFdP
UkQgICAgUmVzZXJ2ZWQ7DQoNCiAgICBEV09SRCAgIEF0dHJpYnV0ZUNvdW50Ow0KICAgIHVuaW9u
IHsNCiAgICAgICAgUENMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURV9WMSAgICBwQXR0cmlidXRlVjE7
DQogICAgfSBBdHRyaWJ1dGU7DQp9IENMQUlNX1NFQ1VSSVRZX0FUVFJJQlVURVNfSU5GT1JNQVRJ
T04sICpQQ0xBSU1fU0VDVVJJVFlfQVRUUklCVVRFU19JTkZPUk1BVElPTjsNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIEJPT0xFQU4gU0VDVVJJVFlfQ09OVEVYVF9UUkFDS0lOR19NT0RFLA0KICAg
ICAgICAgICAgICAgICAgICAqIFBTRUNVUklUWV9DT05URVhUX1RSQUNLSU5HX01PREU7DQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TRUNVUklUWV9RVUFMSVRZX09GX1NFUlZJQ0Ugew0K
ICAgIERXT1JEIExlbmd0aDsNCiAgICBTRUNVUklUWV9JTVBFUlNPTkFUSU9OX0xFVkVMIEltcGVy
c29uYXRpb25MZXZlbDsNCiAgICBTRUNVUklUWV9DT05URVhUX1RSQUNLSU5HX01PREUgQ29udGV4
dFRyYWNraW5nTW9kZTsNCiAgICBCT09MRUFOIEVmZmVjdGl2ZU9ubHk7DQogICAgfSBTRUNVUklU
WV9RVUFMSVRZX09GX1NFUlZJQ0UsICogUFNFQ1VSSVRZX1FVQUxJVFlfT0ZfU0VSVklDRTsNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TRV9JTVBFUlNPTkFUSU9OX1NUQVRFIHsNCiAgICBQ
QUNDRVNTX1RPS0VOIFRva2VuOw0KICAgIEJPT0xFQU4gQ29weU9uT3BlbjsNCiAgICBCT09MRUFO
IEVmZmVjdGl2ZU9ubHk7DQogICAgU0VDVVJJVFlfSU1QRVJTT05BVElPTl9MRVZFTCBMZXZlbDsN
Cn0gU0VfSU1QRVJTT05BVElPTl9TVEFURSwgKlBTRV9JTVBFUlNPTkFUSU9OX1NUQVRFOw0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBEV09SRCBTRUNVUklUWV9JTkZPUk1BVElPTiwgKlBTRUNVUklUWV9J
TkZPUk1BVElPTjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBCWVRFICBTRV9TSUdOSU5HX0xFVkVMLCAqUFNFX1NJR05JTkdfTEVWRUw7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0g
X1NFX0lNQUdFX1NJR05BVFVSRV9UWVBFDQp7DQogICAgU2VJbWFnZVNpZ25hdHVyZU5vbmUgPSAw
LA0KICAgIFNlSW1hZ2VTaWduYXR1cmVFbWJlZGRlZCwNCiAgICBTZUltYWdlU2lnbmF0dXJlQ2Fj
aGUsDQogICAgU2VJbWFnZVNpZ25hdHVyZUNhdGFsb2dDYWNoZWQsDQogICAgU2VJbWFnZVNpZ25h
dHVyZUNhdGFsb2dOb3RDYWNoZWQsDQogICAgU2VJbWFnZVNpZ25hdHVyZUNhdGFsb2dIaW50LA0K
ICAgIFNlSW1hZ2VTaWduYXR1cmVQYWNrYWdlQ2F0YWxvZywNCn0gU0VfSU1BR0VfU0lHTkFUVVJF
X1RZUEUsICpQU0VfSU1BR0VfU0lHTkFUVVJFX1RZUEU7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVu
dW0gX1NFX0xFQVJOSU5HX01PREVfREFUQV9UWVBFIHsNCiAgICBTZUxlYXJuaW5nTW9kZUludmFs
aWRUeXBlID0gMCwNCiAgICBTZUxlYXJuaW5nTW9kZVNldHRpbmdzLA0KICAgIFNlTGVhcm5pbmdN
b2RlTWF4DQp9IFNFX0xFQVJOSU5HX01PREVfREFUQV9UWVBFOw0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX1NFQ1VSSVRZX0NBUEFCSUxJVElFUyB7DQoNCg0KDQoNCiAgICBQU0lEIEFwcENvbnRhaW5l
clNpZDsNCiAgICBQU0lEX0FORF9BVFRSSUJVVEVTIENhcGFiaWxpdGllczsNCiNsaW5lIDExNDEw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiAgICBEV09SRCBDYXBhYmlsaXR5Q291bnQ7DQogICAg
RFdPUkQgUmVzZXJ2ZWQ7DQp9IFNFQ1VSSVRZX0NBUEFCSUxJVElFUywgKlBTRUNVUklUWV9DQVBB
QklMSVRJRVMsICpMUFNFQ1VSSVRZX0NBUEFCSUxJVElFUzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE0MzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExNDU3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfSk9CX1NFVF9BUlJBWSB7DQogICAgSEFORExFIEpvYkhhbmRsZTsgICANCiAgICBEV09SRCBN
ZW1iZXJMZXZlbDsgIA0KICAgIERXT1JEIEZsYWdzOyAgICAgICAgDQp9IEpPQl9TRVRfQVJSQVks
ICpQSk9CX1NFVF9BUlJBWTsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0VYQ0VQVElPTl9SRUdJ
U1RSQVRJT05fUkVDT1JEIHsNCiAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9SRUdJU1RSQVRJT05fUkVD
T1JEICpOZXh0Ow0KICAgIFBFWENFUFRJT05fUk9VVElORSBIYW5kbGVyOw0KfSBFWENFUFRJT05f
UkVHSVNUUkFUSU9OX1JFQ09SRDsNCg0KdHlwZWRlZiBFWENFUFRJT05fUkVHSVNUUkFUSU9OX1JF
Q09SRCAqUEVYQ0VQVElPTl9SRUdJU1RSQVRJT05fUkVDT1JEOw0KDQp0eXBlZGVmIHN0cnVjdCBf
TlRfVElCIHsNCiAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9SRUdJU1RSQVRJT05fUkVDT1JEICpFeGNl
cHRpb25MaXN0Ow0KICAgIFBWT0lEIFN0YWNrQmFzZTsNCiAgICBQVk9JRCBTdGFja0xpbWl0Ow0K
ICAgIFBWT0lEIFN1YlN5c3RlbVRpYjsNCg0KICAgIHVuaW9uIHsNCiAgICAgICAgUFZPSUQgRmli
ZXJEYXRhOw0KICAgICAgICBEV09SRCBWZXJzaW9uOw0KICAgIH07DQoNCg0KI2xpbmUgMTE0OTcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KICAgIFBWT0lEIEFyYml0cmFyeVVzZXJQb2ludGVyOw0K
ICAgIHN0cnVjdCBfTlRfVElCICpTZWxmOw0KfSBOVF9USUI7DQp0eXBlZGVmIE5UX1RJQiAqUE5U
X1RJQjsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX05UX1RJQjMyIHsNCiAgICBEV09SRCBFeGNl
cHRpb25MaXN0Ow0KICAgIERXT1JEIFN0YWNrQmFzZTsNCiAgICBEV09SRCBTdGFja0xpbWl0Ow0K
ICAgIERXT1JEIFN1YlN5c3RlbVRpYjsNCg0KDQogICAgdW5pb24gew0KICAgICAgICBEV09SRCBG
aWJlckRhdGE7DQogICAgICAgIERXT1JEIFZlcnNpb247DQogICAgfTsNCg0KDQojbGluZSAxMTUx
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiAgICBEV09SRCBBcmJpdHJhcnlVc2VyUG9pbnRl
cjsNCiAgICBEV09SRCBTZWxmOw0KfSBOVF9USUIzMiwgKlBOVF9USUIzMjsNCg0KdHlwZWRlZiBz
dHJ1Y3QgX05UX1RJQjY0IHsNCiAgICBEV09SRDY0IEV4Y2VwdGlvbkxpc3Q7DQogICAgRFdPUkQ2
NCBTdGFja0Jhc2U7DQogICAgRFdPUkQ2NCBTdGFja0xpbWl0Ow0KICAgIERXT1JENjQgU3ViU3lz
dGVtVGliOw0KDQoNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JENjQgRmliZXJEYXRhOw0KICAg
ICAgICBEV09SRCBWZXJzaW9uOw0KICAgIH07DQoNCg0KDQojbGluZSAxMTUzOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbm50LmgiDQoNCiAgICBEV09SRDY0IEFyYml0cmFyeVVzZXJQb2ludGVyOw0KICAgIERX
T1JENjQgU2VsZjsNCn0gTlRfVElCNjQsICpQTlRfVElCNjQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgc3RydWN0IF9VTVNfQ1JFQVRFX1RIUkVBRF9BVFRSSUJVVEVTIHsgIA0KICAgIERX
T1JEIFVtc1ZlcnNpb247ICAgDQogICAgICAgIFBWT0lEIFVtc0NvbnRleHQ7ICAgDQogICAgICAg
IFBWT0lEIFVtc0NvbXBsZXRpb25MaXN0OyAgIA0KfSBVTVNfQ1JFQVRFX1RIUkVBRF9BVFRSSUJV
VEVTLCAqUFVNU19DUkVBVEVfVEhSRUFEX0FUVFJJQlVURVM7IA0KDQp0eXBlZGVmIHN0cnVjdCBf
V09XNjRfQVJDSElURUNUVVJFX0lORk9STUFUSU9OIHsNCiAgICBEV09SRCBNYWNoaW5lIDogMTY7
DQogICAgRFdPUkQgS2VybmVsTW9kZSA6IDE7DQogICAgRFdPUkQgVXNlck1vZGUgOiAxOw0KICAg
IERXT1JEIE5hdGl2ZSA6IDE7DQogICAgRFdPUkQgUHJvY2VzcyA6IDE7DQogICAgRFdPUkQgUmVz
ZXJ2ZWRaZXJvMCA6IDEyOw0KfSBXT1c2NF9BUkNISVRFQ1RVUkVfSU5GT1JNQVRJT047DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST0NFU1NfRFlOQU1JQ19FSF9DT05USU5VQVRJT05f
VEFSR0VUIHsNCiAgICBVTE9OR19QVFIgVGFyZ2V0QWRkcmVzczsNCiAgICBVTE9OR19QVFIgRmxh
Z3M7DQp9IFBST0NFU1NfRFlOQU1JQ19FSF9DT05USU5VQVRJT05fVEFSR0VULCAqUFBST0NFU1Nf
RFlOQU1JQ19FSF9DT05USU5VQVRJT05fVEFSR0VUOw0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPQ0VT
U19EWU5BTUlDX0VIX0NPTlRJTlVBVElPTl9UQVJHRVRTX0lORk9STUFUSU9OIHsNCiAgICBXT1JE
ICAgTnVtYmVyT2ZUYXJnZXRzOw0KICAgIFdPUkQgICBSZXNlcnZlZDsNCiAgICBEV09SRCBSZXNl
cnZlZDI7DQogICAgUFBST0NFU1NfRFlOQU1JQ19FSF9DT05USU5VQVRJT05fVEFSR0VUIFRhcmdl
dHM7DQp9IFBST0NFU1NfRFlOQU1JQ19FSF9DT05USU5VQVRJT05fVEFSR0VUU19JTkZPUk1BVElP
TiwgKlBQUk9DRVNTX0RZTkFNSUNfRUhfQ09OVElOVUFUSU9OX1RBUkdFVFNfSU5GT1JNQVRJT047
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1FVT1RBX0xJTUlUUyB7DQogICAgU0laRV9UIFBhZ2VkUG9v
bExpbWl0Ow0KICAgIFNJWkVfVCBOb25QYWdlZFBvb2xMaW1pdDsNCiAgICBTSVpFX1QgTWluaW11
bVdvcmtpbmdTZXRTaXplOw0KICAgIFNJWkVfVCBNYXhpbXVtV29ya2luZ1NldFNpemU7DQogICAg
U0laRV9UIFBhZ2VmaWxlTGltaXQ7DQogICAgTEFSR0VfSU5URUdFUiBUaW1lTGltaXQ7DQp9IFFV
T1RBX0xJTUlUUywgKlBRVU9UQV9MSU1JVFM7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdW5pb24g
X1JBVEVfUVVPVEFfTElNSVQgew0KICAgIERXT1JEIFJhdGVEYXRhOw0KICAgIHN0cnVjdCB7DQog
ICAgICAgIERXT1JEIFJhdGVQZXJjZW50IDogNzsNCiAgICAgICAgRFdPUkQgUmVzZXJ2ZWQwICAg
OiAyNTsNCiAgICB9IDsNCn0gUkFURV9RVU9UQV9MSU1JVCwgKlBSQVRFX1FVT1RBX0xJTUlUOw0K
DQp0eXBlZGVmIHN0cnVjdCBfUVVPVEFfTElNSVRTX0VYIHsNCiAgICBTSVpFX1QgUGFnZWRQb29s
TGltaXQ7DQogICAgU0laRV9UIE5vblBhZ2VkUG9vbExpbWl0Ow0KICAgIFNJWkVfVCBNaW5pbXVt
V29ya2luZ1NldFNpemU7DQogICAgU0laRV9UIE1heGltdW1Xb3JraW5nU2V0U2l6ZTsNCiAgICBT
SVpFX1QgUGFnZWZpbGVMaW1pdDsgICAgICAgICAgICAgICANCiAgICBMQVJHRV9JTlRFR0VSIFRp
bWVMaW1pdDsNCiAgICBTSVpFX1QgV29ya2luZ1NldExpbWl0OyAgICAgICAgICAgICANCiAgICBT
SVpFX1QgUmVzZXJ2ZWQyOw0KICAgIFNJWkVfVCBSZXNlcnZlZDM7DQogICAgU0laRV9UIFJlc2Vy
dmVkNDsNCiAgICBEV09SRCAgRmxhZ3M7DQogICAgUkFURV9RVU9UQV9MSU1JVCBDcHVSYXRlTGlt
aXQ7DQp9IFFVT1RBX0xJTUlUU19FWCwgKlBRVU9UQV9MSU1JVFNfRVg7DQoNCnR5cGVkZWYgc3Ry
dWN0IF9JT19DT1VOVEVSUyB7DQogICAgVUxPTkdMT05HICBSZWFkT3BlcmF0aW9uQ291bnQ7DQog
ICAgVUxPTkdMT05HICBXcml0ZU9wZXJhdGlvbkNvdW50Ow0KICAgIFVMT05HTE9ORyAgT3RoZXJP
cGVyYXRpb25Db3VudDsNCiAgICBVTE9OR0xPTkcgUmVhZFRyYW5zZmVyQ291bnQ7DQogICAgVUxP
TkdMT05HIFdyaXRlVHJhbnNmZXJDb3VudDsNCiAgICBVTE9OR0xPTkcgT3RoZXJUcmFuc2ZlckNv
dW50Ow0KfSBJT19DT1VOVEVSUzsNCnR5cGVkZWYgSU9fQ09VTlRFUlMgKlBJT19DT1VOVEVSUzsN
Cg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9IQVJEV0FSRV9DT1VOVEVSX1RZUEUgew0KICAgIFBNQ0Nv
dW50ZXIsDQogICAgTWF4SGFyZHdhcmVDb3VudGVyVHlwZQ0KfSBIQVJEV0FSRV9DT1VOVEVSX1RZ
UEUsICpQSEFSRFdBUkVfQ09VTlRFUl9UWVBFOw0KdHlwZWRlZiBlbnVtIF9QUk9DRVNTX01JVElH
QVRJT05fUE9MSUNZIHsNCiAgICBQcm9jZXNzREVQUG9saWN5LA0KICAgIFByb2Nlc3NBU0xSUG9s
aWN5LA0KICAgIFByb2Nlc3NEeW5hbWljQ29kZVBvbGljeSwNCiAgICBQcm9jZXNzU3RyaWN0SGFu
ZGxlQ2hlY2tQb2xpY3ksDQogICAgUHJvY2Vzc1N5c3RlbUNhbGxEaXNhYmxlUG9saWN5LA0KICAg
IFByb2Nlc3NNaXRpZ2F0aW9uT3B0aW9uc01hc2ssDQogICAgUHJvY2Vzc0V4dGVuc2lvblBvaW50
RGlzYWJsZVBvbGljeSwNCiAgICBQcm9jZXNzQ29udHJvbEZsb3dHdWFyZFBvbGljeSwNCiAgICBQ
cm9jZXNzU2lnbmF0dXJlUG9saWN5LA0KICAgIFByb2Nlc3NGb250RGlzYWJsZVBvbGljeSwNCiAg
ICBQcm9jZXNzSW1hZ2VMb2FkUG9saWN5LA0KICAgIFByb2Nlc3NTeXN0ZW1DYWxsRmlsdGVyUG9s
aWN5LA0KICAgIFByb2Nlc3NQYXlsb2FkUmVzdHJpY3Rpb25Qb2xpY3ksDQogICAgUHJvY2Vzc0No
aWxkUHJvY2Vzc1BvbGljeSwNCiAgICBQcm9jZXNzU2lkZUNoYW5uZWxJc29sYXRpb25Qb2xpY3ks
DQogICAgUHJvY2Vzc1VzZXJTaGFkb3dTdGFja1BvbGljeSwNCiAgICBNYXhQcm9jZXNzTWl0aWdh
dGlvblBvbGljeQ0KfSBQUk9DRVNTX01JVElHQVRJT05fUE9MSUNZLCAqUFBST0NFU1NfTUlUSUdB
VElPTl9QT0xJQ1k7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPQ0VTU19NSVRJR0FU
SU9OX0FTTFJfUE9MSUNZIHsNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAg
ICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgRFdPUkQgRW5hYmxlQm90dG9tVXBSYW5kb21pemF0
aW9uIDogMTsNCiAgICAgICAgICAgIERXT1JEIEVuYWJsZUZvcmNlUmVsb2NhdGVJbWFnZXMgOiAx
Ow0KICAgICAgICAgICAgRFdPUkQgRW5hYmxlSGlnaEVudHJvcHkgOiAxOw0KICAgICAgICAgICAg
RFdPUkQgRGlzYWxsb3dTdHJpcHBlZEltYWdlcyA6IDE7DQogICAgICAgICAgICBEV09SRCBSZXNl
cnZlZEZsYWdzIDogMjg7DQogICAgICAgIH0gOw0KICAgIH0gOw0KfSBQUk9DRVNTX01JVElHQVRJ
T05fQVNMUl9QT0xJQ1ksICpQUFJPQ0VTU19NSVRJR0FUSU9OX0FTTFJfUE9MSUNZOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfUFJPQ0VTU19NSVRJR0FUSU9OX0RFUF9QT0xJQ1kgew0KICAgIHVuaW9uIHsN
CiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBEV09S
RCBFbmFibGUgOiAxOw0KICAgICAgICAgICAgRFdPUkQgRGlzYWJsZUF0bFRodW5rRW11bGF0aW9u
IDogMTsNCiAgICAgICAgICAgIERXT1JEIFJlc2VydmVkRmxhZ3MgOiAzMDsNCiAgICAgICAgfSA7
DQogICAgfSA7DQogICAgQk9PTEVBTiBQZXJtYW5lbnQ7DQp9IFBST0NFU1NfTUlUSUdBVElPTl9E
RVBfUE9MSUNZLCAqUFBST0NFU1NfTUlUSUdBVElPTl9ERVBfUE9MSUNZOw0KDQp0eXBlZGVmIHN0
cnVjdCBfUFJPQ0VTU19NSVRJR0FUSU9OX1NUUklDVF9IQU5ETEVfQ0hFQ0tfUE9MSUNZIHsNCiAg
ICB1bmlvbiB7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAg
ICAgICAgRFdPUkQgUmFpc2VFeGNlcHRpb25PbkludmFsaWRIYW5kbGVSZWZlcmVuY2UgOiAxOw0K
ICAgICAgICAgICAgRFdPUkQgSGFuZGxlRXhjZXB0aW9uc1Blcm1hbmVudGx5RW5hYmxlZCA6IDE7
DQogICAgICAgICAgICBEV09SRCBSZXNlcnZlZEZsYWdzIDogMzA7DQogICAgICAgIH0gOw0KICAg
IH0gOw0KfSBQUk9DRVNTX01JVElHQVRJT05fU1RSSUNUX0hBTkRMRV9DSEVDS19QT0xJQ1ksICpQ
UFJPQ0VTU19NSVRJR0FUSU9OX1NUUklDVF9IQU5ETEVfQ0hFQ0tfUE9MSUNZOw0KDQp0eXBlZGVm
IHN0cnVjdCBfUFJPQ0VTU19NSVRJR0FUSU9OX1NZU1RFTV9DQUxMX0RJU0FCTEVfUE9MSUNZIHsN
CiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAg
ICAgICAgICAgRFdPUkQgRGlzYWxsb3dXaW4zMmtTeXN0ZW1DYWxscyA6IDE7DQogICAgICAgICAg
ICBEV09SRCBBdWRpdERpc2FsbG93V2luMzJrU3lzdGVtQ2FsbHMgOiAxOw0KICAgICAgICAgICAg
RFdPUkQgUmVzZXJ2ZWRGbGFncyA6IDMwOw0KICAgICAgICB9IDsNCiAgICB9IDsNCn0gUFJPQ0VT
U19NSVRJR0FUSU9OX1NZU1RFTV9DQUxMX0RJU0FCTEVfUE9MSUNZLCAqUFBST0NFU1NfTUlUSUdB
VElPTl9TWVNURU1fQ0FMTF9ESVNBQkxFX1BPTElDWTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST0NF
U1NfTUlUSUdBVElPTl9FWFRFTlNJT05fUE9JTlRfRElTQUJMRV9QT0xJQ1kgew0KICAgIHVuaW9u
IHsNCiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBE
V09SRCBEaXNhYmxlRXh0ZW5zaW9uUG9pbnRzIDogMTsNCiAgICAgICAgICAgIERXT1JEIFJlc2Vy
dmVkRmxhZ3MgOiAzMTsNCiAgICAgICAgfSA7DQogICAgfSA7DQp9IFBST0NFU1NfTUlUSUdBVElP
Tl9FWFRFTlNJT05fUE9JTlRfRElTQUJMRV9QT0xJQ1ksICpQUFJPQ0VTU19NSVRJR0FUSU9OX0VY
VEVOU0lPTl9QT0lOVF9ESVNBQkxFX1BPTElDWTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST0NFU1Nf
TUlUSUdBVElPTl9EWU5BTUlDX0NPREVfUE9MSUNZIHsNCiAgICB1bmlvbiB7DQogICAgICAgIERX
T1JEIEZsYWdzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgRFdPUkQgUHJvaGliaXRE
eW5hbWljQ29kZSA6IDE7DQogICAgICAgICAgICBEV09SRCBBbGxvd1RocmVhZE9wdE91dCA6IDE7
DQogICAgICAgICAgICBEV09SRCBBbGxvd1JlbW90ZURvd25ncmFkZSA6IDE7DQogICAgICAgICAg
ICBEV09SRCBBdWRpdFByb2hpYml0RHluYW1pY0NvZGUgOiAxOw0KICAgICAgICAgICAgRFdPUkQg
UmVzZXJ2ZWRGbGFncyA6IDI4Ow0KICAgICAgICB9IDsNCiAgICB9IDsNCn0gUFJPQ0VTU19NSVRJ
R0FUSU9OX0RZTkFNSUNfQ09ERV9QT0xJQ1ksICpQUFJPQ0VTU19NSVRJR0FUSU9OX0RZTkFNSUNf
Q09ERV9QT0xJQ1k7DQoNCnR5cGVkZWYgc3RydWN0IF9QUk9DRVNTX01JVElHQVRJT05fQ09OVFJP
TF9GTE9XX0dVQVJEX1BPTElDWSB7DQogICAgdW5pb24gew0KICAgICAgICBEV09SRCBGbGFnczsN
CiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIERXT1JEIEVuYWJsZUNvbnRyb2xGbG93R3Vh
cmQgOiAxOw0KICAgICAgICAgICAgRFdPUkQgRW5hYmxlRXhwb3J0U3VwcHJlc3Npb24gOiAxOw0K
ICAgICAgICAgICAgRFdPUkQgU3RyaWN0TW9kZSA6IDE7DQogICAgICAgICAgICBEV09SRCBSZXNl
cnZlZEZsYWdzIDogMjk7DQogICAgICAgIH0gOw0KICAgIH0gOw0KfSBQUk9DRVNTX01JVElHQVRJ
T05fQ09OVFJPTF9GTE9XX0dVQVJEX1BPTElDWSwgKlBQUk9DRVNTX01JVElHQVRJT05fQ09OVFJP
TF9GTE9XX0dVQVJEX1BPTElDWTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST0NFU1NfTUlUSUdBVElP
Tl9CSU5BUllfU0lHTkFUVVJFX1BPTElDWSB7DQogICAgdW5pb24gew0KICAgICAgICBEV09SRCBG
bGFnczsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIERXT1JEIE1pY3Jvc29mdFNpZ25l
ZE9ubHkgOiAxOw0KICAgICAgICAgICAgRFdPUkQgU3RvcmVTaWduZWRPbmx5IDogMTsNCiAgICAg
ICAgICAgIERXT1JEIE1pdGlnYXRpb25PcHRJbiA6IDE7DQogICAgICAgICAgICBEV09SRCBBdWRp
dE1pY3Jvc29mdFNpZ25lZE9ubHkgOiAxOw0KICAgICAgICAgICAgRFdPUkQgQXVkaXRTdG9yZVNp
Z25lZE9ubHkgOiAxOw0KICAgICAgICAgICAgRFdPUkQgUmVzZXJ2ZWRGbGFncyA6IDI3Ow0KICAg
ICAgICB9IDsNCiAgICB9IDsNCn0gUFJPQ0VTU19NSVRJR0FUSU9OX0JJTkFSWV9TSUdOQVRVUkVf
UE9MSUNZLCAqUFBST0NFU1NfTUlUSUdBVElPTl9CSU5BUllfU0lHTkFUVVJFX1BPTElDWTsNCg0K
dHlwZWRlZiBzdHJ1Y3QgX1BST0NFU1NfTUlUSUdBVElPTl9GT05UX0RJU0FCTEVfUE9MSUNZIHsN
CiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIEZsYWdzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAg
ICAgICAgICAgRFdPUkQgRGlzYWJsZU5vblN5c3RlbUZvbnRzICAgICA6IDE7DQogICAgICAgICAg
ICBEV09SRCBBdWRpdE5vblN5c3RlbUZvbnRMb2FkaW5nIDogMTsNCiAgICAgICAgICAgIERXT1JE
IFJlc2VydmVkRmxhZ3MgICAgICAgICAgICAgOiAzMDsNCiAgICAgICAgfSA7DQogICAgfSA7DQp9
IFBST0NFU1NfTUlUSUdBVElPTl9GT05UX0RJU0FCTEVfUE9MSUNZLCAqUFBST0NFU1NfTUlUSUdB
VElPTl9GT05UX0RJU0FCTEVfUE9MSUNZOw0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPQ0VTU19NSVRJ
R0FUSU9OX0lNQUdFX0xPQURfUE9MSUNZIHsNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIEZs
YWdzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgRFdPUkQgTm9SZW1vdGVJbWFnZXMg
OiAxOw0KICAgICAgICAgICAgRFdPUkQgTm9Mb3dNYW5kYXRvcnlMYWJlbEltYWdlcyA6IDE7DQog
ICAgICAgICAgICBEV09SRCBQcmVmZXJTeXN0ZW0zMkltYWdlcyA6IDE7DQogICAgICAgICAgICBE
V09SRCBBdWRpdE5vUmVtb3RlSW1hZ2VzIDogMTsNCiAgICAgICAgICAgIERXT1JEIEF1ZGl0Tm9M
b3dNYW5kYXRvcnlMYWJlbEltYWdlcyA6IDE7DQogICAgICAgICAgICBEV09SRCBSZXNlcnZlZEZs
YWdzIDogMjc7DQogICAgICAgIH0gOw0KICAgIH0gOw0KfSBQUk9DRVNTX01JVElHQVRJT05fSU1B
R0VfTE9BRF9QT0xJQ1ksICpQUFJPQ0VTU19NSVRJR0FUSU9OX0lNQUdFX0xPQURfUE9MSUNZOw0K
DQp0eXBlZGVmIHN0cnVjdCBfUFJPQ0VTU19NSVRJR0FUSU9OX1NZU1RFTV9DQUxMX0ZJTFRFUl9Q
T0xJQ1kgew0KICAgIHVuaW9uIHsNCiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIHN0cnVj
dCB7DQogICAgICAgICAgICBEV09SRCBGaWx0ZXJJZDogNDsNCiAgICAgICAgICAgIERXT1JEIFJl
c2VydmVkRmxhZ3MgOiAyODsNCiAgICAgICAgfSA7DQogICAgfSA7DQp9IFBST0NFU1NfTUlUSUdB
VElPTl9TWVNURU1fQ0FMTF9GSUxURVJfUE9MSUNZLCAqUFBST0NFU1NfTUlUSUdBVElPTl9TWVNU
RU1fQ0FMTF9GSUxURVJfUE9MSUNZOw0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPQ0VTU19NSVRJR0FU
SU9OX1BBWUxPQURfUkVTVFJJQ1RJT05fUE9MSUNZIHsNCiAgICB1bmlvbiB7DQogICAgICAgIERX
T1JEIEZsYWdzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgRFdPUkQgRW5hYmxlRXhw
b3J0QWRkcmVzc0ZpbHRlciAgICAgOiAxOw0KICAgICAgICAgICAgRFdPUkQgQXVkaXRFeHBvcnRB
ZGRyZXNzRmlsdGVyICAgICAgOiAxOw0KDQogICAgICAgICAgICBEV09SRCBFbmFibGVFeHBvcnRB
ZGRyZXNzRmlsdGVyUGx1cyA6IDE7DQogICAgICAgICAgICBEV09SRCBBdWRpdEV4cG9ydEFkZHJl
c3NGaWx0ZXJQbHVzICA6IDE7DQoNCiAgICAgICAgICAgIERXT1JEIEVuYWJsZUltcG9ydEFkZHJl
c3NGaWx0ZXIgICAgIDogMTsNCiAgICAgICAgICAgIERXT1JEIEF1ZGl0SW1wb3J0QWRkcmVzc0Zp
bHRlciAgICAgIDogMTsNCg0KICAgICAgICAgICAgRFdPUkQgRW5hYmxlUm9wU3RhY2tQaXZvdCAg
ICAgICAgICAgOiAxOw0KICAgICAgICAgICAgRFdPUkQgQXVkaXRSb3BTdGFja1Bpdm90ICAgICAg
ICAgICAgOiAxOw0KDQogICAgICAgICAgICBEV09SRCBFbmFibGVSb3BDYWxsZXJDaGVjayAgICAg
ICAgICA6IDE7DQogICAgICAgICAgICBEV09SRCBBdWRpdFJvcENhbGxlckNoZWNrICAgICAgICAg
ICA6IDE7DQoNCiAgICAgICAgICAgIERXT1JEIEVuYWJsZVJvcFNpbUV4ZWMgICAgICAgICAgICAg
IDogMTsNCiAgICAgICAgICAgIERXT1JEIEF1ZGl0Um9wU2ltRXhlYyAgICAgICAgICAgICAgIDog
MTsNCg0KICAgICAgICAgICAgRFdPUkQgUmVzZXJ2ZWRGbGFncyAgICAgICAgICAgICAgICAgOiAy
MDsNCiAgICAgICAgfSA7DQogICAgfSA7DQp9IFBST0NFU1NfTUlUSUdBVElPTl9QQVlMT0FEX1JF
U1RSSUNUSU9OX1BPTElDWSwgKlBQUk9DRVNTX01JVElHQVRJT05fUEFZTE9BRF9SRVNUUklDVElP
Tl9QT0xJQ1k7DQoNCnR5cGVkZWYgc3RydWN0IF9QUk9DRVNTX01JVElHQVRJT05fQ0hJTERfUFJP
Q0VTU19QT0xJQ1kgew0KICAgIHVuaW9uIHsNCiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAg
IHN0cnVjdCB7DQogICAgICAgICAgICBEV09SRCBOb0NoaWxkUHJvY2Vzc0NyZWF0aW9uIDogMTsN
CiAgICAgICAgICAgIERXT1JEIEF1ZGl0Tm9DaGlsZFByb2Nlc3NDcmVhdGlvbiA6IDE7DQogICAg
ICAgICAgICBEV09SRCBBbGxvd1NlY3VyZVByb2Nlc3NDcmVhdGlvbiA6IDE7DQogICAgICAgICAg
ICBEV09SRCBSZXNlcnZlZEZsYWdzIDogMjk7DQogICAgICAgIH0gOw0KICAgIH0gOw0KfSBQUk9D
RVNTX01JVElHQVRJT05fQ0hJTERfUFJPQ0VTU19QT0xJQ1ksICpQUFJPQ0VTU19NSVRJR0FUSU9O
X0NISUxEX1BST0NFU1NfUE9MSUNZOw0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPQ0VTU19NSVRJR0FU
SU9OX1NJREVfQ0hBTk5FTF9JU09MQVRJT05fUE9MSUNZIHsNCiAgICB1bmlvbiB7DQogICAgICAg
IERXT1JEIEZsYWdzOw0KICAgICAgICBzdHJ1Y3Qgew0KDQogICAgICAgICAgICANCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIERXT1JEIFNtdEJyYW5jaFRhcmdldElz
b2xhdGlvbiA6IDE7DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQog
ICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICBEV09SRCBJc29sYXRlU2Vj
dXJpdHlEb21haW4gOiAxOw0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgDQogICAgICAgICAgICANCg0KICAgICAgICAgICAgRFdPUkQgRGlzYWJsZVBhZ2VDb21iaW5l
IDogMTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KDQogICAg
ICAgICAgICBEV09SRCBTcGVjdWxhdGl2ZVN0b3JlQnlwYXNzRGlzYWJsZSA6IDE7DQoNCiAgICAg
ICAgICAgIERXT1JEIFJlc2VydmVkRmxhZ3MgOiAyODsNCg0KICAgICAgICB9IDsNCiAgICB9IDsN
Cn0gUFJPQ0VTU19NSVRJR0FUSU9OX1NJREVfQ0hBTk5FTF9JU09MQVRJT05fUE9MSUNZLCAqUFBS
T0NFU1NfTUlUSUdBVElPTl9TSURFX0NIQU5ORUxfSVNPTEFUSU9OX1BPTElDWTsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1BST0NFU1NfTUlUSUdBVElPTl9VU0VSX1NIQURPV19TVEFDS19QT0xJQ1kgew0K
ICAgIHVuaW9uIHsNCiAgICAgICAgRFdPUkQgRmxhZ3M7DQogICAgICAgIHN0cnVjdCB7DQogICAg
ICAgICAgICBEV09SRCBFbmFibGVVc2VyU2hhZG93U3RhY2sgOiAxOw0KICAgICAgICAgICAgRFdP
UkQgUmVzZXJ2ZWRGbGFncyA6IDMxOw0KICAgICAgICB9IDsNCiAgICB9IDsNCn0gUFJPQ0VTU19N
SVRJR0FUSU9OX1VTRVJfU0hBRE9XX1NUQUNLX1BPTElDWSwgKlBQUk9DRVNTX01JVElHQVRJT05f
VVNFUl9TSEFET1dfU1RBQ0tfUE9MSUNZOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9KT0JPQkpFQ1Rf
QkFTSUNfQUNDT1VOVElOR19JTkZPUk1BVElPTiB7DQogICAgTEFSR0VfSU5URUdFUiBUb3RhbFVz
ZXJUaW1lOw0KICAgIExBUkdFX0lOVEVHRVIgVG90YWxLZXJuZWxUaW1lOw0KICAgIExBUkdFX0lO
VEVHRVIgVGhpc1BlcmlvZFRvdGFsVXNlclRpbWU7DQogICAgTEFSR0VfSU5URUdFUiBUaGlzUGVy
aW9kVG90YWxLZXJuZWxUaW1lOw0KICAgIERXT1JEIFRvdGFsUGFnZUZhdWx0Q291bnQ7DQogICAg
RFdPUkQgVG90YWxQcm9jZXNzZXM7DQogICAgRFdPUkQgQWN0aXZlUHJvY2Vzc2VzOw0KICAgIERX
T1JEIFRvdGFsVGVybWluYXRlZFByb2Nlc3NlczsNCn0gSk9CT0JKRUNUX0JBU0lDX0FDQ09VTlRJ
TkdfSU5GT1JNQVRJT04sICpQSk9CT0JKRUNUX0JBU0lDX0FDQ09VTlRJTkdfSU5GT1JNQVRJT047
DQoNCnR5cGVkZWYgc3RydWN0IF9KT0JPQkpFQ1RfQkFTSUNfTElNSVRfSU5GT1JNQVRJT04gew0K
ICAgIExBUkdFX0lOVEVHRVIgUGVyUHJvY2Vzc1VzZXJUaW1lTGltaXQ7DQogICAgTEFSR0VfSU5U
RUdFUiBQZXJKb2JVc2VyVGltZUxpbWl0Ow0KICAgIERXT1JEIExpbWl0RmxhZ3M7DQogICAgU0la
RV9UIE1pbmltdW1Xb3JraW5nU2V0U2l6ZTsNCiAgICBTSVpFX1QgTWF4aW11bVdvcmtpbmdTZXRT
aXplOw0KICAgIERXT1JEIEFjdGl2ZVByb2Nlc3NMaW1pdDsNCiAgICBVTE9OR19QVFIgQWZmaW5p
dHk7DQogICAgRFdPUkQgUHJpb3JpdHlDbGFzczsNCiAgICBEV09SRCBTY2hlZHVsaW5nQ2xhc3M7
DQp9IEpPQk9CSkVDVF9CQVNJQ19MSU1JVF9JTkZPUk1BVElPTiwgKlBKT0JPQkpFQ1RfQkFTSUNf
TElNSVRfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYgc3RydWN0IF9KT0JPQkpFQ1RfRVhURU5ERURf
TElNSVRfSU5GT1JNQVRJT04gew0KICAgIEpPQk9CSkVDVF9CQVNJQ19MSU1JVF9JTkZPUk1BVElP
TiBCYXNpY0xpbWl0SW5mb3JtYXRpb247DQogICAgSU9fQ09VTlRFUlMgSW9JbmZvOw0KICAgIFNJ
WkVfVCBQcm9jZXNzTWVtb3J5TGltaXQ7DQogICAgU0laRV9UIEpvYk1lbW9yeUxpbWl0Ow0KICAg
IFNJWkVfVCBQZWFrUHJvY2Vzc01lbW9yeVVzZWQ7DQogICAgU0laRV9UIFBlYWtKb2JNZW1vcnlV
c2VkOw0KfSBKT0JPQkpFQ1RfRVhURU5ERURfTElNSVRfSU5GT1JNQVRJT04sICpQSk9CT0JKRUNU
X0VYVEVOREVEX0xJTUlUX0lORk9STUFUSU9OOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0pPQk9C
SkVDVF9CQVNJQ19QUk9DRVNTX0lEX0xJU1Qgew0KICAgIERXT1JEIE51bWJlck9mQXNzaWduZWRQ
cm9jZXNzZXM7DQogICAgRFdPUkQgTnVtYmVyT2ZQcm9jZXNzSWRzSW5MaXN0Ow0KICAgIFVMT05H
X1BUUiBQcm9jZXNzSWRMaXN0WzFdOw0KfSBKT0JPQkpFQ1RfQkFTSUNfUFJPQ0VTU19JRF9MSVNU
LCAqUEpPQk9CSkVDVF9CQVNJQ19QUk9DRVNTX0lEX0xJU1Q7DQoNCnR5cGVkZWYgc3RydWN0IF9K
T0JPQkpFQ1RfQkFTSUNfVUlfUkVTVFJJQ1RJT05TIHsNCiAgICBEV09SRCBVSVJlc3RyaWN0aW9u
c0NsYXNzOw0KfSBKT0JPQkpFQ1RfQkFTSUNfVUlfUkVTVFJJQ1RJT05TLCAqUEpPQk9CSkVDVF9C
QVNJQ19VSV9SRVNUUklDVElPTlM7DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0pPQk9CSkVD
VF9TRUNVUklUWV9MSU1JVF9JTkZPUk1BVElPTiB7DQogICAgRFdPUkQgU2VjdXJpdHlMaW1pdEZs
YWdzIDsNCiAgICBIQU5ETEUgSm9iVG9rZW4gOw0KICAgIFBUT0tFTl9HUk9VUFMgU2lkc1RvRGlz
YWJsZSA7DQogICAgUFRPS0VOX1BSSVZJTEVHRVMgUHJpdmlsZWdlc1RvRGVsZXRlIDsNCiAgICBQ
VE9LRU5fR1JPVVBTIFJlc3RyaWN0ZWRTaWRzIDsNCn0gSk9CT0JKRUNUX1NFQ1VSSVRZX0xJTUlU
X0lORk9STUFUSU9OLCAqUEpPQk9CSkVDVF9TRUNVUklUWV9MSU1JVF9JTkZPUk1BVElPTiA7DQoN
CnR5cGVkZWYgc3RydWN0IF9KT0JPQkpFQ1RfRU5EX09GX0pPQl9USU1FX0lORk9STUFUSU9OIHsN
CiAgICBEV09SRCBFbmRPZkpvYlRpbWVBY3Rpb247DQp9IEpPQk9CSkVDVF9FTkRfT0ZfSk9CX1RJ
TUVfSU5GT1JNQVRJT04sICpQSk9CT0JKRUNUX0VORF9PRl9KT0JfVElNRV9JTkZPUk1BVElPTjsN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX0pPQk9CSkVDVF9BU1NPQ0lBVEVfQ09NUExFVElPTl9QT1JUIHsN
CiAgICBQVk9JRCBDb21wbGV0aW9uS2V5Ow0KICAgIEhBTkRMRSBDb21wbGV0aW9uUG9ydDsNCn0g
Sk9CT0JKRUNUX0FTU09DSUFURV9DT01QTEVUSU9OX1BPUlQsICpQSk9CT0JKRUNUX0FTU09DSUFU
RV9DT01QTEVUSU9OX1BPUlQ7DQoNCnR5cGVkZWYgc3RydWN0IF9KT0JPQkpFQ1RfQkFTSUNfQU5E
X0lPX0FDQ09VTlRJTkdfSU5GT1JNQVRJT04gew0KICAgIEpPQk9CSkVDVF9CQVNJQ19BQ0NPVU5U
SU5HX0lORk9STUFUSU9OIEJhc2ljSW5mbzsNCiAgICBJT19DT1VOVEVSUyBJb0luZm87DQp9IEpP
Qk9CSkVDVF9CQVNJQ19BTkRfSU9fQUNDT1VOVElOR19JTkZPUk1BVElPTiwgKlBKT0JPQkpFQ1Rf
QkFTSUNfQU5EX0lPX0FDQ09VTlRJTkdfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYgc3RydWN0IF9K
T0JPQkpFQ1RfSk9CU0VUX0lORk9STUFUSU9OIHsNCiAgICBEV09SRCBNZW1iZXJMZXZlbDsNCn0g
Sk9CT0JKRUNUX0pPQlNFVF9JTkZPUk1BVElPTiwgKlBKT0JPQkpFQ1RfSk9CU0VUX0lORk9STUFU
SU9OOw0KDQp0eXBlZGVmIGVudW0gX0pPQk9CSkVDVF9SQVRFX0NPTlRST0xfVE9MRVJBTkNFIHsN
CiAgICBUb2xlcmFuY2VMb3cgPSAxLA0KICAgIFRvbGVyYW5jZU1lZGl1bSwNCiAgICBUb2xlcmFu
Y2VIaWdoDQp9IEpPQk9CSkVDVF9SQVRFX0NPTlRST0xfVE9MRVJBTkNFLCAqUEpPQk9CSkVDVF9S
QVRFX0NPTlRST0xfVE9MRVJBTkNFOw0KDQp0eXBlZGVmIGVudW0gX0pPQk9CSkVDVF9SQVRFX0NP
TlRST0xfVE9MRVJBTkNFX0lOVEVSVkFMIHsNCiAgICBUb2xlcmFuY2VJbnRlcnZhbFNob3J0ID0g
MSwNCiAgICBUb2xlcmFuY2VJbnRlcnZhbE1lZGl1bSwNCiAgICBUb2xlcmFuY2VJbnRlcnZhbExv
bmcNCn0gSk9CT0JKRUNUX1JBVEVfQ09OVFJPTF9UT0xFUkFOQ0VfSU5URVJWQUwsDQogICpQSk9C
T0JKRUNUX1JBVEVfQ09OVFJPTF9UT0xFUkFOQ0VfSU5URVJWQUw7DQoNCnR5cGVkZWYgc3RydWN0
IF9KT0JPQkpFQ1RfTk9USUZJQ0FUSU9OX0xJTUlUX0lORk9STUFUSU9OIHsNCiAgICBEV09SRDY0
IElvUmVhZEJ5dGVzTGltaXQ7DQogICAgRFdPUkQ2NCBJb1dyaXRlQnl0ZXNMaW1pdDsNCiAgICBM
QVJHRV9JTlRFR0VSIFBlckpvYlVzZXJUaW1lTGltaXQ7DQogICAgRFdPUkQ2NCBKb2JNZW1vcnlM
aW1pdDsNCiAgICBKT0JPQkpFQ1RfUkFURV9DT05UUk9MX1RPTEVSQU5DRSBSYXRlQ29udHJvbFRv
bGVyYW5jZTsNCiAgICBKT0JPQkpFQ1RfUkFURV9DT05UUk9MX1RPTEVSQU5DRV9JTlRFUlZBTCBS
YXRlQ29udHJvbFRvbGVyYW5jZUludGVydmFsOw0KICAgIERXT1JEIExpbWl0RmxhZ3M7DQp9IEpP
Qk9CSkVDVF9OT1RJRklDQVRJT05fTElNSVRfSU5GT1JNQVRJT04sICpQSk9CT0JKRUNUX05PVElG
SUNBVElPTl9MSU1JVF9JTkZPUk1BVElPTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgSk9CT0JKRUNUX05P
VElGSUNBVElPTl9MSU1JVF9JTkZPUk1BVElPTl8yIHsNCiAgICBEV09SRDY0IElvUmVhZEJ5dGVz
TGltaXQ7DQogICAgRFdPUkQ2NCBJb1dyaXRlQnl0ZXNMaW1pdDsNCiAgICBMQVJHRV9JTlRFR0VS
IFBlckpvYlVzZXJUaW1lTGltaXQ7DQogICAgdW5pb24gew0KICAgICAgICBEV09SRDY0IEpvYkhp
Z2hNZW1vcnlMaW1pdDsNCiAgICAgICAgRFdPUkQ2NCBKb2JNZW1vcnlMaW1pdDsNCiAgICB9IDsN
Cg0KICAgIHVuaW9uIHsNCiAgICAgICAgSk9CT0JKRUNUX1JBVEVfQ09OVFJPTF9UT0xFUkFOQ0Ug
UmF0ZUNvbnRyb2xUb2xlcmFuY2U7DQogICAgICAgIEpPQk9CSkVDVF9SQVRFX0NPTlRST0xfVE9M
RVJBTkNFIENwdVJhdGVDb250cm9sVG9sZXJhbmNlOw0KICAgIH0gOw0KDQogICAgdW5pb24gew0K
ICAgICAgICBKT0JPQkpFQ1RfUkFURV9DT05UUk9MX1RPTEVSQU5DRV9JTlRFUlZBTCBSYXRlQ29u
dHJvbFRvbGVyYW5jZUludGVydmFsOw0KICAgICAgICBKT0JPQkpFQ1RfUkFURV9DT05UUk9MX1RP
TEVSQU5DRV9JTlRFUlZBTA0KICAgICAgICAgICAgQ3B1UmF0ZUNvbnRyb2xUb2xlcmFuY2VJbnRl
cnZhbDsNCiAgICB9IDsNCg0KICAgIERXT1JEIExpbWl0RmxhZ3M7DQogICAgSk9CT0JKRUNUX1JB
VEVfQ09OVFJPTF9UT0xFUkFOQ0UgSW9SYXRlQ29udHJvbFRvbGVyYW5jZTsNCiAgICBEV09SRDY0
IEpvYkxvd01lbW9yeUxpbWl0Ow0KICAgIEpPQk9CSkVDVF9SQVRFX0NPTlRST0xfVE9MRVJBTkNF
X0lOVEVSVkFMIElvUmF0ZUNvbnRyb2xUb2xlcmFuY2VJbnRlcnZhbDsNCiAgICBKT0JPQkpFQ1Rf
UkFURV9DT05UUk9MX1RPTEVSQU5DRSBOZXRSYXRlQ29udHJvbFRvbGVyYW5jZTsNCiAgICBKT0JP
QkpFQ1RfUkFURV9DT05UUk9MX1RPTEVSQU5DRV9JTlRFUlZBTCBOZXRSYXRlQ29udHJvbFRvbGVy
YW5jZUludGVydmFsOw0KfSBKT0JPQkpFQ1RfTk9USUZJQ0FUSU9OX0xJTUlUX0lORk9STUFUSU9O
XzI7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0pPQk9CSkVDVF9MSU1JVF9WSU9MQVRJT05fSU5GT1JN
QVRJT04gew0KICAgIERXT1JEIExpbWl0RmxhZ3M7DQogICAgRFdPUkQgVmlvbGF0aW9uTGltaXRG
bGFnczsNCiAgICBEV09SRDY0IElvUmVhZEJ5dGVzOw0KICAgIERXT1JENjQgSW9SZWFkQnl0ZXNM
aW1pdDsNCiAgICBEV09SRDY0IElvV3JpdGVCeXRlczsNCiAgICBEV09SRDY0IElvV3JpdGVCeXRl
c0xpbWl0Ow0KICAgIExBUkdFX0lOVEVHRVIgUGVySm9iVXNlclRpbWU7DQogICAgTEFSR0VfSU5U
RUdFUiBQZXJKb2JVc2VyVGltZUxpbWl0Ow0KICAgIERXT1JENjQgSm9iTWVtb3J5Ow0KICAgIERX
T1JENjQgSm9iTWVtb3J5TGltaXQ7DQogICAgSk9CT0JKRUNUX1JBVEVfQ09OVFJPTF9UT0xFUkFO
Q0UgUmF0ZUNvbnRyb2xUb2xlcmFuY2U7DQogICAgSk9CT0JKRUNUX1JBVEVfQ09OVFJPTF9UT0xF
UkFOQ0UgUmF0ZUNvbnRyb2xUb2xlcmFuY2VMaW1pdDsNCn0gSk9CT0JKRUNUX0xJTUlUX1ZJT0xB
VElPTl9JTkZPUk1BVElPTiwgKlBKT0JPQkpFQ1RfTElNSVRfVklPTEFUSU9OX0lORk9STUFUSU9O
Ow0KDQp0eXBlZGVmIHN0cnVjdCBKT0JPQkpFQ1RfTElNSVRfVklPTEFUSU9OX0lORk9STUFUSU9O
XzIgew0KICAgIERXT1JEIExpbWl0RmxhZ3M7DQogICAgRFdPUkQgVmlvbGF0aW9uTGltaXRGbGFn
czsNCiAgICBEV09SRDY0IElvUmVhZEJ5dGVzOw0KICAgIERXT1JENjQgSW9SZWFkQnl0ZXNMaW1p
dDsNCiAgICBEV09SRDY0IElvV3JpdGVCeXRlczsNCiAgICBEV09SRDY0IElvV3JpdGVCeXRlc0xp
bWl0Ow0KICAgIExBUkdFX0lOVEVHRVIgUGVySm9iVXNlclRpbWU7DQogICAgTEFSR0VfSU5URUdF
UiBQZXJKb2JVc2VyVGltZUxpbWl0Ow0KICAgIERXT1JENjQgSm9iTWVtb3J5Ow0KICAgIHVuaW9u
IHsNCiAgICAgICAgRFdPUkQ2NCBKb2JIaWdoTWVtb3J5TGltaXQ7DQogICAgICAgIERXT1JENjQg
Sm9iTWVtb3J5TGltaXQ7DQogICAgfSA7DQoNCiAgICB1bmlvbiB7DQogICAgICAgIEpPQk9CSkVD
VF9SQVRFX0NPTlRST0xfVE9MRVJBTkNFIFJhdGVDb250cm9sVG9sZXJhbmNlOw0KICAgICAgICBK
T0JPQkpFQ1RfUkFURV9DT05UUk9MX1RPTEVSQU5DRSBDcHVSYXRlQ29udHJvbFRvbGVyYW5jZTsN
CiAgICB9IDsNCg0KICAgIHVuaW9uIHsNCiAgICAgICAgSk9CT0JKRUNUX1JBVEVfQ09OVFJPTF9U
T0xFUkFOQ0UgUmF0ZUNvbnRyb2xUb2xlcmFuY2VMaW1pdDsNCiAgICAgICAgSk9CT0JKRUNUX1JB
VEVfQ09OVFJPTF9UT0xFUkFOQ0UgQ3B1UmF0ZUNvbnRyb2xUb2xlcmFuY2VMaW1pdDsNCiAgICB9
IDsNCg0KICAgIERXT1JENjQgSm9iTG93TWVtb3J5TGltaXQ7DQogICAgSk9CT0JKRUNUX1JBVEVf
Q09OVFJPTF9UT0xFUkFOQ0UgSW9SYXRlQ29udHJvbFRvbGVyYW5jZTsNCiAgICBKT0JPQkpFQ1Rf
UkFURV9DT05UUk9MX1RPTEVSQU5DRSBJb1JhdGVDb250cm9sVG9sZXJhbmNlTGltaXQ7DQogICAg
Sk9CT0JKRUNUX1JBVEVfQ09OVFJPTF9UT0xFUkFOQ0UgTmV0UmF0ZUNvbnRyb2xUb2xlcmFuY2U7
DQogICAgSk9CT0JKRUNUX1JBVEVfQ09OVFJPTF9UT0xFUkFOQ0UgTmV0UmF0ZUNvbnRyb2xUb2xl
cmFuY2VMaW1pdDsNCn0gSk9CT0JKRUNUX0xJTUlUX1ZJT0xBVElPTl9JTkZPUk1BVElPTl8yOw0K
DQoNCnR5cGVkZWYgc3RydWN0IF9KT0JPQkpFQ1RfQ1BVX1JBVEVfQ09OVFJPTF9JTkZPUk1BVElP
TiB7DQogICAgRFdPUkQgQ29udHJvbEZsYWdzOw0KICAgIHVuaW9uIHsNCiAgICAgICAgRFdPUkQg
Q3B1UmF0ZTsNCiAgICAgICAgRFdPUkQgV2VpZ2h0Ow0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAg
ICAgICAgV09SRCAgIE1pblJhdGU7DQogICAgICAgICAgICBXT1JEICAgTWF4UmF0ZTsNCiAgICAg
ICAgfSA7DQogICAgfSA7DQp9IEpPQk9CSkVDVF9DUFVfUkFURV9DT05UUk9MX0lORk9STUFUSU9O
LCAqUEpPQk9CSkVDVF9DUFVfUkFURV9DT05UUk9MX0lORk9STUFUSU9OOw0KDQoNCg0KDQoNCnR5
cGVkZWYgZW51bSBKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1Mgew0KICAgIEpPQl9P
QkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9FTkFCTEUgPSAweDEsDQogICAgSk9CX09CSkVDVF9ORVRf
UkFURV9DT05UUk9MX01BWF9CQU5EV0lEVEggPSAweDIsDQogICAgSk9CX09CSkVDVF9ORVRfUkFU
RV9DT05UUk9MX0RTQ1BfVEFHID0gMHg0LA0KICAgIEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJP
TF9WQUxJRF9GTEFHUyA9IDB4Nw0KfSBKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1M7
DQoNCg0KDQpleHRlcm4gIkMrKyIgeyBpbmxpbmUgY29uc3RleHByIEpPQl9PQkpFQ1RfTkVUX1JB
VEVfQ09OVFJPTF9GTEFHUyBvcGVyYXRvciB8IChKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xf
RkxBR1MgYSwgSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTIGIpIHRocm93KCkgeyBy
ZXR1cm4gSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTKCgoX0VOVU1fRkxBR19TSVpF
RF9JTlRFR0VSPEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUz46OnR5cGUpYSkgfCAo
KF9FTlVNX0ZMQUdfU0laRURfSU5URUdFUjxKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxB
R1M+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdT
ICZvcGVyYXRvciB8PSAoSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTICZhLCBKT0Jf
T0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1MgYikgdGhyb3coKSB7IHJldHVybiAoSk9CX09C
SkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTICYpKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VS
PEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUz46OnR5cGUgJilhKSB8PSAoKF9FTlVN
X0ZMQUdfU0laRURfSU5URUdFUjxKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1M+Ojp0
eXBlKWIpKTsgfSBpbmxpbmUgY29uc3RleHByIEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9G
TEFHUyBvcGVyYXRvciAmIChKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1MgYSwgSk9C
X09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTIGIpIHRocm93KCkgeyByZXR1cm4gSk9CX09C
SkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPEpP
Ql9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUz46OnR5cGUpYSkgJiAoKF9FTlVNX0ZMQUdf
U0laRURfSU5URUdFUjxKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1M+Ojp0eXBlKWIp
KTsgfSBpbmxpbmUgSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTICZvcGVyYXRvciAm
PSAoSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTICZhLCBKT0JfT0JKRUNUX05FVF9S
QVRFX0NPTlRST0xfRkxBR1MgYikgdGhyb3coKSB7IHJldHVybiAoSk9CX09CSkVDVF9ORVRfUkFU
RV9DT05UUk9MX0ZMQUdTICYpKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPEpPQl9PQkpFQ1Rf
TkVUX1JBVEVfQ09OVFJPTF9GTEFHUz46OnR5cGUgJilhKSAmPSAoKF9FTlVNX0ZMQUdfU0laRURf
SU5URUdFUjxKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1M+Ojp0eXBlKWIpKTsgfSBp
bmxpbmUgY29uc3RleHByIEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUyBvcGVyYXRv
ciB+IChKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1MgYSkgdGhyb3coKSB7IHJldHVy
biBKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1MofigoX0VOVU1fRkxBR19TSVpFRF9J
TlRFR0VSPEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUz46OnR5cGUpYSkpOyB9IGlu
bGluZSBjb25zdGV4cHIgSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0ZMQUdTIG9wZXJhdG9y
IF4gKEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUyBhLCBKT0JfT0JKRUNUX05FVF9S
QVRFX0NPTlRST0xfRkxBR1MgYikgdGhyb3coKSB7IHJldHVybiBKT0JfT0JKRUNUX05FVF9SQVRF
X0NPTlRST0xfRkxBR1MoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9ORVRf
UkFURV9DT05UUk9MX0ZMQUdTPjo6dHlwZSlhKSBeICgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VS
PEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUz46OnR5cGUpYikpOyB9IGlubGluZSBK
T0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1MgJm9wZXJhdG9yIF49IChKT0JfT0JKRUNU
X05FVF9SQVRFX0NPTlRST0xfRkxBR1MgJmEsIEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9G
TEFHUyBiKSB0aHJvdygpIHsgcmV0dXJuIChKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxB
R1MgJikoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9ORVRfUkFURV9DT05U
Uk9MX0ZMQUdTPjo6dHlwZSAmKWEpIF49ICgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPEpPQl9P
QkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9GTEFHUz46OnR5cGUpYikpOyB9IH0NCnR5cGVkZWYgY2hh
ciBfX0NfQVNTRVJUX19bKEpPQl9PQkpFQ1RfTkVUX1JBVEVfQ09OVFJPTF9WQUxJRF9GTEFHUyA9
PSAoSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0VOQUJMRSArIEpPQl9PQkpFQ1RfTkVUX1JB
VEVfQ09OVFJPTF9NQVhfQkFORFdJRFRIICsgSk9CX09CSkVDVF9ORVRfUkFURV9DT05UUk9MX0RT
Q1BfVEFHKSk/MTotMV07DQojbGluZSAxMjEyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiNs
aW5lIDEyMTI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCnR5cGVkZWYgc3RydWN0IEpP
Qk9CSkVDVF9ORVRfUkFURV9DT05UUk9MX0lORk9STUFUSU9OIHsNCiAgICBEV09SRDY0IE1heEJh
bmR3aWR0aDsNCiAgICBKT0JfT0JKRUNUX05FVF9SQVRFX0NPTlRST0xfRkxBR1MgQ29udHJvbEZs
YWdzOw0KICAgIEJZVEUgIERzY3BUYWc7DQp9IEpPQk9CSkVDVF9ORVRfUkFURV9DT05UUk9MX0lO
Rk9STUFUSU9OOw0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBKT0JfT0JKRUNUX0lPX1JB
VEVfQ09OVFJPTF9GTEFHUyB7DQogICAgSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRU5BQkxF
ID0gMHgxLA0KICAgIEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX1NUQU5EQUxPTkVfVk9MVU1F
ID0gMHgyLA0KICAgIEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZPUkNFX1VOSVRfQUNDRVNT
X0FMTCA9IDB4NCwNCiAgICBKT0JfT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9GT1JDRV9VTklUX0FD
Q0VTU19PTl9TT0ZUX0NBUCA9IDB4OCwNCiAgICBKT0JfT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9W
QUxJRF9GTEFHUyA9IEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0VOQUJMRSB8DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKT0JfT0JKRUNUX0lPX1JBVEVf
Q09OVFJPTF9TVEFOREFMT05FX1ZPTFVNRSB8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBKT0JfT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9GT1JDRV9VTklUX0FD
Q0VTU19BTEwgfA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRk9SQ0VfVU5JVF9BQ0NFU1NfT05fU09GVF9DQVAN
Cn0gSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1M7DQoNCg0KDQpleHRlcm4gIkMrKyIg
eyBpbmxpbmUgY29uc3RleHByIEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTIG9wZXJh
dG9yIHwgKEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTIGEsIEpPQl9PQkpFQ1RfSU9f
UkFURV9DT05UUk9MX0ZMQUdTIGIpIHRocm93KCkgeyByZXR1cm4gSk9CX09CSkVDVF9JT19SQVRF
X0NPTlRST0xfRkxBR1MoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9JT19S
QVRFX0NPTlRST0xfRkxBR1M+Ojp0eXBlKWEpIHwgKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8
Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1M+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgSk9C
X09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1MgJm9wZXJhdG9yIHw9IChKT0JfT0JKRUNUX0lP
X1JBVEVfQ09OVFJPTF9GTEFHUyAmYSwgSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1Mg
YikgdGhyb3coKSB7IHJldHVybiAoSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1MgJiko
KChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxB
R1M+Ojp0eXBlICYpYSkgfD0gKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9J
T19SQVRFX0NPTlRST0xfRkxBR1M+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgY29uc3RleHByIEpPQl9P
QkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTIG9wZXJhdG9yICYgKEpPQl9PQkpFQ1RfSU9fUkFU
RV9DT05UUk9MX0ZMQUdTIGEsIEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTIGIpIHRo
cm93KCkgeyByZXR1cm4gSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1MoKChfRU5VTV9G
TEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1M+Ojp0eXBl
KWEpICYgKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRS
T0xfRkxBR1M+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xf
RkxBR1MgJm9wZXJhdG9yICY9IChKT0JfT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9GTEFHUyAmYSwg
Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1MgYikgdGhyb3coKSB7IHJldHVybiAoSk9C
X09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1MgJikoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVH
RVI8Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1M+Ojp0eXBlICYpYSkgJj0gKChfRU5V
TV9GTEFHX1NJWkVEX0lOVEVHRVI8Sk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1M+Ojp0
eXBlKWIpKTsgfSBpbmxpbmUgY29uc3RleHByIEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZM
QUdTIG9wZXJhdG9yIH4gKEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTIGEpIHRocm93
KCkgeyByZXR1cm4gSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1MofigoX0VOVU1fRkxB
R19TSVpFRF9JTlRFR0VSPEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTPjo6dHlwZSlh
KSk7IH0gaW5saW5lIGNvbnN0ZXhwciBKT0JfT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9GTEFHUyBv
cGVyYXRvciBeIChKT0JfT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9GTEFHUyBhLCBKT0JfT0JKRUNU
X0lPX1JBVEVfQ09OVFJPTF9GTEFHUyBiKSB0aHJvdygpIHsgcmV0dXJuIEpPQl9PQkpFQ1RfSU9f
UkFURV9DT05UUk9MX0ZMQUdTKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPEpPQl9PQkpFQ1Rf
SU9fUkFURV9DT05UUk9MX0ZMQUdTPjo6dHlwZSlhKSBeICgoX0VOVU1fRkxBR19TSVpFRF9JTlRF
R0VSPEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTPjo6dHlwZSliKSk7IH0gaW5saW5l
IEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTICZvcGVyYXRvciBePSAoSk9CX09CSkVD
VF9JT19SQVRFX0NPTlRST0xfRkxBR1MgJmEsIEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZM
QUdTIGIpIHRocm93KCkgeyByZXR1cm4gKEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9MX0ZMQUdT
ICYpKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPEpPQl9PQkpFQ1RfSU9fUkFURV9DT05UUk9M
X0ZMQUdTPjo6dHlwZSAmKWEpIF49ICgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPEpPQl9PQkpF
Q1RfSU9fUkFURV9DT05UUk9MX0ZMQUdTPjo6dHlwZSliKSk7IH0gfQ0KDQojbGluZSAxMjE2MCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCnR5cGVkZWYgc3RydWN0IEpPQk9CSkVDVF9JT19SQVRF
X0NPTlRST0xfSU5GT1JNQVRJT05fTkFUSVZFIHsNCiAgICBMT05HNjQgTWF4SW9wczsNCiAgICBM
T05HNjQgTWF4QmFuZHdpZHRoOw0KICAgIExPTkc2NCBSZXNlcnZhdGlvbklvcHM7DQogICAgUFdT
VFIgVm9sdW1lTmFtZTsNCiAgICBEV09SRCBCYXNlSW9TaXplOw0KICAgIEpPQl9PQkpFQ1RfSU9f
UkFURV9DT05UUk9MX0ZMQUdTIENvbnRyb2xGbGFnczsNCiAgICBXT1JEICAgVm9sdW1lTmFtZUxl
bmd0aDsNCn0gSk9CT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9JTkZPUk1BVElPTl9OQVRJVkU7DQoN
CnR5cGVkZWYgSk9CT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9JTkZPUk1BVElPTl9OQVRJVkUNCiAg
ICBKT0JPQkpFQ1RfSU9fUkFURV9DT05UUk9MX0lORk9STUFUSU9OX05BVElWRV9WMTsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSk9CT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9JTkZPUk1BVElPTl9OQVRJVkVf
VjIgew0KICAgIExPTkc2NCBNYXhJb3BzOw0KICAgIExPTkc2NCBNYXhCYW5kd2lkdGg7DQogICAg
TE9ORzY0IFJlc2VydmF0aW9uSW9wczsNCiAgICBQV1NUUiBWb2x1bWVOYW1lOw0KICAgIERXT1JE
IEJhc2VJb1NpemU7DQogICAgSk9CX09CSkVDVF9JT19SQVRFX0NPTlRST0xfRkxBR1MgQ29udHJv
bEZsYWdzOw0KICAgIFdPUkQgICBWb2x1bWVOYW1lTGVuZ3RoOw0KICAgIExPTkc2NCBDcml0aWNh
bFJlc2VydmF0aW9uSW9wczsNCiAgICBMT05HNjQgUmVzZXJ2YXRpb25CYW5kd2lkdGg7DQogICAg
TE9ORzY0IENyaXRpY2FsUmVzZXJ2YXRpb25CYW5kd2lkdGg7DQogICAgTE9ORzY0IE1heFRpbWVQ
ZXJjZW50Ow0KICAgIExPTkc2NCBSZXNlcnZhdGlvblRpbWVQZXJjZW50Ow0KICAgIExPTkc2NCBD
cml0aWNhbFJlc2VydmF0aW9uVGltZVBlcmNlbnQ7DQp9IEpPQk9CSkVDVF9JT19SQVRFX0NPTlRS
T0xfSU5GT1JNQVRJT05fTkFUSVZFX1YyOw0KDQp0eXBlZGVmIHN0cnVjdCBKT0JPQkpFQ1RfSU9f
UkFURV9DT05UUk9MX0lORk9STUFUSU9OX05BVElWRV9WMyB7DQogICAgTE9ORzY0IE1heElvcHM7
DQogICAgTE9ORzY0IE1heEJhbmR3aWR0aDsNCiAgICBMT05HNjQgUmVzZXJ2YXRpb25Jb3BzOw0K
ICAgIFBXU1RSIFZvbHVtZU5hbWU7DQogICAgRFdPUkQgQmFzZUlvU2l6ZTsNCiAgICBKT0JfT0JK
RUNUX0lPX1JBVEVfQ09OVFJPTF9GTEFHUyBDb250cm9sRmxhZ3M7DQogICAgV09SRCAgIFZvbHVt
ZU5hbWVMZW5ndGg7DQogICAgTE9ORzY0IENyaXRpY2FsUmVzZXJ2YXRpb25Jb3BzOw0KICAgIExP
Tkc2NCBSZXNlcnZhdGlvbkJhbmR3aWR0aDsNCiAgICBMT05HNjQgQ3JpdGljYWxSZXNlcnZhdGlv
bkJhbmR3aWR0aDsNCiAgICBMT05HNjQgTWF4VGltZVBlcmNlbnQ7DQogICAgTE9ORzY0IFJlc2Vy
dmF0aW9uVGltZVBlcmNlbnQ7DQogICAgTE9ORzY0IENyaXRpY2FsUmVzZXJ2YXRpb25UaW1lUGVy
Y2VudDsNCiAgICBMT05HNjQgU29mdE1heElvcHM7DQogICAgTE9ORzY0IFNvZnRNYXhCYW5kd2lk
dGg7DQogICAgTE9ORzY0IFNvZnRNYXhUaW1lUGVyY2VudDsNCiAgICBMT05HNjQgTGltaXRFeGNl
c3NOb3RpZnlJb3BzOw0KICAgIExPTkc2NCBMaW1pdEV4Y2Vzc05vdGlmeUJhbmR3aWR0aDsNCiAg
ICBMT05HNjQgTGltaXRFeGNlc3NOb3RpZnlUaW1lUGVyY2VudDsNCn0gSk9CT0JKRUNUX0lPX1JB
VEVfQ09OVFJPTF9JTkZPUk1BVElPTl9OQVRJVkVfVjM7DQoNCg0KDQp0eXBlZGVmIGVudW0gSk9C
T0JKRUNUX0lPX0FUVFJJQlVUSU9OX0NPTlRST0xfRkxBR1Mgew0KICAgIEpPQk9CSkVDVF9JT19B
VFRSSUJVVElPTl9DT05UUk9MX0VOQUJMRSA9IDB4MSwNCiAgICBKT0JPQkpFQ1RfSU9fQVRUUklC
VVRJT05fQ09OVFJPTF9ESVNBQkxFID0gMHgyLA0KICAgIEpPQk9CSkVDVF9JT19BVFRSSUJVVElP
Tl9DT05UUk9MX1ZBTElEX0ZMQUdTID0gMHgzDQp9IEpPQk9CSkVDVF9JT19BVFRSSUJVVElPTl9D
T05UUk9MX0ZMQUdTOw0KDQp0eXBlZGVmIHN0cnVjdCBfSk9CT0JKRUNUX0lPX0FUVFJJQlVUSU9O
X1NUQVRTIHsNCg0KICAgIFVMT05HX1BUUiBJb0NvdW50Ow0KICAgIFVMT05HTE9ORyBUb3RhbE5v
bk92ZXJsYXBwZWRRdWV1ZVRpbWU7DQogICAgVUxPTkdMT05HIFRvdGFsTm9uT3ZlcmxhcHBlZFNl
cnZpY2VUaW1lOw0KICAgIFVMT05HTE9ORyBUb3RhbFNpemU7DQoNCn0gSk9CT0JKRUNUX0lPX0FU
VFJJQlVUSU9OX1NUQVRTLCAqUEpPQk9CSkVDVF9JT19BVFRSSUJVVElPTl9TVEFUUzsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX0pPQk9CSkVDVF9JT19BVFRSSUJVVElPTl9JTkZPUk1BVElPTiB7DQogICAg
RFdPUkQgQ29udHJvbEZsYWdzOw0KDQogICAgSk9CT0JKRUNUX0lPX0FUVFJJQlVUSU9OX1NUQVRT
IFJlYWRTdGF0czsNCiAgICBKT0JPQkpFQ1RfSU9fQVRUUklCVVRJT05fU1RBVFMgV3JpdGVTdGF0
czsNCg0KfSBKT0JPQkpFQ1RfSU9fQVRUUklCVVRJT05fSU5GT1JNQVRJT04sICpQSk9CT0JKRUNU
X0lPX0FUVFJJQlVUSU9OX0lORk9STUFUSU9OOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBlbnVtIF9KT0JPQkpFQ1RJTkZPQ0xBU1Mgew0KICAgIEpvYk9iamVjdEJhc2lj
QWNjb3VudGluZ0luZm9ybWF0aW9uID0gMSwNCiAgICBKb2JPYmplY3RCYXNpY0xpbWl0SW5mb3Jt
YXRpb24sDQogICAgSm9iT2JqZWN0QmFzaWNQcm9jZXNzSWRMaXN0LA0KICAgIEpvYk9iamVjdEJh
c2ljVUlSZXN0cmljdGlvbnMsDQogICAgSm9iT2JqZWN0U2VjdXJpdHlMaW1pdEluZm9ybWF0aW9u
LCAgDQogICAgSm9iT2JqZWN0RW5kT2ZKb2JUaW1lSW5mb3JtYXRpb24sDQogICAgSm9iT2JqZWN0
QXNzb2NpYXRlQ29tcGxldGlvblBvcnRJbmZvcm1hdGlvbiwNCiAgICBKb2JPYmplY3RCYXNpY0Fu
ZElvQWNjb3VudGluZ0luZm9ybWF0aW9uLA0KICAgIEpvYk9iamVjdEV4dGVuZGVkTGltaXRJbmZv
cm1hdGlvbiwNCiAgICBKb2JPYmplY3RKb2JTZXRJbmZvcm1hdGlvbiwNCiAgICBKb2JPYmplY3RH
cm91cEluZm9ybWF0aW9uLA0KICAgIEpvYk9iamVjdE5vdGlmaWNhdGlvbkxpbWl0SW5mb3JtYXRp
b24sDQogICAgSm9iT2JqZWN0TGltaXRWaW9sYXRpb25JbmZvcm1hdGlvbiwNCiAgICBKb2JPYmpl
Y3RHcm91cEluZm9ybWF0aW9uRXgsDQogICAgSm9iT2JqZWN0Q3B1UmF0ZUNvbnRyb2xJbmZvcm1h
dGlvbiwNCiAgICBKb2JPYmplY3RDb21wbGV0aW9uRmlsdGVyLA0KICAgIEpvYk9iamVjdENvbXBs
ZXRpb25Db3VudGVyLA0KICAgIEpvYk9iamVjdFJlc2VydmVkMUluZm9ybWF0aW9uID0gMTgsDQog
ICAgSm9iT2JqZWN0UmVzZXJ2ZWQySW5mb3JtYXRpb24sDQogICAgSm9iT2JqZWN0UmVzZXJ2ZWQz
SW5mb3JtYXRpb24sDQogICAgSm9iT2JqZWN0UmVzZXJ2ZWQ0SW5mb3JtYXRpb24sDQogICAgSm9i
T2JqZWN0UmVzZXJ2ZWQ1SW5mb3JtYXRpb24sDQogICAgSm9iT2JqZWN0UmVzZXJ2ZWQ2SW5mb3Jt
YXRpb24sDQogICAgSm9iT2JqZWN0UmVzZXJ2ZWQ3SW5mb3JtYXRpb24sDQogICAgSm9iT2JqZWN0
UmVzZXJ2ZWQ4SW5mb3JtYXRpb24sDQogICAgSm9iT2JqZWN0UmVzZXJ2ZWQ5SW5mb3JtYXRpb24s
DQogICAgSm9iT2JqZWN0UmVzZXJ2ZWQxMEluZm9ybWF0aW9uLA0KICAgIEpvYk9iamVjdFJlc2Vy
dmVkMTFJbmZvcm1hdGlvbiwNCiAgICBKb2JPYmplY3RSZXNlcnZlZDEySW5mb3JtYXRpb24sDQog
ICAgSm9iT2JqZWN0UmVzZXJ2ZWQxM0luZm9ybWF0aW9uLA0KICAgIEpvYk9iamVjdFJlc2VydmVk
MTRJbmZvcm1hdGlvbiA9IDMxLA0KICAgIEpvYk9iamVjdE5ldFJhdGVDb250cm9sSW5mb3JtYXRp
b24sDQogICAgSm9iT2JqZWN0Tm90aWZpY2F0aW9uTGltaXRJbmZvcm1hdGlvbjIsDQogICAgSm9i
T2JqZWN0TGltaXRWaW9sYXRpb25JbmZvcm1hdGlvbjIsDQogICAgSm9iT2JqZWN0Q3JlYXRlU2ls
bywNCiAgICBKb2JPYmplY3RTaWxvQmFzaWNJbmZvcm1hdGlvbiwNCiAgICBKb2JPYmplY3RSZXNl
cnZlZDE1SW5mb3JtYXRpb24gPSAzNywNCiAgICBKb2JPYmplY3RSZXNlcnZlZDE2SW5mb3JtYXRp
b24gPSAzOCwNCiAgICBKb2JPYmplY3RSZXNlcnZlZDE3SW5mb3JtYXRpb24gPSAzOSwNCiAgICBK
b2JPYmplY3RSZXNlcnZlZDE4SW5mb3JtYXRpb24gPSA0MCwNCiAgICBKb2JPYmplY3RSZXNlcnZl
ZDE5SW5mb3JtYXRpb24gPSA0MSwNCiAgICBKb2JPYmplY3RSZXNlcnZlZDIwSW5mb3JtYXRpb24g
PSA0MiwNCiAgICBKb2JPYmplY3RSZXNlcnZlZDIxSW5mb3JtYXRpb24gPSA0MywNCiAgICBKb2JP
YmplY3RSZXNlcnZlZDIySW5mb3JtYXRpb24gPSA0NCwNCiAgICBKb2JPYmplY3RSZXNlcnZlZDIz
SW5mb3JtYXRpb24gPSA0NSwNCiAgICBKb2JPYmplY3RSZXNlcnZlZDI0SW5mb3JtYXRpb24gPSA0
NiwNCiAgICBKb2JPYmplY3RSZXNlcnZlZDI1SW5mb3JtYXRpb24gPSA0NywNCiAgICBNYXhKb2JP
YmplY3RJbmZvQ2xhc3MNCn0gSk9CT0JKRUNUSU5GT0NMQVNTOw0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX1NJTE9PQkpFQ1RfQkFTSUNfSU5GT1JNQVRJT04gew0KICAgIERXT1JEIFNpbG9JZDsNCiAg
ICBEV09SRCBTaWxvUGFyZW50SWQ7DQogICAgRFdPUkQgTnVtYmVyT2ZQcm9jZXNzZXM7DQogICAg
Qk9PTEVBTiBJc0luU2VydmVyU2lsbzsNCiAgICBCWVRFICBSZXNlcnZlZFszXTsNCn0gU0lMT09C
SkVDVF9CQVNJQ19JTkZPUk1BVElPTiwgKlBTSUxPT0JKRUNUX0JBU0lDX0lORk9STUFUSU9OOw0K
DQp0eXBlZGVmIGVudW0gX1NFUlZFUlNJTE9fU1RBVEUgew0KICAgIFNFUlZFUlNJTE9fSU5JVElO
RyA9IDAsDQogICAgU0VSVkVSU0lMT19TVEFSVEVELA0KICAgIFNFUlZFUlNJTE9fU0hVVFRJTkdf
RE9XTiwNCiAgICBTRVJWRVJTSUxPX1RFUk1JTkFUSU5HLA0KICAgIFNFUlZFUlNJTE9fVEVSTUlO
QVRFRCwNCn0gU0VSVkVSU0lMT19TVEFURSwgKlBTRVJWRVJTSUxPX1NUQVRFOw0KDQp0eXBlZGVm
IHN0cnVjdCBfU0VSVkVSU0lMT19CQVNJQ19JTkZPUk1BVElPTiB7DQogICAgRFdPUkQgU2Vydmlj
ZVNlc3Npb25JZDsNCiAgICBTRVJWRVJTSUxPX1NUQVRFIFN0YXRlOw0KICAgIERXT1JEICAgIEV4
aXRTdGF0dXM7DQogICAgQk9PTEVBTiBJc0Rvd25sZXZlbENvbnRhaW5lcjsNCiAgICBQVk9JRCBB
cGlTZXRTY2hlbWE7DQogICAgUFZPSUQgSG9zdEFwaVNldFNjaGVtYTsNCn0gU0VSVkVSU0lMT19C
QVNJQ19JTkZPUk1BVElPTiwgKlBTRVJWRVJTSUxPX0JBU0lDX0lORk9STUFUSU9OOw0KDQoNCnR5
cGVkZWYgZW51bSBfRklSTVdBUkVfVFlQRSB7DQogICAgRmlybXdhcmVUeXBlVW5rbm93biwNCiAg
ICBGaXJtd2FyZVR5cGVCaW9zLA0KICAgIEZpcm13YXJlVHlwZVVlZmksDQogICAgRmlybXdhcmVU
eXBlTWF4DQp9IEZJUk1XQVJFX1RZUEUsICpQRklSTVdBUkVfVFlQRTsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgZW51bSBfTE9HSUNBTF9QUk9DRVNTT1JfUkVMQVRJT05TSElQIHsNCiAgICBSZWxhdGlvblBy
b2Nlc3NvckNvcmUsDQogICAgUmVsYXRpb25OdW1hTm9kZSwNCiAgICBSZWxhdGlvbkNhY2hlLA0K
ICAgIFJlbGF0aW9uUHJvY2Vzc29yUGFja2FnZSwNCiAgICBSZWxhdGlvbkdyb3VwLA0KICAgIFJl
bGF0aW9uQWxsID0gMHhmZmZmDQp9IExPR0lDQUxfUFJPQ0VTU09SX1JFTEFUSU9OU0hJUDsNCg0K
DQoNCnR5cGVkZWYgZW51bSBfUFJPQ0VTU09SX0NBQ0hFX1RZUEUgew0KICAgIENhY2hlVW5pZmll
ZCwNCiAgICBDYWNoZUluc3RydWN0aW9uLA0KICAgIENhY2hlRGF0YSwNCiAgICBDYWNoZVRyYWNl
DQp9IFBST0NFU1NPUl9DQUNIRV9UWVBFOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0NBQ0hFX0RF
U0NSSVBUT1Igew0KICAgIEJZVEUgICBMZXZlbDsNCiAgICBCWVRFICAgQXNzb2NpYXRpdml0eTsN
CiAgICBXT1JEICAgTGluZVNpemU7DQogICAgRFdPUkQgIFNpemU7DQogICAgUFJPQ0VTU09SX0NB
Q0hFX1RZUEUgVHlwZTsNCn0gQ0FDSEVfREVTQ1JJUFRPUiwgKlBDQUNIRV9ERVNDUklQVE9SOw0K
DQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX0xPR0lDQUxfUFJPQ0VTU09SX0lORk9STUFUSU9OIHsN
CiAgICBVTE9OR19QVFIgICBQcm9jZXNzb3JNYXNrOw0KICAgIExPR0lDQUxfUFJPQ0VTU09SX1JF
TEFUSU9OU0hJUCBSZWxhdGlvbnNoaXA7DQogICAgdW5pb24gew0KICAgICAgICBzdHJ1Y3Qgew0K
ICAgICAgICAgICAgQllURSAgRmxhZ3M7DQogICAgICAgIH0gUHJvY2Vzc29yQ29yZTsNCiAgICAg
ICAgc3RydWN0IHsNCiAgICAgICAgICAgIERXT1JEIE5vZGVOdW1iZXI7DQogICAgICAgIH0gTnVt
YU5vZGU7DQogICAgICAgIENBQ0hFX0RFU0NSSVBUT1IgQ2FjaGU7DQogICAgICAgIFVMT05HTE9O
RyAgUmVzZXJ2ZWRbMl07DQogICAgfSA7DQp9IFNZU1RFTV9MT0dJQ0FMX1BST0NFU1NPUl9JTkZP
Uk1BVElPTiwgKlBTWVNURU1fTE9HSUNBTF9QUk9DRVNTT1JfSU5GT1JNQVRJT047DQoNCnR5cGVk
ZWYgc3RydWN0IF9QUk9DRVNTT1JfUkVMQVRJT05TSElQIHsNCiAgICBCWVRFICBGbGFnczsNCiAg
ICBCWVRFICBFZmZpY2llbmN5Q2xhc3M7DQogICAgQllURSAgUmVzZXJ2ZWRbMjBdOw0KICAgIFdP
UkQgICBHcm91cENvdW50Ow0KICAgICAgR1JPVVBfQUZGSU5JVFkgR3JvdXBNYXNrWzFdOw0KfSBQ
Uk9DRVNTT1JfUkVMQVRJT05TSElQLCAqUFBST0NFU1NPUl9SRUxBVElPTlNISVA7DQoNCnR5cGVk
ZWYgc3RydWN0IF9OVU1BX05PREVfUkVMQVRJT05TSElQIHsNCiAgICBEV09SRCBOb2RlTnVtYmVy
Ow0KICAgIEJZVEUgIFJlc2VydmVkWzIwXTsNCiAgICBHUk9VUF9BRkZJTklUWSBHcm91cE1hc2s7
DQp9IE5VTUFfTk9ERV9SRUxBVElPTlNISVAsICpQTlVNQV9OT0RFX1JFTEFUSU9OU0hJUDsNCg0K
dHlwZWRlZiBzdHJ1Y3QgX0NBQ0hFX1JFTEFUSU9OU0hJUCB7DQogICAgQllURSAgTGV2ZWw7DQog
ICAgQllURSAgQXNzb2NpYXRpdml0eTsNCiAgICBXT1JEICAgTGluZVNpemU7DQogICAgRFdPUkQg
Q2FjaGVTaXplOw0KICAgIFBST0NFU1NPUl9DQUNIRV9UWVBFIFR5cGU7DQogICAgQllURSAgUmVz
ZXJ2ZWRbMjBdOw0KICAgIEdST1VQX0FGRklOSVRZIEdyb3VwTWFzazsNCn0gQ0FDSEVfUkVMQVRJ
T05TSElQLCAqUENBQ0hFX1JFTEFUSU9OU0hJUDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST0NFU1NP
Ul9HUk9VUF9JTkZPIHsNCiAgICBCWVRFICBNYXhpbXVtUHJvY2Vzc29yQ291bnQ7DQogICAgQllU
RSAgQWN0aXZlUHJvY2Vzc29yQ291bnQ7DQogICAgQllURSAgUmVzZXJ2ZWRbMzhdOw0KICAgIEtB
RkZJTklUWSBBY3RpdmVQcm9jZXNzb3JNYXNrOw0KfSBQUk9DRVNTT1JfR1JPVVBfSU5GTywgKlBQ
Uk9DRVNTT1JfR1JPVVBfSU5GTzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0dST1VQX1JFTEFUSU9OU0hJ
UCB7DQogICAgV09SRCAgIE1heGltdW1Hcm91cENvdW50Ow0KICAgIFdPUkQgICBBY3RpdmVHcm91
cENvdW50Ow0KICAgIEJZVEUgIFJlc2VydmVkWzIwXTsNCiAgICBQUk9DRVNTT1JfR1JPVVBfSU5G
TyBHcm91cEluZm9bMV07DQp9IEdST1VQX1JFTEFUSU9OU0hJUCwgKlBHUk9VUF9SRUxBVElPTlNI
SVA7DQoNCiAgc3RydWN0IF9TWVNURU1fTE9HSUNBTF9QUk9DRVNTT1JfSU5GT1JNQVRJT05fRVgg
ew0KICAgIExPR0lDQUxfUFJPQ0VTU09SX1JFTEFUSU9OU0hJUCBSZWxhdGlvbnNoaXA7DQogICAg
RFdPUkQgU2l6ZTsNCiAgICB1bmlvbiB7DQogICAgICAgIFBST0NFU1NPUl9SRUxBVElPTlNISVAg
UHJvY2Vzc29yOw0KICAgICAgICBOVU1BX05PREVfUkVMQVRJT05TSElQIE51bWFOb2RlOw0KICAg
ICAgICBDQUNIRV9SRUxBVElPTlNISVAgQ2FjaGU7DQogICAgICAgIEdST1VQX1JFTEFUSU9OU0hJ
UCBHcm91cDsNCiAgICB9IDsNCn07DQoNCnR5cGVkZWYgc3RydWN0IF9TWVNURU1fTE9HSUNBTF9Q
Uk9DRVNTT1JfSU5GT1JNQVRJT05fRVggU1lTVEVNX0xPR0lDQUxfUFJPQ0VTU09SX0lORk9STUFU
SU9OX0VYLCAqUFNZU1RFTV9MT0dJQ0FMX1BST0NFU1NPUl9JTkZPUk1BVElPTl9FWDsNCg0KdHlw
ZWRlZiBlbnVtIF9DUFVfU0VUX0lORk9STUFUSU9OX1RZUEUgew0KICAgIENwdVNldEluZm9ybWF0
aW9uDQp9IENQVV9TRVRfSU5GT1JNQVRJT05fVFlQRSwgKlBDUFVfU0VUX0lORk9STUFUSU9OX1RZ
UEU7DQoNCiAgc3RydWN0IF9TWVNURU1fQ1BVX1NFVF9JTkZPUk1BVElPTiB7DQogICAgRFdPUkQg
U2l6ZTsNCiAgICBDUFVfU0VUX0lORk9STUFUSU9OX1RZUEUgVHlwZTsNCiAgICB1bmlvbiB7DQog
ICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBEV09SRCBJZDsNCiAgICAgICAgICAgIFdPUkQg
ICBHcm91cDsNCiAgICAgICAgICAgIEJZVEUgIExvZ2ljYWxQcm9jZXNzb3JJbmRleDsNCiAgICAg
ICAgICAgIEJZVEUgIENvcmVJbmRleDsNCiAgICAgICAgICAgIEJZVEUgIExhc3RMZXZlbENhY2hl
SW5kZXg7DQogICAgICAgICAgICBCWVRFICBOdW1hTm9kZUluZGV4Ow0KICAgICAgICAgICAgQllU
RSAgRWZmaWNpZW5jeUNsYXNzOw0KICAgICAgICAgICAgdW5pb24gew0KDQoNCg0KDQoNCg0KICAg
ICAgICAgICAgICAgIEJZVEUgIEFsbEZsYWdzOw0KICAgICAgICAgICAgICAgIHN0cnVjdCB7DQog
ICAgICAgICAgICAgICAgICAgIEJZVEUgIFBhcmtlZCA6IDE7DQogICAgICAgICAgICAgICAgICAg
IEJZVEUgIEFsbG9jYXRlZCA6IDE7DQogICAgICAgICAgICAgICAgICAgIEJZVEUgIEFsbG9jYXRl
ZFRvVGFyZ2V0UHJvY2VzcyA6IDE7DQogICAgICAgICAgICAgICAgICAgIEJZVEUgIFJlYWxUaW1l
IDogMTsNCiAgICAgICAgICAgICAgICAgICAgQllURSAgUmVzZXJ2ZWRGbGFncyA6IDQ7DQogICAg
ICAgICAgICAgICAgfSA7DQogICAgICAgICAgICB9IDsNCg0KICAgICAgICAgICAgdW5pb24gew0K
ICAgICAgICAgICAgICAgIERXT1JEIFJlc2VydmVkOw0KICAgICAgICAgICAgICAgIEJZVEUgIFNj
aGVkdWxpbmdDbGFzczsNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIERXT1JENjQgQWxs
b2NhdGlvblRhZzsNCiAgICAgICAgfSBDcHVTZXQ7DQogICAgfSA7DQp9Ow0KDQp0eXBlZGVmIHN0
cnVjdCBfU1lTVEVNX0NQVV9TRVRfSU5GT1JNQVRJT04gU1lTVEVNX0NQVV9TRVRfSU5GT1JNQVRJ
T04sICpQU1lTVEVNX0NQVV9TRVRfSU5GT1JNQVRJT047DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBf
U1lTVEVNX1BST0NFU1NPUl9DWUNMRV9USU1FX0lORk9STUFUSU9OIHsNCiAgICBEV09SRDY0IEN5
Y2xlVGltZTsNCn0gU1lTVEVNX1BST0NFU1NPUl9DWUNMRV9USU1FX0lORk9STUFUSU9OLCAqUFNZ
U1RFTV9QUk9DRVNTT1JfQ1lDTEVfVElNRV9JTkZPUk1BVElPTjsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9YU1RBVEVfRkVBVFVSRSB7DQogICAgRFdPUkQgT2Zmc2V0Ow0KICAgIERXT1JEIFNpemU7
DQp9IFhTVEFURV9GRUFUVVJFLCAqUFhTVEFURV9GRUFUVVJFOw0KDQp0eXBlZGVmIHN0cnVjdCBf
WFNUQVRFX0NPTkZJR1VSQVRJT04gew0KICAgIA0KICAgIERXT1JENjQgRW5hYmxlZEZlYXR1cmVz
Ow0KDQogICAgDQogICAgRFdPUkQ2NCBFbmFibGVkVm9sYXRpbGVGZWF0dXJlczsNCg0KICAgIA0K
ICAgIERXT1JEIFNpemU7DQoNCiAgICANCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIENvbnRy
b2xGbGFnczsNCiAgICAgICAgc3RydWN0DQogICAgICAgIHsNCiAgICAgICAgICAgIERXT1JEIE9w
dGltaXplZFNhdmUgOiAxOw0KICAgICAgICAgICAgRFdPUkQgQ29tcGFjdGlvbkVuYWJsZWQgOiAx
Ow0KICAgICAgICB9Ow0KICAgIH07DQoNCiAgICANCiAgICBYU1RBVEVfRkVBVFVSRSBGZWF0dXJl
c1soNjQpXTsNCg0KICAgIA0KICAgIERXT1JENjQgRW5hYmxlZFN1cGVydmlzb3JGZWF0dXJlczsN
Cg0KICAgIA0KICAgIERXT1JENjQgQWxpZ25lZEZlYXR1cmVzOw0KDQogICAgDQogICAgRFdPUkQg
QWxsRmVhdHVyZVNpemU7DQoNCiAgICANCiAgICBEV09SRCBBbGxGZWF0dXJlc1soNjQpXTsNCg0K
ICAgIA0KICAgIERXT1JENjQgRW5hYmxlZFVzZXJWaXNpYmxlU3VwZXJ2aXNvckZlYXR1cmVzOw0K
DQp9IFhTVEFURV9DT05GSUdVUkFUSU9OLCAqUFhTVEFURV9DT05GSUdVUkFUSU9OOw0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgX01FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiB7DQogICAgUFZPSUQgQmFz
ZUFkZHJlc3M7DQogICAgUFZPSUQgQWxsb2NhdGlvbkJhc2U7DQogICAgRFdPUkQgQWxsb2NhdGlv
blByb3RlY3Q7DQoNCiAgICBXT1JEICAgUGFydGl0aW9uSWQ7DQojbGluZSAxMjg1NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm50LmgiDQogICAgU0laRV9UIFJlZ2lvblNpemU7DQogICAgRFdPUkQgU3RhdGU7
DQogICAgRFdPUkQgUHJvdGVjdDsNCiAgICBEV09SRCBUeXBlOw0KfSBNRU1PUllfQkFTSUNfSU5G
T1JNQVRJT04sICpQTUVNT1JZX0JBU0lDX0lORk9STUFUSU9OOw0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX01FTU9SWV9CQVNJQ19JTkZPUk1BVElPTjMyIHsNCiAgICBEV09SRCBCYXNlQWRkcmVzczsN
CiAgICBEV09SRCBBbGxvY2F0aW9uQmFzZTsNCiAgICBEV09SRCBBbGxvY2F0aW9uUHJvdGVjdDsN
CiAgICBEV09SRCBSZWdpb25TaXplOw0KICAgIERXT1JEIFN0YXRlOw0KICAgIERXT1JEIFByb3Rl
Y3Q7DQogICAgRFdPUkQgVHlwZTsNCn0gTUVNT1JZX0JBU0lDX0lORk9STUFUSU9OMzIsICpQTUVN
T1JZX0JBU0lDX0lORk9STUFUSU9OMzI7DQoNCnR5cGVkZWYgc3RydWN0IF9fZGVjbHNwZWMoYWxp
Z24oMTYpKSBfTUVNT1JZX0JBU0lDX0lORk9STUFUSU9ONjQgew0KICAgIFVMT05HTE9ORyBCYXNl
QWRkcmVzczsNCiAgICBVTE9OR0xPTkcgQWxsb2NhdGlvbkJhc2U7DQogICAgRFdPUkQgICAgIEFs
bG9jYXRpb25Qcm90ZWN0Ow0KICAgIERXT1JEICAgICBfX2FsaWdubWVudDE7DQogICAgVUxPTkdM
T05HIFJlZ2lvblNpemU7DQogICAgRFdPUkQgICAgIFN0YXRlOw0KICAgIERXT1JEICAgICBQcm90
ZWN0Ow0KICAgIERXT1JEICAgICBUeXBlOw0KICAgIERXT1JEICAgICBfX2FsaWdubWVudDI7DQp9
IE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTjY0LCAqUE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTjY0
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IF9DRkdfQ0FMTF9UQVJHRVRfSU5GTyB7DQogICAgVUxPTkdfUFRS
IE9mZnNldDsNCiAgICBVTE9OR19QVFIgRmxhZ3M7DQp9IENGR19DQUxMX1RBUkdFVF9JTkZPLCAq
UENGR19DQUxMX1RBUkdFVF9JTkZPOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBfTUVNX0FERFJFU1NfUkVRVUlSRU1FTlRTIHsNCiAgICBQVk9J
RCBMb3dlc3RTdGFydGluZ0FkZHJlc3M7DQogICAgUFZPSUQgSGlnaGVzdEVuZGluZ0FkZHJlc3M7
DQogICAgU0laRV9UIEFsaWdubWVudDsNCn0gTUVNX0FERFJFU1NfUkVRVUlSRU1FTlRTLCAqUE1F
TV9BRERSRVNTX1JFUVVJUkVNRU5UUzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQp0eXBlZGVmIGVudW0gTUVNX0VYVEVOREVEX1BBUkFNRVRFUl9UWVBFIHsNCiAgICBN
ZW1FeHRlbmRlZFBhcmFtZXRlckludmFsaWRUeXBlID0gMCwNCiAgICBNZW1FeHRlbmRlZFBhcmFt
ZXRlckFkZHJlc3NSZXF1aXJlbWVudHMsDQogICAgTWVtRXh0ZW5kZWRQYXJhbWV0ZXJOdW1hTm9k
ZSwNCiAgICBNZW1FeHRlbmRlZFBhcmFtZXRlclBhcnRpdGlvbkhhbmRsZSwNCiAgICBNZW1FeHRl
bmRlZFBhcmFtZXRlclVzZXJQaHlzaWNhbEhhbmRsZSwNCiAgICBNZW1FeHRlbmRlZFBhcmFtZXRl
ckF0dHJpYnV0ZUZsYWdzLA0KICAgIE1lbUV4dGVuZGVkUGFyYW1ldGVyTWF4DQp9IE1FTV9FWFRF
TkRFRF9QQVJBTUVURVJfVFlQRSwgKlBNRU1fRVhURU5ERURfUEFSQU1FVEVSX1RZUEU7DQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDgpKSBNRU1fRVhURU5ERURfUEFSQU1F
VEVSIHsNCg0KICAgIHN0cnVjdCB7DQogICAgICAgIERXT1JENjQgVHlwZSA6IDg7DQogICAgICAg
IERXT1JENjQgUmVzZXJ2ZWQgOiA2NCAtIDg7DQogICAgfSA7DQoNCiAgICB1bmlvbiB7DQogICAg
ICAgIERXT1JENjQgVUxvbmc2NDsNCiAgICAgICAgUFZPSUQgUG9pbnRlcjsNCiAgICAgICAgU0la
RV9UIFNpemU7DQogICAgICAgIEhBTkRMRSBIYW5kbGU7DQogICAgICAgIERXT1JEIFVMb25nOw0K
ICAgIH0gOw0KDQp9IE1FTV9FWFRFTkRFRF9QQVJBTUVURVIsICpQTUVNX0VYVEVOREVEX1BBUkFN
RVRFUjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gTUVNX1NFQ1RJ
T05fRVhURU5ERURfUEFSQU1FVEVSX1RZUEUgew0KICAgIE1lbVNlY3Rpb25FeHRlbmRlZFBhcmFt
ZXRlckludmFsaWRUeXBlID0gMCwNCiAgICBNZW1TZWN0aW9uRXh0ZW5kZWRQYXJhbWV0ZXJVc2Vy
UGh5c2ljYWxGbGFncywNCiAgICBNZW1TZWN0aW9uRXh0ZW5kZWRQYXJhbWV0ZXJOdW1hTm9kZSwN
CiAgICBNZW1TZWN0aW9uRXh0ZW5kZWRQYXJhbWV0ZXJNYXgNCn0gTUVNX1NFQ1RJT05fRVhURU5E
RURfUEFSQU1FVEVSX1RZUEUsICpQTUVNX1NFQ1RJT05fRVhURU5ERURfUEFSQU1FVEVSX1RZUEU7
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfRU5DTEFWRV9DUkVBVEVfSU5GT19T
R1ggew0KICAgIEJZVEUgIFNlY3NbNDA5Nl07DQp9IEVOQ0xBVkVfQ1JFQVRFX0lORk9fU0dYLCAq
UEVOQ0xBVkVfQ1JFQVRFX0lORk9fU0dYOw0KDQp0eXBlZGVmIHN0cnVjdCBfRU5DTEFWRV9JTklU
X0lORk9fU0dYIHsNCiAgICBCWVRFICBTaWdTdHJ1Y3RbMTgwOF07DQogICAgQllURSAgUmVzZXJ2
ZWQxWzI0MF07DQogICAgQllURSAgRUluaXRUb2tlblszMDRdOw0KICAgIEJZVEUgIFJlc2VydmVk
MlsxNzQ0XTsNCn0gRU5DTEFWRV9JTklUX0lORk9fU0dYLCAqUEVOQ0xBVkVfSU5JVF9JTkZPX1NH
WDsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9FTkNMQVZFX0NSRUFURV9JTkZPX1ZCUyB7DQogICAg
RFdPUkQgRmxhZ3M7DQogICAgQllURSAgT3duZXJJRFszMl07DQp9IEVOQ0xBVkVfQ1JFQVRFX0lO
Rk9fVkJTLCAqUEVOQ0xBVkVfQ1JFQVRFX0lORk9fVkJTOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9FTkNMQVZFX0NSRUFURV9JTkZPX1ZCU19CQVNJQyB7DQogICAgRFdPUkQgRmxhZ3M7DQog
ICAgQllURSAgT3duZXJJRFszMl07DQp9IEVOQ0xBVkVfQ1JFQVRFX0lORk9fVkJTX0JBU0lDLCAq
UEVOQ0xBVkVfQ1JFQVRFX0lORk9fVkJTX0JBU0lDOw0KDQp0eXBlZGVmIHN0cnVjdCBfRU5DTEFW
RV9MT0FEX0RBVEFfVkJTX0JBU0lDIHsNCiAgICBEV09SRCBQYWdlVHlwZTsNCn0gRU5DTEFWRV9M
T0FEX0RBVEFfVkJTX0JBU0lDLCAqUEVOQ0xBVkVfTE9BRF9EQVRBX1ZCU19CQVNJQzsNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0VOQ0xBVkVfSU5JVF9JTkZPX1ZCU19CQVNJQyB7DQog
ICAgQllURSAgRmFtaWx5SWRbMTZdOw0KICAgIEJZVEUgIEltYWdlSWRbMTZdOw0KICAgIFVMT05H
TE9ORyBFbmNsYXZlU2l6ZTsNCiAgICBEV09SRCBFbmNsYXZlU3ZuOw0KICAgIERXT1JEIFJlc2Vy
dmVkOw0KICAgIHVuaW9uIHsNCiAgICAgICAgSEFORExFIFNpZ25hdHVyZUluZm9IYW5kbGU7DQog
ICAgICAgIFVMT05HTE9ORyBVbnVzZWQ7DQogICAgfSA7DQp9IEVOQ0xBVkVfSU5JVF9JTkZPX1ZC
U19CQVNJQywgKlBFTkNMQVZFX0lOSVRfSU5GT19WQlNfQkFTSUM7DQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX0VOQ0xBVkVfSU5JVF9JTkZPX1ZCUyB7DQogICAgRFdPUkQgTGVuZ3RoOw0KICAgIERXT1JE
IFRocmVhZENvdW50Ow0KfSBFTkNMQVZFX0lOSVRfSU5GT19WQlMsICpQRU5DTEFWRV9JTklUX0lO
Rk9fVkJTOw0KDQoNCg0KdHlwZWRlZiBQVk9JRCAoRU5DTEFWRV9UQVJHRVRfRlVOQ1RJT04pKFBW
T0lEKTsNCnR5cGVkZWYgRU5DTEFWRV9UQVJHRVRfRlVOQ1RJT04gKCpQRU5DTEFWRV9UQVJHRVRf
RlVOQ1RJT04pOw0KdHlwZWRlZiBQRU5DTEFWRV9UQVJHRVRfRlVOQ1RJT04gTFBFTkNMQVZFX1RB
UkdFVF9GVU5DVElPTjsNCg0KI2xpbmUgMTMxMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYg
c3RydWN0IF9GSUxFX0lEXzEyOCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg
IEJZVEUgIElkZW50aWZpZXJbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQp9IEZJTEVfSURfMTI4LCAqUEZJTEVfSURfMTI4OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfRklMRV9OT1RJRllfSU5GT1JNQVRJT04g
ew0KICAgIERXT1JEIE5leHRFbnRyeU9mZnNldDsNCiAgICBEV09SRCBBY3Rpb247DQogICAgRFdP
UkQgRmlsZU5hbWVMZW5ndGg7DQogICAgV0NIQVIgRmlsZU5hbWVbMV07DQp9IEZJTEVfTk9USUZZ
X0lORk9STUFUSU9OLCAqUEZJTEVfTk9USUZZX0lORk9STUFUSU9OOw0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9GSUxFX05PVElGWV9FWFRFTkRFRF9JTkZPUk1BVElPTiB7DQogICAgRFdPUkQgTmV4dEVu
dHJ5T2Zmc2V0Ow0KICAgIERXT1JEIEFjdGlvbjsNCiAgICBMQVJHRV9JTlRFR0VSIENyZWF0aW9u
VGltZTsNCiAgICBMQVJHRV9JTlRFR0VSIExhc3RNb2RpZmljYXRpb25UaW1lOw0KICAgIExBUkdF
X0lOVEVHRVIgTGFzdENoYW5nZVRpbWU7DQogICAgTEFSR0VfSU5URUdFUiBMYXN0QWNjZXNzVGlt
ZTsNCiAgICBMQVJHRV9JTlRFR0VSIEFsbG9jYXRlZExlbmd0aDsNCiAgICBMQVJHRV9JTlRFR0VS
IEZpbGVTaXplOw0KICAgIERXT1JEIEZpbGVBdHRyaWJ1dGVzOw0KICAgIERXT1JEIFJlcGFyc2VQ
b2ludFRhZzsNCiAgICBMQVJHRV9JTlRFR0VSIEZpbGVJZDsNCiAgICBMQVJHRV9JTlRFR0VSIFBh
cmVudEZpbGVJZDsNCiAgICBEV09SRCBGaWxlTmFtZUxlbmd0aDsNCiAgICBXQ0hBUiBGaWxlTmFt
ZVsxXTsNCn0gRklMRV9OT1RJRllfRVhURU5ERURfSU5GT1JNQVRJT04sICpQRklMRV9OT1RJRllf
RVhURU5ERURfSU5GT1JNQVRJT047DQojbGluZSAxMzMxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50Lmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdW5pb24gX0ZJTEVfU0VHTUVOVF9F
TEVNRU5UIHsNCiAgICBQVk9JRDY0IEJ1ZmZlcjsNCiAgICBVTE9OR0xPTkcgQWxpZ25tZW50Ow0K
fUZJTEVfU0VHTUVOVF9FTEVNRU5ULCAqUEZJTEVfU0VHTUVOVF9FTEVNRU5UOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTMzNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzM4NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9SRVBBUlNFX0dVSURf
REFUQV9CVUZGRVIgew0KICAgIERXT1JEICBSZXBhcnNlVGFnOw0KICAgIFdPUkQgICBSZXBhcnNl
RGF0YUxlbmd0aDsNCiAgICBXT1JEICAgUmVzZXJ2ZWQ7DQogICAgR1VJRCAgIFJlcGFyc2VHdWlk
Ow0KICAgIHN0cnVjdCB7DQogICAgICAgIEJZVEUgICBEYXRhQnVmZmVyWzFdOw0KICAgIH0gR2Vu
ZXJpY1JlcGFyc2VCdWZmZXI7DQp9IFJFUEFSU0VfR1VJRF9EQVRBX0JVRkZFUiwgKlBSRVBBUlNF
X0dVSURfREFUQV9CVUZGRVI7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzNzgzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDEzODYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBfUkVBUlJBTkdFX0ZJTEVfREFUQSB7DQoNCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICBVTE9OR0xPTkcgU291cmNlU3RhcnRpbmdPZmZzZXQ7DQoNCiAgICANCiAgICANCiAg
ICANCiAgICBVTE9OR0xPTkcgVGFyZ2V0T2Zmc2V0Ow0KDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgSEFORExFIFNvdXJjZUZpbGVIYW5kbGU7DQoNCiAgICANCiAgICANCiAgICANCiAgICBE
V09SRCBMZW5ndGg7DQoNCiAgICANCiAgICANCiAgICANCiAgICBEV09SRCBGbGFnczsNCg0KfSBS
RUFSUkFOR0VfRklMRV9EQVRBLCAqUFJFQVJSQU5HRV9GSUxFX0RBVEE7DQoNCg0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCBfUkVBUlJBTkdFX0ZJTEVfREFUQTMyIHsNCg0KICAgIFVMT05HTE9ORyBT
b3VyY2VTdGFydGluZ09mZnNldDsNCiAgICBVTE9OR0xPTkcgVGFyZ2V0T2Zmc2V0Ow0KICAgIFVJ
TlQzMiBTb3VyY2VGaWxlSGFuZGxlOw0KICAgIERXT1JEIExlbmd0aDsNCiAgICBEV09SRCBGbGFn
czsNCg0KfSBSRUFSUkFOR0VfRklMRV9EQVRBMzIsICpQUkVBUlJBTkdFX0ZJTEVfREFUQTMyOw0K
I2xpbmUgMTM5MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQojbGluZSAxMzkyMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMTM5NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzk2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0MDAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0K
I2xpbmUgMTQwMDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfTUFYX1BP
V0VSX1NBVklOR1M7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfTUlO
X1BPV0VSX1NBVklOR1M7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURf
VFlQSUNBTF9QT1dFUl9TQVZJTkdTOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdV
SUQgIE5PX1NVQkdST1VQX0dVSUQ7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJ
RCAgQUxMX1BPV0VSU0NIRU1FU19HVUlEOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25z
dCBHVUlEICBHVUlEX1BPV0VSU0NIRU1FX1BFUlNPTkFMSVRZOw0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9BQ1RJVkVfUE9XRVJTQ0hFTUU7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0lETEVfUkVTSUxJ
RU5DWV9TVUJHUk9VUDsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlE
X0lETEVfUkVTSUxJRU5DWV9QRVJJT0Q7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlE
ICBHVUlEX0RFRVBfU0xFRVBfRU5BQkxFRDsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IEdVSUQgIEdVSURfREVFUF9TTEVFUF9QTEFURk9STV9TVEFURTsNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9ESVNLX0NPQUxFU0NJTkdfUE9XRVJET1dOX1RJTUVP
VVQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURf
RVhFQ1VUSU9OX1JFUVVJUkVEX1JFUVVFU1RfVElNRU9VVDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1ZJREVPX1NVQkdST1VQOw0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfVklERU9fUE9XRVJET1dOX1RJTUVPVVQ7DQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1ZJREVPX0FOTk9ZQU5D
RV9USU1FT1VUOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9W
SURFT19BREFQVElWRV9QRVJDRU5UX0lOQ1JFQVNFOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IGNvbnN0IEdVSUQgIEdVSURfVklERU9fRElNX1RJTUVPVVQ7DQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgY29uc3QgR1VJRCAgR1VJRF9WSURFT19BREFQVElWRV9QT1dFUkRPV047DQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfTU9OSVRPUl9QT1dFUl9PTjsNCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9ERVZJQ0VfUE9XRVJfUE9MSUNZX1ZJ
REVPX0JSSUdIVE5FU1M7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURf
REVWSUNFX1BPV0VSX1BPTElDWV9WSURFT19ESU1fQlJJR0hUTkVTUzsNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9WSURFT19DVVJSRU5UX01PTklUT1JfQlJJR0hUTkVT
UzsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1ZJREVPX0FEQVBU
SVZFX0RJU1BMQVlfQlJJR0hUTkVTUzsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJ
RCAgR1VJRF9DT05TT0xFX0RJU1BMQVlfU1RBVEU7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgR1VJRCAgR1VJRF9BTExPV19ESVNQTEFZX1JFUVVJUkVEOw0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9WSURFT19DT05TT0xFX0xPQ0tfVElNRU9VVDsN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfQURWQU5DRURfQ09M
T1JfUVVBTElUWV9CSUFTOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlE
X0FEQVBUSVZFX1BPV0VSX0JFSEFWSU9SX1NVQkdST1VQOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBHVUlEICBHVUlEX05PTl9BREFQVElWRV9JTlBVVF9USU1FT1VUOw0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0FEQVBUSVZFX0lOUFVUX0NPTlRST0xMRVJf
U1RBVEU7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9ESVNLX1NV
QkdST1VQOw0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfRElTS19NQVhfUE9X
RVI7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0RJU0tfUE9XRVJET1dO
X1RJTUVPVVQ7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfRElTS19J
RExFX1RJTUVPVVQ7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlE
X0RJU0tfQlVSU1RfSUdOT1JFX1RIUkVTSE9MRDsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IEdVSUQgIEdVSURfRElTS19BREFQVElWRV9QT1dFUkRPV047DQoNCg0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgR1VJRCAgR1VJRF9ESVNLX05WTUVfTk9QUE1FOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgY29uc3QgR1VJRCAgR1VJRF9TTEVFUF9TVUJHUk9VUDsNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1NMRUVQX0lETEVfVEhSRVNIT0xEOw0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9TVEFOREJZX1RJTUVPVVQ7DQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1VOQVRURU5EX1NMRUVQX1RJTUVPVVQ7
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0hJQkVSTkFURV9USU1FT1VU
Ow0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9ISUJFUk5BVEVfRkFTVFM0
X1BPTElDWTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfQ1JJ
VElDQUxfUE9XRVJfVFJBTlNJVElPTjsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQg
IEdVSURfU1lTVEVNX0FXQVlNT0RFOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlE
ICBHVUlEX0FMTE9XX0FXQVlNT0RFOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlE
ICBHVUlEX1VTRVJfUFJFU0VOQ0VfUFJFRElDVElPTjsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgR1VJRCAgR1VJRF9TVEFOREJZX0JVREdFVF9HUkFDRV9QRVJJT0Q7DQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfU1RBTkRCWV9CVURHRVRfUEVSQ0VOVDsNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9TVEFOREJZX1JFU0VSVkVfR1JB
Q0VfUEVSSU9EOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1NUQU5E
QllfUkVTRVJWRV9USU1FOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlE
X1NUQU5EQllfUkVTRVRfUEVSQ0VOVDsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBH
VUlEICBHVUlEX0FMTE9XX1NUQU5EQllfU1RBVEVTOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBHVUlEICBHVUlEX0FMTE9XX1JUQ19XQUtFOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBHVUlEICBHVUlEX0xFR0FDWV9SVENfTUlUSUdBVElPTjsNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0FMTE9XX1NZU1RFTV9SRVFVSVJFRDsNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUE9XRVJfU0FWSU5HX1NUQVRVUzsN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0VORVJHWV9TQVZFUl9T
VUJHUk9VUDsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9FTkVSR1lf
U0FWRVJfQkFUVEVSWV9USFJFU0hPTEQ7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdV
SUQgIEdVSURfRU5FUkdZX1NBVkVSX0JSSUdIVE5FU1M7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IGNvbnN0IEdVSUQgIEdVSURfRU5FUkdZX1NBVkVSX1BPTElDWTsNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfU1lTVEVNX0JVVFRPTl9TVUJHUk9VUDsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQg
IEdVSURfUE9XRVJCVVRUT05fQUNUSU9OOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJ
RCAgR1VJRF9TTEVFUEJVVFRPTl9BQ1RJT047DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IEdVSUQgIEdVSURfVVNFUklOVEVSRkFDRUJVVFRPTl9BQ1RJT047DQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBHVUlEICBHVUlEX0xJRENMT1NFX0FDVElPTjsNCmV4dGVybiAiQyIgY29uc3Qg
R1VJRCAgR1VJRF9MSURPUEVOX1BPV0VSU1RBVEU7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfU1VCR1JPVVA7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0FDVElPTl8w
Ow0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0xFVkVMXzA7
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfQkFUVEVSWV9ESVNDSEFSR0VfRkxBR1NfMDsN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0FDVElPTl8x
Ow0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0xFVkVMXzE7
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfQkFUVEVSWV9ESVNDSEFSR0VfRkxBR1NfMTsN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0FDVElPTl8y
Ow0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0xFVkVMXzI7
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfQkFUVEVSWV9ESVNDSEFSR0VfRkxBR1NfMjsN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0FDVElPTl8z
Ow0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0JBVFRFUllfRElTQ0hBUkdFX0xFVkVMXzM7
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfQkFUVEVSWV9ESVNDSEFSR0VfRkxBR1NfMzsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NP
Ul9TRVRUSU5HU19TVUJHUk9VUDsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdV
SURfUFJPQ0VTU09SX1RIUk9UVExFX1BPTElDWTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1RIUk9UVExFX01B
WElNVU07DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJP
Q0VTU09SX1RIUk9UVExFX01BWElNVU1fMTsNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfVEhST1RUTEVfTUlOSU1VTTsNCg0KDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfVEhST1RUTEVfTUlO
SU1VTV8xOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NP
Ul9GUkVRVUVOQ1lfTElNSVQ7DQojbGluZSAxNDY4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9GUkVRVUVOQ1lfTElNSVRf
MTsNCiNsaW5lIDE0Njg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9BTExPV19USFJPVFRMSU5HOw0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9JRExF
U1RBVEVfUE9MSUNZOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9D
RVNTT1JfUEVSRlNUQVRFX1BPTElDWTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBH
VUlEICBHVUlEX1BST0NFU1NPUl9QRVJGX0lOQ1JFQVNFX1RIUkVTSE9MRDsNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BFUkZfSU5DUkVBU0Vf
VEhSRVNIT0xEXzE7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9Q
Uk9DRVNTT1JfUEVSRl9ERUNSRUFTRV9USFJFU0hPTEQ7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9QRVJGX0RFQ1JFQVNFX1RIUkVTSE9MRF8x
Ow0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BF
UkZfSU5DUkVBU0VfUE9MSUNZOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJ
RCAgR1VJRF9QUk9DRVNTT1JfUEVSRl9JTkNSRUFTRV9QT0xJQ1lfMTsNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9QRVJGX0RFQ1JFQVNFX1BPTElD
WTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09S
X1BFUkZfREVDUkVBU0VfUE9MSUNZXzE7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25z
dCBHVUlEICBHVUlEX1BST0NFU1NPUl9QRVJGX0lOQ1JFQVNFX1RJTUU7DQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9QRVJGX0lOQ1JFQVNFX1RJ
TUVfMTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VT
U09SX1BFUkZfREVDUkVBU0VfVElNRTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BFUkZfREVDUkVBU0VfVElNRV8xOw0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BFUkZfVElNRV9DSEVDSzsN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9QRVJG
X0JPT1NUX1BPTElDWTsNCiNsaW5lIDE0ODM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9QRVJG
X0JPT1NUX01PREU7DQojbGluZSAxNDg0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9D
RVNTT1JfUEVSRl9BVVRPTk9NT1VTX01PREU7DQojbGluZSAxNDg2NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJP
Q0VTU09SX1BFUkZfRU5FUkdZX1BFUkZPUk1BTkNFX1BSRUZFUkVOQ0U7DQojbGluZSAxNDg3NSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQg
IEdVSURfUFJPQ0VTU09SX1BFUkZfRU5FUkdZX1BFUkZPUk1BTkNFX1BSRUZFUkVOQ0VfMTsNCiNs
aW5lIDE0ODgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUEVSRl9BVVRPTk9NT1VTX0FDVElWSVRZ
X1dJTkRPVzsNCiNsaW5lIDE0ODk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0RVVFlfQ1lDTElORzsN
CiNsaW5lIDE0OTA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9JRExFX0FMTE9XX1NDQUxJTkc7
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0lETEVf
RElTQUJMRTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJP
Q0VTU09SX0lETEVfU1RBVEVfTUFYSU1VTTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0lETEVfVElNRV9DSEVDSzsNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0lETEVfREVNT1RFX1RIUkVT
SE9MRDsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NP
Ul9JRExFX1BST01PVEVfVEhSRVNIT0xEOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29u
c3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfQ09SRV9QQVJLSU5HX0lOQ1JFQVNFX1RIUkVTSE9MRDsN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0NP
UkVfUEFSS0lOR19ERUNSRUFTRV9USFJFU0hPTEQ7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0NPUkVfUEFSS0lOR19JTkNSRUFTRV9QT0xJQ1k7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VT
U09SX0NPUkVfUEFSS0lOR19ERUNSRUFTRV9QT0xJQ1k7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0NPUkVfUEFSS0lOR19NQVhfQ09SRVM7DQoNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfQ09SRV9QQVJL
SU5HX01BWF9DT1JFU18xOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlE
X1BST0NFU1NPUl9DT1JFX1BBUktJTkdfTUlOX0NPUkVTOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0NPUkVfUEFSS0lOR19NSU5fQ09SRVNfMTsN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfQ09SRV9Q
QVJLSU5HX0lOQ1JFQVNFX1RJTUU7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQg
IEdVSURfUFJPQ0VTU09SX0NPUkVfUEFSS0lOR19ERUNSRUFTRV9USU1FOw0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9DT1JFX1BBUktJTkdfQUZGSU5J
VFlfSElTVE9SWV9ERUNSRUFTRV9GQUNUT1I7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IEdVSUQgIEdVSURfUFJPQ0VTU09SX0NPUkVfUEFSS0lOR19BRkZJTklUWV9ISVNUT1JZX1RIUkVT
SE9MRDsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1Jf
Q09SRV9QQVJLSU5HX0FGRklOSVRZX1dFSUdIVElORzsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfQ09SRV9QQVJLSU5HX09WRVJfVVRJTElaQVRJT05f
SElTVE9SWV9ERUNSRUFTRV9GQUNUT1I7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdV
SUQgIEdVSURfUFJPQ0VTU09SX0NPUkVfUEFSS0lOR19PVkVSX1VUSUxJWkFUSU9OX0hJU1RPUllf
VEhSRVNIT0xEOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NF
U1NPUl9DT1JFX1BBUktJTkdfT1ZFUl9VVElMSVpBVElPTl9XRUlHSFRJTkc7DQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0NPUkVfUEFSS0lOR19PVkVS
X1VUSUxJWkFUSU9OX1RIUkVTSE9MRDsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBH
VUlEICBHVUlEX1BST0NFU1NPUl9QQVJLSU5HX0NPUkVfT1ZFUlJJREU7DQoNCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUEFSS0lOR19QRVJGX1NUQVRF
Ow0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BB
UktJTkdfUEVSRl9TVEFURV8xOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQg
IEdVSURfUFJPQ0VTU09SX1BBUktJTkdfQ09OQ1VSUkVOQ1lfVEhSRVNIT0xEOw0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BBUktJTkdfSEVBRFJP
T01fVEhSRVNIT0xEOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURf
UFJPQ0VTU09SX1BBUktJTkdfRElTVFJJQlVUSU9OX1RIUkVTSE9MRDsNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9TT0ZUX1BBUktJTkdfTEFURU5D
WTsNCiNsaW5lIDE1MTQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUEVSRl9ISVNUT1JZOw0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BFUkZfSElTVE9SWV8x
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NP
Ul9QRVJGX0lOQ1JFQVNFX0hJU1RPUlk7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BFUkZfREVDUkVBU0VfSElTVE9SWTsNCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUEVSRl9DT1JF
X1BBUktJTkdfSElTVE9SWTsNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJ
RCAgR1VJRF9QUk9DRVNTT1JfUEVSRl9MQVRFTkNZX0hJTlQ7DQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1BFUkZfTEFURU5DWV9ISU5UX1BFUkY7DQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUEVSRl9M
QVRFTkNZX0hJTlRfUEVSRl8xOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQg
IEdVSURfUFJPQ0VTU09SX0xBVEVOQ1lfSElOVF9NSU5fVU5QQVJLOw0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0xBVEVOQ1lfSElOVF9NSU5fVU5Q
QVJLXzE7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNT
T1JfRElTVFJJQlVURV9VVElMSVRZOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0hFVEVST0dFTkVPVVNfUE9MSUNZOw0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0hFVEVST19ERUNSRUFT
RV9USU1FOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VT
U09SX0hFVEVST19JTkNSRUFTRV9USU1FOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29u
c3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfSEVURVJPX0RFQ1JFQVNFX1RIUkVTSE9MRDsNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0hFVEVST19J
TkNSRUFTRV9USFJFU0hPTEQ7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlE
ICBHVUlEX1BST0NFU1NPUl9DTEFTUzBfRkxPT1JfUEVSRjsNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX0NMQVNTMV9JTklUSUFMX1BFUkY7DQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1RIUkVBRF9T
Q0hFRFVMSU5HX1BPTElDWTsNCiNsaW5lIDE1MzEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9TSE9SVF9U
SFJFQURfU0NIRURVTElOR19QT0xJQ1k7DQojbGluZSAxNTMxOSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9TWVNURU1fQ09P
TElOR19QT0xJQ1k7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdV
SURfUFJPQ0VTU09SX1JFU1BPTlNJVkVORVNTX0RJU0FCTEVfVEhSRVNIT0xEOw0KI2xpbmUgMTUz
MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IEdVSUQgIEdVSURfUFJPQ0VTU09SX1JFU1BPTlNJVkVORVNTX0RJU0FCTEVfVEhSRVNIT0xEXzE7
DQojbGluZSAxNTM0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1JFU1BPTlNJVkVORVNTX0VOQUJMRV9USFJF
U0hPTEQ7DQojbGluZSAxNTM1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1JFU1BPTlNJVkVORVNTX0VOQUJM
RV9USFJFU0hPTERfMTsNCiNsaW5lIDE1MzYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUkVTUE9OU0lWRU5F
U1NfRElTQUJMRV9USU1FOw0KI2xpbmUgMTUzNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9SRVNQT05TSVZF
TkVTU19ESVNBQkxFX1RJTUVfMTsNCiNsaW5lIDE1Mzc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCIN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUkVTUE9O
U0lWRU5FU1NfRU5BQkxFX1RJTUU7DQojbGluZSAxNTM4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50Lmgi
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUFJPQ0VTU09SX1JFU1BP
TlNJVkVORVNTX0VOQUJMRV9USU1FXzE7DQojbGluZSAxNTM5NSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1BST0NFU1NPUl9SRVNQ
T05TSVZFTkVTU19FUFBfQ0VJTElORzsNCiNsaW5lIDE1NDAyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQu
aCINCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1JfUkVT
UE9OU0lWRU5FU1NfRVBQX0NFSUxJTkdfMTsNCiNsaW5lIDE1NDEwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1Jf
UkVTUE9OU0lWRU5FU1NfUEVSRl9GTE9PUjsNCiNsaW5lIDE1NDE4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9QUk9DRVNTT1Jf
UkVTUE9OU0lWRU5FU1NfUEVSRl9GTE9PUl8xOw0KI2xpbmUgMTU0MjYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0xP
Q0tfQ09OU09MRV9PTl9XQUtFOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBH
VUlEICBHVUlEX0RFVklDRV9JRExFX1BPTElDWTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IGNvbnN0IEdVSUQgIEdVSURfQ09OTkVDVElWSVRZX0lOX1NUQU5EQlk7DQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfRElTQ09OTkVDVEVEX1NUQU5EQllfTU9E
RTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IEdVSUQgIEdVSURfQUNEQ19QT1dFUl9TT1VSQ0U7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfTElEU1dJVENIX1NUQVRFX0NIQU5H
RTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlE
ICBHVUlEX0JBVFRFUllfUEVSQ0VOVEFHRV9SRU1BSU5JTkc7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfQkFUVEVSWV9DT1VOVDsNCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9HTE9CQUxfVVNFUl9QUkVTRU5DRTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX1NFU1NJT05fRElT
UExBWV9TVEFUVVM7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdV
SURfU0VTU0lPTl9VU0VSX1BSRVNFTkNFOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBH
VUlEICBHVUlEX0lETEVfQkFDS0dST1VORF9UQVNLOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBHVUlEICBHVUlEX0JBQ0tHUk9VTkRfVEFTS19OT1RJRklDQVRJT047DQoNCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgR1VJRF9BUFBMQVVOQ0hfQlVUVE9OOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUENJRVhQUkVTU19TRVRU
SU5HU19TVUJHUk9VUDsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfUENJ
RVhQUkVTU19BU1BNX1BPTElDWTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IEdVSUQgIEdVSURfRU5BQkxFX1NXSVRDSF9GT1JDRURfU0hVVERPV047DQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfSU5UU1RFRVJfU1VCR1JPVVA7DQojbGluZSAx
NTYxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBH
VUlEX0lOVFNURUVSX01PREU7DQojbGluZSAxNTYyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBHVUlEX0lOVFNURUVSX0xPQURfUEVSX1BST0NfVFJJ
R0dFUjsNCiNsaW5lIDE1NjI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQpleHRlcm4gIkMi
IGNvbnN0IEdVSUQgIEdVSURfSU5UU1RFRVJfVElNRV9VTlBBUktfVFJJR0dFUjsNCiNsaW5lIDE1
NjMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgR1VJRCAgR1VJRF9HUkFQSElDU19TVUJHUk9VUDsNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IGNvbnN0IEdVSUQgIEdVSURfR1BVX1BSRUZFUkVOQ0VfUE9MSUNZOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIEdVSURfTUlYRURfUkVBTElUWV9NT0RFOw0KI2xp
bmUgMTU2NTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBHVUlEICBHVUlEX1NQUl9BQ1RJVkVfU0VTU0lPTl9DSEFOR0U7DQojbGluZSAxNTY2NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KdHlwZWRlZiBlbnVtIF9TWVNURU1fUE9XRVJfU1RB
VEUgew0KICAgIFBvd2VyU3lzdGVtVW5zcGVjaWZpZWQgPSAwLA0KICAgIFBvd2VyU3lzdGVtV29y
a2luZyAgICAgPSAxLA0KICAgIFBvd2VyU3lzdGVtU2xlZXBpbmcxICAgPSAyLA0KICAgIFBvd2Vy
U3lzdGVtU2xlZXBpbmcyICAgPSAzLA0KICAgIFBvd2VyU3lzdGVtU2xlZXBpbmczICAgPSA0LA0K
ICAgIFBvd2VyU3lzdGVtSGliZXJuYXRlICAgPSA1LA0KICAgIFBvd2VyU3lzdGVtU2h1dGRvd24g
ICAgPSA2LA0KICAgIFBvd2VyU3lzdGVtTWF4aW11bSAgICAgPSA3DQp9IFNZU1RFTV9QT1dFUl9T
VEFURSwgKlBTWVNURU1fUE9XRVJfU1RBVEU7DQoNCg0KDQp0eXBlZGVmIGVudW0gew0KICAgIFBv
d2VyQWN0aW9uTm9uZSA9IDAsDQogICAgUG93ZXJBY3Rpb25SZXNlcnZlZCwNCiAgICBQb3dlckFj
dGlvblNsZWVwLA0KICAgIFBvd2VyQWN0aW9uSGliZXJuYXRlLA0KICAgIFBvd2VyQWN0aW9uU2h1
dGRvd24sDQogICAgUG93ZXJBY3Rpb25TaHV0ZG93blJlc2V0LA0KICAgIFBvd2VyQWN0aW9uU2h1
dGRvd25PZmYsDQogICAgUG93ZXJBY3Rpb25XYXJtRWplY3QsDQogICAgUG93ZXJBY3Rpb25EaXNw
bGF5T2ZmDQp9IFBPV0VSX0FDVElPTiwgKlBQT1dFUl9BQ1RJT047DQoNCnR5cGVkZWYgZW51bSBf
REVWSUNFX1BPV0VSX1NUQVRFIHsNCiAgICBQb3dlckRldmljZVVuc3BlY2lmaWVkID0gMCwNCiAg
ICBQb3dlckRldmljZUQwLA0KICAgIFBvd2VyRGV2aWNlRDEsDQogICAgUG93ZXJEZXZpY2VEMiwN
CiAgICBQb3dlckRldmljZUQzLA0KICAgIFBvd2VyRGV2aWNlTWF4aW11bQ0KfSBERVZJQ0VfUE9X
RVJfU1RBVEUsICpQREVWSUNFX1BPV0VSX1NUQVRFOw0KDQp0eXBlZGVmIGVudW0gX01PTklUT1Jf
RElTUExBWV9TVEFURSB7DQogICAgUG93ZXJNb25pdG9yT2ZmID0gMCwNCiAgICBQb3dlck1vbml0
b3JPbiwNCiAgICBQb3dlck1vbml0b3JEaW0NCn0gTU9OSVRPUl9ESVNQTEFZX1NUQVRFLCAqUE1P
TklUT1JfRElTUExBWV9TVEFURTsNCg0KdHlwZWRlZiBlbnVtIF9VU0VSX0FDVElWSVRZX1BSRVNF
TkNFIHsNCiAgICBQb3dlclVzZXJQcmVzZW50ID0gMCwNCiAgICBQb3dlclVzZXJOb3RQcmVzZW50
LA0KICAgIFBvd2VyVXNlckluYWN0aXZlLA0KICAgIFBvd2VyVXNlck1heGltdW0sDQogICAgUG93
ZXJVc2VySW52YWxpZCA9IFBvd2VyVXNlck1heGltdW0NCn0gVVNFUl9BQ1RJVklUWV9QUkVTRU5D
RSwgKlBVU0VSX0FDVElWSVRZX1BSRVNFTkNFOw0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBE
V09SRCBFWEVDVVRJT05fU1RBVEUsICpQRVhFQ1VUSU9OX1NUQVRFOw0KDQp0eXBlZGVmIGVudW0g
ew0KICAgIExUX0RPTlRfQ0FSRSwNCiAgICBMVF9MT1dFU1RfTEFURU5DWQ0KfSBMQVRFTkNZX1RJ
TUU7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gX1BP
V0VSX1JFUVVFU1RfVFlQRSB7DQogICAgUG93ZXJSZXF1ZXN0RGlzcGxheVJlcXVpcmVkLA0KICAg
IFBvd2VyUmVxdWVzdFN5c3RlbVJlcXVpcmVkLA0KICAgIFBvd2VyUmVxdWVzdEF3YXlNb2RlUmVx
dWlyZWQsDQogICAgUG93ZXJSZXF1ZXN0RXhlY3V0aW9uUmVxdWlyZWQNCn0gUE9XRVJfUkVRVUVT
VF9UWVBFLCAqUFBPV0VSX1JFUVVFU1RfVFlQRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBDTV9Qb3dlcl9EYXRhX3Mgew0KICAgIERXT1JE
ICAgICAgICAgICAgICAgUERfU2l6ZTsNCiAgICBERVZJQ0VfUE9XRVJfU1RBVEUgIFBEX01vc3RS
ZWNlbnRQb3dlclN0YXRlOw0KICAgIERXT1JEICAgICAgICAgICAgICAgUERfQ2FwYWJpbGl0aWVz
Ow0KICAgIERXT1JEICAgICAgICAgICAgICAgUERfRDFMYXRlbmN5Ow0KICAgIERXT1JEICAgICAg
ICAgICAgICAgUERfRDJMYXRlbmN5Ow0KICAgIERXT1JEICAgICAgICAgICAgICAgUERfRDNMYXRl
bmN5Ow0KICAgIERFVklDRV9QT1dFUl9TVEFURSAgUERfUG93ZXJTdGF0ZU1hcHBpbmdbN107DQog
ICAgU1lTVEVNX1BPV0VSX1NUQVRFICBQRF9EZWVwZXN0U3lzdGVtV2FrZTsNCn0gQ01fUE9XRVJf
REFUQSwgKlBDTV9QT1dFUl9EQVRBOw0KDQojbGluZSAxNTc4NyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQoNCg0KDQp0eXBlZGVmIGVudW0gew0KICAgIFN5c3RlbVBvd2VyUG9saWN5QWMsDQogICAg
U3lzdGVtUG93ZXJQb2xpY3lEYywNCiAgICBWZXJpZnlTeXN0ZW1Qb2xpY3lBYywNCiAgICBWZXJp
ZnlTeXN0ZW1Qb2xpY3lEYywNCiAgICBTeXN0ZW1Qb3dlckNhcGFiaWxpdGllcywNCiAgICBTeXN0
ZW1CYXR0ZXJ5U3RhdGUsDQogICAgU3lzdGVtUG93ZXJTdGF0ZUhhbmRsZXIsDQogICAgUHJvY2Vz
c29yU3RhdGVIYW5kbGVyLA0KICAgIFN5c3RlbVBvd2VyUG9saWN5Q3VycmVudCwNCiAgICBBZG1p
bmlzdHJhdG9yUG93ZXJQb2xpY3ksDQogICAgU3lzdGVtUmVzZXJ2ZUhpYmVyRmlsZSwNCiAgICBQ
cm9jZXNzb3JJbmZvcm1hdGlvbiwNCiAgICBTeXN0ZW1Qb3dlckluZm9ybWF0aW9uLA0KICAgIFBy
b2Nlc3NvclN0YXRlSGFuZGxlcjIsDQogICAgTGFzdFdha2VUaW1lLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgTGFzdFNsZWVwVGltZSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgU3lzdGVtRXhlY3V0aW9uU3RhdGUsDQogICAgU3lzdGVtUG93
ZXJTdGF0ZU5vdGlmeUhhbmRsZXIsDQogICAgUHJvY2Vzc29yUG93ZXJQb2xpY3lBYywNCiAgICBQ
cm9jZXNzb3JQb3dlclBvbGljeURjLA0KICAgIFZlcmlmeVByb2Nlc3NvclBvd2VyUG9saWN5QWMs
DQogICAgVmVyaWZ5UHJvY2Vzc29yUG93ZXJQb2xpY3lEYywNCiAgICBQcm9jZXNzb3JQb3dlclBv
bGljeUN1cnJlbnQsDQogICAgU3lzdGVtUG93ZXJTdGF0ZUxvZ2dpbmcsDQogICAgU3lzdGVtUG93
ZXJMb2dnaW5nRW50cnksDQogICAgU2V0UG93ZXJTZXR0aW5nVmFsdWUsDQogICAgTm90aWZ5VXNl
clBvd2VyU2V0dGluZywNCiAgICBQb3dlckluZm9ybWF0aW9uTGV2ZWxVbnVzZWQwLA0KICAgIFN5
c3RlbU1vbml0b3JIaWJlckJvb3RQb3dlck9mZiwNCiAgICBTeXN0ZW1WaWRlb1N0YXRlLA0KICAg
IFRyYWNlQXBwbGljYXRpb25Qb3dlck1lc3NhZ2UsDQogICAgVHJhY2VBcHBsaWNhdGlvblBvd2Vy
TWVzc2FnZUVuZCwNCiAgICBQcm9jZXNzb3JQZXJmU3RhdGVzLA0KICAgIFByb2Nlc3NvcklkbGVT
dGF0ZXMsDQogICAgUHJvY2Vzc29yQ2FwLA0KICAgIFN5c3RlbVdha2VTb3VyY2UsDQogICAgU3lz
dGVtSGliZXJGaWxlSW5mb3JtYXRpb24sDQogICAgVHJhY2VTZXJ2aWNlUG93ZXJNZXNzYWdlLA0K
ICAgIFByb2Nlc3NvckxvYWQsDQogICAgUG93ZXJTaHV0ZG93bk5vdGlmaWNhdGlvbiwNCiAgICBN
b25pdG9yQ2FwYWJpbGl0aWVzLA0KICAgIFNlc3Npb25Qb3dlckluaXQsDQogICAgU2Vzc2lvbkRp
c3BsYXlTdGF0ZSwNCiAgICBQb3dlclJlcXVlc3RDcmVhdGUsDQogICAgUG93ZXJSZXF1ZXN0QWN0
aW9uLA0KICAgIEdldFBvd2VyUmVxdWVzdExpc3QsDQogICAgUHJvY2Vzc29ySW5mb3JtYXRpb25F
eCwNCiAgICBOb3RpZnlVc2VyTW9kZUxlZ2FjeVBvd2VyRXZlbnQsDQogICAgR3JvdXBQYXJrLA0K
ICAgIFByb2Nlc3NvcklkbGVEb21haW5zLA0KICAgIFdha2VUaW1lckxpc3QsDQogICAgU3lzdGVt
SGliZXJGaWxlU2l6ZSwNCiAgICBQcm9jZXNzb3JJZGxlU3RhdGVzSHYsDQogICAgUHJvY2Vzc29y
UGVyZlN0YXRlc0h2LA0KICAgIFByb2Nlc3NvclBlcmZDYXBIdiwNCiAgICBQcm9jZXNzb3JTZXRJ
ZGxlLA0KICAgIExvZ2ljYWxQcm9jZXNzb3JJZGxpbmcsDQogICAgVXNlclByZXNlbmNlLA0KICAg
IFBvd2VyU2V0dGluZ05vdGlmaWNhdGlvbk5hbWUsDQogICAgR2V0UG93ZXJTZXR0aW5nVmFsdWUs
DQogICAgSWRsZVJlc2lsaWVuY3ksDQogICAgU2Vzc2lvblJJVFN0YXRlLA0KICAgIFNlc3Npb25D
b25uZWN0Tm90aWZpY2F0aW9uLA0KICAgIFNlc3Npb25Qb3dlckNsZWFudXAsDQogICAgU2Vzc2lv
bkxvY2tTdGF0ZSwNCiAgICBTeXN0ZW1IaWJlcmJvb3RTdGF0ZSwNCiAgICBQbGF0Zm9ybUluZm9y
bWF0aW9uLA0KICAgIFBkY0ludm9jYXRpb24sDQogICAgTW9uaXRvckludm9jYXRpb24sDQogICAg
RmlybXdhcmVUYWJsZUluZm9ybWF0aW9uUmVnaXN0ZXJlZCwNCiAgICBTZXRTaHV0ZG93blNlbGVj
dGVkVGltZSwNCiAgICBTdXNwZW5kUmVzdW1lSW52b2NhdGlvbiwNCiAgICBQbG1Qb3dlclJlcXVl
c3RDcmVhdGUsDQogICAgU2NyZWVuT2ZmLA0KICAgIENzRGV2aWNlTm90aWZpY2F0aW9uLA0KICAg
IFBsYXRmb3JtUm9sZSwNCiAgICBMYXN0UmVzdW1lUGVyZm9ybWFuY2UsDQogICAgRGlzcGxheUJ1
cnN0LA0KICAgIEV4aXRMYXRlbmN5U2FtcGxpbmdQZXJjZW50YWdlLA0KICAgIFJlZ2lzdGVyU3Bt
UG93ZXJTZXR0aW5ncywNCiAgICBQbGF0Zm9ybUlkbGVTdGF0ZXMsDQogICAgUHJvY2Vzc29ySWRs
ZVZldG8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgUGxhdGZvcm1JZGxlVmV0
bywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgU3lzdGVtQmF0dGVyeVN0YXRl
UHJlY2lzZSwNCiAgICBUaGVybWFsRXZlbnQsDQogICAgUG93ZXJSZXF1ZXN0QWN0aW9uSW50ZXJu
YWwsDQogICAgQmF0dGVyeURldmljZVN0YXRlLA0KICAgIFBvd2VySW5mb3JtYXRpb25JbnRlcm5h
bCwNCiAgICBUaGVybWFsU3RhbmRieSwNCiAgICBTeXN0ZW1IaWJlckZpbGVUeXBlLA0KICAgIFBo
eXNpY2FsUG93ZXJCdXR0b25QcmVzcywNCiAgICBRdWVyeVBvdGVudGlhbERyaXBzQ29uc3RyYWlu
dCwNCiAgICBFbmVyZ3lUcmFja2VyQ3JlYXRlLA0KICAgIEVuZXJneVRyYWNrZXJRdWVyeSwNCiAg
ICBVcGRhdGVCbGFja0JveFJlY29yZGVyLA0KICAgIFNlc3Npb25BbGxvd0V4dGVybmFsRG1hRGV2
aWNlcywNCiAgICBQb3dlckluZm9ybWF0aW9uTGV2ZWxNYXhpbXVtDQp9IFBPV0VSX0lORk9STUFU
SU9OX0xFVkVMOw0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSB7DQogICAgVXNlck5vdFByZXNlbnQg
PSAwLA0KICAgIFVzZXJQcmVzZW50ID0gMSwNCiAgICBVc2VyVW5rbm93biA9IDB4ZmYNCn0gUE9X
RVJfVVNFUl9QUkVTRU5DRV9UWVBFLCAqUFBPV0VSX1VTRVJfUFJFU0VOQ0VfVFlQRTsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1BPV0VSX1VTRVJfUFJFU0VOQ0Ugew0KICAgIFBPV0VSX1VTRVJfUFJFU0VO
Q0VfVFlQRSBVc2VyUHJlc2VuY2U7DQp9IFBPV0VSX1VTRVJfUFJFU0VOQ0UsICpQUE9XRVJfVVNF
Ul9QUkVTRU5DRTsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BPV0VSX1NFU1NJT05fQ09OTkVD
VCB7DQogICAgQk9PTEVBTiBDb25uZWN0ZWQ7ICANCiAgICBCT09MRUFOIENvbnNvbGU7ICAgIA0K
fSBQT1dFUl9TRVNTSU9OX0NPTk5FQ1QsICpQUE9XRVJfU0VTU0lPTl9DT05ORUNUOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfUE9XRVJfU0VTU0lPTl9USU1FT1VUUyB7DQogICAgRFdPUkQgSW5wdXRUaW1l
b3V0Ow0KICAgIERXT1JEIERpc3BsYXlUaW1lb3V0Ow0KfSBQT1dFUl9TRVNTSU9OX1RJTUVPVVRT
LCAqUFBPV0VSX1NFU1NJT05fVElNRU9VVFM7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9QT1dF
Ul9TRVNTSU9OX1JJVF9TVEFURSB7DQogICAgQk9PTEVBTiBBY3RpdmU7ICANCiAgICBEV09SRCBM
YXN0SW5wdXRUaW1lOyANCn0gUE9XRVJfU0VTU0lPTl9SSVRfU1RBVEUsICpQUE9XRVJfU0VTU0lP
Tl9SSVRfU1RBVEU7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9QT1dFUl9TRVNTSU9OX1dJTkxP
R09OIHsNCiAgICBEV09SRCBTZXNzaW9uSWQ7IA0KICAgIEJPT0xFQU4gQ29uc29sZTsgDQogICAg
Qk9PTEVBTiBMb2NrZWQ7IA0KfSBQT1dFUl9TRVNTSU9OX1dJTkxPR09OLCAqUFBPV0VSX1NFU1NJ
T05fV0lOTE9HT047DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9QT1dFUl9TRVNTSU9OX0FMTE9X
X0VYVEVSTkFMX0RNQV9ERVZJQ0VTIHsNCiAgICBCT09MRUFOIElzQWxsb3dlZDsNCn0gUE9XRVJf
U0VTU0lPTl9BTExPV19FWFRFUk5BTF9ETUFfREVWSUNFUywgKlBQT1dFUl9TRVNTSU9OX0FMTE9X
X0VYVEVSTkFMX0RNQV9ERVZJQ0VTOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUE9XRVJfSURM
RV9SRVNJTElFTkNZIHsNCiAgICBEV09SRCBDb2FsZXNjaW5nVGltZW91dDsNCiAgICBEV09SRCBJ
ZGxlUmVzaWxpZW5jeVBlcmlvZDsNCn0gUE9XRVJfSURMRV9SRVNJTElFTkNZLCAqUFBPV0VSX0lE
TEVfUkVTSUxJRU5DWTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSB7DQogICAgTW9uaXRvclJl
cXVlc3RSZWFzb25Vbmtub3duLA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uUG93ZXJCdXR0b24s
DQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25SZW1vdGVDb25uZWN0aW9uLA0KICAgIE1vbml0b3JS
ZXF1ZXN0UmVhc29uU2NNb25pdG9ycG93ZXIsDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25Vc2Vy
SW5wdXQsDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25BY0RjRGlzcGxheUJ1cnN0LA0KICAgIE1v
bml0b3JSZXF1ZXN0UmVhc29uVXNlckRpc3BsYXlCdXJzdCwNCiAgICBNb25pdG9yUmVxdWVzdFJl
YXNvblBvU2V0U3lzdGVtU3RhdGUsDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25TZXRUaHJlYWRF
eGVjdXRpb25TdGF0ZSwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvbkZ1bGxXYWtlLA0KICAgIE1v
bml0b3JSZXF1ZXN0UmVhc29uU2Vzc2lvblVubG9jaywNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNv
blNjcmVlbk9mZlJlcXVlc3QsDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25JZGxlVGltZW91dCwN
CiAgICBNb25pdG9yUmVxdWVzdFJlYXNvblBvbGljeUNoYW5nZSwNCiAgICBNb25pdG9yUmVxdWVz
dFJlYXNvblNsZWVwQnV0dG9uLA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uTGlkLA0KICAgIE1v
bml0b3JSZXF1ZXN0UmVhc29uQmF0dGVyeUNvdW50Q2hhbmdlLA0KICAgIE1vbml0b3JSZXF1ZXN0
UmVhc29uR3JhY2VQZXJpb2QsDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25QblAsDQogICAgTW9u
aXRvclJlcXVlc3RSZWFzb25EUCwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvblN4VHJhbnNpdGlv
biwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvblN5c3RlbUlkbGUsDQogICAgTW9uaXRvclJlcXVl
c3RSZWFzb25OZWFyUHJveGltaXR5LA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uVGhlcm1hbFN0
YW5kYnksDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25SZXN1bWVQZGMsDQogICAgTW9uaXRvclJl
cXVlc3RSZWFzb25SZXN1bWVTNCwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvblRlcm1pbmFsLA0K
ICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uUGRjU2lnbmFsLA0KICAgIE1vbml0b3JSZXF1ZXN0UmVh
c29uQWNEY0Rpc3BsYXlCdXJzdFN1cHByZXNzZWQsDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25T
eXN0ZW1TdGF0ZUVudGVyZWQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgTW9uaXRvclJlcXVlc3RSZWFzb25XaW5ydCwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvblVz
ZXJJbnB1dEtleWJvYXJkLA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uVXNlcklucHV0TW91c2Us
DQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25Vc2VySW5wdXRUb3VjaCwNCiAgICBNb25pdG9yUmVx
dWVzdFJlYXNvblVzZXJJbnB1dFBlbiwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvblVzZXJJbnB1
dEFjY2VsZXJvbWV0ZXIsDQogICAgTW9uaXRvclJlcXVlc3RSZWFzb25Vc2VySW5wdXRIaWQsDQog
ICAgTW9uaXRvclJlcXVlc3RSZWFzb25Vc2VySW5wdXRQb1VzZXJQcmVzZW50LA0KICAgIE1vbml0
b3JSZXF1ZXN0UmVhc29uVXNlcklucHV0U2Vzc2lvblN3aXRjaCwNCiAgICBNb25pdG9yUmVxdWVz
dFJlYXNvblVzZXJJbnB1dEluaXRpYWxpemF0aW9uLA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29u
UGRjU2lnbmFsV2luZG93c01vYmlsZVB3ck5vdGlmLCAgICAgICAgIA0KICAgIE1vbml0b3JSZXF1
ZXN0UmVhc29uUGRjU2lnbmFsV2luZG93c01vYmlsZVNoZWxsLCAgICAgICAgICAgIA0KICAgIE1v
bml0b3JSZXF1ZXN0UmVhc29uUGRjU2lnbmFsSGV5Q29ydGFuYSwgICAgICAgICAgICAgICAgICAg
IA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uUGRjU2lnbmFsSG9sb2dyYXBoaWNTaGVsbCwgICAg
ICAgICAgICAgIA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uUGRjU2lnbmFsRmluZ2VycHJpbnQs
ICAgICAgICAgICAgICAgICAgIA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uRGlyZWN0ZWREcmlw
cywNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvbkRpbSwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNv
bkJ1aWx0aW5QYW5lbCwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvbkRpc3BsYXlSZXF1aXJlZFVu
RGltLA0KICAgIE1vbml0b3JSZXF1ZXN0UmVhc29uQmF0dGVyeUNvdW50Q2hhbmdlU3VwcHJlc3Nl
ZCwNCiAgICBNb25pdG9yUmVxdWVzdFJlYXNvblJlc3VtZU1vZGVyblN0YW5kYnksDQogICAgTW9u
aXRvclJlcXVlc3RSZWFzb25NYXgNCn0gUE9XRVJfTU9OSVRPUl9SRVFVRVNUX1JFQVNPTjsNCg0K
dHlwZWRlZiBlbnVtIF9QT1dFUl9NT05JVE9SX1JFUVVFU1RfVFlQRSB7DQogICAgTW9uaXRvclJl
cXVlc3RUeXBlT2ZmLA0KICAgIE1vbml0b3JSZXF1ZXN0VHlwZU9uQW5kUHJlc2VudCwNCiAgICBN
b25pdG9yUmVxdWVzdFR5cGVUb2dnbGVPbg0KfSBQT1dFUl9NT05JVE9SX1JFUVVFU1RfVFlQRTsN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BPV0VSX01PTklUT1JfSU5WT0NBVElPTiB7DQogICAg
Qk9PTEVBTiBDb25zb2xlOw0KICAgIFBPV0VSX01PTklUT1JfUkVRVUVTVF9SRUFTT04gUmVxdWVz
dFJlYXNvbjsNCn0gUE9XRVJfTU9OSVRPUl9JTlZPQ0FUSU9OLCAqUFBPV0VSX01PTklUT1JfSU5W
T0NBVElPTjsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUkVTVU1FX1BFUkZPUk1BTkNFIHsN
CiAgICBEV09SRCBQb3N0VGltZU1zOw0KICAgIFVMT05HTE9ORyBUb3RhbFJlc3VtZVRpbWVNczsN
CiAgICBVTE9OR0xPTkcgUmVzdW1lQ29tcGxldGVUaW1lc3RhbXA7DQp9IFJFU1VNRV9QRVJGT1JN
QU5DRSwgKlBSRVNVTUVfUEVSRk9STUFOQ0U7DQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIHsNCiAg
ICBQb0FjLA0KICAgIFBvRGMsDQogICAgUG9Ib3QsDQogICAgUG9Db25kaXRpb25NYXhpbXVtDQp9
IFNZU1RFTV9QT1dFUl9DT05ESVRJT047DQoNCnR5cGVkZWYgc3RydWN0IHsNCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIERXT1JEICAgICAgIFZlcnNpb247DQoNCg0KICAgIA0KICAgIA0K
ICAgIA0KICAgIEdVSUQgICAgICAgIEd1aWQ7DQoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIFNZU1RFTV9QT1dFUl9DT05ESVRJT04gUG93ZXJDb25kaXRpb247DQoNCiAgICANCiAgICAN
CiAgICANCiAgICBEV09SRCAgICAgICBEYXRhTGVuZ3RoOw0KDQogICAgDQogICAgDQogICAgDQog
ICAgQllURSAgICBEYXRhWzFdOw0KfSBTRVRfUE9XRVJfU0VUVElOR19WQUxVRSwgKlBTRVRfUE9X
RVJfU0VUVElOR19WQUxVRTsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBHVUlEIEd1aWQ7
DQp9IE5PVElGWV9VU0VSX1BPV0VSX1NFVFRJTkcsICpQTk9USUZZX1VTRVJfUE9XRVJfU0VUVElO
RzsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9BUFBMSUNBVElPTkxBVU5DSF9TRVRUSU5H
X1ZBTFVFIHsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIExBUkdFX0lOVEVHRVIgICAg
ICAgQWN0aXZhdGlvblRpbWU7DQoNCiAgICANCiAgICANCiAgICANCiAgICBEV09SRCAgICAgICAg
ICAgICAgIEZsYWdzOw0KDQogICAgDQogICAgDQogICAgDQogICAgRFdPUkQgICAgICAgICAgICAg
ICBCdXR0b25JbnN0YW5jZUlEOw0KDQoNCn0gQVBQTElDQVRJT05MQVVOQ0hfU0VUVElOR19WQUxV
RSwgKlBBUFBMSUNBVElPTkxBVU5DSF9TRVRUSU5HX1ZBTFVFOw0KDQoNCg0KDQoNCnR5cGVkZWYg
ZW51bSBfUE9XRVJfUExBVEZPUk1fUk9MRSB7DQogICAgUGxhdGZvcm1Sb2xlVW5zcGVjaWZpZWQg
PSAwLA0KICAgIFBsYXRmb3JtUm9sZURlc2t0b3AsDQogICAgUGxhdGZvcm1Sb2xlTW9iaWxlLA0K
ICAgIFBsYXRmb3JtUm9sZVdvcmtzdGF0aW9uLA0KICAgIFBsYXRmb3JtUm9sZUVudGVycHJpc2VT
ZXJ2ZXIsDQogICAgUGxhdGZvcm1Sb2xlU09IT1NlcnZlciwNCiAgICBQbGF0Zm9ybVJvbGVBcHBs
aWFuY2VQQywNCiAgICBQbGF0Zm9ybVJvbGVQZXJmb3JtYW5jZVNlcnZlciwgDQogICAgUGxhdGZv
cm1Sb2xlU2xhdGUsICAgICAgICAgICAgIA0KICAgIFBsYXRmb3JtUm9sZU1heGltdW0NCn0gUE9X
RVJfUExBVEZPUk1fUk9MRSwgKlBQT1dFUl9QTEFURk9STV9ST0xFOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTYxMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQojbGlu
ZSAxNjE0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCnR5cGVkZWYgc3RydWN0IF9QT1dFUl9Q
TEFURk9STV9JTkZPUk1BVElPTiB7DQogICAgQk9PTEVBTiBBb0FjOw0KfSBQT1dFUl9QTEFURk9S
TV9JTkZPUk1BVElPTiwgKlBQT1dFUl9QTEFURk9STV9JTkZPUk1BVElPTjsNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRCAgICAgICBHcmFudWxhcml0eTsNCiAgICBEV09S
RCAgICAgICBDYXBhY2l0eTsNCn0gQkFUVEVSWV9SRVBPUlRJTkdfU0NBTEUsICpQQkFUVEVSWV9S
RVBPUlRJTkdfU0NBTEU7DQojbGluZSAxNjE1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCB7DQogICAgRFdPUkQgICBGcmVxdWVuY3k7DQogICAgRFdPUkQgICBG
bGFnczsNCiAgICBEV09SRCAgIFBlcmNlbnRGcmVxdWVuY3k7DQp9IFBQTV9XTUlfTEVHQUNZX1BF
UkZTVEFURSwgKlBQUE1fV01JX0xFR0FDWV9QRVJGU1RBVEU7DQoNCnR5cGVkZWYgc3RydWN0IHsN
CiAgICBEV09SRCBMYXRlbmN5Ow0KICAgIERXT1JEIFBvd2VyOw0KICAgIERXT1JEIFRpbWVDaGVj
azsNCiAgICBCWVRFICBQcm9tb3RlUGVyY2VudDsNCiAgICBCWVRFICBEZW1vdGVQZXJjZW50Ow0K
ICAgIEJZVEUgIFN0YXRlVHlwZTsNCiAgICBCWVRFICBSZXNlcnZlZDsNCiAgICBEV09SRCBTdGF0
ZUZsYWdzOw0KICAgIERXT1JEIENvbnRleHQ7DQogICAgRFdPUkQgSWRsZUhhbmRsZXI7DQogICAg
RFdPUkQgUmVzZXJ2ZWQxOyAgICAgICAgICAgIA0KfSBQUE1fV01JX0lETEVfU1RBVEUsICpQUFBN
X1dNSV9JRExFX1NUQVRFOw0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgRFdPUkQgVHlwZTsNCiAg
ICBEV09SRCBDb3VudDsNCiAgICBEV09SRCBUYXJnZXRTdGF0ZTsgICAgICAgICAgDQogICAgRFdP
UkQgT2xkU3RhdGU7ICAgICAgICAgICAgIA0KICAgIERXT1JENjQgVGFyZ2V0UHJvY2Vzc29yczsN
CiAgICBQUE1fV01JX0lETEVfU1RBVEUgU3RhdGVbMV07DQp9IFBQTV9XTUlfSURMRV9TVEFURVMs
ICpQUFBNX1dNSV9JRExFX1NUQVRFUzsNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIERXT1JEIFR5
cGU7DQogICAgRFdPUkQgQ291bnQ7DQogICAgRFdPUkQgVGFyZ2V0U3RhdGU7ICAgICAgICAgIA0K
ICAgIERXT1JEIE9sZFN0YXRlOyAgICAgICAgICAgICANCiAgICBQVk9JRCBUYXJnZXRQcm9jZXNz
b3JzOw0KICAgIFBQTV9XTUlfSURMRV9TVEFURSBTdGF0ZVsxXTsNCn0gUFBNX1dNSV9JRExFX1NU
QVRFU19FWCwgKlBQUE1fV01JX0lETEVfU1RBVEVTX0VYOw0KDQp0eXBlZGVmIHN0cnVjdCB7DQog
ICAgRFdPUkQgRnJlcXVlbmN5OyAgICAgICAgICAgIA0KICAgIERXT1JEIFBvd2VyOyAgICAgICAg
ICAgICAgICANCiAgICBCWVRFICBQZXJjZW50RnJlcXVlbmN5Ow0KICAgIEJZVEUgIEluY3JlYXNl
TGV2ZWw7ICAgICAgICANCiAgICBCWVRFICBEZWNyZWFzZUxldmVsOyAgICAgICAgDQogICAgQllU
RSAgVHlwZTsgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEIEluY3JlYXNlVGltZTsgICAgICAg
ICANCiAgICBEV09SRCBEZWNyZWFzZVRpbWU7ICAgICAgICAgDQogICAgRFdPUkQ2NCBDb250cm9s
OyAgICAgICAgICAgIA0KICAgIERXT1JENjQgU3RhdHVzOyAgICAgICAgICAgICANCiAgICBEV09S
RCBIaXRDb3VudDsNCiAgICBEV09SRCBSZXNlcnZlZDE7ICAgICAgICAgICAgDQogICAgRFdPUkQ2
NCBSZXNlcnZlZDI7DQogICAgRFdPUkQ2NCBSZXNlcnZlZDM7DQp9IFBQTV9XTUlfUEVSRl9TVEFU
RSwgKlBQUE1fV01JX1BFUkZfU1RBVEU7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRCBD
b3VudDsNCiAgICBEV09SRCBNYXhGcmVxdWVuY3k7DQogICAgRFdPUkQgQ3VycmVudFN0YXRlOyAg
ICAgICAgIA0KICAgIERXT1JEIE1heFBlcmZTdGF0ZTsgICAgICAgICANCiAgICBEV09SRCBNaW5Q
ZXJmU3RhdGU7ICAgICAgICAgDQogICAgRFdPUkQgTG93ZXN0UGVyZlN0YXRlOyAgICAgIA0KICAg
IERXT1JEIFRoZXJtYWxDb25zdHJhaW50Ow0KICAgIEJZVEUgIEJ1c3lBZGpUaHJlc2hvbGQ7DQog
ICAgQllURSAgUG9saWN5VHlwZTsgICAgICAgICAgIA0KICAgIEJZVEUgIFR5cGU7DQogICAgQllU
RSAgUmVzZXJ2ZWQ7DQogICAgRFdPUkQgVGltZXJJbnRlcnZhbDsNCiAgICBEV09SRDY0IFRhcmdl
dFByb2Nlc3NvcnM7ICAgDQogICAgRFdPUkQgUFN0YXRlSGFuZGxlcjsNCiAgICBEV09SRCBQU3Rh
dGVDb250ZXh0Ow0KICAgIERXT1JEIFRTdGF0ZUhhbmRsZXI7DQogICAgRFdPUkQgVFN0YXRlQ29u
dGV4dDsNCiAgICBEV09SRCBGZWVkYmFja0hhbmRsZXI7DQogICAgRFdPUkQgUmVzZXJ2ZWQxOw0K
ICAgIERXT1JENjQgUmVzZXJ2ZWQyOw0KICAgIFBQTV9XTUlfUEVSRl9TVEFURSBTdGF0ZVsxXTsN
Cn0gUFBNX1dNSV9QRVJGX1NUQVRFUywgKlBQUE1fV01JX1BFUkZfU1RBVEVTOw0KDQp0eXBlZGVm
IHN0cnVjdCB7DQogICAgRFdPUkQgQ291bnQ7DQogICAgRFdPUkQgTWF4RnJlcXVlbmN5Ow0KICAg
IERXT1JEIEN1cnJlbnRTdGF0ZTsgICAgICAgICANCiAgICBEV09SRCBNYXhQZXJmU3RhdGU7ICAg
ICAgICAgDQogICAgRFdPUkQgTWluUGVyZlN0YXRlOyAgICAgICAgIA0KICAgIERXT1JEIExvd2Vz
dFBlcmZTdGF0ZTsgICAgICANCiAgICBEV09SRCBUaGVybWFsQ29uc3RyYWludDsNCiAgICBCWVRF
ICBCdXN5QWRqVGhyZXNob2xkOw0KICAgIEJZVEUgIFBvbGljeVR5cGU7ICAgICAgICAgICANCiAg
ICBCWVRFICBUeXBlOw0KICAgIEJZVEUgIFJlc2VydmVkOw0KICAgIERXT1JEIFRpbWVySW50ZXJ2
YWw7DQogICAgUFZPSUQgVGFyZ2V0UHJvY2Vzc29yczsgICAgIA0KICAgIERXT1JEIFBTdGF0ZUhh
bmRsZXI7DQogICAgRFdPUkQgUFN0YXRlQ29udGV4dDsNCiAgICBEV09SRCBUU3RhdGVIYW5kbGVy
Ow0KICAgIERXT1JEIFRTdGF0ZUNvbnRleHQ7DQogICAgRFdPUkQgRmVlZGJhY2tIYW5kbGVyOw0K
ICAgIERXT1JEIFJlc2VydmVkMTsNCiAgICBEV09SRDY0IFJlc2VydmVkMjsNCiAgICBQUE1fV01J
X1BFUkZfU1RBVEUgU3RhdGVbMV07DQp9IFBQTV9XTUlfUEVSRl9TVEFURVNfRVgsICpQUFBNX1dN
SV9QRVJGX1NUQVRFU19FWDsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIERX
T1JEIElkbGVUcmFuc2l0aW9uczsNCiAgICBEV09SRCBGYWlsZWRUcmFuc2l0aW9uczsNCiAgICBE
V09SRCBJbnZhbGlkQnVja2V0SW5kZXg7DQogICAgRFdPUkQ2NCBUb3RhbFRpbWU7DQogICAgRFdP
UkQgSWRsZVRpbWVCdWNrZXRzWzZdOw0KfSBQUE1fSURMRV9TVEFURV9BQ0NPVU5USU5HLCAqUFBQ
TV9JRExFX1NUQVRFX0FDQ09VTlRJTkc7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRCBT
dGF0ZUNvdW50Ow0KICAgIERXT1JEIFRvdGFsVHJhbnNpdGlvbnM7DQogICAgRFdPUkQgUmVzZXRD
b3VudDsNCiAgICBEV09SRDY0IFN0YXJ0VGltZTsNCiAgICBQUE1fSURMRV9TVEFURV9BQ0NPVU5U
SU5HIFN0YXRlWzFdOw0KfSBQUE1fSURMRV9BQ0NPVU5USU5HLCAqUFBQTV9JRExFX0FDQ09VTlRJ
Tkc7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRDY0IFRvdGFsVGlt
ZVVzOw0KICAgIERXT1JEIE1pblRpbWVVczsNCiAgICBEV09SRCBNYXhUaW1lVXM7DQogICAgRFdP
UkQgQ291bnQ7DQp9IFBQTV9JRExFX1NUQVRFX0JVQ0tFVF9FWCwgKlBQUE1fSURMRV9TVEFURV9C
VUNLRVRfRVg7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRDY0IFRvdGFsVGltZTsNCiAg
ICBEV09SRCBJZGxlVHJhbnNpdGlvbnM7DQogICAgRFdPUkQgRmFpbGVkVHJhbnNpdGlvbnM7DQog
ICAgRFdPUkQgSW52YWxpZEJ1Y2tldEluZGV4Ow0KICAgIERXT1JEIE1pblRpbWVVczsNCiAgICBE
V09SRCBNYXhUaW1lVXM7DQogICAgRFdPUkQgQ2FuY2VsbGVkVHJhbnNpdGlvbnM7DQogICAgUFBN
X0lETEVfU1RBVEVfQlVDS0VUX0VYIElkbGVUaW1lQnVja2V0c1sxNl07DQp9IFBQTV9JRExFX1NU
QVRFX0FDQ09VTlRJTkdfRVgsICpQUFBNX0lETEVfU1RBVEVfQUNDT1VOVElOR19FWDsNCg0KdHlw
ZWRlZiBzdHJ1Y3Qgew0KICAgIERXT1JEIFN0YXRlQ291bnQ7DQogICAgRFdPUkQgVG90YWxUcmFu
c2l0aW9uczsNCiAgICBEV09SRCBSZXNldENvdW50Ow0KICAgIERXT1JEIEFib3J0Q291bnQ7DQog
ICAgRFdPUkQ2NCBTdGFydFRpbWU7DQogICAgICBQUE1fSURMRV9TVEFURV9BQ0NPVU5USU5HX0VY
IFN0YXRlWzFdOw0KfSBQUE1fSURMRV9BQ0NPVU5USU5HX0VYLCAqUFBQTV9JRExFX0FDQ09VTlRJ
TkdfRVg7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBQUE1fUEVSRlNUQVRFX0NI
QU5HRV9HVUlEOw0KI2xpbmUgMTYzODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCmV4dGVy
biAiQyIgY29uc3QgR1VJRCAgUFBNX1BFUkZTVEFURV9ET01BSU5fQ0hBTkdFX0dVSUQ7DQojbGlu
ZSAxNjM4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlE
ICBQUE1fSURMRVNUQVRFX0NIQU5HRV9HVUlEOw0KI2xpbmUgMTYzOTEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5udC5oIg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgUFBNX1BFUkZTVEFURVNfREFUQV9H
VUlEOw0KI2xpbmUgMTYzOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgR1VJRCAgUFBNX0lETEVTVEFURVNfREFUQV9HVUlEOw0KI2xpbmUgMTYzOTkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5udC5oIg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgUFBNX0lETEVfQUND
T1VOVElOR19HVUlEOw0KI2xpbmUgMTY0MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCmV4
dGVybiAiQyIgY29uc3QgR1VJRCAgUFBNX0lETEVfQUNDT1VOVElOR19FWF9HVUlEOw0KI2xpbmUg
MTY0MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAg
UFBNX1RIRVJNQUxDT05TVFJBSU5UX0dVSUQ7DQojbGluZSAxNjQxMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm50LmgiDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBQUE1fUEVSRk1PTl9QRVJGU1RBVEVf
R1VJRDsNCiNsaW5lIDE2NDE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQpleHRlcm4gIkMi
IGNvbnN0IEdVSUQgIFBQTV9USEVSTUFMX1BPTElDWV9DSEFOR0VfR1VJRDsNCiNsaW5lIDE2NDE5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgRFdPUkQg
U3RhdGU7DQogICAgRFdPUkQgU3RhdHVzOw0KICAgIERXT1JEIExhdGVuY3k7DQogICAgRFdPUkQg
U3BlZWQ7DQogICAgRFdPUkQgUHJvY2Vzc29yOw0KfSBQUE1fUEVSRlNUQVRFX0VWRU5ULCAqUFBQ
TV9QRVJGU1RBVEVfRVZFTlQ7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRCBTdGF0ZTsN
CiAgICBEV09SRCBMYXRlbmN5Ow0KICAgIERXT1JEIFNwZWVkOw0KICAgIERXT1JENjQgUHJvY2Vz
c29yczsNCn0gUFBNX1BFUkZTVEFURV9ET01BSU5fRVZFTlQsICpQUFBNX1BFUkZTVEFURV9ET01B
SU5fRVZFTlQ7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRCBOZXdTdGF0ZTsNCiAgICBE
V09SRCBPbGRTdGF0ZTsNCiAgICBEV09SRDY0IFByb2Nlc3NvcnM7DQp9IFBQTV9JRExFU1RBVEVf
RVZFTlQsICpQUFBNX0lETEVTVEFURV9FVkVOVDsNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIERX
T1JEIFRoZXJtYWxDb25zdHJhaW50Ow0KICAgIERXT1JENjQgUHJvY2Vzc29yczsNCn0gUFBNX1RI
RVJNQUxDSEFOR0VfRVZFTlQsICpQUFBNX1RIRVJNQUxDSEFOR0VfRVZFTlQ7DQoNCiNwcmFnbWEg
d2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyMSkNCg0KdHlwZWRlZiBz
dHJ1Y3Qgew0KICAgIEJZVEUgIE1vZGU7DQogICAgRFdPUkQ2NCBQcm9jZXNzb3JzOw0KfSBQUE1f
VEhFUk1BTF9QT0xJQ1lfRVZFTlQsICpQUFBNX1RIRVJNQUxfUE9MSUNZX0VWRU5UOw0KDQojcHJh
Z21hIHdhcm5pbmcocG9wKQ0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgUE9XRVJfQUNU
SU9OICAgIEFjdGlvbjsNCiAgICBEV09SRCAgICAgICAgICAgRmxhZ3M7DQogICAgRFdPUkQgICAg
ICAgICAgIEV2ZW50Q29kZTsNCn0gUE9XRVJfQUNUSU9OX1BPTElDWSwgKlBQT1dFUl9BQ1RJT05f
UE9MSUNZOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgQk9PTEVBTiAg
ICAgICAgICAgICAgICAgRW5hYmxlOw0KICAgIEJZVEUgICAgICAgICAgICAgICAgICAgIFNwYXJl
WzNdOw0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIEJhdHRlcnlMZXZlbDsNCiAgICBQT1dF
Ul9BQ1RJT05fUE9MSUNZICAgICBQb3dlclBvbGljeTsNCiAgICBTWVNURU1fUE9XRVJfU1RBVEUg
ICAgICBNaW5TeXN0ZW1TdGF0ZTsNCn0gU1lTVEVNX1BPV0VSX0xFVkVMLCAqUFNZU1RFTV9QT1dF
Ul9MRVZFTDsNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX1BPV0VSX1BP
TElDWSB7DQogICAgRFdPUkQgICAgICAgICAgICAgICAgICAgUmV2aXNpb247ICAgICAgIA0KDQog
ICAgDQogICAgUE9XRVJfQUNUSU9OX1BPTElDWSAgICAgUG93ZXJCdXR0b247DQogICAgUE9XRVJf
QUNUSU9OX1BPTElDWSAgICAgU2xlZXBCdXR0b247DQogICAgUE9XRVJfQUNUSU9OX1BPTElDWSAg
ICAgTGlkQ2xvc2U7DQogICAgU1lTVEVNX1BPV0VSX1NUQVRFICAgICAgTGlkT3Blbldha2U7DQog
ICAgRFdPUkQgICAgICAgICAgICAgICAgICAgUmVzZXJ2ZWQ7DQoNCiAgICANCiAgICBQT1dFUl9B
Q1RJT05fUE9MSUNZICAgICBJZGxlOw0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIElkbGVU
aW1lb3V0Ow0KICAgIEJZVEUgICAgICAgICAgICAgICAgICAgIElkbGVTZW5zaXRpdml0eTsNCg0K
ICAgIEJZVEUgICAgICAgICAgICAgICAgICAgIER5bmFtaWNUaHJvdHRsZTsNCiAgICBCWVRFICAg
ICAgICAgICAgICAgICAgICBTcGFyZTJbMl07DQoNCiAgICANCiAgICBTWVNURU1fUE9XRVJfU1RB
VEUgICAgICBNaW5TbGVlcDsNCiAgICBTWVNURU1fUE9XRVJfU1RBVEUgICAgICBNYXhTbGVlcDsN
CiAgICBTWVNURU1fUE9XRVJfU1RBVEUgICAgICBSZWR1Y2VkTGF0ZW5jeVNsZWVwOw0KICAgIERX
T1JEICAgICAgICAgICAgICAgICAgIFdpbkxvZ29uRmxhZ3M7DQoNCiAgICBEV09SRCAgICAgICAg
ICAgICAgICAgICBTcGFyZTM7DQoNCiAgICANCiAgICANCiAgICBEV09SRCAgICAgICAgICAgICAg
ICAgICBEb3plUzRUaW1lb3V0Ow0KDQogICAgDQogICAgRFdPUkQgICAgICAgICAgICAgICAgICAg
QnJvYWRjYXN0Q2FwYWNpdHlSZXNvbHV0aW9uOw0KICAgIFNZU1RFTV9QT1dFUl9MRVZFTCAgICAg
IERpc2NoYXJnZVBvbGljeVs0XTsNCg0KICAgIA0KICAgIERXT1JEICAgICAgICAgICAgICAgICAg
IFZpZGVvVGltZW91dDsNCiAgICBCT09MRUFOICAgICAgICAgICAgICAgICBWaWRlb0RpbURpc3Bs
YXk7DQogICAgRFdPUkQgICAgICAgICAgICAgICAgICAgVmlkZW9SZXNlcnZlZFszXTsNCg0KICAg
IA0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIFNwaW5kb3duVGltZW91dDsNCg0KICAgIA0K
ICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIE9wdGltaXplRm9yUG93ZXI7DQogICAgQllURSAg
ICAgICAgICAgICAgICAgICAgRmFuVGhyb3R0bGVUb2xlcmFuY2U7DQogICAgQllURSAgICAgICAg
ICAgICAgICAgICAgRm9yY2VkVGhyb3R0bGU7DQogICAgQllURSAgICAgICAgICAgICAgICAgICAg
TWluVGhyb3R0bGU7DQogICAgUE9XRVJfQUNUSU9OX1BPTElDWSAgICAgT3ZlclRocm90dGxlZDsN
Cg0KfSBTWVNURU1fUE9XRVJfUE9MSUNZLCAqUFNZU1RFTV9QT1dFUl9QT0xJQ1k7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBEV09SRCBUaW1lQ2hlY2s7DQogICAg
QllURSAgRGVtb3RlUGVyY2VudDsNCiAgICBCWVRFICBQcm9tb3RlUGVyY2VudDsNCiAgICBCWVRF
ICBTcGFyZVsyXTsNCn0gUFJPQ0VTU09SX0lETEVTVEFURV9JTkZPLCAqUFBST0NFU1NPUl9JRExF
U1RBVEVfSU5GTzsNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIFdPUkQgICBSZXZpc2lvbjsNCiAg
ICB1bmlvbiB7DQogICAgICAgIFdPUkQgICBBc1dPUkQgIDsNCiAgICAgICAgc3RydWN0IHsNCiAg
ICAgICAgICAgIFdPUkQgICBBbGxvd1NjYWxpbmcgOiAxOw0KICAgICAgICAgICAgV09SRCAgIERp
c2FibGVkIDogMTsNCiAgICAgICAgICAgIFdPUkQgICBSZXNlcnZlZCA6IDE0Ow0KICAgICAgICB9
IDsNCiAgICB9IEZsYWdzOw0KDQogICAgRFdPUkQgUG9saWN5Q291bnQ7DQogICAgUFJPQ0VTU09S
X0lETEVTVEFURV9JTkZPIFBvbGljeVsweDNdOw0KfSBQUk9DRVNTT1JfSURMRVNUQVRFX1BPTElD
WSwgKlBQUk9DRVNTT1JfSURMRVNUQVRFX1BPTElDWTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPQ0VTU09SX1BPV0VSX1BPTElDWV9JTkZPIHsNCg0KICAg
IA0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIFRpbWVDaGVjazsgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgRFdPUkQgICAgICAgICAgICAgICAgICAgRGVtb3RlTGltaXQ7ICAgICAgICAg
ICAgICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgICAgICAgICBQcm9tb3RlTGltaXQ7ICAg
ICAgICAgICAgICAgICAgIA0KDQogICAgDQogICAgQllURSAgICAgICAgICAgICAgICAgICAgRGVt
b3RlUGVyY2VudDsNCiAgICBCWVRFICAgICAgICAgICAgICAgICAgICBQcm9tb3RlUGVyY2VudDsN
CiAgICBCWVRFICAgICAgICAgICAgICAgICAgICBTcGFyZVsyXTsNCg0KICAgIA0KICAgIERXT1JE
ICAgICAgICAgICAgICAgICAgIEFsbG93RGVtb3Rpb246MTsNCiAgICBEV09SRCAgICAgICAgICAg
ICAgICAgICBBbGxvd1Byb21vdGlvbjoxOw0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIFJl
c2VydmVkOjMwOw0KDQp9IFBST0NFU1NPUl9QT1dFUl9QT0xJQ1lfSU5GTywgKlBQUk9DRVNTT1Jf
UE9XRVJfUE9MSUNZX0lORk87DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST0NFU1NPUl9QT1dFUl9Q
T0xJQ1kgew0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgICBSZXZpc2lvbjsgICAgICAg
DQoNCiAgICANCiAgICBCWVRFICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY1Rocm90dGxl
Ow0KICAgIEJZVEUgICAgICAgICAgICAgICAgICAgICAgICBTcGFyZVszXTsNCg0KICAgIA0KICAg
IERXT1JEICAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlQ1N0YXRlczoxOw0KICAgIERXT1JE
ICAgICAgICAgICAgICAgICAgICAgICBSZXNlcnZlZDozMTsNCg0KICAgIA0KICAgIA0KICAgIA0K
ICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgICBQb2xpY3lDb3VudDsNCiAgICBQUk9DRVNT
T1JfUE9XRVJfUE9MSUNZX0lORk8gUG9saWN5WzNdOw0KDQp9IFBST0NFU1NPUl9QT1dFUl9QT0xJ
Q1ksICpQUFJPQ0VTU09SX1BPV0VSX1BPTElDWTsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB7
DQogICAgRFdPUkQgUmV2aXNpb247DQogICAgQllURSAgTWF4VGhyb3R0bGU7DQogICAgQllURSAg
TWluVGhyb3R0bGU7DQogICAgQllURSAgQnVzeUFkalRocmVzaG9sZDsNCiAgICB1bmlvbiB7DQog
ICAgICAgIEJZVEUgIFNwYXJlOw0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICBCWVRFICBB
c0JZVEUgOw0KICAgICAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgICAgICBCWVRFICBOb0Rv
bWFpbkFjY291bnRpbmcgOiAxOw0KICAgICAgICAgICAgICAgIEJZVEUgIEluY3JlYXNlUG9saWN5
OiAyOw0KICAgICAgICAgICAgICAgIEJZVEUgIERlY3JlYXNlUG9saWN5OiAyOw0KICAgICAgICAg
ICAgICAgIEJZVEUgIFJlc2VydmVkIDogMzsNCiAgICAgICAgICAgIH0gOw0KICAgICAgICB9IEZs
YWdzOw0KICAgIH0gOw0KDQogICAgRFdPUkQgVGltZUNoZWNrOw0KICAgIERXT1JEIEluY3JlYXNl
VGltZTsNCiAgICBEV09SRCBEZWNyZWFzZVRpbWU7DQogICAgRFdPUkQgSW5jcmVhc2VQZXJjZW50
Ow0KICAgIERXT1JEIERlY3JlYXNlUGVyY2VudDsNCn0gUFJPQ0VTU09SX1BFUkZTVEFURV9QT0xJ
Q1ksICpQUFJPQ0VTU09SX1BFUkZTVEFURV9QT0xJQ1k7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0FE
TUlOSVNUUkFUT1JfUE9XRVJfUE9MSUNZIHsNCg0KICAgIA0KICAgIFNZU1RFTV9QT1dFUl9TVEFU
RSAgICAgIE1pblNsZWVwOw0KICAgIFNZU1RFTV9QT1dFUl9TVEFURSAgICAgIE1heFNsZWVwOw0K
DQogICAgDQogICAgRFdPUkQgICAgICAgICAgICAgICAgICAgTWluVmlkZW9UaW1lb3V0Ow0KICAg
IERXT1JEICAgICAgICAgICAgICAgICAgIE1heFZpZGVvVGltZW91dDsNCg0KICAgIA0KICAgIERX
T1JEICAgICAgICAgICAgICAgICAgIE1pblNwaW5kb3duVGltZW91dDsNCiAgICBEV09SRCAgICAg
ICAgICAgICAgICAgICBNYXhTcGluZG93blRpbWVvdXQ7DQp9IEFETUlOSVNUUkFUT1JfUE9XRVJf
UE9MSUNZLCAqUEFETUlOSVNUUkFUT1JfUE9XRVJfUE9MSUNZOw0KDQoNCnR5cGVkZWYgZW51bSBf
SElCRVJGSUxFX0JVQ0tFVF9TSVpFIHsNCiAgICBIaWJlckZpbGVCdWNrZXQxR0IgPSAwLA0KICAg
IEhpYmVyRmlsZUJ1Y2tldDJHQiwNCiAgICBIaWJlckZpbGVCdWNrZXQ0R0IsDQogICAgSGliZXJG
aWxlQnVja2V0OEdCLA0KICAgIEhpYmVyRmlsZUJ1Y2tldDE2R0IsDQogICAgSGliZXJGaWxlQnVj
a2V0MzJHQiwNCiAgICBIaWJlckZpbGVCdWNrZXRVbmxpbWl0ZWQsDQogICAgSGliZXJGaWxlQnVj
a2V0TWF4DQp9IEhJQkVSRklMRV9CVUNLRVRfU0laRSwgKlBISUJFUkZJTEVfQlVDS0VUX1NJWkU7
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSElCRVJGSUxFX0JVQ0tFVCB7DQogICAgRFdP
UkQ2NCBNYXhQaHlzaWNhbE1lbW9yeTsNCiAgICBEV09SRCBQaHlzaWNhbE1lbW9yeVBlcmNlbnRb
MHgwM107DQp9IEhJQkVSRklMRV9CVUNLRVQsICpQSElCRVJGSUxFX0JVQ0tFVDsNCg0KdHlwZWRl
ZiBzdHJ1Y3Qgew0KICAgIA0KICAgIEJPT0xFQU4gICAgICAgICAgICAgUG93ZXJCdXR0b25QcmVz
ZW50Ow0KICAgIEJPT0xFQU4gICAgICAgICAgICAgU2xlZXBCdXR0b25QcmVzZW50Ow0KICAgIEJP
T0xFQU4gICAgICAgICAgICAgTGlkUHJlc2VudDsNCiAgICBCT09MRUFOICAgICAgICAgICAgIFN5
c3RlbVMxOw0KICAgIEJPT0xFQU4gICAgICAgICAgICAgU3lzdGVtUzI7DQogICAgQk9PTEVBTiAg
ICAgICAgICAgICBTeXN0ZW1TMzsNCiAgICBCT09MRUFOICAgICAgICAgICAgIFN5c3RlbVM0OyAg
ICAgICAgICAgDQogICAgQk9PTEVBTiAgICAgICAgICAgICBTeXN0ZW1TNTsgICAgICAgICAgIA0K
ICAgIEJPT0xFQU4gICAgICAgICAgICAgSGliZXJGaWxlUHJlc2VudDsNCiAgICBCT09MRUFOICAg
ICAgICAgICAgIEZ1bGxXYWtlOw0KICAgIEJPT0xFQU4gICAgICAgICAgICAgVmlkZW9EaW1QcmVz
ZW50Ow0KICAgIEJPT0xFQU4gICAgICAgICAgICAgQXBtUHJlc2VudDsNCiAgICBCT09MRUFOICAg
ICAgICAgICAgIFVwc1ByZXNlbnQ7DQoNCiAgICANCiAgICBCT09MRUFOICAgICAgICAgICAgIFRo
ZXJtYWxDb250cm9sOw0KICAgIEJPT0xFQU4gICAgICAgICAgICAgUHJvY2Vzc29yVGhyb3R0bGU7
DQogICAgQllURSAgICAgICAgICAgICAgICBQcm9jZXNzb3JNaW5UaHJvdHRsZTsNCg0KDQoNCg0K
I2xpbmUgMTY3NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KICAgIEJZVEUgICAgICAgICAgICAg
ICAgUHJvY2Vzc29yTWF4VGhyb3R0bGU7DQogICAgQk9PTEVBTiAgICAgICAgICAgICBGYXN0U3lz
dGVtUzQ7DQogICAgQk9PTEVBTiAgICAgICAgICAgICBIaWJlcmJvb3Q7DQogICAgQk9PTEVBTiAg
ICAgICAgICAgICBXYWtlQWxhcm1QcmVzZW50Ow0KICAgIEJPT0xFQU4gICAgICAgICAgICAgQW9B
YzsNCiNsaW5lIDE2NzQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KICAgIA0KICAgIEJPT0xF
QU4gICAgICAgICAgICAgRGlza1NwaW5Eb3duOw0KDQoNCiAgICBCWVRFICAgICAgICAgICAgICAg
IHNwYXJlM1s4XTsNCg0KDQoNCg0KDQojbGluZSAxNjc2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50Lmgi
DQoNCiAgICANCiAgICBCT09MRUFOICAgICAgICAgICAgIFN5c3RlbUJhdHRlcmllc1ByZXNlbnQ7
DQogICAgQk9PTEVBTiAgICAgICAgICAgICBCYXR0ZXJpZXNBcmVTaG9ydFRlcm07DQogICAgQkFU
VEVSWV9SRVBPUlRJTkdfU0NBTEUgQmF0dGVyeVNjYWxlWzNdOw0KDQogICAgDQogICAgU1lTVEVN
X1BPV0VSX1NUQVRFICBBY09uTGluZVdha2U7DQogICAgU1lTVEVNX1BPV0VSX1NUQVRFICBTb2Z0
TGlkV2FrZTsNCiAgICBTWVNURU1fUE9XRVJfU1RBVEUgIFJ0Y1dha2U7DQogICAgU1lTVEVNX1BP
V0VSX1NUQVRFICBNaW5EZXZpY2VXYWtlU3RhdGU7IA0KICAgIFNZU1RFTV9QT1dFUl9TVEFURSAg
RGVmYXVsdExvd0xhdGVuY3lXYWtlOw0KfSBTWVNURU1fUE9XRVJfQ0FQQUJJTElUSUVTLCAqUFNZ
U1RFTV9QT1dFUl9DQVBBQklMSVRJRVM7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBCT09MRUFO
ICAgICAgICAgICAgIEFjT25MaW5lOw0KICAgIEJPT0xFQU4gICAgICAgICAgICAgQmF0dGVyeVBy
ZXNlbnQ7DQogICAgQk9PTEVBTiAgICAgICAgICAgICBDaGFyZ2luZzsNCiAgICBCT09MRUFOICAg
ICAgICAgICAgIERpc2NoYXJnaW5nOw0KICAgIEJPT0xFQU4gICAgICAgICAgICAgU3BhcmUxWzNd
Ow0KDQogICAgQllURSAgICAgICAgICAgICAgICBUYWc7DQoNCiAgICBEV09SRCAgICAgICAgICAg
ICAgIE1heENhcGFjaXR5Ow0KICAgIERXT1JEICAgICAgICAgICAgICAgUmVtYWluaW5nQ2FwYWNp
dHk7DQogICAgRFdPUkQgICAgICAgICAgICAgICBSYXRlOw0KICAgIERXT1JEICAgICAgICAgICAg
ICAgRXN0aW1hdGVkVGltZTsNCg0KICAgIERXT1JEICAgICAgICAgICAgICAgRGVmYXVsdEFsZXJ0
MTsNCiAgICBEV09SRCAgICAgICAgICAgICAgIERlZmF1bHRBbGVydDI7DQp9IFNZU1RFTV9CQVRU
RVJZX1NUQVRFLCAqUFNZU1RFTV9CQVRURVJZX1NUQVRFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykN
Cg0KI3ByYWdtYSBwYWNrKHB1c2gsNCkNCg0KDQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxw
c2hwYWNrNC5oIg0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s0LmgiDQoj
bGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrNC5oIg0KI2xpbmUgMTY4MDMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHBzaHBhY2syLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHB1c2gsMikN
Cg0KDQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMi5oIg0KDQoNCiNsaW5lIDMz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2syLmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxwc2hwYWNrMi5oIg0KI2xpbmUgMTY4MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTY4MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp0eXBlZGVm
IHN0cnVjdCBfSU1BR0VfRE9TX0hFQURFUiB7ICAgICAgDQogICAgV09SRCAgIGVfbWFnaWM7ICAg
ICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfY2JscDsgICAgICAgICAgICAgICAgICAg
ICAgDQogICAgV09SRCAgIGVfY3A7ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAg
IGVfY3JsYzsgICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfY3BhcmhkcjsgICAg
ICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfbWluYWxsb2M7ICAgICAgICAgICAgICAgICAg
DQogICAgV09SRCAgIGVfbWF4YWxsb2M7ICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVf
c3M7ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfc3A7ICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgV09SRCAgIGVfY3N1bTsgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgV09SRCAgIGVfaXA7ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfY3M7
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfbGZhcmxjOyAgICAgICAgICAg
ICAgICAgICAgDQogICAgV09SRCAgIGVfb3ZubzsgICAgICAgICAgICAgICAgICAgICAgDQogICAg
V09SRCAgIGVfcmVzWzRdOyAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfb2VtaWQ7
ICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGVfb2VtaW5mbzsgICAgICAgICAgICAg
ICAgICAgDQogICAgV09SRCAgIGVfcmVzMlsxMF07ICAgICAgICAgICAgICAgICAgDQogICAgTE9O
RyAgIGVfbGZhbmV3OyAgICAgICAgICAgICAgICAgICAgDQogIH0gSU1BR0VfRE9TX0hFQURFUiwg
KlBJTUFHRV9ET1NfSEVBREVSOw0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfT1MyX0hFQURFUiB7
ICAgICAgDQogICAgV09SRCAgIG5lX21hZ2ljOyAgICAgICAgICAgICAgICAgICAgDQogICAgQ0hB
UiAgIG5lX3ZlcjsgICAgICAgICAgICAgICAgICAgICAgDQogICAgQ0hBUiAgIG5lX3JldjsgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2VudHRhYjsgICAgICAgICAgICAgICAg
ICAgDQogICAgV09SRCAgIG5lX2NiZW50dGFiOyAgICAgICAgICAgICAgICAgDQogICAgTE9ORyAg
IG5lX2NyYzsgICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2ZsYWdzOyAgICAg
ICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2F1dG9kYXRhOyAgICAgICAgICAgICAgICAg
DQogICAgV09SRCAgIG5lX2hlYXA7ICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5l
X3N0YWNrOyAgICAgICAgICAgICAgICAgICAgDQogICAgTE9ORyAgIG5lX2NzaXA7ICAgICAgICAg
ICAgICAgICAgICAgDQogICAgTE9ORyAgIG5lX3Nzc3A7ICAgICAgICAgICAgICAgICAgICAgDQog
ICAgV09SRCAgIG5lX2NzZWc7ICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2Nt
b2Q7ICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2NibnJlc3RhYjsgICAgICAg
ICAgICAgICAgDQogICAgV09SRCAgIG5lX3NlZ3RhYjsgICAgICAgICAgICAgICAgICAgDQogICAg
V09SRCAgIG5lX3JzcmN0YWI7ICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX3Jlc3Rh
YjsgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX21vZHRhYjsgICAgICAgICAgICAg
ICAgICAgDQogICAgV09SRCAgIG5lX2ltcHRhYjsgICAgICAgICAgICAgICAgICAgDQogICAgTE9O
RyAgIG5lX25yZXN0YWI7ICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2Ntb3ZlbnQ7
ICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2FsaWduOyAgICAgICAgICAgICAgICAg
ICAgDQogICAgV09SRCAgIG5lX2NyZXM7ICAgICAgICAgICAgICAgICAgICAgDQogICAgQllURSAg
IG5lX2V4ZXR5cDsgICAgICAgICAgICAgICAgICAgDQogICAgQllURSAgIG5lX2ZsYWdzb3RoZXJz
OyAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX3ByZXR0aHVua3M7ICAgICAgICAgICAgICAg
DQogICAgV09SRCAgIG5lX3BzZWdyZWZieXRlczsgICAgICAgICAgICAgDQogICAgV09SRCAgIG5l
X3N3YXBhcmVhOyAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIG5lX2V4cHZlcjsgICAgICAg
ICAgICAgICAgICAgDQogIH0gSU1BR0VfT1MyX0hFQURFUiwgKlBJTUFHRV9PUzJfSEVBREVSOw0K
DQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfVlhEX0hFQURFUiB7ICAgICAgDQogICAgV09SRCAgIGUz
Ml9tYWdpYzsgICAgICAgICAgICAgICAgICAgDQogICAgQllURSAgIGUzMl9ib3JkZXI7ICAgICAg
ICAgICAgICAgICAgDQogICAgQllURSAgIGUzMl93b3JkZXI7ICAgICAgICAgICAgICAgICAgDQog
ICAgRFdPUkQgIGUzMl9sZXZlbDsgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGUzMl9j
cHU7ICAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgIGUzMl9vczsgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgRFdPUkQgIGUzMl92ZXI7ICAgICAgICAgICAgICAgICAgICAgDQogICAg
RFdPUkQgIGUzMl9tZmxhZ3M7ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9tcGFn
ZXM7ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9zdGFydG9iajsgICAgICAgICAg
ICAgICAgDQogICAgRFdPUkQgIGUzMl9laXA7ICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdP
UkQgIGUzMl9zdGFja29iajsgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9lc3A7ICAg
ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9wYWdlc2l6ZTsgICAgICAgICAgICAg
ICAgDQogICAgRFdPUkQgIGUzMl9sYXN0cGFnZXNpemU7ICAgICAgICAgICAgDQogICAgRFdPUkQg
IGUzMl9maXh1cHNpemU7ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9maXh1cHN1bTsg
ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9sZHJzaXplOyAgICAgICAgICAgICAgICAg
DQogICAgRFdPUkQgIGUzMl9sZHJzdW07ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUz
Ml9vYmp0YWI7ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9vYmpjbnQ7ICAgICAg
ICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9vYmptYXA7ICAgICAgICAgICAgICAgICAgDQog
ICAgRFdPUkQgIGUzMl9pdGVybWFwOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9y
c3JjdGFiOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9yc3JjY250OyAgICAgICAg
ICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9yZXN0YWI7ICAgICAgICAgICAgICAgICAgDQogICAg
RFdPUkQgIGUzMl9lbnR0YWI7ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9kaXJ0
YWI7ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9kaXJjbnQ7ICAgICAgICAgICAg
ICAgICAgDQogICAgRFdPUkQgIGUzMl9mcGFnZXRhYjsgICAgICAgICAgICAgICAgDQogICAgRFdP
UkQgIGUzMl9mcmVjdGFiOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9pbXBtb2Q7
ICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9pbXBtb2RjbnQ7ICAgICAgICAgICAg
ICAgDQogICAgRFdPUkQgIGUzMl9pbXBwcm9jOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQg
IGUzMl9wYWdlc3VtOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9kYXRhcGFnZTsg
ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9wcmVsb2FkOyAgICAgICAgICAgICAgICAg
DQogICAgRFdPUkQgIGUzMl9ucmVzdGFiOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUz
Ml9jYm5yZXN0YWI7ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9ucmVzc3VtOyAgICAg
ICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9hdXRvZGF0YTsgICAgICAgICAgICAgICAgDQog
ICAgRFdPUkQgIGUzMl9kZWJ1Z2luZm87ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9k
ZWJ1Z2xlbjsgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9pbnN0cHJlbG9hZDsgICAg
ICAgICAgICAgDQogICAgRFdPUkQgIGUzMl9pbnN0ZGVtYW5kOyAgICAgICAgICAgICAgDQogICAg
RFdPUkQgIGUzMl9oZWFwc2l6ZTsgICAgICAgICAgICAgICAgDQogICAgQllURSAgIGUzMl9yZXMz
WzEyXTsgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgIGUzMl93aW5yZXNvZmY7DQogICAgRFdP
UkQgIGUzMl93aW5yZXNsZW47DQogICAgV09SRCAgIGUzMl9kZXZpZDsgICAgICAgICAgICAgICAg
ICAgDQogICAgV09SRCAgIGUzMl9kZGt2ZXI7ICAgICAgICAgICAgICAgICAgDQogIH0gSU1BR0Vf
VlhEX0hFQURFUiwgKlBJTUFHRV9WWERfSEVBREVSOw0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccG9wcGFjay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFj
ayhwb3ApDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KDQoNCiNs
aW5lIDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDM3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDE2OTMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNs
aW5lIDE2OTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfSU1BR0VfRklMRV9IRUFERVIgew0KICAgIFdPUkQgICAgTWFjaGluZTsNCiAgICBXT1JEICAg
IE51bWJlck9mU2VjdGlvbnM7DQogICAgRFdPUkQgICBUaW1lRGF0ZVN0YW1wOw0KICAgIERXT1JE
ICAgUG9pbnRlclRvU3ltYm9sVGFibGU7DQogICAgRFdPUkQgICBOdW1iZXJPZlN5bWJvbHM7DQog
ICAgV09SRCAgICBTaXplT2ZPcHRpb25hbEhlYWRlcjsNCiAgICBXT1JEICAgIENoYXJhY3Rlcmlz
dGljczsNCn0gSU1BR0VfRklMRV9IRUFERVIsICpQSU1BR0VfRklMRV9IRUFERVI7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBfSU1BR0VfREFUQV9ESVJFQ1RPUlkgew0KICAgIERXT1JEICAgVmlydHVhbEFkZHJl
c3M7DQogICAgRFdPUkQgICBTaXplOw0KfSBJTUFHRV9EQVRBX0RJUkVDVE9SWSwgKlBJTUFHRV9E
QVRBX0RJUkVDVE9SWTsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX09QVElP
TkFMX0hFQURFUiB7DQogICAgDQogICAgDQogICAgDQoNCiAgICBXT1JEICAgIE1hZ2ljOw0KICAg
IEJZVEUgICAgTWFqb3JMaW5rZXJWZXJzaW9uOw0KICAgIEJZVEUgICAgTWlub3JMaW5rZXJWZXJz
aW9uOw0KICAgIERXT1JEICAgU2l6ZU9mQ29kZTsNCiAgICBEV09SRCAgIFNpemVPZkluaXRpYWxp
emVkRGF0YTsNCiAgICBEV09SRCAgIFNpemVPZlVuaW5pdGlhbGl6ZWREYXRhOw0KICAgIERXT1JE
ICAgQWRkcmVzc09mRW50cnlQb2ludDsNCiAgICBEV09SRCAgIEJhc2VPZkNvZGU7DQogICAgRFdP
UkQgICBCYXNlT2ZEYXRhOw0KDQogICAgDQogICAgDQogICAgDQoNCiAgICBEV09SRCAgIEltYWdl
QmFzZTsNCiAgICBEV09SRCAgIFNlY3Rpb25BbGlnbm1lbnQ7DQogICAgRFdPUkQgICBGaWxlQWxp
Z25tZW50Ow0KICAgIFdPUkQgICAgTWFqb3JPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uOw0KICAgIFdP
UkQgICAgTWlub3JPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uOw0KICAgIFdPUkQgICAgTWFqb3JJbWFn
ZVZlcnNpb247DQogICAgV09SRCAgICBNaW5vckltYWdlVmVyc2lvbjsNCiAgICBXT1JEICAgIE1h
am9yU3Vic3lzdGVtVmVyc2lvbjsNCiAgICBXT1JEICAgIE1pbm9yU3Vic3lzdGVtVmVyc2lvbjsN
CiAgICBEV09SRCAgIFdpbjMyVmVyc2lvblZhbHVlOw0KICAgIERXT1JEICAgU2l6ZU9mSW1hZ2U7
DQogICAgRFdPUkQgICBTaXplT2ZIZWFkZXJzOw0KICAgIERXT1JEICAgQ2hlY2tTdW07DQogICAg
V09SRCAgICBTdWJzeXN0ZW07DQogICAgV09SRCAgICBEbGxDaGFyYWN0ZXJpc3RpY3M7DQogICAg
RFdPUkQgICBTaXplT2ZTdGFja1Jlc2VydmU7DQogICAgRFdPUkQgICBTaXplT2ZTdGFja0NvbW1p
dDsNCiAgICBEV09SRCAgIFNpemVPZkhlYXBSZXNlcnZlOw0KICAgIERXT1JEICAgU2l6ZU9mSGVh
cENvbW1pdDsNCiAgICBEV09SRCAgIExvYWRlckZsYWdzOw0KICAgIERXT1JEICAgTnVtYmVyT2ZS
dmFBbmRTaXplczsNCiAgICBJTUFHRV9EQVRBX0RJUkVDVE9SWSBEYXRhRGlyZWN0b3J5WzE2XTsN
Cn0gSU1BR0VfT1BUSU9OQUxfSEVBREVSMzIsICpQSU1BR0VfT1BUSU9OQUxfSEVBREVSMzI7DQoN
CnR5cGVkZWYgc3RydWN0IF9JTUFHRV9ST01fT1BUSU9OQUxfSEVBREVSIHsNCiAgICBXT1JEICAg
TWFnaWM7DQogICAgQllURSAgIE1ham9yTGlua2VyVmVyc2lvbjsNCiAgICBCWVRFICAgTWlub3JM
aW5rZXJWZXJzaW9uOw0KICAgIERXT1JEICBTaXplT2ZDb2RlOw0KICAgIERXT1JEICBTaXplT2ZJ
bml0aWFsaXplZERhdGE7DQogICAgRFdPUkQgIFNpemVPZlVuaW5pdGlhbGl6ZWREYXRhOw0KICAg
IERXT1JEICBBZGRyZXNzT2ZFbnRyeVBvaW50Ow0KICAgIERXT1JEICBCYXNlT2ZDb2RlOw0KICAg
IERXT1JEICBCYXNlT2ZEYXRhOw0KICAgIERXT1JEICBCYXNlT2ZCc3M7DQogICAgRFdPUkQgIEdw
ck1hc2s7DQogICAgRFdPUkQgIENwck1hc2tbNF07DQogICAgRFdPUkQgIEdwVmFsdWU7DQp9IElN
QUdFX1JPTV9PUFRJT05BTF9IRUFERVIsICpQSU1BR0VfUk9NX09QVElPTkFMX0hFQURFUjsNCg0K
dHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX09QVElPTkFMX0hFQURFUjY0IHsNCiAgICBXT1JEICAgICAg
ICBNYWdpYzsNCiAgICBCWVRFICAgICAgICBNYWpvckxpbmtlclZlcnNpb247DQogICAgQllURSAg
ICAgICAgTWlub3JMaW5rZXJWZXJzaW9uOw0KICAgIERXT1JEICAgICAgIFNpemVPZkNvZGU7DQog
ICAgRFdPUkQgICAgICAgU2l6ZU9mSW5pdGlhbGl6ZWREYXRhOw0KICAgIERXT1JEICAgICAgIFNp
emVPZlVuaW5pdGlhbGl6ZWREYXRhOw0KICAgIERXT1JEICAgICAgIEFkZHJlc3NPZkVudHJ5UG9p
bnQ7DQogICAgRFdPUkQgICAgICAgQmFzZU9mQ29kZTsNCiAgICBVTE9OR0xPTkcgICBJbWFnZUJh
c2U7DQogICAgRFdPUkQgICAgICAgU2VjdGlvbkFsaWdubWVudDsNCiAgICBEV09SRCAgICAgICBG
aWxlQWxpZ25tZW50Ow0KICAgIFdPUkQgICAgICAgIE1ham9yT3BlcmF0aW5nU3lzdGVtVmVyc2lv
bjsNCiAgICBXT1JEICAgICAgICBNaW5vck9wZXJhdGluZ1N5c3RlbVZlcnNpb247DQogICAgV09S
RCAgICAgICAgTWFqb3JJbWFnZVZlcnNpb247DQogICAgV09SRCAgICAgICAgTWlub3JJbWFnZVZl
cnNpb247DQogICAgV09SRCAgICAgICAgTWFqb3JTdWJzeXN0ZW1WZXJzaW9uOw0KICAgIFdPUkQg
ICAgICAgIE1pbm9yU3Vic3lzdGVtVmVyc2lvbjsNCiAgICBEV09SRCAgICAgICBXaW4zMlZlcnNp
b25WYWx1ZTsNCiAgICBEV09SRCAgICAgICBTaXplT2ZJbWFnZTsNCiAgICBEV09SRCAgICAgICBT
aXplT2ZIZWFkZXJzOw0KICAgIERXT1JEICAgICAgIENoZWNrU3VtOw0KICAgIFdPUkQgICAgICAg
IFN1YnN5c3RlbTsNCiAgICBXT1JEICAgICAgICBEbGxDaGFyYWN0ZXJpc3RpY3M7DQogICAgVUxP
TkdMT05HICAgU2l6ZU9mU3RhY2tSZXNlcnZlOw0KICAgIFVMT05HTE9ORyAgIFNpemVPZlN0YWNr
Q29tbWl0Ow0KICAgIFVMT05HTE9ORyAgIFNpemVPZkhlYXBSZXNlcnZlOw0KICAgIFVMT05HTE9O
RyAgIFNpemVPZkhlYXBDb21taXQ7DQogICAgRFdPUkQgICAgICAgTG9hZGVyRmxhZ3M7DQogICAg
RFdPUkQgICAgICAgTnVtYmVyT2ZSdmFBbmRTaXplczsNCiAgICBJTUFHRV9EQVRBX0RJUkVDVE9S
WSBEYXRhRGlyZWN0b3J5WzE2XTsNCn0gSU1BR0VfT1BUSU9OQUxfSEVBREVSNjQsICpQSU1BR0Vf
T1BUSU9OQUxfSEVBREVSNjQ7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIElNQUdFX09QVElPTkFMX0hF
QURFUjY0ICAgICAgICAgICAgIElNQUdFX09QVElPTkFMX0hFQURFUjsNCnR5cGVkZWYgUElNQUdF
X09QVElPTkFMX0hFQURFUjY0ICAgICAgICAgICAgUElNQUdFX09QVElPTkFMX0hFQURFUjsNCg0K
DQoNCg0KDQojbGluZSAxNzEyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCnR5cGVkZWYgc3Ry
dWN0IF9JTUFHRV9OVF9IRUFERVJTNjQgew0KICAgIERXT1JEIFNpZ25hdHVyZTsNCiAgICBJTUFH
RV9GSUxFX0hFQURFUiBGaWxlSGVhZGVyOw0KICAgIElNQUdFX09QVElPTkFMX0hFQURFUjY0IE9w
dGlvbmFsSGVhZGVyOw0KfSBJTUFHRV9OVF9IRUFERVJTNjQsICpQSU1BR0VfTlRfSEVBREVSUzY0
Ow0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfTlRfSEVBREVSUyB7DQogICAgRFdPUkQgU2lnbmF0
dXJlOw0KICAgIElNQUdFX0ZJTEVfSEVBREVSIEZpbGVIZWFkZXI7DQogICAgSU1BR0VfT1BUSU9O
QUxfSEVBREVSMzIgT3B0aW9uYWxIZWFkZXI7DQp9IElNQUdFX05UX0hFQURFUlMzMiwgKlBJTUFH
RV9OVF9IRUFERVJTMzI7DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9ST01fSEVBREVSUyB7DQog
ICAgSU1BR0VfRklMRV9IRUFERVIgRmlsZUhlYWRlcjsNCiAgICBJTUFHRV9ST01fT1BUSU9OQUxf
SEVBREVSIE9wdGlvbmFsSGVhZGVyOw0KfSBJTUFHRV9ST01fSEVBREVSUywgKlBJTUFHRV9ST01f
SEVBREVSUzsNCg0KDQp0eXBlZGVmIElNQUdFX05UX0hFQURFUlM2NCAgICAgICAgICAgICAgICAg
IElNQUdFX05UX0hFQURFUlM7DQp0eXBlZGVmIFBJTUFHRV9OVF9IRUFERVJTNjQgICAgICAgICAg
ICAgICAgIFBJTUFHRV9OVF9IRUFERVJTOw0KDQoNCg0KI2xpbmUgMTcxNDYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IEFOT05fT0JK
RUNUX0hFQURFUiB7DQogICAgV09SRCAgICBTaWcxOyAgICAgICAgICAgIA0KICAgIFdPUkQgICAg
U2lnMjsgICAgICAgICAgICANCiAgICBXT1JEICAgIFZlcnNpb247ICAgICAgICAgDQogICAgV09S
RCAgICBNYWNoaW5lOw0KICAgIERXT1JEICAgVGltZURhdGVTdGFtcDsNCiAgICBDTFNJRCAgIENs
YXNzSUQ7ICAgICAgICAgDQogICAgRFdPUkQgICBTaXplT2ZEYXRhOyAgICAgIA0KfSBBTk9OX09C
SkVDVF9IRUFERVI7DQoNCnR5cGVkZWYgc3RydWN0IEFOT05fT0JKRUNUX0hFQURFUl9WMiB7DQog
ICAgV09SRCAgICBTaWcxOyAgICAgICAgICAgIA0KICAgIFdPUkQgICAgU2lnMjsgICAgICAgICAg
ICANCiAgICBXT1JEICAgIFZlcnNpb247ICAgICAgICAgDQogICAgV09SRCAgICBNYWNoaW5lOw0K
ICAgIERXT1JEICAgVGltZURhdGVTdGFtcDsNCiAgICBDTFNJRCAgIENsYXNzSUQ7ICAgICAgICAg
DQogICAgRFdPUkQgICBTaXplT2ZEYXRhOyAgICAgIA0KICAgIERXT1JEICAgRmxhZ3M7ICAgICAg
ICAgICANCiAgICBEV09SRCAgIE1ldGFEYXRhU2l6ZTsgICAgDQogICAgRFdPUkQgICBNZXRhRGF0
YU9mZnNldDsgIA0KfSBBTk9OX09CSkVDVF9IRUFERVJfVjI7DQoNCnR5cGVkZWYgc3RydWN0IEFO
T05fT0JKRUNUX0hFQURFUl9CSUdPQkogew0KICAgDQogICAgV09SRCAgICBTaWcxOyAgICAgICAg
ICAgIA0KICAgIFdPUkQgICAgU2lnMjsgICAgICAgICAgICANCiAgICBXT1JEICAgIFZlcnNpb247
ICAgICAgICAgDQogICAgV09SRCAgICBNYWNoaW5lOyAgICAgICAgIA0KICAgIERXT1JEICAgVGlt
ZURhdGVTdGFtcDsNCiAgICBDTFNJRCAgIENsYXNzSUQ7ICAgICAgICAgDQogICAgRFdPUkQgICBT
aXplT2ZEYXRhOyAgICAgIA0KICAgIERXT1JEICAgRmxhZ3M7ICAgICAgICAgICANCiAgICBEV09S
RCAgIE1ldGFEYXRhU2l6ZTsgICAgDQogICAgRFdPUkQgICBNZXRhRGF0YU9mZnNldDsgIA0KDQog
ICAgDQogICAgRFdPUkQgICBOdW1iZXJPZlNlY3Rpb25zOyANCiAgICBEV09SRCAgIFBvaW50ZXJU
b1N5bWJvbFRhYmxlOw0KICAgIERXT1JEICAgTnVtYmVyT2ZTeW1ib2xzOw0KfSBBTk9OX09CSkVD
VF9IRUFERVJfQklHT0JKOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfU0VD
VElPTl9IRUFERVIgew0KICAgIEJZVEUgICAgTmFtZVs4XTsNCiAgICB1bmlvbiB7DQogICAgICAg
ICAgICBEV09SRCAgIFBoeXNpY2FsQWRkcmVzczsNCiAgICAgICAgICAgIERXT1JEICAgVmlydHVh
bFNpemU7DQogICAgfSBNaXNjOw0KICAgIERXT1JEICAgVmlydHVhbEFkZHJlc3M7DQogICAgRFdP
UkQgICBTaXplT2ZSYXdEYXRhOw0KICAgIERXT1JEICAgUG9pbnRlclRvUmF3RGF0YTsNCiAgICBE
V09SRCAgIFBvaW50ZXJUb1JlbG9jYXRpb25zOw0KICAgIERXT1JEICAgUG9pbnRlclRvTGluZW51
bWJlcnM7DQogICAgV09SRCAgICBOdW1iZXJPZlJlbG9jYXRpb25zOw0KICAgIFdPUkQgICAgTnVt
YmVyT2ZMaW5lbnVtYmVyczsNCiAgICBEV09SRCAgIENoYXJhY3RlcmlzdGljczsNCn0gSU1BR0Vf
U0VDVElPTl9IRUFERVIsICpQSU1BR0VfU0VDVElPTl9IRUFERVI7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMp
DQoNCiNwcmFnbWEgcGFjayhwdXNoLDIpDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cHNocGFjazIuaCINCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMi5oIg0K
I2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIuaCINCiNsaW5lIDE3MzQzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCiNsaW5lIDE3MzQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfU1lNQk9MIHsNCiAgICB1bmlvbiB7DQogICAg
ICAgIEJZVEUgICAgU2hvcnROYW1lWzhdOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAg
RFdPUkQgICBTaG9ydDsgICAgIA0KICAgICAgICAgICAgRFdPUkQgICBMb25nOyAgICAgIA0KICAg
ICAgICB9IE5hbWU7DQogICAgICAgIERXT1JEICAgTG9uZ05hbWVbMl07ICAgIA0KICAgIH0gTjsN
CiAgICBEV09SRCAgIFZhbHVlOw0KICAgIFNIT1JUICAgU2VjdGlvbk51bWJlcjsNCiAgICBXT1JE
ICAgIFR5cGU7DQogICAgQllURSAgICBTdG9yYWdlQ2xhc3M7DQogICAgQllURSAgICBOdW1iZXJP
ZkF1eFN5bWJvbHM7DQp9IElNQUdFX1NZTUJPTDsNCnR5cGVkZWYgSU1BR0VfU1lNQk9MIF9fdW5h
bGlnbmVkICpQSU1BR0VfU1lNQk9MOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX1NZTUJP
TF9FWCB7DQogICAgdW5pb24gew0KICAgICAgICBCWVRFICAgICBTaG9ydE5hbWVbOF07DQogICAg
ICAgIHN0cnVjdCB7DQogICAgICAgICAgICBEV09SRCAgIFNob3J0OyAgICAgDQogICAgICAgICAg
ICBEV09SRCAgIExvbmc7ICAgICAgDQogICAgICAgIH0gTmFtZTsNCiAgICAgICAgRFdPUkQgICBM
b25nTmFtZVsyXTsgICAgDQogICAgfSBOOw0KICAgIERXT1JEICAgVmFsdWU7DQogICAgTE9ORyAg
ICBTZWN0aW9uTnVtYmVyOw0KICAgIFdPUkQgICAgVHlwZTsNCiAgICBCWVRFICAgIFN0b3JhZ2VD
bGFzczsNCiAgICBCWVRFICAgIE51bWJlck9mQXV4U3ltYm9sczsNCn0gSU1BR0VfU1lNQk9MX0VY
Ow0KdHlwZWRlZiBJTUFHRV9TWU1CT0xfRVggX191bmFsaWduZWQgKlBJTUFHRV9TWU1CT0xfRVg7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNzQ4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50Lmgi
DQoNCg0KDQoNCiNsaW5lIDE3NDg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoj
bGluZSAxNzQ5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCiNsaW5lIDE3NDk3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCiNsaW5lIDE3NTAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KDQojbGluZSAxNzUwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiNsaW5lIDEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJh
Z21hIHBhY2socHVzaCwyKQ0KDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2sy
LmgiDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIuaCINCiNsaW5lIDM0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2syLmgiDQojbGluZSAxNzUwNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm50LmgiDQoNCnR5cGVkZWYgc3RydWN0IElNQUdFX0FVWF9TWU1CT0xfVE9LRU5fREVGIHsN
CiAgICBCWVRFICBiQXV4VHlwZTsgICAgICAgICAgICAgICAgICANCiAgICBCWVRFICBiUmVzZXJ2
ZWQ7ICAgICAgICAgICAgICAgICANCiAgICBEV09SRCBTeW1ib2xUYWJsZUluZGV4Ow0KICAgIEJZ
VEUgIHJnYlJlc2VydmVkWzEyXTsgICAgICAgICAgIA0KfSBJTUFHRV9BVVhfU1lNQk9MX1RPS0VO
X0RFRjsNCg0KdHlwZWRlZiBJTUFHRV9BVVhfU1lNQk9MX1RPS0VOX0RFRiBfX3VuYWxpZ25lZCAq
UElNQUdFX0FVWF9TWU1CT0xfVE9LRU5fREVGOw0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHBvcHBhY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socG9w
KQ0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQojbGluZSAz
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxwb3BwYWNrLmgiDQojbGluZSAxNzUxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoN
Cg0KdHlwZWRlZiB1bmlvbiBfSU1BR0VfQVVYX1NZTUJPTCB7DQogICAgc3RydWN0IHsNCiAgICAg
ICAgRFdPUkQgICAgVGFnSW5kZXg7ICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICB1bmlv
biB7DQogICAgICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgICAgIFdPUkQgICAgTGluZW51
bWJlcjsgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgV09SRCAgICBTaXplOyAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgIH0gTG5TejsNCiAgICAgICAgICAgRFdPUkQgICAgVG90
YWxTaXplOw0KICAgICAgICB9IE1pc2M7DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgIHN0
cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIERXT1JE
ICAgIFBvaW50ZXJUb0xpbmVudW1iZXI7DQogICAgICAgICAgICAgICAgRFdPUkQgICAgUG9pbnRl
clRvTmV4dEZ1bmN0aW9uOw0KICAgICAgICAgICAgfSBGdW5jdGlvbjsNCiAgICAgICAgICAgIHN0
cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIFdPUkQg
ICAgIERpbWVuc2lvbls0XTsNCiAgICAgICAgICAgIH0gQXJyYXk7DQogICAgICAgIH0gRmNuQXJ5
Ow0KICAgICAgICBXT1JEICAgIFR2SW5kZXg7ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAg
fSBTeW07DQogICAgc3RydWN0IHsNCiAgICAgICAgQllURSAgICBOYW1lWzE4XTsNCiAgICB9IEZp
bGU7DQogICAgc3RydWN0IHsNCiAgICAgICAgRFdPUkQgICBMZW5ndGg7ICAgICAgICAgICAgICAg
ICAgICAgICAgIA0KICAgICAgICBXT1JEICAgIE51bWJlck9mUmVsb2NhdGlvbnM7ICAgICAgICAg
ICAgDQogICAgICAgIFdPUkQgICAgTnVtYmVyT2ZMaW5lbnVtYmVyczsgICAgICAgICAgICANCiAg
ICAgICAgRFdPUkQgICBDaGVja1N1bTsgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICBT
SE9SVCAgIE51bWJlcjsgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIEJZVEUgICAg
U2VsZWN0aW9uOyAgICAgICAgICAgICAgICAgICAgICANCglCWVRFICAgIGJSZXNlcnZlZDsNCglT
SE9SVCAgIEhpZ2hOdW1iZXI7ICAgICAgICAgICAgICAgICAgICAgDQogICAgfSBTZWN0aW9uOw0K
ICAgIElNQUdFX0FVWF9TWU1CT0xfVE9LRU5fREVGIFRva2VuRGVmOw0KICAgIHN0cnVjdCB7DQog
ICAgICAgIERXT1JEIGNyYzsNCiAgICAgICAgQllURSAgcmdiUmVzZXJ2ZWRbMTRdOw0KICAgIH0g
Q1JDOw0KfSBJTUFHRV9BVVhfU1lNQk9MOw0KdHlwZWRlZiBJTUFHRV9BVVhfU1lNQk9MIF9fdW5h
bGlnbmVkICpQSU1BR0VfQVVYX1NZTUJPTDsNCg0KdHlwZWRlZiB1bmlvbiBfSU1BR0VfQVVYX1NZ
TUJPTF9FWCB7DQogICAgc3RydWN0IHsNCiAgICAgICAgRFdPUkQgICBXZWFrRGVmYXVsdFN5bUlu
ZGV4OyAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIERXT1JEICAgV2Vha1NlYXJjaFR5
cGU7DQogICAgICAgIEJZVEUgICAgcmdiUmVzZXJ2ZWRbMTJdOw0KICAgIH0gU3ltOw0KICAgIHN0
cnVjdCB7DQogICAgICAgIEJZVEUgICAgTmFtZVtzaXplb2YoSU1BR0VfU1lNQk9MX0VYKV07DQog
ICAgfSBGaWxlOw0KICAgIHN0cnVjdCB7DQogICAgICAgIERXT1JEICAgTGVuZ3RoOyAgICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgV09SRCAgICBOdW1iZXJPZlJlbG9jYXRpb25zOyAg
ICAgICAgICAgIA0KICAgICAgICBXT1JEICAgIE51bWJlck9mTGluZW51bWJlcnM7ICAgICAgICAg
ICAgDQogICAgICAgIERXT1JEICAgQ2hlY2tTdW07ICAgICAgICAgICAgICAgICAgICAgICANCiAg
ICAgICAgU0hPUlQgICBOdW1iZXI7ICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICBC
WVRFICAgIFNlbGVjdGlvbjsgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIEJZVEUgICAg
YlJlc2VydmVkOw0KICAgICAgICBTSE9SVCAgIEhpZ2hOdW1iZXI7ICAgICAgICAgICAgICAgICAg
ICAgDQogICAgICAgIEJZVEUgICAgcmdiUmVzZXJ2ZWRbMl07DQogICAgfSBTZWN0aW9uOw0KICAg
IHN0cnVjdHsNCiAgICAgICAgSU1BR0VfQVVYX1NZTUJPTF9UT0tFTl9ERUYgVG9rZW5EZWY7DQog
ICAgICAgIEJZVEUgIHJnYlJlc2VydmVkWzJdOw0KICAgIH0gOw0KICAgIHN0cnVjdCB7DQogICAg
ICAgIERXT1JEIGNyYzsNCiAgICAgICAgQllURSAgcmdiUmVzZXJ2ZWRbMTZdOw0KICAgIH0gQ1JD
Ow0KfSBJTUFHRV9BVVhfU1lNQk9MX0VYOw0KdHlwZWRlZiBJTUFHRV9BVVhfU1lNQk9MX0VYIF9f
dW5hbGlnbmVkICpQSU1BR0VfQVVYX1NZTUJPTF9FWDsNCg0KdHlwZWRlZiBlbnVtIElNQUdFX0FV
WF9TWU1CT0xfVFlQRSB7DQogICAgSU1BR0VfQVVYX1NZTUJPTF9UWVBFX1RPS0VOX0RFRiA9IDEs
DQp9IElNQUdFX0FVWF9TWU1CT0xfVFlQRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfUkVMT0NBVElPTiB7DQogICAg
dW5pb24gew0KICAgICAgICBEV09SRCAgIFZpcnR1YWxBZGRyZXNzOw0KICAgICAgICBEV09SRCAg
IFJlbG9jQ291bnQ7ICAgICAgICAgICAgIA0KICAgIH0gOw0KICAgIERXT1JEICAgU3ltYm9sVGFi
bGVJbmRleDsNCiAgICBXT1JEICAgIFR5cGU7DQp9IElNQUdFX1JFTE9DQVRJT047DQp0eXBlZGVm
IElNQUdFX1JFTE9DQVRJT04gX191bmFsaWduZWQgKlBJTUFHRV9SRUxPQ0FUSU9OOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9MSU5FTlVNQkVS
IHsNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEICAgU3ltYm9sVGFibGVJbmRleDsgICAgICAg
ICAgICAgICANCiAgICAgICAgRFdPUkQgICBWaXJ0dWFsQWRkcmVzczsgICAgICAgICAgICAgICAg
IA0KICAgIH0gVHlwZTsNCiAgICBXT1JEICAgIExpbmVudW1iZXI7ICAgICAgICAgICAgICAgICAg
ICAgICAgIA0KfSBJTUFHRV9MSU5FTlVNQkVSOw0KdHlwZWRlZiBJTUFHRV9MSU5FTlVNQkVSIF9f
dW5hbGlnbmVkICpQSU1BR0VfTElORU5VTUJFUjsNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHBvcHBhY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2so
cG9wKQ0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQojbGlu
ZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAzNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwb3BwYWNrLmgiDQojbGluZSAxODA0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojbGlu
ZSAxODA0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfSU1BR0VfQkFTRV9SRUxPQ0FUSU9OIHsNCiAgICBEV09SRCAgIFZpcnR1YWxBZGRyZXNzOw0K
ICAgIERXT1JEICAgU2l6ZU9mQmxvY2s7DQoNCn0gSU1BR0VfQkFTRV9SRUxPQ0FUSU9OOw0KdHlw
ZWRlZiBJTUFHRV9CQVNFX1JFTE9DQVRJT04gX191bmFsaWduZWQgKiBQSU1BR0VfQkFTRV9SRUxP
Q0FUSU9OOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1B
R0VfQVJDSElWRV9NRU1CRVJfSEVBREVSIHsNCiAgICBCWVRFICAgICBOYW1lWzE2XTsgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KICAgIEJZVEUgICAgIERhdGVbMTJdOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgQllURSAgICAgVXNlcklEWzZdOyAgICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICBCWVRFICAgICBHcm91cElEWzZdOyAgICAgICAgICAgICAgICAgICAgICAgIA0K
ICAgIEJZVEUgICAgIE1vZGVbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgQllU
RSAgICAgU2l6ZVsxMF07ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBCWVRFICAgICBF
bmRIZWFkZXJbMl07ICAgICAgICAgICAgICAgICAgICAgIA0KfSBJTUFHRV9BUkNISVZFX01FTUJF
Ul9IRUFERVIsICpQSU1BR0VfQVJDSElWRV9NRU1CRVJfSEVBREVSOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0VYUE9SVF9ESVJFQ1RPUlkgew0KICAgIERX
T1JEICAgQ2hhcmFjdGVyaXN0aWNzOw0KICAgIERXT1JEICAgVGltZURhdGVTdGFtcDsNCiAgICBX
T1JEICAgIE1ham9yVmVyc2lvbjsNCiAgICBXT1JEICAgIE1pbm9yVmVyc2lvbjsNCiAgICBEV09S
RCAgIE5hbWU7DQogICAgRFdPUkQgICBCYXNlOw0KICAgIERXT1JEICAgTnVtYmVyT2ZGdW5jdGlv
bnM7DQogICAgRFdPUkQgICBOdW1iZXJPZk5hbWVzOw0KICAgIERXT1JEICAgQWRkcmVzc09mRnVu
Y3Rpb25zOyAgICAgDQogICAgRFdPUkQgICBBZGRyZXNzT2ZOYW1lczsgICAgICAgICANCiAgICBE
V09SRCAgIEFkZHJlc3NPZk5hbWVPcmRpbmFsczsgIA0KfSBJTUFHRV9FWFBPUlRfRElSRUNUT1JZ
LCAqUElNQUdFX0VYUE9SVF9ESVJFQ1RPUlk7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBf
SU1BR0VfSU1QT1JUX0JZX05BTUUgew0KICAgIFdPUkQgICAgSGludDsNCiAgICBDSEFSICAgTmFt
ZVsxXTsNCn0gSU1BR0VfSU1QT1JUX0JZX05BTUUsICpQSU1BR0VfSU1QT1JUX0JZX05BTUU7DQoN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAz
KQ0KDQojcHJhZ21hIHBhY2socHVzaCw4KQ0KDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHBzaHBhY2s4LmgiDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCIN
CiNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4LmgiDQojbGluZSAxODE0NyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX1RIVU5LX0RBVEE2
NCB7DQogICAgdW5pb24gew0KICAgICAgICBVTE9OR0xPTkcgRm9yd2FyZGVyU3RyaW5nOyAgDQog
ICAgICAgIFVMT05HTE9ORyBGdW5jdGlvbjsgICAgICAgICANCiAgICAgICAgVUxPTkdMT05HIE9y
ZGluYWw7DQogICAgICAgIFVMT05HTE9ORyBBZGRyZXNzT2ZEYXRhOyAgICANCiAgICB9IHUxOw0K
fSBJTUFHRV9USFVOS19EQVRBNjQ7DQp0eXBlZGVmIElNQUdFX1RIVU5LX0RBVEE2NCAqIFBJTUFH
RV9USFVOS19EQVRBNjQ7DQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFjayhwb3ApDQoNCg0KI2xpbmUg
MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KDQoNCiNsaW5lIDM2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCIN
CiNsaW5lIDE4MTYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQp0eXBlZGVmIHN0cnVjdCBf
SU1BR0VfVEhVTktfREFUQTMyIHsNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIEZvcndhcmRl
clN0cmluZzsgICAgICANCiAgICAgICAgRFdPUkQgRnVuY3Rpb247ICAgICAgICAgICAgIA0KICAg
ICAgICBEV09SRCBPcmRpbmFsOw0KICAgICAgICBEV09SRCBBZGRyZXNzT2ZEYXRhOyAgICAgICAg
DQogICAgfSB1MTsNCn0gSU1BR0VfVEhVTktfREFUQTMyOw0KdHlwZWRlZiBJTUFHRV9USFVOS19E
QVRBMzIgKiBQSU1BR0VfVEhVTktfREFUQTMyOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiB2b2lkDQooX19zdGRjYWxsICpQSU1BR0VfVExTX0NBTExCQUNLKSAoDQogICAgUFZPSUQg
RGxsSGFuZGxlLA0KICAgIERXT1JEIFJlYXNvbiwNCiAgICBQVk9JRCBSZXNlcnZlZA0KICAgICk7
DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9UTFNfRElSRUNUT1JZNjQgew0KICAgIFVMT05HTE9O
RyBTdGFydEFkZHJlc3NPZlJhd0RhdGE7DQogICAgVUxPTkdMT05HIEVuZEFkZHJlc3NPZlJhd0Rh
dGE7DQogICAgVUxPTkdMT05HIEFkZHJlc3NPZkluZGV4OyAgICAgICAgIA0KICAgIFVMT05HTE9O
RyBBZGRyZXNzT2ZDYWxsQmFja3M7ICAgICANCiAgICBEV09SRCBTaXplT2ZaZXJvRmlsbDsNCiAg
ICB1bmlvbiB7DQogICAgICAgIERXT1JEIENoYXJhY3RlcmlzdGljczsNCiAgICAgICAgc3RydWN0
IHsNCiAgICAgICAgICAgIERXT1JEIFJlc2VydmVkMCA6IDIwOw0KICAgICAgICAgICAgRFdPUkQg
QWxpZ25tZW50IDogNDsNCiAgICAgICAgICAgIERXT1JEIFJlc2VydmVkMSA6IDg7DQogICAgICAg
IH0gOw0KICAgIH0gOw0KDQp9IElNQUdFX1RMU19ESVJFQ1RPUlk2NDsNCg0KdHlwZWRlZiBJTUFH
RV9UTFNfRElSRUNUT1JZNjQgKiBQSU1BR0VfVExTX0RJUkVDVE9SWTY0Ow0KDQp0eXBlZGVmIHN0
cnVjdCBfSU1BR0VfVExTX0RJUkVDVE9SWTMyIHsNCiAgICBEV09SRCAgIFN0YXJ0QWRkcmVzc09m
UmF3RGF0YTsNCiAgICBEV09SRCAgIEVuZEFkZHJlc3NPZlJhd0RhdGE7DQogICAgRFdPUkQgICBB
ZGRyZXNzT2ZJbmRleDsgICAgICAgICAgICAgDQogICAgRFdPUkQgICBBZGRyZXNzT2ZDYWxsQmFj
a3M7ICAgICAgICAgDQogICAgRFdPUkQgICBTaXplT2ZaZXJvRmlsbDsNCiAgICB1bmlvbiB7DQog
ICAgICAgIERXT1JEIENoYXJhY3RlcmlzdGljczsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAg
ICAgIERXT1JEIFJlc2VydmVkMCA6IDIwOw0KICAgICAgICAgICAgRFdPUkQgQWxpZ25tZW50IDog
NDsNCiAgICAgICAgICAgIERXT1JEIFJlc2VydmVkMSA6IDg7DQogICAgICAgIH0gOw0KICAgIH0g
Ow0KDQp9IElNQUdFX1RMU19ESVJFQ1RPUlkzMjsNCnR5cGVkZWYgSU1BR0VfVExTX0RJUkVDVE9S
WTMyICogUElNQUdFX1RMU19ESVJFQ1RPUlkzMjsNCg0KDQoNCg0KdHlwZWRlZiBJTUFHRV9USFVO
S19EQVRBNjQgICAgICAgICAgICAgIElNQUdFX1RIVU5LX0RBVEE7DQp0eXBlZGVmIFBJTUFHRV9U
SFVOS19EQVRBNjQgICAgICAgICAgICAgUElNQUdFX1RIVU5LX0RBVEE7DQoNCnR5cGVkZWYgSU1B
R0VfVExTX0RJUkVDVE9SWTY0ICAgICAgICAgICBJTUFHRV9UTFNfRElSRUNUT1JZOw0KdHlwZWRl
ZiBQSU1BR0VfVExTX0RJUkVDVE9SWTY0ICAgICAgICAgIFBJTUFHRV9UTFNfRElSRUNUT1JZOw0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4MjQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQp0
eXBlZGVmIHN0cnVjdCBfSU1BR0VfSU1QT1JUX0RFU0NSSVBUT1Igew0KICAgIHVuaW9uIHsNCiAg
ICAgICAgRFdPUkQgICBDaGFyYWN0ZXJpc3RpY3M7ICAgICAgICAgICAgDQogICAgICAgIERXT1JE
ICAgT3JpZ2luYWxGaXJzdFRodW5rOyAgICAgICAgIA0KICAgIH0gOw0KICAgIERXT1JEICAgVGlt
ZURhdGVTdGFtcDsgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0K
ICAgIERXT1JEICAgRm9yd2FyZGVyQ2hhaW47ICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAg
IE5hbWU7DQogICAgRFdPUkQgICBGaXJzdFRodW5rOyAgICAgICAgICAgICAgICAgICAgIA0KfSBJ
TUFHRV9JTVBPUlRfREVTQ1JJUFRPUjsNCnR5cGVkZWYgSU1BR0VfSU1QT1JUX0RFU0NSSVBUT1Ig
X191bmFsaWduZWQgKlBJTUFHRV9JTVBPUlRfREVTQ1JJUFRPUjsNCg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBfSU1BR0VfQk9VTkRfSU1QT1JUX0RFU0NSSVBUT1Igew0KICAgIERXT1JEICAgVGlt
ZURhdGVTdGFtcDsNCiAgICBXT1JEICAgIE9mZnNldE1vZHVsZU5hbWU7DQogICAgV09SRCAgICBO
dW1iZXJPZk1vZHVsZUZvcndhcmRlclJlZnM7DQoNCn0gSU1BR0VfQk9VTkRfSU1QT1JUX0RFU0NS
SVBUT1IsICAqUElNQUdFX0JPVU5EX0lNUE9SVF9ERVNDUklQVE9SOw0KDQp0eXBlZGVmIHN0cnVj
dCBfSU1BR0VfQk9VTkRfRk9SV0FSREVSX1JFRiB7DQogICAgRFdPUkQgICBUaW1lRGF0ZVN0YW1w
Ow0KICAgIFdPUkQgICAgT2Zmc2V0TW9kdWxlTmFtZTsNCiAgICBXT1JEICAgIFJlc2VydmVkOw0K
fSBJTUFHRV9CT1VORF9GT1JXQVJERVJfUkVGLCAqUElNQUdFX0JPVU5EX0ZPUldBUkRFUl9SRUY7
DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9ERUxBWUxPQURfREVTQ1JJUFRPUiB7DQogICAgdW5p
b24gew0KICAgICAgICBEV09SRCBBbGxBdHRyaWJ1dGVzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAg
ICAgICAgICAgRFdPUkQgUnZhQmFzZWQgOiAxOyAgICAgICAgICAgICANCiAgICAgICAgICAgIERX
T1JEIFJlc2VydmVkQXR0cmlidXRlcyA6IDMxOw0KICAgICAgICB9IDsNCiAgICB9IEF0dHJpYnV0
ZXM7DQoNCiAgICBEV09SRCBEbGxOYW1lUlZBOyAgICAgICAgICAgICAgICAgICAgICAgDQogICAg
RFdPUkQgTW9kdWxlSGFuZGxlUlZBOyAgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEIEltcG9y
dEFkZHJlc3NUYWJsZVJWQTsgICAgICAgICAgICANCiAgICBEV09SRCBJbXBvcnROYW1lVGFibGVS
VkE7ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgQm91bmRJbXBvcnRBZGRyZXNzVGFibGVSVkE7
ICAgICAgIA0KICAgIERXT1JEIFVubG9hZEluZm9ybWF0aW9uVGFibGVSVkE7ICAgICAgICANCiAg
ICBEV09SRCBUaW1lRGF0ZVN0YW1wOyAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQp9IElNQUdFX0RFTEFZTE9BRF9ERVND
UklQVE9SLCAqUElNQUdFX0RFTEFZTE9BRF9ERVNDUklQVE9SOw0KDQp0eXBlZGVmIGNvbnN0IElN
QUdFX0RFTEFZTE9BRF9ERVNDUklQVE9SICpQQ0lNQUdFX0RFTEFZTE9BRF9ERVNDUklQVE9SOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1B
R0VfUkVTT1VSQ0VfRElSRUNUT1JZIHsNCiAgICBEV09SRCAgIENoYXJhY3RlcmlzdGljczsNCiAg
ICBEV09SRCAgIFRpbWVEYXRlU3RhbXA7DQogICAgV09SRCAgICBNYWpvclZlcnNpb247DQogICAg
V09SRCAgICBNaW5vclZlcnNpb247DQogICAgV09SRCAgICBOdW1iZXJPZk5hbWVkRW50cmllczsN
CiAgICBXT1JEICAgIE51bWJlck9mSWRFbnRyaWVzOw0KDQp9IElNQUdFX1JFU09VUkNFX0RJUkVD
VE9SWSwgKlBJTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUlk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUllf
RU5UUlkgew0KICAgIHVuaW9uIHsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIERXT1JE
IE5hbWVPZmZzZXQ6MzE7DQogICAgICAgICAgICBEV09SRCBOYW1lSXNTdHJpbmc6MTsNCiAgICAg
ICAgfSA7DQogICAgICAgIERXT1JEICAgTmFtZTsNCiAgICAgICAgV09SRCAgICBJZDsNCiAgICB9
IDsNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEICAgT2Zmc2V0VG9EYXRhOw0KICAgICAgICBz
dHJ1Y3Qgew0KICAgICAgICAgICAgRFdPUkQgICBPZmZzZXRUb0RpcmVjdG9yeTozMTsNCiAgICAg
ICAgICAgIERXT1JEICAgRGF0YUlzRGlyZWN0b3J5OjE7DQogICAgICAgIH0gOw0KICAgIH0gOw0K
fSBJTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUllfRU5UUlksICpQSU1BR0VfUkVTT1VSQ0VfRElSRUNU
T1JZX0VOVFJZOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfUkVT
T1VSQ0VfRElSRUNUT1JZX1NUUklORyB7DQogICAgV09SRCAgICBMZW5ndGg7DQogICAgQ0hBUiAg
ICBOYW1lU3RyaW5nWyAxIF07DQp9IElNQUdFX1JFU09VUkNFX0RJUkVDVE9SWV9TVFJJTkcsICpQ
SU1BR0VfUkVTT1VSQ0VfRElSRUNUT1JZX1NUUklORzsNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1B
R0VfUkVTT1VSQ0VfRElSX1NUUklOR19VIHsNCiAgICBXT1JEICAgIExlbmd0aDsNCiAgICBXQ0hB
UiAgIE5hbWVTdHJpbmdbIDEgXTsNCn0gSU1BR0VfUkVTT1VSQ0VfRElSX1NUUklOR19VLCAqUElN
QUdFX1JFU09VUkNFX0RJUl9TVFJJTkdfVTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IF9JTUFHRV9SRVNPVVJDRV9EQVRBX0VOVFJZIHsNCiAgICBEV09SRCAgIE9mZnNl
dFRvRGF0YTsNCiAgICBEV09SRCAgIFNpemU7DQogICAgRFdPUkQgICBDb2RlUGFnZTsNCiAgICBE
V09SRCAgIFJlc2VydmVkOw0KfSBJTUFHRV9SRVNPVVJDRV9EQVRBX0VOVFJZLCAqUElNQUdFX1JF
U09VUkNFX0RBVEFfRU5UUlk7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9M
T0FEX0NPTkZJR19DT0RFX0lOVEVHUklUWSB7DQogICAgV09SRCAgICBGbGFnczsgICAgICAgICAg
DQogICAgV09SRCAgICBDYXRhbG9nOyAgICAgICAgDQogICAgRFdPUkQgICBDYXRhbG9nT2Zmc2V0
Ow0KICAgIERXT1JEICAgUmVzZXJ2ZWQ7ICAgICAgIA0KfSBJTUFHRV9MT0FEX0NPTkZJR19DT0RF
X0lOVEVHUklUWSwgKlBJTUFHRV9MT0FEX0NPTkZJR19DT0RFX0lOVEVHUklUWTsNCg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfRFlOQU1JQ19SRUxPQ0FUSU9OX1RBQkxFIHsNCiAgICBE
V09SRCBWZXJzaW9uOw0KICAgIERXT1JEIFNpemU7DQoNCn0gSU1BR0VfRFlOQU1JQ19SRUxPQ0FU
SU9OX1RBQkxFLCAqUElNQUdFX0RZTkFNSUNfUkVMT0NBVElPTl9UQUJMRTsNCg0KDQoNCg0KDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2sxLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykN
Cg0KI3ByYWdtYSBwYWNrKHB1c2gsMSkNCg0KDQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxw
c2hwYWNrMS5oIg0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2sxLmgiDQoj
bGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMS5oIg0KI2xpbmUgMTg0MzEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5udC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfRFlOQU1JQ19SRUxPQ0FU
SU9OMzIgew0KICAgIERXT1JEICAgICAgU3ltYm9sOw0KICAgIERXT1JEICAgICAgQmFzZVJlbG9j
U2l6ZTsNCg0KfSBJTUFHRV9EWU5BTUlDX1JFTE9DQVRJT04zMiwgKlBJTUFHRV9EWU5BTUlDX1JF
TE9DQVRJT04zMjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0RZTkFNSUNfUkVMT0NBVElPTjY0
IHsNCiAgICBVTE9OR0xPTkcgIFN5bWJvbDsNCiAgICBEV09SRCAgICAgIEJhc2VSZWxvY1NpemU7
DQoNCn0gSU1BR0VfRFlOQU1JQ19SRUxPQ0FUSU9ONjQsICpQSU1BR0VfRFlOQU1JQ19SRUxPQ0FU
SU9ONjQ7DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9EWU5BTUlDX1JFTE9DQVRJT04zMl9WMiB7
DQogICAgRFdPUkQgICAgICBIZWFkZXJTaXplOw0KICAgIERXT1JEICAgICAgRml4dXBJbmZvU2l6
ZTsNCiAgICBEV09SRCAgICAgIFN5bWJvbDsNCiAgICBEV09SRCAgICAgIFN5bWJvbEdyb3VwOw0K
ICAgIERXT1JEICAgICAgRmxhZ3M7DQogICAgDQogICAgDQp9IElNQUdFX0RZTkFNSUNfUkVMT0NB
VElPTjMyX1YyLCAqUElNQUdFX0RZTkFNSUNfUkVMT0NBVElPTjMyX1YyOw0KDQp0eXBlZGVmIHN0
cnVjdCBfSU1BR0VfRFlOQU1JQ19SRUxPQ0FUSU9ONjRfVjIgew0KICAgIERXT1JEICAgICAgSGVh
ZGVyU2l6ZTsNCiAgICBEV09SRCAgICAgIEZpeHVwSW5mb1NpemU7DQogICAgVUxPTkdMT05HICBT
eW1ib2w7DQogICAgRFdPUkQgICAgICBTeW1ib2xHcm91cDsNCiAgICBEV09SRCAgICAgIEZsYWdz
Ow0KICAgIA0KICAgIA0KfSBJTUFHRV9EWU5BTUlDX1JFTE9DQVRJT042NF9WMiwgKlBJTUFHRV9E
WU5BTUlDX1JFTE9DQVRJT042NF9WMjsNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3Bw
YWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHBvcCkNCg0K
DQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xpbmUgMzYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9w
cGFjay5oIg0KI2xpbmUgMTg0NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCnR5cGVkZWYg
SU1BR0VfRFlOQU1JQ19SRUxPQ0FUSU9ONjQgICAgICAgICAgSU1BR0VfRFlOQU1JQ19SRUxPQ0FU
SU9OOw0KdHlwZWRlZiBQSU1BR0VfRFlOQU1JQ19SRUxPQ0FUSU9ONjQgICAgICAgICBQSU1BR0Vf
RFlOQU1JQ19SRUxPQ0FUSU9OOw0KdHlwZWRlZiBJTUFHRV9EWU5BTUlDX1JFTE9DQVRJT042NF9W
MiAgICAgICBJTUFHRV9EWU5BTUlDX1JFTE9DQVRJT05fVjI7DQp0eXBlZGVmIFBJTUFHRV9EWU5B
TUlDX1JFTE9DQVRJT042NF9WMiAgICAgIFBJTUFHRV9EWU5BTUlDX1JFTE9DQVRJT05fVjI7DQoN
Cg0KDQoNCg0KI2xpbmUgMTg0NzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazEuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socHVzaCwxKQ0KDQoNCiNsaW5lIDMwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHBzaHBhY2sxLmgiDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNo
cGFjazEuaCINCiNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2sxLmgiDQojbGluZSAx
ODQ4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9QUk9M
T0dVRV9EWU5BTUlDX1JFTE9DQVRJT05fSEVBREVSIHsNCiAgICBCWVRFICAgICAgIFByb2xvZ3Vl
Qnl0ZUNvdW50Ow0KICAgIA0KfSBJTUFHRV9QUk9MT0dVRV9EWU5BTUlDX1JFTE9DQVRJT05fSEVB
REVSOw0KdHlwZWRlZiBJTUFHRV9QUk9MT0dVRV9EWU5BTUlDX1JFTE9DQVRJT05fSEVBREVSIF9f
dW5hbGlnbmVkICogUElNQUdFX1BST0xPR1VFX0RZTkFNSUNfUkVMT0NBVElPTl9IRUFERVI7DQoN
CnR5cGVkZWYgc3RydWN0IF9JTUFHRV9FUElMT0dVRV9EWU5BTUlDX1JFTE9DQVRJT05fSEVBREVS
IHsNCiAgICBEV09SRCAgICAgIEVwaWxvZ3VlQ291bnQ7DQogICAgQllURSAgICAgICBFcGlsb2d1
ZUJ5dGVDb3VudDsNCiAgICBCWVRFICAgICAgIEJyYW5jaERlc2NyaXB0b3JFbGVtZW50U2l6ZTsN
CiAgICBXT1JEICAgICAgIEJyYW5jaERlc2NyaXB0b3JDb3VudDsNCiAgICANCiAgICANCn0gSU1B
R0VfRVBJTE9HVUVfRFlOQU1JQ19SRUxPQ0FUSU9OX0hFQURFUjsNCnR5cGVkZWYgSU1BR0VfRVBJ
TE9HVUVfRFlOQU1JQ19SRUxPQ0FUSU9OX0hFQURFUiBfX3VuYWxpZ25lZCAqIFBJTUFHRV9FUElM
T0dVRV9EWU5BTUlDX1JFTE9DQVRJT05fSEVBREVSOw0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0Vf
SU1QT1JUX0NPTlRST0xfVFJBTlNGRVJfRFlOQU1JQ19SRUxPQ0FUSU9OIHsNCiAgICBEV09SRCAg
ICAgICBQYWdlUmVsYXRpdmVPZmZzZXQgOiAxMjsNCiAgICBEV09SRCAgICAgICBJbmRpcmVjdENh
bGwgICAgICAgOiAxOw0KICAgIERXT1JEICAgICAgIElBVEluZGV4ICAgICAgICAgICA6IDE5Ow0K
fSBJTUFHRV9JTVBPUlRfQ09OVFJPTF9UUkFOU0ZFUl9EWU5BTUlDX1JFTE9DQVRJT047DQp0eXBl
ZGVmIElNQUdFX0lNUE9SVF9DT05UUk9MX1RSQU5TRkVSX0RZTkFNSUNfUkVMT0NBVElPTiBfX3Vu
YWxpZ25lZCAqIFBJTUFHRV9JTVBPUlRfQ09OVFJPTF9UUkFOU0ZFUl9EWU5BTUlDX1JFTE9DQVRJ
T047DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9JTkRJUl9DT05UUk9MX1RSQU5TRkVSX0RZTkFN
SUNfUkVMT0NBVElPTiB7DQogICAgV09SRCAgICAgICAgUGFnZVJlbGF0aXZlT2Zmc2V0IDogMTI7
DQogICAgV09SRCAgICAgICAgSW5kaXJlY3RDYWxsICAgICAgIDogMTsNCiAgICBXT1JEICAgICAg
ICBSZXhXUHJlZml4ICAgICAgICAgOiAxOw0KICAgIFdPUkQgICAgICAgIENmZ0NoZWNrICAgICAg
ICAgICA6IDE7DQogICAgV09SRCAgICAgICAgUmVzZXJ2ZWQgICAgICAgICAgIDogMTsNCn0gSU1B
R0VfSU5ESVJfQ09OVFJPTF9UUkFOU0ZFUl9EWU5BTUlDX1JFTE9DQVRJT047DQp0eXBlZGVmIElN
QUdFX0lORElSX0NPTlRST0xfVFJBTlNGRVJfRFlOQU1JQ19SRUxPQ0FUSU9OIF9fdW5hbGlnbmVk
ICogUElNQUdFX0lORElSX0NPTlRST0xfVFJBTlNGRVJfRFlOQU1JQ19SRUxPQ0FUSU9OOw0KDQp0
eXBlZGVmIHN0cnVjdCBfSU1BR0VfU1dJVENIVEFCTEVfQlJBTkNIX0RZTkFNSUNfUkVMT0NBVElP
TiB7DQogICAgV09SRCAgICAgICAgUGFnZVJlbGF0aXZlT2Zmc2V0IDogMTI7DQogICAgV09SRCAg
ICAgICAgUmVnaXN0ZXJOdW1iZXIgICAgIDogNDsNCn0gSU1BR0VfU1dJVENIVEFCTEVfQlJBTkNI
X0RZTkFNSUNfUkVMT0NBVElPTjsNCnR5cGVkZWYgSU1BR0VfU1dJVENIVEFCTEVfQlJBTkNIX0RZ
TkFNSUNfUkVMT0NBVElPTiBfX3VuYWxpZ25lZCAqIFBJTUFHRV9TV0lUQ0hUQUJMRV9CUkFOQ0hf
RFlOQU1JQ19SRUxPQ0FUSU9OOw0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2su
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQoNCiNs
aW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQojbGluZSAzNiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNr
LmgiDQojbGluZSAxODUyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX0lNQUdFX0xPQURfQ09ORklHX0RJUkVDVE9SWTMyIHsNCiAgICBEV09SRCAgIFNp
emU7DQogICAgRFdPUkQgICBUaW1lRGF0ZVN0YW1wOw0KICAgIFdPUkQgICAgTWFqb3JWZXJzaW9u
Ow0KICAgIFdPUkQgICAgTWlub3JWZXJzaW9uOw0KICAgIERXT1JEICAgR2xvYmFsRmxhZ3NDbGVh
cjsNCiAgICBEV09SRCAgIEdsb2JhbEZsYWdzU2V0Ow0KICAgIERXT1JEICAgQ3JpdGljYWxTZWN0
aW9uRGVmYXVsdFRpbWVvdXQ7DQogICAgRFdPUkQgICBEZUNvbW1pdEZyZWVCbG9ja1RocmVzaG9s
ZDsNCiAgICBEV09SRCAgIERlQ29tbWl0VG90YWxGcmVlVGhyZXNob2xkOw0KICAgIERXT1JEICAg
TG9ja1ByZWZpeFRhYmxlOyAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgIE1heGltdW1BbGxv
Y2F0aW9uU2l6ZTsNCiAgICBEV09SRCAgIFZpcnR1YWxNZW1vcnlUaHJlc2hvbGQ7DQogICAgRFdP
UkQgICBQcm9jZXNzSGVhcEZsYWdzOw0KICAgIERXT1JEICAgUHJvY2Vzc0FmZmluaXR5TWFzazsN
CiAgICBXT1JEICAgIENTRFZlcnNpb247DQogICAgV09SRCAgICBEZXBlbmRlbnRMb2FkRmxhZ3M7
DQogICAgRFdPUkQgICBFZGl0TGlzdDsgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIERXT1JE
ICAgU2VjdXJpdHlDb29raWU7ICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgIFNFSGFuZGxl
clRhYmxlOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgICBTRUhhbmRsZXJDb3VudDsNCiAg
ICBEV09SRCAgIEd1YXJkQ0ZDaGVja0Z1bmN0aW9uUG9pbnRlcjsgICAgDQogICAgRFdPUkQgICBH
dWFyZENGRGlzcGF0Y2hGdW5jdGlvblBvaW50ZXI7IA0KICAgIERXT1JEICAgR3VhcmRDRkZ1bmN0
aW9uVGFibGU7ICAgICAgICAgICANCiAgICBEV09SRCAgIEd1YXJkQ0ZGdW5jdGlvbkNvdW50Ow0K
ICAgIERXT1JEICAgR3VhcmRGbGFnczsNCiAgICBJTUFHRV9MT0FEX0NPTkZJR19DT0RFX0lOVEVH
UklUWSBDb2RlSW50ZWdyaXR5Ow0KICAgIERXT1JEICAgR3VhcmRBZGRyZXNzVGFrZW5JYXRFbnRy
eVRhYmxlOyANCiAgICBEV09SRCAgIEd1YXJkQWRkcmVzc1Rha2VuSWF0RW50cnlDb3VudDsNCiAg
ICBEV09SRCAgIEd1YXJkTG9uZ0p1bXBUYXJnZXRUYWJsZTsgICAgICAgDQogICAgRFdPUkQgICBH
dWFyZExvbmdKdW1wVGFyZ2V0Q291bnQ7DQogICAgRFdPUkQgICBEeW5hbWljVmFsdWVSZWxvY1Rh
YmxlOyAgICAgICAgIA0KICAgIERXT1JEICAgQ0hQRU1ldGFkYXRhUG9pbnRlcjsNCiAgICBEV09S
RCAgIEd1YXJkUkZGYWlsdXJlUm91dGluZTsgICAgICAgICAgDQogICAgRFdPUkQgICBHdWFyZFJG
RmFpbHVyZVJvdXRpbmVGdW5jdGlvblBvaW50ZXI7IA0KICAgIERXT1JEICAgRHluYW1pY1ZhbHVl
UmVsb2NUYWJsZU9mZnNldDsNCiAgICBXT1JEICAgIER5bmFtaWNWYWx1ZVJlbG9jVGFibGVTZWN0
aW9uOw0KICAgIFdPUkQgICAgUmVzZXJ2ZWQyOw0KICAgIERXT1JEICAgR3VhcmRSRlZlcmlmeVN0
YWNrUG9pbnRlckZ1bmN0aW9uUG9pbnRlcjsgDQogICAgRFdPUkQgICBIb3RQYXRjaFRhYmxlT2Zm
c2V0Ow0KICAgIERXT1JEICAgUmVzZXJ2ZWQzOw0KICAgIERXT1JEICAgRW5jbGF2ZUNvbmZpZ3Vy
YXRpb25Qb2ludGVyOyAgICANCiAgICBEV09SRCAgIFZvbGF0aWxlTWV0YWRhdGFQb2ludGVyOyAg
ICAgICAgDQogICAgRFdPUkQgICBHdWFyZEVIQ29udGludWF0aW9uVGFibGU7ICAgICAgIA0KICAg
IERXT1JEICAgR3VhcmRFSENvbnRpbnVhdGlvbkNvdW50Ow0KfSBJTUFHRV9MT0FEX0NPTkZJR19E
SVJFQ1RPUlkzMiwgKlBJTUFHRV9MT0FEX0NPTkZJR19ESVJFQ1RPUlkzMjsNCg0KdHlwZWRlZiBz
dHJ1Y3QgX0lNQUdFX0xPQURfQ09ORklHX0RJUkVDVE9SWTY0IHsNCiAgICBEV09SRCAgICAgIFNp
emU7DQogICAgRFdPUkQgICAgICBUaW1lRGF0ZVN0YW1wOw0KICAgIFdPUkQgICAgICAgTWFqb3JW
ZXJzaW9uOw0KICAgIFdPUkQgICAgICAgTWlub3JWZXJzaW9uOw0KICAgIERXT1JEICAgICAgR2xv
YmFsRmxhZ3NDbGVhcjsNCiAgICBEV09SRCAgICAgIEdsb2JhbEZsYWdzU2V0Ow0KICAgIERXT1JE
ICAgICAgQ3JpdGljYWxTZWN0aW9uRGVmYXVsdFRpbWVvdXQ7DQogICAgVUxPTkdMT05HICBEZUNv
bW1pdEZyZWVCbG9ja1RocmVzaG9sZDsNCiAgICBVTE9OR0xPTkcgIERlQ29tbWl0VG90YWxGcmVl
VGhyZXNob2xkOw0KICAgIFVMT05HTE9ORyAgTG9ja1ByZWZpeFRhYmxlOyAgICAgICAgICAgICAg
ICANCiAgICBVTE9OR0xPTkcgIE1heGltdW1BbGxvY2F0aW9uU2l6ZTsNCiAgICBVTE9OR0xPTkcg
IFZpcnR1YWxNZW1vcnlUaHJlc2hvbGQ7DQogICAgVUxPTkdMT05HICBQcm9jZXNzQWZmaW5pdHlN
YXNrOw0KICAgIERXT1JEICAgICAgUHJvY2Vzc0hlYXBGbGFnczsNCiAgICBXT1JEICAgICAgIENT
RFZlcnNpb247DQogICAgV09SRCAgICAgICBEZXBlbmRlbnRMb2FkRmxhZ3M7DQogICAgVUxPTkdM
T05HICBFZGl0TGlzdDsgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIFVMT05HTE9ORyAgU2Vj
dXJpdHlDb29raWU7ICAgICAgICAgICAgICAgICANCiAgICBVTE9OR0xPTkcgIFNFSGFuZGxlclRh
YmxlOyAgICAgICAgICAgICAgICAgDQogICAgVUxPTkdMT05HICBTRUhhbmRsZXJDb3VudDsNCiAg
ICBVTE9OR0xPTkcgIEd1YXJkQ0ZDaGVja0Z1bmN0aW9uUG9pbnRlcjsgICAgDQogICAgVUxPTkdM
T05HICBHdWFyZENGRGlzcGF0Y2hGdW5jdGlvblBvaW50ZXI7IA0KICAgIFVMT05HTE9ORyAgR3Vh
cmRDRkZ1bmN0aW9uVGFibGU7ICAgICAgICAgICANCiAgICBVTE9OR0xPTkcgIEd1YXJkQ0ZGdW5j
dGlvbkNvdW50Ow0KICAgIERXT1JEICAgICAgR3VhcmRGbGFnczsNCiAgICBJTUFHRV9MT0FEX0NP
TkZJR19DT0RFX0lOVEVHUklUWSBDb2RlSW50ZWdyaXR5Ow0KICAgIFVMT05HTE9ORyAgR3VhcmRB
ZGRyZXNzVGFrZW5JYXRFbnRyeVRhYmxlOyANCiAgICBVTE9OR0xPTkcgIEd1YXJkQWRkcmVzc1Rh
a2VuSWF0RW50cnlDb3VudDsNCiAgICBVTE9OR0xPTkcgIEd1YXJkTG9uZ0p1bXBUYXJnZXRUYWJs
ZTsgICAgICAgDQogICAgVUxPTkdMT05HICBHdWFyZExvbmdKdW1wVGFyZ2V0Q291bnQ7DQogICAg
VUxPTkdMT05HICBEeW5hbWljVmFsdWVSZWxvY1RhYmxlOyAgICAgICAgIA0KICAgIFVMT05HTE9O
RyAgQ0hQRU1ldGFkYXRhUG9pbnRlcjsgICAgICAgICAgICANCiAgICBVTE9OR0xPTkcgIEd1YXJk
UkZGYWlsdXJlUm91dGluZTsgICAgICAgICAgDQogICAgVUxPTkdMT05HICBHdWFyZFJGRmFpbHVy
ZVJvdXRpbmVGdW5jdGlvblBvaW50ZXI7IA0KICAgIERXT1JEICAgICAgRHluYW1pY1ZhbHVlUmVs
b2NUYWJsZU9mZnNldDsNCiAgICBXT1JEICAgICAgIER5bmFtaWNWYWx1ZVJlbG9jVGFibGVTZWN0
aW9uOw0KICAgIFdPUkQgICAgICAgUmVzZXJ2ZWQyOw0KICAgIFVMT05HTE9ORyAgR3VhcmRSRlZl
cmlmeVN0YWNrUG9pbnRlckZ1bmN0aW9uUG9pbnRlcjsgDQogICAgRFdPUkQgICAgICBIb3RQYXRj
aFRhYmxlT2Zmc2V0Ow0KICAgIERXT1JEICAgICAgUmVzZXJ2ZWQzOw0KICAgIFVMT05HTE9ORyAg
RW5jbGF2ZUNvbmZpZ3VyYXRpb25Qb2ludGVyOyAgICAgDQogICAgVUxPTkdMT05HICBWb2xhdGls
ZU1ldGFkYXRhUG9pbnRlcjsgICAgICAgICANCiAgICBVTE9OR0xPTkcgIEd1YXJkRUhDb250aW51
YXRpb25UYWJsZTsgICAgICAgIA0KICAgIFVMT05HTE9ORyAgR3VhcmRFSENvbnRpbnVhdGlvbkNv
dW50Ow0KfSBJTUFHRV9MT0FEX0NPTkZJR19ESVJFQ1RPUlk2NCwgKlBJTUFHRV9MT0FEX0NPTkZJ
R19ESVJFQ1RPUlk2NDsNCg0KDQoNCg0KDQp0eXBlZGVmIElNQUdFX0xPQURfQ09ORklHX0RJUkVD
VE9SWTY0ICAgICBJTUFHRV9MT0FEX0NPTkZJR19ESVJFQ1RPUlk7DQp0eXBlZGVmIFBJTUFHRV9M
T0FEX0NPTkZJR19ESVJFQ1RPUlk2NCAgICBQSU1BR0VfTE9BRF9DT05GSUdfRElSRUNUT1JZOw0K
DQoNCg0KI2xpbmUgMTg2MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX0lNQUdFX0hPVF9QQVRDSF9JTkZPIHsNCiAgICBEV09SRCBWZXJzaW9uOw0KICAgIERX
T1JEIFNpemU7DQogICAgRFdPUkQgU2VxdWVuY2VOdW1iZXI7DQogICAgRFdPUkQgQmFzZUltYWdl
TGlzdDsNCiAgICBEV09SRCBCYXNlSW1hZ2VDb3VudDsNCiAgICBEV09SRCBCdWZmZXJPZmZzZXQ7
ICAgICAgICAgICAgIA0KICAgIERXT1JEIEV4dHJhUGF0Y2hTaXplOyAgICAgICAgICAgDQp9IElN
QUdFX0hPVF9QQVRDSF9JTkZPLCAqUElNQUdFX0hPVF9QQVRDSF9JTkZPOw0KDQp0eXBlZGVmIHN0
cnVjdCBfSU1BR0VfSE9UX1BBVENIX0JBU0Ugew0KICAgIERXT1JEIFNlcXVlbmNlTnVtYmVyOw0K
ICAgIERXT1JEIEZsYWdzOw0KICAgIERXT1JEIE9yaWdpbmFsVGltZURhdGVTdGFtcDsNCiAgICBE
V09SRCBPcmlnaW5hbENoZWNrU3VtOw0KICAgIERXT1JEIENvZGVJbnRlZ3JpdHlJbmZvOw0KICAg
IERXT1JEIENvZGVJbnRlZ3JpdHlTaXplOw0KICAgIERXT1JEIFBhdGNoVGFibGU7DQogICAgRFdP
UkQgQnVmZmVyT2Zmc2V0OyAgICAgICAgICAgICANCn0gSU1BR0VfSE9UX1BBVENIX0JBU0UsICpQ
SU1BR0VfSE9UX1BBVENIX0JBU0U7DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9IT1RfUEFUQ0hf
SEFTSEVTIHsNCiAgICBCWVRFICBTSEEyNTZbMzJdOw0KICAgIEJZVEUgIFNIQTFbMjBdOw0KfSBJ
TUFHRV9IT1RfUEFUQ0hfSEFTSEVTLCAqUElNQUdFX0hPVF9QQVRDSF9IQVNIRVM7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0NFX1JVTlRJTUVfRlVOQ1RJT05fRU5UUlkgew0KICAgIERX
T1JEIEZ1bmNTdGFydDsNCiAgICBEV09SRCBQcm9sb2dMZW4gOiA4Ow0KICAgIERXT1JEIEZ1bmNM
ZW4gOiAyMjsNCiAgICBEV09SRCBUaGlydHlUd29CaXQgOiAxOw0KICAgIERXT1JEIEV4Y2VwdGlv
bkZsYWcgOiAxOw0KfSBJTUFHRV9DRV9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZLCAqIFBJTUFHRV9D
RV9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZOw0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfQVJNX1JV
TlRJTUVfRlVOQ1RJT05fRU5UUlkgew0KICAgIERXT1JEIEJlZ2luQWRkcmVzczsNCiAgICB1bmlv
biB7DQogICAgICAgIERXT1JEIFVud2luZERhdGE7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAg
ICAgICBEV09SRCBGbGFnIDogMjsNCiAgICAgICAgICAgIERXT1JEIEZ1bmN0aW9uTGVuZ3RoIDog
MTE7DQogICAgICAgICAgICBEV09SRCBSZXQgOiAyOw0KICAgICAgICAgICAgRFdPUkQgSCA6IDE7
DQogICAgICAgICAgICBEV09SRCBSZWcgOiAzOw0KICAgICAgICAgICAgRFdPUkQgUiA6IDE7DQog
ICAgICAgICAgICBEV09SRCBMIDogMTsNCiAgICAgICAgICAgIERXT1JEIEMgOiAxOw0KICAgICAg
ICAgICAgRFdPUkQgU3RhY2tBZGp1c3QgOiAxMDsNCiAgICAgICAgfSA7DQogICAgfSA7DQp9IElN
QUdFX0FSTV9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZLCAqIFBJTUFHRV9BUk1fUlVOVElNRV9GVU5D
VElPTl9FTlRSWTsNCg0KdHlwZWRlZiBlbnVtIEFSTTY0X0ZOUERBVEFfRkxBR1Mgew0KICAgIFBk
YXRhUmVmVG9GdWxsWGRhdGEgPSAwLA0KICAgIFBkYXRhUGFja2VkVW53aW5kRnVuY3Rpb24gPSAx
LA0KICAgIFBkYXRhUGFja2VkVW53aW5kRnJhZ21lbnQgPSAyLA0KfSBBUk02NF9GTlBEQVRBX0ZM
QUdTOw0KDQp0eXBlZGVmIGVudW0gQVJNNjRfRk5QREFUQV9DUiB7DQogICAgUGRhdGFDclVuY2hh
aW5lZCA9IDAsDQogICAgUGRhdGFDclVuY2hhaW5lZFNhdmVkTHIgPSAxLA0KICAgIFBkYXRhQ3JD
aGFpbmVkID0gMywNCn0gQVJNNjRfRk5QREFUQV9DUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdF
X0FSTTY0X1JVTlRJTUVfRlVOQ1RJT05fRU5UUlkgew0KICAgIERXT1JEIEJlZ2luQWRkcmVzczsN
CiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIFVud2luZERhdGE7DQogICAgICAgIHN0cnVjdCB7
DQogICAgICAgICAgICBEV09SRCBGbGFnIDogMjsNCiAgICAgICAgICAgIERXT1JEIEZ1bmN0aW9u
TGVuZ3RoIDogMTE7DQogICAgICAgICAgICBEV09SRCBSZWdGIDogMzsNCiAgICAgICAgICAgIERX
T1JEIFJlZ0kgOiA0Ow0KICAgICAgICAgICAgRFdPUkQgSCA6IDE7DQogICAgICAgICAgICBEV09S
RCBDUiA6IDI7DQogICAgICAgICAgICBEV09SRCBGcmFtZVNpemUgOiA5Ow0KICAgICAgICB9IDsN
CiAgICB9IDsNCn0gSU1BR0VfQVJNNjRfUlVOVElNRV9GVU5DVElPTl9FTlRSWSwgKiBQSU1BR0Vf
QVJNNjRfUlVOVElNRV9GVU5DVElPTl9FTlRSWTsNCg0KdHlwZWRlZiB1bmlvbiBJTUFHRV9BUk02
NF9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZX1hEQVRBIHsNCiAgICBEV09SRCBIZWFkZXJEYXRhOw0K
ICAgIHN0cnVjdCB7DQogICAgICAgIERXT1JEIEZ1bmN0aW9uTGVuZ3RoIDogMTg7ICAgICAgDQog
ICAgICAgIERXT1JEIFZlcnNpb24gOiAyOw0KICAgICAgICBEV09SRCBFeGNlcHRpb25EYXRhUHJl
c2VudCA6IDE7DQogICAgICAgIERXT1JEIEVwaWxvZ0luSGVhZGVyIDogMTsNCiAgICAgICAgRFdP
UkQgRXBpbG9nQ291bnQgOiA1OyAgICAgICAgICANCiAgICAgICAgRFdPUkQgQ29kZVdvcmRzIDog
NTsgICAgICAgICAgICANCiAgICB9Ow0KfSBJTUFHRV9BUk02NF9SVU5USU1FX0ZVTkNUSU9OX0VO
VFJZX1hEQVRBOw0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfQUxQSEE2NF9SVU5USU1FX0ZVTkNU
SU9OX0VOVFJZIHsNCiAgICBVTE9OR0xPTkcgQmVnaW5BZGRyZXNzOw0KICAgIFVMT05HTE9ORyBF
bmRBZGRyZXNzOw0KICAgIFVMT05HTE9ORyBFeGNlcHRpb25IYW5kbGVyOw0KICAgIFVMT05HTE9O
RyBIYW5kbGVyRGF0YTsNCiAgICBVTE9OR0xPTkcgUHJvbG9nRW5kQWRkcmVzczsNCn0gSU1BR0Vf
QUxQSEE2NF9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZLCAqUElNQUdFX0FMUEhBNjRfUlVOVElNRV9G
VU5DVElPTl9FTlRSWTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0FMUEhBX1JVTlRJTUVfRlVO
Q1RJT05fRU5UUlkgew0KICAgIERXT1JEIEJlZ2luQWRkcmVzczsNCiAgICBEV09SRCBFbmRBZGRy
ZXNzOw0KICAgIERXT1JEIEV4Y2VwdGlvbkhhbmRsZXI7DQogICAgRFdPUkQgSGFuZGxlckRhdGE7
DQogICAgRFdPUkQgUHJvbG9nRW5kQWRkcmVzczsNCn0gSU1BR0VfQUxQSEFfUlVOVElNRV9GVU5D
VElPTl9FTlRSWSwgKlBJTUFHRV9BTFBIQV9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfSU1BR0VfUlVOVElNRV9GVU5DVElPTl9FTlRSWSB7DQogICAgRFdPUkQgQmVn
aW5BZGRyZXNzOw0KICAgIERXT1JEIEVuZEFkZHJlc3M7DQogICAgdW5pb24gew0KICAgICAgICBE
V09SRCBVbndpbmRJbmZvQWRkcmVzczsNCiAgICAgICAgRFdPUkQgVW53aW5kRGF0YTsNCiAgICB9
IDsNCn0gX0lNQUdFX1JVTlRJTUVfRlVOQ1RJT05fRU5UUlksICpfUElNQUdFX1JVTlRJTUVfRlVO
Q1RJT05fRU5UUlk7DQoNCnR5cGVkZWYgIF9JTUFHRV9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZICBJ
TUFHRV9JQTY0X1JVTlRJTUVfRlVOQ1RJT05fRU5UUlk7DQp0eXBlZGVmIF9QSU1BR0VfUlVOVElN
RV9GVU5DVElPTl9FTlRSWSBQSU1BR0VfSUE2NF9SVU5USU1FX0ZVTkNUSU9OX0VOVFJZOw0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDE4ODI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0K
I2xpbmUgMTg4MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQojbGluZSAxODgzNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCiNsaW5lIDE4ODM5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubnQuaCINCg0KdHlwZWRlZiAgX0lNQUdFX1JVTlRJTUVfRlVOQ1RJT05fRU5UUlkgIElNQUdF
X1JVTlRJTUVfRlVOQ1RJT05fRU5UUlk7DQp0eXBlZGVmIF9QSU1BR0VfUlVOVElNRV9GVU5DVElP
Tl9FTlRSWSBQSU1BR0VfUlVOVElNRV9GVU5DVElPTl9FTlRSWTsNCg0KI2xpbmUgMTg4NDQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9JTUFH
RV9FTkNMQVZFX0NPTkZJRzMyIHsNCiAgICBEV09SRCBTaXplOw0KICAgIERXT1JEIE1pbmltdW1S
ZXF1aXJlZENvbmZpZ1NpemU7DQogICAgRFdPUkQgUG9saWN5RmxhZ3M7DQogICAgRFdPUkQgTnVt
YmVyT2ZJbXBvcnRzOw0KICAgIERXT1JEIEltcG9ydExpc3Q7DQogICAgRFdPUkQgSW1wb3J0RW50
cnlTaXplOw0KICAgIEJZVEUgIEZhbWlseUlEWzE2XTsNCiAgICBCWVRFICBJbWFnZUlEWzE2XTsN
CiAgICBEV09SRCBJbWFnZVZlcnNpb247DQogICAgRFdPUkQgU2VjdXJpdHlWZXJzaW9uOw0KICAg
IERXT1JEIEVuY2xhdmVTaXplOw0KICAgIERXT1JEIE51bWJlck9mVGhyZWFkczsNCiAgICBEV09S
RCBFbmNsYXZlRmxhZ3M7DQp9IElNQUdFX0VOQ0xBVkVfQ09ORklHMzIsICpQSU1BR0VfRU5DTEFW
RV9DT05GSUczMjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lNQUdFX0VOQ0xBVkVfQ09ORklHNjQgew0K
ICAgIERXT1JEIFNpemU7DQogICAgRFdPUkQgTWluaW11bVJlcXVpcmVkQ29uZmlnU2l6ZTsNCiAg
ICBEV09SRCBQb2xpY3lGbGFnczsNCiAgICBEV09SRCBOdW1iZXJPZkltcG9ydHM7DQogICAgRFdP
UkQgSW1wb3J0TGlzdDsNCiAgICBEV09SRCBJbXBvcnRFbnRyeVNpemU7DQogICAgQllURSAgRmFt
aWx5SURbMTZdOw0KICAgIEJZVEUgIEltYWdlSURbMTZdOw0KICAgIERXT1JEIEltYWdlVmVyc2lv
bjsNCiAgICBEV09SRCBTZWN1cml0eVZlcnNpb247DQogICAgVUxPTkdMT05HIEVuY2xhdmVTaXpl
Ow0KICAgIERXT1JEIE51bWJlck9mVGhyZWFkczsNCiAgICBEV09SRCBFbmNsYXZlRmxhZ3M7DQp9
IElNQUdFX0VOQ0xBVkVfQ09ORklHNjQsICpQSU1BR0VfRU5DTEFWRV9DT05GSUc2NDsNCg0KDQp0
eXBlZGVmIElNQUdFX0VOQ0xBVkVfQ09ORklHNjQgICAgICAgICAgSU1BR0VfRU5DTEFWRV9DT05G
SUc7DQp0eXBlZGVmIFBJTUFHRV9FTkNMQVZFX0NPTkZJRzY0ICAgICAgICAgUElNQUdFX0VOQ0xB
VkVfQ09ORklHOw0KDQoNCg0KI2xpbmUgMTg4OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfRU5DTEFWRV9JTVBPUlQgew0KICAgIERX
T1JEIE1hdGNoVHlwZTsNCiAgICBEV09SRCBNaW5pbXVtU2VjdXJpdHlWZXJzaW9uOw0KICAgIEJZ
VEUgIFVuaXF1ZU9yQXV0aG9ySURbMzJdOw0KICAgIEJZVEUgIEZhbWlseUlEWzE2XTsNCiAgICBC
WVRFICBJbWFnZUlEWzE2XTsNCiAgICBEV09SRCBJbXBvcnROYW1lOw0KICAgIERXT1JEIFJlc2Vy
dmVkOw0KfSBJTUFHRV9FTkNMQVZFX0lNUE9SVCwgKlBJTUFHRV9FTkNMQVZFX0lNUE9SVDsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfREVCVUdfRElSRUNUT1JZ
IHsNCiAgICBEV09SRCAgIENoYXJhY3RlcmlzdGljczsNCiAgICBEV09SRCAgIFRpbWVEYXRlU3Rh
bXA7DQogICAgV09SRCAgICBNYWpvclZlcnNpb247DQogICAgV09SRCAgICBNaW5vclZlcnNpb247
DQogICAgRFdPUkQgICBUeXBlOw0KICAgIERXT1JEICAgU2l6ZU9mRGF0YTsNCiAgICBEV09SRCAg
IEFkZHJlc3NPZlJhd0RhdGE7DQogICAgRFdPUkQgICBQb2ludGVyVG9SYXdEYXRhOw0KfSBJTUFH
RV9ERUJVR19ESVJFQ1RPUlksICpQSU1BR0VfREVCVUdfRElSRUNUT1JZOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9D
T0ZGX1NZTUJPTFNfSEVBREVSIHsNCiAgICBEV09SRCAgIE51bWJlck9mU3ltYm9sczsNCiAgICBE
V09SRCAgIEx2YVRvRmlyc3RTeW1ib2w7DQogICAgRFdPUkQgICBOdW1iZXJPZkxpbmVudW1iZXJz
Ow0KICAgIERXT1JEICAgTHZhVG9GaXJzdExpbmVudW1iZXI7DQogICAgRFdPUkQgICBSdmFUb0Zp
cnN0Qnl0ZU9mQ29kZTsNCiAgICBEV09SRCAgIFJ2YVRvTGFzdEJ5dGVPZkNvZGU7DQogICAgRFdP
UkQgICBSdmFUb0ZpcnN0Qnl0ZU9mRGF0YTsNCiAgICBEV09SRCAgIFJ2YVRvTGFzdEJ5dGVPZkRh
dGE7DQp9IElNQUdFX0NPRkZfU1lNQk9MU19IRUFERVIsICpQSU1BR0VfQ09GRl9TWU1CT0xTX0hF
QURFUjsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9GUE9fREFUQSB7DQogICAgRFdPUkQg
ICAgICAgdWxPZmZTdGFydDsgICAgICAgICAgICAgDQogICAgRFdPUkQgICAgICAgY2JQcm9jU2l6
ZTsgICAgICAgICAgICAgDQogICAgRFdPUkQgICAgICAgY2R3TG9jYWxzOyAgICAgICAgICAgICAg
DQogICAgV09SRCAgICAgICAgY2R3UGFyYW1zOyAgICAgICAgICAgICAgDQogICAgV09SRCAgICAg
ICAgY2JQcm9sb2cgOiA4OyAgICAgICAgICAgDQogICAgV09SRCAgICAgICAgY2JSZWdzICAgOiAz
OyAgICAgICAgICAgDQogICAgV09SRCAgICAgICAgZkhhc1NFSCAgOiAxOyAgICAgICAgICAgDQog
ICAgV09SRCAgICAgICAgZlVzZUJQICAgOiAxOyAgICAgICAgICAgDQogICAgV09SRCAgICAgICAg
cmVzZXJ2ZWQgOiAxOyAgICAgICAgICAgDQogICAgV09SRCAgICAgICAgY2JGcmFtZSAgOiAyOyAg
ICAgICAgICAgDQp9IEZQT19EQVRBLCAqUEZQT19EQVRBOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9JTUFHRV9ERUJVR19NSVNDIHsNCiAgICBEV09SRCAgICAgICBEYXRhVHlwZTsgICAgICAg
ICAgICAgICANCiAgICBEV09SRCAgICAgICBMZW5ndGg7ICAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBCT09MRUFOICAgICBVbmlj
b2RlOyAgICAgICAgICAgICAgICANCiAgICBCWVRFICAgICAgICBSZXNlcnZlZFsgMyBdOw0KICAg
IEJZVEUgICAgICAgIERhdGFbIDEgXTsgICAgICAgICAgICAgIA0KfSBJTUFHRV9ERUJVR19NSVND
LCAqUElNQUdFX0RFQlVHX01JU0M7DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lN
QUdFX0ZVTkNUSU9OX0VOVFJZIHsNCiAgICBEV09SRCAgIFN0YXJ0aW5nQWRkcmVzczsNCiAgICBE
V09SRCAgIEVuZGluZ0FkZHJlc3M7DQogICAgRFdPUkQgICBFbmRPZlByb2xvZ3VlOw0KfSBJTUFH
RV9GVU5DVElPTl9FTlRSWSwgKlBJTUFHRV9GVU5DVElPTl9FTlRSWTsNCg0KdHlwZWRlZiBzdHJ1
Y3QgX0lNQUdFX0ZVTkNUSU9OX0VOVFJZNjQgew0KICAgIFVMT05HTE9ORyAgIFN0YXJ0aW5nQWRk
cmVzczsNCiAgICBVTE9OR0xPTkcgICBFbmRpbmdBZGRyZXNzOw0KICAgIHVuaW9uIHsNCiAgICAg
ICAgVUxPTkdMT05HICAgRW5kT2ZQcm9sb2d1ZTsNCiAgICAgICAgVUxPTkdMT05HICAgVW53aW5k
SW5mb0FkZHJlc3M7DQogICAgfSA7DQp9IElNQUdFX0ZVTkNUSU9OX0VOVFJZNjQsICpQSU1BR0Vf
RlVOQ1RJT05fRU5UUlk2NDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9TRVBBUkFURV9ERUJVR19IRUFERVIgew0KICAgIFdP
UkQgICAgICAgIFNpZ25hdHVyZTsNCiAgICBXT1JEICAgICAgICBGbGFnczsNCiAgICBXT1JEICAg
ICAgICBNYWNoaW5lOw0KICAgIFdPUkQgICAgICAgIENoYXJhY3RlcmlzdGljczsNCiAgICBEV09S
RCAgICAgICBUaW1lRGF0ZVN0YW1wOw0KICAgIERXT1JEICAgICAgIENoZWNrU3VtOw0KICAgIERX
T1JEICAgICAgIEltYWdlQmFzZTsNCiAgICBEV09SRCAgICAgICBTaXplT2ZJbWFnZTsNCiAgICBE
V09SRCAgICAgICBOdW1iZXJPZlNlY3Rpb25zOw0KICAgIERXT1JEICAgICAgIEV4cG9ydGVkTmFt
ZXNTaXplOw0KICAgIERXT1JEICAgICAgIERlYnVnRGlyZWN0b3J5U2l6ZTsNCiAgICBEV09SRCAg
ICAgICBTZWN0aW9uQWxpZ25tZW50Ow0KICAgIERXT1JEICAgICAgIFJlc2VydmVkWzJdOw0KfSBJ
TUFHRV9TRVBBUkFURV9ERUJVR19IRUFERVIsICpQSU1BR0VfU0VQQVJBVEVfREVCVUdfSEVBREVS
Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX05PTl9QQUdFRF9ERUJVR19JTkZPIHsNCiAgICBXT1JE
ICAgICAgICBTaWduYXR1cmU7DQogICAgV09SRCAgICAgICAgRmxhZ3M7DQogICAgRFdPUkQgICAg
ICAgU2l6ZTsNCiAgICBXT1JEICAgICAgICBNYWNoaW5lOw0KICAgIFdPUkQgICAgICAgIENoYXJh
Y3RlcmlzdGljczsNCiAgICBEV09SRCAgICAgICBUaW1lRGF0ZVN0YW1wOw0KICAgIERXT1JEICAg
ICAgIENoZWNrU3VtOw0KICAgIERXT1JEICAgICAgIFNpemVPZkltYWdlOw0KICAgIFVMT05HTE9O
RyAgIEltYWdlQmFzZTsNCiAgICANCiAgICANCn0gTk9OX1BBR0VEX0RFQlVHX0lORk8sICpQTk9O
X1BBR0VEX0RFQlVHX0lORk87DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTA3NiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm50LmgiDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9JbWFnZUFy
Y2hpdGVjdHVyZUhlYWRlciB7DQogICAgdW5zaWduZWQgaW50IEFtYXNrVmFsdWU6IDE7ICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIA0KICAgIGludCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgdW5zaWduZWQgaW50IEFtYXNrU2hpZnQ6IDg7ICAgICAgICAgICAgICAgICANCiAgICBpbnQg
OjE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEIEZpcnN0
RW50cnlSVkE7ICAgICAgICAgICAgICAgICAgICAgICAgDQp9IElNQUdFX0FSQ0hJVEVDVFVSRV9I
RUFERVIsICpQSU1BR0VfQVJDSElURUNUVVJFX0hFQURFUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lt
YWdlQXJjaGl0ZWN0dXJlRW50cnkgew0KICAgIERXT1JEIEZpeHVwSW5zdFJWQTsgICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgTmV3SW5zdDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCn0gSU1BR0VfQVJDSElURUNUVVJFX0VOVFJZLCAqUElNQUdFX0FSQ0hJVEVDVFVS
RV9FTlRSWTsNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHBvcCkNCg0KDQojbGluZSAzMyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xpbmUgMzYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUg
MTkxMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IElNUE9SVF9PQkpFQ1RfSEVBREVSIHsNCiAgICBXT1JEICAgIFNpZzE7ICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICBXT1JEICAgIFNpZzI7ICAgICAgICAgICAgICAgICAgICAgICANCiAg
ICBXT1JEICAgIFZlcnNpb247DQogICAgV09SRCAgICBNYWNoaW5lOw0KICAgIERXT1JEICAgVGlt
ZURhdGVTdGFtcDsgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgU2l6ZU9mRGF0YTsgICAgICAg
ICAgICAgICAgIA0KDQogICAgdW5pb24gew0KICAgICAgICBXT1JEICAgIE9yZGluYWw7ICAgICAg
ICAgICAgICAgIA0KICAgICAgICBXT1JEICAgIEhpbnQ7DQogICAgfSA7DQoNCiAgICBXT1JEICAg
IFR5cGUgOiAyOyAgICAgICAgICAgICAgICAgICANCiAgICBXT1JEICAgIE5hbWVUeXBlIDogMzsg
ICAgICAgICAgICAgICANCiAgICBXT1JEICAgIFJlc2VydmVkIDogMTE7ICAgICAgICAgICAgICAN
Cn0gSU1QT1JUX09CSkVDVF9IRUFERVI7DQoNCnR5cGVkZWYgZW51bSBJTVBPUlRfT0JKRUNUX1RZ
UEUNCnsNCiAgICBJTVBPUlRfT0JKRUNUX0NPREUgPSAwLA0KICAgIElNUE9SVF9PQkpFQ1RfREFU
QSA9IDEsDQogICAgSU1QT1JUX09CSkVDVF9DT05TVCA9IDIsDQp9IElNUE9SVF9PQkpFQ1RfVFlQ
RTsNCg0KdHlwZWRlZiBlbnVtIElNUE9SVF9PQkpFQ1RfTkFNRV9UWVBFDQp7DQogICAgSU1QT1JU
X09CSkVDVF9PUkRJTkFMID0gMCwgICAgICAgICAgDQogICAgSU1QT1JUX09CSkVDVF9OQU1FID0g
MSwgICAgICAgICAgICAgDQogICAgSU1QT1JUX09CSkVDVF9OQU1FX05PX1BSRUZJWCA9IDIsICAg
DQogICAgSU1QT1JUX09CSkVDVF9OQU1FX1VOREVDT1JBVEUgPSAzLCAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgSU1QT1JUX09CSkVDVF9OQU1FX0VYUE9S
VEFTID0gNCwgICAgDQp9IElNUE9SVF9PQkpFQ1RfTkFNRV9UWVBFOw0KDQoNCg0KDQoNCnR5cGVk
ZWYgZW51bSBSZXBsYWNlc0Nvckhkck51bWVyaWNEZWZpbmVzDQp7DQoNCiAgICBDT01JTUFHRV9G
TEFHU19JTE9OTFkgICAgICAgICAgICAgICA9MHgwMDAwMDAwMSwNCiAgICBDT01JTUFHRV9GTEFH
U18zMkJJVFJFUVVJUkVEICAgICAgICA9MHgwMDAwMDAwMiwNCiAgICBDT01JTUFHRV9GTEFHU19J
TF9MSUJSQVJZICAgICAgICAgICA9MHgwMDAwMDAwNCwNCiAgICBDT01JTUFHRV9GTEFHU19TVFJP
TkdOQU1FU0lHTkVEICAgICA9MHgwMDAwMDAwOCwNCiAgICBDT01JTUFHRV9GTEFHU19OQVRJVkVf
RU5UUllQT0lOVCAgICA9MHgwMDAwMDAxMCwNCiAgICBDT01JTUFHRV9GTEFHU19UUkFDS0RFQlVH
REFUQSAgICAgICA9MHgwMDAxMDAwMCwNCiAgICBDT01JTUFHRV9GTEFHU18zMkJJVFBSRUZFUlJF
RCAgICAgICA9MHgwMDAyMDAwMCwNCg0KDQogICAgQ09SX1ZFUlNJT05fTUFKT1JfVjIgICAgICAg
ICAgICAgICAgPTIsDQogICAgQ09SX1ZFUlNJT05fTUFKT1IgICAgICAgICAgICAgICAgICAgPUNP
Ul9WRVJTSU9OX01BSk9SX1YyLA0KICAgIENPUl9WRVJTSU9OX01JTk9SICAgICAgICAgICAgICAg
ICAgID01LA0KICAgIENPUl9ERUxFVEVEX05BTUVfTEVOR1RIICAgICAgICAgICAgID04LA0KICAg
IENPUl9WVEFCTEVHQVBfTkFNRV9MRU5HVEggICAgICAgICAgID04LA0KDQoNCiAgICBOQVRJVkVf
VFlQRV9NQVhfQ0IgICAgICAgICAgICAgICAgICA9MSwNCiAgICBDT1JfSUxNRVRIT0RfU0VDVF9T
TUFMTF9NQVhfREFUQVNJWkU9MHhGRiwNCg0KDQogICAgSU1BR0VfQ09SX01JSF9NRVRIT0RSVkEg
ICAgICAgICAgICAgPTB4MDEsDQogICAgSU1BR0VfQ09SX01JSF9FSFJWQSAgICAgICAgICAgICAg
ICAgPTB4MDIsDQogICAgSU1BR0VfQ09SX01JSF9CQVNJQ0JMT0NLICAgICAgICAgICAgPTB4MDgs
DQoNCg0KICAgIENPUl9WVEFCTEVfMzJCSVQgICAgICAgICAgICAgICAgICAgID0weDAxLCAgICAg
ICAgICANCiAgICBDT1JfVlRBQkxFXzY0QklUICAgICAgICAgICAgICAgICAgICA9MHgwMiwgICAg
ICAgICAgDQogICAgQ09SX1ZUQUJMRV9GUk9NX1VOTUFOQUdFRCAgICAgICAgICAgPTB4MDQsICAg
ICAgICAgIA0KICAgIENPUl9WVEFCTEVfRlJPTV9VTk1BTkFHRURfUkVUQUlOX0FQUERPTUFJTiAg
PTB4MDgsICANCiAgICBDT1JfVlRBQkxFX0NBTExfTU9TVF9ERVJJVkVEICAgICAgICA9MHgxMCwg
ICAgICAgICAgDQoNCg0KICAgIElNQUdFX0NPUl9FQVRKX1RIVU5LX1NJWkUgICAgICAgICAgID0z
MiwgICAgICAgICAgICANCg0KDQogICAgDQogICAgTUFYX0NMQVNTX05BTUUgICAgICAgICAgICAg
ICAgICAgICAgPTEwMjQsDQogICAgTUFYX1BBQ0tBR0VfTkFNRSAgICAgICAgICAgICAgICAgICAg
PTEwMjQsDQp9IFJlcGxhY2VzQ29ySGRyTnVtZXJpY0RlZmluZXM7DQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgSU1BR0VfQ09SMjBfSEVBREVSDQp7DQogICAgDQogICAgRFdPUkQgICAgICAgICAgICAgICAg
ICAgY2I7DQogICAgV09SRCAgICAgICAgICAgICAgICAgICAgTWFqb3JSdW50aW1lVmVyc2lvbjsN
CiAgICBXT1JEICAgICAgICAgICAgICAgICAgICBNaW5vclJ1bnRpbWVWZXJzaW9uOw0KDQogICAg
DQogICAgSU1BR0VfREFUQV9ESVJFQ1RPUlkgICAgTWV0YURhdGE7DQogICAgRFdPUkQgICAgICAg
ICAgICAgICAgICAgRmxhZ3M7DQoNCiAgICANCiAgICANCiAgICB1bmlvbiB7DQogICAgICAgIERX
T1JEICAgICAgICAgICAgICAgRW50cnlQb2ludFRva2VuOw0KICAgICAgICBEV09SRCAgICAgICAg
ICAgICAgIEVudHJ5UG9pbnRSVkE7DQogICAgfSA7DQoNCiAgICANCiAgICBJTUFHRV9EQVRBX0RJ
UkVDVE9SWSAgICBSZXNvdXJjZXM7DQogICAgSU1BR0VfREFUQV9ESVJFQ1RPUlkgICAgU3Ryb25n
TmFtZVNpZ25hdHVyZTsNCg0KICAgIA0KICAgIElNQUdFX0RBVEFfRElSRUNUT1JZICAgIENvZGVN
YW5hZ2VyVGFibGU7DQogICAgSU1BR0VfREFUQV9ESVJFQ1RPUlkgICAgVlRhYmxlRml4dXBzOw0K
ICAgIElNQUdFX0RBVEFfRElSRUNUT1JZICAgIEV4cG9ydEFkZHJlc3NUYWJsZUp1bXBzOw0KDQog
ICAgDQogICAgSU1BR0VfREFUQV9ESVJFQ1RPUlkgICAgTWFuYWdlZE5hdGl2ZUhlYWRlcjsNCg0K
fSBJTUFHRV9DT1IyMF9IRUFERVIsICpQSU1BR0VfQ09SMjBfSEVBREVSOw0KDQojbGluZSAxOTIy
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxhcGlzZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcYXBpc2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxcYXBpc2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGFwaXNldC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlz
ZXQuaCINCg0KDQoNCiNsaW5lIDE1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlzZXQuaCINCg0KI2xp
bmUgMTU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGFwaXNldC5oIg0KI2xpbmUgMTkyMzQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBv
ciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CiANCldPUkQgIA0KX19zdGRjYWxsDQpSdGxDYXB0dXJlU3RhY2tCYWNrVHJhY2UoDQogICAgICBE
V09SRCBGcmFtZXNUb1NraXAsDQogICAgICBEV09SRCBGcmFtZXNUb0NhcHR1cmUsDQogICAgICBQ
Vk9JRCogQmFja1RyYWNlLA0KICAgICAgUERXT1JEIEJhY2tUcmFjZUhhc2gNCiAgICApOw0KDQoN
CiNsaW5lIDE5MjU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMTkyNjEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5udC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpSdGxDYXB0dXJlQ29udGV4dCgN
CiAgICAgIFBDT05URVhUIENvbnRleHRSZWNvcmQNCiAgICApOw0KDQoNCiNsaW5lIDE5Mjc3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDE5MjkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMTkyOTUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpSdGxVbndpbmQoDQogICAgICBQVk9JRCBUYXJn
ZXRGcmFtZSwNCiAgICAgIFBWT0lEIFRhcmdldElwLA0KICAgICAgUEVYQ0VQVElPTl9SRUNPUkQg
RXhjZXB0aW9uUmVjb3JkLA0KICAgICAgUFZPSUQgUmV0dXJuVmFsdWUNCiAgICApOw0KDQoNCiNs
aW5lIDE5MzE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0xFQU4NCl9fY2RlY2wNClJ0bEFkZEZ1bmN0aW9u
VGFibGUoDQogICAgICBQUlVOVElNRV9GVU5DVElPTiBGdW5jdGlvblRhYmxlLA0KICAgICAgRFdP
UkQgRW50cnlDb3VudCwNCiAgICAgIERXT1JENjQgQmFzZUFkZHJlc3MNCiAgICApOw0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTEVBTg0KX19jZGVjbA0KUnRsRGVsZXRlRnVuY3Rpb25U
YWJsZSgNCiAgICAgIFBSVU5USU1FX0ZVTkNUSU9OIEZ1bmN0aW9uVGFibGUNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTEVBTg0KX19jZGVjbA0KUnRsSW5zdGFsbEZ1bmN0
aW9uVGFibGVDYWxsYmFjaygNCiAgICAgIERXT1JENjQgVGFibGVJZGVudGlmaWVyLA0KICAgICAg
RFdPUkQ2NCBCYXNlQWRkcmVzcywNCiAgICAgIERXT1JEIExlbmd0aCwNCiAgICAgIFBHRVRfUlVO
VElNRV9GVU5DVElPTl9DQUxMQkFDSyBDYWxsYmFjaywNCiAgICAgIFBWT0lEIENvbnRleHQsDQog
ICAgICBQQ1dTVFIgT3V0T2ZQcm9jZXNzQ2FsbGJhY2tEbGwNCiAgICApOw0KDQoNCiNsaW5lIDE5
MzUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDE5MzkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMTkzOTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRp
b24gb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpQUlVOVElNRV9GVU5DVElPTg0KX19zdGRjYWxsDQpSdGxMb29rdXBGdW5jdGlvbkVu
dHJ5KA0KICAgICAgRFdPUkQ2NCBDb250cm9sUGMsDQogICAgICBQRFdPUkQ2NCBJbWFnZUJhc2Us
DQogICAgICBQVU5XSU5EX0hJU1RPUllfVEFCTEUgSGlzdG9yeVRhYmxlDQogICAgKTsNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fY2RlY2wNClJ0bFJlc3RvcmVDb250ZXh0KA0K
ICAgICAgUENPTlRFWFQgQ29udGV4dFJlY29yZCwNCiAgICAgIHN0cnVjdCBfRVhDRVBUSU9OX1JF
Q09SRCogRXhjZXB0aW9uUmVjb3JkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CnZvaWQNCl9fc3RkY2FsbA0KUnRsVW53aW5kRXgoDQogICAgICBQVk9JRCBUYXJnZXRGcmFtZSwN
CiAgICAgIFBWT0lEIFRhcmdldElwLA0KICAgICAgUEVYQ0VQVElPTl9SRUNPUkQgRXhjZXB0aW9u
UmVjb3JkLA0KICAgICAgUFZPSUQgUmV0dXJuVmFsdWUsDQogICAgICBQQ09OVEVYVCBDb250ZXh0
UmVjb3JkLA0KICAgICAgUFVOV0lORF9ISVNUT1JZX1RBQkxFIEhpc3RvcnlUYWJsZQ0KICAgICk7
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpQRVhDRVBUSU9OX1JPVVRJTkUNCl9fc3RkY2Fs
bA0KUnRsVmlydHVhbFVud2luZCgNCiAgICAgIERXT1JEIEhhbmRsZXJUeXBlLA0KICAgICAgRFdP
UkQ2NCBJbWFnZUJhc2UsDQogICAgICBEV09SRDY0IENvbnRyb2xQYywNCiAgICAgIFBSVU5USU1F
X0ZVTkNUSU9OIEZ1bmN0aW9uRW50cnksDQogICAgICBQQ09OVEVYVCBDb250ZXh0UmVjb3JkLA0K
ICAgICAgUFZPSUQqIEhhbmRsZXJEYXRhLA0KICAgICAgUERXT1JENjQgRXN0YWJsaXNoZXJGcmFt
ZSwNCiAgICAgIFBLTk9OVk9MQVRJTEVfQ09OVEVYVF9QT0lOVEVSUyBDb250ZXh0UG9pbnRlcnMN
CiAgICApOw0KDQoNCiNsaW5lIDE5NDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNsaW5lIDE5NDQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTU5MCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTk3MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDE5NzY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQoNCnZvaWQNCl9fc3RkY2FsbA0KUnRsUmFpc2VFeGNlcHRpb24o
DQogICAgICBQRVhDRVBUSU9OX1JFQ09SRCBFeGNlcHRpb25SZWNvcmQNCiAgICApOw0KDQoNCiNs
aW5lIDE5Nzc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWls
eQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUFZPSUQNCl9fc3RkY2FsbA0KUnRsUGNUb0Zp
bGVIZWFkZXIoDQogICAgICBQVk9JRCBQY1ZhbHVlLA0KICAgICAgUFZPSUQqIEJhc2VPZkltYWdl
DQogICAgKTsNCg0KDQojbGluZSAxOTc5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVD
b3JlIEZhbWlseQ0KDQoNCg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClNJWkVfVA0KX19z
dGRjYWxsDQpSdGxDb21wYXJlTWVtb3J5KA0KICAgICAgY29uc3Qgdm9pZCogU291cmNlMSwNCiAg
ICAgIGNvbnN0IHZvaWQqIFNvdXJjZTIsDQogICAgICBTSVpFX1QgTGVuZ3RoDQogICAgKTsNCg0K
DQojbGluZSAxOTgxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiNsaW5lIDE5ODE1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE5ODI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0MzI0KSAgIA0KDQp0eXBlZGVmIHN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDE2KSkgX1NMSVNU
X0VOVFJZIHsNCiAgICBzdHJ1Y3QgX1NMSVNUX0VOVFJZICpOZXh0Ow0KfSBTTElTVF9FTlRSWSwg
KlBTTElTVF9FTlRSWTsNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KDQoNCg0KDQojbGluZSAx
OTg1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQp0eXBlZGVmIHVuaW9uIF9fZGVjbHNw
ZWMoYWxpZ24oMTYpKSBfU0xJU1RfSEVBREVSIHsNCiAgICBzdHJ1Y3QgeyAgDQogICAgICAgIFVM
T05HTE9ORyBBbGlnbm1lbnQ7DQogICAgICAgIFVMT05HTE9ORyBSZWdpb247DQogICAgfSA7DQog
ICAgc3RydWN0IHsgIA0KICAgICAgICBVTE9OR0xPTkcgRGVwdGg6MTY7DQogICAgICAgIFVMT05H
TE9ORyBTZXF1ZW5jZTo0ODsNCiAgICAgICAgVUxPTkdMT05HIFJlc2VydmVkOjQ7DQogICAgICAg
IFVMT05HTE9ORyBOZXh0RW50cnk6NjA7IA0KICAgIH0gSGVhZGVyWDY0Ow0KfSBTTElTVF9IRUFE
RVIsICpQU0xJU1RfSEVBREVSOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTk5MTIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5udC5oIg0KDQojbGluZSAxOTkxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50Lmgi
DQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KUnRsSW5pdGlhbGl6ZVNM
aXN0SGVhZCAoDQogICAgICBQU0xJU1RfSEVBREVSIExpc3RIZWFkDQogICAgKTsNCg0KIA0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpQU0xJU1RfRU5UUlkNCl9fc3RkY2FsbA0KUnRsRmlyc3RFbnRy
eVNMaXN0ICgNCiAgICAgIGNvbnN0IFNMSVNUX0hFQURFUiAqTGlzdEhlYWQNCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNClBTTElTVF9FTlRSWQ0KX19zdGRjYWxsDQpSdGxJbnRlcmxv
Y2tlZFBvcEVudHJ5U0xpc3QgKA0KICAgICAgUFNMSVNUX0hFQURFUiBMaXN0SGVhZA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUFNMSVNUX0VOVFJZDQpfX3N0ZGNhbGwNClJ0bElu
dGVybG9ja2VkUHVzaEVudHJ5U0xpc3QgKA0KICAgICAgUFNMSVNUX0hFQURFUiBMaXN0SGVhZCwN
CiAgICAgICAgUFNMSVNUX0VOVFJZIExpc3RFbnRyeQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KUFNMSVNUX0VOVFJZDQpfX3N0ZGNhbGwNClJ0bEludGVybG9ja2VkUHVzaExpc3RT
TGlzdEV4ICgNCiAgICAgIFBTTElTVF9IRUFERVIgTGlzdEhlYWQsDQogICAgICAgIFBTTElTVF9F
TlRSWSBMaXN0LA0KICAgICAgUFNMSVNUX0VOVFJZIExpc3RFbmQsDQogICAgICBEV09SRCBDb3Vu
dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUFNMSVNUX0VOVFJZDQpfX3N0ZGNh
bGwNClJ0bEludGVybG9ja2VkRmx1c2hTTGlzdCAoDQogICAgICBQU0xJU1RfSEVBREVSIExpc3RI
ZWFkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpXT1JEICANCl9fc3RkY2FsbA0K
UnRsUXVlcnlEZXB0aFNMaXN0ICgNCiAgICAgIFBTTElTVF9IRUFERVIgTGlzdEhlYWQNCiAgICAp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTk4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50Lmgi
DQoNCiNsaW5lIDE5OTg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiB1bmlvbiBfUlRMX1JVTl9PTkNFIHsgICAgICAgDQogICAgUFZPSUQgUHRyOyAgICAgICAg
ICAgICAgICAgICAgICANCn0gUlRMX1JVTl9PTkNFLCAqUFJUTF9SVU5fT05DRTsgICAgIA0KDQoj
bGluZSAyMDAxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCnR5cGVkZWYgc3RydWN0IF9SVExf
QkFSUklFUiB7ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIERXT1JEIFJlc2Vy
dmVkMTsgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIERXT1JEIFJlc2VydmVk
MjsgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIFVMT05HX1BUUiBSZXNlcnZl
ZDNbMl07ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIERXT1JEIFJlc2VydmVkNDsgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIERXT1JEIFJlc2VydmVkNTsgICAgICAg
ICAgICAgICAgICAgICAgICANCn0gUlRMX0JBUlJJRVIsICpQUlRMX0JBUlJJRVI7ICAgICAgICAg
ICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCl9fZGVjbHNwZWMobm9yZXR1cm4pDQp2b2lkDQpfX2Zhc3RmYWlsKA0KICAgICAgdW5z
aWduZWQgaW50IENvZGUNCiAgICApOw0KDQojcHJhZ21hIGludHJpbnNpYyhfX2Zhc3RmYWlsKQ0K
DQojbGluZSAyMDExNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2ZvcmNl
aW5saW5lDQpEV09SRA0KSEVBUF9NQUtFX1RBR19GTEFHUyAoDQogICAgICBEV09SRCBUYWdCYXNl
LA0KICAgICAgRFdPUkQgVGFnDQogICAgKQ0KDQp7DQogICAgcmV0dXJuICgoRFdPUkQpKChUYWdC
YXNlKSArICgoVGFnKSA8PCAxOCkpKTsNCn0NCiNsaW5lIDIwMTQ2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCiNsaW5lIDIwMTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAyMDIwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
X19mb3JjZWlubGluZQ0KUFZPSUQNClJ0bFNlY3VyZVplcm9NZW1vcnkoDQogICAgICBQVk9JRCBw
dHIsDQogICAgICBTSVpFX1QgY250DQogICAgKQ0Kew0KICAgIHZvbGF0aWxlIGNoYXIgKnZwdHIg
PSAodm9sYXRpbGUgY2hhciAqKXB0cjsNCg0KDQoNCiAgICBfX3N0b3NiKChQQllURSApKChEV09S
RDY0KXZwdHIpLCAwLCBjbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAyMDI0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiAgICByZXR1cm4gcHRyOw0K
fQ0KDQojbGluZSAyMDI1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX01FU1NBR0VfUkVT
T1VSQ0VfRU5UUlkgew0KICAgIFdPUkQgICBMZW5ndGg7DQogICAgV09SRCAgIEZsYWdzOw0KICAg
IEJZVEUgIFRleHRbIDEgXTsNCn0gTUVTU0FHRV9SRVNPVVJDRV9FTlRSWSwgKlBNRVNTQUdFX1JF
U09VUkNFX0VOVFJZOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfTUVTU0FHRV9SRVNPVVJDRV9C
TE9DSyB7DQogICAgRFdPUkQgTG93SWQ7DQogICAgRFdPUkQgSGlnaElkOw0KICAgIERXT1JEIE9m
ZnNldFRvRW50cmllczsNCn0gTUVTU0FHRV9SRVNPVVJDRV9CTE9DSywgKlBNRVNTQUdFX1JFU09V
UkNFX0JMT0NLOw0KDQp0eXBlZGVmIHN0cnVjdCBfTUVTU0FHRV9SRVNPVVJDRV9EQVRBIHsNCiAg
ICBEV09SRCBOdW1iZXJPZkJsb2NrczsNCiAgICBNRVNTQUdFX1JFU09VUkNFX0JMT0NLIEJsb2Nr
c1sgMSBdOw0KfSBNRVNTQUdFX1JFU09VUkNFX0RBVEEsICpQTUVTU0FHRV9SRVNPVVJDRV9EQVRB
Ow0KDQp0eXBlZGVmIHN0cnVjdCBfT1NWRVJTSU9OSU5GT0Egew0KICAgIERXT1JEIGR3T1NWZXJz
aW9uSW5mb1NpemU7DQogICAgRFdPUkQgZHdNYWpvclZlcnNpb247DQogICAgRFdPUkQgZHdNaW5v
clZlcnNpb247DQogICAgRFdPUkQgZHdCdWlsZE51bWJlcjsNCiAgICBEV09SRCBkd1BsYXRmb3Jt
SWQ7DQogICAgQ0hBUiAgIHN6Q1NEVmVyc2lvblsgMTI4IF07ICAgICANCn0gT1NWRVJTSU9OSU5G
T0EsICpQT1NWRVJTSU9OSU5GT0EsICpMUE9TVkVSU0lPTklORk9BOw0KDQp0eXBlZGVmIHN0cnVj
dCBfT1NWRVJTSU9OSU5GT1cgew0KICAgIERXT1JEIGR3T1NWZXJzaW9uSW5mb1NpemU7DQogICAg
RFdPUkQgZHdNYWpvclZlcnNpb247DQogICAgRFdPUkQgZHdNaW5vclZlcnNpb247DQogICAgRFdP
UkQgZHdCdWlsZE51bWJlcjsNCiAgICBEV09SRCBkd1BsYXRmb3JtSWQ7DQogICAgV0NIQVIgIHN6
Q1NEVmVyc2lvblsgMTI4IF07ICAgICANCn0gT1NWRVJTSU9OSU5GT1csICpQT1NWRVJTSU9OSU5G
T1csICpMUE9TVkVSU0lPTklORk9XLCBSVExfT1NWRVJTSU9OSU5GT1csICpQUlRMX09TVkVSU0lP
TklORk9XOw0KDQp0eXBlZGVmIE9TVkVSU0lPTklORk9XIE9TVkVSU0lPTklORk87DQp0eXBlZGVm
IFBPU1ZFUlNJT05JTkZPVyBQT1NWRVJTSU9OSU5GTzsNCnR5cGVkZWYgTFBPU1ZFUlNJT05JTkZP
VyBMUE9TVkVSU0lPTklORk87DQoNCg0KDQoNCiNsaW5lIDIwMzIwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX09TVkVSU0lPTklORk9FWEEgew0KICAgIERXT1JEIGR3
T1NWZXJzaW9uSW5mb1NpemU7DQogICAgRFdPUkQgZHdNYWpvclZlcnNpb247DQogICAgRFdPUkQg
ZHdNaW5vclZlcnNpb247DQogICAgRFdPUkQgZHdCdWlsZE51bWJlcjsNCiAgICBEV09SRCBkd1Bs
YXRmb3JtSWQ7DQogICAgQ0hBUiAgIHN6Q1NEVmVyc2lvblsgMTI4IF07ICAgICANCiAgICBXT1JE
ICAgd1NlcnZpY2VQYWNrTWFqb3I7DQogICAgV09SRCAgIHdTZXJ2aWNlUGFja01pbm9yOw0KICAg
IFdPUkQgICB3U3VpdGVNYXNrOw0KICAgIEJZVEUgIHdQcm9kdWN0VHlwZTsNCiAgICBCWVRFICB3
UmVzZXJ2ZWQ7DQp9IE9TVkVSU0lPTklORk9FWEEsICpQT1NWRVJTSU9OSU5GT0VYQSwgKkxQT1NW
RVJTSU9OSU5GT0VYQTsNCnR5cGVkZWYgc3RydWN0IF9PU1ZFUlNJT05JTkZPRVhXIHsNCiAgICBE
V09SRCBkd09TVmVyc2lvbkluZm9TaXplOw0KICAgIERXT1JEIGR3TWFqb3JWZXJzaW9uOw0KICAg
IERXT1JEIGR3TWlub3JWZXJzaW9uOw0KICAgIERXT1JEIGR3QnVpbGROdW1iZXI7DQogICAgRFdP
UkQgZHdQbGF0Zm9ybUlkOw0KICAgIFdDSEFSICBzekNTRFZlcnNpb25bIDEyOCBdOyAgICAgDQog
ICAgV09SRCAgIHdTZXJ2aWNlUGFja01ham9yOw0KICAgIFdPUkQgICB3U2VydmljZVBhY2tNaW5v
cjsNCiAgICBXT1JEICAgd1N1aXRlTWFzazsNCiAgICBCWVRFICB3UHJvZHVjdFR5cGU7DQogICAg
QllURSAgd1Jlc2VydmVkOw0KfSBPU1ZFUlNJT05JTkZPRVhXLCAqUE9TVkVSU0lPTklORk9FWFcs
ICpMUE9TVkVSU0lPTklORk9FWFcsIFJUTF9PU1ZFUlNJT05JTkZPRVhXLCAqUFJUTF9PU1ZFUlNJ
T05JTkZPRVhXOw0KDQp0eXBlZGVmIE9TVkVSU0lPTklORk9FWFcgT1NWRVJTSU9OSU5GT0VYOw0K
dHlwZWRlZiBQT1NWRVJTSU9OSU5GT0VYVyBQT1NWRVJTSU9OSU5GT0VYOw0KdHlwZWRlZiBMUE9T
VkVSU0lPTklORk9FWFcgTFBPU1ZFUlNJT05JTkZPRVg7DQoNCg0KDQoNCiNsaW5lIDIwMzU2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVTE9O
R0xPTkcNCl9fc3RkY2FsbA0KVmVyU2V0Q29uZGl0aW9uTWFzaygNCiAgICAgIFVMT05HTE9ORyBD
b25kaXRpb25NYXNrLA0KICAgICAgRFdPUkQgVHlwZU1hc2ssDQogICAgICBCWVRFICBDb25kaXRp
b24NCiAgICApOw0KDQojbGluZSAyMDQzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiNsaW5l
IDIwNDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xpbmUgMjA0MzYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5udC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0xFQU4NCl9fc3RkY2FsbA0KUnRsR2V0UHJvZHVjdEluZm8oDQogICAgICAgRFdP
UkQgIE9TTWFqb3JWZXJzaW9uLA0KICAgICAgIERXT1JEICBPU01pbm9yVmVyc2lvbiwNCiAgICAg
ICBEV09SRCAgU3BNYWpvclZlcnNpb24sDQogICAgICAgRFdPUkQgIFNwTWlub3JWZXJzaW9uLA0K
ICAgICAgUERXT1JEIFJldHVybmVkUHJvZHVjdFR5cGUNCiAgICApOw0KDQojbGluZSAyMDQ1OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQojbGluZSAyMDQ2MyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm50LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9SVExfVU1TX1RI
UkVBRF9JTkZPX0NMQVNTIHsNCiAgICBVbXNUaHJlYWRJbnZhbGlkSW5mb0NsYXNzID0gMCwNCiAg
ICBVbXNUaHJlYWRVc2VyQ29udGV4dCwNCiAgICBVbXNUaHJlYWRQcmlvcml0eSwgICAgICAgICAg
ICAgIA0KICAgIFVtc1RocmVhZEFmZmluaXR5LCAgICAgICAgICAgICAgDQogICAgVW1zVGhyZWFk
VGViLA0KICAgIFVtc1RocmVhZElzU3VzcGVuZGVkLA0KICAgIFVtc1RocmVhZElzVGVybWluYXRl
ZCwNCiAgICBVbXNUaHJlYWRNYXhJbmZvQ2xhc3MNCn0gUlRMX1VNU19USFJFQURfSU5GT19DTEFT
UywgKlBSVExfVU1TX1RIUkVBRF9JTkZPX0NMQVNTOw0KDQp0eXBlZGVmIGVudW0gX1JUTF9VTVNf
U0NIRURVTEVSX1JFQVNPTiB7DQogICAgVW1zU2NoZWR1bGVyU3RhcnR1cCA9IDAsDQogICAgVW1z
U2NoZWR1bGVyVGhyZWFkQmxvY2tlZCwNCiAgICBVbXNTY2hlZHVsZXJUaHJlYWRZaWVsZCwNCn0g
UlRMX1VNU19TQ0hFRFVMRVJfUkVBU09OLCAqUFJUTF9VTVNfU0NIRURVTEVSX1JFQVNPTjsNCg0K
dHlwZWRlZg0KIA0Kdm9pZA0KX19zdGRjYWxsDQpSVExfVU1TX1NDSEVEVUxFUl9FTlRSWV9QT0lO
VCgNCiAgICAgIFJUTF9VTVNfU0NIRURVTEVSX1JFQVNPTiBSZWFzb24sDQogICAgICBVTE9OR19Q
VFIgQWN0aXZhdGlvblBheWxvYWQsDQogICAgICBQVk9JRCBTY2hlZHVsZXJQYXJhbQ0KICAgICk7
DQoNCnR5cGVkZWYgUlRMX1VNU19TQ0hFRFVMRVJfRU5UUllfUE9JTlQgKlBSVExfVU1TX1NDSEVE
VUxFUl9FTlRSWV9QT0lOVDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDUyOCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50
LmgiDQoNCiNsaW5lIDIwNTMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAyMDU0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIwNTgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjA2MDkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyMDgyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDg4OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwOTI5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9JTUFH
RV9QT0xJQ1lfRU5UUllfVFlQRSB7DQogICAgSW1hZ2VQb2xpY3lFbnRyeVR5cGVOb25lID0gMCwN
CiAgICBJbWFnZVBvbGljeUVudHJ5VHlwZUJvb2wsDQogICAgSW1hZ2VQb2xpY3lFbnRyeVR5cGVJ
bnQ4LA0KICAgIEltYWdlUG9saWN5RW50cnlUeXBlVUludDgsDQogICAgSW1hZ2VQb2xpY3lFbnRy
eVR5cGVJbnQxNiwNCiAgICBJbWFnZVBvbGljeUVudHJ5VHlwZVVJbnQxNiwNCiAgICBJbWFnZVBv
bGljeUVudHJ5VHlwZUludDMyLA0KICAgIEltYWdlUG9saWN5RW50cnlUeXBlVUludDMyLA0KICAg
IEltYWdlUG9saWN5RW50cnlUeXBlSW50NjQsDQogICAgSW1hZ2VQb2xpY3lFbnRyeVR5cGVVSW50
NjQsDQogICAgSW1hZ2VQb2xpY3lFbnRyeVR5cGVBbnNpU3RyaW5nLA0KICAgIEltYWdlUG9saWN5
RW50cnlUeXBlVW5pY29kZVN0cmluZywNCiAgICBJbWFnZVBvbGljeUVudHJ5VHlwZU92ZXJyaWRl
LA0KICAgIEltYWdlUG9saWN5RW50cnlUeXBlTWF4aW11bQ0KfSBJTUFHRV9QT0xJQ1lfRU5UUllf
VFlQRTsNCg0KdHlwZWRlZiBlbnVtIF9JTUFHRV9QT0xJQ1lfSUQgew0KICAgIEltYWdlUG9saWN5
SWROb25lID0gMCwNCiAgICBJbWFnZVBvbGljeUlkRXR3LA0KICAgIEltYWdlUG9saWN5SWREZWJ1
ZywNCiAgICBJbWFnZVBvbGljeUlkQ3Jhc2hEdW1wLA0KICAgIEltYWdlUG9saWN5SWRDcmFzaER1
bXBLZXksDQogICAgSW1hZ2VQb2xpY3lJZENyYXNoRHVtcEtleUd1aWQsDQogICAgSW1hZ2VQb2xp
Y3lJZFBhcmVudFNkLA0KICAgIEltYWdlUG9saWN5SWRQYXJlbnRTZFJldiwNCiAgICBJbWFnZVBv
bGljeUlkU3ZuLA0KICAgIEltYWdlUG9saWN5SWREZXZpY2VJZCwNCiAgICBJbWFnZVBvbGljeUlk
Q2FwYWJpbGl0eSwNCiAgICBJbWFnZVBvbGljeUlkU2NlbmFyaW9JZCwNCiAgICBJbWFnZVBvbGlj
eUlkTWF4aW11bQ0KfSBJTUFHRV9QT0xJQ1lfSUQ7DQoNCnR5cGVkZWYgc3RydWN0IF9JTUFHRV9Q
T0xJQ1lfRU5UUlkgew0KICAgIElNQUdFX1BPTElDWV9FTlRSWV9UWVBFIFR5cGU7DQogICAgSU1B
R0VfUE9MSUNZX0lEIFBvbGljeUlkOw0KICAgIHVuaW9uIHsNCiAgICAgICAgY29uc3Qgdm9pZCog
Tm9uZTsNCiAgICAgICAgQk9PTEVBTiBCb29sVmFsdWU7DQogICAgICAgIElOVDggSW50OFZhbHVl
Ow0KICAgICAgICBVSU5UOCBVSW50OFZhbHVlOw0KICAgICAgICBJTlQxNiBJbnQxNlZhbHVlOw0K
ICAgICAgICBVSU5UMTYgVUludDE2VmFsdWU7DQogICAgICAgIElOVDMyIEludDMyVmFsdWU7DQog
ICAgICAgIFVJTlQzMiBVSW50MzJWYWx1ZTsNCiAgICAgICAgSU5UNjQgSW50NjRWYWx1ZTsNCiAg
ICAgICAgVUlOVDY0IFVJbnQ2NFZhbHVlOw0KICAgICAgICBQQ1NUUiBBbnNpU3RyaW5nVmFsdWU7
DQogICAgICAgIFBDV1NUUiBVbmljb2RlU3RyaW5nVmFsdWU7DQogICAgfSB1Ow0KfSBJTUFHRV9Q
T0xJQ1lfRU5UUlk7DQp0eXBlZGVmIGNvbnN0IElNQUdFX1BPTElDWV9FTlRSWSogUENJTUFHRV9Q
T0xJQ1lfRU5UUlk7DQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRp
c2FibGU6NDIwMCkgDQp0eXBlZGVmIHN0cnVjdCBfSU1BR0VfUE9MSUNZX01FVEFEQVRBIHsNCiAg
ICBCWVRFICBWZXJzaW9uOw0KICAgIEJZVEUgIFJlc2VydmVkMFs3XTsNCiAgICBVTE9OR0xPTkcg
QXBwbGljYXRpb25JZDsNCiAgICBJTUFHRV9QT0xJQ1lfRU5UUlkgUG9saWNpZXNbXTsNCn0gSU1B
R0VfUE9MSUNZX01FVEFEQVRBOw0KdHlwZWRlZiBjb25zdCBJTUFHRV9QT0xJQ1lfTUVUQURBVEEq
IFBDSU1BR0VfUE9MSUNZX01FVEFEQVRBOw0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjEwNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5o
Ig0KDQoNCnR5cGVkZWYgc3RydWN0IF9SVExfQ1JJVElDQUxfU0VDVElPTl9ERUJVRyB7DQogICAg
V09SRCAgIFR5cGU7DQogICAgV09SRCAgIENyZWF0b3JCYWNrVHJhY2VJbmRleDsNCiAgICBzdHJ1
Y3QgX1JUTF9DUklUSUNBTF9TRUNUSU9OICpDcml0aWNhbFNlY3Rpb247DQogICAgTElTVF9FTlRS
WSBQcm9jZXNzTG9ja3NMaXN0Ow0KICAgIERXT1JEIEVudHJ5Q291bnQ7DQogICAgRFdPUkQgQ29u
dGVudGlvbkNvdW50Ow0KICAgIERXT1JEIEZsYWdzOw0KICAgIFdPUkQgICBDcmVhdG9yQmFja1Ry
YWNlSW5kZXhIaWdoOw0KICAgIFdPUkQgICBTcGFyZVdPUkQgIDsNCn0gUlRMX0NSSVRJQ0FMX1NF
Q1RJT05fREVCVUcsICpQUlRMX0NSSVRJQ0FMX1NFQ1RJT05fREVCVUcsIFJUTF9SRVNPVVJDRV9E
RUJVRywgKlBSVExfUkVTT1VSQ0VfREVCVUc7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQoNCnR5cGVkZWYgc3RydWN0IF9SVExfQ1JJVElD
QUxfU0VDVElPTiB7DQogICAgUFJUTF9DUklUSUNBTF9TRUNUSU9OX0RFQlVHIERlYnVnSW5mbzsN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgTE9ORyBMb2NrQ291bnQ7DQogICAgTE9O
RyBSZWN1cnNpb25Db3VudDsNCiAgICBIQU5ETEUgT3duaW5nVGhyZWFkOyAgICAgICAgDQogICAg
SEFORExFIExvY2tTZW1hcGhvcmU7DQogICAgVUxPTkdfUFRSIFNwaW5Db3VudDsgICAgICAgIA0K
fSBSVExfQ1JJVElDQUxfU0VDVElPTiwgKlBSVExfQ1JJVElDQUxfU0VDVElPTjsNCg0KI3ByYWdt
YSBwYWNrKHBvcCkNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JUTF9TUldMT0NLIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgIFBWT0lEIFB0cjsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICANCn0gUlRMX1NSV0xPQ0ssICpQUlRMX1NSV0xPQ0s7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KDQp0eXBlZGVmIHN0cnVjdCBfUlRMX0NPTkRJVElPTl9WQVJJ
QUJMRSB7ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgUFZPSUQgUHRyOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfSBSVExfQ09ORElUSU9OX1ZBUklBQkxFLCAq
UFJUTF9DT05ESVRJT05fVkFSSUFCTEU7ICAgICAgDQoNCg0KdHlwZWRlZg0Kdm9pZA0KKF9fc3Rk
Y2FsbCAqUEFQQ0ZVTkMpKA0KICAgICAgVUxPTkdfUFRSIFBhcmFtZXRlcg0KICAgICk7DQp0eXBl
ZGVmIExPTkcgKF9fc3RkY2FsbCAqUFZFQ1RPUkVEX0VYQ0VQVElPTl9IQU5ETEVSKSgNCiAgICBz
dHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyAqRXhjZXB0aW9uSW5mbw0KICAgICk7DQoNCnR5cGVk
ZWYgZW51bSBfSEVBUF9JTkZPUk1BVElPTl9DTEFTUyB7DQoNCiAgICBIZWFwQ29tcGF0aWJpbGl0
eUluZm9ybWF0aW9uID0gMCwNCiAgICBIZWFwRW5hYmxlVGVybWluYXRpb25PbkNvcnJ1cHRpb24g
PSAxDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxMTU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0K
DQp9IEhFQVBfSU5GT1JNQVRJT05fQ0xBU1M7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIx
MTcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiB2b2lkIChfX3N0ZGNhbGwgKiBXQUlUT1JUSU1FUkNBTExCQUNLRlVOQykgKFBWT0lELCBC
T09MRUFOICk7ICAgDQp0eXBlZGVmIHZvaWQgKF9fc3RkY2FsbCAqIFdPUktFUkNBTExCQUNLRlVO
QykgKFBWT0lEICk7ICAgICAgICAgICAgICAgICANCnR5cGVkZWYgdm9pZCAoX19zdGRjYWxsICog
QVBDX0NBTExCQUNLX0ZVTkNUSU9OKSAoRFdPUkQgICAsIFBWT0lELCBQVk9JRCk7IA0KdHlwZWRl
ZiBXQUlUT1JUSU1FUkNBTExCQUNLRlVOQyBXQUlUT1JUSU1FUkNBTExCQUNLOyANCnR5cGVkZWYN
CnZvaWQNCihfX3N0ZGNhbGwgKlBGTFNfQ0FMTEJBQ0tfRlVOQ1RJT04pICgNCiAgICAgUFZPSUQg
bHBGbHNEYXRhDQogICAgKTsNCg0KdHlwZWRlZg0KQk9PTEVBTg0KKF9fc3RkY2FsbCAqUFNFQ1VS
RV9NRU1PUllfQ0FDSEVfQ0FMTEJBQ0spICgNCiAgICAgIFBWT0lEIEFkZHIsDQogICAgICBTSVpF
X1QgUmFuZ2UNCiAgICApOw0KDQoNCg0KDQp0eXBlZGVmIGVudW0gX0FDVElWQVRJT05fQ09OVEVY
VF9JTkZPX0NMQVNTIHsNCiAgICBBY3RpdmF0aW9uQ29udGV4dEJhc2ljSW5mb3JtYXRpb24gICAg
ICAgICAgICAgICAgICAgICAgID0gMSwNCiAgICBBY3RpdmF0aW9uQ29udGV4dERldGFpbGVkSW5m
b3JtYXRpb24gICAgICAgICAgICAgICAgICAgID0gMiwNCiAgICBBc3NlbWJseURldGFpbGVkSW5m
b3JtYXRpb25JbkFjdGl2YXRpb25Db250ZXh0ICAgICAgICAgID0gMywNCiAgICBGaWxlSW5mb3Jt
YXRpb25JbkFzc2VtYmx5T2ZBc3NlbWJseUluQWN0aXZhdGlvbkNvbnRleHQgID0gNCwNCiAgICBS
dW5sZXZlbEluZm9ybWF0aW9uSW5BY3RpdmF0aW9uQ29udGV4dCAgICAgICAgICAgICAgICAgID0g
NSwNCiAgICBDb21wYXRpYmlsaXR5SW5mb3JtYXRpb25JbkFjdGl2YXRpb25Db250ZXh0ICAgICAg
ICAgICAgID0gNiwNCiAgICBBY3RpdmF0aW9uQ29udGV4dE1hbmlmZXN0UmVzb3VyY2VOYW1lICAg
ICAgICAgICAgICAgICAgID0gNywNCiAgICBNYXhBY3RpdmF0aW9uQ29udGV4dEluZm9DbGFzcywN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIEFzc2VtYmx5RGV0YWlsZWRJbmZvcm1hdGlvbkluQWN0
aXZhdGlvbkNvbnR4dCAgICAgICAgICAgPSAzLA0KICAgIEZpbGVJbmZvcm1hdGlvbkluQXNzZW1i
bHlPZkFzc2VtYmx5SW5BY3RpdmF0aW9uQ29udHh0ICAgPSA0DQp9IEFDVElWQVRJT05fQ09OVEVY
VF9JTkZPX0NMQVNTOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfQUNUSVZBVElPTl9DT05URVhU
X1FVRVJZX0lOREVYIHsNCiAgICBEV09SRCB1bEFzc2VtYmx5SW5kZXg7DQogICAgRFdPUkQgdWxG
aWxlSW5kZXhJbkFzc2VtYmx5Ow0KfSBBQ1RJVkFUSU9OX0NPTlRFWFRfUVVFUllfSU5ERVgsICog
UEFDVElWQVRJT05fQ09OVEVYVF9RVUVSWV9JTkRFWDsNCg0KdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X0FDVElWQVRJT05fQ09OVEVYVF9RVUVSWV9JTkRFWCAqIFBDQUNUSVZBVElPTl9DT05URVhUX1FV
RVJZX0lOREVYOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfQVNTRU1CTFlfRklMRV9E
RVRBSUxFRF9JTkZPUk1BVElPTiB7DQogICAgRFdPUkQgdWxGbGFnczsNCiAgICBEV09SRCB1bEZp
bGVuYW1lTGVuZ3RoOw0KICAgIERXT1JEIHVsUGF0aExlbmd0aDsNCg0KICAgIFBDV1NUUiBscEZp
bGVOYW1lOw0KICAgIFBDV1NUUiBscEZpbGVQYXRoOw0KfSBBU1NFTUJMWV9GSUxFX0RFVEFJTEVE
X0lORk9STUFUSU9OLCAqUEFTU0VNQkxZX0ZJTEVfREVUQUlMRURfSU5GT1JNQVRJT047DQp0eXBl
ZGVmIGNvbnN0IEFTU0VNQkxZX0ZJTEVfREVUQUlMRURfSU5GT1JNQVRJT04gKlBDQVNTRU1CTFlf
RklMRV9ERVRBSUxFRF9JTkZPUk1BVElPTjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX0FDVElWQVRJT05fQ09OVEVYVF9BU1NFTUJMWV9ERVRBSUxFRF9JTkZPUk1BVElPTiB7
DQogICAgRFdPUkQgdWxGbGFnczsNCiAgICBEV09SRCB1bEVuY29kZWRBc3NlbWJseUlkZW50aXR5
TGVuZ3RoOyAgICAgIA0KICAgIERXT1JEIHVsTWFuaWZlc3RQYXRoVHlwZTsgICAgICAgICAgICAg
ICAgICAgDQogICAgRFdPUkQgdWxNYW5pZmVzdFBhdGhMZW5ndGg7ICAgICAgICAgICAgICAgICAN
CiAgICBMQVJHRV9JTlRFR0VSIGxpTWFuaWZlc3RMYXN0V3JpdGVUaW1lOyAgICAgIA0KICAgIERX
T1JEIHVsUG9saWN5UGF0aFR5cGU7ICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgdWxQ
b2xpY3lQYXRoTGVuZ3RoOyAgICAgICAgICAgICAgICAgICANCiAgICBMQVJHRV9JTlRFR0VSIGxp
UG9saWN5TGFzdFdyaXRlVGltZTsgICAgICAgIA0KICAgIERXT1JEIHVsTWV0YWRhdGFTYXRlbGxp
dGVSb3N0ZXJJbmRleDsNCg0KICAgIERXT1JEIHVsTWFuaWZlc3RWZXJzaW9uTWFqb3I7ICAgICAg
ICAgICAgICAgDQogICAgRFdPUkQgdWxNYW5pZmVzdFZlcnNpb25NaW5vcjsgICAgICAgICAgICAg
ICANCiAgICBEV09SRCB1bFBvbGljeVZlcnNpb25NYWpvcjsgICAgICAgICAgICAgICAgIA0KICAg
IERXT1JEIHVsUG9saWN5VmVyc2lvbk1pbm9yOyAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQg
dWxBc3NlbWJseURpcmVjdG9yeU5hbWVMZW5ndGg7ICAgICAgICANCg0KICAgIFBDV1NUUiBscEFz
c2VtYmx5RW5jb2RlZEFzc2VtYmx5SWRlbnRpdHk7DQogICAgUENXU1RSIGxwQXNzZW1ibHlNYW5p
ZmVzdFBhdGg7DQogICAgUENXU1RSIGxwQXNzZW1ibHlQb2xpY3lQYXRoOw0KICAgIFBDV1NUUiBs
cEFzc2VtYmx5RGlyZWN0b3J5TmFtZTsNCg0KICAgIERXT1JEICB1bEZpbGVDb3VudDsNCn0gQUNU
SVZBVElPTl9DT05URVhUX0FTU0VNQkxZX0RFVEFJTEVEX0lORk9STUFUSU9OLCAqIFBBQ1RJVkFU
SU9OX0NPTlRFWFRfQVNTRU1CTFlfREVUQUlMRURfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYgY29u
c3Qgc3RydWN0IF9BQ1RJVkFUSU9OX0NPTlRFWFRfQVNTRU1CTFlfREVUQUlMRURfSU5GT1JNQVRJ
T04gKiBQQ0FDVElWQVRJT05fQ09OVEVYVF9BU1NFTUJMWV9ERVRBSUxFRF9JTkZPUk1BVElPTiA7
DQoNCnR5cGVkZWYgZW51bQ0Kew0KICAgIEFDVENUWF9SVU5fTEVWRUxfVU5TUEVDSUZJRUQgPSAw
LA0KICAgIEFDVENUWF9SVU5fTEVWRUxfQVNfSU5WT0tFUiwNCiAgICBBQ1RDVFhfUlVOX0xFVkVM
X0hJR0hFU1RfQVZBSUxBQkxFLA0KICAgIEFDVENUWF9SVU5fTEVWRUxfUkVRVUlSRV9BRE1JTiwN
CiAgICBBQ1RDVFhfUlVOX0xFVkVMX05VTUJFUlMNCn0gQUNUQ1RYX1JFUVVFU1RFRF9SVU5fTEVW
RUw7DQoNCnR5cGVkZWYgc3RydWN0IF9BQ1RJVkFUSU9OX0NPTlRFWFRfUlVOX0xFVkVMX0lORk9S
TUFUSU9OIHsNCiAgICBEV09SRCB1bEZsYWdzOw0KICAgIEFDVENUWF9SRVFVRVNURURfUlVOX0xF
VkVMICBSdW5MZXZlbDsNCiAgICBEV09SRCBVaUFjY2VzczsNCn0gQUNUSVZBVElPTl9DT05URVhU
X1JVTl9MRVZFTF9JTkZPUk1BVElPTiwgKiBQQUNUSVZBVElPTl9DT05URVhUX1JVTl9MRVZFTF9J
TkZPUk1BVElPTjsNCg0KdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0FDVElWQVRJT05fQ09OVEVYVF9S
VU5fTEVWRUxfSU5GT1JNQVRJT04gKiBQQ0FDVElWQVRJT05fQ09OVEVYVF9SVU5fTEVWRUxfSU5G
T1JNQVRJT04gOw0KDQp0eXBlZGVmIGVudW0NCnsNCiAgICBBQ1RDVFhfQ09NUEFUSUJJTElUWV9F
TEVNRU5UX1RZUEVfVU5LTk9XTiA9IDAsDQogICAgQUNUQ1RYX0NPTVBBVElCSUxJVFlfRUxFTUVO
VF9UWVBFX09TLA0KICAgIEFDVENUWF9DT01QQVRJQklMSVRZX0VMRU1FTlRfVFlQRV9NSVRJR0FU
SU9OLA0KICAgIEFDVENUWF9DT01QQVRJQklMSVRZX0VMRU1FTlRfVFlQRV9NQVhWRVJTSU9OVEVT
VEVEDQp9IEFDVENUWF9DT01QQVRJQklMSVRZX0VMRU1FTlRfVFlQRTsNCg0KdHlwZWRlZiBzdHJ1
Y3QgX0NPTVBBVElCSUxJVFlfQ09OVEVYVF9FTEVNRU5UIHsNCiAgICBHVUlEIElkOw0KICAgIEFD
VENUWF9DT01QQVRJQklMSVRZX0VMRU1FTlRfVFlQRSBUeXBlOw0KICAgIFVMT05HTE9ORyBNYXhW
ZXJzaW9uVGVzdGVkOw0KfSBDT01QQVRJQklMSVRZX0NPTlRFWFRfRUxFTUVOVCwgKlBDT01QQVRJ
QklMSVRZX0NPTlRFWFRfRUxFTUVOVDsNCg0KdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NPTVBBVElC
SUxJVFlfQ09OVEVYVF9FTEVNRU5UICpQQ0NPTVBBVElCSUxJVFlfQ09OVEVYVF9FTEVNRU5UOw0K
DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQy
MDApIA0KI2xpbmUgMjEzMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp0eXBlZGVmIHN0cnVj
dCBfQUNUSVZBVElPTl9DT05URVhUX0NPTVBBVElCSUxJVFlfSU5GT1JNQVRJT04gew0KICAgIERX
T1JEIEVsZW1lbnRDb3VudDsNCiAgICBDT01QQVRJQklMSVRZX0NPTlRFWFRfRUxFTUVOVCBFbGVt
ZW50c1tdOw0KfSBBQ1RJVkFUSU9OX0NPTlRFWFRfQ09NUEFUSUJJTElUWV9JTkZPUk1BVElPTiwg
KiBQQUNUSVZBVElPTl9DT05URVhUX0NPTVBBVElCSUxJVFlfSU5GT1JNQVRJT047DQoNCg0KI3By
YWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDIxMzMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0K
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0FDVElWQVRJT05fQ09OVEVYVF9DT01QQVRJQklMSVRZX0lO
Rk9STUFUSU9OICogUENBQ1RJVkFUSU9OX0NPTlRFWFRfQ09NUEFUSUJJTElUWV9JTkZPUk1BVElP
TjsNCg0KI2xpbmUgMjEzMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp0eXBlZGVmIHN0cnVj
dCBfU1VQUE9SVEVEX09TX0lORk8gew0KICAgIFdPUkQgICBNYWpvclZlcnNpb247DQogICAgV09S
RCAgIE1pbm9yVmVyc2lvbjsNCn0gU1VQUE9SVEVEX09TX0lORk8sICpQU1VQUE9SVEVEX09TX0lO
Rk87DQoNCnR5cGVkZWYgc3RydWN0IF9NQVhWRVJTSU9OVEVTVEVEX0lORk8gew0KICAgIFVMT05H
TE9ORyBNYXhWZXJzaW9uVGVzdGVkOw0KfSBNQVhWRVJTSU9OVEVTVEVEX0lORk8sICpQTUFYVkVS
U0lPTlRFU1RFRF9JTkZPOw0KDQp0eXBlZGVmIHN0cnVjdCBfQUNUSVZBVElPTl9DT05URVhUX0RF
VEFJTEVEX0lORk9STUFUSU9OIHsNCiAgICBEV09SRCBkd0ZsYWdzOw0KICAgIERXT1JEIHVsRm9y
bWF0VmVyc2lvbjsNCiAgICBEV09SRCB1bEFzc2VtYmx5Q291bnQ7DQogICAgRFdPUkQgdWxSb290
TWFuaWZlc3RQYXRoVHlwZTsNCiAgICBEV09SRCB1bFJvb3RNYW5pZmVzdFBhdGhDaGFyczsNCiAg
ICBEV09SRCB1bFJvb3RDb25maWd1cmF0aW9uUGF0aFR5cGU7DQogICAgRFdPUkQgdWxSb290Q29u
ZmlndXJhdGlvblBhdGhDaGFyczsNCiAgICBEV09SRCB1bEFwcERpclBhdGhUeXBlOw0KICAgIERX
T1JEIHVsQXBwRGlyUGF0aENoYXJzOw0KICAgIFBDV1NUUiBscFJvb3RNYW5pZmVzdFBhdGg7DQog
ICAgUENXU1RSIGxwUm9vdENvbmZpZ3VyYXRpb25QYXRoOw0KICAgIFBDV1NUUiBscEFwcERpclBh
dGg7DQp9IEFDVElWQVRJT05fQ09OVEVYVF9ERVRBSUxFRF9JTkZPUk1BVElPTiwgKlBBQ1RJVkFU
SU9OX0NPTlRFWFRfREVUQUlMRURfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYgY29uc3Qgc3RydWN0
IF9BQ1RJVkFUSU9OX0NPTlRFWFRfREVUQUlMRURfSU5GT1JNQVRJT04gKlBDQUNUSVZBVElPTl9D
T05URVhUX0RFVEFJTEVEX0lORk9STUFUSU9OOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSEFS
RFdBUkVfQ09VTlRFUl9EQVRBIHsNCiAgICBIQVJEV0FSRV9DT1VOVEVSX1RZUEUgVHlwZTsNCiAg
ICBEV09SRCBSZXNlcnZlZDsNCiAgICBEV09SRDY0IFZhbHVlOw0KfSBIQVJEV0FSRV9DT1VOVEVS
X0RBVEEsICpQSEFSRFdBUkVfQ09VTlRFUl9EQVRBOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BF
UkZPUk1BTkNFX0RBVEEgew0KICAgIFdPUkQgICBTaXplOw0KICAgIEJZVEUgIFZlcnNpb247DQog
ICAgQllURSAgSHdDb3VudGVyc0NvdW50Ow0KICAgIERXT1JEIENvbnRleHRTd2l0Y2hDb3VudDsN
CiAgICBEV09SRDY0IFdhaXRSZWFzb25CaXRNYXA7DQogICAgRFdPUkQ2NCBDeWNsZVRpbWU7DQog
ICAgRFdPUkQgUmV0cnlDb3VudDsNCiAgICBEV09SRCBSZXNlcnZlZDsNCiAgICBIQVJEV0FSRV9D
T1VOVEVSX0RBVEEgSHdDb3VudGVyc1sxNl07DQp9IFBFUkZPUk1BTkNFX0RBVEEsICpQUEVSRk9S
TUFOQ0VfREFUQTsNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxNDg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KI2xp
bmUgMjE0ODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfRVZFTlRMT0dSRUNPUkQg
ew0KICAgIERXT1JEICBMZW5ndGg7ICAgICAgICANCiAgICBEV09SRCAgUmVzZXJ2ZWQ7ICAgICAg
DQogICAgRFdPUkQgIFJlY29yZE51bWJlcjsgIA0KICAgIERXT1JEICBUaW1lR2VuZXJhdGVkOyAN
CiAgICBEV09SRCAgVGltZVdyaXR0ZW47ICAgDQogICAgRFdPUkQgIEV2ZW50SUQ7DQogICAgV09S
RCAgIEV2ZW50VHlwZTsNCiAgICBXT1JEICAgTnVtU3RyaW5nczsNCiAgICBXT1JEICAgRXZlbnRD
YXRlZ29yeTsNCiAgICBXT1JEICAgUmVzZXJ2ZWRGbGFnczsgDQogICAgRFdPUkQgIENsb3NpbmdS
ZWNvcmROdW1iZXI7IA0KICAgIERXT1JEICBTdHJpbmdPZmZzZXQ7ICANCiAgICBEV09SRCAgVXNl
clNpZExlbmd0aDsNCiAgICBEV09SRCAgVXNlclNpZE9mZnNldDsNCiAgICBEV09SRCAgRGF0YUxl
bmd0aDsNCiAgICBEV09SRCAgRGF0YU9mZnNldDsgICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQp9IEVWRU5UTE9HUkVD
T1JELCAqUEVWRU5UTE9HUkVDT1JEOw0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gp
DQojbGluZSAyMTU3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZSA6IDQyMDApIA0KDQpzdHJ1Y3QgX0VWRU5UU0ZPUkxPR0ZJTEU7DQp0eXBlZGVmIHN0cnVj
dCBfRVZFTlRTRk9STE9HRklMRSBFVkVOVFNGT1JMT0dGSUxFLCAqUEVWRU5UU0ZPUkxPR0ZJTEU7
DQoNCnN0cnVjdCBfUEFDS0VERVZFTlRJTkZPOw0KdHlwZWRlZiBzdHJ1Y3QgX1BBQ0tFREVWRU5U
SU5GTyBQQUNLRURFVkVOVElORk8sICpQUEFDS0VERVZFTlRJTkZPOw0KDQoNCg0Kc3RydWN0IF9F
VkVOVFNGT1JMT0dGSUxFDQp7DQogICAgRFdPUkQgICAgICAgICAgIHVsU2l6ZTsNCiAgICBXQ0hB
UiAgICAgICAgICAgc3pMb2dpY2FsTG9nRmlsZVsyNTZdOyAgICAgICAgDQogICAgRFdPUkQgICAg
ICAgICAgIHVsTnVtUmVjb3JkczsNCiAgICBFVkVOVExPR1JFQ09SRCAgcEV2ZW50TG9nUmVjb3Jk
c1tdOw0KfTsNCg0Kc3RydWN0IF9QQUNLRURFVkVOVElORk8NCnsNCiAgICBEV09SRCAgICAgICAg
ICAgICAgIHVsU2l6ZTsgIA0KICAgIERXT1JEICAgICAgICAgICAgICAgdWxOdW1FdmVudHNGb3JM
b2dGaWxlOyANCiAgICBEV09SRCAgICAgICAgICAgICAgIHVsT2Zmc2V0c1tdOyAgICAgICAgICAg
DQp9Ow0KDQojbGluZSAyMTU5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KI3ByYWdtYSB3
YXJuaW5nKHBvcCkNCg0KDQojbGluZSAyMTYwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBfQ01fU0VSVklDRV9OT0RFX1RZUEUgew0KICAgIERy
aXZlclR5cGUgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDEsDQogICAgRmlsZVN5c3RlbVR5cGUg
ICAgICAgICAgID0gMHgwMDAwMDAwMiwNCiAgICBXaW4zMlNlcnZpY2VPd25Qcm9jZXNzICAgPSAw
eDAwMDAwMDEwLA0KICAgIFdpbjMyU2VydmljZVNoYXJlUHJvY2VzcyA9IDB4MDAwMDAwMjAsDQog
ICAgQWRhcHRlclR5cGUgICAgICAgICAgICAgID0gMHgwMDAwMDAwNCwNCiAgICBSZWNvZ25pemVy
VHlwZSAgICAgICAgICAgPSAweDAwMDAwMDA4DQp9IFNFUlZJQ0VfTk9ERV9UWVBFOw0KDQp0eXBl
ZGVmIGVudW0gX0NNX1NFUlZJQ0VfTE9BRF9UWVBFIHsNCiAgICBCb290TG9hZCAgICA9IDB4MDAw
MDAwMDAsDQogICAgU3lzdGVtTG9hZCAgPSAweDAwMDAwMDAxLA0KICAgIEF1dG9Mb2FkICAgID0g
MHgwMDAwMDAwMiwNCiAgICBEZW1hbmRMb2FkICA9IDB4MDAwMDAwMDMsDQogICAgRGlzYWJsZUxv
YWQgPSAweDAwMDAwMDA0DQp9IFNFUlZJQ0VfTE9BRF9UWVBFOw0KDQp0eXBlZGVmIGVudW0gX0NN
X0VSUk9SX0NPTlRST0xfVFlQRSB7DQogICAgSWdub3JlRXJyb3IgICA9IDB4MDAwMDAwMDAsDQog
ICAgTm9ybWFsRXJyb3IgICA9IDB4MDAwMDAwMDEsDQogICAgU2V2ZXJlRXJyb3IgICA9IDB4MDAw
MDAwMDIsDQogICAgQ3JpdGljYWxFcnJvciA9IDB4MDAwMDAwMDMNCn0gU0VSVklDRV9FUlJPUl9U
WVBFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVEFQRV9FUkFT
RSB7DQogICAgRFdPUkQgVHlwZTsNCiAgICBCT09MRUFOIEltbWVkaWF0ZTsNCn0gVEFQRV9FUkFT
RSwgKlBUQVBFX0VSQVNFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1RBUEVfUFJFUEFSRSB7DQogICAgRFdPUkQgT3BlcmF0aW9uOw0KICAgIEJPT0xFQU4gSW1tZWRp
YXRlOw0KfSBUQVBFX1BSRVBBUkUsICpQVEFQRV9QUkVQQVJFOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfVEFQRV9XUklURV9NQVJLUyB7DQogICAgRFdPUkQgVHlwZTsNCiAg
ICBEV09SRCBDb3VudDsNCiAgICBCT09MRUFOIEltbWVkaWF0ZTsNCn0gVEFQRV9XUklURV9NQVJL
UywgKlBUQVBFX1dSSVRFX01BUktTOw0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1RBUEVfR0VUX1BPU0lUSU9OIHsNCiAgICBEV09SRCBUeXBlOw0KICAgIERXT1JEIFBhcnRpdGlv
bjsNCiAgICBMQVJHRV9JTlRFR0VSIE9mZnNldDsNCn0gVEFQRV9HRVRfUE9TSVRJT04sICpQVEFQ
RV9HRVRfUE9TSVRJT047DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYg
c3RydWN0IF9UQVBFX1NFVF9QT1NJVElPTiB7DQogICAgRFdPUkQgTWV0aG9kOw0KICAgIERXT1JE
IFBhcnRpdGlvbjsNCiAgICBMQVJHRV9JTlRFR0VSIE9mZnNldDsNCiAgICBCT09MRUFOIEltbWVk
aWF0ZTsNCn0gVEFQRV9TRVRfUE9TSVRJT04sICpQVEFQRV9TRVRfUE9TSVRJT047DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBfVEFQRV9HRVRfRFJJVkVfUEFSQU1FVEVSUyB7DQogICAgQk9PTEVBTiBFQ0M7
DQogICAgQk9PTEVBTiBDb21wcmVzc2lvbjsNCiAgICBCT09MRUFOIERhdGFQYWRkaW5nOw0KICAg
IEJPT0xFQU4gUmVwb3J0U2V0bWFya3M7DQogICAgRFdPUkQgRGVmYXVsdEJsb2NrU2l6ZTsNCiAg
ICBEV09SRCBNYXhpbXVtQmxvY2tTaXplOw0KICAgIERXT1JEIE1pbmltdW1CbG9ja1NpemU7DQog
ICAgRFdPUkQgTWF4aW11bVBhcnRpdGlvbkNvdW50Ow0KICAgIERXT1JEIEZlYXR1cmVzTG93Ow0K
ICAgIERXT1JEIEZlYXR1cmVzSGlnaDsNCiAgICBEV09SRCBFT1RXYXJuaW5nWm9uZVNpemU7DQp9
IFRBUEVfR0VUX0RSSVZFX1BBUkFNRVRFUlMsICpQVEFQRV9HRVRfRFJJVkVfUEFSQU1FVEVSUzsN
Cg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVEFQRV9TRVRfRFJJVkVfUEFSQU1FVEVSUyB7DQog
ICAgQk9PTEVBTiBFQ0M7DQogICAgQk9PTEVBTiBDb21wcmVzc2lvbjsNCiAgICBCT09MRUFOIERh
dGFQYWRkaW5nOw0KICAgIEJPT0xFQU4gUmVwb3J0U2V0bWFya3M7DQogICAgRFdPUkQgRU9UV2Fy
bmluZ1pvbmVTaXplOw0KfSBUQVBFX1NFVF9EUklWRV9QQVJBTUVURVJTLCAqUFRBUEVfU0VUX0RS
SVZFX1BBUkFNRVRFUlM7DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RBUEVfR0VUX01FRElB
X1BBUkFNRVRFUlMgew0KICAgIExBUkdFX0lOVEVHRVIgQ2FwYWNpdHk7DQogICAgTEFSR0VfSU5U
RUdFUiBSZW1haW5pbmc7DQogICAgRFdPUkQgQmxvY2tTaXplOw0KICAgIERXT1JEIFBhcnRpdGlv
bkNvdW50Ow0KICAgIEJPT0xFQU4gV3JpdGVQcm90ZWN0ZWQ7DQp9IFRBUEVfR0VUX01FRElBX1BB
UkFNRVRFUlMsICpQVEFQRV9HRVRfTUVESUFfUEFSQU1FVEVSUzsNCg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBfVEFQRV9TRVRfTUVESUFfUEFSQU1FVEVSUyB7DQogICAgRFdPUkQgQmxvY2tTaXpl
Ow0KfSBUQVBFX1NFVF9NRURJQV9QQVJBTUVURVJTLCAqUFRBUEVfU0VUX01FRElBX1BBUkFNRVRF
UlM7DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVEFQRV9DUkVBVEVfUEFSVElU
SU9OIHsNCiAgICBEV09SRCBNZXRob2Q7DQogICAgRFdPUkQgQ291bnQ7DQogICAgRFdPUkQgU2l6
ZTsNCn0gVEFQRV9DUkVBVEVfUEFSVElUSU9OLCAqUFRBUEVfQ1JFQVRFX1BBUlRJVElPTjsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVEFQRV9XTUlfT1BFUkFUSU9OUyB7
DQogICBEV09SRCBNZXRob2Q7DQogICBEV09SRCBEYXRhQnVmZmVyU2l6ZTsNCiAgIFBWT0lEIERh
dGFCdWZmZXI7DQp9IFRBUEVfV01JX09QRVJBVElPTlMsICpQVEFQRV9XTUlfT1BFUkFUSU9OUzsN
Cg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9UQVBFX0RSSVZFX1BST0JMRU1fVFlQRSB7DQogICBUYXBl
RHJpdmVQcm9ibGVtTm9uZSwgVGFwZURyaXZlUmVhZFdyaXRlV2FybmluZywNCiAgIFRhcGVEcml2
ZVJlYWRXcml0ZUVycm9yLCBUYXBlRHJpdmVSZWFkV2FybmluZywNCiAgIFRhcGVEcml2ZVdyaXRl
V2FybmluZywgVGFwZURyaXZlUmVhZEVycm9yLA0KICAgVGFwZURyaXZlV3JpdGVFcnJvciwgVGFw
ZURyaXZlSGFyZHdhcmVFcnJvciwNCiAgIFRhcGVEcml2ZVVuc3VwcG9ydGVkTWVkaWEsIFRhcGVE
cml2ZVNjc2lDb25uZWN0aW9uRXJyb3IsDQogICBUYXBlRHJpdmVUaW1ldG9DbGVhbiwgVGFwZURy
aXZlQ2xlYW5Ecml2ZU5vdywNCiAgIFRhcGVEcml2ZU1lZGlhTGlmZUV4cGlyZWQsIFRhcGVEcml2
ZVNuYXBwZWRUYXBlDQp9IFRBUEVfRFJJVkVfUFJPQkxFTV9UWVBFOw0KDQojbGluZSAyMjE3OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyMjE4
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxr
dG10eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIHsNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGt0bXR5cGVzLmgiDQoNCg0K
I3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODIwKSANCiNs
aW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGt0bXR5cGVzLmgiDQoNCnR5cGVkZWYgR1VJRCBVT1cs
ICpQVU9XOw0KdHlwZWRlZiBHVUlEIENSTV9QUk9UT0NPTF9JRCwgKlBDUk1fUFJPVE9DT0xfSUQ7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUxPTkcg
Tk9USUZJQ0FUSU9OX01BU0s7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVFJBTlNBQ1RJT05fTk9USUZJQ0FUSU9OIHsN
CiAgICBQVk9JRCAgICAgICAgIFRyYW5zYWN0aW9uS2V5Ow0KICAgIFVMT05HICAgICAgICAgVHJh
bnNhY3Rpb25Ob3RpZmljYXRpb247DQogICAgTEFSR0VfSU5URUdFUiBUbVZpcnR1YWxDbG9jazsN
CiAgICBVTE9ORyAgICAgICAgIEFyZ3VtZW50TGVuZ3RoOw0KfSBUUkFOU0FDVElPTl9OT1RJRklD
QVRJT04sICpQVFJBTlNBQ1RJT05fTk9USUZJQ0FUSU9OOw0KDQp0eXBlZGVmIHN0cnVjdCBfVFJB
TlNBQ1RJT05fTk9USUZJQ0FUSU9OX1JFQ09WRVJZX0FSR1VNRU5UIHsNCiAgICBHVUlEICAgRW5s
aXN0bWVudElkOw0KICAgIFVPVyAgICBVT1c7DQp9IFRSQU5TQUNUSU9OX05PVElGSUNBVElPTl9S
RUNPVkVSWV9BUkdVTUVOVCwgKlBUUkFOU0FDVElPTl9OT1RJRklDQVRJT05fUkVDT1ZFUllfQVJH
VU1FTlQ7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVFJBTlNBQ1RJT05fTk9USUZJQ0FUSU9OX1RN
X09OTElORV9BUkdVTUVOVCB7DQogICAgR1VJRCBUbUlkZW50aXR5Ow0KICAgIFVMT05HIEZsYWdz
Ow0KfSBUUkFOU0FDVElPTl9OT1RJRklDQVRJT05fVE1fT05MSU5FX0FSR1VNRU5ULCAqUFRSQU5T
QUNUSU9OX05PVElGSUNBVElPTl9UTV9PTkxJTkVfQVJHVU1FTlQ7DQoNCnR5cGVkZWYgVUxPTkcg
U0FWRVBPSU5UX0lELCAqUFNBVkVQT0lOVF9JRDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RSQU5TQUNU
SU9OX05PVElGSUNBVElPTl9TQVZFUE9JTlRfQVJHVU1FTlQgew0KICAgIFNBVkVQT0lOVF9JRCBT
YXZlcG9pbnRJZDsNCn0gVFJBTlNBQ1RJT05fTk9USUZJQ0FUSU9OX1NBVkVQT0lOVF9BUkdVTUVO
VCwgKlBUUkFOU0FDVElPTl9OT1RJRklDQVRJT05fU0FWRVBPSU5UX0FSR1VNRU5UOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfVFJBTlNBQ1RJT05fTk9USUZJQ0FUSU9OX1BST1BBR0FURV9BUkdVTUVOVCB7
DQogICAgVUxPTkcgUHJvcGFnYXRpb25Db29raWU7DQogICAgR1VJRCAgVU9XOw0KICAgIEdVSUQg
IFRtSWRlbnRpdHk7DQogICAgVUxPTkcgQnVmZmVyTGVuZ3RoOw0KICAgIA0KfSBUUkFOU0FDVElP
Tl9OT1RJRklDQVRJT05fUFJPUEFHQVRFX0FSR1VNRU5ULCAqUFRSQU5TQUNUSU9OX05PVElGSUNB
VElPTl9QUk9QQUdBVEVfQVJHVU1FTlQ7DQoNCnR5cGVkZWYgc3RydWN0IF9UUkFOU0FDVElPTl9O
T1RJRklDQVRJT05fTUFSU0hBTF9BUkdVTUVOVCB7DQogICAgVUxPTkcgTWFyc2hhbENvb2tpZTsN
CiAgICBHVUlEICBVT1c7DQp9IFRSQU5TQUNUSU9OX05PVElGSUNBVElPTl9NQVJTSEFMX0FSR1VN
RU5ULCAqUFRSQU5TQUNUSU9OX05PVElGSUNBVElPTl9NQVJTSEFMX0FSR1VNRU5UOw0KDQp0eXBl
ZGVmIFRSQU5TQUNUSU9OX05PVElGSUNBVElPTl9QUk9QQUdBVEVfQVJHVU1FTlQgVFJBTlNBQ1RJ
T05fTk9USUZJQ0FUSU9OX1BST01PVEVfQVJHVU1FTlQsICpQVFJBTlNBQ1RJT05fTk9USUZJQ0FU
SU9OX1BST01PVEVfQVJHVU1FTlQ7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9LQ1JN
X01BUlNIQUxfSEVBREVSIHsNCiAgICBVTE9ORyAgICAgICAgICAgICAgVmVyc2lvbk1ham9yOw0K
ICAgIFVMT05HICAgICAgICAgICAgICBWZXJzaW9uTWlub3I7DQogICAgVUxPTkcgICAgICAgICAg
ICAgIE51bVByb3RvY29sczsNCiAgICBVTE9ORyAgICAgICAgICAgICAgVW51c2VkOyAgICAgICAg
DQp9IEtDUk1fTUFSU0hBTF9IRUFERVIsICpQS0NSTV9NQVJTSEFMX0hFQURFUiwgKiBQUktDUk1f
TUFSU0hBTF9IRUFERVI7DQoNCnR5cGVkZWYgc3RydWN0IF9LQ1JNX1RSQU5TQUNUSU9OX0JMT0Ig
ew0KICAgIFVPVyAgICAgICAgICAgICAgICBVT1c7DQogICAgR1VJRCAgICAgICAgICAgICAgIFRt
SWRlbnRpdHk7DQogICAgVUxPTkcgICAgICAgICAgICAgIElzb2xhdGlvbkxldmVsOw0KICAgIFVM
T05HICAgICAgICAgICAgICBJc29sYXRpb25GbGFnczsNCiAgICBVTE9ORyAgICAgICAgICAgICAg
VGltZW91dDsNCiAgICBXQ0hBUiAgICAgICAgICAgICAgRGVzY3JpcHRpb25bNjRdOw0KfSBLQ1JN
X1RSQU5TQUNUSU9OX0JMT0IsICpQS0NSTV9UUkFOU0FDVElPTl9CTE9CLCAqIFBSS0NSTV9UUkFO
U0FDVElPTl9CTE9COw0KDQp0eXBlZGVmIHN0cnVjdCBfS0NSTV9QUk9UT0NPTF9CTE9CIHsNCiAg
ICBDUk1fUFJPVE9DT0xfSUQgICAgUHJvdG9jb2xJZDsNCiAgICAgIFVMT05HIFN0YXRpY0luZm9M
ZW5ndGg7DQogICAgVUxPTkcgICAgICAgICAgICAgIFRyYW5zYWN0aW9uSWRJbmZvTGVuZ3RoOyAN
CiAgICBVTE9ORyAgICAgICAgICAgICAgVW51c2VkMTsgICAgICAgIA0KICAgIFVMT05HICAgICAg
ICAgICAgICBVbnVzZWQyOyAgICAgICAgDQp9IEtDUk1fUFJPVE9DT0xfQkxPQiwgKlBLQ1JNX1BS
T1RPQ09MX0JMT0IsICogUFJLQ1JNX1BST1RPQ09MX0JMT0I7DQoNCg0KI3ByYWdtYSB3YXJuaW5n
KHBvcCkNCiNsaW5lIDIxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxrdG10eXBlcy5oIg0KDQoNCn0NCiNs
aW5lIDIxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxrdG10eXBlcy5oIg0KDQojbGluZSAyMTYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxca3RtdHlwZXMuaCINCiNsaW5lIDIyMTg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQu
aCINCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4
MjApIA0KI2xpbmUgMjIxOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9U
UkFOU0FDVElPTl9PVVRDT01FIHsNCiAgICBUcmFuc2FjdGlvbk91dGNvbWVVbmRldGVybWluZWQg
PSAxLA0KICAgIFRyYW5zYWN0aW9uT3V0Y29tZUNvbW1pdHRlZCwNCiAgICBUcmFuc2FjdGlvbk91
dGNvbWVBYm9ydGVkLA0KfSBUUkFOU0FDVElPTl9PVVRDT01FOw0KDQoNCnR5cGVkZWYgZW51bSBf
VFJBTlNBQ1RJT05fU1RBVEUgew0KICAgIFRyYW5zYWN0aW9uU3RhdGVOb3JtYWwgPSAxLA0KICAg
IFRyYW5zYWN0aW9uU3RhdGVJbmRvdWJ0LA0KICAgIFRyYW5zYWN0aW9uU3RhdGVDb21taXR0ZWRO
b3RpZnksDQp9IFRSQU5TQUNUSU9OX1NUQVRFOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9UUkFOU0FD
VElPTl9CQVNJQ19JTkZPUk1BVElPTiB7DQogICAgR1VJRCAgICBUcmFuc2FjdGlvbklkOw0KICAg
IERXT1JEICAgU3RhdGU7DQogICAgRFdPUkQgICBPdXRjb21lOw0KfSBUUkFOU0FDVElPTl9CQVNJ
Q19JTkZPUk1BVElPTiwgKlBUUkFOU0FDVElPTl9CQVNJQ19JTkZPUk1BVElPTjsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1RSQU5TQUNUSU9OTUFOQUdFUl9CQVNJQ19JTkZPUk1BVElPTiB7DQogICAgR1VJ
RCAgICBUbUlkZW50aXR5Ow0KICAgIExBUkdFX0lOVEVHRVIgVmlydHVhbENsb2NrOw0KfSBUUkFO
U0FDVElPTk1BTkFHRVJfQkFTSUNfSU5GT1JNQVRJT04sICpQVFJBTlNBQ1RJT05NQU5BR0VSX0JB
U0lDX0lORk9STUFUSU9OOw0KDQp0eXBlZGVmIHN0cnVjdCBfVFJBTlNBQ1RJT05NQU5BR0VSX0xP
R19JTkZPUk1BVElPTiB7DQogICAgR1VJRCAgTG9nSWRlbnRpdHk7DQp9IFRSQU5TQUNUSU9OTUFO
QUdFUl9MT0dfSU5GT1JNQVRJT04sICpQVFJBTlNBQ1RJT05NQU5BR0VSX0xPR19JTkZPUk1BVElP
TjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RSQU5TQUNUSU9OTUFOQUdFUl9MT0dQQVRIX0lORk9STUFU
SU9OIHsNCiAgICBEV09SRCBMb2dQYXRoTGVuZ3RoOw0KICAgICAgV0NIQVIgTG9nUGF0aFsxXTsg
DQoNCn0gVFJBTlNBQ1RJT05NQU5BR0VSX0xPR1BBVEhfSU5GT1JNQVRJT04sICpQVFJBTlNBQ1RJ
T05NQU5BR0VSX0xPR1BBVEhfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYgc3RydWN0IF9UUkFOU0FD
VElPTk1BTkFHRVJfUkVDT1ZFUllfSU5GT1JNQVRJT04gew0KICAgIFVMT05HTE9ORyAgTGFzdFJl
Y292ZXJlZExzbjsNCn0gVFJBTlNBQ1RJT05NQU5BR0VSX1JFQ09WRVJZX0lORk9STUFUSU9OLCAq
UFRSQU5TQUNUSU9OTUFOQUdFUl9SRUNPVkVSWV9JTkZPUk1BVElPTjsNCg0KDQoNCnR5cGVkZWYg
c3RydWN0IF9UUkFOU0FDVElPTk1BTkFHRVJfT0xERVNUX0lORk9STUFUSU9OIHsNCiAgICBHVUlE
IE9sZGVzdFRyYW5zYWN0aW9uR3VpZDsNCn0gVFJBTlNBQ1RJT05NQU5BR0VSX09MREVTVF9JTkZP
Uk1BVElPTiwgKlBUUkFOU0FDVElPTk1BTkFHRVJfT0xERVNUX0lORk9STUFUSU9OOw0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgX1RSQU5TQUNUSU9OX1BST1BFUlRJRVNfSU5GT1JNQVRJT04gew0KICAg
IERXT1JEICAgICAgICAgICAgICBJc29sYXRpb25MZXZlbDsNCiAgICBEV09SRCAgICAgICAgICAg
ICAgSXNvbGF0aW9uRmxhZ3M7DQogICAgTEFSR0VfSU5URUdFUiAgICAgIFRpbWVvdXQ7DQogICAg
RFdPUkQgICAgICAgICAgICAgIE91dGNvbWU7DQogICAgRFdPUkQgICAgICAgICAgICAgIERlc2Ny
aXB0aW9uTGVuZ3RoOw0KICAgIFdDSEFSICAgICAgICAgICAgICBEZXNjcmlwdGlvblsxXTsgICAg
ICAgICAgICANCg0KfSBUUkFOU0FDVElPTl9QUk9QRVJUSUVTX0lORk9STUFUSU9OLCAqUFRSQU5T
QUNUSU9OX1BST1BFUlRJRVNfSU5GT1JNQVRJT047DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVFJB
TlNBQ1RJT05fQklORF9JTkZPUk1BVElPTiB7DQogICAgSEFORExFIFRtSGFuZGxlOw0KfSBUUkFO
U0FDVElPTl9CSU5EX0lORk9STUFUSU9OLCAqUFRSQU5TQUNUSU9OX0JJTkRfSU5GT1JNQVRJT047
DQoNCnR5cGVkZWYgc3RydWN0IF9UUkFOU0FDVElPTl9FTkxJU1RNRU5UX1BBSVIgew0KICAgIEdV
SUQgICBFbmxpc3RtZW50SWQ7DQogICAgR1VJRCAgIFJlc291cmNlTWFuYWdlcklkOw0KfSBUUkFO
U0FDVElPTl9FTkxJU1RNRU5UX1BBSVIsICpQVFJBTlNBQ1RJT05fRU5MSVNUTUVOVF9QQUlSOw0K
DQp0eXBlZGVmIHN0cnVjdCBfVFJBTlNBQ1RJT05fRU5MSVNUTUVOVFNfSU5GT1JNQVRJT04gew0K
ICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZkVubGlzdG1lbnRzOw0KICAg
IFRSQU5TQUNUSU9OX0VOTElTVE1FTlRfUEFJUiBFbmxpc3RtZW50UGFpclsxXTsgDQp9IFRSQU5T
QUNUSU9OX0VOTElTVE1FTlRTX0lORk9STUFUSU9OLCAqUFRSQU5TQUNUSU9OX0VOTElTVE1FTlRT
X0lORk9STUFUSU9OOw0KDQp0eXBlZGVmIHN0cnVjdCBfVFJBTlNBQ1RJT05fU1VQRVJJT1JfRU5M
SVNUTUVOVF9JTkZPUk1BVElPTiB7DQogICAgVFJBTlNBQ1RJT05fRU5MSVNUTUVOVF9QQUlSIFN1
cGVyaW9yRW5saXN0bWVudFBhaXI7DQp9IFRSQU5TQUNUSU9OX1NVUEVSSU9SX0VOTElTVE1FTlRf
SU5GT1JNQVRJT04sICpQVFJBTlNBQ1RJT05fU1VQRVJJT1JfRU5MSVNUTUVOVF9JTkZPUk1BVElP
TjsNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUkVTT1VSQ0VNQU5BR0VSX0JBU0lDX0lORk9STUFUSU9O
IHsNCiAgICBHVUlEICAgIFJlc291cmNlTWFuYWdlcklkOw0KICAgIERXT1JEICAgRGVzY3JpcHRp
b25MZW5ndGg7DQogICAgV0NIQVIgICBEZXNjcmlwdGlvblsxXTsgICAgICAgICAgICANCn0gUkVT
T1VSQ0VNQU5BR0VSX0JBU0lDX0lORk9STUFUSU9OLCAqUFJFU09VUkNFTUFOQUdFUl9CQVNJQ19J
TkZPUk1BVElPTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JFU09VUkNFTUFOQUdFUl9DT01QTEVUSU9O
X0lORk9STUFUSU9OIHsNCiAgICBIQU5ETEUgICAgSW9Db21wbGV0aW9uUG9ydEhhbmRsZTsNCiAg
ICBVTE9OR19QVFIgQ29tcGxldGlvbktleTsNCn0gUkVTT1VSQ0VNQU5BR0VSX0NPTVBMRVRJT05f
SU5GT1JNQVRJT04sICpQUkVTT1VSQ0VNQU5BR0VSX0NPTVBMRVRJT05fSU5GT1JNQVRJT047DQoN
Cg0KDQoNCnR5cGVkZWYgZW51bSBfVFJBTlNBQ1RJT05fSU5GT1JNQVRJT05fQ0xBU1Mgew0KICAg
IFRyYW5zYWN0aW9uQmFzaWNJbmZvcm1hdGlvbiwNCiAgICBUcmFuc2FjdGlvblByb3BlcnRpZXNJ
bmZvcm1hdGlvbiwNCiAgICBUcmFuc2FjdGlvbkVubGlzdG1lbnRJbmZvcm1hdGlvbiwNCiAgICBU
cmFuc2FjdGlvblN1cGVyaW9yRW5saXN0bWVudEluZm9ybWF0aW9uDQoNCiAgICAsDQoNCg0KICAg
IFRyYW5zYWN0aW9uQmluZEluZm9ybWF0aW9uLCANCiAgICBUcmFuc2FjdGlvbkRUQ1ByaXZhdGVJ
bmZvcm1hdGlvbiANCiAgICAsDQoNCn0gVFJBTlNBQ1RJT05fSU5GT1JNQVRJT05fQ0xBU1M7DQoN
Cg0KdHlwZWRlZiBlbnVtIF9UUkFOU0FDVElPTk1BTkFHRVJfSU5GT1JNQVRJT05fQ0xBU1Mgew0K
ICAgIFRyYW5zYWN0aW9uTWFuYWdlckJhc2ljSW5mb3JtYXRpb24sDQogICAgVHJhbnNhY3Rpb25N
YW5hZ2VyTG9nSW5mb3JtYXRpb24sDQogICAgVHJhbnNhY3Rpb25NYW5hZ2VyTG9nUGF0aEluZm9y
bWF0aW9uLA0KICAgIFRyYW5zYWN0aW9uTWFuYWdlclJlY292ZXJ5SW5mb3JtYXRpb24gPSA0DQoN
CiAgICAsDQoNCg0KDQogICAgVHJhbnNhY3Rpb25NYW5hZ2VyT25saW5lUHJvYmVJbmZvcm1hdGlv
biA9IDMsDQogICAgVHJhbnNhY3Rpb25NYW5hZ2VyT2xkZXN0VHJhbnNhY3Rpb25JbmZvcm1hdGlv
biA9IDUNCg0KDQoNCn0gVFJBTlNBQ1RJT05NQU5BR0VSX0lORk9STUFUSU9OX0NMQVNTOw0KDQoN
Cg0KdHlwZWRlZiBlbnVtIF9SRVNPVVJDRU1BTkFHRVJfSU5GT1JNQVRJT05fQ0xBU1Mgew0KICAg
IFJlc291cmNlTWFuYWdlckJhc2ljSW5mb3JtYXRpb24sDQogICAgUmVzb3VyY2VNYW5hZ2VyQ29t
cGxldGlvbkluZm9ybWF0aW9uLA0KfSBSRVNPVVJDRU1BTkFHRVJfSU5GT1JNQVRJT05fQ0xBU1M7
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0VOTElTVE1FTlRfQkFTSUNfSU5GT1JNQVRJT04gew0KICAg
IEdVSUQgICAgRW5saXN0bWVudElkOw0KICAgIEdVSUQgICAgVHJhbnNhY3Rpb25JZDsNCiAgICBH
VUlEICAgIFJlc291cmNlTWFuYWdlcklkOw0KfSBFTkxJU1RNRU5UX0JBU0lDX0lORk9STUFUSU9O
LCAqUEVOTElTVE1FTlRfQkFTSUNfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYgc3RydWN0IF9FTkxJ
U1RNRU5UX0NSTV9JTkZPUk1BVElPTiB7DQogICAgR1VJRCAgIENybVRyYW5zYWN0aW9uTWFuYWdl
cklkOw0KICAgIEdVSUQgICBDcm1SZXNvdXJjZU1hbmFnZXJJZDsNCiAgICBHVUlEICAgQ3JtRW5s
aXN0bWVudElkOw0KfSBFTkxJU1RNRU5UX0NSTV9JTkZPUk1BVElPTiwgKlBFTkxJU1RNRU5UX0NS
TV9JTkZPUk1BVElPTjsNCg0KDQoNCnR5cGVkZWYgZW51bSBfRU5MSVNUTUVOVF9JTkZPUk1BVElP
Tl9DTEFTUyB7DQogICAgRW5saXN0bWVudEJhc2ljSW5mb3JtYXRpb24sDQogICAgRW5saXN0bWVu
dFJlY292ZXJ5SW5mb3JtYXRpb24sDQogICAgRW5saXN0bWVudENybUluZm9ybWF0aW9uDQp9IEVO
TElTVE1FTlRfSU5GT1JNQVRJT05fQ0xBU1M7DQoNCnR5cGVkZWYgc3RydWN0IF9UUkFOU0FDVElP
Tl9MSVNUX0VOVFJZIHsNCiAgICBVT1cgICAgVU9XOw0KfSBUUkFOU0FDVElPTl9MSVNUX0VOVFJZ
LCAqUFRSQU5TQUNUSU9OX0xJU1RfRU5UUlk7DQoNCnR5cGVkZWYgc3RydWN0IF9UUkFOU0FDVElP
Tl9MSVNUX0lORk9STUFUSU9OIHsNCiAgICBEV09SRCAgIE51bWJlck9mVHJhbnNhY3Rpb25zOw0K
ICAgIFRSQU5TQUNUSU9OX0xJU1RfRU5UUlkgVHJhbnNhY3Rpb25JbmZvcm1hdGlvblsxXTsgDQp9
IFRSQU5TQUNUSU9OX0xJU1RfSU5GT1JNQVRJT04sICpQVFJBTlNBQ1RJT05fTElTVF9JTkZPUk1B
VElPTjsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBfS1RNT0JKRUNUX1RZUEUgew0KDQogICAg
S1RNT0JKRUNUX1RSQU5TQUNUSU9OLA0KICAgIEtUTU9CSkVDVF9UUkFOU0FDVElPTl9NQU5BR0VS
LA0KICAgIEtUTU9CSkVDVF9SRVNPVVJDRV9NQU5BR0VSLA0KICAgIEtUTU9CSkVDVF9FTkxJU1RN
RU5ULA0KICAgIEtUTU9CSkVDVF9JTlZBTElEDQoNCn0gS1RNT0JKRUNUX1RZUEUsICpQS1RNT0JK
RUNUX1RZUEU7DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfS1RNT0JKRUNUX0NV
UlNPUiB7DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIEdVSUQgICAgTGFzdFF1ZXJ5Ow0KDQog
ICAgDQogICAgDQogICAgDQoNCiAgICBEV09SRCAgIE9iamVjdElkQ291bnQ7DQoNCiAgICANCiAg
ICANCiAgICANCg0KICAgIEdVSUQgICAgT2JqZWN0SWRzWzFdOw0KDQp9IEtUTU9CSkVDVF9DVVJT
T1IsICpQS1RNT0JKRUNUX0NVUlNPUjsNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNs
aW5lIDIyNTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQp9DQojbGluZSAyMjU4MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbm50LmgiDQoNCiNsaW5lIDIyNTgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCIN
CnR5cGVkZWYgRFdPUkQgVFBfVkVSU0lPTiwgKlBUUF9WRVJTSU9OOyANCg0KdHlwZWRlZiBzdHJ1
Y3QgX1RQX0NBTExCQUNLX0lOU1RBTkNFIFRQX0NBTExCQUNLX0lOU1RBTkNFLCAqUFRQX0NBTExC
QUNLX0lOU1RBTkNFOw0KDQp0eXBlZGVmIHZvaWQgKF9fc3RkY2FsbCAqUFRQX1NJTVBMRV9DQUxM
QkFDSykoDQogICAgICAgICAgUFRQX0NBTExCQUNLX0lOU1RBTkNFIEluc3RhbmNlLA0KICAgICAg
UFZPSUQgICAgICAgICAgICAgICAgIENvbnRleHQNCiAgICApOw0KDQp0eXBlZGVmIHN0cnVjdCBf
VFBfUE9PTCBUUF9QT09MLCAqUFRQX1BPT0w7IA0KDQp0eXBlZGVmIGVudW0gX1RQX0NBTExCQUNL
X1BSSU9SSVRZIHsNCiAgICBUUF9DQUxMQkFDS19QUklPUklUWV9ISUdILA0KICAgIFRQX0NBTExC
QUNLX1BSSU9SSVRZX05PUk1BTCwNCiAgICBUUF9DQUxMQkFDS19QUklPUklUWV9MT1csDQogICAg
VFBfQ0FMTEJBQ0tfUFJJT1JJVFlfSU5WQUxJRCwNCiAgICBUUF9DQUxMQkFDS19QUklPUklUWV9D
T1VOVCA9IFRQX0NBTExCQUNLX1BSSU9SSVRZX0lOVkFMSUQNCn0gVFBfQ0FMTEJBQ0tfUFJJT1JJ
VFk7DQoNCnR5cGVkZWYgc3RydWN0IF9UUF9QT09MX1NUQUNLX0lORk9STUFUSU9OIHsNCiAgICBT
SVpFX1QgU3RhY2tSZXNlcnZlOw0KICAgIFNJWkVfVCBTdGFja0NvbW1pdDsNCn1UUF9QT09MX1NU
QUNLX0lORk9STUFUSU9OLCAqUFRQX1BPT0xfU1RBQ0tfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYg
c3RydWN0IF9UUF9DTEVBTlVQX0dST1VQIFRQX0NMRUFOVVBfR1JPVVAsICpQVFBfQ0xFQU5VUF9H
Uk9VUDsgDQoNCnR5cGVkZWYgdm9pZCAoX19zdGRjYWxsICpQVFBfQ0xFQU5VUF9HUk9VUF9DQU5D
RUxfQ0FMTEJBQ0spKA0KICAgICAgUFZPSUQgT2JqZWN0Q29udGV4dCwNCiAgICAgIFBWT0lEIENs
ZWFudXBDb250ZXh0DQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfVFBf
Q0FMTEJBQ0tfRU5WSVJPTl9WMyB7DQogICAgVFBfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAg
ICAgICBWZXJzaW9uOw0KICAgIFBUUF9QT09MICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9v
bDsNCiAgICBQVFBfQ0xFQU5VUF9HUk9VUCAgICAgICAgICAgICAgICAgIENsZWFudXBHcm91cDsN
CiAgICBQVFBfQ0xFQU5VUF9HUk9VUF9DQU5DRUxfQ0FMTEJBQ0sgIENsZWFudXBHcm91cENhbmNl
bENhbGxiYWNrOw0KICAgIFBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFjZURs
bDsNCiAgICBzdHJ1Y3QgX0FDVElWQVRJT05fQ09OVEVYVCAgICAgICAgKkFjdGl2YXRpb25Db250
ZXh0Ow0KICAgIFBUUF9TSU1QTEVfQ0FMTEJBQ0sgICAgICAgICAgICAgICAgRmluYWxpemF0aW9u
Q2FsbGJhY2s7DQogICAgdW5pb24gew0KICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmxhZ3M7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBEV09SRCAgICAgICAg
ICAgICAgICAgICAgICBMb25nRnVuY3Rpb24gOiAgMTsNCiAgICAgICAgICAgIERXT1JEICAgICAg
ICAgICAgICAgICAgICAgIFBlcnNpc3RlbnQgICA6ICAxOw0KICAgICAgICAgICAgRFdPUkQgICAg
ICAgICAgICAgICAgICAgICAgUHJpdmF0ZSAgICAgIDogMzA7DQogICAgICAgIH0gczsNCiAgICB9
IHU7DQogICAgVFBfQ0FMTEJBQ0tfUFJJT1JJVFkgICAgICAgICAgICAgICBDYWxsYmFja1ByaW9y
aXR5Ow0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCn0gVFBf
Q0FMTEJBQ0tfRU5WSVJPTl9WMzsNCg0KdHlwZWRlZiBUUF9DQUxMQkFDS19FTlZJUk9OX1YzIFRQ
X0NBTExCQUNLX0VOVklST04sICpQVFBfQ0FMTEJBQ0tfRU5WSVJPTjsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjY2NiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm50LmgiDQoNCg0KDQpfX2ZvcmNlaW5saW5lDQp2b2lkDQpUcEluaXRpYWxpemVDYWxsYmFj
a0Vudmlyb24oDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBDYWxsYmFja0Vudmlyb24NCiAg
ICApDQp7DQoNCg0KDQogICAgQ2FsbGJhY2tFbnZpcm9uLT5WZXJzaW9uID0gMzsNCg0KDQoNCg0K
DQojbGluZSAyMjY4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiAgICBDYWxsYmFja0Vudmly
b24tPlBvb2wgPSAwOw0KICAgIENhbGxiYWNrRW52aXJvbi0+Q2xlYW51cEdyb3VwID0gMDsNCiAg
ICBDYWxsYmFja0Vudmlyb24tPkNsZWFudXBHcm91cENhbmNlbENhbGxiYWNrID0gMDsNCiAgICBD
YWxsYmFja0Vudmlyb24tPlJhY2VEbGwgPSAwOw0KICAgIENhbGxiYWNrRW52aXJvbi0+QWN0aXZh
dGlvbkNvbnRleHQgPSAwOw0KICAgIENhbGxiYWNrRW52aXJvbi0+RmluYWxpemF0aW9uQ2FsbGJh
Y2sgPSAwOw0KICAgIENhbGxiYWNrRW52aXJvbi0+dS5GbGFncyA9IDA7DQoNCg0KDQogICAgQ2Fs
bGJhY2tFbnZpcm9uLT5DYWxsYmFja1ByaW9yaXR5ID0gVFBfQ0FMTEJBQ0tfUFJJT1JJVFlfTk9S
TUFMOw0KICAgIENhbGxiYWNrRW52aXJvbi0+U2l6ZSA9IHNpemVvZihUUF9DQUxMQkFDS19FTlZJ
Uk9OKTsNCg0KI2xpbmUgMjI3MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQp9DQoNCl9fZm9y
Y2VpbmxpbmUNCnZvaWQNClRwU2V0Q2FsbGJhY2tUaHJlYWRwb29sKA0KICAgICAgUFRQX0NBTExC
QUNLX0VOVklST04gQ2FsbGJhY2tFbnZpcm9uLA0KICAgICAgICAgUFRQX1BPT0wgICAgICAgICAg
ICAgUG9vbA0KICAgICkNCnsNCiAgICBDYWxsYmFja0Vudmlyb24tPlBvb2wgPSBQb29sOw0KfQ0K
DQpfX2ZvcmNlaW5saW5lDQp2b2lkDQpUcFNldENhbGxiYWNrQ2xlYW51cEdyb3VwKA0KICAgICAg
IFBUUF9DQUxMQkFDS19FTlZJUk9OICAgICAgICAgICAgICBDYWxsYmFja0Vudmlyb24sDQogICAg
ICAgICAgUFRQX0NMRUFOVVBfR1JPVVAgICAgICAgICAgICAgICAgIENsZWFudXBHcm91cCwNCiAg
ICAgIFBUUF9DTEVBTlVQX0dST1VQX0NBTkNFTF9DQUxMQkFDSyBDbGVhbnVwR3JvdXBDYW5jZWxD
YWxsYmFjaw0KICAgICkNCnsNCiAgICBDYWxsYmFja0Vudmlyb24tPkNsZWFudXBHcm91cCA9IENs
ZWFudXBHcm91cDsNCiAgICBDYWxsYmFja0Vudmlyb24tPkNsZWFudXBHcm91cENhbmNlbENhbGxi
YWNrID0gQ2xlYW51cEdyb3VwQ2FuY2VsQ2FsbGJhY2s7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZv
aWQNClRwU2V0Q2FsbGJhY2tBY3RpdmF0aW9uQ29udGV4dCgNCiAgICAgICBQVFBfQ0FMTEJBQ0tf
RU5WSVJPTiBDYWxsYmFja0Vudmlyb24sDQogICAgICBzdHJ1Y3QgX0FDVElWQVRJT05fQ09OVEVY
VCAqQWN0aXZhdGlvbkNvbnRleHQNCiAgICApDQp7DQogICAgQ2FsbGJhY2tFbnZpcm9uLT5BY3Rp
dmF0aW9uQ29udGV4dCA9IEFjdGl2YXRpb25Db250ZXh0Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp2
b2lkDQpUcFNldENhbGxiYWNrTm9BY3RpdmF0aW9uQ29udGV4dCgNCiAgICAgIFBUUF9DQUxMQkFD
S19FTlZJUk9OIENhbGxiYWNrRW52aXJvbg0KICAgICkNCnsNCiAgICBDYWxsYmFja0Vudmlyb24t
PkFjdGl2YXRpb25Db250ZXh0ID0gKHN0cnVjdCBfQUNUSVZBVElPTl9DT05URVhUICopKExPTkdf
UFRSKSAtMTsgDQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNClRwU2V0Q2FsbGJhY2tMb25nRnVu
Y3Rpb24oDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBDYWxsYmFja0Vudmlyb24NCiAgICAp
DQp7DQogICAgQ2FsbGJhY2tFbnZpcm9uLT51LnMuTG9uZ0Z1bmN0aW9uID0gMTsNCn0NCg0KX19m
b3JjZWlubGluZQ0Kdm9pZA0KVHBTZXRDYWxsYmFja1JhY2VXaXRoRGxsKA0KICAgICAgUFRQX0NB
TExCQUNLX0VOVklST04gQ2FsbGJhY2tFbnZpcm9uLA0KICAgICAgICAgUFZPSUQgICAgICAgICAg
ICAgICAgRGxsSGFuZGxlDQogICAgKQ0Kew0KICAgIENhbGxiYWNrRW52aXJvbi0+UmFjZURsbCA9
IERsbEhhbmRsZTsNCn0NCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KVHBTZXRDYWxsYmFja0ZpbmFs
aXphdGlvbkNhbGxiYWNrKA0KICAgICAgUFRQX0NBTExCQUNLX0VOVklST04gQ2FsbGJhY2tFbnZp
cm9uLA0KICAgICAgICAgUFRQX1NJTVBMRV9DQUxMQkFDSyAgRmluYWxpemF0aW9uQ2FsbGJhY2sN
CiAgICApDQp7DQogICAgQ2FsbGJhY2tFbnZpcm9uLT5GaW5hbGl6YXRpb25DYWxsYmFjayA9IEZp
bmFsaXphdGlvbkNhbGxiYWNrOw0KfQ0KDQoNCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KVHBTZXRD
YWxsYmFja1ByaW9yaXR5KA0KICAgICAgUFRQX0NBTExCQUNLX0VOVklST04gQ2FsbGJhY2tFbnZp
cm9uLA0KICAgICAgICAgVFBfQ0FMTEJBQ0tfUFJJT1JJVFkgUHJpb3JpdHkNCiAgICApDQp7DQog
ICAgQ2FsbGJhY2tFbnZpcm9uLT5DYWxsYmFja1ByaW9yaXR5ID0gUHJpb3JpdHk7DQp9DQoNCiNs
aW5lIDIyNzg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0K
VHBTZXRDYWxsYmFja1BlcnNpc3RlbnQoDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBDYWxs
YmFja0Vudmlyb24NCiAgICApDQp7DQogICAgQ2FsbGJhY2tFbnZpcm9uLT51LnMuUGVyc2lzdGVu
dCA9IDE7DQp9DQoNCg0KX19mb3JjZWlubGluZQ0Kdm9pZA0KVHBEZXN0cm95Q2FsbGJhY2tFbnZp
cm9uKA0KICAgICAgUFRQX0NBTExCQUNLX0VOVklST04gQ2FsbGJhY2tFbnZpcm9uDQogICAgKQ0K
ew0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgKENhbGxiYWNrRW52aXJvbik7
DQp9DQoNCiNsaW5lIDIyODEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQp0eXBlZGVmIHN0
cnVjdCBfVFBfV09SSyBUUF9XT1JLLCAqUFRQX1dPUks7DQoNCnR5cGVkZWYgdm9pZCAoX19zdGRj
YWxsICpQVFBfV09SS19DQUxMQkFDSykoDQogICAgICAgICAgUFRQX0NBTExCQUNLX0lOU1RBTkNF
IEluc3RhbmNlLA0KICAgICAgUFZPSUQgICAgICAgICAgICAgICAgIENvbnRleHQsDQogICAgICAg
ICAgUFRQX1dPUksgICAgICAgICAgICAgIFdvcmsNCiAgICApOw0KDQp0eXBlZGVmIHN0cnVjdCBf
VFBfVElNRVIgVFBfVElNRVIsICpQVFBfVElNRVI7DQoNCnR5cGVkZWYgdm9pZCAoX19zdGRjYWxs
ICpQVFBfVElNRVJfQ0FMTEJBQ0spKA0KICAgICAgICAgIFBUUF9DQUxMQkFDS19JTlNUQU5DRSBJ
bnN0YW5jZSwNCiAgICAgIFBWT0lEICAgICAgICAgICAgICAgICBDb250ZXh0LA0KICAgICAgICAg
IFBUUF9USU1FUiAgICAgICAgICAgICBUaW1lcg0KICAgICk7DQoNCnR5cGVkZWYgRFdPUkQgICAg
VFBfV0FJVF9SRVNVTFQ7DQoNCnR5cGVkZWYgc3RydWN0IF9UUF9XQUlUIFRQX1dBSVQsICpQVFBf
V0FJVDsNCg0KdHlwZWRlZiB2b2lkIChfX3N0ZGNhbGwgKlBUUF9XQUlUX0NBTExCQUNLKSgNCiAg
ICAgICAgICBQVFBfQ0FMTEJBQ0tfSU5TVEFOQ0UgSW5zdGFuY2UsDQogICAgICBQVk9JRCAgICAg
ICAgICAgICAgICAgQ29udGV4dCwNCiAgICAgICAgICBQVFBfV0FJVCAgICAgICAgICAgICAgV2Fp
dCwNCiAgICAgICAgICAgICBUUF9XQUlUX1JFU1VMVCAgICAgICAgV2FpdFJlc3VsdA0KICAgICk7
DQoNCnR5cGVkZWYgc3RydWN0IF9UUF9JTyBUUF9JTywgKlBUUF9JTzsNCg0KDQoNCl9fZm9yY2Vp
bmxpbmUNCnN0cnVjdCBfVEVCICoNCk50Q3VycmVudFRlYiAoDQogICAgdm9pZA0KICAgICkNCg0K
ew0KICAgIHJldHVybiAoc3RydWN0IF9URUIgKilfX3JlYWRnc3F3b3JkKCgoTE9ORykoTE9OR19Q
VFIpJigoKE5UX1RJQiAqKTApLT5TZWxmKSkpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQpQVk9JRA0K
R2V0Q3VycmVudEZpYmVyICgNCiAgICB2b2lkDQogICAgKQ0KDQp7DQoNCiAgICByZXR1cm4gKFBW
T0lEKV9fcmVhZGdzcXdvcmQoKChMT05HKShMT05HX1BUUikmKCgoTlRfVElCICopMCktPkZpYmVy
RGF0YSkpKTsNCn0NCg0KX19mb3JjZWlubGluZQ0KUFZPSUQNCkdldEZpYmVyRGF0YSAoDQogICAg
dm9pZA0KICAgICkNCg0Kew0KDQogICAgcmV0dXJuICooUFZPSUQgKilHZXRDdXJyZW50RmliZXIo
KTsNCn0NCg0KI2xpbmUgMjI4NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDIyOTEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjk0NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjk1OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbm50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjI5
NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5udC5oIg0KDQoNCn0NCiNsaW5lIDIyOTc3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubnQuaCINCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KDQoNCg0KDQojbGluZSAyMjk4
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm50LmgiDQoNCiNsaW5lIDIyOTg3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bnQuaCINCg0KI2xpbmUgMTgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KI2xpbmUg
MTg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQoNCnR5cGVkZWYgVUlOVF9QVFIg
ICAgICAgICAgICBXUEFSQU07DQp0eXBlZGVmIExPTkdfUFRSICAgICAgICAgICAgTFBBUkFNOw0K
dHlwZWRlZiBMT05HX1BUUiAgICAgICAgICAgIExSRVNVTFQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBIQU5ETEUgICAgICAgICAgKlNQSEFORExFOw0K
dHlwZWRlZiBIQU5ETEUgICAgICAgICAgICpMUEhBTkRMRTsNCnR5cGVkZWYgSEFORExFICAgICAg
ICAgICAgICBIR0xPQkFMOw0KdHlwZWRlZiBIQU5ETEUgICAgICAgICAgICAgIEhMT0NBTDsNCnR5
cGVkZWYgSEFORExFICAgICAgICAgICAgICBHTE9CQUxIQU5ETEU7DQp0eXBlZGVmIEhBTkRMRSAg
ICAgICAgICAgICAgTE9DQUxIQU5ETEU7DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNTUpIA0KI2xpbmUgMjIxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XG1pbndpbmRlZi5oIg0KDQoNCnR5cGVkZWYgSU5UX1BUUiAoIF9fc3RkY2FsbCAqRkFSUFJPQyko
KTsNCnR5cGVkZWYgSU5UX1BUUiAoIF9fc3RkY2FsbCAqTkVBUlBST0MpKCk7DQp0eXBlZGVmIElO
VF9QVFIgKF9fc3RkY2FsbCAqUFJPQykoKTsNCg0KDQoNCg0KI2xpbmUgMjMxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXG1pbndpbmRlZi5oIg0KDQoNCg0KDQojbGluZSAyMzYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
bWlud2luZGVmLmgiDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSAyMzkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxcbWlud2luZGVmLmgiDQoNCg0KDQoNCiNsaW5lIDI0NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxtaW53aW5kZWYuaCINCg0KdHlwZWRlZiBXT1JEICAgICAgICAgICAgICAgIEFUT007ICAgDQoN
CnN0cnVjdCBIS0VZX197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0cnVjdCBIS0VZX18gKkhLRVk7
DQp0eXBlZGVmIEhLRVkgKlBIS0VZOw0Kc3RydWN0IEhNRVRBRklMRV9fe2ludCB1bnVzZWQ7fTsg
dHlwZWRlZiBzdHJ1Y3QgSE1FVEFGSUxFX18gKkhNRVRBRklMRTsNCnN0cnVjdCBISU5TVEFOQ0Vf
X3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhJTlNUQU5DRV9fICpISU5TVEFOQ0U7DQp0
eXBlZGVmIEhJTlNUQU5DRSBITU9EVUxFOyAgICAgIA0Kc3RydWN0IEhSR05fX3tpbnQgdW51c2Vk
O307IHR5cGVkZWYgc3RydWN0IEhSR05fXyAqSFJHTjsNCnN0cnVjdCBIUlNSQ19fe2ludCB1bnVz
ZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSFJTUkNfXyAqSFJTUkM7DQpzdHJ1Y3QgSFNQUklURV9fe2lu
dCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSFNQUklURV9fICpIU1BSSVRFOw0Kc3RydWN0IEhM
U1VSRl9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSExTVVJGX18gKkhMU1VSRjsNCnN0
cnVjdCBIU1RSX197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0cnVjdCBIU1RSX18gKkhTVFI7DQpz
dHJ1Y3QgSFRBU0tfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhUQVNLX18gKkhUQVNL
Ow0Kc3RydWN0IEhXSU5TVEFfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhXSU5TVEFf
XyAqSFdJTlNUQTsNCnN0cnVjdCBIS0xfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhL
TF9fICpIS0w7DQoNCg0KdHlwZWRlZiBpbnQgSEZJTEU7DQoNCg0KI2xpbmUgMjY2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9GSUxFVElN
RSB7DQogICAgRFdPUkQgZHdMb3dEYXRlVGltZTsNCiAgICBEV09SRCBkd0hpZ2hEYXRlVGltZTsN
Cn0gRklMRVRJTUUsICpQRklMRVRJTUUsICpMUEZJTEVUSU1FOw0KDQoNCg0KfQ0KI2xpbmUgMjgw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXG1pbndpbmRlZi5oIg0KDQojbGluZSAyODIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcbWlud2luZGVmLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAyODUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcbWlud2luZGVmLmgiDQoNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdp
bmRlZi5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5kZWYu
aCINCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZh
bWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpzdHJ1Y3QgSFdORF9fe2ludCB1bnVzZWQ7fTsgdHlw
ZWRlZiBzdHJ1Y3QgSFdORF9fICpIV05EOw0Kc3RydWN0IEhIT09LX197aW50IHVudXNlZDt9OyB0
eXBlZGVmIHN0cnVjdCBISE9PS19fICpISE9PSzsNCg0KI2xpbmUgNDMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcd2luZGVmLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZGVmLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFw
cGxpY2F0aW9uIEZhbWlseQ0KDQoNCg0KDQp0eXBlZGVmIHZvaWQgKiBIR0RJT0JKOw0KDQoNCiNs
aW5lIDY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmRlZi5oIg0KI2xpbmUgNjggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcd2luZGVmLmgiDQoNCg0Kc3RydWN0IEhBQ0NFTF9fe2ludCB1bnVzZWQ7fTsgdHlwZWRl
ZiBzdHJ1Y3QgSEFDQ0VMX18gKkhBQ0NFTDsNCiNsaW5lIDcyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdp
bmRlZi5oIg0KDQpzdHJ1Y3QgSEJJVE1BUF9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3Qg
SEJJVE1BUF9fICpIQklUTUFQOw0Kc3RydWN0IEhCUlVTSF9fe2ludCB1bnVzZWQ7fTsgdHlwZWRl
ZiBzdHJ1Y3QgSEJSVVNIX18gKkhCUlVTSDsNCiNsaW5lIDc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdp
bmRlZi5oIg0KDQpzdHJ1Y3QgSENPTE9SU1BBQ0VfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3Ry
dWN0IEhDT0xPUlNQQUNFX18gKkhDT0xPUlNQQUNFOw0KI2xpbmUgNzkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcd2luZGVmLmgiDQoNCnN0cnVjdCBIRENfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0
IEhEQ19fICpIREM7DQojbGluZSA4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5kZWYuaCINCnN0cnVj
dCBIR0xSQ19fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSEdMUkNfXyAqSEdMUkM7ICAg
ICAgICAgIA0Kc3RydWN0IEhERVNLX197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0cnVjdCBIREVT
S19fICpIREVTSzsNCnN0cnVjdCBIRU5ITUVUQUZJTEVfX3tpbnQgdW51c2VkO307IHR5cGVkZWYg
c3RydWN0IEhFTkhNRVRBRklMRV9fICpIRU5ITUVUQUZJTEU7DQoNCnN0cnVjdCBIRk9OVF9fe2lu
dCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSEZPTlRfXyAqSEZPTlQ7DQojbGluZSA4OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFx3aW5kZWYuaCINCnN0cnVjdCBISUNPTl9fe2ludCB1bnVzZWQ7fTsgdHlw
ZWRlZiBzdHJ1Y3QgSElDT05fXyAqSElDT047DQoNCnN0cnVjdCBITUVOVV9fe2ludCB1bnVzZWQ7
fTsgdHlwZWRlZiBzdHJ1Y3QgSE1FTlVfXyAqSE1FTlU7DQojbGluZSA5MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFx3aW5kZWYuaCINCg0Kc3RydWN0IEhQQUxFVFRFX197aW50IHVudXNlZDt9OyB0eXBlZGVm
IHN0cnVjdCBIUEFMRVRURV9fICpIUEFMRVRURTsNCnN0cnVjdCBIUEVOX197aW50IHVudXNlZDt9
OyB0eXBlZGVmIHN0cnVjdCBIUEVOX18gKkhQRU47DQojbGluZSA5NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFx3aW5kZWYuaCINCg0KDQpzdHJ1Y3QgSFdJTkVWRU5USE9PS19fe2ludCB1bnVzZWQ7fTsgdHlw
ZWRlZiBzdHJ1Y3QgSFdJTkVWRU5USE9PS19fICpIV0lORVZFTlRIT09LOw0KI2xpbmUgMTAwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXHdpbmRlZi5oIg0KDQojbGluZSAxMDIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
d2luZGVmLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBs
aWNhdGlvbiBGYW1pbHkNCg0KDQpzdHJ1Y3QgSE1PTklUT1JfX3tpbnQgdW51c2VkO307IHR5cGVk
ZWYgc3RydWN0IEhNT05JVE9SX18gKkhNT05JVE9SOw0KDQojbGluZSAxMTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcd2luZGVmLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxcd2luZGVmLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0K
c3RydWN0IEhVTVBEX197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0cnVjdCBIVU1QRF9fICpIVU1Q
RDsNCg0KI2xpbmUgMTIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmRlZi5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI2xpbmUgMTI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmRlZi5oIg0KDQojcHJhZ21h
IHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQoNCnR5cGVkZWYgSElDT04gSENVUlNPUjsg
ICAgICANCg0KDQojbGluZSAxMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZGVmLmgiDQoNCnR5cGVk
ZWYgRFdPUkQgICBDT0xPUlJFRjsNCg0KI2xpbmUgMTM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmRl
Zi5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQp0eXBlZGVmIERXT1JEICAgKkxQQ09MT1JSRUY7DQoNCg0KDQojbGluZSAxNDkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcd2luZGVmLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnUkVDVA0Kew0KICAgIExPTkcgICAgbGVmdDsNCiAgICBMT05HICAgIHRvcDsNCiAgICBMT05H
ICAgIHJpZ2h0Ow0KICAgIExPTkcgICAgYm90dG9tOw0KfSBSRUNULCAqUFJFQ1QsICAqTlBSRUNU
LCAgKkxQUkVDVDsNCg0KdHlwZWRlZiBjb25zdCBSRUNUICogTFBDUkVDVDsNCg0KdHlwZWRlZiBz
dHJ1Y3QgX1JFQ1RMICAgICAgIA0Kew0KICAgIExPTkcgICAgbGVmdDsNCiAgICBMT05HICAgIHRv
cDsNCiAgICBMT05HICAgIHJpZ2h0Ow0KICAgIExPTkcgICAgYm90dG9tOw0KfSBSRUNUTCwgKlBS
RUNUTCwgKkxQUkVDVEw7DQoNCnR5cGVkZWYgY29uc3QgUkVDVEwgKiBMUENSRUNUTDsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnUE9JTlQNCnsNCiAgICBMT05HICB4Ow0KICAgIExPTkcgIHk7DQp9IFBP
SU5ULCAqUFBPSU5ULCAgKk5QUE9JTlQsICAqTFBQT0lOVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BP
SU5UTCAgICAgIA0Kew0KICAgIExPTkcgIHg7DQogICAgTE9ORyAgeTsNCn0gUE9JTlRMLCAqUFBP
SU5UTDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnU0laRQ0Kew0KICAgIExPTkcgICAgICAgIGN4Ow0K
ICAgIExPTkcgICAgICAgIGN5Ow0KfSBTSVpFLCAqUFNJWkUsICpMUFNJWkU7DQoNCnR5cGVkZWYg
U0laRSAgICAgICAgICAgICAgIFNJWkVMOw0KdHlwZWRlZiBTSVpFICAgICAgICAgICAgICAgKlBT
SVpFTCwgKkxQU0laRUw7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ1BPSU5UUw0Kew0KDQogICAgU0hP
UlQgICB4Ow0KICAgIFNIT1JUICAgeTsNCg0KDQoNCiNsaW5lIDIwNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFx3aW5kZWYuaCINCn0gUE9JTlRTLCAqUFBPSU5UUywgKkxQUE9JTlRTOw0KDQoNCnR5cGVkZWYg
c3RydWN0IEFQUF9MT0NBTF9ERVZJQ0VfSUQNCnsNCiAgICBCWVRFIHZhbHVlWzMyXTsNCn0gQVBQ
X0xPQ0FMX0RFVklDRV9JRDsNCg0KI2xpbmUgMjEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdpbmRlZi5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCn0NCiNsaW5lIDI0OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFx3aW5kZWYuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0K
DQpzdHJ1Y3QgRFBJX0FXQVJFTkVTU19DT05URVhUX197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0
cnVjdCBEUElfQVdBUkVORVNTX0NPTlRFWFRfXyAqRFBJX0FXQVJFTkVTU19DT05URVhUOw0KDQp0
eXBlZGVmIGVudW0gRFBJX0FXQVJFTkVTUyB7DQogICAgRFBJX0FXQVJFTkVTU19JTlZBTElEICAg
ICAgICAgICA9IC0xLA0KICAgIERQSV9BV0FSRU5FU1NfVU5BV0FSRSAgICAgICAgICAgPSAwLA0K
ICAgIERQSV9BV0FSRU5FU1NfU1lTVEVNX0FXQVJFICAgICAgPSAxLA0KICAgIERQSV9BV0FSRU5F
U1NfUEVSX01PTklUT1JfQVdBUkUgPSAyDQp9IERQSV9BV0FSRU5FU1M7DQoNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgZW51bSBEUElfSE9TVElOR19CRUhBVklPUiB7DQogICAgRFBJX0hPU1RJTkdfQkVI
QVZJT1JfSU5WQUxJRCAgICAgPSAtMSwNCiAgICBEUElfSE9TVElOR19CRUhBVklPUl9ERUZBVUxU
ICAgICA9IDAsDQogICAgRFBJX0hPU1RJTkdfQkVIQVZJT1JfTUlYRUQgICAgICAgPSAxDQp9IERQ
SV9IT1NUSU5HX0JFSEFWSU9SOw0KDQojbGluZSAyNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZGVm
LmgiDQoNCiNsaW5lIDI4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5kZWYuaCINCg0KI2xpbmUgMTcy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2Uu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5l
IDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MjApIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDY2
OCkgDQojbGluZSAyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOjQwMDEpIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkgDQojcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0MjE0KSANCiNsaW5lIDI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
DQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYXBpc2V0Y2NvbnYuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYXBp
c2V0Y2NvbnYuaCINCiNsaW5lIDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGFwaXNldGNjb252LmgiDQoN
Cg0KDQoNCg0KDQojbGluZSAyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlzZXRjY29udi5oIg0KI2xp
bmUgMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYXBpc2V0Y2NvbnYuaCINCg0KDQoNCg0KDQoNCiNsaW5l
IDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXGFwaXNldGNjb252LmgiDQojbGluZSAzNSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxhcGlzZXRjY29udi5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXGFwaXNldGNjb252LmgiDQojbGluZSA0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlz
ZXRjY29udi5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlz
ZXRjY29udi5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgNjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYXBpc2V0
Y2NvbnYuaCINCiNsaW5lIDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGFwaXNldGNjb252LmgiDQoNCg0K
DQoNCg0KDQojbGluZSA2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlzZXRjY29udi5oIg0KI2xpbmUg
NjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxcYXBpc2V0Y2NvbnYuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDc2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXGFwaXNldGNjb252LmgiDQojbGluZSA3NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxhcGlzZXRjY29udi5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgODQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcYXBpc2V0Y2NvbnYuaCINCiNsaW5lIDg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGFwaXNldGNjb252
LmgiDQoNCg0KDQoNCg0KDQojbGluZSA5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlzZXRjY29udi5o
Ig0KI2xpbmUgOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcYXBpc2V0Y2NvbnYuaCINCg0KDQoNCg0KDQoN
CiNsaW5lIDEwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxhcGlzZXRjY29udi5oIg0KI2xpbmUgMTAxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXGFwaXNldGNjb252LmgiDQoNCiNsaW5lIDEwMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxhcGlzZXRjY29udi5oIg0KI2xpbmUgMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWlud2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxNCkNCg0KI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDEwMykNCiNsaW5lIDE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWlud2luYmFzZS5o
Ig0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MjAp
IA0KI2xpbmUgMjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtaW53aW5iYXNlLmgiDQojcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTo0MDAxKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQyMTQpDQojbGluZSAyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1pbndpbmJhc2UuaCIN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWlud2luYmFz
ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TRUNVUklU
WV9BVFRSSUJVVEVTIHsNCiAgICBEV09SRCBuTGVuZ3RoOw0KICAgIExQVk9JRCBscFNlY3VyaXR5
RGVzY3JpcHRvcjsNCiAgICBCT09MIGJJbmhlcml0SGFuZGxlOw0KfSBTRUNVUklUWV9BVFRSSUJV
VEVTLCAqUFNFQ1VSSVRZX0FUVFJJQlVURVMsICpMUFNFQ1VSSVRZX0FUVFJJQlVURVM7DQoNCnR5
cGVkZWYgc3RydWN0IF9PVkVSTEFQUEVEIHsNCiAgICBVTE9OR19QVFIgSW50ZXJuYWw7DQogICAg
VUxPTkdfUFRSIEludGVybmFsSGlnaDsNCiAgICB1bmlvbiB7DQogICAgICAgIHN0cnVjdCB7DQog
ICAgICAgICAgICBEV09SRCBPZmZzZXQ7DQogICAgICAgICAgICBEV09SRCBPZmZzZXRIaWdoOw0K
ICAgICAgICB9IDsNCiAgICAgICAgUFZPSUQgUG9pbnRlcjsNCiAgICB9IDsNCg0KICAgIEhBTkRM
RSAgaEV2ZW50Ow0KfSBPVkVSTEFQUEVELCAqTFBPVkVSTEFQUEVEOw0KDQp0eXBlZGVmIHN0cnVj
dCBfT1ZFUkxBUFBFRF9FTlRSWSB7DQogICAgVUxPTkdfUFRSIGxwQ29tcGxldGlvbktleTsNCiAg
ICBMUE9WRVJMQVBQRUQgbHBPdmVybGFwcGVkOw0KICAgIFVMT05HX1BUUiBJbnRlcm5hbDsNCiAg
ICBEV09SRCBkd051bWJlck9mQnl0ZXNUcmFuc2ZlcnJlZDsNCn0gT1ZFUkxBUFBFRF9FTlRSWSwg
KkxQT1ZFUkxBUFBFRF9FTlRSWTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgc3RydWN0IF9TWVNURU1USU1FIHsNCiAgICBXT1JEIHdZZWFyOw0KICAgIFdPUkQg
d01vbnRoOw0KICAgIFdPUkQgd0RheU9mV2VlazsNCiAgICBXT1JEIHdEYXk7DQogICAgV09SRCB3
SG91cjsNCiAgICBXT1JEIHdNaW51dGU7DQogICAgV09SRCB3U2Vjb25kOw0KICAgIFdPUkQgd01p
bGxpc2Vjb25kczsNCn0gU1lTVEVNVElNRSwgKlBTWVNURU1USU1FLCAqTFBTWVNURU1USU1FOw0K
DQoNCnR5cGVkZWYgc3RydWN0IF9XSU4zMl9GSU5EX0RBVEFBIHsNCiAgICBEV09SRCBkd0ZpbGVB
dHRyaWJ1dGVzOw0KICAgIEZJTEVUSU1FIGZ0Q3JlYXRpb25UaW1lOw0KICAgIEZJTEVUSU1FIGZ0
TGFzdEFjY2Vzc1RpbWU7DQogICAgRklMRVRJTUUgZnRMYXN0V3JpdGVUaW1lOw0KICAgIERXT1JE
IG5GaWxlU2l6ZUhpZ2g7DQogICAgRFdPUkQgbkZpbGVTaXplTG93Ow0KICAgIERXT1JEIGR3UmVz
ZXJ2ZWQwOw0KICAgIERXT1JEIGR3UmVzZXJ2ZWQxOw0KICAgICAgQ0hBUiAgIGNGaWxlTmFtZVsg
MjYwIF07DQogICAgICBDSEFSICAgY0FsdGVybmF0ZUZpbGVOYW1lWyAxNCBdOw0KDQoNCg0KDQoN
Cn0gV0lOMzJfRklORF9EQVRBQSwgKlBXSU4zMl9GSU5EX0RBVEFBLCAqTFBXSU4zMl9GSU5EX0RB
VEFBOw0KdHlwZWRlZiBzdHJ1Y3QgX1dJTjMyX0ZJTkRfREFUQVcgew0KICAgIERXT1JEIGR3Rmls
ZUF0dHJpYnV0ZXM7DQogICAgRklMRVRJTUUgZnRDcmVhdGlvblRpbWU7DQogICAgRklMRVRJTUUg
ZnRMYXN0QWNjZXNzVGltZTsNCiAgICBGSUxFVElNRSBmdExhc3RXcml0ZVRpbWU7DQogICAgRFdP
UkQgbkZpbGVTaXplSGlnaDsNCiAgICBEV09SRCBuRmlsZVNpemVMb3c7DQogICAgRFdPUkQgZHdS
ZXNlcnZlZDA7DQogICAgRFdPUkQgZHdSZXNlcnZlZDE7DQogICAgICBXQ0hBUiAgY0ZpbGVOYW1l
WyAyNjAgXTsNCiAgICAgIFdDSEFSICBjQWx0ZXJuYXRlRmlsZU5hbWVbIDE0IF07DQoNCg0KDQoN
Cg0KfSBXSU4zMl9GSU5EX0RBVEFXLCAqUFdJTjMyX0ZJTkRfREFUQVcsICpMUFdJTjMyX0ZJTkRf
REFUQVc7DQoNCnR5cGVkZWYgV0lOMzJfRklORF9EQVRBVyBXSU4zMl9GSU5EX0RBVEE7DQp0eXBl
ZGVmIFBXSU4zMl9GSU5EX0RBVEFXIFBXSU4zMl9GSU5EX0RBVEE7DQp0eXBlZGVmIExQV0lOMzJf
RklORF9EQVRBVyBMUFdJTjMyX0ZJTkRfREFUQTsNCg0KDQoNCg0KI2xpbmUgMTQ1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbWlud2luYmFzZS5oIg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9GSU5ERVhfSU5GT19MRVZF
TFMgew0KICAgIEZpbmRFeEluZm9TdGFuZGFyZCwNCiAgICBGaW5kRXhJbmZvQmFzaWMsDQogICAg
RmluZEV4SW5mb01heEluZm9MZXZlbA0KfSBGSU5ERVhfSU5GT19MRVZFTFM7DQoNCg0KDQoNCg0K
I2xpbmUgMTU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWlud2luYmFzZS5oIg0KDQp0eXBlZGVmIGVudW0gX0ZJ
TkRFWF9TRUFSQ0hfT1BTIHsNCiAgICBGaW5kRXhTZWFyY2hOYW1lTWF0Y2gsDQogICAgRmluZEV4
U2VhcmNoTGltaXRUb0RpcmVjdG9yaWVzLA0KICAgIEZpbmRFeFNlYXJjaExpbWl0VG9EZXZpY2Vz
LA0KICAgIEZpbmRFeFNlYXJjaE1heFNlYXJjaE9wDQp9IEZJTkRFWF9TRUFSQ0hfT1BTOw0KI2xp
bmUgMTY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWlud2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
NzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtaW53aW5iYXNlLmgiDQojbGluZSAxNzYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
aW53aW5iYXNlLmgiDQoNCnR5cGVkZWYgZW51bSBfR0VUX0ZJTEVFWF9JTkZPX0xFVkVMUyB7DQog
ICAgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLA0KICAgIEdldEZpbGVFeE1heEluZm9MZXZlbA0KfSBH
RVRfRklMRUVYX0lORk9fTEVWRUxTOw0KDQoNCnR5cGVkZWYgZW51bSBfRklMRV9JTkZPX0JZX0hB
TkRMRV9DTEFTUyB7DQogICAgRmlsZUJhc2ljSW5mbywNCiAgICBGaWxlU3RhbmRhcmRJbmZvLA0K
ICAgIEZpbGVOYW1lSW5mbywNCiAgICBGaWxlUmVuYW1lSW5mbywNCiAgICBGaWxlRGlzcG9zaXRp
b25JbmZvLA0KICAgIEZpbGVBbGxvY2F0aW9uSW5mbywNCiAgICBGaWxlRW5kT2ZGaWxlSW5mbywN
CiAgICBGaWxlU3RyZWFtSW5mbywNCiAgICBGaWxlQ29tcHJlc3Npb25JbmZvLA0KICAgIEZpbGVB
dHRyaWJ1dGVUYWdJbmZvLA0KICAgIEZpbGVJZEJvdGhEaXJlY3RvcnlJbmZvLA0KICAgIEZpbGVJ
ZEJvdGhEaXJlY3RvcnlSZXN0YXJ0SW5mbywNCiAgICBGaWxlSW9Qcmlvcml0eUhpbnRJbmZvLA0K
ICAgIEZpbGVSZW1vdGVQcm90b2NvbEluZm8sDQogICAgRmlsZUZ1bGxEaXJlY3RvcnlJbmZvLA0K
ICAgIEZpbGVGdWxsRGlyZWN0b3J5UmVzdGFydEluZm8sDQoNCg0KDQoNCg0KDQojbGluZSAyMDcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxtaW53aW5iYXNlLmgiDQoNCg0KDQojbGluZSAyMTEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxtaW53aW5iYXNlLmgiDQoNCg0KDQojbGluZSAyMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtaW53aW5iYXNl
LmgiDQogICAgTWF4aW11bUZpbGVJbmZvQnlIYW5kbGVDbGFzcw0KfSBGSUxFX0lORk9fQllfSEFO
RExFX0NMQVNTLCAqUEZJTEVfSU5GT19CWV9IQU5ETEVfQ0xBU1M7DQojbGluZSAyMTggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxtaW53aW5iYXNlLmgiDQoNCnR5cGVkZWYgUlRMX0NSSVRJQ0FMX1NFQ1RJT04gQ1JJ
VElDQUxfU0VDVElPTjsNCnR5cGVkZWYgUFJUTF9DUklUSUNBTF9TRUNUSU9OIFBDUklUSUNBTF9T
RUNUSU9OOw0KdHlwZWRlZiBQUlRMX0NSSVRJQ0FMX1NFQ1RJT04gTFBDUklUSUNBTF9TRUNUSU9O
Ow0KDQp0eXBlZGVmIFJUTF9DUklUSUNBTF9TRUNUSU9OX0RFQlVHIENSSVRJQ0FMX1NFQ1RJT05f
REVCVUc7DQp0eXBlZGVmIFBSVExfQ1JJVElDQUxfU0VDVElPTl9ERUJVRyBQQ1JJVElDQUxfU0VD
VElPTl9ERUJVRzsNCnR5cGVkZWYgUFJUTF9DUklUSUNBTF9TRUNUSU9OX0RFQlVHIExQQ1JJVElD
QUxfU0VDVElPTl9ERUJVRzsNCg0KdHlwZWRlZg0Kdm9pZA0KKF9fc3RkY2FsbCAqTFBPVkVSTEFQ
UEVEX0NPTVBMRVRJT05fUk9VVElORSkoDQogICAgICAgICBEV09SRCBkd0Vycm9yQ29kZSwNCiAg
ICAgICAgIERXT1JEIGR3TnVtYmVyT2ZCeXRlc1RyYW5zZmVyZWQsDQogICAgICBMUE9WRVJMQVBQ
RUQgbHBPdmVybGFwcGVkDQogICAgKTsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST0NFU1Nf
SEVBUF9FTlRSWSB7DQogICAgUFZPSUQgbHBEYXRhOw0KICAgIERXT1JEIGNiRGF0YTsNCiAgICBC
WVRFIGNiT3ZlcmhlYWQ7DQogICAgQllURSBpUmVnaW9uSW5kZXg7DQogICAgV09SRCB3RmxhZ3M7
DQogICAgdW5pb24gew0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgSEFORExFIGhNZW07
DQogICAgICAgICAgICBEV09SRCBkd1Jlc2VydmVkWyAzIF07DQogICAgICAgIH0gQmxvY2s7DQog
ICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBEV09SRCBkd0NvbW1pdHRlZFNpemU7DQogICAg
ICAgICAgICBEV09SRCBkd1VuQ29tbWl0dGVkU2l6ZTsNCiAgICAgICAgICAgIExQVk9JRCBscEZp
cnN0QmxvY2s7DQogICAgICAgICAgICBMUFZPSUQgbHBMYXN0QmxvY2s7DQogICAgICAgIH0gUmVn
aW9uOw0KICAgIH0gOw0KfSBQUk9DRVNTX0hFQVBfRU5UUlksICpMUFBST0NFU1NfSEVBUF9FTlRS
WSwgKlBQUk9DRVNTX0hFQVBfRU5UUlk7DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1JFQVNPTl9DT05URVhUIHsNCiAgICBVTE9ORyBWZXJzaW9uOw0KICAgIERXT1JEIEZsYWdzOw0K
ICAgIHVuaW9uIHsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIEhNT0RVTEUgTG9jYWxp
emVkUmVhc29uTW9kdWxlOw0KICAgICAgICAgICAgVUxPTkcgTG9jYWxpemVkUmVhc29uSWQ7DQog
ICAgICAgICAgICBVTE9ORyBSZWFzb25TdHJpbmdDb3VudDsNCiAgICAgICAgICAgIExQV1NUUiAq
UmVhc29uU3RyaW5nczsNCg0KICAgICAgICB9IERldGFpbGVkOw0KDQogICAgICAgIExQV1NUUiBT
aW1wbGVSZWFzb25TdHJpbmc7DQogICAgfSBSZWFzb247DQp9IFJFQVNPTl9DT05URVhULCAqUFJF
QVNPTl9DT05URVhUOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgRFdPUkQg
KF9fc3RkY2FsbCAqUFRIUkVBRF9TVEFSVF9ST1VUSU5FKSgNCiAgICBMUFZPSUQgbHBUaHJlYWRQ
YXJhbWV0ZXINCiAgICApOw0KdHlwZWRlZiBQVEhSRUFEX1NUQVJUX1JPVVRJTkUgTFBUSFJFQURf
U1RBUlRfUk9VVElORTsNCg0KdHlwZWRlZiBMUFZPSUQgKF9fc3RkY2FsbCAqUEVOQ0xBVkVfUk9V
VElORSkoDQogICAgTFBWT0lEIGxwVGhyZWFkUGFyYW1ldGVyDQogICAgKTsNCnR5cGVkZWYgUEVO
Q0xBVkVfUk9VVElORSBMUEVOQ0xBVkVfUk9VVElORTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0VYQ0VQ
VElPTl9ERUJVR19JTkZPIHsNCiAgICBFWENFUFRJT05fUkVDT1JEIEV4Y2VwdGlvblJlY29yZDsN
CiAgICBEV09SRCBkd0ZpcnN0Q2hhbmNlOw0KfSBFWENFUFRJT05fREVCVUdfSU5GTywgKkxQRVhD
RVBUSU9OX0RFQlVHX0lORk87DQoNCnR5cGVkZWYgc3RydWN0IF9DUkVBVEVfVEhSRUFEX0RFQlVH
X0lORk8gew0KICAgIEhBTkRMRSBoVGhyZWFkOw0KICAgIExQVk9JRCBscFRocmVhZExvY2FsQmFz
ZTsNCiAgICBMUFRIUkVBRF9TVEFSVF9ST1VUSU5FIGxwU3RhcnRBZGRyZXNzOw0KfSBDUkVBVEVf
VEhSRUFEX0RFQlVHX0lORk8sICpMUENSRUFURV9USFJFQURfREVCVUdfSU5GTzsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX0NSRUFURV9QUk9DRVNTX0RFQlVHX0lORk8gew0KICAgIEhBTkRMRSBoRmlsZTsN
CiAgICBIQU5ETEUgaFByb2Nlc3M7DQogICAgSEFORExFIGhUaHJlYWQ7DQogICAgTFBWT0lEIGxw
QmFzZU9mSW1hZ2U7DQogICAgRFdPUkQgZHdEZWJ1Z0luZm9GaWxlT2Zmc2V0Ow0KICAgIERXT1JE
IG5EZWJ1Z0luZm9TaXplOw0KICAgIExQVk9JRCBscFRocmVhZExvY2FsQmFzZTsNCiAgICBMUFRI
UkVBRF9TVEFSVF9ST1VUSU5FIGxwU3RhcnRBZGRyZXNzOw0KICAgIExQVk9JRCBscEltYWdlTmFt
ZTsNCiAgICBXT1JEIGZVbmljb2RlOw0KfSBDUkVBVEVfUFJPQ0VTU19ERUJVR19JTkZPLCAqTFBD
UkVBVEVfUFJPQ0VTU19ERUJVR19JTkZPOw0KDQp0eXBlZGVmIHN0cnVjdCBfRVhJVF9USFJFQURf
REVCVUdfSU5GTyB7DQogICAgRFdPUkQgZHdFeGl0Q29kZTsNCn0gRVhJVF9USFJFQURfREVCVUdf
SU5GTywgKkxQRVhJVF9USFJFQURfREVCVUdfSU5GTzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0VYSVRf
UFJPQ0VTU19ERUJVR19JTkZPIHsNCiAgICBEV09SRCBkd0V4aXRDb2RlOw0KfSBFWElUX1BST0NF
U1NfREVCVUdfSU5GTywgKkxQRVhJVF9QUk9DRVNTX0RFQlVHX0lORk87DQoNCnR5cGVkZWYgc3Ry
dWN0IF9MT0FEX0RMTF9ERUJVR19JTkZPIHsNCiAgICBIQU5ETEUgaEZpbGU7DQogICAgTFBWT0lE
IGxwQmFzZU9mRGxsOw0KICAgIERXT1JEIGR3RGVidWdJbmZvRmlsZU9mZnNldDsNCiAgICBEV09S
RCBuRGVidWdJbmZvU2l6ZTsNCiAgICBMUFZPSUQgbHBJbWFnZU5hbWU7DQogICAgV09SRCBmVW5p
Y29kZTsNCn0gTE9BRF9ETExfREVCVUdfSU5GTywgKkxQTE9BRF9ETExfREVCVUdfSU5GTzsNCg0K
dHlwZWRlZiBzdHJ1Y3QgX1VOTE9BRF9ETExfREVCVUdfSU5GTyB7DQogICAgTFBWT0lEIGxwQmFz
ZU9mRGxsOw0KfSBVTkxPQURfRExMX0RFQlVHX0lORk8sICpMUFVOTE9BRF9ETExfREVCVUdfSU5G
TzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX09VVFBVVF9ERUJVR19TVFJJTkdfSU5GTyB7DQogICAgTFBT
VFIgbHBEZWJ1Z1N0cmluZ0RhdGE7DQogICAgV09SRCBmVW5pY29kZTsNCiAgICBXT1JEIG5EZWJ1
Z1N0cmluZ0xlbmd0aDsNCn0gT1VUUFVUX0RFQlVHX1NUUklOR19JTkZPLCAqTFBPVVRQVVRfREVC
VUdfU1RSSU5HX0lORk87DQoNCnR5cGVkZWYgc3RydWN0IF9SSVBfSU5GTyB7DQogICAgRFdPUkQg
ZHdFcnJvcjsNCiAgICBEV09SRCBkd1R5cGU7DQp9IFJJUF9JTkZPLCAqTFBSSVBfSU5GTzsNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfREVCVUdfRVZFTlQgew0KICAgIERXT1JEIGR3RGVidWdFdmVudENv
ZGU7DQogICAgRFdPUkQgZHdQcm9jZXNzSWQ7DQogICAgRFdPUkQgZHdUaHJlYWRJZDsNCiAgICB1
bmlvbiB7DQogICAgICAgIEVYQ0VQVElPTl9ERUJVR19JTkZPIEV4Y2VwdGlvbjsNCiAgICAgICAg
Q1JFQVRFX1RIUkVBRF9ERUJVR19JTkZPIENyZWF0ZVRocmVhZDsNCiAgICAgICAgQ1JFQVRFX1BS
T0NFU1NfREVCVUdfSU5GTyBDcmVhdGVQcm9jZXNzSW5mbzsNCiAgICAgICAgRVhJVF9USFJFQURf
REVCVUdfSU5GTyBFeGl0VGhyZWFkOw0KICAgICAgICBFWElUX1BST0NFU1NfREVCVUdfSU5GTyBF
eGl0UHJvY2VzczsNCiAgICAgICAgTE9BRF9ETExfREVCVUdfSU5GTyBMb2FkRGxsOw0KICAgICAg
ICBVTkxPQURfRExMX0RFQlVHX0lORk8gVW5sb2FkRGxsOw0KICAgICAgICBPVVRQVVRfREVCVUdf
U1RSSU5HX0lORk8gRGVidWdTdHJpbmc7DQogICAgICAgIFJJUF9JTkZPIFJpcEluZm87DQogICAg
fSB1Ow0KfSBERUJVR19FVkVOVCwgKkxQREVCVUdfRVZFTlQ7DQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgUENPTlRFWFQgTFBDT05URVhUOw0KI2xpbmUgMzg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWlud2luYmFz
ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCn0NCiNsaW5lIDQ1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1pbndpbmJhc2UuaCIN
Cg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KDQoNCg0KDQoNCiNsaW5lIDQ2MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1pbndpbmJhc2UuaCINCiNsaW5lIDQ2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1pbndpbmJh
c2UuaCINCg0KI2xpbmUgNDY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWlud2luYmFzZS5oIg0KDQojbGluZSAz
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcYXBpcXVlcnkyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDEy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcYXBpcXVlcnkyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcYXBpcXVlcnkyLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQojbGlu
ZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXGFwaXF1ZXJ5Mi5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KQk9PTA0KX19zdGRjYWxsDQpJc0FwaVNl
dEltcGxlbWVudGVkKA0KICAgICAgUENTVFIgQ29udHJhY3QNCiAgICApOw0KDQoNCiNsaW5lIDQz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcYXBpcXVlcnkyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNs
aW5lIDQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcYXBpcXVlcnkyLmgiDQoNCiNsaW5lIDUwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcYXBpcXVlcnkyLmgiDQojbGluZSA0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5l
IDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzZW52LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc2Vudi5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzZW52
LmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWls
eSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KU2V0RW52aXJvbm1lbnRTdHJpbmdzVygNCiAgICAgICAgIExQV0NIIE5ld0Vudmlyb25t
ZW50DQogICAgKTsNCg0KDQoNCiNsaW5lIDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc2Vudi5oIg0K
DQojbGluZSA0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3NlbnYuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIFBDIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpHZXRT
dGRIYW5kbGUoDQogICAgICBEV09SRCBuU3RkSGFuZGxlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0U3RkSGFuZGxlKA0KICAgICAgRFdPUkQg
blN0ZEhhbmRsZSwNCiAgICAgIEhBTkRMRSBoSGFuZGxlDQogICAgKTsNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFN0ZEhhbmRsZUV4KA0KICAgICAg
RFdPUkQgblN0ZEhhbmRsZSwNCiAgICAgIEhBTkRMRSBoSGFuZGxlLA0KICAgICAgUEhBTkRMRSBw
aFByZXZWYWx1ZQ0KICAgICk7DQoNCg0KI2xpbmUgNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzZW52
LmgiDQoNCiNsaW5lIDc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc2Vudi5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFBTVFINCl9f
c3RkY2FsbA0KR2V0Q29tbWFuZExpbmVBKA0KICAgIHZvaWQNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkxQV1NUUg0KX19zdGRjYWxsDQpHZXRDb21tYW5kTGluZVcoDQogICAgdm9p
ZA0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc2Vudi5o
Ig0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkxQQ0gNCl9fc3RkY2FsbA0KR2V0RW52aXJv
bm1lbnRTdHJpbmdzKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KTFBXQ0gNCl9fc3RkY2FsbA0KR2V0RW52aXJvbm1lbnRTdHJpbmdzVygNCiAgICB2b2lk
DQogICAgKTsNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3NlbnYu
aCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkZyZWVFbnZpcm9u
bWVudFN0cmluZ3NBKA0KICAgICAgICAgTFBDSCBwZW52DQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkZyZWVFbnZpcm9ubWVudFN0cmluZ3NXKA0KICAg
ICAgICAgTFBXQ0ggcGVudg0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTQ2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxccHJvY2Vzc2Vudi5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0
ZGNhbGwNCkdldEVudmlyb25tZW50VmFyaWFibGVBKA0KICAgICAgTFBDU1RSIGxwTmFtZSwNCiAg
ICAgIExQU1RSIGxwQnVmZmVyLA0KICAgICAgRFdPUkQgblNpemUNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkdldEVudmlyb25tZW50VmFyaWFi
bGVXKA0KICAgICAgTFBDV1NUUiBscE5hbWUsDQogICAgICBMUFdTVFIgbHBCdWZmZXIsDQogICAg
ICBEV09SRCBuU2l6ZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTcyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
cHJvY2Vzc2Vudi5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
U2V0RW52aXJvbm1lbnRWYXJpYWJsZUEoDQogICAgICBMUENTVFIgbHBOYW1lLA0KICAgICAgTFBD
U1RSIGxwVmFsdWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoDQogICAgICBMUENXU1RSIGxwTmFtZSwNCiAg
ICAgIExQQ1dTVFIgbHBWYWx1ZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTk0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccHJvY2Vzc2Vudi5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpf
X3N0ZGNhbGwNCkV4cGFuZEVudmlyb25tZW50U3RyaW5nc0EoDQogICAgICBMUENTVFIgbHBTcmMs
DQogICAgICBMUFNUUiBscERzdCwNCiAgICAgIERXT1JEIG5TaXplDQogICAgKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQogDQpEV09SRA0KX19zdGRjYWxsDQpFeHBhbmRFbnZpcm9ubWVudFN0
cmluZ3NXKA0KICAgICAgTFBDV1NUUiBscFNyYywNCiAgICAgIExQV1NUUiBscERzdCwNCiAgICAg
IERXT1JEIG5TaXplDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAyMjAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9jZXNzZW52LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpT
ZXRDdXJyZW50RGlyZWN0b3J5QSgNCiAgICAgIExQQ1NUUiBscFBhdGhOYW1lDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEN1cnJlbnREaXJlY3Rv
cnlXKA0KICAgICAgTFBDV1NUUiBscFBhdGhOYW1lDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAy
NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzZW52LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0Q3VycmVudERpcmVjdG9yeUEoDQogICAgICBEV09SRCBu
QnVmZmVyTGVuZ3RoLA0KICAgICAgTFBTVFIgbHBCdWZmZXINCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkdldEN1cnJlbnREaXJlY3RvcnlXKA0K
ICAgICAgRFdPUkQgbkJ1ZmZlckxlbmd0aCwNCiAgICAgIExQV1NUUiBscEJ1ZmZlcg0KICAgICk7
DQoNCg0KDQoNCg0KI2xpbmUgMjY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc2Vudi5oIg0KDQojbGlu
ZSAyNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzZW52LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNClNlYXJj
aFBhdGhXKA0KICAgICAgTFBDV1NUUiBscFBhdGgsDQogICAgICBMUENXU1RSIGxwRmlsZU5hbWUs
DQogICAgICBMUENXU1RSIGxwRXh0ZW5zaW9uLA0KICAgICAgRFdPUkQgbkJ1ZmZlckxlbmd0aCwN
CiAgICAgIExQV1NUUiBscEJ1ZmZlciwNCiAgICAgIExQV1NUUiogbHBGaWxlUGFydA0KICAgICk7
DQoNCg0KDQoNCg0KDQojbGluZSAyODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzZW52LmgiDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KU2VhcmNoUGF0aEEoDQogICAg
ICBMUENTVFIgbHBQYXRoLA0KICAgICAgTFBDU1RSIGxwRmlsZU5hbWUsDQogICAgICBMUENTVFIg
bHBFeHRlbnNpb24sDQogICAgICBEV09SRCBuQnVmZmVyTGVuZ3RoLA0KICAgICAgTFBTVFIgbHBC
dWZmZXIsDQogICAgICBMUFNUUiogbHBGaWxlUGFydA0KICAgICk7DQoNCg0KI2xpbmUgMzA0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxccHJvY2Vzc2Vudi5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KTmVlZEN1cnJlbnREaXJlY3RvcnlGb3JFeGVQYXRoQSgNCiAgICAgIExQQ1NU
UiBFeGVOYW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCk5lZWRDdXJyZW50RGlyZWN0b3J5Rm9yRXhlUGF0aFcoDQogICAgICBMUENXU1RSIEV4ZU5h
bWUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDMyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3NlbnYu
aCINCg0KI2xpbmUgMzMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc2Vudi5oIg0KDQojbGluZSAzMzMg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxwcm9jZXNzZW52LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNs
aW5lIDMzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3NlbnYuaCINCg0KI2xpbmUgMzQwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccHJvY2Vzc2Vudi5oIg0KI2xpbmUgNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaWZyb21hcHAuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpZnJvbWFw
cC5oIg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcZmlsZWFwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KQ29tcGFyZUZpbGVUaW1l
KA0KICAgICAgY29uc3QgRklMRVRJTUUqIGxwRmlsZVRpbWUxLA0KICAgICAgY29uc3QgRklMRVRJ
TUUqIGxwRmlsZVRpbWUyDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KQ3JlYXRlRGlyZWN0b3J5QSgNCiAgICAgIExQQ1NUUiBscFBhdGhOYW1lLA0K
ICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0ZURpcmVjdG9y
eVcoDQogICAgICBMUENXU1RSIGxwUGF0aE5hbWUsDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVU
RVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDcxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQojbGluZSA3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9u
ZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
SEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZUZpbGVBKA0KICAgICAgTFBDU1RSIGxwRmlsZU5hbWUs
DQogICAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICBEV09SRCBkd1NoYXJlTW9kZSwN
CiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcywNCiAgICAg
IERXT1JEIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwNCiAgICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRy
aWJ1dGVzLA0KICAgICAgSEFORExFIGhUZW1wbGF0ZUZpbGUNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVGaWxlVygNCiAgICAgIExQQ1dT
VFIgbHBGaWxlTmFtZSwNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIERXT1JE
IGR3U2hhcmVNb2RlLA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRy
aWJ1dGVzLA0KICAgICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLA0KICAgICAgRFdPUkQg
ZHdGbGFnc0FuZEF0dHJpYnV0ZXMsDQogICAgICBIQU5ETEUgaFRlbXBsYXRlRmlsZQ0KICAgICk7
DQoNCg0KDQoNCg0KI2xpbmUgMTA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQojbGluZSAx
MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEZWZpbmVEb3NEZXZpY2VXKA0KICAgICAgRFdP
UkQgZHdGbGFncywNCiAgICAgIExQQ1dTVFIgbHBEZXZpY2VOYW1lLA0KICAgICAgTFBDV1NUUiBs
cFRhcmdldFBhdGgNCiAgICApOw0KDQoNCg0KDQojbGluZSAxMjkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxl
YXBpLmgiDQoNCiNsaW5lIDEzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZh
bWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KRGVsZXRlRmlsZUEoDQogICAgICBMUENTVFIgbHBGaWxlTmFtZQ0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVGaWxlVygNCiAg
ICAgIExQQ1dTVFIgbHBGaWxlTmFtZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTU1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQojbGluZSAxNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KRGVsZXRlVm9sdW1lTW91bnRQb2ludFcoDQogICAgICBMUENXU1RSIGxwc3pWb2x1bWVN
b3VudFBvaW50DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTczICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFw
aS5oIg0KDQojbGluZSAxNzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNCkZpbGVUaW1lVG9Mb2NhbEZpbGVUaW1lKA0KICAgICAgY29uc3QgRklMRVRJTUUqIGxw
RmlsZVRpbWUsDQogICAgICBMUEZJTEVUSU1FIGxwTG9jYWxGaWxlVGltZQ0KICAgICk7DQoNCg0K
I2xpbmUgMTkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
R2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkZpbmRDbG9zZSgNCiAgICAgIEhBTkRMRSBoRmluZEZpbGUNCiAgICApOw0KDQoNCiNsaW5lIDIw
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5kQ2xvc2VDaGFuZ2VOb3RpZmljYXRp
b24oDQogICAgICBIQU5ETEUgaENoYW5nZUhhbmRsZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KRmluZEZpcnN0Q2hhbmdlTm90aWZpY2F0aW9u
QSgNCiAgICAgIExQQ1NUUiBscFBhdGhOYW1lLA0KICAgICAgQk9PTCBiV2F0Y2hTdWJ0cmVlLA0K
ICAgICAgRFdPUkQgZHdOb3RpZnlGaWx0ZXINCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpGaW5kRmlyc3RDaGFuZ2VOb3RpZmljYXRpb25XKA0KICAg
ICAgTFBDV1NUUiBscFBhdGhOYW1lLA0KICAgICAgQk9PTCBiV2F0Y2hTdWJ0cmVlLA0KICAgICAg
RFdPUkQgZHdOb3RpZnlGaWx0ZXINCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDI0MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGZpbGVhcGkuaCINCg0KI2xpbmUgMjQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9y
IE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KSEFORExFDQpfX3N0ZGNhbGwNCkZpbmRGaXJzdEZpbGVBKA0KICAgICAgTFBDU1RSIGxwRmls
ZU5hbWUsDQogICAgICBMUFdJTjMyX0ZJTkRfREFUQUEgbHBGaW5kRmlsZURhdGENCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpGaW5kRmlyc3RGaWxl
VygNCiAgICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAgIExQV0lOMzJfRklORF9EQVRBVyBs
cEZpbmRGaWxlRGF0YQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMjY5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
ZmlsZWFwaS5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2Fs
bA0KRmluZEZpcnN0RmlsZUV4QSgNCiAgICAgIExQQ1NUUiBscEZpbGVOYW1lLA0KICAgICAgRklO
REVYX0lORk9fTEVWRUxTIGZJbmZvTGV2ZWxJZCwNCiAgICAgIExQVk9JRCBscEZpbmRGaWxlRGF0
YSwNCiAgICAgIEZJTkRFWF9TRUFSQ0hfT1BTIGZTZWFyY2hPcCwNCiAgICAgIExQVk9JRCBscFNl
YXJjaEZpbHRlciwNCiAgICAgIERXT1JEIGR3QWRkaXRpb25hbEZsYWdzDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KRmluZEZpcnN0RmlsZUV4VygN
CiAgICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAgIEZJTkRFWF9JTkZPX0xFVkVMUyBmSW5m
b0xldmVsSWQsDQogICAgICBMUFZPSUQgbHBGaW5kRmlsZURhdGEsDQogICAgICBGSU5ERVhfU0VB
UkNIX09QUyBmU2VhcmNoT3AsDQogICAgICBMUFZPSUQgbHBTZWFyY2hGaWx0ZXIsDQogICAgICBE
V09SRCBkd0FkZGl0aW9uYWxGbGFncw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMzAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQojbGluZSAzMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgi
DQoNCiNsaW5lIDMwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEFORExFDQpfX3N0ZGNhbGwNCkZpbmRGaXJzdFZv
bHVtZVcoDQogICAgICBMUFdTVFIgbHBzelZvbHVtZU5hbWUsDQogICAgICBEV09SRCBjY2hCdWZm
ZXJMZW5ndGgNCiAgICApOw0KDQoNCg0KDQojbGluZSAzMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBp
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5kTmV4dENo
YW5nZU5vdGlmaWNhdGlvbigNCiAgICAgIEhBTkRMRSBoQ2hhbmdlSGFuZGxlDQogICAgKTsNCg0K
DQojbGluZSAzMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
R2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkZpbmROZXh0RmlsZUEoDQogICAgICBIQU5ETEUgaEZpbmRGaWxlLA0KICAgICAgTFBXSU4zMl9G
SU5EX0RBVEFBIGxwRmluZEZpbGVEYXRhDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkZpbmROZXh0RmlsZVcoDQogICAgICBIQU5ETEUgaEZpbmRGaWxl
LA0KICAgICAgTFBXSU4zMl9GSU5EX0RBVEFXIGxwRmluZEZpbGVEYXRhDQogICAgKTsNCg0KDQoN
Cg0KDQojbGluZSAzNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCiNsaW5lIDM2MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5kTmV4dFZvbHVtZVcoDQogICAgICBIQU5ETEUg
aEZpbmRWb2x1bWUsDQogICAgICBMUFdTVFIgbHBzelZvbHVtZU5hbWUsDQogICAgICBEV09SRCBj
Y2hCdWZmZXJMZW5ndGgNCiAgICApOw0KDQoNCg0KDQojbGluZSAzNzggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxm
aWxlYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5k
Vm9sdW1lQ2xvc2UoDQogICAgICBIQU5ETEUgaEZpbmRWb2x1bWUNCiAgICApOw0KDQoNCiNsaW5l
IDM4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRmx1c2hG
aWxlQnVmZmVycygNCiAgICAgIEhBTkRMRSBoRmlsZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldERpc2tGcmVlU3BhY2VBKA0KICAgICAgTFBD
U1RSIGxwUm9vdFBhdGhOYW1lLA0KICAgICAgTFBEV09SRCBscFNlY3RvcnNQZXJDbHVzdGVyLA0K
ICAgICAgTFBEV09SRCBscEJ5dGVzUGVyU2VjdG9yLA0KICAgICAgTFBEV09SRCBscE51bWJlck9m
RnJlZUNsdXN0ZXJzLA0KICAgICAgTFBEV09SRCBscFRvdGFsTnVtYmVyT2ZDbHVzdGVycw0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXREaXNrRnJl
ZVNwYWNlVygNCiAgICAgIExQQ1dTVFIgbHBSb290UGF0aE5hbWUsDQogICAgICBMUERXT1JEIGxw
U2VjdG9yc1BlckNsdXN0ZXIsDQogICAgICBMUERXT1JEIGxwQnl0ZXNQZXJTZWN0b3IsDQogICAg
ICBMUERXT1JEIGxwTnVtYmVyT2ZGcmVlQ2x1c3RlcnMsDQogICAgICBMUERXT1JEIGxwVG90YWxO
dW1iZXJPZkNsdXN0ZXJzDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA0MjggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxmaWxlYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpH
ZXREaXNrRnJlZVNwYWNlRXhBKA0KICAgICAgTFBDU1RSIGxwRGlyZWN0b3J5TmFtZSwNCiAgICAg
IFBVTEFSR0VfSU5URUdFUiBscEZyZWVCeXRlc0F2YWlsYWJsZVRvQ2FsbGVyLA0KICAgICAgUFVM
QVJHRV9JTlRFR0VSIGxwVG90YWxOdW1iZXJPZkJ5dGVzLA0KICAgICAgUFVMQVJHRV9JTlRFR0VS
IGxwVG90YWxOdW1iZXJPZkZyZWVCeXRlcw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXREaXNrRnJlZVNwYWNlRXhXKA0KICAgICAgTFBDV1NUUiBs
cERpcmVjdG9yeU5hbWUsDQogICAgICBQVUxBUkdFX0lOVEVHRVIgbHBGcmVlQnl0ZXNBdmFpbGFi
bGVUb0NhbGxlciwNCiAgICAgIFBVTEFSR0VfSU5URUdFUiBscFRvdGFsTnVtYmVyT2ZCeXRlcywN
CiAgICAgIFBVTEFSR0VfSU5URUdFUiBscFRvdGFsTnVtYmVyT2ZGcmVlQnl0ZXMNCiAgICApOw0K
DQoNCg0KDQoNCiNsaW5lIDQ1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCg0KI2xpbmUgNDU2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgc3RydWN0IERJU0tfU1BBQ0VfSU5GT1JNQVRJT04gew0KDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIFVMT05HTE9ORyBBY3R1YWxU
b3RhbEFsbG9jYXRpb25Vbml0czsNCiAgICBVTE9OR0xPTkcgQWN0dWFsQXZhaWxhYmxlQWxsb2Nh
dGlvblVuaXRzOw0KICAgIFVMT05HTE9ORyBBY3R1YWxQb29sVW5hdmFpbGFibGVBbGxvY2F0aW9u
VW5pdHM7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCg0KICAgIFVMT05HTE9ORyBDYWxsZXJUb3RhbEFsbG9jYXRpb25V
bml0czsNCiAgICBVTE9OR0xPTkcgQ2FsbGVyQXZhaWxhYmxlQWxsb2NhdGlvblVuaXRzOw0KICAg
IFVMT05HTE9ORyBDYWxsZXJQb29sVW5hdmFpbGFibGVBbGxvY2F0aW9uVW5pdHM7DQoNCiAgICAN
CiAgICANCiAgICANCg0KICAgIFVMT05HTE9ORyBVc2VkQWxsb2NhdGlvblVuaXRzOw0KDQogICAg
DQogICAgDQogICAgDQoNCiAgICBVTE9OR0xPTkcgVG90YWxSZXNlcnZlZEFsbG9jYXRpb25Vbml0
czsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgVUxPTkdMT05HIFZvbHVtZVN0b3Jh
Z2VSZXNlcnZlQWxsb2NhdGlvblVuaXRzOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICBVTE9OR0xPTkcgQXZh
aWxhYmxlQ29tbWl0dGVkQWxsb2NhdGlvblVuaXRzOw0KDQogICAgDQogICAgDQogICAgDQogICAg
DQoNCiAgICBVTE9OR0xPTkcgUG9vbEF2YWlsYWJsZUFsbG9jYXRpb25Vbml0czsNCg0KICAgIERX
T1JEIFNlY3RvcnNQZXJBbGxvY2F0aW9uVW5pdDsNCiAgICBEV09SRCBCeXRlc1BlclNlY3RvcjsN
Cg0KfSBESVNLX1NQQUNFX0lORk9STUFUSU9OOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhS
RVNVTFQNCl9fc3RkY2FsbA0KR2V0RGlza1NwYWNlSW5mb3JtYXRpb25BKA0KICAgICAgTFBDU1RS
IHJvb3RQYXRoLA0KICAgICAgRElTS19TUEFDRV9JTkZPUk1BVElPTiogZGlza1NwYWNlSW5mbw0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpHZXRE
aXNrU3BhY2VJbmZvcm1hdGlvblcoDQogICAgICBMUENXU1RSIHJvb3RQYXRoLA0KICAgICAgRElT
S19TUEFDRV9JTkZPUk1BVElPTiogZGlza1NwYWNlSW5mbw0KICAgICk7DQoNCg0KDQoNCg0KI2xp
bmUgNTczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQojbGluZSA1NzUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxmaWxlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNh
dGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldERyaXZlVHlwZUEoDQogICAgICBM
UENTVFIgbHBSb290UGF0aE5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJ
TlQNCl9fc3RkY2FsbA0KR2V0RHJpdmVUeXBlVygNCiAgICAgIExQQ1dTVFIgbHBSb290UGF0aE5h
bWUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDU5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCIN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX1dJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgew0KICAgIERXT1JE
IGR3RmlsZUF0dHJpYnV0ZXM7DQogICAgRklMRVRJTUUgZnRDcmVhdGlvblRpbWU7DQogICAgRklM
RVRJTUUgZnRMYXN0QWNjZXNzVGltZTsNCiAgICBGSUxFVElNRSBmdExhc3RXcml0ZVRpbWU7DQog
ICAgRFdPUkQgbkZpbGVTaXplSGlnaDsNCiAgICBEV09SRCBuRmlsZVNpemVMb3c7DQp9IFdJTjMy
X0ZJTEVfQVRUUklCVVRFX0RBVEEsICpMUFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEE7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0RmlsZUF0dHJpYnV0ZXNB
KA0KICAgICAgTFBDU1RSIGxwRmlsZU5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldEZpbGVBdHRyaWJ1dGVzVygNCiAgICAgIExQQ1dTVFIg
bHBGaWxlTmFtZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNjI4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmls
ZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Rmls
ZUF0dHJpYnV0ZXNFeEEoDQogICAgICBMUENTVFIgbHBGaWxlTmFtZSwNCiAgICAgIEdFVF9GSUxF
RVhfSU5GT19MRVZFTFMgZkluZm9MZXZlbElkLA0KICAgICAgTFBWT0lEIGxwRmlsZUluZm9ybWF0
aW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdl
dEZpbGVBdHRyaWJ1dGVzRXhXKA0KICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgR0VU
X0ZJTEVFWF9JTkZPX0xFVkVMUyBmSW5mb0xldmVsSWQsDQogICAgICBMUFZPSUQgbHBGaWxlSW5m
b3JtYXRpb24NCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDY1MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVh
cGkuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX0JZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIHsNCiAg
ICBEV09SRCBkd0ZpbGVBdHRyaWJ1dGVzOw0KICAgIEZJTEVUSU1FIGZ0Q3JlYXRpb25UaW1lOw0K
ICAgIEZJTEVUSU1FIGZ0TGFzdEFjY2Vzc1RpbWU7DQogICAgRklMRVRJTUUgZnRMYXN0V3JpdGVU
aW1lOw0KICAgIERXT1JEIGR3Vm9sdW1lU2VyaWFsTnVtYmVyOw0KICAgIERXT1JEIG5GaWxlU2l6
ZUhpZ2g7DQogICAgRFdPUkQgbkZpbGVTaXplTG93Ow0KICAgIERXT1JEIG5OdW1iZXJPZkxpbmtz
Ow0KICAgIERXT1JEIG5GaWxlSW5kZXhIaWdoOw0KICAgIERXT1JEIG5GaWxlSW5kZXhMb3c7DQp9
IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OLCAqUEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9O
LCAqTFBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTjsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKA0KICAgICAgSEFO
RExFIGhGaWxlLA0KICAgICAgTFBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBscEZpbGVJbmZv
cm1hdGlvbg0KICAgICk7DQoNCg0KI2xpbmUgNjc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpE
V09SRA0KX19zdGRjYWxsDQpHZXRGaWxlU2l6ZSgNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAg
IExQRFdPUkQgbHBGaWxlU2l6ZUhpZ2gNCiAgICApOw0KDQoNCiNsaW5lIDY5MSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KR2V0RmlsZVNpemVFeCgNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAg
ICAgIFBMQVJHRV9JTlRFR0VSIGxwRmlsZVNpemUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0RmlsZVR5cGUoDQogICAgICBIQU5ETEUgaEZp
bGUNCiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEoDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAg
ICBMUFNUUiBscHN6RmlsZVBhdGgsDQogICAgICBEV09SRCBjY2hGaWxlUGF0aCwNCiAgICAgIERX
T1JEIGR3RmxhZ3MNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0
ZGNhbGwNCkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoDQogICAgICBIQU5ETEUgaEZpbGUsDQog
ICAgICBMUFdTVFIgbHBzekZpbGVQYXRoLA0KICAgICAgRFdPUkQgY2NoRmlsZVBhdGgsDQogICAg
ICBEV09SRCBkd0ZsYWdzDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA3NDAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxmaWxlYXBpLmgiDQoNCiNsaW5lIDc0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEZpbGVUaW1lKA0KICAgICAg
SEFORExFIGhGaWxlLA0KICAgICAgTFBGSUxFVElNRSBscENyZWF0aW9uVGltZSwNCiAgICAgIExQ
RklMRVRJTUUgbHBMYXN0QWNjZXNzVGltZSwNCiAgICAgIExQRklMRVRJTUUgbHBMYXN0V3JpdGVU
aW1lDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldEZ1bGxQYXRoTmFtZVcoDQogICAgICBMUENXU1RSIGxwRmlsZU5hbWUsDQogICAgICBE
V09SRCBuQnVmZmVyTGVuZ3RoLA0KICAgICAgTFBXU1RSIGxwQnVmZmVyLA0KICAgICBMUFdTVFIq
IGxwRmlsZVBhcnQNCiAgICApOw0KDQoNCg0KDQojbGluZSA3NjkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxl
YXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0
RnVsbFBhdGhOYW1lQSgNCiAgICAgIExQQ1NUUiBscEZpbGVOYW1lLA0KICAgICAgRFdPUkQgbkJ1
ZmZlckxlbmd0aCwNCiAgICAgIExQU1RSIGxwQnVmZmVyLA0KICAgICBMUFNUUiogbHBGaWxlUGFy
dA0KICAgICk7DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0
ZGNhbGwNCkdldExvZ2ljYWxEcml2ZXMoDQogICAgdm9pZA0KICAgICk7DQoNCg0KI2xpbmUgNzk1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldExvZ2ljYWxEcml2ZVN0cmluZ3NXKA0KICAg
ICAgRFdPUkQgbkJ1ZmZlckxlbmd0aCwNCiAgICAgIExQV1NUUiBscEJ1ZmZlcg0KICAgICk7DQoN
Cg0KDQoNCiNsaW5lIDgxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCg0KI2xpbmUgODE0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQogDQpEV09SRA0KX19zdGRjYWxsDQpHZXRMb25nUGF0aE5hbWVBKA0KICAgICAg
TFBDU1RSIGxwc3pTaG9ydFBhdGgsDQogICAgICBMUFNUUiBscHN6TG9uZ1BhdGgsDQogICAgICBE
V09SRCBjY2hCdWZmZXINCiAgICApOw0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQpEV09SRA0KX19zdGRjYWxsDQpHZXRMb25nUGF0aE5hbWVXKA0KICAgICAgTFBDV1NUUiBs
cHN6U2hvcnRQYXRoLA0KICAgICAgTFBXU1RSIGxwc3pMb25nUGF0aCwNCiAgICAgIERXT1JEIGNj
aEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDg0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGku
aCINCg0KI2xpbmUgODUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFNob3J0UGF0
aE5hbWVXKA0KICAgICAgTFBDV1NUUiBscHN6TG9uZ1BhdGgsDQogICAgICBMUFdTVFIgbHBzelNo
b3J0UGF0aCwNCiAgICAgIERXT1JEIGNjaEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDg2
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCg0KI2xpbmUgODcxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmls
ZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24g
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5U
DQpfX3N0ZGNhbGwNCkdldFRlbXBGaWxlTmFtZVcoDQogICAgICBMUENXU1RSIGxwUGF0aE5hbWUs
DQogICAgICBMUENXU1RSIGxwUHJlZml4U3RyaW5nLA0KICAgICAgVUlOVCB1VW5pcXVlLA0KICAg
ICAgTFBXU1RSIGxwVGVtcEZpbGVOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgODkwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQojbGluZSA4OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRWb2x1bWVJbmZvcm1hdGlvbkJ5SGFuZGxlVygN
CiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIExQV1NUUiBscFZvbHVtZU5hbWVCdWZmZXIsDQog
ICAgICBEV09SRCBuVm9sdW1lTmFtZVNpemUsDQogICAgICBMUERXT1JEIGxwVm9sdW1lU2VyaWFs
TnVtYmVyLA0KICAgICAgTFBEV09SRCBscE1heGltdW1Db21wb25lbnRMZW5ndGgsDQogICAgICBM
UERXT1JEIGxwRmlsZVN5c3RlbUZsYWdzLA0KICAgICAgTFBXU1RSIGxwRmlsZVN5c3RlbU5hbWVC
dWZmZXIsDQogICAgICBEV09SRCBuRmlsZVN5c3RlbU5hbWVTaXplDQogICAgKTsNCg0KDQojbGlu
ZSA5MTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpHZXRWb2x1bWVJbmZvcm1hdGlvblcoDQogICAgICBMUENXU1RSIGxw
Um9vdFBhdGhOYW1lLA0KICAgICAgTFBXU1RSIGxwVm9sdW1lTmFtZUJ1ZmZlciwNCiAgICAgIERX
T1JEIG5Wb2x1bWVOYW1lU2l6ZSwNCiAgICAgIExQRFdPUkQgbHBWb2x1bWVTZXJpYWxOdW1iZXIs
DQogICAgICBMUERXT1JEIGxwTWF4aW11bUNvbXBvbmVudExlbmd0aCwNCiAgICAgIExQRFdPUkQg
bHBGaWxlU3lzdGVtRmxhZ3MsDQogICAgICBMUFdTVFIgbHBGaWxlU3lzdGVtTmFtZUJ1ZmZlciwN
CiAgICAgIERXT1JEIG5GaWxlU3lzdGVtTmFtZVNpemUNCiAgICApOw0KDQoNCg0KDQojbGluZSA5
MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpHZXRWb2x1bWVQYXRoTmFtZVcoDQogICAgICBMUENXU1RSIGxwc3pGaWxl
TmFtZSwNCiAgICAgIExQV1NUUiBscHN6Vm9sdW1lUGF0aE5hbWUsDQogICAgICBEV09SRCBjY2hC
dWZmZXJMZW5ndGgNCiAgICApOw0KDQoNCg0KDQojbGluZSA5NDggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxl
YXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpMb2NhbEZp
bGVUaW1lVG9GaWxlVGltZSgNCiAgICAgIGNvbnN0IEZJTEVUSU1FKiBscExvY2FsRmlsZVRpbWUs
DQogICAgICBMUEZJTEVUSU1FIGxwRmlsZVRpbWUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpMb2NrRmlsZSgNCiAgICAgIEhBTkRMRSBoRmlsZSwN
CiAgICAgIERXT1JEIGR3RmlsZU9mZnNldExvdywNCiAgICAgIERXT1JEIGR3RmlsZU9mZnNldEhp
Z2gsDQogICAgICBEV09SRCBuTnVtYmVyT2ZCeXRlc1RvTG9ja0xvdywNCiAgICAgIERXT1JEIG5O
dW1iZXJPZkJ5dGVzVG9Mb2NrSGlnaA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkxvY2tGaWxlRXgoDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAg
ICBEV09SRCBkd0ZsYWdzLA0KICAgICAgRFdPUkQgZHdSZXNlcnZlZCwNCiAgICAgIERXT1JEIG5O
dW1iZXJPZkJ5dGVzVG9Mb2NrTG93LA0KICAgICAgRFdPUkQgbk51bWJlck9mQnl0ZXNUb0xvY2tI
aWdoLA0KICAgICAgTFBPVkVSTEFQUEVEIGxwT3ZlcmxhcHBlZA0KICAgICk7DQoNCg0KI2xpbmUg
OTg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNClF1ZXJ5RG9zRGV2aWNlVygNCiAgICAgIExQ
Q1dTVFIgbHBEZXZpY2VOYW1lLA0KICAgICAgTFBXU1RSIGxwVGFyZ2V0UGF0aCwNCiAgICAgIERX
T1JEIHVjY2hNYXgNCiAgICApOw0KDQoNCg0KDQojbGluZSAxMDAyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmls
ZWFwaS5oIg0KDQojbGluZSAxMDA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9P
TA0KX19zdGRjYWxsDQpSZWFkRmlsZSgNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgICBMUFZP
SUQgbHBCdWZmZXIsDQogICAgICBEV09SRCBuTnVtYmVyT2ZCeXRlc1RvUmVhZCwNCiAgICAgIExQ
RFdPUkQgbHBOdW1iZXJPZkJ5dGVzUmVhZCwNCiAgICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBw
ZWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxs
DQpSZWFkRmlsZUV4KA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgIExQVk9JRCBscEJ1ZmZl
ciwNCiAgICAgIERXT1JEIG5OdW1iZXJPZkJ5dGVzVG9SZWFkLA0KICAgICAgTFBPVkVSTEFQUEVE
IGxwT3ZlcmxhcHBlZCwNCiAgICAgIExQT1ZFUkxBUFBFRF9DT01QTEVUSU9OX1JPVVRJTkUgbHBD
b21wbGV0aW9uUm91dGluZQ0KICAgICk7DQoNCiAgICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KQk9PTA0KX19zdGRjYWxsDQpSZWFkRmlsZVNjYXR0ZXIoDQogICAgICBIQU5ETEUgaEZpbGUs
DQogICAgICBGSUxFX1NFR01FTlRfRUxFTUVOVCBhU2VnbWVudEFycmF5W10sDQogICAgICBEV09S
RCBuTnVtYmVyT2ZCeXRlc1RvUmVhZCwNCiAgICAgIExQRFdPUkQgbHBSZXNlcnZlZCwNCiAgICAg
IExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZW1vdmVEaXJlY3RvcnlBKA0KICAgICAgTFBDU1RSIGxw
UGF0aE5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KUmVtb3ZlRGlyZWN0b3J5VygNCiAgICAgIExQQ1dTVFIgbHBQYXRoTmFtZQ0KICAgICk7DQoN
Cg0KDQoNCg0KI2xpbmUgMTA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEVuZE9mRmlsZSgNCiAgICAgIEhBTkRM
RSBoRmlsZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNClNldEZpbGVBdHRyaWJ1dGVzQSgNCiAgICAgIExQQ1NUUiBscEZpbGVOYW1lLA0KICAgICAg
RFdPUkQgZHdGaWxlQXR0cmlidXRlcw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpTZXRGaWxlQXR0cmlidXRlc1coDQogICAgICBMUENXU1RSIGxwRmls
ZU5hbWUsDQogICAgICBEV09SRCBkd0ZpbGVBdHRyaWJ1dGVzDQogICAgKTsNCg0KDQoNCg0KDQoj
bGluZSAxMDk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKA0KICAg
ICAgSEFORExFIGhGaWxlLA0KICAgICAgRklMRV9JTkZPX0JZX0hBTkRMRV9DTEFTUyBGaWxlSW5m
b3JtYXRpb25DbGFzcywNCiAgICAgIExQVk9JRCBscEZpbGVJbmZvcm1hdGlvbiwNCiAgICAgIERX
T1JEIGR3QnVmZmVyU2l6ZQ0KICAgICk7DQoNCg0KI2xpbmUgMTExMiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZp
bGVhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpTZXRG
aWxlUG9pbnRlcigNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIExPTkcgbERpc3RhbmNlVG9N
b3ZlLA0KICAgICAgUExPTkcgbHBEaXN0YW5jZVRvTW92ZUhpZ2gsDQogICAgICBEV09SRCBkd01v
dmVNZXRob2QNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpTZXRGaWxlUG9pbnRlckV4KA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTEFSR0Vf
SU5URUdFUiBsaURpc3RhbmNlVG9Nb3ZlLA0KICAgICAgUExBUkdFX0lOVEVHRVIgbHBOZXdGaWxl
UG9pbnRlciwNCiAgICAgIERXT1JEIGR3TW92ZU1ldGhvZA0KICAgICk7DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEZpbGVUaW1lKA0KICAgICAgSEFORExF
IGhGaWxlLA0KICAgICAgY29uc3QgRklMRVRJTUUqIGxwQ3JlYXRpb25UaW1lLA0KICAgICAgY29u
c3QgRklMRVRJTUUqIGxwTGFzdEFjY2Vzc1RpbWUsDQogICAgICBjb25zdCBGSUxFVElNRSogbHBM
YXN0V3JpdGVUaW1lDQogICAgKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNClNldEZpbGVWYWxpZERhdGEoDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAg
ICBMT05HTE9ORyBWYWxpZERhdGFMZW5ndGgNCiAgICApOw0KDQoNCiNsaW5lIDExNTggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxmaWxlYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpVbmxvY2tGaWxlKA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgRFdPUkQgZHdGaWxl
T2Zmc2V0TG93LA0KICAgICAgRFdPUkQgZHdGaWxlT2Zmc2V0SGlnaCwNCiAgICAgIERXT1JEIG5O
dW1iZXJPZkJ5dGVzVG9VbmxvY2tMb3csDQogICAgICBEV09SRCBuTnVtYmVyT2ZCeXRlc1RvVW5s
b2NrSGlnaA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNClVubG9ja0ZpbGVFeCgNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIERXT1JEIGR3UmVz
ZXJ2ZWQsDQogICAgICBEV09SRCBuTnVtYmVyT2ZCeXRlc1RvVW5sb2NrTG93LA0KICAgICAgRFdP
UkQgbk51bWJlck9mQnl0ZXNUb1VubG9ja0hpZ2gsDQogICAgICBMUE9WRVJMQVBQRUQgbHBPdmVy
bGFwcGVkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KV3JpdGVGaWxlKA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTFBDVk9JRCBscEJ1ZmZl
ciwNCiAgICAgIERXT1JEIG5OdW1iZXJPZkJ5dGVzVG9Xcml0ZSwNCiAgICAgIExQRFdPUkQgbHBO
dW1iZXJPZkJ5dGVzV3JpdHRlbiwNCiAgICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQNCiAg
ICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpXcml0ZUZp
bGVFeCgNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIExQQ1ZPSUQgbHBCdWZmZXIsDQogICAg
ICBEV09SRCBuTnVtYmVyT2ZCeXRlc1RvV3JpdGUsDQogICAgICBMUE9WRVJMQVBQRUQgbHBPdmVy
bGFwcGVkLA0KICAgICAgTFBPVkVSTEFQUEVEX0NPTVBMRVRJT05fUk9VVElORSBscENvbXBsZXRp
b25Sb3V0aW5lDQogICAgKTsNCg0KICAgIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCldyaXRlRmlsZUdhdGhlcigNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIEZJ
TEVfU0VHTUVOVF9FTEVNRU5UIGFTZWdtZW50QXJyYXlbXSwNCiAgICAgIERXT1JEIG5OdW1iZXJP
ZkJ5dGVzVG9Xcml0ZSwNCiAgICAgIExQRFdPUkQgbHBSZXNlcnZlZCwNCiAgICAgIExQT1ZFUkxB
UFBFRCBscE92ZXJsYXBwZWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdP
UkQNCl9fc3RkY2FsbA0KR2V0VGVtcFBhdGhXKA0KICAgICAgRFdPUkQgbkJ1ZmZlckxlbmd0aCwN
CiAgICAgIExQV1NUUiBscEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDEyMzEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxmaWxlYXBpLmgiDQoNCiNsaW5lIDEyMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0Vm9sdW1lTmFtZUZvclZvbHVtZU1vdW50UG9pbnRXKA0KICAgICAgTFBDV1NUUiBs
cHN6Vm9sdW1lTW91bnRQb2ludCwNCiAgICAgIExQV1NUUiBscHN6Vm9sdW1lTmFtZSwNCiAgICAg
IERXT1JEIGNjaEJ1ZmZlckxlbmd0aA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDEyNTEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxmaWxlYXBpLmgiDQoNCiNsaW5lIDEyNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0Vm9sdW1lUGF0aE5hbWVzRm9yVm9sdW1lTmFtZVcoDQogICAgICBMUENXU1RSIGxw
c3pWb2x1bWVOYW1lLA0KICAgICAgICAgTFBXQ0ggbHBzelZvbHVtZVBhdGhOYW1lcywNCiAgICAg
IERXT1JEIGNjaEJ1ZmZlckxlbmd0aCwNCiAgICAgIFBEV09SRCBscGNjaFJldHVybkxlbmd0aA0K
ICAgICk7DQoNCg0KDQoNCiNsaW5lIDEyNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCiNs
aW5lIDEyNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCiNsaW5lIDEyNzggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxmaWxlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBs
aWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMDcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCiNsaW5lIDEzMDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBp
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KU2V0RmlsZUlvT3ZlcmxhcHBlZFJhbmdlKA0KICAgICAgSEFORExFIEZpbGVIYW5k
bGUsDQogICAgICBQVUNIQVIgT3ZlcmxhcHBlZFJhbmdlU3RhcnQsDQogICAgICBVTE9ORyBMZW5n
dGgNCiAgICApOw0KDQoNCiNsaW5lIDEzMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldENvbXByZXNzZWRG
aWxlU2l6ZUEoDQogICAgICBMUENTVFIgbHBGaWxlTmFtZSwNCiAgICAgIExQRFdPUkQgbHBGaWxl
U2l6ZUhpZ2gNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldENvbXByZXNzZWRGaWxlU2l6ZVcoDQogICAgICBMUENXU1RSIGxwRmlsZU5hbWUsDQog
ICAgICBMUERXT1JEIGxwRmlsZVNpemVIaWdoDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAxMzUx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KDQojbGluZSAxMzUzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmls
ZWFwaS5oIg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9TVFJFQU1fSU5GT19MRVZFTFMgew0KDQogICAg
RmluZFN0cmVhbUluZm9TdGFuZGFyZCwNCiAgICBGaW5kU3RyZWFtSW5mb01heEluZm9MZXZlbA0K
DQp9IFNUUkVBTV9JTkZPX0xFVkVMUzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1dJTjMyX0ZJTkRfU1RS
RUFNX0RBVEEgew0KDQogICAgTEFSR0VfSU5URUdFUiBTdHJlYW1TaXplOw0KICAgIFdDSEFSIGNT
dHJlYW1OYW1lWyAyNjAgKyAzNiBdOw0KDQp9IFdJTjMyX0ZJTkRfU1RSRUFNX0RBVEEsICpQV0lO
MzJfRklORF9TVFJFQU1fREFUQTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9f
c3RkY2FsbA0KRmluZEZpcnN0U3RyZWFtVygNCiAgICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAg
ICAgIFNUUkVBTV9JTkZPX0xFVkVMUyBJbmZvTGV2ZWwsDQogICAgICBMUFZPSUQgbHBGaW5kU3Ry
ZWFtRGF0YSwNCiAgICAgIERXT1JEIGR3RmxhZ3MNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5kTmV4dFN0cmVhbVcoDQogICAgICBIQU5ETEUg
aEZpbmRTdHJlYW0sDQogICAgICBMUFZPSUQgbHBGaW5kU3RyZWFtRGF0YQ0KICAgICk7DQoNCg0K
I2xpbmUgMTM5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCg0KI2xpbmUgMTM5MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpBcmVGaWxlQXBpc0FOU0koDQogICAg
dm9pZA0KICAgICk7DQoNCg0KI2xpbmUgMTQwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkRXT1JEDQpfX3N0ZGNhbGwNCkdldFRlbXBQYXRoQSgNCiAgICAgIERXT1JEIG5CdWZmZXJMZW5n
dGgsDQogICAgICBMUFNUUiBscEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCg0KDQojbGluZSAxNDI2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KRmluZEZpcnN0RmlsZU5hbWVXKA0KICAg
ICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIExQRFdP
UkQgU3RyaW5nTGVuZ3RoLA0KICAgICAgUFdTVFIgTGlua05hbWUNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5kTmV4dEZpbGVOYW1lVygNCiAg
ICAgIEhBTkRMRSBoRmluZFN0cmVhbSwNCiAgICAgIExQRFdPUkQgU3RyaW5nTGVuZ3RoLA0KICAg
ICAgUFdTVFIgTGlua05hbWUNCiAgICApOw0KDQoNCiNsaW5lIDE0NTUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxm
aWxlYXBpLmgiDQoNCiNsaW5lIDE0NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWxlYXBpLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkdldFZvbHVtZUluZm9ybWF0aW9uQSgNCiAgICAgIExQQ1NUUiBscFJvb3RQ
YXRoTmFtZSwNCiAgICAgIExQU1RSIGxwVm9sdW1lTmFtZUJ1ZmZlciwNCiAgICAgIERXT1JEIG5W
b2x1bWVOYW1lU2l6ZSwNCiAgICAgIExQRFdPUkQgbHBWb2x1bWVTZXJpYWxOdW1iZXIsDQogICAg
ICBMUERXT1JEIGxwTWF4aW11bUNvbXBvbmVudExlbmd0aCwNCiAgICAgIExQRFdPUkQgbHBGaWxl
U3lzdGVtRmxhZ3MsDQogICAgICBMUFNUUiBscEZpbGVTeXN0ZW1OYW1lQnVmZmVyLA0KICAgICAg
RFdPUkQgbkZpbGVTeXN0ZW1OYW1lU2l6ZQ0KICAgICk7DQoNCg0KDQoNCg0KDQojbGluZSAxNDgy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldFRlbXBGaWxlTmFtZUEoDQogICAgICBM
UENTVFIgbHBQYXRoTmFtZSwNCiAgICAgIExQQ1NUUiBscFByZWZpeFN0cmluZywNCiAgICAgIFVJ
TlQgdVVuaXF1ZSwNCiAgICAgIExQU1RSIGxwVGVtcEZpbGVOYW1lDQogICAgKTsNCg0KDQoNCg0K
DQojbGluZSAxNTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KU2V0RmlsZUFwaXNUb09FTSgN
CiAgICB2b2lkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3Rk
Y2FsbA0KU2V0RmlsZUFwaXNUb0FOU0koDQogICAgdm9pZA0KICAgICk7DQoNCg0KI2xpbmUgMTUy
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xp
bmUgMTUyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpbGVhcGkuaCINCg0KI2xpbmUgMTUzMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGZpbGVhcGkuaCINCiNsaW5lIDIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaWZyb21hcHAuaCIN
Cg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZmlsZWFwaWZyb21hcHAu
aCINCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGZpbGVhcGlmcm9tYXBwLmgiDQojbGluZSAxNDcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxmaWxlYXBpZnJvbWFwcC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9IA0KI2xpbmUgMTUy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZmlsZWFwaWZyb21hcHAuaCINCg0KI2xpbmUgMTU0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcZmlsZWFwaWZyb21hcHAuaCINCiNsaW5lIDQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
I2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRlYnVnYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGVidWdhcGkuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRlYnVnYXBpLmgi
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBv
ciBHYW1lcyBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpJc0RlYnVnZ2VyUHJlc2VudCgNCiAgICB2b2lkDQogICAgKTsNCg0KI2xpbmUgMzcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxkZWJ1Z2FwaS5oIg0KDQojbGluZSAzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRlYnVnYXBp
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1p
bHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkRlYnVnQnJlYWsoDQogICAgdm9pZA0KICAgICk7DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk91dHB1dERlYnVnU3Ry
aW5nQSgNCiAgICAgIExQQ1NUUiBscE91dHB1dFN0cmluZw0KICAgICk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpPdXRwdXREZWJ1Z1N0cmluZ1coDQogICAgICBM
UENXU1RSIGxwT3V0cHV0U3RyaW5nDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA3MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGRlYnVnYXBpLmgiDQoNCiNsaW5lIDczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGVidWdhcGkuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9u
ZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpDb250aW51ZURlYnVnRXZlbnQoDQogICAgICBEV09SRCBkd1Byb2Nl
c3NJZCwNCiAgICAgIERXT1JEIGR3VGhyZWFkSWQsDQogICAgICBEV09SRCBkd0NvbnRpbnVlU3Rh
dHVzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
V2FpdEZvckRlYnVnRXZlbnQoDQogICAgICBMUERFQlVHX0VWRU5UIGxwRGVidWdFdmVudCwNCiAg
ICAgIERXT1JEIGR3TWlsbGlzZWNvbmRzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KRGVidWdBY3RpdmVQcm9jZXNzKA0KICAgICAgRFdPUkQgZHdQ
cm9jZXNzSWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpEZWJ1Z0FjdGl2ZVByb2Nlc3NTdG9wKA0KICAgICAgRFdPUkQgZHdQcm9jZXNzSWQNCiAg
ICApOw0KDQoNCiNsaW5lIDExNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRlYnVnYXBpLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWls
eQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hlY2tS
ZW1vdGVEZWJ1Z2dlclByZXNlbnQoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBQQk9P
TCBwYkRlYnVnZ2VyUHJlc2VudA0KICAgICk7DQoNCg0KI2xpbmUgMTMxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
ZGVidWdhcGkuaCINCg0KI2xpbmUgMTMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGVidWdhcGkuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCldhaXRG
b3JEZWJ1Z0V2ZW50RXgoDQogICAgICBMUERFQlVHX0VWRU5UIGxwRGVidWdFdmVudCwNCiAgICAg
IERXT1JEIGR3TWlsbGlzZWNvbmRzDQogICAgKTsNCg0KDQojbGluZSAxNDggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxkZWJ1Z2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSAxNTMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxkZWJ1Z2FwaS5oIg0KDQojbGluZSAxNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZWJ1Z2FwaS5o
Ig0KI2xpbmUgNDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojbGluZSAxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXRpbGFwaXNldC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAx
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHV0aWxhcGlzZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgew0KI2xpbmUgMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1dGlsYXBpc2V0LmgiDQoNCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClBWT0lEDQpfX3N0ZGNhbGwNCkVuY29kZVBv
aW50ZXIoDQogICAgICBQVk9JRCBQdHINCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KUFZPSUQNCl9fc3RkY2FsbA0KRGVjb2RlUG9pbnRlcigNCiAgICAgIFBWT0lEIFB0cg0K
ICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpQVk9JRA0KX19zdGRjYWxsDQpF
bmNvZGVTeXN0ZW1Qb2ludGVyKA0KICAgICAgUFZPSUQgUHRyDQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANClBWT0lEDQpfX3N0ZGNhbGwNCkRlY29kZVN5c3RlbVBvaW50ZXIo
DQogICAgICBQVk9JRCBQdHINCiAgICApOw0KDQoNCiNsaW5lIDY0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXRp
bGFwaXNldC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhSRVNV
TFQNCl9fc3RkY2FsbA0KRW5jb2RlUmVtb3RlUG9pbnRlcigNCiAgICAgIEhBTkRMRSBQcm9jZXNz
SGFuZGxlLA0KICAgICAgUFZPSUQgUHRyLA0KICAgICAgUFZPSUQqIEVuY29kZWRQdHINCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpEZWNvZGVS
ZW1vdGVQb2ludGVyKA0KICAgICAgSEFORExFIFByb2Nlc3NIYW5kbGUsDQogICAgICBQVk9JRCBQ
dHIsDQogICAgICBQVk9JRCogRGVjb2RlZFB0cg0KICAgICk7DQoNCg0KI2xpbmUgOTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1dGlsYXBpc2V0LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBQQyBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkJlZXAoDQogICAgICBEV09SRCBkd0Zy
ZXEsDQogICAgICBEV09SRCBkd0R1cmF0aW9uDQogICAgKTsNCg0KDQojbGluZSAxMDUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1dGlsYXBpc2V0LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDEx
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHV0aWxhcGlzZXQuaCINCg0KI2xpbmUgMTEyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
dXRpbGFwaXNldC5oIg0KI2xpbmUgNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojbGluZSAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcaGFuZGxlYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaGFuZGxlYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIHsNCiNsaW5lIDIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaGFuZGxlYXBpLmgiDQoNCg0K
DQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkNsb3NlSGFuZGxlKA0KICAgICAgICBIQU5ETEUgaE9iamVjdA0KICAgICk7
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkR1cGxpY2F0ZUhh
bmRsZSgNCiAgICAgIEhBTkRMRSBoU291cmNlUHJvY2Vzc0hhbmRsZSwNCiAgICAgIEhBTkRMRSBo
U291cmNlSGFuZGxlLA0KICAgICAgSEFORExFIGhUYXJnZXRQcm9jZXNzSGFuZGxlLA0KICAgICBM
UEhBTkRMRSBscFRhcmdldEhhbmRsZSwNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAg
ICAgIEJPT0wgYkluaGVyaXRIYW5kbGUsDQogICAgICBEV09SRCBkd09wdGlvbnMNCiAgICApOw0K
DQoNCiNsaW5lIDU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaGFuZGxlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ29tcGFyZU9iamVj
dEhhbmRsZXMoDQogICAgICBIQU5ETEUgaEZpcnN0T2JqZWN0SGFuZGxlLA0KICAgICAgSEFORExF
IGhTZWNvbmRPYmplY3RIYW5kbGUNCiAgICApOw0KDQoNCiNsaW5lIDczICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
aGFuZGxlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNh
dGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEhhbmRsZUluZm9ybWF0aW9uKA0K
ICAgICAgSEFORExFIGhPYmplY3QsDQogICAgICBMUERXT1JEIGxwZHdGbGFncw0KICAgICk7DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEhhbmRsZUluZm9y
bWF0aW9uKA0KICAgICAgSEFORExFIGhPYmplY3QsDQogICAgICBEV09SRCBkd01hc2ssDQogICAg
ICBEV09SRCBkd0ZsYWdzDQogICAgKTsNCg0KDQojbGluZSA5OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGhhbmRs
ZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSAxMDMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxoYW5kbGVhcGkuaCINCg0KI2xpbmUgMTA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaGFuZGxlYXBpLmgiDQoj
bGluZSA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxl
cnJoYW5kbGluZ2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAx
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGVycmhhbmRsaW5nYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIHsNCiNsaW5lIDIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZXJyaGFuZGxpbmdhcGkuaCINCg0KI3By
YWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVz
IEZhbWlseQ0KDQoNCg0KDQoNCg0KdHlwZWRlZiBMT05HIChfX3N0ZGNhbGwgKlBUT1BfTEVWRUxf
RVhDRVBUSU9OX0ZJTFRFUikoDQogICAgICBzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyAqRXhj
ZXB0aW9uSW5mbw0KICAgICk7DQoNCnR5cGVkZWYgUFRPUF9MRVZFTF9FWENFUFRJT05fRklMVEVS
IExQVE9QX0xFVkVMX0VYQ0VQVElPTl9GSUxURVI7DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQoNCnZvaWQNCl9fc3RkY2FsbA0KUmFpc2VFeGNlcHRpb24oDQogICAgICBEV09SRCBk
d0V4Y2VwdGlvbkNvZGUsDQogICAgICBEV09SRCBkd0V4Y2VwdGlvbkZsYWdzLA0KICAgICAgRFdP
UkQgbk51bWJlck9mQXJndW1lbnRzLA0KICAgICAgY29uc3QgVUxPTkdfUFRSKiBscEFyZ3VtZW50
cw0KICAgICk7DQoNCg0KI2xpbmUgNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxlcnJoYW5kbGluZ2FwaS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkxPTkcNCl9fc3RkY2FsbA0KVW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKA0KICAgICAgc3RydWN0
IF9FWENFUFRJT05fUE9JTlRFUlMqIEV4Y2VwdGlvbkluZm8NCiAgICApOw0KDQoNCiNsaW5lIDY5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZXJyaGFuZGxpbmdhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1l
cyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxQVE9QX0xFVkVMX0VYQ0VQVElP
Tl9GSUxURVINCl9fc3RkY2FsbA0KU2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKA0KICAgICAg
TFBUT1BfTEVWRUxfRVhDRVBUSU9OX0ZJTFRFUiBscFRvcExldmVsRXhjZXB0aW9uRmlsdGVyDQog
ICAgKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQogDQpEV09SRA0KX19zdGRj
YWxsDQpHZXRMYXN0RXJyb3IoDQogICAgdm9pZA0KICAgICk7DQoNCg0KI2xpbmUgOTUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxlcnJoYW5kbGluZ2FwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQN
Cl9fc3RkY2FsbA0KU2V0TGFzdEVycm9yKA0KICAgICAgRFdPUkQgZHdFcnJDb2RlDQogICAgKTsN
Cg0KDQojbGluZSAxMDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxlcnJoYW5kbGluZ2FwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpH
ZXRFcnJvck1vZGUoDQogICAgdm9pZA0KICAgICk7DQoNCg0KI2xpbmUgMTIxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcZXJyaGFuZGxpbmdhcGkuaCINCg0KI2xpbmUgMTIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZXJyaGFuZGxp
bmdhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9u
IEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNClVJTlQNCl9fc3RkY2FsbA0KU2V0RXJyb3JNb2RlKA0KICAgICAgVUlOVCB1
TW9kZQ0KICAgICk7DQoNCg0KI2xpbmUgMTM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZXJyaGFuZGxpbmdhcGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9y
IE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCiANClBWT0lEDQpfX3N0ZGNhbGwNCkFkZFZlY3RvcmVkRXhjZXB0aW9uSGFuZGxlcigN
CiAgICAgIFVMT05HIEZpcnN0LA0KICAgICAgUFZFQ1RPUkVEX0VYQ0VQVElPTl9IQU5ETEVSIEhh
bmRsZXINCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUxPTkcNCl9fc3RkY2Fs
bA0KUmVtb3ZlVmVjdG9yZWRFeGNlcHRpb25IYW5kbGVyKA0KICAgICAgUFZPSUQgSGFuZGxlDQog
ICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClBWT0lEDQpfX3N0ZGNhbGwNCkFk
ZFZlY3RvcmVkQ29udGludWVIYW5kbGVyKA0KICAgICAgVUxPTkcgRmlyc3QsDQogICAgICBQVkVD
VE9SRURfRVhDRVBUSU9OX0hBTkRMRVIgSGFuZGxlcg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpVTE9ORw0KX19zdGRjYWxsDQpSZW1vdmVWZWN0b3JlZENvbnRpbnVlSGFuZGxl
cigNCiAgICAgIFBWT0lEIEhhbmRsZQ0KICAgICk7DQoNCg0KI2xpbmUgMTgxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcZXJyaGFuZGxpbmdhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZXJyaGFuZGxpbmdhcGkuaCINCiNsaW5lIDIwMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGVycmhhbmRsaW5nYXBpLmgiDQoNCiNsaW5lIDIwNCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGVycmhhbmRsaW5nYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNClJhaXNlRmFpbEZhc3RFeGNl
cHRpb24oDQogICAgICBQRVhDRVBUSU9OX1JFQ09SRCBwRXhjZXB0aW9uUmVjb3JkLA0KICAgICAg
UENPTlRFWFQgcENvbnRleHRSZWNvcmQsDQogICAgICBEV09SRCBkd0ZsYWdzDQogICAgKTsNCg0K
DQojbGluZSAyMjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxlcnJoYW5kbGluZ2FwaS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkg
b3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNh
bGwNCkZhdGFsQXBwRXhpdEEoDQogICAgICBVSU5UIHVBY3Rpb24sDQogICAgICBMUENTVFIgbHBN
ZXNzYWdlVGV4dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRj
YWxsDQpGYXRhbEFwcEV4aXRXKA0KICAgICAgVUlOVCB1QWN0aW9uLA0KICAgICAgTFBDV1NUUiBs
cE1lc3NhZ2VUZXh0DQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAyNDYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxl
cnJoYW5kbGluZ2FwaS5oIg0KDQojbGluZSAyNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxlcnJoYW5kbGluZ2Fw
aS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0K
X19zdGRjYWxsDQpHZXRUaHJlYWRFcnJvck1vZGUoDQogICAgdm9pZA0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFRocmVhZEVycm9yTW9kZSgN
CiAgICAgIERXT1JEIGR3TmV3TW9kZSwNCiAgICAgIExQRFdPUkQgbHBPbGRNb2RlDQogICAgKTsN
Cg0KDQojbGluZSAyNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxlcnJoYW5kbGluZ2FwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KVGVybWluYXRl
UHJvY2Vzc09uTWVtb3J5RXhoYXVzdGlvbigNCiAgICAgIFNJWkVfVCBGYWlsZWRBbGxvY2F0aW9u
U2l6ZQ0KICAgICk7DQoNCg0KI2xpbmUgMjg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZXJyaGFuZGxpbmdhcGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgMjkwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZXJy
aGFuZGxpbmdhcGkuaCINCg0KI2xpbmUgMjkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZXJyaGFuZGxpbmdhcGku
aCINCiNsaW5lIDQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGZpYmVyc2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAx
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGZpYmVyc2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiB7DQojbGluZSAyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpYmVyc2FwaS5oIg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoN
Cg0KDQoNCg0KDQojbGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpYmVyc2FwaS5oIg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkZsc0FsbG9jKA0KICAgICAgUEZMU19D
QUxMQkFDS19GVU5DVElPTiBscENhbGxiYWNrDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNClBWT0lEDQpfX3N0ZGNhbGwNCkZsc0dldFZhbHVlKA0KICAgICAgRFdPUkQgZHdGbHNJ
bmRleA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkZsc1NldFZhbHVlKA0KICAgICAgRFdPUkQgZHdGbHNJbmRleCwNCiAgICAgIFBWT0lEIGxwRmxz
RGF0YQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkZsc0ZyZWUoDQogICAgICBEV09SRCBkd0Zsc0luZGV4DQogICAgKTsNCg0KDQojbGluZSA2NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGZpYmVyc2FwaS5oIg0KDQojbGluZSA2OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGZpYmVy
c2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24g
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNUaHJlYWRBRmliZXIoDQogICAgdm9p
ZA0KICAgICk7DQoNCg0KI2xpbmUgODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWJlcnNhcGkuaCINCg0KI2xp
bmUgODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxmaWJlcnNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
fQ0KI2xpbmUgOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxmaWJlcnNhcGkuaCINCg0KI2xpbmUgOTQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxmaWJlcnNhcGkuaCINCiNsaW5lIDQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
I2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG5hbWVkcGlwZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG5hbWVkcGlwZWFwaS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbmFt
ZWRwaXBlYXBpLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KQ3JlYXRlUGlwZSgNCiAgICAgIFBIQU5ETEUgaFJlYWRQaXBlLA0KICAgICAgUEhBTkRMRSBo
V3JpdGVQaXBlLA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwUGlwZUF0dHJpYnV0ZXMs
DQogICAgICBEV09SRCBuU2l6ZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkNvbm5lY3ROYW1lZFBpcGUoDQogICAgICBIQU5ETEUgaE5hbWVkUGlw
ZSwNCiAgICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQNCiAgICApOw0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEaXNjb25uZWN0TmFtZWRQaXBlKA0KICAg
ICAgSEFORExFIGhOYW1lZFBpcGUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgNCiAgICAgIEhBTkRMRSBo
TmFtZWRQaXBlLA0KICAgICAgTFBEV09SRCBscE1vZGUsDQogICAgICBMUERXT1JEIGxwTWF4Q29s
bGVjdGlvbkNvdW50LA0KICAgICAgTFBEV09SRCBscENvbGxlY3REYXRhVGltZW91dA0KICAgICk7
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClBlZWtOYW1lZFBp
cGUoDQogICAgICBIQU5ETEUgaE5hbWVkUGlwZSwNCiAgICAgIExQVk9JRCBscEJ1ZmZlciwNCiAg
ICAgIERXT1JEIG5CdWZmZXJTaXplLA0KICAgICAgTFBEV09SRCBscEJ5dGVzUmVhZCwNCiAgICAg
IExQRFdPUkQgbHBUb3RhbEJ5dGVzQXZhaWwsDQogICAgICBMUERXT1JEIGxwQnl0ZXNMZWZ0VGhp
c01lc3NhZ2UNCiAgICApOw0KDQoNCiNsaW5lIDgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbmFtZWRwaXBlYXBp
LmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVHJhbnNh
Y3ROYW1lZFBpcGUoDQogICAgICBIQU5ETEUgaE5hbWVkUGlwZSwNCiAgICAgIExQVk9JRCBscElu
QnVmZmVyLA0KICAgICAgRFdPUkQgbkluQnVmZmVyU2l6ZSwNCiAgICAgIExQVk9JRCBscE91dEJ1
ZmZlciwNCiAgICAgIERXT1JEIG5PdXRCdWZmZXJTaXplLA0KICAgICAgTFBEV09SRCBscEJ5dGVz
UmVhZCwNCiAgICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQNCiAgICApOw0KDQoNCiNsaW5l
IDk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbmFtZWRwaXBlYXBpLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVOYW1lZFBpcGVXKA0KICAgICAgTFBDV1NU
UiBscE5hbWUsDQogICAgICBEV09SRCBkd09wZW5Nb2RlLA0KICAgICAgRFdPUkQgZHdQaXBlTW9k
ZSwNCiAgICAgIERXT1JEIG5NYXhJbnN0YW5jZXMsDQogICAgICBEV09SRCBuT3V0QnVmZmVyU2l6
ZSwNCiAgICAgIERXT1JEIG5JbkJ1ZmZlclNpemUsDQogICAgICBEV09SRCBuRGVmYXVsdFRpbWVP
dXQsDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMNCiAg
ICApOw0KDQoNCg0KDQojbGluZSAxMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYW1lZHBpcGVhcGkuaCINCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCldhaXROYW1lZFBpcGVXKA0K
ICAgICAgTFBDV1NUUiBscE5hbWVkUGlwZU5hbWUsDQogICAgICBEV09SRCBuVGltZU91dA0KICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDEzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG5hbWVkcGlwZWFwaS5oIg0KDQoj
bGluZSAxMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYW1lZHBpcGVhcGkuaCINCg0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TmFtZWRQaXBlQ2xpZW50Q29tcHV0
ZXJOYW1lVygNCiAgICAgIEhBTkRMRSBQaXBlLA0KICAgICAgTFBXU1RSIENsaWVudENvbXB1dGVy
TmFtZSwNCiAgICAgIFVMT05HIENsaWVudENvbXB1dGVyTmFtZUxlbmd0aA0KICAgICk7DQoNCg0K
I2xpbmUgMTUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbmFtZWRwaXBlYXBpLmgiDQoNCg0KDQojbGluZSAxNTQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxuYW1lZHBpcGVhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQog
DQpCT09MDQpfX3N0ZGNhbGwNCkltcGVyc29uYXRlTmFtZWRQaXBlQ2xpZW50KA0KICAgICAgSEFO
RExFIGhOYW1lZFBpcGUNCiAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
DQojbGluZSAxNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYW1lZHBpcGVhcGkuaCINCg0KDQojcHJhZ21hIHJl
Z2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TmFtZWRQaXBlSW5mbygNCiAgICAgIEhB
TkRMRSBoTmFtZWRQaXBlLA0KICAgICAgTFBEV09SRCBscEZsYWdzLA0KICAgICAgTFBEV09SRCBs
cE91dEJ1ZmZlclNpemUsDQogICAgICBMUERXT1JEIGxwSW5CdWZmZXJTaXplLA0KICAgICAgTFBE
V09SRCBscE1heEluc3RhbmNlcw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldE5hbWVkUGlwZUhhbmRsZVN0YXRlVygNCiAgICAgIEhBTkRMRSBo
TmFtZWRQaXBlLA0KICAgICAgTFBEV09SRCBscFN0YXRlLA0KICAgICAgTFBEV09SRCBscEN1cklu
c3RhbmNlcywNCiAgICAgIExQRFdPUkQgbHBNYXhDb2xsZWN0aW9uQ291bnQsDQogICAgICBMUERX
T1JEIGxwQ29sbGVjdERhdGFUaW1lb3V0LA0KICAgICAgTFBXU1RSIGxwVXNlck5hbWUsDQogICAg
ICBEV09SRCBuTWF4VXNlck5hbWVTaXplDQogICAgKTsNCg0KDQoNCiNsaW5lIDE5OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG5hbWVkcGlwZWFwaS5oIg0KDQojbGluZSAyMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYW1lZHBp
cGVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9u
IEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpDYWxsTmFtZWRQaXBlVygNCiAgICAgIExQQ1dTVFIgbHBOYW1lZFBpcGVO
YW1lLA0KICAgICAgTFBWT0lEIGxwSW5CdWZmZXIsDQogICAgICBEV09SRCBuSW5CdWZmZXJTaXpl
LA0KICAgICAgTFBWT0lEIGxwT3V0QnVmZmVyLA0KICAgICAgRFdPUkQgbk91dEJ1ZmZlclNpemUs
DQogICAgICBMUERXT1JEIGxwQnl0ZXNSZWFkLA0KICAgICAgRFdPUkQgblRpbWVPdXQNCiAgICAp
Ow0KDQoNCg0KDQojbGluZSAyMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYW1lZHBpcGVhcGkuaCINCg0KI2xp
bmUgMjI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbmFtZWRwaXBlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQoNCn0NCiNsaW5lIDIyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG5hbWVkcGlwZWFwaS5oIg0KDQojbGluZSAy
MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxuYW1lZHBpcGVhcGkuaCINCg0KI2xpbmUgNTAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvZmlsZWFwaS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2ZpbGVh
cGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxwcm9maWxlYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigNCiAg
ICAgIExBUkdFX0lOVEVHRVIqIGxwUGVyZm9ybWFuY2VDb3VudA0KICAgICk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVu
Y3koDQogICAgICBMQVJHRV9JTlRFR0VSKiBscEZyZXF1ZW5jeQ0KICAgICk7DQoNCg0KI2xpbmUg
NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcm9maWxlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0N
CiNsaW5lIDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvZmlsZWFwaS5oIg0KDQojbGluZSA1NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHByb2ZpbGVhcGkuaCINCiNsaW5lIDUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
I2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGhlYXBhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxoZWFwYXBpLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxoZWFwYXBpLmgiDQoNCiNsaW5lIDI2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcaGVhcGFwaS5oIg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMzAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxoZWFwYXBpLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaGVhcGFwaS5oIg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
R2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfSEVBUF9TVU1NQVJZIHsN
CiAgICBEV09SRCBjYjsNCiAgICBTSVpFX1QgY2JBbGxvY2F0ZWQ7DQogICAgU0laRV9UIGNiQ29t
bWl0dGVkOw0KICAgIFNJWkVfVCBjYlJlc2VydmVkOw0KICAgIFNJWkVfVCBjYk1heFJlc2VydmU7
DQp9IEhFQVBfU1VNTUFSWSwgKlBIRUFQX1NVTU1BUlk7DQp0eXBlZGVmIFBIRUFQX1NVTU1BUlkg
TFBIRUFQX1NVTU1BUlk7DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5E
TEUNCl9fc3RkY2FsbA0KSGVhcENyZWF0ZSgNCiAgICAgIERXT1JEIGZsT3B0aW9ucywNCiAgICAg
IFNJWkVfVCBkd0luaXRpYWxTaXplLA0KICAgICAgU0laRV9UIGR3TWF4aW11bVNpemUNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpIZWFwRGVzdHJv
eSgNCiAgICAgIEhBTkRMRSBoSGVhcA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQogDQpfX2RlY2xzcGVjKGFsbG9jYXRvcikNCkxQVk9JRA0KX19zdGRjYWxsDQpIZWFwQWxs
b2MoDQogICAgICBIQU5ETEUgaEhlYXAsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgU0la
RV9UIGR3Qnl0ZXMNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0KIA0K
X19kZWNsc3BlYyhhbGxvY2F0b3IpDQpMUFZPSUQNCl9fc3RkY2FsbA0KSGVhcFJlQWxsb2MoDQog
ICAgICBIQU5ETEUgaEhlYXAsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgTFBWT0lEIGxw
TWVtLA0KICAgICAgU0laRV9UIGR3Qnl0ZXMNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpIZWFwRnJlZSgNCiAgICAgIEhBTkRMRSBoSGVhcCwN
CiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICAgIExQVk9JRCBscE1lbQ0KICAgICk7DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpTSVpFX1QNCl9fc3RkY2FsbA0KSGVhcFNpemUoDQogICAg
ICBIQU5ETEUgaEhlYXAsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgTFBDVk9JRCBscE1l
bQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0K
R2V0UHJvY2Vzc0hlYXAoDQogICAgdm9pZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpTSVpFX1QNCl9fc3RkY2FsbA0KSGVhcENvbXBhY3QoDQogICAgICBIQU5ETEUgaEhlYXAs
DQogICAgICBEV09SRCBkd0ZsYWdzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KSGVhcFNldEluZm9ybWF0aW9uKA0KICAgICAgSEFORExFIEhlYXBI
YW5kbGUsDQogICAgICBIRUFQX0lORk9STUFUSU9OX0NMQVNTIEhlYXBJbmZvcm1hdGlvbkNsYXNz
LA0KICAgICAgUFZPSUQgSGVhcEluZm9ybWF0aW9uLA0KICAgICAgU0laRV9UIEhlYXBJbmZvcm1h
dGlvbkxlbmd0aA0KICAgICk7DQoNCg0KI2xpbmUgMTUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaGVhcGFwaS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkhlYXBWYWxpZGF0ZSgNCiAgICAgIEhBTkRMRSBoSGVhcCwNCiAg
ICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBMUENWT0lEIGxwTWVtDQogICAgKTsNCg0KDQojbGlu
ZSAxNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxoZWFwYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQpCT09MDQpfX3N0ZGNhbGwNCkhlYXBT
dW1tYXJ5KA0KICAgICAgSEFORExFIGhIZWFwLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAg
IExQSEVBUF9TVU1NQVJZIGxwU3VtbWFyeQ0KICAgICk7DQoNCg0KI2xpbmUgMTg0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcaGVhcGFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBw
bGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0UHJvY2Vzc0hlYXBzKA0K
ICAgICAgRFdPUkQgTnVtYmVyT2ZIZWFwcywNCiAgICAgIFBIQU5ETEUgUHJvY2Vzc0hlYXBzDQog
ICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSGVhcExv
Y2soDQogICAgICBIQU5ETEUgaEhlYXANCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpIZWFwVW5sb2NrKA0KICAgICAgSEFORExFIGhIZWFwDQogICAg
KTsNCg0KDQojbGluZSAyMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxoZWFwYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBv
ciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KSGVhcFdhbGsoDQogICAgICBIQU5ETEUgaEhlYXAsDQogICAgICBMUFBST0NFU1NfSEVBUF9F
TlRSWSBscEVudHJ5DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KSGVhcFF1ZXJ5SW5mb3JtYXRpb24oDQogICAgICBIQU5ETEUgSGVhcEhhbmRsZSwN
CiAgICAgIEhFQVBfSU5GT1JNQVRJT05fQ0xBU1MgSGVhcEluZm9ybWF0aW9uQ2xhc3MsDQogICAg
ICBQVk9JRCBIZWFwSW5mb3JtYXRpb24sDQogICAgICBTSVpFX1QgSGVhcEluZm9ybWF0aW9uTGVu
Z3RoLA0KICAgICAgUFNJWkVfVCBSZXR1cm5MZW5ndGgNCiAgICApOw0KDQogICAgDQojbGluZSAy
NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxoZWFwYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDI1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGhlYXBhcGku
aCINCg0KDQp9DQojbGluZSAyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxoZWFwYXBpLmgiDQoNCiNsaW5lIDI1
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGhlYXBhcGkuaCINCiNsaW5lIDUyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFz
ZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGlvYXBpc2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW9hcGlzZXQuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGlvYXBp
c2V0LmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZh
bWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkhBTkRM
RQ0KX19zdGRjYWxsDQpDcmVhdGVJb0NvbXBsZXRpb25Qb3J0KA0KICAgICAgSEFORExFIEZpbGVI
YW5kbGUsDQogICAgICBIQU5ETEUgRXhpc3RpbmdDb21wbGV0aW9uUG9ydCwNCiAgICAgIFVMT05H
X1BUUiBDb21wbGV0aW9uS2V5LA0KICAgICAgRFdPUkQgTnVtYmVyT2ZDb25jdXJyZW50VGhyZWFk
cw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdl
dFF1ZXVlZENvbXBsZXRpb25TdGF0dXMoDQogICAgICBIQU5ETEUgQ29tcGxldGlvblBvcnQsDQog
ICAgICBMUERXT1JEIGxwTnVtYmVyT2ZCeXRlc1RyYW5zZmVycmVkLA0KICAgICAgUFVMT05HX1BU
UiBscENvbXBsZXRpb25LZXksDQogICAgICBMUE9WRVJMQVBQRUQqIGxwT3ZlcmxhcHBlZCwNCiAg
ICAgIERXT1JEIGR3TWlsbGlzZWNvbmRzDQogICAgKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFF1ZXVlZENvbXBsZXRpb25TdGF0dXNFeCgNCiAg
ICAgIEhBTkRMRSBDb21wbGV0aW9uUG9ydCwNCiAgICAgIExQT1ZFUkxBUFBFRF9FTlRSWSBscENv
bXBsZXRpb25Qb3J0RW50cmllcywNCiAgICAgIFVMT05HIHVsQ291bnQsDQogICAgICBQVUxPTkcg
dWxOdW1FbnRyaWVzUmVtb3ZlZCwNCiAgICAgIERXT1JEIGR3TWlsbGlzZWNvbmRzLA0KICAgICAg
Qk9PTCBmQWxlcnRhYmxlDQogICAgKTsNCg0KDQojbGluZSA2OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGlvYXBp
c2V0LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpQb3N0UXVl
dWVkQ29tcGxldGlvblN0YXR1cygNCiAgICAgIEhBTkRMRSBDb21wbGV0aW9uUG9ydCwNCiAgICAg
IERXT1JEIGR3TnVtYmVyT2ZCeXRlc1RyYW5zZmVycmVkLA0KICAgICAgVUxPTkdfUFRSIGR3Q29t
cGxldGlvbktleSwNCiAgICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQNCiAgICApOw0KDQoN
CiNsaW5lIDgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW9hcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uICBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBBcHBs
aWNhdGlvbiBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkRldmljZUlvQ29udHJvbCgNCiAgICAgIEhBTkRMRSBoRGV2aWNl
LA0KICAgICAgRFdPUkQgZHdJb0NvbnRyb2xDb2RlLA0KICAgICAgTFBWT0lEIGxwSW5CdWZmZXIs
DQogICAgICBEV09SRCBuSW5CdWZmZXJTaXplLA0KICAgICAgTFBWT0lEIGxwT3V0QnVmZmVyLA0K
ICAgICAgRFdPUkQgbk91dEJ1ZmZlclNpemUsDQogICAgICBMUERXT1JEIGxwQnl0ZXNSZXR1cm5l
ZCwNCiAgICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQNCiAgICApOw0KDQoNCiNsaW5lIDEw
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGlvYXBpc2V0LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFt
aWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldE92ZXJs
YXBwZWRSZXN1bHQoDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBMUE9WRVJMQVBQRUQgbHBP
dmVybGFwcGVkLA0KICAgICAgTFBEV09SRCBscE51bWJlck9mQnl0ZXNUcmFuc2ZlcnJlZCwNCiAg
ICAgIEJPT0wgYldhaXQNCiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KQ2FuY2VsSW9FeCgNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIExQ
T1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQNCiAgICApOw0KDQoNCiNsaW5lIDEzMCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGlvYXBpc2V0LmgiDQoNCiNsaW5lIDEzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGlvYXBpc2V0LmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkNhbmNlbElvKA0KICAgICAgSEFORExFIGhGaWxlDQogICAgKTsN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0T3ZlcmxhcHBl
ZFJlc3VsdEV4KA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTFBPVkVSTEFQUEVEIGxwT3Zl
cmxhcHBlZCwNCiAgICAgIExQRFdPUkQgbHBOdW1iZXJPZkJ5dGVzVHJhbnNmZXJyZWQsDQogICAg
ICBEV09SRCBkd01pbGxpc2Vjb25kcywNCiAgICAgIEJPT0wgYkFsZXJ0YWJsZQ0KICAgICk7DQoN
Cg0KI2xpbmUgMTU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW9hcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdh
bWVzIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KQ2FuY2VsU3luY2hyb25vdXNJbygNCiAgICAgIEhBTkRMRSBoVGhyZWFkDQogICAgKTsNCg0K
DQojbGluZSAxNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpb2FwaXNldC5oIg0KDQojbGluZSAxNzYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxpb2FwaXNldC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSAxODEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxpb2FwaXNldC5oIg0KDQojbGluZSAxODMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpb2Fw
aXNldC5oIg0KI2xpbmUgNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojbGluZSAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcc3luY2hhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xp
bmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzeW5jaGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIHsNCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3luY2hhcGkuaCINCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBSVExfU1JXTE9DSyBTUldMT0NLLCAqUFNSV0xPQ0s7DQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KSW5pdGlhbGl6ZVNSV0xv
Y2soDQogICAgICBQU1JXTE9DSyBTUldMb2NrDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCg0Kdm9pZA0KX19zdGRjYWxsDQpSZWxlYXNlU1JXTG9ja0V4Y2x1c2l2ZSgNCiAgICAg
IFBTUldMT0NLIFNSV0xvY2sNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KDQp2
b2lkDQpfX3N0ZGNhbGwNClJlbGVhc2VTUldMb2NrU2hhcmVkKA0KICAgICAgUFNSV0xPQ0sgU1JX
TG9jaw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQoNCnZvaWQNCl9fc3RkY2Fs
bA0KQWNxdWlyZVNSV0xvY2tFeGNsdXNpdmUoDQogICAgICBQU1JXTE9DSyBTUldMb2NrDQogICAg
KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCg0Kdm9pZA0KX19zdGRjYWxsDQpBY3F1aXJl
U1JXTG9ja1NoYXJlZCgNCiAgICAgIFBTUldMT0NLIFNSV0xvY2sNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KDQpCT09MRUFODQpfX3N0ZGNhbGwNClRyeUFjcXVpcmVTUldMb2Nr
RXhjbHVzaXZlKA0KICAgICAgUFNSV0xPQ0sgU1JXTG9jaw0KICAgICk7DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQoNCkJPT0xFQU4NCl9fc3RkY2FsbA0KVHJ5QWNxdWlyZVNSV0xvY2tTaGFy
ZWQoDQogICAgICBQU1JXTE9DSyBTUldMb2NrDQogICAgKTsNCg0KDQojbGluZSAxMDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxzeW5jaGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHN5bmNoYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19z
dGRjYWxsDQpJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKA0KICAgICAgTFBDUklUSUNBTF9TRUNU
SU9OIGxwQ3JpdGljYWxTZWN0aW9uDQogICAgKTsNCg0KDQojbGluZSAxMjMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxzeW5jaGFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0K
RW50ZXJDcml0aWNhbFNlY3Rpb24oDQogICAgICBMUENSSVRJQ0FMX1NFQ1RJT04gbHBDcml0aWNh
bFNlY3Rpb24NCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRj
YWxsDQpMZWF2ZUNyaXRpY2FsU2VjdGlvbigNCiAgICAgIExQQ1JJVElDQUxfU0VDVElPTiBscENy
aXRpY2FsU2VjdGlvbg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09M
DQpfX3N0ZGNhbGwNCkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb25BbmRTcGluQ291bnQoDQogICAg
ICBMUENSSVRJQ0FMX1NFQ1RJT04gbHBDcml0aWNhbFNlY3Rpb24sDQogICAgICBEV09SRCBkd1Nw
aW5Db3VudA0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uRXgoDQogICAgICBMUENSSVRJQ0FMX1NF
Q1RJT04gbHBDcml0aWNhbFNlY3Rpb24sDQogICAgICBEV09SRCBkd1NwaW5Db3VudCwNCiAgICAg
IERXT1JEIEZsYWdzDQogICAgKTsNCg0KDQojbGluZSAxNjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeW5jaGFw
aS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNClNldENyaXRp
Y2FsU2VjdGlvblNwaW5Db3VudCgNCiAgICAgIExQQ1JJVElDQUxfU0VDVElPTiBscENyaXRpY2Fs
U2VjdGlvbiwNCiAgICAgIERXT1JEIGR3U3BpbkNvdW50DQogICAgKTsNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClRyeUVudGVyQ3JpdGljYWxTZWN0aW9u
KA0KICAgICAgTFBDUklUSUNBTF9TRUNUSU9OIGxwQ3JpdGljYWxTZWN0aW9uDQogICAgKTsNCg0K
DQojbGluZSAxODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeW5jaGFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KRGVsZXRlQ3JpdGljYWxTZWN0aW9uKA0KICAgICAgTFBD
UklUSUNBTF9TRUNUSU9OIGxwQ3JpdGljYWxTZWN0aW9uDQogICAgKTsNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgUlRMX1JVTl9PTkNFIElOSVRfT05DRTsNCnR5cGVkZWYgUFJUTF9SVU5fT05DRSBQSU5J
VF9PTkNFOw0KdHlwZWRlZiBQUlRMX1JVTl9PTkNFIExQSU5JVF9PTkNFOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZg0KQk9PTA0KKF9fc3RkY2FsbCAqUElOSVRf
T05DRV9GTikgKA0KICAgICAgUElOSVRfT05DRSBJbml0T25jZSwNCiAgICAgIFBWT0lEIFBhcmFt
ZXRlciwNCiAgICAgUFZPSUQgKkNvbnRleHQNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkluaXRPbmNlSW5pdGlhbGl6ZSgNCiAgICAgIFBJTklU
X09OQ0UgSW5pdE9uY2UNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpJbml0T25jZUV4ZWN1dGVPbmNlKA0KICAgICAgUElOSVRfT05DRSBJbml0T25j
ZSwNCiAgICAgICBQSU5JVF9PTkNFX0ZOIEluaXRGbiwNCiAgICAgIFBWT0lEIFBhcmFtZXRlciwN
CiAgICAgTFBWT0lEKiBDb250ZXh0DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KSW5pdE9uY2VCZWdpbkluaXRpYWxpemUoDQogICAgICBMUElOSVRf
T05DRSBscEluaXRPbmNlLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIFBCT09MIGZQZW5k
aW5nLA0KICAgICBMUFZPSUQqIGxwQ29udGV4dA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkluaXRPbmNlQ29tcGxldGUoDQogICAgICBMUElOSVRf
T05DRSBscEluaXRPbmNlLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIExQVk9JRCBscENv
bnRleHQNCiAgICApOw0KDQoNCiNsaW5lIDI2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5bmNoYXBpLmgiDQoN
Cg0KDQoNCg0KdHlwZWRlZiBSVExfQ09ORElUSU9OX1ZBUklBQkxFIENPTkRJVElPTl9WQVJJQUJM
RSwgKlBDT05ESVRJT05fVkFSSUFCTEU7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KSW5pdGlhbGl6ZUNvbmRpdGlv
blZhcmlhYmxlKA0KICAgICAgUENPTkRJVElPTl9WQVJJQUJMRSBDb25kaXRpb25WYXJpYWJsZQ0K
ICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCldha2VD
b25kaXRpb25WYXJpYWJsZSgNCiAgICAgIFBDT05ESVRJT05fVkFSSUFCTEUgQ29uZGl0aW9uVmFy
aWFibGUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxs
DQpXYWtlQWxsQ29uZGl0aW9uVmFyaWFibGUoDQogICAgICBQQ09ORElUSU9OX1ZBUklBQkxFIENv
bmRpdGlvblZhcmlhYmxlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KU2xlZXBDb25kaXRpb25WYXJpYWJsZUNTKA0KICAgICAgUENPTkRJVElPTl9W
QVJJQUJMRSBDb25kaXRpb25WYXJpYWJsZSwNCiAgICAgIFBDUklUSUNBTF9TRUNUSU9OIENyaXRp
Y2FsU2VjdGlvbiwNCiAgICAgIERXT1JEIGR3TWlsbGlzZWNvbmRzDQogICAgKTsNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2xlZXBDb25kaXRpb25WYXJpYWJs
ZVNSVygNCiAgICAgIFBDT05ESVRJT05fVkFSSUFCTEUgQ29uZGl0aW9uVmFyaWFibGUsDQogICAg
ICBQU1JXTE9DSyBTUldMb2NrLA0KICAgICAgRFdPUkQgZHdNaWxsaXNlY29uZHMsDQogICAgICBV
TE9ORyBGbGFncw0KICAgICk7DQoNCg0KI2xpbmUgMzM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3luY2hhcGku
aCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEV2ZW50KA0K
ICAgICAgSEFORExFIGhFdmVudA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClJlc2V0RXZlbnQoDQogICAgICBIQU5ETEUgaEV2ZW50DQogICAgKTsN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUmVsZWFzZVNlbWFw
aG9yZSgNCiAgICAgIEhBTkRMRSBoU2VtYXBob3JlLA0KICAgICAgTE9ORyBsUmVsZWFzZUNvdW50
LA0KICAgICAgTFBMT05HIGxwUHJldmlvdXNDb3VudA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClJlbGVhc2VNdXRleCgNCiAgICAgIEhBTkRMRSBo
TXV0ZXgNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2Fs
bA0KV2FpdEZvclNpbmdsZU9iamVjdCgNCiAgICAgIEhBTkRMRSBoSGFuZGxlLA0KICAgICAgRFdP
UkQgZHdNaWxsaXNlY29uZHMNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdP
UkQNCl9fc3RkY2FsbA0KU2xlZXBFeCgNCiAgICAgIERXT1JEIGR3TWlsbGlzZWNvbmRzLA0KICAg
ICAgQk9PTCBiQWxlcnRhYmxlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRX
T1JEDQpfX3N0ZGNhbGwNCldhaXRGb3JTaW5nbGVPYmplY3RFeCgNCiAgICAgIEhBTkRMRSBoSGFu
ZGxlLA0KICAgICAgRFdPUkQgZHdNaWxsaXNlY29uZHMsDQogICAgICBCT09MIGJBbGVydGFibGUN
CiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KV2Fp
dEZvck11bHRpcGxlT2JqZWN0c0V4KA0KICAgICAgRFdPUkQgbkNvdW50LA0KICAgICAgY29uc3Qg
SEFORExFKiBscEhhbmRsZXMsDQogICAgICBCT09MIGJXYWl0QWxsLA0KICAgICAgRFdPUkQgZHdN
aWxsaXNlY29uZHMsDQogICAgICBCT09MIGJBbGVydGFibGUNCiAgICApOw0KDQoNCg0KDQoNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRl
TXV0ZXhBKA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwTXV0ZXhBdHRyaWJ1dGVzLA0K
ICAgICAgQk9PTCBiSW5pdGlhbE93bmVyLA0KICAgICAgTFBDU1RSIGxwTmFtZQ0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZU11dGV4
VygNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscE11dGV4QXR0cmlidXRlcywNCiAgICAg
IEJPT0wgYkluaXRpYWxPd25lciwNCiAgICAgIExQQ1dTVFIgbHBOYW1lDQogICAgKTsNCg0KDQoN
Cg0KDQojbGluZSA0NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeW5jaGFwaS5oIg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCiANCkhBTkRMRQ0KX19zdGRjYWxsDQpPcGVuTXV0ZXhXKA0KICAgICAgRFdPUkQg
ZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgQk9PTCBiSW5oZXJpdEhhbmRsZSwNCiAgICAgIExQQ1dT
VFIgbHBOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3luY2hh
cGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ3Jl
YXRlRXZlbnRBKA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwRXZlbnRBdHRyaWJ1dGVz
LA0KICAgICAgQk9PTCBiTWFudWFsUmVzZXQsDQogICAgICBCT09MIGJJbml0aWFsU3RhdGUsDQog
ICAgICBMUENTVFIgbHBOYW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpI
QU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlRXZlbnRXKA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJV
VEVTIGxwRXZlbnRBdHRyaWJ1dGVzLA0KICAgICAgQk9PTCBiTWFudWFsUmVzZXQsDQogICAgICBC
T09MIGJJbml0aWFsU3RhdGUsDQogICAgICBMUENXU1RSIGxwTmFtZQ0KICAgICk7DQoNCg0KDQoN
Cg0KI2xpbmUgNDg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3luY2hhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KT3BlbkV2ZW50QSgNCiAgICAgIERXT1JEIGR3
RGVzaXJlZEFjY2VzcywNCiAgICAgIEJPT0wgYkluaGVyaXRIYW5kbGUsDQogICAgICBMUENTVFIg
bHBOYW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3Rk
Y2FsbA0KT3BlbkV2ZW50VygNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIEJP
T0wgYkluaGVyaXRIYW5kbGUsDQogICAgICBMUENXU1RSIGxwTmFtZQ0KICAgICk7DQoNCg0KDQoN
Cg0KI2xpbmUgNTEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3luY2hhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KT3BlblNlbWFwaG9yZVcoDQogICAgICBEV09S
RCBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICBCT09MIGJJbmhlcml0SGFuZGxlLA0KICAgICAgTFBD
V1NUUiBscE5hbWUNCiAgICApOw0KDQoNCg0KDQojbGluZSA1MjcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeW5j
aGFwaS5oIg0KDQoNCg0KdHlwZWRlZg0Kdm9pZA0KKF9fc3RkY2FsbCAqUFRJTUVSQVBDUk9VVElO
RSkoDQogICAgICBMUFZPSUQgbHBBcmdUb0NvbXBsZXRpb25Sb3V0aW5lLA0KICAgICAgICAgIERX
T1JEIGR3VGltZXJMb3dWYWx1ZSwNCiAgICAgICAgICBEV09SRCBkd1RpbWVySGlnaFZhbHVlDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KT3Bl
bldhaXRhYmxlVGltZXJXKA0KICAgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgQk9P
TCBiSW5oZXJpdEhhbmRsZSwNCiAgICAgIExQQ1dTVFIgbHBUaW1lck5hbWUNCiAgICApOw0KDQoN
Cg0KDQojbGluZSA1NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeW5jaGFwaS5oIg0KDQoNCg0KQk9PTA0KX19z
dGRjYWxsDQpTZXRXYWl0YWJsZVRpbWVyRXgoDQogICAgICBIQU5ETEUgaFRpbWVyLA0KICAgICAg
Y29uc3QgTEFSR0VfSU5URUdFUiogbHBEdWVUaW1lLA0KICAgICAgTE9ORyBsUGVyaW9kLA0KICAg
ICAgUFRJTUVSQVBDUk9VVElORSBwZm5Db21wbGV0aW9uUm91dGluZSwNCiAgICAgIExQVk9JRCBs
cEFyZ1RvQ29tcGxldGlvblJvdXRpbmUsDQogICAgICBQUkVBU09OX0NPTlRFWFQgV2FrZUNvbnRl
eHQsDQogICAgICBVTE9ORyBUb2xlcmFibGVEZWxheQ0KICAgICk7DQoNCg0KI2xpbmUgNTY5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcc3luY2hhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNClNldFdhaXRhYmxlVGltZXIoDQogICAgICBIQU5ETEUgaFRpbWVyLA0KICAgICAg
Y29uc3QgTEFSR0VfSU5URUdFUiogbHBEdWVUaW1lLA0KICAgICAgTE9ORyBsUGVyaW9kLA0KICAg
ICAgUFRJTUVSQVBDUk9VVElORSBwZm5Db21wbGV0aW9uUm91dGluZSwNCiAgICAgIExQVk9JRCBs
cEFyZ1RvQ29tcGxldGlvblJvdXRpbmUsDQogICAgICBCT09MIGZSZXN1bWUNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDYW5jZWxXYWl0YWJsZVRp
bWVyKA0KICAgICAgSEFORExFIGhUaW1lcg0KICAgICk7DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCiANCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVNdXRleEV4QSgNCiAgICAg
IExQU0VDVVJJVFlfQVRUUklCVVRFUyBscE11dGV4QXR0cmlidXRlcywNCiAgICAgIExQQ1NUUiBs
cE5hbWUsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNz
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0K
Q3JlYXRlTXV0ZXhFeFcoDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBNdXRleEF0dHJp
YnV0ZXMsDQogICAgICBMUENXU1RSIGxwTmFtZSwNCiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAg
ICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDYyMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHN5bmNoYXBpLmgiDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0K
SEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZUV2ZW50RXhBKA0KICAgICAgTFBTRUNVUklUWV9BVFRS
SUJVVEVTIGxwRXZlbnRBdHRyaWJ1dGVzLA0KICAgICAgTFBDU1RSIGxwTmFtZSwNCiAgICAgIERX
T1JEIGR3RmxhZ3MsDQogICAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCiANCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVFdmVudEV4VygN
CiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscEV2ZW50QXR0cmlidXRlcywNCiAgICAgIExQ
Q1dTVFIgbHBOYW1lLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIERXT1JEIGR3RGVzaXJl
ZEFjY2Vzcw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNjUzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3luY2hh
cGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ3Jl
YXRlU2VtYXBob3JlRXhXKA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VtYXBob3Jl
QXR0cmlidXRlcywNCiAgICAgIExPTkcgbEluaXRpYWxDb3VudCwNCiAgICAgIExPTkcgbE1heGlt
dW1Db3VudCwNCiAgICAgIExQQ1dTVFIgbHBOYW1lLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAg
ICAgIERXT1JEIGR3RGVzaXJlZEFjY2Vzcw0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDY3MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHN5bmNoYXBpLmgiDQoNCg0KDQoNCiNsaW5lIDY3NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5
bmNoYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwN
CkNyZWF0ZVdhaXRhYmxlVGltZXJFeFcoDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBU
aW1lckF0dHJpYnV0ZXMsDQogICAgICBMUENXU1RSIGxwVGltZXJOYW1lLA0KICAgICAgRFdPUkQg
ZHdGbGFncywNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2Vzcw0KICAgICk7DQoNCg0KDQoNCiNs
aW5lIDY5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5bmNoYXBpLmgiDQoNCiNsaW5lIDY5NCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHN5bmNoYXBpLmgiDQoNCiNsaW5lIDY5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5bmNoYXBpLmgiDQoN
CnR5cGVkZWYgUlRMX0JBUlJJRVIgU1lOQ0hST05JWkFUSU9OX0JBUlJJRVI7DQp0eXBlZGVmIFBS
VExfQkFSUklFUiBQU1lOQ0hST05JWkFUSU9OX0JBUlJJRVI7DQp0eXBlZGVmIFBSVExfQkFSUklF
UiBMUFNZTkNIUk9OSVpBVElPTl9CQVJSSUVSOw0KDQoNCg0KDQoNCkJPT0wNCl9fc3RkY2FsbA0K
RW50ZXJTeW5jaHJvbml6YXRpb25CYXJyaWVyKA0KICAgICAgTFBTWU5DSFJPTklaQVRJT05fQkFS
UklFUiBscEJhcnJpZXIsDQogICAgICBEV09SRCBkd0ZsYWdzDQogICAgKTsNCg0KDQpCT09MDQpf
X3N0ZGNhbGwNCkluaXRpYWxpemVTeW5jaHJvbml6YXRpb25CYXJyaWVyKA0KICAgICAgTFBTWU5D
SFJPTklaQVRJT05fQkFSUklFUiBscEJhcnJpZXIsDQogICAgICBMT05HIGxUb3RhbFRocmVhZHMs
DQogICAgICBMT05HIGxTcGluQ291bnQNCiAgICApOw0KDQoNCkJPT0wNCl9fc3RkY2FsbA0KRGVs
ZXRlU3luY2hyb25pemF0aW9uQmFycmllcigNCiAgICAgIExQU1lOQ0hST05JWkFUSU9OX0JBUlJJ
RVIgbHBCYXJyaWVyDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9f
c3RkY2FsbA0KU2xlZXAoDQogICAgICBEV09SRCBkd01pbGxpc2Vjb25kcw0KICAgICk7DQoNCg0K
Qk9PTA0KX19zdGRjYWxsDQpXYWl0T25BZGRyZXNzKA0KICAgICAgdm9sYXRpbGUgdm9pZCogQWRk
cmVzcywNCiAgICAgIFBWT0lEIENvbXBhcmVBZGRyZXNzLA0KICAgICAgU0laRV9UIEFkZHJlc3NT
aXplLA0KICAgICAgRFdPUkQgZHdNaWxsaXNlY29uZHMNCiAgICApOw0KDQoNCnZvaWQNCl9fc3Rk
Y2FsbA0KV2FrZUJ5QWRkcmVzc1NpbmdsZSgNCiAgICAgIFBWT0lEIEFkZHJlc3MNCiAgICApOw0K
DQoNCnZvaWQNCl9fc3RkY2FsbA0KV2FrZUJ5QWRkcmVzc0FsbCgNCiAgICAgIFBWT0lEIEFkZHJl
c3MNCiAgICApOw0KDQoNCiNsaW5lIDc2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5bmNoYXBpLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUgRmFtaWx5
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KU2lnbmFs
T2JqZWN0QW5kV2FpdCgNCiAgICAgIEhBTkRMRSBoT2JqZWN0VG9TaWduYWwsDQogICAgICBIQU5E
TEUgaE9iamVjdFRvV2FpdE9uLA0KICAgICAgRFdPUkQgZHdNaWxsaXNlY29uZHMsDQogICAgICBC
T09MIGJBbGVydGFibGUNCiAgICApOw0KDQoNCiNsaW5lIDc4MSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5bmNo
YXBpLmgiDQoNCiNsaW5lIDc4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5bmNoYXBpLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIEZhbWlseSBv
ciBHYW1lcyBQYXJ0aXRpb24NCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0
ZGNhbGwNCldhaXRGb3JNdWx0aXBsZU9iamVjdHMoDQogICAgICBEV09SRCBuQ291bnQsDQogICAg
ICBjb25zdCBIQU5ETEUqIGxwSGFuZGxlcywNCiAgICAgIEJPT0wgYldhaXRBbGwsDQogICAgICBE
V09SRCBkd01pbGxpc2Vjb25kcw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
QU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlU2VtYXBob3JlVygNCiAgICAgIExQU0VDVVJJVFlfQVRU
UklCVVRFUyBscFNlbWFwaG9yZUF0dHJpYnV0ZXMsDQogICAgICBMT05HIGxJbml0aWFsQ291bnQs
DQogICAgICBMT05HIGxNYXhpbXVtQ291bnQsDQogICAgICBMUENXU1RSIGxwTmFtZQ0KICAgICk7
DQoNCg0KDQoNCiNsaW5lIDgxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5bmNoYXBpLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZVdhaXRhYmxlVGltZXJX
KA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwVGltZXJBdHRyaWJ1dGVzLA0KICAgICAg
Qk9PTCBiTWFudWFsUmVzZXQsDQogICAgICBMUENXU1RSIGxwVGltZXJOYW1lDQogICAgKTsNCg0K
DQoNCg0KI2xpbmUgODI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3luY2hhcGkuaCINCg0KI2xpbmUgODMwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcc3luY2hhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUg
ODM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcc3luY2hhcGkuaCINCg0KI2xpbmUgODM3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
c3luY2hhcGkuaCINCiNsaW5lIDU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGludGVybG9ja2VkYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW50ZXJsb2NrZWRhcGkuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbnRlcmxvY2tl
ZGFwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGludGVybG9ja2Vk
YXBpLmgiDQoNCiNsaW5lIDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW50ZXJsb2NrZWRhcGkuaCINCg0KI2xp
bmUgMzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxpbnRlcmxvY2tlZGFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9y
IEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9p
ZA0KX19zdGRjYWxsDQpJbml0aWFsaXplU0xpc3RIZWFkKA0KICAgICAgUFNMSVNUX0hFQURFUiBM
aXN0SGVhZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpQU0xJU1RfRU5UUlkN
Cl9fc3RkY2FsbA0KSW50ZXJsb2NrZWRQb3BFbnRyeVNMaXN0KA0KICAgICAgUFNMSVNUX0hFQURF
UiBMaXN0SGVhZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpQU0xJU1RfRU5U
UlkNCl9fc3RkY2FsbA0KSW50ZXJsb2NrZWRQdXNoRW50cnlTTGlzdCgNCiAgICAgIFBTTElTVF9I
RUFERVIgTGlzdEhlYWQsDQogICAgICAgIFBTTElTVF9FTlRSWSBMaXN0RW50cnkNCiAgICApOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
aW50ZXJsb2NrZWRhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpQU0xJU1RfRU5UUlkN
Cl9fc3RkY2FsbA0KSW50ZXJsb2NrZWRGbHVzaFNMaXN0KA0KICAgICAgUFNMSVNUX0hFQURFUiBM
aXN0SGVhZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVU0hPUlQNCl9fc3Rk
Y2FsbA0KUXVlcnlEZXB0aFNMaXN0KA0KICAgICAgUFNMSVNUX0hFQURFUiBMaXN0SGVhZA0KICAg
ICk7DQoNCg0KI2xpbmUgMTA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW50ZXJsb2NrZWRhcGkuaCINCg0KI2xp
bmUgMTEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW50ZXJsb2NrZWRhcGkuaCINCg0KI2xpbmUgMTEyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcaW50ZXJsb2NrZWRhcGkuaCINCg0KDQoNCiNsaW5lIDExNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGludGVybG9ja2VkYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDEyMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGludGVybG9ja2VkYXBpLmgiDQoNCiNsaW5lIDEyMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGludGVybG9ja2VkYXBpLmgiDQojbGluZSA1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNs
aW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBp
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX1BST0NFU1NfSU5GT1JNQVRJT04gew0KICAgIEhBTkRMRSBoUHJvY2VzczsNCiAgICBIQU5E
TEUgaFRocmVhZDsNCiAgICBEV09SRCBkd1Byb2Nlc3NJZDsNCiAgICBEV09SRCBkd1RocmVhZElk
Ow0KfSBQUk9DRVNTX0lORk9STUFUSU9OLCAqUFBST0NFU1NfSU5GT1JNQVRJT04sICpMUFBST0NF
U1NfSU5GT1JNQVRJT047DQoNCnR5cGVkZWYgc3RydWN0IF9TVEFSVFVQSU5GT0Egew0KICAgIERX
T1JEICAgY2I7DQogICAgTFBTVFIgICBscFJlc2VydmVkOw0KICAgIExQU1RSICAgbHBEZXNrdG9w
Ow0KICAgIExQU1RSICAgbHBUaXRsZTsNCiAgICBEV09SRCAgIGR3WDsNCiAgICBEV09SRCAgIGR3
WTsNCiAgICBEV09SRCAgIGR3WFNpemU7DQogICAgRFdPUkQgICBkd1lTaXplOw0KICAgIERXT1JE
ICAgZHdYQ291bnRDaGFyczsNCiAgICBEV09SRCAgIGR3WUNvdW50Q2hhcnM7DQogICAgRFdPUkQg
ICBkd0ZpbGxBdHRyaWJ1dGU7DQogICAgRFdPUkQgICBkd0ZsYWdzOw0KICAgIFdPUkQgICAgd1No
b3dXaW5kb3c7DQogICAgV09SRCAgICBjYlJlc2VydmVkMjsNCiAgICBMUEJZVEUgIGxwUmVzZXJ2
ZWQyOw0KICAgIEhBTkRMRSAgaFN0ZElucHV0Ow0KICAgIEhBTkRMRSAgaFN0ZE91dHB1dDsNCiAg
ICBIQU5ETEUgIGhTdGRFcnJvcjsNCn0gU1RBUlRVUElORk9BLCAqTFBTVEFSVFVQSU5GT0E7DQp0
eXBlZGVmIHN0cnVjdCBfU1RBUlRVUElORk9XIHsNCiAgICBEV09SRCAgIGNiOw0KICAgIExQV1NU
UiAgbHBSZXNlcnZlZDsNCiAgICBMUFdTVFIgIGxwRGVza3RvcDsNCiAgICBMUFdTVFIgIGxwVGl0
bGU7DQogICAgRFdPUkQgICBkd1g7DQogICAgRFdPUkQgICBkd1k7DQogICAgRFdPUkQgICBkd1hT
aXplOw0KICAgIERXT1JEICAgZHdZU2l6ZTsNCiAgICBEV09SRCAgIGR3WENvdW50Q2hhcnM7DQog
ICAgRFdPUkQgICBkd1lDb3VudENoYXJzOw0KICAgIERXT1JEICAgZHdGaWxsQXR0cmlidXRlOw0K
ICAgIERXT1JEICAgZHdGbGFnczsNCiAgICBXT1JEICAgIHdTaG93V2luZG93Ow0KICAgIFdPUkQg
ICAgY2JSZXNlcnZlZDI7DQogICAgTFBCWVRFICBscFJlc2VydmVkMjsNCiAgICBIQU5ETEUgIGhT
dGRJbnB1dDsNCiAgICBIQU5ETEUgIGhTdGRPdXRwdXQ7DQogICAgSEFORExFICBoU3RkRXJyb3I7
DQp9IFNUQVJUVVBJTkZPVywgKkxQU1RBUlRVUElORk9XOw0KDQp0eXBlZGVmIFNUQVJUVVBJTkZP
VyBTVEFSVFVQSU5GTzsNCnR5cGVkZWYgTFBTVEFSVFVQSU5GT1cgTFBTVEFSVFVQSU5GTzsNCg0K
DQoNCiNsaW5lIDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCg0KI2xpbmUg
ODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9y
IEdhbWVzIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0
ZGNhbGwNClF1ZXVlVXNlckFQQygNCiAgICAgIFBBUENGVU5DIHBmbkFQQywNCiAgICAgIEhBTkRM
RSBoVGhyZWFkLA0KICAgICAgVUxPTkdfUFRSIGR3RGF0YQ0KICAgICk7DQoNCg0KI2xpbmUgMTAy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFByb2Nlc3NUaW1lcygNCiAgICAgIEhBTkRMRSBoUHJv
Y2VzcywNCiAgICAgIExQRklMRVRJTUUgbHBDcmVhdGlvblRpbWUsDQogICAgICBMUEZJTEVUSU1F
IGxwRXhpdFRpbWUsDQogICAgICBMUEZJTEVUSU1FIGxwS2VybmVsVGltZSwNCiAgICAgIExQRklM
RVRJTUUgbHBVc2VyVGltZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5E
TEUNCl9fc3RkY2FsbA0KR2V0Q3VycmVudFByb2Nlc3MoDQogICAgdm9pZA0KICAgICk7DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpHZXRDdXJyZW50UHJvY2Vz
c0lkKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KX19kZWNs
c3BlYyhub3JldHVybikNCnZvaWQNCl9fc3RkY2FsbA0KRXhpdFByb2Nlc3MoDQogICAgICBVSU5U
IHVFeGl0Q29kZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNClRlcm1pbmF0ZVByb2Nlc3MoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBV
SU5UIHVFeGl0Q29kZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkdldEV4aXRDb2RlUHJvY2VzcygNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAg
ICAgIExQRFdPUkQgbHBFeGl0Q29kZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNClN3aXRjaFRvVGhyZWFkKA0KICAgIHZvaWQNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZVRocmVh
ZCgNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFRocmVhZEF0dHJpYnV0ZXMsDQogICAg
ICBTSVpFX1QgZHdTdGFja1NpemUsDQogICAgICBMUFRIUkVBRF9TVEFSVF9ST1VUSU5FIGxwU3Rh
cnRBZGRyZXNzLA0KICAgICAgICBMUFZPSUQgbHBQYXJhbWV0ZXIsDQogICAgICBEV09SRCBkd0Ny
ZWF0aW9uRmxhZ3MsDQogICAgICBMUERXT1JEIGxwVGhyZWFkSWQNCiAgICApOw0KDQojbGluZSAx
ODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9y
IEdhbWVzIEZhbWlseQ0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkhBTkRMRQ0KX19zdGRj
YWxsDQpDcmVhdGVSZW1vdGVUaHJlYWQoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBM
UFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBUaHJlYWRBdHRyaWJ1dGVzLA0KICAgICAgU0laRV9UIGR3
U3RhY2tTaXplLA0KICAgICAgTFBUSFJFQURfU1RBUlRfUk9VVElORSBscFN0YXJ0QWRkcmVzcywN
CiAgICAgIExQVk9JRCBscFBhcmFtZXRlciwNCiAgICAgIERXT1JEIGR3Q3JlYXRpb25GbGFncywN
CiAgICAgIExQRFdPUkQgbHBUaHJlYWRJZA0KICAgICk7DQoNCg0KI2xpbmUgMjAwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpHZXRDdXJy
ZW50VGhyZWFkKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
RFdPUkQNCl9fc3RkY2FsbA0KR2V0Q3VycmVudFRocmVhZElkKA0KICAgIHZvaWQNCiAgICApOw0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCk9wZW5UaHJl
YWQoDQogICAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICBCT09MIGJJbmhlcml0SGFu
ZGxlLA0KICAgICAgRFdPUkQgZHdUaHJlYWRJZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFRocmVhZFByaW9yaXR5KA0KICAgICAgSEFORExF
IGhUaHJlYWQsDQogICAgICBpbnQgblByaW9yaXR5DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0VGhyZWFkUHJpb3JpdHlCb29zdCgNCiAgICAg
IEhBTkRMRSBoVGhyZWFkLA0KICAgICAgQk9PTCBiRGlzYWJsZVByaW9yaXR5Qm9vc3QNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRUaHJlYWRQ
cmlvcml0eUJvb3N0KA0KICAgICAgSEFORExFIGhUaHJlYWQsDQogICAgICBQQk9PTCBwRGlzYWJs
ZVByaW9yaXR5Qm9vc3QNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpf
X3N0ZGNhbGwNCkdldFRocmVhZFByaW9yaXR5KA0KICAgICAgSEFORExFIGhUaHJlYWQNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KX19kZWNsc3BlYyhub3JldHVybikNCnZvaWQN
Cl9fc3RkY2FsbA0KRXhpdFRocmVhZCgNCiAgICAgIERXT1JEIGR3RXhpdENvZGUNCiAgICApOw0K
DQojbGluZSAyNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpUZXJtaW5hdGVUaHJlYWQoDQogICAgICBIQU5ETEUgaFRocmVhZCwNCiAgICAgIERXT1JE
IGR3RXhpdENvZGUNCiAgICApOw0KDQojbGluZSAyODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhy
ZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRp
b24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpHZXRFeGl0Q29kZVRocmVhZCgNCiAg
ICAgIEhBTkRMRSBoVGhyZWFkLA0KICAgICAgTFBEV09SRCBscEV4aXRDb2RlDQogICAgKTsNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNClN1c3BlbmRUaHJlYWQo
DQogICAgICBIQU5ETEUgaFRocmVhZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpEV09SRA0KX19zdGRjYWxsDQpSZXN1bWVUaHJlYWQoDQogICAgICBIQU5ETEUgaFRocmVhZA0K
ICAgICk7DQoNCg0KDQoNCiNsaW5lIDMyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBp
LmgiDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KVGxzQWxs
b2MoDQogICAgdm9pZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMUFZPSUQN
Cl9fc3RkY2FsbA0KVGxzR2V0VmFsdWUoDQogICAgICBEV09SRCBkd1Rsc0luZGV4DQogICAgKTsN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVGxzU2V0VmFsdWUo
DQogICAgICBEV09SRCBkd1Rsc0luZGV4LA0KICAgICAgTFBWT0lEIGxwVGxzVmFsdWUNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpUbHNGcmVlKA0K
ICAgICAgRFdPUkQgZHdUbHNJbmRleA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0ZVByb2Nlc3NBKA0KICAgICAgTFBDU1RSIGxwQXBwbGlj
YXRpb25OYW1lLA0KICAgICAgTFBTVFIgbHBDb21tYW5kTGluZSwNCiAgICAgIExQU0VDVVJJVFlf
QVRUUklCVVRFUyBscFByb2Nlc3NBdHRyaWJ1dGVzLA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJV
VEVTIGxwVGhyZWFkQXR0cmlidXRlcywNCiAgICAgIEJPT0wgYkluaGVyaXRIYW5kbGVzLA0KICAg
ICAgRFdPUkQgZHdDcmVhdGlvbkZsYWdzLA0KICAgICAgTFBWT0lEIGxwRW52aXJvbm1lbnQsDQog
ICAgICBMUENTVFIgbHBDdXJyZW50RGlyZWN0b3J5LA0KICAgICAgTFBTVEFSVFVQSU5GT0EgbHBT
dGFydHVwSW5mbywNCiAgICAgIExQUFJPQ0VTU19JTkZPUk1BVElPTiBscFByb2Nlc3NJbmZvcm1h
dGlvbg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpD
cmVhdGVQcm9jZXNzVygNCiAgICAgIExQQ1dTVFIgbHBBcHBsaWNhdGlvbk5hbWUsDQogICAgICBM
UFdTVFIgbHBDb21tYW5kTGluZSwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFByb2Nl
c3NBdHRyaWJ1dGVzLA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwVGhyZWFkQXR0cmli
dXRlcywNCiAgICAgIEJPT0wgYkluaGVyaXRIYW5kbGVzLA0KICAgICAgRFdPUkQgZHdDcmVhdGlv
bkZsYWdzLA0KICAgICAgTFBWT0lEIGxwRW52aXJvbm1lbnQsDQogICAgICBMUENXU1RSIGxwQ3Vy
cmVudERpcmVjdG9yeSwNCiAgICAgIExQU1RBUlRVUElORk9XIGxwU3RhcnR1cEluZm8sDQogICAg
ICBMUFBST0NFU1NfSU5GT1JNQVRJT04gbHBQcm9jZXNzSW5mb3JtYXRpb24NCiAgICApOw0KDQoN
Cg0KDQoNCiNsaW5lIDM5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQoNCiNs
aW5lIDM5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0UHJvY2Vz
c1NodXRkb3duUGFyYW1ldGVycygNCiAgICAgIERXT1JEIGR3TGV2ZWwsDQogICAgICBEV09SRCBk
d0ZsYWdzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldFByb2Nlc3NWZXJzaW9uKA0KICAgICAgRFdPUkQgUHJvY2Vzc0lkDQogICAgKTsNCg0K
DQojbGluZSA0MjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0
ZGNhbGwNCkdldFN0YXJ0dXBJbmZvVygNCiAgICAgIExQU1RBUlRVUElORk9XIGxwU3RhcnR1cElu
Zm8NCiAgICApOw0KDQoNCg0KI2xpbmUgNDM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNh
cGkuaCINCg0KI2xpbmUgNDM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNv
cmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNy
ZWF0ZVByb2Nlc3NBc1VzZXJXKA0KICAgICAgSEFORExFIGhUb2tlbiwNCiAgICAgIExQQ1dTVFIg
bHBBcHBsaWNhdGlvbk5hbWUsDQogICAgICBMUFdTVFIgbHBDb21tYW5kTGluZSwNCiAgICAgIExQ
U0VDVVJJVFlfQVRUUklCVVRFUyBscFByb2Nlc3NBdHRyaWJ1dGVzLA0KICAgICAgTFBTRUNVUklU
WV9BVFRSSUJVVEVTIGxwVGhyZWFkQXR0cmlidXRlcywNCiAgICAgIEJPT0wgYkluaGVyaXRIYW5k
bGVzLA0KICAgICAgRFdPUkQgZHdDcmVhdGlvbkZsYWdzLA0KICAgICAgTFBWT0lEIGxwRW52aXJv
bm1lbnQsDQogICAgICBMUENXU1RSIGxwQ3VycmVudERpcmVjdG9yeSwNCiAgICAgIExQU1RBUlRV
UElORk9XIGxwU3RhcnR1cEluZm8sDQogICAgICBMUFBST0NFU1NfSU5GT1JNQVRJT04gbHBQcm9j
ZXNzSW5mb3JtYXRpb24NCiAgICApOw0KDQoNCg0KDQojbGluZSA0NjMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9jZXNzdGhyZWFkc2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTA2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNsaW5lIDUwNyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQoNCiNsaW5lIDUwOSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nl
c3N0aHJlYWRzYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBs
aWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KU2V0VGhyZWFkVG9rZW4oDQogICAgICBQSEFORExFIFRo
cmVhZCwNCiAgICAgIEhBTkRMRSBUb2tlbg0KICAgICk7DQoNCg0KI2xpbmUgNTI1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KT3BlblByb2Nl
c3NUb2tlbigNCiAgICAgIEhBTkRMRSBQcm9jZXNzSGFuZGxlLA0KICAgICAgRFdPUkQgRGVzaXJl
ZEFjY2VzcywNCiAgICAgUEhBTkRMRSBUb2tlbkhhbmRsZQ0KICAgICk7DQoNCg0KI2xpbmUgNTQx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpPcGVuVGhyZWFkVG9rZW4o
DQogICAgICBIQU5ETEUgVGhyZWFkSGFuZGxlLA0KICAgICAgRFdPUkQgRGVzaXJlZEFjY2VzcywN
CiAgICAgIEJPT0wgT3BlbkFzU2VsZiwNCiAgICAgUEhBTkRMRSBUb2tlbkhhbmRsZQ0KICAgICk7
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFByaW9yaXR5
Q2xhc3MoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBEV09SRCBkd1ByaW9yaXR5Q2xh
c3MNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0K
R2V0UHJpb3JpdHlDbGFzcygNCiAgICAgIEhBTkRMRSBoUHJvY2Vzcw0KICAgICk7DQoNCg0KI2xp
bmUgNTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9y
IEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpTZXRUaHJlYWRTdGFja0d1YXJhbnRlZSgNCiAgICAgIFBVTE9ORyBTdGFja1NpemVJbkJ5dGVz
DQogICAgKTsNCg0KDQojbGluZSA1ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KUHJvY2Vzc0lkVG9TZXNzaW9uSWQoDQogICAgICBEV09SRCBkd1Byb2Nlc3NJZCwNCiAgICAg
IERXT1JEKiBwU2Vzc2lvbklkDQogICAgKTsNCg0KDQojbGluZSA2MDQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
QXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoN
CnR5cGVkZWYgc3RydWN0IF9QUk9DX1RIUkVBRF9BVFRSSUJVVEVfTElTVCAqUFBST0NfVEhSRUFE
X0FUVFJJQlVURV9MSVNULCAqTFBQUk9DX1RIUkVBRF9BVFRSSUJVVEVfTElTVDsNCg0KI2xpbmUg
NjEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBv
ciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19z
dGRjYWxsDQpHZXRQcm9jZXNzSWQoDQogICAgICBIQU5ETEUgUHJvY2Vzcw0KICAgICk7DQoNCg0K
I2xpbmUgNjI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0VGhyZWFkSWQoDQogICAgICBI
QU5ETEUgVGhyZWFkDQogICAgKTsNCg0KDQojbGluZSA2NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNz
dGhyZWFkc2FwaS5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNh
bGwNCkZsdXNoUHJvY2Vzc1dyaXRlQnVmZmVycygNCiAgICB2b2lkDQogICAgKTsNCg0KDQojbGlu
ZSA2NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KDQojbGluZSA2NTQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoN
CiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBH
YW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwN
CkdldFByb2Nlc3NJZE9mVGhyZWFkKA0KICAgICAgSEFORExFIFRocmVhZA0KICAgICk7DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNCkluaXRpYWxpemVQcm9j
VGhyZWFkQXR0cmlidXRlTGlzdCgNCiAgICAgIExQUFJPQ19USFJFQURfQVRUUklCVVRFX0xJU1Qg
bHBBdHRyaWJ1dGVMaXN0LA0KICAgICAgRFdPUkQgZHdBdHRyaWJ1dGVDb3VudCwNCiAgICAgIERX
T1JEIGR3RmxhZ3MsDQogICAgICBQU0laRV9UIGxwU2l6ZQ0KICAgICk7DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkRlbGV0ZVByb2NUaHJlYWRBdHRyaWJ1dGVM
aXN0KA0KICAgICAgTFBQUk9DX1RIUkVBRF9BVFRSSUJVVEVfTElTVCBscEF0dHJpYnV0ZUxpc3QN
CiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
VXBkYXRlUHJvY1RocmVhZEF0dHJpYnV0ZSgNCiAgICAgIExQUFJPQ19USFJFQURfQVRUUklCVVRF
X0xJU1QgbHBBdHRyaWJ1dGVMaXN0LA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIERXT1JE
X1BUUiBBdHRyaWJ1dGUsDQogICAgICBQVk9JRCBscFZhbHVlLA0KICAgICAgU0laRV9UIGNiU2l6
ZSwNCiAgICAgIFBWT0lEIGxwUHJldmlvdXNWYWx1ZSwNCiAgICAgIFBTSVpFX1QgbHBSZXR1cm5T
aXplDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MTggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KDQojbGluZSA3MjAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
QXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRQcm9jZXNzQWZmaW5pdHlVcGRhdGVNb2Rl
KA0KICAgICAgSEFORExFIGhQcm9jZXNzLA0KICAgICAgRFdPUkQgZHdGbGFncw0KICAgICk7DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClF1ZXJ5UHJvY2Vzc0Fm
ZmluaXR5VXBkYXRlTW9kZSgNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIExQRFdPUkQg
bHBkd0ZsYWdzDQogICAgKTsNCg0KDQojbGluZSA3NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhy
ZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgNzQ5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
cHJvY2Vzc3RocmVhZHNhcGkuaCINCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZVJlbW90ZVRocmVhZEV4KA0KICAgICAg
SEFORExFIGhQcm9jZXNzLA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwVGhyZWFkQXR0
cmlidXRlcywNCiAgICAgIFNJWkVfVCBkd1N0YWNrU2l6ZSwNCiAgICAgIExQVEhSRUFEX1NUQVJU
X1JPVVRJTkUgbHBTdGFydEFkZHJlc3MsDQogICAgICBMUFZPSUQgbHBQYXJhbWV0ZXIsDQogICAg
ICBEV09SRCBkd0NyZWF0aW9uRmxhZ3MsDQogICAgICBMUFBST0NfVEhSRUFEX0FUVFJJQlVURV9M
SVNUIGxwQXR0cmlidXRlTGlzdCwNCiAgICAgIExQRFdPUkQgbHBUaHJlYWRJZA0KICAgICk7DQoN
Cg0KI2xpbmUgNzcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDc4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRUaHJlYWRDb250ZXh0KA0KICAgICAgSEFO
RExFIGhUaHJlYWQsDQogICAgICBMUENPTlRFWFQgbHBDb250ZXh0DQogICAgKTsNCg0KDQojbGlu
ZSA4MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4MTkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9jZXNzdGhyZWFkc2FwaS5oIg0KDQojbGluZSA4MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhy
ZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFRocmVhZENvbnRleHQoDQogICAgICBIQU5E
TEUgaFRocmVhZCwNCiAgICAgIGNvbnN0IENPTlRFWFQqIGxwQ29udGV4dA0KICAgICk7DQoNCg0K
I2xpbmUgODM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODU0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJv
Y2Vzc3RocmVhZHNhcGkuaCINCg0KI2xpbmUgODU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVh
ZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDg1OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHBy
b2Nlc3N0aHJlYWRzYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpGbHVzaEluc3RydWN0aW9uQ2FjaGUoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAg
ICBMUENWT0lEIGxwQmFzZUFkZHJlc3MsDQogICAgICBTSVpFX1QgZHdTaXplDQogICAgKTsNCg0K
DQojbGluZSA4NzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpHZXRUaHJlYWRUaW1lcygNCiAgICAgIEhBTkRMRSBoVGhyZWFkLA0KICAgICAg
TFBGSUxFVElNRSBscENyZWF0aW9uVGltZSwNCiAgICAgIExQRklMRVRJTUUgbHBFeGl0VGltZSwN
CiAgICAgIExQRklMRVRJTUUgbHBLZXJuZWxUaW1lLA0KICAgICAgTFBGSUxFVElNRSBscFVzZXJU
aW1lDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxs
DQpPcGVuUHJvY2VzcygNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIEJPT0wg
YkluaGVyaXRIYW5kbGUsDQogICAgICBEV09SRCBkd1Byb2Nlc3NJZA0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzUHJvY2Vzc29yRmVhdHVyZVBy
ZXNlbnQoDQogICAgICBEV09SRCBQcm9jZXNzb3JGZWF0dXJlDQogICAgKTsNCg0KDQojbGluZSA5
MTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWls
eSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0UHJvY2Vzc0hhbmRsZUNvdW50KA0KICAgICAgSEFORExFIGhQcm9jZXNzLA0KICAg
ICAgUERXT1JEIHBkd0hhbmRsZUNvdW50DQogICAgKTsNCg0KDQojbGluZSA5MjcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgOTMw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCg0KDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldEN1cnJlbnRQcm9j
ZXNzb3JOdW1iZXIoDQogICAgdm9pZA0KICAgICk7DQoNCg0KI2xpbmUgOTQ1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDk0OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFRocmVhZElkZWFsUHJv
Y2Vzc29yRXgoDQogICAgICBIQU5ETEUgaFRocmVhZCwNCiAgICAgIFBQUk9DRVNTT1JfTlVNQkVS
IGxwSWRlYWxQcm9jZXNzb3IsDQogICAgICBQUFJPQ0VTU09SX05VTUJFUiBscFByZXZpb3VzSWRl
YWxQcm9jZXNzb3INCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpHZXRUaHJlYWRJZGVhbFByb2Nlc3NvckV4KA0KICAgICAgSEFORExFIGhUaHJlYWQs
DQogICAgICBQUFJPQ0VTU09SX05VTUJFUiBscElkZWFsUHJvY2Vzc29yDQogICAgKTsNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KR2V0Q3VycmVudFByb2Nlc3Nv
ck51bWJlckV4KA0KICAgICAgUFBST0NFU1NPUl9OVU1CRVIgUHJvY051bWJlcg0KICAgICk7DQoN
Cg0KI2xpbmUgOTgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNsaW5lIDk4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgi
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBv
ciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNCkdldFByb2Nlc3NQcmlvcml0eUJvb3N0KA0KICAgICAgSEFORExFIGhQcm9jZXNzLA0K
ICAgICAgUEJPT0wgcERpc2FibGVQcmlvcml0eUJvb3N0DQogICAgKTsNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0UHJvY2Vzc1ByaW9yaXR5Qm9vc3QoDQog
ICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBCT09MIGJEaXNhYmxlUHJpb3JpdHlCb29zdA0K
ICAgICk7DQoNCg0KI2xpbmUgMTAxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgi
DQoNCiNsaW5lIDEwMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdl
dFRocmVhZElPUGVuZGluZ0ZsYWcoDQogICAgICBIQU5ETEUgaFRocmVhZCwNCiAgICAgIFBCT09M
IGxwSU9Jc1BlbmRpbmcNCiAgICApOw0KDQoNCiNsaW5lIDEwMjkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9j
ZXNzdGhyZWFkc2FwaS5oIg0KI2xpbmUgMTAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRz
YXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldFN5c3RlbVRpbWVzKA0KICAgICAgUEZJTEVUSU1FIGxwSWRsZVRp
bWUsDQogICAgICBQRklMRVRJTUUgbHBLZXJuZWxUaW1lLA0KICAgICAgUEZJTEVUSU1FIGxwVXNl
clRpbWUNCiAgICApOw0KDQoNCiNsaW5lIDEwNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFk
c2FwaS5oIg0KI2xpbmUgMTA0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBfVEhSRUFEX0lORk9STUFU
SU9OX0NMQVNTIHsNCiAgICBUaHJlYWRNZW1vcnlQcmlvcml0eSwNCiAgICBUaHJlYWRBYnNvbHV0
ZUNwdVByaW9yaXR5LA0KICAgIFRocmVhZER5bmFtaWNDb2RlUG9saWN5LA0KICAgIFRocmVhZFBv
d2VyVGhyb3R0bGluZywNCiAgICBUaHJlYWRJbmZvcm1hdGlvbkNsYXNzTWF4DQp9IFRIUkVBRF9J
TkZPUk1BVElPTl9DTEFTUzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDk1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVh
ZHNhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9USFJFQURfUE9XRVJf
VEhST1RUTElOR19TVEFURSB7DQogICAgVUxPTkcgVmVyc2lvbjsNCiAgICBVTE9ORyBDb250cm9s
TWFzazsNCiAgICBVTE9ORyBTdGF0ZU1hc2s7DQp9IFRIUkVBRF9QT1dFUl9USFJPVFRMSU5HX1NU
QVRFOw0KDQojbGluZSAxMTExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCg0K
I2xpbmUgMTExMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWls
eQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTMwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJv
Y2Vzc3RocmVhZHNhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTE1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRzYXBpLmgiDQoNCiNs
aW5lIDExNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNClNldFRocmVhZElk
ZWFsUHJvY2Vzc29yKA0KICAgICAgSEFORExFIGhUaHJlYWQsDQogICAgICBEV09SRCBkd0lkZWFs
UHJvY2Vzc29yDQogICAgKTsNCg0KDQojbGluZSAxMTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3Ro
cmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0
aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCnR5cGVkZWYgZW51bSBfUFJPQ0VTU19J
TkZPUk1BVElPTl9DTEFTUyB7DQogICAgUHJvY2Vzc01lbW9yeVByaW9yaXR5LA0KICAgIFByb2Nl
c3NNZW1vcnlFeGhhdXN0aW9uSW5mbywNCiAgICBQcm9jZXNzQXBwTWVtb3J5SW5mbywNCiAgICBQ
cm9jZXNzSW5Qcml2YXRlSW5mbywNCiAgICBQcm9jZXNzUG93ZXJUaHJvdHRsaW5nLA0KICAgIFBy
b2Nlc3NSZXNlcnZlZFZhbHVlMSwgICAgICAgICAgIA0KICAgIFByb2Nlc3NUZWxlbWV0cnlDb3Zl
cmFnZUluZm8sDQogICAgUHJvY2Vzc1Byb3RlY3Rpb25MZXZlbEluZm8sDQogICAgUHJvY2Vzc0xl
YXBTZWNvbmRJbmZvLA0KICAgIFByb2Nlc3NJbmZvcm1hdGlvbkNsYXNzTWF4DQp9IFBST0NFU1Nf
SU5GT1JNQVRJT05fQ0xBU1M7DQoNCnR5cGVkZWYgc3RydWN0IF9BUFBfTUVNT1JZX0lORk9STUFU
SU9OIHsNCiAgICBVTE9ORzY0IEF2YWlsYWJsZUNvbW1pdDsNCiAgICBVTE9ORzY0IFByaXZhdGVD
b21taXRVc2FnZTsNCiAgICBVTE9ORzY0IFBlYWtQcml2YXRlQ29tbWl0VXNhZ2U7DQogICAgVUxP
Tkc2NCBUb3RhbENvbW1pdFVzYWdlOw0KfSBBUFBfTUVNT1JZX0lORk9STUFUSU9OLCAqUEFQUF9N
RU1PUllfSU5GT1JNQVRJT047DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9QUk9DRVNT
X01FTU9SWV9FWEhBVVNUSU9OX1RZUEUgew0KICAgIFBNRVR5cGVGYWlsRmFzdE9uQ29tbWl0RmFp
bHVyZSwNCiAgICBQTUVUeXBlTWF4DQp9IFBST0NFU1NfTUVNT1JZX0VYSEFVU1RJT05fVFlQRSwg
KlBQUk9DRVNTX01FTU9SWV9FWEhBVVNUSU9OX1RZUEU7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IF9QUk9DRVNTX01FTU9SWV9FWEhBVVNUSU9OX0lORk8gew0KICAgIFVTSE9SVCBWZXJzaW9uOw0K
ICAgIFVTSE9SVCBSZXNlcnZlZDsNCiAgICBQUk9DRVNTX01FTU9SWV9FWEhBVVNUSU9OX1RZUEUg
VHlwZTsNCiAgICBVTE9OR19QVFIgVmFsdWU7DQp9IFBST0NFU1NfTUVNT1JZX0VYSEFVU1RJT05f
SU5GTywgKlBQUk9DRVNTX01FTU9SWV9FWEhBVVNUSU9OX0lORk87DQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IF9QUk9DRVNTX1BPV0VSX1RIUk9UVExJTkdfU1RBVEUgew0KICAgIFVMT05H
IFZlcnNpb247DQogICAgVUxPTkcgQ29udHJvbE1hc2s7DQogICAgVUxPTkcgU3RhdGVNYXNrOw0K
fSBQUk9DRVNTX1BPV0VSX1RIUk9UVExJTkdfU1RBVEUsICpQUFJPQ0VTU19QT1dFUl9USFJPVFRM
SU5HX1NUQVRFOw0KDQp0eXBlZGVmIHN0cnVjdCBQUk9DRVNTX1BST1RFQ1RJT05fTEVWRUxfSU5G
T1JNQVRJT04gew0KICAgIERXT1JEIFByb3RlY3Rpb25MZXZlbDsNCn0gUFJPQ0VTU19QUk9URUNU
SU9OX0xFVkVMX0lORk9STUFUSU9OOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9QUk9DRVNT
X0xFQVBfU0VDT05EX0lORk8gew0KICAgIFVMT05HIEZsYWdzOw0KICAgIFVMT05HIFJlc2VydmVk
Ow0KfSBQUk9DRVNTX0xFQVBfU0VDT05EX0lORk8sICpQUFJPQ0VTU19MRUFQX1NFQ09ORF9JTkZP
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxMjY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMjUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxwcm9jZXNzdGhyZWFkc2FwaS5oIg0KDQojbGluZSAxMzI3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxccHJvY2Vzc3RocmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVn
aW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0ZVByb2Nlc3NBc1VzZXJBKA0KICAgICAgSEFO
RExFIGhUb2tlbiwNCiAgICAgIExQQ1NUUiBscEFwcGxpY2F0aW9uTmFtZSwNCiAgICAgIExQU1RS
IGxwQ29tbWFuZExpbmUsDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBQcm9jZXNzQXR0
cmlidXRlcywNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFRocmVhZEF0dHJpYnV0ZXMs
DQogICAgICBCT09MIGJJbmhlcml0SGFuZGxlcywNCiAgICAgIERXT1JEIGR3Q3JlYXRpb25GbGFn
cywNCiAgICAgIExQVk9JRCBscEVudmlyb25tZW50LA0KICAgICAgTFBDU1RSIGxwQ3VycmVudERp
cmVjdG9yeSwNCiAgICAgIExQU1RBUlRVUElORk9BIGxwU3RhcnR1cEluZm8sDQogICAgICBMUFBS
T0NFU1NfSU5GT1JNQVRJT04gbHBQcm9jZXNzSW5mb3JtYXRpb24NCiAgICApOw0KDQoNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFByb2Nlc3NTaHV0
ZG93blBhcmFtZXRlcnMoDQogICAgICBMUERXT1JEIGxwZHdMZXZlbCwNCiAgICAgIExQRFdPUkQg
bHBkd0ZsYWdzDQogICAgKTsNCg0KDQojbGluZSAxMzY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3Ro
cmVhZHNhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
SFJFU1VMVA0KX19zdGRjYWxsDQpTZXRUaHJlYWREZXNjcmlwdGlvbigNCiAgICAgIEhBTkRMRSBo
VGhyZWFkLA0KICAgICAgUENXU1RSIGxwVGhyZWFkRGVzY3JpcHRpb24NCiAgICApOw0KDQogDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkhSRVNVTFQNCl9fc3RkY2FsbA0KR2V0VGhyZWFkRGVzY3Jp
cHRpb24oDQogICAgICBIQU5ETEUgaFRocmVhZCwNCiAgICAgUFdTVFIqIHBwc3pUaHJlYWREZXNj
cmlwdGlvbg0KICAgICk7DQoNCg0KDQp9DQojbGluZSAxMzg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vz
c3RocmVhZHNhcGkuaCINCg0KI2xpbmUgMTM4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0aHJlYWRz
YXBpLmgiDQojbGluZSA1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNs
aW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTE0KQ0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0
MTAzKQ0KI2xpbmUgMjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCiNwcmFnbWEgd2Fy
bmluZyhwdXNoKQ0KI2xpbmUgMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQojcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTo0MDAxKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkNCiNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMTQpDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2lu
Zm9hcGkuaCINCg0KDQoNCiNsaW5lIDM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KDQoj
bGluZSAzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KDQpleHRlcm4gIkMiIHsNCiNs
aW5lIDQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBs
aWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1NZU1RFTV9JTkZPIHsNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEIGR3
T2VtSWQ7ICAgICAgICAgIA0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgV09SRCB3UHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlOw0KICAgICAgICAgICAgV09SRCB3UmVzZXJ2ZWQ7DQogICAgICAg
IH0gOw0KICAgIH0gOw0KICAgIERXT1JEIGR3UGFnZVNpemU7DQogICAgTFBWT0lEIGxwTWluaW11
bUFwcGxpY2F0aW9uQWRkcmVzczsNCiAgICBMUFZPSUQgbHBNYXhpbXVtQXBwbGljYXRpb25BZGRy
ZXNzOw0KICAgIERXT1JEX1BUUiBkd0FjdGl2ZVByb2Nlc3Nvck1hc2s7DQogICAgRFdPUkQgZHdO
dW1iZXJPZlByb2Nlc3NvcnM7DQogICAgRFdPUkQgZHdQcm9jZXNzb3JUeXBlOw0KICAgIERXT1JE
IGR3QWxsb2NhdGlvbkdyYW51bGFyaXR5Ow0KICAgIFdPUkQgd1Byb2Nlc3NvckxldmVsOw0KICAg
IFdPUkQgd1Byb2Nlc3NvclJldmlzaW9uOw0KfSBTWVNURU1fSU5GTywgKkxQU1lTVEVNX0lORk87
DQoNCnR5cGVkZWYgc3RydWN0IF9NRU1PUllTVEFUVVNFWCB7DQogICAgRFdPUkQgZHdMZW5ndGg7
DQogICAgRFdPUkQgZHdNZW1vcnlMb2FkOw0KICAgIERXT1JETE9ORyB1bGxUb3RhbFBoeXM7DQog
ICAgRFdPUkRMT05HIHVsbEF2YWlsUGh5czsNCiAgICBEV09SRExPTkcgdWxsVG90YWxQYWdlRmls
ZTsNCiAgICBEV09SRExPTkcgdWxsQXZhaWxQYWdlRmlsZTsNCiAgICBEV09SRExPTkcgdWxsVG90
YWxWaXJ0dWFsOw0KICAgIERXT1JETE9ORyB1bGxBdmFpbFZpcnR1YWw7DQogICAgRFdPUkRMT05H
IHVsbEF2YWlsRXh0ZW5kZWRWaXJ0dWFsOw0KfSBNRU1PUllTVEFUVVNFWCwgKkxQTUVNT1JZU1RB
VFVTRVg7DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
Ckdsb2JhbE1lbW9yeVN0YXR1c0V4KA0KICAgICAgTFBNRU1PUllTVEFUVVNFWCBscEJ1ZmZlcg0K
ICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkdldFN5
c3RlbUluZm8oDQogICAgICBMUFNZU1RFTV9JTkZPIGxwU3lzdGVtSW5mbw0KICAgICk7DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkdldFN5c3RlbVRpbWUoDQog
ICAgICBMUFNZU1RFTVRJTUUgbHBTeXN0ZW1UaW1lDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoDQogICAg
ICBMUEZJTEVUSU1FIGxwU3lzdGVtVGltZUFzRmlsZVRpbWUNCiAgICApOw0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpHZXRMb2NhbFRpbWUoDQogICAgICBMUFNZ
U1RFTVRJTUUgbHBTeXN0ZW1UaW1lDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDEzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KI2xpbmUgMTM1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcc3lzaW5mb2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
QXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDE1MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KI2xpbmUgMTU0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5
DQoNCg0KX19kZWNsc3BlYyhkZXByZWNhdGVkKQ0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpE
V09SRA0KX19zdGRjYWxsDQpHZXRWZXJzaW9uKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRMb2NhbFRpbWUoDQogICAgICBj
b25zdCBTWVNURU1USU1FKiBscFN5c3RlbVRpbWUNCiAgICApOw0KDQoNCiNsaW5lIDE3OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWls
eQ0KDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0VGlj
a0NvdW50KA0KICAgIHZvaWQNCiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
ClVMT05HTE9ORw0KX19zdGRjYWxsDQpHZXRUaWNrQ291bnQ2NCgNCiAgICB2b2lkDQogICAgKTsN
Cg0KDQojbGluZSAyMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCiNsaW5lIDIwNiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpHZXRTeXN0ZW1U
aW1lQWRqdXN0bWVudCgNCiAgICAgIFBEV09SRCBscFRpbWVBZGp1c3RtZW50LA0KICAgICAgUERX
T1JEIGxwVGltZUluY3JlbWVudCwNCiAgICAgIFBCT09MIGxwVGltZUFkanVzdG1lbnREaXNhYmxl
ZA0KICAgICk7DQoNCg0KI2xpbmUgMjIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0K
R2V0U3lzdGVtVGltZUFkanVzdG1lbnRQcmVjaXNlKA0KICAgICAgUERXT1JENjQgbHBUaW1lQWRq
dXN0bWVudCwNCiAgICAgIFBEV09SRDY0IGxwVGltZUluY3JlbWVudCwNCiAgICAgIFBCT09MIGxw
VGltZUFkanVzdG1lbnREaXNhYmxlZA0KICAgICk7DQoNCg0KI2xpbmUgMjQwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcc3lzaW5mb2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBw
bGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KVUlOVA0KX19zdGRjYWxsDQpHZXRTeXN0ZW1EaXJlY3Rv
cnlBKA0KICAgICAgTFBTVFIgbHBCdWZmZXIsDQogICAgICBVSU5UIHVTaXplDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpVSU5UDQpfX3N0ZGNhbGwNCkdldFN5c3RlbURpcmVj
dG9yeVcoDQogICAgICBMUFdTVFIgbHBCdWZmZXIsDQogICAgICBVSU5UIHVTaXplDQogICAgKTsN
Cg0KDQoNCg0KDQojbGluZSAyNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCiNsaW5l
IDI3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZh
bWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0KVUlOVA0KX19zdGRjYWxsDQpH
ZXRXaW5kb3dzRGlyZWN0b3J5QSgNCiAgICAgIExQU1RSIGxwQnVmZmVyLA0KICAgICAgVUlOVCB1
U2l6ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0KVUlOVA0KX19zdGRj
YWxsDQpHZXRXaW5kb3dzRGlyZWN0b3J5VygNCiAgICAgIExQV1NUUiBscEJ1ZmZlciwNCiAgICAg
IFVJTlQgdVNpemUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDMwMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5
c2luZm9hcGkuaCINCg0KI2xpbmUgMzAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9u
ZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KVUlOVA0KX19zdGRjYWxsDQpHZXRTeXN0ZW1XaW5kb3dzRGlyZWN0b3J5QSgNCiAgICAgIExQ
U1RSIGxwQnVmZmVyLA0KICAgICAgVUlOVCB1U2l6ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KIA0KVUlOVA0KX19zdGRjYWxsDQpHZXRTeXN0ZW1XaW5kb3dzRGlyZWN0b3J5VygN
CiAgICAgIExQV1NUUiBscEJ1ZmZlciwNCiAgICAgIFVJTlQgdVNpemUNCiAgICApOw0KDQoNCg0K
DQoNCiNsaW5lIDMzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KI2xpbmUgMzMyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoN
Cg0KdHlwZWRlZiBlbnVtIF9DT01QVVRFUl9OQU1FX0ZPUk1BVCB7DQogICAgQ29tcHV0ZXJOYW1l
TmV0QklPUywNCiAgICBDb21wdXRlck5hbWVEbnNIb3N0bmFtZSwNCiAgICBDb21wdXRlck5hbWVE
bnNEb21haW4sDQogICAgQ29tcHV0ZXJOYW1lRG5zRnVsbHlRdWFsaWZpZWQsDQogICAgQ29tcHV0
ZXJOYW1lUGh5c2ljYWxOZXRCSU9TLA0KICAgIENvbXB1dGVyTmFtZVBoeXNpY2FsRG5zSG9zdG5h
bWUsDQogICAgQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNEb21haW4sDQogICAgQ29tcHV0ZXJOYW1l
UGh5c2ljYWxEbnNGdWxseVF1YWxpZmllZCwNCiAgICBDb21wdXRlck5hbWVNYXgNCn0gQ09NUFVU
RVJfTkFNRV9GT1JNQVQgOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0Q29tcHV0ZXJOYW1lRXhBKA0KICAgICAgQ09NUFVURVJfTkFNRV9GT1JNQVQgTmFt
ZVR5cGUsDQogICAgICBMUFNUUiBscEJ1ZmZlciwNCiAgICAgIExQRFdPUkQgblNpemUNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q29tcHV0
ZXJOYW1lRXhXKA0KICAgICAgQ09NUFVURVJfTkFNRV9GT1JNQVQgTmFtZVR5cGUsDQogICAgICBM
UFdTVFIgbHBCdWZmZXIsDQogICAgICBMUERXT1JEIG5TaXplDQogICAgKTsNCg0KDQoNCg0KDQoj
bGluZSAzNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCiNsaW5lIDM3NiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldENvbXB1dGVyTmFtZUV4VygNCiAgICAgIENPTVBVVEVS
X05BTUVfRk9STUFUIE5hbWVUeXBlLA0KICAgICAgTFBDV1NUUiBscEJ1ZmZlcg0KICAgICk7DQoN
Cg0KDQoNCiNsaW5lIDM5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFN5c3RlbVRpbWUoDQogICAgICBjb25z
dCBTWVNURU1USU1FKiBscFN5c3RlbVRpbWUNCiAgICApOw0KDQoNCiNsaW5lIDQwMyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRlcHJlY2F0ZWQpDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wN
Cl9fc3RkY2FsbA0KR2V0VmVyc2lvbkV4QSgNCiAgICAgIExQT1NWRVJTSU9OSU5GT0EgbHBWZXJz
aW9uSW5mb3JtYXRpb24NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRlcHJlY2F0ZWQpDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KR2V0VmVyc2lvbkV4VygNCiAgICAg
IExQT1NWRVJTSU9OSU5GT1cgbHBWZXJzaW9uSW5mb3JtYXRpb24NCiAgICApOw0KDQoNCg0KDQoN
CiNsaW5lIDQzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldExvZ2ljYWxQcm9jZXNzb3JJbmZvcm1hdGlvbigN
CiAgICAgIFBTWVNURU1fTE9HSUNBTF9QUk9DRVNTT1JfSU5GT1JNQVRJT04gQnVmZmVyLA0KICAg
ICAgUERXT1JEIFJldHVybmVkTGVuZ3RoDQogICAgKTsNCg0KDQojbGluZSA0NDIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxzeXNpbmZvYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldExvZ2ljYWxQcm9jZXNzb3JJbmZvcm1hdGlv
bkV4KA0KICAgICAgTE9HSUNBTF9QUk9DRVNTT1JfUkVMQVRJT05TSElQIFJlbGF0aW9uc2hpcFR5
cGUsDQogICAgICBQU1lTVEVNX0xPR0lDQUxfUFJPQ0VTU09SX0lORk9STUFUSU9OX0VYIEJ1ZmZl
ciwNCiAgICAgIFBEV09SRCBSZXR1cm5lZExlbmd0aA0KICAgICk7DQoNCg0KI2xpbmUgNDYwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KDQojbGluZSA0NjIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNp
bmZvYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlv
biBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpHZXROYXRpdmVTeXN0ZW1JbmZvKA0K
ICAgICAgTFBTWVNURU1fSU5GTyBscFN5c3RlbUluZm8NCiAgICApOw0KDQoNCiNsaW5lIDQ3OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0
OTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCiNsaW5lIDQ5MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0UHJvZHVjdEluZm8oDQogICAgICBEV09SRCBkd09T
TWFqb3JWZXJzaW9uLA0KICAgICAgRFdPUkQgZHdPU01pbm9yVmVyc2lvbiwNCiAgICAgIERXT1JE
IGR3U3BNYWpvclZlcnNpb24sDQogICAgICBEV09SRCBkd1NwTWlub3JWZXJzaW9uLA0KICAgICAg
UERXT1JEIHBkd1JldHVybmVkUHJvZHVjdFR5cGUNCiAgICApOw0KDQoNCiNsaW5lIDUxMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KI2xpbmUgNTE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzaW5m
b2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVTE9O
R0xPTkcNCl9fc3RkY2FsbA0KVmVyU2V0Q29uZGl0aW9uTWFzaygNCiAgICAgIFVMT05HTE9ORyBD
b25kaXRpb25NYXNrLA0KICAgICAgVUxPTkcgVHlwZU1hc2ssDQogICAgICBVQ0hBUiBDb25kaXRp
b24NCiAgICApOw0KDQoNCiNsaW5lIDUzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgi
DQoNCiNsaW5lIDU0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIE9uZUNvcmUgRmFtaWx5IG9yIEFwcCBGYW1pbHkNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9fc3RkY2FsbA0KRW51bVN5c3RlbUZpcm13YXJl
VGFibGVzKA0KICAgICAgRFdPUkQgRmlybXdhcmVUYWJsZVByb3ZpZGVyU2lnbmF0dXJlLA0KICAg
ICAgUFZPSUQgcEZpcm13YXJlVGFibGVFbnVtQnVmZmVyLA0KICAgICAgRFdPUkQgQnVmZmVyU2l6
ZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdl
dFN5c3RlbUZpcm13YXJlVGFibGUoDQogICAgICBEV09SRCBGaXJtd2FyZVRhYmxlUHJvdmlkZXJT
aWduYXR1cmUsDQogICAgICBEV09SRCBGaXJtd2FyZVRhYmxlSUQsDQogICAgICBQVk9JRCBwRmly
bXdhcmVUYWJsZUJ1ZmZlciwNCiAgICAgIERXT1JEIEJ1ZmZlclNpemUNCiAgICApOw0KDQoNCiNs
aW5lIDU3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNCkRuc0hvc3RuYW1lVG9Db21w
dXRlck5hbWVFeFcoDQogICAgICBMUENXU1RSIEhvc3RuYW1lLA0KICAgICAgTFBXU1RSIENvbXB1
dGVyTmFtZSwNCiAgICAgIExQRFdPUkQgblNpemUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpHZXRQaHlzaWNhbGx5SW5zdGFsbGVkU3lzdGVt
TWVtb3J5KA0KICAgICAgUFVMT05HTE9ORyBUb3RhbE1lbW9yeUluS2lsb2J5dGVzDQogICAgKTsN
Cg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldENvbXB1
dGVyTmFtZUV4MlcoDQogICAgICBDT01QVVRFUl9OQU1FX0ZPUk1BVCBOYW1lVHlwZSwNCiAgICAg
IERXT1JEIEZsYWdzLA0KICAgICAgTFBDV1NUUiBscEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCiNs
aW5lIDYxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNClNldFN5c3RlbVRpbWVBZGp1c3RtZW50KA0KICAgICAg
RFdPUkQgZHdUaW1lQWRqdXN0bWVudCwNCiAgICAgIEJPT0wgYlRpbWVBZGp1c3RtZW50RGlzYWJs
ZWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxs
DQpTZXRTeXN0ZW1UaW1lQWRqdXN0bWVudFByZWNpc2UoDQogICAgICBEV09SRDY0IGR3VGltZUFk
anVzdG1lbnQsDQogICAgICBCT09MIGJUaW1lQWRqdXN0bWVudERpc2FibGVkDQogICAgKTsNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSW5zdGFsbEVMQU1DZXJ0
aWZpY2F0ZUluZm8oDQogICAgICBIQU5ETEUgRUxBTUZpbGUNCiAgICApOw0KDQoNCiNsaW5lIDY0
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0UHJvY2Vzc29yU3lzdGVt
Q3ljbGVUaW1lKA0KICAgICAgVVNIT1JUIEdyb3VwLA0KICAgICAgUFNZU1RFTV9QUk9DRVNTT1Jf
Q1lDTEVfVElNRV9JTkZPUk1BVElPTiBCdWZmZXIsDQogICAgICBQRFdPUkQgUmV0dXJuZWRMZW5n
dGgNCiAgICApOw0KDQoNCiNsaW5lIDY1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA2NzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCiNs
aW5lIDY3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIEFwcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDY5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KI2xp
bmUgNjkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q29tcHV0ZXJOYW1lQSgNCiAg
ICAgIExQQ1NUUiBscENvbXB1dGVyTmFtZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRDb21wdXRlck5hbWVXKA0KICAgICAgTFBDV1NUUiBscENv
bXB1dGVyTmFtZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNzE2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lz
aW5mb2FwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0
Q29tcHV0ZXJOYW1lRXhBKA0KICAgICAgQ09NUFVURVJfTkFNRV9GT1JNQVQgTmFtZVR5cGUsDQog
ICAgICBMUENTVFIgbHBCdWZmZXINCiAgICApOw0KDQoNCg0KDQoNCg0KI2xpbmUgNzMxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcc3lzaW5mb2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSA3
MzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxzeXNpbmZvYXBpLmgiDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9w
KQ0KDQoNCg0KDQoNCiNsaW5lIDc0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCiNsaW5l
IDc0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHN5c2luZm9hcGkuaCINCg0KI2xpbmUgNzQ5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcc3lzaW5mb2FwaS5oIg0KDQojbGluZSA1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNs
aW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5o
Ig0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDY2
OCkgDQojbGluZSAyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlh
cGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KIA0KIA0KTFBWT0lEDQpfX3N0ZGNhbGwNClZpcnR1YWxBbGxvYygNCiAgICAgIExQVk9J
RCBscEFkZHJlc3MsDQogICAgICBTSVpFX1QgZHdTaXplLA0KICAgICAgRFdPUkQgZmxBbGxvY2F0
aW9uVHlwZSwNCiAgICAgIERXT1JEIGZsUHJvdGVjdA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNClZpcnR1YWxQcm90ZWN0KA0KICAgICAgTFBW
T0lEIGxwQWRkcmVzcywNCiAgICAgIFNJWkVfVCBkd1NpemUsDQogICAgICBEV09SRCBmbE5ld1By
b3RlY3QsDQogICAgICBQRFdPUkQgbHBmbE9sZFByb3RlY3QNCiAgICApOw0KDQoNCiNsaW5lIDc3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFt
aWx5DQoNCg0KDQojbGluZSA4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KDQoNCiNsaW5l
IDg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoNCg0KI2xpbmUgOTAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxtZW1vcnlhcGkuaCINCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpWaXJ0dWFsRnJlZSgNCiAgICAgICAgTFBWT0lEIGxwQWRkcmVzcywNCiAgICAgIFNJWkVfVCBk
d1NpemUsDQogICAgICBEV09SRCBkd0ZyZWVUeXBlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNClNJWkVfVA0KX19zdGRjYWxsDQpWaXJ0dWFsUXVlcnkoDQogICAgICBMUENWT0lE
IGxwQWRkcmVzcywNCiAgICAgIFBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04gbHBCdWZmZXIsDQog
ICAgICBTSVpFX1QgZHdMZW5ndGgNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KIA0KTFBWT0lEDQpfX3N0ZGNhbGwNClZpcnR1YWxBbGxvY0V4KA0KICAgICAgSEFORExFIGhQ
cm9jZXNzLA0KICAgICAgTFBWT0lEIGxwQWRkcmVzcywNCiAgICAgIFNJWkVfVCBkd1NpemUsDQog
ICAgICBEV09SRCBmbEFsbG9jYXRpb25UeXBlLA0KICAgICAgRFdPUkQgZmxQcm90ZWN0DQogICAg
KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KVmlydHVh
bFByb3RlY3RFeCgNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIExQVk9JRCBscEFkZHJl
c3MsDQogICAgICBTSVpFX1QgZHdTaXplLA0KICAgICAgRFdPUkQgZmxOZXdQcm90ZWN0LA0KICAg
ICAgUERXT1JEIGxwZmxPbGRQcm90ZWN0DQogICAgKTsNCg0KDQojbGluZSAxMzkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KU0laRV9UDQpfX3N0ZGNhbGwNClZpcnR1YWxRdWVyeUV4KA0KICAg
ICAgSEFORExFIGhQcm9jZXNzLA0KICAgICAgTFBDVk9JRCBscEFkZHJlc3MsDQogICAgICBQTUVN
T1JZX0JBU0lDX0lORk9STUFUSU9OIGxwQnVmZmVyLA0KICAgICAgU0laRV9UIGR3TGVuZ3RoDQog
ICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KUmVh
ZFByb2Nlc3NNZW1vcnkoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBMUENWT0lEIGxw
QmFzZUFkZHJlc3MsDQogICAgICBMUFZPSUQgbHBCdWZmZXIsDQogICAgICBTSVpFX1QgblNpemUs
DQogICAgICBTSVpFX1QqIGxwTnVtYmVyT2ZCeXRlc1JlYWQNCiAgICApOw0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpXcml0ZVByb2Nlc3NNZW1vcnkoDQog
ICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBMUFZPSUQgbHBCYXNlQWRkcmVzcywNCiAgICAg
IExQQ1ZPSUQgbHBCdWZmZXIsDQogICAgICBTSVpFX1QgblNpemUsDQogICAgICBTSVpFX1QqIGxw
TnVtYmVyT2ZCeXRlc1dyaXR0ZW4NCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZUZpbGVNYXBwaW5nVygNCiAgICAgIEhBTkRMRSBo
RmlsZSwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscEZpbGVNYXBwaW5nQXR0cmlidXRl
cywNCiAgICAgIERXT1JEIGZsUHJvdGVjdCwNCiAgICAgIERXT1JEIGR3TWF4aW11bVNpemVIaWdo
LA0KICAgICAgRFdPUkQgZHdNYXhpbXVtU2l6ZUxvdywNCiAgICAgIExQQ1dTVFIgbHBOYW1lDQog
ICAgKTsNCg0KDQoNCg0KI2xpbmUgMTk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCk9wZW5GaWxlTWFwcGlu
Z1coDQogICAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICBCT09MIGJJbmhlcml0SGFu
ZGxlLA0KICAgICAgTFBDV1NUUiBscE5hbWUNCiAgICApOw0KDQoNCg0KDQojbGluZSAyMTMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogICANCkxQ
Vk9JRA0KX19zdGRjYWxsDQpNYXBWaWV3T2ZGaWxlKA0KICAgICAgSEFORExFIGhGaWxlTWFwcGlu
Z09iamVjdCwNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIERXT1JEIGR3Rmls
ZU9mZnNldEhpZ2gsDQogICAgICBEV09SRCBkd0ZpbGVPZmZzZXRMb3csDQogICAgICBTSVpFX1Qg
ZHdOdW1iZXJPZkJ5dGVzVG9NYXANCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
ICAgDQpMUFZPSUQNCl9fc3RkY2FsbA0KTWFwVmlld09mRmlsZUV4KA0KICAgICAgSEFORExFIGhG
aWxlTWFwcGluZ09iamVjdCwNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIERX
T1JEIGR3RmlsZU9mZnNldEhpZ2gsDQogICAgICBEV09SRCBkd0ZpbGVPZmZzZXRMb3csDQogICAg
ICBTSVpFX1QgZHdOdW1iZXJPZkJ5dGVzVG9NYXAsDQogICAgICBMUFZPSUQgbHBCYXNlQWRkcmVz
cw0KICAgICk7DQoNCg0KI2xpbmUgMjQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQojbGluZSAyNDkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxtZW1vcnlhcGkuaCINCg0KDQojbGluZSAyNTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCIN
Cg0KDQojbGluZSAyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCg0KDQojbGluZSAyNTgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpWaXJ0dWFsRnJlZUV4KA0KICAgICAgSEFORExFIGhQcm9jZXNzLA0KICAg
ICAgICBMUFZPSUQgbHBBZGRyZXNzLA0KICAgICAgU0laRV9UIGR3U2l6ZSwNCiAgICAgIERXT1JE
IGR3RnJlZVR5cGUNCiAgICApOw0KDQoNCiNsaW5lIDI3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFw
aS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkZsdXNoVmlld09mRmlsZSgNCiAgICAgIExQQ1ZPSUQgbHBCYXNlQWRkcmVzcywN
CiAgICAgIFNJWkVfVCBkd051bWJlck9mQnl0ZXNUb0ZsdXNoDQogICAgKTsNCg0KDQojbGluZSAy
ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVW5tYXBW
aWV3T2ZGaWxlKA0KICAgICAgTFBDVk9JRCBscEJhc2VBZGRyZXNzDQogICAgKTsNCg0KDQojbGlu
ZSAzMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KU0laRV9UDQpfX3N0ZGNhbGwNCkdldExhcmdlUGFnZU1pbmlt
dW0oDQogICAgdm9pZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09M
DQpfX3N0ZGNhbGwNCkdldFByb2Nlc3NXb3JraW5nU2V0U2l6ZUV4KA0KICAgICAgSEFORExFIGhQ
cm9jZXNzLA0KICAgICAgUFNJWkVfVCBscE1pbmltdW1Xb3JraW5nU2V0U2l6ZSwNCiAgICAgIFBT
SVpFX1QgbHBNYXhpbXVtV29ya2luZ1NldFNpemUsDQogICAgICBQRFdPUkQgRmxhZ3MNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRQcm9jZXNz
V29ya2luZ1NldFNpemVFeCgNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIFNJWkVfVCBk
d01pbmltdW1Xb3JraW5nU2V0U2l6ZSwNCiAgICAgIFNJWkVfVCBkd01heGltdW1Xb3JraW5nU2V0
U2l6ZSwNCiAgICAgIERXT1JEIEZsYWdzDQogICAgKTsNCg0KDQojbGluZSAzMzcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNClZpcnR1YWxMb2NrKA0KICAgICAgTFBWT0lEIGxwQWRkcmVzcywN
CiAgICAgIFNJWkVfVCBkd1NpemUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpWaXJ0dWFsVW5sb2NrKA0KICAgICAgTFBWT0lEIGxwQWRkcmVzcywN
CiAgICAgIFNJWkVfVCBkd1NpemUNCiAgICApOw0KDQoNCiNsaW5lIDM2MSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1lbW9yeWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGlj
YXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQpVSU5UDQpfX3N0ZGNhbGwNCkdldFdyaXRlV2F0Y2goDQogICAgICBEV09SRCBkd0ZsYWdz
LA0KICAgICAgUFZPSUQgbHBCYXNlQWRkcmVzcywNCiAgICAgIFNJWkVfVCBkd1JlZ2lvblNpemUs
DQogICAgICBQVk9JRCogbHBBZGRyZXNzZXMsDQogICAgICBVTE9OR19QVFIqIGxwZHdDb3VudCwN
CiAgICAgIExQRFdPUkQgbHBkd0dyYW51bGFyaXR5DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNClVJTlQNCl9fc3RkY2FsbA0KUmVzZXRXcml0ZVdhdGNoKA0KICAgICAgTFBWT0lE
IGxwQmFzZUFkZHJlc3MsDQogICAgICBTSVpFX1QgZHdSZWdpb25TaXplDQogICAgKTsNCg0KDQoj
bGluZSAzOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoN
CnR5cGVkZWYgZW51bSBfTUVNT1JZX1JFU09VUkNFX05PVElGSUNBVElPTl9UWVBFIHsNCiAgICBM
b3dNZW1vcnlSZXNvdXJjZU5vdGlmaWNhdGlvbiwNCiAgICBIaWdoTWVtb3J5UmVzb3VyY2VOb3Rp
ZmljYXRpb24NCn0gTUVNT1JZX1JFU09VUkNFX05PVElGSUNBVElPTl9UWVBFOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVNZW1vcnlSZXNvdXJj
ZU5vdGlmaWNhdGlvbigNCiAgICAgIE1FTU9SWV9SRVNPVVJDRV9OT1RJRklDQVRJT05fVFlQRSBO
b3RpZmljYXRpb25UeXBlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJP
T0wNCl9fc3RkY2FsbA0KUXVlcnlNZW1vcnlSZXNvdXJjZU5vdGlmaWNhdGlvbigNCiAgICAgIEhB
TkRMRSBSZXNvdXJjZU5vdGlmaWNhdGlvbkhhbmRsZSwNCiAgICAgIFBCT09MIFJlc291cmNlU3Rh
dGUNCiAgICApOw0KDQoNCiNsaW5lIDQyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KDQoj
bGluZSA0MjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpH
ZXRTeXN0ZW1GaWxlQ2FjaGVTaXplKA0KICAgICAgUFNJWkVfVCBscE1pbmltdW1GaWxlQ2FjaGVT
aXplLA0KICAgICAgUFNJWkVfVCBscE1heGltdW1GaWxlQ2FjaGVTaXplLA0KICAgICAgUERXT1JE
IGxwRmxhZ3MNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpTZXRTeXN0ZW1GaWxlQ2FjaGVTaXplKA0KICAgICAgU0laRV9UIE1pbmltdW1GaWxlQ2Fj
aGVTaXplLA0KICAgICAgU0laRV9UIE1heGltdW1GaWxlQ2FjaGVTaXplLA0KICAgICAgRFdPUkQg
RmxhZ3MNCiAgICApOw0KDQoNCiNsaW5lIDQ1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0K
DQojbGluZSA0NjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZUZp
bGVNYXBwaW5nTnVtYVcoDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBMUFNFQ1VSSVRZX0FU
VFJJQlVURVMgbHBGaWxlTWFwcGluZ0F0dHJpYnV0ZXMsDQogICAgICBEV09SRCBmbFByb3RlY3Qs
DQogICAgICBEV09SRCBkd01heGltdW1TaXplSGlnaCwNCiAgICAgIERXT1JEIGR3TWF4aW11bVNp
emVMb3csDQogICAgICBMUENXU1RSIGxwTmFtZSwNCiAgICAgIERXT1JEIG5uZFByZWZlcnJlZA0K
ICAgICk7DQoNCg0KDQoNCiNsaW5lIDQ4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KDQoj
bGluZSA0ODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoN
CiNsaW5lIDUxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoN
CiNsaW5lIDU1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNCkFsbG9jYXRlVXNl
clBoeXNpY2FsUGFnZXMoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBQVUxPTkdfUFRS
IE51bWJlck9mUGFnZXMsDQogICAgICBQVUxPTkdfUFRSIFBhZ2VBcnJheQ0KICAgICk7DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNCkZyZWVVc2VyUGh5c2lj
YWxQYWdlcygNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIFBVTE9OR19QVFIgTnVtYmVy
T2ZQYWdlcywNCiAgICAgIFBVTE9OR19QVFIgUGFnZUFycmF5DQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KTWFwVXNlclBoeXNpY2FsUGFnZXMo
DQogICAgICBQVk9JRCBWaXJ0dWFsQWRkcmVzcywNCiAgICAgIFVMT05HX1BUUiBOdW1iZXJPZlBh
Z2VzLA0KICAgICAgUFVMT05HX1BUUiBQYWdlQXJyYXkNCiAgICApOw0KDQoNCiNsaW5lIDU5NSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQog
DQpCT09MDQpfX3N0ZGNhbGwNCkFsbG9jYXRlVXNlclBoeXNpY2FsUGFnZXNOdW1hKA0KICAgICAg
SEFORExFIGhQcm9jZXNzLA0KICAgICAgUFVMT05HX1BUUiBOdW1iZXJPZlBhZ2VzLA0KICAgICAg
UFVMT05HX1BUUiBQYWdlQXJyYXksDQogICAgICBEV09SRCBubmRQcmVmZXJyZWQNCiAgICApOw0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KTFBWT0lEDQpfX3N0ZGNhbGwNClZpcnR1YWxB
bGxvY0V4TnVtYSgNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIExQVk9JRCBscEFkZHJl
c3MsDQogICAgICBTSVpFX1QgZHdTaXplLA0KICAgICAgRFdPUkQgZmxBbGxvY2F0aW9uVHlwZSwN
CiAgICAgIERXT1JEIGZsUHJvdGVjdCwNCiAgICAgIERXT1JEIG5uZFByZWZlcnJlZA0KICAgICk7
DQoNCg0KI2xpbmUgNjI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA2NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCg0KI2xp
bmUgNjcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzIwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVt
b3J5YXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5
YXBpLmgiDQoNCiNsaW5lIDc4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA4ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5
NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgOTkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoNCiNsaW5lIDk5
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClVubWFwVmlld09mRmlsZTIoDQogICAg
ICBIQU5ETEUgUHJvY2VzcywNCiAgICAgIFBWT0lEIEJhc2VBZGRyZXNzLA0KICAgICAgVUxPTkcg
VW5tYXBGbGFncw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNClZpcnR1YWxVbmxvY2tFeCgNCiAgICAgIEhBTkRMRSBQcm9jZXNzLA0KICAgICAgTFBW
T0lEIEFkZHJlc3MsDQogICAgICBTSVpFX1QgU2l6ZQ0KICAgICk7DQoNCg0KI2xpbmUgMTAxOCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1lbW9yeWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMDEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtZW1vcnlhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxMTI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoNCg0K
I3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDExMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGku
aCINCg0KDQp9DQojbGluZSAxMTM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWVtb3J5YXBpLmgiDQoNCiNsaW5l
IDExMzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxtZW1vcnlhcGkuaCINCiNsaW5lIDU4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGVuY2xhdmVhcGkuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxlbmNsYXZlYXBp
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxlbmNsYXZlYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9u
ZUNvcmUgT3IgQXBwIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0K
X19zdGRjYWxsDQpJc0VuY2xhdmVUeXBlU3VwcG9ydGVkKA0KICAgICAgRFdPUkQgZmxFbmNsYXZl
VHlwZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQogDQpMUFZPSUQNCl9f
c3RkY2FsbA0KQ3JlYXRlRW5jbGF2ZSgNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIExQ
Vk9JRCBscEFkZHJlc3MsDQogICAgICBTSVpFX1QgZHdTaXplLA0KICAgICAgU0laRV9UIGR3SW5p
dGlhbENvbW1pdG1lbnQsDQogICAgICBEV09SRCBmbEVuY2xhdmVUeXBlLA0KICAgICAgTFBDVk9J
RCBscEVuY2xhdmVJbmZvcm1hdGlvbiwNCiAgICAgIERXT1JEIGR3SW5mb0xlbmd0aCwNCiAgICAg
IExQRFdPUkQgbHBFbmNsYXZlRXJyb3INCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpMb2FkRW5jbGF2ZURhdGEoDQogICAgICBIQU5ETEUgaFBy
b2Nlc3MsDQogICAgICBMUFZPSUQgbHBBZGRyZXNzLA0KICAgICAgTFBDVk9JRCBscEJ1ZmZlciwN
CiAgICAgIFNJWkVfVCBuU2l6ZSwNCiAgICAgIERXT1JEIGZsUHJvdGVjdCwNCiAgICAgIExQQ1ZP
SUQgbHBQYWdlSW5mb3JtYXRpb24sDQogICAgICBEV09SRCBkd0luZm9MZW5ndGgsDQogICAgICBQ
U0laRV9UIGxwTnVtYmVyT2ZCeXRlc1dyaXR0ZW4sDQogICAgICBMUERXT1JEIGxwRW5jbGF2ZUVy
cm9yDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2Fs
bA0KSW5pdGlhbGl6ZUVuY2xhdmUoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBMUFZP
SUQgbHBBZGRyZXNzLA0KICAgICAgTFBDVk9JRCBscEVuY2xhdmVJbmZvcm1hdGlvbiwNCiAgICAg
IERXT1JEIGR3SW5mb0xlbmd0aCwNCiAgICAgIExQRFdPUkQgbHBFbmNsYXZlRXJyb3INCiAgICAp
Ow0KDQoNCiNsaW5lIDg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZW5jbGF2ZWFwaS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KTG9hZEVuY2xh
dmVJbWFnZUEoDQogICAgICBMUFZPSUQgbHBFbmNsYXZlQWRkcmVzcywNCiAgICAgIExQQ1NUUiBs
cEltYWdlTmFtZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19z
dGRjYWxsDQpMb2FkRW5jbGF2ZUltYWdlVygNCiAgICAgIExQVk9JRCBscEVuY2xhdmVBZGRyZXNz
LA0KICAgICAgTFBDV1NUUiBscEltYWdlTmFtZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTEz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcZW5jbGF2ZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAN
CkJPT0wNCl9fc3RkY2FsbA0KQ2FsbEVuY2xhdmUoDQogICAgICBMUEVOQ0xBVkVfUk9VVElORSBs
cFJvdXRpbmUsDQogICAgICBMUFZPSUQgbHBQYXJhbWV0ZXIsDQogICAgICBCT09MIGZXYWl0Rm9y
VGhyZWFkLA0KICAgICAgTFBWT0lEKiBscFJldHVyblZhbHVlDQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KVGVybWluYXRlRW5jbGF2ZSgNCiAg
ICAgIExQVk9JRCBscEFkZHJlc3MsDQogICAgICBCT09MIGZXYWl0DQogICAgKTsNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlRW5jbGF2ZSgNCiAg
ICAgIExQVk9JRCBscEFkZHJlc3MNCiAgICApOw0KDQoNCiNsaW5lIDE0NiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGVuY2xhdmVhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgMTUxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcZW5jbGF2ZWFwaS5oIg0KDQojbGluZSAxNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxlbmNsYXZl
YXBpLmgiDQojbGluZSA1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx0aHJlYWRwb29sbGVnYWN5YXBpc2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGhyZWFkcG9vbGxlZ2FjeWFwaXNldC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdGhyZWFkcG9vbGxlZ2FjeWFwaXNldC5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWV1ZVVzZXJXb3JrSXRlbSgNCiAg
ICAgIExQVEhSRUFEX1NUQVJUX1JPVVRJTkUgRnVuY3Rpb24sDQogICAgICBQVk9JRCBDb250ZXh0
LA0KICAgICAgVUxPTkcgRmxhZ3MNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KQk9PTA0KX19zdGRjYWxsDQpVbnJlZ2lzdGVyV2FpdEV4KA0KICAgICAgSEFORExFIFdhaXRI
YW5kbGUsDQogICAgICBIQU5ETEUgQ29tcGxldGlvbkV2ZW50DQogICAgKTsNCg0KDQojbGluZSA1
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHRocmVhZHBvb2xsZWdhY3lhcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlVGlt
ZXJRdWV1ZSgNCiAgICB2b2lkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KQ3JlYXRlVGltZXJRdWV1ZVRpbWVyKA0KICAgICBQSEFORExFIHBoTmV3
VGltZXIsDQogICAgICBIQU5ETEUgVGltZXJRdWV1ZSwNCiAgICAgIFdBSVRPUlRJTUVSQ0FMTEJB
Q0sgQ2FsbGJhY2ssDQogICAgICBQVk9JRCBQYXJhbWV0ZXIsDQogICAgICBEV09SRCBEdWVUaW1l
LA0KICAgICAgRFdPUkQgUGVyaW9kLA0KICAgICAgVUxPTkcgRmxhZ3MNCiAgICApOw0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpDaGFuZ2VUaW1lclF1ZXVl
VGltZXIoDQogICAgICBIQU5ETEUgVGltZXJRdWV1ZSwNCiAgICAgIEhBTkRMRSBUaW1lciwNCiAg
ICAgIFVMT05HIER1ZVRpbWUsDQogICAgICBVTE9ORyBQZXJpb2QNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVUaW1lclF1ZXVlVGlt
ZXIoDQogICAgICBIQU5ETEUgVGltZXJRdWV1ZSwNCiAgICAgIEhBTkRMRSBUaW1lciwNCiAgICAg
IEhBTkRMRSBDb21wbGV0aW9uRXZlbnQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVUaW1lclF1ZXVlRXgoDQogICAgICBIQU5ETEUg
VGltZXJRdWV1ZSwNCiAgICAgIEhBTkRMRSBDb21wbGV0aW9uRXZlbnQNCiAgICApOw0KDQoNCiNs
aW5lIDExNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRocmVhZHBvb2xsZWdhY3lhcGlzZXQuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgMTIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGhyZWFkcG9vbGxlZ2Fj
eWFwaXNldC5oIg0KDQojbGluZSAxMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx0aHJlYWRwb29sbGVnYWN5YXBp
c2V0LmgiDQojbGluZSA2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx0aHJlYWRwb29sYXBpc2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGhyZWFkcG9vbGFwaXNldC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGhyZWFkcG9v
bGFwaXNldC5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQp0eXBlZGVmDQp2b2lkDQooX19z
dGRjYWxsICpQVFBfV0lOMzJfSU9fQ0FMTEJBQ0spKA0KICAgICAgICAgIFBUUF9DQUxMQkFDS19J
TlNUQU5DRSBJbnN0YW5jZSwNCiAgICAgIFBWT0lEICAgICAgICAgICAgICAgICBDb250ZXh0LA0K
ICAgICAgUFZPSUQgICAgICAgICAgICAgICAgIE92ZXJsYXBwZWQsDQogICAgICAgICAgICAgVUxP
TkcgICAgICAgICAgICAgICAgIElvUmVzdWx0LA0KICAgICAgICAgICAgIFVMT05HX1BUUiAgICAg
ICAgICAgICBOdW1iZXJPZkJ5dGVzVHJhbnNmZXJyZWQsDQogICAgICAgICAgUFRQX0lPICAgICAg
ICAgICAgICAgIElvDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUFRQ
X1BPT0wNCl9fc3RkY2FsbA0KQ3JlYXRlVGhyZWFkcG9vbCgNCiAgICAgIFBWT0lEIHJlc2VydmVk
DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KU2V0
VGhyZWFkcG9vbFRocmVhZE1heGltdW0oDQogICAgICBQVFBfUE9PTCBwdHBwLA0KICAgICAgRFdP
UkQgY3RocmRNb3N0DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KU2V0VGhyZWFkcG9vbFRocmVhZE1pbmltdW0oDQogICAgICBQVFBfUE9PTCBwdHBw
LA0KICAgICAgRFdPUkQgY3RocmRNaWMNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRUaHJlYWRwb29sU3RhY2tJbmZvcm1hdGlvbigNCiAgICAg
IFBUUF9QT09MIHB0cHAsDQogICAgICBQVFBfUE9PTF9TVEFDS19JTkZPUk1BVElPTiBwdHBzaQ0K
ICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClF1ZXJ5
VGhyZWFkcG9vbFN0YWNrSW5mb3JtYXRpb24oDQogICAgICBQVFBfUE9PTCBwdHBwLA0KICAgICAg
UFRQX1BPT0xfU1RBQ0tfSU5GT1JNQVRJT04gcHRwc2kNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpDbG9zZVRocmVhZHBvb2woDQogICAgICBQVFBf
UE9PTCBwdHBwDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClBUUF9DTEVB
TlVQX0dST1VQDQpfX3N0ZGNhbGwNCkNyZWF0ZVRocmVhZHBvb2xDbGVhbnVwR3JvdXAoDQogICAg
dm9pZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwN
CkNsb3NlVGhyZWFkcG9vbENsZWFudXBHcm91cE1lbWJlcnMoDQogICAgICBQVFBfQ0xFQU5VUF9H
Uk9VUCBwdHBjZywNCiAgICAgIEJPT0wgZkNhbmNlbFBlbmRpbmdDYWxsYmFja3MsDQogICAgICBQ
Vk9JRCBwdkNsZWFudXBDb250ZXh0DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CnZvaWQNCl9fc3RkY2FsbA0KQ2xvc2VUaHJlYWRwb29sQ2xlYW51cEdyb3VwKA0KICAgICAgUFRQ
X0NMRUFOVVBfR1JPVVAgcHRwY2cNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
dm9pZA0KX19zdGRjYWxsDQpTZXRFdmVudFdoZW5DYWxsYmFja1JldHVybnMoDQogICAgICBQVFBf
Q0FMTEJBQ0tfSU5TVEFOQ0UgcGNpLA0KICAgICAgSEFORExFIGV2dA0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNClJlbGVhc2VTZW1hcGhvcmVXaGVu
Q2FsbGJhY2tSZXR1cm5zKA0KICAgICAgUFRQX0NBTExCQUNLX0lOU1RBTkNFIHBjaSwNCiAgICAg
IEhBTkRMRSBzZW0sDQogICAgICBEV09SRCBjcmVsDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KUmVsZWFzZU11dGV4V2hlbkNhbGxiYWNrUmV0dXJu
cygNCiAgICAgIFBUUF9DQUxMQkFDS19JTlNUQU5DRSBwY2ksDQogICAgICBIQU5ETEUgbXV0DQog
ICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTGVhdmVD
cml0aWNhbFNlY3Rpb25XaGVuQ2FsbGJhY2tSZXR1cm5zKA0KICAgICAgUFRQX0NBTExCQUNLX0lO
U1RBTkNFIHBjaSwNCiAgICAgIFBDUklUSUNBTF9TRUNUSU9OIHBjcw0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkZyZWVMaWJyYXJ5V2hlbkNhbGxi
YWNrUmV0dXJucygNCiAgICAgIFBUUF9DQUxMQkFDS19JTlNUQU5DRSBwY2ksDQogICAgICBITU9E
VUxFIG1vZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkNhbGxiYWNrTWF5UnVuTG9uZygNCiAgICAgIFBUUF9DQUxMQkFDS19JTlNUQU5DRSBwY2kN
CiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpEaXNh
c3NvY2lhdGVDdXJyZW50VGhyZWFkRnJvbUNhbGxiYWNrKA0KICAgICAgUFRQX0NBTExCQUNLX0lO
U1RBTkNFIHBjaQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpf
X3N0ZGNhbGwNClRyeVN1Ym1pdFRocmVhZHBvb2xDYWxsYmFjaygNCiAgICAgIFBUUF9TSU1QTEVf
Q0FMTEJBQ0sgcGZucywNCiAgICAgIFBWT0lEIHB2LA0KICAgICAgUFRQX0NBTExCQUNLX0VOVklS
T04gcGNiZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpQVFBfV09SSw0K
X19zdGRjYWxsDQpDcmVhdGVUaHJlYWRwb29sV29yaygNCiAgICAgIFBUUF9XT1JLX0NBTExCQUNL
IHBmbndrLA0KICAgICAgUFZPSUQgcHYsDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBwY2Jl
DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KU3Vi
bWl0VGhyZWFkcG9vbFdvcmsoDQogICAgICBQVFBfV09SSyBwd2sNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpXYWl0Rm9yVGhyZWFkcG9vbFdvcmtD
YWxsYmFja3MoDQogICAgICBQVFBfV09SSyBwd2ssDQogICAgICBCT09MIGZDYW5jZWxQZW5kaW5n
Q2FsbGJhY2tzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3Rk
Y2FsbA0KQ2xvc2VUaHJlYWRwb29sV29yaygNCiAgICAgIFBUUF9XT1JLIHB3aw0KICAgICk7DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpQVFBfVElNRVINCl9fc3RkY2FsbA0KQ3JlYXRl
VGhyZWFkcG9vbFRpbWVyKA0KICAgICAgUFRQX1RJTUVSX0NBTExCQUNLIHBmbnRpLA0KICAgICAg
UFZPSUQgcHYsDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBwY2JlDQogICAgKTsNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KU2V0VGhyZWFkcG9vbFRpbWVy
KA0KICAgICAgUFRQX1RJTUVSIHB0aSwNCiAgICAgIFBGSUxFVElNRSBwZnREdWVUaW1lLA0KICAg
ICAgRFdPUkQgbXNQZXJpb2QsDQogICAgICBEV09SRCBtc1dpbmRvd0xlbmd0aA0KICAgICk7DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzVGhyZWFkcG9vbFRp
bWVyU2V0KA0KICAgICAgUFRQX1RJTUVSIHB0aQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCldhaXRGb3JUaHJlYWRwb29sVGltZXJDYWxsYmFja3Mo
DQogICAgICBQVFBfVElNRVIgcHRpLA0KICAgICAgQk9PTCBmQ2FuY2VsUGVuZGluZ0NhbGxiYWNr
cw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkNs
b3NlVGhyZWFkcG9vbFRpbWVyKA0KICAgICAgUFRQX1RJTUVSIHB0aQ0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpQVFBfV0FJVA0KX19zdGRjYWxsDQpDcmVhdGVUaHJlYWRw
b29sV2FpdCgNCiAgICAgIFBUUF9XQUlUX0NBTExCQUNLIHBmbndhLA0KICAgICAgUFZPSUQgcHYs
DQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBwY2JlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KU2V0VGhyZWFkcG9vbFdhaXQoDQogICAgICBQ
VFBfV0FJVCBwd2EsDQogICAgICBIQU5ETEUgaCwNCiAgICAgIFBGSUxFVElNRSBwZnRUaW1lb3V0
DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KV2Fp
dEZvclRocmVhZHBvb2xXYWl0Q2FsbGJhY2tzKA0KICAgICAgUFRQX1dBSVQgcHdhLA0KICAgICAg
Qk9PTCBmQ2FuY2VsUGVuZGluZ0NhbGxiYWNrcw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkNsb3NlVGhyZWFkcG9vbFdhaXQoDQogICAgICBQVFBf
V0FJVCBwd2ENCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUFRQX0lPDQpf
X3N0ZGNhbGwNCkNyZWF0ZVRocmVhZHBvb2xJbygNCiAgICAgIEhBTkRMRSBmbCwNCiAgICAgIFBU
UF9XSU4zMl9JT19DQUxMQkFDSyBwZm5pbywNCiAgICAgIFBWT0lEIHB2LA0KICAgICAgUFRQX0NB
TExCQUNLX0VOVklST04gcGNiZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2
b2lkDQpfX3N0ZGNhbGwNClN0YXJ0VGhyZWFkcG9vbElvKA0KICAgICAgUFRQX0lPIHBpbw0KICAg
ICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkNhbmNlbFRo
cmVhZHBvb2xJbygNCiAgICAgIFBUUF9JTyBwaW8NCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpXYWl0Rm9yVGhyZWFkcG9vbElvQ2FsbGJhY2tzKA0K
ICAgICAgUFRQX0lPIHBpbywNCiAgICAgIEJPT0wgZkNhbmNlbFBlbmRpbmdDYWxsYmFja3MNCiAg
ICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpDbG9zZVRo
cmVhZHBvb2xJbygNCiAgICAgIFBUUF9JTyBwaW8NCiAgICApOw0KDQoNCiNsaW5lIDM2NSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHRocmVhZHBvb2xhcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRUaHJlYWRwb29sVGltZXJFeCgN
CiAgICAgIFBUUF9USU1FUiBwdGksDQogICAgICBQRklMRVRJTUUgcGZ0RHVlVGltZSwNCiAgICAg
IERXT1JEIG1zUGVyaW9kLA0KICAgICAgRFdPUkQgbXNXaW5kb3dMZW5ndGgNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRUaHJlYWRwb29sV2Fp
dEV4KA0KICAgICAgUFRQX1dBSVQgcHdhLA0KICAgICAgSEFORExFIGgsDQogICAgICBQRklMRVRJ
TUUgcGZ0VGltZW91dCwNCiAgICAgIFBWT0lEIFJlc2VydmVkDQogICAgKTsNCg0KDQojbGluZSAz
OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx0aHJlYWRwb29sYXBpc2V0LmgiDQoNCiNsaW5lIDM5NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHRocmVhZHBvb2xhcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0K
DQoNCg0KDQojbGluZSA0MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx0aHJlYWRwb29sYXBpc2V0LmgiDQoNCiNs
aW5lIDQwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRocmVhZHBvb2xhcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCg0KfQ0KI2xpbmUgNDEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGhyZWFkcG9vbGFwaXNldC5oIg0K
DQojbGluZSA0MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx0aHJlYWRwb29sYXBpc2V0LmgiDQojbGluZSA2MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxqb2JhcGkuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxq
b2JhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGpvYmFwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KSXNQcm9jZXNzSW5Kb2IoDQogICAgICBIQU5ETEUgUHJvY2Vzc0hhbmRsZSwNCiAgICAg
IEhBTkRMRSBKb2JIYW5kbGUsDQogICAgICBQQk9PTCBSZXN1bHQNCiAgICApOw0KDQoNCiNsaW5l
IDQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcam9iYXBpLmgiDQoNCiNsaW5lIDQzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam9i
YXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDQ4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
am9iYXBpLmgiDQoNCiNsaW5lIDUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam9iYXBpLmgiDQojbGluZSA2MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxqb2JhcGkyLmgi
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIHsNCiNsaW5lIDIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam9iYXBpMi5oIg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
Sk9CT0JKRUNUX0lPX1JBVEVfQ09OVFJPTF9JTkZPUk1BVElPTiB7DQogICAgTE9ORzY0IE1heElv
cHM7DQogICAgTE9ORzY0IE1heEJhbmR3aWR0aDsNCiAgICBMT05HNjQgUmVzZXJ2YXRpb25Jb3Bz
Ow0KICAgIFBDV1NUUiBWb2x1bWVOYW1lOw0KICAgIFVMT05HIEJhc2VJb1NpemU7DQogICAgVUxP
TkcgQ29udHJvbEZsYWdzOw0KfSBKT0JPQkpFQ1RfSU9fUkFURV9DT05UUk9MX0lORk9STUFUSU9O
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVKb2JP
YmplY3RXKA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwSm9iQXR0cmlidXRlcywNCiAg
ICAgIExQQ1dTVFIgbHBOYW1lDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZv
aWQNCl9fc3RkY2FsbA0KRnJlZU1lbW9yeUpvYk9iamVjdCgNCiAgICAgICAgdm9pZCogQnVmZmVy
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KT3Bl
bkpvYk9iamVjdFcoDQogICAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICBCT09MIGJJ
bmhlcml0SGFuZGxlLA0KICAgICAgTFBDV1NUUiBscE5hbWUNCiAgICApOw0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpBc3NpZ25Qcm9jZXNzVG9Kb2JPYmplY3Qo
DQogICAgICBIQU5ETEUgaEpvYiwNCiAgICAgIEhBTkRMRSBoUHJvY2Vzcw0KICAgICk7DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClRlcm1pbmF0ZUpvYk9iamVj
dCgNCiAgICAgIEhBTkRMRSBoSm9iLA0KICAgICAgVUlOVCB1RXhpdENvZGUNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRJbmZvcm1hdGlvbkpv
Yk9iamVjdCgNCiAgICAgIEhBTkRMRSBoSm9iLA0KICAgICAgSk9CT0JKRUNUSU5GT0NMQVNTIEpv
Yk9iamVjdEluZm9ybWF0aW9uQ2xhc3MsDQogICAgICBMUFZPSUQgbHBKb2JPYmplY3RJbmZvcm1h
dGlvbiwNCiAgICAgIERXT1JEIGNiSm9iT2JqZWN0SW5mb3JtYXRpb25MZW5ndGgNCiAgICApOw0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KU2V0SW9SYXRlQ29u
dHJvbEluZm9ybWF0aW9uSm9iT2JqZWN0KA0KICAgICAgSEFORExFIGhKb2IsDQogICAgICBKT0JP
QkpFQ1RfSU9fUkFURV9DT05UUk9MX0lORk9STUFUSU9OKiBJb1JhdGVDb250cm9sSW5mbw0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWVyeUluZm9y
bWF0aW9uSm9iT2JqZWN0KA0KICAgICAgSEFORExFIGhKb2IsDQogICAgICBKT0JPQkpFQ1RJTkZP
Q0xBU1MgSm9iT2JqZWN0SW5mb3JtYXRpb25DbGFzcywNCiAgICAgIExQVk9JRCBscEpvYk9iamVj
dEluZm9ybWF0aW9uLA0KICAgICAgRFdPUkQgY2JKb2JPYmplY3RJbmZvcm1hdGlvbkxlbmd0aCwN
CiAgICAgIExQRFdPUkQgbHBSZXR1cm5MZW5ndGgNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KUXVlcnlJb1JhdGVDb250cm9sSW5mb3JtYXRpb25K
b2JPYmplY3QoDQogICAgICBIQU5ETEUgaEpvYiwNCiAgICAgIFBDV1NUUiBWb2x1bWVOYW1lLA0K
ICAgICBKT0JPQkpFQ1RfSU9fUkFURV9DT05UUk9MX0lORk9STUFUSU9OKiogSW5mb0Jsb2NrcywN
CiAgICAgIFVMT05HKiBJbmZvQmxvY2tDb3VudA0KICAgICk7DQoNCiNsaW5lIDEyMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGpvYmFwaTIuaCINCg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSAxMjcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxqb2JhcGkyLmgiDQoNCiNsaW5lIDEyOSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGpvYmFw
aTIuaCINCiNsaW5lIDYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdvdzY0YXBpc2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNs
aW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRhcGlzZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiB7DQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdvdzY0YXBpc2V0LmgiDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV293NjREaXNhYmxlV293
NjRGc1JlZGlyZWN0aW9uKA0KICAgICAgUFZPSUQqIE9sZFZhbHVlDQogICAgKTsNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV293NjRSZXZlcnRXb3c2NEZzUmVk
aXJlY3Rpb24oDQogICAgICBQVk9JRCBPbFZhbHVlDQogICAgKTsNCg0KDQojbGluZSA0OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdvdzY0YXBpc2V0LmgiDQojbGluZSA1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdvdzY0YXBp
c2V0LmgiDQoNCiNsaW5lIDUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRhcGlzZXQuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
SXNXb3c2NFByb2Nlc3MoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBQQk9PTCBXb3c2
NFByb2Nlc3MNCiAgICApOw0KDQoNCiNsaW5lIDY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRhcGlzZXQu
aCINCg0KI2xpbmUgNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3b3c2NGFwaXNldC5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0KVUlOVA0KX19zdGRjYWxs
DQpHZXRTeXN0ZW1Xb3c2NERpcmVjdG9yeUEoDQogICAgICBMUFNUUiBscEJ1ZmZlciwNCiAgICAg
IFVJTlQgdVNpemUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCiANClVJTlQN
Cl9fc3RkY2FsbA0KR2V0U3lzdGVtV293NjREaXJlY3RvcnlXKA0KICAgICAgTFBXU1RSIGxwQnVm
ZmVyLA0KICAgICAgVUlOVCB1U2l6ZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTA1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd293NjRhcGlzZXQuaCINCg0KI2xpbmUgMTA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRh
cGlzZXQuaCINCiNsaW5lIDEwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdvdzY0YXBpc2V0LmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRhcGlzZXQuaCINCg0K
I2xpbmUgMTIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRhcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0MCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdvdzY0
YXBpc2V0LmgiDQoNCiNsaW5lIDE0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdvdzY0YXBpc2V0LmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdvdzY0YXBpc2V0LmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdvdzY0YXBp
c2V0LmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV293
NjRHZXRUaHJlYWRDb250ZXh0KA0KICAgICAgSEFORExFIGhUaHJlYWQsDQogICAgICBQV09XNjRf
Q09OVEVYVCBscENvbnRleHQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpXb3c2NFNldFRocmVhZENvbnRleHQoDQogICAgICBIQU5ETEUgaFRocmVh
ZCwNCiAgICAgIGNvbnN0IFdPVzY0X0NPTlRFWFQqIGxwQ29udGV4dA0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpXb3c2NFN1c3BlbmRUaHJlYWQo
DQogICAgICBIQU5ETEUgaFRocmVhZA0KICAgICk7DQoNCg0KI2xpbmUgMjIyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd293NjRhcGlzZXQuaCINCg0KI2xpbmUgMjI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRhcGlzZXQu
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgMjI5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293
NjRhcGlzZXQuaCINCg0KI2xpbmUgMjMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd293NjRhcGlzZXQuaCINCiNs
aW5lIDY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxp
YmxvYWRlcmFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIHsNCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU5VTVVJTEFORyB7DQogICAgVUxPTkcgIE51
bU9mRW51bVVJTGFuZzsgICAgDQogICAgVUxPTkcgIFNpemVPZkVudW1VSUJ1ZmZlcjsgDQogICAg
TEFOR0lEICpwRW51bVVJQnVmZmVyOw0KfSBFTlVNVUlMQU5HLCAqUEVOVU1VSUxBTkc7DQoNCg0K
DQp0eXBlZGVmIEJPT0wgKF9fc3RkY2FsbCogRU5VTVJFU0xBTkdQUk9DQSkoDQogICAgICBITU9E
VUxFIGhNb2R1bGUsDQogICAgICBMUENTVFIgbHBUeXBlLA0KICAgICAgTFBDU1RSIGxwTmFtZSwN
CiAgICAgIFdPUkQgd0xhbmd1YWdlLA0KICAgICAgTE9OR19QVFIgbFBhcmFtKTsNCnR5cGVkZWYg
Qk9PTCAoX19zdGRjYWxsKiBFTlVNUkVTTEFOR1BST0NXKSgNCiAgICAgIEhNT0RVTEUgaE1vZHVs
ZSwNCiAgICAgIExQQ1dTVFIgbHBUeXBlLA0KICAgICAgTFBDV1NUUiBscE5hbWUsDQogICAgICBX
T1JEIHdMYW5ndWFnZSwNCiAgICAgIExPTkdfUFRSIGxQYXJhbSk7DQoNCg0KDQoNCiNsaW5lIDY1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQoNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxs
KiBFTlVNUkVTTkFNRVBST0NBKSgNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgIExQQ1NU
UiBscFR5cGUsDQogICAgICBMUFNUUiBscE5hbWUsDQogICAgICBMT05HX1BUUiBsUGFyYW0pOw0K
dHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIEVOVU1SRVNOQU1FUFJPQ1cpKA0KICAgICAgSE1PRFVM
RSBoTW9kdWxlLA0KICAgICAgTFBDV1NUUiBscFR5cGUsDQogICAgICBMUFdTVFIgbHBOYW1lLA0K
ICAgICAgTE9OR19QVFIgbFBhcmFtKTsNCg0KDQoNCg0KI2xpbmUgODEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxs
aWJsb2FkZXJhcGkuaCINCg0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIEVOVU1SRVNUWVBFUFJP
Q0EpKA0KICAgICAgSE1PRFVMRSBoTW9kdWxlLA0KICAgICAgTFBTVFIgbHBUeXBlLA0KICAgICAg
TE9OR19QVFIgbFBhcmFtDQogICAgKTsNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBFTlVNUkVT
VFlQRVBST0NXKSgNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgIExQV1NUUiBscFR5cGUs
DQogICAgICBMT05HX1BUUiBsUGFyYW0NCiAgICApOw0KDQoNCg0KDQojbGluZSA5NyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGkuaCIN
Cg0KI2xpbmUgMTI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNCkRpc2FibGVUaHJlYWRMaWJyYXJ5Q2FsbHMoDQogICAgICBITU9EVUxFIGhMaWJNb2R1
bGUNCiAgICApOw0KDQoNCiNsaW5lIDEzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQog
DQpIUlNSQw0KX19zdGRjYWxsDQpGaW5kUmVzb3VyY2VFeFcoDQogICAgICBITU9EVUxFIGhNb2R1
bGUsDQogICAgICBMUENXU1RSIGxwVHlwZSwNCiAgICAgIExQQ1dTVFIgbHBOYW1lLA0KICAgICAg
V09SRCB3TGFuZ3VhZ2UNCiAgICApOw0KDQoNCg0KDQojbGluZSAxNTkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxs
aWJsb2FkZXJhcGkuaCINCg0KI2xpbmUgMTYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkZpbmRTdHJpbmdPcmRpbmFsKA0KICAgICAgRFdPUkQg
ZHdGaW5kU3RyaW5nT3JkaW5hbEZsYWdzLA0KICAgICAgTFBDV1NUUiBscFN0cmluZ1NvdXJjZSwN
CiAgICAgIGludCBjY2hTb3VyY2UsDQogICAgICBMUENXU1RSIGxwU3RyaW5nVmFsdWUsDQogICAg
ICBpbnQgY2NoVmFsdWUsDQogICAgICBCT09MIGJJZ25vcmVDYXNlDQogICAgKTsNCg0KDQojbGlu
ZSAxODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNCkZyZWVMaWJyYXJ5KA0KICAgICAgSE1PRFVMRSBoTGliTW9k
dWxlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCl9fZGVjbHNwZWMobm9yZXR1
cm4pDQp2b2lkDQpfX3N0ZGNhbGwNCkZyZWVMaWJyYXJ5QW5kRXhpdFRocmVhZCgNCiAgICAgIEhN
T0RVTEUgaExpYk1vZHVsZSwNCiAgICAgIERXT1JEIGR3RXhpdENvZGUNCiAgICApOw0KDQoNCiNs
aW5lIDIwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkZyZWVSZXNvdXJjZSgN
CiAgICAgIEhHTE9CQUwgaFJlc0RhdGENCiAgICApOw0KDQogICAgDQojbGluZSAyMTYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxsaWJsb2FkZXJhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkdldE1v
ZHVsZUZpbGVOYW1lQSgNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgIExQU1RSIGxwRmls
ZW5hbWUsDQogICAgICBEV09SRCBuU2l6ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KIA0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0TW9kdWxlRmlsZU5hbWVXKA0KICAgICAgSE1P
RFVMRSBoTW9kdWxlLA0KICAgICAgTFBXU1RSIGxwRmlsZW5hbWUsDQogICAgICBEV09SRCBuU2l6
ZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMjQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBp
LmgiDQoNCiNsaW5lIDI1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCg0KDQpITU9EVUxFDQpfX3N0ZGNhbGwNCkdl
dE1vZHVsZUhhbmRsZUEoDQogICAgICBMUENTVFIgbHBNb2R1bGVOYW1lDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQoNCg0KSE1PRFVMRQ0KX19zdGRjYWxsDQpHZXRNb2R1bGVIYW5k
bGVXKA0KICAgICAgTFBDV1NUUiBscE1vZHVsZU5hbWUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5l
IDI3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
DQpCT09MDQooX19zdGRjYWxsKg0KUEdFVF9NT0RVTEVfSEFORExFX0VYQSkoDQogICAgICAgICAg
ICAgRFdPUkQgICAgICAgIGR3RmxhZ3MsDQogICAgICAgICBMUENTVFIgICAgIGxwTW9kdWxlTmFt
ZSwNCiAgICAgSE1PRFVMRSogICAgcGhNb2R1bGUNCiAgICApOw0KdHlwZWRlZg0KQk9PTA0KKF9f
c3RkY2FsbCoNClBHRVRfTU9EVUxFX0hBTkRMRV9FWFcpKA0KICAgICAgICAgICAgIERXT1JEICAg
ICAgICBkd0ZsYWdzLA0KICAgICAgICAgTFBDV1NUUiAgICAgbHBNb2R1bGVOYW1lLA0KICAgICBI
TU9EVUxFKiAgICBwaE1vZHVsZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDMwNiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGxpYmxvYWRlcmFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0TW9kdWxlSGFuZGxlRXhBKA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIExQ
Q1NUUiBscE1vZHVsZU5hbWUsDQogICAgICBITU9EVUxFKiBwaE1vZHVsZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRNb2R1bGVIYW5kbGVFeFco
DQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgTFBDV1NUUiBscE1vZHVsZU5hbWUsDQogICAg
ICBITU9EVUxFKiBwaE1vZHVsZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMzMwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbGlibG9hZGVyYXBpLmgiDQoNCiNsaW5lIDMzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRl
cmFwaS5oIg0KDQojbGluZSAzMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGkuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVD
b3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkZB
UlBST0MNCl9fc3RkY2FsbA0KR2V0UHJvY0FkZHJlc3MoDQogICAgICBITU9EVUxFIGhNb2R1bGUs
DQogICAgICBMUENTVFIgbHBQcm9jTmFtZQ0KICAgICk7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IF9SRURJUkVDVElPTl9GVU5DVElPTl9ERVNDUklQVE9SIHsNCiAgICBQQ1NUUiBEbGxOYW1lOw0K
ICAgIFBDU1RSIEZ1bmN0aW9uTmFtZTsNCiAgICBQVk9JRCBSZWRpcmVjdGlvblRhcmdldDsNCn0g
UkVESVJFQ1RJT05fRlVOQ1RJT05fREVTQ1JJUFRPUiwgKlBSRURJUkVDVElPTl9GVU5DVElPTl9E
RVNDUklQVE9SOw0KDQp0eXBlZGVmIGNvbnN0IFJFRElSRUNUSU9OX0ZVTkNUSU9OX0RFU0NSSVBU
T1IgKlBDUkVESVJFQ1RJT05fRlVOQ1RJT05fREVTQ1JJUFRPUjsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1JFRElSRUNUSU9OX0RFU0NSSVBUT1Igew0KICAgIFVMT05HIFZlcnNpb247DQogICAgVUxPTkcg
RnVuY3Rpb25Db3VudDsNCiAgICBQQ1JFRElSRUNUSU9OX0ZVTkNUSU9OX0RFU0NSSVBUT1IgUmVk
aXJlY3Rpb25zOw0KfSBSRURJUkVDVElPTl9ERVNDUklQVE9SLCAqUFJFRElSRUNUSU9OX0RFU0NS
SVBUT1I7DQoNCnR5cGVkZWYgY29uc3QgUkVESVJFQ1RJT05fREVTQ1JJUFRPUiAqUENSRURJUkVD
VElPTl9ERVNDUklQVE9SOw0KDQojbGluZSAzNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9y
IE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KSE1PRFVMRQ0KX19zdGRjYWxsDQpMb2FkTGlicmFyeUV4QSgNCiAgICAgIExQQ1NUUiBs
cExpYkZpbGVOYW1lLA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgRFdPUkQgZHdGbGFncw0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSE1PRFVMRQ0KX19zdGRjYWxsDQpM
b2FkTGlicmFyeUV4VygNCiAgICAgIExQQ1dTVFIgbHBMaWJGaWxlTmFtZSwNCiAgICAgIEhBTkRM
RSBoRmlsZSwNCiAgICAgIERXT1JEIGR3RmxhZ3MNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDM5
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgi
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgi
DQoNCg0KDQoNCg0KI2xpbmUgNDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEdMT0JBTA0KX19zdGRjYWxsDQpMb2FkUmVzb3VyY2Uo
DQogICAgICBITU9EVUxFIGhNb2R1bGUsDQogICAgICBIUlNSQyBoUmVzSW5mbw0KICAgICk7DQoN
Cg0KI2xpbmUgNDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3Rk
Y2FsbA0KTG9hZFN0cmluZ0EoDQogICAgICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgVUlO
VCB1SUQsDQogICAgICBMUFNUUiBscEJ1ZmZlciwNCiAgICAgIGludCBjY2hCdWZmZXJNYXgNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpMb2FkU3RyaW5n
VygNCiAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQogICAgICBVSU5UIHVJRCwNCiAgICAgIExQ
V1NUUiBscEJ1ZmZlciwNCiAgICAgIGludCBjY2hCdWZmZXJNYXgNCiAgICApOw0KDQoNCg0KDQoN
CiNsaW5lIDQ3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KDQojbGluZSA0NzggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFBWT0lEDQpfX3N0ZGNhbGwNCkxvY2tSZXNvdXJj
ZSgNCiAgICAgIEhHTE9CQUwgaFJlc0RhdGENCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KU2l6ZW9mUmVzb3VyY2UoDQogICAgICBITU9EVUxFIGhN
b2R1bGUsDQogICAgICBIUlNSQyBoUmVzSW5mbw0KICAgICk7DQoNCg0KI2xpbmUgNTAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJl
Z2lvbiBBcHAgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KdHlwZWRlZiBQVk9JRCBETExf
RElSRUNUT1JZX0NPT0tJRSwgKlBETExfRElSRUNUT1JZX0NPT0tJRTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpETExfRElSRUNUT1JZX0NPT0tJRQ0KX19zdGRjYWxsDQpBZGREbGxEaXJlY3Rv
cnkoDQogICAgICBQQ1dTVFIgTmV3RGlyZWN0b3J5DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUmVtb3ZlRGxsRGlyZWN0b3J5KA0KICAgICAgRExM
X0RJUkVDVE9SWV9DT09LSUUgQ29va2llDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0RGVmYXVsdERsbERpcmVjdG9yaWVzKA0KICAgICAgRFdP
UkQgRGlyZWN0b3J5RmxhZ3MNCiAgICApOw0KDQoNCiNsaW5lIDUzMyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxp
YmxvYWRlcmFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkVudW1SZXNvdXJjZUxhbmd1YWdlc0V4QSgNCiAgICAgIEhNT0RV
TEUgaE1vZHVsZSwNCiAgICAgIExQQ1NUUiBscFR5cGUsDQogICAgICBMUENTVFIgbHBOYW1lLA0K
ICAgICAgRU5VTVJFU0xBTkdQUk9DQSBscEVudW1GdW5jLA0KICAgICAgTE9OR19QVFIgbFBhcmFt
LA0KICAgIERXT1JEIGR3RmxhZ3MsDQogICAgTEFOR0lEIExhbmdJZA0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtUmVzb3VyY2VMYW5ndWFnZXNF
eFcoDQogICAgICBITU9EVUxFIGhNb2R1bGUsDQogICAgICBMUENXU1RSIGxwVHlwZSwNCiAgICAg
IExQQ1dTVFIgbHBOYW1lLA0KICAgICAgRU5VTVJFU0xBTkdQUk9DVyBscEVudW1GdW5jLA0KICAg
ICAgTE9OR19QVFIgbFBhcmFtLA0KICAgIERXT1JEIGR3RmxhZ3MsDQogICAgTEFOR0lEIExhbmdJ
ZA0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNTcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBp
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtUmVzb3Vy
Y2VOYW1lc0V4QSgNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgIExQQ1NUUiBscFR5cGUs
DQogICAgICBFTlVNUkVTTkFNRVBST0NBIGxwRW51bUZ1bmMsDQogICAgICBMT05HX1BUUiBsUGFy
YW0sDQogICAgRFdPUkQgZHdGbGFncywNCiAgICBMQU5HSUQgTGFuZ0lkDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1SZXNvdXJjZU5hbWVzRXhX
KA0KICAgICAgSE1PRFVMRSBoTW9kdWxlLA0KICAgICAgTFBDV1NUUiBscFR5cGUsDQogICAgICBF
TlVNUkVTTkFNRVBST0NXIGxwRW51bUZ1bmMsDQogICAgICBMT05HX1BUUiBsUGFyYW0sDQogICAg
RFdPUkQgZHdGbGFncywNCiAgICBMQU5HSUQgTGFuZ0lkDQogICAgKTsNCg0KDQoNCg0KDQojbGlu
ZSA2MDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1SZXNvdXJjZVR5cGVzRXhBKA0KICAgICAgSE1PRFVM
RSBoTW9kdWxlLA0KICAgICAgRU5VTVJFU1RZUEVQUk9DQSBscEVudW1GdW5jLA0KICAgICAgTE9O
R19QVFIgbFBhcmFtLA0KICAgIERXT1JEIGR3RmxhZ3MsDQogICAgTEFOR0lEIExhbmdJZA0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtUmVzb3Vy
Y2VUeXBlc0V4VygNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgIEVOVU1SRVNUWVBFUFJP
Q1cgbHBFbnVtRnVuYywNCiAgICAgIExPTkdfUFRSIGxQYXJhbSwNCiAgICBEV09SRCBkd0ZsYWdz
LA0KICAgIExBTkdJRCBMYW5nSWQNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDYyOSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KDQojbGluZSA2MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2Fk
ZXJhcGkuaCINCg0KI2xpbmUgNjMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkhS
U1JDDQpfX3N0ZGNhbGwNCkZpbmRSZXNvdXJjZVcoDQogICAgICBITU9EVUxFIGhNb2R1bGUsDQog
ICAgICBMUENXU1RSIGxwTmFtZSwNCiAgICAgIExQQ1dTVFIgbHBUeXBlDQogICAgKTsNCg0KDQoN
Cg0KI2xpbmUgNjUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KIA0KSE1PRFVMRQ0KX19zdGRjYWxsDQpMb2FkTGlicmFyeUEoDQogICAgICBM
UENTVFIgbHBMaWJGaWxlTmFtZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0K
SE1PRFVMRQ0KX19zdGRjYWxsDQpMb2FkTGlicmFyeVcoDQogICAgICBMUENXU1RSIGxwTGliRmls
ZU5hbWUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDY3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRl
cmFwaS5oIg0KDQojbGluZSA2NzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGkuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1S
ZXNvdXJjZU5hbWVzVygNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgIExQQ1dTVFIgbHBU
eXBlLA0KICAgICAgRU5VTVJFU05BTUVQUk9DVyBscEVudW1GdW5jLA0KICAgICAgTE9OR19QVFIg
bFBhcmFtDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNjk1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVy
YXBpLmgiDQoNCiNsaW5lIDY5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGxpYmxvYWRlcmFwaS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSA3MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsaWJsb2FkZXJhcGku
aCINCg0KI2xpbmUgNzA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbGlibG9hZGVyYXBpLmgiDQoNCiNsaW5lIDY1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5
YmFzZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIHsNCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpBY2Nlc3NDaGVjaygNCiAg
ICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBIQU5E
TEUgQ2xpZW50VG9rZW4sDQogICAgICBEV09SRCBEZXNpcmVkQWNjZXNzLA0KICAgICAgUEdFTkVS
SUNfTUFQUElORyBHZW5lcmljTWFwcGluZywNCiAgICAgIFBQUklWSUxFR0VfU0VUIFByaXZpbGVn
ZVNldCwNCiAgICAgIExQRFdPUkQgUHJpdmlsZWdlU2V0TGVuZ3RoLA0KICAgICAgTFBEV09SRCBH
cmFudGVkQWNjZXNzLA0KICAgICAgTFBCT09MIEFjY2Vzc1N0YXR1cw0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFjY2Vzc0NoZWNrQW5kQXVkaXRB
bGFybVcoDQogICAgICBMUENXU1RSIFN1YnN5c3RlbU5hbWUsDQogICAgICBMUFZPSUQgSGFuZGxl
SWQsDQogICAgICBMUFdTVFIgT2JqZWN0VHlwZU5hbWUsDQogICAgICBMUFdTVFIgT2JqZWN0TmFt
ZSwNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAg
IERXT1JEIERlc2lyZWRBY2Nlc3MsDQogICAgICBQR0VORVJJQ19NQVBQSU5HIEdlbmVyaWNNYXBw
aW5nLA0KICAgICAgQk9PTCBPYmplY3RDcmVhdGlvbiwNCiAgICAgIExQRFdPUkQgR3JhbnRlZEFj
Y2VzcywNCiAgICAgIExQQk9PTCBBY2Nlc3NTdGF0dXMsDQogICAgICBMUEJPT0wgcGZHZW5lcmF0
ZU9uQ2xvc2UNCiAgICApOw0KDQoNCg0KDQojbGluZSA2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5
YmFzZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWNj
ZXNzQ2hlY2tCeVR5cGUoDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNj
cmlwdG9yLA0KICAgICAgUFNJRCBQcmluY2lwYWxTZWxmU2lkLA0KICAgICAgSEFORExFIENsaWVu
dFRva2VuLA0KICAgICAgRFdPUkQgRGVzaXJlZEFjY2VzcywNCiAgICAgIFBPQkpFQ1RfVFlQRV9M
SVNUIE9iamVjdFR5cGVMaXN0LA0KICAgICAgRFdPUkQgT2JqZWN0VHlwZUxpc3RMZW5ndGgsDQog
ICAgICBQR0VORVJJQ19NQVBQSU5HIEdlbmVyaWNNYXBwaW5nLA0KICAgICAgUFBSSVZJTEVHRV9T
RVQgUHJpdmlsZWdlU2V0LA0KICAgICAgTFBEV09SRCBQcml2aWxlZ2VTZXRMZW5ndGgsDQogICAg
ICBMUERXT1JEIEdyYW50ZWRBY2Nlc3MsDQogICAgICBMUEJPT0wgQWNjZXNzU3RhdHVzDQogICAg
KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWNjZXNzQ2hl
Y2tCeVR5cGVSZXN1bHRMaXN0KA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgcFNlY3VyaXR5
RGVzY3JpcHRvciwNCiAgICAgIFBTSUQgUHJpbmNpcGFsU2VsZlNpZCwNCiAgICAgIEhBTkRMRSBD
bGllbnRUb2tlbiwNCiAgICAgIERXT1JEIERlc2lyZWRBY2Nlc3MsDQogICAgICBQT0JKRUNUX1RZ
UEVfTElTVCBPYmplY3RUeXBlTGlzdCwNCiAgICAgIERXT1JEIE9iamVjdFR5cGVMaXN0TGVuZ3Ro
LA0KICAgICAgUEdFTkVSSUNfTUFQUElORyBHZW5lcmljTWFwcGluZywNCiAgICAgIFBQUklWSUxF
R0VfU0VUIFByaXZpbGVnZVNldCwNCiAgICAgIExQRFdPUkQgUHJpdmlsZWdlU2V0TGVuZ3RoLA0K
ICAgICAgTFBEV09SRCBHcmFudGVkQWNjZXNzTGlzdCwNCiAgICAgIExQRFdPUkQgQWNjZXNzU3Rh
dHVzTGlzdA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkFjY2Vzc0NoZWNrQnlUeXBlQW5kQXVkaXRBbGFybVcoDQogICAgICBMUENXU1RSIFN1YnN5
c3RlbU5hbWUsDQogICAgICBMUFZPSUQgSGFuZGxlSWQsDQogICAgICBMUENXU1RSIE9iamVjdFR5
cGVOYW1lLA0KICAgICAgTFBDV1NUUiBPYmplY3ROYW1lLA0KICAgICAgUFNFQ1VSSVRZX0RFU0NS
SVBUT1IgU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICAgUFNJRCBQcmluY2lwYWxTZWxmU2lkLA0K
ICAgICAgRFdPUkQgRGVzaXJlZEFjY2VzcywNCiAgICAgIEFVRElUX0VWRU5UX1RZUEUgQXVkaXRU
eXBlLA0KICAgICAgRFdPUkQgRmxhZ3MsDQogICAgICBQT0JKRUNUX1RZUEVfTElTVCBPYmplY3RU
eXBlTGlzdCwNCiAgICAgIERXT1JEIE9iamVjdFR5cGVMaXN0TGVuZ3RoLA0KICAgICAgUEdFTkVS
SUNfTUFQUElORyBHZW5lcmljTWFwcGluZywNCiAgICAgIEJPT0wgT2JqZWN0Q3JlYXRpb24sDQog
ICAgICBMUERXT1JEIEdyYW50ZWRBY2Nlc3MsDQogICAgICBMUEJPT0wgQWNjZXNzU3RhdHVzLA0K
ICAgICAgTFBCT09MIHBmR2VuZXJhdGVPbkNsb3NlDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTMy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpBY2Nlc3NDaGVja0J5VHlwZVJlc3VsdExpc3RBbmRBdWRpdEFs
YXJtVygNCiAgICAgIExQQ1dTVFIgU3Vic3lzdGVtTmFtZSwNCiAgICAgIExQVk9JRCBIYW5kbGVJ
ZCwNCiAgICAgIExQQ1dTVFIgT2JqZWN0VHlwZU5hbWUsDQogICAgICBMUENXU1RSIE9iamVjdE5h
bWUsDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBTZWN1cml0eURlc2NyaXB0b3IsDQogICAg
ICBQU0lEIFByaW5jaXBhbFNlbGZTaWQsDQogICAgICBEV09SRCBEZXNpcmVkQWNjZXNzLA0KICAg
ICAgQVVESVRfRVZFTlRfVFlQRSBBdWRpdFR5cGUsDQogICAgICBEV09SRCBGbGFncywNCiAgICAg
IFBPQkpFQ1RfVFlQRV9MSVNUIE9iamVjdFR5cGVMaXN0LA0KICAgICAgRFdPUkQgT2JqZWN0VHlw
ZUxpc3RMZW5ndGgsDQogICAgICBQR0VORVJJQ19NQVBQSU5HIEdlbmVyaWNNYXBwaW5nLA0KICAg
ICAgQk9PTCBPYmplY3RDcmVhdGlvbiwNCiAgICAgIExQRFdPUkQgR3JhbnRlZEFjY2Vzc0xpc3Qs
DQogICAgICBMUERXT1JEIEFjY2Vzc1N0YXR1c0xpc3QsDQogICAgICBMUEJPT0wgcGZHZW5lcmF0
ZU9uQ2xvc2UNCiAgICApOw0KDQoNCg0KDQojbGluZSAxNTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0
eWJhc2VhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFj
Y2Vzc0NoZWNrQnlUeXBlUmVzdWx0TGlzdEFuZEF1ZGl0QWxhcm1CeUhhbmRsZVcoDQogICAgICBM
UENXU1RSIFN1YnN5c3RlbU5hbWUsDQogICAgICBMUFZPSUQgSGFuZGxlSWQsDQogICAgICBIQU5E
TEUgQ2xpZW50VG9rZW4sDQogICAgICBMUENXU1RSIE9iamVjdFR5cGVOYW1lLA0KICAgICAgTFBD
V1NUUiBPYmplY3ROYW1lLA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgU2VjdXJpdHlEZXNj
cmlwdG9yLA0KICAgICAgUFNJRCBQcmluY2lwYWxTZWxmU2lkLA0KICAgICAgRFdPUkQgRGVzaXJl
ZEFjY2VzcywNCiAgICAgIEFVRElUX0VWRU5UX1RZUEUgQXVkaXRUeXBlLA0KICAgICAgRFdPUkQg
RmxhZ3MsDQogICAgICBQT0JKRUNUX1RZUEVfTElTVCBPYmplY3RUeXBlTGlzdCwNCiAgICAgIERX
T1JEIE9iamVjdFR5cGVMaXN0TGVuZ3RoLA0KICAgICAgUEdFTkVSSUNfTUFQUElORyBHZW5lcmlj
TWFwcGluZywNCiAgICAgIEJPT0wgT2JqZWN0Q3JlYXRpb24sDQogICAgICBMUERXT1JEIEdyYW50
ZWRBY2Nlc3NMaXN0LA0KICAgICAgTFBEV09SRCBBY2Nlc3NTdGF0dXNMaXN0LA0KICAgICAgTFBC
T09MIHBmR2VuZXJhdGVPbkNsb3NlDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTg3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQoNCiNsaW5lIDE4OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3Vy
aXR5YmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGlj
YXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkFkZEFjY2Vzc0FsbG93ZWRBY2UoDQogICAgICBQQUNMIHBBY2ws
DQogICAgICBEV09SRCBkd0FjZVJldmlzaW9uLA0KICAgICAgRFdPUkQgQWNjZXNzTWFzaywNCiAg
ICAgIFBTSUQgcFNpZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkFkZEFjY2Vzc0FsbG93ZWRBY2VFeCgNCiAgICAgIFBBQ0wgcEFjbCwNCiAgICAg
IERXT1JEIGR3QWNlUmV2aXNpb24sDQogICAgICBEV09SRCBBY2VGbGFncywNCiAgICAgIERXT1JE
IEFjY2Vzc01hc2ssDQogICAgICBQU0lEIHBTaWQNCiAgICApOw0KDQoNCiNsaW5lIDIxOCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRkQWNjZXNzQWxsb3dlZE9iamVjdEFjZSgN
CiAgICAgIFBBQ0wgcEFjbCwNCiAgICAgIERXT1JEIGR3QWNlUmV2aXNpb24sDQogICAgICBEV09S
RCBBY2VGbGFncywNCiAgICAgIERXT1JEIEFjY2Vzc01hc2ssDQogICAgICBHVUlEKiBPYmplY3RU
eXBlR3VpZCwNCiAgICAgIEdVSUQqIEluaGVyaXRlZE9iamVjdFR5cGVHdWlkLA0KICAgICAgUFNJ
RCBwU2lkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KQWRkQWNjZXNzRGVuaWVkQWNlKA0KICAgICAgUEFDTCBwQWNsLA0KICAgICAgRFdPUkQgZHdB
Y2VSZXZpc2lvbiwNCiAgICAgIERXT1JEIEFjY2Vzc01hc2ssDQogICAgICBQU0lEIHBTaWQNCiAg
ICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpBZGRBY2Nl
c3NEZW5pZWRBY2VFeCgNCiAgICAgIFBBQ0wgcEFjbCwNCiAgICAgIERXT1JEIGR3QWNlUmV2aXNp
b24sDQogICAgICBEV09SRCBBY2VGbGFncywNCiAgICAgIERXT1JEIEFjY2Vzc01hc2ssDQogICAg
ICBQU0lEIHBTaWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpBZGRBY2Nlc3NEZW5pZWRPYmplY3RBY2UoDQogICAgICBQQUNMIHBBY2wsDQogICAg
ICBEV09SRCBkd0FjZVJldmlzaW9uLA0KICAgICAgRFdPUkQgQWNlRmxhZ3MsDQogICAgICBEV09S
RCBBY2Nlc3NNYXNrLA0KICAgICAgR1VJRCogT2JqZWN0VHlwZUd1aWQsDQogICAgICBHVUlEKiBJ
bmhlcml0ZWRPYmplY3RUeXBlR3VpZCwNCiAgICAgIFBTSUQgcFNpZA0KICAgICk7DQoNCg0KI2xp
bmUgMjc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRkQWNlKA0KICAg
ICAgUEFDTCBwQWNsLA0KICAgICAgRFdPUkQgZHdBY2VSZXZpc2lvbiwNCiAgICAgIERXT1JEIGR3
U3RhcnRpbmdBY2VJbmRleCwNCiAgICAgIExQVk9JRCBwQWNlTGlzdCwNCiAgICAgIERXT1JEIG5B
Y2VMaXN0TGVuZ3RoDQogICAgKTsNCg0KDQojbGluZSAyOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0
eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkFkZEF1ZGl0QWNjZXNzQWNlKA0KICAgICAgUEFDTCBwQWNsLA0KICAgICAg
RFdPUkQgZHdBY2VSZXZpc2lvbiwNCiAgICAgIERXT1JEIGR3QWNjZXNzTWFzaywNCiAgICAgIFBT
SUQgcFNpZCwNCiAgICAgIEJPT0wgYkF1ZGl0U3VjY2VzcywNCiAgICAgIEJPT0wgYkF1ZGl0RmFp
bHVyZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkFkZEF1ZGl0QWNjZXNzQWNlRXgoDQogICAgICBQQUNMIHBBY2wsDQogICAgICBEV09SRCBkd0Fj
ZVJldmlzaW9uLA0KICAgICAgRFdPUkQgQWNlRmxhZ3MsDQogICAgICBEV09SRCBkd0FjY2Vzc01h
c2ssDQogICAgICBQU0lEIHBTaWQsDQogICAgICBCT09MIGJBdWRpdFN1Y2Nlc3MsDQogICAgICBC
T09MIGJBdWRpdEZhaWx1cmUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpBZGRBdWRpdEFjY2Vzc09iamVjdEFjZSgNCiAgICAgIFBBQ0wgcEFjbCwN
CiAgICAgIERXT1JEIGR3QWNlUmV2aXNpb24sDQogICAgICBEV09SRCBBY2VGbGFncywNCiAgICAg
IERXT1JEIEFjY2Vzc01hc2ssDQogICAgICBHVUlEKiBPYmplY3RUeXBlR3VpZCwNCiAgICAgIEdV
SUQqIEluaGVyaXRlZE9iamVjdFR5cGVHdWlkLA0KICAgICAgUFNJRCBwU2lkLA0KICAgICAgQk9P
TCBiQXVkaXRTdWNjZXNzLA0KICAgICAgQk9PTCBiQXVkaXRGYWlsdXJlDQogICAgKTsNCg0KDQoj
bGluZSAzNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWls
eQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRkTWFu
ZGF0b3J5QWNlKA0KICAgICAgUEFDTCBwQWNsLA0KICAgICAgRFdPUkQgZHdBY2VSZXZpc2lvbiwN
CiAgICAgIERXT1JEIEFjZUZsYWdzLA0KICAgICAgRFdPUkQgTWFuZGF0b3J5UG9saWN5LA0KICAg
ICAgUFNJRCBwTGFiZWxTaWQNCiAgICApOw0KDQoNCiNsaW5lIDM2MiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNl
Y3VyaXR5YmFzZWFwaS5oIg0KDQojbGluZSAzNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2Vh
cGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDAxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZh
bWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpBZGp1c3RUb2tlbkdyb3VwcygNCiAgICAgIEhBTkRMRSBUb2tlbkhhbmRsZSwN
CiAgICAgIEJPT0wgUmVzZXRUb0RlZmF1bHQsDQogICAgICBQVE9LRU5fR1JPVVBTIE5ld1N0YXRl
LA0KICAgICAgRFdPUkQgQnVmZmVyTGVuZ3RoLA0KICAgICAgUFRPS0VOX0dST1VQUyBQcmV2aW91
c1N0YXRlLA0KICAgICAgUERXT1JEIFJldHVybkxlbmd0aA0KICAgICk7DQoNCg0KI2xpbmUgNDE5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2Ft
ZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFk
anVzdFRva2VuUHJpdmlsZWdlcygNCiAgICAgIEhBTkRMRSBUb2tlbkhhbmRsZSwNCiAgICAgIEJP
T0wgRGlzYWJsZUFsbFByaXZpbGVnZXMsDQogICAgICBQVE9LRU5fUFJJVklMRUdFUyBOZXdTdGF0
ZSwNCiAgICAgIERXT1JEIEJ1ZmZlckxlbmd0aCwNCiAgICAgIFBUT0tFTl9QUklWSUxFR0VTIFBy
ZXZpb3VzU3RhdGUsDQogICAgICBQRFdPUkQgUmV0dXJuTGVuZ3RoDQogICAgKTsNCg0KDQojbGlu
ZSA0MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpBbGxvY2F0ZUFuZElu
aXRpYWxpemVTaWQoDQogICAgICBQU0lEX0lERU5USUZJRVJfQVVUSE9SSVRZIHBJZGVudGlmaWVy
QXV0aG9yaXR5LA0KICAgICAgQllURSBuU3ViQXV0aG9yaXR5Q291bnQsDQogICAgICBEV09SRCBu
U3ViQXV0aG9yaXR5MCwNCiAgICAgIERXT1JEIG5TdWJBdXRob3JpdHkxLA0KICAgICAgRFdPUkQg
blN1YkF1dGhvcml0eTIsDQogICAgICBEV09SRCBuU3ViQXV0aG9yaXR5MywNCiAgICAgIERXT1JE
IG5TdWJBdXRob3JpdHk0LA0KICAgICAgRFdPUkQgblN1YkF1dGhvcml0eTUsDQogICAgICBEV09S
RCBuU3ViQXV0aG9yaXR5NiwNCiAgICAgIERXT1JEIG5TdWJBdXRob3JpdHk3LA0KICAgICBQU0lE
KiBwU2lkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KQWxsb2NhdGVMb2NhbGx5VW5pcXVlSWQoDQogICAgICBQTFVJRCBMdWlkDQogICAgKTsNCg0K
DQojbGluZSA0NzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFyZUFsbEFjY2Vz
c2VzR3JhbnRlZCgNCiAgICAgIERXT1JEIEdyYW50ZWRBY2Nlc3MsDQogICAgICBEV09SRCBEZXNp
cmVkQWNjZXNzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KQXJlQW55QWNjZXNzZXNHcmFudGVkKA0KICAgICAgRFdPUkQgR3JhbnRlZEFjY2VzcywN
CiAgICAgIERXT1JEIERlc2lyZWRBY2Nlc3MNCiAgICApOw0KDQoNCiNsaW5lIDQ5NCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNoZWNrVG9rZW5NZW1iZXJzaGlwKA0KICAg
ICAgSEFORExFIFRva2VuSGFuZGxlLA0KICAgICAgUFNJRCBTaWRUb0NoZWNrLA0KICAgICAgUEJP
T0wgSXNNZW1iZXINCiAgICApOw0KDQoNCiNsaW5lIDUxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5
YmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA1NTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ29udmVydFRvQXV0b0luaGVyaXRQ
cml2YXRlT2JqZWN0U2VjdXJpdHkoDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBQYXJlbnRE
ZXNjcmlwdG9yLA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgQ3VycmVudFNlY3VyaXR5RGVz
Y3JpcHRvciwNCiAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IqIE5ld1NlY3VyaXR5RGVzY3JpcHRv
ciwNCiAgICAgIEdVSUQqIE9iamVjdFR5cGUsDQogICAgICBCT09MRUFOIElzRGlyZWN0b3J5T2Jq
ZWN0LA0KICAgICAgUEdFTkVSSUNfTUFQUElORyBHZW5lcmljTWFwcGluZw0KICAgICk7DQoNCg0K
I2xpbmUgNTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ29weVNpZCgN
CiAgICAgIERXT1JEIG5EZXN0aW5hdGlvblNpZExlbmd0aCwNCiAgICAgIFBTSUQgcERlc3RpbmF0
aW9uU2lkLA0KICAgICAgUFNJRCBwU291cmNlU2lkDQogICAgKTsNCg0KDQojbGluZSA1OTMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0ZVByaXZhdGVPYmplY3RTZWN1cml0
eSgNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIFBhcmVudERlc2NyaXB0b3IsDQogICAgICBQ
U0VDVVJJVFlfREVTQ1JJUFRPUiBDcmVhdG9yRGVzY3JpcHRvciwNCiAgICAgUFNFQ1VSSVRZX0RF
U0NSSVBUT1IqIE5ld0Rlc2NyaXB0b3IsDQogICAgICBCT09MIElzRGlyZWN0b3J5T2JqZWN0LA0K
ICAgICAgSEFORExFIFRva2VuLA0KICAgICAgUEdFTkVSSUNfTUFQUElORyBHZW5lcmljTWFwcGlu
Zw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNy
ZWF0ZVByaXZhdGVPYmplY3RTZWN1cml0eUV4KA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1Ig
UGFyZW50RGVzY3JpcHRvciwNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIENyZWF0b3JEZXNj
cmlwdG9yLA0KICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiogTmV3RGVzY3JpcHRvciwNCiAgICAg
IEdVSUQqIE9iamVjdFR5cGUsDQogICAgICBCT09MIElzQ29udGFpbmVyT2JqZWN0LA0KICAgICAg
VUxPTkcgQXV0b0luaGVyaXRGbGFncywNCiAgICAgIEhBTkRMRSBUb2tlbiwNCiAgICAgIFBHRU5F
UklDX01BUFBJTkcgR2VuZXJpY01hcHBpbmcNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDcmVhdGVQcml2YXRlT2JqZWN0U2VjdXJpdHlXaXRoTXVs
dGlwbGVJbmhlcml0YW5jZSgNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIFBhcmVudERlc2Ny
aXB0b3IsDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBDcmVhdG9yRGVzY3JpcHRvciwNCiAg
ICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IqIE5ld0Rlc2NyaXB0b3IsDQogICAgICBHVUlEKiogT2Jq
ZWN0VHlwZXMsDQogICAgICBVTE9ORyBHdWlkQ291bnQsDQogICAgICBCT09MIElzQ29udGFpbmVy
T2JqZWN0LA0KICAgICAgVUxPTkcgQXV0b0luaGVyaXRGbGFncywNCiAgICAgIEhBTkRMRSBUb2tl
biwNCiAgICAgIFBHRU5FUklDX01BUFBJTkcgR2VuZXJpY01hcHBpbmcNCiAgICApOw0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDcmVhdGVSZXN0cmljdGVkVG9r
ZW4oDQogICAgICBIQU5ETEUgRXhpc3RpbmdUb2tlbkhhbmRsZSwNCiAgICAgIERXT1JEIEZsYWdz
LA0KICAgICAgRFdPUkQgRGlzYWJsZVNpZENvdW50LA0KICAgICAgUFNJRF9BTkRfQVRUUklCVVRF
UyBTaWRzVG9EaXNhYmxlLA0KICAgICAgRFdPUkQgRGVsZXRlUHJpdmlsZWdlQ291bnQsDQogICAg
ICBQTFVJRF9BTkRfQVRUUklCVVRFUyBQcml2aWxlZ2VzVG9EZWxldGUsDQogICAgICBEV09SRCBS
ZXN0cmljdGVkU2lkQ291bnQsDQogICAgICBQU0lEX0FORF9BVFRSSUJVVEVTIFNpZHNUb1Jlc3Ry
aWN0LA0KICAgICBQSEFORExFIE5ld1Rva2VuSGFuZGxlDQogICAgKTsNCg0KDQojbGluZSA2NTkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KQ3JlYXRlV2VsbEtu
b3duU2lkKA0KICAgICAgV0VMTF9LTk9XTl9TSURfVFlQRSBXZWxsS25vd25TaWRUeXBlLA0KICAg
ICAgUFNJRCBEb21haW5TaWQsDQogICAgICBQU0lEIHBTaWQsDQogICAgICBEV09SRCogY2JTaWQN
CiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpF
cXVhbERvbWFpblNpZCgNCiAgICAgIFBTSUQgcFNpZDEsDQogICAgICBQU0lEIHBTaWQyLA0KICAg
ICAgQk9PTCogcGZFcXVhbA0KICAgICk7DQoNCg0KI2xpbmUgNjkwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2Vj
dXJpdHliYXNlYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpEZWxldGVBY2UoDQogICAgICBQQUNMIHBBY2wsDQogICAgICBEV09SRCBkd0FjZUluZGV4DQog
ICAgKTsNCg0KDQojbGluZSA3MDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNv
cmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRl
c3Ryb3lQcml2YXRlT2JqZWN0U2VjdXJpdHkoDQogICAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9S
KiBPYmplY3REZXNjcmlwdG9yDQogICAgKTsNCg0KDQojbGluZSA3MTUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxz
ZWN1cml0eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFw
cGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEdXBsaWNhdGVUb2tlbigNCiAgICAgIEhBTkRMRSBFeGlz
dGluZ1Rva2VuSGFuZGxlLA0KICAgICAgU0VDVVJJVFlfSU1QRVJTT05BVElPTl9MRVZFTCBJbXBl
cnNvbmF0aW9uTGV2ZWwsDQogICAgIFBIQU5ETEUgRHVwbGljYXRlVG9rZW5IYW5kbGUNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEdXBsaWNhdGVU
b2tlbkV4KA0KICAgICAgSEFORExFIGhFeGlzdGluZ1Rva2VuLA0KICAgICAgRFdPUkQgZHdEZXNp
cmVkQWNjZXNzLA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwVG9rZW5BdHRyaWJ1dGVz
LA0KICAgICAgU0VDVVJJVFlfSU1QRVJTT05BVElPTl9MRVZFTCBJbXBlcnNvbmF0aW9uTGV2ZWws
DQogICAgICBUT0tFTl9UWVBFIFRva2VuVHlwZSwNCiAgICAgUEhBTkRMRSBwaE5ld1Rva2VuDQog
ICAgKTsNCg0KDQojbGluZSA3NDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNv
cmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVx
dWFsUHJlZml4U2lkKA0KICAgICAgUFNJRCBwU2lkMSwNCiAgICAgIFBTSUQgcFNpZDINCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFcXVhbFNpZCgN
CiAgICAgIFBTSUQgcFNpZDEsDQogICAgICBQU0lEIHBTaWQyDQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRmluZEZpcnN0RnJlZUFjZSgNCiAgICAg
IFBBQ0wgcEFjbCwNCiAgICAgTFBWT0lEKiBwQWNlDQogICAgKTsNCg0KDQojbGluZSA3NzcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KUFZPSUQNCl9fc3RkY2FsbA0KRnJlZVNpZCgNCiAgICAgIFBTSUQg
cFNpZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkdldEFjZSgNCiAgICAgIFBBQ0wgcEFjbCwNCiAgICAgIERXT1JEIGR3QWNlSW5kZXgsDQogICAg
IExQVk9JRCogcEFjZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkdldEFjbEluZm9ybWF0aW9uKA0KICAgICAgUEFDTCBwQWNsLA0KICAgICAgTFBW
T0lEIHBBY2xJbmZvcm1hdGlvbiwNCiAgICAgIERXT1JEIG5BY2xJbmZvcm1hdGlvbkxlbmd0aCwN
CiAgICAgIEFDTF9JTkZPUk1BVElPTl9DTEFTUyBkd0FjbEluZm9ybWF0aW9uQ2xhc3MNCiAgICAp
Ow0KDQoNCiNsaW5lIDgxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Rmls
ZVNlY3VyaXR5VygNCiAgICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAgIFNFQ1VSSVRZX0lO
Rk9STUFUSU9OIFJlcXVlc3RlZEluZm9ybWF0aW9uLA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBU
T1IgcFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIERXT1JEIG5MZW5ndGgsDQogICAgICBMUERX
T1JEIGxwbkxlbmd0aE5lZWRlZA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDgzMiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQojbGluZSA4MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0
eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0
aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpHZXRLZXJuZWxPYmplY3RTZWN1cml0eSgNCiAgICAgIEhBTkRMRSBI
YW5kbGUsDQogICAgICBTRUNVUklUWV9JTkZPUk1BVElPTiBSZXF1ZXN0ZWRJbmZvcm1hdGlvbiwN
CiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBE
V09SRCBuTGVuZ3RoLA0KICAgICAgTFBEV09SRCBscG5MZW5ndGhOZWVkZWQNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0TGVuZ3Ro
U2lkKA0KICAgICAgICBQU0lEIHBTaWQNCiAgICApOw0KDQoNCiNsaW5lIDg2MiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KR2V0UHJpdmF0ZU9iamVjdFNlY3VyaXR5KA0KICAg
ICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgT2JqZWN0RGVzY3JpcHRvciwNCiAgICAgIFNFQ1VSSVRZ
X0lORk9STUFUSU9OIFNlY3VyaXR5SW5mb3JtYXRpb24sDQogICAgICBQU0VDVVJJVFlfREVTQ1JJ
UFRPUiBSZXN1bHRhbnREZXNjcmlwdG9yLA0KICAgICAgRFdPUkQgRGVzY3JpcHRvckxlbmd0aCwN
CiAgICAgIFBEV09SRCBSZXR1cm5MZW5ndGgNCiAgICApOw0KDQoNCiNsaW5lIDg4MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFNlY3VyaXR5RGVzY3JpcHRvckNvbnRy
b2woDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAg
ICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1JfQ09OVFJPTCBwQ29udHJvbCwNCiAgICAgIExQRFdPUkQg
bHBkd1JldmlzaW9uDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KR2V0U2VjdXJpdHlEZXNjcmlwdG9yRGFjbCgNCiAgICAgIFBTRUNVUklUWV9ERVND
UklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBMUEJPT0wgbHBiRGFjbFByZXNlbnQs
DQogICAgIFBBQ0wqIHBEYWNsLA0KICAgICAgTFBCT09MIGxwYkRhY2xEZWZhdWx0ZWQNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRTZWN1cml0
eURlc2NyaXB0b3JHcm91cCgNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURl
c2NyaXB0b3IsDQogICAgIFBTSUQqIHBHcm91cCwNCiAgICAgIExQQk9PTCBscGJHcm91cERlZmF1
bHRlZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxs
DQpHZXRTZWN1cml0eURlc2NyaXB0b3JMZW5ndGgoDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRP
UiBwU2VjdXJpdHlEZXNjcmlwdG9yDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KR2V0U2VjdXJpdHlEZXNjcmlwdG9yT3duZXIoDQogICAgICBQU0VD
VVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICBQU0lEKiBwT3duZXIs
DQogICAgICBMUEJPT0wgbHBiT3duZXJEZWZhdWx0ZWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0U2VjdXJpdHlEZXNjcmlwdG9yUk1Db250
cm9sKA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAg
ICAgUFVDSEFSIFJNQ29udHJvbA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldFNlY3VyaXR5RGVzY3JpcHRvclNhY2woDQogICAgICBQU0VDVVJJ
VFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICAgTFBCT09MIGxwYlNhY2xQ
cmVzZW50LA0KICAgICBQQUNMKiBwU2FjbCwNCiAgICAgIExQQk9PTCBscGJTYWNsRGVmYXVsdGVk
DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClBTSURfSURFTlRJRklFUl9BVVRI
T1JJVFkNCl9fc3RkY2FsbA0KR2V0U2lkSWRlbnRpZmllckF1dGhvcml0eSgNCiAgICAgIFBTSUQg
cFNpZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxs
DQpHZXRTaWRMZW5ndGhSZXF1aXJlZCgNCiAgICAgIFVDSEFSIG5TdWJBdXRob3JpdHlDb3VudA0K
ICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpQRFdPUkQNCl9fc3RkY2FsbA0KR2V0
U2lkU3ViQXV0aG9yaXR5KA0KICAgICAgUFNJRCBwU2lkLA0KICAgICAgRFdPUkQgblN1YkF1dGhv
cml0eQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpQVUNIQVINCl9fc3RkY2Fs
bA0KR2V0U2lkU3ViQXV0aG9yaXR5Q291bnQoDQogICAgICBQU0lEIHBTaWQNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRUb2tlbkluZm9ybWF0
aW9uKA0KICAgICAgSEFORExFIFRva2VuSGFuZGxlLA0KICAgICAgVE9LRU5fSU5GT1JNQVRJT05f
Q0xBU1MgVG9rZW5JbmZvcm1hdGlvbkNsYXNzLA0KICAgICAgTFBWT0lEIFRva2VuSW5mb3JtYXRp
b24sDQogICAgICBEV09SRCBUb2tlbkluZm9ybWF0aW9uTGVuZ3RoLA0KICAgICAgUERXT1JEIFJl
dHVybkxlbmd0aA0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9P
TA0KX19zdGRjYWxsDQpHZXRXaW5kb3dzQWNjb3VudERvbWFpblNpZCgNCiAgICAgIFBTSUQgcFNp
ZCwNCiAgICAgIFBTSUQgcERvbWFpblNpZCwNCiAgICAgIERXT1JEKiBjYkRvbWFpblNpZA0KICAg
ICk7DQoNCg0KI2xpbmUgMTAxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQoj
bGluZSAxMDE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJbXBlcnNvbmF0ZUFu
b255bW91c1Rva2VuKA0KICAgICAgSEFORExFIFRocmVhZEhhbmRsZQ0KICAgICk7DQoNCg0KIA0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkltcGVyc29uYXRlTG9nZ2Vk
T25Vc2VyKA0KICAgICAgSEFORExFIGhUb2tlbg0KICAgICk7DQoNCg0KIA0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkltcGVyc29uYXRlU2VsZigNCiAgICAgIFNFQ1VS
SVRZX0lNUEVSU09OQVRJT05fTEVWRUwgSW1wZXJzb25hdGlvbkxldmVsDQogICAgKTsNCg0KDQoj
bGluZSAxMDQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSW5pdGlhbGl6
ZUFjbCgNCiAgICAgIFBBQ0wgcEFjbCwNCiAgICAgIERXT1JEIG5BY2xMZW5ndGgsDQogICAgICBE
V09SRCBkd0FjbFJldmlzaW9uDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KSW5pdGlhbGl6ZVNlY3VyaXR5RGVzY3JpcHRvcigNCiAgICAgIFBTRUNV
UklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBEV09SRCBkd1Jldmlz
aW9uDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
SW5pdGlhbGl6ZVNpZCgNCiAgICAgIFBTSUQgU2lkLA0KICAgICAgUFNJRF9JREVOVElGSUVSX0FV
VEhPUklUWSBwSWRlbnRpZmllckF1dGhvcml0eSwNCiAgICAgIEJZVEUgblN1YkF1dGhvcml0eUNv
dW50DQogICAgKTsNCg0KDQojbGluZSAxMDgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBp
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpJc1Rva2VuUmVzdHJpY3RlZCgNCiAgICAgIEhBTkRMRSBUb2tlbkhhbmRsZQ0KICAgICk7
DQoNCg0KI2xpbmUgMTA5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNv
cmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklz
VmFsaWRBY2woDQogICAgICBQQUNMIHBBY2wNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJc1ZhbGlkU2VjdXJpdHlEZXNjcmlwdG9yKA0KICAgICAg
UFNFQ1VSSVRZX0RFU0NSSVBUT1IgcFNlY3VyaXR5RGVzY3JpcHRvcg0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzVmFsaWRTaWQoDQogICAgICBQ
U0lEIHBTaWQNCiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KSXNXZWxsS25vd25TaWQoDQogICAgICBQU0lEIHBTaWQsDQogICAgICBXRUxMX0tO
T1dOX1NJRF9UWVBFIFdlbGxLbm93blNpZFR5cGUNCiAgICApOw0KDQoNCiNsaW5lIDExMzggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQog
DQpCT09MDQpfX3N0ZGNhbGwNCk1ha2VBYnNvbHV0ZVNEKA0KICAgICAgUFNFQ1VSSVRZX0RFU0NS
SVBUT1IgcFNlbGZSZWxhdGl2ZVNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIFBTRUNVUklUWV9E
RVNDUklQVE9SIHBBYnNvbHV0ZVNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIExQRFdPUkQgbHBk
d0Fic29sdXRlU2VjdXJpdHlEZXNjcmlwdG9yU2l6ZSwNCiAgICAgIFBBQ0wgcERhY2wsDQogICAg
ICBMUERXT1JEIGxwZHdEYWNsU2l6ZSwNCiAgICAgIFBBQ0wgcFNhY2wsDQogICAgICBMUERXT1JE
IGxwZHdTYWNsU2l6ZSwNCiAgICAgIFBTSUQgcE93bmVyLA0KICAgICAgTFBEV09SRCBscGR3T3du
ZXJTaXplLA0KICAgICAgUFNJRCBwUHJpbWFyeUdyb3VwLA0KICAgICAgTFBEV09SRCBscGR3UHJp
bWFyeUdyb3VwU2l6ZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09M
DQpfX3N0ZGNhbGwNCk1ha2VTZWxmUmVsYXRpdmVTRCgNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQ
VE9SIHBBYnNvbHV0ZVNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQ
VE9SIHBTZWxmUmVsYXRpdmVTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBMUERXT1JEIGxwZHdC
dWZmZXJMZW5ndGgNCiAgICApOw0KDQoNCiNsaW5lIDExNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0
eWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
DQpfX3N0ZGNhbGwNCk1hcEdlbmVyaWNNYXNrKA0KICAgICAgUERXT1JEIEFjY2Vzc01hc2ssDQog
ICAgICBQR0VORVJJQ19NQVBQSU5HIEdlbmVyaWNNYXBwaW5nDQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KT2JqZWN0Q2xvc2VBdWRpdEFsYXJtVygN
CiAgICAgIExQQ1dTVFIgU3Vic3lzdGVtTmFtZSwNCiAgICAgIExQVk9JRCBIYW5kbGVJZCwNCiAg
ICAgIEJPT0wgR2VuZXJhdGVPbkNsb3NlDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTE5NyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KT2JqZWN0RGVsZXRlQXVkaXRBbGFybVcoDQogICAgICBMUENXU1RSIFN1
YnN5c3RlbU5hbWUsDQogICAgICBMUFZPSUQgSGFuZGxlSWQsDQogICAgICBCT09MIEdlbmVyYXRl
T25DbG9zZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDEyMTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0
eWJhc2VhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCk9i
amVjdE9wZW5BdWRpdEFsYXJtVygNCiAgICAgIExQQ1dTVFIgU3Vic3lzdGVtTmFtZSwNCiAgICAg
IExQVk9JRCBIYW5kbGVJZCwNCiAgICAgIExQV1NUUiBPYmplY3RUeXBlTmFtZSwNCiAgICAgIExQ
V1NUUiBPYmplY3ROYW1lLA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgcFNlY3VyaXR5RGVz
Y3JpcHRvciwNCiAgICAgIEhBTkRMRSBDbGllbnRUb2tlbiwNCiAgICAgIERXT1JEIERlc2lyZWRB
Y2Nlc3MsDQogICAgICBEV09SRCBHcmFudGVkQWNjZXNzLA0KICAgICAgUFBSSVZJTEVHRV9TRVQg
UHJpdmlsZWdlcywNCiAgICAgIEJPT0wgT2JqZWN0Q3JlYXRpb24sDQogICAgICBCT09MIEFjY2Vz
c0dyYW50ZWQsDQogICAgICBMUEJPT0wgR2VuZXJhdGVPbkNsb3NlDQogICAgKTsNCg0KDQoNCg0K
I2xpbmUgMTIzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KT2JqZWN0UHJpdmlsZWdlQXVkaXRBbGFybVco
DQogICAgICBMUENXU1RSIFN1YnN5c3RlbU5hbWUsDQogICAgICBMUFZPSUQgSGFuZGxlSWQsDQog
ICAgICBIQU5ETEUgQ2xpZW50VG9rZW4sDQogICAgICBEV09SRCBEZXNpcmVkQWNjZXNzLA0KICAg
ICAgUFBSSVZJTEVHRV9TRVQgUHJpdmlsZWdlcywNCiAgICAgIEJPT0wgQWNjZXNzR3JhbnRlZA0K
ICAgICk7DQoNCg0KDQoNCiNsaW5lIDEyNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGku
aCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClByaXZpbGVnZUNo
ZWNrKA0KICAgICAgSEFORExFIENsaWVudFRva2VuLA0KICAgICAgUFBSSVZJTEVHRV9TRVQgUmVx
dWlyZWRQcml2aWxlZ2VzLA0KICAgICAgTFBCT09MIHBmUmVzdWx0DQogICAgKTsNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUHJpdmlsZWdlZFNlcnZpY2VBdWRp
dEFsYXJtVygNCiAgICAgIExQQ1dTVFIgU3Vic3lzdGVtTmFtZSwNCiAgICAgIExQQ1dTVFIgU2Vy
dmljZU5hbWUsDQogICAgICBIQU5ETEUgQ2xpZW50VG9rZW4sDQogICAgICBQUFJJVklMRUdFX1NF
VCBQcml2aWxlZ2VzLA0KICAgICAgQk9PTCBBY2Nlc3NHcmFudGVkDQogICAgKTsNCg0KDQoNCg0K
I2xpbmUgMTI3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNClF1ZXJ5U2VjdXJpdHlBY2Nlc3NNYXNr
KA0KICAgICAgU0VDVVJJVFlfSU5GT1JNQVRJT04gU2VjdXJpdHlJbmZvcm1hdGlvbiwNCiAgICAg
IExQRFdPUkQgRGVzaXJlZEFjY2Vzcw0KICAgICk7DQoNCg0KI2xpbmUgMTI5MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KUmV2ZXJ0VG9TZWxmKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRBY2xJbmZvcm1hdGlvbigNCiAgICAgIFBB
Q0wgcEFjbCwNCiAgICAgIExQVk9JRCBwQWNsSW5mb3JtYXRpb24sDQogICAgICBEV09SRCBuQWNs
SW5mb3JtYXRpb25MZW5ndGgsDQogICAgICBBQ0xfSU5GT1JNQVRJT05fQ0xBU1MgZHdBY2xJbmZv
cm1hdGlvbkNsYXNzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KU2V0RmlsZVNlY3VyaXR5VygNCiAgICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAg
ICAgIFNFQ1VSSVRZX0lORk9STUFUSU9OIFNlY3VyaXR5SW5mb3JtYXRpb24sDQogICAgICBQU0VD
VVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlwdG9yDQogICAgKTsNCg0KDQoNCiNsaW5l
IDEzMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCg0KI2xpbmUgMTMyNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEtlcm5lbE9iamVjdFNlY3VyaXR5
KA0KICAgICAgSEFORExFIEhhbmRsZSwNCiAgICAgIFNFQ1VSSVRZX0lORk9STUFUSU9OIFNlY3Vy
aXR5SW5mb3JtYXRpb24sDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBTZWN1cml0eURlc2Ny
aXB0b3INCiAgICApOw0KDQoNCiNsaW5lIDEzNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWJhc2Vh
cGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNClNldFByaXZhdGVPYmplY3RTZWN1cml0eSgNCiAgICAgIFNFQ1VSSVRZX0lORk9STUFU
SU9OIFNlY3VyaXR5SW5mb3JtYXRpb24sDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBNb2Rp
ZmljYXRpb25EZXNjcmlwdG9yLA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IqIE9iamVjdHNT
ZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBQR0VORVJJQ19NQVBQSU5HIEdlbmVyaWNNYXBwaW5n
LA0KICAgICAgSEFORExFIFRva2VuDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KU2V0UHJpdmF0ZU9iamVjdFNlY3VyaXR5RXgoDQogICAgICBTRUNV
UklUWV9JTkZPUk1BVElPTiBTZWN1cml0eUluZm9ybWF0aW9uLA0KICAgICAgUFNFQ1VSSVRZX0RF
U0NSSVBUT1IgTW9kaWZpY2F0aW9uRGVzY3JpcHRvciwNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQ
VE9SKiBPYmplY3RzU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICAgVUxPTkcgQXV0b0luaGVyaXRG
bGFncywNCiAgICAgIFBHRU5FUklDX01BUFBJTkcgR2VuZXJpY01hcHBpbmcsDQogICAgICBIQU5E
TEUgVG9rZW4NCiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9f
c3RkY2FsbA0KU2V0U2VjdXJpdHlBY2Nlc3NNYXNrKA0KICAgICAgU0VDVVJJVFlfSU5GT1JNQVRJ
T04gU2VjdXJpdHlJbmZvcm1hdGlvbiwNCiAgICAgIExQRFdPUkQgRGVzaXJlZEFjY2Vzcw0KICAg
ICk7DQoNCg0KI2xpbmUgMTM4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KDQoj
bGluZSAxMzg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHliYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0U2VjdXJp
dHlEZXNjcmlwdG9yQ29udHJvbCgNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0
eURlc2NyaXB0b3IsDQogICAgICBTRUNVUklUWV9ERVNDUklQVE9SX0NPTlRST0wgQ29udHJvbEJp
dHNPZkludGVyZXN0LA0KICAgICAgU0VDVVJJVFlfREVTQ1JJUFRPUl9DT05UUk9MIENvbnRyb2xC
aXRzVG9TZXQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpTZXRTZWN1cml0eURlc2NyaXB0b3JEYWNsKA0KICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBU
T1IgcFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIEJPT0wgYkRhY2xQcmVzZW50LA0KICAgICAg
UEFDTCBwRGFjbCwNCiAgICAgIEJPT0wgYkRhY2xEZWZhdWx0ZWQNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRTZWN1cml0eURlc2NyaXB0b3JH
cm91cCgNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3IsDQog
ICAgICBQU0lEIHBHcm91cCwNCiAgICAgIEJPT0wgYkdyb3VwRGVmYXVsdGVkDQogICAgKTsNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0U2VjdXJpdHlEZXNj
cmlwdG9yT3duZXIoDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlw
dG9yLA0KICAgICAgUFNJRCBwT3duZXIsDQogICAgICBCT09MIGJPd25lckRlZmF1bHRlZA0KICAg
ICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpTZXRTZWN1
cml0eURlc2NyaXB0b3JSTUNvbnRyb2woDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBTZWN1
cml0eURlc2NyaXB0b3IsDQogICAgICBQVUNIQVIgUk1Db250cm9sDQogICAgKTsNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0U2VjdXJpdHlEZXNjcmlwdG9y
U2FjbCgNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3IsDQog
ICAgICBCT09MIGJTYWNsUHJlc2VudCwNCiAgICAgIFBBQ0wgcFNhY2wsDQogICAgICBCT09MIGJT
YWNsRGVmYXVsdGVkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KU2V0VG9rZW5JbmZvcm1hdGlvbigNCiAgICAgIEhBTkRMRSBUb2tlbkhhbmRsZSwN
CiAgICAgIFRPS0VOX0lORk9STUFUSU9OX0NMQVNTIFRva2VuSW5mb3JtYXRpb25DbGFzcywNCiAg
ICAgIExQVk9JRCBUb2tlbkluZm9ybWF0aW9uLA0KICAgICAgRFdPUkQgVG9rZW5JbmZvcm1hdGlv
bkxlbmd0aA0KICAgICk7DQoNCg0KI2xpbmUgMTQ2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFz
ZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0OTcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxzZWN1cml0eWJhc2VhcGkuaCINCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTUxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFwaS5oIg0KIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTM2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
c2VjdXJpdHliYXNlYXBpLmgiDQogDQoNCn0NCiNsaW5lIDE1NDAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZWN1
cml0eWJhc2VhcGkuaCINCg0KI2xpbmUgMTU0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlY3VyaXR5YmFzZWFw
aS5oIg0KI2xpbmUgNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojbGluZSAxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbmFtZXNwYWNlYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNs
aW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbmFtZXNwYWNlYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgew0KI2xpbmUgMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYW1lc3BhY2VhcGkuaCINCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlUHJpdmF0ZU5h
bWVzcGFjZVcoDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBQcml2YXRlTmFtZXNwYWNl
QXR0cmlidXRlcywNCiAgICAgIExQVk9JRCBscEJvdW5kYXJ5RGVzY3JpcHRvciwNCiAgICAgIExQ
Q1dTVFIgbHBBbGlhc1ByZWZpeA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
QU5ETEUNCl9fc3RkY2FsbA0KT3BlblByaXZhdGVOYW1lc3BhY2VXKA0KICAgICAgTFBWT0lEIGxw
Qm91bmRhcnlEZXNjcmlwdG9yLA0KICAgICAgTFBDV1NUUiBscEFsaWFzUHJlZml4DQogICAgKTsN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0xFQU4NCl9fc3RkY2FsbA0KQ2xvc2VQcml2
YXRlTmFtZXNwYWNlKA0KICAgICAgSEFORExFIEhhbmRsZSwNCiAgICAgIFVMT05HIEZsYWdzDQog
ICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVh
dGVCb3VuZGFyeURlc2NyaXB0b3JXKA0KICAgICAgTFBDV1NUUiBOYW1lLA0KICAgICAgVUxPTkcg
RmxhZ3MNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpBZGRTSURUb0JvdW5kYXJ5RGVzY3JpcHRvcigNCiAgICAgIEhBTkRMRSogQm91bmRhcnlEZXNj
cmlwdG9yLA0KICAgICAgUFNJRCBSZXF1aXJlZFNpZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkRlbGV0ZUJvdW5kYXJ5RGVzY3JpcHRvcigNCiAg
ICAgIEhBTkRMRSBCb3VuZGFyeURlc2NyaXB0b3INCiAgICApOw0KDQoNCiNsaW5lIDg1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbmFtZXNwYWNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5l
IDkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbmFtZXNwYWNlYXBpLmgiDQoNCiNsaW5lIDkyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbmFtZXNwYWNlYXBpLmgiDQojbGluZSA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNs
aW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzeXN0ZW10b3BvbG9neWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c3RlbXRvcG9sb2d5YXBp
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxzeXN0ZW10b3BvbG9neWFwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TnVtYUhpZ2hlc3ROb2RlTnVtYmVyKA0KICAgICAg
UFVMT05HIEhpZ2hlc3ROb2RlTnVtYmVyDQogICAgKTsNCg0KDQojbGluZSAzNyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHN5c3RlbXRvcG9sb2d5YXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJl
Z2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TnVtYU5vZGVQcm9jZXNzb3JNYXNrRXgo
DQogICAgICBVU0hPUlQgTm9kZSwNCiAgICAgIFBHUk9VUF9BRkZJTklUWSBQcm9jZXNzb3JNYXNr
DQogICAgKTsNCg0KDQojbGluZSA1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c3RlbXRvcG9sb2d5YXBpLmgi
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TnVtYVBy
b3hpbWl0eU5vZGVFeCgNCiAgICAgIFVMT05HIFByb3hpbWl0eUlkLA0KICAgICAgUFVTSE9SVCBO
b2RlTnVtYmVyDQogICAgKTsNCg0KDQojbGluZSA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c3RlbXRvcG9s
b2d5YXBpLmgiDQoNCiNsaW5lIDY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3lzdGVtdG9wb2xvZ3lhcGkuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzeXN0ZW10
b3BvbG9neWFwaS5oIg0KDQojbGluZSA3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN5c3RlbXRvcG9sb2d5YXBp
LmgiDQojbGluZSA2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxwcm9jZXNzdG9wb2xvZ3lhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9jZXNzdG9wb2xvZ3lhcGkuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0
b3BvbG9neWFwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
R2V0UHJvY2Vzc0dyb3VwQWZmaW5pdHkoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBQ
VVNIT1JUIEdyb3VwQ291bnQsDQogICAgICBQVVNIT1JUIEdyb3VwQXJyYXkNCiAgICApOw0KDQoN
CiNsaW5lIDQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RvcG9sb2d5YXBpLmgiDQoNCiNsaW5lIDQz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxccHJvY2Vzc3RvcG9sb2d5YXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBv
ciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNCkdldFRocmVhZEdyb3VwQWZmaW5pdHkoDQogICAgICBIQU5ETEUgaFRocmVhZCwNCiAg
ICAgIFBHUk9VUF9BRkZJTklUWSBHcm91cEFmZmluaXR5DQogICAgKTsNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0VGhyZWFkR3JvdXBBZmZpbml0eSgNCiAg
ICAgIEhBTkRMRSBoVGhyZWFkLA0KICAgICAgY29uc3QgR1JPVVBfQUZGSU5JVFkqIEdyb3VwQWZm
aW5pdHksDQogICAgICBQR1JPVVBfQUZGSU5JVFkgUHJldmlvdXNHcm91cEFmZmluaXR5DQogICAg
KTsNCg0KDQojbGluZSA3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0b3BvbG9neWFwaS5oIg0KDQoj
bGluZSA3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0b3BvbG9neWFwaS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KDQp9DQojbGluZSA3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0b3BvbG9neWFwaS5o
Ig0KDQojbGluZSA4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb2Nlc3N0b3BvbG9neWFwaS5oIg0KI2xpbmUg
NjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJp
dHlhcHBjb250YWluZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUg
MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxzZWN1cml0eWFwcGNvbnRhaW5lci5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VjdXJpdHlhcHBjb250
YWluZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcc2VjdXJpdHlhcHBjb250YWluZXIuaCINCg0KDQp9DQojbGluZSA1MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHNlY3VyaXR5YXBwY29udGFpbmVyLmgiDQoNCiNsaW5lIDU0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcc2VjdXJpdHlhcHBjb250YWluZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDU3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcc2VjdXJpdHlhcHBjb250YWluZXIuaCINCiNsaW5lIDcwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJlYWx0aW1lYXBpc2V0Lmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
cmVhbHRpbWVhcGlzZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUg
MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxyZWFsdGltZWFwaXNldC5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNr
dG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KUXVlcnlUaHJlYWRDeWNsZVRpbWUoDQogICAgICBIQU5ETEUg
VGhyZWFkSGFuZGxlLA0KICAgICAgUFVMT05HNjQgQ3ljbGVUaW1lDQogICAgKTsNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUXVlcnlQcm9jZXNzQ3ljbGVUaW1l
KA0KICAgICAgSEFORExFIFByb2Nlc3NIYW5kbGUsDQogICAgICBQVUxPTkc2NCBDeWNsZVRpbWUN
CiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWVy
eUlkbGVQcm9jZXNzb3JDeWNsZVRpbWUoDQogICAgICBQVUxPTkcgQnVmZmVyTGVuZ3RoLA0KICAg
ICAgUFVMT05HNjQgUHJvY2Vzc29ySWRsZUN5Y2xlVGltZQ0KICAgICk7DQoNCg0KI2xpbmUgNTcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxyZWFsdGltZWFwaXNldC5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClF1ZXJ5SWRsZVByb2Nlc3NvckN5Y2xlVGltZUV4KA0KICAg
ICAgVVNIT1JUIEdyb3VwLA0KICAgICAgUFVMT05HIEJ1ZmZlckxlbmd0aCwNCiAgICAgIFBVTE9O
RzY0IFByb2Nlc3NvcklkbGVDeWNsZVRpbWUNCiAgICApOw0KDQogICAgDQojbGluZSA3MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHJlYWx0aW1lYXBpc2V0LmgiDQoNCiNsaW5lIDczICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccmVh
bHRpbWVhcGlzZXQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZA0KX19zdGRjYWxsDQpRdWVyeUludGVycnVwdFRpbWVQcmVjaXNlKA0KICAgICAgUFVM
T05HTE9ORyBscEludGVycnVwdFRpbWVQcmVjaXNlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KUXVlcnlVbmJpYXNlZEludGVycnVwdFRpbWVQcmVj
aXNlKA0KICAgICAgUFVMT05HTE9ORyBscFVuYmlhc2VkSW50ZXJydXB0VGltZVByZWNpc2UNCiAg
ICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpRdWVyeUlu
dGVycnVwdFRpbWUoDQogICAgICBQVUxPTkdMT05HIGxwSW50ZXJydXB0VGltZQ0KICAgICk7DQoN
Cg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWVyeVVuYmlh
c2VkSW50ZXJydXB0VGltZSgNCiAgICAgIFBVTE9OR0xPTkcgVW5iaWFzZWRUaW1lDQogICAgKTsN
Cg0KDQojbGluZSAxMTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxyZWFsdGltZWFwaXNldC5oIg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkhSRVNVTFQNCl9fc3RkY2FsbA0KUXVlcnlBdXhpbGlhcnlDb3VudGVy
RnJlcXVlbmN5KA0KICAgICAgUFVMT05HTE9ORyBscEF1eGlsaWFyeUNvdW50ZXJGcmVxdWVuY3kN
CiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpD
b252ZXJ0QXV4aWxpYXJ5Q291bnRlclRvUGVyZm9ybWFuY2VDb3VudGVyKA0KICAgICAgVUxPTkdM
T05HIHVsbEF1eGlsaWFyeUNvdW50ZXJWYWx1ZSwNCiAgICAgIFBVTE9OR0xPTkcgbHBQZXJmb3Jt
YW5jZUNvdW50ZXJWYWx1ZSwNCiAgICAgIFBVTE9OR0xPTkcgbHBDb252ZXJzaW9uRXJyb3INCiAg
ICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpDb252
ZXJ0UGVyZm9ybWFuY2VDb3VudGVyVG9BdXhpbGlhcnlDb3VudGVyKA0KICAgICAgVUxPTkdMT05H
IHVsbFBlcmZvcm1hbmNlQ291bnRlclZhbHVlLA0KICAgICAgUFVMT05HTE9ORyBscEF1eGlsaWFy
eUNvdW50ZXJWYWx1ZSwNCiAgICAgIFBVTE9OR0xPTkcgbHBDb252ZXJzaW9uRXJyb3INCiAgICAp
Ow0KDQoNCiNsaW5lIDE0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJlYWx0aW1lYXBpc2V0LmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDE0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJlYWx0aW1lYXBpc2V0
LmgiDQoNCiNsaW5lIDE1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJlYWx0aW1lYXBpc2V0LmgiDQojbGluZSA3
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDc1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1p
bHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFz
ZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQoNCg0KI2xpbmUgOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxNTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMjA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQoNCiNsaW5lIDI0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNs
aW5lIDI1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHZvaWQg
KF9fc3RkY2FsbCAqUEZJQkVSX1NUQVJUX1JPVVRJTkUpKA0KICAgIExQVk9JRCBscEZpYmVyUGFy
YW1ldGVyDQogICAgKTsNCnR5cGVkZWYgUEZJQkVSX1NUQVJUX1JPVVRJTkUgTFBGSUJFUl9TVEFS
VF9ST1VUSU5FOw0KDQp0eXBlZGVmIExQVk9JRCAoX19zdGRjYWxsICpQRklCRVJfQ0FMTE9VVF9S
T1VUSU5FKSgNCiAgICBMUFZPSUQgbHBQYXJhbWV0ZXINCiAgICApOw0KI2xpbmUgMzI4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMzNyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQojbGluZSAzNDUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQp0eXBlZGVmIExQVk9JRCBMUExEVF9FTlRSWTsNCiNsaW5lIDM0
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfQ09NTVBST1Agew0KICAgIFdPUkQgd1BhY2tldExlbmd0aDsNCiAg
ICBXT1JEIHdQYWNrZXRWZXJzaW9uOw0KICAgIERXT1JEIGR3U2VydmljZU1hc2s7DQogICAgRFdP
UkQgZHdSZXNlcnZlZDE7DQogICAgRFdPUkQgZHdNYXhUeFF1ZXVlOw0KICAgIERXT1JEIGR3TWF4
UnhRdWV1ZTsNCiAgICBEV09SRCBkd01heEJhdWQ7DQogICAgRFdPUkQgZHdQcm92U3ViVHlwZTsN
CiAgICBEV09SRCBkd1Byb3ZDYXBhYmlsaXRpZXM7DQogICAgRFdPUkQgZHdTZXR0YWJsZVBhcmFt
czsNCiAgICBEV09SRCBkd1NldHRhYmxlQmF1ZDsNCiAgICBXT1JEIHdTZXR0YWJsZURhdGE7DQog
ICAgV09SRCB3U2V0dGFibGVTdG9wUGFyaXR5Ow0KICAgIERXT1JEIGR3Q3VycmVudFR4UXVldWU7
DQogICAgRFdPUkQgZHdDdXJyZW50UnhRdWV1ZTsNCiAgICBEV09SRCBkd1Byb3ZTcGVjMTsNCiAg
ICBEV09SRCBkd1Byb3ZTcGVjMjsNCiAgICBXQ0hBUiB3Y1Byb3ZDaGFyWzFdOw0KfSBDT01NUFJP
UCwqTFBDT01NUFJPUDsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0NPTVNUQVQgew0K
ICAgIERXT1JEIGZDdHNIb2xkIDogMTsNCiAgICBEV09SRCBmRHNySG9sZCA6IDE7DQogICAgRFdP
UkQgZlJsc2RIb2xkIDogMTsNCiAgICBEV09SRCBmWG9mZkhvbGQgOiAxOw0KICAgIERXT1JEIGZY
b2ZmU2VudCA6IDE7DQogICAgRFdPUkQgZkVvZiA6IDE7DQogICAgRFdPUkQgZlR4aW0gOiAxOw0K
ICAgIERXT1JEIGZSZXNlcnZlZCA6IDI1Ow0KICAgIERXT1JEIGNiSW5RdWU7DQogICAgRFdPUkQg
Y2JPdXRRdWU7DQp9IENPTVNUQVQsICpMUENPTVNUQVQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9EQ0Igew0KICAgIERXT1JEIERDQmxlbmd0aDsgICAg
ICANCiAgICBEV09SRCBCYXVkUmF0ZTsgICAgICAgDQogICAgRFdPUkQgZkJpbmFyeTogMTsgICAg
IA0KICAgIERXT1JEIGZQYXJpdHk6IDE7ICAgICANCiAgICBEV09SRCBmT3V0eEN0c0Zsb3c6MTsg
DQogICAgRFdPUkQgZk91dHhEc3JGbG93OjE7IA0KICAgIERXT1JEIGZEdHJDb250cm9sOjI7ICAN
CiAgICBEV09SRCBmRHNyU2Vuc2l0aXZpdHk6MTsgDQogICAgRFdPUkQgZlRYQ29udGludWVPblhv
ZmY6IDE7IA0KICAgIERXT1JEIGZPdXRYOiAxOyAgICAgICANCiAgICBEV09SRCBmSW5YOiAxOyAg
ICAgICAgDQogICAgRFdPUkQgZkVycm9yQ2hhcjogMTsgIA0KICAgIERXT1JEIGZOdWxsOiAxOyAg
ICAgICANCiAgICBEV09SRCBmUnRzQ29udHJvbDoyOyAgDQogICAgRFdPUkQgZkFib3J0T25FcnJv
cjoxOyANCiAgICBEV09SRCBmRHVtbXkyOjE3OyAgICAgDQogICAgV09SRCB3UmVzZXJ2ZWQ7ICAg
ICAgIA0KICAgIFdPUkQgWG9uTGltOyAgICAgICAgICANCiAgICBXT1JEIFhvZmZMaW07ICAgICAg
ICAgDQogICAgQllURSBCeXRlU2l6ZTsgICAgICAgIA0KICAgIEJZVEUgUGFyaXR5OyAgICAgICAg
ICANCiAgICBCWVRFIFN0b3BCaXRzOyAgICAgICAgDQogICAgY2hhciBYb25DaGFyOyAgICAgICAg
IA0KICAgIGNoYXIgWG9mZkNoYXI7ICAgICAgICANCiAgICBjaGFyIEVycm9yQ2hhcjsgICAgICAg
DQogICAgY2hhciBFb2ZDaGFyOyAgICAgICAgIA0KICAgIGNoYXIgRXZ0Q2hhcjsgICAgICAgICAN
CiAgICBXT1JEIHdSZXNlcnZlZDE7ICAgICAgDQp9IERDQiwgKkxQRENCOw0KDQp0eXBlZGVmIHN0
cnVjdCBfQ09NTVRJTUVPVVRTIHsNCiAgICBEV09SRCBSZWFkSW50ZXJ2YWxUaW1lb3V0OyAgICAg
ICAgICANCiAgICBEV09SRCBSZWFkVG90YWxUaW1lb3V0TXVsdGlwbGllcjsgICANCiAgICBEV09S
RCBSZWFkVG90YWxUaW1lb3V0Q29uc3RhbnQ7ICAgICANCiAgICBEV09SRCBXcml0ZVRvdGFsVGlt
ZW91dE11bHRpcGxpZXI7ICANCiAgICBEV09SRCBXcml0ZVRvdGFsVGltZW91dENvbnN0YW50OyAg
ICANCn0gQ09NTVRJTUVPVVRTLCpMUENPTU1USU1FT1VUUzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0NP
TU1DT05GSUcgew0KICAgIERXT1JEIGR3U2l6ZTsgICAgICAgICAgICAgICANCiAgICBXT1JEIHdW
ZXJzaW9uOyAgICAgICAgICAgICAgDQogICAgV09SRCB3UmVzZXJ2ZWQ7ICAgICAgICAgICAgIA0K
ICAgIERDQiBkY2I7ICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCBkd1Byb3ZpZGVyU3Vi
VHlwZTsgICAgDQoNCiAgICBEV09SRCBkd1Byb3ZpZGVyT2Zmc2V0OyAgICAgDQoNCiAgICBEV09S
RCBkd1Byb3ZpZGVyU2l6ZTsgICAgICAgDQogICAgV0NIQVIgd2NQcm92aWRlckRhdGFbMV07ICAg
IA0KfSBDT01NQ09ORklHLCpMUENPTU1DT05GSUc7DQoNCiNsaW5lIDU1NiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0
aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCnR5
cGVkZWYgc3RydWN0IF9NRU1PUllTVEFUVVMgew0KICAgIERXT1JEIGR3TGVuZ3RoOw0KICAgIERX
T1JEIGR3TWVtb3J5TG9hZDsNCiAgICBTSVpFX1QgZHdUb3RhbFBoeXM7DQogICAgU0laRV9UIGR3
QXZhaWxQaHlzOw0KICAgIFNJWkVfVCBkd1RvdGFsUGFnZUZpbGU7DQogICAgU0laRV9UIGR3QXZh
aWxQYWdlRmlsZTsNCiAgICBTSVpFX1QgZHdUb3RhbFZpcnR1YWw7DQogICAgU0laRV9UIGR3QXZh
aWxWaXJ0dWFsOw0KfSBNRU1PUllTVEFUVVMsICpMUE1FTU9SWVNUQVRVUzsNCg0KI2xpbmUgNjEw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWls
eQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA2OTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0pJVF9ERUJVR19JTkZPIHsNCiAgICBEV09SRCBkd1NpemU7
DQogICAgRFdPUkQgZHdQcm9jZXNzb3JBcmNoaXRlY3R1cmU7DQogICAgRFdPUkQgZHdUaHJlYWRJ
RDsNCiAgICBEV09SRCBkd1Jlc2VydmVkMDsNCiAgICBVTE9ORzY0IGxwRXhjZXB0aW9uQWRkcmVz
czsNCiAgICBVTE9ORzY0IGxwRXhjZXB0aW9uUmVjb3JkOw0KICAgIFVMT05HNjQgbHBDb250ZXh0
UmVjb3JkOw0KfSBKSVRfREVCVUdfSU5GTywgKkxQSklUX0RFQlVHX0lORk87DQoNCnR5cGVkZWYg
SklUX0RFQlVHX0lORk8gSklUX0RFQlVHX0lORk8zMiwgKkxQSklUX0RFQlVHX0lORk8zMjsNCnR5
cGVkZWYgSklUX0RFQlVHX0lORk8gSklUX0RFQlVHX0lORk82NCwgKkxQSklUX0RFQlVHX0lORk82
NDsNCg0KI2xpbmUgNzIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBQRVhDRVBUSU9OX1JFQ09SRCBMUEVYQ0VQ
VElPTl9SRUNPUkQ7DQp0eXBlZGVmIFBFWENFUFRJT05fUE9JTlRFUlMgTFBFWENFUFRJT05fUE9J
TlRFUlM7DQojbGluZSA3MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA3MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQoNCg0KDQoNCiNsaW5lIDc0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUg
NzUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZh
bWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NjggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlv
biBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA3ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1p
bHkNCg0KDQoNCg0KI2xpbmUgNzk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgOTQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9PRlNUUlVDVCB7DQog
ICAgQllURSBjQnl0ZXM7DQogICAgQllURSBmRml4ZWREaXNrOw0KICAgIFdPUkQgbkVyckNvZGU7
DQogICAgV09SRCBSZXNlcnZlZDE7DQogICAgV09SRCBSZXNlcnZlZDI7DQogICAgQ0hBUiBzelBh
dGhOYW1lWzEyOF07DQp9IE9GU1RSVUNULCAqTFBPRlNUUlVDVCwgKlBPRlNUUlVDVDsNCg0KDQoN
Cg0KDQoNCiNsaW5lIDk5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KaW50DQoNCg0KDQojbGlu
ZSAxMDAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KX19zdGRjYWxsDQojbGluZSAxMDAzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCiNsaW5lIDEwMDYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQpXaW5NYWluICgNCiAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQogICAgICBISU5T
VEFOQ0UgaFByZXZJbnN0YW5jZSwNCiAgICAgIExQU1RSIGxwQ21kTGluZSwNCiAgICAgIGludCBu
U2hvd0NtZA0KICAgICk7DQoNCmludA0KDQoNCiNsaW5lIDEwMTcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQpfX3N0ZGNhbGwNCiNsaW5lIDEwMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQp3
V2luTWFpbigNCiAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQogICAgICBISU5TVEFOQ0UgaFBy
ZXZJbnN0YW5jZSwNCiAgICAgIExQV1NUUiBscENtZExpbmUsDQogICAgICBpbnQgblNob3dDbWQN
CiAgICApOw0KDQojbGluZSAxMDI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUg
b3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQogDQpfX2RlY2xz
cGVjKGFsbG9jYXRvcikNCkhHTE9CQUwNCl9fc3RkY2FsbA0KR2xvYmFsQWxsb2MoDQogICAgICBV
SU5UIHVGbGFncywNCiAgICAgIFNJWkVfVCBkd0J5dGVzDQogICAgKTsNCg0KI2xpbmUgMTA0NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KICAgDQpfX2RlY2xzcGVjKGFsbG9jYXRvcikNCkhHTE9CQUwNCl9fc3RkY2FsbA0KR2xvYmFs
UmVBbGxvYyAoDQogICAgICBIR0xPQkFMIGhNZW0sDQogICAgICBTSVpFX1QgZHdCeXRlcywNCiAg
ICAgIFVJTlQgdUZsYWdzDQogICAgKTsNCg0KI2xpbmUgMTA2MSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZh
bWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KU0laRV9UDQpfX3N0ZGNhbGwNCkdsb2JhbFNpemUgKA0KICAgICAgSEdMT0JBTCBoTWVtDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdsb2JhbFVu
bG9jaygNCiAgICAgIEhHTE9CQUwgaE1lbQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KTFBWT0lEDQpfX3N0ZGNhbGwNCkdsb2JhbExvY2sgKA0KICAgICAgSEdMT0JBTCBoTWVt
DQogICAgKTsNCg0KI2xpbmUgMTA4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdsb2JhbEZsYWdzICgNCiAgICAgIEhHTE9C
QUwgaE1lbQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEdMT0JBTA0KX19z
dGRjYWxsDQpHbG9iYWxIYW5kbGUgKA0KICAgICAgTFBDVk9JRCBwTWVtDQogICAgKTsNCg0KI2xp
bmUgMTExMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWls
eQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0KSEdMT0JBTA0KX19zdGRjYWxsDQpH
bG9iYWxGcmVlKA0KICAgICAgSEdMT0JBTCBoTWVtDQogICAgKTsNCg0KI2xpbmUgMTEyNSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpTSVpFX1QNCl9fc3Rk
Y2FsbA0KR2xvYmFsQ29tcGFjdCgNCiAgICAgIERXT1JEIGR3TWluRnJlZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpHbG9iYWxGaXgoDQogICAgICBI
R0xPQkFMIGhNZW0NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3Rk
Y2FsbA0KR2xvYmFsVW5maXgoDQogICAgICBIR0xPQkFMIGhNZW0NCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkxQVk9JRA0KX19zdGRjYWxsDQpHbG9iYWxXaXJlKA0KICAgICAgSEdM
T0JBTCBoTWVtDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkdsb2JhbFVuV2lyZSgNCiAgICAgIEhHTE9CQUwgaE1lbQ0KICAgICk7DQoNCiANCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpHbG9iYWxNZW1vcnlTdGF0dXMoDQog
ICAgICBMUE1FTU9SWVNUQVRVUyBscEJ1ZmZlcg0KICAgICk7DQoNCiNsaW5lIDExNzQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQogDQpfX2RlY2xzcGVjKGFsbG9jYXRvcikNCkhMT0NB
TA0KX19zdGRjYWxsDQpMb2NhbEFsbG9jKA0KICAgICAgVUlOVCB1RmxhZ3MsDQogICAgICBTSVpF
X1QgdUJ5dGVzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogICANCl9fZGVjbHNw
ZWMoYWxsb2NhdG9yKQ0KSExPQ0FMDQpfX3N0ZGNhbGwNCkxvY2FsUmVBbGxvYygNCiAgICAgIEhM
T0NBTCBoTWVtLA0KICAgICAgU0laRV9UIHVCeXRlcywNCiAgICAgIFVJTlQgdUZsYWdzDQogICAg
KTsNCg0KI2xpbmUgMTIwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgb3IgR2FtZXMg
RmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpMUFZPSUQNCl9fc3RkY2FsbA0K
TG9jYWxMb2NrKA0KICAgICAgSExPQ0FMIGhNZW0NCiAgICApOw0KDQojbGluZSAxMjE2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkhMT0NBTA0KX19z
dGRjYWxsDQpMb2NhbEhhbmRsZSgNCiAgICAgIExQQ1ZPSUQgcE1lbQ0KICAgICk7DQoNCiNsaW5l
IDEyMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpMb2NhbFVubG9jaygNCiAg
ICAgIEhMT0NBTCBoTWVtDQogICAgKTsNCg0KI2xpbmUgMTI0MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Agb3IgR2Ft
ZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpTSVpFX1QNCl9fc3RkY2FsbA0K
TG9jYWxTaXplKA0KICAgICAgSExPQ0FMIGhNZW0NCiAgICApOw0KDQojbGluZSAxMjU2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9fc3RkY2Fs
bA0KTG9jYWxGbGFncygNCiAgICAgIEhMT0NBTCBoTWVtDQogICAgKTsNCg0KI2xpbmUgMTI2OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCiANCkhMT0NBTA0KX19zdGRjYWxsDQpMb2Nh
bEZyZWUoDQogICAgICBITE9DQUwgaE1lbQ0KICAgICk7DQoNCiNsaW5lIDEyODQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNr
dG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KU0laRV9UDQpfX3N0ZGNhbGwN
CkxvY2FsU2hyaW5rKA0KICAgICAgSExPQ0FMIGhNZW0sDQogICAgICBVSU5UIGNiTmV3U2l6ZQ0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KU0laRV9UDQpfX3N0ZGNhbGwNCkxvY2Fs
Q29tcGFjdCgNCiAgICAgIFVJTlQgdU1pbkZyZWUNCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTMxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEJpbmFyeVR5cGVBKA0KICAgICAg
IExQQ1NUUiBscEFwcGxpY2F0aW9uTmFtZSwNCiAgICAgIExQRFdPUkQgIGxwQmluYXJ5VHlwZQ0K
ICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0QmluYXJ5
VHlwZVcoDQogICAgICAgTFBDV1NUUiBscEFwcGxpY2F0aW9uTmFtZSwNCiAgICAgIExQRFdPUkQg
IGxwQmluYXJ5VHlwZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDEzMzkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KRFdPUkQNCl9fc3RkY2FsbA0K
R2V0U2hvcnRQYXRoTmFtZUEoDQogICAgICBMUENTVFIgbHBzekxvbmdQYXRoLA0KICAgICAgTFBT
VFIgIGxwc3pTaG9ydFBhdGgsDQogICAgICBEV09SRCBjY2hCdWZmZXINCiAgICApOw0KDQoNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpEV09SRA0KX19zdGRjYWxsDQpHZXRMb25n
UGF0aE5hbWVUcmFuc2FjdGVkQSgNCiAgICAgICAgICBMUENTVFIgbHBzelNob3J0UGF0aCwNCiAg
ICAgIExQU1RSICBscHN6TG9uZ1BhdGgsDQogICAgICAgICAgRFdPUkQgY2NoQnVmZmVyLA0KICAg
ICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24NCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQpEV09SRA0KX19zdGRjYWxsDQpHZXRMb25nUGF0aE5hbWVUcmFuc2FjdGVkVygNCiAgICAg
ICAgICBMUENXU1RSIGxwc3pTaG9ydFBhdGgsDQogICAgICBMUFdTVFIgIGxwc3pMb25nUGF0aCwN
CiAgICAgICAgICBEV09SRCBjY2hCdWZmZXIsDQogICAgICAgICAgSEFORExFIGhUcmFuc2FjdGlv
bg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDEzODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoN
CiNsaW5lIDEzODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDEzODQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFByb2Nlc3NBZmZpbml0
eU1hc2soDQogICAgICAgSEFORExFIGhQcm9jZXNzLA0KICAgICAgUERXT1JEX1BUUiBscFByb2Nl
c3NBZmZpbml0eU1hc2ssDQogICAgICBQRFdPUkRfUFRSIGxwU3lzdGVtQWZmaW5pdHlNYXNrDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFByb2Nl
c3NBZmZpbml0eU1hc2soDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBEV09SRF9QVFIg
ZHdQcm9jZXNzQWZmaW5pdHlNYXNrDQogICAgKTsNCg0KI2xpbmUgMTQwNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFBy
b2Nlc3NJb0NvdW50ZXJzKA0KICAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIFBJT19DT1VO
VEVSUyBscElvQ291bnRlcnMNCiAgICApOw0KDQojbGluZSAxNDIxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
YmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24g
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkdldFByb2Nlc3NXb3JraW5nU2V0U2l6ZSgNCiAgICAgICBIQU5ETEUgaFBy
b2Nlc3MsDQogICAgICBQU0laRV9UIGxwTWluaW11bVdvcmtpbmdTZXRTaXplLA0KICAgICAgUFNJ
WkVfVCBscE1heGltdW1Xb3JraW5nU2V0U2l6ZQ0KICAgICk7DQoNCiNsaW5lIDE0MzYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpTZXRQcm9jZXNzV29ya2luZ1NldFNpemUoDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAg
ICBTSVpFX1QgZHdNaW5pbXVtV29ya2luZ1NldFNpemUsDQogICAgICBTSVpFX1QgZHdNYXhpbXVt
V29ya2luZ1NldFNpemUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCg0Kdm9pZA0K
X19zdGRjYWxsDQpGYXRhbEV4aXQoDQogICAgICBpbnQgRXhpdENvZGUNCiAgICApOw0KDQojbGlu
ZSAxNDU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3By
YWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVz
IEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRF
bnZpcm9ubWVudFN0cmluZ3NBKA0KICAgICAgICAgTFBDSCBOZXdFbnZpcm9ubWVudA0KICAgICk7
DQoNCg0KDQoNCiNsaW5lIDE0NzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpTd2l0Y2hUb0ZpYmVyKA0KICAgICAgTFBWT0lEIGxw
RmliZXINCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0K
RGVsZXRlRmliZXIoDQogICAgICBMUFZPSUQgbHBGaWJlcg0KICAgICk7DQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ29udmVydEZpYmVyVG9UaHJlYWQoDQog
ICAgdm9pZA0KICAgICk7DQoNCiNsaW5lIDE1MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KTFBWT0lEDQpfX3N0ZGNhbGwNCkNyZWF0ZUZpYmVy
RXgoDQogICAgICAgICAgU0laRV9UIGR3U3RhY2tDb21taXRTaXplLA0KICAgICAgICAgIFNJWkVf
VCBkd1N0YWNrUmVzZXJ2ZVNpemUsDQogICAgICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgICAg
ICBMUEZJQkVSX1NUQVJUX1JPVVRJTkUgbHBTdGFydEFkZHJlc3MsDQogICAgICBMUFZPSUQgbHBQ
YXJhbWV0ZXINCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkxQVk9JRA0KX19z
dGRjYWxsDQpDb252ZXJ0VGhyZWFkVG9GaWJlckV4KA0KICAgICAgTFBWT0lEIGxwUGFyYW1ldGVy
LA0KICAgICAgICAgIERXT1JEIGR3RmxhZ3MNCiAgICApOw0KDQojbGluZSAxNTM1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQogDQpMUFZPSUQNCl9fc3RkY2FsbA0KQ3JlYXRlRmliZXIoDQogICAg
ICAgICAgU0laRV9UIGR3U3RhY2tTaXplLA0KICAgICAgICAgIExQRklCRVJfU1RBUlRfUk9VVElO
RSBscFN0YXJ0QWRkcmVzcywNCiAgICAgIExQVk9JRCBscFBhcmFtZXRlcg0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KTFBWT0lEDQpfX3N0ZGNhbGwNCkNvbnZlcnRUaHJlYWRU
b0ZpYmVyKA0KICAgICAgTFBWT0lEIGxwUGFyYW1ldGVyDQogICAgKTsNCg0KI2xpbmUgMTU1OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KdHlwZWRlZiB2
b2lkICpQVU1TX0NPTlRFWFQ7DQoNCnR5cGVkZWYgdm9pZCAqUFVNU19DT01QTEVUSU9OX0xJU1Q7
DQoNCnR5cGVkZWYgZW51bSBfUlRMX1VNU19USFJFQURfSU5GT19DTEFTUyBVTVNfVEhSRUFEX0lO
Rk9fQ0xBU1MsICpQVU1TX1RIUkVBRF9JTkZPX0NMQVNTOw0KDQp0eXBlZGVmIGVudW0gX1JUTF9V
TVNfU0NIRURVTEVSX1JFQVNPTiBVTVNfU0NIRURVTEVSX1JFQVNPTjsNCg0KdHlwZWRlZiBQUlRM
X1VNU19TQ0hFRFVMRVJfRU5UUllfUE9JTlQgUFVNU19TQ0hFRFVMRVJfRU5UUllfUE9JTlQ7DQoN
CnR5cGVkZWYgc3RydWN0IF9VTVNfU0NIRURVTEVSX1NUQVJUVVBfSU5GTyB7DQoNCiAgICANCiAg
ICANCiAgICANCiAgICBVTE9ORyBVbXNWZXJzaW9uOw0KDQogICAgDQogICAgDQogICAgDQogICAg
UFVNU19DT01QTEVUSU9OX0xJU1QgQ29tcGxldGlvbkxpc3Q7DQoNCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICBQVU1TX1NDSEVEVUxFUl9FTlRSWV9QT0lOVCBTY2hlZHVsZXJQcm9jOw0KDQog
ICAgDQogICAgDQogICAgDQogICAgUFZPSUQgU2NoZWR1bGVyUGFyYW07DQoNCn0gVU1TX1NDSEVE
VUxFUl9TVEFSVFVQX0lORk8sICpQVU1TX1NDSEVEVUxFUl9TVEFSVFVQX0lORk87DQoNCnR5cGVk
ZWYgc3RydWN0IF9VTVNfU1lTVEVNX1RIUkVBRF9JTkZPUk1BVElPTiB7DQogICAgVUxPTkcgVW1z
VmVyc2lvbjsNCiAgICB1bmlvbiB7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBVTE9O
RyBJc1Vtc1NjaGVkdWxlclRocmVhZCA6IDE7DQogICAgICAgICAgICBVTE9ORyBJc1Vtc1dvcmtl
clRocmVhZCA6IDE7DQogICAgICAgIH0gOw0KICAgICAgICBVTE9ORyBUaHJlYWRVbXNGbGFnczsN
CiAgICB9IDsNCn0gVU1TX1NZU1RFTV9USFJFQURfSU5GT1JNQVRJT04sICpQVU1TX1NZU1RFTV9U
SFJFQURfSU5GT1JNQVRJT047DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpDcmVhdGVVbXNDb21wbGV0aW9uTGlzdCgNCiAgICAgUFVNU19DT01QTEVUSU9OX0xJ
U1QqIFVtc0NvbXBsZXRpb25MaXN0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkRlcXVldWVVbXNDb21wbGV0aW9uTGlzdEl0ZW1zKA0KICAgICAgUFVN
U19DT01QTEVUSU9OX0xJU1QgVW1zQ29tcGxldGlvbkxpc3QsDQogICAgICBEV09SRCBXYWl0VGlt
ZU91dCwNCiAgICAgIFBVTVNfQ09OVEVYVCogVW1zVGhyZWFkTGlzdA0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRVbXNDb21wbGV0aW9uTGlzdEV2
ZW50KA0KICAgICAgUFVNU19DT01QTEVUSU9OX0xJU1QgVW1zQ29tcGxldGlvbkxpc3QsDQogICAg
ICBQSEFORExFIFVtc0NvbXBsZXRpb25FdmVudA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFeGVjdXRlVW1zVGhyZWFkKA0KICAgICAgUFVNU19DT05U
RVhUIFVtc1RocmVhZA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpVbXNUaHJlYWRZaWVsZCgNCiAgICAgIFBWT0lEIFNjaGVkdWxlclBhcmFtDQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRlbGV0ZVVtc0Nv
bXBsZXRpb25MaXN0KA0KICAgICAgUFVNU19DT01QTEVUSU9OX0xJU1QgVW1zQ29tcGxldGlvbkxp
c3QNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClBVTVNfQ09OVEVYVA0KX19zdGRj
YWxsDQpHZXRDdXJyZW50VW1zVGhyZWFkKA0KICAgIHZvaWQNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNClBVTVNfQ09OVEVYVA0KX19zdGRjYWxsDQpHZXROZXh0VW1zTGlzdEl0ZW0o
DQogICAgICBQVU1TX0NPTlRFWFQgVW1zQ29udGV4dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWVyeVVtc1RocmVhZEluZm9ybWF0aW9uKA0KICAg
ICAgUFVNU19DT05URVhUIFVtc1RocmVhZCwNCiAgICAgIFVNU19USFJFQURfSU5GT19DTEFTUyBV
bXNUaHJlYWRJbmZvQ2xhc3MsDQogICAgICBQVk9JRCBVbXNUaHJlYWRJbmZvcm1hdGlvbiwNCiAg
ICAgIFVMT05HIFVtc1RocmVhZEluZm9ybWF0aW9uTGVuZ3RoLA0KICAgICAgUFVMT05HIFJldHVy
bkxlbmd0aA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpTZXRVbXNUaHJlYWRJbmZvcm1hdGlvbigNCiAgICAgIFBVTVNfQ09OVEVYVCBVbXNUaHJlYWQs
DQogICAgICBVTVNfVEhSRUFEX0lORk9fQ0xBU1MgVW1zVGhyZWFkSW5mb0NsYXNzLA0KICAgICAg
UFZPSUQgVW1zVGhyZWFkSW5mb3JtYXRpb24sDQogICAgICBVTE9ORyBVbXNUaHJlYWRJbmZvcm1h
dGlvbkxlbmd0aA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpEZWxldGVVbXNUaHJlYWRDb250ZXh0KA0KICAgICAgUFVNU19DT05URVhUIFVtc1RocmVh
ZA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDcmVh
dGVVbXNUaHJlYWRDb250ZXh0KA0KICAgICBQVU1TX0NPTlRFWFQgKmxwVW1zVGhyZWFkDQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudGVyVW1zU2No
ZWR1bGluZ01vZGUoDQogICAgICBQVU1TX1NDSEVEVUxFUl9TVEFSVFVQX0lORk8gU2NoZWR1bGVy
U3RhcnR1cEluZm8NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0VW1zU3lzdGVtVGhyZWFkSW5mb3JtYXRpb24oDQogICAgICBIQU5ETEUgVGhyZWFk
SGFuZGxlLA0KICAgICAgUFVNU19TWVNURU1fVEhSRUFEX0lORk9STUFUSU9OIFN5c3RlbVRocmVh
ZEluZm8NCiAgICApOw0KDQojbGluZSAxNzMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoj
bGluZSAxNzM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
DQoNCg0KDQojbGluZSAxNzQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojcHJhZ21hIHJl
Z2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRF9QVFINCl9fc3RkY2FsbA0KU2V0VGhy
ZWFkQWZmaW5pdHlNYXNrKA0KICAgICAgSEFORExFIGhUaHJlYWQsDQogICAgICBEV09SRF9QVFIg
ZHdUaHJlYWRBZmZpbml0eU1hc2sNCiAgICApOw0KDQojbGluZSAxNzU1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNClNldFByb2Nlc3NERVBQb2xpY3koDQogICAgICBEV09SRCBkd0ZsYWdzDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFByb2Nlc3NERVBQb2xp
Y3koDQogICAgICBIQU5ETEUgaFByb2Nlc3MsDQogICAgICBMUERXT1JEIGxwRmxhZ3MsDQogICAg
ICBQQk9PTCBscFBlcm1hbmVudA0KICAgICk7DQoNCiNsaW5lIDE3ODIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZXF1
ZXN0V2FrZXVwTGF0ZW5jeSgNCiAgICAgIExBVEVOQ1lfVElNRSBsYXRlbmN5DQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzU3lzdGVtUmVzdW1lQXV0
b21hdGljKA0KICAgIHZvaWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KR2V0VGhyZWFkU2VsZWN0b3JFbnRyeSgNCiAgICAgICBIQU5ETEUgaFRocmVh
ZCwNCiAgICAgICBEV09SRCBkd1NlbGVjdG9yLA0KICAgICAgTFBMRFRfRU5UUlkgbHBTZWxlY3Rv
ckVudHJ5DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpFWEVDVVRJT05fU1RBVEUN
Cl9fc3RkY2FsbA0KU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGUoDQogICAgICBFWEVDVVRJT05fU1RB
VEUgZXNGbGFncw0KICAgICk7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgUkVBU09OX0NPTlRFWFQg
UE9XRVJfUkVRVUVTVF9DT05URVhULCAqUFBPV0VSX1JFUVVFU1RfQ09OVEVYVCwgKkxQUE9XRVJf
UkVRVUVTVF9DT05URVhUOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRj
YWxsDQpQb3dlckNyZWF0ZVJlcXVlc3QgKA0KICAgICAgUFJFQVNPTl9DT05URVhUIENvbnRleHQN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUG93ZXJT
ZXRSZXF1ZXN0ICgNCiAgICAgIEhBTkRMRSBQb3dlclJlcXVlc3QsDQogICAgICBQT1dFUl9SRVFV
RVNUX1RZUEUgUmVxdWVzdFR5cGUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KUG93ZXJDbGVhclJlcXVlc3QgKA0KICAgICAgSEFORExFIFBvd2VyUmVx
dWVzdCwNCiAgICAgIFBPV0VSX1JFUVVFU1RfVFlQRSBSZXF1ZXN0VHlwZQ0KICAgICk7DQoNCiNs
aW5lIDE4NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDE4NDcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBs
aWNhdGlvbiBGYW1pbHkNCg0KDQoNCg0KDQoNCiNsaW5lIDE4NTcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIEdh
bWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTg3
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDE4ODAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQoNCg0KDQojbGluZSAxODg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNv
cmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRGaWxl
Q29tcGxldGlvbk5vdGlmaWNhdGlvbk1vZGVzKA0KICAgICAgSEFORExFIEZpbGVIYW5kbGUsDQog
ICAgICBVQ0hBUiBGbGFncw0KICAgICk7DQoNCiNsaW5lIDE5MTYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQoNCiNsaW5lIDE5MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpXb3c2NEdldFRo
cmVhZFNlbGVjdG9yRW50cnkoDQogICAgICBIQU5ETEUgaFRocmVhZCwNCiAgICAgIERXT1JEIGR3
U2VsZWN0b3IsDQogICAgICBQV09XNjRfTERUX0VOVFJZIGxwU2VsZWN0b3JFbnRyeQ0KICAgICk7
DQoNCiNsaW5lIDE5NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDE5NDQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpEZWJ1Z1NldFByb2Nlc3NLaWxsT25FeGl0KA0KICAgICAgQk9PTCBLaWxsT25FeGl0
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRlYnVn
QnJlYWtQcm9jZXNzICgNCiAgICAgIEhBTkRMRSBQcm9jZXNzDQogICAgKTsNCg0KI2xpbmUgMTk2
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCg0KDQojbGluZSAxOTY4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luYmFzZS5oIg0KDQojbGluZSAxOTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUHVsc2VFdmVudCgNCiAgICAgIEhB
TkRMRSBoRXZlbnQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkFUT00NCl9fc3Rk
Y2FsbA0KR2xvYmFsRGVsZXRlQXRvbSgNCiAgICAgIEFUT00gbkF0b20NCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSW5pdEF0b21UYWJsZSgNCiAgICAg
IERXT1JEIG5TaXplDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpBVE9NDQpfX3N0
ZGNhbGwNCkRlbGV0ZUF0b20oDQogICAgICBBVE9NIG5BdG9tDQogICAgKTsNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNClNldEhhbmRsZUNvdW50KA0KICAgICAgVUlO
VCB1TnVtYmVyDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNClJlcXVlc3REZXZpY2VXYWtldXAoDQogICAgICBIQU5ETEUgaERldmljZQ0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDYW5jZWxEZXZpY2VXYWtl
dXBSZXF1ZXN0KA0KICAgICAgSEFORExFIGhEZXZpY2UNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0RGV2aWNlUG93ZXJTdGF0ZSgNCiAgICAgICBI
QU5ETEUgaERldmljZSwNCiAgICAgIEJPT0wgKnBmT24NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0TWVzc2FnZVdhaXRpbmdJbmRpY2F0b3IoDQog
ICAgICBIQU5ETEUgaE1zZ0luZGljYXRvciwNCiAgICAgIFVMT05HIHVsTXNnQ291bnQNCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRGaWxlU2hv
cnROYW1lQSgNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIExQQ1NUUiBscFNob3J0TmFtZQ0K
ICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0RmlsZVNo
b3J0TmFtZVcoDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBMUENXU1RSIGxwU2hvcnROYW1l
DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMjA2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KTG9hZE1v
ZHVsZSgNCiAgICAgIExQQ1NUUiBscE1vZHVsZU5hbWUsDQogICAgICBMUFZPSUQgbHBQYXJhbWV0
ZXJCbG9jaw0KICAgICk7DQoNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0
ZGNhbGwNCldpbkV4ZWMoDQogICAgICBMUENTVFIgbHBDbWRMaW5lLA0KICAgICAgVUlOVCB1Q21k
U2hvdw0KICAgICk7DQoNCg0KI2xpbmUgMjA4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNv
cmUgb3IgQXBwIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpDbGVhckNvbW1CcmVhaygNCiAgICAgIEhBTkRMRSBoRmlsZQ0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDbGVhckNvbW1FcnJvcigNCiAgICAg
ICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTFBEV09SRCBscEVycm9ycywNCiAgICAgIExQQ09N
U1RBVCBscFN0YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KU2V0dXBDb21tKA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgRFdPUkQgZHdJblF1
ZXVlLA0KICAgICAgRFdPUkQgZHdPdXRRdWV1ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFc2NhcGVDb21tRnVuY3Rpb24oDQogICAgICBIQU5ETEUg
aEZpbGUsDQogICAgICBEV09SRCBkd0Z1bmMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q29tbUNvbmZpZygNCiAgICAgICAgICAgSEFORExF
IGhDb21tRGV2LA0KICAgICAgTFBDT01NQ09ORklHIGxwQ0MsDQogICAgICAgIExQRFdPUkQgbHBk
d1NpemUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
R2V0Q29tbU1hc2soDQogICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTFBEV09SRCBscEV2dE1h
c2sNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0
Q29tbVByb3BlcnRpZXMoDQogICAgICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBMUENPTU1QUk9Q
IGxwQ29tbVByb3ANCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0Q29tbU1vZGVtU3RhdHVzKA0KICAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIExQ
RFdPUkQgbHBNb2RlbVN0YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KR2V0Q29tbVN0YXRlKA0KICAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIExQ
RENCIGxwRENCDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkdldENvbW1UaW1lb3V0cygNCiAgICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBMUENPTU1U
SU1FT1VUUyBscENvbW1UaW1lb3V0cw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpQdXJnZUNvbW0oDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBE
V09SRCBkd0ZsYWdzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNClNldENvbW1CcmVhaygNCiAgICAgIEhBTkRMRSBoRmlsZQ0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRDb21tQ29uZmlnKA0KICAgICAg
SEFORExFIGhDb21tRGV2LA0KICAgICAgTFBDT01NQ09ORklHIGxwQ0MsDQogICAgICBEV09SRCBk
d1NpemUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
U2V0Q29tbU1hc2soDQogICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBEV09SRCBkd0V2dE1hc2sN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q29t
bVN0YXRlKA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTFBEQ0IgbHBEQ0INCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q29tbVRpbWVvdXRz
KA0KICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTFBDT01NVElNRU9VVFMgbHBDb21tVGltZW91
dHMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVHJh
bnNtaXRDb21tQ2hhcigNCiAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgIGNoYXIgY0NoYXINCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV2FpdENvbW1F
dmVudCgNCiAgICAgICAgICAgICBIQU5ETEUgaEZpbGUsDQogICAgICAgICAgTFBEV09SRCBscEV2
dE1hc2ssDQogICAgICBMUE9WRVJMQVBQRUQgbHBPdmVybGFwcGVkDQogICAgKTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjI1MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIyNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQoNCiNsaW5lIDIyNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KU2V0VGFwZVBvc2l0aW9uKA0KICAgICAgSEFORExFIGhE
ZXZpY2UsDQogICAgICBEV09SRCBkd1Bvc2l0aW9uTWV0aG9kLA0KICAgICAgRFdPUkQgZHdQYXJ0
aXRpb24sDQogICAgICBEV09SRCBkd09mZnNldExvdywNCiAgICAgIERXT1JEIGR3T2Zmc2V0SGln
aCwNCiAgICAgIEJPT0wgYkltbWVkaWF0ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0VGFwZVBvc2l0aW9uKA0KICAgICAgIEhBTkRMRSBoRGV2
aWNlLA0KICAgICAgIERXT1JEIGR3UG9zaXRpb25UeXBlLA0KICAgICAgTFBEV09SRCBscGR3UGFy
dGl0aW9uLA0KICAgICAgTFBEV09SRCBscGR3T2Zmc2V0TG93LA0KICAgICAgTFBEV09SRCBscGR3
T2Zmc2V0SGlnaA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3Rk
Y2FsbA0KUHJlcGFyZVRhcGUoDQogICAgICBIQU5ETEUgaERldmljZSwNCiAgICAgIERXT1JEIGR3
T3BlcmF0aW9uLA0KICAgICAgQk9PTCBiSW1tZWRpYXRlDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpFcmFzZVRhcGUoDQogICAgICBIQU5ETEUgaERl
dmljZSwNCiAgICAgIERXT1JEIGR3RXJhc2VUeXBlLA0KICAgICAgQk9PTCBiSW1tZWRpYXRlDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpDcmVhdGVU
YXBlUGFydGl0aW9uKA0KICAgICAgSEFORExFIGhEZXZpY2UsDQogICAgICBEV09SRCBkd1BhcnRp
dGlvbk1ldGhvZCwNCiAgICAgIERXT1JEIGR3Q291bnQsDQogICAgICBEV09SRCBkd1NpemUNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCldyaXRlVGFw
ZW1hcmsoDQogICAgICBIQU5ETEUgaERldmljZSwNCiAgICAgIERXT1JEIGR3VGFwZW1hcmtUeXBl
LA0KICAgICAgRFdPUkQgZHdUYXBlbWFya0NvdW50LA0KICAgICAgQk9PTCBiSW1tZWRpYXRlDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpHZXRUYXBl
U3RhdHVzKA0KICAgICAgSEFORExFIGhEZXZpY2UNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFRhcGVQYXJhbWV0ZXJzKA0KICAgICAgICAgSEFO
RExFIGhEZXZpY2UsDQogICAgICAgICBEV09SRCBkd09wZXJhdGlvbiwNCiAgICAgIExQRFdPUkQg
bHBkd1NpemUsDQogICAgICBMUFZPSUQgbHBUYXBlSW5mb3JtYXRpb24NCiAgICApOw0KDQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNClNldFRhcGVQYXJhbWV0
ZXJzKA0KICAgICAgSEFORExFIGhEZXZpY2UsDQogICAgICBEV09SRCBkd09wZXJhdGlvbiwNCiAg
ICAgIExQVk9JRCBscFRhcGVJbmZvcm1hdGlvbg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDIzNjYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJl
Z2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KTXVsRGl2KA0KICAg
ICAgaW50IG5OdW1iZXIsDQogICAgICBpbnQgbk51bWVyYXRvciwNCiAgICAgIGludCBuRGVub21p
bmF0b3INCiAgICApOw0KDQojbGluZSAyMzgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBl
ZGVmIGVudW0gX0RFUF9TWVNURU1fUE9MSUNZX1RZUEUgew0KICAgIERFUFBvbGljeUFsd2F5c09m
ZiA9IDAsDQogICAgREVQUG9saWN5QWx3YXlzT24sDQogICAgREVQUG9saWN5T3B0SW4sDQogICAg
REVQUG9saWN5T3B0T3V0LA0KICAgIERFUFRvdGFsUG9saWN5Q291bnQNCn0gREVQX1NZU1RFTV9Q
T0xJQ1lfVFlQRTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KREVQX1NZU1RFTV9QT0xJ
Q1lfVFlQRQ0KX19zdGRjYWxsDQpHZXRTeXN0ZW1ERVBQb2xpY3koDQogICAgdm9pZA0KICAgICk7
DQoNCiNsaW5lIDI0MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0U3lzdGVtUmVnaXN0cnlRdW90YSgNCiAg
ICAgIFBEV09SRCBwZHdRdW90YUFsbG93ZWQsDQogICAgICBQRFdPUkQgcGR3UXVvdGFVc2VkDQog
ICAgKTsNCg0KI2xpbmUgMjQxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRmlsZVRpbWVUb0Rvc0RhdGVU
aW1lKA0KICAgICAgIGNvbnN0IEZJTEVUSU1FICpscEZpbGVUaW1lLA0KICAgICAgTFBXT1JEIGxw
RmF0RGF0ZSwNCiAgICAgIExQV09SRCBscEZhdFRpbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRG9zRGF0ZVRpbWVUb0ZpbGVUaW1lKA0KICAgICAg
IFdPUkQgd0ZhdERhdGUsDQogICAgICAgV09SRCB3RmF0VGltZSwNCiAgICAgIExQRklMRVRJTUUg
bHBGaWxlVGltZQ0KICAgICk7DQoNCiNsaW5lIDI0NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkZvcm1hdE1lc3NhZ2VBKA0K
ICAgICAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBMUENWT0lEIGxwU291cmNlLA0KICAgICAg
ICAgIERXT1JEIGR3TWVzc2FnZUlkLA0KICAgICAgICAgIERXT1JEIGR3TGFuZ3VhZ2VJZCwNCiAg
ICANCiAgICANCiAgICAgICAgICAgICBMUFNUUiBscEJ1ZmZlciwNCiAgICAgICAgICBEV09SRCBu
U2l6ZSwNCiAgICAgIHZhX2xpc3QgKkFyZ3VtZW50cw0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkZvcm1hdE1lc3NhZ2VXKA0KICAgICAgICAgIERX
T1JEIGR3RmxhZ3MsDQogICAgICBMUENWT0lEIGxwU291cmNlLA0KICAgICAgICAgIERXT1JEIGR3
TWVzc2FnZUlkLA0KICAgICAgICAgIERXT1JEIGR3TGFuZ3VhZ2VJZCwNCiAgICANCiAgICANCiAg
ICAgICAgICAgICBMUFdTVFIgbHBCdWZmZXIsDQogICAgICAgICAgRFdPUkQgblNpemUsDQogICAg
ICB2YV9saXN0ICpBcmd1bWVudHMNCiAgICApOw0KDQoNCg0KDQojbGluZSAyNDg3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1MTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoj
bGluZSAyNTE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDI1MjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
QU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlTWFpbHNsb3RBKA0KICAgICAgICAgIExQQ1NUUiBscE5h
bWUsDQogICAgICAgICAgRFdPUkQgbk1heE1lc3NhZ2VTaXplLA0KICAgICAgICAgIERXT1JEIGxS
ZWFkVGltZW91dCwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmli
dXRlcw0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpD
cmVhdGVNYWlsc2xvdFcoDQogICAgICAgICAgTFBDV1NUUiBscE5hbWUsDQogICAgICAgICAgRFdP
UkQgbk1heE1lc3NhZ2VTaXplLA0KICAgICAgICAgIERXT1JEIGxSZWFkVGltZW91dCwNCiAgICAg
IExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcw0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDI1NTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRNYWlsc2xvdEluZm8oDQogICAgICAgICAgIEhB
TkRMRSBoTWFpbHNsb3QsDQogICAgICBMUERXT1JEIGxwTWF4TWVzc2FnZVNpemUsDQogICAgICBM
UERXT1JEIGxwTmV4dFNpemUsDQogICAgICBMUERXT1JEIGxwTWVzc2FnZUNvdW50LA0KICAgICAg
TFBEV09SRCBscFJlYWRUaW1lb3V0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClNldE1haWxzbG90SW5mbygNCiAgICAgIEhBTkRMRSBoTWFpbHNsb3Qs
DQogICAgICBEV09SRCBsUmVhZFRpbWVvdXQNCiAgICApOw0KDQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbmNyeXB0RmlsZUEoDQogICAgICBMUENTVFIg
bHBGaWxlTmFtZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KRW5jcnlwdEZpbGVXKA0KICAgICAgTFBDV1NUUiBscEZpbGVOYW1lDQogICAgKTsNCg0KDQoN
Cg0KI2xpbmUgMjU5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRlY3J5cHRGaWxlQSgNCiAgICAgICAgICAgIExQQ1NU
UiBscEZpbGVOYW1lLA0KICAgICAgRFdPUkQgZHdSZXNlcnZlZA0KICAgICk7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGVjcnlwdEZpbGVXKA0KICAgICAgICAgICAg
TFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgRFdPUkQgZHdSZXNlcnZlZA0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDI2MTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpG
aWxlRW5jcnlwdGlvblN0YXR1c0EoDQogICAgICAgTFBDU1RSIGxwRmlsZU5hbWUsDQogICAgICBM
UERXT1JEICBscFN0YXR1cw0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KRmlsZUVuY3J5cHRpb25TdGF0dXNXKA0KICAgICAgIExQQ1dTVFIgbHBGaWxlTmFt
ZSwNCiAgICAgIExQRFdPUkQgIGxwU3RhdHVzDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMjY1MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KdHlwZWRlZg0KRFdPUkQNCihf
X3N0ZGNhbGwgKlBGRV9FWFBPUlRfRlVOQykoDQogICAgICBQQllURSBwYkRhdGEsDQogICAgICBQ
Vk9JRCBwdkNhbGxiYWNrQ29udGV4dCwNCiAgICAgICAgICBVTE9ORyB1bExlbmd0aA0KICAgICk7
DQoNCnR5cGVkZWYNCkRXT1JEDQooX19zdGRjYWxsICpQRkVfSU1QT1JUX0ZVTkMpKA0KICAgICAg
UEJZVEUgcGJEYXRhLA0KICAgICAgUFZPSUQgcHZDYWxsYmFja0NvbnRleHQsDQogICAgICAgUFVM
T05HIHVsTGVuZ3RoDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpPcGVuRW5jcnlwdGVkRmlsZVJhd0EoDQog
ICAgICAgICAgICAgTFBDU1RSIGxwRmlsZU5hbWUsDQogICAgICAgICAgICAgVUxPTkcgICAgdWxG
bGFncywNCiAgICAgUFZPSUQgICAqcHZDb250ZXh0DQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KT3BlbkVuY3J5cHRlZEZpbGVSYXdXKA0KICAgICAgICAg
ICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAgICAgICAgICBVTE9ORyAgICB1bEZsYWdzLA0K
ICAgICBQVk9JRCAgICpwdkNvbnRleHQNCiAgICApOw0KDQoNCg0KDQojbGluZSAyNzA4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0
ZGNhbGwNClJlYWRFbmNyeXB0ZWRGaWxlUmF3KA0KICAgICAgICAgIFBGRV9FWFBPUlRfRlVOQyBw
ZkV4cG9ydENhbGxiYWNrLA0KICAgICAgUFZPSUQgICAgICAgICAgIHB2Q2FsbGJhY2tDb250ZXh0
LA0KICAgICAgICAgIFBWT0lEICAgICAgICAgICBwdkNvbnRleHQNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCldyaXRlRW5jcnlwdGVkRmlsZVJhdygN
CiAgICAgICAgICBQRkVfSU1QT1JUX0ZVTkMgcGZJbXBvcnRDYWxsYmFjaywNCiAgICAgIFBWT0lE
ICAgICAgICAgICBwdkNhbGxiYWNrQ29udGV4dCwNCiAgICAgICAgICBQVk9JRCAgICAgICAgICAg
cHZDb250ZXh0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNh
bGwNCkNsb3NlRW5jcnlwdGVkRmlsZVJhdygNCiAgICAgIFBWT0lEICAgICAgICAgICBwdkNvbnRl
eHQNCiAgICApOw0KDQojbGluZSAyNzM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CmludA0KX19zdGRjYWxsDQpsc3RyY21wQSgNCiAgICAgIExQQ1NUUiBscFN0cmluZzEsDQogICAg
ICBMUENTVFIgbHBTdHJpbmcyDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpf
X3N0ZGNhbGwNCmxzdHJjbXBXKA0KICAgICAgTFBDV1NUUiBscFN0cmluZzEsDQogICAgICBMUENX
U1RSIGxwU3RyaW5nMg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDI3NjMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCmxzdHJj
bXBpQSgNCiAgICAgIExQQ1NUUiBscFN0cmluZzEsDQogICAgICBMUENTVFIgbHBTdHJpbmcyDQog
ICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCmxzdHJjbXBpVygN
CiAgICAgIExQQ1dTVFIgbHBTdHJpbmcxLA0KICAgICAgTFBDV1NUUiBscFN0cmluZzINCiAgICAp
Ow0KDQoNCg0KDQojbGluZSAyNzgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSAy
Nzg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCiNwcmFnbWEg
d2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NSkNCiNsaW5lIDI3OTQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0K
IA0KIA0KTFBTVFINCl9fc3RkY2FsbA0KbHN0cmNweW5BKA0KICAgICAgTFBTVFIgbHBTdHJpbmcx
LA0KICAgICAgTFBDU1RSIGxwU3RyaW5nMiwNCiAgICAgIGludCBpTWF4TGVuZ3RoDQogICAgKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KIA0KIA0KIA0KTFBXU1RSDQpfX3N0ZGNhbGwNCmxz
dHJjcHluVygNCiAgICAgIExQV1NUUiBscFN0cmluZzEsDQogICAgICBMUENXU1RSIGxwU3RyaW5n
MiwNCiAgICAgIGludCBpTWF4TGVuZ3RoDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMjgyNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMUFNUUg0KX19z
dGRjYWxsDQpsc3RyY3B5QSgNCiAgICAgIExQU1RSIGxwU3RyaW5nMSwgDQogICAgICAgTFBDU1RS
IGxwU3RyaW5nMg0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxQV1NUUg0KX19zdGRj
YWxsDQpsc3RyY3B5VygNCiAgICAgIExQV1NUUiBscFN0cmluZzEsIA0KICAgICAgIExQQ1dTVFIg
bHBTdHJpbmcyDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMjg0NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMUFNUUg0KX19zdGRjYWxsDQpsc3RyY2F0
QSgNCiAgICAgIExQU1RSIGxwU3RyaW5nMSwgDQogICAgICAgICBMUENTVFIgbHBTdHJpbmcyDQog
ICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFBXU1RSDQpfX3N0ZGNhbGwNCmxzdHJjYXRX
KA0KICAgICAgTFBXU1RSIGxwU3RyaW5nMSwgDQogICAgICAgICBMUENXU1RSIGxwU3RyaW5nMg0K
ICAgICk7DQoNCg0KDQoNCiNsaW5lIDI4NjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0K
I3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDI4NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQoNCiNsaW5lIDI4NzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBH
YW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQps
c3RybGVuQSgNCiAgICAgIExQQ1NUUiBscFN0cmluZw0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCmludA0KX19zdGRjYWxsDQpsc3RybGVuVygNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcN
CiAgICApOw0KDQoNCg0KDQojbGluZSAyODkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoj
bGluZSAyODk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkhGSUxFDQpfX3N0ZGNhbGwNCk9wZW5GaWxlKA0KICAgICAgICAgTFBDU1RSIGxwRmlsZU5hbWUs
DQogICAgICBMUE9GU1RSVUNUIGxwUmVPcGVuQnVmZiwNCiAgICAgICAgIFVJTlQgdVN0eWxlDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIRklMRQ0KX19zdGRjYWxsDQpfbG9wZW4o
DQogICAgICBMUENTVFIgbHBQYXRoTmFtZSwNCiAgICAgIGludCBpUmVhZFdyaXRlDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIRklMRQ0KX19zdGRjYWxsDQpfbGNyZWF0KA0KICAg
ICAgTFBDU1RSIGxwUGF0aE5hbWUsDQogICAgICBpbnQgIGlBdHRyaWJ1dGUNCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9fc3RkY2FsbA0KX2xyZWFkKA0KICAgICAgSEZJ
TEUgaEZpbGUsDQogICAgICBMUFZPSUQgbHBCdWZmZXIsDQogICAgICBVSU5UIHVCeXRlcw0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpfbHdyaXRlKA0K
ICAgICAgSEZJTEUgaEZpbGUsDQogICAgICBMUENDSCBscEJ1ZmZlciwNCiAgICAgIFVJTlQgdUJ5
dGVzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpsb25nDQpfX3N0ZGNhbGwNCl9o
cmVhZCgNCiAgICAgIEhGSUxFIGhGaWxlLA0KICAgICAgTFBWT0lEIGxwQnVmZmVyLA0KICAgICAg
bG9uZyBsQnl0ZXMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmxvbmcNCl9fc3Rk
Y2FsbA0KX2h3cml0ZSgNCiAgICAgIEhGSUxFIGhGaWxlLA0KICAgICAgTFBDQ0ggbHBCdWZmZXIs
DQogICAgICBsb25nIGxCeXRlcw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEZJ
TEUNCl9fc3RkY2FsbA0KX2xjbG9zZSgNCiAgICAgIEhGSUxFIGhGaWxlDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05HDQpfX3N0ZGNhbGwNCl9sbHNlZWsoDQogICAgICBIRklM
RSBoRmlsZSwNCiAgICAgIExPTkcgbE9mZnNldCwNCiAgICAgIGludCBpT3JpZ2luDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzVGV4dFVuaWNvZGUo
DQogICAgICBjb25zdCB2b2lkKiBscHYsDQogICAgICAgICAgICAgaW50IGlTaXplLA0KICAgICAg
TFBJTlQgbHBpUmVzdWx0DQogICAgKTsNCg0KI2xpbmUgMjk4NiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZh
bWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KU2lnbmFsT2JqZWN0QW5kV2FpdCgNCiAgICAg
IEhBTkRMRSBoT2JqZWN0VG9TaWduYWwsDQogICAgICBIQU5ETEUgaE9iamVjdFRvV2FpdE9uLA0K
ICAgICAgRFdPUkQgZHdNaWxsaXNlY29uZHMsDQogICAgICBCT09MIGJBbGVydGFibGUNCiAgICAp
Ow0KI2xpbmUgMzAwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgMzAwNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkJhY2t1cFJlYWQoDQogICAgICAgICBIQU5ETEUgaEZpbGUsDQogICAgICBMUEJZVEUgbHBC
dWZmZXIsDQogICAgICAgICBEV09SRCBuTnVtYmVyT2ZCeXRlc1RvUmVhZCwNCiAgICAgICAgTFBE
V09SRCBscE51bWJlck9mQnl0ZXNSZWFkLA0KICAgICAgICAgQk9PTCBiQWJvcnQsDQogICAgICAg
ICBCT09MIGJQcm9jZXNzU2VjdXJpdHksDQogICAgICBMUFZPSUQgKmxwQ29udGV4dA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpCYWNrdXBTZWVrKA0K
ICAgICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgICAgRFdPUkQgIGR3TG93Qnl0ZXNUb1NlZWss
DQogICAgICAgICBEV09SRCAgZHdIaWdoQnl0ZXNUb1NlZWssDQogICAgICAgIExQRFdPUkQgbHBk
d0xvd0J5dGVTZWVrZWQsDQogICAgICAgIExQRFdPUkQgbHBkd0hpZ2hCeXRlU2Vla2VkLA0KICAg
ICAgTFBWT0lEICpscENvbnRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KQmFja3VwV3JpdGUoDQogICAgICAgICBIQU5ETEUgaEZpbGUsDQogICAg
ICBMUEJZVEUgbHBCdWZmZXIsDQogICAgICAgICBEV09SRCBuTnVtYmVyT2ZCeXRlc1RvV3JpdGUs
DQogICAgICAgIExQRFdPUkQgbHBOdW1iZXJPZkJ5dGVzV3JpdHRlbiwNCiAgICAgICAgIEJPT0wg
YkFib3J0LA0KICAgICAgICAgQk9PTCBiUHJvY2Vzc1NlY3VyaXR5LA0KICAgICAgTFBWT0lEICps
cENvbnRleHQNCiAgICApOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfV0lOMzJfU1RSRUFNX0lE
IHsNCiAgICAgICAgRFdPUkQgICAgICAgICAgZHdTdHJlYW1JZCA7DQogICAgICAgIERXT1JEICAg
ICAgICAgIGR3U3RyZWFtQXR0cmlidXRlcyA7DQogICAgICAgIExBUkdFX0lOVEVHRVIgIFNpemUg
Ow0KICAgICAgICBEV09SRCAgICAgICAgICBkd1N0cmVhbU5hbWVTaXplIDsNCiAgICAgICAgV0NI
QVIgICAgICAgICAgY1N0cmVhbU5hbWVbIDEgXSA7DQp9IFdJTjMyX1NUUkVBTV9JRCwgKkxQV0lO
MzJfU1RSRUFNX0lEIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMzEwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCiNsaW5lIDMxMTEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KI2xpbmUgMzExNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfU1RBUlRVUElORk9FWEEgew0KICAgIFNUQVJUVVBJTkZPQSBTdGFydHVwSW5mbzsNCiAgICBM
UFBST0NfVEhSRUFEX0FUVFJJQlVURV9MSVNUIGxwQXR0cmlidXRlTGlzdDsNCn0gU1RBUlRVUElO
Rk9FWEEsICpMUFNUQVJUVVBJTkZPRVhBOw0KdHlwZWRlZiBzdHJ1Y3QgX1NUQVJUVVBJTkZPRVhX
IHsNCiAgICBTVEFSVFVQSU5GT1cgU3RhcnR1cEluZm87DQogICAgTFBQUk9DX1RIUkVBRF9BVFRS
SUJVVEVfTElTVCBscEF0dHJpYnV0ZUxpc3Q7DQp9IFNUQVJUVVBJTkZPRVhXLCAqTFBTVEFSVFVQ
SU5GT0VYVzsNCg0KdHlwZWRlZiBTVEFSVFVQSU5GT0VYVyBTVEFSVFVQSU5GT0VYOw0KdHlwZWRl
ZiBMUFNUQVJUVVBJTkZPRVhXIExQU1RBUlRVUElORk9FWDsNCg0KDQoNCiNsaW5lIDMxMzYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDMxMzggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCiNsaW5lIDMxNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQojbGluZSAzMTQ4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWls
eQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCk9wZW5N
dXRleEEoDQogICAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICBCT09MIGJJbmhlcml0
SGFuZGxlLA0KICAgICAgTFBDU1RSIGxwTmFtZQ0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZVNlbWFwaG9yZUEoDQogICAg
ICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZW1hcGhvcmVBdHRyaWJ1dGVzLA0KICAgICAgICAg
IExPTkcgbEluaXRpYWxDb3VudCwNCiAgICAgICAgICBMT05HIGxNYXhpbXVtQ291bnQsDQogICAg
ICBMUENTVFIgbHBOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMzE4MSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCk9wZW5TZW1hcGhvcmVBKA0KICAgICAg
RFdPUkQgZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgQk9PTCBiSW5oZXJpdEhhbmRsZSwNCiAgICAg
IExQQ1NUUiBscE5hbWUNCiAgICApOw0KDQoNCg0KDQojbGluZSAzMjAwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZVdhaXRhYmxlVGltZXJB
KA0KICAgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwVGltZXJBdHRyaWJ1dGVzLA0KICAgICAg
ICAgIEJPT0wgYk1hbnVhbFJlc2V0LA0KICAgICAgTFBDU1RSIGxwVGltZXJOYW1lDQogICAgKTsN
Cg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KT3Bl
bldhaXRhYmxlVGltZXJBKA0KICAgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgQk9P
TCBiSW5oZXJpdEhhbmRsZSwNCiAgICAgIExQQ1NUUiBscFRpbWVyTmFtZQ0KICAgICk7DQoNCg0K
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVh
dGVTZW1hcGhvcmVFeEEoDQogICAgICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZW1hcGhv
cmVBdHRyaWJ1dGVzLA0KICAgICAgICAgICAgIExPTkcgbEluaXRpYWxDb3VudCwNCiAgICAgICAg
ICAgICBMT05HIGxNYXhpbXVtQ291bnQsDQogICAgICAgICBMUENTVFIgbHBOYW1lLA0KICAgICAg
IERXT1JEIGR3RmxhZ3MsDQogICAgICAgICAgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzDQogICAg
KTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0K
Q3JlYXRlV2FpdGFibGVUaW1lckV4QSgNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFRp
bWVyQXR0cmlidXRlcywNCiAgICAgIExQQ1NUUiBscFRpbWVyTmFtZSwNCiAgICAgICAgICBEV09S
RCBkd0ZsYWdzLA0KICAgICAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2Vzcw0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDMyNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDMyNjggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDMyNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5
IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpf
X3N0ZGNhbGwNCkNyZWF0ZUZpbGVNYXBwaW5nQSgNCiAgICAgICAgICBIQU5ETEUgaEZpbGUsDQog
ICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBGaWxlTWFwcGluZ0F0dHJpYnV0ZXMsDQogICAg
ICAgICAgRFdPUkQgZmxQcm90ZWN0LA0KICAgICAgICAgIERXT1JEIGR3TWF4aW11bVNpemVIaWdo
LA0KICAgICAgICAgIERXT1JEIGR3TWF4aW11bVNpemVMb3csDQogICAgICBMUENTVFIgbHBOYW1l
DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMzI5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZUZpbGVN
YXBwaW5nTnVtYUEoDQogICAgICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgTFBTRUNVUklUWV9B
VFRSSUJVVEVTIGxwRmlsZU1hcHBpbmdBdHRyaWJ1dGVzLA0KICAgICAgICAgIERXT1JEIGZsUHJv
dGVjdCwNCiAgICAgICAgICBEV09SRCBkd01heGltdW1TaXplSGlnaCwNCiAgICAgICAgICBEV09S
RCBkd01heGltdW1TaXplTG93LA0KICAgICAgTFBDU1RSIGxwTmFtZSwNCiAgICAgICAgICBEV09S
RCBubmRQcmVmZXJyZWQNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDMzMTkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAzMzIyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luYmFzZS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBHYW1lcyBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpPcGVu
RmlsZU1hcHBpbmdBKA0KICAgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgQk9PTCBi
SW5oZXJpdEhhbmRsZSwNCiAgICAgIExQQ1NUUiBscE5hbWUNCiAgICApOw0KDQoNCg0KDQojbGlu
ZSAzMzM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkdldExvZ2ljYWxEcml2ZVN0cmlu
Z3NBKA0KICAgICAgRFdPUkQgbkJ1ZmZlckxlbmd0aCwNCiAgICAgIExQU1RSIGxwQnVmZmVyDQog
ICAgKTsNCg0KDQoNCg0KI2xpbmUgMzM1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQojbGlu
ZSAzMzY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3By
YWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVz
IEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMzgxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luYmFzZS5oIg0KDQojbGluZSAzMzgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzQxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2Ft
ZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KUXVlcnlGdWxsUHJvY2Vzc0ltYWdlTmFtZUEoDQogICAgICBIQU5ETEUgaFByb2Nlc3Ms
DQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgTFBTVFIgbHBFeGVOYW1lLA0KICAgICAgUERX
T1JEIGxwZHdTaXplDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpRdWVyeUZ1bGxQcm9jZXNzSW1hZ2VOYW1lVygNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywN
CiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBMUFdTVFIgbHBFeGVOYW1lLA0KICAgICAgUERX
T1JEIGxwZHdTaXplDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMzQ0NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmJhc2UuaCINCg0KI2xpbmUgMzQ0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUg
MzQ1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWls
eQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9QUk9DX1RIUkVB
RF9BVFRSSUJVVEVfTlVNIHsNCiAgICBQcm9jVGhyZWFkQXR0cmlidXRlUGFyZW50UHJvY2VzcyAg
ICAgICAgICAgICAgICA9IDAsDQogICAgUHJvY1RocmVhZEF0dHJpYnV0ZUhhbmRsZUxpc3QgICAg
ICAgICAgICAgICAgICAgPSAyLA0KDQogICAgUHJvY1RocmVhZEF0dHJpYnV0ZUdyb3VwQWZmaW5p
dHkgICAgICAgICAgICAgICAgPSAzLA0KICAgIFByb2NUaHJlYWRBdHRyaWJ1dGVQcmVmZXJyZWRO
b2RlICAgICAgICAgICAgICAgID0gNCwNCiAgICBQcm9jVGhyZWFkQXR0cmlidXRlSWRlYWxQcm9j
ZXNzb3IgICAgICAgICAgICAgICA9IDUsDQogICAgUHJvY1RocmVhZEF0dHJpYnV0ZVVtc1RocmVh
ZCAgICAgICAgICAgICAgICAgICAgPSA2LA0KICAgIFByb2NUaHJlYWRBdHRyaWJ1dGVNaXRpZ2F0
aW9uUG9saWN5ICAgICAgICAgICAgID0gNywNCiNsaW5lIDM0NzkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQoNCg0KI2xpbmUgMzQ4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiAgICBQcm9j
VGhyZWFkQXR0cmlidXRlUHJvdGVjdGlvbkxldmVsICAgICAgICAgICAgICA9IDExLA0KDQojbGlu
ZSAzNDg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCiNsaW5lIDM0OTEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KI2xpbmUgMzQ5NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCg0KDQojbGluZSAzNDk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCiNsaW5l
IDM1MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDM1MDIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQp9IFBST0NfVEhSRUFEX0FUVFJJQlVURV9OVU07DQojbGluZSAzNTA0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzUx
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDM1MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDM1MzUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KI2xpbmUgMzU0MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmJhc2UuaCINCg0KDQoNCg0KI2xpbmUgMzU0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzU1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzODAzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDM4MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoN
CiNsaW5lIDM4MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzODU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoj
bGluZSAzODU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQojbGluZSAzODY0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSAzODY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFz
ZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQoNCiNsaW5lIDM4NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KR2V0U3RhcnR1cEluZm9B
KA0KICAgICAgTFBTVEFSVFVQSU5GT0EgbHBTdGFydHVwSW5mbw0KICAgICk7DQoNCg0KDQoNCiNs
aW5lIDM4ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzOTI3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAzOTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSAzOTQ5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
T25lQ29yZSBGYW1pbHkgb3IgQXBwIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
RFdPUkQNCl9fc3RkY2FsbA0KR2V0RmlybXdhcmVFbnZpcm9ubWVudFZhcmlhYmxlQSgNCiAgICAg
IExQQ1NUUiBscE5hbWUsDQogICAgICBMUENTVFIgbHBHdWlkLA0KICAgICAgUFZPSUQgcEJ1ZmZl
ciwNCiAgICAgIERXT1JEICAgIG5TaXplDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
RFdPUkQNCl9fc3RkY2FsbA0KR2V0RmlybXdhcmVFbnZpcm9ubWVudFZhcmlhYmxlVygNCiAgICAg
IExQQ1dTVFIgbHBOYW1lLA0KICAgICAgTFBDV1NUUiBscEd1aWQsDQogICAgICBQVk9JRCBwQnVm
ZmVyLA0KICAgICAgRFdPUkQgICAgblNpemUNCiAgICApOw0KDQoNCg0KDQojbGluZSAzOTc3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQwMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRGaXJtd2Fy
ZUVudmlyb25tZW50VmFyaWFibGVBKA0KICAgICAgTFBDU1RSIGxwTmFtZSwNCiAgICAgIExQQ1NU
UiBscEd1aWQsDQogICAgICBQVk9JRCBwVmFsdWUsDQogICAgICBEV09SRCAgICBuU2l6ZQ0KICAg
ICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0RmlybXdhcmVF
bnZpcm9ubWVudFZhcmlhYmxlVygNCiAgICAgIExQQ1dTVFIgbHBOYW1lLA0KICAgICAgTFBDV1NU
UiBscEd1aWQsDQogICAgICBQVk9JRCBwVmFsdWUsDQogICAgICBEV09SRCAgICBuU2l6ZQ0KICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDQwMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
NDA2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNDA2MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQwODYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KSFJT
UkMNCl9fc3RkY2FsbA0KRmluZFJlc291cmNlQSgNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAg
ICAgICAgICBMUENTVFIgbHBOYW1lLA0KICAgICAgICAgIExQQ1NUUiBscFR5cGUNCiAgICApOw0K
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkhSU1JDDQpfX3N0ZGNhbGwNCkZpbmRS
ZXNvdXJjZUV4QSgNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgICAgICBMUENTVFIgbHBU
eXBlLA0KICAgICAgICAgIExQQ1NUUiBscE5hbWUsDQogICAgICAgICAgV09SRCAgICB3TGFuZ3Vh
Z2UNCiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KRW51bVJlc291cmNlVHlwZXNBKA0KICAgICAgSE1PRFVMRSBoTW9kdWxlLA0KICAgICAgICAg
IEVOVU1SRVNUWVBFUFJPQ0EgbHBFbnVtRnVuYywNCiAgICAgICAgICBMT05HX1BUUiBsUGFyYW0N
CiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1SZXNv
dXJjZVR5cGVzVygNCiAgICAgIEhNT0RVTEUgaE1vZHVsZSwNCiAgICAgICAgICBFTlVNUkVTVFlQ
RVBST0NXIGxwRW51bUZ1bmMsDQogICAgICAgICAgTE9OR19QVFIgbFBhcmFtDQogICAgKTsNCg0K
DQoNCg0KI2xpbmUgNDEzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1SZXNvdXJjZU5hbWVzQSgNCiAgICAgIEhN
T0RVTEUgaE1vZHVsZSwNCiAgICAgICAgICBMUENTVFIgbHBUeXBlLA0KICAgICAgICAgIEVOVU1S
RVNOQU1FUFJPQ0EgbHBFbnVtRnVuYywNCiAgICAgICAgICBMT05HX1BUUiBsUGFyYW0NCiAgICAp
Ow0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVt
UmVzb3VyY2VMYW5ndWFnZXNBKA0KICAgICAgSE1PRFVMRSBoTW9kdWxlLA0KICAgICAgICAgIExQ
Q1NUUiBscFR5cGUsDQogICAgICAgICAgTFBDU1RSIGxwTmFtZSwNCiAgICAgICAgICBFTlVNUkVT
TEFOR1BST0NBIGxwRW51bUZ1bmMsDQogICAgICAgICAgTE9OR19QVFIgbFBhcmFtDQogICAgKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtUmVzb3VyY2VMYW5n
dWFnZXNXKA0KICAgICAgSE1PRFVMRSBoTW9kdWxlLA0KICAgICAgICAgIExQQ1dTVFIgbHBUeXBl
LA0KICAgICAgICAgIExQQ1dTVFIgbHBOYW1lLA0KICAgICAgICAgIEVOVU1SRVNMQU5HUFJPQ1cg
bHBFbnVtRnVuYywNCiAgICAgICAgICBMT05HX1BUUiBsUGFyYW0NCiAgICApOw0KDQoNCg0KDQoj
bGluZSA0MTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpCZWdpblVwZGF0ZVJlc291cmNlQSgNCiAgICAgIExQQ1NU
UiBwRmlsZU5hbWUsDQogICAgICBCT09MIGJEZWxldGVFeGlzdGluZ1Jlc291cmNlcw0KICAgICk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpCZWdpblVwZGF0ZVJl
c291cmNlVygNCiAgICAgIExQQ1dTVFIgcEZpbGVOYW1lLA0KICAgICAgQk9PTCBiRGVsZXRlRXhp
c3RpbmdSZXNvdXJjZXMNCiAgICApOw0KDQoNCg0KDQojbGluZSA0MTk1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVXBk
YXRlUmVzb3VyY2VBKA0KICAgICAgSEFORExFIGhVcGRhdGUsDQogICAgICBMUENTVFIgbHBUeXBl
LA0KICAgICAgTFBDU1RSIGxwTmFtZSwNCiAgICAgIFdPUkQgd0xhbmd1YWdlLA0KICAgICAgTFBW
T0lEIGxwRGF0YSwNCiAgICAgIERXT1JEIGNiDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpVcGRhdGVSZXNvdXJjZVcoDQogICAgICBIQU5ETEUgaFVwZGF0
ZSwNCiAgICAgIExQQ1dTVFIgbHBUeXBlLA0KICAgICAgTFBDV1NUUiBscE5hbWUsDQogICAgICBX
T1JEIHdMYW5ndWFnZSwNCiAgICAgIExQVk9JRCBscERhdGEsDQogICAgICBEV09SRCBjYg0KICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDQyMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbmRVcGRhdGVSZXNvdXJjZUEoDQog
ICAgICBIQU5ETEUgaFVwZGF0ZSwNCiAgICAgIEJPT0wgICBmRGlzY2FyZA0KICAgICk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRW5kVXBkYXRlUmVzb3VyY2VXKA0K
ICAgICAgSEFORExFIGhVcGRhdGUsDQogICAgICBCT09MICAgZkRpc2NhcmQNCiAgICApOw0KDQoN
Cg0KDQojbGluZSA0MjQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpBVE9NDQpfX3N0ZGNhbGwNCkdsb2JhbEFkZEF0b21BKA0KICAgICAgTFBD
U1RSIGxwU3RyaW5nDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQVRPTQ0KX19zdGRj
YWxsDQpHbG9iYWxBZGRBdG9tVygNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcNCiAgICApOw0KDQoN
Cg0KDQojbGluZSA0MjYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkFUT00NCl9fc3RkY2FsbA0KR2xvYmFsQWRkQXRvbUV4QSgNCiAgICAgIExQQ1NU
UiBscFN0cmluZywNCiAgICAgIERXT1JEIEZsYWdzDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQVRPTQ0KX19zdGRjYWxsDQpHbG9iYWxBZGRBdG9tRXhXKA0KICAgICAgTFBDV1NUUiBs
cFN0cmluZywNCiAgICAgIERXT1JEIEZsYWdzDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDI4MyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpBVE9NDQpf
X3N0ZGNhbGwNCkdsb2JhbEZpbmRBdG9tQSgNCiAgICAgIExQQ1NUUiBscFN0cmluZw0KICAgICk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkFUT00NCl9fc3RkY2FsbA0KR2xvYmFsRmluZEF0b21X
KA0KICAgICAgTFBDV1NUUiBscFN0cmluZw0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDQzMDEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19z
dGRjYWxsDQpHbG9iYWxHZXRBdG9tTmFtZUEoDQogICAgICBBVE9NIG5BdG9tLA0KICAgICAgTFBT
VFIgbHBCdWZmZXIsDQogICAgICBpbnQgblNpemUNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdsb2JhbEdldEF0b21OYW1lVygNCiAgICAgIEFUT00gbkF0
b20sDQogICAgICBMUFdTVFIgbHBCdWZmZXIsDQogICAgICBpbnQgblNpemUNCiAgICApOw0KDQoN
Cg0KDQojbGluZSA0MzIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkFUT00NCl9fc3RkY2FsbA0KQWRkQXRvbUEoDQogICAgICBMUENTVFIgbHBTdHJp
bmcNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpBVE9NDQpfX3N0ZGNhbGwNCkFkZEF0
b21XKA0KICAgICAgTFBDV1NUUiBscFN0cmluZw0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDQzNDEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQVRPTQ0K
X19zdGRjYWxsDQpGaW5kQXRvbUEoDQogICAgICBMUENTVFIgbHBTdHJpbmcNCiAgICApOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpBVE9NDQpfX3N0ZGNhbGwNCkZpbmRBdG9tVygNCiAgICAgIExQ
Q1dTVFIgbHBTdHJpbmcNCiAgICApOw0KDQoNCg0KDQojbGluZSA0MzU5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9fc3RkY2FsbA0KR2V0
QXRvbU5hbWVBKA0KICAgICAgQVRPTSBuQXRvbSwNCiAgICAgIExQU1RSIGxwQnVmZmVyLA0KICAg
ICAgaW50IG5TaXplDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRj
YWxsDQpHZXRBdG9tTmFtZVcoDQogICAgICBBVE9NIG5BdG9tLA0KICAgICAgTFBXU1RSIGxwQnVm
ZmVyLA0KICAgICAgaW50IG5TaXplDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDM4MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNDM4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9u
ZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwN
CkdldFByb2ZpbGVJbnRBKA0KICAgICAgTFBDU1RSIGxwQXBwTmFtZSwNCiAgICAgIExQQ1NUUiBs
cEtleU5hbWUsDQogICAgICBJTlQgbkRlZmF1bHQNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldFByb2ZpbGVJbnRXKA0KICAgICAgTFBDV1NUUiBscEFw
cE5hbWUsDQogICAgICBMUENXU1RSIGxwS2V5TmFtZSwNCiAgICAgIElOVCBuRGVmYXVsdA0KICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDQ0MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0UHJvZmlsZVN0cmluZ0EoDQog
ICAgICBMUENTVFIgbHBBcHBOYW1lLA0KICAgICAgTFBDU1RSIGxwS2V5TmFtZSwNCiAgICAgIExQ
Q1NUUiBscERlZmF1bHQsDQogICAgICBMUFNUUiBscFJldHVybmVkU3RyaW5nLA0KICAgICAgICAg
IERXT1JEIG5TaXplDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3Rk
Y2FsbA0KR2V0UHJvZmlsZVN0cmluZ1coDQogICAgICBMUENXU1RSIGxwQXBwTmFtZSwNCiAgICAg
IExQQ1dTVFIgbHBLZXlOYW1lLA0KICAgICAgTFBDV1NUUiBscERlZmF1bHQsDQogICAgICBMUFdT
VFIgbHBSZXR1cm5lZFN0cmluZywNCiAgICAgICAgICBEV09SRCBuU2l6ZQ0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDQ0MzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDQ0MzcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpXcml0ZVByb2ZpbGVTdHJpbmdBKA0KICAgICAgTFBDU1RSIGxwQXBwTmFtZSwNCiAgICAg
IExQQ1NUUiBscEtleU5hbWUsDQogICAgICBMUENTVFIgbHBTdHJpbmcNCiAgICApOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCldyaXRlUHJvZmlsZVN0cmluZ1coDQog
ICAgICBMUENXU1RSIGxwQXBwTmFtZSwNCiAgICAgIExQQ1dTVFIgbHBLZXlOYW1lLA0KICAgICAg
TFBDV1NUUiBscFN0cmluZw0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDQ0NjMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQoNCiNsaW5lIDQ0NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0
UHJvZmlsZVNlY3Rpb25BKA0KICAgICAgTFBDU1RSIGxwQXBwTmFtZSwNCiAgICAgIExQU1RSIGxw
UmV0dXJuZWRTdHJpbmcsDQogICAgICBEV09SRCBuU2l6ZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFByb2ZpbGVTZWN0aW9uVygNCiAgICAgIExQ
Q1dTVFIgbHBBcHBOYW1lLA0KICAgICAgTFBXU1RSIGxwUmV0dXJuZWRTdHJpbmcsDQogICAgICBE
V09SRCBuU2l6ZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDQ0OTEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQoNCiNsaW5lIDQ0OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpXcml0ZVByb2ZpbGVTZWN0aW9uQSgNCiAgICAg
IExQQ1NUUiBscEFwcE5hbWUsDQogICAgICBMUENTVFIgbHBTdHJpbmcNCiAgICApOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCldyaXRlUHJvZmlsZVNlY3Rpb25XKA0K
ICAgICAgTFBDV1NUUiBscEFwcE5hbWUsDQogICAgICBMUENXU1RSIGxwU3RyaW5nDQogICAgKTsN
Cg0KDQoNCg0KI2xpbmUgNDUxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNDUx
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldFByaXZhdGVQcm9maWxlSW50QSgNCiAgICAg
ICAgICBMUENTVFIgbHBBcHBOYW1lLA0KICAgICAgICAgIExQQ1NUUiBscEtleU5hbWUsDQogICAg
ICAgICAgSU5UIG5EZWZhdWx0LA0KICAgICAgTFBDU1RSIGxwRmlsZU5hbWUNCiAgICApOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldFByaXZhdGVQcm9maWxlSW50
VygNCiAgICAgICAgICBMUENXU1RSIGxwQXBwTmFtZSwNCiAgICAgICAgICBMUENXU1RSIGxwS2V5
TmFtZSwNCiAgICAgICAgICBJTlQgbkRlZmF1bHQsDQogICAgICBMUENXU1RSIGxwRmlsZU5hbWUN
CiAgICApOw0KDQoNCg0KDQojbGluZSA0NTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ1NzEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9f
c3RkY2FsbA0KR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdBKA0KICAgICAgTFBDU1RSIGxwQXBwTmFt
ZSwNCiAgICAgIExQQ1NUUiBscEtleU5hbWUsDQogICAgICBMUENTVFIgbHBEZWZhdWx0LA0KICAg
ICAgTFBTVFIgbHBSZXR1cm5lZFN0cmluZywNCiAgICAgICAgICBEV09SRCBuU2l6ZSwNCiAgICAg
IExQQ1NUUiBscEZpbGVOYW1lDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQN
Cl9fc3RkY2FsbA0KR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKA0KICAgICAgTFBDV1NUUiBscEFw
cE5hbWUsDQogICAgICBMUENXU1RSIGxwS2V5TmFtZSwNCiAgICAgIExQQ1dTVFIgbHBEZWZhdWx0
LA0KICAgICAgTFBXU1RSIGxwUmV0dXJuZWRTdHJpbmcsDQogICAgICAgICAgRFdPUkQgblNpemUs
DQogICAgICBMUENXU1RSIGxwRmlsZU5hbWUNCiAgICApOw0KDQoNCg0KDQojbGluZSA0NTk5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDYyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCldyaXRlUHJpdmF0ZVBy
b2ZpbGVTdHJpbmdBKA0KICAgICAgTFBDU1RSIGxwQXBwTmFtZSwNCiAgICAgIExQQ1NUUiBscEtl
eU5hbWUsDQogICAgICBMUENTVFIgbHBTdHJpbmcsDQogICAgICBMUENTVFIgbHBGaWxlTmFtZQ0K
ICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV3JpdGVQcml2
YXRlUHJvZmlsZVN0cmluZ1coDQogICAgICBMUENXU1RSIGxwQXBwTmFtZSwNCiAgICAgIExQQ1dT
VFIgbHBLZXlOYW1lLA0KICAgICAgTFBDV1NUUiBscFN0cmluZywNCiAgICAgIExQQ1dTVFIgbHBG
aWxlTmFtZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDQ2NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0UHJpdmF0
ZVByb2ZpbGVTZWN0aW9uQSgNCiAgICAgICAgICBMUENTVFIgbHBBcHBOYW1lLA0KICAgICAgTFBT
VFIgbHBSZXR1cm5lZFN0cmluZywNCiAgICAgICAgICBEV09SRCBuU2l6ZSwNCiAgICAgIExQQ1NU
UiBscEZpbGVOYW1lDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3Rk
Y2FsbA0KR2V0UHJpdmF0ZVByb2ZpbGVTZWN0aW9uVygNCiAgICAgICAgICBMUENXU1RSIGxwQXBw
TmFtZSwNCiAgICAgIExQV1NUUiBscFJldHVybmVkU3RyaW5nLA0KICAgICAgICAgIERXT1JEIG5T
aXplLA0KICAgICAgTFBDV1NUUiBscEZpbGVOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDY3
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA0Njk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV3JpdGVQcml2YXRlUHJvZmls
ZVNlY3Rpb25BKA0KICAgICAgTFBDU1RSIGxwQXBwTmFtZSwNCiAgICAgIExQQ1NUUiBscFN0cmlu
ZywNCiAgICAgIExQQ1NUUiBscEZpbGVOYW1lDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpXcml0ZVByaXZhdGVQcm9maWxlU2VjdGlvblcoDQogICAgICBM
UENXU1RSIGxwQXBwTmFtZSwNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcsDQogICAgICBMUENXU1RS
IGxwRmlsZU5hbWUNCiAgICApOw0KDQoNCg0KDQojbGluZSA0NzIxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
YmFzZS5oIg0KDQojbGluZSA0NzIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFByaXZhdGVQcm9maWxlU2VjdGlvbk5h
bWVzQSgNCiAgICAgIExQU1RSIGxwc3pSZXR1cm5CdWZmZXIsDQogICAgICAgICAgRFdPUkQgblNp
emUsDQogICAgICBMUENTVFIgbHBGaWxlTmFtZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFByaXZhdGVQcm9maWxlU2VjdGlvbk5hbWVzVygNCiAg
ICAgIExQV1NUUiBscHN6UmV0dXJuQnVmZmVyLA0KICAgICAgICAgIERXT1JEIG5TaXplLA0KICAg
ICAgTFBDV1NUUiBscEZpbGVOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDc0OSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDQ3NzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRQcml2YXRlUHJvZmlsZVN0cnVjdEEoDQogICAg
ICAgICAgTFBDU1RSIGxwc3pTZWN0aW9uLA0KICAgICAgICAgIExQQ1NUUiBscHN6S2V5LA0KICAg
ICAgTFBWT0lEICAgbHBTdHJ1Y3QsDQogICAgICAgICAgVUlOVCAgICAgdVNpemVTdHJ1Y3QsDQog
ICAgICBMUENTVFIgc3pGaWxlDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpHZXRQcml2YXRlUHJvZmlsZVN0cnVjdFcoDQogICAgICAgICAgTFBDV1NUUiBs
cHN6U2VjdGlvbiwNCiAgICAgICAgICBMUENXU1RSIGxwc3pLZXksDQogICAgICBMUFZPSUQgICBs
cFN0cnVjdCwNCiAgICAgICAgICBVSU5UICAgICB1U2l6ZVN0cnVjdCwNCiAgICAgIExQQ1dTVFIg
c3pGaWxlDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDc5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2Uu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNDgyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCldyaXRlUHJpdmF0ZVByb2ZpbGVTdHJ1Y3RBKA0KICAgICAgICAg
IExQQ1NUUiBscHN6U2VjdGlvbiwNCiAgICAgICAgICBMUENTVFIgbHBzektleSwNCiAgICAgIExQ
Vk9JRCBscFN0cnVjdCwNCiAgICAgICAgICBVSU5UICAgICB1U2l6ZVN0cnVjdCwNCiAgICAgIExQ
Q1NUUiBzekZpbGUNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCldyaXRlUHJpdmF0ZVByb2ZpbGVTdHJ1Y3RXKA0KICAgICAgICAgIExQQ1dTVFIgbHBzelNl
Y3Rpb24sDQogICAgICAgICAgTFBDV1NUUiBscHN6S2V5LA0KICAgICAgTFBWT0lEIGxwU3RydWN0
LA0KICAgICAgICAgIFVJTlQgICAgIHVTaXplU3RydWN0LA0KICAgICAgTFBDV1NUUiBzekZpbGUN
CiAgICApOw0KDQoNCg0KDQojbGluZSA0ODQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ4NzMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TEVBTg0KX19zdGRjYWxsDQpXb3c2NEVuYWJsZVdvdzY0RnNSZWRpcmVjdGlvbiAoDQogICAgICBC
T09MRUFOIFdvdzY0RnNFbmFibGVSZWRpcmVjdGlvbg0KICAgICk7DQoNCg0KDQoNCnR5cGVkZWYg
VUlOVCAoX19zdGRjYWxsKiBQR0VUX1NZU1RFTV9XT1c2NF9ESVJFQ1RPUllfQSkoICBMUFNUUiBs
cEJ1ZmZlciwgICBVSU5UIHVTaXplKTsNCnR5cGVkZWYgVUlOVCAoX19zdGRjYWxsKiBQR0VUX1NZ
U1RFTV9XT1c2NF9ESVJFQ1RPUllfVykoICBMUFdTVFIgbHBCdWZmZXIsICAgVUlOVCB1U2l6ZSk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OTExICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA0OTEzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFz
ZS5oIg0KI2xpbmUgNDkxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OTMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OTUyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA0OTU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgR2Ft
ZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpTZXREbGxEaXJlY3RvcnlBKA0KICAgICAgTFBDU1RSIGxwUGF0aE5hbWUNCiAgICApOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldERsbERpcmVjdG9yeVcoDQog
ICAgICBMUENXU1RSIGxwUGF0aE5hbWUNCiAgICApOw0KDQoNCg0KDQojbGluZSA0OTc4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgNDk3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkdldERsbERp
cmVjdG9yeUEoDQogICAgICBEV09SRCBuQnVmZmVyTGVuZ3RoLA0KICAgICAgTFBTVFIgbHBCdWZm
ZXINCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpEV09SRA0KX19zdGRjYWxsDQpH
ZXREbGxEaXJlY3RvcnlXKA0KICAgICAgRFdPUkQgbkJ1ZmZlckxlbmd0aCwNCiAgICAgIExQV1NU
UiBscEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDUwMDIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQoNCiNsaW5lIDUwMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDUw
MDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0U2VhcmNoUGF0aE1vZGUgKA0KICAgICAgRFdPUkQgRmxh
Z3MNCiAgICApOw0KDQojbGluZSA1MDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIEdhbWVz
IEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUw
NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDUwNTAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlv
biBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0ZURpcmVjdG9yeUV4QSgNCiAgICAg
ICAgICBMUENTVFIgbHBUZW1wbGF0ZURpcmVjdG9yeSwNCiAgICAgICAgICBMUENTVFIgbHBOZXdE
aXJlY3RvcnksDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0
ZXMNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0
ZURpcmVjdG9yeUV4VygNCiAgICAgICAgICBMUENXU1RSIGxwVGVtcGxhdGVEaXJlY3RvcnksDQog
ICAgICAgICAgTFBDV1NUUiBscE5ld0RpcmVjdG9yeSwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklC
VVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcw0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDUwNzYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDUwNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0K
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ3JlYXRlRGly
ZWN0b3J5VHJhbnNhY3RlZEEoDQogICAgICBMUENTVFIgbHBUZW1wbGF0ZURpcmVjdG9yeSwNCiAg
ICAgICAgICBMUENTVFIgbHBOZXdEaXJlY3RvcnksDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVU
RVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMsDQogICAgICAgICAgSEFORExFIGhUcmFuc2FjdGlvbg0K
ICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ3JlYXRlRGly
ZWN0b3J5VHJhbnNhY3RlZFcoDQogICAgICBMUENXU1RSIGxwVGVtcGxhdGVEaXJlY3RvcnksDQog
ICAgICAgICAgTFBDV1NUUiBscE5ld0RpcmVjdG9yeSwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklC
VVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcywNCiAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9u
DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNTEwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClJlbW92ZURpcmVjdG9yeVRy
YW5zYWN0ZWRBKA0KICAgICAgTFBDU1RSIGxwUGF0aE5hbWUsDQogICAgICAgICAgSEFORExFIGhU
cmFuc2FjdGlvbg0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KUmVtb3ZlRGlyZWN0b3J5VHJhbnNhY3RlZFcoDQogICAgICBMUENXU1RSIGxwUGF0aE5hbWUs
DQogICAgICAgICAgSEFORExFIGhUcmFuc2FjdGlvbg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDUx
MjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0K
RFdPUkQNCl9fc3RkY2FsbA0KR2V0RnVsbFBhdGhOYW1lVHJhbnNhY3RlZEEoDQogICAgICAgICAg
ICAgICAgIExQQ1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAgICAgICAgICBEV09SRCBuQnVmZmVy
TGVuZ3RoLA0KICAgICAgTFBTVFIgbHBCdWZmZXIsDQogICAgIExQU1RSICpscEZpbGVQYXJ0LA0K
ICAgICAgICAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KIA0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0RnVsbFBhdGhOYW1lVHJhbnNhY3Rl
ZFcoDQogICAgICAgICAgICAgICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAgICAgICAgICAg
ICAgRFdPUkQgbkJ1ZmZlckxlbmd0aCwNCiAgICAgIExQV1NUUiBscEJ1ZmZlciwNCiAgICAgTFBX
U1RSICpscEZpbGVQYXJ0LA0KICAgICAgICAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQog
ICAgKTsNCg0KDQoNCg0KI2xpbmUgNTE1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xp
bmUgNTE1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNTE2MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRlZmluZURvc0RldmljZUEoDQogICAgICAgICAg
RFdPUkQgZHdGbGFncywNCiAgICAgICAgICBMUENTVFIgbHBEZXZpY2VOYW1lLA0KICAgICAgTFBD
U1RSIGxwVGFyZ2V0UGF0aA0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
RFdPUkQNCl9fc3RkY2FsbA0KUXVlcnlEb3NEZXZpY2VBKA0KICAgICAgTFBDU1RSIGxwRGV2aWNl
TmFtZSwNCiAgICAgIExQU1RSIGxwVGFyZ2V0UGF0aCwNCiAgICAgICAgICBEV09SRCB1Y2NoTWF4
DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNTE5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVGaWxl
VHJhbnNhY3RlZEEoDQogICAgICAgICAgICBMUENTVFIgbHBGaWxlTmFtZSwNCiAgICAgICAgICAg
IERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgICAgICAgIERXT1JEIGR3U2hhcmVNb2RlLA0K
ICAgICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMsDQogICAg
ICAgICAgICBEV09SRCBkd0NyZWF0aW9uRGlzcG9zaXRpb24sDQogICAgICAgICAgICBEV09SRCBk
d0ZsYWdzQW5kQXR0cmlidXRlcywNCiAgICAgICAgSEFORExFIGhUZW1wbGF0ZUZpbGUsDQogICAg
ICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uLA0KICAgICAgICBQVVNIT1JUIHB1c01pbmlWZXJz
aW9uLA0KICAgICAgUFZPSUQgIGxwRXh0ZW5kZWRQYXJhbWV0ZXINCiAgICApOw0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlRmlsZVRyYW5zYWN0ZWRXKA0K
ICAgICAgICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAgICAgRFdPUkQgZHdEZXNp
cmVkQWNjZXNzLA0KICAgICAgICAgICAgRFdPUkQgZHdTaGFyZU1vZGUsDQogICAgICAgIExQU0VD
VVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcywNCiAgICAgICAgICAgIERXT1JE
IGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwNCiAgICAgICAgICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRy
aWJ1dGVzLA0KICAgICAgICBIQU5ETEUgaFRlbXBsYXRlRmlsZSwNCiAgICAgICAgICAgIEhBTkRM
RSBoVHJhbnNhY3Rpb24sDQogICAgICAgIFBVU0hPUlQgcHVzTWluaVZlcnNpb24sDQogICAgICBQ
Vk9JRCAgbHBFeHRlbmRlZFBhcmFtZXRlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDUyNDAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDUyNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCiNsaW5lIDUyNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KUmVP
cGVuRmlsZSgNCiAgICAgIEhBTkRMRSAgaE9yaWdpbmFsRmlsZSwNCiAgICAgIERXT1JEICAgZHdE
ZXNpcmVkQWNjZXNzLA0KICAgICAgRFdPUkQgICBkd1NoYXJlTW9kZSwNCiAgICAgIERXT1JEICAg
ZHdGbGFnc0FuZEF0dHJpYnV0ZXMNCiAgICApOw0KDQojbGluZSA1MjYyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KDQojbGluZSA1MjY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0RmlsZUF0dHJpYnV0ZXNU
cmFuc2FjdGVkQSgNCiAgICAgICAgICBMUENTVFIgbHBGaWxlTmFtZSwNCiAgICAgICAgICBEV09S
RCBkd0ZpbGVBdHRyaWJ1dGVzLA0KICAgICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24NCiAgICAp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEZpbGVBdHRyaWJ1
dGVzVHJhbnNhY3RlZFcoDQogICAgICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAg
IERXT1JEIGR3RmlsZUF0dHJpYnV0ZXMsDQogICAgICAgICAgSEFORExFIGhUcmFuc2FjdGlvbg0K
ICAgICk7DQoNCg0KDQoNCiNsaW5lIDUyOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRGaWxlQXR0cmlidXRlc1Ry
YW5zYWN0ZWRBKA0KICAgICAgIExQQ1NUUiBscEZpbGVOYW1lLA0KICAgICAgIEdFVF9GSUxFRVhf
SU5GT19MRVZFTFMgZkluZm9MZXZlbElkLA0KICAgICAgTFBWT0lEIGxwRmlsZUluZm9ybWF0aW9u
LA0KICAgICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24NCiAgICApOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEZpbGVBdHRyaWJ1dGVzVHJhbnNhY3RlZFcoDQog
ICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgIEdFVF9GSUxFRVhfSU5GT19MRVZFTFMg
ZkluZm9MZXZlbElkLA0KICAgICAgTFBWT0lEIGxwRmlsZUluZm9ybWF0aW9uLA0KICAgICAgICAg
IEhBTkRMRSBoVHJhbnNhY3Rpb24NCiAgICApOw0KDQoNCg0KDQojbGluZSA1MzE3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldENvbXByZXNzZWRGaWxlU2l6ZVRyYW5zYWN0ZWRBKA0KICAgICAgICAgICBMUENTVFIg
bHBGaWxlTmFtZSwNCiAgICAgIExQRFdPUkQgIGxwRmlsZVNpemVIaWdoLA0KICAgICAgICAgICBI
QU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQN
Cl9fc3RkY2FsbA0KR2V0Q29tcHJlc3NlZEZpbGVTaXplVHJhbnNhY3RlZFcoDQogICAgICAgICAg
IExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAgIExQRFdPUkQgIGxwRmlsZVNpemVIaWdoLA0KICAg
ICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNTMzOSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkRlbGV0ZUZpbGVUcmFuc2FjdGVkQSgNCiAgICAgICAgICBMUENTVFIgbHBGaWxl
TmFtZSwNCiAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVGaWxlVHJhbnNhY3RlZFcoDQogICAg
ICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24N
CiAgICApOw0KDQoNCg0KDQojbGluZSA1MzU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoj
bGluZSA1MzYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA1MzYzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBw
bGljYXRpb24gRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA1Mzg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA1Mzg3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkNoZWNrTmFtZUxlZ2FsRE9TOERvdDNBKA0KICAgICAgICAgICBMUENTVFIgbHBOYW1lLA0KICAg
ICAgTFBTVFIgbHBPZW1OYW1lLA0KICAgICAgICAgICBEV09SRCBPZW1OYW1lU2l6ZSwNCiAgICAg
IFBCT09MIHBiTmFtZUNvbnRhaW5zU3BhY2VzICwNCiAgICAgICAgICBQQk9PTCBwYk5hbWVMZWdh
bA0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hlY2tO
YW1lTGVnYWxET1M4RG90M1coDQogICAgICAgICAgIExQQ1dTVFIgbHBOYW1lLA0KICAgICAgTFBT
VFIgbHBPZW1OYW1lLA0KICAgICAgICAgICBEV09SRCBPZW1OYW1lU2l6ZSwNCiAgICAgIFBCT09M
IHBiTmFtZUNvbnRhaW5zU3BhY2VzICwNCiAgICAgICAgICBQQk9PTCBwYk5hbWVMZWdhbA0KICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDU0MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5l
IDU0MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDU0MjMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3Rk
Y2FsbA0KRmluZEZpcnN0RmlsZVRyYW5zYWN0ZWRBKA0KICAgICAgICAgICAgTFBDU1RSIGxwRmls
ZU5hbWUsDQogICAgICAgICAgICBGSU5ERVhfSU5GT19MRVZFTFMgZkluZm9MZXZlbElkLA0KICAg
ICAgTFBWT0lEIGxwRmluZEZpbGVEYXRhLA0KICAgICAgICAgICAgRklOREVYX1NFQVJDSF9PUFMg
ZlNlYXJjaE9wLA0KICAgICAgTFBWT0lEIGxwU2VhcmNoRmlsdGVyLA0KICAgICAgICAgICAgRFdP
UkQgZHdBZGRpdGlvbmFsRmxhZ3MsDQogICAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQog
ICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEFORExFDQpfX3N0ZGNhbGwNCkZpbmRGaXJz
dEZpbGVUcmFuc2FjdGVkVygNCiAgICAgICAgICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAg
ICAgICAgIEZJTkRFWF9JTkZPX0xFVkVMUyBmSW5mb0xldmVsSWQsDQogICAgICBMUFZPSUQgbHBG
aW5kRmlsZURhdGEsDQogICAgICAgICAgICBGSU5ERVhfU0VBUkNIX09QUyBmU2VhcmNoT3AsDQog
ICAgICBMUFZPSUQgbHBTZWFyY2hGaWx0ZXIsDQogICAgICAgICAgICBEV09SRCBkd0FkZGl0aW9u
YWxGbGFncywNCiAgICAgICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24NCiAgICApOw0KDQoNCg0K
DQojbGluZSA1NDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA1NDYzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA1NDY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgNTQ2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2Uu
aCINCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNCkNvcHlGaWxlQSgNCiAgICAgIExQQ1NUUiBscEV4aXN0aW5nRmlsZU5hbWUsDQogICAg
ICBMUENTVFIgbHBOZXdGaWxlTmFtZSwNCiAgICAgIEJPT0wgYkZhaWxJZkV4aXN0cw0KICAgICk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ29weUZpbGVXKA0KICAg
ICAgTFBDV1NUUiBscEV4aXN0aW5nRmlsZU5hbWUsDQogICAgICBMUENXU1RSIGxwTmV3RmlsZU5h
bWUsDQogICAgICBCT09MIGJGYWlsSWZFeGlzdHMNCiAgICApOw0KDQoNCg0KDQojbGluZSA1NDk0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNTUxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUg
NTUxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1p
bHkNCg0KDQp0eXBlZGVmDQpEV09SRA0KKF9fc3RkY2FsbCAqTFBQUk9HUkVTU19ST1VUSU5FKSgN
CiAgICAgICAgICBMQVJHRV9JTlRFR0VSIFRvdGFsRmlsZVNpemUsDQogICAgICAgICAgTEFSR0Vf
SU5URUdFUiBUb3RhbEJ5dGVzVHJhbnNmZXJyZWQsDQogICAgICAgICAgTEFSR0VfSU5URUdFUiBT
dHJlYW1TaXplLA0KICAgICAgICAgIExBUkdFX0lOVEVHRVIgU3RyZWFtQnl0ZXNUcmFuc2ZlcnJl
ZCwNCiAgICAgICAgICBEV09SRCBkd1N0cmVhbU51bWJlciwNCiAgICAgICAgICBEV09SRCBkd0Nh
bGxiYWNrUmVhc29uLA0KICAgICAgICAgIEhBTkRMRSBoU291cmNlRmlsZSwNCiAgICAgICAgICBI
QU5ETEUgaERlc3RpbmF0aW9uRmlsZSwNCiAgICAgIExQVk9JRCBscERhdGENCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ29weUZpbGVFeEEoDQogICAg
ICAgICAgICAgTFBDU1RSIGxwRXhpc3RpbmdGaWxlTmFtZSwNCiAgICAgICAgICAgICBMUENTVFIg
bHBOZXdGaWxlTmFtZSwNCiAgICAgICAgIExQUFJPR1JFU1NfUk9VVElORSBscFByb2dyZXNzUm91
dGluZSwNCiAgICAgICAgIExQVk9JRCBscERhdGEsDQogICAgDQogICAgICBMUEJPT0wgcGJDYW5j
ZWwsDQogICAgICAgICAgICAgRFdPUkQgZHdDb3B5RmxhZ3MNCiAgICApOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNvcHlGaWxlRXhXKA0KICAgICAgICAgICAgIExQ
Q1dTVFIgbHBFeGlzdGluZ0ZpbGVOYW1lLA0KICAgICAgICAgICAgIExQQ1dTVFIgbHBOZXdGaWxl
TmFtZSwNCiAgICAgICAgIExQUFJPR1JFU1NfUk9VVElORSBscFByb2dyZXNzUm91dGluZSwNCiAg
ICAgICAgIExQVk9JRCBscERhdGEsDQogICAgDQogICAgICBMUEJPT0wgcGJDYW5jZWwsDQogICAg
ICAgICAgICAgRFdPUkQgZHdDb3B5RmxhZ3MNCiAgICApOw0KDQoNCg0KDQojbGluZSA1NTY4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA1NTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFz
ZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNvcHlGaWxl
VHJhbnNhY3RlZEEoDQogICAgICAgICAgTFBDU1RSIGxwRXhpc3RpbmdGaWxlTmFtZSwNCiAgICAg
ICAgICBMUENTVFIgbHBOZXdGaWxlTmFtZSwNCiAgICAgIExQUFJPR1JFU1NfUk9VVElORSBscFBy
b2dyZXNzUm91dGluZSwNCiAgICAgIExQVk9JRCBscERhdGEsDQogICAgICBMUEJPT0wgcGJDYW5j
ZWwsDQogICAgICAgICAgRFdPUkQgZHdDb3B5RmxhZ3MsDQogICAgICAgICAgSEFORExFIGhUcmFu
c2FjdGlvbg0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
Q29weUZpbGVUcmFuc2FjdGVkVygNCiAgICAgICAgICBMUENXU1RSIGxwRXhpc3RpbmdGaWxlTmFt
ZSwNCiAgICAgICAgICBMUENXU1RSIGxwTmV3RmlsZU5hbWUsDQogICAgICBMUFBST0dSRVNTX1JP
VVRJTkUgbHBQcm9ncmVzc1JvdXRpbmUsDQogICAgICBMUFZPSUQgbHBEYXRhLA0KICAgICAgTFBC
T09MIHBiQ2FuY2VsLA0KICAgICAgICAgIERXT1JEIGR3Q29weUZsYWdzLA0KICAgICAgICAgIEhB
TkRMRSBoVHJhbnNhY3Rpb24NCiAgICApOw0KDQoNCg0KDQojbGluZSA1NjA2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luYmFzZS5oIg0KDQojbGluZSA1NjA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoj
bGluZSA1NjEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdh
bWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBfQ09QWUZJTEUyX01FU1NB
R0VfVFlQRSB7DQogICAgIENPUFlGSUxFMl9DQUxMQkFDS19OT05FID0gMCwNCiAgICAgQ09QWUZJ
TEUyX0NBTExCQUNLX0NIVU5LX1NUQVJURUQsDQogICAgIENPUFlGSUxFMl9DQUxMQkFDS19DSFVO
S19GSU5JU0hFRCwNCiAgICAgQ09QWUZJTEUyX0NBTExCQUNLX1NUUkVBTV9TVEFSVEVELA0KICAg
ICBDT1BZRklMRTJfQ0FMTEJBQ0tfU1RSRUFNX0ZJTklTSEVELA0KICAgICBDT1BZRklMRTJfQ0FM
TEJBQ0tfUE9MTF9DT05USU5VRSwNCiAgICAgQ09QWUZJTEUyX0NBTExCQUNLX0VSUk9SLA0KICAg
ICBDT1BZRklMRTJfQ0FMTEJBQ0tfTUFYLA0KfSBDT1BZRklMRTJfTUVTU0FHRV9UWVBFOw0KDQp0
eXBlZGVmIGVudW0gX0NPUFlGSUxFMl9NRVNTQUdFX0FDVElPTiB7DQogICAgQ09QWUZJTEUyX1BS
T0dSRVNTX0NPTlRJTlVFID0gMCwNCiAgICBDT1BZRklMRTJfUFJPR1JFU1NfQ0FOQ0VMLA0KICAg
IENPUFlGSUxFMl9QUk9HUkVTU19TVE9QLA0KICAgIENPUFlGSUxFMl9QUk9HUkVTU19RVUlFVCwN
CiAgICBDT1BZRklMRTJfUFJPR1JFU1NfUEFVU0UsDQp9IENPUFlGSUxFMl9NRVNTQUdFX0FDVElP
TjsNCg0KdHlwZWRlZiBlbnVtIF9DT1BZRklMRTJfQ09QWV9QSEFTRSB7DQogICAgQ09QWUZJTEUy
X1BIQVNFX05PTkUgPSAwLA0KICAgIENPUFlGSUxFMl9QSEFTRV9QUkVQQVJFX1NPVVJDRSwNCiAg
ICBDT1BZRklMRTJfUEhBU0VfUFJFUEFSRV9ERVNULA0KICAgIENPUFlGSUxFMl9QSEFTRV9SRUFE
X1NPVVJDRSwNCiAgICBDT1BZRklMRTJfUEhBU0VfV1JJVEVfREVTVElOQVRJT04sDQogICAgQ09Q
WUZJTEUyX1BIQVNFX1NFUlZFUl9DT1BZLA0KICAgIENPUFlGSUxFMl9QSEFTRV9OQU1FR1JBRlRf
Q09QWSwNCiAgICANCiAgICBDT1BZRklMRTJfUEhBU0VfTUFYLA0KfSBDT1BZRklMRTJfQ09QWV9Q
SEFTRTsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IENPUFlGSUxFMl9NRVNTQUdFIHsNCg0KICAgIENP
UFlGSUxFMl9NRVNTQUdFX1RZUEUgIFR5cGU7DQogICAgRFdPUkQgICAgICAgICAgICAgICAgICAg
ZHdQYWRkaW5nOw0KDQogICAgdW5pb24gew0KDQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAg
ICBEV09SRCAgICAgICAgICAgZHdTdHJlYW1OdW1iZXI7IA0KICAgICAgICAgICAgRFdPUkQgICAg
ICAgICAgIGR3UmVzZXJ2ZWQ7DQogICAgICAgICAgICBIQU5ETEUgICAgICAgICAgIGhTb3VyY2VG
aWxlOyANCiAgICAgICAgICAgIEhBTkRMRSAgICAgICAgICAgaERlc3RpbmF0aW9uRmlsZTsgDQog
ICAgICAgICAgICBVTEFSR0VfSU5URUdFUiAgdWxpQ2h1bmtOdW1iZXI7IA0KICAgICAgICAgICAg
VUxBUkdFX0lOVEVHRVIgIHVsaUNodW5rU2l6ZTsgIA0KICAgICAgICAgICAgVUxBUkdFX0lOVEVH
RVIgIHVsaVN0cmVhbVNpemU7IA0KICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgIHVsaVRvdGFs
RmlsZVNpemU7IA0KICAgICAgICB9IENodW5rU3RhcnRlZDsNCg0KICAgICAgICBzdHJ1Y3Qgew0K
ICAgICAgICAgICAgRFdPUkQgICAgICAgICAgIGR3U3RyZWFtTnVtYmVyOyANCiAgICAgICAgICAg
IERXT1JEICAgICAgICAgICBkd0ZsYWdzOw0KICAgICAgICAgICAgSEFORExFICAgICAgICAgICBo
U291cmNlRmlsZTsgDQogICAgICAgICAgICBIQU5ETEUgICAgICAgICAgIGhEZXN0aW5hdGlvbkZp
bGU7IA0KICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgIHVsaUNodW5rTnVtYmVyOyANCiAgICAg
ICAgICAgIFVMQVJHRV9JTlRFR0VSICB1bGlDaHVua1NpemU7ICANCiAgICAgICAgICAgIFVMQVJH
RV9JTlRFR0VSICB1bGlTdHJlYW1TaXplOyANCiAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSICB1
bGlTdHJlYW1CeXRlc1RyYW5zZmVycmVkOyANCiAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSICB1
bGlUb3RhbEZpbGVTaXplOyANCiAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSICB1bGlUb3RhbEJ5
dGVzVHJhbnNmZXJyZWQ7IA0KICAgICAgICB9IENodW5rRmluaXNoZWQ7DQoNCiAgICAgICAgc3Ry
dWN0IHsNCiAgICAgICAgICAgIERXT1JEICAgICAgICAgICBkd1N0cmVhbU51bWJlcjsNCiAgICAg
ICAgICAgIERXT1JEICAgICAgICAgICBkd1Jlc2VydmVkOw0KICAgICAgICAgICAgSEFORExFICAg
ICAgICAgICBoU291cmNlRmlsZTsgDQogICAgICAgICAgICBIQU5ETEUgICAgICAgICAgIGhEZXN0
aW5hdGlvbkZpbGU7IA0KICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgIHVsaVN0cmVhbVNpemU7
IA0KICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgIHVsaVRvdGFsRmlsZVNpemU7IA0KICAgICAg
ICB9IFN0cmVhbVN0YXJ0ZWQ7DQoNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIERXT1JE
ICAgICAgICAgICBkd1N0cmVhbU51bWJlcjsNCiAgICAgICAgICAgIERXT1JEICAgICAgICAgICBk
d1Jlc2VydmVkOw0KICAgICAgICAgICAgSEFORExFICAgICAgICAgICBoU291cmNlRmlsZTsgDQog
ICAgICAgICAgICBIQU5ETEUgICAgICAgICAgIGhEZXN0aW5hdGlvbkZpbGU7IA0KICAgICAgICAg
ICAgVUxBUkdFX0lOVEVHRVIgIHVsaVN0cmVhbVNpemU7DQogICAgICAgICAgICBVTEFSR0VfSU5U
RUdFUiAgdWxpU3RyZWFtQnl0ZXNUcmFuc2ZlcnJlZDsNCiAgICAgICAgICAgIFVMQVJHRV9JTlRF
R0VSICB1bGlUb3RhbEZpbGVTaXplOw0KICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgIHVsaVRv
dGFsQnl0ZXNUcmFuc2ZlcnJlZDsNCiAgICAgICAgfSBTdHJlYW1GaW5pc2hlZDsNCg0KICAgICAg
ICBzdHJ1Y3Qgew0KICAgICAgICAgICAgRFdPUkQgICAgICAgICAgIGR3UmVzZXJ2ZWQ7DQogICAg
ICAgIH0gUG9sbENvbnRpbnVlOw0KDQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBDT1BZ
RklMRTJfQ09QWV9QSEFTRSAgICBDb3B5UGhhc2U7DQogICAgICAgICAgICBEV09SRCAgICAgICAg
ICAgICAgICAgICBkd1N0cmVhbU51bWJlcjsNCiAgICAgICAgICAgIEhSRVNVTFQgICAgICAgICAg
ICAgICAgIGhyRmFpbHVyZTsNCiAgICAgICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3
UmVzZXJ2ZWQ7DQogICAgICAgICAgICBVTEFSR0VfSU5URUdFUiAgICAgICAgICB1bGlDaHVua051
bWJlcjsNCiAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSICAgICAgICAgIHVsaVN0cmVhbVNpemU7
DQogICAgICAgICAgICBVTEFSR0VfSU5URUdFUiAgICAgICAgICB1bGlTdHJlYW1CeXRlc1RyYW5z
ZmVycmVkOw0KICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgICAgICAgICAgdWxpVG90YWxGaWxl
U2l6ZTsNCiAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSICAgICAgICAgIHVsaVRvdGFsQnl0ZXNU
cmFuc2ZlcnJlZDsNCiAgICAgICAgfSBFcnJvcjsNCg0KICAgIH0gSW5mbzsNCg0KfSBDT1BZRklM
RTJfTUVTU0FHRTsNCg0KdHlwZWRlZg0KQ09QWUZJTEUyX01FU1NBR0VfQUNUSU9OIChfX3N0ZGNh
bGwgKlBDT1BZRklMRTJfUFJPR1JFU1NfUk9VVElORSkoDQogICAgICAgICBjb25zdCBDT1BZRklM
RTJfTUVTU0FHRSAgICAgKnBNZXNzYWdlLA0KICAgICBQVk9JRCAgICAgICAgICAgICAgICAgICAg
ICAgcHZDYWxsYmFja0NvbnRleHQNCik7DQoNCnR5cGVkZWYgc3RydWN0IENPUFlGSUxFMl9FWFRF
TkRFRF9QQVJBTUVURVJTIHsNCiAgRFdPUkQgICAgICAgICAgICAgICAgICAgICAgICAgZHdTaXpl
Ow0KICBEV09SRCAgICAgICAgICAgICAgICAgICAgICAgICBkd0NvcHlGbGFnczsNCiAgQk9PTCAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnBmQ2FuY2VsOw0KICBQQ09QWUZJTEUyX1BST0dSRVNT
X1JPVVRJTkUgICBwUHJvZ3Jlc3NSb3V0aW5lOw0KICBQVk9JRCAgICAgICAgICAgICAgICAgICAg
ICAgICBwdkNhbGxiYWNrQ29udGV4dDsNCn0gQ09QWUZJTEUyX0VYVEVOREVEX1BBUkFNRVRFUlM7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpDb3B5RmlsZTIo
DQogICAgICAgICBQQ1dTVFIgICAgICAgICAgICAgICAgICAgICAgICAgIHB3c3pFeGlzdGluZ0Zp
bGVOYW1lLA0KICAgICAgICAgUENXU1RSICAgICAgICAgICAgICAgICAgICAgICAgICBwd3N6TmV3
RmlsZU5hbWUsDQogICAgIENPUFlGSUxFMl9FWFRFTkRFRF9QQVJBTUVURVJTICAgKnBFeHRlbmRl
ZFBhcmFtZXRlcnMNCik7DQoNCiNsaW5lIDU3NDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoN
CiNsaW5lIDU3NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojbGluZSA1NzU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KTW92ZUZpbGVBKA0KICAgICAgTFBDU1RSIGxwRXhpc3RpbmdGaWxl
TmFtZSwNCiAgICAgIExQQ1NUUiBscE5ld0ZpbGVOYW1lDQogICAgKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpNb3ZlRmlsZVcoDQogICAgICBMUENXU1RSIGxwRXhp
c3RpbmdGaWxlTmFtZSwNCiAgICAgIExQQ1dTVFIgbHBOZXdGaWxlTmFtZQ0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDU3NzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU3OTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQoNCiNsaW5lIDU3OTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkg
b3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCk1vdmVGaWxlRXhBKA0KICAgICAgICAgIExQQ1NUUiBscEV4aXN0aW5nRmlsZU5hbWUsDQog
ICAgICBMUENTVFIgbHBOZXdGaWxlTmFtZSwNCiAgICAgICAgICBEV09SRCAgICBkd0ZsYWdzDQog
ICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpNb3ZlRmlsZUV4
VygNCiAgICAgICAgICBMUENXU1RSIGxwRXhpc3RpbmdGaWxlTmFtZSwNCiAgICAgIExQQ1dTVFIg
bHBOZXdGaWxlTmFtZSwNCiAgICAgICAgICBEV09SRCAgICBkd0ZsYWdzDQogICAgKTsNCg0KDQoN
Cg0KI2xpbmUgNTgyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNTgyNyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCk1vdmVGaWxlV2l0aFByb2dyZXNzQSgNCiAgICAg
ICAgICBMUENTVFIgbHBFeGlzdGluZ0ZpbGVOYW1lLA0KICAgICAgTFBDU1RSIGxwTmV3RmlsZU5h
bWUsDQogICAgICBMUFBST0dSRVNTX1JPVVRJTkUgbHBQcm9ncmVzc1JvdXRpbmUsDQogICAgICBM
UFZPSUQgbHBEYXRhLA0KICAgICAgICAgIERXT1JEIGR3RmxhZ3MNCiAgICApOw0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCk1vdmVGaWxlV2l0aFByb2dyZXNzVygNCiAg
ICAgICAgICBMUENXU1RSIGxwRXhpc3RpbmdGaWxlTmFtZSwNCiAgICAgIExQQ1dTVFIgbHBOZXdG
aWxlTmFtZSwNCiAgICAgIExQUFJPR1JFU1NfUk9VVElORSBscFByb2dyZXNzUm91dGluZSwNCiAg
ICAgIExQVk9JRCBscERhdGEsDQogICAgICAgICAgRFdPUkQgZHdGbGFncw0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDU4NTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojbGluZSA1ODU5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA1ODYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpNb3ZlRmlsZVRyYW5z
YWN0ZWRBKA0KICAgICAgICAgIExQQ1NUUiBscEV4aXN0aW5nRmlsZU5hbWUsDQogICAgICBMUENT
VFIgbHBOZXdGaWxlTmFtZSwNCiAgICAgIExQUFJPR1JFU1NfUk9VVElORSBscFByb2dyZXNzUm91
dGluZSwNCiAgICAgIExQVk9JRCBscERhdGEsDQogICAgICAgICAgRFdPUkQgZHdGbGFncywNCiAg
ICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpNb3ZlRmlsZVRyYW5zYWN0ZWRXKA0KICAgICAgICAgIExQQ1dT
VFIgbHBFeGlzdGluZ0ZpbGVOYW1lLA0KICAgICAgTFBDV1NUUiBscE5ld0ZpbGVOYW1lLA0KICAg
ICAgTFBQUk9HUkVTU19ST1VUSU5FIGxwUHJvZ3Jlc3NSb3V0aW5lLA0KICAgICAgTFBWT0lEIGxw
RGF0YSwNCiAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgIEhBTkRMRSBoVHJhbnNh
Y3Rpb24NCiAgICApOw0KDQoNCg0KDQojbGluZSA1ODk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5o
Ig0KI2xpbmUgNTg5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNTg5NyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU5MTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDU5MTIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNr
dG9wIEZhbWlseQ0KDQoNCg0KI2xpbmUgNTkxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClJlcGxhY2VGaWxlQSgNCiAgICAgICAgICAgIExQQ1NUUiBs
cFJlcGxhY2VkRmlsZU5hbWUsDQogICAgICAgICAgICBMUENTVFIgbHBSZXBsYWNlbWVudEZpbGVO
YW1lLA0KICAgICAgICBMUENTVFIgbHBCYWNrdXBGaWxlTmFtZSwNCiAgICAgICAgICAgIERXT1JE
ICAgIGR3UmVwbGFjZUZsYWdzLA0KICAgICAgTFBWT0lEICAgbHBFeGNsdWRlLA0KICAgICAgTFBW
T0lEICBscFJlc2VydmVkDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpSZXBsYWNlRmlsZVcoDQogICAgICAgICAgICBMUENXU1RSIGxwUmVwbGFjZWRGaWxl
TmFtZSwNCiAgICAgICAgICAgIExQQ1dTVFIgbHBSZXBsYWNlbWVudEZpbGVOYW1lLA0KICAgICAg
ICBMUENXU1RSIGxwQmFja3VwRmlsZU5hbWUsDQogICAgICAgICAgICBEV09SRCAgICBkd1JlcGxh
Y2VGbGFncywNCiAgICAgIExQVk9JRCAgIGxwRXhjbHVkZSwNCiAgICAgIExQVk9JRCAgbHBSZXNl
cnZlZA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDU5NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQojbGluZSA1OTU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0ZUhhcmRMaW5rQSgNCiAgICAg
ICAgICAgIExQQ1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAgICAgTFBDU1RSIGxwRXhpc3RpbmdG
aWxlTmFtZSwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRl
cw0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ3JlYXRl
SGFyZExpbmtXKA0KICAgICAgICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAgICAg
TFBDV1NUUiBscEV4aXN0aW5nRmlsZU5hbWUsDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMg
bHBTZWN1cml0eUF0dHJpYnV0ZXMNCiAgICApOw0KDQoNCg0KDQojbGluZSA1OTgxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA1OTgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
DQojbGluZSA1OTg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNyZWF0ZUhhcmRMaW5rVHJhbnNhY3RlZEEo
DQogICAgICAgICAgICBMUENTVFIgbHBGaWxlTmFtZSwNCiAgICAgICAgICAgIExQQ1NUUiBscEV4
aXN0aW5nRmlsZU5hbWUsDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0
dHJpYnV0ZXMsDQogICAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDcmVhdGVIYXJkTGlua1RyYW5zYWN0
ZWRXKA0KICAgICAgICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAgICAgTFBDV1NU
UiBscEV4aXN0aW5nRmlsZU5hbWUsDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1
cml0eUF0dHJpYnV0ZXMsDQogICAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsN
Cg0KDQoNCg0KI2xpbmUgNjAxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNjAy
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
SEFORExFDQpfX3N0ZGNhbGwNCkZpbmRGaXJzdFN0cmVhbVRyYW5zYWN0ZWRXICgNCiAgICAgICAg
ICAgIExQQ1dTVFIgbHBGaWxlTmFtZSwNCiAgICAgICAgICAgIFNUUkVBTV9JTkZPX0xFVkVMUyBJ
bmZvTGV2ZWwsDQogICAgICBMUFZPSUQgbHBGaW5kU3RyZWFtRGF0YSwNCiAgICAgIERXT1JEIGR3
RmxhZ3MsDQogICAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uDQogICAgKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KRmluZEZpcnN0RmlsZU5hbWVUcmFu
c2FjdGVkVyAoDQogICAgICAgICAgTFBDV1NUUiBscEZpbGVOYW1lLA0KICAgICAgICAgIERXT1JE
IGR3RmxhZ3MsDQogICAgICAgTFBEV09SRCBTdHJpbmdMZW5ndGgsDQogICAgICBQV1NUUiBMaW5r
TmFtZSwNCiAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24NCiAgICApOw0KDQojbGluZSA2MDQ2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA2MDQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFz
ZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZU5hbWVkUGlwZUEoDQogICAgICAgICAg
TFBDU1RSIGxwTmFtZSwNCiAgICAgICAgICBEV09SRCBkd09wZW5Nb2RlLA0KICAgICAgICAgIERX
T1JEIGR3UGlwZU1vZGUsDQogICAgICAgICAgRFdPUkQgbk1heEluc3RhbmNlcywNCiAgICAgICAg
ICBEV09SRCBuT3V0QnVmZmVyU2l6ZSwNCiAgICAgICAgICBEV09SRCBuSW5CdWZmZXJTaXplLA0K
ICAgICAgICAgIERXT1JEIG5EZWZhdWx0VGltZU91dCwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklC
VVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcw0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDYwNzEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXROYW1lZFBpcGVIYW5kbGVTdGF0ZUEoDQogICAgICAg
ICAgIEhBTkRMRSBoTmFtZWRQaXBlLA0KICAgICAgTFBEV09SRCBscFN0YXRlLA0KICAgICAgTFBE
V09SRCBscEN1ckluc3RhbmNlcywNCiAgICAgIExQRFdPUkQgbHBNYXhDb2xsZWN0aW9uQ291bnQs
DQogICAgICBMUERXT1JEIGxwQ29sbGVjdERhdGFUaW1lb3V0LA0KICAgICAgTFBTVFIgbHBVc2Vy
TmFtZSwNCiAgICAgICAgICAgRFdPUkQgbk1heFVzZXJOYW1lU2l6ZQ0KICAgICk7DQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDYWxsTmFtZWRQaXBlQSgN
CiAgICAgICBMUENTVFIgbHBOYW1lZFBpcGVOYW1lLA0KICAgICAgTFBWT0lEIGxwSW5CdWZmZXIs
DQogICAgICAgRFdPUkQgbkluQnVmZmVyU2l6ZSwNCiAgICAgIExQVk9JRCBscE91dEJ1ZmZlciwN
CiAgICAgICBEV09SRCBuT3V0QnVmZmVyU2l6ZSwNCiAgICAgIExQRFdPUkQgbHBCeXRlc1JlYWQs
DQogICAgICAgRFdPUkQgblRpbWVPdXQNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDYxMTAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV2FpdE5hbWVkUGlwZUEoDQog
ICAgICBMUENTVFIgbHBOYW1lZFBpcGVOYW1lLA0KICAgICAgRFdPUkQgblRpbWVPdXQNCiAgICAp
Ow0KDQoNCg0KDQojbGluZSA2MTI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQojbGlu
ZSA2MTM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TmFtZWRQaXBlQ2xpZW50Q29tcHV0
ZXJOYW1lQSgNCiAgICAgIEhBTkRMRSBQaXBlLA0KICAgICAgIExQU1RSIENsaWVudENvbXB1dGVy
TmFtZSwNCiAgICAgIFVMT05HIENsaWVudENvbXB1dGVyTmFtZUxlbmd0aA0KICAgICk7DQoNCg0K
DQoNCg0KI2xpbmUgNjE1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldE5hbWVkUGlwZUNsaWVudFByb2Nlc3NJZCgNCiAg
ICAgIEhBTkRMRSBQaXBlLA0KICAgICAgUFVMT05HIENsaWVudFByb2Nlc3NJZA0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXROYW1lZFBpcGVDbGll
bnRTZXNzaW9uSWQoDQogICAgICBIQU5ETEUgUGlwZSwNCiAgICAgIFBVTE9ORyBDbGllbnRTZXNz
aW9uSWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
R2V0TmFtZWRQaXBlU2VydmVyUHJvY2Vzc0lkKA0KICAgICAgSEFORExFIFBpcGUsDQogICAgICBQ
VUxPTkcgU2VydmVyUHJvY2Vzc0lkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldE5hbWVkUGlwZVNlcnZlclNlc3Npb25JZCgNCiAgICAgIEhBTkRM
RSBQaXBlLA0KICAgICAgUFVMT05HIFNlcnZlclNlc3Npb25JZA0KICAgICk7DQoNCiNsaW5lIDYx
OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA2
MTk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlv
biBGYW1pbHkgb3IgRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KU2V0Vm9sdW1lTGFiZWxBKA0KICAgICAgTFBDU1RSIGxwUm9vdFBhdGhO
YW1lLA0KICAgICAgTFBDU1RSIGxwVm9sdW1lTmFtZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Vm9sdW1lTGFiZWxXKA0KICAgICAgTFBDV1NUUiBs
cFJvb3RQYXRoTmFtZSwNCiAgICAgIExQQ1dTVFIgbHBWb2x1bWVOYW1lDQogICAgKTsNCg0KDQoN
Cg0KI2xpbmUgNjIxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNjIyMSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNClNldEZpbGVCYW5kd2lkdGhSZXNlcnZhdGlvbigNCiAgICAgICBIQU5ETEUgIGhG
aWxlLA0KICAgICAgIERXT1JEICAgblBlcmlvZE1pbGxpc2Vjb25kcywNCiAgICAgICBEV09SRCAg
IG5CeXRlc1BlclBlcmlvZCwNCiAgICAgICBCT09MICAgIGJEaXNjYXJkYWJsZSwNCiAgICAgIExQ
RFdPUkQgbHBUcmFuc2ZlclNpemUsDQogICAgICBMUERXT1JEIGxwTnVtT3V0c3RhbmRpbmdSZXF1
ZXN0cw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpH
ZXRGaWxlQmFuZHdpZHRoUmVzZXJ2YXRpb24oDQogICAgICAgSEFORExFICBoRmlsZSwNCiAgICAg
IExQRFdPUkQgbHBQZXJpb2RNaWxsaXNlY29uZHMsDQogICAgICBMUERXT1JEIGxwQnl0ZXNQZXJQ
ZXJpb2QsDQogICAgICBMUEJPT0wgIHBEaXNjYXJkYWJsZSwNCiAgICAgIExQRFdPUkQgbHBUcmFu
c2ZlclNpemUsDQogICAgICBMUERXT1JEIGxwTnVtT3V0c3RhbmRpbmdSZXF1ZXN0cw0KICAgICk7
DQoNCiNsaW5lIDYyNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNsZWFyRXZlbnRMb2dBICgNCiAgICAg
ICAgICBIQU5ETEUgaEV2ZW50TG9nLA0KICAgICAgTFBDU1RSIGxwQmFja3VwRmlsZU5hbWUNCiAg
ICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNsZWFyRXZlbnRM
b2dXICgNCiAgICAgICAgICBIQU5ETEUgaEV2ZW50TG9nLA0KICAgICAgTFBDV1NUUiBscEJhY2t1
cEZpbGVOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNjI3OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkJhY2t1cEV2
ZW50TG9nQSAoDQogICAgICBIQU5ETEUgaEV2ZW50TG9nLA0KICAgICAgTFBDU1RSIGxwQmFja3Vw
RmlsZU5hbWUNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkJhY2t1cEV2ZW50TG9nVyAoDQogICAgICBIQU5ETEUgaEV2ZW50TG9nLA0KICAgICAgTFBDV1NU
UiBscEJhY2t1cEZpbGVOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNjI5OCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkNsb3NlRXZlbnRMb2cgKA0KICAgICAgSEFORExFIGhFdmVudExvZw0KICAgICk7DQoNCiNsaW5l
IDYzMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KRGVyZWdpc3RlckV2ZW50U291cmNlICgNCiAgICAgIEhBTkRMRSBo
RXZlbnRMb2cNCiAgICApOw0KDQojbGluZSA2MzIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KTm90aWZ5Q2hhbmdlRXZlbnRM
b2coDQogICAgICBIQU5ETEUgIGhFdmVudExvZywNCiAgICAgIEhBTkRMRSAgaEV2ZW50DQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldE51bWJlck9m
RXZlbnRMb2dSZWNvcmRzICgNCiAgICAgICBIQU5ETEUgaEV2ZW50TG9nLA0KICAgICAgUERXT1JE
IE51bWJlck9mUmVjb3Jkcw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpHZXRPbGRlc3RFdmVudExvZ1JlY29yZCAoDQogICAgICAgSEFORExFIGhFdmVu
dExvZywNCiAgICAgIFBEV09SRCBPbGRlc3RSZWNvcmQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpPcGVuRXZlbnRMb2dBICgNCiAgICAgIExQQ1NU
UiBscFVOQ1NlcnZlck5hbWUsDQogICAgICAgICAgTFBDU1RSIGxwU291cmNlTmFtZQ0KICAgICk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpPcGVuRXZlbnRMb2dX
ICgNCiAgICAgIExQQ1dTVFIgbHBVTkNTZXJ2ZXJOYW1lLA0KICAgICAgICAgIExQQ1dTVFIgbHBT
b3VyY2VOYW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNjM2OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCg0KI2xpbmUgNjM3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KSEFORExFDQpfX3N0ZGNhbGwNClJlZ2lzdGVyRXZlbnRTb3VyY2VBICgN
CiAgICAgIExQQ1NUUiBscFVOQ1NlcnZlck5hbWUsDQogICAgICAgICAgTFBDU1RSIGxwU291cmNl
TmFtZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpS
ZWdpc3RlckV2ZW50U291cmNlVyAoDQogICAgICBMUENXU1RSIGxwVU5DU2VydmVyTmFtZSwNCiAg
ICAgICAgICBMUENXU1RSIGxwU291cmNlTmFtZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDYzOTQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDYzOTYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eQ0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpPcGVuQmFja3Vw
RXZlbnRMb2dBICgNCiAgICAgIExQQ1NUUiBscFVOQ1NlcnZlck5hbWUsDQogICAgICAgICAgTFBD
U1RSIGxwRmlsZU5hbWUNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9f
c3RkY2FsbA0KT3BlbkJhY2t1cEV2ZW50TG9nVyAoDQogICAgICBMUENXU1RSIGxwVU5DU2VydmVy
TmFtZSwNCiAgICAgICAgICBMUENXU1RSIGxwRmlsZU5hbWUNCiAgICApOw0KDQoNCg0KDQojbGlu
ZSA2NDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KUmVhZEV2ZW50TG9nQSAoDQogICAgICAgSEFORExFICAgICBoRXZl
bnRMb2csDQogICAgICAgRFdPUkQgICAgICBkd1JlYWRGbGFncywNCiAgICAgICBEV09SRCAgICAg
IGR3UmVjb3JkT2Zmc2V0LA0KICAgICAgTFBWT0lEICAgICBscEJ1ZmZlciwNCiAgICAgICBEV09S
RCAgICAgIG5OdW1iZXJPZkJ5dGVzVG9SZWFkLA0KICAgICAgRFdPUkQgICAgICAqcG5CeXRlc1Jl
YWQsDQogICAgICBEV09SRCAgICAgICpwbk1pbk51bWJlck9mQnl0ZXNOZWVkZWQNCiAgICApOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClJlYWRFdmVudExvZ1cgKA0K
ICAgICAgIEhBTkRMRSAgICAgaEV2ZW50TG9nLA0KICAgICAgIERXT1JEICAgICAgZHdSZWFkRmxh
Z3MsDQogICAgICAgRFdPUkQgICAgICBkd1JlY29yZE9mZnNldCwNCiAgICAgIExQVk9JRCAgICAg
bHBCdWZmZXIsDQogICAgICAgRFdPUkQgICAgICBuTnVtYmVyT2ZCeXRlc1RvUmVhZCwNCiAgICAg
IERXT1JEICAgICAgKnBuQnl0ZXNSZWFkLA0KICAgICAgRFdPUkQgICAgICAqcG5NaW5OdW1iZXJP
ZkJ5dGVzTmVlZGVkDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNjQ0OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmJhc2UuaCINCg0KI2xpbmUgNjQ1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZXBvcnRFdmVudEEgKA0KICAgICAg
ICAgIEhBTkRMRSAgICAgaEV2ZW50TG9nLA0KICAgICAgICAgIFdPUkQgICAgICAgd1R5cGUsDQog
ICAgICAgICAgV09SRCAgICAgICB3Q2F0ZWdvcnksDQogICAgICAgICAgRFdPUkQgICAgICBkd0V2
ZW50SUQsDQogICAgICBQU0lEICAgICAgIGxwVXNlclNpZCwNCiAgICAgICAgICBXT1JEICAgICAg
IHdOdW1TdHJpbmdzLA0KICAgICAgICAgIERXT1JEICAgICAgZHdEYXRhU2l6ZSwNCiAgICAgIExQ
Q1NUUiAqbHBTdHJpbmdzLA0KICAgICAgTFBWT0lEIGxwUmF3RGF0YQ0KICAgICk7DQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUmVwb3J0RXZlbnRXICgNCiAgICAgICAg
ICBIQU5ETEUgICAgIGhFdmVudExvZywNCiAgICAgICAgICBXT1JEICAgICAgIHdUeXBlLA0KICAg
ICAgICAgIFdPUkQgICAgICAgd0NhdGVnb3J5LA0KICAgICAgICAgIERXT1JEICAgICAgZHdFdmVu
dElELA0KICAgICAgUFNJRCAgICAgICBscFVzZXJTaWQsDQogICAgICAgICAgV09SRCAgICAgICB3
TnVtU3RyaW5ncywNCiAgICAgICAgICBEV09SRCAgICAgIGR3RGF0YVNpemUsDQogICAgICBMUENX
U1RSICpscFN0cmluZ3MsDQogICAgICBMUFZPSUQgbHBSYXdEYXRhDQogICAgKTsNCg0KDQoNCg0K
I2xpbmUgNjQ4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNjQ5MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9FVkVOVExPR19GVUxMX0lORk9S
TUFUSU9ODQp7DQogICAgRFdPUkQgICAgZHdGdWxsOw0KfQ0KRVZFTlRMT0dfRlVMTF9JTkZPUk1B
VElPTiwgKkxQRVZFTlRMT0dfRlVMTF9JTkZPUk1BVElPTjsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEV2ZW50TG9nSW5mb3JtYXRpb24gKA0KICAgICAgIEhB
TkRMRSAgICAgaEV2ZW50TG9nLA0KICAgICAgIERXT1JEICAgICAgZHdJbmZvTGV2ZWwsDQogICAg
ICBMUFZPSUQgbHBCdWZmZXIsDQogICAgICAgRFdPUkQgICAgICBjYkJ1ZlNpemUsDQogICAgICBM
UERXT1JEICAgIHBjYkJ5dGVzTmVlZGVkDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY1NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0K
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpBY2Nlc3ND
aGVja0FuZEF1ZGl0QWxhcm1BICgNCiAgICAgICAgICBMUENTVFIgU3Vic3lzdGVtTmFtZSwNCiAg
ICAgIExQVk9JRCBIYW5kbGVJZCwNCiAgICAgICAgICBMUFNUUiBPYmplY3RUeXBlTmFtZSwNCiAg
ICAgIExQU1RSIE9iamVjdE5hbWUsDQogICAgICAgICAgUFNFQ1VSSVRZX0RFU0NSSVBUT1IgU2Vj
dXJpdHlEZXNjcmlwdG9yLA0KICAgICAgICAgIERXT1JEIERlc2lyZWRBY2Nlc3MsDQogICAgICAg
ICAgUEdFTkVSSUNfTUFQUElORyBHZW5lcmljTWFwcGluZywNCiAgICAgICAgICBCT09MIE9iamVj
dENyZWF0aW9uLA0KICAgICAgICAgTFBEV09SRCBHcmFudGVkQWNjZXNzLA0KICAgICAgICAgTFBC
T09MIEFjY2Vzc1N0YXR1cywNCiAgICAgICAgIExQQk9PTCBwZkdlbmVyYXRlT25DbG9zZQ0KICAg
ICk7DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
QWNjZXNzQ2hlY2tCeVR5cGVBbmRBdWRpdEFsYXJtQSAoDQogICAgICAgICAgTFBDU1RSIFN1YnN5
c3RlbU5hbWUsDQogICAgICAgICAgTFBWT0lEIEhhbmRsZUlkLA0KICAgICAgICAgIExQQ1NUUiBP
YmplY3RUeXBlTmFtZSwNCiAgICAgIExQQ1NUUiBPYmplY3ROYW1lLA0KICAgICAgICAgIFBTRUNV
UklUWV9ERVNDUklQVE9SIFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIFBTSUQgUHJpbmNpcGFs
U2VsZlNpZCwNCiAgICAgICAgICBEV09SRCBEZXNpcmVkQWNjZXNzLA0KICAgICAgICAgIEFVRElU
X0VWRU5UX1RZUEUgQXVkaXRUeXBlLA0KICAgICAgICAgIERXT1JEIEZsYWdzLA0KICAgICAgUE9C
SkVDVF9UWVBFX0xJU1QgT2JqZWN0VHlwZUxpc3QsDQogICAgICAgICAgRFdPUkQgT2JqZWN0VHlw
ZUxpc3RMZW5ndGgsDQogICAgICAgICAgUEdFTkVSSUNfTUFQUElORyBHZW5lcmljTWFwcGluZywN
CiAgICAgICAgICBCT09MIE9iamVjdENyZWF0aW9uLA0KICAgICAgICAgTFBEV09SRCBHcmFudGVk
QWNjZXNzLA0KICAgICAgICAgTFBCT09MIEFjY2Vzc1N0YXR1cywNCiAgICAgICAgIExQQk9PTCBw
ZkdlbmVyYXRlT25DbG9zZQ0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpBY2Nlc3NDaGVja0J5VHlwZVJlc3VsdExpc3RBbmRBdWRpdEFsYXJt
QSAoDQogICAgICAgICAgTFBDU1RSIFN1YnN5c3RlbU5hbWUsDQogICAgICAgICAgTFBWT0lEIEhh
bmRsZUlkLA0KICAgICAgICAgIExQQ1NUUiBPYmplY3RUeXBlTmFtZSwNCiAgICAgIExQQ1NUUiBP
YmplY3ROYW1lLA0KICAgICAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIFNlY3VyaXR5RGVzY3Jp
cHRvciwNCiAgICAgIFBTSUQgUHJpbmNpcGFsU2VsZlNpZCwNCiAgICAgICAgICBEV09SRCBEZXNp
cmVkQWNjZXNzLA0KICAgICAgICAgIEFVRElUX0VWRU5UX1RZUEUgQXVkaXRUeXBlLA0KICAgICAg
ICAgIERXT1JEIEZsYWdzLA0KICAgICAgUE9CSkVDVF9UWVBFX0xJU1QgT2JqZWN0VHlwZUxpc3Qs
DQogICAgICAgICAgRFdPUkQgT2JqZWN0VHlwZUxpc3RMZW5ndGgsDQogICAgICAgICAgUEdFTkVS
SUNfTUFQUElORyBHZW5lcmljTWFwcGluZywNCiAgICAgICAgICBCT09MIE9iamVjdENyZWF0aW9u
LA0KICAgICAgICAgICAgTFBEV09SRCBHcmFudGVkQWNjZXNzLA0KICAgICAgICAgICAgTFBEV09S
RCBBY2Nlc3NTdGF0dXNMaXN0LA0KICAgICAgICAgTFBCT09MIHBmR2VuZXJhdGVPbkNsb3NlDQog
ICAgKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFj
Y2Vzc0NoZWNrQnlUeXBlUmVzdWx0TGlzdEFuZEF1ZGl0QWxhcm1CeUhhbmRsZUEgKA0KICAgICAg
ICAgIExQQ1NUUiBTdWJzeXN0ZW1OYW1lLA0KICAgICAgICAgIExQVk9JRCBIYW5kbGVJZCwNCiAg
ICAgICAgICBIQU5ETEUgQ2xpZW50VG9rZW4sDQogICAgICAgICAgTFBDU1RSIE9iamVjdFR5cGVO
YW1lLA0KICAgICAgTFBDU1RSIE9iamVjdE5hbWUsDQogICAgICAgICAgUFNFQ1VSSVRZX0RFU0NS
SVBUT1IgU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICAgUFNJRCBQcmluY2lwYWxTZWxmU2lkLA0K
ICAgICAgICAgIERXT1JEIERlc2lyZWRBY2Nlc3MsDQogICAgICAgICAgQVVESVRfRVZFTlRfVFlQ
RSBBdWRpdFR5cGUsDQogICAgICAgICAgRFdPUkQgRmxhZ3MsDQogICAgICBQT0JKRUNUX1RZUEVf
TElTVCBPYmplY3RUeXBlTGlzdCwNCiAgICAgICAgICBEV09SRCBPYmplY3RUeXBlTGlzdExlbmd0
aCwNCiAgICAgICAgICBQR0VORVJJQ19NQVBQSU5HIEdlbmVyaWNNYXBwaW5nLA0KICAgICAgICAg
IEJPT0wgT2JqZWN0Q3JlYXRpb24sDQogICAgICAgICAgICBMUERXT1JEIEdyYW50ZWRBY2Nlc3Ms
DQogICAgICAgICAgICBMUERXT1JEIEFjY2Vzc1N0YXR1c0xpc3QsDQogICAgICAgICBMUEJPT0wg
cGZHZW5lcmF0ZU9uQ2xvc2UNCiAgICApOw0KDQoNCg0KI2xpbmUgNjY2OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCk9i
amVjdE9wZW5BdWRpdEFsYXJtQSAoDQogICAgICAgICAgTFBDU1RSIFN1YnN5c3RlbU5hbWUsDQog
ICAgICAgICAgTFBWT0lEIEhhbmRsZUlkLA0KICAgICAgICAgIExQU1RSIE9iamVjdFR5cGVOYW1l
LA0KICAgICAgTFBTVFIgT2JqZWN0TmFtZSwNCiAgICAgICAgICBQU0VDVVJJVFlfREVTQ1JJUFRP
UiBwU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICAgICAgIEhBTkRMRSBDbGllbnRUb2tlbiwNCiAg
ICAgICAgICBEV09SRCBEZXNpcmVkQWNjZXNzLA0KICAgICAgICAgIERXT1JEIEdyYW50ZWRBY2Nl
c3MsDQogICAgICBQUFJJVklMRUdFX1NFVCBQcml2aWxlZ2VzLA0KICAgICAgICAgIEJPT0wgT2Jq
ZWN0Q3JlYXRpb24sDQogICAgICAgICAgQk9PTCBBY2Nlc3NHcmFudGVkLA0KICAgICAgICAgTFBC
T09MIEdlbmVyYXRlT25DbG9zZQ0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpPYmplY3RQcml2aWxlZ2VBdWRpdEFsYXJtQSAoDQogICAgICBM
UENTVFIgU3Vic3lzdGVtTmFtZSwNCiAgICAgIExQVk9JRCBIYW5kbGVJZCwNCiAgICAgIEhBTkRM
RSBDbGllbnRUb2tlbiwNCiAgICAgIERXT1JEIERlc2lyZWRBY2Nlc3MsDQogICAgICBQUFJJVklM
RUdFX1NFVCBQcml2aWxlZ2VzLA0KICAgICAgQk9PTCBBY2Nlc3NHcmFudGVkDQogICAgKTsNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCk9iamVjdENsb3Nl
QXVkaXRBbGFybUEgKA0KICAgICAgTFBDU1RSIFN1YnN5c3RlbU5hbWUsDQogICAgICBMUFZPSUQg
SGFuZGxlSWQsDQogICAgICBCT09MIEdlbmVyYXRlT25DbG9zZQ0KICAgICk7DQoNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpPYmplY3REZWxldGVBdWRpdEFs
YXJtQSAoDQogICAgICBMUENTVFIgU3Vic3lzdGVtTmFtZSwNCiAgICAgIExQVk9JRCBIYW5kbGVJ
ZCwNCiAgICAgIEJPT0wgR2VuZXJhdGVPbkNsb3NlDQogICAgKTsNCg0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClByaXZpbGVnZWRTZXJ2aWNlQXVkaXRBbGFy
bUEgKA0KICAgICAgTFBDU1RSIFN1YnN5c3RlbU5hbWUsDQogICAgICBMUENTVFIgU2VydmljZU5h
bWUsDQogICAgICBIQU5ETEUgQ2xpZW50VG9rZW4sDQogICAgICBQUFJJVklMRUdFX1NFVCBQcml2
aWxlZ2VzLA0KICAgICAgQk9PTCBBY2Nlc3NHcmFudGVkDQogICAgKTsNCg0KDQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRkQ29uZGl0aW9uYWxBY2UgKA0K
ICAgICAgUEFDTCBwQWNsLA0KICAgICAgICAgRFdPUkQgZHdBY2VSZXZpc2lvbiwNCiAgICAgICAg
IERXT1JEIEFjZUZsYWdzLA0KICAgICAgICAgVUNIQVIgQWNlVHlwZSwNCiAgICAgICAgIERXT1JE
IEFjY2Vzc01hc2ssDQogICAgICAgICBQU0lEIHBTaWQsDQogICAgICAgIFBXQ0hBUiBDb25kaXRp
b25TdHIsDQogICAgICBEV09SRCAqUmV0dXJuTGVuZ3RoDQogICAgKTsNCiNsaW5lIDY3NTggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDY3NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpTZXRGaWxlU2VjdXJpdHlBICgNCiAgICAgIExQQ1NUUiBscEZpbGVOYW1lLA0KICAgICAg
U0VDVVJJVFlfSU5GT1JNQVRJT04gU2VjdXJpdHlJbmZvcm1hdGlvbiwNCiAgICAgIFBTRUNVUklU
WV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3INCiAgICApOw0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0RmlsZVNlY3VyaXR5QSAoDQogICAg
ICAgTFBDU1RSIGxwRmlsZU5hbWUsDQogICAgICAgU0VDVVJJVFlfSU5GT1JNQVRJT04gUmVxdWVz
dGVkSW5mb3JtYXRpb24sDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNj
cmlwdG9yLA0KICAgICAgIERXT1JEIG5MZW5ndGgsDQogICAgICBMUERXT1JEIGxwbkxlbmd0aE5l
ZWRlZA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDY3OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpSZWFkRGlyZWN0b3J5Q2hhbmdlc1coDQogICAgICAgICAgICAgSEFORExFIGhEaXJl
Y3RvcnksDQogICAgICBMUFZPSUQgbHBCdWZmZXIsDQogICAgICAgICAgICAgRFdPUkQgbkJ1ZmZl
ckxlbmd0aCwNCiAgICAgICAgICAgICBCT09MIGJXYXRjaFN1YnRyZWUsDQogICAgICAgICAgICAg
RFdPUkQgZHdOb3RpZnlGaWx0ZXIsDQogICAgICAgIExQRFdPUkQgbHBCeXRlc1JldHVybmVkLA0K
ICAgICAgTFBPVkVSTEFQUEVEIGxwT3ZlcmxhcHBlZCwNCiAgICAgICAgIExQT1ZFUkxBUFBFRF9D
T01QTEVUSU9OX1JPVVRJTkUgbHBDb21wbGV0aW9uUm91dGluZQ0KICAgICk7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY4MjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQojbGluZSA2ODI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA2ODMxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogIA0KTFBWT0lE
DQpfX3N0ZGNhbGwNCk1hcFZpZXdPZkZpbGVFeE51bWEoDQogICAgICAgICAgSEFORExFIGhGaWxl
TWFwcGluZ09iamVjdCwNCiAgICAgICAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICAg
ICAgRFdPUkQgZHdGaWxlT2Zmc2V0SGlnaCwNCiAgICAgICAgICBEV09SRCBkd0ZpbGVPZmZzZXRM
b3csDQogICAgICAgICAgU0laRV9UIGR3TnVtYmVyT2ZCeXRlc1RvTWFwLA0KICAgICAgTFBWT0lE
IGxwQmFzZUFkZHJlc3MsDQogICAgICAgICAgRFdPUkQgbm5kUHJlZmVycmVkDQogICAgKTsNCg0K
I2xpbmUgNjg1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzQmFkUmVhZFB0cigNCiAgICAgIGNvbnN0IHZvaWQgKmxw
LA0KICAgICAgICAgIFVJTlRfUFRSIHVjYg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpJc0JhZFdyaXRlUHRyKA0KICAgICAgTFBWT0lEIGxwLA0KICAg
ICAgICAgIFVJTlRfUFRSIHVjYg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpJc0JhZEh1Z2VSZWFkUHRyKA0KICAgICAgY29uc3Qgdm9pZCAqbHAsDQog
ICAgICAgICAgVUlOVF9QVFIgdWNiDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCklzQmFkSHVnZVdyaXRlUHRyKA0KICAgICAgTFBWT0lEIGxwLA0KICAg
ICAgICAgIFVJTlRfUFRSIHVjYg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpJc0JhZENvZGVQdHIoDQogICAgICBGQVJQUk9DIGxwZm4NCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNCYWRTdHJpbmdQdHJB
KA0KICAgICAgTFBDU1RSIGxwc3osDQogICAgICAgICAgVUlOVF9QVFIgdWNjaE1heA0KICAgICk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNCYWRTdHJpbmdQdHJX
KA0KICAgICAgTFBDV1NUUiBscHN6LA0KICAgICAgICAgIFVJTlRfUFRSIHVjY2hNYXgNCiAgICAp
Ow0KDQoNCg0KDQojbGluZSA2OTEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA2
OTE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQogIEJPT0wNCl9fc3RkY2FsbA0KTG9va3VwQWNjb3VudFNpZEEoDQog
ICAgICBMUENTVFIgbHBTeXN0ZW1OYW1lLA0KICAgICAgUFNJRCBTaWQsDQogICAgICBMUFNUUiBO
YW1lLA0KICAgICAgIExQRFdPUkQgY2NoTmFtZSwNCiAgICAgIExQU1RSIFJlZmVyZW5jZWREb21h
aW5OYW1lLA0KICAgICAgTFBEV09SRCBjY2hSZWZlcmVuY2VkRG9tYWluTmFtZSwNCiAgICAgIFBT
SURfTkFNRV9VU0UgcGVVc2UNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogIEJPT0wN
Cl9fc3RkY2FsbA0KTG9va3VwQWNjb3VudFNpZFcoDQogICAgICBMUENXU1RSIGxwU3lzdGVtTmFt
ZSwNCiAgICAgIFBTSUQgU2lkLA0KICAgICAgTFBXU1RSIE5hbWUsDQogICAgICAgTFBEV09SRCBj
Y2hOYW1lLA0KICAgICAgTFBXU1RSIFJlZmVyZW5jZWREb21haW5OYW1lLA0KICAgICAgTFBEV09S
RCBjY2hSZWZlcmVuY2VkRG9tYWluTmFtZSwNCiAgICAgIFBTSURfTkFNRV9VU0UgcGVVc2UNCiAg
ICApOw0KDQoNCg0KDQojbGluZSA2OTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCiAgQk9PTA0KX19zdGRjYWxsDQpMb29rdXBBY2NvdW50TmFtZUEo
DQogICAgICBMUENTVFIgbHBTeXN0ZW1OYW1lLA0KICAgICAgICAgIExQQ1NUUiBscEFjY291bnRO
YW1lLA0KICAgICAgUFNJRCBTaWQsDQogICAgICAgTFBEV09SRCBjYlNpZCwNCiAgICAgIExQU1RS
IFJlZmVyZW5jZWREb21haW5OYW1lLA0KICAgICAgIExQRFdPUkQgY2NoUmVmZXJlbmNlZERvbWFp
bk5hbWUsDQogICAgICAgICBQU0lEX05BTUVfVVNFIHBlVXNlDQogICAgKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KICBCT09MDQpfX3N0ZGNhbGwNCkxvb2t1cEFjY291bnROYW1lVygNCiAgICAg
IExQQ1dTVFIgbHBTeXN0ZW1OYW1lLA0KICAgICAgICAgIExQQ1dTVFIgbHBBY2NvdW50TmFtZSwN
CiAgICAgIFBTSUQgU2lkLA0KICAgICAgIExQRFdPUkQgY2JTaWQsDQogICAgICBMUFdTVFIgUmVm
ZXJlbmNlZERvbWFpbk5hbWUsDQogICAgICAgTFBEV09SRCBjY2hSZWZlcmVuY2VkRG9tYWluTmFt
ZSwNCiAgICAgICAgIFBTSURfTkFNRV9VU0UgcGVVc2UNCiAgICApOw0KDQoNCg0KDQojbGluZSA2
OTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA2OTgwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogIEJPT0wNCl9fc3RkY2FsbA0K
TG9va3VwQWNjb3VudE5hbWVMb2NhbEEoDQogICAgICAgICAgTFBDU1RSIGxwQWNjb3VudE5hbWUs
DQogICAgICBQU0lEIFNpZCwNCiAgICAgICBMUERXT1JEIGNiU2lkLA0KICAgICAgTFBTVFIgUmVm
ZXJlbmNlZERvbWFpbk5hbWUsDQogICAgICAgTFBEV09SRCBjY2hSZWZlcmVuY2VkRG9tYWluTmFt
ZSwNCiAgICAgICAgIFBTSURfTkFNRV9VU0UgcGVVc2UNCiAgICApOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQogIEJPT0wNCl9fc3RkY2FsbA0KTG9va3VwQWNjb3VudE5hbWVMb2NhbFcoDQogICAg
ICAgICAgTFBDV1NUUiBscEFjY291bnROYW1lLA0KICAgICAgUFNJRCBTaWQsDQogICAgICAgTFBE
V09SRCBjYlNpZCwNCiAgICAgIExQV1NUUiBSZWZlcmVuY2VkRG9tYWluTmFtZSwNCiAgICAgICBM
UERXT1JEIGNjaFJlZmVyZW5jZWREb21haW5OYW1lLA0KICAgICAgICAgUFNJRF9OQU1FX1VTRSBw
ZVVzZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDcwMTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KICBCT09MDQpfX3N0ZGNhbGwNCkxvb2t1cEFjY291
bnRTaWRMb2NhbEEoDQogICAgICBQU0lEIFNpZCwNCiAgICAgIExQU1RSIE5hbWUsDQogICAgICAg
TFBEV09SRCBjY2hOYW1lLA0KICAgICAgTFBTVFIgUmVmZXJlbmNlZERvbWFpbk5hbWUsDQogICAg
ICBMUERXT1JEIGNjaFJlZmVyZW5jZWREb21haW5OYW1lLA0KICAgICAgUFNJRF9OQU1FX1VTRSBw
ZVVzZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAgQk9PTA0KX19zdGRjYWxsDQpM
b29rdXBBY2NvdW50U2lkTG9jYWxXKA0KICAgICAgUFNJRCBTaWQsDQogICAgICBMUFdTVFIgTmFt
ZSwNCiAgICAgICBMUERXT1JEIGNjaE5hbWUsDQogICAgICBMUFdTVFIgUmVmZXJlbmNlZERvbWFp
bk5hbWUsDQogICAgICBMUERXT1JEIGNjaFJlZmVyZW5jZWREb21haW5OYW1lLA0KICAgICAgUFNJ
RF9OQU1FX1VTRSBwZVVzZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDcwNDIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNzA2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNzA2OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KTG9va3VwUHJpdmlsZWdl
VmFsdWVBKA0KICAgICAgTFBDU1RSIGxwU3lzdGVtTmFtZSwNCiAgICAgICAgICBMUENTVFIgbHBO
YW1lLA0KICAgICAgICAgUExVSUQgICBscEx1aWQNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNCkxvb2t1cFByaXZpbGVnZVZhbHVlVygNCiAgICAgIExQQ1dT
VFIgbHBTeXN0ZW1OYW1lLA0KICAgICAgICAgIExQQ1dTVFIgbHBOYW1lLA0KICAgICAgICAgUExV
SUQgICBscEx1aWQNCiAgICApOw0KDQoNCg0KDQojbGluZSA3MDk0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
YmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAgQk9PTA0KX19zdGRjYWxsDQpMb29r
dXBQcml2aWxlZ2VOYW1lQSgNCiAgICAgIExQQ1NUUiBscFN5c3RlbU5hbWUsDQogICAgICAgICAg
UExVSUQgICBscEx1aWQsDQogICAgICBMUFNUUiBscE5hbWUsDQogICAgICAgTFBEV09SRCBjY2hO
YW1lDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KICBCT09MDQpfX3N0ZGNhbGwNCkxv
b2t1cFByaXZpbGVnZU5hbWVXKA0KICAgICAgTFBDV1NUUiBscFN5c3RlbU5hbWUsDQogICAgICAg
ICAgUExVSUQgICBscEx1aWQsDQogICAgICBMUFdTVFIgbHBOYW1lLA0KICAgICAgIExQRFdPUkQg
Y2NoTmFtZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDcxMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KICBCT09MDQpfX3N0ZGNhbGwNCkxvb2t1cFBy
aXZpbGVnZURpc3BsYXlOYW1lQSgNCiAgICAgIExQQ1NUUiBscFN5c3RlbU5hbWUsDQogICAgICAg
ICAgTFBDU1RSIGxwTmFtZSwNCiAgICAgIExQU1RSIGxwRGlzcGxheU5hbWUsDQogICAgICAgTFBE
V09SRCBjY2hEaXNwbGF5TmFtZSwNCiAgICAgICAgIExQRFdPUkQgbHBMYW5ndWFnZUlkDQogICAg
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KICBCT09MDQpfX3N0ZGNhbGwNCkxvb2t1cFByaXZp
bGVnZURpc3BsYXlOYW1lVygNCiAgICAgIExQQ1dTVFIgbHBTeXN0ZW1OYW1lLA0KICAgICAgICAg
IExQQ1dTVFIgbHBOYW1lLA0KICAgICAgTFBXU1RSIGxwRGlzcGxheU5hbWUsDQogICAgICAgTFBE
V09SRCBjY2hEaXNwbGF5TmFtZSwNCiAgICAgICAgIExQRFdPUkQgbHBMYW5ndWFnZUlkDQogICAg
KTsNCg0KDQoNCg0KI2xpbmUgNzE0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUg
NzE0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkJ1aWxkQ29tbURDQkEoDQogICAgICAgTFBDU1RSIGxwRGVmLA0KICAgICAg
TFBEQ0IgbHBEQ0INCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkJ1aWxkQ29tbURDQlcoDQogICAgICAgTFBDV1NUUiBscERlZiwNCiAgICAgIExQRENCIGxw
RENCDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNzE3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkJ1aWxkQ29tbURDQkFu
ZFRpbWVvdXRzQSgNCiAgICAgICBMUENTVFIgbHBEZWYsDQogICAgICBMUERDQiBscERDQiwNCiAg
ICAgIExQQ09NTVRJTUVPVVRTIGxwQ29tbVRpbWVvdXRzDQogICAgKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpCdWlsZENvbW1EQ0JBbmRUaW1lb3V0c1coDQogICAg
ICAgTFBDV1NUUiBscERlZiwNCiAgICAgIExQRENCIGxwRENCLA0KICAgICAgTFBDT01NVElNRU9V
VFMgbHBDb21tVGltZW91dHMNCiAgICApOw0KDQoNCg0KDQojbGluZSA3MTkyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
Q29tbUNvbmZpZ0RpYWxvZ0EoDQogICAgICAgICAgTFBDU1RSIGxwc3pOYW1lLA0KICAgICAgSFdO
RCBoV25kLA0KICAgICAgIExQQ09NTUNPTkZJRyBscENDDQogICAgKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDb21tQ29uZmlnRGlhbG9nVygNCiAgICAgICAgICBM
UENXU1RSIGxwc3pOYW1lLA0KICAgICAgSFdORCBoV25kLA0KICAgICAgIExQQ09NTUNPTkZJRyBs
cENDDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNzIxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldERlZmF1bHRDb21t
Q29uZmlnQSgNCiAgICAgICAgIExQQ1NUUiBscHN6TmFtZSwNCiAgICAgIExQQ09NTUNPTkZJRyBs
cENDLA0KICAgICAgTFBEV09SRCBscGR3U2l6ZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0RGVmYXVsdENvbW1Db25maWdXKA0KICAgICAgICAgTFBD
V1NUUiBscHN6TmFtZSwNCiAgICAgIExQQ09NTUNPTkZJRyBscENDLA0KICAgICAgTFBEV09SRCBs
cGR3U2l6ZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDcyMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXREZWZhdWx0
Q29tbUNvbmZpZ0EoDQogICAgICBMUENTVFIgbHBzek5hbWUsDQogICAgICBMUENPTU1DT05GSUcg
bHBDQywNCiAgICAgIERXT1JEIGR3U2l6ZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KU2V0RGVmYXVsdENvbW1Db25maWdXKA0KICAgICAgTFBDV1NUUiBs
cHN6TmFtZSwNCiAgICAgIExQQ09NTUNPTkZJRyBscENDLA0KICAgICAgRFdPUkQgZHdTaXplDQog
ICAgKTsNCg0KDQoNCg0KI2xpbmUgNzI1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xp
bmUgNzI2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWls
eQ0KDQoNCg0KDQoNCg0KI2xpbmUgNzI3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNCkdldENvbXB1dGVyTmFtZUEg
KA0KICAgICAgTFBTVFIgbHBCdWZmZXIsDQogICAgICBMUERXT1JEIG5TaXplDQogICAgKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpHZXRDb21wdXRlck5hbWVX
ICgNCiAgICAgIExQV1NUUiBscEJ1ZmZlciwNCiAgICAgIExQRFdPUkQgblNpemUNCiAgICApOw0K
DQoNCg0KDQojbGluZSA3MjkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA3Mjk0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAN
CkJPT0wNCl9fc3RkY2FsbA0KRG5zSG9zdG5hbWVUb0NvbXB1dGVyTmFtZUEgKA0KICAgICAgICAg
TFBDU1RSIEhvc3RuYW1lLA0KICAgICAgTFBTVFIgQ29tcHV0ZXJOYW1lLA0KICAgICAgTFBEV09S
RCBuU2l6ZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2Fs
bA0KRG5zSG9zdG5hbWVUb0NvbXB1dGVyTmFtZVcgKA0KICAgICAgICAgTFBDV1NUUiBIb3N0bmFt
ZSwNCiAgICAgIExQV1NUUiBDb21wdXRlck5hbWUsDQogICAgICBMUERXT1JEIG5TaXplDQogICAg
KTsNCg0KDQoNCg0KI2xpbmUgNzMyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUg
NzMyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldFVzZXJOYW1lQSAoDQogICAgICBMUFNUUiBscEJ1ZmZlciwNCiAg
ICAgIExQRFdPUkQgcGNiQnVmZmVyDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpHZXRVc2VyTmFtZVcgKA0KICAgICAgTFBXU1RSIGxwQnVmZmVyLA0KICAg
ICAgTFBEV09SRCBwY2JCdWZmZXINCiAgICApOw0KDQoNCg0KDQojbGluZSA3MzQ3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MzYxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCiNsaW5lIDczNjcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQoNCg0KI2xpbmUgNzM3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
DQojbGluZSA3MzczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkxvZ29uVXNlckEgKA0KICAgICAgICAgICAgIExQ
Q1NUUiBscHN6VXNlcm5hbWUsDQogICAgICAgICBMUENTVFIgbHBzekRvbWFpbiwNCiAgICAgICAg
IExQQ1NUUiBscHN6UGFzc3dvcmQsDQogICAgICAgICAgICAgRFdPUkQgZHdMb2dvblR5cGUsDQog
ICAgICAgICAgICAgRFdPUkQgZHdMb2dvblByb3ZpZGVyLA0KICAgICBQSEFORExFIHBoVG9rZW4N
CiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkxvZ29uVXNl
clcgKA0KICAgICAgICAgICAgIExQQ1dTVFIgbHBzelVzZXJuYW1lLA0KICAgICAgICAgTFBDV1NU
UiBscHN6RG9tYWluLA0KICAgICAgICAgTFBDV1NUUiBscHN6UGFzc3dvcmQsDQogICAgICAgICAg
ICAgRFdPUkQgZHdMb2dvblR5cGUsDQogICAgICAgICAgICAgRFdPUkQgZHdMb2dvblByb3ZpZGVy
LA0KICAgICBQSEFORExFIHBoVG9rZW4NCiAgICApOw0KDQoNCg0KDQojbGluZSA3NDAzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KTG9nb25Vc2VyRXhBICgNCiAgICAgICAgICAgICAgICAgTFBDU1RSIGxwc3pVc2VybmFt
ZSwNCiAgICAgICAgICAgICBMUENTVFIgbHBzekRvbWFpbiwNCiAgICAgICAgICAgICBMUENTVFIg
bHBzelBhc3N3b3JkLA0KICAgICAgICAgICAgICAgICBEV09SRCBkd0xvZ29uVHlwZSwNCiAgICAg
ICAgICAgICAgICAgRFdPUkQgZHdMb2dvblByb3ZpZGVyLA0KICAgICBQSEFORExFIHBoVG9rZW4s
DQogICAgIFBTSUQgICpwcExvZ29uU2lkLA0KICAgICBQVk9JRCAqcHBQcm9maWxlQnVmZmVyLA0K
ICAgICAgICAgICAgTFBEV09SRCBwZHdQcm9maWxlTGVuZ3RoLA0KICAgICAgICAgICAgUFFVT1RB
X0xJTUlUUyBwUXVvdGFMaW1pdHMNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkxvZ29uVXNlckV4VyAoDQogICAgICAgICAgICAgICAgIExQQ1dTVFIgbHBz
elVzZXJuYW1lLA0KICAgICAgICAgICAgIExQQ1dTVFIgbHBzekRvbWFpbiwNCiAgICAgICAgICAg
ICBMUENXU1RSIGxwc3pQYXNzd29yZCwNCiAgICAgICAgICAgICAgICAgRFdPUkQgZHdMb2dvblR5
cGUsDQogICAgICAgICAgICAgICAgIERXT1JEIGR3TG9nb25Qcm92aWRlciwNCiAgICAgUEhBTkRM
RSBwaFRva2VuLA0KICAgICBQU0lEICAqcHBMb2dvblNpZCwNCiAgICAgUFZPSUQgKnBwUHJvZmls
ZUJ1ZmZlciwNCiAgICAgICAgICAgIExQRFdPUkQgcGR3UHJvZmlsZUxlbmd0aCwNCiAgICAgICAg
ICAgIFBRVU9UQV9MSU1JVFMgcFF1b3RhTGltaXRzDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNzQz
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNzQ0MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCiNsaW5lIDc0NDcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5iYXNlLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogIEJPT0wNCl9fc3RkY2FsbA0K
Q3JlYXRlUHJvY2Vzc1dpdGhMb2dvblcoDQogICAgICAgICAgICAgTFBDV1NUUiBscFVzZXJuYW1l
LA0KICAgICAgICAgTFBDV1NUUiBscERvbWFpbiwNCiAgICAgICAgICAgICBMUENXU1RSIGxwUGFz
c3dvcmQsDQogICAgICAgICAgICAgRFdPUkQgZHdMb2dvbkZsYWdzLA0KICAgICAgICAgTFBDV1NU
UiBscEFwcGxpY2F0aW9uTmFtZSwNCiAgICAgIExQV1NUUiBscENvbW1hbmRMaW5lLA0KICAgICAg
ICAgICAgIERXT1JEIGR3Q3JlYXRpb25GbGFncywNCiAgICAgICAgIExQVk9JRCBscEVudmlyb25t
ZW50LA0KICAgICAgICAgTFBDV1NUUiBscEN1cnJlbnREaXJlY3RvcnksDQogICAgICAgICAgICAg
TFBTVEFSVFVQSU5GT1cgbHBTdGFydHVwSW5mbywNCiAgICAgICAgICAgIExQUFJPQ0VTU19JTkZP
Uk1BVElPTiBscFByb2Nlc3NJbmZvcm1hdGlvbg0KICAgICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQogIEJPT0wNCl9fc3RkY2FsbA0KQ3JlYXRlUHJvY2Vzc1dpdGhUb2tlblcoDQogICAg
ICAgICAgICAgSEFORExFIGhUb2tlbiwNCiAgICAgICAgICAgICBEV09SRCBkd0xvZ29uRmxhZ3Ms
DQogICAgICAgICBMUENXU1RSIGxwQXBwbGljYXRpb25OYW1lLA0KICAgICAgTFBXU1RSIGxwQ29t
bWFuZExpbmUsDQogICAgICAgICAgICAgRFdPUkQgZHdDcmVhdGlvbkZsYWdzLA0KICAgICAgICAg
TFBWT0lEIGxwRW52aXJvbm1lbnQsDQogICAgICAgICBMUENXU1RSIGxwQ3VycmVudERpcmVjdG9y
eSwNCiAgICAgICAgICAgICBMUFNUQVJUVVBJTkZPVyBscFN0YXJ0dXBJbmZvLA0KICAgICAgICAg
ICAgTFBQUk9DRVNTX0lORk9STUFUSU9OIGxwUHJvY2Vzc0luZm9ybWF0aW9uDQogICAgICApOw0K
DQojbGluZSA3NDkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNUb2tlblVudHJ1c3RlZCgNCiAgICAgIEhBTkRMRSBU
b2tlbkhhbmRsZQ0KICAgICk7DQoNCiNsaW5lIDc1MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Agb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClJlZ2lzdGVyV2FpdEZv
clNpbmdsZU9iamVjdCgNCiAgICAgUEhBTkRMRSBwaE5ld1dhaXRPYmplY3QsDQogICAgICAgICAg
ICAgSEFORExFIGhPYmplY3QsDQogICAgICAgICAgICAgV0FJVE9SVElNRVJDQUxMQkFDSyBDYWxs
YmFjaywNCiAgICAgICAgIFBWT0lEIENvbnRleHQsDQogICAgICAgICAgICAgVUxPTkcgZHdNaWxs
aXNlY29uZHMsDQogICAgICAgICAgICAgVUxPTkcgZHdGbGFncw0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpVbnJlZ2lzdGVyV2FpdCgNCiAgICAg
IEhBTkRMRSBXYWl0SGFuZGxlDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkJpbmRJb0NvbXBsZXRpb25DYWxsYmFjayAoDQogICAgICBIQU5ETEUgRmls
ZUhhbmRsZSwNCiAgICAgIExQT1ZFUkxBUFBFRF9DT01QTEVUSU9OX1JPVVRJTkUgRnVuY3Rpb24s
DQogICAgICBVTE9ORyBGbGFncw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEFO
RExFDQpfX3N0ZGNhbGwNClNldFRpbWVyUXVldWVUaW1lcigNCiAgICAgIEhBTkRMRSBUaW1lclF1
ZXVlLA0KICAgICAgICAgIFdBSVRPUlRJTUVSQ0FMTEJBQ0sgQ2FsbGJhY2ssDQogICAgICBQVk9J
RCBQYXJhbWV0ZXIsDQogICAgICAgICAgRFdPUkQgRHVlVGltZSwNCiAgICAgICAgICBEV09SRCBQ
ZXJpb2QsDQogICAgICAgICAgQk9PTCBQcmVmZXJJbw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KIA0KQk9PTA0KX19zdGRjYWxsDQpDYW5jZWxUaW1lclF1ZXVlVGltZXIoDQogICAg
ICBIQU5ETEUgVGltZXJRdWV1ZSwNCiAgICAgICAgICBIQU5ETEUgVGltZXINCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlVGltZXJRdWV1
ZSgNCiAgICAgIEhBTkRMRSBUaW1lclF1ZXVlDQogICAgKTsNCg0KI2xpbmUgNzU3MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNzU3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCkluaXRpYWxpemVUaHJlYWRw
b29sRW52aXJvbm1lbnQoDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBwY2JlDQogICAgKQ0K
ew0KICAgIFRwSW5pdGlhbGl6ZUNhbGxiYWNrRW52aXJvbihwY2JlKTsNCn0NCg0KX19mb3JjZWlu
bGluZQ0Kdm9pZA0KU2V0VGhyZWFkcG9vbENhbGxiYWNrUG9vbCgNCiAgICAgIFBUUF9DQUxMQkFD
S19FTlZJUk9OIHBjYmUsDQogICAgICAgICBQVFBfUE9PTCAgICAgICAgICAgICBwdHBwDQogICAg
KQ0Kew0KICAgIFRwU2V0Q2FsbGJhY2tUaHJlYWRwb29sKHBjYmUsIHB0cHApOw0KfQ0KDQpfX2Zv
cmNlaW5saW5lDQp2b2lkDQpTZXRUaHJlYWRwb29sQ2FsbGJhY2tDbGVhbnVwR3JvdXAoDQogICAg
ICAgUFRQX0NBTExCQUNLX0VOVklST04gICAgICAgICAgICAgIHBjYmUsDQogICAgICAgICAgUFRQ
X0NMRUFOVVBfR1JPVVAgICAgICAgICAgICAgICAgIHB0cGNnLA0KICAgICAgUFRQX0NMRUFOVVBf
R1JPVVBfQ0FOQ0VMX0NBTExCQUNLIHBmbmcNCiAgICApDQp7DQogICAgVHBTZXRDYWxsYmFja0Ns
ZWFudXBHcm91cChwY2JlLCBwdHBjZywgcGZuZyk7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQN
ClNldFRocmVhZHBvb2xDYWxsYmFja1J1bnNMb25nKA0KICAgICAgUFRQX0NBTExCQUNLX0VOVklS
T04gcGNiZQ0KICAgICkNCnsNCiAgICBUcFNldENhbGxiYWNrTG9uZ0Z1bmN0aW9uKHBjYmUpOw0K
fQ0KDQpfX2ZvcmNlaW5saW5lDQp2b2lkDQpTZXRUaHJlYWRwb29sQ2FsbGJhY2tMaWJyYXJ5KA0K
ICAgICAgUFRQX0NBTExCQUNLX0VOVklST04gcGNiZSwNCiAgICAgICAgIFBWT0lEICAgICAgICAg
ICAgICAgIG1vZA0KICAgICkNCnsNCiAgICBUcFNldENhbGxiYWNrUmFjZVdpdGhEbGwocGNiZSwg
bW9kKTsNCn0NCg0KDQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNClNldFRocmVhZHBvb2xDYWxsYmFj
a1ByaW9yaXR5KA0KICAgICAgUFRQX0NBTExCQUNLX0VOVklST04gcGNiZSwNCiAgICAgICAgIFRQ
X0NBTExCQUNLX1BSSU9SSVRZIFByaW9yaXR5DQogICAgKQ0Kew0KICAgIFRwU2V0Q2FsbGJhY2tQ
cmlvcml0eShwY2JlLCBQcmlvcml0eSk7DQp9DQoNCiNsaW5lIDc2NDQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNCkRlc3Ryb3lUaHJlYWRwb29sRW52aXJv
bm1lbnQoDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBwY2JlDQogICAgKQ0Kew0KICAgIFRw
RGVzdHJveUNhbGxiYWNrRW52aXJvbihwY2JlKTsNCn0NCg0KI2xpbmUgNzY1NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNzY1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
I2xpbmUgNzY1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNzY2MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoN
Cg0KDQoNCl9fZm9yY2VpbmxpbmUNCnZvaWQNClNldFRocmVhZHBvb2xDYWxsYmFja1BlcnNpc3Rl
bnQoDQogICAgICBQVFBfQ0FMTEJBQ0tfRU5WSVJPTiBwY2JlDQogICAgKQ0Kew0KICAgIFRwU2V0
Q2FsbGJhY2tQZXJzaXN0ZW50KHBjYmUpOw0KfQ0KDQojbGluZSA3Njc5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KDQojbGluZSA3NjgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNv
cmUgRmFtaWx5DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkhBTkRMRQ0K
X19zdGRjYWxsDQpDcmVhdGVQcml2YXRlTmFtZXNwYWNlQSgNCiAgICAgIExQU0VDVVJJVFlfQVRU
UklCVVRFUyBscFByaXZhdGVOYW1lc3BhY2VBdHRyaWJ1dGVzLA0KICAgICAgICAgIExQVk9JRCBs
cEJvdW5kYXJ5RGVzY3JpcHRvciwNCiAgICAgICAgICBMUENTVFIgbHBBbGlhc1ByZWZpeA0KICAg
ICk7DQoNCg0KDQoNCg0KI2xpbmUgNzcwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpIQU5ETEUNCl9fc3RkY2FsbA0KT3BlblByaXZhdGVOYW1l
c3BhY2VBKA0KICAgICAgICAgIExQVk9JRCBscEJvdW5kYXJ5RGVzY3JpcHRvciwNCiAgICAgICAg
ICBMUENTVFIgbHBBbGlhc1ByZWZpeA0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNzcyMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZUJvdW5kYXJ5RGVzY3JpcHRvckEoDQogICAgICBM
UENTVFIgTmFtZSwNCiAgICAgIFVMT05HIEZsYWdzDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA3
NzQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA3NzQyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRkSW50
ZWdyaXR5TGFiZWxUb0JvdW5kYXJ5RGVzY3JpcHRvcigNCiAgICAgIEhBTkRMRSAqIEJvdW5kYXJ5
RGVzY3JpcHRvciwNCiAgICAgIFBTSUQgSW50ZWdyaXR5TGFiZWwNCiAgICApOw0KDQojbGluZSA3
NzU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUg
Nzc1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
SFdfUFJPRklMRV9JTkZPQSB7DQogICAgRFdPUkQgIGR3RG9ja0luZm87DQogICAgQ0hBUiAgIHN6
SHdQcm9maWxlR3VpZFszOV07DQogICAgQ0hBUiAgIHN6SHdQcm9maWxlTmFtZVs4MF07DQp9IEhX
X1BST0ZJTEVfSU5GT0EsICpMUEhXX1BST0ZJTEVfSU5GT0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdI
V19QUk9GSUxFX0lORk9XIHsNCiAgICBEV09SRCAgZHdEb2NrSW5mbzsNCiAgICBXQ0hBUiAgc3pI
d1Byb2ZpbGVHdWlkWzM5XTsNCiAgICBXQ0hBUiAgc3pId1Byb2ZpbGVOYW1lWzgwXTsNCn0gSFdf
UFJPRklMRV9JTkZPVywgKkxQSFdfUFJPRklMRV9JTkZPVzsNCg0KdHlwZWRlZiBIV19QUk9GSUxF
X0lORk9XIEhXX1BST0ZJTEVfSU5GTzsNCnR5cGVkZWYgTFBIV19QUk9GSUxFX0lORk9XIExQSFdf
UFJPRklMRV9JTkZPOw0KDQoNCg0KI2xpbmUgNzc5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q3VycmVudEh3
UHJvZmlsZUEgKA0KICAgICAgTFBIV19QUk9GSUxFX0lORk9BICBscEh3UHJvZmlsZUluZm8NCiAg
ICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEN1cnJlbnRI
d1Byb2ZpbGVXICgNCiAgICAgIExQSFdfUFJPRklMRV9JTkZPVyAgbHBId1Byb2ZpbGVJbmZvDQog
ICAgKTsNCg0KDQoNCg0KI2xpbmUgNzgxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5l
IDc4MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDc4MTYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseSBvciBHYW1pbmcgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNClZlcmlmeVZlcnNpb25JbmZvQSgNCiAgICAgIExQT1NWRVJTSU9OSU5GT0VY
QSBscFZlcnNpb25JbmZvcm1hdGlvbiwNCiAgICAgICAgIERXT1JEIGR3VHlwZU1hc2ssDQogICAg
ICAgICBEV09SRExPTkcgZHdsQ29uZGl0aW9uTWFzaw0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVmVyaWZ5VmVyc2lvbkluZm9XKA0KICAgICAgTFBPU1ZF
UlNJT05JTkZPRVhXIGxwVmVyc2lvbkluZm9ybWF0aW9uLA0KICAgICAgICAgRFdPUkQgZHdUeXBl
TWFzaywNCiAgICAgICAgIERXT1JETE9ORyBkd2xDb25kaXRpb25NYXNrDQogICAgKTsNCg0KDQoN
Cg0KI2xpbmUgNzg0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgNzg0NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KI2xpbmUg
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5lcnJvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQojbGluZSAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5lcnJvci5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0NDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHdp
bmVycm9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMjkwNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZXJyb3IuaCIN
Cg0KDQoNCmNvbnN0ZXhwcg0KI2xpbmUgMjkwNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZXJyb3Iu
aCINCl9fZm9yY2VpbmxpbmUgICBIUkVTVUxUIEhSRVNVTFRfRlJPTV9XSU4zMih1bnNpZ25lZCBs
b25nIHgpIHsgcmV0dXJuIChIUkVTVUxUKSh4KSA8PSAwID8gKEhSRVNVTFQpKHgpIDogKEhSRVNV
TFQpICgoKHgpICYgMHgwMDAwRkZGRikgfCAoNyA8PCAxNikgfCAweDgwMDAwMDAwKTt9DQoNCg0K
I2xpbmUgMjkwNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZXJyb3IuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAyOTEwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3aW5lcnJvci5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjkyODcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcd2luZXJyb3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCiANCiANCiANCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MDAxNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFx3aW5lcnJvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjI3
NjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxcd2luZXJyb3IuaCINCiNsaW5lIDc4NTEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZXpvbmVhcGkuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRpbWV6
b25lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx0aW1lem9uZWFwaS5oIg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRp
b24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgX1RJTUVfWk9ORV9JTkZPUk1BVElPTiB7DQogICAgTE9ORyBCaWFzOw0K
ICAgIFdDSEFSIFN0YW5kYXJkTmFtZVsgMzIgXTsNCiAgICBTWVNURU1USU1FIFN0YW5kYXJkRGF0
ZTsNCiAgICBMT05HIFN0YW5kYXJkQmlhczsNCiAgICBXQ0hBUiBEYXlsaWdodE5hbWVbIDMyIF07
DQogICAgU1lTVEVNVElNRSBEYXlsaWdodERhdGU7DQogICAgTE9ORyBEYXlsaWdodEJpYXM7DQp9
IFRJTUVfWk9ORV9JTkZPUk1BVElPTiwgKlBUSU1FX1pPTkVfSU5GT1JNQVRJT04sICpMUFRJTUVf
Wk9ORV9JTkZPUk1BVElPTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RJTUVfRFlOQU1JQ19aT05FX0lO
Rk9STUFUSU9OIHsNCiAgICBMT05HIEJpYXM7DQogICAgV0NIQVIgU3RhbmRhcmROYW1lWyAzMiBd
Ow0KICAgIFNZU1RFTVRJTUUgU3RhbmRhcmREYXRlOw0KICAgIExPTkcgU3RhbmRhcmRCaWFzOw0K
ICAgIFdDSEFSIERheWxpZ2h0TmFtZVsgMzIgXTsNCiAgICBTWVNURU1USU1FIERheWxpZ2h0RGF0
ZTsNCiAgICBMT05HIERheWxpZ2h0QmlhczsNCiAgICBXQ0hBUiBUaW1lWm9uZUtleU5hbWVbIDEy
OCBdOw0KICAgIEJPT0xFQU4gRHluYW1pY0RheWxpZ2h0VGltZURpc2FibGVkOw0KfSBEWU5BTUlD
X1RJTUVfWk9ORV9JTkZPUk1BVElPTiwgKlBEWU5BTUlDX1RJTUVfWk9ORV9JTkZPUk1BVElPTjsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNClN5c3RlbVRpbWVU
b1R6U3BlY2lmaWNMb2NhbFRpbWUoDQogICAgICBjb25zdCBUSU1FX1pPTkVfSU5GT1JNQVRJT04q
IGxwVGltZVpvbmVJbmZvcm1hdGlvbiwNCiAgICAgIGNvbnN0IFNZU1RFTVRJTUUqIGxwVW5pdmVy
c2FsVGltZSwNCiAgICAgIExQU1lTVEVNVElNRSBscExvY2FsVGltZQ0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNClR6U3BlY2lmaWNMb2NhbFRp
bWVUb1N5c3RlbVRpbWUoDQogICAgICBjb25zdCBUSU1FX1pPTkVfSU5GT1JNQVRJT04qIGxwVGlt
ZVpvbmVJbmZvcm1hdGlvbiwNCiAgICAgIGNvbnN0IFNZU1RFTVRJTUUqIGxwTG9jYWxUaW1lLA0K
ICAgICAgTFBTWVNURU1USU1FIGxwVW5pdmVyc2FsVGltZQ0KICAgICk7DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNCkZpbGVUaW1lVG9TeXN0ZW1UaW1lKA0K
ICAgICAgY29uc3QgRklMRVRJTUUqIGxwRmlsZVRpbWUsDQogICAgICBMUFNZU1RFTVRJTUUgbHBT
eXN0ZW1UaW1lDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9f
c3RkY2FsbA0KU3lzdGVtVGltZVRvRmlsZVRpbWUoDQogICAgICBjb25zdCBTWVNURU1USU1FKiBs
cFN5c3RlbVRpbWUsDQogICAgICBMUEZJTEVUSU1FIGxwRmlsZVRpbWUNCiAgICApOw0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0VGltZVpvbmVJbmZv
cm1hdGlvbigNCiAgICAgIExQVElNRV9aT05FX0lORk9STUFUSU9OIGxwVGltZVpvbmVJbmZvcm1h
dGlvbg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
ClNldFRpbWVab25lSW5mb3JtYXRpb24oDQogICAgICBjb25zdCBUSU1FX1pPTkVfSU5GT1JNQVRJ
T04qIGxwVGltZVpvbmVJbmZvcm1hdGlvbg0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXREeW5hbWljVGltZVpvbmVJbmZvcm1hdGlvbigN
CiAgICAgIGNvbnN0IERZTkFNSUNfVElNRV9aT05FX0lORk9STUFUSU9OKiBscFRpbWVab25lSW5m
b3JtYXRpb24NCiAgICApOw0KDQoNCiNsaW5lIDEyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRpbWV6b25lYXBp
LmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkRXT1JEDQpfX3N0ZGNhbGwNCkdl
dER5bmFtaWNUaW1lWm9uZUluZm9ybWF0aW9uKA0KICAgICAgUERZTkFNSUNfVElNRV9aT05FX0lO
Rk9STUFUSU9OIHBUaW1lWm9uZUluZm9ybWF0aW9uDQogICAgKTsNCg0KDQojbGluZSAxNDAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx0aW1lem9uZWFwaS5oIg0KDQoNCg0KIA0KQk9PTA0KX19zdGRjYWxsDQpHZXRU
aW1lWm9uZUluZm9ybWF0aW9uRm9yWWVhcigNCiAgICAgIFVTSE9SVCB3WWVhciwNCiAgICAgIFBE
WU5BTUlDX1RJTUVfWk9ORV9JTkZPUk1BVElPTiBwZHR6aSwNCiAgICAgIExQVElNRV9aT05FX0lO
Rk9STUFUSU9OIHB0emkNCiAgICApOw0KDQoNCiNsaW5lIDE1NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRpbWV6
b25lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAy
MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx0aW1lem9uZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx0aW1lem9u
ZWFwaS5oIg0KDQojbGluZSAyMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx0aW1lem9uZWFwaS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQoNCg0KfQ0KI2xpbmUgMjM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZXpvbmVh
cGkuaCINCg0KI2xpbmUgMjQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZXpvbmVhcGkuaCINCg0KI2xpbmUg
Nzg1MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KU2V0U3lzdGVtUG93ZXJTdGF0ZSgNCiAgICAgIEJPT0wgZlN1c3Bl
bmQsDQogICAgICBCT09MIGZGb3JjZQ0KICAgICk7DQoNCiNsaW5lIDc4NzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQoNCiNsaW5lIDc4NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiAgRGVza3RvcCBvciBQQyBGYW1pbHkNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX1NZU1RFTV9QT1dFUl9TVEFUVVMgew0KICAgIEJZVEUgQUNMaW5lU3RhdHVzOw0KICAg
IEJZVEUgQmF0dGVyeUZsYWc7DQogICAgQllURSBCYXR0ZXJ5TGlmZVBlcmNlbnQ7DQogICAgQllU
RSBTeXN0ZW1TdGF0dXNGbGFnOw0KICAgIERXT1JEIEJhdHRlcnlMaWZlVGltZTsNCiAgICBEV09S
RCBCYXR0ZXJ5RnVsbExpZmVUaW1lOw0KfSAgIFNZU1RFTV9QT1dFUl9TVEFUVVMsICpMUFNZU1RF
TV9QT1dFUl9TVEFUVVM7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpHZXRTeXN0ZW1Qb3dlclN0YXR1cygNCiAgICAgIExQU1lTVEVNX1BPV0VSX1NUQVRVUyBscFN5
c3RlbVBvd2VyU3RhdHVzDQogICAgKTsNCg0KI2xpbmUgNzkyNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCg0KI2xpbmUgNzkyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpNYXBVc2VyUGh5c2ljYWxQYWdl
c1NjYXR0ZXIoDQogICAgICBQVk9JRCAqVmlydHVhbEFkZHJlc3NlcywNCiAgICAgIFVMT05HX1BU
UiBOdW1iZXJPZlBhZ2VzLA0KICAgICAgUFVMT05HX1BUUiBQYWdlQXJyYXkNCiAgICApOw0KDQoj
bGluZSA3OTQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CiANCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVKb2JPYmplY3RBKA0KICAgICAgTFBTRUNVUklU
WV9BVFRSSUJVVEVTIGxwSm9iQXR0cmlidXRlcywNCiAgICAgIExQQ1NUUiBscE5hbWUNCiAgICAp
Ow0KDQoNCg0KDQoNCiNsaW5lIDc5NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KIA0KSEFORExFDQpfX3N0ZGNhbGwNCk9wZW5Kb2JPYmplY3RBKA0K
ICAgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgQk9PTCBiSW5oZXJpdEhhbmRsZSwN
CiAgICAgIExQQ1NUUiBscE5hbWUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDc5ODEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDc5ODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDcmVhdGVKb2JTZXQgKA0K
ICAgICAgVUxPTkcgTnVtSm9iLA0KICAgICAgUEpPQl9TRVRfQVJSQVkgVXNlckpvYlNldCwNCiAg
ICAgIFVMT05HIEZsYWdzKTsNCg0KI2xpbmUgNzk5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEFORExFDQpfX3N0
ZGNhbGwNCkZpbmRGaXJzdFZvbHVtZUEoDQogICAgICBMUFNUUiBscHN6Vm9sdW1lTmFtZSwNCiAg
ICAgIERXT1JEIGNjaEJ1ZmZlckxlbmd0aA0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5kTmV4dFZvbHVtZUEoDQogICAgICBIQU5ETEUg
aEZpbmRWb2x1bWUsDQogICAgICBMUFNUUiBscHN6Vm9sdW1lTmFtZSwNCiAgICAgICAgIERXT1JE
IGNjaEJ1ZmZlckxlbmd0aA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDgwMjYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEFORExFDQpfX3N0ZGNhbGwNCkZp
bmRGaXJzdFZvbHVtZU1vdW50UG9pbnRBKA0KICAgICAgTFBDU1RSIGxwc3pSb290UGF0aE5hbWUs
DQogICAgICBMUFNUUiBscHN6Vm9sdW1lTW91bnRQb2ludCwNCiAgICAgIERXT1JEIGNjaEJ1ZmZl
ckxlbmd0aA0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxs
DQpGaW5kRmlyc3RWb2x1bWVNb3VudFBvaW50VygNCiAgICAgIExQQ1dTVFIgbHBzelJvb3RQYXRo
TmFtZSwNCiAgICAgIExQV1NUUiBscHN6Vm9sdW1lTW91bnRQb2ludCwNCiAgICAgIERXT1JEIGNj
aEJ1ZmZlckxlbmd0aA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDgwNTIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5k
TmV4dFZvbHVtZU1vdW50UG9pbnRBKA0KICAgICAgSEFORExFIGhGaW5kVm9sdW1lTW91bnRQb2lu
dCwNCiAgICAgIExQU1RSIGxwc3pWb2x1bWVNb3VudFBvaW50LA0KICAgICAgRFdPUkQgY2NoQnVm
ZmVyTGVuZ3RoDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpGaW5kTmV4dFZvbHVtZU1vdW50UG9pbnRXKA0KICAgICAgSEFORExFIGhGaW5kVm9sdW1lTW91
bnRQb2ludCwNCiAgICAgIExQV1NUUiBscHN6Vm9sdW1lTW91bnRQb2ludCwNCiAgICAgIERXT1JE
IGNjaEJ1ZmZlckxlbmd0aA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDgwNzQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpG
aW5kVm9sdW1lTW91bnRQb2ludENsb3NlKA0KICAgICAgSEFORExFIGhGaW5kVm9sdW1lTW91bnRQ
b2ludA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpT
ZXRWb2x1bWVNb3VudFBvaW50QSgNCiAgICAgIExQQ1NUUiBscHN6Vm9sdW1lTW91bnRQb2ludCwN
CiAgICAgIExQQ1NUUiBscHN6Vm9sdW1lTmFtZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Vm9sdW1lTW91bnRQb2ludFcoDQogICAgICBMUENXU1RS
IGxwc3pWb2x1bWVNb3VudFBvaW50LA0KICAgICAgTFBDV1NUUiBscHN6Vm9sdW1lTmFtZQ0KICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDgxMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5l
IDgxMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlVm9sdW1lTW91bnRQb2lu
dEEoDQogICAgICBMUENTVFIgbHBzelZvbHVtZU1vdW50UG9pbnQNCiAgICApOw0KDQoNCg0KDQoj
bGluZSA4MTE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRWb2x1bWVOYW1l
Rm9yVm9sdW1lTW91bnRQb2ludEEoDQogICAgICBMUENTVFIgbHBzelZvbHVtZU1vdW50UG9pbnQs
DQogICAgICBMUFNUUiBscHN6Vm9sdW1lTmFtZSwNCiAgICAgIERXT1JEIGNjaEJ1ZmZlckxlbmd0
aA0KKTsNCg0KI2xpbmUgODEzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZh
bWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KR2V0Vm9sdW1lUGF0aE5hbWVBKA0KICAgICAgTFBDU1RSIGxwc3pGaWxlTmFtZSwN
CiAgICAgIExQU1RSIGxwc3pWb2x1bWVQYXRoTmFtZSwNCiAgICAgIERXT1JEIGNjaEJ1ZmZlckxl
bmd0aA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDgxNTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA4MTU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5o
Ig0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Vm9sdW1lUGF0
aE5hbWVzRm9yVm9sdW1lTmFtZUEoDQogICAgICAgTFBDU1RSIGxwc3pWb2x1bWVOYW1lLA0KICAg
ICAgICAgTFBDSCBscHN6Vm9sdW1lUGF0aE5hbWVzLA0KICAgICAgIERXT1JEIGNjaEJ1ZmZlckxl
bmd0aCwNCiAgICAgIFBEV09SRCBscGNjaFJldHVybkxlbmd0aA0KICAgICk7DQoNCg0KDQoNCg0K
I2xpbmUgODE4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0FDVENUWEEgew0KICAgIFVMT05HICAgICAgIGNiU2l6ZTsN
CiAgICBEV09SRCAgICAgICBkd0ZsYWdzOw0KICAgIExQQ1NUUiAgICAgIGxwU291cmNlOw0KICAg
IFVTSE9SVCAgICAgIHdQcm9jZXNzb3JBcmNoaXRlY3R1cmU7DQogICAgTEFOR0lEICAgICAgd0xh
bmdJZDsNCiAgICBMUENTVFIgICAgICBscEFzc2VtYmx5RGlyZWN0b3J5Ow0KICAgIExQQ1NUUiAg
ICAgIGxwUmVzb3VyY2VOYW1lOw0KICAgIExQQ1NUUiAgICAgIGxwQXBwbGljYXRpb25OYW1lOw0K
ICAgIEhNT0RVTEUgICAgIGhNb2R1bGU7DQp9IEFDVENUWEEsICpQQUNUQ1RYQTsNCnR5cGVkZWYg
c3RydWN0IHRhZ0FDVENUWFcgew0KICAgIFVMT05HICAgICAgIGNiU2l6ZTsNCiAgICBEV09SRCAg
ICAgICBkd0ZsYWdzOw0KICAgIExQQ1dTVFIgICAgIGxwU291cmNlOw0KICAgIFVTSE9SVCAgICAg
IHdQcm9jZXNzb3JBcmNoaXRlY3R1cmU7DQogICAgTEFOR0lEICAgICAgd0xhbmdJZDsNCiAgICBM
UENXU1RSICAgICBscEFzc2VtYmx5RGlyZWN0b3J5Ow0KICAgIExQQ1dTVFIgICAgIGxwUmVzb3Vy
Y2VOYW1lOw0KICAgIExQQ1dTVFIgICAgIGxwQXBwbGljYXRpb25OYW1lOw0KICAgIEhNT0RVTEUg
ICAgIGhNb2R1bGU7DQp9IEFDVENUWFcsICpQQUNUQ1RYVzsNCg0KdHlwZWRlZiBBQ1RDVFhXIEFD
VENUWDsNCnR5cGVkZWYgUEFDVENUWFcgUEFDVENUWDsNCg0KDQoNCiNsaW5lIDgyMjEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQoNCnR5cGVkZWYgY29uc3QgQUNUQ1RYQSAqUENBQ1RDVFhBOw0K
dHlwZWRlZiBjb25zdCBBQ1RDVFhXICpQQ0FDVENUWFc7DQoNCnR5cGVkZWYgUENBQ1RDVFhXIFBD
QUNUQ1RYOw0KDQoNCiNsaW5lIDgyMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpDcmVhdGVBY3RDdHhBKA0K
ICAgICAgUENBQ1RDVFhBIHBBY3RDdHgNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
QU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlQWN0Q3R4VygNCiAgICAgIFBDQUNUQ1RYVyBwQWN0Q3R4
DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgODI0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCkFkZFJlZkFjdEN0eCgNCiAg
ICAgIEhBTkRMRSBoQWN0Q3R4DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZv
aWQNCl9fc3RkY2FsbA0KUmVsZWFzZUFjdEN0eCgNCiAgICAgIEhBTkRMRSBoQWN0Q3R4DQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClpvbWJpZnlBY3RD
dHgoDQogICAgICBIQU5ETEUgaEFjdEN0eA0KICAgICk7DQoNCg0KIA0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFjdGl2YXRlQWN0Q3R4KA0KICAgICAgSEFORExFIGhB
Y3RDdHgsDQogICAgICAgIFVMT05HX1BUUiAqbHBDb29raWUNCiAgICApOw0KDQoNCg0KDQogDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGVhY3RpdmF0ZUFjdEN0eCgN
CiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBVTE9OR19QVFIgdWxDb29raWUNCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q3VycmVudEFjdEN0
eCgNCiAgICAgSEFORExFICpscGhBY3RDdHgpOw0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0FDVENU
WF9TRUNUSU9OX0tFWUVEX0RBVEFfMjYwMCB7DQogICAgVUxPTkcgY2JTaXplOw0KICAgIFVMT05H
IHVsRGF0YUZvcm1hdFZlcnNpb247DQogICAgUFZPSUQgbHBEYXRhOw0KICAgIFVMT05HIHVsTGVu
Z3RoOw0KICAgIFBWT0lEIGxwU2VjdGlvbkdsb2JhbERhdGE7DQogICAgVUxPTkcgdWxTZWN0aW9u
R2xvYmFsRGF0YUxlbmd0aDsNCiAgICBQVk9JRCBscFNlY3Rpb25CYXNlOw0KICAgIFVMT05HIHVs
U2VjdGlvblRvdGFsTGVuZ3RoOw0KICAgIEhBTkRMRSBoQWN0Q3R4Ow0KICAgIFVMT05HIHVsQXNz
ZW1ibHlSb3N0ZXJJbmRleDsNCn0gQUNUQ1RYX1NFQ1RJT05fS0VZRURfREFUQV8yNjAwLCAqUEFD
VENUWF9TRUNUSU9OX0tFWUVEX0RBVEFfMjYwMDsNCnR5cGVkZWYgY29uc3QgQUNUQ1RYX1NFQ1RJ
T05fS0VZRURfREFUQV8yNjAwICogUENBQ1RDVFhfU0VDVElPTl9LRVlFRF9EQVRBXzI2MDA7DQoN
CnR5cGVkZWYgc3RydWN0IHRhZ0FDVENUWF9TRUNUSU9OX0tFWUVEX0RBVEFfQVNTRU1CTFlfTUVU
QURBVEEgew0KICAgIFBWT0lEIGxwSW5mb3JtYXRpb247DQogICAgUFZPSUQgbHBTZWN0aW9uQmFz
ZTsNCiAgICBVTE9ORyB1bFNlY3Rpb25MZW5ndGg7DQogICAgUFZPSUQgbHBTZWN0aW9uR2xvYmFs
RGF0YUJhc2U7DQogICAgVUxPTkcgdWxTZWN0aW9uR2xvYmFsRGF0YUxlbmd0aDsNCn0gQUNUQ1RY
X1NFQ1RJT05fS0VZRURfREFUQV9BU1NFTUJMWV9NRVRBREFUQSwgKlBBQ1RDVFhfU0VDVElPTl9L
RVlFRF9EQVRBX0FTU0VNQkxZX01FVEFEQVRBOw0KdHlwZWRlZiBjb25zdCBBQ1RDVFhfU0VDVElP
Tl9LRVlFRF9EQVRBX0FTU0VNQkxZX01FVEFEQVRBICpQQ0FDVENUWF9TRUNUSU9OX0tFWUVEX0RB
VEFfQVNTRU1CTFlfTUVUQURBVEE7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0FDVENUWF9TRUNUSU9O
X0tFWUVEX0RBVEEgew0KICAgIFVMT05HIGNiU2l6ZTsNCiAgICBVTE9ORyB1bERhdGFGb3JtYXRW
ZXJzaW9uOw0KICAgIFBWT0lEIGxwRGF0YTsNCiAgICBVTE9ORyB1bExlbmd0aDsNCiAgICBQVk9J
RCBscFNlY3Rpb25HbG9iYWxEYXRhOw0KICAgIFVMT05HIHVsU2VjdGlvbkdsb2JhbERhdGFMZW5n
dGg7DQogICAgUFZPSUQgbHBTZWN0aW9uQmFzZTsNCiAgICBVTE9ORyB1bFNlY3Rpb25Ub3RhbExl
bmd0aDsNCiAgICBIQU5ETEUgaEFjdEN0eDsNCiAgICBVTE9ORyB1bEFzc2VtYmx5Um9zdGVySW5k
ZXg7DQoNCiAgICBVTE9ORyB1bEZsYWdzOw0KICAgIEFDVENUWF9TRUNUSU9OX0tFWUVEX0RBVEFf
QVNTRU1CTFlfTUVUQURBVEEgQXNzZW1ibHlNZXRhZGF0YTsNCn0gQUNUQ1RYX1NFQ1RJT05fS0VZ
RURfREFUQSwgKlBBQ1RDVFhfU0VDVElPTl9LRVlFRF9EQVRBOw0KdHlwZWRlZiBjb25zdCBBQ1RD
VFhfU0VDVElPTl9LRVlFRF9EQVRBICogUENBQ1RDVFhfU0VDVElPTl9LRVlFRF9EQVRBOw0KDQoN
Cg0KDQoNCg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRmlu
ZEFjdEN0eFNlY3Rpb25TdHJpbmdBKA0KICAgICAgICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAg
IGNvbnN0IEdVSUQgKmxwRXh0ZW5zaW9uR3VpZCwNCiAgICAgICAgICAgIFVMT05HIHVsU2VjdGlv
bklkLA0KICAgICAgICAgICAgTFBDU1RSIGxwU3RyaW5nVG9GaW5kLA0KICAgICAgICAgICBQQUNU
Q1RYX1NFQ1RJT05fS0VZRURfREFUQSBSZXR1cm5lZERhdGENCiAgICApOw0KIA0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkZpbmRBY3RDdHhTZWN0aW9uU3RyaW5nVygN
CiAgICAgICAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBjb25zdCBHVUlEICpscEV4dGVuc2lv
bkd1aWQsDQogICAgICAgICAgICBVTE9ORyB1bFNlY3Rpb25JZCwNCiAgICAgICAgICAgIExQQ1dT
VFIgbHBTdHJpbmdUb0ZpbmQsDQogICAgICAgICAgIFBBQ1RDVFhfU0VDVElPTl9LRVlFRF9EQVRB
IFJldHVybmVkRGF0YQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDgzNzQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGaW5k
QWN0Q3R4U2VjdGlvbkd1aWQoDQogICAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgY29u
c3QgR1VJRCAqbHBFeHRlbnNpb25HdWlkLA0KICAgICAgICAgICAgVUxPTkcgdWxTZWN0aW9uSWQs
DQogICAgICAgIGNvbnN0IEdVSUQgKmxwR3VpZFRvRmluZCwNCiAgICAgICAgICAgUEFDVENUWF9T
RUNUSU9OX0tFWUVEX0RBVEEgUmV0dXJuZWREYXRhDQogICAgKTsNCg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBfQUNUSVZBVElPTl9DT05URVhUX0JBU0lDX0lORk9STUFUSU9OIHsNCiAgICBIQU5E
TEUgIGhBY3RDdHg7DQogICAgRFdPUkQgICBkd0ZsYWdzOw0KfSBBQ1RJVkFUSU9OX0NPTlRFWFRf
QkFTSUNfSU5GT1JNQVRJT04sICpQQUNUSVZBVElPTl9DT05URVhUX0JBU0lDX0lORk9STUFUSU9O
Ow0KDQp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQUNUSVZBVElPTl9DT05URVhUX0JBU0lDX0lORk9S
TUFUSU9OICpQQ0FDVElWQVRJT05fQ09OVEVYVF9CQVNJQ19JTkZPUk1BVElPTjsNCg0KDQoNCiNs
aW5lIDg0MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojbGluZSA4NDAxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClF1ZXJ5QWN0Q3R4VygNCiAgICAgICAgICAgRFdPUkQgZHdGbGFncywN
CiAgICAgICAgICAgSEFORExFIGhBY3RDdHgsDQogICAgICAgUFZPSUQgcHZTdWJJbnN0YW5jZSwN
CiAgICAgICAgICAgVUxPTkcgdWxJbmZvQ2xhc3MsDQogICAgICBQVk9JRCBwdkJ1ZmZlciwNCiAg
ICAgICAgICAgU0laRV9UIGNiQnVmZmVyLA0KICAgICAgU0laRV9UICpwY2JXcml0dGVuT3JSZXF1
aXJlZA0KICAgICk7DQoNCnR5cGVkZWYgICBCT09MIChfX3N0ZGNhbGwgKiBQUVVFUllBQ1RDVFhX
X0ZVTkMpKA0KICAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgICBIQU5ETEUgaEFj
dEN0eCwNCiAgICAgICBQVk9JRCBwdlN1Ykluc3RhbmNlLA0KICAgICAgICAgICBVTE9ORyB1bElu
Zm9DbGFzcywNCiAgICAgIFBWT0lEIHB2QnVmZmVyLA0KICAgICAgICAgICBTSVpFX1QgY2JCdWZm
ZXIsDQogICAgICBTSVpFX1QgKnBjYldyaXR0ZW5PclJlcXVpcmVkDQogICAgKTsNCg0KI2xpbmUg
ODQ2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgODQ2NCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxs
DQpXVFNHZXRBY3RpdmVDb25zb2xlU2Vzc2lvbklkKA0KICAgIHZvaWQNCiAgICApOw0KDQojbGlu
ZSA4NDgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDg0OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCldPUkQNCl9fc3RkY2FsbA0KR2V0QWN0aXZlUHJvY2Vzc29yR3Jv
dXBDb3VudCgNCiAgICB2b2lkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpXT1JE
DQpfX3N0ZGNhbGwNCkdldE1heGltdW1Qcm9jZXNzb3JHcm91cENvdW50KA0KICAgIHZvaWQNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldEFjdGl2
ZVByb2Nlc3NvckNvdW50KA0KICAgICAgV09SRCBHcm91cE51bWJlcg0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0TWF4aW11bVByb2Nlc3NvckNv
dW50KA0KICAgICAgV09SRCBHcm91cE51bWJlcg0KICAgICk7DQoNCiNsaW5lIDg1MzAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkdldE51bWFQcm9jZXNzb3JOb2RlKA0KICAgICAgIFVDSEFSIFByb2Nlc3Nv
ciwNCiAgICAgIFBVQ0hBUiBOb2RlTnVtYmVyDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXROdW1hTm9kZU51bWJlckZyb21IYW5kbGUoDQog
ICAgICAgSEFORExFIGhGaWxlLA0KICAgICAgUFVTSE9SVCBOb2RlTnVtYmVyDQogICAgKTsNCg0K
I2xpbmUgODU1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXROdW1hUHJvY2Vzc29yTm9kZUV4KA0KICAgICAg
IFBQUk9DRVNTT1JfTlVNQkVSIFByb2Nlc3NvciwNCiAgICAgIFBVU0hPUlQgTm9kZU51bWJlcg0K
ICAgICk7DQoNCiNsaW5lIDg1NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXROdW1hTm9kZVByb2Nlc3Nvck1hc2so
DQogICAgICAgVUNIQVIgTm9kZSwNCiAgICAgIFBVTE9OR0xPTkcgUHJvY2Vzc29yTWFzaw0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXROdW1hQXZh
aWxhYmxlTWVtb3J5Tm9kZSgNCiAgICAgICBVQ0hBUiBOb2RlLA0KICAgICAgUFVMT05HTE9ORyBB
dmFpbGFibGVCeXRlcw0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KR2V0TnVtYUF2YWlsYWJsZU1lbW9yeU5vZGVFeCgNCiAgICAgICBVU0hPUlQg
Tm9kZSwNCiAgICAgIFBVTE9OR0xPTkcgQXZhaWxhYmxlQnl0ZXMNCiAgICApOw0KDQojbGluZSA4
NTk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkdldE51bWFQcm94aW1pdHlOb2RlKA0KICAgICAgIFVMT05HIFBy
b3hpbWl0eUlkLA0KICAgICAgUFVDSEFSIE5vZGVOdW1iZXINCiAgICApOw0KDQojbGluZSA4NjA2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA4NjA4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
YmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQp0eXBlZGVmIERXT1JEIChfX3N0ZGNhbGwg
KkFQUExJQ0FUSU9OX1JFQ09WRVJZX0NBTExCQUNLKShQVk9JRCBwdlBhcmFtZXRlcik7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgODY0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpSZWdpc3RlckFwcGxpY2F0aW9uUmVjb3ZlcnlDYWxsYmFj
aygNCiAgICAgICBBUFBMSUNBVElPTl9SRUNPVkVSWV9DQUxMQkFDSyBwUmVjb3ZleUNhbGxiYWNr
LA0KICAgICAgIFBWT0lEIHB2UGFyYW1ldGVyLA0KICAgICAgRFdPUkQgZHdQaW5nSW50ZXJ2YWws
DQogICAgICBEV09SRCBkd0ZsYWdzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
UkVTVUxUDQpfX3N0ZGNhbGwNClVucmVnaXN0ZXJBcHBsaWNhdGlvblJlY292ZXJ5Q2FsbGJhY2so
dm9pZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpSZWdp
c3RlckFwcGxpY2F0aW9uUmVzdGFydCgNCiAgICAgIFBDV1NUUiBwd3pDb21tYW5kbGluZSwNCiAg
ICAgIERXT1JEIGR3RmxhZ3MNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhSRVNV
TFQNCl9fc3RkY2FsbA0KVW5yZWdpc3RlckFwcGxpY2F0aW9uUmVzdGFydCh2b2lkKTsNCg0KI2xp
bmUgODY4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgODY4NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpHZXRBcHBsaWNhdGlvblJlY292ZXJ5Q2FsbGJhY2soDQog
ICAgICAgSEFORExFIGhQcm9jZXNzLA0KICAgICAgQVBQTElDQVRJT05fUkVDT1ZFUllfQ0FMTEJB
Q0sqIHBSZWNvdmVyeUNhbGxiYWNrLA0KICAgICBQVk9JRCogcHB2UGFyYW1ldGVyLA0KICAgICAg
UERXT1JEIHBkd1BpbmdJbnRlcnZhbCwNCiAgICAgIFBEV09SRCBwZHdGbGFncw0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpHZXRBcHBsaWNhdGlv
blJlc3RhcnRTZXR0aW5ncygNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIFBXU1RSIHB3
ekNvbW1hbmRsaW5lLA0KICAgICAgUERXT1JEIHBjY2hTaXplLA0KICAgICAgUERXT1JEIHBkd0Zs
YWdzDQogICAgKTsNCg0KI2xpbmUgODcxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xp
bmUgODcxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KSFJFU1VMVA0KX19zdGRjYWxsDQpBcHBsaWNhdGlvblJlY292ZXJ5SW5Qcm9ncmVzcygNCiAg
ICAgIFBCT09MIHBiQ2FuY2VsbGVkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2
b2lkDQpfX3N0ZGNhbGwNCkFwcGxpY2F0aW9uUmVjb3ZlcnlGaW5pc2hlZCgNCiAgICAgIEJPT0wg
YlN1Y2Nlc3MNCiAgICApOw0KDQojbGluZSA4NzM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0K
DQojbGluZSA4NzQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWls
eSBvciBHYW1lcyBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCBfRklMRV9CQVNJQ19JTkZPIHsN
CiAgICBMQVJHRV9JTlRFR0VSIENyZWF0aW9uVGltZTsNCiAgICBMQVJHRV9JTlRFR0VSIExhc3RB
Y2Nlc3NUaW1lOw0KICAgIExBUkdFX0lOVEVHRVIgTGFzdFdyaXRlVGltZTsNCiAgICBMQVJHRV9J
TlRFR0VSIENoYW5nZVRpbWU7DQogICAgRFdPUkQgRmlsZUF0dHJpYnV0ZXM7DQp9IEZJTEVfQkFT
SUNfSU5GTywgKlBGSUxFX0JBU0lDX0lORk87DQoNCnR5cGVkZWYgc3RydWN0IF9GSUxFX1NUQU5E
QVJEX0lORk8gew0KICAgIExBUkdFX0lOVEVHRVIgQWxsb2NhdGlvblNpemU7DQogICAgTEFSR0Vf
SU5URUdFUiBFbmRPZkZpbGU7DQogICAgRFdPUkQgTnVtYmVyT2ZMaW5rczsNCiAgICBCT09MRUFO
IERlbGV0ZVBlbmRpbmc7DQogICAgQk9PTEVBTiBEaXJlY3Rvcnk7DQp9IEZJTEVfU1RBTkRBUkRf
SU5GTywgKlBGSUxFX1NUQU5EQVJEX0lORk87DQoNCnR5cGVkZWYgc3RydWN0IF9GSUxFX05BTUVf
SU5GTyB7DQogICAgRFdPUkQgRmlsZU5hbWVMZW5ndGg7DQogICAgV0NIQVIgRmlsZU5hbWVbMV07
DQp9IEZJTEVfTkFNRV9JTkZPLCAqUEZJTEVfTkFNRV9JTkZPOw0KDQp0eXBlZGVmIHN0cnVjdCBf
RklMRV9DQVNFX1NFTlNJVElWRV9JTkZPIHsNCiAgICBVTE9ORyBGbGFnczsNCn0gRklMRV9DQVNF
X1NFTlNJVElWRV9JTkZPLCAqUEZJTEVfQ0FTRV9TRU5TSVRJVkVfSU5GTzsNCg0KDQoNCg0KI2xp
bmUgODc3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCiNsaW5lIDg3ODAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9GSUxFX1JFTkFNRV9JTkZPIHsN
Cg0KICAgIHVuaW9uIHsNCiAgICAgICAgQk9PTEVBTiBSZXBsYWNlSWZFeGlzdHM7ICANCiAgICAg
ICAgRFdPUkQgRmxhZ3M7ICAgICAgICAgICAgICANCiAgICB9IDsNCg0KDQojbGluZSA4NzkwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KICAgIEhBTkRMRSBSb290RGlyZWN0b3J5Ow0KICAgIERX
T1JEIEZpbGVOYW1lTGVuZ3RoOw0KICAgIFdDSEFSIEZpbGVOYW1lWzFdOw0KfSBGSUxFX1JFTkFN
RV9JTkZPLCAqUEZJTEVfUkVOQU1FX0lORk87DQoNCnR5cGVkZWYgc3RydWN0IF9GSUxFX0FMTE9D
QVRJT05fSU5GTyB7DQogICAgTEFSR0VfSU5URUdFUiBBbGxvY2F0aW9uU2l6ZTsNCn0gRklMRV9B
TExPQ0FUSU9OX0lORk8sICpQRklMRV9BTExPQ0FUSU9OX0lORk87DQoNCnR5cGVkZWYgc3RydWN0
IF9GSUxFX0VORF9PRl9GSUxFX0lORk8gew0KICAgIExBUkdFX0lOVEVHRVIgRW5kT2ZGaWxlOw0K
fSBGSUxFX0VORF9PRl9GSUxFX0lORk8sICpQRklMRV9FTkRfT0ZfRklMRV9JTkZPOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfRklMRV9TVFJFQU1fSU5GTyB7DQogICAgRFdPUkQgTmV4dEVudHJ5T2Zmc2V0
Ow0KICAgIERXT1JEIFN0cmVhbU5hbWVMZW5ndGg7DQogICAgTEFSR0VfSU5URUdFUiBTdHJlYW1T
aXplOw0KICAgIExBUkdFX0lOVEVHRVIgU3RyZWFtQWxsb2NhdGlvblNpemU7DQogICAgV0NIQVIg
U3RyZWFtTmFtZVsxXTsNCn0gRklMRV9TVFJFQU1fSU5GTywgKlBGSUxFX1NUUkVBTV9JTkZPOw0K
DQp0eXBlZGVmIHN0cnVjdCBfRklMRV9DT01QUkVTU0lPTl9JTkZPIHsNCiAgICBMQVJHRV9JTlRF
R0VSIENvbXByZXNzZWRGaWxlU2l6ZTsNCiAgICBXT1JEIENvbXByZXNzaW9uRm9ybWF0Ow0KICAg
IFVDSEFSIENvbXByZXNzaW9uVW5pdFNoaWZ0Ow0KICAgIFVDSEFSIENodW5rU2hpZnQ7DQogICAg
VUNIQVIgQ2x1c3RlclNoaWZ0Ow0KICAgIFVDSEFSIFJlc2VydmVkWzNdOw0KfSBGSUxFX0NPTVBS
RVNTSU9OX0lORk8sICpQRklMRV9DT01QUkVTU0lPTl9JTkZPOw0KDQp0eXBlZGVmIHN0cnVjdCBf
RklMRV9BVFRSSUJVVEVfVEFHX0lORk8gew0KICAgIERXT1JEIEZpbGVBdHRyaWJ1dGVzOw0KICAg
IERXT1JEIFJlcGFyc2VUYWc7DQp9IEZJTEVfQVRUUklCVVRFX1RBR19JTkZPLCAqUEZJTEVfQVRU
UklCVVRFX1RBR19JTkZPOw0KDQp0eXBlZGVmIHN0cnVjdCBfRklMRV9ESVNQT1NJVElPTl9JTkZP
IHsNCiAgICBCT09MRUFOIERlbGV0ZUZpbGVXOw0KfSBGSUxFX0RJU1BPU0lUSU9OX0lORk8sICpQ
RklMRV9ESVNQT1NJVElPTl9JTkZPOw0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODgzOCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfRElTUE9TSVRJT05f
SU5GT19FWCB7DQogICAgRFdPUkQgRmxhZ3M7DQp9IEZJTEVfRElTUE9TSVRJT05fSU5GT19FWCwg
KlBGSUxFX0RJU1BPU0lUSU9OX0lORk9fRVg7DQojbGluZSA4ODQzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
YmFzZS5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfRklMRV9JRF9CT1RIX0RJUl9JTkZPIHsNCiAgICBE
V09SRCBOZXh0RW50cnlPZmZzZXQ7DQogICAgRFdPUkQgRmlsZUluZGV4Ow0KICAgIExBUkdFX0lO
VEVHRVIgQ3JlYXRpb25UaW1lOw0KICAgIExBUkdFX0lOVEVHRVIgTGFzdEFjY2Vzc1RpbWU7DQog
ICAgTEFSR0VfSU5URUdFUiBMYXN0V3JpdGVUaW1lOw0KICAgIExBUkdFX0lOVEVHRVIgQ2hhbmdl
VGltZTsNCiAgICBMQVJHRV9JTlRFR0VSIEVuZE9mRmlsZTsNCiAgICBMQVJHRV9JTlRFR0VSIEFs
bG9jYXRpb25TaXplOw0KICAgIERXT1JEIEZpbGVBdHRyaWJ1dGVzOw0KICAgIERXT1JEIEZpbGVO
YW1lTGVuZ3RoOw0KICAgIERXT1JEIEVhU2l6ZTsNCiAgICBDQ0hBUiBTaG9ydE5hbWVMZW5ndGg7
DQogICAgV0NIQVIgU2hvcnROYW1lWzEyXTsNCiAgICBMQVJHRV9JTlRFR0VSIEZpbGVJZDsNCiAg
ICBXQ0hBUiBGaWxlTmFtZVsxXTsNCn0gRklMRV9JRF9CT1RIX0RJUl9JTkZPLCAqUEZJTEVfSURf
Qk9USF9ESVJfSU5GTzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfRlVMTF9ESVJfSU5GTyB7DQog
ICAgVUxPTkcgTmV4dEVudHJ5T2Zmc2V0Ow0KICAgIFVMT05HIEZpbGVJbmRleDsNCiAgICBMQVJH
RV9JTlRFR0VSIENyZWF0aW9uVGltZTsNCiAgICBMQVJHRV9JTlRFR0VSIExhc3RBY2Nlc3NUaW1l
Ow0KICAgIExBUkdFX0lOVEVHRVIgTGFzdFdyaXRlVGltZTsNCiAgICBMQVJHRV9JTlRFR0VSIENo
YW5nZVRpbWU7DQogICAgTEFSR0VfSU5URUdFUiBFbmRPZkZpbGU7DQogICAgTEFSR0VfSU5URUdF
UiBBbGxvY2F0aW9uU2l6ZTsNCiAgICBVTE9ORyBGaWxlQXR0cmlidXRlczsNCiAgICBVTE9ORyBG
aWxlTmFtZUxlbmd0aDsNCiAgICBVTE9ORyBFYVNpemU7DQogICAgV0NIQVIgRmlsZU5hbWVbMV07
DQp9IEZJTEVfRlVMTF9ESVJfSU5GTywgKlBGSUxFX0ZVTExfRElSX0lORk87DQoNCnR5cGVkZWYg
ZW51bSBfUFJJT1JJVFlfSElOVCB7DQogICAgICBJb1ByaW9yaXR5SGludFZlcnlMb3cgPSAwLA0K
ICAgICAgSW9Qcmlvcml0eUhpbnRMb3csDQogICAgICBJb1ByaW9yaXR5SGludE5vcm1hbCwNCiAg
ICAgIE1heGltdW1Jb1ByaW9yaXR5SGludFR5cGUNCn0gUFJJT1JJVFlfSElOVDsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX0ZJTEVfSU9fUFJJT1JJVFlfSElOVF9JTkZPIHsNCiAgICBQUklPUklUWV9ISU5U
IFByaW9yaXR5SGludDsNCn0gRklMRV9JT19QUklPUklUWV9ISU5UX0lORk8sICpQRklMRV9JT19Q
UklPUklUWV9ISU5UX0lORk87DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4OTU0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODk2NyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg5NzcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg5ODggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5iYXNlLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9GSUxFX1JFTU9URV9QUk9UT0NP
TF9JTkZPDQp7DQogICAgDQogICAgVVNIT1JUIFN0cnVjdHVyZVZlcnNpb247ICAgICANCiAgICBV
U0hPUlQgU3RydWN0dXJlU2l6ZTsgICAgICAgIA0KDQogICAgVUxPTkcgIFByb3RvY29sOyAgICAg
ICAgICAgICANCg0KICAgIA0KICAgIFVTSE9SVCBQcm90b2NvbE1ham9yVmVyc2lvbjsNCiAgICBV
U0hPUlQgUHJvdG9jb2xNaW5vclZlcnNpb247DQogICAgVVNIT1JUIFByb3RvY29sUmV2aXNpb247
DQoNCiAgICBVU0hPUlQgUmVzZXJ2ZWQ7DQoNCiAgICANCiAgICBVTE9ORyAgRmxhZ3M7DQoNCiAg
ICBzdHJ1Y3Qgew0KICAgICAgICBVTE9ORyBSZXNlcnZlZFs4XTsNCiAgICB9IEdlbmVyaWNSZXNl
cnZlZDsNCg0KICAgIA0KDQoNCiAgICBzdHJ1Y3Qgew0KICAgICAgICBVTE9ORyBSZXNlcnZlZFsx
Nl07DQogICAgfSBQcm90b2NvbFNwZWNpZmljUmVzZXJ2ZWQ7DQojbGluZSA5MDE4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgOTA0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KfSBGSUxFX1JFTU9URV9Q
Uk9UT0NPTF9JTkZPLCAqUEZJTEVfUkVNT1RFX1BST1RPQ09MX0lORk87DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZUV4
KA0KICAgICAgIEhBTkRMRSBoRmlsZSwNCiAgICAgICBGSUxFX0lORk9fQllfSEFORExFX0NMQVNT
IEZpbGVJbmZvcm1hdGlvbkNsYXNzLA0KICAgICAgTFBWT0lEIGxwRmlsZUluZm9ybWF0aW9uLA0K
ICAgICAgIERXT1JEIGR3QnVmZmVyU2l6ZQ0KKTsNCg0KI2xpbmUgOTA1NCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KdHlwZWRlZiBlbnVtIF9GSUxFX0lEX1RZUEUg
ew0KICAgICAgRmlsZUlkVHlwZSwNCiAgICAgIE9iamVjdElkVHlwZSwNCiAgICAgIEV4dGVuZGVk
RmlsZUlkVHlwZSwNCiAgICAgIE1heGltdW1GaWxlSWRUeXBlDQp9IEZJTEVfSURfVFlQRSwgKlBG
SUxFX0lEX1RZUEU7DQoNCnR5cGVkZWYgc3RydWN0IEZJTEVfSURfREVTQ1JJUFRPUiB7DQogICAg
RFdPUkQgZHdTaXplOyAgDQogICAgRklMRV9JRF9UWVBFIFR5cGU7IA0KICAgIHVuaW9uIHsNCiAg
ICAgICAgTEFSR0VfSU5URUdFUiBGaWxlSWQ7DQogICAgICAgIEdVSUQgT2JqZWN0SWQ7DQoNCg0K
I2xpbmUgOTA3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiAgICB9IDsNCn0gRklMRV9JRF9E
RVNDUklQVE9SLCAqTFBGSUxFX0lEX0RFU0NSSVBUT1I7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KSEFORExFDQpfX3N0ZGNhbGwNCk9wZW5GaWxlQnlJZCAoDQogICAgICAgICAgSEFORExFIGhW
b2x1bWVIaW50LA0KICAgICAgICAgIExQRklMRV9JRF9ERVNDUklQVE9SIGxwRmlsZUlkLA0KICAg
ICAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgICAgICBEV09SRCBkd1NoYXJlTW9k
ZSwNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcywNCiAg
ICAgICAgICBEV09SRCBkd0ZsYWdzQW5kQXR0cmlidXRlcw0KICAgICk7DQoNCiNsaW5lIDkwOTEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA5MDk0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTEVBTg0KX19zdGRjYWxsDQpDcmVh
dGVTeW1ib2xpY0xpbmtBICgNCiAgICAgIExQQ1NUUiBscFN5bWxpbmtGaWxlTmFtZSwNCiAgICAg
IExQQ1NUUiBscFRhcmdldEZpbGVOYW1lLA0KICAgICAgRFdPUkQgZHdGbGFncw0KICAgICk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0xFQU4NCl9fc3RkY2FsbA0KQ3JlYXRlU3ltYm9saWNM
aW5rVyAoDQogICAgICBMUENXU1RSIGxwU3ltbGlua0ZpbGVOYW1lLA0KICAgICAgTFBDV1NUUiBs
cFRhcmdldEZpbGVOYW1lLA0KICAgICAgRFdPUkQgZHdGbGFncw0KICAgICk7DQoNCg0KDQoNCiNs
aW5lIDkxNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDkxNDIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5iYXNlLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KUXVlcnlBY3RDdHhTZXR0aW5nc1coDQogICAgICAgICAgIERXT1JEIGR3RmxhZ3MsDQog
ICAgICAgICAgIEhBTkRMRSBoQWN0Q3R4LA0KICAgICAgICAgICBQQ1dTVFIgc2V0dGluZ3NOYW1l
U3BhY2UsDQogICAgICAgICAgICAgICBQQ1dTVFIgc2V0dGluZ05hbWUsDQogICAgICBQV1NUUiBw
dkJ1ZmZlciwNCiAgICAgICAgICAgU0laRV9UIGR3QnVmZmVyLA0KICAgICAgU0laRV9UICpwZHdX
cml0dGVuT3JSZXF1aXJlZA0KICAgICk7DQoNCiNsaW5lIDkxNTkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQoNCiNsaW5lIDkxNjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0xFQU4NCl9fc3RkY2FsbA0KQ3JlYXRlU3ltYm9saWNMaW5rVHJh
bnNhY3RlZEEgKA0KICAgICAgICAgIExQQ1NUUiBscFN5bWxpbmtGaWxlTmFtZSwNCiAgICAgICAg
ICBMUENTVFIgbHBUYXJnZXRGaWxlTmFtZSwNCiAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAg
ICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24NCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MRUFODQpfX3N0ZGNhbGwNCkNyZWF0ZVN5bWJvbGljTGlua1RyYW5zYWN0ZWRXICgNCiAg
ICAgICAgICBMUENXU1RSIGxwU3ltbGlua0ZpbGVOYW1lLA0KICAgICAgICAgIExQQ1dTVFIgbHBU
YXJnZXRGaWxlTmFtZSwNCiAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgIEhBTkRM
RSBoVHJhbnNhY3Rpb24NCiAgICApOw0KDQoNCg0KDQojbGluZSA5MTkxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KDQojbGluZSA5MTkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClJlcGxhY2VQYXJ0aXRpb25V
bml0ICgNCiAgICAgIFBXU1RSIFRhcmdldFBhcnRpdGlvbiwNCiAgICAgIFBXU1RSIFNwYXJlUGFy
dGl0aW9uLA0KICAgICAgVUxPTkcgRmxhZ3MNCiAgICApOw0KDQojbGluZSA5MjA2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luYmFzZS5oIg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KQWRkU2VjdXJlTWVtb3J5Q2FjaGVDYWxsYmFjaygNCiAgICAgICBQU0VDVVJFX01F
TU9SWV9DQUNIRV9DQUxMQkFDSyBwZm5DYWxsQmFjaw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZW1vdmVTZWN1cmVNZW1vcnlDYWNoZUNhbGxiYWNr
KA0KICAgICAgIFBTRUNVUkVfTUVNT1JZX0NBQ0hFX0NBTExCQUNLIHBmbkNhbGxCYWNrDQogICAg
KTsNCg0KI2xpbmUgOTIyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KI2xpbmUgOTIyNyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ29weUNvbnRl
eHQoDQogICAgICBQQ09OVEVYVCBEZXN0aW5hdGlvbiwNCiAgICAgIERXT1JEIENvbnRleHRGbGFn
cywNCiAgICAgIFBDT05URVhUIFNvdXJjZQ0KICAgICk7DQoNCiNsaW5lIDkyNDUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBs
aWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KIA0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkluaXRpYWxpemVDb250ZXh0
KA0KICAgICAgUFZPSUQgQnVmZmVyLA0KICAgICAgRFdPUkQgQ29udGV4dEZsYWdzLA0KICAgICAg
UENPTlRFWFQqIENvbnRleHQsDQogICAgICBQRFdPUkQgQ29udGV4dExlbmd0aA0KICAgICk7DQoN
CiNsaW5lIDkyNjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
R2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkyODIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCiNsaW5lIDkyODQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5i
YXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRp
b24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KRFdPUkQ2NA0KX19zdGRjYWxsDQpHZXRFbmFibGVkWFN0YXRlRmVhdHVy
ZXMoDQogICAgdm9pZA0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpHZXRYU3RhdGVGZWF0dXJlc01hc2soDQogICAgICBQQ09OVEVYVCBDb250ZXh0
LA0KICAgICAgUERXT1JENjQgRmVhdHVyZU1hc2sNCiAgICApOw0KDQogDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNClBWT0lEDQpfX3N0ZGNhbGwNCkxvY2F0ZVhTdGF0ZUZlYXR1cmUoDQogICAgICBQ
Q09OVEVYVCBDb250ZXh0LA0KICAgICAgRFdPUkQgRmVhdHVyZUlkLA0KICAgICAgUERXT1JEIExl
bmd0aA0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpTZXRYU3RhdGVGZWF0dXJlc01hc2soDQogICAgICBQQ09OVEVYVCBDb250ZXh0LA0KICAgICAg
RFdPUkQ2NCBGZWF0dXJlTWFzaw0KICAgICk7DQoNCiNsaW5lIDkzMjcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA5MzMwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luYmFzZS5oIg0KDQojbGluZSA5MzMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkRXT1JEDQpfX3N0ZGNhbGwNCkVuYWJsZVRocmVhZFByb2ZpbGluZygNCiAgICAgIEhBTkRMRSBU
aHJlYWRIYW5kbGUsDQogICAgICBEV09SRCBGbGFncywNCiAgICAgIERXT1JENjQgSGFyZHdhcmVD
b3VudGVycywNCiAgICAgIEhBTkRMRSAqUGVyZm9ybWFuY2VEYXRhSGFuZGxlDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpEaXNhYmxlVGhyZWFkUHJv
ZmlsaW5nKA0KICAgICAgSEFORExFIFBlcmZvcm1hbmNlRGF0YUhhbmRsZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KUXVlcnlUaHJlYWRQcm9maWxp
bmcoDQogICAgICBIQU5ETEUgVGhyZWFkSGFuZGxlLA0KICAgICAgUEJPT0xFQU4gRW5hYmxlZA0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KUmVhZFRo
cmVhZFByb2ZpbGluZ0RhdGEoDQogICAgICBIQU5ETEUgUGVyZm9ybWFuY2VEYXRhSGFuZGxlLA0K
ICAgICAgRFdPUkQgRmxhZ3MsDQogICAgICBQUEVSRk9STUFOQ0VfREFUQSBQZXJmb3JtYW5jZURh
dGENCiAgICApOw0KDQojbGluZSA5MzczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI2xpbmUgOTM3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTM5MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJh
c2UuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDk0MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoj
bGluZSA5NDAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQoNCn0NCiNsaW5lIDk0MDUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KDQoNCg0K
DQojbGluZSA5NDE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUgOTQxNSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCiNsaW5lIDk0MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgOTQ0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTQ2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0K
DQoNCg0KDQpleHRlcm4gIkMrKyIgew0KDQpfX2ZvcmNlaW5saW5lDQp1bnNpZ25lZA0KX0ludGVy
bG9ja2VkSW5jcmVtZW50KA0KICAgICAgIHVuc2lnbmVkIHZvbGF0aWxlICpBZGRlbmQNCiAgICAp
DQp7DQogICAgcmV0dXJuICh1bnNpZ25lZCkgX0ludGVybG9ja2VkSW5jcmVtZW50KCh2b2xhdGls
ZSBsb25nKikgQWRkZW5kKTsNCn0NCg0KX19mb3JjZWlubGluZQ0KdW5zaWduZWQgbG9uZw0KX0lu
dGVybG9ja2VkSW5jcmVtZW50KA0KICAgICAgIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgKkFkZGVu
ZA0KICAgICkNCnsNCiAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIF9JbnRlcmxvY2tlZEluY3Jl
bWVudCgodm9sYXRpbGUgbG9uZyopIEFkZGVuZCk7DQp9DQoNCg0KDQoNCl9fZm9yY2VpbmxpbmUN
CnVuc2lnbmVkIF9faW50NjQNCl9JbnRlcmxvY2tlZEluY3JlbWVudCgNCiAgICAgICB1bnNpZ25l
ZCBfX2ludDY0IHZvbGF0aWxlICpBZGRlbmQNCiAgICApDQp7DQogICAgcmV0dXJuICh1bnNpZ25l
ZCBfX2ludDY0KSAoX0ludGVybG9ja2VkSW5jcmVtZW50NjQpKCh2b2xhdGlsZSBfX2ludDY0Kikg
QWRkZW5kKTsNCn0NCg0KI2xpbmUgOTQ5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KX19m
b3JjZWlubGluZQ0KdW5zaWduZWQNCl9JbnRlcmxvY2tlZERlY3JlbWVudCgNCiAgICAgICB1bnNp
Z25lZCB2b2xhdGlsZSAqQWRkZW5kDQogICAgKQ0Kew0KICAgIHJldHVybiAodW5zaWduZWQgbG9u
ZykgX0ludGVybG9ja2VkRGVjcmVtZW50KCh2b2xhdGlsZSBsb25nKikgQWRkZW5kKTsNCn0NCg0K
X19mb3JjZWlubGluZQ0KdW5zaWduZWQgbG9uZw0KX0ludGVybG9ja2VkRGVjcmVtZW50KA0KICAg
ICAgIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgKkFkZGVuZA0KICAgICkNCnsNCiAgICByZXR1cm4g
KHVuc2lnbmVkIGxvbmcpIF9JbnRlcmxvY2tlZERlY3JlbWVudCgodm9sYXRpbGUgbG9uZyopIEFk
ZGVuZCk7DQp9DQoNCg0KDQoNCl9fZm9yY2VpbmxpbmUNCnVuc2lnbmVkIF9faW50NjQNCl9JbnRl
cmxvY2tlZERlY3JlbWVudCgNCiAgICAgICB1bnNpZ25lZCBfX2ludDY0IHZvbGF0aWxlICpBZGRl
bmQNCiAgICApDQp7DQogICAgcmV0dXJuICh1bnNpZ25lZCBfX2ludDY0KSAoX0ludGVybG9ja2Vk
RGVjcmVtZW50NjQpKCh2b2xhdGlsZSBfX2ludDY0KikgQWRkZW5kKTsNCn0NCg0KI2xpbmUgOTUz
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCg0KDQoNCl9fZm9yY2VpbmxpbmUNCnVuc2lnbmVk
DQpfSW50ZXJsb2NrZWRFeGNoYW5nZSgNCiAgICAgICB1bnNpZ25lZCB2b2xhdGlsZSAqVGFyZ2V0
LA0KICAgICAgdW5zaWduZWQgVmFsdWUNCiAgICApDQp7DQogICAgcmV0dXJuICh1bnNpZ25lZCkg
X0ludGVybG9ja2VkRXhjaGFuZ2UoKHZvbGF0aWxlIGxvbmcqKSBUYXJnZXQsIChsb25nKSBWYWx1
ZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnVuc2lnbmVkIGxvbmcNCl9JbnRlcmxvY2tlZEV4Y2hh
bmdlKA0KICAgICAgIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgKlRhcmdldCwNCiAgICAgIHVuc2ln
bmVkIGxvbmcgVmFsdWUNCiAgICApDQp7DQogICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSBfSW50
ZXJsb2NrZWRFeGNoYW5nZSgodm9sYXRpbGUgbG9uZyopIFRhcmdldCwgKGxvbmcpIFZhbHVlKTsN
Cn0NCg0KDQoNCl9fZm9yY2VpbmxpbmUNCnVuc2lnbmVkIF9faW50NjQNCl9JbnRlcmxvY2tlZEV4
Y2hhbmdlKA0KICAgICAgIHVuc2lnbmVkIF9faW50NjQgdm9sYXRpbGUgKlRhcmdldCwNCiAgICAg
IHVuc2lnbmVkIF9faW50NjQgVmFsdWUNCiAgICApDQp7DQogICAgcmV0dXJuICh1bnNpZ25lZCBf
X2ludDY0KSBfSW50ZXJsb2NrZWRFeGNoYW5nZTY0KCh2b2xhdGlsZSBfX2ludDY0KikgVGFyZ2V0
LCAoX19pbnQ2NCkgVmFsdWUpOw0KfQ0KDQojbGluZSA5NTY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFz
ZS5oIg0KDQpfX2ZvcmNlaW5saW5lDQp1bnNpZ25lZA0KX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQo
DQogICAgICAgdW5zaWduZWQgdm9sYXRpbGUgKkFkZGVuZCwNCiAgICAgIHVuc2lnbmVkIFZhbHVl
DQogICAgKQ0Kew0KICAgIHJldHVybiAodW5zaWduZWQpIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRk
KCh2b2xhdGlsZSBsb25nKikgQWRkZW5kLCAobG9uZykgVmFsdWUpOw0KfQ0KDQpfX2ZvcmNlaW5s
aW5lDQp1bnNpZ25lZA0KSW50ZXJsb2NrZWRFeGNoYW5nZVN1YnRyYWN0KA0KICAgICAgIHVuc2ln
bmVkIHZvbGF0aWxlICpBZGRlbmQsDQogICAgICB1bnNpZ25lZCBWYWx1ZQ0KICAgICkNCnsNCiAg
ICByZXR1cm4gKHVuc2lnbmVkKSBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCgodm9sYXRpbGUgbG9u
ZyopIEFkZGVuZCwgIC0gKGxvbmcpIFZhbHVlKTsNCn0NCg0KX19mb3JjZWlubGluZQ0KdW5zaWdu
ZWQgbG9uZw0KX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQoDQogICAgICAgdW5zaWduZWQgbG9uZyB2
b2xhdGlsZSAqQWRkZW5kLA0KICAgICAgdW5zaWduZWQgbG9uZyBWYWx1ZQ0KICAgICkNCnsNCiAg
ICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCh2b2xhdGls
ZSBsb25nKikgQWRkZW5kLCAobG9uZykgVmFsdWUpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp1bnNp
Z25lZCBsb25nDQpJbnRlcmxvY2tlZEV4Y2hhbmdlU3VidHJhY3QoDQogICAgICAgdW5zaWduZWQg
bG9uZyB2b2xhdGlsZSAqQWRkZW5kLA0KICAgICAgdW5zaWduZWQgbG9uZyBWYWx1ZQ0KICAgICkN
CnsNCiAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCh2
b2xhdGlsZSBsb25nKikgQWRkZW5kLCAgLSAobG9uZykgVmFsdWUpOw0KfQ0KDQoNCg0KX19mb3Jj
ZWlubGluZQ0KdW5zaWduZWQgX19pbnQ2NA0KX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQoDQogICAg
ICAgdW5zaWduZWQgX19pbnQ2NCB2b2xhdGlsZSAqQWRkZW5kLA0KICAgICAgdW5zaWduZWQgX19p
bnQ2NCBWYWx1ZQ0KICAgICkNCnsNCiAgICByZXR1cm4gKHVuc2lnbmVkIF9faW50NjQpIF9JbnRl
cmxvY2tlZEV4Y2hhbmdlQWRkNjQoKHZvbGF0aWxlIF9faW50NjQqKSBBZGRlbmQsICAoX19pbnQ2
NCkgVmFsdWUpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lDQp1bnNpZ25lZCBfX2ludDY0DQpJbnRlcmxv
Y2tlZEV4Y2hhbmdlU3VidHJhY3QoDQogICAgICAgdW5zaWduZWQgX19pbnQ2NCB2b2xhdGlsZSAq
QWRkZW5kLA0KICAgICAgdW5zaWduZWQgX19pbnQ2NCBWYWx1ZQ0KICAgICkNCnsNCiAgICByZXR1
cm4gKHVuc2lnbmVkIF9faW50NjQpIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkNjQoKHZvbGF0aWxl
IF9faW50NjQqKSBBZGRlbmQsICAtIChfX2ludDY0KSBWYWx1ZSk7DQp9DQoNCiNsaW5lIDk2MzAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCl9fZm9yY2VpbmxpbmUNCnVuc2lnbmVkDQpfSW50
ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoDQogICAgICAgdW5zaWduZWQgdm9sYXRpbGUgKkRlc3Rp
bmF0aW9uLA0KICAgICAgdW5zaWduZWQgRXhjaGFuZ2UsDQogICAgICB1bnNpZ25lZCBDb21wZXJh
bmQNCiAgICApDQp7DQogICAgcmV0dXJuICh1bnNpZ25lZCkgX0ludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlKCh2b2xhdGlsZSBsb25nKikgRGVzdGluYXRpb24sIChsb25nKSBFeGNoYW5nZSwgKGxv
bmcpIENvbXBlcmFuZCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUNCnVuc2lnbmVkIGxvbmcNCl9JbnRl
cmxvY2tlZENvbXBhcmVFeGNoYW5nZSgNCiAgICAgICB1bnNpZ25lZCBsb25nIHZvbGF0aWxlICpE
ZXN0aW5hdGlvbiwNCiAgICAgIHVuc2lnbmVkIGxvbmcgRXhjaGFuZ2UsDQogICAgICB1bnNpZ25l
ZCBsb25nIENvbXBlcmFuZA0KICAgICkNCnsNCiAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIF9J
bnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgodm9sYXRpbGUgbG9uZyopIERlc3RpbmF0aW9uLCAo
bG9uZykgRXhjaGFuZ2UsIChsb25nKSBDb21wZXJhbmQpOw0KfQ0KDQoNCg0KX19mb3JjZWlubGlu
ZQ0KdW5zaWduZWQgX19pbnQ2NA0KX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKA0KICAgICAg
IHVuc2lnbmVkIF9faW50NjQgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgdW5zaWduZWQg
X19pbnQ2NCBFeGNoYW5nZSwNCiAgICAgIHVuc2lnbmVkIF9faW50NjQgQ29tcGVyYW5kDQogICAg
KQ0Kew0KICAgIHJldHVybiAodW5zaWduZWQgX19pbnQ2NCkgX0ludGVybG9ja2VkQ29tcGFyZUV4
Y2hhbmdlNjQoKHZvbGF0aWxlIF9faW50NjQqKSBEZXN0aW5hdGlvbiwgKF9faW50NjQpIEV4Y2hh
bmdlLCAoX19pbnQ2NCkgQ29tcGVyYW5kKTsNCn0NCg0KX19mb3JjZWlubGluZQ0KdW5zaWduZWQg
X19pbnQ2NA0KX0ludGVybG9ja2VkQW5kKA0KICAgICAgIHVuc2lnbmVkIF9faW50NjQgdm9sYXRp
bGUgKkRlc3RpbmF0aW9uLA0KICAgICAgdW5zaWduZWQgX19pbnQ2NCBWYWx1ZQ0KICAgICkNCnsN
CiAgICByZXR1cm4gKHVuc2lnbmVkIF9faW50NjQpIF9JbnRlcmxvY2tlZEFuZDY0KCh2b2xhdGls
ZSBfX2ludDY0KikgRGVzdGluYXRpb24sIChfX2ludDY0KSBWYWx1ZSk7DQp9DQoNCl9fZm9yY2Vp
bmxpbmUNCnVuc2lnbmVkIF9faW50NjQNCl9JbnRlcmxvY2tlZE9yKA0KICAgICAgIHVuc2lnbmVk
IF9faW50NjQgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgdW5zaWduZWQgX19pbnQ2NCBW
YWx1ZQ0KICAgICkNCnsNCiAgICByZXR1cm4gKHVuc2lnbmVkIF9faW50NjQpIF9JbnRlcmxvY2tl
ZE9yNjQoKHZvbGF0aWxlIF9faW50NjQqKSBEZXN0aW5hdGlvbiwgKF9faW50NjQpIFZhbHVlKTsN
Cn0NCg0KX19mb3JjZWlubGluZQ0KdW5zaWduZWQgX19pbnQ2NA0KX0ludGVybG9ja2VkWG9yKA0K
ICAgICAgIHVuc2lnbmVkIF9faW50NjQgdm9sYXRpbGUgKkRlc3RpbmF0aW9uLA0KICAgICAgdW5z
aWduZWQgX19pbnQ2NCBWYWx1ZQ0KICAgICkNCnsNCiAgICByZXR1cm4gKHVuc2lnbmVkIF9faW50
NjQpIF9JbnRlcmxvY2tlZFhvcjY0KCh2b2xhdGlsZSBfX2ludDY0KikgRGVzdGluYXRpb24sIChf
X2ludDY0KSBWYWx1ZSk7DQp9DQoNCiNsaW5lIDk2OTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgi
DQoNCiNsaW5lIDk2OTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5iYXNlLmgiDQoNCn0gDQojbGluZSA5NzAy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KDQojbGluZSA5NzA0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
YmFzZS5oIg0KDQoNCg0KDQojbGluZSA5NzA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xp
bmUgOTcxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDk3MTEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5iYXNlLmgiDQojbGluZSA5NzEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luYmFzZS5oIg0KI2xpbmUg
OTcxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmJhc2UuaCINCiNsaW5lIDk3MTQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5iYXNlLmgiDQojbGluZSAxNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGluZSAxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDIwMSkgICAgICANCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODIwKSAgICAg
IA0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQpleHRlcm4gIkMiIHsNCiNs
aW5lIDU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0K
DQojbGluZSAxMDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDEx
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
Z2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE2MSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE3OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQojbGluZSAxOTkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCg0KDQojbGluZSAyMDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI4MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfRFJBV1BBVFJFQ1Qgew0KICAgICAgICBQT0lO
VCBwdFBvc2l0aW9uOw0KICAgICAgICBQT0lOVCBwdFNpemU7DQogICAgICAgIFdPUkQgd1N0eWxl
Ow0KICAgICAgICBXT1JEIHdQYXR0ZXJuOw0KfSBEUkFXUEFUUkVDVCwgKlBEUkFXUEFUUkVDVDsN
CiNsaW5lIDMwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQojbGluZSAzMDIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDMwNSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQwNyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVn
aW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUFNJTkpFQ1RE
QVRBIHsNCg0KICAgIERXT1JEICAgRGF0YUJ5dGVzOyAgICAgIA0KICAgIFdPUkQgICAgSW5qZWN0
aW9uUG9pbnQ7IA0KICAgIFdPUkQgICAgUGFnZU51bWJlcjsgICAgIA0KDQogICAgDQoNCn0gUFNJ
TkpFQ1REQVRBLCAqUFBTSU5KRUNUREFUQTsNCg0KI2xpbmUgNDM2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
Z2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MDUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9QU0ZFQVRVUkVfT1VUUFVUIHsNCg0KICAgIEJP
T0wgYlBhZ2VJbmRlcGVuZGVudDsNCiAgICBCT09MIGJTZXRQYWdlRGV2aWNlOw0KDQp9IFBTRkVB
VFVSRV9PVVRQVVQsICpQUFNGRUFUVVJFX09VVFBVVDsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfUFNGRUFUVVJFX0NVU1RQQVBFUiB7DQoNCiAgICBMT05HIGxPcmllbnRhdGlvbjsNCiAgICBM
T05HIGxXaWR0aDsNCiAgICBMT05HIGxIZWlnaHQ7DQogICAgTE9ORyBsV2lkdGhPZmZzZXQ7DQog
ICAgTE9ORyBsSGVpZ2h0T2Zmc2V0Ow0KDQp9IFBTRkVBVFVSRV9DVVNUUEFQRVIsICpQUFNGRUFU
VVJFX0NVU1RQQVBFUjsNCg0KI2xpbmUgNTM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
IHRhZ1hGT1JNDQogIHsNCiAgICBGTE9BVCAgIGVNMTE7DQogICAgRkxPQVQgICBlTTEyOw0KICAg
IEZMT0FUICAgZU0yMTsNCiAgICBGTE9BVCAgIGVNMjI7DQogICAgRkxPQVQgICBlRHg7DQogICAg
RkxPQVQgICBlRHk7DQogIH0gWEZPUk0sICpQWEZPUk0sICAqTFBYRk9STTsNCg0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdCSVRNQVANCiAgew0KICAgIExPTkcgICAgICAgIGJtVHlwZTsNCiAgICBMT05H
ICAgICAgICBibVdpZHRoOw0KICAgIExPTkcgICAgICAgIGJtSGVpZ2h0Ow0KICAgIExPTkcgICAg
ICAgIGJtV2lkdGhCeXRlczsNCiAgICBXT1JEICAgICAgICBibVBsYW5lczsNCiAgICBXT1JEICAg
ICAgICBibUJpdHNQaXhlbDsNCiAgICBMUFZPSUQgICAgICBibUJpdHM7DQogIH0gQklUTUFQLCAq
UEJJVE1BUCwgICpOUEJJVE1BUCwgICpMUEJJVE1BUDsNCg0KI2xpbmUgNjEzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHBzaHBhY2sxLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHB1c2gs
MSkNCg0KDQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMS5oIg0KDQoNCiNsaW5l
IDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2sxLmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwc2hwYWNrMS5oIg0KI2xpbmUgNjE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1JH
QlRSSVBMRSB7DQogICAgICAgIEJZVEUgICAgcmdidEJsdWU7DQogICAgICAgIEJZVEUgICAgcmdi
dEdyZWVuOw0KICAgICAgICBCWVRFICAgIHJnYnRSZWQ7DQp9IFJHQlRSSVBMRSwgKlBSR0JUUklQ
TEUsICAqTlBSR0JUUklQTEUsICAqTFBSR0JUUklQTEU7DQoNCiNsaW5lIDYyNyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwb3BwYWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNr
KHBvcCkNCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xp
bmUgMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccG9wcGFjay5oIg0KI2xpbmUgNjMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1JH
QlFVQUQgew0KICAgICAgICBCWVRFICAgIHJnYkJsdWU7DQogICAgICAgIEJZVEUgICAgcmdiR3Jl
ZW47DQogICAgICAgIEJZVEUgICAgcmdiUmVkOw0KICAgICAgICBCWVRFICAgIHJnYlJlc2VydmVk
Ow0KfSBSR0JRVUFEOw0KDQojbGluZSA2NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRl
ZiBSR0JRVUFEICogTFBSR0JRVUFEOw0KDQojbGluZSA2NTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQp0eXBlZGVmIExPTkcgICBM
Q1NDU1RZUEU7DQoNCg0KDQp0eXBlZGVmIExPTkcgICAgTENTR0FNVVRNQVRDSDsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgbG9u
ZyAgICAgICAgICAgIEZYUFQxNkRPVDE2LCAgKkxQRlhQVDE2RE9UMTY7DQp0eXBlZGVmIGxvbmcg
ICAgICAgICAgICBGWFBUMkRPVDMwLCAgKkxQRlhQVDJET1QzMDsNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnQ0lFWFlaDQp7DQogICAgICAgIEZYUFQyRE9UMzAgY2lleHl6WDsNCiAgICAgICAg
RlhQVDJET1QzMCBjaWV4eXpZOw0KICAgICAgICBGWFBUMkRPVDMwIGNpZXh5elo7DQp9IENJRVhZ
WjsNCg0KI2xpbmUgNzE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgQ0lFWFlaICAg
KkxQQ0lFWFlaOw0KDQojbGluZSA3MjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVk
ZWYgc3RydWN0IHRhZ0lDRVhZWlRSSVBMRQ0Kew0KICAgICAgICBDSUVYWVogIGNpZXh5elJlZDsN
CiAgICAgICAgQ0lFWFlaICBjaWV4eXpHcmVlbjsNCiAgICAgICAgQ0lFWFlaICBjaWV4eXpCbHVl
Ow0KfSBDSUVYWVpUUklQTEU7DQoNCiNsaW5lIDczOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0
eXBlZGVmIENJRVhZWlRSSVBMRSAgICAgKkxQQ0lFWFlaVFJJUExFOw0KDQojbGluZSA3NDcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdMT0dD
T0xPUlNQQUNFQSB7DQogICAgRFdPUkQgbGNzU2lnbmF0dXJlOw0KICAgIERXT1JEIGxjc1ZlcnNp
b247DQogICAgRFdPUkQgbGNzU2l6ZTsNCiAgICBMQ1NDU1RZUEUgbGNzQ1NUeXBlOw0KICAgIExD
U0dBTVVUTUFUQ0ggbGNzSW50ZW50Ow0KICAgIENJRVhZWlRSSVBMRSBsY3NFbmRwb2ludHM7DQog
ICAgRFdPUkQgbGNzR2FtbWFSZWQ7DQogICAgRFdPUkQgbGNzR2FtbWFHcmVlbjsNCiAgICBEV09S
RCBsY3NHYW1tYUJsdWU7DQogICAgQ0hBUiAgIGxjc0ZpbGVuYW1lWzI2MF07DQp9IExPR0NPTE9S
U1BBQ0VBLCAqTFBMT0dDT0xPUlNQQUNFQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0xPR0NPTE9SU1BB
Q0VXIHsNCiAgICBEV09SRCBsY3NTaWduYXR1cmU7DQogICAgRFdPUkQgbGNzVmVyc2lvbjsNCiAg
ICBEV09SRCBsY3NTaXplOw0KICAgIExDU0NTVFlQRSBsY3NDU1R5cGU7DQogICAgTENTR0FNVVRN
QVRDSCBsY3NJbnRlbnQ7DQogICAgQ0lFWFlaVFJJUExFIGxjc0VuZHBvaW50czsNCiAgICBEV09S
RCBsY3NHYW1tYVJlZDsNCiAgICBEV09SRCBsY3NHYW1tYUdyZWVuOw0KICAgIERXT1JEIGxjc0dh
bW1hQmx1ZTsNCiAgICBXQ0hBUiAgbGNzRmlsZW5hbWVbMjYwXTsNCn0gTE9HQ09MT1JTUEFDRVcs
ICpMUExPR0NPTE9SU1BBQ0VXOw0KDQp0eXBlZGVmIExPR0NPTE9SU1BBQ0VXIExPR0NPTE9SU1BB
Q0U7DQp0eXBlZGVmIExQTE9HQ09MT1JTUEFDRVcgTFBMT0dDT0xPUlNQQUNFOw0KDQoNCg0KI2xp
bmUgNzg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNsaW5lIDc5MCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgNzkzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luZ2RpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdCSVRNQVBDT1JFSEVBREVSIHsNCiAgICAgICAgRFdPUkQgICBiY1NpemU7ICAg
ICAgICAgICAgICAgICANCiAgICAgICAgV09SRCAgICBiY1dpZHRoOw0KICAgICAgICBXT1JEICAg
IGJjSGVpZ2h0Ow0KICAgICAgICBXT1JEICAgIGJjUGxhbmVzOw0KICAgICAgICBXT1JEICAgIGJj
Qml0Q291bnQ7DQp9IEJJVE1BUENPUkVIRUFERVIsICAqTFBCSVRNQVBDT1JFSEVBREVSLCAqUEJJ
VE1BUENPUkVIRUFERVI7DQoNCiNsaW5lIDgwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9u
ZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0JJVE1B
UElORk9IRUFERVJ7DQogICAgICAgIERXT1JEICAgICAgYmlTaXplOw0KICAgICAgICBMT05HICAg
ICAgIGJpV2lkdGg7DQogICAgICAgIExPTkcgICAgICAgYmlIZWlnaHQ7DQogICAgICAgIFdPUkQg
ICAgICAgYmlQbGFuZXM7DQogICAgICAgIFdPUkQgICAgICAgYmlCaXRDb3VudDsNCiAgICAgICAg
RFdPUkQgICAgICBiaUNvbXByZXNzaW9uOw0KICAgICAgICBEV09SRCAgICAgIGJpU2l6ZUltYWdl
Ow0KICAgICAgICBMT05HICAgICAgIGJpWFBlbHNQZXJNZXRlcjsNCiAgICAgICAgTE9ORyAgICAg
ICBiaVlQZWxzUGVyTWV0ZXI7DQogICAgICAgIERXT1JEICAgICAgYmlDbHJVc2VkOw0KICAgICAg
ICBEV09SRCAgICAgIGJpQ2xySW1wb3J0YW50Ow0KfSBCSVRNQVBJTkZPSEVBREVSLCAgKkxQQklU
TUFQSU5GT0hFQURFUiwgKlBCSVRNQVBJTkZPSEVBREVSOw0KDQojbGluZSA4MjcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICAgICAgRFdPUkQgICAgICAg
IGJWNFNpemU7DQogICAgICAgIExPTkcgICAgICAgICBiVjRXaWR0aDsNCiAgICAgICAgTE9ORyAg
ICAgICAgIGJWNEhlaWdodDsNCiAgICAgICAgV09SRCAgICAgICAgIGJWNFBsYW5lczsNCiAgICAg
ICAgV09SRCAgICAgICAgIGJWNEJpdENvdW50Ow0KICAgICAgICBEV09SRCAgICAgICAgYlY0VjRD
b21wcmVzc2lvbjsNCiAgICAgICAgRFdPUkQgICAgICAgIGJWNFNpemVJbWFnZTsNCiAgICAgICAg
TE9ORyAgICAgICAgIGJWNFhQZWxzUGVyTWV0ZXI7DQogICAgICAgIExPTkcgICAgICAgICBiVjRZ
UGVsc1Blck1ldGVyOw0KICAgICAgICBEV09SRCAgICAgICAgYlY0Q2xyVXNlZDsNCiAgICAgICAg
RFdPUkQgICAgICAgIGJWNENsckltcG9ydGFudDsNCiAgICAgICAgRFdPUkQgICAgICAgIGJWNFJl
ZE1hc2s7DQogICAgICAgIERXT1JEICAgICAgICBiVjRHcmVlbk1hc2s7DQogICAgICAgIERXT1JE
ICAgICAgICBiVjRCbHVlTWFzazsNCiAgICAgICAgRFdPUkQgICAgICAgIGJWNEFscGhhTWFzazsN
CiAgICAgICAgRFdPUkQgICAgICAgIGJWNENTVHlwZTsNCiAgICAgICAgQ0lFWFlaVFJJUExFIGJW
NEVuZHBvaW50czsNCiAgICAgICAgRFdPUkQgICAgICAgIGJWNEdhbW1hUmVkOw0KICAgICAgICBE
V09SRCAgICAgICAgYlY0R2FtbWFHcmVlbjsNCiAgICAgICAgRFdPUkQgICAgICAgIGJWNEdhbW1h
Qmx1ZTsNCn0gQklUTUFQVjRIRUFERVIsICAqTFBCSVRNQVBWNEhFQURFUiwgKlBCSVRNQVBWNEhF
QURFUjsNCg0KI2xpbmUgODU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KI2xpbmUgODYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQojcHJhZ21hIHJl
Z2lvbiBEZXNrdG9wIEZhbWlseQ0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgICAgIERXT1JEICAg
ICAgICBiVjVTaXplOw0KICAgICAgICBMT05HICAgICAgICAgYlY1V2lkdGg7DQogICAgICAgIExP
TkcgICAgICAgICBiVjVIZWlnaHQ7DQogICAgICAgIFdPUkQgICAgICAgICBiVjVQbGFuZXM7DQog
ICAgICAgIFdPUkQgICAgICAgICBiVjVCaXRDb3VudDsNCiAgICAgICAgRFdPUkQgICAgICAgIGJW
NUNvbXByZXNzaW9uOw0KICAgICAgICBEV09SRCAgICAgICAgYlY1U2l6ZUltYWdlOw0KICAgICAg
ICBMT05HICAgICAgICAgYlY1WFBlbHNQZXJNZXRlcjsNCiAgICAgICAgTE9ORyAgICAgICAgIGJW
NVlQZWxzUGVyTWV0ZXI7DQogICAgICAgIERXT1JEICAgICAgICBiVjVDbHJVc2VkOw0KICAgICAg
ICBEV09SRCAgICAgICAgYlY1Q2xySW1wb3J0YW50Ow0KICAgICAgICBEV09SRCAgICAgICAgYlY1
UmVkTWFzazsNCiAgICAgICAgRFdPUkQgICAgICAgIGJWNUdyZWVuTWFzazsNCiAgICAgICAgRFdP
UkQgICAgICAgIGJWNUJsdWVNYXNrOw0KICAgICAgICBEV09SRCAgICAgICAgYlY1QWxwaGFNYXNr
Ow0KICAgICAgICBEV09SRCAgICAgICAgYlY1Q1NUeXBlOw0KICAgICAgICBDSUVYWVpUUklQTEUg
YlY1RW5kcG9pbnRzOw0KICAgICAgICBEV09SRCAgICAgICAgYlY1R2FtbWFSZWQ7DQogICAgICAg
IERXT1JEICAgICAgICBiVjVHYW1tYUdyZWVuOw0KICAgICAgICBEV09SRCAgICAgICAgYlY1R2Ft
bWFCbHVlOw0KICAgICAgICBEV09SRCAgICAgICAgYlY1SW50ZW50Ow0KICAgICAgICBEV09SRCAg
ICAgICAgYlY1UHJvZmlsZURhdGE7DQogICAgICAgIERXT1JEICAgICAgICBiVjVQcm9maWxlU2l6
ZTsNCiAgICAgICAgRFdPUkQgICAgICAgIGJWNVJlc2VydmVkOw0KfSBCSVRNQVBWNUhFQURFUiwg
ICpMUEJJVE1BUFY1SEVBREVSLCAqUEJJVE1BUFY1SEVBREVSOw0KDQojbGluZSA4OTMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCiNsaW5lIDg5OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTA5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0JJVE1BUElORk8gew0KICAgIEJJVE1BUElORk9IRUFERVIg
ICAgYm1pSGVhZGVyOw0KICAgIFJHQlFVQUQgICAgICAgICAgICAgYm1pQ29sb3JzWzFdOw0KfSBC
SVRNQVBJTkZPLCAgKkxQQklUTUFQSU5GTywgKlBCSVRNQVBJTkZPOw0KDQojbGluZSA5MTkgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQklUTUFQQ09SRUlORk8gew0K
ICAgIEJJVE1BUENPUkVIRUFERVIgICAgYm1jaUhlYWRlcjsNCiAgICBSR0JUUklQTEUgICAgICAg
ICAgIGJtY2lDb2xvcnNbMV07DQp9IEJJVE1BUENPUkVJTkZPLCAgKkxQQklUTUFQQ09SRUlORk8s
ICpQQklUTUFQQ09SRUlORk87DQoNCiNsaW5lIDkzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMi5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFjayhwdXNoLDIpDQoNCg0KI2xpbmUg
MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIuaCINCg0KDQojbGluZSAzMyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxwc2hwYWNrMi5oIg0KI2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIu
aCINCiNsaW5lIDkzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0JJVE1BUEZJTEVIRUFERVIgew0K
ICAgICAgICBXT1JEICAgIGJmVHlwZTsNCiAgICAgICAgRFdPUkQgICBiZlNpemU7DQogICAgICAg
IFdPUkQgICAgYmZSZXNlcnZlZDE7DQogICAgICAgIFdPUkQgICAgYmZSZXNlcnZlZDI7DQogICAg
ICAgIERXT1JEICAgYmZPZmZCaXRzOw0KfSBCSVRNQVBGSUxFSEVBREVSLCAgKkxQQklUTUFQRklM
RUhFQURFUiwgKlBCSVRNQVBGSUxFSEVBREVSOw0KDQojbGluZSA5NDYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cG9wcGFjay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFjayhwb3Ap
DQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KDQoNCiNsaW5lIDM2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDM3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHBvcHBhY2suaCINCiNsaW5lIDk0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnRk9OVFNJR05BVFVSRQ0Kew0KICAgIERXT1JEIGZzVXNiWzRdOw0KICAgIERXT1JEIGZzQ3Ni
WzJdOw0KfSBGT05UU0lHTkFUVVJFLCAqUEZPTlRTSUdOQVRVUkUsICpMUEZPTlRTSUdOQVRVUkU7
DQoNCiNsaW5lIDk2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdD
SEFSU0VUSU5GTw0Kew0KICAgIFVJTlQgY2lDaGFyc2V0Ow0KICAgIFVJTlQgY2lBQ1A7DQogICAg
Rk9OVFNJR05BVFVSRSBmczsNCn0gQ0hBUlNFVElORk8sICpQQ0hBUlNFVElORk8sICAqTlBDSEFS
U0VUSU5GTywgICpMUENIQVJTRVRJTkZPOw0KDQojbGluZSA5NzggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5n
ZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQojbGluZSA5ODYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnTE9DQUxFU0lHTkFUVVJFDQp7DQogICAgRFdPUkQgbHNVc2JbNF07
DQogICAgRFdPUkQgbHNDc2JEZWZhdWx0WzJdOw0KICAgIERXT1JEIGxzQ3NiU3VwcG9ydGVkWzJd
Ow0KfSBMT0NBTEVTSUdOQVRVUkUsICpQTE9DQUxFU0lHTkFUVVJFLCAqTFBMT0NBTEVTSUdOQVRV
UkU7DQoNCiNsaW5lIDk5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI2xpbmUgMTAwMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI2xpbmUgMTAwMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFt
aWx5DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0hBTkRMRVRBQkxFDQogIHsNCiAgICBIR0RJ
T0JKICAgICBvYmplY3RIYW5kbGVbMV07DQogIH0gSEFORExFVEFCTEUsICpQSEFORExFVEFCTEUs
ICAqTFBIQU5ETEVUQUJMRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVUQVJFQ09SRA0KICB7DQog
ICAgRFdPUkQgICAgICAgcmRTaXplOw0KICAgIFdPUkQgICAgICAgIHJkRnVuY3Rpb247DQogICAg
V09SRCAgICAgICAgcmRQYXJtWzFdOw0KICB9IE1FVEFSRUNPUkQ7DQoNCiNsaW5lIDEwMjMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVUQVJFQ09SRCBfX3VuYWxp
Z25lZCAqUE1FVEFSRUNPUkQ7DQoNCiNsaW5lIDEwMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ01FVEFSRUNPUkQgX191bmFsaWduZWQgICpMUE1FVEFSRUNP
UkQ7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ01FVEFGSUxFUElDVA0KICB7DQogICAgTE9ORyAgICAg
ICAgbW07DQogICAgTE9ORyAgICAgICAgeEV4dDsNCiAgICBMT05HICAgICAgICB5RXh0Ow0KICAg
IEhNRVRBRklMRSAgIGhNRjsNCiAgfSBNRVRBRklMRVBJQ1QsICAqTFBNRVRBRklMRVBJQ1Q7DQoN
CiNsaW5lIDEwNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAz
KQ0KDQojcHJhZ21hIHBhY2socHVzaCwyKQ0KDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHBzaHBhY2syLmgiDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIuaCIN
CiNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2syLmgiDQojbGluZSAxMDUwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnTUVUQUhFQURFUg0Kew0KICAgIFdPUkQgICAgICAgIG10VHlwZTsN
CiAgICBXT1JEICAgICAgICBtdEhlYWRlclNpemU7DQogICAgV09SRCAgICAgICAgbXRWZXJzaW9u
Ow0KICAgIERXT1JEICAgICAgIG10U2l6ZTsNCiAgICBXT1JEICAgICAgICBtdE5vT2JqZWN0czsN
CiAgICBEV09SRCAgICAgICBtdE1heFJlY29yZDsNCiAgICBXT1JEICAgICAgICBtdE5vUGFyYW1l
dGVyczsNCn0gTUVUQUhFQURFUjsNCnR5cGVkZWYgc3RydWN0IHRhZ01FVEFIRUFERVIgX191bmFs
aWduZWQgKlBNRVRBSEVBREVSOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVUQUhFQURFUiBfX3VuYWxp
Z25lZCAgKkxQTUVUQUhFQURFUjsNCg0KI2xpbmUgMTA2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNr
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHBvcCkNCg0KDQoj
bGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xpbmUgMzYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFj
ay5oIg0KI2xpbmUgMTA3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VOSE1FVEFSRUNP
UkQNCnsNCiAgICBEV09SRCAgIGlUeXBlOyAgICAgICAgICAgICAgDQogICAgRFdPUkQgICBuU2l6
ZTsgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgZFBhcm1bMV07ICAgICAgICAgICANCn0gRU5I
TUVUQVJFQ09SRCwgKlBFTkhNRVRBUkVDT1JELCAqTFBFTkhNRVRBUkVDT1JEOw0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdFTkhNRVRBSEVBREVSDQp7DQogICAgRFdPUkQgICBpVHlwZTsgICAgICAgICAg
ICAgIA0KICAgIERXT1JEICAgblNpemU7ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgUkVDVEwgICByY2xCb3VuZHM7ICAgICAgICAgIA0KICAgIFJF
Q1RMICAgcmNsRnJhbWU7ICAgICAgICAgICANCiAgICBEV09SRCAgIGRTaWduYXR1cmU7ICAgICAg
ICAgDQogICAgRFdPUkQgICBuVmVyc2lvbjsgICAgICAgICAgIA0KICAgIERXT1JEICAgbkJ5dGVz
OyAgICAgICAgICAgICANCiAgICBEV09SRCAgIG5SZWNvcmRzOyAgICAgICAgICAgDQogICAgV09S
RCAgICBuSGFuZGxlczsgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCiAgICBXT1JEICAgIHNSZXNlcnZlZDsgICAgICAgICAgDQogICAgRFdPUkQgICBuRGVzY3Jp
cHRpb247ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBEV09S
RCAgIG9mZkRlc2NyaXB0aW9uOyAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IA0KICAgIERXT1JEICAgblBhbEVudHJpZXM7ICAgICAgICANCiAgICBTSVpFTCAgIHN6bERldmlj
ZTsgICAgICAgICAgDQogICAgU0laRUwgICBzemxNaWxsaW1ldGVyczsgICAgIA0KDQogICAgRFdP
UkQgICBjYlBpeGVsRm9ybWF0OyAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCiAgICBEV09SRCAgIG9mZlBpeGVsRm9ybWF0OyAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgYk9wZW5HTDsgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQojbGluZSAxMTEyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2Rp
LmgiDQoNCiAgICBTSVpFTCAgIHN6bE1pY3JvbWV0ZXJzOyAgICAgDQojbGluZSAxMTE1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZ2RpLmgiDQoNCn0gRU5ITUVUQUhFQURFUiwgKlBFTkhNRVRBSEVBREVSLCAq
TFBFTkhNRVRBSEVBREVSOw0KDQojbGluZSAxMTE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMTIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoN
Cg0KICAgIHR5cGVkZWYgV0NIQVIgQkNIQVI7DQoNCg0KI2xpbmUgMTE0MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQojbGluZSAxMTQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrNC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFjayhwdXNoLDQpDQoNCg0KI2xpbmUgMzAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazQuaCINCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwc2hwYWNrNC5oIg0KI2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazQuaCIN
CiNsaW5lIDExNDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI3ByYWdtYSByZWdpb24gQXBw
bGljYXRpb24gRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnVEVYVE1FVFJJQ0ENCnsNCiAg
ICBMT05HICAgICAgICB0bUhlaWdodDsNCiAgICBMT05HICAgICAgICB0bUFzY2VudDsNCiAgICBM
T05HICAgICAgICB0bURlc2NlbnQ7DQogICAgTE9ORyAgICAgICAgdG1JbnRlcm5hbExlYWRpbmc7
DQogICAgTE9ORyAgICAgICAgdG1FeHRlcm5hbExlYWRpbmc7DQogICAgTE9ORyAgICAgICAgdG1B
dmVDaGFyV2lkdGg7DQogICAgTE9ORyAgICAgICAgdG1NYXhDaGFyV2lkdGg7DQogICAgTE9ORyAg
ICAgICAgdG1XZWlnaHQ7DQogICAgTE9ORyAgICAgICAgdG1PdmVyaGFuZzsNCiAgICBMT05HICAg
ICAgICB0bURpZ2l0aXplZEFzcGVjdFg7DQogICAgTE9ORyAgICAgICAgdG1EaWdpdGl6ZWRBc3Bl
Y3RZOw0KICAgIEJZVEUgICAgICAgIHRtRmlyc3RDaGFyOw0KICAgIEJZVEUgICAgICAgIHRtTGFz
dENoYXI7DQogICAgQllURSAgICAgICAgdG1EZWZhdWx0Q2hhcjsNCiAgICBCWVRFICAgICAgICB0
bUJyZWFrQ2hhcjsNCiAgICBCWVRFICAgICAgICB0bUl0YWxpYzsNCiAgICBCWVRFICAgICAgICB0
bVVuZGVybGluZWQ7DQogICAgQllURSAgICAgICAgdG1TdHJ1Y2tPdXQ7DQogICAgQllURSAgICAg
ICAgdG1QaXRjaEFuZEZhbWlseTsNCiAgICBCWVRFICAgICAgICB0bUNoYXJTZXQ7DQp9IFRFWFRN
RVRSSUNBLCAqUFRFWFRNRVRSSUNBLCAgKk5QVEVYVE1FVFJJQ0EsICAqTFBURVhUTUVUUklDQTsN
CnR5cGVkZWYgc3RydWN0IHRhZ1RFWFRNRVRSSUNXDQp7DQogICAgTE9ORyAgICAgICAgdG1IZWln
aHQ7DQogICAgTE9ORyAgICAgICAgdG1Bc2NlbnQ7DQogICAgTE9ORyAgICAgICAgdG1EZXNjZW50
Ow0KICAgIExPTkcgICAgICAgIHRtSW50ZXJuYWxMZWFkaW5nOw0KICAgIExPTkcgICAgICAgIHRt
RXh0ZXJuYWxMZWFkaW5nOw0KICAgIExPTkcgICAgICAgIHRtQXZlQ2hhcldpZHRoOw0KICAgIExP
TkcgICAgICAgIHRtTWF4Q2hhcldpZHRoOw0KICAgIExPTkcgICAgICAgIHRtV2VpZ2h0Ow0KICAg
IExPTkcgICAgICAgIHRtT3Zlcmhhbmc7DQogICAgTE9ORyAgICAgICAgdG1EaWdpdGl6ZWRBc3Bl
Y3RYOw0KICAgIExPTkcgICAgICAgIHRtRGlnaXRpemVkQXNwZWN0WTsNCiAgICBXQ0hBUiAgICAg
ICB0bUZpcnN0Q2hhcjsNCiAgICBXQ0hBUiAgICAgICB0bUxhc3RDaGFyOw0KICAgIFdDSEFSICAg
ICAgIHRtRGVmYXVsdENoYXI7DQogICAgV0NIQVIgICAgICAgdG1CcmVha0NoYXI7DQogICAgQllU
RSAgICAgICAgdG1JdGFsaWM7DQogICAgQllURSAgICAgICAgdG1VbmRlcmxpbmVkOw0KICAgIEJZ
VEUgICAgICAgIHRtU3RydWNrT3V0Ow0KICAgIEJZVEUgICAgICAgIHRtUGl0Y2hBbmRGYW1pbHk7
DQogICAgQllURSAgICAgICAgdG1DaGFyU2V0Ow0KfSBURVhUTUVUUklDVywgKlBURVhUTUVUUklD
VywgICpOUFRFWFRNRVRSSUNXLCAgKkxQVEVYVE1FVFJJQ1c7DQoNCnR5cGVkZWYgVEVYVE1FVFJJ
Q1cgVEVYVE1FVFJJQzsNCnR5cGVkZWYgUFRFWFRNRVRSSUNXIFBURVhUTUVUUklDOw0KdHlwZWRl
ZiBOUFRFWFRNRVRSSUNXIE5QVEVYVE1FVFJJQzsNCnR5cGVkZWYgTFBURVhUTUVUUklDVyBMUFRF
WFRNRVRSSUM7DQoNCg0KDQoNCg0KI2xpbmUgMTIxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
DQojbGluZSAxMjEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHBvcHBhY2suaCINCg0KDQojbGluZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgi
DQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAxMjE1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZ2RpLmgiDQojbGluZSAxMjE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBz
aHBhY2s0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHB1c2gsNCkNCg0K
DQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrNC5oIg0KDQoNCiNsaW5lIDMzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s0LmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxw
c2hwYWNrNC5oIg0KI2xpbmUgMTIzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ05FV1RFWFRNRVRS
SUNBDQp7DQogICAgTE9ORyAgICAgICAgdG1IZWlnaHQ7DQogICAgTE9ORyAgICAgICAgdG1Bc2Nl
bnQ7DQogICAgTE9ORyAgICAgICAgdG1EZXNjZW50Ow0KICAgIExPTkcgICAgICAgIHRtSW50ZXJu
YWxMZWFkaW5nOw0KICAgIExPTkcgICAgICAgIHRtRXh0ZXJuYWxMZWFkaW5nOw0KICAgIExPTkcg
ICAgICAgIHRtQXZlQ2hhcldpZHRoOw0KICAgIExPTkcgICAgICAgIHRtTWF4Q2hhcldpZHRoOw0K
ICAgIExPTkcgICAgICAgIHRtV2VpZ2h0Ow0KICAgIExPTkcgICAgICAgIHRtT3Zlcmhhbmc7DQog
ICAgTE9ORyAgICAgICAgdG1EaWdpdGl6ZWRBc3BlY3RYOw0KICAgIExPTkcgICAgICAgIHRtRGln
aXRpemVkQXNwZWN0WTsNCiAgICBCWVRFICAgICAgICB0bUZpcnN0Q2hhcjsNCiAgICBCWVRFICAg
ICAgICB0bUxhc3RDaGFyOw0KICAgIEJZVEUgICAgICAgIHRtRGVmYXVsdENoYXI7DQogICAgQllU
RSAgICAgICAgdG1CcmVha0NoYXI7DQogICAgQllURSAgICAgICAgdG1JdGFsaWM7DQogICAgQllU
RSAgICAgICAgdG1VbmRlcmxpbmVkOw0KICAgIEJZVEUgICAgICAgIHRtU3RydWNrT3V0Ow0KICAg
IEJZVEUgICAgICAgIHRtUGl0Y2hBbmRGYW1pbHk7DQogICAgQllURSAgICAgICAgdG1DaGFyU2V0
Ow0KICAgIERXT1JEICAgbnRtRmxhZ3M7DQogICAgVUlOVCAgICBudG1TaXplRU07DQogICAgVUlO
VCAgICBudG1DZWxsSGVpZ2h0Ow0KICAgIFVJTlQgICAgbnRtQXZnV2lkdGg7DQp9IE5FV1RFWFRN
RVRSSUNBLCAqUE5FV1RFWFRNRVRSSUNBLCAgKk5QTkVXVEVYVE1FVFJJQ0EsICAqTFBORVdURVhU
TUVUUklDQTsNCnR5cGVkZWYgc3RydWN0IHRhZ05FV1RFWFRNRVRSSUNXDQp7DQogICAgTE9ORyAg
ICAgICAgdG1IZWlnaHQ7DQogICAgTE9ORyAgICAgICAgdG1Bc2NlbnQ7DQogICAgTE9ORyAgICAg
ICAgdG1EZXNjZW50Ow0KICAgIExPTkcgICAgICAgIHRtSW50ZXJuYWxMZWFkaW5nOw0KICAgIExP
TkcgICAgICAgIHRtRXh0ZXJuYWxMZWFkaW5nOw0KICAgIExPTkcgICAgICAgIHRtQXZlQ2hhcldp
ZHRoOw0KICAgIExPTkcgICAgICAgIHRtTWF4Q2hhcldpZHRoOw0KICAgIExPTkcgICAgICAgIHRt
V2VpZ2h0Ow0KICAgIExPTkcgICAgICAgIHRtT3Zlcmhhbmc7DQogICAgTE9ORyAgICAgICAgdG1E
aWdpdGl6ZWRBc3BlY3RYOw0KICAgIExPTkcgICAgICAgIHRtRGlnaXRpemVkQXNwZWN0WTsNCiAg
ICBXQ0hBUiAgICAgICB0bUZpcnN0Q2hhcjsNCiAgICBXQ0hBUiAgICAgICB0bUxhc3RDaGFyOw0K
ICAgIFdDSEFSICAgICAgIHRtRGVmYXVsdENoYXI7DQogICAgV0NIQVIgICAgICAgdG1CcmVha0No
YXI7DQogICAgQllURSAgICAgICAgdG1JdGFsaWM7DQogICAgQllURSAgICAgICAgdG1VbmRlcmxp
bmVkOw0KICAgIEJZVEUgICAgICAgIHRtU3RydWNrT3V0Ow0KICAgIEJZVEUgICAgICAgIHRtUGl0
Y2hBbmRGYW1pbHk7DQogICAgQllURSAgICAgICAgdG1DaGFyU2V0Ow0KICAgIERXT1JEICAgbnRt
RmxhZ3M7DQogICAgVUlOVCAgICBudG1TaXplRU07DQogICAgVUlOVCAgICBudG1DZWxsSGVpZ2h0
Ow0KICAgIFVJTlQgICAgbnRtQXZnV2lkdGg7DQp9IE5FV1RFWFRNRVRSSUNXLCAqUE5FV1RFWFRN
RVRSSUNXLCAgKk5QTkVXVEVYVE1FVFJJQ1csICAqTFBORVdURVhUTUVUUklDVzsNCg0KdHlwZWRl
ZiBORVdURVhUTUVUUklDVyBORVdURVhUTUVUUklDOw0KdHlwZWRlZiBQTkVXVEVYVE1FVFJJQ1cg
UE5FV1RFWFRNRVRSSUM7DQp0eXBlZGVmIE5QTkVXVEVYVE1FVFJJQ1cgTlBORVdURVhUTUVUUklD
Ow0KdHlwZWRlZiBMUE5FV1RFWFRNRVRSSUNXIExQTkVXVEVYVE1FVFJJQzsNCg0KDQoNCg0KDQoj
bGluZSAxMzAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNsaW5lIDEzMDMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccG9wcGFjay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFj
ayhwb3ApDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KDQoNCiNs
aW5lIDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDM3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDEzMDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0K
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
TkVXVEVYVE1FVFJJQ0VYQQ0Kew0KICAgIE5FV1RFWFRNRVRSSUNBICBudG1UbTsNCiAgICBGT05U
U0lHTkFUVVJFICAgbnRtRm9udFNpZzsNCn1ORVdURVhUTUVUUklDRVhBOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnTkVXVEVYVE1FVFJJQ0VYVw0Kew0KICAgIE5FV1RFWFRNRVRSSUNXICBudG1UbTsNCiAg
ICBGT05UU0lHTkFUVVJFICAgbnRtRm9udFNpZzsNCn1ORVdURVhUTUVUUklDRVhXOw0KDQp0eXBl
ZGVmIE5FV1RFWFRNRVRSSUNFWFcgTkVXVEVYVE1FVFJJQ0VYOw0KDQoNCiNsaW5lIDEzMjcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI2xpbmUgMTMyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCiNsaW5lIDEzMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCIN
Cg0KI2xpbmUgMTMzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdQRUxBUlJBWQ0KICB7DQog
ICAgTE9ORyAgICAgICAgcGFYQ291bnQ7DQogICAgTE9ORyAgICAgICAgcGFZQ291bnQ7DQogICAg
TE9ORyAgICAgICAgcGFYRXh0Ow0KICAgIExPTkcgICAgICAgIHBhWUV4dDsNCiAgICBCWVRFICAg
ICAgICBwYVJHQnM7DQogIH0gUEVMQVJSQVksICpQUEVMQVJSQVksICAqTlBQRUxBUlJBWSwgICpM
UFBFTEFSUkFZOw0KDQojbGluZSAxMzQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IHRhZ0xPR0JSVVNIDQogIHsNCiAgICBVSU5UICAgICAgICBsYlN0eWxlOw0K
ICAgIENPTE9SUkVGICAgIGxiQ29sb3I7DQogICAgVUxPTkdfUFRSICAgbGJIYXRjaDsNCiAgfSBM
T0dCUlVTSCwgKlBMT0dCUlVTSCwgICpOUExPR0JSVVNILCAgKkxQTE9HQlJVU0g7DQoNCnR5cGVk
ZWYgc3RydWN0IHRhZ0xPR0JSVVNIMzINCiAgew0KICAgIFVJTlQgICAgICAgIGxiU3R5bGU7DQog
ICAgQ09MT1JSRUYgICAgbGJDb2xvcjsNCiAgICBVTE9ORyAgICAgICBsYkhhdGNoOw0KICB9IExP
R0JSVVNIMzIsICpQTE9HQlJVU0gzMiwgICpOUExPR0JSVVNIMzIsICAqTFBMT0dCUlVTSDMyOw0K
DQojbGluZSAxMzcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgTE9HQlJVU0ggICAg
ICAgICAgICBQQVRURVJOOw0KdHlwZWRlZiBQQVRURVJOICAgICAgICAgICAgICpQUEFUVEVSTjsN
CnR5cGVkZWYgUEFUVEVSTiAgICAgICAgICpOUFBBVFRFUk47DQp0eXBlZGVmIFBBVFRFUk4gICAg
ICAgICAgKkxQUEFUVEVSTjsNCg0KI2xpbmUgMTM4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdMT0dQRU4NCiAgew0KICAgIFVJTlQgICAgICAgIGxvcG5T
dHlsZTsNCiAgICBQT0lOVCAgICAgICBsb3BuV2lkdGg7DQogICAgQ09MT1JSRUYgICAgbG9wbkNv
bG9yOw0KICB9IExPR1BFTiwgKlBMT0dQRU4sICAqTlBMT0dQRU4sICAqTFBMT0dQRU47DQoNCiNs
aW5lIDEzOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRVhUTE9H
UEVOIHsNCiAgICBEV09SRCAgICAgICBlbHBQZW5TdHlsZTsNCiAgICBEV09SRCAgICAgICBlbHBX
aWR0aDsNCiAgICBVSU5UICAgICAgICBlbHBCcnVzaFN0eWxlOw0KICAgIENPTE9SUkVGICAgIGVs
cENvbG9yOw0KICAgIFVMT05HX1BUUiAgIGVscEhhdGNoOw0KICAgIERXT1JEICAgICAgIGVscE51
bUVudHJpZXM7DQogICAgRFdPUkQgICAgICAgZWxwU3R5bGVFbnRyeVsxXTsNCn0gRVhUTE9HUEVO
LCAqUEVYVExPR1BFTiwgICpOUEVYVExPR1BFTiwgICpMUEVYVExPR1BFTjsNCg0KI2xpbmUgMTQx
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRVhUTE9HUEVO
MzIgew0KICAgIERXT1JEICAgICAgIGVscFBlblN0eWxlOw0KICAgIERXT1JEICAgICAgIGVscFdp
ZHRoOw0KICAgIFVJTlQgICAgICAgIGVscEJydXNoU3R5bGU7DQogICAgQ09MT1JSRUYgICAgZWxw
Q29sb3I7DQogICAgVUxPTkcgICAgICAgZWxwSGF0Y2g7DQogICAgRFdPUkQgICAgICAgZWxwTnVt
RW50cmllczsNCiAgICBEV09SRCAgICAgICBlbHBTdHlsZUVudHJ5WzFdOw0KfSBFWFRMT0dQRU4z
MiwgKlBFWFRMT0dQRU4zMiwgICpOUEVYVExPR1BFTjMyLCAgKkxQRVhUTE9HUEVOMzI7DQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdQQUxFVFRFRU5UUlkgew0KICAgIEJZVEUgICAgICAgIHBlUmVk
Ow0KICAgIEJZVEUgICAgICAgIHBlR3JlZW47DQogICAgQllURSAgICAgICAgcGVCbHVlOw0KICAg
IEJZVEUgICAgICAgIHBlRmxhZ3M7DQp9IFBBTEVUVEVFTlRSWSwgKlBQQUxFVFRFRU5UUlksICAq
TFBQQUxFVFRFRU5UUlk7DQojbGluZSAxNDM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0xPR1BBTEVUVEUgew0KICAgIFdPUkQgICAgICAgIHBhbFZl
cnNpb247DQogICAgV09SRCAgICAgICAgcGFsTnVtRW50cmllczsNCiAgICAgIFBBTEVUVEVFTlRS
WSAgICAgICAgcGFsUGFsRW50cnlbMV07DQp9IExPR1BBTEVUVEUsICpQTE9HUEFMRVRURSwgICpO
UExPR1BBTEVUVEUsICAqTFBMT0dQQUxFVFRFOw0KI2xpbmUgMTQ0NSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmdkaS5oIg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0xPR0ZPTlRBDQp7DQogICAgTE9O
RyAgICAgIGxmSGVpZ2h0Ow0KICAgIExPTkcgICAgICBsZldpZHRoOw0KICAgIExPTkcgICAgICBs
ZkVzY2FwZW1lbnQ7DQogICAgTE9ORyAgICAgIGxmT3JpZW50YXRpb247DQogICAgTE9ORyAgICAg
IGxmV2VpZ2h0Ow0KICAgIEJZVEUgICAgICBsZkl0YWxpYzsNCiAgICBCWVRFICAgICAgbGZVbmRl
cmxpbmU7DQogICAgQllURSAgICAgIGxmU3RyaWtlT3V0Ow0KICAgIEJZVEUgICAgICBsZkNoYXJT
ZXQ7DQogICAgQllURSAgICAgIGxmT3V0UHJlY2lzaW9uOw0KICAgIEJZVEUgICAgICBsZkNsaXBQ
cmVjaXNpb247DQogICAgQllURSAgICAgIGxmUXVhbGl0eTsNCiAgICBCWVRFICAgICAgbGZQaXRj
aEFuZEZhbWlseTsNCiAgICBDSEFSICAgICAgbGZGYWNlTmFtZVszMl07DQp9IExPR0ZPTlRBLCAq
UExPR0ZPTlRBLCAgKk5QTE9HRk9OVEEsICAqTFBMT0dGT05UQTsNCnR5cGVkZWYgc3RydWN0IHRh
Z0xPR0ZPTlRXDQp7DQogICAgTE9ORyAgICAgIGxmSGVpZ2h0Ow0KICAgIExPTkcgICAgICBsZldp
ZHRoOw0KICAgIExPTkcgICAgICBsZkVzY2FwZW1lbnQ7DQogICAgTE9ORyAgICAgIGxmT3JpZW50
YXRpb247DQogICAgTE9ORyAgICAgIGxmV2VpZ2h0Ow0KICAgIEJZVEUgICAgICBsZkl0YWxpYzsN
CiAgICBCWVRFICAgICAgbGZVbmRlcmxpbmU7DQogICAgQllURSAgICAgIGxmU3RyaWtlT3V0Ow0K
ICAgIEJZVEUgICAgICBsZkNoYXJTZXQ7DQogICAgQllURSAgICAgIGxmT3V0UHJlY2lzaW9uOw0K
ICAgIEJZVEUgICAgICBsZkNsaXBQcmVjaXNpb247DQogICAgQllURSAgICAgIGxmUXVhbGl0eTsN
CiAgICBCWVRFICAgICAgbGZQaXRjaEFuZEZhbWlseTsNCiAgICBXQ0hBUiAgICAgbGZGYWNlTmFt
ZVszMl07DQp9IExPR0ZPTlRXLCAqUExPR0ZPTlRXLCAgKk5QTE9HRk9OVFcsICAqTFBMT0dGT05U
VzsNCg0KdHlwZWRlZiBMT0dGT05UVyBMT0dGT05UOw0KdHlwZWRlZiBQTE9HRk9OVFcgUExPR0ZP
TlQ7DQp0eXBlZGVmIE5QTE9HRk9OVFcgTlBMT0dGT05UOw0KdHlwZWRlZiBMUExPR0ZPTlRXIExQ
TE9HRk9OVDsNCg0KDQoNCg0KDQojbGluZSAxNDk1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoN
CiNsaW5lIDE0OTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
Cg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnRU5VTUxPR0ZPTlRBDQp7DQogICAgTE9HRk9OVEEgZWxmTG9nRm9udDsNCiAgICBCWVRFICAg
ICBlbGZGdWxsTmFtZVs2NF07DQogICAgQllURSAgICAgZWxmU3R5bGVbMzJdOw0KfSBFTlVNTE9H
Rk9OVEEsICogTFBFTlVNTE9HRk9OVEE7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VOVU1MT0dGT05U
Vw0Kew0KICAgIExPR0ZPTlRXIGVsZkxvZ0ZvbnQ7DQogICAgV0NIQVIgICAgZWxmRnVsbE5hbWVb
NjRdOw0KICAgIFdDSEFSICAgIGVsZlN0eWxlWzMyXTsNCn0gRU5VTUxPR0ZPTlRXLCAqIExQRU5V
TUxPR0ZPTlRXOw0KDQp0eXBlZGVmIEVOVU1MT0dGT05UVyBFTlVNTE9HRk9OVDsNCnR5cGVkZWYg
TFBFTlVNTE9HRk9OVFcgTFBFTlVNTE9HRk9OVDsNCg0KDQoNCiNsaW5lIDE1MjUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTlVNTE9HRk9OVEVYQQ0Kew0K
ICAgIExPR0ZPTlRBICAgIGVsZkxvZ0ZvbnQ7DQogICAgQllURSAgICAgICAgZWxmRnVsbE5hbWVb
NjRdOw0KICAgIEJZVEUgICAgICAgIGVsZlN0eWxlWzMyXTsNCiAgICBCWVRFICAgICAgICBlbGZT
Y3JpcHRbMzJdOw0KfSBFTlVNTE9HRk9OVEVYQSwgICpMUEVOVU1MT0dGT05URVhBOw0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnRU5VTUxPR0ZPTlRFWFcNCnsNCiAgICBMT0dGT05UVyAgICBlbGZMb2dGb250
Ow0KICAgIFdDSEFSICAgICAgIGVsZkZ1bGxOYW1lWzY0XTsNCiAgICBXQ0hBUiAgICAgICBlbGZT
dHlsZVszMl07DQogICAgV0NIQVIgICAgICAgZWxmU2NyaXB0WzMyXTsNCn0gRU5VTUxPR0ZPTlRF
WFcsICAqTFBFTlVNTE9HRk9OVEVYVzsNCg0KdHlwZWRlZiBFTlVNTE9HRk9OVEVYVyBFTlVNTE9H
Rk9OVEVYOw0KdHlwZWRlZiBMUEVOVU1MT0dGT05URVhXIExQRU5VTUxPR0ZPTlRFWDsNCg0KDQoN
CiNsaW5lIDE1NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNsaW5lIDE1NDkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCg0KI2xpbmUgMTU1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE1NzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxNTgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCiNsaW5lIDE1ODggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDE1OTUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTYzNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
Cg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1BBTk9TRQ0Kew0KICAgIEJZVEUg
ICAgYkZhbWlseVR5cGU7DQogICAgQllURSAgICBiU2VyaWZTdHlsZTsNCiAgICBCWVRFICAgIGJX
ZWlnaHQ7DQogICAgQllURSAgICBiUHJvcG9ydGlvbjsNCiAgICBCWVRFICAgIGJDb250cmFzdDsN
CiAgICBCWVRFICAgIGJTdHJva2VWYXJpYXRpb247DQogICAgQllURSAgICBiQXJtU3R5bGU7DQog
ICAgQllURSAgICBiTGV0dGVyZm9ybTsNCiAgICBCWVRFICAgIGJNaWRsaW5lOw0KICAgIEJZVEUg
ICAgYlhIZWlnaHQ7DQp9IFBBTk9TRSwgKiBMUFBBTk9TRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFWFRM
T0dGT05UQSB7DQogICAgTE9HRk9OVEEgICAgZWxmTG9nRm9udDsNCiAgICBCWVRFICAgICAgICBl
bGZGdWxsTmFtZVs2NF07DQogICAgQllURSAgICAgICAgZWxmU3R5bGVbMzJdOw0KICAgIERXT1JE
ICAgICAgIGVsZlZlcnNpb247ICAgICANCiAgICBEV09SRCAgICAgICBlbGZTdHlsZVNpemU7DQog
ICAgRFdPUkQgICAgICAgZWxmTWF0Y2g7DQogICAgRFdPUkQgICAgICAgZWxmUmVzZXJ2ZWQ7DQog
ICAgQllURSAgICAgICAgZWxmVmVuZG9ySWRbNF07DQogICAgRFdPUkQgICAgICAgZWxmQ3VsdHVy
ZTsgICAgIA0KICAgIFBBTk9TRSAgICAgIGVsZlBhbm9zZTsNCn0gRVhUTE9HRk9OVEEsICpQRVhU
TE9HRk9OVEEsICAqTlBFWFRMT0dGT05UQSwgICpMUEVYVExPR0ZPTlRBOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnRVhUTE9HRk9OVFcgew0KICAgIExPR0ZPTlRXICAgIGVsZkxvZ0ZvbnQ7DQogICAgV0NI
QVIgICAgICAgZWxmRnVsbE5hbWVbNjRdOw0KICAgIFdDSEFSICAgICAgIGVsZlN0eWxlWzMyXTsN
CiAgICBEV09SRCAgICAgICBlbGZWZXJzaW9uOyAgICAgDQogICAgRFdPUkQgICAgICAgZWxmU3R5
bGVTaXplOw0KICAgIERXT1JEICAgICAgIGVsZk1hdGNoOw0KICAgIERXT1JEICAgICAgIGVsZlJl
c2VydmVkOw0KICAgIEJZVEUgICAgICAgIGVsZlZlbmRvcklkWzRdOw0KICAgIERXT1JEICAgICAg
IGVsZkN1bHR1cmU7ICAgICANCiAgICBQQU5PU0UgICAgICBlbGZQYW5vc2U7DQp9IEVYVExPR0ZP
TlRXLCAqUEVYVExPR0ZPTlRXLCAgKk5QRVhUTE9HRk9OVFcsICAqTFBFWFRMT0dGT05UVzsNCg0K
dHlwZWRlZiBFWFRMT0dGT05UVyBFWFRMT0dGT05UOw0KdHlwZWRlZiBQRVhUTE9HRk9OVFcgUEVY
VExPR0ZPTlQ7DQp0eXBlZGVmIE5QRVhUTE9HRk9OVFcgTlBFWFRMT0dGT05UOw0KdHlwZWRlZiBM
UEVYVExPR0ZPTlRXIExQRVhUTE9HRk9OVDsNCg0KDQoNCg0KDQojbGluZSAxODQ0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZ2RpLmgiDQoNCiNsaW5lIDE4NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTkyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQojbGluZSAx
OTMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5NDEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCiNsaW5lIDIwNTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyMTI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIx
NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFt
aWx5DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfZGV2aWNlbW9kZUEgew0KICAgIEJZVEUgICBkbURl
dmljZU5hbWVbMzJdOw0KICAgIFdPUkQgZG1TcGVjVmVyc2lvbjsNCiAgICBXT1JEIGRtRHJpdmVy
VmVyc2lvbjsNCiAgICBXT1JEIGRtU2l6ZTsNCiAgICBXT1JEIGRtRHJpdmVyRXh0cmE7DQogICAg
RFdPUkQgZG1GaWVsZHM7DQogICAgdW5pb24gew0KICAgICAgDQogICAgICBzdHJ1Y3Qgew0KICAg
ICAgICBzaG9ydCBkbU9yaWVudGF0aW9uOw0KICAgICAgICBzaG9ydCBkbVBhcGVyU2l6ZTsNCiAg
ICAgICAgc2hvcnQgZG1QYXBlckxlbmd0aDsNCiAgICAgICAgc2hvcnQgZG1QYXBlcldpZHRoOw0K
ICAgICAgICBzaG9ydCBkbVNjYWxlOw0KICAgICAgICBzaG9ydCBkbUNvcGllczsNCiAgICAgICAg
c2hvcnQgZG1EZWZhdWx0U291cmNlOw0KICAgICAgICBzaG9ydCBkbVByaW50UXVhbGl0eTsNCiAg
ICAgIH0gOw0KICAgICAgDQogICAgICBzdHJ1Y3Qgew0KICAgICAgICBQT0lOVEwgZG1Qb3NpdGlv
bjsNCiAgICAgICAgRFdPUkQgIGRtRGlzcGxheU9yaWVudGF0aW9uOw0KICAgICAgICBEV09SRCAg
ZG1EaXNwbGF5Rml4ZWRPdXRwdXQ7DQogICAgICB9IDsNCiAgICB9IDsNCiAgICBzaG9ydCBkbUNv
bG9yOw0KICAgIHNob3J0IGRtRHVwbGV4Ow0KICAgIHNob3J0IGRtWVJlc29sdXRpb247DQogICAg
c2hvcnQgZG1UVE9wdGlvbjsNCiAgICBzaG9ydCBkbUNvbGxhdGU7DQogICAgQllURSAgIGRtRm9y
bU5hbWVbMzJdOw0KICAgIFdPUkQgICBkbUxvZ1BpeGVsczsNCiAgICBEV09SRCAgZG1CaXRzUGVy
UGVsOw0KICAgIERXT1JEICBkbVBlbHNXaWR0aDsNCiAgICBEV09SRCAgZG1QZWxzSGVpZ2h0Ow0K
ICAgIHVuaW9uIHsNCiAgICAgICAgRFdPUkQgIGRtRGlzcGxheUZsYWdzOw0KICAgICAgICBEV09S
RCAgZG1OdXA7DQogICAgfSA7DQogICAgRFdPUkQgIGRtRGlzcGxheUZyZXF1ZW5jeTsNCg0KICAg
IERXT1JEICBkbUlDTU1ldGhvZDsNCiAgICBEV09SRCAgZG1JQ01JbnRlbnQ7DQogICAgRFdPUkQg
IGRtTWVkaWFUeXBlOw0KICAgIERXT1JEICBkbURpdGhlclR5cGU7DQogICAgRFdPUkQgIGRtUmVz
ZXJ2ZWQxOw0KICAgIERXT1JEICBkbVJlc2VydmVkMjsNCg0KICAgIERXT1JEICBkbVBhbm5pbmdX
aWR0aDsNCiAgICBEV09SRCAgZG1QYW5uaW5nSGVpZ2h0Ow0KI2xpbmUgMjI0NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmdkaS5oIg0KI2xpbmUgMjI0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KfSBERVZN
T0RFQSwgKlBERVZNT0RFQSwgKk5QREVWTU9ERUEsICpMUERFVk1PREVBOw0KdHlwZWRlZiBzdHJ1
Y3QgX2RldmljZW1vZGVXIHsNCiAgICBXQ0hBUiAgZG1EZXZpY2VOYW1lWzMyXTsNCiAgICBXT1JE
IGRtU3BlY1ZlcnNpb247DQogICAgV09SRCBkbURyaXZlclZlcnNpb247DQogICAgV09SRCBkbVNp
emU7DQogICAgV09SRCBkbURyaXZlckV4dHJhOw0KICAgIERXT1JEIGRtRmllbGRzOw0KICAgIHVu
aW9uIHsNCiAgICAgIA0KICAgICAgc3RydWN0IHsNCiAgICAgICAgc2hvcnQgZG1PcmllbnRhdGlv
bjsNCiAgICAgICAgc2hvcnQgZG1QYXBlclNpemU7DQogICAgICAgIHNob3J0IGRtUGFwZXJMZW5n
dGg7DQogICAgICAgIHNob3J0IGRtUGFwZXJXaWR0aDsNCiAgICAgICAgc2hvcnQgZG1TY2FsZTsN
CiAgICAgICAgc2hvcnQgZG1Db3BpZXM7DQogICAgICAgIHNob3J0IGRtRGVmYXVsdFNvdXJjZTsN
CiAgICAgICAgc2hvcnQgZG1QcmludFF1YWxpdHk7DQogICAgICB9IDsNCiAgICAgIA0KICAgICAg
c3RydWN0IHsNCiAgICAgICAgUE9JTlRMIGRtUG9zaXRpb247DQogICAgICAgIERXT1JEICBkbURp
c3BsYXlPcmllbnRhdGlvbjsNCiAgICAgICAgRFdPUkQgIGRtRGlzcGxheUZpeGVkT3V0cHV0Ow0K
ICAgICAgfSA7DQogICAgfSA7DQogICAgc2hvcnQgZG1Db2xvcjsNCiAgICBzaG9ydCBkbUR1cGxl
eDsNCiAgICBzaG9ydCBkbVlSZXNvbHV0aW9uOw0KICAgIHNob3J0IGRtVFRPcHRpb247DQogICAg
c2hvcnQgZG1Db2xsYXRlOw0KICAgIFdDSEFSICBkbUZvcm1OYW1lWzMyXTsNCiAgICBXT1JEICAg
ZG1Mb2dQaXhlbHM7DQogICAgRFdPUkQgIGRtQml0c1BlclBlbDsNCiAgICBEV09SRCAgZG1QZWxz
V2lkdGg7DQogICAgRFdPUkQgIGRtUGVsc0hlaWdodDsNCiAgICB1bmlvbiB7DQogICAgICAgIERX
T1JEICBkbURpc3BsYXlGbGFnczsNCiAgICAgICAgRFdPUkQgIGRtTnVwOw0KICAgIH0gOw0KICAg
IERXT1JEICBkbURpc3BsYXlGcmVxdWVuY3k7DQoNCiAgICBEV09SRCAgZG1JQ01NZXRob2Q7DQog
ICAgRFdPUkQgIGRtSUNNSW50ZW50Ow0KICAgIERXT1JEICBkbU1lZGlhVHlwZTsNCiAgICBEV09S
RCAgZG1EaXRoZXJUeXBlOw0KICAgIERXT1JEICBkbVJlc2VydmVkMTsNCiAgICBEV09SRCAgZG1S
ZXNlcnZlZDI7DQoNCiAgICBEV09SRCAgZG1QYW5uaW5nV2lkdGg7DQogICAgRFdPUkQgIGRtUGFu
bmluZ0hlaWdodDsNCiNsaW5lIDIzMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNsaW5lIDIz
MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCn0gREVWTU9ERVcsICpQREVWTU9ERVcsICpOUERF
Vk1PREVXLCAqTFBERVZNT0RFVzsNCg0KdHlwZWRlZiBERVZNT0RFVyBERVZNT0RFOw0KdHlwZWRl
ZiBQREVWTU9ERVcgUERFVk1PREU7DQp0eXBlZGVmIE5QREVWTU9ERVcgTlBERVZNT0RFOw0KdHlw
ZWRlZiBMUERFVk1PREVXIExQREVWTU9ERTsNCg0KDQoNCg0KDQojbGluZSAyMzE0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAyNDIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNsaW5lIDI0MjUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMjQzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAyNDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KI2xpbmUgMjQ0OSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAyNDcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KI2xpbmUgMjQ3NSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDI1NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjYwNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNjE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2Rp
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjY1OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNjc2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDI3MjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0RJU1BMQVlfREVW
SUNFQSB7DQogICAgRFdPUkQgIGNiOw0KICAgIENIQVIgICBEZXZpY2VOYW1lWzMyXTsNCiAgICBD
SEFSICAgRGV2aWNlU3RyaW5nWzEyOF07DQogICAgRFdPUkQgIFN0YXRlRmxhZ3M7DQogICAgQ0hB
UiAgIERldmljZUlEWzEyOF07DQogICAgQ0hBUiAgIERldmljZUtleVsxMjhdOw0KfSBESVNQTEFZ
X0RFVklDRUEsICpQRElTUExBWV9ERVZJQ0VBLCAqTFBESVNQTEFZX0RFVklDRUE7DQp0eXBlZGVm
IHN0cnVjdCBfRElTUExBWV9ERVZJQ0VXIHsNCiAgICBEV09SRCAgY2I7DQogICAgV0NIQVIgIERl
dmljZU5hbWVbMzJdOw0KICAgIFdDSEFSICBEZXZpY2VTdHJpbmdbMTI4XTsNCiAgICBEV09SRCAg
U3RhdGVGbGFnczsNCiAgICBXQ0hBUiAgRGV2aWNlSURbMTI4XTsNCiAgICBXQ0hBUiAgRGV2aWNl
S2V5WzEyOF07DQp9IERJU1BMQVlfREVWSUNFVywgKlBESVNQTEFZX0RFVklDRVcsICpMUERJU1BM
QVlfREVWSUNFVzsNCg0KdHlwZWRlZiBESVNQTEFZX0RFVklDRVcgRElTUExBWV9ERVZJQ0U7DQp0
eXBlZGVmIFBESVNQTEFZX0RFVklDRVcgUERJU1BMQVlfREVWSUNFOw0KdHlwZWRlZiBMUERJU1BM
QVlfREVWSUNFVyBMUERJU1BMQVlfREVWSUNFOw0KDQoNCg0KDQojbGluZSAyNzU1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZ2RpLmgiDQoNCiNsaW5lIDI3NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjc2NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQoNCiNsaW5lIDI3NzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoN
Cg0KDQojbGluZSAyNzc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQojbGluZSAyNzgw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KI2xpbmUgMjc4NiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmdkaS5oIg0KDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCBESVNQ
TEFZQ09ORklHX1JBVElPTkFMDQp7DQogICAgVUlOVDMyICAgIE51bWVyYXRvcjsNCiAgICBVSU5U
MzIgICAgRGVub21pbmF0b3I7DQp9IERJU1BMQVlDT05GSUdfUkFUSU9OQUw7DQoNCnR5cGVkZWYg
ZW51bQ0Kew0KICAgIERJU1BMQVlDT05GSUdfT1VUUFVUX1RFQ0hOT0xPR1lfT1RIRVIgICAgICAg
ICAgICAgICAgICAgPSAtMSwNCiAgICBESVNQTEFZQ09ORklHX09VVFBVVF9URUNITk9MT0dZX0hE
MTUgICAgICAgICAgICAgICAgICAgID0gIDAsDQogICAgRElTUExBWUNPTkZJR19PVVRQVVRfVEVD
SE5PTE9HWV9TVklERU8gICAgICAgICAgICAgICAgICA9ICAxLA0KICAgIERJU1BMQVlDT05GSUdf
T1VUUFVUX1RFQ0hOT0xPR1lfQ09NUE9TSVRFX1ZJREVPICAgICAgICAgPSAgMiwNCiAgICBESVNQ
TEFZQ09ORklHX09VVFBVVF9URUNITk9MT0dZX0NPTVBPTkVOVF9WSURFTyAgICAgICAgID0gIDMs
DQogICAgRElTUExBWUNPTkZJR19PVVRQVVRfVEVDSE5PTE9HWV9EVkkgICAgICAgICAgICAgICAg
ICAgICA9ICA0LA0KICAgIERJU1BMQVlDT05GSUdfT1VUUFVUX1RFQ0hOT0xPR1lfSERNSSAgICAg
ICAgICAgICAgICAgICAgPSAgNSwNCiAgICBESVNQTEFZQ09ORklHX09VVFBVVF9URUNITk9MT0dZ
X0xWRFMgICAgICAgICAgICAgICAgICAgID0gIDYsDQogICAgRElTUExBWUNPTkZJR19PVVRQVVRf
VEVDSE5PTE9HWV9EX0pQTiAgICAgICAgICAgICAgICAgICA9ICA4LA0KICAgIERJU1BMQVlDT05G
SUdfT1VUUFVUX1RFQ0hOT0xPR1lfU0RJICAgICAgICAgICAgICAgICAgICAgPSAgOSwNCiAgICBE
SVNQTEFZQ09ORklHX09VVFBVVF9URUNITk9MT0dZX0RJU1BMQVlQT1JUX0VYVEVSTkFMICAgID0g
MTAsDQogICAgRElTUExBWUNPTkZJR19PVVRQVVRfVEVDSE5PTE9HWV9ESVNQTEFZUE9SVF9FTUJF
RERFRCAgICA9IDExLA0KICAgIERJU1BMQVlDT05GSUdfT1VUUFVUX1RFQ0hOT0xPR1lfVURJX0VY
VEVSTkFMICAgICAgICAgICAgPSAxMiwNCiAgICBESVNQTEFZQ09ORklHX09VVFBVVF9URUNITk9M
T0dZX1VESV9FTUJFRERFRCAgICAgICAgICAgID0gMTMsDQogICAgRElTUExBWUNPTkZJR19PVVRQ
VVRfVEVDSE5PTE9HWV9TRFRWRE9OR0xFICAgICAgICAgICAgICA9IDE0LA0KICAgIERJU1BMQVlD
T05GSUdfT1VUUFVUX1RFQ0hOT0xPR1lfTUlSQUNBU1QgICAgICAgICAgICAgICAgPSAxNSwNCiAg
ICBESVNQTEFZQ09ORklHX09VVFBVVF9URUNITk9MT0dZX0lORElSRUNUX1dJUkVEICAgICAgICAg
ID0gMTYsDQogICAgRElTUExBWUNPTkZJR19PVVRQVVRfVEVDSE5PTE9HWV9JTkRJUkVDVF9WSVJU
VUFMICAgICAgICA9IDE3LA0KICAgIERJU1BMQVlDT05GSUdfT1VUUFVUX1RFQ0hOT0xPR1lfSU5U
RVJOQUwgICAgICAgICAgICAgICAgPSAweDgwMDAwMDAwLA0KICAgIERJU1BMQVlDT05GSUdfT1VU
UFVUX1RFQ0hOT0xPR1lfRk9SQ0VfVUlOVDMyICAgICAgICAgICAgPSAweEZGRkZGRkZGDQp9IERJ
U1BMQVlDT05GSUdfVklERU9fT1VUUFVUX1RFQ0hOT0xPR1k7DQoNCnR5cGVkZWYgZW51bQ0Kew0K
ICAgIERJU1BMQVlDT05GSUdfU0NBTkxJTkVfT1JERVJJTkdfVU5TUEVDSUZJRUQgICAgICAgICAg
ICAgICAgID0gMCwNCiAgICBESVNQTEFZQ09ORklHX1NDQU5MSU5FX09SREVSSU5HX1BST0dSRVNT
SVZFICAgICAgICAgICAgICAgICA9IDEsDQogICAgRElTUExBWUNPTkZJR19TQ0FOTElORV9PUkRF
UklOR19JTlRFUkxBQ0VEICAgICAgICAgICAgICAgICAgPSAyLA0KICAgIERJU1BMQVlDT05GSUdf
U0NBTkxJTkVfT1JERVJJTkdfSU5URVJMQUNFRF9VUFBFUkZJRUxERklSU1QgID0gRElTUExBWUNP
TkZJR19TQ0FOTElORV9PUkRFUklOR19JTlRFUkxBQ0VELA0KICAgIERJU1BMQVlDT05GSUdfU0NB
TkxJTkVfT1JERVJJTkdfSU5URVJMQUNFRF9MT1dFUkZJRUxERklSU1QgID0gMywNCiAgICBESVNQ
TEFZQ09ORklHX1NDQU5MSU5FX09SREVSSU5HX0ZPUkNFX1VJTlQzMiAgICAgICAgICAgICAgICA9
IDB4RkZGRkZGRkYNCn0gRElTUExBWUNPTkZJR19TQ0FOTElORV9PUkRFUklORzsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgRElTUExBWUNPTkZJR18yRFJFR0lPTg0Kew0KICAgIFVJTlQzMiBjeDsNCiAgICBV
SU5UMzIgY3k7DQp9IERJU1BMQVlDT05GSUdfMkRSRUdJT047DQoNCnR5cGVkZWYgc3RydWN0IERJ
U1BMQVlDT05GSUdfVklERU9fU0lHTkFMX0lORk8NCnsNCiAgICBVSU5UNjQgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBpeGVsUmF0ZTsNCiAgICBESVNQTEFZQ09ORklHX1JBVElPTkFMICAgICAg
ICAgIGhTeW5jRnJlcTsNCiAgICBESVNQTEFZQ09ORklHX1JBVElPTkFMICAgICAgICAgIHZTeW5j
RnJlcTsNCiAgICBESVNQTEFZQ09ORklHXzJEUkVHSU9OICAgICAgICAgIGFjdGl2ZVNpemU7DQog
ICAgRElTUExBWUNPTkZJR18yRFJFR0lPTiAgICAgICAgICB0b3RhbFNpemU7DQoNCiAgICB1bmlv
bg0KICAgIHsNCiAgICAgICAgc3RydWN0DQogICAgICAgIHsNCiAgICAgICAgICAgIFVJTlQzMiB2
aWRlb1N0YW5kYXJkIDogMTY7DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgVUlOVDMyIHZT
eW5jRnJlcURpdmlkZXIgOiA2Ow0KDQogICAgICAgICAgICBVSU5UMzIgcmVzZXJ2ZWQgOiAxMDsN
CiAgICAgICAgfSBBZGRpdGlvbmFsU2lnbmFsSW5mbzsNCg0KICAgICAgICBVSU5UMzIgdmlkZW9T
dGFuZGFyZDsNCiAgICB9IDsNCg0KICAgIA0KICAgIERJU1BMQVlDT05GSUdfU0NBTkxJTkVfT1JE
RVJJTkcgc2NhbkxpbmVPcmRlcmluZzsNCn0gRElTUExBWUNPTkZJR19WSURFT19TSUdOQUxfSU5G
TzsNCg0KdHlwZWRlZiBlbnVtDQp7DQogICAgRElTUExBWUNPTkZJR19TQ0FMSU5HX0lERU5USVRZ
ICAgICAgICAgICAgICAgICAgPSAxLA0KICAgIERJU1BMQVlDT05GSUdfU0NBTElOR19DRU5URVJF
RCAgICAgICAgICAgICAgICAgID0gMiwNCiAgICBESVNQTEFZQ09ORklHX1NDQUxJTkdfU1RSRVRD
SEVEICAgICAgICAgICAgICAgICA9IDMsDQogICAgRElTUExBWUNPTkZJR19TQ0FMSU5HX0FTUEVD
VFJBVElPQ0VOVEVSRURNQVggICAgPSA0LA0KICAgIERJU1BMQVlDT05GSUdfU0NBTElOR19DVVNU
T00gICAgICAgICAgICAgICAgICAgID0gNSwNCiAgICBESVNQTEFZQ09ORklHX1NDQUxJTkdfUFJF
RkVSUkVEICAgICAgICAgICAgICAgICA9IDEyOCwNCiAgICBESVNQTEFZQ09ORklHX1NDQUxJTkdf
Rk9SQ0VfVUlOVDMyICAgICAgICAgICAgICA9IDB4RkZGRkZGRkYNCn0gRElTUExBWUNPTkZJR19T
Q0FMSU5HOw0KDQp0eXBlZGVmIGVudW0NCnsNCiAgICBESVNQTEFZQ09ORklHX1JPVEFUSU9OX0lE
RU5USVRZICAgICA9IDEsDQogICAgRElTUExBWUNPTkZJR19ST1RBVElPTl9ST1RBVEU5MCAgICAg
PSAyLA0KICAgIERJU1BMQVlDT05GSUdfUk9UQVRJT05fUk9UQVRFMTgwICAgID0gMywNCiAgICBE
SVNQTEFZQ09ORklHX1JPVEFUSU9OX1JPVEFURTI3MCAgICA9IDQsDQogICAgRElTUExBWUNPTkZJ
R19ST1RBVElPTl9GT1JDRV9VSU5UMzIgPSAweEZGRkZGRkZGDQp9IERJU1BMQVlDT05GSUdfUk9U
QVRJT047DQoNCnR5cGVkZWYgZW51bQ0Kew0KICAgIERJU1BMQVlDT05GSUdfTU9ERV9JTkZPX1RZ
UEVfU09VUkNFICAgICAgICA9IDEsDQogICAgRElTUExBWUNPTkZJR19NT0RFX0lORk9fVFlQRV9U
QVJHRVQgICAgICAgID0gMiwNCiAgICBESVNQTEFZQ09ORklHX01PREVfSU5GT19UWVBFX0RFU0tU
T1BfSU1BR0UgPSAzLA0KICAgIERJU1BMQVlDT05GSUdfTU9ERV9JTkZPX1RZUEVfRk9SQ0VfVUlO
VDMyID0gMHhGRkZGRkZGRg0KfSBESVNQTEFZQ09ORklHX01PREVfSU5GT19UWVBFOw0KDQp0eXBl
ZGVmIGVudW0NCnsNCiAgICBESVNQTEFZQ09ORklHX1BJWEVMRk9STUFUXzhCUFAgICAgICAgICAg
PSAxLA0KICAgIERJU1BMQVlDT05GSUdfUElYRUxGT1JNQVRfMTZCUFAgICAgICAgICA9IDIsDQog
ICAgRElTUExBWUNPTkZJR19QSVhFTEZPUk1BVF8yNEJQUCAgICAgICAgID0gMywNCiAgICBESVNQ
TEFZQ09ORklHX1BJWEVMRk9STUFUXzMyQlBQICAgICAgICAgPSA0LA0KICAgIERJU1BMQVlDT05G
SUdfUElYRUxGT1JNQVRfTk9OR0RJICAgICAgICA9IDUsDQogICAgRElTUExBWUNPTkZJR19QSVhF
TEZPUk1BVF9GT1JDRV9VSU5UMzIgID0gMHhmZmZmZmZmZg0KfSBESVNQTEFZQ09ORklHX1BJWEVM
Rk9STUFUOw0KDQp0eXBlZGVmIHN0cnVjdCBESVNQTEFZQ09ORklHX1NPVVJDRV9NT0RFDQp7DQog
ICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOw0KICAgIFVJTlQzMiAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQ7DQogICAgRElTUExBWUNPTkZJR19QSVhFTEZPUk1BVCAgIHBp
eGVsRm9ybWF0Ow0KICAgIFBPSU5UTCAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjsNCn0g
RElTUExBWUNPTkZJR19TT1VSQ0VfTU9ERTsNCg0KdHlwZWRlZiBzdHJ1Y3QgRElTUExBWUNPTkZJ
R19UQVJHRVRfTU9ERQ0Kew0KICAgIERJU1BMQVlDT05GSUdfVklERU9fU0lHTkFMX0lORk8gICB0
YXJnZXRWaWRlb1NpZ25hbEluZm87DQp9IERJU1BMQVlDT05GSUdfVEFSR0VUX01PREU7DQoNCnR5
cGVkZWYgc3RydWN0IERJU1BMQVlDT05GSUdfREVTS1RPUF9JTUFHRV9JTkZPDQp7DQogICAgUE9J
TlRMIFBhdGhTb3VyY2VTaXplOw0KICAgIFJFQ1RMIERlc2t0b3BJbWFnZVJlZ2lvbjsNCiAgICBS
RUNUTCBEZXNrdG9wSW1hZ2VDbGlwOw0KfSBESVNQTEFZQ09ORklHX0RFU0tUT1BfSU1BR0VfSU5G
TzsNCg0KdHlwZWRlZiBzdHJ1Y3QgRElTUExBWUNPTkZJR19NT0RFX0lORk8NCnsNCiAgICBESVNQ
TEFZQ09ORklHX01PREVfSU5GT19UWVBFICAgIGluZm9UeXBlOw0KICAgIFVJTlQzMiAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWQ7DQogICAgTFVJRCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGFwdGVySWQ7DQogICAgdW5pb24NCiAgICB7DQogICAgICAgIERJU1BMQVlDT05GSUdfVEFS
R0VUX01PREUgICB0YXJnZXRNb2RlOw0KICAgICAgICBESVNQTEFZQ09ORklHX1NPVVJDRV9NT0RF
ICAgc291cmNlTW9kZTsNCiAgICAgICAgRElTUExBWUNPTkZJR19ERVNLVE9QX0lNQUdFX0lORk8g
ICAgZGVza3RvcEltYWdlSW5mbzsNCiAgICB9IDsNCn0gRElTUExBWUNPTkZJR19NT0RFX0lORk87
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IERJU1BMQVlDT05GSUdfUEFUSF9TT1VSQ0Vf
SU5GTw0Kew0KICAgIExVSUQgICAgYWRhcHRlcklkOw0KICAgIFVJTlQzMiAgaWQ7DQogICAgdW5p
b24NCiAgICB7DQogICAgICAgIFVJTlQzMiBtb2RlSW5mb0lkeDsNCiAgICAgICAgc3RydWN0DQog
ICAgICAgIHsNCiAgICAgICAgICAgIFVJTlQzMiBjbG9uZUdyb3VwSWQgICAgICAgOiAxNjsNCiAg
ICAgICAgICAgIFVJTlQzMiBzb3VyY2VNb2RlSW5mb0lkeCAgOiAxNjsNCiAgICAgICAgfSA7DQog
ICAgfSA7DQoNCiAgICBVSU5UMzIgIHN0YXR1c0ZsYWdzOw0KfSBESVNQTEFZQ09ORklHX1BBVEhf
U09VUkNFX0lORk87DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IERJU1BMQVlDT05GSUdf
UEFUSF9UQVJHRVRfSU5GTw0Kew0KICAgIExVSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZGFwdGVySWQ7DQogICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlkOw0KICAgIHVuaW9uDQogICAgew0KICAgICAgICBVSU5UMzIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kZUluZm9JZHg7DQogICAgICAgIHN0cnVjdA0KICAgICAg
ICB7DQogICAgICAgICAgICBVSU5UMzIgZGVza3RvcE1vZGVJbmZvSWR4IDogMTY7DQogICAgICAg
ICAgICBVSU5UMzIgdGFyZ2V0TW9kZUluZm9JZHggIDogMTY7DQogICAgICAgIH0gOw0KICAgIH0g
Ow0KICAgIERJU1BMQVlDT05GSUdfVklERU9fT1VUUFVUX1RFQ0hOT0xPR1kgICBvdXRwdXRUZWNo
bm9sb2d5Ow0KICAgIERJU1BMQVlDT05GSUdfUk9UQVRJT04gICAgICAgICAgICAgICAgICByb3Rh
dGlvbjsNCiAgICBESVNQTEFZQ09ORklHX1NDQUxJTkcgICAgICAgICAgICAgICAgICAgc2NhbGlu
ZzsNCiAgICBESVNQTEFZQ09ORklHX1JBVElPTkFMICAgICAgICAgICAgICAgICAgcmVmcmVzaFJh
dGU7DQogICAgRElTUExBWUNPTkZJR19TQ0FOTElORV9PUkRFUklORyAgICAgICAgIHNjYW5MaW5l
T3JkZXJpbmc7DQogICAgQk9PTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
cmdldEF2YWlsYWJsZTsNCiAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzRmxhZ3M7DQp9IERJU1BMQVlDT05GSUdfUEFUSF9UQVJHRVRfSU5GTzsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBESVNQTEFZQ09ORklHX1BBVEhfSU5GTw0K
ew0KICAgIERJU1BMQVlDT05GSUdfUEFUSF9TT1VSQ0VfSU5GTyAgc291cmNlSW5mbzsNCiAgICBE
SVNQTEFZQ09ORklHX1BBVEhfVEFSR0VUX0lORk8gIHRhcmdldEluZm87DQogICAgVUlOVDMyICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbGFnczsNCn0gRElTUExBWUNPTkZJR19QQVRIX0lORk87
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBESVNQTEFZQ09ORklHX1RPUE9MT0dZ
X0lEDQp7DQogICAgICBESVNQTEFZQ09ORklHX1RPUE9MT0dZX0lOVEVSTkFMICAgICAgID0gMHgw
MDAwMDAwMSwNCiAgICAgIERJU1BMQVlDT05GSUdfVE9QT0xPR1lfQ0xPTkUgICAgICAgICAgPSAw
eDAwMDAwMDAyLA0KICAgICAgRElTUExBWUNPTkZJR19UT1BPTE9HWV9FWFRFTkQgICAgICAgICA9
IDB4MDAwMDAwMDQsDQogICAgICBESVNQTEFZQ09ORklHX1RPUE9MT0dZX0VYVEVSTkFMICAgICAg
ID0gMHgwMDAwMDAwOCwNCiAgICAgIERJU1BMQVlDT05GSUdfVE9QT0xPR1lfRk9SQ0VfVUlOVDMy
ICAgPSAweEZGRkZGRkZGDQp9IERJU1BMQVlDT05GSUdfVE9QT0xPR1lfSUQ7DQoNCg0KdHlwZWRl
ZiBlbnVtDQp7DQogICAgICBESVNQTEFZQ09ORklHX0RFVklDRV9JTkZPX0dFVF9TT1VSQ0VfTkFN
RSAgICAgICAgICAgICAgICAgPSAxLA0KICAgICAgRElTUExBWUNPTkZJR19ERVZJQ0VfSU5GT19H
RVRfVEFSR0VUX05BTUUgICAgICAgICAgICAgICAgID0gMiwNCiAgICAgIERJU1BMQVlDT05GSUdf
REVWSUNFX0lORk9fR0VUX1RBUkdFVF9QUkVGRVJSRURfTU9ERSAgICAgICA9IDMsDQogICAgICBE
SVNQTEFZQ09ORklHX0RFVklDRV9JTkZPX0dFVF9BREFQVEVSX05BTUUgICAgICAgICAgICAgICAg
PSA0LA0KICAgICAgRElTUExBWUNPTkZJR19ERVZJQ0VfSU5GT19TRVRfVEFSR0VUX1BFUlNJU1RF
TkNFICAgICAgICAgID0gNSwNCiAgICAgIERJU1BMQVlDT05GSUdfREVWSUNFX0lORk9fR0VUX1RB
UkdFVF9CQVNFX1RZUEUgICAgICAgICAgICA9IDYsDQogICAgICBESVNQTEFZQ09ORklHX0RFVklD
RV9JTkZPX0dFVF9TVVBQT1JUX1ZJUlRVQUxfUkVTT0xVVElPTiAgPSA3LA0KICAgICAgRElTUExB
WUNPTkZJR19ERVZJQ0VfSU5GT19TRVRfU1VQUE9SVF9WSVJUVUFMX1JFU09MVVRJT04gID0gOCwN
CiAgICAgIERJU1BMQVlDT05GSUdfREVWSUNFX0lORk9fR0VUX0FEVkFOQ0VEX0NPTE9SX0lORk8g
ICAgICAgICA9IDksDQogICAgICBESVNQTEFZQ09ORklHX0RFVklDRV9JTkZPX1NFVF9BRFZBTkNF
RF9DT0xPUl9TVEFURSAgICAgICAgPSAxMCwNCiAgICAgIERJU1BMQVlDT05GSUdfREVWSUNFX0lO
Rk9fR0VUX1NEUl9XSElURV9MRVZFTCAgICAgICAgICAgICA9IDExLA0KICAgICAgRElTUExBWUNP
TkZJR19ERVZJQ0VfSU5GT19GT1JDRV9VSU5UMzIgICAgICAgICAgICAgICAgPSAweEZGRkZGRkZG
DQp9IERJU1BMQVlDT05GSUdfREVWSUNFX0lORk9fVFlQRTsNCg0KDQojbGluZSAzMDQ1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IERJU1BMQVlDT05GSUdfREVW
SUNFX0lORk9fSEVBREVSDQp7DQogICAgRElTUExBWUNPTkZJR19ERVZJQ0VfSU5GT19UWVBFICB0
eXBlOw0KICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTsNCiAgICBMVUlE
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXB0ZXJJZDsNCiAgICBVSU5UMzIgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkOw0KfSBESVNQTEFZQ09ORklHX0RFVklDRV9JTkZPX0hFQURF
UjsNCg0KI2xpbmUgMzA2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCBE
SVNQTEFZQ09ORklHX1NPVVJDRV9ERVZJQ0VfTkFNRQ0Kew0KICAgIERJU1BMQVlDT05GSUdfREVW
SUNFX0lORk9fSEVBREVSICAgICAgICAgICAgaGVhZGVyOw0KICAgIFdDSEFSICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0dkaURldmljZU5hbWVbMzJdOw0KfSBESVNQ
TEFZQ09ORklHX1NPVVJDRV9ERVZJQ0VfTkFNRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgRElTUExBWUNP
TkZJR19UQVJHRVRfREVWSUNFX05BTUVfRkxBR1MNCnsNCiAgICB1bmlvbg0KICAgIHsNCiAgICAg
ICAgc3RydWN0DQogICAgICAgIHsNCiAgICAgICAgICAgIFVJTlQzMiAgZnJpZW5kbHlOYW1lRnJv
bUVkaWQgOiAxOw0KICAgICAgICAgICAgVUlOVDMyICBmcmllbmRseU5hbWVGb3JjZWQgOiAxOw0K
ICAgICAgICAgICAgVUlOVDMyICBlZGlkSWRzVmFsaWQgOiAxOw0KICAgICAgICAgICAgVUlOVDMy
ICByZXNlcnZlZCA6IDI5Ow0KICAgICAgICB9IDsNCiAgICAgICAgVUlOVDMyICB2YWx1ZTsNCiAg
ICB9IDsNCn0gRElTUExBWUNPTkZJR19UQVJHRVRfREVWSUNFX05BTUVfRkxBR1M7DQoNCnR5cGVk
ZWYgc3RydWN0IERJU1BMQVlDT05GSUdfVEFSR0VUX0RFVklDRV9OQU1FDQp7DQogICAgRElTUExB
WUNPTkZJR19ERVZJQ0VfSU5GT19IRUFERVIgICAgICAgICAgICBoZWFkZXI7DQogICAgRElTUExB
WUNPTkZJR19UQVJHRVRfREVWSUNFX05BTUVfRkxBR1MgICAgICBmbGFnczsNCiAgICBESVNQTEFZ
Q09ORklHX1ZJREVPX09VVFBVVF9URUNITk9MT0dZICAgICAgIG91dHB1dFRlY2hub2xvZ3k7DQog
ICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGlkTWFudWZh
Y3R1cmVJZDsNCiAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVkaWRQcm9kdWN0Q29kZUlkOw0KICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29ubmVjdG9ySW5zdGFuY2U7DQogICAgV0NIQVIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb25pdG9yRnJpZW5kbHlEZXZpY2VOYW1lWzY0XTsNCiAg
ICBXQ0hBUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3JEZXZp
Y2VQYXRoWzEyOF07DQp9IERJU1BMQVlDT05GSUdfVEFSR0VUX0RFVklDRV9OQU1FOw0KDQp0eXBl
ZGVmIHN0cnVjdCBESVNQTEFZQ09ORklHX1RBUkdFVF9QUkVGRVJSRURfTU9ERQ0Kew0KICAgIERJ
U1BMQVlDT05GSUdfREVWSUNFX0lORk9fSEVBREVSICAgIGhlYWRlcjsNCiAgICBVSU5UMzIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDsNCiAgICBVSU5UMzIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWlnaHQ7DQogICAgRElTUExBWUNPTkZJR19UQVJHRVRfTU9ERSAg
ICAgICAgICAgdGFyZ2V0TW9kZTsNCn0gRElTUExBWUNPTkZJR19UQVJHRVRfUFJFRkVSUkVEX01P
REU7DQoNCnR5cGVkZWYgc3RydWN0IERJU1BMQVlDT05GSUdfQURBUFRFUl9OQU1FDQp7DQogICAg
RElTUExBWUNPTkZJR19ERVZJQ0VfSU5GT19IRUFERVIgICAgaGVhZGVyOw0KICAgIFdDSEFSICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXB0ZXJEZXZpY2VQYXRoWzEyOF07DQp9IERJ
U1BMQVlDT05GSUdfQURBUFRFUl9OQU1FOw0KDQp0eXBlZGVmIHN0cnVjdCBESVNQTEFZQ09ORklH
X1RBUkdFVF9CQVNFX1RZUEUgew0KICAgIERJU1BMQVlDT05GSUdfREVWSUNFX0lORk9fSEVBREVS
ICAgICAgaGVhZGVyOw0KICAgIERJU1BMQVlDT05GSUdfVklERU9fT1VUUFVUX1RFQ0hOT0xPR1kg
YmFzZU91dHB1dFRlY2hub2xvZ3k7DQp9IERJU1BMQVlDT05GSUdfVEFSR0VUX0JBU0VfVFlQRTsN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBESVNQTEFZQ09ORklHX1NFVF9UQVJHRVRfUEVSU0lTVEVOQ0UN
CnsNCiAgICBESVNQTEFZQ09ORklHX0RFVklDRV9JTkZPX0hFQURFUiAgICBoZWFkZXI7DQogICAg
dW5pb24NCiAgICB7DQogICAgICAgIHN0cnVjdA0KICAgICAgICB7DQogICAgICAgICAgICBVSU5U
MzIgYm9vdFBlcnNpc3RlbmNlT24gICAgOiAxOw0KICAgICAgICAgICAgVUlOVDMyIHJlc2VydmVk
ICAgICAgICAgICAgIDogMzE7DQogICAgICAgIH0gOw0KICAgICAgICBVSU5UMzIgdmFsdWU7DQog
ICAgfSA7DQp9IERJU1BMQVlDT05GSUdfU0VUX1RBUkdFVF9QRVJTSVNURU5DRTsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgRElTUExBWUNPTkZJR19TVVBQT1JUX1ZJUlRVQUxfUkVTT0xVVElPTg0Kew0KICAg
IERJU1BMQVlDT05GSUdfREVWSUNFX0lORk9fSEVBREVSICAgIGhlYWRlcjsNCiAgICB1bmlvbg0K
ICAgIHsNCiAgICAgICAgc3RydWN0DQogICAgICAgIHsNCiAgICAgICAgICAgIFVJTlQzMiBkaXNh
YmxlTW9uaXRvclZpcnR1YWxSZXNvbHV0aW9uICA6IDE7DQogICAgICAgICAgICBVSU5UMzIgcmVz
ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgOiAzMTsNCiAgICAgICAgfSA7DQogICAgICAg
IFVJTlQzMiB2YWx1ZTsNCiAgICB9IDsNCn0gRElTUExBWUNPTkZJR19TVVBQT1JUX1ZJUlRVQUxf
UkVTT0xVVElPTjsNCg0KdHlwZWRlZiBlbnVtIF9ESVNQTEFZQ09ORklHX0NPTE9SX0VOQ09ESU5H
DQp7DQogICAgRElTUExBWUNPTkZJR19DT0xPUl9FTkNPRElOR19SR0IgICAgICAgICAgID0gMCwN
CiAgICBESVNQTEFZQ09ORklHX0NPTE9SX0VOQ09ESU5HX1lDQkNSNDQ0ICAgICAgPSAxLA0KICAg
IERJU1BMQVlDT05GSUdfQ09MT1JfRU5DT0RJTkdfWUNCQ1I0MjIgICAgICA9IDIsDQogICAgRElT
UExBWUNPTkZJR19DT0xPUl9FTkNPRElOR19ZQ0JDUjQyMCAgICAgID0gMywNCiAgICBESVNQTEFZ
Q09ORklHX0NPTE9SX0VOQ09ESU5HX0lOVEVOU0lUWSAgICAgPSA0LA0KICAgIERJU1BMQVlDT05G
SUdfQ09MT1JfRU5DT0RJTkdfRk9SQ0VfVUlOVDMyICA9IDB4RkZGRkZGRkYNCn0gRElTUExBWUNP
TkZJR19DT0xPUl9FTkNPRElORzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0RJU1BMQVlDT05GSUdfR0VU
X0FEVkFOQ0VEX0NPTE9SX0lORk8NCnsNCiAgICBESVNQTEFZQ09ORklHX0RFVklDRV9JTkZPX0hF
QURFUiBoZWFkZXI7DQogICAgdW5pb24NCiAgICB7DQogICAgICAgIHN0cnVjdA0KICAgICAgICB7
DQogICAgICAgICAgVUlOVDMyIGFkdmFuY2VkQ29sb3JTdXBwb3J0ZWQgICAgICAgIDoxOyAgICAN
CiAgICAgICAgICBVSU5UMzIgYWR2YW5jZWRDb2xvckVuYWJsZWQgICAgICAgICAgOjE7ICAgIA0K
ICAgICAgICAgIFVJTlQzMiB3aWRlQ29sb3JFbmZvcmNlZCAgICAgICAgICAgICA6MTsgICAgDQog
ICAgICAgICAgVUlOVDMyIGFkdmFuY2VkQ29sb3JGb3JjZURpc2FibGVkICAgIDoxOyAgICANCiAg
ICAgICAgICBVSU5UMzIgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgOjI4Ow0KICAgICAg
ICB9IDsNCg0KICAgICAgICBVSU5UMzIgdmFsdWU7DQogICAgfSA7DQoNCiAgICBESVNQTEFZQ09O
RklHX0NPTE9SX0VOQ09ESU5HIGNvbG9yRW5jb2Rpbmc7DQogICAgVUlOVDMyIGJpdHNQZXJDb2xv
ckNoYW5uZWw7DQp9IERJU1BMQVlDT05GSUdfR0VUX0FEVkFOQ0VEX0NPTE9SX0lORk87DQoNCnR5
cGVkZWYgc3RydWN0IF9ESVNQTEFZQ09ORklHX1NFVF9BRFZBTkNFRF9DT0xPUl9TVEFURQ0Kew0K
ICAgIERJU1BMQVlDT05GSUdfREVWSUNFX0lORk9fSEVBREVSIGhlYWRlcjsNCiAgICB1bmlvbg0K
ICAgIHsNCiAgICAgICAgc3RydWN0DQogICAgICAgIHsNCiAgICAgICAgICBVSU5UMzIgZW5hYmxl
QWR2YW5jZWRDb2xvciAgOjE7DQogICAgICAgICAgVUlOVDMyIHJlc2VydmVkICA6MzE7DQogICAg
ICAgIH0gOw0KDQogICAgICAgIFVJTlQzMiB2YWx1ZTsNCiAgICB9Ow0KfSBESVNQTEFZQ09ORklH
X1NFVF9BRFZBTkNFRF9DT0xPUl9TVEFURTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0RJU1BMQVlDT05G
SUdfU0RSX1dISVRFX0xFVkVMDQp7DQogICAgRElTUExBWUNPTkZJR19ERVZJQ0VfSU5GT19IRUFE
RVIgaGVhZGVyOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgVUxPTkcgU0RSV2hpdGVM
ZXZlbDsNCn0gRElTUExBWUNPTkZJR19TRFJfV0hJVEVfTEVWRUw7DQoNCiNsaW5lIDMyMDQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMzI0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IF9SR05EQVRBSEVBREVSIHsN
CiAgICBEV09SRCAgIGR3U2l6ZTsNCiAgICBEV09SRCAgIGlUeXBlOw0KICAgIERXT1JEICAgbkNv
dW50Ow0KICAgIERXT1JEICAgblJnblNpemU7DQogICAgUkVDVCAgICByY0JvdW5kOw0KfSBSR05E
QVRBSEVBREVSLCAqUFJHTkRBVEFIRUFERVI7DQoNCnR5cGVkZWYgc3RydWN0IF9SR05EQVRBIHsN
CiAgICBSR05EQVRBSEVBREVSICAgcmRoOw0KICAgIGNoYXIgICAgICAgICAgICBCdWZmZXJbMV07
DQp9IFJHTkRBVEEsICpQUkdOREFUQSwgICpOUFJHTkRBVEEsICAqTFBSR05EQVRBOw0KDQojbGlu
ZSAzMjYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCBf
QUJDIHsNCiAgICBpbnQgICAgIGFiY0E7DQogICAgVUlOVCAgICBhYmNCOw0KICAgIGludCAgICAg
YWJjQzsNCn0gQUJDLCAqUEFCQywgICpOUEFCQywgICpMUEFCQzsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X0FCQ0ZMT0FUIHsNCiAgICBGTE9BVCAgIGFiY2ZBOw0KICAgIEZMT0FUICAgYWJjZkI7DQogICAg
RkxPQVQgICBhYmNmQzsNCn0gQUJDRkxPQVQsICpQQUJDRkxPQVQsICAqTlBBQkNGTE9BVCwgICpM
UEFCQ0ZMT0FUOw0KDQojbGluZSAzMjg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0K
DQoNCnR5cGVkZWYgc3RydWN0IF9PVVRMSU5FVEVYVE1FVFJJQ0Egew0KICAgIFVJTlQgICAgb3Rt
U2l6ZTsNCiAgICBURVhUTUVUUklDQSBvdG1UZXh0TWV0cmljczsNCiAgICBCWVRFICAgIG90bUZp
bGxlcjsNCiAgICBQQU5PU0UgIG90bVBhbm9zZU51bWJlcjsNCiAgICBVSU5UICAgIG90bWZzU2Vs
ZWN0aW9uOw0KICAgIFVJTlQgICAgb3RtZnNUeXBlOw0KICAgICBpbnQgICAgb3Rtc0NoYXJTbG9w
ZVJpc2U7DQogICAgIGludCAgICBvdG1zQ2hhclNsb3BlUnVuOw0KICAgICBpbnQgICAgb3RtSXRh
bGljQW5nbGU7DQogICAgVUlOVCAgICBvdG1FTVNxdWFyZTsNCiAgICAgaW50ICAgIG90bUFzY2Vu
dDsNCiAgICAgaW50ICAgIG90bURlc2NlbnQ7DQogICAgVUlOVCAgICBvdG1MaW5lR2FwOw0KICAg
IFVJTlQgICAgb3Rtc0NhcEVtSGVpZ2h0Ow0KICAgIFVJTlQgICAgb3Rtc1hIZWlnaHQ7DQogICAg
UkVDVCAgICBvdG1yY0ZvbnRCb3g7DQogICAgIGludCAgICBvdG1NYWNBc2NlbnQ7DQogICAgIGlu
dCAgICBvdG1NYWNEZXNjZW50Ow0KICAgIFVJTlQgICAgb3RtTWFjTGluZUdhcDsNCiAgICBVSU5U
ICAgIG90bXVzTWluaW11bVBQRU07DQogICAgUE9JTlQgICBvdG1wdFN1YnNjcmlwdFNpemU7DQog
ICAgUE9JTlQgICBvdG1wdFN1YnNjcmlwdE9mZnNldDsNCiAgICBQT0lOVCAgIG90bXB0U3VwZXJz
Y3JpcHRTaXplOw0KICAgIFBPSU5UICAgb3RtcHRTdXBlcnNjcmlwdE9mZnNldDsNCiAgICBVSU5U
ICAgIG90bXNTdHJpa2VvdXRTaXplOw0KICAgICBpbnQgICAgb3Rtc1N0cmlrZW91dFBvc2l0aW9u
Ow0KICAgICBpbnQgICAgb3Rtc1VuZGVyc2NvcmVTaXplOw0KICAgICBpbnQgICAgb3Rtc1VuZGVy
c2NvcmVQb3NpdGlvbjsNCiAgICBQU1RSICAgIG90bXBGYW1pbHlOYW1lOw0KICAgIFBTVFIgICAg
b3RtcEZhY2VOYW1lOw0KICAgIFBTVFIgICAgb3RtcFN0eWxlTmFtZTsNCiAgICBQU1RSICAgIG90
bXBGdWxsTmFtZTsNCn0gT1VUTElORVRFWFRNRVRSSUNBLCAqUE9VVExJTkVURVhUTUVUUklDQSwg
ICpOUE9VVExJTkVURVhUTUVUUklDQSwgICpMUE9VVExJTkVURVhUTUVUUklDQTsNCnR5cGVkZWYg
c3RydWN0IF9PVVRMSU5FVEVYVE1FVFJJQ1cgew0KICAgIFVJTlQgICAgb3RtU2l6ZTsNCiAgICBU
RVhUTUVUUklDVyBvdG1UZXh0TWV0cmljczsNCiAgICBCWVRFICAgIG90bUZpbGxlcjsNCiAgICBQ
QU5PU0UgIG90bVBhbm9zZU51bWJlcjsNCiAgICBVSU5UICAgIG90bWZzU2VsZWN0aW9uOw0KICAg
IFVJTlQgICAgb3RtZnNUeXBlOw0KICAgICBpbnQgICAgb3Rtc0NoYXJTbG9wZVJpc2U7DQogICAg
IGludCAgICBvdG1zQ2hhclNsb3BlUnVuOw0KICAgICBpbnQgICAgb3RtSXRhbGljQW5nbGU7DQog
ICAgVUlOVCAgICBvdG1FTVNxdWFyZTsNCiAgICAgaW50ICAgIG90bUFzY2VudDsNCiAgICAgaW50
ICAgIG90bURlc2NlbnQ7DQogICAgVUlOVCAgICBvdG1MaW5lR2FwOw0KICAgIFVJTlQgICAgb3Rt
c0NhcEVtSGVpZ2h0Ow0KICAgIFVJTlQgICAgb3Rtc1hIZWlnaHQ7DQogICAgUkVDVCAgICBvdG1y
Y0ZvbnRCb3g7DQogICAgIGludCAgICBvdG1NYWNBc2NlbnQ7DQogICAgIGludCAgICBvdG1NYWNE
ZXNjZW50Ow0KICAgIFVJTlQgICAgb3RtTWFjTGluZUdhcDsNCiAgICBVSU5UICAgIG90bXVzTWlu
aW11bVBQRU07DQogICAgUE9JTlQgICBvdG1wdFN1YnNjcmlwdFNpemU7DQogICAgUE9JTlQgICBv
dG1wdFN1YnNjcmlwdE9mZnNldDsNCiAgICBQT0lOVCAgIG90bXB0U3VwZXJzY3JpcHRTaXplOw0K
ICAgIFBPSU5UICAgb3RtcHRTdXBlcnNjcmlwdE9mZnNldDsNCiAgICBVSU5UICAgIG90bXNTdHJp
a2VvdXRTaXplOw0KICAgICBpbnQgICAgb3Rtc1N0cmlrZW91dFBvc2l0aW9uOw0KICAgICBpbnQg
ICAgb3Rtc1VuZGVyc2NvcmVTaXplOw0KICAgICBpbnQgICAgb3Rtc1VuZGVyc2NvcmVQb3NpdGlv
bjsNCiAgICBQU1RSICAgIG90bXBGYW1pbHlOYW1lOw0KICAgIFBTVFIgICAgb3RtcEZhY2VOYW1l
Ow0KICAgIFBTVFIgICAgb3RtcFN0eWxlTmFtZTsNCiAgICBQU1RSICAgIG90bXBGdWxsTmFtZTsN
Cn0gT1VUTElORVRFWFRNRVRSSUNXLCAqUE9VVExJTkVURVhUTUVUUklDVywgICpOUE9VVExJTkVU
RVhUTUVUUklDVywgICpMUE9VVExJTkVURVhUTUVUUklDVzsNCg0KdHlwZWRlZiBPVVRMSU5FVEVY
VE1FVFJJQ1cgT1VUTElORVRFWFRNRVRSSUM7DQp0eXBlZGVmIFBPVVRMSU5FVEVYVE1FVFJJQ1cg
UE9VVExJTkVURVhUTUVUUklDOw0KdHlwZWRlZiBOUE9VVExJTkVURVhUTUVUUklDVyBOUE9VVExJ
TkVURVhUTUVUUklDOw0KdHlwZWRlZiBMUE9VVExJTkVURVhUTUVUUklDVyBMUE9VVExJTkVURVhU
TUVUUklDOw0KDQoNCg0KDQoNCiNsaW5lIDMzNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0K
I2xpbmUgMzM3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
DQoNCg0KDQojbGluZSAzMzg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1BPTFlURVhUQQ0K
ew0KICAgIGludCAgICAgICB4Ow0KICAgIGludCAgICAgICB5Ow0KICAgIFVJTlQgICAgICBuOw0K
ICAgIExQQ1NUUiAgICBscHN0cjsNCiAgICBVSU5UICAgICAgdWlGbGFnczsNCiAgICBSRUNUICAg
ICAgcmNsOw0KICAgIGludCAgICAgICpwZHg7DQp9IFBPTFlURVhUQSwgKlBQT0xZVEVYVEEsICAq
TlBQT0xZVEVYVEEsICAqTFBQT0xZVEVYVEE7DQp0eXBlZGVmIHN0cnVjdCB0YWdQT0xZVEVYVFcN
CnsNCiAgICBpbnQgICAgICAgeDsNCiAgICBpbnQgICAgICAgeTsNCiAgICBVSU5UICAgICAgbjsN
CiAgICBMUENXU1RSICAgbHBzdHI7DQogICAgVUlOVCAgICAgIHVpRmxhZ3M7DQogICAgUkVDVCAg
ICAgIHJjbDsNCiAgICBpbnQgICAgICAqcGR4Ow0KfSBQT0xZVEVYVFcsICpQUE9MWVRFWFRXLCAg
Kk5QUE9MWVRFWFRXLCAgKkxQUE9MWVRFWFRXOw0KDQp0eXBlZGVmIFBPTFlURVhUVyBQT0xZVEVY
VDsNCnR5cGVkZWYgUFBPTFlURVhUVyBQUE9MWVRFWFQ7DQp0eXBlZGVmIE5QUE9MWVRFWFRXIE5Q
UE9MWVRFWFQ7DQp0eXBlZGVmIExQUE9MWVRFWFRXIExQUE9MWVRFWFQ7DQoNCg0KDQoNCg0KI2xp
bmUgMzQyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQojbGluZSAzNDIyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IF9GSVhFRCB7DQoNCiAgICBXT1JEICAgIGZyYWN0
Ow0KICAgIHNob3J0ICAgdmFsdWU7DQoNCg0KDQojbGluZSAzNDM1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
Z2RpLmgiDQp9IEZJWEVEOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9NQVQyIHsNCiAgICAgRklYRUQg
IGVNMTE7DQogICAgIEZJWEVEICBlTTEyOw0KICAgICBGSVhFRCAgZU0yMTsNCiAgICAgRklYRUQg
IGVNMjI7DQp9IE1BVDIsICAqTFBNQVQyOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0dMWVBITUVU
UklDUyB7DQogICAgVUlOVCAgICBnbUJsYWNrQm94WDsNCiAgICBVSU5UICAgIGdtQmxhY2tCb3hZ
Ow0KICAgIFBPSU5UICAgZ21wdEdseXBoT3JpZ2luOw0KICAgIHNob3J0ICAgZ21DZWxsSW5jWDsN
CiAgICBzaG9ydCAgIGdtQ2VsbEluY1k7DQp9IEdMWVBITUVUUklDUywgICpMUEdMWVBITUVUUklD
UzsNCg0KI2xpbmUgMzQ1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzQ3MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmdkaS5oIg0KDQoNCg0KI2xpbmUgMzQ3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ1BPSU5URlgNCnsNCiAgICBGSVhFRCB4Ow0KICAgIEZJWEVEIHk7DQp9IFBPSU5URlgsICog
TFBQT0lOVEZYOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdUVFBPTFlDVVJWRQ0Kew0KICAgIFdPUkQg
ICAgd1R5cGU7DQogICAgV09SRCAgICBjcGZ4Ow0KICAgIFBPSU5URlggYXBmeFsxXTsNCn0gVFRQ
T0xZQ1VSVkUsICogTFBUVFBPTFlDVVJWRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnVFRQT0xZR09O
SEVBREVSDQp7DQogICAgRFdPUkQgICBjYjsNCiAgICBEV09SRCAgIGR3VHlwZTsNCiAgICBQT0lO
VEZYIHBmeFN0YXJ0Ow0KfSBUVFBPTFlHT05IRUFERVIsICogTFBUVFBPTFlHT05IRUFERVI7DQoN
CiNsaW5lIDM1MDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZh
bWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0dDUF9SRVNVTFRTQQ0KICAgIHsNCiAgICBEV09S
RCAgIGxTdHJ1Y3RTaXplOw0KICAgIExQU1RSICAgICBscE91dFN0cmluZzsNCiAgICBVSU5UICAq
bHBPcmRlcjsNCiAgICBpbnQgICAqbHBEeDsNCiAgICBpbnQgICAqbHBDYXJldFBvczsNCiAgICBM
UFNUUiAgIGxwQ2xhc3M7DQogICAgTFBXU1RSICBscEdseXBoczsNCiAgICBVSU5UICAgIG5HbHlw
aHM7DQogICAgaW50ICAgICBuTWF4Rml0Ow0KICAgIH0gR0NQX1JFU1VMVFNBLCAqIExQR0NQX1JF
U1VMVFNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnR0NQX1JFU1VMVFNXDQogICAgew0KICAgIERXT1JE
ICAgbFN0cnVjdFNpemU7DQogICAgTFBXU1RSICAgIGxwT3V0U3RyaW5nOw0KICAgIFVJTlQgICps
cE9yZGVyOw0KICAgIGludCAgICpscER4Ow0KICAgIGludCAgICpscENhcmV0UG9zOw0KICAgIExQ
U1RSICAgbHBDbGFzczsNCiAgICBMUFdTVFIgIGxwR2x5cGhzOw0KICAgIFVJTlQgICAgbkdseXBo
czsNCiAgICBpbnQgICAgIG5NYXhGaXQ7DQogICAgfSBHQ1BfUkVTVUxUU1csICogTFBHQ1BfUkVT
VUxUU1c7DQoNCnR5cGVkZWYgR0NQX1JFU1VMVFNXIEdDUF9SRVNVTFRTOw0KdHlwZWRlZiBMUEdD
UF9SRVNVTFRTVyBMUEdDUF9SRVNVTFRTOw0KDQoNCg0KI2xpbmUgMzU4NiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQojbGluZSAzNTg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KI2xpbmUgMzU5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IF9SQVNURVJJWkVSX1NU
QVRVUyB7DQogICAgc2hvcnQgICBuU2l6ZTsNCiAgICBzaG9ydCAgIHdGbGFnczsNCiAgICBzaG9y
dCAgIG5MYW5ndWFnZUlEOw0KfSBSQVNURVJJWkVSX1NUQVRVUywgICpMUFJBU1RFUklaRVJfU1RB
VFVTOw0KDQojbGluZSAzNjAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnUElYRUxGT1JNQVRERVNDUklQVE9SDQp7DQogICAgV09SRCAgblNp
emU7DQogICAgV09SRCAgblZlcnNpb247DQogICAgRFdPUkQgZHdGbGFnczsNCiAgICBCWVRFICBp
UGl4ZWxUeXBlOw0KICAgIEJZVEUgIGNDb2xvckJpdHM7DQogICAgQllURSAgY1JlZEJpdHM7DQog
ICAgQllURSAgY1JlZFNoaWZ0Ow0KICAgIEJZVEUgIGNHcmVlbkJpdHM7DQogICAgQllURSAgY0dy
ZWVuU2hpZnQ7DQogICAgQllURSAgY0JsdWVCaXRzOw0KICAgIEJZVEUgIGNCbHVlU2hpZnQ7DQog
ICAgQllURSAgY0FscGhhQml0czsNCiAgICBCWVRFICBjQWxwaGFTaGlmdDsNCiAgICBCWVRFICBj
QWNjdW1CaXRzOw0KICAgIEJZVEUgIGNBY2N1bVJlZEJpdHM7DQogICAgQllURSAgY0FjY3VtR3Jl
ZW5CaXRzOw0KICAgIEJZVEUgIGNBY2N1bUJsdWVCaXRzOw0KICAgIEJZVEUgIGNBY2N1bUFscGhh
Qml0czsNCiAgICBCWVRFICBjRGVwdGhCaXRzOw0KICAgIEJZVEUgIGNTdGVuY2lsQml0czsNCiAg
ICBCWVRFICBjQXV4QnVmZmVyczsNCiAgICBCWVRFICBpTGF5ZXJUeXBlOw0KICAgIEJZVEUgIGJS
ZXNlcnZlZDsNCiAgICBEV09SRCBkd0xheWVyTWFzazsNCiAgICBEV09SRCBkd1Zpc2libGVNYXNr
Ow0KICAgIERXT1JEIGR3RGFtYWdlTWFzazsNCn0gUElYRUxGT1JNQVRERVNDUklQVE9SLCAqUFBJ
WEVMRk9STUFUREVTQ1JJUFRPUiwgICpMUFBJWEVMRk9STUFUREVTQ1JJUFRPUjsNCg0KI2xpbmUg
MzY0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQp0eXBlZGVmIGludCAo
X19zdGRjYWxsKiBPTERGT05URU5VTVBST0NBKShjb25zdCBMT0dGT05UQSAqLCBjb25zdCBURVhU
TUVUUklDQSAqLCBEV09SRCwgTFBBUkFNKTsNCnR5cGVkZWYgaW50IChfX3N0ZGNhbGwqIE9MREZP
TlRFTlVNUFJPQ1cpKGNvbnN0IExPR0ZPTlRXICosIGNvbnN0IFRFWFRNRVRSSUNXICosIERXT1JE
LCBMUEFSQU0pOw0KDQoNCg0KDQojbGluZSAzNjkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMzY5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQp0eXBl
ZGVmIE9MREZPTlRFTlVNUFJPQ0EgICAgRk9OVEVOVU1QUk9DQTsNCnR5cGVkZWYgT0xERk9OVEVO
VU1QUk9DVyAgICBGT05URU5VTVBST0NXOw0KDQp0eXBlZGVmIEZPTlRFTlVNUFJPQ1cgRk9OVEVO
VU1QUk9DOw0KDQoNCiNsaW5lIDM3MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KdHlwZWRl
ZiBpbnQgKF9fc3RkY2FsbCogR09CSkVOVU1QUk9DKShMUFZPSUQsIExQQVJBTSk7DQp0eXBlZGVm
IHZvaWQgKF9fc3RkY2FsbCogTElORUREQVBST0MpKGludCwgaW50LCBMUEFSQU0pOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI2xp
bmUgMzcyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGludCBfX3N0ZGNhbGwgQWRkRm9udFJlc291cmNlQSggIExQQ1NUUik7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50IF9fc3RkY2FsbCBBZGRGb250UmVzb3VyY2VXKCAgTFBDV1NUUik7DQoNCg0K
DQoNCiNsaW5lIDM3MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgQW5pbWF0ZVBhbGV0dGUoICAgSFBBTEVUVEUgaFBhbCwg
ICBVSU5UIGlTdGFydEluZGV4LCAgICBVSU5UIGNFbnRyaWVzLCAgIGNvbnN0IFBBTEVUVEVFTlRS
WSAqIHBwZSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBBcmMoICAg
SERDIGhkYywgICBpbnQgeDEsICAgaW50IHkxLCAgIGludCB4MiwgICBpbnQgeTIsICAgaW50IHgz
LCAgIGludCB5MywgICBpbnQgeDQsICAgaW50IHk0KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Qk9PTCAgX19zdGRjYWxsIEJpdEJsdCggICBIREMgaGRjLCAgIGludCB4LCAgIGludCB5LCAgIGlu
dCBjeCwgICBpbnQgY3ksICAgSERDIGhkY1NyYywgICBpbnQgeDEsICAgaW50IHkxLCAgIERXT1JE
IHJvcCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIENhbmNlbERDKCAg
IEhEQyBoZGMpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgQ2hvcmQo
ICAgSERDIGhkYywgICBpbnQgeDEsICAgaW50IHkxLCAgIGludCB4MiwgICBpbnQgeTIsICAgaW50
IHgzLCAgIGludCB5MywgICBpbnQgeDQsICAgaW50IHk0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnQgICBfX3N0ZGNhbGwgQ2hvb3NlUGl4ZWxGb3JtYXQoICAgSERDIGhkYywgICBjb25zdCBQ
SVhFTEZPUk1BVERFU0NSSVBUT1IgKnBwZmQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhNRVRB
RklMRSAgX19zdGRjYWxsIENsb3NlTWV0YUZpbGUoICAgSERDIGhkYyk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50ICAgICBfX3N0ZGNhbGwgQ29tYmluZVJnbiggICBIUkdOIGhyZ25Ec3QsICAg
SFJHTiBocmduU3JjMSwgICBIUkdOIGhyZ25TcmMyLCAgIGludCBpTW9kZSk7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgSE1FVEFGSUxFIF9fc3RkY2FsbCBDb3B5TWV0YUZpbGVBKCAgIEhNRVRBRklM
RSwgICBMUENTVFIpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhNRVRBRklMRSBfX3N0ZGNhbGwg
Q29weU1ldGFGaWxlVyggICBITUVUQUZJTEUsICAgTFBDV1NUUik7DQoNCg0KDQoNCiNsaW5lIDM3
NTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEJJVE1B
UCBfX3N0ZGNhbGwgQ3JlYXRlQml0bWFwKCAgIGludCBuV2lkdGgsICAgaW50IG5IZWlnaHQsICAg
VUlOVCBuUGxhbmVzLCAgIFVJTlQgbkJpdENvdW50LCAgIGNvbnN0IHZvaWQgKmxwQml0cyk7DQog
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhCSVRNQVAgX19zdGRjYWxsIENyZWF0ZUJpdG1hcEluZGly
ZWN0KCAgIGNvbnN0IEJJVE1BUCAqcGJtKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEJSVVNI
ICBfX3N0ZGNhbGwgQ3JlYXRlQnJ1c2hJbmRpcmVjdCggICBjb25zdCBMT0dCUlVTSCAqcGxicnVz
aCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEJJVE1BUCBfX3N0ZGNhbGwgQ3JlYXRlQ29tcGF0
aWJsZUJpdG1hcCggICBIREMgaGRjLCAgIGludCBjeCwgICBpbnQgY3kpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhCSVRNQVAgX19zdGRjYWxsIENyZWF0ZURpc2NhcmRhYmxlQml0bWFwKCAgIEhE
QyBoZGMsICAgaW50IGN4LCAgIGludCBjeSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSERDICAg
ICBfX3N0ZGNhbGwgQ3JlYXRlQ29tcGF0aWJsZURDKCAgIEhEQyBoZGMpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhEQyAgICAgX19zdGRjYWxsIENyZWF0ZURDQSggICBMUENTVFIgcHdzekRyaXZl
ciwgICBMUENTVFIgcHdzekRldmljZSwgICBMUENTVFIgcHN6UG9ydCwgICBjb25zdCBERVZNT0RF
QSAqIHBkbSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSERDICAgICBfX3N0ZGNhbGwgQ3JlYXRl
RENXKCAgIExQQ1dTVFIgcHdzekRyaXZlciwgICBMUENXU1RSIHB3c3pEZXZpY2UsICAgTFBDV1NU
UiBwc3pQb3J0LCAgIGNvbnN0IERFVk1PREVXICogcGRtKTsNCg0KDQoNCg0KI2xpbmUgMzc2NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhCSVRNQVAgX19z
dGRjYWxsIENyZWF0ZURJQml0bWFwKCAgIEhEQyBoZGMsICAgY29uc3QgQklUTUFQSU5GT0hFQURF
UiAqcGJtaWgsICAgRFdPUkQgZmxJbml0LCAgIGNvbnN0IHZvaWQgKnBqQml0cywgICBjb25zdCBC
SVRNQVBJTkZPICpwYm1pLCAgIFVJTlQgaVVzYWdlKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
QlJVU0ggIF9fc3RkY2FsbCBDcmVhdGVESUJQYXR0ZXJuQnJ1c2goICAgSEdMT0JBTCBoLCAgIFVJ
TlQgaVVzYWdlKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEJSVVNIICBfX3N0ZGNhbGwgQ3Jl
YXRlRElCUGF0dGVybkJydXNoUHQoICAgY29uc3Qgdm9pZCAqbHBQYWNrZWRESUIsICAgVUlOVCBp
VXNhZ2UpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSR04gICAgX19zdGRjYWxsIENyZWF0ZUVs
bGlwdGljUmduKCAgIGludCB4MSwgICBpbnQgeTEsICAgaW50IHgyLCAgIGludCB5Mik7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJHTiAgICBfX3N0ZGNhbGwgQ3JlYXRlRWxsaXB0aWNSZ25JbmRp
cmVjdCggICBjb25zdCBSRUNUICpscHJlY3QpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIRk9O
VCAgIF9fc3RkY2FsbCBDcmVhdGVGb250SW5kaXJlY3RBKCAgIGNvbnN0IExPR0ZPTlRBICpscGxm
KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEZPTlQgICBfX3N0ZGNhbGwgQ3JlYXRlRm9udElu
ZGlyZWN0VyggICBjb25zdCBMT0dGT05UVyAqbHBsZik7DQoNCg0KDQoNCiNsaW5lIDM3NzkgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIRk9OVCAgIF9fc3Rk
Y2FsbCBDcmVhdGVGb250QSggICBpbnQgY0hlaWdodCwgICBpbnQgY1dpZHRoLCAgIGludCBjRXNj
YXBlbWVudCwgICBpbnQgY09yaWVudGF0aW9uLCAgIGludCBjV2VpZ2h0LCAgIERXT1JEIGJJdGFs
aWMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgYlVuZGVybGluZSwgICBE
V09SRCBiU3RyaWtlT3V0LCAgIERXT1JEIGlDaGFyU2V0LCAgIERXT1JEIGlPdXRQcmVjaXNpb24s
ICAgRFdPUkQgaUNsaXBQcmVjaXNpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFdPUkQgaVF1YWxpdHksICAgRFdPUkQgaVBpdGNoQW5kRmFtaWx5LCAgIExQQ1NUUiBwc3pGYWNl
TmFtZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEZPTlQgICBfX3N0ZGNhbGwgQ3JlYXRlRm9u
dFcoICAgaW50IGNIZWlnaHQsICAgaW50IGNXaWR0aCwgICBpbnQgY0VzY2FwZW1lbnQsICAgaW50
IGNPcmllbnRhdGlvbiwgICBpbnQgY1dlaWdodCwgICBEV09SRCBiSXRhbGljLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGJVbmRlcmxpbmUsICAgRFdPUkQgYlN0cmlrZU91
dCwgICBEV09SRCBpQ2hhclNldCwgICBEV09SRCBpT3V0UHJlY2lzaW9uLCAgIERXT1JEIGlDbGlw
UHJlY2lzaW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGlRdWFsaXR5
LCAgIERXT1JEIGlQaXRjaEFuZEZhbWlseSwgICBMUENXU1RSIHBzekZhY2VOYW1lKTsNCg0KDQoN
Cg0KI2xpbmUgMzc5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSEJSVVNIICBfX3N0ZGNhbGwgQ3JlYXRlSGF0Y2hCcnVzaCggICBpbnQgaUhhdGNoLCAg
IENPTE9SUkVGIGNvbG9yKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIREMgICAgIF9fc3RkY2Fs
bCBDcmVhdGVJQ0EoICAgTFBDU1RSIHBzekRyaXZlciwgICBMUENTVFIgcHN6RGV2aWNlLCAgIExQ
Q1NUUiBwc3pQb3J0LCAgIGNvbnN0IERFVk1PREVBICogcGRtKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBIREMgICAgIF9fc3RkY2FsbCBDcmVhdGVJQ1coICAgTFBDV1NUUiBwc3pEcml2ZXIsICAg
TFBDV1NUUiBwc3pEZXZpY2UsICAgTFBDV1NUUiBwc3pQb3J0LCAgIGNvbnN0IERFVk1PREVXICog
cGRtKTsNCg0KDQoNCg0KI2xpbmUgMzc5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhEQyAgICAgX19zdGRjYWxsIENyZWF0ZU1ldGFGaWxlQSggICBMUENT
VFIgcHN6RmlsZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSERDICAgICBfX3N0ZGNhbGwgQ3Jl
YXRlTWV0YUZpbGVXKCAgIExQQ1dTVFIgcHN6RmlsZSk7DQoNCg0KDQoNCiNsaW5lIDM4MDYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5nZGkuaCINCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFBBTEVUVEUgX19z
dGRjYWxsIENyZWF0ZVBhbGV0dGUoICAgY29uc3QgTE9HUEFMRVRURSAqIHBscGFsKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUEVOICAgIF9fc3RkY2FsbCBDcmVhdGVQZW4oICAgaW50IGlTdHls
ZSwgICBpbnQgY1dpZHRoLCAgIENPTE9SUkVGIGNvbG9yKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFBFTiAgICBfX3N0ZGNhbGwgQ3JlYXRlUGVuSW5kaXJlY3QoICAgY29uc3QgTE9HUEVOICpw
bHBlbik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJHTiAgICBfX3N0ZGNhbGwgQ3JlYXRlUG9s
eVBvbHlnb25SZ24oICAgIGNvbnN0IFBPSU5UICpwcHRsLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJTlQgICpwYywNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNQb2x5LA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaU1vZGUpOw0K
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIQlJVU0ggIF9fc3RkY2FsbCBDcmVhdGVQYXR0ZXJuQnJ1
c2goICAgSEJJVE1BUCBoYm0pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSR04gICAgX19zdGRj
YWxsIENyZWF0ZVJlY3RSZ24oICAgaW50IHgxLCAgIGludCB5MSwgICBpbnQgeDIsICAgaW50IHky
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkdOICAgIF9fc3RkY2FsbCBDcmVhdGVSZWN0Umdu
SW5kaXJlY3QoICAgY29uc3QgUkVDVCAqbHByZWN0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkdOICAgIF9fc3RkY2FsbCBDcmVhdGVSb3VuZFJlY3RSZ24oICAgaW50IHgxLCAgIGludCB5MSwg
ICBpbnQgeDIsICAgaW50IHkyLCAgIGludCB3LCAgIGludCBoKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBCT09MICAgIF9fc3RkY2FsbCBDcmVhdGVTY2FsYWJsZUZvbnRSZXNvdXJjZUEoICAgRFdP
UkQgZmR3SGlkZGVuLCAgIExQQ1NUUiBscHN6Rm9udCwgICBMUENTVFIgbHBzekZpbGUsICAgTFBD
U1RSIGxwc3pQYXRoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICAgIF9fc3RkY2FsbCBD
cmVhdGVTY2FsYWJsZUZvbnRSZXNvdXJjZVcoICAgRFdPUkQgZmR3SGlkZGVuLCAgIExQQ1dTVFIg
bHBzekZvbnQsICAgTFBDV1NUUiBscHN6RmlsZSwgICBMUENXU1RSIGxwc3pQYXRoKTsNCg0KDQoN
Cg0KI2xpbmUgMzgyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhCUlVTSCAgX19zdGRjYWxsIENyZWF0ZVNvbGlkQnJ1c2goICAgQ09MT1JSRUYgY29sb3Ip
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgRGVsZXRlREMoICAgSERD
IGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgRGVsZXRlTWV0YUZp
bGUoICAgSE1FVEFGSUxFIGhtZik7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRj
YWxsIERlbGV0ZU9iamVjdCggICBIR0RJT0JKIGhvKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBp
bnQgIF9fc3RkY2FsbCBEZXNjcmliZVBpeGVsRm9ybWF0KCAgICBIREMgaGRjLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpUGl4ZWxGb3JtYXQsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBuQnl0ZXMs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBQSVhFTEZP
Uk1BVERFU0NSSVBUT1IgcHBmZCk7DQoNCg0KDQoNCg0KdHlwZWRlZiBVSU5UICAgKF9fc3RkY2Fs
bCogTFBGTkRFVk1PREUpKEhXTkQsIEhNT0RVTEUsIExQREVWTU9ERSwgTFBTVFIsIExQU1RSLCBM
UERFVk1PREUsIExQU1RSLCBVSU5UKTsNCg0KdHlwZWRlZiBEV09SRCAgKF9fc3RkY2FsbCogTFBG
TkRFVkNBUFMpKExQU1RSLCBMUFNUUiwgVUlOVCwgTFBTVFIsIExQREVWTU9ERSk7DQoNCiNsaW5l
IDM4NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMzg4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkwMiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdk
aS5oIg0KI2xpbmUgMzkwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM5MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CmludA0KX19zdGRjYWxsDQpEZXZpY2VDYXBhYmlsaXRpZXNBKA0KICAgICAgICAgICAgICAgICAg
ICAgTFBDU1RSICAgICAgICAgcERldmljZSwNCiAgICAgICAgICAgICAgICAgTFBDU1RSICAgICAg
ICAgcFBvcnQsDQogICAgICAgICAgICAgICAgICAgICBXT1JEICAgICAgICAgICAgIGZ3Q2FwYWJp
bGl0eSwNCiAgICAgIExQU1RSICAgICAgICAgIHBPdXRwdXQsDQogICAgICAgICAgICAgICAgIGNv
bnN0IERFVk1PREVBICAgKnBEZXZNb2RlDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
aW50DQpfX3N0ZGNhbGwNCkRldmljZUNhcGFiaWxpdGllc1coDQogICAgICAgICAgICAgICAgICAg
ICBMUENXU1RSICAgICAgICAgcERldmljZSwNCiAgICAgICAgICAgICAgICAgTFBDV1NUUiAgICAg
ICAgIHBQb3J0LA0KICAgICAgICAgICAgICAgICAgICAgV09SRCAgICAgICAgICAgICBmd0NhcGFi
aWxpdHksDQogICAgICBMUFdTVFIgICAgICAgICAgcE91dHB1dCwNCiAgICAgICAgICAgICAgICAg
Y29uc3QgREVWTU9ERVcgICAqcERldk1vZGUNCiAgICApOw0KDQoNCg0KDQojbGluZSAzOTUwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3Rk
Y2FsbCBEcmF3RXNjYXBlKCAgICAgSERDICAgIGhkYywNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ICAgIGlFc2NhcGUsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAgICBjakluLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMUENTVFIgbHBJbik7DQoNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0
ZGNhbGwgRWxsaXBzZSggICBIREMgaGRjLCAgIGludCBsZWZ0LCAgIGludCB0b3AsICAgIGludCBy
aWdodCwgICBpbnQgYm90dG9tKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICBfX3N0
ZGNhbGwgRW51bUZvbnRGYW1pbGllc0V4QSggICBIREMgaGRjLCAgIExQTE9HRk9OVEEgbHBMb2dm
b250LCAgIEZPTlRFTlVNUFJPQ0EgbHBQcm9jLCAgIExQQVJBTSBsUGFyYW0sICAgRFdPUkQgZHdG
bGFncyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICBfX3N0ZGNhbGwgRW51bUZvbnRGYW1p
bGllc0V4VyggICBIREMgaGRjLCAgIExQTE9HRk9OVFcgbHBMb2dmb250LCAgIEZPTlRFTlVNUFJP
Q1cgbHBQcm9jLCAgIExQQVJBTSBsUGFyYW0sICAgRFdPUkQgZHdGbGFncyk7DQoNCg0KDQoNCiNs
aW5lIDM5NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNsaW5lIDM5NjcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5nZGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgX19zdGRjYWxsIEVudW1G
b250RmFtaWxpZXNBKCAgIEhEQyBoZGMsICAgTFBDU1RSIGxwTG9nZm9udCwgICBGT05URU5VTVBS
T0NBIGxwUHJvYywgICBMUEFSQU0gbFBhcmFtKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
IF9fc3RkY2FsbCBFbnVtRm9udEZhbWlsaWVzVyggICBIREMgaGRjLCAgIExQQ1dTVFIgbHBMb2dm
b250LCAgIEZPTlRFTlVNUFJPQ1cgbHBQcm9jLCAgIExQQVJBTSBsUGFyYW0pOw0KDQoNCg0KDQoj
bGluZSAzOTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
aW50ICBfX3N0ZGNhbGwgRW51bUZvbnRzQSggICBIREMgaGRjLCAgIExQQ1NUUiBscExvZ2ZvbnQs
ICAgIEZPTlRFTlVNUFJPQ0EgbHBQcm9jLCAgIExQQVJBTSBsUGFyYW0pOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCAgX19zdGRjYWxsIEVudW1Gb250c1coICAgSERDIGhkYywgICBMUENXU1RS
IGxwTG9nZm9udCwgICAgRk9OVEVOVU1QUk9DVyBscFByb2MsICAgTFBBUkFNIGxQYXJhbSk7DQoN
Cg0KDQoNCiNsaW5lIDM5ODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50ICBfX3N0ZGNhbGwgRW51bU9iamVjdHMoICAgSERDIGhkYywgICBpbnQg
blR5cGUsICAgR09CSkVOVU1QUk9DIGxwRnVuYywgICBMUEFSQU0gbFBhcmFtKTsNCg0KDQojbGlu
ZSAzOTg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEJPT0wgX19zdGRjYWxsIEVxdWFsUmduKCAgIEhSR04gaHJnbjEsICAgSFJHTiBocmduMik7DQog
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgX19zdGRjYWxsIEVzY2FwZSggICAgIEhEQyBoZGMs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlFc2NhcGUsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNqSW4sDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTFBDU1RSIHB2SW4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTFBWT0lEIHB2T3V0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2Fs
bCBFeHRFc2NhcGUoICAgICAgSERDIGhkYywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGlFc2NhcGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBjaklucHV0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
UENTVFIgbHBJbkRhdGEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBjak91dHB1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBTVFIg
bHBPdXREYXRhKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICBfX3N0ZGNhbGwgRXhjbHVk
ZUNsaXBSZWN0KCAgIEhEQyBoZGMsICAgaW50IGxlZnQsICAgaW50IHRvcCwgICBpbnQgcmlnaHQs
ICAgaW50IGJvdHRvbSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSR04gX19zdGRjYWxsIEV4
dENyZWF0ZVJlZ2lvbiggICBjb25zdCBYRk9STSAqIGxweCwgICBEV09SRCBuQ291bnQsICAgY29u
c3QgUkdOREFUQSAqIGxwRGF0YSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRj
YWxsIEV4dEZsb29kRmlsbCggICBIREMgaGRjLCAgIGludCB4LCAgIGludCB5LCAgIENPTE9SUkVG
IGNvbG9yLCAgIFVJTlQgdHlwZSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRj
YWxsIEZpbGxSZ24oICAgSERDIGhkYywgICBIUkdOIGhyZ24sICAgSEJSVVNIIGhicik7DQogX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIEZsb29kRmlsbCggICBIREMgaGRjLCAg
IGludCB4LCAgIGludCB5LCAgIENPTE9SUkVGIGNvbG9yKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQk9PTCBfX3N0ZGNhbGwgRnJhbWVSZ24oICAgSERDIGhkYywgICBIUkdOIGhyZ24sICAgSEJS
VVNIIGhiciwgICBpbnQgdywgICBpbnQgaCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICBf
X3N0ZGNhbGwgR2V0Uk9QMiggICBIREMgaGRjKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09M
IF9fc3RkY2FsbCBHZXRBc3BlY3RSYXRpb0ZpbHRlckV4KCAgIEhEQyBoZGMsICAgTFBTSVpFIGxw
c2l6ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ09MT1JSRUYgX19zdGRjYWxsIEdldEJrQ29s
b3IoICAgSERDIGhkYyk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIENPTE9SUkVGIF9fc3Rk
Y2FsbCBHZXREQ0JydXNoQ29sb3IoICAgSERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Q09MT1JSRUYgX19zdGRjYWxsIEdldERDUGVuQ29sb3IoICAgSERDIGhkYyk7DQojbGluZSA0MDE2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpf
X3N0ZGNhbGwNCkdldEJrTW9kZSgNCiAgICAgIEhEQyBoZGMNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KR2V0Qml0bWFwQml0cygNCiAgICAgIEhCSVRN
QVAgaGJpdCwNCiAgICAgIExPTkcgY2IsDQogICAgICBMUFZPSUQgbHB2Qml0cw0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgR2V0Qml0bWFwRGltZW5zaW9u
RXgoICAgSEJJVE1BUCBoYml0LCAgIExQU0laRSBscHNpemUpOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIFVJTlQgIF9fc3RkY2FsbCBHZXRCb3VuZHNSZWN0KCAgIEhEQyBoZGMsICAgTFBSRUNUIGxw
cmVjdCwgICBVSU5UIGZsYWdzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3Rk
Y2FsbCBHZXRCcnVzaE9yZ0V4KCAgIEhEQyBoZGMsICAgTFBQT0lOVCBscHB0KTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBHZXRDaGFyV2lkdGhBKCAgIEhEQyBoZGMs
ICAgVUlOVCBpRmlyc3QsICAgVUlOVCBpTGFzdCwgICBMUElOVCBscEJ1ZmZlcik7DQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEdldENoYXJXaWR0aFcoICAgSERDIGhkYywg
ICBVSU5UIGlGaXJzdCwgICBVSU5UIGlMYXN0LCAgIExQSU5UIGxwQnVmZmVyKTsNCg0KDQoNCg0K
I2xpbmUgNDA0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEJPT0wgIF9fc3RkY2FsbCBHZXRDaGFyV2lkdGgzMkEoICAgSERDIGhkYywgICBVSU5UIGlGaXJz
dCwgICBVSU5UIGlMYXN0LCAgICBMUElOVCBscEJ1ZmZlcik7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQk9PTCAgX19zdGRjYWxsIEdldENoYXJXaWR0aDMyVyggICBIREMgaGRjLCAgIFVJTlQgaUZp
cnN0LCAgIFVJTlQgaUxhc3QsICAgIExQSU5UIGxwQnVmZmVyKTsNCg0KDQoNCg0KI2xpbmUgNDA1
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9f
c3RkY2FsbCBHZXRDaGFyV2lkdGhGbG9hdEEoICAgSERDIGhkYywgICBVSU5UIGlGaXJzdCwgICBV
SU5UIGlMYXN0LCAgIFBGTE9BVCBscEJ1ZmZlcik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9P
TCAgX19zdGRjYWxsIEdldENoYXJXaWR0aEZsb2F0VyggICBIREMgaGRjLCAgIFVJTlQgaUZpcnN0
LCAgIFVJTlQgaUxhc3QsICAgUEZMT0FUIGxwQnVmZmVyKTsNCg0KDQoNCg0KI2xpbmUgNDA1OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19z
dGRjYWxsIEdldENoYXJBQkNXaWR0aHNBKCAgIEhEQyBoZGMsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCB3Rmlyc3QsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCB3TGFzdCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUEFCQyBscEFCQyk7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEdldENoYXJBQkNXaWR0aHNXKCAgIEhEQyBoZGMs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCB3Rmly
c3QsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCB3
TGFzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUEFC
QyBscEFCQyk7DQoNCg0KDQoNCiNsaW5lIDQwNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBHZXRDaGFyQUJDV2lkdGhzRmxv
YXRBKCAgIEhEQyBoZGMsICAgVUlOVCBpRmlyc3QsICAgVUlOVCBpTGFzdCwgICBMUEFCQ0ZMT0FU
IGxwQUJDKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgR2V0Q2hhckFC
Q1dpZHRoc0Zsb2F0VyggICBIREMgaGRjLCAgIFVJTlQgaUZpcnN0LCAgIFVJTlQgaUxhc3QsICAg
TFBBQkNGTE9BVCBscEFCQyk7DQoNCg0KDQoNCiNsaW5lIDQwODEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5n
ZGkuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICBfX3N0ZGNhbGwgR2V0Q2xpcEJveCgg
ICBIREMgaGRjLCAgICBMUFJFQ1QgbHByZWN0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
ICBfX3N0ZGNhbGwgR2V0Q2xpcFJnbiggICBIREMgaGRjLCAgIEhSR04gaHJnbik7DQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgaW50ICAgX19zdGRjYWxsIEdldE1ldGFSZ24oICAgSERDIGhkYywgICBI
UkdOIGhyZ24pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhHRElPQkogX19zdGRjYWxsIEdldEN1
cnJlbnRPYmplY3QoICAgSERDIGhkYywgICBVSU5UIHR5cGUpOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEJPT0wgIF9fc3RkY2FsbCBHZXRDdXJyZW50UG9zaXRpb25FeCggICBIREMgaGRjLCAgICBM
UFBPSU5UIGxwcHQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fc3RkY2FsbCBHZXRE
ZXZpY2VDYXBzKCAgIEhEQyBoZGMsICAgaW50IGluZGV4KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnQgICBfX3N0ZGNhbGwgR2V0RElCaXRzKCAgIEhEQyBoZGMsICAgSEJJVE1BUCBoYm0sICAg
VUlOVCBzdGFydCwgICBVSU5UIGNMaW5lcywNCiAgICAgIExQVk9JRCBscHZCaXRzLCAgTFBCSVRN
QVBJTkZPIGxwYm1pLCAgIFVJTlQgdXNhZ2UpOyAgDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBEV09SRCBfX3N0ZGNhbGwgR2V0Rm9udERhdGEgKCAgICAgIEhEQyAgICAgaGRjLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICBkd1RhYmxlLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICBkd09mZnNldCwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBWT0lEIHB2QnVmZmVy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICBjakJ1
ZmZlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBEV09SRCBfX3N0ZGNhbGwgR2V0R2x5cGhPdXRsaW5lQSggICAgICBI
REMgaGRjLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJ
TlQgdUNoYXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VUlOVCBmdUZvcm1hdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMUEdMWVBITUVUUklDUyBscGdtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERXT1JEIGNqQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCBwdkJ1ZmZlciwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNQVQyICpscG1hdDINCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IERXT1JEIF9fc3RkY2FsbCBHZXRHbHlwaE91dGxpbmVXKCAgICAgIEhEQyBoZGMsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCB1Q2hhciwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGZ1Rm9ybWF0LA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQR0xZUEhNRVRS
SUNTIGxwZ20sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFdPUkQgY2pCdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTFBWT0lEIHB2QnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IE1BVDIgKmxwbWF0Mg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICk7DQoNCg0KDQoNCiNsaW5lIDQxMTkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5n
ZGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fc3RkY2FsbCBHZXRHcmFwaGlj
c01vZGUoICAgSERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19zdGRjYWxs
IEdldE1hcE1vZGUoICAgSERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUlOVCAgX19z
dGRjYWxsIEdldE1ldGFGaWxlQml0c0V4KCAgSE1FVEFGSUxFIGhNRiwgICBVSU5UIGNiQnVmZmVy
LCAgIExQVk9JRCBscERhdGEpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhNRVRBRklMRSAgIF9f
c3RkY2FsbCBHZXRNZXRhRmlsZUEoICAgTFBDU1RSIGxwTmFtZSk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSE1FVEFGSUxFICAgX19zdGRjYWxsIEdldE1ldGFGaWxlVyggICBMUENXU1RSIGxwTmFt
ZSk7DQoNCg0KDQoNCiNsaW5lIDQxMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBDT0xPUlJFRiBfX3N0ZGNhbGwgR2V0TmVhcmVzdENvbG9yKCAgIEhEQyBo
ZGMsICAgQ09MT1JSRUYgY29sb3IpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgIF9fc3Rk
Y2FsbCBHZXROZWFyZXN0UGFsZXR0ZUluZGV4KCAgIEhQQUxFVFRFIGgsICAgQ09MT1JSRUYgY29s
b3IpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbCBHZXRPYmplY3RUeXBl
KCAgIEhHRElPQkogaCk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUlOVCBfX3N0ZGNh
bGwgR2V0T3V0bGluZVRleHRNZXRyaWNzQSggICBIREMgaGRjLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGNqQ29weSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBPVVRMSU5FVEVYVE1FVFJJ
Q0EgcG90bSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUlOVCBfX3N0ZGNhbGwgR2V0T3V0bGlu
ZVRleHRNZXRyaWNzVyggICBIREMgaGRjLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVSU5UIGNqQ29weSwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBPVVRMSU5FVEVYVE1FVFJJQ1cgcG90bSk7DQoN
Cg0KDQoNCiNsaW5lIDQxNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI2xpbmUgNDE0OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUlOVCAg
X19zdGRjYWxsIEdldFBhbGV0dGVFbnRyaWVzKCAgICAgSFBBTEVUVEUgaHBhbCwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGlTdGFydCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGNFbnRyaWVzLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQUEFMRVRURUVO
VFJZIHBQYWxFbnRyaWVzKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDT0xPUlJFRiBfX3N0ZGNh
bGwgR2V0UGl4ZWwoICAgSERDIGhkYywgICBpbnQgeCwgICBpbnQgeSk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgaW50ICAgX19zdGRjYWxsIEdldFBpeGVsRm9ybWF0KCAgIEhEQyBoZGMpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fc3RkY2FsbCBHZXRQb2x5RmlsbE1vZGUoICAgSERD
IGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEdldFJhc3Rlcml6
ZXJDYXBzKCAgICAgTFBSQVNURVJJWkVSX1NUQVRVUyBscHJhc3RzdGF0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgY2pCeXRlcyk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBpbnQgICBfX3N0ZGNhbGwgR2V0UmFuZG9tUmduICggIEhEQyBoZGMs
ICAgSFJHTiBocmduLCAgIElOVCBpKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBEV09SRCBfX3N0
ZGNhbGwgR2V0UmVnaW9uRGF0YSggICAgIEhSR04gaHJnbiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG5Db3VudCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExQUkdOREFUQSBscFJnbkRhdGEpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCAgIF9fc3RkY2FsbCBHZXRSZ25Cb3goICAgSFJHTiBocmduLCAgICBMUFJF
Q1QgbHByYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEdESU9CSiBfX3N0ZGNhbGwgR2V0U3Rv
Y2tPYmplY3QoICAgaW50IGkpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fc3RkY2Fs
bCBHZXRTdHJldGNoQmx0TW9kZSggIEhEQyBoZGMpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpV
SU5UDQpfX3N0ZGNhbGwNCkdldFN5c3RlbVBhbGV0dGVFbnRyaWVzKA0KICAgICAgSERDICBoZGMs
DQogICAgICBVSU5UIGlTdGFydCwNCiAgICAgIFVJTlQgY0VudHJpZXMsDQogICAgICBMUFBBTEVU
VEVFTlRSWSBwUGFsRW50cmllcw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5U
ICBfX3N0ZGNhbGwgR2V0U3lzdGVtUGFsZXR0ZVVzZSggIEhEQyBoZGMpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCAgIF9fc3RkY2FsbCBHZXRUZXh0Q2hhcmFjdGVyRXh0cmEoICBIREMgaGRj
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UICBfX3N0ZGNhbGwgR2V0VGV4dEFsaWduKCAg
SERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ09MT1JSRUYgX19zdGRjYWxsIEdldFRl
eHRDb2xvciggIEhEQyBoZGMpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0VGV4dEV4dGVudFBvaW50QSgNCiAgICAgIEhEQyBoZGMsDQogICAgICBMUENTVFIg
bHBTdHJpbmcsDQogICAgICBpbnQgYywNCiAgICAgIExQU0laRSBscHN6DQogICAgKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRUZXh0RXh0ZW50UG9pbnRXKA0K
ICAgICAgSERDIGhkYywNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcsDQogICAgICBpbnQgYywNCiAg
ICAgIExQU0laRSBscHN6DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDIwNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0
VGV4dEV4dGVudFBvaW50MzJBKA0KICAgICAgSERDIGhkYywNCiAgICAgIExQQ1NUUiBscFN0cmlu
ZywNCiAgICAgIGludCBjLA0KICAgICAgTFBTSVpFIHBzaXpsDQogICAgKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRUZXh0RXh0ZW50UG9pbnQzMlcoDQogICAg
ICBIREMgaGRjLA0KICAgICAgTFBDV1NUUiBscFN0cmluZywNCiAgICAgIGludCBjLA0KICAgICAg
TFBTSVpFIHBzaXpsDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDIzMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmdkaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0VGV4
dEV4dGVudEV4UG9pbnRBKA0KICAgICAgSERDIGhkYywNCiAgICAgIExQQ1NUUiBscHN6U3RyaW5n
LA0KICAgICAgaW50IGNjaFN0cmluZywNCiAgICAgIGludCBuTWF4RXh0ZW50LA0KICAgICAgTFBJ
TlQgbHBuRml0LA0KICAgICAgTFBJTlQgbHBuRHgsDQogICAgICBMUFNJWkUgbHBTaXplDQogICAg
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRUZXh0RXh0ZW50
RXhQb2ludFcoDQogICAgICBIREMgaGRjLA0KICAgICAgTFBDV1NUUiBscHN6U3RyaW5nLA0KICAg
ICAgaW50IGNjaFN0cmluZywNCiAgICAgIGludCBuTWF4RXh0ZW50LA0KICAgICAgTFBJTlQgbHBu
Rml0LA0KICAgICAgTFBJTlQgbHBuRHgsDQogICAgICBMUFNJWkUgbHBTaXplDQogICAgKTsNCg0K
DQoNCg0KI2xpbmUgNDI2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnQgX19zdGRjYWxsIEdldFRleHRDaGFyc2V0KCAgIEhEQyBoZGMpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX3N0ZGNhbGwgR2V0VGV4dENoYXJzZXRJbmZvKCAgIEhE
QyBoZGMsICAgTFBGT05UU0lHTkFUVVJFIGxwU2lnLCAgIERXT1JEIGR3RmxhZ3MpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFRyYW5zbGF0ZUNoYXJzZXRJbmZvKCAgIERX
T1JEICAqbHBTcmMsICAgIExQQ0hBUlNFVElORk8gbHBDcywgICBEV09SRCBkd0ZsYWdzKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBEV09SRCBfX3N0ZGNhbGwgR2V0Rm9udExhbmd1YWdlSW5mbygg
ICBIREMgaGRjKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBEV09SRCBfX3N0ZGNhbGwgR2V0Q2hh
cmFjdGVyUGxhY2VtZW50QSggICAgSERDIGhkYywgICBMUENTVFIgbHBTdHJpbmcsICAgaW50IG5D
b3VudCwgICBpbnQgbk1leEV4dGVudCwgICBMUEdDUF9SRVNVTFRTQSBscFJlc3VsdHMsICAgRFdP
UkQgZHdGbGFncyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgRFdPUkQgX19zdGRjYWxsIEdldENo
YXJhY3RlclBsYWNlbWVudFcoICAgIEhEQyBoZGMsICAgTFBDV1NUUiBscFN0cmluZywgICBpbnQg
bkNvdW50LCAgIGludCBuTWV4RXh0ZW50LCAgIExQR0NQX1JFU1VMVFNXIGxwUmVzdWx0cywgICBE
V09SRCBkd0ZsYWdzKTsNCg0KDQoNCg0KI2xpbmUgNDI3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5o
Ig0KI2xpbmUgNDI3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQojbGluZSA0Mjc2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdXQ1JBTkdFDQp7DQogICAg
V0NIQVIgIHdjTG93Ow0KICAgIFVTSE9SVCBjR2x5cGhzOw0KfSBXQ1JBTkdFLCAqUFdDUkFOR0Us
ICpMUFdDUkFOR0U7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnR0xZUEhTRVQNCnsNCiAgICBEV09S
RCAgICBjYlRoaXM7DQogICAgRFdPUkQgICAgZmxBY2NlbDsNCiAgICBEV09SRCAgICBjR2x5cGhz
U3VwcG9ydGVkOw0KICAgIERXT1JEICAgIGNSYW5nZXM7DQogICAgV0NSQU5HRSAgcmFuZ2VzWzFd
Ow0KfSBHTFlQSFNFVCwgKlBHTFlQSFNFVCwgICpMUEdMWVBIU0VUOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbCBHZXRGb250VW5pY29kZVJh
bmdlcyggICBIREMgaGRjLCAgIExQR0xZUEhTRVQgbHBncyk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgRFdPUkQgX19zdGRjYWxsIEdldEdseXBoSW5kaWNlc0EoICAgSERDIGhkYywgICBMUENTVFIg
bHBzdHIsICAgaW50IGMsICAgTFBXT1JEIHBnaSwgICBEV09SRCBmbCk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgRFdPUkQgX19zdGRjYWxsIEdldEdseXBoSW5kaWNlc1coICAgSERDIGhkYywgICBM
UENXU1RSIGxwc3RyLCAgIGludCBjLCAgIExQV09SRCBwZ2ksICAgRFdPUkQgZmwpOw0KDQoNCg0K
DQojbGluZSA0MzE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQk9PTCAgX19zdGRjYWxsIEdldFRleHRFeHRlbnRQb2ludEkoICBIREMgaGRjLCAgIExQV09S
RCBwZ2lJbiwgICBpbnQgY2dpLCAgIExQU0laRSBwc2l6ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQk9PTCAgX19zdGRjYWxsIEdldFRleHRFeHRlbnRFeFBvaW50SSAoICAgIEhEQyBoZGMsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQV09SRCBs
cHdzelN0cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGN3Y2hTdHJpbmcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBuTWF4RXh0ZW50LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMUElOVCBscG5GaXQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQSU5UIGxwbkR4LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFNJWkUgbHBTaXplDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEdldENoYXJXaWR0aEkoICAgICBIREMg
aGRjLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBnaUZp
cnN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBjZ2ks
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdPUkQgcGdpLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBJTlQgcGlXaWR0aHMN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEdldENoYXJBQkNXaWR0aHNJKCAgICAgSERDICAg
IGhkYywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5U
ICAgZ2lGaXJzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVSU5UICAgY2dpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExQV09SRCBwZ2ksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTFBBQkMgIHBhYmMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdERVNJR05WRUNUT1IN
CnsNCiAgICBEV09SRCAgZHZSZXNlcnZlZDsNCiAgICBEV09SRCAgZHZOdW1BeGVzOw0KICAgIExP
TkcgICBkdlZhbHVlc1sxNl07DQp9IERFU0lHTlZFQ1RPUiwgKlBERVNJR05WRUNUT1IsICAqTFBE
RVNJR05WRUNUT1I7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2FsbCBBZGRG
b250UmVzb3VyY2VFeEEoICAgTFBDU1RSIG5hbWUsICAgRFdPUkQgZmwsICAgUFZPSUQgcmVzKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2FsbCBBZGRGb250UmVzb3VyY2VFeFco
ICAgTFBDV1NUUiBuYW1lLCAgIERXT1JEIGZsLCAgIFBWT0lEIHJlcyk7DQoNCg0KDQoNCiNsaW5l
IDQzNjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09M
IF9fc3RkY2FsbCBSZW1vdmVGb250UmVzb3VyY2VFeEEoICAgTFBDU1RSIG5hbWUsICAgRFdPUkQg
ZmwsICAgUFZPSUQgcGR2KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBS
ZW1vdmVGb250UmVzb3VyY2VFeFcoICAgTFBDV1NUUiBuYW1lLCAgIERXT1JEIGZsLCAgIFBWT0lE
IHBkdik7DQoNCg0KDQoNCiNsaW5lIDQzNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIQU5ETEUgX19zdGRjYWxsIEFkZEZvbnRNZW1SZXNvdXJjZUV4KCAg
ICAgUFZPSUQgcEZpbGVWaWV3LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEV09SRCBjalNpemUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBWT0lEIHB2UmVzcnZlZCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQqIHBOdW1Gb250cyk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBSZW1vdmVGb250TWVtUmVzb3VyY2VF
eCggICBIQU5ETEUgaCk7DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdBWElT
SU5GT0ENCnsNCiAgICBMT05HICAgYXhNaW5WYWx1ZTsNCiAgICBMT05HICAgYXhNYXhWYWx1ZTsN
CiAgICBCWVRFICAgYXhBeGlzTmFtZVsxNl07DQp9IEFYSVNJTkZPQSwgKlBBWElTSU5GT0EsICAq
TFBBWElTSU5GT0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdBWElTSU5GT1cNCnsNCiAgICBMT05HICAg
YXhNaW5WYWx1ZTsNCiAgICBMT05HICAgYXhNYXhWYWx1ZTsNCiAgICBXQ0hBUiAgYXhBeGlzTmFt
ZVsxNl07DQp9IEFYSVNJTkZPVywgKlBBWElTSU5GT1csICAqTFBBWElTSU5GT1c7DQoNCnR5cGVk
ZWYgQVhJU0lORk9XIEFYSVNJTkZPOw0KdHlwZWRlZiBQQVhJU0lORk9XIFBBWElTSU5GTzsNCnR5
cGVkZWYgTFBBWElTSU5GT1cgTFBBWElTSU5GTzsNCg0KDQoNCg0KI2xpbmUgNDQwNSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmdkaS5oIg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdBWEVTTElTVEENCnsNCiAgICBE
V09SRCAgICAgYXhsUmVzZXJ2ZWQ7DQogICAgRFdPUkQgICAgIGF4bE51bUF4ZXM7DQogICAgQVhJ
U0lORk9BIGF4bEF4aXNJbmZvWzE2XTsNCn0gQVhFU0xJU1RBLCAqUEFYRVNMSVNUQSwgICpMUEFY
RVNMSVNUQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0FYRVNMSVNUVw0Kew0KICAgIERXT1JEICAgICBh
eGxSZXNlcnZlZDsNCiAgICBEV09SRCAgICAgYXhsTnVtQXhlczsNCiAgICBBWElTSU5GT1cgYXhs
QXhpc0luZm9bMTZdOw0KfSBBWEVTTElTVFcsICpQQVhFU0xJU1RXLCAgKkxQQVhFU0xJU1RXOw0K
DQp0eXBlZGVmIEFYRVNMSVNUVyBBWEVTTElTVDsNCnR5cGVkZWYgUEFYRVNMSVNUVyBQQVhFU0xJ
U1Q7DQp0eXBlZGVmIExQQVhFU0xJU1RXIExQQVhFU0xJU1Q7DQoNCg0KDQoNCiNsaW5lIDQ0Mjcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTlVN
TE9HRk9OVEVYRFZBDQp7DQogICAgRU5VTUxPR0ZPTlRFWEEgZWxmRW51bUxvZ2ZvbnRFeDsNCiAg
ICBERVNJR05WRUNUT1IgICBlbGZEZXNpZ25WZWN0b3I7DQp9IEVOVU1MT0dGT05URVhEVkEsICpQ
RU5VTUxPR0ZPTlRFWERWQSwgICpMUEVOVU1MT0dGT05URVhEVkE7DQp0eXBlZGVmIHN0cnVjdCB0
YWdFTlVNTE9HRk9OVEVYRFZXDQp7DQogICAgRU5VTUxPR0ZPTlRFWFcgZWxmRW51bUxvZ2ZvbnRF
eDsNCiAgICBERVNJR05WRUNUT1IgICBlbGZEZXNpZ25WZWN0b3I7DQp9IEVOVU1MT0dGT05URVhE
VlcsICpQRU5VTUxPR0ZPTlRFWERWVywgICpMUEVOVU1MT0dGT05URVhEVlc7DQoNCnR5cGVkZWYg
RU5VTUxPR0ZPTlRFWERWVyBFTlVNTE9HRk9OVEVYRFY7DQp0eXBlZGVmIFBFTlVNTE9HRk9OVEVY
RFZXIFBFTlVNTE9HRk9OVEVYRFY7DQp0eXBlZGVmIExQRU5VTUxPR0ZPTlRFWERWVyBMUEVOVU1M
T0dGT05URVhEVjsNCg0KDQoNCg0KI2xpbmUgNDQ1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEZPTlQgIF9fc3RkY2FsbCBDcmVhdGVGb250SW5kaXJl
Y3RFeEEoICAgY29uc3QgRU5VTUxPR0ZPTlRFWERWQSAqKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIRk9OVCAgX19zdGRjYWxsIENyZWF0ZUZvbnRJbmRpcmVjdEV4VyggICBjb25zdCBFTlVNTE9H
Rk9OVEVYRFZXICopOw0KDQoNCg0KDQojbGluZSA0NDU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgi
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU5VTVRFWFRNRVRSSUNBDQp7DQogICAgTkVXVEVYVE1F
VFJJQ0VYQSBldG1OZXdUZXh0TWV0cmljRXg7DQogICAgQVhFU0xJU1RBICAgICAgICBldG1BeGVz
TGlzdDsNCn0gRU5VTVRFWFRNRVRSSUNBLCAqUEVOVU1URVhUTUVUUklDQSwgICpMUEVOVU1URVhU
TUVUUklDQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0VOVU1URVhUTUVUUklDVw0Kew0KICAgIE5FV1RF
WFRNRVRSSUNFWFcgZXRtTmV3VGV4dE1ldHJpY0V4Ow0KICAgIEFYRVNMSVNUVyAgICAgICAgZXRt
QXhlc0xpc3Q7DQp9IEVOVU1URVhUTUVUUklDVywgKlBFTlVNVEVYVE1FVFJJQ1csICAqTFBFTlVN
VEVYVE1FVFJJQ1c7DQoNCnR5cGVkZWYgRU5VTVRFWFRNRVRSSUNXIEVOVU1URVhUTUVUUklDOw0K
dHlwZWRlZiBQRU5VTVRFWFRNRVRSSUNXIFBFTlVNVEVYVE1FVFJJQzsNCnR5cGVkZWYgTFBFTlVN
VEVYVE1FVFJJQ1cgTFBFTlVNVEVYVE1FVFJJQzsNCg0KDQoNCg0KI2xpbmUgNDQ4MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbmdkaS5oIg0KI2xpbmUgNDQ4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoj
bGluZSA0NDgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
bGluZSA0NDg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBHZXRW
aWV3cG9ydEV4dEV4KCAgIEhEQyBoZGMsICAgTFBTSVpFIGxwc2l6ZSk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEdldFZpZXdwb3J0T3JnRXgoICAgSERDIGhkYywgICBM
UFBPSU5UIGxwcG9pbnQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBH
ZXRXaW5kb3dFeHRFeCggICBIREMgaGRjLCAgIExQU0laRSBscHNpemUpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBHZXRXaW5kb3dPcmdFeCggICBIREMgaGRjLCAgIExQ
UE9JTlQgbHBwb2ludCk7DQoNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICBfX3N0ZGNhbGwg
SW50ZXJzZWN0Q2xpcFJlY3QoICAgSERDIGhkYywgICBpbnQgbGVmdCwgICBpbnQgdG9wLCAgIGlu
dCByaWdodCwgICBpbnQgYm90dG9tKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0
ZGNhbGwgSW52ZXJ0UmduKCAgIEhEQyBoZGMsICAgSFJHTiBocmduKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBCT09MIF9fc3RkY2FsbCBMaW5lRERBKCAgIGludCB4U3RhcnQsICAgaW50IHlTdGFy
dCwgICBpbnQgeEVuZCwgICBpbnQgeUVuZCwgICBMSU5FRERBUFJPQyBscFByb2MsICAgTFBBUkFN
IGRhdGEpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBMaW5lVG8oICAg
SERDIGhkYywgICBpbnQgeCwgICBpbnQgeSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBf
X3N0ZGNhbGwgTWFza0JsdCggICBIREMgaGRjRGVzdCwgICBpbnQgeERlc3QsICAgaW50IHlEZXN0
LCAgIGludCB3aWR0aCwgICBpbnQgaGVpZ2h0LA0KICAgICAgICAgICAgICAgIEhEQyBoZGNTcmMs
ICAgaW50IHhTcmMsICAgaW50IHlTcmMsICAgSEJJVE1BUCBoYm1NYXNrLCAgIGludCB4TWFzaywg
ICBpbnQgeU1hc2ssICAgRFdPUkQgcm9wKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9f
c3RkY2FsbCBQbGdCbHQoICAgSERDIGhkY0Rlc3QsICAgY29uc3QgUE9JTlQgKiBscFBvaW50LCAg
IEhEQyBoZGNTcmMsICAgaW50IHhTcmMsICAgaW50IHlTcmMsICAgaW50IHdpZHRoLA0KICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LCAgIEhCSVRNQVAgaGJtTWFzaywgICBpbnQgeE1h
c2ssICAgaW50IHlNYXNrKTsNCg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2Fs
bCBPZmZzZXRDbGlwUmduKCAgSERDIGhkYywgICBpbnQgeCwgICBpbnQgeSk7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50ICBfX3N0ZGNhbGwgT2Zmc2V0UmduKCAgSFJHTiBocmduLCAgIGludCB4
LCAgIGludCB5KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgUGF0Qmx0
KCAgSERDIGhkYywgICBpbnQgeCwgICBpbnQgeSwgICBpbnQgdywgICBpbnQgaCwgICBEV09SRCBy
b3ApOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBQaWUoICBIREMgaGRj
LCAgIGludCBsZWZ0LCAgIGludCB0b3AsICAgaW50IHJpZ2h0LCAgIGludCBib3R0b20sICAgaW50
IHhyMSwgICBpbnQgeXIxLCAgIGludCB4cjIsICAgaW50IHlyMik7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQk9PTCBfX3N0ZGNhbGwgUGxheU1ldGFGaWxlKCAgSERDIGhkYywgICBITUVUQUZJTEUg
aG1mKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgUGFpbnRSZ24oICBI
REMgaGRjLCAgIEhSR04gaHJnbik7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRj
YWxsIFBvbHlQb2x5Z29uKCAgSERDIGhkYywgICAgY29uc3QgUE9JTlQgKmFwdCwgICAgY29uc3Qg
SU5UICphc3osICAgIGludCBjc3opOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRj
YWxsIFB0SW5SZWdpb24oICBIUkdOIGhyZ24sICAgaW50IHgsICAgaW50IHkpOw0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFB0VmlzaWJsZSggIEhEQyBoZGMsICAgaW50IHgs
ICAgaW50IHkpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFJlY3RJblJl
Z2lvbiggIEhSR04gaHJnbiwgICBjb25zdCBSRUNUICogbHByZWN0KTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBCT09MIF9fc3RkY2FsbCBSZWN0VmlzaWJsZSggIEhEQyBoZGMsICAgY29uc3QgUkVD
VCAqIGxwcmVjdCk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFJlY3Rh
bmdsZSggIEhEQyBoZGMsICAgaW50IGxlZnQsICAgaW50IHRvcCwgICBpbnQgcmlnaHQsICAgaW50
IGJvdHRvbSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFJlc3RvcmVE
QyggIEhEQyBoZGMsICAgaW50IG5TYXZlZERDKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSERD
ICBfX3N0ZGNhbGwgUmVzZXREQ0EoICBIREMgaGRjLCAgIGNvbnN0IERFVk1PREVBICogbHBkbSk7
DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhEQyAgX19zdGRjYWxsIFJlc2V0RENXKCAgSERDIGhk
YywgICBjb25zdCBERVZNT0RFVyAqIGxwZG0pOw0KDQoNCg0KDQojbGluZSA0NTI0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZ2RpLmgiDQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgX19zdGRjYWxsIFJl
YWxpemVQYWxldHRlKCAgSERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0
ZGNhbGwgUmVtb3ZlRm9udFJlc291cmNlQSggIExQQ1NUUiBscEZpbGVOYW1lKTsNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBSZW1vdmVGb250UmVzb3VyY2VXKCAgTFBDV1NU
UiBscEZpbGVOYW1lKTsNCg0KDQoNCg0KI2xpbmUgNDUzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5o
Ig0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgUm91bmRSZWN0KCAgSERD
IGhkYywgICBpbnQgbGVmdCwgICBpbnQgdG9wLCAgIGludCByaWdodCwgICBpbnQgYm90dG9tLCAg
IGludCB3aWR0aCwgICBpbnQgaGVpZ2h0KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBf
X3N0ZGNhbGwgUmVzaXplUGFsZXR0ZSggIEhQQUxFVFRFIGhwYWwsICAgVUlOVCBuKTsNCg0KIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2FsbCBTYXZlREMoICBIREMgaGRjKTsNCiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICBfX3N0ZGNhbGwgU2VsZWN0Q2xpcFJnbiggIEhEQyBo
ZGMsICAgSFJHTiBocmduKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2FsbCBF
eHRTZWxlY3RDbGlwUmduKCAgSERDIGhkYywgICBIUkdOIGhyZ24sICAgaW50IG1vZGUpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgX19zdGRjYWxsIFNldE1ldGFSZ24oICBIREMgaGRjKTsN
CiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSEdESU9CSiBfX3N0ZGNhbGwgU2VsZWN0T2JqZWN0KCAg
SERDIGhkYywgICBIR0RJT0JKIGgpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUEFMRVRURSBf
X3N0ZGNhbGwgU2VsZWN0UGFsZXR0ZSggIEhEQyBoZGMsICAgSFBBTEVUVEUgaFBhbCwgICBCT09M
IGJGb3JjZUJrZ2QpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDT0xPUlJFRiBfX3N0ZGNhbGwg
U2V0QmtDb2xvciggIEhEQyBoZGMsICAgQ09MT1JSRUYgY29sb3IpOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBDT0xPUlJFRiBfX3N0ZGNhbGwgU2V0RENCcnVzaENvbG9yKCAgSERDIGhkYywg
ICBDT0xPUlJFRiBjb2xvcik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ09MT1JSRUYgX19zdGRj
YWxsIFNldERDUGVuQ29sb3IoICBIREMgaGRjLCAgIENPTE9SUkVGIGNvbG9yKTsNCiNsaW5lIDQ1
NDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
ICBfX3N0ZGNhbGwgU2V0QmtNb2RlKCAgSERDIGhkYywgICBpbnQgbW9kZSk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTE9ORyBfX3N0ZGNhbGwNClNldEJpdG1hcEJpdHMoDQogICAgICBIQklU
TUFQIGhibSwNCiAgICAgIERXT1JEIGNiLA0KICAgICAgY29uc3Qgdm9pZCAqcHZCaXRzKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgIF9fc3RkY2FsbCBTZXRCb3VuZHNSZWN0KCAgSERD
IGhkYywgICBjb25zdCBSRUNUICogbHByZWN0LCAgIFVJTlQgZmxhZ3MpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCAgIF9fc3RkY2FsbCBTZXRESUJpdHMoICBIREMgaGRjLCAgIEhCSVRNQVAg
aGJtLCAgIFVJTlQgc3RhcnQsICAgVUlOVCBjTGluZXMsICAgY29uc3Qgdm9pZCAqbHBCaXRzLCAg
IGNvbnN0IEJJVE1BUElORk8gKiBscGJtaSwgICBVSU5UIENvbG9yVXNlKTsNCiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50ICAgX19zdGRjYWxsIFNldERJQml0c1RvRGV2aWNlKCAgSERDIGhkYywg
ICBpbnQgeERlc3QsICAgaW50IHlEZXN0LCAgIERXT1JEIHcsICAgRFdPUkQgaCwgICBpbnQgeFNy
YywNCiAgICAgICAgICBpbnQgeVNyYywgICBVSU5UIFN0YXJ0U2NhbiwgICBVSU5UIGNMaW5lcywg
ICBjb25zdCB2b2lkICogbHB2Qml0cywgICBjb25zdCBCSVRNQVBJTkZPICogbHBibWksICAgVUlO
VCBDb2xvclVzZSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbCBTZXRN
YXBwZXJGbGFncyggIEhEQyBoZGMsICAgRFdPUkQgZmxhZ3MpOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGludCAgIF9fc3RkY2FsbCBTZXRHcmFwaGljc01vZGUoICBIREMgaGRjLCAgIGludCBpTW9k
ZSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fc3RkY2FsbCBTZXRNYXBNb2RlKCAg
SERDIGhkYywgICBpbnQgaU1vZGUpOw0KDQoNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRFdPUkQg
X19zdGRjYWxsIFNldExheW91dCggIEhEQyBoZGMsICAgRFdPUkQgbCk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgRFdPUkQgX19zdGRjYWxsIEdldExheW91dCggIEhEQyBoZGMpOw0KI2xpbmUgNDU2
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSE1FVEFG
SUxFICAgX19zdGRjYWxsIFNldE1ldGFGaWxlQml0c0V4KCAgVUlOVCBjYkJ1ZmZlciwgICBjb25z
dCBCWVRFICpscERhdGEpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UICBfX3N0ZGNhbGwg
U2V0UGFsZXR0ZUVudHJpZXMoICAgICBIUEFMRVRURSBocGFsLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgaVN0YXJ0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgY0VudHJpZXMsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUEFMRVRURUVOVFJZICpw
UGFsRW50cmllcyk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIENPTE9SUkVGIF9fc3RkY2FsbCBT
ZXRQaXhlbCggIEhEQyBoZGMsICAgaW50IHgsICAgaW50IHksICAgQ09MT1JSRUYgY29sb3IpOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgICBfX3N0ZGNhbGwgU2V0UGl4ZWxWKCAgSERDIGhk
YywgICBpbnQgeCwgICBpbnQgeSwgICBDT0xPUlJFRiBjb2xvcik7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQk9PTCAgX19zdGRjYWxsIFNldFBpeGVsRm9ybWF0KCAgSERDIGhkYywgICBpbnQgZm9y
bWF0LCAgIGNvbnN0IFBJWEVMRk9STUFUREVTQ1JJUFRPUiAqIHBwZmQpOw0KIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnQgICBfX3N0ZGNhbGwgU2V0UG9seUZpbGxNb2RlKCAgSERDIGhkYywgICBp
bnQgbW9kZSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBTdHJldGNo
Qmx0KCAgSERDIGhkY0Rlc3QsICAgaW50IHhEZXN0LCAgIGludCB5RGVzdCwgICBpbnQgd0Rlc3Qs
ICAgaW50IGhEZXN0LCAgIEhEQyBoZGNTcmMsICAgaW50IHhTcmMsICAgaW50IHlTcmMsICAgaW50
IHdTcmMsICAgaW50IGhTcmMsICAgRFdPUkQgcm9wKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBC
T09MICAgX19zdGRjYWxsIFNldFJlY3RSZ24oICBIUkdOIGhyZ24sICAgaW50IGxlZnQsICAgaW50
IHRvcCwgICBpbnQgcmlnaHQsICAgaW50IGJvdHRvbSk7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGludCAgIF9fc3RkY2FsbCBTdHJldGNoRElCaXRzKCAgSERDIGhkYywgICBpbnQgeERlc3QsICAg
aW50IHlEZXN0LCAgIGludCBEZXN0V2lkdGgsICAgaW50IERlc3RIZWlnaHQsICAgaW50IHhTcmMs
ICAgaW50IHlTcmMsICAgaW50IFNyY1dpZHRoLCAgIGludCBTcmNIZWlnaHQsDQogICAgICAgICAg
Y29uc3Qgdm9pZCAqIGxwQml0cywgICBjb25zdCBCSVRNQVBJTkZPICogbHBibWksICAgVUlOVCBp
VXNhZ2UsICAgRFdPUkQgcm9wKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19zdGRj
YWxsIFNldFJPUDIoICBIREMgaGRjLCAgIGludCByb3AyKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgaW50ICAgX19zdGRjYWxsIFNldFN0cmV0Y2hCbHRNb2RlKCAgSERDIGhkYywgICBpbnQgbW9k
ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUlOVCAgX19zdGRjYWxsIFNldFN5c3RlbVBhbGV0
dGVVc2UoICBIREMgaGRjLCAgIFVJTlQgdXNlKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
ICAgX19zdGRjYWxsIFNldFRleHRDaGFyYWN0ZXJFeHRyYSggIEhEQyBoZGMsICAgaW50IGV4dHJh
KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ09MT1JSRUYgX19zdGRjYWxsIFNldFRleHRDb2xv
ciggIEhEQyBoZGMsICAgQ09MT1JSRUYgY29sb3IpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBV
SU5UICBfX3N0ZGNhbGwgU2V0VGV4dEFsaWduKCAgSERDIGhkYywgICBVSU5UIGFsaWduKTsNCiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIFNldFRleHRKdXN0aWZpY2F0aW9u
KCAgSERDIGhkYywgICBpbnQgZXh0cmEsICAgaW50IGNvdW50KTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBCT09MICBfX3N0ZGNhbGwgVXBkYXRlQ29sb3JzKCAgSERDIGhkYyk7DQoNCiNsaW5lIDQ1
OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoN
Cg0KdHlwZWRlZiBVU0hPUlQgQ09MT1IxNjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1RSSVZFUlRFWA0K
ew0KICAgIExPTkcgICAgeDsNCiAgICBMT05HICAgIHk7DQogICAgQ09MT1IxNiBSZWQ7DQogICAg
Q09MT1IxNiBHcmVlbjsNCiAgICBDT0xPUjE2IEJsdWU7DQogICAgQ09MT1IxNiBBbHBoYTsNCn1U
UklWRVJURVgsKlBUUklWRVJURVgsKkxQVFJJVkVSVEVYOw0KDQojbGluZSA0NjU0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNr
dG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IF9HUkFESUVOVF9UUklBTkdMRQ0Kew0KICAg
IFVMT05HIFZlcnRleDE7DQogICAgVUxPTkcgVmVydGV4MjsNCiAgICBVTE9ORyBWZXJ0ZXgzOw0K
fSBHUkFESUVOVF9UUklBTkdMRSwqUEdSQURJRU5UX1RSSUFOR0xFLCpMUEdSQURJRU5UX1RSSUFO
R0xFOw0KDQp0eXBlZGVmIHN0cnVjdCBfR1JBRElFTlRfUkVDVA0Kew0KICAgIFVMT05HIFVwcGVy
TGVmdDsNCiAgICBVTE9ORyBMb3dlclJpZ2h0Ow0KfUdSQURJRU5UX1JFQ1QsKlBHUkFESUVOVF9S
RUNULCpMUEdSQURJRU5UX1JFQ1Q7DQoNCiNsaW5lIDQ2NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWls
eQ0KDQoNCnR5cGVkZWYgc3RydWN0IF9CTEVOREZVTkNUSU9ODQp7DQogICAgQllURSAgIEJsZW5k
T3A7DQogICAgQllURSAgIEJsZW5kRmxhZ3M7DQogICAgQllURSAgIFNvdXJjZUNvbnN0YW50QWxw
aGE7DQogICAgQllURSAgIEFscGhhRm9ybWF0Ow0KfUJMRU5ERlVOQ1RJT04sKlBCTEVOREZVTkNU
SU9OOw0KDQojbGluZSA0Njg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIEFscGhhQmxl
bmQoDQogICAgICBIREMgaGRjRGVzdCwNCiAgICAgIGludCB4b3JpZ2luRGVzdCwNCiAgICAgIGlu
dCB5b3JpZ2luRGVzdCwNCiAgICAgIGludCB3RGVzdCwNCiAgICAgIGludCBoRGVzdCwNCiAgICAg
IEhEQyBoZGNTcmMsDQogICAgICBpbnQgeG9yaWdpblNyYywNCiAgICAgIGludCB5b3JpZ2luU3Jj
LA0KICAgICAgaW50IHdTcmMsDQogICAgICBpbnQgaFNyYywNCiAgICAgIEJMRU5ERlVOQ1RJT04g
ZnRuKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFRyYW5zcGFyZW50
Qmx0KA0KICAgICAgSERDIGhkY0Rlc3QsDQogICAgICBpbnQgeG9yaWdpbkRlc3QsDQogICAgICBp
bnQgeW9yaWdpbkRlc3QsDQogICAgICBpbnQgd0Rlc3QsDQogICAgICBpbnQgaERlc3QsDQogICAg
ICBIREMgaGRjU3JjLA0KICAgICAgaW50IHhvcmlnaW5TcmMsDQogICAgICBpbnQgeW9yaWdpblNy
YywNCiAgICAgIGludCB3U3JjLA0KICAgICAgaW50IGhTcmMsDQogICAgICBVSU5UIGNyVHJhbnNw
YXJlbnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpHcmFkaWVudEZpbGwoDQogICAgICBIREMgaGRjLA0KICAgICAgUFRSSVZF
UlRFWCBwVmVydGV4LA0KICAgICAgVUxPTkcgblZlcnRleCwNCiAgICAgIFBWT0lEIHBNZXNoLA0K
ICAgICAgVUxPTkcgbk1lc2gsDQogICAgICBVTE9ORyB1bE1vZGUNCiAgICApOw0KDQojbGluZSA0
NzU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA0
NzU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFt
aWx5DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBHZGlB
bHBoYUJsZW5kKCAgSERDIGhkY0Rlc3QsICAgaW50IHhvcmlnaW5EZXN0LCAgIGludCB5b3JpZ2lu
RGVzdCwgICBpbnQgd0Rlc3QsICAgaW50IGhEZXN0LCAgIEhEQyBoZGNTcmMsICAgaW50IHhvcmln
aW5TcmMsICAgaW50IHlvcmlnaW5TcmMsICAgaW50IHdTcmMsICAgaW50IGhTcmMsICAgQkxFTkRG
VU5DVElPTiBmdG4pOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEdk
aVRyYW5zcGFyZW50Qmx0KCAgSERDIGhkY0Rlc3QsICBpbnQgeG9yaWdpbkRlc3QsICAgaW50IHlv
cmlnaW5EZXN0LCAgIGludCB3RGVzdCwgICBpbnQgaERlc3QsICAgSERDIGhkY1NyYywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4b3JpZ2luU3JjLCAg
IGludCB5b3JpZ2luU3JjLCAgIGludCB3U3JjLCAgIGludCBoU3JjLCAgIFVJTlQgY3JUcmFuc3Bh
cmVudCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgR2RpR3JhZGll
bnRGaWxsKCAgIEhEQyBoZGMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQVFJJVkVSVEVYIHBWZXJ0ZXgsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVTE9ORyBuVmVydGV4LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFZPSUQgcE1lc2gsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVTE9ORyBuQ291bnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVTE9ORyB1bE1vZGUpOw0KDQojbGluZSA0Nzc3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
Z2RpLmgiDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBQ
bGF5TWV0YUZpbGVSZWNvcmQoICAgIEhEQyBoZGMsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTFBIQU5ETEVUQUJMRSBscEhhbmRsZVRhYmxlLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQTUVUQVJFQ09SRCBscE1S
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgbm9P
YmpzKTsNCg0KdHlwZWRlZiBpbnQgKF9fc3RkY2FsbCogTUZFTlVNUFJPQykoICAgSERDIGhkYywg
ICBIQU5ETEVUQUJMRSAqIGxwaHQsICAgTUVUQVJFQ09SRCAqIGxwTVIsICAgaW50IG5PYmosICAg
TFBBUkFNIHBhcmFtKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgRW51
bU1ldGFGaWxlKCAgIEhEQyBoZGMsICAgSE1FVEFGSUxFIGhtZiwgICBNRkVOVU1QUk9DIHByb2Ms
ICAgTFBBUkFNIHBhcmFtKTsNCg0KdHlwZWRlZiBpbnQgKF9fc3RkY2FsbCogRU5ITUZFTlVNUFJP
QykoICBIREMgaGRjLCAgIEhBTkRMRVRBQkxFICogbHBodCwgICBjb25zdCBFTkhNRVRBUkVDT1JE
ICogbHBtciwgICBpbnQgbkhhbmRsZXMsICAgTFBBUkFNIGRhdGEpOw0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhFTkhNRVRBRklMRSBfX3N0ZGNhbGwgQ2xvc2VFbmhNZXRhRmlsZSggICBI
REMgaGRjKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIRU5ITUVUQUZJTEUgX19zdGRjYWxsIENv
cHlFbmhNZXRhRmlsZUEoICAgSEVOSE1FVEFGSUxFIGhFbmgsICAgTFBDU1RSIGxwRmlsZU5hbWUp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhFTkhNRVRBRklMRSBfX3N0ZGNhbGwgQ29weUVuaE1l
dGFGaWxlVyggICBIRU5ITUVUQUZJTEUgaEVuaCwgICBMUENXU1RSIGxwRmlsZU5hbWUpOw0KDQoN
Cg0KDQojbGluZSA0ODAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSERDICAgX19zdGRjYWxsIENyZWF0ZUVuaE1ldGFGaWxlQSggICBIREMgaGRjLCAgIExQ
Q1NUUiBscEZpbGVuYW1lLCAgIGNvbnN0IFJFQ1QgKmxwcmMsICAgTFBDU1RSIGxwRGVzYyk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSERDICAgX19zdGRjYWxsIENyZWF0ZUVuaE1ldGFGaWxlVygg
ICBIREMgaGRjLCAgIExQQ1dTVFIgbHBGaWxlbmFtZSwgICBjb25zdCBSRUNUICpscHJjLCAgIExQ
Q1dTVFIgbHBEZXNjKTsNCg0KDQoNCg0KI2xpbmUgNDgwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5o
Ig0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBEZWxldGVFbmhNZXRhRmls
ZSggICBIRU5ITUVUQUZJTEUgaG1mKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0
ZGNhbGwgRW51bUVuaE1ldGFGaWxlKCAgIEhEQyBoZGMsICAgSEVOSE1FVEFGSUxFIGhtZiwgICBF
TkhNRkVOVU1QUk9DIHByb2MsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMUFZPSUQgcGFyYW0sICAgY29uc3QgUkVDVCAqIGxwUmVjdCk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSEVOSE1FVEFGSUxFICBfX3N0ZGNhbGwgR2V0RW5oTWV0YUZpbGVBKCAgIExQQ1NU
UiBscE5hbWUpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhFTkhNRVRBRklMRSAgX19zdGRjYWxs
IEdldEVuaE1ldGFGaWxlVyggICBMUENXU1RSIGxwTmFtZSk7DQoNCg0KDQoNCiNsaW5lIDQ4MTkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UICBfX3N0
ZGNhbGwgR2V0RW5oTWV0YUZpbGVCaXRzKCAgICBIRU5ITUVUQUZJTEUgaEVNRiwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIG5TaXplLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQllURSBscERhdGEpOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgIF9fc3RkY2FsbCBHZXRFbmhNZXRhRmlsZURlc2Ny
aXB0aW9uQSggICAgSEVOSE1FVEFGSUxFIGhlbWYsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGNjaEJ1ZmZlciwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQU1RSIGxwRGVzY3Jp
cHRpb24pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgIF9fc3RkY2FsbCBHZXRFbmhNZXRh
RmlsZURlc2NyaXB0aW9uVyggICAgSEVOSE1FVEFGSUxFIGhlbWYsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGNjaEJ1ZmZlciwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQV1NU
UiBscERlc2NyaXB0aW9uKTsNCg0KDQoNCg0KI2xpbmUgNDgzMyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdk
aS5oIg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgIF9fc3RkY2FsbCBHZXRFbmhNZXRhRmls
ZUhlYWRlciggICAgICBIRU5ITUVUQUZJTEUgaGVtZiwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBuU2l6ZSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBFTkhNRVRBSEVBREVSIGxwRW5oTWV0
YUhlYWRlcik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUlOVCAgX19zdGRjYWxsIEdldEVuaE1l
dGFGaWxlUGFsZXR0ZUVudHJpZXMoICBIRU5ITUVUQUZJTEUgaGVtZiwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgbk51bUVudHJpZXMs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
UFBBTEVUVEVFTlRSWSBscFBhbGV0dGVFbnRyaWVzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IFVJTlQgIF9fc3RkY2FsbCBHZXRFbmhNZXRhRmlsZVBpeGVsRm9ybWF0KCAgICAgSEVOSE1FVEFG
SUxFIGhlbWYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVSU5UIGNiQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUElYRUxGT1JNQVRERVNDUklQVE9SICpwcGZkKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBVSU5UICBfX3N0ZGNhbGwgR2V0V2luTWV0YUZpbGVCaXRzKCAgICBI
RU5ITUVUQUZJTEUgaGVtZiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVSU5UIGNiRGF0YTE2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExQQllURSBwRGF0YTE2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElOVCBpTWFwTW9kZSwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIREMgaGRjUmVmKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBCT09MICBfX3N0ZGNhbGwgUGxheUVuaE1ldGFGaWxlKCAgIEhEQyBoZGMsICAgSEVOSE1FVEFG
SUxFIGhtZiwgICBjb25zdCBSRUNUICogbHByZWN0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBC
T09MICBfX3N0ZGNhbGwgUGxheUVuaE1ldGFGaWxlUmVjb3JkKCAgICAgSERDIGhkYywNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBIQU5ETEVUQUJM
RSBwaHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEVOSE1FVEFSRUNPUkQgKnBtciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVUlOVCBjaHQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SEVOSE1FVEFGSUxFICBfX3N0ZGNhbGwgU2V0RW5oTWV0YUZpbGVCaXRzKCAgICBVSU5UIG5TaXpl
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQllURSAqIHBiKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhFTkhNRVRBRklMRSAg
X19zdGRjYWxsIFNldFdpbk1ldGFGaWxlQml0cyggICAgVUlOVCBuU2l6ZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJZVEUgKmxw
TWV0YTE2RGF0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEhEQyBoZGNSZWYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBNRVRBRklMRVBJQ1QgKmxwTUZQKTsNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgR2RpQ29tbWVudCggIEhEQyBoZGMsICAgVUlO
VCBuU2l6ZSwgICBjb25zdCBCWVRFICpscERhdGEpOw0KDQojbGluZSA0ODY0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luZ2RpLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwg
R2V0VGV4dE1ldHJpY3NBKCAgIEhEQyBoZGMsICAgTFBURVhUTUVUUklDQSBscHRtKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBHZXRUZXh0TWV0cmljc1coICAgSERDIGhk
YywgICBMUFRFWFRNRVRSSUNXIGxwdG0pOw0KDQoNCg0KDQojbGluZSA0ODc0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDQ4OTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI2xpbmUgNDg5NiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRElCU0VDVElPTiB7DQogICAgQklU
TUFQICAgICAgIGRzQm07DQogICAgQklUTUFQSU5GT0hFQURFUiAgICBkc0JtaWg7DQogICAgRFdP
UkQgICAgICAgICAgICAgICBkc0JpdGZpZWxkc1szXTsNCiAgICBIQU5ETEUgICAgICAgICAgICAg
IGRzaFNlY3Rpb247DQogICAgRFdPUkQgICAgICAgICAgICAgICBkc09mZnNldDsNCn0gRElCU0VD
VElPTiwgICpMUERJQlNFQ1RJT04sICpQRElCU0VDVElPTjsNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQk9PTCBfX3N0ZGNhbGwgQW5nbGVBcmMoICAgSERDIGhkYywgICBpbnQgeCwgICBpbnQg
eSwgICBEV09SRCByLCAgIEZMT0FUIFN0YXJ0QW5nbGUsICAgRkxPQVQgU3dlZXBBbmdsZSk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgUG9seVBvbHlsaW5lKCAgSERDIGhk
YywgICBjb25zdCBQT0lOVCAqYXB0LCAgIGNvbnN0IERXT1JEICphc3osICAgRFdPUkQgY3N6KTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBHZXRXb3JsZFRyYW5zZm9ybSgg
ICBIREMgaGRjLCAgIExQWEZPUk0gbHB4Zik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBf
X3N0ZGNhbGwgU2V0V29ybGRUcmFuc2Zvcm0oICAgSERDIGhkYywgICBjb25zdCBYRk9STSAqIGxw
eGYpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIE1vZGlmeVdvcmxkVHJh
bnNmb3JtKCAgIEhEQyBoZGMsICAgY29uc3QgWEZPUk0gKiBscHhmLCAgIERXT1JEIG1vZGUpOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIENvbWJpbmVUcmFuc2Zvcm0oICAg
TFBYRk9STSBscHhmT3V0LCAgIGNvbnN0IFhGT1JNICpscHhmMSwgICBjb25zdCBYRk9STSAqbHB4
ZjIpOw0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpICAgSEJJVE1BUCBfX3N0ZGNh
bGwgQ3JlYXRlRElCU2VjdGlvbigNCiAgICAgICAgICAgICBIREMgICAgICAgICAgICAgICBoZGMs
DQogICAgICAgICAgICAgICAgIGNvbnN0IEJJVE1BUElORk8gKnBibWksDQogICAgICAgICAgICAg
ICAgIFVJTlQgICAgICAgICAgICAgIHVzYWdlLA0KICAgIA0KICAgIA0KICAgICAgICAgICAgICAg
ICAgICB2b2lkICAgICAgICAgICAgKipwcHZCaXRzLA0KICAgICAgICAgICAgIEhBTkRMRSAgICAg
ICAgICAgIGhTZWN0aW9uLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICBvZmZz
ZXQpOw0KDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UIF9fc3RkY2FsbCBHZXRESUJD
b2xvclRhYmxlKCAgIEhEQyAgaGRjLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVUlOVCBpU3RhcnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVSU5UIGNFbnRyaWVzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUkdCUVVBRCAqcHJnYnEpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgX19z
dGRjYWxsIFNldERJQkNvbG9yVGFibGUoICAgSERDICBoZGMsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGlTdGFydCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVJTlQgY0VudHJpZXMsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSR0JRVUFEICpwcmdicSk7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCAgdGFnQ09MT1JBREpVU1RNRU5UIHsNCiAgICBXT1JEICAgY2FT
aXplOw0KICAgIFdPUkQgICBjYUZsYWdzOw0KICAgIFdPUkQgICBjYUlsbHVtaW5hbnRJbmRleDsN
CiAgICBXT1JEICAgY2FSZWRHYW1tYTsNCiAgICBXT1JEICAgY2FHcmVlbkdhbW1hOw0KICAgIFdP
UkQgICBjYUJsdWVHYW1tYTsNCiAgICBXT1JEICAgY2FSZWZlcmVuY2VCbGFjazsNCiAgICBXT1JE
ICAgY2FSZWZlcmVuY2VXaGl0ZTsNCiAgICBTSE9SVCAgY2FDb250cmFzdDsNCiAgICBTSE9SVCAg
Y2FCcmlnaHRuZXNzOw0KICAgIFNIT1JUICBjYUNvbG9yZnVsbmVzczsNCiAgICBTSE9SVCAgY2FS
ZWRHcmVlblRpbnQ7DQp9IENPTE9SQURKVVNUTUVOVCwgKlBDT0xPUkFESlVTVE1FTlQsICAqTFBD
T0xPUkFESlVTVE1FTlQ7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBT
ZXRDb2xvckFkanVzdG1lbnQoICAgSERDIGhkYywgICBjb25zdCBDT0xPUkFESlVTVE1FTlQgKmxw
Y2EpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIEdldENvbG9yQWRqdXN0
bWVudCggICBIREMgaGRjLCAgIExQQ09MT1JBREpVU1RNRU5UIGxwY2EpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhQQUxFVFRFIF9fc3RkY2FsbCBDcmVhdGVIYWxmdG9uZVBhbGV0dGUoICAgSERD
IGhkYyk7DQoNCg0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIEFCT1JUUFJPQykoICAgSERDLCAg
IGludCk7DQoNCg0KI2xpbmUgNTAwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQp0eXBlZGVm
IHN0cnVjdCBfRE9DSU5GT0Egew0KICAgIGludCAgICAgY2JTaXplOw0KICAgIExQQ1NUUiAgIGxw
c3pEb2NOYW1lOw0KICAgIExQQ1NUUiAgIGxwc3pPdXRwdXQ7DQoNCiAgICBMUENTVFIgICBscHN6
RGF0YXR5cGU7DQogICAgRFdPUkQgICAgZndUeXBlOw0KI2xpbmUgNTAwOSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KfSBET0NJTkZPQSwgKkxQRE9DSU5GT0E7DQp0eXBlZGVmIHN0cnVjdCBfRE9D
SU5GT1cgew0KICAgIGludCAgICAgY2JTaXplOw0KICAgIExQQ1dTVFIgIGxwc3pEb2NOYW1lOw0K
ICAgIExQQ1dTVFIgIGxwc3pPdXRwdXQ7DQoNCiAgICBMUENXU1RSICBscHN6RGF0YXR5cGU7DQog
ICAgRFdPUkQgICAgZndUeXBlOw0KI2xpbmUgNTAxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
fSBET0NJTkZPVywgKkxQRE9DSU5GT1c7DQoNCnR5cGVkZWYgRE9DSU5GT1cgRE9DSU5GTzsNCnR5
cGVkZWYgTFBET0NJTkZPVyBMUERPQ0lORk87DQoNCg0KDQojbGluZSA1MDI2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luZ2RpLmgiDQoNCg0KDQoNCiNsaW5lIDUwMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCIN
Cg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19zdGRjYWxsIFN0YXJ0RG9jQSggIEhEQyBo
ZGMsICAgY29uc3QgRE9DSU5GT0EgKmxwZGkpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
X19zdGRjYWxsIFN0YXJ0RG9jVyggIEhEQyBoZGMsICAgY29uc3QgRE9DSU5GT1cgKmxwZGkpOw0K
DQoNCg0KDQojbGluZSA1MDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQogX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX3N0ZGNhbGwgRW5kRG9jKCAgSERDIGhkYyk7DQogX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludCBfX3N0ZGNhbGwgU3RhcnRQYWdlKCAgSERDIGhkYyk7DQogX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludCBfX3N0ZGNhbGwgRW5kUGFnZSggIEhEQyBoZGMpOw0KIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnQgX19zdGRjYWxsIEFib3J0RG9jKCAgSERDIGhkYyk7DQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgaW50IF9fc3RkY2FsbCBTZXRBYm9ydFByb2MoICBIREMgaGRjLCAgIEFC
T1JUUFJPQyBwcm9jKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIEFi
b3J0UGF0aCggIEhEQyBoZGMpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxs
IEFyY1RvKCAgSERDIGhkYywgICBpbnQgbGVmdCwgICBpbnQgdG9wLCAgIGludCByaWdodCwgICBp
bnQgYm90dG9tLCAgIGludCB4cjEsICAgaW50IHlyMSwgICBpbnQgeHIyLCAgIGludCB5cjIpOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIEJlZ2luUGF0aCggIEhEQyBoZGMp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIENsb3NlRmlndXJlKCAgSERD
IGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgRW5kUGF0aCggIEhE
QyBoZGMpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIEZpbGxQYXRoKCAg
SERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgRmxhdHRlblBh
dGgoICBIREMgaGRjKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2FsbCBHZXRQ
YXRoKCAgSERDIGhkYywgICBMUFBPSU5UIGFwdCwgICBMUEJZVEUgYWosIGludCBjcHQpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSR04gX19zdGRjYWxsIFBhdGhUb1JlZ2lvbiggIEhEQyBoZGMp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFBvbHlEcmF3KCAgSERDIGhk
YywgICBjb25zdCBQT0lOVCAqIGFwdCwgICBjb25zdCBCWVRFICogYWosICAgaW50IGNwdCk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgU2VsZWN0Q2xpcFBhdGgoICBIREMg
aGRjLCAgIGludCBtb2RlKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgIF9fc3RkY2FsbCBT
ZXRBcmNEaXJlY3Rpb24oICBIREMgaGRjLCAgIGludCBkaXIpOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEJPT0wgX19zdGRjYWxsIFNldE1pdGVyTGltaXQoICBIREMgaGRjLCAgIEZMT0FUIGxpbWl0
LCAgIFBGTE9BVCBvbGQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFN0
cm9rZUFuZEZpbGxQYXRoKCAgSERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBf
X3N0ZGNhbGwgU3Ryb2tlUGF0aCggIEhEQyBoZGMpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJP
T0wgX19zdGRjYWxsIFdpZGVuUGF0aCggIEhEQyBoZGMpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhQRU4gX19zdGRjYWxsIEV4dENyZWF0ZVBlbiggICBEV09SRCBpUGVuU3R5bGUsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNXaWR0aCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTE9HQlJVU0ggKnBsYnJ1c2gsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNTdHlsZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRFdPUkQgKnBzdHlsZSk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgR2V0TWl0ZXJMaW1pdCggIEhEQyBoZGMs
ICAgUEZMT0FUIHBsaW1pdCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICBfX3N0ZGNhbGwg
R2V0QXJjRGlyZWN0aW9uKCAgSERDIGhkYyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
ICBfX3N0ZGNhbGwgR2V0T2JqZWN0QSggIEhBTkRMRSBoLCAgIGludCBjLCAgIExQVk9JRCBwdik7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19zdGRjYWxsIEdldE9iamVjdFcoICBIQU5E
TEUgaCwgICBpbnQgYywgICBMUFZPSUQgcHYpOw0KDQoNCg0KDQojbGluZSA1MDc2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNTA5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQk9PTCAgX19zdGRjYWxsIE1vdmVUb0V4KCAgIEhEQyBoZGMsICAgaW50IHgsICAgaW50
IHksICAgTFBQT0lOVCBscHB0KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRj
YWxsIFRleHRPdXRBKCAgIEhEQyBoZGMsICAgaW50IHgsICAgaW50IHksICAgTFBDU1RSIGxwU3Ry
aW5nLCAgIGludCBjKTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIFRl
eHRPdXRXKCAgIEhEQyBoZGMsICAgaW50IHgsICAgaW50IHksICAgTFBDV1NUUiBscFN0cmluZywg
ICBpbnQgYyk7DQoNCg0KDQoNCiNsaW5lIDUxMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEV4dFRleHRPdXRBKCAgIEhEQyBo
ZGMsICAgaW50IHgsICAgaW50IHksICAgVUlOVCBvcHRpb25zLCAgIGNvbnN0IFJFQ1QgKiBscHJl
Y3QsICAgTFBDU1RSIGxwU3RyaW5nLCAgIFVJTlQgYywgICBjb25zdCBJTlQgKiBscER4KTsNCiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEV4dFRleHRPdXRXKCAgIEhEQyBo
ZGMsICAgaW50IHgsICAgaW50IHksICAgVUlOVCBvcHRpb25zLCAgIGNvbnN0IFJFQ1QgKiBscHJl
Y3QsICAgTFBDV1NUUiBscFN0cmluZywgICBVSU5UIGMsICAgY29uc3QgSU5UICogbHBEeCk7DQoN
Cg0KDQoNCiNsaW5lIDUxMTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgUG9seVRleHRPdXRBKCAgSERDIGhkYywgICBjb25zdCBQ
T0xZVEVYVEEgKiBwcHQsICAgaW50IG5zdHJpbmdzKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBC
T09MICBfX3N0ZGNhbGwgUG9seVRleHRPdXRXKCAgSERDIGhkYywgICBjb25zdCBQT0xZVEVYVFcg
KiBwcHQsICAgaW50IG5zdHJpbmdzKTsNCg0KDQoNCg0KI2xpbmUgNTEyMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmdkaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJHTiAgX19zdGRjYWxsIENyZWF0
ZVBvbHlnb25SZ24oICAgICAgY29uc3QgUE9JTlQgKnBwdGwsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNQb2ludCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaU1vZGUpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBEUHRvTFAoICAgSERDIGhkYywgICBMUFBPSU5UIGxwcHQs
ICAgaW50IGMpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBMUHRvRFAo
ICAgSERDIGhkYywgICBMUFBPSU5UIGxwcHQsICAgaW50IGMpOw0KIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBCT09MICBfX3N0ZGNhbGwgUG9seWdvbiggIEhEQyBoZGMsICAgY29uc3QgUE9JTlQgKmFw
dCwgICBpbnQgY3B0KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIFBv
bHlsaW5lKCAgSERDIGhkYywgICBjb25zdCBQT0lOVCAqYXB0LCAgIGludCBjcHQpOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIFBvbHlCZXppZXIoICBIREMgaGRjLCAg
IGNvbnN0IFBPSU5UICogYXB0LCAgIERXT1JEIGNwdCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Qk9PTCAgX19zdGRjYWxsIFBvbHlCZXppZXJUbyggIEhEQyBoZGMsICAgY29uc3QgUE9JTlQgKiBh
cHQsICAgRFdPUkQgY3B0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwg
UG9seWxpbmVUbyggIEhEQyBoZGMsICAgY29uc3QgUE9JTlQgKiBhcHQsICAgRFdPUkQgY3B0KTsN
Cg0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgU2V0Vmlld3BvcnRFeHRF
eCggICBIREMgaGRjLCAgIGludCB4LCAgIGludCB5LCAgIExQU0laRSBscHN6KTsNCiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIFNldFZpZXdwb3J0T3JnRXgoICAgSERDIGhk
YywgICBpbnQgeCwgICBpbnQgeSwgICBMUFBPSU5UIGxwcHQpOw0KIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBCT09MICBfX3N0ZGNhbGwgU2V0V2luZG93RXh0RXgoICAgSERDIGhkYywgICBpbnQgeCwg
ICBpbnQgeSwgICBMUFNJWkUgbHBzeik7DQogX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9f
c3RkY2FsbCBTZXRXaW5kb3dPcmdFeCggICBIREMgaGRjLCAgIGludCB4LCAgIGludCB5LCAgIExQ
UE9JTlQgbHBwdCk7DQoNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIE9m
ZnNldFZpZXdwb3J0T3JnRXgoICAgSERDIGhkYywgICBpbnQgeCwgICBpbnQgeSwgICBMUFBPSU5U
IGxwcHQpOw0KIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgT2Zmc2V0V2lu
ZG93T3JnRXgoICAgSERDIGhkYywgICBpbnQgeCwgICBpbnQgeSwgICBMUFBPSU5UIGxwcHQpOw0K
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgU2NhbGVWaWV3cG9ydEV4dEV4
KCAgIEhEQyBoZGMsICAgaW50IHhuLCAgIGludCBkeCwgICBpbnQgeW4sICAgaW50IHlkLCAgIExQ
U0laRSBscHN6KTsNCiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIFNjYWxl
V2luZG93RXh0RXgoICAgSERDIGhkYywgICBpbnQgeG4sICAgaW50IHhkLCAgIGludCB5biwgICBp
bnQgeWQsICAgTFBTSVpFIGxwc3opOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3Rk
Y2FsbCBTZXRCaXRtYXBEaW1lbnNpb25FeCggICBIQklUTUFQIGhibSwgICBpbnQgdywgICBpbnQg
aCwgICBMUFNJWkUgbHBzeik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxs
IFNldEJydXNoT3JnRXgoICAgSERDIGhkYywgICBpbnQgeCwgICBpbnQgeSwgICBMUFBPSU5UIGxw
cHQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50ICAgX19zdGRjYWxsIEdldFRleHRGYWNl
QSggICBIREMgaGRjLCAgIGludCBjLCAgICBMUFNUUiBscE5hbWUpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludCAgIF9fc3RkY2FsbCBHZXRUZXh0RmFjZVcoICAgSERDIGhkYywgICBpbnQgYywg
ICAgTFBXU1RSIGxwTmFtZSk7DQoNCg0KDQoNCiNsaW5lIDUxNTMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5n
ZGkuaCINCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0tFUk5JTkdQQUlSIHsNCiAgIFdPUkQgd0Zp
cnN0Ow0KICAgV09SRCB3U2Vjb25kOw0KICAgaW50ICBpS2VybkFtb3VudDsNCn0gS0VSTklOR1BB
SVIsICpMUEtFUk5JTkdQQUlSOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgRFdPUkQgX19zdGRj
YWxsIEdldEtlcm5pbmdQYWlyc0EoICAgICAgSERDIGhkYywNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBuUGFpcnMsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBLRVJOSU5HUEFJUiAgIGxwS2VyblBhaXIp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbCBHZXRLZXJuaW5nUGFpcnNX
KCAgICAgIEhEQyBoZGMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFdPUkQgblBhaXJzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExQS0VSTklOR1BBSVIgICBscEtlcm5QYWlyKTsNCg0KDQoNCg0KI2xpbmUgNTE3
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09M
ICBfX3N0ZGNhbGwgR2V0RENPcmdFeCggICBIREMgaGRjLCAgIExQUE9JTlQgbHBwdCk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIEZpeEJydXNoT3JnRXgoICAgSERDIGhk
YywgICBpbnQgeCwgICBpbnQgeSwgICAgTFBQT0lOVCBwdGwpOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEJPT0wgIF9fc3RkY2FsbCBVbnJlYWxpemVPYmplY3QoICAgSEdESU9CSiBoKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCBHZGlGbHVzaCh2b2lkKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBEV09SRCBfX3N0ZGNhbGwgR2RpU2V0QmF0Y2hMaW1pdCggICBEV09S
RCBkdyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgRFdPUkQgX19zdGRjYWxsIEdkaUdldEJhdGNo
TGltaXQodm9pZCk7DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQgKF9fc3RkY2FsbCogSUNN
RU5VTVBST0NBKShMUFNUUiwgTFBBUkFNKTsNCnR5cGVkZWYgaW50IChfX3N0ZGNhbGwqIElDTUVO
VU1QUk9DVykoTFBXU1RSLCBMUEFSQU0pOw0KDQoNCg0KDQojbGluZSA1MTk3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luZ2RpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICAgICAgICBfX3N0ZGNh
bGwgU2V0SUNNTW9kZSggICBIREMgaGRjLCAgIGludCBtb2RlKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBCT09MICAgICAgICBfX3N0ZGNhbGwgQ2hlY2tDb2xvcnNJbkdhbXV0KCAgICAgIEhEQyBo
ZGMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMUFJHQlRSSVBMRSBscFJHQlRyaXBsZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCBkbHBCdWZmZXIsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBuQ291bnQpOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSENPTE9SU1BBQ0UgX19zdGRjYWxsIEdldENvbG9yU3Bh
Y2UoICAgSERDIGhkYyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgICAgICAgX19zdGRj
YWxsIEdldExvZ0NvbG9yU3BhY2VBKCAgIEhDT0xPUlNQQUNFIGhDb2xvclNwYWNlLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUExPR0NPTE9SU1BB
Q0VBIGxwQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEV09SRCBuU2l6ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgICAgICAg
X19zdGRjYWxsIEdldExvZ0NvbG9yU3BhY2VXKCAgIEhDT0xPUlNQQUNFIGhDb2xvclNwYWNlLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUExPR0NP
TE9SU1BBQ0VXIGxwQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEV09SRCBuU2l6ZSk7DQoNCg0KDQoNCiNsaW5lIDUyMTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhDT0xPUlNQQUNFIF9fc3Rk
Y2FsbCBDcmVhdGVDb2xvclNwYWNlQSggICBMUExPR0NPTE9SU1BBQ0VBIGxwbGNzKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIQ09MT1JTUEFDRSBfX3N0ZGNhbGwgQ3JlYXRlQ29sb3JTcGFjZVco
ICAgTFBMT0dDT0xPUlNQQUNFVyBscGxjcyk7DQoNCg0KDQoNCiNsaW5lIDUyMjQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5nZGkuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIQ09MT1JTUEFDRSBfX3N0ZGNh
bGwgU2V0Q29sb3JTcGFjZSggICBIREMgaGRjLCAgIEhDT0xPUlNQQUNFIGhjcyk7DQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgQk9PTCAgICAgICAgX19zdGRjYWxsIERlbGV0ZUNvbG9yU3BhY2UoICAg
SENPTE9SU1BBQ0UgaGNzKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICAgICAgICBfX3N0
ZGNhbGwgR2V0SUNNUHJvZmlsZUEoICAgICAgSERDIGhkYywNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBEV09SRCBwQnVmU2l6ZSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBTVFIgcHN6RmlsZW5h
bWUpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgICAgICAgIF9fc3RkY2FsbCBHZXRJQ01Q
cm9maWxlVyggICAgICBIREMgaGRjLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMUERXT1JEIHBCdWZTaXplLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdTVFIgcHN6RmlsZW5hbWUpOw0KDQoNCg0K
DQojbGluZSA1MjM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBCT09MICAgICAgICBfX3N0ZGNhbGwgU2V0SUNNUHJvZmlsZUEoICAgSERDIGhkYywgICBM
UFNUUiBscEZpbGVOYW1lKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICAgICAgICBfX3N0
ZGNhbGwgU2V0SUNNUHJvZmlsZVcoICAgSERDIGhkYywgICBMUFdTVFIgbHBGaWxlTmFtZSk7DQoN
Cg0KDQoNCiNsaW5lIDUyNDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBCT09MICAgICAgICBfX3N0ZGNhbGwgR2V0RGV2aWNlR2FtbWFSYW1wKCAgIEhEQyBo
ZGMsICAgTFBWT0lEIGxwUmFtcCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgICAgICAg
X19zdGRjYWxsIFNldERldmljZUdhbW1hUmFtcCggICBIREMgaGRjLCAgICBMUFZPSUQgbHBSYW1w
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICAgICAgICBfX3N0ZGNhbGwgQ29sb3JNYXRj
aFRvVGFyZ2V0KCAgIEhEQyBoZGMsICAgSERDIGhkY1RhcmdldCwgICBEV09SRCBhY3Rpb24pOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgICAgICAgIF9fc3RkY2FsbCBFbnVtSUNNUHJvZmls
ZXNBKCAgIEhEQyBoZGMsICAgSUNNRU5VTVBST0NBIHByb2MsICAgTFBBUkFNIHBhcmFtKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICAgICAgICBfX3N0ZGNhbGwgRW51bUlDTVByb2ZpbGVz
VyggICBIREMgaGRjLCAgIElDTUVOVU1QUk9DVyBwcm9jLCAgIExQQVJBTSBwYXJhbSk7DQoNCg0K
DQoNCiNsaW5lIDUyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEJPT0wgICAgICAgIF9fc3RkY2FsbCBVcGRhdGVJQ01SZWdLZXlBKCAgIERXT1JEIHJl
c2VydmVkLCAgIExQU1RSIGxwc3pDTUlELCAgIExQU1RSIGxwc3pGaWxlTmFtZSwgICBVSU5UIGNv
bW1hbmQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgICAgICAgX19zdGRjYWxsIFVw
ZGF0ZUlDTVJlZ0tleVcoICAgRFdPUkQgcmVzZXJ2ZWQsICAgTFBXU1RSIGxwc3pDTUlELCAgIExQ
V1NUUiBscHN6RmlsZU5hbWUsICAgVUlOVCBjb21tYW5kKTsNCg0KDQoNCg0KI2xpbmUgNTI2NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCiNwcmFnbWEgZGVwcmVjYXRlZCAoVXBkYXRlSUNN
UmVnS2V5VykNCiNwcmFnbWEgZGVwcmVjYXRlZCAoVXBkYXRlSUNNUmVnS2V5QSkNCiNsaW5lIDUy
NjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI2xpbmUgNTI3MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmdkaS5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICAgICAgICBfX3N0ZGNhbGwg
Q29sb3JDb3JyZWN0UGFsZXR0ZSggICBIREMgaGRjLCAgIEhQQUxFVFRFIGhQYWwsICAgRFdPUkQg
ZGVGaXJzdCwgICBEV09SRCBudW0pOw0KI2xpbmUgNTI3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTI4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDU0MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNTQxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0K
DQoNCiNsaW5lIDU0MjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDU0MzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0VNUg0Kew0KICAgIERXT1JEICAgaVR5cGU7ICAgICAgICAgICAgICANCiAgICBEV09SRCAg
IG5TaXplOyAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
fSBFTVIsICpQRU1SOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SVEVYVA0Kew0KICAgIFBP
SU5UTCAgcHRsUmVmZXJlbmNlOw0KICAgIERXT1JEICAgbkNoYXJzOw0KICAgIERXT1JEICAgb2Zm
U3RyaW5nOyAgICAgICAgICANCiAgICBEV09SRCAgIGZPcHRpb25zOw0KICAgIFJFQ1RMICAgcmNs
Ow0KICAgIERXT1JEICAgb2ZmRHg7ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgDQp9IEVNUlRFWFQsICpQRU1SVEVYVDsNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0FCT1JUUEFUSA0Kew0KICAgIEVNUiAgICAgZW1yOw0KfSBFTVJBQk9SVFBBVEgsICAgICAg
KlBFTVJBQk9SVFBBVEgsDQogIEVNUkJFR0lOUEFUSCwgICAgICAqUEVNUkJFR0lOUEFUSCwNCiAg
RU1SRU5EUEFUSCwgICAgICAgICpQRU1SRU5EUEFUSCwNCiAgRU1SQ0xPU0VGSUdVUkUsICAgICpQ
RU1SQ0xPU0VGSUdVUkUsDQogIEVNUkZMQVRURU5QQVRILCAgICAqUEVNUkZMQVRURU5QQVRILA0K
ICBFTVJXSURFTlBBVEgsICAgICAgKlBFTVJXSURFTlBBVEgsDQogIEVNUlNFVE1FVEFSR04sICAg
ICAqUEVNUlNFVE1FVEFSR04sDQogIEVNUlNBVkVEQywgICAgICAgICAqUEVNUlNBVkVEQywNCiAg
RU1SUkVBTElaRVBBTEVUVEUsICpQRU1SUkVBTElaRVBBTEVUVEU7DQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0VNUlNFTEVDVENMSVBQQVRIDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgRFdPUkQgICBp
TW9kZTsNCn0gRU1SU0VMRUNUQ0xJUFBBVEgsICAgICpQRU1SU0VMRUNUQ0xJUFBBVEgsDQogIEVN
UlNFVEJLTU9ERSwgICAgICAgICAqUEVNUlNFVEJLTU9ERSwNCiAgRU1SU0VUTUFQTU9ERSwgICAg
ICAgICpQRU1SU0VUTUFQTU9ERSwNCg0KICBFTVJTRVRMQVlPVVQsICAgICAgICAgKlBFTVJTRVRM
QVlPVVQsDQojbGluZSA1NDgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQogIEVNUlNFVFBPTFlG
SUxMTU9ERSwgICAqUEVNUlNFVFBPTFlGSUxMTU9ERSwNCiAgRU1SU0VUUk9QMiwgICAgICAgICAg
ICpQRU1SU0VUUk9QMiwNCiAgRU1SU0VUU1RSRVRDSEJMVE1PREUsICpQRU1SU0VUU1RSRVRDSEJM
VE1PREUsDQogIEVNUlNFVElDTU1PREUsICAgICAgICAqUEVNUlNFVElDTU1PREUsDQogIEVNUlNF
VFRFWFRBTElHTiwgICAgICAqUEVNUlNFVFRFWFRBTElHTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
RU1SU0VUTUlURVJMSU1JVA0Kew0KICAgIEVNUiAgICAgZW1yOw0KICAgIEZMT0FUICAgZU1pdGVy
TGltaXQ7DQp9IEVNUlNFVE1JVEVSTElNSVQsICpQRU1SU0VUTUlURVJMSU1JVDsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnRU1SUkVTVE9SRURDDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgTE9ORyAg
ICBpUmVsYXRpdmU7ICAgICAgICAgIA0KfSBFTVJSRVNUT1JFREMsICpQRU1SUkVTVE9SRURDOw0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTRVRBUkNESVJFQ1RJT04NCnsNCiAgICBFTVIgICAgIGVt
cjsNCiAgICBEV09SRCAgIGlBcmNEaXJlY3Rpb247ICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KfSBFTVJTRVRBUkNESVJFQ1RJT04sICpQRU1SU0VUQVJDRElSRUNUSU9O
Ow0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTRVRNQVBQRVJGTEFHUw0Kew0KICAgIEVNUiAgICAg
ZW1yOw0KICAgIERXT1JEICAgZHdGbGFnczsNCn0gRU1SU0VUTUFQUEVSRkxBR1MsICpQRU1SU0VU
TUFQUEVSRkxBR1M7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFVFRFWFRDT0xPUg0Kew0KICAg
IEVNUiAgICAgZW1yOw0KICAgIENPTE9SUkVGIGNyQ29sb3I7DQp9IEVNUlNFVEJLQ09MT1IsICAg
KlBFTVJTRVRCS0NPTE9SLA0KICBFTVJTRVRURVhUQ09MT1IsICpQRU1SU0VUVEVYVENPTE9SOw0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTRUxFQ1RPQkpFQ1QNCnsNCiAgICBFTVIgICAgIGVtcjsN
CiAgICBEV09SRCAgIGloT2JqZWN0OyAgICAgICAgICAgDQp9IEVNUlNFTEVDVE9CSkVDVCwgKlBF
TVJTRUxFQ1RPQkpFQ1QsDQogIEVNUkRFTEVURU9CSkVDVCwgKlBFTVJERUxFVEVPQkpFQ1Q7DQoN
CnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFTEVDVFBBTEVUVEUNCnsNCiAgICBFTVIgICAgIGVtcjsN
CiAgICBEV09SRCAgIGloUGFsOyAgICAgICAgICAgICAgDQp9IEVNUlNFTEVDVFBBTEVUVEUsICpQ
RU1SU0VMRUNUUEFMRVRURTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUkVTSVpFUEFMRVRURQ0K
ew0KICAgIEVNUiAgICAgZW1yOw0KICAgIERXT1JEICAgaWhQYWw7ICAgICAgICAgICAgICANCiAg
ICBEV09SRCAgIGNFbnRyaWVzOw0KfSBFTVJSRVNJWkVQQUxFVFRFLCAqUEVNUlJFU0laRVBBTEVU
VEU7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFVFBBTEVUVEVFTlRSSUVTDQp7DQogICAgRU1S
ICAgICBlbXI7DQogICAgRFdPUkQgICBpaFBhbDsgICAgICAgICAgICAgIA0KICAgIERXT1JEICAg
aVN0YXJ0Ow0KICAgIERXT1JEICAgY0VudHJpZXM7DQogICAgUEFMRVRURUVOVFJZIGFQYWxFbnRy
aWVzWzFdOw0KfSBFTVJTRVRQQUxFVFRFRU5UUklFUywgKlBFTVJTRVRQQUxFVFRFRU5UUklFUzsN
Cg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SU0VUQ09MT1JBREpVU1RNRU5UDQp7DQogICAgRU1SICAg
ICBlbXI7DQogICAgQ09MT1JBREpVU1RNRU5UIENvbG9yQWRqdXN0bWVudDsNCn0gRU1SU0VUQ09M
T1JBREpVU1RNRU5ULCAqUEVNUlNFVENPTE9SQURKVVNUTUVOVDsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnRU1SR0RJQ09NTUVOVA0Kew0KICAgIEVNUiAgICAgZW1yOw0KICAgIERXT1JEICAgY2JEYXRh
OyAgICAgICAgICAgICANCiAgICBCWVRFICAgIERhdGFbMV07DQp9IEVNUkdESUNPTU1FTlQsICpQ
RU1SR0RJQ09NTUVOVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SRU9GDQp7DQogICAgRU1SICAg
ICBlbXI7DQogICAgRFdPUkQgICBuUGFsRW50cmllczsgICAgICAgIA0KICAgIERXT1JEICAgb2Zm
UGFsRW50cmllczsgICAgICANCiAgICBEV09SRCAgIG5TaXplTGFzdDsgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCn0gRU1SRU9GLCAqUEVNUkVPRjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1STElORVRP
DQp7DQogICAgRU1SICAgICBlbXI7DQogICAgUE9JTlRMICBwdGw7DQp9IEVNUkxJTkVUTywgICAq
UEVNUkxJTkVUTywNCiAgRU1STU9WRVRPRVgsICpQRU1STU9WRVRPRVg7DQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ0VNUk9GRlNFVENMSVBSR04NCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBQT0lOVEwg
IHB0bE9mZnNldDsNCn0gRU1ST0ZGU0VUQ0xJUFJHTiwgKlBFTVJPRkZTRVRDTElQUkdOOw0KDQp0
eXBlZGVmIHN0cnVjdCB0YWdFTVJGSUxMUEFUSA0Kew0KICAgIEVNUiAgICAgZW1yOw0KICAgIFJF
Q1RMICAgcmNsQm91bmRzOyAgICAgICAgICANCn0gRU1SRklMTFBBVEgsICAgICAgICAgICpQRU1S
RklMTFBBVEgsDQogIEVNUlNUUk9LRUFOREZJTExQQVRILCAqUEVNUlNUUk9LRUFOREZJTExQQVRI
LA0KICBFTVJTVFJPS0VQQVRILCAgICAgICAgKlBFTVJTVFJPS0VQQVRIOw0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdFTVJFWENMVURFQ0xJUFJFQ1QNCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBSRUNU
TCAgIHJjbENsaXA7DQp9IEVNUkVYQ0xVREVDTElQUkVDVCwgICAqUEVNUkVYQ0xVREVDTElQUkVD
VCwNCiAgRU1SSU5URVJTRUNUQ0xJUFJFQ1QsICpQRU1SSU5URVJTRUNUQ0xJUFJFQ1Q7DQoNCnR5
cGVkZWYgc3RydWN0IHRhZ0VNUlNFVFZJRVdQT1JUT1JHRVgNCnsNCiAgICBFTVIgICAgIGVtcjsN
CiAgICBQT0lOVEwgIHB0bE9yaWdpbjsNCn0gRU1SU0VUVklFV1BPUlRPUkdFWCwgKlBFTVJTRVRW
SUVXUE9SVE9SR0VYLA0KICBFTVJTRVRXSU5ET1dPUkdFWCwgICAqUEVNUlNFVFdJTkRPV09SR0VY
LA0KICBFTVJTRVRCUlVTSE9SR0VYLCAgICAqUEVNUlNFVEJSVVNIT1JHRVg7DQoNCnR5cGVkZWYg
c3RydWN0IHRhZ0VNUlNFVFZJRVdQT1JURVhURVgNCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBT
SVpFTCAgIHN6bEV4dGVudDsNCn0gRU1SU0VUVklFV1BPUlRFWFRFWCwgKlBFTVJTRVRWSUVXUE9S
VEVYVEVYLA0KICBFTVJTRVRXSU5ET1dFWFRFWCwgICAqUEVNUlNFVFdJTkRPV0VYVEVYOw0KDQp0
eXBlZGVmIHN0cnVjdCB0YWdFTVJTQ0FMRVZJRVdQT1JURVhURVgNCnsNCiAgICBFTVIgICAgIGVt
cjsNCiAgICBMT05HICAgIHhOdW07DQogICAgTE9ORyAgICB4RGVub207DQogICAgTE9ORyAgICB5
TnVtOw0KICAgIExPTkcgICAgeURlbm9tOw0KfSBFTVJTQ0FMRVZJRVdQT1JURVhURVgsICpQRU1S
U0NBTEVWSUVXUE9SVEVYVEVYLA0KICBFTVJTQ0FMRVdJTkRPV0VYVEVYLCAgICpQRU1SU0NBTEVX
SU5ET1dFWFRFWDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SU0VUV09STERUUkFOU0ZPUk0NCnsN
CiAgICBFTVIgICAgIGVtcjsNCiAgICBYRk9STSAgIHhmb3JtOw0KfSBFTVJTRVRXT1JMRFRSQU5T
Rk9STSwgKlBFTVJTRVRXT1JMRFRSQU5TRk9STTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1STU9E
SUZZV09STERUUkFOU0ZPUk0NCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBYRk9STSAgIHhmb3Jt
Ow0KICAgIERXT1JEICAgaU1vZGU7DQp9IEVNUk1PRElGWVdPUkxEVFJBTlNGT1JNLCAqUEVNUk1P
RElGWVdPUkxEVFJBTlNGT1JNOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTRVRQSVhFTFYNCnsN
CiAgICBFTVIgICAgIGVtcjsNCiAgICBQT0lOVEwgIHB0bFBpeGVsOw0KICAgIENPTE9SUkVGIGNy
Q29sb3I7DQp9IEVNUlNFVFBJWEVMViwgKlBFTVJTRVRQSVhFTFY7DQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0VNUkVYVEZMT09ERklMTA0Kew0KICAgIEVNUiAgICAgZW1yOw0KICAgIFBPSU5UTCAgcHRs
U3RhcnQ7DQogICAgQ09MT1JSRUYgY3JDb2xvcjsNCiAgICBEV09SRCAgIGlNb2RlOw0KfSBFTVJF
WFRGTE9PREZJTEwsICpQRU1SRVhURkxPT0RGSUxMOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJF
TExJUFNFDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgUkVDVEwgICByY2xCb3g7ICAgICAgICAg
ICAgIA0KfSBFTVJFTExJUFNFLCAgKlBFTVJFTExJUFNFLA0KICBFTVJSRUNUQU5HTEUsICpQRU1S
UkVDVEFOR0xFOw0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlJPVU5EUkVDVA0Kew0KICAgIEVN
UiAgICAgZW1yOw0KICAgIFJFQ1RMICAgcmNsQm94OyAgICAgICAgICAgICANCiAgICBTSVpFTCAg
IHN6bENvcm5lcjsNCn0gRU1SUk9VTkRSRUNULCAqUEVNUlJPVU5EUkVDVDsNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnRU1SQVJDDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgUkVDVEwgICByY2xCb3g7
ICAgICAgICAgICAgIA0KICAgIFBPSU5UTCAgcHRsU3RhcnQ7DQogICAgUE9JTlRMICBwdGxFbmQ7
DQp9IEVNUkFSQywgICAqUEVNUkFSQywNCiAgRU1SQVJDVE8sICpQRU1SQVJDVE8sDQogIEVNUkNI
T1JELCAqUEVNUkNIT1JELA0KICBFTVJQSUUsICAgKlBFTVJQSUU7DQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0VNUkFOR0xFQVJDDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgUE9JTlRMICBwdGxDZW50
ZXI7DQogICAgRFdPUkQgICBuUmFkaXVzOw0KICAgIEZMT0FUICAgZVN0YXJ0QW5nbGU7DQogICAg
RkxPQVQgICBlU3dlZXBBbmdsZTsNCn0gRU1SQU5HTEVBUkMsICpQRU1SQU5HTEVBUkM7DQoNCnR5
cGVkZWYgc3RydWN0IHRhZ0VNUlBPTFlMSU5FDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgUkVD
VEwgICByY2xCb3VuZHM7ICAgICAgICAgIA0KICAgIERXT1JEICAgY3B0bDsNCiAgICBQT0lOVEwg
IGFwdGxbMV07DQp9IEVNUlBPTFlMSU5FLCAgICAgKlBFTVJQT0xZTElORSwNCiAgRU1SUE9MWUJF
WklFUiwgICAqUEVNUlBPTFlCRVpJRVIsDQogIEVNUlBPTFlHT04sICAgICAgKlBFTVJQT0xZR09O
LA0KICBFTVJQT0xZQkVaSUVSVE8sICpQRU1SUE9MWUJFWklFUlRPLA0KICBFTVJQT0xZTElORVRP
LCAgICpQRU1SUE9MWUxJTkVUTzsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUE9MWUxJTkUxNg0K
ew0KICAgIEVNUiAgICAgZW1yOw0KICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICANCiAg
ICBEV09SRCAgIGNwdHM7DQogICAgUE9JTlRTICBhcHRzWzFdOw0KfSBFTVJQT0xZTElORTE2LCAg
ICAgKlBFTVJQT0xZTElORTE2LA0KICBFTVJQT0xZQkVaSUVSMTYsICAgKlBFTVJQT0xZQkVaSUVS
MTYsDQogIEVNUlBPTFlHT04xNiwgICAgICAqUEVNUlBPTFlHT04xNiwNCiAgRU1SUE9MWUJFWklF
UlRPMTYsICpQRU1SUE9MWUJFWklFUlRPMTYsDQogIEVNUlBPTFlMSU5FVE8xNiwgICAqUEVNUlBP
TFlMSU5FVE8xNjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUE9MWURSQVcNCnsNCiAgICBFTVIg
ICAgIGVtcjsNCiAgICBSRUNUTCAgIHJjbEJvdW5kczsgICAgICAgICAgDQogICAgRFdPUkQgICBj
cHRsOyAgICAgICAgICAgICAgIA0KICAgIFBPSU5UTCAgYXB0bFsxXTsgICAgICAgICAgICANCiAg
ICBCWVRFICAgIGFiVHlwZXNbMV07ICAgICAgICAgDQp9IEVNUlBPTFlEUkFXLCAqUEVNUlBPTFlE
UkFXOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJQT0xZRFJBVzE2DQp7DQogICAgRU1SICAgICBl
bXI7DQogICAgUkVDVEwgICByY2xCb3VuZHM7ICAgICAgICAgIA0KICAgIERXT1JEICAgY3B0czsg
ICAgICAgICAgICAgICANCiAgICBQT0lOVFMgIGFwdHNbMV07ICAgICAgICAgICAgDQogICAgQllU
RSAgICBhYlR5cGVzWzFdOyAgICAgICAgIA0KfSBFTVJQT0xZRFJBVzE2LCAqUEVNUlBPTFlEUkFX
MTY7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlBPTFlQT0xZTElORQ0Kew0KICAgIEVNUiAgICAg
ZW1yOw0KICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICANCiAgICBEV09SRCAgIG5Qb2x5
czsgICAgICAgICAgICAgDQogICAgRFdPUkQgICBjcHRsOyAgICAgICAgICAgICAgIA0KICAgIERX
T1JEICAgYVBvbHlDb3VudHNbMV07ICAgICANCiAgICBQT0lOVEwgIGFwdGxbMV07ICAgICAgICAg
ICAgDQp9IEVNUlBPTFlQT0xZTElORSwgKlBFTVJQT0xZUE9MWUxJTkUsDQogIEVNUlBPTFlQT0xZ
R09OLCAgKlBFTVJQT0xZUE9MWUdPTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUE9MWVBPTFlM
SU5FMTYNCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBSRUNUTCAgIHJjbEJvdW5kczsgICAgICAg
ICAgDQogICAgRFdPUkQgICBuUG9seXM7ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgY3B0czsg
ICAgICAgICAgICAgICANCiAgICBEV09SRCAgIGFQb2x5Q291bnRzWzFdOyAgICAgDQogICAgUE9J
TlRTICBhcHRzWzFdOyAgICAgICAgICAgIA0KfSBFTVJQT0xZUE9MWUxJTkUxNiwgKlBFTVJQT0xZ
UE9MWUxJTkUxNiwNCiAgRU1SUE9MWVBPTFlHT04xNiwgICpQRU1SUE9MWVBPTFlHT04xNjsNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnRU1SSU5WRVJUUkdODQp7DQogICAgRU1SICAgICBlbXI7DQogICAg
UkVDVEwgICByY2xCb3VuZHM7ICAgICAgICAgIA0KICAgIERXT1JEICAgY2JSZ25EYXRhOyAgICAg
ICAgICANCiAgICBCWVRFICAgIFJnbkRhdGFbMV07DQp9IEVNUklOVkVSVFJHTiwgKlBFTVJJTlZF
UlRSR04sDQogIEVNUlBBSU5UUkdOLCAgKlBFTVJQQUlOVFJHTjsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnRU1SRklMTFJHTg0Kew0KICAgIEVNUiAgICAgZW1yOw0KICAgIFJFQ1RMICAgcmNsQm91bmRz
OyAgICAgICAgICANCiAgICBEV09SRCAgIGNiUmduRGF0YTsgICAgICAgICAgDQogICAgRFdPUkQg
ICBpaEJydXNoOyAgICAgICAgICAgIA0KICAgIEJZVEUgICAgUmduRGF0YVsxXTsNCn0gRU1SRklM
TFJHTiwgKlBFTVJGSUxMUkdOOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJGUkFNRVJHTg0Kew0K
ICAgIEVNUiAgICAgZW1yOw0KICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICANCiAgICBE
V09SRCAgIGNiUmduRGF0YTsgICAgICAgICAgDQogICAgRFdPUkQgICBpaEJydXNoOyAgICAgICAg
ICAgIA0KICAgIFNJWkVMICAgc3psU3Ryb2tlOw0KICAgIEJZVEUgICAgUmduRGF0YVsxXTsNCn0g
RU1SRlJBTUVSR04sICpQRU1SRlJBTUVSR047DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkVYVFNF
TEVDVENMSVBSR04NCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBEV09SRCAgIGNiUmduRGF0YTsg
ICAgICAgICAgDQogICAgRFdPUkQgICBpTW9kZTsNCiAgICBCWVRFICAgIFJnbkRhdGFbMV07DQp9
IEVNUkVYVFNFTEVDVENMSVBSR04sICpQRU1SRVhUU0VMRUNUQ0xJUFJHTjsNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnRU1SRVhUVEVYVE9VVEENCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBSRUNUTCAg
IHJjbEJvdW5kczsgICAgICAgICAgDQogICAgRFdPUkQgICBpR3JhcGhpY3NNb2RlOyAgICAgIA0K
ICAgIEZMT0FUICAgZXhTY2FsZTsgICAgICAgICAgICANCiAgICBGTE9BVCAgIGV5U2NhbGU7ICAg
ICAgICAgICAgDQogICAgRU1SVEVYVCBlbXJ0ZXh0OyAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCn0gRU1SRVhUVEVYVE9VVEEsICpQRU1SRVhUVEVYVE9VVEEs
DQogIEVNUkVYVFRFWFRPVVRXLCAqUEVNUkVYVFRFWFRPVVRXOw0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdFTVJQT0xZVEVYVE9VVEENCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBSRUNUTCAgIHJjbEJv
dW5kczsgICAgICAgICAgDQogICAgRFdPUkQgICBpR3JhcGhpY3NNb2RlOyAgICAgIA0KICAgIEZM
T0FUICAgZXhTY2FsZTsgICAgICAgICAgICANCiAgICBGTE9BVCAgIGV5U2NhbGU7ICAgICAgICAg
ICAgDQogICAgTE9ORyAgICBjU3RyaW5nczsNCiAgICBFTVJURVhUIGFlbXJ0ZXh0WzFdOyAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfSBFTVJQT0xZVEVYVE9VVEEs
ICpQRU1SUE9MWVRFWFRPVVRBLA0KICBFTVJQT0xZVEVYVE9VVFcsICpQRU1SUE9MWVRFWFRPVVRX
Ow0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJCSVRCTFQNCnsNCiAgICBFTVIgICAgIGVtcjsNCiAg
ICBSRUNUTCAgIHJjbEJvdW5kczsgICAgICAgICAgDQogICAgTE9ORyAgICB4RGVzdDsNCiAgICBM
T05HICAgIHlEZXN0Ow0KICAgIExPTkcgICAgY3hEZXN0Ow0KICAgIExPTkcgICAgY3lEZXN0Ow0K
ICAgIERXT1JEICAgZHdSb3A7DQogICAgTE9ORyAgICB4U3JjOw0KICAgIExPTkcgICAgeVNyYzsN
CiAgICBYRk9STSAgIHhmb3JtU3JjOyAgICAgICAgICAgDQogICAgQ09MT1JSRUYgY3JCa0NvbG9y
U3JjOyAgICAgIA0KICAgIERXT1JEICAgaVVzYWdlU3JjOyAgICAgICAgICANCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgICBvZmZCbWlTcmM7ICAgICAgICAgIA0K
ICAgIERXT1JEICAgY2JCbWlTcmM7ICAgICAgICAgICANCiAgICBEV09SRCAgIG9mZkJpdHNTcmM7
ICAgICAgICAgDQogICAgRFdPUkQgICBjYkJpdHNTcmM7ICAgICAgICAgIA0KfSBFTVJCSVRCTFQs
ICpQRU1SQklUQkxUOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdFTVJTVFJFVENIQkxUDQp7DQogICAg
RU1SICAgICBlbXI7DQogICAgUkVDVEwgICByY2xCb3VuZHM7ICAgICAgICAgIA0KICAgIExPTkcg
ICAgeERlc3Q7DQogICAgTE9ORyAgICB5RGVzdDsNCiAgICBMT05HICAgIGN4RGVzdDsNCiAgICBM
T05HICAgIGN5RGVzdDsNCiAgICBEV09SRCAgIGR3Um9wOw0KICAgIExPTkcgICAgeFNyYzsNCiAg
ICBMT05HICAgIHlTcmM7DQogICAgWEZPUk0gICB4Zm9ybVNyYzsgICAgICAgICAgIA0KICAgIENP
TE9SUkVGIGNyQmtDb2xvclNyYzsgICAgICANCiAgICBEV09SRCAgIGlVc2FnZVNyYzsgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgb2ZmQm1p
U3JjOyAgICAgICAgICANCiAgICBEV09SRCAgIGNiQm1pU3JjOyAgICAgICAgICAgDQogICAgRFdP
UkQgICBvZmZCaXRzU3JjOyAgICAgICAgIA0KICAgIERXT1JEICAgY2JCaXRzU3JjOyAgICAgICAg
ICANCiAgICBMT05HICAgIGN4U3JjOw0KICAgIExPTkcgICAgY3lTcmM7DQp9IEVNUlNUUkVUQ0hC
TFQsICpQRU1SU1RSRVRDSEJMVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1STUFTS0JMVA0Kew0K
ICAgIEVNUiAgICAgZW1yOw0KICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICANCiAgICBM
T05HICAgIHhEZXN0Ow0KICAgIExPTkcgICAgeURlc3Q7DQogICAgTE9ORyAgICBjeERlc3Q7DQog
ICAgTE9ORyAgICBjeURlc3Q7DQogICAgRFdPUkQgICBkd1JvcDsNCiAgICBMT05HICAgIHhTcmM7
DQogICAgTE9ORyAgICB5U3JjOw0KICAgIFhGT1JNICAgeGZvcm1TcmM7ICAgICAgICAgICANCiAg
ICBDT0xPUlJFRiBjckJrQ29sb3JTcmM7ICAgICAgDQogICAgRFdPUkQgICBpVXNhZ2VTcmM7ICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgIG9m
ZkJtaVNyYzsgICAgICAgICAgDQogICAgRFdPUkQgICBjYkJtaVNyYzsgICAgICAgICAgIA0KICAg
IERXT1JEICAgb2ZmQml0c1NyYzsgICAgICAgICANCiAgICBEV09SRCAgIGNiQml0c1NyYzsgICAg
ICAgICAgDQogICAgTE9ORyAgICB4TWFzazsNCiAgICBMT05HICAgIHlNYXNrOw0KICAgIERXT1JE
ICAgaVVzYWdlTWFzazsgICAgICAgICANCiAgICBEV09SRCAgIG9mZkJtaU1hc2s7ICAgICAgICAg
DQogICAgRFdPUkQgICBjYkJtaU1hc2s7ICAgICAgICAgIA0KICAgIERXT1JEICAgb2ZmQml0c01h
c2s7ICAgICAgICANCiAgICBEV09SRCAgIGNiQml0c01hc2s7ICAgICAgICAgDQp9IEVNUk1BU0tC
TFQsICpQRU1STUFTS0JMVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SUExHQkxUDQp7DQogICAg
RU1SICAgICBlbXI7DQogICAgUkVDVEwgICByY2xCb3VuZHM7ICAgICAgICAgIA0KICAgIFBPSU5U
TCAgYXB0bERlc3RbM107DQogICAgTE9ORyAgICB4U3JjOw0KICAgIExPTkcgICAgeVNyYzsNCiAg
ICBMT05HICAgIGN4U3JjOw0KICAgIExPTkcgICAgY3lTcmM7DQogICAgWEZPUk0gICB4Zm9ybVNy
YzsgICAgICAgICAgIA0KICAgIENPTE9SUkVGIGNyQmtDb2xvclNyYzsgICAgICANCiAgICBEV09S
RCAgIGlVc2FnZVNyYzsgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IA0KICAgIERXT1JEICAgb2ZmQm1pU3JjOyAgICAgICAgICANCiAgICBEV09SRCAgIGNiQm1pU3Jj
OyAgICAgICAgICAgDQogICAgRFdPUkQgICBvZmZCaXRzU3JjOyAgICAgICAgIA0KICAgIERXT1JE
ICAgY2JCaXRzU3JjOyAgICAgICAgICANCiAgICBMT05HICAgIHhNYXNrOw0KICAgIExPTkcgICAg
eU1hc2s7DQogICAgRFdPUkQgICBpVXNhZ2VNYXNrOyAgICAgICAgIA0KICAgIERXT1JEICAgb2Zm
Qm1pTWFzazsgICAgICAgICANCiAgICBEV09SRCAgIGNiQm1pTWFzazsgICAgICAgICAgDQogICAg
RFdPUkQgICBvZmZCaXRzTWFzazsgICAgICAgIA0KICAgIERXT1JEICAgY2JCaXRzTWFzazsgICAg
ICAgICANCn0gRU1SUExHQkxULCAqUEVNUlBMR0JMVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1S
U0VURElCSVRTVE9ERVZJQ0UNCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBSRUNUTCAgIHJjbEJv
dW5kczsgICAgICAgICAgDQogICAgTE9ORyAgICB4RGVzdDsNCiAgICBMT05HICAgIHlEZXN0Ow0K
ICAgIExPTkcgICAgeFNyYzsNCiAgICBMT05HICAgIHlTcmM7DQogICAgTE9ORyAgICBjeFNyYzsN
CiAgICBMT05HICAgIGN5U3JjOw0KICAgIERXT1JEICAgb2ZmQm1pU3JjOyAgICAgICAgICANCiAg
ICBEV09SRCAgIGNiQm1pU3JjOyAgICAgICAgICAgDQogICAgRFdPUkQgICBvZmZCaXRzU3JjOyAg
ICAgICAgIA0KICAgIERXT1JEICAgY2JCaXRzU3JjOyAgICAgICAgICANCiAgICBEV09SRCAgIGlV
c2FnZVNyYzsgICAgICAgICAgDQogICAgRFdPUkQgICBpU3RhcnRTY2FuOw0KICAgIERXT1JEICAg
Y1NjYW5zOw0KfSBFTVJTRVRESUJJVFNUT0RFVklDRSwgKlBFTVJTRVRESUJJVFNUT0RFVklDRTsN
Cg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SU1RSRVRDSERJQklUUw0Kew0KICAgIEVNUiAgICAgZW1y
Ow0KICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICANCiAgICBMT05HICAgIHhEZXN0Ow0K
ICAgIExPTkcgICAgeURlc3Q7DQogICAgTE9ORyAgICB4U3JjOw0KICAgIExPTkcgICAgeVNyYzsN
CiAgICBMT05HICAgIGN4U3JjOw0KICAgIExPTkcgICAgY3lTcmM7DQogICAgRFdPUkQgICBvZmZC
bWlTcmM7ICAgICAgICAgIA0KICAgIERXT1JEICAgY2JCbWlTcmM7ICAgICAgICAgICANCiAgICBE
V09SRCAgIG9mZkJpdHNTcmM7ICAgICAgICAgDQogICAgRFdPUkQgICBjYkJpdHNTcmM7ICAgICAg
ICAgIA0KICAgIERXT1JEICAgaVVzYWdlU3JjOyAgICAgICAgICANCiAgICBEV09SRCAgIGR3Um9w
Ow0KICAgIExPTkcgICAgY3hEZXN0Ow0KICAgIExPTkcgICAgY3lEZXN0Ow0KfSBFTVJTVFJFVENI
RElCSVRTLCAqUEVNUlNUUkVUQ0hESUJJVFM7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkVYVENS
RUFURUZPTlRJTkRJUkVDVFcNCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBEV09SRCAgIGloRm9u
dDsgICAgICAgICAgICAgDQogICAgRVhUTE9HRk9OVFcgZWxmdzsNCn0gRU1SRVhUQ1JFQVRFRk9O
VElORElSRUNUVywgKlBFTVJFWFRDUkVBVEVGT05USU5ESVJFQ1RXOw0KDQp0eXBlZGVmIHN0cnVj
dCB0YWdFTVJDUkVBVEVQQUxFVFRFDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgRFdPUkQgICBp
aFBhbDsgICAgICAgICAgICAgIA0KICAgIExPR1BBTEVUVEUgbGdwbDsgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp9IEVNUkNSRUFURVBBTEVUVEUsICpQRU1S
Q1JFQVRFUEFMRVRURTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQ1JFQVRFUEVODQp7DQogICAg
RU1SICAgICBlbXI7DQogICAgRFdPUkQgICBpaFBlbjsgICAgICAgICAgICAgIA0KICAgIExPR1BF
TiAgbG9wbjsNCn0gRU1SQ1JFQVRFUEVOLCAqUEVNUkNSRUFURVBFTjsNCg0KdHlwZWRlZiBzdHJ1
Y3QgdGFnRU1SRVhUQ1JFQVRFUEVODQp7DQogICAgRU1SICAgICBlbXI7DQogICAgRFdPUkQgICBp
aFBlbjsgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgb2ZmQm1pOyAgICAgICAgICAgICANCiAg
ICBEV09SRCAgIGNiQm1pOyAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgIG9m
ZkJpdHM7ICAgICAgICAgICAgDQogICAgRFdPUkQgICBjYkJpdHM7ICAgICAgICAgICAgIA0KICAg
IEVYVExPR1BFTjMyIGVscDsgICAgICAgICAgICANCn0gRU1SRVhUQ1JFQVRFUEVOLCAqUEVNUkVY
VENSRUFURVBFTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQ1JFQVRFQlJVU0hJTkRJUkVDVA0K
ew0KICAgIEVNUiAgICAgICAgZW1yOw0KICAgIERXT1JEICAgICAgaWhCcnVzaDsgICAgICAgICAg
DQogICAgTE9HQlJVU0gzMiBsYjsgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KfSBFTVJDUkVBVEVCUlVTSElORElSRUNULCAqUEVNUkNSRUFURUJSVVNI
SU5ESVJFQ1Q7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkNSRUFURU1PTk9CUlVTSA0Kew0KICAg
IEVNUiAgICAgZW1yOw0KICAgIERXT1JEICAgaWhCcnVzaDsgICAgICAgICAgICANCiAgICBEV09S
RCAgIGlVc2FnZTsgICAgICAgICAgICAgDQogICAgRFdPUkQgICBvZmZCbWk7ICAgICAgICAgICAg
IA0KICAgIERXT1JEICAgY2JCbWk7ICAgICAgICAgICAgICANCiAgICBEV09SRCAgIG9mZkJpdHM7
ICAgICAgICAgICAgDQogICAgRFdPUkQgICBjYkJpdHM7ICAgICAgICAgICAgIA0KfSBFTVJDUkVB
VEVNT05PQlJVU0gsICpQRU1SQ1JFQVRFTU9OT0JSVVNIOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdF
TVJDUkVBVEVESUJQQVRURVJOQlJVU0hQVA0Kew0KICAgIEVNUiAgICAgZW1yOw0KICAgIERXT1JE
ICAgaWhCcnVzaDsgICAgICAgICAgICANCiAgICBEV09SRCAgIGlVc2FnZTsgICAgICAgICAgICAg
DQogICAgRFdPUkQgICBvZmZCbWk7ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgY2JCbWk7ICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgb2ZmQml0czsgICAgICAgICAgICAN
CiAgICBEV09SRCAgIGNiQml0czsgICAgICAgICAgICAgDQp9IEVNUkNSRUFURURJQlBBVFRFUk5C
UlVTSFBULCAqUEVNUkNSRUFURURJQlBBVFRFUk5CUlVTSFBUOw0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdFTVJGT1JNQVQNCnsNCiAgICBEV09SRCAgIGRTaWduYXR1cmU7ICAgICAgICAgDQogICAgRFdP
UkQgICBuVmVyc2lvbjsgICAgICAgICAgIA0KICAgIERXT1JEICAgY2JEYXRhOyAgICAgICAgICAg
ICANCiAgICBEV09SRCAgIG9mZkRhdGE7ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KfSBFTVJGT1JNQVQsICpQRU1SRk9STUFUOw0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnRU1SR0xTUkVDT1JEDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgRFdPUkQgICBj
YkRhdGE7ICAgICAgICAgICAgIA0KICAgIEJZVEUgICAgRGF0YVsxXTsNCn0gRU1SR0xTUkVDT1JE
LCAqUEVNUkdMU1JFQ09SRDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SR0xTQk9VTkRFRFJFQ09S
RA0Kew0KICAgIEVNUiAgICAgZW1yOw0KICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICAN
CiAgICBEV09SRCAgIGNiRGF0YTsgICAgICAgICAgICAgDQogICAgQllURSAgICBEYXRhWzFdOw0K
fSBFTVJHTFNCT1VOREVEUkVDT1JELCAqUEVNUkdMU0JPVU5ERURSRUNPUkQ7DQoNCnR5cGVkZWYg
c3RydWN0IHRhZ0VNUlBJWEVMRk9STUFUDQp7DQogICAgRU1SICAgICBlbXI7DQogICAgUElYRUxG
T1JNQVRERVNDUklQVE9SIHBmZDsNCn0gRU1SUElYRUxGT1JNQVQsICpQRU1SUElYRUxGT1JNQVQ7
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkNSRUFURUNPTE9SU1BBQ0UNCnsNCiAgICBFTVIgICAg
ICAgICAgICAgZW1yOw0KICAgIERXT1JEICAgICAgICAgICBpaENTOyAgICAgICANCiAgICBMT0dD
T0xPUlNQQUNFQSAgbGNzOyAgICAgICAgDQp9IEVNUkNSRUFURUNPTE9SU1BBQ0UsICpQRU1SQ1JF
QVRFQ09MT1JTUEFDRTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SU0VUQ09MT1JTUEFDRQ0Kew0K
ICAgIEVNUiAgICAgZW1yOw0KICAgIERXT1JEICAgaWhDUzsgICAgICAgICAgICAgICANCn0gRU1S
U0VUQ09MT1JTUEFDRSwgICAgKlBFTVJTRVRDT0xPUlNQQUNFLA0KICBFTVJTRUxFQ1RDT0xPUlNQ
QUNFLCAqUEVNUlNFTEVDVENPTE9SU1BBQ0UsDQogIEVNUkRFTEVURUNPTE9SU1BBQ0UsICpQRU1S
REVMRVRFQ09MT1JTUEFDRTsNCg0KI2xpbmUgNjA2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SRVhURVNDQVBFDQp7DQogICAgRU1SICAgICBlbXI7
DQogICAgSU5UICAgICBpRXNjYXBlOyAgICAgICAgICAgIA0KICAgIElOVCAgICAgY2JFc2NEYXRh
OyAgICAgICAgICANCiAgICBCWVRFICAgIEVzY0RhdGFbMV07ICAgICAgICAgDQp9IEVNUkVYVEVT
Q0FQRSwgICpQRU1SRVhURVNDQVBFLA0KICBFTVJEUkFXRVNDQVBFLCAqUEVNUkRSQVdFU0NBUEU7
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUk5BTUVERVNDQVBFDQp7DQogICAgRU1SICAgICBlbXI7
DQogICAgSU5UICAgICBpRXNjYXBlOyAgICAgICAgICAgIA0KICAgIElOVCAgICAgY2JEcml2ZXI7
ICAgICAgICAgICANCiAgICBJTlQgICAgIGNiRXNjRGF0YTsgICAgICAgICAgDQogICAgQllURSAg
ICBFc2NEYXRhWzFdOyAgICAgICAgIA0KfSBFTVJOQU1FREVTQ0FQRSwgKlBFTVJOQU1FREVTQ0FQ
RTsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUlNFVElDTVBST0ZJTEUNCnsNCiAgICBFTVIg
ICAgIGVtcjsNCiAgICBEV09SRCAgIGR3RmxhZ3M7ICAgICAgICAgICAgDQogICAgRFdPUkQgICBj
Yk5hbWU7ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgY2JEYXRhOyAgICAgICAgICAgICANCiAg
ICBCWVRFICAgIERhdGFbMV07ICAgICAgICAgICAgDQp9IEVNUlNFVElDTVBST0ZJTEUsICAqUEVN
UlNFVElDTVBST0ZJTEUsDQogIEVNUlNFVElDTVBST0ZJTEVBLCAqUEVNUlNFVElDTVBST0ZJTEVB
LA0KICBFTVJTRVRJQ01QUk9GSUxFVywgKlBFTVJTRVRJQ01QUk9GSUxFVzsNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IHRhZ0VNUkNSRUFURUNPTE9SU1BBQ0VXDQp7DQogICAgRU1SICAgICAgICAgICAg
IGVtcjsNCiAgICBEV09SRCAgICAgICAgICAgaWhDUzsgICAgICAgDQogICAgTE9HQ09MT1JTUEFD
RVcgIGxjczsgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBkd0ZsYWdzOyAgICANCiAgICBE
V09SRCAgICAgICAgICAgY2JEYXRhOyAgICAgDQogICAgQllURSAgICAgICAgICAgIERhdGFbMV07
ICAgIA0KfSBFTVJDUkVBVEVDT0xPUlNQQUNFVywgKlBFTVJDUkVBVEVDT0xPUlNQQUNFVzsNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NPTE9STUFUQ0hUT1RBUkdFVA0Kew0KICAgIEVNUiAgICAg
ZW1yOw0KICAgIERXT1JEICAgZHdBY3Rpb247ICAgICAgICAgICANCiAgICBEV09SRCAgIGR3Rmxh
Z3M7ICAgICAgICAgICAgDQogICAgRFdPUkQgICBjYk5hbWU7ICAgICAgICAgICAgIA0KICAgIERX
T1JEICAgY2JEYXRhOyAgICAgICAgICAgICANCiAgICBCWVRFICAgIERhdGFbMV07ICAgICAgICAg
ICAgDQp9IEVNUkNPTE9STUFUQ0hUT1RBUkdFVCwgKlBFTVJDT0xPUk1BVENIVE9UQVJHRVQ7DQoN
CnR5cGVkZWYgc3RydWN0IHRhZ0NPTE9SQ09SUkVDVFBBTEVUVEUNCnsNCiAgICBFTVIgICAgIGVt
cjsNCiAgICBEV09SRCAgIGloUGFsZXR0ZTsgICAgICAgICAgDQogICAgRFdPUkQgICBuRmlyc3RF
bnRyeTsgICAgICAgIA0KICAgIERXT1JEICAgblBhbEVudHJpZXM7ICAgICAgICANCiAgICBEV09S
RCAgIG5SZXNlcnZlZDsgICAgICAgICAgDQp9IEVNUkNPTE9SQ09SUkVDVFBBTEVUVEUsICpQRU1S
Q09MT1JDT1JSRUNUUEFMRVRURTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SQUxQSEFCTEVORA0K
ew0KICAgIEVNUiAgICAgZW1yOw0KICAgIFJFQ1RMICAgcmNsQm91bmRzOyAgICAgICAgICANCiAg
ICBMT05HICAgIHhEZXN0Ow0KICAgIExPTkcgICAgeURlc3Q7DQogICAgTE9ORyAgICBjeERlc3Q7
DQogICAgTE9ORyAgICBjeURlc3Q7DQogICAgRFdPUkQgICBkd1JvcDsNCiAgICBMT05HICAgIHhT
cmM7DQogICAgTE9ORyAgICB5U3JjOw0KICAgIFhGT1JNICAgeGZvcm1TcmM7ICAgICAgICAgICAN
CiAgICBDT0xPUlJFRiBjckJrQ29sb3JTcmM7ICAgICAgDQogICAgRFdPUkQgICBpVXNhZ2VTcmM7
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAg
IG9mZkJtaVNyYzsgICAgICAgICAgDQogICAgRFdPUkQgICBjYkJtaVNyYzsgICAgICAgICAgIA0K
ICAgIERXT1JEICAgb2ZmQml0c1NyYzsgICAgICAgICANCiAgICBEV09SRCAgIGNiQml0c1NyYzsg
ICAgICAgICAgDQogICAgTE9ORyAgICBjeFNyYzsNCiAgICBMT05HICAgIGN5U3JjOw0KfSBFTVJB
TFBIQUJMRU5ELCAqUEVNUkFMUEhBQkxFTkQ7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0VNUkdSQURJ
RU5URklMTA0Kew0KICAgIEVNUiAgICAgICBlbXI7DQogICAgUkVDVEwgICAgIHJjbEJvdW5kczsg
ICAgICAgICAgDQogICAgRFdPUkQgICAgIG5WZXI7DQogICAgRFdPUkQgICAgIG5Ucmk7DQogICAg
VUxPTkcgICAgIHVsTW9kZTsNCiAgICBUUklWRVJURVggVmVyWzFdOw0KfUVNUkdSQURJRU5URklM
TCwqUEVNUkdSQURJRU5URklMTDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRU1SVFJBTlNQQVJFTlRC
TFQNCnsNCiAgICBFTVIgICAgIGVtcjsNCiAgICBSRUNUTCAgIHJjbEJvdW5kczsgICAgICAgICAg
DQogICAgTE9ORyAgICB4RGVzdDsNCiAgICBMT05HICAgIHlEZXN0Ow0KICAgIExPTkcgICAgY3hE
ZXN0Ow0KICAgIExPTkcgICAgY3lEZXN0Ow0KICAgIERXT1JEICAgZHdSb3A7DQogICAgTE9ORyAg
ICB4U3JjOw0KICAgIExPTkcgICAgeVNyYzsNCiAgICBYRk9STSAgIHhmb3JtU3JjOyAgICAgICAg
ICAgDQogICAgQ09MT1JSRUYgY3JCa0NvbG9yU3JjOyAgICAgIA0KICAgIERXT1JEICAgaVVzYWdl
U3JjOyAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdP
UkQgICBvZmZCbWlTcmM7ICAgICAgICAgIA0KICAgIERXT1JEICAgY2JCbWlTcmM7ICAgICAgICAg
ICANCiAgICBEV09SRCAgIG9mZkJpdHNTcmM7ICAgICAgICAgDQogICAgRFdPUkQgICBjYkJpdHNT
cmM7ICAgICAgICAgIA0KICAgIExPTkcgICAgY3hTcmM7DQogICAgTE9ORyAgICBjeVNyYzsNCn0g
RU1SVFJBTlNQQVJFTlRCTFQsICpQRU1SVFJBTlNQQVJFTlRCTFQ7DQoNCg0KI2xpbmUgNjE5MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MjAyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09M
ICBfX3N0ZGNhbGwgd2dsQ29weUNvbnRleHQoSEdMUkMsIEhHTFJDLCBVSU5UKTsNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIR0xSQyBfX3N0ZGNhbGwgd2dsQ3JlYXRlQ29udGV4dChIREMpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhHTFJDIF9fc3RkY2FsbCB3Z2xDcmVhdGVMYXllckNvbnRleHQo
SERDLCBpbnQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCB3Z2xEZWxl
dGVDb250ZXh0KEhHTFJDKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIR0xSQyBfX3N0ZGNhbGwg
d2dsR2V0Q3VycmVudENvbnRleHQodm9pZCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSERDICAg
X19zdGRjYWxsIHdnbEdldEN1cnJlbnREQyh2b2lkKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBQ
Uk9DICBfX3N0ZGNhbGwgd2dsR2V0UHJvY0FkZHJlc3MoTFBDU1RSKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgd2dsTWFrZUN1cnJlbnQoSERDLCBIR0xSQyk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIHdnbFNoYXJlTGlzdHMoSEdMUkMsIEhH
TFJDKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgd2dsVXNlRm9udEJp
dG1hcHNBKEhEQywgRFdPUkQsIERXT1JELCBEV09SRCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Qk9PTCAgX19zdGRjYWxsIHdnbFVzZUZvbnRCaXRtYXBzVyhIREMsIERXT1JELCBEV09SRCwgRFdP
UkQpOw0KDQoNCg0KDQojbGluZSA2MjIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIFN3YXBCdWZmZXJzKEhEQyk7DQoNCnR5cGVk
ZWYgc3RydWN0IF9QT0lOVEZMT0FUIHsNCiAgICBGTE9BVCAgIHg7DQogICAgRkxPQVQgICB5Ow0K
fSBQT0lOVEZMT0FULCAqUFBPSU5URkxPQVQ7DQoNCnR5cGVkZWYgc3RydWN0IF9HTFlQSE1FVFJJ
Q1NGTE9BVCB7DQogICAgRkxPQVQgICAgICAgZ21mQmxhY2tCb3hYOw0KICAgIEZMT0FUICAgICAg
IGdtZkJsYWNrQm94WTsNCiAgICBQT0lOVEZMT0FUICBnbWZwdEdseXBoT3JpZ2luOw0KICAgIEZM
T0FUICAgICAgIGdtZkNlbGxJbmNYOw0KICAgIEZMT0FUICAgICAgIGdtZkNlbGxJbmNZOw0KfSBH
TFlQSE1FVFJJQ1NGTE9BVCwgKlBHTFlQSE1FVFJJQ1NGTE9BVCwgICpMUEdMWVBITUVUUklDU0ZM
T0FUOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCB3Z2xVc2VG
b250T3V0bGluZXNBKEhEQywgRFdPUkQsIERXT1JELCBEV09SRCwgRkxPQVQsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxPQVQsIGludCwgTFBHTFlQSE1FVFJJ
Q1NGTE9BVCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxsIHdnbFVzZUZv
bnRPdXRsaW5lc1coSERDLCBEV09SRCwgRFdPUkQsIERXT1JELCBGTE9BVCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTE9BVCwgaW50LCBMUEdMWVBITUVUUklD
U0ZMT0FUKTsNCg0KDQoNCg0KI2xpbmUgNjI0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KDQoN
CnR5cGVkZWYgc3RydWN0IHRhZ0xBWUVSUExBTkVERVNDUklQVE9SIHsgDQogICAgV09SRCAgblNp
emU7DQogICAgV09SRCAgblZlcnNpb247DQogICAgRFdPUkQgZHdGbGFnczsNCiAgICBCWVRFICBp
UGl4ZWxUeXBlOw0KICAgIEJZVEUgIGNDb2xvckJpdHM7DQogICAgQllURSAgY1JlZEJpdHM7DQog
ICAgQllURSAgY1JlZFNoaWZ0Ow0KICAgIEJZVEUgIGNHcmVlbkJpdHM7DQogICAgQllURSAgY0dy
ZWVuU2hpZnQ7DQogICAgQllURSAgY0JsdWVCaXRzOw0KICAgIEJZVEUgIGNCbHVlU2hpZnQ7DQog
ICAgQllURSAgY0FscGhhQml0czsNCiAgICBCWVRFICBjQWxwaGFTaGlmdDsNCiAgICBCWVRFICBj
QWNjdW1CaXRzOw0KICAgIEJZVEUgIGNBY2N1bVJlZEJpdHM7DQogICAgQllURSAgY0FjY3VtR3Jl
ZW5CaXRzOw0KICAgIEJZVEUgIGNBY2N1bUJsdWVCaXRzOw0KICAgIEJZVEUgIGNBY2N1bUFscGhh
Qml0czsNCiAgICBCWVRFICBjRGVwdGhCaXRzOw0KICAgIEJZVEUgIGNTdGVuY2lsQml0czsNCiAg
ICBCWVRFICBjQXV4QnVmZmVyczsNCiAgICBCWVRFICBpTGF5ZXJQbGFuZTsNCiAgICBCWVRFICBi
UmVzZXJ2ZWQ7DQogICAgQ09MT1JSRUYgY3JUcmFuc3BhcmVudDsNCn0gTEFZRVJQTEFORURFU0NS
SVBUT1IsICpQTEFZRVJQTEFORURFU0NSSVBUT1IsICAqTFBMQVlFUlBMQU5FREVTQ1JJUFRPUjsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEJPT0wgIF9fc3RkY2FsbCB3Z2xEZXNjcmliZUxheWVyUGxhbmUoSERDLCBpbnQsIGlu
dCwgVUlOVCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQ
TEFZRVJQTEFORURFU0NSSVBUT1IpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCAgIF9fc3Rk
Y2FsbCB3Z2xTZXRMYXllclBhbGV0dGVFbnRyaWVzKEhEQywgaW50LCBpbnQsIGludCwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDT0xPUlJF
RiAqKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgICBfX3N0ZGNhbGwgd2dsR2V0TGF5ZXJQ
YWxldHRlRW50cmllcyhIREMsIGludCwgaW50LCBpbnQsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09MT1JSRUYgKik7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQk9PTCAgX19zdGRjYWxsIHdnbFJlYWxpemVMYXllclBhbGV0dGUoSERDLCBpbnQsIEJP
T0wpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgIF9fc3RkY2FsbCB3Z2xTd2FwTGF5ZXJC
dWZmZXJzKEhEQywgVUlOVCk7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfV0dMU1dBUA0Kew0KICAg
IEhEQyBoZGM7DQogICAgVUlOVCB1aUZsYWdzOw0KfSBXR0xTV0FQLCAqUFdHTFNXQVAsICAqTFBX
R0xTV0FQOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbCB3Z2xT
d2FwTXVsdGlwbGVCdWZmZXJzKFVJTlQsIGNvbnN0IFdHTFNXQVAgKik7DQoNCiNsaW5lIDYzNDcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI2xpbmUgNjM0OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdk
aS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgNjM1MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmdk
aS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KI2xpbmUgNjM1OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmdkaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSA2
MzYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luZ2RpLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNs
aW5lIDYzNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5nZGkuaCINCg0KI2xpbmUgNjM2OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmdkaS5oIg0KDQojbGluZSAxNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGlu
ZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDQ2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCg0KDQoNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBIQU5ETEUgSERXUDsN
CnR5cGVkZWYgdm9pZCBNRU5VVEVNUExBVEVBOw0KdHlwZWRlZiB2b2lkIE1FTlVURU1QTEFURVc7
DQoNCnR5cGVkZWYgTUVOVVRFTVBMQVRFVyBNRU5VVEVNUExBVEU7DQoNCg0KI2xpbmUgNzcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQp0eXBlZGVmIFBWT0lEIExQTUVOVVRFTVBMQVRFQTsNCnR5
cGVkZWYgUFZPSUQgTFBNRU5VVEVNUExBVEVXOw0KDQp0eXBlZGVmIExQTUVOVVRFTVBMQVRFVyBM
UE1FTlVURU1QTEFURTsNCg0KDQojbGluZSA4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
I2xpbmUgODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgTFJFU1VMVCAoX19zdGRj
YWxsKiBXTkRQUk9DKShIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7DQoNCiNsaW5lIDk0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEg
cmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCnR5cGVkZWYg
SU5UX1BUUiAoX19zdGRjYWxsKiBETEdQUk9DKShIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7
DQoNCiNsaW5lIDEwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCnR5
cGVkZWYgdm9pZCAoX19zdGRjYWxsKiBUSU1FUlBST0MpKEhXTkQsIFVJTlQsIFVJTlRfUFRSLCBE
V09SRCk7DQoNCiNsaW5lIDExMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBCT09M
IChfX3N0ZGNhbGwqIEdSQVlTVFJJTkdQUk9DKShIREMsIExQQVJBTSwgaW50KTsNCnR5cGVkZWYg
Qk9PTCAoX19zdGRjYWxsKiBXTkRFTlVNUFJPQykoSFdORCwgTFBBUkFNKTsNCnR5cGVkZWYgTFJF
U1VMVCAoX19zdGRjYWxsKiBIT09LUFJPQykoaW50IGNvZGUsIFdQQVJBTSB3UGFyYW0sIExQQVJB
TSBsUGFyYW0pOw0KdHlwZWRlZiB2b2lkIChfX3N0ZGNhbGwqIFNFTkRBU1lOQ1BST0MpKEhXTkQs
IFVJTlQsIFVMT05HX1BUUiwgTFJFU1VMVCk7DQoNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBQ
Uk9QRU5VTVBST0NBKShIV05ELCBMUENTVFIsIEhBTkRMRSk7DQp0eXBlZGVmIEJPT0wgKF9fc3Rk
Y2FsbCogUFJPUEVOVU1QUk9DVykoSFdORCwgTFBDV1NUUiwgSEFORExFKTsNCg0KdHlwZWRlZiBC
T09MIChfX3N0ZGNhbGwqIFBST1BFTlVNUFJPQ0VYQSkoSFdORCwgTFBTVFIsIEhBTkRMRSwgVUxP
TkdfUFRSKTsNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBQUk9QRU5VTVBST0NFWFcpKEhXTkQs
IExQV1NUUiwgSEFORExFLCBVTE9OR19QVFIpOw0KDQp0eXBlZGVmIGludCAoX19zdGRjYWxsKiBF
RElUV09SREJSRUFLUFJPQ0EpKExQU1RSIGxwY2gsIGludCBpY2hDdXJyZW50LCBpbnQgY2NoLCBp
bnQgY29kZSk7DQp0eXBlZGVmIGludCAoX19zdGRjYWxsKiBFRElUV09SREJSRUFLUFJPQ1cpKExQ
V1NUUiBscGNoLCBpbnQgaWNoQ3VycmVudCwgaW50IGNjaCwgaW50IGNvZGUpOw0KDQoNCnR5cGVk
ZWYgQk9PTCAoX19zdGRjYWxsKiBEUkFXU1RBVEVQUk9DKShIREMgaGRjLCBMUEFSQU0gbERhdGEs
IFdQQVJBTSB3RGF0YSwgaW50IGN4LCBpbnQgY3kpOw0KI2xpbmUgMTM0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCiNsaW5lIDEzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTgzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0K
DQoNCg0KdHlwZWRlZiBQUk9QRU5VTVBST0NXICAgICAgICBQUk9QRU5VTVBST0M7DQp0eXBlZGVm
IFBST1BFTlVNUFJPQ0VYVyAgICAgIFBST1BFTlVNUFJPQ0VYOw0KdHlwZWRlZiBFRElUV09SREJS
RUFLUFJPQ1cgICBFRElUV09SREJSRUFLUFJPQzsNCg0KDQoNCg0KI2xpbmUgMTk2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQoNCg0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIE5BTUVFTlVN
UFJPQ0EpKExQU1RSLCBMUEFSQU0pOw0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIE5BTUVFTlVN
UFJPQ1cpKExQV1NUUiwgTFBBUkFNKTsNCg0KdHlwZWRlZiBOQU1FRU5VTVBST0NBICAgV0lOU1RB
RU5VTVBST0NBOw0KdHlwZWRlZiBOQU1FRU5VTVBST0NBICAgREVTS1RPUEVOVU1QUk9DQTsNCnR5
cGVkZWYgTkFNRUVOVU1QUk9DVyAgIFdJTlNUQUVOVU1QUk9DVzsNCnR5cGVkZWYgTkFNRUVOVU1Q
Uk9DVyAgIERFU0tUT1BFTlVNUFJPQ1c7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAy
MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KdHlwZWRlZiBXSU5TVEFFTlVNUFJPQ1cg
ICAgIFdJTlNUQUVOVU1QUk9DOw0KdHlwZWRlZiBERVNLVE9QRU5VTVBST0NXICAgIERFU0tUT1BF
TlVNUFJPQzsNCg0KDQoNCg0KDQoNCiNsaW5lIDIzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KI2xpbmUgMjMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDI3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMjkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5l
IDI5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6NDk5NSkNCiNsaW5lIDMwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0Kd3ZzcHJpbnRmQSgNCiAgICAgIExQU1RSLA0K
ICAgICAgICBMUENTVFIsDQogICAgICB2YV9saXN0IGFyZ2xpc3QpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQppbnQNCl9fc3RkY2FsbA0Kd3ZzcHJpbnRmVygNCiAgICAgIExQV1NUUiwNCiAgICAg
ICAgTFBDV1NUUiwNCiAgICAgIHZhX2xpc3QgYXJnbGlzdCk7DQoNCg0KDQoNCiNsaW5lIDMyMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9f
Y2RlY2wNCndzcHJpbnRmQSgNCiAgICAgIExQU1RSLA0KICAgICAgICBMUENTVFIsDQogICAgLi4u
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX2NkZWNsDQp3c3ByaW50ZlcoDQogICAg
ICBMUFdTVFIsDQogICAgICAgIExQQ1dTVFIsDQogICAgLi4uKTsNCg0KDQoNCg0KI2xpbmUgMzQy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGlu
ZSAzNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDM0OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzODYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA0MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA0NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDcyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA2MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY2OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDcxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCg0KDQoNCg0KI2xpbmUgNzQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA3ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KDQoNCg0KI2xpbmUgODEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0K
DQojbGluZSA4MTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQojbGluZSA4
MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI2xpbmUgODI1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnQ0JUX0NSRUFURVdOREENCnsNCiAgICBzdHJ1Y3QgdGFnQ1JFQVRFU1RS
VUNUQSAqbHBjczsNCiAgICBIV05EICAgICAgICAgICBod25kSW5zZXJ0QWZ0ZXI7DQp9IENCVF9D
UkVBVEVXTkRBLCAqTFBDQlRfQ1JFQVRFV05EQTsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NC
VF9DUkVBVEVXTkRXDQp7DQogICAgc3RydWN0IHRhZ0NSRUFURVNUUlVDVFcgKmxwY3M7DQogICAg
SFdORCAgICAgICAgICAgaHduZEluc2VydEFmdGVyOw0KfSBDQlRfQ1JFQVRFV05EVywgKkxQQ0JU
X0NSRUFURVdORFc7DQoNCnR5cGVkZWYgQ0JUX0NSRUFURVdORFcgQ0JUX0NSRUFURVdORDsNCnR5
cGVkZWYgTFBDQlRfQ1JFQVRFV05EVyBMUENCVF9DUkVBVEVXTkQ7DQoNCg0KDQojbGluZSA4ODAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NCVEFD
VElWQVRFU1RSVUNUDQp7DQogICAgQk9PTCAgICBmTW91c2U7DQogICAgSFdORCAgICBoV25kQWN0
aXZlOw0KfSBDQlRBQ1RJVkFURVNUUlVDVCwgKkxQQ0JUQUNUSVZBVEVTVFJVQ1Q7DQoNCiNsaW5l
IDg5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRh
Z1dUU1NFU1NJT05fTk9USUZJQ0FUSU9ODQp7DQogICAgRFdPUkQgY2JTaXplOw0KICAgIERXT1JE
IGR3U2Vzc2lvbklkOw0KDQp9IFdUU1NFU1NJT05fTk9USUZJQ0FUSU9OLCAqUFdUU1NFU1NJT05f
Tk9USUZJQ0FUSU9OOw0KDQojbGluZSA5MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDky
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQoNCiNsaW5lIDk2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KI2xp
bmUgOTY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA5NzMg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwMzUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCg0KDQojbGluZSAxMDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QNCnsN
CiAgICBIV05EICAgIGh3bmQ7DQogICAgUkVDVCAgICByYzsNCn0gU0hFTExIT09LSU5GTywgKkxQ
U0hFTExIT09LSU5GTzsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRVZFTlRNU0cgew0KICAg
IFVJTlQgICAgbWVzc2FnZTsNCiAgICBVSU5UICAgIHBhcmFtTDsNCiAgICBVSU5UICAgIHBhcmFt
SDsNCiAgICBEV09SRCAgICB0aW1lOw0KICAgIEhXTkQgICAgIGh3bmQ7DQp9IEVWRU5UTVNHLCAq
UEVWRU5UTVNHTVNHLCAgKk5QRVZFTlRNU0dNU0csICAqTFBFVkVOVE1TR01TRzsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnRVZFTlRNU0cgKlBFVkVOVE1TRywgICpOUEVWRU5UTVNHLCAgKkxQRVZFTlRN
U0c7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NXUFNUUlVDVCB7DQogICAgTFBBUkFNICBs
UGFyYW07DQogICAgV1BBUkFNICB3UGFyYW07DQogICAgVUlOVCAgICBtZXNzYWdlOw0KICAgIEhX
TkQgICAgaHduZDsNCn0gQ1dQU1RSVUNULCAqUENXUFNUUlVDVCwgICpOUENXUFNUUlVDVCwgICpM
UENXUFNUUlVDVDsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdDV1BSRVRTVFJVQ1Qgew0K
ICAgIExSRVNVTFQgbFJlc3VsdDsNCiAgICBMUEFSQU0gIGxQYXJhbTsNCiAgICBXUEFSQU0gIHdQ
YXJhbTsNCiAgICBVSU5UICAgIG1lc3NhZ2U7DQogICAgSFdORCAgICBod25kOw0KfSBDV1BSRVRT
VFJVQ1QsICpQQ1dQUkVUU1RSVUNULCAgKk5QQ1dQUkVUU1RSVUNULCAgKkxQQ1dQUkVUU1RSVUNU
Ow0KDQojbGluZSAxMDk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMDk5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdLQkRMTEhPT0tTVFJVQ1Qgew0KICAgIERXT1JEICAgdmtDb2Rl
Ow0KICAgIERXT1JEICAgc2NhbkNvZGU7DQogICAgRFdPUkQgICBmbGFnczsNCiAgICBEV09SRCAg
IHRpbWU7DQogICAgVUxPTkdfUFRSIGR3RXh0cmFJbmZvOw0KfSBLQkRMTEhPT0tTVFJVQ1QsICAq
TFBLQkRMTEhPT0tTVFJVQ1QsICpQS0JETExIT09LU1RSVUNUOw0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdNU0xMSE9PS1NUUlVDVCB7DQogICAgUE9JTlQgICBwdDsNCiAgICBEV09SRCAgIG1v
dXNlRGF0YTsNCiAgICBEV09SRCAgIGZsYWdzOw0KICAgIERXT1JEICAgdGltZTsNCiAgICBVTE9O
R19QVFIgZHdFeHRyYUluZm87DQp9IE1TTExIT09LU1RSVUNULCAgKkxQTVNMTEhPT0tTVFJVQ1Qs
ICpQTVNMTEhPT0tTVFJVQ1Q7DQoNCiNsaW5lIDExNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMTQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ0RFQlVHSE9PS0lORk8NCnsNCiAgICBEV09SRCAgIGlkVGhyZWFkOw0KICAgIERXT1JE
ICAgaWRUaHJlYWRJbnN0YWxsZXI7DQogICAgTFBBUkFNICBsUGFyYW07DQogICAgV1BBUkFNICB3
UGFyYW07DQogICAgaW50ICAgICBjb2RlOw0KfSBERUJVR0hPT0tJTkZPLCAqUERFQlVHSE9PS0lO
Rk8sICAqTlBERUJVR0hPT0tJTkZPLCAqIExQREVCVUdIT09LSU5GTzsNCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnTU9VU0VIT09LU1RSVUNUIHsNCiAgICBQT0lOVCAgIHB0Ow0KICAgIEhXTkQg
ICAgaHduZDsNCiAgICBVSU5UICAgIHdIaXRUZXN0Q29kZTsNCiAgICBVTE9OR19QVFIgZHdFeHRy
YUluZm87DQp9IE1PVVNFSE9PS1NUUlVDVCwgICpMUE1PVVNFSE9PS1NUUlVDVCwgKlBNT1VTRUhP
T0tTVFJVQ1Q7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNT1VTRUhPT0tTVFJVQ1RFWCA6IHB1
YmxpYyB0YWdNT1VTRUhPT0tTVFJVQ1QNCnsNCiAgICBEV09SRCAgIG1vdXNlRGF0YTsNCn0gTU9V
U0VIT09LU1RSVUNURVgsICpMUE1PVVNFSE9PS1NUUlVDVEVYLCAqUE1PVVNFSE9PS1NUUlVDVEVY
Ow0KDQoNCg0KDQoNCg0KI2xpbmUgMTE4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5l
IDExODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnSEFSRFdBUkVIT09LU1RSVUNUIHsNCiAgICBIV05EICAgIGh3bmQ7DQogICAgVUlOVCAgICBt
ZXNzYWdlOw0KICAgIFdQQVJBTSAgd1BhcmFtOw0KICAgIExQQVJBTSAgbFBhcmFtOw0KfSBIQVJE
V0FSRUhPT0tTVFJVQ1QsICAqTFBIQVJEV0FSRUhPT0tTVFJVQ1QsICpQSEFSRFdBUkVIT09LU1RS
VUNUOw0KI2xpbmUgMTE5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMTE5OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDEyMDIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMTIxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KI2xpbmUgMTIyMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyMzIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZh
bWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEtMDQpfX3N0ZGNhbGwNCkxvYWRLZXli
b2FyZExheW91dEEoDQogICAgICBMUENTVFIgcHdzektMSUQsDQogICAgICBVSU5UIEZsYWdzKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEtMDQpfX3N0ZGNhbGwNCkxvYWRLZXlib2FyZExheW91
dFcoDQogICAgICBMUENXU1RSIHB3c3pLTElELA0KICAgICAgVUlOVCBGbGFncyk7DQoNCg0KDQoN
CiNsaW5lIDEyNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkhLTA0KX19zdGRjYWxsDQpBY3RpdmF0ZUtleWJvYXJkTGF5b3V0KA0KICAgICAg
SEtMIGhrbCwNCiAgICAgIFVJTlQgRmxhZ3MpOw0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjc1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpf
X3N0ZGNhbGwNClRvVW5pY29kZUV4KA0KICAgICAgVUlOVCB3VmlydEtleSwNCiAgICAgIFVJTlQg
d1NjYW5Db2RlLA0KICAgICAgY29uc3QgQllURSAqbHBLZXlTdGF0ZSwNCiAgICAgIExQV1NUUiBw
d3N6QnVmZiwNCiAgICAgIGludCBjY2hCdWZmLA0KICAgICAgVUlOVCB3RmxhZ3MsDQogICAgICBI
S0wgZHdoa2wpOw0KI2xpbmUgMTI4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClVubG9hZEtleWJvYXJkTGF5b3V0KA0K
ICAgICAgSEtMIGhrbCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpHZXRLZXlib2FyZExheW91dE5hbWVBKA0KICAgICAgTFBTVFIgcHdzektMSUQpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEtleWJvYXJkTGF5b3V0TmFtZVco
DQogICAgICBMUFdTVFIgcHdzektMSUQpOw0KDQoNCg0KDQojbGluZSAxMzExICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwN
CkdldEtleWJvYXJkTGF5b3V0TGlzdCgNCiAgICAgIGludCBuQnVmZiwNCiAgICAgIEhLTCAgKmxw
TGlzdCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEtMDQpfX3N0ZGNhbGwNCkdldEtleWJv
YXJkTGF5b3V0KA0KICAgICAgRFdPUkQgaWRUaHJlYWQpOw0KDQojbGluZSAxMzI3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5lIDEzMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNT1VTRU1PVkVQT0lOVCB7DQogICAgaW50ICAgeDsNCiAg
ICBpbnQgICB5Ow0KICAgIERXT1JEIHRpbWU7DQogICAgVUxPTkdfUFRSIGR3RXh0cmFJbmZvOw0K
fSBNT1VTRU1PVkVQT0lOVCwgKlBNT1VTRU1PVkVQT0lOVCwgKiBMUE1PVVNFTU9WRVBPSU5UOw0K
DQojbGluZSAxMzQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRNb3VzZU1vdmVQb2ludHNFeCgNCiAg
ICAgIFVJTlQgY2JTaXplLA0KICAgICAgTFBNT1VTRU1PVkVQT0lOVCBscHB0LA0KICAgICAgTFBN
T1VTRU1PVkVQT0lOVCBscHB0QnVmLA0KICAgICAgaW50IG5CdWZQb2ludHMsDQogICAgICBEV09S
RCByZXNvbHV0aW9uKTsNCg0KI2xpbmUgMTM2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDEzNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhERVNLDQpfX3N0
ZGNhbGwNCkNyZWF0ZURlc2t0b3BBKA0KICAgICAgTFBDU1RSIGxwc3pEZXNrdG9wLA0KICAgICAg
TFBDU1RSIGxwc3pEZXZpY2UsDQogICAgICBERVZNT0RFQSogcERldm1vZGUsDQogICAgICBEV09S
RCBkd0ZsYWdzLA0KICAgICAgQUNDRVNTX01BU0sgZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgTFBT
RUNVUklUWV9BVFRSSUJVVEVTIGxwc2EpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIREVTSw0K
X19zdGRjYWxsDQpDcmVhdGVEZXNrdG9wVygNCiAgICAgIExQQ1dTVFIgbHBzekRlc2t0b3AsDQog
ICAgICBMUENXU1RSIGxwc3pEZXZpY2UsDQogICAgICBERVZNT0RFVyogcERldm1vZGUsDQogICAg
ICBEV09SRCBkd0ZsYWdzLA0KICAgICAgQUNDRVNTX01BU0sgZHdEZXNpcmVkQWNjZXNzLA0KICAg
ICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwc2EpOw0KDQoNCg0KDQojbGluZSAxNDIxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhERVNLDQpfX3N0
ZGNhbGwNCkNyZWF0ZURlc2t0b3BFeEEoDQogICAgICBMUENTVFIgbHBzekRlc2t0b3AsDQogICAg
ICBMUENTVFIgbHBzekRldmljZSwNCiAgICAgIERFVk1PREVBKiBwRGV2bW9kZSwNCiAgICAgIERX
T1JEIGR3RmxhZ3MsDQogICAgICBBQ0NFU1NfTUFTSyBkd0Rlc2lyZWRBY2Nlc3MsDQogICAgICBM
UFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBzYSwNCiAgICAgIFVMT05HIHVsSGVhcFNpemUsDQogICAg
ICBQVk9JRCBwdm9pZCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhERVNLDQpfX3N0ZGNhbGwN
CkNyZWF0ZURlc2t0b3BFeFcoDQogICAgICBMUENXU1RSIGxwc3pEZXNrdG9wLA0KICAgICAgTFBD
V1NUUiBscHN6RGV2aWNlLA0KICAgICAgREVWTU9ERVcqIHBEZXZtb2RlLA0KICAgICAgRFdPUkQg
ZHdGbGFncywNCiAgICAgIEFDQ0VTU19NQVNLIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIExQU0VD
VVJJVFlfQVRUUklCVVRFUyBscHNhLA0KICAgICAgVUxPTkcgdWxIZWFwU2l6ZSwNCiAgICAgIFBW
T0lEIHB2b2lkKTsNCg0KDQoNCg0KI2xpbmUgMTQ1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KI2xpbmUgMTQ1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNsaW5lIDE0NTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGluZSAxNDU3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSERFU0sNCl9fc3RkY2FsbA0KT3BlbkRlc2t0b3BBKA0K
ICAgICAgTFBDU1RSIGxwc3pEZXNrdG9wLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIEJP
T0wgZkluaGVyaXQsDQogICAgICBBQ0NFU1NfTUFTSyBkd0Rlc2lyZWRBY2Nlc3MpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpIREVTSw0KX19zdGRjYWxsDQpPcGVuRGVza3RvcFcoDQogICAgICBM
UENXU1RSIGxwc3pEZXNrdG9wLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIEJPT0wgZklu
aGVyaXQsDQogICAgICBBQ0NFU1NfTUFTSyBkd0Rlc2lyZWRBY2Nlc3MpOw0KDQoNCg0KDQojbGlu
ZSAxNDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkhERVNLDQpfX3N0ZGNhbGwNCk9wZW5JbnB1dERlc2t0b3AoDQogICAgICBEV09SRCBkd0ZsYWdz
LA0KICAgICAgQk9PTCBmSW5oZXJpdCwNCiAgICAgIEFDQ0VTU19NQVNLIGR3RGVzaXJlZEFjY2Vz
cyk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1EZXNr
dG9wc0EoDQogICAgICBIV0lOU1RBIGh3aW5zdGEsDQogICAgICBERVNLVE9QRU5VTVBST0NBIGxw
RW51bUZ1bmMsDQogICAgICBMUEFSQU0gbFBhcmFtKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpFbnVtRGVza3RvcHNXKA0KICAgICAgSFdJTlNUQSBod2luc3RhLA0K
ICAgICAgREVTS1RPUEVOVU1QUk9DVyBscEVudW1GdW5jLA0KICAgICAgTFBBUkFNIGxQYXJhbSk7
DQoNCg0KDQoNCiNsaW5lIDE1MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtRGVza3RvcFdpbmRvd3MoDQogICAg
ICBIREVTSyBoRGVza3RvcCwNCiAgICAgIFdOREVOVU1QUk9DIGxwZm4sDQogICAgICBMUEFSQU0g
bFBhcmFtKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU3dp
dGNoRGVza3RvcCgNCiAgICAgIEhERVNLIGhEZXNrdG9wKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0VGhyZWFkRGVza3RvcCgNCiAgICAgICBIREVTSyBo
RGVza3RvcCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDbG9z
ZURlc2t0b3AoDQogICAgICBIREVTSyBoRGVza3RvcCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KSERFU0sNCl9fc3RkY2FsbA0KR2V0VGhyZWFkRGVza3RvcCgNCiAgICAgIERXT1JEIGR3VGhy
ZWFkSWQpOw0KDQojbGluZSAxNTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI2xpbmUgMTU1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdJTlNU
QQ0KX19zdGRjYWxsDQpDcmVhdGVXaW5kb3dTdGF0aW9uQSgNCiAgICAgIExQQ1NUUiBscHdpbnN0
YSwNCiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBBQ0NFU1NfTUFTSyBkd0Rlc2lyZWRBY2Nl
c3MsDQogICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBzYSk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkhXSU5TVEENCl9fc3RkY2FsbA0KQ3JlYXRlV2luZG93U3RhdGlvblcoDQogICAgICBM
UENXU1RSIGxwd2luc3RhLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIEFDQ0VTU19NQVNL
IGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscHNhKTsNCg0K
DQoNCg0KI2xpbmUgMTYwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpIV0lOU1RBDQpfX3N0ZGNhbGwNCk9wZW5XaW5kb3dTdGF0aW9uQSgNCiAgICAg
IExQQ1NUUiBscHN6V2luU3RhLA0KICAgICAgQk9PTCBmSW5oZXJpdCwNCiAgICAgIEFDQ0VTU19N
QVNLIGR3RGVzaXJlZEFjY2Vzcyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhXSU5TVEENCl9f
c3RkY2FsbA0KT3BlbldpbmRvd1N0YXRpb25XKA0KICAgICAgTFBDV1NUUiBscHN6V2luU3RhLA0K
ICAgICAgQk9PTCBmSW5oZXJpdCwNCiAgICAgIEFDQ0VTU19NQVNLIGR3RGVzaXJlZEFjY2Vzcyk7
DQoNCg0KDQoNCiNsaW5lIDE2MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtV2luZG93U3RhdGlvbnNBKA0KICAg
ICAgV0lOU1RBRU5VTVBST0NBIGxwRW51bUZ1bmMsDQogICAgICBMUEFSQU0gbFBhcmFtKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtV2luZG93U3RhdGlvbnNX
KA0KICAgICAgV0lOU1RBRU5VTVBST0NXIGxwRW51bUZ1bmMsDQogICAgICBMUEFSQU0gbFBhcmFt
KTsNCg0KDQoNCg0KI2xpbmUgMTY0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNsb3NlV2luZG93U3RhdGlvbigNCiAg
ICAgIEhXSU5TVEEgaFdpblN0YSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpTZXRQcm9jZXNzV2luZG93U3RhdGlvbigNCiAgICAgIEhXSU5TVEEgaFdpblN0YSk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdJTlNUQQ0KX19zdGRjYWxsDQpHZXRQcm9jZXNz
V2luZG93U3RhdGlvbigNCiAgICB2b2lkKTsNCg0KI2xpbmUgMTY2MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDE2NjQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRVc2VyT2JqZWN0U2VjdXJpdHko
DQogICAgICBIQU5ETEUgaE9iaiwNCiAgICAgIFBTRUNVUklUWV9JTkZPUk1BVElPTiBwU0lSZXF1
ZXN0ZWQsDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU0lEKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFVzZXJPYmplY3RTZWN1cml0eSgNCiAgICAg
IEhBTkRMRSBoT2JqLA0KICAgICAgUFNFQ1VSSVRZX0lORk9STUFUSU9OIHBTSVJlcXVlc3RlZCwN
CiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTSUQsDQogICAgICBEV09SRCBuTGVuZ3RoLA0K
ICAgICAgTFBEV09SRCBscG5MZW5ndGhOZWVkZWQpOw0KDQojbGluZSAxNjg5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
Njk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnVVNFUk9CSkVDVEZMQUdTIHsNCiAgICBCT09M
IGZJbmhlcml0Ow0KICAgIEJPT0wgZlJlc2VydmVkOw0KICAgIERXT1JEIGR3RmxhZ3M7DQp9IFVT
RVJPQkpFQ1RGTEFHUywgKlBVU0VST0JKRUNURkxBR1M7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25BKA0KICAgICAgSEFO
RExFIGhPYmosDQogICAgICBpbnQgbkluZGV4LA0KICAgICAgUFZPSUQgcHZJbmZvLA0KICAgICAg
RFdPUkQgbkxlbmd0aCwNCiAgICAgIExQRFdPUkQgbHBuTGVuZ3RoTmVlZGVkKTsNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25X
KA0KICAgICAgSEFORExFIGhPYmosDQogICAgICBpbnQgbkluZGV4LA0KICAgICAgUFZPSUQgcHZJ
bmZvLA0KICAgICAgRFdPUkQgbkxlbmd0aCwNCiAgICAgIExQRFdPUkQgbHBuTGVuZ3RoTmVlZGVk
KTsNCg0KDQoNCg0KI2xpbmUgMTczMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFVzZXJPYmplY3RJbmZvcm1hdGlv
bkEoDQogICAgICBIQU5ETEUgaE9iaiwNCiAgICAgIGludCBuSW5kZXgsDQogICAgICBQVk9JRCBw
dkluZm8sDQogICAgICBEV09SRCBuTGVuZ3RoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpTZXRVc2VyT2JqZWN0SW5mb3JtYXRpb25XKA0KICAgICAgSEFORExFIGhP
YmosDQogICAgICBpbnQgbkluZGV4LA0KICAgICAgUFZPSUQgcHZJbmZvLA0KICAgICAgRFdPUkQg
bkxlbmd0aCk7DQoNCg0KDQoNCiNsaW5lIDE3NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
CiNsaW5lIDE3NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojbGluZSAxNzYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnV05EQ0xBU1NF
WEEgew0KICAgIFVJTlQgICAgICAgIGNiU2l6ZTsNCiAgICANCiAgICBVSU5UICAgICAgICBzdHls
ZTsNCiAgICBXTkRQUk9DICAgICBscGZuV25kUHJvYzsNCiAgICBpbnQgICAgICAgICBjYkNsc0V4
dHJhOw0KICAgIGludCAgICAgICAgIGNiV25kRXh0cmE7DQogICAgSElOU1RBTkNFICAgaEluc3Rh
bmNlOw0KICAgIEhJQ09OICAgICAgIGhJY29uOw0KICAgIEhDVVJTT1IgICAgIGhDdXJzb3I7DQog
ICAgSEJSVVNIICAgICAgaGJyQmFja2dyb3VuZDsNCiAgICBMUENTVFIgICAgICBscHN6TWVudU5h
bWU7DQogICAgTFBDU1RSICAgICAgbHBzekNsYXNzTmFtZTsNCiAgICANCiAgICBISUNPTiAgICAg
ICBoSWNvblNtOw0KfSBXTkRDTEFTU0VYQSwgKlBXTkRDTEFTU0VYQSwgICpOUFdORENMQVNTRVhB
LCAgKkxQV05EQ0xBU1NFWEE7DQp0eXBlZGVmIHN0cnVjdCB0YWdXTkRDTEFTU0VYVyB7DQogICAg
VUlOVCAgICAgICAgY2JTaXplOw0KICAgIA0KICAgIFVJTlQgICAgICAgIHN0eWxlOw0KICAgIFdO
RFBST0MgICAgIGxwZm5XbmRQcm9jOw0KICAgIGludCAgICAgICAgIGNiQ2xzRXh0cmE7DQogICAg
aW50ICAgICAgICAgY2JXbmRFeHRyYTsNCiAgICBISU5TVEFOQ0UgICBoSW5zdGFuY2U7DQogICAg
SElDT04gICAgICAgaEljb247DQogICAgSENVUlNPUiAgICAgaEN1cnNvcjsNCiAgICBIQlJVU0gg
ICAgICBoYnJCYWNrZ3JvdW5kOw0KICAgIExQQ1dTVFIgICAgIGxwc3pNZW51TmFtZTsNCiAgICBM
UENXU1RSICAgICBscHN6Q2xhc3NOYW1lOw0KICAgIA0KICAgIEhJQ09OICAgICAgIGhJY29uU207
DQp9IFdORENMQVNTRVhXLCAqUFdORENMQVNTRVhXLCAgKk5QV05EQ0xBU1NFWFcsICAqTFBXTkRD
TEFTU0VYVzsNCg0KdHlwZWRlZiBXTkRDTEFTU0VYVyBXTkRDTEFTU0VYOw0KdHlwZWRlZiBQV05E
Q0xBU1NFWFcgUFdORENMQVNTRVg7DQp0eXBlZGVmIE5QV05EQ0xBU1NFWFcgTlBXTkRDTEFTU0VY
Ow0KdHlwZWRlZiBMUFdORENMQVNTRVhXIExQV05EQ0xBU1NFWDsNCg0KDQoNCg0KDQojbGluZSAx
ODA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI2xpbmUgMTgwOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnV05EQ0xBU1NBIHsNCiAgICBVSU5UICAgICAg
ICBzdHlsZTsNCiAgICBXTkRQUk9DICAgICBscGZuV25kUHJvYzsNCiAgICBpbnQgICAgICAgICBj
YkNsc0V4dHJhOw0KICAgIGludCAgICAgICAgIGNiV25kRXh0cmE7DQogICAgSElOU1RBTkNFICAg
aEluc3RhbmNlOw0KICAgIEhJQ09OICAgICAgIGhJY29uOw0KICAgIEhDVVJTT1IgICAgIGhDdXJz
b3I7DQogICAgSEJSVVNIICAgICAgaGJyQmFja2dyb3VuZDsNCiAgICBMUENTVFIgICAgICBscHN6
TWVudU5hbWU7DQogICAgTFBDU1RSICAgICAgbHBzekNsYXNzTmFtZTsNCn0gV05EQ0xBU1NBLCAq
UFdORENMQVNTQSwgICpOUFdORENMQVNTQSwgICpMUFdORENMQVNTQTsNCnR5cGVkZWYgc3RydWN0
IHRhZ1dORENMQVNTVyB7DQogICAgVUlOVCAgICAgICAgc3R5bGU7DQogICAgV05EUFJPQyAgICAg
bHBmblduZFByb2M7DQogICAgaW50ICAgICAgICAgY2JDbHNFeHRyYTsNCiAgICBpbnQgICAgICAg
ICBjYlduZEV4dHJhOw0KICAgIEhJTlNUQU5DRSAgIGhJbnN0YW5jZTsNCiAgICBISUNPTiAgICAg
ICBoSWNvbjsNCiAgICBIQ1VSU09SICAgICBoQ3Vyc29yOw0KICAgIEhCUlVTSCAgICAgIGhickJh
Y2tncm91bmQ7DQogICAgTFBDV1NUUiAgICAgbHBzek1lbnVOYW1lOw0KICAgIExQQ1dTVFIgICAg
IGxwc3pDbGFzc05hbWU7DQp9IFdORENMQVNTVywgKlBXTkRDTEFTU1csICAqTlBXTkRDTEFTU1cs
ICAqTFBXTkRDTEFTU1c7DQoNCnR5cGVkZWYgV05EQ0xBU1NXIFdORENMQVNTOw0KdHlwZWRlZiBQ
V05EQ0xBU1NXIFBXTkRDTEFTUzsNCnR5cGVkZWYgTlBXTkRDTEFTU1cgTlBXTkRDTEFTUzsNCnR5
cGVkZWYgTFBXTkRDTEFTU1cgTFBXTkRDTEFTUzsNCg0KDQoNCg0KDQojbGluZSAxODQ1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxODQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNIdW5nQXBwV2luZG93
KA0KICAgICAgSFdORCBod25kKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0K
X19zdGRjYWxsDQpEaXNhYmxlUHJvY2Vzc1dpbmRvd3NHaG9zdGluZygNCiAgICB2b2lkKTsNCiNs
aW5lIDE4NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDE4NjggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTVNHIHsNCiAgICBIV05EICAgICAgICBod25kOw0K
ICAgIFVJTlQgICAgICAgIG1lc3NhZ2U7DQogICAgV1BBUkFNICAgICAgd1BhcmFtOw0KICAgIExQ
QVJBTSAgICAgIGxQYXJhbTsNCiAgICBEV09SRCAgICAgICB0aW1lOw0KICAgIFBPSU5UICAgICAg
IHB0Ow0KDQoNCg0KfSBNU0csICpQTVNHLCAgKk5QTVNHLCAgKkxQTVNHOw0KDQojbGluZSAxODky
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxOTA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTkyNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxOTUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDE5NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxOTczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDIwMDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwMTcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI2xpbmUgMjAyMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNr
dG9wIEZhbWlseQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01JTk1BWElORk8gew0KICAg
IFBPSU5UIHB0UmVzZXJ2ZWQ7DQogICAgUE9JTlQgcHRNYXhTaXplOw0KICAgIFBPSU5UIHB0TWF4
UG9zaXRpb247DQogICAgUE9JTlQgcHRNaW5UcmFja1NpemU7DQogICAgUE9JTlQgcHRNYXhUcmFj
a1NpemU7DQp9IE1JTk1BWElORk8sICpQTUlOTUFYSU5GTywgKkxQTUlOTUFYSU5GTzsNCg0KI2xp
bmUgMjA0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwNzAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQojbGluZSAyMDcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZh
bWlseQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NPUFlEQVRBU1RSVUNUIHsNCiAgICBV
TE9OR19QVFIgZHdEYXRhOw0KICAgIERXT1JEIGNiRGF0YTsNCiAgICAgIFBWT0lEIGxwRGF0YTsN
Cn0gQ09QWURBVEFTVFJVQ1QsICpQQ09QWURBVEFTVFJVQ1Q7DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnTURJTkVYVE1FTlUNCnsNCiAgICBITUVOVSAgIGhtZW51SW47DQogICAgSE1FTlUgICBobWVu
dU5leHQ7DQogICAgSFdORCAgICBod25kTmV4dDsNCn0gTURJTkVYVE1FTlUsICogUE1ESU5FWFRN
RU5VLCAgKiBMUE1ESU5FWFRNRU5VOw0KI2xpbmUgMjExMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KI2xpbmUgMjExMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIx
MzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIx
NDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMjE2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KI2xpbmUg
MjE3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5lIDIxNzQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIx
OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQojbGluZSAyMTk4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjIxMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjI0MyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCiNsaW5lIDIyNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGluZSAyMjQ1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAyMjQ3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI2xpbmUgMjI0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjcyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCg0KDQojbGluZSAyMjc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCiNsaW5lIDIyODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAyMjkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjMwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjMxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjMyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIEdVSUQgUG93
ZXJTZXR0aW5nOw0KICAgIERXT1JEIERhdGFMZW5ndGg7DQogICAgVUNIQVIgRGF0YVsxXTsNCn0g
UE9XRVJCUk9BRENBU1RfU0VUVElORywgKlBQT1dFUkJST0FEQ0FTVF9TRVRUSU5HOw0KDQoNCiNs
aW5lIDIzNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
bGluZSAyMzY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAyMzcxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KI2xpbmUgMjM3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
I2xpbmUgMjM3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5lIDIzNzggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMjQwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0K
I2xpbmUgMjQwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjQyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0MzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0K
I2xpbmUgMjQ0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5lIDI0NDQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNsaW5lIDI0NDkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQojbGluZSAyNDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMjQ2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5l
IDI0NjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNsaW5lIDI0NjkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI0OTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoj
bGluZSAyNDk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI2xpbmUgMjUwMyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KI2xpbmUgMjUwOCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDI1MTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQoNCg0KDQoNCiNsaW5lIDI1MjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNs
aW5lIDI1MjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI2xpbmUgMjUyOCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNTM3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNTQ1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1
NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNjAzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNjE0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5lIDI2MTcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCiNsaW5lIDI2MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDI2
MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDI2MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9fc3Rk
Y2FsbA0KUmVnaXN0ZXJXaW5kb3dNZXNzYWdlQSgNCiAgICAgIExQQ1NUUiBscFN0cmluZyk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9fc3RkY2FsbA0KUmVnaXN0ZXJXaW5kb3dNZXNz
YWdlVygNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcpOw0KDQoNCg0KDQojbGluZSAyNjU4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAyNjYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnV0lORE9XUE9TIHsNCiAgICBIV05EICAgIGh3bmQ7DQogICAgSFdORCAgICBod25k
SW5zZXJ0QWZ0ZXI7DQogICAgaW50ICAgICB4Ow0KICAgIGludCAgICAgeTsNCiAgICBpbnQgICAg
IGN4Ow0KICAgIGludCAgICAgY3k7DQogICAgVUlOVCAgICBmbGFnczsNCn0gV0lORE9XUE9TLCAq
TFBXSU5ET1dQT1MsICpQV0lORE9XUE9TOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdOQ0NB
TENTSVpFX1BBUkFNUyB7DQogICAgUkVDVCAgICAgICByZ3JjWzNdOw0KICAgIFBXSU5ET1dQT1Mg
bHBwb3M7DQp9IE5DQ0FMQ1NJWkVfUEFSQU1TLCAqTFBOQ0NBTENTSVpFX1BBUkFNUzsNCg0KI2xp
bmUgMjcwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDI3MzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDI3MzkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNzQ5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDI3NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ1RSQUNLTU9VU0VFVkVOVCB7DQogICAgRFdPUkQgY2JTaXplOw0KICAgIERXT1JEIGR3Rmxh
Z3M7DQogICAgSFdORCAgaHduZFRyYWNrOw0KICAgIERXT1JEIGR3SG92ZXJUaW1lOw0KfSBUUkFD
S01PVVNFRVZFTlQsICpMUFRSQUNLTU9VU0VFVkVOVDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNClRyYWNrTW91c2VFdmVudCgNCiAgICAgIExQVFJBQ0tNT1VTRUVW
RU5UIGxwRXZlbnRUcmFjayk7DQoNCiNsaW5lIDI3NzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAyNzc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCg0KI2xpbmUgMjc4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDI3ODMg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI2xpbmUgMjc4NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI4NTMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjg3MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KI2xpbmUgMjg3NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KI2xpbmUgMjg4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
DQoNCiNsaW5lIDI4ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQojbGluZSAyODg5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI2xpbmUgMjg5MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KDQojbGluZSAyODk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI5MTcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCg0KDQojbGluZSAyOTIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpEcmF3RWRnZSgNCiAgICAgIEhEQyBoZGMsDQogICAgICBMUFJFQ1Qg
cXJjLA0KICAgICAgVUlOVCBlZGdlLA0KICAgICAgVUlOVCBncmZGbGFncyk7DQoNCiNsaW5lIDI5
ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMzAwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDMwMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KRHJhd0ZyYW1lQ29udHJvbCgNCiAgICAgIEhEQywNCiAgICAgIExQUkVDVCwNCiAgICAg
IFVJTlQsDQogICAgICBVSU5UKTsNCg0KDQojbGluZSAzMDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzA2NSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQojbGluZSAzMDY4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEcmF3Q2FwdGlvbigNCiAgICAgIEhXTkQgaHdu
ZCwNCiAgICAgIEhEQyBoZGMsDQogICAgICBjb25zdCBSRUNUICogbHByZWN0LA0KICAgICAgVUlO
VCBmbGFncyk7DQoNCg0KI2xpbmUgMzA4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRyYXdBbmltYXRlZFJlY3Rz
KA0KICAgICAgSFdORCBod25kLA0KICAgICAgaW50IGlkQW5pLA0KICAgICAgY29uc3QgUkVDVCAq
bHByY0Zyb20sDQogICAgICBjb25zdCBSRUNUICpscHJjVG8pOw0KDQojbGluZSAzMTAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMzEwNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDMxMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI2xp
bmUgMzEzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzE0
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzMTYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ0FDQ0VMIHsNCg0KICAgIEJZVEUgICBmVmlydDsgICAgICAgICAgICAgICANCiAgICBX
T1JEICAga2V5Ow0KICAgIFdPUkQgICBjbWQ7DQoNCg0KDQoNCiNsaW5lIDMxODQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQp9IEFDQ0VMLCAqTFBBQ0NFTDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
UEFJTlRTVFJVQ1Qgew0KICAgIEhEQyAgICAgICAgIGhkYzsNCiAgICBCT09MICAgICAgICBmRXJh
c2U7DQogICAgUkVDVCAgICAgICAgcmNQYWludDsNCiAgICBCT09MICAgICAgICBmUmVzdG9yZTsN
CiAgICBCT09MICAgICAgICBmSW5jVXBkYXRlOw0KICAgIEJZVEUgICAgICAgIHJnYlJlc2VydmVk
WzMyXTsNCn0gUEFJTlRTVFJVQ1QsICpQUEFJTlRTVFJVQ1QsICpOUFBBSU5UU1RSVUNULCAqTFBQ
QUlOVFNUUlVDVDsNCg0KI2xpbmUgMzE5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIEdhbWVzIEZh
bWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NSRUFURVNUUlVDVEEgew0KICAgIExQVk9JRCAg
ICAgIGxwQ3JlYXRlUGFyYW1zOw0KICAgIEhJTlNUQU5DRSAgIGhJbnN0YW5jZTsNCiAgICBITUVO
VSAgICAgICBoTWVudTsNCiAgICBIV05EICAgICAgICBod25kUGFyZW50Ow0KICAgIGludCAgICAg
ICAgIGN5Ow0KICAgIGludCAgICAgICAgIGN4Ow0KICAgIGludCAgICAgICAgIHk7DQogICAgaW50
ICAgICAgICAgeDsNCiAgICBMT05HICAgICAgICBzdHlsZTsNCiAgICBMUENTVFIgICAgICBscHN6
TmFtZTsNCiAgICBMUENTVFIgICAgICBscHN6Q2xhc3M7DQogICAgRFdPUkQgICAgICAgZHdFeFN0
eWxlOw0KfSBDUkVBVEVTVFJVQ1RBLCAqTFBDUkVBVEVTVFJVQ1RBOw0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnQ1JFQVRFU1RSVUNUVyB7DQogICAgTFBWT0lEICAgICAgbHBDcmVhdGVQYXJhbXM7DQogICAg
SElOU1RBTkNFICAgaEluc3RhbmNlOw0KICAgIEhNRU5VICAgICAgIGhNZW51Ow0KICAgIEhXTkQg
ICAgICAgIGh3bmRQYXJlbnQ7DQogICAgaW50ICAgICAgICAgY3k7DQogICAgaW50ICAgICAgICAg
Y3g7DQogICAgaW50ICAgICAgICAgeTsNCiAgICBpbnQgICAgICAgICB4Ow0KICAgIExPTkcgICAg
ICAgIHN0eWxlOw0KICAgIExQQ1dTVFIgICAgIGxwc3pOYW1lOw0KICAgIExQQ1dTVFIgICAgIGxw
c3pDbGFzczsNCiAgICBEV09SRCAgICAgICBkd0V4U3R5bGU7DQp9IENSRUFURVNUUlVDVFcsICpM
UENSRUFURVNUUlVDVFc7DQoNCnR5cGVkZWYgQ1JFQVRFU1RSVUNUVyBDUkVBVEVTVFJVQ1Q7DQp0
eXBlZGVmIExQQ1JFQVRFU1RSVUNUVyBMUENSRUFURVNUUlVDVDsNCg0KDQoNCiNsaW5lIDMyMzYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDMyMzggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1dJTkRPV1BMQUNFTUVOVCB7DQogICAgVUlOVCAgbGVu
Z3RoOw0KICAgIFVJTlQgIGZsYWdzOw0KICAgIFVJTlQgIHNob3dDbWQ7DQogICAgUE9JTlQgcHRN
aW5Qb3NpdGlvbjsNCiAgICBQT0lOVCBwdE1heFBvc2l0aW9uOw0KICAgIFJFQ1QgIHJjTm9ybWFs
UG9zaXRpb247DQoNCg0KDQp9IFdJTkRPV1BMQUNFTUVOVDsNCnR5cGVkZWYgV0lORE9XUExBQ0VN
RU5UICpQV0lORE9XUExBQ0VNRU5ULCAqTFBXSU5ET1dQTEFDRU1FTlQ7DQoNCg0KDQoNCg0KI2xp
bmUgMzI2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMzI2MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdOTUhEUg0Kew0KICAgIEhXTkQgICAgICBod25kRnJvbTsNCiAgICBVSU5UX1BUUiAgaWRGcm9t
Ow0KICAgIFVJTlQgICAgICBjb2RlOyAgICAgICAgIA0KfSAgIE5NSERSOw0KDQojbGluZSAzMjc4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIE5NSERSICAqIExQTk1IRFI7DQoNCnR5
cGVkZWYgc3RydWN0IHRhZ1NUWUxFU1RSVUNUDQp7DQogICAgRFdPUkQgICBzdHlsZU9sZDsNCiAg
ICBEV09SRCAgIHN0eWxlTmV3Ow0KfSBTVFlMRVNUUlVDVCwgKiBMUFNUWUxFU1RSVUNUOw0KDQoj
bGluZSAzMjkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNs
aW5lIDMyOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMzMwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzMyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
DQoNCg0KDQoNCiNsaW5lIDMzMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGluZSAzMzM0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01FQVNVUkVJVEVNU1RSVUNUIHsNCiAgICBV
SU5UICAgICAgIEN0bFR5cGU7DQogICAgVUlOVCAgICAgICBDdGxJRDsNCiAgICBVSU5UICAgICAg
IGl0ZW1JRDsNCiAgICBVSU5UICAgICAgIGl0ZW1XaWR0aDsNCiAgICBVSU5UICAgICAgIGl0ZW1I
ZWlnaHQ7DQogICAgVUxPTkdfUFRSICBpdGVtRGF0YTsNCn0gTUVBU1VSRUlURU1TVFJVQ1QsICAq
UE1FQVNVUkVJVEVNU1RSVUNULCAgKkxQTUVBU1VSRUlURU1TVFJVQ1Q7DQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IHRhZ0RSQVdJVEVNU1RSVUNUIHsNCiAgICBVSU5UICAgICAgICBDdGxUeXBlOw0K
ICAgIFVJTlQgICAgICAgIEN0bElEOw0KICAgIFVJTlQgICAgICAgIGl0ZW1JRDsNCiAgICBVSU5U
ICAgICAgICBpdGVtQWN0aW9uOw0KICAgIFVJTlQgICAgICAgIGl0ZW1TdGF0ZTsNCiAgICBIV05E
ICAgICAgICBod25kSXRlbTsNCiAgICBIREMgICAgICAgICBoREM7DQogICAgUkVDVCAgICAgICAg
cmNJdGVtOw0KICAgIFVMT05HX1BUUiAgIGl0ZW1EYXRhOw0KfSBEUkFXSVRFTVNUUlVDVCwgICpQ
RFJBV0lURU1TVFJVQ1QsICAqTFBEUkFXSVRFTVNUUlVDVDsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgdGFnREVMRVRFSVRFTVNUUlVDVCB7DQogICAgVUlOVCAgICAgICBDdGxUeXBlOw0KICAgIFVJ
TlQgICAgICAgQ3RsSUQ7DQogICAgVUlOVCAgICAgICBpdGVtSUQ7DQogICAgSFdORCAgICAgICBo
d25kSXRlbTsNCiAgICBVTE9OR19QVFIgIGl0ZW1EYXRhOw0KfSBERUxFVEVJVEVNU1RSVUNULCAg
KlBERUxFVEVJVEVNU1RSVUNULCAgKkxQREVMRVRFSVRFTVNUUlVDVDsNCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnQ09NUEFSRUlURU1TVFJVQ1Qgew0KICAgIFVJTlQgICAgICAgIEN0bFR5cGU7
DQogICAgVUlOVCAgICAgICAgQ3RsSUQ7DQogICAgSFdORCAgICAgICAgaHduZEl0ZW07DQogICAg
VUlOVCAgICAgICAgaXRlbUlEMTsNCiAgICBVTE9OR19QVFIgICBpdGVtRGF0YTE7DQogICAgVUlO
VCAgICAgICAgaXRlbUlEMjsNCiAgICBVTE9OR19QVFIgICBpdGVtRGF0YTI7DQogICAgRFdPUkQg
ICAgICAgZHdMb2NhbGVJZDsNCn0gQ09NUEFSRUlURU1TVFJVQ1QsICAqUENPTVBBUkVJVEVNU1RS
VUNULCAgKkxQQ09NUEFSRUlURU1TVFJVQ1Q7DQoNCiNsaW5lIDMzOTEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TWVzc2FnZUEoDQogICAgICBMUE1TRyBscE1zZywNCiAg
ICAgIEhXTkQgaFduZCwNCiAgICAgIFVJTlQgd01zZ0ZpbHRlck1pbiwNCiAgICAgIFVJTlQgd01z
Z0ZpbHRlck1heCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0
TWVzc2FnZVcoDQogICAgICBMUE1TRyBscE1zZywNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIFVJ
TlQgd01zZ0ZpbHRlck1pbiwNCiAgICAgIFVJTlQgd01zZ0ZpbHRlck1heCk7DQoNCg0KDQoNCiNs
aW5lIDM0MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzQ0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVHJhbnNsYXRl
TWVzc2FnZSgNCiAgICAgIGNvbnN0IE1TRyAqbHBNc2cpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkxSRVNVTFQNCl9fc3RkY2FsbA0KRGlzcGF0Y2hNZXNzYWdlQSgNCiAgICAgIGNvbnN0IE1T
RyAqbHBNc2cpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMUkVTVUxUDQpfX3N0ZGNhbGwNCkRp
c3BhdGNoTWVzc2FnZVcoDQogICAgICBjb25zdCBNU0cgKmxwTXNnKTsNCg0KDQoNCg0KI2xpbmUg
MzQ3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAzNDg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAzNDkw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KU2V0TWVzc2FnZVF1ZXVlKA0KICAgICAgaW50IGNNZXNzYWdlc01heCk7DQoNCiNs
aW5lIDM1MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUGVla01lc3NhZ2VBKA0KICAgICAgTFBN
U0cgbHBNc2csDQogICAgICBIV05EIGhXbmQsDQogICAgICBVSU5UIHdNc2dGaWx0ZXJNaW4sDQog
ICAgICBVSU5UIHdNc2dGaWx0ZXJNYXgsDQogICAgICBVSU5UIHdSZW1vdmVNc2cpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClBlZWtNZXNzYWdlVygNCiAgICAgIExQ
TVNHIGxwTXNnLA0KICAgICAgSFdORCBoV25kLA0KICAgICAgVUlOVCB3TXNnRmlsdGVyTWluLA0K
ICAgICAgVUlOVCB3TXNnRmlsdGVyTWF4LA0KICAgICAgVUlOVCB3UmVtb3ZlTXNnKTsNCg0KDQoN
Cg0KI2xpbmUgMzUzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMzUzMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMzU0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQojbGlu
ZSAzNTUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZWdp
c3RlckhvdEtleSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGludCBpZCwNCiAgICAgIFVJTlQg
ZnNNb2RpZmllcnMsDQogICAgICBVSU5UIHZrKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClVucmVnaXN0ZXJIb3RLZXkoDQogICAgICBIV05EIGhXbmQsDQogICAg
ICBpbnQgaWQpOw0KDQojbGluZSAzNTcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzU4MSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM1OTcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCg0KDQojbGluZSAzNjAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCiNsaW5lIDM2MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI2xpbmUgMzYw
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNjE2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI2xpbmUgMzYyMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0K
DQoNCiNsaW5lIDM2MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRXhpdFdpbmRvd3NFeCgNCiAgICAgIFVJTlQgdUZsYWdz
LA0KICAgICAgRFdPUkQgZHdSZWFzb24pOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KU3dhcE1vdXNlQnV0dG9uKA0KICAgICAgQk9PTCBmU3dhcCk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0TWVzc2FnZVBvcygNCiAgICB2
b2lkKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05HDQpfX3N0ZGNhbGwNCkdldE1lc3Nh
Z2VUaW1lKA0KICAgIHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxQQVJBTQ0KX19z
dGRjYWxsDQpHZXRNZXNzYWdlRXh0cmFJbmZvKA0KICAgIHZvaWQpOw0KDQoNCg0KDQoNCg0KDQoj
bGluZSAzNjcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJc1dvdzY0TWVzc2FnZSgNCiAgICB2b2lkKTsNCiNsaW5l
IDM2NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpMUEFSQU0NCl9fc3RkY2FsbA0KU2V0TWVzc2FnZUV4dHJhSW5mbygNCiAgICAgIExQQVJBTSBs
UGFyYW0pOw0KI2xpbmUgMzY4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMzY4
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KTFJFU1VMVA0KX19zdGRjYWxsDQpTZW5kTWVzc2FnZUEoDQogICAgICBIV05EIGhX
bmQsDQogICAgICBVSU5UIE1zZywNCiAgICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgICAgTFBB
UkFNIGxQYXJhbSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxSRVNVTFQNCl9fc3RkY2FsbA0K
U2VuZE1lc3NhZ2VXKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgVUlOVCBNc2csDQogICAgICAg
IFdQQVJBTSB3UGFyYW0sDQogICAgICAgIExQQVJBTSBsUGFyYW0pOw0KDQoNCg0KDQojbGluZSAz
NzE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
CiNsaW5lIDM3NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KTFJFU1VMVA0KX19zdGRjYWxsDQpTZW5kTWVzc2FnZVRpbWVvdXRBKA0KICAgICAgSFdORCBo
V25kLA0KICAgICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0KICAgICAgTFBBUkFN
IGxQYXJhbSwNCiAgICAgIFVJTlQgZnVGbGFncywNCiAgICAgIFVJTlQgdVRpbWVvdXQsDQogICAg
ICBQRFdPUkRfUFRSIGxwZHdSZXN1bHQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMUkVTVUxU
DQpfX3N0ZGNhbGwNClNlbmRNZXNzYWdlVGltZW91dFcoDQogICAgICBIV05EIGhXbmQsDQogICAg
ICBVSU5UIE1zZywNCiAgICAgIFdQQVJBTSB3UGFyYW0sDQogICAgICBMUEFSQU0gbFBhcmFtLA0K
ICAgICAgVUlOVCBmdUZsYWdzLA0KICAgICAgVUlOVCB1VGltZW91dCwNCiAgICAgIFBEV09SRF9Q
VFIgbHBkd1Jlc3VsdCk7DQoNCg0KDQoNCiNsaW5lIDM3NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZW5kTm90aWZ5
TWVzc2FnZUEoDQogICAgICBIV05EIGhXbmQsDQogICAgICBVSU5UIE1zZywNCiAgICAgIFdQQVJB
TSB3UGFyYW0sDQogICAgICBMUEFSQU0gbFBhcmFtKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpTZW5kTm90aWZ5TWVzc2FnZVcoDQogICAgICBIV05EIGhXbmQsDQog
ICAgICBVSU5UIE1zZywNCiAgICAgIFdQQVJBTSB3UGFyYW0sDQogICAgICBMUEFSQU0gbFBhcmFt
KTsNCg0KDQoNCg0KI2xpbmUgMzc5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNlbmRNZXNzYWdlQ2FsbGJhY2tBKA0K
ICAgICAgSFdORCBoV25kLA0KICAgICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0K
ICAgICAgTFBBUkFNIGxQYXJhbSwNCiAgICAgIFNFTkRBU1lOQ1BST0MgbHBSZXN1bHRDYWxsQmFj
aywNCiAgICAgIFVMT05HX1BUUiBkd0RhdGEpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNClNlbmRNZXNzYWdlQ2FsbGJhY2tXKA0KICAgICAgSFdORCBoV25kLA0KICAg
ICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0KICAgICAgTFBBUkFNIGxQYXJhbSwN
CiAgICAgIFNFTkRBU1lOQ1BST0MgbHBSZXN1bHRDYWxsQmFjaywNCiAgICAgIFVMT05HX1BUUiBk
d0RhdGEpOw0KDQoNCg0KDQojbGluZSAzODIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoN
CnR5cGVkZWYgc3RydWN0IHsNCiAgICBVSU5UICBjYlNpemU7DQogICAgSERFU0sgaGRlc2s7DQog
ICAgSFdORCAgaHduZDsNCiAgICBMVUlEICBsdWlkOw0KfSBCU01JTkZPLCAqUEJTTUlORk87DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KbG9uZw0KX19zdGRjYWxsDQpCcm9hZGNhc3RTeXN0ZW1N
ZXNzYWdlRXhBKA0KICAgICAgRFdPUkQgZmxhZ3MsDQogICAgICBMUERXT1JEIGxwSW5mbywNCiAg
ICAgIFVJTlQgTXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgIExQQVJBTSBsUGFyYW0s
DQogICAgICBQQlNNSU5GTyBwYnNtSW5mbyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmxvbmcN
Cl9fc3RkY2FsbA0KQnJvYWRjYXN0U3lzdGVtTWVzc2FnZUV4VygNCiAgICAgIERXT1JEIGZsYWdz
LA0KICAgICAgTFBEV09SRCBscEluZm8sDQogICAgICBVSU5UIE1zZywNCiAgICAgIFdQQVJBTSB3
UGFyYW0sDQogICAgICBMUEFSQU0gbFBhcmFtLA0KICAgICAgUEJTTUlORk8gcGJzbUluZm8pOw0K
DQoNCg0KDQojbGluZSAzODU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI2xpbmUgMzg1NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMzg1OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZh
bWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpsb25nDQpfX3N0ZGNhbGwNCkJyb2Fk
Y2FzdFN5c3RlbU1lc3NhZ2VBKA0KICAgICAgRFdPUkQgZmxhZ3MsDQogICAgICBMUERXT1JEIGxw
SW5mbywNCiAgICAgIFVJTlQgTXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgIExQQVJB
TSBsUGFyYW0pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpsb25nDQpfX3N0ZGNhbGwNCkJyb2Fk
Y2FzdFN5c3RlbU1lc3NhZ2VXKA0KICAgICAgRFdPUkQgZmxhZ3MsDQogICAgICBMUERXT1JEIGxw
SW5mbywNCiAgICAgIFVJTlQgTXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgIExQQVJB
TSBsUGFyYW0pOw0KDQoNCg0KDQojbGluZSAzODg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KI2xpbmUgMzkwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkyNiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5lIDM5MzAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KI2xpbmUgMzkzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQp0eXBlZGVmICBQVk9JRCAgICAg
ICAgICAgSERFVk5PVElGWTsNCnR5cGVkZWYgIEhERVZOT1RJRlkgICAgICpQSERFVk5PVElGWTsN
Cg0KDQoNCg0KDQojbGluZSAzOTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkhERVZOT1RJRlkNCl9fc3RkY2FsbA0KUmVnaXN0ZXJEZXZpY2VOb3Rp
ZmljYXRpb25BKA0KICAgICAgSEFORExFIGhSZWNpcGllbnQsDQogICAgICBMUFZPSUQgTm90aWZp
Y2F0aW9uRmlsdGVyLA0KICAgICAgRFdPUkQgRmxhZ3MpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpIREVWTk9USUZZDQpfX3N0ZGNhbGwNClJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uVygNCiAg
ICAgIEhBTkRMRSBoUmVjaXBpZW50LA0KICAgICAgTFBWT0lEIE5vdGlmaWNhdGlvbkZpbHRlciwN
CiAgICAgIERXT1JEIEZsYWdzKTsNCg0KDQoNCg0KI2xpbmUgMzk2OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClVucmVn
aXN0ZXJEZXZpY2VOb3RpZmljYXRpb24oDQogICAgICBIREVWTk9USUZZIEhhbmRsZQ0KICAgICk7
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgIFBWT0lEICAgICAgICAgICBIUE9XRVJOT1RJRlk7DQp0
eXBlZGVmICBIUE9XRVJOT1RJRlkgICAqUEhQT1dFUk5PVElGWTsNCg0KI2xpbmUgMzk4NiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIUE9XRVJOT1RJ
RlkNCl9fc3RkY2FsbA0KUmVnaXN0ZXJQb3dlclNldHRpbmdOb3RpZmljYXRpb24oDQogICAgIEhB
TkRMRSBoUmVjaXBpZW50LA0KICAgICBMUENHVUlEIFBvd2VyU2V0dGluZ0d1aWQsDQogICAgIERX
T1JEIEZsYWdzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNClVucmVnaXN0ZXJQb3dlclNldHRpbmdOb3RpZmljYXRpb24oDQogICAgIEhQT1dFUk5PVElG
WSBIYW5kbGUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhQT1dFUk5PVElGWQ0K
X19zdGRjYWxsDQpSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb24gKA0KICAgICBIQU5E
TEUgaFJlY2lwaWVudCwNCiAgICAgRFdPUkQgRmxhZ3MNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVW5yZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmlj
YXRpb24gKA0KICAgICBIUE9XRVJOT1RJRlkgSGFuZGxlDQogICAgKTsNCg0KDQojbGluZSA0MDIw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI2xpbmUgNDAyMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KI2xpbmUgNDAyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClBvc3RNZXNzYWdlQSgNCiAgICAgIEhXTkQgaFdu
ZCwNCiAgICAgIFVJTlQgTXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgIExQQVJBTSBs
UGFyYW0pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClBvc3RNZXNz
YWdlVygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIFVJTlQgTXNnLA0KICAgICAgV1BBUkFNIHdQ
YXJhbSwNCiAgICAgIExQQVJBTSBsUGFyYW0pOw0KDQoNCg0KDQojbGluZSA0MDQ5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KUG9zdFRocmVhZE1lc3NhZ2VBKA0KICAgICAgRFdPUkQgaWRUaHJlYWQsDQogICAgICBVSU5U
IE1zZywNCiAgICAgIFdQQVJBTSB3UGFyYW0sDQogICAgICBMUEFSQU0gbFBhcmFtKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpQb3N0VGhyZWFkTWVzc2FnZVcoDQog
ICAgICBEV09SRCBpZFRocmVhZCwNCiAgICAgIFVJTlQgTXNnLA0KICAgICAgV1BBUkFNIHdQYXJh
bSwNCiAgICAgIExQQVJBTSBsUGFyYW0pOw0KDQoNCg0KDQojbGluZSA0MDcxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQojbGluZSA0MDczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQwODQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDA5MyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQXR0YWNoVGhyZWFkSW5wdXQoDQogICAgICBE
V09SRCBpZEF0dGFjaCwNCiAgICAgIERXT1JEIGlkQXR0YWNoVG8sDQogICAgICBCT09MIGZBdHRh
Y2gpOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZXBseU1l
c3NhZ2UoDQogICAgICBMUkVTVUxUIGxSZXN1bHQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KV2FpdE1lc3NhZ2UoDQogICAgdm9pZCk7DQoNCg0KI2xpbmUgNDEy
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRX
T1JEDQpfX3N0ZGNhbGwNCldhaXRGb3JJbnB1dElkbGUoDQogICAgICBIQU5ETEUgaFByb2Nlc3Ms
DQogICAgICBEV09SRCBkd01pbGxpc2Vjb25kcyk7DQoNCiNsaW5lIDQxMzAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCg0KTFJF
U1VMVA0KX19zdGRjYWxsDQoNCg0KDQojbGluZSA0MTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KRGVmV2luZG93UHJvY0EoDQogICAgICBIV05EIGhXbmQsDQogICAgICBVSU5UIE1zZywNCiAg
ICAgIFdQQVJBTSB3UGFyYW0sDQogICAgICBMUEFSQU0gbFBhcmFtKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KDQpMUkVTVUxUDQpfX3N0ZGNhbGwNCg0KDQoNCiNsaW5lIDQxNTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQpEZWZXaW5kb3dQcm9jVygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAg
IFVJTlQgTXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgIExQQVJBTSBsUGFyYW0pOw0K
DQoNCg0KDQojbGluZSA0MTY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KUG9zdFF1aXRNZXNzYWdlKA0KICAgICAgaW50
IG5FeGl0Q29kZSk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxSRVNVTFQNCl9fc3Rk
Y2FsbA0KQ2FsbFdpbmRvd1Byb2NBKA0KICAgICAgV05EUFJPQyBscFByZXZXbmRGdW5jLA0KICAg
ICAgSFdORCBoV25kLA0KICAgICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0KICAg
ICAgTFBBUkFNIGxQYXJhbSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxSRVNVTFQNCl9fc3Rk
Y2FsbA0KQ2FsbFdpbmRvd1Byb2NXKA0KICAgICAgV05EUFJPQyBscFByZXZXbmRGdW5jLA0KICAg
ICAgSFdORCBoV25kLA0KICAgICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0KICAg
ICAgTFBBUkFNIGxQYXJhbSk7DQoNCg0KDQoNCiNsaW5lIDQxOTggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA0MjI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA0MjI4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KSW5TZW5kTWVzc2FnZSgNCiAgICB2b2lkKTsNCg0KI2xpbmUgNDI0MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2Fs
bA0KSW5TZW5kTWVzc2FnZUV4KA0KICAgICAgTFBWT0lEIGxwUmVzZXJ2ZWQpOw0KDQojbGluZSA0
MjU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDQyNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQN
Cl9fc3RkY2FsbA0KR2V0RG91YmxlQ2xpY2tUaW1lKA0KICAgIHZvaWQpOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0RG91YmxlQ2xpY2tUaW1lKA0KICAgICAg
VUlOVCk7DQoNCiNsaW5lIDQyODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkFUT00NCl9fc3RkY2FsbA0KUmVnaXN0ZXJDbGFz
c0EoDQogICAgICBjb25zdCBXTkRDTEFTU0EgKmxwV25kQ2xhc3MpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpBVE9NDQpfX3N0ZGNhbGwNClJlZ2lzdGVyQ2xhc3NXKA0KICAgICAgY29uc3QgV05E
Q0xBU1NXICpscFduZENsYXNzKTsNCg0KDQoNCg0KI2xpbmUgNDMwMyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClVucmVn
aXN0ZXJDbGFzc0EoDQogICAgICBMUENTVFIgbHBDbGFzc05hbWUsDQogICAgICBISU5TVEFOQ0Ug
aEluc3RhbmNlKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpVbnJl
Z2lzdGVyQ2xhc3NXKA0KICAgICAgTFBDV1NUUiBscENsYXNzTmFtZSwNCiAgICAgIEhJTlNUQU5D
RSBoSW5zdGFuY2UpOw0KDQoNCg0KDQojbGluZSA0MzIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQojbGluZSA0MzIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQogDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q2xhc3NJbmZvQSgNCiAgICAgIEhJTlNUQU5D
RSBoSW5zdGFuY2UsDQogICAgICBMUENTVFIgbHBDbGFzc05hbWUsDQogICAgICBMUFdORENMQVNT
QSBscFduZENsYXNzKTsNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpHZXRDbGFzc0luZm9XKA0KICAgICAgSElOU1RBTkNFIGhJbnN0YW5jZSwNCiAgICAgIExQQ1dT
VFIgbHBDbGFzc05hbWUsDQogICAgICBMUFdORENMQVNTVyBscFduZENsYXNzKTsNCg0KDQoNCg0K
I2xpbmUgNDM0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgNDM1MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpBVE9NDQpfX3N0ZGNhbGwNClJlZ2lzdGVyQ2xhc3NFeEEoDQogICAgICBjb25zdCBXTkRDTEFT
U0VYQSAqKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQVRPTQ0KX19zdGRjYWxsDQpSZWdpc3Rl
ckNsYXNzRXhXKA0KICAgICAgY29uc3QgV05EQ0xBU1NFWFcgKik7DQoNCg0KDQoNCiNsaW5lIDQz
NzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDQzNzQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZh
bWlseQ0KDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRD
bGFzc0luZm9FeEEoDQogICAgICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgTFBDU1RSIGxw
c3pDbGFzcywNCiAgICAgIExQV05EQ0xBU1NFWEEgbHB3Y3gpOw0KIA0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldENsYXNzSW5mb0V4VygNCiAgICAgIEhJTlNUQU5D
RSBoSW5zdGFuY2UsDQogICAgICBMUENXU1RSIGxwc3pDbGFzcywNCiAgICAgIExQV05EQ0xBU1NF
WFcgbHB3Y3gpOw0KDQoNCg0KDQojbGluZSA0NDAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
DQojbGluZSA0NDAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA0NDA0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCnR5cGVk
ZWYgQk9PTEVBTiAoX19zdGRjYWxsICogUFJFR0lTVEVSQ0xBU1NOQU1FVykoTFBDV1NUUik7DQoj
bGluZSA0NDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkhXTkQNCl9fc3RkY2FsbA0KQ3JlYXRlV2luZG93RXhBKA0KICAgICAgRFdPUkQgZHdFeFN0
eWxlLA0KICAgICAgTFBDU1RSIGxwQ2xhc3NOYW1lLA0KICAgICAgTFBDU1RSIGxwV2luZG93TmFt
ZSwNCiAgICAgIERXT1JEIGR3U3R5bGUsDQogICAgICBpbnQgWCwNCiAgICAgIGludCBZLA0KICAg
ICAgaW50IG5XaWR0aCwNCiAgICAgIGludCBuSGVpZ2h0LA0KICAgICAgSFdORCBoV25kUGFyZW50
LA0KICAgICAgSE1FTlUgaE1lbnUsDQogICAgICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAg
TFBWT0lEIGxwUGFyYW0pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNhbGwN
CkNyZWF0ZVdpbmRvd0V4VygNCiAgICAgIERXT1JEIGR3RXhTdHlsZSwNCiAgICAgIExQQ1dTVFIg
bHBDbGFzc05hbWUsDQogICAgICBMUENXU1RSIGxwV2luZG93TmFtZSwNCiAgICAgIERXT1JEIGR3
U3R5bGUsDQogICAgICBpbnQgWCwNCiAgICAgIGludCBZLA0KICAgICAgaW50IG5XaWR0aCwNCiAg
ICAgIGludCBuSGVpZ2h0LA0KICAgICAgSFdORCBoV25kUGFyZW50LA0KICAgICAgSE1FTlUgaE1l
bnUsDQogICAgICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgTFBWT0lEIGxwUGFyYW0pOw0K
DQoNCg0KDQojbGluZSA0NDU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA0NDU5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNDQ3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpJc1dpbmRvdygNCiAgICAgIEhXTkQgaFduZCk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzTWVudSgNCiAgICAgIEhNRU5VIGhN
ZW51KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzQ2hpbGQo
DQogICAgICBIV05EIGhXbmRQYXJlbnQsDQogICAgICBIV05EIGhXbmQpOw0KDQojbGluZSA0NTAw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KRGVzdHJveVdpbmRvdygNCiAgICAgIEhXTkQgaFduZCk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTaG93V2luZG93KA0KICAgICAg
SFdORCBoV25kLA0KICAgICAgaW50IG5DbWRTaG93KTsNCg0KI2xpbmUgNDUxOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
QW5pbWF0ZVdpbmRvdygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIERXT1JEIGR3VGltZSwNCiAg
ICAgIERXT1JEIGR3RmxhZ3MpOw0KI2xpbmUgNDUzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KI2xpbmUgNDUzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClVwZGF0ZUxheWVyZWRXaW5kb3coDQogICAgICBI
V05EIGhXbmQsDQogICAgICBIREMgaGRjRHN0LA0KICAgICAgUE9JTlQqIHBwdERzdCwNCiAgICAg
IFNJWkUqIHBzaXplLA0KICAgICAgSERDIGhkY1NyYywNCiAgICAgIFBPSU5UKiBwcHRTcmMsDQog
ICAgICBDT0xPUlJFRiBjcktleSwNCiAgICAgIEJMRU5ERlVOQ1RJT04qIHBibGVuZCwNCiAgICAg
IERXT1JEIGR3RmxhZ3MpOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdVUERBVEVMQVlFUkVE
V0lORE9XSU5GTw0Kew0KICAgIERXT1JEIGNiU2l6ZTsNCiAgICBIREMgaGRjRHN0Ow0KICAgIGNv
bnN0IFBPSU5UKiBwcHREc3Q7DQogICAgY29uc3QgU0laRSogcHNpemU7DQogICAgSERDIGhkY1Ny
YzsNCiAgICBjb25zdCBQT0lOVCogcHB0U3JjOw0KICAgIENPTE9SUkVGIGNyS2V5Ow0KICAgIGNv
bnN0IEJMRU5ERlVOQ1RJT04qIHBibGVuZDsNCiAgICBEV09SRCBkd0ZsYWdzOw0KICAgIGNvbnN0
IFJFQ1QqIHByY0RpcnR5Ow0KfSBVUERBVEVMQVlFUkVEV0lORE9XSU5GTywgKlBVUERBVEVMQVlF
UkVEV0lORE9XSU5GTzsNCg0KDQoNCg0KI2xpbmUgNDU3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpVcGRhdGVMYXllcmVk
V2luZG93SW5kaXJlY3QoDQogICAgICBIV05EIGhXbmQsDQogICAgICBjb25zdCBVUERBVEVMQVlF
UkVEV0lORE9XSU5GTyogcFVMV0luZm8pOw0KDQojbGluZSA0NTg2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgNDU4OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldExheWVyZWRXaW5kb3dBdHRyaWJ1
dGVzKA0KICAgICAgSFdORCBod25kLA0KICAgICAgQ09MT1JSRUYqIHBjcktleSwNCiAgICAgIEJZ
VEUqIHBiQWxwaGEsDQogICAgICBEV09SRCogcGR3RmxhZ3MpOw0KDQoNCg0KDQoNCiNsaW5lIDQ2
MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClByaW50V2luZG93KA0KICAgICAgSFdORCBod25kLA0KICAgICAgSERD
IGhkY0JsdCwNCiAgICAgIFVJTlQgbkZsYWdzKTsNCg0KI2xpbmUgNDYyMCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDQ2MjMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldExheWVyZWRXaW5kb3dBdHRyaWJ1
dGVzKA0KICAgICAgSFdORCBod25kLA0KICAgICAgQ09MT1JSRUYgY3JLZXksDQogICAgICBCWVRF
IGJBbHBoYSwNCiAgICAgIERXT1JEIGR3RmxhZ3MpOw0KDQojbGluZSA0NjM3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA0NjUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpTaG93V2luZG93QXN5bmMoDQogICAgICAgSFdORCBoV25kLA0KICAgICAgIGludCBuQ21k
U2hvdyk7DQojbGluZSA0NjY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRmxhc2hXaW5kb3coDQogICAgICAgSFdORCBo
V25kLA0KICAgICAgIEJPT0wgYkludmVydCk7DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIFVJ
TlQgIGNiU2l6ZTsNCiAgICBIV05EICBod25kOw0KICAgIERXT1JEIGR3RmxhZ3M7DQogICAgVUlO
VCAgdUNvdW50Ow0KICAgIERXT1JEIGR3VGltZW91dDsNCn0gRkxBU0hXSU5GTywgKlBGTEFTSFdJ
TkZPOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRmxhc2hXaW5k
b3dFeCgNCiAgICAgIFBGTEFTSFdJTkZPIHBmd2kpOw0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ2
OTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpTaG93T3duZWRQb3B1cHMoDQogICAgICAgSFdORCBoV25kLA0KICAgICAg
IEJPT0wgZlNob3cpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
T3Blbkljb24oDQogICAgICAgSFdORCBoV25kKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkNsb3NlV2luZG93KA0KICAgICAgIEhXTkQgaFduZCk7DQoNCiNsaW5l
IDQ3MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpNb3ZlV2luZG93KA0KICAgICAgSFdORCBoV25kLA0KICAgICAgaW50IFgs
DQogICAgICBpbnQgWSwNCiAgICAgIGludCBuV2lkdGgsDQogICAgICBpbnQgbkhlaWdodCwNCiAg
ICAgIEJPT0wgYlJlcGFpbnQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KU2V0V2luZG93UG9zKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgSFdORCBoV25kSW5z
ZXJ0QWZ0ZXIsDQogICAgICBpbnQgWCwNCiAgICAgIGludCBZLA0KICAgICAgaW50IGN4LA0KICAg
ICAgaW50IGN5LA0KICAgICAgVUlOVCB1RmxhZ3MpOw0KDQojbGluZSA0NzQ1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0
V2luZG93UGxhY2VtZW50KA0KICAgICAgSFdORCBoV25kLA0KICAgICAgV0lORE9XUExBQ0VNRU5U
ICpscHduZHBsKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNl
dFdpbmRvd1BsYWNlbWVudCgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGNvbnN0IFdJTkRPV1BM
QUNFTUVOVCAqbHB3bmRwbCk7DQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpHZXRXaW5kb3dEaXNwbGF5QWZmaW5pdHkoDQogICAgICBIV05EIGhX
bmQsDQogICAgICBEV09SRCogcGR3QWZmaW5pdHkpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KU2V0V2luZG93RGlzcGxheUFmZmluaXR5KA0KICAgICAgSFdORCBo
V25kLA0KICAgICAgRFdPUkQgZHdBZmZpbml0eSk7DQoNCiNsaW5lIDQ3ODUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCiNsaW5lIDQ3ODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkhEV1ANCl9fc3RkY2FsbA0KQmVnaW5EZWZlcldpbmRvd1Bv
cygNCiAgICAgIGludCBuTnVtV2luZG93cyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSERX
UA0KX19zdGRjYWxsDQpEZWZlcldpbmRvd1BvcygNCiAgICAgIEhEV1AgaFdpblBvc0luZm8sDQog
ICAgICBIV05EIGhXbmQsDQogICAgICBIV05EIGhXbmRJbnNlcnRBZnRlciwNCiAgICAgIGludCB4
LA0KICAgICAgaW50IHksDQogICAgICBpbnQgY3gsDQogICAgICBpbnQgY3ksDQogICAgICBVSU5U
IHVGbGFncyk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVu
ZERlZmVyV2luZG93UG9zKA0KICAgICAgSERXUCBoV2luUG9zSW5mbyk7DQoNCiNsaW5lIDQ4MjEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA0ODI0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJc1dpbmRvd1Zp
c2libGUoDQogICAgICBIV05EIGhXbmQpOw0KDQojbGluZSA0ODM1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNJY29uaWMo
DQogICAgICBIV05EIGhXbmQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KQW55UG9wdXAoDQogICAgdm9pZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpCcmluZ1dpbmRvd1RvVG9wKA0KICAgICAgSFdORCBoV25kKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzWm9vbWVkKA0KICAgICAgSFdO
RCBoV25kKTsNCg0KI2xpbmUgNDg2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDQ4ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMi5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OjQxMDMpDQoNCiNwcmFnbWEgcGFjayhwdXNoLDIpDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccHNocGFjazIuaCINCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNr
Mi5oIg0KI2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazIuaCINCiNsaW5lIDQ5MDQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZh
bWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBE
V09SRCBzdHlsZTsNCiAgICBEV09SRCBkd0V4dGVuZGVkU3R5bGU7DQogICAgV09SRCBjZGl0Ow0K
ICAgIHNob3J0IHg7DQogICAgc2hvcnQgeTsNCiAgICBzaG9ydCBjeDsNCiAgICBzaG9ydCBjeTsN
Cn0gRExHVEVNUExBVEU7DQoNCiNsaW5lIDQ5MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5
cGVkZWYgRExHVEVNUExBVEUgKkxQRExHVEVNUExBVEVBOw0KdHlwZWRlZiBETEdURU1QTEFURSAq
TFBETEdURU1QTEFURVc7DQoNCnR5cGVkZWYgTFBETEdURU1QTEFURVcgTFBETEdURU1QTEFURTsN
Cg0KDQojbGluZSA0OTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA0OTM2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KdHlwZWRlZiBjb25z
dCBETEdURU1QTEFURSAqTFBDRExHVEVNUExBVEVBOw0KdHlwZWRlZiBjb25zdCBETEdURU1QTEFU
RSAqTFBDRExHVEVNUExBVEVXOw0KDQp0eXBlZGVmIExQQ0RMR1RFTVBMQVRFVyBMUENETEdURU1Q
TEFURTsNCg0KDQojbGluZSA0OTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA0
OTUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAg
ICBEV09SRCBzdHlsZTsNCiAgICBEV09SRCBkd0V4dGVuZGVkU3R5bGU7DQogICAgc2hvcnQgeDsN
CiAgICBzaG9ydCB5Ow0KICAgIHNob3J0IGN4Ow0KICAgIHNob3J0IGN5Ow0KICAgIFdPUkQgaWQ7
DQp9IERMR0lURU1URU1QTEFURTsNCnR5cGVkZWYgRExHSVRFTVRFTVBMQVRFICpQRExHSVRFTVRF
TVBMQVRFQTsNCnR5cGVkZWYgRExHSVRFTVRFTVBMQVRFICpQRExHSVRFTVRFTVBMQVRFVzsNCg0K
dHlwZWRlZiBQRExHSVRFTVRFTVBMQVRFVyBQRExHSVRFTVRFTVBMQVRFOw0KDQoNCiNsaW5lIDQ5
NzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQp0eXBlZGVmIERMR0lURU1URU1QTEFURSAqTFBE
TEdJVEVNVEVNUExBVEVBOw0KdHlwZWRlZiBETEdJVEVNVEVNUExBVEUgKkxQRExHSVRFTVRFTVBM
QVRFVzsNCg0KdHlwZWRlZiBMUERMR0lURU1URU1QTEFURVcgTFBETEdJVEVNVEVNUExBVEU7DQoN
Cg0KI2xpbmUgNDk4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgNDk4NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KI2xpbmUgMSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3By
YWdtYSBwYWNrKHBvcCkNCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgi
DQoNCg0KI2xpbmUgMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgNDk4OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkhXTkQNCl9fc3RkY2FsbA0KQ3JlYXRlRGlhbG9nUGFyYW1BKA0KICAgICAgSElO
U1RBTkNFIGhJbnN0YW5jZSwNCiAgICAgIExQQ1NUUiBscFRlbXBsYXRlTmFtZSwNCiAgICAgIEhX
TkQgaFduZFBhcmVudCwNCiAgICAgIERMR1BST0MgbHBEaWFsb2dGdW5jLA0KICAgICAgTFBBUkFN
IGR3SW5pdFBhcmFtKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxsDQpD
cmVhdGVEaWFsb2dQYXJhbVcoDQogICAgICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgTFBD
V1NUUiBscFRlbXBsYXRlTmFtZSwNCiAgICAgIEhXTkQgaFduZFBhcmVudCwNCiAgICAgIERMR1BS
T0MgbHBEaWFsb2dGdW5jLA0KICAgICAgTFBBUkFNIGR3SW5pdFBhcmFtKTsNCg0KDQoNCg0KI2xp
bmUgNTAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpIV05EDQpfX3N0ZGNhbGwNCkNyZWF0ZURpYWxvZ0luZGlyZWN0UGFyYW1BKA0KICAgICAgSElO
U1RBTkNFIGhJbnN0YW5jZSwNCiAgICAgIExQQ0RMR1RFTVBMQVRFQSBscFRlbXBsYXRlLA0KICAg
ICAgSFdORCBoV25kUGFyZW50LA0KICAgICAgRExHUFJPQyBscERpYWxvZ0Z1bmMsDQogICAgICBM
UEFSQU0gZHdJbml0UGFyYW0pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNh
bGwNCkNyZWF0ZURpYWxvZ0luZGlyZWN0UGFyYW1XKA0KICAgICAgSElOU1RBTkNFIGhJbnN0YW5j
ZSwNCiAgICAgIExQQ0RMR1RFTVBMQVRFVyBscFRlbXBsYXRlLA0KICAgICAgSFdORCBoV25kUGFy
ZW50LA0KICAgICAgRExHUFJPQyBscERpYWxvZ0Z1bmMsDQogICAgICBMUEFSQU0gZHdJbml0UGFy
YW0pOw0KDQoNCg0KDQojbGluZSA1MDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNTA0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDUwNTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KSU5UX1BUUg0KX19zdGRjYWxsDQpEaWFsb2dCb3hQYXJhbUEoDQogICAg
ICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgTFBDU1RSIGxwVGVtcGxhdGVOYW1lLA0KICAg
ICAgSFdORCBoV25kUGFyZW50LA0KICAgICAgRExHUFJPQyBscERpYWxvZ0Z1bmMsDQogICAgICBM
UEFSQU0gZHdJbml0UGFyYW0pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpJTlRfUFRSDQpfX3N0
ZGNhbGwNCkRpYWxvZ0JveFBhcmFtVygNCiAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQogICAg
ICBMUENXU1RSIGxwVGVtcGxhdGVOYW1lLA0KICAgICAgSFdORCBoV25kUGFyZW50LA0KICAgICAg
RExHUFJPQyBscERpYWxvZ0Z1bmMsDQogICAgICBMUEFSQU0gZHdJbml0UGFyYW0pOw0KDQoNCg0K
DQojbGluZSA1MDgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCklOVF9QVFINCl9fc3RkY2FsbA0KRGlhbG9nQm94SW5kaXJlY3RQYXJhbUEoDQogICAg
ICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgTFBDRExHVEVNUExBVEVBIGhEaWFsb2dUZW1w
bGF0ZSwNCiAgICAgIEhXTkQgaFduZFBhcmVudCwNCiAgICAgIERMR1BST0MgbHBEaWFsb2dGdW5j
LA0KICAgICAgTFBBUkFNIGR3SW5pdFBhcmFtKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSU5U
X1BUUg0KX19zdGRjYWxsDQpEaWFsb2dCb3hJbmRpcmVjdFBhcmFtVygNCiAgICAgIEhJTlNUQU5D
RSBoSW5zdGFuY2UsDQogICAgICBMUENETEdURU1QTEFURVcgaERpYWxvZ1RlbXBsYXRlLA0KICAg
ICAgSFdORCBoV25kUGFyZW50LA0KICAgICAgRExHUFJPQyBscERpYWxvZ0Z1bmMsDQogICAgICBM
UEFSQU0gZHdJbml0UGFyYW0pOw0KDQoNCg0KDQojbGluZSA1MTA3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTExNyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUxMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbmREaWFsb2co
DQogICAgICBIV05EIGhEbGcsDQogICAgICBJTlRfUFRSIG5SZXN1bHQpOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkhXTkQNCl9fc3RkY2FsbA0KR2V0RGxnSXRlbSgNCiAgICAgIEhXTkQgaERs
ZywNCiAgICAgIGludCBuSUREbGdJdGVtKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNClNldERsZ0l0ZW1JbnQoDQogICAgICBIV05EIGhEbGcsDQogICAgICBpbnQg
bklERGxnSXRlbSwNCiAgICAgIFVJTlQgdVZhbHVlLA0KICAgICAgQk9PTCBiU2lnbmVkKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldERsZ0l0ZW1JbnQoDQog
ICAgICBIV05EIGhEbGcsDQogICAgICBpbnQgbklERGxnSXRlbSwNCiAgICAgIEJPT0wgKmxwVHJh
bnNsYXRlZCwNCiAgICAgIEJPT0wgYlNpZ25lZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpTZXREbGdJdGVtVGV4dEEoDQogICAgICBIV05EIGhEbGcsDQogICAg
ICBpbnQgbklERGxnSXRlbSwNCiAgICAgIExQQ1NUUiBscFN0cmluZyk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0RGxnSXRlbVRleHRXKA0KICAgICAgSFdORCBo
RGxnLA0KICAgICAgaW50IG5JRERsZ0l0ZW0sDQogICAgICBMUENXU1RSIGxwU3RyaW5nKTsNCg0K
DQoNCg0KI2xpbmUgNTE3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KIA0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldERsZ0l0ZW1UZXh0QSgNCiAgICAgIEhX
TkQgaERsZywNCiAgICAgIGludCBuSUREbGdJdGVtLA0KICAgICAgTFBTVFIgbHBTdHJpbmcsDQog
ICAgICBpbnQgY2NoTWF4KTsNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRj
YWxsDQpHZXREbGdJdGVtVGV4dFcoDQogICAgICBIV05EIGhEbGcsDQogICAgICBpbnQgbklERGxn
SXRlbSwNCiAgICAgIExQV1NUUiBscFN0cmluZywNCiAgICAgIGludCBjY2hNYXgpOw0KDQoNCg0K
DQojbGluZSA1MjAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hlY2tEbGdCdXR0b24oDQogICAgICBIV05EIGhEbGcs
DQogICAgICBpbnQgbklEQnV0dG9uLA0KICAgICAgVUlOVCB1Q2hlY2spOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hlY2tSYWRpb0J1dHRvbigNCiAgICAgIEhX
TkQgaERsZywNCiAgICAgIGludCBuSURGaXJzdEJ1dHRvbiwNCiAgICAgIGludCBuSURMYXN0QnV0
dG9uLA0KICAgICAgaW50IG5JRENoZWNrQnV0dG9uKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpVSU5UDQpfX3N0ZGNhbGwNCklzRGxnQnV0dG9uQ2hlY2tlZCgNCiAgICAgIEhXTkQgaERsZywN
CiAgICAgIGludCBuSURCdXR0b24pOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxSRVNVTFQN
Cl9fc3RkY2FsbA0KU2VuZERsZ0l0ZW1NZXNzYWdlQSgNCiAgICAgIEhXTkQgaERsZywNCiAgICAg
IGludCBuSUREbGdJdGVtLA0KICAgICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0K
ICAgICAgTFBBUkFNIGxQYXJhbSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxSRVNVTFQNCl9f
c3RkY2FsbA0KU2VuZERsZ0l0ZW1NZXNzYWdlVygNCiAgICAgIEhXTkQgaERsZywNCiAgICAgIGlu
dCBuSUREbGdJdGVtLA0KICAgICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0KICAg
ICAgTFBBUkFNIGxQYXJhbSk7DQoNCg0KDQoNCiNsaW5lIDUyNTEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxsDQpHZXROZXh0
RGxnR3JvdXBJdGVtKA0KICAgICAgSFdORCBoRGxnLA0KICAgICAgSFdORCBoQ3RsLA0KICAgICAg
Qk9PTCBiUHJldmlvdXMpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhXTkQNCl9fc3RkY2Fs
bA0KR2V0TmV4dERsZ1RhYkl0ZW0oDQogICAgICBIV05EIGhEbGcsDQogICAgICBIV05EIGhDdGws
DQogICAgICBCT09MIGJQcmV2aW91cyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpf
X3N0ZGNhbGwNCkdldERsZ0N0cmxJRCgNCiAgICAgIEhXTkQgaFduZCk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KbG9uZw0KX19zdGRjYWxsDQpHZXREaWFsb2dCYXNlVW5pdHModm9pZCk7DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQoNCkxSRVNVTFQNCl9fc3RkY2FsbA0KDQoNCg0KI2xp
bmUgNTI4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCkRlZkRsZ1Byb2NBKA0KICAgICAgSFdO
RCBoRGxnLA0KICAgICAgVUlOVCBNc2csDQogICAgICBXUEFSQU0gd1BhcmFtLA0KICAgICAgTFBB
UkFNIGxQYXJhbSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCg0KTFJFU1VMVA0KX19zdGRjYWxs
DQoNCg0KDQojbGluZSA1MzAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KRGVmRGxnUHJvY1co
DQogICAgICBIV05EIGhEbGcsDQogICAgICBVSU5UIE1zZywNCiAgICAgIFdQQVJBTSB3UGFyYW0s
DQogICAgICBMUEFSQU0gbFBhcmFtKTsNCg0KDQoNCg0KI2xpbmUgNTMxMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KDQp0eXBlZGVmIGVudW0gRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9C
RUhBVklPUlMgew0KICAgICBEQ0RDX0RFRkFVTFQgICAgICAgICAgICAgICAgICA9IDB4MDAwMCwN
CiAgICAgRENEQ19ESVNBQkxFX0ZPTlRfVVBEQVRFICAgICAgPSAweDAwMDEsDQogICAgIERDRENf
RElTQUJMRV9SRUxBWU9VVCAgICAgICAgID0gMHgwMDAyLA0KfSBESUFMT0dfQ09OVFJPTF9EUElf
Q0hBTkdFX0JFSEFWSU9SUzsNCg0KDQpleHRlcm4gIkMrKyIgeyBpbmxpbmUgY29uc3RleHByIERJ
QUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTIG9wZXJhdG9yIHwgKERJQUxPR19DT05U
Uk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTIGEsIERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVI
QVZJT1JTIGIpIHRocm93KCkgeyByZXR1cm4gRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhB
VklPUlMoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8RElBTE9HX0NPTlRST0xfRFBJX0NIQU5H
RV9CRUhBVklPUlM+Ojp0eXBlKWEpIHwgKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8RElBTE9H
X0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgRElBTE9H
X0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlMgJm9wZXJhdG9yIHw9IChESUFMT0dfQ09OVFJP
TF9EUElfQ0hBTkdFX0JFSEFWSU9SUyAmYSwgRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhB
VklPUlMgYikgdGhyb3coKSB7IHJldHVybiAoRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhB
VklPUlMgJikoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8RElBTE9HX0NPTlRST0xfRFBJX0NI
QU5HRV9CRUhBVklPUlM+Ojp0eXBlICYpYSkgfD0gKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8
RElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWIpKTsgfSBpbmxpbmUg
Y29uc3RleHByIERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTIG9wZXJhdG9yICYg
KERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTIGEsIERJQUxPR19DT05UUk9MX0RQ
SV9DSEFOR0VfQkVIQVZJT1JTIGIpIHRocm93KCkgeyByZXR1cm4gRElBTE9HX0NPTlRST0xfRFBJ
X0NIQU5HRV9CRUhBVklPUlMoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8RElBTE9HX0NPTlRS
T0xfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWEpICYgKChfRU5VTV9GTEFHX1NJWkVEX0lO
VEVHRVI8RElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWIpKTsgfSBp
bmxpbmUgRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlMgJm9wZXJhdG9yICY9IChE
SUFMT0dfQ09OVFJPTF9EUElfQ0hBTkdFX0JFSEFWSU9SUyAmYSwgRElBTE9HX0NPTlRST0xfRFBJ
X0NIQU5HRV9CRUhBVklPUlMgYikgdGhyb3coKSB7IHJldHVybiAoRElBTE9HX0NPTlRST0xfRFBJ
X0NIQU5HRV9CRUhBVklPUlMgJikoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8RElBTE9HX0NP
TlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlICYpYSkgJj0gKChfRU5VTV9GTEFHX1NJ
WkVEX0lOVEVHRVI8RElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWIp
KTsgfSBpbmxpbmUgY29uc3RleHByIERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JT
IG9wZXJhdG9yIH4gKERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTIGEpIHRocm93
KCkgeyByZXR1cm4gRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlMofigoX0VOVU1f
RkxBR19TSVpFRF9JTlRFR0VSPERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTPjo6
dHlwZSlhKSk7IH0gaW5saW5lIGNvbnN0ZXhwciBESUFMT0dfQ09OVFJPTF9EUElfQ0hBTkdFX0JF
SEFWSU9SUyBvcGVyYXRvciBeIChESUFMT0dfQ09OVFJPTF9EUElfQ0hBTkdFX0JFSEFWSU9SUyBh
LCBESUFMT0dfQ09OVFJPTF9EUElfQ0hBTkdFX0JFSEFWSU9SUyBiKSB0aHJvdygpIHsgcmV0dXJu
IERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTKCgoX0VOVU1fRkxBR19TSVpFRF9J
TlRFR0VSPERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTPjo6dHlwZSlhKSBeICgo
X0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJ
T1JTPjo6dHlwZSliKSk7IH0gaW5saW5lIERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJ
T1JTICZvcGVyYXRvciBePSAoRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9CRUhBVklPUlMgJmEs
IERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTIGIpIHRocm93KCkgeyByZXR1cm4g
KERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTICYpKCgoX0VOVU1fRkxBR19TSVpF
RF9JTlRFR0VSPERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTPjo6dHlwZSAmKWEp
IF49ICgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0Vf
QkVIQVZJT1JTPjo6dHlwZSliKSk7IH0gfTsNCiNsaW5lIDUzMjIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCkJPT0wNCl9fc3RkY2FsbA0KU2V0RGlhbG9nQ29udHJvbERwaUNoYW5nZUJlaGF2
aW9yKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgRElBTE9HX0NPTlRST0xfRFBJX0NIQU5HRV9C
RUhBVklPUlMgbWFzaywNCiAgICAgIERJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JT
IHZhbHVlcyk7DQoNCkRJQUxPR19DT05UUk9MX0RQSV9DSEFOR0VfQkVIQVZJT1JTDQpfX3N0ZGNh
bGwNCkdldERpYWxvZ0NvbnRyb2xEcGlDaGFuZ2VCZWhhdmlvcigNCiAgICAgIEhXTkQgaFduZCk7
DQoNCnR5cGVkZWYgZW51bSBESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMgew0KICAgIEREQ19E
RUZBVUxUICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDAsDQogICAgRERDX0RJU0FCTEVfQUxM
ICAgICAgICAgICAgICAgICA9IDB4MDAwMSwNCiAgICBERENfRElTQUJMRV9SRVNJWkUgICAgICAg
ICAgICAgID0gMHgwMDAyLA0KICAgIEREQ19ESVNBQkxFX0NPTlRST0xfUkVMQVlPVVQgICAgPSAw
eDAwMDQsDQp9IERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUzsNCg0KDQpleHRlcm4gIkMrKyIg
eyBpbmxpbmUgY29uc3RleHByIERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUyBvcGVyYXRvciB8
IChESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMgYSwgRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJ
T1JTIGIpIHRocm93KCkgeyByZXR1cm4gRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTKCgoX0VO
VU1fRkxBR19TSVpFRF9JTlRFR0VSPERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUz46OnR5cGUp
YSkgfCAoKF9FTlVNX0ZMQUdfU0laRURfSU5URUdFUjxESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklP
UlM+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTICZvcGVy
YXRvciB8PSAoRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTICZhLCBESUFMT0dfRFBJX0NIQU5H
RV9CRUhBVklPUlMgYikgdGhyb3coKSB7IHJldHVybiAoRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJ
T1JTICYpKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPERJQUxPR19EUElfQ0hBTkdFX0JFSEFW
SU9SUz46OnR5cGUgJilhKSB8PSAoKF9FTlVNX0ZMQUdfU0laRURfSU5URUdFUjxESUFMT0dfRFBJ
X0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgY29uc3RleHByIERJQUxPR19E
UElfQ0hBTkdFX0JFSEFWSU9SUyBvcGVyYXRvciAmIChESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklP
UlMgYSwgRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTIGIpIHRocm93KCkgeyByZXR1cm4gRElB
TE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPERJQUxP
R19EUElfQ0hBTkdFX0JFSEFWSU9SUz46OnR5cGUpYSkgJiAoKF9FTlVNX0ZMQUdfU0laRURfSU5U
RUdFUjxESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWIpKTsgfSBpbmxpbmUgRElB
TE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTICZvcGVyYXRvciAmPSAoRElBTE9HX0RQSV9DSEFOR0Vf
QkVIQVZJT1JTICZhLCBESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMgYikgdGhyb3coKSB7IHJl
dHVybiAoRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTICYpKCgoX0VOVU1fRkxBR19TSVpFRF9J
TlRFR0VSPERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUz46OnR5cGUgJilhKSAmPSAoKF9FTlVN
X0ZMQUdfU0laRURfSU5URUdFUjxESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlM+Ojp0eXBlKWIp
KTsgfSBpbmxpbmUgY29uc3RleHByIERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUyBvcGVyYXRv
ciB+IChESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMgYSkgdGhyb3coKSB7IHJldHVybiBESUFM
T0dfRFBJX0NIQU5HRV9CRUhBVklPUlMofigoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPERJQUxP
R19EUElfQ0hBTkdFX0JFSEFWSU9SUz46OnR5cGUpYSkpOyB9IGlubGluZSBjb25zdGV4cHIgRElB
TE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTIG9wZXJhdG9yIF4gKERJQUxPR19EUElfQ0hBTkdFX0JF
SEFWSU9SUyBhLCBESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMgYikgdGhyb3coKSB7IHJldHVy
biBESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8
RElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTPjo6dHlwZSlhKSBeICgoX0VOVU1fRkxBR19TSVpF
RF9JTlRFR0VSPERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUz46OnR5cGUpYikpOyB9IGlubGlu
ZSBESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMgJm9wZXJhdG9yIF49IChESUFMT0dfRFBJX0NI
QU5HRV9CRUhBVklPUlMgJmEsIERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUyBiKSB0aHJvdygp
IHsgcmV0dXJuIChESUFMT0dfRFBJX0NIQU5HRV9CRUhBVklPUlMgJikoKChfRU5VTV9GTEFHX1NJ
WkVEX0lOVEVHRVI8RElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTPjo6dHlwZSAmKWEpIF49ICgo
X0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPERJQUxPR19EUElfQ0hBTkdFX0JFSEFWSU9SUz46OnR5
cGUpYikpOyB9IH07DQojbGluZSA1MzQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpCT09M
DQpfX3N0ZGNhbGwNClNldERpYWxvZ0RwaUNoYW5nZUJlaGF2aW9yKA0KICAgICAgSFdORCBoRGxn
LA0KICAgICAgRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJT1JTIG1hc2ssDQogICAgICBESUFMT0df
RFBJX0NIQU5HRV9CRUhBVklPUlMgdmFsdWVzKTsNCg0KRElBTE9HX0RQSV9DSEFOR0VfQkVIQVZJ
T1JTDQpfX3N0ZGNhbGwNCkdldERpYWxvZ0RwaUNoYW5nZUJlaGF2aW9yKA0KICAgICAgSFdORCBo
RGxnKTsNCg0KI2xpbmUgNTM1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTM2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KI2xpbmUgNTM3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkNhbGxNc2dGaWx0ZXJBKA0KICAgICAgTFBNU0cgbHBNc2csDQogICAgICBpbnQg
bkNvZGUpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNhbGxNc2dG
aWx0ZXJXKA0KICAgICAgTFBNU0cgbHBNc2csDQogICAgICBpbnQgbkNvZGUpOw0KDQoNCg0KDQoj
bGluZSA1Mzk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA1Mzk2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KT3BlbkNsaXBib2FyZCgNCiAgICAgIEhXTkQgaFduZE5ld093bmVyKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNsb3NlQ2xpcGJvYXJk
KA0KICAgIHZvaWQpOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0
ZGNhbGwNCkdldENsaXBib2FyZFNlcXVlbmNlTnVtYmVyKA0KICAgIHZvaWQpOw0KDQojbGluZSA1
NDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhX
TkQNCl9fc3RkY2FsbA0KR2V0Q2xpcGJvYXJkT3duZXIoDQogICAgdm9pZCk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxsDQpTZXRDbGlwYm9hcmRWaWV3ZXIoDQogICAg
ICBIV05EIGhXbmROZXdWaWV3ZXIpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhXTkQNCl9f
c3RkY2FsbA0KR2V0Q2xpcGJvYXJkVmlld2VyKA0KICAgIHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hhbmdlQ2xpcGJvYXJkQ2hhaW4oDQogICAgICBI
V05EIGhXbmRSZW1vdmUsDQogICAgICBIV05EIGhXbmROZXdOZXh0KTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KU2V0Q2xpcGJvYXJkRGF0YSgNCiAgICAgIFVJ
TlQgdUZvcm1hdCwNCiAgICAgIEhBTkRMRSBoTWVtKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpIQU5ETEUNCl9fc3RkY2FsbA0KR2V0Q2xpcGJvYXJkRGF0YSgNCiAgICAgIFVJTlQgdUZvcm1h
dCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpSZWdpc3RlckNs
aXBib2FyZEZvcm1hdEEoDQogICAgICBMUENTVFIgbHBzekZvcm1hdCk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNClVJTlQNCl9fc3RkY2FsbA0KUmVnaXN0ZXJDbGlwYm9hcmRGb3JtYXRXKA0KICAg
ICAgTFBDV1NUUiBscHN6Rm9ybWF0KTsNCg0KDQoNCg0KI2xpbmUgNTQ3OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KQ291
bnRDbGlwYm9hcmRGb3JtYXRzKA0KICAgIHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
ClVJTlQNCl9fc3RkY2FsbA0KRW51bUNsaXBib2FyZEZvcm1hdHMoDQogICAgICBVSU5UIGZvcm1h
dCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldENsaXBib2Fy
ZEZvcm1hdE5hbWVBKA0KICAgICAgVUlOVCBmb3JtYXQsDQogICAgICBMUFNUUiBscHN6Rm9ybWF0
TmFtZSwNCiAgICAgIGludCBjY2hNYXhDb3VudCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmlu
dA0KX19zdGRjYWxsDQpHZXRDbGlwYm9hcmRGb3JtYXROYW1lVygNCiAgICAgIFVJTlQgZm9ybWF0
LA0KICAgICAgTFBXU1RSIGxwc3pGb3JtYXROYW1lLA0KICAgICAgaW50IGNjaE1heENvdW50KTsN
Cg0KDQoNCg0KI2xpbmUgNTUxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVtcHR5Q2xpcGJvYXJkKA0KICAgIHZvaWQp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNDbGlwYm9hcmRG
b3JtYXRBdmFpbGFibGUoDQogICAgICBVSU5UIGZvcm1hdCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldFByaW9yaXR5Q2xpcGJvYXJkRm9ybWF0KA0KICAgICAg
VUlOVCAqcGFGb3JtYXRQcmlvcml0eUxpc3QsDQogICAgICBpbnQgY0Zvcm1hdHMpOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkhXTkQNCl9fc3RkY2FsbA0KR2V0T3BlbkNsaXBib2FyZFdpbmRv
dygNCiAgICB2b2lkKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KQWRkQ2xpcGJvYXJkRm9ybWF0TGlzdGVuZXIoDQogICAgICBIV05EIGh3bmQpOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUmVtb3ZlQ2xpcGJvYXJkRm9ybWF0
TGlzdGVuZXIoDQogICAgICBIV05EIGh3bmQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KR2V0VXBkYXRlZENsaXBib2FyZEZvcm1hdHMoDQogICAgICBQVUlOVCBs
cHVpRm9ybWF0cywNCiAgICAgIFVJTlQgY0Zvcm1hdHMsDQogICAgICBQVUlOVCBwY0Zvcm1hdHNP
dXQpOw0KI2xpbmUgNTU1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgNTU2MCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KQ2hhclRvT2VtQSgNCiAgICAgIExQQ1NUUiBwU3JjLA0KICAgICAg
TFBTVFIgcERzdCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hh
clRvT2VtVygNCiAgICAgIExQQ1dTVFIgcFNyYywNCiAgICAgIExQU1RSIHBEc3QpOw0KDQoNCg0K
DQojbGluZSA1NTgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQogDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KT2VtVG9DaGFyQSgNCiAgICAgIExQQ1NUUiBwU3Jj
LA0KICAgICAgTFBTVFIgcERzdCk7DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KT2VtVG9DaGFyVygNCiAgICAgIExQQ1NUUiBwU3JjLA0KICAgICAgTFBXU1RSIHBE
c3QpOw0KDQoNCg0KDQojbGluZSA1NjAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hhclRvT2VtQnVmZkEoDQogICAg
ICBMUENTVFIgbHBzelNyYywNCiAgICAgIExQU1RSIGxwc3pEc3QsDQogICAgICBEV09SRCBjY2hE
c3RMZW5ndGgpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNoYXJU
b09lbUJ1ZmZXKA0KICAgICAgTFBDV1NUUiBscHN6U3JjLA0KICAgICAgTFBTVFIgbHBzekRzdCwN
CiAgICAgIERXT1JEIGNjaERzdExlbmd0aCk7DQoNCg0KDQoNCiNsaW5lIDU2MjIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpPZW1Ub0NoYXJCdWZmQSgNCiAgICAgIExQQ1NUUiBscHN6U3JjLA0KICAgICAgTFBTVFIgbHBz
ekRzdCwNCiAgICAgIERXT1JEIGNjaERzdExlbmd0aCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KT2VtVG9DaGFyQnVmZlcoDQogICAgICBMUENTVFIgbHBzelNyYywN
CiAgICAgIExQV1NUUiBscHN6RHN0LA0KICAgICAgRFdPUkQgY2NoRHN0TGVuZ3RoKTsNCg0KDQoN
Cg0KI2xpbmUgNTY0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgNTY0NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpMUFNUUg0KX19zdGRjYWxsDQpDaGFyVXBwZXJBKA0KICAgICAgTFBTVFIgbHBzeik7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkxQV1NUUg0KX19zdGRjYWxsDQpDaGFyVXBwZXJXKA0KICAg
ICAgTFBXU1RSIGxwc3opOw0KDQoNCg0KDQojbGluZSA1NjY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkNoYXJVcHBl
ckJ1ZmZBKA0KICAgICAgTFBTVFIgbHBzeiwNCiAgICAgIERXT1JEIGNjaExlbmd0aCk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkNoYXJVcHBlckJ1ZmZXKA0KICAg
ICAgTFBXU1RSIGxwc3osDQogICAgICBEV09SRCBjY2hMZW5ndGgpOw0KDQoNCg0KDQojbGluZSA1
NjgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxQ
U1RSDQpfX3N0ZGNhbGwNCkNoYXJMb3dlckEoDQogICAgICBMUFNUUiBscHN6KTsNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTFBXU1RSDQpfX3N0ZGNhbGwNCkNoYXJMb3dlclcoDQogICAgICBMUFdT
VFIgbHBzeik7DQoNCg0KDQoNCiNsaW5lIDU2OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KQ2hhckxvd2VyQnVmZkEo
DQogICAgICBMUFNUUiBscHN6LA0KICAgICAgRFdPUkQgY2NoTGVuZ3RoKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KQ2hhckxvd2VyQnVmZlcoDQogICAgICBMUFdT
VFIgbHBzeiwNCiAgICAgIERXT1JEIGNjaExlbmd0aCk7DQoNCg0KDQoNCiNsaW5lIDU3MTYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFBTVFINCl9f
c3RkY2FsbA0KQ2hhck5leHRBKA0KICAgICAgTFBDU1RSIGxwc3opOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpMUFdTVFINCl9fc3RkY2FsbA0KQ2hhck5leHRXKA0KICAgICAgTFBDV1NUUiBscHN6
KTsNCg0KDQoNCg0KI2xpbmUgNTczMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpMUFNUUg0KX19zdGRjYWxsDQpDaGFyUHJldkEoDQogICAgICBMUENT
VFIgbHBzelN0YXJ0LA0KICAgICAgTFBDU1RSIGxwc3pDdXJyZW50KTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KTFBXU1RSDQpfX3N0ZGNhbGwNCkNoYXJQcmV2VygNCiAgICAgIExQQ1dTVFIgbHBz
elN0YXJ0LA0KICAgICAgTFBDV1NUUiBscHN6Q3VycmVudCk7DQoNCg0KDQoNCiNsaW5lIDU3NTAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMUFNU
Ug0KX19zdGRjYWxsDQpDaGFyTmV4dEV4QSgNCiAgICAgICBXT1JEIENvZGVQYWdlLA0KICAgICAg
IExQQ1NUUiBscEN1cnJlbnRDaGFyLA0KICAgICAgIERXT1JEIGR3RmxhZ3MpOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkxQU1RSDQpfX3N0ZGNhbGwNCkNoYXJQcmV2RXhBKA0KICAgICAgIFdP
UkQgQ29kZVBhZ2UsDQogICAgICAgTFBDU1RSIGxwU3RhcnQsDQogICAgICAgTFBDU1RSIGxwQ3Vy
cmVudENoYXIsDQogICAgICAgRFdPUkQgZHdGbGFncyk7DQojbGluZSA1NzY5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQojbGluZSA1NzcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVn
aW9uIERlc2t0b3Agb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzQ2hhckFscGhhQSgNCiAgICAgIENIQVIgY2gp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzQ2hhckFscGhhVygN
CiAgICAgIFdDSEFSIGNoKTsNCg0KDQoNCg0KI2xpbmUgNTgxMCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzQ2hhckFs
cGhhTnVtZXJpY0EoDQogICAgICBDSEFSIGNoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpJc0NoYXJBbHBoYU51bWVyaWNXKA0KICAgICAgV0NIQVIgY2gpOw0KDQoN
Cg0KDQojbGluZSA1ODI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNDaGFyVXBwZXJBKA0KICAgICAgQ0hBUiBjaCk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNDaGFyVXBwZXJXKA0K
ICAgICAgV0NIQVIgY2gpOw0KDQoNCg0KDQojbGluZSA1ODQyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNDaGFyTG93
ZXJBKA0KICAgICAgQ0hBUiBjaCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KSXNDaGFyTG93ZXJXKA0KICAgICAgV0NIQVIgY2gpOw0KDQoNCg0KDQojbGluZSA1ODU4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA1ODYwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQojbGluZSA1ODYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkhXTkQNCl9fc3RkY2FsbA0KU2V0Rm9jdXMoDQogICAgICBIV05EIGhXbmQp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhXTkQNCl9fc3RkY2FsbA0KR2V0QWN0aXZlV2lu
ZG93KA0KICAgIHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhXTkQNCl9fc3RkY2Fs
bA0KR2V0Rm9jdXMoDQogICAgdm9pZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0K
X19zdGRjYWxsDQpHZXRLQkNvZGVQYWdlKA0KICAgIHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNClNIT1JUDQpfX3N0ZGNhbGwNCkdldEtleVN0YXRlKA0KICAgICAgaW50IG5WaXJ0S2V5
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpTSE9SVA0KX19zdGRjYWxsDQpHZXRBc3luY0tl
eVN0YXRlKA0KICAgICAgaW50IHZLZXkpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJP
T0wNCl9fc3RkY2FsbA0KR2V0S2V5Ym9hcmRTdGF0ZSgNCiAgICAgIFBCWVRFIGxwS2V5U3RhdGUp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0S2V5Ym9hcmRT
dGF0ZSgNCiAgICAgIExQQllURSBscEtleVN0YXRlKTsNCg0KDQojbGluZSA1OTE4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gIERl
c2t0b3Agb3IgUEMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3Rk
Y2FsbA0KR2V0S2V5TmFtZVRleHRBKA0KICAgICAgTE9ORyBsUGFyYW0sDQogICAgICBMUFNUUiBs
cFN0cmluZywNCiAgICAgIGludCBjY2hTaXplKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50
DQpfX3N0ZGNhbGwNCkdldEtleU5hbWVUZXh0VygNCiAgICAgIExPTkcgbFBhcmFtLA0KICAgICAg
TFBXU1RSIGxwU3RyaW5nLA0KICAgICAgaW50IGNjaFNpemUpOw0KDQoNCg0KDQojbGluZSA1OTQy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA1OTQ0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldEtleWJv
YXJkVHlwZSgNCiAgICAgIGludCBuVHlwZUZsYWcpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CmludA0KX19zdGRjYWxsDQpUb0FzY2lpKA0KICAgICAgVUlOVCB1VmlydEtleSwNCiAgICAgIFVJ
TlQgdVNjYW5Db2RlLA0KICAgICAgY29uc3QgQllURSAqbHBLZXlTdGF0ZSwNCiAgICAgIExQV09S
RCBscENoYXIsDQogICAgICBVSU5UIHVGbGFncyk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQppbnQNCl9fc3RkY2FsbA0KVG9Bc2NpaUV4KA0KICAgICAgVUlOVCB1VmlydEtleSwNCiAgICAg
IFVJTlQgdVNjYW5Db2RlLA0KICAgICAgY29uc3QgQllURSAqbHBLZXlTdGF0ZSwNCiAgICAgIExQ
V09SRCBscENoYXIsDQogICAgICBVSU5UIHVGbGFncywNCiAgICAgIEhLTCBkd2hrbCk7DQojbGlu
ZSA1OTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CmludA0KX19zdGRjYWxsDQpUb1VuaWNvZGUoDQogICAgICBVSU5UIHdWaXJ0S2V5LA0KICAgICAg
VUlOVCB3U2NhbkNvZGUsDQogICAgICBjb25zdCBCWVRFICpscEtleVN0YXRlLA0KICAgICAgTFBX
U1RSIHB3c3pCdWZmLA0KICAgICAgaW50IGNjaEJ1ZmYsDQogICAgICBVSU5UIHdGbGFncyk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KT2VtS2V5U2NhbigNCiAg
ICAgIFdPUkQgd09lbUNoYXIpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClNIT1JUDQpfX3N0
ZGNhbGwNClZrS2V5U2NhbkEoDQogICAgICBDSEFSIGNoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KU0hPUlQNCl9fc3RkY2FsbA0KVmtLZXlTY2FuVygNCiAgICAgIFdDSEFSIGNoKTsNCg0KDQoN
Cg0KI2xpbmUgNjAxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNClNIT1JUDQpfX3N0ZGNhbGwNClZrS2V5U2NhbkV4QSgNCiAgICAgIENIQVIgY2gs
DQogICAgICBIS0wgZHdoa2wpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpTSE9SVA0KX19zdGRj
YWxsDQpWa0tleVNjYW5FeFcoDQogICAgICBXQ0hBUiBjaCwNCiAgICAgIEhLTCBkd2hrbCk7DQoN
Cg0KDQoNCiNsaW5lIDYwMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGluZSA2MDMxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDYwMzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpr
ZXliZF9ldmVudCgNCiAgICAgIEJZVEUgYlZrLA0KICAgICAgQllURSBiU2NhbiwNCiAgICAgIERX
T1JEIGR3RmxhZ3MsDQogICAgICBVTE9OR19QVFIgZHdFeHRyYUluZm8pOw0KDQojbGluZSA2MDQ4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNjA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoj
bGluZSA2MDY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2Fs
bA0KbW91c2VfZXZlbnQoDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgRFdPUkQgZHgsDQog
ICAgICBEV09SRCBkeSwNCiAgICAgIERXT1JEIGR3RGF0YSwNCiAgICAgIFVMT05HX1BUUiBkd0V4
dHJhSW5mbyk7DQoNCiNsaW5lIDYwODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTU9VU0VJTlBVVCB7DQogICAgTE9O
RyAgICBkeDsNCiAgICBMT05HICAgIGR5Ow0KICAgIERXT1JEICAgbW91c2VEYXRhOw0KICAgIERX
T1JEICAgZHdGbGFnczsNCiAgICBEV09SRCAgIHRpbWU7DQogICAgVUxPTkdfUFRSIGR3RXh0cmFJ
bmZvOw0KfSBNT1VTRUlOUFVULCAqUE1PVVNFSU5QVVQsICogTFBNT1VTRUlOUFVUOw0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdLRVlCRElOUFVUIHsNCiAgICBXT1JEICAgIHdWazsNCiAgICBXT1JEICAg
IHdTY2FuOw0KICAgIERXT1JEICAgZHdGbGFnczsNCiAgICBEV09SRCAgIHRpbWU7DQoNCiAgICAN
Cg0KDQoNCg0KDQoNCg0KDQogICAgVUxPTkdfUFRSIGR3RXh0cmFJbmZvOw0KfSBLRVlCRElOUFVU
LCAqUEtFWUJESU5QVVQsICogTFBLRVlCRElOUFVUOw0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0hBUkRXQVJFSU5QVVQgew0KICAgIERXT1JE
ICAgdU1zZzsNCiAgICBXT1JEICAgIHdQYXJhbUw7DQogICAgV09SRCAgICB3UGFyYW1IOw0KfSBI
QVJEV0FSRUlOUFVULCAqUEhBUkRXQVJFSU5QVVQsICogTFBIQVJEV0FSRUlOUFVUOw0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0lOUFVUIHsNCiAgICBEV09SRCAgIHR5cGU7DQoNCiAgICB1
bmlvbg0KICAgIHsNCiAgICAgICAgTU9VU0VJTlBVVCAgICAgIG1pOw0KICAgICAgICBLRVlCRElO
UFVUICAgICAga2k7DQogICAgICAgIEhBUkRXQVJFSU5QVVQgICBoaTsNCiAgICB9IDsNCn0gSU5Q
VVQsICpQSU5QVVQsICogTFBJTlBVVDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpf
X3N0ZGNhbGwNClNlbmRJbnB1dCgNCiAgICAgIFVJTlQgY0lucHV0cywgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgIExQSU5QVVQgcElucHV0cywgIA0KICAgICAgaW50IGNiU2l6ZSk7ICAgICAg
ICAgICAgICAgICAgICAgIA0KDQojbGluZSA2MTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgNjE1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQpz
dHJ1Y3QgSFRPVUNISU5QVVRfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhUT1VDSElO
UFVUX18gKkhUT1VDSElOUFVUOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdUT1VDSElOUFVUIHsNCiAg
ICBMT05HIHg7DQogICAgTE9ORyB5Ow0KICAgIEhBTkRMRSBoU291cmNlOw0KICAgIERXT1JEIGR3
SUQ7DQogICAgRFdPUkQgZHdGbGFnczsNCiAgICBEV09SRCBkd01hc2s7DQogICAgRFdPUkQgZHdU
aW1lOw0KICAgIFVMT05HX1BUUiBkd0V4dHJhSW5mbzsNCiAgICBEV09SRCBjeENvbnRhY3Q7DQog
ICAgRFdPUkQgY3lDb250YWN0Ow0KfSBUT1VDSElOUFVULCAqUFRPVUNISU5QVVQ7DQp0eXBlZGVm
IFRPVUNISU5QVVQgY29uc3QgKiBQQ1RPVUNISU5QVVQ7DQoNCg0KI2xpbmUgNjE4MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFt
aWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFRvdWNo
SW5wdXRJbmZvKA0KICAgICAgSFRPVUNISU5QVVQgaFRvdWNoSW5wdXQsICAgICAgICAgICAgICAg
DQogICAgICBVSU5UIGNJbnB1dHMsICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgIFBU
T1VDSElOUFVUIHBJbnB1dHMsICANCiAgICAgIGludCBjYlNpemUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIA0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2xv
c2VUb3VjaElucHV0SGFuZGxlKA0KICAgICAgSFRPVUNISU5QVVQgaFRvdWNoSW5wdXQpOyAgICAg
ICAgICAgICAgICAgICANCg0KDQojbGluZSA2MjI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZWdp
c3RlclRvdWNoV2luZG93KA0KICAgICAgSFdORCBod25kLA0KICAgICAgVUxPTkcgdWxGbGFncyk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpVbnJlZ2lzdGVyVG91
Y2hXaW5kb3coDQogICAgICBIV05EIGh3bmQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KSXNUb3VjaFdpbmRvdygNCiAgICAgIEhXTkQgaHduZCwNCiAgICAgIFBV
TE9ORyBwdWxGbGFncyk7DQoNCiNsaW5lIDYyNjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA2MjYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjc4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjgzMCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQojbGluZSA2ODM1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0xBU1RJTlBVVElORk8g
ew0KICAgIFVJTlQgY2JTaXplOw0KICAgIERXT1JEIGR3VGltZTsNCn0gTEFTVElOUFVUSU5GTywg
KiBQTEFTVElOUFVUSU5GTzsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkdldExhc3RJbnB1dEluZm8oDQogICAgICBQTEFTVElOUFVUSU5GTyBwbGlpKTsNCiNsaW5l
IDY4NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDY4NTQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IG9yIFBDIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxs
DQpNYXBWaXJ0dWFsS2V5QSgNCiAgICAgIFVJTlQgdUNvZGUsDQogICAgICBVSU5UIHVNYXBUeXBl
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpNYXBWaXJ0dWFsS2V5
VygNCiAgICAgIFVJTlQgdUNvZGUsDQogICAgICBVSU5UIHVNYXBUeXBlKTsNCg0KDQoNCg0KI2xp
bmUgNjg3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNClVJTlQNCl9fc3RkY2FsbA0KTWFwVmlydHVhbEtleUV4QSgNCiAgICAgIFVJTlQgdUNvZGUs
DQogICAgICBVSU5UIHVNYXBUeXBlLA0KICAgICAgSEtMIGR3aGtsKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpNYXBWaXJ0dWFsS2V5RXhXKA0KICAgICAgVUlOVCB1
Q29kZSwNCiAgICAgIFVJTlQgdU1hcFR5cGUsDQogICAgICBIS0wgZHdoa2wpOw0KDQoNCg0KDQoj
bGluZSA2ODk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA2ODk5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCiNsaW5lIDY5MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KI2xpbmUgNjkxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldElucHV0U3RhdGUoDQogICAgdm9pZCk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0UXVldWVTdGF0
dXMoDQogICAgICBVSU5UIGZsYWdzKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhXTkQN
Cl9fc3RkY2FsbA0KR2V0Q2FwdHVyZSgNCiAgICB2b2lkKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpIV05EDQpfX3N0ZGNhbGwNClNldENhcHR1cmUoDQogICAgICBIV05EIGhXbmQpOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUmVsZWFzZUNhcHR1cmUoDQog
ICAgdm9pZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KTXNn
V2FpdEZvck11bHRpcGxlT2JqZWN0cygNCiAgICAgIERXT1JEIG5Db3VudCwNCiAgICAgIGNvbnN0
IEhBTkRMRSAqcEhhbmRsZXMsDQogICAgICBCT09MIGZXYWl0QWxsLA0KICAgICAgRFdPUkQgZHdN
aWxsaXNlY29uZHMsDQogICAgICBEV09SRCBkd1dha2VNYXNrKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgoDQog
ICAgICBEV09SRCBuQ291bnQsDQogICAgICBjb25zdCBIQU5ETEUgKnBIYW5kbGVzLA0KICAgICAg
RFdPUkQgZHdNaWxsaXNlY29uZHMsDQogICAgICBEV09SRCBkd1dha2VNYXNrLA0KICAgICAgRFdP
UkQgZHdGbGFncyk7DQoNCg0KI2xpbmUgNjk2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNjk4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQojbGluZSA2OTk0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
NzAwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzAxNSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDcwMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KVUlOVF9QVFINCl9fc3RkY2FsbA0KU2V0VGltZXIoDQogICAgICBIV05EIGhXbmQs
DQogICAgICBVSU5UX1BUUiBuSURFdmVudCwNCiAgICAgIFVJTlQgdUVsYXBzZSwNCiAgICAgIFRJ
TUVSUFJPQyBscFRpbWVyRnVuYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MDU5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA3MDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UX1BUUg0KX19zdGRjYWxsDQpTZXRDb2Fs
ZXNjYWJsZVRpbWVyKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgVUlOVF9QVFIgbklERXZlbnQs
DQogICAgICBVSU5UIHVFbGFwc2UsDQogICAgICBUSU1FUlBST0MgbHBUaW1lckZ1bmMsDQogICAg
ICBVTE9ORyB1VG9sZXJhbmNlRGVsYXkpOw0KDQojbGluZSA3MDc5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQojbGluZSA3MDgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCktpbGxUaW1lcigN
CiAgICAgIEhXTkQgaFduZCwNCiAgICAgIFVJTlRfUFRSIHVJREV2ZW50KTsNCg0KI2xpbmUgNzA5
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCklzV2luZG93VW5pY29kZSgNCiAgICAgIEhXTkQgaFduZCk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbmFibGVXaW5kb3coDQogICAgICBIV05E
IGhXbmQsDQogICAgICBCT09MIGJFbmFibGUpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KSXNXaW5kb3dFbmFibGVkKA0KICAgICAgSFdORCBoV25kKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpIQUNDRUwNCl9fc3RkY2FsbA0KTG9hZEFjY2VsZXJhdG9yc0Eo
DQogICAgICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgTFBDU1RSIGxwVGFibGVOYW1lKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEFDQ0VMDQpfX3N0ZGNhbGwNCkxvYWRBY2NlbGVyYXRv
cnNXKA0KICAgICAgSElOU1RBTkNFIGhJbnN0YW5jZSwNCiAgICAgIExQQ1dTVFIgbHBUYWJsZU5h
bWUpOw0KDQoNCg0KDQojbGluZSA3MTM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkhBQ0NFTA0KX19zdGRjYWxsDQpDcmVhdGVBY2NlbGVyYXRvclRh
YmxlQSgNCiAgICAgIExQQUNDRUwgcGFjY2VsLA0KICAgICAgaW50IGNBY2NlbCk7DQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkhBQ0NFTA0KX19zdGRjYWxsDQpDcmVhdGVBY2NlbGVyYXRvclRhYmxl
VygNCiAgICAgIExQQUNDRUwgcGFjY2VsLA0KICAgICAgaW50IGNBY2NlbCk7DQoNCg0KDQoNCiNs
aW5lIDcxNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpEZXN0cm95QWNjZWxlcmF0b3JUYWJsZSgNCiAgICAgIEhBQ0NF
TCBoQWNjZWwpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpDb3B5
QWNjZWxlcmF0b3JUYWJsZUEoDQogICAgICBIQUNDRUwgaEFjY2VsU3JjLA0KICAgICAgTFBBQ0NF
TCBscEFjY2VsRHN0LA0KICAgICAgaW50IGNBY2NlbEVudHJpZXMpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KQ29weUFjY2VsZXJhdG9yVGFibGVXKA0KICAgICAgSEFD
Q0VMIGhBY2NlbFNyYywNCiAgICAgIExQQUNDRUwgbHBBY2NlbERzdCwNCiAgICAgIGludCBjQWNj
ZWxFbnRyaWVzKTsNCg0KDQoNCg0KI2xpbmUgNzE3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNClRyYW5zbGF0ZUFj
Y2VsZXJhdG9yQSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIEhBQ0NFTCBoQWNjVGFibGUsDQog
ICAgICBMUE1TRyBscE1zZyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxs
DQpUcmFuc2xhdGVBY2NlbGVyYXRvclcoDQogICAgICBIV05EIGhXbmQsDQogICAgICBIQUNDRUwg
aEFjY1RhYmxlLA0KICAgICAgTFBNU0cgbHBNc2cpOw0KDQoNCg0KDQojbGluZSA3MjAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA3MjAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQojbGluZSA3MjA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDcyODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQojbGluZSA3Mjk1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI2xpbmUgNzI5OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzMwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQojbGluZSA3MzEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI2xpbmUg
NzMxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDczMjEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNsaW5lIDczMjYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQoNCg0KI2xpbmUgNzMzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KDQoNCiNsaW5lIDczMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDczMzgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDczNDAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCiNsaW5lIDczNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDcz
NDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDczNTIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQojbGluZSA3MzU2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KI2xpbmUgNzM2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoN
Cg0KI2xpbmUgNzM2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgNzM2NyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldFN5c3RlbU1ldHJp
Y3MoDQogICAgICBpbnQgbkluZGV4KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzM4OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgNzM5MCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDczOTMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KSE1FTlUNCl9fc3RkY2FsbA0KTG9hZE1lbnVBKA0KICAgICAgSElOU1RB
TkNFIGhJbnN0YW5jZSwNCiAgICAgIExQQ1NUUiBscE1lbnVOYW1lKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KSE1FTlUNCl9fc3RkY2FsbA0KTG9hZE1lbnVXKA0KICAgICAgSElOU1RBTkNFIGhJ
bnN0YW5jZSwNCiAgICAgIExQQ1dTVFIgbHBNZW51TmFtZSk7DQoNCg0KDQoNCiNsaW5lIDc0MTYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSE1FTlUN
Cl9fc3RkY2FsbA0KTG9hZE1lbnVJbmRpcmVjdEEoDQogICAgICBjb25zdCBNRU5VVEVNUExBVEVB
ICpscE1lbnVUZW1wbGF0ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhNRU5VDQpfX3N0ZGNh
bGwNCkxvYWRNZW51SW5kaXJlY3RXKA0KICAgICAgY29uc3QgTUVOVVRFTVBMQVRFVyAqbHBNZW51
VGVtcGxhdGUpOw0KDQoNCg0KDQojbGluZSA3NDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhNRU5VDQpfX3N0ZGNhbGwNCkdldE1lbnUoDQogICAg
ICBIV05EIGhXbmQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
U2V0TWVudSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIEhNRU5VIGhNZW51KTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNoYW5nZU1lbnVBKA0KICAgICAgSE1F
TlUgaE1lbnUsDQogICAgICBVSU5UIGNtZCwNCiAgICAgIExQQ1NUUiBscHN6TmV3SXRlbSwNCiAg
ICAgIFVJTlQgY21kSW5zZXJ0LA0KICAgICAgVUlOVCBmbGFncyk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hhbmdlTWVudVcoDQogICAgICBITUVOVSBoTWVudSwN
CiAgICAgIFVJTlQgY21kLA0KICAgICAgTFBDV1NUUiBscHN6TmV3SXRlbSwNCiAgICAgIFVJTlQg
Y21kSW5zZXJ0LA0KICAgICAgVUlOVCBmbGFncyk7DQoNCg0KDQoNCiNsaW5lIDc0NjkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpIaWxpdGVNZW51SXRlbSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIEhNRU5VIGhNZW51
LA0KICAgICAgVUlOVCB1SURIaWxpdGVJdGVtLA0KICAgICAgVUlOVCB1SGlsaXRlKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0TWVudVN0cmluZ0EoDQogICAg
ICBITUVOVSBoTWVudSwNCiAgICAgIFVJTlQgdUlESXRlbSwNCiAgICAgIExQU1RSIGxwU3RyaW5n
LA0KICAgICAgaW50IGNjaE1heCwNCiAgICAgIFVJTlQgZmxhZ3MpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0TWVudVN0cmluZ1coDQogICAgICBITUVOVSBoTWVu
dSwNCiAgICAgIFVJTlQgdUlESXRlbSwNCiAgICAgIExQV1NUUiBscFN0cmluZywNCiAgICAgIGlu
dCBjY2hNYXgsDQogICAgICBVSU5UIGZsYWdzKTsNCg0KDQoNCg0KI2xpbmUgNzUwMiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNh
bGwNCkdldE1lbnVTdGF0ZSgNCiAgICAgIEhNRU5VIGhNZW51LA0KICAgICAgVUlOVCB1SWQsDQog
ICAgICBVSU5UIHVGbGFncyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpEcmF3TWVudUJhcigNCiAgICAgIEhXTkQgaFduZCk7DQoNCg0KDQoNCiNsaW5lIDc1MjEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpITUVO
VQ0KX19zdGRjYWxsDQpHZXRTeXN0ZW1NZW51KA0KICAgICAgSFdORCBoV25kLA0KICAgICAgQk9P
TCBiUmV2ZXJ0KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhNRU5VDQpfX3N0ZGNhbGwN
CkNyZWF0ZU1lbnUoDQogICAgdm9pZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSE1FTlUN
Cl9fc3RkY2FsbA0KQ3JlYXRlUG9wdXBNZW51KA0KICAgIHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGVzdHJveU1lbnUoDQogICAgICBITUVOVSBoTWVu
dSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KQ2hlY2tNZW51
SXRlbSgNCiAgICAgIEhNRU5VIGhNZW51LA0KICAgICAgVUlOVCB1SURDaGVja0l0ZW0sDQogICAg
ICBVSU5UIHVDaGVjayk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpFbmFibGVNZW51SXRlbSgNCiAgICAgIEhNRU5VIGhNZW51LA0KICAgICAgVUlOVCB1SURFbmFi
bGVJdGVtLA0KICAgICAgVUlOVCB1RW5hYmxlKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
TUVOVQ0KX19zdGRjYWxsDQpHZXRTdWJNZW51KA0KICAgICAgSE1FTlUgaE1lbnUsDQogICAgICBp
bnQgblBvcyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpHZXRN
ZW51SXRlbUlEKA0KICAgICAgSE1FTlUgaE1lbnUsDQogICAgICBpbnQgblBvcyk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldE1lbnVJdGVtQ291bnQoDQogICAg
ICBITUVOVSBoTWVudSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpJbnNlcnRNZW51QSgNCiAgICAgIEhNRU5VIGhNZW51LA0KICAgICAgVUlOVCB1UG9zaXRpb24s
DQogICAgICBVSU5UIHVGbGFncywNCiAgICAgIFVJTlRfUFRSIHVJRE5ld0l0ZW0sDQogICAgICBM
UENTVFIgbHBOZXdJdGVtKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpJbnNlcnRNZW51VygNCiAgICAgIEhNRU5VIGhNZW51LA0KICAgICAgVUlOVCB1UG9zaXRpb24s
DQogICAgICBVSU5UIHVGbGFncywNCiAgICAgIFVJTlRfUFRSIHVJRE5ld0l0ZW0sDQogICAgICBM
UENXU1RSIGxwTmV3SXRlbSk7DQoNCg0KDQoNCiNsaW5lIDc2MDggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpBcHBlbmRN
ZW51QSgNCiAgICAgIEhNRU5VIGhNZW51LA0KICAgICAgVUlOVCB1RmxhZ3MsDQogICAgICBVSU5U
X1BUUiB1SUROZXdJdGVtLA0KICAgICAgTFBDU1RSIGxwTmV3SXRlbSk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQXBwZW5kTWVudVcoDQogICAgICBITUVOVSBoTWVu
dSwNCiAgICAgIFVJTlQgdUZsYWdzLA0KICAgICAgVUlOVF9QVFIgdUlETmV3SXRlbSwNCiAgICAg
IExQQ1dTVFIgbHBOZXdJdGVtKTsNCg0KDQoNCg0KI2xpbmUgNzYzMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCk1vZGlm
eU1lbnVBKA0KICAgICAgSE1FTlUgaE1udSwNCiAgICAgIFVJTlQgdVBvc2l0aW9uLA0KICAgICAg
VUlOVCB1RmxhZ3MsDQogICAgICBVSU5UX1BUUiB1SUROZXdJdGVtLA0KICAgICAgTFBDU1RSIGxw
TmV3SXRlbSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KTW9kaWZ5
TWVudVcoDQogICAgICBITUVOVSBoTW51LA0KICAgICAgVUlOVCB1UG9zaXRpb24sDQogICAgICBV
SU5UIHVGbGFncywNCiAgICAgIFVJTlRfUFRSIHVJRE5ld0l0ZW0sDQogICAgICBMUENXU1RSIGxw
TmV3SXRlbSk7DQoNCg0KDQoNCiNsaW5lIDc2NTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsIFJlbW92ZU1lbnUoDQogICAg
ICBITUVOVSBoTWVudSwNCiAgICAgIFVJTlQgdVBvc2l0aW9uLA0KICAgICAgVUlOVCB1RmxhZ3Mp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlTWVudSgN
CiAgICAgIEhNRU5VIGhNZW51LA0KICAgICAgVUlOVCB1UG9zaXRpb24sDQogICAgICBVSU5UIHVG
bGFncyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRNZW51
SXRlbUJpdG1hcHMoDQogICAgICBITUVOVSBoTWVudSwNCiAgICAgIFVJTlQgdVBvc2l0aW9uLA0K
ICAgICAgVUlOVCB1RmxhZ3MsDQogICAgICBIQklUTUFQIGhCaXRtYXBVbmNoZWNrZWQsDQogICAg
ICBIQklUTUFQIGhCaXRtYXBDaGVja2VkKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05H
DQpfX3N0ZGNhbGwNCkdldE1lbnVDaGVja01hcmtEaW1lbnNpb25zKA0KICAgIHZvaWQpOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVHJhY2tQb3B1cE1lbnUoDQog
ICAgICBITUVOVSBoTWVudSwNCiAgICAgIFVJTlQgdUZsYWdzLA0KICAgICAgaW50IHgsDQogICAg
ICBpbnQgeSwNCiAgICAgIGludCBuUmVzZXJ2ZWQsDQogICAgICBIV05EIGhXbmQsDQogICAgICBj
b25zdCBSRUNUICpwcmNSZWN0KTsNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdU
UE1QQVJBTVMNCnsNCiAgICBVSU5UICAgIGNiU2l6ZTsgICAgIA0KICAgIFJFQ1QgICAgcmNFeGNs
dWRlOyAgDQp9ICAgVFBNUEFSQU1TOw0KdHlwZWRlZiBUUE1QQVJBTVMgICpMUFRQTVBBUkFNUzsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClRyYWNrUG9wdXBNZW51
RXgoDQogICAgICBITUVOVSBoTWVudSwNCiAgICAgIFVJTlQgdUZsYWdzLA0KICAgICAgaW50IHgs
DQogICAgICBpbnQgeSwNCiAgICAgIEhXTkQgaHduZCwNCiAgICAgIExQVFBNUEFSQU1TIGxwdHBt
KTsNCiNsaW5lIDc3MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNhbGN1bGF0ZVBvcHVwV2luZG93UG9zaXRpb24o
DQogICAgICBjb25zdCBQT0lOVCAqYW5jaG9yUG9pbnQsDQogICAgICBjb25zdCBTSVpFICp3aW5k
b3dTaXplLA0KICAgICAgVUlOVCAgZmxhZ3MsDQogICAgICBSRUNUICpleGNsdWRlUmVjdCwNCiAg
ICAgIFJFQ1QgKnBvcHVwV2luZG93UG9zaXRpb24pOw0KDQojbGluZSA3NzM2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYg
c3RydWN0IHRhZ01FTlVJTkZPDQp7DQogICAgRFdPUkQgICBjYlNpemU7DQogICAgRFdPUkQgICBm
TWFzazsNCiAgICBEV09SRCAgIGR3U3R5bGU7DQogICAgVUlOVCAgICBjeU1heDsNCiAgICBIQlJV
U0ggIGhickJhY2s7DQogICAgRFdPUkQgICBkd0NvbnRleHRIZWxwSUQ7DQogICAgVUxPTkdfUFRS
IGR3TWVudURhdGE7DQp9ICAgTUVOVUlORk8sICAqTFBNRU5VSU5GTzsNCnR5cGVkZWYgTUVOVUlO
Rk8gY29uc3QgICpMUENNRU5VSU5GTzsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkdldE1lbnVJbmZvKA0KICAgICAgSE1FTlUsDQogICAgICBMUE1FTlVJTkZPKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldE1lbnVJbmZvKA0K
ICAgICAgSE1FTlUsDQogICAgICBMUENNRU5VSU5GTyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpFbmRNZW51KA0KICAgICAgICB2b2lkKTsNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVOVUdFVE9CSkVDVElORk8NCnsNCiAgICBEV09SRCBkd0Zs
YWdzOw0KICAgIFVJTlQgdVBvczsNCiAgICBITUVOVSBobWVudTsNCiAgICBQVk9JRCByaWlkOw0K
ICAgIFBWT0lEIHB2T2JqOw0KfSBNRU5VR0VUT0JKRUNUSU5GTywgKiBQTUVOVUdFVE9CSkVDVElO
Rk87DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3ODEyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc4MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzgzOSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNRU5VSVRFTUlORk9BDQp7
DQogICAgVUlOVCAgICAgY2JTaXplOw0KICAgIFVJTlQgICAgIGZNYXNrOw0KICAgIFVJTlQgICAg
IGZUeXBlOyAgICAgICAgIA0KICAgIFVJTlQgICAgIGZTdGF0ZTsgICAgICAgIA0KICAgIFVJTlQg
ICAgIHdJRDsgICAgICAgICAgIA0KICAgIEhNRU5VICAgIGhTdWJNZW51OyAgICAgIA0KICAgIEhC
SVRNQVAgIGhibXBDaGVja2VkOyAgIA0KICAgIEhCSVRNQVAgIGhibXBVbmNoZWNrZWQ7IA0KICAg
IFVMT05HX1BUUiBkd0l0ZW1EYXRhOyAgIA0KICAgIExQU1RSICAgIGR3VHlwZURhdGE7ICAgIA0K
ICAgIFVJTlQgICAgIGNjaDsgICAgICAgICAgIA0KDQogICAgSEJJVE1BUCAgaGJtcEl0ZW07ICAg
ICAgDQojbGluZSA3ODU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KfSAgIE1FTlVJVEVNSU5G
T0EsICAqTFBNRU5VSVRFTUlORk9BOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVOVUlURU1JTkZPVw0K
ew0KICAgIFVJTlQgICAgIGNiU2l6ZTsNCiAgICBVSU5UICAgICBmTWFzazsNCiAgICBVSU5UICAg
ICBmVHlwZTsgICAgICAgICANCiAgICBVSU5UICAgICBmU3RhdGU7ICAgICAgICANCiAgICBVSU5U
ICAgICB3SUQ7ICAgICAgICAgICANCiAgICBITUVOVSAgICBoU3ViTWVudTsgICAgICANCiAgICBI
QklUTUFQICBoYm1wQ2hlY2tlZDsgICANCiAgICBIQklUTUFQICBoYm1wVW5jaGVja2VkOyANCiAg
ICBVTE9OR19QVFIgZHdJdGVtRGF0YTsgICANCiAgICBMUFdTVFIgICBkd1R5cGVEYXRhOyAgICAN
CiAgICBVSU5UICAgICBjY2g7ICAgICAgICAgICANCg0KICAgIEhCSVRNQVAgIGhibXBJdGVtOyAg
ICAgIA0KI2xpbmUgNzg3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCn0gICBNRU5VSVRFTUlO
Rk9XLCAgKkxQTUVOVUlURU1JTkZPVzsNCg0KdHlwZWRlZiBNRU5VSVRFTUlORk9XIE1FTlVJVEVN
SU5GTzsNCnR5cGVkZWYgTFBNRU5VSVRFTUlORk9XIExQTUVOVUlURU1JTkZPOw0KDQoNCg0KI2xp
bmUgNzg4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCnR5cGVkZWYgTUVOVUlURU1JTkZPQSBj
b25zdCAgKkxQQ01FTlVJVEVNSU5GT0E7DQp0eXBlZGVmIE1FTlVJVEVNSU5GT1cgY29uc3QgICpM
UENNRU5VSVRFTUlORk9XOw0KDQp0eXBlZGVmIExQQ01FTlVJVEVNSU5GT1cgTFBDTUVOVUlURU1J
TkZPOw0KDQoNCiNsaW5lIDc4ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkluc2VydE1lbnVJdGVtQSgNCiAgICAg
IEhNRU5VIGhtZW51LA0KICAgICAgVUlOVCBpdGVtLA0KICAgICAgQk9PTCBmQnlQb3NpdGlvbiwN
CiAgICAgIExQQ01FTlVJVEVNSU5GT0EgbHBtaSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KSW5zZXJ0TWVudUl0ZW1XKA0KICAgICAgSE1FTlUgaG1lbnUsDQogICAg
ICBVSU5UIGl0ZW0sDQogICAgICBCT09MIGZCeVBvc2l0aW9uLA0KICAgICAgTFBDTUVOVUlURU1J
TkZPVyBscG1pKTsNCg0KDQoNCg0KI2xpbmUgNzkxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldE1lbnVJdGVtSW5m
b0EoDQogICAgICBITUVOVSBobWVudSwNCiAgICAgIFVJTlQgaXRlbSwNCiAgICAgIEJPT0wgZkJ5
UG9zaXRpb24sDQogICAgICBMUE1FTlVJVEVNSU5GT0EgbHBtaWkpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldE1lbnVJdGVtSW5mb1coDQogICAgICBITUVOVSBo
bWVudSwNCiAgICAgIFVJTlQgaXRlbSwNCiAgICAgIEJPT0wgZkJ5UG9zaXRpb24sDQogICAgICBM
UE1FTlVJVEVNSU5GT1cgbHBtaWkpOw0KDQoNCg0KDQojbGluZSA3OTM0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0
TWVudUl0ZW1JbmZvQSgNCiAgICAgIEhNRU5VIGhtZW51LA0KICAgICAgVUlOVCBpdGVtLA0KICAg
ICAgQk9PTCBmQnlQb3NpdG9uLA0KICAgICAgTFBDTUVOVUlURU1JTkZPQSBscG1paSk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0TWVudUl0ZW1JbmZvVygNCiAg
ICAgIEhNRU5VIGhtZW51LA0KICAgICAgVUlOVCBpdGVtLA0KICAgICAgQk9PTCBmQnlQb3NpdG9u
LA0KICAgICAgTFBDTUVOVUlURU1JTkZPVyBscG1paSk7DQoNCg0KDQoNCiNsaW5lIDc5NTYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpV
SU5UDQpfX3N0ZGNhbGwNCkdldE1lbnVEZWZhdWx0SXRlbSgNCiAgICAgIEhNRU5VIGhNZW51LA0K
ICAgICAgVUlOVCBmQnlQb3MsDQogICAgICBVSU5UIGdtZGlGbGFncyk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRNZW51RGVmYXVsdEl0ZW0oDQogICAgICBI
TUVOVSBoTWVudSwNCiAgICAgIFVJTlQgdUl0ZW0sDQogICAgICBVSU5UIGZCeVBvcyk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRNZW51SXRlbVJlY3QoDQog
ICAgICBIV05EIGhXbmQsDQogICAgICBITUVOVSBoTWVudSwNCiAgICAgIFVJTlQgdUl0ZW0sDQog
ICAgICBMUFJFQ1QgbHByY0l0ZW0pOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19z
dGRjYWxsDQpNZW51SXRlbUZyb21Qb2ludCgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIEhNRU5V
IGhNZW51LA0KICAgICAgUE9JTlQgcHRTY3JlZW4pOw0KI2xpbmUgNzk5NCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgw
MTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODAyMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQojbGluZSA4MDI1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI2xpbmUgODAyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQojbGluZSA4
MDI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5lIDgwMzIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCiNsaW5lIDgwMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRFJPUFNUUlVDVA0Kew0KICAgIEhXTkQgICAgaHdu
ZFNvdXJjZTsNCiAgICBIV05EICAgIGh3bmRTaW5rOw0KICAgIERXT1JEICAgd0ZtdDsNCiAgICBV
TE9OR19QVFIgZHdEYXRhOw0KICAgIFBPSU5UICAgcHREcm9wOw0KICAgIERXT1JEICAgZHdDb250
cm9sRGF0YTsNCn0gRFJPUFNUUlVDVCwgKlBEUk9QU1RSVUNULCAqTFBEUk9QU1RSVUNUOw0KDQoj
bGluZSA4MDU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KRHJhZ09iamVjdCgNCiAgICAg
IEhXTkQgaHduZFBhcmVudCwNCiAgICAgIEhXTkQgaHduZEZyb20sDQogICAgICBVSU5UIGZtdCwN
CiAgICAgIFVMT05HX1BUUiBkYXRhLA0KICAgICAgSENVUlNPUiBoY3VyKTsNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRyYWdEZXRlY3QoDQogICAgICBIV05EIGh3
bmQsDQogICAgICBQT0lOVCBwdCk7DQoNCiNsaW5lIDgwOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA4MDkzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEcmF3SWNvbigNCiAgICAgIEhEQyBoREMsDQogICAg
ICBpbnQgWCwNCiAgICAgIGludCBZLA0KICAgICAgSElDT04gaEljb24pOw0KDQojbGluZSA4MTA3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgODE0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDgxNDQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnRFJBV1RFWFRQQVJBTVMNCnsNCiAgICBVSU5UICAgIGNiU2l6ZTsNCiAg
ICBpbnQgICAgIGlUYWJMZW5ndGg7DQogICAgaW50ICAgICBpTGVmdE1hcmdpbjsNCiAgICBpbnQg
ICAgIGlSaWdodE1hcmdpbjsNCiAgICBVSU5UICAgIHVpTGVuZ3RoRHJhd247DQp9IERSQVdURVhU
UEFSQU1TLCAgKkxQRFJBV1RFWFRQQVJBTVM7DQoNCiNsaW5lIDgxNTggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA4MTYxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KaW50DQpfX3N0ZGNhbGwNCkRyYXdU
ZXh0QSgNCiAgICAgIEhEQyBoZGMsDQogICAgDQogICAgDQogICAgTFBDU1RSIGxwY2hUZXh0LA0K
ICAgICAgaW50IGNjaFRleHQsDQogICAgICBMUFJFQ1QgbHByYywNCiAgICAgIFVJTlQgZm9ybWF0
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KaW50DQpfX3N0ZGNhbGwNCkRyYXdUZXh0VygN
CiAgICAgIEhEQyBoZGMsDQogICAgDQogICAgDQogICAgTFBDV1NUUiBscGNoVGV4dCwNCiAgICAg
IGludCBjY2hUZXh0LA0KICAgICAgTFBSRUNUIGxwcmMsDQogICAgICBVSU5UIGZvcm1hdCk7DQoN
Cg0KDQoNCiNsaW5lIDgyMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgyMjkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCmludA0KX19z
dGRjYWxsDQpEcmF3VGV4dEV4QSgNCiAgICAgIEhEQyBoZGMsDQogICAgDQogICAgDQogICAgDQog
ICAgTFBTVFIgbHBjaFRleHQsDQogICAgICBpbnQgY2NoVGV4dCwNCiAgICAgIExQUkVDVCBscHJj
LA0KICAgICAgVUlOVCBmb3JtYXQsDQogICAgICBMUERSQVdURVhUUEFSQU1TIGxwZHRwKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KaW50DQpfX3N0ZGNhbGwNCkRyYXdUZXh0RXhXKA0KICAg
ICAgSERDIGhkYywNCiAgICANCiAgICANCiAgICANCiAgICBMUFdTVFIgbHBjaFRleHQsDQogICAg
ICBpbnQgY2NoVGV4dCwNCiAgICAgIExQUkVDVCBscHJjLA0KICAgICAgVUlOVCBmb3JtYXQsDQog
ICAgICBMUERSQVdURVhUUEFSQU1TIGxwZHRwKTsNCg0KDQoNCg0KI2xpbmUgODI2NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDgyNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
CiNsaW5lIDgyNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojbGluZSA4MjcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpHcmF5U3RyaW5nQSgNCiAgICAgIEhEQyBoREMsDQogICAgICBIQlJVU0ggaEJydXNoLA0KICAg
ICAgR1JBWVNUUklOR1BST0MgbHBPdXRwdXRGdW5jLA0KICAgICAgTFBBUkFNIGxwRGF0YSwNCiAg
ICAgIGludCBuQ291bnQsDQogICAgICBpbnQgWCwNCiAgICAgIGludCBZLA0KICAgICAgaW50IG5X
aWR0aCwNCiAgICAgIGludCBuSGVpZ2h0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpHcmF5U3RyaW5nVygNCiAgICAgIEhEQyBoREMsDQogICAgICBIQlJVU0ggaEJy
dXNoLA0KICAgICAgR1JBWVNUUklOR1BST0MgbHBPdXRwdXRGdW5jLA0KICAgICAgTFBBUkFNIGxw
RGF0YSwNCiAgICAgIGludCBuQ291bnQsDQogICAgICBpbnQgWCwNCiAgICAgIGludCBZLA0KICAg
ICAgaW50IG5XaWR0aCwNCiAgICAgIGludCBuSGVpZ2h0KTsNCg0KDQoNCg0KI2xpbmUgODMwNiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgODMwOCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA4MzI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNwcmFnbWEgcmVn
aW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNCkRyYXdTdGF0ZUEoDQogICAgICBIREMgaGRjLA0KICAgICAgSEJSVVNIIGhickZvcmUs
DQogICAgICBEUkFXU1RBVEVQUk9DIHFmbkNhbGxCYWNrLA0KICAgICAgTFBBUkFNIGxEYXRhLA0K
ICAgICAgV1BBUkFNIHdEYXRhLA0KICAgICAgaW50IHgsDQogICAgICBpbnQgeSwNCiAgICAgIGlu
dCBjeCwNCiAgICAgIGludCBjeSwNCiAgICAgIFVJTlQgdUZsYWdzKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEcmF3U3RhdGVXKA0KICAgICAgSERDIGhkYywNCiAg
ICAgIEhCUlVTSCBoYnJGb3JlLA0KICAgICAgRFJBV1NUQVRFUFJPQyBxZm5DYWxsQmFjaywNCiAg
ICAgIExQQVJBTSBsRGF0YSwNCiAgICAgIFdQQVJBTSB3RGF0YSwNCiAgICAgIGludCB4LA0KICAg
ICAgaW50IHksDQogICAgICBpbnQgY3gsDQogICAgICBpbnQgY3ksDQogICAgICBVSU5UIHVGbGFn
cyk7DQoNCg0KDQoNCiNsaW5lIDgzNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5l
IDgzNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGlu
ZSA4MzcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxsDQpUYWJi
ZWRUZXh0T3V0QSgNCiAgICAgIEhEQyBoZGMsDQogICAgICBpbnQgeCwNCiAgICAgIGludCB5LA0K
ICAgICAgTFBDU1RSIGxwU3RyaW5nLA0KICAgICAgaW50IGNoQ291bnQsDQogICAgICBpbnQgblRh
YlBvc2l0aW9ucywNCiAgICAgIGNvbnN0IElOVCAqbHBuVGFiU3RvcFBvc2l0aW9ucywNCiAgICAg
IGludCBuVGFiT3JpZ2luKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxs
DQpUYWJiZWRUZXh0T3V0VygNCiAgICAgIEhEQyBoZGMsDQogICAgICBpbnQgeCwNCiAgICAgIGlu
dCB5LA0KICAgICAgTFBDV1NUUiBscFN0cmluZywNCiAgICAgIGludCBjaENvdW50LA0KICAgICAg
aW50IG5UYWJQb3NpdGlvbnMsDQogICAgICBjb25zdCBJTlQgKmxwblRhYlN0b3BQb3NpdGlvbnMs
DQogICAgICBpbnQgblRhYk9yaWdpbik7DQoNCg0KDQoNCiNsaW5lIDg0MDQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0K
R2V0VGFiYmVkVGV4dEV4dGVudEEoDQogICAgICBIREMgaGRjLA0KICAgICAgTFBDU1RSIGxwU3Ry
aW5nLA0KICAgICAgaW50IGNoQ291bnQsDQogICAgICBpbnQgblRhYlBvc2l0aW9ucywNCiAgICAg
IGNvbnN0IElOVCAqbHBuVGFiU3RvcFBvc2l0aW9ucyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkRXT1JEDQpfX3N0ZGNhbGwNCkdldFRhYmJlZFRleHRFeHRlbnRXKA0KICAgICAgSERDIGhkYywN
CiAgICAgIExQQ1dTVFIgbHBTdHJpbmcsDQogICAgICBpbnQgY2hDb3VudCwNCiAgICAgIGludCBu
VGFiUG9zaXRpb25zLA0KICAgICAgY29uc3QgSU5UICpscG5UYWJTdG9wUG9zaXRpb25zKTsNCg0K
DQoNCg0KI2xpbmUgODQyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClVwZGF0ZVdpbmRvdygNCiAgICAgIEhXTkQgaFdu
ZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxsDQpTZXRBY3RpdmVX
aW5kb3coDQogICAgICBIV05EIGhXbmQpOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdO
RA0KX19zdGRjYWxsDQpHZXRGb3JlZ3JvdW5kV2luZG93KA0KICAgIHZvaWQpOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpQYWludERlc2t0b3AoDQogICAgICBI
REMgaGRjKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNClN3aXRj
aFRvVGhpc1dpbmRvdygNCiAgICAgIEhXTkQgaHduZCwNCiAgICAgIEJPT0wgZlVua25vd24pOw0K
I2xpbmUgODQ2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Rm9yZWdyb3VuZFdpbmRvdygNCiAgICAgIEhXTkQg
aFduZCk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFsbG93
U2V0Rm9yZWdyb3VuZFdpbmRvdygNCiAgICAgIERXT1JEIGR3UHJvY2Vzc0lkKTsNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpMb2NrU2V0Rm9yZWdyb3VuZFdp
bmRvdygNCiAgICAgIFVJTlQgdUxvY2tDb2RlKTsNCg0KDQoNCg0KI2xpbmUgODQ4OSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNh
bGwNCldpbmRvd0Zyb21EQygNCiAgICAgIEhEQyBoREMpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkhEQw0KX19zdGRjYWxsDQpHZXREQygNCiAgICAgIEhXTkQgaFduZCk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KSERDDQpfX3N0ZGNhbGwNCkdldERDRXgoDQogICAgICBIV05EIGhXbmQs
DQogICAgICBIUkdOIGhyZ25DbGlwLA0KICAgICAgRFdPUkQgZmxhZ3MpOw0KDQojbGluZSA4NTEx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIREMNCl9fc3RkY2FsbA0KR2V0V2luZG93REMoDQog
ICAgICBIV05EIGhXbmQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxs
DQpSZWxlYXNlREMoDQogICAgICBIV05EIGhXbmQsDQogICAgICBIREMgaERDKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpIREMNCl9fc3RkY2FsbA0KQmVnaW5QYWludCgNCiAgICAgIEhXTkQg
aFduZCwNCiAgICAgIExQUEFJTlRTVFJVQ1QgbHBQYWludCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbmRQYWludCgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAg
IGNvbnN0IFBBSU5UU1RSVUNUICpscFBhaW50KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldFVwZGF0ZVJlY3QoDQogICAgICBIV05EIGhXbmQsDQogICAgICBM
UFJFQ1QgbHBSZWN0LA0KICAgICAgQk9PTCBiRXJhc2UpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCmludA0KX19zdGRjYWxsDQpHZXRVcGRhdGVSZ24oDQogICAgICBIV05EIGhXbmQsDQogICAg
ICBIUkdOIGhSZ24sDQogICAgICBCT09MIGJFcmFzZSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KaW50DQpfX3N0ZGNhbGwNClNldFdpbmRvd1JnbigNCiAgICAgIEhXTkQgaFduZCwNCiAgICAg
IEhSR04gaFJnbiwNCiAgICAgIEJPT0wgYlJlZHJhdyk7DQoNCiNsaW5lIDg1ODUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0K
R2V0V2luZG93UmduKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgSFJHTiBoUmduKTsNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldFdpbmRvd1JnbkJveCgN
CiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQUkVDVCBscHJjKTsNCg0KI2xpbmUgODYwOCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3Rk
Y2FsbA0KRXhjbHVkZVVwZGF0ZVJnbigNCiAgICAgIEhEQyBoREMsDQogICAgICBIV05EIGhXbmQp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSW52YWxpZGF0ZVJl
Y3QoDQogICAgICBIV05EIGhXbmQsDQogICAgICBjb25zdCBSRUNUICpscFJlY3QsDQogICAgICBC
T09MIGJFcmFzZSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpW
YWxpZGF0ZVJlY3QoDQogICAgICBIV05EIGhXbmQsDQogICAgICBjb25zdCBSRUNUICpscFJlY3Qp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSW52YWxpZGF0ZVJn
bigNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIEhSR04gaFJnbiwNCiAgICAgIEJPT0wgYkVyYXNl
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClZhbGlkYXRlUmdu
KA0KICAgICAgSFdORCBoV25kLA0KICAgICAgSFJHTiBoUmduKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUmVkcmF3V2luZG93KA0KICAgICAgSFdORCBoV25k
LA0KICAgICAgY29uc3QgUkVDVCAqbHByY1VwZGF0ZSwNCiAgICAgIEhSR04gaHJnblVwZGF0ZSwN
CiAgICAgIFVJTlQgZmxhZ3MpOw0KDQojbGluZSA4NjU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpMb2NrV2luZG93VXBkYXRlKA0KICAg
ICAgSFdORCBoV25kTG9jayk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpTY3JvbGxXaW5kb3coDQogICAgICBIV05EIGhXbmQsDQogICAgICBpbnQgWEFtb3VudCwN
CiAgICAgIGludCBZQW1vdW50LA0KICAgICAgY29uc3QgUkVDVCAqbHBSZWN0LA0KICAgICAgY29u
c3QgUkVDVCAqbHBDbGlwUmVjdCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpTY3JvbGxEQygNCiAgICAgIEhEQyBoREMsDQogICAgICBpbnQgZHgsDQogICAgICBp
bnQgZHksDQogICAgICBjb25zdCBSRUNUICpscHJjU2Nyb2xsLA0KICAgICAgY29uc3QgUkVDVCAq
bHByY0NsaXAsDQogICAgICBIUkdOIGhyZ25VcGRhdGUsDQogICAgICBMUFJFQ1QgbHByY1VwZGF0
ZSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNClNjcm9sbFdpbmRv
d0V4KA0KICAgICAgSFdORCBoV25kLA0KICAgICAgaW50IGR4LA0KICAgICAgaW50IGR5LA0KICAg
ICAgY29uc3QgUkVDVCAqcHJjU2Nyb2xsLA0KICAgICAgY29uc3QgUkVDVCAqcHJjQ2xpcCwNCiAg
ICAgIEhSR04gaHJnblVwZGF0ZSwNCiAgICAgIExQUkVDVCBwcmNVcGRhdGUsDQogICAgICBVSU5U
IGZsYWdzKTsNCg0KI2xpbmUgODcyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQojbGluZSA4NzM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpTZXRTY3JvbGxQb3MoDQogICAgICBIV05EIGhXbmQs
DQogICAgICBpbnQgbkJhciwNCiAgICAgIGludCBuUG9zLA0KICAgICAgQk9PTCBiUmVkcmF3KTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0U2Nyb2xsUG9zKA0K
ICAgICAgSFdORCBoV25kLA0KICAgICAgaW50IG5CYXIpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0U2Nyb2xsUmFuZ2UoDQogICAgICBIV05EIGhXbmQsDQog
ICAgICBpbnQgbkJhciwNCiAgICAgIGludCBuTWluUG9zLA0KICAgICAgaW50IG5NYXhQb3MsDQog
ICAgICBCT09MIGJSZWRyYXcpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0U2Nyb2xsUmFuZ2UoDQogICAgICBIV05EIGhXbmQsDQogICAgICBpbnQgbkJhciwN
CiAgICAgIExQSU5UIGxwTWluUG9zLA0KICAgICAgTFBJTlQgbHBNYXhQb3MpOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2hvd1Njcm9sbEJhcigNCiAgICAgIEhX
TkQgaFduZCwNCiAgICAgIGludCB3QmFyLA0KICAgICAgQk9PTCBiU2hvdyk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbmFibGVTY3JvbGxCYXIoDQogICAgICBI
V05EIGhXbmQsDQogICAgICBVSU5UIHdTQmZsYWdzLA0KICAgICAgVUlOVCB3QXJyb3dzKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg4MTIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
ClNldFByb3BBKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgTFBDU1RSIGxwU3RyaW5nLA0KICAg
ICAgSEFORExFIGhEYXRhKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpTZXRQcm9wVygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcsDQog
ICAgICBIQU5ETEUgaERhdGEpOw0KDQoNCg0KDQojbGluZSA4ODMzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpHZXRQ
cm9wQSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQQ1NUUiBscFN0cmluZyk7DQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpHZXRQcm9wVygNCiAgICAgIEhXTkQg
aFduZCwNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcpOw0KDQoNCg0KDQojbGluZSA4ODUxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19z
dGRjYWxsDQpSZW1vdmVQcm9wQSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQQ1NUUiBscFN0
cmluZyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpSZW1vdmVQ
cm9wVygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQQ1dTVFIgbHBTdHJpbmcpOw0KDQoNCg0K
DQojbGluZSA4ODY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCmludA0KX19zdGRjYWxsDQpFbnVtUHJvcHNFeEEoDQogICAgICBIV05EIGhXbmQsDQog
ICAgICBQUk9QRU5VTVBST0NFWEEgbHBFbnVtRnVuYywNCiAgICAgIExQQVJBTSBsUGFyYW0pOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KRW51bVByb3BzRXhXKA0KICAg
ICAgSFdORCBoV25kLA0KICAgICAgUFJPUEVOVU1QUk9DRVhXIGxwRW51bUZ1bmMsDQogICAgICBM
UEFSQU0gbFBhcmFtKTsNCg0KDQoNCg0KI2xpbmUgODg4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KRW51bVByb3BzQSgN
CiAgICAgIEhXTkQgaFduZCwNCiAgICAgIFBST1BFTlVNUFJPQ0EgbHBFbnVtRnVuYyk7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpFbnVtUHJvcHNXKA0KICAgICAgSFdO
RCBoV25kLA0KICAgICAgUFJPUEVOVU1QUk9DVyBscEVudW1GdW5jKTsNCg0KDQoNCg0KI2xpbmUg
ODkwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClNldFdpbmRvd1RleHRBKA0KICAgICAgSFdORCBoV25kLA0KICAgICAg
TFBDU1RSIGxwU3RyaW5nKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpTZXRXaW5kb3dUZXh0VygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQQ1dTVFIgbHBTdHJp
bmcpOw0KDQoNCg0KDQojbGluZSA4OTI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQogDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRXaW5kb3dUZXh0QSgNCiAg
ICAgIEhXTkQgaFduZCwNCiAgICAgIExQU1RSIGxwU3RyaW5nLA0KICAgICAgaW50IG5NYXhDb3Vu
dCk7DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRXaW5kb3dU
ZXh0VygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQV1NUUiBscFN0cmluZywNCiAgICAgIGlu
dCBuTWF4Q291bnQpOw0KDQoNCg0KDQojbGluZSA4OTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRXaW5kb3dUZXh0
TGVuZ3RoQSgNCiAgICAgIEhXTkQgaFduZCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0K
X19zdGRjYWxsDQpHZXRXaW5kb3dUZXh0TGVuZ3RoVygNCiAgICAgIEhXTkQgaFduZCk7DQoNCg0K
DQoNCiNsaW5lIDg5NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDg5NjUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q2xpZW50UmVjdCgNCiAgICAgIEhXTkQgaFduZCwNCiAg
ICAgIExQUkVDVCBscFJlY3QpOw0KDQojbGluZSA4OTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0V2luZG93UmVjdCgN
CiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQUkVDVCBscFJlY3QpOw0KDQojbGluZSA4OTkxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFkanVzdFdpbmRvd1JlY3QoDQogICAgICBMUFJFQ1QgbHBS
ZWN0LA0KICAgICAgRFdPUkQgZHdTdHlsZSwNCiAgICAgIEJPT0wgYk1lbnUpOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRqdXN0V2luZG93UmVjdEV4KA0KICAg
ICAgTFBSRUNUIGxwUmVjdCwNCiAgICAgIERXT1JEIGR3U3R5bGUsDQogICAgICBCT09MIGJNZW51
LA0KICAgICAgRFdPUkQgZHdFeFN0eWxlKTsNCg0KI2xpbmUgOTAxNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFt
aWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MDMwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCiNsaW5lIDkwMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnSEVMUElORk8gICAgICANCnsNCiAgICBVSU5UICAgIGNiU2l6ZTsg
ICAgICAgICAgICAgDQogICAgaW50ICAgICBpQ29udGV4dFR5cGU7ICAgICAgIA0KICAgIGludCAg
ICAgaUN0cmxJZDsgICAgICAgICAgICANCiAgICBIQU5ETEUgIGhJdGVtSGFuZGxlOyAgICAgICAg
DQogICAgRFdPUkRfUFRSIGR3Q29udGV4dElkOyAgICAgIA0KICAgIFBPSU5UICAgTW91c2VQb3M7
ICAgICAgICAgICANCn0gIEhFTFBJTkZPLCAgKkxQSEVMUElORk87DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRXaW5kb3dDb250ZXh0SGVscElkKA0KICAgICAg
SFdORCwNCiAgICAgIERXT1JEKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19z
dGRjYWxsDQpHZXRXaW5kb3dDb250ZXh0SGVscElkKA0KICAgICAgSFdORCk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRNZW51Q29udGV4dEhlbHBJZCgNCiAg
ICAgIEhNRU5VLA0KICAgICAgRFdPUkQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JE
DQpfX3N0ZGNhbGwNCkdldE1lbnVDb250ZXh0SGVscElkKA0KICAgICAgSE1FTlUpOw0KDQojbGlu
ZSA5MDc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xp
bmUgOTA4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDkwOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgOTExMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDkxMjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoj
bGluZSA5MTI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA5MTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgOTE0
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgOTE0NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpNZXNzYWdlQm94QSgNCiAg
ICAgIEhXTkQgaFduZCwNCiAgICAgIExQQ1NUUiBscFRleHQsDQogICAgICBMUENTVFIgbHBDYXB0
aW9uLA0KICAgICAgVUlOVCB1VHlwZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19z
dGRjYWxsDQpNZXNzYWdlQm94VygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQQ1dTVFIgbHBU
ZXh0LA0KICAgICAgTFBDV1NUUiBscENhcHRpb24sDQogICAgICBVSU5UIHVUeXBlKTsNCg0KDQoN
Cg0KI2xpbmUgOTE3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MjAyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpNZXNzYWdl
Qm94RXhBKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgTFBDU1RSIGxwVGV4dCwNCiAgICAgIExQ
Q1NUUiBscENhcHRpb24sDQogICAgICBVSU5UIHVUeXBlLA0KICAgICAgV09SRCB3TGFuZ3VhZ2VJ
ZCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpNZXNzYWdlQm94RXhX
KA0KICAgICAgSFdORCBoV25kLA0KICAgICAgTFBDV1NUUiBscFRleHQsDQogICAgICBMUENXU1RS
IGxwQ2FwdGlvbiwNCiAgICAgIFVJTlQgdVR5cGUsDQogICAgICBXT1JEIHdMYW5ndWFnZUlkKTsN
Cg0KDQoNCg0KI2xpbmUgOTIyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCnR5cGVk
ZWYgdm9pZCAoX19zdGRjYWxsICpNU0dCT1hDQUxMQkFDSykoTFBIRUxQSU5GTyBscEhlbHBJbmZv
KTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTVNHQk9YUEFSQU1TQQ0Kew0KICAgIFVJTlQgICAgICAg
IGNiU2l6ZTsNCiAgICBIV05EICAgICAgICBod25kT3duZXI7DQogICAgSElOU1RBTkNFICAgaElu
c3RhbmNlOw0KICAgIExQQ1NUUiAgICAgIGxwc3pUZXh0Ow0KICAgIExQQ1NUUiAgICAgIGxwc3pD
YXB0aW9uOw0KICAgIERXT1JEICAgICAgIGR3U3R5bGU7DQogICAgTFBDU1RSICAgICAgbHBzeklj
b247DQogICAgRFdPUkRfUFRSICAgZHdDb250ZXh0SGVscElkOw0KICAgIE1TR0JPWENBTExCQUNL
ICAgICAgbHBmbk1zZ0JveENhbGxiYWNrOw0KICAgIERXT1JEICAgICAgIGR3TGFuZ3VhZ2VJZDsN
Cn0gTVNHQk9YUEFSQU1TQSwgKlBNU0dCT1hQQVJBTVNBLCAqTFBNU0dCT1hQQVJBTVNBOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnTVNHQk9YUEFSQU1TVw0Kew0KICAgIFVJTlQgICAgICAgIGNiU2l6ZTsN
CiAgICBIV05EICAgICAgICBod25kT3duZXI7DQogICAgSElOU1RBTkNFICAgaEluc3RhbmNlOw0K
ICAgIExQQ1dTVFIgICAgIGxwc3pUZXh0Ow0KICAgIExQQ1dTVFIgICAgIGxwc3pDYXB0aW9uOw0K
ICAgIERXT1JEICAgICAgIGR3U3R5bGU7DQogICAgTFBDV1NUUiAgICAgbHBzekljb247DQogICAg
RFdPUkRfUFRSICAgZHdDb250ZXh0SGVscElkOw0KICAgIE1TR0JPWENBTExCQUNLICAgICAgbHBm
bk1zZ0JveENhbGxiYWNrOw0KICAgIERXT1JEICAgICAgIGR3TGFuZ3VhZ2VJZDsNCn0gTVNHQk9Y
UEFSQU1TVywgKlBNU0dCT1hQQVJBTVNXLCAqTFBNU0dCT1hQQVJBTVNXOw0KDQp0eXBlZGVmIE1T
R0JPWFBBUkFNU1cgTVNHQk9YUEFSQU1TOw0KdHlwZWRlZiBQTVNHQk9YUEFSQU1TVyBQTVNHQk9Y
UEFSQU1TOw0KdHlwZWRlZiBMUE1TR0JPWFBBUkFNU1cgTFBNU0dCT1hQQVJBTVM7DQoNCg0KDQoN
CiNsaW5lIDkyNjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KaW50DQpfX3N0ZGNhbGwNCk1lc3NhZ2VCb3hJbmRpcmVjdEEoDQogICAgICBjb25zdCBN
U0dCT1hQQVJBTVNBICogbHBtYnApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3Rk
Y2FsbA0KTWVzc2FnZUJveEluZGlyZWN0VygNCiAgICAgIGNvbnN0IE1TR0JPWFBBUkFNU1cgKiBs
cG1icCk7DQoNCg0KDQoNCiNsaW5lIDkyODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGlu
ZSA5MjgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5lIDkyODYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
Ck1lc3NhZ2VCZWVwKA0KICAgICAgVUlOVCB1VHlwZSk7DQoNCiNsaW5lIDkyOTkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA5MzAyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0K
I2xpbmUgOTMwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNClNob3dDdXJzb3IoDQogICAgICBCT09M
IGJTaG93KTsNCg0KI2xpbmUgOTMyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldEN1cnNvclBvcygNCiAgICAgIGludCBY
LA0KICAgICAgaW50IFkpOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpTZXRQaHlzaWNhbEN1cnNvclBvcygNCiAgICAgIGludCBYLA0KICAgICAgaW50IFkpOw0K
I2xpbmUgOTM0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgOTM0MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
SENVUlNPUg0KX19zdGRjYWxsDQpTZXRDdXJzb3IoDQogICAgICBIQ1VSU09SIGhDdXJzb3IpOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q3Vyc29yUG9zKA0K
ICAgICAgTFBQT0lOVCBscFBvaW50KTsNCg0KI2xpbmUgOTM2MCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0UGh5c2lj
YWxDdXJzb3JQb3MoDQogICAgICBMUFBPSU5UIGxwUG9pbnQpOw0KI2xpbmUgOTM3MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3Rk
Y2FsbA0KR2V0Q2xpcEN1cnNvcigNCiAgICAgIExQUkVDVCBscFJlY3QpOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkhDVVJTT1INCl9fc3RkY2FsbA0KR2V0Q3Vyc29yKA0KICAgIHZvaWQpOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ3JlYXRlQ2FyZXQoDQog
ICAgICBIV05EIGhXbmQsDQogICAgICBIQklUTUFQIGhCaXRtYXAsDQogICAgICBpbnQgbldpZHRo
LA0KICAgICAgaW50IG5IZWlnaHQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9f
c3RkY2FsbA0KR2V0Q2FyZXRCbGlua1RpbWUoDQogICAgdm9pZCk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRDYXJldEJsaW5rVGltZSgNCiAgICAgIFVJTlQg
dU1TZWNvbmRzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRl
c3Ryb3lDYXJldCgNCiAgICB2b2lkKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkhpZGVDYXJldCgNCiAgICAgIEhXTkQgaFduZCk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTaG93Q2FyZXQoDQogICAgICBIV05EIGhXbmQpOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q2FyZXRQb3MoDQog
ICAgICBpbnQgWCwNCiAgICAgIGludCBZKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkdldENhcmV0UG9zKA0KICAgICAgTFBQT0lOVCBscFBvaW50KTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNsaWVudFRvU2NyZWVuKA0KICAg
ICAgSFdORCBoV25kLA0KICAgICAgTFBQT0lOVCBscFBvaW50KTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNjcmVlblRvQ2xpZW50KA0KICAgICAgSFdORCBoV25k
LA0KICAgICAgTFBQT0lOVCBscFBvaW50KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KTG9naWNhbFRvUGh5c2ljYWxQb2ludCgNCiAgICAgIEhXTkQgaFduZCwN
CiAgICAgIExQUE9JTlQgbHBQb2ludCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpQaHlzaWNhbFRvTG9naWNhbFBvaW50KA0KICAgICAgSFdORCBoV25kLA0KICAg
ICAgTFBQT0lOVCBscFBvaW50KTsNCg0KI2xpbmUgOTQ2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTQ4NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0K
TWFwV2luZG93UG9pbnRzKA0KICAgICAgSFdORCBoV25kRnJvbSwNCiAgICAgIEhXTkQgaFduZFRv
LA0KICAgICAgTFBQT0lOVCBscFBvaW50cywNCiAgICAgIFVJTlQgY1BvaW50cyk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxsDQpXaW5kb3dGcm9tUG9pbnQoDQogICAg
ICBQT0lOVCBQb2ludCk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNh
bGwNCldpbmRvd0Zyb21QaHlzaWNhbFBvaW50KA0KICAgICAgUE9JTlQgUG9pbnQpOw0KI2xpbmUg
OTUwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
V05EDQpfX3N0ZGNhbGwNCkNoaWxkV2luZG93RnJvbVBvaW50KA0KICAgICAgSFdORCBoV25kUGFy
ZW50LA0KICAgICAgUE9JTlQgUG9pbnQpOw0KDQojbGluZSA5NTE3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBQ
QyBGYW1pbHkNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNsaXBD
dXJzb3IoDQogICAgICBjb25zdCBSRUNUICpscFJlY3QpOw0KI2xpbmUgOTUyNyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpf
X3N0ZGNhbGwNCkNoaWxkV2luZG93RnJvbVBvaW50RXgoDQogICAgICBIV05EIGh3bmQsDQogICAg
ICBQT0lOVCBwdCwNCiAgICAgIFVJTlQgZmxhZ3MpOw0KDQojbGluZSA5NTQ3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgOTU1MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk1OTMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTYwMiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDk2MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgOTYxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
RFdPUkQNCl9fc3RkY2FsbA0KR2V0U3lzQ29sb3IoDQogICAgICBpbnQgbkluZGV4KTsNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkhCUlVTSA0KX19zdGRjYWxsDQpHZXRTeXNDb2xvckJydXNo
KA0KICAgICAgaW50IG5JbmRleCk7DQoNCg0KI2xpbmUgOTYzMiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFN5c0Nv
bG9ycygNCiAgICAgIGludCBjRWxlbWVudHMsDQogICAgICBjb25zdCBJTlQgKiBscGFFbGVtZW50
cywNCiAgICAgIGNvbnN0IENPTE9SUkVGICogbHBhUmdiVmFsdWVzKTsNCg0KI2xpbmUgOTY0MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDk2NDUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRyYXdGb2N1c1Jl
Y3QoDQogICAgICBIREMgaERDLA0KICAgICAgY29uc3QgUkVDVCAqIGxwcmMpOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpGaWxsUmVjdCgNCiAgICAgIEhEQyBoREMs
DQogICAgICBjb25zdCBSRUNUICpscHJjLA0KICAgICAgSEJSVVNIIGhicik7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkZyYW1lUmVjdCgNCiAgICAgIEhEQyBoREMs
DQogICAgICBjb25zdCBSRUNUICpscHJjLA0KICAgICAgSEJSVVNIIGhicik7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJbnZlcnRSZWN0KA0KICAgICAgSERDIGhE
QywNCiAgICAgIGNvbnN0IFJFQ1QgKmxwcmMpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KU2V0UmVjdCgNCiAgICAgIExQUkVDVCBscHJjLA0KICAgICAgaW50IHhM
ZWZ0LA0KICAgICAgaW50IHlUb3AsDQogICAgICBpbnQgeFJpZ2h0LA0KICAgICAgaW50IHlCb3R0
b20pOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0UmVjdEVt
cHR5KA0KICAgICAgTFBSRUNUIGxwcmMpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KQ29weVJlY3QoDQogICAgICBMUFJFQ1QgbHByY0RzdCwNCiAgICAgIGNvbnN0
IFJFQ1QgKmxwcmNTcmMpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KSW5mbGF0ZVJlY3QoDQogICAgICBMUFJFQ1QgbHByYywNCiAgICAgIGludCBkeCwNCiAgICAg
IGludCBkeSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJbnRl
cnNlY3RSZWN0KA0KICAgICAgTFBSRUNUIGxwcmNEc3QsDQogICAgICBjb25zdCBSRUNUICpscHJj
U3JjMSwNCiAgICAgIGNvbnN0IFJFQ1QgKmxwcmNTcmMyKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClVuaW9uUmVjdCgNCiAgICAgIExQUkVDVCBscHJjRHN0LA0K
ICAgICAgY29uc3QgUkVDVCAqbHByY1NyYzEsDQogICAgICBjb25zdCBSRUNUICpscHJjU3JjMik7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTdWJ0cmFjdFJlY3Qo
DQogICAgICBMUFJFQ1QgbHByY0RzdCwNCiAgICAgIGNvbnN0IFJFQ1QgKmxwcmNTcmMxLA0KICAg
ICAgY29uc3QgUkVDVCAqbHByY1NyYzIpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KT2Zmc2V0UmVjdCgNCiAgICAgIExQUkVDVCBscHJjLA0KICAgICAgaW50IGR4
LA0KICAgICAgaW50IGR5KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCklzUmVjdEVtcHR5KA0KICAgICAgY29uc3QgUkVDVCAqbHByYyk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFcXVhbFJlY3QoDQogICAgICBjb25zdCBSRUNU
ICpscHJjMSwNCiAgICAgIGNvbnN0IFJFQ1QgKmxwcmMyKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClB0SW5SZWN0KA0KICAgICAgY29uc3QgUkVDVCAqbHByYywN
CiAgICAgIFBPSU5UIHB0KTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KV09SRA0KX19z
dGRjYWxsDQpHZXRXaW5kb3dXb3JkKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgaW50IG5JbmRl
eCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KV09SRA0KX19zdGRjYWxsDQpTZXRXaW5kb3dX
b3JkKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgaW50IG5JbmRleCwNCiAgICAgIFdPUkQgd05l
d1dvcmQpOw0KDQojbGluZSA5NzgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSA5
NzgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxsDQpHZXRXaW5kb3dMb25nQSgNCiAgICAgIEhX
TkQgaFduZCwNCiAgICAgIGludCBuSW5kZXgpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05H
DQpfX3N0ZGNhbGwNCkdldFdpbmRvd0xvbmdXKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgaW50
IG5JbmRleCk7DQoNCg0KDQoNCiNsaW5lIDk4MDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxsDQpTZXRXaW5kb3dMb25nQSgN
CiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGludCBuSW5kZXgsDQogICAgICBMT05HIGR3TmV3TG9u
Zyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KU2V0V2luZG93TG9u
Z1coDQogICAgICBIV05EIGhXbmQsDQogICAgICBpbnQgbkluZGV4LA0KICAgICAgTE9ORyBkd05l
d0xvbmcpOw0KDQoNCg0KDQojbGluZSA5ODI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05HX1BUUg0KX19zdGRjYWxsDQpHZXRXaW5kb3dM
b25nUHRyQSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGludCBuSW5kZXgpOw0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpMT05HX1BUUg0KX19zdGRjYWxsDQpHZXRXaW5kb3dMb25nUHRyVygNCiAg
ICAgIEhXTkQgaFduZCwNCiAgICAgIGludCBuSW5kZXgpOw0KDQoNCg0KDQojbGluZSA5ODQ2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxPTkdfUFRS
DQpfX3N0ZGNhbGwNClNldFdpbmRvd0xvbmdQdHJBKA0KICAgICAgSFdORCBoV25kLA0KICAgICAg
aW50IG5JbmRleCwNCiAgICAgIExPTkdfUFRSIGR3TmV3TG9uZyk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkxPTkdfUFRSDQpfX3N0ZGNhbGwNClNldFdpbmRvd0xvbmdQdHJXKA0KICAgICAgSFdO
RCBoV25kLA0KICAgICAgaW50IG5JbmRleCwNCiAgICAgIExPTkdfUFRSIGR3TmV3TG9uZyk7DQoN
Cg0KDQoNCiNsaW5lIDk4NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk4ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCiNsaW5lIDk4ODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDk4OTAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJl
Z2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCldPUkQN
Cl9fc3RkY2FsbA0KR2V0Q2xhc3NXb3JkKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgaW50IG5J
bmRleCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KV09SRA0KX19zdGRjYWxsDQpTZXRDbGFz
c1dvcmQoDQogICAgICBIV05EIGhXbmQsDQogICAgICBpbnQgbkluZGV4LA0KICAgICAgV09SRCB3
TmV3V29yZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0
Q2xhc3NMb25nQSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGludCBuSW5kZXgpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpHZXRDbGFzc0xvbmdXKA0KICAgICAg
SFdORCBoV25kLA0KICAgICAgaW50IG5JbmRleCk7DQoNCg0KDQoNCiNsaW5lIDk5MjkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3Rk
Y2FsbA0KU2V0Q2xhc3NMb25nQSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGludCBuSW5kZXgs
DQogICAgICBMT05HIGR3TmV3TG9uZyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpf
X3N0ZGNhbGwNClNldENsYXNzTG9uZ1coDQogICAgICBIV05EIGhXbmQsDQogICAgICBpbnQgbklu
ZGV4LA0KICAgICAgTE9ORyBkd05ld0xvbmcpOw0KDQoNCg0KDQojbGluZSA5OTQ5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVTE9OR19QVFIN
Cl9fc3RkY2FsbA0KR2V0Q2xhc3NMb25nUHRyQSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGlu
dCBuSW5kZXgpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVTE9OR19QVFINCl9fc3RkY2FsbA0K
R2V0Q2xhc3NMb25nUHRyVygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIGludCBuSW5kZXgpOw0K
DQoNCg0KDQojbGluZSA5OTY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNClVMT05HX1BUUg0KX19zdGRjYWxsDQpTZXRDbGFzc0xvbmdQdHJBKA0KICAg
ICAgSFdORCBoV25kLA0KICAgICAgaW50IG5JbmRleCwNCiAgICAgIExPTkdfUFRSIGR3TmV3TG9u
Zyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVMT05HX1BUUg0KX19zdGRjYWxsDQpTZXRDbGFz
c0xvbmdQdHJXKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgaW50IG5JbmRleCwNCiAgICAgIExP
TkdfUFRSIGR3TmV3TG9uZyk7DQoNCg0KDQoNCiNsaW5lIDk5ODkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwMDA5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMDAxMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0
UHJvY2Vzc0RlZmF1bHRMYXlvdXQoDQogICAgICBEV09SRCAqcGR3RGVmYXVsdExheW91dCk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRQcm9jZXNzRGVmYXVs
dExheW91dCgNCiAgICAgIERXT1JEIGR3RGVmYXVsdExheW91dCk7DQojbGluZSAxMDAyNSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0
ZGNhbGwNCkdldERlc2t0b3BXaW5kb3coDQogICAgdm9pZCk7DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpIV05EDQpfX3N0ZGNhbGwNCkdldFBhcmVudCgNCiAgICAgIEhXTkQgaFduZCk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxsDQpTZXRQYXJlbnQoDQogICAg
ICBIV05EIGhXbmRDaGlsZCwNCiAgICAgIEhXTkQgaFduZE5ld1BhcmVudCk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtQ2hpbGRXaW5kb3dzKA0KICAgICAg
SFdORCBoV25kUGFyZW50LA0KICAgICAgV05ERU5VTVBST0MgbHBFbnVtRnVuYywNCiAgICAgIExQ
QVJBTSBsUGFyYW0pOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxs
DQpGaW5kV2luZG93QSgNCiAgICAgIExQQ1NUUiBscENsYXNzTmFtZSwNCiAgICAgIExQQ1NUUiBs
cFdpbmRvd05hbWUpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNhbGwNCkZp
bmRXaW5kb3dXKA0KICAgICAgTFBDV1NUUiBscENsYXNzTmFtZSwNCiAgICAgIExQQ1dTVFIgbHBX
aW5kb3dOYW1lKTsNCg0KDQoNCg0KI2xpbmUgMTAwNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNhbGwNCkZpbmRXaW5kb3dF
eEEoDQogICAgICBIV05EIGhXbmRQYXJlbnQsDQogICAgICBIV05EIGhXbmRDaGlsZEFmdGVyLA0K
ICAgICAgTFBDU1RSIGxwc3pDbGFzcywNCiAgICAgIExQQ1NUUiBscHN6V2luZG93KTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRjYWxsDQpGaW5kV2luZG93RXhXKA0KICAgICAg
SFdORCBoV25kUGFyZW50LA0KICAgICAgSFdORCBoV25kQ2hpbGRBZnRlciwNCiAgICAgIExQQ1dT
VFIgbHBzekNsYXNzLA0KICAgICAgTFBDV1NUUiBscHN6V2luZG93KTsNCg0KDQoNCg0KI2xpbmUg
MTAwOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
SFdORA0KX19zdGRjYWxsDQpHZXRTaGVsbFdpbmRvdygNCiAgICB2b2lkKTsNCg0KI2xpbmUgMTAx
MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClJlZ2lzdGVyU2hlbGxIb29rV2luZG93KA0KICAgICAgSFdORCBod25k
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkRlcmVnaXN0ZXJT
aGVsbEhvb2tXaW5kb3coDQogICAgICBIV05EIGh3bmQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KRW51bVdpbmRvd3MoDQogICAgICBXTkRFTlVNUFJPQyBscEVu
dW1GdW5jLA0KICAgICAgTFBBUkFNIGxQYXJhbSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpFbnVtVGhyZWFkV2luZG93cygNCiAgICAgIERXT1JEIGR3VGhyZWFk
SWQsDQogICAgICBXTkRFTlVNUFJPQyBscGZuLA0KICAgICAgTFBBUkFNIGxQYXJhbSk7DQoNCg0K
DQoNCiNsaW5lIDEwMTM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0Q2xhc3NOYW1lQSgNCiAg
ICAgIEhXTkQgaFduZCwNCiAgICAgIExQU1RSIGxwQ2xhc3NOYW1lLA0KICAgICAgaW50IG5NYXhD
b3VudA0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRD
bGFzc05hbWVXKA0KICAgICAgSFdORCBoV25kLA0KICAgICAgTFBXU1RSIGxwQ2xhc3NOYW1lLA0K
ICAgICAgaW50IG5NYXhDb3VudA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDEwMTYyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTAxODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDEwMTg2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhXTkQNCl9fc3Rk
Y2FsbA0KR2V0VG9wV2luZG93KA0KICAgICAgSFdORCBoV25kKTsNCg0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFdpbmRvd1RocmVhZFByb2Nlc3NJ
ZCgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIExQRFdPUkQgbHBkd1Byb2Nlc3NJZCk7DQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNHVUlUaHJlYWQoDQog
ICAgICBCT09MIGJDb252ZXJ0KTsNCg0KI2xpbmUgMTAyMTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNhbGwNCkdl
dExhc3RBY3RpdmVQb3B1cCgNCiAgICAgIEhXTkQgaFduZCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxMDI0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQojbGluZSAxMDI0
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05E
DQpfX3N0ZGNhbGwNCkdldFdpbmRvdygNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIFVJTlQgdUNt
ZCk7DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhIT09LDQpfX3N0ZGNhbGwN
ClNldFdpbmRvd3NIb29rQSgNCiAgICAgIGludCBuRmlsdGVyVHlwZSwNCiAgICAgIEhPT0tQUk9D
IHBmbkZpbHRlclByb2MpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpISE9PSw0KX19zdGRjYWxs
DQpTZXRXaW5kb3dzSG9va1coDQogICAgICBpbnQgbkZpbHRlclR5cGUsDQogICAgICBIT09LUFJP
QyBwZm5GaWx0ZXJQcm9jKTsNCg0KDQoNCg0KI2xpbmUgMTAyNzMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MDI5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClVuaG9va1dpbmRvd3NIb29rKA0KICAgICAgaW50IG5Db2RlLA0KICAg
ICAgSE9PS1BST0MgcGZuRmlsdGVyUHJvYyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEhP
T0sNCl9fc3RkY2FsbA0KU2V0V2luZG93c0hvb2tFeEEoDQogICAgICBpbnQgaWRIb29rLA0KICAg
ICAgSE9PS1BST0MgbHBmbiwNCiAgICAgIEhJTlNUQU5DRSBobW9kLA0KICAgICAgRFdPUkQgZHdU
aHJlYWRJZCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhIT09LDQpfX3N0ZGNhbGwNClNldFdp
bmRvd3NIb29rRXhXKA0KICAgICAgaW50IGlkSG9vaywNCiAgICAgIEhPT0tQUk9DIGxwZm4sDQog
ICAgICBISU5TVEFOQ0UgaG1vZCwNCiAgICAgIERXT1JEIGR3VGhyZWFkSWQpOw0KDQoNCg0KDQoj
bGluZSAxMDMyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClVuaG9va1dpbmRvd3NIb29rRXgoDQogICAgICBISE9PSyBo
aGspOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxSRVNVTFQNCl9fc3RkY2FsbA0KQ2FsbE5l
eHRIb29rRXgoDQogICAgICBISE9PSyBoaGssDQogICAgICBpbnQgbkNvZGUsDQogICAgICBXUEFS
QU0gd1BhcmFtLA0KICAgICAgTFBBUkFNIGxQYXJhbSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDEwMzUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI2xpbmUgMTAzNTEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDEwMzUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTAzOTUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNsaW5lIDEwNDAwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCg0KDQojbGluZSAxMDQwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA0Mjgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNoZWNr
TWVudVJhZGlvSXRlbSgNCiAgICAgIEhNRU5VIGhtZW51LA0KICAgICAgVUlOVCBmaXJzdCwNCiAg
ICAgIFVJTlQgbGFzdCwNCiAgICAgIFVJTlQgY2hlY2ssDQogICAgICBVSU5UIGZsYWdzKTsNCiNs
aW5lIDEwNDQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCB7DQogICAgV09SRCB2ZXJzaW9uTnVtYmVyOw0KICAgIFdPUkQgb2Zmc2V0Ow0KfSBNRU5VSVRF
TVRFTVBMQVRFSEVBREVSLCAqUE1FTlVJVEVNVEVNUExBVEVIRUFERVI7DQoNCnR5cGVkZWYgc3Ry
dWN0IHsgICAgICAgIA0KICAgIFdPUkQgbXRPcHRpb247DQogICAgV09SRCBtdElEOw0KICAgIFdD
SEFSIG10U3RyaW5nWzFdOw0KfSBNRU5VSVRFTVRFTVBMQVRFLCAqUE1FTlVJVEVNVEVNUExBVEU7
DQoNCg0KI2xpbmUgMTA0NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojbGluZSAxMDQ2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNDkzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI2xpbmUgMTA0OTcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDUwNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEJJVE1BUA0KX19zdGRjYWxsDQpMb2FkQml0bWFwQSgNCiAg
ICAgIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQogICAgICBMUENTVFIgbHBCaXRtYXBOYW1lKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSEJJVE1BUA0KX19zdGRjYWxsDQpMb2FkQml0bWFwVygNCiAg
ICAgIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQogICAgICBMUENXU1RSIGxwQml0bWFwTmFtZSk7DQoN
Cg0KDQoNCiNsaW5lIDEwNTMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMDUz
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3Agb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpIQ1VSU09SDQpfX3N0ZGNhbGwNCkxvYWRDdXJzb3JBKA0KICAgICAgSElOU1RBTkNFIGhJbnN0
YW5jZSwNCiAgICAgIExQQ1NUUiBscEN1cnNvck5hbWUpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpIQ1VSU09SDQpfX3N0ZGNhbGwNCkxvYWRDdXJzb3JXKA0KICAgICAgSElOU1RBTkNFIGhJbnN0
YW5jZSwNCiAgICAgIExQQ1dTVFIgbHBDdXJzb3JOYW1lKTsNCg0KDQoNCg0KI2xpbmUgMTA1NTYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDEwNTU4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhDVVJTT1INCl9fc3RkY2FsbA0KTG9hZEN1
cnNvckZyb21GaWxlQSgNCiAgICAgIExQQ1NUUiBscEZpbGVOYW1lKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KSENVUlNPUg0KX19zdGRjYWxsDQpMb2FkQ3Vyc29yRnJvbUZpbGVXKA0KICAgICAg
TFBDV1NUUiBscEZpbGVOYW1lKTsNCg0KDQoNCg0KI2xpbmUgMTA1NzggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCiNsaW5lIDEwNTgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBHYW1lcyBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhDVVJTT1INCl9fc3RkY2FsbA0KQ3JlYXRlQ3Vyc29y
KA0KICAgICAgSElOU1RBTkNFIGhJbnN0LA0KICAgICAgaW50IHhIb3RTcG90LA0KICAgICAgaW50
IHlIb3RTcG90LA0KICAgICAgaW50IG5XaWR0aCwNCiAgICAgIGludCBuSGVpZ2h0LA0KICAgICAg
Y29uc3Qgdm9pZCAqcHZBTkRQbGFuZSwNCiAgICAgIGNvbnN0IHZvaWQgKnB2WE9SUGxhbmUpOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGVzdHJveUN1cnNvcigN
CiAgICAgIEhDVVJTT1IgaEN1cnNvcik7DQoNCiNsaW5lIDEwNjA0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA2MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCiNsaW5lIDEwNjIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA2NDEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQojbGluZSAxMDY0NSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KDQoNCg0KI2xpbmUgMTA2NTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFN5c3RlbUN1cnNvcigNCiAgICAgIEhDVVJTT1IgaGN1
ciwNCiAgICAgIERXT1JEIGlkKTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0lDT05JTkZPIHsNCiAgICBC
T09MICAgIGZJY29uOw0KICAgIERXT1JEICAgeEhvdHNwb3Q7DQogICAgRFdPUkQgICB5SG90c3Bv
dDsNCiAgICBIQklUTUFQIGhibU1hc2s7DQogICAgSEJJVE1BUCBoYm1Db2xvcjsNCn0gSUNPTklO
Rk87DQp0eXBlZGVmIElDT05JTkZPICpQSUNPTklORk87DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KSElDT04NCl9fc3RkY2FsbA0KTG9hZEljb25BKA0KICAgICAgSElOU1RBTkNFIGhJbnN0YW5j
ZSwNCiAgICAgIExQQ1NUUiBscEljb25OYW1lKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSElD
T04NCl9fc3RkY2FsbA0KTG9hZEljb25XKA0KICAgICAgSElOU1RBTkNFIGhJbnN0YW5jZSwNCiAg
ICAgIExQQ1dTVFIgbHBJY29uTmFtZSk7DQoNCg0KDQoNCiNsaW5lIDEwNjg3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxs
DQpQcml2YXRlRXh0cmFjdEljb25zQSgNCiAgICAgIExQQ1NUUiBzekZpbGVOYW1lLA0KICAgICAg
aW50IG5JY29uSW5kZXgsDQogICAgICBpbnQgY3hJY29uLA0KICAgICAgaW50IGN5SWNvbiwNCiAg
ICAgIEhJQ09OICpwaGljb24sDQogICAgICBVSU5UICpwaWNvbmlkLA0KICAgICAgVUlOVCBuSWNv
bnMsDQogICAgICBVSU5UIGZsYWdzKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19z
dGRjYWxsDQpQcml2YXRlRXh0cmFjdEljb25zVygNCiAgICAgIExQQ1dTVFIgc3pGaWxlTmFtZSwN
CiAgICAgIGludCBuSWNvbkluZGV4LA0KICAgICAgaW50IGN4SWNvbiwNCiAgICAgIGludCBjeUlj
b24sDQogICAgICBISUNPTiAqcGhpY29uLA0KICAgICAgVUlOVCAqcGljb25pZCwNCiAgICAgIFVJ
TlQgbkljb25zLA0KICAgICAgVUlOVCBmbGFncyk7DQoNCg0KDQoNCiNsaW5lIDEwNzE4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhJQ09ODQpfX3N0
ZGNhbGwNCkNyZWF0ZUljb24oDQogICAgICBISU5TVEFOQ0UgaEluc3RhbmNlLA0KICAgICAgaW50
IG5XaWR0aCwNCiAgICAgIGludCBuSGVpZ2h0LA0KICAgICAgQllURSBjUGxhbmVzLA0KICAgICAg
QllURSBjQml0c1BpeGVsLA0KICAgICAgY29uc3QgQllURSAqbHBiQU5EYml0cywNCiAgICAgIGNv
bnN0IEJZVEUgKmxwYlhPUmJpdHMpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KRGVzdHJveUljb24oDQogICAgICBISUNPTiBoSWNvbik7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkxvb2t1cEljb25JZEZyb21EaXJlY3RvcnkoDQog
ICAgICBQQllURSBwcmVzYml0cywNCiAgICAgIEJPT0wgZkljb24pOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkxvb2t1cEljb25JZEZyb21EaXJlY3RvcnlFeCgN
CiAgICAgIFBCWVRFIHByZXNiaXRzLA0KICAgICAgQk9PTCBmSWNvbiwNCiAgICAgIGludCBjeERl
c2lyZWQsDQogICAgICBpbnQgY3lEZXNpcmVkLA0KICAgICAgVUlOVCBGbGFncyk7DQojbGluZSAx
MDc1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpI
SUNPTg0KX19zdGRjYWxsDQpDcmVhdGVJY29uRnJvbVJlc291cmNlKA0KICAgICAgUEJZVEUgcHJl
c2JpdHMsDQogICAgICBEV09SRCBkd1Jlc1NpemUsDQogICAgICBCT09MIGZJY29uLA0KICAgICAg
RFdPUkQgZHdWZXIpOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSElDT04NCl9fc3RkY2Fs
bA0KQ3JlYXRlSWNvbkZyb21SZXNvdXJjZUV4KA0KICAgICAgUEJZVEUgcHJlc2JpdHMsDQogICAg
ICBEV09SRCBkd1Jlc1NpemUsDQogICAgICBCT09MIGZJY29uLA0KICAgICAgRFdPUkQgZHdWZXIs
DQogICAgICBpbnQgY3hEZXNpcmVkLA0KICAgICAgaW50IGN5RGVzaXJlZCwNCiAgICAgIFVJTlQg
RmxhZ3MpOw0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NVUlNPUlNIQVBFDQp7DQogICAgaW50ICAg
ICB4SG90U3BvdDsNCiAgICBpbnQgICAgIHlIb3RTcG90Ow0KICAgIGludCAgICAgY3g7DQogICAg
aW50ICAgICBjeTsNCiAgICBpbnQgICAgIGNiV2lkdGg7DQogICAgQllURSAgICBQbGFuZXM7DQog
ICAgQllURSAgICBCaXRzUGl4ZWw7DQp9IENVUlNPUlNIQVBFLCAgKkxQQ1VSU09SU0hBUEU7DQoj
bGluZSAxMDc5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMTA3OTIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpMb2FkSW1hZ2VBKA0K
ICAgICAgSElOU1RBTkNFIGhJbnN0LA0KICAgICAgTFBDU1RSIG5hbWUsDQogICAgICBVSU5UIHR5
cGUsDQogICAgICBpbnQgY3gsDQogICAgICBpbnQgY3ksDQogICAgICBVSU5UIGZ1TG9hZCk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkhBTkRMRQ0KX19zdGRjYWxsDQpMb2FkSW1hZ2VXKA0KICAg
ICAgSElOU1RBTkNFIGhJbnN0LA0KICAgICAgTFBDV1NUUiBuYW1lLA0KICAgICAgVUlOVCB0eXBl
LA0KICAgICAgaW50IGN4LA0KICAgICAgaW50IGN5LA0KICAgICAgVUlOVCBmdUxvYWQpOw0KDQoN
Cg0KDQojbGluZSAxMDg0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ29weUltYWdlKA0KICAgICAgSEFORExFIGgs
DQogICAgICBVSU5UIHR5cGUsDQogICAgICBpbnQgY3gsDQogICAgICBpbnQgY3ksDQogICAgICBV
SU5UIGZsYWdzKTsNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDg2MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIERyYXdJY29u
RXgoDQogICAgICBIREMgaGRjLA0KICAgICAgaW50IHhMZWZ0LA0KICAgICAgaW50IHlUb3AsDQog
ICAgICBISUNPTiBoSWNvbiwNCiAgICAgIGludCBjeFdpZHRoLA0KICAgICAgaW50IGN5V2lkdGgs
DQogICAgICBVSU5UIGlzdGVwSWZBbmlDdXIsDQogICAgICBIQlJVU0ggaGJyRmxpY2tlckZyZWVE
cmF3LA0KICAgICAgVUlOVCBkaUZsYWdzKTsNCg0KI2xpbmUgMTA4NzQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMDg3NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkhJQ09ODQpfX3N0ZGNhbGwNCkNyZWF0ZUljb25JbmRpcmVjdCgNCiAg
ICAgIFBJQ09OSU5GTyBwaWNvbmluZm8pOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhJQ09O
DQpfX3N0ZGNhbGwNCkNvcHlJY29uKA0KICAgICAgSElDT04gaEljb24pOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0SWNvbkluZm8oDQogICAgICBISUNPTiBo
SWNvbiwNCiAgICAgIFBJQ09OSU5GTyBwaWNvbmluZm8pOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9J
Q09OSU5GT0VYQSB7DQogICAgRFdPUkQgICBjYlNpemU7DQogICAgQk9PTCAgICBmSWNvbjsNCiAg
ICBEV09SRCAgIHhIb3RzcG90Ow0KICAgIERXT1JEICAgeUhvdHNwb3Q7DQogICAgSEJJVE1BUCBo
Ym1NYXNrOw0KICAgIEhCSVRNQVAgaGJtQ29sb3I7DQogICAgV09SRCAgICB3UmVzSUQ7DQogICAg
Q0hBUiAgICBzek1vZE5hbWVbMjYwXTsNCiAgICBDSEFSICAgIHN6UmVzTmFtZVsyNjBdOw0KfSBJ
Q09OSU5GT0VYQSwgKlBJQ09OSU5GT0VYQTsNCnR5cGVkZWYgc3RydWN0IF9JQ09OSU5GT0VYVyB7
DQogICAgRFdPUkQgICBjYlNpemU7DQogICAgQk9PTCAgICBmSWNvbjsNCiAgICBEV09SRCAgIHhI
b3RzcG90Ow0KICAgIERXT1JEICAgeUhvdHNwb3Q7DQogICAgSEJJVE1BUCBoYm1NYXNrOw0KICAg
IEhCSVRNQVAgaGJtQ29sb3I7DQogICAgV09SRCAgICB3UmVzSUQ7DQogICAgV0NIQVIgICBzek1v
ZE5hbWVbMjYwXTsNCiAgICBXQ0hBUiAgIHN6UmVzTmFtZVsyNjBdOw0KfSBJQ09OSU5GT0VYVywg
KlBJQ09OSU5GT0VYVzsNCg0KdHlwZWRlZiBJQ09OSU5GT0VYVyBJQ09OSU5GT0VYOw0KdHlwZWRl
ZiBQSUNPTklORk9FWFcgUElDT05JTkZPRVg7DQoNCg0KDQojbGluZSAxMDkzMCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkdldEljb25JbmZvRXhBKA0KICAgICAgSElDT04gaGljb24sDQogICAgICBQSUNPTklORk9FWEEg
cGljb25pbmZvKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRJ
Y29uSW5mb0V4VygNCiAgICAgIEhJQ09OIGhpY29uLA0KICAgICAgUElDT05JTkZPRVhXIHBpY29u
aW5mbyk7DQoNCg0KDQoNCiNsaW5lIDEwOTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI2xp
bmUgMTA5NDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNsaW5lIDEwOTU0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMDk1NiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTA3MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KDQojbGluZSAxMTA3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDEx
MDc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDExMDgyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5lIDExMDg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTExMzQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNsaW5lIDExMTM5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCg0KDQojbGluZSAxMTE0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCiNsaW5lIDExMTQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMTc1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5lIDExMTc4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTE5NSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KI2xpbmUgMTEyMDAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQoNCg0KDQojbGluZSAxMTIwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMjE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEyNjMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNsaW5lIDExMjY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KDQoNCg0KI2xpbmUgMTEyNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KI2xp
bmUgMTEyNzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxMTI4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxMTMyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEzNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMzU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCiNsaW5lIDExMzYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxMTM2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEzOTUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCg0KI2xpbmUgMTEzOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTQxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE0MjggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDExNDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTQ1MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eQ0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpJc0RpYWxvZ01lc3NhZ2VBKA0KICAgICAgSFdORCBoRGxnLA0KICAgICAgTFBNU0cgbHBNc2cp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzRGlhbG9nTWVzc2Fn
ZVcoDQogICAgICBIV05EIGhEbGcsDQogICAgICBMUE1TRyBscE1zZyk7DQoNCg0KDQoNCiNsaW5l
IDExNDgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMTQ4MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
Ck1hcERpYWxvZ1JlY3QoDQogICAgICBIV05EIGhEbGcsDQogICAgICBMUFJFQ1QgbHBSZWN0KTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KRGxnRGlyTGlzdEEoDQog
ICAgICBIV05EIGhEbGcsDQogICAgICBMUFNUUiBscFBhdGhTcGVjLA0KICAgICAgaW50IG5JRExp
c3RCb3gsDQogICAgICBpbnQgbklEU3RhdGljUGF0aCwNCiAgICAgIFVJTlQgdUZpbGVUeXBlKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkRsZ0Rpckxpc3RXKA0KICAg
ICAgSFdORCBoRGxnLA0KICAgICAgTFBXU1RSIGxwUGF0aFNwZWMsDQogICAgICBpbnQgbklETGlz
dEJveCwNCiAgICAgIGludCBuSURTdGF0aWNQYXRoLA0KICAgICAgVUlOVCB1RmlsZVR5cGUpOw0K
DQoNCg0KDQojbGluZSAxMTUxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMTE1
MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGxnRGlyU2VsZWN0RXhBKA0K
ICAgICAgSFdORCBod25kRGxnLA0KICAgICAgTFBTVFIgbHBTdHJpbmcsDQogICAgICBpbnQgY2hD
b3VudCwNCiAgICAgIGludCBpZExpc3RCb3gpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkRsZ0RpclNlbGVjdEV4VygNCiAgICAgIEhXTkQgaHduZERsZywNCiAgICAg
IExQV1NUUiBscFN0cmluZywNCiAgICAgIGludCBjaENvdW50LA0KICAgICAgaW50IGlkTGlzdEJv
eCk7DQoNCg0KDQoNCiNsaW5lIDExNTU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpEbGdEaXJMaXN0Q29tYm9Cb3hBKA0K
ICAgICAgSFdORCBoRGxnLA0KICAgICAgTFBTVFIgbHBQYXRoU3BlYywNCiAgICAgIGludCBuSURD
b21ib0JveCwNCiAgICAgIGludCBuSURTdGF0aWNQYXRoLA0KICAgICAgVUlOVCB1RmlsZXR5cGUp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KRGxnRGlyTGlzdENvbWJv
Qm94VygNCiAgICAgIEhXTkQgaERsZywNCiAgICAgIExQV1NUUiBscFBhdGhTcGVjLA0KICAgICAg
aW50IG5JRENvbWJvQm94LA0KICAgICAgaW50IG5JRFN0YXRpY1BhdGgsDQogICAgICBVSU5UIHVG
aWxldHlwZSk7DQoNCg0KDQoNCiNsaW5lIDExNTgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGxnRGlyU2VsZWN0Q29t
Ym9Cb3hFeEEoDQogICAgICBIV05EIGh3bmREbGcsDQogICAgICBMUFNUUiBscFN0cmluZywNCiAg
ICAgIGludCBjY2hPdXQsDQogICAgICBpbnQgaWRDb21ib0JveCk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRGxnRGlyU2VsZWN0Q29tYm9Cb3hFeFcoDQogICAgICBI
V05EIGh3bmREbGcsDQogICAgICBMUFdTVFIgbHBTdHJpbmcsDQogICAgICBpbnQgY2NoT3V0LA0K
ICAgICAgaW50IGlkQ29tYm9Cb3gpOw0KDQoNCg0KDQojbGluZSAxMTYwMiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KI2xpbmUgMTE2MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxMTYzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5l
IDExNjM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTY0
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE3MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KI2xpbmUgMTE3NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCiNs
aW5lIDExNzQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMTE3NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDExNzU5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDExNzgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCiNs
aW5lIDExNzg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDExODM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAx
MTgzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTE4ODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGluZSAxMTg4MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5lIDExODg1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE4OTUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQojbGluZSAxMTg5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTkxNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQojbGluZSAxMTkyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTkzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQoNCiNsaW5lIDExOTM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVj
dCB0YWdTQ1JPTExJTkZPDQp7DQogICAgVUlOVCAgICBjYlNpemU7DQogICAgVUlOVCAgICBmTWFz
azsNCiAgICBpbnQgICAgIG5NaW47DQogICAgaW50ICAgICBuTWF4Ow0KICAgIFVJTlQgICAgblBh
Z2U7DQogICAgaW50ICAgICBuUG9zOw0KICAgIGludCAgICAgblRyYWNrUG9zOw0KfSAgIFNDUk9M
TElORk8sICAqTFBTQ1JPTExJTkZPOw0KdHlwZWRlZiBTQ1JPTExJTkZPIGNvbnN0ICAqTFBDU0NS
T0xMSU5GTzsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KU2V0U2Ny
b2xsSW5mbygNCiAgICAgIEhXTkQgaHduZCwNCiAgICAgIGludCBuQmFyLA0KICAgICAgTFBDU0NS
T0xMSU5GTyBscHNpLA0KICAgICAgQk9PTCByZWRyYXcpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0U2Nyb2xsSW5mbygNCiAgICAgIEhXTkQgaHduZCwNCiAg
ICAgIGludCBuQmFyLA0KICAgICAgTFBTQ1JPTExJTkZPIGxwc2kpOw0KDQoNCiNsaW5lIDExOTgy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNsaW5lIDExOTg0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMTk4NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCiNsaW5lIDExOTg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjAwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdNRElDUkVBVEVTVFJVQ1RBIHsNCiAgICBMUENTVFIgICBzekNsYXNzOw0KICAgIExQQ1NUUiAg
IHN6VGl0bGU7DQogICAgSEFORExFIGhPd25lcjsNCiAgICBpbnQgeDsNCiAgICBpbnQgeTsNCiAg
ICBpbnQgY3g7DQogICAgaW50IGN5Ow0KICAgIERXT1JEIHN0eWxlOw0KICAgIExQQVJBTSBsUGFy
YW07ICAgICAgICANCn0gTURJQ1JFQVRFU1RSVUNUQSwgKkxQTURJQ1JFQVRFU1RSVUNUQTsNCnR5
cGVkZWYgc3RydWN0IHRhZ01ESUNSRUFURVNUUlVDVFcgew0KICAgIExQQ1dTVFIgIHN6Q2xhc3M7
DQogICAgTFBDV1NUUiAgc3pUaXRsZTsNCiAgICBIQU5ETEUgaE93bmVyOw0KICAgIGludCB4Ow0K
ICAgIGludCB5Ow0KICAgIGludCBjeDsNCiAgICBpbnQgY3k7DQogICAgRFdPUkQgc3R5bGU7DQog
ICAgTFBBUkFNIGxQYXJhbTsgICAgICAgIA0KfSBNRElDUkVBVEVTVFJVQ1RXLCAqTFBNRElDUkVB
VEVTVFJVQ1RXOw0KDQp0eXBlZGVmIE1ESUNSRUFURVNUUlVDVFcgTURJQ1JFQVRFU1RSVUNUOw0K
dHlwZWRlZiBMUE1ESUNSRUFURVNUUlVDVFcgTFBNRElDUkVBVEVTVFJVQ1Q7DQoNCg0KDQojbGlu
ZSAxMjAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0xJ
RU5UQ1JFQVRFU1RSVUNUIHsNCiAgICBIQU5ETEUgaFdpbmRvd01lbnU7DQogICAgVUlOVCBpZEZp
cnN0Q2hpbGQ7DQp9IENMSUVOVENSRUFURVNUUlVDVCwgKkxQQ0xJRU5UQ1JFQVRFU1RSVUNUOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxSRVNVTFQNCl9fc3RkY2FsbA0KRGVmRnJhbWVQcm9j
QSgNCiAgICAgIEhXTkQgaFduZCwNCiAgICAgIEhXTkQgaFduZE1ESUNsaWVudCwNCiAgICAgIFVJ
TlQgdU1zZywNCiAgICAgIFdQQVJBTSB3UGFyYW0sDQogICAgICBMUEFSQU0gbFBhcmFtKTsNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFJFU1VMVA0KX19zdGRjYWxsDQpEZWZGcmFtZVByb2NXKA0K
ICAgICAgSFdORCBoV25kLA0KICAgICAgSFdORCBoV25kTURJQ2xpZW50LA0KICAgICAgVUlOVCB1
TXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgIExQQVJBTSBsUGFyYW0pOw0KDQoNCg0K
DQojbGluZSAxMjA2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQoNCkxSRVNVTFQNCl9fc3RkY2FsbA0KDQoNCg0KI2xpbmUgMTIwNzUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQpEZWZNRElDaGlsZFByb2NBKA0KICAgICAgSFdORCBoV25kLA0KICAg
ICAgVUlOVCB1TXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAgICAgIExQQVJBTSBsUGFyYW0p
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQoNCkxSRVNVTFQNCl9fc3RkY2FsbA0KDQoNCg0KI2xp
bmUgMTIwODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQpEZWZNRElDaGlsZFByb2NXKA0KICAg
ICAgSFdORCBoV25kLA0KICAgICAgVUlOVCB1TXNnLA0KICAgICAgV1BBUkFNIHdQYXJhbSwNCiAg
ICAgIExQQVJBTSBsUGFyYW0pOw0KDQoNCg0KDQojbGluZSAxMjA5OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpU
cmFuc2xhdGVNRElTeXNBY2NlbCgNCiAgICAgIEhXTkQgaFduZENsaWVudCwNCiAgICAgIExQTVNH
IGxwTXNnKTsNCg0KI2xpbmUgMTIxMDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpBcnJhbmdlSWNvbmljV2luZG93cygN
CiAgICAgIEhXTkQgaFduZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdORA0KX19zdGRj
YWxsDQpDcmVhdGVNRElXaW5kb3dBKA0KICAgICAgTFBDU1RSIGxwQ2xhc3NOYW1lLA0KICAgICAg
TFBDU1RSIGxwV2luZG93TmFtZSwNCiAgICAgIERXT1JEIGR3U3R5bGUsDQogICAgICBpbnQgWCwN
CiAgICAgIGludCBZLA0KICAgICAgaW50IG5XaWR0aCwNCiAgICAgIGludCBuSGVpZ2h0LA0KICAg
ICAgSFdORCBoV25kUGFyZW50LA0KICAgICAgSElOU1RBTkNFIGhJbnN0YW5jZSwNCiAgICAgIExQ
QVJBTSBsUGFyYW0pOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV05EDQpfX3N0ZGNhbGwNCkNy
ZWF0ZU1ESVdpbmRvd1coDQogICAgICBMUENXU1RSIGxwQ2xhc3NOYW1lLA0KICAgICAgTFBDV1NU
UiBscFdpbmRvd05hbWUsDQogICAgICBEV09SRCBkd1N0eWxlLA0KICAgICAgaW50IFgsDQogICAg
ICBpbnQgWSwNCiAgICAgIGludCBuV2lkdGgsDQogICAgICBpbnQgbkhlaWdodCwNCiAgICAgIEhX
TkQgaFduZFBhcmVudCwNCiAgICAgIEhJTlNUQU5DRSBoSW5zdGFuY2UsDQogICAgICBMUEFSQU0g
bFBhcmFtKTsNCg0KDQoNCg0KI2xpbmUgMTIxNDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpXT1JEDQpfX3N0ZGNhbGwNClRpbGVXaW5kb3dzKA0K
ICAgICAgSFdORCBod25kUGFyZW50LA0KICAgICAgVUlOVCB3SG93LA0KICAgICAgY29uc3QgUkVD
VCAqIGxwUmVjdCwNCiAgICAgIFVJTlQgY0tpZHMsDQogICAgICBjb25zdCBIV05EICAqIGxwS2lk
cyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KV09SRA0KX19zdGRjYWxsIENhc2NhZGVXaW5k
b3dzKA0KICAgICAgSFdORCBod25kUGFyZW50LA0KICAgICAgVUlOVCB3SG93LA0KICAgICAgY29u
c3QgUkVDVCAqIGxwUmVjdCwNCiAgICAgIFVJTlQgY0tpZHMsDQogICAgICBjb25zdCBIV05EICAq
IGxwS2lkcyk7DQoNCiNsaW5lIDEyMTcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGlu
ZSAxMjE3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNs
aW5lIDEyMTc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMjE3OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoN
Cg0KDQoNCnR5cGVkZWYgRFdPUkQgSEVMUFBPTFk7DQp0eXBlZGVmIHN0cnVjdCB0YWdNVUxUSUtF
WUhFTFBBIHsNCg0KICAgIERXT1JEICBta1NpemU7DQoNCg0KI2xpbmUgMTIxOTMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQogICAgQ0hBUiAgIG1rS2V5bGlzdDsNCiAgICBDSEFSICAgc3pLZXlw
aHJhc2VbMV07DQp9IE1VTFRJS0VZSEVMUEEsICpQTVVMVElLRVlIRUxQQSwgKkxQTVVMVElLRVlI
RUxQQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01VTFRJS0VZSEVMUFcgew0KDQogICAgRFdPUkQgIG1r
U2l6ZTsNCg0KDQojbGluZSAxMjIwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiAgICBXQ0hB
UiAgbWtLZXlsaXN0Ow0KICAgIFdDSEFSICBzektleXBocmFzZVsxXTsNCn0gTVVMVElLRVlIRUxQ
VywgKlBNVUxUSUtFWUhFTFBXLCAqTFBNVUxUSUtFWUhFTFBXOw0KDQp0eXBlZGVmIE1VTFRJS0VZ
SEVMUFcgTVVMVElLRVlIRUxQOw0KdHlwZWRlZiBQTVVMVElLRVlIRUxQVyBQTVVMVElLRVlIRUxQ
Ow0KdHlwZWRlZiBMUE1VTFRJS0VZSEVMUFcgTFBNVUxUSUtFWUhFTFA7DQoNCg0KDQoNCiNsaW5l
IDEyMjE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdIRUxQ
V0lOSU5GT0Egew0KICAgIGludCAgd1N0cnVjdFNpemU7DQogICAgaW50ICB4Ow0KICAgIGludCAg
eTsNCiAgICBpbnQgIGR4Ow0KICAgIGludCAgZHk7DQogICAgaW50ICB3TWF4Ow0KICAgIENIQVIg
ICByZ2NoTWVtYmVyWzJdOw0KfSBIRUxQV0lOSU5GT0EsICpQSEVMUFdJTklORk9BLCAqTFBIRUxQ
V0lOSU5GT0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdIRUxQV0lOSU5GT1cgew0KICAgIGludCAgd1N0
cnVjdFNpemU7DQogICAgaW50ICB4Ow0KICAgIGludCAgeTsNCiAgICBpbnQgIGR4Ow0KICAgIGlu
dCAgZHk7DQogICAgaW50ICB3TWF4Ow0KICAgIFdDSEFSICByZ2NoTWVtYmVyWzJdOw0KfSBIRUxQ
V0lOSU5GT1csICpQSEVMUFdJTklORk9XLCAqTFBIRUxQV0lOSU5GT1c7DQoNCnR5cGVkZWYgSEVM
UFdJTklORk9XIEhFTFBXSU5JTkZPOw0KdHlwZWRlZiBQSEVMUFdJTklORk9XIFBIRUxQV0lOSU5G
TzsNCnR5cGVkZWYgTFBIRUxQV0lOSU5GT1cgTFBIRUxQV0lOSU5GTzsNCg0KDQoNCg0KI2xpbmUg
MTIyNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEy
MjgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCldpbkhlbHBBKA0KICAgICAgSFdORCBoV25kTWFpbiwNCiAgICAg
IExQQ1NUUiBscHN6SGVscCwNCiAgICAgIFVJTlQgdUNvbW1hbmQsDQogICAgICBVTE9OR19QVFIg
ZHdEYXRhKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpXaW5IZWxw
VygNCiAgICAgIEhXTkQgaFduZE1haW4sDQogICAgICBMUENXU1RSIGxwc3pIZWxwLA0KICAgICAg
VUlOVCB1Q29tbWFuZCwNCiAgICAgIFVMT05HX1BUUiBkd0RhdGEpOw0KDQoNCg0KDQojbGluZSAx
MjMwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMTIzMDYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCiNsaW5lIDEyMzA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQojbGluZSAxMjMxNSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KDQoNCiNsaW5lIDEyMzE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0K
I2xpbmUgMTIzMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldEd1aVJlc291cmNlcygNCiAgICAgIEhBTkRMRSBoUHJvY2VzcywNCiAgICAgIERXT1JE
IHVpRmxhZ3MpOw0KI2xpbmUgMTIzMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5l
IDEyMzM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KI2xpbmUgMTIzNDUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI0MzEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjQ0NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQojbGluZSAxMjQ1MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNDY5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KI2xpbmUgMTI0NzMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNDgxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjQ4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTI1MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxMjU1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNsaW5lIDEy
NTYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDEyNjA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxMjYyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxMjYzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQojbGluZSAx
MjYzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI2NjggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQojbGluZSAxMjY3NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMTI2OTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDEyNzA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjcyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
DQoNCg0KI2xpbmUgMTI3MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTI3NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDEyNzQyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ05PTkNMSUVOVE1F
VFJJQ1NBDQp7DQogICAgVUlOVCAgICBjYlNpemU7DQogICAgaW50ICAgICBpQm9yZGVyV2lkdGg7
DQogICAgaW50ICAgICBpU2Nyb2xsV2lkdGg7DQogICAgaW50ICAgICBpU2Nyb2xsSGVpZ2h0Ow0K
ICAgIGludCAgICAgaUNhcHRpb25XaWR0aDsNCiAgICBpbnQgICAgIGlDYXB0aW9uSGVpZ2h0Ow0K
ICAgIExPR0ZPTlRBIGxmQ2FwdGlvbkZvbnQ7DQogICAgaW50ICAgICBpU21DYXB0aW9uV2lkdGg7
DQogICAgaW50ICAgICBpU21DYXB0aW9uSGVpZ2h0Ow0KICAgIExPR0ZPTlRBIGxmU21DYXB0aW9u
Rm9udDsNCiAgICBpbnQgICAgIGlNZW51V2lkdGg7DQogICAgaW50ICAgICBpTWVudUhlaWdodDsN
CiAgICBMT0dGT05UQSBsZk1lbnVGb250Ow0KICAgIExPR0ZPTlRBIGxmU3RhdHVzRm9udDsNCiAg
ICBMT0dGT05UQSBsZk1lc3NhZ2VGb250Ow0KDQogICAgaW50ICAgICBpUGFkZGVkQm9yZGVyV2lk
dGg7DQojbGluZSAxMjc3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCn0gICBOT05DTElFTlRN
RVRSSUNTQSwgKlBOT05DTElFTlRNRVRSSUNTQSwgKiBMUE5PTkNMSUVOVE1FVFJJQ1NBOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnTk9OQ0xJRU5UTUVUUklDU1cNCnsNCiAgICBVSU5UICAgIGNiU2l6ZTsN
CiAgICBpbnQgICAgIGlCb3JkZXJXaWR0aDsNCiAgICBpbnQgICAgIGlTY3JvbGxXaWR0aDsNCiAg
ICBpbnQgICAgIGlTY3JvbGxIZWlnaHQ7DQogICAgaW50ICAgICBpQ2FwdGlvbldpZHRoOw0KICAg
IGludCAgICAgaUNhcHRpb25IZWlnaHQ7DQogICAgTE9HRk9OVFcgbGZDYXB0aW9uRm9udDsNCiAg
ICBpbnQgICAgIGlTbUNhcHRpb25XaWR0aDsNCiAgICBpbnQgICAgIGlTbUNhcHRpb25IZWlnaHQ7
DQogICAgTE9HRk9OVFcgbGZTbUNhcHRpb25Gb250Ow0KICAgIGludCAgICAgaU1lbnVXaWR0aDsN
CiAgICBpbnQgICAgIGlNZW51SGVpZ2h0Ow0KICAgIExPR0ZPTlRXIGxmTWVudUZvbnQ7DQogICAg
TE9HRk9OVFcgbGZTdGF0dXNGb250Ow0KICAgIExPR0ZPTlRXIGxmTWVzc2FnZUZvbnQ7DQoNCiAg
ICBpbnQgICAgIGlQYWRkZWRCb3JkZXJXaWR0aDsNCiNsaW5lIDEyNzk5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KfSAgIE5PTkNMSUVOVE1FVFJJQ1NXLCAqUE5PTkNMSUVOVE1FVFJJQ1NXLCAq
IExQTk9OQ0xJRU5UTUVUUklDU1c7DQoNCnR5cGVkZWYgTk9OQ0xJRU5UTUVUUklDU1cgTk9OQ0xJ
RU5UTUVUUklDUzsNCnR5cGVkZWYgUE5PTkNMSUVOVE1FVFJJQ1NXIFBOT05DTElFTlRNRVRSSUNT
Ow0KdHlwZWRlZiBMUE5PTkNMSUVOVE1FVFJJQ1NXIExQTk9OQ0xJRU5UTUVUUklDUzsNCg0KDQoN
Cg0KI2xpbmUgMTI4MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDEyODExICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMTI4MTQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGluZSAxMjgxNSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlOSU1JWkVETUVUUklDUw0Kew0KICAg
IFVJTlQgICAgY2JTaXplOw0KICAgIGludCAgICAgaVdpZHRoOw0KICAgIGludCAgICAgaUhvcnpH
YXA7DQogICAgaW50ICAgICBpVmVydEdhcDsNCiAgICBpbnQgICAgIGlBcnJhbmdlOw0KfSAgIE1J
TklNSVpFRE1FVFJJQ1MsICpQTUlOSU1JWkVETUVUUklDUywgKkxQTUlOSU1JWkVETUVUUklDUzsN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0lDT05NRVRSSUNTQQ0Kew0KICAgIFVJTlQgICAgY2JT
aXplOw0KICAgIGludCAgICAgaUhvcnpTcGFjaW5nOw0KICAgIGludCAgICAgaVZlcnRTcGFjaW5n
Ow0KICAgIGludCAgICAgaVRpdGxlV3JhcDsNCiAgICBMT0dGT05UQSBsZkZvbnQ7DQp9ICAgSUNP
Tk1FVFJJQ1NBLCAqUElDT05NRVRSSUNTQSwgKkxQSUNPTk1FVFJJQ1NBOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnSUNPTk1FVFJJQ1NXDQp7DQogICAgVUlOVCAgICBjYlNpemU7DQogICAgaW50ICAgICBp
SG9yelNwYWNpbmc7DQogICAgaW50ICAgICBpVmVydFNwYWNpbmc7DQogICAgaW50ICAgICBpVGl0
bGVXcmFwOw0KICAgIExPR0ZPTlRXIGxmRm9udDsNCn0gICBJQ09OTUVUUklDU1csICpQSUNPTk1F
VFJJQ1NXLCAqTFBJQ09OTUVUUklDU1c7DQoNCnR5cGVkZWYgSUNPTk1FVFJJQ1NXIElDT05NRVRS
SUNTOw0KdHlwZWRlZiBQSUNPTk1FVFJJQ1NXIFBJQ09OTUVUUklDUzsNCnR5cGVkZWYgTFBJQ09O
TUVUUklDU1cgTFBJQ09OTUVUUklDUzsNCg0KDQoNCg0KI2xpbmUgMTI4NjkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQojbGluZSAxMjg3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5l
IDEyODcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdBTklN
QVRJT05JTkZPDQp7DQogICAgVUlOVCAgICBjYlNpemU7DQogICAgaW50ICAgICBpTWluQW5pbWF0
ZTsNCn0gICBBTklNQVRJT05JTkZPLCAqTFBBTklNQVRJT05JTkZPOw0KDQp0eXBlZGVmIHN0cnVj
dCB0YWdTRVJJQUxLRVlTQQ0Kew0KICAgIFVJTlQgICAgY2JTaXplOw0KICAgIERXT1JEICAgZHdG
bGFnczsNCiAgICBMUFNUUiAgICAgbHBzekFjdGl2ZVBvcnQ7DQogICAgTFBTVFIgICAgIGxwc3pQ
b3J0Ow0KICAgIFVJTlQgICAgaUJhdWRSYXRlOw0KICAgIFVJTlQgICAgaVBvcnRTdGF0ZTsNCiAg
ICBVSU5UICAgIGlBY3RpdmU7DQp9ICAgU0VSSUFMS0VZU0EsICpMUFNFUklBTEtFWVNBOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnU0VSSUFMS0VZU1cNCnsNCiAgICBVSU5UICAgIGNiU2l6ZTsNCiAgICBE
V09SRCAgIGR3RmxhZ3M7DQogICAgTFBXU1RSICAgIGxwc3pBY3RpdmVQb3J0Ow0KICAgIExQV1NU
UiAgICBscHN6UG9ydDsNCiAgICBVSU5UICAgIGlCYXVkUmF0ZTsNCiAgICBVSU5UICAgIGlQb3J0
U3RhdGU7DQogICAgVUlOVCAgICBpQWN0aXZlOw0KfSAgIFNFUklBTEtFWVNXLCAqTFBTRVJJQUxL
RVlTVzsNCg0KdHlwZWRlZiBTRVJJQUxLRVlTVyBTRVJJQUxLRVlTOw0KdHlwZWRlZiBMUFNFUklB
TEtFWVNXIExQU0VSSUFMS0VZUzsNCg0KDQoNCiNsaW5lIDEyOTA1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdISUdIQ09OVFJBU1RBDQp7
DQogICAgVUlOVCAgICBjYlNpemU7DQogICAgRFdPUkQgICBkd0ZsYWdzOw0KICAgIExQU1RSICAg
bHBzekRlZmF1bHRTY2hlbWU7DQp9ICAgSElHSENPTlRSQVNUQSwgKkxQSElHSENPTlRSQVNUQTsN
CnR5cGVkZWYgc3RydWN0IHRhZ0hJR0hDT05UUkFTVFcNCnsNCiAgICBVSU5UICAgIGNiU2l6ZTsN
CiAgICBEV09SRCAgIGR3RmxhZ3M7DQogICAgTFBXU1RSICBscHN6RGVmYXVsdFNjaGVtZTsNCn0g
ICBISUdIQ09OVFJBU1RXLCAqTFBISUdIQ09OVFJBU1RXOw0KDQp0eXBlZGVmIEhJR0hDT05UUkFT
VFcgSElHSENPTlRSQVNUOw0KdHlwZWRlZiBMUEhJR0hDT05UUkFTVFcgTFBISUdIQ09OVFJBU1Q7
DQoNCg0KDQojbGluZSAxMjkzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMTI5
MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyOTU4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHR2b3V0
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxNCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFx0dm91dC5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFt
aWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1ZJREVPUEFSQU1FVEVSUyB7DQogICAgR1VJRCAgR3Vp
ZDsgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdPZmZzZXQ7ICAgICAgICAg
ICAgICAgICAgICAgDQogICAgVUxPTkcgZHdDb21tYW5kOyAgICAgICAgICAgICAgICAgICAgDQog
ICAgVUxPTkcgZHdGbGFnczsgICAgICAgICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdNb2Rl
OyAgICAgICAgICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdUVlN0YW5kYXJkOyAgICAgICAg
ICAgICAgICAgDQogICAgVUxPTkcgZHdBdmFpbGFibGVNb2RlczsgICAgICAgICAgICAgDQogICAg
VUxPTkcgZHdBdmFpbGFibGVUVlN0YW5kYXJkOyAgICAgICAgDQogICAgVUxPTkcgZHdGbGlja2Vy
RmlsdGVyOyAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdPdmVyU2Nhblg7ICAgICAgICAgICAg
ICAgICAgDQogICAgVUxPTkcgZHdPdmVyU2Nhblk7ICAgICAgICAgICAgICAgICAgDQogICAgVUxP
TkcgZHdNYXhVbnNjYWxlZFg7ICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdNYXhVbnNjYWxl
ZFk7ICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdQb3NpdGlvblg7ICAgICAgICAgICAgICAg
ICAgDQogICAgVUxPTkcgZHdQb3NpdGlvblk7ICAgICAgICAgICAgICAgICAgDQogICAgVUxPTkcg
ZHdCcmlnaHRuZXNzOyAgICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdDb250cmFzdDsgICAg
ICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdDUFR5cGU7ICAgICAgICAgICAgICAgICAgICAg
DQogICAgVUxPTkcgZHdDUENvbW1hbmQ7ICAgICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdD
UFN0YW5kYXJkOyAgICAgICAgICAgICAgICAgDQogICAgVUxPTkcgZHdDUEtleTsNCiAgICBVTE9O
RyBiQ1BfQVBTVHJpZ2dlckJpdHM7ICAgICAgICAgICANCiAgICBVQ0hBUiBiT0VNQ29weVByb3Rl
Y3Rpb25bMjU2XTsgICAgICANCn0gVklERU9QQVJBTUVURVJTLCAqUFZJREVPUEFSQU1FVEVSUywg
KkxQVklERU9QQVJBTUVURVJTOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFx0dm91dC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgOTggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcdHZvdXQuaCINCiNsaW5lIDEyOTYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyOTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxsDQpDaGFuZ2VEaXNwbGF5U2V0dGluZ3NBKA0K
ICAgICAgREVWTU9ERUEqIGxwRGV2TW9kZSwNCiAgICAgIERXT1JEIGR3RmxhZ3MpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpMT05HDQpfX3N0ZGNhbGwNCkNoYW5nZURpc3BsYXlTZXR0aW5nc1co
DQogICAgICBERVZNT0RFVyogbHBEZXZNb2RlLA0KICAgICAgRFdPUkQgZHdGbGFncyk7DQoNCg0K
DQoNCiNsaW5lIDEyOTk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KQ2hhbmdlRGlzcGxheVNldHRpbmdzRXhBKA0KICAg
ICAgTFBDU1RSIGxwc3pEZXZpY2VOYW1lLA0KICAgICAgREVWTU9ERUEqIGxwRGV2TW9kZSwNCiAg
ICAgIEhXTkQgaHduZCwNCiAgICAgIERXT1JEIGR3ZmxhZ3MsDQogICAgICBMUFZPSUQgbFBhcmFt
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxsDQpDaGFuZ2VEaXNwbGF5
U2V0dGluZ3NFeFcoDQogICAgICBMUENXU1RSIGxwc3pEZXZpY2VOYW1lLA0KICAgICAgREVWTU9E
RVcqIGxwRGV2TW9kZSwNCiAgICAgIEhXTkQgaHduZCwNCiAgICAgIERXT1JEIGR3ZmxhZ3MsDQog
ICAgICBMUFZPSUQgbFBhcmFtKTsNCg0KDQoNCg0KI2xpbmUgMTMwMjMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkVudW1EaXNwbGF5U2V0dGluZ3NBKA0KICAgICAgTFBDU1RSIGxwc3pEZXZpY2VOYW1lLA0K
ICAgICAgRFdPUkQgaU1vZGVOdW0sDQogICAgICBERVZNT0RFQSogbHBEZXZNb2RlKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtRGlzcGxheVNldHRpbmdzVygN
CiAgICAgIExQQ1dTVFIgbHBzekRldmljZU5hbWUsDQogICAgICBEV09SRCBpTW9kZU51bSwNCiAg
ICAgIERFVk1PREVXKiBscERldk1vZGUpOw0KDQoNCg0KDQojbGluZSAxMzA0NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpFbnVtRGlzcGxheVNldHRpbmdzRXhBKA0KICAgICAgTFBDU1RSIGxwc3pEZXZpY2VOYW1l
LA0KICAgICAgRFdPUkQgaU1vZGVOdW0sDQogICAgICBERVZNT0RFQSogbHBEZXZNb2RlLA0KICAg
ICAgRFdPUkQgZHdGbGFncyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KRW51bURpc3BsYXlTZXR0aW5nc0V4VygNCiAgICAgIExQQ1dTVFIgbHBzekRldmljZU5hbWUs
DQogICAgICBEV09SRCBpTW9kZU51bSwNCiAgICAgIERFVk1PREVXKiBscERldk1vZGUsDQogICAg
ICBEV09SRCBkd0ZsYWdzKTsNCg0KDQoNCg0KI2xpbmUgMTMwNzEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkVudW1EaXNwbGF5RGV2aWNlc0EoDQogICAgICBMUENTVFIgbHBEZXZpY2UsDQogICAgICBEV09S
RCBpRGV2TnVtLA0KICAgICAgUERJU1BMQVlfREVWSUNFQSBscERpc3BsYXlEZXZpY2UsDQogICAg
ICBEV09SRCBkd0ZsYWdzKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpFbnVtRGlzcGxheURldmljZXNXKA0KICAgICAgTFBDV1NUUiBscERldmljZSwNCiAgICAgIERX
T1JEIGlEZXZOdW0sDQogICAgICBQRElTUExBWV9ERVZJQ0VXIGxwRGlzcGxheURldmljZSwNCiAg
ICAgIERXT1JEIGR3RmxhZ3MpOw0KDQoNCg0KDQojbGluZSAxMzA5NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KI2xpbmUgMTMxMDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KR2V0RGlzcGxheUNv
bmZpZ0J1ZmZlclNpemVzKA0KICAgICAgVUlOVDMyIGZsYWdzLA0KICAgICAgVUlOVDMyKiBudW1Q
YXRoQXJyYXlFbGVtZW50cywNCiAgICAgIFVJTlQzMiogbnVtTW9kZUluZm9BcnJheUVsZW1lbnRz
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05HDQpfX3N0ZGNhbGwNClNldERpc3BsYXlD
b25maWcoDQogICAgICBVSU5UMzIgbnVtUGF0aEFycmF5RWxlbWVudHMsDQogICAgICBESVNQTEFZ
Q09ORklHX1BBVEhfSU5GTyogcGF0aEFycmF5LA0KICAgICAgVUlOVDMyIG51bU1vZGVJbmZvQXJy
YXlFbGVtZW50cywNCiAgICAgIERJU1BMQVlDT05GSUdfTU9ERV9JTkZPKiBtb2RlSW5mb0FycmF5
LA0KICAgICAgVUlOVDMyIGZsYWdzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogIExPTkcN
Cl9fc3RkY2FsbA0KUXVlcnlEaXNwbGF5Q29uZmlnKA0KICAgICAgVUlOVDMyIGZsYWdzLA0KICAg
ICAgVUlOVDMyKiBudW1QYXRoQXJyYXlFbGVtZW50cywNCiAgICAgIERJU1BMQVlDT05GSUdfUEFU
SF9JTkZPKiBwYXRoQXJyYXksDQogICAgICBVSU5UMzIqIG51bU1vZGVJbmZvQXJyYXlFbGVtZW50
cywNCiAgICAgIERJU1BMQVlDT05GSUdfTU9ERV9JTkZPKiBtb2RlSW5mb0FycmF5LA0KICAgIA0K
ICAgIA0KICAgICAgICBESVNQTEFZQ09ORklHX1RPUE9MT0dZX0lEKiBjdXJyZW50VG9wb2xvZ3lJ
ZCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxsDQpEaXNwbGF5Q29u
ZmlnR2V0RGV2aWNlSW5mbygNCiAgICAgIERJU1BMQVlDT05GSUdfREVWSUNFX0lORk9fSEVBREVS
KiByZXF1ZXN0UGFja2V0KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05HDQpfX3N0ZGNh
bGwNCkRpc3BsYXlDb25maWdTZXREZXZpY2VJbmZvKA0KICAgICAgRElTUExBWUNPTkZJR19ERVZJ
Q0VfSU5GT19IRUFERVIqIHNldFBhY2tldCk7DQoNCiNsaW5lIDEzMTQ5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCiNsaW5lIDEzMTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI2xp
bmUgMTMxNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNClN5c3RlbVBhcmFtZXRlcnNJbmZvQSgNCiAgICAgIFVJ
TlQgdWlBY3Rpb24sDQogICAgICBVSU5UIHVpUGFyYW0sDQogICAgICAgIFBWT0lEIHB2UGFyYW0s
DQogICAgICBVSU5UIGZXaW5JbmkpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpf
X3N0ZGNhbGwNClN5c3RlbVBhcmFtZXRlcnNJbmZvVygNCiAgICAgIFVJTlQgdWlBY3Rpb24sDQog
ICAgICBVSU5UIHVpUGFyYW0sDQogICAgICAgIFBWT0lEIHB2UGFyYW0sDQogICAgICBVSU5UIGZX
aW5JbmkpOw0KDQoNCg0KDQojbGluZSAxMzE3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzE5MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KI2xpbmUgMTMxOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojbGluZSAxMzE5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdGSUxU
RVJLRVlTDQp7DQogICAgVUlOVCAgY2JTaXplOw0KICAgIERXT1JEIGR3RmxhZ3M7DQogICAgRFdP
UkQgaVdhaXRNU2VjOyAgICAgICAgICAgIA0KICAgIERXT1JEIGlEZWxheU1TZWM7ICAgICAgICAg
ICANCiAgICBEV09SRCBpUmVwZWF0TVNlYzsgICAgICAgICAgDQogICAgRFdPUkQgaUJvdW5jZU1T
ZWM7ICAgICAgICAgIA0KfSBGSUxURVJLRVlTLCAqTFBGSUxURVJLRVlTOw0KDQojbGluZSAxMzIx
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYg
c3RydWN0IHRhZ1NUSUNLWUtFWVMNCnsNCiAgICBVSU5UICBjYlNpemU7DQogICAgRFdPUkQgZHdG
bGFnczsNCn0gU1RJQ0tZS0VZUywgKkxQU1RJQ0tZS0VZUzsNCg0KI2xpbmUgMTMyMzkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTMyNzEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTU9VU0VLRVlTDQp7DQogICAgVUlOVCBjYlNpemU7DQogICAg
RFdPUkQgZHdGbGFnczsNCiAgICBEV09SRCBpTWF4U3BlZWQ7DQogICAgRFdPUkQgaVRpbWVUb01h
eFNwZWVkOw0KICAgIERXT1JEIGlDdHJsU3BlZWQ7DQogICAgRFdPUkQgZHdSZXNlcnZlZDE7DQog
ICAgRFdPUkQgZHdSZXNlcnZlZDI7DQp9IE1PVVNFS0VZUywgKkxQTU9VU0VLRVlTOw0KDQojbGlu
ZSAxMzI4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzMwNyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnVzZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdBQ0NFU1NUSU1FT1VUDQp7DQogICAgVUlOVCAgY2JTaXplOw0KICAgIERXT1JE
IGR3RmxhZ3M7DQogICAgRFdPUkQgaVRpbWVPdXRNU2VjOw0KfSBBQ0NFU1NUSU1FT1VULCAqTFBB
Q0NFU1NUSU1FT1VUOw0KDQojbGluZSAxMzMxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ1NPVU5EU0VOVFJZQQ0Kew0KICAgIFVJTlQgY2JTaXplOw0KICAgIERXT1JEIGR3RmxhZ3M7
DQogICAgRFdPUkQgaUZTVGV4dEVmZmVjdDsNCiAgICBEV09SRCBpRlNUZXh0RWZmZWN0TVNlYzsN
CiAgICBEV09SRCBpRlNUZXh0RWZmZWN0Q29sb3JCaXRzOw0KICAgIERXT1JEIGlGU0dyYWZFZmZl
Y3Q7DQogICAgRFdPUkQgaUZTR3JhZkVmZmVjdE1TZWM7DQogICAgRFdPUkQgaUZTR3JhZkVmZmVj
dENvbG9yOw0KICAgIERXT1JEIGlXaW5kb3dzRWZmZWN0Ow0KICAgIERXT1JEIGlXaW5kb3dzRWZm
ZWN0TVNlYzsNCiAgICBMUFNUUiAgIGxwc3pXaW5kb3dzRWZmZWN0RExMOw0KICAgIERXT1JEIGlX
aW5kb3dzRWZmZWN0T3JkaW5hbDsNCn0gU09VTkRTRU5UUllBLCAqTFBTT1VORFNFTlRSWUE7DQp0
eXBlZGVmIHN0cnVjdCB0YWdTT1VORFNFTlRSWVcNCnsNCiAgICBVSU5UIGNiU2l6ZTsNCiAgICBE
V09SRCBkd0ZsYWdzOw0KICAgIERXT1JEIGlGU1RleHRFZmZlY3Q7DQogICAgRFdPUkQgaUZTVGV4
dEVmZmVjdE1TZWM7DQogICAgRFdPUkQgaUZTVGV4dEVmZmVjdENvbG9yQml0czsNCiAgICBEV09S
RCBpRlNHcmFmRWZmZWN0Ow0KICAgIERXT1JEIGlGU0dyYWZFZmZlY3RNU2VjOw0KICAgIERXT1JE
IGlGU0dyYWZFZmZlY3RDb2xvcjsNCiAgICBEV09SRCBpV2luZG93c0VmZmVjdDsNCiAgICBEV09S
RCBpV2luZG93c0VmZmVjdE1TZWM7DQogICAgTFBXU1RSICBscHN6V2luZG93c0VmZmVjdERMTDsN
CiAgICBEV09SRCBpV2luZG93c0VmZmVjdE9yZGluYWw7DQp9IFNPVU5EU0VOVFJZVywgKkxQU09V
TkRTRU5UUllXOw0KDQp0eXBlZGVmIFNPVU5EU0VOVFJZVyBTT1VORFNFTlRSWTsNCnR5cGVkZWYg
TFBTT1VORFNFTlRSWVcgTFBTT1VORFNFTlRSWTsNCg0KDQoNCiNsaW5lIDEzMzg0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxMzM4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBvciBQQyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KU291bmRTZW50cnkodm9pZCk7DQojbGluZSAxMzQwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCiNsaW5lIDEzNDA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
VE9HR0xFS0VZUw0Kew0KICAgIFVJTlQgY2JTaXplOw0KICAgIERXT1JEIGR3RmxhZ3M7DQp9IFRP
R0dMRUtFWVMsICpMUFRPR0dMRUtFWVM7DQoNCiNsaW5lIDEzNDE1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQVVESU9ERVND
UklQVElPTiB7DQogICAgVUlOVCBjYlNpemU7ICAgDQogICAgQk9PTCBFbmFibGVkOyAgDQogICAg
TENJRCBMb2NhbGU7ICAgDQp9IEFVRElPREVTQ1JJUFRJT04sICpMUEFVRElPREVTQ1JJUFRJT047
DQojbGluZSAxMzQzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpTZXREZWJ1Z0Vycm9yTGV2ZWwoDQog
ICAgICBEV09SRCBkd0xldmVsKTsNCg0KI2xpbmUgMTM0NTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2Fs
bA0KU2V0TGFzdEVycm9yRXgoDQogICAgICBEV09SRCBkd0VyckNvZGUsDQogICAgICBEV09SRCBk
d1R5cGUpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpJbnRlcm5h
bEdldFdpbmRvd1RleHQoDQogICAgICBIV05EIGhXbmQsDQogICAgICBMUFdTVFIgcFN0cmluZywN
CiAgICAgIGludCBjY2hNYXhDb3VudCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzNDg4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KQ2FuY2VsU2h1dGRvd24oDQogICAgdm9pZCk7DQoNCiNsaW5lIDEzNDk2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpITU9OSVRPUg0KX19zdGRjYWxsDQpNb25pdG9yRnJvbVBvaW50KA0KICAgICAg
UE9JTlQgcHQsDQogICAgICBEV09SRCBkd0ZsYWdzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpITU9OSVRPUg0KX19zdGRjYWxsDQpNb25pdG9yRnJvbVJlY3QoDQogICAgICBMUENSRUNUIGxw
cmMsDQogICAgICBEV09SRCBkd0ZsYWdzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpITU9O
SVRPUg0KX19zdGRjYWxsDQpNb25pdG9yRnJvbVdpbmRvdygNCiAgICAgIEhXTkQgaHduZCwNCiAg
ICAgIERXT1JEIGR3RmxhZ3MpOw0KDQojbGluZSAxMzUzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIu
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTU9OSVRPUklORk8NCnsNCiAgICBEV09S
RCAgIGNiU2l6ZTsNCiAgICBSRUNUICAgIHJjTW9uaXRvcjsNCiAgICBSRUNUICAgIHJjV29yazsN
CiAgICBEV09SRCAgIGR3RmxhZ3M7DQp9IE1PTklUT1JJTkZPLCAqTFBNT05JVE9SSU5GTzsNCg0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdNT05JVE9SSU5GT0VYQSA6IHB1YmxpYyB0YWdNT05JVE9SSU5G
Tw0Kew0KICAgIENIQVIgICAgICAgIHN6RGV2aWNlWzMyXTsNCn0gTU9OSVRPUklORk9FWEEsICpM
UE1PTklUT1JJTkZPRVhBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTU9OSVRPUklORk9FWFcgOiBwdWJs
aWMgdGFnTU9OSVRPUklORk8NCnsNCiAgICBXQ0hBUiAgICAgICBzekRldmljZVszMl07DQp9IE1P
TklUT1JJTkZPRVhXLCAqTFBNT05JVE9SSU5GT0VYVzsNCg0KdHlwZWRlZiBNT05JVE9SSU5GT0VY
VyBNT05JVE9SSU5GT0VYOw0KdHlwZWRlZiBMUE1PTklUT1JJTkZPRVhXIExQTU9OSVRPUklORk9F
WDsNCg0KDQoNCiNsaW5lIDEzNTY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM1ODggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRNb25p
dG9ySW5mb0EoDQogICAgICBITU9OSVRPUiBoTW9uaXRvciwNCiAgICAgIExQTU9OSVRPUklORk8g
bHBtaSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0TW9uaXRv
ckluZm9XKA0KICAgICAgSE1PTklUT1IgaE1vbml0b3IsDQogICAgICBMUE1PTklUT1JJTkZPIGxw
bWkpOw0KDQoNCg0KDQojbGluZSAxMzYwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KdHlw
ZWRlZiBCT09MIChfX3N0ZGNhbGwqIE1PTklUT1JFTlVNUFJPQykoSE1PTklUT1IsIEhEQywgTFBS
RUNULCBMUEFSQU0pOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
RW51bURpc3BsYXlNb25pdG9ycygNCiAgICAgIEhEQyBoZGMsDQogICAgICBMUENSRUNUIGxwcmND
bGlwLA0KICAgICAgTU9OSVRPUkVOVU1QUk9DIGxwZm5FbnVtLA0KICAgICAgTFBBUkFNIGR3RGF0
YSk7DQoNCiNsaW5lIDEzNjE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOb3RpZnlXaW5FdmVudCgN
CiAgICAgIERXT1JEIGV2ZW50LA0KICAgICAgSFdORCAgaHduZCwNCiAgICAgIExPTkcgIGlkT2Jq
ZWN0LA0KICAgICAgTE9ORyAgaWRDaGlsZCk7DQoNCnR5cGVkZWYgdm9pZCAoX19zdGRjYWxsKiBX
SU5FVkVOVFBST0MpKA0KICAgIEhXSU5FVkVOVEhPT0sgaFdpbkV2ZW50SG9vaywNCiAgICBEV09S
RCAgICAgICAgIGV2ZW50LA0KICAgIEhXTkQgICAgICAgICAgaHduZCwNCiAgICBMT05HICAgICAg
ICAgIGlkT2JqZWN0LA0KICAgIExPTkcgICAgICAgICAgaWRDaGlsZCwNCiAgICBEV09SRCAgICAg
ICAgIGlkRXZlbnRUaHJlYWQsDQogICAgRFdPUkQgICAgICAgICBkd21zRXZlbnRUaW1lKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIV0lORVZFTlRIT09LDQpfX3N0ZGNhbGwNClNldFdpbkV2
ZW50SG9vaygNCiAgICAgIERXT1JEIGV2ZW50TWluLA0KICAgICAgRFdPUkQgZXZlbnRNYXgsDQog
ICAgICBITU9EVUxFIGhtb2RXaW5FdmVudFByb2MsDQogICAgICBXSU5FVkVOVFBST0MgcGZuV2lu
RXZlbnRQcm9jLA0KICAgICAgRFdPUkQgaWRQcm9jZXNzLA0KICAgICAgRFdPUkQgaWRUaHJlYWQs
DQogICAgICBEV09SRCBkd0ZsYWdzKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KSXNXaW5FdmVudEhvb2tJbnN0YWxsZWQoDQogICAgICBEV09SRCBldmVudCk7
DQojbGluZSAxMzY2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI2xpbmUgMTM2NzAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KVW5ob29rV2luRXZlbnQoDQogICAgICBIV0lORVZFTlRIT09L
IGhXaW5FdmVudEhvb2spOw0KDQojbGluZSAxMzY5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzg5OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM5
MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxMzkzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTM5NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM5NjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KDQoNCg0KDQojbGluZSAxMzk3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0K
DQoNCiNsaW5lIDEzOTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQxNzQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQojbGluZSAxNDE3OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDI1MyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDE0MjYwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnR1VJVEhSRUFESU5GTw0Kew0KICAgIERXT1JE
ICAgY2JTaXplOw0KICAgIERXT1JEICAgZmxhZ3M7DQogICAgSFdORCAgICBod25kQWN0aXZlOw0K
ICAgIEhXTkQgICAgaHduZEZvY3VzOw0KICAgIEhXTkQgICAgaHduZENhcHR1cmU7DQogICAgSFdO
RCAgICBod25kTWVudU93bmVyOw0KICAgIEhXTkQgICAgaHduZE1vdmVTaXplOw0KICAgIEhXTkQg
ICAgaHduZENhcmV0Ow0KICAgIFJFQ1QgICAgcmNDYXJldDsNCn0gR1VJVEhSRUFESU5GTywgKlBH
VUlUSFJFQURJTkZPLCAgKiBMUEdVSVRIUkVBRElORk87DQoNCiNsaW5lIDE0MzE1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNDMyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDE0MzI5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRHVUlUaHJlYWRJbmZv
KA0KICAgICAgRFdPUkQgaWRUaHJlYWQsDQogICAgICBQR1VJVEhSRUFESU5GTyBwZ3VpKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkJsb2NrSW5wdXQoDQogICAg
Qk9PTCBmQmxvY2tJdCk7DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNClNldFByb2Nlc3NEUElBd2FyZSgNCiAgICB2b2lkKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCklzUHJvY2Vzc0RQSUF3YXJlKA0KICAgIHZvaWQp
Ow0KDQojbGluZSAxNDM2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ0NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ0NDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDQ1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDQ4MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9f
c3RkY2FsbA0KR2V0V2luZG93TW9kdWxlRmlsZU5hbWVBKA0KICAgICAgSFdORCBod25kLA0KICAg
ICAgTFBTVFIgcHN6RmlsZU5hbWUsDQogICAgICBVSU5UIGNjaEZpbGVOYW1lTWF4KTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpHZXRXaW5kb3dNb2R1bGVGaWxlTmFt
ZVcoDQogICAgICBIV05EIGh3bmQsDQogICAgICBMUFdTVFIgcHN6RmlsZU5hbWUsDQogICAgICBV
SU5UIGNjaEZpbGVOYW1lTWF4KTsNCg0KDQoNCg0KI2xpbmUgMTQ1MDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCiNsaW5lIDE0NTAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ1MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2Vy
LmgiDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIEdhbWVzIEZhbWls
eQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NVUlNPUklORk8NCnsNCiAgICBEV09SRCAg
IGNiU2l6ZTsNCiAgICBEV09SRCAgIGZsYWdzOw0KICAgIEhDVVJTT1IgaEN1cnNvcjsNCiAgICBQ
T0lOVCAgIHB0U2NyZWVuUG9zOw0KfSBDVVJTT1JJTkZPLCAqUENVUlNPUklORk8sICpMUENVUlNP
UklORk87DQoNCg0KDQoNCiNsaW5lIDE0NTYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q3Vyc29ySW5mbygNCiAg
ICAgIFBDVVJTT1JJTkZPIHBjaSk7DQoNCiNsaW5lIDE0NTY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdXSU5ET1dJTkZPDQp7DQogICAgRFdPUkQgY2JT
aXplOw0KICAgIFJFQ1QgcmNXaW5kb3c7DQogICAgUkVDVCByY0NsaWVudDsNCiAgICBEV09SRCBk
d1N0eWxlOw0KICAgIERXT1JEIGR3RXhTdHlsZTsNCiAgICBEV09SRCBkd1dpbmRvd1N0YXR1czsN
CiAgICBVSU5UIGN4V2luZG93Qm9yZGVyczsNCiAgICBVSU5UIGN5V2luZG93Qm9yZGVyczsNCiAg
ICBBVE9NIGF0b21XaW5kb3dUeXBlOw0KICAgIFdPUkQgd0NyZWF0b3JWZXJzaW9uOw0KfSBXSU5E
T1dJTkZPLCAqUFdJTkRPV0lORk8sICpMUFdJTkRPV0lORk87DQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0V2luZG93SW5mbygNCiAgICAgIEhXTkQgaHdu
ZCwNCiAgICAgIFBXSU5ET1dJTkZPIHB3aSk7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1RJ
VExFQkFSSU5GTw0Kew0KICAgIERXT1JEIGNiU2l6ZTsNCiAgICBSRUNUIHJjVGl0bGVCYXI7DQog
ICAgRFdPUkQgcmdzdGF0ZVs1ICsgMV07DQp9IFRJVExFQkFSSU5GTywgKlBUSVRMRUJBUklORk8s
ICpMUFRJVExFQkFSSU5GTzsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNh
bGwNCkdldFRpdGxlQmFySW5mbygNCiAgICAgIEhXTkQgaHduZCwNCiAgICAgIFBUSVRMRUJBUklO
Rk8gcHRpKTsNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdUSVRMRUJBUklORk9FWA0Kew0KICAgIERX
T1JEIGNiU2l6ZTsNCiAgICBSRUNUIHJjVGl0bGVCYXI7DQogICAgRFdPUkQgcmdzdGF0ZVs1ICsg
MV07DQogICAgUkVDVCByZ3JlY3RbNSArIDFdOw0KfSBUSVRMRUJBUklORk9FWCwgKlBUSVRMRUJB
UklORk9FWCwgKkxQVElUTEVCQVJJTkZPRVg7DQojbGluZSAxNDYyNiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnVzZXIuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUVOVUJBUklORk8NCnsNCiAgICBE
V09SRCBjYlNpemU7DQogICAgUkVDVCByY0JhcjsgICAgICAgICAgDQogICAgSE1FTlUgaE1lbnU7
ICAgICAgICAgDQogICAgSFdORCBod25kTWVudTsgICAgICAgDQogICAgQk9PTCBmQmFyRm9jdXNl
ZDoxOyAgDQogICAgQk9PTCBmRm9jdXNlZDoxOyAgICAgDQp9IE1FTlVCQVJJTkZPLCAqUE1FTlVC
QVJJTkZPLCAqTFBNRU5VQkFSSU5GTzsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNCkdldE1lbnVCYXJJbmZvKA0KICAgICAgSFdORCBod25kLA0KICAgICAgTE9ORyBp
ZE9iamVjdCwNCiAgICAgIExPTkcgaWRJdGVtLA0KICAgICAgUE1FTlVCQVJJTkZPIHBtYmkpOw0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdTQ1JPTExCQVJJTkZPDQp7DQogICAgRFdPUkQgY2JT
aXplOw0KICAgIFJFQ1QgcmNTY3JvbGxCYXI7DQogICAgaW50IGR4eUxpbmVCdXR0b247DQogICAg
aW50IHh5VGh1bWJUb3A7DQogICAgaW50IHh5VGh1bWJCb3R0b207DQogICAgaW50IHJlc2VydmVk
Ow0KICAgIERXT1JEIHJnc3RhdGVbNSArIDFdOw0KfSBTQ1JPTExCQVJJTkZPLCAqUFNDUk9MTEJB
UklORk8sICpMUFNDUk9MTEJBUklORk87DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpHZXRTY3JvbGxCYXJJbmZvKA0KICAgICAgSFdORCBod25kLA0KICAgICAgTE9O
RyBpZE9iamVjdCwNCiAgICAgIFBTQ1JPTExCQVJJTkZPIHBzYmkpOw0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdDT01CT0JPWElORk8NCnsNCiAgICBEV09SRCBjYlNpemU7DQogICAgUkVDVCBy
Y0l0ZW07DQogICAgUkVDVCByY0J1dHRvbjsNCiAgICBEV09SRCBzdGF0ZUJ1dHRvbjsNCiAgICBI
V05EIGh3bmRDb21ibzsNCiAgICBIV05EIGh3bmRJdGVtOw0KICAgIEhXTkQgaHduZExpc3Q7DQp9
IENPTUJPQk9YSU5GTywgKlBDT01CT0JPWElORk8sICpMUENPTUJPQk9YSU5GTzsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldENvbWJvQm94SW5mbygNCiAgICAg
IEhXTkQgaHduZENvbWJvLA0KICAgICAgUENPTUJPQk9YSU5GTyBwY2JpKTsNCg0KI2xpbmUgMTQ2
OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpIV05EDQpfX3N0ZGNhbGwNCkdldEFuY2VzdG9yKA0KICAgICAgSFdORCBod25kLA0K
ICAgICAgVUlOVCBnYUZsYWdzKTsNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkhXTkQNCl9fc3RkY2FsbA0KUmVhbENoaWxkV2luZG93RnJvbVBvaW50KA0KICAgICAgSFdO
RCBod25kUGFyZW50LA0KICAgICAgUE9JTlQgcHRQYXJlbnRDbGllbnRDb29yZHMpOw0KDQoNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNClJlYWxHZXRXaW5k
b3dDbGFzc0EoDQogICAgICBIV05EIGh3bmQsDQogICAgICBMUFNUUiBwdHN6Q2xhc3NOYW1lLA0K
ICAgICAgVUlOVCBjY2hDbGFzc05hbWVNYXgpOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNClVJTlQNCl9fc3RkY2FsbA0KUmVhbEdldFdpbmRvd0NsYXNzVygNCiAgICAgIEhXTkQgaHdu
ZCwNCiAgICAgIExQV1NUUiBwdHN6Q2xhc3NOYW1lLA0KICAgICAgVUlOVCBjY2hDbGFzc05hbWVN
YXgpOw0KDQoNCg0KDQojbGluZSAxNDc1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQUxUVEFCSU5GTw0Kew0KICAgIERXT1JEIGNiU2l6ZTsNCiAg
ICBpbnQgY0l0ZW1zOw0KICAgIGludCBjQ29sdW1uczsNCiAgICBpbnQgY1Jvd3M7DQogICAgaW50
IGlDb2xGb2N1czsNCiAgICBpbnQgaVJvd0ZvY3VzOw0KICAgIGludCBjeEl0ZW07DQogICAgaW50
IGN5SXRlbTsNCiAgICBQT0lOVCBwdFN0YXJ0Ow0KfSBBTFRUQUJJTkZPLCAqUEFMVFRBQklORk8s
ICpMUEFMVFRBQklORk87DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpHZXRBbHRUYWJJbmZvQSgNCiAgICAgIEhXTkQgaHduZCwNCiAgICAgIGludCBpSXRlbSwNCiAg
ICAgIFBBTFRUQUJJTkZPIHBhdGksDQogICAgICBMUFNUUiBwc3pJdGVtVGV4dCwNCiAgICAgIFVJ
TlQgY2NoSXRlbVRleHQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkdldEFsdFRhYkluZm9XKA0KICAgICAgSFdORCBod25kLA0KICAgICAgaW50IGlJdGVtLA0KICAg
ICAgUEFMVFRBQklORk8gcGF0aSwNCiAgICAgIExQV1NUUiBwc3pJdGVtVGV4dCwNCiAgICAgIFVJ
TlQgY2NoSXRlbVRleHQpOw0KDQoNCg0KDQojbGluZSAxNDc5NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwN
CkdldExpc3RCb3hJbmZvKA0KICAgICAgSFdORCBod25kKTsNCg0KI2xpbmUgMTQ4MDYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxNDgwOSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnVzZXIuaCINCiNsaW5lIDE0ODEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KTG9ja1dvcmtTdGF0aW9uKA0KICAgIHZvaWQpOw0K
I2xpbmUgMTQ4MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KVXNlckhhbmRsZUdyYW50QWNjZXNzKA0KICAgICAg
SEFORExFIGhVc2VySGFuZGxlLA0KICAgICAgSEFORExFIGhKb2IsDQogICAgICBCT09MICAgYkdy
YW50KTsNCg0KI2xpbmUgMTQ4MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCiNsaW5lIDE0
ODM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpzdHJ1Y3QgSFJBV0lOUFVU
X197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0cnVjdCBIUkFXSU5QVVRfXyAqSFJBV0lOUFVUOw0K
DQojbGluZSAxNDg1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSQVdJTlBV
VEhFQURFUiB7DQogICAgRFdPUkQgZHdUeXBlOw0KICAgIERXT1JEIGR3U2l6ZTsNCiAgICBIQU5E
TEUgaERldmljZTsNCiAgICBXUEFSQU0gd1BhcmFtOw0KfSBSQVdJTlBVVEhFQURFUiwgKlBSQVdJ
TlBVVEhFQURFUiwgKkxQUkFXSU5QVVRIRUFERVI7DQoNCiNsaW5lIDE0ODg4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0K
I2xpbmUgMTQ5MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZSA6IDQyMDEpDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1JBV01PVVNFIHsNCiAgICAN
Cg0KDQogICAgVVNIT1JUIHVzRmxhZ3M7DQoNCiAgICANCg0KDQogICAgdW5pb24gew0KICAgICAg
ICBVTE9ORyB1bEJ1dHRvbnM7DQogICAgICAgIHN0cnVjdCAgew0KICAgICAgICAgICAgVVNIT1JU
ICB1c0J1dHRvbkZsYWdzOw0KICAgICAgICAgICAgVVNIT1JUICB1c0J1dHRvbkRhdGE7DQogICAg
ICAgIH0gOw0KICAgIH0gOw0KDQoNCiAgICANCg0KDQogICAgVUxPTkcgdWxSYXdCdXR0b25zOw0K
DQogICAgDQoNCg0KICAgIExPTkcgbExhc3RYOw0KDQogICAgDQoNCg0KICAgIExPTkcgbExhc3RZ
Ow0KDQogICAgDQoNCg0KICAgIFVMT05HIHVsRXh0cmFJbmZvcm1hdGlvbjsNCg0KfSBSQVdNT1VT
RSwgKlBSQVdNT1VTRSwgKkxQUkFXTU9VU0U7DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNs
aW5lIDE0OTUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQojbGluZSAxNDk1NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0OTg4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDk5OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSQVdLRVlCT0FSRCB7DQogICAgDQoNCg0KICAg
IFVTSE9SVCBNYWtlQ29kZTsNCg0KICAgIA0KDQoNCg0KICAgIFVTSE9SVCBGbGFnczsNCg0KICAg
IFVTSE9SVCBSZXNlcnZlZDsNCg0KICAgIA0KDQoNCiAgICBVU0hPUlQgVktleTsNCiAgICBVSU5U
ICAgTWVzc2FnZTsNCg0KICAgIA0KDQoNCiAgICBVTE9ORyBFeHRyYUluZm9ybWF0aW9uOw0KDQoN
Cn0gUkFXS0VZQk9BUkQsICpQUkFXS0VZQk9BUkQsICpMUFJBV0tFWUJPQVJEOw0KDQojbGluZSAx
NTAzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkN
Cg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSQVdISUQgew0KICAgIERXT1JEIGR3U2l6ZUhp
ZDsgICAgDQogICAgRFdPUkQgZHdDb3VudDsgICAgICANCiAgICBCWVRFIGJSYXdEYXRhWzFdOw0K
fSBSQVdISUQsICpQUkFXSElELCAqTFBSQVdISUQ7DQoNCiNsaW5lIDE1MDY2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1JBV0lOUFVUIHsNCiAgICBS
QVdJTlBVVEhFQURFUiBoZWFkZXI7DQogICAgdW5pb24gew0KICAgICAgICBSQVdNT1VTRSAgICBt
b3VzZTsNCiAgICAgICAgUkFXS0VZQk9BUkQga2V5Ym9hcmQ7DQogICAgICAgIFJBV0hJRCAgICAg
IGhpZDsNCiAgICB9IGRhdGE7DQp9IFJBV0lOUFVULCAqUFJBV0lOUFVULCAqTFBSQVdJTlBVVDsN
Cg0KI2xpbmUgMTUwODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQoNCg0KDQoNCiNsaW5lIDE1MDkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpHZXRSYXdJbnB1dERhdGEoDQogICAgICBI
UkFXSU5QVVQgaFJhd0lucHV0LA0KICAgICAgVUlOVCB1aUNvbW1hbmQsDQogICAgICBMUFZPSUQg
cERhdGEsDQogICAgICBQVUlOVCBwY2JTaXplLA0KICAgICAgVUlOVCBjYlNpemVIZWFkZXIpOw0K
DQojbGluZSAxNTExNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdSSURfREVWSUNFX0lORk9fTU9VU0Ugew0KICAgIERXT1JEIGR3SWQ7DQog
ICAgRFdPUkQgZHdOdW1iZXJPZkJ1dHRvbnM7DQogICAgRFdPUkQgZHdTYW1wbGVSYXRlOw0KICAg
IEJPT0wgIGZIYXNIb3Jpem9udGFsV2hlZWw7DQp9IFJJRF9ERVZJQ0VfSU5GT19NT1VTRSwgKlBS
SURfREVWSUNFX0lORk9fTU9VU0U7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ1JJRF9ERVZJQ0VfSU5G
T19LRVlCT0FSRCB7DQogICAgRFdPUkQgZHdUeXBlOw0KICAgIERXT1JEIGR3U3ViVHlwZTsNCiAg
ICBEV09SRCBkd0tleWJvYXJkTW9kZTsNCiAgICBEV09SRCBkd051bWJlck9mRnVuY3Rpb25LZXlz
Ow0KICAgIERXT1JEIGR3TnVtYmVyT2ZJbmRpY2F0b3JzOw0KICAgIERXT1JEIGR3TnVtYmVyT2ZL
ZXlzVG90YWw7DQp9IFJJRF9ERVZJQ0VfSU5GT19LRVlCT0FSRCwgKlBSSURfREVWSUNFX0lORk9f
S0VZQk9BUkQ7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ1JJRF9ERVZJQ0VfSU5GT19ISUQgew0KICAg
IERXT1JEIGR3VmVuZG9ySWQ7DQogICAgRFdPUkQgZHdQcm9kdWN0SWQ7DQogICAgRFdPUkQgZHdW
ZXJzaW9uTnVtYmVyOw0KDQogICAgDQoNCg0KICAgIFVTSE9SVCB1c1VzYWdlUGFnZTsNCiAgICBV
U0hPUlQgdXNVc2FnZTsNCn0gUklEX0RFVklDRV9JTkZPX0hJRCwgKlBSSURfREVWSUNFX0lORk9f
SElEOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSSURfREVWSUNFX0lORk8gew0KICAgIERXT1JEIGNi
U2l6ZTsNCiAgICBEV09SRCBkd1R5cGU7DQogICAgdW5pb24gew0KICAgICAgICBSSURfREVWSUNF
X0lORk9fTU9VU0UgbW91c2U7DQogICAgICAgIFJJRF9ERVZJQ0VfSU5GT19LRVlCT0FSRCBrZXli
b2FyZDsNCiAgICAgICAgUklEX0RFVklDRV9JTkZPX0hJRCBoaWQ7DQogICAgfSA7DQp9IFJJRF9E
RVZJQ0VfSU5GTywgKlBSSURfREVWSUNFX0lORk8sICpMUFJJRF9ERVZJQ0VfSU5GTzsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCkdldFJhd0lucHV0RGV2aWNlSW5m
b0EoDQogICAgICBIQU5ETEUgaERldmljZSwNCiAgICAgIFVJTlQgdWlDb21tYW5kLA0KICAgICAg
TFBWT0lEIHBEYXRhLA0KICAgICAgUFVJTlQgcGNiU2l6ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNClVJTlQNCl9fc3RkY2FsbA0KR2V0UmF3SW5wdXREZXZpY2VJbmZvVygNCiAgICAgIEhBTkRM
RSBoRGV2aWNlLA0KICAgICAgVUlOVCB1aUNvbW1hbmQsDQogICAgICBMUFZPSUQgcERhdGEsDQog
ICAgICBQVUlOVCBwY2JTaXplKTsNCg0KDQoNCg0KI2xpbmUgMTUxODcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNh
bGwNCkdldFJhd0lucHV0QnVmZmVyKA0KICAgICAgUFJBV0lOUFVUIHBEYXRhLA0KICAgICAgUFVJ
TlQgcGNiU2l6ZSwNCiAgICAgIFVJTlQgY2JTaXplSGVhZGVyKTsNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnUkFXSU5QVVRERVZJQ0Ugew0KICAgIFVTSE9SVCB1c1VzYWdlUGFnZTsgDQogICAg
VVNIT1JUIHVzVXNhZ2U7ICAgICANCiAgICBEV09SRCBkd0ZsYWdzOw0KICAgIEhXTkQgaHduZFRh
cmdldDsgICAgDQp9IFJBV0lOUFVUREVWSUNFLCAqUFJBV0lOUFVUREVWSUNFLCAqTFBSQVdJTlBV
VERFVklDRTsNCg0KdHlwZWRlZiBjb25zdCBSQVdJTlBVVERFVklDRSogUENSQVdJTlBVVERFVklD
RTsNCg0KI2xpbmUgMTUyMTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTUyMjcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1MjM4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDE1MjQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5o
Ig0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpSZWdpc3RlclJhd0lucHV0RGV2aWNlcygNCiAgICAgIFBD
UkFXSU5QVVRERVZJQ0UgcFJhd0lucHV0RGV2aWNlcywNCiAgICAgIFVJTlQgdWlOdW1EZXZpY2Vz
LA0KICAgICAgVUlOVCBjYlNpemUpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9f
c3RkY2FsbA0KR2V0UmVnaXN0ZXJlZFJhd0lucHV0RGV2aWNlcygNCiAgICAgIFBSQVdJTlBVVERF
VklDRSBwUmF3SW5wdXREZXZpY2VzLA0KICAgICAgUFVJTlQgcHVpTnVtRGV2aWNlcywNCiAgICAg
IFVJTlQgY2JTaXplKTsNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSQVdJTlBVVERFVklDRUxJU1Qg
ew0KICAgIEhBTkRMRSBoRGV2aWNlOw0KICAgIERXT1JEIGR3VHlwZTsNCn0gUkFXSU5QVVRERVZJ
Q0VMSVNULCAqUFJBV0lOUFVUREVWSUNFTElTVDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpV
SU5UDQpfX3N0ZGNhbGwNCkdldFJhd0lucHV0RGV2aWNlTGlzdCgNCiAgICAgIFBSQVdJTlBVVERF
VklDRUxJU1QgcFJhd0lucHV0RGV2aWNlTGlzdCwNCiAgICAgIFBVSU5UIHB1aU51bURldmljZXMs
DQogICAgICBVSU5UIGNiU2l6ZSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFJFU1VMVA0K
X19zdGRjYWxsDQpEZWZSYXdJbnB1dFByb2MoDQogICAgICBQUkFXSU5QVVQqIHBhUmF3SW5wdXQs
DQogICAgICBJTlQgbklucHV0LA0KICAgICAgVUlOVCBjYlNpemVIZWFkZXIpOw0KDQojbGluZSAx
NTI4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5l
IDE1MjkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMTU0MTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hhbmdlV2luZG93TWVzc2FnZUZpbHRlcigNCiAgICAgIFVJ
TlQgbWVzc2FnZSwNCiAgICAgIERXT1JEIGR3RmxhZyk7DQoNCiNsaW5lIDE1NDM5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMTU0NDIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdDSEFOR0VGSUxURVJTVFJVQ1Qg
ew0KICAgIERXT1JEIGNiU2l6ZTsNCiAgICBEV09SRCBFeHRTdGF0dXM7DQp9IENIQU5HRUZJTFRF
UlNUUlVDVCwgKlBDSEFOR0VGSUxURVJTVFJVQ1Q7DQoNCiNsaW5lIDE1NDYyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpDaGFuZ2VXaW5kb3dNZXNzYWdlRmlsdGVyRXgoDQogICAgICBIV05EIGh3bmQs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgIFVJTlQgbWVz
c2FnZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgRFdPUkQg
YWN0aW9uLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICBQQ0hB
TkdFRklMVEVSU1RSVUNUIHBDaGFuZ2VGaWx0ZXJTdHJ1Y3QpOyAgIA0KDQojbGluZSAxNTQ4NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDE1NDg3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCiNsaW5lIDE1NDkwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0K
DQoNCg0KDQoNCnN0cnVjdCBIR0VTVFVSRUlORk9fX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3Ry
dWN0IEhHRVNUVVJFSU5GT19fICpIR0VTVFVSRUlORk87DQoNCiNsaW5lIDE1NTA2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdHRVNUVVJFSU5GTyB7DQogICAgVUlOVCBj
YlNpemU7ICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCBkd0ZsYWdzOyAgICAgICAgICAg
ICAgICAgIA0KICAgIERXT1JEIGR3SUQ7ICAgICAgICAgICAgICAgICAgICAgDQogICAgSFdORCBo
d25kVGFyZ2V0OyAgICAgICAgICAgICAgICANCiAgICBQT0lOVFMgcHRzTG9jYXRpb247ICAgICAg
ICAgICAgIA0KICAgIERXT1JEIGR3SW5zdGFuY2VJRDsgICAgICAgICAgICAgDQogICAgRFdPUkQg
ZHdTZXF1ZW5jZUlEOyAgICAgICAgICAgICANCiAgICBVTE9OR0xPTkcgdWxsQXJndW1lbnRzOyAg
ICAgICAgIA0KICAgIFVJTlQgY2JFeHRyYUFyZ3M7ICAgICAgICAgICAgICAgDQp9IEdFU1RVUkVJ
TkZPLCAqUEdFU1RVUkVJTkZPOw0KdHlwZWRlZiBHRVNUVVJFSU5GTyBjb25zdCAqIFBDR0VTVFVS
RUlORk87DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdHRVNUVVJFTk9USUZZ
U1RSVUNUIHsNCiAgICBVSU5UIGNiU2l6ZTsgICAgICAgICAgICAgICAgICAgIA0KICAgIERXT1JE
IGR3RmxhZ3M7ICAgICAgICAgICAgICAgICAgDQogICAgSFdORCBod25kVGFyZ2V0OyAgICAgICAg
ICAgICAgICANCiAgICBQT0lOVFMgcHRzTG9jYXRpb247ICAgICAgICAgICAgIA0KICAgIERXT1JE
IGR3SW5zdGFuY2VJRDsgICAgICAgICAgICAgDQp9IEdFU1RVUkVOT1RJRllTVFJVQ1QsICpQR0VT
VFVSRU5PVElGWVNUUlVDVDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldEdlc3R1cmVJbmZvKA0KICAgICAgSEdFU1RV
UkVJTkZPIGhHZXN0dXJlSW5mbywNCiAgICAgIFBHRVNUVVJFSU5GTyBwR2VzdHVyZUluZm8pOw0K
DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0
R2VzdHVyZUV4dHJhQXJncygNCiAgICAgIEhHRVNUVVJFSU5GTyBoR2VzdHVyZUluZm8sDQogICAg
ICBVSU5UIGNiRXh0cmFBcmdzLA0KICAgICAgUEJZVEUgcEV4dHJhQXJncyk7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNsb3Nl
R2VzdHVyZUluZm9IYW5kbGUoDQogICAgICBIR0VTVFVSRUlORk8gaEdlc3R1cmVJbmZvKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0dFU1RVUkVDT05GSUcgew0KICAgIERX
T1JEIGR3SUQ7ICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgZHdXYW50OyAgICAgICAg
ICAgICAgICAgICANCiAgICBEV09SRCBkd0Jsb2NrOyAgICAgICAgICAgICAgICAgIA0KfSBHRVNU
VVJFQ09ORklHLCAqUEdFU1RVUkVDT05GSUc7DQoNCiNsaW5lIDE1NjMxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
DQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRHZXN0dXJlQ29uZmlnKA0KICAgICAgSFdORCBod25kLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgIERXT1JEIGR3UmVzZXJ2
ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICBVSU5UIGNJRHMsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgUEdFU1RVUkVDT05GSUcgcEdl
c3R1cmVDb25maWcsICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgIFVJTlQgY2JTaXplKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgDQoNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KR2V0R2VzdHVyZUNvbmZpZygNCiAgICAgIEhXTkQgaHduZCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICBEV09SRCBkd1Jlc2VydmVkLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgRFdPUkQgZHdGbGFncywgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgIFBVSU5UIHBjSURzLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KICAgICAgUEdFU1RVUkVDT05GSUcgcEdlc3R1cmVDb25maWcs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IA0KICAgICAgVUlOVCBjYlNpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
Cg0KI2xpbmUgMTU3MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQoNCiNsaW5lIDE1NzExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1NzI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoN
Cg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTaHV0ZG93bkJsb2NrUmVhc29uQ3JlYXRlKA0KICAgICAg
SFdORCBoV25kLA0KICAgICAgTFBDV1NUUiBwd3N6UmVhc29uKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNodXRkb3duQmxvY2tSZWFzb25RdWVyeSgNCiAgICAg
IEhXTkQgaFduZCwNCiAgICAgIExQV1NUUiBwd3N6QnVmZiwNCiAgICAgIERXT1JEICpwY2NoQnVm
Zik7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTaHV0ZG93bkJs
b2NrUmVhc29uRGVzdHJveSgNCiAgICAgIEhXTkQgaFduZCk7DQoNCiNsaW5lIDE1NzU1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2ludXNlci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gdGFnSU5QVVRfTUVT
U0FHRV9ERVZJQ0VfVFlQRSAgew0KICAgIElNRFRfVU5BVkFJTEFCTEUgICAgICAgID0gMHgwMDAw
MDAwMCwgICAgICAgDQogICAgSU1EVF9LRVlCT0FSRCAgICAgICAgICAgPSAweDAwMDAwMDAxLCAg
ICAgICANCiAgICBJTURUX01PVVNFICAgICAgICAgICAgICA9IDB4MDAwMDAwMDIsICAgICAgIA0K
ICAgIElNRFRfVE9VQ0ggICAgICAgICAgICAgID0gMHgwMDAwMDAwNCwgICAgICAgDQogICAgSU1E
VF9QRU4gICAgICAgICAgICAgICAgPSAweDAwMDAwMDA4LCAgICAgICANCg0KDQojbGluZSAxNTc3
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCiB9IElOUFVUX01FU1NBR0VfREVWSUNFX1RZUEU7
DQoNCnR5cGVkZWYgZW51bSB0YWdJTlBVVF9NRVNTQUdFX09SSUdJTl9JRCB7DQogICAgIElNT19V
TkFWQUlMQUJMRSA9IDB4MDAwMDAwMDAsICANCiAgICAgSU1PX0hBUkRXQVJFICAgID0gMHgwMDAw
MDAwMSwgIA0KICAgICBJTU9fSU5KRUNURUQgICAgPSAweDAwMDAwMDAyLCAgDQogICAgIElNT19T
WVNURU0gICAgICA9IDB4MDAwMDAwMDQsICANCn0gSU5QVVRfTUVTU0FHRV9PUklHSU5fSUQ7DQoN
Cg0KDQoNCiB0eXBlZGVmIHN0cnVjdCB0YWdJTlBVVF9NRVNTQUdFX1NPVVJDRSB7DQogICAgIElO
UFVUX01FU1NBR0VfREVWSUNFX1RZUEUgZGV2aWNlVHlwZTsNCiAgICAgSU5QVVRfTUVTU0FHRV9P
UklHSU5fSUQgICBvcmlnaW5JZDsNCiB9IElOUFVUX01FU1NBR0VfU09VUkNFOw0KDQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRDdXJyZW50SW5wdXRN
ZXNzYWdlU291cmNlKA0KICAgICAgSU5QVVRfTUVTU0FHRV9TT1VSQ0UgKmlucHV0TWVzc2FnZVNv
dXJjZSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRDSU1T
U00oDQogICAgICBJTlBVVF9NRVNTQUdFX1NPVVJDRSAqaW5wdXRNZXNzYWdlU291cmNlKTsNCg0K
I2xpbmUgMTU4MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojbGluZSAxNTgxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KDQoNCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gdGFnQVJfU1RBVEUgew0KICAgIEFSX0VOQUJMRUQgICAg
ICAgID0gMHgwLA0KICAgIEFSX0RJU0FCTEVEICAgICAgID0gMHgxLA0KICAgIEFSX1NVUFBSRVNT
RUQgICAgID0gMHgyLA0KICAgIEFSX1JFTU9URVNFU1NJT04gID0gMHg0LA0KICAgIEFSX01VTFRJ
TU9OICAgICAgID0gMHg4LA0KICAgIEFSX05PU0VOU09SICAgICAgID0gMHgxMCwNCiAgICBBUl9O
T1RfU1VQUE9SVEVEICA9IDB4MjAsDQogICAgQVJfRE9DS0VEICAgICAgICAgPSAweDQwLA0KICAg
IEFSX0xBUFRPUCAgICAgICAgID0gMHg4MA0KfSBBUl9TVEFURSwgKlBBUl9TVEFURTsNCg0KI2xp
bmUgMTU4MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoN
Cg0KDQoNCmV4dGVybiAiQysrIiB7IGlubGluZSBjb25zdGV4cHIgQVJfU1RBVEUgb3BlcmF0b3Ig
fCAoQVJfU1RBVEUgYSwgQVJfU1RBVEUgYikgdGhyb3coKSB7IHJldHVybiBBUl9TVEFURSgoKF9F
TlVNX0ZMQUdfU0laRURfSU5URUdFUjxBUl9TVEFURT46OnR5cGUpYSkgfCAoKF9FTlVNX0ZMQUdf
U0laRURfSU5URUdFUjxBUl9TVEFURT46OnR5cGUpYikpOyB9IGlubGluZSBBUl9TVEFURSAmb3Bl
cmF0b3IgfD0gKEFSX1NUQVRFICZhLCBBUl9TVEFURSBiKSB0aHJvdygpIHsgcmV0dXJuIChBUl9T
VEFURSAmKSgoKF9FTlVNX0ZMQUdfU0laRURfSU5URUdFUjxBUl9TVEFURT46OnR5cGUgJilhKSB8
PSAoKF9FTlVNX0ZMQUdfU0laRURfSU5URUdFUjxBUl9TVEFURT46OnR5cGUpYikpOyB9IGlubGlu
ZSBjb25zdGV4cHIgQVJfU1RBVEUgb3BlcmF0b3IgJiAoQVJfU1RBVEUgYSwgQVJfU1RBVEUgYikg
dGhyb3coKSB7IHJldHVybiBBUl9TVEFURSgoKF9FTlVNX0ZMQUdfU0laRURfSU5URUdFUjxBUl9T
VEFURT46OnR5cGUpYSkgJiAoKF9FTlVNX0ZMQUdfU0laRURfSU5URUdFUjxBUl9TVEFURT46OnR5
cGUpYikpOyB9IGlubGluZSBBUl9TVEFURSAmb3BlcmF0b3IgJj0gKEFSX1NUQVRFICZhLCBBUl9T
VEFURSBiKSB0aHJvdygpIHsgcmV0dXJuIChBUl9TVEFURSAmKSgoKF9FTlVNX0ZMQUdfU0laRURf
SU5URUdFUjxBUl9TVEFURT46OnR5cGUgJilhKSAmPSAoKF9FTlVNX0ZMQUdfU0laRURfSU5URUdF
UjxBUl9TVEFURT46OnR5cGUpYikpOyB9IGlubGluZSBjb25zdGV4cHIgQVJfU1RBVEUgb3BlcmF0
b3IgfiAoQVJfU1RBVEUgYSkgdGhyb3coKSB7IHJldHVybiBBUl9TVEFURSh+KChfRU5VTV9GTEFH
X1NJWkVEX0lOVEVHRVI8QVJfU1RBVEU+Ojp0eXBlKWEpKTsgfSBpbmxpbmUgY29uc3RleHByIEFS
X1NUQVRFIG9wZXJhdG9yIF4gKEFSX1NUQVRFIGEsIEFSX1NUQVRFIGIpIHRocm93KCkgeyByZXR1
cm4gQVJfU1RBVEUoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8QVJfU1RBVEU+Ojp0eXBlKWEp
IF4gKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8QVJfU1RBVEU+Ojp0eXBlKWIpKTsgfSBpbmxp
bmUgQVJfU1RBVEUgJm9wZXJhdG9yIF49IChBUl9TVEFURSAmYSwgQVJfU1RBVEUgYikgdGhyb3co
KSB7IHJldHVybiAoQVJfU1RBVEUgJikoKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8QVJfU1RB
VEU+Ojp0eXBlICYpYSkgXj0gKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8QVJfU1RBVEU+Ojp0
eXBlKWIpKTsgfSB9DQojbGluZSAxNTg0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVzZXIuaCINCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBPUklF
TlRBVElPTl9QUkVGRVJFTkNFIHsNCiAgICBPUklFTlRBVElPTl9QUkVGRVJFTkNFX05PTkUgICAg
ICAgICAgICAgID0gMHgwLA0KICAgIE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0VfTEFORFNDQVBFICAg
ICAgICAgPSAweDEsDQogICAgT1JJRU5UQVRJT05fUFJFRkVSRU5DRV9QT1JUUkFJVCAgICAgICAg
ICA9IDB4MiwNCiAgICBPUklFTlRBVElPTl9QUkVGRVJFTkNFX0xBTkRTQ0FQRV9GTElQUEVEID0g
MHg0LA0KICAgIE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0VfUE9SVFJBSVRfRkxJUFBFRCAgPSAweDgN
Cn0gT1JJRU5UQVRJT05fUFJFRkVSRU5DRTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQysrIiB7IGlu
bGluZSBjb25zdGV4cHIgT1JJRU5UQVRJT05fUFJFRkVSRU5DRSBvcGVyYXRvciB8IChPUklFTlRB
VElPTl9QUkVGRVJFTkNFIGEsIE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0UgYikgdGhyb3coKSB7IHJl
dHVybiBPUklFTlRBVElPTl9QUkVGRVJFTkNFKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPE9S
SUVOVEFUSU9OX1BSRUZFUkVOQ0U+Ojp0eXBlKWEpIHwgKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVH
RVI8T1JJRU5UQVRJT05fUFJFRkVSRU5DRT46OnR5cGUpYikpOyB9IGlubGluZSBPUklFTlRBVElP
Tl9QUkVGRVJFTkNFICZvcGVyYXRvciB8PSAoT1JJRU5UQVRJT05fUFJFRkVSRU5DRSAmYSwgT1JJ
RU5UQVRJT05fUFJFRkVSRU5DRSBiKSB0aHJvdygpIHsgcmV0dXJuIChPUklFTlRBVElPTl9QUkVG
RVJFTkNFICYpKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPE9SSUVOVEFUSU9OX1BSRUZFUkVO
Q0U+Ojp0eXBlICYpYSkgfD0gKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8T1JJRU5UQVRJT05f
UFJFRkVSRU5DRT46OnR5cGUpYikpOyB9IGlubGluZSBjb25zdGV4cHIgT1JJRU5UQVRJT05fUFJF
RkVSRU5DRSBvcGVyYXRvciAmIChPUklFTlRBVElPTl9QUkVGRVJFTkNFIGEsIE9SSUVOVEFUSU9O
X1BSRUZFUkVOQ0UgYikgdGhyb3coKSB7IHJldHVybiBPUklFTlRBVElPTl9QUkVGRVJFTkNFKCgo
X0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0U+Ojp0eXBlKWEp
ICYgKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8T1JJRU5UQVRJT05fUFJFRkVSRU5DRT46OnR5
cGUpYikpOyB9IGlubGluZSBPUklFTlRBVElPTl9QUkVGRVJFTkNFICZvcGVyYXRvciAmPSAoT1JJ
RU5UQVRJT05fUFJFRkVSRU5DRSAmYSwgT1JJRU5UQVRJT05fUFJFRkVSRU5DRSBiKSB0aHJvdygp
IHsgcmV0dXJuIChPUklFTlRBVElPTl9QUkVGRVJFTkNFICYpKCgoX0VOVU1fRkxBR19TSVpFRF9J
TlRFR0VSPE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0U+Ojp0eXBlICYpYSkgJj0gKChfRU5VTV9GTEFH
X1NJWkVEX0lOVEVHRVI8T1JJRU5UQVRJT05fUFJFRkVSRU5DRT46OnR5cGUpYikpOyB9IGlubGlu
ZSBjb25zdGV4cHIgT1JJRU5UQVRJT05fUFJFRkVSRU5DRSBvcGVyYXRvciB+IChPUklFTlRBVElP
Tl9QUkVGRVJFTkNFIGEpIHRocm93KCkgeyByZXR1cm4gT1JJRU5UQVRJT05fUFJFRkVSRU5DRSh+
KChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8T1JJRU5UQVRJT05fUFJFRkVSRU5DRT46OnR5cGUp
YSkpOyB9IGlubGluZSBjb25zdGV4cHIgT1JJRU5UQVRJT05fUFJFRkVSRU5DRSBvcGVyYXRvciBe
IChPUklFTlRBVElPTl9QUkVGRVJFTkNFIGEsIE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0UgYikgdGhy
b3coKSB7IHJldHVybiBPUklFTlRBVElPTl9QUkVGRVJFTkNFKCgoX0VOVU1fRkxBR19TSVpFRF9J
TlRFR0VSPE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0U+Ojp0eXBlKWEpIF4gKChfRU5VTV9GTEFHX1NJ
WkVEX0lOVEVHRVI8T1JJRU5UQVRJT05fUFJFRkVSRU5DRT46OnR5cGUpYikpOyB9IGlubGluZSBP
UklFTlRBVElPTl9QUkVGRVJFTkNFICZvcGVyYXRvciBePSAoT1JJRU5UQVRJT05fUFJFRkVSRU5D
RSAmYSwgT1JJRU5UQVRJT05fUFJFRkVSRU5DRSBiKSB0aHJvdygpIHsgcmV0dXJuIChPUklFTlRB
VElPTl9QUkVGRVJFTkNFICYpKCgoX0VOVU1fRkxBR19TSVpFRF9JTlRFR0VSPE9SSUVOVEFUSU9O
X1BSRUZFUkVOQ0U+Ojp0eXBlICYpYSkgXj0gKChfRU5VTV9GTEFHX1NJWkVEX0lOVEVHRVI8T1JJ
RU5UQVRJT05fUFJFRkVSRU5DRT46OnR5cGUpYikpOyB9IH0NCiNsaW5lIDE1ODY1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2ludXNlci5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KR2V0QXV0b1JvdGF0aW9uU3RhdGUoDQogICAgICBQQVJfU1RBVEUgcFN0YXRlKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldERpc3BsYXlBdXRvUm90YXRp
b25QcmVmZXJlbmNlcygNCiAgICAgIE9SSUVOVEFUSU9OX1BSRUZFUkVOQ0UgKnBPcmllbnRhdGlv
bik7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXREaXNwbGF5
QXV0b1JvdGF0aW9uUHJlZmVyZW5jZXNCeVByb2Nlc3NJZCgNCiAgICAgIERXT1JEIGR3UHJvY2Vz
c0lkLA0KICAgICAgT1JJRU5UQVRJT05fUFJFRkVSRU5DRSAqcE9yaWVudGF0aW9uLA0KICAgICAg
Qk9PTCAqZlJvdGF0ZVNjcmVlbik7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpTZXREaXNwbGF5QXV0b1JvdGF0aW9uUHJlZmVyZW5jZXMoDQogICAgICBPUklFTlRB
VElPTl9QUkVGRVJFTkNFIG9yaWVudGF0aW9uKTsNCg0KI2xpbmUgMTU4OTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW51c2VyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxNTg5NiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnVzZXIuaCINCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNJbW1lcnNpdmVQcm9j
ZXNzKA0KICAgICAgSEFORExFIGhQcm9jZXNzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNClNldFByb2Nlc3NSZXN0cmljdGlvbkV4ZW1wdGlvbigNCiAgICAgIEJP
T0wgZkVuYWJsZUV4ZW1wdGlvbik7DQoNCiNsaW5lIDE1OTE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludXNl
ci5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMTU5MTkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51
c2VyLmgiDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCiNsaW5lIDE1
OTI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2ludXNlci5oIg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5p
bmcocG9wKQ0KI2xpbmUgMTU5MzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQoNCg0K
I2xpbmUgMTU5NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQojbGluZSAxNTk0MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnVzZXIuaCINCg0KDQp9DQojbGluZSAxNTk0NiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnVz
ZXIuaCINCg0KI2xpbmUgMTU5NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW51c2VyLmgiDQoNCg0KDQojbGlu
ZSAxNzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIHsNCiNsaW5lIDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQoNCiNs
aW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxkYXRldGltZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRhdGV0aW1lYXBpLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkYXRldGlt
ZWFwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIG9yIEdh
bWVzIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0K
R2V0RGF0ZUZvcm1hdEEoDQogICAgICBMQ0lEIExvY2FsZSwNCiAgICAgIERXT1JEIGR3RmxhZ3Ms
DQogICAgICBjb25zdCBTWVNURU1USU1FKiBscERhdGUsDQogICAgICBMUENTVFIgbHBGb3JtYXQs
DQogICAgICBMUFNUUiBscERhdGVTdHIsDQogICAgICBpbnQgY2NoRGF0ZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldERhdGVGb3JtYXRXKA0KICAg
ICAgTENJRCBMb2NhbGUsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgY29uc3QgU1lTVEVN
VElNRSogbHBEYXRlLA0KICAgICAgTFBDV1NUUiBscEZvcm1hdCwNCiAgICAgIExQV1NUUiBscERh
dGVTdHIsDQogICAgICBpbnQgY2NoRGF0ZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNTggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxkYXRldGltZWFwaS5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50
DQpfX3N0ZGNhbGwNCkdldFRpbWVGb3JtYXRBKA0KICAgICAgTENJRCBMb2NhbGUsDQogICAgICBE
V09SRCBkd0ZsYWdzLA0KICAgICAgY29uc3QgU1lTVEVNVElNRSogbHBUaW1lLA0KICAgICAgTFBD
U1RSIGxwRm9ybWF0LA0KICAgICAgTFBTVFIgbHBUaW1lU3RyLA0KICAgICAgaW50IGNjaFRpbWUN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRUaW1l
Rm9ybWF0VygNCiAgICAgIExDSUQgTG9jYWxlLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAg
IGNvbnN0IFNZU1RFTVRJTUUqIGxwVGltZSwNCiAgICAgIExQQ1dTVFIgbHBGb3JtYXQsDQogICAg
ICBMUFdTVFIgbHBUaW1lU3RyLA0KICAgICAgaW50IGNjaFRpbWUNCiAgICApOw0KDQoNCg0KDQoN
CiNsaW5lIDg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGF0ZXRpbWVhcGkuaCINCg0KI2xpbmUgOTEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxkYXRldGltZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgb3IgR2FtZXMgRmFtaWx5DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0VGltZUZvcm1hdEV4KA0KICAg
ICAgTFBDV1NUUiBscExvY2FsZU5hbWUsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgY29u
c3QgU1lTVEVNVElNRSogbHBUaW1lLA0KICAgICAgTFBDV1NUUiBscEZvcm1hdCwNCiAgICAgIExQ
V1NUUiBscFRpbWVTdHIsDQogICAgICBpbnQgY2NoVGltZQ0KICAgICk7DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0RGF0ZUZvcm1hdEV4KA0KICAgICAgTFBD
V1NUUiBscExvY2FsZU5hbWUsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgY29uc3QgU1lT
VEVNVElNRSogbHBEYXRlLA0KICAgICAgTFBDV1NUUiBscEZvcm1hdCwNCiAgICAgIExQV1NUUiBs
cERhdGVTdHIsDQogICAgICBpbnQgY2NoRGF0ZSwNCiAgICAgIExQQ1dTVFIgbHBDYWxlbmRhcg0K
ICAgICk7DQoNCg0KI2xpbmUgMTI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGF0ZXRpbWVhcGkuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdl
dER1cmF0aW9uRm9ybWF0RXgoDQogICAgICBMUENXU1RSIGxwTG9jYWxlTmFtZSwNCiAgICAgIERX
T1JEIGR3RmxhZ3MsDQogICAgICBjb25zdCBTWVNURU1USU1FKiBscER1cmF0aW9uLA0KICAgICAg
VUxPTkdMT05HIHVsbER1cmF0aW9uLA0KICAgICAgTFBDV1NUUiBscEZvcm1hdCwNCiAgICAgIExQ
V1NUUiBscER1cmF0aW9uU3RyLA0KICAgICAgaW50IGNjaER1cmF0aW9uDQogICAgKTsNCg0KDQoj
bGluZSAxNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkYXRldGltZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KDQp9DQojbGluZSAxNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkYXRldGltZWFwaS5oIg0KDQojbGluZSAx
NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxkYXRldGltZWFwaS5oIg0KDQojbGluZSAzMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm5scy5oIg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCg0KI3By
YWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5l
IDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQojbGluZSA3MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm5scy5oIg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1p
bHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
ODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQojbGluZSAxNjUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm5scy5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjg0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2lubmxzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMjcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCiNsaW5lIDMzMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5s
cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3NiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbm5scy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NTUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
bHMuaCINCg0KDQoNCg0KI2xpbmUgNTYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoN
Cg0KDQojbGluZSA1NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSA2NzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDY4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA3MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNzIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQojbGluZSA3MjYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KI2xpbmUgNzMxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxz
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NDcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA3NzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KDQojbGlu
ZSA3ODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODEyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmxzLmgiDQoNCg0KDQojbGluZSA4MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0K
DQoNCiNsaW5lIDgyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODQ4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmxzLmgiDQoNCg0KDQoNCiNsaW5lIDg1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDkxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
OTIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQoNCiNsaW5lIDkyNSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbm5scy5oIg0KDQoNCg0KI2xpbmUgOTI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoN
Cg0KDQoNCiNsaW5lIDkzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBEV09SRCBMR1JQ
SUQ7DQoNCg0KDQoNCnR5cGVkZWYgRFdPUkQgTENUWVBFOw0KDQoNCg0KDQp0eXBlZGVmIERXT1JE
IENBTFRZUEU7DQoNCg0KDQoNCg0KdHlwZWRlZiBEV09SRCBDQUxJRDsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9jcGluZm8gew0KICAgIFVJTlQgICAgTWF4Q2hhclNp
emU7ICAgICAgICAgICAgICAgICAgICANCiAgICBCWVRFICAgIERlZmF1bHRDaGFyWzJdOyAgIA0K
ICAgIEJZVEUgICAgTGVhZEJ5dGVbMTJdOyAgICAgICAgDQp9IENQSU5GTywgKkxQQ1BJTkZPOw0K
DQoNCg0KDQp0eXBlZGVmIERXT1JEICAgR0VPVFlQRTsNCnR5cGVkZWYgRFdPUkQgICBHRU9DTEFT
UzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBMT05HICAgIEdFT0lEOw0KDQoN
Cg0KI2xpbmUgMTExNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9y
IEdhbWVzIEZhbWlseQ0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfY3BpbmZvZXhBIHsNCiAgICBV
SU5UICAgIE1heENoYXJTaXplOyAgICAgICAgICAgICAgICAgICAgDQogICAgQllURSAgICBEZWZh
dWx0Q2hhclsyXTsgICANCiAgICBCWVRFICAgIExlYWRCeXRlWzEyXTsgICAgICAgIA0KICAgIFdD
SEFSICAgVW5pY29kZURlZmF1bHRDaGFyOyAgICAgICAgICAgICANCiAgICBVSU5UICAgIENvZGVQ
YWdlOyAgICAgICAgICAgICAgICAgICAgICAgDQogICAgQ0hBUiAgICBDb2RlUGFnZU5hbWVbMjYw
XTsgICAgICAgICANCn0gQ1BJTkZPRVhBLCAqTFBDUElORk9FWEE7DQoNCnR5cGVkZWYgc3RydWN0
IF9jcGluZm9leFcgew0KICAgIFVJTlQgICAgTWF4Q2hhclNpemU7ICAgICAgICAgICAgICAgICAg
ICANCiAgICBCWVRFICAgIERlZmF1bHRDaGFyWzJdOyAgIA0KICAgIEJZVEUgICAgTGVhZEJ5dGVb
MTJdOyAgICAgICAgDQogICAgV0NIQVIgICBVbmljb2RlRGVmYXVsdENoYXI7ICAgICAgICAgICAg
IA0KICAgIFVJTlQgICAgQ29kZVBhZ2U7ICAgICAgICAgICAgICAgICAgICAgICANCiAgICBXQ0hB
UiAgIENvZGVQYWdlTmFtZVsyNjBdOyAgICAgICAgIA0KfSBDUElORk9FWFcsICpMUENQSU5GT0VY
VzsNCg0KdHlwZWRlZiBDUElORk9FWFcgQ1BJTkZPRVg7DQp0eXBlZGVmIExQQ1BJTkZPRVhXIExQ
Q1BJTkZPRVg7DQoNCg0KDQojbGluZSAxMTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNs
aW5lIDExNDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWls
eQ0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9udW1iZXJmbXRBIHsNCiAgICBVSU5UICAgIE51
bURpZ2l0czsgICAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgTGVhZGluZ1plcm87ICAgICAg
ICAgICAgICAgDQogICAgVUlOVCAgICBHcm91cGluZzsgICAgICAgICAgICAgICAgICANCiAgICBM
UFNUUiAgIGxwRGVjaW1hbFNlcDsgICAgICAgICAgICAgIA0KICAgIExQU1RSICAgbHBUaG91c2Fu
ZFNlcDsgICAgICAgICAgICAgDQogICAgVUlOVCAgICBOZWdhdGl2ZU9yZGVyOyAgICAgICAgICAg
ICANCn0gTlVNQkVSRk1UQSwgKkxQTlVNQkVSRk1UQTsNCnR5cGVkZWYgc3RydWN0IF9udW1iZXJm
bXRXIHsNCiAgICBVSU5UICAgIE51bURpZ2l0czsgICAgICAgICAgICAgICAgIA0KICAgIFVJTlQg
ICAgTGVhZGluZ1plcm87ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICBHcm91cGluZzsgICAg
ICAgICAgICAgICAgICANCiAgICBMUFdTVFIgIGxwRGVjaW1hbFNlcDsgICAgICAgICAgICAgIA0K
ICAgIExQV1NUUiAgbHBUaG91c2FuZFNlcDsgICAgICAgICAgICAgDQogICAgVUlOVCAgICBOZWdh
dGl2ZU9yZGVyOyAgICAgICAgICAgICANCn0gTlVNQkVSRk1UVywgKkxQTlVNQkVSRk1UVzsNCg0K
dHlwZWRlZiBOVU1CRVJGTVRXIE5VTUJFUkZNVDsNCnR5cGVkZWYgTFBOVU1CRVJGTVRXIExQTlVN
QkVSRk1UOw0KDQoNCg0KI2xpbmUgMTE4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX2N1cnJlbmN5Zm10QSB7DQogICAgVUlOVCAgICBOdW1EaWdp
dHM7ICAgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIExlYWRpbmdaZXJvOyAgICAgICAgICAg
ICAgIA0KICAgIFVJTlQgICAgR3JvdXBpbmc7ICAgICAgICAgICAgICAgICAgDQogICAgTFBTVFIg
ICBscERlY2ltYWxTZXA7ICAgICAgICAgICAgICANCiAgICBMUFNUUiAgIGxwVGhvdXNhbmRTZXA7
ICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgTmVnYXRpdmVPcmRlcjsgICAgICAgICAgICAgDQog
ICAgVUlOVCAgICBQb3NpdGl2ZU9yZGVyOyAgICAgICAgICAgICANCiAgICBMUFNUUiAgIGxwQ3Vy
cmVuY3lTeW1ib2w7ICAgICAgICAgIA0KfSBDVVJSRU5DWUZNVEEsICpMUENVUlJFTkNZRk1UQTsN
CnR5cGVkZWYgc3RydWN0IF9jdXJyZW5jeWZtdFcgew0KICAgIFVJTlQgICAgTnVtRGlnaXRzOyAg
ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICBMZWFkaW5nWmVybzsgICAgICAgICAgICAgICAN
CiAgICBVSU5UICAgIEdyb3VwaW5nOyAgICAgICAgICAgICAgICAgIA0KICAgIExQV1NUUiAgbHBE
ZWNpbWFsU2VwOyAgICAgICAgICAgICAgDQogICAgTFBXU1RSICBscFRob3VzYW5kU2VwOyAgICAg
ICAgICAgICANCiAgICBVSU5UICAgIE5lZ2F0aXZlT3JkZXI7ICAgICAgICAgICAgIA0KICAgIFVJ
TlQgICAgUG9zaXRpdmVPcmRlcjsgICAgICAgICAgICAgDQogICAgTFBXU1RSICBscEN1cnJlbmN5
U3ltYm9sOyAgICAgICAgICANCn0gQ1VSUkVOQ1lGTVRXLCAqTFBDVVJSRU5DWUZNVFc7DQoNCnR5
cGVkZWYgQ1VSUkVOQ1lGTVRXIENVUlJFTkNZRk1UOw0KdHlwZWRlZiBMUENVUlJFTkNZRk1UVyBM
UENVUlJFTkNZRk1UOw0KDQoNCg0KI2xpbmUgMTIxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0K
DQojbGluZSAxMjE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQoNCg0KDQplbnVtIFNZU05MU19GVU5DVElPTnsNCiAgICBDT01QQVJFX1NUUklORyAgICA9ICAw
eDAwMDEsDQp9Ow0KdHlwZWRlZiBEV09SRCBOTFNfRlVOQ1RJT047DQoNCg0KDQoNCg0KDQojbGlu
ZSAxMjM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjU1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmxzLmgiDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9ubHN2ZXJzaW9uaW5m
b3sJCQ0KICAgIERXT1JEIGR3TkxTVmVyc2lvbkluZm9TaXplOyAgICAgDQogICAgRFdPUkQgZHdO
TFNWZXJzaW9uOw0KICAgIERXT1JEIGR3RGVmaW5lZFZlcnNpb247ICAgICAgICAgDQp9IE5MU1ZF
UlNJT05JTkZPLCAqTFBOTFNWRVJTSU9OSU5GTzsNCiNsaW5lIDEyNjggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCg0KI2xpbmUgMTI3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUg
b3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX25sc3ZlcnNpb25pbmZv
ZXh7DQogICAgRFdPUkQgZHdOTFNWZXJzaW9uSW5mb1NpemU7ICAgICANCiAgICBEV09SRCBkd05M
U1ZlcnNpb247DQogICAgRFdPUkQgZHdEZWZpbmVkVmVyc2lvbjsgICAgICAgICANCiAgICBEV09S
RCBkd0VmZmVjdGl2ZUlkOyAgICAgICAgICAgIA0KICAgIEdVSUQgIGd1aWRDdXN0b21WZXJzaW9u
OyAgICAgICAgDQp9IE5MU1ZFUlNJT05JTkZPRVgsICpMUE5MU1ZFUlNJT05JTkZPRVg7DQoNCg0K
DQojbGluZSAxMjg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQoNCg0KZW51bSBTWVNH
RU9UWVBFIHsNCiAgICBHRU9fTkFUSU9OICAgICAgPSAgICAgICAweDAwMDEsIA0KICAgIEdFT19M
QVRJVFVERSAgICA9ICAgICAgIDB4MDAwMiwNCiAgICBHRU9fTE9OR0lUVURFICAgPSAgICAgICAw
eDAwMDMsDQogICAgR0VPX0lTTzIgICAgICAgID0gICAgICAgMHgwMDA0LA0KICAgIEdFT19JU08z
ICAgICAgICA9ICAgICAgIDB4MDAwNSwNCiAgICBHRU9fUkZDMTc2NiAgICAgPSAgICAgICAweDAw
MDYsIA0KICAgIEdFT19MQ0lEICAgICAgICA9ICAgICAgIDB4MDAwNywgDQogICAgR0VPX0ZSSUVO
RExZTkFNRT0gICAgICAgMHgwMDA4LA0KICAgIEdFT19PRkZJQ0lBTE5BTUU9ICAgICAgIDB4MDAw
OSwNCiAgICBHRU9fVElNRVpPTkVTICAgPSAgICAgICAweDAwMEEsIA0KICAgIEdFT19PRkZJQ0lB
TExBTkdVQUdFUyA9IDB4MDAwQiwgDQogICAgR0VPX0lTT19VTl9OVU1CRVIgPSAgICAgMHgwMDBD
LA0KICAgIEdFT19QQVJFTlQgICAgICA9ICAgICAgIDB4MDAwRCwNCiAgICBHRU9fRElBTElOR0NP
REUgPSAgICAgICAweDAwMEUsDQogICAgR0VPX0NVUlJFTkNZQ09ERT0gICAgICAgMHgwMDBGLCAN
CiAgICBHRU9fQ1VSUkVOQ1lTWU1CT0w9ICAgICAweDAwMTAsIA0KDQoNCg0KI2xpbmUgMTMxNSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KfTsNCg0KDQoNCg0KDQplbnVtIFNZU0dFT0NMQVNTIHsN
CiAgICBHRU9DTEFTU19OQVRJT04gID0gMTYsDQogICAgR0VPQ0xBU1NfUkVHSU9OICA9IDE0LCAg
ICAgICAgICANCiAgICBHRU9DTEFTU19BTEwgPSAwDQp9Ow0KDQoNCg0KdHlwZWRlZiBCT09MIChf
X3N0ZGNhbGwqIExPQ0FMRV9FTlVNUFJPQ0EpKExQU1RSKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQp0eXBlZGVmIEJPT0wgKF9fc3RkY2FsbCogTE9DQUxFX0VO
VU1QUk9DVykoTFBXU1RSKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCg0KI2xpbmUgMTMzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQojbGluZSAxMzM1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IGVudW0gX05PUk1fRk9STSB7DQogICAgTm9ybWFsaXphdGlvbk90aGVyICA9IDAsICAgICAgIA0K
ICAgIE5vcm1hbGl6YXRpb25DICAgICAgPSAweDEsICAgICANCiAgICBOb3JtYWxpemF0aW9uRCAg
ICAgID0gMHgyLCAgICAgDQogICAgTm9ybWFsaXphdGlvbktDICAgICA9IDB4NSwgICAgIA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBOb3JtYWxpemF0aW9uS0QgICAg
ID0gMHg2ICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfSBOT1JN
X0ZPUk07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzNjggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIEJPT0wgKF9fc3RkY2FsbCogTEFO
R1VBR0VHUk9VUF9FTlVNUFJPQ0EpKExHUlBJRCwgTFBTVFIsIExQU1RSLCBEV09SRCwgTE9OR19Q
VFIpOyAgICANCg0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIExBTkdHUk9VUExPQ0FMRV9FTlVN
UFJPQ0EpKExHUlBJRCwgTENJRCwgTFBTVFIsIExPTkdfUFRSKTsgICAgICAgICAgDQp0eXBlZGVm
IEJPT0wgKF9fc3RkY2FsbCogVUlMQU5HVUFHRV9FTlVNUFJPQ0EpKExQU1RSLCBMT05HX1BUUik7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBD
T0RFUEFHRV9FTlVNUFJPQ0EpKExQU1RSKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIA0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIERBVEVGTVRfRU5VTVBST0NBKShM
UFNUUik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0eXBlZGVm
IEJPT0wgKF9fc3RkY2FsbCogREFURUZNVF9FTlVNUFJPQ0VYQSkoTFBTVFIsIENBTElEKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBU
SU1FRk1UX0VOVU1QUk9DQSkoTFBTVFIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIA0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIENBTElORk9fRU5VTVBST0NBKShM
UFNUUik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0eXBlZGVm
IEJPT0wgKF9fc3RkY2FsbCogQ0FMSU5GT19FTlVNUFJPQ0VYQSkoTFBTVFIsIENBTElEKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQp0eXBlZGVmIEJPT0wgKF9fc3RkY2Fs
bCogTEFOR1VBR0VHUk9VUF9FTlVNUFJPQ1cpKExHUlBJRCwgTFBXU1RSLCBMUFdTVFIsIERXT1JE
LCBMT05HX1BUUik7ICANCg0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIExBTkdHUk9VUExPQ0FM
RV9FTlVNUFJPQ1cpKExHUlBJRCwgTENJRCwgTFBXU1RSLCBMT05HX1BUUik7ICAgICAgICAgDQp0
eXBlZGVmIEJPT0wgKF9fc3RkY2FsbCogVUlMQU5HVUFHRV9FTlVNUFJPQ1cpKExQV1NUUiwgTE9O
R19QVFIpOw0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIENPREVQQUdFX0VOVU1QUk9DVykoTFBX
U1RSKTsgICAgICAgICAgICANCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBEQVRFRk1UX0VOVU1Q
Uk9DVykoTFBXU1RSKTsNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBEQVRFRk1UX0VOVU1QUk9D
RVhXKShMUFdTVFIsIENBTElEKTsNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBUSU1FRk1UX0VO
VU1QUk9DVykoTFBXU1RSKTsNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBDQUxJTkZPX0VOVU1Q
Uk9DVykoTFBXU1RSKTsNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBDQUxJTkZPX0VOVU1QUk9D
RVhXKShMUFdTVFIsIENBTElEKTsNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBHRU9fRU5VTVBS
T0MpKEdFT0lEKTsgICAgICAgICAgICAgICAgICAgDQoNCg0KI2xpbmUgMTQwMiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbm5scy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDE5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNsaW5lIDE0MjEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
bHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZh
bWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MTQzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDkxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmxzLmgiDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfRklMRU1VSUlORk8gew0K
ICAgIERXT1JEICAgICAgIGR3U2l6ZTsgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAg
IGR3VmVyc2lvbjsgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3RmlsZVR5cGU7ICAg
ICAgICAgICAgIA0KICAgIEJZVEUgICAgICAgIHBDaGVja3N1bVsxNl07ICAgICAgICAgIA0KICAg
IEJZVEUgICAgICAgIHBTZXJ2aWNlQ2hlY2tzdW1bMTZdOyAgIA0KICAgIERXT1JEICAgICAgIGR3
TGFuZ3VhZ2VOYW1lT2Zmc2V0OyAgIA0KICAgIERXT1JEICAgICAgIGR3VHlwZUlETWFpblNpemU7
ICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3VHlwZUlETWFpbk9mZnNldDsgICAgIA0KICAgIERX
T1JEICAgICAgIGR3VHlwZU5hbWVNYWluT2Zmc2V0OyAgIA0KICAgIERXT1JEICAgICAgIGR3VHlw
ZUlETVVJU2l6ZTsgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3VHlwZUlETVVJT2Zmc2V0OyAg
ICAgIA0KICAgIERXT1JEICAgICAgIGR3VHlwZU5hbWVNVUlPZmZzZXQ7ICAgIA0KICAgIEJZVEUg
ICAgICAgIGFiQnVmZmVyWzhdOyAgICAgICAgICAgICANCn0gRklMRU1VSUlORk8sICpQRklMRU1V
SUlORk87DQoNCiNsaW5lIDE1MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIG9y
IEdhbWVzIEZhbWlseQ0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN0cmluZ2FwaXNldC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHN0cmluZ2FwaXNldC5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bmxzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3RyaW5nYXBpc2V0
LmgiDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN0cmluZ2FwaXNl
dC5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUgb3IgQXBwbGljYXRpb24g
b3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0
ZGNhbGwNCkNvbXBhcmVTdHJpbmdFeCgNCiAgICAgIExQQ1dTVFIgbHBMb2NhbGVOYW1lLA0KICAg
ICAgRFdPUkQgZHdDbXBGbGFncywNCiAgICAgIExQQ1dDSCBscFN0cmluZzEsDQogICAgICBpbnQg
Y2NoQ291bnQxLA0KICAgICAgTFBDV0NIIGxwU3RyaW5nMiwNCiAgICAgIGludCBjY2hDb3VudDIs
DQogICAgICBMUE5MU1ZFUlNJT05JTkZPIGxwVmVyc2lvbkluZm9ybWF0aW9uLA0KICAgICAgTFBW
T0lEIGxwUmVzZXJ2ZWQsDQogICAgICBMUEFSQU0gbFBhcmFtDQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpDb21wYXJlU3RyaW5nT3JkaW5hbCgNCiAg
ICAgIExQQ1dDSCBscFN0cmluZzEsDQogICAgICBpbnQgY2NoQ291bnQxLA0KICAgICAgTFBDV0NI
IGxwU3RyaW5nMiwNCiAgICAgIGludCBjY2hDb3VudDIsDQogICAgICBCT09MIGJJZ25vcmVDYXNl
DQogICAgKTsNCg0KDQojbGluZSA1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN0cmluZ2FwaXNldC5oIg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpDb21wYXJlU3RyaW5nVygNCiAg
ICAgIExDSUQgTG9jYWxlLA0KICAgICAgRFdPUkQgZHdDbXBGbGFncywNCiAgICAgIFBDTlpXQ0gg
bHBTdHJpbmcxLA0KICAgICAgaW50IGNjaENvdW50MSwNCiAgICAgIFBDTlpXQ0ggbHBTdHJpbmcy
LA0KICAgICAgaW50IGNjaENvdW50Mg0KICAgICk7DQoNCg0KDQojbGluZSA3NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHN0cmluZ2FwaXNldC5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRj
YWxsDQpGb2xkU3RyaW5nVygNCiAgICAgIERXT1JEIGR3TWFwRmxhZ3MsDQogICAgICBMUENXQ0gg
bHBTcmNTdHIsDQogICAgICBpbnQgY2NoU3JjLA0KICAgICAgTFBXU1RSIGxwRGVzdFN0ciwNCiAg
ICAgIGludCBjY2hEZXN0DQogICAgKTsNCg0KDQoNCiNsaW5lIDkwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc3Ry
aW5nYXBpc2V0LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpH
ZXRTdHJpbmdUeXBlRXhXKA0KICAgICAgTENJRCBMb2NhbGUsDQogICAgICBEV09SRCBkd0luZm9U
eXBlLA0KICAgICAgTFBDV0NIIGxwU3JjU3RyLA0KICAgICAgaW50IGNjaFNyYywNCiAgICAgIExQ
V09SRCBscENoYXJUeXBlDQogICAgKTsNCg0KDQoNCiNsaW5lIDEwNSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHN0
cmluZ2FwaXNldC5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
R2V0U3RyaW5nVHlwZVcoDQogICAgICBEV09SRCBkd0luZm9UeXBlLA0KICAgICAgTFBDV0NIIGxw
U3JjU3RyLA0KICAgICAgaW50IGNjaFNyYywNCiAgICAgIExQV09SRCBscENoYXJUeXBlDQogICAg
KTsNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KICAgICAgICAgDQppbnQN
Cl9fc3RkY2FsbA0KTXVsdGlCeXRlVG9XaWRlQ2hhcigNCiAgICAgIFVJTlQgQ29kZVBhZ2UsDQog
ICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgTFBDQ0ggbHBNdWx0aUJ5dGVTdHIsDQogICAgICBp
bnQgY2JNdWx0aUJ5dGUsDQogICAgICBMUFdTVFIgbHBXaWRlQ2hhclN0ciwNCiAgICAgIGludCBj
Y2hXaWRlQ2hhcg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQogICAgICAg
ICANCmludA0KX19zdGRjYWxsDQpXaWRlQ2hhclRvTXVsdGlCeXRlKA0KICAgICAgVUlOVCBDb2Rl
UGFnZSwNCiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBMUENXQ0ggbHBXaWRlQ2hhclN0ciwN
CiAgICAgIGludCBjY2hXaWRlQ2hhciwNCiAgICAgIExQU1RSIGxwTXVsdGlCeXRlU3RyLA0KICAg
ICAgaW50IGNiTXVsdGlCeXRlLA0KICAgICAgTFBDQ0ggbHBEZWZhdWx0Q2hhciwNCiAgICAgIExQ
Qk9PTCBscFVzZWREZWZhdWx0Q2hhcg0KICAgICk7DQoNCg0KI2xpbmUgMTU0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcc3RyaW5nYXBpc2V0LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDE1OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHN0cmluZ2FwaXNldC5oIg0KDQojbGluZSAxNjEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxz
dHJpbmdhcGlzZXQuaCINCiNsaW5lIDE1MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNsaW5l
IDE1MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KI2xpbmUgMTUyNCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1ODggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9u
IEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJc1ZhbGlkQ29kZVBhZ2UoDQogICAg
ICBVSU5UICBDb2RlUGFnZSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRj
YWxsDQpHZXRBQ1Aodm9pZCk7DQoNCiNsaW5lIDE2MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9u
ZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwN
CkdldE9FTUNQKHZvaWQpOw0KDQojbGluZSAxNjIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIFBjIEZhbWlseSBv
ciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldENQSW5mbygNCiAgICAgIFVJTlQgICAgICAgQ29kZVBhZ2UsDQog
ICAgICBMUENQSU5GTyAgbHBDUEluZm8pOw0KDQojbGluZSAxNjM2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIFBj
IEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRDUEluZm9FeEEoDQogICAgICBVSU5U
ICAgICAgICAgIENvZGVQYWdlLA0KICAgICAgRFdPUkQgICAgICAgICBkd0ZsYWdzLA0KICAgICAg
TFBDUElORk9FWEEgIGxwQ1BJbmZvRXgpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KR2V0Q1BJbmZvRXhXKA0KICAgICAgVUlOVCAgICAgICAgICBDb2RlUGFnZSwN
CiAgICAgIERXT1JEICAgICAgICAgZHdGbGFncywNCiAgICAgIExQQ1BJTkZPRVhXICBscENQSW5m
b0V4KTsNCg0KDQoNCg0KI2xpbmUgMTY2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQojbGlu
ZSAxNjY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0K
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Agb3IgT25lQ29yZSBvciBBcHBsaWNhdGlvbiBvciBH
YW1lcyBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwN
CkNvbXBhcmVTdHJpbmdBKA0KICAgICAgTENJRCAgICAgTG9jYWxlLA0KICAgICAgRFdPUkQgICAg
ZHdDbXBGbGFncywNCiAgICAgIFBDTlpDSCBscFN0cmluZzEsDQogICAgICBpbnQgICAgICBjY2hD
b3VudDEsDQogICAgICBQQ05aQ0ggIGxwU3RyaW5nMiwNCiAgICAgIGludCAgICAgIGNjaENvdW50
Mik7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTcxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQojbGluZSAx
NzE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkZpbmROTFNTdHJpbmcoDQog
ICAgICAgICAgICAgICAgICAgICAgICAgTENJRCBMb2NhbGUsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgRFdPUkQgZHdGaW5kTkxTU3RyaW5nRmxhZ3MsDQogICAgICAgTFBDV1NUUiBscFN0cmlu
Z1NvdXJjZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2NoU291cmNlLA0KICAgICAg
ICBMUENXU1RSIGxwU3RyaW5nVmFsdWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNj
aFZhbHVlLA0KICAgICAgICAgICAgICAgICAgICBMUElOVCBwY2NoRm91bmQpOw0KDQojbGluZSAx
NzQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNsaW5lIDE3NDIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Agb3Ig
T25lQ29yZSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50
DQpfX3N0ZGNhbGwNCkxDTWFwU3RyaW5nVygNCiAgICAgIExDSUQgICAgIExvY2FsZSwNCiAgICAg
IERXT1JEICAgIGR3TWFwRmxhZ3MsDQogICAgICBMUENXU1RSICBscFNyY1N0ciwNCiAgICAgIGlu
dCAgICAgIGNjaFNyYywNCiAgICAgIExQV1NUUiAgbHBEZXN0U3RyLA0KICAgICAgaW50ICAgICAg
Y2NoRGVzdCk7DQoNCg0KI2xpbmUgMTc2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkxDTWFwU3RyaW5nQSgNCiAgICAg
IExDSUQgICAgIExvY2FsZSwNCiAgICAgIERXT1JEICAgIGR3TWFwRmxhZ3MsDQogICAgICBMUENT
VFIgIGxwU3JjU3RyLA0KICAgICAgaW50ICAgICAgY2NoU3JjLA0KICAgICAgTFBTVFIgIGxwRGVz
dFN0ciwNCiAgICAgIGludCAgICAgIGNjaERlc3QpOw0KDQoNCg0KDQojbGluZSAxNzc4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldExvY2FsZUluZm9XKA0KICAgICAg
TENJRCAgICAgTG9jYWxlLA0KICAgICAgTENUWVBFICAgTENUeXBlLA0KICAgICAgTFBXU1RSIGxw
TENEYXRhLA0KICAgICAgaW50ICAgICAgY2NoRGF0YSk7DQogICAgDQoNCg0KI2xpbmUgMTc5NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50IA0K
X19zdGRjYWxsIA0KR2V0TG9jYWxlSW5mb0EoDQogICAgICBMQ0lEIExvY2FsZSwNCiAgICAgIExD
VFlQRSBMQ1R5cGUsDQogICAgICBMUFNUUiBscExDRGF0YSwNCiAgICAgIGludCBjY2hEYXRhDQog
ICAgKTsNCg0KDQoNCg0KDQojbGluZSAxODEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIEZh
bWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRMb2Nh
bGVJbmZvQSgNCiAgICAgIExDSUQgICAgIExvY2FsZSwNCiAgICAgIExDVFlQRSAgIExDVHlwZSwN
CiAgICAgIExQQ1NUUiAgbHBMQ0RhdGEpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNClNldExvY2FsZUluZm9XKA0KICAgICAgTENJRCAgICAgTG9jYWxlLA0KICAgICAg
TENUWVBFICAgTENUeXBlLA0KICAgICAgTFBDV1NUUiAgbHBMQ0RhdGEpOw0KDQoNCg0KDQojbGlu
ZSAxODM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldENhbGVuZGFySW5mb0EoDQogICAgICBMQ0lEICAgICBM
b2NhbGUsDQogICAgICBDQUxJRCAgICBDYWxlbmRhciwNCiAgICAgIENBTFRZUEUgIENhbFR5cGUs
DQogICAgICBMUFNUUiAgIGxwQ2FsRGF0YSwNCiAgICAgIGludCAgICAgIGNjaERhdGEsDQogICAg
ICBMUERXT1JEICBscFZhbHVlKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3Rk
Y2FsbA0KR2V0Q2FsZW5kYXJJbmZvVygNCiAgICAgIExDSUQgICAgIExvY2FsZSwNCiAgICAgIENB
TElEICAgIENhbGVuZGFyLA0KICAgICAgQ0FMVFlQRSAgQ2FsVHlwZSwNCiAgICAgIExQV1NUUiAg
IGxwQ2FsRGF0YSwNCiAgICAgIGludCAgICAgIGNjaERhdGEsDQogICAgICBMUERXT1JEICBscFZh
bHVlKTsNCg0KDQoNCg0KI2xpbmUgMTg2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q2FsZW5kYXJJbmZvQSgNCiAg
ICAgIExDSUQgICAgIExvY2FsZSwNCiAgICAgIENBTElEICAgIENhbGVuZGFyLA0KICAgICAgQ0FM
VFlQRSAgQ2FsVHlwZSwNCiAgICAgIExQQ1NUUiAgbHBDYWxEYXRhKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRDYWxlbmRhckluZm9XKA0KICAgICAgTENJRCAg
ICAgTG9jYWxlLA0KICAgICAgQ0FMSUQgICAgQ2FsZW5kYXIsDQogICAgICBDQUxUWVBFICBDYWxU
eXBlLA0KICAgICAgTFBDV1NUUiAgbHBDYWxEYXRhKTsNCg0KDQoNCg0KI2xpbmUgMTg4OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbm5scy5oIg0KI2xpbmUgMTg5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0K
DQojbGluZSAxODkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAg
ICAgICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIA0KQk9PTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpfX3N0ZGNh
bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCkxvYWRTdHJpbmdCeVJlZmVy
ZW5jZSggICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgRFdPUkQgICBGbGFncywgICAg
ICAgICAgICAgDQogICAgICAgICAgICBQQ1dTVFIgIExhbmd1YWdlLCAgICAgIA0KICAgICAgICAg
ICAgUENXU1RSICBTb3VyY2VTdHJpbmcsICAgICAgDQogICAgICAgIFBXU1RSICAgQnVmZmVyLCAg
ICAgDQogICAgICAgICAgICBVTE9ORyAgY2NoQnVmZmVyLCAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgUENXU1RSICBEaXJlY3RvcnksICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
UFVMT05HICBwY2NoQnVmZmVyT3V0ICAgICAgICAgICAgICAgICAgDQogICAgKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiNsaW5lIDE5MjAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5ubHMuaCINCg0KDQojbGluZSAxOTIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSAgICAgICAgIA0K
Qk9PTCAgICAgICAgICAgICAgIA0KX19zdGRjYWxsICAgICAgICAgICAgIA0KSXNEQkNTTGVhZEJ5
dGUoICAgIA0KICAgICAgQllURSAgVGVzdENoYXIgDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNEQkNTTGVhZEJ5dGVFeCgNCiAgICAgIFVJTlQg
IENvZGVQYWdlLA0KICAgICAgQllURSAgVGVzdENoYXINCiAgICApOw0KDQojbGluZSAxOTQ2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTENJRA0KX19zdGRjYWxsDQpMb2NhbGVOYW1lVG9M
Q0lEKA0KICAgICAgTFBDV1NUUiBscE5hbWUsDQogICAgICBEV09SRCBkd0ZsYWdzKTsNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkxDSURUb0xvY2FsZU5hbWUo
DQogICAgICBMQ0lEICAgICBMb2NhbGUsDQogICAgICBMUFdTVFIgIGxwTmFtZSwNCiAgICAgIGlu
dCAgICAgIGNjaE5hbWUsDQogICAgICBEV09SRCAgICBkd0ZsYWdzKTsNCg0KI2xpbmUgMTk3NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQojbGluZSAxOTc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxz
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0K
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXREdXJhdGlv
bkZvcm1hdCgNCiAgICAgIExDSUQgICAgICAgICAgICAgTG9jYWxlLA0KICAgICAgRFdPUkQgICAg
ICAgICAgICBkd0ZsYWdzLA0KICAgICAgY29uc3QgU1lTVEVNVElNRSAqbHBEdXJhdGlvbiwNCiAg
ICAgIFVMT05HTE9ORyB1bGxEdXJhdGlvbiwNCiAgICAgIExQQ1dTVFIgICAgICAgICAgbHBGb3Jt
YXQsDQogICAgICBMUFdTVFIgICAgICAgICAgbHBEdXJhdGlvblN0ciwNCiAgICAgIGludCAgICAg
ICAgICAgICAgY2NoRHVyYXRpb24pOw0KI2xpbmUgMTk5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5o
Ig0KDQojbGluZSAxOTk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZh
bWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0TnVt
YmVyRm9ybWF0QSgNCiAgICAgIExDSUQgICAgICAgICAgICAgTG9jYWxlLA0KICAgICAgRFdPUkQg
ICAgICAgICAgICBkd0ZsYWdzLA0KICAgICAgTFBDU1RSICAgICAgICAgIGxwVmFsdWUsDQogICAg
ICBjb25zdCBOVU1CRVJGTVRBICpscEZvcm1hdCwNCiAgICAgIExQU1RSICAgICAgICAgIGxwTnVt
YmVyU3RyLA0KICAgICAgaW50ICAgICAgICAgICAgICBjY2hOdW1iZXIpOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXROdW1iZXJGb3JtYXRXKA0KICAgICAgTENJ
RCAgICAgICAgICAgICBMb2NhbGUsDQogICAgICBEV09SRCAgICAgICAgICAgIGR3RmxhZ3MsDQog
ICAgICBMUENXU1RSICAgICAgICAgIGxwVmFsdWUsDQogICAgICBjb25zdCBOVU1CRVJGTVRXICps
cEZvcm1hdCwNCiAgICAgIExQV1NUUiAgICAgICAgICBscE51bWJlclN0ciwNCiAgICAgIGludCAg
ICAgICAgICAgICAgY2NoTnVtYmVyKTsNCg0KDQoNCg0KI2xpbmUgMjAyOSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm5scy5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdl
dEN1cnJlbmN5Rm9ybWF0QSgNCiAgICAgIExDSUQgICAgICAgICAgICAgICBMb2NhbGUsDQogICAg
ICBEV09SRCAgICAgICAgICAgICAgZHdGbGFncywNCiAgICAgIExQQ1NUUiAgICAgICAgICAgIGxw
VmFsdWUsDQogICAgICBjb25zdCBDVVJSRU5DWUZNVEEgKmxwRm9ybWF0LA0KICAgICAgTFBTVFIg
ICAgICAgICAgICBscEN1cnJlbmN5U3RyLA0KICAgICAgaW50ICAgICAgICAgICAgICAgIGNjaEN1
cnJlbmN5KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KR2V0Q3Vy
cmVuY3lGb3JtYXRXKA0KICAgICAgTENJRCAgICAgICAgICAgICAgIExvY2FsZSwNCiAgICAgIERX
T1JEICAgICAgICAgICAgICBkd0ZsYWdzLA0KICAgICAgTFBDV1NUUiAgICAgICAgICAgIGxwVmFs
dWUsDQogICAgICBjb25zdCBDVVJSRU5DWUZNVFcgKmxwRm9ybWF0LA0KICAgICAgTFBXU1RSICAg
ICAgICAgICAgbHBDdXJyZW5jeVN0ciwNCiAgICAgIGludCAgICAgICAgICAgICAgICBjY2hDdXJy
ZW5jeSk7DQoNCg0KDQoNCiNsaW5lIDIwNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KI2xp
bmUgMjA1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtQ2FsZW5kYXJJbmZvQSgNCiAg
ICAgIENBTElORk9fRU5VTVBST0NBIGxwQ2FsSW5mb0VudW1Qcm9jLA0KICAgICAgTENJRCAgICAg
ICAgICAgICAgTG9jYWxlLA0KICAgICAgQ0FMSUQgICAgICAgICAgICAgQ2FsZW5kYXIsDQogICAg
ICBDQUxUWVBFICAgICAgICAgICBDYWxUeXBlKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkVudW1DYWxlbmRhckluZm9XKA0KICAgICAgQ0FMSU5GT19FTlVNUFJP
Q1cgbHBDYWxJbmZvRW51bVByb2MsDQogICAgICBMQ0lEICAgICAgICAgICAgICBMb2NhbGUsDQog
ICAgICBDQUxJRCAgICAgICAgICAgICBDYWxlbmRhciwNCiAgICAgIENBTFRZUEUgICAgICAgICAg
IENhbFR5cGUpOw0KDQoNCg0KDQojbGluZSAyMDg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRW51bUNhbGVuZGFy
SW5mb0V4QSgNCiAgICAgIENBTElORk9fRU5VTVBST0NFWEEgbHBDYWxJbmZvRW51bVByb2NFeCwN
CiAgICAgIExDSUQgICAgICAgICAgICAgICAgTG9jYWxlLA0KICAgICAgQ0FMSUQgICAgICAgICAg
ICAgICBDYWxlbmRhciwNCiAgICAgIENBTFRZUEUgICAgICAgICAgICAgQ2FsVHlwZSk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtQ2FsZW5kYXJJbmZvRXhX
KA0KICAgICAgQ0FMSU5GT19FTlVNUFJPQ0VYVyBscENhbEluZm9FbnVtUHJvY0V4LA0KICAgICAg
TENJRCAgICAgICAgICAgICAgICBMb2NhbGUsDQogICAgICBDQUxJRCAgICAgICAgICAgICAgIENh
bGVuZGFyLA0KICAgICAgQ0FMVFlQRSAgICAgICAgICAgICBDYWxUeXBlKTsNCg0KDQoNCg0KI2xp
bmUgMjExMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI2xpbmUgMjExMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm5scy5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpF
bnVtVGltZUZvcm1hdHNBKA0KICAgICAgVElNRUZNVF9FTlVNUFJPQ0EgbHBUaW1lRm10RW51bVBy
b2MsDQogICAgICBMQ0lEICAgICAgICAgICAgICBMb2NhbGUsDQogICAgICBEV09SRCAgICAgICAg
ICAgICBkd0ZsYWdzKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkVudW1UaW1lRm9ybWF0c1coDQogICAgICBUSU1FRk1UX0VOVU1QUk9DVyBscFRpbWVGbXRFbnVt
UHJvYywNCiAgICAgIExDSUQgICAgICAgICAgICAgIExvY2FsZSwNCiAgICAgIERXT1JEICAgICAg
ICAgICAgIGR3RmxhZ3MpOw0KDQoNCg0KDQojbGluZSAyMTM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxz
LmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1EYXRl
Rm9ybWF0c0EoDQogICAgICBEQVRFRk1UX0VOVU1QUk9DQSBscERhdGVGbXRFbnVtUHJvYywNCiAg
ICAgIExDSUQgICAgICAgICAgICAgIExvY2FsZSwNCiAgICAgIERXT1JEICAgICAgICAgICAgIGR3
RmxhZ3MpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRW51bURh
dGVGb3JtYXRzVygNCiAgICAgIERBVEVGTVRfRU5VTVBST0NXIGxwRGF0ZUZtdEVudW1Qcm9jLA0K
ICAgICAgTENJRCAgICAgICAgICAgICAgTG9jYWxlLA0KICAgICAgRFdPUkQgICAgICAgICAgICAg
ZHdGbGFncyk7DQoNCg0KDQoNCiNsaW5lIDIxNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtRGF0ZUZvcm1h
dHNFeEEoDQogICAgICBEQVRFRk1UX0VOVU1QUk9DRVhBIGxwRGF0ZUZtdEVudW1Qcm9jRXgsDQog
ICAgICBMQ0lEICAgICAgICAgICAgICAgIExvY2FsZSwNCiAgICAgIERXT1JEICAgICAgICAgICAg
ICAgZHdGbGFncyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpF
bnVtRGF0ZUZvcm1hdHNFeFcoDQogICAgICBEQVRFRk1UX0VOVU1QUk9DRVhXIGxwRGF0ZUZtdEVu
dW1Qcm9jRXgsDQogICAgICBMQ0lEICAgICAgICAgICAgICAgIExvY2FsZSwNCiAgICAgIERXT1JE
ICAgICAgICAgICAgICAgZHdGbGFncyk7DQoNCg0KDQoNCiNsaW5lIDIxODAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5ubHMuaCINCiNsaW5lIDIxODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KI2xpbmUg
MjE4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJc1ZhbGlkTGFuZ3VhZ2VHcm91
cCgNCiAgICAgIExHUlBJRCAgTGFuZ3VhZ2VHcm91cCwNCiAgICAgIERXT1JEICAgZHdGbGFncyk7
DQojbGluZSAyMTk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldE5MU1ZlcnNpb24oDQogICAgICAgICBOTFNfRlVO
Q1RJT04gICAgIEZ1bmN0aW9uLA0KICAgICAgICAgTENJRCAgICAgICAgICAgICBMb2NhbGUsDQog
ICAgICBMUE5MU1ZFUlNJT05JTkZPIGxwVmVyc2lvbkluZm9ybWF0aW9uKTsNCg0KI2xpbmUgMjIw
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJc1ZhbGlkTG9jYWxlKA0KICAgICAgTENJRCAg
IExvY2FsZSwNCiAgICAgIERXT1JEICBkd0ZsYWdzKTsNCg0KI2xpbmUgMjIyMiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGlj
YXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldEdlb0luZm9BKA0KICAgICAgR0VPSUQg
ICAgICAgTG9jYXRpb24sDQogICAgICBHRU9UWVBFICAgICBHZW9UeXBlLA0KICAgICAgTFBTVFIg
ICAgIGxwR2VvRGF0YSwNCiAgICAgIGludCAgICAgICAgIGNjaERhdGEsDQogICAgICBMQU5HSUQg
ICAgICBMYW5nSWQpOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwN
CkdldEdlb0luZm9XKA0KICAgICAgR0VPSUQgICAgICAgTG9jYXRpb24sDQogICAgICBHRU9UWVBF
ICAgICBHZW9UeXBlLA0KICAgICAgTFBXU1RSICAgICBscEdlb0RhdGEsDQogICAgICBpbnQgICAg
ICAgICBjY2hEYXRhLA0KICAgICAgTEFOR0lEICAgICAgTGFuZ0lkKTsNCg0KDQoNCg0KI2xpbmUg
MjI1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAy
MjY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNsaW5lIDIyNjcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Agb3Ig
UEMgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtU3lzdGVtR2VvSUQoDQogICAgICBHRU9DTEFTUyAgICAg
ICAgR2VvQ2xhc3MsDQogICAgICBHRU9JRCAgICAgICAgICAgUGFyZW50R2VvSWQsDQogICAgICBH
RU9fRU5VTVBST0MgICAgbHBHZW9FbnVtUHJvYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAy
MjkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNsaW5lIDIyOTMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9u
IEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkdFT0lEDQpfX3N0ZGNhbGwNCkdldFVzZXJHZW9JRCgNCiAgICAgIEdFT0NMQVNT
ICAgIEdlb0NsYXNzKTsNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpf
X3N0ZGNhbGwNCkdldFVzZXJEZWZhdWx0R2VvTmFtZSgNCiAgICAgIExQV1NUUiBnZW9OYW1lLA0K
ICAgICAgaW50IGdlb05hbWVDb3VudA0KKTsNCg0KI2xpbmUgMjMyMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KU2V0VXNlckdlb0lEKA0KICAgICAgR0VPSUQgICAgICAgR2VvSWQpOw0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIzNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkxDSUQNCl9fc3RkY2FsbA0KQ29udmVydERlZmF1bHRMb2Nh
bGUoDQogICAgICBMQ0lEICAgTG9jYWxlKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
TEFOR0lEDQpfX3N0ZGNhbGwNCkdldFN5c3RlbURlZmF1bHRVSUxhbmd1YWdlKHZvaWQpOw0KDQoj
bGluZSAyMzU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojbGluZSAyMzU5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNh
dGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KTENJRA0KX19zdGRjYWxsDQpHZXRUaHJlYWRMb2NhbGUodm9pZCk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRUaHJlYWRMb2NhbGUoDQogICAgICBMQ0lE
ICBMb2NhbGUNCiAgICApOw0KDQojbGluZSAyMzc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoj
bGluZSAyMzc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTEFOR0lEDQpfX3N0ZGNhbGwNCkdldFVzZXJEZWZhdWx0
VUlMYW5ndWFnZSh2b2lkKTsNCiNsaW5lIDIzOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxBTkdJRA0KX19zdGRjYWxsDQpHZXRVc2VyRGVmYXVs
dExhbmdJRCh2b2lkKTsNCg0KI2xpbmUgMjM5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTEFOR0lEDQpfX3N0ZGNhbGwN
CkdldFN5c3RlbURlZmF1bHRMYW5nSUQodm9pZCk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpMQ0lEDQpfX3N0ZGNhbGwNCkdldFN5c3RlbURlZmF1bHRMQ0lEKHZvaWQpOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KTENJRA0KX19zdGRjYWxsDQpHZXRVc2VyRGVmYXVsdExDSUQodm9p
ZCk7DQoNCiNsaW5lIDI0MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQojbGluZSAyNDI5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KTEFOR0lEDQpfX3N0ZGNhbGwNClNldFRocmVhZFVJTGFuZ3VhZ2UoICBMQU5HSUQgTGFu
Z0lkKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMQU5HSUQNCl9fc3RkY2FsbA0K
R2V0VGhyZWFkVUlMYW5ndWFnZSh2b2lkKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkdldFByb2Nlc3NQcmVmZXJyZWRVSUxhbmd1YWdlcygNCiAgICAgIERXT1JE
IGR3RmxhZ3MsDQogICAgICBQVUxPTkcgcHVsTnVtTGFuZ3VhZ2VzLA0KICAgICAgUFpaV1NUUiBw
d3N6TGFuZ3VhZ2VzQnVmZmVyLA0KICAgICAgUFVMT05HIHBjY2hMYW5ndWFnZXNCdWZmZXINCik7
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFByb2Nlc3NQ
cmVmZXJyZWRVSUxhbmd1YWdlcygNCiAgICAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAg
ICAgUENaWldTVFIgcHdzekxhbmd1YWdlc0J1ZmZlciwNCiAgICAgICAgUFVMT05HIHB1bE51bUxh
bmd1YWdlcw0KKTsNCg0KI2xpbmUgMjQ2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI2xpbmUg
MjQ2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgUGhvbmUgRmFtaWx5IG9yIE9uZUNvcmUgb3IgR2Ft
ZXMgRmFtaWx5DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0K
R2V0VXNlclByZWZlcnJlZFVJTGFuZ3VhZ2VzICgNCiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAg
ICBQVUxPTkcgcHVsTnVtTGFuZ3VhZ2VzLA0KICAgICAgUFpaV1NUUiBwd3N6TGFuZ3VhZ2VzQnVm
ZmVyLA0KICAgICAgUFVMT05HIHBjY2hMYW5ndWFnZXNCdWZmZXINCik7DQoNCiNsaW5lIDI0ODYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KI2xpbmUgMjQ4OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5s
cy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpHZXRTeXN0ZW1QcmVmZXJyZWRVSUxhbmd1YWdlcyAoDQogICAgICBEV09S
RCBkd0ZsYWdzLA0KICAgICAgUFVMT05HIHB1bE51bUxhbmd1YWdlcywNCiAgICAgIFBaWldTVFIg
cHdzekxhbmd1YWdlc0J1ZmZlciwNCiAgICAgIFBVTE9ORyBwY2NoTGFuZ3VhZ2VzQnVmZmVyDQop
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRUaHJlYWRQ
cmVmZXJyZWRVSUxhbmd1YWdlcygNCiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBQVUxPTkcg
cHVsTnVtTGFuZ3VhZ2VzLA0KICAgICAgUFpaV1NUUiBwd3N6TGFuZ3VhZ2VzQnVmZmVyLA0KICAg
ICAgUFVMT05HIHBjY2hMYW5ndWFnZXNCdWZmZXINCik7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFRocmVhZFByZWZlcnJlZFVJTGFuZ3VhZ2VzKA0KICAg
ICAgICAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICAgICBQQ1paV1NUUiBwd3N6TGFuZ3VhZ2Vz
QnVmZmVyLA0KICAgICAgICBQVUxPTkcgcHVsTnVtTGFuZ3VhZ2VzDQopOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3RkY2FsbA0KR2V0RmlsZU1VSUluZm8oDQogICAgICAg
ICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgZHdGbGFncywNCiAgICAgICAgICAgICAg
ICAgICAgIFBDV1NUUiAgICAgICAgICBwY3dzekZpbGVQYXRoLA0KICAgICAgUEZJTEVNVUlJTkZP
ICAgIHBGaWxlTVVJSW5mbywNCiAgICAgICAgICAgICAgICAgIERXT1JEKiAgICAgICAgICBwY2JG
aWxlTVVJSW5mbyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpH
ZXRGaWxlTVVJUGF0aCgNCiAgICAgIERXT1JEICAgICAgZHdGbGFncywNCiAgICAgIFBDV1NUUiAg
ICAgcGN3c3pGaWxlUGF0aCAsDQogICAgICAgIFBXU1RSIHB3c3pMYW5ndWFnZSwNCiAgICAgIFBV
TE9ORyAgcGNjaExhbmd1YWdlLA0KICAgICAgUFdTVFIgcHdzekZpbGVNVUlQYXRoLA0KICAgICAg
ICAgICAgICBQVUxPTkcgcGNjaEZpbGVNVUlQYXRoLA0KICAgICAgICAgICAgICBQVUxPTkdMT05H
IHB1bHVsRW51bWVyYXRvcg0KKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KR2V0VUlMYW5ndWFnZUluZm8oDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAg
UENaWldTVFIgcHdtc3pMYW5ndWFnZSwNCiAgICAgIFBaWldTVFIgcHdzekZhbGxiYWNrTGFuZ3Vh
Z2VzLA0KICAgICAgUERXT1JEIHBjY2hGYWxsYmFja0xhbmd1YWdlcywNCiAgICAgIFBEV09SRCBw
QXR0cmlidXRlcw0KKTsNCg0KI2xpbmUgMjU2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoj
bGluZSAyNTY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1ODggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCg0KI2xpbmUgMjU5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCk5vdGlmeVVJTGFuZ3VhZ2VDaGFuZ2Uo
DQogICAgICAgICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgICAgIFBDV1NUUiBwY3dzdHJOZXdM
YW5ndWFnZSwNCiAgICAgICAgIFBDV1NUUiBwY3dzdHJQcmV2aW91c0xhbmd1YWdlLA0KICAgICAg
ICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQsDQogICAgICAgIFBEV09SRCBwZHdTdGF0dXNSdHJuDQop
Ow0KDQojbGluZSAyNjA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNsaW5lIDI2MTEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUgb3IgQXBwbGljYXRpb24gb3IgR2FtZXMgRmFt
aWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldFN0cmlu
Z1R5cGVFeEEoDQogICAgICAgICAgICAgICAgICAgICAgTENJRCAgICAgICBMb2NhbGUsDQogICAg
ICAgICAgICAgICAgICAgICAgRFdPUkQgICAgICBkd0luZm9UeXBlLA0KICAgICAgICBMUENTVFIg
ICBscFNyY1N0ciwNCiAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgIGNjaFNyYywNCiAg
ICAgIExQV09SRCAgICAgbHBDaGFyVHlwZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRTdHJpbmdUeXBl
QSgNCiAgICAgIExDSUQgICAgIExvY2FsZSwNCiAgICAgIERXT1JEICAgIGR3SW5mb1R5cGUsDQog
ICAgICBMUENTVFIgICBscFNyY1N0ciwNCiAgICAgIGludCAgICAgIGNjaFNyYywNCiAgICAgIExQ
V09SRCAgbHBDaGFyVHlwZSk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNh
bGwNCkZvbGRTdHJpbmdBKA0KICAgICAgRFdPUkQgICAgZHdNYXBGbGFncywNCiAgICAgIExQQ1NU
UiAgbHBTcmNTdHIsDQogICAgICBpbnQgICAgICBjY2hTcmMsDQogICAgICBMUFNUUiAgbHBEZXN0
U3RyLA0KICAgICAgaW50ICAgICAgY2NoRGVzdCk7DQoNCg0KDQoNCiNsaW5lIDI2NzAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1TeXN0ZW1Mb2NhbGVzQSgNCiAg
ICAgIExPQ0FMRV9FTlVNUFJPQ0EgbHBMb2NhbGVFbnVtUHJvYywNCiAgICAgIERXT1JEICAgICAg
ICAgICAgZHdGbGFncyk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpFbnVtU3lzdGVtTG9jYWxlc1coDQogICAgICBMT0NBTEVfRU5VTVBST0NXIGxwTG9jYWxlRW51
bVByb2MsDQogICAgICBEV09SRCAgICAgICAgICAgIGR3RmxhZ3MpOw0KDQoNCg0KDQojbGluZSAy
Njk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNsaW5lIDI2OTggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCg0KI2xpbmUgMjcwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRW51
bVN5c3RlbUxhbmd1YWdlR3JvdXBzQSgNCiAgICAgIExBTkdVQUdFR1JPVVBfRU5VTVBST0NBIGxw
TGFuZ3VhZ2VHcm91cEVudW1Qcm9jLA0KICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdG
bGFncywNCiAgICAgIExPTkdfUFRSICAgICAgICAgICAgICAgIGxQYXJhbSk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtU3lzdGVtTGFuZ3VhZ2VHcm91cHNX
KA0KICAgICAgTEFOR1VBR0VHUk9VUF9FTlVNUFJPQ1cgbHBMYW5ndWFnZUdyb3VwRW51bVByb2Ms
DQogICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBkd0ZsYWdzLA0KICAgICAgTE9OR19QVFIg
ICAgICAgICAgICAgICAgbFBhcmFtKTsNCg0KDQoNCg0KI2xpbmUgMjcyOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm5scy5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpF
bnVtTGFuZ3VhZ2VHcm91cExvY2FsZXNBKA0KICAgICAgTEFOR0dST1VQTE9DQUxFX0VOVU1QUk9D
QSBscExhbmdHcm91cExvY2FsZUVudW1Qcm9jLA0KICAgICAgTEdSUElEICAgICAgICAgICAgICAg
ICAgICBMYW5ndWFnZUdyb3VwLA0KICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgICBkd0Zs
YWdzLA0KICAgICAgTE9OR19QVFIgICAgICAgICAgICAgICAgICBsUGFyYW0pOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRW51bUxhbmd1YWdlR3JvdXBMb2NhbGVz
VygNCiAgICAgIExBTkdHUk9VUExPQ0FMRV9FTlVNUFJPQ1cgbHBMYW5nR3JvdXBMb2NhbGVFbnVt
UHJvYywNCiAgICAgIExHUlBJRCAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VHcm91cCwNCiAg
ICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgZHdGbGFncywNCiAgICAgIExPTkdfUFRSICAg
ICAgICAgICAgICAgICAgbFBhcmFtKTsNCg0KDQoNCg0KI2xpbmUgMjc1MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm5scy5oIg0KDQojbGluZSAyNzU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpF
bnVtVUlMYW5ndWFnZXNBKA0KICAgICAgVUlMQU5HVUFHRV9FTlVNUFJPQ0EgbHBVSUxhbmd1YWdl
RW51bVByb2MsDQogICAgICBEV09SRCAgICAgICAgICAgICAgICBkd0ZsYWdzLA0KICAgICAgTE9O
R19QVFIgICAgICAgICAgICAgbFBhcmFtKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkVudW1VSUxhbmd1YWdlc1coDQogICAgICBVSUxBTkdVQUdFX0VOVU1QUk9D
VyBscFVJTGFuZ3VhZ2VFbnVtUHJvYywNCiAgICAgIERXT1JEICAgICAgICAgICAgICAgIGR3Rmxh
Z3MsDQogICAgICBMT05HX1BUUiAgICAgICAgICAgICBsUGFyYW0pOw0KDQoNCg0KDQojbGluZSAy
NzgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCiNsaW5lIDI3ODIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCg0KI2xpbmUgMjc4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBQQyBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpF
bnVtU3lzdGVtQ29kZVBhZ2VzQSgNCiAgICAgIENPREVQQUdFX0VOVU1QUk9DQSBscENvZGVQYWdl
RW51bVByb2MsDQogICAgICBEV09SRCAgICAgICAgICAgICAgZHdGbGFncyk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtU3lzdGVtQ29kZVBhZ2VzVygNCiAg
ICAgIENPREVQQUdFX0VOVU1QUk9DVyBscENvZGVQYWdlRW51bVByb2MsDQogICAgICBEV09SRCAg
ICAgICAgICAgICAgZHdGbGFncyk7DQoNCg0KDQoNCiNsaW5lIDI4MDggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5ubHMuaCINCg0KI2xpbmUgMjgxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3Ig
T25lQ29yZSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQppbnQNCl9fc3RkY2FsbCBJZG5Ub0FzY2lpKCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEV09SRCAgICBkd0ZsYWdzLA0KICAgICAgICAgICAgICAgICAgICAJIExQQ1dTVFIgIGxwVW5p
Y29kZUNoYXJTdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CSBpbnQgICAgICBjY2hVbmljb2RlQ2hhciwNCiAgICAgICAgICAgICAgICAgICAgTFBXU1RSICAg
bHBBU0NJSUNoYXJTdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCSBpbnQgICAgICBjY2hBU0NJSUNoYXIpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmlu
dA0KX19zdGRjYWxsIElkblRvVW5pY29kZSggICAgICAgICAgICAgICAgICAgICAgICAgIAkgRFdP
UkQgICBkd0ZsYWdzLA0KICAgICAgICAgICAgICAgICAgICAgICAgIAkgTFBDV1NUUiBscEFTQ0lJ
Q2hhclN0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJ
IGludCAgICAgY2NoQVNDSUlDaGFyLA0KICAgICAgICAgICAgICAgICAgICAgIExQV1NUUiAgbHBV
bmljb2RlQ2hhclN0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAJIGludCAgICAgY2NoVW5pY29kZUNoYXIpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CmludA0KX19zdGRjYWxsIElkblRvTmFtZXByZXBVbmljb2RlKCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCURXT1JEICAgZHdGbGFncywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAJTFBDV1NUUiBscFVuaWNvZGVDaGFyU3RyLA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWludCAgICAgY2NoVW5pY29kZUNoYXIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQV1NUUiAgbHBOYW1lcHJlcENoYXJT
dHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAJaW50ICAgICBjY2hOYW1lcHJlcENoYXIpOw0KDQojbGluZSAyODQ5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmxzLmgiDQoNCiNsaW5lIDI4NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVD
b3JlIEZhbWlseQ0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxs
IE5vcm1hbGl6ZVN0cmluZyggICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9STV9GT1JNIE5v
cm1Gb3JtLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1dTVFIgICBscFNyY1N0
cmluZywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCAgICAgICBjd1NyY0xlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RS
ICAgIGxwRHN0U3RyaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICAgICAgIGN3RHN0TGVuZ3RoICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQk9PTA0KX19zdGRjYWxsIElzTm9ybWFsaXplZFN0cmluZyggICAgICAgICAgICAgICAg
ICAgICBOT1JNX0ZPUk0gTm9ybUZvcm0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
UENXU1RSICAgbHBTdHJpbmcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAgICAgICBjd0xlbmd0aCApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbCBWZXJpZnlTY3JpcHRzKA0KICAgICAgICAgRFdPUkQgICBkd0ZsYWdz
LCAgICAgICAgICAgIA0KICAgICAgICAgTFBDV1NUUiBscExvY2FsZVNjcmlwdHMsICAgIA0KICAg
ICAgICAgaW50ICAgICBjY2hMb2NhbGVTY3JpcHRzLCAgIA0KICAgICAgICAgTFBDV1NUUiBscFRl
c3RTY3JpcHRzLCAgICAgIA0KICAgICAgICAgaW50ICAgICBjY2hUZXN0U2NyaXB0cyk7ICAgIA0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsIEdldFN0cmluZ1NjcmlwdHMo
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICBkd0ZsYWdzLCAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiBscFN0cmluZywg
ICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICBjY2hTdHJp
bmcsICAgICAgDQogICAgICAgICAgTFBXU1RSICBscFNjcmlwdHMsICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICBjY2hTY3JpcHRzKTsgICAgDQoNCiNsaW5l
IDI4OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KI2xpbmUgMjg5MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRMb2NhbGVJbmZv
RXgoDQogICAgICBMUENXU1RSIGxwTG9jYWxlTmFtZSwNCiAgICAgIExDVFlQRSBMQ1R5cGUsDQog
ICAgICBMUFdTVFIgbHBMQ0RhdGEsDQogICAgICBpbnQgY2NoRGF0YQ0KKTsNCg0KI2xpbmUgMjkx
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBvciBQQyBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRDYWxlbmRhckluZm9FeCgNCiAgICAg
IExQQ1dTVFIgbHBMb2NhbGVOYW1lLA0KICAgICAgQ0FMSUQgQ2FsZW5kYXIsDQogICAgICBMUENX
U1RSIGxwUmVzZXJ2ZWQsDQogICAgICBDQUxUWVBFIENhbFR5cGUsDQogICAgICBMUFdTVFIgbHBD
YWxEYXRhLA0KICAgICAgaW50IGNjaERhdGEsDQogICAgICBMUERXT1JEIGxwVmFsdWUNCik7DQoN
CiNsaW5lIDI5MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI5NTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkdldE51
bWJlckZvcm1hdEV4KA0KICAgICAgTFBDV1NUUiBscExvY2FsZU5hbWUsDQogICAgICBEV09SRCBk
d0ZsYWdzLA0KICAgICAgTFBDV1NUUiBscFZhbHVlLA0KICAgICAgY29uc3QgTlVNQkVSRk1UVyAq
bHBGb3JtYXQsDQogICAgICBMUFdTVFIgbHBOdW1iZXJTdHIsDQogICAgICBpbnQgY2NoTnVtYmVy
DQopOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRDdXJyZW5j
eUZvcm1hdEV4KA0KICAgICAgTFBDV1NUUiBscExvY2FsZU5hbWUsDQogICAgICBEV09SRCBkd0Zs
YWdzLA0KICAgICAgTFBDV1NUUiBscFZhbHVlLA0KICAgICAgY29uc3QgQ1VSUkVOQ1lGTVRXICps
cEZvcm1hdCwNCiAgICAgIExQV1NUUiBscEN1cnJlbmN5U3RyLA0KICAgICAgaW50IGNjaEN1cnJl
bmN5DQopOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpHZXRVc2Vy
RGVmYXVsdExvY2FsZU5hbWUoDQogICAgICBMUFdTVFIgbHBMb2NhbGVOYW1lLA0KICAgICAgaW50
IGNjaExvY2FsZU5hbWUNCik7DQoNCiNsaW5lIDI5OTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Agb3IgUEMgRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3Rk
Y2FsbA0KR2V0U3lzdGVtRGVmYXVsdExvY2FsZU5hbWUoDQogICAgICBMUFdTVFIgbHBMb2NhbGVO
YW1lLA0KICAgICAgaW50IGNjaExvY2FsZU5hbWUNCik7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQk9PTA0KX19zdGRjYWxsDQpJc05MU0RlZmluZWRTdHJpbmcoDQogICAgICBOTFNfRlVOQ1RJ
T04gICAgIEZ1bmN0aW9uLA0KICAgICAgRFdPUkQgICAgICAgICAgICBkd0ZsYWdzLA0KICAgICAg
TFBOTFNWRVJTSU9OSU5GTyBscFZlcnNpb25JbmZvcm1hdGlvbiwNCiAgICAgIExQQ1dTVFIgICAg
ICAgICAgbHBTdHJpbmcsDQogICAgICBJTlQgICAgICAgICAgICAgIGNjaFN0cik7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXROTFNWZXJzaW9uRXgoDQogICAg
IAkgICAgTkxTX0ZVTkNUSU9OIGZ1bmN0aW9uLA0KICAgICAgICAgTFBDV1NUUiBscExvY2FsZU5h
bWUsDQogICAgIAkgICAgTFBOTFNWRVJTSU9OSU5GT0VYIGxwVmVyc2lvbkluZm9ybWF0aW9uDQop
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgi
DQoNCiNsaW5lIDMwNDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWFl
cyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpGaW5k
TkxTU3RyaW5nRXgoDQogICAgICBMUENXU1RSIGxwTG9jYWxlTmFtZSwNCiAgICAgIERXT1JEIGR3
RmluZE5MU1N0cmluZ0ZsYWdzLA0KICAgICAgTFBDV1NUUiBscFN0cmluZ1NvdXJjZSwNCiAgICAg
IGludCBjY2hTb3VyY2UsDQogICAgICBMUENXU1RSIGxwU3RyaW5nVmFsdWUsDQogICAgICBpbnQg
Y2NoVmFsdWUsDQogICAgICBMUElOVCBwY2NoRm91bmQsDQogICAgICBMUE5MU1ZFUlNJT05JTkZP
IGxwVmVyc2lvbkluZm9ybWF0aW9uLA0KICAgICAgTFBWT0lEIGxwUmVzZXJ2ZWQsDQogICAgICBM
UEFSQU0gc29ydEhhbmRsZQ0KKTsNCg0KDQoNCiNsaW5lIDMwNjUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
bHMuaCINCg0KI2xpbmUgMzA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KaW50DQpfX3N0ZGNhbGwNCkxDTWFwU3RyaW5nRXgoDQogICAgICBMUENX
U1RSIGxwTG9jYWxlTmFtZSwNCiAgICAgIERXT1JEIGR3TWFwRmxhZ3MsDQogICAgICBMUENXU1RS
IGxwU3JjU3RyLA0KICAgICAgaW50IGNjaFNyYywNCiAgICAgIExQV1NUUiBscERlc3RTdHIsDQog
ICAgICBpbnQgY2NoRGVzdCwNCiAgICAgIExQTkxTVkVSU0lPTklORk8gbHBWZXJzaW9uSW5mb3Jt
YXRpb24sDQogICAgICBMUFZPSUQgbHBSZXNlcnZlZCwNCiAgICAgIExQQVJBTSBzb3J0SGFuZGxl
DQopOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KSXNWYWxpZExv
Y2FsZU5hbWUoDQogICAgICBMUENXU1RSIGxwTG9jYWxlTmFtZQ0KKTsNCg0KI2xpbmUgMzA5MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBvciBQQyBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQp0eXBlZGVmIEJP
T0wgKF9fc3RkY2FsbCogQ0FMSU5GT19FTlVNUFJPQ0VYRVgpKExQV1NUUiwgQ0FMSUQsIExQV1NU
UiwgTFBBUkFNKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVu
dW1DYWxlbmRhckluZm9FeEV4KA0KICAgICAgQ0FMSU5GT19FTlVNUFJPQ0VYRVggcENhbEluZm9F
bnVtUHJvY0V4RXgsDQogICAgICBMUENXU1RSIGxwTG9jYWxlTmFtZSwNCiAgICAgIENBTElEIENh
bGVuZGFyLA0KICAgICAgTFBDV1NUUiBscFJlc2VydmVkLA0KICAgICAgQ0FMVFlQRSBDYWxUeXBl
LA0KICAgICAgTFBBUkFNIGxQYXJhbQ0KKTsNCg0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwqIERB
VEVGTVRfRU5VTVBST0NFWEVYKShMUFdTVFIsIENBTElELCBMUEFSQU0pOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRW51bURhdGVGb3JtYXRzRXhFeCgNCiAgICAg
IERBVEVGTVRfRU5VTVBST0NFWEVYIGxwRGF0ZUZtdEVudW1Qcm9jRXhFeCwNCiAgICAgIExQQ1dT
VFIgbHBMb2NhbGVOYW1lLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIExQQVJBTSBsUGFy
YW0NCik7DQoNCnR5cGVkZWYgQk9PTCAoX19zdGRjYWxsKiBUSU1FRk1UX0VOVU1QUk9DRVgpKExQ
V1NUUiwgTFBBUkFNKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
CkVudW1UaW1lRm9ybWF0c0V4KA0KICAgICAgVElNRUZNVF9FTlVNUFJPQ0VYIGxwVGltZUZtdEVu
dW1Qcm9jRXgsDQogICAgICBMUENXU1RSIGxwTG9jYWxlTmFtZSwNCiAgICAgIERXT1JEIGR3Rmxh
Z3MsDQogICAgICBMUEFSQU0gbFBhcmFtDQopOw0KDQojbGluZSAzMTM2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubmxzLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9y
IFBDIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCnR5cGVkZWYgQk9PTCAo
X19zdGRjYWxsKiBMT0NBTEVfRU5VTVBST0NFWCkoTFBXU1RSLCBEV09SRCwgTFBBUkFNKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1TeXN0ZW1Mb2NhbGVz
RXgoDQogICAgICBMT0NBTEVfRU5VTVBST0NFWCBscExvY2FsZUVudW1Qcm9jRXgsDQogICAgICBE
V09SRCBkd0ZsYWdzLA0KICAgICAgTFBBUkFNIGxQYXJhbSwNCiAgICAgIExQVk9JRCBscFJlc2Vy
dmVkDQopOw0KDQojbGluZSAzMTU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojbGluZSAzMTU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0KDQojcHJh
Z21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmludA0KX19zdGRjYWxsDQpSZXNvbHZlTG9jYWxl
TmFtZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiBscE5hbWVUb1Jlc29s
dmUsDQogICAgICBMUFdTVFIgIGxwTG9jYWxlTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAgICAgY2NoTG9jYWxlTmFtZQ0KKTsNCg0KI2xpbmUgMzE3MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm5scy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMzE3NiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm5scy5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCiAg
ICANCiNsaW5lIDMxODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNsaW5lIDMxODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5ubHMuaCINCg0KDQoNCg0KDQoNCiNwcmFn
bWEgd2FybmluZyhwb3ApDQojbGluZSAzMTkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmxzLmgiDQoNCg0K
fQ0KI2xpbmUgMzE5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5scy5oIg0KDQoNCiNsaW5lIDMyMDAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5ubHMuaCINCiNsaW5lIDE3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCIN
CiNsaW5lIDE3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbmNvbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMzIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5jb24uaCINCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5jb24uaCINCg0K
I2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbnR5cGVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KZXh0ZXJu
ICJDIiB7DQojbGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbnR5cGVzLmgiDQoNCiNwcmFnbWEg
cmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IF9DT09SRCB7DQog
ICAgU0hPUlQgWDsNCiAgICBTSE9SVCBZOw0KfSBDT09SRCwgKlBDT09SRDsNCg0KdHlwZWRlZiBz
dHJ1Y3QgX1NNQUxMX1JFQ1Qgew0KICAgIFNIT1JUIExlZnQ7DQogICAgU0hPUlQgVG9wOw0KICAg
IFNIT1JUIFJpZ2h0Ow0KICAgIFNIT1JUIEJvdHRvbTsNCn0gU01BTExfUkVDVCwgKlBTTUFMTF9S
RUNUOw0KDQp0eXBlZGVmIHN0cnVjdCBfS0VZX0VWRU5UX1JFQ09SRCB7DQogICAgQk9PTCBiS2V5
RG93bjsNCiAgICBXT1JEIHdSZXBlYXRDb3VudDsNCiAgICBXT1JEIHdWaXJ0dWFsS2V5Q29kZTsN
CiAgICBXT1JEIHdWaXJ0dWFsU2NhbkNvZGU7DQogICAgdW5pb24gew0KICAgICAgICBXQ0hBUiBV
bmljb2RlQ2hhcjsNCiAgICAgICAgQ0hBUiAgIEFzY2lpQ2hhcjsNCiAgICB9IHVDaGFyOw0KICAg
IERXT1JEIGR3Q29udHJvbEtleVN0YXRlOw0KfSBLRVlfRVZFTlRfUkVDT1JELCAqUEtFWV9FVkVO
VF9SRUNPUkQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgX01PVVNFX0VWRU5UX1JFQ09SRCB7DQogICAgQ09PUkQgZHdNb3VzZVBv
c2l0aW9uOw0KICAgIERXT1JEIGR3QnV0dG9uU3RhdGU7DQogICAgRFdPUkQgZHdDb250cm9sS2V5
U3RhdGU7DQogICAgRFdPUkQgZHdFdmVudEZsYWdzOw0KfSBNT1VTRV9FVkVOVF9SRUNPUkQsICpQ
TU9VU0VfRVZFTlRfUkVDT1JEOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDEwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbnR5cGVzLmgiDQoNCnR5cGVkZWYgc3Ry
dWN0IF9XSU5ET1dfQlVGRkVSX1NJWkVfUkVDT1JEIHsNCiAgICBDT09SRCBkd1NpemU7DQp9IFdJ
TkRPV19CVUZGRVJfU0laRV9SRUNPUkQsICpQV0lORE9XX0JVRkZFUl9TSVpFX1JFQ09SRDsNCg0K
dHlwZWRlZiBzdHJ1Y3QgX01FTlVfRVZFTlRfUkVDT1JEIHsNCiAgICBVSU5UIGR3Q29tbWFuZElk
Ow0KfSBNRU5VX0VWRU5UX1JFQ09SRCwgKlBNRU5VX0VWRU5UX1JFQ09SRDsNCg0KdHlwZWRlZiBz
dHJ1Y3QgX0ZPQ1VTX0VWRU5UX1JFQ09SRCB7DQogICAgQk9PTCBiU2V0Rm9jdXM7DQp9IEZPQ1VT
X0VWRU5UX1JFQ09SRCwgKlBGT0NVU19FVkVOVF9SRUNPUkQ7DQoNCnR5cGVkZWYgc3RydWN0IF9J
TlBVVF9SRUNPUkQgew0KICAgIFdPUkQgRXZlbnRUeXBlOw0KICAgIHVuaW9uIHsNCiAgICAgICAg
S0VZX0VWRU5UX1JFQ09SRCBLZXlFdmVudDsNCiAgICAgICAgTU9VU0VfRVZFTlRfUkVDT1JEIE1v
dXNlRXZlbnQ7DQogICAgICAgIFdJTkRPV19CVUZGRVJfU0laRV9SRUNPUkQgV2luZG93QnVmZmVy
U2l6ZUV2ZW50Ow0KICAgICAgICBNRU5VX0VWRU5UX1JFQ09SRCBNZW51RXZlbnQ7DQogICAgICAg
IEZPQ1VTX0VWRU5UX1JFQ09SRCBGb2N1c0V2ZW50Ow0KICAgIH0gRXZlbnQ7DQp9IElOUFVUX1JF
Q09SRCwgKlBJTlBVVF9SRUNPUkQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX0NIQVJfSU5GTyB7DQogICAgdW5pb24gew0KICAgICAgICBXQ0hBUiBVbmljb2RlQ2hhcjsN
CiAgICAgICAgQ0hBUiAgIEFzY2lpQ2hhcjsNCiAgICB9IENoYXI7DQogICAgV09SRCBBdHRyaWJ1
dGVzOw0KfSBDSEFSX0lORk8sICpQQ0hBUl9JTkZPOw0KDQp0eXBlZGVmIHN0cnVjdCBfQ09OU09M
RV9GT05UX0lORk8gew0KICAgIERXT1JEICBuRm9udDsNCiAgICBDT09SRCAgZHdGb250U2l6ZTsN
Cn0gQ09OU09MRV9GT05UX0lORk8sICpQQ09OU09MRV9GT05UX0lORk87DQoNCnR5cGVkZWYgdm9p
ZCogSFBDT047DQoNCiNsaW5lIDE1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbnR5cGVzLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDE2NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbnR5cGVz
LmgiDQoNCiNsaW5lIDE2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbnR5cGVzLmgiDQojbGluZSAzOSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmNvbi5oIg0KDQoNCg0KDQojbGluZSA0NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmNvbi5oIg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb25zb2xl
YXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcY29uc29sZWFwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wN
Cl9fc3RkY2FsbA0KQWxsb2NDb25zb2xlKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGcmVlQ29uc29sZSgNCiAgICB2b2lkDQog
ICAgKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkF0
dGFjaENvbnNvbGUoDQogICAgICBEV09SRCBkd1Byb2Nlc3NJZA0KICAgICk7DQoNCg0KDQoNCiNs
aW5lIDYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNClVJTlQNCl9fc3RkY2FsbA0KR2V0Q29uc29sZUNQKA0KICAgIHZvaWQNCiAgICApOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQpHZXRDb25zb2xlT3V0cHV0
Q1AoDQogICAgdm9pZA0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KR2V0Q29uc29sZU1vZGUoDQogICAgICBIQU5ETEUgaENvbnNvbGVIYW5kbGUsDQogICAgICBM
UERXT1JEIGxwTW9kZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNClNldENvbnNvbGVNb2RlKA0KICAgICAgSEFORExFIGhDb25zb2xlSGFuZGxlLA0K
ICAgICAgRFdPUkQgZHdNb2RlDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KR2V0TnVtYmVyT2ZDb25zb2xlSW5wdXRFdmVudHMoDQogICAgICBIQU5E
TEUgaENvbnNvbGVJbnB1dCwNCiAgICAgIExQRFdPUkQgbHBOdW1iZXJPZkV2ZW50cw0KICAgICk7
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpCT09MDQpfX3N0ZGNhbGwNClJlYWRDb25z
b2xlSW5wdXRBKA0KICAgICAgSEFORExFIGhDb25zb2xlSW5wdXQsDQogICAgICBQSU5QVVRfUkVD
T1JEIGxwQnVmZmVyLA0KICAgICAgRFdPUkQgbkxlbmd0aCwNCiAgICAgICAgTFBEV09SRCBscE51
bWJlck9mRXZlbnRzUmVhZA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KQk9P
TA0KX19zdGRjYWxsDQpSZWFkQ29uc29sZUlucHV0VygNCiAgICAgIEhBTkRMRSBoQ29uc29sZUlu
cHV0LA0KICAgICAgUElOUFVUX1JFQ09SRCBscEJ1ZmZlciwNCiAgICAgIERXT1JEIG5MZW5ndGgs
DQogICAgICAgIExQRFdPUkQgbHBOdW1iZXJPZkV2ZW50c1JlYWQNCiAgICApOw0KDQoNCg0KDQoN
CiNsaW5lIDE1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUGVla0NvbnNvbGVJ
bnB1dEEoDQogICAgICBIQU5ETEUgaENvbnNvbGVJbnB1dCwNCiAgICAgIFBJTlBVVF9SRUNPUkQg
bHBCdWZmZXIsDQogICAgICBEV09SRCBuTGVuZ3RoLA0KICAgICAgTFBEV09SRCBscE51bWJlck9m
RXZlbnRzUmVhZA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpQZWVrQ29uc29sZUlucHV0VygNCiAgICAgIEhBTkRMRSBoQ29uc29sZUlucHV0LA0KICAg
ICAgUElOUFVUX1JFQ09SRCBscEJ1ZmZlciwNCiAgICAgIERXT1JEIG5MZW5ndGgsDQogICAgICBM
UERXT1JEIGxwTnVtYmVyT2ZFdmVudHNSZWFkDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAxOTIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9DT05TT0xFX1JF
QURDT05TT0xFX0NPTlRST0wgew0KICAgIFVMT05HIG5MZW5ndGg7DQogICAgVUxPTkcgbkluaXRp
YWxDaGFyczsNCiAgICBVTE9ORyBkd0N0cmxXYWtldXBNYXNrOw0KICAgIFVMT05HIGR3Q29udHJv
bEtleVN0YXRlOw0KfSBDT05TT0xFX1JFQURDT05TT0xFX0NPTlRST0wsICpQQ09OU09MRV9SRUFE
Q09OU09MRV9DT05UUk9MOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANCkJPT0wNCl9fc3Rk
Y2FsbA0KUmVhZENvbnNvbGVBKA0KICAgICAgSEFORExFIGhDb25zb2xlSW5wdXQsDQogICAgICBM
UFZPSUQgbHBCdWZmZXIsDQogICAgICBEV09SRCBuTnVtYmVyT2ZDaGFyc1RvUmVhZCwNCiAgICAg
ICAgTFBEV09SRCBscE51bWJlck9mQ2hhcnNSZWFkLA0KICAgICAgUENPTlNPTEVfUkVBRENPTlNP
TEVfQ09OVFJPTCBwSW5wdXRDb250cm9sDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQpCT09MDQpfX3N0ZGNhbGwNClJlYWRDb25zb2xlVygNCiAgICAgIEhBTkRMRSBoQ29uc29s
ZUlucHV0LA0KICAgICAgTFBWT0lEIGxwQnVmZmVyLA0KICAgICAgRFdPUkQgbk51bWJlck9mQ2hh
cnNUb1JlYWQsDQogICAgICAgIExQRFdPUkQgbHBOdW1iZXJPZkNoYXJzUmVhZCwNCiAgICAgIFBD
T05TT0xFX1JFQURDT05TT0xFX0NPTlRST0wgcElucHV0Q29udHJvbA0KICAgICk7DQoNCg0KDQoN
Cg0KI2xpbmUgMjI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV3JpdGVDb25zb2xlQSgNCiAgICAgIEhBTkRMRSBo
Q29uc29sZU91dHB1dCwNCiAgICAgIGNvbnN0IHZvaWQqIGxwQnVmZmVyLA0KICAgICAgRFdPUkQg
bk51bWJlck9mQ2hhcnNUb1dyaXRlLA0KICAgICAgTFBEV09SRCBscE51bWJlck9mQ2hhcnNXcml0
dGVuLA0KICAgICAgTFBWT0lEIGxwUmVzZXJ2ZWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV3JpdGVDb25zb2xlVygNCiAgICAgIEhBTkRMRSBoQ29u
c29sZU91dHB1dCwNCiAgICAgIGNvbnN0IHZvaWQqIGxwQnVmZmVyLA0KICAgICAgRFdPUkQgbk51
bWJlck9mQ2hhcnNUb1dyaXRlLA0KICAgICAgTFBEV09SRCBscE51bWJlck9mQ2hhcnNXcml0dGVu
LA0KICAgICAgTFBWT0lEIGxwUmVzZXJ2ZWQNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDI1NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmDQpCT09MDQooX19zdGRjYWxsICpQSEFORExFUl9ST1VUSU5FKSgNCiAgICAg
IERXT1JEIEN0cmxUeXBlDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpf
X3N0ZGNhbGwNClNldENvbnNvbGVDdHJsSGFuZGxlcigNCiAgICAgIFBIQU5ETEVSX1JPVVRJTkUg
SGFuZGxlclJvdXRpbmUsDQogICAgICBCT09MIEFkZA0KICAgICk7DQoNCg0KDQojbGluZSAyOTEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMzMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaS5oIg0KDQojbGluZSAzMzMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb25zb2xlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDMz
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkuaCINCg0KI2xpbmUgMzQwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
Y29uc29sZWFwaS5oIg0KDQojbGluZSA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbi5oIg0KI2xpbmUg
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNv
bGVhcGkyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkZpbGxDb25zb2xlT3V0cHV0
Q2hhcmFjdGVyQSgNCiAgICAgIEhBTkRMRSBoQ29uc29sZU91dHB1dCwNCiAgICAgIENIQVIgY0No
YXJhY3RlciwNCiAgICAgIERXT1JEIG5MZW5ndGgsDQogICAgICBDT09SRCBkd1dyaXRlQ29vcmQs
DQogICAgICBMUERXT1JEIGxwTnVtYmVyT2ZDaGFyc1dyaXR0ZW4NCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRmlsbENvbnNvbGVPdXRwdXRDaGFyYWN0
ZXJXKA0KICAgICAgSEFORExFIGhDb25zb2xlT3V0cHV0LA0KICAgICAgV0NIQVIgY0NoYXJhY3Rl
ciwNCiAgICAgIERXT1JEIG5MZW5ndGgsDQogICAgICBDT09SRCBkd1dyaXRlQ29vcmQsDQogICAg
ICBMUERXT1JEIGxwTnVtYmVyT2ZDaGFyc1dyaXR0ZW4NCiAgICApOw0KDQoNCg0KDQoNCiNsaW5l
IDgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlKA0KICAgICAgSEFO
RExFIGhDb25zb2xlT3V0cHV0LA0KICAgICAgV09SRCB3QXR0cmlidXRlLA0KICAgICAgRFdPUkQg
bkxlbmd0aCwNCiAgICAgIENPT1JEIGR3V3JpdGVDb29yZCwNCiAgICAgIExQRFdPUkQgbHBOdW1i
ZXJPZkF0dHJzV3JpdHRlbg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkdlbmVyYXRlQ29uc29sZUN0cmxFdmVudCgNCiAgICAgIERXT1JEIGR3Q3Ry
bEV2ZW50LA0KICAgICAgRFdPUkQgZHdQcm9jZXNzR3JvdXBJZA0KICAgICk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlQ29uc29sZVNjcmVlbkJ1
ZmZlcigNCiAgICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgIERXT1JEIGR3U2hhcmVN
b2RlLA0KICAgICAgY29uc3QgU0VDVVJJVFlfQVRUUklCVVRFUyogbHBTZWN1cml0eUF0dHJpYnV0
ZXMsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgTFBWT0lEIGxwU2NyZWVuQnVmZmVyRGF0
YQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNl
dENvbnNvbGVBY3RpdmVTY3JlZW5CdWZmZXIoDQogICAgICBIQU5ETEUgaENvbnNvbGVPdXRwdXQN
CiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpGbHVz
aENvbnNvbGVJbnB1dEJ1ZmZlcigNCiAgICAgIEhBTkRMRSBoQ29uc29sZUlucHV0DQogICAgKTsN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q29uc29sZUNQ
KA0KICAgICAgVUlOVCB3Q29kZVBhZ2VJRA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldENvbnNvbGVPdXRwdXRDUCgNCiAgICAgIFVJTlQgd0Nv
ZGVQYWdlSUQNCiAgICApOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9DT05TT0xFX0NVUlNPUl9JTkZP
IHsNCiAgICBEV09SRCAgZHdTaXplOw0KICAgIEJPT0wgICBiVmlzaWJsZTsNCn0gQ09OU09MRV9D
VVJTT1JfSU5GTywgKlBDT05TT0xFX0NVUlNPUl9JTkZPOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Q29uc29sZUN1cnNvckluZm8oDQogICAgICBIQU5ETEUg
aENvbnNvbGVPdXRwdXQsDQogICAgICBQQ09OU09MRV9DVVJTT1JfSU5GTyBscENvbnNvbGVDdXJz
b3JJbmZvDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KU2V0Q29uc29sZUN1cnNvckluZm8oDQogICAgICBIQU5ETEUgaENvbnNvbGVPdXRwdXQsDQog
ICAgICBjb25zdCBDT05TT0xFX0NVUlNPUl9JTkZPKiBscENvbnNvbGVDdXJzb3JJbmZvDQogICAg
KTsNCg0KDQp0eXBlZGVmIHN0cnVjdCBfQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8gew0KICAg
IENPT1JEIGR3U2l6ZTsNCiAgICBDT09SRCBkd0N1cnNvclBvc2l0aW9uOw0KICAgIFdPUkQgIHdB
dHRyaWJ1dGVzOw0KICAgIFNNQUxMX1JFQ1Qgc3JXaW5kb3c7DQogICAgQ09PUkQgZHdNYXhpbXVt
V2luZG93U2l6ZTsNCn0gQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8sICpQQ09OU09MRV9TQ1JF
RU5fQlVGRkVSX0lORk87DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbygNCiAgICAgIEhBTkRMRSBoQ29uc29sZU91dHB1
dCwNCiAgICAgIFBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBscENvbnNvbGVTY3JlZW5CdWZm
ZXJJbmZvDQogICAgKTsNCg0KDQp0eXBlZGVmIHN0cnVjdCBfQ09OU09MRV9TQ1JFRU5fQlVGRkVS
X0lORk9FWCB7DQogICAgVUxPTkcgY2JTaXplOw0KICAgIENPT1JEIGR3U2l6ZTsNCiAgICBDT09S
RCBkd0N1cnNvclBvc2l0aW9uOw0KICAgIFdPUkQgd0F0dHJpYnV0ZXM7DQogICAgU01BTExfUkVD
VCBzcldpbmRvdzsNCiAgICBDT09SRCBkd01heGltdW1XaW5kb3dTaXplOw0KICAgIFdPUkQgd1Bv
cHVwQXR0cmlidXRlczsNCiAgICBCT09MIGJGdWxsc2NyZWVuU3VwcG9ydGVkOw0KICAgIENPTE9S
UkVGIENvbG9yVGFibGVbMTZdOw0KfSBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GT0VYLCAqUENP
TlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPRVg7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mb0V4KA0KICAgICAgSEFORExF
IGhDb25zb2xlT3V0cHV0LA0KICAgICAgUENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPRVggbHBD
b25zb2xlU2NyZWVuQnVmZmVySW5mb0V4DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm9FeCgNCiAgICAg
IEhBTkRMRSBoQ29uc29sZU91dHB1dCwNCiAgICAgIFBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5G
T0VYIGxwQ29uc29sZVNjcmVlbkJ1ZmZlckluZm9FeA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldENvbnNvbGVTY3JlZW5CdWZmZXJTaXplKA0K
ICAgICAgSEFORExFIGhDb25zb2xlT3V0cHV0LA0KICAgICAgQ09PUkQgZHdTaXplDQogICAgKTsN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q29uc29sZUN1
cnNvclBvc2l0aW9uKA0KICAgICAgSEFORExFIGhDb25zb2xlT3V0cHV0LA0KICAgICAgQ09PUkQg
ZHdDdXJzb3JQb3NpdGlvbg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDT09S
RA0KX19zdGRjYWxsDQpHZXRMYXJnZXN0Q29uc29sZVdpbmRvd1NpemUoDQogICAgICBIQU5ETEUg
aENvbnNvbGVPdXRwdXQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZSgNCiAgICAgIEhBTkRMRSBoQ29uc29s
ZU91dHB1dCwNCiAgICAgIFdPUkQgd0F0dHJpYnV0ZXMNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRDb25zb2xlV2luZG93SW5mbygNCiAgICAg
IEhBTkRMRSBoQ29uc29sZU91dHB1dCwNCiAgICAgIEJPT0wgYkFic29sdXRlLA0KICAgICAgY29u
c3QgU01BTExfUkVDVCogbHBDb25zb2xlV2luZG93DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyQSgN
CiAgICAgIEhBTkRMRSBoQ29uc29sZU91dHB1dCwNCiAgICAgIExQQ1NUUiBscENoYXJhY3RlciwN
CiAgICAgIERXT1JEIG5MZW5ndGgsDQogICAgICBDT09SRCBkd1dyaXRlQ29vcmQsDQogICAgICBM
UERXT1JEIGxwTnVtYmVyT2ZDaGFyc1dyaXR0ZW4NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyVygNCiAg
ICAgIEhBTkRMRSBoQ29uc29sZU91dHB1dCwNCiAgICAgIExQQ1dTVFIgbHBDaGFyYWN0ZXIsDQog
ICAgICBEV09SRCBuTGVuZ3RoLA0KICAgICAgQ09PUkQgZHdXcml0ZUNvb3JkLA0KICAgICAgTFBE
V09SRCBscE51bWJlck9mQ2hhcnNXcml0dGVuDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAyODgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpMi5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KV3JpdGVDb25zb2xlT3V0cHV0QXR0cmlidXRlKA0KICAgICAgSEFORExF
IGhDb25zb2xlT3V0cHV0LA0KICAgICAgY29uc3QgV09SRCogbHBBdHRyaWJ1dGUsDQogICAgICBE
V09SRCBuTGVuZ3RoLA0KICAgICAgQ09PUkQgZHdXcml0ZUNvb3JkLA0KICAgICAgTFBEV09SRCBs
cE51bWJlck9mQXR0cnNXcml0dGVuDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJPT0wNCl9fc3RkY2FsbA0KUmVhZENvbnNvbGVPdXRwdXRDaGFyYWN0ZXJBKA0KICAgICAgSEFO
RExFIGhDb25zb2xlT3V0cHV0LA0KICAgICAgTFBTVFIgbHBDaGFyYWN0ZXIsDQogICAgICBEV09S
RCBuTGVuZ3RoLA0KICAgICAgQ09PUkQgZHdSZWFkQ29vcmQsDQogICAgICBMUERXT1JEIGxwTnVt
YmVyT2ZDaGFyc1JlYWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KUmVhZENvbnNvbGVPdXRwdXRDaGFyYWN0ZXJXKA0KICAgICAgSEFORExFIGhDb25z
b2xlT3V0cHV0LA0KICAgICAgTFBXU1RSIGxwQ2hhcmFjdGVyLA0KICAgICAgRFdPUkQgbkxlbmd0
aCwNCiAgICAgIENPT1JEIGR3UmVhZENvb3JkLA0KICAgICAgTFBEV09SRCBscE51bWJlck9mQ2hh
cnNSZWFkDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAzMjggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb25zb2xl
YXBpMi5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUmVhZENv
bnNvbGVPdXRwdXRBdHRyaWJ1dGUoDQogICAgICBIQU5ETEUgaENvbnNvbGVPdXRwdXQsDQogICAg
ICBMUFdPUkQgbHBBdHRyaWJ1dGUsDQogICAgICBEV09SRCBuTGVuZ3RoLA0KICAgICAgQ09PUkQg
ZHdSZWFkQ29vcmQsDQogICAgICBMUERXT1JEIGxwTnVtYmVyT2ZBdHRyc1JlYWQNCiAgICApOw0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpXcml0ZUNvbnNvbGVJ
bnB1dEEoDQogICAgICBIQU5ETEUgaENvbnNvbGVJbnB1dCwNCiAgICAgIGNvbnN0IElOUFVUX1JF
Q09SRCogbHBCdWZmZXIsDQogICAgICBEV09SRCBuTGVuZ3RoLA0KICAgICAgTFBEV09SRCBscE51
bWJlck9mRXZlbnRzV3JpdHRlbg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpXcml0ZUNvbnNvbGVJbnB1dFcoDQogICAgICBIQU5ETEUgaENvbnNvbGVJ
bnB1dCwNCiAgICAgIGNvbnN0IElOUFVUX1JFQ09SRCogbHBCdWZmZXIsDQogICAgICBEV09SRCBu
TGVuZ3RoLA0KICAgICAgTFBEV09SRCBscE51bWJlck9mRXZlbnRzV3JpdHRlbg0KICAgICk7DQoN
Cg0KDQoNCg0KI2xpbmUgMzY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTIuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNjcm9sbENvbnNvbGVTY3JlZW5CdWZm
ZXJBKA0KICAgICAgSEFORExFIGhDb25zb2xlT3V0cHV0LA0KICAgICAgY29uc3QgU01BTExfUkVD
VCogbHBTY3JvbGxSZWN0YW5nbGUsDQogICAgICBjb25zdCBTTUFMTF9SRUNUKiBscENsaXBSZWN0
YW5nbGUsDQogICAgICBDT09SRCBkd0Rlc3RpbmF0aW9uT3JpZ2luLA0KICAgICAgY29uc3QgQ0hB
Ul9JTkZPKiBscEZpbGwNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KU2Nyb2xsQ29uc29sZVNjcmVlbkJ1ZmZlclcoDQogICAgICBIQU5ETEUgaENvbnNv
bGVPdXRwdXQsDQogICAgICBjb25zdCBTTUFMTF9SRUNUKiBscFNjcm9sbFJlY3RhbmdsZSwNCiAg
ICAgIGNvbnN0IFNNQUxMX1JFQ1QqIGxwQ2xpcFJlY3RhbmdsZSwNCiAgICAgIENPT1JEIGR3RGVz
dGluYXRpb25PcmlnaW4sDQogICAgICBjb25zdCBDSEFSX0lORk8qIGxwRmlsbA0KICAgICk7DQoN
Cg0KDQoNCg0KI2xpbmUgMzk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTIuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCldyaXRlQ29uc29sZU91dHB1dEEoDQog
ICAgICBIQU5ETEUgaENvbnNvbGVPdXRwdXQsDQogICAgICBjb25zdCBDSEFSX0lORk8qIGxwQnVm
ZmVyLA0KICAgICAgQ09PUkQgZHdCdWZmZXJTaXplLA0KICAgICAgQ09PUkQgZHdCdWZmZXJDb29y
ZCwNCiAgICAgIFBTTUFMTF9SRUNUIGxwV3JpdGVSZWdpb24NCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KV3JpdGVDb25zb2xlT3V0cHV0VygNCiAgICAg
IEhBTkRMRSBoQ29uc29sZU91dHB1dCwNCiAgICAgIGNvbnN0IENIQVJfSU5GTyogbHBCdWZmZXIs
DQogICAgICBDT09SRCBkd0J1ZmZlclNpemUsDQogICAgICBDT09SRCBkd0J1ZmZlckNvb3JkLA0K
ICAgICAgUFNNQUxMX1JFQ1QgbHBXcml0ZVJlZ2lvbg0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUg
NDIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTIuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNClJlYWRDb25zb2xlT3V0cHV0QSgNCiAgICAgIEhBTkRMRSBoQ29u
c29sZU91dHB1dCwNCiAgICAgIFBDSEFSX0lORk8gbHBCdWZmZXIsDQogICAgICBDT09SRCBkd0J1
ZmZlclNpemUsDQogICAgICBDT09SRCBkd0J1ZmZlckNvb3JkLA0KICAgICAgUFNNQUxMX1JFQ1Qg
bHBSZWFkUmVnaW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0
ZGNhbGwNClJlYWRDb25zb2xlT3V0cHV0VygNCiAgICAgIEhBTkRMRSBoQ29uc29sZU91dHB1dCwN
CiAgICAgIFBDSEFSX0lORk8gbHBCdWZmZXIsDQogICAgICBDT09SRCBkd0J1ZmZlclNpemUsDQog
ICAgICBDT09SRCBkd0J1ZmZlckNvb3JkLA0KICAgICAgUFNNQUxMX1JFQ1QgbHBSZWFkUmVnaW9u
DQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA0NTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpMi5o
Ig0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0Q29uc29s
ZVRpdGxlQSgNCiAgICAgIExQU1RSIGxwQ29uc29sZVRpdGxlLA0KICAgICAgRFdPUkQgblNpemUN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldENv
bnNvbGVUaXRsZVcoDQogICAgICBMUFdTVFIgbHBDb25zb2xlVGl0bGUsDQogICAgICBEV09SRCBu
U2l6ZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNDczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFw
aTIuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0
Q29uc29sZU9yaWdpbmFsVGl0bGVBKA0KICAgICAgTFBTVFIgbHBDb25zb2xlVGl0bGUsDQogICAg
ICBEV09SRCBuU2l6ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9f
c3RkY2FsbA0KR2V0Q29uc29sZU9yaWdpbmFsVGl0bGVXKA0KICAgICAgTFBXU1RSIGxwQ29uc29s
ZVRpdGxlLA0KICAgICAgRFdPUkQgblNpemUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDQ5NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkyLmgiDQogICAgDQojbGluZSA0OTkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxjb25zb2xlYXBpMi5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2Fs
bA0KU2V0Q29uc29sZVRpdGxlQSgNCiAgICAgIExQQ1NUUiBscENvbnNvbGVUaXRsZQ0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRDb25zb2xlVGl0
bGVXKA0KICAgICAgTFBDV1NUUiBscENvbnNvbGVUaXRsZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xp
bmUgNTE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTIuaCINCg0KI2xpbmUgNTIxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcY29uc29sZWFwaTIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgNTI2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTIuaCINCg0KI2xpbmUgNTI4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
Y29uc29sZWFwaTIuaCINCiNsaW5lIDQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luY29uLmgiDQojbGluZSAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpMy5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTMuaCINCg0K
DQpleHRlcm4gIkMiIHsNCiNsaW5lIDMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTMuaCINCg0K
I3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldE51bWJlck9mQ29uc29s
ZU1vdXNlQnV0dG9ucygNCiAgICAgIExQRFdPUkQgbHBOdW1iZXJPZk1vdXNlQnV0dG9ucw0KICAg
ICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ09PUkQNCl9fc3RkY2FsbA0KR2V0
Q29uc29sZUZvbnRTaXplKA0KICAgICAgSEFORExFIGhDb25zb2xlT3V0cHV0LA0KICAgICAgRFdP
UkQgbkZvbnQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRj
YWxsDQpHZXRDdXJyZW50Q29uc29sZUZvbnQoDQogICAgICBIQU5ETEUgaENvbnNvbGVPdXRwdXQs
DQogICAgICBCT09MIGJNYXhpbXVtV2luZG93LA0KICAgICAgUENPTlNPTEVfRk9OVF9JTkZPIGxw
Q29uc29sZUN1cnJlbnRGb250DQogICAgKTsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0NPTlNP
TEVfRk9OVF9JTkZPRVggew0KICAgIFVMT05HIGNiU2l6ZTsNCiAgICBEV09SRCBuRm9udDsNCiAg
ICBDT09SRCBkd0ZvbnRTaXplOw0KICAgIFVJTlQgRm9udEZhbWlseTsNCiAgICBVSU5UIEZvbnRX
ZWlnaHQ7DQogICAgV0NIQVIgRmFjZU5hbWVbMzJdOw0KfSBDT05TT0xFX0ZPTlRfSU5GT0VYLCAq
UENPTlNPTEVfRk9OVF9JTkZPRVg7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpHZXRDdXJyZW50Q29uc29sZUZvbnRFeCgNCiAgICAgIEhBTkRMRSBoQ29uc29sZU91
dHB1dCwNCiAgICAgIEJPT0wgYk1heGltdW1XaW5kb3csDQogICAgICBQQ09OU09MRV9GT05UX0lO
Rk9FWCBscENvbnNvbGVDdXJyZW50Rm9udEV4DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q3VycmVudENvbnNvbGVGb250RXgoDQogICAgICBI
QU5ETEUgaENvbnNvbGVPdXRwdXQsDQogICAgICBCT09MIGJNYXhpbXVtV2luZG93LA0KICAgICAg
UENPTlNPTEVfRk9OVF9JTkZPRVggbHBDb25zb2xlQ3VycmVudEZvbnRFeA0KICAgICk7DQoNCg0K
I2xpbmUgOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpMy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IF9DT05TT0xFX1NFTEVDVElPTl9JTkZPIHsNCiAgICBEV09SRCBk
d0ZsYWdzOw0KICAgIENPT1JEIGR3U2VsZWN0aW9uQW5jaG9yOw0KICAgIFNNQUxMX1JFQ1Qgc3JT
ZWxlY3Rpb247DQp9IENPTlNPTEVfU0VMRUNUSU9OX0lORk8sICpQQ09OU09MRV9TRUxFQ1RJT05f
SU5GTzsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldENvbnNv
bGVTZWxlY3Rpb25JbmZvKA0KICAgICAgUENPTlNPTEVfU0VMRUNUSU9OX0lORk8gbHBDb25zb2xl
U2VsZWN0aW9uSW5mbw0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0NP
TlNPTEVfSElTVE9SWV9JTkZPIHsNCiAgICBVSU5UIGNiU2l6ZTsNCiAgICBVSU5UIEhpc3RvcnlC
dWZmZXJTaXplOw0KICAgIFVJTlQgTnVtYmVyT2ZIaXN0b3J5QnVmZmVyczsNCiAgICBEV09SRCBk
d0ZsYWdzOw0KfSBDT05TT0xFX0hJU1RPUllfSU5GTywgKlBDT05TT0xFX0hJU1RPUllfSU5GTzsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkdldENvbnNvbGVIaXN0
b3J5SW5mbygNCiAgICAgIFBDT05TT0xFX0hJU1RPUllfSU5GTyBscENvbnNvbGVIaXN0b3J5SW5m
bw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNl
dENvbnNvbGVIaXN0b3J5SW5mbygNCiAgICAgIFBDT05TT0xFX0hJU1RPUllfSU5GTyBscENvbnNv
bGVIaXN0b3J5SW5mbw0KICAgICk7DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpC
T09MDQpfX3N0ZGNhbGwNCkdldENvbnNvbGVEaXNwbGF5TW9kZSgNCiAgICAgIExQRFdPUkQgbHBN
b2RlRmxhZ3MNCiAgICApOw0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpTZXRDb25zb2xlRGlzcGxheU1vZGUoDQogICAgICBIQU5ETEUgaENvbnNvbGVP
dXRwdXQsDQogICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgUENPT1JEIGxwTmV3U2NyZWVuQnVm
ZmVyRGltZW5zaW9ucw0KICAgICk7DQoNCiAgICANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFdO
RA0KX19zdGRjYWxsDQpHZXRDb25zb2xlV2luZG93KA0KICAgIHZvaWQNCiAgICApOw0KDQoNCiNs
aW5lIDE4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkzLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRkQ29uc29sZUFsaWFzQSgNCiAgICAgIExQU1RS
IFNvdXJjZSwNCiAgICAgIExQU1RSIFRhcmdldCwNCiAgICAgIExQU1RSIEV4ZU5hbWUNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQWRkQ29uc29sZUFs
aWFzVygNCiAgICAgIExQV1NUUiBTb3VyY2UsDQogICAgICBMUFdTVFIgVGFyZ2V0LA0KICAgICAg
TFBXU1RSIEV4ZU5hbWUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDIwOSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGNvbnNvbGVhcGkzLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2Fs
bA0KR2V0Q29uc29sZUFsaWFzQSgNCiAgICAgIExQU1RSIFNvdXJjZSwNCiAgICAgIExQU1RSIFRh
cmdldEJ1ZmZlciwNCiAgICAgIERXT1JEIFRhcmdldEJ1ZmZlckxlbmd0aCwNCiAgICAgIExQU1RS
IEV4ZU5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldENvbnNvbGVBbGlhc1coDQogICAgICBMUFdTVFIgU291cmNlLA0KICAgICAgTFBXU1RS
IFRhcmdldEJ1ZmZlciwNCiAgICAgIERXT1JEIFRhcmdldEJ1ZmZlckxlbmd0aCwNCiAgICAgIExQ
V1NUUiBFeGVOYW1lDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAyMzUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxj
b25zb2xlYXBpMy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwN
CkdldENvbnNvbGVBbGlhc2VzTGVuZ3RoQSgNCiAgICAgIExQU1RSIEV4ZU5hbWUNCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldENvbnNvbGVBbGlh
c2VzTGVuZ3RoVygNCiAgICAgIExQV1NUUiBFeGVOYW1lDQogICAgKTsNCg0KDQoNCg0KDQojbGlu
ZSAyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxjb25zb2xlYXBpMy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldENvbnNvbGVBbGlhc0V4ZXNMZW5ndGhBKA0KICAgIHZv
aWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdl
dENvbnNvbGVBbGlhc0V4ZXNMZW5ndGhXKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCg0KDQoNCiNs
aW5lIDI3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkzLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0Q29uc29sZUFsaWFzZXNBKA0KICAgICAgTFBTVFIg
QWxpYXNCdWZmZXIsDQogICAgICBEV09SRCBBbGlhc0J1ZmZlckxlbmd0aCwNCiAgICAgIExQU1RS
IEV4ZU5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNh
bGwNCkdldENvbnNvbGVBbGlhc2VzVygNCiAgICAgIExQV1NUUiBBbGlhc0J1ZmZlciwNCiAgICAg
IERXT1JEIEFsaWFzQnVmZmVyTGVuZ3RoLA0KICAgICAgTFBXU1RSIEV4ZU5hbWUNCiAgICApOw0K
DQoNCg0KDQoNCiNsaW5lIDI5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkzLmgiDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0Q29uc29sZUFsaWFzRXhlc0Eo
DQogICAgICBMUFNUUiBFeGVOYW1lQnVmZmVyLA0KICAgICAgRFdPUkQgRXhlTmFtZUJ1ZmZlckxl
bmd0aA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0K
R2V0Q29uc29sZUFsaWFzRXhlc1coDQogICAgICBMUFdTVFIgRXhlTmFtZUJ1ZmZlciwNCiAgICAg
IERXT1JEIEV4ZU5hbWVCdWZmZXJMZW5ndGgNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDMyMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkzLmgiDQoNCiNsaW5lIDMyMyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNv
bnNvbGVhcGkzLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpF
eHB1bmdlQ29uc29sZUNvbW1hbmRIaXN0b3J5QSgNCiAgICAgIExQU1RSIEV4ZU5hbWUNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KRXhwdW5nZUNvbnNv
bGVDb21tYW5kSGlzdG9yeVcoDQogICAgICBMUFdTVFIgRXhlTmFtZQ0KICAgICk7DQoNCg0KDQoN
Cg0KI2xpbmUgMzQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTMuaCINCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldENvbnNvbGVOdW1iZXJPZkNvbW1hbmRzQSgN
CiAgICAgIERXT1JEIE51bWJlciwNCiAgICAgIExQU1RSIEV4ZU5hbWUNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU2V0Q29uc29sZU51bWJlck9mQ29t
bWFuZHNXKA0KICAgICAgRFdPUkQgTnVtYmVyLA0KICAgICAgTFBXU1RSIEV4ZU5hbWUNCiAgICAp
Ow0KDQoNCg0KDQoNCiNsaW5lIDM2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkzLmgiDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0Q29uc29sZUNvbW1hbmRI
aXN0b3J5TGVuZ3RoQSgNCiAgICAgIExQU1RSIEV4ZU5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldENvbnNvbGVDb21tYW5kSGlzdG9yeUxl
bmd0aFcoDQogICAgICBMUFdTVFIgRXhlTmFtZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMzg1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTMuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpE
V09SRA0KX19zdGRjYWxsDQpHZXRDb25zb2xlQ29tbWFuZEhpc3RvcnlBKA0KICAgICAgTFBTVFIg
Q29tbWFuZHMsDQogICAgICBEV09SRCBDb21tYW5kQnVmZmVyTGVuZ3RoLA0KICAgICAgTFBTVFIg
RXhlTmFtZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2Fs
bA0KR2V0Q29uc29sZUNvbW1hbmRIaXN0b3J5VygNCiAgICAgIExQV1NUUiBDb21tYW5kcywNCiAg
ICAgIERXT1JEIENvbW1hbmRCdWZmZXJMZW5ndGgsDQogICAgICBMUFdTVFIgRXhlTmFtZQ0KICAg
ICk7DQoNCg0KDQoNCg0KI2xpbmUgNDA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTMuaCINCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0Q29uc29sZVBy
b2Nlc3NMaXN0KA0KICAgICAgTFBEV09SRCBscGR3UHJvY2Vzc0xpc3QsDQogICAgICBEV09SRCBk
d1Byb2Nlc3NDb3VudA0KICAgICk7DQoNCg0KI2xpbmUgNDIyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29s
ZWFwaTMuaCINCg0KI2xpbmUgNDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29uc29sZWFwaTMuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQogICAgDQoNCn0NCiNsaW5lIDQyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVh
cGkzLmgiDQoNCiNsaW5lIDQzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbnNvbGVhcGkzLmgiDQojbGluZSA0
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmNvbi5oIg0KI2xpbmUgNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5jb24u
aCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5jb24uaCINCg0KDQoN
CiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmNvbi5oIg0K
DQoNCn0NCiNsaW5lIDY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luY29uLmgiDQoNCiNsaW5lIDY5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luY29uLmgiDQoNCiNsaW5lIDE4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCIN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW52ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx2ZXJyc3JjLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAy
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHZlcnJzcmMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
dmVycnNyYy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDEzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHZlcnJzcmMu
aCINCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdWU19GSVhF
REZJTEVJTkZPDQp7DQogICAgRFdPUkQgICBkd1NpZ25hdHVyZTsgICAgICAgICAgICANCiAgICBE
V09SRCAgIGR3U3RydWNWZXJzaW9uOyAgICAgICAgIA0KICAgIERXT1JEICAgZHdGaWxlVmVyc2lv
bk1TOyAgICAgICAgDQogICAgRFdPUkQgICBkd0ZpbGVWZXJzaW9uTFM7ICAgICAgICANCiAgICBE
V09SRCAgIGR3UHJvZHVjdFZlcnNpb25NUzsgICAgIA0KICAgIERXT1JEICAgZHdQcm9kdWN0VmVy
c2lvbkxTOyAgICAgDQogICAgRFdPUkQgICBkd0ZpbGVGbGFnc01hc2s7ICAgICAgICANCiAgICBE
V09SRCAgIGR3RmlsZUZsYWdzOyAgICAgICAgICAgIA0KICAgIERXT1JEICAgZHdGaWxlT1M7ICAg
ICAgICAgICAgICAgDQogICAgRFdPUkQgICBkd0ZpbGVUeXBlOyAgICAgICAgICAgICANCiAgICBE
V09SRCAgIGR3RmlsZVN1YnR5cGU7ICAgICAgICAgIA0KICAgIERXT1JEICAgZHdGaWxlRGF0ZU1T
OyAgICAgICAgICAgDQogICAgRFdPUkQgICBkd0ZpbGVEYXRlTFM7ICAgICAgICAgICANCn0gVlNf
RklYRURGSUxFSU5GTzsNCg0KDQp9DQojbGluZSAxNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx2ZXJyc3JjLmgi
DQoNCiNsaW5lIDE2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHZlcnJzcmMuaCINCg0KI2xpbmUgMTcxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdmVycnNyYy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMjAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW52ZXIuaCINCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW52ZXIuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KRFdPUkQNCl9fc3RkY2FsbA0KVmVyRmluZEZpbGVBKA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIHVGbGFncywNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIgc3pGaWxlTmFtZSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExQQ1NUUiBzeldpbkRpciwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMUENTVFIgc3pBcHBEaXIsDQogICAgICAgICAgICBMUFNUUiBzekN1ckRp
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVUlOVCBwdUN1ckRpckxlbiwNCiAg
ICAgICAgICAgTFBTVFIgc3pEZXN0RGlyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBVSU5UIHB1RGVzdERpckxlbg0KICAgICAgICApOw0KRFdPUkQNCl9fc3RkY2FsbA0KVmVyRmlu
ZEZpbGVXKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIHVGbGFncywN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSIHN6RmlsZU5hbWUsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSIHN6V2luRGlyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1dTVFIgc3pBcHBEaXIsDQogICAgICAgICAgICBM
UFdTVFIgc3pDdXJEaXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVJTlQgcHVD
dXJEaXJMZW4sDQogICAgICAgICAgIExQV1NUUiBzekRlc3REaXIsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUFVJTlQgcHVEZXN0RGlyTGVuDQogICAgICAgICk7DQoNCg0KDQoNCiNs
aW5lIDYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludmVyLmgiDQoNCiNsaW5lIDY1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2ludmVyLmgiDQoNCiNsaW5lIDY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludmVyLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQpEV09SRA0K
X19zdGRjYWxsDQpWZXJJbnN0YWxsRmlsZUEoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFdPUkQgdUZsYWdzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQ
Q1NUUiBzelNyY0ZpbGVOYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQ
Q1NUUiBzekRlc3RGaWxlTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
UENTVFIgc3pTcmNEaXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDU1RS
IHN6RGVzdERpciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIgc3pD
dXJEaXIsDQogICAgICAgICAgIExQU1RSIHN6VG1wRmlsZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQVUlOVCBwdVRtcEZpbGVMZW4NCiAgICAgICAgKTsNCkRXT1JEDQpfX3N0ZGNh
bGwNClZlckluc3RhbGxGaWxlVygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
V09SRCB1RmxhZ3MsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiBz
elNyY0ZpbGVOYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1dTVFIg
c3pEZXN0RmlsZU5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NU
UiBzelNyY0RpciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSIHN6
RGVzdERpciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSIHN6Q3Vy
RGlyLA0KICAgICAgICAgICBMUFdTVFIgc3pUbXBGaWxlLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBVSU5UIHB1VG1wRmlsZUxlbg0KICAgICAgICApOw0KDQoNCg0KDQojbGluZSAx
MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW52ZXIuaCINCg0KI2xpbmUgMTA1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
dmVyLmgiDQoNCiNsaW5lIDEwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnZlci5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5DQoNCg0KDQoNCg0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEo
DQogICAgICAgICAgICAgICAgIExQQ1NUUiBscHRzdHJGaWxlbmFtZSwgDQogICAgICAgICAgTFBE
V09SRCBscGR3SGFuZGxlICAgICAgIA0KICAgICAgICApOw0KDQpEV09SRA0KX19zdGRjYWxsDQpH
ZXRGaWxlVmVyc2lvbkluZm9TaXplVygNCiAgICAgICAgICAgICAgICAgTFBDV1NUUiBscHRzdHJG
aWxlbmFtZSwgDQogICAgICAgICAgTFBEV09SRCBscGR3SGFuZGxlICAgICAgIA0KICAgICAgICAp
Ow0KDQoNCg0KDQojbGluZSAxMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW52ZXIuaCINCg0KDQpCT09MDQpf
X3N0ZGNhbGwNCkdldEZpbGVWZXJzaW9uSW5mb0EoDQogICAgICAgICAgICAgICAgICAgICAgICAg
TFBDU1RSIGxwdHN0ckZpbGVuYW1lLCANCiAgICAgICAgICAgICAgICAgICBEV09SRCBkd0hhbmRs
ZSwgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgZHdMZW4sICAgICAg
ICAgICAgIA0KICAgICAgICAgIExQVk9JRCBscERhdGEgICAgICAgICAgICANCiAgICAgICAgKTsN
Cg0KQk9PTA0KX19zdGRjYWxsDQpHZXRGaWxlVmVyc2lvbkluZm9XKA0KICAgICAgICAgICAgICAg
ICAgICAgICAgIExQQ1dTVFIgbHB0c3RyRmlsZW5hbWUsIA0KICAgICAgICAgICAgICAgICAgIERX
T1JEIGR3SGFuZGxlLCAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBk
d0xlbiwgICAgICAgICAgICAgDQogICAgICAgICAgTFBWT0lEIGxwRGF0YSAgICAgICAgICAgIA0K
ICAgICAgICApOw0KDQoNCg0KDQojbGluZSAxNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW52ZXIuaCINCg0K
RFdPUkQgX19zdGRjYWxsIEdldEZpbGVWZXJzaW9uSW5mb1NpemVFeEEoICBEV09SRCBkd0ZsYWdz
LCAgIExQQ1NUUiBscHdzdHJGaWxlbmFtZSwgICBMUERXT1JEIGxwZHdIYW5kbGUpOw0KRFdPUkQg
X19zdGRjYWxsIEdldEZpbGVWZXJzaW9uSW5mb1NpemVFeFcoICBEV09SRCBkd0ZsYWdzLCAgIExQ
Q1dTVFIgbHB3c3RyRmlsZW5hbWUsICAgTFBEV09SRCBscGR3SGFuZGxlKTsNCg0KDQoNCg0KI2xp
bmUgMTY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludmVyLmgiDQoNCkJPT0wgX19zdGRjYWxsIEdldEZpbGVW
ZXJzaW9uSW5mb0V4QSggIERXT1JEIGR3RmxhZ3MsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExQQ1NUUiBscHdzdHJGaWxlbmFtZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFdPUkQgZHdIYW5kbGUsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERXT1JEIGR3TGVuLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMUFZPSUQgbHBEYXRhKTsNCkJPT0wgX19zdGRjYWxsIEdldEZpbGVWZXJzaW9u
SW5mb0V4VyggIERXT1JEIGR3RmxhZ3MsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExQQ1dTVFIgbHB3c3RyRmlsZW5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERXT1JEIGR3SGFuZGxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEV09SRCBkd0xlbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTFBWT0lEIGxwRGF0YSk7DQoNCg0KDQoNCiNsaW5lIDE4MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnZlci5oIg0KDQojbGluZSAxODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW52ZXIuaCINCg0KI2xpbmUgMTg1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2ludmVyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJl
Z2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCiNsaW5lIDE5NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnZlci5oIg0KDQojbGluZSAxOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW52ZXIuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZh
bWlseQ0KDQoNCg0KDQpEV09SRA0KX19zdGRjYWxsDQpWZXJMYW5ndWFnZU5hbWVBKA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFdPUkQgd0xhbmcsDQogICAgICAgICAgTFBTVFIgc3pMYW5n
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY2NoTGFuZw0KICAgICAgICApOw0K
RFdPUkQNCl9fc3RkY2FsbA0KVmVyTGFuZ3VhZ2VOYW1lVygNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERXT1JEIHdMYW5nLA0KICAgICAgICAgIExQV1NUUiBzekxhbmcsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICBEV09SRCBjY2hMYW5nDQogICAgICAgICk7DQoNCg0KDQoNCiNsaW5l
IDIyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnZlci5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNClZlclF1ZXJ5
VmFsdWVBKA0KICAgICAgICAgIExQQ1ZPSUQgcEJsb2NrLA0KICAgICAgICAgIExQQ1NUUiBscFN1
YkJsb2NrLA0KICAgICAgICAgTFBWT0lEICogbHBscEJ1ZmZlciwNCiAgICAgICAgICBQVUlOVCBw
dUxlbg0KICAgICAgICApOw0KQk9PTA0KX19zdGRjYWxsDQpWZXJRdWVyeVZhbHVlVygNCiAgICAg
ICAgICBMUENWT0lEIHBCbG9jaywNCiAgICAgICAgICBMUENXU1RSIGxwU3ViQmxvY2ssDQogICAg
ICAgICBMUFZPSUQgKiBscGxwQnVmZmVyLA0KICAgICAgICAgIFBVSU5UIHB1TGVuDQogICAgICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDI0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnZlci5oIg0KDQoNCiNsaW5l
IDI0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnZlci5oIg0KDQojbGluZSAyNDkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW52ZXIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgMjU0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2ludmVyLmgiDQoNCg0KI2xpbmUgMjU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2ludmVyLmgiDQoNCiNs
aW5lIDE4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNsaW5lIDE4MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmRvd3MuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIHsNCiNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCg0KI3ByYWdtYSB3
YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDM5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWls
eSBvciBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCnR5cGVkZWYgICBMT05HIExTVEFUVVM7DQoNCiNs
aW5lIDU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJh
Z21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgRGVza3RvcCBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJl
Z2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQoNCg0KDQp0eXBlZGVmIEFDQ0VTU19NQVNLIFJFR1NB
TTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0K
DQoNCg0KDQpzdHJ1Y3QgdmFsX2NvbnRleHQgew0KICAgIGludCB2YWx1ZWxlbjsgICAgICAgDQog
ICAgTFBWT0lEIHZhbHVlX2NvbnRleHQ7ICAgDQogICAgTFBWT0lEIHZhbF9idWZmX3B0cjsgICAg
DQp9Ow0KDQp0eXBlZGVmIHN0cnVjdCB2YWxfY29udGV4dCAgKlBWQUxDT05URVhUOw0KDQp0eXBl
ZGVmIHN0cnVjdCBwdmFsdWVBIHsgICAgICAgICAgIA0KICAgIExQU1RSICAgcHZfdmFsdWVuYW1l
OyAgICAgICAgICANCiAgICBpbnQgcHZfdmFsdWVsZW47DQogICAgTFBWT0lEIHB2X3ZhbHVlX2Nv
bnRleHQ7DQogICAgRFdPUkQgcHZfdHlwZTsNCn1QVkFMVUVBLCAgKlBQVkFMVUVBOw0KdHlwZWRl
ZiBzdHJ1Y3QgcHZhbHVlVyB7ICAgICAgICAgICANCiAgICBMUFdTVFIgIHB2X3ZhbHVlbmFtZTsg
ICAgICAgICAgDQogICAgaW50IHB2X3ZhbHVlbGVuOw0KICAgIExQVk9JRCBwdl92YWx1ZV9jb250
ZXh0Ow0KICAgIERXT1JEIHB2X3R5cGU7DQp9UFZBTFVFVywgICpQUFZBTFVFVzsNCg0KdHlwZWRl
ZiBQVkFMVUVXIFBWQUxVRTsNCnR5cGVkZWYgUFBWQUxVRVcgUFBWQUxVRTsNCg0KDQoNCiNsaW5l
IDE1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQp0eXBlZGVmDQpEV09SRCBfX2NkZWNsDQpR
VUVSWUhBTkRMRVIgKExQVk9JRCBrZXljb250ZXh0LCBQVkFMQ09OVEVYVCB2YWxfbGlzdCwgRFdP
UkQgbnVtX3ZhbHMsDQogICAgICAgICAgTFBWT0lEIG91dHB1dGJ1ZmZlciwgRFdPUkQgICp0b3Rh
bF9vdXRsZW4sIERXT1JEIGlucHV0X2JsZW4pOw0KDQp0eXBlZGVmIFFVRVJZSEFORExFUiAgKlBR
VUVSWUhBTkRMRVI7DQoNCnR5cGVkZWYgc3RydWN0IHByb3ZpZGVyX2luZm8gew0KICAgIFBRVUVS
WUhBTkRMRVIgcGlfUjBfMXZhbDsNCiAgICBQUVVFUllIQU5ETEVSIHBpX1IwX2FsbHZhbHM7DQog
ICAgUFFVRVJZSEFORExFUiBwaV9SM18xdmFsOw0KICAgIFBRVUVSWUhBTkRMRVIgcGlfUjNfYWxs
dmFsczsNCiAgICBEV09SRCBwaV9mbGFnczsgICAgDQogICAgTFBWT0lEIHBpX2tleV9jb250ZXh0
Ow0KfVJFR19QUk9WSURFUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgcHJvdmlkZXJfaW5mbyAgKlBQUk9W
SURFUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdmFsdWVfZW50QSB7DQogICAgTFBTVFIgICB2ZV92YWx1
ZW5hbWU7DQogICAgRFdPUkQgdmVfdmFsdWVsZW47DQogICAgRFdPUkRfUFRSIHZlX3ZhbHVlcHRy
Ow0KICAgIERXT1JEIHZlX3R5cGU7DQp9VkFMRU5UQSwgICpQVkFMRU5UQTsNCnR5cGVkZWYgc3Ry
dWN0IHZhbHVlX2VudFcgew0KICAgIExQV1NUUiAgdmVfdmFsdWVuYW1lOw0KICAgIERXT1JEIHZl
X3ZhbHVlbGVuOw0KICAgIERXT1JEX1BUUiB2ZV92YWx1ZXB0cjsNCiAgICBEV09SRCB2ZV90eXBl
Ow0KfVZBTEVOVFcsICAqUFZBTEVOVFc7DQoNCnR5cGVkZWYgVkFMRU5UVyBWQUxFTlQ7DQp0eXBl
ZGVmIFBWQUxFTlRXIFBWQUxFTlQ7DQoNCg0KDQojbGluZSAxOTYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5y
ZWcuaCINCg0KI2xpbmUgMTk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCg0KI2xpbmUgMjAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjEwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lucmVnLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDIyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQojbGluZSAyMzAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0Nsb3NlS2V5
KA0KICAgICAgSEtFWSBoS2V5DQogICAgKTsNCg0KDQojbGluZSAyNDggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVT
DQpfX3N0ZGNhbGwNClJlZ092ZXJyaWRlUHJlZGVmS2V5ICgNCiAgICAgIEhLRVkgaEtleSwNCiAg
ICAgIEhLRVkgaE5ld0hLZXkNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFU
VVMNCl9fc3RkY2FsbA0KUmVnT3BlblVzZXJDbGFzc2VzUm9vdCgNCiAgICAgIEhBTkRMRSBoVG9r
ZW4sDQogICAgICBEV09SRCBkd09wdGlvbnMsDQogICAgICBSRUdTQU0gc2FtRGVzaXJlZCwNCiAg
ICAgIFBIS0VZIHBoa1Jlc3VsdA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpM
U1RBVFVTDQpfX3N0ZGNhbGwNClJlZ09wZW5DdXJyZW50VXNlcigNCiAgICAgIFJFR1NBTSBzYW1E
ZXNpcmVkLA0KICAgICAgUEhLRVkgcGhrUmVzdWx0DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnRGlzYWJsZVByZWRlZmluZWRDYWNoZSgN
CiAgICB2b2lkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0
ZGNhbGwNClJlZ0Rpc2FibGVQcmVkZWZpbmVkQ2FjaGVFeCgNCiAgICB2b2lkDQogICAgKTsNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnQ29ubmVjdFJl
Z2lzdHJ5QSAoDQogICAgICBMUENTVFIgbHBNYWNoaW5lTmFtZSwNCiAgICAgIEhLRVkgaEtleSwN
CiAgICAgIFBIS0VZIHBoa1Jlc3VsdA0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxT
VEFUVVMNCl9fc3RkY2FsbA0KUmVnQ29ubmVjdFJlZ2lzdHJ5VyAoDQogICAgICBMUENXU1RSIGxw
TWFjaGluZU5hbWUsDQogICAgICBIS0VZIGhLZXksDQogICAgICBQSEtFWSBwaGtSZXN1bHQNCiAg
ICApOw0KDQoNCg0KDQojbGluZSAzMTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0Nvbm5lY3RSZWdpc3RyeUV4
QSAoDQogICAgICBMUENTVFIgbHBNYWNoaW5lTmFtZSwNCiAgICAgIEhLRVkgaEtleSwNCiAgICAg
IFVMT05HIEZsYWdzLA0KICAgICAgUEhLRVkgcGhrUmVzdWx0DQogICAgKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdDb25uZWN0UmVnaXN0cnlFeFcgKA0K
ICAgICAgTFBDV1NUUiBscE1hY2hpbmVOYW1lLA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgVUxP
TkcgRmxhZ3MsDQogICAgICBQSEtFWSBwaGtSZXN1bHQNCiAgICApOw0KDQoNCg0KDQojbGluZSAz
NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KI2xpbmUgMzQzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
cmVnLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnQ3JlYXRlS2V5QSAoDQogICAgICBIS0VZIGhL
ZXksDQogICAgICBMUENTVFIgbHBTdWJLZXksDQogICAgICBQSEtFWSBwaGtSZXN1bHQNCiAgICAp
Ow0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0NyZWF0ZUtl
eVcgKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDV1NUUiBscFN1YktleSwNCiAgICAgIFBI
S0VZIHBoa1Jlc3VsdA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDM2OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnJlZy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVn
Q3JlYXRlS2V5RXhBKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwU3ViS2V5LA0K
ICAgICAgRFdPUkQgUmVzZXJ2ZWQsDQogICAgICBMUFNUUiBscENsYXNzLA0KICAgICAgRFdPUkQg
ZHdPcHRpb25zLA0KICAgICAgUkVHU0FNIHNhbURlc2lyZWQsDQogICAgICBjb25zdCBMUFNFQ1VS
SVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMsDQogICAgICBQSEtFWSBwaGtSZXN1
bHQsDQogICAgICBMUERXT1JEIGxwZHdEaXNwb3NpdGlvbg0KICAgICk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdDcmVhdGVLZXlFeFcoDQogICAgICBI
S0VZIGhLZXksDQogICAgICBMUENXU1RSIGxwU3ViS2V5LA0KICAgICAgRFdPUkQgUmVzZXJ2ZWQs
DQogICAgICBMUFdTVFIgbHBDbGFzcywNCiAgICAgIERXT1JEIGR3T3B0aW9ucywNCiAgICAgIFJF
R1NBTSBzYW1EZXNpcmVkLA0KICAgICAgY29uc3QgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2Vj
dXJpdHlBdHRyaWJ1dGVzLA0KICAgICAgUEhLRVkgcGhrUmVzdWx0LA0KICAgICAgTFBEV09SRCBs
cGR3RGlzcG9zaXRpb24NCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDQwNSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnJlZy5oIg0KDQojbGluZSA0MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0Ny
ZWF0ZUtleVRyYW5zYWN0ZWRBICgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1NUUiBscFN1
YktleSwNCiAgICAgIERXT1JEIFJlc2VydmVkLA0KICAgICAgTFBTVFIgbHBDbGFzcywNCiAgICAg
IERXT1JEIGR3T3B0aW9ucywNCiAgICAgIFJFR1NBTSBzYW1EZXNpcmVkLA0KICAgICAgY29uc3Qg
TFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzLA0KICAgICAgUEhLRVkg
cGhrUmVzdWx0LA0KICAgICAgTFBEV09SRCBscGR3RGlzcG9zaXRpb24sDQogICAgICAgICAgICAg
SEFORExFIGhUcmFuc2FjdGlvbiwNCiAgICAgIFBWT0lEICBwRXh0ZW5kZWRQYXJlbWV0ZXINCiAg
ICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0NyZWF0
ZUtleVRyYW5zYWN0ZWRXICgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1dTVFIgbHBTdWJL
ZXksDQogICAgICBEV09SRCBSZXNlcnZlZCwNCiAgICAgIExQV1NUUiBscENsYXNzLA0KICAgICAg
RFdPUkQgZHdPcHRpb25zLA0KICAgICAgUkVHU0FNIHNhbURlc2lyZWQsDQogICAgICBjb25zdCBM
UFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMsDQogICAgICBQSEtFWSBw
aGtSZXN1bHQsDQogICAgICBMUERXT1JEIGxwZHdEaXNwb3NpdGlvbiwNCiAgICAgICAgICAgICBI
QU5ETEUgaFRyYW5zYWN0aW9uLA0KICAgICAgUFZPSUQgIHBFeHRlbmRlZFBhcmVtZXRlcg0KICAg
ICk7DQoNCg0KDQoNCiNsaW5lIDQ0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQojbGluZSA0
NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdEZWxldGVL
ZXlBICgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1NUUiBscFN1YktleQ0KICAgICk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnRGVsZXRlS2V5VyAo
DQogICAgICBIS0VZIGhLZXksDQogICAgICBMUENXU1RSIGxwU3ViS2V5DQogICAgKTsNCg0KDQoN
Cg0KI2xpbmUgNDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdEZWxldGVLZXlFeEEoDQogICAgICBIS0VZIGhL
ZXksDQogICAgICBMUENTVFIgbHBTdWJLZXksDQogICAgICBSRUdTQU0gc2FtRGVzaXJlZCwNCiAg
ICAgIERXT1JEIFJlc2VydmVkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RB
VFVTDQpfX3N0ZGNhbGwNClJlZ0RlbGV0ZUtleUV4VygNCiAgICAgIEhLRVkgaEtleSwNCiAgICAg
IExQQ1dTVFIgbHBTdWJLZXksDQogICAgICBSRUdTQU0gc2FtRGVzaXJlZCwNCiAgICAgIERXT1JE
IFJlc2VydmVkDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA1MDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5y
ZWcuaCINCg0KI2xpbmUgNTAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdEZWxldGVL
ZXlUcmFuc2FjdGVkQSAoDQogICAgICBIS0VZIGhLZXksDQogICAgICBMUENTVFIgbHBTdWJLZXks
DQogICAgICBSRUdTQU0gc2FtRGVzaXJlZCwNCiAgICAgIERXT1JEIFJlc2VydmVkLA0KICAgICAg
ICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24sDQogICAgICBQVk9JRCAgcEV4dGVuZGVkUGFyYW1l
dGVyDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpS
ZWdEZWxldGVLZXlUcmFuc2FjdGVkVyAoDQogICAgICBIS0VZIGhLZXksDQogICAgICBMUENXU1RS
IGxwU3ViS2V5LA0KICAgICAgUkVHU0FNIHNhbURlc2lyZWQsDQogICAgICBEV09SRCBSZXNlcnZl
ZCwNCiAgICAgICAgICAgICBIQU5ETEUgaFRyYW5zYWN0aW9uLA0KICAgICAgUFZPSUQgIHBFeHRl
bmRlZFBhcmFtZXRlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDUzNSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnJlZy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KUmVnRGlz
YWJsZVJlZmxlY3Rpb25LZXkgKA0KICAgICAgSEtFWSBoQmFzZQ0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTE9ORw0KX19zdGRjYWxsDQpSZWdFbmFibGVSZWZsZWN0aW9uS2V5ICgN
CiAgICAgIEhLRVkgaEJhc2UNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxPTkcN
Cl9fc3RkY2FsbA0KUmVnUXVlcnlSZWZsZWN0aW9uS2V5ICgNCiAgICAgIEhLRVkgaEJhc2UsDQog
ICAgICBCT09MICpiSXNSZWZsZWN0aW9uRGlzYWJsZWQNCiAgICApOw0KDQojbGluZSA1NTkgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdEZWxldGVWYWx1ZUEo
DQogICAgICBIS0VZIGhLZXksDQogICAgICBMUENTVFIgbHBWYWx1ZU5hbWUNCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnRGVsZXRlVmFsdWVX
KA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDV1NUUiBscFZhbHVlTmFtZQ0KICAgICk7DQoN
Cg0KDQoNCg0KI2xpbmUgNTg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdFbnVtS2V5QSAoDQogICAgICBIS0VZ
IGhLZXksDQogICAgICBEV09SRCBkd0luZGV4LA0KICAgICAgTFBTVFIgbHBOYW1lLA0KICAgICAg
RFdPUkQgY2NoTmFtZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9f
c3RkY2FsbA0KUmVnRW51bUtleVcgKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgRFdPUkQgZHdJ
bmRleCwNCiAgICAgIExQV1NUUiBscE5hbWUsDQogICAgICBEV09SRCBjY2hOYW1lDQogICAgKTsN
Cg0KDQoNCg0KI2xpbmUgNjA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdFbnVtS2V5RXhBKA0KICAgICAgSEtF
WSBoS2V5LA0KICAgICAgRFdPUkQgZHdJbmRleCwNCiAgICAgIExQU1RSIGxwTmFtZSwNCiAgICAg
IExQRFdPUkQgbHBjY2hOYW1lLA0KICAgICAgTFBEV09SRCBscFJlc2VydmVkLA0KICAgICAgTFBT
VFIgbHBDbGFzcywNCiAgICAgIExQRFdPUkQgbHBjY2hDbGFzcywNCiAgICAgIFBGSUxFVElNRSBs
cGZ0TGFzdFdyaXRlVGltZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRV
Uw0KX19zdGRjYWxsDQpSZWdFbnVtS2V5RXhXKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgRFdP
UkQgZHdJbmRleCwNCiAgICAgIExQV1NUUiBscE5hbWUsDQogICAgICBMUERXT1JEIGxwY2NoTmFt
ZSwNCiAgICAgIExQRFdPUkQgbHBSZXNlcnZlZCwNCiAgICAgIExQV1NUUiBscENsYXNzLA0KICAg
ICAgTFBEV09SRCBscGNjaENsYXNzLA0KICAgICAgUEZJTEVUSU1FIGxwZnRMYXN0V3JpdGVUaW1l
DQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA2NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0VudW1WYWx1ZUEo
DQogICAgICBIS0VZIGhLZXksDQogICAgICBEV09SRCBkd0luZGV4LA0KICAgICAgTFBTVFIgbHBW
YWx1ZU5hbWUsDQogICAgICBMUERXT1JEIGxwY2NoVmFsdWVOYW1lLA0KICAgICAgTFBEV09SRCBs
cFJlc2VydmVkLA0KICAgICAgTFBEV09SRCBscFR5cGUsDQogICAgICAgTFBCWVRFIGxwRGF0YSwN
CiAgICAgIExQRFdPUkQgbHBjYkRhdGENCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnRW51bVZhbHVlVygNCiAgICAgIEhLRVkgaEtleSwNCiAg
ICAgIERXT1JEIGR3SW5kZXgsDQogICAgICBMUFdTVFIgbHBWYWx1ZU5hbWUsDQogICAgICBMUERX
T1JEIGxwY2NoVmFsdWVOYW1lLA0KICAgICAgTFBEV09SRCBscFJlc2VydmVkLA0KICAgICAgTFBE
V09SRCBscFR5cGUsDQogICAgICAgTFBCWVRFIGxwRGF0YSwNCiAgICAgIExQRFdPUkQgbHBjYkRh
dGENCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDY3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0K
DQojbGluZSA2NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoN
CiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0ZsdXNoS2V5KA0KICAg
ICAgSEtFWSBoS2V5DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMN
Cl9fc3RkY2FsbA0KUmVnR2V0S2V5U2VjdXJpdHkoDQogICAgICBIS0VZIGhLZXksDQogICAgICBT
RUNVUklUWV9JTkZPUk1BVElPTiBTZWN1cml0eUluZm9ybWF0aW9uLA0KICAgICAgUFNFQ1VSSVRZ
X0RFU0NSSVBUT1IgcFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIExQRFdPUkQgbHBjYlNlY3Vy
aXR5RGVzY3JpcHRvcg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVT
DQpfX3N0ZGNhbGwNClJlZ0xvYWRLZXlBKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RS
IGxwU3ViS2V5LA0KICAgICAgTFBDU1RSIGxwRmlsZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdMb2FkS2V5VygNCiAgICAgIEhLRVkgaEtl
eSwNCiAgICAgIExQQ1dTVFIgbHBTdWJLZXksDQogICAgICBMUENXU1RSIGxwRmlsZQ0KICAgICk7
DQoNCg0KDQoNCg0KI2xpbmUgNzI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdOb3RpZnlDaGFuZ2VLZXlWYWx1
ZSgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIEJPT0wgYldhdGNoU3VidHJlZSwNCiAgICAgIERX
T1JEIGR3Tm90aWZ5RmlsdGVyLA0KICAgICAgSEFORExFIGhFdmVudCwNCiAgICAgIEJPT0wgZkFz
eW5jaHJvbm91cw0KICAgICk7DQoNCg0KI2xpbmUgNzQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnT3BlbktleUEgKA0KICAgICAgSEtFWSBoS2V5LA0KICAg
ICAgTFBDU1RSIGxwU3ViS2V5LA0KICAgICAgUEhLRVkgcGhrUmVzdWx0DQogICAgKTsNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdPcGVuS2V5VyAoDQogICAg
ICBIS0VZIGhLZXksDQogICAgICBMUENXU1RSIGxwU3ViS2V5LA0KICAgICAgUEhLRVkgcGhrUmVz
dWx0DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNzY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdPcGVuS2V5RXhB
KA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwU3ViS2V5LA0KICAgICAgRFdPUkQg
dWxPcHRpb25zLA0KICAgICAgUkVHU0FNIHNhbURlc2lyZWQsDQogICAgICBQSEtFWSBwaGtSZXN1
bHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0K
UmVnT3BlbktleUV4VygNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1dTVFIgbHBTdWJLZXks
DQogICAgICBEV09SRCB1bE9wdGlvbnMsDQogICAgICBSRUdTQU0gc2FtRGVzaXJlZCwNCiAgICAg
IFBIS0VZIHBoa1Jlc3VsdA0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNzk0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lucmVnLmgiDQoNCiNsaW5lIDc5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVn
T3BlbktleVRyYW5zYWN0ZWRBICgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1NUUiBscFN1
YktleSwNCiAgICAgIERXT1JEIHVsT3B0aW9ucywNCiAgICAgIFJFR1NBTSBzYW1EZXNpcmVkLA0K
ICAgICAgUEhLRVkgcGhrUmVzdWx0LA0KICAgICAgICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24s
DQogICAgICBQVk9JRCAgcEV4dGVuZGVkUGFyZW1ldGVyDQogICAgKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdPcGVuS2V5VHJhbnNhY3RlZFcgKA0KICAg
ICAgSEtFWSBoS2V5LA0KICAgICAgTFBDV1NUUiBscFN1YktleSwNCiAgICAgIERXT1JEIHVsT3B0
aW9ucywNCiAgICAgIFJFR1NBTSBzYW1EZXNpcmVkLA0KICAgICAgUEhLRVkgcGhrUmVzdWx0LA0K
ICAgICAgICAgICAgIEhBTkRMRSBoVHJhbnNhY3Rpb24sDQogICAgICBQVk9JRCAgcEV4dGVuZGVk
UGFyZW1ldGVyDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgODMwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVn
LmgiDQoNCiNsaW5lIDgzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
R2FtZXMgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNh
bGwNClJlZ1F1ZXJ5SW5mb0tleUEoDQogICAgICBIS0VZIGhLZXksDQogICAgICBMUFNUUiBscENs
YXNzLA0KICAgICAgTFBEV09SRCBscGNjaENsYXNzLA0KICAgICAgTFBEV09SRCBscFJlc2VydmVk
LA0KICAgICAgTFBEV09SRCBscGNTdWJLZXlzLA0KICAgICAgTFBEV09SRCBscGNiTWF4U3ViS2V5
TGVuLA0KICAgICAgTFBEV09SRCBscGNiTWF4Q2xhc3NMZW4sDQogICAgICBMUERXT1JEIGxwY1Zh
bHVlcywNCiAgICAgIExQRFdPUkQgbHBjYk1heFZhbHVlTmFtZUxlbiwNCiAgICAgIExQRFdPUkQg
bHBjYk1heFZhbHVlTGVuLA0KICAgICAgTFBEV09SRCBscGNiU2VjdXJpdHlEZXNjcmlwdG9yLA0K
ICAgICAgUEZJTEVUSU1FIGxwZnRMYXN0V3JpdGVUaW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ1F1ZXJ5SW5mb0tleVcoDQogICAgICBI
S0VZIGhLZXksDQogICAgICBMUFdTVFIgbHBDbGFzcywNCiAgICAgIExQRFdPUkQgbHBjY2hDbGFz
cywNCiAgICAgIExQRFdPUkQgbHBSZXNlcnZlZCwNCiAgICAgIExQRFdPUkQgbHBjU3ViS2V5cywN
CiAgICAgIExQRFdPUkQgbHBjYk1heFN1YktleUxlbiwNCiAgICAgIExQRFdPUkQgbHBjYk1heENs
YXNzTGVuLA0KICAgICAgTFBEV09SRCBscGNWYWx1ZXMsDQogICAgICBMUERXT1JEIGxwY2JNYXhW
YWx1ZU5hbWVMZW4sDQogICAgICBMUERXT1JEIGxwY2JNYXhWYWx1ZUxlbiwNCiAgICAgIExQRFdP
UkQgbHBjYlNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIFBGSUxFVElNRSBscGZ0TGFzdFdyaXRl
VGltZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgODc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgi
DQoNCiNsaW5lIDg4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnUXVlcnlWYWx1ZUEg
KA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwU3ViS2V5LA0KICAgICAgIExQU1RS
IGxwRGF0YSwNCiAgICAgIFBMT05HIGxwY2JEYXRhDQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdRdWVyeVZhbHVlVyAoDQogICAgICBIS0VZIGhL
ZXksDQogICAgICBMUENXU1RSIGxwU3ViS2V5LA0KICAgICAgIExQV1NUUiBscERhdGEsDQogICAg
ICBQTE9ORyBscGNiRGF0YQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDkwOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnJlZy5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNh
bGwNClJlZ1F1ZXJ5TXVsdGlwbGVWYWx1ZXNBKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgUFZB
TEVOVEEgdmFsX2xpc3QsDQogICAgICBEV09SRCBudW1fdmFscywNCiAgICAgICBMUFNUUiBscFZh
bHVlQnVmLA0KICAgICAgTFBEV09SRCBsZHdUb3RzaXplDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ1F1ZXJ5TXVsdGlwbGVWYWx1ZXNXKA0K
ICAgICAgSEtFWSBoS2V5LA0KICAgICAgUFZBTEVOVFcgdmFsX2xpc3QsDQogICAgICBEV09SRCBu
dW1fdmFscywNCiAgICAgICBMUFdTVFIgbHBWYWx1ZUJ1ZiwNCiAgICAgIExQRFdPUkQgbGR3VG90
c2l6ZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgOTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgi
DQoNCiNsaW5lIDk0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQojbGluZSA5NDIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdRdWVyeVZhbHVlRXhBKA0K
ICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwVmFsdWVOYW1lLA0KICAgICAgTFBEV09S
RCBscFJlc2VydmVkLA0KICAgICAgTFBEV09SRCBscFR5cGUsDQogICAgICAgTFBCWVRFIGxwRGF0
YSwNCiAgICAgIExQRFdPUkQgbHBjYkRhdGENCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnUXVlcnlWYWx1ZUV4VygNCiAgICAgIEhLRVkgaEtl
eSwNCiAgICAgIExQQ1dTVFIgbHBWYWx1ZU5hbWUsDQogICAgICBMUERXT1JEIGxwUmVzZXJ2ZWQs
DQogICAgICBMUERXT1JEIGxwVHlwZSwNCiAgICAgICBMUEJZVEUgbHBEYXRhLA0KICAgICAgTFBE
V09SRCBscGNiRGF0YQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgOTc2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lucmVnLmgiDQoNCiNsaW5lIDk3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnUmVw
bGFjZUtleUEgKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwU3ViS2V5LA0KICAg
ICAgTFBDU1RSIGxwTmV3RmlsZSwNCiAgICAgIExQQ1NUUiBscE9sZEZpbGUNCiAgICApOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ1JlcGxhY2VLZXlXICgN
CiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1dTVFIgbHBTdWJLZXksDQogICAgICBMUENXU1RS
IGxwTmV3RmlsZSwNCiAgICAgIExQQ1dTVFIgbHBPbGRGaWxlDQogICAgKTsNCg0KDQoNCg0KI2xp
bmUgMTAwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnUmVzdG9yZUtleUEoDQogICAgICBIS0VZIGhLZXksDQog
ICAgICBMUENTVFIgbHBGaWxlLA0KICAgICAgRFdPUkQgZHdGbGFncw0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdSZXN0b3JlS2V5VygNCiAg
ICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1dTVFIgbHBGaWxlLA0KICAgICAgRFdPUkQgZHdGbGFn
cw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ1JlbmFt
ZUtleSgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1dTVFIgbHBTdWJLZXlOYW1lLA0KICAg
ICAgTFBDV1NUUiBscE5ld0tleU5hbWUNCiAgICApOw0KDQojbGluZSAxMDQzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxs
DQpSZWdTYXZlS2V5QSAoDQogICAgICBIS0VZIGhLZXksDQogICAgICBMUENTVFIgbHBGaWxlLA0K
ICAgICAgY29uc3QgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzDQog
ICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdTYXZl
S2V5VyAoDQogICAgICBIS0VZIGhLZXksDQogICAgICBMUENXU1RSIGxwRmlsZSwNCiAgICAgIGNv
bnN0IExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlcw0KICAgICk7DQoN
Cg0KDQoNCiNsaW5lIDEwNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ1NldEtleVNlY3VyaXR5KA0KICAgICAg
SEtFWSBoS2V5LA0KICAgICAgU0VDVVJJVFlfSU5GT1JNQVRJT04gU2VjdXJpdHlJbmZvcm1hdGlv
biwNCiAgICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3INCiAgICAp
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdTZXRW
YWx1ZUEgKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwU3ViS2V5LA0KICAgICAg
RFdPUkQgZHdUeXBlLA0KICAgICAgTFBDU1RSIGxwRGF0YSwNCiAgICAgIERXT1JEIGNiRGF0YQ0K
ICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnU2V0
VmFsdWVXICgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1dTVFIgbHBTdWJLZXksDQogICAg
ICBEV09SRCBkd1R5cGUsDQogICAgICBMUENXU1RSIGxwRGF0YSwNCiAgICAgIERXT1JEIGNiRGF0
YQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDExMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0K
I2xpbmUgMTEwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMg
RmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJl
Z1NldFZhbHVlRXhBKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwVmFsdWVOYW1l
LA0KICAgICAgRFdPUkQgUmVzZXJ2ZWQsDQogICAgICBEV09SRCBkd1R5cGUsDQogICAgICBjb25z
dCBCWVRFKiBscERhdGEsDQogICAgICBEV09SRCBjYkRhdGENCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnU2V0VmFsdWVFeFcoDQogICAgICBI
S0VZIGhLZXksDQogICAgICBMUENXU1RSIGxwVmFsdWVOYW1lLA0KICAgICAgRFdPUkQgUmVzZXJ2
ZWQsDQogICAgICBEV09SRCBkd1R5cGUsDQogICAgICBjb25zdCBCWVRFKiBscERhdGEsDQogICAg
ICBEV09SRCBjYkRhdGENCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDExMzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5yZWcuaCINCg0KI2xpbmUgMTEzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVn
VW5Mb2FkS2V5QSgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1NUUiBscFN1YktleQ0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdVbkxv
YWRLZXlXKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDV1NUUiBscFN1YktleQ0KICAgICk7
DQoNCg0KDQoNCg0KI2xpbmUgMTE2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQoNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0RlbGV0ZUtl
eVZhbHVlQSgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1NUUiBscFN1YktleSwNCiAgICAg
IExQQ1NUUiBscFZhbHVlTmFtZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNU
QVRVUw0KX19zdGRjYWxsDQpSZWdEZWxldGVLZXlWYWx1ZVcoDQogICAgICBIS0VZIGhLZXksDQog
ICAgICBMUENXU1RSIGxwU3ViS2V5LA0KICAgICAgTFBDV1NUUiBscFZhbHVlTmFtZQ0KICAgICk7
DQoNCg0KDQoNCg0KI2xpbmUgMTE5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnU2V0S2V5VmFsdWVBKA0KICAg
ICAgSEtFWSBoS2V5LA0KICAgICAgTFBDU1RSIGxwU3ViS2V5LA0KICAgICAgTFBDU1RSIGxwVmFs
dWVOYW1lLA0KICAgICAgRFdPUkQgZHdUeXBlLA0KICAgICAgTFBDVk9JRCBscERhdGEsDQogICAg
ICBEV09SRCBjYkRhdGENCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMN
Cl9fc3RkY2FsbA0KUmVnU2V0S2V5VmFsdWVXKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBD
V1NUUiBscFN1YktleSwNCiAgICAgIExQQ1dTVFIgbHBWYWx1ZU5hbWUsDQogICAgICBEV09SRCBk
d1R5cGUsDQogICAgICBMUENWT0lEIGxwRGF0YSwNCiAgICAgIERXT1JEIGNiRGF0YQ0KICAgICk7
DQoNCg0KDQoNCg0KI2xpbmUgMTIyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnRGVsZXRlVHJlZUEoDQogICAg
ICBIS0VZIGhLZXksDQogICAgICBMUENTVFIgbHBTdWJLZXkNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnRGVsZXRlVHJlZVcoDQogICAgICBI
S0VZIGhLZXksDQogICAgICBMUENXU1RSIGxwU3ViS2V5DQogICAgKTsNCg0KDQoNCg0KDQojbGlu
ZSAxMjQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
TFNUQVRVUw0KX19zdGRjYWxsDQpSZWdDb3B5VHJlZUEgKA0KICAgICAgICAgICAgIEhLRVkgICAg
IGhLZXlTcmMsDQogICAgICAgICBMUENTVFIgIGxwU3ViS2V5LA0KICAgICAgICAgICAgIEhLRVkg
ICAgIGhLZXlEZXN0DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTI2MCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnJlZy5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwN
ClJlZ0dldFZhbHVlQSgNCiAgICAgIEhLRVkgaGtleSwNCiAgICAgIExQQ1NUUiBscFN1YktleSwN
CiAgICAgIExQQ1NUUiBscFZhbHVlLA0KICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgIExQRFdP
UkQgcGR3VHlwZSwNCiAgICANCiNsaW5lIDEyNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCiAg
ICAgICAgDQojbGluZSAxMjc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQogICAgICBQVk9JRCBw
dkRhdGEsDQogICAgICBMUERXT1JEIHBjYkRhdGENCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVnR2V0VmFsdWVXKA0KICAgICAgSEtFWSBoa2V5
LA0KICAgICAgTFBDV1NUUiBscFN1YktleSwNCiAgICAgIExQQ1dTVFIgbHBWYWx1ZSwNCiAgICAg
IERXT1JEIGR3RmxhZ3MsDQogICAgICBMUERXT1JEIHBkd1R5cGUsDQogICAgDQojbGluZSAxMjk3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQogICAgICAgIA0KI2xpbmUgMTI5OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnJlZy5oIg0KICAgICAgUFZPSUQgcHZEYXRhLA0KICAgICAgTFBEV09SRCBwY2JEYXRh
DQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAxMzA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoN
CiNsaW5lIDEzMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdDb3B5VHJlZVcoDQogICAgICBIS0VZIGhL
ZXlTcmMsDQogICAgICBMUENXU1RSIGxwU3ViS2V5LA0KICAgICAgSEtFWSBoS2V5RGVzdA0KICAg
ICk7DQoNCg0KDQojbGluZSAxMzI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0KX19zdGRjYWxsDQpSZWdMb2FkTVVJU3RyaW5nQSgNCiAg
ICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1NUUiBwc3pWYWx1ZSwNCiAgICAgIExQU1RSIHBzek91
dEJ1ZiwNCiAgICAgIERXT1JEIGNiT3V0QnVmLA0KICAgICAgTFBEV09SRCBwY2JEYXRhLA0KICAg
ICAgRFdPUkQgRmxhZ3MsDQogICAgICBMUENTVFIgcHN6RGlyZWN0b3J5DQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0xvYWRNVUlTdHJpbmdX
KA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDV1NUUiBwc3pWYWx1ZSwNCiAgICAgIExQV1NU
UiBwc3pPdXRCdWYsDQogICAgICBEV09SRCBjYk91dEJ1ZiwNCiAgICAgIExQRFdPUkQgcGNiRGF0
YSwNCiAgICAgIERXT1JEIEZsYWdzLA0KICAgICAgTFBDV1NUUiBwc3pEaXJlY3RvcnkNCiAgICAp
Ow0KDQoNCg0KDQoNCiNsaW5lIDEzNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpMU1RBVFVTDQpfX3N0ZGNhbGwNClJlZ0xvYWRBcHBLZXlBKA0KICAg
ICAgTFBDU1RSIGxwRmlsZSwNCiAgICAgIFBIS0VZIHBoa1Jlc3VsdCwNCiAgICAgIFJFR1NBTSBz
YW1EZXNpcmVkLA0KICAgICAgRFdPUkQgZHdPcHRpb25zLA0KICAgICAgRFdPUkQgUmVzZXJ2ZWQN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVn
TG9hZEFwcEtleVcoDQogICAgICBMUENXU1RSIGxwRmlsZSwNCiAgICAgIFBIS0VZIHBoa1Jlc3Vs
dCwNCiAgICAgIFJFR1NBTSBzYW1EZXNpcmVkLA0KICAgICAgRFdPUkQgZHdPcHRpb25zLA0KICAg
ICAgRFdPUkQgUmVzZXJ2ZWQNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDEzODUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5yZWcuaCINCg0KI2xpbmUgMTM4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQoN
Cg0KDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJbml0aWF0
ZVN5c3RlbVNodXRkb3duQSgNCiAgICAgIExQU1RSIGxwTWFjaGluZU5hbWUsDQogICAgICBMUFNU
UiBscE1lc3NhZ2UsDQogICAgICBEV09SRCBkd1RpbWVvdXQsDQogICAgICBCT09MIGJGb3JjZUFw
cHNDbG9zZWQsDQogICAgICBCT09MIGJSZWJvb3RBZnRlclNodXRkb3duDQogICAgKTsNCiANCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpJbml0aWF0ZVN5c3RlbVNodXRk
b3duVygNCiAgICAgIExQV1NUUiBscE1hY2hpbmVOYW1lLA0KICAgICAgTFBXU1RSIGxwTWVzc2Fn
ZSwNCiAgICAgIERXT1JEIGR3VGltZW91dCwNCiAgICAgIEJPT0wgYkZvcmNlQXBwc0Nsb3NlZCwN
CiAgICAgIEJPT0wgYlJlYm9vdEFmdGVyU2h1dGRvd24NCiAgICApOw0KDQoNCg0KDQojbGluZSAx
NDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9P
TA0KX19zdGRjYWxsDQpBYm9ydFN5c3RlbVNodXRkb3duQSgNCiAgICAgIExQU1RSIGxwTWFjaGlu
ZU5hbWUNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkFi
b3J0U3lzdGVtU2h1dGRvd25XKA0KICAgICAgTFBXU1RSIGxwTWFjaGluZU5hbWUNCiAgICApOw0K
DQoNCg0KDQojbGluZSAxNDM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoNCg0KDQoNCg0KI2xp
bmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHJlYXNvbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccmVh
c29uLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMjcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxyZWFz
b24uaCINCiNsaW5lIDE0NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KI2xpbmUgMTQ2NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJl
Zy5oIg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkluaXRpYXRlU3lz
dGVtU2h1dGRvd25FeEEoDQogICAgICBMUFNUUiBscE1hY2hpbmVOYW1lLA0KICAgICAgTFBTVFIg
bHBNZXNzYWdlLA0KICAgICAgRFdPUkQgZHdUaW1lb3V0LA0KICAgICAgQk9PTCBiRm9yY2VBcHBz
Q2xvc2VkLA0KICAgICAgQk9PTCBiUmVib290QWZ0ZXJTaHV0ZG93biwNCiAgICAgIERXT1JEIGR3
UmVhc29uDQogICAgKTsNCiANCg0KI2xpbmUgMTQ3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkluaXRpYXRlU3lzdGVtU2h1
dGRvd25FeFcoDQogICAgICBMUFdTVFIgbHBNYWNoaW5lTmFtZSwNCiAgICAgIExQV1NUUiBscE1l
c3NhZ2UsDQogICAgICBEV09SRCBkd1RpbWVvdXQsDQogICAgICBCT09MIGJGb3JjZUFwcHNDbG9z
ZWQsDQogICAgICBCT09MIGJSZWJvb3RBZnRlclNodXRkb3duLA0KICAgICAgRFdPUkQgZHdSZWFz
b24NCiAgICApOw0KDQoNCg0KDQojbGluZSAxNDk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucmVnLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpEV09SRA0KX19zdGRjYWxsDQpJbml0aWF0ZVNodXRkb3duQSgNCiAgICAgIExQU1RSIGxw
TWFjaGluZU5hbWUsDQogICAgICBMUFNUUiBscE1lc3NhZ2UsDQogICAgICAgICAgRFdPUkQgZHdH
cmFjZVBlcmlvZCwNCiAgICAgICAgICBEV09SRCBkd1NodXRkb3duRmxhZ3MsDQogICAgICAgICAg
RFdPUkQgZHdSZWFzb24NCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19z
dGRjYWxsDQpJbml0aWF0ZVNodXRkb3duVygNCiAgICAgIExQV1NUUiBscE1hY2hpbmVOYW1lLA0K
ICAgICAgTFBXU1RSIGxwTWVzc2FnZSwNCiAgICAgICAgICBEV09SRCBkd0dyYWNlUGVyaW9kLA0K
ICAgICAgICAgIERXT1JEIGR3U2h1dGRvd25GbGFncywNCiAgICAgICAgICBEV09SRCBkd1JlYXNv
bg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDE1MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpDaGVja0ZvckhpYmVyYm9v
dCgNCiAgICAgIFBCT09MRUFOIHBIaWJlcmJvb3QsDQogICAgICBCT09MRUFOIGJDbGVhckZsYWcN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxTVEFUVVMNCl9fc3RkY2FsbA0KUmVn
U2F2ZUtleUV4QSgNCiAgICAgIEhLRVkgaEtleSwNCiAgICAgIExQQ1NUUiBscEZpbGUsDQogICAg
ICBjb25zdCBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXMsDQogICAg
ICBEV09SRCBGbGFncw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFNUQVRVUw0K
X19zdGRjYWxsDQpSZWdTYXZlS2V5RXhXKA0KICAgICAgSEtFWSBoS2V5LA0KICAgICAgTFBDV1NU
UiBscEZpbGUsDQogICAgICBjb25zdCBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0
dHJpYnV0ZXMsDQogICAgICBEV09SRCBGbGFncw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTU3
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5oIg0KDQoNCiNsaW5lIDE1NzYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5yZWcuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNs
aW5lIDE1ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5yZWcuaCINCg0KDQp9DQojbGluZSAxNTg1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lucmVnLmgiDQoNCg0KI2xpbmUgMTU4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnJlZy5o
Ig0KDQojbGluZSAxODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGluZSAxODUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5kb3dzLmgiDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMzUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5uZXR3ay5oIg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRp
c2FibGU6NDgyMCkgDQojbGluZSA0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoNCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgU3lzdGVtIEZhbWlseQ0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd25uYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFx3bm5jLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMjAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcd25uYy5oIg0KDQoNCg0KI2xpbmUgNTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0K
DQoNCg0KDQoNCiNsaW5lIDcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQoNCg0KI2xp
bmUgOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQp0eXBlZGVmIHN0cnVjdCAgX05FVFJF
U09VUkNFQSB7DQogICAgRFdPUkQgICAgZHdTY29wZTsNCiAgICBEV09SRCAgICBkd1R5cGU7DQog
ICAgRFdPUkQgICAgZHdEaXNwbGF5VHlwZTsNCiAgICBEV09SRCAgICBkd1VzYWdlOw0KICAgIExQ
U1RSICAgIGxwTG9jYWxOYW1lOw0KICAgIExQU1RSICAgIGxwUmVtb3RlTmFtZTsNCiAgICBMUFNU
UiAgICBscENvbW1lbnQgOw0KICAgIExQU1RSICAgIGxwUHJvdmlkZXI7DQp9TkVUUkVTT1VSQ0VB
LCAqTFBORVRSRVNPVVJDRUE7DQp0eXBlZGVmIHN0cnVjdCAgX05FVFJFU09VUkNFVyB7DQogICAg
RFdPUkQgICAgZHdTY29wZTsNCiAgICBEV09SRCAgICBkd1R5cGU7DQogICAgRFdPUkQgICAgZHdE
aXNwbGF5VHlwZTsNCiAgICBEV09SRCAgICBkd1VzYWdlOw0KICAgIExQV1NUUiAgIGxwTG9jYWxO
YW1lOw0KICAgIExQV1NUUiAgIGxwUmVtb3RlTmFtZTsNCiAgICBMUFdTVFIgICBscENvbW1lbnQg
Ow0KICAgIExQV1NUUiAgIGxwUHJvdmlkZXI7DQp9TkVUUkVTT1VSQ0VXLCAqTFBORVRSRVNPVVJD
RVc7DQoNCnR5cGVkZWYgTkVUUkVTT1VSQ0VXIE5FVFJFU09VUkNFOw0KdHlwZWRlZiBMUE5FVFJF
U09VUkNFVyBMUE5FVFJFU09VUkNFOw0KDQoNCg0KI2xpbmUgMTI3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bmV0d2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQoNCg0KI2xpbmUgMTUyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmV0d2suaCINCg0KDQojbGluZSAxNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE2NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoNCiAN
CkRXT1JEIF9fc3RkY2FsbA0KV05ldEFkZENvbm5lY3Rpb25BKA0KICAgICAgICAgIExQQ1NUUiAg
IGxwUmVtb3RlTmFtZSwNCiAgICAgIExQQ1NUUiAgIGxwUGFzc3dvcmQsDQogICAgICBMUENTVFIg
ICBscExvY2FsTmFtZQ0KICAgICk7DQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRBZGRDb25uZWN0
aW9uVygNCiAgICAgICAgICBMUENXU1RSICAgbHBSZW1vdGVOYW1lLA0KICAgICAgTFBDV1NUUiAg
IGxwUGFzc3dvcmQsDQogICAgICBMUENXU1RSICAgbHBMb2NhbE5hbWUNCiAgICApOw0KDQoNCg0K
DQojbGluZSAxODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQogDQpEV09SRCBfX3N0ZGNh
bGwNCldOZXRBZGRDb25uZWN0aW9uMkEoDQogICAgICAgICAgTFBORVRSRVNPVVJDRUEgbHBOZXRS
ZXNvdXJjZSwNCiAgICAgIExQQ1NUUiAgICAgICBscFBhc3N3b3JkLA0KICAgICAgTFBDU1RSICAg
ICAgIGxwVXNlck5hbWUsDQogICAgICAgICAgRFdPUkQgICAgICAgICAgZHdGbGFncw0KICAgICk7
DQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRBZGRDb25uZWN0aW9uMlcoDQogICAgICAgICAgTFBO
RVRSRVNPVVJDRVcgbHBOZXRSZXNvdXJjZSwNCiAgICAgIExQQ1dTVFIgICAgICAgbHBQYXNzd29y
ZCwNCiAgICAgIExQQ1dTVFIgICAgICAgbHBVc2VyTmFtZSwNCiAgICAgICAgICBEV09SRCAgICAg
ICAgICBkd0ZsYWdzDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMjA2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
bmV0d2suaCINCg0KIA0KRFdPUkQgX19zdGRjYWxsDQpXTmV0QWRkQ29ubmVjdGlvbjNBKA0KICAg
ICAgSFdORCAgICAgICAgICAgaHduZE93bmVyLA0KICAgICAgICAgIExQTkVUUkVTT1VSQ0VBIGxw
TmV0UmVzb3VyY2UsDQogICAgICBMUENTVFIgICAgICAgbHBQYXNzd29yZCwNCiAgICAgIExQQ1NU
UiAgICAgICBscFVzZXJOYW1lLA0KICAgICAgICAgIERXT1JEICAgICAgICAgIGR3RmxhZ3MNCiAg
ICApOw0KIA0KRFdPUkQgX19zdGRjYWxsDQpXTmV0QWRkQ29ubmVjdGlvbjNXKA0KICAgICAgSFdO
RCAgICAgICAgICAgaHduZE93bmVyLA0KICAgICAgICAgIExQTkVUUkVTT1VSQ0VXIGxwTmV0UmVz
b3VyY2UsDQogICAgICBMUENXU1RSICAgICAgIGxwUGFzc3dvcmQsDQogICAgICBMUENXU1RSICAg
ICAgIGxwVXNlck5hbWUsDQogICAgICAgICAgRFdPUkQgICAgICAgICAgZHdGbGFncw0KICAgICk7
DQoNCg0KDQoNCiNsaW5lIDIzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjYw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KIA0KRFdPUkQgX19zdGRjYWxsDQpXTmV0Q2Fu
Y2VsQ29ubmVjdGlvbkEoDQogICAgICBMUENTVFIgbHBOYW1lLA0KICAgICAgQk9PTCAgICAgZkZv
cmNlDQogICAgKTsNCiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldENhbmNlbENvbm5lY3Rpb25XKA0K
ICAgICAgTFBDV1NUUiBscE5hbWUsDQogICAgICBCT09MICAgICBmRm9yY2UNCiAgICApOw0KDQoN
Cg0KDQojbGluZSAyNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQogDQpEV09SRCBfX3N0
ZGNhbGwNCldOZXRDYW5jZWxDb25uZWN0aW9uMkEoDQogICAgICBMUENTVFIgbHBOYW1lLA0KICAg
ICAgRFdPUkQgICAgZHdGbGFncywNCiAgICAgIEJPT0wgICAgIGZGb3JjZQ0KICAgICk7DQogDQpE
V09SRCBfX3N0ZGNhbGwNCldOZXRDYW5jZWxDb25uZWN0aW9uMlcoDQogICAgICBMUENXU1RSIGxw
TmFtZSwNCiAgICAgIERXT1JEICAgIGR3RmxhZ3MsDQogICAgICBCT09MICAgICBmRm9yY2UNCiAg
ICApOw0KDQoNCg0KDQojbGluZSAyOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQogDQpE
V09SRCBfX3N0ZGNhbGwNCldOZXRHZXRDb25uZWN0aW9uQSgNCiAgICAgIExQQ1NUUiBscExvY2Fs
TmFtZSwNCiAgICAgIExQU1RSICBscFJlbW90ZU5hbWUsDQogICAgICBMUERXT1JEIGxwbkxlbmd0
aA0KICAgICk7DQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRDb25uZWN0aW9uVygNCiAgICAg
IExQQ1dTVFIgbHBMb2NhbE5hbWUsDQogICAgICBMUFdTVFIgIGxwUmVtb3RlTmFtZSwNCiAgICAg
IExQRFdPUkQgbHBuTGVuZ3RoDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMzE4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2lubmV0d2suaCINCg0KDQojbGluZSAzMjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoN
CiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldFJlc3RvcmVTaW5nbGVDb25uZWN0aW9uVygNCiAgICAg
IEhXTkQgICAgaHduZFBhcmVudCwNCiAgICAgICAgICBMUENXU1RSIGxwRGV2aWNlLA0KICAgICAg
ICAgIEJPT0wgICAgZlVzZVVJDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM0NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoNCiNsaW5lIDM0NiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5l
dHdrLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eSBvciBTeXN0ZW0gRmFtaWx5DQoNCg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRVc2VDb25u
ZWN0aW9uQSgNCiAgICAgIEhXTkQgICAgICAgICAgICBod25kT3duZXIsDQogICAgICAgICAgTFBO
RVRSRVNPVVJDRUEgIGxwTmV0UmVzb3VyY2UsDQogICAgICBMUENTVFIgICAgICAgIGxwUGFzc3dv
cmQsDQogICAgICBMUENTVFIgICAgICAgIGxwVXNlcklkLA0KICAgICAgICAgIERXT1JEICAgICAg
ICAgICBkd0ZsYWdzLA0KICAgICAgTFBTVFIgbHBBY2Nlc3NOYW1lLA0KICAgICAgTFBEV09SRCBs
cEJ1ZmZlclNpemUsDQogICAgICBMUERXT1JEICAgbHBSZXN1bHQNCiAgICApOw0KIA0KRFdPUkQg
X19zdGRjYWxsDQpXTmV0VXNlQ29ubmVjdGlvblcoDQogICAgICBIV05EICAgICAgICAgICAgaHdu
ZE93bmVyLA0KICAgICAgICAgIExQTkVUUkVTT1VSQ0VXICBscE5ldFJlc291cmNlLA0KICAgICAg
TFBDV1NUUiAgICAgICAgbHBQYXNzd29yZCwNCiAgICAgIExQQ1dTVFIgICAgICAgIGxwVXNlcklk
LA0KICAgICAgICAgIERXT1JEICAgICAgICAgICBkd0ZsYWdzLA0KICAgICAgTFBXU1RSIGxwQWNj
ZXNzTmFtZSwNCiAgICAgIExQRFdPUkQgbHBCdWZmZXJTaXplLA0KICAgICAgTFBEV09SRCAgIGxw
UmVzdWx0DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMzgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2su
aCINCiNsaW5lIDM4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNDE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KDQoNCg0KDQogDQpEV09SRCBfX3N0
ZGNhbGwNCldOZXRDb25uZWN0aW9uRGlhbG9nKA0KICAgICAgSFdORCAgaHduZCwNCiAgICAgIERX
T1JEIGR3VHlwZQ0KICAgICk7DQoNCiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldERpc2Nvbm5lY3RE
aWFsb2coDQogICAgICBIV05EIGh3bmQsDQogICAgICBEV09SRCBkd1R5cGUNCiAgICApOw0KDQoN
CnR5cGVkZWYgc3RydWN0IF9DT05ORUNURExHU1RSVUNUQXsNCiAgICBEV09SRCBjYlN0cnVjdHVy
ZTsgICAgICAgDQogICAgSFdORCBod25kT3duZXI7ICAgICAgICAgIA0KICAgIExQTkVUUkVTT1VS
Q0VBIGxwQ29ublJlczsNCiAgICBEV09SRCBkd0ZsYWdzOyAgICAgICAgICAgDQogICAgRFdPUkQg
ZHdEZXZOdW07ICAgICAgICAgIA0KfSBDT05ORUNURExHU1RSVUNUQSwgICpMUENPTk5FQ1RETEdT
VFJVQ1RBOw0KdHlwZWRlZiBzdHJ1Y3QgX0NPTk5FQ1RETEdTVFJVQ1RXew0KICAgIERXT1JEIGNi
U3RydWN0dXJlOyAgICAgICANCiAgICBIV05EIGh3bmRPd25lcjsgICAgICAgICAgDQogICAgTFBO
RVRSRVNPVVJDRVcgbHBDb25uUmVzOw0KICAgIERXT1JEIGR3RmxhZ3M7ICAgICAgICAgICANCiAg
ICBEV09SRCBkd0Rldk51bTsgICAgICAgICAgDQp9IENPTk5FQ1RETEdTVFJVQ1RXLCAgKkxQQ09O
TkVDVERMR1NUUlVDVFc7DQoNCnR5cGVkZWYgQ09OTkVDVERMR1NUUlVDVFcgQ09OTkVDVERMR1NU
UlVDVDsNCnR5cGVkZWYgTFBDT05ORUNURExHU1RSVUNUVyBMUENPTk5FQ1RETEdTVFJVQ1Q7DQoN
Cg0KDQojbGluZSA0NTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldENvbm5lY3Rpb25EaWFsb2cxQSgN
CiAgICAgIExQQ09OTkVDVERMR1NUUlVDVEEgbHBDb25uRGxnU3RydWN0DQogICAgKTsNCiANCkRX
T1JEIF9fc3RkY2FsbA0KV05ldENvbm5lY3Rpb25EaWFsb2cxVygNCiAgICAgIExQQ09OTkVDVERM
R1NUUlVDVFcgbHBDb25uRGxnU3RydWN0DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNDg4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubmV0d2suaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX0RJU0NETEdTVFJVQ1RBew0K
ICAgIERXT1JEICAgICAgICAgICBjYlN0cnVjdHVyZTsgICAgICANCiAgICBIV05EICAgICAgICAg
ICAgaHduZE93bmVyOyAgICAgICAgDQogICAgTFBTVFIgICAgICAgICAgIGxwTG9jYWxOYW1lOyAg
ICAgIA0KICAgIExQU1RSICAgICAgICAgICBscFJlbW90ZU5hbWU7ICAgICANCiAgICBEV09SRCAg
ICAgICAgICAgZHdGbGFnczsgICAgICAgICAgDQp9IERJU0NETEdTVFJVQ1RBLCAgKkxQRElTQ0RM
R1NUUlVDVEE7DQp0eXBlZGVmIHN0cnVjdCBfRElTQ0RMR1NUUlVDVFd7DQogICAgRFdPUkQgICAg
ICAgICAgIGNiU3RydWN0dXJlOyAgICAgIA0KICAgIEhXTkQgICAgICAgICAgICBod25kT3duZXI7
ICAgICAgICANCiAgICBMUFdTVFIgICAgICAgICAgbHBMb2NhbE5hbWU7ICAgICAgDQogICAgTFBX
U1RSICAgICAgICAgIGxwUmVtb3RlTmFtZTsgICAgIA0KICAgIERXT1JEICAgICAgICAgICBkd0Zs
YWdzOyAgICAgICAgICANCn0gRElTQ0RMR1NUUlVDVFcsICAqTFBESVNDRExHU1RSVUNUVzsNCg0K
dHlwZWRlZiBESVNDRExHU1RSVUNUVyBESVNDRExHU1RSVUNUOw0KdHlwZWRlZiBMUERJU0NETEdT
VFJVQ1RXIExQRElTQ0RMR1NUUlVDVDsNCg0KDQoNCiNsaW5lIDUxMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bm5ldHdrLmgiDQoNCg0KDQoNCiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldERpc2Nvbm5lY3REaWFs
b2cxQSgNCiAgICAgIExQRElTQ0RMR1NUUlVDVEEgbHBDb25uRGxnU3RydWN0DQogICAgKTsNCiAN
CkRXT1JEIF9fc3RkY2FsbA0KV05ldERpc2Nvbm5lY3REaWFsb2cxVygNCiAgICAgIExQRElTQ0RM
R1NUUlVDVFcgbHBDb25uRGxnU3RydWN0DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNTI5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2lubmV0d2suaCINCiNsaW5lIDUzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgi
DQoNCg0KDQoNCg0KIA0KRFdPUkQgX19zdGRjYWxsDQpXTmV0T3BlbkVudW1BKA0KICAgICAgIERX
T1JEICAgICAgICAgIGR3U2NvcGUsDQogICAgICAgRFdPUkQgICAgICAgICAgZHdUeXBlLA0KICAg
ICAgIERXT1JEICAgICAgICAgIGR3VXNhZ2UsDQogICAgICBMUE5FVFJFU09VUkNFQSBscE5ldFJl
c291cmNlLA0KICAgICAgTFBIQU5ETEUgICAgICAgbHBoRW51bQ0KICAgICk7DQogDQpEV09SRCBf
X3N0ZGNhbGwNCldOZXRPcGVuRW51bVcoDQogICAgICAgRFdPUkQgICAgICAgICAgZHdTY29wZSwN
CiAgICAgICBEV09SRCAgICAgICAgICBkd1R5cGUsDQogICAgICAgRFdPUkQgICAgICAgICAgZHdV
c2FnZSwNCiAgICAgIExQTkVUUkVTT1VSQ0VXIGxwTmV0UmVzb3VyY2UsDQogICAgICBMUEhBTkRM
RSAgICAgICBscGhFbnVtDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNTU4ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubmV0d2suaCINCg0KIA0KRFdPUkQgX19zdGRjYWxsDQpXTmV0RW51bVJlc291cmNlQSgNCiAg
ICAgICAgIEhBTkRMRSAgaEVudW0sDQogICAgICBMUERXT1JEIGxwY0NvdW50LA0KICAgICAgTFBW
T0lEICBscEJ1ZmZlciwNCiAgICAgIExQRFdPUkQgbHBCdWZmZXJTaXplDQogICAgKTsNCiANCkRX
T1JEIF9fc3RkY2FsbA0KV05ldEVudW1SZXNvdXJjZVcoDQogICAgICAgICBIQU5ETEUgIGhFbnVt
LA0KICAgICAgTFBEV09SRCBscGNDb3VudCwNCiAgICAgIExQVk9JRCAgbHBCdWZmZXIsDQogICAg
ICBMUERXT1JEIGxwQnVmZmVyU2l6ZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDU4MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbm5ldHdrLmgiDQoNCiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldENsb3NlRW51bSgN
CiAgICAgIEhBTkRMRSAgIGhFbnVtDQogICAgKTsNCg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCldO
ZXRHZXRSZXNvdXJjZVBhcmVudEEoDQogICAgICBMUE5FVFJFU09VUkNFQSBscE5ldFJlc291cmNl
LA0KICAgICAgTFBWT0lEIGxwQnVmZmVyLA0KICAgICAgTFBEV09SRCBscGNiQnVmZmVyDQogICAg
KTsNCiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldEdldFJlc291cmNlUGFyZW50VygNCiAgICAgIExQ
TkVUUkVTT1VSQ0VXIGxwTmV0UmVzb3VyY2UsDQogICAgICBMUFZPSUQgbHBCdWZmZXIsDQogICAg
ICBMUERXT1JEIGxwY2JCdWZmZXINCiAgICApOw0KDQoNCg0KDQojbGluZSA2MDcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5uZXR3ay5oIg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRSZXNvdXJjZUlu
Zm9ybWF0aW9uQSgNCiAgICAgIExQTkVUUkVTT1VSQ0VBICBscE5ldFJlc291cmNlLA0KICAgICAg
TFBWT0lEIGxwQnVmZmVyLA0KICAgICAgTFBEV09SRCBscGNiQnVmZmVyLA0KICAgICBMUFNUUiAq
bHBscFN5c3RlbQ0KICAgICk7DQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRSZXNvdXJjZUlu
Zm9ybWF0aW9uVygNCiAgICAgIExQTkVUUkVTT1VSQ0VXICBscE5ldFJlc291cmNlLA0KICAgICAg
TFBWT0lEIGxwQnVmZmVyLA0KICAgICAgTFBEV09SRCBscGNiQnVmZmVyLA0KICAgICBMUFdTVFIg
KmxwbHBTeXN0ZW0NCiAgICApOw0KDQoNCg0KDQojbGluZSA2MjkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
ZXR3ay5oIg0KI2xpbmUgNjMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCAgX1VOSVZFUlNBTF9OQU1FX0lORk9BIHsNCiAgICBMUFNUUiAg
ICBscFVuaXZlcnNhbE5hbWU7DQp9VU5JVkVSU0FMX05BTUVfSU5GT0EsICpMUFVOSVZFUlNBTF9O
QU1FX0lORk9BOw0KdHlwZWRlZiBzdHJ1Y3QgIF9VTklWRVJTQUxfTkFNRV9JTkZPVyB7DQogICAg
TFBXU1RSICAgbHBVbml2ZXJzYWxOYW1lOw0KfVVOSVZFUlNBTF9OQU1FX0lORk9XLCAqTFBVTklW
RVJTQUxfTkFNRV9JTkZPVzsNCg0KdHlwZWRlZiBVTklWRVJTQUxfTkFNRV9JTkZPVyBVTklWRVJT
QUxfTkFNRV9JTkZPOw0KdHlwZWRlZiBMUFVOSVZFUlNBTF9OQU1FX0lORk9XIExQVU5JVkVSU0FM
X05BTUVfSU5GTzsNCg0KDQoNCiNsaW5lIDY1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoN
CnR5cGVkZWYgc3RydWN0ICBfUkVNT1RFX05BTUVfSU5GT0Egew0KICAgIExQU1RSICAgIGxwVW5p
dmVyc2FsTmFtZTsNCiAgICBMUFNUUiAgICBscENvbm5lY3Rpb25OYW1lOw0KICAgIExQU1RSICAg
IGxwUmVtYWluaW5nUGF0aDsNCn1SRU1PVEVfTkFNRV9JTkZPQSwgKkxQUkVNT1RFX05BTUVfSU5G
T0E7DQp0eXBlZGVmIHN0cnVjdCAgX1JFTU9URV9OQU1FX0lORk9XIHsNCiAgICBMUFdTVFIgICBs
cFVuaXZlcnNhbE5hbWU7DQogICAgTFBXU1RSICAgbHBDb25uZWN0aW9uTmFtZTsNCiAgICBMUFdT
VFIgICBscFJlbWFpbmluZ1BhdGg7DQp9UkVNT1RFX05BTUVfSU5GT1csICpMUFJFTU9URV9OQU1F
X0lORk9XOw0KDQp0eXBlZGVmIFJFTU9URV9OQU1FX0lORk9XIFJFTU9URV9OQU1FX0lORk87DQp0
eXBlZGVmIExQUkVNT1RFX05BTUVfSU5GT1cgTFBSRU1PVEVfTkFNRV9JTkZPOw0KDQoNCg0KI2xp
bmUgNjY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KIA0KRFdPUkQgX19zdGRjYWxsDQpX
TmV0R2V0VW5pdmVyc2FsTmFtZUEoDQogICAgICBMUENTVFIgbHBMb2NhbFBhdGgsDQogICAgICBE
V09SRCAgICBkd0luZm9MZXZlbCwNCiAgICAgIExQVk9JRCBscEJ1ZmZlciwNCiAgICAgIExQRFdP
UkQgbHBCdWZmZXJTaXplDQogICAgKTsNCiANCkRXT1JEIF9fc3RkY2FsbA0KV05ldEdldFVuaXZl
cnNhbE5hbWVXKA0KICAgICAgTFBDV1NUUiBscExvY2FsUGF0aCwNCiAgICAgIERXT1JEICAgIGR3
SW5mb0xldmVsLA0KICAgICAgTFBWT0lEIGxwQnVmZmVyLA0KICAgICAgTFBEV09SRCBscEJ1ZmZl
clNpemUNCiAgICApOw0KDQoNCg0KDQojbGluZSA2OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5o
Ig0KDQoNCg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRVc2VyQSgNCiAgICAgIExQQ1NU
UiAgbHBOYW1lLA0KICAgICAgTFBTVFIgbHBVc2VyTmFtZSwNCiAgICAgICBMUERXT1JEIGxwbkxl
bmd0aA0KICAgICk7DQoNCg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRVc2VyVygNCiAg
ICAgIExQQ1dTVFIgIGxwTmFtZSwNCiAgICAgIExQV1NUUiBscFVzZXJOYW1lLA0KICAgICAgIExQ
RFdPUkQgbHBuTGVuZ3RoDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNzE3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubmV0d2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDczMCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbm5ldHdrLmgiDQoNCg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRQcm92aWRl
ck5hbWVBKA0KICAgICAgICAgRFdPUkQgICBkd05ldFR5cGUsDQogICAgICBMUFNUUiBscFByb3Zp
ZGVyTmFtZSwNCiAgICAgIExQRFdPUkQgbHBCdWZmZXJTaXplDQogICAgKTsNCiANCkRXT1JEIF9f
c3RkY2FsbA0KV05ldEdldFByb3ZpZGVyTmFtZVcoDQogICAgICAgICBEV09SRCAgIGR3TmV0VHlw
ZSwNCiAgICAgIExQV1NUUiBscFByb3ZpZGVyTmFtZSwNCiAgICAgIExQRFdPUkQgbHBCdWZmZXJT
aXplDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNzUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCIN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX05FVElORk9TVFJVQ1R7DQogICAgRFdPUkQgY2JTdHJ1Y3R1cmU7
DQogICAgRFdPUkQgZHdQcm92aWRlclZlcnNpb247DQogICAgRFdPUkQgZHdTdGF0dXM7DQogICAg
RFdPUkQgZHdDaGFyYWN0ZXJpc3RpY3M7DQogICAgVUxPTkdfUFRSIGR3SGFuZGxlOw0KICAgIFdP
UkQgIHdOZXRUeXBlOw0KICAgIERXT1JEIGR3UHJpbnRlcnM7DQogICAgRFdPUkQgZHdEcml2ZXM7
DQp9IE5FVElORk9TVFJVQ1QsICAqTFBORVRJTkZPU1RSVUNUOw0KDQoNCg0KDQoNCiANCkRXT1JE
IF9fc3RkY2FsbA0KV05ldEdldE5ldHdvcmtJbmZvcm1hdGlvbkEoDQogICAgICAgTFBDU1RSICAg
ICAgICBscFByb3ZpZGVyLA0KICAgICAgTFBORVRJTkZPU1RSVUNUIGxwTmV0SW5mb1N0cnVjdA0K
ICAgICk7DQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXROZXR3b3JrSW5mb3JtYXRpb25XKA0K
ICAgICAgIExQQ1dTVFIgICAgICAgIGxwUHJvdmlkZXIsDQogICAgICBMUE5FVElORk9TVFJVQ1Qg
bHBOZXRJbmZvU3RydWN0DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgNzg1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lubmV0d2suaCINCg0KI2xpbmUgNzg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KDQoN
Cg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRMYXN0RXJyb3JBKA0KICAgICAgTFBEV09S
RCAgICBscEVycm9yLA0KICAgICAgTFBTVFIgbHBFcnJvckJ1ZiwNCiAgICAgIERXT1JEICAgICAg
bkVycm9yQnVmU2l6ZSwNCiAgICAgIExQU1RSICBscE5hbWVCdWYsDQogICAgICBEV09SRCAgICAg
IG5OYW1lQnVmU2l6ZQ0KICAgICk7DQogDQpEV09SRCBfX3N0ZGNhbGwNCldOZXRHZXRMYXN0RXJy
b3JXKA0KICAgICAgTFBEV09SRCAgICBscEVycm9yLA0KICAgICAgTFBXU1RSIGxwRXJyb3JCdWYs
DQogICAgICBEV09SRCAgICAgIG5FcnJvckJ1ZlNpemUsDQogICAgICBMUFdTVFIgIGxwTmFtZUJ1
ZiwNCiAgICAgIERXT1JEICAgICAgbk5hbWVCdWZTaXplDQogICAgKTsNCg0KDQoNCg0KI2xpbmUg
ODE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NDUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5uZXR3ay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDg2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA4NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX05FVENPTk5FQ1RJTkZPU1RSVUNUew0KICAgIERXT1JEIGNiU3RydWN0dXJlOw0KICAg
IERXT1JEIGR3RmxhZ3M7DQogICAgRFdPUkQgZHdTcGVlZDsNCiAgICBEV09SRCBkd0RlbGF5Ow0K
ICAgIERXT1JEIGR3T3B0RGF0YVNpemU7DQp9IE5FVENPTk5FQ1RJTkZPU1RSVUNULCAgKkxQTkVU
Q09OTkVDVElORk9TVFJVQ1Q7DQoNCg0KDQoNCg0KDQogDQpEV09SRCBfX3N0ZGNhbGwNCk11bHRp
bmV0R2V0Q29ubmVjdGlvblBlcmZvcm1hbmNlQSgNCiAgICAgICBMUE5FVFJFU09VUkNFQSBscE5l
dFJlc291cmNlLA0KICAgICAgTFBORVRDT05ORUNUSU5GT1NUUlVDVCBscE5ldENvbm5lY3RJbmZv
U3RydWN0DQogICAgKTsNCiANCkRXT1JEIF9fc3RkY2FsbA0KTXVsdGluZXRHZXRDb25uZWN0aW9u
UGVyZm9ybWFuY2VXKA0KICAgICAgIExQTkVUUkVTT1VSQ0VXIGxwTmV0UmVzb3VyY2UsDQogICAg
ICBMUE5FVENPTk5FQ1RJTkZPU1RSVUNUIGxwTmV0Q29ubmVjdEluZm9TdHJ1Y3QNCiAgICApOw0K
DQoNCg0KDQojbGluZSA5MTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KI2xpbmUgOTE2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2lubmV0d2suaCINCg0KDQojbGluZSA5MTkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5u
ZXR3ay5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQoj
bGluZSA5MjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5uZXR3ay5oIg0KDQoNCn0NCiNsaW5lIDkyOSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbm5ldHdrLmgiDQoNCg0KI2xpbmUgOTMyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lubmV0
d2suaCINCg0KI2xpbmUgMTg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMTg4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luZG93cy5oIg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcY2Rl
cnIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDE3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXGNkZXJyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxjZGVyci5oIg0KI2xpbmUgMTkxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRkZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMTQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGUu
aCINCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGUuaCINCg0KDQpleHRl
cm4gIkMiIHsNCiNsaW5lIDI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGRlLmgiDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KDQogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGJBcHBSZXR1cm5Db2RlOjgsDQogICAgICAgICAgICAgICAgIHJlc2VydmVkOjYsDQogICAg
ICAgICAgICAgICAgIGZCdXN5OjEsDQoJCSBmQWNrOjE7DQoNCg0KI2xpbmUgNjkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxkZGUuaCINCn0gRERFQUNLOw0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
ew0KDQogICAgICAgIHVuc2lnbmVkIHNob3J0IHJlc2VydmVkOjE0LA0KICAgICAgICAgICAgICAg
ICBmRGVmZXJVcGQ6MSwNCgkJIGZBY2tSZXE6MTsNCg0KDQojbGluZSA4NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGRkZS5oIg0KCXNob3J0ICAgICBjZkZvcm1hdDsNCn0gRERFQURWSVNFOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCg0KCXVuc2lnbmVkIHNob3J0IHVudXNlZDoxMiwN
CiAgICAgICAgICAgICAgICAgZlJlc3BvbnNlOjEsDQogICAgICAgICAgICAgICAgIGZSZWxlYXNl
OjEsDQogICAgICAgICAgICAgICAgIHJlc2VydmVkOjEsDQogICAgICAgICAgICAgICAgIGZBY2tS
ZXE6MTsNCg0KDQojbGluZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGUuaCINCglzaG9ydAkgY2ZGb3Jt
YXQ7DQoJQllURQkgVmFsdWVbMV07DQp9IERERURBVEE7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3Qgew0KDQoJdW5zaWduZWQgc2hvcnQgdW51c2VkOjEzLCAgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KCQkgZlJlbGVhc2U6MSwNCgkJIGZSZXNlcnZlZDoyOw0K
DQoNCiNsaW5lIDEzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRkZS5oIg0KCXNob3J0ICAgIGNmRm9ybWF0Ow0K
CUJZVEUJIFZhbHVlWzFdOyAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCn0gRERF
UE9LRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB7DQoNCiAgICAgICAg
dW5zaWduZWQgc2hvcnQgdW51c2VkOjEzLA0KICAgICAgICAgICAgICAgICBmUmVsZWFzZToxLA0K
ICAgICAgICAgICAgICAgICBmRGVmZXJVcGQ6MSwNCgkJIGZBY2tSZXE6MTsNCg0KDQojbGluZSAx
NTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxkZGUuaCINCglzaG9ydAkgY2ZGb3JtYXQ7DQp9IERERUxOOw0KDQp0
eXBlZGVmIHN0cnVjdCB7DQoNCgl1bnNpZ25lZCBzaG9ydCB1bnVzZWQ6MTIsDQogICAgICAgICAg
ICAgICAgIGZBY2s6MSwNCiAgICAgICAgICAgICAgICAgZlJlbGVhc2U6MSwNCiAgICAgICAgICAg
ICAgICAgZlJlc2VydmVkOjEsDQogICAgICAgICAgICAgICAgIGZBY2tSZXE6MTsNCg0KDQojbGlu
ZSAxNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxkZGUuaCINCglzaG9ydAkgY2ZGb3JtYXQ7DQoJQllURQkgcmdi
WzFdOw0KfSBEREVVUDsNCg0KDQoNCg0KDQoNCkJPT0wNCl9fc3RkY2FsbA0KRGRlU2V0UXVhbGl0
eU9mU2VydmljZSgNCiAgICBIV05EIGh3bmRDbGllbnQsDQogICAgY29uc3QgU0VDVVJJVFlfUVVB
TElUWV9PRl9TRVJWSUNFICpwcW9zTmV3LA0KICAgIFBTRUNVUklUWV9RVUFMSVRZX09GX1NFUlZJ
Q0UgcHFvc1ByZXYpOw0KDQpCT09MDQpfX3N0ZGNhbGwNCkltcGVyc29uYXRlRGRlQ2xpZW50V2lu
ZG93KA0KICAgIEhXTkQgaFduZENsaWVudCwNCiAgICBIV05EIGhXbmRTZXJ2ZXIpOw0KDQoNCg0K
DQpMUEFSQU0gX19zdGRjYWxsIFBhY2tEREVsUGFyYW0oICBVSU5UIG1zZywgICBVSU5UX1BUUiB1
aUxvLCAgIFVJTlRfUFRSIHVpSGkpOw0KQk9PTCAgIF9fc3RkY2FsbCBVbnBhY2tEREVsUGFyYW0o
ICBVSU5UIG1zZywgICBMUEFSQU0gbFBhcmFtLCAgIFBVSU5UX1BUUiBwdWlMbywgICBQVUlOVF9Q
VFIgcHVpSGkpOw0KQk9PTCAgIF9fc3RkY2FsbCBGcmVlRERFbFBhcmFtKCAgVUlOVCBtc2csICAg
TFBBUkFNIGxQYXJhbSk7DQpMUEFSQU0gX19zdGRjYWxsIFJldXNlRERFbFBhcmFtKExQQVJBTSBs
UGFyYW0sIFVJTlQgbXNnSW4sIFVJTlQgbXNnT3V0LCBVSU5UX1BUUiB1aUxvLCBVSU5UX1BUUiB1
aUhpKTsNCg0KI2xpbmUgMjAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGRlLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQoNCn0NCiNsaW5lIDIwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRkZS5oIg0KDQoNCiNwcmFnbWEgd2Fy
bmluZyhwb3ApDQojbGluZSAyMTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGUuaCINCg0KI2xpbmUgMjEzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcZGRlLmgiDQojbGluZSAxOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGRlbWwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOjQ4MjApIA0KI2xpbmUgMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGVtbC5oIg0KDQoNCmV4dGVybiAi
QyIgew0KI2xpbmUgMjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGVtbC5oIg0KDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCnN0cnVjdCBIQ09OVkxJU1RfX3tpbnQgdW51c2VkO307
IHR5cGVkZWYgc3RydWN0IEhDT05WTElTVF9fICpIQ09OVkxJU1Q7DQpzdHJ1Y3QgSENPTlZfX3tp
bnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhDT05WX18gKkhDT05WOw0Kc3RydWN0IEhTWl9f
e2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSFNaX18gKkhTWjsNCnN0cnVjdCBIRERFREFU
QV9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSERERURBVEFfXyAqSERERURBVEE7DQoN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0hTWlBBSVIgew0KICAgIEhTWiBoc3pTdmM7DQogICAg
SFNaIGhzelRvcGljOw0KfSBIU1pQQUlSLCAgKlBIU1pQQUlSOw0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdDT05WQ09OVEVYVCB7DQogICAgVUlOVCAgICAgICAgY2I7ICAgICAgICAgICAgIA0K
ICAgIFVJTlQgICAgICAgIHdGbGFnczsgICAgICAgICANCiAgICBVSU5UICAgICAgICB3Q291bnRy
eUlEOyAgICAgDQogICAgaW50ICAgICAgICAgaUNvZGVQYWdlOyAgICAgIA0KICAgIERXT1JEICAg
ICAgIGR3TGFuZ0lEOyAgICAgICANCiAgICBEV09SRCAgICAgICBkd1NlY3VyaXR5OyAgICAgDQog
ICAgU0VDVVJJVFlfUVVBTElUWV9PRl9TRVJWSUNFIHFvczsgIA0KfSBDT05WQ09OVEVYVCwgICpQ
Q09OVkNPTlRFWFQ7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NPTlZJTkZPIHsNCiAgICBE
V09SRCAgIGNiOyAgICAgICAgICAgIA0KICAgIERXT1JEX1BUUiBoVXNlcjsgICAgICAgDQogICAg
SENPTlYgICBoQ29udlBhcnRuZXI7ICANCiAgICBIU1ogICAgIGhzelN2Y1BhcnRuZXI7IA0KICAg
IEhTWiAgICAgaHN6U2VydmljZVJlcTsgDQogICAgSFNaICAgICBoc3pUb3BpYzsgICAgICANCiAg
ICBIU1ogICAgIGhzekl0ZW07ICAgICAgIA0KICAgIFVJTlQgICAgd0ZtdDsgICAgICAgICAgDQog
ICAgVUlOVCAgICB3VHlwZTsgICAgICAgICANCiAgICBVSU5UICAgIHdTdGF0dXM7ICAgICAgIA0K
ICAgIFVJTlQgICAgd0NvbnZzdDsgICAgICAgDQogICAgVUlOVCAgICB3TGFzdEVycm9yOyAgICAN
CiAgICBIQ09OVkxJU1QgaENvbnZMaXN0OyAgIA0KICAgIENPTlZDT05URVhUIENvbnZDdHh0OyAg
DQogICAgSFdORCAgICBod25kOyAgICAgICAgICANCiAgICBIV05EICAgIGh3bmRQYXJ0bmVyOyAg
IA0KfSBDT05WSU5GTywgICpQQ09OVklORk87DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0NyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGRkZW1sLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGVtbC5o
Ig0KDQoNCg0KDQp0eXBlZGVmIEhEREVEQVRBIF9fc3RkY2FsbCBGTkNBTExCQUNLKFVJTlQgd1R5
cGUsIFVJTlQgd0ZtdCwgSENPTlYgaENvbnYsDQogICAgICAgIEhTWiBoc3oxLCBIU1ogaHN6Miwg
SERERURBVEEgaERhdGEsIFVMT05HX1BUUiBkd0RhdGExLCBVTE9OR19QVFIgZHdEYXRhMik7DQp0
eXBlZGVmIEhEREVEQVRBIChfX3N0ZGNhbGwgKlBGTkNBTExCQUNLKShVSU5UIHdUeXBlLCBVSU5U
IHdGbXQsIEhDT05WIGhDb252LA0KICAgICAgICBIU1ogaHN6MSwgSFNaIGhzejIsIEhEREVEQVRB
IGhEYXRhLCBVTE9OR19QVFIgZHdEYXRhMSwgVUxPTkdfUFRSIGR3RGF0YTIpOw0KDQoNCg0KDQoN
ClVJTlQNCl9fc3RkY2FsbA0KRGRlSW5pdGlhbGl6ZUEoDQogICAgICBMUERXT1JEIHBpZEluc3Qs
DQogICAgICBQRk5DQUxMQkFDSyBwZm5DYWxsYmFjaywNCiAgICAgIERXT1JEIGFmQ21kLA0KICAg
ICAgRFdPUkQgdWxSZXMpOw0KVUlOVA0KX19zdGRjYWxsDQpEZGVJbml0aWFsaXplVygNCiAgICAg
IExQRFdPUkQgcGlkSW5zdCwNCiAgICAgIFBGTkNBTExCQUNLIHBmbkNhbGxiYWNrLA0KICAgICAg
RFdPUkQgYWZDbWQsDQogICAgICBEV09SRCB1bFJlcyk7DQoNCg0KDQoNCiNsaW5lIDI0MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGRkZW1sLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KQk9PTA0KX19zdGRjYWxsDQpEZGVVbmluaXRpYWxp
emUoDQogICAgICBEV09SRCBpZEluc3QpOw0KDQoNCg0KDQpIQ09OVkxJU1QNCl9fc3RkY2FsbA0K
RGRlQ29ubmVjdExpc3QoDQogICAgICBEV09SRCBpZEluc3QsDQogICAgICBIU1ogaHN6U2Vydmlj
ZSwNCiAgICAgIEhTWiBoc3pUb3BpYywNCiAgICAgIEhDT05WTElTVCBoQ29udkxpc3QsDQogICAg
ICBQQ09OVkNPTlRFWFQgcENDKTsNCg0KSENPTlYNCl9fc3RkY2FsbA0KRGRlUXVlcnlOZXh0U2Vy
dmVyKA0KICAgICAgSENPTlZMSVNUIGhDb252TGlzdCwNCiAgICAgIEhDT05WIGhDb252UHJldik7
DQpCT09MDQpfX3N0ZGNhbGwNCkRkZURpc2Nvbm5lY3RMaXN0KA0KICAgICAgSENPTlZMSVNUIGhD
b252TGlzdCk7DQoNCg0KDQoNCkhDT05WDQpfX3N0ZGNhbGwNCkRkZUNvbm5lY3QoDQogICAgICBE
V09SRCBpZEluc3QsDQogICAgICBIU1ogaHN6U2VydmljZSwNCiAgICAgIEhTWiBoc3pUb3BpYywN
CiAgICAgIFBDT05WQ09OVEVYVCBwQ0MpOw0KDQpCT09MDQpfX3N0ZGNhbGwNCkRkZURpc2Nvbm5l
Y3QoDQogICAgICBIQ09OViBoQ29udik7DQoNCkhDT05WDQpfX3N0ZGNhbGwNCkRkZVJlY29ubmVj
dCgNCiAgICAgIEhDT05WIGhDb252KTsNCg0KVUlOVA0KX19zdGRjYWxsDQpEZGVRdWVyeUNvbnZJ
bmZvKA0KICAgICAgSENPTlYgaENvbnYsDQogICAgICBEV09SRCBpZFRyYW5zYWN0aW9uLA0KICAg
ICAgUENPTlZJTkZPIHBDb252SW5mbyk7DQoNCkJPT0wNCl9fc3RkY2FsbA0KRGRlU2V0VXNlckhh
bmRsZSgNCiAgICAgIEhDT05WIGhDb252LA0KICAgICAgRFdPUkQgaWQsDQogICAgICBEV09SRF9Q
VFIgaFVzZXIpOw0KDQpCT09MDQpfX3N0ZGNhbGwNCkRkZUFiYW5kb25UcmFuc2FjdGlvbigNCiAg
ICAgIERXT1JEIGlkSW5zdCwNCiAgICAgIEhDT05WIGhDb252LA0KICAgICAgRFdPUkQgaWRUcmFu
c2FjdGlvbik7DQoNCg0KDQoNCg0KQk9PTA0KX19zdGRjYWxsDQpEZGVQb3N0QWR2aXNlKA0KICAg
ICAgRFdPUkQgaWRJbnN0LA0KICAgICAgSFNaIGhzelRvcGljLA0KICAgICAgSFNaIGhzekl0ZW0p
Ow0KDQpCT09MDQpfX3N0ZGNhbGwNCkRkZUVuYWJsZUNhbGxiYWNrKA0KICAgICAgRFdPUkQgaWRJ
bnN0LA0KICAgICAgSENPTlYgaENvbnYsDQogICAgICBVSU5UIHdDbWQpOw0KDQpCT09MDQpfX3N0
ZGNhbGwNCkRkZUltcGVyc29uYXRlQ2xpZW50KA0KICAgICAgSENPTlYgaENvbnYpOw0KDQoNCg0K
DQoNCg0KDQpIRERFREFUQQ0KX19zdGRjYWxsDQpEZGVOYW1lU2VydmljZSgNCiAgICAgIERXT1JE
IGlkSW5zdCwNCiAgICAgIEhTWiBoc3oxLA0KICAgICAgSFNaIGhzejIsDQogICAgICBVSU5UIGFm
Q21kKTsNCg0KDQoNCg0KDQoNCg0KDQoNCkhEREVEQVRBDQpfX3N0ZGNhbGwNCkRkZUNsaWVudFRy
YW5zYWN0aW9uKA0KICAgICAgTFBCWVRFIHBEYXRhLA0KICAgICAgRFdPUkQgY2JEYXRhLA0KICAg
ICAgSENPTlYgaENvbnYsDQogICAgICBIU1ogaHN6SXRlbSwNCiAgICAgIFVJTlQgd0ZtdCwNCiAg
ICAgIFVJTlQgd1R5cGUsDQogICAgICBEV09SRCBkd1RpbWVvdXQsDQogICAgICBMUERXT1JEIHBk
d1Jlc3VsdCk7DQoNCg0KDQoNCg0KDQpIRERFREFUQQ0KX19zdGRjYWxsDQpEZGVDcmVhdGVEYXRh
SGFuZGxlKA0KICAgICAgRFdPUkQgaWRJbnN0LA0KICAgICAgTFBCWVRFIHBTcmMsDQogICAgICBE
V09SRCBjYiwNCiAgICAgIERXT1JEIGNiT2ZmLA0KICAgICAgSFNaIGhzekl0ZW0sDQogICAgICBV
SU5UIHdGbXQsDQogICAgICBVSU5UIGFmQ21kKTsNCg0KSERERURBVEENCl9fc3RkY2FsbA0KRGRl
QWRkRGF0YSgNCiAgICAgIEhEREVEQVRBIGhEYXRhLA0KICAgICAgTFBCWVRFIHBTcmMsDQogICAg
ICBEV09SRCBjYiwNCiAgICAgIERXT1JEIGNiT2ZmKTsNCg0KRFdPUkQNCl9fc3RkY2FsbA0KRGRl
R2V0RGF0YSgNCiAgICAgIEhEREVEQVRBIGhEYXRhLA0KICAgICAgTFBCWVRFIHBEc3QsDQogICAg
ICBEV09SRCBjYk1heCwNCiAgICAgIERXT1JEIGNiT2ZmKTsNCg0KTFBCWVRFDQpfX3N0ZGNhbGwN
CkRkZUFjY2Vzc0RhdGEoDQogICAgICBIRERFREFUQSBoRGF0YSwNCiAgICAgIExQRFdPUkQgcGNi
RGF0YVNpemUpOw0KDQpCT09MDQpfX3N0ZGNhbGwNCkRkZVVuYWNjZXNzRGF0YSgNCiAgICAgIEhE
REVEQVRBIGhEYXRhKTsNCg0KQk9PTA0KX19zdGRjYWxsDQpEZGVGcmVlRGF0YUhhbmRsZSgNCiAg
ICAgIEhEREVEQVRBIGhEYXRhKTsNCg0KDQoNCg0KVUlOVA0KX19zdGRjYWxsDQpEZGVHZXRMYXN0
RXJyb3IoDQogICAgICBEV09SRCBpZEluc3QpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KSFNaDQpfX3N0ZGNhbGwNCkRkZUNyZWF0ZVN0cmlu
Z0hhbmRsZUEoDQogICAgICBEV09SRCBpZEluc3QsDQogICAgICBMUENTVFIgcHN6LA0KICAgICAg
aW50IGlDb2RlUGFnZSk7DQpIU1oNCl9fc3RkY2FsbA0KRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVygN
CiAgICAgIERXT1JEIGlkSW5zdCwNCiAgICAgIExQQ1dTVFIgcHN6LA0KICAgICAgaW50IGlDb2Rl
UGFnZSk7DQoNCg0KDQoNCiNsaW5lIDQ5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRkZW1sLmgiDQoNCkRXT1JE
DQpfX3N0ZGNhbGwNCkRkZVF1ZXJ5U3RyaW5nQSgNCiAgICAgIERXT1JEIGlkSW5zdCwNCiAgICAg
IEhTWiBoc3osDQogICAgICBMUFNUUiBwc3osDQogICAgICBEV09SRCBjY2hNYXgsDQogICAgICBp
bnQgaUNvZGVQYWdlKTsNCkRXT1JEDQpfX3N0ZGNhbGwNCkRkZVF1ZXJ5U3RyaW5nVygNCiAgICAg
IERXT1JEIGlkSW5zdCwNCiAgICAgIEhTWiBoc3osDQogICAgICBMUFdTVFIgcHN6LA0KICAgICAg
RFdPUkQgY2NoTWF4LA0KICAgICAgaW50IGlDb2RlUGFnZSk7DQoNCg0KDQoNCiNsaW5lIDUxOSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGRkZW1sLmgiDQoNCkJPT0wNCl9fc3RkY2FsbA0KRGRlRnJlZVN0cmluZ0hh
bmRsZSgNCiAgICAgIERXT1JEIGlkSW5zdCwNCiAgICAgIEhTWiBoc3opOw0KDQpCT09MDQpfX3N0
ZGNhbGwNCkRkZUtlZXBTdHJpbmdIYW5kbGUoDQogICAgICBEV09SRCBpZEluc3QsDQogICAgICBI
U1ogaHN6KTsNCg0KaW50DQpfX3N0ZGNhbGwNCkRkZUNtcFN0cmluZ0hhbmRsZXMoDQogICAgICBI
U1ogaHN6MSwNCiAgICAgIEhTWiBoc3oyKTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRh
Z0RERU1MX01TR19IT09LX0RBVEEgeyAgICANCiAgICBVSU5UX1BUUiB1aUxvOyAgDQogICAgVUlO
VF9QVFIgdWlIaTsNCiAgICBEV09SRCBjYkRhdGE7ICAgDQogICAgRFdPUkQgRGF0YVs4XTsgIA0K
fSBEREVNTF9NU0dfSE9PS19EQVRBLCAqUERERU1MX01TR19IT09LX0RBVEE7DQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnTU9OTVNHU1RSVUNUIHsNCiAgICBVSU5UICAgIGNiOw0KICAgIEhXTkQgICAg
aHduZFRvOw0KICAgIERXT1JEICAgZHdUaW1lOw0KICAgIEhBTkRMRSAgaFRhc2s7DQogICAgVUlO
VCAgICB3TXNnOw0KICAgIFdQQVJBTSAgd1BhcmFtOw0KICAgIExQQVJBTSAgbFBhcmFtOw0KICAg
IERERU1MX01TR19IT09LX0RBVEEgZG1oZDsgICAgICAgDQp9IE1PTk1TR1NUUlVDVCwgKlBNT05N
U0dTVFJVQ1Q7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ01PTkNCU1RSVUNUIHsNCiAgICBVSU5UICAg
Y2I7DQogICAgRFdPUkQgIGR3VGltZTsNCiAgICBIQU5ETEUgaFRhc2s7DQogICAgRFdPUkQgIGR3
UmV0Ow0KICAgIFVJTlQgICB3VHlwZTsNCiAgICBVSU5UICAgd0ZtdDsNCiAgICBIQ09OViAgaENv
bnY7DQogICAgSFNaICAgIGhzejE7DQogICAgSFNaICAgIGhzejI7DQogICAgSERERURBVEEgaERh
dGE7DQogICAgVUxPTkdfUFRSIGR3RGF0YTE7DQogICAgVUxPTkdfUFRSIGR3RGF0YTI7DQogICAg
Q09OVkNPTlRFWFQgY2M7ICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgY2JEYXRhOyAgICAg
ICAgICAgICAgICAgIA0KICAgIERXT1JEICBEYXRhWzhdOyAgICAgICAgICAgICAgICAgDQp9IE1P
TkNCU1RSVUNULCAqUE1PTkNCU1RSVUNUOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNT05IU1pTVFJV
Q1RBIHsNCiAgICBVSU5UICAgY2I7DQogICAgQk9PTCAgIGZzQWN0aW9uOyAgICANCiAgICBEV09S
RCAgZHdUaW1lOw0KICAgIEhTWiAgICBoc3o7DQogICAgSEFORExFIGhUYXNrOw0KICAgIENIQVIg
ICAgc3RyWzFdOw0KfSBNT05IU1pTVFJVQ1RBLCAqUE1PTkhTWlNUUlVDVEE7DQp0eXBlZGVmIHN0
cnVjdCB0YWdNT05IU1pTVFJVQ1RXIHsNCiAgICBVSU5UICAgY2I7DQogICAgQk9PTCAgIGZzQWN0
aW9uOyAgICANCiAgICBEV09SRCAgZHdUaW1lOw0KICAgIEhTWiAgICBoc3o7DQogICAgSEFORExF
IGhUYXNrOw0KICAgIFdDSEFSICAgc3RyWzFdOw0KfSBNT05IU1pTVFJVQ1RXLCAqUE1PTkhTWlNU
UlVDVFc7DQoNCnR5cGVkZWYgTU9OSFNaU1RSVUNUVyBNT05IU1pTVFJVQ1Q7DQp0eXBlZGVmIFBN
T05IU1pTVFJVQ1RXIFBNT05IU1pTVFJVQ1Q7DQoNCg0KDQojbGluZSA2MDMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxkZGVtbC5oIg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTU9ORVJSU1RSVUNUIHsN
CiAgICBVSU5UICAgIGNiOw0KICAgIFVJTlQgICAgd0xhc3RFcnJvcjsNCiAgICBEV09SRCAgIGR3
VGltZTsNCiAgICBIQU5ETEUgIGhUYXNrOw0KfSBNT05FUlJTVFJVQ1QsICpQTU9ORVJSU1RSVUNU
Ow0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNT05MSU5LU1RSVUNUIHsNCiAgICBVSU5UICAgIGNiOw0K
ICAgIERXT1JEICAgZHdUaW1lOw0KICAgIEhBTkRMRSAgaFRhc2s7DQogICAgQk9PTCAgICBmRXN0
YWJsaXNoZWQ7DQogICAgQk9PTCAgICBmTm9EYXRhOw0KICAgIEhTWiAgICAgaHN6U3ZjOw0KICAg
IEhTWiAgICAgaHN6VG9waWM7DQogICAgSFNaICAgICBoc3pJdGVtOw0KICAgIFVJTlQgICAgd0Zt
dDsNCiAgICBCT09MICAgIGZTZXJ2ZXI7DQogICAgSENPTlYgICBoQ29udlNlcnZlcjsNCiAgICBI
Q09OViAgIGhDb252Q2xpZW50Ow0KfSBNT05MSU5LU1RSVUNULCAqUE1PTkxJTktTVFJVQ1Q7DQoN
CnR5cGVkZWYgc3RydWN0IHRhZ01PTkNPTlZTVFJVQ1Qgew0KICAgIFVJTlQgICAgY2I7DQogICAg
Qk9PTCAgICBmQ29ubmVjdDsNCiAgICBEV09SRCAgIGR3VGltZTsNCiAgICBIQU5ETEUgIGhUYXNr
Ow0KICAgIEhTWiAgICAgaHN6U3ZjOw0KICAgIEhTWiAgICAgaHN6VG9waWM7DQogICAgSENPTlYg
ICBoQ29udkNsaWVudDsgICAgICAgIA0KICAgIEhDT05WICAgaENvbnZTZXJ2ZXI7ICAgICAgICAN
Cn0gTU9OQ09OVlNUUlVDVCwgKlBNT05DT05WU1RSVUNUOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGRlbWwuaCINCg0KDQojbGlu
ZSA2NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxkZGVtbC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQoj
bGluZSA2NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGVtbC5oIg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3Ap
DQojbGluZSA2NzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkZGVtbC5oIg0KDQoNCiNsaW5lIDY3NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGRkZW1sLmgiDQojbGluZSAxOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGlu
ZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcZGxncy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjQ3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcZGxncy5oIg0KDQoNCg0KDQojbGluZSAyNTIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxkbGdz
LmgiDQoNCg0KDQoNCg0KI2xpbmUgMjU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGxncy5oIg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ1JHQg0Kew0KICAgIEJZVEUgICAgYlJlZDsNCiAgICBCWVRF
ICAgIGJHcmVlbjsNCiAgICBCWVRFICAgIGJCbHVlOw0KICAgIEJZVEUgICAgYkV4dHJhOw0KfSBD
UkdCOyAgICAgICAgICAgDQoNCiNsaW5lIDI3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGRsZ3MuaCINCg0KI2xp
bmUgMjc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcZGxncy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQojbGlu
ZSAyNzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxkbGdzLmgiDQojbGluZSAxOTQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5k
b3dzLmgiDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsemV4cGFuZC5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5l
IDI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbHpleHBhbmQuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQogDQpJTlQN
Cl9fc3RkY2FsbA0KTFpTdGFydCgNCiAgICB2b2lkDQogICAgKTsNCg0Kdm9pZA0KX19zdGRjYWxs
DQpMWkRvbmUoDQogICAgdm9pZA0KICAgICk7DQoNCg0KIA0KIA0KTE9ORw0KX19zdGRjYWxsDQpD
b3B5TFpGaWxlKA0KICAgICAgSU5UIGhmU291cmNlLA0KICAgICAgSU5UIGhmRGVzdA0KICAgICk7
DQoNCiANCiANCkxPTkcNCl9fc3RkY2FsbA0KTFpDb3B5KA0KICAgICAgSU5UIGhmU291cmNlLA0K
ICAgICAgSU5UIGhmRGVzdA0KICAgICk7DQoNCiANCiANCklOVA0KX19zdGRjYWxsDQpMWkluaXQo
DQogICAgICBJTlQgaGZTb3VyY2UNCiAgICApOw0KDQogDQogDQpJTlQNCl9fc3RkY2FsbA0KR2V0
RXhwYW5kZWROYW1lQSgNCiAgICAgIExQU1RSIGxwc3pTb3VyY2UsDQogICAgICBMUFNUUiBscHN6
QnVmZmVyDQogICAgKTsNCiANCiANCklOVA0KX19zdGRjYWxsDQpHZXRFeHBhbmRlZE5hbWVXKA0K
ICAgICAgTFBXU1RSIGxwc3pTb3VyY2UsDQogICAgICBMUFdTVFIgbHBzekJ1ZmZlcg0KICAgICk7
DQoNCg0KDQoNCiNsaW5lIDExMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGx6ZXhwYW5kLmgiDQoNCiANCiANCklO
VA0KX19zdGRjYWxsDQpMWk9wZW5GaWxlQSgNCiAgICAgIExQU1RSIGxwRmlsZU5hbWUsDQogICAg
ICBMUE9GU1RSVUNUIGxwUmVPcGVuQnVmLA0KICAgICAgV09SRCB3U3R5bGUNCiAgICApOw0KIA0K
IA0KSU5UDQpfX3N0ZGNhbGwNCkxaT3BlbkZpbGVXKA0KICAgICAgTFBXU1RSIGxwRmlsZU5hbWUs
DQogICAgICBMUE9GU1RSVUNUIGxwUmVPcGVuQnVmLA0KICAgICAgV09SRCB3U3R5bGUNCiAgICAp
Ow0KDQoNCg0KDQojbGluZSAxMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxsemV4cGFuZC5oIg0KDQogDQogDQpM
T05HDQpfX3N0ZGNhbGwNCkxaU2VlaygNCiAgICAgIElOVCBoRmlsZSwNCiAgICAgIExPTkcgbE9m
ZnNldCwNCiAgICAgIElOVCBpT3JpZ2luDQogICAgKTsNCg0KIA0KIA0KSU5UDQpfX3N0ZGNhbGwN
CkxaUmVhZCgNCiAgICAgIElOVCBoRmlsZSwNCiAgICAgIENIQVIqIGxwQnVmZmVyLA0KICAgICAg
SU5UIGNiUmVhZA0KICAgICk7DQoNCnZvaWQNCl9fc3RkY2FsbA0KTFpDbG9zZSgNCiAgICAgIElO
VCBoRmlsZQ0KICAgICk7DQoNCiNsaW5lIDE2NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGx6ZXhwYW5kLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDE2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGx6ZXhwYW5k
LmgiDQoNCg0KI2xpbmUgMTcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbHpleHBhbmQuaCINCiNsaW5lIDE5NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbXN5c3RlbS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzY29tLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkgDQoN
Cg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQx
MDMpDQoNCiNwcmFnbWEgcGFjayhwdXNoLDEpDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccHNocGFjazEuaCINCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrMS5o
Ig0KI2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazEuaCINCiNsaW5lIDIyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1zeXNjb20uaCINCg0KDQoNCg0KI2xpbmUgMjcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbXN5
c2NvbS5oIg0KDQoNCmV4dGVybiAiQyIgeyAgICAgICAgICAgIA0KI2xpbmUgMzEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtbXN5c2NvbS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVD
b3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQojbGluZSA0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzY29t
LmgiDQoNCg0KDQoNCiNsaW5lIDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20uaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzY29tLmgiDQoNCg0K
DQoNCg0KDQp0eXBlZGVmIFVJTlQgICAgICAgIE1NVkVSU0lPTjsgIA0KDQoNCiNsaW5lIDk4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcbW1zeXNjb20uaCINCnR5cGVkZWYgICBVSU5UICAgICAgICBNTVJFU1VMVDsg
ICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KdHlwZWRlZiBVSU5UICAg
ICpMUFVJTlQ7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IG1tdGltZV90YWcNCnsNCiAgICBVSU5U
ICAgICAgICAgICAgd1R5cGU7ICAgICAgDQogICAgdW5pb24NCiAgICB7DQogICAgICAgIERXT1JE
ICAgICAgIG1zOyAgICAgICAgIA0KICAgICAgICBEV09SRCAgICAgICBzYW1wbGU7ICAgICANCiAg
ICAgICAgRFdPUkQgICAgICAgY2I7ICAgICAgICAgDQogICAgICAgIERXT1JEICAgICAgIHRpY2tz
OyAgICAgIA0KDQogICAgICAgIA0KICAgICAgICBzdHJ1Y3QNCiAgICAgICAgew0KICAgICAgICAg
ICAgQllURSAgICBob3VyOyAgICAgICANCiAgICAgICAgICAgIEJZVEUgICAgbWluOyAgICAgICAg
DQogICAgICAgICAgICBCWVRFICAgIHNlYzsgICAgICAgIA0KICAgICAgICAgICAgQllURSAgICBm
cmFtZTsgICAgICANCiAgICAgICAgICAgIEJZVEUgICAgZnBzOyAgICAgICAgDQogICAgICAgICAg
ICBCWVRFICAgIGR1bW15OyAgICAgIA0KDQogICAgICAgICAgICBCWVRFICAgIHBhZFsyXTsNCiNs
aW5lIDEyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzY29tLmgiDQogICAgICAgIH0gc21wdGU7DQoNCiAg
ICAgICAgDQogICAgICAgIHN0cnVjdA0KICAgICAgICB7DQogICAgICAgICAgICBEV09SRCBzb25n
cHRycG9zOyAgIA0KICAgICAgICB9IG1pZGk7DQogICAgfSB1Ow0KfSBNTVRJTUUsICpQTU1USU1F
LCAgKk5QTU1USU1FLCAgKkxQTU1USU1FOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KIA0KIA0KIA0KI2xpbmUgMjAwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbW1zeXNjb20uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQojbGluZSAyMTMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxtbXN5c2NvbS5oIg0KDQoNCg0KI2xpbmUgMjE3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1z
eXNjb20uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
c3RydWN0IEhEUlZSX197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0cnVjdCBIRFJWUl9fICpIRFJW
UjsNCiNsaW5lIDI3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzY29tLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzY29tLmgi
DQp0eXBlZGVmIHZvaWQgKF9fc3RkY2FsbCBEUlZDQUxMQkFDSykoSERSVlIgaGRydnIsIFVJTlQg
dU1zZywgRFdPUkRfUFRSIGR3VXNlciwgRFdPUkRfUFRSIGR3MSwgRFdPUkRfUFRSIGR3Mik7DQoN
CnR5cGVkZWYgRFJWQ0FMTEJBQ0sgICpMUERSVkNBTExCQUNLOw0KDQp0eXBlZGVmIERSVkNBTExC
QUNLICAgICAqUERSVkNBTExCQUNLOw0KI2xpbmUgMzAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20u
aCINCg0KI2xpbmUgMzA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20uaCINCiNwcmFnbWEgZW5kcmVn
aW9uCQkJCQkJDQoNCg0KfSAgICAgICAgICAgCQkNCiNsaW5lIDMxMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1t
c3lzY29tLmgiDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHBvcCkNCg0KDQojbGluZSAzMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xpbmUgMzYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xp
bmUgMzEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20uaCINCg0KDQoNCg0KI2xpbmUgMzE4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1zeXNjb20uaCINCg0KI2xpbmUgMzIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20u
aCINCg0KDQoNCg0KI2xpbmUgMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbXN5c3RlbS5oIg0KDQoNCiNsaW5l
IDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazEuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQoj
cHJhZ21hIHBhY2socHVzaCwxKQ0KDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBh
Y2sxLmgiDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazEuaCINCiNsaW5l
IDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2sxLmgiDQojbGluZSAzOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1tc3lzdGVtLmgiDQoNCg0KDQoNCiNsaW5lIDQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXN0ZW0uaCIN
Cg0KDQpleHRlcm4gIkMiIHsgICAgICAgICAgICANCiNsaW5lIDQ3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1z
eXN0ZW0uaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20uaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFwaS5oIg0KDQoNCmV4dGVybiAiQyIg
ew0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBEV09SRCAgIE1DSUVSUk9S
OyAgICAgICANCiNsaW5lIDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQp0eXBlZGVm
IFVJTlQgICAgTUNJREVWSUNFSUQ7ICAgIA0KI2xpbmUgNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGku
aCINCg0KdHlwZWRlZiBVSU5UIChfX3N0ZGNhbGwgKllJRUxEUFJPQykoTUNJREVWSUNFSUQgbWNp
SWQsIERXT1JEIGR3WWllbGREYXRhKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpN
Q0lFUlJPUg0KX19zdGRjYWxsDQptY2lTZW5kQ29tbWFuZEEoDQogICAgICBNQ0lERVZJQ0VJRCBt
Y2lJZCwNCiAgICAgIFVJTlQgdU1zZywNCiAgICAgIERXT1JEX1BUUiBkd1BhcmFtMSwNCiAgICAg
IERXT1JEX1BUUiBkd1BhcmFtMg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTUNJ
RVJST1INCl9fc3RkY2FsbA0KbWNpU2VuZENvbW1hbmRXKA0KICAgICAgTUNJREVWSUNFSUQgbWNp
SWQsDQogICAgICBVSU5UIHVNc2csDQogICAgICBEV09SRF9QVFIgZHdQYXJhbTEsDQogICAgICBE
V09SRF9QVFIgZHdQYXJhbTINCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDc1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbWNpYXBpLmgiDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1DSUVSUk9SDQpfX3N0ZGNhbGwN
Cm1jaVNlbmRTdHJpbmdBKA0KICAgICAgTFBDU1RSIGxwc3RyQ29tbWFuZCwNCiAgICAgIExQU1RS
IGxwc3RyUmV0dXJuU3RyaW5nLA0KICAgICAgVUlOVCB1UmV0dXJuTGVuZ3RoLA0KICAgICAgSFdO
RCBod25kQ2FsbGJhY2sNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1DSUVSUk9S
DQpfX3N0ZGNhbGwNCm1jaVNlbmRTdHJpbmdXKA0KICAgICAgTFBDV1NUUiBscHN0ckNvbW1hbmQs
DQogICAgICBMUFdTVFIgbHBzdHJSZXR1cm5TdHJpbmcsDQogICAgICBVSU5UIHVSZXR1cm5MZW5n
dGgsDQogICAgICBIV05EIGh3bmRDYWxsYmFjaw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTAw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1DSURFVklD
RUlEDQpfX3N0ZGNhbGwNCm1jaUdldERldmljZUlEQSgNCiAgICAgIExQQ1NUUiBwc3pEZXZpY2UN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1DSURFVklDRUlEDQpfX3N0ZGNhbGwN
Cm1jaUdldERldmljZUlEVygNCiAgICAgIExQQ1dTVFIgcHN6RGV2aWNlDQogICAgKTsNCg0KDQoN
Cg0KDQojbGluZSAxMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KTUNJREVWSUNFSUQNCl9fc3RkY2FsbA0KbWNpR2V0RGV2aWNlSURGcm9tRWxlbWVudElE
QSgNCiAgICAgIERXT1JEIGR3RWxlbWVudElELA0KICAgICAgTFBDU1RSIGxwc3RyVHlwZQ0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTUNJREVWSUNFSUQNCl9fc3RkY2FsbA0KbWNp
R2V0RGV2aWNlSURGcm9tRWxlbWVudElEVygNCiAgICAgIERXT1JEIGR3RWxlbWVudElELA0KICAg
ICAgTFBDV1NUUiBscHN0clR5cGUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDE0MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG1jaWFwaS5oIg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwN
Cm1jaUdldEVycm9yU3RyaW5nQSgNCiAgICAgIE1DSUVSUk9SIG1jaWVyciwNCiAgICAgIExQU1RS
IHBzelRleHQsDQogICAgICBVSU5UIGNjaFRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KbWNpR2V0RXJyb3JTdHJpbmdXKA0KICAgICAgTUNJRVJS
T1IgbWNpZXJyLA0KICAgICAgTFBXU1RSIHBzelRleHQsDQogICAgICBVSU5UIGNjaFRleHQNCiAg
ICApOw0KDQoNCg0KDQoNCiNsaW5lIDE2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFwaS5oIg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQptY2lTZXRZaWVsZFByb2MoDQogICAgICBNQ0lERVZJ
Q0VJRCBtY2lJZCwNCiAgICAgIFlJRUxEUFJPQyBmcFlpZWxkUHJvYywNCiAgICAgIERXT1JEIGR3
WWllbGREYXRhDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSFRBU0sNCl9f
c3RkY2FsbA0KbWNpR2V0Q3JlYXRvclRhc2soDQogICAgICBNQ0lERVZJQ0VJRCBtY2lJZA0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KWUlFTERQUk9DDQpfX3N0ZGNhbGwNCm1jaUdl
dFlpZWxkUHJvYygNCiAgICAgIE1DSURFVklDRUlEIG1jaUlkLA0KICAgICAgTFBEV09SRCBwZHdZ
aWVsZERhdGENCiAgICApOw0KDQojbGluZSAxOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFwaS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9HRU5FUklDX1BBUk1TIHsNCiAgICBEV09SRF9QVFIg
ICBkd0NhbGxiYWNrOw0KfSBNQ0lfR0VORVJJQ19QQVJNUywgKlBNQ0lfR0VORVJJQ19QQVJNUywg
ICpMUE1DSV9HRU5FUklDX1BBUk1TOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9P
UEVOX1BBUk1TQSB7DQogICAgRFdPUkRfUFRSICAgZHdDYWxsYmFjazsNCiAgICBNQ0lERVZJQ0VJ
RCB3RGV2aWNlSUQ7DQogICAgTFBDU1RSICAgICBscHN0ckRldmljZVR5cGU7DQogICAgTFBDU1RS
ICAgICBscHN0ckVsZW1lbnROYW1lOw0KICAgIExQQ1NUUiAgICAgbHBzdHJBbGlhczsNCn0gTUNJ
X09QRU5fUEFSTVNBLCAqUE1DSV9PUEVOX1BBUk1TQSwgKkxQTUNJX09QRU5fUEFSTVNBOw0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnTUNJX09QRU5fUEFSTVNXIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxi
YWNrOw0KICAgIE1DSURFVklDRUlEIHdEZXZpY2VJRDsNCiAgICBMUENXU1RSICAgIGxwc3RyRGV2
aWNlVHlwZTsNCiAgICBMUENXU1RSICAgIGxwc3RyRWxlbWVudE5hbWU7DQogICAgTFBDV1NUUiAg
ICBscHN0ckFsaWFzOw0KfSBNQ0lfT1BFTl9QQVJNU1csICpQTUNJX09QRU5fUEFSTVNXLCAqTFBN
Q0lfT1BFTl9QQVJNU1c7DQoNCnR5cGVkZWYgTUNJX09QRU5fUEFSTVNXIE1DSV9PUEVOX1BBUk1T
Ow0KdHlwZWRlZiBQTUNJX09QRU5fUEFSTVNXIFBNQ0lfT1BFTl9QQVJNUzsNCnR5cGVkZWYgTFBN
Q0lfT1BFTl9QQVJNU1cgTFBNQ0lfT1BFTl9QQVJNUzsNCg0KDQoNCg0KI2xpbmUgNTI5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU0MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG1jaWFwaS5oIg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1BMQVlfUEFSTVMg
ew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgRFdPUkQgICAgICAgZHdGcm9tOw0K
ICAgIERXT1JEICAgICAgIGR3VG87DQp9IE1DSV9QTEFZX1BBUk1TLCAqUE1DSV9QTEFZX1BBUk1T
LCAgKkxQTUNJX1BMQVlfUEFSTVM7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfU0VFS19Q
QVJNUyB7DQogICAgRFdPUkRfUFRSICAgZHdDYWxsYmFjazsNCiAgICBEV09SRCAgICAgICBkd1Rv
Ow0KfSBNQ0lfU0VFS19QQVJNUywgKlBNQ0lfU0VFS19QQVJNUywgICpMUE1DSV9TRUVLX1BBUk1T
Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1NUQVRVU19QQVJNUyB7DQogICAgRFdPUkRf
UFRSICAgZHdDYWxsYmFjazsNCiAgICBEV09SRF9QVFIgICBkd1JldHVybjsNCiAgICBEV09SRCAg
ICAgICBkd0l0ZW07DQogICAgRFdPUkQgICAgICAgZHdUcmFjazsNCn0gTUNJX1NUQVRVU19QQVJN
UywgKlBNQ0lfU1RBVFVTX1BBUk1TLCAgKiBMUE1DSV9TVEFUVVNfUEFSTVM7DQoNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX0lORk9fUEFSTVNBIHsNCiAgICBEV09SRF9QVFIgZHdDYWxs
YmFjazsNCiAgICBMUFNUUiAgICAgbHBzdHJSZXR1cm47DQogICAgRFdPUkQgICAgIGR3UmV0U2l6
ZTsNCn0gTUNJX0lORk9fUEFSTVNBLCAqIExQTUNJX0lORk9fUEFSTVNBOw0KdHlwZWRlZiBzdHJ1
Y3QgdGFnTUNJX0lORk9fUEFSTVNXIHsNCiAgICBEV09SRF9QVFIgZHdDYWxsYmFjazsNCiAgICBM
UFdTVFIgICAgbHBzdHJSZXR1cm47DQogICAgRFdPUkQgICAgIGR3UmV0U2l6ZTsNCn0gTUNJX0lO
Rk9fUEFSTVNXLCAqIExQTUNJX0lORk9fUEFSTVNXOw0KDQp0eXBlZGVmIE1DSV9JTkZPX1BBUk1T
VyBNQ0lfSU5GT19QQVJNUzsNCnR5cGVkZWYgTFBNQ0lfSU5GT19QQVJNU1cgTFBNQ0lfSU5GT19Q
QVJNUzsNCg0KDQoNCiNsaW5lIDU4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFwaS5oIg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA1OTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ01DSV9HRVRERVZDQVBTX1BBUk1TIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxiYWNr
Ow0KICAgIERXT1JEICAgICAgIGR3UmV0dXJuOw0KICAgIERXT1JEICAgICAgIGR3SXRlbTsNCn0g
TUNJX0dFVERFVkNBUFNfUEFSTVMsICpQTUNJX0dFVERFVkNBUFNfUEFSTVMsICAqIExQTUNJX0dF
VERFVkNBUFNfUEFSTVM7DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1NZU0lORk9f
UEFSTVNBIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxiYWNrOw0KICAgIExQU1RSICAgICAgIGxw
c3RyUmV0dXJuOw0KICAgIERXT1JEICAgICAgIGR3UmV0U2l6ZTsNCiAgICBEV09SRCAgICAgICBk
d051bWJlcjsNCiAgICBVSU5UICAgICAgICB3RGV2aWNlVHlwZTsNCn0gTUNJX1NZU0lORk9fUEFS
TVNBLCAqUE1DSV9TWVNJTkZPX1BBUk1TQSwgKiBMUE1DSV9TWVNJTkZPX1BBUk1TQTsNCnR5cGVk
ZWYgc3RydWN0IHRhZ01DSV9TWVNJTkZPX1BBUk1TVyB7DQogICAgRFdPUkRfUFRSICAgZHdDYWxs
YmFjazsNCiAgICBMUFdTVFIgICAgICBscHN0clJldHVybjsNCiAgICBEV09SRCAgICAgICBkd1Jl
dFNpemU7DQogICAgRFdPUkQgICAgICAgZHdOdW1iZXI7DQogICAgVUlOVCAgICAgICAgd0Rldmlj
ZVR5cGU7DQp9IE1DSV9TWVNJTkZPX1BBUk1TVywgKlBNQ0lfU1lTSU5GT19QQVJNU1csICogTFBN
Q0lfU1lTSU5GT19QQVJNU1c7DQoNCnR5cGVkZWYgTUNJX1NZU0lORk9fUEFSTVNXIE1DSV9TWVNJ
TkZPX1BBUk1TOw0KdHlwZWRlZiBQTUNJX1NZU0lORk9fUEFSTVNXIFBNQ0lfU1lTSU5GT19QQVJN
UzsNCnR5cGVkZWYgTFBNQ0lfU1lTSU5GT19QQVJNU1cgTFBNQ0lfU1lTSU5GT19QQVJNUzsNCg0K
DQoNCg0KI2xpbmUgNjMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSA2NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ01DSV9TRVRfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgRFdP
UkQgICAgICAgZHdUaW1lRm9ybWF0Ow0KICAgIERXT1JEICAgICAgIGR3QXVkaW87DQp9IE1DSV9T
RVRfUEFSTVMsICpQTUNJX1NFVF9QQVJNUywgICpMUE1DSV9TRVRfUEFSTVM7DQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdNQ0lfQlJFQUtfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJh
Y2s7DQoNCiAgICBpbnQgICAgICAgICBuVmlydEtleTsNCiAgICBIV05EICAgICAgICBod25kQnJl
YWs7DQoNCg0KDQoNCg0KI2xpbmUgNjYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQp9IE1DSV9C
UkVBS19QQVJNUywgKlBNQ0lfQlJFQUtfUEFSTVMsICAqIExQTUNJX0JSRUFLX1BBUk1TOw0KDQoN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9TQVZFX1BBUk1TQSB7DQogICAgRFdPUkRfUFRS
ICAgIGR3Q2FsbGJhY2s7DQogICAgTFBDU1RSICAgICAgIGxwZmlsZW5hbWU7DQp9IE1DSV9TQVZF
X1BBUk1TQSwgKlBNQ0lfU0FWRV9QQVJNU0EsICogTFBNQ0lfU0FWRV9QQVJNU0E7DQp0eXBlZGVm
IHN0cnVjdCB0YWdNQ0lfU0FWRV9QQVJNU1cgew0KICAgIERXT1JEX1BUUiAgICBkd0NhbGxiYWNr
Ow0KICAgIExQQ1dTVFIgICAgICBscGZpbGVuYW1lOw0KfSBNQ0lfU0FWRV9QQVJNU1csICpQTUNJ
X1NBVkVfUEFSTVNXLCAqIExQTUNJX1NBVkVfUEFSTVNXOw0KDQp0eXBlZGVmIE1DSV9TQVZFX1BB
Uk1TVyBNQ0lfU0FWRV9QQVJNUzsNCnR5cGVkZWYgUE1DSV9TQVZFX1BBUk1TVyBQTUNJX1NBVkVf
UEFSTVM7DQp0eXBlZGVmIExQTUNJX1NBVkVfUEFSTVNXIExQTUNJX1NBVkVfUEFSTVM7DQoNCg0K
DQoNCiNsaW5lIDY4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFwaS5oIg0KDQoNCg0KDQoNCg0KI2xpbmUg
NjkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
TUNJX0xPQURfUEFSTVNBIHsNCiAgICBEV09SRF9QVFIgICAgZHdDYWxsYmFjazsNCiAgICBMUENT
VFIgICAgICAgbHBmaWxlbmFtZTsNCn0gTUNJX0xPQURfUEFSTVNBLCAqUE1DSV9MT0FEX1BBUk1T
QSwgKiBMUE1DSV9MT0FEX1BBUk1TQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9MT0FEX1BBUk1T
VyB7DQogICAgRFdPUkRfUFRSICAgIGR3Q2FsbGJhY2s7DQogICAgTFBDV1NUUiAgICAgIGxwZmls
ZW5hbWU7DQp9IE1DSV9MT0FEX1BBUk1TVywgKlBNQ0lfTE9BRF9QQVJNU1csICogTFBNQ0lfTE9B
RF9QQVJNU1c7DQoNCnR5cGVkZWYgTUNJX0xPQURfUEFSTVNXIE1DSV9MT0FEX1BBUk1TOw0KdHlw
ZWRlZiBQTUNJX0xPQURfUEFSTVNXIFBNQ0lfTE9BRF9QQVJNUzsNCnR5cGVkZWYgTFBNQ0lfTE9B
RF9QQVJNU1cgTFBNQ0lfTE9BRF9QQVJNUzsNCg0KDQoNCg0KI2xpbmUgNzE0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KDQojbGluZSA3MjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGku
aCINCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9SRUNPUkRfUEFSTVMgew0KICAgIERXT1JE
X1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgRFdPUkQgICAgICAgZHdGcm9tOw0KICAgIERXT1JEICAg
ICAgIGR3VG87DQp9IE1DSV9SRUNPUkRfUEFSTVMsICAqTFBNQ0lfUkVDT1JEX1BBUk1TOw0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnTUNJX1ZEX1BMQVlfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7
DQogICAgRFdPUkQgICAgICAgZHdGcm9tOw0KICAgIERXT1JEICAgICAgIGR3VG87DQogICAgRFdP
UkQgICAgICAgZHdTcGVlZDsNCn0gTUNJX1ZEX1BMQVlfUEFSTVMsICpQTUNJX1ZEX1BMQVlfUEFS
TVMsICAqTFBNQ0lfVkRfUExBWV9QQVJNUzsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9W
RF9TVEVQX1BBUk1TIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxiYWNrOw0KICAgIERXT1JEICAg
ICAgIGR3RnJhbWVzOw0KfSBNQ0lfVkRfU1RFUF9QQVJNUywgKlBNQ0lfVkRfU1RFUF9QQVJNUywg
ICpMUE1DSV9WRF9TVEVQX1BBUk1TOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9W
RF9FU0NBUEVfUEFSTVNBIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxiYWNrOw0KICAgIExQQ1NU
UiAgICAgIGxwc3RyQ29tbWFuZDsNCn0gTUNJX1ZEX0VTQ0FQRV9QQVJNU0EsICpQTUNJX1ZEX0VT
Q0FQRV9QQVJNU0EsICpMUE1DSV9WRF9FU0NBUEVfUEFSTVNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFn
TUNJX1ZEX0VTQ0FQRV9QQVJNU1cgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAg
TFBDV1NUUiAgICAgbHBzdHJDb21tYW5kOw0KfSBNQ0lfVkRfRVNDQVBFX1BBUk1TVywgKlBNQ0lf
VkRfRVNDQVBFX1BBUk1TVywgKkxQTUNJX1ZEX0VTQ0FQRV9QQVJNU1c7DQoNCnR5cGVkZWYgTUNJ
X1ZEX0VTQ0FQRV9QQVJNU1cgTUNJX1ZEX0VTQ0FQRV9QQVJNUzsNCnR5cGVkZWYgUE1DSV9WRF9F
U0NBUEVfUEFSTVNXIFBNQ0lfVkRfRVNDQVBFX1BBUk1TOw0KdHlwZWRlZiBMUE1DSV9WRF9FU0NB
UEVfUEFSTVNXIExQTUNJX1ZEX0VTQ0FQRV9QQVJNUzsNCg0KDQoNCg0KI2xpbmUgODE4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KDQojbGluZSA4MjUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
Y2lhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX1dBVkVfT1BFTl9QQVJNU0Egew0KICAgIERXT1JEX1BUUiAg
IGR3Q2FsbGJhY2s7DQogICAgTUNJREVWSUNFSUQgd0RldmljZUlEOw0KICAgIExQQ1NUUiAgICAg
bHBzdHJEZXZpY2VUeXBlOw0KICAgIExQQ1NUUiAgICAgbHBzdHJFbGVtZW50TmFtZTsNCiAgICBM
UENTVFIgICAgIGxwc3RyQWxpYXM7DQogICAgRFdPUkQgICBkd0J1ZmZlclNlY29uZHM7DQp9IE1D
SV9XQVZFX09QRU5fUEFSTVNBLCAqUE1DSV9XQVZFX09QRU5fUEFSTVNBLCAqTFBNQ0lfV0FWRV9P
UEVOX1BBUk1TQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9XQVZFX09QRU5fUEFSTVNXIHsNCiAg
ICBEV09SRF9QVFIgICBkd0NhbGxiYWNrOw0KICAgIE1DSURFVklDRUlEIHdEZXZpY2VJRDsNCiAg
ICBMUENXU1RSICAgIGxwc3RyRGV2aWNlVHlwZTsNCiAgICBMUENXU1RSICAgIGxwc3RyRWxlbWVu
dE5hbWU7DQogICAgTFBDV1NUUiAgICBscHN0ckFsaWFzOw0KICAgIERXT1JEICAgZHdCdWZmZXJT
ZWNvbmRzOw0KfSBNQ0lfV0FWRV9PUEVOX1BBUk1TVywgKlBNQ0lfV0FWRV9PUEVOX1BBUk1TVywg
KkxQTUNJX1dBVkVfT1BFTl9QQVJNU1c7DQoNCnR5cGVkZWYgTUNJX1dBVkVfT1BFTl9QQVJNU1cg
TUNJX1dBVkVfT1BFTl9QQVJNUzsNCnR5cGVkZWYgUE1DSV9XQVZFX09QRU5fUEFSTVNXIFBNQ0lf
V0FWRV9PUEVOX1BBUk1TOw0KdHlwZWRlZiBMUE1DSV9XQVZFX09QRU5fUEFSTVNXIExQTUNJX1dB
VkVfT1BFTl9QQVJNUzsNCg0KDQoNCg0KI2xpbmUgOTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgi
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfV0FWRV9ERUxFVEVfUEFSTVMgew0KICAgIERX
T1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgRFdPUkQgICAgICAgZHdGcm9tOw0KICAgIERXT1JE
ICAgICAgIGR3VG87DQp9IE1DSV9XQVZFX0RFTEVURV9QQVJNUywgKlBNQ0lfV0FWRV9ERUxFVEVf
UEFSTVMsICAqTFBNQ0lfV0FWRV9ERUxFVEVfUEFSTVM7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdNQ0lfV0FWRV9TRVRfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAg
RFdPUkQgICAgICAgZHdUaW1lRm9ybWF0Ow0KICAgIERXT1JEICAgICAgIGR3QXVkaW87DQoNCiAg
ICBVSU5UICAgIHdJbnB1dDsNCiAgICBVSU5UICAgIHdPdXRwdXQ7DQoNCg0KDQoNCg0KI2xpbmUg
OTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQogICAgV09SRCAgICB3Rm9ybWF0VGFnOw0KICAg
IFdPUkQgICAgd1Jlc2VydmVkMjsNCiAgICBXT1JEICAgIG5DaGFubmVsczsNCiAgICBXT1JEICAg
IHdSZXNlcnZlZDM7DQogICAgRFdPUkQgICBuU2FtcGxlc1BlclNlYzsNCiAgICBEV09SRCAgIG5B
dmdCeXRlc1BlclNlYzsNCiAgICBXT1JEICAgIG5CbG9ja0FsaWduOw0KICAgIFdPUkQgICAgd1Jl
c2VydmVkNDsNCiAgICBXT1JEICAgIHdCaXRzUGVyU2FtcGxlOw0KICAgIFdPUkQgICAgd1Jlc2Vy
dmVkNTsNCn0gTUNJX1dBVkVfU0VUX1BBUk1TLCAqUE1DSV9XQVZFX1NFVF9QQVJNUywgICogTFBN
Q0lfV0FWRV9TRVRfUEFSTVM7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdNQ0lfU0VRX1NFVF9QQVJNUyB7DQogICAgRFdPUkRfUFRSICAgZHdDYWxsYmFjazsNCiAgICBE
V09SRCAgICAgICBkd1RpbWVGb3JtYXQ7DQogICAgRFdPUkQgICAgICAgZHdBdWRpbzsNCiAgICBE
V09SRCAgICAgICBkd1RlbXBvOw0KICAgIERXT1JEICAgICAgIGR3UG9ydDsNCiAgICBEV09SRCAg
ICAgICBkd1NsYXZlOw0KICAgIERXT1JEICAgICAgIGR3TWFzdGVyOw0KICAgIERXT1JEICAgICAg
IGR3T2Zmc2V0Ow0KfSBNQ0lfU0VRX1NFVF9QQVJNUywgKlBNQ0lfU0VRX1NFVF9QQVJNUywgICog
TFBNQ0lfU0VRX1NFVF9QQVJNUzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ01DSV9BTklNX09QRU5fUEFSTVNBIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxiYWNr
Ow0KICAgIE1DSURFVklDRUlEIHdEZXZpY2VJRDsNCiAgICBMUENTVFIgICAgICBscHN0ckRldmlj
ZVR5cGU7DQogICAgTFBDU1RSICAgICAgbHBzdHJFbGVtZW50TmFtZTsNCiAgICBMUENTVFIgICAg
ICBscHN0ckFsaWFzOw0KICAgIERXT1JEICAgZHdTdHlsZTsNCiAgICBIV05EICAgIGhXbmRQYXJl
bnQ7DQp9IE1DSV9BTklNX09QRU5fUEFSTVNBLCAqUE1DSV9BTklNX09QRU5fUEFSTVNBLCAqTFBN
Q0lfQU5JTV9PUEVOX1BBUk1TQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9BTklNX09QRU5fUEFS
TVNXIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxiYWNrOw0KICAgIE1DSURFVklDRUlEIHdEZXZp
Y2VJRDsNCiAgICBMUENXU1RSICAgICBscHN0ckRldmljZVR5cGU7DQogICAgTFBDV1NUUiAgICAg
bHBzdHJFbGVtZW50TmFtZTsNCiAgICBMUENXU1RSICAgICBscHN0ckFsaWFzOw0KICAgIERXT1JE
ICAgZHdTdHlsZTsNCiAgICBIV05EICAgIGhXbmRQYXJlbnQ7DQp9IE1DSV9BTklNX09QRU5fUEFS
TVNXLCAqUE1DSV9BTklNX09QRU5fUEFSTVNXLCAqTFBNQ0lfQU5JTV9PUEVOX1BBUk1TVzsNCg0K
dHlwZWRlZiBNQ0lfQU5JTV9PUEVOX1BBUk1TVyBNQ0lfQU5JTV9PUEVOX1BBUk1TOw0KdHlwZWRl
ZiBQTUNJX0FOSU1fT1BFTl9QQVJNU1cgUE1DSV9BTklNX09QRU5fUEFSTVM7DQp0eXBlZGVmIExQ
TUNJX0FOSU1fT1BFTl9QQVJNU1cgTFBNQ0lfQU5JTV9PUEVOX1BBUk1TOw0KDQoNCg0KDQojbGlu
ZSAxMDk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDExMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ01DSV9BTklNX1BMQVlfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQog
ICAgRFdPUkQgICAgICAgZHdGcm9tOw0KICAgIERXT1JEICAgICAgIGR3VG87DQogICAgRFdPUkQg
ICAgICAgZHdTcGVlZDsNCn0gTUNJX0FOSU1fUExBWV9QQVJNUywgKlBNQ0lfQU5JTV9QTEFZX1BB
Uk1TLCAgKkxQTUNJX0FOSU1fUExBWV9QQVJNUzsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01D
SV9BTklNX1NURVBfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgRFdP
UkQgICAgICAgZHdGcmFtZXM7DQp9IE1DSV9BTklNX1NURVBfUEFSTVMsICpQTUNJX0FOSU1fU1RF
UF9QQVJNUywgICpMUE1DSV9BTklNX1NURVBfUEFSTVM7DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgdGFnTUNJX0FOSU1fV0lORE9XX1BBUk1TQSB7DQogICAgRFdPUkRfUFRSICAgZHdDYWxsYmFj
azsNCiAgICBIV05EICAgICAgICBoV25kOw0KICAgIFVJTlQgICAgICAgIG5DbWRTaG93Ow0KICAg
IExQQ1NUUiAgICAgbHBzdHJUZXh0Ow0KfSBNQ0lfQU5JTV9XSU5ET1dfUEFSTVNBLCAqUE1DSV9B
TklNX1dJTkRPV19QQVJNU0EsICogTFBNQ0lfQU5JTV9XSU5ET1dfUEFSTVNBOw0KdHlwZWRlZiBz
dHJ1Y3QgdGFnTUNJX0FOSU1fV0lORE9XX1BBUk1TVyB7DQogICAgRFdPUkRfUFRSICAgZHdDYWxs
YmFjazsNCiAgICBIV05EICAgICAgICBoV25kOw0KICAgIFVJTlQgICAgICAgIG5DbWRTaG93Ow0K
ICAgIExQQ1dTVFIgICAgbHBzdHJUZXh0Ow0KfSBNQ0lfQU5JTV9XSU5ET1dfUEFSTVNXLCAqUE1D
SV9BTklNX1dJTkRPV19QQVJNU1csICogTFBNQ0lfQU5JTV9XSU5ET1dfUEFSTVNXOw0KDQp0eXBl
ZGVmIE1DSV9BTklNX1dJTkRPV19QQVJNU1cgTUNJX0FOSU1fV0lORE9XX1BBUk1TOw0KdHlwZWRl
ZiBQTUNJX0FOSU1fV0lORE9XX1BBUk1TVyBQTUNJX0FOSU1fV0lORE9XX1BBUk1TOw0KdHlwZWRl
ZiBMUE1DSV9BTklNX1dJTkRPV19QQVJNU1cgTFBNQ0lfQU5JTV9XSU5ET1dfUEFSTVM7DQoNCg0K
DQoNCiNsaW5lIDExNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTE2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFwaS5oIg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgdGFnTUNJX0FOSU1fUkVDVF9QQVJNUyB7DQogICAgRFdPUkRfUFRSICAgZHdDYWxsYmFjazsN
Cg0KDQoNCg0KICAgIFJFQ1QgICAgcmM7DQojbGluZSAxMTcyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBp
LmgiDQp9IE1DSV9BTklNX1JFQ1RfUEFSTVM7DQp0eXBlZGVmIE1DSV9BTklNX1JFQ1RfUEFSTVMg
KiBQTUNJX0FOSU1fUkVDVF9QQVJNUzsNCnR5cGVkZWYgTUNJX0FOSU1fUkVDVF9QQVJNUyAgKiBM
UE1DSV9BTklNX1JFQ1RfUEFSTVM7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfQU5JTV9V
UERBVEVfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgUkVDVCAgICAg
ICAgcmM7DQogICAgSERDICAgICAgICAgaERDOw0KfSBNQ0lfQU5JTV9VUERBVEVfUEFSTVMsICpQ
TUNJX0FOSU1fVVBEQVRFX1BBUk1TLCAgKiBMUE1DSV9BTklNX1VQREFURV9QQVJNUzsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX09WTFlf
T1BFTl9QQVJNU0Egew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgTUNJREVWSUNF
SUQgd0RldmljZUlEOw0KICAgIExQQ1NUUiAgICAgIGxwc3RyRGV2aWNlVHlwZTsNCiAgICBMUENT
VFIgICAgICBscHN0ckVsZW1lbnROYW1lOw0KICAgIExQQ1NUUiAgICAgIGxwc3RyQWxpYXM7DQog
ICAgRFdPUkQgICBkd1N0eWxlOw0KICAgIEhXTkQgICAgaFduZFBhcmVudDsNCn0gTUNJX09WTFlf
T1BFTl9QQVJNU0EsICpQTUNJX09WTFlfT1BFTl9QQVJNU0EsICpMUE1DSV9PVkxZX09QRU5fUEFS
TVNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX09WTFlfT1BFTl9QQVJNU1cgew0KICAgIERXT1JE
X1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgTUNJREVWSUNFSUQgd0RldmljZUlEOw0KICAgIExQQ1dT
VFIgICAgIGxwc3RyRGV2aWNlVHlwZTsNCiAgICBMUENXU1RSICAgICBscHN0ckVsZW1lbnROYW1l
Ow0KICAgIExQQ1dTVFIgICAgIGxwc3RyQWxpYXM7DQogICAgRFdPUkQgICBkd1N0eWxlOw0KICAg
IEhXTkQgICAgaFduZFBhcmVudDsNCn0gTUNJX09WTFlfT1BFTl9QQVJNU1csICpQTUNJX09WTFlf
T1BFTl9QQVJNU1csICpMUE1DSV9PVkxZX09QRU5fUEFSTVNXOw0KDQp0eXBlZGVmIE1DSV9PVkxZ
X09QRU5fUEFSTVNXIE1DSV9PVkxZX09QRU5fUEFSTVM7DQp0eXBlZGVmIFBNQ0lfT1ZMWV9PUEVO
X1BBUk1TVyBQTUNJX09WTFlfT1BFTl9QQVJNUzsNCnR5cGVkZWYgTFBNQ0lfT1ZMWV9PUEVOX1BB
Uk1TVyBMUE1DSV9PVkxZX09QRU5fUEFSTVM7DQoNCg0KDQoNCiNsaW5lIDEyNTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtY2lhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI3MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1jaWFwaS5oIg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9PVkxZ
X1dJTkRPV19QQVJNU0Egew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgSFdORCAg
ICAgICAgaFduZDsNCiAgICBVSU5UICAgICAgICBuQ21kU2hvdzsNCiAgICBMUENTVFIgICAgICBs
cHN0clRleHQ7DQp9IE1DSV9PVkxZX1dJTkRPV19QQVJNU0EsICpQTUNJX09WTFlfV0lORE9XX1BB
Uk1TQSwgKiBMUE1DSV9PVkxZX1dJTkRPV19QQVJNU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lf
T1ZMWV9XSU5ET1dfUEFSTVNXIHsNCiAgICBEV09SRF9QVFIgICBkd0NhbGxiYWNrOw0KICAgIEhX
TkQgICAgICAgIGhXbmQ7DQogICAgVUlOVCAgICAgICAgbkNtZFNob3c7DQogICAgTFBDV1NUUiAg
ICAgbHBzdHJUZXh0Ow0KfSBNQ0lfT1ZMWV9XSU5ET1dfUEFSTVNXLCAqUE1DSV9PVkxZX1dJTkRP
V19QQVJNU1csICogTFBNQ0lfT1ZMWV9XSU5ET1dfUEFSTVNXOw0KDQp0eXBlZGVmIE1DSV9PVkxZ
X1dJTkRPV19QQVJNU1cgTUNJX09WTFlfV0lORE9XX1BBUk1TOw0KdHlwZWRlZiBQTUNJX09WTFlf
V0lORE9XX1BBUk1TVyBQTUNJX09WTFlfV0lORE9XX1BBUk1TOw0KdHlwZWRlZiBMUE1DSV9PVkxZ
X1dJTkRPV19QQVJNU1cgTFBNQ0lfT1ZMWV9XSU5ET1dfUEFSTVM7DQoNCg0KDQoNCiNsaW5lIDEy
OTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMDYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01DSV9PVkxZ
X1JFQ1RfUEFSTVMgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQoNCg0KDQoNCiAgICBS
RUNUICAgIHJjOw0KI2xpbmUgMTMxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFwaS5oIg0KfSBNQ0lfT1ZM
WV9SRUNUX1BBUk1TLCAqUE1DSV9PVkxZX1JFQ1RfUEFSTVMsICAqIExQTUNJX09WTFlfUkVDVF9Q
QVJNUzsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNQ0lfT1ZMWV9TQVZFX1BBUk1TQSB7
DQogICAgRFdPUkRfUFRSICAgZHdDYWxsYmFjazsNCiAgICBMUENTVFIgICAgICBscGZpbGVuYW1l
Ow0KICAgIFJFQ1QgICAgICAgIHJjOw0KfSBNQ0lfT1ZMWV9TQVZFX1BBUk1TQSwgKlBNQ0lfT1ZM
WV9TQVZFX1BBUk1TQSwgKiBMUE1DSV9PVkxZX1NBVkVfUEFSTVNBOw0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnTUNJX09WTFlfU0FWRV9QQVJNU1cgew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQog
ICAgTFBDV1NUUiAgICAgbHBmaWxlbmFtZTsNCiAgICBSRUNUICAgICAgICByYzsNCn0gTUNJX09W
TFlfU0FWRV9QQVJNU1csICpQTUNJX09WTFlfU0FWRV9QQVJNU1csICogTFBNQ0lfT1ZMWV9TQVZF
X1BBUk1TVzsNCg0KdHlwZWRlZiBNQ0lfT1ZMWV9TQVZFX1BBUk1TVyBNQ0lfT1ZMWV9TQVZFX1BB
Uk1TOw0KdHlwZWRlZiBQTUNJX09WTFlfU0FWRV9QQVJNU1cgUE1DSV9PVkxZX1NBVkVfUEFSTVM7
DQp0eXBlZGVmIExQTUNJX09WTFlfU0FWRV9QQVJNU1cgTFBNQ0lfT1ZMWV9TQVZFX1BBUk1TOw0K
DQoNCg0KDQojbGluZSAxMzQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KDQoj
bGluZSAxMzQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWNpYXBpLmgiDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgdGFnTUNJX09WTFlfTE9BRF9QQVJNU0Egew0KICAgIERXT1JEX1BUUiAgIGR3Q2FsbGJhY2s7
DQogICAgTFBDU1RSICAgICAgbHBmaWxlbmFtZTsNCiAgICBSRUNUICAgIHJjOw0KfSBNQ0lfT1ZM
WV9MT0FEX1BBUk1TQSwgKlBNQ0lfT1ZMWV9MT0FEX1BBUk1TQSwgKiBMUE1DSV9PVkxZX0xPQURf
UEFSTVNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUNJX09WTFlfTE9BRF9QQVJNU1cgew0KICAgIERX
T1JEX1BUUiAgIGR3Q2FsbGJhY2s7DQogICAgTFBDV1NUUiAgICAgbHBmaWxlbmFtZTsNCiAgICBS
RUNUICAgIHJjOw0KfSBNQ0lfT1ZMWV9MT0FEX1BBUk1TVywgKlBNQ0lfT1ZMWV9MT0FEX1BBUk1T
VywgKiBMUE1DSV9PVkxZX0xPQURfUEFSTVNXOw0KDQp0eXBlZGVmIE1DSV9PVkxZX0xPQURfUEFS
TVNXIE1DSV9PVkxZX0xPQURfUEFSTVM7DQp0eXBlZGVmIFBNQ0lfT1ZMWV9MT0FEX1BBUk1TVyBQ
TUNJX09WTFlfTE9BRF9QQVJNUzsNCnR5cGVkZWYgTFBNQ0lfT1ZMWV9MT0FEX1BBUk1TVyBMUE1D
SV9PVkxZX0xPQURfUEFSTVM7DQoNCg0KDQoNCiNsaW5lIDEzNzMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lh
cGkuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDEzODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0K
DQoNCg0KRFdPUkRfUFRSDQpfX3N0ZGNhbGwNCm1jaUdldERyaXZlckRhdGEoDQogICAgTUNJREVW
SUNFSUQgd0RldmljZUlEDQogICAgKTsNCg0KVUlOVA0KX19zdGRjYWxsDQptY2lMb2FkQ29tbWFu
ZFJlc291cmNlKA0KICAgIEhBTkRMRSBoSW5zdGFuY2UsDQogICAgTFBDV1NUUiBscFJlc05hbWUs
DQogICAgVUlOVCB3VHlwZQ0KICAgICk7DQoNCkJPT0wNCl9fc3RkY2FsbA0KbWNpU2V0RHJpdmVy
RGF0YSgNCiAgICBNQ0lERVZJQ0VJRCB3RGV2aWNlSUQsDQogICAgRFdPUkRfUFRSIGR3RGF0YQ0K
ICAgICk7DQoNClVJTlQNCl9fc3RkY2FsbA0KbWNpRHJpdmVyWWllbGQoDQogICAgTUNJREVWSUNF
SUQgd0RldmljZUlEDQogICAgKTsNCg0KQk9PTA0KX19zdGRjYWxsDQptY2lEcml2ZXJOb3RpZnko
DQogICAgSEFORExFIGh3bmRDYWxsYmFjaywNCiAgICBNQ0lERVZJQ0VJRCB3RGV2aWNlSUQsDQog
ICAgVUlOVCB1U3RhdHVzDQogICAgKTsNCg0KQk9PTA0KX19zdGRjYWxsDQptY2lGcmVlQ29tbWFu
ZFJlc291cmNlKA0KICAgIFVJTlQgd1RhYmxlDQogICAgKTsNCg0KDQojbGluZSAxNDI3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbWNpYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDE0MzIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxtY2lhcGkuaCINCg0KI2xpbmUgMTQzNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jaWFw
aS5oIg0KDQoNCiNsaW5lIDYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXN0ZW0uaCINCg0KI2xpbmUgNjQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxtbXN5c3RlbS5oIg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWlz
Y2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG1taXNjYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1tc3lzY29tLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
bWlzY2FwaS5oIg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWlz
Y2FwaS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgRFJWQ09ORklHSU5GT0VYIHsNCiAgICBEV09SRCAgIGR3
RENJU2l6ZTsNCiAgICBMUENXU1RSICBscHN6RENJU2VjdGlvbk5hbWU7DQogICAgTFBDV1NUUiAg
bHBzekRDSUFsaWFzTmFtZTsNCiAgICBEV09SRCAgICBkbkRldk5vZGU7DQp9IERSVkNPTkZJR0lO
Rk9FWCwgKlBEUlZDT05GSUdJTkZPRVgsICAqTlBEUlZDT05GSUdJTkZPRVgsICAqTFBEUlZDT05G
SUdJTkZPRVg7DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWlzY2Fw
aS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IHRhZ0RSVkNPTkZJR0lORk8gew0KICAgIERXT1JEICAgZHdEQ0lTaXplOw0KICAg
IExQQ1dTVFIgIGxwc3pEQ0lTZWN0aW9uTmFtZTsNCiAgICBMUENXU1RSICBscHN6RENJQWxpYXNO
YW1lOw0KfSBEUlZDT05GSUdJTkZPLCAqUERSVkNPTkZJR0lORk8sICAqTlBEUlZDT05GSUdJTkZP
LCAgKkxQRFJWQ09ORklHSU5GTzsNCg0KDQoNCg0KDQoNCiNsaW5lIDg5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bW1pc2NhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgTFJFU1VMVCAoX19zdGRjYWxs
KiBEUklWRVJQUk9DKShEV09SRF9QVFIsIEhEUlZSLCBVSU5ULCBMUEFSQU0sIExQQVJBTSk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFJFU1VMVA0KX19zdGRjYWxsDQpDbG9zZURyaXZlcigN
CiAgICAgIEhEUlZSIGhEcml2ZXIsDQogICAgICBMUEFSQU0gbFBhcmFtMSwNCiAgICAgIExQQVJB
TSBsUGFyYW0yDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpIRFJWUg0KX19zdGRj
YWxsDQpPcGVuRHJpdmVyKA0KICAgICAgTFBDV1NUUiBzekRyaXZlck5hbWUsDQogICAgICBMUENX
U1RSIHN6U2VjdGlvbk5hbWUsDQogICAgICBMUEFSQU0gbFBhcmFtMg0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KTFJFU1VMVA0KX19zdGRjYWxsDQpTZW5kRHJpdmVyTWVzc2FnZSgN
CiAgICAgIEhEUlZSIGhEcml2ZXIsDQogICAgICBVSU5UIG1lc3NhZ2UsDQogICAgICBMUEFSQU0g
bFBhcmFtMSwNCiAgICAgIExQQVJBTSBsUGFyYW0yDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpITU9EVUxFDQpfX3N0ZGNhbGwNCkRydkdldE1vZHVsZUhhbmRsZSgNCiAgICAgIEhE
UlZSIGhEcml2ZXINCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkhNT0RVTEUNCl9f
c3RkY2FsbA0KR2V0RHJpdmVyTW9kdWxlSGFuZGxlKA0KICAgICAgSERSVlIgaERyaXZlcg0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFJFU1VMVA0KX19zdGRjYWxsDQpEZWZEcml2
ZXJQcm9jKA0KICAgICAgRFdPUkRfUFRSIGR3RHJpdmVySWRlbnRpZmllciwNCiAgICAgIEhEUlZS
IGhkcnZyLA0KICAgICAgVUlOVCB1TXNnLA0KICAgICAgTFBBUkFNIGxQYXJhbTEsDQogICAgICBM
UEFSQU0gbFBhcmFtMg0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTYxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbW1pc2NhcGkuaCINCiNsaW5lIDE2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1taXNjYXBpLmgiDQoj
bGluZSAxNjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWlzY2FwaS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
NzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtbWlzY2FwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KQk9PTA0KX19z
dGRjYWxsDQpEcml2ZXJDYWxsYmFjaygNCiAgICBEV09SRF9QVFIgZHdDYWxsYmFjaywNCiAgICBE
V09SRCBkd0ZsYWdzLA0KICAgIEhEUlZSIGhEZXZpY2UsDQogICAgRFdPUkQgZHdNc2csDQogICAg
RFdPUkRfUFRSIGR3VXNlciwNCiAgICBEV09SRF9QVFIgZHdQYXJhbTEsDQogICAgRFdPUkRfUFRS
IGR3UGFyYW0yDQogICAgKTsNCg0KDQoNCg0KDQoNCkxPTkcNCl9fc3RkY2FsbA0Kc25kT3BlblNv
dW5kKA0KICAgICAgTFBDV1NUUiBFdmVudE5hbWUsDQogICAgICBMUENXU1RSIEFwcE5hbWUsDQog
ICAgICBJTlQzMiBGbGFncywNCiAgICAgUEhBTkRMRSBGaWxlSGFuZGxlDQogICAgKTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIERXT1JEIChfX3N0ZGNhbGwgKkRSSVZFUk1T
R1BST0MpKERXT1JELCBEV09SRCwgRFdPUkRfUFRSLCBEV09SRF9QVFIsIERXT1JEX1BUUik7DQoN
ClVJTlQNCl9fc3RkY2FsbA0KbW1EcnZJbnN0YWxsKA0KICAgIEhEUlZSIGhEcml2ZXIsDQogICAg
TFBDV1NUUiB3c3pEcnZFbnRyeSwNCiAgICBEUklWRVJNU0dQUk9DIGRydk1lc3NhZ2UsDQogICAg
VUlOVCB3RmxhZ3MNCiAgICApOw0KDQoNCiNsaW5lIDIzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1taXNjYXBp
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBEV09SRCAgICAgICAgICAgRk9VUkNDOyAgICAgICAgIA0KdHlw
ZWRlZiBjaGFyICAqICAgIEhQU1RSOyAgICAgICAgICANCnN0cnVjdCBITU1JT19fe2ludCB1bnVz
ZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSE1NSU9fXyAqSE1NSU87ICAgICAgICAgICAgICAgICAgDQp0
eXBlZGVmIExSRVNVTFQgKF9fc3RkY2FsbCBNTUlPUFJPQykoTFBTVFIgbHBtbWlvaW5mbywgVUlO
VCB1TXNnLA0KICAgICAgICAgICAgTFBBUkFNIGxQYXJhbTEsIExQQVJBTSBsUGFyYW0yKTsNCnR5
cGVkZWYgTU1JT1BST0MgICpMUE1NSU9QUk9DOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX01NSU9J
TkZPDQp7DQogICAgICAgIA0KICAgICAgICBEV09SRCAgICAgICAgICAgZHdGbGFnczsgICAgICAg
IA0KICAgICAgICBGT1VSQ0MgICAgICAgICAgZmNjSU9Qcm9jOyAgICAgIA0KICAgICAgICBMUE1N
SU9QUk9DICAgICAgcElPUHJvYzsgICAgICAgIA0KICAgICAgICBVSU5UICAgICAgICAgICAgd0Vy
cm9yUmV0OyAgICAgIA0KICAgICAgICBIVEFTSyAgICAgICAgICAgaHRhc2s7ICAgICAgICAgIA0K
DQogICAgICAgIA0KICAgICAgICBMT05HICAgICAgICAgICAgY2NoQnVmZmVyOyAgICAgIA0KICAg
ICAgICBIUFNUUiAgICAgICAgICAgcGNoQnVmZmVyOyAgICAgIA0KICAgICAgICBIUFNUUiAgICAg
ICAgICAgcGNoTmV4dDsgICAgICAgIA0KICAgICAgICBIUFNUUiAgICAgICAgICAgcGNoRW5kUmVh
ZDsgICAgIA0KICAgICAgICBIUFNUUiAgICAgICAgICAgcGNoRW5kV3JpdGU7ICAgIA0KICAgICAg
ICBMT05HICAgICAgICAgICAgbEJ1Zk9mZnNldDsgICAgIA0KDQogICAgICAgIA0KICAgICAgICBM
T05HICAgICAgICAgICAgbERpc2tPZmZzZXQ7ICAgIA0KICAgICAgICBEV09SRCAgICAgICAgICAg
YWR3SW5mb1szXTsgICAgIA0KDQogICAgICAgIA0KICAgICAgICBEV09SRCAgICAgICAgICAgZHdS
ZXNlcnZlZDE7ICAgIA0KICAgICAgICBEV09SRCAgICAgICAgICAgZHdSZXNlcnZlZDI7ICAgIA0K
ICAgICAgICBITU1JTyAgICAgICAgICAgaG1taW87ICAgICAgICAgIA0KfSBNTUlPSU5GTywgKlBN
TUlPSU5GTywgICpOUE1NSU9JTkZPLCAgKkxQTU1JT0lORk87DQp0eXBlZGVmIGNvbnN0IE1NSU9J
TkZPICAqTFBDTU1JT0lORk87DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX01NQ0tJTkZPDQp7DQogICAg
ICAgIEZPVVJDQyAgICAgICAgICBja2lkOyAgICAgICAgICAgDQogICAgICAgIERXT1JEICAgICAg
ICAgICBja3NpemU7ICAgICAgICAgDQogICAgICAgIEZPVVJDQyAgICAgICAgICBmY2NUeXBlOyAg
ICAgICAgDQogICAgICAgIERXT1JEICAgICAgICAgICBkd0RhdGFPZmZzZXQ7ICAgDQogICAgICAg
IERXT1JEICAgICAgICAgICBkd0ZsYWdzOyAgICAgICAgDQp9IE1NQ0tJTkZPLCAqUE1NQ0tJTkZP
LCAgKk5QTU1DS0lORk8sICAqTFBNTUNLSU5GTzsNCnR5cGVkZWYgY29uc3QgTU1DS0lORk8gKkxQ
Q01NQ0tJTkZPOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMzY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1pc2NhcGkuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KRk9VUkNDDQpfX3N0ZGNhbGwNCm1taW9TdHJpbmdUb0ZPVVJDQ0EoDQogICAgTFBDU1RS
IHN6LA0KICAgICAgVUlOVCB1RmxhZ3MNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkZPVVJDQw0KX19zdGRjYWxsDQptbWlvU3RyaW5nVG9GT1VSQ0NXKA0KICAgIExQQ1dTVFIgc3os
DQogICAgICBVSU5UIHVGbGFncw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNDE0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbW1pc2NhcGkuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFBNTUlPUFJPQw0KX19z
dGRjYWxsDQptbWlvSW5zdGFsbElPUHJvY0EoDQogICAgICBGT1VSQ0MgZmNjSU9Qcm9jLA0KICAg
ICAgTFBNTUlPUFJPQyBwSU9Qcm9jLA0KICAgICAgRFdPUkQgZHdGbGFncw0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFBNTUlPUFJPQw0KX19zdGRjYWxsDQptbWlvSW5zdGFsbElP
UHJvY1coDQogICAgICBGT1VSQ0MgZmNjSU9Qcm9jLA0KICAgICAgTFBNTUlPUFJPQyBwSU9Qcm9j
LA0KICAgICAgRFdPUkQgZHdGbGFncw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNDM3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1pc2NhcGkuaCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KSE1NSU8NCl9fc3Rk
Y2FsbA0KbW1pb09wZW5BKA0KICAgICAgTFBTVFIgcHN6RmlsZU5hbWUsDQogICAgICBMUE1NSU9J
TkZPIHBtbWlvaW5mbywNCiAgICAgIERXT1JEIGZkd09wZW4NCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkhNTUlPDQpfX3N0ZGNhbGwNCm1taW9PcGVuVygNCiAgICAgIExQV1NUUiBw
c3pGaWxlTmFtZSwNCiAgICAgIExQTU1JT0lORk8gcG1taW9pbmZvLA0KICAgICAgRFdPUkQgZmR3
T3Blbg0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNDYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1pc2NhcGku
aCINCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbW1pb1JlbmFt
ZUEoDQogICAgICBMUENTVFIgcHN6RmlsZU5hbWUsDQogICAgICBMUENTVFIgcHN6TmV3RmlsZU5h
bWUsDQogICAgICBMUENNTUlPSU5GTyBwbW1pb2luZm8sDQogICAgICBEV09SRCBmZHdSZW5hbWUN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1t
aW9SZW5hbWVXKA0KICAgICAgTFBDV1NUUiBwc3pGaWxlTmFtZSwNCiAgICAgIExQQ1dTVFIgcHN6
TmV3RmlsZU5hbWUsDQogICAgICBMUENNTUlPSU5GTyBwbW1pb2luZm8sDQogICAgICBEV09SRCBm
ZHdSZW5hbWUNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDQ4NSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1taXNj
YXBpLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1taXNjYXBpLmgi
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbW1pb0Nsb3Nl
KA0KICAgICAgSE1NSU8gaG1taW8sDQogICAgICBVSU5UIGZ1Q2xvc2UNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KbW1pb1JlYWQoDQogICAgICBITU1J
TyBobW1pbywNCiAgICAgIEhQU1RSIHBjaCwNCiAgICAgIExPTkcgY2NoDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpMT05HDQpfX3N0ZGNhbGwNCm1taW9Xcml0ZSgNCiAgICAgIEhN
TUlPIGhtbWlvLA0KICAgICAgY29uc3QgY2hhciAgICogcGNoLA0KICAgICAgTE9ORyBjY2gNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkxPTkcNCl9fc3RkY2FsbA0KbW1pb1NlZWso
DQogICAgICBITU1JTyBobW1pbywNCiAgICAgIExPTkcgbE9mZnNldCwNCiAgICAgIGludCBpT3Jp
Z2luDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxs
DQptbWlvR2V0SW5mbygNCiAgICAgIEhNTUlPIGhtbWlvLA0KICAgICAgTFBNTUlPSU5GTyBwbW1p
b2luZm8sDQogICAgICBVSU5UIGZ1SW5mbw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbW1pb1NldEluZm8oDQogICAgICBITU1JTyBobW1pbywN
CiAgICAgIExQQ01NSU9JTkZPIHBtbWlvaW5mbywNCiAgICAgIFVJTlQgZnVJbmZvDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptbWlvU2V0QnVm
ZmVyKA0KICAgICAgSE1NSU8gaG1taW8sDQogICAgICBMUFNUUiBwY2hCdWZmZXIsDQogICAgICBM
T05HIGNjaEJ1ZmZlciwNCiAgICAgIFVJTlQgZnVCdWZmZXINCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1taW9GbHVzaCgNCiAgICAgIEhNTUlP
IGhtbWlvLA0KICAgICAgVUlOVCBmdUZsdXNoDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptbWlvQWR2YW5jZSgNCiAgICAgIEhNTUlPIGhtbWlv
LA0KICAgICAgTFBNTUlPSU5GTyBwbW1pb2luZm8sDQogICAgICBVSU5UIGZ1QWR2YW5jZQ0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTFJFU1VMVA0KX19zdGRjYWxsDQptbWlvU2Vu
ZE1lc3NhZ2UoDQogICAgICBITU1JTyBobW1pbywNCiAgICAgIFVJTlQgdU1zZywNCiAgICAgIExQ
QVJBTSBsUGFyYW0xLA0KICAgICAgTFBBUkFNIGxQYXJhbTINCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1taW9EZXNjZW5kKA0KICAgICAgSE1N
SU8gaG1taW8sDQogICAgICBMUE1NQ0tJTkZPIHBtbWNraSwNCiAgICAgIGNvbnN0IE1NQ0tJTkZP
ICAgKiBwbW1ja2lQYXJlbnQsDQogICAgICBVSU5UIGZ1RGVzY2VuZA0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbW1pb0FzY2VuZCgNCiAgICAg
IEhNTUlPIGhtbWlvLA0KICAgICAgTFBNTUNLSU5GTyBwbW1ja2ksDQogICAgICBVSU5UIGZ1QXNj
ZW5kDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxs
DQptbWlvQ3JlYXRlQ2h1bmsoDQogICAgICBITU1JTyBobW1pbywNCiAgICAgIExQTU1DS0lORk8g
cG1tY2tpLA0KICAgICAgVUlOVCBmdUNyZWF0ZQ0KICAgICk7DQoNCg0KI2xpbmUgNjE0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1pc2NhcGkuaCINCg0KI2xpbmUgNjE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1pc2NhcGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgNjIxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1p
c2NhcGkuaCINCg0KI2xpbmUgNjIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1pc2NhcGkuaCINCg0KDQojbGlu
ZSA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzdGVtLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1p
c2NhcGkyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDEyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1pc2NhcGkyLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG1tc3lzY29tLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxtbWlzY2FwaTIuaCINCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bW1pc2NhcGkyLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRl
ZiB2b2lkIChfX3N0ZGNhbGwgVElNRUNBTExCQUNLKShVSU5UIHVUaW1lcklELCBVSU5UIHVNc2cs
IERXT1JEX1BUUiBkd1VzZXIsIERXT1JEX1BUUiBkdzEsIERXT1JEX1BUUiBkdzIpOw0KdHlwZWRl
ZiBUSU1FQ0FMTEJBQ0sgICpMUFRJTUVDQUxMQkFDSzsNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbW1pc2NhcGkyLmgiDQoNCg0KDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgDQojbGluZSA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1taXNjYXBpMi5oIg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KdGltZVNldEV2ZW50KA0KICAgICAg
VUlOVCB1RGVsYXksDQogICAgICBVSU5UIHVSZXNvbHV0aW9uLA0KICAgICAgTFBUSU1FQ0FMTEJB
Q0sgZnB0YywNCiAgICAgIERXT1JEX1BUUiBkd1VzZXIsDQogICAgICBVSU5UIGZ1RXZlbnQNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCnRpbWVL
aWxsRXZlbnQoDQogICAgICBVSU5UIHVUaW1lcklEDQogICAgKTsNCg0KDQojbGluZSA2OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1taXNjYXBpMi5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSA3
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG1taXNjYXBpMi5oIg0KDQojbGluZSA3NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1t
aXNjYXBpMi5oIg0KDQoNCiNsaW5lIDY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXN0ZW0uaCINCg0KDQoN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwbGF5c291bmRhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwbGF5c291bmRhcGkuaCINCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20uaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHBsYXlzb3VuZGFwaS5oIg0KDQoNCmV4
dGVybiAiQyIgew0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwbGF5c291bmRhcGkuaCINCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0Kc25kUGxheVNvdW5kQSgNCiAgICAgIExQ
Q1NUUiBwc3pTb3VuZCwNCiAgICAgIFVJTlQgZnVTb3VuZA0KICAgICk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpzbmRQbGF5U291bmRXKA0KICAgICAgTFBDV1NU
UiBwc3pTb3VuZCwNCiAgICAgIFVJTlQgZnVTb3VuZA0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUg
NTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwbGF5c291bmRhcGkuaCINCg0KDQoNCg0KI2xpbmUgNjQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxwbGF5c291bmRhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwbGF5c291bmRhcGkuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19z
dGRjYWxsDQpQbGF5U291bmRBKA0KICAgICAgTFBDU1RSIHBzelNvdW5kLA0KICAgICAgSE1PRFVM
RSBobW9kLA0KICAgICAgRFdPUkQgZmR3U291bmQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUGxheVNvdW5kVygNCiAgICAgIExQQ1dTVFIgcHN6U291
bmQsDQogICAgICBITU9EVUxFIGhtb2QsDQogICAgICBEV09SRCBmZHdTb3VuZA0KICAgICk7DQoN
Cg0KDQoNCg0KI2xpbmUgMTI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccGxheXNvdW5kYXBpLmgiDQoNCg0KDQoN
CiNsaW5lIDEzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHBsYXlzb3VuZGFwaS5oIg0KDQojbGluZSAxMzIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxwbGF5c291bmRhcGkuaCINCg0KI2xpbmUgMTM0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccGxh
eXNvdW5kYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCn0NCiNsaW5lIDEzOSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHBsYXlzb3VuZGFwaS5oIg0KDQojbGluZSAxNDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwbGF5c291
bmRhcGkuaCINCg0KDQojbGluZSA3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzdGVtLmgiDQoNCiNsaW5l
IDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20uaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCmV4dGVybiAiQyIgew0K
I2xpbmUgMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpzdHJ1Y3QgSFdBVkVf
X3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhXQVZFX18gKkhXQVZFOw0Kc3RydWN0IEhX
QVZFSU5fX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhXQVZFSU5fXyAqSFdBVkVJTjsN
CnN0cnVjdCBIV0FWRU9VVF9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSFdBVkVPVVRf
XyAqSFdBVkVPVVQ7DQp0eXBlZGVmIEhXQVZFSU4gICpMUEhXQVZFSU47DQp0eXBlZGVmIEhXQVZF
T1VUICAqTFBIV0FWRU9VVDsNCnR5cGVkZWYgRFJWQ0FMTEJBQ0sgV0FWRUNBTExCQUNLOw0KdHlw
ZWRlZiBXQVZFQ0FMTEJBQ0sgICpMUFdBVkVDQUxMQkFDSzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3Qgd2F2ZWhkcl90YWcgew0KICAgIExQU1RSICAgICAgIGxwRGF0YTsg
ICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3QnVmZmVyTGVuZ3RoOyAgICAgICAg
IA0KICAgIERXT1JEICAgICAgIGR3Qnl0ZXNSZWNvcmRlZDsgICAgICAgIA0KICAgIERXT1JEX1BU
UiAgIGR3VXNlcjsgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3RmxhZ3M7ICAg
ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3TG9vcHM7ICAgICAgICAgICAgICAgIA0K
ICAgIHN0cnVjdCB3YXZlaGRyX3RhZyAgKmxwTmV4dDsgICAgIA0KICAgIERXT1JEX1BUUiAgIHJl
c2VydmVkOyAgICAgICAgICAgICAgIA0KfSBXQVZFSERSLCAqUFdBVkVIRFIsICAqTlBXQVZFSERS
LCAgKkxQV0FWRUhEUjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRh
Z1dBVkVPVVRDQVBTQSB7DQogICAgV09SRCAgICB3TWlkOyAgICAgICAgICAgICAgICAgIA0KICAg
IFdPUkQgICAgd1BpZDsgICAgICAgICAgICAgICAgICANCiAgICBNTVZFUlNJT04gdkRyaXZlclZl
cnNpb247ICAgICAgDQogICAgQ0hBUiAgICBzelBuYW1lWzMyXTsgIA0KICAgIERXT1JEICAgZHdG
b3JtYXRzOyAgICAgICAgICAgICANCiAgICBXT1JEICAgIHdDaGFubmVsczsgICAgICAgICAgICAg
DQogICAgV09SRCAgICB3UmVzZXJ2ZWQxOyAgICAgICAgICAgIA0KICAgIERXT1JEICAgZHdTdXBw
b3J0OyAgICAgICAgICAgICANCn0gV0FWRU9VVENBUFNBLCAqUFdBVkVPVVRDQVBTQSwgKk5QV0FW
RU9VVENBUFNBLCAqTFBXQVZFT1VUQ0FQU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdXQVZFT1VUQ0FQ
U1cgew0KICAgIFdPUkQgICAgd01pZDsgICAgICAgICAgICAgICAgICANCiAgICBXT1JEICAgIHdQ
aWQ7ICAgICAgICAgICAgICAgICAgDQogICAgTU1WRVJTSU9OIHZEcml2ZXJWZXJzaW9uOyAgICAg
IA0KICAgIFdDSEFSICAgc3pQbmFtZVszMl07ICANCiAgICBEV09SRCAgIGR3Rm9ybWF0czsgICAg
ICAgICAgICAgDQogICAgV09SRCAgICB3Q2hhbm5lbHM7ICAgICAgICAgICAgIA0KICAgIFdPUkQg
ICAgd1Jlc2VydmVkMTsgICAgICAgICAgICANCiAgICBEV09SRCAgIGR3U3VwcG9ydDsgICAgICAg
ICAgICAgDQp9IFdBVkVPVVRDQVBTVywgKlBXQVZFT1VUQ0FQU1csICpOUFdBVkVPVVRDQVBTVywg
KkxQV0FWRU9VVENBUFNXOw0KDQp0eXBlZGVmIFdBVkVPVVRDQVBTVyBXQVZFT1VUQ0FQUzsNCnR5
cGVkZWYgUFdBVkVPVVRDQVBTVyBQV0FWRU9VVENBUFM7DQp0eXBlZGVmIE5QV0FWRU9VVENBUFNX
IE5QV0FWRU9VVENBUFM7DQp0eXBlZGVmIExQV0FWRU9VVENBUFNXIExQV0FWRU9VVENBUFM7DQoN
Cg0KDQoNCg0KI2xpbmUgMTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQp0eXBlZGVmIHN0cnVj
dCB0YWdXQVZFT1VUQ0FQUzJBIHsNCiAgICBXT1JEICAgIHdNaWQ7ICAgICAgICAgICAgICAgICAg
DQogICAgV09SRCAgICB3UGlkOyAgICAgICAgICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiB2RHJp
dmVyVmVyc2lvbjsgICAgICANCiAgICBDSEFSICAgIHN6UG5hbWVbMzJdOyAgDQogICAgRFdPUkQg
ICBkd0Zvcm1hdHM7ICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgd0NoYW5uZWxzOyAgICAgICAg
ICAgICANCiAgICBXT1JEICAgIHdSZXNlcnZlZDE7ICAgICAgICAgICAgDQogICAgRFdPUkQgICBk
d1N1cHBvcnQ7ICAgICAgICAgICAgIA0KICAgIEdVSUQgICAgTWFudWZhY3R1cmVyR3VpZDsgICAg
ICANCiAgICBHVUlEICAgIFByb2R1Y3RHdWlkOyAgICAgICAgICAgDQogICAgR1VJRCAgICBOYW1l
R3VpZDsgICAgICAgICAgICAgIA0KfSBXQVZFT1VUQ0FQUzJBLCAqUFdBVkVPVVRDQVBTMkEsICpO
UFdBVkVPVVRDQVBTMkEsICpMUFdBVkVPVVRDQVBTMkE7DQp0eXBlZGVmIHN0cnVjdCB0YWdXQVZF
T1VUQ0FQUzJXIHsNCiAgICBXT1JEICAgIHdNaWQ7ICAgICAgICAgICAgICAgICAgDQogICAgV09S
RCAgICB3UGlkOyAgICAgICAgICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiB2RHJpdmVyVmVyc2lv
bjsgICAgICANCiAgICBXQ0hBUiAgIHN6UG5hbWVbMzJdOyAgDQogICAgRFdPUkQgICBkd0Zvcm1h
dHM7ICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgd0NoYW5uZWxzOyAgICAgICAgICAgICANCiAg
ICBXT1JEICAgIHdSZXNlcnZlZDE7ICAgICAgICAgICAgDQogICAgRFdPUkQgICBkd1N1cHBvcnQ7
ICAgICAgICAgICAgIA0KICAgIEdVSUQgICAgTWFudWZhY3R1cmVyR3VpZDsgICAgICANCiAgICBH
VUlEICAgIFByb2R1Y3RHdWlkOyAgICAgICAgICAgDQogICAgR1VJRCAgICBOYW1lR3VpZDsgICAg
ICAgICAgICAgIA0KfSBXQVZFT1VUQ0FQUzJXLCAqUFdBVkVPVVRDQVBTMlcsICpOUFdBVkVPVVRD
QVBTMlcsICpMUFdBVkVPVVRDQVBTMlc7DQoNCnR5cGVkZWYgV0FWRU9VVENBUFMyVyBXQVZFT1VU
Q0FQUzI7DQp0eXBlZGVmIFBXQVZFT1VUQ0FQUzJXIFBXQVZFT1VUQ0FQUzI7DQp0eXBlZGVmIE5Q
V0FWRU9VVENBUFMyVyBOUFdBVkVPVVRDQVBTMjsNCnR5cGVkZWYgTFBXQVZFT1VUQ0FQUzJXIExQ
V0FWRU9VVENBUFMyOw0KDQoNCg0KDQoNCiNsaW5lIDE3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdXQVZFSU5DQVBT
QSB7DQogICAgV09SRCAgICB3TWlkOyAgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3
UGlkOyAgICAgICAgICAgICAgICAgICAgDQogICAgTU1WRVJTSU9OIHZEcml2ZXJWZXJzaW9uOyAg
ICAgICAgDQogICAgQ0hBUiAgICBzelBuYW1lWzMyXTsgICAgDQogICAgRFdPUkQgICBkd0Zvcm1h
dHM7ICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3Q2hhbm5lbHM7ICAgICAgICAgICAgICAg
DQogICAgV09SRCAgICB3UmVzZXJ2ZWQxOyAgICAgICAgICAgICAgDQp9IFdBVkVJTkNBUFNBLCAq
UFdBVkVJTkNBUFNBLCAqTlBXQVZFSU5DQVBTQSwgKkxQV0FWRUlOQ0FQU0E7DQp0eXBlZGVmIHN0
cnVjdCB0YWdXQVZFSU5DQVBTVyB7DQogICAgV09SRCAgICB3TWlkOyAgICAgICAgICAgICAgICAg
ICAgDQogICAgV09SRCAgICB3UGlkOyAgICAgICAgICAgICAgICAgICAgDQogICAgTU1WRVJTSU9O
IHZEcml2ZXJWZXJzaW9uOyAgICAgICAgDQogICAgV0NIQVIgICBzelBuYW1lWzMyXTsgICAgDQog
ICAgRFdPUkQgICBkd0Zvcm1hdHM7ICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3Q2hhbm5l
bHM7ICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3UmVzZXJ2ZWQxOyAgICAgICAgICAgICAg
DQp9IFdBVkVJTkNBUFNXLCAqUFdBVkVJTkNBUFNXLCAqTlBXQVZFSU5DQVBTVywgKkxQV0FWRUlO
Q0FQU1c7DQoNCnR5cGVkZWYgV0FWRUlOQ0FQU1cgV0FWRUlOQ0FQUzsNCnR5cGVkZWYgUFdBVkVJ
TkNBUFNXIFBXQVZFSU5DQVBTOw0KdHlwZWRlZiBOUFdBVkVJTkNBUFNXIE5QV0FWRUlOQ0FQUzsN
CnR5cGVkZWYgTFBXQVZFSU5DQVBTVyBMUFdBVkVJTkNBUFM7DQoNCg0KDQoNCg0KI2xpbmUgMjI1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQp0eXBlZGVmIHN0cnVjdCB0YWdXQVZFSU5DQVBTMkEg
ew0KICAgIFdPUkQgICAgd01pZDsgICAgICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgd1Bp
ZDsgICAgICAgICAgICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiB2RHJpdmVyVmVyc2lvbjsgICAg
ICAgIA0KICAgIENIQVIgICAgc3pQbmFtZVszMl07ICAgIA0KICAgIERXT1JEICAgZHdGb3JtYXRz
OyAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgd0NoYW5uZWxzOyAgICAgICAgICAgICAgIA0K
ICAgIFdPUkQgICAgd1Jlc2VydmVkMTsgICAgICAgICAgICAgIA0KICAgIEdVSUQgICAgTWFudWZh
Y3R1cmVyR3VpZDsgICAgICAgIA0KICAgIEdVSUQgICAgUHJvZHVjdEd1aWQ7ICAgICAgICAgICAg
IA0KICAgIEdVSUQgICAgTmFtZUd1aWQ7ICAgICAgICAgICAgICAgIA0KfSBXQVZFSU5DQVBTMkEs
ICpQV0FWRUlOQ0FQUzJBLCAqTlBXQVZFSU5DQVBTMkEsICpMUFdBVkVJTkNBUFMyQTsNCnR5cGVk
ZWYgc3RydWN0IHRhZ1dBVkVJTkNBUFMyVyB7DQogICAgV09SRCAgICB3TWlkOyAgICAgICAgICAg
ICAgICAgICAgDQogICAgV09SRCAgICB3UGlkOyAgICAgICAgICAgICAgICAgICAgDQogICAgTU1W
RVJTSU9OIHZEcml2ZXJWZXJzaW9uOyAgICAgICAgDQogICAgV0NIQVIgICBzelBuYW1lWzMyXTsg
ICAgDQogICAgRFdPUkQgICBkd0Zvcm1hdHM7ICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3
Q2hhbm5lbHM7ICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3UmVzZXJ2ZWQxOyAgICAgICAg
ICAgICAgDQogICAgR1VJRCAgICBNYW51ZmFjdHVyZXJHdWlkOyAgICAgICAgDQogICAgR1VJRCAg
ICBQcm9kdWN0R3VpZDsgICAgICAgICAgICAgDQogICAgR1VJRCAgICBOYW1lR3VpZDsgICAgICAg
ICAgICAgICAgDQp9IFdBVkVJTkNBUFMyVywgKlBXQVZFSU5DQVBTMlcsICpOUFdBVkVJTkNBUFMy
VywgKkxQV0FWRUlOQ0FQUzJXOw0KDQp0eXBlZGVmIFdBVkVJTkNBUFMyVyBXQVZFSU5DQVBTMjsN
CnR5cGVkZWYgUFdBVkVJTkNBUFMyVyBQV0FWRUlOQ0FQUzI7DQp0eXBlZGVmIE5QV0FWRUlOQ0FQ
UzJXIE5QV0FWRUlOQ0FQUzI7DQp0eXBlZGVmIExQV0FWRUlOQ0FQUzJXIExQV0FWRUlOQ0FQUzI7
DQoNCg0KDQoNCg0KI2xpbmUgMjYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDI3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3Qgd2F2ZWZvcm1hdF90YWcgew0KICAgIFdPUkQgICAgd0Zvcm1hdFRhZzsgICAg
ICAgIA0KICAgIFdPUkQgICAgbkNoYW5uZWxzOyAgICAgICAgIA0KICAgIERXT1JEICAgblNhbXBs
ZXNQZXJTZWM7ICAgIA0KICAgIERXT1JEICAgbkF2Z0J5dGVzUGVyU2VjOyAgIA0KICAgIFdPUkQg
ICAgbkJsb2NrQWxpZ247ICAgICAgIA0KfSBXQVZFRk9STUFULCAqUFdBVkVGT1JNQVQsICAqTlBX
QVZFRk9STUFULCAgKkxQV0FWRUZPUk1BVDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHBj
bXdhdmVmb3JtYXRfdGFnIHsNCiAgICBXQVZFRk9STUFUICB3ZjsNCiAgICBXT1JEICAgICAgICB3
Qml0c1BlclNhbXBsZTsNCn0gUENNV0FWRUZPUk1BVCwgKlBQQ01XQVZFRk9STUFULCAgKk5QUENN
V0FWRUZPUk1BVCwgICpMUFBDTVdBVkVGT1JNQVQ7DQojbGluZSAzMjIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
bWVhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0V0FWRUZPUk1BVEVYDQp7
DQogICAgV09SRCAgICAgICAgd0Zvcm1hdFRhZzsgICAgICAgICANCiAgICBXT1JEICAgICAgICBu
Q2hhbm5lbHM7ICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIG5TYW1wbGVzUGVyU2VjOyAgICAg
DQogICAgRFdPUkQgICAgICAgbkF2Z0J5dGVzUGVyU2VjOyAgICANCiAgICBXT1JEICAgICAgICBu
QmxvY2tBbGlnbjsgICAgICAgIA0KICAgIFdPUkQgICAgICAgIHdCaXRzUGVyU2FtcGxlOyAgICAg
DQogICAgV09SRCAgICAgICAgY2JTaXplOyAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KfSBXQVZFRk9STUFURVgsICpQV0FWRUZPUk1BVEVYLCAgKk5Q
V0FWRUZPUk1BVEVYLCAgKkxQV0FWRUZPUk1BVEVYOw0KDQojbGluZSAzNDMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxtbWVhcGkuaCINCnR5cGVkZWYgY29uc3QgV0FWRUZPUk1BVEVYICAqTFBDV0FWRUZPUk1BVEVY
Ow0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19zdGRjYWxsDQp3YXZlT3V0R2V0
TnVtRGV2cygNCiAgICB2b2lkDQogICAgKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpNTVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlT3V0R2V0RGV2Q2Fwc0EoDQogICAgICBVSU5UX1BU
UiB1RGV2aWNlSUQsDQogICAgICBMUFdBVkVPVVRDQVBTQSBwd29jLA0KICAgICAgVUlOVCBjYndv
Yw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0K
d2F2ZU91dEdldERldkNhcHNXKA0KICAgICAgVUlOVF9QVFIgdURldmljZUlELA0KICAgICAgTFBX
QVZFT1VUQ0FQU1cgcHdvYywNCiAgICAgIFVJTlQgY2J3b2MNCiAgICApOw0KDQoNCg0KDQoNCiNs
aW5lIDM3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KI2xpbmUgMzgzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbW1lYXBpLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19z
dGRjYWxsDQp3YXZlT3V0R2V0Vm9sdW1lKA0KICAgICAgSFdBVkVPVVQgaHdvLA0KICAgICAgTFBE
V09SRCBwZHdWb2x1bWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxU
DQpfX3N0ZGNhbGwNCndhdmVPdXRTZXRWb2x1bWUoDQogICAgICBIV0FWRU9VVCBod28sDQogICAg
ICBEV09SRCBkd1ZvbHVtZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDQwNSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1tZWFwaS5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRj
YWxsDQp3YXZlT3V0R2V0RXJyb3JUZXh0QSgNCiAgICAgIE1NUkVTVUxUIG1tckVycm9yLA0KICAg
ICAgTFBTVFIgcHN6VGV4dCwNCiAgICAgIFVJTlQgY2NoVGV4dA0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0Kd2F2ZU91dEdldEVycm9yVGV4dFco
DQogICAgICBNTVJFU1VMVCBtbXJFcnJvciwNCiAgICAgIExQV1NUUiBwc3pUZXh0LA0KICAgICAg
VUlOVCBjY2hUZXh0DQogICAgKTsNCg0KDQoNCg0KDQojbGluZSA0MzEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
bWVhcGkuaCINCg0KDQoNCiNsaW5lIDQzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCndhdmVPdXRPcGVuKA0KICAg
ICAgTFBIV0FWRU9VVCBwaHdvLA0KICAgICAgVUlOVCB1RGV2aWNlSUQsDQogICAgICBMUENXQVZF
Rk9STUFURVggcHdmeCwNCiAgICAgIERXT1JEX1BUUiBkd0NhbGxiYWNrLA0KICAgICAgRFdPUkRf
UFRSIGR3SW5zdGFuY2UsDQogICAgICBEV09SRCBmZHdPcGVuDQogICAgKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCndhdmVPdXRDbG9zZSgNCiAgICAg
IEhXQVZFT1VUIGh3bw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQN
Cl9fc3RkY2FsbA0Kd2F2ZU91dFByZXBhcmVIZWFkZXIoDQogICAgICBIV0FWRU9VVCBod28sDQog
ICAgICBMUFdBVkVIRFIgcHdoLA0KICAgICAgVUlOVCBjYndoDQogICAgKTsNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlT3V0VW5wcmVwYXJlSGVhZGVy
KA0KICAgICAgSFdBVkVPVVQgaHdvLA0KICAgICAgTFBXQVZFSERSIHB3aCwNCiAgICAgIFVJTlQg
Y2J3aA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2Fs
bA0Kd2F2ZU91dFdyaXRlKA0KICAgICAgSFdBVkVPVVQgaHdvLA0KICAgICAgTFBXQVZFSERSIHB3
aCwNCiAgICAgIFVJTlQgY2J3aA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1S
RVNVTFQNCl9fc3RkY2FsbA0Kd2F2ZU91dFBhdXNlKA0KICAgICAgSFdBVkVPVVQgaHdvDQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlT3V0
UmVzdGFydCgNCiAgICAgIEhXQVZFT1VUIGh3bw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0Kd2F2ZU91dFJlc2V0KA0KICAgICAgSFdBVkVPVVQg
aHdvDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxs
DQp3YXZlT3V0QnJlYWtMb29wKA0KICAgICAgSFdBVkVPVVQgaHdvDQogICAgKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlT3V0R2V0UG9zaXRpb24o
DQogICAgICBIV0FWRU9VVCBod28sDQogICAgICBMUE1NVElNRSBwbW10LA0KICAgICAgVUlOVCBj
Ym1tdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2Fs
bA0Kd2F2ZU91dEdldFBpdGNoKA0KICAgICAgSFdBVkVPVVQgaHdvLA0KICAgICAgTFBEV09SRCBw
ZHdQaXRjaA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3Rk
Y2FsbA0Kd2F2ZU91dFNldFBpdGNoKA0KICAgICAgSFdBVkVPVVQgaHdvLA0KICAgICAgRFdPUkQg
ZHdQaXRjaA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3Rk
Y2FsbA0Kd2F2ZU91dEdldFBsYXliYWNrUmF0ZSgNCiAgICAgIEhXQVZFT1VUIGh3bywNCiAgICAg
IExQRFdPUkQgcGR3UmF0ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNV
TFQNCl9fc3RkY2FsbA0Kd2F2ZU91dFNldFBsYXliYWNrUmF0ZSgNCiAgICAgIEhXQVZFT1VUIGh3
bywNCiAgICAgIERXT1JEIGR3UmF0ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
TU1SRVNVTFQNCl9fc3RkY2FsbA0Kd2F2ZU91dEdldElEKA0KICAgICAgSFdBVkVPVVQgaHdvLA0K
ICAgICAgTFBVSU5UIHB1RGV2aWNlSUQNCiAgICApOw0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCndhdmVPdXRNZXNzYWdlKA0KICAgICAgSFdBVkVP
VVQgaHdvLA0KICAgICAgVUlOVCB1TXNnLA0KICAgICAgRFdPUkRfUFRSIGR3MSwNCiAgICAgIERX
T1JEX1BUUiBkdzINCiAgICApOw0KDQoNCg0KI2xpbmUgNTc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBp
LmgiDQojbGluZSA1NzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCndhdmVJbkdldE51bURldnMoDQogICAgdm9pZA0KICAg
ICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0K
d2F2ZUluR2V0RGV2Q2Fwc0EoDQogICAgICBVSU5UX1BUUiB1RGV2aWNlSUQsDQogICAgICBMUFdB
VkVJTkNBUFNBIHB3aWMsDQogICAgICBVSU5UIGNid2ljDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlSW5HZXREZXZDYXBzVygNCiAgICAg
IFVJTlRfUFRSIHVEZXZpY2VJRCwNCiAgICAgIExQV0FWRUlOQ0FQU1cgcHdpYywNCiAgICAgIFVJ
TlQgY2J3aWMNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDYxMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFw
aS5oIg0KDQoNCg0KI2xpbmUgNjE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCndhdmVJbkdldEVycm9yVGV4
dEEoDQogICAgICBNTVJFU1VMVCBtbXJFcnJvciwNCiAgICAgIExQU1RSIHBzelRleHQsDQogICAg
ICBVSU5UIGNjaFRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxU
DQpfX3N0ZGNhbGwNCndhdmVJbkdldEVycm9yVGV4dFcoDQogICAgICBNTVJFU1VMVCBtbXJFcnJv
ciwNCiAgICAgIExQV1NUUiBwc3pUZXh0LA0KICAgICAgVUlOVCBjY2hUZXh0DQogICAgKTsNCg0K
DQoNCg0KDQojbGluZSA2NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KDQoNCiNsaW5lIDY0
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVT
VUxUDQpfX3N0ZGNhbGwNCndhdmVJbk9wZW4oDQogICAgICBMUEhXQVZFSU4gcGh3aSwNCiAgICAg
IFVJTlQgdURldmljZUlELA0KICAgICAgTFBDV0FWRUZPUk1BVEVYIHB3ZngsDQogICAgICBEV09S
RF9QVFIgZHdDYWxsYmFjaywNCiAgICAgIERXT1JEX1BUUiBkd0luc3RhbmNlLA0KICAgICAgRFdP
UkQgZmR3T3Blbg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0K
X19zdGRjYWxsDQp3YXZlSW5DbG9zZSgNCiAgICAgIEhXQVZFSU4gaHdpDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlSW5QcmVwYXJlSGVh
ZGVyKA0KICAgICAgSFdBVkVJTiBod2ksDQogICAgICBMUFdBVkVIRFIgcHdoLA0KICAgICAgVUlO
VCBjYndoDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRj
YWxsDQp3YXZlSW5VbnByZXBhcmVIZWFkZXIoDQogICAgICBIV0FWRUlOIGh3aSwNCiAgICAgIExQ
V0FWRUhEUiBwd2gsDQogICAgICBVSU5UIGNid2gNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCndhdmVJbkFkZEJ1ZmZlcigNCiAgICAgIEhXQVZF
SU4gaHdpLA0KICAgICAgTFBXQVZFSERSIHB3aCwNCiAgICAgIFVJTlQgY2J3aA0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0Kd2F2ZUluU3RhcnQo
DQogICAgICBIV0FWRUlOIGh3aQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1S
RVNVTFQNCl9fc3RkY2FsbA0Kd2F2ZUluU3RvcCgNCiAgICAgIEhXQVZFSU4gaHdpDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlSW5SZXNl
dCgNCiAgICAgIEhXQVZFSU4gaHdpDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpN
TVJFU1VMVA0KX19zdGRjYWxsDQp3YXZlSW5HZXRQb3NpdGlvbigNCiAgICAgIEhXQVZFSU4gaHdp
LA0KICAgICAgTFBNTVRJTUUgcG1tdCwNCiAgICAgIFVJTlQgY2JtbXQNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCndhdmVJbkdldElEKA0KICAg
ICAgSFdBVkVJTiBod2ksDQogICAgICBMUFVJTlQgcHVEZXZpY2VJRA0KICAgICk7DQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0Kd2F2ZUluTWVzc2Fn
ZSgNCiAgICAgIEhXQVZFSU4gaHdpLA0KICAgICAgVUlOVCB1TXNnLA0KICAgICAgRFdPUkRfUFRS
IGR3MSwNCiAgICAgIERXT1JEX1BUUiBkdzINCiAgICApOw0KDQoNCg0KI2xpbmUgNzQ3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1lYXBpLmgiDQojbGluZSA3NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0K
I2xpbmUgNzUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0Kc3RydWN0IEhNSURJX197aW50IHVudXNlZDt9OyB0eXBlZGVmIHN0
cnVjdCBITUlESV9fICpITUlESTsNCnN0cnVjdCBITUlESUlOX197aW50IHVudXNlZDt9OyB0eXBl
ZGVmIHN0cnVjdCBITUlESUlOX18gKkhNSURJSU47DQpzdHJ1Y3QgSE1JRElPVVRfX3tpbnQgdW51
c2VkO307IHR5cGVkZWYgc3RydWN0IEhNSURJT1VUX18gKkhNSURJT1VUOw0Kc3RydWN0IEhNSURJ
U1RSTV9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSE1JRElTVFJNX18gKkhNSURJU1RS
TTsNCnR5cGVkZWYgSE1JREkgICpMUEhNSURJOw0KdHlwZWRlZiBITUlESUlOICAqTFBITUlESUlO
Ow0KdHlwZWRlZiBITUlESU9VVCAgKkxQSE1JRElPVVQ7DQp0eXBlZGVmIEhNSURJU1RSTSAgKkxQ
SE1JRElTVFJNOw0KdHlwZWRlZiBEUlZDQUxMQkFDSyBNSURJQ0FMTEJBQ0s7DQp0eXBlZGVmIE1J
RElDQUxMQkFDSyAgKkxQTUlESUNBTExCQUNLOw0KDQp0eXBlZGVmIFdPUkQgUEFUQ0hBUlJBWVsx
MjhdOw0KdHlwZWRlZiBXT1JEICAqTFBQQVRDSEFSUkFZOw0KdHlwZWRlZiBXT1JEIEtFWUFSUkFZ
WzEyOF07DQp0eXBlZGVmIFdPUkQgICpMUEtFWUFSUkFZOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgODAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgODEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlESU9VVENBUFNBIHsNCiAgICBXT1JEICAgIHdNaWQ7ICAg
ICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3UGlkOyAgICAgICAgICAgICAgICAgIA0KICAg
IE1NVkVSU0lPTiB2RHJpdmVyVmVyc2lvbjsgICAgICANCiAgICBDSEFSICAgIHN6UG5hbWVbMzJd
OyAgDQogICAgV09SRCAgICB3VGVjaG5vbG9neTsgICAgICAgICAgIA0KICAgIFdPUkQgICAgd1Zv
aWNlczsgICAgICAgICAgICAgICANCiAgICBXT1JEICAgIHdOb3RlczsgICAgICAgICAgICAgICAg
DQogICAgV09SRCAgICB3Q2hhbm5lbE1hc2s7ICAgICAgICAgIA0KICAgIERXT1JEICAgZHdTdXBw
b3J0OyAgICAgICAgICAgICANCn0gTUlESU9VVENBUFNBLCAqUE1JRElPVVRDQVBTQSwgKk5QTUlE
SU9VVENBUFNBLCAqTFBNSURJT1VUQ0FQU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNSURJT1VUQ0FQ
U1cgew0KICAgIFdPUkQgICAgd01pZDsgICAgICAgICAgICAgICAgICANCiAgICBXT1JEICAgIHdQ
aWQ7ICAgICAgICAgICAgICAgICAgDQogICAgTU1WRVJTSU9OIHZEcml2ZXJWZXJzaW9uOyAgICAg
IA0KICAgIFdDSEFSICAgc3pQbmFtZVszMl07ICANCiAgICBXT1JEICAgIHdUZWNobm9sb2d5OyAg
ICAgICAgICAgDQogICAgV09SRCAgICB3Vm9pY2VzOyAgICAgICAgICAgICAgIA0KICAgIFdPUkQg
ICAgd05vdGVzOyAgICAgICAgICAgICAgICANCiAgICBXT1JEICAgIHdDaGFubmVsTWFzazsgICAg
ICAgICAgDQogICAgRFdPUkQgICBkd1N1cHBvcnQ7ICAgICAgICAgICAgIA0KfSBNSURJT1VUQ0FQ
U1csICpQTUlESU9VVENBUFNXLCAqTlBNSURJT1VUQ0FQU1csICpMUE1JRElPVVRDQVBTVzsNCg0K
dHlwZWRlZiBNSURJT1VUQ0FQU1cgTUlESU9VVENBUFM7DQp0eXBlZGVmIFBNSURJT1VUQ0FQU1cg
UE1JRElPVVRDQVBTOw0KdHlwZWRlZiBOUE1JRElPVVRDQVBTVyBOUE1JRElPVVRDQVBTOw0KdHlw
ZWRlZiBMUE1JRElPVVRDQVBTVyBMUE1JRElPVVRDQVBTOw0KDQoNCg0KDQoNCiNsaW5lIDg1NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlESU9VVENBUFMyQSB7
DQogICAgV09SRCAgICB3TWlkOyAgICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgd1BpZDsg
ICAgICAgICAgICAgICAgICANCiAgICBNTVZFUlNJT04gdkRyaXZlclZlcnNpb247ICAgICAgDQog
ICAgQ0hBUiAgICBzelBuYW1lWzMyXTsgIA0KICAgIFdPUkQgICAgd1RlY2hub2xvZ3k7ICAgICAg
ICAgICANCiAgICBXT1JEICAgIHdWb2ljZXM7ICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3
Tm90ZXM7ICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgd0NoYW5uZWxNYXNrOyAgICAgICAg
ICANCiAgICBEV09SRCAgIGR3U3VwcG9ydDsgICAgICAgICAgICAgDQogICAgR1VJRCAgICBNYW51
ZmFjdHVyZXJHdWlkOyAgICAgIA0KICAgIEdVSUQgICAgUHJvZHVjdEd1aWQ7ICAgICAgICAgICAN
CiAgICBHVUlEICAgIE5hbWVHdWlkOyAgICAgICAgICAgICAgDQp9IE1JRElPVVRDQVBTMkEsICpQ
TUlESU9VVENBUFMyQSwgKk5QTUlESU9VVENBUFMyQSwgKkxQTUlESU9VVENBUFMyQTsNCnR5cGVk
ZWYgc3RydWN0IHRhZ01JRElPVVRDQVBTMlcgew0KICAgIFdPUkQgICAgd01pZDsgICAgICAgICAg
ICAgICAgICANCiAgICBXT1JEICAgIHdQaWQ7ICAgICAgICAgICAgICAgICAgDQogICAgTU1WRVJT
SU9OIHZEcml2ZXJWZXJzaW9uOyAgICAgIA0KICAgIFdDSEFSICAgc3pQbmFtZVszMl07ICANCiAg
ICBXT1JEICAgIHdUZWNobm9sb2d5OyAgICAgICAgICAgDQogICAgV09SRCAgICB3Vm9pY2VzOyAg
ICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgd05vdGVzOyAgICAgICAgICAgICAgICANCiAgICBX
T1JEICAgIHdDaGFubmVsTWFzazsgICAgICAgICAgDQogICAgRFdPUkQgICBkd1N1cHBvcnQ7ICAg
ICAgICAgICAgIA0KICAgIEdVSUQgICAgTWFudWZhY3R1cmVyR3VpZDsgICAgICANCiAgICBHVUlE
ICAgIFByb2R1Y3RHdWlkOyAgICAgICAgICAgDQogICAgR1VJRCAgICBOYW1lR3VpZDsgICAgICAg
ICAgICAgIA0KfSBNSURJT1VUQ0FQUzJXLCAqUE1JRElPVVRDQVBTMlcsICpOUE1JRElPVVRDQVBT
MlcsICpMUE1JRElPVVRDQVBTMlc7DQoNCnR5cGVkZWYgTUlESU9VVENBUFMyVyBNSURJT1VUQ0FQ
UzI7DQp0eXBlZGVmIFBNSURJT1VUQ0FQUzJXIFBNSURJT1VUQ0FQUzI7DQp0eXBlZGVmIE5QTUlE
SU9VVENBUFMyVyBOUE1JRElPVVRDQVBTMjsNCnR5cGVkZWYgTFBNSURJT1VUQ0FQUzJXIExQTUlE
SU9VVENBUFMyOw0KDQoNCg0KDQoNCiNsaW5lIDg5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGku
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTI0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbW1lYXBpLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01JRElJTkNBUFNBIHsNCiAg
ICBXT1JEICAgICAgICB3TWlkOyAgICAgICAgICAgICAgICAgICANCiAgICBXT1JEICAgICAgICB3
UGlkOyAgICAgICAgICAgICAgICAgICANCiAgICBNTVZFUlNJT04gICB2RHJpdmVyVmVyc2lvbjsg
ICAgICAgICANCiAgICBDSEFSICAgICAgICBzelBuYW1lWzMyXTsgICANCg0KICAgIERXT1JEICAg
ZHdTdXBwb3J0OyAgICAgICAgICAgICANCiNsaW5lIDkzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5o
Ig0KfSBNSURJSU5DQVBTQSwgKlBNSURJSU5DQVBTQSwgKk5QTUlESUlOQ0FQU0EsICpMUE1JRElJ
TkNBUFNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlESUlOQ0FQU1cgew0KICAgIFdPUkQgICAgICAg
IHdNaWQ7ICAgICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgICAgIHdQaWQ7ICAgICAgICAg
ICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiAgIHZEcml2ZXJWZXJzaW9uOyAgICAgICAgIA0KICAg
IFdDSEFSICAgICAgIHN6UG5hbWVbMzJdOyAgIA0KDQogICAgRFdPUkQgICBkd1N1cHBvcnQ7ICAg
ICAgICAgICAgIA0KI2xpbmUgOTQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQp9IE1JRElJTkNB
UFNXLCAqUE1JRElJTkNBUFNXLCAqTlBNSURJSU5DQVBTVywgKkxQTUlESUlOQ0FQU1c7DQoNCnR5
cGVkZWYgTUlESUlOQ0FQU1cgTUlESUlOQ0FQUzsNCnR5cGVkZWYgUE1JRElJTkNBUFNXIFBNSURJ
SU5DQVBTOw0KdHlwZWRlZiBOUE1JRElJTkNBUFNXIE5QTUlESUlOQ0FQUzsNCnR5cGVkZWYgTFBN
SURJSU5DQVBTVyBMUE1JRElJTkNBUFM7DQoNCg0KDQoNCg0KI2xpbmUgOTU3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbW1lYXBpLmgiDQp0eXBlZGVmIHN0cnVjdCB0YWdNSURJSU5DQVBTMkEgew0KICAgIFdPUkQg
ICAgICAgIHdNaWQ7ICAgICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgICAgIHdQaWQ7ICAg
ICAgICAgICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiAgIHZEcml2ZXJWZXJzaW9uOyAgICAgICAg
IA0KICAgIENIQVIgICAgICAgIHN6UG5hbWVbMzJdOyAgIA0KDQogICAgRFdPUkQgICAgICAgZHdT
dXBwb3J0OyAgICAgICAgICAgICAgDQojbGluZSA5NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCIN
CiAgICBHVUlEICAgICAgICBNYW51ZmFjdHVyZXJHdWlkOyAgICAgICANCiAgICBHVUlEICAgICAg
ICBQcm9kdWN0R3VpZDsgICAgICAgICAgICANCiAgICBHVUlEICAgICAgICBOYW1lR3VpZDsgICAg
ICAgICAgICAgICANCn0gTUlESUlOQ0FQUzJBLCAqUE1JRElJTkNBUFMyQSwgKk5QTUlESUlOQ0FQ
UzJBLCAqTFBNSURJSU5DQVBTMkE7DQp0eXBlZGVmIHN0cnVjdCB0YWdNSURJSU5DQVBTMlcgew0K
ICAgIFdPUkQgICAgICAgIHdNaWQ7ICAgICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgICAg
IHdQaWQ7ICAgICAgICAgICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiAgIHZEcml2ZXJWZXJzaW9u
OyAgICAgICAgIA0KICAgIFdDSEFSICAgICAgIHN6UG5hbWVbMzJdOyAgIA0KDQogICAgRFdPUkQg
ICAgICAgZHdTdXBwb3J0OyAgICAgICAgICAgICAgDQojbGluZSA5NzcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
bWVhcGkuaCINCiAgICBHVUlEICAgICAgICBNYW51ZmFjdHVyZXJHdWlkOyAgICAgICANCiAgICBH
VUlEICAgICAgICBQcm9kdWN0R3VpZDsgICAgICAgICAgICANCiAgICBHVUlEICAgICAgICBOYW1l
R3VpZDsgICAgICAgICAgICAgICANCn0gTUlESUlOQ0FQUzJXLCAqUE1JRElJTkNBUFMyVywgKk5Q
TUlESUlOQ0FQUzJXLCAqTFBNSURJSU5DQVBTMlc7DQoNCnR5cGVkZWYgTUlESUlOQ0FQUzJXIE1J
RElJTkNBUFMyOw0KdHlwZWRlZiBQTUlESUlOQ0FQUzJXIFBNSURJSU5DQVBTMjsNCnR5cGVkZWYg
TlBNSURJSU5DQVBTMlcgTlBNSURJSU5DQVBTMjsNCnR5cGVkZWYgTFBNSURJSU5DQVBTMlcgTFBN
SURJSU5DQVBTMjsNCg0KDQoNCg0KDQojbGluZSA5OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgi
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgbWlkaWhkcl90YWcgew0KICAgIExQU1RSICAgICAgIGxwRGF0
YTsgICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICBkd0J1ZmZlckxlbmd0aDsgICAgICAg
DQogICAgRFdPUkQgICAgICAgZHdCeXRlc1JlY29yZGVkOyAgICAgIA0KICAgIERXT1JEX1BUUiAg
IGR3VXNlcjsgICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICBkd0ZsYWdzOyAgICAgICAg
ICAgICAgDQogICAgc3RydWN0IG1pZGloZHJfdGFnICAqbHBOZXh0OyAgIA0KICAgIERXT1JEX1BU
UiAgIHJlc2VydmVkOyAgICAgICAgICAgICANCg0KICAgIERXT1JEICAgICAgIGR3T2Zmc2V0OyAg
ICAgICAgICAgICANCiAgICBEV09SRF9QVFIgICBkd1Jlc2VydmVkWzhdOyAgICAgICAgDQojbGlu
ZSAxMDE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQp9IE1JRElIRFIsICpQTUlESUhEUiwgICpO
UE1JRElIRFIsICAqTFBNSURJSERSOw0KDQoNCnR5cGVkZWYgc3RydWN0IG1pZGlldmVudF90YWcN
CnsNCiAgICBEV09SRCAgICAgICBkd0RlbHRhVGltZTsgICAgICAgICAgDQogICAgRFdPUkQgICAg
ICAgZHdTdHJlYW1JRDsgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3RXZlbnQ7ICAgICAg
ICAgICAgICANCiAgICBEV09SRCAgICAgICBkd1Bhcm1zWzFdOyAgICAgICAgICAgDQp9IE1JRElF
VkVOVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgbWlkaXN0cm1idWZmdmVyX3RhZw0Kew0KICAgIERXT1JE
ICAgICAgIGR3VmVyc2lvbjsgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICBkd01p
ZDsgICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgICAgICAgZHdPRU1WZXJzaW9uOyAg
ICAgICAgICAgICAgIA0KfSBNSURJU1RSTUJVRkZWRVI7DQojbGluZSAxMDM2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBtaWRpcHJvcHRpbWVkaXZfdGFnDQp7DQogICAgRFdPUkQgICAgICAg
Y2JTdHJ1Y3Q7DQogICAgRFdPUkQgICAgICAgZHdUaW1lRGl2Ow0KfSBNSURJUFJPUFRJTUVESVYs
ICAqTFBNSURJUFJPUFRJTUVESVY7DQoNCnR5cGVkZWYgc3RydWN0IG1pZGlwcm9wdGVtcG9fdGFn
DQp7DQogICAgRFdPUkQgICAgICAgY2JTdHJ1Y3Q7DQogICAgRFdPUkQgICAgICAgZHdUZW1wbzsN
Cn0gTUlESVBST1BURU1QTywgICpMUE1JRElQUk9QVEVNUE87DQoNCiNsaW5lIDExMDAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxtbWVhcGkuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQNCl9fc3Rk
Y2FsbA0KbWlkaU91dEdldE51bURldnMoDQogICAgdm9pZA0KICAgICk7DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpU3RyZWFtT3BlbigNCiAgICAg
IExQSE1JRElTVFJNIHBobXMsDQogICAgICBMUFVJTlQgcHVEZXZpY2VJRCwNCiAgICAgIERXT1JE
IGNNaWRpLA0KICAgICAgRFdPUkRfUFRSIGR3Q2FsbGJhY2ssDQogICAgICBEV09SRF9QVFIgZHdJ
bnN0YW5jZSwNCiAgICAgIERXT1JEIGZkd09wZW4NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1pZGlTdHJlYW1DbG9zZSgNCiAgICAgIEhNSURJ
U1RSTSBobXMNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9f
c3RkY2FsbA0KbWlkaVN0cmVhbVByb3BlcnR5KA0KICAgICAgSE1JRElTVFJNIGhtcywNCiAgICAg
IExQQllURSBscHByb3BkYXRhLA0KICAgICAgRFdPUkQgZHdQcm9wZXJ0eQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWlkaVN0cmVhbVBvc2l0
aW9uKA0KICAgICAgSE1JRElTVFJNIGhtcywNCiAgICAgIExQTU1USU1FIGxwbW10LA0KICAgICAg
VUlOVCBjYm1tdA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0K
X19zdGRjYWxsDQptaWRpU3RyZWFtT3V0KA0KICAgICAgSE1JRElTVFJNIGhtcywNCiAgICAgIExQ
TUlESUhEUiBwbWgsDQogICAgICBVSU5UIGNibWgNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1pZGlTdHJlYW1QYXVzZSgNCiAgICAgIEhNSURJ
U1RSTSBobXMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0
ZGNhbGwNCm1pZGlTdHJlYW1SZXN0YXJ0KA0KICAgICAgSE1JRElTVFJNIGhtcw0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWlkaVN0cmVhbVN0
b3AoDQogICAgICBITUlESVNUUk0gaG1zDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWlkaUNvbm5lY3QoDQogICAgICBITUlESSBobWks
DQogICAgICBITUlESU9VVCBobW8sDQogICAgICBMUFZPSUQgcFJlc2VydmVkDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpRGlzY29ubmVj
dCgNCiAgICAgIEhNSURJIGhtaSwNCiAgICAgIEhNSURJT1VUIGhtbywNCiAgICAgIExQVk9JRCBw
UmVzZXJ2ZWQNCiAgICApOw0KDQojbGluZSAxMjAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoj
bGluZSAxMjAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1pZGlPdXRHZXREZXZDYXBzQSgNCiAgICAgIFVJ
TlRfUFRSIHVEZXZpY2VJRCwNCiAgICAgIExQTUlESU9VVENBUFNBIHBtb2MsDQogICAgICBVSU5U
IGNibW9jDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRj
YWxsDQptaWRpT3V0R2V0RGV2Q2Fwc1coDQogICAgICBVSU5UX1BUUiB1RGV2aWNlSUQsDQogICAg
ICBMUE1JRElPVVRDQVBTVyBwbW9jLA0KICAgICAgVUlOVCBjYm1vYw0KICAgICk7DQoNCg0KDQoN
Cg0KI2xpbmUgMTIyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KI2xpbmUgMTIzMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNV
TFQNCl9fc3RkY2FsbA0KbWlkaU91dEdldFZvbHVtZSgNCiAgICAgIEhNSURJT1VUIGhtbywNCiAg
ICAgIExQRFdPUkQgcGR3Vm9sdW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpN
TVJFU1VMVA0KX19zdGRjYWxsDQptaWRpT3V0U2V0Vm9sdW1lKA0KICAgICAgSE1JRElPVVQgaG1v
LA0KICAgICAgRFdPUkQgZHdWb2x1bWUNCiAgICApOw0KDQoNCg0KDQojbGluZSAxMjUzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxU
DQpfX3N0ZGNhbGwNCm1pZGlPdXRHZXRFcnJvclRleHRBKA0KICAgICAgTU1SRVNVTFQgbW1yRXJy
b3IsDQogICAgICBMUFNUUiBwc3pUZXh0LA0KICAgICAgVUlOVCBjY2hUZXh0DQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpT3V0R2V0RXJy
b3JUZXh0VygNCiAgICAgIE1NUkVTVUxUIG1tckVycm9yLA0KICAgICAgTFBXU1RSIHBzelRleHQs
DQogICAgICBVSU5UIGNjaFRleHQNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDEyNzkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxtbWVhcGkuaCINCg0KDQoNCiNsaW5lIDEyODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGku
aCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpT3V0
T3BlbigNCiAgICAgIExQSE1JRElPVVQgcGhtbywNCiAgICAgIFVJTlQgdURldmljZUlELA0KICAg
ICAgRFdPUkRfUFRSIGR3Q2FsbGJhY2ssDQogICAgICBEV09SRF9QVFIgZHdJbnN0YW5jZSwNCiAg
ICAgIERXT1JEIGZkd09wZW4NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVT
VUxUDQpfX3N0ZGNhbGwNCm1pZGlPdXRDbG9zZSgNCiAgICAgIEhNSURJT1VUIGhtbw0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWlkaU91dFBy
ZXBhcmVIZWFkZXIoDQogICAgICBITUlESU9VVCBobW8sDQogICAgICBMUE1JRElIRFIgcG1oLA0K
ICAgICAgVUlOVCBjYm1oDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VM
VA0KX19zdGRjYWxsDQptaWRpT3V0VW5wcmVwYXJlSGVhZGVyKA0KICAgICAgSE1JRElPVVQgaG1v
LA0KICAgICAgTFBNSURJSERSIHBtaCwNCiAgICAgIFVJTlQgY2JtaA0KICAgICk7DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWlkaU91dFNob3J0TXNnKA0K
ICAgICAgSE1JRElPVVQgaG1vLA0KICAgICAgRFdPUkQgZHdNc2cNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1pZGlPdXRMb25nTXNnKA0KICAg
ICAgSE1JRElPVVQgaG1vLA0KICAgICAgTFBNSURJSERSIHBtaCwNCiAgICAgIFVJTlQgY2JtaA0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWlk
aU91dFJlc2V0KA0KICAgICAgSE1JRElPVVQgaG1vDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpT3V0Q2FjaGVQYXRjaGVzKA0KICAgICAg
SE1JRElPVVQgaG1vLA0KICAgICAgVUlOVCB1QmFuaywNCiAgICAgIExQV09SRCBwd3BhLA0KICAg
ICAgVUlOVCBmdUNhY2hlDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VM
VA0KX19zdGRjYWxsDQptaWRpT3V0Q2FjaGVEcnVtUGF0Y2hlcygNCiAgICAgIEhNSURJT1VUIGht
bywNCiAgICAgIFVJTlQgdVBhdGNoLA0KICAgICAgTFBXT1JEIHB3a3lhLA0KICAgICAgVUlOVCBm
dUNhY2hlDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRj
YWxsDQptaWRpT3V0R2V0SUQoDQogICAgICBITUlESU9VVCBobW8sDQogICAgICBMUFVJTlQgcHVE
ZXZpY2VJRA0KICAgICk7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQN
Cl9fc3RkY2FsbA0KbWlkaU91dE1lc3NhZ2UoDQogICAgICBITUlESU9VVCBobW8sDQogICAgICBV
SU5UIHVNc2csDQogICAgICBEV09SRF9QVFIgZHcxLA0KICAgICAgRFdPUkRfUFRSIGR3Mg0KICAg
ICk7DQoNCg0KDQojbGluZSAxMzg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQojbGluZSAxMzg5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0K
X19zdGRjYWxsDQptaWRpSW5HZXROdW1EZXZzKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1pZGlJbkdldERldkNh
cHNBKA0KICAgICAgVUlOVF9QVFIgdURldmljZUlELA0KICAgICAgTFBNSURJSU5DQVBTQSBwbWlj
LA0KICAgICAgVUlOVCBjYm1pYw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1S
RVNVTFQNCl9fc3RkY2FsbA0KbWlkaUluR2V0RGV2Q2Fwc1coDQogICAgICBVSU5UX1BUUiB1RGV2
aWNlSUQsDQogICAgICBMUE1JRElJTkNBUFNXIHBtaWMsDQogICAgICBVSU5UIGNibWljDQogICAg
KTsNCg0KDQoNCg0KDQojbGluZSAxNDIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1pZGlJbkdldEVycm9yVGV4dEEo
DQogICAgICBNTVJFU1VMVCBtbXJFcnJvciwNCiAgICAgIExQU1RSIHBzelRleHQsDQogICAgICBV
SU5UIGNjaFRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpf
X3N0ZGNhbGwNCm1pZGlJbkdldEVycm9yVGV4dFcoDQogICAgICBNTVJFU1VMVCBtbXJFcnJvciwN
CiAgICAgIExQV1NUUiBwc3pUZXh0LA0KICAgICAgVUlOVCBjY2hUZXh0DQogICAgKTsNCg0KDQoN
Cg0KDQojbGluZSAxNDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCiNsaW5lIDE0
NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJF
U1VMVA0KX19zdGRjYWxsDQptaWRpSW5PcGVuKA0KICAgICAgTFBITUlESUlOIHBobWksDQogICAg
ICBVSU5UIHVEZXZpY2VJRCwNCiAgICAgIERXT1JEX1BUUiBkd0NhbGxiYWNrLA0KICAgICAgRFdP
UkRfUFRSIGR3SW5zdGFuY2UsDQogICAgICBEV09SRCBmZHdPcGVuDQogICAgKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpSW5DbG9zZSgNCiAgICAg
IEhNSURJSU4gaG1pDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0K
X19zdGRjYWxsDQptaWRpSW5QcmVwYXJlSGVhZGVyKA0KICAgICAgSE1JRElJTiBobWksDQogICAg
ICBMUE1JRElIRFIgcG1oLA0KICAgICAgVUlOVCBjYm1oDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpSW5VbnByZXBhcmVIZWFkZXIoDQog
ICAgICBITUlESUlOIGhtaSwNCiAgICAgIExQTUlESUhEUiBwbWgsDQogICAgICBVSU5UIGNibWgN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1p
ZGlJbkFkZEJ1ZmZlcigNCiAgICAgIEhNSURJSU4gaG1pLA0KICAgICAgTFBNSURJSERSIHBtaCwN
CiAgICAgIFVJTlQgY2JtaA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNV
TFQNCl9fc3RkY2FsbA0KbWlkaUluU3RhcnQoDQogICAgICBITUlESUlOIGhtaQ0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWlkaUluU3RvcCgN
CiAgICAgIEhNSURJSU4gaG1pDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJF
U1VMVA0KX19zdGRjYWxsDQptaWRpSW5SZXNldCgNCiAgICAgIEhNSURJSU4gaG1pDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaWRpSW5HZXRJ
RCgNCiAgICAgIEhNSURJSU4gaG1pLA0KICAgICAgTFBVSU5UIHB1RGV2aWNlSUQNCiAgICApOw0K
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1pZGlJ
bk1lc3NhZ2UoDQogICAgICBITUlESUlOIGhtaSwNCiAgICAgIFVJTlQgdU1zZywNCiAgICAgIERX
T1JEX1BUUiBkdzEsDQogICAgICBEV09SRF9QVFIgZHcyDQogICAgKTsNCg0KDQoNCiNsaW5lIDE1
NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCiNsaW5lIDE1NDMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVh
cGkuaCINCg0KI2xpbmUgMTU0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQVVYQ0FQU0Egew0KICAgIFdPUkQg
ICAgICAgIHdNaWQ7ICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgICAgIHdQaWQ7ICAgICAg
ICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiAgIHZEcml2ZXJWZXJzaW9uOyAgICAgIA0KICAgIENI
QVIgICAgICAgIHN6UG5hbWVbMzJdOw0KICAgIFdPUkQgICAgICAgIHdUZWNobm9sb2d5OyAgICAg
ICAgIA0KICAgIFdPUkQgICAgICAgIHdSZXNlcnZlZDE7ICAgICAgICAgIA0KICAgIERXT1JEICAg
ICAgIGR3U3VwcG9ydDsgICAgICAgICAgIA0KfSBBVVhDQVBTQSwgKlBBVVhDQVBTQSwgKk5QQVVY
Q0FQU0EsICpMUEFVWENBUFNBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQVVYQ0FQU1cgew0KICAgIFdP
UkQgICAgICAgIHdNaWQ7ICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgICAgIHdQaWQ7ICAg
ICAgICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiAgIHZEcml2ZXJWZXJzaW9uOyAgICAgIA0KICAg
IFdDSEFSICAgICAgIHN6UG5hbWVbMzJdOw0KICAgIFdPUkQgICAgICAgIHdUZWNobm9sb2d5OyAg
ICAgICAgIA0KICAgIFdPUkQgICAgICAgIHdSZXNlcnZlZDE7ICAgICAgICAgIA0KICAgIERXT1JE
ICAgICAgIGR3U3VwcG9ydDsgICAgICAgICAgIA0KfSBBVVhDQVBTVywgKlBBVVhDQVBTVywgKk5Q
QVVYQ0FQU1csICpMUEFVWENBUFNXOw0KDQp0eXBlZGVmIEFVWENBUFNXIEFVWENBUFM7DQp0eXBl
ZGVmIFBBVVhDQVBTVyBQQVVYQ0FQUzsNCnR5cGVkZWYgTlBBVVhDQVBTVyBOUEFVWENBUFM7DQp0
eXBlZGVmIExQQVVYQ0FQU1cgTFBBVVhDQVBTOw0KDQoNCg0KDQoNCiNsaW5lIDE1ODkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxtbWVhcGkuaCINCnR5cGVkZWYgc3RydWN0IHRhZ0FVWENBUFMyQSB7DQogICAgV09S
RCAgICAgICAgd01pZDsgICAgICAgICAgICAgICAgDQogICAgV09SRCAgICAgICAgd1BpZDsgICAg
ICAgICAgICAgICAgDQogICAgTU1WRVJTSU9OICAgdkRyaXZlclZlcnNpb247ICAgICAgDQogICAg
Q0hBUiAgICAgICAgc3pQbmFtZVszMl07DQogICAgV09SRCAgICAgICAgd1RlY2hub2xvZ3k7ICAg
ICAgICAgDQogICAgV09SRCAgICAgICAgd1Jlc2VydmVkMTsgICAgICAgICAgDQogICAgRFdPUkQg
ICAgICAgZHdTdXBwb3J0OyAgICAgICAgICAgDQogICAgR1VJRCAgICAgICAgTWFudWZhY3R1cmVy
R3VpZDsgICAgDQogICAgR1VJRCAgICAgICAgUHJvZHVjdEd1aWQ7ICAgICAgICAgDQogICAgR1VJ
RCAgICAgICAgTmFtZUd1aWQ7ICAgICAgICAgICAgDQp9IEFVWENBUFMyQSwgKlBBVVhDQVBTMkEs
ICpOUEFVWENBUFMyQSwgKkxQQVVYQ0FQUzJBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnQVVYQ0FQUzJX
IHsNCiAgICBXT1JEICAgICAgICB3TWlkOyAgICAgICAgICAgICAgICANCiAgICBXT1JEICAgICAg
ICB3UGlkOyAgICAgICAgICAgICAgICANCiAgICBNTVZFUlNJT04gICB2RHJpdmVyVmVyc2lvbjsg
ICAgICANCiAgICBXQ0hBUiAgICAgICBzelBuYW1lWzMyXTsNCiAgICBXT1JEICAgICAgICB3VGVj
aG5vbG9neTsgICAgICAgICANCiAgICBXT1JEICAgICAgICB3UmVzZXJ2ZWQxOyAgICAgICAgICAN
CiAgICBEV09SRCAgICAgICBkd1N1cHBvcnQ7ICAgICAgICAgICANCiAgICBHVUlEICAgICAgICBN
YW51ZmFjdHVyZXJHdWlkOyAgICANCiAgICBHVUlEICAgICAgICBQcm9kdWN0R3VpZDsgICAgICAg
ICANCiAgICBHVUlEICAgICAgICBOYW1lR3VpZDsgICAgICAgICAgICANCn0gQVVYQ0FQUzJXLCAq
UEFVWENBUFMyVywgKk5QQVVYQ0FQUzJXLCAqTFBBVVhDQVBTMlc7DQoNCnR5cGVkZWYgQVVYQ0FQ
UzJXIEFVWENBUFMyOw0KdHlwZWRlZiBQQVVYQ0FQUzJXIFBBVVhDQVBTMjsNCnR5cGVkZWYgTlBB
VVhDQVBTMlcgTlBBVVhDQVBTMjsNCnR5cGVkZWYgTFBBVVhDQVBTMlcgTFBBVVhDQVBTMjsNCg0K
DQoNCg0KDQojbGluZSAxNjI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDE2MzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSU5UDQpfX3N0ZGNhbGwNCmF1eEdldE51bURl
dnMoDQogICAgdm9pZA0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVT
VUxUDQpfX3N0ZGNhbGwNCmF1eEdldERldkNhcHNBKA0KICAgICAgVUlOVF9QVFIgdURldmljZUlE
LA0KICAgICAgTFBBVVhDQVBTQSBwYWMsDQogICAgICBVSU5UIGNiYWMNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCmF1eEdldERldkNhcHNXKA0K
ICAgICAgVUlOVF9QVFIgdURldmljZUlELA0KICAgICAgTFBBVVhDQVBTVyBwYWMsDQogICAgICBV
SU5UIGNiYWMNCiAgICApOw0KDQoNCg0KDQoNCiNsaW5lIDE2NzcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVh
cGkuaCINCg0KDQoNCiNsaW5lIDE2ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KYXV4U2V0Vm9sdW1lKA0KICAgICAg
VUlOVCB1RGV2aWNlSUQsDQogICAgICBEV09SRCBkd1ZvbHVtZQ0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KYXV4R2V0Vm9sdW1lKA0KICAgICAg
VUlOVCB1RGV2aWNlSUQsDQogICAgICBMUERXT1JEIHBkd1ZvbHVtZQ0KICAgICk7DQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KYXV4T3V0TWVzc2Fn
ZSgNCiAgICAgIFVJTlQgdURldmljZUlELA0KICAgICAgVUlOVCB1TXNnLA0KICAgICAgRFdPUkRf
UFRSIGR3MSwNCiAgICAgIERXT1JEX1BUUiBkdzINCiAgICApOw0KDQoNCg0KI2xpbmUgMTcxMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KI2xpbmUgMTcxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5o
Ig0KDQojbGluZSAxNzE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0K
c3RydWN0IEhNSVhFUk9CSl9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSE1JWEVST0JK
X18gKkhNSVhFUk9CSjsNCnR5cGVkZWYgSE1JWEVST0JKICAqTFBITUlYRVJPQko7DQoNCnN0cnVj
dCBITUlYRVJfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IEhNSVhFUl9fICpITUlYRVI7
DQp0eXBlZGVmIEhNSVhFUiAgICAgICpMUEhNSVhFUjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJTlQN
Cl9fc3RkY2FsbA0KbWl4ZXJHZXROdW1EZXZzKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCB0YWdNSVhFUkNBUFNBIHsNCiAgICBXT1JEICAgICAgICAgICAgd01pZDsg
ICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgICAgICAgICAgIHdQaWQ7ICAgICAgICAgICAg
ICAgICAgIA0KICAgIE1NVkVSU0lPTiAgICAgICB2RHJpdmVyVmVyc2lvbjsgICAgICAgICANCiAg
ICBDSEFSICAgICAgICAgICAgc3pQbmFtZVszMl07ICAgDQogICAgRFdPUkQgICAgICAgICAgIGZk
d1N1cHBvcnQ7ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBjRGVzdGluYXRpb25z
OyAgICAgICAgICANCn0gTUlYRVJDQVBTQSwgKlBNSVhFUkNBUFNBLCAqTFBNSVhFUkNBUFNBOw0K
dHlwZWRlZiBzdHJ1Y3QgdGFnTUlYRVJDQVBTVyB7DQogICAgV09SRCAgICAgICAgICAgIHdNaWQ7
ICAgICAgICAgICAgICAgICAgIA0KICAgIFdPUkQgICAgICAgICAgICB3UGlkOyAgICAgICAgICAg
ICAgICAgICANCiAgICBNTVZFUlNJT04gICAgICAgdkRyaXZlclZlcnNpb247ICAgICAgICAgDQog
ICAgV0NIQVIgICAgICAgICAgIHN6UG5hbWVbMzJdOyAgIA0KICAgIERXT1JEICAgICAgICAgICBm
ZHdTdXBwb3J0OyAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgY0Rlc3RpbmF0aW9u
czsgICAgICAgICAgDQp9IE1JWEVSQ0FQU1csICpQTUlYRVJDQVBTVywgKkxQTUlYRVJDQVBTVzsN
Cg0KdHlwZWRlZiBNSVhFUkNBUFNXIE1JWEVSQ0FQUzsNCnR5cGVkZWYgUE1JWEVSQ0FQU1cgUE1J
WEVSQ0FQUzsNCnR5cGVkZWYgTFBNSVhFUkNBUFNXIExQTUlYRVJDQVBTOw0KDQoNCg0KDQojbGlu
ZSAxNzkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQp0eXBlZGVmIHN0cnVjdCB0YWdNSVhFUkNB
UFMyQSB7DQogICAgV09SRCAgICAgICAgICAgIHdNaWQ7ICAgICAgICAgICAgICAgICAgIA0KICAg
IFdPUkQgICAgICAgICAgICB3UGlkOyAgICAgICAgICAgICAgICAgICANCiAgICBNTVZFUlNJT04g
ICAgICAgdkRyaXZlclZlcnNpb247ICAgICAgICAgDQogICAgQ0hBUiAgICAgICAgICAgIHN6UG5h
bWVbMzJdOyAgIA0KICAgIERXT1JEICAgICAgICAgICBmZHdTdXBwb3J0OyAgICAgICAgICAgICAN
CiAgICBEV09SRCAgICAgICAgICAgY0Rlc3RpbmF0aW9uczsgICAgICAgICAgDQogICAgR1VJRCAg
ICAgICAgICAgIE1hbnVmYWN0dXJlckd1aWQ7ICAgICAgIA0KICAgIEdVSUQgICAgICAgICAgICBQ
cm9kdWN0R3VpZDsgICAgICAgICAgICANCiAgICBHVUlEICAgICAgICAgICAgTmFtZUd1aWQ7ICAg
ICAgICAgICAgICAgDQp9IE1JWEVSQ0FQUzJBLCAqUE1JWEVSQ0FQUzJBLCAqTFBNSVhFUkNBUFMy
QTsNCnR5cGVkZWYgc3RydWN0IHRhZ01JWEVSQ0FQUzJXIHsNCiAgICBXT1JEICAgICAgICAgICAg
d01pZDsgICAgICAgICAgICAgICAgICAgDQogICAgV09SRCAgICAgICAgICAgIHdQaWQ7ICAgICAg
ICAgICAgICAgICAgIA0KICAgIE1NVkVSU0lPTiAgICAgICB2RHJpdmVyVmVyc2lvbjsgICAgICAg
ICANCiAgICBXQ0hBUiAgICAgICAgICAgc3pQbmFtZVszMl07ICAgDQogICAgRFdPUkQgICAgICAg
ICAgIGZkd1N1cHBvcnQ7ICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBjRGVzdGlu
YXRpb25zOyAgICAgICAgICANCiAgICBHVUlEICAgICAgICAgICAgTWFudWZhY3R1cmVyR3VpZDsg
ICAgICAgDQogICAgR1VJRCAgICAgICAgICAgIFByb2R1Y3RHdWlkOyAgICAgICAgICAgIA0KICAg
IEdVSUQgICAgICAgICAgICBOYW1lR3VpZDsgICAgICAgICAgICAgICANCn0gTUlYRVJDQVBTMlcs
ICpQTUlYRVJDQVBTMlcsICpMUE1JWEVSQ0FQUzJXOw0KDQp0eXBlZGVmIE1JWEVSQ0FQUzJXIE1J
WEVSQ0FQUzI7DQp0eXBlZGVmIFBNSVhFUkNBUFMyVyBQTUlYRVJDQVBTMjsNCnR5cGVkZWYgTFBN
SVhFUkNBUFMyVyBMUE1JWEVSQ0FQUzI7DQoNCg0KDQoNCiNsaW5lIDE4MjEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxtbWVhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTgzMiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1tZWFwaS5oIg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRj
YWxsDQptaXhlckdldERldkNhcHNBKA0KICAgICAgVUlOVF9QVFIgdU14SWQsDQogICAgICBMUE1J
WEVSQ0FQU0EgcG14Y2FwcywNCiAgICAgIFVJTlQgY2JteGNhcHMNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1peGVyR2V0RGV2Q2Fwc1coDQog
ICAgICBVSU5UX1BUUiB1TXhJZCwNCiAgICAgIExQTUlYRVJDQVBTVyBwbXhjYXBzLA0KICAgICAg
VUlOVCBjYm14Y2Fwcw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTg1OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1tZWFwaS5oIg0KDQoNCg0KI2xpbmUgMTg2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1peGVyT3BlbigNCiAg
ICAgIExQSE1JWEVSIHBobXgsDQogICAgICBVSU5UIHVNeElkLA0KICAgICAgRFdPUkRfUFRSIGR3
Q2FsbGJhY2ssDQogICAgICBEV09SRF9QVFIgZHdJbnN0YW5jZSwNCiAgICAgIERXT1JEIGZkd09w
ZW4NCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2Fs
bA0KbWl4ZXJDbG9zZSgNCiAgICAgIEhNSVhFUiBobXgNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KRFdPUkQNCl9fc3RkY2FsbA0KbWl4ZXJNZXNzYWdlKA0KICAgICAgSE1JWEVS
IGhteCwNCiAgICAgIFVJTlQgdU1zZywNCiAgICAgIERXT1JEX1BUUiBkd1BhcmFtMSwNCiAgICAg
IERXT1JEX1BUUiBkd1BhcmFtMg0KICAgICk7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01J
WEVSTElORUEgew0KICAgIERXT1JEICAgICAgIGNiU3RydWN0OyAgICAgICAgICAgICAgIA0KICAg
IERXT1JEICAgICAgIGR3RGVzdGluYXRpb247ICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3
U291cmNlOyAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3TGluZUlEOyAgICAgICAg
ICAgICAgIA0KICAgIERXT1JEICAgICAgIGZkd0xpbmU7ICAgICAgICAgICAgICAgIA0KICAgIERX
T1JEX1BUUiAgIGR3VXNlcjsgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3Q29t
cG9uZW50VHlwZTsgICAgICAgIA0KICAgIERXT1JEICAgICAgIGNDaGFubmVsczsgICAgICAgICAg
ICAgIA0KICAgIERXT1JEICAgICAgIGNDb25uZWN0aW9uczsgICAgICAgICAgIA0KICAgIERXT1JE
ICAgICAgIGNDb250cm9sczsgICAgICAgICAgICAgIA0KICAgIENIQVIgICAgICAgIHN6U2hvcnRO
YW1lWzE2XTsNCiAgICBDSEFSICAgICAgICBzek5hbWVbNjRdOw0KICAgIHN0cnVjdCB7DQogICAg
ICAgIERXT1JEICAgICAgIGR3VHlwZTsgICAgICAgICAgICAgICAgIA0KICAgICAgICBEV09SRCAg
ICAgICBkd0RldmljZUlEOyAgICAgICAgICAgICANCiAgICAgICAgV09SRCAgICAgICAgd01pZDsg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgIFdPUkQgICAgICAgIHdQaWQ7ICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICBNTVZFUlNJT04gICB2RHJpdmVyVmVyc2lvbjsgICAgICAgICANCiAg
ICAgICAgQ0hBUiAgICAgICAgc3pQbmFtZVszMl07ICAgDQogICAgfSBUYXJnZXQ7DQp9IE1JWEVS
TElORUEsICpQTUlYRVJMSU5FQSwgKkxQTUlYRVJMSU5FQTsNCnR5cGVkZWYgc3RydWN0IHRhZ01J
WEVSTElORVcgew0KICAgIERXT1JEICAgICAgIGNiU3RydWN0OyAgICAgICAgICAgICAgIA0KICAg
IERXT1JEICAgICAgIGR3RGVzdGluYXRpb247ICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3
U291cmNlOyAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3TGluZUlEOyAgICAgICAg
ICAgICAgIA0KICAgIERXT1JEICAgICAgIGZkd0xpbmU7ICAgICAgICAgICAgICAgIA0KICAgIERX
T1JEX1BUUiAgIGR3VXNlcjsgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgIGR3Q29t
cG9uZW50VHlwZTsgICAgICAgIA0KICAgIERXT1JEICAgICAgIGNDaGFubmVsczsgICAgICAgICAg
ICAgIA0KICAgIERXT1JEICAgICAgIGNDb25uZWN0aW9uczsgICAgICAgICAgIA0KICAgIERXT1JE
ICAgICAgIGNDb250cm9sczsgICAgICAgICAgICAgIA0KICAgIFdDSEFSICAgICAgIHN6U2hvcnRO
YW1lWzE2XTsNCiAgICBXQ0hBUiAgICAgICBzek5hbWVbNjRdOw0KICAgIHN0cnVjdCB7DQogICAg
ICAgIERXT1JEICAgICAgIGR3VHlwZTsgICAgICAgICAgICAgICAgIA0KICAgICAgICBEV09SRCAg
ICAgICBkd0RldmljZUlEOyAgICAgICAgICAgICANCiAgICAgICAgV09SRCAgICAgICAgd01pZDsg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgIFdPUkQgICAgICAgIHdQaWQ7ICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICBNTVZFUlNJT04gICB2RHJpdmVyVmVyc2lvbjsgICAgICAgICANCiAg
ICAgICAgV0NIQVIgICAgICAgc3pQbmFtZVszMl07ICAgDQogICAgfSBUYXJnZXQ7DQp9IE1JWEVS
TElORVcsICpQTUlYRVJMSU5FVywgKkxQTUlYRVJMSU5FVzsNCg0KdHlwZWRlZiBNSVhFUkxJTkVX
IE1JWEVSTElORTsNCnR5cGVkZWYgUE1JWEVSTElORVcgUE1JWEVSTElORTsNCnR5cGVkZWYgTFBN
SVhFUkxJTkVXIExQTUlYRVJMSU5FOw0KDQoNCg0KDQojbGluZSAxOTQ5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxOTc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1N
UkVTVUxUDQpfX3N0ZGNhbGwNCm1peGVyR2V0TGluZUluZm9BKA0KICAgICAgSE1JWEVST0JKIGht
eG9iaiwNCiAgICAgIExQTUlYRVJMSU5FQSBwbXhsLA0KICAgICAgRFdPUkQgZmR3SW5mbw0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KbWl4ZXJH
ZXRMaW5lSW5mb1coDQogICAgICBITUlYRVJPQkogaG14b2JqLA0KICAgICAgTFBNSVhFUkxJTkVX
IHBteGwsDQogICAgICBEV09SRCBmZHdJbmZvDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAyMDUx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQojbGluZSAyMDU1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bW1lYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVT
VUxUDQpfX3N0ZGNhbGwNCm1peGVyR2V0SUQoDQogICAgICBITUlYRVJPQkogaG14b2JqLA0KICAg
ICAgVUlOVCAgICogcHVNeElkLA0KICAgICAgRFdPUkQgZmR3SWQNCiAgICApOw0KDQoNCg0KDQoN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01JWEVSQ09OVFJPTEEgew0KICAgIERXT1JEICAgICAg
ICAgICBjYlN0cnVjdDsgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBkd0NvbnRyb2xJ
RDsgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBkd0NvbnRyb2xUeXBlOyAgICAgIA0KICAg
IERXT1JEICAgICAgICAgICBmZHdDb250cm9sOyAgICAgICAgIA0KICAgIERXT1JEICAgICAgICAg
ICBjTXVsdGlwbGVJdGVtczsgICAgIA0KICAgIENIQVIgICAgICAgICAgICBzelNob3J0TmFtZVsx
Nl07DQogICAgQ0hBUiAgICAgICAgICAgIHN6TmFtZVs2NF07DQogICAgdW5pb24gew0KICAgICAg
ICBzdHJ1Y3Qgew0KICAgICAgICAgICAgTE9ORyAgICBsTWluaW11bTsgICAgICAgICAgIA0KICAg
ICAgICAgICAgTE9ORyAgICBsTWF4aW11bTsgICAgICAgICAgIA0KICAgICAgICB9IDsNCiAgICAg
ICAgc3RydWN0IHsNCiAgICAgICAgICAgIERXT1JEICAgZHdNaW5pbXVtOyAgICAgICAgICANCiAg
ICAgICAgICAgIERXT1JEICAgZHdNYXhpbXVtOyAgICAgICAgICANCiAgICAgICAgfSA7DQogICAg
ICAgIERXT1JEICAgICAgIGR3UmVzZXJ2ZWRbNl07DQogICAgfSBCb3VuZHM7DQogICAgdW5pb24g
ew0KICAgICAgICBEV09SRCAgICAgICBjU3RlcHM7ICAgICAgICAgICAgIA0KICAgICAgICBEV09S
RCAgICAgICBjYkN1c3RvbURhdGE7ICAgICAgIA0KICAgICAgICBEV09SRCAgICAgICBkd1Jlc2Vy
dmVkWzZdOyAgICAgIA0KICAgIH0gTWV0cmljczsNCn0gTUlYRVJDT05UUk9MQSwgKlBNSVhFUkNP
TlRST0xBLCAqTFBNSVhFUkNPTlRST0xBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnTUlYRVJDT05UUk9M
VyB7DQogICAgRFdPUkQgICAgICAgICAgIGNiU3RydWN0OyAgICAgICAgICAgDQogICAgRFdPUkQg
ICAgICAgICAgIGR3Q29udHJvbElEOyAgICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIGR3Q29u
dHJvbFR5cGU7ICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIGZkd0NvbnRyb2w7ICAgICAgICAg
DQogICAgRFdPUkQgICAgICAgICAgIGNNdWx0aXBsZUl0ZW1zOyAgICAgDQogICAgV0NIQVIgICAg
ICAgICAgIHN6U2hvcnROYW1lWzE2XTsNCiAgICBXQ0hBUiAgICAgICAgICAgc3pOYW1lWzY0XTsN
CiAgICB1bmlvbiB7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBMT05HICAgIGxNaW5p
bXVtOyAgICAgICAgICAgDQogICAgICAgICAgICBMT05HICAgIGxNYXhpbXVtOyAgICAgICAgICAg
DQogICAgICAgIH0gOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgRFdPUkQgICBkd01p
bmltdW07ICAgICAgICAgIA0KICAgICAgICAgICAgRFdPUkQgICBkd01heGltdW07ICAgICAgICAg
IA0KICAgICAgICB9IDsNCiAgICAgICAgRFdPUkQgICAgICAgZHdSZXNlcnZlZFs2XTsNCiAgICB9
IEJvdW5kczsNCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEICAgICAgIGNTdGVwczsgICAgICAg
ICAgICAgDQogICAgICAgIERXT1JEICAgICAgIGNiQ3VzdG9tRGF0YTsgICAgICAgDQogICAgICAg
IERXT1JEICAgICAgIGR3UmVzZXJ2ZWRbNl07ICAgICAgDQogICAgfSBNZXRyaWNzOw0KfSBNSVhF
UkNPTlRST0xXLCAqUE1JWEVSQ09OVFJPTFcsICpMUE1JWEVSQ09OVFJPTFc7DQoNCnR5cGVkZWYg
TUlYRVJDT05UUk9MVyBNSVhFUkNPTlRST0w7DQp0eXBlZGVmIFBNSVhFUkNPTlRST0xXIFBNSVhF
UkNPTlRST0w7DQp0eXBlZGVmIExQTUlYRVJDT05UUk9MVyBMUE1JWEVSQ09OVFJPTDsNCg0KDQoN
Cg0KI2xpbmUgMjEzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjE2NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG1tZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdNSVhFUkxJTkVDT05UUk9MU0Egew0KICAg
IERXT1JEICAgICAgICAgICBjYlN0cnVjdDsgICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIGR3
TGluZUlEOyAgICAgICANCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEICAgICAgIGR3Q29udHJv
bElEOyAgICANCiAgICAgICAgRFdPUkQgICAgICAgZHdDb250cm9sVHlwZTsgIA0KICAgIH0gOw0K
ICAgIERXT1JEICAgICAgICAgICBjQ29udHJvbHM7ICAgICAgDQogICAgRFdPUkQgICAgICAgICAg
IGNibXhjdHJsOyAgICAgICANCiAgICBMUE1JWEVSQ09OVFJPTEEgcGFteGN0cmw7ICAgICAgIA0K
fSBNSVhFUkxJTkVDT05UUk9MU0EsICpQTUlYRVJMSU5FQ09OVFJPTFNBLCAqTFBNSVhFUkxJTkVD
T05UUk9MU0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdNSVhFUkxJTkVDT05UUk9MU1cgew0KICAgIERX
T1JEICAgICAgICAgICBjYlN0cnVjdDsgICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIGR3TGlu
ZUlEOyAgICAgICANCiAgICB1bmlvbiB7DQogICAgICAgIERXT1JEICAgICAgIGR3Q29udHJvbElE
OyAgICANCiAgICAgICAgRFdPUkQgICAgICAgZHdDb250cm9sVHlwZTsgIA0KICAgIH0gOw0KICAg
IERXT1JEICAgICAgICAgICBjQ29udHJvbHM7ICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIGNi
bXhjdHJsOyAgICAgICANCiAgICBMUE1JWEVSQ09OVFJPTFcgcGFteGN0cmw7ICAgICAgIA0KfSBN
SVhFUkxJTkVDT05UUk9MU1csICpQTUlYRVJMSU5FQ09OVFJPTFNXLCAqTFBNSVhFUkxJTkVDT05U
Uk9MU1c7DQoNCnR5cGVkZWYgTUlYRVJMSU5FQ09OVFJPTFNXIE1JWEVSTElORUNPTlRST0xTOw0K
dHlwZWRlZiBQTUlYRVJMSU5FQ09OVFJPTFNXIFBNSVhFUkxJTkVDT05UUk9MUzsNCnR5cGVkZWYg
TFBNSVhFUkxJTkVDT05UUk9MU1cgTFBNSVhFUkxJTkVDT05UUk9MUzsNCg0KDQoNCg0KI2xpbmUg
MjI4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAyMjk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0ZGNhbGwNCm1peGVyR2V0TGluZUNvbnRyb2xzQSgN
CiAgICAgIEhNSVhFUk9CSiBobXhvYmosDQogICAgICBMUE1JWEVSTElORUNPTlRST0xTQSBwbXhs
YywNCiAgICAgIERXT1JEIGZkd0NvbnRyb2xzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaXhlckdldExpbmVDb250cm9sc1coDQogICAgICBI
TUlYRVJPQkogaG14b2JqLA0KICAgICAgTFBNSVhFUkxJTkVDT05UUk9MU1cgcG14bGMsDQogICAg
ICBEV09SRCBmZHdDb250cm9scw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMjMyNiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KI2xpbmUgMjMzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5o
Ig0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0TUlYRVJDT05UUk9MREVUQUlMUyB7DQog
ICAgRFdPUkQgICAgICAgICAgIGNiU3RydWN0OyAgICAgICANCiAgICBEV09SRCAgICAgICAgICAg
ZHdDb250cm9sSUQ7ICAgIA0KICAgIERXT1JEICAgICAgICAgICBjQ2hhbm5lbHM7ICAgICAgDQog
ICAgdW5pb24gew0KICAgICAgICBIV05EICAgICAgICBod25kT3duZXI7ICAgICAgDQogICAgICAg
IERXT1JEICAgICAgIGNNdWx0aXBsZUl0ZW1zOyANCiAgICB9IDsNCiAgICBEV09SRCAgICAgICAg
ICAgY2JEZXRhaWxzOyAgICAgIA0KICAgIExQVk9JRCAgICAgICAgICBwYURldGFpbHM7ICAgICAg
DQp9IE1JWEVSQ09OVFJPTERFVEFJTFMsICpQTUlYRVJDT05UUk9MREVUQUlMUywgICpMUE1JWEVS
Q09OVFJPTERFVEFJTFM7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ01JWEVSQ09O
VFJPTERFVEFJTFNfTElTVFRFWFRBIHsNCiAgICBEV09SRCAgICAgICAgICAgZHdQYXJhbTE7DQog
ICAgRFdPUkQgICAgICAgICAgIGR3UGFyYW0yOw0KICAgIENIQVIgICAgICAgICAgICBzek5hbWVb
NjRdOw0KfSBNSVhFUkNPTlRST0xERVRBSUxTX0xJU1RURVhUQSwgKlBNSVhFUkNPTlRST0xERVRB
SUxTX0xJU1RURVhUQSwgKkxQTUlYRVJDT05UUk9MREVUQUlMU19MSVNUVEVYVEE7DQp0eXBlZGVm
IHN0cnVjdCB0YWdNSVhFUkNPTlRST0xERVRBSUxTX0xJU1RURVhUVyB7DQogICAgRFdPUkQgICAg
ICAgICAgIGR3UGFyYW0xOw0KICAgIERXT1JEICAgICAgICAgICBkd1BhcmFtMjsNCiAgICBXQ0hB
UiAgICAgICAgICAgc3pOYW1lWzY0XTsNCn0gTUlYRVJDT05UUk9MREVUQUlMU19MSVNUVEVYVFcs
ICpQTUlYRVJDT05UUk9MREVUQUlMU19MSVNUVEVYVFcsICpMUE1JWEVSQ09OVFJPTERFVEFJTFNf
TElTVFRFWFRXOw0KDQp0eXBlZGVmIE1JWEVSQ09OVFJPTERFVEFJTFNfTElTVFRFWFRXIE1JWEVS
Q09OVFJPTERFVEFJTFNfTElTVFRFWFQ7DQp0eXBlZGVmIFBNSVhFUkNPTlRST0xERVRBSUxTX0xJ
U1RURVhUVyBQTUlYRVJDT05UUk9MREVUQUlMU19MSVNUVEVYVDsNCnR5cGVkZWYgTFBNSVhFUkNP
TlRST0xERVRBSUxTX0xJU1RURVhUVyBMUE1JWEVSQ09OVFJPTERFVEFJTFNfTElTVFRFWFQ7DQoN
Cg0KDQoNCiNsaW5lIDIzNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMjM4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IHRNSVhFUkNPTlRST0xERVRBSUxTX0JPT0xFQU4gew0KICAgIExPTkcgICAgICAgICAgICBm
VmFsdWU7DQp9ICAgICAgIE1JWEVSQ09OVFJPTERFVEFJTFNfQk9PTEVBTiwNCiAgICAgICpQTUlY
RVJDT05UUk9MREVUQUlMU19CT09MRUFOLA0KICAqTFBNSVhFUkNPTlRST0xERVRBSUxTX0JPT0xF
QU47DQoNCnR5cGVkZWYgc3RydWN0IHRNSVhFUkNPTlRST0xERVRBSUxTX1NJR05FRCB7DQogICAg
TE9ORyAgICAgICAgICAgIGxWYWx1ZTsNCn0gICAgICAgTUlYRVJDT05UUk9MREVUQUlMU19TSUdO
RUQsDQogICAgICAqUE1JWEVSQ09OVFJPTERFVEFJTFNfU0lHTkVELA0KICAqTFBNSVhFUkNPTlRS
T0xERVRBSUxTX1NJR05FRDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdE1JWEVSQ09OVFJPTERFVEFJTFNf
VU5TSUdORUQgew0KICAgIERXT1JEICAgICAgICAgICBkd1ZhbHVlOw0KfSAgICAgICBNSVhFUkNP
TlRST0xERVRBSUxTX1VOU0lHTkVELA0KICAgICAgKlBNSVhFUkNPTlRST0xERVRBSUxTX1VOU0lH
TkVELA0KICAqTFBNSVhFUkNPTlRST0xERVRBSUxTX1VOU0lHTkVEOw0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaXhlckdldENvbnRyb2xEZXRhaWxz
QSgNCiAgICAgIEhNSVhFUk9CSiBobXhvYmosDQogICAgICBMUE1JWEVSQ09OVFJPTERFVEFJTFMg
cG14Y2QsDQogICAgICBEV09SRCBmZHdEZXRhaWxzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQptaXhlckdldENvbnRyb2xEZXRhaWxzVygNCiAg
ICAgIEhNSVhFUk9CSiBobXhvYmosDQogICAgICBMUE1JWEVSQ09OVFJPTERFVEFJTFMgcG14Y2Qs
DQogICAgICBEV09SRCBmZHdEZXRhaWxzDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAyNDMwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCg0KDQojbGluZSAyNDM0ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1l
YXBpLmgiDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1NUkVTVUxUDQpfX3N0
ZGNhbGwNCm1peGVyU2V0Q29udHJvbERldGFpbHMoDQogICAgICBITUlYRVJPQkogaG14b2JqLA0K
ICAgICAgTFBNSVhFUkNPTlRST0xERVRBSUxTIHBteGNkLA0KICAgICAgRFdPUkQgZmR3RGV0YWls
cw0KICAgICk7DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0NTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbWVhcGku
aCINCg0KI2xpbmUgMjQ1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KDQp9DQojbGluZSAyNDYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1lYXBpLmgiDQoNCiNsaW5lIDI0
NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtbWVhcGkuaCINCg0KDQojbGluZSA3NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1t
c3lzdGVtLmgiDQoNCiNsaW5lIDc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXN0ZW0uaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZWFwaS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRp
bWVhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXNjb20u
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRpbWVhcGkuaCIN
Cg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZWFwaS5oIg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0aW1lY2Fwc190YWcgew0KICAg
IFVJTlQgICAgd1BlcmlvZE1pbjsgICAgIA0KICAgIFVJTlQgICAgd1BlcmlvZE1heDsgICAgIA0K
fSBUSU1FQ0FQUywgKlBUSU1FQ0FQUywgICpOUFRJTUVDQVBTLCAgKkxQVElNRUNBUFM7DQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQp0aW1lR2V0U3lzdGVt
VGltZSgNCiAgICAgIExQTU1USU1FIHBtbXQsDQogICAgICBVSU5UIGNibW10DQogICAgKTsNCg0K
I2xpbmUgNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx0aW1lYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KRFdPUkQNCl9fc3RkY2FsbA0KdGltZUdldFRpbWUoDQogICAgdm9pZA0KICAgICk7DQoNCiNs
aW5lIDY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZWFwaS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
Ck1NUkVTVUxUDQpfX3N0ZGNhbGwNCnRpbWVHZXREZXZDYXBzKA0KICAgICAgTFBUSU1FQ0FQUyBw
dGMsDQogICAgICBVSU5UIGNidGMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk1N
UkVTVUxUDQpfX3N0ZGNhbGwNCnRpbWVCZWdpblBlcmlvZCgNCiAgICAgIFVJTlQgdVBlcmlvZA0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0KdGlt
ZUVuZFBlcmlvZCgNCiAgICAgIFVJTlQgdVBlcmlvZA0KICAgICk7DQoNCg0KI2xpbmUgOTIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx0aW1lYXBpLmgiDQoNCiNsaW5lIDk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZWFwaS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSA5OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHRpbWVh
cGkuaCINCg0KI2xpbmUgMTAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdGltZWFwaS5oIg0KDQoNCiNsaW5lIDg5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbW1zeXN0ZW0uaCINCg0KDQoNCiNsaW5lIDkzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bW1zeXN0ZW0uaCINCg0KI2xpbmUgOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbXN5c3RlbS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcam95c3RpY2thcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KI2xpbmUgMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxqb3lzdGlja2FwaS5oIg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtbXN5c2NvbS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam95c3RpY2thcGkuaCINCg0KDQpleHRlcm4g
IkMiIHsNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam95c3RpY2thcGkuaCINCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnSk9ZQ0FQU0Egew0KICAgIFdPUkQgICAgd01p
ZDsgICAgICAgICAgICAgICAgDQogICAgV09SRCAgICB3UGlkOyAgICAgICAgICAgICAgICANCiAg
ICBDSEFSICAgIHN6UG5hbWVbMzJdOw0KICAgIFVJTlQgICAgd1htaW47ICAgICAgICAgICAgICAg
DQogICAgVUlOVCAgICB3WG1heDsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdZbWluOyAg
ICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1ltYXg7ICAgICAgICAgICAgICAgDQogICAgVUlO
VCAgICB3Wm1pbjsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdabWF4OyAgICAgICAgICAg
ICAgIA0KICAgIFVJTlQgICAgd051bUJ1dHRvbnM7ICAgICAgICAgDQogICAgVUlOVCAgICB3UGVy
aW9kTWluOyAgICAgICAgICANCiAgICBVSU5UICAgIHdQZXJpb2RNYXg7ICAgICAgICAgIA0KDQog
ICAgVUlOVCAgICB3Um1pbjsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdSbWF4OyAgICAg
ICAgICAgICAgIA0KICAgIFVJTlQgICAgd1VtaW47ICAgICAgICAgICAgICAgDQogICAgVUlOVCAg
ICB3VW1heDsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdWbWluOyAgICAgICAgICAgICAg
IA0KICAgIFVJTlQgICAgd1ZtYXg7ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICB3Q2Fwczsg
ICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdNYXhBeGVzOyAgICAgICAgICAgIA0KICAgIFVJ
TlQgICAgd051bUF4ZXM7ICAgICAgICAgICAgDQogICAgVUlOVCAgICB3TWF4QnV0dG9uczsgICAg
ICAgICANCiAgICBDSEFSICAgIHN6UmVnS2V5WzMyXTsNCiAgICBDSEFSICAgIHN6T0VNVnhEWzI2
MF07IA0KI2xpbmUgMTYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam95c3RpY2thcGkuaCINCn0gSk9ZQ0FQU0Es
ICpQSk9ZQ0FQU0EsICpOUEpPWUNBUFNBLCAqTFBKT1lDQVBTQTsNCnR5cGVkZWYgc3RydWN0IHRh
Z0pPWUNBUFNXIHsNCiAgICBXT1JEICAgIHdNaWQ7ICAgICAgICAgICAgICAgIA0KICAgIFdPUkQg
ICAgd1BpZDsgICAgICAgICAgICAgICAgDQogICAgV0NIQVIgICBzelBuYW1lWzMyXTsNCiAgICBV
SU5UICAgIHdYbWluOyAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1htYXg7ICAgICAgICAg
ICAgICAgDQogICAgVUlOVCAgICB3WW1pbjsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdZ
bWF4OyAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1ptaW47ICAgICAgICAgICAgICAgDQog
ICAgVUlOVCAgICB3Wm1heDsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdOdW1CdXR0b25z
OyAgICAgICAgIA0KICAgIFVJTlQgICAgd1BlcmlvZE1pbjsgICAgICAgICAgDQogICAgVUlOVCAg
ICB3UGVyaW9kTWF4OyAgICAgICAgICANCg0KICAgIFVJTlQgICAgd1JtaW47ICAgICAgICAgICAg
ICAgDQogICAgVUlOVCAgICB3Um1heDsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdVbWlu
OyAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1VtYXg7ICAgICAgICAgICAgICAgDQogICAg
VUlOVCAgICB3Vm1pbjsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdWbWF4OyAgICAgICAg
ICAgICAgIA0KICAgIFVJTlQgICAgd0NhcHM7ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICB3
TWF4QXhlczsgICAgICAgICAgICANCiAgICBVSU5UICAgIHdOdW1BeGVzOyAgICAgICAgICAgIA0K
ICAgIFVJTlQgICAgd01heEJ1dHRvbnM7ICAgICAgICAgDQogICAgV0NIQVIgICBzelJlZ0tleVsz
Ml07DQogICAgV0NIQVIgICBzek9FTVZ4RFsyNjBdOyANCiNsaW5lIDE5MSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGpveXN0aWNrYXBpLmgiDQp9IEpPWUNBUFNXLCAqUEpPWUNBUFNXLCAqTlBKT1lDQVBTVywgKkxQ
Sk9ZQ0FQU1c7DQoNCnR5cGVkZWYgSk9ZQ0FQU1cgSk9ZQ0FQUzsNCnR5cGVkZWYgUEpPWUNBUFNX
IFBKT1lDQVBTOw0KdHlwZWRlZiBOUEpPWUNBUFNXIE5QSk9ZQ0FQUzsNCnR5cGVkZWYgTFBKT1lD
QVBTVyBMUEpPWUNBUFM7DQoNCg0KDQoNCg0KI2xpbmUgMjAzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam95c3Rp
Y2thcGkuaCINCnR5cGVkZWYgc3RydWN0IHRhZ0pPWUNBUFMyQSB7DQogICAgV09SRCAgICB3TWlk
OyAgICAgICAgICAgICAgICANCiAgICBXT1JEICAgIHdQaWQ7ICAgICAgICAgICAgICAgIA0KICAg
IENIQVIgICAgc3pQbmFtZVszMl07DQogICAgVUlOVCAgICB3WG1pbjsgICAgICAgICAgICAgICAN
CiAgICBVSU5UICAgIHdYbWF4OyAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1ltaW47ICAg
ICAgICAgICAgICAgDQogICAgVUlOVCAgICB3WW1heDsgICAgICAgICAgICAgICANCiAgICBVSU5U
ICAgIHdabWluOyAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1ptYXg7ICAgICAgICAgICAg
ICAgDQogICAgVUlOVCAgICB3TnVtQnV0dG9uczsgICAgICAgICANCiAgICBVSU5UICAgIHdQZXJp
b2RNaW47ICAgICAgICAgIA0KICAgIFVJTlQgICAgd1BlcmlvZE1heDsgICAgICAgICAgDQogICAg
VUlOVCAgICB3Um1pbjsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdSbWF4OyAgICAgICAg
ICAgICAgIA0KICAgIFVJTlQgICAgd1VtaW47ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICB3
VW1heDsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdWbWluOyAgICAgICAgICAgICAgIA0K
ICAgIFVJTlQgICAgd1ZtYXg7ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICB3Q2FwczsgICAg
ICAgICAgICAgICANCiAgICBVSU5UICAgIHdNYXhBeGVzOyAgICAgICAgICAgIA0KICAgIFVJTlQg
ICAgd051bUF4ZXM7ICAgICAgICAgICAgDQogICAgVUlOVCAgICB3TWF4QnV0dG9uczsgICAgICAg
ICANCiAgICBDSEFSICAgIHN6UmVnS2V5WzMyXTsNCiAgICBDSEFSICAgIHN6T0VNVnhEWzI2MF07
IA0KICAgIEdVSUQgICAgTWFudWZhY3R1cmVyR3VpZDsgICAgDQogICAgR1VJRCAgICBQcm9kdWN0
R3VpZDsgICAgICAgICANCiAgICBHVUlEICAgIE5hbWVHdWlkOyAgICAgICAgICAgIA0KfSBKT1lD
QVBTMkEsICpQSk9ZQ0FQUzJBLCAqTlBKT1lDQVBTMkEsICpMUEpPWUNBUFMyQTsNCnR5cGVkZWYg
c3RydWN0IHRhZ0pPWUNBUFMyVyB7DQogICAgV09SRCAgICB3TWlkOyAgICAgICAgICAgICAgICAN
CiAgICBXT1JEICAgIHdQaWQ7ICAgICAgICAgICAgICAgIA0KICAgIFdDSEFSICAgc3pQbmFtZVsz
Ml07DQogICAgVUlOVCAgICB3WG1pbjsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdYbWF4
OyAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1ltaW47ICAgICAgICAgICAgICAgDQogICAg
VUlOVCAgICB3WW1heDsgICAgICAgICAgICAgICANCiAgICBVSU5UICAgIHdabWluOyAgICAgICAg
ICAgICAgIA0KICAgIFVJTlQgICAgd1ptYXg7ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICB3
TnVtQnV0dG9uczsgICAgICAgICANCiAgICBVSU5UICAgIHdQZXJpb2RNaW47ICAgICAgICAgIA0K
ICAgIFVJTlQgICAgd1BlcmlvZE1heDsgICAgICAgICAgDQogICAgVUlOVCAgICB3Um1pbjsgICAg
ICAgICAgICAgICANCiAgICBVSU5UICAgIHdSbWF4OyAgICAgICAgICAgICAgIA0KICAgIFVJTlQg
ICAgd1VtaW47ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICB3VW1heDsgICAgICAgICAgICAg
ICANCiAgICBVSU5UICAgIHdWbWluOyAgICAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd1ZtYXg7
ICAgICAgICAgICAgICAgDQogICAgVUlOVCAgICB3Q2FwczsgICAgICAgICAgICAgICANCiAgICBV
SU5UICAgIHdNYXhBeGVzOyAgICAgICAgICAgIA0KICAgIFVJTlQgICAgd051bUF4ZXM7ICAgICAg
ICAgICAgDQogICAgVUlOVCAgICB3TWF4QnV0dG9uczsgICAgICAgICANCiAgICBXQ0hBUiAgIHN6
UmVnS2V5WzMyXTsNCiAgICBXQ0hBUiAgIHN6T0VNVnhEWzI2MF07IA0KICAgIEdVSUQgICAgTWFu
dWZhY3R1cmVyR3VpZDsgICAgDQogICAgR1VJRCAgICBQcm9kdWN0R3VpZDsgICAgICAgICANCiAg
ICBHVUlEICAgIE5hbWVHdWlkOyAgICAgICAgICAgIA0KfSBKT1lDQVBTMlcsICpQSk9ZQ0FQUzJX
LCAqTlBKT1lDQVBTMlcsICpMUEpPWUNBUFMyVzsNCg0KdHlwZWRlZiBKT1lDQVBTMlcgSk9ZQ0FQ
UzI7DQp0eXBlZGVmIFBKT1lDQVBTMlcgUEpPWUNBUFMyOw0KdHlwZWRlZiBOUEpPWUNBUFMyVyBO
UEpPWUNBUFMyOw0KdHlwZWRlZiBMUEpPWUNBUFMyVyBMUEpPWUNBUFMyOw0KDQoNCg0KDQoNCiNs
aW5lIDI3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGpveXN0aWNrYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMDMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxqb3lzdGlja2FwaS5oIg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgam95aW5mb190YWcg
ew0KICAgIFVJTlQgd1hwb3M7ICAgICAgICAgICAgICAgICANCiAgICBVSU5UIHdZcG9zOyAgICAg
ICAgICAgICAgICAgDQogICAgVUlOVCB3WnBvczsgICAgICAgICAgICAgICAgIA0KICAgIFVJTlQg
d0J1dHRvbnM7ICAgICAgICAgICAgICANCn0gSk9ZSU5GTywgKlBKT1lJTkZPLCAgKk5QSk9ZSU5G
TywgICpMUEpPWUlORk87DQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgam95aW5mb2V4X3RhZyB7DQogICAg
RFdPUkQgZHdTaXplOyAgICAgICAgICAgICAgICANCiAgICBEV09SRCBkd0ZsYWdzOyAgICAgICAg
ICAgICAgIA0KICAgIERXT1JEIGR3WHBvczsgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgZHdZ
cG9zOyAgICAgICAgICAgICAgICANCiAgICBEV09SRCBkd1pwb3M7ICAgICAgICAgICAgICAgIA0K
ICAgIERXT1JEIGR3UnBvczsgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgZHdVcG9zOyAgICAg
ICAgICAgICAgICANCiAgICBEV09SRCBkd1Zwb3M7ICAgICAgICAgICAgICAgIA0KICAgIERXT1JE
IGR3QnV0dG9uczsgICAgICAgICAgICAgDQogICAgRFdPUkQgZHdCdXR0b25OdW1iZXI7ICAgICAg
ICANCiAgICBEV09SRCBkd1BPVjsgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEIGR3UmVzZXJ2
ZWQxOyAgICAgICAgICAgDQogICAgRFdPUkQgZHdSZXNlcnZlZDI7ICAgICAgICAgICANCn0gSk9Z
SU5GT0VYLCAqUEpPWUlORk9FWCwgICpOUEpPWUlORk9FWCwgICpMUEpPWUlORk9FWDsNCiNsaW5l
IDMzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXGpveXN0aWNrYXBpLmgiDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0Kam95R2V0UG9zRXgoDQogICAgICBVSU5UIHVK
b3lJRCwNCiAgICAgIExQSk9ZSU5GT0VYIHBqaQ0KICAgICk7DQoNCiNsaW5lIDM0MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGpveXN0aWNrYXBpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KVUlOVA0KX19z
dGRjYWxsDQpqb3lHZXROdW1EZXZzKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQpqb3lHZXREZXZDYXBzQSgNCiAgICAg
IFVJTlRfUFRSIHVKb3lJRCwNCiAgICAgIExQSk9ZQ0FQU0EgcGpjLA0KICAgICAgVUlOVCBjYmpj
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQpq
b3lHZXREZXZDYXBzVygNCiAgICAgIFVJTlRfUFRSIHVKb3lJRCwNCiAgICAgIExQSk9ZQ0FQU1cg
cGpjLA0KICAgICAgVUlOVCBjYmpjDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAzNzYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxqb3lzdGlja2FwaS5oIg0KDQoNCg0KI2xpbmUgMzgwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcam95
c3RpY2thcGkuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxs
DQpqb3lHZXRQb3MoDQogICAgICBVSU5UIHVKb3lJRCwNCiAgICAgIExQSk9ZSU5GTyBwamkNCiAg
ICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0Kam95
R2V0VGhyZXNob2xkKA0KICAgICAgVUlOVCB1Sm95SUQsDQogICAgICBMUFVJTlQgcHVUaHJlc2hv
bGQNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2Fs
bA0Kam95UmVsZWFzZUNhcHR1cmUoDQogICAgICBVSU5UIHVKb3lJRA0KICAgICk7DQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpNTVJFU1VMVA0KX19zdGRjYWxsDQpqb3lTZXRDYXB0dXJlKA0K
ICAgICAgSFdORCBod25kLA0KICAgICAgVUlOVCB1Sm95SUQsDQogICAgICBVSU5UIHVQZXJpb2Qs
DQogICAgICBCT09MIGZDaGFuZ2VkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
Ck1NUkVTVUxUDQpfX3N0ZGNhbGwNCmpveVNldFRocmVzaG9sZCgNCiAgICAgIFVJTlQgdUpveUlE
LA0KICAgICAgVUlOVCB1VGhyZXNob2xkDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KTU1SRVNVTFQNCl9fc3RkY2FsbA0Kam95Q29uZmlnQ2hhbmdlZCgNCiAgICAgIERXT1JE
IGR3RmxhZ3MNCiAgICApOw0KDQojbGluZSA0MzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxqb3lzdGlja2FwaS5o
Ig0KDQojbGluZSA0MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxqb3lzdGlja2FwaS5oIg0KDQojbGluZSA0NDAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxqb3lzdGlja2FwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQoj
bGluZSA0NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxqb3lzdGlja2FwaS5oIg0KDQojbGluZSA0NDcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxqb3lzdGlja2FwaS5oIg0KDQoNCiNsaW5lIDEwNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lz
dGVtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KICAgIA0KI2xpbmUgMTE4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbW1zeXN0ZW0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbW1zeXN0ZW0uaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfSAgICAgICAgICAgICAgICAgICAgICAgDQojbGluZSAx
NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtbXN5c3RlbS5oIg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccG9wcGFjay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEgcGFjayhw
b3ApDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KDQoNCiNsaW5l
IDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDM3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHBvcHBhY2suaCINCiNsaW5lIDE1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzdGVtLmgiDQoNCg0K
DQoNCiNsaW5lIDE2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1tc3lzdGVtLmgiDQoNCiNsaW5lIDE2MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1tc3lzdGVtLmgiDQoNCg0KDQoNCiNsaW5lIDE5NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bmRvd3MuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYjMwLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAyMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG5i
MzAuaCINCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG5iMzAu
aCINCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4
MjApIA0KI2xpbmUgMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYjMwLmgiDQoNCiNwcmFnbWEgcmVnaW9uIERl
c2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfTkNCIHsNCiAgICBVQ0hBUiAgIG5jYl9jb21tYW5kOyAgICAgICAgICAgIA0KICAgIFVDSEFS
ICAgbmNiX3JldGNvZGU7ICAgICAgICAgICAgDQogICAgVUNIQVIgICBuY2JfbHNuOyAgICAgICAg
ICAgICAgICANCiAgICBVQ0hBUiAgIG5jYl9udW07ICAgICAgICAgICAgICAgIA0KICAgIFBVQ0hB
UiAgbmNiX2J1ZmZlcjsgICAgICAgICAgICAgDQogICAgV09SRCAgICBuY2JfbGVuZ3RoOyAgICAg
ICAgICAgICANCiAgICBVQ0hBUiAgIG5jYl9jYWxsbmFtZVsxNl07IA0KICAgIFVDSEFSICAgbmNi
X25hbWVbMTZdOyAgICAgDQogICAgVUNIQVIgICBuY2JfcnRvOyAgICAgICAgICAgICAgICANCiAg
ICBVQ0hBUiAgIG5jYl9zdG87ICAgICAgICAgICAgICAgIA0KICAgIHZvaWQgKF9fc3RkY2FsbCAq
bmNiX3Bvc3QpKCBzdHJ1Y3QgX05DQiAqICk7IA0KICAgIFVDSEFSICAgbmNiX2xhbmFfbnVtOyAg
ICAgICAgICAgDQogICAgVUNIQVIgICBuY2JfY21kX2NwbHQ7ICAgICAgICAgICANCg0KICAgIFVD
SEFSICAgbmNiX3Jlc2VydmVbMThdOyAgICAgICAgDQoNCg0KI2xpbmUgNjcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxuYjMwLmgiDQogICAgSEFORExFICBuY2JfZXZlbnQ7ICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCn0gTkNCLCAq
UE5DQjsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9BREFQVEVSX1NUQVRVUyB7DQogICAg
VUNIQVIgICBhZGFwdGVyX2FkZHJlc3NbNl07DQogICAgVUNIQVIgICByZXZfbWFqb3I7DQogICAg
VUNIQVIgICByZXNlcnZlZDA7DQogICAgVUNIQVIgICBhZGFwdGVyX3R5cGU7DQogICAgVUNIQVIg
ICByZXZfbWlub3I7DQogICAgV09SRCAgICBkdXJhdGlvbjsNCiAgICBXT1JEICAgIGZybXJfcmVj
djsNCiAgICBXT1JEICAgIGZybXJfeG1pdDsNCg0KICAgIFdPUkQgICAgaWZyYW1lX3JlY3ZfZXJy
Ow0KDQogICAgV09SRCAgICB4bWl0X2Fib3J0czsNCiAgICBEV09SRCAgIHhtaXRfc3VjY2VzczsN
CiAgICBEV09SRCAgIHJlY3Zfc3VjY2VzczsNCg0KICAgIFdPUkQgICAgaWZyYW1lX3htaXRfZXJy
Ow0KDQogICAgV09SRCAgICByZWN2X2J1ZmZfdW5hdmFpbDsNCiAgICBXT1JEICAgIHQxX3RpbWVv
dXRzOw0KICAgIFdPUkQgICAgdGlfdGltZW91dHM7DQogICAgRFdPUkQgICByZXNlcnZlZDE7DQog
ICAgV09SRCAgICBmcmVlX25jYnM7DQogICAgV09SRCAgICBtYXhfY2ZnX25jYnM7DQogICAgV09S
RCAgICBtYXhfbmNiczsNCiAgICBXT1JEICAgIHhtaXRfYnVmX3VuYXZhaWw7DQogICAgV09SRCAg
ICBtYXhfZGdyYW1fc2l6ZTsNCiAgICBXT1JEICAgIHBlbmRpbmdfc2VzczsNCiAgICBXT1JEICAg
IG1heF9jZmdfc2VzczsNCiAgICBXT1JEICAgIG1heF9zZXNzOw0KICAgIFdPUkQgICAgbWF4X3Nl
c3NfcGt0X3NpemU7DQogICAgV09SRCAgICBuYW1lX2NvdW50Ow0KfSBBREFQVEVSX1NUQVRVUywg
KlBBREFQVEVSX1NUQVRVUzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX05BTUVfQlVGRkVSIHsNCiAgICBV
Q0hBUiAgIG5hbWVbMTZdOw0KICAgIFVDSEFSICAgbmFtZV9udW07DQogICAgVUNIQVIgICBuYW1l
X2ZsYWdzOw0KfSBOQU1FX0JVRkZFUiwgKlBOQU1FX0JVRkZFUjsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TRVNTSU9OX0hFQURFUiB7
DQogICAgVUNIQVIgICBzZXNzX25hbWU7DQogICAgVUNIQVIgICBudW1fc2VzczsNCiAgICBVQ0hB
UiAgIHJjdl9kZ19vdXRzdGFuZGluZzsNCiAgICBVQ0hBUiAgIHJjdl9hbnlfb3V0c3RhbmRpbmc7
DQp9IFNFU1NJT05fSEVBREVSLCAqUFNFU1NJT05fSEVBREVSOw0KDQp0eXBlZGVmIHN0cnVjdCBf
U0VTU0lPTl9CVUZGRVIgew0KICAgIFVDSEFSICAgbHNuOw0KICAgIFVDSEFSICAgc3RhdGU7DQog
ICAgVUNIQVIgICBsb2NhbF9uYW1lWzE2XTsNCiAgICBVQ0hBUiAgIHJlbW90ZV9uYW1lWzE2XTsN
CiAgICBVQ0hBUiAgIHJjdnNfb3V0c3RhbmRpbmc7DQogICAgVUNIQVIgICBzZW5kc19vdXRzdGFu
ZGluZzsNCn0gU0VTU0lPTl9CVUZGRVIsICpQU0VTU0lPTl9CVUZGRVI7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0xBTkFfRU5VTSB7DQogICAgVUNI
QVIgICBsZW5ndGg7ICAgICAgICAgDQogICAgVUNIQVIgICBsYW5hWzI1NCsxXTsNCn0gTEFOQV9F
TlVNLCAqUExBTkFfRU5VTTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9GSU5EX05BTUVf
SEVBREVSIHsNCiAgICBXT1JEICAgIG5vZGVfY291bnQ7DQogICAgVUNIQVIgICByZXNlcnZlZDsN
CiAgICBVQ0hBUiAgIHVuaXF1ZV9ncm91cDsNCn0gRklORF9OQU1FX0hFQURFUiwgKlBGSU5EX05B
TUVfSEVBREVSOw0KDQp0eXBlZGVmIHN0cnVjdCBfRklORF9OQU1FX0JVRkZFUiB7DQogICAgVUNI
QVIgICBsZW5ndGg7DQogICAgVUNIQVIgICBhY2Nlc3NfY29udHJvbDsNCiAgICBVQ0hBUiAgIGZy
YW1lX2NvbnRyb2w7DQogICAgVUNIQVIgICBkZXN0aW5hdGlvbl9hZGRyWzZdOw0KICAgIFVDSEFS
ICAgc291cmNlX2FkZHJbNl07DQogICAgVUNIQVIgICByb3V0aW5nX2luZm9bMThdOw0KfSBGSU5E
X05BTUVfQlVGRkVSLCAqUEZJTkRfTkFNRV9CVUZGRVI7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBfQUNUSU9OX0hFQURFUiB7DQogICAgVUxPTkcgICB0cmFuc3BvcnRfaWQ7DQogICAgVVNI
T1JUICBhY3Rpb25fY29kZTsNCiAgICBVU0hPUlQgIHJlc2VydmVkOw0KfSBBQ1RJT05fSEVBREVS
LCAqUEFDVElPTl9IRUFERVI7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KVUNIQVINCl9fc3RkY2FsbA0KTmV0YmlvcygNCiAgICBQ
TkNCIHBuY2INCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMjEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxuYjMwLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3Ap
DQojbGluZSAzMjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYjMwLmgiDQoNCg0KfQ0KI2xpbmUgMzMwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbmIzMC5oIg0KDQojbGluZSAzMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxuYjMwLmgiDQojbGlu
ZSAxOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGlu
ZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCINCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDM0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHJwYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwYy5oIg0KDQoNCg0KDQoNCiNsaW5lIDU1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHJwYy5oIg0KDQoNCg0KDQoNCiNsaW5lIDYxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwYy5oIg0KDQojbGluZSA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCINCg0KDQojbGluZSAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3By
YWdtYSBwYWNrKHB1c2gsOCkNCg0KDQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNr
OC5oIg0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4LmgiDQojbGluZSAz
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KI2xpbmUgNjYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjLmgiDQojbGluZSA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCINCg0KDQoNCg0KDQoj
bGluZSA3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCINCg0KdHlwZWRlZiB2b2lkICogSV9SUENf
SEFORExFOw0KDQoNCg0KDQp0eXBlZGVmICAgbG9uZyBSUENfU1RBVFVTOw0KDQoNCiNsaW5lIDgz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHJwYy5oIg0KDQoNCg0KI2xpbmUgODcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxycGMuaCINCg0KDQoNCg0KDQojbGluZSAxMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjLmgiDQoN
Cg0KDQoNCg0KI2xpbmUgMTIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwYy5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMjMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjZGNlLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAyNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxycGNkY2UuaCINCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOjQ2NjgpIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojbGluZSAzMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24g
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmICAgdW5zaWdu
ZWQgY2hhciAgKiBSUENfQ1NUUjsNCg0KDQoNCg0KI2xpbmUgNjkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cnBjZGNlLmgiDQp0eXBlZGVmICAgdW5zaWduZWQgc2hvcnQgICogUlBDX1dTVFI7DQp0eXBlZGVm
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKiBSUENfQ1dTVFI7DQojbGluZSA3MiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxycGNkY2UuaCINCg0KdHlwZWRlZiBJX1JQQ19IQU5ETEUgUlBDX0JJTkRJTkdfSEFO
RExFOw0KdHlwZWRlZiBSUENfQklORElOR19IQU5ETEUgaGFuZGxlX3Q7DQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBHVUlEIFVVSUQ7DQoNCg0KI2xpbmUgODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBj
ZGNlLmgiDQojbGluZSA4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KI2xpbmUgOTAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9SUENfQklORElOR19WRUNUT1INCnsNCiAgICB1bnNpZ25lZCBsb25nIENvdW50Ow0KICAg
ICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmdIWzFdOw0KfSBSUENfQklORElOR19WRUNUT1I7
DQoNCg0KI2xpbmUgMTAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQp0eXBlZGVmIHN0
cnVjdCBfVVVJRF9WRUNUT1INCnsNCiAgdW5zaWduZWQgbG9uZyBDb3VudDsNCiAgICBVVUlEICpV
dWlkWzFdOw0KfSBVVUlEX1ZFQ1RPUjsNCg0KDQojbGluZSAxMTIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cnBjZGNlLmgiDQoNCiNsaW5lIDExNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVD
b3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQp0eXBlZGVmIHZvaWQgICogUlBDX0lGX0hB
TkRMRTsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9SUENfSUZfSUQNCnsNCiAgICBVVUlEIFV1aWQ7
DQogICAgdW5zaWduZWQgc2hvcnQgVmVyc01ham9yOw0KICAgIHVuc2lnbmVkIHNob3J0IFZlcnNN
aW5vcjsNCn0gUlBDX0lGX0lEOw0KI2xpbmUgMTMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5o
Ig0KDQojbGluZSAxMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjZGNlLmgiDQoNCg0KDQoNCiNsaW5lIDE5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNk
Y2UuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19QUk9UU0VRX1ZFQ1RPUkEN
CnsNCiAgICB1bnNpZ25lZCBpbnQgQ291bnQ7DQogICAgdW5zaWduZWQgY2hhciAgKiBQcm90c2Vx
WzFdOw0KfSBSUENfUFJPVFNFUV9WRUNUT1JBOw0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX1BST1RT
RVFfVkVDVE9SVw0Kew0KICAgIHVuc2lnbmVkIGludCBDb3VudDsNCiAgICB1bnNpZ25lZCBzaG9y
dCAgKiBQcm90c2VxWzFdOw0KfSBSUENfUFJPVFNFUV9WRUNUT1JXOw0KDQoNCg0KDQoNCiNsaW5l
IDIzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDI0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCnR5cGVkZWYgc3RydWN0IF9SUENfUE9M
SUNZIHsNCiAgICB1bnNpZ25lZCBpbnQgTGVuZ3RoIDsNCiAgICB1bnNpZ25lZCBsb25nIEVuZHBv
aW50RmxhZ3MgOw0KICAgIHVuc2lnbmVkIGxvbmcgTklDRmxhZ3MgOw0KICAgIH0gUlBDX1BPTElD
WSwgICAqUFJQQ19QT0xJQ1kgOw0KDQp0eXBlZGVmIHZvaWQgX19zdGRjYWxsDQpSUENfT0JKRUNU
X0lOUV9GTiAoDQogICAgICBVVUlEICAqIE9iamVjdFV1aWQsDQogICAgICBVVUlEICAqIFR5cGVV
dWlkLA0KICAgICAgUlBDX1NUQVRVUyAgKiBTdGF0dXMNCiAgICApOw0KDQogIA0KdHlwZWRlZiBS
UENfU1RBVFVTIF9fc3RkY2FsbA0KUlBDX0lGX0NBTExCQUNLX0ZOICgNCiAgICAgIFJQQ19JRl9I
QU5ETEUgIEludGVyZmFjZVV1aWQsDQogICAgICB2b2lkICpDb250ZXh0DQogICAgKSA7DQoNCnR5
cGVkZWYgdm9pZCBfX3N0ZGNhbGwNClJQQ19TRUNVUklUWV9DQUxMQkFDS19GTiAoDQogICAgICB2
b2lkICpDb250ZXh0DQogICAgKSA7DQoNCiNsaW5lIDI2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNk
Y2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZh
bWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QNCnsNCiAgICB1bnNpZ25lZCBpbnQgQ291bnQ7DQogICAgdW5zaWduZWQgbG9uZyBTdGF0
c1sxXTsNCn0gUlBDX1NUQVRTX1ZFQ1RPUjsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0DQp7
DQogIHVuc2lnbmVkIGxvbmcgQ291bnQ7DQogIFJQQ19JRl9JRCAgKiBJZklkWzFdOw0KfSBSUENf
SUZfSURfVkVDVE9SOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0K
X19zdGRjYWxsDQpScGNCaW5kaW5nQ29weSAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgU291
cmNlQmluZGluZywNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSAgKiBEZXN0aW5hdGlvbkJpbmRp
bmcNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRj
YWxsDQpScGNCaW5kaW5nRnJlZSAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgICogQmluZGlu
Zw0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0
ZGNhbGwNClJwY0JpbmRpbmdTZXRPcHRpb24gKCANCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBo
QmluZGluZywNCiAgICAgIHVuc2lnbmVkIGxvbmcgICAgICBvcHRpb24sDQogICAgICBVTE9OR19Q
VFIgICAgICAgICAgb3B0aW9uVmFsdWUgDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQmluZGluZ0lucU9wdGlvbiAoDQogICAg
ICAgUlBDX0JJTkRJTkdfSEFORExFIGhCaW5kaW5nLA0KICAgICAgIHVuc2lnbmVkIGxvbmcgICAg
ICBvcHRpb24sDQogICAgICBVTE9OR19QVFIgICAgICAgICAqcE9wdGlvblZhbHVlIA0KICAgICk7
DQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19z
dGRjYWxsDQpScGNCaW5kaW5nRnJvbVN0cmluZ0JpbmRpbmdBICggICAgDQogICAgICBSUENfQ1NU
UiBTdHJpbmdCaW5kaW5nLA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFICAqIEJpbmRpbmcNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0K
UnBjQmluZGluZ0Zyb21TdHJpbmdCaW5kaW5nVyAoDQogICAgICBSUENfV1NUUiBTdHJpbmdCaW5k
aW5nLCAgICAgICAgDQogICAgICBSUENfQklORElOR19IQU5ETEUgICogQmluZGluZw0KICAgICk7
DQoNCg0KDQoNCg0KI2xpbmUgMzYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCiNs
aW5lIDM3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KI2xpbmUgMzc1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNTc0dldENvbnRleHRCaW5kaW5nICgNCiAg
ICAgIHZvaWQgKkNvbnRleHRIYW5kbGUsDQogICAgICBSUENfQklORElOR19IQU5ETEUgICogQmlu
ZGluZw0KICAgICk7DQoNCiNsaW5lIDM5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVT
DQpfX3N0ZGNhbGwNClJwY0JpbmRpbmdJbnFPYmplY3QgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFO
RExFIEJpbmRpbmcsDQogICAgICBVVUlEICAqIE9iamVjdFV1aWQNCiAgICApOw0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNCaW5kaW5nUmVz
ZXQgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcNCiAgICApOw0KDQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNCaW5k
aW5nU2V0T2JqZWN0ICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAg
VVVJRCAgKiBPYmplY3RVdWlkDQogICAgKTsNCg0KI2xpbmUgNDI4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0K
UlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNNZ210SW5xRGVmYXVsdFByb3RlY3RMZXZlbCAoDQog
ICAgICAgdW5zaWduZWQgbG9uZyBBdXRoblN2YywNCiAgICAgIHVuc2lnbmVkIGxvbmcgICpBdXRo
bkxldmVsDQogICAgKTsNCg0KI2xpbmUgNDQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9u
IEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0K
UlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNCaW5kaW5nVG9TdHJpbmdCaW5kaW5nQSAoDQogICAg
ICBSUENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAgUlBDX0NTVFIgICogU3RyaW5nQmlu
ZGluZw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19z
dGRjYWxsDQpScGNCaW5kaW5nVG9TdHJpbmdCaW5kaW5nVyAoDQogICAgICBSUENfQklORElOR19I
QU5ETEUgQmluZGluZywNCiAgICAgUlBDX1dTVFIgICogU3RyaW5nQmluZGluZw0KICAgICk7DQoN
Cg0KDQoNCg0KI2xpbmUgNDc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQojbGluZSA0
NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0K
DQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0JpbmRpbmdW
ZWN0b3JGcmVlICgNCiAgICAgIFJQQ19CSU5ESU5HX1ZFQ1RPUiAgKiAgKiBCaW5kaW5nVmVjdG9y
DQogICAgKTsNCg0KI2xpbmUgNTA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQ
Q19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU3RyaW5nQmluZGluZ0NvbXBvc2VBICgNCiAgICAgIFJQ
Q19DU1RSIE9ialV1aWQsDQogICAgICBSUENfQ1NUUiBQcm90U2VxLCAgICANCiAgICAgIFJQQ19D
U1RSIE5ldHdvcmtBZGRyLA0KICAgICAgUlBDX0NTVFIgRW5kcG9pbnQsDQogICAgICBSUENfQ1NU
UiBPcHRpb25zLA0KICAgICBSUENfQ1NUUiAgKiBTdHJpbmdCaW5kaW5nDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1N0cmluZ0Jp
bmRpbmdDb21wb3NlVyAoDQogICAgICBSUENfV1NUUiBPYmpVdWlkLA0KICAgICAgUlBDX1dTVFIg
UHJvdFNlcSwgICAgDQogICAgICBSUENfV1NUUiBOZXR3b3JrQWRkciwNCiAgICAgIFJQQ19XU1RS
IEVuZHBvaW50LA0KICAgICAgUlBDX1dTVFIgT3B0aW9ucywNCiAgICAgUlBDX1dTVFIgICogU3Ry
aW5nQmluZGluZw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNTQ5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwY2RjZS5oIg0KDQojbGluZSA1NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNTc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1N0cmluZ0JpbmRp
bmdQYXJzZUEgKA0KICAgICAgUlBDX0NTVFIgU3RyaW5nQmluZGluZywgICAgDQogICAgIFJQQ19D
U1RSICAqIE9ialV1aWQsDQogICAgIFJQQ19DU1RSICAqIFByb3RzZXEsDQogICAgIFJQQ19DU1RS
ICAqIE5ldHdvcmtBZGRyLA0KICAgICBSUENfQ1NUUiAgKiBFbmRwb2ludCwNCiAgICAgUlBDX0NT
VFIgICogTmV0d29ya09wdGlvbnMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAN
ClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU3RyaW5nQmluZGluZ1BhcnNlVyAoDQogICAgICBS
UENfV1NUUiBTdHJpbmdCaW5kaW5nLCAgICANCiAgICAgUlBDX1dTVFIgICogT2JqVXVpZCwNCiAg
ICAgUlBDX1dTVFIgICogUHJvdHNlcSwNCiAgICAgUlBDX1dTVFIgICogTmV0d29ya0FkZHIsDQog
ICAgIFJQQ19XU1RSICAqIEVuZHBvaW50LA0KICAgICBSUENfV1NUUiAgKiBOZXR3b3JrT3B0aW9u
cw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgNjE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5o
Ig0KDQojbGluZSA2MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjM5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQojbGluZSA2NDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjZGNlLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVT
DQpfX3N0ZGNhbGwNClJwY1N0cmluZ0ZyZWVBICgNCiAgICAgIFJQQ19DU1RSICAqIFN0cmluZyAg
ICANCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2Fs
bA0KUnBjU3RyaW5nRnJlZVcgKA0KICAgICAgUlBDX1dTVFIgICogU3RyaW5nDQogICAgKTsNCg0K
DQoNCg0KDQojbGluZSA2NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCiNsaW5lIDY3
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNk
Y2UuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2Fs
bA0KUnBjSWZJbnFJZCAoDQogICAgICBSUENfSUZfSEFORExFIFJwY0lmSGFuZGxlLA0KICAgICAg
UlBDX0lGX0lEICAqIFJwY0lmSWQNCiAgICApOw0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24g
QXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY05ldHdvcmtJc1Byb3RzZXFWYWxp
ZEEgKA0KICAgICAgUlBDX0NTVFIgUHJvdHNlcSAgICAgDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY05ldHdvcmtJc1Byb3RzZXFW
YWxpZFcgKA0KICAgICAgUlBDX1dTVFIgUHJvdHNlcQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUg
NzI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQojbGluZSA3MzAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA3NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY01nbXRJbnFD
b21UaW1lb3V0ICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAgdW5z
aWduZWQgaW50ICAqIFRpbWVvdXQNCiAgICApOw0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0
aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY01nbXRTZXRDb21UaW1lb3V0ICgNCiAgICAg
IFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAgdW5zaWduZWQgaW50IFRpbWVvdXQN
CiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRj
YWxsDQpScGNNZ210U2V0Q2FuY2VsVGltZW91dCgNCiAgICAgIGxvbmcgVGltZW91dA0KICAgICk7
DQoNCiNsaW5lIDc4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2Fs
bA0KUnBjTmV0d29ya0lucVByb3RzZXFzQSAoDQogICAgIFJQQ19QUk9UU0VRX1ZFQ1RPUkEgICog
ICogUHJvdHNlcVZlY3RvciAgICANCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAN
ClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjTmV0d29ya0lucVByb3RzZXFzVyAoDQogICAgIFJQ
Q19QUk9UU0VRX1ZFQ1RPUlcgICogICogUHJvdHNlcVZlY3RvciAgICANCiAgICApOw0KDQoNCg0K
DQoNCiNsaW5lIDgxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgODI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNPYmplY3RJbnFUeXBl
ICgNCiAgICAgIFVVSUQgICogT2JqVXVpZCwNCiAgICAgICBVVUlEICAqIFR5cGVVdWlkDQogICAg
KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0K
UnBjT2JqZWN0U2V0SW5xRm4gKA0KICAgICAgUlBDX09CSkVDVF9JTlFfRk4gICogSW5xdWlyeUZu
DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3Rk
Y2FsbA0KUnBjT2JqZWN0U2V0VHlwZSAoDQogICAgICBVVUlEICAqIE9ialV1aWQsDQogICAgICAg
VVVJRCAgKiBUeXBlVXVpZA0KICAgICk7DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1Byb3RzZXFWZWN0b3JGcmVlQSAoDQogICAgICBS
UENfUFJPVFNFUV9WRUNUT1JBICAqICAqIFByb3RzZXFWZWN0b3INCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjUHJvdHNlcVZlY3RvckZy
ZWVXICgNCiAgICAgIFJQQ19QUk9UU0VRX1ZFQ1RPUlcgICogICogUHJvdHNlcVZlY3Rvcg0KICAg
ICk7DQoNCg0KDQoNCg0KI2xpbmUgODc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA4ODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1Nl
cnZlcklucUJpbmRpbmdzICgNCiAgICAgUlBDX0JJTkRJTkdfVkVDVE9SICAqICAqIEJpbmRpbmdW
ZWN0b3INCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0K
X19zdGRjYWxsDQpScGNTZXJ2ZXJJbnFCaW5kaW5nc0V4ICgNCiAgICAgIHZvaWQgICogU2VjdXJp
dHlEZXNjcmlwdG9yLA0KICAgICBSUENfQklORElOR19WRUNUT1IgICogICogQmluZGluZ1ZlY3Rv
cg0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0
ZGNhbGwNClJwY1NlcnZlcklucUlmICgNCiAgICAgIFJQQ19JRl9IQU5ETEUgSWZTcGVjLA0KICAg
ICAgVVVJRCAgKiBNZ3JUeXBlVXVpZCwNCiAgICAgdm9pZCAgKiAgKiBNZ3JFcHYNCiAgICApOw0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNT
ZXJ2ZXJMaXN0ZW4gKA0KICAgICAgdW5zaWduZWQgaW50IE1pbmltdW1DYWxsVGhyZWFkcywNCiAg
ICAgIHVuc2lnbmVkIGludCBNYXhDYWxscywNCiAgICAgIHVuc2lnbmVkIGludCBEb250V2FpdA0K
ICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNh
bGwNClJwY1NlcnZlclJlZ2lzdGVySWYgKA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMsDQog
ICAgICBVVUlEICAqIE1nclR5cGVVdWlkLA0KICAgICAgdm9pZCAgKiBNZ3JFcHYNCiAgICApOw0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNT
ZXJ2ZXJSZWdpc3RlcklmRXggKA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMsDQogICAgICBV
VUlEICAqIE1nclR5cGVVdWlkLA0KICAgICAgdm9pZCAgKiBNZ3JFcHYsDQogICAgICB1bnNpZ25l
ZCBpbnQgRmxhZ3MsDQogICAgICB1bnNpZ25lZCBpbnQgTWF4Q2FsbHMsDQogICAgICBSUENfSUZf
Q0FMTEJBQ0tfRk4gICpJZkNhbGxiYWNrDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU2VydmVyUmVnaXN0ZXJJZjIgKA0KICAgICAg
UlBDX0lGX0hBTkRMRSBJZlNwZWMsDQogICAgICBVVUlEICogTWdyVHlwZVV1aWQsDQogICAgICB2
b2lkICogTWdyRXB2LA0KICAgICAgdW5zaWduZWQgaW50IEZsYWdzLA0KICAgICAgdW5zaWduZWQg
aW50IE1heENhbGxzLA0KICAgICAgdW5zaWduZWQgaW50IE1heFJwY1NpemUsDQogICAgICBSUENf
SUZfQ0FMTEJBQ0tfRk4gKklmQ2FsbGJhY2tGbg0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDk4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU2VydmVy
VW5yZWdpc3RlcklmICgNCiAgICAgIFJQQ19JRl9IQU5ETEUgSWZTcGVjLA0KICAgICAgVVVJRCAg
KiBNZ3JUeXBlVXVpZCwNCiAgICAgIHVuc2lnbmVkIGludCBXYWl0Rm9yQ2FsbHNUb0NvbXBsZXRl
DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRj
YWxsDQpScGNTZXJ2ZXJVbnJlZ2lzdGVySWZFeCAoDQogICAgICBSUENfSUZfSEFORExFIElmU3Bl
YywNCiAgICAgIFVVSUQgICogTWdyVHlwZVV1aWQsDQogICAgICBpbnQgUnVuZG93bkNvbnRleHRI
YW5kbGVzDQogICAgKTsNCiNsaW5lIDEwMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1Nl
cnZlclVzZUFsbFByb3RzZXFzICgNCiAgICAgIHVuc2lnbmVkIGludCBNYXhDYWxscywNCiAgICAg
IHZvaWQgICogU2VjdXJpdHlEZXNjcmlwdG9yDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU2VydmVyVXNlQWxsUHJvdHNlcXNF
eCAoDQogICAgICB1bnNpZ25lZCBpbnQgTWF4Q2FsbHMsDQogICAgICB2b2lkICAqIFNlY3VyaXR5
RGVzY3JpcHRvciwNCiAgICAgIFBSUENfUE9MSUNZIFBvbGljeQ0KICAgICk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1NlcnZlclVzZUFs
bFByb3RzZXFzSWYgKA0KICAgICAgdW5zaWduZWQgaW50IE1heENhbGxzLA0KICAgICAgUlBDX0lG
X0hBTkRMRSBJZlNwZWMsDQogICAgICB2b2lkICAqIFNlY3VyaXR5RGVzY3JpcHRvcg0KICAgICk7
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJw
Y1NlcnZlclVzZUFsbFByb3RzZXFzSWZFeCAoDQogICAgICB1bnNpZ25lZCBpbnQgTWF4Q2FsbHMs
DQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIHZvaWQgICogU2VjdXJpdHlEZXNj
cmlwdG9yLA0KICAgICAgUFJQQ19QT0xJQ1kgUG9saWN5DQogICAgKTsNCg0KDQoNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNTZXJ2ZXJV
c2VQcm90c2VxQSAoDQogICAgICBSUENfQ1NUUiBQcm90c2VxLA0KICAgICAgdW5zaWduZWQgaW50
IE1heENhbGxzLA0KICAgICAgdm9pZCAgKiBTZWN1cml0eURlc2NyaXB0b3INCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU2VydmVy
VXNlUHJvdHNlcUV4QSAoDQogICAgICBSUENfQ1NUUiBQcm90c2VxLA0KICAgICAgdW5zaWduZWQg
aW50IE1heENhbGxzLA0KICAgICAgdm9pZCAgKiBTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBQ
UlBDX1BPTElDWSBQb2xpY3kNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQ
Q19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU2VydmVyVXNlUHJvdHNlcVcgKA0KICAgICAgUlBDX1dT
VFIgUHJvdHNlcSwNCiAgICAgIHVuc2lnbmVkIGludCBNYXhDYWxscywNCiAgICAgIHZvaWQgICog
U2VjdXJpdHlEZXNjcmlwdG9yDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpS
UENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1NlcnZlclVzZVByb3RzZXFFeFcgKA0KICAgICAgUlBD
X1dTVFIgUHJvdHNlcSwNCiAgICAgIHVuc2lnbmVkIGludCBNYXhDYWxscywNCiAgICAgIHZvaWQg
ICogU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICAgUFJQQ19QT0xJQ1kgUG9saWN5DQogICAgKTsN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEzMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU2VydmVyVXNlUHJvdHNlcUVwQSAoDQogICAg
ICBSUENfQ1NUUiBQcm90c2VxLA0KICAgICAgdW5zaWduZWQgaW50IE1heENhbGxzLA0KICAgICAg
UlBDX0NTVFIgRW5kcG9pbnQsDQogICAgICB2b2lkICAqIFNlY3VyaXR5RGVzY3JpcHRvcg0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpS
cGNTZXJ2ZXJVc2VQcm90c2VxRXBFeEEgKA0KICAgICAgUlBDX0NTVFIgUHJvdHNlcSwNCiAgICAg
IHVuc2lnbmVkIGludCBNYXhDYWxscywNCiAgICAgIFJQQ19DU1RSIEVuZHBvaW50LA0KICAgICAg
dm9pZCAgKiBTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICBQUlBDX1BPTElDWSBQb2xpY3kNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0K
UnBjU2VydmVyVXNlUHJvdHNlcUVwVyAoDQogICAgICBSUENfV1NUUiBQcm90c2VxLA0KICAgICAg
dW5zaWduZWQgaW50IE1heENhbGxzLA0KICAgICAgUlBDX1dTVFIgRW5kcG9pbnQsDQogICAgICB2
b2lkICAqIFNlY3VyaXR5RGVzY3JpcHRvcg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNTZXJ2ZXJVc2VQcm90c2VxRXBFeFcgKA0K
ICAgICAgUlBDX1dTVFIgUHJvdHNlcSwNCiAgICAgIHVuc2lnbmVkIGludCBNYXhDYWxscywNCiAg
ICAgIFJQQ19XU1RSIEVuZHBvaW50LA0KICAgICAgdm9pZCAgKiBTZWN1cml0eURlc2NyaXB0b3Is
DQogICAgICBQUlBDX1BPTElDWSBQb2xpY3kNCiAgICApOw0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MTg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTIxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNk
Y2UuaCINCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9f
c3RkY2FsbA0KUnBjU2VydmVyVXNlUHJvdHNlcUlmQSAoDQogICAgICBSUENfQ1NUUiBQcm90c2Vx
LA0KICAgICAgdW5zaWduZWQgaW50IE1heENhbGxzLA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNw
ZWMsDQogICAgICB2b2lkICAqIFNlY3VyaXR5RGVzY3JpcHRvcg0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNTZXJ2ZXJVc2VQcm90
c2VxSWZFeEEgKA0KICAgICAgUlBDX0NTVFIgUHJvdHNlcSwNCiAgICAgIHVuc2lnbmVkIGludCBN
YXhDYWxscywNCiAgICAgIFJQQ19JRl9IQU5ETEUgSWZTcGVjLA0KICAgICAgdm9pZCAgKiBTZWN1
cml0eURlc2NyaXB0b3IsDQogICAgICBQUlBDX1BPTElDWSBQb2xpY3kNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU2VydmVyVXNl
UHJvdHNlcUlmVyAoDQogICAgICBSUENfV1NUUiBQcm90c2VxLA0KICAgICAgdW5zaWduZWQgaW50
IE1heENhbGxzLA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMsDQogICAgICB2b2lkICAqIFNl
Y3VyaXR5RGVzY3JpcHRvcg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBD
X1NUQVRVUw0KX19zdGRjYWxsDQpScGNTZXJ2ZXJVc2VQcm90c2VxSWZFeFcgKA0KICAgICAgUlBD
X1dTVFIgUHJvdHNlcSwNCiAgICAgIHVuc2lnbmVkIGludCBNYXhDYWxscywNCiAgICAgIFJQQ19J
Rl9IQU5ETEUgSWZTcGVjLA0KICAgICAgdm9pZCAgKiBTZWN1cml0eURlc2NyaXB0b3IsDQogICAg
ICBQUlBDX1BPTElDWSBQb2xpY3kNCiAgICApOw0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjcxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCIN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNClJwY1NlcnZlcllpZWxk
ICgNCiAgICB2b2lkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFU
VVMNCl9fc3RkY2FsbA0KUnBjTWdtdFN0YXRzVmVjdG9yRnJlZSAoDQogICAgICBSUENfU1RBVFNf
VkVDVE9SICoqIFN0YXRzVmVjdG9yDQogICAgKTsNCg0KI2xpbmUgMTMxMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxycGNkY2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY01nbXRJbnFTdGF0cyAoDQogICAgICBS
UENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAgUlBDX1NUQVRTX1ZFQ1RPUiAqKiBTdGF0
aXN0aWNzDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMN
Cl9fc3RkY2FsbA0KUnBjTWdtdElzU2VydmVyTGlzdGVuaW5nICgNCiAgICAgIFJQQ19CSU5ESU5H
X0hBTkRMRSBCaW5kaW5nDQogICAgKTsNCg0KI2xpbmUgMTMzOCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxy
cGNkY2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQ
Q19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjTWdtdFN0b3BTZXJ2ZXJMaXN0ZW5pbmcgKA0KICAgICAg
UlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNNZ210V2FpdFNlcnZlckxpc3RlbiAo
DQogICAgdm9pZA0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RB
VFVTDQpfX3N0ZGNhbGwNClJwY01nbXRTZXRTZXJ2ZXJTdGFja1NpemUgKA0KICAgICAgdW5zaWdu
ZWQgbG9uZyBUaHJlYWRTdGFja1NpemUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZA0KX19zdGRjYWxsDQpScGNTc0RvbnRTZXJpYWxpemVDb250ZXh0ICgNCiAgICB2b2lk
DQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3Rk
Y2FsbA0KUnBjTWdtdEVuYWJsZUlkbGVDbGVhbnVwICgNCiAgICB2b2lkDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY01nbXRJbnFJ
ZklkcyAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAgUlBDX0lGX0lE
X1ZFQ1RPUiAgKiAgKiBJZklkVmVjdG9yDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0lmSWRWZWN0b3JGcmVlICgNCiAgICAgIFJQQ19J
Rl9JRF9WRUNUT1IgICogICogSWZJZFZlY3Rvcg0KICAgICk7DQoNCiNsaW5lIDE0MDQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSBy
ZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY01nbXRJbnFTZXJ2ZXJQ
cmluY05hbWVBICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAgdW5z
aWduZWQgbG9uZyBBdXRoblN2YywNCiAgICAgUlBDX0NTVFIgICogU2VydmVyUHJpbmNOYW1lDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwN
ClJwY01nbXRJbnFTZXJ2ZXJQcmluY05hbWVXICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBC
aW5kaW5nLA0KICAgICAgdW5zaWduZWQgbG9uZyBBdXRoblN2YywNCiAgICAgUlBDX1dTVFIgICog
U2VydmVyUHJpbmNOYW1lDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAxNDM2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY2RjZS5oIg0KDQojbGluZSAxNDM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE0NTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNTZXJ2ZXJJbnFEZWZhdWx0UHJp
bmNOYW1lQSAoDQogICAgICB1bnNpZ25lZCBsb25nIEF1dGhuU3ZjLA0KICAgICBSUENfQ1NUUiAg
KiBQcmluY05hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFU
VVMNCl9fc3RkY2FsbA0KUnBjU2VydmVySW5xRGVmYXVsdFByaW5jTmFtZVcgKA0KICAgICAgdW5z
aWduZWQgbG9uZyBBdXRoblN2YywNCiAgICAgUlBDX1dTVFIgICogUHJpbmNOYW1lDQogICAgKTsN
Cg0KDQoNCg0KDQojbGluZSAxNDg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0OTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoN
CiNsaW5lIDE1MDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpS
cGNFcFJlc29sdmVCaW5kaW5nICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0K
ICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMNCiAgICApOw0KDQojbGluZSAxNTE3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNOc0JpbmRpbmdJbnFFbnRy
eU5hbWVBICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAgdW5zaWdu
ZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgIFJQQ19DU1RSICAqIEVudHJ5TmFtZQ0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpS
cGNOc0JpbmRpbmdJbnFFbnRyeU5hbWVXICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5k
aW5nLA0KICAgICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgIFJQQ19XU1RS
ICAqIEVudHJ5TmFtZQ0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgMTU1MSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1NjQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCiNsaW5lIDE1NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBj
ZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQp0eXBlZGVmIHZvaWQgICogUlBDX0FVVEhfSURF
TlRJVFlfSEFORExFOw0KdHlwZWRlZiB2b2lkICAqIFJQQ19BVVRIWl9IQU5ETEU7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTYwMCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCiNsaW5lIDE2MDQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjZGNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNjI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCiNsaW5lIDE2Mjkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19TRUNVUklUWV9RT1Mgew0KICB1bnNpZ25lZCBsb25n
IFZlcnNpb247DQogIHVuc2lnbmVkIGxvbmcgQ2FwYWJpbGl0aWVzOw0KICB1bnNpZ25lZCBsb25n
IElkZW50aXR5VHJhY2tpbmc7DQogIHVuc2lnbmVkIGxvbmcgSW1wZXJzb25hdGlvblR5cGU7DQp9
IFJQQ19TRUNVUklUWV9RT1MsICpQUlBDX1NFQ1VSSVRZX1FPUzsNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1NFQ19XSU5OVF9BVVRIX0lERU5USVRZX1cgew0KICAgIHVuc2lnbmVkIHNo
b3J0ICAqVXNlcjsNCiAgdW5zaWduZWQgbG9uZyBVc2VyTGVuZ3RoOw0KICAgIHVuc2lnbmVkIHNo
b3J0ICAqRG9tYWluOw0KICB1bnNpZ25lZCBsb25nIERvbWFpbkxlbmd0aDsNCiAgICB1bnNpZ25l
ZCBzaG9ydCAgKlBhc3N3b3JkOw0KICB1bnNpZ25lZCBsb25nIFBhc3N3b3JkTGVuZ3RoOw0KICB1
bnNpZ25lZCBsb25nIEZsYWdzOw0KfSBTRUNfV0lOTlRfQVVUSF9JREVOVElUWV9XLCAqUFNFQ19X
SU5OVF9BVVRIX0lERU5USVRZX1c7DQoNCg0KDQojbGluZSAxNjcyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwY2RjZS5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VDX1dJTk5UX0FVVEhfSURFTlRJVFlfQSB7
DQogICAgdW5zaWduZWQgY2hhciAgKlVzZXI7DQogIHVuc2lnbmVkIGxvbmcgVXNlckxlbmd0aDsN
CiAgICB1bnNpZ25lZCBjaGFyICAqRG9tYWluOw0KICB1bnNpZ25lZCBsb25nIERvbWFpbkxlbmd0
aDsNCiAgICB1bnNpZ25lZCBjaGFyICAqUGFzc3dvcmQ7DQogIHVuc2lnbmVkIGxvbmcgUGFzc3dv
cmRMZW5ndGg7DQogIHVuc2lnbmVkIGxvbmcgRmxhZ3M7DQp9IFNFQ19XSU5OVF9BVVRIX0lERU5U
SVRZX0EsICpQU0VDX1dJTk5UX0FVVEhfSURFTlRJVFlfQTsNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDE2OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE3MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNzEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KDQoNCiNsaW5l
IDE3MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0KI2xpbmUgMTcyMiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX0hUVFBfVFJBTlNQ
T1JUX0NSRURFTlRJQUxTX1cNCnsNCiAgICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWV9XICpUcmFu
c3BvcnRDcmVkZW50aWFsczsNCiAgICB1bnNpZ25lZCBsb25nIEZsYWdzOw0KICAgIHVuc2lnbmVk
IGxvbmcgQXV0aGVudGljYXRpb25UYXJnZXQ7DQogICAgdW5zaWduZWQgbG9uZyBOdW1iZXJPZkF1
dGhuU2NoZW1lczsNCiAgICB1bnNpZ25lZCBsb25nICpBdXRoblNjaGVtZXM7DQogICAgdW5zaWdu
ZWQgc2hvcnQgICpTZXJ2ZXJDZXJ0aWZpY2F0ZVN1YmplY3Q7DQp9IFJQQ19IVFRQX1RSQU5TUE9S
VF9DUkVERU5USUFMU19XLCAqUFJQQ19IVFRQX1RSQU5TUE9SVF9DUkVERU5USUFMU19XOw0KDQp0
eXBlZGVmIHN0cnVjdCBfUlBDX0hUVFBfVFJBTlNQT1JUX0NSRURFTlRJQUxTX0ENCnsNCiAgICBT
RUNfV0lOTlRfQVVUSF9JREVOVElUWV9BICpUcmFuc3BvcnRDcmVkZW50aWFsczsNCiAgICB1bnNp
Z25lZCBsb25nIEZsYWdzOw0KICAgIHVuc2lnbmVkIGxvbmcgQXV0aGVudGljYXRpb25UYXJnZXQ7
DQogICAgdW5zaWduZWQgbG9uZyBOdW1iZXJPZkF1dGhuU2NoZW1lczsNCiAgICB1bnNpZ25lZCBs
b25nICpBdXRoblNjaGVtZXM7DQogICAgdW5zaWduZWQgY2hhciAgKlNlcnZlckNlcnRpZmljYXRl
U3ViamVjdDsNCn0gUlBDX0hUVFBfVFJBTlNQT1JUX0NSRURFTlRJQUxTX0EsICpQUlBDX0hUVFBf
VFJBTlNQT1JUX0NSRURFTlRJQUxTX0E7DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX0hUVFBf
VFJBTlNQT1JUX0NSRURFTlRJQUxTX1YyX1cNCnsNCiAgICBTRUNfV0lOTlRfQVVUSF9JREVOVElU
WV9XICpUcmFuc3BvcnRDcmVkZW50aWFsczsNCiAgICB1bnNpZ25lZCBsb25nIEZsYWdzOw0KICAg
IHVuc2lnbmVkIGxvbmcgQXV0aGVudGljYXRpb25UYXJnZXQ7DQogICAgdW5zaWduZWQgbG9uZyBO
dW1iZXJPZkF1dGhuU2NoZW1lczsNCiAgICAgIHVuc2lnbmVkIGxvbmcgKkF1dGhuU2NoZW1lczsN
CiAgICB1bnNpZ25lZCBzaG9ydCAgKlNlcnZlckNlcnRpZmljYXRlU3ViamVjdDsNCiAgICBTRUNf
V0lOTlRfQVVUSF9JREVOVElUWV9XICpQcm94eUNyZWRlbnRpYWxzOw0KICAgIHVuc2lnbmVkIGxv
bmcgTnVtYmVyT2ZQcm94eUF1dGhuU2NoZW1lczsNCiAgICAgIHVuc2lnbmVkIGxvbmcgKlByb3h5
QXV0aG5TY2hlbWVzOw0KfSBSUENfSFRUUF9UUkFOU1BPUlRfQ1JFREVOVElBTFNfVjJfVywgKlBS
UENfSFRUUF9UUkFOU1BPUlRfQ1JFREVOVElBTFNfVjJfVzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQ
Q19IVFRQX1RSQU5TUE9SVF9DUkVERU5USUFMU19WMl9BDQp7DQogICAgU0VDX1dJTk5UX0FVVEhf
SURFTlRJVFlfQSAqVHJhbnNwb3J0Q3JlZGVudGlhbHM7DQogICAgdW5zaWduZWQgbG9uZyBGbGFn
czsNCiAgICB1bnNpZ25lZCBsb25nIEF1dGhlbnRpY2F0aW9uVGFyZ2V0Ow0KICAgIHVuc2lnbmVk
IGxvbmcgTnVtYmVyT2ZBdXRoblNjaGVtZXM7DQogICAgdW5zaWduZWQgbG9uZyAqQXV0aG5TY2hl
bWVzOw0KICAgIHVuc2lnbmVkIGNoYXIgICpTZXJ2ZXJDZXJ0aWZpY2F0ZVN1YmplY3Q7DQogICAg
U0VDX1dJTk5UX0FVVEhfSURFTlRJVFlfQSAqUHJveHlDcmVkZW50aWFsczsNCiAgICB1bnNpZ25l
ZCBsb25nIE51bWJlck9mUHJveHlBdXRoblNjaGVtZXM7DQogICAgdW5zaWduZWQgbG9uZyAqUHJv
eHlBdXRoblNjaGVtZXM7DQp9IFJQQ19IVFRQX1RSQU5TUE9SVF9DUkVERU5USUFMU19WMl9BLCAq
UFJQQ19IVFRQX1RSQU5TUE9SVF9DUkVERU5USUFMU19WMl9BOw0KDQojbGluZSAxNzczICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19IVFRQX1RS
QU5TUE9SVF9DUkVERU5USUFMU19WM19XDQp7DQogICAgUlBDX0FVVEhfSURFTlRJVFlfSEFORExF
IFRyYW5zcG9ydENyZWRlbnRpYWxzOw0KICAgIHVuc2lnbmVkIGxvbmcgRmxhZ3M7DQogICAgdW5z
aWduZWQgbG9uZyBBdXRoZW50aWNhdGlvblRhcmdldDsNCiAgICB1bnNpZ25lZCBsb25nIE51bWJl
ck9mQXV0aG5TY2hlbWVzOw0KICAgICAgdW5zaWduZWQgbG9uZyAqQXV0aG5TY2hlbWVzOw0KICAg
IHVuc2lnbmVkIHNob3J0ICAqU2VydmVyQ2VydGlmaWNhdGVTdWJqZWN0Ow0KICAgIFJQQ19BVVRI
X0lERU5USVRZX0hBTkRMRSBQcm94eUNyZWRlbnRpYWxzOw0KICAgIHVuc2lnbmVkIGxvbmcgTnVt
YmVyT2ZQcm94eUF1dGhuU2NoZW1lczsNCiAgICAgIHVuc2lnbmVkIGxvbmcgKlByb3h5QXV0aG5T
Y2hlbWVzOw0KfSBSUENfSFRUUF9UUkFOU1BPUlRfQ1JFREVOVElBTFNfVjNfVywgKlBSUENfSFRU
UF9UUkFOU1BPUlRfQ1JFREVOVElBTFNfVjNfVzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19IVFRQ
X1RSQU5TUE9SVF9DUkVERU5USUFMU19WM19BDQp7DQogICAgUlBDX0FVVEhfSURFTlRJVFlfSEFO
RExFIFRyYW5zcG9ydENyZWRlbnRpYWxzOw0KICAgIHVuc2lnbmVkIGxvbmcgRmxhZ3M7DQogICAg
dW5zaWduZWQgbG9uZyBBdXRoZW50aWNhdGlvblRhcmdldDsNCiAgICB1bnNpZ25lZCBsb25nIE51
bWJlck9mQXV0aG5TY2hlbWVzOw0KICAgICAgdW5zaWduZWQgbG9uZyAqQXV0aG5TY2hlbWVzOw0K
ICAgIHVuc2lnbmVkIGNoYXIgICpTZXJ2ZXJDZXJ0aWZpY2F0ZVN1YmplY3Q7DQogICAgUlBDX0FV
VEhfSURFTlRJVFlfSEFORExFIFByb3h5Q3JlZGVudGlhbHM7DQogICAgdW5zaWduZWQgbG9uZyBO
dW1iZXJPZlByb3h5QXV0aG5TY2hlbWVzOw0KICAgICAgdW5zaWduZWQgbG9uZyAqUHJveHlBdXRo
blNjaGVtZXM7DQp9IFJQQ19IVFRQX1RSQU5TUE9SVF9DUkVERU5USUFMU19WM19BLCAqUFJQQ19I
VFRQX1RSQU5TUE9SVF9DUkVERU5USUFMU19WM19BOw0KDQojbGluZSAxODAzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY2RjZS5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX1NFQ1VSSVRZX1FPU19WMl9X
IHsNCiAgdW5zaWduZWQgbG9uZyBWZXJzaW9uOw0KICB1bnNpZ25lZCBsb25nIENhcGFiaWxpdGll
czsNCiAgdW5zaWduZWQgbG9uZyBJZGVudGl0eVRyYWNraW5nOw0KICB1bnNpZ25lZCBsb25nIElt
cGVyc29uYXRpb25UeXBlOw0KICB1bnNpZ25lZCBsb25nIEFkZGl0aW9uYWxTZWN1cml0eUluZm9U
eXBlOw0KICB1bmlvbiANCiAgICAgIHsNCiAgICAgIFJQQ19IVFRQX1RSQU5TUE9SVF9DUkVERU5U
SUFMU19XICpIdHRwQ3JlZGVudGlhbHM7DQogICAgICB9IHU7DQp9IFJQQ19TRUNVUklUWV9RT1Nf
VjJfVywgKlBSUENfU0VDVVJJVFlfUU9TX1YyX1c7DQoNCnR5cGVkZWYgc3RydWN0IF9SUENfU0VD
VVJJVFlfUU9TX1YyX0Egew0KICB1bnNpZ25lZCBsb25nIFZlcnNpb247DQogIHVuc2lnbmVkIGxv
bmcgQ2FwYWJpbGl0aWVzOw0KICB1bnNpZ25lZCBsb25nIElkZW50aXR5VHJhY2tpbmc7DQogIHVu
c2lnbmVkIGxvbmcgSW1wZXJzb25hdGlvblR5cGU7DQogIHVuc2lnbmVkIGxvbmcgQWRkaXRpb25h
bFNlY3VyaXR5SW5mb1R5cGU7DQogIHVuaW9uIA0KICAgICAgew0KICAgICAgUlBDX0hUVFBfVFJB
TlNQT1JUX0NSRURFTlRJQUxTX0EgKkh0dHBDcmVkZW50aWFsczsNCiAgICAgIH0gdTsNCn0gUlBD
X1NFQ1VSSVRZX1FPU19WMl9BLCAqUFJQQ19TRUNVUklUWV9RT1NfVjJfQTsNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1JQQ19TRUNVUklUWV9RT1NfVjNfVyB7DQogIHVuc2lnbmVkIGxvbmcgVmVy
c2lvbjsNCiAgdW5zaWduZWQgbG9uZyBDYXBhYmlsaXRpZXM7DQogIHVuc2lnbmVkIGxvbmcgSWRl
bnRpdHlUcmFja2luZzsNCiAgdW5zaWduZWQgbG9uZyBJbXBlcnNvbmF0aW9uVHlwZTsNCiAgdW5z
aWduZWQgbG9uZyBBZGRpdGlvbmFsU2VjdXJpdHlJbmZvVHlwZTsNCiAgdW5pb24gDQogICAgICB7
DQogICAgICBSUENfSFRUUF9UUkFOU1BPUlRfQ1JFREVOVElBTFNfVyAqSHR0cENyZWRlbnRpYWxz
Ow0KICAgICAgfSB1Ow0KICB2b2lkICpTaWQ7DQp9IFJQQ19TRUNVUklUWV9RT1NfVjNfVywgKlBS
UENfU0VDVVJJVFlfUU9TX1YzX1c7DQoNCnR5cGVkZWYgc3RydWN0IF9SUENfU0VDVVJJVFlfUU9T
X1YzX0Egew0KICB1bnNpZ25lZCBsb25nIFZlcnNpb247DQogIHVuc2lnbmVkIGxvbmcgQ2FwYWJp
bGl0aWVzOw0KICB1bnNpZ25lZCBsb25nIElkZW50aXR5VHJhY2tpbmc7DQogIHVuc2lnbmVkIGxv
bmcgSW1wZXJzb25hdGlvblR5cGU7DQogIHVuc2lnbmVkIGxvbmcgQWRkaXRpb25hbFNlY3VyaXR5
SW5mb1R5cGU7DQogIHVuaW9uIA0KICAgICAgew0KICAgICAgUlBDX0hUVFBfVFJBTlNQT1JUX0NS
RURFTlRJQUxTX0EgKkh0dHBDcmVkZW50aWFsczsNCiAgICAgIH0gdTsNCiAgdm9pZCAqU2lkOw0K
fSBSUENfU0VDVVJJVFlfUU9TX1YzX0EsICpQUlBDX1NFQ1VSSVRZX1FPU19WM19BOw0KI2xpbmUg
MTg1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfUlBDX1NFQ1VSSVRZX1FPU19WNF9XIHsNCiAgdW5zaWduZWQgbG9uZyBWZXJzaW9uOw0KICB1
bnNpZ25lZCBsb25nIENhcGFiaWxpdGllczsNCiAgdW5zaWduZWQgbG9uZyBJZGVudGl0eVRyYWNr
aW5nOw0KICB1bnNpZ25lZCBsb25nIEltcGVyc29uYXRpb25UeXBlOw0KICB1bnNpZ25lZCBsb25n
IEFkZGl0aW9uYWxTZWN1cml0eUluZm9UeXBlOw0KICB1bmlvbiANCiAgICAgIHsNCiAgICAgIFJQ
Q19IVFRQX1RSQU5TUE9SVF9DUkVERU5USUFMU19XICpIdHRwQ3JlZGVudGlhbHM7DQogICAgICB9
IHU7DQogIHZvaWQgKlNpZDsNCiAgdW5zaWduZWQgaW50IEVmZmVjdGl2ZU9ubHk7DQp9IFJQQ19T
RUNVUklUWV9RT1NfVjRfVywgKlBSUENfU0VDVVJJVFlfUU9TX1Y0X1c7DQoNCnR5cGVkZWYgc3Ry
dWN0IF9SUENfU0VDVVJJVFlfUU9TX1Y0X0Egew0KICB1bnNpZ25lZCBsb25nIFZlcnNpb247DQog
IHVuc2lnbmVkIGxvbmcgQ2FwYWJpbGl0aWVzOw0KICB1bnNpZ25lZCBsb25nIElkZW50aXR5VHJh
Y2tpbmc7DQogIHVuc2lnbmVkIGxvbmcgSW1wZXJzb25hdGlvblR5cGU7DQogIHVuc2lnbmVkIGxv
bmcgQWRkaXRpb25hbFNlY3VyaXR5SW5mb1R5cGU7DQogIHVuaW9uIA0KICAgICAgew0KICAgICAg
UlBDX0hUVFBfVFJBTlNQT1JUX0NSRURFTlRJQUxTX0EgKkh0dHBDcmVkZW50aWFsczsNCiAgICAg
IH0gdTsNCiAgdm9pZCAqU2lkOw0KICB1bnNpZ25lZCBpbnQgRWZmZWN0aXZlT25seTsNCn0gUlBD
X1NFQ1VSSVRZX1FPU19WNF9BLCAqUFJQQ19TRUNVUklUWV9RT1NfVjRfQTsNCg0KI2xpbmUgMTg5
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTkyNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KI2xpbmUgMTkyOCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxy
cGNkY2UuaCINCiNsaW5lIDE5MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCiNsaW5l
IDE5MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoN
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTk1MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxy
cGNkY2UuaCINCg0KDQoNCg0KDQojbGluZSAxOTU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5o
Ig0KDQoNCg0KDQoNCiNsaW5lIDE5NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0K
DQoNCg0KI2xpbmUgMTk3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoj
bGluZSAxOTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMjAyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KI2xpbmUg
MjAyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19CSU5ESU5HX0hBTkRM
RV9URU1QTEFURV9WMV9XIHsNCiAgICB1bnNpZ25lZCBsb25nIFZlcnNpb247DQogICAgdW5zaWdu
ZWQgbG9uZyBGbGFnczsNCiAgICB1bnNpZ25lZCBsb25nIFByb3RvY29sU2VxdWVuY2U7DQogICAg
dW5zaWduZWQgc2hvcnQgKk5ldHdvcmtBZGRyZXNzOw0KICAgIHVuc2lnbmVkIHNob3J0ICpTdHJp
bmdFbmRwb2ludDsNCiAgICB1bmlvbg0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgc2hvcnQgKlJl
c2VydmVkOw0KICAgIH0gdTE7DQogICAgVVVJRCBPYmplY3RVdWlkOw0KfSBSUENfQklORElOR19I
QU5ETEVfVEVNUExBVEVfVjFfVywgKlBSUENfQklORElOR19IQU5ETEVfVEVNUExBVEVfVjFfVzsN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19CSU5ESU5HX0hBTkRMRV9URU1QTEFURV9WMV9BIHsNCiAg
ICB1bnNpZ25lZCBsb25nIFZlcnNpb247DQogICAgdW5zaWduZWQgbG9uZyBGbGFnczsNCiAgICB1
bnNpZ25lZCBsb25nIFByb3RvY29sU2VxdWVuY2U7DQogICAgdW5zaWduZWQgY2hhciAqTmV0d29y
a0FkZHJlc3M7DQogICAgdW5zaWduZWQgY2hhciAqU3RyaW5nRW5kcG9pbnQ7DQogICAgdW5pb24N
CiAgICB7DQogICAgICAgIHVuc2lnbmVkIGNoYXIgKlJlc2VydmVkOw0KICAgIH0gdTE7DQogICAg
VVVJRCBPYmplY3RVdWlkOw0KfSBSUENfQklORElOR19IQU5ETEVfVEVNUExBVEVfVjFfQSwgKlBS
UENfQklORElOR19IQU5ETEVfVEVNUExBVEVfVjFfQTsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19C
SU5ESU5HX0hBTkRMRV9TRUNVUklUWV9WMV9XIHsNCiAgICB1bnNpZ25lZCBsb25nIFZlcnNpb247
DQogICAgdW5zaWduZWQgc2hvcnQgKlNlcnZlclByaW5jTmFtZTsNCiAgICB1bnNpZ25lZCBsb25n
IEF1dGhuTGV2ZWw7DQogICAgdW5zaWduZWQgbG9uZyBBdXRoblN2YzsNCiAgICBTRUNfV0lOTlRf
QVVUSF9JREVOVElUWV9XICpBdXRoSWRlbnRpdHk7DQogICAgUlBDX1NFQ1VSSVRZX1FPUyAqU2Vj
dXJpdHlRb3M7DQp9IFJQQ19CSU5ESU5HX0hBTkRMRV9TRUNVUklUWV9WMV9XLCAqUFJQQ19CSU5E
SU5HX0hBTkRMRV9TRUNVUklUWV9WMV9XOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19CSU5E
SU5HX0hBTkRMRV9TRUNVUklUWV9WMV9BIHsNCiAgICB1bnNpZ25lZCBsb25nIFZlcnNpb247DQog
ICAgdW5zaWduZWQgY2hhciAqU2VydmVyUHJpbmNOYW1lOw0KICAgIHVuc2lnbmVkIGxvbmcgQXV0
aG5MZXZlbDsNCiAgICB1bnNpZ25lZCBsb25nIEF1dGhuU3ZjOw0KICAgIFNFQ19XSU5OVF9BVVRI
X0lERU5USVRZX0EgKkF1dGhJZGVudGl0eTsNCiAgICBSUENfU0VDVVJJVFlfUU9TICpTZWN1cml0
eVFvczsNCn0gUlBDX0JJTkRJTkdfSEFORExFX1NFQ1VSSVRZX1YxX0EsICpQUlBDX0JJTkRJTkdf
SEFORExFX1NFQ1VSSVRZX1YxX0E7DQoNCiNsaW5lIDIwODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBj
ZGNlLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9SUENfQklORElOR19IQU5ETEVfT1BUSU9OU19WMSB7
DQogICAgdW5zaWduZWQgbG9uZyBWZXJzaW9uOw0KICAgIHVuc2lnbmVkIGxvbmcgRmxhZ3M7DQog
ICAgdW5zaWduZWQgbG9uZyBDb21UaW1lb3V0Ow0KICAgIHVuc2lnbmVkIGxvbmcgQ2FsbFRpbWVv
dXQ7DQp9IFJQQ19CSU5ESU5HX0hBTkRMRV9PUFRJT05TX1YxLCAqUFJQQ19CSU5ESU5HX0hBTkRM
RV9PUFRJT05TX1YxOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMjExNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNCaW5kaW5nQ3JlYXRlQSAoDQog
ICAgICBSUENfQklORElOR19IQU5ETEVfVEVNUExBVEVfVjFfQSAqIFRlbXBsYXRlLA0KICAgICAg
UlBDX0JJTkRJTkdfSEFORExFX1NFQ1VSSVRZX1YxX0EgKiBTZWN1cml0eSwNCiAgICAgIFJQQ19C
SU5ESU5HX0hBTkRMRV9PUFRJT05TX1YxICogT3B0aW9ucywNCiAgICAgIFJQQ19CSU5ESU5HX0hB
TkRMRSAqIEJpbmRpbmcNCiAgICApOw0KDQojbGluZSAyMTMwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJw
Y2RjZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0K
UnBjQmluZGluZ0NyZWF0ZVcgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFX1RFTVBMQVRFX1Yx
X1cgKiBUZW1wbGF0ZSwNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRV9TRUNVUklUWV9WMV9XICog
U2VjdXJpdHksDQogICAgICBSUENfQklORElOR19IQU5ETEVfT1BUSU9OU19WMSAqIE9wdGlvbnMs
DQogICAgICBSUENfQklORElOR19IQU5ETEUgKiBCaW5kaW5nDQogICAgKTsNCg0KDQoNCg0KDQoj
bGluZSAyMTQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQojbGluZSAyMTQ4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNClJQQ19TVEFUVVMgDQpfX3N0ZGNhbGwgDQpScGNCaW5kaW5nR2V0VHJhaW5pbmdDb250
ZXh0SGFuZGxlICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICB2b2lk
ICoqIENvbnRleHRIYW5kbGUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19T
VEFUVVMgDQpfX3N0ZGNhbGwgDQpScGNTZXJ2ZXJJbnFCaW5kaW5nSGFuZGxlICgNCiAgICAgIFJQ
Q19CSU5ESU5HX0hBTkRMRSAqIEJpbmRpbmcNCiAgICApOw0KDQojbGluZSAyMTY5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMjE3MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRp
b24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KdHlwZWRlZiBlbnVtIF9SUENfSFRUUF9S
RURJUkVDVE9SX1NUQUdFDQp7DQogICAgUlBDSFRUUF9SU19SRURJUkVDVCA9IDEsDQogICAgUlBD
SFRUUF9SU19BQ0NFU1NfMSwNCiAgICBSUENIVFRQX1JTX1NFU1NJT04sDQogICAgUlBDSFRUUF9S
U19BQ0NFU1NfMiwNCiAgICBSUENIVFRQX1JTX0lOVEVSRkFDRQ0KfSBSUENfSFRUUF9SRURJUkVD
VE9SX1NUQUdFOw0KDQojbGluZSAyMTg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMjE5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCIN
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoN
CnR5cGVkZWYgUlBDX1NUQVRVUw0KKF9fc3RkY2FsbCAqIFJQQ19ORVdfSFRUUF9QUk9YWV9DSEFO
TkVMKSAoDQogICAgICBSUENfSFRUUF9SRURJUkVDVE9SX1NUQUdFIFJlZGlyZWN0b3JTdGFnZSwN
CiAgICAgIFJQQ19XU1RSIFNlcnZlck5hbWUsDQogICAgICBSUENfV1NUUiBTZXJ2ZXJQb3J0LA0K
ICAgICAgUlBDX1dTVFIgUmVtb3RlVXNlciwNCiAgICAgIFJQQ19XU1RSIEF1dGhUeXBlLA0KICAg
ICAgdm9pZCAgKiBSZXNvdXJjZVV1aWQsDQogICAgICB2b2lkICAqIFNlc3Npb25JZCwNCiAgICAg
IHZvaWQgICogSW50ZXJmYWNlLA0KICAgICAgdm9pZCAgKiBSZXNlcnZlZCwNCiAgICAgIHVuc2ln
bmVkIGxvbmcgRmxhZ3MsDQogICAgIFJQQ19XU1RSICAqIE5ld1NlcnZlck5hbWUsDQogICAgIFJQ
Q19XU1RSICAqIE5ld1NlcnZlclBvcnQNCiAgICApOw0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMjIyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KdHlwZWRlZiB2b2lkDQoo
X19zdGRjYWxsICogUlBDX0hUVFBfUFJPWFlfRlJFRV9TVFJJTkcpICgNCiAgICAgIFJQQ19XU1RS
IFN0cmluZw0KICAgICk7DQoNCiNsaW5lIDIyMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAyMjMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2Rj
ZS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjI0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9u
ZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpf
X3N0ZGNhbGwNClJwY0ltcGVyc29uYXRlQ2xpZW50ICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRM
RSBCaW5kaW5nSGFuZGxlDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RB
VFVTDQpfX3N0ZGNhbGwNClJwY0ltcGVyc29uYXRlQ2xpZW50MiAoDQogICAgICBSUENfQklORElO
R19IQU5ETEUgQmluZGluZ0hhbmRsZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
IA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNSZXZlcnRUb1NlbGZFeCAoDQogICAgICBSUENf
QklORElOR19IQU5ETEUgQmluZGluZ0hhbmRsZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNSZXZlcnRUb1NlbGYgKA0KICAgIHZv
aWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3Rk
Y2FsbA0KUnBjSW1wZXJzb25hdGVDbGllbnRDb250YWluZXIgKA0KICAgICAgUlBDX0JJTkRJTkdf
SEFORExFIEJpbmRpbmdIYW5kbGUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAN
ClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjUmV2ZXJ0Q29udGFpbmVySW1wZXJzb25hdGlvbiAo
DQogICAgdm9pZA0KICAgICk7DQoNCiNsaW5lIDIyOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNl
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpS
UENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0JpbmRpbmdJbnFBdXRoQ2xpZW50QSAoDQogICAgICBS
UENfQklORElOR19IQU5ETEUgQ2xpZW50QmluZGluZywNCiAgICAgIFJQQ19BVVRIWl9IQU5ETEUg
ICogUHJpdnMsDQogICAgIFJQQ19DU1RSICAqIFNlcnZlclByaW5jTmFtZSwNCiAgICAgIHVuc2ln
bmVkIGxvbmcgICogQXV0aG5MZXZlbCwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0aG5TdmMs
DQogICAgICB1bnNpZ25lZCBsb25nICAqIEF1dGh6U3ZjDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0JpbmRpbmdJbnFBdXRoQ2xp
ZW50VyAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQ2xpZW50QmluZGluZywNCiAgICAgIFJQ
Q19BVVRIWl9IQU5ETEUgICogUHJpdnMsDQogICAgIFJQQ19XU1RSICAqIFNlcnZlclByaW5jTmFt
ZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0aG5MZXZlbCwNCiAgICAgIHVuc2lnbmVkIGxv
bmcgICogQXV0aG5TdmMsDQogICAgICB1bnNpZ25lZCBsb25nICAqIEF1dGh6U3ZjDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0JpbmRp
bmdJbnFBdXRoQ2xpZW50RXhBICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBDbGllbnRCaW5k
aW5nLA0KICAgICAgUlBDX0FVVEhaX0hBTkRMRSAgKiBQcml2cywNCiAgICAgUlBDX0NTVFIgICog
U2VydmVyUHJpbmNOYW1lLA0KICAgICAgdW5zaWduZWQgbG9uZyAgKiBBdXRobkxldmVsLA0KICAg
ICAgdW5zaWduZWQgbG9uZyAgKiBBdXRoblN2YywNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0
aHpTdmMsDQogICAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBGbGFncw0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNCaW5kaW5n
SW5xQXV0aENsaWVudEV4VyAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQ2xpZW50QmluZGlu
ZywNCiAgICAgIFJQQ19BVVRIWl9IQU5ETEUgICogUHJpdnMsDQogICAgIFJQQ19XU1RSICAqIFNl
cnZlclByaW5jTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0aG5MZXZlbCwNCiAgICAg
IHVuc2lnbmVkIGxvbmcgICogQXV0aG5TdmMsDQogICAgICB1bnNpZ25lZCBsb25nICAqIEF1dGh6
U3ZjLA0KICAgICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgRmxhZ3MNCiAgICApOw0KDQoj
bGluZSAyMzU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0Jp
bmRpbmdJbnFBdXRoSW5mb0EgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQog
ICAgIFJQQ19DU1RSICAqIFNlcnZlclByaW5jTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICog
QXV0aG5MZXZlbCwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0aG5TdmMsDQogICAgICBSUENf
QVVUSF9JREVOVElUWV9IQU5ETEUgICogQXV0aElkZW50aXR5LA0KICAgICAgdW5zaWduZWQgbG9u
ZyAgKiBBdXRoelN2Yw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NU
QVRVUw0KX19zdGRjYWxsDQpScGNCaW5kaW5nSW5xQXV0aEluZm9XICgNCiAgICAgIFJQQ19CSU5E
SU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICBSUENfV1NUUiAgKiBTZXJ2ZXJQcmluY05hbWUsDQog
ICAgICB1bnNpZ25lZCBsb25nICAqIEF1dGhuTGV2ZWwsDQogICAgICB1bnNpZ25lZCBsb25nICAq
IEF1dGhuU3ZjLA0KICAgICAgUlBDX0FVVEhfSURFTlRJVFlfSEFORExFICAqIEF1dGhJZGVudGl0
eSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0aHpTdmMNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQmluZGluZ1NldEF1dGhJ
bmZvQSAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAgIFJQQ19DU1RS
IFNlcnZlclByaW5jTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgQXV0aG5MZXZlbCwNCiAgICAg
IHVuc2lnbmVkIGxvbmcgQXV0aG5TdmMsDQogICAgICBSUENfQVVUSF9JREVOVElUWV9IQU5ETEUg
QXV0aElkZW50aXR5LA0KICAgICAgdW5zaWduZWQgbG9uZyBBdXRoelN2Yw0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNCaW5kaW5n
U2V0QXV0aEluZm9FeEEgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAg
ICBSUENfQ1NUUiBTZXJ2ZXJQcmluY05hbWUsDQogICAgICB1bnNpZ25lZCBsb25nIEF1dGhuTGV2
ZWwsDQogICAgICB1bnNpZ25lZCBsb25nIEF1dGhuU3ZjLA0KICAgICAgUlBDX0FVVEhfSURFTlRJ
VFlfSEFORExFIEF1dGhJZGVudGl0eSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgQXV0aHpTdmMsDQog
ICAgICBSUENfU0VDVVJJVFlfUU9TICogU2VjdXJpdHlRb3MNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQmluZGluZ1NldEF1dGhJ
bmZvVyAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAgIFJQQ19XU1RS
IFNlcnZlclByaW5jTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgQXV0aG5MZXZlbCwNCiAgICAg
IHVuc2lnbmVkIGxvbmcgQXV0aG5TdmMsDQogICAgICBSUENfQVVUSF9JREVOVElUWV9IQU5ETEUg
QXV0aElkZW50aXR5LA0KICAgICAgdW5zaWduZWQgbG9uZyBBdXRoelN2Yw0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNCaW5kaW5n
U2V0QXV0aEluZm9FeFcgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAg
ICBSUENfV1NUUiBTZXJ2ZXJQcmluY05hbWUsDQogICAgICB1bnNpZ25lZCBsb25nIEF1dGhuTGV2
ZWwsDQogICAgICB1bnNpZ25lZCBsb25nIEF1dGhuU3ZjLA0KICAgICAgUlBDX0FVVEhfSURFTlRJ
VFlfSEFORExFIEF1dGhJZGVudGl0eSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgQXV0aHpTdmMsDQog
ICAgICBSUENfU0VDVVJJVFlfUU9TICogU2VjdXJpdHlRT1MNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQmluZGluZ0lucUF1dGhJ
bmZvRXhBICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICBSUENfQ1NU
UiAgKiBTZXJ2ZXJQcmluY05hbWUsDQogICAgICB1bnNpZ25lZCBsb25nICAqIEF1dGhuTGV2ZWws
DQogICAgICB1bnNpZ25lZCBsb25nICAqIEF1dGhuU3ZjLA0KICAgICAgUlBDX0FVVEhfSURFTlRJ
VFlfSEFORExFICAqIEF1dGhJZGVudGl0eSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0aHpT
dmMsDQogICAgICAgdW5zaWduZWQgbG9uZyBScGNRb3NWZXJzaW9uLA0KICAgICAgUlBDX1NFQ1VS
SVRZX1FPUyAqU2VjdXJpdHlRT1MNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiAN
ClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQmluZGluZ0lucUF1dGhJbmZvRXhXICgNCiAgICAg
IFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICBSUENfV1NUUiAgKiBTZXJ2ZXJQcmlu
Y05hbWUsDQogICAgICB1bnNpZ25lZCBsb25nICAqIEF1dGhuTGV2ZWwsDQogICAgICB1bnNpZ25l
ZCBsb25nICAqIEF1dGhuU3ZjLA0KICAgICAgUlBDX0FVVEhfSURFTlRJVFlfSEFORExFICAqIEF1
dGhJZGVudGl0eSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICogQXV0aHpTdmMsDQogICAgICB1bnNp
Z25lZCBsb25nIFJwY1Fvc1ZlcnNpb24sDQogICAgICBSUENfU0VDVVJJVFlfUU9TICogU2VjdXJp
dHlRT1MNCiAgICApOw0KDQojbGluZSAyNDc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkNCg0KDQp0eXBlZGVmIHZvaWQNCihfX3N0ZGNhbGwgKiBSUENfQVVUSF9LRVlf
UkVUUklFVkFMX0ZOKSAoDQogICAgICB2b2lkICAqIEFyZywNCiAgICAgIFJQQ19XU1RSIFNlcnZl
clByaW5jTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgS2V5VmVyLA0KICAgICB2b2lkICAqICAq
IEtleSwNCiAgICAgIFJQQ19TVEFUVVMgICogU3RhdHVzDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwgDQpScGNTZXJ2ZXJDb21wbGV0ZVNlY3Vy
aXR5Q2FsbGJhY2soDQogICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZ0hhbmRsZSwNCiAg
ICAgIFJQQ19TVEFUVVMgU3RhdHVzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQog
DQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1NlcnZlclJlZ2lzdGVyQXV0aEluZm9BICgNCiAg
ICAgIFJQQ19DU1RSIFNlcnZlclByaW5jTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgQXV0aG5T
dmMsDQogICAgICBSUENfQVVUSF9LRVlfUkVUUklFVkFMX0ZOIEdldEtleUZuLA0KICAgICAgdm9p
ZCAgKiBBcmcNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMN
Cl9fc3RkY2FsbA0KUnBjU2VydmVyUmVnaXN0ZXJBdXRoSW5mb1cgKA0KICAgICAgUlBDX1dTVFIg
U2VydmVyUHJpbmNOYW1lLA0KICAgICAgdW5zaWduZWQgbG9uZyBBdXRoblN2YywNCiAgICAgIFJQ
Q19BVVRIX0tFWV9SRVRSSUVWQUxfRk4gR2V0S2V5Rm4sDQogICAgICB2b2lkICAqIEFyZw0KICAg
ICk7DQoNCiNsaW5lIDI1MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1NDEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCiNsaW5lIDI1NDMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI2MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IHsNCiAgICB1bnNpZ25lZCBjaGFyICAqIFVzZXJOYW1lOw0KICAgIHVuc2ln
bmVkIGNoYXIgICogQ29tcHV0ZXJOYW1lOw0KICAgIHVuc2lnbmVkIHNob3J0IFByaXZpbGVnZTsN
CiAgICB1bnNpZ25lZCBsb25nIEF1dGhGbGFnczsNCn0gUlBDX0NMSUVOVF9JTkZPUk1BVElPTjEs
ICAqIFBSUENfQ0xJRU5UX0lORk9STUFUSU9OMTsNCiNsaW5lIDI2MzUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjZGNlLmgiDQojbGluZSAyNjM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQmluZGlu
Z1NlcnZlckZyb21DbGllbnQgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFIENsaWVudEJpbmRp
bmcsDQogICAgICBSUENfQklORElOR19IQU5ETEUgICogU2VydmVyQmluZGluZw0KICAgICk7DQoN
CiNsaW5lIDI2NDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkN
Cg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCl9fZGVjbHNwZWMobm9yZXR1cm4pDQp2b2lkDQpf
X3N0ZGNhbGwNClJwY1JhaXNlRXhjZXB0aW9uICgNCiAgICAgIFJQQ19TVEFUVVMgZXhjZXB0aW9u
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNh
bGwNClJwY1Rlc3RDYW5jZWwoDQogICAgdm9pZA0KICAgICk7DQoNCiNsaW5lIDI2NjkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxccnBjZGNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNTZXJ2ZXJUZXN0Q2FuY2VsICgNCiAg
ICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nSGFuZGxlDQogICAgKTsNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0NhbmNlbFRocmVhZCgN
CiAgICAgIHZvaWQgKiBUaHJlYWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQ
Q19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQ2FuY2VsVGhyZWFkRXgoDQogICAgICB2b2lkICogVGhy
ZWFkLA0KICAgICAgbG9uZyBUaW1lb3V0DQogICAgKTsNCg0KI2xpbmUgMjY5OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxycGNkY2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFw
cGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClV1aWRDcmVhdGUgKA0KICAgICAgVVVJ
RCAgKiBVdWlkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMN
Cl9fc3RkY2FsbA0KVXVpZENyZWF0ZVNlcXVlbnRpYWwgKA0KICAgICAgVVVJRCAgKiBVdWlkDQog
ICAgKTsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0
ZGNhbGwNClV1aWRUb1N0cmluZ0EgKA0KICAgICAgY29uc3QgVVVJRCAgKiBVdWlkLA0KICAgICBS
UENfQ1NUUiAgKiBTdHJpbmdVdWlkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KVXVpZEZyb21TdHJpbmdBICgNCiAgICAgIFJQQ19D
U1RSIFN0cmluZ1V1aWQsDQogICAgICBVVUlEICAqIFV1aWQNCiAgICApOw0KDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpVdWlkVG9TdHJpbmdXICgN
CiAgICAgIGNvbnN0IFVVSUQgICogVXVpZCwNCiAgICAgUlBDX1dTVFIgICogU3RyaW5nVXVpZA0K
ICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNh
bGwNClV1aWRGcm9tU3RyaW5nVyAoDQogICAgICBSUENfV1NUUiBTdHJpbmdVdWlkLA0KICAgICAg
VVVJRCAgKiBVdWlkDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjc3MCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDI3OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kc2lnbmVkIGludA0KX19zdGRjYWxsDQpVdWlkQ29tcGFyZSAoDQogICAgICBV
VUlEICAqIFV1aWQxLA0KICAgICAgVVVJRCAgKiBVdWlkMiwNCiAgICAgIFJQQ19TVEFUVVMgICog
U3RhdHVzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpf
X3N0ZGNhbGwNClV1aWRDcmVhdGVOaWwgKA0KICAgICAgVVVJRCAgKiBOaWxVdWlkDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KVXVpZEVxdWFsICgNCiAg
ICAgIFVVSUQgICogVXVpZDEsDQogICAgICBVVUlEICAqIFV1aWQyLA0KICAgICAgUlBDX1NUQVRV
UyAgKiBTdGF0dXMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIHNo
b3J0DQpfX3N0ZGNhbGwNClV1aWRIYXNoICgNCiAgICAgIFVVSUQgICogVXVpZCwNCiAgICAgIFJQ
Q19TVEFUVVMgICogU3RhdHVzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQN
Cl9fc3RkY2FsbA0KVXVpZElzTmlsICgNCiAgICAgIFVVSUQgICogVXVpZCwNCiAgICAgIFJQQ19T
VEFUVVMgICogU3RhdHVzDQogICAgKTsNCg0KI2xpbmUgMjgzNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxy
cGNkY2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0K
UlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNFcFJlZ2lzdGVyTm9SZXBsYWNlQSAoDQogICAgICBS
UENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIFJQQ19CSU5ESU5HX1ZFQ1RPUiAqIEJpbmRpbmdW
ZWN0b3IsDQogICAgICBVVUlEX1ZFQ1RPUiAqIFV1aWRWZWN0b3IsDQogICAgICBSUENfQ1NUUiBB
bm5vdGF0aW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVT
DQpfX3N0ZGNhbGwNClJwY0VwUmVnaXN0ZXJOb1JlcGxhY2VXICgNCiAgICAgIFJQQ19JRl9IQU5E
TEUgSWZTcGVjLA0KICAgICAgUlBDX0JJTkRJTkdfVkVDVE9SICogQmluZGluZ1ZlY3RvciwNCiAg
ICAgIFVVSURfVkVDVE9SICogVXVpZFZlY3RvciwNCiAgICAgIFJQQ19XU1RSIEFubm90YXRpb24N
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2Fs
bA0KUnBjRXBSZWdpc3RlckEgKA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMsDQogICAgICBS
UENfQklORElOR19WRUNUT1IgKiBCaW5kaW5nVmVjdG9yLA0KICAgICAgVVVJRF9WRUNUT1IgKiBV
dWlkVmVjdG9yLA0KICAgICAgUlBDX0NTVFIgQW5ub3RhdGlvbg0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNFcFJlZ2lzdGVyVyAo
DQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIFJQQ19CSU5ESU5HX1ZFQ1RPUiAq
IEJpbmRpbmdWZWN0b3IsDQogICAgICBVVUlEX1ZFQ1RPUiAqIFV1aWRWZWN0b3IsDQogICAgICBS
UENfV1NUUiBBbm5vdGF0aW9uDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjg5NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAyOTE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNFcFVu
cmVnaXN0ZXIoDQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIFJQQ19CSU5ESU5H
X1ZFQ1RPUiAqIEJpbmRpbmdWZWN0b3IsDQogICAgICBVVUlEX1ZFQ1RPUiAqIFV1aWRWZWN0b3IN
CiAgICApOw0KDQojbGluZSAyOTMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFU
VVMNCl9fc3RkY2FsbA0KRGNlRXJyb3JJbnFUZXh0QSAoDQogICAgICBSUENfU1RBVFVTIFJwY1N0
YXR1cywNCiAgICAgIFJQQ19DU1RSIEVycm9yVGV4dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpEY2VFcnJvcklucVRleHRXICgNCiAg
ICAgIFJQQ19TVEFUVVMgUnBjU3RhdHVzLA0KICAgICAgUlBDX1dTVFIgRXJyb3JUZXh0DQogICAg
KTsNCg0KDQoNCg0KDQojbGluZSAyOTYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KDQoj
bGluZSAyOTY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyOTg0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY2RjZS5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVD
b3JlIEZhbWlseQ0KDQoNCnR5cGVkZWYgSV9SUENfSEFORExFICogUlBDX0VQX0lOUV9IQU5ETEU7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19T
VEFUVVMNCl9fc3RkY2FsbA0KUnBjTWdtdEVwRWx0SW5xQmVnaW4gKA0KICAgICAgIFJQQ19CSU5E
SU5HX0hBTkRMRSBFcEJpbmRpbmcsDQogICAgICB1bnNpZ25lZCBsb25nIElucXVpcnlUeXBlLA0K
ICAgICAgUlBDX0lGX0lEICAqIElmSWQsDQogICAgICB1bnNpZ25lZCBsb25nIFZlcnNPcHRpb24s
DQogICAgICBVVUlEICAqIE9iamVjdFV1aWQsDQogICAgICBSUENfRVBfSU5RX0hBTkRMRSAgKiBJ
bnF1aXJ5Q29udGV4dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NU
QVRVUw0KX19zdGRjYWxsDQpScGNNZ210RXBFbHRJbnFEb25lICgNCiAgICAgIFJQQ19FUF9JTlFf
SEFORExFICAqIElucXVpcnlDb250ZXh0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNNZ210RXBFbHRJbnFOZXh0QSAoDQog
ICAgICBSUENfRVBfSU5RX0hBTkRMRSBJbnF1aXJ5Q29udGV4dCwNCiAgICAgIFJQQ19JRl9JRCAg
KiBJZklkLA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFICAqIEJpbmRpbmcsDQogICAgICBVVUlE
ICAqIE9iamVjdFV1aWQsDQogICAgIFJQQ19DU1RSICAqIEFubm90YXRpb24NCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjTWdtdEVw
RWx0SW5xTmV4dFcgKA0KICAgICAgUlBDX0VQX0lOUV9IQU5ETEUgSW5xdWlyeUNvbnRleHQsDQog
ICAgICBSUENfSUZfSUQgICogSWZJZCwNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSAgKiBCaW5k
aW5nLA0KICAgICAgVVVJRCAgKiBPYmplY3RVdWlkLA0KICAgICBSUENfV1NUUiAgKiBBbm5vdGF0
aW9uDQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAzMDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2Rj
ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMDY3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHJwY2RjZS5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9f
c3RkY2FsbA0KUnBjTWdtdEVwVW5yZWdpc3RlciAoDQogICAgICBSUENfQklORElOR19IQU5ETEUg
RXBCaW5kaW5nLA0KICAgICAgUlBDX0lGX0lEICAqIElmSWQsDQogICAgICBSUENfQklORElOR19I
QU5ETEUgQmluZGluZywNCiAgICAgIFVVSUQgICogT2JqZWN0VXVpZA0KICAgICk7DQoNCnR5cGVk
ZWYgaW50DQooX19zdGRjYWxsICogUlBDX01HTVRfQVVUSE9SSVpBVElPTl9GTikgKA0KICAgICAg
UlBDX0JJTkRJTkdfSEFORExFIENsaWVudEJpbmRpbmcsDQogICAgICB1bnNpZ25lZCBsb25nIFJl
cXVlc3RlZE1nbXRPcGVyYXRpb24sDQogICAgICBSUENfU1RBVFVTICAqIFN0YXR1cw0KICAgICk7
DQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19z
dGRjYWxsDQpScGNNZ210U2V0QXV0aG9yaXphdGlvbkZuICgNCiAgICAgIFJQQ19NR01UX0FVVEhP
UklaQVRJT05fRk4gQXV0aG9yaXphdGlvbkZuDQogICAgKTsNCg0KI2xpbmUgMzEwMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxycGNkY2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9u
IEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQppbnQNCl9fc3RkY2FsbA0KUnBjRXhjZXB0aW9uRmlsdGVyICgNCiAgICAgIHVu
c2lnbmVkIGxvbmcgRXhjZXB0aW9uQ29kZQ0KICAgICk7DQojbGluZSAzMTE0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY2RjZS5oIg0KDQojbGluZSAzMTE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMxMzUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0KDQojbGluZSAzMTM5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY2RjZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMzMzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2UuaCINCg0K
DQojbGluZSAzMzQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI2xpbmUgMzM0NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxycGNkY2UuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2VwLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
CiNsaW5lIDI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQpleHRlcm4gIkMiIHsN
CiNsaW5lIDMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQojcHJhZ21hIHdhcm5p
bmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ2NjgpIA0KI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6NDgyMCkgDQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2VwLmgiDQoN
CiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBH
YW1lcyBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX1ZFUlNJT04gew0KICAgIHVuc2ln
bmVkIHNob3J0IE1ham9yVmVyc2lvbjsNCiAgICB1bnNpZ25lZCBzaG9ydCBNaW5vclZlcnNpb247
DQp9IFJQQ19WRVJTSU9OOw0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX1NZTlRBWF9JREVOVElGSUVS
IHsNCiAgICBHVUlEIFN5bnRheEdVSUQ7DQogICAgUlBDX1ZFUlNJT04gU3ludGF4VmVyc2lvbjsN
Cn0gUlBDX1NZTlRBWF9JREVOVElGSUVSLCAgKiBQUlBDX1NZTlRBWF9JREVOVElGSUVSOw0KDQp0
eXBlZGVmIHN0cnVjdCBfUlBDX01FU1NBR0UNCnsNCiAgICBSUENfQklORElOR19IQU5ETEUgSGFu
ZGxlOw0KICAgIHVuc2lnbmVkIGxvbmcgRGF0YVJlcHJlc2VudGF0aW9uOw0KICAgIHZvaWQgICog
QnVmZmVyOw0KICAgIHVuc2lnbmVkIGludCBCdWZmZXJMZW5ndGg7DQogICAgdW5zaWduZWQgaW50
IFByb2NOdW07DQogICAgUFJQQ19TWU5UQVhfSURFTlRJRklFUiBUcmFuc2ZlclN5bnRheDsNCiAg
ICB2b2lkICAqIFJwY0ludGVyZmFjZUluZm9ybWF0aW9uOw0KICAgIHZvaWQgICogUmVzZXJ2ZWRG
b3JSdW50aW1lOw0KICAgIHZvaWQgICogTWFuYWdlckVwdjsNCiAgICB2b2lkICAqIEltcG9ydENv
bnRleHQ7DQogICAgdW5zaWduZWQgbG9uZyBScGNGbGFnczsNCn0gUlBDX01FU1NBR0UsICAqIFBS
UENfTUVTU0FHRTsNCg0KI2xpbmUgNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQp0eXBlZGVmIFJQQ19TVEFUVVMNCl9fc3RkY2FsbCBSUENfRk9SV0FSRF9G
VU5DVElPTigNCiAgICAgICAgICAgICAgICAgICAgICAgIFVVSUQgICAgICAgICAgICAgICogSW50
ZXJmYWNlSWQsDQogICAgICAgICAgICAgICAgICAgICAgICBSUENfVkVSU0lPTiAgICAgICAqIElu
dGVyZmFjZVZlcnNpb24sDQogICAgICAgICAgICAgICAgICAgICAgICBVVUlEICAgICAgICAgICAg
ICAqIE9iamVjdElkLA0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgICAg
ICAgICAqIFJwY3BybywNCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICogICogcHBEZXN0
RW5kcG9pbnQpOw0KDQplbnVtIFJQQ19BRERSRVNTX0NIQU5HRV9UWVBFDQp7DQogICAgUFJPVE9D
T0xfTk9UX0xPQURFRCA9IDEsDQogICAgUFJPVE9DT0xfTE9BREVELA0KICAgIFBST1RPQ09MX0FE
RFJFU1NfQ0hBTkdFDQp9Ow0KDQp0eXBlZGVmIHZvaWQNCl9fc3RkY2FsbCBSUENfQUREUkVTU19D
SEFOR0VfRk4oDQogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqIGFyZw0KICAgICAgICAg
ICAgICAgICAgICAgICAgKTsNCg0KI2xpbmUgOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQoNCiNsaW5lIDEx
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2VwLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxMjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2Rj
ZXAuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNjAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cnBjZGNlcC5oIg0KDQoNCg0KDQojbGluZSAxNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJw
Y2RjZXAuaCINCg0KDQoNCnR5cGVkZWYNCnZvaWQNCihfX3N0ZGNhbGwgICogUlBDX0RJU1BBVENI
X0ZVTkNUSU9OKSAoDQogICAgICBQUlBDX01FU1NBR0UgTWVzc2FnZQ0KICAgICk7DQoNCnR5cGVk
ZWYgc3RydWN0IHsNCiAgICB1bnNpZ25lZCBpbnQgRGlzcGF0Y2hUYWJsZUNvdW50Ow0KICAgIFJQ
Q19ESVNQQVRDSF9GVU5DVElPTiAgKiBEaXNwYXRjaFRhYmxlOw0KICAgIExPTkdfUFRSICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXNlcnZlZDsNCn0gUlBDX0RJU1BBVENIX1RBQkxFLCAgKiBQ
UlBDX0RJU1BBVENIX1RBQkxFOw0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX1BST1RTRVFfRU5EUE9J
TlQNCnsNCiAgICB1bnNpZ25lZCBjaGFyICAqIFJwY1Byb3RvY29sU2VxdWVuY2U7DQogICAgdW5z
aWduZWQgY2hhciAgKiBFbmRwb2ludDsNCn0gUlBDX1BST1RTRVFfRU5EUE9JTlQsICAqIFBSUENf
UFJPVFNFUV9FTkRQT0lOVDsNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUlBDX1NF
UlZFUl9JTlRFUkZBQ0UNCnsNCiAgICB1bnNpZ25lZCBpbnQgTGVuZ3RoOw0KICAgIFJQQ19TWU5U
QVhfSURFTlRJRklFUiBJbnRlcmZhY2VJZDsNCiAgICBSUENfU1lOVEFYX0lERU5USUZJRVIgVHJh
bnNmZXJTeW50YXg7DQogICAgUFJQQ19ESVNQQVRDSF9UQUJMRSBEaXNwYXRjaFRhYmxlOw0KICAg
IHVuc2lnbmVkIGludCBScGNQcm90c2VxRW5kcG9pbnRDb3VudDsNCiAgICBQUlBDX1BST1RTRVFf
RU5EUE9JTlQgUnBjUHJvdHNlcUVuZHBvaW50Ow0KICAgIHZvaWQgICpEZWZhdWx0TWFuYWdlckVw
djsNCiAgICB2b2lkIGNvbnN0ICAqSW50ZXJwcmV0ZXJJbmZvOw0KICAgIHVuc2lnbmVkIGludCBG
bGFncyA7DQp9IFJQQ19TRVJWRVJfSU5URVJGQUNFLCAgKiBQUlBDX1NFUlZFUl9JTlRFUkZBQ0U7
DQoNCnR5cGVkZWYgc3RydWN0IF9SUENfQ0xJRU5UX0lOVEVSRkFDRQ0Kew0KICAgIHVuc2lnbmVk
IGludCBMZW5ndGg7DQogICAgUlBDX1NZTlRBWF9JREVOVElGSUVSICAgSW50ZXJmYWNlSWQ7DQog
ICAgUlBDX1NZTlRBWF9JREVOVElGSUVSICAgVHJhbnNmZXJTeW50YXg7DQogICAgUFJQQ19ESVNQ
QVRDSF9UQUJMRSAgICAgRGlzcGF0Y2hUYWJsZTsNCiAgICB1bnNpZ25lZCBpbnQgICAgICAgICAg
ICBScGNQcm90c2VxRW5kcG9pbnRDb3VudDsNCiAgICBQUlBDX1BST1RTRVFfRU5EUE9JTlQgICBS
cGNQcm90c2VxRW5kcG9pbnQ7DQogICAgVUxPTkdfUFRSICAgICAgICAgICAgICAgUmVzZXJ2ZWQ7
DQogICAgdm9pZCBjb25zdCAgKiAgSW50ZXJwcmV0ZXJJbmZvOw0KICAgIHVuc2lnbmVkIGludCBG
bGFncyA7DQp9IFJQQ19DTElFTlRfSU5URVJGQUNFLCAgKiBQUlBDX0NMSUVOVF9JTlRFUkZBQ0U7
DQoNCiNsaW5lIDIzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2VwLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBj
TmVnb3RpYXRlVHJhbnNmZXJTeW50YXggKA0KICAgICAgUlBDX01FU1NBR0UgICogTWVzc2FnZQ0K
ICAgICk7DQojbGluZSAyNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNHZXRCdWZmZXIg
KA0KICAgICAgUlBDX01FU1NBR0UgICogTWVzc2FnZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY0dldEJ1ZmZlcldpdGhPYmplY3Qg
KA0KICAgICAgUlBDX01FU1NBR0UgICogTWVzc2FnZSwNCiAgICAgVVVJRCAqIE9iamVjdFV1aWQN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2Fs
bA0KSV9ScGNTZW5kUmVjZWl2ZSAoDQogICAgICBSUENfTUVTU0FHRSAgKiBNZXNzYWdlDQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklf
UnBjRnJlZUJ1ZmZlciAoDQogICAgICBSUENfTUVTU0FHRSAgKiBNZXNzYWdlDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjU2Vu
ZCAoDQogICAgICBQUlBDX01FU1NBR0UgTWVzc2FnZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY1JlY2VpdmUgKA0KICAgICAg
UFJQQ19NRVNTQUdFIE1lc3NhZ2UsDQogICAgIHVuc2lnbmVkIGludCBTaXplDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjRnJl
ZVBpcGVCdWZmZXIgKA0KICAgICAgUlBDX01FU1NBR0UgICogTWVzc2FnZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY1JlYWxs
b2NQaXBlQnVmZmVyICgNCiAgICAgIFBSUENfTUVTU0FHRSBNZXNzYWdlLA0KICAgICB1bnNpZ25l
ZCBpbnQgTmV3U2l6ZQ0KICAgICk7DQoNCnR5cGVkZWYgdm9pZCAqIElfUlBDX01VVEVYOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KSV9ScGNSZXF1ZXN0TXV0ZXgg
KA0KICAgICAgSV9SUENfTVVURVggKiBNdXRleA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpJX1JwY0NsZWFyTXV0ZXggKA0KICAgICBJX1JQQ19NVVRF
WCBNdXRleA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxs
DQpJX1JwY0RlbGV0ZU11dGV4ICgNCiAgICAgSV9SUENfTVVURVggTXV0ZXgNCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgICoNCl9fc3RkY2FsbA0KSV9ScGNBbGxvY2F0ZSAo
DQogICAgIHVuc2lnbmVkIGludCBTaXplDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQp2b2lkDQpfX3N0ZGNhbGwNCklfUnBjRnJlZSAoDQogICAgIHZvaWQgICogT2JqZWN0DQogICAg
KTsNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgbG9uZw0KX19z
dGRjYWxsDQpJX1JwY0ZyZWVTeXN0ZW1IYW5kbGVDb2xsZWN0aW9uICgNCiAgICAgIHZvaWQgKiBD
YWxsT2JqLA0KICAgICAgdW5zaWduZWQgbG9uZyBGcmVlRmxhZ3MNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNTZXRTeXN0ZW1IYW5k
bGUgKA0KICAgICAgdm9pZCAqIEhhbmRsZSwNCiAgICAgIHVuc2lnbmVkIGNoYXIgVHlwZSwNCiAg
ICAgIHVuc2lnbmVkIGxvbmcgQWNjZXNzTWFzaywNCiAgICAgIHZvaWQgKiBDYWxsT2JqLA0KICAg
ICAgdW5zaWduZWQgbG9uZyAqIEhhbmRsZUluZGV4DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjR2V0U3lzdGVtSGFuZGxlICgNCiAg
ICAgIHVuc2lnbmVkIGNoYXIqIHBNZW1vcnksDQogICAgICB1bnNpZ25lZCBjaGFyIFR5cGUsDQog
ICAgICB1bnNpZ25lZCBsb25nIEFjY2Vzc01hc2ssDQogICAgICB1bnNpZ25lZCBsb25nIEhhbmRs
ZUluZGV4LA0KICAgICAgdm9pZCAqIENhbGxPYmoNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KSV9ScGNGcmVlU3lzdGVtSGFuZGxlICgNCiAgICAgIHVu
c2lnbmVkIGNoYXIgVHlwZSwNCiAgICAgIHZvaWQgKiBIYW5kbGUNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KSV9ScGNQYXVzZUV4ZWN1dGlvbiAoDQog
ICAgIHVuc2lnbmVkIGxvbmcgTWlsbGlzZWNvbmRzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjR2V0RXh0ZW5kZWRFcnJvciAoDQog
ICAgdm9pZA0KICAgICk7DQoNCg0KdHlwZWRlZiBlbnVtIF9MUlBDX1NZU1RFTV9IQU5ETEVfTUFS
U0hBTF9ESVJFQ1RJT04NCnsNCiAgICBNYXJzaGFsRGlyZWN0aW9uTWFyc2hhbCwNCiAgICBNYXJz
aGFsRGlyZWN0aW9uVW5tYXJzaGFsDQp9TFJQQ19TWVNURU1fSEFORExFX01BUlNIQUxfRElSRUNU
SU9OOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9S
cGNTeXN0ZW1IYW5kbGVUeXBlU3BlY2lmaWNXb3JrICgNCiAgICAgIHZvaWQgKiBIYW5kbGUsDQog
ICAgICB1bnNpZ25lZCBjaGFyIEFjdHVhbFR5cGUsDQogICAgICB1bnNpZ25lZCBjaGFyIElkbFR5
cGUsDQogICAgICBMUlBDX1NZU1RFTV9IQU5ETEVfTUFSU0hBTF9ESVJFQ1RJT04gTWFyc2hhbERp
cmVjdGlvbg0KICAgICk7DQoNCnR5cGVkZWYNCnZvaWQNCihfX3N0ZGNhbGwgICogUFJQQ19SVU5E
T1dOKSAoDQogICAgdm9pZCAgKiBBc3NvY2lhdGlvbkNvbnRleHQNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNNb25pdG9yQXNz
b2NpYXRpb24gKA0KICAgICBSUENfQklORElOR19IQU5ETEUgSGFuZGxlLA0KICAgICBQUlBDX1JV
TkRPV04gUnVuZG93blJvdXRpbmUsDQogICAgIHZvaWQgKiBDb250ZXh0DQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjU3RvcE1v
bml0b3JBc3NvY2lhdGlvbiAoDQogICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBIYW5kbGUNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19CSU5ESU5HX0hBTkRMRQ0KX19zdGRjYWxs
DQpJX1JwY0dldEN1cnJlbnRDYWxsSGFuZGxlKA0KICAgIHZvaWQNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNHZXRBc3NvY2lh
dGlvbkNvbnRleHQgKA0KICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZ0hhbmRsZSwNCiAg
ICAgdm9pZCAgKiAgKiBBc3NvY2lhdGlvbkNvbnRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQgKg0KX19zdGRjYWxsDQpJX1JwY0dldFNlcnZlckNvbnRleHRMaXN0ICgN
CiAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmdIYW5kbGUNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KSV9ScGNTZXRTZXJ2ZXJDb250ZXh0TGlz
dCAoDQogICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nSGFuZGxlLA0KICAgICB2b2lkICog
U2VydmVyQ29udGV4dExpc3QNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19T
VEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNOc0ludGVyZmFjZUV4cG9ydGVkICgNCiAgICAgdW5zaWdu
ZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgIHVuc2lnbmVkIHNob3J0ICpFbnRyeU5hbWUs
DQogICAgIFJQQ19TRVJWRVJfSU5URVJGQUNFICogUnBjSW50ZXJmYWNlSW5mb3JtYXRpb24NCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9S
cGNOc0ludGVyZmFjZVVuZXhwb3J0ZWQgKA0KICAgICB1bnNpZ25lZCBsb25nIEVudHJ5TmFtZVN5
bnRheCwNCiAgICAgdW5zaWduZWQgc2hvcnQgKkVudHJ5TmFtZSwNCiAgICAgUlBDX1NFUlZFUl9J
TlRFUkZBQ0UgKiBScGNJbnRlcmZhY2VJbmZvcm1hdGlvbg0KICAgICk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY0JpbmRpbmdUb1N0YXRpY1N0
cmluZ0JpbmRpbmdXICgNCiAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAgIHVu
c2lnbmVkIHNob3J0ICoqU3RyaW5nQmluZGluZw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY0JpbmRpbmdJbnFTZWN1cml0eUNvbnRl
eHQgKA0KICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAgdm9pZCAqKlNlY3Vy
aXR5Q29udGV4dEhhbmRsZQ0KICAgICk7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19TRUNfQ09O
VEVYVF9LRVlfSU5GTw0Kew0KICAgIHVuc2lnbmVkIGxvbmcgRW5jcnlwdEFsZ29yaXRobTsNCiAg
ICB1bnNpZ25lZCBsb25nIEtleVNpemU7DQogICAgdW5zaWduZWQgbG9uZyBTaWduYXR1cmVBbGdv
cml0aG07DQp9DQpSUENfU0VDX0NPTlRFWFRfS0VZX0lORk8sICpQUlBDX1NFQ19DT05URVhUX0tF
WV9JTkZPOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0K
SV9ScGNCaW5kaW5nSW5xU2VjdXJpdHlDb250ZXh0S2V5SW5mbyAoDQogICAgICBSUENfQklORElO
R19IQU5ETEUgQmluZGluZywNCiAgICAgIHZvaWQgKktleUluZm8NCiAgICApOw0KDQojbGluZSA1
MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
ClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNCaW5kaW5nSW5xV2lyZUlkRm9yU25lZ28gKA0K
ICAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAgICB1bnNpZ25lZCBjaGFyICog
V2lyZUlkDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9f
c3RkY2FsbA0KSV9ScGNCaW5kaW5nSW5xTWFyc2hhbGxlZFRhcmdldEluZm8gKA0KICAgICAgUlBD
X0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAgICB1bnNpZ25lZCBsb25nICogTWFyc2hhbGxl
ZFRhcmdldEluZm9TaXplLA0KICAgICBSUENfQ1NUUiAqIE1hcnNoYWxsZWRUYXJnZXRJbmZvDQog
ICAgKTsNCiNsaW5lIDU1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2VwLmgiDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjQmluZGluZ0lucUxv
Y2FsQ2xpZW50UElEICgNCiAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAgIHVu
c2lnbmVkIGxvbmcgKlBpZA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NU
QVRVUw0KX19zdGRjYWxsDQpJX1JwY0JpbmRpbmdIYW5kbGVUb0FzeW5jSGFuZGxlICgNCiAgICAg
UlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAgIHZvaWQgKipBc3luY0hhbmRsZQ0KICAg
ICk7DQojbGluZSA1NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjTnNCaW5kaW5n
U2V0RW50cnlOYW1lVyAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAg
IHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAgUlBDX1dTVFIgRW50cnlOYW1l
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNh
bGwNCklfUnBjTnNCaW5kaW5nU2V0RW50cnlOYW1lQSAoDQogICAgICBSUENfQklORElOR19IQU5E
TEUgQmluZGluZywNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAg
UlBDX0NTVFIgRW50cnlOYW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENf
U1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjU2VydmVyVXNlUHJvdHNlcUVwMkEgKA0KICAgICAgUlBD
X0NTVFIgTmV0d29ya0FkZHJlc3MsDQogICAgICBSUENfQ1NUUiBQcm90c2VxLA0KICAgICAgdW5z
aWduZWQgaW50IE1heENhbGxzLA0KICAgICAgUlBDX0NTVFIgRW5kcG9pbnQsDQogICAgICB2b2lk
ICAqIFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIHZvaWQgKiBQb2xpY3kNCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNTZXJ2ZXJV
c2VQcm90c2VxRXAyVyAoDQogICAgICBSUENfV1NUUiBOZXR3b3JrQWRkcmVzcywNCiAgICAgIFJQ
Q19XU1RSIFByb3RzZXEsDQogICAgICB1bnNpZ25lZCBpbnQgTWF4Q2FsbHMsDQogICAgICBSUENf
V1NUUiBFbmRwb2ludCwNCiAgICAgIHZvaWQgICogU2VjdXJpdHlEZXNjcmlwdG9yLA0KICAgICAg
dm9pZCAqIFBvbGljeQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRV
Uw0KX19zdGRjYWxsDQpJX1JwY1NlcnZlclVzZVByb3RzZXEyVyAoDQogICAgICBSUENfV1NUUiBO
ZXR3b3JrQWRkcmVzcywNCiAgICAgIFJQQ19XU1RSIFByb3RzZXEsDQogICAgICB1bnNpZ25lZCBp
bnQgTWF4Q2FsbHMsDQogICAgICB2b2lkICAqIFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIHZv
aWQgKiBQb2xpY3kNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMN
Cl9fc3RkY2FsbA0KSV9ScGNTZXJ2ZXJVc2VQcm90c2VxMkEgKA0KICAgICAgUlBDX0NTVFIgTmV0
d29ya0FkZHJlc3MsDQogICAgICBSUENfQ1NUUiBQcm90c2VxLA0KICAgICAgdW5zaWduZWQgaW50
IE1heENhbGxzLA0KICAgICAgdm9pZCAgKiBTZWN1cml0eURlc2NyaXB0b3IsDQogICAgICB2b2lk
ICogUG9saWN5DQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjQ3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjgyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHJwY2RjZXAuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0
ZGNhbGwNCklfUnBjU2VydmVyU3RhcnRTZXJ2aWNlICgNCiAgICAgIFJQQ19XU1RSIFByb3RzZXEs
DQogICAgICBSUENfV1NUUiBFbmRwb2ludCwNCiAgICAgIFJQQ19JRl9IQU5ETEUgSWZTcGVjDQog
ICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRj
YWxsDQpJX1JwY0JpbmRpbmdJbnFEeW5hbWljRW5kcG9pbnRXICgNCiAgICAgIFJQQ19CSU5ESU5H
X0hBTkRMRSBCaW5kaW5nLA0KICAgICBSUENfV1NUUiAgKkR5bmFtaWNFbmRwb2ludA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1Jw
Y0JpbmRpbmdJbnFEeW5hbWljRW5kcG9pbnRBICgNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBC
aW5kaW5nLA0KICAgICBSUENfQ1NUUiAgKkR5bmFtaWNFbmRwb2ludA0KICAgICk7DQoNCg0KDQoN
Cg0KI2xpbmUgNzE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDczMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2VwLmgiDQoNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjU2VydmVyQ2hl
Y2tDbGllbnRSZXN0cmljdGlvbiAoDQogICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBDb250ZXh0DQog
ICAgKTsNCiNsaW5lIDczOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2VwLmgiDQoNCg0KDQoNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1Jw
Y0JpbmRpbmdJbnFUcmFuc3BvcnRUeXBlICgNCiAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRp
bmcsDQogICAgIHVuc2lnbmVkIGludCAgKiBUeXBlDQogICAgKTsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1JQQ19UUkFOU0ZFUl9TWU5UQVgNCnsNCiAgICBVVUlEIFV1aWQ7DQogICAgdW5zaWduZWQgc2hv
cnQgVmVyc01ham9yOw0KICAgIHVuc2lnbmVkIHNob3J0IFZlcnNNaW5vcjsNCn0gUlBDX1RSQU5T
RkVSX1NZTlRBWDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0
ZGNhbGwNCklfUnBjSWZJbnFUcmFuc2ZlclN5bnRheGVzICgNCiAgICAgUlBDX0lGX0hBTkRMRSBS
cGNJZkhhbmRsZSwNCiAgICAgUlBDX1RSQU5TRkVSX1NZTlRBWCAgKiBUcmFuc2ZlclN5bnRheGVz
LA0KICAgICB1bnNpZ25lZCBpbnQgVHJhbnNmZXJTeW50YXhTaXplLA0KICAgICB1bnNpZ25lZCBp
bnQgICogVHJhbnNmZXJTeW50YXhDb3VudA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1V1aWRDcmVhdGUgKA0KICAgICBVVUlEICAq
IFV1aWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgDQpfX3N0ZGNhbGwg
DQpJX1JwY1VuaW5pdGlhbGl6ZU5kck9sZSAoDQogICAgdm9pZA0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY0JpbmRpbmdDb3B5
ICgNCiAgICAgUlBDX0JJTkRJTkdfSEFORExFIFNvdXJjZUJpbmRpbmcsDQogICAgIFJQQ19CSU5E
SU5HX0hBTkRMRSAgKiBEZXN0aW5hdGlvbkJpbmRpbmcNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNCaW5kaW5nSXNDbGllbnRMb2Nh
bCAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQmluZGluZ0hhbmRsZSwNCiAgICAgdW5zaWdu
ZWQgaW50ICAqIENsaWVudExvY2FsRmxhZw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY0JpbmRpbmdJbnFDb25uSWQgKA0KICAgICBS
UENfQklORElOR19IQU5ETEUgQmluZGluZywNCiAgICAgdm9pZCAqKkNvbm5JZCwNCiAgICAgaW50
ICpwZkZpcnN0Q2FsbA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRV
Uw0KX19zdGRjYWxsDQpJX1JwY0JpbmRpbmdDcmVhdGVOUCAoDQogICAgICBSUENfV1NUUiBTZXJ2
ZXJOYW1lLA0KICAgICAgUlBDX1dTVFIgU2VydmljZU5hbWUsDQogICAgICBSUENfV1NUUiBOZXR3
b3JrT3B0aW9ucywNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSAqQmluZGluZw0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpJX1JwY1NzRG9udFNlcmlh
bGl6ZUNvbnRleHQgKA0KICAgIHZvaWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CiANClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNMYXVuY2hEYXRhZ3JhbVJlY2VpdmVUaHJl
YWQoDQogICAgdm9pZCAgKiBwQWRkcmVzcw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY1NlcnZlclJlZ2lzdGVyRm9yd2FyZEZ1
bmN0aW9uICgNCiAgICAgUlBDX0ZPUldBUkRfRlVOQ1RJT04gICogcEZvcndhcmRGdW5jdGlvbg0K
ICAgICk7DQoNClJQQ19BRERSRVNTX0NIQU5HRV9GTiAqIF9fc3RkY2FsbA0KSV9ScGNTZXJ2ZXJJ
bnFBZGRyZXNzQ2hhbmdlRm4oDQogICAgdm9pZA0KICAgICk7DQoNClJQQ19TVEFUVVMgX19zdGRj
YWxsDQpJX1JwY1NlcnZlclNldEFkZHJlc3NDaGFuZ2VGbigNCiAgICAgUlBDX0FERFJFU1NfQ0hB
TkdFX0ZOICogcEFkZHJlc3NDaGFuZ2VGbg0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjU2VydmVySW5xTG9j
YWxDb25uQWRkcmVzcyAoDQogICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAg
dm9pZCAqQnVmZmVyLA0KICAgICAgdW5zaWduZWQgbG9uZyAqQnVmZmVyU2l6ZSwNCiAgICAgdW5z
aWduZWQgbG9uZyAqQWRkcmVzc0Zvcm1hdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY1NlcnZlcklucVJlbW90ZUNvbm5BZGRyZXNz
ICgNCiAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAgICB2b2lkICpCdWZmZXIs
DQogICAgICB1bnNpZ25lZCBsb25nICpCdWZmZXJTaXplLA0KICAgICB1bnNpZ25lZCBsb25nICpB
ZGRyZXNzRm9ybWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0
ZGNhbGwNCklfUnBjU2Vzc2lvblN0cmljdENvbnRleHRIYW5kbGUgKA0KICAgIHZvaWQNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNU
dXJuT25FRUluZm9Qcm9wYWdhdGlvbiAoDQogICAgdm9pZA0KICAgICk7DQojbGluZSA4OTggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQ
Q19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNDb25uZWN0aW9uSW5xU29ja0J1ZmZTaXplKA0KICAg
dW5zaWduZWQgbG9uZyAgKiBSZWN2QnVmZlNpemUsDQogICB1bnNpZ25lZCBsb25nICAqIFNlbmRC
dWZmU2l6ZQ0KICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19TVEFUVVMNCl9f
c3RkY2FsbA0KSV9ScGNDb25uZWN0aW9uU2V0U29ja0J1ZmZTaXplKA0KICAgIHVuc2lnbmVkIGxv
bmcgUmVjdkJ1ZmZTaXplLA0KICAgIHVuc2lnbmVkIGxvbmcgU2VuZEJ1ZmZTaXplDQogICApOw0K
DQp0eXBlZGVmDQp2b2lkDQooKlJQQ0xUX1BEVV9GSUxURVJfRlVOQykgKA0KICAgICB2b2lkICpC
dWZmZXIsDQogICAgIHVuc2lnbmVkIGludCBCdWZmZXJMZW5ndGgsDQogICAgIGludCBmRGF0YWdy
YW0NCiAgICApOw0KDQp0eXBlZGVmDQp2b2lkDQooX19jZGVjbCAqUlBDX1NFVEZJTFRFUl9GVU5D
KSAoDQogICAgIFJQQ0xUX1BEVV9GSUxURVJfRlVOQyBwZm5GaWx0ZXINCiAgICApOw0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY1NlcnZl
clN0YXJ0TGlzdGVuaW5nKA0KICAgIHZvaWQgKiBoV25kDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjU2VydmVyU3RvcExpc3Rl
bmluZygNCiAgICB2b2lkDQogICAgKTsNCg0KdHlwZWRlZiBSUENfU1RBVFVTICgqUlBDX0JMT0NL
SU5HX0ZOKSAoDQogICAgIHZvaWQgKiBoV25kLA0KICAgICB2b2lkICogQ29udGV4dCwNCiAgICAg
IHZvaWQgKiBoU3luY0V2ZW50DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpS
UENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjQmluZGluZ1NldEFzeW5jKA0KICAgICBSUENfQklO
RElOR19IQU5ETEUgQmluZGluZywNCiAgICAgUlBDX0JMT0NLSU5HX0ZOIEJsb2NraW5nRm4sDQog
ICAgIHVuc2lnbmVkIGxvbmcgU2VydmVyVGlkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfUnBjU2V0VGhyZWFkUGFyYW1zKA0KICAg
ICBpbnQgZkNsaWVudEZyZWUsDQogICAgICB2b2lkICpDb250ZXh0LA0KICAgICAgdm9pZCAqIGhX
bmRDbGllbnQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGludA0K
X19zdGRjYWxsDQpJX1JwY1dpbmRvd1Byb2MoDQogICAgIHZvaWQgKiBoV25kLA0KICAgICB1bnNp
Z25lZCBpbnQgTWVzc2FnZSwNCiAgICAgdW5zaWduZWQgaW50IHdQYXJhbSwNCiAgICAgdW5zaWdu
ZWQgbG9uZyBsUGFyYW0NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCiANClJQQ19T
VEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNTZXJ2ZXJVbnJlZ2lzdGVyRW5kcG9pbnRBICgNCiAgICAg
IFJQQ19DU1RSIFByb3RzZXEsDQogICAgICBSUENfQ1NUUiBFbmRwb2ludA0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY1NlcnZl
clVucmVnaXN0ZXJFbmRwb2ludFcgKA0KICAgICAgUlBDX1dTVFIgUHJvdHNlcSwNCiAgICAgIFJQ
Q19XU1RSIEVuZHBvaW50DQogICAgKTsNCg0KDQoNCg0KDQojbGluZSAxMDA3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY2RjZXAuaCINCiNsaW5lIDEwMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5o
Ig0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNT
ZXJ2ZXJJbnFUcmFuc3BvcnRUeXBlKA0KICAgICB1bnNpZ25lZCBpbnQgICogVHlwZQ0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KbG9uZw0KX19zdGRjYWxsDQpJX1JwY01hcFdpbjMy
U3RhdHVzICgNCiAgICAgUlBDX1NUQVRVUyBTdGF0dXMNCiAgICApOw0KDQoNCg0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCBfUlBDX0NfT1BUX0NPT0tJRV9BVVRIX0RFU0NSSVBUT1INCnsNCiAgICB1
bnNpZ25lZCBsb25nIEJ1ZmZlclNpemU7ICAgDQogICAgICBjaGFyICpCdWZmZXI7ICAgICAgICAg
ICAgICAgDQp9IFJQQ19DX09QVF9DT09LSUVfQVVUSF9ERVNDUklQVE9SOw0KDQp0eXBlZGVmIHN0
cnVjdCBfUkRSX0NBTExPVVRfU1RBVEUNCnsNCiAgICANCiAgICBSUENfU1RBVFVTIExhc3RFcnJv
cjsNCiAgICB2b2lkICpMYXN0RUVJbmZvOw0KDQogICAgUlBDX0hUVFBfUkVESVJFQ1RPUl9TVEFH
RSBMYXN0Q2FsbGVkU3RhZ2U7DQoNCiAgICANCiAgICB1bnNpZ25lZCBzaG9ydCAqU2VydmVyTmFt
ZTsgICANCiAgICB1bnNpZ25lZCBzaG9ydCAqU2VydmVyUG9ydDsgICANCiAgICB1bnNpZ25lZCBz
aG9ydCAqUmVtb3RlVXNlcjsgICANCiAgICB1bnNpZ25lZCBzaG9ydCAqQXV0aFR5cGU7ICAgICAN
CiAgICB1bnNpZ25lZCBjaGFyIFJlc291cmNlVHlwZVByZXNlbnQ7DQogICAgdW5zaWduZWQgY2hh
ciBTZXNzaW9uSWRQcmVzZW50Ow0KICAgIHVuc2lnbmVkIGNoYXIgSW50ZXJmYWNlUHJlc2VudDsN
CiAgICBVVUlEIFJlc291cmNlVHlwZTsNCiAgICBVVUlEIFNlc3Npb25JZDsNCiAgICBSUENfU1lO
VEFYX0lERU5USUZJRVIgSW50ZXJmYWNlOw0KICAgIHZvaWQgKkNlcnRDb250ZXh0OyAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KfSBSRFJfQ0FMTE9VVF9TVEFURTsNCiNsaW5lIDEwNTkgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQoNCnR5cGVkZWYgUlBDX1NUQVRVUw0KKF9fc3Rk
Y2FsbCAqSV9ScGNQcm94eUlzVmFsaWRNYWNoaW5lRm4pDQogICAgICAgICgNCiAgICAgICAgICBS
UENfV1NUUiBNYWNoaW5lLA0KICAgICAgICAgIFJQQ19XU1RSIERvdE1hY2hpbmUsDQogICAgICAg
ICAgdW5zaWduZWQgbG9uZyBQb3J0TnVtYmVyDQogICAgICAgICk7DQoNCnR5cGVkZWYgUlBDX1NU
QVRVUw0KKF9fc3RkY2FsbCAqSV9ScGNQcm94eUdldENsaWVudEFkZHJlc3NGbikNCiAgICAgICAg
KA0KICAgICAgICAgdm9pZCAqQ29udGV4dCwNCiAgICAgICAgIGNoYXIgKkJ1ZmZlciwNCiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgKkJ1ZmZlckxlbmd0aA0KICAgICAgICApOw0KDQp0eXBlZGVmIFJQ
Q19TVEFUVVMNCihfX3N0ZGNhbGwgKklfUnBjUHJveHlHZXRDb25uZWN0aW9uVGltZW91dEZuKQ0K
ICAgICAgICAoDQogICAgICAgICB1bnNpZ25lZCBsb25nICpDb25uZWN0aW9uVGltZW91dA0KICAg
ICAgICApOw0KDQoNCnR5cGVkZWYgUlBDX1NUQVRVUw0KKF9fc3RkY2FsbCAqSV9ScGNQZXJmb3Jt
Q2FsbG91dEZuKQ0KICAgICgNCiAgICAgdm9pZCAqQ29udGV4dCwNCiAgICAgUkRSX0NBTExPVVRf
U1RBVEUgKkNhbGxPdXRTdGF0ZSwNCiAgICAgUlBDX0hUVFBfUkVESVJFQ1RPUl9TVEFHRSBTdGFn
ZQ0KICAgICk7DQoNCnR5cGVkZWYgdm9pZA0KKF9fc3RkY2FsbCAqSV9ScGNGcmVlQ2FsbG91dFN0
YXRlRm4pDQogICAgKA0KICAgICBSRFJfQ0FMTE9VVF9TVEFURSAqQ2FsbE91dFN0YXRlDQogICAg
KTsNCg0KdHlwZWRlZiBSUENfU1RBVFVTDQooX19zdGRjYWxsICpJX1JwY1Byb3h5R2V0Q2xpZW50
U2Vzc2lvbkFuZFJlc291cmNlVVVJRCkNCiAgICAgICAgKA0KICAgICAgICAgIHZvaWQgKkNvbnRl
eHQsDQogICAgICAgICAgaW50ICpTZXNzaW9uSWRQcmVzZW50LA0KICAgICAgICAgIFVVSUQgKlNl
c3Npb25JZCwNCiAgICAgICAgICBpbnQgKlJlc291cmNlSWRQcmVzZW50LA0KICAgICAgICAgIFVV
SUQgKlJlc291cmNlSWQNCiAgICAgICAgKTsNCg0KI2xpbmUgMTEwOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxycGNkY2VwLmgiDQoNCg0KdHlwZWRlZiBSUENfU1RBVFVTDQooX19zdGRjYWxsICpJX1JwY1By
b3h5RmlsdGVySWZGbikNCiAgICAoDQogICAgICB2b2lkICpDb250ZXh0LA0KICAgICAgVVVJRCAq
SWZVdWlkLA0KICAgICAgdW5zaWduZWQgc2hvcnQgSWZNYWpvclZlcnNpb24sDQogICAgICBpbnQg
KmZBbGxvdw0KICAgICk7DQoNCnR5cGVkZWYgZW51bSBScGNQcm94eVBlcmZDb3VudGVycw0Kew0K
ICAgIFJwY0N1cnJlbnRVbmlxdWVVc2VyID0gMSwgICAgDQogICAgUnBjQmFja0VuZENvbm5lY3Rp
b25BdHRlbXB0cywgDQogICAgUnBjQmFja0VuZENvbm5lY3Rpb25GYWlsZWQsIA0KICAgIFJwY1Jl
cXVlc3RzUGVyU2Vjb25kLCANCiAgICBScGNJbmNvbWluZ0Nvbm5lY3Rpb25zLCANCiAgICBScGNJ
bmNvbWluZ0JhbmR3aWR0aCwgDQogICAgUnBjT3V0Z29pbmdCYW5kd2lkdGgsIA0KICAgIFJwY0F0
dGVtcHRlZExic0RlY2lzaW9ucywgDQogICAgUnBjRmFpbGVkTGJzRGVjaXNpb25zLCANCiAgICBS
cGNBdHRlbXB0ZWRMYnNNZXNzYWdlcywgDQogICAgUnBjRmFpbGVkTGJzTWVzc2FnZXMsIA0KICAg
IFJwY0xhc3RDb3VudGVyDQp9IFJwY1BlcmZDb3VudGVyczsNCg0KdHlwZWRlZiB2b2lkDQooX19z
dGRjYWxsICpJX1JwY1Byb3h5VXBkYXRlUGVyZkNvdW50ZXJGbikNCiAgICAoDQogICAgICBScGNQ
ZXJmQ291bnRlcnMgQ291bnRlciwNCiAgICAgIGludCBNb2RpZnlUcmVuZCwNCiAgICAgIHVuc2ln
bmVkIGxvbmcgU2l6ZQ0KICAgICk7DQoNCiB0eXBlZGVmIHZvaWQNCihfX3N0ZGNhbGwgKklfUnBj
UHJveHlVcGRhdGVQZXJmQ291bnRlckJhY2tlbmRTZXJ2ZXJGbikNCiAgICAoDQogICAgICB1bnNp
Z25lZCBzaG9ydCogTWFjaGluZU5hbWUsDQogICAgICBpbnQgSXNDb25uZWN0RXZlbnQNCiAgICAp
Ow0KDQojbGluZSAxMTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCB0YWdJX1JwY1Byb3h5Q2FsbGJhY2tJbnRlcmZhY2UNCnsNCiAgICBJX1Jw
Y1Byb3h5SXNWYWxpZE1hY2hpbmVGbiBJc1ZhbGlkTWFjaGluZUZuOw0KICAgIElfUnBjUHJveHlH
ZXRDbGllbnRBZGRyZXNzRm4gR2V0Q2xpZW50QWRkcmVzc0ZuOw0KICAgIElfUnBjUHJveHlHZXRD
b25uZWN0aW9uVGltZW91dEZuIEdldENvbm5lY3Rpb25UaW1lb3V0Rm47DQogICAgSV9ScGNQZXJm
b3JtQ2FsbG91dEZuIFBlcmZvcm1DYWxsb3V0Rm47DQogICAgSV9ScGNGcmVlQ2FsbG91dFN0YXRl
Rm4gRnJlZUNhbGxvdXRTdGF0ZUZuOw0KICAgIElfUnBjUHJveHlHZXRDbGllbnRTZXNzaW9uQW5k
UmVzb3VyY2VVVUlEIEdldENsaWVudFNlc3Npb25BbmRSZXNvdXJjZVVVSURGbjsNCg0KICAgIElf
UnBjUHJveHlGaWx0ZXJJZkZuIFByb3h5RmlsdGVySWZGbjsNCiAgICBJX1JwY1Byb3h5VXBkYXRl
UGVyZkNvdW50ZXJGbiBScGNQcm94eVVwZGF0ZVBlcmZDb3VudGVyRm47DQogICAgSV9ScGNQcm94
eVVwZGF0ZVBlcmZDb3VudGVyQmFja2VuZFNlcnZlckZuIFJwY1Byb3h5VXBkYXRlUGVyZkNvdW50
ZXJCYWNrZW5kU2VydmVyRm47DQojbGluZSAxMTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAu
aCINCn0gSV9ScGNQcm94eUNhbGxiYWNrSW50ZXJmYWNlOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNQcm94eU5ld0Nvbm5lY3Rpb24gKA0KICAg
ICB1bnNpZ25lZCBsb25nIENvbm5lY3Rpb25UeXBlLA0KICAgICB1bnNpZ25lZCBzaG9ydCAqU2Vy
dmVyQWRkcmVzcywNCiAgICAgdW5zaWduZWQgc2hvcnQgKlNlcnZlclBvcnQsDQogICAgIHVuc2ln
bmVkIHNob3J0ICpNaW5Db25uVGltZW91dCwNCiAgICAgdm9pZCAqQ29ubmVjdGlvblBhcmFtZXRl
ciwNCiAgICAgIFJEUl9DQUxMT1VUX1NUQVRFICpDYWxsT3V0U3RhdGUsDQogICAgIElfUnBjUHJv
eHlDYWxsYmFja0ludGVyZmFjZSAqUHJveHlDYWxsYmFja0ludGVyZmFjZQ0KICAgICk7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTIwNSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxycGNkY2VwLmgiDQoNCiNsaW5lIDEyMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNl
cC5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJ
X1JwY1JlcGx5VG9DbGllbnRXaXRoU3RhdHVzICgNCiAgICAgdm9pZCAqQ29ubmVjdGlvblBhcmFt
ZXRlciwNCiAgICAgUlBDX1NUQVRVUyBScGNTdGF0dXMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KSV9ScGNSZWNvcmRDYWxsb3V0RmFpbHVyZSAoDQog
ICAgIFJQQ19TVEFUVVMgUnBjU3RhdHVzLA0KICAgICBSRFJfQ0FMTE9VVF9TVEFURSAqQ2FsbE91
dFN0YXRlLA0KICAgICB1bnNpZ25lZCBzaG9ydCAqRGxsTmFtZQ0KICAgICk7DQojbGluZSAxMjI2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
ClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNNZ210RW5hYmxlRGVkaWNhdGVkVGhyZWFkUG9v
bCAoDQogICAgdm9pZA0KICAgICk7DQojbGluZSAxMjM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2Rj
ZXAuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0K
SV9ScGNHZXREZWZhdWx0U0QoDQogICAgICB2b2lkICAqKiBwcFNlY3VyaXR5RGVzY3JpcHRvcg0K
ICAgICk7DQojbGluZSAxMjQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KSV9ScGNPcGVuQ2xpZW50
UHJvY2VzcygNCiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAgdW5zaWdu
ZWQgbG9uZyBEZXNpcmVkQWNjZXNzLA0KICAgICB2b2lkKiogQ2xpZW50UHJvY2Vzcw0KICAgICk7
DQojbGluZSAxMjU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNzcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cnBjZGNlcC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDEzMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5o
Ig0KDQojbGluZSAxMzIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDEzMjYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjZGNlcC5oIg0KDQoNCn0NCiNsaW5lIDEzMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBj
ZGNlcC5oIg0KDQoNCg0KDQoNCiNsaW5lIDEzMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlcC5o
Ig0KDQojbGluZSAxMzM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2RjZXAuaCINCiNsaW5lIDMzNDgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccnBjZGNlLmgiDQoNCg0KfQ0KI2xpbmUgMzM1MiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxycGNkY2UuaCINCg0KI2xpbmUgMzM1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNkY2Uu
aCINCiNsaW5lIDE1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCINCg0KI2xpbmUgMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHJwY25zaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJwY25zaS5oIg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgdm9pZCAgKiBSUENfTlNfSEFO
RExFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc0JpbmRpbmdFeHBvcnRBKA0KICAgICAgdW5zaWdu
ZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgICBSUENfQ1NUUiBFbnRyeU5hbWUsDQogICAg
ICBSUENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIFJQQ19CSU5ESU5HX1ZFQ1RPUiAgKkJpbmRp
bmdWZWMsDQogICAgICBVVUlEX1ZFQ1RPUiAgKk9iamVjdFV1aWRWZWMNCiAgICApOw0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNCaW5kaW5nVW5l
eHBvcnRBKA0KICAgICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgICBSUENf
Q1NUUiBFbnRyeU5hbWUsDQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIFVVSURf
VkVDVE9SICAqT2JqZWN0VXVpZFZlYw0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zQmluZGluZ0V4cG9ydFcoDQogICAgICB1bnNp
Z25lZCBsb25nIEVudHJ5TmFtZVN5bnRheCwNCiAgICAgIFJQQ19XU1RSIEVudHJ5TmFtZSwNCiAg
ICAgIFJQQ19JRl9IQU5ETEUgSWZTcGVjLA0KICAgICAgUlBDX0JJTkRJTkdfVkVDVE9SICAqQmlu
ZGluZ1ZlYywNCiAgICAgIFVVSURfVkVDVE9SICAqT2JqZWN0VXVpZFZlYw0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNCaW5kaW5nVW5l
eHBvcnRXKA0KICAgICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgICBSUENf
V1NUUiBFbnRyeU5hbWUsDQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIFVVSURf
VkVDVE9SICAqT2JqZWN0VXVpZFZlYw0KICAgICk7DQoNCiNsaW5lIDgyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
cnBjbnNpLmgiDQoNCg0KDQpSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNCaW5kaW5nRXhwb3J0
UG5QQSgNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAgUlBDX0NT
VFIgRW50cnlOYW1lLA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMsDQogICAgICBVVUlEX1ZF
Q1RPUiAqT2JqZWN0VmVjdG9yDQogICAgKTsNCg0KUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05z
QmluZGluZ1VuZXhwb3J0UG5QQSgNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4
LA0KICAgICAgUlBDX0NTVFIgRW50cnlOYW1lLA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMs
DQogICAgICBVVUlEX1ZFQ1RPUiAqT2JqZWN0VmVjdG9yDQogICAgKTsNCg0KDQoNClJQQ19TVEFU
VVMgX19zdGRjYWxsDQpScGNOc0JpbmRpbmdFeHBvcnRQblBXKA0KICAgICAgdW5zaWduZWQgbG9u
ZyBFbnRyeU5hbWVTeW50YXgsDQogICAgICBSUENfV1NUUiBFbnRyeU5hbWUsDQogICAgICBSUENf
SUZfSEFORExFIElmU3BlYywNCiAgICAgIFVVSURfVkVDVE9SICpPYmplY3RWZWN0b3INCiAgICAp
Ow0KDQpSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNCaW5kaW5nVW5leHBvcnRQblBXKA0KICAg
ICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgICBSUENfV1NUUiBFbnRyeU5h
bWUsDQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAgICAgIFVVSURfVkVDVE9SICpPYmpl
Y3RWZWN0b3INCiAgICApOw0KDQojbGluZSAxMjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxycGNuc2kuaCINCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNCaW5k
aW5nTG9va3VwQmVnaW5BKA0KICAgICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQog
ICAgICBSUENfQ1NUUiBFbnRyeU5hbWUsDQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAg
ICAgIFVVSUQgICpPYmpVdWlkLA0KICAgICAgdW5zaWduZWQgbG9uZyBCaW5kaW5nTWF4Q291bnQs
DQogICAgICBSUENfTlNfSEFORExFICAqTG9va3VwQ29udGV4dA0KICAgICk7DQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zQmluZGluZ0xvb2t1
cEJlZ2luVygNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAgUlBD
X1dTVFIgRW50cnlOYW1lLA0KICAgICAgUlBDX0lGX0hBTkRMRSBJZlNwZWMsDQogICAgICBVVUlE
ICAqT2JqVXVpZCwNCiAgICAgIHVuc2lnbmVkIGxvbmcgQmluZGluZ01heENvdW50LA0KICAgICAg
UlBDX05TX0hBTkRMRSAgKkxvb2t1cENvbnRleHQNCiAgICApOw0KI2xpbmUgMTQ1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccnBjbnNpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3Rk
Y2FsbA0KUnBjTnNCaW5kaW5nTG9va3VwTmV4dCgNCiAgICAgIFJQQ19OU19IQU5ETEUgTG9va3Vw
Q29udGV4dCwNCiAgICAgUlBDX0JJTkRJTkdfVkVDVE9SICAqICAqIEJpbmRpbmdWZWMNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zQmlu
ZGluZ0xvb2t1cERvbmUoDQogICAgICBSUENfTlNfSEFORExFICAqIExvb2t1cENvbnRleHQNCiAg
ICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpS
cGNOc0dyb3VwRGVsZXRlQSgNCiAgICAgIHVuc2lnbmVkIGxvbmcgR3JvdXBOYW1lU3ludGF4LA0K
ICAgICAgUlBDX0NTVFIgR3JvdXBOYW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc0dyb3VwTWJyQWRkQSgNCiAgICAgIHVuc2lnbmVk
IGxvbmcgR3JvdXBOYW1lU3ludGF4LA0KICAgICAgUlBDX0NTVFIgR3JvdXBOYW1lLA0KICAgICAg
dW5zaWduZWQgbG9uZyBNZW1iZXJOYW1lU3ludGF4LA0KICAgICAgUlBDX0NTVFIgTWVtYmVyTmFt
ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0K
UnBjTnNHcm91cE1iclJlbW92ZUEoDQogICAgICB1bnNpZ25lZCBsb25nIEdyb3VwTmFtZVN5bnRh
eCwNCiAgICAgIFJQQ19DU1RSIEdyb3VwTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgTWVtYmVy
TmFtZVN5bnRheCwNCiAgICAgIFJQQ19DU1RSIE1lbWJlck5hbWUNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zR3JvdXBNYnJJbnFCZWdp
bkEoDQogICAgICB1bnNpZ25lZCBsb25nIEdyb3VwTmFtZVN5bnRheCwNCiAgICAgIFJQQ19DU1RS
IEdyb3VwTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgTWVtYmVyTmFtZVN5bnRheCwNCiAgICAg
IFJQQ19OU19IQU5ETEUgICpJbnF1aXJ5Q29udGV4dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNHcm91cE1icklucU5leHRBKA0KICAg
ICAgUlBDX05TX0hBTkRMRSBJbnF1aXJ5Q29udGV4dCwNCiAgICAgUlBDX0NTVFIgICpNZW1iZXJO
YW1lDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3Rk
Y2FsbA0KUnBjTnNHcm91cERlbGV0ZVcoDQogICAgICB1bnNpZ25lZCBsb25nIEdyb3VwTmFtZVN5
bnRheCwNCiAgICAgIFJQQ19XU1RSIEdyb3VwTmFtZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNHcm91cE1ickFkZFcoDQogICAgICB1
bnNpZ25lZCBsb25nIEdyb3VwTmFtZVN5bnRheCwNCiAgICAgIFJQQ19XU1RSIEdyb3VwTmFtZSwN
CiAgICAgIHVuc2lnbmVkIGxvbmcgTWVtYmVyTmFtZVN5bnRheCwNCiAgICAgIFJQQ19XU1RSIE1l
bWJlck5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0
ZGNhbGwNClJwY05zR3JvdXBNYnJSZW1vdmVXKA0KICAgICAgdW5zaWduZWQgbG9uZyBHcm91cE5h
bWVTeW50YXgsDQogICAgICBSUENfV1NUUiBHcm91cE5hbWUsDQogICAgICB1bnNpZ25lZCBsb25n
IE1lbWJlck5hbWVTeW50YXgsDQogICAgICBSUENfV1NUUiBNZW1iZXJOYW1lDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc0dyb3VwTWJy
SW5xQmVnaW5XKA0KICAgICAgdW5zaWduZWQgbG9uZyBHcm91cE5hbWVTeW50YXgsDQogICAgICBS
UENfV1NUUiBHcm91cE5hbWUsDQogICAgICB1bnNpZ25lZCBsb25nIE1lbWJlck5hbWVTeW50YXgs
DQogICAgICBSUENfTlNfSEFORExFICAqSW5xdWlyeUNvbnRleHQNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zR3JvdXBNYnJJbnFOZXh0
VygNCiAgICAgIFJQQ19OU19IQU5ETEUgSW5xdWlyeUNvbnRleHQsDQogICAgIFJQQ19XU1RSICAq
TWVtYmVyTmFtZQ0KICAgICk7DQoNCiNsaW5lIDIzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJwY25zaS5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zR3JvdXBN
YnJJbnFEb25lKA0KICAgICAgUlBDX05TX0hBTkRMRSAgKiBJbnF1aXJ5Q29udGV4dA0KICAgICk7
DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05z
UHJvZmlsZURlbGV0ZUEoDQogICAgICB1bnNpZ25lZCBsb25nIFByb2ZpbGVOYW1lU3ludGF4LA0K
ICAgICAgUlBDX0NTVFIgUHJvZmlsZU5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zUHJvZmlsZUVsdEFkZEEoDQogICAgICB1bnNp
Z25lZCBsb25nIFByb2ZpbGVOYW1lU3ludGF4LA0KICAgICAgUlBDX0NTVFIgUHJvZmlsZU5hbWUs
DQogICAgICBSUENfSUZfSUQgICpJZklkLA0KICAgICAgdW5zaWduZWQgbG9uZyBNZW1iZXJOYW1l
U3ludGF4LA0KICAgICAgUlBDX0NTVFIgTWVtYmVyTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcg
UHJpb3JpdHksDQogICAgICBSUENfQ1NUUiBBbm5vdGF0aW9uDQogICAgKTsNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc1Byb2ZpbGVFbHRSZW1vdmVB
KA0KICAgICAgdW5zaWduZWQgbG9uZyBQcm9maWxlTmFtZVN5bnRheCwNCiAgICAgIFJQQ19DU1RS
IFByb2ZpbGVOYW1lLA0KICAgICAgUlBDX0lGX0lEICAqSWZJZCwNCiAgICAgIHVuc2lnbmVkIGxv
bmcgTWVtYmVyTmFtZVN5bnRheCwNCiAgICAgIFJQQ19DU1RSIE1lbWJlck5hbWUNCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zUHJvZmls
ZUVsdElucUJlZ2luQSgNCiAgICAgIHVuc2lnbmVkIGxvbmcgUHJvZmlsZU5hbWVTeW50YXgsDQog
ICAgICBSUENfQ1NUUiBQcm9maWxlTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgSW5xdWlyeVR5
cGUsDQogICAgICBSUENfSUZfSUQgICpJZklkLA0KICAgICAgdW5zaWduZWQgbG9uZyBWZXJzT3B0
aW9uLA0KICAgICAgdW5zaWduZWQgbG9uZyBNZW1iZXJOYW1lU3ludGF4LA0KICAgICAgUlBDX0NT
VFIgTWVtYmVyTmFtZSwNCiAgICAgIFJQQ19OU19IQU5ETEUgICpJbnF1aXJ5Q29udGV4dA0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNQ
cm9maWxlRWx0SW5xTmV4dEEoDQogICAgICBSUENfTlNfSEFORExFIElucXVpcnlDb250ZXh0LA0K
ICAgICAgUlBDX0lGX0lEICAqSWZJZCwNCiAgICAgIFJQQ19DU1RSICAqTWVtYmVyTmFtZSwNCiAg
ICAgIHVuc2lnbmVkIGxvbmcgICpQcmlvcml0eSwNCiAgICAgIFJQQ19DU1RSICAqQW5ub3RhdGlv
bg0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNh
bGwNClJwY05zUHJvZmlsZURlbGV0ZVcoDQogICAgICB1bnNpZ25lZCBsb25nIFByb2ZpbGVOYW1l
U3ludGF4LA0KICAgICAgUlBDX1dTVFIgUHJvZmlsZU5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zUHJvZmlsZUVsdEFkZFcoDQog
ICAgICB1bnNpZ25lZCBsb25nIFByb2ZpbGVOYW1lU3ludGF4LA0KICAgICAgUlBDX1dTVFIgUHJv
ZmlsZU5hbWUsDQogICAgICBSUENfSUZfSUQgICpJZklkLA0KICAgICAgdW5zaWduZWQgbG9uZyBN
ZW1iZXJOYW1lU3ludGF4LA0KICAgICAgUlBDX1dTVFIgTWVtYmVyTmFtZSwNCiAgICAgIHVuc2ln
bmVkIGxvbmcgUHJpb3JpdHksDQogICAgICBSUENfV1NUUiBBbm5vdGF0aW9uDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc1Byb2ZpbGVF
bHRSZW1vdmVXKA0KICAgICAgdW5zaWduZWQgbG9uZyBQcm9maWxlTmFtZVN5bnRheCwNCiAgICAg
IFJQQ19XU1RSIFByb2ZpbGVOYW1lLA0KICAgICAgUlBDX0lGX0lEICAqSWZJZCwNCiAgICAgIHVu
c2lnbmVkIGxvbmcgTWVtYmVyTmFtZVN5bnRheCwNCiAgICAgIFJQQ19XU1RSIE1lbWJlck5hbWUN
CiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJw
Y05zUHJvZmlsZUVsdElucUJlZ2luVygNCiAgICAgIHVuc2lnbmVkIGxvbmcgUHJvZmlsZU5hbWVT
eW50YXgsDQogICAgICBSUENfV1NUUiBQcm9maWxlTmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcg
SW5xdWlyeVR5cGUsDQogICAgICBSUENfSUZfSUQgICpJZklkLA0KICAgICAgdW5zaWduZWQgbG9u
ZyBWZXJzT3B0aW9uLA0KICAgICAgdW5zaWduZWQgbG9uZyBNZW1iZXJOYW1lU3ludGF4LA0KICAg
ICAgUlBDX1dTVFIgTWVtYmVyTmFtZSwNCiAgICAgIFJQQ19OU19IQU5ETEUgICpJbnF1aXJ5Q29u
dGV4dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2Fs
bA0KUnBjTnNQcm9maWxlRWx0SW5xTmV4dFcoDQogICAgICBSUENfTlNfSEFORExFIElucXVpcnlD
b250ZXh0LA0KICAgICAgUlBDX0lGX0lEICAqSWZJZCwNCiAgICAgIFJQQ19XU1RSICAqTWVtYmVy
TmFtZSwNCiAgICAgIHVuc2lnbmVkIGxvbmcgICpQcmlvcml0eSwNCiAgICAgIFJQQ19XU1RSICAq
QW5ub3RhdGlvbg0KICAgICk7DQoNCiNsaW5lIDMzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJwY25zaS5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zUHJvZmls
ZUVsdElucURvbmUoDQogICAgICBSUENfTlNfSEFORExFICAqIElucXVpcnlDb250ZXh0DQogICAg
KTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBj
TnNFbnRyeU9iamVjdElucUJlZ2luQSgNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3lu
dGF4LA0KICAgICAgUlBDX0NTVFIgRW50cnlOYW1lLA0KICAgICAgUlBDX05TX0hBTkRMRSAgKklu
cXVpcnlDb250ZXh0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RB
VFVTIF9fc3RkY2FsbA0KUnBjTnNFbnRyeU9iamVjdElucUJlZ2luVygNCiAgICAgIHVuc2lnbmVk
IGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAgUlBDX1dTVFIgRW50cnlOYW1lLA0KICAgICAg
UlBDX05TX0hBTkRMRSAgKklucXVpcnlDb250ZXh0DQogICAgKTsNCg0KI2xpbmUgMzY0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxccnBjbnNpLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9f
c3RkY2FsbA0KUnBjTnNFbnRyeU9iamVjdElucU5leHQoDQogICAgICBSUENfTlNfSEFORExFIElu
cXVpcnlDb250ZXh0LA0KICAgICBVVUlEICAqIE9ialV1aWQNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zRW50cnlPYmplY3RJbnFEb25l
KA0KICAgICAgUlBDX05TX0hBTkRMRSAgKiBJbnF1aXJ5Q29udGV4dA0KICAgICk7DQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zRW50cnlFeHBh
bmROYW1lQSgNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAgUlBD
X0NTVFIgRW50cnlOYW1lLA0KICAgICAgUlBDX0NTVFIgICpFeHBhbmRlZE5hbWUNCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zTWdtdEJp
bmRpbmdVbmV4cG9ydEEoDQogICAgICB1bnNpZ25lZCBsb25nIEVudHJ5TmFtZVN5bnRheCwNCiAg
ICAgIFJQQ19DU1RSIEVudHJ5TmFtZSwNCiAgICAgIFJQQ19JRl9JRCAgKklmSWQsDQogICAgICB1
bnNpZ25lZCBsb25nIFZlcnNPcHRpb24sDQogICAgICBVVUlEX1ZFQ1RPUiAgKk9iamVjdFV1aWRW
ZWMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwN
ClJwY05zTWdtdEVudHJ5Q3JlYXRlQSgNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3lu
dGF4LA0KICAgICAgUlBDX0NTVFIgRW50cnlOYW1lDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc01nbXRFbnRyeURlbGV0ZUEoDQogICAg
ICB1bnNpZ25lZCBsb25nIEVudHJ5TmFtZVN5bnRheCwNCiAgICAgIFJQQ19DU1RSIEVudHJ5TmFt
ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0K
UnBjTnNNZ210RW50cnlJbnFJZklkc0EoDQogICAgICB1bnNpZ25lZCBsb25nIEVudHJ5TmFtZVN5
bnRheCwNCiAgICAgIFJQQ19DU1RSIEVudHJ5TmFtZSwNCiAgICAgIFJQQ19JRl9JRF9WRUNUT1Ig
ICogICpJZklkVmVjDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFJQQ19TVEFUVVMg
X19zdGRjYWxsDQpScGNOc01nbXRIYW5kbGVTZXRFeHBBZ2UoDQogICAgIFJQQ19OU19IQU5ETEUg
TnNIYW5kbGUsDQogICAgIHVuc2lnbmVkIGxvbmcgRXhwaXJhdGlvbkFnZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNNZ210SW5xRXhw
QWdlKA0KICAgICB1bnNpZ25lZCBsb25nICAqIEV4cGlyYXRpb25BZ2UNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zTWdtdFNldEV4cEFn
ZSgNCiAgICAgdW5zaWduZWQgbG9uZyBFeHBpcmF0aW9uQWdlDQogICAgKTsNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNFbnRyeUV4cGFuZE5h
bWVXKA0KICAgICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQogICAgICBSUENfV1NU
UiBFbnRyeU5hbWUsDQogICAgICBSUENfV1NUUiAgKkV4cGFuZGVkTmFtZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNNZ210QmluZGlu
Z1VuZXhwb3J0VygNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAg
UlBDX1dTVFIgRW50cnlOYW1lLA0KICAgICAgUlBDX0lGX0lEICAqSWZJZCwNCiAgICAgIHVuc2ln
bmVkIGxvbmcgVmVyc09wdGlvbiwNCiAgICAgIFVVSURfVkVDVE9SICAqT2JqZWN0VXVpZFZlYw0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBj
TnNNZ210RW50cnlDcmVhdGVXKA0KICAgICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgs
DQogICAgICBSUENfV1NUUiBFbnRyeU5hbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zTWdtdEVudHJ5RGVsZXRlVygNCiAgICAgIHVu
c2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4LA0KICAgICAgUlBDX1dTVFIgRW50cnlOYW1lDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNO
c01nbXRFbnRyeUlucUlmSWRzVygNCiAgICAgIHVuc2lnbmVkIGxvbmcgRW50cnlOYW1lU3ludGF4
LA0KICAgICAgUlBDX1dTVFIgRW50cnlOYW1lLA0KICAgICAgUlBDX0lGX0lEX1ZFQ1RPUiAgKiAg
KklmSWRWZWMNCiAgICApOw0KDQojbGluZSA0NjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxycGNuc2kuaCINCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSUENfU1RBVFVTIF9fc3RkY2FsbA0KUnBjTnNCaW5k
aW5nSW1wb3J0QmVnaW5BKA0KICAgICAgdW5zaWduZWQgbG9uZyBFbnRyeU5hbWVTeW50YXgsDQog
ICAgICBSUENfQ1NUUiBFbnRyeU5hbWUsDQogICAgICBSUENfSUZfSEFORExFIElmU3BlYywNCiAg
ICAgIFVVSUQgICpPYmpVdWlkLA0KICAgICAgUlBDX05TX0hBTkRMRSAgKkltcG9ydENvbnRleHQN
CiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxs
DQpScGNOc0JpbmRpbmdJbXBvcnRCZWdpblcoDQogICAgICB1bnNpZ25lZCBsb25nIEVudHJ5TmFt
ZVN5bnRheCwNCiAgICAgIFJQQ19XU1RSIEVudHJ5TmFtZSwNCiAgICAgIFJQQ19JRl9IQU5ETEUg
SWZTcGVjLA0KICAgICAgVVVJRCAgKk9ialV1aWQsDQogICAgICBSUENfTlNfSEFORExFICAqSW1w
b3J0Q29udGV4dA0KICAgICk7DQoNCiNsaW5lIDQ5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJwY25zaS5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUlBDX1NUQVRVUyBfX3N0ZGNhbGwNClJwY05zQmluZGlu
Z0ltcG9ydE5leHQoDQogICAgIFJQQ19OU19IQU5ETEUgSW1wb3J0Q29udGV4dCwNCiAgICAgUlBD
X0JJTkRJTkdfSEFORExFICAgKiBCaW5kaW5nDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc0JpbmRpbmdJbXBvcnREb25lKA0KICAgICAg
UlBDX05TX0hBTkRMRSAgKiBJbXBvcnRDb250ZXh0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIFJQQ19TVEFUVVMgX19zdGRjYWxsDQpScGNOc0JpbmRpbmdTZWxlY3QoDQogICAgICBS
UENfQklORElOR19WRUNUT1IgICogQmluZGluZ1ZlYywNCiAgICAgUlBDX0JJTkRJTkdfSEFORExF
ICAgKiBCaW5kaW5nDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA1NTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxycGNuc2kuaCINCg0KI2xpbmUgNTYxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxccnBjbnNpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSA1NjQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxycGNuc2kuaCINCiNsaW5lIDE1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCIN
CiNsaW5lIDE2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjbnRlcnIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCiNsaW5lIDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY250ZXJyLmgiDQoNCg0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NjY4KSAN
CiNsaW5lIDI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY250ZXJyLmgiDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNudGVyci5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NTIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjbnRlcnIuaCINCg0KI2xpbmUgNTU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY250ZXJyLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSA1NTkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccnBjbnRlcnIuaCINCg0KI2xpbmUgNTYxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHJwY250ZXJyLmgiDQojbGluZSAxNjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjLmgiDQoNCg0K
DQojbGluZSAxNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFw
cGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyMDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGlu
ZSAyMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMjQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjYXN5bmMuaCINCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4Lmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHB1c2gsOCkNCg0KDQojbGluZSAz
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHBzaHBhY2s4LmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5o
Ig0KI2xpbmUgMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCiNsaW5lIDI4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAzMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxycGNhc3luYy5oIg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBG
YW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxccnBjYXN5bmMuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjYXN5bmMuaCINCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMu
aCINCg0KDQoNCnR5cGVkZWYNCmVudW0gX1JQQ19OT1RJRklDQVRJT05fVFlQRVMNCnsNCiAgICBS
cGNOb3RpZmljYXRpb25UeXBlTm9uZSwNCiAgICBScGNOb3RpZmljYXRpb25UeXBlRXZlbnQsDQoN
CiAgICBScGNOb3RpZmljYXRpb25UeXBlQXBjLA0KICAgIFJwY05vdGlmaWNhdGlvblR5cGVJb2Ms
DQogICAgUnBjTm90aWZpY2F0aW9uVHlwZUh3bmQsDQojbGluZSA2OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxycGNhc3luYy5oIg0KICAgIFJwY05vdGlmaWNhdGlvblR5cGVDYWxsYmFjaw0KfSBSUENfTk9U
SUZJQ0FUSU9OX1RZUEVTOw0KDQoNCnR5cGVkZWYNCmVudW0gX1JQQ19BU1lOQ19FVkVOVCB7DQog
ICAgUnBjQ2FsbENvbXBsZXRlLA0KICAgIFJwY1NlbmRDb21wbGV0ZSwNCiAgICBScGNSZWNlaXZl
Q29tcGxldGUsDQogICAgUnBjQ2xpZW50RGlzY29ubmVjdCwNCiAgICBScGNDbGllbnRDYW5jZWwN
CiAgICB9IFJQQ19BU1lOQ19FVkVOVDsNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQoNCnN0cnVjdCBfUlBDX0FTWU5DX1NUQVRF
Ow0KDQp0eXBlZGVmIHZvaWQgX19zdGRjYWxsDQpSUENOT1RJRklDQVRJT05fUk9VVElORSAoDQog
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1JQQ19BU1lOQ19TVEFURSAqcEFzeW5jLA0KICAgICAg
ICAgICAgICAgICAgdm9pZCAqQ29udGV4dCwNCiAgICAgICAgICAgICAgICAgIFJQQ19BU1lOQ19F
VkVOVCBFdmVudCk7DQp0eXBlZGVmIFJQQ05PVElGSUNBVElPTl9ST1VUSU5FICpQRk5fUlBDTk9U
SUZJQ0FUSU9OX1JPVVRJTkU7DQoNCnR5cGVkZWYgdW5pb24gX1JQQ19BU1lOQ19OT1RJRklDQVRJ
T05fSU5GTyB7DQoNCiAgICANCiAgICANCiAgICANCiAgICBzdHJ1Y3Qgew0KICAgICAgICBQRk5f
UlBDTk9USUZJQ0FUSU9OX1JPVVRJTkUgTm90aWZpY2F0aW9uUm91dGluZTsNCiAgICAgICAgSEFO
RExFIGhUaHJlYWQ7DQogICAgICAgIH0gQVBDOw0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQog
ICAgc3RydWN0IHsNCiAgICAgICAgSEFORExFIGhJT1BvcnQ7DQogICAgICAgIERXT1JEIGR3TnVt
YmVyT2ZCeXRlc1RyYW5zZmVycmVkOw0KICAgICAgICBEV09SRF9QVFIgZHdDb21wbGV0aW9uS2V5
Ow0KICAgICAgICBMUE9WRVJMQVBQRUQgbHBPdmVybGFwcGVkOw0KICAgICAgICB9IElPQzsNCg0K
I2xpbmUgMTI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQoNCiAgICANCiAgICANCiAg
ICANCiAgICBzdHJ1Y3Qgew0KICAgICAgICBIV05EIGhXbmQ7DQogICAgICAgIFVJTlQgTXNnOw0K
ICAgICAgICB9IEhXTkQ7DQoNCiNsaW5lIDEzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNhc3luYy5o
Ig0KI2xpbmUgMTM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQoNCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIEhBTkRMRSBoRXZlbnQ7DQogICAgDQoNCg0KDQoNCiNsaW5lIDE0
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxycGNhc3luYy5oIg0KDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgUEZOX1JQQ05PVElGSUNBVElPTl9ST1VUSU5FIE5vdGlmaWNhdGlvblJvdXRp
bmU7DQp9IFJQQ19BU1lOQ19OT1RJRklDQVRJT05fSU5GTywgKlBSUENfQVNZTkNfTk9USUZJQ0FU
SU9OX0lORk87DQoNCnR5cGVkZWYgc3RydWN0IF9SUENfQVNZTkNfU1RBVEUgew0KICAgIHVuc2ln
bmVkIGludCAgICBTaXplOyANCiAgICB1bnNpZ25lZCBsb25nICAgU2lnbmF0dXJlOw0KICAgIGxv
bmcgICBMb2NrOw0KICAgIHVuc2lnbmVkIGxvbmcgICBGbGFnczsNCiAgICB2b2lkICAgICAgICAg
ICAqU3R1YkluZm87DQogICAgdm9pZCAgICAgICAgICAgKlVzZXJJbmZvOw0KICAgIHZvaWQgICAg
ICAgICAgICpSdW50aW1lSW5mbzsNCiAgICBSUENfQVNZTkNfRVZFTlQgRXZlbnQ7DQoNCiAgICBS
UENfTk9USUZJQ0FUSU9OX1RZUEVTIE5vdGlmaWNhdGlvblR5cGU7DQogICAgUlBDX0FTWU5DX05P
VElGSUNBVElPTl9JTkZPIHU7DQoNCiAgICBMT05HX1BUUiBSZXNlcnZlZFs0XTsNCiAgICB9IFJQ
Q19BU1lOQ19TVEFURSwgKlBSUENfQVNZTkNfU1RBVEU7DQoNCg0KDQoNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0FzeW5jUmVnaXN0
ZXJJbmZvICgNCiAgICAgIFBSUENfQVNZTkNfU1RBVEUgcEFzeW5jDQogICAgKSA7DQojbGluZSAx
ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0FzeW5jSW5pdGlhbGl6ZUhhbmRsZSAoDQog
ICAgICBQUlBDX0FTWU5DX1NUQVRFIHBBc3luYywNCiAgICAgIHVuc2lnbmVkIGludCAgICAgU2l6
ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRj
YWxsDQpScGNBc3luY0dldENhbGxTdGF0dXMgKA0KICAgICAgUFJQQ19BU1lOQ19TVEFURSBwQXN5
bmMNCiAgICApIDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQpSUENfU1RBVFVTDQpfX3N0
ZGNhbGwNClJwY0FzeW5jQ29tcGxldGVDYWxsICgNCiAgICAgIFBSUENfQVNZTkNfU1RBVEUgcEFz
eW5jLA0KICAgICAgdm9pZCAqUmVwbHkNCiAgICApIDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQogDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY0FzeW5jQWJvcnRDYWxsICgNCiAgICAgIFBS
UENfQVNZTkNfU1RBVEUgcEFzeW5jLA0KICAgICAgdW5zaWduZWQgbG9uZyBFeGNlcHRpb25Db2Rl
DQogICAgKSA7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KIA0KUlBDX1NUQVRVUw0KX19zdGRj
YWxsDQpScGNBc3luY0NhbmNlbENhbGwgKA0KICAgICAgUFJQQ19BU1lOQ19TVEFURSBwQXN5bmMs
DQogICAgICBCT09MIGZBYm9ydA0KICAgICkgOw0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIHRh
Z0V4dGVuZGVkRXJyb3JQYXJhbVR5cGVzDQp7DQogICAgZWVwdEFuc2lTdHJpbmcgPSAxLA0KICAg
IGVlcHRVbmljb2RlU3RyaW5nLA0KICAgIGVlcHRMb25nVmFsLA0KICAgIGVlcHRTaG9ydFZhbCwN
CiAgICBlZXB0UG9pbnRlclZhbCwNCiAgICBlZXB0Tm9uZSwNCiAgICBlZXB0QmluYXJ5DQp9IEV4
dGVuZGVkRXJyb3JQYXJhbVR5cGVzOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdCaW5hcnlQ
YXJhbQ0Kew0KICAgIHZvaWQgKkJ1ZmZlcjsNCiAgICBzaG9ydCBTaXplOw0KfSBCaW5hcnlQYXJh
bTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnUlBDX0VFX0lORk9fUEFSQU0NCnsNCiAgICBFeHRlbmRl
ZEVycm9yUGFyYW1UeXBlcyBQYXJhbWV0ZXJUeXBlOw0KICAgIHVuaW9uDQogICAgICAgIHsNCiAg
ICAgICAgTFBTVFIgQW5zaVN0cmluZzsNCiAgICAgICAgTFBXU1RSIFVuaWNvZGVTdHJpbmc7DQog
ICAgICAgIGxvbmcgTFZhbDsNCiAgICAgICAgc2hvcnQgU1ZhbDsNCiAgICAgICAgVUxPTkdMT05H
IFBWYWw7DQogICAgICAgIEJpbmFyeVBhcmFtIEJWYWw7DQogICAgICAgIH0gdTsNCn0gUlBDX0VF
X0lORk9fUEFSQU07DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjgxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwY2FzeW5jLmgiDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1JQQ19FWFRFTkRFRF9FUlJPUl9JTkZP
DQp7DQogICAgVUxPTkcgVmVyc2lvbjsNCiAgICBMUFdTVFIgQ29tcHV0ZXJOYW1lOw0KICAgIFVM
T05HIFByb2Nlc3NJRDsNCiAgICB1bmlvbg0KICAgICAgICB7DQoNCiAgICAgICAgU1lTVEVNVElN
RSBTeXN0ZW1UaW1lOw0KICAgICAgICBGSUxFVElNRSBGaWxlVGltZTsNCg0KDQojbGluZSAyOTUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCiAgICAgICAgfSB1Ow0KICAgIFVMT05HIEdl
bmVyYXRpbmdDb21wb25lbnQ7DQogICAgVUxPTkcgU3RhdHVzOw0KICAgIFVTSE9SVCBEZXRlY3Rp
b25Mb2NhdGlvbjsNCiAgICBVU0hPUlQgRmxhZ3M7DQogICAgaW50IE51bWJlck9mUGFyYW1ldGVy
czsNCiAgICBSUENfRUVfSU5GT19QQVJBTSBQYXJhbWV0ZXJzWzRdOw0KfSBSUENfRVhURU5ERURf
RVJST1JfSU5GTzsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnUlBDX0VSUk9SX0VOVU1fSEFORExFDQp7
DQogICAgVUxPTkcgU2lnbmF0dXJlOw0KICAgIHZvaWQgKkN1cnJlbnRQb3M7DQogICAgdm9pZCAq
SGVhZDsNCn0gUlBDX0VSUk9SX0VOVU1fSEFORExFOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
ClJQQ19TVEFUVVMgDQpfX3N0ZGNhbGwNClJwY0Vycm9yU3RhcnRFbnVtZXJhdGlvbiAoDQogICAg
ICBSUENfRVJST1JfRU5VTV9IQU5ETEUgKkVudW1IYW5kbGUNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNClJQQ19TVEFUVVMgDQpfX3N0ZGNhbGwNClJwY0Vycm9yR2V0TmV4dFJlY29y
ZCAoDQogICAgICBSUENfRVJST1JfRU5VTV9IQU5ETEUgKkVudW1IYW5kbGUsIA0KICAgICAgQk9P
TCBDb3B5U3RyaW5ncywgDQogICAgICBSUENfRVhURU5ERURfRVJST1JfSU5GTyAqRXJyb3JJbmZv
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTIA0KX19zdGRjYWxs
DQpScGNFcnJvckVuZEVudW1lcmF0aW9uICgNCiAgICAgIFJQQ19FUlJPUl9FTlVNX0hBTkRMRSAq
RW51bUhhbmRsZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUyAN
Cl9fc3RkY2FsbA0KUnBjRXJyb3JSZXNldEVudW1lcmF0aW9uICgNCiAgICAgIFJQQ19FUlJPUl9F
TlVNX0hBTkRMRSAqRW51bUhhbmRsZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
UlBDX1NUQVRVUyANCl9fc3RkY2FsbA0KUnBjRXJyb3JHZXROdW1iZXJPZlJlY29yZHMgKA0KICAg
ICAgUlBDX0VSUk9SX0VOVU1fSEFORExFICpFbnVtSGFuZGxlLCANCiAgICAgIGludCAqUmVjb3Jk
cw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUyANCl9fc3RkY2Fs
bA0KUnBjRXJyb3JTYXZlRXJyb3JJbmZvICgNCiAgICAgIFJQQ19FUlJPUl9FTlVNX0hBTkRMRSAq
RW51bUhhbmRsZSwgDQogICAgIFBWT0lEICpFcnJvckJsb2IsIA0KICAgICAgc2l6ZV90ICpCbG9i
U2l6ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUyANCl9fc3Rk
Y2FsbA0KUnBjRXJyb3JMb2FkRXJyb3JJbmZvICgNCiAgICAgIFBWT0lEIEVycm9yQmxvYiwgDQog
ICAgICBzaXplX3QgQmxvYlNpemUsIA0KICAgICAgUlBDX0VSUk9SX0VOVU1fSEFORExFICpFbnVt
SGFuZGxlDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTIA0KX19z
dGRjYWxsDQpScGNFcnJvckFkZFJlY29yZCAoDQogICAgICBSUENfRVhURU5ERURfRVJST1JfSU5G
TyAqRXJyb3JJbmZvDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIA0KX19z
dGRjYWxsDQpScGNFcnJvckNsZWFySW5mb3JtYXRpb24gKA0KICAgIHZvaWQNCiAgICApOw0KDQoj
bGluZSAzODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0K
I2xpbmUgMzg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjQXN5bmNDbGVhbnVwVGhyZWFk
ICgNCiAgICAgIERXT1JEIGR3VGltZW91dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNHZXRBdXRob3JpemF0aW9uQ29udGV4dEZvckNs
aWVudCAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQ2xpZW50QmluZGluZywNCiAgICAgIEJP
T0wgSW1wZXJzb25hdGVPblJldHVybiwNCiAgICAgIFBWT0lEIFJlc2VydmVkMSwNCiAgICAgIFBM
QVJHRV9JTlRFR0VSIHBFeHBpcmF0aW9uVGltZSwNCiAgICAgIExVSUQgUmVzZXJ2ZWQyLA0KICAg
ICAgRFdPUkQgUmVzZXJ2ZWQzLA0KICAgICAgUFZPSUQgUmVzZXJ2ZWQ0LA0KICAgICAgUFZPSUQg
KnBBdXRoekNsaWVudENvbnRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQ
Q19TVEFUVVMgDQpfX3N0ZGNhbGwNClJwY0ZyZWVBdXRob3JpemF0aW9uQ29udGV4dCAoDQogICAg
ICBQVk9JRCAqcEF1dGh6Q2xpZW50Q29udGV4dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpScGNTc0NvbnRleHRMb2NrRXhjbHVzaXZlICgN
CiAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSBTZXJ2ZXJCaW5kaW5nSGFuZGxlLA0KICAgICAgUFZP
SUQgVXNlckNvbnRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFU
VVMNCl9fc3RkY2FsbA0KUnBjU3NDb250ZXh0TG9ja1NoYXJlZCAoDQogICAgICBSUENfQklORElO
R19IQU5ETEUgU2VydmVyQmluZGluZ0hhbmRsZSwNCiAgICAgIFBWT0lEIFVzZXJDb250ZXh0DQog
ICAgKTsNCg0KDQp0eXBlZGVmIGVudW0gdGFnUnBjTG9jYWxBZGRyZXNzRm9ybWF0DQp7DQogICAg
cmxhZkludmFsaWQgPSAwLA0KICAgIHJsYWZJUHY0LA0KICAgIHJsYWZJUHY2DQp9IFJwY0xvY2Fs
QWRkcmVzc0Zvcm1hdDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1JQQ19DQUxMX0xPQ0FMX0FERFJFU1Nf
VjENCnsNCiAgICB1bnNpZ25lZCBpbnQgVmVyc2lvbjsNCiAgICB2b2lkICpCdWZmZXI7DQogICAg
dW5zaWduZWQgbG9uZyBCdWZmZXJTaXplOw0KICAgIFJwY0xvY2FsQWRkcmVzc0Zvcm1hdCBBZGRy
ZXNzRm9ybWF0Ow0KfSBSUENfQ0FMTF9MT0NBTF9BRERSRVNTX1YxLCAqUFJQQ19DQUxMX0xPQ0FM
X0FERFJFU1NfVjE7DQoNCg0KDQojbGluZSA0NTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMu
aCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgi
DQoNCg0KDQoNCiNsaW5lIDQ2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNhc3luYy5oIg0KDQoNCg0K
DQoNCiNsaW5lIDQ3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNhc3luYy5oIg0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdSUENfQ0FMTF9BVFRSSUJVVEVTX1YxX1cNCnsNCiAgICB1bnNpZ25lZCBpbnQgVmVy
c2lvbjsNCiAgICB1bnNpZ25lZCBsb25nIEZsYWdzOw0KICAgIHVuc2lnbmVkIGxvbmcgU2VydmVy
UHJpbmNpcGFsTmFtZUJ1ZmZlckxlbmd0aDsNCiAgICB1bnNpZ25lZCBzaG9ydCAqU2VydmVyUHJp
bmNpcGFsTmFtZTsNCiAgICB1bnNpZ25lZCBsb25nIENsaWVudFByaW5jaXBhbE5hbWVCdWZmZXJM
ZW5ndGg7DQogICAgdW5zaWduZWQgc2hvcnQgKkNsaWVudFByaW5jaXBhbE5hbWU7DQogICAgdW5z
aWduZWQgbG9uZyBBdXRoZW50aWNhdGlvbkxldmVsOw0KICAgIHVuc2lnbmVkIGxvbmcgQXV0aGVu
dGljYXRpb25TZXJ2aWNlOw0KICAgIEJPT0wgTnVsbFNlc3Npb247DQp9IFJQQ19DQUxMX0FUVFJJ
QlVURVNfVjFfVzsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnUlBDX0NBTExfQVRUUklCVVRFU19WMV9B
DQp7DQogICAgdW5zaWduZWQgaW50IFZlcnNpb247DQogICAgdW5zaWduZWQgbG9uZyBGbGFnczsN
CiAgICB1bnNpZ25lZCBsb25nIFNlcnZlclByaW5jaXBhbE5hbWVCdWZmZXJMZW5ndGg7DQogICAg
dW5zaWduZWQgY2hhciAqU2VydmVyUHJpbmNpcGFsTmFtZTsNCiAgICB1bnNpZ25lZCBsb25nIENs
aWVudFByaW5jaXBhbE5hbWVCdWZmZXJMZW5ndGg7DQogICAgdW5zaWduZWQgY2hhciAqQ2xpZW50
UHJpbmNpcGFsTmFtZTsNCiAgICB1bnNpZ25lZCBsb25nIEF1dGhlbnRpY2F0aW9uTGV2ZWw7DQog
ICAgdW5zaWduZWQgbG9uZyBBdXRoZW50aWNhdGlvblNlcnZpY2U7DQogICAgQk9PTCBOdWxsU2Vz
c2lvbjsNCn0gUlBDX0NBTExfQVRUUklCVVRFU19WMV9BOw0KDQoNCg0KDQoNCg0KdHlwZWRlZiBl
bnVtIHRhZ1JwY0NhbGxUeXBlDQp7DQogICAgcmN0SW52YWxpZCA9IDAsDQogICAgcmN0Tm9ybWFs
LA0KICAgIHJjdFRyYWluaW5nLA0KICAgIHJjdEd1YXJhbnRlZWQNCn0gUnBjQ2FsbFR5cGU7DQoN
CnR5cGVkZWYgZW51bSB0YWdScGNDYWxsQ2xpZW50TG9jYWxpdHkNCnsNCiAgICByY2NsSW52YWxp
ZCA9IDAsDQogICAgcmNjbExvY2FsLA0KICAgIHJjY2xSZW1vdGUsDQogICAgcmNjbENsaWVudFVu
a25vd25Mb2NhbGl0eQ0KfSBScGNDYWxsQ2xpZW50TG9jYWxpdHk7DQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgdGFnUlBDX0NBTExfQVRUUklCVVRFU19WMl9XDQp7DQogICAgdW5zaWduZWQgaW50IFZlcnNp
b247DQogICAgdW5zaWduZWQgbG9uZyBGbGFnczsNCiAgICB1bnNpZ25lZCBsb25nIFNlcnZlclBy
aW5jaXBhbE5hbWVCdWZmZXJMZW5ndGg7DQogICAgdW5zaWduZWQgc2hvcnQgKlNlcnZlclByaW5j
aXBhbE5hbWU7DQogICAgdW5zaWduZWQgbG9uZyBDbGllbnRQcmluY2lwYWxOYW1lQnVmZmVyTGVu
Z3RoOw0KICAgIHVuc2lnbmVkIHNob3J0ICpDbGllbnRQcmluY2lwYWxOYW1lOw0KICAgIHVuc2ln
bmVkIGxvbmcgQXV0aGVudGljYXRpb25MZXZlbDsNCiAgICB1bnNpZ25lZCBsb25nIEF1dGhlbnRp
Y2F0aW9uU2VydmljZTsNCiAgICBCT09MIE51bGxTZXNzaW9uOw0KICAgIEJPT0wgS2VybmVsTW9k
ZUNhbGxlcjsNCiAgICB1bnNpZ25lZCBsb25nIFByb3RvY29sU2VxdWVuY2U7DQogICAgUnBjQ2Fs
bENsaWVudExvY2FsaXR5IElzQ2xpZW50TG9jYWw7DQogICAgSEFORExFIENsaWVudFBJRDsgDQog
ICAgdW5zaWduZWQgbG9uZyBDYWxsU3RhdHVzOw0KICAgIFJwY0NhbGxUeXBlIENhbGxUeXBlOw0K
ICAgIFJQQ19DQUxMX0xPQ0FMX0FERFJFU1NfVjEgKkNhbGxMb2NhbEFkZHJlc3M7CQ0KICAgIHVu
c2lnbmVkIHNob3J0IE9wTnVtOw0KICAgIFVVSUQgSW50ZXJmYWNlVXVpZDsgICAgICAgIA0KfSBS
UENfQ0FMTF9BVFRSSUJVVEVTX1YyX1c7DQogICAgDQp0eXBlZGVmIHN0cnVjdCB0YWdSUENfQ0FM
TF9BVFRSSUJVVEVTX1YyX0ENCnsNCiAgICB1bnNpZ25lZCBpbnQgVmVyc2lvbjsNCiAgICB1bnNp
Z25lZCBsb25nIEZsYWdzOw0KICAgIHVuc2lnbmVkIGxvbmcgU2VydmVyUHJpbmNpcGFsTmFtZUJ1
ZmZlckxlbmd0aDsNCiAgICB1bnNpZ25lZCBjaGFyICpTZXJ2ZXJQcmluY2lwYWxOYW1lOw0KICAg
IHVuc2lnbmVkIGxvbmcgQ2xpZW50UHJpbmNpcGFsTmFtZUJ1ZmZlckxlbmd0aDsNCiAgICB1bnNp
Z25lZCBjaGFyICpDbGllbnRQcmluY2lwYWxOYW1lOw0KICAgIHVuc2lnbmVkIGxvbmcgQXV0aGVu
dGljYXRpb25MZXZlbDsNCiAgICB1bnNpZ25lZCBsb25nIEF1dGhlbnRpY2F0aW9uU2VydmljZTsN
CiAgICBCT09MIE51bGxTZXNzaW9uOw0KICAgIEJPT0wgS2VybmVsTW9kZUNhbGxlcjsNCiAgICB1
bnNpZ25lZCBsb25nIFByb3RvY29sU2VxdWVuY2U7DQogICAgdW5zaWduZWQgbG9uZyBJc0NsaWVu
dExvY2FsOw0KICAgIEhBTkRMRSBDbGllbnRQSUQ7IA0KICAgIHVuc2lnbmVkIGxvbmcgQ2FsbFN0
YXR1czsNCiAgICBScGNDYWxsVHlwZSBDYWxsVHlwZTsNCiAgICBSUENfQ0FMTF9MT0NBTF9BRERS
RVNTX1YxICpDYWxsTG9jYWxBZGRyZXNzOwkNCiAgICB1bnNpZ25lZCBzaG9ydCBPcE51bTsNCiAg
ICBVVUlEIEludGVyZmFjZVV1aWQ7ICAgIA0KfSBSUENfQ0FMTF9BVFRSSUJVVEVTX1YyX0E7DQoj
bGluZSA1NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBj
YXN5bmMuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwN
ClJwY1NlcnZlcklucUNhbGxBdHRyaWJ1dGVzVyAoDQogICAgICBSUENfQklORElOR19IQU5ETEUg
Q2xpZW50QmluZGluZywNCiAgICAgIHZvaWQgKlJwY0NhbGxBdHRyaWJ1dGVzDQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1NlcnZlcklu
cUNhbGxBdHRyaWJ1dGVzQSAoDQogICAgICBSUENfQklORElOR19IQU5ETEUgQ2xpZW50QmluZGlu
ZywNCiAgICAgIHZvaWQgKlJwY0NhbGxBdHRyaWJ1dGVzDQogICAgKTsNCg0KDQoNCg0KDQojbGlu
ZSA2MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCg0KDQojbGluZSA2NDIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjUzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQoNCg0KDQojbGluZSA2NTcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjYXN5bmMuaCINCnR5cGVkZWYgUlBDX0NBTExfQVRUUklCVVRFU19WMl9XIFJQQ19D
QUxMX0FUVFJJQlVURVM7DQoNCg0KI2xpbmUgNjYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5j
LmgiDQoNCg0KDQp0eXBlZGVmIGVudW0gX1JQQ19OT1RJRklDQVRJT05TDQp7DQogICAgUnBjTm90
aWZpY2F0aW9uQ2FsbE5vbmUgPSAwLA0KICAgIFJwY05vdGlmaWNhdGlvbkNsaWVudERpc2Nvbm5l
Y3QgPSAxLA0KICAgIFJwY05vdGlmaWNhdGlvbkNhbGxDYW5jZWwgPSAyICAgICAgDQp9IFJQQ19O
T1RJRklDQVRJT05TOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTIA0K
X19zdGRjYWxsIA0KUnBjU2VydmVyU3Vic2NyaWJlRm9yTm90aWZpY2F0aW9uICgNCiAgICAgIFJQ
Q19CSU5ESU5HX0hBTkRMRSBCaW5kaW5nLA0KICAgICAgUlBDX05PVElGSUNBVElPTlMgTm90aWZp
Y2F0aW9uLA0KICAgICAgUlBDX05PVElGSUNBVElPTl9UWVBFUyBOb3RpZmljYXRpb25UeXBlLA0K
ICAgICAgUlBDX0FTWU5DX05PVElGSUNBVElPTl9JTkZPICpOb3RpZmljYXRpb25JbmZvDQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTIA0KX19zdGRjYWxsIA0KUnBj
U2VydmVyVW5zdWJzY3JpYmVGb3JOb3RpZmljYXRpb24gKA0KICAgICAgUlBDX0JJTkRJTkdfSEFO
RExFIEJpbmRpbmcsDQogICAgICBSUENfTk9USUZJQ0FUSU9OUyBOb3RpZmljYXRpb24sDQogICAg
ICB1bnNpZ25lZCBsb25nICpOb3RpZmljYXRpb25zUXVldWVkDQogICAgKTsNCg0KI2xpbmUgNjkz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQojbGluZSA2OTQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjYXN5bmMuaCINCiANCg0KDQojbGluZSA2OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5
bmMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZh
bWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NU
QVRVUyANCl9fc3RkY2FsbCANClJwY0JpbmRpbmdCaW5kICgNCiAgICAgIFBSUENfQVNZTkNfU1RB
VEUgcEFzeW5jLA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAgICBSUENf
SUZfSEFORExFIElmU3BlYyAgICANCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQ
Q19TVEFUVVMgDQpfX3N0ZGNhbGwgDQpScGNCaW5kaW5nVW5iaW5kICgNCiAgICAgIFJQQ19CSU5E
SU5HX0hBTkRMRSBCaW5kaW5nDQogICAgKTsNCg0KI2xpbmUgNzIwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwY2FzeW5jLmgiDQoNCg0KI2xpbmUgNzIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseQ0KDQoNCiNsaW5lIDcyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNhc3luYy5o
Ig0KDQoNCg0KIA0KUlBDX1NUQVRVUyBfX3N0ZGNhbGwNCklfUnBjQXN5bmNTZXRIYW5kbGUgKA0K
ICAgICAgIFBSUENfTUVTU0FHRSBNZXNzYWdlLA0KICAgICAgIFBSUENfQVNZTkNfU1RBVEUgcEFz
eW5jDQogICAgKTsNCg0KIA0KUlBDX1NUQVRVUyBfX3N0ZGNhbGwNCklfUnBjQXN5bmNBYm9ydENh
bGwgKA0KICAgICAgUFJQQ19BU1lOQ19TVEFURSBwQXN5bmMsDQogICAgICB1bnNpZ25lZCBsb25n
IEV4Y2VwdGlvbkNvZGUNCiAgICApIDsNCg0KDQppbnQgDQpfX3N0ZGNhbGwNCklfUnBjRXhjZXB0
aW9uRmlsdGVyICgNCiAgICAgIHVuc2lnbmVkIGxvbmcgRXhjZXB0aW9uQ29kZQ0KICAgICk7DQoj
bGluZSA3NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY0JpbmRpbmdJbnFDbGllbnRU
b2tlbkF0dHJpYnV0ZXMgKA0KICAgICAgUlBDX0JJTkRJTkdfSEFORExFIEJpbmRpbmcsDQogICAg
ICBMVUlEICogVG9rZW5JZCwNCiAgICAgIExVSUQgKiBBdXRoZW50aWNhdGlvbklkLA0KICAgICAg
TFVJRCAqIE1vZGlmaWVkSWQNCiAgICApOw0KICAgIA0KI2xpbmUgNzY3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHJwY2FzeW5jLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDc3MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxycGNhc3luYy5oIg0KDQojbGluZSA3NzMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
cnBjYXN5bmMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgNzc4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHJwY2FzeW5jLmgiDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3Bw
YWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHBvcCkNCg0K
DQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xpbmUgMzYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9w
cGFjay5oIg0KI2xpbmUgNzgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY2FzeW5jLmgiDQojbGluZSA3
ODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjYXN5bmMuaCINCg0KI2xpbmUgNzg0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY2FzeW5jLmgiDQoNCiNsaW5lIDIxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCIN
Cg0KI2xpbmUgMjIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwYy5oIg0KDQoNCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxccG9wcGFjay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFn
bWEgcGFjayhwb3ApDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0K
DQoNCiNsaW5lIDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDM3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCiNsaW5lIDIyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMu
aCINCiNsaW5lIDIyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGMuaCINCg0KDQp9DQojbGluZSAyMjkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxccnBjLmgiDQoNCiNsaW5lIDIzMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxy
cGMuaCINCg0KI2xpbmUgMTk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMjAwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0MDAxKSANCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMDEpIA0KI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojcHJhZ21hIG9uY2UNCiNsaW5lIDE4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAz
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxs
YXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5o
Ig0KI2xpbmUgNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCiNsaW5lIDU0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
c2hlbGxhcGkuaCINCg0KDQoNCg0KI2xpbmUgNTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0K
DQoNCmV4dGVybiAiQyIgeyAgICAgICAgICAgIA0KI2xpbmUgNjMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVs
bGFwaS5oIg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIEdhbWluZyBGYW1p
bHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBMUFdTVFIgKiBfX3N0ZGNh
bGwgIENvbW1hbmRMaW5lVG9Bcmd2VyggIExQQ1dTVFIgbHBDbWRMaW5lLCAgIGludCogcE51bUFy
Z3MpOw0KDQojbGluZSA3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCnN0cnVjdCBI
RFJPUF9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgSERST1BfXyAqSERST1A7DQoNCiAN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJTlQgX19zdGRjYWxsIERyYWdRdWVy
eUZpbGVBKCAgSERST1AgaERyb3AsICAgVUlOVCBpRmlsZSwgICBMUFNUUiBscHN6RmlsZSwgICBV
SU5UIGNjaCk7DQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UIF9fc3Rk
Y2FsbCBEcmFnUXVlcnlGaWxlVyggIEhEUk9QIGhEcm9wLCAgIFVJTlQgaUZpbGUsICAgTFBXU1RS
IGxwc3pGaWxlLCAgIFVJTlQgY2NoKTsNCg0KDQoNCg0KI2xpbmUgOTAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxz
aGVsbGFwaS5oIg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNh
bGwgRHJhZ1F1ZXJ5UG9pbnQoICBIRFJPUCBoRHJvcCwgICBQT0lOVCAqcHB0KTsNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIERyYWdGaW5pc2goICBIRFJP
UCBoRHJvcCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fc3RkY2Fs
bCBEcmFnQWNjZXB0RmlsZXMoICBIV05EIGhXbmQsICAgQk9PTCBmQWNjZXB0KTsNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSElOU1RBTkNFIF9fc3RkY2FsbCBTaGVsbEV4ZWN1
dGVBKCAgSFdORCBod25kLCAgIExQQ1NUUiBscE9wZXJhdGlvbiwgICBMUENTVFIgbHBGaWxlLCAg
IExQQ1NUUiBscFBhcmFtZXRlcnMsDQogICAgICBMUENTVFIgbHBEaXJlY3RvcnksICAgSU5UIG5T
aG93Q21kKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhJTlNUQU5DRSBfX3N0
ZGNhbGwgU2hlbGxFeGVjdXRlVyggIEhXTkQgaHduZCwgICBMUENXU1RSIGxwT3BlcmF0aW9uLCAg
IExQQ1dTVFIgbHBGaWxlLCAgIExQQ1dTVFIgbHBQYXJhbWV0ZXJzLA0KICAgICAgTFBDV1NUUiBs
cERpcmVjdG9yeSwgICBJTlQgblNob3dDbWQpOw0KDQoNCg0KDQojbGluZSAxMDMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxzaGVsbGFwaS5oIg0KICANCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhJ
TlNUQU5DRSBfX3N0ZGNhbGwgRmluZEV4ZWN1dGFibGVBKCAgTFBDU1RSIGxwRmlsZSwgICBMUENT
VFIgbHBEaXJlY3RvcnksICAgTFBTVFIgbHBSZXN1bHQpOw0KICANCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhJTlNUQU5DRSBfX3N0ZGNhbGwgRmluZEV4ZWN1dGFibGVXKCAgTFBD
V1NUUiBscEZpbGUsICAgTFBDV1NUUiBscERpcmVjdG9yeSwgICBMUFdTVFIgbHBSZXN1bHQpOw0K
DQoNCg0KDQojbGluZSAxMTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBJTlQgX19zdGRjYWxsIFNoZWxsQWJvdXRBKCAgSFdORCBo
V25kLCAgIExQQ1NUUiBzekFwcCwgICBMUENTVFIgc3pPdGhlclN0dWZmLCAgIEhJQ09OIGhJY29u
KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIElOVCBfX3N0ZGNhbGwgU2hlbGxB
Ym91dFcoICBIV05EIGhXbmQsICAgTFBDV1NUUiBzekFwcCwgICBMUENXU1RSIHN6T3RoZXJTdHVm
ZiwgICBISUNPTiBoSWNvbik7DQoNCg0KDQoNCiNsaW5lIDEyMCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxs
YXBpLmgiDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBISUNPTiBfX3N0ZGNhbGwg
RHVwbGljYXRlSWNvbiggIEhJTlNUQU5DRSBoSW5zdCwgICBISUNPTiBoSWNvbik7DQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBISUNPTiBfX3N0ZGNhbGwgRXh0cmFjdEFzc29jaWF0
ZWRJY29uQSggIEhJTlNUQU5DRSBoSW5zdCwgICBMUFNUUiBwc3pJY29uUGF0aCwgICBXT1JEICpw
aUljb24pOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSElDT04gX19zdGRjYWxs
IEV4dHJhY3RBc3NvY2lhdGVkSWNvblcoICBISU5TVEFOQ0UgaEluc3QsICAgTFBXU1RSIHBzeklj
b25QYXRoLCAgIFdPUkQgKnBpSWNvbik7DQoNCg0KDQoNCiNsaW5lIDEyOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHNoZWxsYXBpLmgiDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBISUNPTiBfX3N0
ZGNhbGwgRXh0cmFjdEFzc29jaWF0ZWRJY29uRXhBKCAgSElOU1RBTkNFIGhJbnN0LCAgIExQU1RS
IHBzekljb25QYXRoLCAgIFdPUkQgKnBpSWNvbkluZGV4LCAgIFdPUkQgKnBpSWNvbklkKTsNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhJQ09OIF9fc3RkY2FsbCBFeHRyYWN0QXNz
b2NpYXRlZEljb25FeFcoICBISU5TVEFOQ0UgaEluc3QsICAgTFBXU1RSIHBzekljb25QYXRoLCAg
IFdPUkQgKnBpSWNvbkluZGV4LCAgIFdPUkQgKnBpSWNvbklkKTsNCg0KDQoNCg0KI2xpbmUgMTM1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhJQ09OIF9fc3RkY2FsbCBFeHRyYWN0SWNvbkEoICBISU5TVEFOQ0UgaEluc3QsICAgTFBD
U1RSIHBzekV4ZUZpbGVOYW1lLCBVSU5UIG5JY29uSW5kZXgpOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSElDT04gX19zdGRjYWxsIEV4dHJhY3RJY29uVyggIEhJTlNUQU5DRSBo
SW5zdCwgICBMUENXU1RSIHBzekV4ZUZpbGVOYW1lLCBVSU5UIG5JY29uSW5kZXgpOw0KDQoNCg0K
DQojbGluZSAxNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX0RSQUdJTkZPQSB7DQogICAgVUlOVCB1U2l6ZTsgICAgICAgICAgICAgICAgIA0KICAgIFBP
SU5UIHB0Ow0KICAgIEJPT0wgZk5DOw0KICAgIFBaWlNUUiBscEZpbGVMaXN0Ow0KICAgIERXT1JE
IGdyZktleVN0YXRlOw0KfSBEUkFHSU5GT0EsICpMUERSQUdJTkZPQTsNCnR5cGVkZWYgc3RydWN0
IF9EUkFHSU5GT1cgew0KICAgIFVJTlQgdVNpemU7ICAgICAgICAgICAgICAgICANCiAgICBQT0lO
VCBwdDsNCiAgICBCT09MIGZOQzsNCiAgICBQWlpXU1RSIGxwRmlsZUxpc3Q7DQogICAgRFdPUkQg
Z3JmS2V5U3RhdGU7DQp9IERSQUdJTkZPVywgKkxQRFJBR0lORk9XOw0KDQp0eXBlZGVmIERSQUdJ
TkZPVyBEUkFHSU5GTzsNCnR5cGVkZWYgTFBEUkFHSU5GT1cgTFBEUkFHSU5GTzsNCg0KDQoNCiNs
aW5lIDE2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KI2xpbmUgMTg2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcc2hlbGxhcGkuaCINCg0KDQoNCiNsaW5lIDE5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBp
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0Fw
cEJhckRhdGENCnsNCiAgICBEV09SRCBjYlNpemU7DQogICAgSFdORCBoV25kOw0KICAgIFVJTlQg
dUNhbGxiYWNrTWVzc2FnZTsNCiAgICBVSU5UIHVFZGdlOw0KICAgIFJFQ1QgcmM7DQogICAgTFBB
UkFNIGxQYXJhbTsgDQp9IEFQUEJBUkRBVEEsICpQQVBQQkFSREFUQTsNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UX1BUUiBfX3N0ZGNhbGwgU0hBcHBCYXJNZXNzYWdl
KCAgRFdPUkQgZHdNZXNzYWdlLCAgIFBBUFBCQVJEQVRBIHBEYXRhKTsNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBEV09SRCBfX3N0ZGNhbGwgICBEb0Vudmlyb25t
ZW50U3Vic3RBKCAgTFBTVFIgcHN6U3JjLCBVSU5UIGNjaFNyYyk7DQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBEV09SRCBfX3N0ZGNhbGwgICBEb0Vudmlyb25tZW50U3Vic3RXKCAg
TFBXU1RSIHBzelNyYywgVUlOVCBjY2hTcmMpOw0KDQoNCg0KDQojbGluZSAyMzEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxzaGVsbGFwaS5oIg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVJ
TlQgX19zdGRjYWxsIEV4dHJhY3RJY29uRXhBKCAgTFBDU1RSIGxwc3pGaWxlLCBpbnQgbkljb25J
bmRleCwgICBISUNPTiAqcGhpY29uTGFyZ2UsICAgSElDT04gKnBoaWNvblNtYWxsLCBVSU5UIG5J
Y29ucyk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UIF9fc3RkY2FsbCBF
eHRyYWN0SWNvbkV4VyggIExQQ1dTVFIgbHBzekZpbGUsIGludCBuSWNvbkluZGV4LCAgIEhJQ09O
ICpwaGljb25MYXJnZSwgICBISUNPTiAqcGhpY29uU21hbGwsIFVJTlQgbkljb25zKTsNCg0KDQoN
Cg0KI2xpbmUgMjQwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBp
LmgiDQoNCg0KdHlwZWRlZiBXT1JEIEZJTEVPUF9GTEFHUzsNCg0KDQoNCg0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCg0KDQoNCg0KdHlwZWRlZiBXT1JEIFBSSU5URVJPUF9GTEFHUzsNCg0KDQoNCg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0hGSUxFT1BTVFJVQ1RBDQp7DQogICAgSFdORCAgICAg
ICAgICAgIGh3bmQ7DQogICAgVUlOVCAgICAgICAgICAgIHdGdW5jOw0KICAgIFBDWlpTVFIgICAg
ICAgICBwRnJvbTsNCiAgICBQQ1paU1RSICAgICAgICAgcFRvOw0KICAgIEZJTEVPUF9GTEFHUyAg
ICBmRmxhZ3M7DQogICAgQk9PTCAgICAgICAgICAgIGZBbnlPcGVyYXRpb25zQWJvcnRlZDsNCiAg
ICBMUFZPSUQgICAgICAgICAgaE5hbWVNYXBwaW5nczsNCiAgICBQQ1NUUiAgICAgICAgICAgbHBz
elByb2dyZXNzVGl0bGU7IA0KfSBTSEZJTEVPUFNUUlVDVEEsICpMUFNIRklMRU9QU1RSVUNUQTsN
CnR5cGVkZWYgc3RydWN0IF9TSEZJTEVPUFNUUlVDVFcNCnsNCiAgICBIV05EICAgICAgICAgICAg
aHduZDsNCiAgICBVSU5UICAgICAgICAgICAgd0Z1bmM7DQogICAgUENaWldTVFIgICAgICAgIHBG
cm9tOw0KICAgIFBDWlpXU1RSICAgICAgICBwVG87DQogICAgRklMRU9QX0ZMQUdTICAgIGZGbGFn
czsNCiAgICBCT09MICAgICAgICAgICAgZkFueU9wZXJhdGlvbnNBYm9ydGVkOw0KICAgIExQVk9J
RCAgICAgICAgICBoTmFtZU1hcHBpbmdzOw0KICAgIFBDV1NUUiAgICAgICAgICBscHN6UHJvZ3Jl
c3NUaXRsZTsgDQp9IFNIRklMRU9QU1RSVUNUVywgKkxQU0hGSUxFT1BTVFJVQ1RXOw0KDQp0eXBl
ZGVmIFNIRklMRU9QU1RSVUNUVyBTSEZJTEVPUFNUUlVDVDsNCnR5cGVkZWYgTFBTSEZJTEVPUFNU
UlVDVFcgTFBTSEZJTEVPUFNUUlVDVDsNCg0KDQoNCiNsaW5lIDMyMiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNo
ZWxsYXBpLmgiDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX3N0ZGNh
bGwgU0hGaWxlT3BlcmF0aW9uQSggIExQU0hGSUxFT1BTVFJVQ1RBIGxwRmlsZU9wKTsNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX3N0ZGNhbGwgU0hGaWxlT3BlcmF0aW9u
VyggIExQU0hGSUxFT1BTVFJVQ1RXIGxwRmlsZU9wKTsNCg0KDQoNCg0KI2xpbmUgMzMwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcc2hlbGxhcGkuaCINCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZv
aWQgX19zdGRjYWxsIFNIRnJlZU5hbWVNYXBwaW5ncyggIEhBTkRMRSBoTmFtZU1hcHBpbmdzKTsN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX1NITkFNRU1BUFBJTkdBDQp7DQogICAgTFBTVFIgICBwc3pPbGRQ
YXRoOw0KICAgIExQU1RSICAgcHN6TmV3UGF0aDsNCiAgICBpbnQgICBjY2hPbGRQYXRoOw0KICAg
IGludCAgIGNjaE5ld1BhdGg7DQp9IFNITkFNRU1BUFBJTkdBLCAqTFBTSE5BTUVNQVBQSU5HQTsN
CnR5cGVkZWYgc3RydWN0IF9TSE5BTUVNQVBQSU5HVw0Kew0KICAgIExQV1NUUiAgcHN6T2xkUGF0
aDsNCiAgICBMUFdTVFIgIHBzek5ld1BhdGg7DQogICAgaW50ICAgY2NoT2xkUGF0aDsNCiAgICBp
bnQgICBjY2hOZXdQYXRoOw0KfSBTSE5BTUVNQVBQSU5HVywgKkxQU0hOQU1FTUFQUElOR1c7DQoN
CnR5cGVkZWYgU0hOQU1FTUFQUElOR1cgU0hOQU1FTUFQUElORzsNCnR5cGVkZWYgTFBTSE5BTUVN
QVBQSU5HVyBMUFNITkFNRU1BUFBJTkc7DQoNCg0KDQojbGluZSAzNTMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxz
aGVsbGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAz
NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNDA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQoj
bGluZSA0MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KI2xpbmUgNDEzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQojbGluZSA0MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFw
aS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1NIRUxMRVhFQ1VURUlORk9BDQp7DQogICAgRFdPUkQgY2JTaXplOyAgICAgICAgICAgICAgIA0K
ICAgIFVMT05HIGZNYXNrOyAgICAgICAgICAgICAgICANCiAgICBIV05EIGh3bmQ7ICAgICAgICAg
ICAgICAgICAgDQogICAgTFBDU1RSICAgbHBWZXJiOyAgICAgICAgICAgIA0KICAgIExQQ1NUUiAg
IGxwRmlsZTsgICAgICAgICAgICANCiAgICBMUENTVFIgICBscFBhcmFtZXRlcnM7ICAgICAgDQog
ICAgTFBDU1RSICAgbHBEaXJlY3Rvcnk7ICAgICAgIA0KICAgIGludCBuU2hvdzsgICAgICAgICAg
ICAgICAgICANCiAgICBISU5TVEFOQ0UgaEluc3RBcHA7ICAgICAgICAgDQogICAgdm9pZCAqbHBJ
RExpc3Q7ICAgICAgICAgICAgIA0KICAgIExQQ1NUUiAgIGxwQ2xhc3M7ICAgICAgICAgICANCiAg
ICBIS0VZIGhrZXlDbGFzczsgICAgICAgICAgICAgDQogICAgRFdPUkQgZHdIb3RLZXk7ICAgICAg
ICAgICAgIA0KICAgIHVuaW9uDQogICAgew0KICAgICAgICBIQU5ETEUgaEljb247ICAgICAgICAg
ICANCg0KICAgICAgICBIQU5ETEUgaE1vbml0b3I7ICAgICAgICANCiNsaW5lIDQ2NiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHNoZWxsYXBpLmgiDQogICAgfSA7DQogICAgSEFORExFIGhQcm9jZXNzOyAgICAgICAg
ICAgIA0KfSBTSEVMTEVYRUNVVEVJTkZPQSwgKkxQU0hFTExFWEVDVVRFSU5GT0E7DQp0eXBlZGVm
IHN0cnVjdCBfU0hFTExFWEVDVVRFSU5GT1cNCnsNCiAgICBEV09SRCBjYlNpemU7ICAgICAgICAg
ICAgICAgDQogICAgVUxPTkcgZk1hc2s7ICAgICAgICAgICAgICAgIA0KICAgIEhXTkQgaHduZDsg
ICAgICAgICAgICAgICAgICANCiAgICBMUENXU1RSICBscFZlcmI7ICAgICAgICAgICAgDQogICAg
TFBDV1NUUiAgbHBGaWxlOyAgICAgICAgICAgIA0KICAgIExQQ1dTVFIgIGxwUGFyYW1ldGVyczsg
ICAgICANCiAgICBMUENXU1RSICBscERpcmVjdG9yeTsgICAgICAgDQogICAgaW50IG5TaG93OyAg
ICAgICAgICAgICAgICAgIA0KICAgIEhJTlNUQU5DRSBoSW5zdEFwcDsgICAgICAgICANCiAgICB2
b2lkICpscElETGlzdDsgICAgICAgICAgICAgDQogICAgTFBDV1NUUiAgbHBDbGFzczsgICAgICAg
ICAgIA0KICAgIEhLRVkgaGtleUNsYXNzOyAgICAgICAgICAgICANCiAgICBEV09SRCBkd0hvdEtl
eTsgICAgICAgICAgICAgDQogICAgdW5pb24NCiAgICB7DQogICAgICAgIEhBTkRMRSBoSWNvbjsg
ICAgICAgICAgIA0KDQogICAgICAgIEhBTkRMRSBoTW9uaXRvcjsgICAgICAgIA0KI2xpbmUgNDkw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCiAgICB9IDsNCiAgICBIQU5ETEUgaFByb2Nlc3M7
ICAgICAgICAgICAgDQp9IFNIRUxMRVhFQ1VURUlORk9XLCAqTFBTSEVMTEVYRUNVVEVJTkZPVzsN
Cg0KdHlwZWRlZiBTSEVMTEVYRUNVVEVJTkZPVyBTSEVMTEVYRUNVVEVJTkZPOw0KdHlwZWRlZiBM
UFNIRUxMRVhFQ1VURUlORk9XIExQU0hFTExFWEVDVVRFSU5GTzsNCg0KDQoNCiNsaW5lIDUwMCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEJPT0wgX19zdGRjYWxsIFNoZWxsRXhlY3V0ZUV4QSggIFNIRUxMRVhFQ1VURUlORk9BICpw
RXhlY0luZm8pOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNh
bGwgU2hlbGxFeGVjdXRlRXhXKCAgU0hFTExFWEVDVVRFSU5GT1cgKnBFeGVjSW5mbyk7DQoNCg0K
DQoNCiNsaW5lIDUwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBfU0hDUkVBVEVQUk9DRVNTSU5GT1cNCnsNCiAgICBEV09SRCBjYlNpemU7DQogICAgVUxP
TkcgZk1hc2s7DQogICAgSFdORCBod25kOw0KICAgIExQQ1dTVFIgIHBzekZpbGU7DQogICAgTFBD
V1NUUiAgcHN6UGFyYW1ldGVyczsNCiAgICBMUENXU1RSICBwc3pDdXJyZW50RGlyZWN0b3J5Ow0K
ICAgIEhBTkRMRSBoVXNlclRva2VuOw0KICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFByb2Nl
c3NBdHRyaWJ1dGVzOw0KICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFRocmVhZEF0dHJpYnV0
ZXM7DQogICAgQk9PTCBiSW5oZXJpdEhhbmRsZXM7DQogICAgRFdPUkQgZHdDcmVhdGlvbkZsYWdz
Ow0KICAgIExQU1RBUlRVUElORk9XIGxwU3RhcnR1cEluZm87DQogICAgTFBQUk9DRVNTX0lORk9S
TUFUSU9OIGxwUHJvY2Vzc0luZm9ybWF0aW9uOw0KfSBTSENSRUFURVBST0NFU1NJTkZPVywgKlBT
SENSRUFURVBST0NFU1NJTkZPVzsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Qk9PTCBfX3N0ZGNhbGwgU0hDcmVhdGVQcm9jZXNzQXNVc2VyVyggIFBTSENSRUFURVBST0NFU1NJ
TkZPVyBwc2NwaSk7DQojbGluZSA1MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU0hFdmFs
dWF0ZVN5c3RlbUNvbW1hbmRUZW1wbGF0ZSggIFBDV1NUUiBwc3pDbWRUZW1wbGF0ZSwgIFBXU1RS
ICpwcHN6QXBwbGljYXRpb24sICBQV1NUUiAqcHBzekNvbW1hbmRMaW5lLCAgUFdTVFIgKnBwc3pQ
YXJhbWV0ZXJzKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0
eXBlZGVmIGVudW0gQVNTT0NDTEFTUw0KeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICBBU1NPQ0NMQVNTX1NIRUxMX0tFWSA9IDAsICAgDQogICAgQVNTT0NDTEFTU19QUk9HSURf
S0VZLCAgICAgIA0KICAgIEFTU09DQ0xBU1NfUFJPR0lEX1NUUiwgICAgICANCiAgICBBU1NPQ0NM
QVNTX0NMU0lEX0tFWSwgICAgICAgDQogICAgQVNTT0NDTEFTU19DTFNJRF9TVFIsICAgICAgIA0K
ICAgIEFTU09DQ0xBU1NfQVBQX0tFWSwgICAgICAgICANCiAgICBBU1NPQ0NMQVNTX0FQUF9TVFIs
ICAgICAgICAgDQogICAgQVNTT0NDTEFTU19TWVNURU1fU1RSLCAgICAgIA0KICAgIEFTU09DQ0xB
U1NfRk9MREVSLCAgICAgICAgICANCiAgICBBU1NPQ0NMQVNTX1NUQVIsICAgICAgICAgICAgDQoN
Cg0KDQojbGluZSA4ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KfSBBU1NPQ0NMQVNTOw0K
DQp0eXBlZGVmIHN0cnVjdCBBU1NPQ0lBVElPTkVMRU1FTlQNCnsNCiAgICBBU1NPQ0NMQVNTIGFj
OyAgICAgICAgICAgICAgDQogICAgSEtFWSBoa0NsYXNzOyAgICAgICAgICAgICAgIA0KICAgIFBD
V1NUUiBwc3pDbGFzczsgICAgICAgICAgICANCn0gQVNTT0NJQVRJT05FTEVNRU5UOw0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgQXNzb2ND
cmVhdGVGb3JDbGFzc2VzKCAgY29uc3QgQVNTT0NJQVRJT05FTEVNRU5UICpyZ0NsYXNzZXMsIFVM
T05HIGNDbGFzc2VzLCAgIGNvbnN0IElJRCAmIHJpaWQsICB2b2lkICoqcHB2KTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDkzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgX1NIUVVFUllSQklORk8gew0KICAgIERXT1JEICAgY2JTaXplOw0K
DQogICAgX19pbnQ2NCBpNjRTaXplOw0KICAgIF9faW50NjQgaTY0TnVtSXRlbXM7DQoNCg0KDQoj
bGluZSA5NTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KfSBTSFFVRVJZUkJJTkZPLCAqTFBT
SFFVRVJZUkJJTkZPOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU0hRdWVyeVJlY3ljbGVCaW5BKCAgTFBDU1RSIHBz
elJvb3RQYXRoLCAgIExQU0hRVUVSWVJCSU5GTyBwU0hRdWVyeVJCSW5mbyk7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTSFF1ZXJ5UmVjeWNsZUJp
blcoICBMUENXU1RSIHBzelJvb3RQYXRoLCAgIExQU0hRVUVSWVJCSU5GTyBwU0hRdWVyeVJCSW5m
byk7DQoNCg0KDQoNCiNsaW5lIDk2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTSEVtcHR5UmVjeWNs
ZUJpbkEoICBIV05EIGh3bmQsICAgTFBDU1RSIHBzelJvb3RQYXRoLCBEV09SRCBkd0ZsYWdzKTsN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFNIRW1w
dHlSZWN5Y2xlQmluVyggIEhXTkQgaHduZCwgICBMUENXU1RSIHBzelJvb3RQYXRoLCBEV09SRCBk
d0ZsYWdzKTsNCg0KDQoNCg0KI2xpbmUgOTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0K
DQoNCiNsaW5lIDk3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgZW51bQ0Kew0KICAgIFFVTlNfTk9UX1BSRVNFTlQgICAgICAgICAgICAgICA9IDEsICAg
IA0KICAgIFFVTlNfQlVTWSAgICAgICAgICAgICAgICAgICAgICA9IDIsICAgIA0KICAgIFFVTlNf
UlVOTklOR19EM0RfRlVMTF9TQ1JFRU4gICA9IDMsICAgIA0KICAgIFFVTlNfUFJFU0VOVEFUSU9O
X01PREUgICAgICAgICA9IDQsICAgIA0KICAgIFFVTlNfQUNDRVBUU19OT1RJRklDQVRJT05TICAg
ICA9IDUsICAgIA0KDQogICAgUVVOU19RVUlFVF9USU1FICAgICAgICAgICAgICAgID0gNiwgICAg
DQojbGluZSA5OTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCiNsaW5lIDk5OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHNoZWxsYXBpLmgiDQp9IFFVRVJZX1VTRVJfTk9USUZJQ0FUSU9OX1NUQVRFOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTSFF1
ZXJ5VXNlck5vdGlmaWNhdGlvblN0YXRlKCAgUVVFUllfVVNFUl9OT1RJRklDQVRJT05fU1RBVEUg
KnBxdW5zKTsNCiNsaW5lIDEwMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU0hHZXRQcm9w
ZXJ0eVN0b3JlRm9yV2luZG93KCAgSFdORCBod25kLCAgIGNvbnN0IElJRCAmIHJpaWQsICB2b2lk
KiogcHB2KTsNCiNsaW5lIDEwMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCnR5cGVk
ZWYgc3RydWN0IF9OT1RJRllJQ09OREFUQUEgew0KICAgIERXT1JEIGNiU2l6ZTsNCiAgICBIV05E
IGhXbmQ7DQogICAgVUlOVCB1SUQ7DQogICAgVUlOVCB1RmxhZ3M7DQogICAgVUlOVCB1Q2FsbGJh
Y2tNZXNzYWdlOw0KICAgIEhJQ09OIGhJY29uOw0KDQoNCiNsaW5lIDEwMjAgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxzaGVsbGFwaS5oIg0KDQogICAgQ0hBUiAgIHN6VGlwWzEyOF07DQogICAgRFdPUkQgZHdTdGF0
ZTsNCiAgICBEV09SRCBkd1N0YXRlTWFzazsNCiAgICBDSEFSICAgc3pJbmZvWzI1Nl07DQoNCiAg
ICB1bmlvbiB7DQogICAgICAgIFVJTlQgIHVUaW1lb3V0Ow0KICAgICAgICBVSU5UICB1VmVyc2lv
bjsgIA0KICAgIH0gOw0KI2xpbmUgMTAzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQogICAg
Q0hBUiAgIHN6SW5mb1RpdGxlWzY0XTsNCiAgICBEV09SRCBkd0luZm9GbGFnczsNCiNsaW5lIDEw
MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQogICAgR1VJRCBndWlkSXRlbTsNCiNsaW5l
IDEwMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQogICAgSElDT04gaEJhbGxvb25JY29u
Ow0KI2xpbmUgMTA0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQp9IE5PVElGWUlDT05EQVRB
QSwgKlBOT1RJRllJQ09OREFUQUE7DQp0eXBlZGVmIHN0cnVjdCBfTk9USUZZSUNPTkRBVEFXIHsN
CiAgICBEV09SRCBjYlNpemU7DQogICAgSFdORCBoV25kOw0KICAgIFVJTlQgdUlEOw0KICAgIFVJ
TlQgdUZsYWdzOw0KICAgIFVJTlQgdUNhbGxiYWNrTWVzc2FnZTsNCiAgICBISUNPTiBoSWNvbjsN
Cg0KDQojbGluZSAxMDUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KICAgIFdDSEFSICBz
elRpcFsxMjhdOw0KICAgIERXT1JEIGR3U3RhdGU7DQogICAgRFdPUkQgZHdTdGF0ZU1hc2s7DQog
ICAgV0NIQVIgIHN6SW5mb1syNTZdOw0KDQogICAgdW5pb24gew0KICAgICAgICBVSU5UICB1VGlt
ZW91dDsNCiAgICAgICAgVUlOVCAgdVZlcnNpb247ICANCiAgICB9IDsNCiNsaW5lIDEwNjIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KICAgIFdDSEFSICBzekluZm9UaXRsZVs2NF07DQogICAg
RFdPUkQgZHdJbmZvRmxhZ3M7DQojbGluZSAxMDY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCIN
Cg0KICAgIEdVSUQgZ3VpZEl0ZW07DQojbGluZSAxMDY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGku
aCINCg0KICAgIEhJQ09OIGhCYWxsb29uSWNvbjsNCiNsaW5lIDEwNzEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxz
aGVsbGFwaS5oIg0KfSBOT1RJRllJQ09OREFUQVcsICpQTk9USUZZSUNPTkRBVEFXOw0KDQp0eXBl
ZGVmIE5PVElGWUlDT05EQVRBVyBOT1RJRllJQ09OREFUQTsNCnR5cGVkZWYgUE5PVElGWUlDT05E
QVRBVyBQTk9USUZZSUNPTkRBVEE7DQoNCg0KDQojbGluZSAxMDc5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hl
bGxhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxh
cGkuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgi
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGku
aCINCg0KI2xpbmUgMTEyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTE0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQoj
bGluZSAxMTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDExNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoN
CiNsaW5lIDExNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KI2xpbmUgMTE3NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX05PVElGWUlDT05J
REVOVElGSUVSIHsNCiAgICBEV09SRCBjYlNpemU7DQogICAgSFdORCBoV25kOw0KICAgIFVJTlQg
dUlEOw0KICAgIEdVSUQgZ3VpZEl0ZW07DQp9IE5PVElGWUlDT05JREVOVElGSUVSLCAqUE5PVElG
WUlDT05JREVOVElGSUVSOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJP
T0wgX19zdGRjYWxsIFNoZWxsX05vdGlmeUljb25BKERXT1JEIGR3TWVzc2FnZSwgICBQTk9USUZZ
SUNPTkRBVEFBIGxwRGF0YSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09M
IF9fc3RkY2FsbCBTaGVsbF9Ob3RpZnlJY29uVyhEV09SRCBkd01lc3NhZ2UsICAgUE5PVElGWUlD
T05EQVRBVyBscERhdGEpOw0KDQoNCg0KDQojbGluZSAxMTkxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxh
cGkuaCINCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbCBTaGVsbF9Ob3RpZnlJY29uR2V0UmVjdCggIGNvbnN0IE5PVElGWUlDT05JREVOVElGSUVS
KiBpZGVudGlmaWVyLCAgIFJFQ1QqIGljb25Mb2NhdGlvbik7DQojbGluZSAxMTk1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcc2hlbGxhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TSEZJTEVJTkZPQQ0Kew0KICAgICAgICBI
SUNPTiAgICAgICBoSWNvbjsgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIGludCAgICAg
ICAgIGlJY29uOyAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgRFdPUkQgICAgICAgZHdB
dHRyaWJ1dGVzOyAgICAgICAgICAgICAgIA0KICAgICAgICBDSEFSICAgICAgICBzekRpc3BsYXlO
YW1lWzI2MF07ICAgIA0KICAgICAgICBDSEFSICAgICAgICBzelR5cGVOYW1lWzgwXTsgICAgICAg
ICAgICAgDQp9IFNIRklMRUlORk9BOw0KdHlwZWRlZiBzdHJ1Y3QgX1NIRklMRUlORk9XDQp7DQog
ICAgICAgIEhJQ09OICAgICAgIGhJY29uOyAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg
aW50ICAgICAgICAgaUljb247ICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICBEV09SRCAg
ICAgICBkd0F0dHJpYnV0ZXM7ICAgICAgICAgICAgICAgDQogICAgICAgIFdDSEFSICAgICAgIHN6
RGlzcGxheU5hbWVbMjYwXTsgICAgDQogICAgICAgIFdDSEFSICAgICAgIHN6VHlwZU5hbWVbODBd
OyAgICAgICAgICAgICANCn0gU0hGSUxFSU5GT1c7DQoNCnR5cGVkZWYgU0hGSUxFSU5GT1cgU0hG
SUxFSU5GTzsNCg0KDQojbGluZSAxMjQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQoN
CiNsaW5lIDEyNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTI2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRFdPUkRfUFRSIF9fc3RkY2FsbCBTSEdl
dEZpbGVJbmZvQSggIExQQ1NUUiBwc3pQYXRoLCBEV09SRCBkd0ZpbGVBdHRyaWJ1dGVzLCAgIFNI
RklMRUlORk9BICpwc2ZpLA0KICAgIFVJTlQgY2JGaWxlSW5mbywgVUlOVCB1RmxhZ3MpOw0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRFdPUkRfUFRSIF9fc3RkY2FsbCBTSEdldEZp
bGVJbmZvVyggIExQQ1dTVFIgcHN6UGF0aCwgRFdPUkQgZHdGaWxlQXR0cmlidXRlcywgICBTSEZJ
TEVJTkZPVyAqcHNmaSwNCiAgICBVSU5UIGNiRmlsZUluZm8sIFVJTlQgdUZsYWdzKTsNCg0KDQoN
Cg0KI2xpbmUgMTI4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgX1NIU1RPQ0tJQ09OSU5GTw0Kew0KICAgIERXT1JEIGNiU2l6ZTsNCiAgICBISUNPTiBoSWNv
bjsNCiAgICBpbnQgICBpU3lzSW1hZ2VJbmRleDsNCiAgICBpbnQgICBpSWNvbjsNCiAgICBXQ0hB
UiBzelBhdGhbMjYwXTsNCn0gU0hTVE9DS0lDT05JTkZPOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQp0eXBlZGVmIGVudW0gU0hTVE9DS0lDT05JRA0Kew0KICAgIFNJSURfRE9DTk9BU1NPQyA9
IDAsICAgICAgICAgIA0KICAgIFNJSURfRE9DQVNTT0MgPSAxLCAgICAgICAgICAgIA0KICAgIFNJ
SURfQVBQTElDQVRJT04gPSAyLCAgICAgICAgIA0KICAgIFNJSURfRk9MREVSID0gMywgICAgICAg
ICAgICAgIA0KICAgIFNJSURfRk9MREVST1BFTiA9IDQsICAgICAgICAgIA0KICAgIFNJSURfRFJJ
VkU1MjUgPSA1LCAgICAgICAgICAgIA0KICAgIFNJSURfRFJJVkUzNSA9IDYsICAgICAgICAgICAg
IA0KICAgIFNJSURfRFJJVkVSRU1PVkUgPSA3LCAgICAgICAgIA0KICAgIFNJSURfRFJJVkVGSVhF
RCA9IDgsICAgICAgICAgIA0KICAgIFNJSURfRFJJVkVORVQgPSA5LCAgICAgICAgICAgIA0KICAg
IFNJSURfRFJJVkVORVRESVNBQkxFRCA9IDEwLCAgIA0KICAgIFNJSURfRFJJVkVDRCA9IDExLCAg
ICAgICAgICAgIA0KICAgIFNJSURfRFJJVkVSQU0gPSAxMiwgICAgICAgICAgIA0KICAgIFNJSURf
V09STEQgPSAxMywgICAgICAgICAgICAgIA0KICAgIFNJSURfU0VSVkVSID0gMTUsICAgICAgICAg
ICAgIA0KICAgIFNJSURfUFJJTlRFUiA9IDE2LCAgICAgICAgICAgIA0KICAgIFNJSURfTVlORVRX
T1JLID0gMTcsICAgICAgICAgIA0KICAgIFNJSURfRklORCA9IDIyLCAgICAgICAgICAgICAgIA0K
ICAgIFNJSURfSEVMUCA9IDIzLCAgICAgICAgICAgICAgIA0KICAgIFNJSURfU0hBUkUgPSAyOCwg
ICAgICAgICAgICAgIA0KICAgIFNJSURfTElOSyA9IDI5LCAgICAgICAgICAgICAgIA0KICAgIFNJ
SURfU0xPV0ZJTEUgPSAzMCwgICAgICAgICAgIA0KICAgIFNJSURfUkVDWUNMRVIgPSAzMSwgICAg
ICAgICAgIA0KICAgIFNJSURfUkVDWUNMRVJGVUxMID0gMzIsICAgICAgIA0KICAgIFNJSURfTUVE
SUFDREFVRElPID0gNDAsICAgICAgIA0KICAgIFNJSURfTE9DSyA9IDQ3LCAgICAgICAgICAgICAg
IA0KICAgIFNJSURfQVVUT0xJU1QgPSA0OSwgICAgICAgICAgIA0KICAgIFNJSURfUFJJTlRFUk5F
VCA9IDUwLCAgICAgICAgIA0KICAgIFNJSURfU0VSVkVSU0hBUkUgPSA1MSwgICAgICAgIA0KICAg
IFNJSURfUFJJTlRFUkZBWCA9IDUyLCAgICAgICAgIA0KICAgIFNJSURfUFJJTlRFUkZBWE5FVCA9
IDUzLCAgICAgIA0KICAgIFNJSURfUFJJTlRFUkZJTEUgPSA1NCwgICAgICAgIA0KICAgIFNJSURf
U1RBQ0sgPSA1NSwgICAgICAgICAgICAgIA0KICAgIFNJSURfTUVESUFTVkNEID0gNTYsICAgICAg
ICAgIA0KICAgIFNJSURfU1RVRkZFREZPTERFUiA9IDU3LCAgICAgIA0KICAgIFNJSURfRFJJVkVV
TktOT1dOID0gNTgsICAgICAgIA0KICAgIFNJSURfRFJJVkVEVkQgPSA1OSwgICAgICAgICAgIA0K
ICAgIFNJSURfTUVESUFEVkQgPSA2MCwgICAgICAgICAgIA0KICAgIFNJSURfTUVESUFEVkRSQU0g
PSA2MSwgICAgICAgIA0KICAgIFNJSURfTUVESUFEVkRSVyA9IDYyLCAgICAgICAgIA0KICAgIFNJ
SURfTUVESUFEVkRSID0gNjMsICAgICAgICAgIA0KICAgIFNJSURfTUVESUFEVkRST00gPSA2NCwg
ICAgICAgIA0KICAgIFNJSURfTUVESUFDREFVRElPUExVUyA9IDY1LCAgIA0KICAgIFNJSURfTUVE
SUFDRFJXID0gNjYsICAgICAgICAgIA0KICAgIFNJSURfTUVESUFDRFIgPSA2NywgICAgICAgICAg
IA0KICAgIFNJSURfTUVESUFDREJVUk4gPSA2OCwgICAgICAgIA0KICAgIFNJSURfTUVESUFCTEFO
S0NEID0gNjksICAgICAgIA0KICAgIFNJSURfTUVESUFDRFJPTSA9IDcwLCAgICAgICAgIA0KICAg
IFNJSURfQVVESU9GSUxFUyA9IDcxLCAgICAgICAgIA0KICAgIFNJSURfSU1BR0VGSUxFUyA9IDcy
LCAgICAgICAgIA0KICAgIFNJSURfVklERU9GSUxFUyA9IDczLCAgICAgICAgIA0KICAgIFNJSURf
TUlYRURGSUxFUyA9IDc0LCAgICAgICAgIA0KICAgIFNJSURfRk9MREVSQkFDSyA9IDc1LCAgICAg
ICAgIA0KICAgIFNJSURfRk9MREVSRlJPTlQgPSA3NiwgICAgICAgIA0KICAgIFNJSURfU0hJRUxE
ID0gNzcsICAgICAgICAgICAgIA0KICAgIFNJSURfV0FSTklORyA9IDc4LCAgICAgICAgICAgIA0K
ICAgIFNJSURfSU5GTyA9IDc5LCAgICAgICAgICAgICAgIA0KICAgIFNJSURfRVJST1IgPSA4MCwg
ICAgICAgICAgICAgIA0KICAgIFNJSURfS0VZID0gODEsICAgICAgICAgICAgICAgIA0KICAgIFNJ
SURfU09GVFdBUkUgPSA4MiwgICAgICAgICAgIA0KICAgIFNJSURfUkVOQU1FID0gODMsICAgICAg
ICAgICAgIA0KICAgIFNJSURfREVMRVRFID0gODQsICAgICAgICAgICAgIA0KICAgIFNJSURfTUVE
SUFBVURJT0RWRCA9IDg1LCAgICAgIA0KICAgIFNJSURfTUVESUFNT1ZJRURWRCA9IDg2LCAgICAg
IA0KICAgIFNJSURfTUVESUFFTkhBTkNFRENEID0gODcsICAgIA0KICAgIFNJSURfTUVESUFFTkhB
TkNFRERWRCA9IDg4LCAgIA0KICAgIFNJSURfTUVESUFIRERWRCA9IDg5LCAgICAgICAgIA0KICAg
IFNJSURfTUVESUFCTFVSQVkgPSA5MCwgICAgICAgIA0KICAgIFNJSURfTUVESUFWQ0QgPSA5MSwg
ICAgICAgICAgIA0KICAgIFNJSURfTUVESUFEVkRQTFVTUiA9IDkyLCAgICAgIA0KICAgIFNJSURf
TUVESUFEVkRQTFVTUlcgPSA5MywgICAgIA0KICAgIFNJSURfREVTS1RPUFBDID0gOTQsICAgICAg
ICAgIA0KICAgIFNJSURfTU9CSUxFUEMgPSA5NSwgICAgICAgICAgIA0KICAgIFNJSURfVVNFUlMg
PSA5NiwgICAgICAgICAgICAgIA0KICAgIFNJSURfTUVESUFTTUFSVE1FRElBID0gOTcsICAgIA0K
ICAgIFNJSURfTUVESUFDT01QQUNURkxBU0ggPSA5OCwgIA0KICAgIFNJSURfREVWSUNFQ0VMTFBI
T05FID0gOTksICAgIA0KICAgIFNJSURfREVWSUNFQ0FNRVJBID0gMTAwLCAgICAgIA0KICAgIFNJ
SURfREVWSUNFVklERU9DQU1FUkEgPSAxMDEsIA0KICAgIFNJSURfREVWSUNFQVVESU9QTEFZRVIg
PSAxMDIsIA0KICAgIFNJSURfTkVUV09SS0NPTk5FQ1QgPSAxMDMsICAgIA0KICAgIFNJSURfSU5U
RVJORVQgPSAxMDQsICAgICAgICAgIA0KICAgIFNJSURfWklQRklMRSA9IDEwNSwgICAgICAgICAg
IA0KICAgIFNJSURfU0VUVElOR1MgPSAxMDYsICAgICAgICAgIA0KICAgIA0KICAgIA0KICAgIFNJ
SURfRFJJVkVIRERWRCA9IDEzMiwgICAgICAgIA0KICAgIFNJSURfRFJJVkVCRCA9IDEzMywgICAg
ICAgICAgIA0KICAgIFNJSURfTUVESUFIRERWRFJPTSA9IDEzNCwgICAgIA0KICAgIFNJSURfTUVE
SUFIRERWRFIgPSAxMzUsICAgICAgIA0KICAgIFNJSURfTUVESUFIRERWRFJBTSA9IDEzNiwgICAg
IA0KICAgIFNJSURfTUVESUFCRFJPTSA9IDEzNywgICAgICAgIA0KICAgIFNJSURfTUVESUFCRFIg
PSAxMzgsICAgICAgICAgIA0KICAgIFNJSURfTUVESUFCRFJFID0gMTM5LCAgICAgICAgIA0KICAg
IFNJSURfQ0xVU1RFUkVERFJJVkUgPSAxNDAsICAgIA0KICAgIA0KICAgIFNJSURfTUFYX0lDT05T
ID0gMTgxLA0KfSBTSFNUT0NLSUNPTklEOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU0hHZXRTdG9ja0ljb25JbmZvKFNIU1RPQ0tJQ09O
SUQgc2lpZCwgVUlOVCB1RmxhZ3MsICAgU0hTVE9DS0lDT05JTkZPICpwc2lpKTsNCg0KI2xpbmUg
MTQwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgU0hHZXREaXNrRnJlZVNwYWNlRXhBKCAg
TFBDU1RSIHBzekRpcmVjdG9yeU5hbWUsICAgVUxBUkdFX0lOVEVHRVIqIHB1bEZyZWVCeXRlc0F2
YWlsYWJsZVRvQ2FsbGVyLA0KICAgICAgVUxBUkdFX0lOVEVHRVIqIHB1bFRvdGFsTnVtYmVyT2ZC
eXRlcywgICBVTEFSR0VfSU5URUdFUiogcHVsVG90YWxOdW1iZXJPZkZyZWVCeXRlcyk7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBTSEdldERpc2tGcmVl
U3BhY2VFeFcoICBMUENXU1RSIHBzekRpcmVjdG9yeU5hbWUsICAgVUxBUkdFX0lOVEVHRVIqIHB1
bEZyZWVCeXRlc0F2YWlsYWJsZVRvQ2FsbGVyLA0KICAgICAgVUxBUkdFX0lOVEVHRVIqIHB1bFRv
dGFsTnVtYmVyT2ZCeXRlcywgICBVTEFSR0VfSU5URUdFUiogcHVsVG90YWxOdW1iZXJPZkZyZWVC
eXRlcyk7DQoNCg0KDQoNCiNsaW5lIDE0MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KIA0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgU0hHZXROZXdM
aW5rSW5mb0EoICBMUENTVFIgcHN6TGlua1RvLCAgIExQQ1NUUiBwc3pEaXIsICAgTFBTVFIgcHN6
TmFtZSwgICBCT09MICpwZk11c3RDb3B5LCAgIFVJTlQgdUZsYWdzKTsNCiANCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIFNIR2V0TmV3TGlua0luZm9XKCAg
TFBDV1NUUiBwc3pMaW5rVG8sICAgTFBDV1NUUiBwc3pEaXIsICAgTFBXU1RSIHBzek5hbWUsICAg
Qk9PTCAqcGZNdXN0Q29weSwgICBVSU5UIHVGbGFncyk7DQoNCg0KDQoNCiNsaW5lIDE0MzIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDQwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcc2hlbGxhcGkuaCINCg0KDQojbGluZSAxNDQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGku
aCINCiNsaW5lIDE0NDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRj
YWxsIFNISW52b2tlUHJpbnRlckNvbW1hbmRBKCAgSFdORCBod25kLCBVSU5UIHVBY3Rpb24sICAg
TFBDU1RSIGxwQnVmMSwgICBMUENTVFIgbHBCdWYyLCBCT09MIGZNb2RhbCk7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBTSEludm9rZVByaW50ZXJDb21t
YW5kVyggIEhXTkQgaHduZCwgVUlOVCB1QWN0aW9uLCAgIExQQ1dTVFIgbHBCdWYxLCAgIExQQ1dT
VFIgbHBCdWYyLCBCT09MIGZNb2RhbCk7DQoNCg0KDQoNCiNsaW5lIDE0NjUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxzaGVsbGFwaS5oIg0KI2xpbmUgMTQ2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgX09QRU5fUFJJTlRFUl9QUk9QU19JTkZPQQ0Kew0KICAgIERXT1JEICAg
ICAgIGR3U2l6ZTsNCiAgICBMUFNUUiAgICAgICBwc3pTaGVldE5hbWU7DQogICAgVUlOVCAgICAg
ICAgdVNoZWV0SW5kZXg7DQogICAgRFdPUkQgICAgICAgZHdGbGFnczsNCiAgICBCT09MICAgICAg
ICBiTW9kYWw7DQp9IE9QRU5fUFJJTlRFUl9QUk9QU19JTkZPQSwgKlBPUEVOX1BSSU5URVJfUFJP
UFNfSU5GT0E7DQp0eXBlZGVmIHN0cnVjdCBfT1BFTl9QUklOVEVSX1BST1BTX0lORk9XDQp7DQog
ICAgRFdPUkQgICAgICAgZHdTaXplOw0KICAgIExQV1NUUiAgICAgIHBzelNoZWV0TmFtZTsNCiAg
ICBVSU5UICAgICAgICB1U2hlZXRJbmRleDsNCiAgICBEV09SRCAgICAgICBkd0ZsYWdzOw0KICAg
IEJPT0wgICAgICAgIGJNb2RhbDsNCn0gT1BFTl9QUklOVEVSX1BST1BTX0lORk9XLCAqUE9QRU5f
UFJJTlRFUl9QUk9QU19JTkZPVzsNCg0KdHlwZWRlZiBPUEVOX1BSSU5URVJfUFJPUFNfSU5GT1cg
T1BFTl9QUklOVEVSX1BST1BTX0lORk87DQp0eXBlZGVmIFBPUEVOX1BSSU5URVJfUFJPUFNfSU5G
T1cgUE9QRU5fUFJJTlRFUl9QUk9QU19JTkZPOw0KDQoNCg0KI2xpbmUgMTQ5MSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHNoZWxsYXBpLmgiDQoNCiNsaW5lIDE0OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0K
DQoNCiNsaW5lIDE0OTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBf
X3N0ZGNhbGwgU0hMb2FkTm9ubG9hZGVkSWNvbk92ZXJsYXlJZGVudGlmaWVycyh2b2lkKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTSElzRmlsZUF2YWlsYWJsZU9mZmxpbmUo
ICBQQ1dTVFIgcHdzelBhdGgsICAgRFdPUkQgKnBkd1N0YXR1cyk7DQoNCg0KDQoNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQojbGluZSAxNTQxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hl
bGxhcGkuaCINCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgU0hTZXRMb2NhbGl6ZWROYW1lKCAgUENXU1RSIHBzelBhdGgsICAgUENXU1RS
IHBzelJlc01vZHVsZSwgaW50IGlkc1Jlcyk7DQojbGluZSAxNTQ3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hl
bGxhcGkuaCINCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFNIUmVtb3ZlTG9jYWxpemVkTmFtZSggIFBDV1NUUiBwc3pQYXRoKTsNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU0hHZXRMb2Nh
bGl6ZWROYW1lKCAgUENXU1RSIHBzelBhdGgsICAgUFdTVFIgcHN6UmVzTW9kdWxlLCBVSU5UIGNj
aCwgICBpbnQgKnBpZHNSZXMpOw0KI2xpbmUgMTU1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDE1ODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBTaGVsbE1lc3NhZ2VCb3hBKA0KICAgICAgSElOU1RBTkNF
IGhBcHBJbnN0LA0KICAgICAgSFdORCBoV25kLA0KICAgICAgTFBDU1RSIGxwY1RleHQsDQogICAg
ICBMUENTVFIgbHBjVGl0bGUsDQogICAgICBVSU5UIGZ1U3R5bGUsIC4uLik7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBTaGVsbE1lc3NhZ2VCb3hXKA0KICAg
ICAgSElOU1RBTkNFIGhBcHBJbnN0LA0KICAgICAgSFdORCBoV25kLA0KICAgICAgTFBDV1NUUiBs
cGNUZXh0LA0KICAgICAgTFBDV1NUUiBscGNUaXRsZSwNCiAgICAgIFVJTlQgZnVTdHlsZSwgLi4u
KTsNCg0KDQoNCg0KI2xpbmUgMTU5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgSXNMRk5Ecml2ZUEo
ICBMUENTVFIgcHN6UGF0aCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09M
IF9fc3RkY2FsbCBJc0xGTkRyaXZlVyggIExQQ1dTVFIgcHN6UGF0aCk7DQoNCg0KDQoNCiNsaW5l
IDE2MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KI2xpbmUgMTYwOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHNoZWxsYXBpLmgiDQoNCg0KDQoNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgU0hFbnVt
ZXJhdGVVbnJlYWRNYWlsQWNjb3VudHNBKCAgSEtFWSBoS2V5VXNlciwgRFdPUkQgZHdJbmRleCwg
ICBMUFNUUiBwc3pNYWlsQWRkcmVzcywgaW50IGNjaE1haWxBZGRyZXNzKTsNCmV4dGVybiAiQyIg
SFJFU1VMVCBfX3N0ZGNhbGwgU0hFbnVtZXJhdGVVbnJlYWRNYWlsQWNjb3VudHNXKCAgSEtFWSBo
S2V5VXNlciwgRFdPUkQgZHdJbmRleCwgICBMUFdTVFIgcHN6TWFpbEFkZHJlc3MsIGludCBjY2hN
YWlsQWRkcmVzcyk7DQoNCg0KDQoNCiNsaW5lIDE2MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5o
Ig0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBTSEdldFVucmVhZE1haWxDb3VudEEoICBI
S0VZIGhLZXlVc2VyLCAgIExQQ1NUUiBwc3pNYWlsQWRkcmVzcywgICBEV09SRCAqcGR3Q291bnQs
ICAgRklMRVRJTUUgKnBGaWxlVGltZSwgICBMUFNUUiBwc3pTaGVsbEV4ZWN1dGVDb21tYW5kLCBp
bnQgY2NoU2hlbGxFeGVjdXRlQ29tbWFuZCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxs
IFNIR2V0VW5yZWFkTWFpbENvdW50VyggIEhLRVkgaEtleVVzZXIsICAgTFBDV1NUUiBwc3pNYWls
QWRkcmVzcywgICBEV09SRCAqcGR3Q291bnQsICAgRklMRVRJTUUgKnBGaWxlVGltZSwgICBMUFdT
VFIgcHN6U2hlbGxFeGVjdXRlQ29tbWFuZCwgaW50IGNjaFNoZWxsRXhlY3V0ZUNvbW1hbmQpOw0K
DQoNCg0KDQojbGluZSAxNjI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCmV4dGVybiAiQyIg
SFJFU1VMVCBfX3N0ZGNhbGwgU0hTZXRVbnJlYWRNYWlsQ291bnRBKCAgTFBDU1RSIHBzek1haWxB
ZGRyZXNzLCBEV09SRCBkd0NvdW50LCAgIExQQ1NUUiBwc3pTaGVsbEV4ZWN1dGVDb21tYW5kKTsN
CmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgU0hTZXRVbnJlYWRNYWlsQ291bnRXKCAgTFBD
V1NUUiBwc3pNYWlsQWRkcmVzcywgRFdPUkQgZHdDb3VudCwgICBMUENXU1RSIHBzelNoZWxsRXhl
Y3V0ZUNvbW1hbmQpOw0KDQoNCg0KDQojbGluZSAxNjMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGku
aCINCg0KI2xpbmUgMTYzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KZXh0ZXJuICJD
IiBCT09MIF9fc3RkY2FsbCAgIFNIVGVzdFRva2VuTWVtYmVyc2hpcCggIEhBTkRMRSBoVG9rZW4s
IFVMT05HIHVsUklEKTsNCiNsaW5lIDE2MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBT
SEdldEltYWdlTGlzdCggIGludCBpSW1hZ2VMaXN0LCAgIGNvbnN0IElJRCAmIHJpaWQsICB2b2lk
ICoqcHB2T2JqKTsNCiNsaW5lIDE2NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNjU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCIN
Cg0KDQojbGluZSAxNjYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQoNCnR5cGVkZWYg
SFJFU1VMVCAoX19zdGRjYWxsICpQRk5DQU5TSEFSRUZPTERFUlcpKCAgUENXU1RSIHBzelBhdGgp
Ow0KdHlwZWRlZiBIUkVTVUxUIChfX3N0ZGNhbGwgKlBGTlNIT1dTSEFSRUZPTERFUlVJVykoICBI
V05EIGh3bmRQYXJlbnQsICAgUENXU1RSIHBzelBhdGgpOw0KDQojbGluZSAxNjY5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcc2hlbGxhcGkuaCINCg0KDQojbGluZSAxNjcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgMTY3NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNo
ZWxsYXBpLmgiDQoNCg0KDQojbGluZSAxNjgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9fc3RkY2FsbCBJbml0TmV0d29ya0FkZHJlc3ND
b250cm9sKHZvaWQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
TkNfQUREUkVTUw0Kew0KICAgc3RydWN0IE5FVF9BRERSRVNTX0lORk9fICpwQWRkckluZm87IA0K
ICAgVVNIT1JUICBQb3J0TnVtYmVyOw0KICAgQllURSAgICBQcmVmaXhMZW5ndGg7DQp9IE5DX0FE
RFJFU1MsICpQTkNfQUREUkVTUzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxNzI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGkuaCINCg0KDQoNCg0KZXh0ZXJuICJDIiBI
UkVTVUxUIF9fc3RkY2FsbCBTSEdldERyaXZlTWVkaWEoICBQQ1dTVFIgcHN6RHJpdmUsICAgRFdP
UkQgKnBkd01lZGlhQ29udGVudCk7DQojbGluZSAxNzM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2hlbGxhcGku
aCINCg0KDQoNCiNsaW5lIDE3MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KDQoNCiNsaW5l
IDE3NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xp
bmUgMTc0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNoZWxsYXBpLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkNCiNsaW5lIDE3NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzaGVsbGFwaS5oIg0KI2xpbmUgMjAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luZG93cy5oIg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucGVyZi5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgNDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5wZXJmLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTo0ODIwKSANCiNsaW5lIDQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucGVyZi5oIg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNo
cGFjazguaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socHVzaCw4KQ0KDQoN
CiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4LmgiDQoNCg0KI2xpbmUgMzMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCINCiNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBz
aHBhY2s4LmgiDQojbGluZSA1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnBlcmYuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUEVSRl9EQVRBX0JMT0NLIHsN
CiAgICBXQ0hBUiAgICAgICAgICAgU2lnbmF0dXJlWzRdOyAgICAgICANCiAgICBEV09SRCAgICAg
ICAgICAgTGl0dGxlRW5kaWFuOyAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgVmVyc2lvbjsg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg
ICBEV09SRCAgICAgICAgICAgUmV2aXNpb247ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgVG90YWxCeXRlTGVu
Z3RoOyAgICANCiAgICBEV09SRCAgICAgICAgICAgSGVhZGVyTGVuZ3RoOyAgICAgICANCiAgICBE
V09SRCAgICAgICAgICAgTnVtT2JqZWN0VHlwZXM7ICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICBMT05HICAgICAgICAgICAgRGVmYXVsdE9iamVjdDsg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCiAgICBTWVNURU1USU1FICAgICAgU3lzdGVtVGltZTsgICAgICAgICANCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBMQVJHRV9JTlRFR0VSICAgUGVyZlRp
bWU7ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICBMQVJHRV9JTlRFR0VSICAgUGVyZkZyZXE7ICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBMQVJHRV9JTlRFR0VSICAgUGVyZlRpbWUx
MDBuU2VjOyAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg
ICBEV09SRCAgICAgICAgICAgU3lzdGVtTmFtZUxlbmd0aDsgICANCiAgICBEV09SRCAgICAgICAg
ICAgU3lzdGVtTmFtZU9mZnNldDsgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCn0gUEVS
Rl9EQVRBX0JMT0NLLCAqUFBFUkZfREFUQV9CTE9DSzsNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IF9QRVJGX09CSkVDVF9UWVBFIHsNCiAgICBEV09SRCAgICAgICAgICAgVG90YWxC
eXRlTGVuZ3RoOyAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgRGVmaW5pdGlvbkxl
bmd0aDsgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgSGVhZGVyTGVuZ3RoOyAgICAg
ICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgT2JqZWN0TmFtZVRpdGxlSW5kZXg7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiAgICBEV09SRCAg
ICAgICAgICAgT2JqZWN0TmFtZVRpdGxlOyAgICANCg0KDQoNCg0KI2xpbmUgMTM2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2lucGVyZi5oIg0KICAgIERXT1JEICAgICAgICAgICBPYmplY3RIZWxwVGl0bGVJbmRl
eDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KICAgIERXT1JE
ICAgICAgICAgICBPYmplY3RIZWxwVGl0bGU7ICAgIA0KDQoNCg0KDQojbGluZSAxNDUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5wZXJmLmgiDQogICAgRFdPUkQgICAgICAgICAgIERldGFpbExldmVsOyAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIE51bUNvdW50ZXJzOyAgICAgICAg
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgTE9ORyAgICAgICAgICAgIERlZmF1bHRD
b3VudGVyOyAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgTE9ORyAgICAgICAgICAgIE51bUluc3RhbmNl
czsgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIENvZGVQYWdlOyAgICAgICAgICAg
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgTEFSR0VfSU5URUdFUiAgIFBlcmZUaW1l
OyAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgTEFSR0VfSU5URUdFUiAgIFBlcmZGcmVxOyAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQp9IFBFUkZfT0JKRUNUX1RZUEUsICpQUEVSRl9PQkpF
Q1RfVFlQRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBfUEVSRl9DT1VOVEVSX0RFRklOSVRJT04gew0KICAgIERXT1JEICAgICAgICAgICBC
eXRlTGVuZ3RoOyAgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBDb3VudGVyTmFtZVRpdGxl
SW5kZXg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiAgICBEV09SRCAgICAgICAgICAg
Q291bnRlck5hbWVUaXRsZTsNCg0KDQoNCg0KI2xpbmUgNTY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucGVy
Zi5oIg0KICAgIERXT1JEICAgICAgICAgICBDb3VudGVySGVscFRpdGxlSW5kZXg7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQoNCiAgICBEV09SRCAgICAgICAgICAgQ291bnRlckhlbHBUaXRs
ZTsNCg0KDQoNCg0KI2xpbmUgNTc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lucGVyZi5oIg0KICAgIExPTkcg
ICAgICAgICAgICBEZWZhdWx0U2NhbGU7ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IA0KICAgIERXT1JEICAgICAgICAgICBEZXRhaWxMZXZlbDsgICAgICAgIA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBDb3VudGVy
VHlwZTsgICAgICAgIA0KICAgIERXT1JEICAgICAgICAgICBDb3VudGVyU2l6ZTsgICAgICAgIA0K
ICAgIERXT1JEICAgICAgICAgICBDb3VudGVyT2Zmc2V0OyAgICAgIA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIA0KfSBQRVJGX0NPVU5URVJfREVGSU5JVElPTiwgKlBQRVJGX0NPVU5URVJfREVG
SU5JVElPTjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUEVS
Rl9JTlNUQU5DRV9ERUZJTklUSU9OIHsNCiAgICBEV09SRCAgICAgICAgICAgQnl0ZUxlbmd0aDsg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBE
V09SRCAgICAgICAgICAgUGFyZW50T2JqZWN0VGl0bGVJbmRleDsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgUGFyZW50T2JqZWN0SW5z
dGFuY2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgTE9ORyAgICAgICAgICAgIFVuaXF1ZUlEOyAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgICAgICAgICAgIE5hbWVP
ZmZzZXQ7ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgICAg
ICAgICAgIE5hbWVMZW5ndGg7ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgDQp9IFBFUkZfSU5TVEFOQ0VfREVGSU5JVElPTiwgKlBQRVJGX0lOU1RBTkNFX0RF
RklOSVRJT047DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9QRVJG
X0NPVU5URVJfQkxPQ0sgew0KICAgIERXT1JEICAgICAgICAgICBCeXRlTGVuZ3RoOyAgICAgICAg
IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KfSBQRVJGX0NPVU5U
RVJfQkxPQ0ssICpQUEVSRl9DT1VOVEVSX0JMT0NLOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQp0eXBlZGVmIERXT1JEIChfX3N0ZGNhbGwgUE1fT1BFTl9QUk9DKSAoICBMUFdTVFIp
Ow0KdHlwZWRlZiBEV09SRCAoX19zdGRjYWxsIFBNX0NPTExFQ1RfUFJPQykgKCAgTFBXU1RSIGxw
VmFsdWVOYW1lLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFZPSUQgKmxwcERhdGEsIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUERXT1JEIGxwY2JUb3RhbEJ5dGVz
LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBEV09SRCBs
cE51bU9iamVjdFR5cGVzKTsNCnR5cGVkZWYgRFdPUkQgKF9fc3RkY2FsbCBQTV9DTE9TRV9QUk9D
KSAodm9pZCk7DQp0eXBlZGVmIERXT1JEIChfX3N0ZGNhbGwgUE1fUVVFUllfUFJPQykgKExQRFdP
UkQsIExQVk9JRCAqLCBMUERXT1JELCBMUERXT1JEKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDY4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnBlcmYuaCINCg0KI2xpbmUg
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykN
Cg0KI3ByYWdtYSBwYWNrKHBvcCkNCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3Bw
YWNrLmgiDQoNCg0KI2xpbmUgMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUg
MzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgNjkwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2lucGVyZi5oIg0KDQojbGluZSA2OTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5wZXJmLmgiDQojcHJhZ21h
IGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSA2OTcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5wZXJmLmgiDQoNCiNsaW5lIDY5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnBlcmYuaCINCiNs
aW5lIDIwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zb2NrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgi
DQojbGluZSAyMDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOjQwMDEpIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkgDQojcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5o
Ig0KI2xpbmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHB1c2gsOCkNCg0KDQojbGlu
ZSAzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KDQoNCiNsaW5lIDMzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHBzaHBhY2s4LmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNr
OC5oIg0KI2xpbmUgNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCiNsaW5lIDYwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxccHJzaHQuaCINCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDY0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxccHJzaHQuaCINCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KI2xp
bmUgODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KI2xpbmUgODUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNo
dC5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KI2xpbmUg
OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0Kc3RydWN0IF9QU1A7DQp0eXBlZGVmIHN0
cnVjdCBfUFNQICogSFBST1BTSEVFVFBBR0U7DQoNCg0Kc3RydWN0IF9QUk9QU0hFRVRQQUdFQTsN
CnN0cnVjdCBfUFJPUFNIRUVUUEFHRVc7DQojbGluZSAxMDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5o
Ig0KDQp0eXBlZGVmIFVJTlQgKF9fc3RkY2FsbCAqTFBGTlBTUENBTExCQUNLQSkoSFdORCBod25k
LCBVSU5UIHVNc2csIHN0cnVjdCBfUFJPUFNIRUVUUEFHRUEgKnBwc3ApOw0KdHlwZWRlZiBVSU5U
IChfX3N0ZGNhbGwgKkxQRk5QU1BDQUxMQkFDS1cpKEhXTkQgaHduZCwgVUlOVCB1TXNnLCBzdHJ1
Y3QgX1BST1BTSEVFVFBBR0VXICpwcHNwKTsNCg0KDQoNCg0KDQojbGluZSAxMTIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDEzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgTFBD
RExHVEVNUExBVEUgUFJPUFNIRUVUUEFHRV9SRVNPVVJDRTsNCg0KDQojbGluZSAxNDQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDE5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCnR5cGVkZWYgc3RydWN0IF9Q
Uk9QU0hFRVRQQUdFQV9WMQ0Kew0KICAgIERXT1JEIGR3U2l6ZTsgRFdPUkQgZHdGbGFnczsgSElO
U1RBTkNFIGhJbnN0YW5jZTsgdW5pb24geyBMUENTVFIgcHN6VGVtcGxhdGU7IFBST1BTSEVFVFBB
R0VfUkVTT1VSQ0UgcFJlc291cmNlOyB9IDsgdW5pb24geyBISUNPTiBoSWNvbjsgTFBDU1RSIHBz
ekljb247IH0gOyBMUENTVFIgcHN6VGl0bGU7IERMR1BST0MgcGZuRGxnUHJvYzsgTFBBUkFNIGxQ
YXJhbTsgTFBGTlBTUENBTExCQUNLQSBwZm5DYWxsYmFjazsgVUlOVCAqcGNSZWZQYXJlbnQ7DQp9
IFBST1BTSEVFVFBBR0VBX1YxLCAqTFBQUk9QU0hFRVRQQUdFQV9WMTsNCnR5cGVkZWYgY29uc3Qg
UFJPUFNIRUVUUEFHRUFfVjEgKkxQQ1BST1BTSEVFVFBBR0VBX1YxOw0KDQp0eXBlZGVmIHN0cnVj
dCBfUFJPUFNIRUVUUEFHRUFfVjINCnsNCiAgICBEV09SRCBkd1NpemU7IERXT1JEIGR3RmxhZ3M7
IEhJTlNUQU5DRSBoSW5zdGFuY2U7IHVuaW9uIHsgTFBDU1RSIHBzelRlbXBsYXRlOyBQUk9QU0hF
RVRQQUdFX1JFU09VUkNFIHBSZXNvdXJjZTsgfSA7IHVuaW9uIHsgSElDT04gaEljb247IExQQ1NU
UiBwc3pJY29uOyB9IDsgTFBDU1RSIHBzelRpdGxlOyBETEdQUk9DIHBmbkRsZ1Byb2M7IExQQVJB
TSBsUGFyYW07IExQRk5QU1BDQUxMQkFDS0EgcGZuQ2FsbGJhY2s7IFVJTlQgKnBjUmVmUGFyZW50
Ow0KDQogICAgTFBDU1RSICAgICAgICAgICBwc3pIZWFkZXJUaXRsZTsgICAgDQogICAgTFBDU1RS
ICAgICAgICAgICBwc3pIZWFkZXJTdWJUaXRsZTsgDQp9IFBST1BTSEVFVFBBR0VBX1YyLCAqTFBQ
Uk9QU0hFRVRQQUdFQV9WMjsNCnR5cGVkZWYgY29uc3QgUFJPUFNIRUVUUEFHRUFfVjIgKkxQQ1BS
T1BTSEVFVFBBR0VBX1YyOw0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPUFNIRUVUUEFHRUFfVjMNCnsN
CiAgICBEV09SRCBkd1NpemU7IERXT1JEIGR3RmxhZ3M7IEhJTlNUQU5DRSBoSW5zdGFuY2U7IHVu
aW9uIHsgTFBDU1RSIHBzelRlbXBsYXRlOyBQUk9QU0hFRVRQQUdFX1JFU09VUkNFIHBSZXNvdXJj
ZTsgfSA7IHVuaW9uIHsgSElDT04gaEljb247IExQQ1NUUiBwc3pJY29uOyB9IDsgTFBDU1RSIHBz
elRpdGxlOyBETEdQUk9DIHBmbkRsZ1Byb2M7IExQQVJBTSBsUGFyYW07IExQRk5QU1BDQUxMQkFD
S0EgcGZuQ2FsbGJhY2s7IFVJTlQgKnBjUmVmUGFyZW50Ow0KDQogICAgTFBDU1RSICAgICAgICAg
ICBwc3pIZWFkZXJUaXRsZTsgICAgDQogICAgTFBDU1RSICAgICAgICAgICBwc3pIZWFkZXJTdWJU
aXRsZTsgDQoNCiAgICBIQU5ETEUgICAgICAgICAgIGhBY3RDdHg7DQp9IFBST1BTSEVFVFBBR0VB
X1YzLCAqTFBQUk9QU0hFRVRQQUdFQV9WMzsNCnR5cGVkZWYgY29uc3QgUFJPUFNIRUVUUEFHRUFf
VjMgKkxQQ1BST1BTSEVFVFBBR0VBX1YzOw0KDQoNCnR5cGVkZWYgc3RydWN0IF9QUk9QU0hFRVRQ
QUdFQQ0Kew0KICAgIERXT1JEIGR3U2l6ZTsgRFdPUkQgZHdGbGFnczsgSElOU1RBTkNFIGhJbnN0
YW5jZTsgdW5pb24geyBMUENTVFIgcHN6VGVtcGxhdGU7IFBST1BTSEVFVFBBR0VfUkVTT1VSQ0Ug
cFJlc291cmNlOyB9IDsgdW5pb24geyBISUNPTiBoSWNvbjsgTFBDU1RSIHBzekljb247IH0gOyBM
UENTVFIgcHN6VGl0bGU7IERMR1BST0MgcGZuRGxnUHJvYzsgTFBBUkFNIGxQYXJhbTsgTFBGTlBT
UENBTExCQUNLQSBwZm5DYWxsYmFjazsgVUlOVCAqcGNSZWZQYXJlbnQ7DQoNCiAgICBMUENTVFIg
ICAgICAgICAgIHBzekhlYWRlclRpdGxlOyAgICANCiAgICBMUENTVFIgICAgICAgICAgIHBzekhl
YWRlclN1YlRpdGxlOyANCg0KICAgIEhBTkRMRSAgICAgICAgICAgaEFjdEN0eDsNCg0KICAgIHVu
aW9uIA0KICAgIHsNCiAgICAgICAgSEJJVE1BUCAgICAgaGJtSGVhZGVyOw0KICAgICAgICBMUENT
VFIgICAgICBwc3pibUhlYWRlcjsNCiAgICB9IDsNCg0KfSBQUk9QU0hFRVRQQUdFQV9WNCwgKkxQ
UFJPUFNIRUVUUEFHRUFfVjQ7DQp0eXBlZGVmIGNvbnN0IFBST1BTSEVFVFBBR0VBX1Y0ICpMUENQ
Uk9QU0hFRVRQQUdFQV9WNDsNCiNsaW5lIDI0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCnR5
cGVkZWYgc3RydWN0IF9QUk9QU0hFRVRQQUdFV19WMQ0Kew0KICAgIERXT1JEIGR3U2l6ZTsgRFdP
UkQgZHdGbGFnczsgSElOU1RBTkNFIGhJbnN0YW5jZTsgdW5pb24geyBMUENXU1RSIHBzelRlbXBs
YXRlOyBQUk9QU0hFRVRQQUdFX1JFU09VUkNFIHBSZXNvdXJjZTsgfSA7IHVuaW9uIHsgSElDT04g
aEljb247IExQQ1dTVFIgcHN6SWNvbjsgfSA7IExQQ1dTVFIgcHN6VGl0bGU7IERMR1BST0MgcGZu
RGxnUHJvYzsgTFBBUkFNIGxQYXJhbTsgTFBGTlBTUENBTExCQUNLVyBwZm5DYWxsYmFjazsgVUlO
VCAqcGNSZWZQYXJlbnQ7DQp9IFBST1BTSEVFVFBBR0VXX1YxLCAqTFBQUk9QU0hFRVRQQUdFV19W
MTsNCnR5cGVkZWYgY29uc3QgUFJPUFNIRUVUUEFHRVdfVjEgKkxQQ1BST1BTSEVFVFBBR0VXX1Yx
Ow0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPUFNIRUVUUEFHRVdfVjINCnsNCiAgICBEV09SRCBkd1Np
emU7IERXT1JEIGR3RmxhZ3M7IEhJTlNUQU5DRSBoSW5zdGFuY2U7IHVuaW9uIHsgTFBDV1NUUiBw
c3pUZW1wbGF0ZTsgUFJPUFNIRUVUUEFHRV9SRVNPVVJDRSBwUmVzb3VyY2U7IH0gOyB1bmlvbiB7
IEhJQ09OIGhJY29uOyBMUENXU1RSIHBzekljb247IH0gOyBMUENXU1RSIHBzelRpdGxlOyBETEdQ
Uk9DIHBmbkRsZ1Byb2M7IExQQVJBTSBsUGFyYW07IExQRk5QU1BDQUxMQkFDS1cgcGZuQ2FsbGJh
Y2s7IFVJTlQgKnBjUmVmUGFyZW50Ow0KDQogICAgTFBDV1NUUiAgICAgICAgICAgcHN6SGVhZGVy
VGl0bGU7ICAgIA0KICAgIExQQ1dTVFIgICAgICAgICAgIHBzekhlYWRlclN1YlRpdGxlOyANCn0g
UFJPUFNIRUVUUEFHRVdfVjIsICpMUFBST1BTSEVFVFBBR0VXX1YyOw0KdHlwZWRlZiBjb25zdCBQ
Uk9QU0hFRVRQQUdFV19WMiAqTFBDUFJPUFNIRUVUUEFHRVdfVjI7DQoNCnR5cGVkZWYgc3RydWN0
IF9QUk9QU0hFRVRQQUdFV19WMw0Kew0KICAgIERXT1JEIGR3U2l6ZTsgRFdPUkQgZHdGbGFnczsg
SElOU1RBTkNFIGhJbnN0YW5jZTsgdW5pb24geyBMUENXU1RSIHBzelRlbXBsYXRlOyBQUk9QU0hF
RVRQQUdFX1JFU09VUkNFIHBSZXNvdXJjZTsgfSA7IHVuaW9uIHsgSElDT04gaEljb247IExQQ1dT
VFIgcHN6SWNvbjsgfSA7IExQQ1dTVFIgcHN6VGl0bGU7IERMR1BST0MgcGZuRGxnUHJvYzsgTFBB
UkFNIGxQYXJhbTsgTFBGTlBTUENBTExCQUNLVyBwZm5DYWxsYmFjazsgVUlOVCAqcGNSZWZQYXJl
bnQ7DQoNCiAgICBMUENXU1RSICAgICAgICAgICBwc3pIZWFkZXJUaXRsZTsgICAgDQogICAgTFBD
V1NUUiAgICAgICAgICAgcHN6SGVhZGVyU3ViVGl0bGU7IA0KDQogICAgSEFORExFICAgICAgICAg
ICBoQWN0Q3R4Ow0KfSBQUk9QU0hFRVRQQUdFV19WMywgKkxQUFJPUFNIRUVUUEFHRVdfVjM7DQp0
eXBlZGVmIGNvbnN0IFBST1BTSEVFVFBBR0VXX1YzICpMUENQUk9QU0hFRVRQQUdFV19WMzsNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfUFJPUFNIRUVUUEFHRVcNCnsNCiAgICBEV09SRCBkd1NpemU7IERX
T1JEIGR3RmxhZ3M7IEhJTlNUQU5DRSBoSW5zdGFuY2U7IHVuaW9uIHsgTFBDV1NUUiBwc3pUZW1w
bGF0ZTsgUFJPUFNIRUVUUEFHRV9SRVNPVVJDRSBwUmVzb3VyY2U7IH0gOyB1bmlvbiB7IEhJQ09O
IGhJY29uOyBMUENXU1RSIHBzekljb247IH0gOyBMUENXU1RSIHBzelRpdGxlOyBETEdQUk9DIHBm
bkRsZ1Byb2M7IExQQVJBTSBsUGFyYW07IExQRk5QU1BDQUxMQkFDS1cgcGZuQ2FsbGJhY2s7IFVJ
TlQgKnBjUmVmUGFyZW50Ow0KDQogICAgTFBDV1NUUiAgICAgICAgICAgcHN6SGVhZGVyVGl0bGU7
ICAgIA0KICAgIExQQ1dTVFIgICAgICAgICAgIHBzekhlYWRlclN1YlRpdGxlOyANCg0KICAgIEhB
TkRMRSAgICAgICAgICAgIGhBY3RDdHg7DQoNCiAgICB1bmlvbiANCiAgICB7DQogICAgICAgIEhC
SVRNQVAgICAgIGhibUhlYWRlcjsNCiAgICAgICAgTFBDV1NUUiAgICAgcHN6Ym1IZWFkZXI7DQog
ICAgfSA7DQoNCn0gUFJPUFNIRUVUUEFHRVdfVjQsICpMUFBST1BTSEVFVFBBR0VXX1Y0Ow0KdHlw
ZWRlZiBjb25zdCBQUk9QU0hFRVRQQUdFV19WNCAqTFBDUFJPUFNIRUVUUEFHRVdfVjQ7DQojbGlu
ZSAyODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAzMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KdHlwZWRlZiAgICBQUk9QU0hF
RVRQQUdFQV9WNCAgICBQUk9QU0hFRVRQQUdFQV9MQVRFU1Q7DQp0eXBlZGVmICAgIFBST1BTSEVF
VFBBR0VXX1Y0ICAgIFBST1BTSEVFVFBBR0VXX0xBVEVTVDsNCnR5cGVkZWYgIExQUFJPUFNIRUVU
UEFHRUFfVjQgIExQUFJPUFNIRUVUUEFHRUFfTEFURVNUOw0KdHlwZWRlZiAgTFBQUk9QU0hFRVRQ
QUdFV19WNCAgTFBQUk9QU0hFRVRQQUdFV19MQVRFU1Q7DQp0eXBlZGVmIExQQ1BST1BTSEVFVFBB
R0VBX1Y0IExQQ1BST1BTSEVFVFBBR0VBX0xBVEVTVDsNCnR5cGVkZWYgTFBDUFJPUFNIRUVUUEFH
RVdfVjQgTFBDUFJPUFNIRUVUUEFHRVdfTEFURVNUOw0KDQoNCg0KDQoNCg0KDQojbGluZSAzMTgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KdHlwZWRlZiAgICBQUk9QU0hFRVRQQUdFQV9W
NCAgICBQUk9QU0hFRVRQQUdFQTsNCnR5cGVkZWYgICAgUFJPUFNIRUVUUEFHRVdfVjQgICAgUFJP
UFNIRUVUUEFHRVc7DQp0eXBlZGVmICBMUFBST1BTSEVFVFBBR0VBX1Y0ICBMUFBST1BTSEVFVFBB
R0VBOw0KdHlwZWRlZiAgTFBQUk9QU0hFRVRQQUdFV19WNCAgTFBQUk9QU0hFRVRQQUdFVzsNCnR5
cGVkZWYgTFBDUFJPUFNIRUVUUEFHRUFfVjQgTFBDUFJPUFNIRUVUUEFHRUE7DQp0eXBlZGVmIExQ
Q1BST1BTSEVFVFBBR0VXX1Y0IExQQ1BST1BTSEVFVFBBR0VXOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDM0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzYzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAzOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5o
Ig0KDQojbGluZSA0MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ0MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0
LmgiDQoNCg0KDQp0eXBlZGVmIGludCAoX19zdGRjYWxsICpQRk5QUk9QU0hFRVRDQUxMQkFDSyko
SFdORCwgVUlOVCwgTFBBUkFNKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST1BTSEVFVEhFQURFUkFfVjENCnsNCiAg
ICBEV09SRCBkd1NpemU7IERXT1JEIGR3RmxhZ3M7IEhXTkQgaHduZFBhcmVudDsgSElOU1RBTkNF
IGhJbnN0YW5jZTsgdW5pb24geyBISUNPTiBoSWNvbjsgTFBDU1RSIHBzekljb247IH0gOyBMUENT
VFIgcHN6Q2FwdGlvbjsgVUlOVCBuUGFnZXM7IHVuaW9uIHsgVUlOVCBuU3RhcnRQYWdlOyBMUENT
VFIgcFN0YXJ0UGFnZTsgfSA7IHVuaW9uIHsgTFBDUFJPUFNIRUVUUEFHRUEgcHBzcDsgSFBST1BT
SEVFVFBBR0UgKnBocGFnZTsgfSA7IFBGTlBST1BTSEVFVENBTExCQUNLIHBmbkNhbGxiYWNrOw0K
fSBQUk9QU0hFRVRIRUFERVJBX1YxLCAqTFBQUk9QU0hFRVRIRUFERVJBX1YxOw0KdHlwZWRlZiBj
b25zdCBQUk9QU0hFRVRIRUFERVJBX1YxICpMUENQUk9QU0hFRVRIRUFERVJBX1YxOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfUFJPUFNIRUVUSEVBREVSQV9WMg0Kew0KICAgIERXT1JEIGR3U2l6ZTsgRFdP
UkQgZHdGbGFnczsgSFdORCBod25kUGFyZW50OyBISU5TVEFOQ0UgaEluc3RhbmNlOyB1bmlvbiB7
IEhJQ09OIGhJY29uOyBMUENTVFIgcHN6SWNvbjsgfSA7IExQQ1NUUiBwc3pDYXB0aW9uOyBVSU5U
IG5QYWdlczsgdW5pb24geyBVSU5UIG5TdGFydFBhZ2U7IExQQ1NUUiBwU3RhcnRQYWdlOyB9IDsg
dW5pb24geyBMUENQUk9QU0hFRVRQQUdFQSBwcHNwOyBIUFJPUFNIRUVUUEFHRSAqcGhwYWdlOyB9
IDsgUEZOUFJPUFNIRUVUQ0FMTEJBQ0sgcGZuQ2FsbGJhY2s7DQogICAgdW5pb24gDQogICAgew0K
ICAgICAgICBIQklUTUFQIGhibVdhdGVybWFyazsNCiAgICAgICAgTFBDU1RSIHBzemJtV2F0ZXJt
YXJrOw0KICAgIH0gOw0KICAgIEhQQUxFVFRFIGhwbFdhdGVybWFyazsNCiAgICB1bmlvbiANCiAg
ICB7DQogICAgICAgIEhCSVRNQVAgaGJtSGVhZGVyOyAgICAgDQogICAgICAgIExQQ1NUUiBwc3pi
bUhlYWRlcjsNCiAgICB9IDsNCn0gUFJPUFNIRUVUSEVBREVSQV9WMiwgKkxQUFJPUFNIRUVUSEVB
REVSQV9WMjsNCnR5cGVkZWYgY29uc3QgUFJPUFNIRUVUSEVBREVSQV9WMiAqTFBDUFJPUFNIRUVU
SEVBREVSQV9WMjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BST1BTSEVFVEhFQURFUldfVjENCnsNCiAgICBEV09SRCBk
d1NpemU7IERXT1JEIGR3RmxhZ3M7IEhXTkQgaHduZFBhcmVudDsgSElOU1RBTkNFIGhJbnN0YW5j
ZTsgdW5pb24geyBISUNPTiBoSWNvbjsgTFBDV1NUUiBwc3pJY29uOyB9IDsgTFBDV1NUUiBwc3pD
YXB0aW9uOyBVSU5UIG5QYWdlczsgdW5pb24geyBVSU5UIG5TdGFydFBhZ2U7IExQQ1dTVFIgcFN0
YXJ0UGFnZTsgfSA7IHVuaW9uIHsgTFBDUFJPUFNIRUVUUEFHRVcgcHBzcDsgSFBST1BTSEVFVFBB
R0UgKnBocGFnZTsgfSA7IFBGTlBST1BTSEVFVENBTExCQUNLIHBmbkNhbGxiYWNrOw0KfSBQUk9Q
U0hFRVRIRUFERVJXX1YxLCAqTFBQUk9QU0hFRVRIRUFERVJXX1YxOw0KdHlwZWRlZiBjb25zdCBQ
Uk9QU0hFRVRIRUFERVJXX1YxICpMUENQUk9QU0hFRVRIRUFERVJXX1YxOw0KDQp0eXBlZGVmIHN0
cnVjdCBfUFJPUFNIRUVUSEVBREVSV19WMg0Kew0KICAgIERXT1JEIGR3U2l6ZTsgRFdPUkQgZHdG
bGFnczsgSFdORCBod25kUGFyZW50OyBISU5TVEFOQ0UgaEluc3RhbmNlOyB1bmlvbiB7IEhJQ09O
IGhJY29uOyBMUENXU1RSIHBzekljb247IH0gOyBMUENXU1RSIHBzekNhcHRpb247IFVJTlQgblBh
Z2VzOyB1bmlvbiB7IFVJTlQgblN0YXJ0UGFnZTsgTFBDV1NUUiBwU3RhcnRQYWdlOyB9IDsgdW5p
b24geyBMUENQUk9QU0hFRVRQQUdFVyBwcHNwOyBIUFJPUFNIRUVUUEFHRSAqcGhwYWdlOyB9IDsg
UEZOUFJPUFNIRUVUQ0FMTEJBQ0sgcGZuQ2FsbGJhY2s7DQogICAgdW5pb24gDQogICAgew0KICAg
ICAgICBIQklUTUFQIGhibVdhdGVybWFyazsNCiAgICAgICAgTFBDV1NUUiBwc3pibVdhdGVybWFy
azsNCiAgICB9IDsNCiAgICBIUEFMRVRURSBocGxXYXRlcm1hcms7DQogICAgdW5pb24gDQogICAg
ew0KICAgICAgICBIQklUTUFQIGhibUhlYWRlcjsgICAgIA0KICAgICAgICBMUENXU1RSIHBzemJt
SGVhZGVyOw0KICAgIH0gOw0KfSBQUk9QU0hFRVRIRUFERVJXX1YyLCAqTFBQUk9QU0hFRVRIRUFE
RVJXX1YyOw0KdHlwZWRlZiBjb25zdCBQUk9QU0hFRVRIRUFERVJXX1YyICpMUENQUk9QU0hFRVRI
RUFERVJXX1YyOw0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiAgICBQUk9QU0hFRVRIRUFERVJB
X1YyICAgICAgUFJPUFNIRUVUSEVBREVSQTsNCnR5cGVkZWYgICAgUFJPUFNIRUVUSEVBREVSV19W
MiAgICAgIFBST1BTSEVFVEhFQURFUlc7DQp0eXBlZGVmICBMUFBST1BTSEVFVEhFQURFUkFfVjIg
ICAgICBMUFBST1BTSEVFVEhFQURFUkE7DQp0eXBlZGVmICBMUFBST1BTSEVFVEhFQURFUldfVjIg
ICAgICBMUFBST1BTSEVFVEhFQURFUlc7DQp0eXBlZGVmIExQQ1BST1BTSEVFVEhFQURFUkFfVjIg
ICAgICBMUENQUk9QU0hFRVRIRUFERVJBOw0KdHlwZWRlZiBMUENQUk9QU0hFRVRIRUFERVJXX1Yy
ICAgICAgTFBDUFJPUFNIRUVUSEVBREVSVzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNTY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSA1ODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFBST1BTSEVFVFBBR0UgX19zdGRjYWxsIENyZWF0ZVByb3BlcnR5U2hlZXRQYWdlQShMUENQ
Uk9QU0hFRVRQQUdFQSBjb25zdFByb3BTaGVldFBhZ2VQb2ludGVyKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUFJPUFNIRUVUUEFHRSBfX3N0ZGNhbGwgQ3JlYXRlUHJvcGVydHlTaGVldFBhZ2VX
KExQQ1BST1BTSEVFVFBBR0VXIGNvbnN0UHJvcFNoZWV0UGFnZVBvaW50ZXIpOw0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEJPT0wgICAgICAgICAgIF9fc3RkY2FsbCBEZXN0cm95UHJvcGVydHlTaGVl
dFBhZ2UoSFBST1BTSEVFVFBBR0UpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgSU5UX1BUUiAg
ICAgICAgX19zdGRjYWxsIFByb3BlcnR5U2hlZXRBKExQQ1BST1BTSEVFVEhFQURFUkEpOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSU5UX1BUUiAgICAgICAgX19zdGRjYWxsIFByb3BlcnR5U2hl
ZXRXKExQQ1BST1BTSEVFVEhFQURFUlcpOw0KDQoNCg0KDQoNCg0KDQojbGluZSA2MDAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KdHlwZWRlZiBCT09MIChfX3N0ZGNhbGwgKkxQRk5BRERQ
Uk9QU0hFRVRQQUdFKShIUFJPUFNIRUVUUEFHRSwgTFBBUkFNKTsNCnR5cGVkZWYgQk9PTCAoX19z
dGRjYWxsICpMUEZOQUREUFJPUFNIRUVUUEFHRVMpKExQVk9JRCwgTFBGTkFERFBST1BTSEVFVFBB
R0UsIExQQVJBTSk7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BTSE5PVElGWQ0Kew0KICAgIE5NSERS
IGhkcjsNCiAgICBMUEFSQU0gbFBhcmFtOw0KfSBQU0hOT1RJRlksICpMUFBTSE5PVElGWTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjk1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxccHJzaHQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA3MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzQ3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxccHJzaHQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDc3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNzgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDc5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgODYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg4OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHBy
c2h0LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KI2xpbmUgODk2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccHJzaHQuaCINCiNsaW5lIDg5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCg0KfQ0K
I2xpbmUgOTAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwb3BwYWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNr
KHBvcCkNCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xp
bmUgMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccG9wcGFjay5oIg0KI2xpbmUgOTAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQuaCINCg0KDQoj
bGluZSA5MDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcnNodC5oIg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkNCiNsaW5lIDkxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCiNsaW5lIDI0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luc3Bvb2wuaCINCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0K
DQpleHRlcm4gIkMiIHsNCiNsaW5lIDI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoj
cHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MjApIA0KI2xp
bmUgMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1BSSU5URVJfSU5GT18xQSB7DQogICAgRFdP
UkQgICBGbGFnczsNCiAgICBMUFNUUiAgIHBEZXNjcmlwdGlvbjsNCiAgICBMUFNUUiAgIHBOYW1l
Ow0KICAgIExQU1RSICAgcENvbW1lbnQ7DQp9IFBSSU5URVJfSU5GT18xQSwgKlBQUklOVEVSX0lO
Rk9fMUEsICpMUFBSSU5URVJfSU5GT18xQTsNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9f
MVcgew0KICAgIERXT1JEICAgRmxhZ3M7DQogICAgTFBXU1RSICBwRGVzY3JpcHRpb247DQogICAg
TFBXU1RSICBwTmFtZTsNCiAgICBMUFdTVFIgIHBDb21tZW50Ow0KfSBQUklOVEVSX0lORk9fMVcs
ICpQUFJJTlRFUl9JTkZPXzFXLCAqTFBQUklOVEVSX0lORk9fMVc7DQoNCnR5cGVkZWYgUFJJTlRF
Ul9JTkZPXzFXIFBSSU5URVJfSU5GT18xOw0KdHlwZWRlZiBQUFJJTlRFUl9JTkZPXzFXIFBQUklO
VEVSX0lORk9fMTsNCnR5cGVkZWYgTFBQUklOVEVSX0lORk9fMVcgTFBQUklOVEVSX0lORk9fMTsN
Cg0KDQoNCg0KI2xpbmUgNjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0
cnVjdCBfUFJJTlRFUl9JTkZPXzJBIHsNCiAgICBMUFNUUiAgICAgcFNlcnZlck5hbWU7DQogICAg
TFBTVFIgICAgIHBQcmludGVyTmFtZTsNCiAgICBMUFNUUiAgICAgcFNoYXJlTmFtZTsNCiAgICBM
UFNUUiAgICAgcFBvcnROYW1lOw0KICAgIExQU1RSICAgICBwRHJpdmVyTmFtZTsNCiAgICBMUFNU
UiAgICAgcENvbW1lbnQ7DQogICAgTFBTVFIgICAgIHBMb2NhdGlvbjsNCiAgICBMUERFVk1PREVB
IHBEZXZNb2RlOw0KICAgIExQU1RSICAgICBwU2VwRmlsZTsNCiAgICBMUFNUUiAgICAgcFByaW50
UHJvY2Vzc29yOw0KICAgIExQU1RSICAgICBwRGF0YXR5cGU7DQogICAgTFBTVFIgICAgIHBQYXJh
bWV0ZXJzOw0KICAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3I7DQog
ICAgRFdPUkQgICBBdHRyaWJ1dGVzOw0KICAgIERXT1JEICAgUHJpb3JpdHk7DQogICAgRFdPUkQg
ICBEZWZhdWx0UHJpb3JpdHk7DQogICAgRFdPUkQgICBTdGFydFRpbWU7DQogICAgRFdPUkQgICBV
bnRpbFRpbWU7DQogICAgRFdPUkQgICBTdGF0dXM7DQogICAgRFdPUkQgICBjSm9iczsNCiAgICBE
V09SRCAgIEF2ZXJhZ2VQUE07DQp9IFBSSU5URVJfSU5GT18yQSwgKlBQUklOVEVSX0lORk9fMkEs
ICpMUFBSSU5URVJfSU5GT18yQTsNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fMlcgew0K
ICAgIExQV1NUUiAgICBwU2VydmVyTmFtZTsNCiAgICBMUFdTVFIgICAgcFByaW50ZXJOYW1lOw0K
ICAgIExQV1NUUiAgICBwU2hhcmVOYW1lOw0KICAgIExQV1NUUiAgICBwUG9ydE5hbWU7DQogICAg
TFBXU1RSICAgIHBEcml2ZXJOYW1lOw0KICAgIExQV1NUUiAgICBwQ29tbWVudDsNCiAgICBMUFdT
VFIgICAgcExvY2F0aW9uOw0KICAgIExQREVWTU9ERVcgcERldk1vZGU7DQogICAgTFBXU1RSICAg
IHBTZXBGaWxlOw0KICAgIExQV1NUUiAgICBwUHJpbnRQcm9jZXNzb3I7DQogICAgTFBXU1RSICAg
IHBEYXRhdHlwZTsNCiAgICBMUFdTVFIgICAgcFBhcmFtZXRlcnM7DQogICAgUFNFQ1VSSVRZX0RF
U0NSSVBUT1IgcFNlY3VyaXR5RGVzY3JpcHRvcjsNCiAgICBEV09SRCAgIEF0dHJpYnV0ZXM7DQog
ICAgRFdPUkQgICBQcmlvcml0eTsNCiAgICBEV09SRCAgIERlZmF1bHRQcmlvcml0eTsNCiAgICBE
V09SRCAgIFN0YXJ0VGltZTsNCiAgICBEV09SRCAgIFVudGlsVGltZTsNCiAgICBEV09SRCAgIFN0
YXR1czsNCiAgICBEV09SRCAgIGNKb2JzOw0KICAgIERXT1JEICAgQXZlcmFnZVBQTTsNCn0gUFJJ
TlRFUl9JTkZPXzJXLCAqUFBSSU5URVJfSU5GT18yVywgKkxQUFJJTlRFUl9JTkZPXzJXOw0KDQp0
eXBlZGVmIFBSSU5URVJfSU5GT18yVyBQUklOVEVSX0lORk9fMjsNCnR5cGVkZWYgUFBSSU5URVJf
SU5GT18yVyBQUFJJTlRFUl9JTkZPXzI7DQp0eXBlZGVmIExQUFJJTlRFUl9JTkZPXzJXIExQUFJJ
TlRFUl9JTkZPXzI7DQoNCg0KDQoNCiNsaW5lIDExNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgi
DQoNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fMyB7DQogICAgUFNFQ1VSSVRZX0RFU0NS
SVBUT1IgcFNlY3VyaXR5RGVzY3JpcHRvcjsNCn0gUFJJTlRFUl9JTkZPXzMsICpQUFJJTlRFUl9J
TkZPXzMsICpMUFBSSU5URVJfSU5GT18zOw0KDQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRFUl9JTkZP
XzRBIHsNCiAgICBMUFNUUiAgIHBQcmludGVyTmFtZTsNCiAgICBMUFNUUiAgIHBTZXJ2ZXJOYW1l
Ow0KICAgIERXT1JEICAgQXR0cmlidXRlczsNCn0gUFJJTlRFUl9JTkZPXzRBLCAqUFBSSU5URVJf
SU5GT180QSwgKkxQUFJJTlRFUl9JTkZPXzRBOw0KdHlwZWRlZiBzdHJ1Y3QgX1BSSU5URVJfSU5G
T180VyB7DQogICAgTFBXU1RSICBwUHJpbnRlck5hbWU7DQogICAgTFBXU1RSICBwU2VydmVyTmFt
ZTsNCiAgICBEV09SRCAgIEF0dHJpYnV0ZXM7DQp9IFBSSU5URVJfSU5GT180VywgKlBQUklOVEVS
X0lORk9fNFcsICpMUFBSSU5URVJfSU5GT180VzsNCg0KdHlwZWRlZiBQUklOVEVSX0lORk9fNFcg
UFJJTlRFUl9JTkZPXzQ7DQp0eXBlZGVmIFBQUklOVEVSX0lORk9fNFcgUFBSSU5URVJfSU5GT180
Ow0KdHlwZWRlZiBMUFBSSU5URVJfSU5GT180VyBMUFBSSU5URVJfSU5GT180Ow0KDQoNCg0KDQoj
bGluZSAxNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfUFJJ
TlRFUl9JTkZPXzVBIHsNCiAgICBMUFNUUiAgIHBQcmludGVyTmFtZTsNCiAgICBMUFNUUiAgIHBQ
b3J0TmFtZTsNCiAgICBEV09SRCAgIEF0dHJpYnV0ZXM7DQogICAgRFdPUkQgICBEZXZpY2VOb3RT
ZWxlY3RlZFRpbWVvdXQ7DQogICAgRFdPUkQgICBUcmFuc21pc3Npb25SZXRyeVRpbWVvdXQ7DQp9
IFBSSU5URVJfSU5GT181QSwgKlBQUklOVEVSX0lORk9fNUEsICpMUFBSSU5URVJfSU5GT181QTsN
CnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fNVcgew0KICAgIExQV1NUUiAgcFByaW50ZXJO
YW1lOw0KICAgIExQV1NUUiAgcFBvcnROYW1lOw0KICAgIERXT1JEICAgQXR0cmlidXRlczsNCiAg
ICBEV09SRCAgIERldmljZU5vdFNlbGVjdGVkVGltZW91dDsNCiAgICBEV09SRCAgIFRyYW5zbWlz
c2lvblJldHJ5VGltZW91dDsNCn0gUFJJTlRFUl9JTkZPXzVXLCAqUFBSSU5URVJfSU5GT181Vywg
KkxQUFJJTlRFUl9JTkZPXzVXOw0KDQp0eXBlZGVmIFBSSU5URVJfSU5GT181VyBQUklOVEVSX0lO
Rk9fNTsNCnR5cGVkZWYgUFBSSU5URVJfSU5GT181VyBQUFJJTlRFUl9JTkZPXzU7DQp0eXBlZGVm
IExQUFJJTlRFUl9JTkZPXzVXIExQUFJJTlRFUl9JTkZPXzU7DQoNCg0KDQoNCiNsaW5lIDE2NCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9f
NiB7DQogICAgRFdPUkQgICBkd1N0YXR1czsNCn0gUFJJTlRFUl9JTkZPXzYsICpQUFJJTlRFUl9J
TkZPXzYsICpMUFBSSU5URVJfSU5GT182Ow0KDQoNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lO
Rk9fN0Egew0KICBMUFNUUiAgICBwc3pPYmplY3RHVUlEOw0KICBEV09SRCAgICBkd0FjdGlvbjsN
Cn0gUFJJTlRFUl9JTkZPXzdBLCAqUFBSSU5URVJfSU5GT183QSwgKkxQUFJJTlRFUl9JTkZPXzdB
Ow0KdHlwZWRlZiBzdHJ1Y3QgX1BSSU5URVJfSU5GT183VyB7DQogIExQV1NUUiAgIHBzek9iamVj
dEdVSUQ7DQogIERXT1JEICAgIGR3QWN0aW9uOw0KfSBQUklOVEVSX0lORk9fN1csICpQUFJJTlRF
Ul9JTkZPXzdXLCAqTFBQUklOVEVSX0lORk9fN1c7DQoNCnR5cGVkZWYgUFJJTlRFUl9JTkZPXzdX
IFBSSU5URVJfSU5GT183Ow0KdHlwZWRlZiBQUFJJTlRFUl9JTkZPXzdXIFBQUklOVEVSX0lORk9f
NzsNCnR5cGVkZWYgTFBQUklOVEVSX0lORk9fN1cgTFBQUklOVEVSX0lORk9fNzsNCg0KDQoNCg0K
I2xpbmUgMTg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1BSSU5URVJfSU5GT184QSB7DQogICAgTFBERVZNT0RFQSBwRGV2TW9kZTsNCn0g
UFJJTlRFUl9JTkZPXzhBLCAqUFBSSU5URVJfSU5GT184QSwgKkxQUFJJTlRFUl9JTkZPXzhBOw0K
dHlwZWRlZiBzdHJ1Y3QgX1BSSU5URVJfSU5GT184VyB7DQogICAgTFBERVZNT0RFVyBwRGV2TW9k
ZTsNCn0gUFJJTlRFUl9JTkZPXzhXLCAqUFBSSU5URVJfSU5GT184VywgKkxQUFJJTlRFUl9JTkZP
XzhXOw0KDQp0eXBlZGVmIFBSSU5URVJfSU5GT184VyBQUklOVEVSX0lORk9fODsNCnR5cGVkZWYg
UFBSSU5URVJfSU5GT184VyBQUFJJTlRFUl9JTkZPXzg7DQp0eXBlZGVmIExQUFJJTlRFUl9JTkZP
XzhXIExQUFJJTlRFUl9JTkZPXzg7DQoNCg0KDQoNCiNsaW5lIDIwOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnNwb29sLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fOUEgew0KICAgIExQREVW
TU9ERUEgcERldk1vZGU7DQp9IFBSSU5URVJfSU5GT185QSwgKlBQUklOVEVSX0lORk9fOUEsICpM
UFBSSU5URVJfSU5GT185QTsNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0lORk9fOVcgew0KICAg
IExQREVWTU9ERVcgcERldk1vZGU7DQp9IFBSSU5URVJfSU5GT185VywgKlBQUklOVEVSX0lORk9f
OVcsICpMUFBSSU5URVJfSU5GT185VzsNCg0KdHlwZWRlZiBQUklOVEVSX0lORk9fOVcgUFJJTlRF
Ul9JTkZPXzk7DQp0eXBlZGVmIFBQUklOVEVSX0lORk9fOVcgUFBSSU5URVJfSU5GT185Ow0KdHlw
ZWRlZiBMUFBSSU5URVJfSU5GT185VyBMUFBSSU5URVJfSU5GT185Ow0KDQoNCg0KDQojbGluZSAy
MjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQojbGluZSAyNzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9v
bC5oIg0KDQoNCiAgICANCiNsaW5lIDI4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQoNCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
DQojbGluZSAzMDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMzI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX0pPQl9JTkZPXzFBIHsNCiAgIERXT1JEICAgIEpvYklkOw0K
ICAgTFBTVFIgICAgICBwUHJpbnRlck5hbWU7DQogICBMUFNUUiAgICAgIHBNYWNoaW5lTmFtZTsN
CiAgIExQU1RSICAgICAgcFVzZXJOYW1lOw0KICAgTFBTVFIgICAgICBwRG9jdW1lbnQ7DQogICBM
UFNUUiAgICAgIHBEYXRhdHlwZTsNCiAgIExQU1RSICAgICAgcFN0YXR1czsNCiAgIERXT1JEICAg
IFN0YXR1czsNCiAgIERXT1JEICAgIFByaW9yaXR5Ow0KICAgRFdPUkQgICAgUG9zaXRpb247DQog
ICBEV09SRCAgICBUb3RhbFBhZ2VzOw0KICAgRFdPUkQgICAgUGFnZXNQcmludGVkOw0KICAgU1lT
VEVNVElNRSBTdWJtaXR0ZWQ7DQp9IEpPQl9JTkZPXzFBLCAqUEpPQl9JTkZPXzFBLCAqTFBKT0Jf
SU5GT18xQTsNCnR5cGVkZWYgc3RydWN0IF9KT0JfSU5GT18xVyB7DQogICBEV09SRCAgICBKb2JJ
ZDsNCiAgIExQV1NUUiAgICAgcFByaW50ZXJOYW1lOw0KICAgTFBXU1RSICAgICBwTWFjaGluZU5h
bWU7DQogICBMUFdTVFIgICAgIHBVc2VyTmFtZTsNCiAgIExQV1NUUiAgICAgcERvY3VtZW50Ow0K
ICAgTFBXU1RSICAgICBwRGF0YXR5cGU7DQogICBMUFdTVFIgICAgIHBTdGF0dXM7DQogICBEV09S
RCAgICBTdGF0dXM7DQogICBEV09SRCAgICBQcmlvcml0eTsNCiAgIERXT1JEICAgIFBvc2l0aW9u
Ow0KICAgRFdPUkQgICAgVG90YWxQYWdlczsNCiAgIERXT1JEICAgIFBhZ2VzUHJpbnRlZDsNCiAg
IFNZU1RFTVRJTUUgU3VibWl0dGVkOw0KfSBKT0JfSU5GT18xVywgKlBKT0JfSU5GT18xVywgKkxQ
Sk9CX0lORk9fMVc7DQoNCnR5cGVkZWYgSk9CX0lORk9fMVcgSk9CX0lORk9fMTsNCnR5cGVkZWYg
UEpPQl9JTkZPXzFXIFBKT0JfSU5GT18xOw0KdHlwZWRlZiBMUEpPQl9JTkZPXzFXIExQSk9CX0lO
Rk9fMTsNCg0KDQoNCg0KI2xpbmUgMzcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KdHlw
ZWRlZiBzdHJ1Y3QgX0pPQl9JTkZPXzJBIHsNCiAgIERXT1JEICAgIEpvYklkOw0KICAgTFBTVFIg
ICAgICBwUHJpbnRlck5hbWU7DQogICBMUFNUUiAgICAgIHBNYWNoaW5lTmFtZTsNCiAgIExQU1RS
ICAgICAgcFVzZXJOYW1lOw0KICAgTFBTVFIgICAgICBwRG9jdW1lbnQ7DQogICBMUFNUUiAgICAg
IHBOb3RpZnlOYW1lOw0KICAgTFBTVFIgICAgICBwRGF0YXR5cGU7DQogICBMUFNUUiAgICAgIHBQ
cmludFByb2Nlc3NvcjsNCiAgIExQU1RSICAgICAgcFBhcmFtZXRlcnM7DQogICBMUFNUUiAgICAg
IHBEcml2ZXJOYW1lOw0KICAgTFBERVZNT0RFQSBwRGV2TW9kZTsNCiAgIExQU1RSICAgICAgcFN0
YXR1czsNCiAgIFBTRUNVUklUWV9ERVNDUklQVE9SIHBTZWN1cml0eURlc2NyaXB0b3I7DQogICBE
V09SRCAgICBTdGF0dXM7DQogICBEV09SRCAgICBQcmlvcml0eTsNCiAgIERXT1JEICAgIFBvc2l0
aW9uOw0KICAgRFdPUkQgICAgU3RhcnRUaW1lOw0KICAgRFdPUkQgICAgVW50aWxUaW1lOw0KICAg
RFdPUkQgICAgVG90YWxQYWdlczsNCiAgIERXT1JEICAgIFNpemU7DQogICBTWVNURU1USU1FIFN1
Ym1pdHRlZDsgICAgDQogICBEV09SRCAgICBUaW1lOyAgICAgICAgICAgDQogICBEV09SRCAgICBQ
YWdlc1ByaW50ZWQ7DQp9IEpPQl9JTkZPXzJBLCAqUEpPQl9JTkZPXzJBLCAqTFBKT0JfSU5GT18y
QTsNCnR5cGVkZWYgc3RydWN0IF9KT0JfSU5GT18yVyB7DQogICBEV09SRCAgICBKb2JJZDsNCiAg
IExQV1NUUiAgICAgcFByaW50ZXJOYW1lOw0KICAgTFBXU1RSICAgICBwTWFjaGluZU5hbWU7DQog
ICBMUFdTVFIgICAgIHBVc2VyTmFtZTsNCiAgIExQV1NUUiAgICAgcERvY3VtZW50Ow0KICAgTFBX
U1RSICAgICBwTm90aWZ5TmFtZTsNCiAgIExQV1NUUiAgICAgcERhdGF0eXBlOw0KICAgTFBXU1RS
ICAgICBwUHJpbnRQcm9jZXNzb3I7DQogICBMUFdTVFIgICAgIHBQYXJhbWV0ZXJzOw0KICAgTFBX
U1RSICAgICBwRHJpdmVyTmFtZTsNCiAgIExQREVWTU9ERVcgcERldk1vZGU7DQogICBMUFdTVFIg
ICAgIHBTdGF0dXM7DQogICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlwdG9y
Ow0KICAgRFdPUkQgICAgU3RhdHVzOw0KICAgRFdPUkQgICAgUHJpb3JpdHk7DQogICBEV09SRCAg
ICBQb3NpdGlvbjsNCiAgIERXT1JEICAgIFN0YXJ0VGltZTsNCiAgIERXT1JEICAgIFVudGlsVGlt
ZTsNCiAgIERXT1JEICAgIFRvdGFsUGFnZXM7DQogICBEV09SRCAgICBTaXplOw0KICAgU1lTVEVN
VElNRSBTdWJtaXR0ZWQ7ICAgIA0KICAgRFdPUkQgICAgVGltZTsgICAgICAgICAgIA0KICAgRFdP
UkQgICAgUGFnZXNQcmludGVkOw0KfSBKT0JfSU5GT18yVywgKlBKT0JfSU5GT18yVywgKkxQSk9C
X0lORk9fMlc7DQoNCnR5cGVkZWYgSk9CX0lORk9fMlcgSk9CX0lORk9fMjsNCnR5cGVkZWYgUEpP
Ql9JTkZPXzJXIFBKT0JfSU5GT18yOw0KdHlwZWRlZiBMUEpPQl9JTkZPXzJXIExQSk9CX0lORk9f
MjsNCg0KDQoNCg0KI2xpbmUgNDMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KdHlwZWRl
ZiBzdHJ1Y3QgX0pPQl9JTkZPXzMgew0KICAgIERXT1JEICAgSm9iSWQ7DQogICAgRFdPUkQgICBO
ZXh0Sm9iSWQ7DQogICAgRFdPUkQgICBSZXNlcnZlZDsNCn0gSk9CX0lORk9fMywgKlBKT0JfSU5G
T18zLCAqTFBKT0JfSU5GT18zOw0KDQp0eXBlZGVmIHN0cnVjdCBfSk9CX0lORk9fNEEgew0KICAg
RFdPUkQgICAgICAgICAgSm9iSWQ7DQogICBMUFNUUiAgICAgICAgICBwUHJpbnRlck5hbWU7DQog
ICBMUFNUUiAgICAgICAgICBwTWFjaGluZU5hbWU7DQogICBMUFNUUiAgICAgICAgICBwVXNlck5h
bWU7DQogICBMUFNUUiAgICAgICAgICBwRG9jdW1lbnQ7DQogICBMUFNUUiAgICAgICAgICBwTm90
aWZ5TmFtZTsNCiAgIExQU1RSICAgICAgICAgIHBEYXRhdHlwZTsNCiAgIExQU1RSICAgICAgICAg
IHBQcmludFByb2Nlc3NvcjsNCiAgIExQU1RSICAgICAgICAgIHBQYXJhbWV0ZXJzOw0KICAgTFBT
VFIgICAgICAgICAgcERyaXZlck5hbWU7DQogICBMUERFVk1PREVBICAgICBwRGV2TW9kZTsNCiAg
IExQU1RSICAgICAgICAgIHBTdGF0dXM7DQogICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJp
dHlEZXNjcmlwdG9yOw0KICAgRFdPUkQgICAgICAgICAgU3RhdHVzOw0KICAgRFdPUkQgICAgICAg
ICAgUHJpb3JpdHk7DQogICBEV09SRCAgICAgICAgICBQb3NpdGlvbjsNCiAgIERXT1JEICAgICAg
ICAgIFN0YXJ0VGltZTsNCiAgIERXT1JEICAgICAgICAgIFVudGlsVGltZTsNCiAgIERXT1JEICAg
ICAgICAgIFRvdGFsUGFnZXM7DQogICBEV09SRCAgICAgICAgICBTaXplOw0KICAgU1lTVEVNVElN
RSAgICAgU3VibWl0dGVkOw0KICAgRFdPUkQgICAgICAgICAgVGltZTsNCiAgIERXT1JEICAgICAg
ICAgIFBhZ2VzUHJpbnRlZDsNCiAgIExPTkcgICAgICAgICAgIFNpemVIaWdoOw0KfSBKT0JfSU5G
T180QSwgKlBKT0JfSU5GT180QSwgKkxQSk9CX0lORk9fNEE7DQp0eXBlZGVmIHN0cnVjdCBfSk9C
X0lORk9fNFcgew0KICAgRFdPUkQgICAgICAgICAgSm9iSWQ7DQogICBMUFdTVFIgICAgICAgICBw
UHJpbnRlck5hbWU7DQogICBMUFdTVFIgICAgICAgICBwTWFjaGluZU5hbWU7DQogICBMUFdTVFIg
ICAgICAgICBwVXNlck5hbWU7DQogICBMUFdTVFIgICAgICAgICBwRG9jdW1lbnQ7DQogICBMUFdT
VFIgICAgICAgICBwTm90aWZ5TmFtZTsNCiAgIExQV1NUUiAgICAgICAgIHBEYXRhdHlwZTsNCiAg
IExQV1NUUiAgICAgICAgIHBQcmludFByb2Nlc3NvcjsNCiAgIExQV1NUUiAgICAgICAgIHBQYXJh
bWV0ZXJzOw0KICAgTFBXU1RSICAgICAgICAgcERyaXZlck5hbWU7DQogICBMUERFVk1PREVXICAg
ICBwRGV2TW9kZTsNCiAgIExQV1NUUiAgICAgICAgIHBTdGF0dXM7DQogICBQU0VDVVJJVFlfREVT
Q1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlwdG9yOw0KICAgRFdPUkQgICAgICAgICAgU3RhdHVzOw0K
ICAgRFdPUkQgICAgICAgICAgUHJpb3JpdHk7DQogICBEV09SRCAgICAgICAgICBQb3NpdGlvbjsN
CiAgIERXT1JEICAgICAgICAgIFN0YXJ0VGltZTsNCiAgIERXT1JEICAgICAgICAgIFVudGlsVGlt
ZTsNCiAgIERXT1JEICAgICAgICAgIFRvdGFsUGFnZXM7DQogICBEV09SRCAgICAgICAgICBTaXpl
Ow0KICAgU1lTVEVNVElNRSAgICAgU3VibWl0dGVkOw0KICAgRFdPUkQgICAgICAgICAgVGltZTsN
CiAgIERXT1JEICAgICAgICAgIFBhZ2VzUHJpbnRlZDsNCiAgIExPTkcgICAgICAgICAgIFNpemVI
aWdoOw0KfSBKT0JfSU5GT180VywgKlBKT0JfSU5GT180VywgKkxQSk9CX0lORk9fNFc7DQoNCnR5
cGVkZWYgSk9CX0lORk9fNFcgSk9CX0lORk9fNDsNCnR5cGVkZWYgUEpPQl9JTkZPXzRXIFBKT0Jf
SU5GT180Ow0KdHlwZWRlZiBMUEpPQl9JTkZPXzRXIExQSk9CX0lORk9fNDsNCg0KDQoNCg0KI2xp
bmUgNDk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAg
IA0KICAgIA0KI2xpbmUgNTEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiNsaW5lIDUyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29s
LmgiDQoNCg0KICAgIA0KICAgIA0KI2xpbmUgNTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCIN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IF9BRERKT0JfSU5GT18xQSB7DQogICAgTFBTVFIgICAgIFBh
dGg7DQogICAgRFdPUkQgICBKb2JJZDsNCn0gQURESk9CX0lORk9fMUEsICpQQURESk9CX0lORk9f
MUEsICpMUEFEREpPQl9JTkZPXzFBOw0KdHlwZWRlZiBzdHJ1Y3QgX0FEREpPQl9JTkZPXzFXIHsN
CiAgICBMUFdTVFIgICAgUGF0aDsNCiAgICBEV09SRCAgIEpvYklkOw0KfSBBRERKT0JfSU5GT18x
VywgKlBBRERKT0JfSU5GT18xVywgKkxQQURESk9CX0lORk9fMVc7DQoNCnR5cGVkZWYgQURESk9C
X0lORk9fMVcgQURESk9CX0lORk9fMTsNCnR5cGVkZWYgUEFEREpPQl9JTkZPXzFXIFBBRERKT0Jf
SU5GT18xOw0KdHlwZWRlZiBMUEFEREpPQl9JTkZPXzFXIExQQURESk9CX0lORk9fMTsNCg0KDQoN
Cg0KI2xpbmUgNTU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQp0eXBlZGVmIHN0cnVj
dCBfRFJJVkVSX0lORk9fMUEgew0KICAgIExQU1RSICAgICBwTmFtZTsgICAgICAgICAgICAgIA0K
fSBEUklWRVJfSU5GT18xQSwgKlBEUklWRVJfSU5GT18xQSwgKkxQRFJJVkVSX0lORk9fMUE7DQp0
eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9fMVcgew0KICAgIExQV1NUUiAgICBwTmFtZTsgICAg
ICAgICAgICAgIA0KfSBEUklWRVJfSU5GT18xVywgKlBEUklWRVJfSU5GT18xVywgKkxQRFJJVkVS
X0lORk9fMVc7DQoNCnR5cGVkZWYgRFJJVkVSX0lORk9fMVcgRFJJVkVSX0lORk9fMTsNCnR5cGVk
ZWYgUERSSVZFUl9JTkZPXzFXIFBEUklWRVJfSU5GT18xOw0KdHlwZWRlZiBMUERSSVZFUl9JTkZP
XzFXIExQRFJJVkVSX0lORk9fMTsNCg0KDQoNCg0KI2xpbmUgNTcxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2lu
c3Bvb2wuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX0RSSVZFUl9JTkZPXzJBIHsNCiAgICBEV09SRCAg
IGNWZXJzaW9uOw0KICAgIExQU1RSICAgICBwTmFtZTsgICAgICAgICAgICAgIA0KICAgIExQU1RS
ICAgICBwRW52aXJvbm1lbnQ7ICAgICAgIA0KICAgIExQU1RSICAgICBwRHJpdmVyUGF0aDsgICAg
ICAgIA0KICAgIExQU1RSICAgICBwRGF0YUZpbGU7ICAgICAgICAgIA0KICAgIExQU1RSICAgICBw
Q29uZmlnRmlsZTsgICAgICAgIA0KfSBEUklWRVJfSU5GT18yQSwgKlBEUklWRVJfSU5GT18yQSwg
KkxQRFJJVkVSX0lORk9fMkE7DQp0eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9fMlcgew0KICAg
IERXT1JEICAgY1ZlcnNpb247DQogICAgTFBXU1RSICAgIHBOYW1lOyAgICAgICAgICAgICAgDQog
ICAgTFBXU1RSICAgIHBFbnZpcm9ubWVudDsgICAgICAgDQogICAgTFBXU1RSICAgIHBEcml2ZXJQ
YXRoOyAgICAgICAgDQogICAgTFBXU1RSICAgIHBEYXRhRmlsZTsgICAgICAgICAgDQogICAgTFBX
U1RSICAgIHBDb25maWdGaWxlOyAgICAgICAgDQp9IERSSVZFUl9JTkZPXzJXLCAqUERSSVZFUl9J
TkZPXzJXLCAqTFBEUklWRVJfSU5GT18yVzsNCg0KdHlwZWRlZiBEUklWRVJfSU5GT18yVyBEUklW
RVJfSU5GT18yOw0KdHlwZWRlZiBQRFJJVkVSX0lORk9fMlcgUERSSVZFUl9JTkZPXzI7DQp0eXBl
ZGVmIExQRFJJVkVSX0lORk9fMlcgTFBEUklWRVJfSU5GT18yOw0KDQoNCg0KDQojbGluZSA1OTcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9f
M0Egew0KICAgIERXT1JEICAgY1ZlcnNpb247DQogICAgTFBTVFIgICAgIHBOYW1lOyAgICAgICAg
ICAgICAgICAgICAgDQogICAgTFBTVFIgICAgIHBFbnZpcm9ubWVudDsgICAgICAgICAgICAgDQog
ICAgTFBTVFIgICAgIHBEcml2ZXJQYXRoOyAgICAgICAgICAgICAgDQogICAgTFBTVFIgICAgIHBE
YXRhRmlsZTsgICAgICAgICAgICAgICAgDQogICAgTFBTVFIgICAgIHBDb25maWdGaWxlOyAgICAg
ICAgICAgICAgDQogICAgTFBTVFIgICAgIHBIZWxwRmlsZTsgICAgICAgICAgICAgICAgDQogICAg
TFBTVFIgICAgIHBEZXBlbmRlbnRGaWxlczsgICAgICAgICAgDQogICAgTFBTVFIgICAgIHBNb25p
dG9yTmFtZTsgICAgICAgICAgICAgDQogICAgTFBTVFIgICAgIHBEZWZhdWx0RGF0YVR5cGU7ICAg
ICAgICAgDQp9IERSSVZFUl9JTkZPXzNBLCAqUERSSVZFUl9JTkZPXzNBLCAqTFBEUklWRVJfSU5G
T18zQTsNCnR5cGVkZWYgc3RydWN0IF9EUklWRVJfSU5GT18zVyB7DQogICAgRFdPUkQgICBjVmVy
c2lvbjsNCiAgICBMUFdTVFIgICAgcE5hbWU7ICAgICAgICAgICAgICAgICAgICANCiAgICBMUFdT
VFIgICAgcEVudmlyb25tZW50OyAgICAgICAgICAgICANCiAgICBMUFdTVFIgICAgcERyaXZlclBh
dGg7ICAgICAgICAgICAgICANCiAgICBMUFdTVFIgICAgcERhdGFGaWxlOyAgICAgICAgICAgICAg
ICANCiAgICBMUFdTVFIgICAgcENvbmZpZ0ZpbGU7ICAgICAgICAgICAgICANCiAgICBMUFdTVFIg
ICAgcEhlbHBGaWxlOyAgICAgICAgICAgICAgICANCiAgICBMUFdTVFIgICAgcERlcGVuZGVudEZp
bGVzOyAgICAgICAgICANCiAgICBMUFdTVFIgICAgcE1vbml0b3JOYW1lOyAgICAgICAgICAgICAN
CiAgICBMUFdTVFIgICAgcERlZmF1bHREYXRhVHlwZTsgICAgICAgICANCn0gRFJJVkVSX0lORk9f
M1csICpQRFJJVkVSX0lORk9fM1csICpMUERSSVZFUl9JTkZPXzNXOw0KDQp0eXBlZGVmIERSSVZF
Ul9JTkZPXzNXIERSSVZFUl9JTkZPXzM7DQp0eXBlZGVmIFBEUklWRVJfSU5GT18zVyBQRFJJVkVS
X0lORk9fMzsNCnR5cGVkZWYgTFBEUklWRVJfSU5GT18zVyBMUERSSVZFUl9JTkZPXzM7DQoNCg0K
DQoNCiNsaW5lIDYzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCnR5cGVkZWYgc3RydWN0
IF9EUklWRVJfSU5GT180QSB7DQogICAgRFdPUkQgICBjVmVyc2lvbjsNCiAgICBMUFNUUiAgICAg
cE5hbWU7ICAgICAgICAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcEVudmlyb25tZW50OyAg
ICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcERyaXZlclBhdGg7ICAgICAgICAgICAgICANCiAg
ICBMUFNUUiAgICAgcERhdGFGaWxlOyAgICAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcENv
bmZpZ0ZpbGU7ICAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcEhlbHBGaWxlOyAgICAgICAg
ICAgICAgICANCiAgICBMUFNUUiAgICAgcERlcGVuZGVudEZpbGVzOyAgICAgICAgICANCiAgICBM
UFNUUiAgICAgcE1vbml0b3JOYW1lOyAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcERlZmF1
bHREYXRhVHlwZTsgICAgICAgICANCiAgICBMUFNUUiAgICAgcHN6elByZXZpb3VzTmFtZXM7ICAg
ICAgICANCn0gRFJJVkVSX0lORk9fNEEsICpQRFJJVkVSX0lORk9fNEEsICpMUERSSVZFUl9JTkZP
XzRBOw0KdHlwZWRlZiBzdHJ1Y3QgX0RSSVZFUl9JTkZPXzRXIHsNCiAgICBEV09SRCAgIGNWZXJz
aW9uOw0KICAgIExQV1NUUiAgICBwTmFtZTsgICAgICAgICAgICAgICAgICAgIA0KICAgIExQV1NU
UiAgICBwRW52aXJvbm1lbnQ7ICAgICAgICAgICAgIA0KICAgIExQV1NUUiAgICBwRHJpdmVyUGF0
aDsgICAgICAgICAgICAgIA0KICAgIExQV1NUUiAgICBwRGF0YUZpbGU7ICAgICAgICAgICAgICAg
IA0KICAgIExQV1NUUiAgICBwQ29uZmlnRmlsZTsgICAgICAgICAgICAgIA0KICAgIExQV1NUUiAg
ICBwSGVscEZpbGU7ICAgICAgICAgICAgICAgIA0KICAgIExQV1NUUiAgICBwRGVwZW5kZW50Rmls
ZXM7ICAgICAgICAgIA0KICAgIExQV1NUUiAgICBwTW9uaXRvck5hbWU7ICAgICAgICAgICAgIA0K
ICAgIExQV1NUUiAgICBwRGVmYXVsdERhdGFUeXBlOyAgICAgICAgIA0KICAgIExQV1NUUiAgICBw
c3p6UHJldmlvdXNOYW1lczsgICAgICAgIA0KfSBEUklWRVJfSU5GT180VywgKlBEUklWRVJfSU5G
T180VywgKkxQRFJJVkVSX0lORk9fNFc7DQoNCnR5cGVkZWYgRFJJVkVSX0lORk9fNFcgRFJJVkVS
X0lORk9fNDsNCnR5cGVkZWYgUERSSVZFUl9JTkZPXzRXIFBEUklWRVJfSU5GT180Ow0KdHlwZWRl
ZiBMUERSSVZFUl9JTkZPXzRXIExQRFJJVkVSX0lORk9fNDsNCg0KDQoNCg0KI2xpbmUgNjY3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX0RSSVZFUl9JTkZPXzVB
IHsNCiAgICBEV09SRCAgIGNWZXJzaW9uOw0KICAgIExQU1RSICAgICBwTmFtZTsgICAgICAgICAg
ICAgICAgICAgIA0KICAgIExQU1RSICAgICBwRW52aXJvbm1lbnQ7ICAgICAgICAgICAgIA0KICAg
IExQU1RSICAgICBwRHJpdmVyUGF0aDsgICAgICAgICAgICAgIA0KICAgIExQU1RSICAgICBwRGF0
YUZpbGU7ICAgICAgICAgICAgICAgIA0KICAgIExQU1RSICAgICBwQ29uZmlnRmlsZTsgICAgICAg
ICAgICAgIA0KICAgIERXT1JEICAgICBkd0RyaXZlckF0dHJpYnV0ZXM7ICAgICAgIA0KICAgIERX
T1JEICAgICBkd0NvbmZpZ1ZlcnNpb247ICAgICAgICAgIA0KICAgIERXT1JEICAgICBkd0RyaXZl
clZlcnNpb247ICAgICAgICAgIA0KfSBEUklWRVJfSU5GT181QSwgKlBEUklWRVJfSU5GT181QSwg
KkxQRFJJVkVSX0lORk9fNUE7DQp0eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9fNVcgew0KICAg
IERXT1JEICAgY1ZlcnNpb247DQogICAgTFBXU1RSICAgIHBOYW1lOyAgICAgICAgICAgICAgICAg
ICAgDQogICAgTFBXU1RSICAgIHBFbnZpcm9ubWVudDsgICAgICAgICAgICAgDQogICAgTFBXU1RS
ICAgIHBEcml2ZXJQYXRoOyAgICAgICAgICAgICAgDQogICAgTFBXU1RSICAgIHBEYXRhRmlsZTsg
ICAgICAgICAgICAgICAgDQogICAgTFBXU1RSICAgIHBDb25maWdGaWxlOyAgICAgICAgICAgICAg
DQogICAgRFdPUkQgICAgIGR3RHJpdmVyQXR0cmlidXRlczsgICAgICAgDQogICAgRFdPUkQgICAg
IGR3Q29uZmlnVmVyc2lvbjsgICAgICAgICAgDQogICAgRFdPUkQgICAgIGR3RHJpdmVyVmVyc2lv
bjsgICAgICAgICAgDQp9IERSSVZFUl9JTkZPXzVXLCAqUERSSVZFUl9JTkZPXzVXLCAqTFBEUklW
RVJfSU5GT181VzsNCg0KdHlwZWRlZiBEUklWRVJfSU5GT181VyBEUklWRVJfSU5GT181Ow0KdHlw
ZWRlZiBQRFJJVkVSX0lORk9fNVcgUERSSVZFUl9JTkZPXzU7DQp0eXBlZGVmIExQRFJJVkVSX0lO
Rk9fNVcgTFBEUklWRVJfSU5GT181Ow0KDQoNCg0KDQojbGluZSA2OTkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfRFJJVkVSX0lORk9fNkEgew0KICAgIERXT1JE
ICAgICBjVmVyc2lvbjsNCiAgICBMUFNUUiAgICAgcE5hbWU7ICAgICAgICAgICAgICAgICAgICAN
CiAgICBMUFNUUiAgICAgcEVudmlyb25tZW50OyAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAg
cERyaXZlclBhdGg7ICAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcERhdGFGaWxlOyAgICAg
ICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcENvbmZpZ0ZpbGU7ICAgICAgICAgICAgICANCiAg
ICBMUFNUUiAgICAgcEhlbHBGaWxlOyAgICAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgcERl
cGVuZGVudEZpbGVzOyAgICAgICAgICANCiAgICBMUFNUUiAgICAgcE1vbml0b3JOYW1lOyAgICAg
ICAgICAgICANCiAgICBMUFNUUiAgICAgcERlZmF1bHREYXRhVHlwZTsgICAgICAgICANCiAgICBM
UFNUUiAgICAgcHN6elByZXZpb3VzTmFtZXM7ICAgICAgICANCiAgICBGSUxFVElNRSAgZnREcml2
ZXJEYXRlOw0KICAgIERXT1JETE9ORyBkd2xEcml2ZXJWZXJzaW9uOw0KICAgIExQU1RSICAgICAg
cHN6TWZnTmFtZTsNCiAgICBMUFNUUiAgICAgIHBzek9FTVVybDsNCiAgICBMUFNUUiAgICAgIHBz
ekhhcmR3YXJlSUQ7DQogICAgTFBTVFIgICAgICBwc3pQcm92aWRlcjsNCn0gRFJJVkVSX0lORk9f
NkEsICpQRFJJVkVSX0lORk9fNkEsICpMUERSSVZFUl9JTkZPXzZBOw0KdHlwZWRlZiBzdHJ1Y3Qg
X0RSSVZFUl9JTkZPXzZXIHsNCiAgICBEV09SRCAgICAgY1ZlcnNpb247DQogICAgTFBXU1RSICAg
IHBOYW1lOyAgICAgICAgICAgICAgICAgICAgDQogICAgTFBXU1RSICAgIHBFbnZpcm9ubWVudDsg
ICAgICAgICAgICAgDQogICAgTFBXU1RSICAgIHBEcml2ZXJQYXRoOyAgICAgICAgICAgICAgDQog
ICAgTFBXU1RSICAgIHBEYXRhRmlsZTsgICAgICAgICAgICAgICAgDQogICAgTFBXU1RSICAgIHBD
b25maWdGaWxlOyAgICAgICAgICAgICAgDQogICAgTFBXU1RSICAgIHBIZWxwRmlsZTsgICAgICAg
ICAgICAgICAgDQogICAgTFBXU1RSICAgIHBEZXBlbmRlbnRGaWxlczsgICAgICAgICAgDQogICAg
TFBXU1RSICAgIHBNb25pdG9yTmFtZTsgICAgICAgICAgICAgDQogICAgTFBXU1RSICAgIHBEZWZh
dWx0RGF0YVR5cGU7ICAgICAgICAgDQogICAgTFBXU1RSICAgIHBzenpQcmV2aW91c05hbWVzOyAg
ICAgICAgDQogICAgRklMRVRJTUUgIGZ0RHJpdmVyRGF0ZTsNCiAgICBEV09SRExPTkcgZHdsRHJp
dmVyVmVyc2lvbjsNCiAgICBMUFdTVFIgICAgIHBzek1mZ05hbWU7DQogICAgTFBXU1RSICAgICBw
c3pPRU1Vcmw7DQogICAgTFBXU1RSICAgICBwc3pIYXJkd2FyZUlEOw0KICAgIExQV1NUUiAgICAg
cHN6UHJvdmlkZXI7DQp9IERSSVZFUl9JTkZPXzZXLCAqUERSSVZFUl9JTkZPXzZXLCAqTFBEUklW
RVJfSU5GT182VzsNCg0KdHlwZWRlZiBEUklWRVJfSU5GT182VyBEUklWRVJfSU5GT182Ow0KdHlw
ZWRlZiBQRFJJVkVSX0lORk9fNlcgUERSSVZFUl9JTkZPXzY7DQp0eXBlZGVmIExQRFJJVkVSX0lO
Rk9fNlcgTFBEUklWRVJfSU5GT182Ow0KDQoNCg0KDQojbGluZSA3NDcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBfRFJJVkVSX0lORk9fOEEgew0KICAgIERXT1JEICAgICAgY1ZlcnNpb247DQogICAgTFBTVFIg
ICAgICBwTmFtZTsgICAgICAgICAgICAgICAgICAgIA0KICAgIExQU1RSICAgICAgcEVudmlyb25t
ZW50OyAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgIHBEcml2ZXJQYXRoOyAgICAgICAgICAg
ICAgDQogICAgTFBTVFIgICAgICBwRGF0YUZpbGU7ICAgICAgICAgICAgICAgIA0KICAgIExQU1RS
ICAgICAgcENvbmZpZ0ZpbGU7ICAgICAgICAgICAgICANCiAgICBMUFNUUiAgICAgIHBIZWxwRmls
ZTsgICAgICAgICAgICAgICAgDQogICAgTFBTVFIgICAgICBwRGVwZW5kZW50RmlsZXM7ICAgICAg
ICAgIA0KICAgIExQU1RSICAgICAgcE1vbml0b3JOYW1lOyAgICAgICAgICAgICANCiAgICBMUFNU
UiAgICAgIHBEZWZhdWx0RGF0YVR5cGU7ICAgICAgICAgDQogICAgTFBTVFIgICAgICBwc3p6UHJl
dmlvdXNOYW1lczsgICAgICAgIA0KICAgIEZJTEVUSU1FICAgZnREcml2ZXJEYXRlOw0KICAgIERX
T1JETE9ORyAgZHdsRHJpdmVyVmVyc2lvbjsNCiAgICBMUFNUUiAgICAgIHBzek1mZ05hbWU7DQog
ICAgTFBTVFIgICAgICBwc3pPRU1Vcmw7DQogICAgTFBTVFIgICAgICBwc3pIYXJkd2FyZUlEOw0K
ICAgIExQU1RSICAgICAgcHN6UHJvdmlkZXI7DQogICAgTFBTVFIgICAgICBwc3pQcmludFByb2Nl
c3NvcjsNCiAgICBMUFNUUiAgICAgIHBzelZlbmRvclNldHVwOw0KICAgIExQU1RSICAgICAgcHN6
ekNvbG9yUHJvZmlsZXM7DQogICAgTFBTVFIgICAgICBwc3pJbmZQYXRoOw0KICAgIERXT1JEICAg
ICAgZHdQcmludGVyRHJpdmVyQXR0cmlidXRlczsNCiAgICBMUFNUUiAgICAgIHBzenpDb3JlRHJp
dmVyRGVwZW5kZW5jaWVzOw0KICAgIEZJTEVUSU1FICAgZnRNaW5JbmJveERyaXZlclZlckRhdGU7
DQogICAgRFdPUkRMT05HICBkd2xNaW5JbmJveERyaXZlclZlclZlcnNpb247DQp9IERSSVZFUl9J
TkZPXzhBLCAqUERSSVZFUl9JTkZPXzhBLCAqTFBEUklWRVJfSU5GT184QTsNCnR5cGVkZWYgc3Ry
dWN0IF9EUklWRVJfSU5GT184VyB7DQogICAgRFdPUkQgICAgICBjVmVyc2lvbjsNCiAgICBMUFdT
VFIgICAgIHBOYW1lOyAgICAgICAgICAgICAgICAgICAgDQogICAgTFBXU1RSICAgICBwRW52aXJv
bm1lbnQ7ICAgICAgICAgICAgIA0KICAgIExQV1NUUiAgICAgcERyaXZlclBhdGg7ICAgICAgICAg
ICAgICANCiAgICBMUFdTVFIgICAgIHBEYXRhRmlsZTsgICAgICAgICAgICAgICAgDQogICAgTFBX
U1RSICAgICBwQ29uZmlnRmlsZTsgICAgICAgICAgICAgIA0KICAgIExQV1NUUiAgICAgcEhlbHBG
aWxlOyAgICAgICAgICAgICAgICANCiAgICBMUFdTVFIgICAgIHBEZXBlbmRlbnRGaWxlczsgICAg
ICAgICAgDQogICAgTFBXU1RSICAgICBwTW9uaXRvck5hbWU7ICAgICAgICAgICAgIA0KICAgIExQ
V1NUUiAgICAgcERlZmF1bHREYXRhVHlwZTsgICAgICAgICANCiAgICBMUFdTVFIgICAgIHBzenpQ
cmV2aW91c05hbWVzOyAgICAgICAgDQogICAgRklMRVRJTUUgICBmdERyaXZlckRhdGU7DQogICAg
RFdPUkRMT05HICBkd2xEcml2ZXJWZXJzaW9uOw0KICAgIExQV1NUUiAgICAgcHN6TWZnTmFtZTsN
CiAgICBMUFdTVFIgICAgIHBzek9FTVVybDsNCiAgICBMUFdTVFIgICAgIHBzekhhcmR3YXJlSUQ7
DQogICAgTFBXU1RSICAgICBwc3pQcm92aWRlcjsNCiAgICBMUFdTVFIgICAgIHBzelByaW50UHJv
Y2Vzc29yOw0KICAgIExQV1NUUiAgICAgcHN6VmVuZG9yU2V0dXA7DQogICAgTFBXU1RSICAgICBw
c3p6Q29sb3JQcm9maWxlczsNCiAgICBMUFdTVFIgICAgIHBzekluZlBhdGg7DQogICAgRFdPUkQg
ICAgICBkd1ByaW50ZXJEcml2ZXJBdHRyaWJ1dGVzOw0KICAgIExQV1NUUiAgICAgcHN6ekNvcmVE
cml2ZXJEZXBlbmRlbmNpZXM7DQogICAgRklMRVRJTUUgICBmdE1pbkluYm94RHJpdmVyVmVyRGF0
ZTsNCiAgICBEV09SRExPTkcgIGR3bE1pbkluYm94RHJpdmVyVmVyVmVyc2lvbjsNCn0gRFJJVkVS
X0lORk9fOFcsICpQRFJJVkVSX0lORk9fOFcsICpMUERSSVZFUl9JTkZPXzhXOw0KDQp0eXBlZGVm
IERSSVZFUl9JTkZPXzhXIERSSVZFUl9JTkZPXzg7DQp0eXBlZGVmIFBEUklWRVJfSU5GT184VyBQ
RFJJVkVSX0lORk9fODsNCnR5cGVkZWYgTFBEUklWRVJfSU5GT184VyBMUERSSVZFUl9JTkZPXzg7
DQoNCg0KDQoNCiNsaW5lIDgyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQojbGluZSA4NDYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfRE9DX0lORk9fMUEgew0KICAgIExQ
U1RSICAgICBwRG9jTmFtZTsNCiAgICBMUFNUUiAgICAgcE91dHB1dEZpbGU7DQogICAgTFBTVFIg
ICAgIHBEYXRhdHlwZTsNCn0gRE9DX0lORk9fMUEsICpQRE9DX0lORk9fMUEsICpMUERPQ19JTkZP
XzFBOw0KdHlwZWRlZiBzdHJ1Y3QgX0RPQ19JTkZPXzFXIHsNCiAgICBMUFdTVFIgICAgcERvY05h
bWU7DQogICAgTFBXU1RSICAgIHBPdXRwdXRGaWxlOw0KICAgIExQV1NUUiAgICBwRGF0YXR5cGU7
DQp9IERPQ19JTkZPXzFXLCAqUERPQ19JTkZPXzFXLCAqTFBET0NfSU5GT18xVzsNCg0KdHlwZWRl
ZiBET0NfSU5GT18xVyBET0NfSU5GT18xOw0KdHlwZWRlZiBQRE9DX0lORk9fMVcgUERPQ19JTkZP
XzE7DQp0eXBlZGVmIExQRE9DX0lORk9fMVcgTFBET0NfSU5GT18xOw0KDQoNCg0KDQojbGluZSA4
NjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfRk9STV9JTkZP
XzFBIHsNCiAgICBEV09SRCAgIEZsYWdzOw0KICAgIExQU1RSICAgICBwTmFtZTsNCiAgICBTSVpF
TCAgIFNpemU7DQogICAgUkVDVEwgICBJbWFnZWFibGVBcmVhOw0KfSBGT1JNX0lORk9fMUEsICpQ
Rk9STV9JTkZPXzFBLCAqTFBGT1JNX0lORk9fMUE7DQp0eXBlZGVmIHN0cnVjdCBfRk9STV9JTkZP
XzFXIHsNCiAgICBEV09SRCAgIEZsYWdzOw0KICAgIExQV1NUUiAgICBwTmFtZTsNCiAgICBTSVpF
TCAgIFNpemU7DQogICAgUkVDVEwgICBJbWFnZWFibGVBcmVhOw0KfSBGT1JNX0lORk9fMVcsICpQ
Rk9STV9JTkZPXzFXLCAqTFBGT1JNX0lORk9fMVc7DQoNCnR5cGVkZWYgRk9STV9JTkZPXzFXIEZP
Uk1fSU5GT18xOw0KdHlwZWRlZiBQRk9STV9JTkZPXzFXIFBGT1JNX0lORk9fMTsNCnR5cGVkZWYg
TFBGT1JNX0lORk9fMVcgTFBGT1JNX0lORk9fMTsNCg0KDQoNCg0KI2xpbmUgODkxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luc3Bvb2wuaCINCg0KDQogICAgDQogICAgDQogICAgDQoNCiAgICANCg0KICAgIHR5
cGVkZWYgc3RydWN0IF9GT1JNX0lORk9fMkEgew0KICAgICAgICBEV09SRCAgICAgICAgICAgRmxh
Z3M7DQogICAgICAgIExQQ1NUUiAgICAgICAgICBwTmFtZTsNCiAgICAgICAgU0laRUwgICAgICAg
ICAgIFNpemU7DQogICAgICAgIFJFQ1RMICAgICAgICAgICBJbWFnZWFibGVBcmVhOw0KICAgICAg
ICBMUENTVFIgICAgICAgICAgcEtleXdvcmQ7DQogICAgICAgIERXT1JEICAgICAgICAgICBTdHJp
bmdUeXBlOw0KICAgICAgICBMUENTVFIgICAgICAgICAgcE11aURsbDsNCiAgICAgICAgRFdPUkQg
ICAgICAgICAgIGR3UmVzb3VyY2VJZDsNCiAgICAgICAgTFBDU1RSICAgICAgICAgIHBEaXNwbGF5
TmFtZTsNCiAgICAgICAgTEFOR0lEICAgICAgICAgIHdMYW5nSWQ7DQogICAgfSBGT1JNX0lORk9f
MkEsICpQRk9STV9JTkZPXzJBLCAqTFBGT1JNX0lORk9fMkE7DQogICAgdHlwZWRlZiBzdHJ1Y3Qg
X0ZPUk1fSU5GT18yVyB7DQogICAgICAgIERXT1JEICAgICAgICAgICBGbGFnczsNCiAgICAgICAg
TFBDV1NUUiAgICAgICAgIHBOYW1lOw0KICAgICAgICBTSVpFTCAgICAgICAgICAgU2l6ZTsNCiAg
ICAgICAgUkVDVEwgICAgICAgICAgIEltYWdlYWJsZUFyZWE7DQogICAgICAgIExQQ1NUUiAgICAg
ICAgICBwS2V5d29yZDsNCiAgICAgICAgRFdPUkQgICAgICAgICAgIFN0cmluZ1R5cGU7DQogICAg
ICAgIExQQ1dTVFIgICAgICAgICBwTXVpRGxsOw0KICAgICAgICBEV09SRCAgICAgICAgICAgZHdS
ZXNvdXJjZUlkOw0KICAgICAgICBMUENXU1RSICAgICAgICAgcERpc3BsYXlOYW1lOw0KICAgICAg
ICBMQU5HSUQgICAgICAgICAgd0xhbmdJZDsNCiAgICB9IEZPUk1fSU5GT18yVywgKlBGT1JNX0lO
Rk9fMlcsICpMUEZPUk1fSU5GT18yVzsNCg0KdHlwZWRlZiBGT1JNX0lORk9fMlcgRk9STV9JTkZP
XzI7DQp0eXBlZGVmIFBGT1JNX0lORk9fMlcgUEZPUk1fSU5GT18yOw0KdHlwZWRlZiBMUEZPUk1f
SU5GT18yVyBMUEZPUk1fSU5GT18yOw0KDQoNCg0KDQojbGluZSA5MzIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KI2xpbmUgOTMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KdHlwZWRl
ZiBzdHJ1Y3QgX0RPQ19JTkZPXzJBIHsNCiAgICBMUFNUUiAgICAgcERvY05hbWU7DQogICAgTFBT
VFIgICAgIHBPdXRwdXRGaWxlOw0KICAgIExQU1RSICAgICBwRGF0YXR5cGU7DQogICAgRFdPUkQg
ICBkd01vZGU7DQogICAgRFdPUkQgICBKb2JJZDsNCn0gRE9DX0lORk9fMkEsICpQRE9DX0lORk9f
MkEsICpMUERPQ19JTkZPXzJBOw0KdHlwZWRlZiBzdHJ1Y3QgX0RPQ19JTkZPXzJXIHsNCiAgICBM
UFdTVFIgICAgcERvY05hbWU7DQogICAgTFBXU1RSICAgIHBPdXRwdXRGaWxlOw0KICAgIExQV1NU
UiAgICBwRGF0YXR5cGU7DQogICAgRFdPUkQgICBkd01vZGU7DQogICAgRFdPUkQgICBKb2JJZDsN
Cn0gRE9DX0lORk9fMlcsICpQRE9DX0lORk9fMlcsICpMUERPQ19JTkZPXzJXOw0KDQp0eXBlZGVm
IERPQ19JTkZPXzJXIERPQ19JTkZPXzI7DQp0eXBlZGVmIFBET0NfSU5GT18yVyBQRE9DX0lORk9f
MjsNCnR5cGVkZWYgTFBET0NfSU5GT18yVyBMUERPQ19JTkZPXzI7DQoNCg0KDQoNCiNsaW5lIDk1
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBf
RE9DX0lORk9fM0Egew0KICAgIExQU1RSICAgICBwRG9jTmFtZTsNCiAgICBMUFNUUiAgICAgcE91
dHB1dEZpbGU7DQogICAgTFBTVFIgICAgIHBEYXRhdHlwZTsNCiAgICBEV09SRCAgICAgZHdGbGFn
czsNCn0gRE9DX0lORk9fM0EsICpQRE9DX0lORk9fM0EsICpMUERPQ19JTkZPXzNBOw0KdHlwZWRl
ZiBzdHJ1Y3QgX0RPQ19JTkZPXzNXIHsNCiAgICBMUFdTVFIgICAgcERvY05hbWU7DQogICAgTFBX
U1RSICAgIHBPdXRwdXRGaWxlOw0KICAgIExQV1NUUiAgICBwRGF0YXR5cGU7DQogICAgRFdPUkQg
ICAgIGR3RmxhZ3M7DQp9IERPQ19JTkZPXzNXLCAqUERPQ19JTkZPXzNXLCAqTFBET0NfSU5GT18z
VzsNCg0KdHlwZWRlZiBET0NfSU5GT18zVyBET0NfSU5GT18zOw0KdHlwZWRlZiBQRE9DX0lORk9f
M1cgUERPQ19JTkZPXzM7DQp0eXBlZGVmIExQRE9DX0lORk9fM1cgTFBET0NfSU5GT18zOw0KDQoN
Cg0KDQojbGluZSA5ODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCBfUFJJTlRQUk9DRVNTT1JfSU5GT18xQSB7DQogICAgTFBTVFIgICAgIHBO
YW1lOw0KfSBQUklOVFBST0NFU1NPUl9JTkZPXzFBLCAqUFBSSU5UUFJPQ0VTU09SX0lORk9fMUEs
ICpMUFBSSU5UUFJPQ0VTU09SX0lORk9fMUE7DQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRQUk9DRVNT
T1JfSU5GT18xVyB7DQogICAgTFBXU1RSICAgIHBOYW1lOw0KfSBQUklOVFBST0NFU1NPUl9JTkZP
XzFXLCAqUFBSSU5UUFJPQ0VTU09SX0lORk9fMVcsICpMUFBSSU5UUFJPQ0VTU09SX0lORk9fMVc7
DQoNCnR5cGVkZWYgUFJJTlRQUk9DRVNTT1JfSU5GT18xVyBQUklOVFBST0NFU1NPUl9JTkZPXzE7
DQp0eXBlZGVmIFBQUklOVFBST0NFU1NPUl9JTkZPXzFXIFBQUklOVFBST0NFU1NPUl9JTkZPXzE7
DQp0eXBlZGVmIExQUFJJTlRQUk9DRVNTT1JfSU5GT18xVyBMUFBSSU5UUFJPQ0VTU09SX0lORk9f
MTsNCg0KDQoNCg0KI2xpbmUgMTAwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KICAg
IHR5cGVkZWYgc3RydWN0IF9QUklOVFBST0NFU1NPUl9DQVBTXzEgew0KICAgICAgICBEV09SRCAg
ICAgZHdMZXZlbDsNCiAgICAgICAgRFdPUkQgICAgIGR3TnVwT3B0aW9uczsNCiAgICAgICAgRFdP
UkQgICAgIGR3UGFnZU9yZGVyRmxhZ3M7DQogICAgICAgIERXT1JEICAgICBkd051bWJlck9mQ29w
aWVzOw0KICAgIH0gUFJJTlRQUk9DRVNTT1JfQ0FQU18xLCAqUFBSSU5UUFJPQ0VTU09SX0NBUFNf
MTsNCg0KICAgIA0KICAgIA0KI2xpbmUgMTAxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoN
Cg0KICAgIHR5cGVkZWYgc3RydWN0IF9QUklOVFBST0NFU1NPUl9DQVBTXzIgew0KICAgICAgICBE
V09SRCAgICAgZHdMZXZlbDsNCiAgICAgICAgRFdPUkQgICAgIGR3TnVwT3B0aW9uczsNCiAgICAg
ICAgRFdPUkQgICAgIGR3UGFnZU9yZGVyRmxhZ3M7DQogICAgICAgIERXT1JEICAgICBkd051bWJl
ck9mQ29waWVzOw0KDQogICAgICAgIA0KICAgICAgICBEV09SRCAgICAgZHdEdXBsZXhIYW5kbGlu
Z0NhcHM7DQogICAgICAgIERXT1JEICAgICBkd051cERpcmVjdGlvbkNhcHM7DQogICAgICAgIERX
T1JEICAgICBkd051cEJvcmRlckNhcHM7DQogICAgICAgIERXT1JEICAgICBkd0Jvb2tsZXRIYW5k
bGluZ0NhcHM7DQogICAgICAgIERXT1JEICAgICBkd1NjYWxpbmdDYXBzOw0KDQogICAgfSBQUklO
VFBST0NFU1NPUl9DQVBTXzIsICpQUFJJTlRQUk9DRVNTT1JfQ0FQU18yOw0KDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCg0KDQojbGluZSAxMDU5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX1BPUlRfSU5GT18x
QSB7DQogICAgTFBTVFIgICAgIHBOYW1lOw0KfSBQT1JUX0lORk9fMUEsICpQUE9SVF9JTkZPXzFB
LCAqTFBQT1JUX0lORk9fMUE7DQp0eXBlZGVmIHN0cnVjdCBfUE9SVF9JTkZPXzFXIHsNCiAgICBM
UFdTVFIgICAgcE5hbWU7DQp9IFBPUlRfSU5GT18xVywgKlBQT1JUX0lORk9fMVcsICpMUFBPUlRf
SU5GT18xVzsNCg0KdHlwZWRlZiBQT1JUX0lORk9fMVcgUE9SVF9JTkZPXzE7DQp0eXBlZGVmIFBQ
T1JUX0lORk9fMVcgUFBPUlRfSU5GT18xOw0KdHlwZWRlZiBMUFBPUlRfSU5GT18xVyBMUFBPUlRf
SU5GT18xOw0KDQoNCg0KDQojbGluZSAxMDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0K
dHlwZWRlZiBzdHJ1Y3QgX1BPUlRfSU5GT18yQSB7DQogICAgTFBTVFIgICAgIHBQb3J0TmFtZTsN
CiAgICBMUFNUUiAgICAgcE1vbml0b3JOYW1lOw0KICAgIExQU1RSICAgICBwRGVzY3JpcHRpb247
DQogICAgRFdPUkQgICAgIGZQb3J0VHlwZTsNCiAgICBEV09SRCAgICAgUmVzZXJ2ZWQ7DQp9IFBP
UlRfSU5GT18yQSwgKlBQT1JUX0lORk9fMkEsICpMUFBPUlRfSU5GT18yQTsNCnR5cGVkZWYgc3Ry
dWN0IF9QT1JUX0lORk9fMlcgew0KICAgIExQV1NUUiAgICBwUG9ydE5hbWU7DQogICAgTFBXU1RS
ICAgIHBNb25pdG9yTmFtZTsNCiAgICBMUFdTVFIgICAgcERlc2NyaXB0aW9uOw0KICAgIERXT1JE
ICAgICBmUG9ydFR5cGU7DQogICAgRFdPUkQgICAgIFJlc2VydmVkOw0KfSBQT1JUX0lORk9fMlcs
ICpQUE9SVF9JTkZPXzJXLCAqTFBQT1JUX0lORk9fMlc7DQoNCnR5cGVkZWYgUE9SVF9JTkZPXzJX
IFBPUlRfSU5GT18yOw0KdHlwZWRlZiBQUE9SVF9JTkZPXzJXIFBQT1JUX0lORk9fMjsNCnR5cGVk
ZWYgTFBQT1JUX0lORk9fMlcgTFBQT1JUX0lORk9fMjsNCg0KDQoNCg0KI2xpbmUgMTA5OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfUE9SVF9J
TkZPXzNBIHsNCiAgICBEV09SRCAgIGR3U3RhdHVzOw0KICAgIExQU1RSICAgcHN6U3RhdHVzOw0K
ICAgIERXT1JEICAgZHdTZXZlcml0eTsNCn0gUE9SVF9JTkZPXzNBLCAqUFBPUlRfSU5GT18zQSwg
KkxQUE9SVF9JTkZPXzNBOw0KdHlwZWRlZiBzdHJ1Y3QgX1BPUlRfSU5GT18zVyB7DQogICAgRFdP
UkQgICBkd1N0YXR1czsNCiAgICBMUFdTVFIgIHBzelN0YXR1czsNCiAgICBEV09SRCAgIGR3U2V2
ZXJpdHk7DQp9IFBPUlRfSU5GT18zVywgKlBQT1JUX0lORk9fM1csICpMUFBPUlRfSU5GT18zVzsN
Cg0KdHlwZWRlZiBQT1JUX0lORk9fM1cgUE9SVF9JTkZPXzM7DQp0eXBlZGVmIFBQT1JUX0lORk9f
M1cgUFBPUlRfSU5GT18zOw0KdHlwZWRlZiBMUFBPUlRfSU5GT18zVyBMUFBPUlRfSU5GT18zOw0K
DQoNCg0KDQojbGluZSAxMTI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9NT05JVE9SX0lO
Rk9fMUF7DQogICAgTFBTVFIgICAgIHBOYW1lOw0KfSBNT05JVE9SX0lORk9fMUEsICpQTU9OSVRP
Ul9JTkZPXzFBLCAqTFBNT05JVE9SX0lORk9fMUE7DQp0eXBlZGVmIHN0cnVjdCBfTU9OSVRPUl9J
TkZPXzFXew0KICAgIExQV1NUUiAgICBwTmFtZTsNCn0gTU9OSVRPUl9JTkZPXzFXLCAqUE1PTklU
T1JfSU5GT18xVywgKkxQTU9OSVRPUl9JTkZPXzFXOw0KDQp0eXBlZGVmIE1PTklUT1JfSU5GT18x
VyBNT05JVE9SX0lORk9fMTsNCnR5cGVkZWYgUE1PTklUT1JfSU5GT18xVyBQTU9OSVRPUl9JTkZP
XzE7DQp0eXBlZGVmIExQTU9OSVRPUl9JTkZPXzFXIExQTU9OSVRPUl9JTkZPXzE7DQoNCg0KDQoN
CiNsaW5lIDExNjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBf
TU9OSVRPUl9JTkZPXzJBew0KICAgIExQU1RSICAgICBwTmFtZTsNCiAgICBMUFNUUiAgICAgcEVu
dmlyb25tZW50Ow0KICAgIExQU1RSICAgICBwRExMTmFtZTsNCn0gTU9OSVRPUl9JTkZPXzJBLCAq
UE1PTklUT1JfSU5GT18yQSwgKkxQTU9OSVRPUl9JTkZPXzJBOw0KdHlwZWRlZiBzdHJ1Y3QgX01P
TklUT1JfSU5GT18yV3sNCiAgICBMUFdTVFIgICAgcE5hbWU7DQogICAgTFBXU1RSICAgIHBFbnZp
cm9ubWVudDsNCiAgICBMUFdTVFIgICAgcERMTE5hbWU7DQp9IE1PTklUT1JfSU5GT18yVywgKlBN
T05JVE9SX0lORk9fMlcsICpMUE1PTklUT1JfSU5GT18yVzsNCg0KdHlwZWRlZiBNT05JVE9SX0lO
Rk9fMlcgTU9OSVRPUl9JTkZPXzI7DQp0eXBlZGVmIFBNT05JVE9SX0lORk9fMlcgUE1PTklUT1Jf
SU5GT18yOw0KdHlwZWRlZiBMUE1PTklUT1JfSU5GT18yVyBMUE1PTklUT1JfSU5GT18yOw0KDQoN
Cg0KDQojbGluZSAxMTgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KdHlwZWRlZiBzdHJ1
Y3QgX0RBVEFUWVBFU19JTkZPXzFBew0KICAgIExQU1RSICAgICBwTmFtZTsNCn0gREFUQVRZUEVT
X0lORk9fMUEsICpQREFUQVRZUEVTX0lORk9fMUEsICpMUERBVEFUWVBFU19JTkZPXzFBOw0KdHlw
ZWRlZiBzdHJ1Y3QgX0RBVEFUWVBFU19JTkZPXzFXew0KICAgIExQV1NUUiAgICBwTmFtZTsNCn0g
REFUQVRZUEVTX0lORk9fMVcsICpQREFUQVRZUEVTX0lORk9fMVcsICpMUERBVEFUWVBFU19JTkZP
XzFXOw0KDQp0eXBlZGVmIERBVEFUWVBFU19JTkZPXzFXIERBVEFUWVBFU19JTkZPXzE7DQp0eXBl
ZGVmIFBEQVRBVFlQRVNfSU5GT18xVyBQREFUQVRZUEVTX0lORk9fMTsNCnR5cGVkZWYgTFBEQVRB
VFlQRVNfSU5GT18xVyBMUERBVEFUWVBFU19JTkZPXzE7DQoNCg0KDQoNCiNsaW5lIDExOTYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRFUl9ERUZBVUxU
U0F7DQogICAgTFBTVFIgICAgICAgICBwRGF0YXR5cGU7DQogICAgTFBERVZNT0RFQSBwRGV2TW9k
ZTsNCiAgICBBQ0NFU1NfTUFTSyBEZXNpcmVkQWNjZXNzOw0KfSBQUklOVEVSX0RFRkFVTFRTQSwg
KlBQUklOVEVSX0RFRkFVTFRTQSwgKkxQUFJJTlRFUl9ERUZBVUxUU0E7DQp0eXBlZGVmIHN0cnVj
dCBfUFJJTlRFUl9ERUZBVUxUU1d7DQogICAgTFBXU1RSICAgICAgICBwRGF0YXR5cGU7DQogICAg
TFBERVZNT0RFVyBwRGV2TW9kZTsNCiAgICBBQ0NFU1NfTUFTSyBEZXNpcmVkQWNjZXNzOw0KfSBQ
UklOVEVSX0RFRkFVTFRTVywgKlBQUklOVEVSX0RFRkFVTFRTVywgKkxQUFJJTlRFUl9ERUZBVUxU
U1c7DQoNCnR5cGVkZWYgUFJJTlRFUl9ERUZBVUxUU1cgUFJJTlRFUl9ERUZBVUxUUzsNCnR5cGVk
ZWYgUFBSSU5URVJfREVGQVVMVFNXIFBQUklOVEVSX0RFRkFVTFRTOw0KdHlwZWRlZiBMUFBSSU5U
RVJfREVGQVVMVFNXIExQUFJJTlRFUl9ERUZBVUxUUzsNCg0KDQoNCg0KI2xpbmUgMTIxNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX0VOVU1fVkFM
VUVTQSB7DQogICAgTFBTVFIgICBwVmFsdWVOYW1lOw0KICAgIERXT1JEICAgY2JWYWx1ZU5hbWU7
DQogICAgRFdPUkQgICBkd1R5cGU7DQogICAgTFBCWVRFICBwRGF0YTsNCiAgICBEV09SRCAgIGNi
RGF0YTsNCn0gUFJJTlRFUl9FTlVNX1ZBTFVFU0EsICpQUFJJTlRFUl9FTlVNX1ZBTFVFU0EsICpM
UFBSSU5URVJfRU5VTV9WQUxVRVNBOw0KdHlwZWRlZiBzdHJ1Y3QgX1BSSU5URVJfRU5VTV9WQUxV
RVNXIHsNCiAgICBMUFdTVFIgIHBWYWx1ZU5hbWU7DQogICAgRFdPUkQgICBjYlZhbHVlTmFtZTsN
CiAgICBEV09SRCAgIGR3VHlwZTsNCiAgICBMUEJZVEUgIHBEYXRhOw0KICAgIERXT1JEICAgY2JE
YXRhOw0KfSBQUklOVEVSX0VOVU1fVkFMVUVTVywgKlBQUklOVEVSX0VOVU1fVkFMVUVTVywgKkxQ
UFJJTlRFUl9FTlVNX1ZBTFVFU1c7DQoNCnR5cGVkZWYgUFJJTlRFUl9FTlVNX1ZBTFVFU1cgUFJJ
TlRFUl9FTlVNX1ZBTFVFUzsNCnR5cGVkZWYgUFBSSU5URVJfRU5VTV9WQUxVRVNXIFBQUklOVEVS
X0VOVU1fVkFMVUVTOw0KdHlwZWRlZiBMUFBSSU5URVJfRU5VTV9WQUxVRVNXIExQUFJJTlRFUl9F
TlVNX1ZBTFVFUzsNCg0KDQoNCg0KI2xpbmUgMTI0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgi
DQoNCiANCkJPT0wNCl9fc3RkY2FsbA0KRW51bVByaW50ZXJzQSgNCiAgICAgICAgICAgRFdPUkQg
ICBGbGFncywNCiAgICAgICBMUFNUUiBOYW1lLA0KICAgICAgICAgICAgICBEV09SRCAgIExldmVs
LA0KIA0KICAgICAgICAgICAgICBMUEJZVEUgIHBQcmludGVyRW51bSwNCiAgICAgICAgICAgICAg
RFdPUkQgICBjYkJ1ZiwNCiAgICAgICAgICBMUERXT1JEIHBjYk5lZWRlZCwNCiAgICAgICAgICBM
UERXT1JEIHBjUmV0dXJuZWQNCik7DQogDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1QcmludGVyc1co
DQogICAgICAgICAgIERXT1JEICAgRmxhZ3MsDQogICAgICAgTFBXU1RSIE5hbWUsDQogICAgICAg
ICAgICAgIERXT1JEICAgTGV2ZWwsDQogDQogICAgICAgICAgICAgIExQQllURSAgcFByaW50ZXJF
bnVtLA0KICAgICAgICAgICAgICBEV09SRCAgIGNiQnVmLA0KICAgICAgICAgIExQRFdPUkQgcGNi
TmVlZGVkLA0KICAgICAgICAgIExQRFdPUkQgcGNSZXR1cm5lZA0KKTsNCg0KDQoNCg0KI2xpbmUg
MTI3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wu
aCINCg0KDQoNCg0KDQoNCkhBTkRMRQ0KX19zdGRjYWxsDQpHZXRTcG9vbEZpbGVIYW5kbGUoDQog
ICAgIEhBTkRMRSAgaFByaW50ZXINCik7DQoNCkhBTkRMRQ0KX19zdGRjYWxsDQpDb21taXRTcG9v
bERhdGEoDQogICAgIEhBTkRMRSAgaFByaW50ZXIsDQogICAgIEhBTkRMRSAgaFNwb29sRmlsZSwN
CiAgICAgICAgRFdPUkQgICBjYkNvbW1pdA0KKTsNCg0KQk9PTA0KX19zdGRjYWxsDQpDbG9zZVNw
b29sRmlsZUhhbmRsZSgNCiAgICAgSEFORExFICBoUHJpbnRlciwNCiAgICAgSEFORExFICBoU3Bv
b2xGaWxlDQopOw0KDQpCT09MDQpfX3N0ZGNhbGwNCk9wZW5QcmludGVyQSgNCiAgICAgTFBTVFIg
ICAgICAgICAgICAgcFByaW50ZXJOYW1lLA0KICAgICAgICBMUEhBTkRMRSAgICAgICAgICAgIHBo
UHJpbnRlciwNCiAgICAgTFBQUklOVEVSX0RFRkFVTFRTQSBwRGVmYXVsdA0KKTsNCkJPT0wNCl9f
c3RkY2FsbA0KT3BlblByaW50ZXJXKA0KICAgICBMUFdTVFIgICAgICAgICAgICAgcFByaW50ZXJO
YW1lLA0KICAgICAgICBMUEhBTkRMRSAgICAgICAgICAgIHBoUHJpbnRlciwNCiAgICAgTFBQUklO
VEVSX0RFRkFVTFRTVyBwRGVmYXVsdA0KKTsNCg0KDQoNCg0KI2xpbmUgMTM0MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnNwb29sLmgiDQoNCkJPT0wNCl9fc3RkY2FsbA0KUmVzZXRQcmludGVyQSgNCiAgICAg
ICAgIEhBTkRMRSAgICAgICAgICAgICAgICBoUHJpbnRlciwNCiAgICAgTFBQUklOVEVSX0RFRkFV
TFRTQSAgIHBEZWZhdWx0DQopOw0KQk9PTA0KX19zdGRjYWxsDQpSZXNldFByaW50ZXJXKA0KICAg
ICAgICAgSEFORExFICAgICAgICAgICAgICAgIGhQcmludGVyLA0KICAgICBMUFBSSU5URVJfREVG
QVVMVFNXICAgcERlZmF1bHQNCik7DQoNCg0KDQoNCiNsaW5lIDEzNjEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNClNldEpvYkEoDQogICAgICAgICAgICAgIEhB
TkRMRSBoUHJpbnRlciwNCiAgICAgICAgICAgICAgICAgRFdPUkQgIEpvYklkLA0KICBEV09SRCAg
TGV2ZWwsDQoNCg0KDQoNCg0KICAgICAgICAgICAgICAgICBMUEJZVEUgcEpvYiwNCiAgICAgICAg
ICAgICAgICAgRFdPUkQgIENvbW1hbmQNCik7DQpCT09MDQpfX3N0ZGNhbGwNClNldEpvYlcoDQog
ICAgICAgICAgICAgIEhBTkRMRSBoUHJpbnRlciwNCiAgICAgICAgICAgICAgICAgRFdPUkQgIEpv
YklkLA0KICBEV09SRCAgTGV2ZWwsDQoNCg0KDQoNCg0KICAgICAgICAgICAgICAgICBMUEJZVEUg
cEpvYiwNCiAgICAgICAgICAgICAgICAgRFdPUkQgIENvbW1hbmQNCik7DQoNCg0KDQoNCiNsaW5l
IDEzOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNCkdldEpv
YkEoDQogICBIQU5ETEUgICBoUHJpbnRlciwNCiAgICAgIERXT1JEICAgIEpvYklkLA0KICAgICAg
RFdPUkQgICAgTGV2ZWwsDQogDQogICAgICBMUEJZVEUgICBwSm9iLA0KICAgICAgRFdPUkQgICAg
Y2JCdWYsDQogIExQRFdPUkQgIHBjYk5lZWRlZA0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KR2V0Sm9i
VygNCiAgIEhBTkRMRSAgIGhQcmludGVyLA0KICAgICAgRFdPUkQgICAgSm9iSWQsDQogICAgICBE
V09SRCAgICBMZXZlbCwNCiANCiAgICAgIExQQllURSAgIHBKb2IsDQogICAgICBEV09SRCAgICBj
YkJ1ZiwNCiAgTFBEV09SRCAgcGNiTmVlZGVkDQopOw0KDQoNCg0KDQojbGluZSAxNDIzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KQk9PTA0KX19zdGRjYWxsDQpFbnVtSm9ic0EoDQogICBI
QU5ETEUgIGhQcmludGVyLA0KICAgICAgRFdPUkQgICBGaXJzdEpvYiwNCiAgICAgIERXT1JEICAg
Tm9Kb2JzLA0KICAgICAgRFdPUkQgICBMZXZlbCwNCiANCiAgICAgIExQQllURSAgcEpvYiwNCiAg
ICAgIERXT1JEICAgY2JCdWYsDQogIExQRFdPUkQgcGNiTmVlZGVkLA0KICBMUERXT1JEIHBjUmV0
dXJuZWQNCik7DQpCT09MDQpfX3N0ZGNhbGwNCkVudW1Kb2JzVygNCiAgIEhBTkRMRSAgaFByaW50
ZXIsDQogICAgICBEV09SRCAgIEZpcnN0Sm9iLA0KICAgICAgRFdPUkQgICBOb0pvYnMsDQogICAg
ICBEV09SRCAgIExldmVsLA0KIA0KICAgICAgTFBCWVRFICBwSm9iLA0KICAgICAgRFdPUkQgICBj
YkJ1ZiwNCiAgTFBEV09SRCBwY2JOZWVkZWQsDQogIExQRFdPUkQgcGNSZXR1cm5lZA0KKTsNCg0K
DQoNCg0KI2xpbmUgMTQ1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCkhBTkRMRQ0KX19z
dGRjYWxsDQpBZGRQcmludGVyQSgNCiAgICAgTFBTVFIgICAgcE5hbWUsDQogDQogICAgICAgICAg
ICBEV09SRCAgICAgIExldmVsLA0KDQoNCiAgICAgICAgICAgIExQQllURSAgICAgcFByaW50ZXIN
Cik7DQpIQU5ETEUNCl9fc3RkY2FsbA0KQWRkUHJpbnRlclcoDQogICAgIExQV1NUUiAgICBwTmFt
ZSwNCiANCiAgICAgICAgICAgIERXT1JEICAgICAgTGV2ZWwsDQoNCg0KICAgICAgICAgICAgTFBC
WVRFICAgICBwUHJpbnRlcg0KKTsNCg0KDQoNCg0KI2xpbmUgMTQ4MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnNwb29sLmgiDQoNCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRlcigNCiAgSEFORExFICAg
aFByaW50ZXINCik7DQoNCkJPT0wNCl9fc3RkY2FsbA0KU2V0UHJpbnRlckEoDQogICAgICAgICAg
ICAgICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICAgRFdPUkQgICBMZXZlbCwNCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICAgICAgICAgICAgICAgICAgIExQQllURSAgcFByaW50ZXIsDQogICAgICAgICAgICAgICAg
ICBEV09SRCAgIENvbW1hbmQNCiAgICApOw0KQk9PTA0KX19zdGRjYWxsDQpTZXRQcmludGVyVygN
CiAgICAgICAgICAgICAgICAgIEhBTkRMRSAgaFByaW50ZXIsDQogICAgICBEV09SRCAgIExldmVs
LA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgTFBCWVRFICBwUHJpbnRlciwNCiAgICAg
ICAgICAgICAgICAgIERXT1JEICAgQ29tbWFuZA0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDE1MzEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNCkdldFByaW50ZXJB
KA0KICAgSEFORExFICBoUHJpbnRlciwNCiAgICAgIERXT1JEICAgTGV2ZWwsDQogDQogICAgICBM
UEJZVEUgIHBQcmludGVyLA0KICAgICAgRFdPUkQgICBjYkJ1ZiwNCiAgTFBEV09SRCBwY2JOZWVk
ZWQNCik7DQpCT09MDQpfX3N0ZGNhbGwNCkdldFByaW50ZXJXKA0KICAgSEFORExFICBoUHJpbnRl
ciwNCiAgICAgIERXT1JEICAgTGV2ZWwsDQogDQogICAgICBMUEJZVEUgIHBQcmludGVyLA0KICAg
ICAgRFdPUkQgICBjYkJ1ZiwNCiAgTFBEV09SRCBwY2JOZWVkZWQNCik7DQoNCg0KDQoNCiNsaW5l
IDE1NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNCkFkZFBy
aW50ZXJEcml2ZXJBKA0KICAgICBMUFNUUiAgIHBOYW1lLA0KICAgICAgICAgICAgRFdPUkQgICAg
IExldmVsLA0KICAgICAgICAgTFBCWVRFICAgIHBEcml2ZXJJbmZvDQopOw0KQk9PTA0KX19zdGRj
YWxsDQpBZGRQcmludGVyRHJpdmVyVygNCiAgICAgTFBXU1RSICAgcE5hbWUsDQogICAgICAgICAg
ICBEV09SRCAgICAgTGV2ZWwsDQogICAgICAgICBMUEJZVEUgICAgcERyaXZlckluZm8NCik7DQoN
Cg0KDQoNCiNsaW5lIDE1NzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0
ZGNhbGwNCkFkZFByaW50ZXJEcml2ZXJFeEEoDQogICAgICAgICAgTFBTVFIgIHBOYW1lLA0KICBE
V09SRCAgICBMZXZlbCwNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgIFBCWVRFICAgIGxwYkRy
aXZlckluZm8sDQogICAgICAgICAgICAgIERXT1JEICAgIGR3RmlsZUNvcHlGbGFncw0KKTsNCkJP
T0wNCl9fc3RkY2FsbA0KQWRkUHJpbnRlckRyaXZlckV4VygNCiAgICAgICAgICBMUFdTVFIgIHBO
YW1lLA0KICBEV09SRCAgICBMZXZlbCwNCg0KDQoNCg0KDQogICAgICAgICAgICAgICAgIFBCWVRF
ICAgIGxwYkRyaXZlckluZm8sDQogICAgICAgICAgICAgIERXT1JEICAgIGR3RmlsZUNvcHlGbGFn
cw0KKTsNCg0KDQoNCg0KI2xpbmUgMTYwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCkJP
T0wNCl9fc3RkY2FsbA0KRW51bVByaW50ZXJEcml2ZXJzQSgNCiAgICAgTFBTVFIgICAgICAgIHBO
YW1lLA0KICAgICBMUFNUUiAgICAgICAgcEVudmlyb25tZW50LA0KICAgICAgICAgICAgRFdPUkQg
ICAgICAgICAgTGV2ZWwsDQogDQogICAgICAgICAgICBMUEJZVEUgICAgICAgIHBEcml2ZXJJbmZv
LA0KICAgICAgICAgICAgRFdPUkQgICAgICAgICAgY2JCdWYsDQogICAgICAgIExQRFdPUkQgICAg
ICAgIHBjYk5lZWRlZCwNCiAgICAgICAgTFBEV09SRCAgICAgICAgcGNSZXR1cm5lZA0KKTsNCkJP
T0wNCl9fc3RkY2FsbA0KRW51bVByaW50ZXJEcml2ZXJzVygNCiAgICAgTFBXU1RSICAgICAgICBw
TmFtZSwNCiAgICAgTFBXU1RSICAgICAgICBwRW52aXJvbm1lbnQsDQogICAgICAgICAgICBEV09S
RCAgICAgICAgICBMZXZlbCwNCiANCiAgICAgICAgICAgIExQQllURSAgICAgICAgcERyaXZlcklu
Zm8sDQogICAgICAgICAgICBEV09SRCAgICAgICAgICBjYkJ1ZiwNCiAgICAgICAgTFBEV09SRCAg
ICAgICAgcGNiTmVlZGVkLA0KICAgICAgICBMUERXT1JEICAgICAgICBwY1JldHVybmVkDQopOw0K
DQoNCg0KDQojbGluZSAxNjM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KQk9PTA0KX19z
dGRjYWxsDQpHZXRQcmludGVyRHJpdmVyQSgNCiAgICAgICAgIEhBTkRMRSAgaFByaW50ZXIsDQog
ICAgIExQU1RSIHBFbnZpcm9ubWVudCwNCiAgICAgICAgICAgIERXT1JEICAgTGV2ZWwsDQogDQog
ICAgICAgICAgICBMUEJZVEUgIHBEcml2ZXJJbmZvLA0KICAgICAgICAgICAgRFdPUkQgICBjYkJ1
ZiwNCiAgICAgICAgTFBEV09SRCBwY2JOZWVkZWQNCik7DQpCT09MDQpfX3N0ZGNhbGwNCkdldFBy
aW50ZXJEcml2ZXJXKA0KICAgICAgICAgSEFORExFICBoUHJpbnRlciwNCiAgICAgTFBXU1RSIHBF
bnZpcm9ubWVudCwNCiAgICAgICAgICAgIERXT1JEICAgTGV2ZWwsDQogDQogICAgICAgICAgICBM
UEJZVEUgIHBEcml2ZXJJbmZvLA0KICAgICAgICAgICAgRFdPUkQgICBjYkJ1ZiwNCiAgICAgICAg
TFBEV09SRCBwY2JOZWVkZWQNCik7DQoNCg0KDQoNCiNsaW5lIDE2NjcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNCkdldFByaW50ZXJEcml2ZXJEaXJlY3RvcnlB
KA0KICAgICBMUFNUUiAgIHBOYW1lLA0KICAgICBMUFNUUiAgIHBFbnZpcm9ubWVudCwNCiAgICAg
ICAgICAgIERXT1JEICAgICBMZXZlbCwNCiANCiAgICAgICAgICAgIExQQllURSAgICBwRHJpdmVy
RGlyZWN0b3J5LA0KICAgICAgICAgICAgRFdPUkQgICAgIGNiQnVmLA0KICAgICAgICBMUERXT1JE
ICAgcGNiTmVlZGVkDQopOw0KQk9PTA0KX19zdGRjYWxsDQpHZXRQcmludGVyRHJpdmVyRGlyZWN0
b3J5VygNCiAgICAgTFBXU1RSICAgcE5hbWUsDQogICAgIExQV1NUUiAgIHBFbnZpcm9ubWVudCwN
CiAgICAgICAgICAgIERXT1JEICAgICBMZXZlbCwNCiANCiAgICAgICAgICAgIExQQllURSAgICBw
RHJpdmVyRGlyZWN0b3J5LA0KICAgICAgICAgICAgRFdPUkQgICAgIGNiQnVmLA0KICAgICAgICBM
UERXT1JEICAgcGNiTmVlZGVkDQopOw0KDQoNCg0KDQojbGluZSAxNjk1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luc3Bvb2wuaCINCg0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVQcmludGVyRHJpdmVyQSgNCiAg
ICAgTFBTVFIgICAgcE5hbWUsDQogICAgIExQU1RSICAgIHBFbnZpcm9ubWVudCwNCiAgICAgICAg
IExQU1RSICAgIHBEcml2ZXJOYW1lDQopOw0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVQcmludGVy
RHJpdmVyVygNCiAgICAgTFBXU1RSICAgIHBOYW1lLA0KICAgICBMUFdTVFIgICAgcEVudmlyb25t
ZW50LA0KICAgICAgICAgTFBXU1RSICAgIHBEcml2ZXJOYW1lDQopOw0KDQoNCg0KDQojbGluZSAx
NzE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVQ
cmludGVyRHJpdmVyRXhBKA0KICAgICBMUFNUUiAgICBwTmFtZSwNCiAgICAgTFBTVFIgICAgcEVu
dmlyb25tZW50LA0KICAgICAgICAgTFBTVFIgICAgcERyaXZlck5hbWUsDQogICAgICAgICAgICBE
V09SRCAgICAgIGR3RGVsZXRlRmxhZywNCiAgICAgICAgICAgIERXT1JEICAgICAgZHdWZXJzaW9u
RmxhZw0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRlckRyaXZlckV4VygNCiAgICAg
TFBXU1RSICAgIHBOYW1lLA0KICAgICBMUFdTVFIgICAgcEVudmlyb25tZW50LA0KICAgICAgICAg
TFBXU1RSICAgIHBEcml2ZXJOYW1lLA0KICAgICAgICAgICAgRFdPUkQgICAgICBkd0RlbGV0ZUZs
YWcsDQogICAgICAgICAgICBEV09SRCAgICAgIGR3VmVyc2lvbkZsYWcNCik7DQoNCg0KDQoNCiNs
aW5lIDE3MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KQk9PTA0KX19zdGRjYWxs
DQpBZGRQcmludFByb2Nlc3NvckEoDQogICAgTFBTVFIgICBwTmFtZSwNCiAgICBMUFNUUiAgIHBF
bnZpcm9ubWVudCwNCiAgICAgICAgTFBTVFIgICBwUGF0aE5hbWUsDQogICAgICAgIExQU1RSICAg
cFByaW50UHJvY2Vzc29yTmFtZQ0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KQWRkUHJpbnRQcm9jZXNz
b3JXKA0KICAgIExQV1NUUiAgIHBOYW1lLA0KICAgIExQV1NUUiAgIHBFbnZpcm9ubWVudCwNCiAg
ICAgICAgTFBXU1RSICAgcFBhdGhOYW1lLA0KICAgICAgICBMUFdTVFIgICBwUHJpbnRQcm9jZXNz
b3JOYW1lDQopOw0KDQoNCg0KDQojbGluZSAxNzYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCIN
Cg0KQk9PTA0KX19zdGRjYWxsDQpFbnVtUHJpbnRQcm9jZXNzb3JzQSgNCiAgICBMUFNUUiAgIHBO
YW1lLA0KICAgIExQU1RSICAgcEVudmlyb25tZW50LA0KICAgICAgICAgICBEV09SRCAgICAgTGV2
ZWwsDQogDQogICAgICAgICAgIExQQllURSAgICBwUHJpbnRQcm9jZXNzb3JJbmZvLA0KICAgICAg
ICAgICBEV09SRCAgICAgY2JCdWYsDQogICAgICAgTFBEV09SRCAgIHBjYk5lZWRlZCwNCiAgICAg
ICBMUERXT1JEICAgcGNSZXR1cm5lZA0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KRW51bVByaW50UHJv
Y2Vzc29yc1coDQogICAgTFBXU1RSICAgcE5hbWUsDQogICAgTFBXU1RSICAgcEVudmlyb25tZW50
LA0KICAgICAgICAgICBEV09SRCAgICAgTGV2ZWwsDQogDQogICAgICAgICAgIExQQllURSAgICBw
UHJpbnRQcm9jZXNzb3JJbmZvLA0KICAgICAgICAgICBEV09SRCAgICAgY2JCdWYsDQogICAgICAg
TFBEV09SRCAgIHBjYk5lZWRlZCwNCiAgICAgICBMUERXT1JEICAgcGNSZXR1cm5lZA0KKTsNCg0K
DQoNCg0KI2xpbmUgMTc5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQpCT09MDQpf
X3N0ZGNhbGwNCkdldFByaW50UHJvY2Vzc29yRGlyZWN0b3J5QSgNCiAgICBMUFNUUiAgICBwTmFt
ZSwNCiAgICBMUFNUUiAgICBwRW52aXJvbm1lbnQsDQogICAgICAgICAgIERXT1JEICAgICAgTGV2
ZWwsDQogDQogICAgICAgICAgIExQQllURSAgICAgcFByaW50UHJvY2Vzc29ySW5mbywNCiAgICAg
ICAgICAgRFdPUkQgICAgICBjYkJ1ZiwNCiAgICAgICBMUERXT1JEICAgIHBjYk5lZWRlZA0KKTsN
CkJPT0wNCl9fc3RkY2FsbA0KR2V0UHJpbnRQcm9jZXNzb3JEaXJlY3RvcnlXKA0KICAgIExQV1NU
UiAgICBwTmFtZSwNCiAgICBMUFdTVFIgICAgcEVudmlyb25tZW50LA0KICAgICAgICAgICBEV09S
RCAgICAgIExldmVsLA0KIA0KICAgICAgICAgICBMUEJZVEUgICAgIHBQcmludFByb2Nlc3Nvcklu
Zm8sDQogICAgICAgICAgIERXT1JEICAgICAgY2JCdWYsDQogICAgICAgTFBEV09SRCAgICBwY2JO
ZWVkZWQNCik7DQoNCg0KDQoNCiNsaW5lIDE4MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0K
DQogDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1QcmludFByb2Nlc3NvckRhdGF0eXBlc0EoDQogICAg
IExQU1RSICAgcE5hbWUsDQogICAgICAgICBMUFNUUiAgIHBQcmludFByb2Nlc3Nvck5hbWUsDQog
ICAgICAgICAgICBEV09SRCAgICAgTGV2ZWwsDQogDQogICAgICAgICAgICBMUEJZVEUgICAgcERh
dGF0eXBlcywNCiAgICAgICAgICAgIERXT1JEICAgICBjYkJ1ZiwNCiAgICAgICAgTFBEV09SRCAg
IHBjYk5lZWRlZCwNCiAgICAgICAgTFBEV09SRCAgIHBjUmV0dXJuZWQNCik7DQogDQpCT09MDQpf
X3N0ZGNhbGwNCkVudW1QcmludFByb2Nlc3NvckRhdGF0eXBlc1coDQogICAgIExQV1NUUiAgIHBO
YW1lLA0KICAgICAgICAgTFBXU1RSICAgcFByaW50UHJvY2Vzc29yTmFtZSwNCiAgICAgICAgICAg
IERXT1JEICAgICBMZXZlbCwNCiANCiAgICAgICAgICAgIExQQllURSAgICBwRGF0YXR5cGVzLA0K
ICAgICAgICAgICAgRFdPUkQgICAgIGNiQnVmLA0KICAgICAgICBMUERXT1JEICAgcGNiTmVlZGVk
LA0KICAgICAgICBMUERXT1JEICAgcGNSZXR1cm5lZA0KKTsNCg0KDQoNCg0KI2xpbmUgMTg1NSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRQ
cm9jZXNzb3JBKA0KICAgICBMUFNUUiAgIHBOYW1lLA0KICAgICBMUFNUUiAgIHBFbnZpcm9ubWVu
dCwNCiAgICAgICAgIExQU1RSICAgcFByaW50UHJvY2Vzc29yTmFtZQ0KKTsNCkJPT0wNCl9fc3Rk
Y2FsbA0KRGVsZXRlUHJpbnRQcm9jZXNzb3JXKA0KICAgICBMUFdTVFIgICBwTmFtZSwNCiAgICAg
TFBXU1RSICAgcEVudmlyb25tZW50LA0KICAgICAgICAgTFBXU1RSICAgcFByaW50UHJvY2Vzc29y
TmFtZQ0KKTsNCg0KDQoNCg0KI2xpbmUgMTg3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoN
CkRXT1JEDQpfX3N0ZGNhbGwNClN0YXJ0RG9jUHJpbnRlckEoDQogICAgICAgICAgICAgIEhBTkRM
RSAgaFByaW50ZXIsDQogIERXT1JEICAgIExldmVsLA0KDQoNCiAgICAgICAgICAgICAgICAgTFBC
WVRFICBwRG9jSW5mbw0KKTsNCkRXT1JEDQpfX3N0ZGNhbGwNClN0YXJ0RG9jUHJpbnRlclcoDQog
ICAgICAgICAgICAgIEhBTkRMRSAgaFByaW50ZXIsDQogIERXT1JEICAgIExldmVsLA0KDQoNCiAg
ICAgICAgICAgICAgICAgTFBCWVRFICBwRG9jSW5mbw0KKTsNCg0KDQoNCg0KI2xpbmUgMTg5OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCkJPT0wNCl9fc3RkY2FsbA0KU3RhcnRQYWdlUHJp
bnRlcigNCiAgICAgSEFORExFICBoUHJpbnRlcg0KKTsNCg0KQk9PTA0KX19zdGRjYWxsDQpXcml0
ZVByaW50ZXIoDQogICAgIEhBTkRMRSAgaFByaW50ZXIsDQogDQogICAgICAgIExQVk9JRCAgcEJ1
ZiwNCiAgICAgICAgRFdPUkQgICBjYkJ1ZiwNCiAgICBMUERXT1JEIHBjV3JpdHRlbg0KKTsNCg0K
DQpCT09MDQpfX3N0ZGNhbGwNCkZsdXNoUHJpbnRlcigNCiAgICAgSEFORExFICBoUHJpbnRlciwN
CiANCiAgICAgICAgTFBWT0lEICBwQnVmLA0KICAgICAgICBEV09SRCAgIGNiQnVmLA0KICAgIExQ
RFdPUkQgcGNXcml0dGVuLA0KICAgICAgICBEV09SRCAgIGNTbGVlcA0KKTsNCg0KQk9PTA0KX19z
dGRjYWxsDQpFbmRQYWdlUHJpbnRlcigNCiAgICAgSEFORExFICAgaFByaW50ZXINCik7DQoNCkJP
T0wNCl9fc3RkY2FsbA0KQWJvcnRQcmludGVyKA0KICAgICBIQU5ETEUgICBoUHJpbnRlcg0KKTsN
Cg0KQk9PTA0KX19zdGRjYWxsDQpSZWFkUHJpbnRlcigNCiAgICAgSEFORExFICBoUHJpbnRlciwN
CiANCiAgICAgICAgTFBWT0lEICBwQnVmLA0KICAgICAgICBEV09SRCAgIGNiQnVmLA0KICAgIExQ
RFdPUkQgcE5vQnl0ZXNSZWFkDQopOw0KDQpCT09MDQpfX3N0ZGNhbGwNCkVuZERvY1ByaW50ZXIo
DQogICAgICAgSEFORExFICAgaFByaW50ZXINCiAgICApOw0KDQpCT09MDQpfX3N0ZGNhbGwNCkFk
ZEpvYkEoDQogICAgIEhBTkRMRSAgaFByaW50ZXIsDQogICAgICAgIERXT1JEICAgTGV2ZWwsDQog
DQogICAgICAgIExQQllURSAgcERhdGEsDQogICAgICAgIERXT1JEICAgY2JCdWYsDQogICAgTFBE
V09SRCBwY2JOZWVkZWQNCik7DQpCT09MDQpfX3N0ZGNhbGwNCkFkZEpvYlcoDQogICAgIEhBTkRM
RSAgaFByaW50ZXIsDQogICAgICAgIERXT1JEICAgTGV2ZWwsDQogDQogICAgICAgIExQQllURSAg
cERhdGEsDQogICAgICAgIERXT1JEICAgY2JCdWYsDQogICAgTFBEV09SRCBwY2JOZWVkZWQNCik7
DQoNCg0KDQoNCiNsaW5lIDE5ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpCT09MDQpf
X3N0ZGNhbGwNClNjaGVkdWxlSm9iKA0KICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICAgICBE
V09SRCAgIEpvYklkDQopOw0KDQpCT09MDQpfX3N0ZGNhbGwNClByaW50ZXJQcm9wZXJ0aWVzKA0K
ICAgICBIV05EICAgIGhXbmQsDQogICAgIEhBTkRMRSAgaFByaW50ZXINCik7DQoNCg0KTE9ORw0K
X19zdGRjYWxsDQpEb2N1bWVudFByb3BlcnRpZXNBKA0KICAgICAgICAgSFdORCAgICAgIGhXbmQs
DQogICAgICAgICAgICAgSEFORExFICAgIGhQcmludGVyLA0KICAgICAgICAgICAgIExQU1RSICAg
cERldmljZU5hbWUsDQogICAgICAgIFBERVZNT0RFQSBwRGV2TW9kZU91dHB1dCwNCiAgICAgICAg
IFBERVZNT0RFQSBwRGV2TW9kZUlucHV0LA0KICAgICAgICAgICAgICAgIERXT1JEICAgICBmTW9k
ZQ0KKTsNCg0KTE9ORw0KX19zdGRjYWxsDQpEb2N1bWVudFByb3BlcnRpZXNXKA0KICAgICAgICAg
SFdORCAgICAgIGhXbmQsDQogICAgICAgICAgICAgSEFORExFICAgIGhQcmludGVyLA0KICAgICAg
ICAgICAgIExQV1NUUiAgIHBEZXZpY2VOYW1lLA0KICAgICAgICBQREVWTU9ERVcgcERldk1vZGVP
dXRwdXQsDQogICAgICAgICBQREVWTU9ERVcgcERldk1vZGVJbnB1dCwNCiAgICAgICAgICAgICAg
ICBEV09SRCAgICAgZk1vZGUNCik7DQoNCg0KDQoNCiNsaW5lIDIwMjMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KDQpMT05HDQpfX3N0ZGNhbGwNCkFkdmFuY2VkRG9jdW1lbnRQcm9wZXJ0aWVz
QSgNCiAgICAgICAgICAgICBIV05EICAgICAgICBoV25kLA0KICAgICAgICAgICAgIEhBTkRMRSAg
ICAgIGhQcmludGVyLA0KICAgICAgICAgICAgIExQU1RSICAgICBwRGV2aWNlTmFtZSwNCiAgICAg
IFBERVZNT0RFQSAgIHBEZXZNb2RlT3V0cHV0LA0KICAgICAgICAgUERFVk1PREVBICAgcERldk1v
ZGVJbnB1dA0KKTsNCkxPTkcNCl9fc3RkY2FsbA0KQWR2YW5jZWREb2N1bWVudFByb3BlcnRpZXNX
KA0KICAgICAgICAgICAgIEhXTkQgICAgICAgIGhXbmQsDQogICAgICAgICAgICAgSEFORExFICAg
ICAgaFByaW50ZXIsDQogICAgICAgICAgICAgTFBXU1RSICAgICBwRGV2aWNlTmFtZSwNCiAgICAg
IFBERVZNT0RFVyAgIHBEZXZNb2RlT3V0cHV0LA0KICAgICAgICAgUERFVk1PREVXICAgcERldk1v
ZGVJbnB1dA0KKTsNCg0KDQoNCg0KI2xpbmUgMjA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgi
DQoNCg0KICAgIExPTkcNCiAgICBFeHREZXZpY2VNb2RlKA0KICAgICAgICAgICAgIEhXTkQgICAg
ICAgIGhXbmQsDQogICAgICAgICAgICAgSEFORExFICAgICAgaEluc3QsDQogICAgICAgICAgTFBE
RVZNT0RFQSAgcERldk1vZGVPdXRwdXQsDQogICAgICAgICAgICAgTFBTVFIgICAgICAgcERldmlj
ZU5hbWUsDQogICAgICAgICAgICAgTFBTVFIgICAgICAgcFBvcnQsDQogICAgICAgICAgICAgTFBE
RVZNT0RFQSAgcERldk1vZGVJbnB1dCwNCiAgICAgICAgICAgICBMUFNUUiAgICAgICBwUHJvZmls
ZSwNCiAgICAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgZk1vZGUNCiAgICApOw0KI2xpbmUg
MjA2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KRFdPUkQNCl9fc3RkY2FsbA0KR2V0
UHJpbnRlckRhdGFBKA0KICAgICAgICAgIEhBTkRMRSAgIGhQcmludGVyLA0KICAgICAgICAgIExQ
U1RSICBwVmFsdWVOYW1lLA0KICAgICBMUERXT1JEICBwVHlwZSwNCiANCiAgICAgICAgICAgICBM
UEJZVEUgICBwRGF0YSwNCiAgICAgICAgICAgICBEV09SRCAgICBuU2l6ZSwNCiAgICAgICAgIExQ
RFdPUkQgIHBjYk5lZWRlZA0KKTsNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFByaW50ZXJEYXRhVygN
CiAgICAgICAgICBIQU5ETEUgICBoUHJpbnRlciwNCiAgICAgICAgICBMUFdTVFIgIHBWYWx1ZU5h
bWUsDQogICAgIExQRFdPUkQgIHBUeXBlLA0KIA0KICAgICAgICAgICAgIExQQllURSAgIHBEYXRh
LA0KICAgICAgICAgICAgIERXT1JEICAgIG5TaXplLA0KICAgICAgICAgTFBEV09SRCAgcGNiTmVl
ZGVkDQopOw0KDQoNCg0KDQojbGluZSAyMDkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0K
RFdPUkQNCl9fc3RkY2FsbA0KR2V0UHJpbnRlckRhdGFFeEEoDQogICAgICAgICAgSEFORExFICAg
aFByaW50ZXIsDQogICAgICAgICAgTFBDU1RSIHBLZXlOYW1lLA0KICAgICAgICAgIExQQ1NUUiBw
VmFsdWVOYW1lLA0KICAgICBMUERXT1JEICBwVHlwZSwNCiANCiAgICAgICAgICAgICBMUEJZVEUg
ICBwRGF0YSwNCiAgICAgICAgICAgICBEV09SRCAgICBuU2l6ZSwNCiAgICAgICAgIExQRFdPUkQg
IHBjYk5lZWRlZA0KKTsNCkRXT1JEDQpfX3N0ZGNhbGwNCkdldFByaW50ZXJEYXRhRXhXKA0KICAg
ICAgICAgIEhBTkRMRSAgIGhQcmludGVyLA0KICAgICAgICAgIExQQ1dTVFIgcEtleU5hbWUsDQog
ICAgICAgICAgTFBDV1NUUiBwVmFsdWVOYW1lLA0KICAgICBMUERXT1JEICBwVHlwZSwNCiANCiAg
ICAgICAgICAgICBMUEJZVEUgICBwRGF0YSwNCiAgICAgICAgICAgICBEV09SRCAgICBuU2l6ZSwN
CiAgICAgICAgIExQRFdPUkQgIHBjYk5lZWRlZA0KKTsNCg0KDQoNCg0KI2xpbmUgMjEyMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCkRXT1JEDQpfX3N0ZGNhbGwNCkVudW1QcmludGVyRGF0
YUEoDQogICAgICAgICBIQU5ETEUgICBoUHJpbnRlciwNCiAgICAgICAgICAgIERXT1JEICAgIGR3
SW5kZXgsDQogDQogICAgICAgICAgICBMUFNUUiAgcFZhbHVlTmFtZSwNCiAgICAgICAgICAgIERX
T1JEICAgIGNiVmFsdWVOYW1lLA0KICAgICAgICBMUERXT1JEICBwY2JWYWx1ZU5hbWUsDQogICAg
TFBEV09SRCAgcFR5cGUsDQogDQogICAgICAgICAgICBMUEJZVEUgICBwRGF0YSwNCiAgICAgICAg
ICAgIERXT1JEICAgIGNiRGF0YSwNCg0KICAgIExQRFdPUkQgIHBjYkRhdGENCik7DQpEV09SRA0K
X19zdGRjYWxsDQpFbnVtUHJpbnRlckRhdGFXKA0KICAgICAgICAgSEFORExFICAgaFByaW50ZXIs
DQogICAgICAgICAgICBEV09SRCAgICBkd0luZGV4LA0KIA0KICAgICAgICAgICAgTFBXU1RSICBw
VmFsdWVOYW1lLA0KICAgICAgICAgICAgRFdPUkQgICAgY2JWYWx1ZU5hbWUsDQogICAgICAgIExQ
RFdPUkQgIHBjYlZhbHVlTmFtZSwNCiAgICBMUERXT1JEICBwVHlwZSwNCiANCiAgICAgICAgICAg
IExQQllURSAgIHBEYXRhLA0KICAgICAgICAgICAgRFdPUkQgICAgY2JEYXRhLA0KDQogICAgTFBE
V09SRCAgcGNiRGF0YQ0KKTsNCg0KDQoNCg0KI2xpbmUgMjE1OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNw
b29sLmgiDQoNCkRXT1JEDQpfX3N0ZGNhbGwNCkVudW1QcmludGVyRGF0YUV4QSgNCiAgICAgSEFO
RExFICAgIGhQcmludGVyLA0KICAgICBMUENTVFIgIHBLZXlOYW1lLA0KIA0KICAgICAgICBMUEJZ
VEUgICAgcEVudW1WYWx1ZXMsDQogICAgICAgIERXT1JEICAgICBjYkVudW1WYWx1ZXMsDQogICAg
TFBEV09SRCAgIHBjYkVudW1WYWx1ZXMsDQogICAgTFBEV09SRCAgIHBuRW51bVZhbHVlcw0KKTsN
CkRXT1JEDQpfX3N0ZGNhbGwNCkVudW1QcmludGVyRGF0YUV4VygNCiAgICAgSEFORExFICAgIGhQ
cmludGVyLA0KICAgICBMUENXU1RSICBwS2V5TmFtZSwNCiANCiAgICAgICAgTFBCWVRFICAgIHBF
bnVtVmFsdWVzLA0KICAgICAgICBEV09SRCAgICAgY2JFbnVtVmFsdWVzLA0KICAgIExQRFdPUkQg
ICBwY2JFbnVtVmFsdWVzLA0KICAgIExQRFdPUkQgICBwbkVudW1WYWx1ZXMNCik7DQoNCg0KDQoN
CiNsaW5lIDIxODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpEV09SRA0KX19zdGRjYWxs
DQpFbnVtUHJpbnRlcktleUEoDQogICAgIEhBTkRMRSAgIGhQcmludGVyLA0KICAgICBMUENTVFIg
cEtleU5hbWUsDQogDQogICAgICAgIExQU1RSICBwU3Via2V5LA0KICAgICAgICBEV09SRCAgICBj
YlN1YmtleSwNCiAgICBMUERXT1JEICBwY2JTdWJrZXkNCik7DQpEV09SRA0KX19zdGRjYWxsDQpF
bnVtUHJpbnRlcktleVcoDQogICAgIEhBTkRMRSAgIGhQcmludGVyLA0KICAgICBMUENXU1RSIHBL
ZXlOYW1lLA0KIA0KICAgICAgICBMUFdTVFIgIHBTdWJrZXksDQogICAgICAgIERXT1JEICAgIGNi
U3Via2V5LA0KICAgIExQRFdPUkQgIHBjYlN1YmtleQ0KKTsNCg0KDQoNCg0KI2xpbmUgMjIxMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KRFdPUkQNCl9fc3RkY2FsbA0KU2V0UHJpbnRl
ckRhdGFBKA0KICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICBMUFNUUiBwVmFsdWVOYW1lLA0K
ICAgICAgICBEV09SRCAgIFR5cGUsDQogDQogICAgICAgIExQQllURSAgcERhdGEsDQogICAgICAg
IERXT1JEICAgY2JEYXRhDQopOw0KRFdPUkQNCl9fc3RkY2FsbA0KU2V0UHJpbnRlckRhdGFXKA0K
ICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICBMUFdTVFIgcFZhbHVlTmFtZSwNCiAgICAgICAg
RFdPUkQgICBUeXBlLA0KIA0KICAgICAgICBMUEJZVEUgIHBEYXRhLA0KICAgICAgICBEV09SRCAg
IGNiRGF0YQ0KKTsNCg0KDQoNCg0KI2xpbmUgMjIzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgi
DQoNCg0KRFdPUkQNCl9fc3RkY2FsbA0KU2V0UHJpbnRlckRhdGFFeEEoDQogICAgIEhBTkRMRSAg
IGhQcmludGVyLA0KICAgICBMUENTVFIgcEtleU5hbWUsDQogICAgIExQQ1NUUiBwVmFsdWVOYW1l
LA0KICAgICAgICBEV09SRCAgICBUeXBlLA0KIA0KICAgICAgICBMUEJZVEUgICBwRGF0YSwNCiAg
ICAgICAgRFdPUkQgICAgY2JEYXRhDQopOw0KRFdPUkQNCl9fc3RkY2FsbA0KU2V0UHJpbnRlckRh
dGFFeFcoDQogICAgIEhBTkRMRSAgIGhQcmludGVyLA0KICAgICBMUENXU1RSIHBLZXlOYW1lLA0K
ICAgICBMUENXU1RSIHBWYWx1ZU5hbWUsDQogICAgICAgIERXT1JEICAgIFR5cGUsDQogDQogICAg
ICAgIExQQllURSAgIHBEYXRhLA0KICAgICAgICBEV09SRCAgICBjYkRhdGENCik7DQoNCg0KDQoN
CiNsaW5lIDIyNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KRFdPUkQNCl9fc3Rk
Y2FsbA0KRGVsZXRlUHJpbnRlckRhdGFBKA0KICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICBM
UFNUUiBwVmFsdWVOYW1lDQopOw0KRFdPUkQNCl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRlckRhdGFX
KA0KICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICBMUFdTVFIgcFZhbHVlTmFtZQ0KKTsNCg0K
DQoNCg0KI2xpbmUgMjI4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KRFdPUkQNCl9f
c3RkY2FsbA0KRGVsZXRlUHJpbnRlckRhdGFFeEEoDQogICAgIEhBTkRMRSAgIGhQcmludGVyLA0K
ICAgICBMUENTVFIgcEtleU5hbWUsDQogICAgIExQQ1NUUiBwVmFsdWVOYW1lDQopOw0KRFdPUkQN
Cl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRlckRhdGFFeFcoDQogICAgIEhBTkRMRSAgIGhQcmludGVy
LA0KICAgICBMUENXU1RSIHBLZXlOYW1lLA0KICAgICBMUENXU1RSIHBWYWx1ZU5hbWUNCik7DQoN
Cg0KDQoNCiNsaW5lIDIzMDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCkRXT1JEDQpf
X3N0ZGNhbGwNCkRlbGV0ZVByaW50ZXJLZXlBKA0KICAgICBIQU5ETEUgICBoUHJpbnRlciwNCiAg
ICAgTFBDU1RSIHBLZXlOYW1lDQopOw0KRFdPUkQNCl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRlcktl
eVcoDQogICAgIEhBTkRMRSAgIGhQcmludGVyLA0KICAgICBMUENXU1RSIHBLZXlOYW1lDQopOw0K
DQoNCg0KDQojbGluZSAyMzI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQogICAgDQojbGluZSAyMzY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCiNsaW5l
IDIzNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQojbGluZSAyMzk5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0KI2xpbmUgMjQwNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNw
b29sLmgiDQoNCnR5cGVkZWYgc3RydWN0IF9QUklOVEVSX05PVElGWV9PUFRJT05TX1RZUEUgew0K
ICAgIFdPUkQgVHlwZTsNCiAgICBXT1JEIFJlc2VydmVkMDsNCiAgICBEV09SRCBSZXNlcnZlZDE7
DQogICAgRFdPUkQgUmVzZXJ2ZWQyOw0KICAgIERXT1JEIENvdW50Ow0KICAgIFBXT1JEIHBGaWVs
ZHM7DQp9IFBSSU5URVJfTk9USUZZX09QVElPTlNfVFlQRSwgKlBQUklOVEVSX05PVElGWV9PUFRJ
T05TX1RZUEUsICpMUFBSSU5URVJfTk9USUZZX09QVElPTlNfVFlQRTsNCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1BSSU5URVJfTk9USUZZX09QVElPTlMgew0KICAgIERXT1JEIFZlcnNpb247DQog
ICAgRFdPUkQgRmxhZ3M7DQogICAgRFdPUkQgQ291bnQ7DQogICAgUFBSSU5URVJfTk9USUZZX09Q
VElPTlNfVFlQRSBwVHlwZXM7DQp9IFBSSU5URVJfTk9USUZZX09QVElPTlMsICpQUFJJTlRFUl9O
T1RJRllfT1BUSU9OUywgKkxQUFJJTlRFUl9OT1RJRllfT1BUSU9OUzsNCg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBfUFJJTlRFUl9OT1RJRllfSU5GT19EQVRBIHsNCiAgICBXT1JEIFR5cGU7DQog
ICAgV09SRCBGaWVsZDsNCiAgICBEV09SRCBSZXNlcnZlZDsNCiAgICBEV09SRCBJZDsNCiAgICB1
bmlvbiB7DQogICAgICAgIERXT1JEIGFkd0RhdGFbMl07DQogICAgICAgIHN0cnVjdCB7DQogICAg
ICAgICAgICBEV09SRCAgY2JCdWY7DQogICAgICAgICAgICBMUFZPSUQgcEJ1ZjsNCiAgICAgICAg
fSBEYXRhOw0KICAgIH0gTm90aWZ5RGF0YTsNCn0gUFJJTlRFUl9OT1RJRllfSU5GT19EQVRBLCAq
UFBSSU5URVJfTk9USUZZX0lORk9fREFUQSwgKkxQUFJJTlRFUl9OT1RJRllfSU5GT19EQVRBOw0K
DQp0eXBlZGVmIHN0cnVjdCBfUFJJTlRFUl9OT1RJRllfSU5GTyB7DQogICAgRFdPUkQgVmVyc2lv
bjsNCiAgICBEV09SRCBGbGFnczsNCiAgICBEV09SRCBDb3VudDsNCiAgICBQUklOVEVSX05PVElG
WV9JTkZPX0RBVEEgYURhdGFbMV07DQp9IFBSSU5URVJfTk9USUZZX0lORk8sICpQUFJJTlRFUl9O
T1RJRllfSU5GTywgKkxQUFJJTlRFUl9OT1RJRllfSU5GTzsNCg0KDQogICAgdHlwZWRlZiBzdHJ1
Y3QgX0JJTkFSWV9DT05UQUlORVJ7DQogICAgICAgIERXT1JEIGNiQnVmOw0KICAgICAgICBMUEJZ
VEUgcERhdGE7DQogICAgfSBCSU5BUllfQ09OVEFJTkVSLCAqUEJJTkFSWV9DT05UQUlORVI7DQoN
Cg0KICAgIHR5cGVkZWYgc3RydWN0IF9CSURJX0RBVEF7DQogICAgICAgIERXT1JEIGR3QmlkaVR5
cGU7DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgIEJPT0wgICBiRGF0YTsNCiAgICAgICAg
ICAgIExPTkcgICBpRGF0YTsNCiAgICAgICAgICAgIExQV1NUUiBzRGF0YTsNCiAgICAgICAgICAg
IEZMT0FUICBmRGF0YTsNCiAgICAgICAgICAgIEJJTkFSWV9DT05UQUlORVIgYmlEYXRhOw0KICAg
ICAgICAgICAgfXU7DQogICAgfSBCSURJX0RBVEEsICpQQklESV9EQVRBLCAqTFBCSURJX0RBVEE7
DQoNCg0KICAgIHR5cGVkZWYgc3RydWN0IF9CSURJX1JFUVVFU1RfREFUQXsNCiAgICAgICAgRFdP
UkQgICAgIGR3UmVxTnVtYmVyOw0KICAgICAgICBMUFdTVFIgICAgcFNjaGVtYTsNCiAgICAgICAg
QklESV9EQVRBIGRhdGE7DQogICAgfSBCSURJX1JFUVVFU1RfREFUQSAsICpQQklESV9SRVFVRVNU
X0RBVEEgLCAqTFBCSURJX1JFUVVFU1RfREFUQTsNCg0KDQogICAgdHlwZWRlZiBzdHJ1Y3QgX0JJ
RElfUkVRVUVTVF9DT05UQUlORVJ7DQogICAgICAgIERXT1JEIFZlcnNpb247DQogICAgICAgIERX
T1JEIEZsYWdzOw0KICAgICAgICBEV09SRCBDb3VudDsNCiAgICAgICAgQklESV9SRVFVRVNUX0RB
VEEgYURhdGFbIDEgXTsNCiAgICB9QklESV9SRVFVRVNUX0NPTlRBSU5FUiwgKlBCSURJX1JFUVVF
U1RfQ09OVEFJTkVSLCAqTFBCSURJX1JFUVVFU1RfQ09OVEFJTkVSOw0KDQogICAgdHlwZWRlZiBz
dHJ1Y3QgX0JJRElfUkVTUE9OU0VfREFUQXsNCiAgICAgICAgRFdPUkQgIGR3UmVzdWx0Ow0KICAg
ICAgICBEV09SRCAgZHdSZXFOdW1iZXI7DQogICAgICAgIExQV1NUUiBwU2NoZW1hOw0KICAgICAg
ICBCSURJX0RBVEEgZGF0YTsNCiAgICB9IEJJRElfUkVTUE9OU0VfREFUQSwgKlBCSURJX1JFU1BP
TlNFX0RBVEEsICpMUEJJRElfUkVTUE9OU0VfREFUQTsNCg0KICAgIHR5cGVkZWYgc3RydWN0IF9C
SURJX1JFU1BPTlNFX0NPTlRBSU5FUnsNCiAgICAgICAgRFdPUkQgVmVyc2lvbjsNCiAgICAgICAg
RFdPUkQgRmxhZ3M7DQogICAgICAgIERXT1JEIENvdW50Ow0KICAgICAgICBCSURJX1JFU1BPTlNF
X0RBVEEgYURhdGFbIDEgXTsNCiAgICB9IEJJRElfUkVTUE9OU0VfQ09OVEFJTkVSLCAqUEJJRElf
UkVTUE9OU0VfQ09OVEFJTkVSLCAqTFBCSURJX1JFU1BPTlNFX0NPTlRBSU5FUjsNCg0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgdHlwZWRlZiBlbnVtIHsNCiAgICAgICAgQklE
SV9OVUxMICAgPSAwLA0KICAgICAgICBCSURJX0lOVCAgICA9IDEsDQogICAgICAgIEJJRElfRkxP
QVQgID0gMiwNCiAgICAgICAgQklESV9CT09MICAgPSAzLA0KICAgICAgICBCSURJX1NUUklORyA9
IDQsDQogICAgICAgIEJJRElfVEVYVCAgID0gNSwNCiAgICAgICAgQklESV9FTlVNICAgPSA2LA0K
ICAgICAgICBCSURJX0JMT0IgICA9IDcNCiAgICB9IEJJRElfVFlQRTsNCg0KICAgIA0KICAgIA0K
DQoNCiAgICANCg0KDQoNCiAgICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KI2xpbmUgMjU0NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnNwb29sLmgiDQoNCkRXT1JEDQpfX3N0ZGNhbGwNCldhaXRGb3JQcmludGVyQ2hhbmdlKA0KICBI
QU5ETEUgIGhQcmludGVyLA0KICAgICBEV09SRCAgIEZsYWdzDQopOw0KDQpIQU5ETEUNCl9fc3Rk
Y2FsbA0KRmluZEZpcnN0UHJpbnRlckNoYW5nZU5vdGlmaWNhdGlvbigNCiAgICAgIEhBTkRMRSBo
UHJpbnRlciwNCiAgICAgICAgIERXT1JEICBmZHdGaWx0ZXIsDQogICAgICAgICBEV09SRCAgZmR3
T3B0aW9ucywNCiAgUFZPSUQgIHBQcmludGVyTm90aWZ5T3B0aW9ucw0KICAgICk7DQoNCg0KQk9P
TA0KX19zdGRjYWxsDQpGaW5kTmV4dFByaW50ZXJDaGFuZ2VOb3RpZmljYXRpb24oDQogICAgICAg
ICBIQU5ETEUgaENoYW5nZSwNCiAgICBQRFdPUkQgcGR3Q2hhbmdlLA0KICAgICBMUFZPSUQgcHZS
ZXNlcnZlZCwNCiAgICBMUFZPSUQgKnBwUHJpbnRlck5vdGlmeUluZm8NCiAgICApOw0KDQpCT09M
DQpfX3N0ZGNhbGwNCkZyZWVQcmludGVyTm90aWZ5SW5mbygNCiAgICBQUFJJTlRFUl9OT1RJRllf
SU5GTyBwUHJpbnRlck5vdGlmeUluZm8NCiAgICApOw0KDQpCT09MDQpfX3N0ZGNhbGwNCkZpbmRD
bG9zZVByaW50ZXJDaGFuZ2VOb3RpZmljYXRpb24oDQogICAgSEFORExFIGhDaGFuZ2UNCiAgICAp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MjYwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDI2MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpEV09SRA0KX19zdGRjYWxsDQpQcmlu
dGVyTWVzc2FnZUJveEEoDQogICAgSEFORExFICAgIGhQcmludGVyLA0KICAgICAgIERXT1JEICAg
ICBFcnJvciwNCiAgICBIV05EICAgICAgaFduZCwNCiAgICBMUFNUUiAgIHBUZXh0LA0KICAgIExQ
U1RSICAgcENhcHRpb24sDQogICAgICAgRFdPUkQgICAgIGR3VHlwZQ0KKTsNCkRXT1JEDQpfX3N0
ZGNhbGwNClByaW50ZXJNZXNzYWdlQm94VygNCiAgICBIQU5ETEUgICAgaFByaW50ZXIsDQogICAg
ICAgRFdPUkQgICAgIEVycm9yLA0KICAgIEhXTkQgICAgICBoV25kLA0KICAgIExQV1NUUiAgIHBU
ZXh0LA0KICAgIExQV1NUUiAgIHBDYXB0aW9uLA0KICAgICAgIERXT1JEICAgICBkd1R5cGUNCik7
DQoNCg0KDQoNCiNsaW5lIDI2NDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCkJPT0wNCl9fc3RkY2FsbA0KQ2xvc2VQcmludGVyKA0KICBIQU5ETEUgaFBy
aW50ZXINCik7DQoNCkJPT0wNCl9fc3RkY2FsbA0KQWRkRm9ybUEoDQogICAgICAgICAgICAgIEhB
TkRMRSBoUHJpbnRlciwNCiAgRFdPUkQgIExldmVsLA0KDQoNCiAgICAgICAgICAgICAgICAgTFBC
WVRFIHBGb3JtDQopOw0KQk9PTA0KX19zdGRjYWxsDQpBZGRGb3JtVygNCiAgICAgICAgICAgICAg
SEFORExFIGhQcmludGVyLA0KICBEV09SRCAgTGV2ZWwsDQoNCg0KICAgICAgICAgICAgICAgICBM
UEJZVEUgcEZvcm0NCik7DQoNCg0KDQoNCiNsaW5lIDI2ODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9v
bC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNCkRlbGV0ZUZvcm1BKA0KICAgICBIQU5ETEUgICAgaFBy
aW50ZXIsDQogICAgIExQU1RSICAgcEZvcm1OYW1lDQopOw0KQk9PTA0KX19zdGRjYWxsDQpEZWxl
dGVGb3JtVygNCiAgICAgSEFORExFICAgIGhQcmludGVyLA0KICAgICBMUFdTVFIgICBwRm9ybU5h
bWUNCik7DQoNCg0KDQoNCiNsaW5lIDI3MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoN
Cg0KQk9PTA0KX19zdGRjYWxsDQpHZXRGb3JtQSgNCiAgICAgSEFORExFICAgICAgICBoUHJpbnRl
ciwNCiAgICAgTFBTVFIgICAgICAgcEZvcm1OYW1lLA0KICAgICAgICBEV09SRCAgICAgICAgIExl
dmVsLA0KIA0KICAgICAgICBMUEJZVEUgICAgICAgIHBGb3JtLA0KICAgICAgICBEV09SRCAgICAg
ICAgIGNiQnVmLA0KICAgIExQRFdPUkQgICAgICAgcGNiTmVlZGVkDQopOw0KQk9PTA0KX19zdGRj
YWxsDQpHZXRGb3JtVygNCiAgICAgSEFORExFICAgICAgICBoUHJpbnRlciwNCiAgICAgTFBXU1RS
ICAgICAgIHBGb3JtTmFtZSwNCiAgICAgICAgRFdPUkQgICAgICAgICBMZXZlbCwNCiANCiAgICAg
ICAgTFBCWVRFICAgICAgICBwRm9ybSwNCiAgICAgICAgRFdPUkQgICAgICAgICBjYkJ1ZiwNCiAg
ICBMUERXT1JEICAgICAgIHBjYk5lZWRlZA0KKTsNCg0KDQoNCg0KI2xpbmUgMjczMiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQpCT09MDQpfX3N0ZGNhbGwNClNldEZvcm1BKA0KICAg
ICAgICAgICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICAgICAgICAgICBMUFNUUiBwRm9ybU5h
bWUsDQogIERXT1JEICAgTGV2ZWwsDQoNCg0KICAgICAgICAgICAgICAgICBMUEJZVEUgIHBGb3Jt
DQopOw0KQk9PTA0KX19zdGRjYWxsDQpTZXRGb3JtVygNCiAgICAgICAgICAgICAgSEFORExFICBo
UHJpbnRlciwNCiAgICAgICAgICAgICAgTFBXU1RSIHBGb3JtTmFtZSwNCiAgRFdPUkQgICBMZXZl
bCwNCg0KDQogICAgICAgICAgICAgICAgIExQQllURSAgcEZvcm0NCik7DQoNCg0KDQoNCiNsaW5l
IDI3NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1G
b3Jtc0EoDQogICAgIEhBTkRMRSAgaFByaW50ZXIsDQogICAgICAgIERXT1JEICAgTGV2ZWwsDQog
DQogICAgICAgIExQQllURSAgcEZvcm0sDQogICAgICAgIERXT1JEICAgY2JCdWYsDQogICAgTFBE
V09SRCBwY2JOZWVkZWQsDQogICAgTFBEV09SRCBwY1JldHVybmVkDQopOw0KQk9PTA0KX19zdGRj
YWxsDQpFbnVtRm9ybXNXKA0KICAgICBIQU5ETEUgIGhQcmludGVyLA0KICAgICAgICBEV09SRCAg
IExldmVsLA0KIA0KICAgICAgICBMUEJZVEUgIHBGb3JtLA0KICAgICAgICBEV09SRCAgIGNiQnVm
LA0KICAgIExQRFdPUkQgcGNiTmVlZGVkLA0KICAgIExQRFdPUkQgcGNSZXR1cm5lZA0KKTsNCg0K
DQoNCg0KI2xpbmUgMjc4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KQk9PTA0KX19z
dGRjYWxsDQpFbnVtTW9uaXRvcnNBKA0KICAgICBMUFNUUiAgIHBOYW1lLA0KICAgICAgICAgICAg
RFdPUkQgICAgICAgTGV2ZWwsDQogDQogICAgICAgICAgICBMUEJZVEUgICAgICBwTW9uaXRvciwN
CiAgICAgICAgICAgIERXT1JEICAgICAgIGNiQnVmLA0KICAgICAgICBMUERXT1JEICAgIHBjYk5l
ZWRlZCwNCiAgICAgICAgTFBEV09SRCAgICBwY1JldHVybmVkDQopOw0KQk9PTA0KX19zdGRjYWxs
DQpFbnVtTW9uaXRvcnNXKA0KICAgICBMUFdTVFIgICBwTmFtZSwNCiAgICAgICAgICAgIERXT1JE
ICAgICAgIExldmVsLA0KIA0KICAgICAgICAgICAgTFBCWVRFICAgICAgcE1vbml0b3IsDQogICAg
ICAgICAgICBEV09SRCAgICAgICBjYkJ1ZiwNCiAgICAgICAgTFBEV09SRCAgICBwY2JOZWVkZWQs
DQogICAgICAgIExQRFdPUkQgICAgcGNSZXR1cm5lZA0KKTsNCg0KDQoNCg0KI2xpbmUgMjgxNyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQpCT09MDQpfX3N0ZGNhbGwNCkFkZE1vbml0
b3JBKA0KICAgICBMUFNUUiBwTmFtZSwNCiAgICAgICAgICAgIERXT1JEICAgTGV2ZWwsDQogDQog
ICAgICAgICAgICBMUEJZVEUgIHBNb25pdG9ycw0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KQWRkTW9u
aXRvclcoDQogICAgIExQV1NUUiBwTmFtZSwNCiAgICAgICAgICAgIERXT1JEICAgTGV2ZWwsDQog
DQogICAgICAgICAgICBMUEJZVEUgIHBNb25pdG9ycw0KKTsNCg0KDQoNCg0KI2xpbmUgMjg0MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQpCT09MDQpfX3N0ZGNhbGwNCkRlbGV0ZU1v
bml0b3JBKA0KICAgICBMUFNUUiAgICAgcE5hbWUsDQogICAgIExQU1RSICAgICBwRW52aXJvbm1l
bnQsDQogICAgICAgICBMUFNUUiAgICAgcE1vbml0b3JOYW1lDQopOw0KQk9PTA0KX19zdGRjYWxs
DQpEZWxldGVNb25pdG9yVygNCiAgICAgTFBXU1RSICAgICBwTmFtZSwNCiAgICAgTFBXU1RSICAg
ICBwRW52aXJvbm1lbnQsDQogICAgICAgICBMUFdTVFIgICAgIHBNb25pdG9yTmFtZQ0KKTsNCg0K
DQoNCg0KI2xpbmUgMjg2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQpCT09MDQpf
X3N0ZGNhbGwNCkVudW1Qb3J0c0EoDQogICAgIExQU1RSIHBOYW1lLA0KICAgICAgICAgICAgRFdP
UkQgICBMZXZlbCwNCiANCiAgICAgICAgICAgIExQQllURSAgcFBvcnQsDQogICAgICAgICAgICBE
V09SRCAgIGNiQnVmLA0KICAgICAgICBMUERXT1JEIHBjYk5lZWRlZCwNCiAgICAgICAgTFBEV09S
RCBwY1JldHVybmVkDQopOw0KQk9PTA0KX19zdGRjYWxsDQpFbnVtUG9ydHNXKA0KICAgICBMUFdT
VFIgcE5hbWUsDQogICAgICAgICAgICBEV09SRCAgIExldmVsLA0KIA0KICAgICAgICAgICAgTFBC
WVRFICBwUG9ydCwNCiAgICAgICAgICAgIERXT1JEICAgY2JCdWYsDQogICAgICAgIExQRFdPUkQg
cGNiTmVlZGVkLA0KICAgICAgICBMUERXT1JEIHBjUmV0dXJuZWQNCik7DQoNCg0KDQoNCiNsaW5l
IDI4OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCkJPT0wNCl9fc3RkY2FsbA0KQWRk
UG9ydEEoDQogICAgIExQU1RSICAgcE5hbWUsDQogICAgICAgICBIV05EICAgICAgaFduZCwNCiAg
ICAgICAgIExQU1RSICAgcE1vbml0b3JOYW1lDQopOw0KQk9PTA0KX19zdGRjYWxsDQpBZGRQb3J0
VygNCiAgICAgTFBXU1RSICAgcE5hbWUsDQogICAgICAgICBIV05EICAgICAgaFduZCwNCiAgICAg
ICAgIExQV1NUUiAgIHBNb25pdG9yTmFtZQ0KKTsNCg0KDQoNCg0KI2xpbmUgMjkxNCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQpCT09MDQpfX3N0ZGNhbGwNCkNvbmZpZ3VyZVBvcnRB
KA0KICAgICBMUFNUUiAgIHBOYW1lLA0KICAgICAgICAgSFdORCAgICAgIGhXbmQsDQogICAgICAg
ICBMUFNUUiAgIHBQb3J0TmFtZQ0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KQ29uZmlndXJlUG9ydFco
DQogICAgIExQV1NUUiAgIHBOYW1lLA0KICAgICAgICAgSFdORCAgICAgIGhXbmQsDQogICAgICAg
ICBMUFdTVFIgICBwUG9ydE5hbWUNCik7DQoNCg0KDQoNCiNsaW5lIDI5MzYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx3aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNCkRlbGV0ZVBvcnRBKA0KICAgICBMUFNU
UiBwTmFtZSwNCiAgICAgICAgIEhXTkQgICAgaFduZCwNCiAgICAgICAgIExQU1RSIHBQb3J0TmFt
ZQ0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlUG9ydFcoDQogICAgIExQV1NUUiBwTmFtZSwN
CiAgICAgICAgIEhXTkQgICAgaFduZCwNCiAgICAgICAgIExQV1NUUiBwUG9ydE5hbWUNCik7DQoN
Cg0KDQoNCiNsaW5lIDI5NTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQpCT09MDQpfX3N0
ZGNhbGwNClhjdkRhdGFXKA0KICAgICAgICAgSEFORExFICBoWGN2LA0KICAgICAgICAgUENXU1RS
ICBwc3pEYXRhTmFtZSwNCiANCiAgICAgICAgICAgIFBCWVRFICAgcElucHV0RGF0YSwNCiAgICAg
ICAgICAgIERXT1JEICAgY2JJbnB1dERhdGEsDQogDQogICAgICAgICAgICBQQllURSAgIHBPdXRw
dXREYXRhLA0KICAgICAgICAgICAgRFdPUkQgICBjYk91dHB1dERhdGEsDQogICAgICAgIFBEV09S
RCAgcGNiT3V0cHV0TmVlZGVkLA0KICAgIFBEV09SRCAgcGR3U3RhdHVzDQopOw0KDQoNCkJPT0wN
Cl9fc3RkY2FsbA0KR2V0RGVmYXVsdFByaW50ZXJBKA0KICAgICAgICBMUFNUUiAgIHBzekJ1ZmZl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQRFdPUkQgICBwY2NoQnVmZmVyDQog
ICAgKTsNCkJPT0wNCl9fc3RkY2FsbA0KR2V0RGVmYXVsdFByaW50ZXJXKA0KICAgICAgICBMUFdT
VFIgICBwc3pCdWZmZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUERXT1JEICAg
cGNjaEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDI5OTAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5z
cG9vbC5oIg0KDQpCT09MDQpfX3N0ZGNhbGwNClNldERlZmF1bHRQcmludGVyQSgNCiAgICAgTFBD
U1RSIHBzelByaW50ZXINCiAgICApOw0KQk9PTA0KX19zdGRjYWxsDQpTZXREZWZhdWx0UHJpbnRl
clcoDQogICAgIExQQ1dTVFIgcHN6UHJpbnRlcg0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDMwMDYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCkJPT0wNCl9fc3RkY2FsbA0KU2V0UG9ydEEo
DQogICAgIExQU1RSICAgICBwTmFtZSwNCiAgICAgICAgIExQU1RSICAgICBwUG9ydE5hbWUsDQog
ICAgICAgICAgICBEV09SRCAgICAgICBkd0xldmVsLA0KIA0KICAgICAgICAgICAgTFBCWVRFICAg
ICAgcFBvcnRJbmZvDQopOw0KQk9PTA0KX19zdGRjYWxsDQpTZXRQb3J0VygNCiAgICAgTFBXU1RS
ICAgICBwTmFtZSwNCiAgICAgICAgIExQV1NUUiAgICAgcFBvcnROYW1lLA0KICAgICAgICAgICAg
RFdPUkQgICAgICAgZHdMZXZlbCwNCiANCiAgICAgICAgICAgIExQQllURSAgICAgIHBQb3J0SW5m
bw0KKTsNCg0KDQoNCg0KI2xpbmUgMzAzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0K
DQpCT09MDQpfX3N0ZGNhbGwNCkFkZFByaW50ZXJDb25uZWN0aW9uQSgNCiAgTFBTVFIgICBwTmFt
ZQ0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KQWRkUHJpbnRlckNvbm5lY3Rpb25XKA0KICBMUFdTVFIg
ICBwTmFtZQ0KKTsNCg0KDQoNCg0KI2xpbmUgMzA0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgi
DQoNCg0KDQpCT09MDQpfX3N0ZGNhbGwNCkRlbGV0ZVByaW50ZXJDb25uZWN0aW9uQSgNCiAgTFBT
VFIgICBwTmFtZQ0KKTsNCkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRlckNvbm5lY3Rpb25X
KA0KICBMUFdTVFIgICBwTmFtZQ0KKTsNCg0KDQoNCg0KI2xpbmUgMzA2NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnNwb29sLmgiDQoNCg0KDQpIQU5ETEUNCl9fc3RkY2FsbA0KQ29ubmVjdFRvUHJpbnRlckRs
ZygNCiAgICAgSFdORCAgICBod25kLA0KICAgICAgIERXT1JEICAgIEZsYWdzDQopOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfUFJPVklET1JfSU5GT18xQXsNCiAgICBMUFNUUiAgICAgcE5hbWU7DQogICAg
TFBTVFIgICAgIHBFbnZpcm9ubWVudDsNCiAgICBMUFNUUiAgICAgcERMTE5hbWU7DQp9IFBST1ZJ
RE9SX0lORk9fMUEsICpQUFJPVklET1JfSU5GT18xQSwgKkxQUFJPVklET1JfSU5GT18xQTsNCnR5
cGVkZWYgc3RydWN0IF9QUk9WSURPUl9JTkZPXzFXew0KICAgIExQV1NUUiAgICBwTmFtZTsNCiAg
ICBMUFdTVFIgICAgcEVudmlyb25tZW50Ow0KICAgIExQV1NUUiAgICBwRExMTmFtZTsNCn0gUFJP
VklET1JfSU5GT18xVywgKlBQUk9WSURPUl9JTkZPXzFXLCAqTFBQUk9WSURPUl9JTkZPXzFXOw0K
DQp0eXBlZGVmIFBST1ZJRE9SX0lORk9fMVcgUFJPVklET1JfSU5GT18xOw0KdHlwZWRlZiBQUFJP
VklET1JfSU5GT18xVyBQUFJPVklET1JfSU5GT18xOw0KdHlwZWRlZiBMUFBST1ZJRE9SX0lORk9f
MVcgTFBQUk9WSURPUl9JTkZPXzE7DQoNCg0KDQoNCiNsaW5lIDMwOTYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3
aW5zcG9vbC5oIg0KDQp0eXBlZGVmIHN0cnVjdCBfUFJPVklET1JfSU5GT18yQXsNCiAgICBMUFNU
UiAgICAgcE9yZGVyOw0KfSBQUk9WSURPUl9JTkZPXzJBLCAqUFBST1ZJRE9SX0lORk9fMkEsICpM
UFBST1ZJRE9SX0lORk9fMkE7DQp0eXBlZGVmIHN0cnVjdCBfUFJPVklET1JfSU5GT18yV3sNCiAg
ICBMUFdTVFIgICAgcE9yZGVyOw0KfSBQUk9WSURPUl9JTkZPXzJXLCAqUFBST1ZJRE9SX0lORk9f
MlcsICpMUFBST1ZJRE9SX0lORk9fMlc7DQoNCnR5cGVkZWYgUFJPVklET1JfSU5GT18yVyBQUk9W
SURPUl9JTkZPXzI7DQp0eXBlZGVmIFBQUk9WSURPUl9JTkZPXzJXIFBQUk9WSURPUl9JTkZPXzI7
DQp0eXBlZGVmIExQUFJPVklET1JfSU5GT18yVyBMUFBST1ZJRE9SX0lORk9fMjsNCg0KDQoNCg0K
I2xpbmUgMzExMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCkJPT0wNCl9fc3RkY2FsbA0K
QWRkUHJpbnRQcm92aWRvckEoDQogICAgICAgICAgTFBTVFIgIHBOYW1lLA0KICBEV09SRCAgICBM
ZXZlbCwNCg0KDQogICAgICAgICAgICAgIExQQllURSAgIHBQcm92aWRvckluZm8NCik7DQpCT09M
DQpfX3N0ZGNhbGwNCkFkZFByaW50UHJvdmlkb3JXKA0KICAgICAgICAgIExQV1NUUiAgcE5hbWUs
DQogIERXT1JEICAgIExldmVsLA0KDQoNCiAgICAgICAgICAgICAgTFBCWVRFICAgcFByb3ZpZG9y
SW5mbw0KKTsNCg0KDQoNCg0KI2xpbmUgMzEzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoN
CkJPT0wNCl9fc3RkY2FsbA0KRGVsZXRlUHJpbnRQcm92aWRvckEoDQogICAgIExQU1RSICAgcE5h
bWUsDQogICAgIExQU1RSICAgcEVudmlyb25tZW50LA0KICAgICAgICAgTFBTVFIgICBwUHJpbnRQ
cm92aWRvck5hbWUNCik7DQpCT09MDQpfX3N0ZGNhbGwNCkRlbGV0ZVByaW50UHJvdmlkb3JXKA0K
ICAgICBMUFdTVFIgICBwTmFtZSwNCiAgICAgTFBXU1RSICAgcEVudmlyb25tZW50LA0KICAgICAg
ICAgTFBXU1RSICAgcFByaW50UHJvdmlkb3JOYW1lDQopOw0KDQoNCg0KDQojbGluZSAzMTU2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQogICAgQk9PTA0KICAgIF9fc3RkY2FsbA0KICAg
IElzVmFsaWREZXZtb2RlQSgNCiAgICAgICAgICAgICBQREVWTU9ERUEgICBwRGV2bW9kZSwNCiAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgRGV2bW9kZVNpemUNCiAgICAgICAgKTsNCiAg
ICBCT09MDQogICAgX19zdGRjYWxsDQogICAgSXNWYWxpZERldm1vZGVXKA0KICAgICAgICAgICAg
IFBERVZNT0RFVyAgIHBEZXZtb2RlLA0KICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBE
ZXZtb2RlU2l6ZQ0KICAgICAgICApOw0KDQoNCg0KDQojbGluZSAzMTc1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luc3Bvb2wuaCINCiNsaW5lIDMxNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiNsaW5lIDMxOTggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQojbGluZSAzMjEx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQogICAgDQojbGluZSAzMjE1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzIyNiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCiNsaW5lIDMyMzEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5z
cG9vbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQojbGluZSAzMjQ0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luc3Bvb2wuaCINCg0KDQoNCiNsaW5lIDMyNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQoNCg0KDQojbGluZSAzMjk3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KDQogICAgDQoNCg0KDQoNCg0KI2xpbmUgMzMwNyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdHlwZWRl
ZiBlbnVtIF9QUklOVEVSX09QVElPTl9GTEFHUw0KICAgIHsNCiAgICAgICAgUFJJTlRFUl9PUFRJ
T05fTk9fQ0FDSEUgICAgICAgPSAxIDw8IDAsDQogICAgICAgIFBSSU5URVJfT1BUSU9OX0NBQ0hF
ICAgICAgICAgID0gMSA8PCAxLA0KICAgICAgICBQUklOVEVSX09QVElPTl9DTElFTlRfQ0hBTkdF
ICA9IDEgPDwgMiwNCiAgICAgICAgUFJJTlRFUl9PUFRJT05fTk9fQ0xJRU5UX0RBVEEgPSAxIDw8
IDMsDQogICAgfSBQUklOVEVSX09QVElPTl9GTEFHUzsNCg0KDQogICAgdHlwZWRlZiBzdHJ1Y3Qg
X1BSSU5URVJfT1BUSU9OU0ENCiAgICB7DQogICAgICAgIFVJTlQgICAgICAgICAgICBjYlNpemU7
DQogICAgICAgIERXT1JEICAgICAgICAgICBkd0ZsYWdzOw0KICAgIH0gUFJJTlRFUl9PUFRJT05T
QSwgKlBQUklOVEVSX09QVElPTlNBLCAqTFBQUklOVEVSX09QVElPTlNBOw0KICAgIHR5cGVkZWYg
c3RydWN0IF9QUklOVEVSX09QVElPTlNXDQogICAgew0KICAgICAgICBVSU5UICAgICAgICAgICAg
Y2JTaXplOw0KICAgICAgICBEV09SRCAgICAgICAgICAgZHdGbGFnczsNCiAgICB9IFBSSU5URVJf
T1BUSU9OU1csICpQUFJJTlRFUl9PUFRJT05TVywgKkxQUFJJTlRFUl9PUFRJT05TVzsNCg0KdHlw
ZWRlZiBQUklOVEVSX09QVElPTlNXIFBSSU5URVJfT1BUSU9OUzsNCnR5cGVkZWYgUFBSSU5URVJf
T1BUSU9OU1cgUFBSSU5URVJfT1BUSU9OUzsNCnR5cGVkZWYgTFBQUklOVEVSX09QVElPTlNXIExQ
UFJJTlRFUl9PUFRJT05TOw0KDQoNCg0KDQojbGluZSAzNDIzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bv
b2wuaCINCg0KICAgIEJPT0wNCiAgICBfX3N0ZGNhbGwNCiAgICBPcGVuUHJpbnRlcjJBKA0KICAg
ICAgICAgICBMUENTVFIgICAgICAgICAgICAgICAgcFByaW50ZXJOYW1lLA0KICAgICAgICAgICAg
ICBMUEhBTkRMRSAgICAgICAgICAgICAgICBwaFByaW50ZXIsDQogICAgICAgICAgIFBQUklOVEVS
X0RFRkFVTFRTQSAgICAgIHBEZWZhdWx0LA0KICAgICAgICAgICBQUFJJTlRFUl9PUFRJT05TQSAg
ICAgICBwT3B0aW9ucw0KICAgICk7DQogICAgQk9PTA0KICAgIF9fc3RkY2FsbA0KICAgIE9wZW5Q
cmludGVyMlcoDQogICAgICAgICAgIExQQ1dTVFIgICAgICAgICAgICAgICAgcFByaW50ZXJOYW1l
LA0KICAgICAgICAgICAgICBMUEhBTkRMRSAgICAgICAgICAgICAgICBwaFByaW50ZXIsDQogICAg
ICAgICAgIFBQUklOVEVSX0RFRkFVTFRTVyAgICAgIHBEZWZhdWx0LA0KICAgICAgICAgICBQUFJJ
TlRFUl9PUFRJT05TVyAgICAgICBwT3B0aW9ucw0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDM0NDUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQogICAgDQogICAgDQoNCiAgICB0eXBlZGVmIHN0
cnVjdCBfUFJJTlRFUl9DT05ORUNUSU9OX0lORk9fMUENCiAgICB7DQogICAgICAgIERXT1JEICAg
ICAgIGR3RmxhZ3M7DQogICAgICAgIExQU1RSICAgICAgIHBzekRyaXZlck5hbWU7DQogICAgfSBQ
UklOVEVSX0NPTk5FQ1RJT05fSU5GT18xQSwgKlBQUklOVEVSX0NPTk5FQ1RJT05fSU5GT18xQTsN
CiAgICB0eXBlZGVmIHN0cnVjdCBfUFJJTlRFUl9DT05ORUNUSU9OX0lORk9fMVcNCiAgICB7DQog
ICAgICAgIERXT1JEICAgICAgIGR3RmxhZ3M7DQogICAgICAgIExQV1NUUiAgICAgIHBzekRyaXZl
ck5hbWU7DQogICAgfSBQUklOVEVSX0NPTk5FQ1RJT05fSU5GT18xVywgKlBQUklOVEVSX0NPTk5F
Q1RJT05fSU5GT18xVzsNCg0KdHlwZWRlZiBQUklOVEVSX0NPTk5FQ1RJT05fSU5GT18xVyBQUklO
VEVSX0NPTk5FQ1RJT05fSU5GT18xOw0KdHlwZWRlZiBQUFJJTlRFUl9DT05ORUNUSU9OX0lORk9f
MVcgUFBSSU5URVJfQ09OTkVDVElPTl9JTkZPXzE7DQoNCg0KDQojbGluZSAzNDY2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luc3Bvb2wuaCINCg0KICAgIEJPT0wNCiAgICBfX3N0ZGNhbGwNCiAgICBBZGRQcmlu
dGVyQ29ubmVjdGlvbjJBKA0KICAgICAgICAgSFdORCAgICAgICAgICAgIGhXbmQsDQogICAgICAg
ICAgICAgTFBDU1RSICAgICAgICBwc3pOYW1lLA0KICAgICAgICAgICAgICAgIERXT1JEICAgICAg
ICAgICBkd0xldmVsLA0KICAgICAgICAgICAgIFBWT0lEICAgICAgICAgICBwQ29ubmVjdGlvbklu
Zm8NCiAgICAgICAgKTsNCiAgICBCT09MDQogICAgX19zdGRjYWxsDQogICAgQWRkUHJpbnRlckNv
bm5lY3Rpb24yVygNCiAgICAgICAgIEhXTkQgICAgICAgICAgICBoV25kLA0KICAgICAgICAgICAg
IExQQ1dTVFIgICAgICAgIHBzek5hbWUsDQogICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAg
IGR3TGV2ZWwsDQogICAgICAgICAgICAgUFZPSUQgICAgICAgICAgIHBDb25uZWN0aW9uSW5mbw0K
ICAgICAgICApOw0KDQoNCg0KDQojbGluZSAzNDg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCIN
Cg0KDQoNCg0KDQoNCg0KDQogICAgSFJFU1VMVA0KICAgIF9fc3RkY2FsbA0KICAgIEluc3RhbGxQ
cmludGVyRHJpdmVyRnJvbVBhY2thZ2VBKA0KICAgICAgICBMUENTVFIgICAgcHN6U2VydmVyLA0K
ICAgICAgICBMUENTVFIgICAgcHN6SW5mUGF0aCwNCiAgICAgICAgICAgIExQQ1NUUiAgICBwc3pE
cml2ZXJOYW1lLA0KICAgICAgICBMUENTVFIgICAgcHN6RW52aXJvbm1lbnQsDQogICAgICAgICAg
ICBEV09SRCAgICAgICBkd0ZsYWdzDQogICAgKTsNCiAgICBIUkVTVUxUDQogICAgX19zdGRjYWxs
DQogICAgSW5zdGFsbFByaW50ZXJEcml2ZXJGcm9tUGFja2FnZVcoDQogICAgICAgIExQQ1dTVFIg
ICAgcHN6U2VydmVyLA0KICAgICAgICBMUENXU1RSICAgIHBzekluZlBhdGgsDQogICAgICAgICAg
ICBMUENXU1RSICAgIHBzekRyaXZlck5hbWUsDQogICAgICAgIExQQ1dTVFIgICAgcHN6RW52aXJv
bm1lbnQsDQogICAgICAgICAgICBEV09SRCAgICAgICBkd0ZsYWdzDQogICAgKTsNCg0KDQoNCg0K
I2xpbmUgMzUxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCiAgICBIUkVTVUxUDQogICAgX19z
dGRjYWxsDQogICAgVXBsb2FkUHJpbnRlckRyaXZlclBhY2thZ2VBKA0KICAgICAgICBMUENTVFIg
ICAgcHN6U2VydmVyLA0KICAgICAgICAgICAgTFBDU1RSICAgIHBzekluZlBhdGgsDQogICAgICAg
IExQQ1NUUiAgICBwc3pFbnZpcm9ubWVudCwNCiAgICAgICAgICAgIERXT1JEICAgICAgIGR3Rmxh
Z3MsDQogICAgICAgICAgICBIV05EICAgICAgICBod25kLA0KICAgICANCiAgICAgICAgICAgICAg
IExQU1RSICAgICBwc3pEZXN0SW5mUGF0aCwNCiAgICAgICAgIFBVTE9ORyAgICAgIHBjY2hEZXN0
SW5mUGF0aA0KICAgICk7DQogICAgSFJFU1VMVA0KICAgIF9fc3RkY2FsbA0KICAgIFVwbG9hZFBy
aW50ZXJEcml2ZXJQYWNrYWdlVygNCiAgICAgICAgTFBDV1NUUiAgICBwc3pTZXJ2ZXIsDQogICAg
ICAgICAgICBMUENXU1RSICAgIHBzekluZlBhdGgsDQogICAgICAgIExQQ1dTVFIgICAgcHN6RW52
aXJvbm1lbnQsDQogICAgICAgICAgICBEV09SRCAgICAgICBkd0ZsYWdzLA0KICAgICAgICAgICAg
SFdORCAgICAgICAgaHduZCwNCiAgICAgDQogICAgICAgICAgICAgICBMUFdTVFIgICAgIHBzekRl
c3RJbmZQYXRoLA0KICAgICAgICAgUFVMT05HICAgICAgcGNjaERlc3RJbmZQYXRoDQogICAgKTsN
Cg0KDQoNCg0KI2xpbmUgMzU1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCiAgICB0eXBl
ZGVmIHN0cnVjdCBfQ09SRV9QUklOVEVSX0RSSVZFUkENCiAgICB7DQogICAgICAgIEdVSUQgICAg
ICAgICBDb3JlRHJpdmVyR1VJRDsNCiAgICAgICAgRklMRVRJTUUgICAgIGZ0RHJpdmVyRGF0ZTsN
CiAgICAgICAgRFdPUkRMT05HICAgIGR3bERyaXZlclZlcnNpb247DQogICAgICAgIENIQVIgICAg
ICAgICBzelBhY2thZ2VJRFsyNjBdOw0KICAgIH0gQ09SRV9QUklOVEVSX0RSSVZFUkEsICpQQ09S
RV9QUklOVEVSX0RSSVZFUkE7DQogICAgdHlwZWRlZiBzdHJ1Y3QgX0NPUkVfUFJJTlRFUl9EUklW
RVJXDQogICAgew0KICAgICAgICBHVUlEICAgICAgICAgQ29yZURyaXZlckdVSUQ7DQogICAgICAg
IEZJTEVUSU1FICAgICBmdERyaXZlckRhdGU7DQogICAgICAgIERXT1JETE9ORyAgICBkd2xEcml2
ZXJWZXJzaW9uOw0KICAgICAgICBXQ0hBUiAgICAgICAgc3pQYWNrYWdlSURbMjYwXTsNCiAgICB9
IENPUkVfUFJJTlRFUl9EUklWRVJXLCAqUENPUkVfUFJJTlRFUl9EUklWRVJXOw0KDQp0eXBlZGVm
IENPUkVfUFJJTlRFUl9EUklWRVJXIENPUkVfUFJJTlRFUl9EUklWRVI7DQp0eXBlZGVmIFBDT1JF
X1BSSU5URVJfRFJJVkVSVyBQQ09SRV9QUklOVEVSX0RSSVZFUjsNCg0KDQoNCiNsaW5lIDM1NzYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQogICAgSFJFU1VMVA0KICAgIF9fc3RkY2FsbA0K
ICAgIEdldENvcmVQcmludGVyRHJpdmVyc0EoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTFBDU1RSICAgICAgICAgICAgICAgcHN6U2VydmVyLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExQQ1NUUiAgICAgICAgICAgICAgIHBzekVudmlyb25tZW50LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIgICAgICAgICAgICAgICBwc3p6Q29yZURy
aXZlckRlcGVuZGVuY2llcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdP
UkQgICAgICAgICAgICAgICAgICBjQ29yZVByaW50ZXJEcml2ZXJzLA0KICAgICAgUENPUkVfUFJJ
TlRFUl9EUklWRVJBICBwQ29yZVByaW50ZXJEcml2ZXJzDQogICAgKTsNCiAgICBIUkVTVUxUDQog
ICAgX19zdGRjYWxsDQogICAgR2V0Q29yZVByaW50ZXJEcml2ZXJzVygNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMUENXU1RSICAgICAgICAgICAgICAgcHN6U2VydmVyLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1dTVFIgICAgICAgICAgICAgICBwc3pFbnZpcm9u
bWVudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiAgICAgICAg
ICAgICAgIHBzenpDb3JlRHJpdmVyRGVwZW5kZW5jaWVzLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgIGNDb3JlUHJpbnRlckRyaXZlcnMs
DQogICAgICBQQ09SRV9QUklOVEVSX0RSSVZFUlcgIHBDb3JlUHJpbnRlckRyaXZlcnMNCiAgICAp
Ow0KDQoNCg0KDQojbGluZSAzNjAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Bvb2wuaCINCg0KICAgIEhS
RVNVTFQNCiAgICBfX3N0ZGNhbGwNCiAgICBDb3JlUHJpbnRlckRyaXZlckluc3RhbGxlZEEoDQog
ICAgICAgICAgICAgICAgIExQQ1NUUiAgICAgcHN6U2VydmVyLA0KICAgICAgICAgICAgICAgICBM
UENTVFIgICAgIHBzekVudmlyb25tZW50LA0KICAgICAgICAgICAgICAgICAgICAgR1VJRCAgICAg
ICAgIENvcmVEcml2ZXJHVUlELA0KICAgICAgICAgICAgICAgICAgICAgRklMRVRJTUUgICAgIGZ0
RHJpdmVyRGF0ZSwNCiAgICAgICAgICAgICAgICAgICAgIERXT1JETE9ORyAgICBkd2xEcml2ZXJW
ZXJzaW9uLA0KICAgICAgICAgICAgICAgICAgICBCT09MICAgICAgICAgKnBiRHJpdmVySW5zdGFs
bGVkDQogICAgKTsNCiAgICBIUkVTVUxUDQogICAgX19zdGRjYWxsDQogICAgQ29yZVByaW50ZXJE
cml2ZXJJbnN0YWxsZWRXKA0KICAgICAgICAgICAgICAgICBMUENXU1RSICAgICBwc3pTZXJ2ZXIs
DQogICAgICAgICAgICAgICAgIExQQ1dTVFIgICAgIHBzekVudmlyb25tZW50LA0KICAgICAgICAg
ICAgICAgICAgICAgR1VJRCAgICAgICAgIENvcmVEcml2ZXJHVUlELA0KICAgICAgICAgICAgICAg
ICAgICAgRklMRVRJTUUgICAgIGZ0RHJpdmVyRGF0ZSwNCiAgICAgICAgICAgICAgICAgICAgIERX
T1JETE9ORyAgICBkd2xEcml2ZXJWZXJzaW9uLA0KICAgICAgICAgICAgICAgICAgICBCT09MICAg
ICAgICAgKnBiRHJpdmVySW5zdGFsbGVkDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMzYyNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCiAgICBIUkVTVUxUDQogICAgX19zdGRjYWxsDQogICAg
R2V0UHJpbnRlckRyaXZlclBhY2thZ2VQYXRoQSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMUENTVFIgICAgICBwc3pTZXJ2ZXIsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTFBDU1RSICAgICAgcHN6RW52aXJvbm1lbnQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDU1RSICAgICAgcHN6TGFuZ3VhZ2Us
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1NUUiAgICAg
IHBzelBhY2thZ2VJRCwNCiAgICAgICAgIExQU1RSICAgICAgIHBzekRyaXZlclBhY2thZ2VDYWIs
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICBj
Y2hEcml2ZXJQYWNrYWdlQ2FiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExQRFdPUkQgICAgICAgcGNjaFJlcXVpcmVkU2l6ZQ0KICAgICk7DQogICAgSFJFU1VM
VA0KICAgIF9fc3RkY2FsbA0KICAgIEdldFByaW50ZXJEcml2ZXJQYWNrYWdlUGF0aFcoDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiAgICAgIHBzelNlcnZl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSICAgICAg
cHN6RW52aXJvbm1lbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TFBDV1NUUiAgICAgIHBzekxhbmd1YWdlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMUENXU1RSICAgICAgcHN6UGFja2FnZUlELA0KICAgICAgICAgTFBXU1RS
ICAgICAgIHBzekRyaXZlclBhY2thZ2VDYWIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFdPUkQgICAgICAgICBjY2hEcml2ZXJQYWNrYWdlQ2FiLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQRFdPUkQgICAgICAgcGNjaFJlcXVp
cmVkU2l6ZQ0KICAgICk7DQoNCg0KDQoNCiNsaW5lIDM2NTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9v
bC5oIg0KDQogICAgSFJFU1VMVA0KICAgIF9fc3RkY2FsbA0KICAgIERlbGV0ZVByaW50ZXJEcml2
ZXJQYWNrYWdlQSgNCiAgICAgICAgTFBDU1RSICAgIHBzelNlcnZlciwNCiAgICAgICAgICAgIExQ
Q1NUUiAgICBwc3pJbmZQYXRoLA0KICAgICAgICBMUENTVFIgICAgcHN6RW52aXJvbm1lbnQNCiAg
ICApOw0KICAgIEhSRVNVTFQNCiAgICBfX3N0ZGNhbGwNCiAgICBEZWxldGVQcmludGVyRHJpdmVy
UGFja2FnZVcoDQogICAgICAgIExQQ1dTVFIgICAgcHN6U2VydmVyLA0KICAgICAgICAgICAgTFBD
V1NUUiAgICBwc3pJbmZQYXRoLA0KICAgICAgICBMUENXU1RSICAgIHBzekVudmlyb25tZW50DQog
ICAgKTsNCg0KDQoNCg0KI2xpbmUgMzY3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCiAg
ICB0eXBlZGVmIGVudW0NCiAgICB7DQogICAgICAgIGtQcm9wZXJ0eVR5cGVTdHJpbmcgPSAxLA0K
ICAgICAgICBrUHJvcGVydHlUeXBlSW50MzIsDQogICAgICAgIGtQcm9wZXJ0eVR5cGVJbnQ2NCwN
CiAgICAgICAga1Byb3BlcnR5VHlwZUJ5dGUsDQogICAgICAgIGtQcm9wZXJ0eVR5cGVUaW1lLA0K
ICAgICAgICBrUHJvcGVydHlUeXBlRGV2TW9kZSwNCiAgICAgICAga1Byb3BlcnR5VHlwZVNELA0K
ICAgICAgICBrUHJvcGVydHlUeXBlTm90aWZpY2F0aW9uUmVwbHksDQogICAgICAgIGtQcm9wZXJ0
eVR5cGVOb3RpZmljYXRpb25PcHRpb25zLA0KICAgICAgICBrUHJvcGVydHlUeXBlQnVmZmVyDQoN
CiAgICB9IEVQcmludFByb3BlcnR5VHlwZTsNCg0KICAgIHR5cGVkZWYgZW51bQ0KICAgIHsNCiAg
ICAgICAga0FkZGluZ0RvY3VtZW50U2VxdWVuY2UgPSAwLA0KICAgICAgICBrRG9jdW1lbnRTZXF1
ZW5jZUFkZGVkICA9IDEsDQogICAgICAgIGtBZGRpbmdGaXhlZERvY3VtZW50ICAgID0gMiwNCiAg
ICAgICAga0ZpeGVkRG9jdW1lbnRBZGRlZCAgICAgPSAzLA0KICAgICAgICBrQWRkaW5nRml4ZWRQ
YWdlICAgICAgICA9IDQsDQogICAgICAgIGtGaXhlZFBhZ2VBZGRlZCAgICAgICAgID0gNSwNCiAg
ICAgICAga1Jlc291cmNlQWRkZWQgICAgICAgICAgPSA2LA0KICAgICAgICBrRm9udEFkZGVkICAg
ICAgICAgICAgICA9IDcsDQogICAgICAgIGtJbWFnZUFkZGVkICAgICAgICAgICAgID0gOCwNCiAg
ICAgICAga1hwc0RvY3VtZW50Q29tbWl0dGVkICAgPSA5DQoNCiAgICB9IEVQcmludFhQU0pvYlBy
b2dyZXNzOw0KDQogICAgdHlwZWRlZiBlbnVtDQogICAgew0KICAgICAgICBrSm9iUHJvZHVjdGlv
biA9IDEsDQogICAgICAgIGtKb2JDb25zdW1wdGlvbg0KDQogICAgfSBFUHJpbnRYUFNKb2JPcGVy
YXRpb247DQoNCiAgICB0eXBlZGVmIHN0cnVjdA0KICAgIHsNCiAgICAgICAgRVByaW50UHJvcGVy
dHlUeXBlICAgICAgIGVQcm9wZXJ0eVR5cGU7DQogICAgICAgIHVuaW9uDQogICAgICAgIHsNCiAg
ICAgICAgICAgIEJZVEUgICAgICAgICAgICAgICAgIHByb3BlcnR5Qnl0ZTsNCiAgICAgICAgICAg
IFBXU1RSICAgICAgICAgICAgICAgIHByb3BlcnR5U3RyaW5nOw0KICAgICAgICAgICAgTE9ORyAg
ICAgICAgICAgICAgICAgcHJvcGVydHlJbnQzMjsNCiAgICAgICAgICAgIExPTkdMT05HICAgICAg
ICAgICAgIHByb3BlcnR5SW50NjQ7DQogICAgICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAg
ICAgIERXT1JEICBjYkJ1ZjsNCiAgICAgICAgICAgICAgICBMUFZPSUQgcEJ1ZjsNCiAgICAgICAg
ICAgIH0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5QmxvYjsNCiAgICAgICAgfSB2YWx1ZTsN
Cg0KICAgIH1QcmludFByb3BlcnR5VmFsdWU7DQoNCiAgICB0eXBlZGVmIHN0cnVjdA0KICAgIHsN
CiAgICAgICAgV0NIQVIqICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOw0KICAgICAgICBQ
cmludFByb3BlcnR5VmFsdWUgICAgICBwcm9wZXJ0eVZhbHVlOw0KDQogICAgfVByaW50TmFtZWRQ
cm9wZXJ0eTsNCg0KICAgIHR5cGVkZWYgc3RydWN0DQogICAgew0KICAgICAgICBVTE9ORyAgICAg
ICAgICAgICAgICAgICBudW1iZXJPZlByb3BlcnRpZXM7DQogICAgICAgIFByaW50TmFtZWRQcm9w
ZXJ0eSogICAgIHByb3BlcnRpZXNDb2xsZWN0aW9uOw0KDQogICAgfVByaW50UHJvcGVydGllc0Nv
bGxlY3Rpb247DQoNCiAgICBIUkVTVUxUDQogICAgX19zdGRjYWxsDQogICAgUmVwb3J0Sm9iUHJv
Y2Vzc2luZ1Byb2dyZXNzKA0KICAgICAgICAgICAgIEhBTkRMRSAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmludGVySGFuZGxlLA0KICAgICAgICAgICAgICAgIFVMT05HICAgICAgICAgICAgICAg
ICAgICAgICAgICBqb2JJZCwNCiAgICAgICAgICAgICAgICBFUHJpbnRYUFNKb2JPcGVyYXRpb24g
ICAgICAgICAgam9iT3BlcmF0aW9uLA0KICAgICAgICAgICAgICAgIEVQcmludFhQU0pvYlByb2dy
ZXNzICAgICAgICAgICBqb2JQcm9ncmVzcw0KICAgICAgICApOw0KDQogICAgQk9PTA0KICAgIF9f
c3RkY2FsbA0KICAgIEdldFByaW50ZXJEcml2ZXIyQSgNCiAgICAgICAgICAgICBIV05EICAgIGhX
bmQsDQogICAgICAgICAgICAgICAgIEhBTkRMRSAgaFByaW50ZXIsDQogICAgICAgICAgICAgTFBT
VFIgcEVudmlyb25tZW50LA0KICAgICAgICAgICAgICAgICAgICBEV09SRCAgIExldmVsLA0KICAg
ICAgICAgDQogICAgICAgICAgICAgICAgICAgIExQQllURSAgcERyaXZlckluZm8sDQogICAgICAg
ICAgICAgICAgICAgIERXT1JEICAgY2JCdWYsDQogICAgICAgICAgICAgICAgTFBEV09SRCBwY2JO
ZWVkZWQNCiAgICApOw0KICAgIEJPT0wNCiAgICBfX3N0ZGNhbGwNCiAgICBHZXRQcmludGVyRHJp
dmVyMlcoDQogICAgICAgICAgICAgSFdORCAgICBoV25kLA0KICAgICAgICAgICAgICAgICBIQU5E
TEUgIGhQcmludGVyLA0KICAgICAgICAgICAgIExQV1NUUiBwRW52aXJvbm1lbnQsDQogICAgICAg
ICAgICAgICAgICAgIERXT1JEICAgTGV2ZWwsDQogICAgICAgICANCiAgICAgICAgICAgICAgICAg
ICAgTFBCWVRFICBwRHJpdmVySW5mbywNCiAgICAgICAgICAgICAgICAgICAgRFdPUkQgICBjYkJ1
ZiwNCiAgICAgICAgICAgICAgICBMUERXT1JEIHBjYk5lZWRlZA0KICAgICk7DQoNCg0KDQoNCiNs
aW5lIDM3ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQojbGluZSAzNzgzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcd2luc3Bvb2wuaCINCg0KDQoNCnR5cGVkZWYgZW51bQ0Kew0KICAgIFBSSU5UX0VYRUNV
VElPTl9DT05URVhUX0FQUExJQ0FUSU9OID0gMCwNCiAgICBQUklOVF9FWEVDVVRJT05fQ09OVEVY
VF9TUE9PTEVSX1NFUlZJQ0UgPSAxLA0KICAgIFBSSU5UX0VYRUNVVElPTl9DT05URVhUX1NQT09M
RVJfSVNPTEFUSU9OX0hPU1QgPSAyLA0KICAgIFBSSU5UX0VYRUNVVElPTl9DT05URVhUX0ZJTFRF
Ul9QSVBFTElORSA9IDMsDQogICAgUFJJTlRfRVhFQ1VUSU9OX0NPTlRFWFRfV09XNjQgPSA0DQp9
DQpQUklOVF9FWEVDVVRJT05fQ09OVEVYVDsNCg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgICBQUklO
VF9FWEVDVVRJT05fQ09OVEVYVCBjb250ZXh0Ow0KICAgIERXT1JEICAgICAgICAgICAgICAgICAg
IGNsaWVudEFwcFBJRDsNCn0NClBSSU5UX0VYRUNVVElPTl9EQVRBOw0KDQpCT09MDQpfX3N0ZGNh
bGwNCkdldFByaW50RXhlY3V0aW9uRGF0YSgNCiAgICAgIFBSSU5UX0VYRUNVVElPTl9EQVRBICpw
RGF0YQ0KICAgICk7DQoNCg0KI2xpbmUgMzgxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMzg3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0K
DQoNCiNsaW5lIDM4ODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KDQoNCiNsaW5lIDM4ODUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5zcG9vbC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQojcHJhZ21h
IHdhcm5pbmcocG9wKQ0KI2xpbmUgMzg5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0K
fQ0KI2xpbmUgMzg5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQoNCg0KI2xpbmUgMzg5NyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnNwb29sLmgiDQojbGluZSAyMTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dz
LmgiDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlMi5oIg0KDQoNCg0KDQojcHJhZ21h
IHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQwMDEpIA0KI2xpbmUgOCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG9sZTIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGUyLmgiDQoNCg0KI2xpbmUgMSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEg
cGFjayhwdXNoLDgpDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCIN
Cg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KI2xpbmUgMzQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCINCiNsaW5lIDI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlMi5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamJhc2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBj
bmRyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVz
aCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQwMDEpIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6NDI1NSkgDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NjY4KSANCiNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socHVzaCw4KQ0KDQoNCiNsaW5lIDMw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4LmgiDQoNCg0KI2xpbmUgMzMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccHNocGFjazguaCINCiNsaW5lIDM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4Lmgi
DQojbGluZSA0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KDQojbGluZSAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxccnBjbnNpcC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHJwY25zaXAuaCINCg0K
DQpleHRlcm4gIkMiIHsNCiNsaW5lIDI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccnBjbnNpcC5oIg0KDQojcHJh
Z21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0DQp7DQogICBSUENf
TlNfSEFORExFICAgICAgICBMb29rdXBDb250ZXh0Ow0KICAgUlBDX0JJTkRJTkdfSEFORExFICAg
UHJvcG9zZWRIYW5kbGU7DQogICBSUENfQklORElOR19WRUNUT1IgKiBCaW5kaW5nczsNCg0KfSBS
UENfSU1QT1JUX0NPTlRFWFRfUCwgKiBQUlBDX0lNUE9SVF9DT05URVhUX1A7DQoNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY05zR2V0QnVm
ZmVyKA0KICAgICBQUlBDX01FU1NBR0UgTWVzc2FnZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRjYWxsDQpJX1JwY05zU2VuZFJlY2VpdmUoDQogICAg
IFBSUENfTUVTU0FHRSBNZXNzYWdlLA0KICAgICBSUENfQklORElOR19IQU5ETEUgICogSGFuZGxl
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQogDQp2b2lkDQpfX3N0ZGNhbGwNCklf
UnBjTnNSYWlzZUV4Y2VwdGlvbigNCiAgICAgUFJQQ19NRVNTQUdFIE1lc3NhZ2UsDQogICAgIFJQ
Q19TVEFUVVMgU3RhdHVzDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RB
VFVTDQpfX3N0ZGNhbGwNCklfUnBjUmVCaW5kQnVmZmVyKA0KICAgICBQUlBDX01FU1NBR0UgTWVz
c2FnZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NUQVRVUw0KX19zdGRj
YWxsDQpJX05zU2VydmVyQmluZFNlYXJjaCgNCiAgICB2b2lkDQogICAgKTsNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCklfTnNDbGllbnRCaW5kU2VhcmNo
KA0KICAgIHZvaWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3Rk
Y2FsbA0KSV9Oc0NsaWVudEJpbmREb25lKA0KICAgIHZvaWQNCiAgICApOw0KDQojbGluZSA5NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHJwY25zaXAuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUg
MTAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxccnBjbnNpcC5oIg0KDQojbGluZSAxMDMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxy
cGNuc2lwLmgiDQojbGluZSA1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCiNsaW5lIDUy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRc
XHJwY3NhbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KDQoNCg0KI2xpbmUgMTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY3NhbC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAxNTQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjc2FsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp9DQojbGluZSAzMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBj
c2FsLmgiDQoNCiNsaW5lIDU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KDQoNCmV4dGVy
biAiQyIgew0KI2xpbmUgNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQoNCiNwcmFnbWEg
cmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1p
bHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KDQoNCiNs
aW5lIDEyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDEzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KI2xpbmUgMTM3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHJwY25kci5oIg0KDQoNCg0KI2xpbmUgMTQxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJw
Y25kci5oIg0KDQojbGluZSAxNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQoNCg0KDQoj
bGluZSAxNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQoNCiNsaW5lIDE0OSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxycGNuZHIuaCINCg0KDQoNCg0KDQojbGluZSAxNTUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjbmRyLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25k
ci5oIg0KDQoNCg0KDQoNCiNsaW5lIDE2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0K
DQoNCg0KDQojbGluZSAxNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQoNCg0KDQoNCg0K
I2xpbmUgMTc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KDQoNCg0KDQoNCiNsaW5lIDE4
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KDQoNCg0KDQoNCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBieXRlOw0KdHlwZWRlZiBieXRlIGNzX2J5dGU7DQp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgYm9vbGVhbjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjA1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHJwY25kci5oIg0KDQojbGluZSAyMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
IA0KICAgDQp2b2lkICAqIF9fc3RkY2FsbCBNSURMX3VzZXJfYWxsb2NhdGUoICAgc2l6ZV90IHNp
emUpOw0Kdm9pZCAgICAgICAgX19zdGRjYWxsIE1JRExfdXNlcl9mcmVlKCAgICAgdm9pZCAgKiAp
Ow0KDQoNCiAgIA0Kdm9pZCAqIF9fc3RkY2FsbCBJX1JwY0RlZmF1bHRBbGxvY2F0ZSgNCiAgICAg
ICAgIGhhbmRsZV90IGJoLCBzaXplX3Qgc2l6ZSwgdm9pZCAqICgqIFJlYWxBbGxvYykoc2l6ZV90
KSApOw0KDQp2b2lkIF9fc3RkY2FsbCBJX1JwY0RlZmF1bHRGcmVlKA0KICAgICAgICAgaGFuZGxl
X3QgYmgsIHZvaWQgKiwgdm9pZCAoKlJlYWxGcmVlKSh2b2lkICopICk7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHZvaWQgICogTkRSX0NDT05URVhUOw0KDQp0eXBlZGVm
IHN0cnVjdA0KICAgIHsNCiAgICB2b2lkICAqIHBhZFsyXTsNCiAgICB2b2lkICAqIHVzZXJDb250
ZXh0Ow0KICAgIH0gICogTkRSX1NDT05URVhUOw0KDQoNCg0KDQoNCnR5cGVkZWYgdm9pZCAoX19z
dGRjYWxsICAqIE5EUl9SVU5ET1dOKSh2b2lkICAqIGNvbnRleHQpOw0KDQp0eXBlZGVmIHZvaWQg
KF9fc3RkY2FsbCAgKiBORFJfTk9USUZZX1JPVVRJTkUpKHZvaWQpOw0KDQp0eXBlZGVmIHZvaWQg
KF9fc3RkY2FsbCAgKiBORFJfTk9USUZZMl9ST1VUSU5FKShib29sZWFuIGZsYWcpOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfU0NPTlRFWFRfUVVFVUUgew0KICAgIHVuc2lnbmVkIGxvbmcgICBOdW1iZXJP
Zk9iamVjdHM7DQogICAgTkRSX1NDT05URVhUICAqIEFycmF5T2ZPYmplY3RzOw0KICAgIH0gU0NP
TlRFWFRfUVVFVUUsICAqIFBTQ09OVEVYVF9RVUVVRTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpSUENfQklORElOR19IQU5ETEUNCl9fc3RkY2FsbA0KTkRSQ0NvbnRleHRCaW5kaW5nICgNCiAg
ICAgIE5EUl9DQ09OVEVYVCAgICAgQ0NvbnRleHQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTkRSQ0NvbnRleHRNYXJzaGFsbCAoDQogICAgICAgTkRS
X0NDT05URVhUICAgIENDb250ZXh0LA0KICAgICAgdm9pZCAgKnBCdWZmDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5EUkNDb250ZXh0VW5tYXJzaGFs
bCAoDQogICAgICBORFJfQ0NPTlRFWFQgICAgICAgICogICBwQ0NvbnRleHQsDQogICAgICAgUlBD
X0JJTkRJTkdfSEFORExFICAgICAgaEJpbmRpbmcsDQogICAgICAgdm9pZCAgICAgICAgICAgICAg
ICAqICAgcEJ1ZmYsDQogICAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgRGF0YVJlcHJlc2Vu
dGF0aW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwN
Ck5EUkNDb250ZXh0VW5tYXJzaGFsbDIgKA0KICAgICAgTkRSX0NDT05URVhUICAgICAgICAqICAg
cENDb250ZXh0LA0KICAgICAgIFJQQ19CSU5ESU5HX0hBTkRMRSAgICAgIGhCaW5kaW5nLA0KICAg
ICAgIHZvaWQgICAgICAgICAgICAgICAgKiAgIHBCdWZmLA0KICAgICAgIHVuc2lnbmVkIGxvbmcg
ICAgICAgICAgIERhdGFSZXByZXNlbnRhdGlvbg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpORFJTQ29udGV4dE1hcnNoYWxsICgNCiAgICAgICBORFJf
U0NPTlRFWFQgICAgQ0NvbnRleHQsDQogICAgICB2b2lkICAgICAgICAgICogcEJ1ZmYsDQogICAg
ICAgTkRSX1JVTkRPV04gICAgIHVzZXJSdW5Eb3duSW4NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCk5EUl9TQ09OVEVYVA0KX19zdGRjYWxsDQpORFJTQ29udGV4dFVubWFyc2hhbGwg
KA0KICAgICAgIHZvaWQgICAgICAgICAgKiBwQnVmZiwNCiAgICAgICB1bnNpZ25lZCBsb25nICAg
RGF0YVJlcHJlc2VudGF0aW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
DQpfX3N0ZGNhbGwNCk5EUlNDb250ZXh0TWFyc2hhbGxFeCAoDQogICAgICAgUlBDX0JJTkRJTkdf
SEFORExFICBCaW5kaW5nSGFuZGxlLA0KICAgICAgIE5EUl9TQ09OVEVYVCAgICAgICAgQ0NvbnRl
eHQsDQogICAgICB2b2lkICAgICAgICAgICAgICAqIHBCdWZmLA0KICAgICAgIE5EUl9SVU5ET1dO
ICAgICAgICAgdXNlclJ1bkRvd25Jbg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
dm9pZA0KX19zdGRjYWxsDQpORFJTQ29udGV4dE1hcnNoYWxsMiAoDQogICAgICAgUlBDX0JJTkRJ
TkdfSEFORExFICBCaW5kaW5nSGFuZGxlLA0KICAgICAgIE5EUl9TQ09OVEVYVCAgICAgICAgQ0Nv
bnRleHQsDQogICAgICB2b2lkICAgICAgICAgICAgICAqIHBCdWZmLA0KICAgICAgIE5EUl9SVU5E
T1dOICAgICAgICAgdXNlclJ1bkRvd25JbiwNCiAgICAgICB2b2lkICAgICAgICAgICAgICAqIEN0
eEd1YXJkLA0KICAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgRmxhZ3MNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCk5EUl9TQ09OVEVYVA0KX19zdGRjYWxsDQpORFJTQ29udGV4dFVu
bWFyc2hhbGxFeCAoDQogICAgICAgUlBDX0JJTkRJTkdfSEFORExFICBCaW5kaW5nSGFuZGxlLA0K
ICAgICAgIHZvaWQgICAgICAgICAgICAgICogcEJ1ZmYsDQogICAgICAgdW5zaWduZWQgbG9uZyAg
ICAgICBEYXRhUmVwcmVzZW50YXRpb24NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
Ck5EUl9TQ09OVEVYVA0KX19zdGRjYWxsDQpORFJTQ29udGV4dFVubWFyc2hhbGwyKA0KICAgICAg
IFJQQ19CSU5ESU5HX0hBTkRMRSAgQmluZGluZ0hhbmRsZSwNCiAgICAgICB2b2lkICAgICAgICAg
ICAgICAqIHBCdWZmLA0KICAgICAgIHVuc2lnbmVkIGxvbmcgICAgICAgRGF0YVJlcHJlc2VudGF0
aW9uLA0KICAgICAgIHZvaWQgICAgICAgICAgICAgICogQ3R4R3VhcmQsDQogICAgICB1bnNpZ25l
ZCBsb25nICAgICAgICBGbGFncw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9p
ZA0KX19zdGRjYWxsDQpScGNTc0Rlc3Ryb3lDbGllbnRDb250ZXh0ICgNCiAgICAgIHZvaWQgICog
ICogQ29udGV4dEhhbmRsZQ0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ2MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxycGNuZHIuaCINCg0KDQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZXJy
b3Jfc3RhdHVzX3Q7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCnN0cnVjdCBfTUlETF9TVFVCX01FU1NBR0U7DQpzdHJ1Y3QgX01JRExfU1RVQl9ERVND
Ow0Kc3RydWN0IF9GVUxMX1BUUl9YTEFUX1RBQkxFUzsNCg0KdHlwZWRlZiB1bnNpZ25lZCBjaGFy
ICAqICAgIFJQQ19CVUZQVFI7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgUlBDX0xFTkdU
SDsNCg0KDQp0eXBlZGVmIHZvaWQgKF9fc3RkY2FsbCAgKiBFWFBSX0VWQUwpKCBzdHJ1Y3QgX01J
RExfU1RVQl9NRVNTQUdFICAqICk7DQoNCnR5cGVkZWYgY29uc3QgdW5zaWduZWQgY2hhciAgKiBQ
Rk9STUFUX1NUUklORzsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QNCiAgICB7DQogICAgbG9uZyAg
ICAgICAgICAgICAgRGltZW5zaW9uOw0KDQogICAgDQogICAgdW5zaWduZWQgbG9uZyAgKiAgQnVm
ZmVyQ29uZm9ybWFuY2VNYXJrOw0KICAgIHVuc2lnbmVkIGxvbmcgICogIEJ1ZmZlclZhcmlhbmNl
TWFyazsNCg0KICAgIA0KICAgIHVuc2lnbmVkIGxvbmcgICogIE1heENvdW50QXJyYXk7DQogICAg
dW5zaWduZWQgbG9uZyAgKiAgT2Zmc2V0QXJyYXk7DQogICAgdW5zaWduZWQgbG9uZyAgKiAgQWN0
dWFsQ291bnRBcnJheTsNCiAgICB9IEFSUkFZX0lORk8sICAqUEFSUkFZX0lORk87DQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX05EUl9BU1lOQ19NRVNTQUdFICogICBQTkRSX0FTWU5DX01FU1NBR0U7DQp0
eXBlZGVmIHN0cnVjdCBfTkRSX0NPUlJFTEFUSU9OX0lORk8gKlBORFJfQ09SUkVMQVRJT05fSU5G
TzsNCg0KDQoNCg0KDQp0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNoYXIgICogUEZPUk1BVF9TVFJJ
Tkc7DQp0eXBlZGVmIHN0cnVjdCBfTUlETF9TWU5UQVhfSU5GTyBNSURMX1NZTlRBWF9JTkZPLCAq
UE1JRExfU1lOVEFYX0lORk87DQoNCnN0cnVjdCBORFJfQUxMT0NfQUxMX05PREVTX0NPTlRFWFQ7
DQpzdHJ1Y3QgTkRSX1BPSU5URVJfUVVFVUVfU1RBVEU7DQpzdHJ1Y3QgX05EUl9QUk9DX0NPTlRF
WFQ7DQoNCnR5cGVkZWYgc3RydWN0IF9NSURMX1NUVUJfTUVTU0FHRQ0KICAgIHsNCiAgICANCiAg
ICBQUlBDX01FU1NBR0UgICAgICAgICAgICBScGNNc2c7DQoNCiAgICANCiAgICB1bnNpZ25lZCBj
aGFyICAgICAgICogICBCdWZmZXI7DQoNCiAgICANCg0KDQoNCiAgICB1bnNpZ25lZCBjaGFyICAg
ICAgICogICBCdWZmZXJTdGFydDsNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICogICBCdWZmZXJF
bmQ7DQoNCiAgICANCg0KDQoNCg0KDQoNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICogICBCdWZm
ZXJNYXJrOw0KDQogICAgDQogICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgQnVmZmVyTGVuZ3Ro
Ow0KDQogICAgDQogICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgTWVtb3J5U2l6ZTsNCg0KICAg
IA0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgKiAgIE1lbW9yeTsNCg0KICAgIA0KICAgIHVuc2ln
bmVkIGNoYXIgICAgICAgICAgIElzQ2xpZW50Ow0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAg
IFBhZDsNCiAgICB1bnNpZ25lZCBzaG9ydCAgICAgICAgICB1RmxhZ3MyOw0KDQogICAgDQogICAg
aW50ICAgICAgICAgICAgICAgICAgICAgUmV1c2VCdWZmZXI7DQoNCiAgICANCiAgICBzdHJ1Y3Qg
TkRSX0FMTE9DX0FMTF9OT0RFU19DT05URVhUICpwQWxsb2NBbGxOb2Rlc0NvbnRleHQ7DQogICAg
c3RydWN0IE5EUl9QT0lOVEVSX1FVRVVFX1NUQVRFICAgICAqcFBvaW50ZXJRdWV1ZVN0YXRlOw0K
DQogICAgDQoNCg0KDQogICAgDQogICAgaW50ICAgICAgICAgICAgICAgICAgICAgSWdub3JlRW1i
ZWRkZWRQb2ludGVyczsNCg0KICAgIA0KDQoNCg0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgKiAg
IFBvaW50ZXJCdWZmZXJNYXJrOw0KDQogICAgDQoNCg0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAg
ICAgIENvcnJEZXNwSW5jcmVtZW50Ow0KDQogICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgdUZs
YWdzOw0KICAgIHVuc2lnbmVkIHNob3J0ICAgICAgICAgIFVuaXF1ZVB0ckNvdW50Ow0KDQogICAg
DQoNCg0KDQogICAgVUxPTkdfUFRSICAgICAgICAgICAgICAgTWF4Q291bnQ7DQoNCiAgICANCg0K
DQoNCiAgICB1bnNpZ25lZCBsb25nICAgICAgICAgICBPZmZzZXQ7DQoNCiAgICANCg0KDQoNCiAg
ICB1bnNpZ25lZCBsb25nICAgICAgICAgICBBY3R1YWxDb3VudDsNCg0KICAgIA0KICAgIHZvaWQg
ICogICAgICAgICAgICAgKCBfX3N0ZGNhbGwgKiBwZm5BbGxvY2F0ZSkoIHNpemVfdCApOw0KICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICggX19zdGRjYWxsICogcGZuRnJlZSkodm9pZCAgKik7
DQoNCiAgICANCg0KDQoNCg0KDQogICAgdW5zaWduZWQgY2hhciAgICAgICAqICAgU3RhY2tUb3A7
DQoNCiAgICANCg0KDQoNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICogICBwUHJlc2VudGVkVHlw
ZTsNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICogICBwVHJhbnNtaXRUeXBlOw0KDQogICAgDQoN
Cg0KDQoNCg0KDQoNCiAgICBoYW5kbGVfdCAgICAgICAgICAgICAgICBTYXZlZEhhbmRsZTsNCg0K
ICAgIA0KDQoNCiAgICBjb25zdCBzdHJ1Y3QgX01JRExfU1RVQl9ERVNDICAqIFN0dWJEZXNjOw0K
DQogICAgDQoNCg0KICAgIHN0cnVjdCBfRlVMTF9QVFJfWExBVF9UQUJMRVMgICogRnVsbFB0clhs
YXRUYWJsZXM7DQogICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICAgICAgICBGdWxsUHRyUmVm
SWQ7DQoNCiAgICB1bnNpZ25lZCBsb25nICAgICAgICAgICAgICAgICAgIFBvaW50ZXJMZW5ndGg7
DQoNCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZJbkRvbnRGcmVlICAgICAg
IDoxOw0KICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkRvbnRDYWxsRnJlZUlu
c3QgOjE7DQogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVW51c2VkMSAgICAg
ICAgICA6MTsNCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZIYXNSZXR1cm4g
ICAgICAgIDoxOw0KICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkhhc0V4dGVu
c2lvbnMgICAgOjE7DQogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmSGFzTmV3
Q29yckRlc2MgICA6MTsNCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZJc0lu
ICAgICAgICAgICAgIDoxOw0KICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZklz
T3V0ICAgICAgICAgICAgOjE7DQogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
SXNPaWNmICAgICAgICAgICA6MTsNCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZCdWZmZXJWYWxpZCAgICAgIDoxOw0KICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZkhhc01lbW9yeVZhbGlkYXRlQ2FsbGJhY2s6IDE7DQogICAgaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmSW5GcmVlICAgICAgICAgICAgIDoxOw0KICAgIGludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZk5lZWRNQ0NQICAgICAgICAgOjE7DQogICAgaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmVW51c2VkMiAgICAgICAgICA6MzsNCiAgICBpbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZVbnVzZWQzICAgICAgICAgIDoxNjsNCg0KDQogICAgdW5z
aWduZWQgbG9uZyAgICAgICAgICAgICAgICAgICBkd0Rlc3RDb250ZXh0Ow0KICAgIHZvaWQgICog
ICAgICAgICAgICAgICAgICAgICAgICAgcHZEZXN0Q29udGV4dDsNCg0KICAgIE5EUl9TQ09OVEVY
VCAqICAgICAgICAgICAgICAgICAgU2F2ZWRDb250ZXh0SGFuZGxlczsNCg0KICAgIGxvbmcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1OdW1iZXI7DQoNCiAgICBzdHJ1Y3QgSVJwY0No
YW5uZWxCdWZmZXIgICAgKiAgIHBScGNDaGFubmVsQnVmZmVyOw0KDQogICAgUEFSUkFZX0lORk8g
ICAgICAgICAgICAgICAgICAgICBwQXJyYXlJbmZvOw0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAg
ICAgICogICAgICAgU2l6ZVB0ckNvdW50QXJyYXk7DQogICAgdW5zaWduZWQgbG9uZyAgICAgICAg
ICAgKiAgICAgICBTaXplUHRyT2Zmc2V0QXJyYXk7DQogICAgdW5zaWduZWQgbG9uZyAgICAgICAg
ICAgKiAgICAgICBTaXplUHRyTGVuZ3RoQXJyYXk7DQoNCiAgICANCg0KDQogICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgKiAgICAgICBwQXJnUXVldWU7DQoNCiAgICB1bnNpZ25lZCBsb25nICAg
ICAgICAgICAgICAgICAgIGR3U3R1YlBoYXNlOw0KDQogICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgKiAgICAgICBMb3dTdGFja01hcms7DQoNCiAgICANCg0KDQogICAgUE5EUl9BU1lOQ19NRVNT
QUdFICAgICAgICAgICAgICBwQXN5bmNNc2c7DQogICAgUE5EUl9DT1JSRUxBVElPTl9JTkZPICAg
ICAgICAgICBwQ29yckluZm87DQogICAgdW5zaWduZWQgY2hhciAqICAgICAgICAgICAgICAgICBw
Q29yck1lbW9yeTsNCg0KICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgcE1lbW9y
eUxpc3Q7DQoNCiAgICANCg0KDQoNCg0KDQogICAgDQoNCg0KICAgIElOVF9QVFIgICAgICAgICAg
ICAgICAgICAgICAgICAgcENTSW5mbzsNCg0KICAgIHVuc2lnbmVkIGNoYXIgKiAgICAgICAgICAg
ICAgICAgQ29uZm9ybWFuY2VNYXJrOw0KICAgIHVuc2lnbmVkIGNoYXIgKiAgICAgICAgICAgICAg
ICAgVmFyaWFuY2VNYXJrOw0KDQogICAgSU5UX1BUUiAgICAgICAgICAgICAgICAgICAgICAgICBV
bnVzZWQ7DQoNCiAgICBzdHJ1Y3QgX05EUl9QUk9DX0NPTlRFWFQgKiAgICAgIHBDb250ZXh0Ow0K
DQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb250ZXh0SGFuZGxlSGFzaDsNCiAgICB2b2lkICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBVc2VyTWFyc2hhbExpc3Q7DQogICAgSU5UX1BUUiAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXNlcnZlZDUxXzM7DQogICAgSU5UX1BUUiAgICAgICAgICAgICAgICAgICAgICAg
ICBSZXNlcnZlZDUxXzQ7DQogICAgSU5UX1BUUiAgICAgICAgICAgICAgICAgICAgICAgICBSZXNl
cnZlZDUxXzU7DQoNCg0KICAgIA0KDQoNCiAgICB9IE1JRExfU1RVQl9NRVNTQUdFLCAgKlBNSURM
X1NUVUJfTUVTU0FHRTsNCg0KDQp0eXBlZGVmICBzdHJ1Y3QgX01JRExfU1RVQl9NRVNTQUdFIE1J
RExfU1RVQl9NRVNTQUdFLCAgICpQTUlETF9TVFVCX01FU1NBR0U7DQoNCg0KDQoNCnR5cGVkZWYg
dm9pZCAgKg0KICAgICAgICAoIF9fc3RkY2FsbCAqIEdFTkVSSUNfQklORElOR19ST1VUSU5FKQ0K
ICAgICAgICAodm9pZCAgKik7DQp0eXBlZGVmIHZvaWQNCiAgICAgICAgKCBfX3N0ZGNhbGwgKiBH
RU5FUklDX1VOQklORF9ST1VUSU5FKQ0KICAgICAgICAodm9pZCAgKiwgdW5zaWduZWQgY2hhciAg
Kik7DQoNCnR5cGVkZWYgc3RydWN0IF9HRU5FUklDX0JJTkRJTkdfUk9VVElORV9QQUlSDQogICAg
ew0KICAgIEdFTkVSSUNfQklORElOR19ST1VUSU5FICAgICBwZm5CaW5kOw0KICAgIEdFTkVSSUNf
VU5CSU5EX1JPVVRJTkUgICAgICBwZm5VbmJpbmQ7DQogICAgfSBHRU5FUklDX0JJTkRJTkdfUk9V
VElORV9QQUlSLCAgKlBHRU5FUklDX0JJTkRJTkdfUk9VVElORV9QQUlSOw0KDQp0eXBlZGVmIHN0
cnVjdCBfX0dFTkVSSUNfQklORElOR19JTkZPDQogICAgew0KICAgIHZvaWQgICogICAgICAgICAg
ICBwT2JqOw0KICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgICAgICBTaXplOw0KICAgIEdFTkVS
SUNfQklORElOR19ST1VUSU5FICAgICBwZm5CaW5kOw0KICAgIEdFTkVSSUNfVU5CSU5EX1JPVVRJ
TkUgICAgICBwZm5VbmJpbmQ7DQogICAgfSBHRU5FUklDX0JJTkRJTkdfSU5GTywgICpQR0VORVJJ
Q19CSU5ESU5HX0lORk87DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NDQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccnBjbmRyLmgiDQoNCnR5cGVkZWYgdm9pZCAoIF9fc3RkY2FsbCAqIFhNSVRfSEVMUEVS
X1JPVVRJTkUpDQogICAgKCBQTUlETF9TVFVCX01FU1NBR0UgKTsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X1hNSVRfUk9VVElORV9RVUlOVFVQTEUNCiAgICB7DQogICAgWE1JVF9IRUxQRVJfUk9VVElORSAg
ICAgcGZuVHJhbnNsYXRlVG9YbWl0Ow0KICAgIFhNSVRfSEVMUEVSX1JPVVRJTkUgICAgIHBmblRy
YW5zbGF0ZUZyb21YbWl0Ow0KICAgIFhNSVRfSEVMUEVSX1JPVVRJTkUgICAgIHBmbkZyZWVYbWl0
Ow0KICAgIFhNSVRfSEVMUEVSX1JPVVRJTkUgICAgIHBmbkZyZWVJbnN0Ow0KICAgIH0gWE1JVF9S
T1VUSU5FX1FVSU5UVVBMRSwgICpQWE1JVF9ST1VUSU5FX1FVSU5UVVBMRTsNCg0KdHlwZWRlZiB1
bnNpZ25lZCBsb25nDQooIF9fc3RkY2FsbCAqIFVTRVJfTUFSU0hBTF9TSVpJTkdfUk9VVElORSkN
CiAgICAodW5zaWduZWQgbG9uZyAgKiwNCiAgICAgdW5zaWduZWQgbG9uZywNCiAgICAgdm9pZCAg
KiApOw0KDQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICoNCiggX19zdGRjYWxsICogVVNFUl9NQVJT
SEFMX01BUlNIQUxMSU5HX1JPVVRJTkUpDQogICAgKHVuc2lnbmVkIGxvbmcgICosDQogICAgIHVu
c2lnbmVkIGNoYXIgICogLA0KICAgICB2b2lkICAqICk7DQoNCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciAgKg0KKCBfX3N0ZGNhbGwgKiBVU0VSX01BUlNIQUxfVU5NQVJTSEFMTElOR19ST1VUSU5FKQ0K
ICAgICh1bnNpZ25lZCBsb25nICAqLA0KICAgICB1bnNpZ25lZCBjaGFyICAqLA0KICAgICB2b2lk
ICAqICk7DQoNCnR5cGVkZWYgdm9pZCAoIF9fc3RkY2FsbCAqIFVTRVJfTUFSU0hBTF9GUkVFSU5H
X1JPVVRJTkUpDQogICAgKHVuc2lnbmVkIGxvbmcgICosDQogICAgIHZvaWQgICogKTsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1VTRVJfTUFSU0hBTF9ST1VUSU5FX1FVQURSVVBMRQ0KICAgIHsNCiAgICBV
U0VSX01BUlNIQUxfU0laSU5HX1JPVVRJTkUgICAgICAgICAgcGZuQnVmZmVyU2l6ZTsNCiAgICBV
U0VSX01BUlNIQUxfTUFSU0hBTExJTkdfUk9VVElORSAgICAgcGZuTWFyc2hhbGw7DQogICAgVVNF
Ul9NQVJTSEFMX1VOTUFSU0hBTExJTkdfUk9VVElORSAgIHBmblVubWFyc2hhbGw7DQogICAgVVNF
Ul9NQVJTSEFMX0ZSRUVJTkdfUk9VVElORSAgICAgICAgIHBmbkZyZWU7DQogICAgfSBVU0VSX01B
UlNIQUxfUk9VVElORV9RVUFEUlVQTEU7DQoNCg0KDQp0eXBlZGVmIGVudW0gX1VTRVJfTUFSU0hB
TF9DQl9UWVBFDQp7DQogICAgVVNFUl9NQVJTSEFMX0NCX0JVRkZFUl9TSVpFLA0KICAgIFVTRVJf
TUFSU0hBTF9DQl9NQVJTSEFMTCwNCiAgICBVU0VSX01BUlNIQUxfQ0JfVU5NQVJTSEFMTCwNCiAg
ICBVU0VSX01BUlNIQUxfQ0JfRlJFRQ0KfSBVU0VSX01BUlNIQUxfQ0JfVFlQRTsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1VTRVJfTUFSU0hBTF9DQg0Kew0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAg
IEZsYWdzOw0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnOw0KICAgIFBGT1JN
QVRfU1RSSU5HICAgICAgICAgIHBSZXNlcnZlOw0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAg
IFNpZ25hdHVyZTsNCiAgICBVU0VSX01BUlNIQUxfQ0JfVFlQRSAgICBDQlR5cGU7DQogICAgUEZP
Uk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdDsNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAg
ICBwVHlwZUZvcm1hdDsNCn0gVVNFUl9NQVJTSEFMX0NCOw0KDQoNCg0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX01BTExPQ19GUkVFX1NUUlVDVA0KICAgIHsNCiAgICB2b2lkICAqICAgICAo
IF9fc3RkY2FsbCAqIHBmbkFsbG9jYXRlKShzaXplX3QpOw0KICAgIHZvaWQgICAgICAgICggX19z
dGRjYWxsICogcGZuRnJlZSkodm9pZCAgKik7DQogICAgfSBNQUxMT0NfRlJFRV9TVFJVQ1Q7DQoN
CnR5cGVkZWYgc3RydWN0IF9DT01NX0ZBVUxUX09GRlNFVFMNCiAgICB7DQogICAgc2hvcnQgICAg
ICAgQ29tbU9mZnNldDsNCiAgICBzaG9ydCAgICAgICBGYXVsdE9mZnNldDsNCiAgICB9IENPTU1f
RkFVTFRfT0ZGU0VUUzsNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gX0lETF9DU19DT05WRVJUDQog
ICAgew0KICAgIElETF9DU19OT19DT05WRVJULA0KICAgIElETF9DU19JTl9QTEFDRV9DT05WRVJU
LA0KICAgIElETF9DU19ORVdfQlVGRkVSX0NPTlZFUlQNCiAgICB9IElETF9DU19DT05WRVJUOw0K
DQp0eXBlZGVmIHZvaWQNCiggX19zdGRjYWxsICogQ1NfVFlQRV9ORVRfU0laRV9ST1VUSU5FKQ0K
ICAgIChSUENfQklORElOR19IQU5ETEUgICAgIGhCaW5kaW5nLA0KICAgICB1bnNpZ25lZCBsb25n
ICAgICAgICAgIHVsTmV0d29ya0NvZGVTZXQsDQogICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAg
dWxMb2NhbEJ1ZmZlclNpemUsDQogICAgIElETF9DU19DT05WRVJUICAgICAqICAgY29udmVyc2lv
blR5cGUsDQogICAgIHVuc2lnbmVkIGxvbmcgICAgICAqICAgcHVsTmV0d29ya0J1ZmZlclNpemUs
DQogICAgIGVycm9yX3N0YXR1c190ICAgICAqICAgcFN0YXR1cyk7DQoNCnR5cGVkZWYgdm9pZA0K
KCBfX3N0ZGNhbGwgKiBDU19UWVBFX0xPQ0FMX1NJWkVfUk9VVElORSkNCiAgICAoUlBDX0JJTkRJ
TkdfSEFORExFICAgICBoQmluZGluZywNCiAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICB1bE5l
dHdvcmtDb2RlU2V0LA0KICAgICB1bnNpZ25lZCBsb25nICAgICAgICAgIHVsTmV0d29ya0J1ZmZl
clNpemUsDQogICAgIElETF9DU19DT05WRVJUICAgICAqICAgY29udmVyc2lvblR5cGUsDQogICAg
IHVuc2lnbmVkIGxvbmcgICAgICAqICAgcHVsTG9jYWxCdWZmZXJTaXplLA0KICAgICBlcnJvcl9z
dGF0dXNfdCAgICAgKiAgIHBTdGF0dXMpOw0KDQp0eXBlZGVmIHZvaWQNCiggX19zdGRjYWxsICog
Q1NfVFlQRV9UT19ORVRDU19ST1VUSU5FKQ0KICAgIChSUENfQklORElOR19IQU5ETEUgICAgIGhC
aW5kaW5nLA0KICAgICB1bnNpZ25lZCBsb25nICAgICAgICAgIHVsTmV0d29ya0NvZGVTZXQsDQog
ICAgIHZvaWQgICAgICAgICAgICAgICAqICAgcExvY2FsRGF0YSwNCiAgICAgdW5zaWduZWQgbG9u
ZyAgICAgICAgICB1bExvY2FsRGF0YUxlbmd0aCwNCiAgICAgYnl0ZSAgICAgICAgICAgICAgICog
ICBwTmV0d29ya0RhdGEsDQogICAgIHVuc2lnbmVkIGxvbmcgICAgICAqICAgcHVsTmV0d29ya0Rh
dGFMZW5ndGgsDQogICAgIGVycm9yX3N0YXR1c190ICAgICAqICAgcFN0YXR1cyk7DQoNCnR5cGVk
ZWYgdm9pZA0KKCBfX3N0ZGNhbGwgKiBDU19UWVBFX0ZST01fTkVUQ1NfUk9VVElORSkNCiAgICAo
UlBDX0JJTkRJTkdfSEFORExFICAgICBoQmluZGluZywNCiAgICAgdW5zaWduZWQgbG9uZyAgICAg
ICAgICB1bE5ldHdvcmtDb2RlU2V0LA0KICAgICBieXRlICAgICAgICAgICAgICAgKiAgIHBOZXR3
b3JrRGF0YSwNCiAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICB1bE5ldHdvcmtEYXRhTGVuZ3Ro
LA0KICAgICB1bnNpZ25lZCBsb25nICAgICAgICAgIHVsTG9jYWxCdWZmZXJTaXplLA0KICAgICB2
b2lkICAgICAgICAgICAgICAgKiAgIHBMb2NhbERhdGEsDQogICAgIHVuc2lnbmVkIGxvbmcgICAg
ICAqICAgcHVsTG9jYWxEYXRhTGVuZ3RoLA0KICAgICBlcnJvcl9zdGF0dXNfdCAgICAgKiAgIHBT
dGF0dXMpOw0KDQp0eXBlZGVmIHZvaWQNCiggX19zdGRjYWxsICogQ1NfVEFHX0dFVFRJTkdfUk9V
VElORSkNCiAgICAoUlBDX0JJTkRJTkdfSEFORExFICAgICBoQmluZGluZywNCiAgICAgaW50ICAg
ICAgICAgICAgICAgICAgICBmU2VydmVyU2lkZSwNCiAgICAgdW5zaWduZWQgbG9uZyAgICAgICog
ICBwdWxTZW5kaW5nVGFnLA0KICAgICB1bnNpZ25lZCBsb25nICAgICAgKiAgIHB1bERlc2lyZWRS
ZWNlaXZpbmdUYWcsDQogICAgIHVuc2lnbmVkIGxvbmcgICAgICAqICAgcHVsUmVjZWl2aW5nVGFn
LA0KICAgICBlcnJvcl9zdGF0dXNfdCAgICAgKiAgIHBTdGF0dXMpOw0KDQp2b2lkIF9fc3RkY2Fs
bA0KUnBjQ3NHZXRUYWdzKA0KICAgICBSUENfQklORElOR19IQU5ETEUgICAgIGhCaW5kaW5nLA0K
ICAgICBpbnQgICAgICAgICAgICAgICAgICAgIGZTZXJ2ZXJTaWRlLA0KICAgICB1bnNpZ25lZCBs
b25nICAgICAgKiAgIHB1bFNlbmRpbmdUYWcsDQogICAgIHVuc2lnbmVkIGxvbmcgICAgICAqICAg
cHVsRGVzaXJlZFJlY2VpdmluZ1RhZywNCiAgICAgdW5zaWduZWQgbG9uZyAgICAgICogICBwdWxS
ZWNlaXZpbmdUYWcsDQogICAgIGVycm9yX3N0YXR1c190ICAgICAqICAgcFN0YXR1cyk7DQoNCnR5
cGVkZWYgc3RydWN0IF9ORFJfQ1NfU0laRV9DT05WRVJUX1JPVVRJTkVTDQogICAgew0KICAgIENT
X1RZUEVfTkVUX1NJWkVfUk9VVElORSAgICBwZm5OZXRTaXplOw0KICAgIENTX1RZUEVfVE9fTkVU
Q1NfUk9VVElORSAgICBwZm5Ub05ldENzOw0KICAgIENTX1RZUEVfTE9DQUxfU0laRV9ST1VUSU5F
ICBwZm5Mb2NhbFNpemU7DQogICAgQ1NfVFlQRV9GUk9NX05FVENTX1JPVVRJTkUgIHBmbkZyb21O
ZXRDczsNCiAgICB9IE5EUl9DU19TSVpFX0NPTlZFUlRfUk9VVElORVM7DQoNCnR5cGVkZWYgc3Ry
dWN0IF9ORFJfQ1NfUk9VVElORVMNCiAgICB7DQogICAgTkRSX0NTX1NJWkVfQ09OVkVSVF9ST1VU
SU5FUyAgICpwU2l6ZUNvbnZlcnRSb3V0aW5lczsNCiAgICBDU19UQUdfR0VUVElOR19ST1VUSU5F
ICAgICAgICAgKnBUYWdHZXR0aW5nUm91dGluZXM7DQogICAgfSBORFJfQ1NfUk9VVElORVM7DQoN
CnR5cGVkZWYgc3RydWN0IF9ORFJfRVhQUl9ERVNDDQp7DQogICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgKiBwT2Zmc2V0Ow0KICAgIFBGT1JNQVRfU1RSSU5HICBwRm9ybWF0RXhwcjsNCn0gTkRSX0VY
UFJfREVTQzsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX01JRExfU1RVQl9ERVNDDQogICAgew0K
ICAgIHZvaWQgICogICAgUnBjSW50ZXJmYWNlSW5mb3JtYXRpb247DQoNCiAgICB2b2lkICAqICAg
ICggX19zdGRjYWxsICogcGZuQWxsb2NhdGUpKHNpemVfdCk7DQogICAgdm9pZCAgICAgICAoIF9f
c3RkY2FsbCAqIHBmbkZyZWUpKHZvaWQgICopOw0KDQogICAgdW5pb24NCiAgICAgICAgew0KICAg
ICAgICBoYW5kbGVfdCAgKiAgICAgICAgICAgICBwQXV0b0hhbmRsZTsNCiAgICAgICAgaGFuZGxl
X3QgICogICAgICAgICAgICAgcFByaW1pdGl2ZUhhbmRsZTsNCiAgICAgICAgUEdFTkVSSUNfQklO
RElOR19JTkZPICAgcEdlbmVyaWNCaW5kaW5nSW5mbzsNCiAgICAgICAgfSBJTVBMSUNJVF9IQU5E
TEVfSU5GTzsNCg0KICAgIGNvbnN0IE5EUl9SVU5ET1dOICAqICAgICAgICAgICAgICAgICAgICBh
cGZuTmRyUnVuZG93blJvdXRpbmVzOw0KICAgIGNvbnN0IEdFTkVSSUNfQklORElOR19ST1VUSU5F
X1BBSVIgICogICBhR2VuZXJpY0JpbmRpbmdSb3V0aW5lUGFpcnM7DQogICAgY29uc3QgRVhQUl9F
VkFMICAqICAgICAgICAgICAgICAgICAgICAgIGFwZm5FeHByRXZhbDsNCiAgICBjb25zdCBYTUlU
X1JPVVRJTkVfUVVJTlRVUExFICAqICAgICAgICAgYVhtaXRRdWludHVwbGU7DQoNCiAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICAqICAgICAgICAgICAgICAgICAgcEZvcm1hdFR5cGVzOw0KDQogICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZDaGVja0JvdW5kczsNCg0K
ICAgIA0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9u
Ow0KDQogICAgTUFMTE9DX0ZSRUVfU1RSVUNUICAqICAgICAgICAgICAgICAgICAgIHBNYWxsb2NG
cmVlU3RydWN0Ow0KDQogICAgbG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1JRExWZXJzaW9uOw0KDQogICAgY29uc3QgQ09NTV9GQVVMVF9PRkZTRVRTICAqICAgIENvbW1G
YXVsdE9mZnNldHM7DQoNCiAgICANCiAgICBjb25zdCBVU0VSX01BUlNIQUxfUk9VVElORV9RVUFE
UlVQTEUgICogYVVzZXJNYXJzaGFsUXVhZHJ1cGxlOw0KDQogICAgDQogICAgY29uc3QgTkRSX05P
VElGWV9ST1VUSU5FICAqICAgICAgICAgICAgIE5vdGlmeVJvdXRpbmVUYWJsZTsNCg0KICAgIA0K
DQoNCg0KICAgIFVMT05HX1BUUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRmxhZ3M7
DQoNCiAgICANCiAgICBjb25zdCBORFJfQ1NfUk9VVElORVMgKiAgICAgICAgICAgICAgICAgQ3NS
b3V0aW5lVGFibGVzOw0KDQogICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByb3h5U2VydmVySW5mbzsNCiAgICBjb25zdCBORFJfRVhQUl9ERVNDICogICAgICAgICAg
ICAgICBwRXhwckluZm87DQoNCiAgICANCg0KICAgIH0gTUlETF9TVFVCX0RFU0M7DQoNCg0KdHlw
ZWRlZiBjb25zdCBNSURMX1NUVUJfREVTQyAgKiBQTUlETF9TVFVCX0RFU0M7DQoNCnR5cGVkZWYg
dm9pZCAgKiBQTUlETF9YTUlUX1RZUEU7DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhw
dXNoKQ0KI2xpbmUgMTA4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCiNwcmFnbWEgd2Fy
bmluZyggZGlzYWJsZTo0MjAwICkNCiNsaW5lIDEwODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRy
LmgiDQp0eXBlZGVmIHN0cnVjdCBfTUlETF9GT1JNQVRfU1RSSU5HDQogICAgew0KICAgIHNob3J0
ICAgICAgICAgICAgICAgUGFkOw0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgRm9ybWF0W107DQog
ICAgfSBNSURMX0ZPUk1BVF9TVFJJTkc7DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KDQoj
bGluZSAxMDk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KI2xpbmUgMTA5OSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxycGNuZHIuaCINCiNsaW5lIDExMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRy
LmgiDQoNCg0KDQoNCnR5cGVkZWYgdm9pZCAoIF9fc3RkY2FsbCAqIFNUVUJfVEhVTkspKCBQTUlE
TF9TVFVCX01FU1NBR0UgKTsNCg0KDQp0eXBlZGVmIGxvbmcgKCBfX3N0ZGNhbGwgKiBTRVJWRVJf
Uk9VVElORSkoKTsNCg0KDQojbGluZSAxMTExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfTUlETF9NRVRIT0RfUFJPUEVSVFkNCnsNCiAgICB1bnNp
Z25lZCBsb25nICAgICAgICAgICAgICAgICAgICAgICBJZDsNCiAgICBVTE9OR19QVFIgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZTsNCn0gTUlETF9NRVRIT0RfUFJPUEVSVFksICpQTUlE
TF9NRVRIT0RfUFJPUEVSVFk7DQoNCnR5cGVkZWYgc3RydWN0IF9NSURMX01FVEhPRF9QUk9QRVJU
WV9NQVANCnsNCiAgICB1bnNpZ25lZCBsb25nICAgICAgICAgICAgICAgICAgICAgICBDb3VudDsN
CiAgICBjb25zdCBNSURMX01FVEhPRF9QUk9QRVJUWSAgICAgICAgICpQcm9wZXJ0aWVzOw0KfSBN
SURMX01FVEhPRF9QUk9QRVJUWV9NQVAsICpQTUlETF9NRVRIT0RfUFJPUEVSVFlfTUFQOw0KDQp0
eXBlZGVmIHN0cnVjdCBfTUlETF9JTlRFUkZBQ0VfTUVUSE9EX1BST1BFUlRJRVMNCnsNCiAgICB1
bnNpZ25lZCBzaG9ydCBNZXRob2RDb3VudDsNCiAgICBjb25zdCBNSURMX01FVEhPRF9QUk9QRVJU
WV9NQVAqIGNvbnN0ICpNZXRob2RQcm9wZXJ0aWVzOw0KfSBNSURMX0lOVEVSRkFDRV9NRVRIT0Rf
UFJPUEVSVElFUzsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgIF9NSURMX1NFUlZFUl9JTkZPXw0K
ICAgIHsNCiAgICBQTUlETF9TVFVCX0RFU0MgICAgICAgICAgICAgICAgICAgICBwU3R1YkRlc2M7
DQogICAgY29uc3QgU0VSVkVSX1JPVVRJTkUgICAgICogICAgICAgICAgRGlzcGF0Y2hUYWJsZTsN
CiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICAgICAgICAgICAgICBQcm9jU3RyaW5nOw0KICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0ICogICAgICAgICAgICAgIEZtdFN0cmluZ09mZnNldDsNCiAg
ICBjb25zdCBTVFVCX1RIVU5LICogICAgICAgICAgICAgICAgICBUaHVua1RhYmxlOw0KICAgIFBS
UENfU1lOVEFYX0lERU5USUZJRVIgICAgICAgICAgICAgIHBUcmFuc2ZlclN5bnRheDsNCiAgICBV
TE9OR19QVFIgICAgICAgICAgICAgICAgICAgICAgICAgICBuQ291bnQ7DQogICAgUE1JRExfU1lO
VEFYX0lORk8gICAgICAgICAgICAgICAgICAgcFN5bnRheEluZm87DQogICAgfSBNSURMX1NFUlZF
Ul9JTkZPLCAqUE1JRExfU0VSVkVSX0lORk87DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBf
TUlETF9TVFVCTEVTU19QUk9YWV9JTkZPDQogICAgew0KICAgIFBNSURMX1NUVUJfREVTQyAgICAg
ICAgICAgICAgICAgICAgIHBTdHViRGVzYzsNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICAg
ICAgICAgICAgICBQcm9jRm9ybWF0U3RyaW5nOw0KICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAg
ICAgICAgICAgKiAgIEZvcm1hdFN0cmluZ09mZnNldDsNCiAgICBQUlBDX1NZTlRBWF9JREVOVElG
SUVSICAgICAgICAgICAgICBwVHJhbnNmZXJTeW50YXg7DQogICAgVUxPTkdfUFRSICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbkNvdW50Ow0KICAgIFBNSURMX1NZTlRBWF9JTkZPICAgICAgICAg
ICAgICAgICAgIHBTeW50YXhJbmZvOw0KICAgIH0gTUlETF9TVFVCTEVTU19QUk9YWV9JTkZPOw0K
DQp0eXBlZGVmIE1JRExfU1RVQkxFU1NfUFJPWFlfSU5GTyAgKiBQTUlETF9TVFVCTEVTU19QUk9Y
WV9JTkZPOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfTUlETF9TWU5UQVhfSU5GTw0Kew0KUlBD
X1NZTlRBWF9JREVOVElGSUVSICAgICAgICAgICAgICAgVHJhbnNmZXJTeW50YXg7DQpSUENfRElT
UEFUQ0hfVEFCTEUgKiAgICAgICAgICAgICAgICBEaXNwYXRjaFRhYmxlOw0KUEZPUk1BVF9TVFJJ
TkcgICAgICAgICAgICAgICAgICAgICAgUHJvY1N0cmluZzsNCmNvbnN0IHVuc2lnbmVkIHNob3J0
ICogICAgICAgICAgICAgIEZtdFN0cmluZ09mZnNldDsNClBGT1JNQVRfU1RSSU5HICAgICAgICAg
ICAgICAgICAgICAgIFR5cGVTdHJpbmc7DQpjb25zdCB2b2lkICAgICAgICAgICAqICAgICAgICAg
ICAgICBhVXNlck1hcnNoYWxRdWFkcnVwbGU7DQpjb25zdCBNSURMX0lOVEVSRkFDRV9NRVRIT0Rf
UFJPUEVSVElFUyAqcE1ldGhvZFByb3BlcnRpZXM7DQpVTE9OR19QVFIgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwUmVzZXJ2ZWQyOw0KfSBNSURMX1NZTlRBWF9JTkZPLCAqUE1JRExfU1lOVEFY
X0lORk87DQoNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgKiBQQVJBTV9PRkZTRVRUQUJMRSwgKlBQ
QVJBTV9PRkZTRVRUQUJMRTsNCg0KDQoNCg0KDQp0eXBlZGVmIHVuaW9uIF9DTElFTlRfQ0FMTF9S
RVRVUk4NCiAgICB7DQogICAgdm9pZCAgKiAgICAgICAgIFBvaW50ZXI7DQogICAgTE9OR19QVFIg
ICAgICAgIFNpbXBsZTsNCiAgICB9IENMSUVOVF9DQUxMX1JFVFVSTjsNCg0KDQp0eXBlZGVmIGVu
dW0NCiAgICAgICAgew0KICAgICAgICBYTEFUX1NFUlZFUiA9IDEsDQogICAgICAgIFhMQVRfQ0xJ
RU5UDQogICAgICAgIH0gWExBVF9TSURFOw0KDQp0eXBlZGVmIHN0cnVjdCBfRlVMTF9QVFJfWExB
VF9UQUJMRVMNCnsNCiAgICB2b2lkICogUmVmSWRUb1BvaW50ZXI7DQogICAgdm9pZCAqIFBvaW50
ZXJUb1JlZklkOw0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIE5leHRSZWZJZDsNCiAgICBY
TEFUX1NJREUgICAgICAgICAgICAgICBYbGF0U2lkZTsNCn0gRlVMTF9QVFJfWExBVF9UQUJMRVMs
ICpQRlVMTF9QVFJfWExBVF9UQUJMRVM7DQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9zeXN0ZW1f
aGFuZGxlX3QNCnsNCiAgICBTWVNURU1fSEFORExFX0ZJTEUgPSAwLA0KICAgIFNZU1RFTV9IQU5E
TEVfU0VNQVBIT1JFID0gMSwNCiAgICBTWVNURU1fSEFORExFX0VWRU5UID0gMiwNCiAgICBTWVNU
RU1fSEFORExFX01VVEVYID0gMywNCiAgICBTWVNURU1fSEFORExFX1BST0NFU1MgPSA0LA0KICAg
IFNZU1RFTV9IQU5ETEVfVE9LRU4gPSA1LA0KICAgIFNZU1RFTV9IQU5ETEVfU0VDVElPTiA9IDYs
DQogICAgU1lTVEVNX0hBTkRMRV9SRUdfS0VZID0gNywNCiAgICBTWVNURU1fSEFORExFX1RIUkVB
RCA9IDgsDQogICAgU1lTVEVNX0hBTkRMRV9DT01QT1NJVElPTl9PQkpFQ1QgPSA5LA0KICAgIFNZ
U1RFTV9IQU5ETEVfU09DS0VUID0gMTAsDQogICAgU1lTVEVNX0hBTkRMRV9KT0IgPSAxMSwNCiAg
ICBTWVNURU1fSEFORExFX1BJUEUgPSAxMiwNCiAgICBTWVNURU1fSEFORExFX01BWCA9IDEyLA0K
ICAgIFNZU1RFTV9IQU5ETEVfSU5WQUxJRCA9IDB4RkYsDQp9IHN5c3RlbV9oYW5kbGVfdDsNCg0K
DQoNCg0KDQplbnVtIHsNCiAgICBNaWRsSW50ZXJjZXB0aW9uSW5mb1ZlcnNpb25PbmUgPSAxDQp9
Ow0KDQplbnVtIHsNCiAgICBNaWRsV2lucnRUeXBlU2VyaWFsaXphdGlvbkluZm9WZXJzaW9uT25l
ID0gMQ0KfTsNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9NSURMX0lOVEVSQ0VQVElPTl9JTkZPDQp7
DQogICAgdW5zaWduZWQgbG9uZyAgICAgICAgIFZlcnNpb247DQogICAgUEZPUk1BVF9TVFJJTkcg
ICAgICAgIFByb2NTdHJpbmc7DQogICAgY29uc3QgdW5zaWduZWQgc2hvcnQgKlByb2NGb3JtYXRP
ZmZzZXRUYWJsZTsNCiAgICB1bnNpZ25lZCBsb25nICAgICAgICAgUHJvY0NvdW50Ow0KICAgIFBG
T1JNQVRfU1RSSU5HICAgICAgICBUeXBlU3RyaW5nOw0KfSBNSURMX0lOVEVSQ0VQVElPTl9JTkZP
LCAqUE1JRExfSU5URVJDRVBUSU9OX0lORk87DQoNCnR5cGVkZWYgc3RydWN0IF9NSURMX1dJTlJU
X1RZUEVfU0VSSUFMSVpBVElPTl9JTkZPDQp7DQogICAgdW5zaWduZWQgbG9uZyAgIFZlcnNpb247
DQogICAgUEZPUk1BVF9TVFJJTkcgIFR5cGVGb3JtYXRTdHJpbmc7DQogICAgdW5zaWduZWQgc2hv
cnQgIEZvcm1hdFN0cmluZ1NpemU7DQogICAgdW5zaWduZWQgc2hvcnQgIFR5cGVPZmZzZXQ7DQog
ICAgUE1JRExfU1RVQl9ERVNDIFN0dWJEZXNjOw0KfSBNSURMX1dJTlJUX1RZUEVfU0VSSUFMSVpB
VElPTl9JTkZPLCAqUE1JRExfV0lOUlRfVFlQRV9TRVJJQUxJWkFUSU9OX0lORk87DQoNCg0KDQoN
Cg0KUlBDX1NUQVRVUyBfX3N0ZGNhbGwNCk5kckNsaWVudEdldFN1cHBvcnRlZFN5bnRheGVzKA0K
ICAgICAgUlBDX0NMSUVOVF9JTlRFUkZBQ0UgKiBwSW5mLA0KICAgICAgdW5zaWduZWQgbG9uZyAg
ICAgICAqIHBDb3VudCwNCiAgICAgIE1JRExfU1lOVEFYX0lORk8gICAqKiBwQXJyICk7DQoNCg0K
UlBDX1NUQVRVUyBfX3N0ZGNhbGwNCk5kclNlcnZlckdldFN1cHBvcnRlZFN5bnRheGVzKA0KICAg
ICAgUlBDX1NFUlZFUl9JTlRFUkZBQ0UgKiBwSW5mLA0KICAgICAgdW5zaWduZWQgbG9uZyAgICAg
ICAqIHBDb3VudCwNCiAgICAgIE1JRExfU1lOVEFYX0lORk8gICAqKiBwQXJyLA0KICAgICAgdW5z
aWduZWQgbG9uZyAgICAgICAqIHBQcmVmZXJTeW50YXhJbmRleCk7DQoNCg0KDQoNCiNwcmFnbWEg
d2FybmluZyhwdXNoKQ0KICAgIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6Mjg3NDApDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJTaW1wbGVUeXBlTWFyc2hh
bGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQg
Y2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICBGb3Jt
YXRDaGFyDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBjaGFyICAq
DQpfX3N0ZGNhbGwNCk5kclBvaW50ZXJNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0Ug
ICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAg
IFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyQ3NBcnJheU1hcnNoYWxs
KA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNo
YXIgICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1h
dA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19z
dGRjYWxsDQpOZHJDc1RhZ01hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBT
dHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1B
VF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyU2ltcGxlU3RydWN0TWFyc2hh
bGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQg
Y2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9y
bWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBjaGFyICAqDQpf
X3N0ZGNhbGwNCk5kckNvbmZvcm1hbnRTdHJ1Y3RNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01F
U1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5
LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyQ29uZm9ybWFu
dFZhcnlpbmdTdHJ1Y3RNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1
Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRf
U1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyQ29tcGxleFN0cnVjdE1hcnNoYWxsKA0K
ICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIg
ICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0K
ICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9f
c3RkY2FsbA0KTmRyRml4ZWRBcnJheU1hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAg
ICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAgICAgIHBNZW1vcnksDQogICAg
UEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJDb25mb3JtYW50QXJyYXlN
YXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNp
Z25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAg
IHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIg
ICoNCl9fc3RkY2FsbA0KTmRyQ29uZm9ybWFudFZhcnlpbmdBcnJheU1hcnNoYWxsKA0KICAgIFBN
SURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAg
ICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpO
ZHJWYXJ5aW5nQXJyYXlNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1
Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRf
U1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyQ29tcGxleEFycmF5TWFyc2hhbGwoDQog
ICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAg
KiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQog
ICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19z
dGRjYWxsDQpOZHJOb25Db25mb3JtYW50U3RyaW5nTWFyc2hhbGwoDQogICAgUE1JRExfU1RVQl9N
RVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9y
eSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBjaGFyICAqDQpfX3N0ZGNhbGwNCk5kckNvbmZvcm1h
bnRTdHJpbmdNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywN
CiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5H
ICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1
bnNpZ25lZCBjaGFyICAqDQpfX3N0ZGNhbGwNCk5kckVuY2Fwc3VsYXRlZFVuaW9uTWFyc2hhbGwo
DQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hh
ciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBjaGFyICAqDQpfX3N0
ZGNhbGwNCk5kck5vbkVuY2Fwc3VsYXRlZFVuaW9uTWFyc2hhbGwoDQogICAgUE1JRExfU1RVQl9N
RVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9y
eSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJCeXRl
Q291bnRQb2ludGVyTWFyc2hhbGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJN
c2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NU
UklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJYbWl0T3JSZXBBc01hcnNoYWxsKA0K
ICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIg
ICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0K
ICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9f
c3RkY2FsbA0KTmRyVXNlck1hcnNoYWxNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0Ug
ICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAg
IFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBjaGFyICAqDQpfX3N0ZGNhbGwNCk5kckludGVyZmFjZVBv
aW50ZXJNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAg
ICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAg
ICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
DQpfX3N0ZGNhbGwNCk5kckNsaWVudENvbnRleHRNYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01F
U1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICBORFJfQ0NPTlRFWFQgICAgICAgICAgICBDb250ZXh0
SGFuZGxlLA0KICAgIGludCAgICAgICAgICAgICAgICAgICAgIGZDaGVjaw0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJTZXJ2ZXJDb250ZXh0TWFy
c2hhbGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgTkRSX1ND
T05URVhUICAgICAgICAgICAgQ29udGV4dEhhbmRsZSwNCiAgICBORFJfUlVORE9XTiAgICAgICAg
ICAgICBSdW5kb3duUm91dGluZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9p
ZA0KX19zdGRjYWxsDQpOZHJTZXJ2ZXJDb250ZXh0TmV3TWFyc2hhbGwoDQogICAgUE1JRExfU1RV
Ql9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgTkRSX1NDT05URVhUICAgICAgICAgICAgQ29u
dGV4dEhhbmRsZSwNCiAgICBORFJfUlVORE9XTiAgICAgICAgICAgICBSdW5kb3duUm91dGluZSwN
CiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyU2ltcGxlVHlwZVVubWFy
c2hhbGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWdu
ZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICBG
b3JtYXRDaGFyDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBjaGFy
ICoNCl9fc3RkY2FsbA0KTmRyQ3NBcnJheVVubWFyc2hhbGwoDQogICAgUE1JRExfU1RVQl9NRVNT
QUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAqKiAgICAgICAgcHBNZW1vcnks
DQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdCwNCiAgICB1bnNpZ25lZCBjaGFy
ICAgICAgICAgICBmTXVzdEFsbG9jDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1
bnNpZ25lZCBjaGFyICoNCl9fc3RkY2FsbA0KTmRyQ3NUYWdVbm1hcnNoYWxsKA0KICAgIFBNSURM
X1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgKiogICAgICAg
IHBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQsDQogICAgdW5z
aWduZWQgY2hhciAgICAgICAgICAgZk11c3RBbGxvYw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KdW5zaWduZWQgY2hhciAqDQpfX3N0ZGNhbGwNCk5kclJhbmdlVW5tYXJzaGFsbCgN
CiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFy
ICoqICAgICAgICBwcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0
LA0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgIGZNdXN0QWxsb2MNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyQ29ycmVsYXRpb25Jbml0aWFs
aXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHZvaWQgICog
ICAgICAgICAgICAgICAgIHBNZW1vcnksDQogICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgQ2Fj
aGVTaXplLA0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIGZsYWdzDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kckNvcnJlbGF0aW9uUGFzcygN
CiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZw0KICAgICk7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJDb3JyZWxhdGlvbkZyZWUoDQogICAg
UE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2cNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyUG9pbnRlclVubWFyc2hh
bGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQg
Y2hhciAgKiAgKiAgICAgcHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZv
cm1hdCwNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICBmTXVzdEFsbG9jDQogICAgKTsNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpO
ZHJTaW1wbGVTdHJ1Y3RVbm1hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBT
dHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICogICAgIHBwTWVtb3J5LA0KICAgIFBGT1JN
QVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQsDQogICAgdW5zaWduZWQgY2hhciAgICAgICAgICAg
Zk11c3RBbGxvYw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hh
ciAgKg0KX19zdGRjYWxsDQpOZHJDb25mb3JtYW50U3RydWN0VW5tYXJzaGFsbCgNCiAgICBQTUlE
TF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAqICAg
ICBwcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0LA0KICAgIHVu
c2lnbmVkIGNoYXIgICAgICAgICAgIGZNdXN0QWxsb2MNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyQ29uZm9ybWFudFZhcnlp
bmdTdHJ1Y3RVbm1hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNn
LA0KICAgIHVuc2lnbmVkIGNoYXIgICogICogICAgIHBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RS
SU5HICAgICAgICAgIHBGb3JtYXQsDQogICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgZk11c3RB
bGxvYw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0K
X19zdGRjYWxsDQpOZHJDb21wbGV4U3RydWN0VW5tYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01F
U1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAqICAgICBwcE1lbW9y
eSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0LA0KICAgIHVuc2lnbmVkIGNo
YXIgICAgICAgICAgIGZNdXN0QWxsb2MNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQp1bnNpZ25lZCBjaGFyICAqDQpfX3N0ZGNhbGwNCk5kckZpeGVkQXJyYXlVbm1hcnNoYWxs
KA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNo
YXIgICogICogICAgIHBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3Jt
YXQsDQogICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgZk11c3RBbGxvYw0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJDb25m
b3JtYW50QXJyYXlVbm1hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHVi
TXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICogICAgIHBwTWVtb3J5LA0KICAgIFBGT1JNQVRf
U1RSSU5HICAgICAgICAgIHBGb3JtYXQsDQogICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgZk11
c3RBbGxvYw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAg
Kg0KX19zdGRjYWxsDQpOZHJDb25mb3JtYW50VmFyeWluZ0FycmF5VW5tYXJzaGFsbCgNCiAgICBQ
TUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAq
ICAgICBwcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0LA0KICAg
IHVuc2lnbmVkIGNoYXIgICAgICAgICAgIGZNdXN0QWxsb2MNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyVmFyeWluZ0FycmF5
VW5tYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1
bnNpZ25lZCBjaGFyICAqICAqICAgICBwcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAg
ICAgICBwRm9ybWF0LA0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgIGZNdXN0QWxsb2MNCiAg
ICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2Fs
bA0KTmRyQ29tcGxleEFycmF5VW5tYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAg
ICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAqICAgICBwcE1lbW9yeSwNCiAgICBQ
Rk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0LA0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAg
ICAgIGZNdXN0QWxsb2MNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNp
Z25lZCBjaGFyICAqDQpfX3N0ZGNhbGwNCk5kck5vbkNvbmZvcm1hbnRTdHJpbmdVbm1hcnNoYWxs
KA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNo
YXIgICogICogICAgIHBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3Jt
YXQsDQogICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgZk11c3RBbGxvYw0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJDb25m
b3JtYW50U3RyaW5nVW5tYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1
Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAqICAgICBwcE1lbW9yeSwNCiAgICBQRk9STUFU
X1NUUklORyAgICAgICAgICBwRm9ybWF0LA0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgIGZN
dXN0QWxsb2MNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBj
aGFyICAqDQpfX3N0ZGNhbGwNCk5kckVuY2Fwc3VsYXRlZFVuaW9uVW5tYXJzaGFsbCgNCiAgICBQ
TUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAq
ICAgICBwcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0LA0KICAg
IHVuc2lnbmVkIGNoYXIgICAgICAgICAgIGZNdXN0QWxsb2MNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyTm9uRW5jYXBzdWxh
dGVkVW5pb25Vbm1hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNn
LA0KICAgIHVuc2lnbmVkIGNoYXIgICogICogICAgIHBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RS
SU5HICAgICAgICAgIHBGb3JtYXQsDQogICAgdW5zaWduZWQgY2hhciAgICAgICAgICAgZk11c3RB
bGxvYw0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIg
ICoNCl9fc3RkY2FsbA0KTmRyQnl0ZUNvdW50UG9pbnRlclVubWFyc2hhbGwoDQogICAgUE1JRExf
U1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgKiAgICAg
cHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdCwNCiAgICB1bnNp
Z25lZCBjaGFyICAgICAgICAgICBmTXVzdEFsbG9jDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJYbWl0T3JSZXBBc1Vu
bWFyc2hhbGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5z
aWduZWQgY2hhciAgKiAgKiAgICAgcHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAg
ICAgcEZvcm1hdCwNCiAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICBmTXVzdEFsbG9jDQogICAg
KTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRj
YWxsDQpOZHJVc2VyTWFyc2hhbFVubWFyc2hhbGwoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAg
ICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgKiAgICAgcHBNZW1vcnksDQogICAg
UEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdCwNCiAgICB1bnNpZ25lZCBjaGFyICAgICAg
ICAgICBmTXVzdEFsbG9jDQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5z
aWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJJbnRlcmZhY2VQb2ludGVyVW5tYXJzaGFsbCgN
CiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFy
ICAqICAqICAgICBwcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0
LA0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgIGZNdXN0QWxsb2MNCiAgICApOw0KDQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kckNsaWVudENvbnRleHRV
bm1hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIE5E
Ul9DQ09OVEVYVCAgICAgICAgKiAgIHBDb250ZXh0SGFuZGxlLA0KICAgIFJQQ19CSU5ESU5HX0hB
TkRMRSAgICAgIEJpbmRIYW5kbGUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCk5E
Ul9TQ09OVEVYVA0KX19zdGRjYWxsDQpOZHJTZXJ2ZXJDb250ZXh0VW5tYXJzaGFsbCgNCiAgICBQ
TUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZw0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCk5EUl9TQ09OVEVYVA0KX19zdGRjYWxsDQpOZHJDb250ZXh0SGFuZGxlSW5p
dGlhbGl6ZSgNCiAgICAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICAgICAgICBwU3R1Yk1zZywN
CiAgICAgIFBGT1JNQVRfU1RSSU5HICAgICAgcEZvcm1hdA0KICAgICk7DQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KTkRSX1NDT05URVhUDQpfX3N0ZGNhbGwNCk5kclNlcnZlckNvbnRleHROZXdV
bm1hcnNoYWxsKA0KICAgICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgICAgICAgIHBTdHViTXNn
LA0KICAgICAgUEZPUk1BVF9TVFJJTkcgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCg0KDQoNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kclBvaW50ZXJCdWZmZXJT
aXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVk
IGNoYXIgICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZv
cm1hdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpO
ZHJDc0FycmF5QnVmZmVyU2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1z
ZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RS
SU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZv
aWQNCl9fc3RkY2FsbA0KTmRyQ3NUYWdCdWZmZXJTaXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FH
RSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAgICAgIHBNZW1vcnksDQog
ICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyU2ltcGxlU3RydWN0QnVmZmVyU2l6
ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBj
aGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3Jt
YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRy
Q29uZm9ybWFudFN0cnVjdEJ1ZmZlclNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAg
cFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9S
TUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kckNvbmZvcm1hbnRWYXJ5aW5nU3RydWN0QnVmZmVyU2l6
ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBj
aGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3Jt
YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRy
Q29tcGxleFN0cnVjdEJ1ZmZlclNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0
dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFU
X1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJGaXhlZEFycmF5QnVmZmVyU2l6ZSgNCiAgICBQTUlE
TF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAg
ICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyQ29uZm9ybWFudEFy
cmF5QnVmZmVyU2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAg
ICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAg
ICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9f
c3RkY2FsbA0KTmRyQ29uZm9ybWFudFZhcnlpbmdBcnJheUJ1ZmZlclNpemUoDQogICAgUE1JRExf
U1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAg
cE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kclZhcnlpbmdBcnJheUJ1
ZmZlclNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5z
aWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAg
ICBwRm9ybWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNh
bGwNCk5kckNvbXBsZXhBcnJheUJ1ZmZlclNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAg
ICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQ
Rk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJDb25mb3JtYW50U3RyaW5nQnVmZmVyU2l6
ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBj
aGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3Jt
YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRy
Tm9uQ29uZm9ybWFudFN0cmluZ0J1ZmZlclNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAg
ICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQ
Rk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJFbmNhcHN1bGF0ZWRVbmlvbkJ1ZmZlclNp
emUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQg
Y2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9y
bWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5k
ck5vbkVuY2Fwc3VsYXRlZFVuaW9uQnVmZmVyU2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0Ug
ICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAg
IFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kckJ5dGVDb3VudFBvaW50ZXJCdWZmZXJT
aXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVk
IGNoYXIgICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZv
cm1hdA0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2Fs
bA0KTmRyWG1pdE9yUmVwQXNCdWZmZXJTaXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAg
IHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAgICAgIHBNZW1vcnksDQogICAgUEZP
Uk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyVXNlck1hcnNoYWxCdWZmZXJTaXplKA0KICAg
IFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICog
ICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAg
ICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRySW50
ZXJmYWNlUG9pbnRlckJ1ZmZlclNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0
dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFU
X1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJDb250ZXh0SGFuZGxlU2l6ZSgNCiAgICBQTUlETF9T
VFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBw
TWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoN
Cg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgbG9uZw0KX19zdGRjYWxsDQpO
ZHJQb2ludGVyTWVtb3J5U2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1z
ZywNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBsb25nDQpfX3N0ZGNhbGwNCk5kckNvbnRleHRIYW5k
bGVNZW1vcnlTaXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAg
IFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGxvbmcNCl9fc3RkY2FsbA0KTmRyQ3NBcnJheU1lbW9y
eVNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgUEZPUk1B
VF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KdW5zaWduZWQgbG9uZw0KX19zdGRjYWxsDQpOZHJDc1RhZ01lbW9yeVNpemUoDQogICAgUE1J
RExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAg
ICAgcEZvcm1hdA0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVk
IGxvbmcNCl9fc3RkY2FsbA0KTmRyU2ltcGxlU3RydWN0TWVtb3J5U2l6ZSgNCiAgICBQTUlETF9T
VFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBw
Rm9ybWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBsb25nDQpf
X3N0ZGNhbGwNCk5kckNvbmZvcm1hbnRTdHJ1Y3RNZW1vcnlTaXplKA0KICAgIFBNSURMX1NUVUJf
TUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3Jt
YXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGxvbmcNCl9fc3Rk
Y2FsbA0KTmRyQ29uZm9ybWFudFZhcnlpbmdTdHJ1Y3RNZW1vcnlTaXplKA0KICAgIFBNSURMX1NU
VUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBG
b3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGxvbmcNCl9f
c3RkY2FsbA0KTmRyQ29tcGxleFN0cnVjdE1lbW9yeVNpemUoDQogICAgUE1JRExfU1RVQl9NRVNT
QUdFICAgICAgcFN0dWJNc2csDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0K
ICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGxvbmcNCl9fc3Rk
Y2FsbA0KTmRyRml4ZWRBcnJheU1lbW9yeVNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAg
ICAgcFN0dWJNc2csDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgbG9uZw0KX19zdGRjYWxsDQpOZHJD
b25mb3JtYW50QXJyYXlNZW1vcnlTaXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBT
dHViTXNnLA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGxvbmcNCl9fc3RkY2FsbA0KTmRyQ29uZm9y
bWFudFZhcnlpbmdBcnJheU1lbW9yeVNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAg
cFN0dWJNc2csDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5zaWduZWQgbG9uZw0KX19zdGRjYWxsDQpOZHJWYXJ5
aW5nQXJyYXlNZW1vcnlTaXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNn
LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGxvbmcNCl9fc3RkY2FsbA0KTmRyQ29tcGxleEFycmF5
TWVtb3J5U2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICBQ
Rk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KdW5zaWduZWQgbG9uZw0KX19zdGRjYWxsDQpOZHJDb25mb3JtYW50U3RyaW5n
TWVtb3J5U2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICBQ
Rk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp1bnNpZ25lZCBsb25nDQpfX3N0ZGNhbGwNCk5kck5vbkNvbmZvcm1hbnRTdHJpbmdN
ZW1vcnlTaXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIFBG
T1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQp1bnNpZ25lZCBsb25nDQpfX3N0ZGNhbGwNCk5kckVuY2Fwc3VsYXRlZFVuaW9u
TWVtb3J5U2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICBQ
Rk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp1bnNpZ25lZCBsb25nDQpfX3N0ZGNhbGwNCk5kck5vbkVuY2Fwc3VsYXRlZFVuaW9u
TWVtb3J5U2l6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICBQ
Rk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KdW5zaWduZWQgbG9uZw0KX19zdGRjYWxsDQpOZHJYbWl0T3JSZXBBc01lbW9y
eVNpemUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgUEZPUk1B
VF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnVuc2lnbmVkIGxvbmcNCl9fc3RkY2FsbA0KTmRyVXNlck1hcnNoYWxNZW1vcnlTaXpl
KA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIFBGT1JNQVRfU1RS
SU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQp1bnNpZ25lZCBsb25nDQpfX3N0ZGNhbGwNCk5kckludGVyZmFjZVBvaW50ZXJNZW1vcnlTaXpl
KA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIFBGT1JNQVRfU1RS
SU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJQb2ludGVyRnJlZSgNCiAgICBQTUlETF9TVFVCX01F
U1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5
LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyQ3NBcnJheUZyZWUoDQogICAgUE1J
RExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAg
ICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsN
Cg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJTaW1wbGVT
dHJ1Y3RGcmVlKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVu
c2lnbmVkIGNoYXIgICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAg
ICAgcEZvcm1hdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRj
YWxsDQpOZHJDb25mb3JtYW50U3RydWN0RnJlZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAg
ICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBG
T1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyQ29uZm9ybWFudFZhcnlpbmdTdHJ1Y3RGcmVlKA0K
ICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIg
ICogICAgICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJDb21w
bGV4U3RydWN0RnJlZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAg
ICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAg
ICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
DQpfX3N0ZGNhbGwNCk5kckZpeGVkQXJyYXlGcmVlKA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAg
ICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAgICAgIHBNZW1vcnksDQogICAg
UEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJDb25mb3JtYW50QXJyYXlGcmVlKA0KICAgIFBN
SURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAg
ICAgIHBNZW1vcnksDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJDb25mb3JtYW50
VmFyeWluZ0FycmF5RnJlZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywN
CiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5H
ICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQN
Cl9fc3RkY2FsbA0KTmRyVmFyeWluZ0FycmF5RnJlZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0Ug
ICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAg
IFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyQ29tcGxleEFycmF5RnJlZSgNCiAgICBQTUlE
TF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICAqICAgICAg
ICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0K
DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kckVuY2Fwc3Vs
YXRlZFVuaW9uRnJlZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAg
ICB1bnNpZ25lZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAg
ICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9f
c3RkY2FsbA0KTmRyTm9uRW5jYXBzdWxhdGVkVW5pb25GcmVlKA0KICAgIFBNSURMX1NUVUJfTUVT
U0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGNoYXIgICogICAgICAgIHBNZW1vcnks
DQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdA0KICAgICk7DQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyQnl0ZUNvdW50UG9pbnRlckZy
ZWUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQg
Y2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9y
bWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxs
DQpOZHJYbWl0T3JSZXBBc0ZyZWUoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJN
c2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9yeSwNCiAgICBQRk9STUFUX1NU
UklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJVc2VyTWFyc2hhbEZyZWUoDQogICAgUE1JRExfU1RVQl9N
RVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcE1lbW9y
eSwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJJbnRlcmZhY2VQb2ludGVy
RnJlZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25l
ZCBjaGFyICAqICAgICAgICBwTWVtb3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBG
b3JtYXQNCiAgICApOw0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19z
dGRjYWxsDQpOZHJDb252ZXJ0MigNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1z
ZywNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0LA0KICAgIGxvbmcgICAgICAg
ICAgICAgICAgICAgIE51bWJlclBhcmFtcw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJDb252ZXJ0KA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAg
ICAgIHBTdHViTXNnLA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQNCiAgICAp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KdW5z
aWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJVc2VyTWFyc2hhbFNpbXBsZVR5cGVDb252ZXJ0
KA0KICAgIHVuc2lnbmVkIGxvbmcgKiAgICAgICAgIHBGbGFncywNCiAgICB1bnNpZ25lZCBjaGFy
ICogICAgICAgICBwQnVmZmVyLA0KICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgIEZvcm1hdENo
YXINCiAgICApOw0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRj
YWxsDQpOZHJDbGllbnRJbml0aWFsaXplTmV3KA0KICAgIFBSUENfTUVTU0FHRSAgICAgICAgICAg
IHBScGNNc2csDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgUE1J
RExfU1RVQl9ERVNDICAgICAgICAgcFN0dWJEZXNjcmlwdG9yLA0KICAgIHVuc2lnbmVkIGludCAg
ICAgICAgICAgIFByb2NOdW0NCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2ln
bmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyU2VydmVySW5pdGlhbGl6ZU5ldygNCiAgICBQUlBD
X01FU1NBR0UgICAgICAgICAgICBwUnBjTXNnLA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAg
IHBTdHViTXNnLA0KICAgIFBNSURMX1NUVUJfREVTQyAgICAgICAgIHBTdHViRGVzY3JpcHRvcg0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJTZXJ2
ZXJJbml0aWFsaXplUGFydGlhbCgNCiAgICBQUlBDX01FU1NBR0UgICAgICAgICAgICBwUnBjTXNn
LA0KICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIFBNSURMX1NUVUJf
REVTQyAgICAgICAgIHBTdHViRGVzY3JpcHRvciwNCiAgICB1bnNpZ25lZCBsb25nICAgICAgICAg
ICBSZXF1ZXN0ZWRCdWZmZXJTaXplDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2
b2lkDQpfX3N0ZGNhbGwNCk5kckNsaWVudEluaXRpYWxpemUoDQogICAgUFJQQ19NRVNTQUdFICAg
ICAgICAgICAgcFJwY01zZywNCiAgICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywN
CiAgICBQTUlETF9TVFVCX0RFU0MgICAgICAgICBwU3R1YkRlc2NyaXB0b3IsDQogICAgdW5zaWdu
ZWQgaW50ICAgICAgICAgICAgUHJvY051bQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJTZXJ2ZXJJbml0aWFsaXplKA0KICAg
IFBSUENfTUVTU0FHRSAgICAgICAgICAgIHBScGNNc2csDQogICAgUE1JRExfU1RVQl9NRVNTQUdF
ICAgICAgcFN0dWJNc2csDQogICAgUE1JRExfU1RVQl9ERVNDICAgICAgICAgcFN0dWJEZXNjcmlw
dG9yDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBjaGFyICAqDQpf
X3N0ZGNhbGwNCk5kclNlcnZlckluaXRpYWxpemVVbm1hcnNoYWxsICgNCiAgICBQTUlETF9TVFVC
X01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICBQTUlETF9TVFVCX0RFU0MgICAgICAgICBwU3R1
YkRlc2NyaXB0b3IsDQogICAgUFJQQ19NRVNTQUdFICAgICAgICAgICAgcFJwY01zZw0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJTZXJ2ZXJJbml0
aWFsaXplTWFyc2hhbGwgKA0KICAgIFBSUENfTUVTU0FHRSAgICAgICAgICAgIHBScGNNc2csDQog
ICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2cNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9fc3RkY2FsbA0KTmRyR2V0QnVmZmVyKA0K
ICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHVuc2lnbmVkIGxvbmcg
ICAgICAgICAgIEJ1ZmZlckxlbmd0aCwNCiAgICBSUENfQklORElOR19IQU5ETEUgICAgICBIYW5k
bGUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnVuc2lnbmVkIGNoYXIgICoNCl9f
c3RkY2FsbA0KTmRyTnNHZXRCdWZmZXIoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0
dWJNc2csDQogICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgQnVmZmVyTGVuZ3RoLA0KICAgIFJQ
Q19CSU5ESU5HX0hBTkRMRSAgICAgIEhhbmRsZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KdW5zaWduZWQgY2hhciAgKg0KX19zdGRjYWxsDQpOZHJTZW5kUmVjZWl2ZSgNCiAgICBQ
TUlETF9TVFVCX01FU1NBR0UgICAgICBwU3R1Yk1zZywNCiAgICB1bnNpZ25lZCBjaGFyICogICAg
ICAgICBwQnVmZmVyRW5kDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1bnNpZ25l
ZCBjaGFyICAqDQpfX3N0ZGNhbGwNCk5kck5zU2VuZFJlY2VpdmUoDQogICAgUE1JRExfU1RVQl9N
RVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgY2hhciAgKiAgICAgICAgcEJ1ZmZl
ckVuZCwNCiAgICBSUENfQklORElOR19IQU5ETEUgICogICBwQXV0b0hhbmRsZQ0KICAgICk7DQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJGcmVlQnVmZmVyKA0K
ICAgIFBNSURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnDQogICAgKTsNCg0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpIUkVTVUxUDQpfX3N0ZGNhbGwNCk5kckdldERjb21Qcm90b2NvbFZlcnNp
b24oDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0dWJNc2csDQogICAgUlBDX1ZFUlNJ
T04gKiAgICAgICAgICAgcFZlcnNpb24gKTsNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KDQoN
Cg0KDQoNCg0KQ0xJRU5UX0NBTExfUkVUVVJOIF9fY2RlY2wNCk5kckNsaWVudENhbGwyKA0KICAg
IFBNSURMX1NUVUJfREVTQyAgICAgICAgIHBTdHViRGVzY3JpcHRvciwNCiAgICBQRk9STUFUX1NU
UklORyAgICAgICAgICBwRm9ybWF0LA0KICAgIC4uLg0KICAgICk7DQoNCkNMSUVOVF9DQUxMX1JF
VFVSTiBfX2NkZWNsDQpOZHJDbGllbnRDYWxsKA0KICAgIFBNSURMX1NUVUJfREVTQyAgICAgICAg
IHBTdHViRGVzY3JpcHRvciwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICBwRm9ybWF0LA0K
ICAgIC4uLg0KICAgICk7DQoNCkNMSUVOVF9DQUxMX1JFVFVSTiBfX2NkZWNsDQpOZHJBc3luY0Ns
aWVudENhbGwoDQogICAgUE1JRExfU1RVQl9ERVNDICAgICAgICAgcFN0dWJEZXNjcmlwdG9yLA0K
ICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQsDQogICAgLi4uDQogICAgKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjU5
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KI2xpbmUgMjYwMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxycGNuZHIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KQ0xJRU5UX0NBTExfUkVUVVJOIF9fY2Rl
Y2wNCk5kckRjb21Bc3luY0NsaWVudENhbGwoDQogICAgUE1JRExfU1RVQl9ERVNDICAgICAgICAg
cFN0dWJEZXNjcmlwdG9yLA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgIHBGb3JtYXQsDQog
ICAgLi4uDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjYyMyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxycGNuZHIuaCINCg0KI2xpbmUgMjYyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIu
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWls
eSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBlbnVtIHsNCiAgICBTVFVCX1VOTUFS
U0hBTCwNCiAgICBTVFVCX0NBTExfU0VSVkVSLA0KICAgIFNUVUJfTUFSU0hBTCwNCiAgICBTVFVC
X0NBTExfU0VSVkVSX05PX0hSRVNVTFQNCn1TVFVCX1BIQVNFOw0KDQp0eXBlZGVmIGVudW0gew0K
ICAgIFBST1hZX0NBTENTSVpFLA0KICAgIFBST1hZX0dFVEJVRkZFUiwNCiAgICBQUk9YWV9NQVJT
SEFMLA0KICAgIFBST1hZX1NFTkRSRUNFSVZFLA0KICAgIFBST1hZX1VOTUFSU0hBTA0KfVBST1hZ
X1BIQVNFOw0KDQpzdHJ1Y3QgSVJwY1N0dWJCdWZmZXI7ICAgICAgDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyQXN5bmNTZXJ2ZXJDYWxsKA0KICAgIFBS
UENfTUVTU0FHRSAgICAgICAgICAgICAgICBwUnBjTXNnDQogICAgKTsNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCmxvbmcNCl9fc3RkY2FsbA0KTmRyQXN5bmNTdHViQ2FsbCgNCiAgICBzdHJ1
Y3QgSVJwY1N0dWJCdWZmZXIgKiAgICAgcFRoaXMsDQogICAgc3RydWN0IElScGNDaGFubmVsQnVm
ZmVyICogIHBDaGFubmVsLA0KICAgIFBSUENfTUVTU0FHRSAgICAgICAgICAgICAgICBwUnBjTXNn
LA0KICAgIHVuc2lnbmVkIGxvbmcgKiAgICAgICAgICAgICBwZHdTdHViUGhhc2UNCiAgICApOw0K
DQojbGluZSAyNjY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KbG9uZw0KX19zdGRjYWxsDQpOZHJEY29tQXN5bmNT
dHViQ2FsbCgNCiAgICBzdHJ1Y3QgSVJwY1N0dWJCdWZmZXIgICAgKiAgcFRoaXMsDQogICAgc3Ry
dWN0IElScGNDaGFubmVsQnVmZmVyICogIHBDaGFubmVsLA0KICAgIFBSUENfTUVTU0FHRSAgICAg
ICAgICAgICAgICBwUnBjTXNnLA0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAqICBwZHdT
dHViUGhhc2UNCiAgICApOw0KDQojbGluZSAyNjg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KbG9uZw0KX19zdGRjYWxsDQpOZHJTdHViQ2FsbDIoDQogICAgdm9pZCAgKiAgICBwVGhp
cywgDQogICAgdm9pZCAgKiBwQ2hhbm5lbCwgDQogICAgUFJQQ19NRVNTQUdFICAgICAgICAgICAg
ICAgIHBScGNNc2csDQogICAgdW5zaWduZWQgbG9uZyAgKiAgICAgICAgICAgIHBkd1N0dWJQaGFz
ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJT
ZXJ2ZXJDYWxsMigNCiAgICBQUlBDX01FU1NBR0UgICAgICAgICAgICAgICAgcFJwY01zZw0KICAg
ICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KbG9uZw0KX19zdGRjYWxsDQpOZHJTdHViQ2Fs
bCAoDQogICAgdm9pZCAgKiAgICBwVGhpcywgDQogICAgdm9pZCAgKiBwQ2hhbm5lbCwgDQogICAg
UFJQQ19NRVNTQUdFICAgICAgICAgICAgICAgIHBScGNNc2csDQogICAgdW5zaWduZWQgbG9uZyAg
KiAgICAgICAgICAgIHBkd1N0dWJQaGFzZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJTZXJ2ZXJDYWxsKA0KICAgIFBSUENfTUVTU0FHRSAgICAg
ICAgICAgICAgICBwUnBjTXNnDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQppbnQN
Cl9fc3RkY2FsbA0KTmRyU2VydmVyVW5tYXJzaGFsbCgNCiAgICB2b2lkICAqIHBDaGFubmVsLCAN
CiAgICBQUlBDX01FU1NBR0UgICAgICAgICAgICAgICAgcFJwY01zZywNCiAgICBQTUlETF9TVFVC
X01FU1NBR0UgICAgICAgICAgcFN0dWJNc2csDQogICAgUE1JRExfU1RVQl9ERVNDICAgICAgICAg
ICAgIHBTdHViRGVzY3JpcHRvciwNCiAgICBQRk9STUFUX1NUUklORyAgICAgICAgICAgICAgcEZv
cm1hdCwNCiAgICB2b2lkICAqICAgICAgICAgICAgICAgICAgICAgcFBhcmFtTGlzdA0KICAgICk7
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJTZXJ2ZXJNYXJz
aGFsbCgNCiAgICB2b2lkICAqICAgIHBUaGlzLCANCiAgICB2b2lkICAqIHBDaGFubmVsLCANCiAg
ICBQTUlETF9TVFVCX01FU1NBR0UgICAgICAgICAgcFN0dWJNc2csDQogICAgUEZPUk1BVF9TVFJJ
TkcgICAgICAgICAgICAgIHBGb3JtYXQNCiAgICApOw0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNCk5kck1hcENvbW1BbmRGYXVsdFN0YXR1cygNCiAg
ICBQTUlETF9TVFVCX01FU1NBR0UgICAgICAgICAgcFN0dWJNc2csDQogICAgdW5zaWduZWQgbG9u
ZyAgKiAgICAgICAgICAgIHBDb21tU3RhdHVzLA0KICAgIHVuc2lnbmVkIGxvbmcgICogICAgICAg
ICAgICBwRmF1bHRTdGF0dXMsDQogICAgUlBDX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1
cw0KICAgICk7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdm9pZCAgKiBSUENfU1NfVEhSRUFEX0hB
TkRMRTsNCg0KdHlwZWRlZiB2b2lkICAqIF9fc3RkY2FsbA0KUlBDX0NMSUVOVF9BTExPQyAoDQog
ICAgICBzaXplX3QgU2l6ZQ0KICAgICk7DQoNCnR5cGVkZWYgdm9pZCBfX3N0ZGNhbGwNClJQQ19D
TElFTlRfRlJFRSAoDQogICAgICB2b2lkICAqIFB0cg0KICAgICk7DQoNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQp2b2lkICAqDQpfX3N0ZGNhbGwNClJwY1NzQWxsb2NhdGUgKA0KICAg
ICAgc2l6ZV90IFNpemUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9f
c3RkY2FsbA0KUnBjU3NEaXNhYmxlQWxsb2NhdGUgKA0KICAgIHZvaWQNCiAgICApOw0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KUnBjU3NFbmFibGVBbGxvY2F0ZSAo
DQogICAgdm9pZA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRj
YWxsDQpScGNTc0ZyZWUgKA0KICAgICAgdm9pZCAgKiBOb2RlVG9GcmVlDQogICAgKTsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1NfVEhSRUFEX0hBTkRMRQ0KX19zdGRjYWxsDQpScGNT
c0dldFRocmVhZEhhbmRsZSAoDQogICAgdm9pZA0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpScGNTc1NldENsaWVudEFsbG9jRnJlZSAoDQogICAgICBS
UENfQ0xJRU5UX0FMTE9DICAqIENsaWVudEFsbG9jLA0KICAgICAgUlBDX0NMSUVOVF9GUkVFICAg
KiBDbGllbnRGcmVlDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0
ZGNhbGwNClJwY1NzU2V0VGhyZWFkSGFuZGxlICgNCiAgICAgIFJQQ19TU19USFJFQURfSEFORExF
IElkDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNClJw
Y1NzU3dhcENsaWVudEFsbG9jRnJlZSAoDQogICAgICBSUENfQ0xJRU5UX0FMTE9DICAgICAqIENs
aWVudEFsbG9jLA0KICAgICAgUlBDX0NMSUVOVF9GUkVFICAgICAgKiBDbGllbnRGcmVlLA0KICAg
ICAgUlBDX0NMSUVOVF9BTExPQyAqICAqIE9sZENsaWVudEFsbG9jLA0KICAgICAgUlBDX0NMSUVO
VF9GUkVFICAqICAqIE9sZENsaWVudEZyZWUNCiAgICApOw0KDQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZCAgKg0KX19zdGRjYWxsDQpScGNTbUFsbG9jYXRlICgNCiAgICAgICBz
aXplX3QgICAgICAgICAgU2l6ZSwNCiAgICAgIFJQQ19TVEFUVVMgICogICBwU3RhdHVzDQogICAg
KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1Nt
Q2xpZW50RnJlZSAoDQogICAgICAgdm9pZCAgICAgICAgKiAgIHBOb2RlVG9GcmVlDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1NtRGVz
dHJveUNsaWVudENvbnRleHQgKA0KICAgICAgdm9pZCAgICAgICAgICogKiBDb250ZXh0SGFuZGxl
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwN
ClJwY1NtRGlzYWJsZUFsbG9jYXRlICgNCiAgICB2b2lkDQogICAgKTsNCg0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpSUENfU1RBVFVTDQpfX3N0ZGNhbGwNClJwY1NtRW5hYmxlQWxsb2NhdGUgKA0K
ICAgIHZvaWQNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9f
c3RkY2FsbA0KUnBjU21GcmVlICgNCiAgICAgIHZvaWQgICAgICAgICAqICAgTm9kZVRvRnJlZQ0K
ICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KUlBDX1NTX1RIUkVBRF9IQU5ETEUNCl9f
c3RkY2FsbA0KUnBjU21HZXRUaHJlYWRIYW5kbGUgKA0KICAgICAgUlBDX1NUQVRVUyAgKiAgIHBT
dGF0dXMNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3Rk
Y2FsbA0KUnBjU21TZXRDbGllbnRBbGxvY0ZyZWUgKA0KICAgICAgUlBDX0NMSUVOVF9BTExPQyAq
IENsaWVudEFsbG9jLA0KICAgICAgUlBDX0NMSUVOVF9GUkVFICAqIENsaWVudEZyZWUNCiAgICAp
Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU21T
ZXRUaHJlYWRIYW5kbGUgKA0KICAgICAgUlBDX1NTX1RIUkVBRF9IQU5ETEUgSWQNCiAgICApOw0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClJQQ19TVEFUVVMNCl9fc3RkY2FsbA0KUnBjU21Td2Fw
Q2xpZW50QWxsb2NGcmVlICgNCiAgICAgIFJQQ19DTElFTlRfQUxMT0MgICAgICogICBDbGllbnRB
bGxvYywNCiAgICAgIFJQQ19DTElFTlRfRlJFRSAgICAgICogICBDbGllbnRGcmVlLA0KICAgICAg
UlBDX0NMSUVOVF9BTExPQyAgICAqICogT2xkQ2xpZW50QWxsb2MsDQogICAgICBSUENfQ0xJRU5U
X0ZSRUUgICAgICogKiBPbGRDbGllbnRGcmVlDQogICAgKTsNCg0KDQoNCg0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyUnBjU3NFbmFibGVBbGxvY2F0ZSgNCiAg
ICBQTUlETF9TVFVCX01FU1NBR0UgICAgICBwTWVzc2FnZSApOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyUnBjU3NEaXNhYmxlQWxsb2NhdGUoDQogICAgUE1J
RExfU1RVQl9NRVNTQUdFICAgICAgcE1lc3NhZ2UgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQp2b2lkDQpfX3N0ZGNhbGwNCk5kclJwY1NtU2V0Q2xpZW50VG9Pc2YoDQogICAgUE1JRExfU1RV
Ql9NRVNTQUdFICAgICAgcE1lc3NhZ2UgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
ICAqDQpfX3N0ZGNhbGwNCk5kclJwY1NtQ2xpZW50QWxsb2NhdGUgKA0KICAgICAgc2l6ZV90IFNp
emUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRy
UnBjU21DbGllbnRGcmVlICgNCiAgICAgIHZvaWQgICogTm9kZVRvRnJlZQ0KICAgICk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCAgKg0KX19zdGRjYWxsDQpOZHJScGNTc0RlZmF1bHRB
bGxvY2F0ZSAoDQogICAgICBzaXplX3QgU2l6ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpOZHJScGNTc0RlZmF1bHRGcmVlICgNCiAgICAgIHZvaWQg
ICogTm9kZVRvRnJlZQ0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNClBGVUxMX1BUUl9YTEFUX1RBQkxFUw0KX19zdGRjYWxsDQpOZHJGdWxsUG9pbnRlclhs
YXRJbml0KA0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIE51bWJlck9mUG9pbnRlcnMsDQog
ICAgWExBVF9TSURFICAgICAgICAgICAgICAgWGxhdFNpZGUNCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRyRnVsbFBvaW50ZXJYbGF0RnJlZSgNCiAg
ICBQRlVMTF9QVFJfWExBVF9UQUJMRVMgICBwWGxhdFRhYmxlcw0KICAgICk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQp2b2lkICAqDQpfX3N0ZGNhbGwNCk5kckFsbG9jYXRlKA0KICAgIFBN
SURMX1NUVUJfTUVTU0FHRSAgICAgIHBTdHViTXNnLA0KICAgIHNpemVfdCAgICAgICAgICAgICAg
ICAgIExlbg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxs
DQpOZHJDbGVhck91dFBhcmFtZXRlcnMoDQogICAgUE1JRExfU1RVQl9NRVNTQUdFICAgICAgcFN0
dWJNc2csDQogICAgUEZPUk1BVF9TVFJJTkcgICAgICAgICAgcEZvcm1hdCwNCiAgICB2b2lkICAq
ICAgICAgICAgICAgICAgICBBcmdBZGRyDQogICAgKTsNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZCAgKg0KX19zdGRjYWxsDQpOZHJPbGVBbGxvY2F0ZSAoDQogICAgICBz
aXplX3QgU2l6ZQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRj
YWxsDQpOZHJPbGVGcmVlICgNCiAgICAgIHZvaWQgICogTm9kZVRvRnJlZQ0KICAgICk7DQoNCg0K
DQoNCg0KI2xpbmUgMzAzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDMwNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX05EUl9VU0VSX01BUlNIQUxfSU5GT19MRVZFTDENCnsNCiAgICB2b2lkICog
ICAgICAgICAgICAgICAgICAgICAgQnVmZmVyOw0KICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAg
ICAgICBCdWZmZXJTaXplOw0KICAgIHZvaWQgKihfX3N0ZGNhbGwgKiBwZm5BbGxvY2F0ZSkoc2l6
ZV90KTsNCiAgICB2b2lkIChfX3N0ZGNhbGwgKiBwZm5GcmVlKSh2b2lkICopOw0KICAgIHN0cnVj
dCBJUnBjQ2hhbm5lbEJ1ZmZlciAqICBwUnBjQ2hhbm5lbEJ1ZmZlcjsNCiAgICBVTE9OR19QVFIg
ICAgICAgICAgICAgICAgICAgUmVzZXJ2ZWRbNV07DQp9IE5EUl9VU0VSX01BUlNIQUxfSU5GT19M
RVZFTDE7DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNsaW5lIDMwOTEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHNoYXJlZFxccnBjbmRyLmgiDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjAxKQ0KI2xpbmUg
MzA5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgX05EUl9V
U0VSX01BUlNIQUxfSU5GTw0Kew0KICAgIHVuc2lnbmVkIGxvbmcgSW5mb3JtYXRpb25MZXZlbDsN
CiAgICB1bmlvbiB7DQogICAgICAgIE5EUl9VU0VSX01BUlNIQUxfSU5GT19MRVZFTDEgTGV2ZWwx
Ow0KICAgIH0gOw0KfSBORFJfVVNFUl9NQVJTSEFMX0lORk87DQoNCg0KDQojcHJhZ21hIHdhcm5p
bmcocG9wKQ0KDQoNCiNsaW5lIDMxMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQojbGlu
ZSAzMTA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KDQoNClJQQ19TVEFUVVMNCl9fc3Rk
Y2FsbA0KTmRyR2V0VXNlck1hcnNoYWxJbmZvICgNCiAgICAgIHVuc2lnbmVkIGxvbmcgKiBwRmxh
Z3MsDQogICAgICB1bnNpZ25lZCBsb25nICAgICAgICAgICAgSW5mb3JtYXRpb25MZXZlbCwNCiAg
ICAgIE5EUl9VU0VSX01BUlNIQUxfSU5GTyAqIHBNYXJzaGFsSW5mbw0KICAgICk7DQoNCg0KDQoN
ClJQQ19TVEFUVVMgX19zdGRjYWxsDQpOZHJDcmVhdGVTZXJ2ZXJJbnRlcmZhY2VGcm9tU3R1YigN
CiAgICAgICAgICAgICAgc3RydWN0IElScGNTdHViQnVmZmVyKiBwU3R1YiwNCiAgICAgICAgICAg
ICAgUlBDX1NFUlZFUl9JTlRFUkZBQ0UgKnBTZXJ2ZXJJZiApOw0KDQoNCg0KDQpDTElFTlRfQ0FM
TF9SRVRVUk4gX19jZGVjbA0KTmRyQ2xpZW50Q2FsbDMoDQogICAgTUlETF9TVFVCTEVTU19QUk9Y
WV9JTkZPICAgKnBQcm94eUluZm8sDQogICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICAgIG5Q
cm9jTnVtLA0KICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICBwUmV0dXJuVmFsdWUsDQog
ICAgLi4uDQogICAgKTsNCg0KQ0xJRU5UX0NBTExfUkVUVVJOIF9fY2RlY2wNCk5kcjY0QXN5bmND
bGllbnRDYWxsKA0KICAgIE1JRExfU1RVQkxFU1NfUFJPWFlfSU5GTyAgICpwUHJveHlJbmZvLA0K
ICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgICBuUHJvY051bSwNCiAgICB2b2lkICogICAg
ICAgICAgICAgICAgICAgICAgcFJldHVyblZhbHVlLA0KICAgIC4uLg0KICAgICk7DQoNCiNsaW5l
IDMxNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccnBjbmRyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCkNMSUVO
VF9DQUxMX1JFVFVSTiBfX2NkZWNsDQpOZHI2NERjb21Bc3luY0NsaWVudENhbGwoDQogICAgTUlE
TF9TVFVCTEVTU19QUk9YWV9JTkZPICAgKnBQcm94eUluZm8sDQogICAgdW5zaWduZWQgbG9uZyAg
ICAgICAgICAgICAgIG5Qcm9jTnVtLA0KICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICBw
UmV0dXJuVmFsdWUsDQogICAgLi4uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2
b2lkDQpfX3N0ZGNhbGwNCk5kcjY0QXN5bmNTZXJ2ZXJDYWxsKA0KICAgIFBSUENfTUVTU0FHRSAg
ICAgICAgICAgICAgICBwUnBjTXNnDQogICAgKTsNCg0KI2xpbmUgMzE2OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxycGNuZHIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCnN0cnVjdCBJUnBjU3R1YkJ1ZmZl
cjsgICAgICANCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwNCk5kcjY0
QXN5bmNTZXJ2ZXJDYWxsNjQoDQogICAgUFJQQ19NRVNTQUdFICAgICAgICAgICAgICAgIHBScGNN
c2cNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3RkY2FsbA0KTmRy
NjRBc3luY1NlcnZlckNhbGxBbGwoDQogICAgUFJQQ19NRVNTQUdFICAgICAgICAgICAgICAgIHBS
cGNNc2cNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmxvbmcNCl9fc3RkY2FsbA0K
TmRyNjRBc3luY1N0dWJDYWxsKA0KICAgIHN0cnVjdCBJUnBjU3R1YkJ1ZmZlciAqICAgICBwVGhp
cywNCiAgICBzdHJ1Y3QgSVJwY0NoYW5uZWxCdWZmZXIgKiAgcENoYW5uZWwsDQogICAgUFJQQ19N
RVNTQUdFICAgICAgICAgICAgICAgIHBScGNNc2csDQogICAgdW5zaWduZWQgbG9uZyAqICAgICAg
ICAgICAgIHBkd1N0dWJQaGFzZQ0KICAgICk7DQoNCiNsaW5lIDMyMDAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccnBjbmRyLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9w
IEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQps
b25nDQpfX3N0ZGNhbGwNCk5kcjY0RGNvbUFzeW5jU3R1YkNhbGwoDQogICAgc3RydWN0IElScGNT
dHViQnVmZmVyICAgICogIHBUaGlzLA0KICAgIHN0cnVjdCBJUnBjQ2hhbm5lbEJ1ZmZlciAqICBw
Q2hhbm5lbCwNCiAgICBQUlBDX01FU1NBR0UgICAgICAgICAgICAgICAgcFJwY01zZywNCiAgICB1
bnNpZ25lZCBsb25nICAgICAgICAgICAgKiAgcGR3U3R1YlBoYXNlDQogICAgKTsNCg0KI2xpbmUg
MzIxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxycGNuZHIuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KbG9uZw0KX19zdGRjYWxsDQpOZHJTdHViQ2FsbDMgKA0KICAg
IHZvaWQgICogICAgcFRoaXMsIA0KICAgIHZvaWQgICogcENoYW5uZWwsIA0KICAgIFBSUENfTUVT
U0FHRSAgICAgICAgICAgICAgICBwUnBjTXNnLA0KICAgIHVuc2lnbmVkIGxvbmcgICogICAgICAg
ICAgICBwZHdTdHViUGhhc2UNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQN
Cl9fc3RkY2FsbA0KTmRyU2VydmVyQ2FsbEFsbCgNCiAgICBQUlBDX01FU1NBR0UgICAgICAgICAg
ICAgICAgcFJwY01zZw0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19z
dGRjYWxsDQpOZHJTZXJ2ZXJDYWxsTmRyNjQoDQogICAgUFJQQ19NRVNTQUdFICAgICAgICAgICAg
ICAgIHBScGNNc2cNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19z
dGRjYWxsDQpOZHJTZXJ2ZXJDYWxsMygNCiAgICBQUlBDX01FU1NBR0UgICAgICAgICAgICAgICAg
cFJwY01zZw0KICAgICk7DQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQNCl9fc3Rk
Y2FsbA0KTmRyUGFydGlhbElnbm9yZUNsaWVudE1hcnNoYWxsKA0KICAgIFBNSURMX1NUVUJfTUVT
U0FHRSAgICAgICAgICBwU3R1Yk1zZywNCiAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAg
cE1lbW9yeQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxs
DQpOZHJQYXJ0aWFsSWdub3JlU2VydmVyVW5tYXJzaGFsbCgNCiAgICBQTUlETF9TVFVCX01FU1NB
R0UgICAgICAgICAgcFN0dWJNc2csDQogICAgdm9pZCAqKiAgICAgICAgICAgICAgICAgICAgIHBw
TWVtb3J5DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkDQpfX3N0ZGNhbGwN
Ck5kclBhcnRpYWxJZ25vcmVDbGllbnRCdWZmZXJTaXplKA0KICAgIFBNSURMX1NUVUJfTUVTU0FH
RSAgICAgICAgICBwU3R1Yk1zZywNCiAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgcE1l
bW9yeQ0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZA0KX19zdGRjYWxsDQpO
ZHJQYXJ0aWFsSWdub3JlU2VydmVySW5pdGlhbGl6ZSgNCiAgICBQTUlETF9TVFVCX01FU1NBR0Ug
ICAgICAgICAgcFN0dWJNc2csDQogICAgdm9pZCAqKiAgICAgICAgICAgICAgICAgICAgIHBwTWVt
b3J5LA0KICAgIFBGT1JNQVRfU1RSSU5HICAgICAgICAgICAgICBwRm9ybWF0DQogICAgKTsNCg0K
DQp2b2lkIF9fc3RkY2FsbA0KUnBjVXNlckZyZWUoIGhhbmRsZV90IEFzeW5jSGFuZGxlLCB2b2lk
ICogcEJ1ZmZlciApOw0KDQojbGluZSAzMjk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSAzMjk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJw
Y25kci5oIg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQoNCiNsaW5lIDMzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQojbGluZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxw
b3BwYWNrLmgiDQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAz
MzAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KDQojbGluZSAzMzAzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHJwY25kci5oIg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSAzMzA3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXHJwY25kci5oIg0KI2xpbmUgMTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpiYXNl
LmgiDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDI1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
YmFzZS5oIg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4LmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRp
c2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHB1c2gsOCkNCg0KDQojbGluZSAzMCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBz
aHBhY2s4LmgiDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KI2xpbmUg
MjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmpiYXNlLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFz
ZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KDQoNCiNsaW5lIDI4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcY29tYmFzZWFwaS5oIg0KDQoNCg0KI2xpbmUgMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNl
YXBpLmgiDQoNCg0KDQojbGluZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0K
DQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEw
MykNCg0KI3ByYWdtYSBwYWNrKHB1c2gsOCkNCg0KDQojbGluZSAzMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFxwc2hwYWNrOC5oIg0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBzaHBhY2s4Lmgi
DQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KI2xpbmUgNDUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSA2NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KI2xpbmUgNjYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIG9yIE9u
ZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDE2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJh
c2VhcGkuaCINCiAgIA0KICAgDQojbGluZSAxOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgi
DQojbGluZSAxOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCg0KDQoNCmV4dGVybiAi
QysrIg0Kew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+ICAgICB2b2lkKiogSUlEX1BQVl9BUkdT
X0hlbHBlcihUKiogcHApOw0KfQ0KDQojbGluZSAyMDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBp
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjU3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCiNsaW5lIDI2NyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJh
c2VhcGkuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDI3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGku
aCINCiNsaW5lIDI3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMwMCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGNvbWJhc2VhcGkuaCINCg0KDQp0eXBlZGVmIGVudW0gdGFnUkVHQ0xTDQp7DQogICAgUkVHQ0xT
X1NJTkdMRVVTRSA9IDAsICAgICAgIA0KICAgIFJFR0NMU19NVUxUSVBMRVVTRSA9IDEsICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgUkVHQ0xTX01VTFRJX1NFUEFS
QVRFID0gMiwgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBSRUdDTFNf
U1VTUEVOREVEICAgICAgPSA0LCAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
ICAgIFJFR0NMU19TVVJST0dBVEUgICAgICA9IDgsICANCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMzI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KfSBSRUdDTFM7DQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgICAgSVJwY1N0dWJCdWZmZXIgICAgIElScGNTdHViQnVmZmVyOw0K
dHlwZWRlZiBzdHJ1Y3QgICAgSVJwY0NoYW5uZWxCdWZmZXIgIElScGNDaGFubmVsQnVmZmVyOw0K
DQoNCnR5cGVkZWYgZW51bSB0YWdDT0lOSVRCQVNFDQp7DQoNCg0KICANCiAgQ09JTklUQkFTRV9N
VUxUSVRIUkVBREVEICAgICAgPSAweDAsICAgICAgDQojbGluZSAzMzggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxj
b21iYXNlYXBpLmgiDQp9IENPSU5JVEJBU0U7DQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
d3R5cGVzYmFzZS5oIg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHNoYXJlZFxcd3R5cGVzYmFzZS5oIg0KDQoNCg0KDQojbGluZSAyMCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFx3dHlwZXNiYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KI2xpbmUgMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVzYmFzZS5oIg0KDQogDQoNCg0KDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxndWlkZGVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxcZ3VpZGRlZi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3dHlwZXNiYXNlLmgiDQoNCg0KZXh0
ZXJuICJDInsNCiNsaW5lIDQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlc2Jhc2UuaCINCg0KDQoN
CiANCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDU5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHd0eXBlc2Jhc2UuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDYzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlc2Jhc2Uu
aCINCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3d0eXBlc2Jhc2VfMDAwMF8w
MDAwX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3d0eXBl
c2Jhc2VfMDAwMF8wMDAwX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlc2Jhc2UuaCIN
Cg0KdHlwZWRlZiBXQ0hBUiBPTEVDSEFSOw0KDQp0eXBlZGVmICAgICBPTEVDSEFSICpMUE9MRVNU
UjsNCg0KdHlwZWRlZiAgICAgY29uc3QgT0xFQ0hBUiAqTFBDT0xFU1RSOw0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlc2Jhc2UuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVDSEFSOw0KDQp0eXBlZGVmIHNob3J0
IFNIT1JUOw0KDQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVTSE9SVDsNCg0KdHlwZWRlZiBEV09S
RCBVTE9ORzsNCg0KdHlwZWRlZiBkb3VibGUgRE9VQkxFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTgyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFxzaGFyZWRcXHd0eXBlc2Jhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfQ09BVVRISURFTlRJVFkNCiAgICB7DQogICAg
IFVTSE9SVCAqVXNlcjsNCiAgICAgVUxPTkcgVXNlckxlbmd0aDsNCiAgICAgVVNIT1JUICpEb21h
aW47DQogICAgIFVMT05HIERvbWFpbkxlbmd0aDsNCiAgICAgVVNIT1JUICpQYXNzd29yZDsNCiAg
ICAgVUxPTkcgUGFzc3dvcmRMZW5ndGg7DQogICAgVUxPTkcgRmxhZ3M7DQogICAgfSAJQ09BVVRI
SURFTlRJVFk7DQoNCnR5cGVkZWYgc3RydWN0IF9DT0FVVEhJTkZPDQogICAgew0KICAgIERXT1JE
IGR3QXV0aG5TdmM7DQogICAgRFdPUkQgZHdBdXRoelN2YzsNCiAgICBMUFdTVFIgcHdzelNlcnZl
clByaW5jTmFtZTsNCiAgICBEV09SRCBkd0F1dGhuTGV2ZWw7DQogICAgRFdPUkQgZHdJbXBlcnNv
bmF0aW9uTGV2ZWw7DQogICAgQ09BVVRISURFTlRJVFkgKnBBdXRoSWRlbnRpdHlEYXRhOw0KICAg
IERXT1JEIGR3Q2FwYWJpbGl0aWVzOw0KICAgIH0gCUNPQVVUSElORk87DQoNCnR5cGVkZWYgTE9O
RyBTQ09ERTsNCg0KdHlwZWRlZiBTQ09ERSAqUFNDT0RFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMTYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcd3R5cGVzYmFzZS5oIg0KdHlwZWRlZiANCmVudW0gdGFnTUVNQ1RYDQogICAgew0KICAg
ICAgICBNRU1DVFhfVEFTSwk9IDEsDQogICAgICAgIE1FTUNUWF9TSEFSRUQJPSAyLA0KICAgICAg
ICBNRU1DVFhfTUFDU1lTVEVNCT0gMywNCiAgICAgICAgTUVNQ1RYX1VOS05PV04JPSAtMSwNCiAg
ICAgICAgTUVNQ1RYX1NBTUUJPSAtMg0KICAgIH0gCU1FTUNUWDsNCg0KDQoNCg0KI2xpbmUgMzMw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlc2Jhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVzYmFzZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDM1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3dHlwZXNiYXNlLmgiDQp0
eXBlZGVmIA0KZW51bSB0YWdDTFNDVFgNCiAgICB7DQogICAgICAgIENMU0NUWF9JTlBST0NfU0VS
VkVSCT0gMHgxLA0KICAgICAgICBDTFNDVFhfSU5QUk9DX0hBTkRMRVIJPSAweDIsDQogICAgICAg
IENMU0NUWF9MT0NBTF9TRVJWRVIJPSAweDQsDQogICAgICAgIENMU0NUWF9JTlBST0NfU0VSVkVS
MTYJPSAweDgsDQogICAgICAgIENMU0NUWF9SRU1PVEVfU0VSVkVSCT0gMHgxMCwNCiAgICAgICAg
Q0xTQ1RYX0lOUFJPQ19IQU5ETEVSMTYJPSAweDIwLA0KICAgICAgICBDTFNDVFhfUkVTRVJWRUQx
CT0gMHg0MCwNCiAgICAgICAgQ0xTQ1RYX1JFU0VSVkVEMgk9IDB4ODAsDQogICAgICAgIENMU0NU
WF9SRVNFUlZFRDMJPSAweDEwMCwNCiAgICAgICAgQ0xTQ1RYX1JFU0VSVkVENAk9IDB4MjAwLA0K
ICAgICAgICBDTFNDVFhfTk9fQ09ERV9ET1dOTE9BRAk9IDB4NDAwLA0KICAgICAgICBDTFNDVFhf
UkVTRVJWRUQ1CT0gMHg4MDAsDQogICAgICAgIENMU0NUWF9OT19DVVNUT01fTUFSU0hBTAk9IDB4
MTAwMCwNCiAgICAgICAgQ0xTQ1RYX0VOQUJMRV9DT0RFX0RPV05MT0FECT0gMHgyMDAwLA0KICAg
ICAgICBDTFNDVFhfTk9fRkFJTFVSRV9MT0cJPSAweDQwMDAsDQogICAgICAgIENMU0NUWF9ESVNB
QkxFX0FBQQk9IDB4ODAwMCwNCiAgICAgICAgQ0xTQ1RYX0VOQUJMRV9BQUEJPSAweDEwMDAwLA0K
ICAgICAgICBDTFNDVFhfRlJPTV9ERUZBVUxUX0NPTlRFWFQJPSAweDIwMDAwLA0KICAgICAgICBD
TFNDVFhfQUNUSVZBVEVfWDg2X1NFUlZFUgk9IDB4NDAwMDAsDQogICAgICAgIENMU0NUWF9BQ1RJ
VkFURV8zMl9CSVRfU0VSVkVSCT0gQ0xTQ1RYX0FDVElWQVRFX1g4Nl9TRVJWRVIsDQogICAgICAg
IENMU0NUWF9BQ1RJVkFURV82NF9CSVRfU0VSVkVSCT0gMHg4MDAwMCwNCiAgICAgICAgQ0xTQ1RY
X0VOQUJMRV9DTE9BS0lORwk9IDB4MTAwMDAwLA0KICAgICAgICBDTFNDVFhfQVBQQ09OVEFJTkVS
CT0gMHg0MDAwMDAsDQogICAgICAgIENMU0NUWF9BQ1RJVkFURV9BQUFfQVNfSVUJPSAweDgwMDAw
MCwNCiAgICAgICAgQ0xTQ1RYX1JFU0VSVkVENgk9IDB4MTAwMDAwMCwNCiAgICAgICAgQ0xTQ1RY
X0FDVElWQVRFX0FSTTMyX1NFUlZFUgk9IDB4MjAwMDAwMCwNCiAgICAgICAgQ0xTQ1RYX1BTX0RM
TAk9IDB4ODAwMDAwMDANCiAgICB9IAlDTFNDVFg7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgDQplbnVtIHRhZ01TSExGTEFHUw0KICAgIHsNCiAg
ICAgICAgTVNITEZMQUdTX05PUk1BTAk9IDAsDQogICAgICAgIE1TSExGTEFHU19UQUJMRVNUUk9O
Rwk9IDEsDQogICAgICAgIE1TSExGTEFHU19UQUJMRVdFQUsJPSAyLA0KICAgICAgICBNU0hMRkxB
R1NfTk9QSU5HCT0gNCwNCiAgICAgICAgTVNITEZMQUdTX1JFU0VSVkVEMQk9IDgsDQogICAgICAg
IE1TSExGTEFHU19SRVNFUlZFRDIJPSAxNiwNCiAgICAgICAgTVNITEZMQUdTX1JFU0VSVkVEMwk9
IDMyLA0KICAgICAgICBNU0hMRkxBR1NfUkVTRVJWRUQ0CT0gNjQNCiAgICB9IAlNU0hMRkxBR1M7
DQoNCnR5cGVkZWYgDQplbnVtIHRhZ01TSENUWA0KICAgIHsNCiAgICAgICAgTVNIQ1RYX0xPQ0FM
CT0gMCwNCiAgICAgICAgTVNIQ1RYX05PU0hBUkVETUVNCT0gMSwNCiAgICAgICAgTVNIQ1RYX0RJ
RkZFUkVOVE1BQ0hJTkUJPSAyLA0KICAgICAgICBNU0hDVFhfSU5QUk9DCT0gMywNCiAgICAgICAg
TVNIQ1RYX0NST1NTQ1RYCT0gNCwNCiAgICAgICAgTVNIQ1RYX1JFU0VSVkVEMQk9IDUNCiAgICB9
IAlNU0hDVFg7DQoNCnR5cGVkZWYgc3RydWN0IF9CWVRFX0JMT0INCiAgICB7DQogICAgVUxPTkcg
Y2xTaXplOw0KICAgICBieXRlIGFiRGF0YVsgMSBdOw0KICAgIH0gCUJZVEVfQkxPQjsNCg0KdHlw
ZWRlZiAgICAgQllURV9CTE9CICpVUF9CWVRFX0JMT0I7DQoNCnR5cGVkZWYgc3RydWN0IF9XT1JE
X0JMT0INCiAgICB7DQogICAgVUxPTkcgY2xTaXplOw0KICAgICB1bnNpZ25lZCBzaG9ydCBhc0Rh
dGFbIDEgXTsNCiAgICB9IAlXT1JEX0JMT0I7DQoNCnR5cGVkZWYgICAgIFdPUkRfQkxPQiAqVVBf
V09SRF9CTE9COw0KDQp0eXBlZGVmIHN0cnVjdCBfRFdPUkRfQkxPQg0KICAgIHsNCiAgICBVTE9O
RyBjbFNpemU7DQogICAgIFVMT05HIGFsRGF0YVsgMSBdOw0KICAgIH0gCURXT1JEX0JMT0I7DQoN
CnR5cGVkZWYgICAgIERXT1JEX0JMT0IgKlVQX0RXT1JEX0JMT0I7DQoNCnR5cGVkZWYgc3RydWN0
IF9GTEFHR0VEX0JZVEVfQkxPQg0KICAgIHsNCiAgICBVTE9ORyBmRmxhZ3M7DQogICAgVUxPTkcg
Y2xTaXplOw0KICAgICBieXRlIGFiRGF0YVsgMSBdOw0KICAgIH0gCUZMQUdHRURfQllURV9CTE9C
Ow0KDQp0eXBlZGVmICAgICBGTEFHR0VEX0JZVEVfQkxPQiAqVVBfRkxBR0dFRF9CWVRFX0JMT0I7
DQoNCnR5cGVkZWYgc3RydWN0IF9GTEFHR0VEX1dPUkRfQkxPQg0KICAgIHsNCiAgICBVTE9ORyBm
RmxhZ3M7DQogICAgVUxPTkcgY2xTaXplOw0KICAgICB1bnNpZ25lZCBzaG9ydCBhc0RhdGFbIDEg
XTsNCiAgICB9IAlGTEFHR0VEX1dPUkRfQkxPQjsNCg0KdHlwZWRlZiAgICAgRkxBR0dFRF9XT1JE
X0JMT0IgKlVQX0ZMQUdHRURfV09SRF9CTE9COw0KDQp0eXBlZGVmIHN0cnVjdCBfQllURV9TSVpF
REFSUg0KICAgIHsNCiAgICBVTE9ORyBjbFNpemU7DQogICAgIGJ5dGUgKnBEYXRhOw0KICAgIH0g
CUJZVEVfU0laRURBUlI7DQoNCnR5cGVkZWYgc3RydWN0IF9TSE9SVF9TSVpFREFSUg0KICAgIHsN
CiAgICBVTE9ORyBjbFNpemU7DQogICAgIHVuc2lnbmVkIHNob3J0ICpwRGF0YTsNCiAgICB9IAlX
T1JEX1NJWkVEQVJSOw0KDQp0eXBlZGVmIHN0cnVjdCBfTE9OR19TSVpFREFSUg0KICAgIHsNCiAg
ICBVTE9ORyBjbFNpemU7DQogICAgIFVMT05HICpwRGF0YTsNCiAgICB9IAlEV09SRF9TSVpFREFS
UjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0hZUEVSX1NJWkVEQVJSDQogICAgew0KICAgIFVMT05HIGNs
U2l6ZTsNCiAgICAgX19pbnQ2NCAqcERhdGE7DQogICAgfSAJSFlQRVJfU0laRURBUlI7DQoNCg0K
DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBJV2luVHlwZXNCYXNlX3YwXzFfY19pZnNwZWM7DQpleHRl
cm4gUlBDX0lGX0hBTkRMRSBJV2luVHlwZXNCYXNlX3YwXzFfc19pZnNwZWM7DQojbGluZSA1MDUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVzYmFzZS5oIg0KDQoNCiANCg0KdHlwZWRlZiBib29sZWFu
IEJPT0xFQU47DQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQkxPQg0KICAgIHsNCiAgICBV
TE9ORyBjYlNpemU7DQogICAgIEJZVEUgKnBCbG9iRGF0YTsNCiAgICB9IAlCTE9COw0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdCTE9CICpMUEJMT0I7DQoNCiNsaW5lIDUyNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFx3dHlwZXNiYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDU1OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFx3dHlwZXNiYXNlLmgiDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUg
X19NSURMX2l0Zl93dHlwZXNiYXNlXzAwMDBfMDAwMV92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQ
Q19JRl9IQU5ETEUgX19NSURMX2l0Zl93dHlwZXNiYXNlXzAwMDBfMDAwMV92MF8wX3NfaWZzcGVj
Ow0KDQoNCg0KDQoNCg0KfQ0KI2xpbmUgNTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlc2Jhc2Uu
aCINCg0KI2xpbmUgNTcyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlc2Jhc2UuaCINCg0KDQojbGlu
ZSAzNDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
dW5rbnduYmFzZS5oIg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdW5rbnduYmFzZS5oIg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1bmtud25iYXNl
LmgiDQoNCiANCg0KDQoNCnR5cGVkZWYgc3RydWN0IElVbmtub3duIElVbmtub3duOw0KDQojbGlu
ZSA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVua253bmJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
QXN5bmNJVW5rbm93biBBc3luY0lVbmtub3duOw0KDQojbGluZSA1NCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVu
a253bmJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUNsYXNzRmFjdG9yeSBJQ2xhc3NG
YWN0b3J5Ow0KDQojbGluZSA2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVua253bmJhc2UuaCINCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyJ7DQojbGluZSA2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVua253bmJhc2UuaCINCg0K
DQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgODQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx1bmtud25iYXNlLmgiDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdW5r
bnduYmFzZV8wMDAwXzAwMDBfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfdW5rbnduYmFzZV8wMDAwXzAwMDBfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQog
DQoNCnR5cGVkZWYgIElVbmtub3duICpMUFVOS05PV047DQoNCg0KDQoNCg0KDQoNCiAgICBleHRl
cm4gIkMiIGNvbnN0IElJRCBJSURfSVVua25vd247DQogICAgZXh0ZXJuICJDKysiDQogICAgew0K
ICAgICAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDAwMC0wMDAwLTAwMDAtQzAwMC0w
MDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICAgICAgSVVua25vd24NCiAg
ICAgICAgew0KICAgICAgICBwdWJsaWM6DQogICAgICAgICAgICANCiAgICAgICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUXVlcnlJbnRlcmZhY2UoIA0KICAgICAgICAgICAgICAgICBj
b25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgICAgICAgdm9pZCAgKiAqcHB2T2JqZWN0KSA9
IDA7DQoNCiAgICAgICAgICAgIHZpcnR1YWwgVUxPTkcgX19zdGRjYWxsIEFkZFJlZiggdm9pZCkg
PSAwOw0KDQogICAgICAgICAgICB2aXJ0dWFsIFVMT05HIF9fc3RkY2FsbCBSZWxlYXNlKCB2b2lk
KSA9IDA7DQoNCiAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFE+DQogICAgICAgICAgICBIUkVT
VUxUDQoNCg0KDQogICAgICAgICAgICBfX3N0ZGNhbGwNCiNsaW5lIDEyOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHVua253bmJhc2UuaCINCiAgICAgICAgICAgIFF1ZXJ5SW50ZXJmYWNlKCBRKiogcHApDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXJ5SW50ZXJmYWNlKF9fdXVpZG9m
KFEpLCAodm9pZCAqKilwcCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KICAgICAg
ICB9Ow0KICAgIH0gDQogICAgSFJFU1VMVCBfX3N0ZGNhbGwgSVVua25vd25fUXVlcnlJbnRlcmZh
Y2VfUHJveHkoDQogICAgICAgIElVbmtub3duICAqIFRoaXMsDQogICAgICAgICBjb25zdCBJSUQg
JiByaWlkLA0KICAgICAgICAgICB2b2lkICAqICpwcHZPYmplY3QpOw0KICAgIA0KICAgIHZvaWQg
X19zdGRjYWxsIElVbmtub3duX1F1ZXJ5SW50ZXJmYWNlX1N0dWIoDQogICAgICAgIElScGNTdHVi
QnVmZmVyICpUaGlzLA0KICAgICAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVm
ZmVyLA0KICAgICAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgICAgICBEV09SRCAq
X3Bkd1N0dWJQaGFzZSk7DQogICAgDQogICAgVUxPTkcgX19zdGRjYWxsIElVbmtub3duX0FkZFJl
Zl9Qcm94eSgNCiAgICAgICAgSVVua25vd24gICogVGhpcyk7DQogICAgDQogICAgdm9pZCBfX3N0
ZGNhbGwgSVVua25vd25fQWRkUmVmX1N0dWIoDQogICAgICAgIElScGNTdHViQnVmZmVyICpUaGlz
LA0KICAgICAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgICAg
ICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgICAgICBEV09SRCAqX3Bkd1N0dWJQaGFz
ZSk7DQogICAgDQogICAgVUxPTkcgX19zdGRjYWxsIElVbmtub3duX1JlbGVhc2VfUHJveHkoDQog
ICAgICAgIElVbmtub3duICAqIFRoaXMpOw0KICAgIA0KICAgIHZvaWQgX19zdGRjYWxsIElVbmtu
b3duX1JlbGVhc2VfU3R1YigNCiAgICAgICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgICAg
IElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgICAgIFBSUENfTUVT
U0FHRSBfcFJwY01lc3NhZ2UsDQogICAgICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI3MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVua253bmJhc2UuaCINCg0KDQoNCiANCg0KI2xpbmUgMjc5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
dW5rbnduYmFzZS5oIg0KI2xpbmUgMjgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdW5rbnduYmFzZS5oIg0KI3By
YWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3Vua253bmJhc2Vf
MDAwMF8wMDAxX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X3Vua253bmJhc2VfMDAwMF8wMDAxX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4
dGVybiAiQyIgY29uc3QgSUlEIElJRF9Bc3luY0lVbmtub3duOw0KDQoNCiAgICANCiAgICBzdHJ1
Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDBlMDAwMC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYi
KSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBBc3luY0lVbmtub3duIDogcHVibGljIElVbmtu
b3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBCZWdpbl9RdWVyeUludGVyZmFjZSggDQogICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBGaW5pc2hf
UXVlcnlJbnRlcmZhY2UoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqKnBw
dk9iamVjdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBCZWdpbl9BZGRSZWYoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgVUxP
TkcgX19zdGRjYWxsIEZpbmlzaF9BZGRSZWYoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQmVnaW5fUmVsZWFzZSggdm9pZCkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCBVTE9ORyBfX3N0ZGNhbGwgRmluaXNoX1JlbGVhc2UoIHZv
aWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MDUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx1bmtud25iYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDQxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVua253bmJh
c2UuaCINCg0KDQoNCiANCg0KI2xpbmUgNDE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdW5rbnduYmFzZS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBP
bmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91bmtu
d25iYXNlXzAwMDBfMDAwMl92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19N
SURMX2l0Zl91bmtud25iYXNlXzAwMDBfMDAwMl92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiAN
Cg0KdHlwZWRlZiAgICAgSUNsYXNzRmFjdG9yeSAqTFBDTEFTU0ZBQ1RPUlk7DQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBJSUQgSUlEX0lDbGFzc0ZhY3Rvcnk7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjAwMDAwMDAxLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElDbGFzc0ZhY3RvcnkgOiBwdWJsaWMgSVVua25vd24N
CiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBD
cmVhdGVJbnN0YW5jZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBJVW5rbm93biAq
cFVua091dGVyLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlp
ZCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgdm9pZCAqKnBwdk9iamVjdCkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgTG9ja1NlcnZlcigg
DQogICAgICAgICAgICAgQk9PTCBmTG9jaykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdW5rbnduYmFzZS5oIg0K
DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElDbGFzc0ZhY3RvcnlfUmVtb3RlQ3JlYXRlSW5zdGFu
Y2VfUHJveHkoIA0KICAgICAgSUNsYXNzRmFjdG9yeSAqIFRoaXMsDQogICAgICAgY29uc3QgSUlE
ICYgcmlpZCwNCiAgICAgICBJVW5rbm93biAqKnBwdk9iamVjdCk7DQoNCg0Kdm9pZCBfX3N0ZGNh
bGwgSUNsYXNzRmFjdG9yeV9SZW1vdGVDcmVhdGVJbnN0YW5jZV9TdHViKA0KICAgIElScGNTdHVi
QnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIs
DQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFz
ZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElDbGFzc0ZhY3RvcnlfUmVtb3RlTG9ja1NlcnZl
cl9Qcm94eSggDQogICAgICBJQ2xhc3NGYWN0b3J5ICogVGhpcywNCiAgICAgQk9PTCBmTG9jayk7
DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUNsYXNzRmFjdG9yeV9SZW1vdGVMb2NrU2VydmVyX1N0dWIo
DQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBj
Q2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JE
ICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDU0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVua253bmJh
c2UuaCINCg0KDQoNCiANCg0KI2xpbmUgNTU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdW5rbnduYmFzZS5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3Vu
a253bmJhc2VfMDAwMF8wMDAzX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBf
X01JRExfaXRmX3Vua253bmJhc2VfMDAwMF8wMDAzX3YwXzBfc19pZnNwZWM7DQoNCg0KDQogSFJF
U1VMVCBfX3N0ZGNhbGwgSUNsYXNzRmFjdG9yeV9DcmVhdGVJbnN0YW5jZV9Qcm94eSggDQogICAg
SUNsYXNzRmFjdG9yeSAqIFRoaXMsDQogICAgIA0KICAgICAgIElVbmtub3duICpwVW5rT3V0ZXIs
DQogICAgIA0KICAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgIA0KICAgICAgdm9pZCAqKnBw
dk9iamVjdCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElDbGFzc0ZhY3RvcnlfQ3JlYXRlSW5z
dGFuY2VfU3R1YiggDQogICAgICBJQ2xhc3NGYWN0b3J5ICogVGhpcywNCiAgICAgICBjb25zdCBJ
SUQgJiByaWlkLA0KICAgICAgIElVbmtub3duICoqcHB2T2JqZWN0KTsNCg0KIEhSRVNVTFQgX19z
dGRjYWxsIElDbGFzc0ZhY3RvcnlfTG9ja1NlcnZlcl9Qcm94eSggDQogICAgSUNsYXNzRmFjdG9y
eSAqIFRoaXMsDQogICAgIEJPT0wgZkxvY2spOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJQ2xh
c3NGYWN0b3J5X0xvY2tTZXJ2ZXJfU3R1YiggDQogICAgICBJQ2xhc3NGYWN0b3J5ICogVGhpcywN
CiAgICAgQk9PTCBmTG9jayk7DQoNCg0KDQoNCg0KDQp9DQojbGluZSA1OTQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx1bmtud25iYXNlLmgiDQoNCiNsaW5lIDU5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVua253bmJhc2UuaCIN
Cg0KDQojbGluZSAzNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMrKyINCnsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgICAgdm9pZCoq
IElJRF9QUFZfQVJHU19IZWxwZXIoVCoqIHBwKQ0KICAgIHsNCiNwcmFnbWEgcHJlZmFzdChzdXBw
cmVzczogNjI2OSwgIlRvb2wgaXNzdWUgd2l0aCB1bnVzZWQgc3RhdGljX2Nhc3QiKQ0KICAgICAg
ICBzdGF0aWNfY2FzdDxJVW5rbm93bio+KCpwcCk7ICAgIA0KICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KHBwKTsNCiAgICB9DQp9DQoNCiNsaW5lIDM2MiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGNvbWJhc2VhcGkuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCIN
Cg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCiNsaW5lIDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQogDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBJTWFyc2hhbCBJTWFyc2hhbDsNCg0KI2xpbmUgNDcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElOb01hcnNoYWwgSU5v
TWFyc2hhbDsNCg0KI2xpbmUgNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoN
CnR5cGVkZWYgc3RydWN0IElBZ2lsZU9iamVjdCBJQWdpbGVPYmplY3Q7DQoNCiNsaW5lIDYxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQWN0aXZh
dGlvbkZpbHRlciBJQWN0aXZhdGlvbkZpbHRlcjsNCg0KI2xpbmUgNjggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElNYXJzaGFsMiBJTWFyc2hhbDI7
DQoNCiNsaW5lIDc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBJTWFsbG9jIElNYWxsb2M7DQoNCiNsaW5lIDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRs
YmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJU3RkTWFyc2hhbEluZm8gSVN0ZE1hcnNo
YWxJbmZvOw0KDQojbGluZSA4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgSUV4dGVybmFsQ29ubmVjdGlvbiBJRXh0ZXJuYWxDb25uZWN0aW9uOw0K
DQojbGluZSA5NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgSU11bHRpUUkgSU11bHRpUUk7DQoNCiNsaW5lIDEwMyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlk
bGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgQXN5bmNJTXVsdGlRSSBBc3luY0lNdWx0
aVFJOw0KDQojbGluZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IElJbnRlcm5hbFVua25vd24gSUludGVybmFsVW5rbm93bjsNCg0KI2xpbmUg
MTE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJ
RW51bVVua25vd24gSUVudW1Vbmtub3duOw0KDQojbGluZSAxMjQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElFbnVtU3RyaW5nIElFbnVtU3RyaW5n
Ow0KDQojbGluZSAxMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IElTZXF1ZW50aWFsU3RyZWFtIElTZXF1ZW50aWFsU3RyZWFtOw0KDQojbGluZSAx
MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElT
dHJlYW0gSVN0cmVhbTsNCg0KI2xpbmUgMTQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJUnBjQ2hhbm5lbEJ1ZmZlciBJUnBjQ2hhbm5lbEJ1ZmZl
cjsNCg0KI2xpbmUgMTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBJUnBjQ2hhbm5lbEJ1ZmZlcjIgSVJwY0NoYW5uZWxCdWZmZXIyOw0KDQojbGlu
ZSAxNTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IElBc3luY1JwY0NoYW5uZWxCdWZmZXIgSUFzeW5jUnBjQ2hhbm5lbEJ1ZmZlcjsNCg0KI2xpbmUg
MTY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJ
UnBjQ2hhbm5lbEJ1ZmZlcjMgSVJwY0NoYW5uZWxCdWZmZXIzOw0KDQojbGluZSAxNzMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElScGNTeW50YXhO
ZWdvdGlhdGUgSVJwY1N5bnRheE5lZ290aWF0ZTsNCg0KI2xpbmUgMTgwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJUnBjUHJveHlCdWZmZXIgSVJw
Y1Byb3h5QnVmZmVyOw0KDQojbGluZSAxODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IElScGNTdHViQnVmZmVyIElScGNTdHViQnVmZmVyOw0KDQoj
bGluZSAxOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IElQU0ZhY3RvcnlCdWZmZXIgSVBTRmFjdG9yeUJ1ZmZlcjsNCg0KI2xpbmUgMjAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQ2hhbm5lbEhv
b2sgSUNoYW5uZWxIb29rOw0KDQojbGluZSAyMDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElDbGllbnRTZWN1cml0eSBJQ2xpZW50U2VjdXJpdHk7
DQoNCiNsaW5lIDIxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgSVNlcnZlclNlY3VyaXR5IElTZXJ2ZXJTZWN1cml0eTsNCg0KI2xpbmUgMjIyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJUnBjT3B0
aW9ucyBJUnBjT3B0aW9uczsNCg0KI2xpbmUgMjI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5o
Ig0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJR2xvYmFsT3B0aW9ucyBJR2xvYmFsT3B0aW9uczsN
Cg0KI2xpbmUgMjM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBJU3Vycm9nYXRlIElTdXJyb2dhdGU7DQoNCiNsaW5lIDI0MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9iamlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUdsb2JhbEludGVyZmFjZVRh
YmxlIElHbG9iYWxJbnRlcmZhY2VUYWJsZTsNCg0KI2xpbmUgMjUwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJU3luY2hyb25pemUgSVN5bmNocm9u
aXplOw0KDQojbGluZSAyNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IElTeW5jaHJvbml6ZUhhbmRsZSBJU3luY2hyb25pemVIYW5kbGU7DQoNCiNs
aW5lIDI2NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgSVN5bmNocm9uaXplRXZlbnQgSVN5bmNocm9uaXplRXZlbnQ7DQoNCiNsaW5lIDI3MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVN5bmNocm9u
aXplQ29udGFpbmVyIElTeW5jaHJvbml6ZUNvbnRhaW5lcjsNCg0KI2xpbmUgMjc4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJU3luY2hyb25pemVN
dXRleCBJU3luY2hyb25pemVNdXRleDsNCg0KI2xpbmUgMjg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRs
YmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQ2FuY2VsTWV0aG9kQ2FsbHMgSUNhbmNl
bE1ldGhvZENhbGxzOw0KDQojbGluZSAyOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IElBc3luY01hbmFnZXIgSUFzeW5jTWFuYWdlcjsNCg0KI2xp
bmUgMjk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBJQ2FsbEZhY3RvcnkgSUNhbGxGYWN0b3J5Ow0KDQojbGluZSAzMDYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElScGNIZWxwZXIgSVJwY0hlbHBl
cjsNCg0KI2xpbmUgMzEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBJUmVsZWFzZU1hcnNoYWxCdWZmZXJzIElSZWxlYXNlTWFyc2hhbEJ1ZmZlcnM7
DQoNCiNsaW5lIDMyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgSVdhaXRNdWx0aXBsZSBJV2FpdE11bHRpcGxlOw0KDQojbGluZSAzMjcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElBZGRyVHJhY2tp
bmdDb250cm9sIElBZGRyVHJhY2tpbmdDb250cm9sOw0KDQojbGluZSAzMzQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElBZGRyRXhjbHVzaW9uQ29u
dHJvbCBJQWRkckV4Y2x1c2lvbkNvbnRyb2w7DQoNCiNsaW5lIDM0MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9i
amlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVBpcGVCeXRlIElQaXBlQnl0ZTsN
Cg0KI2xpbmUgMzQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBBc3luY0lQaXBlQnl0ZSBBc3luY0lQaXBlQnl0ZTsNCg0KI2xpbmUgMzU1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJUGlwZUxvbmcg
SVBpcGVMb25nOw0KDQojbGluZSAzNjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IEFzeW5jSVBpcGVMb25nIEFzeW5jSVBpcGVMb25nOw0KDQojbGlu
ZSAzNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IElQaXBlRG91YmxlIElQaXBlRG91YmxlOw0KDQojbGluZSAzNzYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IEFzeW5jSVBpcGVEb3VibGUgQXN5bmNJ
UGlwZURvdWJsZTsNCg0KI2xpbmUgMzgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBJRW51bUNvbnRleHRQcm9wcyBJRW51bUNvbnRleHRQcm9wczsN
Cg0KI2xpbmUgMzkwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBJQ29udGV4dCBJQ29udGV4dDsNCg0KI2xpbmUgMzk3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJT2JqQ29udGV4dCBJT2JqQ29udGV4
dDsNCg0KI2xpbmUgNDA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBJQ29tVGhyZWFkaW5nSW5mbyBJQ29tVGhyZWFkaW5nSW5mbzsNCg0KI2xpbmUg
NDExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJ
UHJvY2Vzc0luaXRDb250cm9sIElQcm9jZXNzSW5pdENvbnRyb2w7DQoNCiNsaW5lIDQxOCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUZhc3RSdW5k
b3duIElGYXN0UnVuZG93bjsNCg0KI2xpbmUgNDI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5o
Ig0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJTWFyc2hhbGluZ1N0cmVhbSBJTWFyc2hhbGluZ1N0
cmVhbTsNCg0KI2xpbmUgNDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCBJQWdpbGVSZWZlcmVuY2UgSUFnaWxlUmVmZXJlbmNlOw0KDQojbGluZSA0
MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiew0K
I2xpbmUgNDQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDQ2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoj
bGluZSA0NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KI2xpbmUgNDY5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCiNsaW5lIDQ3MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlk
bGJhc2UuaCINCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCg0KDQoNCiNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgNDgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFz
ZS5oIg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkNCiNsaW5lIDQ4NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG9iamlkbGJhc2UuaCINCg0KI3ByYWdtYSBvbmNlDQojbGluZSA0ODggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvYmppZGxiYXNlLmgiDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9y
IE9uZUNvcmUgRmFtaWx5DQoNCg0KDQojbGluZSA0OTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNl
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KI2xpbmUgNTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFz
ZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWls
eSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCnR5cGVkZWYgc3RydWN0IF9DT1NFUlZFUklORk8NCiAg
ICB7DQogICAgRFdPUkQgZHdSZXNlcnZlZDE7DQogICAgTFBXU1RSIHB3c3pOYW1lOw0KICAgIENP
QVVUSElORk8gKnBBdXRoSW5mbzsNCiAgICBEV09SRCBkd1Jlc2VydmVkMjsNCiAgICB9IAlDT1NF
UlZFUklORk87DQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRs
YmFzZV8wMDAwXzAwMDBfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlE
TF9pdGZfb2JqaWRsYmFzZV8wMDAwXzAwMDBfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoN
CnR5cGVkZWYgIElNYXJzaGFsICpMUE1BUlNIQUw7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQg
SUlEX0lNYXJzaGFsOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAw
MDAwMy0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJTWFyc2hhbCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0VW5tYXJzaGFsQ2xhc3MoIA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgIHZvaWQgKnB2LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
RFdPUkQgZHdEZXN0Q29udGV4dCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIHZvaWQg
KnB2RGVzdENvbnRleHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBtc2hs
ZmxhZ3MsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBDTFNJRCAqcENpZCkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRNYXJzaGFsU2l6
ZU1heCggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkLA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqcHYsDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICBEV09SRCBkd0Rlc3RDb250ZXh0LA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgdm9pZCAqcHZEZXN0Q29udGV4dCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIERXT1JEIG1zaGxmbGFncywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JE
ICpwU2l6ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBNYXJzaGFsSW50ZXJmYWNlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIElTdHJl
YW0gKnBTdG0sDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlk
LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqcHYsDQogICAgICAgICAgICAg
DQogICAgICAgICAgICAgICBEV09SRCBkd0Rlc3RDb250ZXh0LA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgdm9pZCAqcHZEZXN0Q29udGV4dCwNCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIERXT1JEIG1zaGxmbGFncykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBVbm1hcnNoYWxJbnRlcmZhY2UoIA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgSVN0cmVhbSAqcFN0bSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IGNvbnN0IElJRCAmIHJpaWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIHZvaWQgKipw
cHYpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVs
ZWFzZU1hcnNoYWxEYXRhKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIElTdHJlYW0g
KnBTdG0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
RGlzY29ubmVjdE9iamVjdCggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBk
d1Jlc2VydmVkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA3MjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0K
DQoNCiNsaW5lIDczMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiAN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSU5vTWFyc2hhbDsNCg0KDQogICAgDQogICAg
c3RydWN0IF9fZGVjbHNwZWModXVpZCgiZWNjODY5MWItYzFkYi00ZGMwLTg1NWUtNjVmNmM1NTFh
ZjQ5IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU5vTWFyc2hhbCA6IHB1YmxpYyBJVW5r
bm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3OTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgi
DQoNCg0KDQoNCiNsaW5lIDgwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0K
DQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUFnaWxlT2JqZWN0Ow0KDQoNCiAg
ICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI5NGVhMmI5NC1lOWNjLTQ5ZTAtYzBmZi1l
ZTY0Y2E4ZjViOTAiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJQWdpbGVPYmplY3QgOiBw
dWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgIH07DQogICAgDQogICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODY1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSA4NzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgi
DQoNCg0KDQogDQoNCiNsaW5lIDg3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZh
bWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURM
X2l0Zl9vYmppZGxiYXNlXzAwMDBfMDAwM192MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9I
QU5ETEUgX19NSURMX2l0Zl9vYmppZGxiYXNlXzAwMDBfMDAwM192MF8wX3NfaWZzcGVjOw0KDQoN
Cg0KDQoNCiANCg0KdHlwZWRlZiANCmVudW0gdGFnQUNUSVZBVElPTlRZUEUNCiAgICB7DQogICAg
ICAgIEFDVElWQVRJT05UWVBFX1VOQ0FURUdPUklaRUQJPSAwLA0KICAgICAgICBBQ1RJVkFUSU9O
VFlQRV9GUk9NX01PTklLRVIJPSAweDEsDQogICAgICAgIEFDVElWQVRJT05UWVBFX0ZST01fREFU
QQk9IDB4MiwNCiAgICAgICAgQUNUSVZBVElPTlRZUEVfRlJPTV9TVE9SQUdFCT0gMHg0LA0KICAg
ICAgICBBQ1RJVkFUSU9OVFlQRV9GUk9NX1NUUkVBTQk9IDB4OCwNCiAgICAgICAgQUNUSVZBVElP
TlRZUEVfRlJPTV9GSUxFCT0gMHgxMA0KICAgIH0gCUFDVElWQVRJT05UWVBFOw0KDQoNCmV4dGVy
biAiQyIgY29uc3QgSUlEIElJRF9JQWN0aXZhdGlvbkZpbHRlcjsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAwMTctMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUFjdGl2YXRpb25GaWx0ZXIgOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIEhhbmRsZUFjdGl2YXRpb24oIA0KICAgICAgICAgICAgIERXT1JEIGR3QWN0aXZhdGlv
blR5cGUsDQogICAgICAgICAgICAgY29uc3QgSUlEICYgcmNsc2lkLA0KICAgICAgICAgICAgIENM
U0lEICpwUmVwbGFjZW1lbnRDbHNJZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDk3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgOTc3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJTWFyc2hh
bDIgKkxQTUFSU0hBTDI7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lNYXJzaGFsMjsN
Cg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxY2YtMDAwMC0wMDAw
LUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU1hcnNoYWwy
IDogcHVibGljIElNYXJzaGFsDQogICAgew0KICAgIHB1YmxpYzoNCiAgICB9Ow0KICAgIA0KICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTI3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSAxMTMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5o
Ig0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJTWFsbG9jICpMUE1BTExPQzsNCg0KDQpleHRl
cm4gIkMiIGNvbnN0IElJRCBJSURfSU1hbGxvYzsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVj
bHNwZWModXVpZCgiMDAwMDAwMDItMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVj
bHNwZWMobm92dGFibGUpDQogICAgSU1hbGxvYyA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAg
ICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgdm9pZCAqX19zdGRjYWxsIEFsbG9jKCANCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIFNJWkVfVCBjYikgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCB2b2lkICpfX3N0ZGNhbGwgUmVhbGxvYyggDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICB2b2lkICpwdiwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFNJWkVf
VCBjYikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCB2b2lkIF9fc3RkY2FsbCBGcmVl
KCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIHZvaWQgKnB2KSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsIFNJWkVfVCBfX3N0ZGNhbGwgR2V0U2l6ZSggDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgIHZvaWQgKnB2KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIGludCBfX3N0ZGNhbGwgRGlkQWxsb2MoIA0KICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgdm9pZCAqcHYpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgdm9pZCBfX3N0
ZGNhbGwgSGVhcE1pbmltaXplKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQog
ICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCIN
Cg0KDQoNCg0KI2xpbmUgMTI3NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0K
DQoNCiANCg0KdHlwZWRlZiAgSVN0ZE1hcnNoYWxJbmZvICpMUFNURE1BUlNIQUxJTkZPOw0KDQoN
CmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JU3RkTWFyc2hhbEluZm87DQoNCg0KICAgIA0KICAg
IHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDE4LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAw
MDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElTdGRNYXJzaGFsSW5mbyA6IHB1Ymxp
YyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgR2V0Q2xhc3NGb3JIYW5kbGVyKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIERXT1JEIGR3RGVzdENvbnRleHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICB2
b2lkICpwdkRlc3RDb250ZXh0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgQ0xTSUQg
KnBDbHNpZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzNjMgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDEzNjggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElFeHRlcm5hbENvbm5l
Y3Rpb24gKkxQRVhURVJOQUxDT05ORUNUSU9OOw0KDQp0eXBlZGVmIA0KZW51bSB0YWdFWFRDT05O
DQogICAgew0KICAgICAgICBFWFRDT05OX1NUUk9ORwk9IDB4MSwNCiAgICAgICAgRVhUQ09OTl9X
RUFLCT0gMHgyLA0KICAgICAgICBFWFRDT05OX0NBTExBQkxFCT0gMHg0DQogICAgfSAJRVhUQ09O
TjsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUV4dGVybmFsQ29ubmVjdGlvbjsNCg0K
DQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAwMTktMDAwMC0wMDAwLUMw
MDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUV4dGVybmFsQ29u
bmVjdGlvbiA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZp
cnR1YWwgRFdPUkQgX19zdGRjYWxsIEFkZENvbm5lY3Rpb24oIA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgRFdPUkQgZXh0Y29ubiwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IERXT1JEIHJlc2VydmVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIERXT1JEIF9f
c3RkY2FsbCBSZWxlYXNlQ29ubmVjdGlvbiggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICBEV09SRCBleHRjb25uLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgcmVz
ZXJ2ZWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBCT09MIGZMYXN0UmVsZWFzZUNs
b3NlcykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTQ3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUg
MTQ4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCiANCg0KdHlwZWRlZiAgICAg
SU11bHRpUUkgKkxQTVVMVElRSTsNCg0KI2xpbmUgMTQ5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJh
c2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1p
bHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnTVVMVElfUUkNCiAgICB7
DQogICAgY29uc3QgSUlEICpwSUlEOw0KICAgIElVbmtub3duICpwSXRmOw0KICAgIEhSRVNVTFQg
aHI7DQogICAgfSAJTVVMVElfUUk7DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExf
aXRmX29iamlkbGJhc2VfMDAwMF8wMDA4X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hB
TkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDA4X3YwXzBfc19pZnNwZWM7DQoNCg0K
DQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JTXVsdGlRSTsNCg0KDQogICAg
DQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAwMjAtMDAwMC0wMDAwLUMwMDAtMDAw
MDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU11bHRpUUkgOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIFF1ZXJ5TXVsdGlwbGVJbnRlcmZhY2VzKCANCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIFVMT05HIGNNUUlzLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTVVMVElf
UUkgKnBNUUlzKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTg2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSAxNTkxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJ
RF9Bc3luY0lNdWx0aVFJOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIw
MDBlMDAyMC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJs
ZSkNCiAgICBBc3luY0lNdWx0aVFJIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1Ymxp
YzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBCZWdpbl9RdWVyeU11bHRpcGxl
SW50ZXJmYWNlcyggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9ORyBjTVFJcywN
CiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIE1VTFRJX1FJICpwTVFJcykgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBGaW5pc2hfUXVlcnlNdWx0
aXBsZUludGVyZmFjZXMoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTVVMVElfUUkg
KnBNUUlzKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMTY4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgMTY4OSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCiANCg0KI2xpbmUgMTY5NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9iamlkbGJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5E
TEUgX19NSURMX2l0Zl9vYmppZGxiYXNlXzAwMDBfMDAwOV92MF8wX2NfaWZzcGVjOw0KZXh0ZXJu
IFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxiYXNlXzAwMDBfMDAwOV92MF8wX3NfaWZz
cGVjOw0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUludGVybmFs
VW5rbm93bjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAwMjEt
MDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAg
SUludGVybmFsVW5rbm93biA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUXVlcnlJbnRlcm5hbEludGVyZmFjZSgg
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICB2b2lkICoqcHB2KSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxNzgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoj
bGluZSAxNzg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KIA0KDQojbGluZSAx
NzkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxiYXNl
XzAwMDBfMDAxMF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0
Zl9vYmppZGxiYXNlXzAwMDBfMDAxMF92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlw
ZWRlZiAgICAgSUVudW1Vbmtub3duICpMUEVOVU1VTktOT1dOOw0KDQoNCmV4dGVybiAiQyIgY29u
c3QgSUlEIElJRF9JRW51bVVua25vd247DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVj
KHV1aWQoIjAwMDAwMTAwLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVj
KG5vdnRhYmxlKQ0KICAgIElFbnVtVW5rbm93biA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAg
ICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIE5leHQoIA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcgY2VsdCwNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIElVbmtub3duICoqcmdlbHQsDQogICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIFNraXAoIA0KICAgICAgICAgICAgIFVMT05HIGNlbHQpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVzZXQoIHZvaWQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ2xvbmUo
IA0KICAgICAgICAgICAgICAgSUVudW1Vbmtub3duICoqcHBlbnVtKSA9IDA7DQogICAgICAgIA0K
ICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE5MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQogSFJFU1VMVCBf
X3N0ZGNhbGwgSUVudW1Vbmtub3duX1JlbW90ZU5leHRfUHJveHkoIA0KICAgICAgSUVudW1Vbmtu
b3duICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgICBJVW5rbm93biAqKnJnZWx0LA0K
ICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElFbnVtVW5r
bm93bl9SZW1vdGVOZXh0X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJw
Y0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BS
cGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDE5MzMg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAg
IElFbnVtU3RyaW5nICpMUEVOVU1TVFJJTkc7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlE
X0lFbnVtU3RyaW5nOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAw
MDEwMS0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJRW51bVN0cmluZyA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIE5leHQoIA0KICAgICAgICAgICAgIFVM
T05HIGNlbHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBMUE9MRVNUUiAqcmdlbHQs
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNraXAoIA0KICAg
ICAgICAgICAgIFVMT05HIGNlbHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgUmVzZXQoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ2xvbmUoIA0KICAgICAgICAgICAgICAgSUVudW1TdHJpbmcg
KipwcGVudW0pID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxi
YXNlLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1TdHJpbmdfUmVtb3RlTmV4dF9Q
cm94eSggDQogICAgICBJRW51bVN0cmluZyAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQsDQogICAg
ICAgTFBPTEVTVFIgKnJnZWx0LA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQoNCnZv
aWQgX19zdGRjYWxsIElFbnVtU3RyaW5nX1JlbW90ZU5leHRfU3R1YigNCiAgICBJUnBjU3R1YkJ1
ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0K
ICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2Up
Ow0KDQoNCg0KI2xpbmUgMjA2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0K
DQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVNlcXVlbnRpYWxTdHJlYW07DQoN
Cg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjBjNzMzYTMwLTJhMWMtMTFjZS1h
ZGU1LTAwYWEwMDQ0NzczZCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElTZXF1ZW50aWFs
U3RyZWFtIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmly
dHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgUmVhZCggDQogICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICB2b2lkICpwdiwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFVMT05HIGNiLA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcgKnBjYlJlYWQpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIFdyaXRlKCANCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB2LA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgVUxPTkcgY2IsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9O
RyAqcGNiV3JpdHRlbikgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoN
Cg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVNlcXVlbnRpYWxTdHJlYW1fUmVtb3RlUmVhZF9Qcm94
eSggDQogICAgICBJU2VxdWVudGlhbFN0cmVhbSAqIFRoaXMsDQogICAgICAgYnl0ZSAqcHYsDQog
ICAgIFVMT05HIGNiLA0KICAgICAgIFVMT05HICpwY2JSZWFkKTsNCg0KDQp2b2lkIF9fc3RkY2Fs
bCBJU2VxdWVudGlhbFN0cmVhbV9SZW1vdGVSZWFkX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIg
KlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQ
UlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0K
DQogSFJFU1VMVCBfX3N0ZGNhbGwgSVNlcXVlbnRpYWxTdHJlYW1fUmVtb3RlV3JpdGVfUHJveHko
IA0KICAgICAgSVNlcXVlbnRpYWxTdHJlYW0gKiBUaGlzLA0KICAgICAgIGNvbnN0IGJ5dGUgKnB2
LA0KICAgICBVTE9ORyBjYiwNCiAgICAgICBVTE9ORyAqcGNiV3JpdHRlbik7DQoNCg0Kdm9pZCBf
X3N0ZGNhbGwgSVNlcXVlbnRpYWxTdHJlYW1fUmVtb3RlV3JpdGVfU3R1YigNCiAgICBJUnBjU3R1
YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVy
LA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhh
c2UpOw0KDQoNCg0KI2xpbmUgMjIwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoN
Cg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSVN0cmVhbSAqTFBTVFJFQU07DQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ1NUQVRTVEcNCiAgICB7DQogICAgTFBPTEVTVFIgcHdjc05hbWU7DQogICAgRFdPUkQg
dHlwZTsNCiAgICBVTEFSR0VfSU5URUdFUiBjYlNpemU7DQogICAgRklMRVRJTUUgbXRpbWU7DQog
ICAgRklMRVRJTUUgY3RpbWU7DQogICAgRklMRVRJTUUgYXRpbWU7DQogICAgRFdPUkQgZ3JmTW9k
ZTsNCiAgICBEV09SRCBncmZMb2Nrc1N1cHBvcnRlZDsNCiAgICBDTFNJRCBjbHNpZDsNCiAgICBE
V09SRCBncmZTdGF0ZUJpdHM7DQogICAgRFdPUkQgcmVzZXJ2ZWQ7DQogICAgfSAJU1RBVFNURzsN
Cg0KdHlwZWRlZiANCmVudW0gdGFnU1RHVFkNCiAgICB7DQogICAgICAgIFNUR1RZX1NUT1JBR0UJ
PSAxLA0KICAgICAgICBTVEdUWV9TVFJFQU0JPSAyLA0KICAgICAgICBTVEdUWV9MT0NLQllURVMJ
PSAzLA0KICAgICAgICBTVEdUWV9QUk9QRVJUWQk9IDQNCiAgICB9IAlTVEdUWTsNCg0KdHlwZWRl
ZiANCmVudW0gdGFnU1RSRUFNX1NFRUsNCiAgICB7DQogICAgICAgIFNUUkVBTV9TRUVLX1NFVAk9
IDAsDQogICAgICAgIFNUUkVBTV9TRUVLX0NVUgk9IDEsDQogICAgICAgIFNUUkVBTV9TRUVLX0VO
RAk9IDINCiAgICB9IAlTVFJFQU1fU0VFSzsNCg0KdHlwZWRlZiANCmVudW0gdGFnTE9DS1RZUEUN
CiAgICB7DQogICAgICAgIExPQ0tfV1JJVEUJPSAxLA0KICAgICAgICBMT0NLX0VYQ0xVU0lWRQk9
IDIsDQogICAgICAgIExPQ0tfT05MWU9OQ0UJPSA0DQogICAgfSAJTE9DS1RZUEU7DQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lTdHJlYW07DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjAwMDAwMDBjLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElTdHJlYW0gOiBwdWJsaWMgSVNlcXVlbnRpYWxTdHJlYW0N
CiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBT
ZWVrKCANCiAgICAgICAgICAgICBMQVJHRV9JTlRFR0VSIGRsaWJNb3ZlLA0KICAgICAgICAgICAg
IERXT1JEIGR3T3JpZ2luLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxBUkdFX0lO
VEVHRVIgKnBsaWJOZXdQb3NpdGlvbikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBTZXRTaXplKCANCiAgICAgICAgICAgICBVTEFSR0VfSU5URUdFUiBs
aWJOZXdTaXplKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBDb3B5VG8oIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSVN0cmVhbSAqcHN0
bSwNCiAgICAgICAgICAgICBVTEFSR0VfSU5URUdFUiBjYiwNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIFVMQVJHRV9JTlRFR0VSICpwY2JSZWFkLA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgVUxBUkdFX0lOVEVHRVIgKnBjYldyaXR0ZW4pID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ29tbWl0KCANCiAgICAgICAgICAgICBEV09S
RCBncmZDb21taXRGbGFncykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBSZXZlcnQoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBfX3N0ZGNhbGwgTG9ja1JlZ2lvbiggDQogICAgICAgICAgICAgVUxBUkdFX0lOVEVH
RVIgbGliT2Zmc2V0LA0KICAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSIGNiLA0KICAgICAgICAg
ICAgIERXT1JEIGR3TG9ja1R5cGUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgVW5sb2NrUmVnaW9uKCANCiAgICAgICAgICAgICBVTEFSR0VfSU5URUdF
UiBsaWJPZmZzZXQsDQogICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgY2IsDQogICAgICAgICAg
ICAgRFdPUkQgZHdMb2NrVHlwZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBTdGF0KCANCiAgICAgICAgICAgICAgIFNUQVRTVEcgKnBzdGF0c3RnLA0K
ICAgICAgICAgICAgIERXT1JEIGdyZlN0YXRGbGFnKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENsb25lKCANCiAgICAgICAgICAgICAgIElTdHJlYW0g
KipwcHN0bSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAy
NDUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxs
IElTdHJlYW1fUmVtb3RlU2Vla19Qcm94eSggDQogICAgICBJU3RyZWFtICogVGhpcywNCiAgICAg
TEFSR0VfSU5URUdFUiBkbGliTW92ZSwNCiAgICAgRFdPUkQgZHdPcmlnaW4sDQogICAgICAgVUxB
UkdFX0lOVEVHRVIgKnBsaWJOZXdQb3NpdGlvbik7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVN0cmVh
bV9SZW1vdGVTZWVrX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0No
YW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNN
ZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNh
bGwgSVN0cmVhbV9SZW1vdGVDb3B5VG9fUHJveHkoIA0KICAgICAgSVN0cmVhbSAqIFRoaXMsDQog
ICAgICAgSVN0cmVhbSAqcHN0bSwNCiAgICAgVUxBUkdFX0lOVEVHRVIgY2IsDQogICAgICAgVUxB
UkdFX0lOVEVHRVIgKnBjYlJlYWQsDQogICAgICAgVUxBUkdFX0lOVEVHRVIgKnBjYldyaXR0ZW4p
Ow0KDQoNCnZvaWQgX19zdGRjYWxsIElTdHJlYW1fUmVtb3RlQ29weVRvX1N0dWIoDQogICAgSVJw
Y1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1
ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1
YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDI0ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoN
Cg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgVUxPTkcgUlBDT0xFREFUQVJFUDsNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnUlBDT0xFTUVTU0FHRQ0KICAgIHsNCiAgICB2b2lkICpyZXNlcnZlZDE7DQogICAg
UlBDT0xFREFUQVJFUCBkYXRhUmVwcmVzZW50YXRpb247DQogICAgdm9pZCAqQnVmZmVyOw0KICAg
IFVMT05HIGNiQnVmZmVyOw0KICAgIFVMT05HIGlNZXRob2Q7DQogICAgdm9pZCAqcmVzZXJ2ZWQy
WyA1IF07DQogICAgVUxPTkcgcnBjRmxhZ3M7DQogICAgfSAJUlBDT0xFTUVTU0FHRTsNCg0KdHlw
ZWRlZiBSUENPTEVNRVNTQUdFICpQUlBDT0xFTUVTU0FHRTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IElJRCBJSURfSVJwY0NoYW5uZWxCdWZmZXI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xz
cGVjKHV1aWQoIkQ1RjU2QjYwLTU5M0ItMTAxQS1CNTY5LTA4MDAyQjJEQkY3QSIpKSBfX2RlY2xz
cGVjKG5vdnRhYmxlKQ0KICAgIElScGNDaGFubmVsQnVmZmVyIDogcHVibGljIElVbmtub3duDQog
ICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRC
dWZmZXIoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgUlBDT0xFTUVTU0FHRSAqcE1l
c3NhZ2UsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNlbmRSZWNl
aXZlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFJQQ09MRU1FU1NBR0UgKnBNZXNz
YWdlLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcgKnBTdGF0dXMpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRnJlZUJ1ZmZlcigg
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBSUENPTEVNRVNTQUdFICpwTWVzc2FnZSkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXREZXN0
Q3R4KCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEICpwZHdEZXN0Q29udGV4
dCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgdm9pZCAqKnBwdkRlc3RDb250ZXh0KSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIElzQ29ubmVj
dGVkKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDI2MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDI2MzggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQogDQoNCiNsaW5lIDI2NDQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvYmppZGxiYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExF
IF9fTUlETF9pdGZfb2JqaWRsYmFzZV8wMDAwXzAwMTVfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBS
UENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsYmFzZV8wMDAwXzAwMTVfdjBfMF9zX2lmc3Bl
YzsNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lScGNDaGFubmVs
QnVmZmVyMjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNTk0ZjMxZDAt
N2YxOS0xMWQwLWIxOTQtMDBhMGM5MGRjOGJmIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAg
SVJwY0NoYW5uZWxCdWZmZXIyIDogcHVibGljIElScGNDaGFubmVsQnVmZmVyDQogICAgew0KICAg
IHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRQcm90b2NvbFZl
cnNpb24oIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgKnBkd1ZlcnNpb24p
ID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjc3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUg
Mjc3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRl
cm4gIkMiIGNvbnN0IElJRCBJSURfSUFzeW5jUnBjQ2hhbm5lbEJ1ZmZlcjsNCg0KDQogICAgDQog
ICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiYTUwMjlmYjYtM2MzNC0xMWQxLTljOTktMDBjMDRm
Yjk5OGFhIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUFzeW5jUnBjQ2hhbm5lbEJ1ZmZl
ciA6IHB1YmxpYyBJUnBjQ2hhbm5lbEJ1ZmZlcjINCiAgICB7DQogICAgcHVibGljOg0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNlbmQoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgUlBDT0xFTUVTU0FHRSAqcE1zZywNCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIElTeW5jaHJvbml6ZSAqcFN5bmMsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBV
TE9ORyAqcHVsU3RhdHVzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFJlY2VpdmUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgUlBDT0xF
TUVTU0FHRSAqcE1zZywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFVMT05HICpwdWxT
dGF0dXMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
R2V0RGVzdEN0eEV4KCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFJQQ09MRU1FU1NB
R0UgKnBNc2csDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCAqcGR3RGVzdENv
bnRleHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIHZvaWQgKipwcHZEZXN0Q29udGV4
dCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjk1MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCIN
Cg0KDQoNCg0KI2xpbmUgMjk1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0K
DQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVJwY0NoYW5uZWxCdWZmZXIzOw0K
DQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIyNUIxNTYwMC0wMTE1LTExZDAt
QkYwRC0wMEFBMDBCOERGRDIiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJUnBjQ2hhbm5l
bEJ1ZmZlcjMgOiBwdWJsaWMgSVJwY0NoYW5uZWxCdWZmZXIyDQogICAgew0KICAgIHB1YmxpYzoN
CiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZW5kKCANCiAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgIFJQQ09MRU1FU1NBR0UgKnBNc2csDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICBVTE9ORyAqcHVsU3RhdHVzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlY2VpdmUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgUlBDT0xFTUVTU0FHRSAqcE1zZywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IFVMT05HIHVsU2l6ZSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFVMT05HICpwdWxT
dGF0dXMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
Q2FuY2VsKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFJQQ09MRU1FU1NBR0UgKnBN
c2cpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0
Q2FsbENvbnRleHQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgUlBDT0xFTUVTU0FH
RSAqcE1zZywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IElJRCAmIHJpaWQs
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIHZvaWQgKipwSW50ZXJmYWNlKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldERlc3RDdHhFeCgg
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBSUENPTEVNRVNTQUdFICpwTXNnLA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgKnBkd0Rlc3RDb250ZXh0LA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICB2b2lkICoqcHB2RGVzdENvbnRleHQpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U3RhdGUoIA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgUlBDT0xFTUVTU0FHRSAqcE1zZywNCiAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgIERXT1JEICpwU3RhdGUpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVnaXN0ZXJBc3luYyggDQogICAgICAgICAgICAg
DQogICAgICAgICAgICAgICBSUENPTEVNRVNTQUdFICpwTXNnLA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgSUFzeW5jTWFuYWdlciAqcEFzeW5jTWdyKSA9IDA7DQogICAgICAgIA0KICAg
IH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMxOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgi
DQoNCg0KDQoNCiNsaW5lIDMyMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoN
Cg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lScGNTeW50YXhOZWdvdGlhdGU7
DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjU4YTA4NTE5LTI0YzgtNDkz
NS1iNDgyLTNmZDgyMzMzM2E0ZiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElScGNTeW50
YXhOZWdvdGlhdGUgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIE5lZ290aWF0ZVN5bnRheCggDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICBSUENPTEVNRVNTQUdFICpwTXNnKSA9IDA7DQogICAgICAgIA0K
ICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDMyNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoN
CiNsaW5lIDMyODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lScGNQcm94eUJ1ZmZlcjsNCg0KDQogICAgDQog
ICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiRDVGNTZBMzQtNTkzQi0xMDFBLUI1NjktMDgwMDJC
MkRCRjdBIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVJwY1Byb3h5QnVmZmVyIDogcHVi
bGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBDb25uZWN0KCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIElScGND
aGFubmVsQnVmZmVyICpwUnBjQ2hhbm5lbEJ1ZmZlcikgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCB2b2lkIF9fc3RkY2FsbCBEaXNjb25uZWN0KCB2b2lkKSA9IDA7DQogICAgICAgIA0K
ICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMzNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNl
LmgiDQoNCg0KDQoNCiNsaW5lIDMzNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0K
DQogDQoNCiNsaW5lIDMzNzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExf
aXRmX29iamlkbGJhc2VfMDAwMF8wMDIwX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hB
TkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDIwX3YwXzBfc19pZnNwZWM7DQoNCg0K
DQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUnBjU3R1YkJ1ZmZlcjsNCg0K
DQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiRDVGNTZBRkMtNTkzQi0xMDFBLUI1
NjktMDgwMDJCMkRCRjdBIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVJwY1N0dWJCdWZm
ZXIgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIENvbm5lY3QoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgSVVua25vd24gKnBVbmtTZXJ2ZXIpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
dm9pZCBfX3N0ZGNhbGwgRGlzY29ubmVjdCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBJbnZva2UoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgUlBDT0xFTUVTU0FHRSAqX3BycGNtc2csDQogICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIElScGNTdHViQnVmZmVyICpfX3N0ZGNhbGwgSXNJSURTdXBw
b3J0ZWQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBVTE9ORyBfX3N0ZGNhbGwgQ291bnRSZWZz
KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IERlYnVnU2VydmVyUXVlcnlJbnRlcmZhY2UoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICB2b2lkICoqcHB2KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIHZvaWQgX19zdGRj
YWxsIERlYnVnU2VydmVyUmVsZWFzZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICB2
b2lkICpwdikgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDM1MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0K
DQoNCiNsaW5lIDM1MzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQog
DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lQU0ZhY3RvcnlCdWZmZXI7DQoNCg0KICAg
IA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIkQ1RjU2OUQwLTU5M0ItMTAxQS1CNTY5LTA4
MDAyQjJEQkY3QSIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQU0ZhY3RvcnlCdWZmZXIg
OiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIENyZWF0ZVByb3h5KCANCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIElVbmtub3duICpwVW5rT3V0ZXIsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBj
b25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBJUnBjUHJveHlC
dWZmZXIgKipwcFByb3h5LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICB2b2lkICoqcHB2
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENyZWF0
ZVN0dWIoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwN
CiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIElVbmtub3duICpwVW5rU2VydmVyLA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICBJUnBjU3R1YkJ1ZmZlciAqKnBwU3R1YikgPSAwOw0K
ICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAzNjQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSAzNjQ5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KIA0KDQojbGluZSAzNjU1ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBT
Q2hhbm5lbEhvb2tDYWxsSW5mbw0KICAgIHsNCiAgICBJSUQgaWlkOw0KICAgIERXT1JEIGNiU2l6
ZTsNCiAgICBHVUlEIHVDYXVzYWxpdHk7DQogICAgRFdPUkQgZHdTZXJ2ZXJQaWQ7DQogICAgRFdP
UkQgaU1ldGhvZDsNCiAgICB2b2lkICpwT2JqZWN0Ow0KICAgIH0gCVNDaGFubmVsSG9va0NhbGxJ
bmZvOw0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxiYXNlXzAw
MDBfMDAyMl92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9v
YmppZGxiYXNlXzAwMDBfMDAyMl92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KDQpleHRl
cm4gIkMiIGNvbnN0IElJRCBJSURfSUNoYW5uZWxIb29rOw0KDQoNCiAgICANCiAgICBzdHJ1Y3Qg
X19kZWNsc3BlYyh1dWlkKCIxMDA4YzRhMC03NjEzLTExY2YtOWFmMS0wMDIwYWY2ZTcyZjQiKSkg
X19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJQ2hhbm5lbEhvb2sgOiBwdWJsaWMgSVVua25vd24N
CiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIHZvaWQgX19zdGRjYWxsIENsaWVu
dEdldFNpemUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3QgR1VJRCAmIHVF
eHRlbnQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkLA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcgKnBEYXRhU2l6ZSkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCB2b2lkIF9fc3RkY2FsbCBDbGllbnRGaWxsQnVmZmVyKCAN
CiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiB1RXh0ZW50LA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgIFVMT05HICpwRGF0YVNpemUsDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICB2b2lkICpwRGF0YUJ1ZmZlcikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCB2b2lkIF9fc3RkY2FsbCBDbGllbnROb3RpZnkoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgY29uc3QgR1VJRCAmIHVFeHRlbnQsDQogICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxP
TkcgY2JEYXRhU2l6ZSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIHZvaWQgKnBEYXRh
QnVmZmVyLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgbERhdGFSZXAsDQog
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICBIUkVTVUxUIGhyRmF1bHQpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgdm9pZCBfX3N0ZGNhbGwgU2VydmVyTm90aWZ5KCANCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiB1RXh0ZW50LA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIFVMT05HIGNiRGF0YVNpemUsDQogICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICB2b2lkICpwRGF0YUJ1ZmZlciwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERX
T1JEIGxEYXRhUmVwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIHZvaWQgX19zdGRj
YWxsIFNlcnZlckdldFNpemUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3Qg
R1VJRCAmIHVFeHRlbnQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBJSUQg
JiByaWlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSFJFU1VMVCBockZhdWx0LA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcgKnBEYXRhU2l6ZSkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCB2b2lkIF9fc3RkY2FsbCBTZXJ2ZXJGaWxsQnVmZmVyKCAN
CiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiB1RXh0ZW50LA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgIFVMT05HICpwRGF0YVNpemUsDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICB2b2lkICpwRGF0YUJ1ZmZlciwNCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIEhSRVNVTFQgaHJGYXVsdCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM4OTQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDM4OTkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YmppZGxiYXNlLmgiDQoNCg0KDQogDQoNCiNsaW5lIDM5MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxi
YXNlLmgiDQojbGluZSAzOTA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsYmFz
ZV8wMDAwXzAwMjNfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9p
dGZfb2JqaWRsYmFzZV8wMDAwXzAwMjNfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5
cGVkZWYgc3RydWN0IHRhZ1NPTEVfQVVUSEVOVElDQVRJT05fU0VSVklDRQ0KICAgIHsNCiAgICBE
V09SRCBkd0F1dGhuU3ZjOw0KICAgIERXT1JEIGR3QXV0aHpTdmM7DQogICAgT0xFQ0hBUiAqcFBy
aW5jaXBhbE5hbWU7DQogICAgSFJFU1VMVCBocjsNCiAgICB9IAlTT0xFX0FVVEhFTlRJQ0FUSU9O
X1NFUlZJQ0U7DQoNCnR5cGVkZWYgU09MRV9BVVRIRU5USUNBVElPTl9TRVJWSUNFICpQU09MRV9B
VVRIRU5USUNBVElPTl9TRVJWSUNFOw0KDQp0eXBlZGVmIA0KZW51bSB0YWdFT0xFX0FVVEhFTlRJ
Q0FUSU9OX0NBUEFCSUxJVElFUw0KICAgIHsNCiAgICAgICAgRU9BQ19OT05FCT0gMCwNCiAgICAg
ICAgRU9BQ19NVVRVQUxfQVVUSAk9IDB4MSwNCiAgICAgICAgRU9BQ19TVEFUSUNfQ0xPQUtJTkcJ
PSAweDIwLA0KICAgICAgICBFT0FDX0RZTkFNSUNfQ0xPQUtJTkcJPSAweDQwLA0KICAgICAgICBF
T0FDX0FOWV9BVVRIT1JJVFkJPSAweDgwLA0KICAgICAgICBFT0FDX01BS0VfRlVMTFNJQwk9IDB4
MTAwLA0KICAgICAgICBFT0FDX0RFRkFVTFQJPSAweDgwMCwNCiAgICAgICAgRU9BQ19TRUNVUkVf
UkVGUwk9IDB4MiwNCiAgICAgICAgRU9BQ19BQ0NFU1NfQ09OVFJPTAk9IDB4NCwNCiAgICAgICAg
RU9BQ19BUFBJRAk9IDB4OCwNCiAgICAgICAgRU9BQ19EWU5BTUlDCT0gMHgxMCwNCiAgICAgICAg
RU9BQ19SRVFVSVJFX0ZVTExTSUMJPSAweDIwMCwNCiAgICAgICAgRU9BQ19BVVRPX0lNUEVSU09O
QVRFCT0gMHg0MDAsDQogICAgICAgIEVPQUNfRElTQUJMRV9BQUEJPSAweDEwMDAsDQogICAgICAg
IEVPQUNfTk9fQ1VTVE9NX01BUlNIQUwJPSAweDIwMDAsDQogICAgICAgIEVPQUNfUkVTRVJWRUQx
CT0gMHg0MDAwDQogICAgfSAJRU9MRV9BVVRIRU5USUNBVElPTl9DQVBBQklMSVRJRVM7DQoNCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnU09MRV9BVVRIRU5USUNBVElPTl9JTkZPDQogICAgew0K
ICAgIERXT1JEIGR3QXV0aG5TdmM7DQogICAgRFdPUkQgZHdBdXRoelN2YzsNCiAgICB2b2lkICpw
QXV0aEluZm87DQogICAgfSAJU09MRV9BVVRIRU5USUNBVElPTl9JTkZPOw0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdTT0xFX0FVVEhFTlRJQ0FUSU9OX0lORk8gKlBTT0xFX0FVVEhFTlRJQ0FUSU9OX0lO
Rk87DQoNCnR5cGVkZWYgc3RydWN0IHRhZ1NPTEVfQVVUSEVOVElDQVRJT05fTElTVA0KICAgIHsN
CiAgICBEV09SRCBjQXV0aEluZm87DQogICAgU09MRV9BVVRIRU5USUNBVElPTl9JTkZPICphQXV0
aEluZm87DQogICAgfSAJU09MRV9BVVRIRU5USUNBVElPTl9MSVNUOw0KDQp0eXBlZGVmIHN0cnVj
dCB0YWdTT0xFX0FVVEhFTlRJQ0FUSU9OX0xJU1QgKlBTT0xFX0FVVEhFTlRJQ0FUSU9OX0xJU1Q7
DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lDbGllbnRTZWN1cml0eTsNCg0KDQogICAg
DQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxM0QtMDAwMC0wMDAwLUMwMDAtMDAw
MDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUNsaWVudFNlY3VyaXR5IDog
cHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBRdWVyeUJsYW5rZXQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgSVVua25vd24gKnBQcm94eSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JE
ICpwQXV0aG5TdmMsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCAqcEF1dGh6
U3ZjLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgT0xFQ0hBUiAqKnBTZXJ2ZXJQcmlu
Y05hbWUsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCAqcEF1dGhuTGV2ZWws
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCAqcEltcExldmVsLA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICB2b2lkICoqcEF1dGhJbmZvLA0KICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgRFdPUkQgKnBDYXBhYmlsaXRlcykgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRCbGFua2V0KCANCiAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgIElVbmtub3duICpwUHJveHksDQogICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICBEV09SRCBkd0F1dGhuU3ZjLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
RFdPUkQgZHdBdXRoelN2YywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIE9MRUNIQVIg
KnBTZXJ2ZXJQcmluY05hbWUsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBk
d0F1dGhuTGV2ZWwsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBkd0ltcExl
dmVsLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqcEF1dGhJbmZvLA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgZHdDYXBhYmlsaXRpZXMpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ29weVByb3h5KCANCiAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgIElVbmtub3duICpwUHJveHksDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgIElVbmtub3duICoqcHBDb3B5KSA9IDA7DQogICAgICAgIA0KICAg
IH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDEyNyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgNDEzMiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9iamlkbGJhc2UuaCINCg0KDQoNCiANCg0KI2xpbmUgNDEzOCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlk
bGJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWls
eSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0
Zl9vYmppZGxiYXNlXzAwMDBfMDAyNF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5E
TEUgX19NSURMX2l0Zl9vYmppZGxiYXNlXzAwMDBfMDAyNF92MF8wX3NfaWZzcGVjOw0KDQoNCg0K
DQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVNlcnZlclNlY3VyaXR5Ow0KDQoN
CiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDEzRS0wMDAwLTAwMDAtQzAw
MC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJU2VydmVyU2VjdXJp
dHkgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIFF1ZXJ5QmxhbmtldCggDQogICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICBEV09SRCAqcEF1dGhuU3ZjLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
RFdPUkQgKnBBdXRoelN2YywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIE9MRUNIQVIg
KipwU2VydmVyUHJpbmNOYW1lLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQg
KnBBdXRobkxldmVsLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgKnBJbXBM
ZXZlbCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgdm9pZCAqKnBQcml2cywNCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEICpwQ2FwYWJpbGl0aWVzKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEltcGVyc29uYXRlQ2xpZW50
KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFJldmVydFRvU2VsZiggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBCT09M
IF9fc3RkY2FsbCBJc0ltcGVyc29uYXRpbmcoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgfTsN
CiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNDI2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xp
bmUgNDI3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCiANCg0KdHlwZWRlZiAN
CmVudW0gdGFnUlBDT1BUX1BST1BFUlRJRVMNCiAgICB7DQogICAgICAgIENPTUJORF9SUENUSU1F
T1VUCT0gMHgxLA0KICAgICAgICBDT01CTkRfU0VSVkVSX0xPQ0FMSVRZCT0gMHgyLA0KICAgICAg
ICBDT01CTkRfUkVTRVJWRUQxCT0gMHg0LA0KICAgICAgICBDT01CTkRfUkVTRVJWRUQyCT0gMHg1
LA0KICAgICAgICBDT01CTkRfUkVTRVJWRUQzCT0gMHg4LA0KICAgICAgICBDT01CTkRfUkVTRVJW
RUQ0CT0gMHgxMA0KICAgIH0gCVJQQ09QVF9QUk9QRVJUSUVTOw0KDQp0eXBlZGVmIA0KZW51bSB0
YWdSUENPUFRfU0VSVkVSX0xPQ0FMSVRZX1ZBTFVFUw0KICAgIHsNCiAgICAgICAgU0VSVkVSX0xP
Q0FMSVRZX1BST0NFU1NfTE9DQUwJPSAwLA0KICAgICAgICBTRVJWRVJfTE9DQUxJVFlfTUFDSElO
RV9MT0NBTAk9IDEsDQogICAgICAgIFNFUlZFUl9MT0NBTElUWV9SRU1PVEUJPSAyDQogICAgfSAJ
UlBDT1BUX1NFUlZFUl9MT0NBTElUWV9WQUxVRVM7DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRM
RSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDI1X3YwXzBfY19pZnNwZWM7DQpleHRlcm4g
UlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDI1X3YwXzBfc19pZnNw
ZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUnBjT3B0aW9u
czsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxNDQtMDAwMC0w
MDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVJwY09w
dGlvbnMgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldCggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICBJVW5rbm93biAqcFByeCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFJQQ09QVF9Q
Uk9QRVJUSUVTIGR3UHJvcGVydHksDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9O
R19QVFIgZHdWYWx1ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBRdWVyeSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBJVW5rbm93biAq
cFByeCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFJQQ09QVF9QUk9QRVJUSUVTIGR3
UHJvcGVydHksDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9OR19QVFIgKnBkd1Zh
bHVlKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNDQwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xp
bmUgNDQxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCiANCg0KI2xpbmUgNDQx
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21h
IHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KdHlwZWRlZiAN
CmVudW0gdGFnR0xPQkFMT1BUX1BST1BFUlRJRVMNCiAgICB7DQogICAgICAgIENPTUdMQl9FWENF
UFRJT05fSEFORExJTkcJPSAxLA0KICAgICAgICBDT01HTEJfQVBQSUQJPSAyLA0KICAgICAgICBD
T01HTEJfUlBDX1RIUkVBRFBPT0xfU0VUVElORwk9IDMsDQogICAgICAgIENPTUdMQl9ST19TRVRU
SU5HUwk9IDQsDQogICAgICAgIENPTUdMQl9VTk1BUlNIQUxJTkdfUE9MSUNZCT0gNSwNCiAgICAg
ICAgQ09NR0xCX1BST1BFUlRJRVNfUkVTRVJWRUQxCT0gNiwNCiAgICAgICAgQ09NR0xCX1BST1BF
UlRJRVNfUkVTRVJWRUQyCT0gNywNCiAgICAgICAgQ09NR0xCX1BST1BFUlRJRVNfUkVTRVJWRUQz
CT0gOA0KICAgIH0gCUdMT0JBTE9QVF9QUk9QRVJUSUVTOw0KDQp0eXBlZGVmIA0KZW51bSB0YWdH
TE9CQUxPUFRfRUhfVkFMVUVTDQogICAgew0KICAgICAgICBDT01HTEJfRVhDRVBUSU9OX0hBTkRM
RQk9IDAsDQogICAgICAgIENPTUdMQl9FWENFUFRJT05fRE9OT1RfSEFORExFX0ZBVEFMCT0gMSwN
CiAgICAgICAgQ09NR0xCX0VYQ0VQVElPTl9ET05PVF9IQU5ETEUJPSBDT01HTEJfRVhDRVBUSU9O
X0RPTk9UX0hBTkRMRV9GQVRBTCwNCiAgICAgICAgQ09NR0xCX0VYQ0VQVElPTl9ET05PVF9IQU5E
TEVfQU5ZCT0gMg0KICAgIH0gCUdMT0JBTE9QVF9FSF9WQUxVRVM7DQoNCnR5cGVkZWYgDQplbnVt
IHRhZ0dMT0JBTE9QVF9SUENUUF9WQUxVRVMNCiAgICB7DQogICAgICAgIENPTUdMQl9SUENfVEhS
RUFEUE9PTF9TRVRUSU5HX0RFRkFVTFRfUE9PTAk9IDAsDQogICAgICAgIENPTUdMQl9SUENfVEhS
RUFEUE9PTF9TRVRUSU5HX1BSSVZBVEVfUE9PTAk9IDENCiAgICB9IAlHTE9CQUxPUFRfUlBDVFBf
VkFMVUVTOw0KDQp0eXBlZGVmIA0KZW51bSB0YWdHTE9CQUxPUFRfUk9fRkxBR1MNCiAgICB7DQog
ICAgICAgIENPTUdMQl9TVEFfTU9EQUxMT09QX1JFTU9WRV9UT1VDSF9NRVNTQUdFUwk9IDB4MSwN
CiAgICAgICAgQ09NR0xCX1NUQV9NT0RBTExPT1BfU0hBUkVEX1FVRVVFX1JFTU9WRV9JTlBVVF9N
RVNTQUdFUwk9IDB4MiwNCiAgICAgICAgQ09NR0xCX1NUQV9NT0RBTExPT1BfU0hBUkVEX1FVRVVF
X0RPTk9UX1JFTU9WRV9JTlBVVF9NRVNTQUdFUwk9IDB4NCwNCiAgICAgICAgQ09NR0xCX0ZBU1Rf
UlVORE9XTgk9IDB4OCwNCiAgICAgICAgQ09NR0xCX1JFU0VSVkVEMQk9IDB4MTAsDQogICAgICAg
IENPTUdMQl9SRVNFUlZFRDIJPSAweDIwLA0KICAgICAgICBDT01HTEJfUkVTRVJWRUQzCT0gMHg0
MCwNCiAgICAgICAgQ09NR0xCX1NUQV9NT0RBTExPT1BfU0hBUkVEX1FVRVVFX1JFT1JERVJfUE9J
TlRFUl9NRVNTQUdFUwk9IDB4ODAsDQogICAgICAgIENPTUdMQl9SRVNFUlZFRDQJPSAweDEwMCwN
CiAgICAgICAgQ09NR0xCX1JFU0VSVkVENQk9IDB4MjAwLA0KICAgICAgICBDT01HTEJfUkVTRVJW
RUQ2CT0gMHg0MDANCiAgICB9IAlHTE9CQUxPUFRfUk9fRkxBR1M7DQoNCnR5cGVkZWYgDQplbnVt
IHRhZ0dMT0JBTE9QVF9VTk1BUlNIQUxJTkdfUE9MSUNZX1ZBTFVFUw0KICAgIHsNCiAgICAgICAg
Q09NR0xCX1VOTUFSU0hBTElOR19QT0xJQ1lfTk9STUFMCT0gMCwNCiAgICAgICAgQ09NR0xCX1VO
TUFSU0hBTElOR19QT0xJQ1lfU1RST05HCT0gMSwNCiAgICAgICAgQ09NR0xCX1VOTUFSU0hBTElO
R19QT0xJQ1lfSFlCUklECT0gMg0KICAgIH0gCUdMT0JBTE9QVF9VTk1BUlNIQUxJTkdfUE9MSUNZ
X1ZBTFVFUzsNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsYmFz
ZV8wMDAwXzAwMjZfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9p
dGZfb2JqaWRsYmFzZV8wMDAwXzAwMjZfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lHbG9iYWxPcHRpb25zOw0KDQoNCiAgICANCiAgICBz
dHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDE1Qi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAw
NDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJR2xvYmFsT3B0aW9ucyA6IHB1YmxpYyBJ
VW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgU2V0KCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEdMT0JBTE9QVF9QUk9Q
RVJUSUVTIGR3UHJvcGVydHksDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9OR19Q
VFIgZHdWYWx1ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBRdWVyeSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBHTE9CQUxPUFRfUFJP
UEVSVElFUyBkd1Byb3BlcnR5LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkdf
UFRSICpwZHdWYWx1ZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA0NTczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoj
bGluZSA0NTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KIA0KDQojbGluZSA0
NTg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNsaW5l
IDQ1ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNh
dGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExF
IF9fTUlETF9pdGZfb2JqaWRsYmFzZV8wMDAwXzAwMjdfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBS
UENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsYmFzZV8wMDAwXzAwMjdfdjBfMF9zX2lmc3Bl
YzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElTdXJyb2dhdGUgKkxQU1VSUk9HQVRFOw0K
DQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JU3Vycm9nYXRlOw0KDQoNCiAgICANCiAgICBz
dHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDAyMi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAw
NDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJU3Vycm9nYXRlIDogcHVibGljIElVbmtu
b3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBMb2FkRGxsU2VydmVyKCANCiAgICAgICAgICAgICAgIGNvbnN0IElJRCAmIENsc2lkKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEZyZWVTdXJyb2dh
dGUoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ2NzYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDQ2ODEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElHbG9iYWxJbnRl
cmZhY2VUYWJsZSAqTFBHTE9CQUxJTlRFUkZBQ0VUQUJMRTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IElJRCBJSURfSUdsb2JhbEludGVyZmFjZVRhYmxlOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19k
ZWNsc3BlYyh1dWlkKCIwMDAwMDE0Ni0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19k
ZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJR2xvYmFsSW50ZXJmYWNlVGFibGUgOiBwdWJsaWMgSVVu
a25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIFJlZ2lzdGVySW50ZXJmYWNlSW5HbG9iYWwoIA0KICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgSVVua25vd24gKnBVbmssDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25z
dCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgKnBkd0Nv
b2tpZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBS
ZXZva2VJbnRlcmZhY2VGcm9tR2xvYmFsKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IERXT1JEIGR3Q29va2llKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIEdldEludGVyZmFjZUZyb21HbG9iYWwoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgRFdPUkQgZHdDb29raWUsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBj
b25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICB2b2lkICoqcHB2
KSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ4MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgi
DQoNCg0KDQoNCiNsaW5lIDQ4MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQog
DQoNCiNsaW5lIDQ4MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsYmFzZV8wMDAwXzAwMjlf
djBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsYmFz
ZV8wMDAwXzAwMjlfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBJSUQgSUlEX0lTeW5jaHJvbml6ZTsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNw
ZWModXVpZCgiMDAwMDAwMzAtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNw
ZWMobm92dGFibGUpDQogICAgSVN5bmNocm9uaXplIDogcHVibGljIElVbmtub3duDQogICAgew0K
ICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBXYWl0KCANCiAg
ICAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgICAgIERXT1JEIGR3TWlsbGlzZWNv
bmRzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNp
Z25hbCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBSZXNldCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA0OTEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0K
DQojbGluZSA0OTE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoNCg0KIA0K
DQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JU3luY2hyb25pemVIYW5kbGU7DQoNCg0KICAg
IA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDMxLTAwMDAtMDAwMC1DMDAwLTAw
MDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElTeW5jaHJvbml6ZUhhbmRs
ZSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBfX3N0ZGNhbGwgR2V0SGFuZGxlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIEhBTkRMRSAqcGgpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDk5MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgNDk5NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJ
SURfSVN5bmNocm9uaXplRXZlbnQ7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1
aWQoIjAwMDAwMDMyLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5v
dnRhYmxlKQ0KICAgIElTeW5jaHJvbml6ZUV2ZW50IDogcHVibGljIElTeW5jaHJvbml6ZUhhbmRs
ZQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
U2V0RXZlbnRIYW5kbGUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSEFORExFICpw
aCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MDgz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSA1MDg4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3Qg
SUlEIElJRF9JU3luY2hyb25pemVDb250YWluZXI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjAwMDAwMDMzLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElTeW5jaHJvbml6ZUNvbnRhaW5lciA6IHB1YmxpYyBJVW5r
bm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgQWRkU3luY2hyb25pemUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSVN5bmNo
cm9uaXplICpwU3luYykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBXYWl0TXVsdGlwbGUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdP
UkQgZHdGbGFncywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGR3VGltZU91
dCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgSVN5bmNocm9uaXplICoqcHBTeW5jKSA9
IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUx
ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDUxOTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25z
dCBJSUQgSUlEX0lTeW5jaHJvbml6ZU11dGV4Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCIwMDAwMDAyNS0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJU3luY2hyb25pemVNdXRleCA6IHB1YmxpYyBJU3luY2hyb25p
emUNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFJlbGVhc2VNdXRleCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUyODQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDUyODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgi
DQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElDYW5jZWxNZXRob2RDYWxscyAqTFBDQU5DRUxN
RVRIT0RDQUxMUzsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUNhbmNlbE1ldGhvZENh
bGxzOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDAyOS0wMDAw
LTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJQ2Fu
Y2VsTWV0aG9kQ2FsbHMgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAg
ICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENhbmNlbCggDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICBVTE9ORyB1bFNlY29uZHMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgVGVzdENhbmNlbCggdm9pZCkgPSAwOw0KICAgICAgICAN
CiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1Mzc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFz
ZS5oIg0KDQoNCg0KDQojbGluZSA1MzgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoN
Cg0KDQoNCg0KIA0KDQp0eXBlZGVmIA0KZW51bSB0YWdEQ09NX0NBTExfU1RBVEUNCiAgICB7DQog
ICAgICAgIERDT01fTk9ORQk9IDAsDQogICAgICAgIERDT01fQ0FMTF9DT01QTEVURQk9IDB4MSwN
CiAgICAgICAgRENPTV9DQUxMX0NBTkNFTEVECT0gMHgyDQogICAgfSAJRENPTV9DQUxMX1NUQVRF
Ow0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQXN5bmNNYW5hZ2VyOw0KDQoNCiAgICAN
CiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDAyQS0wMDAwLTAwMDAtQzAwMC0wMDAw
MDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJQXN5bmNNYW5hZ2VyIDogcHVi
bGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBDb21wbGV0ZUNhbGwoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
SFJFU1VMVCBSZXN1bHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgR2V0Q2FsbENvbnRleHQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
Y29uc3QgSUlEICYgcmlpZCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgdm9pZCAqKnBJ
bnRlcmZhY2UpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgR2V0U3RhdGUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcgKnB1bFN0
YXRlRmxhZ3MpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNTQ5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0K
DQoNCg0KI2xpbmUgNTQ5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoN
CiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUNhbGxGYWN0b3J5Ow0KDQoNCiAgICAN
CiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIxYzczM2EzMC0yYTFjLTExY2UtYWRlNS0wMGFh
MDA0NDc3M2QiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJQ2FsbEZhY3RvcnkgOiBwdWJs
aWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIENyZWF0ZUNhbGwoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29u
c3QgSUlEICYgcmlpZCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIElVbmtub3duICpw
Q3RybFVuaywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IElJRCAmIHJpaWQy
LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBJVW5rbm93biAqKnBwdikgPSAwOw0KICAg
ICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NTg4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSA1NTkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5o
Ig0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUnBjSGVscGVy
Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDE0OS0wMDAwLTAw
MDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJUnBjSGVs
cGVyIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBHZXREQ09NUHJvdG9jb2xWZXJzaW9uKCANCiAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgIERXT1JEICpwQ29tVmVyc2lvbikgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRJSURGcm9tT0JKUkVGKCANCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIHZvaWQgKnBPYmpSZWYsDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgIElJRCAqKnBpaWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAg
ICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA1Njg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoN
Cg0KDQojbGluZSA1NjkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoNCg0K
IA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUmVsZWFzZU1hcnNoYWxCdWZmZXJzOw0K
DQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJlYjBjYjllOC03OTk2LTExZDIt
ODcyZS0wMDAwZjgwODA4NTkiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJUmVsZWFzZU1h
cnNoYWxCdWZmZXJzIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBSZWxlYXNlTWFyc2hhbEJ1ZmZlciggDQogICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICBSUENPTEVNRVNTQUdFICpwTXNnLA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIElVbmtub3duICpwQ2hubCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDU3NzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5l
IDU3ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lXYWl0TXVsdGlwbGU7DQoNCg0KICAgIA0KICAgIHN0cnVj
dCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDJCLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIp
KSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElXYWl0TXVsdGlwbGUgOiBwdWJsaWMgSVVua25v
d24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFdhaXRNdWx0aXBsZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCB0aW1l
b3V0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBJU3luY2hyb25pemUgKipwU3luYykg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBBZGRTeW5j
aHJvbml6ZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBJU3luY2hyb25pemUgKnBT
eW5jKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
NTg3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgNTg3OSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgSUFkZHJU
cmFja2luZ0NvbnRyb2wgKkxQQUREUlRSQUNLSU5HQ09OVFJPTDsNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IElJRCBJSURfSUFkZHJUcmFja2luZ0NvbnRyb2w7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjAwMDAwMTQ3LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElBZGRyVHJhY2tpbmdDb250cm9sIDogcHVibGljIElV
bmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBFbmFibGVDT01EeW5hbWljQWRkclRyYWNraW5nKCB2b2lkKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIERpc2FibGVDT01EeW5hbWljQWRkclRy
YWNraW5nKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTk2
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgNTk2NyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgSUFkZHJFeGNs
dXNpb25Db250cm9sICpMUEFERFJFWENMVVNJT05DT05UUk9MOw0KDQoNCmV4dGVybiAiQyIgY29u
c3QgSUlEIElJRF9JQWRkckV4Y2x1c2lvbkNvbnRyb2w7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjAwMDAwMTQ4LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElBZGRyRXhjbHVzaW9uQ29udHJvbCA6IHB1YmxpYyBJ
VW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgR2V0Q3VycmVudEFkZHJFeGNsdXNpb25MaXN0KCANCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
IHZvaWQgKipwcEVudW1lcmF0b3IpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgVXBkYXRlQWRkckV4Y2x1c2lvbkxpc3QoIA0KICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgSVVua25vd24gKnBFbnVtZXJhdG9yKSA9IDA7DQogICAgICAgIA0KICAg
IH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjA2MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlk
bGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgNjA2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCIN
Cg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVBpcGVCeXRlOw0K
DQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJEQjJGM0FDQS0yRjg2LTExZDEt
OEUwNC0wMEMwNEZCOTk4OUEiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJUGlwZUJ5dGUg
OiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIFB1bGwoIA0KICAgICAgICAgICAgICAgQllURSAqYnVmLA0KICAgICAg
ICAgICAgIFVMT05HIGNSZXF1ZXN0LA0KICAgICAgICAgICAgICAgVUxPTkcgKnBjUmV0dXJuZWQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUHVzaCgg
DQogICAgICAgICAgICAgICBCWVRFICpidWYsDQogICAgICAgICAgICAgVUxPTkcgY1NlbnQpID0g
MDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjE1OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgNjE2MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJ
SURfQXN5bmNJUGlwZUJ5dGU7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQo
IkRCMkYzQUNCLTJGODYtMTFkMS04RTA0LTAwQzA0RkI5OTg5QSIpKSBfX2RlY2xzcGVjKG5vdnRh
YmxlKQ0KICAgIEFzeW5jSVBpcGVCeXRlIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1
YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBCZWdpbl9QdWxsKCANCiAg
ICAgICAgICAgICBVTE9ORyBjUmVxdWVzdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBGaW5pc2hfUHVsbCggDQogICAgICAgICAgICAgICBCWVRFICpi
dWYsDQogICAgICAgICAgICAgICBVTE9ORyAqcGNSZXR1cm5lZCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBCZWdpbl9QdXNoKCANCiAgICAgICAgICAg
ICAgIEJZVEUgKmJ1ZiwNCiAgICAgICAgICAgICBVTE9ORyBjU2VudCkgPSAwOw0KICAgICAgICAN
CiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBGaW5pc2hfUHVzaCggdm9pZCkgPSAw
Ow0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA2MjcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoj
bGluZSA2Mjc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQoNCg0KIA0KDQoN
CmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUGlwZUxvbmc7DQoNCg0KICAgIA0KICAgIHN0cnVj
dCBfX2RlY2xzcGVjKHV1aWQoIkRCMkYzQUNDLTJGODYtMTFkMS04RTA0LTAwQzA0RkI5OTg5QSIp
KSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQaXBlTG9uZyA6IHB1YmxpYyBJVW5rbm93bg0K
ICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUHVs
bCggDQogICAgICAgICAgICAgICBMT05HICpidWYsDQogICAgICAgICAgICAgVUxPTkcgY1JlcXVl
c3QsDQogICAgICAgICAgICAgICBVTE9ORyAqcGNSZXR1cm5lZCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBQdXNoKCANCiAgICAgICAgICAgICAgIExP
TkcgKmJ1ZiwNCiAgICAgICAgICAgICBVTE9ORyBjU2VudCkgPSAwOw0KICAgICAgICANCiAgICB9
Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MzY2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFz
ZS5oIg0KDQoNCg0KDQojbGluZSA2MzcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoN
Cg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9Bc3luY0lQaXBlTG9uZzsN
Cg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiREIyRjNBQ0QtMkY4Ni0xMWQx
LThFMDQtMDBDMDRGQjk5ODlBIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgQXN5bmNJUGlw
ZUxvbmcgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIEJlZ2luX1B1bGwoIA0KICAgICAgICAgICAgIFVMT05HIGNS
ZXF1ZXN0KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IEZpbmlzaF9QdWxsKCANCiAgICAgICAgICAgICAgIExPTkcgKmJ1ZiwNCiAgICAgICAgICAgICAg
IFVMT05HICpwY1JldHVybmVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIEJlZ2luX1B1c2goIA0KICAgICAgICAgICAgICAgTE9ORyAqYnVmLA0KICAg
ICAgICAgICAgIFVMT05HIGNTZW50KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIEZpbmlzaF9QdXNoKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY0Nzgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDY0ODMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJ
SUQgSUlEX0lQaXBlRG91YmxlOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlk
KCJEQjJGM0FDRS0yRjg2LTExZDEtOEUwNC0wMEMwNEZCOTk4OUEiKSkgX19kZWNsc3BlYyhub3Z0
YWJsZSkNCiAgICBJUGlwZURvdWJsZSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJs
aWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUHVsbCggDQogICAgICAgICAg
ICAgICBET1VCTEUgKmJ1ZiwNCiAgICAgICAgICAgICBVTE9ORyBjUmVxdWVzdCwNCiAgICAgICAg
ICAgICAgIFVMT05HICpwY1JldHVybmVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIFB1c2goIA0KICAgICAgICAgICAgICAgRE9VQkxFICpidWYsDQog
ICAgICAgICAgICAgVUxPTkcgY1NlbnQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAg
ICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNjU3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoN
Cg0KI2xpbmUgNjU3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiAN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfQXN5bmNJUGlwZURvdWJsZTsNCg0KDQogICAg
DQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiREIyRjNBQ0YtMkY4Ni0xMWQxLThFMDQtMDBD
MDRGQjk5ODlBIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgQXN5bmNJUGlwZURvdWJsZSA6
IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgQmVnaW5fUHVsbCggDQogICAgICAgICAgICAgVUxPTkcgY1JlcXVlc3Qp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRmluaXNo
X1B1bGwoIA0KICAgICAgICAgICAgICAgRE9VQkxFICpidWYsDQogICAgICAgICAgICAgICBVTE9O
RyAqcGNSZXR1cm5lZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBCZWdpbl9QdXNoKCANCiAgICAgICAgICAgICAgIERPVUJMRSAqYnVmLA0KICAgICAg
ICAgICAgIFVMT05HIGNTZW50KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIEZpbmlzaF9QdXNoKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQog
ICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY2ODYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDY2OTEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvYmppZGxiYXNlLmgiDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcxNjIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQojbGluZSA3MTYzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9u
IEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQp0eXBlZGVmIA0KZW51bSBfQVBUVFlQRVFVQUxJ
RklFUg0KICAgIHsNCiAgICAgICAgQVBUVFlQRVFVQUxJRklFUl9OT05FCT0gMCwNCiAgICAgICAg
QVBUVFlQRVFVQUxJRklFUl9JTVBMSUNJVF9NVEEJPSAxLA0KICAgICAgICBBUFRUWVBFUVVBTElG
SUVSX05BX09OX01UQQk9IDIsDQogICAgICAgIEFQVFRZUEVRVUFMSUZJRVJfTkFfT05fU1RBCT0g
MywNCiAgICAgICAgQVBUVFlQRVFVQUxJRklFUl9OQV9PTl9JTVBMSUNJVF9NVEEJPSA0LA0KICAg
ICAgICBBUFRUWVBFUVVBTElGSUVSX05BX09OX01BSU5TVEEJPSA1LA0KICAgICAgICBBUFRUWVBF
UVVBTElGSUVSX0FQUExJQ0FUSU9OX1NUQQk9IDYsDQogICAgICAgIEFQVFRZUEVRVUFMSUZJRVJf
UkVTRVJWRURfMQk9IDcNCiAgICB9IAlBUFRUWVBFUVVBTElGSUVSOw0KDQp0eXBlZGVmIA0KZW51
bSBfQVBUVFlQRQ0KICAgIHsNCiAgICAgICAgQVBUVFlQRV9DVVJSRU5UCT0gLTEsDQogICAgICAg
IEFQVFRZUEVfU1RBCT0gMCwNCiAgICAgICAgQVBUVFlQRV9NVEEJPSAxLA0KICAgICAgICBBUFRU
WVBFX05BCT0gMiwNCiAgICAgICAgQVBUVFlQRV9NQUlOU1RBCT0gMw0KICAgIH0gCUFQVFRZUEU7
DQoNCiNsaW5lIDcxOTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
dHlwZWRlZiANCmVudW0gX1RIRFRZUEUNCiAgICB7DQogICAgICAgIFRIRFRZUEVfQkxPQ0tNRVNT
QUdFUwk9IDAsDQogICAgICAgIFRIRFRZUEVfUFJPQ0VTU01FU1NBR0VTCT0gMQ0KICAgIH0gCVRI
RFRZUEU7DQoNCnR5cGVkZWYgRFdPUkQgQVBBUlRNRU5USUQ7DQoNCg0KDQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDQ4X3YwXzBfY19pZnNwZWM7DQpl
eHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDQ4X3YwXzBf
c19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQ29t
VGhyZWFkaW5nSW5mbzsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAw
MDAxY2UtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUp
DQogICAgSUNvbVRocmVhZGluZ0luZm8gOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVi
bGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEN1cnJlbnRBcGFydG1l
bnRUeXBlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEFQVFRZUEUgKnBBcHRUeXBl
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEN1
cnJlbnRUaHJlYWRUeXBlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFRIRFRZUEUg
KnBUaHJlYWRUeXBlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIEdldEN1cnJlbnRMb2dpY2FsVGhyZWFkSWQoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgR1VJRCAqcGd1aWRMb2dpY2FsVGhyZWFkSWQpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0Q3VycmVudExvZ2ljYWxUaHJlYWRJZCgg
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBHVUlEICYgcmd1aWQpID0gMDsN
CiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNzMxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoN
Cg0KI2xpbmUgNzMyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiAN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVByb2Nlc3NJbml0Q29udHJvbDsNCg0KDQog
ICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNzIzODBkNTUtOGQyYi00M2EzLTg1MTMt
MmI2ZWYzMTQzNGU5IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVByb2Nlc3NJbml0Q29u
dHJvbCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVzZXRJbml0aWFsaXplclRpbWVvdXQoIA0KICAgICAgICAg
ICAgIERXT1JEIGR3U2Vjb25kc1JlbWFpbmluZykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAg
IA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNzM5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KI2xpbmUgNzQwMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMi
IGNvbnN0IElJRCBJSURfSUZhc3RSdW5kb3duOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCIwMDAwMDA0MC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJRmFzdFJ1bmRvd24gOiBwdWJsaWMgSVVua25vd24NCiAgICB7
DQogICAgcHVibGljOg0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNzQ2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCg0K
I2xpbmUgNzQ3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCiANCg0KdHlwZWRl
ZiANCmVudW0gQ09fTUFSU0hBTElOR19DT05URVhUX0FUVFJJQlVURVMNCiAgICB7DQogICAgICAg
IENPX01BUlNIQUxJTkdfU09VUkNFX0lTX0FQUF9DT05UQUlORVIJPSAwLA0KICAgICAgICBDT19N
QVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzEJPSAweDgwMDAwMDAwLA0KICAg
ICAgICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzIJPSAweDgwMDAw
MDAxLA0KICAgICAgICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzMJ
PSAweDgwMDAwMDAyLA0KICAgICAgICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JF
U0VSVkVEXzQJPSAweDgwMDAwMDAzLA0KICAgICAgICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRU
UklCVVRFX1JFU0VSVkVEXzUJPSAweDgwMDAwMDA0LA0KICAgICAgICBDT19NQVJTSEFMSU5HX0NP
TlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzYJPSAweDgwMDAwMDA1LA0KICAgICAgICBDT19NQVJT
SEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzcJPSAweDgwMDAwMDA2LA0KICAgICAg
ICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzgJPSAweDgwMDAwMDA3
LA0KICAgICAgICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzkJPSAw
eDgwMDAwMDA4LA0KICAgICAgICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VS
VkVEXzEwCT0gMHg4MDAwMDAwOSwNCiAgICAgICAgQ09fTUFSU0hBTElOR19DT05URVhUX0FUVFJJ
QlVURV9SRVNFUlZFRF8xMQk9IDB4ODAwMDAwMGEsDQogICAgICAgIENPX01BUlNIQUxJTkdfQ09O
VEVYVF9BVFRSSUJVVEVfUkVTRVJWRURfMTIJPSAweDgwMDAwMDBiLA0KICAgICAgICBDT19NQVJT
SEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JFU0VSVkVEXzEzCT0gMHg4MDAwMDAwYywNCiAgICAg
ICAgQ09fTUFSU0hBTElOR19DT05URVhUX0FUVFJJQlVURV9SRVNFUlZFRF8xNAk9IDB4ODAwMDAw
MGQsDQogICAgICAgIENPX01BUlNIQUxJTkdfQ09OVEVYVF9BVFRSSUJVVEVfUkVTRVJWRURfMTUJ
PSAweDgwMDAwMDBlLA0KICAgICAgICBDT19NQVJTSEFMSU5HX0NPTlRFWFRfQVRUUklCVVRFX1JF
U0VSVkVEXzE2CT0gMHg4MDAwMDAwZiwNCiAgICAgICAgQ09fTUFSU0hBTElOR19DT05URVhUX0FU
VFJJQlVURV9SRVNFUlZFRF8xNwk9IDB4ODAwMDAwMTAsDQogICAgICAgIENPX01BUlNIQUxJTkdf
Q09OVEVYVF9BVFRSSUJVVEVfUkVTRVJWRURfMTgJPSAweDgwMDAwMDExDQogICAgfSAJQ09fTUFS
U0hBTElOR19DT05URVhUX0FUVFJJQlVURVM7DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBf
X01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDUxX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBD
X0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDUxX3YwXzBfc19pZnNwZWM7
DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JTWFyc2hhbGluZ1N0
cmVhbTsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiRDhGMkY1RTYtNjEw
Mi00ODYzLTlGMjYtMzg5QTQ2NzZFRkRFIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU1h
cnNoYWxpbmdTdHJlYW0gOiBwdWJsaWMgSVN0cmVhbQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0TWFyc2hhbGluZ0NvbnRleHRBdHRyaWJ1
dGUoIA0KICAgICAgICAgICAgIENPX01BUlNIQUxJTkdfQ09OVEVYVF9BVFRSSUJVVEVTIGF0dHJp
YnV0ZSwNCiAgICAgICAgICAgICBVTE9OR19QVFIgKnBBdHRyaWJ1dGVWYWx1ZSkgPSAwOw0KICAg
ICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3
Njg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSA3Njg5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCg0KIA0KDQojbGluZSA3Njk1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcb2JqaWRsYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5E
TEUgX19NSURMX2l0Zl9vYmppZGxiYXNlXzAwMDBfMDA1Ml92MF8wX2NfaWZzcGVjOw0KZXh0ZXJu
IFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxiYXNlXzAwMDBfMDA1Ml92MF8wX3NfaWZz
cGVjOw0KDQoNCg0KDQoNCiANCg0KDQogICAgZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lBZ2ls
ZVJlZmVyZW5jZTsNCiAgICBleHRlcm4gIkMrKyINCiAgICB7DQogICAgICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIkMwM0Y2QTQzLTY1QTQtOTgxOC05ODdFLUUwQjgxMEQyQTZGMiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgICAgICBJQWdpbGVSZWZlcmVuY2UgOiBwdWJsaWMgSVVua25v
d24NCiAgICAgICAgew0KICAgICAgICBwdWJsaWM6DQogICAgICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIFJlc29sdmUoIA0KICAgICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlk
LA0KICAgICAgICAgICAgICAgICB2b2lkICoqcHB2T2JqZWN0UmVmZXJlbmNlKSA9IDA7DQoNCiAg
ICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFE+DQogICAgICAgICAgICBIUkVTVUxUDQoNCg0KDQog
ICAgICAgICAgICBfX3N0ZGNhbGwNCiNsaW5lIDc3MjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNl
LmgiDQogICAgICAgICAgICBSZXNvbHZlKCBRKiogcHApDQogICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICAgcmV0dXJuIFJlc29sdmUoX191dWlkb2YoUSksICh2b2lkICoqKXBwKTsNCiAgICAg
ICAgICAgIH0NCg0KICAgICAgICB9Ow0KICAgIH0gDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNzgxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQoNCiAN
Cg0KI2xpbmUgNzgxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCiNsaW5lIDc4MTcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdp
b24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCmV4dGVybiAiQyIgY29u
c3QgR1VJRCAgSUlEX0lDYWxsYmFja1dpdGhOb1JlZW50cmFuY3lUb0FwcGxpY2F0aW9uU1RBOw0K
I2xpbmUgNzgyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNsaW5lIDc4MjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGxiYXNlLmgiDQoNCg0KI3ByYWdtYSB3
YXJuaW5nKHBvcCkNCg0KDQojbGluZSA3ODMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0K
I2xpbmUgNzgzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbGJhc2UuaCINCg0KDQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDUzX3YwXzBfY19pZnNwZWM7DQpl
eHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbGJhc2VfMDAwMF8wMDUzX3YwXzBf
c19pZnNwZWM7DQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1Vbmtub3duX05leHRfUHJv
eHkoIA0KICAgIElFbnVtVW5rbm93biAqIFRoaXMsDQogICAgIA0KICAgICAgIFVMT05HIGNlbHQs
DQogICAgIA0KICAgICAgIElVbmtub3duICoqcmdlbHQsDQogICAgIA0KICAgICAgIFVMT05HICpw
Y2VsdEZldGNoZWQpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJRW51bVVua25vd25fTmV4dF9T
dHViKCANCiAgICAgIElFbnVtVW5rbm93biAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQsDQogICAg
ICAgSVVua25vd24gKipyZ2VsdCwNCiAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0KIEhS
RVNVTFQgX19zdGRjYWxsIElFbnVtU3RyaW5nX05leHRfUHJveHkoIA0KICAgIElFbnVtU3RyaW5n
ICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgDQogICAgICAgTFBPTEVTVFIgKnJnZWx0
LA0KICAgICANCiAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSUVudW1TdHJpbmdfTmV4dF9TdHViKCANCiAgICAgIElFbnVtU3RyaW5nICogVGhpcywN
CiAgICAgVUxPTkcgY2VsdCwNCiAgICAgICBMUE9MRVNUUiAqcmdlbHQsDQogICAgICAgVUxPTkcg
KnBjZWx0RmV0Y2hlZCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJU2VxdWVudGlhbFN0cmVhbV9S
ZWFkX1Byb3h5KCANCiAgICBJU2VxdWVudGlhbFN0cmVhbSAqIFRoaXMsDQogICAgIA0KICAgICAg
IHZvaWQgKnB2LA0KICAgICANCiAgICAgICBVTE9ORyBjYiwNCiAgICAgDQogICAgICAgVUxPTkcg
KnBjYlJlYWQpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJU2VxdWVudGlhbFN0cmVhbV9SZWFk
X1N0dWIoIA0KICAgICAgSVNlcXVlbnRpYWxTdHJlYW0gKiBUaGlzLA0KICAgICAgIGJ5dGUgKnB2
LA0KICAgICBVTE9ORyBjYiwNCiAgICAgICBVTE9ORyAqcGNiUmVhZCk7DQoNCiBIUkVTVUxUIF9f
c3RkY2FsbCBJU2VxdWVudGlhbFN0cmVhbV9Xcml0ZV9Qcm94eSggDQogICAgSVNlcXVlbnRpYWxT
dHJlYW0gKiBUaGlzLA0KICAgICANCiAgICAgICBjb25zdCB2b2lkICpwdiwNCiAgICAgDQogICAg
ICAgVUxPTkcgY2IsDQogICAgIA0KICAgICAgIFVMT05HICpwY2JXcml0dGVuKTsNCg0KDQogSFJF
U1VMVCBfX3N0ZGNhbGwgSVNlcXVlbnRpYWxTdHJlYW1fV3JpdGVfU3R1YiggDQogICAgICBJU2Vx
dWVudGlhbFN0cmVhbSAqIFRoaXMsDQogICAgICAgY29uc3QgYnl0ZSAqcHYsDQogICAgIFVMT05H
IGNiLA0KICAgICAgIFVMT05HICpwY2JXcml0dGVuKTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElT
dHJlYW1fU2Vla19Qcm94eSggDQogICAgSVN0cmVhbSAqIFRoaXMsDQogICAgIExBUkdFX0lOVEVH
RVIgZGxpYk1vdmUsDQogICAgIERXT1JEIGR3T3JpZ2luLA0KICAgICANCiAgICAgICBVTEFSR0Vf
SU5URUdFUiAqcGxpYk5ld1Bvc2l0aW9uKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVN0cmVh
bV9TZWVrX1N0dWIoIA0KICAgICAgSVN0cmVhbSAqIFRoaXMsDQogICAgIExBUkdFX0lOVEVHRVIg
ZGxpYk1vdmUsDQogICAgIERXT1JEIGR3T3JpZ2luLA0KICAgICAgIFVMQVJHRV9JTlRFR0VSICpw
bGliTmV3UG9zaXRpb24pOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVN0cmVhbV9Db3B5VG9fUHJv
eHkoIA0KICAgIElTdHJlYW0gKiBUaGlzLA0KICAgICANCiAgICAgICBJU3RyZWFtICpwc3RtLA0K
ICAgICBVTEFSR0VfSU5URUdFUiBjYiwNCiAgICAgDQogICAgICAgVUxBUkdFX0lOVEVHRVIgKnBj
YlJlYWQsDQogICAgIA0KICAgICAgIFVMQVJHRV9JTlRFR0VSICpwY2JXcml0dGVuKTsNCg0KDQog
SFJFU1VMVCBfX3N0ZGNhbGwgSVN0cmVhbV9Db3B5VG9fU3R1YiggDQogICAgICBJU3RyZWFtICog
VGhpcywNCiAgICAgICBJU3RyZWFtICpwc3RtLA0KICAgICBVTEFSR0VfSU5URUdFUiBjYiwNCiAg
ICAgICBVTEFSR0VfSU5URUdFUiAqcGNiUmVhZCwNCiAgICAgICBVTEFSR0VfSU5URUdFUiAqcGNi
V3JpdHRlbik7DQoNCg0KDQoNCg0KDQp9DQojbGluZSA3OTQxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRs
YmFzZS5oIg0KDQojbGluZSA3OTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsYmFzZS5oIg0KDQoNCiNs
aW5lIDM2NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxndWlkZGVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcZ3VpZGRlZi5oIg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXGd1aWRkZWYuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzY2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGNndWlkLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNs
aW5lIDE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcY2d1aWQuaCINCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNo
KQ0KI2xpbmUgMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjZ3VpZC5oIg0KI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6NDAwMSkgDQojbGluZSAyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNndWlkLmgiDQoNCg0KZXh0ZXJuICJD
IiB7DQojbGluZSAyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNndWlkLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFw
cGxpY2F0aW9uIEZhbWlseQ0KDQoNCmV4dGVybiBjb25zdCBJSUQgR1VJRF9OVUxMOw0KDQojbGlu
ZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXGNndWlkLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIGNvbnN0IElJRCBDQVRJRF9NQVJT
SEFMRVI7DQojbGluZSA0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNndWlkLmgiDQoNCmV4dGVybiBjb25zdCBJ
SUQgSUlEX0lScGNDaGFubmVsOw0KZXh0ZXJuIGNvbnN0IElJRCBJSURfSVJwY1N0dWI7DQpleHRl
cm4gY29uc3QgSUlEIElJRF9JU3R1Yk1hbmFnZXI7DQpleHRlcm4gY29uc3QgSUlEIElJRF9JUnBj
UHJveHk7DQpleHRlcm4gY29uc3QgSUlEIElJRF9JUHJveHlNYW5hZ2VyOw0KZXh0ZXJuIGNvbnN0
IElJRCBJSURfSVBTRmFjdG9yeTsNCmV4dGVybiBjb25zdCBJSUQgSUlEX0lJbnRlcm5hbE1vbmlr
ZXI7DQpleHRlcm4gY29uc3QgSUlEIElJRF9JRGZSZXNlcnZlZDE7DQpleHRlcm4gY29uc3QgSUlE
IElJRF9JRGZSZXNlcnZlZDI7DQpleHRlcm4gY29uc3QgSUlEIElJRF9JRGZSZXNlcnZlZDM7DQpl
eHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfU3RkTWFyc2hhbDsNCmV4dGVybiBjb25zdCBDTFNJRCBD
TFNJRF9BZ2dTdGRNYXJzaGFsOw0KZXh0ZXJuIGNvbnN0IENMU0lEIENMU0lEX1N0ZEFzeW5jQWN0
TWFuYWdlcjsNCmV4dGVybiBjb25zdCBJSUQgSUlEX0lTdHViOw0KZXh0ZXJuIGNvbnN0IElJRCBJ
SURfSVByb3h5Ow0KZXh0ZXJuIGNvbnN0IElJRCBJSURfSUVudW1HZW5lcmljOw0KZXh0ZXJuIGNv
bnN0IElJRCBJSURfSUVudW1Ib2xkZXI7DQpleHRlcm4gY29uc3QgSUlEIElJRF9JRW51bUNhbGxi
YWNrOw0KZXh0ZXJuIGNvbnN0IElJRCBJSURfSU9sZU1hbmFnZXI7DQpleHRlcm4gY29uc3QgSUlE
IElJRF9JT2xlUHJlc09iajsNCmV4dGVybiBjb25zdCBJSUQgSUlEX0lEZWJ1ZzsNCmV4dGVybiBj
b25zdCBJSUQgSUlEX0lEZWJ1Z1N0cmVhbTsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9QU0dl
bk9iamVjdDsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9QU0NsaWVudFNpdGU7DQpleHRlcm4g
Y29uc3QgQ0xTSUQgQ0xTSURfUFNDbGFzc09iamVjdDsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJ
RF9QU0luUGxhY2VBY3RpdmU7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfUFNJblBsYWNlRnJh
bWU7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfUFNEcmFnRHJvcDsNCmV4dGVybiBjb25zdCBD
TFNJRCBDTFNJRF9QU0JpbmRDdHg7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfUFNFbnVtZXJh
dG9yczsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9TdGF0aWNNZXRhZmlsZTsNCmV4dGVybiBj
b25zdCBDTFNJRCBDTFNJRF9TdGF0aWNEaWI7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0lEX0NEZnNW
b2x1bWU7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfRENPTUFjY2Vzc0NvbnRyb2w7DQoNCiNs
aW5lIDgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcY2d1aWQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCmV4dGVy
biBjb25zdCBDTFNJRCBDTFNJRF9HbG9iYWxPcHRpb25zOw0KDQojbGluZSA4OSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGNndWlkLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNh
dGlvbiBGYW1pbHkgb3IgT25lQ29yZSBvciBHYW1lcyBGYW1pbHkNCg0KDQpleHRlcm4gY29uc3Qg
Q0xTSUQgQ0xTSURfU3RkR2xvYmFsSW50ZXJmYWNlVGFibGU7DQoNCiNsaW5lIDk3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcY2d1aWQuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0
b3AgRmFtaWx5DQoNCg0KZXh0ZXJuIGNvbnN0IENMU0lEIENMU0lEX0NvbUJpbmRpbmc7DQpleHRl
cm4gY29uc3QgQ0xTSUQgQ0xTSURfU3RkRXZlbnQ7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURf
TWFudWFsUmVzZXRFdmVudDsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9TeW5jaHJvbml6ZUNv
bnRhaW5lcjsNCg0KDQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQWRkckNvbnRyb2w7DQojbGlu
ZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxjZ3VpZC5oIg0KDQoNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJ
RF9Db250ZXh0U3dpdGNoZXI7DQojbGluZSAxMTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjZ3VpZC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NERm9ybUtybmw7DQpl
eHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NEUHJvcGVydHlQYWdlOw0KZXh0ZXJuIGNvbnN0IENM
U0lEIENMU0lEX0NDREZvcm1EaWFsb2c7DQoNCg0KDQoNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJ
RF9DQ0RDb21tYW5kQnV0dG9uOw0KZXh0ZXJuIGNvbnN0IENMU0lEIENMU0lEX0NDRENvbWJvQm94
Ow0KZXh0ZXJuIGNvbnN0IENMU0lEIENMU0lEX0NDRFRleHRCb3g7DQpleHRlcm4gY29uc3QgQ0xT
SUQgQ0xTSURfQ0NEQ2hlY2tCb3g7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NETGFiZWw7
DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NET3B0aW9uQnV0dG9uOw0KZXh0ZXJuIGNvbnN0
IENMU0lEIENMU0lEX0NDRExpc3RCb3g7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NEU2Ny
b2xsQmFyOw0KZXh0ZXJuIGNvbnN0IENMU0lEIENMU0lEX0NDREdyb3VwQm94Ow0KDQoNCg0KDQpl
eHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NER2VuZXJhbFByb3BlcnR5UGFnZTsNCmV4dGVybiBj
b25zdCBDTFNJRCBDTFNJRF9DQ0RHZW5lcmljUHJvcGVydHlQYWdlOw0KZXh0ZXJuIGNvbnN0IENM
U0lEIENMU0lEX0NDREZvbnRQcm9wZXJ0eVBhZ2U7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURf
Q0NEQ29sb3JQcm9wZXJ0eVBhZ2U7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NETGFiZWxQ
cm9wZXJ0eVBhZ2U7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NEQ2hlY2tCb3hQcm9wZXJ0
eVBhZ2U7DQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NEVGV4dEJveFByb3BlcnR5UGFnZTsN
CmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9DQ0RPcHRpb25CdXR0b25Qcm9wZXJ0eVBhZ2U7DQpl
eHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ0NETGlzdEJveFByb3BlcnR5UGFnZTsNCmV4dGVybiBj
b25zdCBDTFNJRCBDTFNJRF9DQ0RDb21tYW5kQnV0dG9uUHJvcGVydHlQYWdlOw0KZXh0ZXJuIGNv
bnN0IENMU0lEIENMU0lEX0NDRENvbWJvQm94UHJvcGVydHlQYWdlOw0KZXh0ZXJuIGNvbnN0IENM
U0lEIENMU0lEX0NDRFNjcm9sbEJhclByb3BlcnR5UGFnZTsNCmV4dGVybiBjb25zdCBDTFNJRCBD
TFNJRF9DQ0RHcm91cEJveFByb3BlcnR5UGFnZTsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9D
Q0RYT2JqZWN0UHJvcGVydHlQYWdlOw0KDQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfQ1N0ZFBy
b3BlcnR5RnJhbWU7DQoNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9DRm9ybVByb3BlcnR5UGFn
ZTsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9DR3JpZFByb3BlcnR5UGFnZTsNCg0KZXh0ZXJu
IGNvbnN0IENMU0lEIENMU0lEX0NXU0pBcnRpY2xlUGFnZTsNCmV4dGVybiBjb25zdCBDTFNJRCBD
TFNJRF9DU3lzdGVtUGFnZTsNCmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9JZGVudGl0eVVubWFy
c2hhbDsNCg0KI2xpbmUgMTY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY2d1aWQuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCmV4dGVybiBjb25z
dCBDTFNJRCBDTFNJRF9JblByb2NGcmVlTWFyc2hhbGVyOw0KDQojbGluZSAxNzcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxjZ3VpZC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkNCg0KDQpleHRlcm4gY29uc3QgQ0xTSUQgQ0xTSURfUGljdHVyZV9NZXRhZmlsZTsN
CmV4dGVybiBjb25zdCBDTFNJRCBDTFNJRF9QaWN0dXJlX0VuaE1ldGFmaWxlOw0KZXh0ZXJuIGNv
bnN0IENMU0lEIENMU0lEX1BpY3R1cmVfRGliOw0KDQoNCg0KDQpleHRlcm4gY29uc3QgR1VJRCBH
VUlEX1RSSVNUQVRFOw0KDQojbGluZSAxOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjZ3VpZC5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSAxOTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjZ3VpZC5oIg0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KDQojbGluZSAyMDQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjZ3Vp
ZC5oIg0KI2xpbmUgMjA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY2d1aWQuaCINCg0KI2xpbmUgMjA3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcY2d1aWQuaCINCiNsaW5lIDM3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCIN
CiNsaW5lIDM3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KI2xpbmUgMzczICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEg
cmVnaW9uIERlc2t0b3Agb3IgT25lQ29yZSBGYW1pbHkNCg0KDQogIGV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0dldE1hbGxvYygNCiAgICAgIERX
T1JEIGR3TWVtQ29udGV4dCwNCiAgICAgTFBNQUxMT0MgICAqIHBwTWFsbG9jDQogICAgKTsNCg0K
DQojbGluZSAzODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWls
eQ0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNh
bGwNCkNyZWF0ZVN0cmVhbU9uSEdsb2JhbCgNCiAgICBIR0xPQkFMIGhHbG9iYWwsDQogICAgICBC
T09MIGZEZWxldGVPblJlbGVhc2UsDQogICAgIExQU1RSRUFNICAgKiBwcHN0bQ0KICAgICk7DQoN
Cg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0K
R2V0SEdsb2JhbEZyb21TdHJlYW0oDQogICAgICBMUFNUUkVBTSBwc3RtLA0KICAgICAgSEdMT0JB
TCAgICogcGhnbG9iYWwNCiAgICApOw0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkIF9fc3RkY2FsbA0KQ29VbmluaXRpYWxpemUoDQogICAgdm9pZA0KICAgICk7
DQoNCg0KI2xpbmUgNDE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbA0KQ29HZXRDdXJy
ZW50UHJvY2VzcygNCiAgICB2b2lkDQogICAgKTsNCg0KDQojbGluZSA0MjkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvSW5pdGlhbGl6ZUV4KA0KICAgICAg
TFBWT0lEIHB2UmVzZXJ2ZWQsDQogICAgICBEV09SRCBkd0NvSW5pdA0KICAgICk7DQoNCg0KI2xp
bmUgNDQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0dldENhbGxlclRJRCgN
CiAgICAgIExQRFdPUkQgbHBkd1RJRA0KICAgICk7DQoNCg0KI2xpbmUgNDU3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBw
bGljYXRpb24gb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29HZXRDdXJyZW50TG9naWNhbFRocmVhZElkKA0K
ICAgICAgR1VJRCogcGd1aWQNCiAgICApOw0KDQoNCiNsaW5lIDQ2OSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNv
bWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDQ3MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGNvbWJhc2VhcGkuaCINCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIG9yIE9uZUNv
cmUgb3IgR2FtZXMgRmFtaWx5DQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29HZXRDb250ZXh0VG9rZW4oDQogICAgICBVTE9OR19QVFIq
IHBUb2tlbg0KICAgICk7DQoNCg0KI2xpbmUgNDg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBf
X3N0ZGNhbGwNCkNvR2V0RGVmYXVsdENvbnRleHQoDQogICAgICBBUFRUWVBFIGFwdFR5cGUsDQog
ICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICB2b2lkKiogcHB2DQogICAgKTsNCg0KDQojbGlu
ZSA0OTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
bGluZSA1MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFw
cGxpY2F0aW9uIG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0dldEFwYXJ0bWVudFR5cGUo
DQogICAgICBBUFRUWVBFKiBwQXB0VHlwZSwNCiAgICAgIEFQVFRZUEVRVUFMSUZJRVIqIHBBcHRR
dWFsaWZpZXINCiAgICApOw0KDQoNCiNsaW5lIDUxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGku
aCINCg0KI2xpbmUgNTIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDYw
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRp
b24gb3IgT25lQ29yZSBGYW1pbHkNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0dldE9iamVjdENvbnRleHQoDQogICAgICBjb25zdCBJ
SUQgJiByaWlkLA0KICAgICBMUFZPSUQgICAqIHBwdg0KICAgICk7DQoNCg0KI2xpbmUgNjEyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0dldENsYXNzT2JqZWN0KA0K
ICAgICAgY29uc3QgSUlEICYgcmNsc2lkLA0KICAgICAgRFdPUkQgZHdDbHNDb250ZXh0LA0KICAg
ICAgTFBWT0lEIHB2UmVzZXJ2ZWQsDQogICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICBMUFZP
SUQgICAqIHBwdg0KICAgICk7DQoNCiNsaW5lIDYyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIG9yIE9u
ZUNvcmUgRmFtaWx5DQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbA0KQ29SZWdpc3RlckNsYXNzT2JqZWN0KA0KICAgICAgY29uc3QgSUlEICYg
cmNsc2lkLA0KICAgICAgTFBVTktOT1dOIHBVbmssDQogICAgICBEV09SRCBkd0Nsc0NvbnRleHQs
DQogICAgICBEV09SRCBmbGFncywNCiAgICAgIExQRFdPUkQgbHBkd1JlZ2lzdGVyDQogICAgKTsN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNv
UmV2b2tlQ2xhc3NPYmplY3QoDQogICAgICBEV09SRCBkd1JlZ2lzdGVyDQogICAgKTsNCg0KICBl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29SZXN1
bWVDbGFzc09iamVjdHMoDQogICAgdm9pZA0KICAgICk7DQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvU3VzcGVuZENsYXNzT2JqZWN0cygN
CiAgICB2b2lkDQogICAgKTsNCg0KDQojbGluZSA2NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBp
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNv
cmUgRmFtaWx5DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUxPTkcgX19z
dGRjYWxsDQpDb0FkZFJlZlNlcnZlclByb2Nlc3MoDQogICAgdm9pZA0KICAgICk7DQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUxPTkcgX19zdGRjYWxsDQpDb1JlbGVhc2VT
ZXJ2ZXJQcm9jZXNzKA0KICAgIHZvaWQNCiAgICApOw0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvR2V0UFNDbHNpZCgNCiAgICAgIGNv
bnN0IElJRCAmIHJpaWQsDQogICAgICBDTFNJRCogcENsc2lkDQogICAgKTsNCg0KICBleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29SZWdpc3RlclBT
Q2xzaWQoDQogICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgY29uc3QgSUlEICYgcmNsc2lk
DQogICAgKTsNCg0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwNCkNvUmVnaXN0ZXJTdXJyb2dhdGUoDQogICAgICBMUFNVUlJPR0FURSBwU3Vy
cm9nYXRlDQogICAgKTsNCg0KDQojbGluZSA2OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBvciBPbmVD
b3JlIEZhbWlseQ0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhS
RVNVTFQgX19zdGRjYWxsDQpDb0dldE1hcnNoYWxTaXplTWF4KA0KICAgICAgVUxPTkcqIHB1bFNp
emUsDQogICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgTFBVTktOT1dOIHBVbmssDQogICAg
ICBEV09SRCBkd0Rlc3RDb250ZXh0LA0KICAgICAgTFBWT0lEIHB2RGVzdENvbnRleHQsDQogICAg
ICBEV09SRCBtc2hsZmxhZ3MNCiAgICApOw0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb01hcnNoYWxJbnRlcmZhY2UoDQogICAgICBMUFNU
UkVBTSBwU3RtLA0KICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgIExQVU5LTk9XTiBwVW5r
LA0KICAgICAgRFdPUkQgZHdEZXN0Q29udGV4dCwNCiAgICAgIExQVk9JRCBwdkRlc3RDb250ZXh0
LA0KICAgICAgRFdPUkQgbXNobGZsYWdzDQogICAgKTsNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29Vbm1hcnNoYWxJbnRlcmZhY2UoDQog
ICAgICBMUFNUUkVBTSBwU3RtLA0KICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgTFBWT0lE
ICAgKiBwcHYNCiAgICApOw0KDQoNCiNsaW5lIDczNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGku
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Agb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9f
c3RkY2FsbA0KQ29NYXJzaGFsSHJlc3VsdCgNCiAgICAgIExQU1RSRUFNIHBzdG0sDQogICAgICBI
UkVTVUxUIGhyZXN1bHQNCiAgICApOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29Vbm1hcnNoYWxIcmVzdWx0KA0KICAgICAgTFBTVFJFQU0g
cHN0bSwNCiAgICAgIEhSRVNVTFQgICAqIHBocmVzdWx0DQogICAgKTsNCg0KDQojbGluZSA3NTMg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAgZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvUmVsZWFzZU1hcnNoYWxE
YXRhKA0KICAgICAgTFBTVFJFQU0gcFN0bQ0KICAgICk7DQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvRGlzY29ubmVjdE9iamVjdCgNCiAg
ICAgIExQVU5LTk9XTiBwVW5rLA0KICAgICAgRFdPUkQgZHdSZXNlcnZlZA0KICAgICk7DQoNCg0K
I2xpbmUgNzcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAgZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvTG9ja09iamVj
dEV4dGVybmFsKA0KICAgICAgTFBVTktOT1dOIHBVbmssDQogICAgICBCT09MIGZMb2NrLA0KICAg
ICAgQk9PTCBmTGFzdFVubG9ja1JlbGVhc2VzDQogICAgKTsNCg0KDQojbGluZSA3ODUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvR2V0U3RhbmRhcmRNYXJzaGFsKA0K
ICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgIExQVU5LTk9XTiBwVW5rLA0KICAgICAgRFdP
UkQgZHdEZXN0Q29udGV4dCwNCiAgICAgIExQVk9JRCBwdkRlc3RDb250ZXh0LA0KICAgICAgRFdP
UkQgbXNobGZsYWdzLA0KICAgICBMUE1BUlNIQUwgICAqIHBwTWFyc2hhbA0KICAgICk7DQoNCg0K
I2xpbmUgODAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAgZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvR2V0U3RkTWFy
c2hhbEV4KA0KICAgICAgTFBVTktOT1dOIHBVbmtPdXRlciwNCiAgICAgIERXT1JEIHNtZXhmbGFn
cywNCiAgICAgTFBVTktOT1dOICAgKiBwcFVua0lubmVyDQogICAgKTsNCg0KDQojbGluZSA4MTYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KdHlwZWRlZiBlbnVt
IHRhZ1NURE1TSExGTEFHUw0Kew0KICAgIFNNRVhGX1NFUlZFUiAgICAgPSAweDAxLCAgICAgICAN
CiAgICBTTUVYRl9IQU5ETEVSICAgID0gMHgwMiAgICAgICAgDQp9IFNURE1TSExGTEFHUzsNCg0K
I2xpbmUgODI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsDQpDb0lzSGFuZGxlckNvbm5l
Y3RlZCgNCiAgICAgIExQVU5LTk9XTiBwVW5rDQogICAgKTsNCg0KDQojbGluZSA4NDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lv
biBBcHBsaWNhdGlvbiBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KICBleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29NYXJzaGFsSW50ZXJUaHJlYWRJ
bnRlcmZhY2VJblN0cmVhbSgNCiAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgICBMUFVOS05P
V04gcFVuaywNCiAgICAgTFBTVFJFQU0qIHBwU3RtDQogICAgKTsNCg0KDQogIGV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0dldEludGVyZmFjZUFu
ZFJlbGVhc2VTdHJlYW0oDQogICAgICBMUFNUUkVBTSBwU3RtLA0KICAgICAgY29uc3QgSUlEICYg
aWlkLA0KICAgICBMUFZPSUQgICAqIHBwdg0KICAgICk7DQoNCg0KI2xpbmUgODY0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24g
QXBwbGljYXRpb24gb3IgT25lQ29yZSBvciBHYW1lcyBGYW1pbHkNCg0KDQogIGV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0NyZWF0ZUZyZWVUaHJl
YWRlZE1hcnNoYWxlcigNCiAgICAgIExQVU5LTk9XTiBwdW5rT3V0ZXIsDQogICAgIExQVU5LTk9X
TiogcHB1bmtNYXJzaGFsDQogICAgKTsNCg0KDQojbGluZSA4NzcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21i
YXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlv
biBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IHZvaWQgX19zdGRjYWxsDQpDb0ZyZWVVbnVzZWRMaWJyYXJpZXMoDQogICAgdm9pZA0KICAgICk7
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNhbGwNCkNv
RnJlZVVudXNlZExpYnJhcmllc0V4KA0KICAgICAgRFdPUkQgZHdVbmxvYWREZWxheSwNCiAgICAg
IERXT1JEIGR3UmVzZXJ2ZWQNCiAgICApOw0KDQojbGluZSA4OTUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21i
YXNlYXBpLmgiDQoNCiNsaW5lIDg5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUgRmFt
aWx5DQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbA0KQ29EaXNjb25uZWN0Q29udGV4dCgNCiAgICBEV09SRCBkd1RpbWVvdXQNCiAgICApOw0K
DQoNCiNsaW5lIDkxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNsaW5lIDkxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KDQoNCg0KI3By
YWdtYSByZWdpb24gQXBwbGljYXRpb24gb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KICBleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29Jbml0aWFs
aXplU2VjdXJpdHkoDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjRGVzYywNCiAgICAg
IExPTkcgY0F1dGhTdmMsDQogICAgICBTT0xFX0FVVEhFTlRJQ0FUSU9OX1NFUlZJQ0UqIGFzQXV0
aFN2YywNCiAgICAgIHZvaWQqIHBSZXNlcnZlZDEsDQogICAgICBEV09SRCBkd0F1dGhuTGV2ZWws
DQogICAgICBEV09SRCBkd0ltcExldmVsLA0KICAgICAgdm9pZCogcEF1dGhMaXN0LA0KICAgICAg
RFdPUkQgZHdDYXBhYmlsaXRpZXMsDQogICAgICB2b2lkKiBwUmVzZXJ2ZWQzDQogICAgKTsNCg0K
DQojbGluZSA5MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KICBleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29HZXRDYWxs
Q29udGV4dCgNCiAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgIHZvaWQqKiBwcEludGVyZmFj
ZQ0KICAgICk7DQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbA0KQ29RdWVyeVByb3h5QmxhbmtldCgNCiAgICAgIElVbmtub3duKiBwUHJveHks
DQogICAgICBEV09SRCogcHdBdXRoblN2YywNCiAgICAgIERXT1JEKiBwQXV0aHpTdmMsDQogICAg
IExQT0xFU1RSKiBwU2VydmVyUHJpbmNOYW1lLA0KICAgICAgRFdPUkQqIHBBdXRobkxldmVsLA0K
ICAgICAgRFdPUkQqIHBJbXBMZXZlbCwNCiAgICAgIFJQQ19BVVRIX0lERU5USVRZX0hBTkRMRSog
cEF1dGhJbmZvLA0KICAgICAgRFdPUkQqIHBDYXBhYmlsaXRlcw0KICAgICk7DQoNCg0KICBleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29TZXRQcm94
eUJsYW5rZXQoDQogICAgICBJVW5rbm93biogcFByb3h5LA0KICAgICAgRFdPUkQgZHdBdXRoblN2
YywNCiAgICAgIERXT1JEIGR3QXV0aHpTdmMsDQogICAgICBPTEVDSEFSKiBwU2VydmVyUHJpbmNO
YW1lLA0KICAgICAgRFdPUkQgZHdBdXRobkxldmVsLA0KICAgICAgRFdPUkQgZHdJbXBMZXZlbCwN
CiAgICAgIFJQQ19BVVRIX0lERU5USVRZX0hBTkRMRSBwQXV0aEluZm8sDQogICAgICBEV09SRCBk
d0NhcGFiaWxpdGllcw0KICAgICk7DQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29Db3B5UHJveHkoDQogICAgICBJVW5rbm93biogcFBy
b3h5LA0KICAgICBJVW5rbm93bioqIHBwQ29weQ0KICAgICk7DQoNCg0KICBleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29RdWVyeUNsaWVudEJsYW5r
ZXQoDQogICAgICBEV09SRCogcEF1dGhuU3ZjLA0KICAgICAgRFdPUkQqIHBBdXRoelN2YywNCiAg
ICAgTFBPTEVTVFIqIHBTZXJ2ZXJQcmluY05hbWUsDQogICAgICBEV09SRCogcEF1dGhuTGV2ZWws
DQogICAgICBEV09SRCogcEltcExldmVsLA0KICAgICBSUENfQVVUSFpfSEFORExFKiBwUHJpdnMs
DQogICAgICBEV09SRCogcENhcGFiaWxpdGllcw0KICAgICk7DQoNCg0KICBleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29JbXBlcnNvbmF0ZUNsaWVu
dCgNCiAgICB2b2lkDQogICAgKTsNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb1JldmVydFRvU2VsZigNCiAgICB2b2lkDQogICAgKTsN
Cg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
DQpDb1F1ZXJ5QXV0aGVudGljYXRpb25TZXJ2aWNlcygNCiAgICAgIERXT1JEKiBwY0F1dGhTdmMs
DQogICAgIFNPTEVfQVVUSEVOVElDQVRJT05fU0VSVklDRSoqIGFzQXV0aFN2Yw0KICAgICk7DQoN
Cg0KI2xpbmUgMTAxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0K
ICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29T
d2l0Y2hDYWxsQ29udGV4dCgNCiAgICAgIElVbmtub3duKiBwTmV3T2JqZWN0LA0KICAgICBJVW5r
bm93bioqIHBwT2xkT2JqZWN0DQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTAz
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5l
IDEwMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcCBv
ciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQoNCg0KICBleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29DcmVhdGVJbnN0YW5jZSgN
CiAgICAgIGNvbnN0IElJRCAmIHJjbHNpZCwNCiAgICAgIExQVU5LTk9XTiBwVW5rT3V0ZXIsDQog
ICAgICBEV09SRCBkd0Nsc0NvbnRleHQsDQogICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAg
TFBWT0lEICAgKiBwcHYNCiAgICApOw0KDQoNCiNsaW5lIDEwNTYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21i
YXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHAgb3IgT25l
Q29yZSBGYW1pbHkNCg0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsDQpDb0NyZWF0ZUluc3RhbmNlRXgoDQogICAgICBjb25zdCBJSUQg
JiBDbHNpZCwNCiAgICAgIElVbmtub3duKiBwdW5rT3V0ZXIsDQogICAgICBEV09SRCBkd0Nsc0N0
eCwNCiAgICAgIENPU0VSVkVSSU5GTyogcFNlcnZlckluZm8sDQogICAgICBEV09SRCBkd0NvdW50
LA0KICAgICAgTVVMVElfUUkqIHBSZXN1bHRzDQogICAgKTsNCg0KDQojbGluZSAxMDc2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDEwOTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCiNsaW5lIDEwOTMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3Agb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ29SZWdpc3RlckFjdGl2YXRpb25GaWx0ZXIoDQog
ICAgICBJQWN0aXZhdGlvbkZpbHRlciogcEFjdGl2YXRpb25GaWx0ZXINCiAgICApOw0KDQoNCiNs
aW5lIDExMDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0K
Q29HZXRDYW5jZWxPYmplY3QoDQogICAgICBEV09SRCBkd1RocmVhZElkLA0KICAgICAgY29uc3Qg
SUlEICYgaWlkLA0KICAgICB2b2lkKiogcHBVbmsNCiAgICApOw0KDQoNCiAgZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvU2V0Q2FuY2VsT2JqZWN0
KA0KICAgICAgSVVua25vd24qIHBVbmsNCiAgICApOw0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvQ2FuY2VsQ2FsbCgNCiAgICAgIERX
T1JEIGR3VGhyZWFkSWQsDQogICAgICBVTE9ORyB1bFRpbWVvdXQNCiAgICApOw0KDQoNCiAgZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvVGVzdENh
bmNlbCgNCiAgICB2b2lkDQogICAgKTsNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0VuYWJsZUNhbGxDYW5jZWxsYXRpb24oDQogICAg
ICBMUFZPSUQgcFJlc2VydmVkDQogICAgKTsNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0Rpc2FibGVDYWxsQ2FuY2VsbGF0aW9uKA0K
ICAgICAgTFBWT0lEIHBSZXNlcnZlZA0KICAgICk7DQoNCg0KI2xpbmUgMTE1NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGNvbWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDExNjAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIG9yIE9u
ZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpTdHJpbmdGcm9tQ0xTSUQoDQogICAg
ICBjb25zdCBJSUQgJiByY2xzaWQsDQogICAgIExQT0xFU1RSICAgKiBscGxwc3oNCiAgICApOw0K
DQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpD
TFNJREZyb21TdHJpbmcoDQogICAgICBMUENPTEVTVFIgbHBzeiwNCiAgICAgIExQQ0xTSUQgcGNs
c2lkDQogICAgKTsNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbA0KU3RyaW5nRnJvbUlJRCgNCiAgICAgIGNvbnN0IElJRCAmIHJjbHNpZCwNCiAg
ICAgTFBPTEVTVFIgICAqIGxwbHBzeg0KICAgICk7DQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCklJREZyb21TdHJpbmcoDQogICAgICBMUENP
TEVTVFIgbHBzeiwNCiAgICAgIExQSUlEIGxwaWlkDQogICAgKTsNCg0KDQojbGluZSAxMTkyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQoNCiAgZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNClByb2dJREZyb21DTFNJ
RCgNCiAgICAgIGNvbnN0IElJRCAmIGNsc2lkLA0KICAgICBMUE9MRVNUUiAgICogbHBscHN6UHJv
Z0lEDQogICAgKTsNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbA0KQ0xTSURGcm9tUHJvZ0lEKA0KICAgICAgTFBDT0xFU1RSIGxwc3pQcm9nSUQs
DQogICAgICBMUENMU0lEIGxwY2xzaWQNCiAgICApOw0KDQoNCiNsaW5lIDEyMTEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBB
cHBsaWNhdGlvbiBvciBPbmVDb3JlIEZhbWlseSBvciBHYW1lcyBGYW1pbHkNCg0KDQogIGV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX3N0ZGNhbGwNClN0cmluZ0Zyb21HVUlE
MigNCiAgICAgIGNvbnN0IEdVSUQgJiByZ3VpZCwNCiAgICAgIExQT0xFU1RSIGxwc3osDQogICAg
ICBpbnQgY2NoTWF4DQogICAgKTsNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhSRVNVTFQgX19zdGRjYWxsDQpDb0NyZWF0ZUd1aWQoDQogICAgICBHVUlEICAgKiBwZ3Vp
ZA0KICAgICk7DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1BST1BWQVJJQU5UIFBST1BWQVJJ
QU5UOw0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbA0KUHJvcFZhcmlhbnRDb3B5KA0KICAgICAgUFJPUFZBUklBTlQqIHB2YXJEZXN0LA0KICAg
ICAgY29uc3QgUFJPUFZBUklBTlQqIHB2YXJTcmMNCiAgICApOw0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpQcm9wVmFyaWFudENsZWFyKA0K
ICAgICAgUFJPUFZBUklBTlQqIHB2YXINCiAgICApOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpGcmVlUHJvcFZhcmlhbnRBcnJheSgNCiAg
ICAgIFVMT05HIGNWYXJpYW50cywNCiAgICAgIFBST1BWQVJJQU5UKiByZ3ZhcnMNCiAgICApOw0K
DQoNCiNsaW5lIDEyNTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUgRmFtaWx5DQoN
Cg0KI2xpbmUgMTI2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNsaW5lIDEyNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCg0KDQoNCg0K
I3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAgZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvV2FpdEZvck11bHRp
cGxlSGFuZGxlcygNCiAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICBEV09SRCBkd1RpbWVvdXQs
DQogICAgICBVTE9ORyBjSGFuZGxlcywNCiAgICAgIExQSEFORExFIHBIYW5kbGVzLA0KICAgICAg
TFBEV09SRCBscGR3aW5kZXgNCiAgICApOw0KDQoNCg0KDQp0eXBlZGVmIGVudW0gdGFnQ09XQUlU
X0ZMQUdTDQp7DQogIENPV0FJVF9ERUZBVUxUID0gMCwNCiAgQ09XQUlUX1dBSVRBTEwgPSAxLA0K
ICBDT1dBSVRfQUxFUlRBQkxFID0gMiwNCiAgQ09XQUlUX0lOUFVUQVZBSUxBQkxFID0gNCwNCiAg
Q09XQUlUX0RJU1BBVENIX0NBTExTID0gOCwNCiAgQ09XQUlUX0RJU1BBVENIX1dJTkRPV19NRVNT
QUdFUyA9IDB4MTAsDQp9Q09XQUlUX0ZMQUdTOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEzMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCg0K
DQojbGluZSAxMzIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI2xpbmUgMTMyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkNvR2V0VHJlYXRBc0NsYXNzKA0KICAg
ICAgY29uc3QgSUlEICYgY2xzaWRPbGQsDQogICAgICBMUENMU0lEIHBDbHNpZE5ldw0KICAgICk7
DQoNCg0KI2xpbmUgMTMzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBvciBPbmVDb3JlIEZhbWls
eQ0KDQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNh
bGwNCkNvSW52YWxpZGF0ZVJlbW90ZU1hY2hpbmVCaW5kaW5ncygNCiAgICAgIExQT0xFU1RSIHBz
ek1hY2hpbmVOYW1lDQogICAgKTsNCg0KDQojbGluZSAxMzUzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFz
ZWFwaS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI2xpbmUgMTM1NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNv
bWJhc2VhcGkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDEzODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgiDQoNCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0K
DQoNCg0KDQp0eXBlZGVmIEhSRVNVTFQgKF9fc3RkY2FsbCAqIExQRk5HRVRDTEFTU09CSkVDVCkg
KGNvbnN0IElJRCAmLCBjb25zdCBJSUQgJiwgTFBWT0lEICopOw0KdHlwZWRlZiBIUkVTVUxUIChf
X3N0ZGNhbGwgKiBMUEZOQ0FOVU5MT0FETk9XKSh2b2lkKTsNCg0KIA0KZXh0ZXJuICJDIiBIUkVT
VUxUIF9fc3RkY2FsbCAgRGxsR2V0Q2xhc3NPYmplY3QoICBjb25zdCBJSUQgJiByY2xzaWQsICAg
Y29uc3QgSUlEICYgcmlpZCwgIExQVk9JRCAqIHBwdik7DQoNCg0KZXh0ZXJuICJDIiBIUkVTVUxU
IF9fc3RkY2FsbCAgRGxsQ2FuVW5sb2FkTm93KHZvaWQpOw0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpICAgICAgICAgTFBWT0lEIF9fc3RkY2FsbA0KQ29UYXNrTWVtQWxsb2Mo
DQogICAgICBTSVpFX1QgY2INCiAgICApOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSAgICAgIExQVk9JRCBfX3N0ZGNhbGwNCkNvVGFza01lbVJlYWxsb2MoDQogICAgICAgICAg
TFBWT0lEIHB2LA0KICAgICAgU0laRV9UIGNiDQogICAgKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNhbGwNCkNvVGFza01lbUZyZWUoDQogICAgICBMUFZP
SUQgcHYNCiAgICApOw0KDQoNCiNsaW5lIDE0MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21iYXNlYXBpLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0
ZGNhbGwNCkNvRmlsZVRpbWVOb3coDQogICAgICBGSUxFVElNRSAgICogbHBGaWxlVGltZQ0KICAg
ICk7DQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNh
bGwNCkNMU0lERnJvbVByb2dJREV4KA0KICAgICAgTFBDT0xFU1RSIGxwc3pQcm9nSUQsDQogICAg
ICBMUENMU0lEIGxwY2xzaWQNCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5o
Ig0KDQojbGluZSAxNDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQoNCiNsaW5lIDMzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQojbGluZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxw
b3BwYWNrLmgiDQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAx
NDY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcY29tYmFzZWFwaS5oIg0KI2xpbmUgMTQ2NiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGNvbWJhc2VhcGkuaCINCg0KI2xpbmUgMTQ2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWJhc2VhcGkuaCIN
CiNsaW5lIDI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqYmFzZS5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGNvbWwyYXBpLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
CiNsaW5lIDE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbDJhcGkuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlk
bC5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMzkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGwuaCINCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSU1hbGxvY1NweSBJTWFsbG9jU3B5Ow0K
DQojbGluZSA0NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgSUJpbmRDdHggSUJpbmRDdHg7DQoNCiNsaW5lIDQ1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5o
Ig0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJRW51bU1vbmlrZXIgSUVudW1Nb25pa2VyOw0KDQoj
bGluZSA0NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
SVJ1bm5hYmxlT2JqZWN0IElSdW5uYWJsZU9iamVjdDsNCg0KI2xpbmUgNDY3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElSdW5uaW5nT2JqZWN0VGFibGUg
SVJ1bm5pbmdPYmplY3RUYWJsZTsNCg0KI2xpbmUgNDc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElQZXJzaXN0IElQZXJzaXN0Ow0KDQojbGluZSA0ODEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVBlcnNpc3RT
dHJlYW0gSVBlcnNpc3RTdHJlYW07DQoNCiNsaW5lIDQ4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5o
Ig0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJTW9uaWtlciBJTW9uaWtlcjsNCg0KI2xpbmUgNDk1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElST1REYXRh
IElST1REYXRhOw0KDQojbGluZSA1MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgSUVudW1TVEFUU1RHIElFbnVtU1RBVFNURzsNCg0KI2xpbmUgNTA5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElTdG9yYWdlIElT
dG9yYWdlOw0KDQojbGluZSA1MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSVBlcnNpc3RGaWxlIElQZXJzaXN0RmlsZTsNCg0KI2xpbmUgNTIzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElQZXJzaXN0U3RvcmFn
ZSBJUGVyc2lzdFN0b3JhZ2U7DQoNCiNsaW5lIDUzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJTG9ja0J5dGVzIElMb2NrQnl0ZXM7DQoNCiNsaW5lIDUz
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJRW51bUZP
Uk1BVEVUQyBJRW51bUZPUk1BVEVUQzsNCg0KI2xpbmUgNTQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRs
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElFbnVtU1RBVERBVEEgSUVudW1TVEFUREFUQTsN
Cg0KI2xpbmUgNTUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IElSb290U3RvcmFnZSBJUm9vdFN0b3JhZ2U7DQoNCiNsaW5lIDU1OCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9iamlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQWR2aXNlU2luayBJQWR2aXNlU2lu
azsNCg0KI2xpbmUgNTY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYg
c3RydWN0IEFzeW5jSUFkdmlzZVNpbmsgQXN5bmNJQWR2aXNlU2luazsNCg0KI2xpbmUgNTcyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElBZHZpc2VTaW5r
MiBJQWR2aXNlU2luazI7DQoNCiNsaW5lIDU3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBBc3luY0lBZHZpc2VTaW5rMiBBc3luY0lBZHZpc2VTaW5rMjsN
Cg0KI2xpbmUgNTg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IElEYXRhT2JqZWN0IElEYXRhT2JqZWN0Ow0KDQojbGluZSA1OTMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YmppZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSURhdGFBZHZpc2VIb2xkZXIgSURhdGFB
ZHZpc2VIb2xkZXI7DQoNCiNsaW5lIDYwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBJTWVzc2FnZUZpbHRlciBJTWVzc2FnZUZpbHRlcjsNCg0KI2xpbmUg
NjA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElDbGFz
c0FjdGl2YXRvciBJQ2xhc3NBY3RpdmF0b3I7DQoNCiNsaW5lIDYxNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9i
amlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJRmlsbExvY2tCeXRlcyBJRmlsbExvY2tC
eXRlczsNCg0KI2xpbmUgNjIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IElQcm9ncmVzc05vdGlmeSBJUHJvZ3Jlc3NOb3RpZnk7DQoNCiNsaW5lIDYyOCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJTGF5b3V0U3Rv
cmFnZSBJTGF5b3V0U3RvcmFnZTsNCg0KI2xpbmUgNjM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElCbG9ja2luZ0xvY2sgSUJsb2NraW5nTG9jazsNCg0K
I2xpbmUgNjQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IElUaW1lQW5kTm90aWNlQ29udHJvbCBJVGltZUFuZE5vdGljZUNvbnRyb2w7DQoNCiNsaW5lIDY0
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJT3Bsb2Nr
U3RvcmFnZSBJT3Bsb2NrU3RvcmFnZTsNCg0KI2xpbmUgNjU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRs
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElEaXJlY3RXcml0ZXJMb2NrIElEaXJlY3RXcml0
ZXJMb2NrOw0KDQojbGluZSA2NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSVVybE1vbiBJVXJsTW9uOw0KDQojbGluZSA2NzAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YmppZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUZvcmVncm91bmRUcmFuc2ZlciBJRm9y
ZWdyb3VuZFRyYW5zZmVyOw0KDQojbGluZSA2NzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVRodW1ibmFpbEV4dHJhY3RvciBJVGh1bWJuYWlsRXh0cmFj
dG9yOw0KDQojbGluZSA2ODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgSUR1bW15SElDT05JbmNsdWRlciBJRHVtbXlISUNPTkluY2x1ZGVyOw0KDQojbGlu
ZSA2OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVBy
b2Nlc3NMb2NrIElQcm9jZXNzTG9jazsNCg0KI2xpbmUgNjk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRs
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElTdXJyb2dhdGVTZXJ2aWNlIElTdXJyb2dhdGVT
ZXJ2aWNlOw0KDQojbGluZSA3MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSUluaXRpYWxpemVTcHkgSUluaXRpYWxpemVTcHk7DQoNCiNsaW5lIDcxMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQXBhcnRtZW50
U2h1dGRvd24gSUFwYXJ0bWVudFNodXRkb3duOw0KDQojbGluZSA3MTkgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YmppZGwuaCINCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1bmtud24uaCINCg0KDQoNCg0K
DQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVua253bi5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xp
bmUgMzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1bmtud24uaCINCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVz
LmgiDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5
cGVzLmgiDQoNCiANCg0KDQoNCg0KDQpleHRlcm4gIkMiew0KI2xpbmUgNDQgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxcd3R5cGVzLmgiDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoj
bGluZSA1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3dHlwZXMuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHB1
c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDYyICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHd0eXBlcy5oIg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfd3R5
cGVzXzAwMDBfMDAwMF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURM
X2l0Zl93dHlwZXNfMDAwMF8wMDAwX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdSZW1IR0xPQkFMDQogICAgew0KICAgIExPTkcgZk51bGxIR2xvYmFsOw0K
ICAgIFVMT05HIGNiRGF0YTsNCiAgICAgYnl0ZSBkYXRhWyAxIF07DQogICAgfSAJUmVtSEdMT0JB
TDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnUmVtSE1FVEFGSUxFUElDVA0KICAgIHsNCiAgICBMT05H
IG1tOw0KICAgIExPTkcgeEV4dDsNCiAgICBMT05HIHlFeHQ7DQogICAgVUxPTkcgY2JEYXRhOw0K
ICAgICBieXRlIGRhdGFbIDEgXTsNCiAgICB9IAlSZW1ITUVUQUZJTEVQSUNUOw0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdSZW1IRU5ITUVUQUZJTEUNCiAgICB7DQogICAgVUxPTkcgY2JEYXRhOw0KICAg
ICBieXRlIGRhdGFbIDEgXTsNCiAgICB9IAlSZW1IRU5ITUVUQUZJTEU7DQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ1JlbUhCSVRNQVANCiAgICB7DQogICAgVUxPTkcgY2JEYXRhOw0KICAgICBieXRlIGRh
dGFbIDEgXTsNCiAgICB9IAlSZW1IQklUTUFQOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSZW1IUEFM
RVRURQ0KICAgIHsNCiAgICBVTE9ORyBjYkRhdGE7DQogICAgIGJ5dGUgZGF0YVsgMSBdOw0KICAg
IH0gCVJlbUhQQUxFVFRFOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSZW1CUlVTSA0KICAgIHsNCiAg
ICBVTE9ORyBjYkRhdGE7DQogICAgIGJ5dGUgZGF0YVsgMSBdOw0KICAgIH0gCVJlbUhCUlVTSDsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMzNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3
dHlwZXMuaCINCg0KDQoNCg0KI2xpbmUgMzQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0K
DQoNCg0KI2xpbmUgMzQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0KdHlwZWRlZiANCmVu
dW0gdGFnRFZBU1BFQ1QNCiAgICB7DQogICAgICAgIERWQVNQRUNUX0NPTlRFTlQJPSAxLA0KICAg
ICAgICBEVkFTUEVDVF9USFVNQk5BSUwJPSAyLA0KICAgICAgICBEVkFTUEVDVF9JQ09OCT0gNCwN
CiAgICAgICAgRFZBU1BFQ1RfRE9DUFJJTlQJPSA4DQogICAgfSAJRFZBU1BFQ1Q7DQoNCnR5cGVk
ZWYgDQplbnVtIHRhZ1NUR0MNCiAgICB7DQogICAgICAgIFNUR0NfREVGQVVMVAk9IDAsDQogICAg
ICAgIFNUR0NfT1ZFUldSSVRFCT0gMSwNCiAgICAgICAgU1RHQ19PTkxZSUZDVVJSRU5UCT0gMiwN
CiAgICAgICAgU1RHQ19EQU5HRVJPVVNMWUNPTU1JVE1FUkVMWVRPRElTS0NBQ0hFCT0gNCwNCiAg
ICAgICAgU1RHQ19DT05TT0xJREFURQk9IDgNCiAgICB9IAlTVEdDOw0KDQp0eXBlZGVmIA0KZW51
bSB0YWdTVEdNT1ZFDQogICAgew0KICAgICAgICBTVEdNT1ZFX01PVkUJPSAwLA0KICAgICAgICBT
VEdNT1ZFX0NPUFkJPSAxLA0KICAgICAgICBTVEdNT1ZFX1NIQUxMT1dDT1BZCT0gMg0KICAgIH0g
CVNUR01PVkU7DQoNCnR5cGVkZWYgDQplbnVtIHRhZ1NUQVRGTEFHDQogICAgew0KICAgICAgICBT
VEFURkxBR19ERUZBVUxUCT0gMCwNCiAgICAgICAgU1RBVEZMQUdfTk9OQU1FCT0gMSwNCiAgICAg
ICAgU1RBVEZMQUdfTk9PUEVOCT0gMg0KICAgIH0gCVNUQVRGTEFHOw0KDQp0eXBlZGVmICB2b2lk
ICpIQ09OVEVYVDsNCg0KDQoNCnR5cGVkZWYgRFdPUkQgTENJRDsNCg0KI2xpbmUgMzg3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0KDQoNCnR5cGVkZWYgVVNIT1JUIExBTkdJRDsNCg0KI2xp
bmUgMzkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX3VzZXJDTElQRk9STUFUDQogICAgew0KICAgIExPTkcgZkNvbnRleHQ7DQogICAgICB1
bmlvbiBfX01JRExfSVdpblR5cGVzXzAwMDENCiAgICAgICAgew0KICAgICAgICAgRFdPUkQgZHdW
YWx1ZTsNCiAgICAgICAgIHdjaGFyX3QgKnB3c3pOYW1lOw0KICAgICAgICB9IAl1Ow0KICAgIH0g
CXVzZXJDTElQRk9STUFUOw0KDQp0eXBlZGVmICAgICB1c2VyQ0xJUEZPUk1BVCAqd2lyZUNMSVBG
T1JNQVQ7DQoNCnR5cGVkZWYgIFdPUkQgQ0xJUEZPUk1BVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX0dE
SV9OT05SRU1PVEUNCiAgICB7DQogICAgTE9ORyBmQ29udGV4dDsNCiAgICAgIHVuaW9uIF9fTUlE
TF9JV2luVHlwZXNfMDAwMg0KICAgICAgICB7DQogICAgICAgICBMT05HIGhJbnByb2M7DQogICAg
ICAgICBEV09SRF9CTE9CICpoUmVtb3RlOw0KICAgICAgICB9IAl1Ow0KICAgIH0gCUdESV9OT05S
RU1PVEU7DQoNCnR5cGVkZWYgc3RydWN0IF91c2VySEdMT0JBTA0KICAgIHsNCiAgICBMT05HIGZD
b250ZXh0Ow0KICAgICAgdW5pb24gX19NSURMX0lXaW5UeXBlc18wMDAzDQogICAgICAgIHsNCiAg
ICAgICAgIExPTkcgaElucHJvYzsNCiAgICAgICAgIEZMQUdHRURfQllURV9CTE9CICpoUmVtb3Rl
Ow0KICAgICAgICAgX19pbnQ2NCBoSW5wcm9jNjQ7DQogICAgICAgIH0gCXU7DQogICAgfSAJdXNl
ckhHTE9CQUw7DQoNCnR5cGVkZWYgICAgIHVzZXJIR0xPQkFMICp3aXJlSEdMT0JBTDsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX3VzZXJITUVUQUZJTEUNCiAgICB7DQogICAgTE9ORyBmQ29udGV4dDsNCiAg
ICAgIHVuaW9uIF9fTUlETF9JV2luVHlwZXNfMDAwNA0KICAgICAgICB7DQogICAgICAgICBMT05H
IGhJbnByb2M7DQogICAgICAgICBCWVRFX0JMT0IgKmhSZW1vdGU7DQogICAgICAgICBfX2ludDY0
IGhJbnByb2M2NDsNCiAgICAgICAgfSAJdTsNCiAgICB9IAl1c2VySE1FVEFGSUxFOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfcmVtb3RlTUVUQUZJTEVQSUNUDQogICAgew0KICAgIExPTkcgbW07DQogICAg
TE9ORyB4RXh0Ow0KICAgIExPTkcgeUV4dDsNCiAgICB1c2VySE1FVEFGSUxFICpoTUY7DQogICAg
fSAJcmVtb3RlTUVUQUZJTEVQSUNUOw0KDQp0eXBlZGVmIHN0cnVjdCBfdXNlckhNRVRBRklMRVBJ
Q1QNCiAgICB7DQogICAgTE9ORyBmQ29udGV4dDsNCiAgICAgIHVuaW9uIF9fTUlETF9JV2luVHlw
ZXNfMDAwNQ0KICAgICAgICB7DQogICAgICAgICBMT05HIGhJbnByb2M7DQogICAgICAgICByZW1v
dGVNRVRBRklMRVBJQ1QgKmhSZW1vdGU7DQogICAgICAgICBfX2ludDY0IGhJbnByb2M2NDsNCiAg
ICAgICAgfSAJdTsNCiAgICB9IAl1c2VySE1FVEFGSUxFUElDVDsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
X3VzZXJIRU5ITUVUQUZJTEUNCiAgICB7DQogICAgTE9ORyBmQ29udGV4dDsNCiAgICAgIHVuaW9u
IF9fTUlETF9JV2luVHlwZXNfMDAwNg0KICAgICAgICB7DQogICAgICAgICBMT05HIGhJbnByb2M7
DQogICAgICAgICBCWVRFX0JMT0IgKmhSZW1vdGU7DQogICAgICAgICBfX2ludDY0IGhJbnByb2M2
NDsNCiAgICAgICAgfSAJdTsNCiAgICB9IAl1c2VySEVOSE1FVEFGSUxFOw0KDQp0eXBlZGVmIHN0
cnVjdCBfdXNlckJJVE1BUA0KICAgIHsNCiAgICBMT05HIGJtVHlwZTsNCiAgICBMT05HIGJtV2lk
dGg7DQogICAgTE9ORyBibUhlaWdodDsNCiAgICBMT05HIGJtV2lkdGhCeXRlczsNCiAgICBXT1JE
IGJtUGxhbmVzOw0KICAgIFdPUkQgYm1CaXRzUGl4ZWw7DQogICAgVUxPTkcgY2JTaXplOw0KICAg
ICBieXRlIHBCdWZmZXJbIDEgXTsNCiAgICB9IAl1c2VyQklUTUFQOw0KDQp0eXBlZGVmIHN0cnVj
dCBfdXNlckhCSVRNQVANCiAgICB7DQogICAgTE9ORyBmQ29udGV4dDsNCiAgICAgIHVuaW9uIF9f
TUlETF9JV2luVHlwZXNfMDAwNw0KICAgICAgICB7DQogICAgICAgICBMT05HIGhJbnByb2M7DQog
ICAgICAgICB1c2VyQklUTUFQICpoUmVtb3RlOw0KICAgICAgICAgX19pbnQ2NCBoSW5wcm9jNjQ7
DQogICAgICAgIH0gCXU7DQogICAgfSAJdXNlckhCSVRNQVA7DQoNCnR5cGVkZWYgc3RydWN0IF91
c2VySFBBTEVUVEUNCiAgICB7DQogICAgTE9ORyBmQ29udGV4dDsNCiAgICAgIHVuaW9uIF9fTUlE
TF9JV2luVHlwZXNfMDAwOA0KICAgICAgICB7DQogICAgICAgICBMT05HIGhJbnByb2M7DQogICAg
ICAgICBMT0dQQUxFVFRFICpoUmVtb3RlOw0KICAgICAgICAgX19pbnQ2NCBoSW5wcm9jNjQ7DQog
ICAgICAgIH0gCXU7DQogICAgfSAJdXNlckhQQUxFVFRFOw0KDQp0eXBlZGVmIHN0cnVjdCBfUmVt
b3RhYmxlSGFuZGxlDQogICAgew0KICAgIExPTkcgZkNvbnRleHQ7DQogICAgICB1bmlvbiBfX01J
RExfSVdpblR5cGVzXzAwMDkNCiAgICAgICAgew0KICAgICAgICAgTE9ORyBoSW5wcm9jOw0KICAg
ICAgICAgTE9ORyBoUmVtb3RlOw0KICAgICAgICB9IAl1Ow0KICAgIH0gCVJlbW90YWJsZUhhbmRs
ZTsNCg0KdHlwZWRlZiAgICAgUmVtb3RhYmxlSGFuZGxlICp3aXJlSFdORDsNCg0KdHlwZWRlZiAg
ICAgUmVtb3RhYmxlSGFuZGxlICp3aXJlSE1FTlU7DQoNCnR5cGVkZWYgICAgIFJlbW90YWJsZUhh
bmRsZSAqd2lyZUhBQ0NFTDsNCg0KdHlwZWRlZiAgICAgUmVtb3RhYmxlSGFuZGxlICp3aXJlSEJS
VVNIOw0KDQp0eXBlZGVmICAgICBSZW1vdGFibGVIYW5kbGUgKndpcmVIRk9OVDsNCg0KdHlwZWRl
ZiAgICAgUmVtb3RhYmxlSGFuZGxlICp3aXJlSERDOw0KDQp0eXBlZGVmICAgICBSZW1vdGFibGVI
YW5kbGUgKndpcmVISUNPTjsNCg0KdHlwZWRlZiAgICAgUmVtb3RhYmxlSGFuZGxlICp3aXJlSFJH
TjsNCg0KdHlwZWRlZiAgICAgUmVtb3RhYmxlSGFuZGxlICp3aXJlSE1PTklUT1I7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU2MyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFx3dHlwZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCnR5cGVkZWYgICAgIHVzZXJIQklUTUFQICp3aXJlSEJJVE1BUDsNCg0KdHlw
ZWRlZiAgICAgdXNlckhQQUxFVFRFICp3aXJlSFBBTEVUVEU7DQoNCnR5cGVkZWYgICAgIHVzZXJI
RU5ITUVUQUZJTEUgKndpcmVIRU5ITUVUQUZJTEU7DQoNCnR5cGVkZWYgICAgIHVzZXJITUVUQUZJ
TEUgKndpcmVITUVUQUZJTEU7DQoNCnR5cGVkZWYgICAgIHVzZXJITUVUQUZJTEVQSUNUICp3aXJl
SE1FVEFGSUxFUElDVDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MzggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxcd3R5cGVzLmgiDQp0eXBlZGVmICB2b2lkICpITUVUQUZJTEVQSUNUOw0K
DQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgSVdpblR5cGVzX3YwXzFfY19pZnNwZWM7DQpleHRl
cm4gUlBDX0lGX0hBTkRMRSBJV2luVHlwZXNfdjBfMV9zX2lmc3BlYzsNCiNsaW5lIDY0NSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFx3dHlwZXMuaCINCg0KDQogDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVz
aCkNCiNsaW5lIDY1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3dHlwZXMuaCINCiNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOjQyMDEpDQojbGluZSA2NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVzLmgiDQp0
eXBlZGVmIGRvdWJsZSBEQVRFOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjY5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0KDQp0eXBlZGVmIHVuaW9uIHRhZ0NZIHsNCiAgICBz
dHJ1Y3Qgew0KICAgICAgICBVTE9ORyBMbzsNCiAgICAgICAgTE9ORyAgICAgIEhpOw0KICAgIH0g
Ow0KICAgIExPTkdMT05HIGludDY0Ow0KfSBDWTsNCiNsaW5lIDY3OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVk
XFx3dHlwZXMuaCINCiNsaW5lIDY3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFx3dHlwZXMuaCINCnR5cGVk
ZWYgQ1kgKkxQQ1k7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY5NCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFx3dHlwZXMuaCINCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnREVDIHsNCiAgICBVU0hP
UlQgd1Jlc2VydmVkOw0KICAgIHVuaW9uIHsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAg
IEJZVEUgc2NhbGU7DQogICAgICAgICAgICBCWVRFIHNpZ247DQogICAgICAgIH0gOw0KICAgICAg
ICBVU0hPUlQgc2lnbnNjYWxlOw0KICAgIH0gOw0KICAgIFVMT05HIEhpMzI7DQogICAgdW5pb24g
ew0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgVUxPTkcgTG8zMjsNCiAgICAgICAgICAg
IFVMT05HIE1pZDMyOw0KICAgICAgICB9IDsNCiAgICAgICAgVUxPTkdMT05HIExvNjQ7DQogICAg
fSA7DQp9IERFQ0lNQUw7DQoNCg0KDQojbGluZSA3MTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVz
LmgiDQp0eXBlZGVmIERFQ0lNQUwgKkxQREVDSU1BTDsNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhw
b3ApDQoNCg0KI2xpbmUgNzI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0KI2xpbmUgNzI2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBlcy5oIg0KdHlwZWRlZiAgICAgRkxBR0dFRF9XT1JEX0JM
T0IgKndpcmVCU1RSOw0KDQoNCnR5cGVkZWYgIE9MRUNIQVIgKkJTVFI7DQoNCg0KDQojbGluZSA3
MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVzLmgiDQp0eXBlZGVmIEJTVFIgKkxQQlNUUjsNCg0K
DQp0eXBlZGVmIHNob3J0IFZBUklBTlRfQk9PTDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0JTVFJCTE9CDQogICAgew0KICAgIFVMT05HIGNiU2l6ZTsNCiAgICAgQllURSAqcERhdGE7
DQogICAgfSAJQlNUUkJMT0I7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0JTVFJCTE9CICpMUEJTVFJC
TE9COw0KDQojbGluZSA3NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVzLmgiDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnQ0xJUERBVEENCiAgICB7DQogICAgVUxPTkcgY2JTaXplOw0KICAgIExPTkcg
dWxDbGlwRm10Ow0KICAgICBCWVRFICpwQ2xpcERhdGE7DQogICAgfSAJQ0xJUERBVEE7DQoNCg0K
DQp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFZBUlRZUEU7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQplbnVtIFZBUkVOVU0NCiAg
ICB7DQogICAgICAgIFZUX0VNUFRZCT0gMCwNCiAgICAgICAgVlRfTlVMTAk9IDEsDQogICAgICAg
IFZUX0kyCT0gMiwNCiAgICAgICAgVlRfSTQJPSAzLA0KICAgICAgICBWVF9SNAk9IDQsDQogICAg
ICAgIFZUX1I4CT0gNSwNCiAgICAgICAgVlRfQ1kJPSA2LA0KICAgICAgICBWVF9EQVRFCT0gNywN
CiAgICAgICAgVlRfQlNUUgk9IDgsDQogICAgICAgIFZUX0RJU1BBVENICT0gOSwNCiAgICAgICAg
VlRfRVJST1IJPSAxMCwNCiAgICAgICAgVlRfQk9PTAk9IDExLA0KICAgICAgICBWVF9WQVJJQU5U
CT0gMTIsDQogICAgICAgIFZUX1VOS05PV04JPSAxMywNCiAgICAgICAgVlRfREVDSU1BTAk9IDE0
LA0KICAgICAgICBWVF9JMQk9IDE2LA0KICAgICAgICBWVF9VSTEJPSAxNywNCiAgICAgICAgVlRf
VUkyCT0gMTgsDQogICAgICAgIFZUX1VJNAk9IDE5LA0KICAgICAgICBWVF9JOAk9IDIwLA0KICAg
ICAgICBWVF9VSTgJPSAyMSwNCiAgICAgICAgVlRfSU5UCT0gMjIsDQogICAgICAgIFZUX1VJTlQJ
PSAyMywNCiAgICAgICAgVlRfVk9JRAk9IDI0LA0KICAgICAgICBWVF9IUkVTVUxUCT0gMjUsDQog
ICAgICAgIFZUX1BUUgk9IDI2LA0KICAgICAgICBWVF9TQUZFQVJSQVkJPSAyNywNCiAgICAgICAg
VlRfQ0FSUkFZCT0gMjgsDQogICAgICAgIFZUX1VTRVJERUZJTkVECT0gMjksDQogICAgICAgIFZU
X0xQU1RSCT0gMzAsDQogICAgICAgIFZUX0xQV1NUUgk9IDMxLA0KICAgICAgICBWVF9SRUNPUkQJ
PSAzNiwNCiAgICAgICAgVlRfSU5UX1BUUgk9IDM3LA0KICAgICAgICBWVF9VSU5UX1BUUgk9IDM4
LA0KICAgICAgICBWVF9GSUxFVElNRQk9IDY0LA0KICAgICAgICBWVF9CTE9CCT0gNjUsDQogICAg
ICAgIFZUX1NUUkVBTQk9IDY2LA0KICAgICAgICBWVF9TVE9SQUdFCT0gNjcsDQogICAgICAgIFZU
X1NUUkVBTUVEX09CSkVDVAk9IDY4LA0KICAgICAgICBWVF9TVE9SRURfT0JKRUNUCT0gNjksDQog
ICAgICAgIFZUX0JMT0JfT0JKRUNUCT0gNzAsDQogICAgICAgIFZUX0NGCT0gNzEsDQogICAgICAg
IFZUX0NMU0lECT0gNzIsDQogICAgICAgIFZUX1ZFUlNJT05FRF9TVFJFQU0JPSA3MywNCiAgICAg
ICAgVlRfQlNUUl9CTE9CCT0gMHhmZmYsDQogICAgICAgIFZUX1ZFQ1RPUgk9IDB4MTAwMCwNCiAg
ICAgICAgVlRfQVJSQVkJPSAweDIwMDAsDQogICAgICAgIFZUX0JZUkVGCT0gMHg0MDAwLA0KICAg
ICAgICBWVF9SRVNFUlZFRAk9IDB4ODAwMCwNCiAgICAgICAgVlRfSUxMRUdBTAk9IDB4ZmZmZiwN
CiAgICAgICAgVlRfSUxMRUdBTE1BU0tFRAk9IDB4ZmZmLA0KICAgICAgICBWVF9UWVBFTUFTSwk9
IDB4ZmZmDQogICAgfSA7DQp0eXBlZGVmIFVMT05HIFBST1BJRDsNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF90YWdwcm9wZXJ0eWtleQ0KICAgIHsNCiAgICBHVUlEIGZtdGlkOw0KICAgIERXT1JEIHBp
ZDsNCiAgICB9IAlQUk9QRVJUWUtFWTsNCg0KI2xpbmUgODkxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0
eXBlcy5oIg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ1NQTEFURk9STQ0KICAgIHsNCiAgICBEV09SRCBk
d1BsYXRmb3JtSWQ7DQogICAgRFdPUkQgZHdWZXJzaW9uSGk7DQogICAgRFdPUkQgZHdWZXJzaW9u
TG87DQogICAgRFdPUkQgZHdQcm9jZXNzb3JBcmNoOw0KICAgIH0gCUNTUExBVEZPUk07DQoNCnR5
cGVkZWYgc3RydWN0IHRhZ1FVRVJZQ09OVEVYVA0KICAgIHsNCiAgICBEV09SRCBkd0NvbnRleHQ7
DQogICAgQ1NQTEFURk9STSBQbGF0Zm9ybTsNCiAgICBMQ0lEIExvY2FsZTsNCiAgICBEV09SRCBk
d1ZlcnNpb25IaTsNCiAgICBEV09SRCBkd1ZlcnNpb25MbzsNCiAgICB9IAlRVUVSWUNPTlRFWFQ7
DQoNCnR5cGVkZWYgIA0KZW51bSB0YWdUWVNQRUMNCiAgICB7DQogICAgICAgIFRZU1BFQ19DTFNJ
RAk9IDAsDQogICAgICAgIFRZU1BFQ19GSUxFRVhUCT0gKCBUWVNQRUNfQ0xTSUQgKyAxICkgLA0K
ICAgICAgICBUWVNQRUNfTUlNRVRZUEUJPSAoIFRZU1BFQ19GSUxFRVhUICsgMSApICwNCiAgICAg
ICAgVFlTUEVDX0ZJTEVOQU1FCT0gKCBUWVNQRUNfTUlNRVRZUEUgKyAxICkgLA0KICAgICAgICBU
WVNQRUNfUFJPR0lECT0gKCBUWVNQRUNfRklMRU5BTUUgKyAxICkgLA0KICAgICAgICBUWVNQRUNf
UEFDS0FHRU5BTUUJPSAoIFRZU1BFQ19QUk9HSUQgKyAxICkgLA0KICAgICAgICBUWVNQRUNfT0JK
RUNUSUQJPSAoIFRZU1BFQ19QQUNLQUdFTkFNRSArIDEgKSANCiAgICB9IAlUWVNQRUM7DQoNCnR5
cGVkZWYgIHN0cnVjdCBfX01JRExfX19NSURMX2l0Zl93dHlwZXNfMDAwMF8wMDAxXzAwMDENCiAg
ICB7DQogICAgRFdPUkQgdHlzcGVjOw0KICAgICAgdW5pb24gX19NSURMX19fTUlETF9pdGZfd3R5
cGVzXzAwMDBfMDAwMV8wMDA1DQogICAgICAgIHsNCiAgICAgICAgIENMU0lEIGNsc2lkOw0KICAg
ICAgICAgTFBPTEVTVFIgcEZpbGVFeHQ7DQogICAgICAgICBMUE9MRVNUUiBwTWltZVR5cGU7DQog
ICAgICAgICBMUE9MRVNUUiBwUHJvZ0lkOw0KICAgICAgICAgTFBPTEVTVFIgcEZpbGVOYW1lOw0K
ICAgICAgICAgc3RydWN0IA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgTFBPTEVTVFIgcFBh
Y2thZ2VOYW1lOw0KICAgICAgICAgICAgR1VJRCBQb2xpY3lJZDsNCiAgICAgICAgICAgIH0gCUJ5
TmFtZTsNCiAgICAgICAgIHN0cnVjdCANCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIEdVSUQg
T2JqZWN0SWQ7DQogICAgICAgICAgICBHVUlEIFBvbGljeUlkOw0KICAgICAgICAgICAgfSAJQnlP
YmplY3RJZDsNCiAgICAgICAgfSAJdGFnZ2VkX3VuaW9uOw0KICAgIH0gCXVDTFNTUEVDOw0KDQoN
CiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSA5NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcd3R5cGVz
LmgiDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl93dHlwZXNfMDAwMF8wMDAx
X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3d0eXBlc18w
MDAwXzAwMDFfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQoNCn0NCiNsaW5lIDk1OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcc2hhcmVkXFx3dHlwZXMuaCINCg0KI2xpbmUgOTYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHd0eXBl
cy5oIg0KDQoNCiNsaW5lIDY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdW5rbnduLmgiDQoNCg0KZXh0ZXJuICJD
InsNCiNsaW5lIDY5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdW5rbnduLmgiDQoNCg0KDQogDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSA4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVua253bi5oIg0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoN
CmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdW5rbnduXzAwMDBfMDAwMF92MF8wX2Nf
aWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91bmtud25fMDAwMF8wMDAw
X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1bmtud24uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQ
Q19JRl9IQU5ETEUgX19NSURMX2l0Zl91bmtud25fMDAwMF8wMDAxX3YwXzBfY19pZnNwZWM7DQpl
eHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3Vua253bl8wMDAwXzAwMDFfdjBfMF9zX2lm
c3BlYzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KI2xpbmUgNDE2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdW5rbnduLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRp
b24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBf
X01JRExfaXRmX3Vua253bl8wMDAwXzAwMDJfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZf
SEFORExFIF9fTUlETF9pdGZfdW5rbnduXzAwMDBfMDAwMl92MF8wX3NfaWZzcGVjOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQojbGluZSA1NTUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1bmtu
d24uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURM
X2l0Zl91bmtud25fMDAwMF8wMDAzX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRM
RSBfX01JRExfaXRmX3Vua253bl8wMDAwXzAwMDNfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCiBIUkVT
VUxUIF9fc3RkY2FsbCBJQ2xhc3NGYWN0b3J5X0NyZWF0ZUluc3RhbmNlX1Byb3h5KCANCiAgICBJ
Q2xhc3NGYWN0b3J5ICogVGhpcywNCiAgICAgDQogICAgICAgSVVua25vd24gKnBVbmtPdXRlciwN
CiAgICAgDQogICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgDQogICAgICB2b2lkICoqcHB2
T2JqZWN0KTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUNsYXNzRmFjdG9yeV9DcmVhdGVJbnN0
YW5jZV9TdHViKCANCiAgICAgIElDbGFzc0ZhY3RvcnkgKiBUaGlzLA0KICAgICAgIGNvbnN0IElJ
RCAmIHJpaWQsDQogICAgICAgSVVua25vd24gKipwcHZPYmplY3QpOw0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSUNsYXNzRmFjdG9yeV9Mb2NrU2VydmVyX1Byb3h5KCANCiAgICBJQ2xhc3NGYWN0b3J5
ICogVGhpcywNCiAgICAgQk9PTCBmTG9jayk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElDbGFz
c0ZhY3RvcnlfTG9ja1NlcnZlcl9TdHViKCANCiAgICAgIElDbGFzc0ZhY3RvcnkgKiBUaGlzLA0K
ICAgICBCT09MIGZMb2NrKTsNCg0KDQoNCg0KDQoNCn0NCiNsaW5lIDU5NCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHVua253bi5oIg0KDQojbGluZSA1OTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1bmtud24uaCINCg0KDQojbGlu
ZSA3MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQpleHRlcm4gIkMiew0KI2xpbmUgNzI3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNzQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KI2xpbmUgNzQ2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2JqaWRsLmgiDQoNCg0KI2xpbmUgNzQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoN
Cg0KI2xpbmUgNzUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSB3
YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDc2MCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkNCiNs
aW5lIDc2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDc2
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NzYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQojbGluZSA3NzkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGwuaCINCg0KDQojbGluZSA3ODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQojbGluZSA3
ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVz
aCkNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgNzk2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjAxKQ0KI2xpbmUg
Nzk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgODAxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgd2FybmluZyhwb3ApDQoNCg0KI2xpbmUgODE0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0K
I2xpbmUgODE0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVy
biBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA1M192MF8wX2NfaWZzcGVj
Ow0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxfMDAwMF8wMDUzX3YwXzBf
c19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJTWFsbG9jU3B5ICpMUE1BTExPQ1NQ
WTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSU1hbGxvY1NweTsNCg0KDQogICAgDQog
ICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAwMWQtMDAwMC0wMDAwLUMwMDAtMDAwMDAw
MDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU1hbGxvY1NweSA6IHB1YmxpYyBJ
VW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgU0laRV9UIF9fc3Rk
Y2FsbCBQcmVBbGxvYyggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBTSVpFX1QgY2JS
ZXF1ZXN0KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIHZvaWQgKl9fc3RkY2FsbCBQ
b3N0QWxsb2MoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqcEFjdHVhbCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCB2b2lkICpfX3N0ZGNhbGwgUHJlRnJlZSgg
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICB2b2lkICpwUmVxdWVzdCwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIEJPT0wgZlNweWVkKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsIHZvaWQgX19zdGRjYWxsIFBvc3RGcmVlKCANCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIEJPT0wgZlNweWVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIFNJ
WkVfVCBfX3N0ZGNhbGwgUHJlUmVhbGxvYyggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICB2b2lkICpwUmVxdWVzdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFNJWkVfVCBj
YlJlcXVlc3QsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIHZvaWQgKipwcE5ld1JlcXVl
c3QsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBCT09MIGZTcHllZCkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCB2b2lkICpfX3N0ZGNhbGwgUG9zdFJlYWxsb2MoIA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqcEFjdHVhbCwNCiAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgIEJPT0wgZlNweWVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIHZvaWQgKl9fc3RkY2FsbCBQcmVHZXRTaXplKCANCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIHZvaWQgKnBSZXF1ZXN0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgQk9P
TCBmU3B5ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgU0laRV9UIF9fc3RkY2Fs
bCBQb3N0R2V0U2l6ZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBTSVpFX1QgY2JB
Y3R1YWwsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBCT09MIGZTcHllZCkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCB2b2lkICpfX3N0ZGNhbGwgUHJlRGlkQWxsb2MoIA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqcFJlcXVlc3QsDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICBCT09MIGZTcHllZCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBpbnQgX19zdGRjYWxsIFBvc3REaWRBbGxvYyggDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICB2b2lkICpwUmVxdWVzdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IEJPT0wgZlNweWVkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgaW50IGZBY3R1YWwp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgdm9pZCBfX3N0ZGNhbGwgUHJlSGVhcE1p
bmltaXplKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIHZvaWQgX19zdGRj
YWxsIFBvc3RIZWFwTWluaW1pemUoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICAN
CiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg0MDIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvYmppZGwuaCINCg0KDQoNCg0KI2xpbmUgODQwNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0K
DQoNCg0KIA0KDQojbGluZSA4NDEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0
Zl9vYmppZGxfMDAwMF8wMDU0X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBf
X01JRExfaXRmX29iamlkbF8wMDAwXzAwNTRfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoN
CnR5cGVkZWYgICAgIElCaW5kQ3R4ICpMUEJDOw0KDQp0eXBlZGVmICAgICBJQmluZEN0eCAqTFBC
SU5EQ1RYOw0KDQoNCiAgICB0eXBlZGVmICAgc3RydWN0IHRhZ0JJTkRfT1BUUyB7DQogICAgRFdP
UkQgICAgICAgICAgIGNiU3RydWN0Ow0KICAgIERXT1JEICAgICAgICAgICBncmZGbGFnczsNCiAg
ICBEV09SRCAgICAgICAgICAgZ3JmTW9kZTsNCiAgICBEV09SRCAgICAgICAgICAgZHdUaWNrQ291
bnREZWFkbGluZTsNCiAgICB9IEJJTkRfT1BUUywgKiBMUEJJTkRfT1BUUzsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA4NDUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCiAgICB0eXBl
ZGVmIHN0cnVjdCB0YWdCSU5EX09QVFMyIDogdGFnQklORF9PUFRTIHsNCiAgICBEV09SRCAgICAg
ICAgICAgZHdUcmFja0ZsYWdzOw0KICAgIERXT1JEICAgICAgICAgICBkd0NsYXNzQ29udGV4dDsN
CiAgICBMQ0lEICAgICAgICAgICAgbG9jYWxlOw0KICAgIENPU0VSVkVSSU5GTyAqICBwU2VydmVy
SW5mbzsNCiAgICB9IEJJTkRfT1BUUzIsICogTFBCSU5EX09QVFMyOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NDc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCiAg
ICB0eXBlZGVmIHN0cnVjdCB0YWdCSU5EX09QVFMzIDogdGFnQklORF9PUFRTMiB7DQogICBIV05E
ICAgICAgICAgICBod25kOw0KICAgIH0gQklORF9PUFRTMywgKiBMUEJJTkRfT1BUUzM7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg0OTUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGwuaCINCnR5cGVkZWYgDQplbnVtIHRhZ0JJTkRfRkxBR1MNCiAgICB7DQogICAgICAgIEJJTkRf
TUFZQk9USEVSVVNFUgk9IDEsDQogICAgICAgIEJJTkRfSlVTVFRFU1RFWElTVEVOQ0UJPSAyDQog
ICAgfSAJQklORF9GTEFHUzsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUJpbmRDdHg7
DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDBlLTAwMDAtMDAw
MC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElCaW5kQ3R4
IDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBSZWdpc3Rlck9iamVjdEJvdW5kKCANCiAgICAgICAgICAgICAgIElV
bmtub3duICpwdW5rKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIFJldm9rZU9iamVjdEJvdW5kKCANCiAgICAgICAgICAgICAgIElVbmtub3duICpwdW5r
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlbGVh
c2VCb3VuZE9iamVjdHMoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIFNldEJpbmRPcHRpb25zKCANCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIEJJTkRfT1BUUyAqcGJpbmRvcHRzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRCaW5kT3B0aW9ucyggDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICBCSU5EX09QVFMgKnBiaW5kb3B0cykgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRSdW5uaW5nT2JqZWN0VGFibGUoIA0KICAg
ICAgICAgICAgICAgSVJ1bm5pbmdPYmplY3RUYWJsZSAqKnBwcm90KSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlZ2lzdGVyT2JqZWN0UGFyYW0oIA0K
ICAgICAgICAgICAgICAgTFBPTEVTVFIgcHN6S2V5LA0KICAgICAgICAgICAgICAgSVVua25vd24g
KnB1bmspID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
R2V0T2JqZWN0UGFyYW0oIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgcHN6S2V5LA0KICAgICAg
ICAgICAgICAgSVVua25vd24gKipwcHVuaykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBFbnVtT2JqZWN0UGFyYW0oIA0KICAgICAgICAgICAgICAgSUVu
dW1TdHJpbmcgKipwcGVudW0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgUmV2b2tlT2JqZWN0UGFyYW0oIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIg
cHN6S2V5KSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4
NjY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJp
bmRDdHhfUmVtb3RlU2V0QmluZE9wdGlvbnNfUHJveHkoIA0KICAgICAgSUJpbmRDdHggKiBUaGlz
LA0KICAgICAgIEJJTkRfT1BUUzIgKnBiaW5kb3B0cyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUJp
bmRDdHhfUmVtb3RlU2V0QmluZE9wdGlvbnNfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhp
cywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENf
TUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJQmluZEN0eF9SZW1vdGVHZXRCaW5kT3B0aW9uc19Qcm94eSggDQog
ICAgICBJQmluZEN0eCAqIFRoaXMsDQogICAgICAgQklORF9PUFRTMiAqcGJpbmRvcHRzKTsNCg0K
DQp2b2lkIF9fc3RkY2FsbCBJQmluZEN0eF9SZW1vdGVHZXRCaW5kT3B0aW9uc19TdHViKA0KICAg
IElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5u
ZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bk
d1N0dWJQaGFzZSk7DQoNCg0KDQojbGluZSA4Njk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoN
Cg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElFbnVtTW9uaWtlciAqTFBFTlVNTU9OSUtFUjsN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUVudW1Nb25pa2VyOw0KDQoNCiAgICANCiAg
ICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDEwMi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAw
MDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJRW51bU1vbmlrZXIgOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9f
c3RkY2FsbCBOZXh0KCANCiAgICAgICAgICAgICBVTE9ORyBjZWx0LA0KICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgSU1vbmlrZXIgKipyZ2VsdCwNCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2tpcCggDQogICAgICAgICAgICAgVUxPTkcgY2VsdCkgPSAw
Ow0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBSZXNldCggdm9p
ZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDbG9u
ZSggDQogICAgICAgICAgICAgICBJRW51bU1vbmlrZXIgKipwcGVudW0pID0gMDsNCiAgICAgICAg
DQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDg4MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCiBIUkVTVUxUIF9fc3Rk
Y2FsbCBJRW51bU1vbmlrZXJfUmVtb3RlTmV4dF9Qcm94eSggDQogICAgICBJRW51bU1vbmlrZXIg
KiBUaGlzLA0KICAgICBVTE9ORyBjZWx0LA0KICAgICAgIElNb25pa2VyICoqcmdlbHQsDQogICAg
ICAgVUxPTkcgKnBjZWx0RmV0Y2hlZCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUVudW1Nb25pa2Vy
X1JlbW90ZU5leHRfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hh
bm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01l
c3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCg0KI2xpbmUgODgyNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KIA0KDQojbGluZSA4ODMyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2JqaWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1p
bHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9p
dGZfb2JqaWRsXzAwMDBfMDA1Nl92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUg
X19NSURMX2l0Zl9vYmppZGxfMDAwMF8wMDU2X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0K
DQp0eXBlZGVmICAgICBJUnVubmFibGVPYmplY3QgKkxQUlVOTkFCTEVPQkpFQ1Q7DQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lSdW5uYWJsZU9iamVjdDsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMjYtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVJ1bm5hYmxlT2JqZWN0IDogcHVibGljIElV
bmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBHZXRSdW5uaW5nQ2xhc3MoIA0KICAgICAgICAgICAgICAgTFBDTFNJRCBscENsc2lkKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJ1biggDQog
ICAgICAgICAgICAgICBMUEJJTkRDVFggcGJjKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsICBCT09MIF9fc3RkY2FsbCBJc1J1bm5pbmcoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgTG9ja1J1bm5pbmcoIA0KICAgICAgICAgICAg
IEJPT0wgZkxvY2ssDQogICAgICAgICAgICAgQk9PTCBmTGFzdFVubG9ja0Nsb3NlcykgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRDb250YWluZWRP
YmplY3QoIA0KICAgICAgICAgICAgIEJPT0wgZkNvbnRhaW5lZCkgPSAwOw0KICAgICAgICANCiAg
ICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA4OTU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogSFJFU1VMVCBf
X3N0ZGNhbGwgSVJ1bm5hYmxlT2JqZWN0X1JlbW90ZUlzUnVubmluZ19Qcm94eSggDQogICAgICBJ
UnVubmFibGVPYmplY3QgKiBUaGlzKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJUnVubmFibGVPYmpl
Y3RfUmVtb3RlSXNSdW5uaW5nX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAg
SVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0Ug
X3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDg5
NzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAg
SVJ1bm5pbmdPYmplY3RUYWJsZSAqTFBSVU5OSU5HT0JKRUNUVEFCTEU7DQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBJSUQgSUlEX0lSdW5uaW5nT2JqZWN0VGFibGU7DQoNCg0KICAgIA0KICAgIHN0cnVj
dCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDEwLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIp
KSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElSdW5uaW5nT2JqZWN0VGFibGUgOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIFJlZ2lzdGVyKCANCiAgICAgICAgICAgICBEV09SRCBncmZGbGFncywNCiAgICAgICAg
ICAgICAgIElVbmtub3duICpwdW5rT2JqZWN0LA0KICAgICAgICAgICAgICAgSU1vbmlrZXIgKnBt
a09iamVjdE5hbWUsDQogICAgICAgICAgICAgICBEV09SRCAqcGR3UmVnaXN0ZXIpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmV2b2tlKCANCiAgICAg
ICAgICAgICBEV09SRCBkd1JlZ2lzdGVyKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIElzUnVubmluZyggDQogICAgICAgICAgICAgICBJTW9uaWtlciAq
cG1rT2JqZWN0TmFtZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBHZXRPYmplY3RXKCANCiAgICAgICAgICAgICAgIElNb25pa2VyICpwbWtPYmplY3RO
YW1lLA0KICAgICAgICAgICAgICAgSVVua25vd24gKipwcHVua09iamVjdCkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBOb3RlQ2hhbmdlVGltZSggDQog
ICAgICAgICAgICAgRFdPUkQgZHdSZWdpc3RlciwNCiAgICAgICAgICAgICAgIEZJTEVUSU1FICpw
ZmlsZXRpbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgR2V0VGltZU9mTGFzdENoYW5nZSggDQogICAgICAgICAgICAgICBJTW9uaWtlciAqcG1rT2Jq
ZWN0TmFtZSwNCiAgICAgICAgICAgICAgIEZJTEVUSU1FICpwZmlsZXRpbWUpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRW51bVJ1bm5pbmcoIA0KICAg
ICAgICAgICAgICAgSUVudW1Nb25pa2VyICoqcHBlbnVtTW9uaWtlcikgPSAwOw0KICAgICAgICAN
CiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTEy
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSA5MTI1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcb2JqaWRsLmgiDQoNCg0KDQogDQoNCiNsaW5lIDkxMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwu
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hB
TkRMRSBfX01JRExfaXRmX29iamlkbF8wMDAwXzAwNThfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBS
UENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA1OF92MF8wX3NfaWZzcGVjOw0K
DQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSVBlcnNpc3QgKkxQUEVSU0lTVDsNCg0KDQpleHRl
cm4gIkMiIGNvbnN0IElJRCBJSURfSVBlcnNpc3Q7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjAwMDAwMTBjLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQZXJzaXN0IDogcHVibGljIElVbmtub3duDQogICAgew0K
ICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRDbGFzc0lE
KCANCiAgICAgICAgICAgICAgIENMU0lEICpwQ2xhc3NJRCkgPSAwOw0KICAgICAgICANCiAgICB9
Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgOTIxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSA5MjE5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElQ
ZXJzaXN0U3RyZWFtICpMUFBFUlNJU1RTVFJFQU07DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQg
SUlEX0lQZXJzaXN0U3RyZWFtOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlk
KCIwMDAwMDEwOS0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0
YWJsZSkNCiAgICBJUGVyc2lzdFN0cmVhbSA6IHB1YmxpYyBJUGVyc2lzdA0KICAgIHsNCiAgICBw
dWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgSXNEaXJ0eSggdm9pZCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBMb2FkKCAN
CiAgICAgICAgICAgICAgIElTdHJlYW0gKnBTdG0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2F2ZSggDQogICAgICAgICAgICAgICBJU3RyZWFtICpw
U3RtLA0KICAgICAgICAgICAgIEJPT0wgZkNsZWFyRGlydHkpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U2l6ZU1heCggDQogICAgICAgICAgICAg
ICBVTEFSR0VfSU5URUdFUiAqcGNiU2l6ZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDkzMzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KI2xpbmUgOTMzOSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJTW9uaWtlciAq
TFBNT05JS0VSOw0KDQp0eXBlZGVmIA0KZW51bSB0YWdNS1NZUw0KICAgIHsNCiAgICAgICAgTUtT
WVNfTk9ORQk9IDAsDQogICAgICAgIE1LU1lTX0dFTkVSSUNDT01QT1NJVEUJPSAxLA0KICAgICAg
ICBNS1NZU19GSUxFTU9OSUtFUgk9IDIsDQogICAgICAgIE1LU1lTX0FOVElNT05JS0VSCT0gMywN
CiAgICAgICAgTUtTWVNfSVRFTU1PTklLRVIJPSA0LA0KICAgICAgICBNS1NZU19QT0lOVEVSTU9O
SUtFUgk9IDUsDQogICAgICAgIE1LU1lTX0NMQVNTTU9OSUtFUgk9IDcsDQogICAgICAgIE1LU1lT
X09CSlJFRk1PTklLRVIJPSA4LA0KICAgICAgICBNS1NZU19TRVNTSU9OTU9OSUtFUgk9IDksDQog
ICAgICAgIE1LU1lTX0xVQU1PTklLRVIJPSAxMA0KICAgIH0gCU1LU1lTOw0KDQp0eXBlZGVmICAN
CmVudW0gdGFnTUtSRURVQ0UNCiAgICB7DQogICAgICAgIE1LUlJFRFVDRV9PTkUJPSAoIDMgPDwg
MTYgKSAsDQogICAgICAgIE1LUlJFRFVDRV9UT1VTRVIJPSAoIDIgPDwgMTYgKSAsDQogICAgICAg
IE1LUlJFRFVDRV9USFJPVUdIVVNFUgk9ICggMSA8PCAxNiApICwNCiAgICAgICAgTUtSUkVEVUNF
X0FMTAk9IDANCiAgICB9IAlNS1JSRURVQ0U7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlE
X0lNb25pa2VyOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDAw
Zi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAg
ICBJTW9uaWtlciA6IHB1YmxpYyBJUGVyc2lzdFN0cmVhbQ0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEJpbmRUb09iamVjdCggDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBJQmluZEN0eCAqcGJjLA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgSU1vbmlrZXIgKnBta1RvTGVmdCwNCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIGNvbnN0IElJRCAmIHJpaWRSZXN1bHQsDQogICAgICAgICAgICAgDQogICAgICAgICAg
ICAgIHZvaWQgKipwcHZSZXN1bHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIEJpbmRUb1N0b3JhZ2UoIA0KICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgSUJpbmRDdHggKnBiYywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIElNb25p
a2VyICpwbWtUb0xlZnQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBJSUQg
JiByaWlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICB2b2lkICoqcHB2T2JqKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlZHVjZSggDQog
ICAgICAgICAgICAgICBJQmluZEN0eCAqcGJjLA0KICAgICAgICAgICAgIERXT1JEIGR3UmVkdWNl
SG93RmFyLA0KICAgICAgICAgICAgICAgSU1vbmlrZXIgKipwcG1rVG9MZWZ0LA0KICAgICAgICAg
ICAgICAgSU1vbmlrZXIgKipwcG1rUmVkdWNlZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDb21wb3NlV2l0aCggDQogICAgICAgICAgICAgICBJTW9u
aWtlciAqcG1rUmlnaHQsDQogICAgICAgICAgICAgQk9PTCBmT25seUlmTm90R2VuZXJpYywNCiAg
ICAgICAgICAgICAgIElNb25pa2VyICoqcHBta0NvbXBvc2l0ZSkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBFbnVtKCANCiAgICAgICAgICAgICBCT09M
IGZGb3J3YXJkLA0KICAgICAgICAgICAgICAgSUVudW1Nb25pa2VyICoqcHBlbnVtTW9uaWtlcikg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBJc0VxdWFs
KCANCiAgICAgICAgICAgICAgIElNb25pa2VyICpwbWtPdGhlck1vbmlrZXIpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgSGFzaCggDQogICAgICAgICAg
ICAgICBEV09SRCAqcGR3SGFzaCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBJc1J1bm5pbmcoIA0KICAgICAgICAgICAgICAgSUJpbmRDdHggKnBiYywN
CiAgICAgICAgICAgICAgIElNb25pa2VyICpwbWtUb0xlZnQsDQogICAgICAgICAgICAgICBJTW9u
aWtlciAqcG1rTmV3bHlSdW5uaW5nKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIEdldFRpbWVPZkxhc3RDaGFuZ2UoIA0KICAgICAgICAgICAgICAgSUJp
bmRDdHggKnBiYywNCiAgICAgICAgICAgICAgIElNb25pa2VyICpwbWtUb0xlZnQsDQogICAgICAg
ICAgICAgICBGSUxFVElNRSAqcEZpbGVUaW1lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIEludmVyc2UoIA0KICAgICAgICAgICAgICAgSU1vbmlrZXIg
KipwcG1rKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IENvbW1vblByZWZpeFdpdGgoIA0KICAgICAgICAgICAgICAgSU1vbmlrZXIgKnBta090aGVyLA0K
ICAgICAgICAgICAgICAgSU1vbmlrZXIgKipwcG1rUHJlZml4KSA9IDA7DQogICAgICAgIA0KICAg
ICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlbGF0aXZlUGF0aFRvKCANCiAgICAgICAg
ICAgICAgIElNb25pa2VyICpwbWtPdGhlciwNCiAgICAgICAgICAgICAgIElNb25pa2VyICoqcHBt
a1JlbFBhdGgpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgR2V0RGlzcGxheU5hbWUoIA0KICAgICAgICAgICAgICAgSUJpbmRDdHggKnBiYywNCiAgICAg
ICAgICAgICAgIElNb25pa2VyICpwbWtUb0xlZnQsDQogICAgICAgICAgICAgICBMUE9MRVNUUiAq
cHBzekRpc3BsYXlOYW1lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFBhcnNlRGlzcGxheU5hbWUoIA0KICAgICAgICAgICAgICAgSUJpbmRDdHggKnBi
YywNCiAgICAgICAgICAgICAgIElNb25pa2VyICpwbWtUb0xlZnQsDQogICAgICAgICAgICAgICBM
UE9MRVNUUiBwc3pEaXNwbGF5TmFtZSwNCiAgICAgICAgICAgICAgIFVMT05HICpwY2hFYXRlbiwN
CiAgICAgICAgICAgICAgIElNb25pa2VyICoqcHBta091dCkgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBJc1N5c3RlbU1vbmlrZXIoIA0KICAgICAgICAg
ICAgICAgRFdPUkQgKnBkd01rc3lzKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAg
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTY4MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElNb25pa2VyX1JlbW90
ZUJpbmRUb09iamVjdF9Qcm94eSggDQogICAgICBJTW9uaWtlciAqIFRoaXMsDQogICAgICAgSUJp
bmRDdHggKnBiYywNCiAgICAgICBJTW9uaWtlciAqcG1rVG9MZWZ0LA0KICAgICAgIGNvbnN0IElJ
RCAmIHJpaWRSZXN1bHQsDQogICAgICAgSVVua25vd24gKipwcHZSZXN1bHQpOw0KDQoNCnZvaWQg
X19zdGRjYWxsIElNb25pa2VyX1JlbW90ZUJpbmRUb09iamVjdF9TdHViKA0KICAgIElScGNTdHVi
QnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIs
DQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFz
ZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElNb25pa2VyX1JlbW90ZUJpbmRUb1N0b3JhZ2Vf
UHJveHkoIA0KICAgICAgSU1vbmlrZXIgKiBUaGlzLA0KICAgICAgIElCaW5kQ3R4ICpwYmMsDQog
ICAgICAgSU1vbmlrZXIgKnBta1RvTGVmdCwNCiAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAg
ICAgIElVbmtub3duICoqcHB2T2JqKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJTW9uaWtlcl9SZW1v
dGVCaW5kVG9TdG9yYWdlX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJw
Y0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BS
cGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDk3MTYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCiANCg0KI2xpbmUgOTcyMiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG9iamlkbC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIERlc2t0b3Ag
RmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01J
RExfaXRmX29iamlkbF8wMDAwXzAwNjFfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFO
RExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA2MV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoN
CiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVJPVERhdGE7DQoNCg0KICAgIA0KICAg
IHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoImYyOWY2YmMwLTUwMjEtMTFjZS1hYTE1LTAwMDA2OTAx
MjkzZiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElST1REYXRhIDogcHVibGljIElVbmtu
b3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRDb21wYXJpc29uRGF0YSggDQogICAgICAgICAgICAgICBieXRlICpwYkRhdGEsDQogICAg
ICAgICAgICAgVUxPTkcgY2JNYXgsDQogICAgICAgICAgICAgICBVTE9ORyAqcGNiRGF0YSkgPSAw
Ow0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk4MDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwu
aCINCg0KDQoNCg0KI2xpbmUgOTgxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KIA0K
DQojbGluZSA5ODE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
I3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdh
bWVzIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxf
MDAwMF8wMDYyX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X29iamlkbF8wMDAwXzAwNjJfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYg
ICAgIElFbnVtU1RBVFNURyAqTFBFTlVNU1RBVFNURzsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJ
RCBJSURfSUVudW1TVEFUU1RHOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlk
KCIwMDAwMDAwZC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0
YWJsZSkNCiAgICBJRW51bVNUQVRTVEcgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVi
bGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBOZXh0KCANCiAgICAgICAg
ICAgICBVTE9ORyBjZWx0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgU1RBVFNURyAq
cmdlbHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVk
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNraXAo
IA0KICAgICAgICAgICAgIFVMT05HIGNlbHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVzZXQoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ2xvbmUoIA0KICAgICAgICAgICAgICAgSUVudW1T
VEFUU1RHICoqcHBlbnVtKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5OTM3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2JqaWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1TVEFUU1RHX1JlbW90ZU5l
eHRfUHJveHkoIA0KICAgICAgSUVudW1TVEFUU1RHICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwN
CiAgICAgICBTVEFUU1RHICpyZ2VsdCwNCiAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0K
DQp2b2lkIF9fc3RkY2FsbCBJRW51bVNUQVRTVEdfUmVtb3RlTmV4dF9TdHViKA0KICAgIElScGNT
dHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZm
ZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQ
aGFzZSk7DQoNCg0KDQojbGluZSA5OTU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoN
Cg0KDQogDQoNCnR5cGVkZWYgICAgIElTdG9yYWdlICpMUFNUT1JBR0U7DQoNCnR5cGVkZWYgc3Ry
dWN0IHRhZ1JlbVNOQg0KICAgIHsNCiAgICBVTE9ORyB1bENudFN0cjsNCiAgICBVTE9ORyB1bENu
dENoYXI7DQogICAgIE9MRUNIQVIgcmdTdHJpbmdbIDEgXTsNCiAgICB9IAlSZW1TTkI7DQoNCnR5
cGVkZWYgICAgIFJlbVNOQiAqd2lyZVNOQjsNCg0KDQp0eXBlZGVmICAgICBMUE9MRVNUUiAqU05C
Ow0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lTdG9yYWdlOw0KDQoNCiAgICANCiAg
ICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDAwYi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAw
MDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJU3RvcmFnZSA6IHB1YmxpYyBJVW5r
bm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgQ3JlYXRlU3RyZWFtKCANCiAgICAgICAgICAgICAgIGNvbnN0IE9MRUNIQVIgKnB3Y3NOYW1l
LA0KICAgICAgICAgICAgIERXT1JEIGdyZk1vZGUsDQogICAgICAgICAgICAgRFdPUkQgcmVzZXJ2
ZWQxLA0KICAgICAgICAgICAgIERXT1JEIHJlc2VydmVkMiwNCiAgICAgICAgICAgICAgIElTdHJl
YW0gKipwcHN0bSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0
ZGNhbGwgT3BlblN0cmVhbSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCBP
TEVDSEFSICpwd2NzTmFtZSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIHZvaWQgKnJl
c2VydmVkMSwNCiAgICAgICAgICAgICBEV09SRCBncmZNb2RlLA0KICAgICAgICAgICAgIERXT1JE
IHJlc2VydmVkMiwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgSVN0cmVhbSAqKnBwc3Rt
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENyZWF0
ZVN0b3JhZ2UoIA0KICAgICAgICAgICAgICAgY29uc3QgT0xFQ0hBUiAqcHdjc05hbWUsDQogICAg
ICAgICAgICAgRFdPUkQgZ3JmTW9kZSwNCiAgICAgICAgICAgICBEV09SRCByZXNlcnZlZDEsDQog
ICAgICAgICAgICAgRFdPUkQgcmVzZXJ2ZWQyLA0KICAgICAgICAgICAgICAgSVN0b3JhZ2UgKipw
cHN0ZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBP
cGVuU3RvcmFnZSggDQogICAgICAgICAgICAgICBjb25zdCBPTEVDSEFSICpwd2NzTmFtZSwNCiAg
ICAgICAgICAgICAgIElTdG9yYWdlICpwc3RnUHJpb3JpdHksDQogICAgICAgICAgICAgRFdPUkQg
Z3JmTW9kZSwNCiAgICAgICAgICAgICAgIFNOQiBzbmJFeGNsdWRlLA0KICAgICAgICAgICAgIERX
T1JEIHJlc2VydmVkLA0KICAgICAgICAgICAgICAgSVN0b3JhZ2UgKipwcHN0ZykgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgQ29weVRvKCANCiAgICAg
ICAgICAgICBEV09SRCBjaWlkRXhjbHVkZSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IGNvbnN0IElJRCAqcmdpaWRFeGNsdWRlLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
U05CIHNuYkV4Y2x1ZGUsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBJU3RvcmFnZSAq
cHN0Z0Rlc3QpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgTW92ZUVsZW1lbnRUbyggDQogICAgICAgICAgICAgICBjb25zdCBPTEVDSEFSICpwd2NzTmFt
ZSwNCiAgICAgICAgICAgICAgIElTdG9yYWdlICpwc3RnRGVzdCwNCiAgICAgICAgICAgICAgIGNv
bnN0IE9MRUNIQVIgKnB3Y3NOZXdOYW1lLA0KICAgICAgICAgICAgIERXT1JEIGdyZkZsYWdzKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENvbW1pdCgg
DQogICAgICAgICAgICAgRFdPUkQgZ3JmQ29tbWl0RmxhZ3MpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmV2ZXJ0KCB2b2lkKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBFbnVtRWxlbWVudHMoIA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgcmVzZXJ2ZWQxLA0KICAgICAgICAgICAg
IA0KICAgICAgICAgICAgICAgdm9pZCAqcmVzZXJ2ZWQyLA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgRFdPUkQgcmVzZXJ2ZWQzLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBJ
RW51bVNUQVRTVEcgKipwcGVudW0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgRGVzdHJveUVsZW1lbnQoIA0KICAgICAgICAgICAgICAgY29uc3QgT0xF
Q0hBUiAqcHdjc05hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgUmVuYW1lRWxlbWVudCggDQogICAgICAgICAgICAgICBjb25zdCBPTEVDSEFSICpw
d2NzT2xkTmFtZSwNCiAgICAgICAgICAgICAgIGNvbnN0IE9MRUNIQVIgKnB3Y3NOZXdOYW1lKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldEVsZW1l
bnRUaW1lcyggDQogICAgICAgICAgICAgICBjb25zdCBPTEVDSEFSICpwd2NzTmFtZSwNCiAgICAg
ICAgICAgICAgIGNvbnN0IEZJTEVUSU1FICpwY3RpbWUsDQogICAgICAgICAgICAgICBjb25zdCBG
SUxFVElNRSAqcGF0aW1lLA0KICAgICAgICAgICAgICAgY29uc3QgRklMRVRJTUUgKnBtdGltZSkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRDbGFz
cyggDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiBjbHNpZCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRTdGF0ZUJpdHMoIA0KICAgICAgICAg
ICAgIERXT1JEIGdyZlN0YXRlQml0cywNCiAgICAgICAgICAgICBEV09SRCBncmZNYXNrKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFN0YXQoIA0KICAg
ICAgICAgICAgICAgU1RBVFNURyAqcHN0YXRzdGcsDQogICAgICAgICAgICAgRFdPUkQgZ3JmU3Rh
dEZsYWcpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTAyNjggIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwu
aCINCg0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJU3RvcmFnZV9SZW1vdGVPcGVuU3RyZWFtX1By
b3h5KCANCiAgICAgIElTdG9yYWdlICogVGhpcywNCiAgICAgICBjb25zdCBPTEVDSEFSICpwd2Nz
TmFtZSwNCiAgICAgVUxPTkcgY2JSZXNlcnZlZDEsDQogICAgICAgYnl0ZSAqcmVzZXJ2ZWQxLA0K
ICAgICBEV09SRCBncmZNb2RlLA0KICAgICBEV09SRCByZXNlcnZlZDIsDQogICAgICAgSVN0cmVh
bSAqKnBwc3RtKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJU3RvcmFnZV9SZW1vdGVPcGVuU3RyZWFt
X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIg
Kl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAg
IERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVN0b3JhZ2Vf
UmVtb3RlQ29weVRvX1Byb3h5KCANCiAgICAgIElTdG9yYWdlICogVGhpcywNCiAgICAgRFdPUkQg
Y2lpZEV4Y2x1ZGUsDQogICAgICAgY29uc3QgSUlEICpyZ2lpZEV4Y2x1ZGUsDQogICAgICAgU05C
IHNuYkV4Y2x1ZGUsDQogICAgICAgSVN0b3JhZ2UgKnBzdGdEZXN0KTsNCg0KDQp2b2lkIF9fc3Rk
Y2FsbCBJU3RvcmFnZV9SZW1vdGVDb3B5VG9fU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhp
cywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENf
TUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJU3RvcmFnZV9SZW1vdGVFbnVtRWxlbWVudHNfUHJveHkoIA0KICAg
ICAgSVN0b3JhZ2UgKiBUaGlzLA0KICAgICBEV09SRCByZXNlcnZlZDEsDQogICAgIFVMT05HIGNi
UmVzZXJ2ZWQyLA0KICAgICAgIGJ5dGUgKnJlc2VydmVkMiwNCiAgICAgRFdPUkQgcmVzZXJ2ZWQz
LA0KICAgICAgIElFbnVtU1RBVFNURyAqKnBwZW51bSk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVN0
b3JhZ2VfUmVtb3RlRW51bUVsZW1lbnRzX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMs
DQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01F
U1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNs
aW5lIDEwMzIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogDQoNCiNsaW5lIDEwMzI3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZf
SEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA2NF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJu
IFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxfMDAwMF8wMDY0X3YwXzBfc19pZnNwZWM7
DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJUGVyc2lzdEZpbGUgKkxQUEVSU0lTVEZJTEU7
DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lQZXJzaXN0RmlsZTsNCg0KDQogICAgDQog
ICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMGItMDAwMC0wMDAwLUMwMDAtMDAwMDAw
MDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVBlcnNpc3RGaWxlIDogcHVibGlj
IElQZXJzaXN0DQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBJc0RpcnR5KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIExvYWQoIA0KICAgICAgICAgICAgICAgTFBDT0xFU1RSIHBzekZpbGVO
YW1lLA0KICAgICAgICAgICAgIERXT1JEIGR3TW9kZSkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTYXZlKCANCiAgICAgICAgICAgICAgIExQQ09MRVNU
UiBwc3pGaWxlTmFtZSwNCiAgICAgICAgICAgICBCT09MIGZSZW1lbWJlcikgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTYXZlQ29tcGxldGVkKCANCiAg
ICAgICAgICAgICAgIExQQ09MRVNUUiBwc3pGaWxlTmFtZSkgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRDdXJGaWxlKCANCiAgICAgICAgICAgICAg
IExQT0xFU1RSICpwcHN6RmlsZU5hbWUpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAg
ICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTA0NjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KI2xp
bmUgMTA0NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRl
ZiAgICAgSVBlcnNpc3RTdG9yYWdlICpMUFBFUlNJU1RTVE9SQUdFOw0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JUGVyc2lzdFN0b3JhZ2U7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjAwMDAwMTBhLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQZXJzaXN0U3RvcmFnZSA6IHB1YmxpYyBJUGVyc2lzdA0K
ICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgSXNE
aXJ0eSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBJbml0TmV3KCANCiAgICAgICAgICAgICAgIElTdG9yYWdlICpwU3RnKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIExvYWQoIA0KICAgICAgICAg
ICAgICAgSVN0b3JhZ2UgKnBTdGcpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgU2F2ZSggDQogICAgICAgICAgICAgICBJU3RvcmFnZSAqcFN0Z1NhdmUs
DQogICAgICAgICAgICAgQk9PTCBmU2FtZUFzTG9hZCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTYXZlQ29tcGxldGVkKCANCiAgICAgICAgICAgICAg
IElTdG9yYWdlICpwU3RnTmV3KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIEhhbmRzT2ZmU3RvcmFnZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9
Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA1OTggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YmppZGwuaCINCg0KDQoNCg0KI2xpbmUgMTA2MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0K
DQoNCiANCg0KI2xpbmUgMTA2MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1p
bHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X29iamlkbF8wMDAwXzAwNjZfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfb2JqaWRsXzAwMDBfMDA2Nl92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0K
dHlwZWRlZiAgICAgSUxvY2tCeXRlcyAqTFBMT0NLQllURVM7DQoNCg0KZXh0ZXJuICJDIiBjb25z
dCBJSUQgSUlEX0lMb2NrQnl0ZXM7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1
aWQoIjAwMDAwMDBhLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5v
dnRhYmxlKQ0KICAgIElMb2NrQnl0ZXMgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVi
bGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBSZWFkQXQoIA0KICAgICAg
ICAgICAgIFVMQVJHRV9JTlRFR0VSIHVsT2Zmc2V0LA0KICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgdm9pZCAqcHYsDQogICAgICAgICAgICAgVUxPTkcgY2IsDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICBVTE9ORyAqcGNiUmVhZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgV3JpdGVBdCggDQogICAgICAgICAgICAgVUxBUkdFX0lO
VEVHRVIgdWxPZmZzZXQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwdiwNCiAgICAgICAgICAgICBVTE9ORyBjYiwNCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIFVMT05HICpwY2JXcml0dGVuKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIEZsdXNoKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldFNpemUoIA0KICAgICAgICAgICAgIFVMQVJHRV9JTlRF
R0VSIGNiKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IExvY2tSZWdpb24oIA0KICAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSIGxpYk9mZnNldCwNCiAg
ICAgICAgICAgICBVTEFSR0VfSU5URUdFUiBjYiwNCiAgICAgICAgICAgICBEV09SRCBkd0xvY2tU
eXBlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFVu
bG9ja1JlZ2lvbiggDQogICAgICAgICAgICAgVUxBUkdFX0lOVEVHRVIgbGliT2Zmc2V0LA0KICAg
ICAgICAgICAgIFVMQVJHRV9JTlRFR0VSIGNiLA0KICAgICAgICAgICAgIERXT1JEIGR3TG9ja1R5
cGUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU3Rh
dCggDQogICAgICAgICAgICAgICBTVEFUU1RHICpwc3RhdHN0ZywNCiAgICAgICAgICAgICBEV09S
RCBncmZTdGF0RmxhZykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNzgwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUxvY2tCeXRlc19SZW1v
dGVSZWFkQXRfUHJveHkoIA0KICAgICAgSUxvY2tCeXRlcyAqIFRoaXMsDQogICAgIFVMQVJHRV9J
TlRFR0VSIHVsT2Zmc2V0LA0KICAgICAgIGJ5dGUgKnB2LA0KICAgICBVTE9ORyBjYiwNCiAgICAg
ICBVTE9ORyAqcGNiUmVhZCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUxvY2tCeXRlc19SZW1vdGVS
ZWFkQXRfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1
ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2Us
DQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJTG9j
a0J5dGVzX1JlbW90ZVdyaXRlQXRfUHJveHkoIA0KICAgICAgSUxvY2tCeXRlcyAqIFRoaXMsDQog
ICAgIFVMQVJHRV9JTlRFR0VSIHVsT2Zmc2V0LA0KICAgICAgIGNvbnN0IGJ5dGUgKnB2LA0KICAg
ICBVTE9ORyBjYiwNCiAgICAgICBVTE9ORyAqcGNiV3JpdHRlbik7DQoNCg0Kdm9pZCBfX3N0ZGNh
bGwgSUxvY2tCeXRlc19SZW1vdGVXcml0ZUF0X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRo
aXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBD
X01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoN
CiNsaW5lIDEwODE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5
cGVkZWYgICAgIElFbnVtRk9STUFURVRDICpMUEVOVU1GT1JNQVRFVEM7DQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnRFZUQVJHRVRERVZJQ0UNCiAgICB7DQogICAgRFdPUkQgdGRTaXplOw0KICAgIFdP
UkQgdGREcml2ZXJOYW1lT2Zmc2V0Ow0KICAgIFdPUkQgdGREZXZpY2VOYW1lT2Zmc2V0Ow0KICAg
IFdPUkQgdGRQb3J0TmFtZU9mZnNldDsNCiAgICBXT1JEIHRkRXh0RGV2bW9kZU9mZnNldDsNCiAg
ICAgQllURSB0ZERhdGFbIDEgXTsNCiAgICB9IAlEVlRBUkdFVERFVklDRTsNCg0KDQp0eXBlZGVm
IENMSVBGT1JNQVQgKkxQQ0xJUEZPUk1BVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnRk9STUFURVRD
DQogICAgew0KICAgIENMSVBGT1JNQVQgY2ZGb3JtYXQ7DQogICAgIERWVEFSR0VUREVWSUNFICpw
dGQ7DQogICAgRFdPUkQgZHdBc3BlY3Q7DQogICAgTE9ORyBsaW5kZXg7DQogICAgRFdPUkQgdHlt
ZWQ7DQogICAgfSAJRk9STUFURVRDOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdGT1JNQVRFVEMgKkxQ
Rk9STUFURVRDOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRW51bUZPUk1BVEVUQzsN
Cg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMDMtMDAwMC0wMDAw
LUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUVudW1GT1JN
QVRFVEMgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0
dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBOZXh0KCANCiAgICAgICAgICAgICBVTE9ORyBjZWx0LA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRk9STUFURVRDICpyZ2VsdCwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2tpcCggDQogICAgICAgICAgICAg
VUxPTkcgY2VsdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBSZXNldCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBDbG9uZSggDQogICAgICAgICAgICAgICBJRW51bUZPUk1BVEVUQyAqKnBwZW51
bSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA5NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0K
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJRW51bUZPUk1BVEVUQ19SZW1vdGVOZXh0X1Byb3h5KCAN
CiAgICAgIElFbnVtRk9STUFURVRDICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgICBG
T1JNQVRFVEMgKnJnZWx0LA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQoNCnZvaWQg
X19zdGRjYWxsIElFbnVtRk9STUFURVRDX1JlbW90ZU5leHRfU3R1YigNCiAgICBJUnBjU3R1YkJ1
ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0K
ICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2Up
Ow0KDQoNCg0KI2xpbmUgMTA5NzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KDQoN
CiANCg0KdHlwZWRlZiAgICAgSUVudW1TVEFUREFUQSAqTFBFTlVNU1RBVERBVEE7DQoNCnR5cGVk
ZWYgDQplbnVtIHRhZ0FEVkYNCiAgICB7DQogICAgICAgIEFEVkZfTk9EQVRBCT0gMSwNCiAgICAg
ICAgQURWRl9QUklNRUZJUlNUCT0gMiwNCiAgICAgICAgQURWRl9PTkxZT05DRQk9IDQsDQogICAg
ICAgIEFEVkZfREFUQU9OU1RPUAk9IDY0LA0KICAgICAgICBBRFZGQ0FDSEVfTk9IQU5ETEVSCT0g
OCwNCiAgICAgICAgQURWRkNBQ0hFX0ZPUkNFQlVJTFRJTgk9IDE2LA0KICAgICAgICBBRFZGQ0FD
SEVfT05TQVZFCT0gMzINCiAgICB9IAlBRFZGOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdTVEFUREFU
QQ0KICAgIHsNCiAgICBGT1JNQVRFVEMgZm9ybWF0ZXRjOw0KICAgIERXT1JEIGFkdmY7DQogICAg
IElBZHZpc2VTaW5rICpwQWR2U2luazsNCiAgICBEV09SRCBkd0Nvbm5lY3Rpb247DQogICAgfSAJ
U1RBVERBVEE7DQoNCnR5cGVkZWYgU1RBVERBVEEgKkxQU1RBVERBVEE7DQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBJSUQgSUlEX0lFbnVtU1RBVERBVEE7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjAwMDAwMTA1LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElFbnVtU1RBVERBVEEgOiBwdWJsaWMgSVVua25vd24NCiAg
ICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBOZXh0
KCANCiAgICAgICAgICAgICBVTE9ORyBjZWx0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgU1RBVERBVEEgKnJnZWx0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcg
KnBjZWx0RmV0Y2hlZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBTa2lwKCANCiAgICAgICAgICAgICBVTE9ORyBjZWx0KSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlc2V0KCB2b2lkKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENsb25lKCANCiAgICAgICAg
ICAgICAgIElFbnVtU1RBVERBVEEgKipwcGVudW0pID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAg
ICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMTA3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1T
VEFUREFUQV9SZW1vdGVOZXh0X1Byb3h5KCANCiAgICAgIElFbnVtU1RBVERBVEEgKiBUaGlzLA0K
ICAgICBVTE9ORyBjZWx0LA0KICAgICAgIFNUQVREQVRBICpyZ2VsdCwNCiAgICAgICBVTE9ORyAq
cGNlbHRGZXRjaGVkKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJRW51bVNUQVREQVRBX1JlbW90ZU5l
eHRfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZl
ciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQog
ICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCg0KI2xpbmUgMTExMjYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvYmppZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSVJvb3RTdG9yYWdlICpM
UFJPT1RTVE9SQUdFOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUm9vdFN0b3JhZ2U7
DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDEyLTAwMDAtMDAw
MC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElSb290U3Rv
cmFnZSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU3dpdGNoVG9GaWxlKCANCiAgICAgICAgICAgICAgIExQT0xF
U1RSIHBzekZpbGUpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMjAzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDExMjA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRs
LmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgSUFkdmlzZVNpbmsgKkxQQURWSVNFU0lOSzsN
Cg0KdHlwZWRlZiAgDQplbnVtIHRhZ1RZTUVEDQogICAgew0KICAgICAgICBUWU1FRF9IR0xPQkFM
CT0gMSwNCiAgICAgICAgVFlNRURfRklMRQk9IDIsDQogICAgICAgIFRZTUVEX0lTVFJFQU0JPSA0
LA0KICAgICAgICBUWU1FRF9JU1RPUkFHRQk9IDgsDQogICAgICAgIFRZTUVEX0dESQk9IDE2LA0K
ICAgICAgICBUWU1FRF9NRlBJQ1QJPSAzMiwNCiAgICAgICAgVFlNRURfRU5ITUYJPSA2NCwNCiAg
ICAgICAgVFlNRURfTlVMTAk9IDANCiAgICB9IAlUWU1FRDsNCg0KDQoNCiNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQ0KI2xpbmUgMTEyMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQyMDApDQojbGluZSAxMTIzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnUmVtU1RHTUVESVVNDQogICAgew0KICAgIERXT1JEIHR5bWVkOw0K
ICAgIERXT1JEIGR3SGFuZGxlVHlwZTsNCiAgICBVTE9ORyBwRGF0YTsNCiAgICBVTE9ORyBwVW5r
Rm9yUmVsZWFzZTsNCiAgICBVTE9ORyBjYkRhdGE7DQogICAgIGJ5dGUgZGF0YVsgMSBdOw0KICAg
IH0gCVJlbVNUR01FRElVTTsNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQoNCg0KI2xpbmUg
MTEyNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCiNsaW5lIDExMjU0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2JqaWRsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdTVEdNRURJVU0NCiAgICB7DQogICAgRFdPUkQgdHltZWQ7DQogICAgIHVuaW9uIA0KICAgICAg
ICB7DQogICAgICAgICBIQklUTUFQIGhCaXRtYXA7DQogICAgICAgICBITUVUQUZJTEVQSUNUIGhN
ZXRhRmlsZVBpY3Q7DQogICAgICAgICBIRU5ITUVUQUZJTEUgaEVuaE1ldGFGaWxlOw0KICAgICAg
ICAgSEdMT0JBTCBoR2xvYmFsOw0KICAgICAgICAgTFBPTEVTVFIgbHBzekZpbGVOYW1lOw0KICAg
ICAgICAgSVN0cmVhbSAqcHN0bTsNCiAgICAgICAgIElTdG9yYWdlICpwc3RnOw0KICAgICAgICAg
ICANCiAgICAgICAgfSAJOw0KICAgICBJVW5rbm93biAqcFVua0ZvclJlbGVhc2U7DQogICAgfSAJ
dVNUR01FRElVTTsNCg0KI2xpbmUgMTEyODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCnR5cGVk
ZWYgc3RydWN0IF9HRElfT0JKRUNUDQogICAgew0KICAgIERXT1JEIE9iamVjdFR5cGU7DQogICAg
ICB1bmlvbiBfX01JRExfSUFkdmlzZVNpbmtfMDAwMg0KICAgICAgICB7DQogICAgICAgICB3aXJl
SEJJVE1BUCBoQml0bWFwOw0KICAgICAgICAgd2lyZUhQQUxFVFRFIGhQYWxldHRlOw0KICAgICAg
ICAgd2lyZUhHTE9CQUwgaEdlbmVyaWM7DQogICAgICAgIH0gCXU7DQogICAgfSAJR0RJX09CSkVD
VDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX3VzZXJTVEdNRURJVU0NCiAgICB7DQogICAgc3RydWN0IF9T
VEdNRURJVU1fVU5JT04NCiAgICAgICAgew0KICAgICAgICBEV09SRCB0eW1lZDsNCiAgICAgICAg
ICB1bmlvbiBfX01JRExfSUFkdmlzZVNpbmtfMDAwMw0KICAgICAgICAgICAgew0KICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgd2lyZUhNRVRBRklMRVBJQ1QgaE1ldGFGaWxlUGljdDsNCiAg
ICAgICAgICAgICB3aXJlSEVOSE1FVEFGSUxFIGhIRW5oTWV0YUZpbGU7DQogICAgICAgICAgICAg
R0RJX09CSkVDVCAqaEdkaUhhbmRsZTsNCiAgICAgICAgICAgICB3aXJlSEdMT0JBTCBoR2xvYmFs
Ow0KICAgICAgICAgICAgIExQT0xFU1RSIGxwc3pGaWxlTmFtZTsNCiAgICAgICAgICAgICBCWVRF
X0JMT0IgKnBzdG07DQogICAgICAgICAgICAgQllURV9CTE9CICpwc3RnOw0KICAgICAgICAgICAg
fSAJdTsNCiAgICAgICAgfSAJOw0KICAgIElVbmtub3duICpwVW5rRm9yUmVsZWFzZTsNCiAgICB9
IAl1c2VyU1RHTUVESVVNOw0KDQp0eXBlZGVmICAgICB1c2VyU1RHTUVESVVNICp3aXJlU1RHTUVE
SVVNOw0KDQp0eXBlZGVmICB1U1RHTUVESVVNIFNUR01FRElVTTsNCg0KdHlwZWRlZiAgICAgdXNl
clNUR01FRElVTSAqd2lyZUFTWU5DX1NUR01FRElVTTsNCg0KdHlwZWRlZiAgU1RHTUVESVVNIEFT
WU5DX1NUR01FRElVTTsNCg0KdHlwZWRlZiBTVEdNRURJVU0gKkxQU1RHTUVESVVNOw0KDQp0eXBl
ZGVmIHN0cnVjdCBfdXNlckZMQUdfU1RHTUVESVVNDQogICAgew0KICAgIExPTkcgQ29udGV4dEZs
YWdzOw0KICAgIExPTkcgZlBhc3NPd25lcnNoaXA7DQogICAgdXNlclNUR01FRElVTSBTdGdtZWQ7
DQogICAgfSAJdXNlckZMQUdfU1RHTUVESVVNOw0KDQp0eXBlZGVmICAgICB1c2VyRkxBR19TVEdN
RURJVU0gKndpcmVGTEFHX1NUR01FRElVTTsNCg0KdHlwZWRlZiAgc3RydWN0IF9GTEFHX1NUR01F
RElVTQ0KICAgIHsNCiAgICBMT05HIENvbnRleHRGbGFnczsNCiAgICBMT05HIGZQYXNzT3duZXJz
aGlwOw0KICAgIFNUR01FRElVTSBTdGdtZWQ7DQogICAgfSAJRkxBR19TVEdNRURJVU07DQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lBZHZpc2VTaW5rOw0KDQoNCiAgICANCiAgICBzdHJ1
Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDEwZi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYi
KSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJQWR2aXNlU2luayA6IHB1YmxpYyBJVW5rbm93
bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIHZvaWQgX19zdGRjYWxsIE9u
RGF0YUNoYW5nZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBGT1JNQVRFVEMgKnBG
b3JtYXRldGMsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBTVEdNRURJVU0gKnBTdGdt
ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIHZvaWQgX19zdGRjYWxsIE9uVmll
d0NoYW5nZSggDQogICAgICAgICAgICAgRFdPUkQgZHdBc3BlY3QsDQogICAgICAgICAgICAgTE9O
RyBsaW5kZXgpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIHZvaWQgX19zdGRjYWxs
IE9uUmVuYW1lKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIElNb25pa2VyICpwbWsp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIHZvaWQgX19zdGRjYWxsIE9uU2F2ZSgg
dm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgT25D
bG9zZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTQ1NyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElBZHZpc2VTaW5r
X1JlbW90ZU9uRGF0YUNoYW5nZV9Qcm94eSggDQogICAgICBJQWR2aXNlU2luayAqIFRoaXMsDQog
ICAgICAgRk9STUFURVRDICpwRm9ybWF0ZXRjLA0KICAgICAgIEFTWU5DX1NUR01FRElVTSAqcFN0
Z21lZCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmtfUmVtb3RlT25EYXRhQ2hhbmdl
X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIg
Kl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAg
IERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUFkdmlzZVNp
bmtfUmVtb3RlT25WaWV3Q2hhbmdlX1Byb3h5KCANCiAgICAgIElBZHZpc2VTaW5rICogVGhpcywN
CiAgICAgRFdPUkQgZHdBc3BlY3QsDQogICAgIExPTkcgbGluZGV4KTsNCg0KDQp2b2lkIF9fc3Rk
Y2FsbCBJQWR2aXNlU2lua19SZW1vdGVPblZpZXdDaGFuZ2VfU3R1YigNCiAgICBJUnBjU3R1YkJ1
ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0K
ICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2Up
Ow0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJQWR2aXNlU2lua19SZW1vdGVPblJlbmFtZV9Qcm94
eSggDQogICAgICBJQWR2aXNlU2luayAqIFRoaXMsDQogICAgICAgSU1vbmlrZXIgKnBtayk7DQoN
Cg0Kdm9pZCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmtfUmVtb3RlT25SZW5hbWVfU3R1YigNCiAgICBJ
UnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVs
QnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdT
dHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJQWR2aXNlU2lua19SZW1vdGVPblNh
dmVfUHJveHkoIA0KICAgICAgSUFkdmlzZVNpbmsgKiBUaGlzKTsNCg0KDQp2b2lkIF9fc3RkY2Fs
bCBJQWR2aXNlU2lua19SZW1vdGVPblNhdmVfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhp
cywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENf
TUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJQWR2aXNlU2lua19SZW1vdGVPbkNsb3NlX1Byb3h5KCANCiAgICAg
IElBZHZpc2VTaW5rICogVGhpcyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmtfUmVt
b3RlT25DbG9zZV9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFu
bmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVz
c2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KDQojbGluZSAxMTUyMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3Qg
SUlEIElJRF9Bc3luY0lBZHZpc2VTaW5rOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3Bl
Yyh1dWlkKCIwMDAwMDE1MC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3Bl
Yyhub3Z0YWJsZSkNCiAgICBBc3luY0lBZHZpc2VTaW5rIDogcHVibGljIElVbmtub3duDQogICAg
ew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgQmVnaW5fT25E
YXRhQ2hhbmdlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEZPUk1BVEVUQyAqcEZv
cm1hdGV0YywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFNUR01FRElVTSAqcFN0Z21l
ZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgRmluaXNo
X09uRGF0YUNoYW5nZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgdm9p
ZCBfX3N0ZGNhbGwgQmVnaW5fT25WaWV3Q2hhbmdlKCANCiAgICAgICAgICAgICBEV09SRCBkd0Fz
cGVjdCwNCiAgICAgICAgICAgICBMT05HIGxpbmRleCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgRmluaXNoX09uVmlld0NoYW5nZSggdm9pZCkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgQmVnaW5fT25SZW5hbWUo
IA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSU1vbmlrZXIgKnBtaykgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgRmluaXNoX09uUmVuYW1lKCB2
b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICB2b2lkIF9fc3RkY2FsbCBCZWdp
bl9PblNhdmUoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIHZvaWQgX19z
dGRjYWxsIEZpbmlzaF9PblNhdmUoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIHZvaWQgX19zdGRjYWxsIEJlZ2luX09uQ2xvc2UoIHZvaWQpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIHZvaWQgX19zdGRjYWxsIEZpbmlzaF9PbkNsb3NlKCB2b2lkKSA9IDA7
DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExNjgzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19CZWdpbl9S
ZW1vdGVPbkRhdGFDaGFuZ2VfUHJveHkoIA0KICAgICAgQXN5bmNJQWR2aXNlU2luayAqIFRoaXMs
DQogICAgICAgRk9STUFURVRDICpwRm9ybWF0ZXRjLA0KICAgICAgIEFTWU5DX1NUR01FRElVTSAq
cFN0Z21lZCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19CZWdpbl9SZW1v
dGVPbkRhdGFDaGFuZ2VfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBj
Q2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJw
Y01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3Rk
Y2FsbCBBc3luY0lBZHZpc2VTaW5rX0ZpbmlzaF9SZW1vdGVPbkRhdGFDaGFuZ2VfUHJveHkoIA0K
ICAgICAgQXN5bmNJQWR2aXNlU2luayAqIFRoaXMpOw0KDQoNCnZvaWQgX19zdGRjYWxsIEFzeW5j
SUFkdmlzZVNpbmtfRmluaXNoX1JlbW90ZU9uRGF0YUNoYW5nZV9TdHViKA0KICAgIElScGNTdHVi
QnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIs
DQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFz
ZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIEFzeW5jSUFkdmlzZVNpbmtfQmVnaW5fUmVtb3Rl
T25WaWV3Q2hhbmdlX1Byb3h5KCANCiAgICAgIEFzeW5jSUFkdmlzZVNpbmsgKiBUaGlzLA0KICAg
ICBEV09SRCBkd0FzcGVjdCwNCiAgICAgTE9ORyBsaW5kZXgpOw0KDQoNCnZvaWQgX19zdGRjYWxs
IEFzeW5jSUFkdmlzZVNpbmtfQmVnaW5fUmVtb3RlT25WaWV3Q2hhbmdlX1N0dWIoDQogICAgSVJw
Y1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1
ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1
YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19GaW5pc2hf
UmVtb3RlT25WaWV3Q2hhbmdlX1Byb3h5KCANCiAgICAgIEFzeW5jSUFkdmlzZVNpbmsgKiBUaGlz
KTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rX0ZpbmlzaF9SZW1vdGVPblZp
ZXdDaGFuZ2VfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5l
bEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3Nh
Z2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBB
c3luY0lBZHZpc2VTaW5rX0JlZ2luX1JlbW90ZU9uUmVuYW1lX1Byb3h5KCANCiAgICAgIEFzeW5j
SUFkdmlzZVNpbmsgKiBUaGlzLA0KICAgICAgIElNb25pa2VyICpwbWspOw0KDQoNCnZvaWQgX19z
dGRjYWxsIEFzeW5jSUFkdmlzZVNpbmtfQmVnaW5fUmVtb3RlT25SZW5hbWVfU3R1YigNCiAgICBJ
UnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVs
QnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdT
dHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rX0Zpbmlz
aF9SZW1vdGVPblJlbmFtZV9Qcm94eSggDQogICAgICBBc3luY0lBZHZpc2VTaW5rICogVGhpcyk7
DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19GaW5pc2hfUmVtb3RlT25SZW5h
bWVfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZl
ciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQog
ICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBBc3luY0lB
ZHZpc2VTaW5rX0JlZ2luX1JlbW90ZU9uU2F2ZV9Qcm94eSggDQogICAgICBBc3luY0lBZHZpc2VT
aW5rICogVGhpcyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19CZWdpbl9S
ZW1vdGVPblNhdmVfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hh
bm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01l
c3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2Fs
bCBBc3luY0lBZHZpc2VTaW5rX0ZpbmlzaF9SZW1vdGVPblNhdmVfUHJveHkoIA0KICAgICAgQXN5
bmNJQWR2aXNlU2luayAqIFRoaXMpOw0KDQoNCnZvaWQgX19zdGRjYWxsIEFzeW5jSUFkdmlzZVNp
bmtfRmluaXNoX1JlbW90ZU9uU2F2ZV9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0K
ICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNT
QUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNV
TFQgX19zdGRjYWxsIEFzeW5jSUFkdmlzZVNpbmtfQmVnaW5fUmVtb3RlT25DbG9zZV9Qcm94eSgg
DQogICAgICBBc3luY0lBZHZpc2VTaW5rICogVGhpcyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgQXN5
bmNJQWR2aXNlU2lua19CZWdpbl9SZW1vdGVPbkNsb3NlX1N0dWIoDQogICAgSVJwY1N0dWJCdWZm
ZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAg
ICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsN
Cg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19GaW5pc2hfUmVtb3RlT25D
bG9zZV9Qcm94eSggDQogICAgICBBc3luY0lBZHZpc2VTaW5rICogVGhpcyk7DQoNCg0Kdm9pZCBf
X3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19GaW5pc2hfUmVtb3RlT25DbG9zZV9TdHViKA0KICAg
IElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5u
ZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bk
d1N0dWJQaGFzZSk7DQoNCg0KDQojbGluZSAxMTgwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0K
DQoNCg0KIA0KDQojbGluZSAxMTgwOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbF8wMDAwXzAwNzFf
djBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAw
MDBfMDA3MV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSUFkdmlz
ZVNpbmsyICpMUEFEVklTRVNJTksyOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQWR2
aXNlU2luazI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMTI1
LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAg
IElBZHZpc2VTaW5rMiA6IHB1YmxpYyBJQWR2aXNlU2luaw0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgIHZvaWQgX19zdGRjYWxsIE9uTGlua1NyY0NoYW5nZSggDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBJTW9uaWtlciAqcG1rKSA9IDA7DQogICAgICAgIA0KICAg
IH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExOTMzICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmsyX1JlbW90ZU9uTGlu
a1NyY0NoYW5nZV9Qcm94eSggDQogICAgICBJQWR2aXNlU2luazIgKiBUaGlzLA0KICAgICAgIElN
b25pa2VyICpwbWspOw0KDQoNCnZvaWQgX19zdGRjYWxsIElBZHZpc2VTaW5rMl9SZW1vdGVPbkxp
bmtTcmNDaGFuZ2VfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hh
bm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01l
c3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCg0KI2xpbmUgMTE5NTAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0
IElJRCBJSURfQXN5bmNJQWR2aXNlU2luazI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xz
cGVjKHV1aWQoIjAwMDAwMTUxLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xz
cGVjKG5vdnRhYmxlKQ0KICAgIEFzeW5jSUFkdmlzZVNpbmsyIDogcHVibGljIEFzeW5jSUFkdmlz
ZVNpbmsNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICB2b2lkIF9fc3RkY2Fs
bCBCZWdpbl9PbkxpbmtTcmNDaGFuZ2UoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
SU1vbmlrZXIgKnBtaykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgdm9pZCBfX3N0
ZGNhbGwgRmluaXNoX09uTGlua1NyY0NoYW5nZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9
Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjEwNCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIEFzeW5jSUFkdmlz
ZVNpbmsyX0JlZ2luX1JlbW90ZU9uTGlua1NyY0NoYW5nZV9Qcm94eSggDQogICAgICBBc3luY0lB
ZHZpc2VTaW5rMiAqIFRoaXMsDQogICAgICAgSU1vbmlrZXIgKnBtayk7DQoNCg0Kdm9pZCBfX3N0
ZGNhbGwgQXN5bmNJQWR2aXNlU2luazJfQmVnaW5fUmVtb3RlT25MaW5rU3JjQ2hhbmdlX1N0dWIo
DQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBj
Q2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JE
ICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lu
azJfRmluaXNoX1JlbW90ZU9uTGlua1NyY0NoYW5nZV9Qcm94eSggDQogICAgICBBc3luY0lBZHZp
c2VTaW5rMiAqIFRoaXMpOw0KDQoNCnZvaWQgX19zdGRjYWxsIEFzeW5jSUFkdmlzZVNpbmsyX0Zp
bmlzaF9SZW1vdGVPbkxpbmtTcmNDaGFuZ2VfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhp
cywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENf
TUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCg0K
I2xpbmUgMTIxMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCiANCg0KI2xpbmUgMTIx
MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJl
Z2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5
DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbF8wMDAwXzAwNzJf
djBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAw
MDBfMDA3Ml92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSURhdGFP
YmplY3QgKkxQREFUQU9CSkVDVDsNCg0KdHlwZWRlZiANCmVudW0gdGFnREFUQURJUg0KICAgIHsN
CiAgICAgICAgREFUQURJUl9HRVQJPSAxLA0KICAgICAgICBEQVRBRElSX1NFVAk9IDINCiAgICB9
IAlEQVRBRElSOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRGF0YU9iamVjdDsNCg0K
DQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMGUtMDAwMC0wMDAwLUMw
MDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSURhdGFPYmplY3Qg
OiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBI
UkVTVUxUIF9fc3RkY2FsbCBHZXREYXRhKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IEZPUk1BVEVUQyAqcGZvcm1hdGV0Y0luLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
U1RHTUVESVVNICpwbWVkaXVtKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVT
VUxUIF9fc3RkY2FsbCBHZXREYXRhSGVyZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICBGT1JNQVRFVEMgKnBmb3JtYXRldGMsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBT
VEdNRURJVU0gKnBtZWRpdW0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgUXVlcnlHZXREYXRhKCANCiAgICAgICAgICAgICAgIEZPUk1BVEVUQyAqcGZv
cm1hdGV0YykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRDYW5vbmljYWxGb3JtYXRFdGMoIA0KICAgICAgICAgICAgICAgRk9STUFURVRDICpwZm9y
bWF0ZWN0SW4sDQogICAgICAgICAgICAgICBGT1JNQVRFVEMgKnBmb3JtYXRldGNPdXQpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIFNldERhdGEoIA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRk9STUFURVRDICpwZm9ybWF0ZXRjLA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgU1RHTUVESVVNICpwbWVkaXVtLA0KICAgICAgICAg
ICAgIEJPT0wgZlJlbGVhc2UpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgRW51bUZvcm1hdEV0YyggDQogICAgICAgICAgICAgRFdPUkQgZHdEaXJlY3Rp
b24sDQogICAgICAgICAgICAgICBJRW51bUZPUk1BVEVUQyAqKnBwZW51bUZvcm1hdEV0YykgPSAw
Ow0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBEQWR2aXNlKCAN
CiAgICAgICAgICAgICAgIEZPUk1BVEVUQyAqcGZvcm1hdGV0YywNCiAgICAgICAgICAgICBEV09S
RCBhZHZmLA0KICAgICAgICAgICAgICAgSUFkdmlzZVNpbmsgKnBBZHZTaW5rLA0KICAgICAgICAg
ICAgICAgRFdPUkQgKnBkd0Nvbm5lY3Rpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRFVuYWR2aXNlKCANCiAgICAgICAgICAgICBEV09SRCBkd0Nv
bm5lY3Rpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgRW51bURBZHZpc2UoIA0KICAgICAgICAgICAgICAgSUVudW1TVEFUREFUQSAqKnBwZW51bUFk
dmlzZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDEyMzM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSURhdGFPYmplY3RfUmVtb3RlR2V0RGF0YV9Qcm94eSggDQogICAgICBJRGF0YU9iamVj
dCAqIFRoaXMsDQogICAgICAgRk9STUFURVRDICpwZm9ybWF0ZXRjSW4sDQogICAgICAgU1RHTUVE
SVVNICpwUmVtb3RlTWVkaXVtKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJRGF0YU9iamVjdF9SZW1v
dGVHZXREYXRhX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5u
ZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNz
YWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SURhdGFPYmplY3RfUmVtb3RlR2V0RGF0YUhlcmVfUHJveHkoIA0KICAgICAgSURhdGFPYmplY3Qg
KiBUaGlzLA0KICAgICAgIEZPUk1BVEVUQyAqcGZvcm1hdGV0YywNCiAgICAgICBTVEdNRURJVU0g
KnBSZW1vdGVNZWRpdW0pOw0KDQoNCnZvaWQgX19zdGRjYWxsIElEYXRhT2JqZWN0X1JlbW90ZUdl
dERhdGFIZXJlX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5u
ZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNz
YWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SURhdGFPYmplY3RfUmVtb3RlU2V0RGF0YV9Qcm94eSggDQogICAgICBJRGF0YU9iamVjdCAqIFRo
aXMsDQogICAgICAgRk9STUFURVRDICpwZm9ybWF0ZXRjLA0KICAgICAgIEZMQUdfU1RHTUVESVVN
ICpwbWVkaXVtLA0KICAgICBCT09MIGZSZWxlYXNlKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJRGF0
YU9iamVjdF9SZW1vdGVTZXREYXRhX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQog
ICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NB
R0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5l
IDEyMzgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogDQoNCiNsaW5lIDEyMzg5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3IgR2FtZXMgRmFtaWx5DQoNCg0KDQpl
eHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbF8wMDAwXzAwNzNfdjBfMF9jX2lm
c3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA3M192
MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgSURhdGFBZHZpc2VIb2xkZXIg
KkxQREFUQUFEVklTRUhPTERFUjsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSURhdGFB
ZHZpc2VIb2xkZXI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAw
MTEwLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0K
ICAgIElEYXRhQWR2aXNlSG9sZGVyIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1Ymxp
YzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBBZHZpc2UoIA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgSURhdGFPYmplY3QgKnBEYXRhT2JqZWN0LA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgRk9STUFURVRDICpwRmV0YywNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIERXT1JEIGFkdmYsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBJ
QWR2aXNlU2luayAqcEFkdmlzZSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JE
ICpwZHdDb25uZWN0aW9uKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFVuYWR2aXNlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JE
IGR3Q29ubmVjdGlvbikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBFbnVtQWR2aXNlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgSUVudW1T
VEFUREFUQSAqKnBwZW51bUFkdmlzZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBTZW5kT25EYXRhQ2hhbmdlKCANCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIElEYXRhT2JqZWN0ICpwRGF0YU9iamVjdCwNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICBEV09SRCBhZHZmKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDEyNTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDEyNTM5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElNZXNzYWdl
RmlsdGVyICpMUE1FU1NBR0VGSUxURVI7DQoNCnR5cGVkZWYgDQplbnVtIHRhZ0NBTExUWVBFDQog
ICAgew0KICAgICAgICBDQUxMVFlQRV9UT1BMRVZFTAk9IDEsDQogICAgICAgIENBTExUWVBFX05F
U1RFRAk9IDIsDQogICAgICAgIENBTExUWVBFX0FTWU5DCT0gMywNCiAgICAgICAgQ0FMTFRZUEVf
VE9QTEVWRUxfQ0FMTFBFTkRJTkcJPSA0LA0KICAgICAgICBDQUxMVFlQRV9BU1lOQ19DQUxMUEVO
RElORwk9IDUNCiAgICB9IAlDQUxMVFlQRTsNCg0KdHlwZWRlZiANCmVudW0gdGFnU0VSVkVSQ0FM
TA0KICAgIHsNCiAgICAgICAgU0VSVkVSQ0FMTF9JU0hBTkRMRUQJPSAwLA0KICAgICAgICBTRVJW
RVJDQUxMX1JFSkVDVEVECT0gMSwNCiAgICAgICAgU0VSVkVSQ0FMTF9SRVRSWUxBVEVSCT0gMg0K
ICAgIH0gCVNFUlZFUkNBTEw7DQoNCnR5cGVkZWYgDQplbnVtIHRhZ1BFTkRJTkdUWVBFDQogICAg
ew0KICAgICAgICBQRU5ESU5HVFlQRV9UT1BMRVZFTAk9IDEsDQogICAgICAgIFBFTkRJTkdUWVBF
X05FU1RFRAk9IDINCiAgICB9IAlQRU5ESU5HVFlQRTsNCg0KdHlwZWRlZiANCmVudW0gdGFnUEVO
RElOR01TRw0KICAgIHsNCiAgICAgICAgUEVORElOR01TR19DQU5DRUxDQUxMCT0gMCwNCiAgICAg
ICAgUEVORElOR01TR19XQUlUTk9QUk9DRVNTCT0gMSwNCiAgICAgICAgUEVORElOR01TR19XQUlU
REVGUFJPQ0VTUwk9IDINCiAgICB9IAlQRU5ESU5HTVNHOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdJ
TlRFUkZBQ0VJTkZPDQogICAgew0KICAgIElVbmtub3duICpwVW5rOw0KICAgIElJRCBpaWQ7DQog
ICAgV09SRCB3TWV0aG9kOw0KICAgIH0gCUlOVEVSRkFDRUlORk87DQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0lOVEVSRkFDRUlORk8gKkxQSU5URVJGQUNFSU5GTzsNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IElJRCBJSURfSU1lc3NhZ2VGaWx0ZXI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVj
KHV1aWQoIjAwMDAwMDE2LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVj
KG5vdnRhYmxlKQ0KICAgIElNZXNzYWdlRmlsdGVyIDogcHVibGljIElVbmtub3duDQogICAgew0K
ICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBEV09SRCBfX3N0ZGNhbGwgSGFuZGxlSW5Db21p
bmdDYWxsKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGR3Q2FsbFR5cGUs
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBIVEFTSyBodGFza0NhbGxlciwNCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGR3VGlja0NvdW50LA0KICAgICAgICAgICAg
IA0KICAgICAgICAgICAgICAgTFBJTlRFUkZBQ0VJTkZPIGxwSW50ZXJmYWNlSW5mbykgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBEV09SRCBfX3N0ZGNhbGwgUmV0cnlSZWplY3RlZENh
bGwoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSFRBU0sgaHRhc2tDYWxsZWUsDQog
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBkd1RpY2tDb3VudCwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGR3UmVqZWN0VHlwZSkgPSAwOw0KICAgICAgICAN
CiAgICAgICAgdmlydHVhbCBEV09SRCBfX3N0ZGNhbGwgTWVzc2FnZVBlbmRpbmcoIA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgSFRBU0sgaHRhc2tDYWxsZWUsDQogICAgICAgICAgICAg
DQogICAgICAgICAgICAgICBEV09SRCBkd1RpY2tDb3VudCwNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIERXT1JEIGR3UGVuZGluZ1R5cGUpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAg
ICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTI3MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KI2xpbmUgMTI3
MTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCiANCg0KDQoNCmV4dGVybiBjb25zdCBG
TVRJRCBGTVRJRF9TdW1tYXJ5SW5mb3JtYXRpb247DQoNCmV4dGVybiBjb25zdCBGTVRJRCBGTVRJ
RF9Eb2NTdW1tYXJ5SW5mb3JtYXRpb247DQoNCmV4dGVybiBjb25zdCBGTVRJRCBGTVRJRF9Vc2Vy
RGVmaW5lZFByb3BlcnRpZXM7DQoNCmV4dGVybiBjb25zdCBGTVRJRCBGTVRJRF9EaXNjYXJkYWJs
ZUluZm9ybWF0aW9uOw0KDQpleHRlcm4gY29uc3QgRk1USUQgRk1USURfSW1hZ2VTdW1tYXJ5SW5m
b3JtYXRpb247DQoNCmV4dGVybiBjb25zdCBGTVRJRCBGTVRJRF9BdWRpb1N1bW1hcnlJbmZvcm1h
dGlvbjsNCg0KZXh0ZXJuIGNvbnN0IEZNVElEIEZNVElEX1ZpZGVvU3VtbWFyeUluZm9ybWF0aW9u
Ow0KDQpleHRlcm4gY29uc3QgRk1USUQgRk1USURfTWVkaWFGaWxlU3VtbWFyeUluZm9ybWF0aW9u
Ow0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxfMDAwMF8wMDc1
X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlkbF8w
MDAwXzAwNzVfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25z
dCBJSUQgSUlEX0lDbGFzc0FjdGl2YXRvcjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNw
ZWModXVpZCgiMDAwMDAxNDAtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNw
ZWMobm92dGFibGUpDQogICAgSUNsYXNzQWN0aXZhdG9yIDogcHVibGljIElVbmtub3duDQogICAg
ew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRDbGFz
c09iamVjdCggDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByY2xzaWQsDQogICAgICAgICAg
ICAgRFdPUkQgZHdDbGFzc0NvbnRleHQsDQogICAgICAgICAgICAgTENJRCBsb2NhbGUsDQogICAg
ICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgICAgdm9pZCAqKnBwdikg
PSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjgyNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSAxMjgzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0K
DQoNCg0KIA0KDQojbGluZSAxMjgzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KI3ByYWdtYSBl
bmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZh
bWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxfMDAwMF8w
MDc2X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29iamlk
bF8wMDAwXzAwNzZfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBJSUQgSUlEX0lGaWxsTG9ja0J5dGVzOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCI5OWNhZjAxMC00MTVlLTExY2YtODgxNC0wMGFhMDBiNTY5ZjUiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJRmlsbExvY2tCeXRlcyA6IHB1YmxpYyBJVW5rbm93bg0KICAg
IHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEZpbGxB
cHBlbmQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHYsDQog
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9ORyBjYiwNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIFVMT05HICpwY2JXcml0dGVuKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBGaWxsQXQoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgVUxBUkdFX0lOVEVHRVIgdWxPZmZzZXQsDQogICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwdiwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFVM
T05HIGNiLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVUxPTkcgKnBjYldyaXR0ZW4p
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0Rmls
bFNpemUoIA0KICAgICAgICAgICAgIFVMQVJHRV9JTlRFR0VSIHVsU2l6ZSkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBUZXJtaW5hdGUoIA0KICAgICAg
ICAgICAgIEJPT0wgYkNhbmNlbGVkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAg
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxMjk3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRj
YWxsIElGaWxsTG9ja0J5dGVzX1JlbW90ZUZpbGxBcHBlbmRfUHJveHkoIA0KICAgICAgSUZpbGxM
b2NrQnl0ZXMgKiBUaGlzLA0KICAgICAgIGNvbnN0IGJ5dGUgKnB2LA0KICAgICBVTE9ORyBjYiwN
CiAgICAgICBVTE9ORyAqcGNiV3JpdHRlbik7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUZpbGxMb2Nr
Qnl0ZXNfUmVtb3RlRmlsbEFwcGVuZF9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0K
ICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNT
QUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNV
TFQgX19zdGRjYWxsIElGaWxsTG9ja0J5dGVzX1JlbW90ZUZpbGxBdF9Qcm94eSggDQogICAgICBJ
RmlsbExvY2tCeXRlcyAqIFRoaXMsDQogICAgIFVMQVJHRV9JTlRFR0VSIHVsT2Zmc2V0LA0KICAg
ICAgIGNvbnN0IGJ5dGUgKnB2LA0KICAgICBVTE9ORyBjYiwNCiAgICAgICBVTE9ORyAqcGNiV3Jp
dHRlbik7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUZpbGxMb2NrQnl0ZXNfUmVtb3RlRmlsbEF0X1N0
dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9w
UnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERX
T1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDEzMDA2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsLmgiDQoNCg0KDQogDQoNCiNsaW5lIDEzMDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAw
MDBfMDA3N192MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9v
YmppZGxfMDAwMF8wMDc3X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAi
QyIgY29uc3QgSUlEIElJRF9JUHJvZ3Jlc3NOb3RpZnk7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoImE5ZDc1OGEwLTQ2MTctMTFjZi05NWZjLTAwYWEwMDY4MGRiNCIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQcm9ncmVzc05vdGlmeSA6IHB1YmxpYyBJVW5rbm93
bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
T25Qcm9ncmVzcyggDQogICAgICAgICAgICAgRFdPUkQgZHdQcm9ncmVzc0N1cnJlbnQsDQogICAg
ICAgICAgICAgRFdPUkQgZHdQcm9ncmVzc01heGltdW0sDQogICAgICAgICAgICAgQk9PTCBmQWNj
dXJhdGUsDQogICAgICAgICAgICAgQk9PTCBmT3duZXIpID0gMDsNCiAgICAgICAgDQogICAgfTsN
CiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDEzMDk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCiNsaW5l
IDEzMTA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogDQoNCiNsaW5lIDEzMTEwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24g
QXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX29iamlkbF8wMDAwXzAwNzhfdjBfMF9jX2lmc3BlYzsNCmV4dGVy
biBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA3OF92MF8wX3NfaWZzcGVj
Ow0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnU3RvcmFnZUxheW91dA0KICAgIHsN
CiAgICBEV09SRCBMYXlvdXRUeXBlOw0KICAgIE9MRUNIQVIgKnB3Y3NFbGVtZW50TmFtZTsNCiAg
ICBMQVJHRV9JTlRFR0VSIGNPZmZzZXQ7DQogICAgTEFSR0VfSU5URUdFUiBjQnl0ZXM7DQogICAg
fSAJU3RvcmFnZUxheW91dDsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUxheW91dFN0
b3JhZ2U7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjBlNmQ0ZDkwLTY3
MzgtMTFjZi05NjA4LTAwYWEwMDY4MGRiNCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElM
YXlvdXRTdG9yYWdlIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBMYXlvdXRTY3JpcHQoIA0KICAgICAgICAgICAg
IA0KICAgICAgICAgICAgICAgU3RvcmFnZUxheW91dCAqcFN0b3JhZ2VMYXlvdXQsDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBuRW50cmllcywNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIERXT1JEIGdsZkludGVybGVhdmVkRmxhZykgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBCZWdpbk1vbml0b3IoIHZvaWQpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRW5kTW9uaXRvcigg
dm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBS
ZUxheW91dERvY2ZpbGUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgT0xFQ0hBUiAq
cHdjc05ld0RmTmFtZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBSZUxheW91dERvY2ZpbGVPbklMb2NrQnl0ZXMoIA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgSUxvY2tCeXRlcyAqcElMb2NrQnl0ZXMpID0gMDsNCiAgICAgICAgDQogICAg
fTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEzMjQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoN
CiNsaW5lIDEzMjU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogDQoNCiNsaW5lIDEz
MjYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENf
SUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA3OV92MF8wX2NfaWZzcGVjOw0KZXh0
ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxfMDAwMF8wMDc5X3YwXzBfc19pZnNw
ZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQmxvY2tpbmdM
b2NrOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIzMGYzZDQ3YS02NDQ3
LTExZDEtOGUzYy0wMGMwNGZiOTM4NmQiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJQmxv
Y2tpbmdMb2NrIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBMb2NrKCANCiAgICAgICAgICAgICBEV09SRCBkd1Rp
bWVvdXQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
VW5sb2NrKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MzM0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSAxMzM1NCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlE
IElJRF9JVGltZUFuZE5vdGljZUNvbnRyb2w7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xz
cGVjKHV1aWQoImJjMGJmNmFlLTg4NzgtMTFkMS04M2U5LTAwYzA0ZmMyYzZkNCIpKSBfX2RlY2xz
cGVjKG5vdnRhYmxlKQ0KICAgIElUaW1lQW5kTm90aWNlQ29udHJvbCA6IHB1YmxpYyBJVW5rbm93
bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
U3VwcHJlc3NDaGFuZ2VzKCANCiAgICAgICAgICAgICBEV09SRCByZXMxLA0KICAgICAgICAgICAg
IERXT1JEIHJlczIpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM0MzEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KI2xpbmUgMTM0MzYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSU9wbG9j
a1N0b3JhZ2U7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjhkMTljODM0
LTg4NzktMTFkMS04M2U5LTAwYzA0ZmMyYzZkNCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAg
IElPcGxvY2tTdG9yYWdlIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVTdG9yYWdlRXgoIA0KICAgICAg
ICAgICAgICAgTFBDV1NUUiBwd2NzTmFtZSwNCiAgICAgICAgICAgICBEV09SRCBncmZNb2RlLA0K
ICAgICAgICAgICAgIERXT1JEIHN0Z2ZtdCwNCiAgICAgICAgICAgICBEV09SRCBncmZBdHRycywN
CiAgICAgICAgICAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgICAgICAgICAgICB2b2lkICoq
cHBzdGdPcGVuKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIE9wZW5TdG9yYWdlRXgoIA0KICAgICAgICAgICAgICAgTFBDV1NUUiBwd2NzTmFtZSwNCiAg
ICAgICAgICAgICBEV09SRCBncmZNb2RlLA0KICAgICAgICAgICAgIERXT1JEIHN0Z2ZtdCwNCiAg
ICAgICAgICAgICBEV09SRCBncmZBdHRycywNCiAgICAgICAgICAgICAgIGNvbnN0IElJRCAmIHJp
aWQsDQogICAgICAgICAgICAgICB2b2lkICoqcHBzdGdPcGVuKSA9IDA7DQogICAgICAgIA0KICAg
IH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM1NDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KI2xpbmUgMTM1NDYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpp
ZGwuaCINCg0KDQoNCiANCg0KI2xpbmUgMTM1NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRs
XzAwMDBfMDA4Ml92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0
Zl9vYmppZGxfMDAwMF8wMDgyX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVy
biAiQyIgY29uc3QgSUlEIElJRF9JRGlyZWN0V3JpdGVyTG9jazsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiMGU2ZDRkOTItNjczOC0xMWNmLTk2MDgtMDBhYTAwNjgwZGI0
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSURpcmVjdFdyaXRlckxvY2sgOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIFdhaXRGb3JXcml0ZUFjY2VzcyggDQogICAgICAgICAgICAgRFdPUkQgZHdUaW1lb3V0
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlbGVh
c2VXcml0ZUFjY2Vzcyggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBIYXZlV3JpdGVBY2Nlc3MoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAg
fTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzNjQ5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
aWRsLmgiDQoNCg0KDQoNCiNsaW5lIDEzNjU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0K
DQogDQoNCiNsaW5lIDEzNjYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA4M192MF8w
X2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYmppZGxfMDAwMF8w
MDgzX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlE
IElJRF9JVXJsTW9uOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAw
MDAyNi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJVXJsTW9uIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBBc3luY0dldENsYXNzQml0cyggDQogICAgICAg
ICAgICAgICBjb25zdCBJSUQgJiByY2xzaWQsDQogICAgICAgICAgICAgICBMUENXU1RSIHBzelRZ
UEUsDQogICAgICAgICAgICAgICBMUENXU1RSIHBzekV4dCwNCiAgICAgICAgICAgICBEV09SRCBk
d0ZpbGVWZXJzaW9uTVMsDQogICAgICAgICAgICAgRFdPUkQgZHdGaWxlVmVyc2lvbkxTLA0KICAg
ICAgICAgICAgICAgTFBDV1NUUiBwc3pDb2RlQmFzZSwNCiAgICAgICAgICAgICAgIElCaW5kQ3R4
ICpwYmMsDQogICAgICAgICAgICAgRFdPUkQgZHdDbGFzc0NvbnRleHQsDQogICAgICAgICAgICAg
ICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIERXT1JEIGZsYWdzKSA9IDA7DQogICAg
ICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzc1OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSAxMzc2NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0K
DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRm9yZWdyb3VuZFRy
YW5zZmVyOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDE0NS0w
MDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJ
Rm9yZWdyb3VuZFRyYW5zZmVyIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoN
CiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBBbGxvd0ZvcmVncm91bmRUcmFuc2Zl
ciggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICB2b2lkICpscHZSZXNlcnZlZCkgPSAw
Ow0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzg0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5o
Ig0KDQoNCg0KDQojbGluZSAxMzg0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoN
Cg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JVGh1bWJuYWlsRXh0cmFjdG9yOw0K
DQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI5NjlkYzcwOC01Yzc2LTExZDEt
OGQ4Ni0wMDAwZjgwNGIwNTciKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJVGh1bWJuYWls
RXh0cmFjdG9yIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBFeHRyYWN0VGh1bWJuYWlsKCANCiAgICAgICAgICAg
ICAgIElTdG9yYWdlICpwU3RnLA0KICAgICAgICAgICAgIFVMT05HIHVsTGVuZ3RoLA0KICAgICAg
ICAgICAgIFVMT05HIHVsSGVpZ2h0LA0KICAgICAgICAgICAgICAgVUxPTkcgKnB1bE91dHB1dExl
bmd0aCwNCiAgICAgICAgICAgICAgIFVMT05HICpwdWxPdXRwdXRIZWlnaHQsDQogICAgICAgICAg
ICAgICBIQklUTUFQICpwaE91dHB1dEJpdG1hcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPbkZpbGVVcGRhdGVkKCANCiAgICAgICAgICAgICAgIElT
dG9yYWdlICpwU3RnKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxMzk0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSAx
Mzk0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAi
QyIgY29uc3QgSUlEIElJRF9JRHVtbXlISUNPTkluY2x1ZGVyOw0KDQoNCiAgICANCiAgICBzdHJ1
Y3QgX19kZWNsc3BlYyh1dWlkKCI5NDc5OTBkZS1jYzI4LTExZDItYTBmNy0wMDgwNWY4NThmYjEi
KSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJRHVtbXlISUNPTkluY2x1ZGVyIDogcHVibGlj
IElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBEdW1teSggDQogICAgICAgICAgICAgICBISUNPTiBoMSwNCiAgICAgICAgICAgICAg
IEhEQyBoMikgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDAyMyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSAxNDAyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5o
Ig0KDQoNCg0KIA0KDQp0eXBlZGVmIA0KZW51bSB0YWdBcHBsaWNhdGlvblR5cGUNCiAgICB7DQog
ICAgICAgIFNlcnZlckFwcGxpY2F0aW9uCT0gMCwNCiAgICAgICAgTGlicmFyeUFwcGxpY2F0aW9u
CT0gKCBTZXJ2ZXJBcHBsaWNhdGlvbiArIDEgKSANCiAgICB9IAlBcHBsaWNhdGlvblR5cGU7DQoN
CnR5cGVkZWYgDQplbnVtIHRhZ1NodXRkb3duVHlwZQ0KICAgIHsNCiAgICAgICAgSWRsZVNodXRk
b3duCT0gMCwNCiAgICAgICAgRm9yY2VkU2h1dGRvd24JPSAoIElkbGVTaHV0ZG93biArIDEgKSAN
CiAgICB9IAlTaHV0ZG93blR5cGU7DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExf
aXRmX29iamlkbF8wMDAwXzAwODdfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExF
IF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA4N192MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiAN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVByb2Nlc3NMb2NrOw0KDQoNCiAgICANCiAg
ICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDFkNS0wMDAwLTAwMDAtQzAwMC0wMDAwMDAw
MDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJUHJvY2Vzc0xvY2sgOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIFVMT05HIF9fc3Rk
Y2FsbCBBZGRSZWZPblByb2Nlc3MoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgVUxPTkcgX19zdGRjYWxsIFJlbGVhc2VSZWZPblByb2Nlc3MoIHZvaWQpID0gMDsNCiAgICAg
ICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDEzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5o
Ig0KDQoNCg0KDQojbGluZSAxNDEzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQoN
Cg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JU3Vycm9nYXRlU2VydmljZTsNCg0K
DQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxZDQtMDAwMC0wMDAwLUMw
MDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVN1cnJvZ2F0ZVNl
cnZpY2UgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIEluaXQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgY29uc3QgR1VJRCAmIHJndWlkUHJvY2Vzc0lELA0KICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgSVByb2Nlc3NMb2NrICpwUHJvY2Vzc0xvY2ssDQogICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICBCT09MICpwZkFwcGxpY2F0aW9uQXdhcmUpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQXBwbGljYXRpb25MYXVuY2goIA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgY29uc3QgR1VJRCAmIHJndWlkQXBwbElELA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgQXBwbGljYXRpb25UeXBlIGFwcFR5cGUpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQXBwbGljYXRpb25GcmVlKCAN
CiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiByZ3VpZEFwcGxJRCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDYXRhbG9n
UmVmcmVzaCggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9ORyB1bFJlc2VydmVk
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFByb2Nl
c3NTaHV0ZG93biggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBTaHV0ZG93blR5cGUg
c2h1dGRvd25UeXBlKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNDI3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KDQojbGluZSAxNDI3
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KDQoNCg0KIA0KDQoNCg0KDQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX29iamlkbF8wMDAwXzAwODlfdjBfMF9jX2lmc3BlYzsNCmV4dGVy
biBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA4OV92MF8wX3NfaWZzcGVj
Ow0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgSUluaXRpYWxpemVTcHkgKkxQSU5JVElBTElaRVNQ
WTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUluaXRpYWxpemVTcHk7DQoNCg0KICAg
IA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDM0LTAwMDAtMDAwMC1DMDAwLTAw
MDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElJbml0aWFsaXplU3B5IDog
cHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBQcmVJbml0aWFsaXplKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIERXT1JEIGR3Q29Jbml0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQg
ZHdDdXJUaHJlYWRBcHRSZWZzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIFBvc3RJbml0aWFsaXplKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgIEhSRVNVTFQgaHJDb0luaXQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09S
RCBkd0NvSW5pdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGR3TmV3VGhy
ZWFkQXB0UmVmcykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBQcmVVbmluaXRpYWxpemUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdP
UkQgZHdDdXJUaHJlYWRBcHRSZWZzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIFBvc3RVbmluaXRpYWxpemUoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgRFdPUkQgZHdOZXdUaHJlYWRBcHRSZWZzKSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDE0NDE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQoNCiNsaW5l
IDE0NDE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqaWRsLmgiDQoNCg0KDQogDQoNCiNsaW5lIDE0NDI1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2JqaWRsLmgiDQojbGluZSAxNDQyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5o
Ig0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBv
ciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9v
YmppZGxfMDAwMF8wMDkwX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01J
RExfaXRmX29iamlkbF8wMDAwXzAwOTBfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lBcGFydG1lbnRTaHV0ZG93bjsNCg0KDQogICAgDQog
ICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiQTJGMDVBMDktMjdBMi00MkI1LUJDMEUtQUMxNjNF
RjQ5RDlCIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUFwYXJ0bWVudFNodXRkb3duIDog
cHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCB2b2lk
IF9fc3RkY2FsbCBPblVuaW5pdGlhbGl6ZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICBVSU5UNjQgdWk2NEFwYXJ0bWVudElkZW50aWZpZXIpID0gMDsNCiAgICAgICAgDQogICAgfTsN
CiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTQ1MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCg0KI2xpbmUgMTQ1
MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQoNCiANCg0KI2xpbmUgMTQ1MjAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvYmppZGwuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KI3ByYWdtYSB3YXJuaW5n
KHBvcCkNCg0KDQojbGluZSAxNDUyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamlkbC5oIg0KI2xpbmUgMTQ1
MjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01J
RExfaXRmX29iamlkbF8wMDAwXzAwOTFfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFO
RExFIF9fTUlETF9pdGZfb2JqaWRsXzAwMDBfMDA5MV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KdW5z
aWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIEFTWU5DX1NUR01FRElVTV9Vc2VyU2l6
ZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEFT
WU5DX1NUR01FRElVTSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgQVNZTkNfU1RH
TUVESVVNX1VzZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAq
LCAgIEFTWU5DX1NUR01FRElVTSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgQVNZ
TkNfU1RHTUVESVVNX1VzZXJVbm1hcnNoYWwoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQg
Y2hhciAqLCAgIEFTWU5DX1NUR01FRElVTSAqICk7IA0Kdm9pZCAgICAgICAgICAgICAgICAgICAg
ICBfX3N0ZGNhbGwgIEFTWU5DX1NUR01FRElVTV9Vc2VyRnJlZSggICAgICAgdW5zaWduZWQgbG9u
ZyAqLCAgIEFTWU5DX1NUR01FRElVTSAqICk7IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAgICAg
IF9fc3RkY2FsbCAgQ0xJUEZPUk1BVF9Vc2VyU2l6ZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1
bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIENMSVBGT1JNQVQgKiApOyANCnVuc2lnbmVkIGNo
YXIgKiBfX3N0ZGNhbGwgIENMSVBGT1JNQVRfVXNlck1hcnNoYWwoICAgIHVuc2lnbmVkIGxvbmcg
KiwgICB1bnNpZ25lZCBjaGFyICosICAgQ0xJUEZPUk1BVCAqICk7IA0KdW5zaWduZWQgY2hhciAq
IF9fc3RkY2FsbCAgQ0xJUEZPUk1BVF9Vc2VyVW5tYXJzaGFsKCAgdW5zaWduZWQgbG9uZyAqLCAg
IHVuc2lnbmVkIGNoYXIgKiwgICBDTElQRk9STUFUICogKTsgDQp2b2lkICAgICAgICAgICAgICAg
ICAgICAgIF9fc3RkY2FsbCAgQ0xJUEZPUk1BVF9Vc2VyRnJlZSggICAgICAgdW5zaWduZWQgbG9u
ZyAqLCAgIENMSVBGT1JNQVQgKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0
ZGNhbGwgIEZMQUdfU1RHTUVESVVNX1VzZXJTaXplKCAgICAgICB1bnNpZ25lZCBsb25nICosIHVu
c2lnbmVkIGxvbmcgICAgICAgICAgICAsICAgRkxBR19TVEdNRURJVU0gKiApOyANCnVuc2lnbmVk
IGNoYXIgKiBfX3N0ZGNhbGwgIEZMQUdfU1RHTUVESVVNX1VzZXJNYXJzaGFsKCAgICB1bnNpZ25l
ZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEZMQUdfU1RHTUVESVVNICogKTsgDQp1bnNp
Z25lZCBjaGFyICogX19zdGRjYWxsICBGTEFHX1NUR01FRElVTV9Vc2VyVW5tYXJzaGFsKCAgdW5z
aWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBGTEFHX1NUR01FRElVTSAqICk7IA0K
dm9pZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEZMQUdfU1RHTUVESVVNX1VzZXJG
cmVlKCAgICAgICB1bnNpZ25lZCBsb25nICosICAgRkxBR19TVEdNRURJVU0gKiApOyANCg0KdW5z
aWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhCSVRNQVBfVXNlclNpemUoICAgICAg
IHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICwgICBIQklUTUFQICog
KTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBIQklUTUFQX1VzZXJNYXJzaGFsKCAgICB1
bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEhCSVRNQVAgKiApOyANCnVuc2ln
bmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhCSVRNQVBfVXNlclVubWFyc2hhbCggIHVuc2lnbmVkIGxv
bmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSEJJVE1BUCAqICk7IA0Kdm9pZCAgICAgICAgICAg
ICAgICAgICAgICBfX3N0ZGNhbGwgIEhCSVRNQVBfVXNlckZyZWUoICAgICAgIHVuc2lnbmVkIGxv
bmcgKiwgICBIQklUTUFQICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRj
YWxsICBIRENfVXNlclNpemUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAg
ICAgICAgICAgICwgICBIREMgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhEQ19V
c2VyTWFyc2hhbCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBIREMg
KiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhEQ19Vc2VyVW5tYXJzaGFsKCAgdW5z
aWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBIREMgKiApOyANCnZvaWQgICAgICAg
ICAgICAgICAgICAgICAgX19zdGRjYWxsICBIRENfVXNlckZyZWUoICAgICAgIHVuc2lnbmVkIGxv
bmcgKiwgICBIREMgKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwg
IEhJQ09OX1VzZXJTaXplKCAgICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAg
ICAgICAgICAsICAgSElDT04gKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhJQ09O
X1VzZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEhJ
Q09OICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBISUNPTl9Vc2VyVW5tYXJzaGFs
KCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBISUNPTiAqICk7IA0Kdm9p
ZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhJQ09OX1VzZXJGcmVlKCAgICAgICB1
bnNpZ25lZCBsb25nICosICAgSElDT04gKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAg
ICBfX3N0ZGNhbGwgIFNOQl9Vc2VyU2l6ZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25l
ZCBsb25nICAgICAgICAgICAgLCAgIFNOQiAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2Fs
bCAgU05CX1VzZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAq
LCAgIFNOQiAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgU05CX1VzZXJVbm1hcnNo
YWwoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIFNOQiAqICk7IA0Kdm9p
ZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIFNOQl9Vc2VyRnJlZSggICAgICAgdW5z
aWduZWQgbG9uZyAqLCAgIFNOQiAqICk7IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9f
c3RkY2FsbCAgU1RHTUVESVVNX1VzZXJTaXplKCAgICAgICB1bnNpZ25lZCBsb25nICosIHVuc2ln
bmVkIGxvbmcgICAgICAgICAgICAsICAgU1RHTUVESVVNICogKTsgDQp1bnNpZ25lZCBjaGFyICog
X19zdGRjYWxsICBTVEdNRURJVU1fVXNlck1hcnNoYWwoICAgIHVuc2lnbmVkIGxvbmcgKiwgICB1
bnNpZ25lZCBjaGFyICosICAgU1RHTUVESVVNICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRj
YWxsICBTVEdNRURJVU1fVXNlclVubWFyc2hhbCggIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25l
ZCBjaGFyICosICAgU1RHTUVESVVNICogKTsgDQp2b2lkICAgICAgICAgICAgICAgICAgICAgIF9f
c3RkY2FsbCAgU1RHTUVESVVNX1VzZXJGcmVlKCAgICAgICB1bnNpZ25lZCBsb25nICosICAgU1RH
TUVESVVNICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBBU1lO
Q19TVEdNRURJVU1fVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBs
b25nICAgICAgICAgICAgLCAgIEFTWU5DX1NUR01FRElVTSAqICk7IA0KdW5zaWduZWQgY2hhciAq
IF9fc3RkY2FsbCAgQVNZTkNfU1RHTUVESVVNX1VzZXJNYXJzaGFsNjQoICAgIHVuc2lnbmVkIGxv
bmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgQVNZTkNfU1RHTUVESVVNICogKTsgDQp1bnNpZ25l
ZCBjaGFyICogX19zdGRjYWxsICBBU1lOQ19TVEdNRURJVU1fVXNlclVubWFyc2hhbDY0KCAgdW5z
aWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBBU1lOQ19TVEdNRURJVU0gKiApOyAN
CnZvaWQgICAgICAgICAgICAgICAgICAgICAgX19zdGRjYWxsICBBU1lOQ19TVEdNRURJVU1fVXNl
ckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEFTWU5DX1NUR01FRElVTSAqICk7IA0K
DQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgQ0xJUEZPUk1BVF9Vc2VyU2l6
ZTY0KCAgICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAsICAg
Q0xJUEZPUk1BVCAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgQ0xJUEZPUk1BVF9V
c2VyTWFyc2hhbDY0KCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIENM
SVBGT1JNQVQgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIENMSVBGT1JNQVRfVXNl
clVubWFyc2hhbDY0KCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBDTElQ
Rk9STUFUICogKTsgDQp2b2lkICAgICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgQ0xJUEZP
Uk1BVF9Vc2VyRnJlZTY0KCAgICAgICB1bnNpZ25lZCBsb25nICosICAgQ0xJUEZPUk1BVCAqICk7
IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgRkxBR19TVEdNRURJVU1f
VXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAg
ICAgLCAgIEZMQUdfU1RHTUVESVVNICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBG
TEFHX1NUR01FRElVTV9Vc2VyTWFyc2hhbDY0KCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWdu
ZWQgY2hhciAqLCAgIEZMQUdfU1RHTUVESVVNICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRj
YWxsICBGTEFHX1NUR01FRElVTV9Vc2VyVW5tYXJzaGFsNjQoICB1bnNpZ25lZCBsb25nICosICAg
dW5zaWduZWQgY2hhciAqLCAgIEZMQUdfU1RHTUVESVVNICogKTsgDQp2b2lkICAgICAgICAgICAg
ICAgICAgICAgIF9fc3RkY2FsbCAgRkxBR19TVEdNRURJVU1fVXNlckZyZWU2NCggICAgICAgdW5z
aWduZWQgbG9uZyAqLCAgIEZMQUdfU1RHTUVESVVNICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAg
ICAgICAgICAgX19zdGRjYWxsICBIQklUTUFQX1VzZXJTaXplNjQoICAgICAgIHVuc2lnbmVkIGxv
bmcgKiwgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICwgICBIQklUTUFQICogKTsgDQp1bnNpZ25l
ZCBjaGFyICogX19zdGRjYWxsICBIQklUTUFQX1VzZXJNYXJzaGFsNjQoICAgIHVuc2lnbmVkIGxv
bmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSEJJVE1BUCAqICk7IA0KdW5zaWduZWQgY2hhciAq
IF9fc3RkY2FsbCAgSEJJVE1BUF9Vc2VyVW5tYXJzaGFsNjQoICB1bnNpZ25lZCBsb25nICosICAg
dW5zaWduZWQgY2hhciAqLCAgIEhCSVRNQVAgKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAg
ICAgX19zdGRjYWxsICBIQklUTUFQX1VzZXJGcmVlNjQoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwg
ICBIQklUTUFQICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBI
RENfVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAg
ICAgICAgLCAgIEhEQyAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgSERDX1VzZXJN
YXJzaGFsNjQoICAgIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSERDICog
KTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBIRENfVXNlclVubWFyc2hhbDY0KCAgdW5z
aWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBIREMgKiApOyANCnZvaWQgICAgICAg
ICAgICAgICAgICAgICAgX19zdGRjYWxsICBIRENfVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQg
bG9uZyAqLCAgIEhEQyAqICk7IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2Fs
bCAgSElDT05fVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25n
ICAgICAgICAgICAgLCAgIEhJQ09OICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBI
SUNPTl9Vc2VyTWFyc2hhbDY0KCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAq
LCAgIEhJQ09OICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBISUNPTl9Vc2VyVW5t
YXJzaGFsNjQoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEhJQ09OICog
KTsgDQp2b2lkICAgICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgSElDT05fVXNlckZyZWU2
NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEhJQ09OICogKTsgDQoNCnVuc2lnbmVkIGxvbmcg
ICAgICAgICAgICAgX19zdGRjYWxsICBTTkJfVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9u
ZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIFNOQiAqICk7IA0KdW5zaWduZWQgY2hh
ciAqIF9fc3RkY2FsbCAgU05CX1VzZXJNYXJzaGFsNjQoICAgIHVuc2lnbmVkIGxvbmcgKiwgICB1
bnNpZ25lZCBjaGFyICosICAgU05CICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBT
TkJfVXNlclVubWFyc2hhbDY0KCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwg
ICBTTkIgKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAgICAgX19zdGRjYWxsICBTTkJfVXNl
ckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIFNOQiAqICk7IA0KDQp1bnNpZ25lZCBs
b25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgU1RHTUVESVVNX1VzZXJTaXplNjQoICAgICAgIHVu
c2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICwgICBTVEdNRURJVU0gKiAp
OyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIFNUR01FRElVTV9Vc2VyTWFyc2hhbDY0KCAg
ICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIFNUR01FRElVTSAqICk7IA0K
dW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgU1RHTUVESVVNX1VzZXJVbm1hcnNoYWw2NCggIHVu
c2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgU1RHTUVESVVNICogKTsgDQp2b2lk
ICAgICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgU1RHTUVESVVNX1VzZXJGcmVlNjQoICAg
ICAgIHVuc2lnbmVkIGxvbmcgKiwgICBTVEdNRURJVU0gKiApOyANCg0KIEhSRVNVTFQgX19zdGRj
YWxsIElFbnVtVW5rbm93bl9OZXh0X1Byb3h5KCANCiAgICBJRW51bVVua25vd24gKiBUaGlzLA0K
ICAgICANCiAgICAgICBVTE9ORyBjZWx0LA0KICAgICANCiAgICAgICBJVW5rbm93biAqKnJnZWx0
LA0KICAgICANCiAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSUVudW1Vbmtub3duX05leHRfU3R1YiggDQogICAgICBJRW51bVVua25vd24gKiBUaGlz
LA0KICAgICBVTE9ORyBjZWx0LA0KICAgICAgIElVbmtub3duICoqcmdlbHQsDQogICAgICAgVUxP
TkcgKnBjZWx0RmV0Y2hlZCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJRW51bVN0cmluZ19OZXh0
X1Byb3h5KCANCiAgICBJRW51bVN0cmluZyAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQsDQogICAg
IA0KICAgICAgIExQT0xFU1RSICpyZ2VsdCwNCiAgICAgDQogICAgICAgVUxPTkcgKnBjZWx0RmV0
Y2hlZCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElFbnVtU3RyaW5nX05leHRfU3R1YiggDQog
ICAgICBJRW51bVN0cmluZyAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQsDQogICAgICAgTFBPTEVT
VFIgKnJnZWx0LA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSVNlcXVlbnRpYWxTdHJlYW1fUmVhZF9Qcm94eSggDQogICAgSVNlcXVlbnRpYWxTdHJl
YW0gKiBUaGlzLA0KICAgICANCiAgICAgICB2b2lkICpwdiwNCiAgICAgDQogICAgICAgVUxPTkcg
Y2IsDQogICAgIA0KICAgICAgIFVMT05HICpwY2JSZWFkKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNh
bGwgSVNlcXVlbnRpYWxTdHJlYW1fUmVhZF9TdHViKCANCiAgICAgIElTZXF1ZW50aWFsU3RyZWFt
ICogVGhpcywNCiAgICAgICBieXRlICpwdiwNCiAgICAgVUxPTkcgY2IsDQogICAgICAgVUxPTkcg
KnBjYlJlYWQpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVNlcXVlbnRpYWxTdHJlYW1fV3JpdGVf
UHJveHkoIA0KICAgIElTZXF1ZW50aWFsU3RyZWFtICogVGhpcywNCiAgICAgDQogICAgICAgY29u
c3Qgdm9pZCAqcHYsDQogICAgIA0KICAgICAgIFVMT05HIGNiLA0KICAgICANCiAgICAgICBVTE9O
RyAqcGNiV3JpdHRlbik7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElTZXF1ZW50aWFsU3RyZWFt
X1dyaXRlX1N0dWIoIA0KICAgICAgSVNlcXVlbnRpYWxTdHJlYW0gKiBUaGlzLA0KICAgICAgIGNv
bnN0IGJ5dGUgKnB2LA0KICAgICBVTE9ORyBjYiwNCiAgICAgICBVTE9ORyAqcGNiV3JpdHRlbik7
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJU3RyZWFtX1NlZWtfUHJveHkoIA0KICAgIElTdHJlYW0g
KiBUaGlzLA0KICAgICBMQVJHRV9JTlRFR0VSIGRsaWJNb3ZlLA0KICAgICBEV09SRCBkd09yaWdp
biwNCiAgICAgDQogICAgICAgVUxBUkdFX0lOVEVHRVIgKnBsaWJOZXdQb3NpdGlvbik7DQoNCg0K
IEhSRVNVTFQgX19zdGRjYWxsIElTdHJlYW1fU2Vla19TdHViKCANCiAgICAgIElTdHJlYW0gKiBU
aGlzLA0KICAgICBMQVJHRV9JTlRFR0VSIGRsaWJNb3ZlLA0KICAgICBEV09SRCBkd09yaWdpbiwN
CiAgICAgICBVTEFSR0VfSU5URUdFUiAqcGxpYk5ld1Bvc2l0aW9uKTsNCg0KIEhSRVNVTFQgX19z
dGRjYWxsIElTdHJlYW1fQ29weVRvX1Byb3h5KCANCiAgICBJU3RyZWFtICogVGhpcywNCiAgICAg
DQogICAgICAgSVN0cmVhbSAqcHN0bSwNCiAgICAgVUxBUkdFX0lOVEVHRVIgY2IsDQogICAgIA0K
ICAgICAgIFVMQVJHRV9JTlRFR0VSICpwY2JSZWFkLA0KICAgICANCiAgICAgICBVTEFSR0VfSU5U
RUdFUiAqcGNiV3JpdHRlbik7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElTdHJlYW1fQ29weVRv
X1N0dWIoIA0KICAgICAgSVN0cmVhbSAqIFRoaXMsDQogICAgICAgSVN0cmVhbSAqcHN0bSwNCiAg
ICAgVUxBUkdFX0lOVEVHRVIgY2IsDQogICAgICAgVUxBUkdFX0lOVEVHRVIgKnBjYlJlYWQsDQog
ICAgICAgVUxBUkdFX0lOVEVHRVIgKnBjYldyaXR0ZW4pOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SUJpbmRDdHhfU2V0QmluZE9wdGlvbnNfUHJveHkoIA0KICAgIElCaW5kQ3R4ICogVGhpcywNCiAg
ICAgDQogICAgICAgQklORF9PUFRTICpwYmluZG9wdHMpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2Fs
bCBJQmluZEN0eF9TZXRCaW5kT3B0aW9uc19TdHViKCANCiAgICAgIElCaW5kQ3R4ICogVGhpcywN
CiAgICAgICBCSU5EX09QVFMyICpwYmluZG9wdHMpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJp
bmRDdHhfR2V0QmluZE9wdGlvbnNfUHJveHkoIA0KICAgIElCaW5kQ3R4ICogVGhpcywNCiAgICAg
DQogICAgICAgQklORF9PUFRTICpwYmluZG9wdHMpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJ
QmluZEN0eF9HZXRCaW5kT3B0aW9uc19TdHViKCANCiAgICAgIElCaW5kQ3R4ICogVGhpcywNCiAg
ICAgICBCSU5EX09QVFMyICpwYmluZG9wdHMpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1N
b25pa2VyX05leHRfUHJveHkoIA0KICAgIElFbnVtTW9uaWtlciAqIFRoaXMsDQogICAgIFVMT05H
IGNlbHQsDQogICAgIA0KICAgICAgIElNb25pa2VyICoqcmdlbHQsDQogICAgIA0KICAgICAgIFVM
T05HICpwY2VsdEZldGNoZWQpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJRW51bU1vbmlrZXJf
TmV4dF9TdHViKCANCiAgICAgIElFbnVtTW9uaWtlciAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQs
DQogICAgICAgSU1vbmlrZXIgKipyZ2VsdCwNCiAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsN
Cg0KIEJPT0wgX19zdGRjYWxsIElSdW5uYWJsZU9iamVjdF9Jc1J1bm5pbmdfUHJveHkoIA0KICAg
IElSdW5uYWJsZU9iamVjdCAqIFRoaXMpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJUnVubmFi
bGVPYmplY3RfSXNSdW5uaW5nX1N0dWIoIA0KICAgICAgSVJ1bm5hYmxlT2JqZWN0ICogVGhpcyk7
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJTW9uaWtlcl9CaW5kVG9PYmplY3RfUHJveHkoIA0KICAg
IElNb25pa2VyICogVGhpcywNCiAgICAgDQogICAgICAgSUJpbmRDdHggKnBiYywNCiAgICAgDQog
ICAgICAgSU1vbmlrZXIgKnBta1RvTGVmdCwNCiAgICAgDQogICAgICAgY29uc3QgSUlEICYgcmlp
ZFJlc3VsdCwNCiAgICAgDQogICAgICB2b2lkICoqcHB2UmVzdWx0KTsNCg0KDQogSFJFU1VMVCBf
X3N0ZGNhbGwgSU1vbmlrZXJfQmluZFRvT2JqZWN0X1N0dWIoIA0KICAgICAgSU1vbmlrZXIgKiBU
aGlzLA0KICAgICAgIElCaW5kQ3R4ICpwYmMsDQogICAgICAgSU1vbmlrZXIgKnBta1RvTGVmdCwN
CiAgICAgICBjb25zdCBJSUQgJiByaWlkUmVzdWx0LA0KICAgICAgIElVbmtub3duICoqcHB2UmVz
dWx0KTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElNb25pa2VyX0JpbmRUb1N0b3JhZ2VfUHJveHko
IA0KICAgIElNb25pa2VyICogVGhpcywNCiAgICAgDQogICAgICAgSUJpbmRDdHggKnBiYywNCiAg
ICAgDQogICAgICAgSU1vbmlrZXIgKnBta1RvTGVmdCwNCiAgICAgDQogICAgICAgY29uc3QgSUlE
ICYgcmlpZCwNCiAgICAgDQogICAgICB2b2lkICoqcHB2T2JqKTsNCg0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSU1vbmlrZXJfQmluZFRvU3RvcmFnZV9TdHViKCANCiAgICAgIElNb25pa2VyICogVGhp
cywNCiAgICAgICBJQmluZEN0eCAqcGJjLA0KICAgICAgIElNb25pa2VyICpwbWtUb0xlZnQsDQog
ICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgICBJVW5rbm93biAqKnBwdk9iaik7DQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJRW51bVNUQVRTVEdfTmV4dF9Qcm94eSggDQogICAgSUVudW1TVEFU
U1RHICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgDQogICAgICAgU1RBVFNURyAqcmdl
bHQsDQogICAgIA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQoNCiBIUkVTVUxUIF9f
c3RkY2FsbCBJRW51bVNUQVRTVEdfTmV4dF9TdHViKCANCiAgICAgIElFbnVtU1RBVFNURyAqIFRo
aXMsDQogICAgIFVMT05HIGNlbHQsDQogICAgICAgU1RBVFNURyAqcmdlbHQsDQogICAgICAgVUxP
TkcgKnBjZWx0RmV0Y2hlZCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJU3RvcmFnZV9PcGVuU3Ry
ZWFtX1Byb3h5KCANCiAgICBJU3RvcmFnZSAqIFRoaXMsDQogICAgIA0KICAgICAgIGNvbnN0IE9M
RUNIQVIgKnB3Y3NOYW1lLA0KICAgICANCiAgICAgICB2b2lkICpyZXNlcnZlZDEsDQogICAgIERX
T1JEIGdyZk1vZGUsDQogICAgIERXT1JEIHJlc2VydmVkMiwNCiAgICAgDQogICAgICBJU3RyZWFt
ICoqcHBzdG0pOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJU3RvcmFnZV9PcGVuU3RyZWFtX1N0
dWIoIA0KICAgICAgSVN0b3JhZ2UgKiBUaGlzLA0KICAgICAgIGNvbnN0IE9MRUNIQVIgKnB3Y3NO
YW1lLA0KICAgICBVTE9ORyBjYlJlc2VydmVkMSwNCiAgICAgICBieXRlICpyZXNlcnZlZDEsDQog
ICAgIERXT1JEIGdyZk1vZGUsDQogICAgIERXT1JEIHJlc2VydmVkMiwNCiAgICAgICBJU3RyZWFt
ICoqcHBzdG0pOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVN0b3JhZ2VfQ29weVRvX1Byb3h5KCAN
CiAgICBJU3RvcmFnZSAqIFRoaXMsDQogICAgIERXT1JEIGNpaWRFeGNsdWRlLA0KICAgICANCiAg
ICAgICBjb25zdCBJSUQgKnJnaWlkRXhjbHVkZSwNCiAgICAgDQogICAgICAgU05CIHNuYkV4Y2x1
ZGUsDQogICAgIA0KICAgICAgIElTdG9yYWdlICpwc3RnRGVzdCk7DQoNCg0KIEhSRVNVTFQgX19z
dGRjYWxsIElTdG9yYWdlX0NvcHlUb19TdHViKCANCiAgICAgIElTdG9yYWdlICogVGhpcywNCiAg
ICAgRFdPUkQgY2lpZEV4Y2x1ZGUsDQogICAgICAgY29uc3QgSUlEICpyZ2lpZEV4Y2x1ZGUsDQog
ICAgICAgU05CIHNuYkV4Y2x1ZGUsDQogICAgICAgSVN0b3JhZ2UgKnBzdGdEZXN0KTsNCg0KIEhS
RVNVTFQgX19zdGRjYWxsIElTdG9yYWdlX0VudW1FbGVtZW50c19Qcm94eSggDQogICAgSVN0b3Jh
Z2UgKiBUaGlzLA0KICAgICANCiAgICAgICBEV09SRCByZXNlcnZlZDEsDQogICAgIA0KICAgICAg
IHZvaWQgKnJlc2VydmVkMiwNCiAgICAgDQogICAgICAgRFdPUkQgcmVzZXJ2ZWQzLA0KICAgICAN
CiAgICAgIElFbnVtU1RBVFNURyAqKnBwZW51bSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElT
dG9yYWdlX0VudW1FbGVtZW50c19TdHViKCANCiAgICAgIElTdG9yYWdlICogVGhpcywNCiAgICAg
RFdPUkQgcmVzZXJ2ZWQxLA0KICAgICBVTE9ORyBjYlJlc2VydmVkMiwNCiAgICAgICBieXRlICpy
ZXNlcnZlZDIsDQogICAgIERXT1JEIHJlc2VydmVkMywNCiAgICAgICBJRW51bVNUQVRTVEcgKipw
cGVudW0pOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUxvY2tCeXRlc19SZWFkQXRfUHJveHkoIA0K
ICAgIElMb2NrQnl0ZXMgKiBUaGlzLA0KICAgICBVTEFSR0VfSU5URUdFUiB1bE9mZnNldCwNCiAg
ICAgDQogICAgICAgdm9pZCAqcHYsDQogICAgIFVMT05HIGNiLA0KICAgICANCiAgICAgICBVTE9O
RyAqcGNiUmVhZCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElMb2NrQnl0ZXNfUmVhZEF0X1N0
dWIoIA0KICAgICAgSUxvY2tCeXRlcyAqIFRoaXMsDQogICAgIFVMQVJHRV9JTlRFR0VSIHVsT2Zm
c2V0LA0KICAgICAgIGJ5dGUgKnB2LA0KICAgICBVTE9ORyBjYiwNCiAgICAgICBVTE9ORyAqcGNi
UmVhZCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJTG9ja0J5dGVzX1dyaXRlQXRfUHJveHkoIA0K
ICAgIElMb2NrQnl0ZXMgKiBUaGlzLA0KICAgICBVTEFSR0VfSU5URUdFUiB1bE9mZnNldCwNCiAg
ICAgDQogICAgICAgY29uc3Qgdm9pZCAqcHYsDQogICAgIFVMT05HIGNiLA0KICAgICANCiAgICAg
ICBVTE9ORyAqcGNiV3JpdHRlbik7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElMb2NrQnl0ZXNf
V3JpdGVBdF9TdHViKCANCiAgICAgIElMb2NrQnl0ZXMgKiBUaGlzLA0KICAgICBVTEFSR0VfSU5U
RUdFUiB1bE9mZnNldCwNCiAgICAgICBjb25zdCBieXRlICpwdiwNCiAgICAgVUxPTkcgY2IsDQog
ICAgICAgVUxPTkcgKnBjYldyaXR0ZW4pOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1GT1JN
QVRFVENfTmV4dF9Qcm94eSggDQogICAgSUVudW1GT1JNQVRFVEMgKiBUaGlzLA0KICAgICBVTE9O
RyBjZWx0LA0KICAgICANCiAgICAgICBGT1JNQVRFVEMgKnJnZWx0LA0KICAgICANCiAgICAgICBV
TE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1GT1JNQVRF
VENfTmV4dF9TdHViKCANCiAgICAgIElFbnVtRk9STUFURVRDICogVGhpcywNCiAgICAgVUxPTkcg
Y2VsdCwNCiAgICAgICBGT1JNQVRFVEMgKnJnZWx0LA0KICAgICAgIFVMT05HICpwY2VsdEZldGNo
ZWQpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1TVEFUREFUQV9OZXh0X1Byb3h5KCANCiAg
ICBJRW51bVNUQVREQVRBICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgDQogICAgICAg
U1RBVERBVEEgKnJnZWx0LA0KICAgICANCiAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0K
DQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1TVEFUREFUQV9OZXh0X1N0dWIoIA0KICAgICAgSUVu
dW1TVEFUREFUQSAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQsDQogICAgICAgU1RBVERBVEEgKnJn
ZWx0LA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQogdm9pZCBfX3N0ZGNhbGwgSUFk
dmlzZVNpbmtfT25EYXRhQ2hhbmdlX1Byb3h5KCANCiAgICBJQWR2aXNlU2luayAqIFRoaXMsDQog
ICAgIA0KICAgICAgIEZPUk1BVEVUQyAqcEZvcm1hdGV0YywNCiAgICAgDQogICAgICAgU1RHTUVE
SVVNICpwU3RnbWVkKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmtfT25EYXRh
Q2hhbmdlX1N0dWIoIA0KICAgICAgSUFkdmlzZVNpbmsgKiBUaGlzLA0KICAgICAgIEZPUk1BVEVU
QyAqcEZvcm1hdGV0YywNCiAgICAgICBBU1lOQ19TVEdNRURJVU0gKnBTdGdtZWQpOw0KDQogdm9p
ZCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmtfT25WaWV3Q2hhbmdlX1Byb3h5KCANCiAgICBJQWR2aXNl
U2luayAqIFRoaXMsDQogICAgIERXT1JEIGR3QXNwZWN0LA0KICAgICBMT05HIGxpbmRleCk7DQoN
Cg0KIEhSRVNVTFQgX19zdGRjYWxsIElBZHZpc2VTaW5rX09uVmlld0NoYW5nZV9TdHViKCANCiAg
ICAgIElBZHZpc2VTaW5rICogVGhpcywNCiAgICAgRFdPUkQgZHdBc3BlY3QsDQogICAgIExPTkcg
bGluZGV4KTsNCg0KIHZvaWQgX19zdGRjYWxsIElBZHZpc2VTaW5rX09uUmVuYW1lX1Byb3h5KCAN
CiAgICBJQWR2aXNlU2luayAqIFRoaXMsDQogICAgIA0KICAgICAgIElNb25pa2VyICpwbWspOw0K
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJQWR2aXNlU2lua19PblJlbmFtZV9TdHViKCANCiAgICAg
IElBZHZpc2VTaW5rICogVGhpcywNCiAgICAgICBJTW9uaWtlciAqcG1rKTsNCg0KIHZvaWQgX19z
dGRjYWxsIElBZHZpc2VTaW5rX09uU2F2ZV9Qcm94eSggDQogICAgSUFkdmlzZVNpbmsgKiBUaGlz
KTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmtfT25TYXZlX1N0dWIoIA0KICAg
ICAgSUFkdmlzZVNpbmsgKiBUaGlzKTsNCg0KIHZvaWQgX19zdGRjYWxsIElBZHZpc2VTaW5rX09u
Q2xvc2VfUHJveHkoIA0KICAgIElBZHZpc2VTaW5rICogVGhpcyk7DQoNCg0KIEhSRVNVTFQgX19z
dGRjYWxsIElBZHZpc2VTaW5rX09uQ2xvc2VfU3R1YiggDQogICAgICBJQWR2aXNlU2luayAqIFRo
aXMpOw0KDQogdm9pZCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19CZWdpbl9PbkRhdGFDaGFu
Z2VfUHJveHkoIA0KICAgIEFzeW5jSUFkdmlzZVNpbmsgKiBUaGlzLA0KICAgICANCiAgICAgICBG
T1JNQVRFVEMgKnBGb3JtYXRldGMsDQogICAgIA0KICAgICAgIFNUR01FRElVTSAqcFN0Z21lZCk7
DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIEFzeW5jSUFkdmlzZVNpbmtfQmVnaW5fT25EYXRhQ2hh
bmdlX1N0dWIoIA0KICAgICAgQXN5bmNJQWR2aXNlU2luayAqIFRoaXMsDQogICAgICAgRk9STUFU
RVRDICpwRm9ybWF0ZXRjLA0KICAgICAgIEFTWU5DX1NUR01FRElVTSAqcFN0Z21lZCk7DQoNCiB2
b2lkIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rX0ZpbmlzaF9PbkRhdGFDaGFuZ2VfUHJveHko
IA0KICAgIEFzeW5jSUFkdmlzZVNpbmsgKiBUaGlzKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
QXN5bmNJQWR2aXNlU2lua19GaW5pc2hfT25EYXRhQ2hhbmdlX1N0dWIoIA0KICAgICAgQXN5bmNJ
QWR2aXNlU2luayAqIFRoaXMpOw0KDQogdm9pZCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19C
ZWdpbl9PblZpZXdDaGFuZ2VfUHJveHkoIA0KICAgIEFzeW5jSUFkdmlzZVNpbmsgKiBUaGlzLA0K
ICAgICBEV09SRCBkd0FzcGVjdCwNCiAgICAgTE9ORyBsaW5kZXgpOw0KDQoNCiBIUkVTVUxUIF9f
c3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rX0JlZ2luX09uVmlld0NoYW5nZV9TdHViKCANCiAgICAg
IEFzeW5jSUFkdmlzZVNpbmsgKiBUaGlzLA0KICAgICBEV09SRCBkd0FzcGVjdCwNCiAgICAgTE9O
RyBsaW5kZXgpOw0KDQogdm9pZCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19GaW5pc2hfT25W
aWV3Q2hhbmdlX1Byb3h5KCANCiAgICBBc3luY0lBZHZpc2VTaW5rICogVGhpcyk7DQoNCg0KIEhS
RVNVTFQgX19zdGRjYWxsIEFzeW5jSUFkdmlzZVNpbmtfRmluaXNoX09uVmlld0NoYW5nZV9TdHVi
KCANCiAgICAgIEFzeW5jSUFkdmlzZVNpbmsgKiBUaGlzKTsNCg0KIHZvaWQgX19zdGRjYWxsIEFz
eW5jSUFkdmlzZVNpbmtfQmVnaW5fT25SZW5hbWVfUHJveHkoIA0KICAgIEFzeW5jSUFkdmlzZVNp
bmsgKiBUaGlzLA0KICAgICANCiAgICAgICBJTW9uaWtlciAqcG1rKTsNCg0KDQogSFJFU1VMVCBf
X3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19CZWdpbl9PblJlbmFtZV9TdHViKCANCiAgICAgIEFz
eW5jSUFkdmlzZVNpbmsgKiBUaGlzLA0KICAgICAgIElNb25pa2VyICpwbWspOw0KDQogdm9pZCBf
X3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19GaW5pc2hfT25SZW5hbWVfUHJveHkoIA0KICAgIEFz
eW5jSUFkdmlzZVNpbmsgKiBUaGlzKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgQXN5bmNJQWR2
aXNlU2lua19GaW5pc2hfT25SZW5hbWVfU3R1YiggDQogICAgICBBc3luY0lBZHZpc2VTaW5rICog
VGhpcyk7DQoNCiB2b2lkIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rX0JlZ2luX09uU2F2ZV9Q
cm94eSggDQogICAgQXN5bmNJQWR2aXNlU2luayAqIFRoaXMpOw0KDQoNCiBIUkVTVUxUIF9fc3Rk
Y2FsbCBBc3luY0lBZHZpc2VTaW5rX0JlZ2luX09uU2F2ZV9TdHViKCANCiAgICAgIEFzeW5jSUFk
dmlzZVNpbmsgKiBUaGlzKTsNCg0KIHZvaWQgX19zdGRjYWxsIEFzeW5jSUFkdmlzZVNpbmtfRmlu
aXNoX09uU2F2ZV9Qcm94eSggDQogICAgQXN5bmNJQWR2aXNlU2luayAqIFRoaXMpOw0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rX0ZpbmlzaF9PblNhdmVfU3R1YiggDQog
ICAgICBBc3luY0lBZHZpc2VTaW5rICogVGhpcyk7DQoNCiB2b2lkIF9fc3RkY2FsbCBBc3luY0lB
ZHZpc2VTaW5rX0JlZ2luX09uQ2xvc2VfUHJveHkoIA0KICAgIEFzeW5jSUFkdmlzZVNpbmsgKiBU
aGlzKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19CZWdpbl9PbkNs
b3NlX1N0dWIoIA0KICAgICAgQXN5bmNJQWR2aXNlU2luayAqIFRoaXMpOw0KDQogdm9pZCBfX3N0
ZGNhbGwgQXN5bmNJQWR2aXNlU2lua19GaW5pc2hfT25DbG9zZV9Qcm94eSggDQogICAgQXN5bmNJ
QWR2aXNlU2luayAqIFRoaXMpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VT
aW5rX0ZpbmlzaF9PbkNsb3NlX1N0dWIoIA0KICAgICAgQXN5bmNJQWR2aXNlU2luayAqIFRoaXMp
Ow0KDQogdm9pZCBfX3N0ZGNhbGwgSUFkdmlzZVNpbmsyX09uTGlua1NyY0NoYW5nZV9Qcm94eSgg
DQogICAgSUFkdmlzZVNpbmsyICogVGhpcywNCiAgICAgDQogICAgICAgSU1vbmlrZXIgKnBtayk7
DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElBZHZpc2VTaW5rMl9PbkxpbmtTcmNDaGFuZ2VfU3R1
YiggDQogICAgICBJQWR2aXNlU2luazIgKiBUaGlzLA0KICAgICAgIElNb25pa2VyICpwbWspOw0K
DQogdm9pZCBfX3N0ZGNhbGwgQXN5bmNJQWR2aXNlU2luazJfQmVnaW5fT25MaW5rU3JjQ2hhbmdl
X1Byb3h5KCANCiAgICBBc3luY0lBZHZpc2VTaW5rMiAqIFRoaXMsDQogICAgIA0KICAgICAgIElN
b25pa2VyICpwbWspOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rMl9C
ZWdpbl9PbkxpbmtTcmNDaGFuZ2VfU3R1YiggDQogICAgICBBc3luY0lBZHZpc2VTaW5rMiAqIFRo
aXMsDQogICAgICAgSU1vbmlrZXIgKnBtayk7DQoNCiB2b2lkIF9fc3RkY2FsbCBBc3luY0lBZHZp
c2VTaW5rMl9GaW5pc2hfT25MaW5rU3JjQ2hhbmdlX1Byb3h5KCANCiAgICBBc3luY0lBZHZpc2VT
aW5rMiAqIFRoaXMpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBBc3luY0lBZHZpc2VTaW5rMl9G
aW5pc2hfT25MaW5rU3JjQ2hhbmdlX1N0dWIoIA0KICAgICAgQXN5bmNJQWR2aXNlU2luazIgKiBU
aGlzKTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElEYXRhT2JqZWN0X0dldERhdGFfUHJveHkoIA0K
ICAgIElEYXRhT2JqZWN0ICogVGhpcywNCiAgICAgDQogICAgICAgRk9STUFURVRDICpwZm9ybWF0
ZXRjSW4sDQogICAgIA0KICAgICAgIFNUR01FRElVTSAqcG1lZGl1bSk7DQoNCg0KIEhSRVNVTFQg
X19zdGRjYWxsIElEYXRhT2JqZWN0X0dldERhdGFfU3R1YiggDQogICAgICBJRGF0YU9iamVjdCAq
IFRoaXMsDQogICAgICAgRk9STUFURVRDICpwZm9ybWF0ZXRjSW4sDQogICAgICAgU1RHTUVESVVN
ICpwUmVtb3RlTWVkaXVtKTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElEYXRhT2JqZWN0X0dldERh
dGFIZXJlX1Byb3h5KCANCiAgICBJRGF0YU9iamVjdCAqIFRoaXMsDQogICAgIA0KICAgICAgIEZP
Uk1BVEVUQyAqcGZvcm1hdGV0YywNCiAgICAgDQogICAgICAgU1RHTUVESVVNICpwbWVkaXVtKTsN
Cg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSURhdGFPYmplY3RfR2V0RGF0YUhlcmVfU3R1YiggDQog
ICAgICBJRGF0YU9iamVjdCAqIFRoaXMsDQogICAgICAgRk9STUFURVRDICpwZm9ybWF0ZXRjLA0K
ICAgICAgIFNUR01FRElVTSAqcFJlbW90ZU1lZGl1bSk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJ
RGF0YU9iamVjdF9TZXREYXRhX1Byb3h5KCANCiAgICBJRGF0YU9iamVjdCAqIFRoaXMsDQogICAg
IA0KICAgICAgIEZPUk1BVEVUQyAqcGZvcm1hdGV0YywNCiAgICAgDQogICAgICAgU1RHTUVESVVN
ICpwbWVkaXVtLA0KICAgICBCT09MIGZSZWxlYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SURhdGFPYmplY3RfU2V0RGF0YV9TdHViKCANCiAgICAgIElEYXRhT2JqZWN0ICogVGhpcywNCiAg
ICAgICBGT1JNQVRFVEMgKnBmb3JtYXRldGMsDQogICAgICAgRkxBR19TVEdNRURJVU0gKnBtZWRp
dW0sDQogICAgIEJPT0wgZlJlbGVhc2UpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUZpbGxMb2Nr
Qnl0ZXNfRmlsbEFwcGVuZF9Qcm94eSggDQogICAgSUZpbGxMb2NrQnl0ZXMgKiBUaGlzLA0KICAg
ICANCiAgICAgICBjb25zdCB2b2lkICpwdiwNCiAgICAgDQogICAgICAgVUxPTkcgY2IsDQogICAg
IA0KICAgICAgIFVMT05HICpwY2JXcml0dGVuKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUZp
bGxMb2NrQnl0ZXNfRmlsbEFwcGVuZF9TdHViKCANCiAgICAgIElGaWxsTG9ja0J5dGVzICogVGhp
cywNCiAgICAgICBjb25zdCBieXRlICpwdiwNCiAgICAgVUxPTkcgY2IsDQogICAgICAgVUxPTkcg
KnBjYldyaXR0ZW4pOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUZpbGxMb2NrQnl0ZXNfRmlsbEF0
X1Byb3h5KCANCiAgICBJRmlsbExvY2tCeXRlcyAqIFRoaXMsDQogICAgIA0KICAgICAgIFVMQVJH
RV9JTlRFR0VSIHVsT2Zmc2V0LA0KICAgICANCiAgICAgICBjb25zdCB2b2lkICpwdiwNCiAgICAg
DQogICAgICAgVUxPTkcgY2IsDQogICAgIA0KICAgICAgIFVMT05HICpwY2JXcml0dGVuKTsNCg0K
DQogSFJFU1VMVCBfX3N0ZGNhbGwgSUZpbGxMb2NrQnl0ZXNfRmlsbEF0X1N0dWIoIA0KICAgICAg
SUZpbGxMb2NrQnl0ZXMgKiBUaGlzLA0KICAgICBVTEFSR0VfSU5URUdFUiB1bE9mZnNldCwNCiAg
ICAgICBjb25zdCBieXRlICpwdiwNCiAgICAgVUxPTkcgY2IsDQogICAgICAgVUxPTkcgKnBjYldy
aXR0ZW4pOw0KDQoNCg0KDQoNCg0KfQ0KI2xpbmUgMTUxNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwu
aCINCg0KI2xpbmUgMTUxNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmppZGwuaCINCg0KDQojbGluZSAyNSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGNvbWwyYXBpLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbGJh
c2UuaCINCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb3BpZGxiYXNlLmgiDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQojbGluZSAzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb3BpZGxiYXNlLmgiDQoN
CiANCg0KDQoNCnR5cGVkZWYgc3RydWN0IElQcm9wZXJ0eVN0b3JhZ2UgSVByb3BlcnR5U3RvcmFn
ZTsNCg0KI2xpbmUgNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsYmFzZS5oIg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBJUHJvcGVydHlTZXRTdG9yYWdlIElQcm9wZXJ0eVNldFN0b3JhZ2U7DQoNCiNs
aW5lIDU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbGJhc2UuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgSUVudW1TVEFUUFJPUFNURyBJRW51bVNUQVRQUk9QU1RHOw0KDQojbGluZSA2MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHByb3BpZGxiYXNlLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElFbnVtU1RBVFBS
T1BTRVRTVEcgSUVudW1TVEFUUFJPUFNFVFNURzsNCg0KI2xpbmUgNjggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9waWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0K
DQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQojbGluZSAzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCiANCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IElDcmVhdGVUeXBlSW5mbyBJQ3JlYXRlVHlwZUluZm87DQoNCiNsaW5lIDQ3ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2FpZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUNyZWF0ZVR5cGVJbmZvMiBJ
Q3JlYXRlVHlwZUluZm8yOw0KDQojbGluZSA1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IElDcmVhdGVUeXBlTGliIElDcmVhdGVUeXBlTGliOw0KDQojbGlu
ZSA2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElDcmVh
dGVUeXBlTGliMiBJQ3JlYXRlVHlwZUxpYjI7DQoNCiNsaW5lIDY4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Fp
ZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSURpc3BhdGNoIElEaXNwYXRjaDsNCg0KI2xp
bmUgNzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJRW51
bVZBUklBTlQgSUVudW1WQVJJQU5UOw0KDQojbGluZSA4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElUeXBlQ29tcCBJVHlwZUNvbXA7DQoNCiNsaW5lIDg5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVR5cGVJbmZv
IElUeXBlSW5mbzsNCg0KI2xpbmUgOTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCBJVHlwZUluZm8yIElUeXBlSW5mbzI7DQoNCiNsaW5lIDEwMyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElUeXBlTGliIElUeXBlTGli
Ow0KDQojbGluZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBJVHlwZUxpYjIgSVR5cGVMaWIyOw0KDQojbGluZSAxMTcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlk
bC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJVHlwZUNoYW5nZUV2ZW50cyBJVHlwZUNoYW5n
ZUV2ZW50czsNCg0KI2xpbmUgMTI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSUVycm9ySW5mbyBJRXJyb3JJbmZvOw0KDQojbGluZSAxMzEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvYWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQ3JlYXRlRXJyb3JJbmZvIElD
cmVhdGVFcnJvckluZm87DQoNCiNsaW5lIDEzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IElTdXBwb3J0RXJyb3JJbmZvIElTdXBwb3J0RXJyb3JJbmZvOw0K
DQojbGluZSAxNDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBJVHlwZUZhY3RvcnkgSVR5cGVGYWN0b3J5Ow0KDQojbGluZSAxNTIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJVHlwZU1hcnNoYWwgSVR5cGVNYXJzaGFs
Ow0KDQojbGluZSAxNTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBJUmVjb3JkSW5mbyBJUmVjb3JkSW5mbzsNCg0KI2xpbmUgMTY2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2FpZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUVycm9yTG9nIElFcnJvckxvZzsNCg0K
I2xpbmUgMTczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
SVByb3BlcnR5QmFnIElQcm9wZXJ0eUJhZzsNCg0KI2xpbmUgMTgwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Fp
ZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVR5cGVMaWJSZWdpc3RyYXRpb25SZWFkZXIg
SVR5cGVMaWJSZWdpc3RyYXRpb25SZWFkZXI7DQoNCiNsaW5lIDE4NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9h
aWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElUeXBlTGliUmVnaXN0cmF0aW9uIElUeXBl
TGliUmVnaXN0cmF0aW9uOw0KDQojbGluZSAxOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDInsNCiNsaW5lIDIwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoN
Cg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojbGluZSAyMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5o
Ig0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkgICAgDQojbGluZSAyMjEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvYWlkbC5oIg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDIyNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9h
aWRsLmgiDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0K
DQoNCg0KDQoNCiNsaW5lIDIzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
DQoNCg0KDQoNCiNsaW5lIDIzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
T25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1MyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9haWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gQXBwbGlj
YXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KZXh0
ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYWlkbF8wMDAwXzAwMDBfdjBfMF9jX2lmc3Bl
YzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2FpZGxfMDAwMF8wMDAwX3YwXzBf
c19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmIENZIENVUlJFTkNZOw0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdTQUZFQVJSQVlCT1VORA0KICAgIHsNCiAgICBVTE9ORyBjRWxlbWVudHM7DQog
ICAgTE9ORyBsTGJvdW5kOw0KICAgIH0gCVNBRkVBUlJBWUJPVU5EOw0KDQp0eXBlZGVmIHN0cnVj
dCB0YWdTQUZFQVJSQVlCT1VORCAqTFBTQUZFQVJSQVlCT1VORDsNCg0KDQp0eXBlZGVmICAgICBz
dHJ1Y3QgX3dpcmVWQVJJQU5UICp3aXJlVkFSSUFOVDsNCg0KdHlwZWRlZiAgICAgc3RydWN0IF93
aXJlQlJFQ09SRCAqd2lyZUJSRUNPUkQ7DQoNCnR5cGVkZWYgc3RydWN0IF93aXJlU0FGRUFSUl9C
U1RSDQogICAgew0KICAgIFVMT05HIFNpemU7DQogICAgIHdpcmVCU1RSICphQnN0cjsNCiAgICB9
IAlTQUZFQVJSX0JTVFI7DQoNCnR5cGVkZWYgc3RydWN0IF93aXJlU0FGRUFSUl9VTktOT1dODQog
ICAgew0KICAgIFVMT05HIFNpemU7DQogICAgIElVbmtub3duICoqYXBVbmtub3duOw0KICAgIH0g
CVNBRkVBUlJfVU5LTk9XTjsNCg0KdHlwZWRlZiBzdHJ1Y3QgX3dpcmVTQUZFQVJSX0RJU1BBVENI
DQogICAgew0KICAgIFVMT05HIFNpemU7DQogICAgIElEaXNwYXRjaCAqKmFwRGlzcGF0Y2g7DQog
ICAgfSAJU0FGRUFSUl9ESVNQQVRDSDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX3dpcmVTQUZFQVJSX1ZB
UklBTlQNCiAgICB7DQogICAgVUxPTkcgU2l6ZTsNCiAgICAgd2lyZVZBUklBTlQgKmFWYXJpYW50
Ow0KICAgIH0gCVNBRkVBUlJfVkFSSUFOVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX3dpcmVTQUZFQVJS
X0JSRUNPUkQNCiAgICB7DQogICAgVUxPTkcgU2l6ZTsNCiAgICAgd2lyZUJSRUNPUkQgKmFSZWNv
cmQ7DQogICAgfSAJU0FGRUFSUl9CUkVDT1JEOw0KDQp0eXBlZGVmIHN0cnVjdCBfd2lyZVNBRkVB
UlJfSEFWRUlJRA0KICAgIHsNCiAgICBVTE9ORyBTaXplOw0KICAgICBJVW5rbm93biAqKmFwVW5r
bm93bjsNCiAgICBJSUQgaWlkOw0KICAgIH0gCVNBRkVBUlJfSEFWRUlJRDsNCg0KdHlwZWRlZiAg
DQplbnVtIHRhZ1NGX1RZUEUNCiAgICB7DQogICAgICAgIFNGX0VSUk9SCT0gVlRfRVJST1IsDQog
ICAgICAgIFNGX0kxCT0gVlRfSTEsDQogICAgICAgIFNGX0kyCT0gVlRfSTIsDQogICAgICAgIFNG
X0k0CT0gVlRfSTQsDQogICAgICAgIFNGX0k4CT0gVlRfSTgsDQogICAgICAgIFNGX0JTVFIJPSBW
VF9CU1RSLA0KICAgICAgICBTRl9VTktOT1dOCT0gVlRfVU5LTk9XTiwNCiAgICAgICAgU0ZfRElT
UEFUQ0gJPSBWVF9ESVNQQVRDSCwNCiAgICAgICAgU0ZfVkFSSUFOVAk9IFZUX1ZBUklBTlQsDQog
ICAgICAgIFNGX1JFQ09SRAk9IFZUX1JFQ09SRCwNCiAgICAgICAgU0ZfSEFWRUlJRAk9ICggVlRf
VU5LTk9XTiB8IFZUX1JFU0VSVkVEICkgDQogICAgfSAJU0ZfVFlQRTsNCg0KdHlwZWRlZiBzdHJ1
Y3QgX3dpcmVTQUZFQVJSQVlfVU5JT04NCiAgICB7DQogICAgVUxPTkcgc2ZUeXBlOw0KICAgICAg
dW5pb24gX19NSURMX0lPbGVBdXRvbWF0aW9uVHlwZXNfMDAwMQ0KICAgICAgICB7DQogICAgICAg
ICBTQUZFQVJSX0JTVFIgQnN0clN0cjsNCiAgICAgICAgIFNBRkVBUlJfVU5LTk9XTiBVbmtub3du
U3RyOw0KICAgICAgICAgU0FGRUFSUl9ESVNQQVRDSCBEaXNwYXRjaFN0cjsNCiAgICAgICAgIFNB
RkVBUlJfVkFSSUFOVCBWYXJpYW50U3RyOw0KICAgICAgICAgU0FGRUFSUl9CUkVDT1JEIFJlY29y
ZFN0cjsNCiAgICAgICAgIFNBRkVBUlJfSEFWRUlJRCBIYXZlSWlkU3RyOw0KICAgICAgICAgQllU
RV9TSVpFREFSUiBCeXRlU3RyOw0KICAgICAgICAgV09SRF9TSVpFREFSUiBXb3JkU3RyOw0KICAg
ICAgICAgRFdPUkRfU0laRURBUlIgTG9uZ1N0cjsNCiAgICAgICAgIEhZUEVSX1NJWkVEQVJSIEh5
cGVyU3RyOw0KICAgICAgICB9IAl1Ow0KICAgIH0gCVNBRkVBUlJBWVVOSU9OOw0KDQp0eXBlZGVm
ICAgICBzdHJ1Y3QgX3dpcmVTQUZFQVJSQVkNCiAgICB7DQogICAgVVNIT1JUIGNEaW1zOw0KICAg
IFVTSE9SVCBmRmVhdHVyZXM7DQogICAgVUxPTkcgY2JFbGVtZW50czsNCiAgICBVTE9ORyBjTG9j
a3M7DQogICAgU0FGRUFSUkFZVU5JT04gdUFycmF5U3RydWN0czsNCiAgICAgU0FGRUFSUkFZQk9V
TkQgcmdzYWJvdW5kWyAxIF07DQogICAgfSAJKndpcmVTQUZFQVJSQVk7DQoNCnR5cGVkZWYgICAg
IHdpcmVTQUZFQVJSQVkgKndpcmVQU0FGRUFSUkFZOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdTQUZF
QVJSQVkNCiAgICB7DQogICAgVVNIT1JUIGNEaW1zOw0KICAgIFVTSE9SVCBmRmVhdHVyZXM7DQog
ICAgVUxPTkcgY2JFbGVtZW50czsNCiAgICBVTE9ORyBjTG9ja3M7DQogICAgUFZPSUQgcHZEYXRh
Ow0KICAgIFNBRkVBUlJBWUJPVU5EIHJnc2Fib3VuZFsgMSBdOw0KICAgIH0gCVNBRkVBUlJBWTsN
Cg0KdHlwZWRlZiAgU0FGRUFSUkFZICpMUFNBRkVBUlJBWTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDU5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Fp
ZGwuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDQ2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQp0eXBl
ZGVmICBzdHJ1Y3QgdGFnVkFSSUFOVCBWQVJJQU5UOw0KDQpzdHJ1Y3QgdGFnVkFSSUFOVA0KICAg
IHsNCiAgICB1bmlvbiANCiAgICAgICAgew0KICAgICAgICBzdHJ1Y3QgDQogICAgICAgICAgICB7
DQogICAgICAgICAgICBWQVJUWVBFIHZ0Ow0KICAgICAgICAgICAgV09SRCB3UmVzZXJ2ZWQxOw0K
ICAgICAgICAgICAgV09SRCB3UmVzZXJ2ZWQyOw0KICAgICAgICAgICAgV09SRCB3UmVzZXJ2ZWQz
Ow0KICAgICAgICAgICAgdW5pb24gDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IExPTkdMT05HIGxsVmFsOw0KICAgICAgICAgICAgICAgIExPTkcgbFZhbDsNCiAgICAgICAgICAg
ICAgICBCWVRFIGJWYWw7DQogICAgICAgICAgICAgICAgU0hPUlQgaVZhbDsNCiAgICAgICAgICAg
ICAgICBGTE9BVCBmbHRWYWw7DQogICAgICAgICAgICAgICAgRE9VQkxFIGRibFZhbDsNCiAgICAg
ICAgICAgICAgICBWQVJJQU5UX0JPT0wgYm9vbFZhbDsNCiAgICAgICAgICAgICAgICBWQVJJQU5U
X0JPT0wgX19PQlNPTEVURV9fVkFSSUFOVF9CT09MOw0KICAgICAgICAgICAgICAgIFNDT0RFIHNj
b2RlOw0KICAgICAgICAgICAgICAgIENZIGN5VmFsOw0KICAgICAgICAgICAgICAgIERBVEUgZGF0
ZTsNCiAgICAgICAgICAgICAgICBCU1RSIGJzdHJWYWw7DQogICAgICAgICAgICAgICAgSVVua25v
d24gKnB1bmtWYWw7DQogICAgICAgICAgICAgICAgSURpc3BhdGNoICpwZGlzcFZhbDsNCiAgICAg
ICAgICAgICAgICBTQUZFQVJSQVkgKnBhcnJheTsNCiAgICAgICAgICAgICAgICBCWVRFICpwYlZh
bDsNCiAgICAgICAgICAgICAgICBTSE9SVCAqcGlWYWw7DQogICAgICAgICAgICAgICAgTE9ORyAq
cGxWYWw7DQogICAgICAgICAgICAgICAgTE9OR0xPTkcgKnBsbFZhbDsNCiAgICAgICAgICAgICAg
ICBGTE9BVCAqcGZsdFZhbDsNCiAgICAgICAgICAgICAgICBET1VCTEUgKnBkYmxWYWw7DQogICAg
ICAgICAgICAgICAgVkFSSUFOVF9CT09MICpwYm9vbFZhbDsNCiAgICAgICAgICAgICAgICBWQVJJ
QU5UX0JPT0wgKl9fT0JTT0xFVEVfX1ZBUklBTlRfUEJPT0w7DQogICAgICAgICAgICAgICAgU0NP
REUgKnBzY29kZTsNCiAgICAgICAgICAgICAgICBDWSAqcGN5VmFsOw0KICAgICAgICAgICAgICAg
IERBVEUgKnBkYXRlOw0KICAgICAgICAgICAgICAgIEJTVFIgKnBic3RyVmFsOw0KICAgICAgICAg
ICAgICAgIElVbmtub3duICoqcHB1bmtWYWw7DQogICAgICAgICAgICAgICAgSURpc3BhdGNoICoq
cHBkaXNwVmFsOw0KICAgICAgICAgICAgICAgIFNBRkVBUlJBWSAqKnBwYXJyYXk7DQogICAgICAg
ICAgICAgICAgVkFSSUFOVCAqcHZhclZhbDsNCiAgICAgICAgICAgICAgICBQVk9JRCBieXJlZjsN
CiAgICAgICAgICAgICAgICBDSEFSIGNWYWw7DQogICAgICAgICAgICAgICAgVVNIT1JUIHVpVmFs
Ow0KICAgICAgICAgICAgICAgIFVMT05HIHVsVmFsOw0KICAgICAgICAgICAgICAgIFVMT05HTE9O
RyB1bGxWYWw7DQogICAgICAgICAgICAgICAgSU5UIGludFZhbDsNCiAgICAgICAgICAgICAgICBV
SU5UIHVpbnRWYWw7DQogICAgICAgICAgICAgICAgREVDSU1BTCAqcGRlY1ZhbDsNCiAgICAgICAg
ICAgICAgICBDSEFSICpwY1ZhbDsNCiAgICAgICAgICAgICAgICBVU0hPUlQgKnB1aVZhbDsNCiAg
ICAgICAgICAgICAgICBVTE9ORyAqcHVsVmFsOw0KICAgICAgICAgICAgICAgIFVMT05HTE9ORyAq
cHVsbFZhbDsNCiAgICAgICAgICAgICAgICBJTlQgKnBpbnRWYWw7DQogICAgICAgICAgICAgICAg
VUlOVCAqcHVpbnRWYWw7DQogICAgICAgICAgICAgICAgc3RydWN0IA0KICAgICAgICAgICAgICAg
ICAgICB7DQogICAgICAgICAgICAgICAgICAgIFBWT0lEIHB2UmVjb3JkOw0KICAgICAgICAgICAg
ICAgICAgICBJUmVjb3JkSW5mbyAqcFJlY0luZm87DQogICAgICAgICAgICAgICAgICAgIH0gCTsN
CiAgICAgICAgICAgICAgICB9IAk7DQogICAgICAgICAgICB9IAk7DQogICAgICAgIERFQ0lNQUwg
ZGVjVmFsOw0KICAgICAgICB9IAk7DQogICAgfSA7DQp0eXBlZGVmIFZBUklBTlQgKkxQVkFSSUFO
VDsNCg0KdHlwZWRlZiBWQVJJQU5UIFZBUklBTlRBUkc7DQoNCnR5cGVkZWYgVkFSSUFOVCAqTFBW
QVJJQU5UQVJHOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTUzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcb2FpZGwuaCINCiNsaW5lIDU1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCiNsaW5lIDU1
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0Kc3RydWN0IF93aXJlQlJFQ09SRA0KICAgIHsN
CiAgICBVTE9ORyBmRmxhZ3M7DQogICAgVUxPTkcgY2xTaXplOw0KICAgIElSZWNvcmRJbmZvICpw
UmVjSW5mbzsNCiAgICAgYnl0ZSAqcFJlY29yZDsNCiAgICB9IDsNCnN0cnVjdCBfd2lyZVZBUklB
TlQNCiAgICB7DQogICAgRFdPUkQgY2xTaXplOw0KICAgIERXT1JEIHJwY1Jlc2VydmVkOw0KICAg
IFVTSE9SVCB2dDsNCiAgICBVU0hPUlQgd1Jlc2VydmVkMTsNCiAgICBVU0hPUlQgd1Jlc2VydmVk
MjsNCiAgICBVU0hPUlQgd1Jlc2VydmVkMzsNCiAgICAgdW5pb24gDQogICAgICAgIHsNCiAgICAg
ICAgIExPTkdMT05HIGxsVmFsOw0KICAgICAgICAgTE9ORyBsVmFsOw0KICAgICAgICAgQllURSBi
VmFsOw0KICAgICAgICAgU0hPUlQgaVZhbDsNCiAgICAgICAgIEZMT0FUIGZsdFZhbDsNCiAgICAg
ICAgIERPVUJMRSBkYmxWYWw7DQogICAgICAgICBWQVJJQU5UX0JPT0wgYm9vbFZhbDsNCiAgICAg
ICAgIFNDT0RFIHNjb2RlOw0KICAgICAgICAgQ1kgY3lWYWw7DQogICAgICAgICBEQVRFIGRhdGU7
DQogICAgICAgICB3aXJlQlNUUiBic3RyVmFsOw0KICAgICAgICAgSVVua25vd24gKnB1bmtWYWw7
DQogICAgICAgICBJRGlzcGF0Y2ggKnBkaXNwVmFsOw0KICAgICAgICAgd2lyZVBTQUZFQVJSQVkg
cGFycmF5Ow0KICAgICAgICAgd2lyZUJSRUNPUkQgYnJlY1ZhbDsNCiAgICAgICAgIEJZVEUgKnBi
VmFsOw0KICAgICAgICAgU0hPUlQgKnBpVmFsOw0KICAgICAgICAgTE9ORyAqcGxWYWw7DQogICAg
ICAgICBMT05HTE9ORyAqcGxsVmFsOw0KICAgICAgICAgRkxPQVQgKnBmbHRWYWw7DQogICAgICAg
ICBET1VCTEUgKnBkYmxWYWw7DQogICAgICAgICBWQVJJQU5UX0JPT0wgKnBib29sVmFsOw0KICAg
ICAgICAgU0NPREUgKnBzY29kZTsNCiAgICAgICAgIENZICpwY3lWYWw7DQogICAgICAgICBEQVRF
ICpwZGF0ZTsNCiAgICAgICAgIHdpcmVCU1RSICpwYnN0clZhbDsNCiAgICAgICAgIElVbmtub3du
ICoqcHB1bmtWYWw7DQogICAgICAgICBJRGlzcGF0Y2ggKipwcGRpc3BWYWw7DQogICAgICAgICB3
aXJlUFNBRkVBUlJBWSAqcHBhcnJheTsNCiAgICAgICAgIHdpcmVWQVJJQU5UICpwdmFyVmFsOw0K
ICAgICAgICAgQ0hBUiBjVmFsOw0KICAgICAgICAgVVNIT1JUIHVpVmFsOw0KICAgICAgICAgVUxP
TkcgdWxWYWw7DQogICAgICAgICBVTE9OR0xPTkcgdWxsVmFsOw0KICAgICAgICAgSU5UIGludFZh
bDsNCiAgICAgICAgIFVJTlQgdWludFZhbDsNCiAgICAgICAgIERFQ0lNQUwgZGVjVmFsOw0KICAg
ICAgICAgREVDSU1BTCAqcGRlY1ZhbDsNCiAgICAgICAgIENIQVIgKnBjVmFsOw0KICAgICAgICAg
VVNIT1JUICpwdWlWYWw7DQogICAgICAgICBVTE9ORyAqcHVsVmFsOw0KICAgICAgICAgVUxPTkdM
T05HICpwdWxsVmFsOw0KICAgICAgICAgSU5UICpwaW50VmFsOw0KICAgICAgICAgVUlOVCAqcHVp
bnRWYWw7DQogICAgICAgICAgIA0KICAgICAgICAgICANCiAgICAgICAgfSAJOw0KICAgIH0gOw0K
dHlwZWRlZiBMT05HIERJU1BJRDsNCg0KdHlwZWRlZiBESVNQSUQgTUVNQkVSSUQ7DQoNCnR5cGVk
ZWYgRFdPUkQgSFJFRlRZUEU7DQoNCnR5cGVkZWYgIA0KZW51bSB0YWdUWVBFS0lORA0KICAgIHsN
CiAgICAgICAgVEtJTkRfRU5VTQk9IDAsDQogICAgICAgIFRLSU5EX1JFQ09SRAk9ICggVEtJTkRf
RU5VTSArIDEgKSAsDQogICAgICAgIFRLSU5EX01PRFVMRQk9ICggVEtJTkRfUkVDT1JEICsgMSAp
ICwNCiAgICAgICAgVEtJTkRfSU5URVJGQUNFCT0gKCBUS0lORF9NT0RVTEUgKyAxICkgLA0KICAg
ICAgICBUS0lORF9ESVNQQVRDSAk9ICggVEtJTkRfSU5URVJGQUNFICsgMSApICwNCiAgICAgICAg
VEtJTkRfQ09DTEFTUwk9ICggVEtJTkRfRElTUEFUQ0ggKyAxICkgLA0KICAgICAgICBUS0lORF9B
TElBUwk9ICggVEtJTkRfQ09DTEFTUyArIDEgKSAsDQogICAgICAgIFRLSU5EX1VOSU9OCT0gKCBU
S0lORF9BTElBUyArIDEgKSAsDQogICAgICAgIFRLSU5EX01BWAk9ICggVEtJTkRfVU5JT04gKyAx
ICkgDQogICAgfSAJVFlQRUtJTkQ7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ1RZUEVERVNDDQogICAg
ew0KICAgICB1bmlvbiANCiAgICAgICAgew0KICAgICAgICAgc3RydWN0IHRhZ1RZUEVERVNDICps
cHRkZXNjOw0KICAgICAgICAgc3RydWN0IHRhZ0FSUkFZREVTQyAqbHBhZGVzYzsNCiAgICAgICAg
IEhSRUZUWVBFIGhyZWZ0eXBlOw0KICAgICAgICAgICANCiAgICAgICAgfSAJOw0KICAgIFZBUlRZ
UEUgdnQ7DQogICAgfSAJVFlQRURFU0M7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0FSUkFZREVTQw0K
ICAgIHsNCiAgICBUWVBFREVTQyB0ZGVzY0VsZW07DQogICAgVVNIT1JUIGNEaW1zOw0KICAgICBT
QUZFQVJSQVlCT1VORCByZ2JvdW5kc1sgMSBdOw0KICAgIH0gCUFSUkFZREVTQzsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnUEFSQU1ERVNDRVgNCiAgICB7DQogICAgVUxPTkcgY0J5dGVzOw0KICAgIFZB
UklBTlRBUkcgdmFyRGVmYXVsdFZhbHVlOw0KICAgIH0gCVBBUkFNREVTQ0VYOw0KDQp0eXBlZGVm
IHN0cnVjdCB0YWdQQVJBTURFU0NFWCAqTFBQQVJBTURFU0NFWDsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnUEFSQU1ERVNDDQogICAgew0KICAgIExQUEFSQU1ERVNDRVggcHBhcmFtZGVzY2V4Ow0KICAg
IFVTSE9SVCB3UGFyYW1GbGFnczsNCiAgICB9IAlQQVJBTURFU0M7DQoNCnR5cGVkZWYgc3RydWN0
IHRhZ1BBUkFNREVTQyAqTFBQQVJBTURFU0M7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnSURMREVTQw0KICAgIHsNCiAgICBVTE9OR19QVFIgZHdS
ZXNlcnZlZDsNCiAgICBVU0hPUlQgd0lETEZsYWdzOw0KICAgIH0gCUlETERFU0M7DQoNCnR5cGVk
ZWYgc3RydWN0IHRhZ0lETERFU0MgKkxQSURMREVTQzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdFTEVNREVTQyB7DQogICAgVFlQRURFU0MgdGRlc2M7ICAgICAgICAgICAg
IA0KICAgIHVuaW9uIHsNCiAgICAgICAgSURMREVTQyBpZGxkZXNjOyAgICAgICAgDQogICAgICAg
IFBBUkFNREVTQyBwYXJhbWRlc2M7ICAgIA0KICAgIH0gOw0KfSBFTEVNREVTQywgKiBMUEVMRU1E
RVNDOw0KDQojbGluZSA3MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQp0eXBlZGVmIHN0cnVj
dCB0YWdUWVBFQVRUUg0KICAgIHsNCiAgICBHVUlEIGd1aWQ7DQogICAgTENJRCBsY2lkOw0KICAg
IERXT1JEIGR3UmVzZXJ2ZWQ7DQogICAgTUVNQkVSSUQgbWVtaWRDb25zdHJ1Y3RvcjsNCiAgICBN
RU1CRVJJRCBtZW1pZERlc3RydWN0b3I7DQogICAgTFBPTEVTVFIgbHBzdHJTY2hlbWE7DQogICAg
VUxPTkcgY2JTaXplSW5zdGFuY2U7DQogICAgVFlQRUtJTkQgdHlwZWtpbmQ7DQogICAgV09SRCBj
RnVuY3M7DQogICAgV09SRCBjVmFyczsNCiAgICBXT1JEIGNJbXBsVHlwZXM7DQogICAgV09SRCBj
YlNpemVWZnQ7DQogICAgV09SRCBjYkFsaWdubWVudDsNCiAgICBXT1JEIHdUeXBlRmxhZ3M7DQog
ICAgV09SRCB3TWFqb3JWZXJOdW07DQogICAgV09SRCB3TWlub3JWZXJOdW07DQogICAgVFlQRURF
U0MgdGRlc2NBbGlhczsNCiAgICBJRExERVNDIGlkbGRlc2NUeXBlOw0KICAgIH0gCVRZUEVBVFRS
Ow0KDQp0eXBlZGVmIHN0cnVjdCB0YWdUWVBFQVRUUiAqTFBUWVBFQVRUUjsNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnRElTUFBBUkFNUw0KICAgIHsNCiAgICAgVkFSSUFOVEFSRyAqcmd2YXJnOw0KICAg
ICBESVNQSUQgKnJnZGlzcGlkTmFtZWRBcmdzOw0KICAgIFVJTlQgY0FyZ3M7DQogICAgVUlOVCBj
TmFtZWRBcmdzOw0KICAgIH0gCURJU1BQQVJBTVM7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA3ODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdFWENFUElORk8gew0KICAgIFdPUkQgIHdDb2RlOw0KICAgIFdPUkQgIHdSZXNlcnZl
ZDsNCiAgICBCU1RSICBic3RyU291cmNlOw0KICAgIEJTVFIgIGJzdHJEZXNjcmlwdGlvbjsNCiAg
ICBCU1RSICBic3RySGVscEZpbGU7DQogICAgRFdPUkQgZHdIZWxwQ29udGV4dDsNCiAgICBQVk9J
RCBwdlJlc2VydmVkOw0KICAgIEhSRVNVTFQgKF9fc3RkY2FsbCAqcGZuRGVmZXJyZWRGaWxsSW4p
KHN0cnVjdCB0YWdFWENFUElORk8gKik7DQogICAgU0NPREUgc2NvZGU7DQp9IEVYQ0VQSU5GTywg
KiBMUEVYQ0VQSU5GTzsNCg0KI2xpbmUgNzk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KdHlw
ZWRlZiAgDQplbnVtIHRhZ0NBTExDT05WDQogICAgew0KICAgICAgICBDQ19GQVNUQ0FMTAk9IDAs
DQogICAgICAgIENDX0NERUNMCT0gMSwNCiAgICAgICAgQ0NfTVNDUEFTQ0FMCT0gKCBDQ19DREVD
TCArIDEgKSAsDQogICAgICAgIENDX1BBU0NBTAk9IENDX01TQ1BBU0NBTCwNCiAgICAgICAgQ0Nf
TUFDUEFTQ0FMCT0gKCBDQ19QQVNDQUwgKyAxICkgLA0KICAgICAgICBDQ19TVERDQUxMCT0gKCBD
Q19NQUNQQVNDQUwgKyAxICkgLA0KICAgICAgICBDQ19GUEZBU1RDQUxMCT0gKCBDQ19TVERDQUxM
ICsgMSApICwNCiAgICAgICAgQ0NfU1lTQ0FMTAk9ICggQ0NfRlBGQVNUQ0FMTCArIDEgKSAsDQog
ICAgICAgIENDX01QV0NERUNMCT0gKCBDQ19TWVNDQUxMICsgMSApICwNCiAgICAgICAgQ0NfTVBX
UEFTQ0FMCT0gKCBDQ19NUFdDREVDTCArIDEgKSAsDQogICAgICAgIENDX01BWAk9ICggQ0NfTVBX
UEFTQ0FMICsgMSApIA0KICAgIH0gCUNBTExDT05WOw0KDQp0eXBlZGVmICANCmVudW0gdGFnRlVO
Q0tJTkQNCiAgICB7DQogICAgICAgIEZVTkNfVklSVFVBTAk9IDAsDQogICAgICAgIEZVTkNfUFVS
RVZJUlRVQUwJPSAoIEZVTkNfVklSVFVBTCArIDEgKSAsDQogICAgICAgIEZVTkNfTk9OVklSVFVB
TAk9ICggRlVOQ19QVVJFVklSVFVBTCArIDEgKSAsDQogICAgICAgIEZVTkNfU1RBVElDCT0gKCBG
VU5DX05PTlZJUlRVQUwgKyAxICkgLA0KICAgICAgICBGVU5DX0RJU1BBVENICT0gKCBGVU5DX1NU
QVRJQyArIDEgKSANCiAgICB9IAlGVU5DS0lORDsNCg0KdHlwZWRlZiAgDQplbnVtIHRhZ0lOVk9L
RUtJTkQNCiAgICB7DQogICAgICAgIElOVk9LRV9GVU5DCT0gMSwNCiAgICAgICAgSU5WT0tFX1BS
T1BFUlRZR0VUCT0gMiwNCiAgICAgICAgSU5WT0tFX1BST1BFUlRZUFVUCT0gNCwNCiAgICAgICAg
SU5WT0tFX1BST1BFUlRZUFVUUkVGCT0gOA0KICAgIH0gCUlOVk9LRUtJTkQ7DQoNCnR5cGVkZWYg
c3RydWN0IHRhZ0ZVTkNERVNDDQogICAgew0KICAgIE1FTUJFUklEIG1lbWlkOw0KICAgICBTQ09E
RSAqbHByZ3Njb2RlOw0KICAgICBFTEVNREVTQyAqbHByZ2VsZW1kZXNjUGFyYW07DQogICAgRlVO
Q0tJTkQgZnVuY2tpbmQ7DQogICAgSU5WT0tFS0lORCBpbnZraW5kOw0KICAgIENBTExDT05WIGNh
bGxjb252Ow0KICAgIFNIT1JUIGNQYXJhbXM7DQogICAgU0hPUlQgY1BhcmFtc09wdDsNCiAgICBT
SE9SVCBvVmZ0Ow0KICAgIFNIT1JUIGNTY29kZXM7DQogICAgRUxFTURFU0MgZWxlbWRlc2NGdW5j
Ow0KICAgIFdPUkQgd0Z1bmNGbGFnczsNCiAgICB9IAlGVU5DREVTQzsNCg0KdHlwZWRlZiBzdHJ1
Y3QgdGFnRlVOQ0RFU0MgKkxQRlVOQ0RFU0M7DQoNCnR5cGVkZWYgIA0KZW51bSB0YWdWQVJLSU5E
DQogICAgew0KICAgICAgICBWQVJfUEVSSU5TVEFOQ0UJPSAwLA0KICAgICAgICBWQVJfU1RBVElD
CT0gKCBWQVJfUEVSSU5TVEFOQ0UgKyAxICkgLA0KICAgICAgICBWQVJfQ09OU1QJPSAoIFZBUl9T
VEFUSUMgKyAxICkgLA0KICAgICAgICBWQVJfRElTUEFUQ0gJPSAoIFZBUl9DT05TVCArIDEgKSAN
CiAgICB9IAlWQVJLSU5EOw0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnVkFS
REVTQw0KICAgIHsNCiAgICBNRU1CRVJJRCBtZW1pZDsNCiAgICBMUE9MRVNUUiBscHN0clNjaGVt
YTsNCiAgICAgdW5pb24gDQogICAgICAgIHsNCiAgICAgICAgIFVMT05HIG9JbnN0Ow0KICAgICAg
ICAgVkFSSUFOVCAqbHB2YXJWYWx1ZTsNCiAgICAgICAgfSAJOw0KICAgIEVMRU1ERVNDIGVsZW1k
ZXNjVmFyOw0KICAgIFdPUkQgd1ZhckZsYWdzOw0KICAgIFZBUktJTkQgdmFya2luZDsNCiAgICB9
IAlWQVJERVNDOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdWQVJERVNDICpMUFZBUkRFU0M7DQoNCnR5
cGVkZWYgDQplbnVtIHRhZ1RZUEVGTEFHUw0KICAgIHsNCiAgICAgICAgVFlQRUZMQUdfRkFQUE9C
SkVDVAk9IDB4MSwNCiAgICAgICAgVFlQRUZMQUdfRkNBTkNSRUFURQk9IDB4MiwNCiAgICAgICAg
VFlQRUZMQUdfRkxJQ0VOU0VECT0gMHg0LA0KICAgICAgICBUWVBFRkxBR19GUFJFREVDTElECT0g
MHg4LA0KICAgICAgICBUWVBFRkxBR19GSElEREVOCT0gMHgxMCwNCiAgICAgICAgVFlQRUZMQUdf
RkNPTlRST0wJPSAweDIwLA0KICAgICAgICBUWVBFRkxBR19GRFVBTAk9IDB4NDAsDQogICAgICAg
IFRZUEVGTEFHX0ZOT05FWFRFTlNJQkxFCT0gMHg4MCwNCiAgICAgICAgVFlQRUZMQUdfRk9MRUFV
VE9NQVRJT04JPSAweDEwMCwNCiAgICAgICAgVFlQRUZMQUdfRlJFU1RSSUNURUQJPSAweDIwMCwN
CiAgICAgICAgVFlQRUZMQUdfRkFHR1JFR0FUQUJMRQk9IDB4NDAwLA0KICAgICAgICBUWVBFRkxB
R19GUkVQTEFDRUFCTEUJPSAweDgwMCwNCiAgICAgICAgVFlQRUZMQUdfRkRJU1BBVENIQUJMRQk9
IDB4MTAwMCwNCiAgICAgICAgVFlQRUZMQUdfRlJFVkVSU0VCSU5ECT0gMHgyMDAwLA0KICAgICAg
ICBUWVBFRkxBR19GUFJPWFkJPSAweDQwMDANCiAgICB9IAlUWVBFRkxBR1M7DQoNCnR5cGVkZWYg
DQplbnVtIHRhZ0ZVTkNGTEFHUw0KICAgIHsNCiAgICAgICAgRlVOQ0ZMQUdfRlJFU1RSSUNURUQJ
PSAweDEsDQogICAgICAgIEZVTkNGTEFHX0ZTT1VSQ0UJPSAweDIsDQogICAgICAgIEZVTkNGTEFH
X0ZCSU5EQUJMRQk9IDB4NCwNCiAgICAgICAgRlVOQ0ZMQUdfRlJFUVVFU1RFRElUCT0gMHg4LA0K
ICAgICAgICBGVU5DRkxBR19GRElTUExBWUJJTkQJPSAweDEwLA0KICAgICAgICBGVU5DRkxBR19G
REVGQVVMVEJJTkQJPSAweDIwLA0KICAgICAgICBGVU5DRkxBR19GSElEREVOCT0gMHg0MCwNCiAg
ICAgICAgRlVOQ0ZMQUdfRlVTRVNHRVRMQVNURVJST1IJPSAweDgwLA0KICAgICAgICBGVU5DRkxB
R19GREVGQVVMVENPTExFTEVNCT0gMHgxMDAsDQogICAgICAgIEZVTkNGTEFHX0ZVSURFRkFVTFQJ
PSAweDIwMCwNCiAgICAgICAgRlVOQ0ZMQUdfRk5PTkJST1dTQUJMRQk9IDB4NDAwLA0KICAgICAg
ICBGVU5DRkxBR19GUkVQTEFDRUFCTEUJPSAweDgwMCwNCiAgICAgICAgRlVOQ0ZMQUdfRklNTUVE
SUFURUJJTkQJPSAweDEwMDANCiAgICB9IAlGVU5DRkxBR1M7DQoNCnR5cGVkZWYgDQplbnVtIHRh
Z1ZBUkZMQUdTDQogICAgew0KICAgICAgICBWQVJGTEFHX0ZSRUFET05MWQk9IDB4MSwNCiAgICAg
ICAgVkFSRkxBR19GU09VUkNFCT0gMHgyLA0KICAgICAgICBWQVJGTEFHX0ZCSU5EQUJMRQk9IDB4
NCwNCiAgICAgICAgVkFSRkxBR19GUkVRVUVTVEVESVQJPSAweDgsDQogICAgICAgIFZBUkZMQUdf
RkRJU1BMQVlCSU5ECT0gMHgxMCwNCiAgICAgICAgVkFSRkxBR19GREVGQVVMVEJJTkQJPSAweDIw
LA0KICAgICAgICBWQVJGTEFHX0ZISURERU4JPSAweDQwLA0KICAgICAgICBWQVJGTEFHX0ZSRVNU
UklDVEVECT0gMHg4MCwNCiAgICAgICAgVkFSRkxBR19GREVGQVVMVENPTExFTEVNCT0gMHgxMDAs
DQogICAgICAgIFZBUkZMQUdfRlVJREVGQVVMVAk9IDB4MjAwLA0KICAgICAgICBWQVJGTEFHX0ZO
T05CUk9XU0FCTEUJPSAweDQwMCwNCiAgICAgICAgVkFSRkxBR19GUkVQTEFDRUFCTEUJPSAweDgw
MCwNCiAgICAgICAgVkFSRkxBR19GSU1NRURJQVRFQklORAk9IDB4MTAwMA0KICAgIH0gCVZBUkZM
QUdTOw0KDQp0eXBlZGVmICBzdHJ1Y3QgdGFnQ0xFQU5MT0NBTFNUT1JBR0UNCiAgICB7DQogICAg
SVVua25vd24gKnBJbnRlcmZhY2U7DQogICAgUFZPSUQgcFN0b3JhZ2U7DQogICAgRFdPUkQgZmxh
Z3M7DQogICAgfSAJQ0xFQU5MT0NBTFNUT1JBR0U7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NVU1RE
QVRBSVRFTQ0KICAgIHsNCiAgICBHVUlEIGd1aWQ7DQogICAgVkFSSUFOVEFSRyB2YXJWYWx1ZTsN
CiAgICB9IAlDVVNUREFUQUlURU07DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NVU1REQVRBSVRFTSAq
TFBDVVNUREFUQUlURU07DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NVU1REQVRBDQogICAgew0KICAg
IERXT1JEIGNDdXN0RGF0YTsNCiAgICAgTFBDVVNUREFUQUlURU0gcHJnQ3VzdERhdGE7DQogICAg
fSAJQ1VTVERBVEE7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NVU1REQVRBICpMUENVU1REQVRBOw0K
DQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgSU9sZUF1dG9tYXRpb25UeXBlc192MV8wX2NfaWZz
cGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgSU9sZUF1dG9tYXRpb25UeXBlc192MV8wX3NfaWZz
cGVjOw0KI2xpbmUgOTY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQogDQoNCiNsaW5lIDk3
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZf
SEFORExFIF9fTUlETF9pdGZfb2FpZGxfMDAwMF8wMDAxX3YwXzBfY19pZnNwZWM7DQpleHRlcm4g
UlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29haWRsXzAwMDBfMDAwMV92MF8wX3NfaWZzcGVjOw0K
DQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgSUNyZWF0ZVR5cGVJbmZvICpMUENSRUFURVRZUEVJTkZP
Ow0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQ3JlYXRlVHlwZUluZm87DQoNCg0KICAg
IA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDIwNDA1LTAwMDAtMDAwMC1DMDAwLTAw
MDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElDcmVhdGVUeXBlSW5mbyA6
IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgU2V0R3VpZCggDQogICAgICAgICAgICAgY29uc3QgR1VJRCAmIGd1aWQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0VHlw
ZUZsYWdzKCANCiAgICAgICAgICAgICBVSU5UIHVUeXBlRmxhZ3MpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0RG9jU3RyaW5nKCANCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIExQT0xFU1RSIHBTdHJEb2MpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0SGVscENvbnRleHQoIA0KICAgICAg
ICAgICAgIERXT1JEIGR3SGVscENvbnRleHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0VmVyc2lvbiggDQogICAgICAgICAgICAgV09SRCB3TWFq
b3JWZXJOdW0sDQogICAgICAgICAgICAgV09SRCB3TWlub3JWZXJOdW0pID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQWRkUmVmVHlwZUluZm8oIA0KICAg
ICAgICAgICAgIElUeXBlSW5mbyAqcFRJbmZvLA0KICAgICAgICAgICAgIEhSRUZUWVBFICpwaFJl
ZlR5cGUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
QWRkRnVuY0Rlc2MoIA0KICAgICAgICAgICAgIFVJTlQgaW5kZXgsDQogICAgICAgICAgICAgRlVO
Q0RFU0MgKnBGdW5jRGVzYykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBBZGRJbXBsVHlwZSggDQogICAgICAgICAgICAgVUlOVCBpbmRleCwNCiAgICAg
ICAgICAgICBIUkVGVFlQRSBoUmVmVHlwZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRJbXBsVHlwZUZsYWdzKCANCiAgICAgICAgICAgICBVSU5U
IGluZGV4LA0KICAgICAgICAgICAgIElOVCBpbXBsVHlwZUZsYWdzKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldEFsaWdubWVudCggDQogICAgICAg
ICAgICAgV09SRCBjYkFsaWdubWVudCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBTZXRTY2hlbWEoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgTFBPTEVTVFIgcFN0clNjaGVtYSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBBZGRWYXJEZXNjKCANCiAgICAgICAgICAgICBVSU5UIGluZGV4LA0K
ICAgICAgICAgICAgIFZBUkRFU0MgKnBWYXJEZXNjKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldEZ1bmNBbmRQYXJhbU5hbWVzKCANCiAgICAgICAg
ICAgICBVSU5UIGluZGV4LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIg
KnJnc3pOYW1lcywNCiAgICAgICAgICAgICBVSU5UIGNOYW1lcykgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRWYXJOYW1lKCANCiAgICAgICAgICAg
ICBVSU5UIGluZGV4LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgc3pO
YW1lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNl
dFR5cGVEZXNjQWxpYXMoIA0KICAgICAgICAgICAgIFRZUEVERVNDICpwVERlc2NBbGlhcykgPSAw
Ow0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBEZWZpbmVGdW5j
QXNEbGxFbnRyeSggDQogICAgICAgICAgICAgVUlOVCBpbmRleCwNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIExQT0xFU1RSIHN6RGxsTmFtZSwNCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIExQT0xFU1RSIHN6UHJvY05hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0RnVuY0RvY1N0cmluZyggDQogICAgICAgICAgICAgVUlO
VCBpbmRleCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIExQT0xFU1RSIHN6RG9jU3Ry
aW5nKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNl
dFZhckRvY1N0cmluZyggDQogICAgICAgICAgICAgVUlOVCBpbmRleCwNCiAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgIExQT0xFU1RSIHN6RG9jU3RyaW5nKSA9IDA7DQogICAgICAgIA0KICAg
ICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldEZ1bmNIZWxwQ29udGV4dCggDQogICAg
ICAgICAgICAgVUlOVCBpbmRleCwNCiAgICAgICAgICAgICBEV09SRCBkd0hlbHBDb250ZXh0KSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldFZhckhl
bHBDb250ZXh0KCANCiAgICAgICAgICAgICBVSU5UIGluZGV4LA0KICAgICAgICAgICAgIERXT1JE
IGR3SGVscENvbnRleHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgU2V0TW9wcyggDQogICAgICAgICAgICAgVUlOVCBpbmRleCwNCiAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgIEJTVFIgYnN0ck1vcHMpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0VHlwZUlkbGRlc2MoIA0KICAgICAgICAgICAg
IElETERFU0MgKnBJZGxEZXNjKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIExheU91dCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxMzI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0KI2xpbmUg
MTMyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElD
cmVhdGVUeXBlSW5mbzIgKkxQQ1JFQVRFVFlQRUlORk8yOw0KDQoNCmV4dGVybiAiQyIgY29uc3Qg
SUlEIElJRF9JQ3JlYXRlVHlwZUluZm8yOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3Bl
Yyh1dWlkKCIwMDAyMDQwRS0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3Bl
Yyhub3Z0YWJsZSkNCiAgICBJQ3JlYXRlVHlwZUluZm8yIDogcHVibGljIElDcmVhdGVUeXBlSW5m
bw0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
RGVsZXRlRnVuY0Rlc2MoIA0KICAgICAgICAgICAgIFVJTlQgaW5kZXgpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRGVsZXRlRnVuY0Rlc2NCeU1lbUlk
KCANCiAgICAgICAgICAgICBNRU1CRVJJRCBtZW1pZCwNCiAgICAgICAgICAgICBJTlZPS0VLSU5E
IGludktpbmQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgRGVsZXRlVmFyRGVzYyggDQogICAgICAgICAgICAgVUlOVCBpbmRleCkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBEZWxldGVWYXJEZXNjQnlNZW1J
ZCggDQogICAgICAgICAgICAgTUVNQkVSSUQgbWVtaWQpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRGVsZXRlSW1wbFR5cGUoIA0KICAgICAgICAgICAg
IFVJTlQgaW5kZXgpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgU2V0Q3VzdERhdGEoIA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBndWlkLA0KICAg
ICAgICAgICAgIFZBUklBTlQgKnBWYXJWYWwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0RnVuY0N1c3REYXRhKCANCiAgICAgICAgICAgICBVSU5U
IGluZGV4LA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBndWlkLA0KICAgICAgICAgICAgIFZB
UklBTlQgKnBWYXJWYWwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgU2V0UGFyYW1DdXN0RGF0YSggDQogICAgICAgICAgICAgVUlOVCBpbmRleEZ1bmMs
DQogICAgICAgICAgICAgVUlOVCBpbmRleFBhcmFtLA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQg
JiBndWlkLA0KICAgICAgICAgICAgIFZBUklBTlQgKnBWYXJWYWwpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0VmFyQ3VzdERhdGEoIA0KICAgICAg
ICAgICAgIFVJTlQgaW5kZXgsDQogICAgICAgICAgICAgY29uc3QgR1VJRCAmIGd1aWQsDQogICAg
ICAgICAgICAgVkFSSUFOVCAqcFZhclZhbCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRJbXBsVHlwZUN1c3REYXRhKCANCiAgICAgICAgICAgICBV
SU5UIGluZGV4LA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBndWlkLA0KICAgICAgICAgICAg
IFZBUklBTlQgKnBWYXJWYWwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgU2V0SGVscFN0cmluZ0NvbnRleHQoIA0KICAgICAgICAgICAgIFVMT05HIGR3
SGVscFN0cmluZ0NvbnRleHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgU2V0RnVuY0hlbHBTdHJpbmdDb250ZXh0KCANCiAgICAgICAgICAgICBVSU5U
IGluZGV4LA0KICAgICAgICAgICAgIFVMT05HIGR3SGVscFN0cmluZ0NvbnRleHQpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0VmFySGVscFN0cmlu
Z0NvbnRleHQoIA0KICAgICAgICAgICAgIFVJTlQgaW5kZXgsDQogICAgICAgICAgICAgVUxPTkcg
ZHdIZWxwU3RyaW5nQ29udGV4dCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBJbnZhbGlkYXRlKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldE5hbWUoIA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgTFBPTEVTVFIgc3pOYW1lKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQog
ICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNzU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoN
Cg0KI2xpbmUgMTc2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5
cGVkZWYgIElDcmVhdGVUeXBlTGliICpMUENSRUFURVRZUEVMSUI7DQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBJSUQgSUlEX0lDcmVhdGVUeXBlTGliOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCIwMDAyMDQwNi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJQ3JlYXRlVHlwZUxpYiA6IHB1YmxpYyBJVW5rbm93bg0KICAg
IHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRl
VHlwZUluZm8oIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgc3pOYW1l
LA0KICAgICAgICAgICAgIFRZUEVLSU5EIHRraW5kLA0KICAgICAgICAgICAgIElDcmVhdGVUeXBl
SW5mbyAqKnBwQ1RJbmZvKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFNldE5hbWUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBPTEVT
VFIgc3pOYW1lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIFNldFZlcnNpb24oIA0KICAgICAgICAgICAgIFdPUkQgd01ham9yVmVyTnVtLA0KICAgICAg
ICAgICAgIFdPUkQgd01pbm9yVmVyTnVtKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIFNldEd1aWQoIA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBn
dWlkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNl
dERvY1N0cmluZyggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBMUE9MRVNUUiBzekRv
YykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRI
ZWxwRmlsZU5hbWUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgc3pI
ZWxwRmlsZU5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgU2V0SGVscENvbnRleHQoIA0KICAgICAgICAgICAgIERXT1JEIGR3SGVscENvbnRleHQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0TGNp
ZCggDQogICAgICAgICAgICAgTENJRCBsY2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldExpYkZsYWdzKCANCiAgICAgICAgICAgICBVSU5UIHVM
aWJGbGFncykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBTYXZlQWxsQ2hhbmdlcyggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTk0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoN
CiNsaW5lIDE5NDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBl
ZGVmICBJQ3JlYXRlVHlwZUxpYjIgKkxQQ1JFQVRFVFlQRUxJQjI7DQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBJSUQgSUlEX0lDcmVhdGVUeXBlTGliMjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVj
bHNwZWModXVpZCgiMDAwMjA0MEYtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVj
bHNwZWMobm92dGFibGUpDQogICAgSUNyZWF0ZVR5cGVMaWIyIDogcHVibGljIElDcmVhdGVUeXBl
TGliDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBEZWxldGVUeXBlSW5mbyggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBMUE9MRVNU
UiBzek5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgU2V0Q3VzdERhdGEoIA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBndWlkLA0KICAgICAg
ICAgICAgIFZBUklBTlQgKnBWYXJWYWwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBfX3N0ZGNhbGwgU2V0SGVscFN0cmluZ0NvbnRleHQoIA0KICAgICAgICAgICAgIFVM
T05HIGR3SGVscFN0cmluZ0NvbnRleHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBfX3N0ZGNhbGwgU2V0SGVscFN0cmluZ0RsbCggDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICBMUE9MRVNUUiBzekZpbGVOYW1lKSA9IDA7DQogICAgICAgIA0KICAgIH07DQog
ICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjEzNyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9h
aWRsLmgiDQoNCg0KDQoNCiNsaW5lIDIxNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0K
IA0KDQojbGluZSAyMTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
R2FtZXMgRmFtaWx5DQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29haWRs
XzAwMDBfMDAwNV92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0
Zl9vYWlkbF8wMDAwXzAwMDVfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYg
ICAgIElEaXNwYXRjaCAqTFBESVNQQVRDSDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlE
IElJRF9JRGlzcGF0Y2g7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAw
MDIwNDAwLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxl
KQ0KICAgIElEaXNwYXRjaCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0VHlwZUluZm9Db3VudCggDQogICAg
ICAgICAgICAgICBVSU5UICpwY3RpbmZvKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIEdldFR5cGVJbmZvKCANCiAgICAgICAgICAgICBVSU5UIGlUSW5m
bywNCiAgICAgICAgICAgICBMQ0lEIGxjaWQsDQogICAgICAgICAgICAgICBJVHlwZUluZm8gKipw
cFRJbmZvKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IEdldElEc09mTmFtZXMoIA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAg
ICAgICAgICAgIExQT0xFU1RSICpyZ3N6TmFtZXMsDQogICAgICAgICAgICAgICBVSU5UIGNOYW1l
cywNCiAgICAgICAgICAgICBMQ0lEIGxjaWQsDQogICAgICAgICAgICAgICBESVNQSUQgKnJnRGlz
cElkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBJ
bnZva2UoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRElTUElEIGRpc3BJZE1lbWJl
ciwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICBMQ0lEIGxjaWQsDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICBXT1JEIHdGbGFncywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERJ
U1BQQVJBTVMgKnBEaXNwUGFyYW1zLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgVkFS
SUFOVCAqcFZhclJlc3VsdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEVYQ0VQSU5G
TyAqcEV4Y2VwSW5mbywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFVJTlQgKnB1QXJn
RXJyKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAyMzM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCiBIUkVTVUxUIF9fc3RkY2Fs
bCBJRGlzcGF0Y2hfUmVtb3RlSW52b2tlX1Byb3h5KCANCiAgICAgIElEaXNwYXRjaCAqIFRoaXMs
DQogICAgIERJU1BJRCBkaXNwSWRNZW1iZXIsDQogICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAg
ICAgTENJRCBsY2lkLA0KICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgIERJU1BQQVJBTVMgKnBE
aXNwUGFyYW1zLA0KICAgICAgIFZBUklBTlQgKnBWYXJSZXN1bHQsDQogICAgICAgRVhDRVBJTkZP
ICpwRXhjZXBJbmZvLA0KICAgICAgIFVJTlQgKnBBcmdFcnIsDQogICAgIFVJTlQgY1ZhclJlZiwN
CiAgICAgICBVSU5UICpyZ1ZhclJlZklkeCwNCiAgICAgICBWQVJJQU5UQVJHICpyZ1ZhclJlZik7
DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSURpc3BhdGNoX1JlbW90ZUludm9rZV9TdHViKA0KICAgIElS
cGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxC
dWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0
dWJQaGFzZSk7DQoNCg0KDQojbGluZSAyMzYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoN
Cg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSUVudW1WQVJJQU5UICpMUEVOVU1WQVJJQU5UOw0KDQoN
CmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRW51bVZBUklBTlQ7DQoNCg0KICAgIA0KICAgIHN0
cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDIwNDA0LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0
NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElFbnVtVkFSSUFOVCA6IHB1YmxpYyBJVW5r
bm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRj
YWxsIE5leHQoIA0KICAgICAgICAgICAgIFVMT05HIGNlbHQsDQogICAgICAgICAgICAgVkFSSUFO
VCAqcmdWYXIsDQogICAgICAgICAgICAgVUxPTkcgKnBDZWx0RmV0Y2hlZCkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTa2lwKCANCiAgICAgICAgICAg
ICBVTE9ORyBjZWx0KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIFJlc2V0KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIENsb25lKCANCiAgICAgICAgICAgICAgIElFbnVtVkFSSUFOVCAqKnBwRW51
bSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAyNDcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJRW51bVZBUklBTlRfUmVtb3RlTmV4dF9Qcm94eSggDQogICAgICBJ
RW51bVZBUklBTlQgKiBUaGlzLA0KICAgICBVTE9ORyBjZWx0LA0KICAgICAgIFZBUklBTlQgKnJn
VmFyLA0KICAgICAgIFVMT05HICpwQ2VsdEZldGNoZWQpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElF
bnVtVkFSSUFOVF9SZW1vdGVOZXh0X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQog
ICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NB
R0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5l
IDI0ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAg
ICBJVHlwZUNvbXAgKkxQVFlQRUNPTVA7DQoNCnR5cGVkZWYgIA0KZW51bSB0YWdERVNDS0lORA0K
ICAgIHsNCiAgICAgICAgREVTQ0tJTkRfTk9ORQk9IDAsDQogICAgICAgIERFU0NLSU5EX0ZVTkNE
RVNDCT0gKCBERVNDS0lORF9OT05FICsgMSApICwNCiAgICAgICAgREVTQ0tJTkRfVkFSREVTQwk9
ICggREVTQ0tJTkRfRlVOQ0RFU0MgKyAxICkgLA0KICAgICAgICBERVNDS0lORF9UWVBFQ09NUAk9
ICggREVTQ0tJTkRfVkFSREVTQyArIDEgKSAsDQogICAgICAgIERFU0NLSU5EX0lNUExJQ0lUQVBQ
T0JKCT0gKCBERVNDS0lORF9UWVBFQ09NUCArIDEgKSAsDQogICAgICAgIERFU0NLSU5EX01BWAk9
ICggREVTQ0tJTkRfSU1QTElDSVRBUFBPQkogKyAxICkgDQogICAgfSAJREVTQ0tJTkQ7DQoNCnR5
cGVkZWYgdW5pb24gdGFnQklORFBUUg0KICAgIHsNCiAgICBGVU5DREVTQyAqbHBmdW5jZGVzYzsN
CiAgICBWQVJERVNDICpscHZhcmRlc2M7DQogICAgSVR5cGVDb21wICpscHRjb21wOw0KICAgIH0g
CUJJTkRQVFI7DQoNCnR5cGVkZWYgdW5pb24gdGFnQklORFBUUiAqTFBCSU5EUFRSOw0KDQoNCmV4
dGVybiAiQyIgY29uc3QgSUlEIElJRF9JVHlwZUNvbXA7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjAwMDIwNDAzLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElUeXBlQ29tcCA6IHB1YmxpYyBJVW5rbm93bg0KICAg
IHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEJpbmQo
IA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgc3pOYW1lLA0KICAgICAg
ICAgICAgIFVMT05HIGxIYXNoVmFsLA0KICAgICAgICAgICAgIFdPUkQgd0ZsYWdzLA0KICAgICAg
ICAgICAgIElUeXBlSW5mbyAqKnBwVEluZm8sDQogICAgICAgICAgICAgREVTQ0tJTkQgKnBEZXNj
S2luZCwNCiAgICAgICAgICAgICBCSU5EUFRSICpwQmluZFB0cikgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgQmluZFR5cGUoIA0KICAgICAgICAgICAg
IA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgc3pOYW1lLA0KICAgICAgICAgICAgIFVMT05HIGxI
YXNoVmFsLA0KICAgICAgICAgICAgIElUeXBlSW5mbyAqKnBwVEluZm8sDQogICAgICAgICAgICAg
SVR5cGVDb21wICoqcHBUQ29tcCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2MTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0K
DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlQ29tcF9SZW1vdGVCaW5kX1Byb3h5KCANCiAg
ICAgIElUeXBlQ29tcCAqIFRoaXMsDQogICAgICAgTFBPTEVTVFIgc3pOYW1lLA0KICAgICBVTE9O
RyBsSGFzaFZhbCwNCiAgICAgV09SRCB3RmxhZ3MsDQogICAgICAgSVR5cGVJbmZvICoqcHBUSW5m
bywNCiAgICAgICBERVNDS0lORCAqcERlc2NLaW5kLA0KICAgICAgIExQRlVOQ0RFU0MgKnBwRnVu
Y0Rlc2MsDQogICAgICAgTFBWQVJERVNDICpwcFZhckRlc2MsDQogICAgICAgSVR5cGVDb21wICoq
cHBUeXBlQ29tcCwNCiAgICAgICBDTEVBTkxPQ0FMU1RPUkFHRSAqcER1bW15KTsNCg0KDQp2b2lk
IF9fc3RkY2FsbCBJVHlwZUNvbXBfUmVtb3RlQmluZF9TdHViKA0KICAgIElScGNTdHViQnVmZmVy
ICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAg
UFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoN
Cg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlQ29tcF9SZW1vdGVCaW5kVHlwZV9Qcm94eSggDQog
ICAgICBJVHlwZUNvbXAgKiBUaGlzLA0KICAgICAgIExQT0xFU1RSIHN6TmFtZSwNCiAgICAgVUxP
TkcgbEhhc2hWYWwsDQogICAgICAgSVR5cGVJbmZvICoqcHBUSW5mbyk7DQoNCg0Kdm9pZCBfX3N0
ZGNhbGwgSVR5cGVDb21wX1JlbW90ZUJpbmRUeXBlX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIg
KlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQ
UlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0K
DQoNCiNsaW5lIDI2NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KIA0KDQojbGluZSAy
NjYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJl
Z2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19J
Rl9IQU5ETEUgX19NSURMX2l0Zl9vYWlkbF8wMDAwXzAwMDhfdjBfMF9jX2lmc3BlYzsNCmV4dGVy
biBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2FpZGxfMDAwMF8wMDA4X3YwXzBfc19pZnNwZWM7
DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJVHlwZUluZm8gKkxQVFlQRUlORk87DQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lUeXBlSW5mbzsNCg0KDQogICAgDQogICAgc3RydWN0
IF9fZGVjbHNwZWModXVpZCgiMDAwMjA0MDEtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2Iikp
IF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVR5cGVJbmZvIDogcHVibGljIElVbmtub3duDQog
ICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0
VHlwZUF0dHIoIA0KICAgICAgICAgICAgIFRZUEVBVFRSICoqcHBUeXBlQXR0cikgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRUeXBlQ29tcCggDQog
ICAgICAgICAgICAgICBJVHlwZUNvbXAgKipwcFRDb21wKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRGdW5jRGVzYyggDQogICAgICAgICAgICAg
VUlOVCBpbmRleCwNCiAgICAgICAgICAgICBGVU5DREVTQyAqKnBwRnVuY0Rlc2MpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldFZhckRlc2MoIA0K
ICAgICAgICAgICAgIFVJTlQgaW5kZXgsDQogICAgICAgICAgICAgVkFSREVTQyAqKnBwVmFyRGVz
YykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0
TmFtZXMoIA0KICAgICAgICAgICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgQlNUUiAqcmdCc3RyTmFtZXMsDQogICAgICAgICAgICAgVUlOVCBjTWF4TmFt
ZXMsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVSU5UICpwY05hbWVzKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFJlZlR5cGVPZklt
cGxUeXBlKCANCiAgICAgICAgICAgICBVSU5UIGluZGV4LA0KICAgICAgICAgICAgICAgSFJFRlRZ
UEUgKnBSZWZUeXBlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIEdldEltcGxUeXBlRmxhZ3MoIA0KICAgICAgICAgICAgIFVJTlQgaW5kZXgsDQogICAg
ICAgICAgICAgICBJTlQgKnBJbXBsVHlwZUZsYWdzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRJRHNPZk5hbWVzKCANCiAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgIExQT0xFU1RSICpyZ3N6TmFtZXMsDQogICAgICAgICAgICAgVUlOVCBj
TmFtZXMsDQogICAgICAgICAgICAgTUVNQkVSSUQgKnBNZW1JZCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgSW52b2tlKCANCiAgICAgICAgICAgICBQ
Vk9JRCBwdkluc3RhbmNlLA0KICAgICAgICAgICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICAgICAg
ICAgIFdPUkQgd0ZsYWdzLA0KICAgICAgICAgICAgIERJU1BQQVJBTVMgKnBEaXNwUGFyYW1zLA0K
ICAgICAgICAgICAgIFZBUklBTlQgKnBWYXJSZXN1bHQsDQogICAgICAgICAgICAgRVhDRVBJTkZP
ICpwRXhjZXBJbmZvLA0KICAgICAgICAgICAgIFVJTlQgKnB1QXJnRXJyKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXREb2N1bWVudGF0aW9uKCAN
CiAgICAgICAgICAgICBNRU1CRVJJRCBtZW1pZCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgQlNUUiAqcEJzdHJOYW1lLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBCU1RSICpw
QnN0ckRvY1N0cmluZywNCiAgICAgICAgICAgICBEV09SRCAqcGR3SGVscENvbnRleHQsDQogICAg
ICAgICAgICAgDQogICAgICAgICAgICAgIEJTVFIgKnBCc3RySGVscEZpbGUpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldERsbEVudHJ5KCANCiAg
ICAgICAgICAgICBNRU1CRVJJRCBtZW1pZCwNCiAgICAgICAgICAgICBJTlZPS0VLSU5EIGludktp
bmQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIEJTVFIgKnBCc3RyRGxsTmFtZSwNCiAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgQlNUUiAqcEJzdHJOYW1lLA0KICAgICAgICAgICAg
IFdPUkQgKnB3T3JkaW5hbCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBHZXRSZWZUeXBlSW5mbyggDQogICAgICAgICAgICAgSFJFRlRZUEUgaFJlZlR5
cGUsDQogICAgICAgICAgICAgICBJVHlwZUluZm8gKipwcFRJbmZvKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBBZGRyZXNzT2ZNZW1iZXIoIA0KICAg
ICAgICAgICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICAgICAgICAgIElOVk9LRUtJTkQgaW52S2lu
ZCwNCiAgICAgICAgICAgICBQVk9JRCAqcHB2KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVJbnN0YW5jZSggDQogICAgICAgICAgICAgSVVu
a25vd24gKnBVbmtPdXRlciwNCiAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAg
ICAgICAgIFBWT0lEICpwcHZPYmopID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgR2V0TW9wcyggDQogICAgICAgICAgICAgTUVNQkVSSUQgbWVtaWQsDQog
ICAgICAgICAgICAgICBCU1RSICpwQnN0ck1vcHMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldENvbnRhaW5pbmdUeXBlTGliKCANCiAgICAgICAg
ICAgICBJVHlwZUxpYiAqKnBwVExpYiwNCiAgICAgICAgICAgICBVSU5UICpwSW5kZXgpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIHZvaWQgX19zdGRjYWxsIFJlbGVhc2VUeXBlQXR0
ciggDQogICAgICAgICAgICAgVFlQRUFUVFIgKnBUeXBlQXR0cikgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgUmVsZWFzZUZ1bmNEZXNjKCANCiAgICAgICAg
ICAgICBGVU5DREVTQyAqcEZ1bmNEZXNjKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
ICB2b2lkIF9fc3RkY2FsbCBSZWxlYXNlVmFyRGVzYyggDQogICAgICAgICAgICAgVkFSREVTQyAq
cFZhckRlc2MpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMDAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0K
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUluZm9fUmVtb3RlR2V0VHlwZUF0dHJfUHJveHko
IA0KICAgICAgSVR5cGVJbmZvICogVGhpcywNCiAgICAgICBMUFRZUEVBVFRSICpwcFR5cGVBdHRy
LA0KICAgICAgIENMRUFOTE9DQUxTVE9SQUdFICpwRHVtbXkpOw0KDQoNCnZvaWQgX19zdGRjYWxs
IElUeXBlSW5mb19SZW1vdGVHZXRUeXBlQXR0cl9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpU
aGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQ
Q19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0K
IEhSRVNVTFQgX19zdGRjYWxsIElUeXBlSW5mb19SZW1vdGVHZXRGdW5jRGVzY19Qcm94eSggDQog
ICAgICBJVHlwZUluZm8gKiBUaGlzLA0KICAgICBVSU5UIGluZGV4LA0KICAgICAgIExQRlVOQ0RF
U0MgKnBwRnVuY0Rlc2MsDQogICAgICAgQ0xFQU5MT0NBTFNUT1JBR0UgKnBEdW1teSk7DQoNCg0K
dm9pZCBfX3N0ZGNhbGwgSVR5cGVJbmZvX1JlbW90ZUdldEZ1bmNEZXNjX1N0dWIoDQogICAgSVJw
Y1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1
ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1
YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZvX1JlbW90ZUdldFZhckRl
c2NfUHJveHkoIA0KICAgICAgSVR5cGVJbmZvICogVGhpcywNCiAgICAgVUlOVCBpbmRleCwNCiAg
ICAgICBMUFZBUkRFU0MgKnBwVmFyRGVzYywNCiAgICAgICBDTEVBTkxPQ0FMU1RPUkFHRSAqcER1
bW15KTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJVHlwZUluZm9fUmVtb3RlR2V0VmFyRGVzY19TdHVi
KA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJw
Y0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09S
RCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlSW5mb19SZW1v
dGVHZXROYW1lc19Qcm94eSggDQogICAgICBJVHlwZUluZm8gKiBUaGlzLA0KICAgICBNRU1CRVJJ
RCBtZW1pZCwNCiAgICAgICBCU1RSICpyZ0JzdHJOYW1lcywNCiAgICAgVUlOVCBjTWF4TmFtZXMs
DQogICAgICAgVUlOVCAqcGNOYW1lcyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVR5cGVJbmZvX1Jl
bW90ZUdldE5hbWVzX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0No
YW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNN
ZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNh
bGwgSVR5cGVJbmZvX0xvY2FsR2V0SURzT2ZOYW1lc19Qcm94eSggDQogICAgICBJVHlwZUluZm8g
KiBUaGlzKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJVHlwZUluZm9fTG9jYWxHZXRJRHNPZk5hbWVz
X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIg
Kl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAg
IERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZv
X0xvY2FsSW52b2tlX1Byb3h5KCANCiAgICAgIElUeXBlSW5mbyAqIFRoaXMpOw0KDQoNCnZvaWQg
X19zdGRjYWxsIElUeXBlSW5mb19Mb2NhbEludm9rZV9TdHViKA0KICAgIElScGNTdHViQnVmZmVy
ICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAg
UFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoN
Cg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlSW5mb19SZW1vdGVHZXREb2N1bWVudGF0aW9uX1By
b3h5KCANCiAgICAgIElUeXBlSW5mbyAqIFRoaXMsDQogICAgIE1FTUJFUklEIG1lbWlkLA0KICAg
ICBEV09SRCByZWZQdHJGbGFncywNCiAgICAgICBCU1RSICpwQnN0ck5hbWUsDQogICAgICAgQlNU
UiAqcEJzdHJEb2NTdHJpbmcsDQogICAgICAgRFdPUkQgKnBkd0hlbHBDb250ZXh0LA0KICAgICAg
IEJTVFIgKnBCc3RySGVscEZpbGUpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElUeXBlSW5mb19SZW1v
dGVHZXREb2N1bWVudGF0aW9uX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAg
SVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0Ug
X3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBf
X3N0ZGNhbGwgSVR5cGVJbmZvX1JlbW90ZUdldERsbEVudHJ5X1Byb3h5KCANCiAgICAgIElUeXBl
SW5mbyAqIFRoaXMsDQogICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICBJTlZPS0VLSU5EIGludktp
bmQsDQogICAgIERXT1JEIHJlZlB0ckZsYWdzLA0KICAgICAgIEJTVFIgKnBCc3RyRGxsTmFtZSwN
CiAgICAgICBCU1RSICpwQnN0ck5hbWUsDQogICAgICAgV09SRCAqcHdPcmRpbmFsKTsNCg0KDQp2
b2lkIF9fc3RkY2FsbCBJVHlwZUluZm9fUmVtb3RlR2V0RGxsRW50cnlfU3R1YigNCiAgICBJUnBj
U3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVm
ZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHVi
UGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUluZm9fTG9jYWxBZGRyZXNzT2ZN
ZW1iZXJfUHJveHkoIA0KICAgICAgSVR5cGVJbmZvICogVGhpcyk7DQoNCg0Kdm9pZCBfX3N0ZGNh
bGwgSVR5cGVJbmZvX0xvY2FsQWRkcmVzc09mTWVtYmVyX1N0dWIoDQogICAgSVJwY1N0dWJCdWZm
ZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAg
ICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsN
Cg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZvX1JlbW90ZUNyZWF0ZUluc3RhbmNlX1By
b3h5KCANCiAgICAgIElUeXBlSW5mbyAqIFRoaXMsDQogICAgICAgY29uc3QgSUlEICYgcmlpZCwN
CiAgICAgICBJVW5rbm93biAqKnBwdk9iaik7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVR5cGVJbmZv
X1JlbW90ZUNyZWF0ZUluc3RhbmNlX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQog
ICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NB
R0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VM
VCBfX3N0ZGNhbGwgSVR5cGVJbmZvX1JlbW90ZUdldENvbnRhaW5pbmdUeXBlTGliX1Byb3h5KCAN
CiAgICAgIElUeXBlSW5mbyAqIFRoaXMsDQogICAgICAgSVR5cGVMaWIgKipwcFRMaWIsDQogICAg
ICAgVUlOVCAqcEluZGV4KTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJVHlwZUluZm9fUmVtb3RlR2V0
Q29udGFpbmluZ1R5cGVMaWJfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJ
UnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBf
cFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9f
c3RkY2FsbCBJVHlwZUluZm9fTG9jYWxSZWxlYXNlVHlwZUF0dHJfUHJveHkoIA0KICAgICAgSVR5
cGVJbmZvICogVGhpcyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVR5cGVJbmZvX0xvY2FsUmVsZWFz
ZVR5cGVBdHRyX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5u
ZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNz
YWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SVR5cGVJbmZvX0xvY2FsUmVsZWFzZUZ1bmNEZXNjX1Byb3h5KCANCiAgICAgIElUeXBlSW5mbyAq
IFRoaXMpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElUeXBlSW5mb19Mb2NhbFJlbGVhc2VGdW5jRGVz
Y19TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVy
ICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAg
ICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlSW5m
b19Mb2NhbFJlbGVhc2VWYXJEZXNjX1Byb3h5KCANCiAgICAgIElUeXBlSW5mbyAqIFRoaXMpOw0K
DQoNCnZvaWQgX19zdGRjYWxsIElUeXBlSW5mb19Mb2NhbFJlbGVhc2VWYXJEZXNjX1N0dWIoDQog
ICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hh
bm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpf
cGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDMxODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0K
DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJVHlwZUluZm8yICpMUFRZUEVJTkZPMjsNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVR5cGVJbmZvMjsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMjA0MTItMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVR5cGVJbmZvMiA6IHB1YmxpYyBJVHlwZUlu
Zm8NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IEdldFR5cGVLaW5kKCANCiAgICAgICAgICAgICAgIFRZUEVLSU5EICpwVHlwZUtpbmQpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0VHlwZUZsYWdz
KCANCiAgICAgICAgICAgICAgIFVMT05HICpwVHlwZUZsYWdzKSA9IDA7DQogICAgICAgIA0KICAg
ICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEZ1bmNJbmRleE9mTWVtSWQoIA0KICAg
ICAgICAgICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICAgICAgICAgIElOVk9LRUtJTkQgaW52S2lu
ZCwNCiAgICAgICAgICAgICAgIFVJTlQgKnBGdW5jSW5kZXgpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0VmFySW5kZXhPZk1lbUlkKCANCiAgICAg
ICAgICAgICBNRU1CRVJJRCBtZW1pZCwNCiAgICAgICAgICAgICAgIFVJTlQgKnBWYXJJbmRleCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRDdXN0
RGF0YSggDQogICAgICAgICAgICAgICBjb25zdCBHVUlEICYgZ3VpZCwNCiAgICAgICAgICAgICAg
IFZBUklBTlQgKnBWYXJWYWwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgR2V0RnVuY0N1c3REYXRhKCANCiAgICAgICAgICAgICBVSU5UIGluZGV4LA0K
ICAgICAgICAgICAgICAgY29uc3QgR1VJRCAmIGd1aWQsDQogICAgICAgICAgICAgICBWQVJJQU5U
ICpwVmFyVmFsKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIEdldFBhcmFtQ3VzdERhdGEoIA0KICAgICAgICAgICAgIFVJTlQgaW5kZXhGdW5jLA0KICAg
ICAgICAgICAgIFVJTlQgaW5kZXhQYXJhbSwNCiAgICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBn
dWlkLA0KICAgICAgICAgICAgICAgVkFSSUFOVCAqcFZhclZhbCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRWYXJDdXN0RGF0YSggDQogICAgICAg
ICAgICAgVUlOVCBpbmRleCwNCiAgICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBndWlkLA0KICAg
ICAgICAgICAgICAgVkFSSUFOVCAqcFZhclZhbCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRJbXBsVHlwZUN1c3REYXRhKCANCiAgICAgICAgICAg
ICBVSU5UIGluZGV4LA0KICAgICAgICAgICAgICAgY29uc3QgR1VJRCAmIGd1aWQsDQogICAgICAg
ICAgICAgICBWQVJJQU5UICpwVmFyVmFsKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
ICBIUkVTVUxUIF9fc3RkY2FsbCBHZXREb2N1bWVudGF0aW9uMiggDQogICAgICAgICAgICAgTUVN
QkVSSUQgbWVtaWQsDQogICAgICAgICAgICAgTENJRCBsY2lkLA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICBCU1RSICpwYnN0ckhlbHBTdHJpbmcsDQogICAgICAgICAgICAgRFdPUkQgKnBk
d0hlbHBTdHJpbmdDb250ZXh0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBCU1RSICpw
YnN0ckhlbHBTdHJpbmdEbGwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgR2V0QWxsQ3VzdERhdGEoIA0KICAgICAgICAgICAgICAgQ1VTVERBVEEgKnBD
dXN0RGF0YSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRBbGxGdW5jQ3VzdERhdGEoIA0KICAgICAgICAgICAgIFVJTlQgaW5kZXgsDQogICAgICAg
ICAgICAgICBDVVNUREFUQSAqcEN1c3REYXRhKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEFsbFBhcmFtQ3VzdERhdGEoIA0KICAgICAgICAgICAg
IFVJTlQgaW5kZXhGdW5jLA0KICAgICAgICAgICAgIFVJTlQgaW5kZXhQYXJhbSwNCiAgICAgICAg
ICAgICAgIENVU1REQVRBICpwQ3VzdERhdGEpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0QWxsVmFyQ3VzdERhdGEoIA0KICAgICAgICAgICAgIFVJ
TlQgaW5kZXgsDQogICAgICAgICAgICAgICBDVVNUREFUQSAqcEN1c3REYXRhKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEFsbEltcGxUeXBlQ3Vz
dERhdGEoIA0KICAgICAgICAgICAgIFVJTlQgaW5kZXgsDQogICAgICAgICAgICAgICBDVVNUREFU
QSAqcEN1c3REYXRhKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAzNjI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCiBIUkVTVUxUIF9fc3RkY2Fs
bCBJVHlwZUluZm8yX1JlbW90ZUdldERvY3VtZW50YXRpb24yX1Byb3h5KCANCiAgICAgIElUeXBl
SW5mbzIgKiBUaGlzLA0KICAgICBNRU1CRVJJRCBtZW1pZCwNCiAgICAgTENJRCBsY2lkLA0KICAg
ICBEV09SRCByZWZQdHJGbGFncywNCiAgICAgICBCU1RSICpwYnN0ckhlbHBTdHJpbmcsDQogICAg
ICAgRFdPUkQgKnBkd0hlbHBTdHJpbmdDb250ZXh0LA0KICAgICAgIEJTVFIgKnBic3RySGVscFN0
cmluZ0RsbCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVR5cGVJbmZvMl9SZW1vdGVHZXREb2N1bWVu
dGF0aW9uMl9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVs
QnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2Fn
ZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KDQojbGluZSAzNjQ2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2FpZGwuaCINCg0KDQoNCiANCg0KI2xpbmUgMzY1MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRs
LmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9I
QU5ETEUgX19NSURMX2l0Zl9vYWlkbF8wMDAwXzAwMTBfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBS
UENfSUZfSEFORExFIF9fTUlETF9pdGZfb2FpZGxfMDAwMF8wMDEwX3YwXzBfc19pZnNwZWM7DQoN
Cg0KDQoNCg0KIA0KDQp0eXBlZGVmICANCmVudW0gdGFnU1lTS0lORA0KICAgIHsNCiAgICAgICAg
U1lTX1dJTjE2CT0gMCwNCiAgICAgICAgU1lTX1dJTjMyCT0gKCBTWVNfV0lOMTYgKyAxICkgLA0K
ICAgICAgICBTWVNfTUFDCT0gKCBTWVNfV0lOMzIgKyAxICkgLA0KICAgICAgICBTWVNfV0lONjQJ
PSAoIFNZU19NQUMgKyAxICkgDQogICAgfSAJU1lTS0lORDsNCg0KdHlwZWRlZiAgDQplbnVtIHRh
Z0xJQkZMQUdTDQogICAgew0KICAgICAgICBMSUJGTEFHX0ZSRVNUUklDVEVECT0gMHgxLA0KICAg
ICAgICBMSUJGTEFHX0ZDT05UUk9MCT0gMHgyLA0KICAgICAgICBMSUJGTEFHX0ZISURERU4JPSAw
eDQsDQogICAgICAgIExJQkZMQUdfRkhBU0RJU0tJTUFHRQk9IDB4OA0KICAgIH0gCUxJQkZMQUdT
Ow0KDQp0eXBlZGVmICAgICBJVHlwZUxpYiAqTFBUWVBFTElCOw0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdUTElCQVRUUg0KICAgIHsNCiAgICBHVUlEIGd1aWQ7DQogICAgTENJRCBsY2lkOw0KICAgIFNZ
U0tJTkQgc3lza2luZDsNCiAgICBXT1JEIHdNYWpvclZlck51bTsNCiAgICBXT1JEIHdNaW5vclZl
ck51bTsNCiAgICBXT1JEIHdMaWJGbGFnczsNCiAgICB9IAlUTElCQVRUUjsNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnVExJQkFUVFIgKkxQVExJQkFUVFI7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQg
SUlEX0lUeXBlTGliOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAy
MDQwMi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJVHlwZUxpYiA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHZpcnR1YWwgIFVJTlQgX19zdGRjYWxsIEdldFR5cGVJbmZvQ291bnQoIHZvaWQpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0VHlwZUluZm8o
IA0KICAgICAgICAgICAgIFVJTlQgaW5kZXgsDQogICAgICAgICAgICAgICBJVHlwZUluZm8gKipw
cFRJbmZvKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IEdldFR5cGVJbmZvVHlwZSggDQogICAgICAgICAgICAgVUlOVCBpbmRleCwNCiAgICAgICAgICAg
ICAgIFRZUEVLSU5EICpwVEtpbmQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgR2V0VHlwZUluZm9PZkd1aWQoIA0KICAgICAgICAgICAgICAgY29uc3Qg
R1VJRCAmIGd1aWQsDQogICAgICAgICAgICAgICBJVHlwZUluZm8gKipwcFRpbmZvKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRMaWJBdHRyKCAN
CiAgICAgICAgICAgICBUTElCQVRUUiAqKnBwVExpYkF0dHIpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0VHlwZUNvbXAoIA0KICAgICAgICAgICAg
ICAgSVR5cGVDb21wICoqcHBUQ29tcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAg
SFJFU1VMVCBfX3N0ZGNhbGwgR2V0RG9jdW1lbnRhdGlvbiggDQogICAgICAgICAgICAgSU5UIGlu
ZGV4LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBCU1RSICpwQnN0ck5hbWUsDQogICAg
ICAgICAgICAgDQogICAgICAgICAgICAgIEJTVFIgKnBCc3RyRG9jU3RyaW5nLA0KICAgICAgICAg
ICAgIERXT1JEICpwZHdIZWxwQ29udGV4dCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
QlNUUiAqcEJzdHJIZWxwRmlsZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJF
U1VMVCBfX3N0ZGNhbGwgSXNOYW1lKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIExQ
T0xFU1RSIHN6TmFtZUJ1ZiwNCiAgICAgICAgICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgICAg
ICAgICBCT09MICpwZk5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNV
TFQgX19zdGRjYWxsIEZpbmROYW1lKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIExQ
T0xFU1RSIHN6TmFtZUJ1ZiwNCiAgICAgICAgICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgICAg
ICAgICBJVHlwZUluZm8gKipwcFRJbmZvLA0KICAgICAgICAgICAgIE1FTUJFUklEICpyZ01lbUlk
LA0KICAgICAgICAgICAgIFVTSE9SVCAqcGNGb3VuZCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCAgdm9pZCBfX3N0ZGNhbGwgUmVsZWFzZVRMaWJBdHRyKCANCiAgICAgICAgICAgICBU
TElCQVRUUiAqcFRMaWJBdHRyKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzg4OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9haWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVMaWJfUmVtb3RlR2V0VHlw
ZUluZm9Db3VudF9Qcm94eSggDQogICAgICBJVHlwZUxpYiAqIFRoaXMsDQogICAgICAgVUlOVCAq
cGNUSW5mbyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVR5cGVMaWJfUmVtb3RlR2V0VHlwZUluZm9D
b3VudF9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVm
ZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwN
CiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBl
TGliX1JlbW90ZUdldExpYkF0dHJfUHJveHkoIA0KICAgICAgSVR5cGVMaWIgKiBUaGlzLA0KICAg
ICAgIExQVExJQkFUVFIgKnBwVExpYkF0dHIsDQogICAgICAgQ0xFQU5MT0NBTFNUT1JBR0UgKnBE
dW1teSk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVR5cGVMaWJfUmVtb3RlR2V0TGliQXR0cl9TdHVi
KA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJw
Y0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09S
RCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlTGliX1JlbW90
ZUdldERvY3VtZW50YXRpb25fUHJveHkoIA0KICAgICAgSVR5cGVMaWIgKiBUaGlzLA0KICAgICBJ
TlQgaW5kZXgsDQogICAgIERXT1JEIHJlZlB0ckZsYWdzLA0KICAgICAgIEJTVFIgKnBCc3RyTmFt
ZSwNCiAgICAgICBCU1RSICpwQnN0ckRvY1N0cmluZywNCiAgICAgICBEV09SRCAqcGR3SGVscENv
bnRleHQsDQogICAgICAgQlNUUiAqcEJzdHJIZWxwRmlsZSk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwg
SVR5cGVMaWJfUmVtb3RlR2V0RG9jdW1lbnRhdGlvbl9TdHViKA0KICAgIElScGNTdHViQnVmZmVy
ICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAg
UFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoN
Cg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlTGliX1JlbW90ZUlzTmFtZV9Qcm94eSggDQogICAg
ICBJVHlwZUxpYiAqIFRoaXMsDQogICAgICAgTFBPTEVTVFIgc3pOYW1lQnVmLA0KICAgICBVTE9O
RyBsSGFzaFZhbCwNCiAgICAgICBCT09MICpwZk5hbWUsDQogICAgICAgQlNUUiAqcEJzdHJMaWJO
YW1lKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJVHlwZUxpYl9SZW1vdGVJc05hbWVfU3R1YigNCiAg
ICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFu
bmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9w
ZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUxpYl9SZW1vdGVGaW5k
TmFtZV9Qcm94eSggDQogICAgICBJVHlwZUxpYiAqIFRoaXMsDQogICAgICAgTFBPTEVTVFIgc3pO
YW1lQnVmLA0KICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgICBJVHlwZUluZm8gKipwcFRJbmZv
LA0KICAgICAgIE1FTUJFUklEICpyZ01lbUlkLA0KICAgICAgIFVTSE9SVCAqcGNGb3VuZCwNCiAg
ICAgICBCU1RSICpwQnN0ckxpYk5hbWUpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElUeXBlTGliX1Jl
bW90ZUZpbmROYW1lX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0No
YW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNN
ZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNh
bGwgSVR5cGVMaWJfTG9jYWxSZWxlYXNlVExpYkF0dHJfUHJveHkoIA0KICAgICAgSVR5cGVMaWIg
KiBUaGlzKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJVHlwZUxpYl9Mb2NhbFJlbGVhc2VUTGliQXR0
cl9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVy
ICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAg
ICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KDQojbGluZSAzOTc5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2FpZGwuaCINCg0KDQoNCiANCg0KI2xpbmUgMzk4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29y
ZSBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfb2FpZGxfMDAwMF8wMDExX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hB
TkRMRSBfX01JRExfaXRmX29haWRsXzAwMDBfMDAxMV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoN
CiANCg0KdHlwZWRlZiAgICAgSVR5cGVMaWIyICpMUFRZUEVMSUIyOw0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JVHlwZUxpYjI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVj
KHV1aWQoIjAwMDIwNDExLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVj
KG5vdnRhYmxlKQ0KICAgIElUeXBlTGliMiA6IHB1YmxpYyBJVHlwZUxpYg0KICAgIHsNCiAgICBw
dWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0Q3VzdERhdGEoIA0K
ICAgICAgICAgICAgICAgY29uc3QgR1VJRCAmIGd1aWQsDQogICAgICAgICAgICAgICBWQVJJQU5U
ICpwVmFyVmFsKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBHZXRMaWJTdGF0aXN0aWNzKCANCiAgICAgICAgICAgICBVTE9ORyAqcGNVbmlxdWVOYW1l
cywNCiAgICAgICAgICAgICBVTE9ORyAqcGNjaFVuaXF1ZU5hbWVzKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXREb2N1bWVudGF0aW9uMiggDQog
ICAgICAgICAgICAgSU5UIGluZGV4LA0KICAgICAgICAgICAgIExDSUQgbGNpZCwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgQlNUUiAqcGJzdHJIZWxwU3RyaW5nLA0KICAgICAgICAgICAg
IERXT1JEICpwZHdIZWxwU3RyaW5nQ29udGV4dCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgQlNUUiAqcGJzdHJIZWxwU3RyaW5nRGxsKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEFsbEN1c3REYXRhKCANCiAgICAgICAgICAgICAgIENV
U1REQVRBICpwQ3VzdERhdGEpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQy
MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBl
TGliMl9SZW1vdGVHZXRMaWJTdGF0aXN0aWNzX1Byb3h5KCANCiAgICAgIElUeXBlTGliMiAqIFRo
aXMsDQogICAgICAgVUxPTkcgKnBjVW5pcXVlTmFtZXMsDQogICAgICAgVUxPTkcgKnBjY2hVbmlx
dWVOYW1lcyk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVR5cGVMaWIyX1JlbW90ZUdldExpYlN0YXRp
c3RpY3NfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1
ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2Us
DQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlw
ZUxpYjJfUmVtb3RlR2V0RG9jdW1lbnRhdGlvbjJfUHJveHkoIA0KICAgICAgSVR5cGVMaWIyICog
VGhpcywNCiAgICAgSU5UIGluZGV4LA0KICAgICBMQ0lEIGxjaWQsDQogICAgIERXT1JEIHJlZlB0
ckZsYWdzLA0KICAgICAgIEJTVFIgKnBic3RySGVscFN0cmluZywNCiAgICAgICBEV09SRCAqcGR3
SGVscFN0cmluZ0NvbnRleHQsDQogICAgICAgQlNUUiAqcGJzdHJIZWxwU3RyaW5nRGxsKTsNCg0K
DQp2b2lkIF9fc3RkY2FsbCBJVHlwZUxpYjJfUmVtb3RlR2V0RG9jdW1lbnRhdGlvbjJfU3R1YigN
CiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGND
aGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQg
Kl9wZHdTdHViUGhhc2UpOw0KDQoNCg0KI2xpbmUgNDIzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgi
DQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElUeXBlQ2hhbmdlRXZlbnRzICpMUFRZUEVDSEFO
R0VFVkVOVFM7DQoNCnR5cGVkZWYgDQplbnVtIHRhZ0NIQU5HRUtJTkQNCiAgICB7DQogICAgICAg
IENIQU5HRUtJTkRfQURETUVNQkVSCT0gMCwNCiAgICAgICAgQ0hBTkdFS0lORF9ERUxFVEVNRU1C
RVIJPSAoIENIQU5HRUtJTkRfQURETUVNQkVSICsgMSApICwNCiAgICAgICAgQ0hBTkdFS0lORF9T
RVROQU1FUwk9ICggQ0hBTkdFS0lORF9ERUxFVEVNRU1CRVIgKyAxICkgLA0KICAgICAgICBDSEFO
R0VLSU5EX1NFVERPQ1VNRU5UQVRJT04JPSAoIENIQU5HRUtJTkRfU0VUTkFNRVMgKyAxICkgLA0K
ICAgICAgICBDSEFOR0VLSU5EX0dFTkVSQUwJPSAoIENIQU5HRUtJTkRfU0VURE9DVU1FTlRBVElP
TiArIDEgKSAsDQogICAgICAgIENIQU5HRUtJTkRfSU5WQUxJREFURQk9ICggQ0hBTkdFS0lORF9H
RU5FUkFMICsgMSApICwNCiAgICAgICAgQ0hBTkdFS0lORF9DSEFOR0VGQUlMRUQJPSAoIENIQU5H
RUtJTkRfSU5WQUxJREFURSArIDEgKSAsDQogICAgICAgIENIQU5HRUtJTkRfTUFYCT0gKCBDSEFO
R0VLSU5EX0NIQU5HRUZBSUxFRCArIDEgKSANCiAgICB9IAlDSEFOR0VLSU5EOw0KDQoNCmV4dGVy
biAiQyIgY29uc3QgSUlEIElJRF9JVHlwZUNoYW5nZUV2ZW50czsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMjA0MTAtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVR5cGVDaGFuZ2VFdmVudHMgOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIFJlcXVlc3RUeXBlQ2hhbmdlKCANCiAgICAgICAgICAgICBDSEFOR0VLSU5EIGNoYW5n
ZUtpbmQsDQogICAgICAgICAgICAgSVR5cGVJbmZvICpwVEluZm9CZWZvcmUsDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICBMUE9MRVNUUiBwU3RyTmFtZSwNCiAgICAgICAgICAgICBJTlQg
KnBmQ2FuY2VsKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIEFmdGVyVHlwZUNoYW5nZSggDQogICAgICAgICAgICAgQ0hBTkdFS0lORCBjaGFuZ2VLaW5k
LA0KICAgICAgICAgICAgIElUeXBlSW5mbyAqcFRJbmZvQWZ0ZXIsDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICBMUE9MRVNUUiBwU3RyTmFtZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0K
ICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQzNTEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlk
bC5oIg0KDQoNCg0KDQojbGluZSA0MzU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0K
DQoNCiANCg0KdHlwZWRlZiAgICAgSUVycm9ySW5mbyAqTFBFUlJPUklORk87DQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBJSUQgSUlEX0lFcnJvckluZm87DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjFDRjJCMTIwLTU0N0QtMTAxQi04RTY1LTA4MDAyQjJCRDExOSIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElFcnJvckluZm8gOiBwdWJsaWMgSVVua25vd24NCiAgICB7
DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEdVSUQo
IA0KICAgICAgICAgICAgICAgR1VJRCAqcEdVSUQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U291cmNlKCANCiAgICAgICAgICAgICAgIEJTVFIg
KnBCc3RyU291cmNlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIEdldERlc2NyaXB0aW9uKCANCiAgICAgICAgICAgICAgIEJTVFIgKnBCc3RyRGVzY3Jp
cHRpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
R2V0SGVscEZpbGUoIA0KICAgICAgICAgICAgICAgQlNUUiAqcEJzdHJIZWxwRmlsZSkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRIZWxwQ29udGV4
dCggDQogICAgICAgICAgICAgICBEV09SRCAqcGR3SGVscENvbnRleHQpID0gMDsNCiAgICAgICAg
DQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNDQ3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCiNsaW5l
IDQ0NzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAg
ICBJQ3JlYXRlRXJyb3JJbmZvICpMUENSRUFURUVSUk9SSU5GTzsNCg0KDQpleHRlcm4gIkMiIGNv
bnN0IElJRCBJSURfSUNyZWF0ZUVycm9ySW5mbzsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVj
bHNwZWModXVpZCgiMjJGMDMzNDAtNTQ3RC0xMDFCLThFNjUtMDgwMDJCMkJEMTE5IikpIF9fZGVj
bHNwZWMobm92dGFibGUpDQogICAgSUNyZWF0ZUVycm9ySW5mbyA6IHB1YmxpYyBJVW5rbm93bg0K
ICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0
R1VJRCggDQogICAgICAgICAgICAgICBjb25zdCBHVUlEICYgcmd1aWQpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0U291cmNlKCANCiAgICAgICAg
ICAgICAgIExQT0xFU1RSIHN6U291cmNlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIFNldERlc2NyaXB0aW9uKCANCiAgICAgICAgICAgICAgIExQT0xF
U1RSIHN6RGVzY3JpcHRpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgU2V0SGVscEZpbGUoIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgc3pIZWxw
RmlsZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBT
ZXRIZWxwQ29udGV4dCggDQogICAgICAgICAgICAgRFdPUkQgZHdIZWxwQ29udGV4dCkgPSAwOw0K
ICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NTk1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoN
Cg0KI2xpbmUgNDYwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5
cGVkZWYgICAgIElTdXBwb3J0RXJyb3JJbmZvICpMUFNVUFBPUlRFUlJPUklORk87DQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lTdXBwb3J0RXJyb3JJbmZvOw0KDQoNCiAgICANCiAgICBz
dHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJERjBCM0Q2MC01NDhGLTEwMUItOEU2NS0wODAwMkIyQkQx
MTkiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJU3VwcG9ydEVycm9ySW5mbyA6IHB1Ymxp
YyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgSW50ZXJmYWNlU3VwcG9ydHNFcnJvckluZm8oIA0KICAgICAgICAgICAgICAgY29u
c3QgSUlEICYgcmlpZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDY3NyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCiNsaW5lIDQ2ODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5o
Ig0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JVHlwZUZhY3Rv
cnk7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMDJFLTAwMDAt
MDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElUeXBl
RmFjdG9yeSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRlRnJvbVR5cGVJbmZvKCANCiAgICAgICAgICAg
ICAgIElUeXBlSW5mbyAqcFR5cGVJbmZvLA0KICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlp
ZCwNCiAgICAgICAgICAgICAgIElVbmtub3duICoqcHB2KSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNDc2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCiNsaW5lIDQ3
NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYWlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JVHlwZU1hcnNoYWw7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xz
cGVjKHV1aWQoIjAwMDAwMDJELTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xz
cGVjKG5vdnRhYmxlKQ0KICAgIElUeXBlTWFyc2hhbCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsN
CiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2l6ZSggDQog
ICAgICAgICAgICAgUFZPSUQgcHZUeXBlLA0KICAgICAgICAgICAgIERXT1JEIGR3RGVzdENvbnRl
eHQsDQogICAgICAgICAgICAgUFZPSUQgcHZEZXN0Q29udGV4dCwNCiAgICAgICAgICAgICBVTE9O
RyAqcFNpemUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgTWFyc2hhbCggDQogICAgICAgICAgICAgUFZPSUQgcHZUeXBlLA0KICAgICAgICAgICAgIERX
T1JEIGR3RGVzdENvbnRleHQsDQogICAgICAgICAgICAgUFZPSUQgcHZEZXN0Q29udGV4dCwNCiAg
ICAgICAgICAgICBVTE9ORyBjYkJ1ZmZlckxlbmd0aCwNCiAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgIEJZVEUgKnBCdWZmZXIsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBVTE9O
RyAqcGNiV3JpdHRlbikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBVbm1hcnNoYWwoIA0KICAgICAgICAgICAgIFBWT0lEIHB2VHlwZSwNCiAgICAgICAg
ICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgICAgIFVMT05HIGNiQnVmZmVyTGVuZ3RoLA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgQllURSAqcEJ1ZmZlciwNCiAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgIFVMT05HICpwY2JSZWFkKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEZyZWUoIA0KICAgICAgICAgICAgIFBWT0lEIHB2
VHlwZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OTAz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0KI2xpbmUgNDkwOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9haWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElSZWNvcmRJbmZvICpMUFJFQ09S
RElORk87DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lSZWNvcmRJbmZvOw0KDQoNCiAg
ICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDAyRi0wMDAwLTAwMDAtQzAwMC0w
MDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJUmVjb3JkSW5mbyA6IHB1
YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgUmVjb3JkSW5pdCggDQogICAgICAgICAgICAgUFZPSUQgcHZOZXcpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVjb3JkQ2xlYXIo
IA0KICAgICAgICAgICAgIFBWT0lEIHB2RXhpc3RpbmcpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVjb3JkQ29weSggDQogICAgICAgICAgICAgUFZP
SUQgcHZFeGlzdGluZywNCiAgICAgICAgICAgICBQVk9JRCBwdk5ldykgPSAwOw0KICAgICAgICAN
CiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRHdWlkKCANCiAgICAgICAgICAg
ICBHVUlEICpwZ3VpZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBHZXROYW1lKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEJTVFIgKnBi
c3RyTmFtZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRTaXplKCANCiAgICAgICAgICAgICBVTE9ORyAqcGNiU2l6ZSkgPSAwOw0KICAgICAgICAN
CiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRUeXBlSW5mbyggDQogICAgICAg
ICAgICAgSVR5cGVJbmZvICoqcHBUeXBlSW5mbykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRGaWVsZCggDQogICAgICAgICAgICAgUFZPSUQgcHZE
YXRhLA0KICAgICAgICAgICAgIExQQ09MRVNUUiBzekZpZWxkTmFtZSwNCiAgICAgICAgICAgICBW
QVJJQU5UICpwdmFyRmllbGQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgR2V0RmllbGROb0NvcHkoIA0KICAgICAgICAgICAgIFBWT0lEIHB2RGF0YSwN
CiAgICAgICAgICAgICBMUENPTEVTVFIgc3pGaWVsZE5hbWUsDQogICAgICAgICAgICAgVkFSSUFO
VCAqcHZhckZpZWxkLA0KICAgICAgICAgICAgIFBWT0lEICpwcHZEYXRhQ0FycmF5KSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFB1dEZpZWxkKCANCiAg
ICAgICAgICAgICBVTE9ORyB3RmxhZ3MsDQogICAgICAgICAgICAgUFZPSUQgcHZEYXRhLA0KICAg
ICAgICAgICAgIExQQ09MRVNUUiBzekZpZWxkTmFtZSwNCiAgICAgICAgICAgICBWQVJJQU5UICpw
dmFyRmllbGQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgUHV0RmllbGROb0NvcHkoIA0KICAgICAgICAgICAgIFVMT05HIHdGbGFncywNCiAgICAgICAg
ICAgICBQVk9JRCBwdkRhdGEsDQogICAgICAgICAgICAgTFBDT0xFU1RSIHN6RmllbGROYW1lLA0K
ICAgICAgICAgICAgIFZBUklBTlQgKnB2YXJGaWVsZCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRGaWVsZE5hbWVzKCANCiAgICAgICAgICAgICBV
TE9ORyAqcGNOYW1lcywNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEJTVFIgKnJnQnN0
ck5hbWVzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEJPT0wgX19zdGRjYWxsIElz
TWF0Y2hpbmdUeXBlKCANCiAgICAgICAgICAgICBJUmVjb3JkSW5mbyAqcFJlY29yZEluZm8pID0g
MDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgUFZPSUQgX19zdGRjYWxsIFJlY29yZENyZWF0
ZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBSZWNvcmRDcmVhdGVDb3B5KCANCiAgICAgICAgICAgICBQVk9JRCBwdlNvdXJjZSwNCiAgICAg
ICAgICAgICBQVk9JRCAqcHB2RGVzdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBSZWNvcmREZXN0cm95KCANCiAgICAgICAgICAgICBQVk9JRCBwdlJl
Y29yZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTE2NSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCiNsaW5lIDUxNzAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYWlk
bC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmIElFcnJvckxvZyAqTFBFUlJPUkxPRzsNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUVycm9yTG9nOw0KDQoNCiAgICANCiAgICBzdHJ1
Y3QgX19kZWNsc3BlYyh1dWlkKCIzMTI3Q0E0MC00NDZFLTExQ0UtODEzNS0wMEFBMDA0QkI4NTEi
KSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJRXJyb3JMb2cgOiBwdWJsaWMgSVVua25vd24N
CiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEFk
ZEVycm9yKCANCiAgICAgICAgICAgICAgIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwNCiAgICAgICAg
ICAgICAgIEVYQ0VQSU5GTyAqcEV4Y2VwSW5mbykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAg
IA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA1MjQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0KI2xpbmUgNTI1NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgSVByb3BlcnR5QmFn
ICpMUFBST1BFUlRZQkFHOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUHJvcGVydHlC
YWc7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjU1MjcyQTAwLTQyQ0It
MTFDRS04MTM1LTAwQUEwMDRCQjg1MSIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQcm9w
ZXJ0eUJhZyA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZp
cnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIFJlYWQoIA0KICAgICAgICAgICAgIExQQ09MRVNUUiBw
c3pQcm9wTmFtZSwNCiAgICAgICAgICAgICBWQVJJQU5UICpwVmFyLA0KICAgICAgICAgICAgIElF
cnJvckxvZyAqcEVycm9yTG9nKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIFdyaXRlKCANCiAgICAgICAgICAgICAgIExQQ09MRVNUUiBwc3pQcm9wTmFt
ZSwNCiAgICAgICAgICAgICAgIFZBUklBTlQgKnBWYXIpID0gMDsNCiAgICAgICAgDQogICAgfTsN
CiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTM0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoN
Cg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVByb3BlcnR5QmFnX1JlbW90ZVJlYWRfUHJveHkoIA0K
ICAgICAgSVByb3BlcnR5QmFnICogVGhpcywNCiAgICAgICBMUENPTEVTVFIgcHN6UHJvcE5hbWUs
DQogICAgICAgVkFSSUFOVCAqcFZhciwNCiAgICAgICBJRXJyb3JMb2cgKnBFcnJvckxvZywNCiAg
ICAgRFdPUkQgdmFyVHlwZSwNCiAgICAgICBJVW5rbm93biAqcFVua09iaik7DQoNCg0Kdm9pZCBf
X3N0ZGNhbGwgSVByb3BlcnR5QmFnX1JlbW90ZVJlYWRfU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZl
ciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAg
IFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0K
DQoNCg0KI2xpbmUgNTM2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCg0KDQogDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lUeXBlTGliUmVnaXN0cmF0aW9uUmVhZGVyOw0K
DQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJFRDZBOEEyQS1CMTYwLTRFNzct
OEY3My1BQTc0MzVDRDVDMjciKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJVHlwZUxpYlJl
Z2lzdHJhdGlvblJlYWRlciA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRW51bVR5cGVMaWJSZWdpc3RyYXRpb25z
KCANCiAgICAgICAgICAgICBJRW51bVVua25vd24gKipwcEVudW1Vbmtub3duKSA9IDA7DQogICAg
ICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA1NDQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQoNCg0K
I2xpbmUgNTQ0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0
ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lUeXBlTGliUmVnaXN0cmF0aW9uOw0KDQoNCiAgICANCiAg
ICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI3NkEzRTczNS0wMkRGLTRBMTItOThFQi0wNDNBRDM2
MDBBRjMiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJVHlwZUxpYlJlZ2lzdHJhdGlvbiA6
IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgR2V0R3VpZCggDQogICAgICAgICAgICAgR1VJRCAqcEd1aWQpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0VmVyc2lvbigg
DQogICAgICAgICAgICAgQlNUUiAqcFZlcnNpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0TGNpZCggDQogICAgICAgICAgICAgTENJRCAqcExj
aWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0
V2luMzJQYXRoKCANCiAgICAgICAgICAgICBCU1RSICpwV2luMzJQYXRoKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFdpbjY0UGF0aCggDQogICAg
ICAgICAgICAgQlNUUiAqcFdpbjY0UGF0aCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBHZXREaXNwbGF5TmFtZSggDQogICAgICAgICAgICAgQlNUUiAq
cERpc3BsYXlOYW1lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIEdldEZsYWdzKCANCiAgICAgICAgICAgICBEV09SRCAqcEZsYWdzKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEhlbHBEaXIoIA0KICAg
ICAgICAgICAgIEJTVFIgKnBIZWxwRGlyKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQog
ICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU1OTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvYWlkbC5oIg0KDQoNCg0KDQojbGluZSA1NTk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0K
DQoNCiANCg0KZXh0ZXJuICJDIiBjb25zdCBDTFNJRCBDTFNJRF9UeXBlTGliUmVnaXN0cmF0aW9u
UmVhZGVyOw0KI2xpbmUgNTYwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQoNCg0KI2xpbmUgNTYxMiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG9haWRsLmgiDQojbGluZSA1NjEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2FpZGwuaCINCg0KDQpleHRl
cm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29haWRsXzAwMDBfMDAyM192MF8wX2NfaWZzcGVj
Ow0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vYWlkbF8wMDAwXzAwMjNfdjBfMF9z
X2lmc3BlYzsNCg0KDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBCU1RS
X1VzZXJTaXplKCAgICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAgICAgICAg
ICAsICAgQlNUUiAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgQlNUUl9Vc2VyTWFy
c2hhbCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBCU1RSICogKTsg
DQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBCU1RSX1VzZXJVbm1hcnNoYWwoICB1bnNpZ25l
ZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEJTVFIgKiApOyANCnZvaWQgICAgICAgICAg
ICAgICAgICAgICAgX19zdGRjYWxsICBCU1RSX1VzZXJGcmVlKCAgICAgICB1bnNpZ25lZCBsb25n
ICosICAgQlNUUiAqICk7IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAg
Q0xFQU5MT0NBTFNUT1JBR0VfVXNlclNpemUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWdu
ZWQgbG9uZyAgICAgICAgICAgICwgICBDTEVBTkxPQ0FMU1RPUkFHRSAqICk7IA0KdW5zaWduZWQg
Y2hhciAqIF9fc3RkY2FsbCAgQ0xFQU5MT0NBTFNUT1JBR0VfVXNlck1hcnNoYWwoICAgIHVuc2ln
bmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgQ0xFQU5MT0NBTFNUT1JBR0UgKiApOyAN
CnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIENMRUFOTE9DQUxTVE9SQUdFX1VzZXJVbm1hcnNo
YWwoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIENMRUFOTE9DQUxTVE9S
QUdFICogKTsgDQp2b2lkICAgICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgQ0xFQU5MT0NB
TFNUT1JBR0VfVXNlckZyZWUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgICBDTEVBTkxPQ0FMU1RP
UkFHRSAqICk7IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgVkFSSUFO
VF9Vc2VyU2l6ZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAg
ICAgLCAgIFZBUklBTlQgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIFZBUklBTlRf
VXNlck1hcnNoYWwoICAgIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgVkFS
SUFOVCAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgVkFSSUFOVF9Vc2VyVW5tYXJz
aGFsKCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBWQVJJQU5UICogKTsg
DQp2b2lkICAgICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgVkFSSUFOVF9Vc2VyRnJlZSgg
ICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIFZBUklBTlQgKiApOyANCg0KdW5zaWduZWQgbG9uZyAg
ICAgICAgICAgICBfX3N0ZGNhbGwgIEJTVFJfVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9u
ZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEJTVFIgKiApOyANCnVuc2lnbmVkIGNo
YXIgKiBfX3N0ZGNhbGwgIEJTVFJfVXNlck1hcnNoYWw2NCggICAgdW5zaWduZWQgbG9uZyAqLCAg
IHVuc2lnbmVkIGNoYXIgKiwgICBCU1RSICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxs
ICBCU1RSX1VzZXJVbm1hcnNoYWw2NCggIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFy
ICosICAgQlNUUiAqICk7IA0Kdm9pZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEJT
VFJfVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEJTVFIgKiApOyANCg0KdW5z
aWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIENMRUFOTE9DQUxTVE9SQUdFX1VzZXJT
aXplNjQoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICwg
ICBDTEVBTkxPQ0FMU1RPUkFHRSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgQ0xF
QU5MT0NBTFNUT1JBR0VfVXNlck1hcnNoYWw2NCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2ln
bmVkIGNoYXIgKiwgICBDTEVBTkxPQ0FMU1RPUkFHRSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9f
c3RkY2FsbCAgQ0xFQU5MT0NBTFNUT1JBR0VfVXNlclVubWFyc2hhbDY0KCAgdW5zaWduZWQgbG9u
ZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBDTEVBTkxPQ0FMU1RPUkFHRSAqICk7IA0Kdm9pZCAg
ICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIENMRUFOTE9DQUxTVE9SQUdFX1VzZXJGcmVl
NjQoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgICBDTEVBTkxPQ0FMU1RPUkFHRSAqICk7IA0KDQp1
bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgVkFSSUFOVF9Vc2VyU2l6ZTY0KCAg
ICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAsICAgVkFSSUFO
VCAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgVkFSSUFOVF9Vc2VyTWFyc2hhbDY0
KCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIFZBUklBTlQgKiApOyAN
CnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIFZBUklBTlRfVXNlclVubWFyc2hhbDY0KCAgdW5z
aWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBWQVJJQU5UICogKTsgDQp2b2lkICAg
ICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgVkFSSUFOVF9Vc2VyRnJlZTY0KCAgICAgICB1
bnNpZ25lZCBsb25nICosICAgVkFSSUFOVCAqICk7IA0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSURp
c3BhdGNoX0ludm9rZV9Qcm94eSggDQogICAgSURpc3BhdGNoICogVGhpcywNCiAgICAgDQogICAg
ICAgRElTUElEIGRpc3BJZE1lbWJlciwNCiAgICAgDQogICAgICAgY29uc3QgSUlEICYgcmlpZCwN
CiAgICAgDQogICAgICAgTENJRCBsY2lkLA0KICAgICANCiAgICAgICBXT1JEIHdGbGFncywNCiAg
ICAgDQogICAgICAgRElTUFBBUkFNUyAqcERpc3BQYXJhbXMsDQogICAgIA0KICAgICAgIFZBUklB
TlQgKnBWYXJSZXN1bHQsDQogICAgIA0KICAgICAgIEVYQ0VQSU5GTyAqcEV4Y2VwSW5mbywNCiAg
ICAgDQogICAgICAgVUlOVCAqcHVBcmdFcnIpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJRGlz
cGF0Y2hfSW52b2tlX1N0dWIoIA0KICAgICAgSURpc3BhdGNoICogVGhpcywNCiAgICAgRElTUElE
IGRpc3BJZE1lbWJlciwNCiAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICBMQ0lEIGxjaWQs
DQogICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICAgRElTUFBBUkFNUyAqcERpc3BQYXJhbXMsDQog
ICAgICAgVkFSSUFOVCAqcFZhclJlc3VsdCwNCiAgICAgICBFWENFUElORk8gKnBFeGNlcEluZm8s
DQogICAgICAgVUlOVCAqcEFyZ0VyciwNCiAgICAgVUlOVCBjVmFyUmVmLA0KICAgICAgIFVJTlQg
KnJnVmFyUmVmSWR4LA0KICAgICAgIFZBUklBTlRBUkcgKnJnVmFyUmVmKTsNCg0KIEhSRVNVTFQg
X19zdGRjYWxsIElFbnVtVkFSSUFOVF9OZXh0X1Byb3h5KCANCiAgICBJRW51bVZBUklBTlQgKiBU
aGlzLA0KICAgICBVTE9ORyBjZWx0LA0KICAgICBWQVJJQU5UICpyZ1ZhciwNCiAgICAgVUxPTkcg
KnBDZWx0RmV0Y2hlZCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElFbnVtVkFSSUFOVF9OZXh0
X1N0dWIoIA0KICAgICAgSUVudW1WQVJJQU5UICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAg
ICAgICBWQVJJQU5UICpyZ1ZhciwNCiAgICAgICBVTE9ORyAqcENlbHRGZXRjaGVkKTsNCg0KIEhS
RVNVTFQgX19zdGRjYWxsIElUeXBlQ29tcF9CaW5kX1Byb3h5KCANCiAgICBJVHlwZUNvbXAgKiBU
aGlzLA0KICAgICANCiAgICAgICBMUE9MRVNUUiBzek5hbWUsDQogICAgIFVMT05HIGxIYXNoVmFs
LA0KICAgICBXT1JEIHdGbGFncywNCiAgICAgSVR5cGVJbmZvICoqcHBUSW5mbywNCiAgICAgREVT
Q0tJTkQgKnBEZXNjS2luZCwNCiAgICAgQklORFBUUiAqcEJpbmRQdHIpOw0KDQoNCiBIUkVTVUxU
IF9fc3RkY2FsbCBJVHlwZUNvbXBfQmluZF9TdHViKCANCiAgICAgIElUeXBlQ29tcCAqIFRoaXMs
DQogICAgICAgTFBPTEVTVFIgc3pOYW1lLA0KICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgV09S
RCB3RmxhZ3MsDQogICAgICAgSVR5cGVJbmZvICoqcHBUSW5mbywNCiAgICAgICBERVNDS0lORCAq
cERlc2NLaW5kLA0KICAgICAgIExQRlVOQ0RFU0MgKnBwRnVuY0Rlc2MsDQogICAgICAgTFBWQVJE
RVNDICpwcFZhckRlc2MsDQogICAgICAgSVR5cGVDb21wICoqcHBUeXBlQ29tcCwNCiAgICAgICBD
TEVBTkxPQ0FMU1RPUkFHRSAqcER1bW15KTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlQ29t
cF9CaW5kVHlwZV9Qcm94eSggDQogICAgSVR5cGVDb21wICogVGhpcywNCiAgICAgDQogICAgICAg
TFBPTEVTVFIgc3pOYW1lLA0KICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgSVR5cGVJbmZvICoq
cHBUSW5mbywNCiAgICAgSVR5cGVDb21wICoqcHBUQ29tcCk7DQoNCg0KIEhSRVNVTFQgX19zdGRj
YWxsIElUeXBlQ29tcF9CaW5kVHlwZV9TdHViKCANCiAgICAgIElUeXBlQ29tcCAqIFRoaXMsDQog
ICAgICAgTFBPTEVTVFIgc3pOYW1lLA0KICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgICBJVHlw
ZUluZm8gKipwcFRJbmZvKTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlSW5mb19HZXRUeXBl
QXR0cl9Qcm94eSggDQogICAgSVR5cGVJbmZvICogVGhpcywNCiAgICAgVFlQRUFUVFIgKipwcFR5
cGVBdHRyKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZvX0dldFR5cGVBdHRyX1N0
dWIoIA0KICAgICAgSVR5cGVJbmZvICogVGhpcywNCiAgICAgICBMUFRZUEVBVFRSICpwcFR5cGVB
dHRyLA0KICAgICAgIENMRUFOTE9DQUxTVE9SQUdFICpwRHVtbXkpOw0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSVR5cGVJbmZvX0dldEZ1bmNEZXNjX1Byb3h5KCANCiAgICBJVHlwZUluZm8gKiBUaGlz
LA0KICAgICBVSU5UIGluZGV4LA0KICAgICBGVU5DREVTQyAqKnBwRnVuY0Rlc2MpOw0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJVHlwZUluZm9fR2V0RnVuY0Rlc2NfU3R1YiggDQogICAgICBJVHlw
ZUluZm8gKiBUaGlzLA0KICAgICBVSU5UIGluZGV4LA0KICAgICAgIExQRlVOQ0RFU0MgKnBwRnVu
Y0Rlc2MsDQogICAgICAgQ0xFQU5MT0NBTFNUT1JBR0UgKnBEdW1teSk7DQoNCiBIUkVTVUxUIF9f
c3RkY2FsbCBJVHlwZUluZm9fR2V0VmFyRGVzY19Qcm94eSggDQogICAgSVR5cGVJbmZvICogVGhp
cywNCiAgICAgVUlOVCBpbmRleCwNCiAgICAgVkFSREVTQyAqKnBwVmFyRGVzYyk7DQoNCg0KIEhS
RVNVTFQgX19zdGRjYWxsIElUeXBlSW5mb19HZXRWYXJEZXNjX1N0dWIoIA0KICAgICAgSVR5cGVJ
bmZvICogVGhpcywNCiAgICAgVUlOVCBpbmRleCwNCiAgICAgICBMUFZBUkRFU0MgKnBwVmFyRGVz
YywNCiAgICAgICBDTEVBTkxPQ0FMU1RPUkFHRSAqcER1bW15KTsNCg0KIEhSRVNVTFQgX19zdGRj
YWxsIElUeXBlSW5mb19HZXROYW1lc19Qcm94eSggDQogICAgSVR5cGVJbmZvICogVGhpcywNCiAg
ICAgTUVNQkVSSUQgbWVtaWQsDQogICAgIA0KICAgICAgIEJTVFIgKnJnQnN0ck5hbWVzLA0KICAg
ICBVSU5UIGNNYXhOYW1lcywNCiAgICAgDQogICAgICAgVUlOVCAqcGNOYW1lcyk7DQoNCg0KIEhS
RVNVTFQgX19zdGRjYWxsIElUeXBlSW5mb19HZXROYW1lc19TdHViKCANCiAgICAgIElUeXBlSW5m
byAqIFRoaXMsDQogICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICAgIEJTVFIgKnJnQnN0ck5hbWVz
LA0KICAgICBVSU5UIGNNYXhOYW1lcywNCiAgICAgICBVSU5UICpwY05hbWVzKTsNCg0KIEhSRVNV
TFQgX19zdGRjYWxsIElUeXBlSW5mb19HZXRJRHNPZk5hbWVzX1Byb3h5KCANCiAgICBJVHlwZUlu
Zm8gKiBUaGlzLA0KICAgICANCiAgICAgICBMUE9MRVNUUiAqcmdzek5hbWVzLA0KICAgICBVSU5U
IGNOYW1lcywNCiAgICAgTUVNQkVSSUQgKnBNZW1JZCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxs
IElUeXBlSW5mb19HZXRJRHNPZk5hbWVzX1N0dWIoIA0KICAgICAgSVR5cGVJbmZvICogVGhpcyk7
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUluZm9fSW52b2tlX1Byb3h5KCANCiAgICBJVHlw
ZUluZm8gKiBUaGlzLA0KICAgICBQVk9JRCBwdkluc3RhbmNlLA0KICAgICBNRU1CRVJJRCBtZW1p
ZCwNCiAgICAgV09SRCB3RmxhZ3MsDQogICAgIERJU1BQQVJBTVMgKnBEaXNwUGFyYW1zLA0KICAg
ICBWQVJJQU5UICpwVmFyUmVzdWx0LA0KICAgICBFWENFUElORk8gKnBFeGNlcEluZm8sDQogICAg
IFVJTlQgKnB1QXJnRXJyKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZvX0ludm9r
ZV9TdHViKCANCiAgICAgIElUeXBlSW5mbyAqIFRoaXMpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SVR5cGVJbmZvX0dldERvY3VtZW50YXRpb25fUHJveHkoIA0KICAgIElUeXBlSW5mbyAqIFRoaXMs
DQogICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICANCiAgICAgIEJTVFIgKnBCc3RyTmFtZSwNCiAg
ICAgDQogICAgICBCU1RSICpwQnN0ckRvY1N0cmluZywNCiAgICAgRFdPUkQgKnBkd0hlbHBDb250
ZXh0LA0KICAgICANCiAgICAgIEJTVFIgKnBCc3RySGVscEZpbGUpOw0KDQoNCiBIUkVTVUxUIF9f
c3RkY2FsbCBJVHlwZUluZm9fR2V0RG9jdW1lbnRhdGlvbl9TdHViKCANCiAgICAgIElUeXBlSW5m
byAqIFRoaXMsDQogICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICBEV09SRCByZWZQdHJGbGFncywN
CiAgICAgICBCU1RSICpwQnN0ck5hbWUsDQogICAgICAgQlNUUiAqcEJzdHJEb2NTdHJpbmcsDQog
ICAgICAgRFdPUkQgKnBkd0hlbHBDb250ZXh0LA0KICAgICAgIEJTVFIgKnBCc3RySGVscEZpbGUp
Ow0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZvX0dldERsbEVudHJ5X1Byb3h5KCANCiAg
ICBJVHlwZUluZm8gKiBUaGlzLA0KICAgICBNRU1CRVJJRCBtZW1pZCwNCiAgICAgSU5WT0tFS0lO
RCBpbnZLaW5kLA0KICAgICANCiAgICAgIEJTVFIgKnBCc3RyRGxsTmFtZSwNCiAgICAgDQogICAg
ICBCU1RSICpwQnN0ck5hbWUsDQogICAgIFdPUkQgKnB3T3JkaW5hbCk7DQoNCg0KIEhSRVNVTFQg
X19zdGRjYWxsIElUeXBlSW5mb19HZXREbGxFbnRyeV9TdHViKCANCiAgICAgIElUeXBlSW5mbyAq
IFRoaXMsDQogICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICBJTlZPS0VLSU5EIGludktpbmQsDQog
ICAgIERXT1JEIHJlZlB0ckZsYWdzLA0KICAgICAgIEJTVFIgKnBCc3RyRGxsTmFtZSwNCiAgICAg
ICBCU1RSICpwQnN0ck5hbWUsDQogICAgICAgV09SRCAqcHdPcmRpbmFsKTsNCg0KIEhSRVNVTFQg
X19zdGRjYWxsIElUeXBlSW5mb19BZGRyZXNzT2ZNZW1iZXJfUHJveHkoIA0KICAgIElUeXBlSW5m
byAqIFRoaXMsDQogICAgIE1FTUJFUklEIG1lbWlkLA0KICAgICBJTlZPS0VLSU5EIGludktpbmQs
DQogICAgIFBWT0lEICpwcHYpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUluZm9fQWRk
cmVzc09mTWVtYmVyX1N0dWIoIA0KICAgICAgSVR5cGVJbmZvICogVGhpcyk7DQoNCiBIUkVTVUxU
IF9fc3RkY2FsbCBJVHlwZUluZm9fQ3JlYXRlSW5zdGFuY2VfUHJveHkoIA0KICAgIElUeXBlSW5m
byAqIFRoaXMsDQogICAgIElVbmtub3duICpwVW5rT3V0ZXIsDQogICAgIGNvbnN0IElJRCAmIHJp
aWQsDQogICAgIFBWT0lEICpwcHZPYmopOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUlu
Zm9fQ3JlYXRlSW5zdGFuY2VfU3R1YiggDQogICAgICBJVHlwZUluZm8gKiBUaGlzLA0KICAgICAg
IGNvbnN0IElJRCAmIHJpaWQsDQogICAgICAgSVVua25vd24gKipwcHZPYmopOw0KDQogSFJFU1VM
VCBfX3N0ZGNhbGwgSVR5cGVJbmZvX0dldENvbnRhaW5pbmdUeXBlTGliX1Byb3h5KCANCiAgICBJ
VHlwZUluZm8gKiBUaGlzLA0KICAgICBJVHlwZUxpYiAqKnBwVExpYiwNCiAgICAgVUlOVCAqcElu
ZGV4KTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZvX0dldENvbnRhaW5pbmdUeXBl
TGliX1N0dWIoIA0KICAgICAgSVR5cGVJbmZvICogVGhpcywNCiAgICAgICBJVHlwZUxpYiAqKnBw
VExpYiwNCiAgICAgICBVSU5UICpwSW5kZXgpOw0KDQogdm9pZCBfX3N0ZGNhbGwgSVR5cGVJbmZv
X1JlbGVhc2VUeXBlQXR0cl9Qcm94eSggDQogICAgSVR5cGVJbmZvICogVGhpcywNCiAgICAgVFlQ
RUFUVFIgKnBUeXBlQXR0cik7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlSW5mb19SZWxl
YXNlVHlwZUF0dHJfU3R1YiggDQogICAgICBJVHlwZUluZm8gKiBUaGlzKTsNCg0KIHZvaWQgX19z
dGRjYWxsIElUeXBlSW5mb19SZWxlYXNlRnVuY0Rlc2NfUHJveHkoIA0KICAgIElUeXBlSW5mbyAq
IFRoaXMsDQogICAgIEZVTkNERVNDICpwRnVuY0Rlc2MpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2Fs
bCBJVHlwZUluZm9fUmVsZWFzZUZ1bmNEZXNjX1N0dWIoIA0KICAgICAgSVR5cGVJbmZvICogVGhp
cyk7DQoNCiB2b2lkIF9fc3RkY2FsbCBJVHlwZUluZm9fUmVsZWFzZVZhckRlc2NfUHJveHkoIA0K
ICAgIElUeXBlSW5mbyAqIFRoaXMsDQogICAgIFZBUkRFU0MgKnBWYXJEZXNjKTsNCg0KDQogSFJF
U1VMVCBfX3N0ZGNhbGwgSVR5cGVJbmZvX1JlbGVhc2VWYXJEZXNjX1N0dWIoIA0KICAgICAgSVR5
cGVJbmZvICogVGhpcyk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUluZm8yX0dldERvY3Vt
ZW50YXRpb24yX1Byb3h5KCANCiAgICBJVHlwZUluZm8yICogVGhpcywNCiAgICAgTUVNQkVSSUQg
bWVtaWQsDQogICAgIExDSUQgbGNpZCwNCiAgICAgDQogICAgICBCU1RSICpwYnN0ckhlbHBTdHJp
bmcsDQogICAgIERXT1JEICpwZHdIZWxwU3RyaW5nQ29udGV4dCwNCiAgICAgDQogICAgICBCU1RS
ICpwYnN0ckhlbHBTdHJpbmdEbGwpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUluZm8y
X0dldERvY3VtZW50YXRpb24yX1N0dWIoIA0KICAgICAgSVR5cGVJbmZvMiAqIFRoaXMsDQogICAg
IE1FTUJFUklEIG1lbWlkLA0KICAgICBMQ0lEIGxjaWQsDQogICAgIERXT1JEIHJlZlB0ckZsYWdz
LA0KICAgICAgIEJTVFIgKnBic3RySGVscFN0cmluZywNCiAgICAgICBEV09SRCAqcGR3SGVscFN0
cmluZ0NvbnRleHQsDQogICAgICAgQlNUUiAqcGJzdHJIZWxwU3RyaW5nRGxsKTsNCg0KIFVJTlQg
X19zdGRjYWxsIElUeXBlTGliX0dldFR5cGVJbmZvQ291bnRfUHJveHkoIA0KICAgIElUeXBlTGli
ICogVGhpcyk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlTGliX0dldFR5cGVJbmZvQ291
bnRfU3R1YiggDQogICAgICBJVHlwZUxpYiAqIFRoaXMsDQogICAgICAgVUlOVCAqcGNUSW5mbyk7
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUxpYl9HZXRMaWJBdHRyX1Byb3h5KCANCiAgICBJ
VHlwZUxpYiAqIFRoaXMsDQogICAgIFRMSUJBVFRSICoqcHBUTGliQXR0cik7DQoNCg0KIEhSRVNV
TFQgX19zdGRjYWxsIElUeXBlTGliX0dldExpYkF0dHJfU3R1YiggDQogICAgICBJVHlwZUxpYiAq
IFRoaXMsDQogICAgICAgTFBUTElCQVRUUiAqcHBUTGliQXR0ciwNCiAgICAgICBDTEVBTkxPQ0FM
U1RPUkFHRSAqcER1bW15KTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElUeXBlTGliX0dldERvY3Vt
ZW50YXRpb25fUHJveHkoIA0KICAgIElUeXBlTGliICogVGhpcywNCiAgICAgSU5UIGluZGV4LA0K
ICAgICANCiAgICAgIEJTVFIgKnBCc3RyTmFtZSwNCiAgICAgDQogICAgICBCU1RSICpwQnN0ckRv
Y1N0cmluZywNCiAgICAgRFdPUkQgKnBkd0hlbHBDb250ZXh0LA0KICAgICANCiAgICAgIEJTVFIg
KnBCc3RySGVscEZpbGUpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUxpYl9HZXREb2N1
bWVudGF0aW9uX1N0dWIoIA0KICAgICAgSVR5cGVMaWIgKiBUaGlzLA0KICAgICBJTlQgaW5kZXgs
DQogICAgIERXT1JEIHJlZlB0ckZsYWdzLA0KICAgICAgIEJTVFIgKnBCc3RyTmFtZSwNCiAgICAg
ICBCU1RSICpwQnN0ckRvY1N0cmluZywNCiAgICAgICBEV09SRCAqcGR3SGVscENvbnRleHQsDQog
ICAgICAgQlNUUiAqcEJzdHJIZWxwRmlsZSk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUxp
Yl9Jc05hbWVfUHJveHkoIA0KICAgIElUeXBlTGliICogVGhpcywNCiAgICAgDQogICAgICAgTFBP
TEVTVFIgc3pOYW1lQnVmLA0KICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgQk9PTCAqcGZOYW1l
KTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVMaWJfSXNOYW1lX1N0dWIoIA0KICAgICAg
SVR5cGVMaWIgKiBUaGlzLA0KICAgICAgIExQT0xFU1RSIHN6TmFtZUJ1ZiwNCiAgICAgVUxPTkcg
bEhhc2hWYWwsDQogICAgICAgQk9PTCAqcGZOYW1lLA0KICAgICAgIEJTVFIgKnBCc3RyTGliTmFt
ZSk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUxpYl9GaW5kTmFtZV9Qcm94eSggDQogICAg
SVR5cGVMaWIgKiBUaGlzLA0KICAgICANCiAgICAgICBMUE9MRVNUUiBzek5hbWVCdWYsDQogICAg
IFVMT05HIGxIYXNoVmFsLA0KICAgICBJVHlwZUluZm8gKipwcFRJbmZvLA0KICAgICBNRU1CRVJJ
RCAqcmdNZW1JZCwNCiAgICAgVVNIT1JUICpwY0ZvdW5kKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNh
bGwgSVR5cGVMaWJfRmluZE5hbWVfU3R1YiggDQogICAgICBJVHlwZUxpYiAqIFRoaXMsDQogICAg
ICAgTFBPTEVTVFIgc3pOYW1lQnVmLA0KICAgICBVTE9ORyBsSGFzaFZhbCwNCiAgICAgICBJVHlw
ZUluZm8gKipwcFRJbmZvLA0KICAgICAgIE1FTUJFUklEICpyZ01lbUlkLA0KICAgICAgIFVTSE9S
VCAqcGNGb3VuZCwNCiAgICAgICBCU1RSICpwQnN0ckxpYk5hbWUpOw0KDQogdm9pZCBfX3N0ZGNh
bGwgSVR5cGVMaWJfUmVsZWFzZVRMaWJBdHRyX1Byb3h5KCANCiAgICBJVHlwZUxpYiAqIFRoaXMs
DQogICAgIFRMSUJBVFRSICpwVExpYkF0dHIpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlw
ZUxpYl9SZWxlYXNlVExpYkF0dHJfU3R1YiggDQogICAgICBJVHlwZUxpYiAqIFRoaXMpOw0KDQog
SFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVMaWIyX0dldExpYlN0YXRpc3RpY3NfUHJveHkoIA0KICAg
IElUeXBlTGliMiAqIFRoaXMsDQogICAgIFVMT05HICpwY1VuaXF1ZU5hbWVzLA0KICAgICBVTE9O
RyAqcGNjaFVuaXF1ZU5hbWVzKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVMaWIyX0dl
dExpYlN0YXRpc3RpY3NfU3R1YiggDQogICAgICBJVHlwZUxpYjIgKiBUaGlzLA0KICAgICAgIFVM
T05HICpwY1VuaXF1ZU5hbWVzLA0KICAgICAgIFVMT05HICpwY2NoVW5pcXVlTmFtZXMpOw0KDQog
SFJFU1VMVCBfX3N0ZGNhbGwgSVR5cGVMaWIyX0dldERvY3VtZW50YXRpb24yX1Byb3h5KCANCiAg
ICBJVHlwZUxpYjIgKiBUaGlzLA0KICAgICBJTlQgaW5kZXgsDQogICAgIExDSUQgbGNpZCwNCiAg
ICAgDQogICAgICBCU1RSICpwYnN0ckhlbHBTdHJpbmcsDQogICAgIERXT1JEICpwZHdIZWxwU3Ry
aW5nQ29udGV4dCwNCiAgICAgDQogICAgICBCU1RSICpwYnN0ckhlbHBTdHJpbmdEbGwpOw0KDQoN
CiBIUkVTVUxUIF9fc3RkY2FsbCBJVHlwZUxpYjJfR2V0RG9jdW1lbnRhdGlvbjJfU3R1YiggDQog
ICAgICBJVHlwZUxpYjIgKiBUaGlzLA0KICAgICBJTlQgaW5kZXgsDQogICAgIExDSUQgbGNpZCwN
CiAgICAgRFdPUkQgcmVmUHRyRmxhZ3MsDQogICAgICAgQlNUUiAqcGJzdHJIZWxwU3RyaW5nLA0K
ICAgICAgIERXT1JEICpwZHdIZWxwU3RyaW5nQ29udGV4dCwNCiAgICAgICBCU1RSICpwYnN0ckhl
bHBTdHJpbmdEbGwpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVByb3BlcnR5QmFnX1JlYWRfUHJv
eHkoIA0KICAgIElQcm9wZXJ0eUJhZyAqIFRoaXMsDQogICAgIExQQ09MRVNUUiBwc3pQcm9wTmFt
ZSwNCiAgICAgVkFSSUFOVCAqcFZhciwNCiAgICAgSUVycm9yTG9nICpwRXJyb3JMb2cpOw0KDQoN
CiBIUkVTVUxUIF9fc3RkY2FsbCBJUHJvcGVydHlCYWdfUmVhZF9TdHViKCANCiAgICAgIElQcm9w
ZXJ0eUJhZyAqIFRoaXMsDQogICAgICAgTFBDT0xFU1RSIHBzelByb3BOYW1lLA0KICAgICAgIFZB
UklBTlQgKnBWYXIsDQogICAgICAgSUVycm9yTG9nICpwRXJyb3JMb2csDQogICAgIERXT1JEIHZh
clR5cGUsDQogICAgICAgSVVua25vd24gKnBVbmtPYmopOw0KDQoNCg0KDQoNCg0KfQ0KI2xpbmUg
NjA2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9haWRsLmgiDQoNCiNsaW5lIDYwNjUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
YWlkbC5oIg0KDQoNCiNsaW5lIDczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbGJhc2UuaCINCg0KDQpl
eHRlcm4gIkMiew0KI2xpbmUgNzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsYmFzZS5oIg0KDQoNCg0K
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOjQ4MjApICAgIA0KI2xpbmUgOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsYmFz
ZS5oIg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIwMSkgICAgDQojcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTo0MjM3KSAgICANCiNsaW5lIDk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbGJhc2UuaCIN
Cg0KI3ByYWdtYSBvbmNlDQojbGluZSAxMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsYmFzZS5oIg0K
DQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkgb3Ig
R2FtZXMgRmFtaWx5DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1ZlcnNpb25lZFN0cmVhbQ0K
ICAgIHsNCiAgICBHVUlEIGd1aWRWZXJzaW9uOw0KICAgIElTdHJlYW0gKnBTdHJlYW07DQogICAg
fSAJVkVSU0lPTkVEU1RSRUFNOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdWZXJzaW9uZWRTdHJlYW0g
KkxQVkVSU0lPTkVEU1RSRUFNOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdQUk9QVkFSSUFOVCBQUk9QVkFSSUFOVDsN
CiNsaW5lIDE0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb3BpZGxiYXNlLmgiDQp0eXBlZGVmIHN0cnVjdCB0
YWdDQUMNCiAgICB7DQogICAgVUxPTkcgY0VsZW1zOw0KICAgICBDSEFSICpwRWxlbXM7DQogICAg
fSAJQ0FDOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdDQVVCDQogICAgew0KICAgIFVMT05HIGNFbGVt
czsNCiAgICAgVUNIQVIgKnBFbGVtczsNCiAgICB9IAlDQVVCOw0KDQp0eXBlZGVmIHN0cnVjdCB0
YWdDQUkNCiAgICB7DQogICAgVUxPTkcgY0VsZW1zOw0KICAgICBTSE9SVCAqcEVsZW1zOw0KICAg
IH0gCUNBSTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0FVSQ0KICAgIHsNCiAgICBVTE9ORyBjRWxl
bXM7DQogICAgIFVTSE9SVCAqcEVsZW1zOw0KICAgIH0gCUNBVUk7DQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0NBTA0KICAgIHsNCiAgICBVTE9ORyBjRWxlbXM7DQogICAgIExPTkcgKnBFbGVtczsNCiAg
ICB9IAlDQUw7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ0NBVUwNCiAgICB7DQogICAgVUxPTkcgY0Vs
ZW1zOw0KICAgICBVTE9ORyAqcEVsZW1zOw0KICAgIH0gCUNBVUw7DQoNCnR5cGVkZWYgc3RydWN0
IHRhZ0NBRkxUDQogICAgew0KICAgIFVMT05HIGNFbGVtczsNCiAgICAgRkxPQVQgKnBFbGVtczsN
CiAgICB9IAlDQUZMVDsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0FEQkwNCiAgICB7DQogICAgVUxP
TkcgY0VsZW1zOw0KICAgICBET1VCTEUgKnBFbGVtczsNCiAgICB9IAlDQURCTDsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnQ0FDWQ0KICAgIHsNCiAgICBVTE9ORyBjRWxlbXM7DQogICAgIENZICpwRWxl
bXM7DQogICAgfSAJQ0FDWTsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0FEQVRFDQogICAgew0KICAg
IFVMT05HIGNFbGVtczsNCiAgICAgREFURSAqcEVsZW1zOw0KICAgIH0gCUNBREFURTsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnQ0FCU1RSDQogICAgew0KICAgIFVMT05HIGNFbGVtczsNCiAgICAgQlNU
UiAqcEVsZW1zOw0KICAgIH0gCUNBQlNUUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0FCU1RSQkxP
Qg0KICAgIHsNCiAgICBVTE9ORyBjRWxlbXM7DQogICAgIEJTVFJCTE9CICpwRWxlbXM7DQogICAg
fSAJQ0FCU1RSQkxPQjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0FCT09MDQogICAgew0KICAgIFVM
T05HIGNFbGVtczsNCiAgICAgVkFSSUFOVF9CT09MICpwRWxlbXM7DQogICAgfSAJQ0FCT09MOw0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdDQVNDT0RFDQogICAgew0KICAgIFVMT05HIGNFbGVtczsNCiAg
ICAgU0NPREUgKnBFbGVtczsNCiAgICB9IAlDQVNDT0RFOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdD
QVBST1BWQVJJQU5UDQogICAgew0KICAgIFVMT05HIGNFbGVtczsNCiAgICAgUFJPUFZBUklBTlQg
KnBFbGVtczsNCiAgICB9IAlDQVBST1BWQVJJQU5UOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdDQUgN
CiAgICB7DQogICAgVUxPTkcgY0VsZW1zOw0KICAgICBMQVJHRV9JTlRFR0VSICpwRWxlbXM7DQog
ICAgfSAJQ0FIOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdDQVVIDQogICAgew0KICAgIFVMT05HIGNF
bGVtczsNCiAgICAgVUxBUkdFX0lOVEVHRVIgKnBFbGVtczsNCiAgICB9IAlDQVVIOw0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdDQUxQU1RSDQogICAgew0KICAgIFVMT05HIGNFbGVtczsNCiAgICAgTFBT
VFIgKnBFbGVtczsNCiAgICB9IAlDQUxQU1RSOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdDQUxQV1NU
Ug0KICAgIHsNCiAgICBVTE9ORyBjRWxlbXM7DQogICAgIExQV1NUUiAqcEVsZW1zOw0KICAgIH0g
CUNBTFBXU1RSOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdDQUZJTEVUSU1FDQogICAgew0KICAgIFVM
T05HIGNFbGVtczsNCiAgICAgRklMRVRJTUUgKnBFbGVtczsNCiAgICB9IAlDQUZJTEVUSU1FOw0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdDQUNMSVBEQVRBDQogICAgew0KICAgIFVMT05HIGNFbGVtczsN
CiAgICAgQ0xJUERBVEEgKnBFbGVtczsNCiAgICB9IAlDQUNMSVBEQVRBOw0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdDQUNMU0lEDQogICAgew0KICAgIFVMT05HIGNFbGVtczsNCiAgICAgQ0xTSUQgKnBF
bGVtczsNCiAgICB9IAlDQUNMU0lEOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgV09S
RCBQUk9QVkFSX1BBRDE7DQp0eXBlZGVmIFdPUkQgUFJPUFZBUl9QQUQyOw0KdHlwZWRlZiBXT1JE
IFBST1BWQVJfUEFEMzsNCg0KI2xpbmUgMjg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbGJhc2UuaCIN
Cg0KDQoNCg0KDQojbGluZSAyOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsYmFzZS5oIg0KDQpzdHJ1
Y3QgdGFnUFJPUFZBUklBTlQgew0KICB1bmlvbiB7DQojbGluZSAyOTcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9waWRsYmFzZS5oIg0Kc3RydWN0IA0KICAgIHsNCiAgICBWQVJUWVBFIHZ0Ow0KICAgIFBST1BW
QVJfUEFEMSB3UmVzZXJ2ZWQxOw0KICAgIFBST1BWQVJfUEFEMiB3UmVzZXJ2ZWQyOw0KICAgIFBS
T1BWQVJfUEFEMyB3UmVzZXJ2ZWQzOw0KICAgICAgdW5pb24gDQogICAgICAgIHsNCiAgICAgICAg
ICAgDQogICAgICAgICBDSEFSIGNWYWw7DQogICAgICAgICBVQ0hBUiBiVmFsOw0KICAgICAgICAg
U0hPUlQgaVZhbDsNCiAgICAgICAgIFVTSE9SVCB1aVZhbDsNCiAgICAgICAgIExPTkcgbFZhbDsN
CiAgICAgICAgIFVMT05HIHVsVmFsOw0KICAgICAgICAgSU5UIGludFZhbDsNCiAgICAgICAgIFVJ
TlQgdWludFZhbDsNCiAgICAgICAgIExBUkdFX0lOVEVHRVIgaFZhbDsNCiAgICAgICAgIFVMQVJH
RV9JTlRFR0VSIHVoVmFsOw0KICAgICAgICAgRkxPQVQgZmx0VmFsOw0KICAgICAgICAgRE9VQkxF
IGRibFZhbDsNCiAgICAgICAgIFZBUklBTlRfQk9PTCBib29sVmFsOw0KICAgICAgICAgVkFSSUFO
VF9CT09MIF9fT0JTT0xFVEVfX1ZBUklBTlRfQk9PTDsNCiAgICAgICAgIFNDT0RFIHNjb2RlOw0K
ICAgICAgICAgQ1kgY3lWYWw7DQogICAgICAgICBEQVRFIGRhdGU7DQogICAgICAgICBGSUxFVElN
RSBmaWxldGltZTsNCiAgICAgICAgIENMU0lEICpwdXVpZDsNCiAgICAgICAgIENMSVBEQVRBICpw
Y2xpcGRhdGE7DQogICAgICAgICBCU1RSIGJzdHJWYWw7DQogICAgICAgICBCU1RSQkxPQiBic3Ry
YmxvYlZhbDsNCiAgICAgICAgIEJMT0IgYmxvYjsNCiAgICAgICAgIExQU1RSIHBzelZhbDsNCiAg
ICAgICAgIExQV1NUUiBwd3N6VmFsOw0KICAgICAgICAgSVVua25vd24gKnB1bmtWYWw7DQogICAg
ICAgICBJRGlzcGF0Y2ggKnBkaXNwVmFsOw0KICAgICAgICAgSVN0cmVhbSAqcFN0cmVhbTsNCiAg
ICAgICAgIElTdG9yYWdlICpwU3RvcmFnZTsNCiAgICAgICAgIExQVkVSU0lPTkVEU1RSRUFNIHBW
ZXJzaW9uZWRTdHJlYW07DQogICAgICAgICBMUFNBRkVBUlJBWSBwYXJyYXk7DQogICAgICAgICBD
QUMgY2FjOw0KICAgICAgICAgQ0FVQiBjYXViOw0KICAgICAgICAgQ0FJIGNhaTsNCiAgICAgICAg
IENBVUkgY2F1aTsNCiAgICAgICAgIENBTCBjYWw7DQogICAgICAgICBDQVVMIGNhdWw7DQogICAg
ICAgICBDQUggY2FoOw0KICAgICAgICAgQ0FVSCBjYXVoOw0KICAgICAgICAgQ0FGTFQgY2FmbHQ7
DQogICAgICAgICBDQURCTCBjYWRibDsNCiAgICAgICAgIENBQk9PTCBjYWJvb2w7DQogICAgICAg
ICBDQVNDT0RFIGNhc2NvZGU7DQogICAgICAgICBDQUNZIGNhY3k7DQogICAgICAgICBDQURBVEUg
Y2FkYXRlOw0KICAgICAgICAgQ0FGSUxFVElNRSBjYWZpbGV0aW1lOw0KICAgICAgICAgQ0FDTFNJ
RCBjYXV1aWQ7DQogICAgICAgICBDQUNMSVBEQVRBIGNhY2xpcGRhdGE7DQogICAgICAgICBDQUJT
VFIgY2Fic3RyOw0KICAgICAgICAgQ0FCU1RSQkxPQiBjYWJzdHJibG9iOw0KICAgICAgICAgQ0FM
UFNUUiBjYWxwc3RyOw0KICAgICAgICAgQ0FMUFdTVFIgY2FscHdzdHI7DQogICAgICAgICBDQVBS
T1BWQVJJQU5UIGNhcHJvcHZhcjsNCiAgICAgICAgIENIQVIgKnBjVmFsOw0KICAgICAgICAgVUNI
QVIgKnBiVmFsOw0KICAgICAgICAgU0hPUlQgKnBpVmFsOw0KICAgICAgICAgVVNIT1JUICpwdWlW
YWw7DQogICAgICAgICBMT05HICpwbFZhbDsNCiAgICAgICAgIFVMT05HICpwdWxWYWw7DQogICAg
ICAgICBJTlQgKnBpbnRWYWw7DQogICAgICAgICBVSU5UICpwdWludFZhbDsNCiAgICAgICAgIEZM
T0FUICpwZmx0VmFsOw0KICAgICAgICAgRE9VQkxFICpwZGJsVmFsOw0KICAgICAgICAgVkFSSUFO
VF9CT09MICpwYm9vbFZhbDsNCiAgICAgICAgIERFQ0lNQUwgKnBkZWNWYWw7DQogICAgICAgICBT
Q09ERSAqcHNjb2RlOw0KICAgICAgICAgQ1kgKnBjeVZhbDsNCiAgICAgICAgIERBVEUgKnBkYXRl
Ow0KICAgICAgICAgQlNUUiAqcGJzdHJWYWw7DQogICAgICAgICBJVW5rbm93biAqKnBwdW5rVmFs
Ow0KICAgICAgICAgSURpc3BhdGNoICoqcHBkaXNwVmFsOw0KICAgICAgICAgTFBTQUZFQVJSQVkg
KnBwYXJyYXk7DQogICAgICAgICBQUk9QVkFSSUFOVCAqcHZhclZhbDsNCiAgICAgICAgfSAJOw0K
ICAgIH0gOw0KDQogICAgREVDSU1BTCBkZWNWYWw7DQogIH07DQp9Ow0KI2xpbmUgMzg2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxccHJvcGlkbGJhc2UuaCINCg0KI2xpbmUgMzg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlk
bGJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnUFJPUFZBUklB
TlQgKiBMUFBST1BWQVJJQU5UOw0KDQoNCg0KDQoNCg0KDQojbGluZSA0MDcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxwcm9waWRsYmFzZS5oIg0KI2xpbmUgNDA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbGJhc2UuaCIN
Cg0KI2xpbmUgNDEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbGJhc2UuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnUFJPUFNQRUMNCiAgICB7DQogICAgVUxPTkcgdWxLaW5kOw0KICAgICAgdW5pb24g
DQogICAgICAgIHsNCiAgICAgICAgIFBST1BJRCBwcm9waWQ7DQogICAgICAgICBMUE9MRVNUUiBs
cHdzdHI7DQogICAgICAgICAgIA0KICAgICAgICB9IAk7DQogICAgfSAJUFJPUFNQRUM7DQoNCnR5
cGVkZWYgc3RydWN0IHRhZ1NUQVRQUk9QU1RHDQogICAgew0KICAgIExQT0xFU1RSIGxwd3N0ck5h
bWU7DQogICAgUFJPUElEIHByb3BpZDsNCiAgICBWQVJUWVBFIHZ0Ow0KICAgIH0gCVNUQVRQUk9Q
U1RHOw0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnU1RBVFBST1BTRVRTVEcNCiAgICB7
DQogICAgRk1USUQgZm10aWQ7DQogICAgQ0xTSUQgY2xzaWQ7DQogICAgRFdPUkQgZ3JmRmxhZ3M7
DQogICAgRklMRVRJTUUgbXRpbWU7DQogICAgRklMRVRJTUUgY3RpbWU7DQogICAgRklMRVRJTUUg
YXRpbWU7DQogICAgRFdPUkQgZHdPU1ZlcnNpb247DQogICAgfSAJU1RBVFBST1BTRVRTVEc7DQoN
Cg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3Byb3BpZGxiYXNlXzAwMDBfMDAw
MF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9wcm9waWRs
YmFzZV8wMDAwXzAwMDBfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBJSUQgSUlEX0lQcm9wZXJ0eVN0b3JhZ2U7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjAwMDAwMTM4LTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQcm9wZXJ0eVN0b3JhZ2UgOiBwdWJsaWMgSVVua25v
d24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFJlYWRNdWx0aXBsZSggDQogICAgICAgICAgICAgVUxPTkcgY3BzcGVjLA0KICAgICAgICAgICAg
ICAgY29uc3QgUFJPUFNQRUMgcmdwc3BlY1sgIF0sDQogICAgICAgICAgICAgICBQUk9QVkFSSUFO
VCByZ3Byb3B2YXJbICBdKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFdyaXRlTXVsdGlwbGUoIA0KICAgICAgICAgICAgIFVMT05HIGNwc3BlYywNCiAg
ICAgICAgICAgICAgIGNvbnN0IFBST1BTUEVDIHJncHNwZWNbICBdLA0KICAgICAgICAgICAgICAg
Y29uc3QgUFJPUFZBUklBTlQgcmdwcm9wdmFyWyAgXSwNCiAgICAgICAgICAgICBQUk9QSUQgcHJv
cGlkTmFtZUZpcnN0KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIERlbGV0ZU11bHRpcGxlKCANCiAgICAgICAgICAgICBVTE9ORyBjcHNwZWMsDQogICAg
ICAgICAgICAgICBjb25zdCBQUk9QU1BFQyByZ3BzcGVjWyAgXSkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBSZWFkUHJvcGVydHlOYW1lcyggDQogICAg
ICAgICAgICAgVUxPTkcgY3Byb3BpZCwNCiAgICAgICAgICAgICAgIGNvbnN0IFBST1BJRCByZ3By
b3BpZFsgIF0sDQogICAgICAgICAgICAgICBMUE9MRVNUUiByZ2xwd3N0ck5hbWVbICBdKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFdyaXRlUHJvcGVy
dHlOYW1lcyggDQogICAgICAgICAgICAgVUxPTkcgY3Byb3BpZCwNCiAgICAgICAgICAgICAgIGNv
bnN0IFBST1BJRCByZ3Byb3BpZFsgIF0sDQogICAgICAgICAgICAgICBjb25zdCBMUE9MRVNUUiBy
Z2xwd3N0ck5hbWVbICBdKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIERlbGV0ZVByb3BlcnR5TmFtZXMoIA0KICAgICAgICAgICAgIFVMT05HIGNwcm9w
aWQsDQogICAgICAgICAgICAgICBjb25zdCBQUk9QSUQgcmdwcm9waWRbICBdKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENvbW1pdCggDQogICAgICAg
ICAgICAgRFdPUkQgZ3JmQ29tbWl0RmxhZ3MpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmV2ZXJ0KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEVudW0oIA0KICAgICAgICAgICAgICAgSUVudW1T
VEFUUFJPUFNURyAqKnBwZW51bSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBTZXRUaW1lcyggDQogICAgICAgICAgICAgICBjb25zdCBGSUxFVElNRSAq
cGN0aW1lLA0KICAgICAgICAgICAgICAgY29uc3QgRklMRVRJTUUgKnBhdGltZSwNCiAgICAgICAg
ICAgICAgIGNvbnN0IEZJTEVUSU1FICpwbXRpbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0Q2xhc3MoIA0KICAgICAgICAgICAgICAgY29uc3Qg
SUlEICYgY2xzaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgU3RhdCggDQogICAgICAgICAgICAgICBTVEFUUFJPUFNFVFNURyAqcHN0YXRwc3N0Zykg
PSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY4NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHBy
b3BpZGxiYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDY5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb3BpZGxiYXNl
LmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElQcm9wZXJ0eVNldFN0b3JhZ2UgKkxQ
UFJPUEVSVFlTRVRTVE9SQUdFOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JUHJvcGVy
dHlTZXRTdG9yYWdlOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAw
MDEzQS0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJUHJvcGVydHlTZXRTdG9yYWdlIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1
YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGUoIA0KICAgICAg
ICAgICAgICAgY29uc3QgSUlEICYgcmZtdGlkLA0KICAgICAgICAgICAgICAgY29uc3QgQ0xTSUQg
KnBjbHNpZCwNCiAgICAgICAgICAgICBEV09SRCBncmZGbGFncywNCiAgICAgICAgICAgICBEV09S
RCBncmZNb2RlLA0KICAgICAgICAgICAgICAgSVByb3BlcnR5U3RvcmFnZSAqKnBwcHJzdGcpID0g
MDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgT3BlbiggDQog
ICAgICAgICAgICAgICBjb25zdCBJSUQgJiByZm10aWQsDQogICAgICAgICAgICAgRFdPUkQgZ3Jm
TW9kZSwNCiAgICAgICAgICAgICAgIElQcm9wZXJ0eVN0b3JhZ2UgKipwcHByc3RnKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIERlbGV0ZSggDQogICAg
ICAgICAgICAgICBjb25zdCBJSUQgJiByZm10aWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRW51bSggDQogICAgICAgICAgICAgICBJRW51bVNUQVRQ
Uk9QU0VUU1RHICoqcHBlbnVtKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4MTEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxwcm9waWRsYmFzZS5oIg0KDQoNCg0KDQojbGluZSA4MTYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9waWRsYmFzZS5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJRW51bVNUQVRQUk9Q
U1RHICpMUEVOVU1TVEFUUFJPUFNURzsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUVu
dW1TVEFUUFJPUFNURzsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAw
MDAxMzktMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUp
DQogICAgSUVudW1TVEFUUFJPUFNURyA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJs
aWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIE5leHQoIA0KICAgICAgICAg
ICAgIFVMT05HIGNlbHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBTVEFUUFJPUFNU
RyAqcmdlbHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgIFVMT05HICpwY2VsdEZl
dGNoZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
U2tpcCggDQogICAgICAgICAgICAgVUxPTkcgY2VsdCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBSZXNldCggdm9pZCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDbG9uZSggDQogICAgICAgICAgICAgICBJ
RW51bVNUQVRQUk9QU1RHICoqcHBlbnVtKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQog
ICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MjkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxwcm9waWRsYmFzZS5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElFbnVtU1RB
VFBST1BTVEdfUmVtb3RlTmV4dF9Qcm94eSggDQogICAgICBJRW51bVNUQVRQUk9QU1RHICogVGhp
cywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgICBTVEFUUFJPUFNURyAqcmdlbHQsDQogICAgICAg
VUxPTkcgKnBjZWx0RmV0Y2hlZCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUVudW1TVEFUUFJPUFNU
R19SZW1vdGVOZXh0X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0No
YW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNN
ZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDk0OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHByb3BpZGxiYXNlLmgiDQoNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElF
bnVtU1RBVFBST1BTRVRTVEcgKkxQRU5VTVNUQVRQUk9QU0VUU1RHOw0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JRW51bVNUQVRQUk9QU0VUU1RHOw0KDQoNCiAgICANCiAgICBzdHJ1Y3Qg
X19kZWNsc3BlYyh1dWlkKCIwMDAwMDEzQi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkg
X19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJRW51bVNUQVRQUk9QU0VUU1RHIDogcHVibGljIElV
bmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0
ZGNhbGwgTmV4dCggDQogICAgICAgICAgICAgVUxPTkcgY2VsdCwNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIFNUQVRQUk9QU0VUU1RHICpyZ2VsdCwNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAgVUxPTkcgKnBjZWx0RmV0Y2hlZCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTa2lwKCANCiAgICAgICAgICAgICBVTE9ORyBjZWx0
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlc2V0
KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IENsb25lKCANCiAgICAgICAgICAgICAgIElFbnVtU1RBVFBST1BTRVRTVEcgKipwcGVudW0pID0g
MDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEwNjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsYmFzZS5oIg0KDQoN
Cg0KIEhSRVNVTFQgX19zdGRjYWxsIElFbnVtU1RBVFBST1BTRVRTVEdfUmVtb3RlTmV4dF9Qcm94
eSggDQogICAgICBJRW51bVNUQVRQUk9QU0VUU1RHICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwN
CiAgICAgICBTVEFUUFJPUFNFVFNURyAqcmdlbHQsDQogICAgICAgVUxPTkcgKnBjZWx0RmV0Y2hl
ZCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSUVudW1TVEFUUFJPUFNFVFNUR19SZW1vdGVOZXh0X1N0
dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9w
UnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERX
T1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDEwODAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9w
aWRsYmFzZS5oIg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJUHJvcGVydHlTdG9yYWdlICpMUFBS
T1BFUlRZU1RPUkFHRTsNCg0KI2xpbmUgMTA4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb3BpZGxiYXNlLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCiNsaW5lIDEwOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRs
YmFzZS5oIg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KDQoNCg0KI2xpbmUgMTA5OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHByb3BpZGxiYXNlLmgiDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0
Zl9wcm9waWRsYmFzZV8wMDAwXzAwMDRfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFO
RExFIF9fTUlETF9pdGZfcHJvcGlkbGJhc2VfMDAwMF8wMDA0X3YwXzBfc19pZnNwZWM7DQoNCg0K
DQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgQlNUUl9Vc2VyU2l6ZSggICAg
ICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEJTVFIgKiAp
OyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEJTVFJfVXNlck1hcnNoYWwoICAgIHVuc2ln
bmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgQlNUUiAqICk7IA0KdW5zaWduZWQgY2hh
ciAqIF9fc3RkY2FsbCAgQlNUUl9Vc2VyVW5tYXJzaGFsKCAgdW5zaWduZWQgbG9uZyAqLCAgIHVu
c2lnbmVkIGNoYXIgKiwgICBCU1RSICogKTsgDQp2b2lkICAgICAgICAgICAgICAgICAgICAgIF9f
c3RkY2FsbCAgQlNUUl9Vc2VyRnJlZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEJTVFIgKiAp
OyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIExQU0FGRUFSUkFZX1Vz
ZXJTaXplKCAgICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAs
ICAgTFBTQUZFQVJSQVkgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIExQU0FGRUFS
UkFZX1VzZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAg
IExQU0FGRUFSUkFZICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBMUFNBRkVBUlJB
WV9Vc2VyVW5tYXJzaGFsKCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBM
UFNBRkVBUlJBWSAqICk7IA0Kdm9pZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIExQ
U0FGRUFSUkFZX1VzZXJGcmVlKCAgICAgICB1bnNpZ25lZCBsb25nICosICAgTFBTQUZFQVJSQVkg
KiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIEJTVFJfVXNlclNp
emU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAg
IEJTVFIgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEJTVFJfVXNlck1hcnNoYWw2
NCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBCU1RSICogKTsgDQp1
bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBCU1RSX1VzZXJVbm1hcnNoYWw2NCggIHVuc2lnbmVk
IGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgQlNUUiAqICk7IA0Kdm9pZCAgICAgICAgICAg
ICAgICAgICAgICBfX3N0ZGNhbGwgIEJTVFJfVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9u
ZyAqLCAgIEJTVFIgKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwg
IExQU0FGRUFSUkFZX1VzZXJTaXplNjQoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQg
bG9uZyAgICAgICAgICAgICwgICBMUFNBRkVBUlJBWSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9f
c3RkY2FsbCAgTFBTQUZFQVJSQVlfVXNlck1hcnNoYWw2NCggICAgdW5zaWduZWQgbG9uZyAqLCAg
IHVuc2lnbmVkIGNoYXIgKiwgICBMUFNBRkVBUlJBWSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9f
c3RkY2FsbCAgTFBTQUZFQVJSQVlfVXNlclVubWFyc2hhbDY0KCAgdW5zaWduZWQgbG9uZyAqLCAg
IHVuc2lnbmVkIGNoYXIgKiwgICBMUFNBRkVBUlJBWSAqICk7IA0Kdm9pZCAgICAgICAgICAgICAg
ICAgICAgICBfX3N0ZGNhbGwgIExQU0FGRUFSUkFZX1VzZXJGcmVlNjQoICAgICAgIHVuc2lnbmVk
IGxvbmcgKiwgICBMUFNBRkVBUlJBWSAqICk7IA0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUVudW1T
VEFUUFJPUFNUR19OZXh0X1Byb3h5KCANCiAgICBJRW51bVNUQVRQUk9QU1RHICogVGhpcywNCiAg
ICAgVUxPTkcgY2VsdCwNCiAgICAgDQogICAgICAgU1RBVFBST1BTVEcgKnJnZWx0LA0KICAgICAN
CiAgICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJ
RW51bVNUQVRQUk9QU1RHX05leHRfU3R1YiggDQogICAgICBJRW51bVNUQVRQUk9QU1RHICogVGhp
cywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgICBTVEFUUFJPUFNURyAqcmdlbHQsDQogICAgICAg
VUxPTkcgKnBjZWx0RmV0Y2hlZCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJRW51bVNUQVRQUk9Q
U0VUU1RHX05leHRfUHJveHkoIA0KICAgIElFbnVtU1RBVFBST1BTRVRTVEcgKiBUaGlzLA0KICAg
ICBVTE9ORyBjZWx0LA0KICAgICANCiAgICAgICBTVEFUUFJPUFNFVFNURyAqcmdlbHQsDQogICAg
IA0KICAgICAgICAgVUxPTkcgKnBjZWx0RmV0Y2hlZCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxs
IElFbnVtU1RBVFBST1BTRVRTVEdfTmV4dF9TdHViKCANCiAgICAgIElFbnVtU1RBVFBST1BTRVRT
VEcgKiBUaGlzLA0KICAgICBVTE9ORyBjZWx0LA0KICAgICAgIFNUQVRQUk9QU0VUU1RHICpyZ2Vs
dCwNCiAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0KDQoNCg0KDQoNCn0NCiNsaW5lIDEx
NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsYmFzZS5oIg0KDQojbGluZSAxMTY0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxccHJvcGlkbGJhc2UuaCINCg0KDQojbGluZSAyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWwyYXBpLmgi
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIGFuZCBHYW1lcyBGYW1pbHkNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxjb21sMmFwaS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcY29tbDJhcGkuaCINCg0KdHlwZWRlZiBEV09SRCBTVEdGTVQ7DQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbDJhcGkuaCINCiNwcmFnbWEgZW5kcmVnaW9u
DQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCg0KDQoNCg0KIA0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNClN0Z0NyZWF0
ZURvY2ZpbGUoDQogICAgICAgIGNvbnN0IFdDSEFSKiBwd2NzTmFtZSwNCiAgICAgIERXT1JEIGdy
Zk1vZGUsDQogICAgICBEV09SRCByZXNlcnZlZCwNCiAgICAgSVN0b3JhZ2UqKiBwcHN0Z09wZW4N
CiAgICApOw0KDQoNCiANCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsDQpTdGdDcmVhdGVEb2NmaWxlT25JTG9ja0J5dGVzKA0KICAgICAgSUxvY2tCeXRl
cyogcGxrYnl0LA0KICAgICAgRFdPUkQgZ3JmTW9kZSwNCiAgICAgIERXT1JEIHJlc2VydmVkLA0K
ICAgICBJU3RvcmFnZSoqIHBwc3RnT3Blbg0KICAgICk7DQoNCg0KIA0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNClN0Z09wZW5TdG9yYWdlKA0KICAg
ICAgICBjb25zdCBXQ0hBUiogcHdjc05hbWUsDQogICAgICBJU3RvcmFnZSogcHN0Z1ByaW9yaXR5
LA0KICAgICAgRFdPUkQgZ3JmTW9kZSwNCiAgICAgIFNOQiBzbmJFeGNsdWRlLA0KICAgICAgRFdP
UkQgcmVzZXJ2ZWQsDQogICAgIElTdG9yYWdlKiogcHBzdGdPcGVuDQogICAgKTsNCg0KDQogDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KU3RnT3Bl
blN0b3JhZ2VPbklMb2NrQnl0ZXMoDQogICAgICBJTG9ja0J5dGVzKiBwbGtieXQsDQogICAgICBJ
U3RvcmFnZSogcHN0Z1ByaW9yaXR5LA0KICAgICAgRFdPUkQgZ3JmTW9kZSwNCiAgICAgIFNOQiBz
bmJFeGNsdWRlLA0KICAgICAgRFdPUkQgcmVzZXJ2ZWQsDQogICAgIElTdG9yYWdlKiogcHBzdGdP
cGVuDQogICAgKTsNCg0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbA0KU3RnSXNTdG9yYWdlRmlsZSgNCiAgICAgICAgY29uc3QgV0NIQVIqIHB3
Y3NOYW1lDQogICAgKTsNCg0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbA0KU3RnSXNTdG9yYWdlSUxvY2tCeXRlcygNCiAgICAgIElMb2NrQnl0
ZXMqIHBsa2J5dA0KICAgICk7DQoNCg0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwNClN0Z1NldFRpbWVzKA0KICAgICAgICBjb25zdCBXQ0hBUiog
bHBzek5hbWUsDQogICAgICBjb25zdCBGSUxFVElNRSogcGN0aW1lLA0KICAgICAgY29uc3QgRklM
RVRJTUUqIHBhdGltZSwNCiAgICAgIGNvbnN0IEZJTEVUSU1FKiBwbXRpbWUNCiAgICApOw0KDQoN
Cg0KDQoNCiNsaW5lIDE1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWwyYXBpLmgiDQoNCg0KDQojbGluZSAx
NjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxjb21sMmFwaS5oIg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdTVEdPUFRJ
T05TDQp7DQogICAgVVNIT1JUIHVzVmVyc2lvbjsgICAgICAgICAgICANCiAgICBVU0hPUlQgcmVz
ZXJ2ZWQ7ICAgICAgICAgICAgIA0KICAgIFVMT05HIHVsU2VjdG9yU2l6ZTsgICAgICAgICAgDQoN
CiAgICBjb25zdCBXQ0hBUiAqcHdjc1RlbXBsYXRlRmlsZTsgIA0KI2xpbmUgMTcwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcY29tbDJhcGkuaCINCn0gU1RHT1BUSU9OUzsNCg0KIA0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNClN0Z0NyZWF0ZVN0b3JhZ2VFeCgNCiAg
ICAgICAgY29uc3QgV0NIQVIqIHB3Y3NOYW1lLA0KICAgICAgRFdPUkQgZ3JmTW9kZSwNCiAgICAg
IERXT1JEIHN0Z2ZtdCwNCiAgICAgIERXT1JEIGdyZkF0dHJzLA0KICAgICAgU1RHT1BUSU9OUyog
cFN0Z09wdGlvbnMsDQogICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiBwU2VjdXJpdHlEZXNjcmlw
dG9yLA0KICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAgICAgdm9pZCoqIHBwT2JqZWN0T3Blbg0K
ICAgICk7DQoNCg0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBf
X3N0ZGNhbGwNClN0Z09wZW5TdG9yYWdlRXgoDQogICAgICAgIGNvbnN0IFdDSEFSKiBwd2NzTmFt
ZSwNCiAgICAgIERXT1JEIGdyZk1vZGUsDQogICAgICBEV09SRCBzdGdmbXQsDQogICAgICBEV09S
RCBncmZBdHRycywNCiAgICAgIFNUR09QVElPTlMqIHBTdGdPcHRpb25zLA0KICAgICAgUFNFQ1VS
SVRZX0RFU0NSSVBUT1IgcFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgIGNvbnN0IElJRCAmIHJp
aWQsDQogICAgIHZvaWQqKiBwcE9iamVjdE9wZW4NCiAgICApOw0KDQoNCg0KDQogDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KU3RnQ3JlYXRlUHJv
cFN0ZygNCiAgICAgIElVbmtub3duKiBwVW5rLA0KICAgICAgY29uc3QgSUlEICYgZm10aWQsDQog
ICAgICBjb25zdCBDTFNJRCogcGNsc2lkLA0KICAgICAgRFdPUkQgZ3JmRmxhZ3MsDQogICAgICBE
V09SRCBkd1Jlc2VydmVkLA0KICAgICBJUHJvcGVydHlTdG9yYWdlKiogcHBQcm9wU3RnDQogICAg
KTsNCg0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbA0KU3RnT3BlblByb3BTdGcoDQogICAgICBJVW5rbm93biogcFVuaywNCiAgICAgIGNvbnN0
IElJRCAmIGZtdGlkLA0KICAgICAgRFdPUkQgZ3JmRmxhZ3MsDQogICAgICBEV09SRCBkd1Jlc2Vy
dmVkLA0KICAgICBJUHJvcGVydHlTdG9yYWdlKiogcHBQcm9wU3RnDQogICAgKTsNCg0KDQogDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KU3RnQ3Jl
YXRlUHJvcFNldFN0ZygNCiAgICAgIElTdG9yYWdlKiBwU3RvcmFnZSwNCiAgICAgIERXT1JEIGR3
UmVzZXJ2ZWQsDQogICAgIElQcm9wZXJ0eVNldFN0b3JhZ2UqKiBwcFByb3BTZXRTdGcNCiAgICAp
Ow0KDQoNCg0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9f
c3RkY2FsbA0KRm10SWRUb1Byb3BTdGdOYW1lKA0KICAgICAgY29uc3QgRk1USUQqIHBmbXRpZCwN
CiAgICAgIExQT0xFU1RSIG9zek5hbWUNCiAgICApOw0KDQoNCiANCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpQcm9wU3RnTmFtZVRvRm10SWQoDQog
ICAgICBjb25zdCBMUE9MRVNUUiBvc3pOYW1lLA0KICAgICAgRk1USUQqIHBmbXRpZA0KICAgICk7
DQoNCg0KI2xpbmUgMjUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbDJhcGkuaCINCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KUmVhZENsYXNzU3RnKA0K
ICAgICAgTFBTVE9SQUdFIHBTdGcsDQogICAgICBDTFNJRCAgICogcGNsc2lkDQogICAgKTsNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KV3Jp
dGVDbGFzc1N0ZygNCiAgICAgIExQU1RPUkFHRSBwU3RnLA0KICAgICAgY29uc3QgSUlEICYgcmNs
c2lkDQogICAgKTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbA0KUmVhZENsYXNzU3RtKA0KICAgICAgTFBTVFJFQU0gcFN0bSwNCiAgICAgIENM
U0lEICAgKiBwY2xzaWQNCiAgICApOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhSRVNVTFQgX19zdGRjYWxsDQpXcml0ZUNsYXNzU3RtKA0KICAgICAgTFBTVFJFQU0gcFN0
bSwNCiAgICAgIGNvbnN0IElJRCAmIHJjbHNpZA0KICAgICk7DQogDQoNCg0KIA0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkdldEhHbG9iYWxGcm9t
SUxvY2tCeXRlcygNCiAgICAgIExQTE9DS0JZVEVTIHBsa2J5dCwNCiAgICAgIEhHTE9CQUwgICAq
IHBoZ2xvYmFsDQogICAgKTsNCg0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbA0KQ3JlYXRlSUxvY2tCeXRlc09uSEdsb2JhbCgNCiAgICAgIEhH
TE9CQUwgaEdsb2JhbCwNCiAgICAgIEJPT0wgZkRlbGV0ZU9uUmVsZWFzZSwNCiAgICAgTFBMT0NL
QllURVMgICAqIHBwbGtieXQNCiAgICApOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNCkdldENvbnZlcnRTdGcoDQogICAgICBMUFNUT1JB
R0UgcFN0Zw0KICAgICk7DQoNCg0KI2xpbmUgMzA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbDJhcGkuaCIN
CiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDMxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbWwyYXBpLmgi
DQojbGluZSAyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamJhc2UuaCINCg0KDQp0eXBlZGVmIGVudW0gdGFn
Q09JTklUDQp7DQogIENPSU5JVF9BUEFSVE1FTlRUSFJFQURFRCAgPSAweDIsICAgICAgDQoNCg0K
ICANCiAgQ09JTklUX01VTFRJVEhSRUFERUQgICAgICA9IENPSU5JVEJBU0VfTVVMVElUSFJFQURF
RCwNCiAgQ09JTklUX0RJU0FCTEVfT0xFMURERSAgICA9IDB4NCwgICAgICANCiAgQ09JTklUX1NQ
RUVEX09WRVJfTUVNT1JZICA9IDB4OCwgICAgICANCiNsaW5lIDQxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
YmFzZS5oIg0KfSBDT0lOSVQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBQYXJ0aXRpb24NCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRFdPUkQgX19zdGRjYWxsIENv
QnVpbGRWZXJzaW9uKCB2b2lkICk7DQoNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBDb0luaXRpYWxpemUoICBMUFZPSUQgcHZSZXNlcnZl
ZCk7DQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbCAgQ29SZWdpc3Rlck1hbGxvY1NweSggIExQTUFMTE9DU1BZIHBNYWxsb2NTcHkpOw0KICBl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgQ29SZXZv
a2VNYWxsb2NTcHkodm9pZCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCAgQ29DcmVhdGVTdGFuZGFyZE1hbGxvYyggIERXT1JEIG1lbWN0eCwgIElN
YWxsb2MgKiAqIHBwTWFsbG9jKTsNCg0KDQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgQ29SZWdpc3RlckluaXRpYWxpemVTcHkoICBJSW5p
dGlhbGl6ZVNweSAqcFNweSwgICBVTEFSR0VfSU5URUdFUiAqcHVsaUNvb2tpZSk7DQogIGV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBDb1Jldm9rZUlu
aXRpYWxpemVTcHkoICBVTEFSR0VfSU5URUdFUiB1bGlDb29raWUpOw0KDQoNCg0KdHlwZWRlZiBl
bnVtIHRhZ0NPTVNEDQp7DQogICAgU0RfTEFVTkNIUEVSTUlTU0lPTlMgPSAwLCAgICAgICANCiAg
ICBTRF9BQ0NFU1NQRVJNSVNTSU9OUyA9IDEsICAgICAgIA0KICAgIFNEX0xBVU5DSFJFU1RSSUNU
SU9OUyA9IDIsICAgICAgDQogICAgU0RfQUNDRVNTUkVTVFJJQ1RJT05TID0gMyAgICAgICANCg0K
fSBDT01TRDsNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0
ZGNhbGwgIENvR2V0U3lzdGVtU2VjdXJpdHlQZXJtaXNzaW9ucyhDT01TRCBjb21TRFR5cGUsIFBT
RUNVUklUWV9ERVNDUklQVE9SICpwcFNEKTsNCg0KI2xpbmUgMTA2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2Jq
YmFzZS5oIg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSElOU1RBTkNF
IF9fc3RkY2FsbCBDb0xvYWRMaWJyYXJ5KCAgTFBPTEVTVFIgbHBzekxpYk5hbWUsICAgQk9PTCBi
QXV0b0ZyZWUpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNh
bGwgQ29GcmVlTGlicmFyeSggIEhJTlNUQU5DRSBoSW5zdCk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSB2b2lkIF9fc3RkY2FsbCBDb0ZyZWVBbGxMaWJyYXJpZXModm9pZCk7DQoN
Cg0KDQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbCBDb0dldEluc3RhbmNlRnJvbUZpbGUoDQogICAgICBDT1NFUlZFUklORk8gKiAgICAgICAg
ICAgIHBTZXJ2ZXJJbmZvLA0KICAgICAgQ0xTSUQgICAgICAgICogICAgICAgICAgICBwQ2xzaWQs
DQogICAgICBJVW5rbm93biAgICAgKiAgICAgICAgICAgIHB1bmtPdXRlciwgDQogICAgICBEV09S
RCAgICAgICAgICAgICAgICAgICAgICAgICBkd0Nsc0N0eCwNCiAgICAgIERXT1JEICAgICAgICAg
ICAgICAgICAgICAgICAgIGdyZk1vZGUsDQogICAgICAgIE9MRUNIQVIgKiAgICBwd3N6TmFtZSwN
CiAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgICAgIGR3Q291bnQsDQogICAgICBNVUxU
SV9RSSAqIHBSZXN1bHRzICk7DQoNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbCBDb0dldEluc3RhbmNlRnJvbUlTdG9yYWdlKA0KICAgICAgQ09T
RVJWRVJJTkZPICogICAgICAgICAgICBwU2VydmVySW5mbywNCiAgICAgIENMU0lEICAgICAgICAq
ICAgICAgICAgICAgcENsc2lkLA0KICAgICAgSVVua25vd24gICAgICogICAgICAgICAgICBwdW5r
T3V0ZXIsIA0KICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgICAgICAgZHdDbHNDdHgsDQog
ICAgICBzdHJ1Y3QgSVN0b3JhZ2UgICogICAgICAgICAgICBwc3RnLA0KICAgICAgRFdPUkQgICAg
ICAgICAgICAgICAgICAgICAgICAgZHdDb3VudCwNCiAgICAgIE1VTFRJX1FJICogcFJlc3VsdHMg
KTsNCg0KI2xpbmUgMTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqYmFzZS5oIg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIENvQWxsb3dTZXRG
b3JlZ3JvdW5kV2luZG93KCAgSVVua25vd24gKnBVbmssICAgTFBWT0lEIGxwdlJlc2VydmVkKTsN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBE
Y29tQ2hhbm5lbFNldEhSZXN1bHQoICBMUFZPSUQgcHZSZXNlcnZlZCwgICBVTE9ORyogcHVsUmVz
ZXJ2ZWQsICAgSFJFU1VMVCBhcHBzSFIpOw0KDQojbGluZSAxNDkgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpi
YXNlLmgiDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNh
bGwgQ29Jc09sZTFDbGFzcyggIGNvbnN0IElJRCAmIHJjbHNpZCk7DQogIGV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIENMU0lERnJvbVByb2dJREV4ICgg
IExQQ09MRVNUUiBscHN6UHJvZ0lELCAgIExQQ0xTSUQgbHBjbHNpZCk7DQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsIENvRmlsZVRpbWVUb0Rvc0RhdGVU
aW1lKA0KICAgICAgICAgICAgICAgICAgIEZJTEVUSU1FICogbHBGaWxlVGltZSwgICBMUFdPUkQg
bHBEb3NEYXRlLCAgIExQV09SRCBscERvc1RpbWUpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgQ29Eb3NEYXRlVGltZVRvRmlsZVRpbWUoDQogICAgICAg
ICAgICAgICAgICAgICAgICAgV09SRCBuRG9zRGF0ZSwgICBXT1JEIG5Eb3NUaW1lLCAgIEZJTEVU
SU1FICogbHBGaWxlVGltZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCAgQ29GaWxlVGltZU5vdyggICBGSUxFVElNRSAqIGxwRmlsZVRpbWUgKTsN
Cg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBD
b1JlZ2lzdGVyTWVzc2FnZUZpbHRlciggICBMUE1FU1NBR0VGSUxURVIgbHBNZXNzYWdlRmlsdGVy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBNRVNTQUdFRklMVEVSICogbHBs
cE1lc3NhZ2VGaWx0ZXIgKTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsIENvUmVnaXN0ZXJDaGFubmVsSG9vayggICBjb25zdCBHVUlEICYg
RXh0ZW5zaW9uVXVpZCwgICBJQ2hhbm5lbEhvb2sgKnBDaGFubmVsSG9vayApOw0KI2xpbmUgMTY3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2JqYmFzZS5oIg0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIENvVHJlYXRBc0NsYXNzKCAgY29uc3QgSUlE
ICYgY2xzaWRPbGQsICAgY29uc3QgSUlEICYgY2xzaWROZXcpOw0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVEYXRhQWR2aXNl
SG9sZGVyKCBMUERBVEFBRFZJU0VIT0xERVIgKiBwcERBSG9sZGVyKTsNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRlRGF0YUNhY2hlKCAg
TFBVTktOT1dOIHBVbmtPdXRlciwgICBjb25zdCBJSUQgJiByY2xzaWQsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSUlEICYgaWlkLCAgIExQVk9JRCAqIHBwdik7DQoNCg0KDQoN
Cg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBT
dGdPcGVuQXN5bmNEb2NmaWxlT25JRmlsbExvY2tCeXRlcyggICBJRmlsbExvY2tCeXRlcyAqcGZs
YiwNCiAgICAgICAgICAgICAgIERXT1JEIGdyZk1vZGUsDQogICAgICAgICAgICAgICBEV09SRCBh
c3luY0ZsYWdzLA0KICAgICAgICAgICAgICBJU3RvcmFnZSoqIHBwc3RnT3Blbik7DQoNCiAgZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU3RnR2V0SUZp
bGxMb2NrQnl0ZXNPbklMb2NrQnl0ZXMoICAgSUxvY2tCeXRlcyAqcGlsYiwNCiAgICAgICAgICAg
ICAgSUZpbGxMb2NrQnl0ZXMqKiBwcGZsYik7DQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU3RnR2V0SUZpbGxMb2NrQnl0ZXNPbkZpbGUoICAg
IE9MRUNIQVIgY29uc3QgKnB3Y3NOYW1lLA0KICAgICAgICAgICAgICBJRmlsbExvY2tCeXRlcyoq
IHBwZmxiKTsNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9f
c3RkY2FsbCBTdGdPcGVuTGF5b3V0RG9jZmlsZSggICAgT0xFQ0hBUiBjb25zdCAqcHdjc0RmTmFt
ZSwNCiAgICAgICAgICAgICAgIERXT1JEIGdyZk1vZGUsDQogICAgICAgICAgICAgICBEV09SRCBy
ZXNlcnZlZCwNCiAgICAgICAgICAgICAgSVN0b3JhZ2UqKiBwcHN0Z09wZW4pOw0KDQojbGluZSAy
MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvYmpiYXNlLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21h
IHJlZ2lvbiBEZXNrdG9wIFBhcnRpdGlvbg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBDb0luc3RhbGwoDQogICAgICBJQmluZEN0eCAgICAg
KiBwYmMsDQogICAgICBEV09SRCAgICAgICAgICBkd0ZsYWdzLA0KICAgICAgdUNMU1NQRUMgICAg
ICogcENsYXNzU3BlYywNCiAgICAgIFFVRVJZQ09OVEVYVCAqIHBRdWVyeSwNCiAgICAgIExQV1NU
UiAgICAgICAgIHBzekNvZGVCYXNlKTsNCg0KI2xpbmUgMjE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqYmFz
ZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gUEMgQXBwbGljYXRpb24g
UGFydGl0aW9uDQoNCg0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsICBCaW5kTW9uaWtlciggIExQTU9OSUtFUiBwbWssICAgRFdPUkQg
Z3JmT3B0LCAgIGNvbnN0IElJRCAmIGlpZFJlc3VsdCwgIExQVk9JRCAqIHBwdlJlc3VsdCk7DQoN
CiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIENv
R2V0T2JqZWN0KCAgTFBDV1NUUiBwc3pOYW1lLCAgIEJJTkRfT1BUUyAqcEJpbmRPcHRpb25zLCAg
IGNvbnN0IElJRCAmIHJpaWQsICB2b2lkICoqcHB2KTsNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIE1rUGFyc2VEaXNwbGF5TmFtZSggIExQQkMg
cGJjLCAgIExQQ09MRVNUUiBzelVzZXJOYW1lLA0KICAgICAgICAgICAgICAgICAgVUxPTkcgICog
cGNoRWF0ZW4sICBMUE1PTklLRVIgICogcHBtayk7DQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBNb25pa2VyUmVsYXRpdmVQYXRoVG8oICBMUE1P
TklLRVIgcG1rU3JjLCAgIExQTU9OSUtFUiBwbWtEZXN0LCAgTFBNT05JS0VSDQogICAgICAgICAg
ICAgICAgKiBwcG1rUmVsUGF0aCwgICBCT09MIGR3UmVzZXJ2ZWQpOw0KICBleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgTW9uaWtlckNvbW1vblByZWZp
eFdpdGgoICBMUE1PTklLRVIgcG1rVGhpcywgICBMUE1PTklLRVIgcG1rT3RoZXIsDQogICAgICAg
ICAgICAgICAgIExQTU9OSUtFUiAqIHBwbWtDb21tb24pOw0KICBleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgQ3JlYXRlQmluZEN0eCggIERXT1JEIHJl
c2VydmVkLCAgTFBCQyAqIHBwYmMpOw0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbCAgQ3JlYXRlR2VuZXJpY0NvbXBvc2l0ZSggIExQTU9OSUtFUiBw
bWtGaXJzdCwgICBMUE1PTklLRVIgcG1rUmVzdCwNCiAgICAgICAgICAgICAgICAgTFBNT05JS0VS
ICogcHBta0NvbXBvc2l0ZSk7DQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhS
RVNVTFQgX19zdGRjYWxsICBHZXRDbGFzc0ZpbGUgKCAgTFBDT0xFU1RSIHN6RmlsZW5hbWUsICAg
Q0xTSUQgKiBwY2xzaWQpOw0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhS
RVNVTFQgX19zdGRjYWxsICBDcmVhdGVDbGFzc01vbmlrZXIoICBjb25zdCBJSUQgJiByY2xzaWQs
ICBMUE1PTklLRVIgKiBwcG1rKTsNCg0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbCAgQ3JlYXRlRmlsZU1vbmlrZXIoICBMUENPTEVTVFIgbHBzelBh
dGhOYW1lLCAgTFBNT05JS0VSICogcHBtayk7DQoNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIENyZWF0ZUl0ZW1Nb25pa2VyKCAgTFBDT0xFU1RS
IGxwc3pEZWxpbSwgICBMUENPTEVTVFIgbHBzekl0ZW0sDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICBMUE1PTklLRVIgKiBwcG1rKTsNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwgIENyZWF0ZUFudGlNb25pa2VyKCBMUE1PTklLRVIgKiBwcG1r
KTsNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwg
IENyZWF0ZVBvaW50ZXJNb25pa2VyKCAgTFBVTktOT1dOIHB1bmssICBMUE1PTklLRVIgKiBwcG1r
KTsNCiAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwg
IENyZWF0ZU9ianJlZk1vbmlrZXIoICBMUFVOS05PV04gcHVuaywgIExQTU9OSUtFUiAgKiBwcG1r
KTsNCg0KI2xpbmUgMjQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBQYXJ0aXRpb24NCg0KDQogIGV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBHZXRSdW5uaW5nT2JqZWN0
VGFibGUoICAgRFdPUkQgcmVzZXJ2ZWQsICBMUFJVTk5JTkdPQkpFQ1RUQUJMRSAqIHBwcm90KTsN
Cg0KI2xpbmUgMjU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqYmFzZS5oIg0KI3ByYWdtYSBlbmRyZWdpb24N
Cg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCiANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAzOSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVybG1vbi5oIg0KDQogDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJUGVyc2lzdE1vbmlr
ZXIgSVBlcnNpc3RNb25pa2VyOw0KDQojbGluZSA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJTW9uaWtlclByb3AgSU1vbmlrZXJQcm9wOw0KDQojbGlu
ZSA1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQmlu
ZFByb3RvY29sIElCaW5kUHJvdG9jb2w7DQoNCiNsaW5lIDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9u
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElCaW5kaW5nIElCaW5kaW5nOw0KDQojbGluZSA2
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQmluZFN0
YXR1c0NhbGxiYWNrIElCaW5kU3RhdHVzQ2FsbGJhY2s7DQoNCiNsaW5lIDc1ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElCaW5kU3RhdHVzQ2FsbGJhY2tF
eCBJQmluZFN0YXR1c0NhbGxiYWNrRXg7DQoNCiNsaW5lIDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9u
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElBdXRoZW50aWNhdGUgSUF1dGhlbnRpY2F0ZTsN
Cg0KI2xpbmUgODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgSUF1dGhlbnRpY2F0ZUV4IElBdXRoZW50aWNhdGVFeDsNCg0KI2xpbmUgOTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUh0dHBOZWdvdGlhdGUgSUh0
dHBOZWdvdGlhdGU7DQoNCiNsaW5lIDEwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBJSHR0cE5lZ290aWF0ZTIgSUh0dHBOZWdvdGlhdGUyOw0KDQojbGlu
ZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUh0
dHBOZWdvdGlhdGUzIElIdHRwTmVnb3RpYXRlMzsNCg0KI2xpbmUgMTE3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
dXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElXaW5JbmV0RmlsZVN0cmVhbSBJV2lu
SW5ldEZpbGVTdHJlYW07DQoNCiNsaW5lIDEyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBJV2luZG93Rm9yQmluZGluZ1VJIElXaW5kb3dGb3JCaW5kaW5n
VUk7DQoNCiNsaW5lIDEzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBJQ29kZUluc3RhbGwgSUNvZGVJbnN0YWxsOw0KDQojbGluZSAxMzggIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVVyaSBJVXJpOw0KDQojbGlu
ZSAxNDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVVy
aUNvbnRhaW5lciBJVXJpQ29udGFpbmVyOw0KDQojbGluZSAxNTIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxt
b24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVVyaUJ1aWxkZXIgSVVyaUJ1aWxkZXI7DQoN
CiNsaW5lIDE1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBJVXJpQnVpbGRlckZhY3RvcnkgSVVyaUJ1aWxkZXJGYWN0b3J5Ow0KDQojbGluZSAxNjYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVdpbkluZXRJbmZv
IElXaW5JbmV0SW5mbzsNCg0KI2xpbmUgMTczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0K
DQoNCnR5cGVkZWYgc3RydWN0IElIdHRwU2VjdXJpdHkgSUh0dHBTZWN1cml0eTsNCg0KI2xpbmUg
MTgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElXaW5J
bmV0SHR0cEluZm8gSVdpbkluZXRIdHRwSW5mbzsNCg0KI2xpbmUgMTg3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
dXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElXaW5JbmV0SHR0cFRpbWVvdXRzIElX
aW5JbmV0SHR0cFRpbWVvdXRzOw0KDQojbGluZSAxOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCIN
Cg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVdpbkluZXRDYWNoZUhpbnRzIElXaW5JbmV0Q2FjaGVI
aW50czsNCg0KI2xpbmUgMjAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IElXaW5JbmV0Q2FjaGVIaW50czIgSVdpbkluZXRDYWNoZUhpbnRzMjsNCg0KI2xp
bmUgMjA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElC
aW5kSG9zdCBJQmluZEhvc3Q7DQoNCiNsaW5lIDIxNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0K
DQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJSW50ZXJuZXQgSUludGVybmV0Ow0KDQojbGluZSAyMjIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUludGVybmV0
QmluZEluZm8gSUludGVybmV0QmluZEluZm87DQoNCiNsaW5lIDIyOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJSW50ZXJuZXRCaW5kSW5mb0V4IElJbnRl
cm5ldEJpbmRJbmZvRXg7DQoNCiNsaW5lIDIzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBJSW50ZXJuZXRQcm90b2NvbFJvb3QgSUludGVybmV0UHJvdG9j
b2xSb290Ow0KDQojbGluZSAyNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSUludGVybmV0UHJvdG9jb2wgSUludGVybmV0UHJvdG9jb2w7DQoNCiNsaW5l
IDI1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJSW50
ZXJuZXRQcm90b2NvbEV4IElJbnRlcm5ldFByb3RvY29sRXg7DQoNCiNsaW5lIDI1NyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJSW50ZXJuZXRQcm90b2Nv
bFNpbmsgSUludGVybmV0UHJvdG9jb2xTaW5rOw0KDQojbGluZSAyNjQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1
cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUludGVybmV0UHJvdG9jb2xTaW5rU3Rh
Y2thYmxlIElJbnRlcm5ldFByb3RvY29sU2lua1N0YWNrYWJsZTsNCg0KI2xpbmUgMjcxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElJbnRlcm5ldFNlc3Np
b24gSUludGVybmV0U2Vzc2lvbjsNCg0KI2xpbmUgMjc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElJbnRlcm5ldFRocmVhZFN3aXRjaCBJSW50ZXJuZXRU
aHJlYWRTd2l0Y2g7DQoNCiNsaW5lIDI4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBJSW50ZXJuZXRQcmlvcml0eSBJSW50ZXJuZXRQcmlvcml0eTsNCg0K
I2xpbmUgMjkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IElJbnRlcm5ldFByb3RvY29sSW5mbyBJSW50ZXJuZXRQcm90b2NvbEluZm87DQoNCiNsaW5lIDI5
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJSW50ZXJu
ZXRTZWN1cml0eU1nclNpdGUgSUludGVybmV0U2VjdXJpdHlNZ3JTaXRlOw0KDQojbGluZSAzMDYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUludGVybmV0
U2VjdXJpdHlNYW5hZ2VyIElJbnRlcm5ldFNlY3VyaXR5TWFuYWdlcjsNCg0KI2xpbmUgMzEzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElJbnRlcm5ldFNl
Y3VyaXR5TWFuYWdlckV4IElJbnRlcm5ldFNlY3VyaXR5TWFuYWdlckV4Ow0KDQojbGluZSAzMjAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUludGVybmV0
U2VjdXJpdHlNYW5hZ2VyRXgyIElJbnRlcm5ldFNlY3VyaXR5TWFuYWdlckV4MjsNCg0KI2xpbmUg
MzI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElab25l
SWRlbnRpZmllciBJWm9uZUlkZW50aWZpZXI7DQoNCiNsaW5lIDMzNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJWm9uZUlkZW50aWZpZXIyIElab25lSWRl
bnRpZmllcjI7DQoNCiNsaW5lIDM0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0
eXBlZGVmIHN0cnVjdCBJSW50ZXJuZXRIb3N0U2VjdXJpdHlNYW5hZ2VyIElJbnRlcm5ldEhvc3RT
ZWN1cml0eU1hbmFnZXI7DQoNCiNsaW5lIDM0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBJSW50ZXJuZXRab25lTWFuYWdlciBJSW50ZXJuZXRab25lTWFu
YWdlcjsNCg0KI2xpbmUgMzU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IElJbnRlcm5ldFpvbmVNYW5hZ2VyRXggSUludGVybmV0Wm9uZU1hbmFnZXJFeDsN
Cg0KI2xpbmUgMzYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IElJbnRlcm5ldFpvbmVNYW5hZ2VyRXgyIElJbnRlcm5ldFpvbmVNYW5hZ2VyRXgyOw0KDQoj
bGluZSAzNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
SVNvZnREaXN0RXh0IElTb2Z0RGlzdEV4dDsNCg0KI2xpbmUgMzc2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJs
bW9uLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElDYXRhbG9nRmlsZUluZm8gSUNhdGFsb2dG
aWxlSW5mbzsNCg0KI2xpbmUgMzgzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCnR5
cGVkZWYgc3RydWN0IElEYXRhRmlsdGVyIElEYXRhRmlsdGVyOw0KDQojbGluZSAzOTAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUVuY29kaW5nRmlsdGVy
RmFjdG9yeSBJRW5jb2RpbmdGaWx0ZXJGYWN0b3J5Ow0KDQojbGluZSAzOTcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVdyYXBwZWRQcm90b2NvbCBJV3Jh
cHBlZFByb3RvY29sOw0KDQojbGluZSA0MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgSUdldEJpbmRIYW5kbGUgSUdldEJpbmRIYW5kbGU7DQoNCiNsaW5l
IDQxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJQmlu
ZENhbGxiYWNrUmVkaXJlY3QgSUJpbmRDYWxsYmFja1JlZGlyZWN0Ow0KDQojbGluZSA0MTggIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUJpbmRIdHRwU2Vj
dXJpdHkgSUJpbmRIdHRwU2VjdXJpdHk7DQoNCiNsaW5lIDQyNSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1v
bi5oIg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCg0K
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5l
IDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCiANCg0KDQoNCnR5cGVkZWYgc3RydWN0IElP
bGVBZHZpc2VIb2xkZXIgSU9sZUFkdmlzZUhvbGRlcjsNCg0KI2xpbmUgNDcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvbGVpZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSU9sZUNhY2hlIElPbGVDYWNoZTsN
Cg0KI2xpbmUgNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgSU9sZUNhY2hlMiBJT2xlQ2FjaGUyOw0KDQojbGluZSA2MSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlk
bC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJT2xlQ2FjaGVDb250cm9sIElPbGVDYWNoZUNv
bnRyb2w7DQoNCiNsaW5lIDY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IElQYXJzZURpc3BsYXlOYW1lIElQYXJzZURpc3BsYXlOYW1lOw0KDQojbGluZSA3
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJT2xlQ29u
dGFpbmVyIElPbGVDb250YWluZXI7DQoNCiNsaW5lIDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElPbGVDbGllbnRTaXRlIElPbGVDbGllbnRTaXRlOw0K
DQojbGluZSA4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBJT2xlT2JqZWN0IElPbGVPYmplY3Q7DQoNCiNsaW5lIDk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRs
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElPbGVXaW5kb3cgSU9sZVdpbmRvdzsNCg0KI2xp
bmUgMTAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElP
bGVMaW5rIElPbGVMaW5rOw0KDQojbGluZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSU9sZUl0ZW1Db250YWluZXIgSU9sZUl0ZW1Db250YWluZXI7
DQoNCiNsaW5lIDExNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBJT2xlSW5QbGFjZVVJV2luZG93IElPbGVJblBsYWNlVUlXaW5kb3c7DQoNCiNsaW5lIDEy
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJT2xlSW5Q
bGFjZUFjdGl2ZU9iamVjdCBJT2xlSW5QbGFjZUFjdGl2ZU9iamVjdDsNCg0KI2xpbmUgMTMxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElPbGVJblBsYWNl
RnJhbWUgSU9sZUluUGxhY2VGcmFtZTsNCg0KI2xpbmUgMTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRs
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElPbGVJblBsYWNlT2JqZWN0IElPbGVJblBsYWNl
T2JqZWN0Ow0KDQojbGluZSAxNDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgSU9sZUluUGxhY2VTaXRlIElPbGVJblBsYWNlU2l0ZTsNCg0KI2xpbmUgMTUy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElDb250aW51
ZSBJQ29udGludWU7DQoNCiNsaW5lIDE1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBJVmlld09iamVjdCBJVmlld09iamVjdDsNCg0KI2xpbmUgMTY2ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElWaWV3T2JqZWN0
MiBJVmlld09iamVjdDI7DQoNCiNsaW5lIDE3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCBJRHJvcFNvdXJjZSBJRHJvcFNvdXJjZTsNCg0KI2xpbmUgMTgw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElEcm9wVGFy
Z2V0IElEcm9wVGFyZ2V0Ow0KDQojbGluZSAxODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0K
DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSURyb3BTb3VyY2VOb3RpZnkgSURyb3BTb3VyY2VOb3RpZnk7
DQoNCiNsaW5lIDE5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBJRW50ZXJwcmlzZURyb3BUYXJnZXQgSUVudGVycHJpc2VEcm9wVGFyZ2V0Ow0KDQojbGlu
ZSAyMDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSUVu
dW1PTEVWRVJCIElFbnVtT0xFVkVSQjsNCg0KI2xpbmUgMjA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRs
LmgiDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiew0KI2xpbmUgMjE2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xl
aWRsLmgiDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAyMzAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUgMjM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRs
LmgiDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoN
Cg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2xlaWRsXzAwMDBfMDAwMF92
MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vbGVpZGxfMDAw
MF8wMDAwX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJT2xlQWR2aXNl
SG9sZGVyICpMUE9MRUFEVklTRUhPTERFUjsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURf
SU9sZUFkdmlzZUhvbGRlcjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgi
MDAwMDAxMTEtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFi
bGUpDQogICAgSU9sZUFkdmlzZUhvbGRlciA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBw
dWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQWR2aXNlKCANCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIElBZHZpc2VTaW5rICpwQWR2aXNlLA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgKnBkd0Nvbm5lY3Rpb24pID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgVW5hZHZpc2UoIA0KICAgICAgICAg
ICAgIERXT1JEIGR3Q29ubmVjdGlvbikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBFbnVtQWR2aXNlKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgSUVudW1TVEFUREFUQSAqKnBwZW51bUFkdmlzZSkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZW5kT25SZW5hbWUoIA0KICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgSU1vbmlrZXIgKnBtaykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZW5kT25TYXZlKCB2b2lkKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNlbmRPbkNsb3NlKCB2b2lkKSA9IDA7
DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzc1ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDM4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5o
Ig0KDQoNCg0KIA0KDQojbGluZSAzODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2xlaWRsXzAwMDBf
MDAwMV92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vbGVp
ZGxfMDAwMF8wMDAxX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJ
T2xlQ2FjaGUgKkxQT0xFQ0FDSEU7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lPbGVD
YWNoZTsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMWUtMDAw
MC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU9s
ZUNhY2hlIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDYWNoZSggDQogICAgICAgICAgICAgICBGT1JNQVRFVEMg
KnBmb3JtYXRldGMsDQogICAgICAgICAgICAgRFdPUkQgYWR2ZiwNCiAgICAgICAgICAgICAgIERX
T1JEICpwZHdDb25uZWN0aW9uKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIFVuY2FjaGUoIA0KICAgICAgICAgICAgIERXT1JEIGR3Q29ubmVjdGlvbikg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBFbnVtQ2Fj
aGUoIA0KICAgICAgICAgICAgICAgSUVudW1TVEFUREFUQSAqKnBwZW51bVNUQVREQVRBKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEluaXRDYWNoZSgg
DQogICAgICAgICAgICAgICBJRGF0YU9iamVjdCAqcERhdGFPYmplY3QpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0RGF0YSggDQogICAgICAgICAg
ICAgICBGT1JNQVRFVEMgKnBmb3JtYXRldGMsDQogICAgICAgICAgICAgICBTVEdNRURJVU0gKnBt
ZWRpdW0sDQogICAgICAgICAgICAgQk9PTCBmUmVsZWFzZSkgPSAwOw0KICAgICAgICANCiAgICB9
Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDUxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQojbGlu
ZSA1MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAg
ICAgSU9sZUNhY2hlMiAqTFBPTEVDQUNIRTI7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgIA0KZW51bSB0YWdESVNDQVJEQ0FDSEUNCiAgICB7DQogICAgICAg
IERJU0NBUkRDQUNIRV9TQVZFSUZESVJUWQk9IDAsDQogICAgICAgIERJU0NBUkRDQUNIRV9OT1NB
VkUJPSAxDQogICAgfSAJRElTQ0FSRENBQ0hFOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJ
RF9JT2xlQ2FjaGUyOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAw
MDEyOC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJT2xlQ2FjaGUyIDogcHVibGljIElPbGVDYWNoZQ0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIFVwZGF0ZUNhY2hlKCANCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIExQREFUQU9CSkVDVCBwRGF0YU9iamVjdCwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGdyZlVwZGYsDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICBMUFZPSUQgcFJlc2VydmVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIERpc2NhcmRDYWNoZSggDQogICAgICAgICAgICAgRFdPUkQg
ZHdEaXNjYXJkT3B0aW9ucykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2ODQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
bGVpZGwuaCINCg0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJT2xlQ2FjaGUyX1JlbW90ZVVwZGF0
ZUNhY2hlX1Byb3h5KCANCiAgICAgIElPbGVDYWNoZTIgKiBUaGlzLA0KICAgICAgIExQREFUQU9C
SkVDVCBwRGF0YU9iamVjdCwNCiAgICAgRFdPUkQgZ3JmVXBkZiwNCiAgICAgTE9OR19QVFIgcFJl
c2VydmVkKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJT2xlQ2FjaGUyX1JlbW90ZVVwZGF0ZUNhY2hl
X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIg
Kl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAg
IERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDcwMyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9s
ZWlkbC5oIg0KDQoNCg0KIA0KDQojbGluZSA3MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3Jl
IEZhbWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vbGVpZGxfMDAw
MF8wMDAzX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29s
ZWlkbF8wMDAwXzAwMDNfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAg
IElPbGVDYWNoZUNvbnRyb2wgKkxQT0xFQ0FDSEVDT05UUk9MOw0KDQoNCmV4dGVybiAiQyIgY29u
c3QgSUlEIElJRF9JT2xlQ2FjaGVDb250cm9sOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCIwMDAwMDEyOS0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJT2xlQ2FjaGVDb250cm9sIDogcHVibGljIElVbmtub3duDQog
ICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPblJ1
biggDQogICAgICAgICAgICAgIExQREFUQU9CSkVDVCBwRGF0YU9iamVjdCkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPblN0b3AoIHZvaWQpID0gMDsN
CiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgwMCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9s
ZWlkbC5oIg0KDQoNCg0KDQojbGluZSA4MDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoN
Cg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSVBhcnNlRGlzcGxheU5hbWUgKkxQUEFSU0VESVNQTEFZ
TkFNRTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVBhcnNlRGlzcGxheU5hbWU7DQoN
Cg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMTFhLTAwMDAtMDAwMC1D
MDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElQYXJzZURpc3Bs
YXlOYW1lIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBQYXJzZURpc3BsYXlOYW1lKCANCiAgICAgICAgICAgICAg
IElCaW5kQ3R4ICpwYmMsDQogICAgICAgICAgICAgICBMUE9MRVNUUiBwc3pEaXNwbGF5TmFtZSwN
CiAgICAgICAgICAgICAgIFVMT05HICpwY2hFYXRlbiwNCiAgICAgICAgICAgICAgIElNb25pa2Vy
ICoqcHBta091dCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODg4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDg5MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlk
bC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJT2xlQ29udGFpbmVyICpMUE9MRUNP
TlRBSU5FUjsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSU9sZUNvbnRhaW5lcjsNCg0K
DQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMWItMDAwMC0wMDAwLUMw
MDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU9sZUNvbnRhaW5l
ciA6IHB1YmxpYyBJUGFyc2VEaXNwbGF5TmFtZQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRW51bU9iamVjdHMoIA0KICAgICAgICAgICAgIERX
T1JEIGdyZkZsYWdzLA0KICAgICAgICAgICAgICAgSUVudW1Vbmtub3duICoqcHBlbnVtKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIExvY2tDb250YWlu
ZXIoIA0KICAgICAgICAgICAgIEJPT0wgZkxvY2spID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAg
ICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTkzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDk5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0K
DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJT2xlQ2xpZW50U2l0ZSAqTFBPTEVDTElFTlRT
SVRFOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JT2xlQ2xpZW50U2l0ZTsNCg0KDQog
ICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMTgtMDAwMC0wMDAwLUMwMDAt
MDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU9sZUNsaWVudFNpdGUg
OiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIFNhdmVPYmplY3QoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0TW9uaWtlciggDQogICAgICAgICAgICAgRFdP
UkQgZHdBc3NpZ24sDQogICAgICAgICAgICAgRFdPUkQgZHdXaGljaE1vbmlrZXIsDQogICAgICAg
ICAgICAgICBJTW9uaWtlciAqKnBwbWspID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBfX3N0ZGNhbGwgR2V0Q29udGFpbmVyKCANCiAgICAgICAgICAgICAgIElPbGVDb250
YWluZXIgKipwcENvbnRhaW5lcikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBTaG93T2JqZWN0KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIE9uU2hvd1dpbmRvdyggDQogICAgICAgICAgICAgQk9P
TCBmU2hvdykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBSZXF1ZXN0TmV3T2JqZWN0TGF5b3V0KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQog
ICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDExMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KI2xp
bmUgMTEyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVm
ICAgICBJT2xlT2JqZWN0ICpMUE9MRU9CSkVDVDsNCg0KdHlwZWRlZiANCmVudW0gdGFnT0xFR0VU
TU9OSUtFUg0KICAgIHsNCiAgICAgICAgT0xFR0VUTU9OSUtFUl9PTkxZSUZUSEVSRQk9IDEsDQog
ICAgICAgIE9MRUdFVE1PTklLRVJfRk9SQ0VBU1NJR04JPSAyLA0KICAgICAgICBPTEVHRVRNT05J
S0VSX1VOQVNTSUdOCT0gMywNCiAgICAgICAgT0xFR0VUTU9OSUtFUl9URU1QRk9SVVNFUgk9IDQN
CiAgICB9IAlPTEVHRVRNT05JS0VSOw0KDQp0eXBlZGVmIA0KZW51bSB0YWdPTEVXSElDSE1LDQog
ICAgew0KICAgICAgICBPTEVXSElDSE1LX0NPTlRBSU5FUgk9IDEsDQogICAgICAgIE9MRVdISUNI
TUtfT0JKUkVMCT0gMiwNCiAgICAgICAgT0xFV0hJQ0hNS19PQkpGVUxMCT0gMw0KICAgIH0gCU9M
RVdISUNITUs7DQoNCnR5cGVkZWYgDQplbnVtIHRhZ1VTRVJDTEFTU1RZUEUNCiAgICB7DQogICAg
ICAgIFVTRVJDTEFTU1RZUEVfRlVMTAk9IDEsDQogICAgICAgIFVTRVJDTEFTU1RZUEVfU0hPUlQJ
PSAyLA0KICAgICAgICBVU0VSQ0xBU1NUWVBFX0FQUE5BTUUJPSAzDQogICAgfSAJVVNFUkNMQVNT
VFlQRTsNCg0KdHlwZWRlZiANCmVudW0gdGFnT0xFTUlTQw0KICAgIHsNCiAgICAgICAgT0xFTUlT
Q19SRUNPTVBPU0VPTlJFU0laRQk9IDB4MSwNCiAgICAgICAgT0xFTUlTQ19PTkxZSUNPTklDCT0g
MHgyLA0KICAgICAgICBPTEVNSVNDX0lOU0VSVE5PVFJFUExBQ0UJPSAweDQsDQogICAgICAgIE9M
RU1JU0NfU1RBVElDCT0gMHg4LA0KICAgICAgICBPTEVNSVNDX0NBTlRMSU5LSU5TSURFCT0gMHgx
MCwNCiAgICAgICAgT0xFTUlTQ19DQU5MSU5LQllPTEUxCT0gMHgyMCwNCiAgICAgICAgT0xFTUlT
Q19JU0xJTktPQkpFQ1QJPSAweDQwLA0KICAgICAgICBPTEVNSVNDX0lOU0lERU9VVAk9IDB4ODAs
DQogICAgICAgIE9MRU1JU0NfQUNUSVZBVEVXSEVOVklTSUJMRQk9IDB4MTAwLA0KICAgICAgICBP
TEVNSVNDX1JFTkRFUklOR0lTREVWSUNFSU5ERVBFTkRFTlQJPSAweDIwMCwNCiAgICAgICAgT0xF
TUlTQ19JTlZJU0lCTEVBVFJVTlRJTUUJPSAweDQwMCwNCiAgICAgICAgT0xFTUlTQ19BTFdBWVNS
VU4JPSAweDgwMCwNCiAgICAgICAgT0xFTUlTQ19BQ1RTTElLRUJVVFRPTgk9IDB4MTAwMCwNCiAg
ICAgICAgT0xFTUlTQ19BQ1RTTElLRUxBQkVMCT0gMHgyMDAwLA0KICAgICAgICBPTEVNSVNDX05P
VUlBQ1RJVkFURQk9IDB4NDAwMCwNCiAgICAgICAgT0xFTUlTQ19BTElHTkFCTEUJPSAweDgwMDAs
DQogICAgICAgIE9MRU1JU0NfU0lNUExFRlJBTUUJPSAweDEwMDAwLA0KICAgICAgICBPTEVNSVND
X1NFVENMSUVOVFNJVEVGSVJTVAk9IDB4MjAwMDAsDQogICAgICAgIE9MRU1JU0NfSU1FTU9ERQk9
IDB4NDAwMDAsDQogICAgICAgIE9MRU1JU0NfSUdOT1JFQUNUSVZBVEVXSEVOVklTSUJMRQk9IDB4
ODAwMDAsDQogICAgICAgIE9MRU1JU0NfV0FOVFNUT01FTlVNRVJHRQk9IDB4MTAwMDAwLA0KICAg
ICAgICBPTEVNSVNDX1NVUFBPUlRTTVVMVElMRVZFTFVORE8JPSAweDIwMDAwMA0KICAgIH0gCU9M
RU1JU0M7DQoNCnR5cGVkZWYgDQplbnVtIHRhZ09MRUNMT1NFDQogICAgew0KICAgICAgICBPTEVD
TE9TRV9TQVZFSUZESVJUWQk9IDAsDQogICAgICAgIE9MRUNMT1NFX05PU0FWRQk9IDEsDQogICAg
ICAgIE9MRUNMT1NFX1BST01QVFNBVkUJPSAyDQogICAgfSAJT0xFQ0xPU0U7DQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBJSUQgSUlEX0lPbGVPYmplY3Q7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjAwMDAwMTEyLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElPbGVPYmplY3QgOiBwdWJsaWMgSVVua25vd24NCiAgICB7
DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldENsaWVu
dFNpdGUoIA0KICAgICAgICAgICAgICAgSU9sZUNsaWVudFNpdGUgKnBDbGllbnRTaXRlKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldENsaWVudFNp
dGUoIA0KICAgICAgICAgICAgICAgSU9sZUNsaWVudFNpdGUgKipwcENsaWVudFNpdGUpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0SG9zdE5hbWVz
KCANCiAgICAgICAgICAgICAgIExQQ09MRVNUUiBzekNvbnRhaW5lckFwcCwNCiAgICAgICAgICAg
ICAgIExQQ09MRVNUUiBzekNvbnRhaW5lck9iaikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDbG9zZSggDQogICAgICAgICAgICAgRFdPUkQgZHdTYXZl
T3B0aW9uKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFNldE1vbmlrZXIoIA0KICAgICAgICAgICAgIERXT1JEIGR3V2hpY2hNb25pa2VyLA0KICAgICAg
ICAgICAgICAgSU1vbmlrZXIgKnBtaykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBHZXRNb25pa2VyKCANCiAgICAgICAgICAgICBEV09SRCBkd0Fzc2ln
biwNCiAgICAgICAgICAgICBEV09SRCBkd1doaWNoTW9uaWtlciwNCiAgICAgICAgICAgICAgIElN
b25pa2VyICoqcHBtaykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBJbml0RnJvbURhdGEoIA0KICAgICAgICAgICAgICAgSURhdGFPYmplY3QgKnBEYXRh
T2JqZWN0LA0KICAgICAgICAgICAgIEJPT0wgZkNyZWF0aW9uLA0KICAgICAgICAgICAgIERXT1JE
IGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgR2V0Q2xpcGJvYXJkRGF0YSggDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNlcnZlZCwN
CiAgICAgICAgICAgICAgIElEYXRhT2JqZWN0ICoqcHBEYXRhT2JqZWN0KSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIERvVmVyYiggDQogICAgICAgICAg
ICAgTE9ORyBpVmVyYiwNCiAgICAgICAgICAgICAgIExQTVNHIGxwbXNnLA0KICAgICAgICAgICAg
ICAgSU9sZUNsaWVudFNpdGUgKnBBY3RpdmVTaXRlLA0KICAgICAgICAgICAgIExPTkcgbGluZGV4
LA0KICAgICAgICAgICAgICAgSFdORCBod25kUGFyZW50LA0KICAgICAgICAgICAgICAgTFBDUkVD
VCBscHJjUG9zUmVjdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBFbnVtVmVyYnMoIA0KICAgICAgICAgICAgICAgSUVudW1PTEVWRVJCICoqcHBFbnVt
T2xlVmVyYikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBVcGRhdGUoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgSXNVcFRvRGF0ZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRVc2VyQ2xhc3NJRCggDQogICAgICAgICAgICAgICBDTFNJ
RCAqcENsc2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIEdldFVzZXJUeXBlKCANCiAgICAgICAgICAgICBEV09SRCBkd0Zvcm1PZlR5cGUsDQogICAg
ICAgICAgICAgICBMUE9MRVNUUiAqcHN6VXNlclR5cGUpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0RXh0ZW50KCANCiAgICAgICAgICAgICBEV09S
RCBkd0RyYXdBc3BlY3QsDQogICAgICAgICAgICAgICBTSVpFTCAqcHNpemVsKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEV4dGVudCggDQogICAg
ICAgICAgICAgRFdPUkQgZHdEcmF3QXNwZWN0LA0KICAgICAgICAgICAgICAgU0laRUwgKnBzaXpl
bCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBBZHZp
c2UoIA0KICAgICAgICAgICAgICAgSUFkdmlzZVNpbmsgKnBBZHZTaW5rLA0KICAgICAgICAgICAg
ICAgRFdPUkQgKnBkd0Nvbm5lY3Rpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBfX3N0ZGNhbGwgVW5hZHZpc2UoIA0KICAgICAgICAgICAgIERXT1JEIGR3Q29ubmVj
dGlvbikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBF
bnVtQWR2aXNlKCANCiAgICAgICAgICAgICAgIElFbnVtU1RBVERBVEEgKipwcGVudW1BZHZpc2Up
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0TWlz
Y1N0YXR1cyggDQogICAgICAgICAgICAgRFdPUkQgZHdBc3BlY3QsDQogICAgICAgICAgICAgICBE
V09SRCAqcGR3U3RhdHVzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFNldENvbG9yU2NoZW1lKCANCiAgICAgICAgICAgICAgIExPR1BBTEVUVEUgKnBM
b2dwYWwpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxNDk1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDE1MDAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiANCmVudW0gdGFn
T0xFUkVOREVSDQogICAgew0KICAgICAgICBPTEVSRU5ERVJfTk9ORQk9IDAsDQogICAgICAgIE9M
RVJFTkRFUl9EUkFXCT0gMSwNCiAgICAgICAgT0xFUkVOREVSX0ZPUk1BVAk9IDIsDQogICAgICAg
IE9MRVJFTkRFUl9BU0lTCT0gMw0KICAgIH0gCU9MRVJFTkRFUjsNCg0KdHlwZWRlZiBPTEVSRU5E
RVIgKkxQT0xFUkVOREVSOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdPQkpFQ1RERVNDUklQVE9SDQog
ICAgew0KICAgIFVMT05HIGNiU2l6ZTsNCiAgICBDTFNJRCBjbHNpZDsNCiAgICBEV09SRCBkd0Ry
YXdBc3BlY3Q7DQogICAgU0laRUwgc2l6ZWw7DQogICAgUE9JTlRMIHBvaW50bDsNCiAgICBEV09S
RCBkd1N0YXR1czsNCiAgICBEV09SRCBkd0Z1bGxVc2VyVHlwZU5hbWU7DQogICAgRFdPUkQgZHdT
cmNPZkNvcHk7DQogICAgfSAJT0JKRUNUREVTQ1JJUFRPUjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
T0JKRUNUREVTQ1JJUFRPUiAqUE9CSkVDVERFU0NSSVBUT1I7DQoNCnR5cGVkZWYgc3RydWN0IHRh
Z09CSkVDVERFU0NSSVBUT1IgKkxQT0JKRUNUREVTQ1JJUFRPUjsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnT0JKRUNUREVTQ1JJUFRPUiBMSU5LU1JDREVTQ1JJUFRPUjsNCg0KdHlwZWRlZiBzdHJ1Y3Qg
dGFnT0JKRUNUREVTQ1JJUFRPUiAqUExJTktTUkNERVNDUklQVE9SOw0KDQp0eXBlZGVmIHN0cnVj
dCB0YWdPQkpFQ1RERVNDUklQVE9SICpMUExJTktTUkNERVNDUklQVE9SOw0KDQoNCg0KZXh0ZXJu
IFJQQ19JRl9IQU5ETEUgSU9MRVR5cGVzX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hB
TkRMRSBJT0xFVHlwZXNfdjBfMF9zX2lmc3BlYzsNCiNsaW5lIDE1NDYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
bGVpZGwuaCINCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElPbGVXaW5kb3cgKkxQT0xFV0lO
RE9XOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JT2xlV2luZG93Ow0KDQoNCiAgICAN
CiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDExNC0wMDAwLTAwMDAtQzAwMC0wMDAw
MDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJT2xlV2luZG93IDogcHVibGlj
IElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBf
X3N0ZGNhbGwgR2V0V2luZG93KCANCiAgICAgICAgICAgICAgIEhXTkQgKnBod25kKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIENvbnRleHRTZW5zaXRp
dmVIZWxwKCANCiAgICAgICAgICAgICBCT09MIGZFbnRlck1vZGUpID0gMDsNCiAgICAgICAgDQog
ICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTYzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0K
DQoNCg0KDQojbGluZSAxNjM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCg0KDQog
DQoNCnR5cGVkZWYgICAgIElPbGVMaW5rICpMUE9MRUxJTks7DQoNCnR5cGVkZWYgDQplbnVtIHRh
Z09MRVVQREFURQ0KICAgIHsNCiAgICAgICAgT0xFVVBEQVRFX0FMV0FZUwk9IDEsDQogICAgICAg
IE9MRVVQREFURV9PTkNBTEwJPSAzDQogICAgfSAJT0xFVVBEQVRFOw0KDQp0eXBlZGVmIE9MRVVQ
REFURSAqTFBPTEVVUERBVEU7DQoNCnR5cGVkZWYgT0xFVVBEQVRFICpQT0xFVVBEQVRFOw0KDQp0
eXBlZGVmIA0KZW51bSB0YWdPTEVMSU5LQklORA0KICAgIHsNCiAgICAgICAgT0xFTElOS0JJTkRf
RVZFTklGQ0xBU1NESUZGCT0gMQ0KICAgIH0gCU9MRUxJTktCSU5EOw0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JT2xlTGluazsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWMo
dXVpZCgiMDAwMDAxMWQtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMo
bm92dGFibGUpDQogICAgSU9sZUxpbmsgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVi
bGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldFVwZGF0ZU9wdGlvbnMo
IA0KICAgICAgICAgICAgIERXT1JEIGR3VXBkYXRlT3B0KSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFVwZGF0ZU9wdGlvbnMoIA0KICAgICAgICAg
ICAgICAgRFdPUkQgKnBkd1VwZGF0ZU9wdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRTb3VyY2VNb25pa2VyKCANCiAgICAgICAgICAgICAgIElN
b25pa2VyICpwbWssDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByY2xzaWQpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U291cmNlTW9uaWtl
ciggDQogICAgICAgICAgICAgICBJTW9uaWtlciAqKnBwbWspID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0U291cmNlRGlzcGxheU5hbWUoIA0KICAg
ICAgICAgICAgICAgTFBDT0xFU1RSIHBzelN0YXR1c1RleHQpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U291cmNlRGlzcGxheU5hbWUoIA0KICAg
ICAgICAgICAgICAgTFBPTEVTVFIgKnBwc3pEaXNwbGF5TmFtZSkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBCaW5kVG9Tb3VyY2UoIA0KICAgICAgICAg
ICAgIERXT1JEIGJpbmRmbGFncywNCiAgICAgICAgICAgICAgIElCaW5kQ3R4ICpwYmMpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQmluZElmUnVubmlu
Zyggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRCb3VuZFNvdXJjZSggDQogICAgICAgICAgICAgICBJVW5rbm93biAqKnBwdW5rKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFVuYmluZFNvdXJj
ZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBVcGRhdGUoIA0KICAgICAgICAgICAgICAgSUJpbmRDdHggKnBiYykgPSAwOw0KICAgICAgICAN
CiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxODMxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDE4MzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCIN
Cg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSU9sZUl0ZW1Db250YWluZXIgKkxQT0xFSVRF
TUNPTlRBSU5FUjsNCg0KdHlwZWRlZiANCmVudW0gdGFnQklORFNQRUVEDQogICAgew0KICAgICAg
ICBCSU5EU1BFRURfSU5ERUZJTklURQk9IDEsDQogICAgICAgIEJJTkRTUEVFRF9NT0RFUkFURQk9
IDIsDQogICAgICAgIEJJTkRTUEVFRF9JTU1FRElBVEUJPSAzDQogICAgfSAJQklORFNQRUVEOw0K
DQp0eXBlZGVmICANCmVudW0gdGFnT0xFQ09OVEYNCiAgICB7DQogICAgICAgIE9MRUNPTlRGX0VN
QkVERElOR1MJPSAxLA0KICAgICAgICBPTEVDT05URl9MSU5LUwk9IDIsDQogICAgICAgIE9MRUNP
TlRGX09USEVSUwk9IDQsDQogICAgICAgIE9MRUNPTlRGX09OTFlVU0VSCT0gOCwNCiAgICAgICAg
T0xFQ09OVEZfT05MWUlGUlVOTklORwk9IDE2DQogICAgfSAJT0xFQ09OVEY7DQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBJSUQgSUlEX0lPbGVJdGVtQ29udGFpbmVyOw0KDQoNCiAgICANCiAgICBzdHJ1
Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDExYy0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYi
KSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJT2xlSXRlbUNvbnRhaW5lciA6IHB1YmxpYyBJ
T2xlQ29udGFpbmVyDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBHZXRPYmplY3RXKCANCiAgICAgICAgICAgICAgIExQT0xFU1RSIHBzekl0ZW0s
DQogICAgICAgICAgICAgRFdPUkQgZHdTcGVlZE5lZWRlZCwNCiAgICAgICAgICAgICAgIElCaW5k
Q3R4ICpwYmMsDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAg
ICAgdm9pZCAqKnBwdk9iamVjdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBHZXRPYmplY3RTdG9yYWdlKCANCiAgICAgICAgICAgICAgIExQT0xFU1RS
IHBzekl0ZW0sDQogICAgICAgICAgICAgICBJQmluZEN0eCAqcGJjLA0KICAgICAgICAgICAgICAg
Y29uc3QgSUlEICYgcmlpZCwNCiAgICAgICAgICAgICAgIHZvaWQgKipwcHZTdG9yYWdlKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIElzUnVubmluZygg
DQogICAgICAgICAgICAgICBMUE9MRVNUUiBwc3pJdGVtKSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTkyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDE5OTcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVp
ZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSU9sZUluUGxhY2VVSVdpbmRvdyAq
TFBPTEVJTlBMQUNFVUlXSU5ET1c7DQoNCnR5cGVkZWYgUkVDVCBCT1JERVJXSURUSFM7DQoNCnR5
cGVkZWYgTFBSRUNUIExQQk9SREVSV0lEVEhTOw0KDQp0eXBlZGVmIExQQ1JFQ1QgTFBDQk9SREVS
V0lEVEhTOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JT2xlSW5QbGFjZVVJV2luZG93
Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDExNS0wMDAwLTAw
MDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJT2xlSW5Q
bGFjZVVJV2luZG93IDogcHVibGljIElPbGVXaW5kb3cNCiAgICB7DQogICAgcHVibGljOg0KICAg
ICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRCb3JkZXIoIA0KICAgICAgICAgICAg
ICAgTFBSRUNUIGxwcmVjdEJvcmRlcikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAg
SFJFU1VMVCBfX3N0ZGNhbGwgUmVxdWVzdEJvcmRlclNwYWNlKCANCiAgICAgICAgICAgICAgIExQ
Q0JPUkRFUldJRFRIUyBwYm9yZGVyd2lkdGhzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBTZXRCb3JkZXJTcGFjZSggDQogICAgICAgICAgICAgICBM
UENCT1JERVJXSURUSFMgcGJvcmRlcndpZHRocykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRBY3RpdmVPYmplY3QoIA0KICAgICAgICAgICAgICAg
SU9sZUluUGxhY2VBY3RpdmVPYmplY3QgKnBBY3RpdmVPYmplY3QsDQogICAgICAgICAgICAgICBM
UENPTEVTVFIgcHN6T2JqTmFtZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAyMTI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDIx
MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAg
SU9sZUluUGxhY2VBY3RpdmVPYmplY3QgKkxQT0xFSU5QTEFDRUFDVElWRU9CSkVDVDsNCg0KDQpl
eHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSU9sZUluUGxhY2VBY3RpdmVPYmplY3Q7DQoNCg0KICAg
IA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMTE3LTAwMDAtMDAwMC1DMDAwLTAw
MDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElPbGVJblBsYWNlQWN0aXZl
T2JqZWN0IDogcHVibGljIElPbGVXaW5kb3cNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2
aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBUcmFuc2xhdGVBY2NlbGVyYXRvclcoIA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgTFBNU0cgbHBtc2cpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIE9uRnJhbWVXaW5kb3dBY3RpdmF0ZSggDQog
ICAgICAgICAgICAgQk9PTCBmQWN0aXZhdGUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIE9uRG9jV2luZG93QWN0aXZhdGUoIA0KICAgICAgICAgICAg
IEJPT0wgZkFjdGl2YXRlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxU
IF9fc3RkY2FsbCBSZXNpemVCb3JkZXIoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
TFBDUkVDVCBwcmNCb3JkZXIsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBJT2xlSW5Q
bGFjZVVJV2luZG93ICpwVUlXaW5kb3csDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBC
T09MIGZGcmFtZVdpbmRvdykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxU
IF9fc3RkY2FsbCBFbmFibGVNb2RlbGVzcyggDQogICAgICAgICAgICAgQk9PTCBmRW5hYmxlKSA9
IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDIyNzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCiBIUkVTVUxU
IF9fc3RkY2FsbCBJT2xlSW5QbGFjZUFjdGl2ZU9iamVjdF9SZW1vdGVUcmFuc2xhdGVBY2NlbGVy
YXRvcl9Qcm94eSggDQogICAgICBJT2xlSW5QbGFjZUFjdGl2ZU9iamVjdCAqIFRoaXMpOw0KDQoN
CnZvaWQgX19zdGRjYWxsIElPbGVJblBsYWNlQWN0aXZlT2JqZWN0X1JlbW90ZVRyYW5zbGF0ZUFj
Y2VsZXJhdG9yX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5u
ZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNz
YWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SU9sZUluUGxhY2VBY3RpdmVPYmplY3RfUmVtb3RlUmVzaXplQm9yZGVyX1Byb3h5KCANCiAgICAg
IElPbGVJblBsYWNlQWN0aXZlT2JqZWN0ICogVGhpcywNCiAgICAgICBMUENSRUNUIHByY0JvcmRl
ciwNCiAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgIElPbGVJblBsYWNlVUlXaW5kb3cg
KnBVSVdpbmRvdywNCiAgICAgQk9PTCBmRnJhbWVXaW5kb3cpOw0KDQoNCnZvaWQgX19zdGRjYWxs
IElPbGVJblBsYWNlQWN0aXZlT2JqZWN0X1JlbW90ZVJlc2l6ZUJvcmRlcl9TdHViKA0KICAgIElS
cGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxC
dWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0
dWJQaGFzZSk7DQoNCg0KDQojbGluZSAyMzA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0K
DQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElPbGVJblBsYWNlRnJhbWUgKkxQT0xFSU5QTEFDRUZS
QU1FOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdPSUZJDQogICAgew0KICAgIFVJTlQgY2I7DQogICAg
Qk9PTCBmTURJQXBwOw0KICAgIEhXTkQgaHduZEZyYW1lOw0KICAgIEhBQ0NFTCBoYWNjZWw7DQog
ICAgVUlOVCBjQWNjZWxFbnRyaWVzOw0KICAgIH0gCU9MRUlOUExBQ0VGUkFNRUlORk87DQoNCnR5
cGVkZWYgc3RydWN0IHRhZ09JRkkgKkxQT0xFSU5QTEFDRUZSQU1FSU5GTzsNCg0KdHlwZWRlZiBz
dHJ1Y3QgdGFnT2xlTWVudUdyb3VwV2lkdGhzDQogICAgew0KICAgIExPTkcgd2lkdGhbIDYgXTsN
CiAgICB9IAlPTEVNRU5VR1JPVVBXSURUSFM7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ09sZU1lbnVH
cm91cFdpZHRocyAqTFBPTEVNRU5VR1JPVVBXSURUSFM7DQoNCnR5cGVkZWYgSEdMT0JBTCBIT0xF
TUVOVTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSU9sZUluUGxhY2VGcmFtZTsNCg0K
DQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMTYtMDAwMC0wMDAwLUMw
MDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU9sZUluUGxhY2VG
cmFtZSA6IHB1YmxpYyBJT2xlSW5QbGFjZVVJV2luZG93DQogICAgew0KICAgIHB1YmxpYzoNCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBJbnNlcnRNZW51cyggDQogICAgICAgICAg
ICAgICBITUVOVSBobWVudVNoYXJlZCwNCiAgICAgICAgICAgICAgIExQT0xFTUVOVUdST1VQV0lE
VEhTIGxwTWVudVdpZHRocykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgU2V0TWVudSggDQogICAgICAgICAgICAgICBITUVOVSBobWVudVNoYXJlZCwN
CiAgICAgICAgICAgICAgIEhPTEVNRU5VIGhvbGVtZW51LA0KICAgICAgICAgICAgICAgSFdORCBo
d25kQWN0aXZlT2JqZWN0KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFJlbW92ZU1lbnVzKCANCiAgICAgICAgICAgICAgIEhNRU5VIGhtZW51U2hhcmVk
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBTZXRT
dGF0dXNUZXh0KCANCiAgICAgICAgICAgICAgIExQQ09MRVNUUiBwc3pTdGF0dXNUZXh0KSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEVuYWJsZU1vZGVs
ZXNzKCANCiAgICAgICAgICAgICBCT09MIGZFbmFibGUpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgVHJhbnNsYXRlQWNjZWxlcmF0b3JXKCANCiAgICAg
ICAgICAgICAgIExQTVNHIGxwbXNnLA0KICAgICAgICAgICAgIFdPUkQgd0lEKSA9IDA7DQogICAg
ICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAyNTA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNs
aW5lIDI1MTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRl
ZiAgICAgSU9sZUluUGxhY2VPYmplY3QgKkxQT0xFSU5QTEFDRU9CSkVDVDsNCg0KDQpleHRlcm4g
IkMiIGNvbnN0IElJRCBJSURfSU9sZUluUGxhY2VPYmplY3Q7DQoNCg0KICAgIA0KICAgIHN0cnVj
dCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMTEzLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIp
KSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElPbGVJblBsYWNlT2JqZWN0IDogcHVibGljIElP
bGVXaW5kb3cNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIEluUGxhY2VEZWFjdGl2YXRlKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFVJRGVhY3RpdmF0ZSggdm9pZCkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0T2JqZWN0UmVjdHMoIA0K
ICAgICAgICAgICAgICAgTFBDUkVDVCBscHJjUG9zUmVjdCwNCiAgICAgICAgICAgICAgIExQQ1JF
Q1QgbHByY0NsaXBSZWN0KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFJlYWN0aXZhdGVBbmRVbmRvKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDI2MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0K
I2xpbmUgMjYzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQp0eXBl
ZGVmICAgICBJT2xlSW5QbGFjZVNpdGUgKkxQT0xFSU5QTEFDRVNJVEU7DQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBJSUQgSUlEX0lPbGVJblBsYWNlU2l0ZTsNCg0KDQogICAgDQogICAgc3RydWN0IF9f
ZGVjbHNwZWModXVpZCgiMDAwMDAxMTktMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9f
ZGVjbHNwZWMobm92dGFibGUpDQogICAgSU9sZUluUGxhY2VTaXRlIDogcHVibGljIElPbGVXaW5k
b3cNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IENhbkluUGxhY2VBY3RpdmF0ZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBPbkluUGxhY2VBY3RpdmF0ZSggdm9pZCkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPblVJQWN0aXZhdGUoIHZvaWQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0V2lu
ZG93Q29udGV4dCggDQogICAgICAgICAgICAgICBJT2xlSW5QbGFjZUZyYW1lICoqcHBGcmFtZSwN
CiAgICAgICAgICAgICAgIElPbGVJblBsYWNlVUlXaW5kb3cgKipwcERvYywNCiAgICAgICAgICAg
ICAgIExQUkVDVCBscHJjUG9zUmVjdCwNCiAgICAgICAgICAgICAgIExQUkVDVCBscHJjQ2xpcFJl
Y3QsDQogICAgICAgICAgICAgICBMUE9MRUlOUExBQ0VGUkFNRUlORk8gbHBGcmFtZUluZm8pID0g
MDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2Nyb2xsKCAN
CiAgICAgICAgICAgICBTSVpFIHNjcm9sbEV4dGFudCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPblVJRGVhY3RpdmF0ZSggDQogICAgICAgICAgICAg
Qk9PTCBmVW5kb2FibGUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgT25JblBsYWNlRGVhY3RpdmF0ZSggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBEaXNjYXJkVW5kb1N0YXRlKCB2b2lkKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIERlYWN0aXZhdGVB
bmRVbmRvKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIE9uUG9zUmVjdENoYW5nZSggDQogICAgICAgICAgICAgICBMUENSRUNUIGxwcmNQb3NS
ZWN0KSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDI4MTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KI2xp
bmUgMjgxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVy
biAiQyIgY29uc3QgSUlEIElJRF9JQ29udGludWU7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjAwMDAwMTJhLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElDb250aW51ZSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsN
CiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRkNvbnRpbnVl
KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjg5MSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9s
ZWlkbC5oIg0KDQoNCg0KDQojbGluZSAyODk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0K
DQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElWaWV3T2JqZWN0ICpMUFZJRVdPQkpFQ1Q7DQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lWaWV3T2JqZWN0Ow0KDQoNCiAgICANCiAgICBzdHJ1
Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDEwZC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYi
KSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJVmlld09iamVjdCA6IHB1YmxpYyBJVW5rbm93
bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IERyYXcoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgZHdEcmF3QXNwZWN0
LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTE9ORyBsaW5kZXgsDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICB2b2lkICpwdkFzcGVjdCwNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIERWVEFSR0VUREVWSUNFICpwdGQsDQogICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICBIREMgaGRjVGFyZ2V0RGV2LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSERD
IGhkY0RyYXcsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBMUENSRUNUTCBscHJjQm91
bmRzLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBDUkVDVEwgbHByY1dCb3VuZHMs
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBCT09MICggX19zdGRjYWxsICpwZm5Db250
aW51ZSApKCANCiAgICAgICAgICAgICAgICBVTE9OR19QVFIgZHdDb250aW51ZSksDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBVTE9OR19QVFIgZHdDb250aW51ZSkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0Q29sb3JTZXQoIA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgZHdEcmF3QXNwZWN0LA0KICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgTE9ORyBsaW5kZXgsDQogICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICB2b2lkICpwdkFzcGVjdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERW
VEFSR0VUREVWSUNFICpwdGQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBIREMgaGlj
VGFyZ2V0RGV2LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBMT0dQQUxFVFRFICoqcHBD
b2xvclNldCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgRnJlZXplKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGR3RHJhd0Fz
cGVjdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIExPTkcgbGluZGV4LA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgdm9pZCAqcHZBc3BlY3QsDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICBEV09SRCAqcGR3RnJlZXplKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFVuZnJlZXplKCANCiAgICAgICAgICAgICBEV09SRCBk
d0ZyZWV6ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBTZXRBZHZpc2UoIA0KICAgICAgICAgICAgIERXT1JEIGFzcGVjdHMsDQogICAgICAgICAgICAg
RFdPUkQgYWR2ZiwNCiAgICAgICAgICAgICAgIElBZHZpc2VTaW5rICpwQWR2U2luaykgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0QWR2aXNlKCAN
CiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEICpwQXNwZWN0cywNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIERXT1JEICpwQWR2ZiwNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgSUFkdmlzZVNpbmsgKipwcEFkdlNpbmspID0gMDsNCiAgICAgICAgDQogICAgfTsN
CiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMTEz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVZpZXdP
YmplY3RfUmVtb3RlRHJhd19Qcm94eSggDQogICAgICBJVmlld09iamVjdCAqIFRoaXMsDQogICAg
IERXT1JEIGR3RHJhd0FzcGVjdCwNCiAgICAgTE9ORyBsaW5kZXgsDQogICAgIFVMT05HX1BUUiBw
dkFzcGVjdCwNCiAgICAgICBEVlRBUkdFVERFVklDRSAqcHRkLA0KICAgICAgIEhEQyBoZGNUYXJn
ZXREZXYsDQogICAgICAgSERDIGhkY0RyYXcsDQogICAgICAgTFBDUkVDVEwgbHByY0JvdW5kcywN
CiAgICAgICBMUENSRUNUTCBscHJjV0JvdW5kcywNCiAgICAgICBJQ29udGludWUgKnBDb250aW51
ZSk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVZpZXdPYmplY3RfUmVtb3RlRHJhd19TdHViKA0KICAg
IElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5u
ZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bk
d1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElWaWV3T2JqZWN0X1JlbW90ZUdl
dENvbG9yU2V0X1Byb3h5KCANCiAgICAgIElWaWV3T2JqZWN0ICogVGhpcywNCiAgICAgRFdPUkQg
ZHdEcmF3QXNwZWN0LA0KICAgICBMT05HIGxpbmRleCwNCiAgICAgVUxPTkdfUFRSIHB2QXNwZWN0
LA0KICAgICAgIERWVEFSR0VUREVWSUNFICpwdGQsDQogICAgIFVMT05HX1BUUiBoaWNUYXJnZXRE
ZXYsDQogICAgICAgTE9HUEFMRVRURSAqKnBwQ29sb3JTZXQpOw0KDQoNCnZvaWQgX19zdGRjYWxs
IElWaWV3T2JqZWN0X1JlbW90ZUdldENvbG9yU2V0X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIg
KlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQ
UlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0K
DQogSFJFU1VMVCBfX3N0ZGNhbGwgSVZpZXdPYmplY3RfUmVtb3RlRnJlZXplX1Byb3h5KCANCiAg
ICAgIElWaWV3T2JqZWN0ICogVGhpcywNCiAgICAgRFdPUkQgZHdEcmF3QXNwZWN0LA0KICAgICBM
T05HIGxpbmRleCwNCiAgICAgVUxPTkdfUFRSIHB2QXNwZWN0LA0KICAgICAgIERXT1JEICpwZHdG
cmVlemUpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElWaWV3T2JqZWN0X1JlbW90ZUZyZWV6ZV9TdHVi
KA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJw
Y0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09S
RCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElWaWV3T2JqZWN0X1Jl
bW90ZUdldEFkdmlzZV9Qcm94eSggDQogICAgICBJVmlld09iamVjdCAqIFRoaXMsDQogICAgICAg
RFdPUkQgKnBBc3BlY3RzLA0KICAgICAgIERXT1JEICpwQWR2ZiwNCiAgICAgICBJQWR2aXNlU2lu
ayAqKnBwQWR2U2luayk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVZpZXdPYmplY3RfUmVtb3RlR2V0
QWR2aXNlX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxC
dWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdl
LA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDMxODQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSVZpZXdPYmplY3Qy
ICpMUFZJRVdPQkpFQ1QyOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JVmlld09iamVj
dDI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMTI3LTAwMDAt
MDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElWaWV3
T2JqZWN0MiA6IHB1YmxpYyBJVmlld09iamVjdA0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0RXh0ZW50KCANCiAgICAgICAgICAgICBEV09S
RCBkd0RyYXdBc3BlY3QsDQogICAgICAgICAgICAgTE9ORyBsaW5kZXgsDQogICAgICAgICAgICAg
ICBEVlRBUkdFVERFVklDRSAqcHRkLA0KICAgICAgICAgICAgICAgTFBTSVpFTCBscHNpemVsKSA9
IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMzNTUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvbGVpZGwuaCINCg0KDQoNCg0KI2xpbmUgMzM2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0K
DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJRHJvcFNvdXJjZSAqTFBEUk9QU09VUkNFOw0KDQoN
CmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRHJvcFNvdXJjZTsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMjEtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSURyb3BTb3VyY2UgOiBwdWJsaWMgSVVua25v
d24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFF1ZXJ5Q29udGludWVEcmFnKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEJPT0wg
ZkVzY2FwZVByZXNzZWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBncmZL
ZXlTdGF0ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBHaXZlRmVlZGJhY2soIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgZHdF
ZmZlY3QpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAzNDU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KDQoNCiNsaW5lIDM0NjAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSURyb3BUYXJn
ZXQgKkxQRFJPUFRBUkdFVDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lE
cm9wVGFyZ2V0Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIwMDAwMDEy
Mi0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAg
ICBJRHJvcFRhcmdldCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRHJhZ0VudGVyKCANCiAgICAgICAgICAgICAg
IElEYXRhT2JqZWN0ICpwRGF0YU9iaiwNCiAgICAgICAgICAgICBEV09SRCBncmZLZXlTdGF0ZSwN
CiAgICAgICAgICAgICBQT0lOVEwgcHQsDQogICAgICAgICAgICAgICBEV09SRCAqcGR3RWZmZWN0
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIERyYWdP
dmVyKCANCiAgICAgICAgICAgICBEV09SRCBncmZLZXlTdGF0ZSwNCiAgICAgICAgICAgICBQT0lO
VEwgcHQsDQogICAgICAgICAgICAgICBEV09SRCAqcGR3RWZmZWN0KSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIERyYWdMZWF2ZSggdm9pZCkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBEcm9wKCANCiAgICAg
ICAgICAgICAgIElEYXRhT2JqZWN0ICpwRGF0YU9iaiwNCiAgICAgICAgICAgICBEV09SRCBncmZL
ZXlTdGF0ZSwNCiAgICAgICAgICAgICBQT0lOVEwgcHQsDQogICAgICAgICAgICAgICBEV09SRCAq
cGR3RWZmZWN0KSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM2MTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvbGVpZGwuaCINCg0KDQoNCg0KI2xpbmUgMzYxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0K
DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRHJvcFNvdXJjZU5v
dGlmeTsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMDAwMDAxMkItMDAw
MC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSURy
b3BTb3VyY2VOb3RpZnkgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAg
ICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIERyYWdFbnRlclRhcmdldCggDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBIV05EIGh3bmRUYXJnZXQpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRHJhZ0xlYXZlVGFyZ2V0KCB2b2lkKSA9
IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3MDMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvbGVpZGwuaCINCg0KDQoNCg0KI2xpbmUgMzcwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5o
Ig0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRW50ZXJwcmlz
ZURyb3BUYXJnZXQ7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjM5MEUz
ODc4LUZENTUtNEUxOC04MTlELTQ2ODIwODFDMENGRCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0K
ICAgIElFbnRlcnByaXNlRHJvcFRhcmdldCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBw
dWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0RHJvcFNvdXJjZUVu
dGVycHJpc2VJZCggDQogICAgICAgICAgICAgICBMUENXU1RSIGlkZW50aXR5KSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIElzRXZhbHVhdGluZ0VkcFBv
bGljeSggDQogICAgICAgICAgICAgICBCT09MICp2YWx1ZSkgPSAwOw0KICAgICAgICANCiAgICB9
Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNzkzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0K
DQoNCiNsaW5lIDM3OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0KDQoNCiANCg0KDQojbGlu
ZSAzODA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdt
YSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5IG9yIEdhbWVzIEZh
bWlseQ0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9vbGVpZGxfMDAwMF8w
MDI0X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29sZWlk
bF8wMDAwXzAwMjRfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElF
bnVtT0xFVkVSQiAqTFBFTlVNT0xFVkVSQjsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnT0xFVkVSQg0K
ICAgIHsNCiAgICBMT05HIGxWZXJiOw0KICAgIExQT0xFU1RSIGxwc3pWZXJiTmFtZTsNCiAgICBE
V09SRCBmdUZsYWdzOw0KICAgIERXT1JEIGdyZkF0dHJpYnM7DQogICAgfSAJT0xFVkVSQjsNCg0K
dHlwZWRlZiBzdHJ1Y3QgdGFnT0xFVkVSQiAqTFBPTEVWRVJCOw0KDQp0eXBlZGVmICANCmVudW0g
dGFnT0xFVkVSQkFUVFJJQg0KICAgIHsNCiAgICAgICAgT0xFVkVSQkFUVFJJQl9ORVZFUkRJUlRJ
RVMJPSAxLA0KICAgICAgICBPTEVWRVJCQVRUUklCX09OQ09OVEFJTkVSTUVOVQk9IDINCiAgICB9
IAlPTEVWRVJCQVRUUklCOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRW51bU9MRVZF
UkI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjAwMDAwMTA0LTAwMDAt
MDAwMC1DMDAwLTAwMDAwMDAwMDA0NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElFbnVt
T0xFVkVSQiA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZp
cnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIE5leHQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgVUxPTkcgY2VsdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIExQT0xFVkVS
QiByZ2VsdCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIFVMT05HICpwY2VsdEZldGNo
ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2tp
cCggDQogICAgICAgICAgICAgVUxPTkcgY2VsdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBSZXNldCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDbG9uZSggDQogICAgICAgICAgICAgICBJRW51
bU9MRVZFUkIgKipwcGVudW0pID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzk0MyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG9sZWlkbC5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElFbnVtT0xFVkVSQl9SZW1v
dGVOZXh0X1Byb3h5KCANCiAgICAgIElFbnVtT0xFVkVSQiAqIFRoaXMsDQogICAgIFVMT05HIGNl
bHQsDQogICAgICAgTFBPTEVWRVJCIHJnZWx0LA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQp
Ow0KDQoNCnZvaWQgX19zdGRjYWxsIElFbnVtT0xFVkVSQl9SZW1vdGVOZXh0X1N0dWIoDQogICAg
SVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5l
bEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3
U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDM5NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVpZGwuaCINCg0K
DQoNCiANCg0KI2xpbmUgMzk2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWlkbC5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDM5NzIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxv
bGVpZGwuaCINCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX29sZWlkbF8wMDAw
XzAwMjVfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfb2xl
aWRsXzAwMDBfMDAyNV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KdW5zaWduZWQgbG9uZyAgICAgICAg
ICAgICBfX3N0ZGNhbGwgIENMSVBGT1JNQVRfVXNlclNpemUoICAgICAgIHVuc2lnbmVkIGxvbmcg
KiwgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICwgICBDTElQRk9STUFUICogKTsgDQp1bnNpZ25l
ZCBjaGFyICogX19zdGRjYWxsICBDTElQRk9STUFUX1VzZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBs
b25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIENMSVBGT1JNQVQgKiApOyANCnVuc2lnbmVkIGNo
YXIgKiBfX3N0ZGNhbGwgIENMSVBGT1JNQVRfVXNlclVubWFyc2hhbCggIHVuc2lnbmVkIGxvbmcg
KiwgICB1bnNpZ25lZCBjaGFyICosICAgQ0xJUEZPUk1BVCAqICk7IA0Kdm9pZCAgICAgICAgICAg
ICAgICAgICAgICBfX3N0ZGNhbGwgIENMSVBGT1JNQVRfVXNlckZyZWUoICAgICAgIHVuc2lnbmVk
IGxvbmcgKiwgICBDTElQRk9STUFUICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAg
X19zdGRjYWxsICBIQUNDRUxfVXNlclNpemUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWdu
ZWQgbG9uZyAgICAgICAgICAgICwgICBIQUNDRUwgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0
ZGNhbGwgIEhBQ0NFTF9Vc2VyTWFyc2hhbCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVk
IGNoYXIgKiwgICBIQUNDRUwgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhBQ0NF
TF9Vc2VyVW5tYXJzaGFsKCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBI
QUNDRUwgKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAgICAgX19zdGRjYWxsICBIQUNDRUxf
VXNlckZyZWUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgICBIQUNDRUwgKiApOyANCg0KdW5zaWdu
ZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhEQ19Vc2VyU2l6ZSggICAgICAgdW5zaWdu
ZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEhEQyAqICk7IA0KdW5zaWdu
ZWQgY2hhciAqIF9fc3RkY2FsbCAgSERDX1VzZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBsb25nICos
ICAgdW5zaWduZWQgY2hhciAqLCAgIEhEQyAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2Fs
bCAgSERDX1VzZXJVbm1hcnNoYWwoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAq
LCAgIEhEQyAqICk7IA0Kdm9pZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhEQ19V
c2VyRnJlZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEhEQyAqICk7IA0KDQp1bnNpZ25lZCBs
b25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgSEdMT0JBTF9Vc2VyU2l6ZSggICAgICAgdW5zaWdu
ZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEhHTE9CQUwgKiApOyANCnVu
c2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhHTE9CQUxfVXNlck1hcnNoYWwoICAgIHVuc2lnbmVk
IGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSEdMT0JBTCAqICk7IA0KdW5zaWduZWQgY2hh
ciAqIF9fc3RkY2FsbCAgSEdMT0JBTF9Vc2VyVW5tYXJzaGFsKCAgdW5zaWduZWQgbG9uZyAqLCAg
IHVuc2lnbmVkIGNoYXIgKiwgICBIR0xPQkFMICogKTsgDQp2b2lkICAgICAgICAgICAgICAgICAg
ICAgIF9fc3RkY2FsbCAgSEdMT0JBTF9Vc2VyRnJlZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCAg
IEhHTE9CQUwgKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhN
RU5VX1VzZXJTaXplKCAgICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAgICAg
ICAgICAsICAgSE1FTlUgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhNRU5VX1Vz
ZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEhNRU5V
ICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBITUVOVV9Vc2VyVW5tYXJzaGFsKCAg
dW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBITUVOVSAqICk7IA0Kdm9pZCAg
ICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhNRU5VX1VzZXJGcmVlKCAgICAgICB1bnNp
Z25lZCBsb25nICosICAgSE1FTlUgKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBf
X3N0ZGNhbGwgIEhXTkRfVXNlclNpemUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQg
bG9uZyAgICAgICAgICAgICwgICBIV05EICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxs
ICBIV05EX1VzZXJNYXJzaGFsKCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAq
LCAgIEhXTkQgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhXTkRfVXNlclVubWFy
c2hhbCggIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSFdORCAqICk7IA0K
dm9pZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhXTkRfVXNlckZyZWUoICAgICAg
IHVuc2lnbmVkIGxvbmcgKiwgICBIV05EICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAg
ICAgX19zdGRjYWxsICBTVEdNRURJVU1fVXNlclNpemUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwg
dW5zaWduZWQgbG9uZyAgICAgICAgICAgICwgICBTVEdNRURJVU0gKiApOyANCnVuc2lnbmVkIGNo
YXIgKiBfX3N0ZGNhbGwgIFNUR01FRElVTV9Vc2VyTWFyc2hhbCggICAgdW5zaWduZWQgbG9uZyAq
LCAgIHVuc2lnbmVkIGNoYXIgKiwgICBTVEdNRURJVU0gKiApOyANCnVuc2lnbmVkIGNoYXIgKiBf
X3N0ZGNhbGwgIFNUR01FRElVTV9Vc2VyVW5tYXJzaGFsKCAgdW5zaWduZWQgbG9uZyAqLCAgIHVu
c2lnbmVkIGNoYXIgKiwgICBTVEdNRURJVU0gKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAg
ICAgX19zdGRjYWxsICBTVEdNRURJVU1fVXNlckZyZWUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwg
ICBTVEdNRURJVU0gKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwg
IENMSVBGT1JNQVRfVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBs
b25nICAgICAgICAgICAgLCAgIENMSVBGT1JNQVQgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0
ZGNhbGwgIENMSVBGT1JNQVRfVXNlck1hcnNoYWw2NCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVu
c2lnbmVkIGNoYXIgKiwgICBDTElQRk9STUFUICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRj
YWxsICBDTElQRk9STUFUX1VzZXJVbm1hcnNoYWw2NCggIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNp
Z25lZCBjaGFyICosICAgQ0xJUEZPUk1BVCAqICk7IA0Kdm9pZCAgICAgICAgICAgICAgICAgICAg
ICBfX3N0ZGNhbGwgIENMSVBGT1JNQVRfVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9uZyAq
LCAgIENMSVBGT1JNQVQgKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNh
bGwgIEhBQ0NFTF9Vc2VyU2l6ZTY0KCAgICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxv
bmcgICAgICAgICAgICAsICAgSEFDQ0VMICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxs
ICBIQUNDRUxfVXNlck1hcnNoYWw2NCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNo
YXIgKiwgICBIQUNDRUwgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhBQ0NFTF9V
c2VyVW5tYXJzaGFsNjQoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEhB
Q0NFTCAqICk7IA0Kdm9pZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhBQ0NFTF9V
c2VyRnJlZTY0KCAgICAgICB1bnNpZ25lZCBsb25nICosICAgSEFDQ0VMICogKTsgDQoNCnVuc2ln
bmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBIRENfVXNlclNpemU2NCggICAgICAgdW5z
aWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEhEQyAqICk7IA0KdW5z
aWduZWQgY2hhciAqIF9fc3RkY2FsbCAgSERDX1VzZXJNYXJzaGFsNjQoICAgIHVuc2lnbmVkIGxv
bmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSERDICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19z
dGRjYWxsICBIRENfVXNlclVubWFyc2hhbDY0KCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVk
IGNoYXIgKiwgICBIREMgKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAgICAgX19zdGRjYWxs
ICBIRENfVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEhEQyAqICk7IA0KDQp1
bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgSEdMT0JBTF9Vc2VyU2l6ZTY0KCAg
ICAgICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAsICAgSEdMT0JB
TCAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgSEdMT0JBTF9Vc2VyTWFyc2hhbDY0
KCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEhHTE9CQUwgKiApOyAN
CnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhHTE9CQUxfVXNlclVubWFyc2hhbDY0KCAgdW5z
aWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBIR0xPQkFMICogKTsgDQp2b2lkICAg
ICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgSEdMT0JBTF9Vc2VyRnJlZTY0KCAgICAgICB1
bnNpZ25lZCBsb25nICosICAgSEdMT0JBTCAqICk7IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAg
ICAgIF9fc3RkY2FsbCAgSE1FTlVfVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1
bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEhNRU5VICogKTsgDQp1bnNpZ25lZCBjaGFyICog
X19zdGRjYWxsICBITUVOVV9Vc2VyTWFyc2hhbDY0KCAgICB1bnNpZ25lZCBsb25nICosICAgdW5z
aWduZWQgY2hhciAqLCAgIEhNRU5VICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBI
TUVOVV9Vc2VyVW5tYXJzaGFsNjQoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAq
LCAgIEhNRU5VICogKTsgDQp2b2lkICAgICAgICAgICAgICAgICAgICAgIF9fc3RkY2FsbCAgSE1F
TlVfVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEhNRU5VICogKTsgDQoNCnVu
c2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBIV05EX1VzZXJTaXplNjQoICAgICAg
IHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICwgICBIV05EICogKTsg
DQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBIV05EX1VzZXJNYXJzaGFsNjQoICAgIHVuc2ln
bmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSFdORCAqICk7IA0KdW5zaWduZWQgY2hh
ciAqIF9fc3RkY2FsbCAgSFdORF9Vc2VyVW5tYXJzaGFsNjQoICB1bnNpZ25lZCBsb25nICosICAg
dW5zaWduZWQgY2hhciAqLCAgIEhXTkQgKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAgICAg
X19zdGRjYWxsICBIV05EX1VzZXJGcmVlNjQoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgICBIV05E
ICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBTVEdNRURJVU1f
VXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAg
ICAgLCAgIFNUR01FRElVTSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgU1RHTUVE
SVVNX1VzZXJNYXJzaGFsNjQoICAgIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICos
ICAgU1RHTUVESVVNICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBTVEdNRURJVU1f
VXNlclVubWFyc2hhbDY0KCAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBT
VEdNRURJVU0gKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAgICAgX19zdGRjYWxsICBTVEdN
RURJVU1fVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIFNUR01FRElVTSAqICk7
IA0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSU9sZUNhY2hlMl9VcGRhdGVDYWNoZV9Qcm94eSggDQog
ICAgSU9sZUNhY2hlMiAqIFRoaXMsDQogICAgIA0KICAgICAgIExQREFUQU9CSkVDVCBwRGF0YU9i
amVjdCwNCiAgICAgDQogICAgICAgRFdPUkQgZ3JmVXBkZiwNCiAgICAgDQogICAgICAgTFBWT0lE
IHBSZXNlcnZlZCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElPbGVDYWNoZTJfVXBkYXRlQ2Fj
aGVfU3R1YiggDQogICAgICBJT2xlQ2FjaGUyICogVGhpcywNCiAgICAgICBMUERBVEFPQkpFQ1Qg
cERhdGFPYmplY3QsDQogICAgIERXT1JEIGdyZlVwZGYsDQogICAgIExPTkdfUFRSIHBSZXNlcnZl
ZCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJT2xlSW5QbGFjZUFjdGl2ZU9iamVjdF9UcmFuc2xh
dGVBY2NlbGVyYXRvcl9Qcm94eSggDQogICAgSU9sZUluUGxhY2VBY3RpdmVPYmplY3QgKiBUaGlz
LA0KICAgICANCiAgICAgICBMUE1TRyBscG1zZyk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElP
bGVJblBsYWNlQWN0aXZlT2JqZWN0X1RyYW5zbGF0ZUFjY2VsZXJhdG9yX1N0dWIoIA0KICAgICAg
SU9sZUluUGxhY2VBY3RpdmVPYmplY3QgKiBUaGlzKTsNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElP
bGVJblBsYWNlQWN0aXZlT2JqZWN0X1Jlc2l6ZUJvcmRlcl9Qcm94eSggDQogICAgSU9sZUluUGxh
Y2VBY3RpdmVPYmplY3QgKiBUaGlzLA0KICAgICANCiAgICAgICBMUENSRUNUIHByY0JvcmRlciwN
CiAgICAgDQogICAgICAgSU9sZUluUGxhY2VVSVdpbmRvdyAqcFVJV2luZG93LA0KICAgICANCiAg
ICAgICBCT09MIGZGcmFtZVdpbmRvdyk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElPbGVJblBs
YWNlQWN0aXZlT2JqZWN0X1Jlc2l6ZUJvcmRlcl9TdHViKCANCiAgICAgIElPbGVJblBsYWNlQWN0
aXZlT2JqZWN0ICogVGhpcywNCiAgICAgICBMUENSRUNUIHByY0JvcmRlciwNCiAgICAgICBjb25z
dCBJSUQgJiByaWlkLA0KICAgICAgIElPbGVJblBsYWNlVUlXaW5kb3cgKnBVSVdpbmRvdywNCiAg
ICAgQk9PTCBmRnJhbWVXaW5kb3cpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSVZpZXdPYmplY3Rf
RHJhd19Qcm94eSggDQogICAgSVZpZXdPYmplY3QgKiBUaGlzLA0KICAgICANCiAgICAgICBEV09S
RCBkd0RyYXdBc3BlY3QsDQogICAgIA0KICAgICAgIExPTkcgbGluZGV4LA0KICAgICANCiAgICAg
ICB2b2lkICpwdkFzcGVjdCwNCiAgICAgDQogICAgICAgRFZUQVJHRVRERVZJQ0UgKnB0ZCwNCiAg
ICAgDQogICAgICAgSERDIGhkY1RhcmdldERldiwNCiAgICAgDQogICAgICAgSERDIGhkY0RyYXcs
DQogICAgIA0KICAgICAgIExQQ1JFQ1RMIGxwcmNCb3VuZHMsDQogICAgIA0KICAgICAgIExQQ1JF
Q1RMIGxwcmNXQm91bmRzLA0KICAgICANCiAgICAgICBCT09MICggX19zdGRjYWxsICpwZm5Db250
aW51ZSApKCANCiAgICAgICAgVUxPTkdfUFRSIGR3Q29udGludWUpLA0KICAgICANCiAgICAgICBV
TE9OR19QVFIgZHdDb250aW51ZSk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElWaWV3T2JqZWN0
X0RyYXdfU3R1YiggDQogICAgICBJVmlld09iamVjdCAqIFRoaXMsDQogICAgIERXT1JEIGR3RHJh
d0FzcGVjdCwNCiAgICAgTE9ORyBsaW5kZXgsDQogICAgIFVMT05HX1BUUiBwdkFzcGVjdCwNCiAg
ICAgICBEVlRBUkdFVERFVklDRSAqcHRkLA0KICAgICAgIEhEQyBoZGNUYXJnZXREZXYsDQogICAg
ICAgSERDIGhkY0RyYXcsDQogICAgICAgTFBDUkVDVEwgbHByY0JvdW5kcywNCiAgICAgICBMUENS
RUNUTCBscHJjV0JvdW5kcywNCiAgICAgICBJQ29udGludWUgKnBDb250aW51ZSk7DQoNCiBIUkVT
VUxUIF9fc3RkY2FsbCBJVmlld09iamVjdF9HZXRDb2xvclNldF9Qcm94eSggDQogICAgSVZpZXdP
YmplY3QgKiBUaGlzLA0KICAgICANCiAgICAgICBEV09SRCBkd0RyYXdBc3BlY3QsDQogICAgIA0K
ICAgICAgIExPTkcgbGluZGV4LA0KICAgICANCiAgICAgICB2b2lkICpwdkFzcGVjdCwNCiAgICAg
DQogICAgICAgRFZUQVJHRVRERVZJQ0UgKnB0ZCwNCiAgICAgDQogICAgICAgSERDIGhpY1Rhcmdl
dERldiwNCiAgICAgDQogICAgICBMT0dQQUxFVFRFICoqcHBDb2xvclNldCk7DQoNCg0KIEhSRVNV
TFQgX19zdGRjYWxsIElWaWV3T2JqZWN0X0dldENvbG9yU2V0X1N0dWIoIA0KICAgICAgSVZpZXdP
YmplY3QgKiBUaGlzLA0KICAgICBEV09SRCBkd0RyYXdBc3BlY3QsDQogICAgIExPTkcgbGluZGV4
LA0KICAgICBVTE9OR19QVFIgcHZBc3BlY3QsDQogICAgICAgRFZUQVJHRVRERVZJQ0UgKnB0ZCwN
CiAgICAgVUxPTkdfUFRSIGhpY1RhcmdldERldiwNCiAgICAgICBMT0dQQUxFVFRFICoqcHBDb2xv
clNldCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJVmlld09iamVjdF9GcmVlemVfUHJveHkoIA0K
ICAgIElWaWV3T2JqZWN0ICogVGhpcywNCiAgICAgDQogICAgICAgRFdPUkQgZHdEcmF3QXNwZWN0
LA0KICAgICANCiAgICAgICBMT05HIGxpbmRleCwNCiAgICAgDQogICAgICAgdm9pZCAqcHZBc3Bl
Y3QsDQogICAgIA0KICAgICAgIERXT1JEICpwZHdGcmVlemUpOw0KDQoNCiBIUkVTVUxUIF9fc3Rk
Y2FsbCBJVmlld09iamVjdF9GcmVlemVfU3R1YiggDQogICAgICBJVmlld09iamVjdCAqIFRoaXMs
DQogICAgIERXT1JEIGR3RHJhd0FzcGVjdCwNCiAgICAgTE9ORyBsaW5kZXgsDQogICAgIFVMT05H
X1BUUiBwdkFzcGVjdCwNCiAgICAgICBEV09SRCAqcGR3RnJlZXplKTsNCg0KIEhSRVNVTFQgX19z
dGRjYWxsIElWaWV3T2JqZWN0X0dldEFkdmlzZV9Qcm94eSggDQogICAgSVZpZXdPYmplY3QgKiBU
aGlzLA0KICAgICANCiAgICAgICBEV09SRCAqcEFzcGVjdHMsDQogICAgIA0KICAgICAgIERXT1JE
ICpwQWR2ZiwNCiAgICAgDQogICAgICBJQWR2aXNlU2luayAqKnBwQWR2U2luayk7DQoNCg0KIEhS
RVNVTFQgX19zdGRjYWxsIElWaWV3T2JqZWN0X0dldEFkdmlzZV9TdHViKCANCiAgICAgIElWaWV3
T2JqZWN0ICogVGhpcywNCiAgICAgICBEV09SRCAqcEFzcGVjdHMsDQogICAgICAgRFdPUkQgKnBB
ZHZmLA0KICAgICAgIElBZHZpc2VTaW5rICoqcHBBZHZTaW5rKTsNCg0KIEhSRVNVTFQgX19zdGRj
YWxsIElFbnVtT0xFVkVSQl9OZXh0X1Byb3h5KCANCiAgICBJRW51bU9MRVZFUkIgKiBUaGlzLA0K
ICAgICANCiAgICAgICBVTE9ORyBjZWx0LA0KICAgICANCiAgICAgICBMUE9MRVZFUkIgcmdlbHQs
DQogICAgIA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQoNCiBIUkVTVUxUIF9fc3Rk
Y2FsbCBJRW51bU9MRVZFUkJfTmV4dF9TdHViKCANCiAgICAgIElFbnVtT0xFVkVSQiAqIFRoaXMs
DQogICAgIFVMT05HIGNlbHQsDQogICAgICAgTFBPTEVWRVJCIHJnZWx0LA0KICAgICAgIFVMT05H
ICpwY2VsdEZldGNoZWQpOw0KDQoNCg0KDQoNCg0KfQ0KI2xpbmUgNDIxMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9sZWlkbC5oIg0KDQojbGluZSA0MjEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlaWRsLmgiDQoNCg0KI2xp
bmUgNDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2Vy
dnByb3YuaCINCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlcnZwcm92LmgiDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQojbGluZSAzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHNlcnZwcm92LmgiDQoNCiAN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IElTZXJ2aWNlUHJvdmlkZXIgSVNlcnZpY2VQcm92aWRlcjsN
Cg0KI2xpbmUgNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZXJ2cHJvdi5oIg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDInsNCiNsaW5lIDU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VydnByb3YuaCINCg0KDQoNCiANCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgY29tbWVudChsaWIsInV1aWQubGliIikNCg0KDQoN
Cg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX3NlcnZwcm92XzAwMDBfMDAwMF92MF8wX2NfaWZzcGVjOw0KZXh0
ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9zZXJ2cHJvdl8wMDAwXzAwMDBfdjBfMF9zX2lm
c3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElTZXJ2aWNlUHJvdmlkZXIgKkxQU0VS
VklDRVBST1ZJREVSOw0KDQoNCiAgICBleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVNlcnZpY2VQ
cm92aWRlcjsNCiAgICBleHRlcm4gIkMrKyINCiAgICB7DQogICAgICAgIHN0cnVjdCBfX2RlY2xz
cGVjKHV1aWQoIjZkNTE0MGMxLTc0MzYtMTFjZS04MDM0LTAwYWEwMDYwMDlmYSIpKSBfX2RlY2xz
cGVjKG5vdnRhYmxlKQ0KICAgICAgICBJU2VydmljZVByb3ZpZGVyIDogcHVibGljIElVbmtub3du
DQogICAgICAgIHsNCiAgICAgICAgcHVibGljOg0KICAgICAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgUXVlcnlTZXJ2aWNlKCANCiAgICAgICAgICAgICAgICAgICBjb25zdCBHVUlE
ICYgZ3VpZFNlcnZpY2UsDQogICAgICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwNCiAg
ICAgICAgICAgICAgICAgIHZvaWQgICogKnBwdk9iamVjdCkgPSAwOw0KICAgICAgICAgICAgDQog
ICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUT4NCiAgICAgICAgICAgIEhSRVNVTFQgX19zdGRj
YWxsIFF1ZXJ5U2VydmljZSggIGNvbnN0IEdVSUQgJiBndWlkU2VydmljZSwgIFEqKiBwcCkNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gUXVlcnlTZXJ2aWNlKGd1aWRTZXJ2
aWNlLCBfX3V1aWRvZihRKSwgKHZvaWQgKiopcHApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
Ow0KICAgIH0NCg0KICAgICBIUkVTVUxUIF9fc3RkY2FsbCBJU2VydmljZVByb3ZpZGVyX1JlbW90
ZVF1ZXJ5U2VydmljZV9Qcm94eSggDQogICAgICAgICAgSVNlcnZpY2VQcm92aWRlciAgKiBUaGlz
LA0KICAgICAgICAgICBjb25zdCBHVUlEICYgZ3VpZFNlcnZpY2UsDQogICAgICAgICAgIGNvbnN0
IElJRCAmIHJpaWQsDQogICAgICAgICAgSVVua25vd24gICogKnBwdk9iamVjdCk7DQoNCiAgICB2
b2lkIF9fc3RkY2FsbCBJU2VydmljZVByb3ZpZGVyX1JlbW90ZVF1ZXJ5U2VydmljZV9TdHViKA0K
ICAgICAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICAgICAgSVJwY0NoYW5uZWxCdWZmZXIg
Kl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICAgICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwN
CiAgICAgICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAyMjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxzZXJ2cHJvdi5oIg0KDQoNCg0KIA0KDQojbGluZSAyMjkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxzZXJ2cHJvdi5oIg0KI2xpbmUgMjMwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcc2VydnBy
b3YuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURM
X2l0Zl9zZXJ2cHJvdl8wMDAwXzAwMDFfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFO
RExFIF9fTUlETF9pdGZfc2VydnByb3ZfMDAwMF8wMDAxX3YwXzBfc19pZnNwZWM7DQoNCg0KDQog
SFJFU1VMVCBfX3N0ZGNhbGwgSVNlcnZpY2VQcm92aWRlcl9RdWVyeVNlcnZpY2VfUHJveHkoIA0K
ICAgIElTZXJ2aWNlUHJvdmlkZXIgKiBUaGlzLA0KICAgICANCiAgICAgICBjb25zdCBHVUlEICYg
Z3VpZFNlcnZpY2UsDQogICAgIA0KICAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgIA0KICAg
ICAgdm9pZCAqKnBwdk9iamVjdCk7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElTZXJ2aWNlUHJv
dmlkZXJfUXVlcnlTZXJ2aWNlX1N0dWIoIA0KICAgICAgSVNlcnZpY2VQcm92aWRlciAqIFRoaXMs
DQogICAgICAgY29uc3QgR1VJRCAmIGd1aWRTZXJ2aWNlLA0KICAgICAgIGNvbnN0IElJRCAmIHJp
aWQsDQogICAgICAgSVVua25vd24gKipwcHZPYmplY3QpOw0KDQoNCg0KDQoNCg0KfQ0KI2xpbmUg
MjYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcc2VydnByb3YuaCINCg0KI2xpbmUgMjYzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
c2VydnByb3YuaCINCg0KDQojbGluZSA0MzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCiNsaW5l
IDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDM1
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KIA0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVhNTERP
TUltcGxlbWVudGF0aW9uIElYTUxET01JbXBsZW1lbnRhdGlvbjsNCg0KI2xpbmUgNDMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJWE1MRE9NTm9kZSBJWE1M
RE9NTm9kZTsNCg0KI2xpbmUgNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBJWE1MRE9NRG9jdW1lbnRGcmFnbWVudCBJWE1MRE9NRG9jdW1lbnRGcmFnbWVu
dDsNCg0KI2xpbmUgNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBJWE1MRE9NRG9jdW1lbnQgSVhNTERPTURvY3VtZW50Ow0KDQojbGluZSA2NCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxET01Ob2RlTGlzdCBJ
WE1MRE9NTm9kZUxpc3Q7DQoNCiNsaW5lIDcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoN
Cg0KdHlwZWRlZiBzdHJ1Y3QgSVhNTERPTU5hbWVkTm9kZU1hcCBJWE1MRE9NTmFtZWROb2RlTWFw
Ow0KDQojbGluZSA3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IElYTUxET01DaGFyYWN0ZXJEYXRhIElYTUxET01DaGFyYWN0ZXJEYXRhOw0KDQojbGluZSA4
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxET01B
dHRyaWJ1dGUgSVhNTERPTUF0dHJpYnV0ZTsNCg0KI2xpbmUgOTIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3ht
bC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJWE1MRE9NRWxlbWVudCBJWE1MRE9NRWxlbWVu
dDsNCg0KI2xpbmUgOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBJWE1MRE9NVGV4dCBJWE1MRE9NVGV4dDsNCg0KI2xpbmUgMTA2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bXN4bWwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVhNTERPTUNvbW1lbnQgSVhNTERPTUNv
bW1lbnQ7DQoNCiNsaW5lIDExMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IElYTUxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gSVhNTERPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjsNCg0KI2xpbmUgMTIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgSVhNTERPTUNEQVRBU2VjdGlvbiBJWE1MRE9NQ0RBVEFTZWN0aW9uOw0K
DQojbGluZSAxMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVj
dCBJWE1MRE9NRG9jdW1lbnRUeXBlIElYTUxET01Eb2N1bWVudFR5cGU7DQoNCiNsaW5lIDEzNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxET01Ob3Rh
dGlvbiBJWE1MRE9NTm90YXRpb247DQoNCiNsaW5lIDE0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxET01FbnRpdHkgSVhNTERPTUVudGl0eTsNCg0K
I2xpbmUgMTQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qg
SVhNTERPTUVudGl0eVJlZmVyZW5jZSBJWE1MRE9NRW50aXR5UmVmZXJlbmNlOw0KDQojbGluZSAx
NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJWE1MRE9N
UGFyc2VFcnJvciBJWE1MRE9NUGFyc2VFcnJvcjsNCg0KI2xpbmUgMTYyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bXN4bWwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVhUTFJ1bnRpbWUgSVhUTFJ1bnRpbWU7
DQoNCiNsaW5lIDE2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IFhNTERPTURvY3VtZW50RXZlbnRzIFhNTERPTURvY3VtZW50RXZlbnRzOw0KDQojbGluZSAx
NzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBjbGFzcyBET01E
b2N1bWVudCBET01Eb2N1bWVudDsNCg0KDQojbGluZSAxODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5o
Ig0KDQojbGluZSAxODggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCg0KdHlwZWRl
ZiBjbGFzcyBET01GcmVlVGhyZWFkZWREb2N1bWVudCBET01GcmVlVGhyZWFkZWREb2N1bWVudDsN
Cg0KDQojbGluZSAxOTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQojbGluZSAyMDAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJWE1MSHR0cFJlcXVlc3Qg
SVhNTEh0dHBSZXF1ZXN0Ow0KDQojbGluZSAyMDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBjbGFzcyBYTUxIVFRQUmVxdWVzdCBYTUxIVFRQUmVxdWVzdDsNCg0K
DQojbGluZSAyMTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQojbGluZSAyMTkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtc3htbC5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBJWE1MRFNPQ29udHJvbCBJWE1M
RFNPQ29udHJvbDsNCg0KI2xpbmUgMjI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0K
DQoNCnR5cGVkZWYgY2xhc3MgWE1MRFNPQ29udHJvbCBYTUxEU09Db250cm9sOw0KDQoNCiNsaW5l
IDIzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCiNsaW5lIDIzOCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1z
eG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxFbGVtZW50Q29sbGVjdGlvbiBJWE1M
RWxlbWVudENvbGxlY3Rpb247DQoNCiNsaW5lIDI0NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxEb2N1bWVudCBJWE1MRG9jdW1lbnQ7DQoNCiNsaW5l
IDI1MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxE
b2N1bWVudDIgSVhNTERvY3VtZW50MjsNCg0KI2xpbmUgMjU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwu
aCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgSVhNTEVsZW1lbnQgSVhNTEVsZW1lbnQ7DQoNCiNs
aW5lIDI2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElY
TUxFbGVtZW50MiBJWE1MRWxlbWVudDI7DQoNCiNsaW5lIDI3MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1s
LmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IElYTUxBdHRyaWJ1dGUgSVhNTEF0dHJpYnV0ZTsN
Cg0KI2xpbmUgMjgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1
Y3QgSVhNTEVycm9yIElYTUxFcnJvcjsNCg0KI2xpbmUgMjg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwu
aCINCg0KDQoNCg0KDQoNCnR5cGVkZWYgY2xhc3MgWE1MRG9jdW1lbnQgWE1MRG9jdW1lbnQ7DQoN
Cg0KI2xpbmUgMjk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KI2xpbmUgMjk5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiew0KI2xpbmUgMzA5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJu
aW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDAxKSANCiNwcmFnbWEgb25jZQ0K
I3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDAxKSANCiNw
cmFnbWEgb25jZQ0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgd2FybmluZyhwb3ApDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQojcHJh
Z21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MjApIA0KI2xpbmUg
MzM1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5
DQoNCnR5cGVkZWYgc3RydWN0IF94bWxfZXJyb3INCiAgICB7DQogICAgdW5zaWduZWQgaW50IF9u
TGluZTsNCiAgICBCU1RSIF9wY2hCdWY7DQogICAgdW5zaWduZWQgaW50IF9jY2hCdWY7DQogICAg
dW5zaWduZWQgaW50IF9pY2g7DQogICAgQlNUUiBfcHN6Rm91bmQ7DQogICAgQlNUUiBfcHN6RXhw
ZWN0ZWQ7DQogICAgRFdPUkQgX3Jlc2VydmVkMTsNCiAgICBEV09SRCBfcmVzZXJ2ZWQyOw0KICAg
IH0gCVhNTF9FUlJPUjsNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfbXN4
bWxfMDAwMF8wMDAwX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExf
aXRmX21zeG1sXzAwMDBfMDAwMF92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCg0KIA0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCiNwcmFnbWEgcmVnaW9u
IERlc2t0b3AgRmFtaWx5DQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkNCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgIA0KZW51bSB0YWdET01Ob2RlVHlwZQ0KICAgIHsNCiAgICAgICAg
Tk9ERV9JTlZBTElECT0gMCwNCiAgICAgICAgTk9ERV9FTEVNRU5UCT0gKCBOT0RFX0lOVkFMSUQg
KyAxICkgLA0KICAgICAgICBOT0RFX0FUVFJJQlVURQk9ICggTk9ERV9FTEVNRU5UICsgMSApICwN
CiAgICAgICAgTk9ERV9URVhUCT0gKCBOT0RFX0FUVFJJQlVURSArIDEgKSAsDQogICAgICAgIE5P
REVfQ0RBVEFfU0VDVElPTgk9ICggTk9ERV9URVhUICsgMSApICwNCiAgICAgICAgTk9ERV9FTlRJ
VFlfUkVGRVJFTkNFCT0gKCBOT0RFX0NEQVRBX1NFQ1RJT04gKyAxICkgLA0KICAgICAgICBOT0RF
X0VOVElUWQk9ICggTk9ERV9FTlRJVFlfUkVGRVJFTkNFICsgMSApICwNCiAgICAgICAgTk9ERV9Q
Uk9DRVNTSU5HX0lOU1RSVUNUSU9OCT0gKCBOT0RFX0VOVElUWSArIDEgKSAsDQogICAgICAgIE5P
REVfQ09NTUVOVAk9ICggTk9ERV9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OICsgMSApICwNCiAgICAg
ICAgTk9ERV9ET0NVTUVOVAk9ICggTk9ERV9DT01NRU5UICsgMSApICwNCiAgICAgICAgTk9ERV9E
T0NVTUVOVF9UWVBFCT0gKCBOT0RFX0RPQ1VNRU5UICsgMSApICwNCiAgICAgICAgTk9ERV9ET0NV
TUVOVF9GUkFHTUVOVAk9ICggTk9ERV9ET0NVTUVOVF9UWVBFICsgMSApICwNCiAgICAgICAgTk9E
RV9OT1RBVElPTgk9ICggTk9ERV9ET0NVTUVOVF9GUkFHTUVOVCArIDEgKSANCiAgICB9IAlET01O
b2RlVHlwZTsNCg0KI2xpbmUgNDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCiNwcmFnbWEgZW5k
cmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkNCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5lIDQyOCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1zeG1sLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgIA0KZW51bSB0YWdYTUxFTUVNX1RZUEUNCiAgICB7DQogICAgICAgIFhNTEVMRU1UWVBF
X0VMRU1FTlQJPSAwLA0KICAgICAgICBYTUxFTEVNVFlQRV9URVhUCT0gKCBYTUxFTEVNVFlQRV9F
TEVNRU5UICsgMSApICwNCiAgICAgICAgWE1MRUxFTVRZUEVfQ09NTUVOVAk9ICggWE1MRUxFTVRZ
UEVfVEVYVCArIDEgKSAsDQogICAgICAgIFhNTEVMRU1UWVBFX0RPQ1VNRU5UCT0gKCBYTUxFTEVN
VFlQRV9DT01NRU5UICsgMSApICwNCiAgICAgICAgWE1MRUxFTVRZUEVfRFRECT0gKCBYTUxFTEVN
VFlQRV9ET0NVTUVOVCArIDEgKSAsDQogICAgICAgIFhNTEVMRU1UWVBFX1BJCT0gKCBYTUxFTEVN
VFlQRV9EVEQgKyAxICkgLA0KICAgICAgICBYTUxFTEVNVFlQRV9PVEhFUgk9ICggWE1MRUxFTVRZ
UEVfUEkgKyAxICkgDQogICAgfSAJWE1MRUxFTV9UWVBFOw0KDQoNCmV4dGVybiAiQyIgY29uc3Qg
SUlEIExJQklEX01TWE1MOw0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJ
SURfSVhNTERPTUltcGxlbWVudGF0aW9uOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3Bl
Yyh1dWlkKCIyOTMzQkY4Ri03QjM2LTExZDItQjIwRS0wMEMwNEY5ODNFNjAiKSkgX19kZWNsc3Bl
Yyhub3Z0YWJsZSkNCiAgICBJWE1MRE9NSW1wbGVtZW50YXRpb24gOiBwdWJsaWMgSURpc3BhdGNo
DQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwg
aGFzRmVhdHVyZSggDQogICAgICAgICAgICAgQlNUUiBmZWF0dXJlLA0KICAgICAgICAgICAgIEJT
VFIgdmVyc2lvbiwNCiAgICAgICAgICAgICBWQVJJQU5UX0JPT0wgKmhhc0ZlYXR1cmUpID0gMDsN
CiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNTc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUg
NTg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMi
IGNvbnN0IElJRCBJSURfSVhNTERPTU5vZGU7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xz
cGVjKHV1aWQoIjI5MzNCRjgwLTdCMzYtMTFkMi1CMjBFLTAwQzA0Rjk4M0U2MCIpKSBfX2RlY2xz
cGVjKG5vdnRhYmxlKQ0KICAgIElYTUxET01Ob2RlIDogcHVibGljIElEaXNwYXRjaA0KICAgIHsN
CiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9ub2Rl
TmFtZSggDQogICAgICAgICAgICAgQlNUUiAqbmFtZSkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X25vZGVWYWx1ZSggDQogICAgICAgICAgICAg
VkFSSUFOVCAqdmFsdWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQg
X19zdGRjYWxsIHB1dF9ub2RlVmFsdWUoIA0KICAgICAgICAgICAgIFZBUklBTlQgdmFsdWUpID0g
MDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9ub2Rl
VHlwZSggDQogICAgICAgICAgICAgRE9NTm9kZVR5cGUgKnR5cGUpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9wYXJlbnROb2RlKCANCiAgICAg
ICAgICAgICBJWE1MRE9NTm9kZSAqKnBhcmVudCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2NoaWxkTm9kZXMoIA0KICAgICAgICAgICAgIElY
TUxET01Ob2RlTGlzdCAqKmNoaWxkTGlzdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2ZpcnN0Q2hpbGQoIA0KICAgICAgICAgICAgIElYTUxE
T01Ob2RlICoqZmlyc3RDaGlsZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJF
U1VMVCBfX3N0ZGNhbGwgZ2V0X2xhc3RDaGlsZCggDQogICAgICAgICAgICAgSVhNTERPTU5vZGUg
KipsYXN0Q2hpbGQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGdldF9wcmV2aW91c1NpYmxpbmcoIA0KICAgICAgICAgICAgIElYTUxET01Ob2RlICoq
cHJldmlvdXNTaWJsaW5nKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxU
IF9fc3RkY2FsbCBnZXRfbmV4dFNpYmxpbmcoIA0KICAgICAgICAgICAgIElYTUxET01Ob2RlICoq
bmV4dFNpYmxpbmcpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGdldF9hdHRyaWJ1dGVzKCANCiAgICAgICAgICAgICBJWE1MRE9NTmFtZWROb2RlTWFw
ICoqYXR0cmlidXRlTWFwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxU
IF9fc3RkY2FsbCBpbnNlcnRCZWZvcmUoIA0KICAgICAgICAgICAgIElYTUxET01Ob2RlICpuZXdD
aGlsZCwNCiAgICAgICAgICAgICBWQVJJQU5UIHJlZkNoaWxkLA0KICAgICAgICAgICAgIElYTUxE
T01Ob2RlICoqb3V0TmV3Q2hpbGQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIHJlcGxhY2VDaGlsZCggDQogICAgICAgICAgICAgSVhNTERPTU5vZGUg
Km5ld0NoaWxkLA0KICAgICAgICAgICAgIElYTUxET01Ob2RlICpvbGRDaGlsZCwNCiAgICAgICAg
ICAgICBJWE1MRE9NTm9kZSAqKm91dE9sZENoaWxkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCByZW1vdmVDaGlsZCggDQogICAgICAgICAgICAgSVhN
TERPTU5vZGUgKmNoaWxkTm9kZSwNCiAgICAgICAgICAgICBJWE1MRE9NTm9kZSAqKm9sZENoaWxk
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBhcHBl
bmRDaGlsZCggDQogICAgICAgICAgICAgSVhNTERPTU5vZGUgKm5ld0NoaWxkLA0KICAgICAgICAg
ICAgIElYTUxET01Ob2RlICoqb3V0TmV3Q2hpbGQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGhhc0NoaWxkTm9kZXMoIA0KICAgICAgICAgICAgIFZB
UklBTlRfQk9PTCAqaGFzQ2hpbGQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldF9vd25lckRvY3VtZW50KCANCiAgICAgICAgICAgICBJWE1MRE9N
RG9jdW1lbnQgKipYTUxET01Eb2N1bWVudCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCAgSFJFU1VMVCBfX3N0ZGNhbGwgY2xvbmVOb2RlKCANCiAgICAgICAgICAgICBWQVJJQU5UX0JP
T0wgZGVlcCwNCiAgICAgICAgICAgICBJWE1MRE9NTm9kZSAqKmNsb25lUm9vdCkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X25vZGVUeXBlU3Ry
aW5nKCANCiAgICAgICAgICAgICBCU1RSICpub2RlVHlwZSkgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X3RleHQoIA0KICAgICAgICAgICAgIEJT
VFIgKnRleHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRj
YWxsIHB1dF90ZXh0KCANCiAgICAgICAgICAgICBCU1RSIHRleHQpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9zcGVjaWZpZWQoIA0KICAgICAg
ICAgICAgIFZBUklBTlRfQk9PTCAqaXNTcGVjaWZpZWQpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9kZWZpbml0aW9uKCANCiAgICAgICAgICAg
ICBJWE1MRE9NTm9kZSAqKmRlZmluaXRpb25Ob2RlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfbm9kZVR5cGVkVmFsdWUoIA0KICAgICAgICAg
ICAgIFZBUklBTlQgKnR5cGVkVmFsdWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
IEhSRVNVTFQgX19zdGRjYWxsIHB1dF9ub2RlVHlwZWRWYWx1ZSggDQogICAgICAgICAgICAgVkFS
SUFOVCB0eXBlZFZhbHVlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxU
IF9fc3RkY2FsbCBnZXRfZGF0YVR5cGUoIA0KICAgICAgICAgICAgIFZBUklBTlQgKmRhdGFUeXBl
TmFtZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwg
cHV0X2RhdGFUeXBlKCANCiAgICAgICAgICAgICBCU1RSIGRhdGFUeXBlTmFtZSkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X3htbCggDQogICAg
ICAgICAgICAgQlNUUiAqeG1sU3RyaW5nKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
ICBIUkVTVUxUIF9fc3RkY2FsbCB0cmFuc2Zvcm1Ob2RlKCANCiAgICAgICAgICAgICBJWE1MRE9N
Tm9kZSAqc3R5bGVzaGVldCwNCiAgICAgICAgICAgICBCU1RSICp4bWxTdHJpbmcpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHNlbGVjdE5vZGVzKCAN
CiAgICAgICAgICAgICBCU1RSIHF1ZXJ5U3RyaW5nLA0KICAgICAgICAgICAgIElYTUxET01Ob2Rl
TGlzdCAqKnJlc3VsdExpc3QpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNV
TFQgX19zdGRjYWxsIHNlbGVjdFNpbmdsZU5vZGUoIA0KICAgICAgICAgICAgIEJTVFIgcXVlcnlT
dHJpbmcsDQogICAgICAgICAgICAgSVhNTERPTU5vZGUgKipyZXN1bHROb2RlKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfcGFyc2VkKCANCiAg
ICAgICAgICAgICBWQVJJQU5UX0JPT0wgKmlzUGFyc2VkKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfbmFtZXNwYWNlVVJJKCANCiAgICAgICAg
ICAgICBCU1RSICpuYW1lc3BhY2VVUkkpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
IEhSRVNVTFQgX19zdGRjYWxsIGdldF9wcmVmaXgoIA0KICAgICAgICAgICAgIEJTVFIgKnByZWZp
eFN0cmluZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgZ2V0X2Jhc2VOYW1lKCANCiAgICAgICAgICAgICBCU1RSICpuYW1lU3RyaW5nKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCB0cmFuc2Zvcm1Ob2Rl
VG9PYmplY3QoIA0KICAgICAgICAgICAgIElYTUxET01Ob2RlICpzdHlsZXNoZWV0LA0KICAgICAg
ICAgICAgIFZBUklBTlQgb3V0cHV0T2JqZWN0KSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAg
DQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDgxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgMTA4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgi
DQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lYTUxET01Eb2N1
bWVudEZyYWdtZW50Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIzZWZh
YTQxMy0yNzJmLTExZDItODM2Zi0wMDAwZjg3YTc3ODIiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJWE1MRE9NRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBJWE1MRE9NTm9kZQ0KICAgIHsN
CiAgICBwdWJsaWM6DQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTQ2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCiNsaW5l
IDE0NzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAi
QyIgY29uc3QgSUlEIElJRF9JWE1MRE9NRG9jdW1lbnQ7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjI5MzNCRjgxLTdCMzYtMTFkMi1CMjBFLTAwQzA0Rjk4M0U2MCIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElYTUxET01Eb2N1bWVudCA6IHB1YmxpYyBJWE1MRE9N
Tm9kZQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRj
YWxsIGdldF9kb2N0eXBlKCANCiAgICAgICAgICAgICBJWE1MRE9NRG9jdW1lbnRUeXBlICoqZG9j
dW1lbnRUeXBlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBnZXRfaW1wbGVtZW50YXRpb24oIA0KICAgICAgICAgICAgIElYTUxET01JbXBsZW1lbnRh
dGlvbiAqKmltcGwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGdldF9kb2N1bWVudEVsZW1lbnQoIA0KICAgICAgICAgICAgIElYTUxET01FbGVtZW50
ICoqRE9NRWxlbWVudCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBf
X3N0ZGNhbGwgcHV0cmVmX2RvY3VtZW50RWxlbWVudCggDQogICAgICAgICAgICAgSVhNTERPTUVs
ZW1lbnQgKkRPTUVsZW1lbnQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNV
TFQgX19zdGRjYWxsIGNyZWF0ZUVsZW1lbnQoIA0KICAgICAgICAgICAgIEJTVFIgdGFnTmFtZSwN
CiAgICAgICAgICAgICBJWE1MRE9NRWxlbWVudCAqKmVsZW1lbnQpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
IA0KICAgICAgICAgICAgIElYTUxET01Eb2N1bWVudEZyYWdtZW50ICoqZG9jRnJhZykgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgY3JlYXRlVGV4dE5v
ZGUoIA0KICAgICAgICAgICAgIEJTVFIgZGF0YSwNCiAgICAgICAgICAgICBJWE1MRE9NVGV4dCAq
KnRleHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IGNyZWF0ZUNvbW1lbnQoIA0KICAgICAgICAgICAgIEJTVFIgZGF0YSwNCiAgICAgICAgICAgICBJ
WE1MRE9NQ29tbWVudCAqKmNvbW1lbnQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
IEhSRVNVTFQgX19zdGRjYWxsIGNyZWF0ZUNEQVRBU2VjdGlvbiggDQogICAgICAgICAgICAgQlNU
UiBkYXRhLA0KICAgICAgICAgICAgIElYTUxET01DREFUQVNlY3Rpb24gKipjZGF0YSkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgY3JlYXRlUHJvY2Vz
c2luZ0luc3RydWN0aW9uKCANCiAgICAgICAgICAgICBCU1RSIHRhcmdldCwNCiAgICAgICAgICAg
ICBCU1RSIGRhdGEsDQogICAgICAgICAgICAgSVhNTERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAq
KnBpKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBj
cmVhdGVBdHRyaWJ1dGUoIA0KICAgICAgICAgICAgIEJTVFIgbmFtZSwNCiAgICAgICAgICAgICBJ
WE1MRE9NQXR0cmlidXRlICoqYXR0cmlidXRlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBjcmVhdGVFbnRpdHlSZWZlcmVuY2UoIA0KICAgICAgICAg
ICAgIEJTVFIgbmFtZSwNCiAgICAgICAgICAgICBJWE1MRE9NRW50aXR5UmVmZXJlbmNlICoqZW50
aXR5UmVmKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2Fs
bCBnZXRFbGVtZW50c0J5VGFnTmFtZSggDQogICAgICAgICAgICAgQlNUUiB0YWdOYW1lLA0KICAg
ICAgICAgICAgIElYTUxET01Ob2RlTGlzdCAqKnJlc3VsdExpc3QpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGNyZWF0ZU5vZGUoIA0KICAgICAgICAg
ICAgIFZBUklBTlQgVHlwZSwNCiAgICAgICAgICAgICBCU1RSIG5hbWUsDQogICAgICAgICAgICAg
QlNUUiBuYW1lc3BhY2VVUkksDQogICAgICAgICAgICAgSVhNTERPTU5vZGUgKipub2RlKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBub2RlRnJvbUlE
KCANCiAgICAgICAgICAgICBCU1RSIGlkU3RyaW5nLA0KICAgICAgICAgICAgIElYTUxET01Ob2Rl
ICoqbm9kZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgbG9hZCggDQogICAgICAgICAgICAgVkFSSUFOVCB4bWxTb3VyY2UsDQogICAgICAgICAgICAg
VkFSSUFOVF9CT09MICppc1N1Y2Nlc3NmdWwpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9yZWFkeVN0YXRlKCANCiAgICAgICAgICAgICBsb25n
ICp2YWx1ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgZ2V0X3BhcnNlRXJyb3IoIA0KICAgICAgICAgICAgIElYTUxET01QYXJzZUVycm9yICoqZXJy
b3JPYmopID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IGdldF91cmwoIA0KICAgICAgICAgICAgIEJTVFIgKnVybFN0cmluZykgPSAwOw0KICAgICAgICAN
CiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2FzeW5jKCANCiAgICAgICAg
ICAgICBWQVJJQU5UX0JPT0wgKmlzQXN5bmMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIHB1dF9hc3luYyggDQogICAgICAgICAgICAgVkFSSUFOVF9C
T09MIGlzQXN5bmMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGFib3J0KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVT
VUxUIF9fc3RkY2FsbCBsb2FkWE1MKCANCiAgICAgICAgICAgICBCU1RSIGJzdHJYTUwsDQogICAg
ICAgICAgICAgVkFSSUFOVF9CT09MICppc1N1Y2Nlc3NmdWwpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHNhdmUoIA0KICAgICAgICAgICAgIFZBUklB
TlQgZGVzdGluYXRpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQg
X19zdGRjYWxsIGdldF92YWxpZGF0ZU9uUGFyc2UoIA0KICAgICAgICAgICAgIFZBUklBTlRfQk9P
TCAqaXNWYWxpZGF0aW5nKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxU
IF9fc3RkY2FsbCBwdXRfdmFsaWRhdGVPblBhcnNlKCANCiAgICAgICAgICAgICBWQVJJQU5UX0JP
T0wgaXNWYWxpZGF0aW5nKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxU
IF9fc3RkY2FsbCBnZXRfcmVzb2x2ZUV4dGVybmFscyggDQogICAgICAgICAgICAgVkFSSUFOVF9C
T09MICppc1Jlc29sdmluZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgcHV0X3Jlc29sdmVFeHRlcm5hbHMoIA0KICAgICAgICAgICAgIFZBUklBTlRf
Qk9PTCBpc1Jlc29sdmluZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgZ2V0X3ByZXNlcnZlV2hpdGVTcGFjZSggDQogICAgICAgICAgICAgVkFSSUFO
VF9CT09MICppc1ByZXNlcnZpbmcpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIHB1dF9wcmVzZXJ2ZVdoaXRlU3BhY2UoIA0KICAgICAgICAgICAgIFZB
UklBTlRfQk9PTCBpc1ByZXNlcnZpbmcpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
IEhSRVNVTFQgX19zdGRjYWxsIHB1dF9vbnJlYWR5c3RhdGVjaGFuZ2UoIA0KICAgICAgICAgICAg
IFZBUklBTlQgcmVhZHlzdGF0ZWNoYW5nZVNpbmspID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHB1dF9vbmRhdGFhdmFpbGFibGUoIA0KICAgICAgICAg
ICAgIFZBUklBTlQgb25kYXRhYXZhaWxhYmxlU2luaykgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgcHV0X29udHJhbnNmb3Jtbm9kZSggDQogICAgICAg
ICAgICAgVkFSSUFOVCBvbnRyYW5zZm9ybW5vZGVTaW5rKSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCIN
Cg0KDQoNCg0KI2xpbmUgMjIxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCg0KDQog
DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lYTUxET01Ob2RlTGlzdDsNCg0KDQogICAg
DQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMjkzM0JGODItN0IzNi0xMWQyLUIyMEUtMDBD
MDRGOTgzRTYwIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVhNTERPTU5vZGVMaXN0IDog
cHVibGljIElEaXNwYXRjaA0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldF9pdGVtKCANCiAgICAgICAgICAgICBsb25nIGluZGV4LA0KICAg
ICAgICAgICAgIElYTUxET01Ob2RlICoqbGlzdEl0ZW0pID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9sZW5ndGgoIA0KICAgICAgICAgICAgIGxv
bmcgKmxpc3RMZW5ndGgpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQg
X19zdGRjYWxsIG5leHROb2RlKCANCiAgICAgICAgICAgICBJWE1MRE9NTm9kZSAqKm5leHRJdGVt
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCByZXNl
dCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgZ2V0X19uZXdFbnVtKCANCiAgICAgICAgICAgICBJVW5rbm93biAqKnBwVW5rKSA9IDA7DQog
ICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAyMzc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgMjM4MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25z
dCBJSUQgSUlEX0lYTUxET01OYW1lZE5vZGVNYXA7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2Rl
Y2xzcGVjKHV1aWQoIjI5MzNCRjgzLTdCMzYtMTFkMi1CMjBFLTAwQzA0Rjk4M0U2MCIpKSBfX2Rl
Y2xzcGVjKG5vdnRhYmxlKQ0KICAgIElYTUxET01OYW1lZE5vZGVNYXAgOiBwdWJsaWMgSURpc3Bh
dGNoDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgZ2V0TmFtZWRJdGVtKCANCiAgICAgICAgICAgICBCU1RSIG5hbWUsDQogICAgICAgICAgICAg
SVhNTERPTU5vZGUgKipuYW1lZEl0ZW0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
IEhSRVNVTFQgX19zdGRjYWxsIHNldE5hbWVkSXRlbSggDQogICAgICAgICAgICAgSVhNTERPTU5v
ZGUgKm5ld0l0ZW0sDQogICAgICAgICAgICAgSVhNTERPTU5vZGUgKipuYW1lSXRlbSkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgcmVtb3ZlTmFtZWRJ
dGVtKCANCiAgICAgICAgICAgICBCU1RSIG5hbWUsDQogICAgICAgICAgICAgSVhNTERPTU5vZGUg
KipuYW1lZEl0ZW0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGdldF9pdGVtKCANCiAgICAgICAgICAgICBsb25nIGluZGV4LA0KICAgICAgICAgICAg
IElYTUxET01Ob2RlICoqbGlzdEl0ZW0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
IEhSRVNVTFQgX19zdGRjYWxsIGdldF9sZW5ndGgoIA0KICAgICAgICAgICAgIGxvbmcgKmxpc3RM
ZW5ndGgpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IGdldFF1YWxpZmllZEl0ZW0oIA0KICAgICAgICAgICAgIEJTVFIgYmFzZU5hbWUsDQogICAgICAg
ICAgICAgQlNUUiBuYW1lc3BhY2VVUkksDQogICAgICAgICAgICAgSVhNTERPTU5vZGUgKipxdWFs
aWZpZWRJdGVtKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCByZW1vdmVRdWFsaWZpZWRJdGVtKCANCiAgICAgICAgICAgICBCU1RSIGJhc2VOYW1lLA0K
ICAgICAgICAgICAgIEJTVFIgbmFtZXNwYWNlVVJJLA0KICAgICAgICAgICAgIElYTUxET01Ob2Rl
ICoqcXVhbGlmaWVkSXRlbSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgbmV4dE5vZGUoIA0KICAgICAgICAgICAgIElYTUxET01Ob2RlICoqbmV4dEl0
ZW0pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHJl
c2V0KCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBnZXRfX25ld0VudW0oIA0KICAgICAgICAgICAgIElVbmtub3duICoqcHBVbmspID0gMDsN
CiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2MTEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
c3htbC5oIg0KDQoNCg0KDQojbGluZSAyNjE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoN
Cg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVhNTERPTUNoYXJhY3RlckRh
dGE7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjI5MzNCRjg0LTdCMzYt
MTFkMi1CMjBFLTAwQzA0Rjk4M0U2MCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElYTUxE
T01DaGFyYWN0ZXJEYXRhIDogcHVibGljIElYTUxET01Ob2RlDQogICAgew0KICAgIHB1YmxpYzoN
CiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2RhdGEoIA0KICAgICAgICAg
ICAgIEJTVFIgKmRhdGEpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQg
X19zdGRjYWxsIHB1dF9kYXRhKCANCiAgICAgICAgICAgICBCU1RSIGRhdGEpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9sZW5ndGgoIA0KICAg
ICAgICAgICAgIGxvbmcgKmRhdGFMZW5ndGgpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIHN1YnN0cmluZ0RhdGEoIA0KICAgICAgICAgICAgIGxvbmcg
b2Zmc2V0LA0KICAgICAgICAgICAgIGxvbmcgY291bnQsDQogICAgICAgICAgICAgQlNUUiAqZGF0
YSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgYXBw
ZW5kRGF0YSggDQogICAgICAgICAgICAgQlNUUiBkYXRhKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBpbnNlcnREYXRhKCANCiAgICAgICAgICAgICBs
b25nIG9mZnNldCwNCiAgICAgICAgICAgICBCU1RSIGRhdGEpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGRlbGV0ZURhdGEoIA0KICAgICAgICAgICAg
IGxvbmcgb2Zmc2V0LA0KICAgICAgICAgICAgIGxvbmcgY291bnQpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHJlcGxhY2VEYXRhKCANCiAgICAgICAg
ICAgICBsb25nIG9mZnNldCwNCiAgICAgICAgICAgICBsb25nIGNvdW50LA0KICAgICAgICAgICAg
IEJTVFIgZGF0YSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzA4NyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1zeG1sLmgiDQoNCg0KDQoNCiNsaW5lIDMwOTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoN
Cg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JWE1MRE9NQXR0cmlidXRl
Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIyOTMzQkY4NS03QjM2LTEx
ZDItQjIwRS0wMEMwNEY5ODNFNjAiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJWE1MRE9N
QXR0cmlidXRlIDogcHVibGljIElYTUxET01Ob2RlDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAg
ICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X25hbWUoIA0KICAgICAgICAgICAgIEJT
VFIgKmF0dHJpYnV0ZU5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNV
TFQgX19zdGRjYWxsIGdldF92YWx1ZSggDQogICAgICAgICAgICAgVkFSSUFOVCAqYXR0cmlidXRl
VmFsdWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IHB1dF92YWx1ZSggDQogICAgICAgICAgICAgVkFSSUFOVCBhdHRyaWJ1dGVWYWx1ZSkgPSAwOw0K
ICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNTAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgMzUwNiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG1zeG1sLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lY
TUxET01FbGVtZW50Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIyOTMz
QkY4Ni03QjM2LTExZDItQjIwRS0wMEMwNEY5ODNFNjAiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJWE1MRE9NRWxlbWVudCA6IHB1YmxpYyBJWE1MRE9NTm9kZQ0KICAgIHsNCiAgICBwdWJs
aWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF90YWdOYW1lKCANCiAg
ICAgICAgICAgICBCU1RSICp0YWdOYW1lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
ICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRBdHRyaWJ1dGUoIA0KICAgICAgICAgICAgIEJTVFIgbmFt
ZSwNCiAgICAgICAgICAgICBWQVJJQU5UICp2YWx1ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgc2V0QXR0cmlidXRlKCANCiAgICAgICAgICAgICBC
U1RSIG5hbWUsDQogICAgICAgICAgICAgVkFSSUFOVCB2YWx1ZSkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgcmVtb3ZlQXR0cmlidXRlKCANCiAgICAg
ICAgICAgICBCU1RSIG5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNV
TFQgX19zdGRjYWxsIGdldEF0dHJpYnV0ZU5vZGUoIA0KICAgICAgICAgICAgIEJTVFIgbmFtZSwN
CiAgICAgICAgICAgICBJWE1MRE9NQXR0cmlidXRlICoqYXR0cmlidXRlTm9kZSkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgc2V0QXR0cmlidXRlTm9k
ZSggDQogICAgICAgICAgICAgSVhNTERPTUF0dHJpYnV0ZSAqRE9NQXR0cmlidXRlLA0KICAgICAg
ICAgICAgIElYTUxET01BdHRyaWJ1dGUgKiphdHRyaWJ1dGVOb2RlKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCByZW1vdmVBdHRyaWJ1dGVOb2RlKCAN
CiAgICAgICAgICAgICBJWE1MRE9NQXR0cmlidXRlICpET01BdHRyaWJ1dGUsDQogICAgICAgICAg
ICAgSVhNTERPTUF0dHJpYnV0ZSAqKmF0dHJpYnV0ZU5vZGUpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldEVsZW1lbnRzQnlUYWdOYW1lKCANCiAg
ICAgICAgICAgICBCU1RSIHRhZ05hbWUsDQogICAgICAgICAgICAgSVhNTERPTU5vZGVMaXN0ICoq
cmVzdWx0TGlzdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0
ZGNhbGwgbm9ybWFsaXplKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAg
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAzOTg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgMzk5MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJ
SUQgSUlEX0lYTUxET01UZXh0Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlk
KCIyOTMzQkY4Ny03QjM2LTExZDItQjIwRS0wMEMwNEY5ODNFNjAiKSkgX19kZWNsc3BlYyhub3Z0
YWJsZSkNCiAgICBJWE1MRE9NVGV4dCA6IHB1YmxpYyBJWE1MRE9NQ2hhcmFjdGVyRGF0YQ0KICAg
IHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHNwbGl0
VGV4dCggDQogICAgICAgICAgICAgbG9uZyBvZmZzZXQsDQogICAgICAgICAgICAgSVhNTERPTVRl
eHQgKipyaWdodEhhbmRUZXh0Tm9kZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNDQ0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCiNsaW5lIDQ0
NDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JWE1MRE9NQ29tbWVudDsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVj
bHNwZWModXVpZCgiMjkzM0JGODgtN0IzNi0xMWQyLUIyMEUtMDBDMDRGOTgzRTYwIikpIF9fZGVj
bHNwZWMobm92dGFibGUpDQogICAgSVhNTERPTUNvbW1lbnQgOiBwdWJsaWMgSVhNTERPTUNoYXJh
Y3RlckRhdGENCiAgICB7DQogICAgcHVibGljOg0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ4OTEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtc3htbC5oIg0KDQoNCg0KDQojbGluZSA0ODk2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCIN
Cg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVhNTERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgi
MjkzM0JGODktN0IzNi0xMWQyLUIyMEUtMDBDMDRGOTgzRTYwIikpIF9fZGVjbHNwZWMobm92dGFi
bGUpDQogICAgSVhNTERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiA6IHB1YmxpYyBJWE1MRE9NTm9k
ZQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IGdldF90YXJnZXQoIA0KICAgICAgICAgICAgIEJTVFIgKm5hbWUpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9kYXRhKCANCiAgICAgICAgICAg
ICBCU1RSICp2YWx1ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBf
X3N0ZGNhbGwgcHV0X2RhdGEoIA0KICAgICAgICAgICAgIEJTVFIgdmFsdWUpID0gMDsNCiAgICAg
ICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTMwNSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCiNsaW5lIDUzMTAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3ht
bC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JWE1MRE9N
Q0RBVEFTZWN0aW9uOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIyOTMz
QkY4QS03QjM2LTExZDItQjIwRS0wMEMwNEY5ODNFNjAiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkN
CiAgICBJWE1MRE9NQ0RBVEFTZWN0aW9uIDogcHVibGljIElYTUxET01UZXh0DQogICAgew0KICAg
IHB1YmxpYzoNCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NzYxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgNTc2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoN
Cg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lYTUxET01Eb2N1bWVu
dFR5cGU7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjI5MzNCRjhCLTdC
MzYtMTFkMi1CMjBFLTAwQzA0Rjk4M0U2MCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElY
TUxET01Eb2N1bWVudFR5cGUgOiBwdWJsaWMgSVhNTERPTU5vZGUNCiAgICB7DQogICAgcHVibGlj
Og0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfbmFtZSggDQogICAgICAg
ICAgICAgQlNUUiAqcm9vdE5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldF9lbnRpdGllcyggDQogICAgICAgICAgICAgSVhNTERPTU5hbWVk
Tm9kZU1hcCAqKmVudGl0eU1hcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJF
U1VMVCBfX3N0ZGNhbGwgZ2V0X25vdGF0aW9ucyggDQogICAgICAgICAgICAgSVhNTERPTU5hbWVk
Tm9kZU1hcCAqKm5vdGF0aW9uTWFwKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAg
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDYxNzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoN
Cg0KDQojbGluZSA2MTgwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KDQoNCiANCg0K
DQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVhNTERPTU5vdGF0aW9uOw0KDQoNCiAgICANCiAg
ICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIyOTMzQkY4Qy03QjM2LTExZDItQjIwRS0wMEMwNEY5
ODNFNjAiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJWE1MRE9NTm90YXRpb24gOiBwdWJs
aWMgSVhNTERPTU5vZGUNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVT
VUxUIF9fc3RkY2FsbCBnZXRfcHVibGljSWQoIA0KICAgICAgICAgICAgIFZBUklBTlQgKnB1Ymxp
Y0lEKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBn
ZXRfc3lzdGVtSWQoIA0KICAgICAgICAgICAgIFZBUklBTlQgKnN5c3RlbUlEKSA9IDA7DQogICAg
ICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NTc5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4
bWwuaCINCg0KDQoNCg0KI2xpbmUgNjU4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoN
Cg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lYTUxET01FbnRpdHk7DQoNCg0K
ICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjI5MzNCRjhELTdCMzYtMTFkMi1CMjBF
LTAwQzA0Rjk4M0U2MCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElYTUxET01FbnRpdHkg
OiBwdWJsaWMgSVhNTERPTU5vZGUNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFs
ICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfcHVibGljSWQoIA0KICAgICAgICAgICAgIFZBUklBTlQg
KnB1YmxpY0lEKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBnZXRfc3lzdGVtSWQoIA0KICAgICAgICAgICAgIFZBUklBTlQgKnN5c3RlbUlEKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfbm90YXRp
b25OYW1lKCANCiAgICAgICAgICAgICBCU1RSICpuYW1lKSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY5OTMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
c3htbC5oIg0KDQoNCg0KDQojbGluZSA2OTk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoN
Cg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVhNTERPTUVudGl0eVJlZmVy
ZW5jZTsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMjkzM0JGOEUtN0Iz
Ni0xMWQyLUIyMEUtMDBDMDRGOTgzRTYwIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVhN
TERPTUVudGl0eVJlZmVyZW5jZSA6IHB1YmxpYyBJWE1MRE9NTm9kZQ0KICAgIHsNCiAgICBwdWJs
aWM6DQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNzM3NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCiNsaW5lIDczODIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3Qg
SUlEIElJRF9JWE1MRE9NUGFyc2VFcnJvcjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNw
ZWModXVpZCgiM2VmYWE0MjYtMjcyZi0xMWQyLTgzNmYtMDAwMGY4N2E3NzgyIikpIF9fZGVjbHNw
ZWMobm92dGFibGUpDQogICAgSVhNTERPTVBhcnNlRXJyb3IgOiBwdWJsaWMgSURpc3BhdGNoDQog
ICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0
X2Vycm9yQ29kZSggDQogICAgICAgICAgICAgbG9uZyAqZXJyb3JDb2RlKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfdXJsKCANCiAgICAgICAg
ICAgICBCU1RSICp1cmxTdHJpbmcpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldF9yZWFzb24oIA0KICAgICAgICAgICAgIEJTVFIgKnJlYXNvblN0
cmluZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwg
Z2V0X3NyY1RleHQoIA0KICAgICAgICAgICAgIEJTVFIgKnNvdXJjZVN0cmluZykgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2xpbmUoIA0KICAg
ICAgICAgICAgIGxvbmcgKmxpbmVOdW1iZXIpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9saW5lcG9zKCANCiAgICAgICAgICAgICBsb25nICps
aW5lUG9zaXRpb24pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGdldF9maWxlcG9zKCANCiAgICAgICAgICAgICBsb25nICpmaWxlUG9zaXRpb24pID0g
MDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NTY3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgNzU3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoN
Cg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lYVExSdW50aW1lOw0K
DQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIzZWZhYTQyNS0yNzJmLTExZDIt
ODM2Zi0wMDAwZjg3YTc3ODIiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJWFRMUnVudGlt
ZSA6IHB1YmxpYyBJWE1MRE9NTm9kZQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIHVuaXF1ZUlEKCANCiAgICAgICAgICAgICBJWE1MRE9NTm9k
ZSAqcE5vZGUsDQogICAgICAgICAgICAgbG9uZyAqcElEKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBkZXB0aCggDQogICAgICAgICAgICAgSVhNTERP
TU5vZGUgKnBOb2RlLA0KICAgICAgICAgICAgIGxvbmcgKnBEZXB0aCkgPSAwOw0KICAgICAgICAN
CiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgY2hpbGROdW1iZXIoIA0KICAgICAg
ICAgICAgIElYTUxET01Ob2RlICpwTm9kZSwNCiAgICAgICAgICAgICBsb25nICpwTnVtYmVyKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBhbmNlc3Rv
ckNoaWxkTnVtYmVyKCANCiAgICAgICAgICAgICBCU1RSIGJzdHJOb2RlTmFtZSwNCiAgICAgICAg
ICAgICBJWE1MRE9NTm9kZSAqcE5vZGUsDQogICAgICAgICAgICAgbG9uZyAqcE51bWJlcikgPSAw
Ow0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgYWJzb2x1dGVD
aGlsZE51bWJlciggDQogICAgICAgICAgICAgSVhNTERPTU5vZGUgKnBOb2RlLA0KICAgICAgICAg
ICAgIGxvbmcgKnBOdW1iZXIpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNV
TFQgX19zdGRjYWxsIGZvcm1hdEluZGV4KCANCiAgICAgICAgICAgICBsb25nIGxJbmRleCwNCiAg
ICAgICAgICAgICBCU1RSIGJzdHJGb3JtYXQsDQogICAgICAgICAgICAgQlNUUiAqcGJzdHJGb3Jt
YXR0ZWRTdHJpbmcpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGZvcm1hdE51bWJlciggDQogICAgICAgICAgICAgZG91YmxlIGRibE51bWJlciwNCiAg
ICAgICAgICAgICBCU1RSIGJzdHJGb3JtYXQsDQogICAgICAgICAgICAgQlNUUiAqcGJzdHJGb3Jt
YXR0ZWRTdHJpbmcpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19z
dGRjYWxsIGZvcm1hdERhdGUoIA0KICAgICAgICAgICAgIFZBUklBTlQgdmFyRGF0ZSwNCiAgICAg
ICAgICAgICBCU1RSIGJzdHJGb3JtYXQsDQogICAgICAgICAgICAgVkFSSUFOVCB2YXJEZXN0TG9j
YWxlLA0KICAgICAgICAgICAgIEJTVFIgKnBic3RyRm9ybWF0dGVkU3RyaW5nKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBmb3JtYXRUaW1lKCANCiAg
ICAgICAgICAgICBWQVJJQU5UIHZhclRpbWUsDQogICAgICAgICAgICAgQlNUUiBic3RyRm9ybWF0
LA0KICAgICAgICAgICAgIFZBUklBTlQgdmFyRGVzdExvY2FsZSwNCiAgICAgICAgICAgICBCU1RS
ICpwYnN0ckZvcm1hdHRlZFN0cmluZykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgwNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0K
DQoNCg0KDQojbGluZSA4MDc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KDQoNCiAN
Cg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBESUlEX1hNTERPTURvY3VtZW50RXZlbnRzOw0KDQoN
Cg0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjNlZmFhNDI3LTI3MmYtMTFkMi04MzZmLTAw
MDBmODdhNzc4MiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIFhNTERPTURvY3VtZW50RXZl
bnRzIDogcHVibGljIElEaXNwYXRjaA0KICAgIHsNCiAgICB9Ow0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgODE5MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KI2xpbmUgODE5MyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBDTFNJRCBDTFNJRF9ET01E
b2N1bWVudDsNCg0KDQoNCmNsYXNzIF9fZGVjbHNwZWModXVpZCgiMjkzM0JGOTAtN0IzNi0xMWQy
LUIyMEUtMDBDMDRGOTgzRTYwIikpDQpET01Eb2N1bWVudDsNCiNsaW5lIDgyMDIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxtc3htbC5oIg0KDQpleHRlcm4gIkMiIGNvbnN0IENMU0lEIENMU0lEX0RPTUZyZWVUaHJl
YWRlZERvY3VtZW50Ow0KDQoNCg0KY2xhc3MgX19kZWNsc3BlYyh1dWlkKCIyOTMzQkY5MS03QjM2
LTExZDItQjIwRS0wMEMwNEY5ODNFNjAiKSkNCkRPTUZyZWVUaHJlYWRlZERvY3VtZW50Ow0KI2xp
bmUgODIxMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAi
QyIgY29uc3QgSUlEIElJRF9JWE1MSHR0cFJlcXVlc3Q7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIkVEOEMxMDhELTQzNDktMTFEMi05MUE0LTAwQzA0Rjc5NjlFOCIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElYTUxIdHRwUmVxdWVzdCA6IHB1YmxpYyBJRGlzcGF0
Y2gNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2Fs
bCBvcGVuKCANCiAgICAgICAgICAgICAgIEJTVFIgYnN0ck1ldGhvZCwNCiAgICAgICAgICAgICAg
IEJTVFIgYnN0clVybCwNCiAgICAgICAgICAgICBWQVJJQU5UIHZhckFzeW5jLA0KICAgICAgICAg
ICAgIFZBUklBTlQgYnN0clVzZXIsDQogICAgICAgICAgICAgVkFSSUFOVCBic3RyUGFzc3dvcmQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHNldFJl
cXVlc3RIZWFkZXIoIA0KICAgICAgICAgICAgICAgQlNUUiBic3RySGVhZGVyLA0KICAgICAgICAg
ICAgICAgQlNUUiBic3RyVmFsdWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldFJlc3BvbnNlSGVhZGVyKCANCiAgICAgICAgICAgICAgIEJTVFIg
YnN0ckhlYWRlciwNCiAgICAgICAgICAgICAgIEJTVFIgKnBic3RyVmFsdWUpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldEFsbFJlc3BvbnNlSGVh
ZGVycyggDQogICAgICAgICAgICAgICBCU1RSICpwYnN0ckhlYWRlcnMpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHNlbmQoIA0KICAgICAgICAgICAg
IFZBUklBTlQgdmFyQm9keSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgYWJvcnQoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwg
IEhSRVNVTFQgX19zdGRjYWxsIGdldF9zdGF0dXMoIA0KICAgICAgICAgICAgICAgbG9uZyAqcGxT
dGF0dXMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IGdldF9zdGF0dXNUZXh0KCANCiAgICAgICAgICAgICAgIEJTVFIgKnBic3RyU3RhdHVzKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfcmVzcG9u
c2VYTUwoIA0KICAgICAgICAgICAgICAgSURpc3BhdGNoICoqcHBCb2R5KSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfcmVzcG9uc2VUZXh0KCAN
CiAgICAgICAgICAgICAgIEJTVFIgKnBic3RyQm9keSkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X3Jlc3BvbnNlQm9keSggDQogICAgICAgICAg
ICAgICBWQVJJQU5UICpwdmFyQm9keSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAg
SFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X3Jlc3BvbnNlU3RyZWFtKCANCiAgICAgICAgICAgICAgIFZB
UklBTlQgKnB2YXJCb2R5KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxU
IF9fc3RkY2FsbCBnZXRfcmVhZHlTdGF0ZSggDQogICAgICAgICAgICAgICBsb25nICpwbFN0YXRl
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBwdXRf
b25yZWFkeXN0YXRlY2hhbmdlKCANCiAgICAgICAgICAgICAgIElEaXNwYXRjaCAqcFJlYWR5U3Rh
dGVTaW5rKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODQ3NCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCiNsaW5lIDg0NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5o
Ig0KDQoNCmV4dGVybiAiQyIgY29uc3QgQ0xTSUQgQ0xTSURfWE1MSFRUUFJlcXVlc3Q7DQoNCg0K
DQpjbGFzcyBfX2RlY2xzcGVjKHV1aWQoIkVEOEMxMDhFLTQzNDktMTFEMi05MUE0LTAwQzA0Rjc5
NjlFOCIpKQ0KWE1MSFRUUFJlcXVlc3Q7DQojbGluZSA4NDg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwu
aCINCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lYTUxEU09Db250
cm9sOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCIzMTBhZmE2Mi0wNTc1
LTExZDItOWNhOS0wMDYwYjBlYzNkMzkiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJWE1M
RFNPQ29udHJvbCA6IHB1YmxpYyBJRGlzcGF0Y2gNCiAgICB7DQogICAgcHVibGljOg0KICAgICAg
ICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfWE1MRG9jdW1lbnQoIA0KICAgICAgICAg
ICAgIElYTUxET01Eb2N1bWVudCAqKnBwRG9jKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0
dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBwdXRfWE1MRG9jdW1lbnQoIA0KICAgICAgICAgICAgIElY
TUxET01Eb2N1bWVudCAqcHBEb2MpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldF9KYXZhRFNPQ29tcGF0aWJsZSggDQogICAgICAgICAgICAgQk9P
TCAqZkphdmFEU09Db21wYXRpYmxlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBI
UkVTVUxUIF9fc3RkY2FsbCBwdXRfSmF2YURTT0NvbXBhdGlibGUoIA0KICAgICAgICAgICAgIEJP
T0wgZkphdmFEU09Db21wYXRpYmxlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBI
UkVTVUxUIF9fc3RkY2FsbCBnZXRfcmVhZHlTdGF0ZSggDQogICAgICAgICAgICAgbG9uZyAqc3Rh
dGUpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDg2NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoj
bGluZSA4NjU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQpleHRlcm4gIkMiIGNvbnN0IENM
U0lEIENMU0lEX1hNTERTT0NvbnRyb2w7DQoNCg0KDQpjbGFzcyBfX2RlY2xzcGVjKHV1aWQoIjU1
MGRkYTMwLTA1NDEtMTFkMi05Y2E5LTAwNjBiMGVjM2QzOSIpKQ0KWE1MRFNPQ29udHJvbDsNCiNs
aW5lIDg2NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4g
IkMiIGNvbnN0IElJRCBJSURfSVhNTEVsZW1lbnRDb2xsZWN0aW9uOw0KDQoNCiAgICANCiAgICBz
dHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI2NTcyNTU4MC05QjVELTExZDAtOUJGRS0wMEMwNEZDOTlD
OEUiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJWE1MRWxlbWVudENvbGxlY3Rpb24gOiBw
dWJsaWMgSURpc3BhdGNoDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJF
U1VMVCBfX3N0ZGNhbGwgcHV0X2xlbmd0aCggDQogICAgICAgICAgICAgbG9uZyB2KSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfbGVuZ3RoKCAN
CiAgICAgICAgICAgICBsb25nICpwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBI
UkVTVUxUIF9fc3RkY2FsbCBnZXRfX25ld0VudW0oIA0KICAgICAgICAgICAgIElVbmtub3duICoq
cHBVbmspID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IGl0ZW0oIA0KICAgICAgICAgICAgIFZBUklBTlQgdmFyMSwNCiAgICAgICAgICAgICBWQVJJQU5U
IHZhcjIsDQogICAgICAgICAgICAgSURpc3BhdGNoICoqcHBEaXNwKSA9IDA7DQogICAgICAgIA0K
ICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg4MjQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQojbGluZSA4ODI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwu
aCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVhNTERvY3Vt
ZW50Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJGNTJFMkI2MS0xOEEx
LTExZDEtQjEwNS0wMDgwNUY0OTkxNkIiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJWE1M
RG9jdW1lbnQgOiBwdWJsaWMgSURpc3BhdGNoDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAg
dmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X3Jvb3QoIA0KICAgICAgICAgICAgIElYTUxF
bGVtZW50ICoqcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0
ZGNhbGwgZ2V0X2ZpbGVTaXplKCANCiAgICAgICAgICAgICBCU1RSICpwKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfZmlsZU1vZGlmaWVkRGF0
ZSggDQogICAgICAgICAgICAgQlNUUiAqcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2ZpbGVVcGRhdGVkRGF0ZSggDQogICAgICAgICAgICAg
QlNUUiAqcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgZ2V0X1VSTCggDQogICAgICAgICAgICAgQlNUUiAqcCkgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgcHV0X1VSTCggDQogICAgICAgICAgICAgQlNU
UiBwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBn
ZXRfbWltZVR5cGUoIA0KICAgICAgICAgICAgIEJTVFIgKnApID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9yZWFkeVN0YXRlKCANCiAgICAgICAg
ICAgICBsb25nICpwbCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBf
X3N0ZGNhbGwgZ2V0X2NoYXJzZXQoIA0KICAgICAgICAgICAgIEJTVFIgKnApID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHB1dF9jaGFyc2V0KCANCiAg
ICAgICAgICAgICBCU1RSIHApID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNV
TFQgX19zdGRjYWxsIGdldF92ZXJzaW9uKCANCiAgICAgICAgICAgICBCU1RSICpwKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfZG9jdHlwZSgg
DQogICAgICAgICAgICAgQlNUUiAqcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAg
SFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2R0ZFVSTCggDQogICAgICAgICAgICAgQlNUUiAqcCkgPSAw
Ow0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgY3JlYXRlRWxl
bWVudCggDQogICAgICAgICAgICAgVkFSSUFOVCB2VHlwZSwNCiAgICAgICAgICAgICBWQVJJQU5U
IHZhcjEsDQogICAgICAgICAgICAgSVhNTEVsZW1lbnQgKipwcEVsZW0pID0gMDsNCiAgICAgICAg
DQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA5MDg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xp
bmUgOTA5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBJSUQgSUlEX0lYTUxEb2N1bWVudDI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjJCOERFMkZFLThEMkQtMTFkMS1CMkZDLTAwQzA0RkQ5MTVBOSIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElYTUxEb2N1bWVudDIgOiBwdWJsaWMgSURpc3BhdGNo
DQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwg
Z2V0X3Jvb3QoIA0KICAgICAgICAgICAgIElYTUxFbGVtZW50MiAqKnApID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9maWxlU2l6ZSggDQogICAg
ICAgICAgICAgQlNUUiAqcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgZ2V0X2ZpbGVNb2RpZmllZERhdGUoIA0KICAgICAgICAgICAgIEJTVFIgKnAp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9m
aWxlVXBkYXRlZERhdGUoIA0KICAgICAgICAgICAgIEJTVFIgKnApID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9VUkwoIA0KICAgICAgICAgICAg
IEJTVFIgKnApID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRj
YWxsIHB1dF9VUkwoIA0KICAgICAgICAgICAgIEJTVFIgcCkgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X21pbWVUeXBlKCANCiAgICAgICAgICAg
ICBCU1RSICpwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBnZXRfcmVhZHlTdGF0ZSggDQogICAgICAgICAgICAgbG9uZyAqcGwpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9jaGFyc2V0KCANCiAg
ICAgICAgICAgICBCU1RSICpwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVT
VUxUIF9fc3RkY2FsbCBwdXRfY2hhcnNldCggDQogICAgICAgICAgICAgQlNUUiBwKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfdmVyc2lvbigg
DQogICAgICAgICAgICAgQlNUUiAqcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAg
SFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2RvY3R5cGUoIA0KICAgICAgICAgICAgIEJTVFIgKnApID0g
MDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9kdGRV
UkwoIA0KICAgICAgICAgICAgIEJTVFIgKnApID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIGNyZWF0ZUVsZW1lbnQoIA0KICAgICAgICAgICAgIFZBUklB
TlQgdlR5cGUsDQogICAgICAgICAgICAgVkFSSUFOVCB2YXIxLA0KICAgICAgICAgICAgIElYTUxF
bGVtZW50MiAqKnBwRWxlbSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgZ2V0X2FzeW5jKCANCiAgICAgICAgICAgICBWQVJJQU5UX0JPT0wgKnBmKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBwdXRfYXN5
bmMoIA0KICAgICAgICAgICAgIFZBUklBTlRfQk9PTCBmKSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkzNzIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxt
c3htbC5oIg0KDQoNCg0KDQojbGluZSA5Mzc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoN
Cg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVhNTEVsZW1lbnQ7DQoNCg0K
ICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjNGN0YzMUFDLUUxNUYtMTFkMC05QzI1
LTAwQzA0RkM5OUM4RSIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElYTUxFbGVtZW50IDog
cHVibGljIElEaXNwYXRjaA0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldF90YWdOYW1lKCANCiAgICAgICAgICAgICBCU1RSICpwKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBwdXRfdGFnTmFt
ZSggDQogICAgICAgICAgICAgQlNUUiBwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
ICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfcGFyZW50KCANCiAgICAgICAgICAgICBJWE1MRWxlbWVu
dCAqKnBwUGFyZW50KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9f
c3RkY2FsbCBzZXRBdHRyaWJ1dGUoIA0KICAgICAgICAgICAgIEJTVFIgc3RyUHJvcGVydHlOYW1l
LA0KICAgICAgICAgICAgIFZBUklBTlQgUHJvcGVydHlWYWx1ZSkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0QXR0cmlidXRlKCANCiAgICAgICAg
ICAgICBCU1RSIHN0clByb3BlcnR5TmFtZSwNCiAgICAgICAgICAgICBWQVJJQU5UICpQcm9wZXJ0
eVZhbHVlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2Fs
bCByZW1vdmVBdHRyaWJ1dGUoIA0KICAgICAgICAgICAgIEJTVFIgc3RyUHJvcGVydHlOYW1lKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfY2hp
bGRyZW4oIA0KICAgICAgICAgICAgIElYTUxFbGVtZW50Q29sbGVjdGlvbiAqKnBwKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfdHlwZSggDQog
ICAgICAgICAgICAgbG9uZyAqcGxUeXBlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
ICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfdGV4dCggDQogICAgICAgICAgICAgQlNUUiAqcCkgPSAw
Ow0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgcHV0X3RleHQo
IA0KICAgICAgICAgICAgIEJTVFIgcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAg
SFJFU1VMVCBfX3N0ZGNhbGwgYWRkQ2hpbGQoIA0KICAgICAgICAgICAgIElYTUxFbGVtZW50ICpw
Q2hpbGRFbGVtLA0KICAgICAgICAgICAgbG9uZyBsSW5kZXgsDQogICAgICAgICAgICBsb25nIGxS
ZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNh
bGwgcmVtb3ZlQ2hpbGQoIA0KICAgICAgICAgICAgIElYTUxFbGVtZW50ICpwQ2hpbGRFbGVtKSA9
IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgOTYyMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCiNsaW5lIDk2MjUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3Qg
SUlEIElJRF9JWE1MRWxlbWVudDI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1
aWQoIjJCOERFMkZGLThEMkQtMTFkMS1CMkZDLTAwQzA0RkQ5MTVBOSIpKSBfX2RlY2xzcGVjKG5v
dnRhYmxlKQ0KICAgIElYTUxFbGVtZW50MiA6IHB1YmxpYyBJRGlzcGF0Y2gNCiAgICB7DQogICAg
cHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBnZXRfdGFnTmFtZSgg
DQogICAgICAgICAgICAgQlNUUiAqcCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAg
SFJFU1VMVCBfX3N0ZGNhbGwgcHV0X3RhZ05hbWUoIA0KICAgICAgICAgICAgIEJTVFIgcCkgPSAw
Ow0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X3BhcmVu
dCggDQogICAgICAgICAgICAgSVhNTEVsZW1lbnQyICoqcHBQYXJlbnQpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHNldEF0dHJpYnV0ZSggDQogICAg
ICAgICAgICAgQlNUUiBzdHJQcm9wZXJ0eU5hbWUsDQogICAgICAgICAgICAgVkFSSUFOVCBQcm9w
ZXJ0eVZhbHVlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBnZXRBdHRyaWJ1dGUoIA0KICAgICAgICAgICAgIEJTVFIgc3RyUHJvcGVydHlOYW1lLA0K
ICAgICAgICAgICAgIFZBUklBTlQgKlByb3BlcnR5VmFsdWUpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIHJlbW92ZUF0dHJpYnV0ZSggDQogICAgICAg
ICAgICAgQlNUUiBzdHJQcm9wZXJ0eU5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF9jaGlsZHJlbiggDQogICAgICAgICAgICAgSVhNTEVs
ZW1lbnRDb2xsZWN0aW9uICoqcHApID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIGdldF90eXBlKCANCiAgICAgICAgICAgICBsb25nICpwbFR5cGUpID0g
MDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIGdldF90ZXh0
KCANCiAgICAgICAgICAgICBCU1RSICpwKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFs
ICBIUkVTVUxUIF9fc3RkY2FsbCBwdXRfdGV4dCggDQogICAgICAgICAgICAgQlNUUiBwKSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBhZGRDaGlsZCgg
DQogICAgICAgICAgICAgSVhNTEVsZW1lbnQyICpwQ2hpbGRFbGVtLA0KICAgICAgICAgICAgbG9u
ZyBsSW5kZXgsDQogICAgICAgICAgICBsb25nIGxSZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgcmVtb3ZlQ2hpbGQoIA0KICAgICAgICAg
ICAgIElYTUxFbGVtZW50MiAqcENoaWxkRWxlbSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X2F0dHJpYnV0ZXMoIA0KICAgICAgICAgICAgIElY
TUxFbGVtZW50Q29sbGVjdGlvbiAqKnBwKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQog
ICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5ODc4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgOTg4MyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1s
LmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lYTUxBdHRy
aWJ1dGU7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIkQ0RDRBMEZDLTNC
NzMtMTFkMS1CMkI0LTAwQzA0RkI5MjU5NiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElY
TUxBdHRyaWJ1dGUgOiBwdWJsaWMgSURpc3BhdGNoDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAg
ICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgZ2V0X25hbWUoIA0KICAgICAgICAgICAgIEJT
VFIgKm4pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IGdldF92YWx1ZSggDQogICAgICAgICAgICAgQlNUUiAqdikgPSAwOw0KICAgICAgICANCiAgICB9
Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTAwMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCg0KDQojbGluZSAxMDAy
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQoNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBj
b25zdCBJSUQgSUlEX0lYTUxFcnJvcjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWMo
dXVpZCgiOTQ4QzVBRDMtQzU4RC0xMWQwLTlDMEItMDBDMDRGQzk5QzhFIikpIF9fZGVjbHNwZWMo
bm92dGFibGUpDQogICAgSVhNTEVycm9yIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1
YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRFcnJvckluZm8oIA0K
ICAgICAgICAgICAgWE1MX0VSUk9SICpwRXJyb3JSZXR1cm4pID0gMDsNCiAgICAgICAgDQogICAg
fTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDEwMDk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbXN4bWwuaCINCg0KDQoNCg0KI2xpbmUgMTAx
MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQoNCmV4dGVybiAiQyIgY29uc3QgQ0xTSUQgQ0xT
SURfWE1MRG9jdW1lbnQ7DQoNCg0KDQpjbGFzcyBfX2RlY2xzcGVjKHV1aWQoIkNGQzM5OUFGLUQ4
NzYtMTFkMC05QzEwLTAwQzA0RkM5OUM4RSIpKQ0KWE1MRG9jdW1lbnQ7DQojbGluZSAxMDExMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXG1zeG1sLmgiDQojbGluZSAxMDExMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgi
DQoNCg0KIA0KDQojbGluZSAxMDExOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1sLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI2xpbmUgMTAxMjIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxtc3htbC5oIg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfbXN4bWxfMDAw
MF8wMDAxX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX21z
eG1sXzAwMDBfMDAwMV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCg0KfQ0KI2xpbmUgMTAxMzQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxtc3htbC5oIg0KDQojbGluZSAxMDEzNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1zeG1s
LmgiDQoNCg0KI2xpbmUgNDMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KZXh0ZXJuICJD
InsNCiNsaW5lIDQzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBjb21tZW50KGxpYiwidXVpZC5saWIiKQ0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0
ODIwKSANCiNsaW5lIDQ2NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBJSUQgQ0xTSURfU0JTX1N0ZFVSTE1vbmlrZXI7ICANCmV4dGVybiAiQyIgY29uc3Qg
SUlEIENMU0lEX1NCU19IdHRwUHJvdG9jb2w7ICAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJ
RF9TQlNfRnRwUHJvdG9jb2w7ICAgIA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfU0JTX0dv
cGhlclByb3RvY29sOyANCmV4dGVybiAiQyIgY29uc3QgSUlEIENMU0lEX1NCU19IdHRwU1Byb3Rv
Y29sOyAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9TQlNfRmlsZVByb3RvY29sOyAgIA0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfU0JTX01rUHJvdG9jb2w7ICAgICANCmV4dGVybiAi
QyIgY29uc3QgSUlEIENMU0lEX1NCU19VcmxNa0JpbmRDdHg7ICAgDQpleHRlcm4gIkMiIGNvbnN0
IElJRCBDTFNJRF9TQlNfU29mdERpc3RFeHQ7ICANCmV4dGVybiAiQyIgY29uc3QgSUlEIENMU0lE
X1NCU19DZGxQcm90b2NvbDsgICAgICAgICAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9T
QlNfQ2xhc3NJbnN0YWxsRmlsdGVyOyAgIA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfU0JT
X0ludGVybmV0U2VjdXJpdHlNYW5hZ2VyOyAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9T
QlNfSW50ZXJuZXRab25lTWFuYWdlcjsgIA0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0
IElJRCBJSURfSUFzeW5jTW9uaWtlcjsgICAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9T
dGRVUkxNb25pa2VyOyAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9IdHRwUHJvdG9jb2w7
ICAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9GdHBQcm90b2NvbDsgICAgDQpleHRlcm4g
IkMiIGNvbnN0IElJRCBDTFNJRF9Hb3BoZXJQcm90b2NvbDsgDQpleHRlcm4gIkMiIGNvbnN0IElJ
RCBDTFNJRF9IdHRwU1Byb3RvY29sOyAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9GaWxl
UHJvdG9jb2w7ICAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9SZXNQcm90b2NvbDsgICAg
DQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9BYm91dFByb3RvY29sOyAgDQpleHRlcm4gIkMi
IGNvbnN0IElJRCBDTFNJRF9KU1Byb3RvY29sOyAgDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJ
RF9NYWlsdG9Qcm90b2NvbDsgIA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfSUU0X1BST1RP
Q09MUzsgIA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfTWtQcm90b2NvbDsgICAgIA0KZXh0
ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfU3RkVVJMUHJvdG9jb2w7IA0KZXh0ZXJuICJDIiBjb25z
dCBJSUQgQ0xTSURfVEJBdXRoUHJvdG9jb2w7IA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURf
VXJsTWtCaW5kQ3R4OyAgIA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfQ2RsUHJvdG9jb2w7
ICAgICAgICAgIA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgQ0xTSURfQ2xhc3NJbnN0YWxsRmlsdGVy
OyAgIA0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lBc3luY0JpbmRDdHg7ICAgIA0KIA0KDQoN
Cg0KDQoNCg0KIA0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVVUkxNb25pa2Vy
KCAgTFBNT05JS0VSIHBNa0N0eCwgICBMUENXU1RSIHN6VVJMLCAgTFBNT05JS0VSICAqIHBwbWsp
OyAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRlVVJMTW9u
aWtlckV4KCAgTFBNT05JS0VSIHBNa0N0eCwgICBMUENXU1RSIHN6VVJMLCAgTFBNT05JS0VSICAq
IHBwbWssIERXT1JEIGR3RmxhZ3MpOyAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBf
X3N0ZGNhbGwgR2V0Q2xhc3NVUkwoICBMUENXU1RSIHN6VVJMLCAgIENMU0lEICpwQ2xzSUQpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJF
U1VMVCBfX3N0ZGNhbGwgQ3JlYXRlQXN5bmNCaW5kQ3R4KERXT1JEIHJlc2VydmVkLCAgIElCaW5k
U3RhdHVzQ2FsbGJhY2sgKnBCU0NiLCAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSUVudW1GT1JNQVRFVEMgKnBFRmV0YywgIElCaW5kQ3R4
ICoqcHBCQyk7ICAgICAgICAgICAgICAgICAgIA0KDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRj
YWxsIENyZWF0ZVVSTE1vbmlrZXJFeDIoICBMUE1PTklLRVIgcE1rQ3R4LCAgIElVcmkqIHBVcmks
ICBMUE1PTklLRVIgICogcHBtaywgRFdPUkQgZHdGbGFncyk7ICAgICAgICAgICAgIA0KI2xpbmUg
NTM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxs
IENyZWF0ZUFzeW5jQmluZEN0eEV4KCAgSUJpbmRDdHggKnBiYywgRFdPUkQgZHdPcHRpb25zLCAg
IElCaW5kU3RhdHVzQ2FsbGJhY2sgKnBCU0NiLCAgIElFbnVtRk9STUFURVRDICpwRW51bSwgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJpbmRDdHggKipwcEJDLCBEV09SRCByZXNl
cnZlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgTWtQYXJzZURpc3BsYXlOYW1lRXgoICBJ
QmluZEN0eCAqcGJjLCAgIExQQ1dTVFIgc3pEaXNwbGF5TmFtZSwgICAgIFVMT05HICpwY2hFYXRl
biwgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUE1PTklLRVIg
KnBwbWspOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVy
biAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgUmVnaXN0ZXJCaW5kU3RhdHVzQ2FsbGJhY2soICBMUEJD
IHBCQywgICBJQmluZFN0YXR1c0NhbGxiYWNrICpwQlNDYiwgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCaW5kU3RhdHVzQ2FsbGJhY2sqKiAg
cHBCU0NCUHJldiwgRFdPUkQgZHdSZXNlcnZlZCk7ICAgICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxU
IF9fc3RkY2FsbCBSZXZva2VCaW5kU3RhdHVzQ2FsbGJhY2soICBMUEJDIHBCQywgICBJQmluZFN0
YXR1c0NhbGxiYWNrICpwQlNDYik7ICAgICAgICAgICAgICAgICAgICAgIA0KZXh0ZXJuICJDIiBI
UkVTVUxUIF9fc3RkY2FsbCBHZXRDbGFzc0ZpbGVPck1pbWUoICBMUEJDIHBCQywgICBMUENXU1RS
IHN6RmlsZW5hbWUsICAgTFBWT0lEIHBCdWZmZXIsIERXT1JEIGNiU2l6ZSwgICBMUENXU1RSIHN6
TWltZSwgRFdPUkQgZHdSZXNlcnZlZCwgICBDTFNJRCAqcGNsc2lkKTsgDQpleHRlcm4gIkMiIEhS
RVNVTFQgX19zdGRjYWxsIElzVmFsaWRVUkwoICBMUEJDIHBCQywgICBMUENXU1RSIHN6VVJMLCBE
V09SRCBkd1Jlc2VydmVkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpleHRlcm4g
IkMiIEhSRVNVTFQgX19zdGRjYWxsIENvR2V0Q2xhc3NPYmplY3RGcm9tVVJMKCAgIGNvbnN0IElJ
RCAmIHJDTEFTU0lELA0KICAgICAgICAgICAgICBMUENXU1RSIHN6Q09ERSwgRFdPUkQgZHdGaWxl
VmVyc2lvbk1TLCANCiAgICAgICAgICAgIERXT1JEIGR3RmlsZVZlcnNpb25MUywgICBMUENXU1RS
IHN6VFlQRSwNCiAgICAgICAgICAgICAgTFBCSU5EQ1RYIHBCaW5kQ3R4LCBEV09SRCBkd0Nsc0Nv
bnRleHQsDQogICAgICAgICAgICAgIExQVk9JRCBwdlJlc2VydmVkLCBjb25zdCBJSUQgJiByaWlk
LCAgTFBWT0lEICogcHB2KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgSUVJbnN0YWxs
U2NvcGUoICBMUERXT1JEIHBkd1Njb3BlKTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwg
RmF1bHRJbklFRmVhdHVyZSggSFdORCBoV25kLA0KICAgICAgICAgICAgICB1Q0xTU1BFQyAqcENs
YXNzU3BlYywNCiAgICAgICAgICAgICAgUVVFUllDT05URVhUICpwUXVlcnksIERXT1JEIGR3Rmxh
Z3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAi
QyIgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0Q29tcG9uZW50SURGcm9tQ0xTU1BFQyggIHVDTFNTUEVD
ICpwQ2xhc3NzcGVjLA0KICAgICAgICAgICAgIExQU1RSICogcHBzekNvbXBvbmVudElEKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQogDQoNCmV4dGVybiAi
QyIgSFJFU1VMVCBfX3N0ZGNhbGwgSXNBc3luY01vbmlrZXIoICBJTW9uaWtlciogcG1rKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpleHRl
cm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIENyZWF0ZVVSTEJpbmRpbmcoTFBDV1NUUiBscHN6VXJs
LCAgIElCaW5kQ3R4ICpwYmMsICAgSUJpbmRpbmcgKipwcEJkZyk7DQogDQpleHRlcm4gIkMiIEhS
RVNVTFQgX19zdGRjYWxsIFJlZ2lzdGVyTWVkaWFUeXBlcyggICAgVUlOVCBjdHlwZXMsICAgY29u
c3QgTFBDU1RSKiByZ3N6VHlwZXMsICAgQ0xJUEZPUk1BVCogcmdjZlR5cGVzKTsgICAgICAgICAg
ICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgRmluZE1lZGlhVHlwZSggIExQQ1NUUiBy
Z3N6VHlwZXMsICAgQ0xJUEZPUk1BVCogcmdjZlR5cGVzKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRlRm9y
bWF0RW51bWVyYXRvciggICAgIFVJTlQgY2ZtdGV0YywgICBGT1JNQVRFVEMqIHJnZm10ZXRjLCAg
SUVudW1GT1JNQVRFVEMqKiBwcGVudW1mbXRldGMpOyANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0
ZGNhbGwgUmVnaXN0ZXJGb3JtYXRFbnVtZXJhdG9yKCAgTFBCQyBwQkMsICAgSUVudW1GT1JNQVRF
VEMgKnBFRmV0YywgRFdPUkQgcmVzZXJ2ZWQpOyAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VM
VCBfX3N0ZGNhbGwgUmV2b2tlRm9ybWF0RW51bWVyYXRvciggIExQQkMgcEJDLCAgIElFbnVtRk9S
TUFURVRDICpwRUZldGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIg
SFJFU1VMVCBfX3N0ZGNhbGwgUmVnaXN0ZXJNZWRpYVR5cGVDbGFzcyggIExQQkMgcEJDLCAgICAg
VUlOVCBjdHlwZXMsICAgY29uc3QgTFBDU1RSKiByZ3N6VHlwZXMsICAgIENMU0lEICpyZ2Nsc0lE
LCBEV09SRCByZXNlcnZlZCk7ICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBGaW5k
TWVkaWFUeXBlQ2xhc3MoICBMUEJDIHBCQywgICBMUENTVFIgc3pUeXBlLCAgIENMU0lEICpwY2xz
SUQsIERXT1JEIHJlc2VydmVkKTsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KI2xpbmUgNTc4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdp
b24gQXBwbGljYXRpb24gRmFtaWx5DQoNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVXJs
TWtTZXRTZXNzaW9uT3B0aW9uKERXT1JEIGR3T3B0aW9uLCAgIExQVk9JRCBwQnVmZmVyLCBEV09S
RCBkd0J1ZmZlckxlbmd0aCwgICBEV09SRCBkd1Jlc2VydmVkKTsgICAgICAgDQpleHRlcm4gIkMi
IEhSRVNVTFQgX19zdGRjYWxsIFVybE1rR2V0U2Vzc2lvbk9wdGlvbihEV09SRCBkd09wdGlvbiwg
ICBMUFZPSUQgcEJ1ZmZlciwgRFdPUkQgZHdCdWZmZXJMZW5ndGgsICAgRFdPUkQgKnBkd0J1ZmZl
ckxlbmd0aE91dCwgICBEV09SRCBkd1Jlc2VydmVkKTsgICAgICAgDQojbGluZSA1ODQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1cmxtb24uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBEZXNr
dG9wIEZhbWlseQ0KDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIEZpbmRNaW1lRnJvbURh
dGEoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIExQQkMgICAgcEJDLCAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiBwd3pVcmwsICAgICAgICAg
ICAgICAgIA0KICAgICAgTFBWT0lEICBwQnVmZmVyLCAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICBjYlNpemUsICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSIHB3ek1pbWVQcm9wb3NlZCwgICAgICAg
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCAgIGR3TWltZUZsYWdzLCAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RSICAqcHB3ek1pbWVPdXQs
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICBkd1Jlc2VydmVkKTsg
ICAgICAgICAgIA0KDQoNCg0KDQoNCiNsaW5lIDYwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgT2J0YWluVXNlckFnZW50U3Ry
aW5nKCAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEV09SRCBkd09wdGlvbiwgDQogICAgICAgICBMUFNUUiBwc3pVQU91
dCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEICpjYlNpemUpOyAN
CmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ29tcGFyZVNlY3VyaXR5SWRzKCAgQllURSog
cGJTZWN1cml0eUlkMSwgICBEV09SRCBkd0xlbjEsICAgQllURSogcGJTZWN1cml0eUlkMiwgICBE
V09SRCBkd0xlbjIsICAgRFdPUkQgZHdSZXNlcnZlZCk7ICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxU
IF9fc3RkY2FsbCBDb21wYXRGbGFnc0Zyb21DbHNpZCggIENMU0lEICpwY2xzaWQsICAgTFBEV09S
RCBwZHdDb21wYXRGbGFncywgICBMUERXT1JEIHBkd01pc2NTdGF0dXNGbGFncyk7ICAgICAgICAg
ICAgIA0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDYz
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KIA0KDQoNCg0KDQoNCg0KI2xpbmUgNjQzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KI2xpbmUgNjQ2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgi
DQojbGluZSA2NDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KI2xpbmUgNzA3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXJsbW9uLmgiDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc2MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NzIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx1cmxtb24uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojcHJhZ21hIHJlZ2lvbiBE
ZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZf
dXJsbW9uXzAwMDBfMDAwMF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19N
SURMX2l0Zl91cmxtb25fMDAwMF8wMDAwX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0
eXBlZGVmICAgICBJUGVyc2lzdE1vbmlrZXIgKkxQUEVSU0lTVE1PTklLRVI7DQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBJSUQgSUlEX0lQZXJzaXN0TW9uaWtlcjsNCg0KDQogICAgDQogICAgc3RydWN0
IF9fZGVjbHNwZWModXVpZCgiNzllYWM5YzktYmFmOS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikp
IF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVBlcnNpc3RNb25pa2VyIDogcHVibGljIElVbmtu
b3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRDbGFzc0lEKCANCiAgICAgICAgICAgICAgIENMU0lEICpwQ2xhc3NJRCkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBJc0RpcnR5KCB2b2lkKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIExvYWQoIA0K
ICAgICAgICAgICAgIEJPT0wgZkZ1bGx5QXZhaWxhYmxlLA0KICAgICAgICAgICAgICAgSU1vbmlr
ZXIgKnBpbWtOYW1lLA0KICAgICAgICAgICAgICAgTFBCQyBwaWJjLA0KICAgICAgICAgICAgIERX
T1JEIGdyZk1vZGUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgU2F2ZSggDQogICAgICAgICAgICAgICBJTW9uaWtlciAqcGlta05hbWUsDQogICAgICAg
ICAgICAgICBMUEJDIHBiYywNCiAgICAgICAgICAgICBCT09MIGZSZW1lbWJlcikgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTYXZlQ29tcGxldGVkKCAN
CiAgICAgICAgICAgICAgIElNb25pa2VyICpwaW1rTmFtZSwNCiAgICAgICAgICAgICAgIExQQkMg
cGliYykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBH
ZXRDdXJNb25pa2VyKCANCiAgICAgICAgICAgICAgIElNb25pa2VyICoqcHBpbWtOYW1lKSA9IDA7
DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkxNyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA5MjIgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxt
b24uaCINCg0KDQoNCiANCg0KI2xpbmUgOTI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0K
DQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAwMV92MF8w
X2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8w
MDAxX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJTW9uaWtlclBy
b3AgKkxQTU9OSUtFUlBST1A7DQoNCnR5cGVkZWYgIA0KZW51bSBfX01JRExfSU1vbmlrZXJQcm9w
XzAwMDENCiAgICB7DQogICAgICAgIE1JTUVUWVBFUFJPUAk9IDAsDQogICAgICAgIFVTRV9TUkNf
VVJMCT0gMHgxLA0KICAgICAgICBDTEFTU0lEUFJPUAk9IDB4MiwNCiAgICAgICAgVFJVU1RFRERP
V05MT0FEUFJPUAk9IDB4MywNCiAgICAgICAgUE9QVVBMRVZFTFBST1AJPSAweDQNCiAgICB9IAlN
T05JS0VSUFJPUEVSVFk7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lNb25pa2VyUHJv
cDsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiYTVjYTVmN2YtMTg0Ny00
ZDg3LTljNWItOTE4NTA5Zjc1MTFkIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSU1vbmlr
ZXJQcm9wIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBQdXRQcm9wZXJ0eSggDQogICAgICAgICAgICAgTU9OSUtF
UlBST1BFUlRZIG1rcCwNCiAgICAgICAgICAgICAgIExQQ1dTVFIgdmFsKSA9IDA7DQogICAgICAg
IA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEwMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0K
I2xpbmUgMTAyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSAxMDMz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfdXJsbW9uXzAwMDBfMDAwMl92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9I
QU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDAyX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoN
Cg0KIA0KDQp0eXBlZGVmICBJQmluZFByb3RvY29sICpMUEJJTkRQUk9UT0NPTDsNCg0KDQpleHRl
cm4gIkMiIGNvbnN0IElJRCBJSURfSUJpbmRQcm90b2NvbDsNCg0KDQogICAgDQogICAgc3RydWN0
IF9fZGVjbHNwZWModXVpZCgiNzllYWM5Y2QtYmFmOS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikp
IF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUJpbmRQcm90b2NvbCA6IHB1YmxpYyBJVW5rbm93
bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
Q3JlYXRlQmluZGluZyggDQogICAgICAgICAgICAgTFBDV1NUUiBzelVybCwNCiAgICAgICAgICAg
ICBJQmluZEN0eCAqcGJjLA0KICAgICAgICAgICAgIElCaW5kaW5nICoqcHBiKSA9IDA7DQogICAg
ICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTExOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KDQojbGluZSAxMTI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5l
IDExMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5E
TEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDAzX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBD
X0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMDNfdjBfMF9zX2lmc3BlYzsNCg0K
DQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElCaW5kaW5nICpMUEJJTkRJTkc7DQoNCg0KZXh0ZXJu
ICJDIiBjb25zdCBJSUQgSUlEX0lCaW5kaW5nOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCI3OWVhYzljMC1iYWY5LTExY2UtOGM4Mi0wMGFhMDA0YmE5MGIiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJQmluZGluZyA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAg
ICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQWJvcnQoIHZvaWQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU3VzcGVu
ZCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBSZXN1bWUoIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBf
X3N0ZGNhbGwgU2V0UHJpb3JpdHkoIA0KICAgICAgICAgICAgIExPTkcgblByaW9yaXR5KSA9IDA7
DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFByaW9yaXR5
KCANCiAgICAgICAgICAgICAgIExPTkcgKnBuUHJpb3JpdHkpID0gMDsNCiAgICAgICAgDQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldEJpbmRSZXN1bHQoIA0KICAgICAgICAg
ICAgIENMU0lEICpwY2xzaWRQcm90b2NvbCwNCiAgICAgICAgICAgICBEV09SRCAqcGR3UmVzdWx0
LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBPTEVTVFIgKnBzelJlc3VsdCwNCiAg
ICAgICAgICAgICBEV09SRCAqcGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAg
ICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEyNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJQmluZGluZ19SZW1vdGVHZXRCaW5kUmVzdWx0X1Byb3h5KCANCiAg
ICAgIElCaW5kaW5nICogVGhpcywNCiAgICAgICBDTFNJRCAqcGNsc2lkUHJvdG9jb2wsDQogICAg
ICAgRFdPUkQgKnBkd1Jlc3VsdCwNCiAgICAgICBMUE9MRVNUUiAqcHN6UmVzdWx0LA0KICAgICBE
V09SRCBkd1Jlc2VydmVkKTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJQmluZGluZ19SZW1vdGVHZXRC
aW5kUmVzdWx0X1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5u
ZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNz
YWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDEyODQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xpbmUgMTI5MCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KI2xpbmUgMTI5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KI3ByYWdtYSBlbmRy
ZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBHYW1lcyBGYW1pbHkN
Cg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAw
MDRfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9u
XzAwMDBfMDAwNF92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSUJp
bmRTdGF0dXNDYWxsYmFjayAqTFBCSU5EU1RBVFVTQ0FMTEJBQ0s7DQoNCnR5cGVkZWYgIA0KZW51
bSBfX01JRExfSUJpbmRTdGF0dXNDYWxsYmFja18wMDAxDQogICAgew0KICAgICAgICBCSU5EVkVS
Ql9HRVQJPSAwLA0KICAgICAgICBCSU5EVkVSQl9QT1NUCT0gMHgxLA0KICAgICAgICBCSU5EVkVS
Ql9QVVQJPSAweDIsDQogICAgICAgIEJJTkRWRVJCX0NVU1RPTQk9IDB4MywNCiAgICAgICAgQklO
RFZFUkJfUkVTRVJWRUQxCT0gMHg0DQogICAgfSAJQklORFZFUkI7DQoNCnR5cGVkZWYgIA0KZW51
bSBfX01JRExfSUJpbmRTdGF0dXNDYWxsYmFja18wMDAyDQogICAgew0KICAgICAgICBCSU5ESU5G
T0ZfVVJMRU5DT0RFU1RHTUVEREFUQQk9IDB4MSwNCiAgICAgICAgQklORElORk9GX1VSTEVOQ09E
RURFWFRSQUlORk8JPSAweDINCiAgICB9IAlCSU5ESU5GT0Y7DQoNCnR5cGVkZWYgIA0KZW51bSBf
X01JRExfSUJpbmRTdGF0dXNDYWxsYmFja18wMDAzDQogICAgew0KICAgICAgICBCSU5ERl9BU1lO
Q0hST05PVVMJPSAweDEsDQogICAgICAgIEJJTkRGX0FTWU5DU1RPUkFHRQk9IDB4MiwNCiAgICAg
ICAgQklOREZfTk9QUk9HUkVTU0lWRVJFTkRFUklORwk9IDB4NCwNCiAgICAgICAgQklOREZfT0ZG
TElORU9QRVJBVElPTgk9IDB4OCwNCiAgICAgICAgQklOREZfR0VUTkVXRVNUVkVSU0lPTgk9IDB4
MTAsDQogICAgICAgIEJJTkRGX05PV1JJVEVDQUNIRQk9IDB4MjAsDQogICAgICAgIEJJTkRGX05F
RURGSUxFCT0gMHg0MCwNCiAgICAgICAgQklOREZfUFVMTERBVEEJPSAweDgwLA0KICAgICAgICBC
SU5ERl9JR05PUkVTRUNVUklUWVBST0JMRU0JPSAweDEwMCwNCiAgICAgICAgQklOREZfUkVTWU5D
SFJPTklaRQk9IDB4MjAwLA0KICAgICAgICBCSU5ERl9IWVBFUkxJTksJPSAweDQwMCwNCiAgICAg
ICAgQklOREZfTk9fVUkJPSAweDgwMCwNCiAgICAgICAgQklOREZfU0lMRU5UT1BFUkFUSU9OCT0g
MHgxMDAwLA0KICAgICAgICBCSU5ERl9QUkFHTUFfTk9fQ0FDSEUJPSAweDIwMDAsDQogICAgICAg
IEJJTkRGX0dFVENMQVNTT0JKRUNUCT0gMHg0MDAwLA0KICAgICAgICBCSU5ERl9SRVNFUlZFRF8x
CT0gMHg4MDAwLA0KICAgICAgICBCSU5ERl9GUkVFX1RIUkVBREVECT0gMHgxMDAwMCwNCiAgICAg
ICAgQklOREZfRElSRUNUX1JFQUQJPSAweDIwMDAwLA0KICAgICAgICBCSU5ERl9GT1JNU19TVUJN
SVQJPSAweDQwMDAwLA0KICAgICAgICBCSU5ERl9HRVRGUk9NQ0FDSEVfSUZfTkVUX0ZBSUwJPSAw
eDgwMDAwLA0KICAgICAgICBCSU5ERl9GUk9NVVJMTU9OCT0gMHgxMDAwMDAsDQogICAgICAgIEJJ
TkRGX0ZXRF9CQUNLCT0gMHgyMDAwMDAsDQogICAgICAgIEJJTkRGX1BSRUZFUkRFRkFVTFRIQU5E
TEVSCT0gMHg0MDAwMDAsDQogICAgICAgIEJJTkRGX0VORk9SQ0VSRVNUUklDVEVECT0gMHg4MDAw
MDAsDQogICAgICAgIEJJTkRGX1JFU0VSVkVEXzIJPSAweDgwMDAwMDAwLA0KICAgICAgICBCSU5E
Rl9SRVNFUlZFRF8zCT0gMHgxMDAwMDAwLA0KICAgICAgICBCSU5ERl9SRVNFUlZFRF80CT0gMHgy
MDAwMDAwLA0KICAgICAgICBCSU5ERl9SRVNFUlZFRF81CT0gMHg0MDAwMDAwLA0KICAgICAgICBC
SU5ERl9SRVNFUlZFRF82CT0gMHg4MDAwMDAwLA0KICAgICAgICBCSU5ERl9SRVNFUlZFRF83CT0g
MHg0MDAwMDAwMCwNCiAgICAgICAgQklOREZfUkVTRVJWRURfOAk9IDB4MjAwMDAwMDANCiAgICB9
IAlCSU5ERjsNCg0KdHlwZWRlZiAgDQplbnVtIF9fTUlETF9JQmluZFN0YXR1c0NhbGxiYWNrXzAw
MDQNCiAgICB7DQogICAgICAgIFVSTF9FTkNPRElOR19OT05FCT0gMCwNCiAgICAgICAgVVJMX0VO
Q09ESU5HX0VOQUJMRV9VVEY4CT0gMHgxMDAwMDAwMCwNCiAgICAgICAgVVJMX0VOQ09ESU5HX0RJ
U0FCTEVfVVRGOAk9IDB4MjAwMDAwMDANCiAgICB9IAlVUkxfRU5DT0RJTkc7DQoNCnR5cGVkZWYg
c3RydWN0IF90YWdCSU5ESU5GTw0KICAgIHsNCiAgICBVTE9ORyBjYlNpemU7DQogICAgTFBXU1RS
IHN6RXh0cmFJbmZvOw0KICAgIFNUR01FRElVTSBzdGdtZWREYXRhOw0KICAgIERXT1JEIGdyZkJp
bmRJbmZvRjsNCiAgICBEV09SRCBkd0JpbmRWZXJiOw0KICAgIExQV1NUUiBzekN1c3RvbVZlcmI7
DQogICAgRFdPUkQgY2JzdGdtZWREYXRhOw0KICAgIERXT1JEIGR3T3B0aW9uczsNCiAgICBEV09S
RCBkd09wdGlvbnNGbGFnczsNCiAgICBEV09SRCBkd0NvZGVQYWdlOw0KICAgIFNFQ1VSSVRZX0FU
VFJJQlVURVMgc2VjdXJpdHlBdHRyaWJ1dGVzOw0KICAgIElJRCBpaWQ7DQogICAgSVVua25vd24g
KnBVbms7DQogICAgRFdPUkQgZHdSZXNlcnZlZDsNCiAgICB9IAlCSU5ESU5GTzsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1JFTVNFQ1VSSVRZX0FUVFJJQlVURVMNCiAgICB7DQogICAgRFdPUkQgbkxlbmd0
aDsNCiAgICBEV09SRCBscFNlY3VyaXR5RGVzY3JpcHRvcjsNCiAgICBCT09MIGJJbmhlcml0SGFu
ZGxlOw0KICAgIH0gCVJFTVNFQ1VSSVRZX0FUVFJJQlVURVM7DQoNCnR5cGVkZWYgc3RydWN0IF9S
RU1TRUNVUklUWV9BVFRSSUJVVEVTICpQUkVNU0VDVVJJVFlfQVRUUklCVVRFUzsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX1JFTVNFQ1VSSVRZX0FUVFJJQlVURVMgKkxQUkVNU0VDVVJJVFlfQVRUUklCVVRF
UzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX3RhZ1JlbUJJTkRJTkZPDQogICAgew0KICAgIFVMT05HIGNi
U2l6ZTsNCiAgICBMUFdTVFIgc3pFeHRyYUluZm87DQogICAgRFdPUkQgZ3JmQmluZEluZm9GOw0K
ICAgIERXT1JEIGR3QmluZFZlcmI7DQogICAgTFBXU1RSIHN6Q3VzdG9tVmVyYjsNCiAgICBEV09S
RCBjYnN0Z21lZERhdGE7DQogICAgRFdPUkQgZHdPcHRpb25zOw0KICAgIERXT1JEIGR3T3B0aW9u
c0ZsYWdzOw0KICAgIERXT1JEIGR3Q29kZVBhZ2U7DQogICAgUkVNU0VDVVJJVFlfQVRUUklCVVRF
UyBzZWN1cml0eUF0dHJpYnV0ZXM7DQogICAgSUlEIGlpZDsNCiAgICBJVW5rbm93biAqcFVuazsN
CiAgICBEV09SRCBkd1Jlc2VydmVkOw0KICAgIH0gCVJlbUJJTkRJTkZPOw0KDQp0eXBlZGVmIHN0
cnVjdCB0YWdSZW1GT1JNQVRFVEMNCiAgICB7DQogICAgRFdPUkQgY2ZGb3JtYXQ7DQogICAgRFdP
UkQgcHRkOw0KICAgIERXT1JEIGR3QXNwZWN0Ow0KICAgIExPTkcgbGluZGV4Ow0KICAgIERXT1JE
IHR5bWVkOw0KICAgIH0gCVJlbUZPUk1BVEVUQzsNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnUmVtRk9S
TUFURVRDICpMUFJFTUZPUk1BVEVUQzsNCg0KdHlwZWRlZiAgDQplbnVtIF9fTUlETF9JQmluZFN0
YXR1c0NhbGxiYWNrXzAwMDUNCiAgICB7DQogICAgICAgIEJJTkRJTkZPX09QVElPTlNfV0lOSU5F
VEZMQUcJPSAweDEwMDAwLA0KICAgICAgICBCSU5ESU5GT19PUFRJT05TX0VOQUJMRV9VVEY4CT0g
MHgyMDAwMCwNCiAgICAgICAgQklORElORk9fT1BUSU9OU19ESVNBQkxFX1VURjgJPSAweDQwMDAw
LA0KICAgICAgICBCSU5ESU5GT19PUFRJT05TX1VTRV9JRV9FTkNPRElORwk9IDB4ODAwMDAsDQog
ICAgICAgIEJJTkRJTkZPX09QVElPTlNfQklORFRPT0JKRUNUCT0gMHgxMDAwMDAsDQogICAgICAg
IEJJTkRJTkZPX09QVElPTlNfU0VDVVJJVFlPUFRPVVQJPSAweDIwMDAwMCwNCiAgICAgICAgQklO
RElORk9fT1BUSU9OU19JR05PUkVNSU1FVEVYVFBMQUlOCT0gMHg0MDAwMDAsDQogICAgICAgIEJJ
TkRJTkZPX09QVElPTlNfVVNFQklORFNUUklOR0NSRURTCT0gMHg4MDAwMDAsDQogICAgICAgIEJJ
TkRJTkZPX09QVElPTlNfSUdOT1JFSFRUUEhUVFBTUkVESVJFQ1RTCT0gMHgxMDAwMDAwLA0KICAg
ICAgICBCSU5ESU5GT19PUFRJT05TX0lHTk9SRV9TU0xFUlJPUlNfT05DRQk9IDB4MjAwMDAwMCwN
CiAgICAgICAgQklORElORk9fV1BDX0RPV05MT0FEQkxPQ0tFRAk9IDB4ODAwMDAwMCwNCiAgICAg
ICAgQklORElORk9fV1BDX0xPR0dJTkdfRU5BQkxFRAk9IDB4MTAwMDAwMDAsDQogICAgICAgIEJJ
TkRJTkZPX09QVElPTlNfQUxMT1dDT05ORUNUREFUQQk9IDB4MjAwMDAwMDAsDQogICAgICAgIEJJ
TkRJTkZPX09QVElPTlNfRElTQUJMRUFVVE9SRURJUkVDVFMJPSAweDQwMDAwMDAwLA0KICAgICAg
ICBCSU5ESU5GT19PUFRJT05TX1NIRE9DVldfTkFWSUdBVEUJPSAoIGludCAgKTB4ODAwMDAwMDAN
CiAgICB9IAlCSU5ESU5GT19PUFRJT05TOw0KDQp0eXBlZGVmICANCmVudW0gX19NSURMX0lCaW5k
U3RhdHVzQ2FsbGJhY2tfMDAwNg0KICAgIHsNCiAgICAgICAgQlNDRl9GSVJTVERBVEFOT1RJRklD
QVRJT04JPSAweDEsDQogICAgICAgIEJTQ0ZfSU5URVJNRURJQVRFREFUQU5PVElGSUNBVElPTgk9
IDB4MiwNCiAgICAgICAgQlNDRl9MQVNUREFUQU5PVElGSUNBVElPTgk9IDB4NCwNCiAgICAgICAg
QlNDRl9EQVRBRlVMTFlBVkFJTEFCTEUJPSAweDgsDQogICAgICAgIEJTQ0ZfQVZBSUxBQkxFREFU
QVNJWkVVTktOT1dOCT0gMHgxMCwNCiAgICAgICAgQlNDRl9TS0lQRFJBSU5EQVRBRk9SRklMRVVS
TFMJPSAweDIwLA0KICAgICAgICBCU0NGXzY0QklUTEVOR1RIRE9XTkxPQUQJPSAweDQwDQogICAg
fSAJQlNDRjsNCg0KdHlwZWRlZiANCmVudW0gdGFnQklORFNUQVRVUw0KICAgIHsNCiAgICAgICAg
QklORFNUQVRVU19GSU5ESU5HUkVTT1VSQ0UJPSAxLA0KICAgICAgICBCSU5EU1RBVFVTX0NPTk5F
Q1RJTkcJPSAoIEJJTkRTVEFUVVNfRklORElOR1JFU09VUkNFICsgMSApICwNCiAgICAgICAgQklO
RFNUQVRVU19SRURJUkVDVElORwk9ICggQklORFNUQVRVU19DT05ORUNUSU5HICsgMSApICwNCiAg
ICAgICAgQklORFNUQVRVU19CRUdJTkRPV05MT0FEREFUQQk9ICggQklORFNUQVRVU19SRURJUkVD
VElORyArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfRE9XTkxPQURJTkdEQVRBCT0gKCBCSU5E
U1RBVFVTX0JFR0lORE9XTkxPQUREQVRBICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19FTkRE
T1dOTE9BRERBVEEJPSAoIEJJTkRTVEFUVVNfRE9XTkxPQURJTkdEQVRBICsgMSApICwNCiAgICAg
ICAgQklORFNUQVRVU19CRUdJTkRPV05MT0FEQ09NUE9ORU5UUwk9ICggQklORFNUQVRVU19FTkRE
T1dOTE9BRERBVEEgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX0lOU1RBTExJTkdDT01QT05F
TlRTCT0gKCBCSU5EU1RBVFVTX0JFR0lORE9XTkxPQURDT01QT05FTlRTICsgMSApICwNCiAgICAg
ICAgQklORFNUQVRVU19FTkRET1dOTE9BRENPTVBPTkVOVFMJPSAoIEJJTkRTVEFUVVNfSU5TVEFM
TElOR0NPTVBPTkVOVFMgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1VTSU5HQ0FDSEVEQ09Q
WQk9ICggQklORFNUQVRVU19FTkRET1dOTE9BRENPTVBPTkVOVFMgKyAxICkgLA0KICAgICAgICBC
SU5EU1RBVFVTX1NFTkRJTkdSRVFVRVNUCT0gKCBCSU5EU1RBVFVTX1VTSU5HQ0FDSEVEQ09QWSAr
IDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfQ0xBU1NJREFWQUlMQUJMRQk9ICggQklORFNUQVRV
U19TRU5ESU5HUkVRVUVTVCArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfTUlNRVRZUEVBVkFJ
TEFCTEUJPSAoIEJJTkRTVEFUVVNfQ0xBU1NJREFWQUlMQUJMRSArIDEgKSAsDQogICAgICAgIEJJ
TkRTVEFUVVNfQ0FDSEVGSUxFTkFNRUFWQUlMQUJMRQk9ICggQklORFNUQVRVU19NSU1FVFlQRUFW
QUlMQUJMRSArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfQkVHSU5TWU5DT1BFUkFUSU9OCT0g
KCBCSU5EU1RBVFVTX0NBQ0hFRklMRU5BTUVBVkFJTEFCTEUgKyAxICkgLA0KICAgICAgICBCSU5E
U1RBVFVTX0VORFNZTkNPUEVSQVRJT04JPSAoIEJJTkRTVEFUVVNfQkVHSU5TWU5DT1BFUkFUSU9O
ICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19CRUdJTlVQTE9BRERBVEEJPSAoIEJJTkRTVEFU
VVNfRU5EU1lOQ09QRVJBVElPTiArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfVVBMT0FESU5H
REFUQQk9ICggQklORFNUQVRVU19CRUdJTlVQTE9BRERBVEEgKyAxICkgLA0KICAgICAgICBCSU5E
U1RBVFVTX0VORFVQTE9BRERBVEEJPSAoIEJJTkRTVEFUVVNfVVBMT0FESU5HREFUQSArIDEgKSAs
DQogICAgICAgIEJJTkRTVEFUVVNfUFJPVE9DT0xDTEFTU0lECT0gKCBCSU5EU1RBVFVTX0VORFVQ
TE9BRERBVEEgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX0VOQ09ESU5HCT0gKCBCSU5EU1RB
VFVTX1BST1RPQ09MQ0xBU1NJRCArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfVkVSSUZJRURN
SU1FVFlQRUFWQUlMQUJMRQk9ICggQklORFNUQVRVU19FTkNPRElORyArIDEgKSAsDQogICAgICAg
IEJJTkRTVEFUVVNfQ0xBU1NJTlNUQUxMTE9DQVRJT04JPSAoIEJJTkRTVEFUVVNfVkVSSUZJRURN
SU1FVFlQRUFWQUlMQUJMRSArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfREVDT0RJTkcJPSAo
IEJJTkRTVEFUVVNfQ0xBU1NJTlNUQUxMTE9DQVRJT04gKyAxICkgLA0KICAgICAgICBCSU5EU1RB
VFVTX0xPQURJTkdNSU1FSEFORExFUgk9ICggQklORFNUQVRVU19ERUNPRElORyArIDEgKSAsDQog
ICAgICAgIEJJTkRTVEFUVVNfQ09OVEVOVERJU1BPU0lUSU9OQVRUQUNICT0gKCBCSU5EU1RBVFVT
X0xPQURJTkdNSU1FSEFORExFUiArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfRklMVEVSUkVQ
T1JUTUlNRVRZUEUJPSAoIEJJTkRTVEFUVVNfQ09OVEVOVERJU1BPU0lUSU9OQVRUQUNIICsgMSAp
ICwNCiAgICAgICAgQklORFNUQVRVU19DTFNJRENBTklOU1RBTlRJQVRFCT0gKCBCSU5EU1RBVFVT
X0ZJTFRFUlJFUE9SVE1JTUVUWVBFICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19JVU5LTk9X
TkFWQUlMQUJMRQk9ICggQklORFNUQVRVU19DTFNJRENBTklOU1RBTlRJQVRFICsgMSApICwNCiAg
ICAgICAgQklORFNUQVRVU19ESVJFQ1RCSU5ECT0gKCBCSU5EU1RBVFVTX0lVTktOT1dOQVZBSUxB
QkxFICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19SQVdNSU1FVFlQRQk9ICggQklORFNUQVRV
U19ESVJFQ1RCSU5EICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19QUk9YWURFVEVDVElORwk9
ICggQklORFNUQVRVU19SQVdNSU1FVFlQRSArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfQUND
RVBUUkFOR0VTCT0gKCBCSU5EU1RBVFVTX1BST1hZREVURUNUSU5HICsgMSApICwNCiAgICAgICAg
QklORFNUQVRVU19DT09LSUVfU0VOVAk9ICggQklORFNUQVRVU19BQ0NFUFRSQU5HRVMgKyAxICkg
LA0KICAgICAgICBCSU5EU1RBVFVTX0NPTVBBQ1RfUE9MSUNZX1JFQ0VJVkVECT0gKCBCSU5EU1RB
VFVTX0NPT0tJRV9TRU5UICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19DT09LSUVfU1VQUFJF
U1NFRAk9ICggQklORFNUQVRVU19DT01QQUNUX1BPTElDWV9SRUNFSVZFRCArIDEgKSAsDQogICAg
ICAgIEJJTkRTVEFUVVNfQ09PS0lFX1NUQVRFX1VOS05PV04JPSAoIEJJTkRTVEFUVVNfQ09PS0lF
X1NVUFBSRVNTRUQgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX0NPT0tJRV9TVEFURV9BQ0NF
UFQJPSAoIEJJTkRTVEFUVVNfQ09PS0lFX1NUQVRFX1VOS05PV04gKyAxICkgLA0KICAgICAgICBC
SU5EU1RBVFVTX0NPT0tJRV9TVEFURV9SRUpFQ1QJPSAoIEJJTkRTVEFUVVNfQ09PS0lFX1NUQVRF
X0FDQ0VQVCArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfQ09PS0lFX1NUQVRFX1BST01QVAk9
ICggQklORFNUQVRVU19DT09LSUVfU1RBVEVfUkVKRUNUICsgMSApICwNCiAgICAgICAgQklORFNU
QVRVU19DT09LSUVfU1RBVEVfTEVBU0gJPSAoIEJJTkRTVEFUVVNfQ09PS0lFX1NUQVRFX1BST01Q
VCArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfQ09PS0lFX1NUQVRFX0RPV05HUkFERQk9ICgg
QklORFNUQVRVU19DT09LSUVfU1RBVEVfTEVBU0ggKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVT
X1BPTElDWV9IUkVGCT0gKCBCSU5EU1RBVFVTX0NPT0tJRV9TVEFURV9ET1dOR1JBREUgKyAxICkg
LA0KICAgICAgICBCSU5EU1RBVFVTX1AzUF9IRUFERVIJPSAoIEJJTkRTVEFUVVNfUE9MSUNZX0hS
RUYgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1NFU1NJT05fQ09PS0lFX1JFQ0VJVkVECT0g
KCBCSU5EU1RBVFVTX1AzUF9IRUFERVIgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1BFUlNJ
U1RFTlRfQ09PS0lFX1JFQ0VJVkVECT0gKCBCSU5EU1RBVFVTX1NFU1NJT05fQ09PS0lFX1JFQ0VJ
VkVEICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19TRVNTSU9OX0NPT0tJRVNfQUxMT1dFRAk9
ICggQklORFNUQVRVU19QRVJTSVNURU5UX0NPT0tJRV9SRUNFSVZFRCArIDEgKSAsDQogICAgICAg
IEJJTkRTVEFUVVNfQ0FDSEVDT05UUk9MCT0gKCBCSU5EU1RBVFVTX1NFU1NJT05fQ09PS0lFU19B
TExPV0VEICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19DT05URU5URElTUE9TSVRJT05GSUxF
TkFNRQk9ICggQklORFNUQVRVU19DQUNIRUNPTlRST0wgKyAxICkgLA0KICAgICAgICBCSU5EU1RB
VFVTX01JTUVURVhUUExBSU5NSVNNQVRDSAk9ICggQklORFNUQVRVU19DT05URU5URElTUE9TSVRJ
T05GSUxFTkFNRSArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfUFVCTElTSEVSQVZBSUxBQkxF
CT0gKCBCSU5EU1RBVFVTX01JTUVURVhUUExBSU5NSVNNQVRDSCArIDEgKSAsDQogICAgICAgIEJJ
TkRTVEFUVVNfRElTUExBWU5BTUVBVkFJTEFCTEUJPSAoIEJJTkRTVEFUVVNfUFVCTElTSEVSQVZB
SUxBQkxFICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19TU0xVWF9OQVZCTE9DS0VECT0gKCBC
SU5EU1RBVFVTX0RJU1BMQVlOQU1FQVZBSUxBQkxFICsgMSApICwNCiAgICAgICAgQklORFNUQVRV
U19TRVJWRVJfTUlNRVRZUEVBVkFJTEFCTEUJPSAoIEJJTkRTVEFUVVNfU1NMVVhfTkFWQkxPQ0tF
RCArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfU05JRkZFRF9DTEFTU0lEQVZBSUxBQkxFCT0g
KCBCSU5EU1RBVFVTX1NFUlZFUl9NSU1FVFlQRUFWQUlMQUJMRSArIDEgKSAsDQogICAgICAgIEJJ
TkRTVEFUVVNfNjRCSVRfUFJPR1JFU1MJPSAoIEJJTkRTVEFUVVNfU05JRkZFRF9DTEFTU0lEQVZB
SUxBQkxFICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19MQVNUCT0gQklORFNUQVRVU182NEJJ
VF9QUk9HUkVTUywNCiAgICAgICAgQklORFNUQVRVU19SRVNFUlZFRF8wCT0gKCBCSU5EU1RBVFVT
X0xBU1QgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1JFU0VSVkVEXzEJPSAoIEJJTkRTVEFU
VVNfUkVTRVJWRURfMCArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfUkVTRVJWRURfMgk9ICgg
QklORFNUQVRVU19SRVNFUlZFRF8xICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19SRVNFUlZF
RF8zCT0gKCBCSU5EU1RBVFVTX1JFU0VSVkVEXzIgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVT
X1JFU0VSVkVEXzQJPSAoIEJJTkRTVEFUVVNfUkVTRVJWRURfMyArIDEgKSAsDQogICAgICAgIEJJ
TkRTVEFUVVNfUkVTRVJWRURfNQk9ICggQklORFNUQVRVU19SRVNFUlZFRF80ICsgMSApICwNCiAg
ICAgICAgQklORFNUQVRVU19SRVNFUlZFRF82CT0gKCBCSU5EU1RBVFVTX1JFU0VSVkVEXzUgKyAx
ICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1JFU0VSVkVEXzcJPSAoIEJJTkRTVEFUVVNfUkVTRVJW
RURfNiArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNfUkVTRVJWRURfOAk9ICggQklORFNUQVRV
U19SRVNFUlZFRF83ICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19SRVNFUlZFRF85CT0gKCBC
SU5EU1RBVFVTX1JFU0VSVkVEXzggKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1JFU0VSVkVE
X0EJPSAoIEJJTkRTVEFUVVNfUkVTRVJWRURfOSArIDEgKSAsDQogICAgICAgIEJJTkRTVEFUVVNf
UkVTRVJWRURfQgk9ICggQklORFNUQVRVU19SRVNFUlZFRF9BICsgMSApICwNCiAgICAgICAgQklO
RFNUQVRVU19SRVNFUlZFRF9DCT0gKCBCSU5EU1RBVFVTX1JFU0VSVkVEX0IgKyAxICkgLA0KICAg
ICAgICBCSU5EU1RBVFVTX1JFU0VSVkVEX0QJPSAoIEJJTkRTVEFUVVNfUkVTRVJWRURfQyArIDEg
KSAsDQogICAgICAgIEJJTkRTVEFUVVNfUkVTRVJWRURfRQk9ICggQklORFNUQVRVU19SRVNFUlZF
RF9EICsgMSApICwNCiAgICAgICAgQklORFNUQVRVU19SRVNFUlZFRF9GCT0gKCBCSU5EU1RBVFVT
X1JFU0VSVkVEX0UgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1JFU0VSVkVEXzEwCT0gKCBC
SU5EU1RBVFVTX1JFU0VSVkVEX0YgKyAxICkgLA0KICAgICAgICBCSU5EU1RBVFVTX1JFU0VSVkVE
XzExCT0gKCBCSU5EU1RBVFVTX1JFU0VSVkVEXzEwICsgMSApICwNCiAgICAgICAgQklORFNUQVRV
U19SRVNFUlZFRF8xMgk9ICggQklORFNUQVRVU19SRVNFUlZFRF8xMSArIDEgKSAsDQogICAgICAg
IEJJTkRTVEFUVVNfUkVTRVJWRURfMTMJPSAoIEJJTkRTVEFUVVNfUkVTRVJWRURfMTIgKyAxICkg
LA0KICAgICAgICBCSU5EU1RBVFVTX0xBU1RfUFJJVkFURQk9IEJJTkRTVEFUVVNfUkVTRVJWRURf
MTMNCiAgICB9IAlCSU5EU1RBVFVTOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQmlu
ZFN0YXR1c0NhbGxiYWNrOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI3
OWVhYzljMS1iYWY5LTExY2UtOGM4Mi0wMGFhMDA0YmE5MGIiKSkgX19kZWNsc3BlYyhub3Z0YWJs
ZSkNCiAgICBJQmluZFN0YXR1c0NhbGxiYWNrIDogcHVibGljIElVbmtub3duDQogICAgew0KICAg
IHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPblN0YXJ0QmluZGlu
ZyggDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNlcnZlZCwNCiAgICAgICAgICAgICAgIElCaW5k
aW5nICpwaWIpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgR2V0UHJpb3JpdHkoIA0KICAgICAgICAgICAgICAgTE9ORyAqcG5Qcmlvcml0eSkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPbkxvd1Jlc291cmNl
KCANCiAgICAgICAgICAgICBEV09SRCByZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPblByb2dyZXNzKCANCiAgICAgICAgICAgICBVTE9O
RyB1bFByb2dyZXNzLA0KICAgICAgICAgICAgIFVMT05HIHVsUHJvZ3Jlc3NNYXgsDQogICAgICAg
ICAgICAgVUxPTkcgdWxTdGF0dXNDb2RlLA0KICAgICAgICAgICAgICAgTFBDV1NUUiBzelN0YXR1
c1RleHQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
T25TdG9wQmluZGluZyggDQogICAgICAgICAgICAgSFJFU1VMVCBocmVzdWx0LA0KICAgICAgICAg
ICAgICAgTFBDV1NUUiBzekVycm9yKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBI
UkVTVUxUIF9fc3RkY2FsbCBHZXRCaW5kSW5mbyggDQogICAgICAgICAgICAgRFdPUkQgKmdyZkJJ
TkRGLA0KICAgICAgICAgICAgIEJJTkRJTkZPICpwYmluZGluZm8pID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIE9uRGF0YUF2YWlsYWJsZSggDQogICAg
ICAgICAgICAgRFdPUkQgZ3JmQlNDRiwNCiAgICAgICAgICAgICBEV09SRCBkd1NpemUsDQogICAg
ICAgICAgICAgRk9STUFURVRDICpwZm9ybWF0ZXRjLA0KICAgICAgICAgICAgIFNUR01FRElVTSAq
cHN0Z21lZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBPbk9iamVjdEF2YWlsYWJsZSggDQogICAgICAgICAgICAgICBjb25zdCBJSUQgJiByaWlkLA0K
ICAgICAgICAgICAgICAgSVVua25vd24gKnB1bmspID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAg
ICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNjk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSUJpbmRTdGF0dXNDYWxsYmFja19SZW1vdGVHZXRCaW5kSW5mb19Qcm94eSggDQogICAg
ICBJQmluZFN0YXR1c0NhbGxiYWNrICogVGhpcywNCiAgICAgICBEV09SRCAqZ3JmQklOREYsDQog
ICAgICAgUmVtQklORElORk8gKnBiaW5kaW5mbywNCiAgICAgICBSZW1TVEdNRURJVU0gKnBzdGdt
ZWQpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElCaW5kU3RhdHVzQ2FsbGJhY2tfUmVtb3RlR2V0Qmlu
ZEluZm9fU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBjQ2hhbm5lbEJ1
ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJwY01lc3NhZ2Us
DQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJQmlu
ZFN0YXR1c0NhbGxiYWNrX1JlbW90ZU9uRGF0YUF2YWlsYWJsZV9Qcm94eSggDQogICAgICBJQmlu
ZFN0YXR1c0NhbGxiYWNrICogVGhpcywNCiAgICAgRFdPUkQgZ3JmQlNDRiwNCiAgICAgRFdPUkQg
ZHdTaXplLA0KICAgICAgIFJlbUZPUk1BVEVUQyAqcGZvcm1hdGV0YywNCiAgICAgICBSZW1TVEdN
RURJVU0gKnBzdGdtZWQpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElCaW5kU3RhdHVzQ2FsbGJhY2tf
UmVtb3RlT25EYXRhQXZhaWxhYmxlX1N0dWIoDQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQog
ICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NB
R0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5l
IDE3MzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xpbmUgMTczOSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHVybG1vbi5oIg0KI2xpbmUgMTc0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0K
I3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoN
Cg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDA1X3YwXzBf
Y19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAw
MDVfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAgIElCaW5kU3RhdHVz
Q2FsbGJhY2tFeCAqTFBCSU5EU1RBVFVTQ0FMTEJBQ0tFWDsNCg0KdHlwZWRlZiAgDQplbnVtIF9f
TUlETF9JQmluZFN0YXR1c0NhbGxiYWNrRXhfMDAwMQ0KICAgIHsNCiAgICAgICAgQklOREYyX0RJ
U0FCTEVCQVNJQ09WRVJIVFRQCT0gMHgxLA0KICAgICAgICBCSU5ERjJfRElTQUJMRUFVVE9DT09L
SUVIQU5ETElORwk9IDB4MiwNCiAgICAgICAgQklOREYyX1JFQURfREFUQV9HUkVBVEVSX1RIQU5f
NEdCCT0gMHg0LA0KICAgICAgICBCSU5ERjJfRElTQUJMRV9IVFRQX1JFRElSRUNUX1hTRUNVUklU
WUlECT0gMHg4LA0KICAgICAgICBCSU5ERjJfU0VURE9XTkxPQURNT0RFCT0gMHgyMCwNCiAgICAg
ICAgQklOREYyX0RJU0FCTEVfSFRUUF9SRURJUkVDVF9DQUNISU5HCT0gMHg0MCwNCiAgICAgICAg
QklOREYyX0tFRVBfQ0FMTEJBQ0tfTU9EVUxFX0xPQURFRAk9IDB4ODAsDQogICAgICAgIEJJTkRG
Ml9BTExPV19QUk9YWV9DUkVEX1BST01QVAk9IDB4MTAwLA0KICAgICAgICBCSU5ERjJfUkVTRVJW
RURfMTcJPSAweDIwMCwNCiAgICAgICAgQklOREYyX1JFU0VSVkVEXzE2CT0gMHg0MDAsDQogICAg
ICAgIEJJTkRGMl9SRVNFUlZFRF8xNQk9IDB4ODAwLA0KICAgICAgICBCSU5ERjJfUkVTRVJWRURf
MTQJPSAweDEwMDAsDQogICAgICAgIEJJTkRGMl9SRVNFUlZFRF8xMwk9IDB4MjAwMCwNCiAgICAg
ICAgQklOREYyX1JFU0VSVkVEXzEyCT0gMHg0MDAwLA0KICAgICAgICBCSU5ERjJfUkVTRVJWRURf
MTEJPSAweDgwMDAsDQogICAgICAgIEJJTkRGMl9SRVNFUlZFRF8xMAk9IDB4MTAwMDAsDQogICAg
ICAgIEJJTkRGMl9SRVNFUlZFRF9GCT0gMHgyMDAwMCwNCiAgICAgICAgQklOREYyX1JFU0VSVkVE
X0UJPSAweDQwMDAwLA0KICAgICAgICBCSU5ERjJfUkVTRVJWRURfRAk9IDB4ODAwMDAsDQogICAg
ICAgIEJJTkRGMl9SRVNFUlZFRF9DCT0gMHgxMDAwMDAsDQogICAgICAgIEJJTkRGMl9SRVNFUlZF
RF9CCT0gMHgyMDAwMDAsDQogICAgICAgIEJJTkRGMl9SRVNFUlZFRF9BCT0gMHg0MDAwMDAsDQog
ICAgICAgIEJJTkRGMl9SRVNFUlZFRF85CT0gMHg4MDAwMDAsDQogICAgICAgIEJJTkRGMl9SRVNF
UlZFRF84CT0gMHgxMDAwMDAwLA0KICAgICAgICBCSU5ERjJfUkVTRVJWRURfNwk9IDB4MjAwMDAw
MCwNCiAgICAgICAgQklOREYyX1JFU0VSVkVEXzYJPSAweDQwMDAwMDAsDQogICAgICAgIEJJTkRG
Ml9SRVNFUlZFRF81CT0gMHg4MDAwMDAwLA0KICAgICAgICBCSU5ERjJfUkVTRVJWRURfNAk9IDB4
MTAwMDAwMDAsDQogICAgICAgIEJJTkRGMl9SRVNFUlZFRF8zCT0gMHgyMDAwMDAwMCwNCiAgICAg
ICAgQklOREYyX1JFU0VSVkVEXzIJPSAweDQwMDAwMDAwLA0KICAgICAgICBCSU5ERjJfUkVTRVJW
RURfMQk9IDB4ODAwMDAwMDANCiAgICB9IAlCSU5ERjI7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJ
SUQgSUlEX0lCaW5kU3RhdHVzQ2FsbGJhY2tFeDsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVj
bHNwZWModXVpZCgiYWFhNzRlZjktOGVlNy00NjU5LTg4ZDktZjhjNTA0ZGE3M2NjIikpIF9fZGVj
bHNwZWMobm92dGFibGUpDQogICAgSUJpbmRTdGF0dXNDYWxsYmFja0V4IDogcHVibGljIElCaW5k
U3RhdHVzQ2FsbGJhY2sNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBIUkVT
VUxUIF9fc3RkY2FsbCBHZXRCaW5kSW5mb0V4KCANCiAgICAgICAgICAgICBEV09SRCAqZ3JmQklO
REYsDQogICAgICAgICAgICAgQklORElORk8gKnBiaW5kaW5mbywNCiAgICAgICAgICAgICBEV09S
RCAqZ3JmQklOREYyLA0KICAgICAgICAgICAgIERXT1JEICpwZHdSZXNlcnZlZCkgPSAwOw0KICAg
ICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTM0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJpbmRTdGF0dXND
YWxsYmFja0V4X1JlbW90ZUdldEJpbmRJbmZvRXhfUHJveHkoIA0KICAgICAgSUJpbmRTdGF0dXND
YWxsYmFja0V4ICogVGhpcywNCiAgICAgICBEV09SRCAqZ3JmQklOREYsDQogICAgICAgUmVtQklO
RElORk8gKnBiaW5kaW5mbywNCiAgICAgICBSZW1TVEdNRURJVU0gKnBzdGdtZWQsDQogICAgICAg
RFdPUkQgKmdyZkJJTkRGMiwNCiAgICAgICBEV09SRCAqcGR3UmVzZXJ2ZWQpOw0KDQoNCnZvaWQg
X19zdGRjYWxsIElCaW5kU3RhdHVzQ2FsbGJhY2tFeF9SZW1vdGVHZXRCaW5kSW5mb0V4X1N0dWIo
DQogICAgSVJwY1N0dWJCdWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBj
Q2hhbm5lbEJ1ZmZlciwNCiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JE
ICpfcGR3U3R1YlBoYXNlKTsNCg0KDQoNCiNsaW5lIDE5NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24u
aCINCg0KDQoNCiANCg0KI2xpbmUgMTk2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0K
DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMDZfdjBfMF9j
X2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAw
Nl92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSUF1dGhlbnRpY2F0
ZSAqTFBBVVRIRU5USUNBVElPTjsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUF1dGhl
bnRpY2F0ZTsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNzllYWM5ZDAt
YmFmOS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAg
SUF1dGhlbnRpY2F0ZSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQXV0aGVudGljYXRlKCANCiAgICAgICAgICAg
ICAgIEhXTkQgKnBod25kLA0KICAgICAgICAgICAgICAgTFBXU1RSICpwc3pVc2VybmFtZSwNCiAg
ICAgICAgICAgICAgIExQV1NUUiAqcHN6UGFzc3dvcmQpID0gMDsNCiAgICAgICAgDQogICAgfTsN
CiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAyMDQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5lIDIw
NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xpbmUgMjA1OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X3VybG1vbl8wMDAwXzAwMDdfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfdXJsbW9uXzAwMDBfMDAwN192MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0K
dHlwZWRlZiAgICAgSUF1dGhlbnRpY2F0ZUV4ICpMUEFVVEhFTlRJQ0FUSU9ORVg7DQoNCnR5cGVk
ZWYgIA0KZW51bSBfX01JRExfSUF1dGhlbnRpY2F0ZUV4XzAwMDENCiAgICB7DQogICAgICAgIEFV
VEhFTlRJQ0FURUZfUFJPWFkJPSAweDEsDQogICAgICAgIEFVVEhFTlRJQ0FURUZfQkFTSUMJPSAw
eDIsDQogICAgICAgIEFVVEhFTlRJQ0FURUZfSFRUUAk9IDB4NA0KICAgIH0gCUFVVEhFTlRJQ0FU
RUY7DQoNCnR5cGVkZWYgc3RydWN0IF90YWdBVVRIRU5USUNBVEVJTkZPDQogICAgew0KICAgIERX
T1JEIGR3RmxhZ3M7DQogICAgRFdPUkQgZHdSZXNlcnZlZDsNCiAgICB9IAlBVVRIRU5USUNBVEVJ
TkZPOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQXV0aGVudGljYXRlRXg7DQoNCg0K
ICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjJhZDFlZGFmLWQ4M2QtNDhiNS05YWRm
LTAzZGJlMTlmNTNiZCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElBdXRoZW50aWNhdGVF
eCA6IHB1YmxpYyBJQXV0aGVudGljYXRlDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBBdXRoZW50aWNhdGVFeCggDQogICAgICAgICAgICAgICBI
V05EICpwaHduZCwNCiAgICAgICAgICAgICAgIExQV1NUUiAqcHN6VXNlcm5hbWUsDQogICAgICAg
ICAgICAgICBMUFdTVFIgKnBzelBhc3N3b3JkLA0KICAgICAgICAgICAgICAgQVVUSEVOVElDQVRF
SU5GTyAqcGF1dGhpbmZvKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIxNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xp
bmUgMjE3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSAyMTgxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlE
TF9pdGZfdXJsbW9uXzAwMDBfMDAwOF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5E
TEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDA4X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0K
IA0KDQp0eXBlZGVmICAgICBJSHR0cE5lZ290aWF0ZSAqTFBIVFRQTkVHT1RJQVRFOw0KDQoNCmV4
dGVybiAiQyIgY29uc3QgSUlEIElJRF9JSHR0cE5lZ290aWF0ZTsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiNzllYWM5ZDItYmFmOS0xMWNlLThjODItMDBhYTAwNGJhOTBi
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUh0dHBOZWdvdGlhdGUgOiBwdWJsaWMgSVVu
a25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIEJlZ2lubmluZ1RyYW5zYWN0aW9uKCANCiAgICAgICAgICAgICAgIExQQ1dTVFIgc3pVUkws
DQogICAgICAgICAgICAgICBMUENXU1RSIHN6SGVhZGVycywNCiAgICAgICAgICAgICBEV09SRCBk
d1Jlc2VydmVkLA0KICAgICAgICAgICAgICAgTFBXU1RSICpwc3pBZGRpdGlvbmFsSGVhZGVycykg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBPblJlc3Bv
bnNlKCANCiAgICAgICAgICAgICBEV09SRCBkd1Jlc3BvbnNlQ29kZSwNCiAgICAgICAgICAgICAg
IExQQ1dTVFIgc3pSZXNwb25zZUhlYWRlcnMsDQogICAgICAgICAgICAgICBMUENXU1RSIHN6UmVx
dWVzdEhlYWRlcnMsDQogICAgICAgICAgICAgICBMUFdTVFIgKnBzekFkZGl0aW9uYWxSZXF1ZXN0
SGVhZGVycykgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAyMjg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5lIDIyOTAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xpbmUgMjI5NiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3Vy
bG1vbl8wMDAwXzAwMDlfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlE
TF9pdGZfdXJsbW9uXzAwMDBfMDAwOV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlw
ZWRlZiAgICAgSUh0dHBOZWdvdGlhdGUyICpMUEhUVFBORUdPVElBVEUyOw0KDQoNCmV4dGVybiAi
QyIgY29uc3QgSUlEIElJRF9JSHR0cE5lZ290aWF0ZTI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBf
X2RlY2xzcGVjKHV1aWQoIjRGOUY5RkNCLUUwRjQtNDhlYi1CN0FCLUZBMkVBOTM2NUNCNCIpKSBf
X2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElIdHRwTmVnb3RpYXRlMiA6IHB1YmxpYyBJSHR0cE5l
Z290aWF0ZQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgR2V0Um9vdFNlY3VyaXR5SWQoIA0KICAgICAgICAgICAgICAgQllURSAqcGJTZWN1cml0
eUlkLA0KICAgICAgICAgICAgICAgRFdPUkQgKnBjYlNlY3VyaXR5SWQsDQogICAgICAgICAgICAg
RFdPUkRfUFRSIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNDAzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5lIDI0MDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCIN
Cg0KDQoNCiANCg0KI2xpbmUgMjQxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpl
eHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMTBfdjBfMF9jX2lm
c3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAxMF92
MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSUh0dHBOZWdvdGlhdGUz
ICpMUEhUVFBORUdPVElBVEUzOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JSHR0cE5l
Z290aWF0ZTM7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjU3YjZjODBh
LTM0YzItNDYwMi1iYzI2LTY2YTAyZmM1NzE1MyIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAg
IElIdHRwTmVnb3RpYXRlMyA6IHB1YmxpYyBJSHR0cE5lZ290aWF0ZTINCiAgICB7DQogICAgcHVi
bGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFNlcmlhbGl6ZWRDbGll
bnRDZXJ0Q29udGV4dCggDQogICAgICAgICAgICAgICBCWVRFICoqcHBiQ2VydCwNCiAgICAgICAg
ICAgICAgIERXT1JEICpwY2JDZXJ0KSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAg
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMjUyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSAyNTM0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDI1NDAgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1
cmxtb24uaCINCg0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25f
MDAwMF8wMDExX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X3VybG1vbl8wMDAwXzAwMTFfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYg
ICAgIElXaW5JbmV0RmlsZVN0cmVhbSAqTFBXSU5JTkVURklMRVNUUkVBTTsNCg0KDQpleHRlcm4g
IkMiIGNvbnN0IElJRCBJSURfSVdpbkluZXRGaWxlU3RyZWFtOw0KDQoNCiAgICANCiAgICBzdHJ1
Y3QgX19kZWNsc3BlYyh1dWlkKCJGMTM0QzRCNy1CMUY4LTRlNzUtQjg4Ni03NEI5MDk0M0JFQ0Ii
KSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJV2luSW5ldEZpbGVTdHJlYW0gOiBwdWJsaWMg
SVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19z
dGRjYWxsIFNldEhhbmRsZUZvclVubG9jayggDQogICAgICAgICAgICAgRFdPUkRfUFRSIGhXaW5J
bmV0TG9ja0hhbmRsZSwNCiAgICAgICAgICAgICBEV09SRF9QVFIgZHdSZXNlcnZlZCkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXREZWxldGVGaWxl
KCANCiAgICAgICAgICAgICBEV09SRF9QVFIgZHdSZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAg
ICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2MzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCIN
Cg0KDQoNCg0KI2xpbmUgMjYzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0KDQoj
bGluZSAyNjQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZf
SEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAxMl92MF8wX2NfaWZzcGVjOw0KZXh0ZXJu
IFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDEyX3YwXzBfc19pZnNwZWM7
DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJV2luZG93Rm9yQmluZGluZ1VJICpMUFdJTkRPV0ZP
UkJJTkRJTkdVSTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVdpbmRvd0ZvckJpbmRp
bmdVSTsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNzllYWM5ZDUtYmFm
YS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVdp
bmRvd0ZvckJpbmRpbmdVSSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0V2luZG93KCANCiAgICAgICAgICAg
ICBjb25zdCBHVUlEICYgcmd1aWRSZWFzb24sDQogICAgICAgICAgICAgSFdORCAqcGh3bmQpID0g
MDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjcyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5o
Ig0KDQoNCg0KDQojbGluZSAyNzM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoN
CiNsaW5lIDI3NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KZXh0ZXJuIFJQQ19J
Rl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDEzX3YwXzBfY19pZnNwZWM7DQpleHRl
cm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMTNfdjBfMF9zX2lmc3Bl
YzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElDb2RlSW5zdGFsbCAqTFBDT0RFSU5TVEFMTDsN
Cg0KdHlwZWRlZiAgDQplbnVtIF9fTUlETF9JQ29kZUluc3RhbGxfMDAwMQ0KICAgIHsNCiAgICAg
ICAgQ0lQX0RJU0tfRlVMTAk9IDAsDQogICAgICAgIENJUF9BQ0NFU1NfREVOSUVECT0gKCBDSVBf
RElTS19GVUxMICsgMSApICwNCiAgICAgICAgQ0lQX05FV0VSX1ZFUlNJT05fRVhJU1RTCT0gKCBD
SVBfQUNDRVNTX0RFTklFRCArIDEgKSAsDQogICAgICAgIENJUF9PTERFUl9WRVJTSU9OX0VYSVNU
Uwk9ICggQ0lQX05FV0VSX1ZFUlNJT05fRVhJU1RTICsgMSApICwNCiAgICAgICAgQ0lQX05BTUVf
Q09ORkxJQ1QJPSAoIENJUF9PTERFUl9WRVJTSU9OX0VYSVNUUyArIDEgKSAsDQogICAgICAgIENJ
UF9UUlVTVF9WRVJJRklDQVRJT05fQ09NUE9ORU5UX01JU1NJTkcJPSAoIENJUF9OQU1FX0NPTkZM
SUNUICsgMSApICwNCiAgICAgICAgQ0lQX0VYRV9TRUxGX1JFR0lTVEVSQVRJT05fVElNRU9VVAk9
ICggQ0lQX1RSVVNUX1ZFUklGSUNBVElPTl9DT01QT05FTlRfTUlTU0lORyArIDEgKSAsDQogICAg
ICAgIENJUF9VTlNBRkVfVE9fQUJPUlQJPSAoIENJUF9FWEVfU0VMRl9SRUdJU1RFUkFUSU9OX1RJ
TUVPVVQgKyAxICkgLA0KICAgICAgICBDSVBfTkVFRF9SRUJPT1QJPSAoIENJUF9VTlNBRkVfVE9f
QUJPUlQgKyAxICkgLA0KICAgICAgICBDSVBfTkVFRF9SRUJPT1RfVUlfUEVSTUlTU0lPTgk9ICgg
Q0lQX05FRURfUkVCT09UICsgMSApIA0KICAgIH0gCUNJUF9TVEFUVVM7DQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBJSUQgSUlEX0lDb2RlSW5zdGFsbDsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVj
bHNwZWModXVpZCgiNzllYWM5ZDEtYmFmOS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikpIF9fZGVj
bHNwZWMobm92dGFibGUpDQogICAgSUNvZGVJbnN0YWxsIDogcHVibGljIElXaW5kb3dGb3JCaW5k
aW5nVUkNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIE9uQ29kZUluc3RhbGxQcm9ibGVtKCANCiAgICAgICAgICAgICBVTE9ORyB1bFN0YXR1c0Nv
ZGUsDQogICAgICAgICAgICAgTFBDV1NUUiBzekRlc3RpbmF0aW9uLA0KICAgICAgICAgICAgIExQ
Q1dTVFIgc3pTb3VyY2UsDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNlcnZlZCkgPSAwOw0KICAg
ICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjg1MiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSAyODU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9u
LmgiDQoNCg0KDQogDQoNCiNsaW5lIDI4NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCiNsaW5l
IDI4NjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoj
cHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFO
RExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAxNF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQ
Q19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDE0X3YwXzBfc19pZnNwZWM7DQoN
Cg0KDQoNCg0KIA0KDQp0eXBlZGVmICANCmVudW0gX19NSURMX0lVcmlfMDAwMQ0KICAgIHsNCiAg
ICAgICAgVXJpX1BST1BFUlRZX0FCU09MVVRFX1VSSQk9IDAsDQogICAgICAgIFVyaV9QUk9QRVJU
WV9TVFJJTkdfU1RBUlQJPSBVcmlfUFJPUEVSVFlfQUJTT0xVVEVfVVJJLA0KICAgICAgICBVcmlf
UFJPUEVSVFlfQVVUSE9SSVRZCT0gMSwNCiAgICAgICAgVXJpX1BST1BFUlRZX0RJU1BMQVlfVVJJ
CT0gMiwNCiAgICAgICAgVXJpX1BST1BFUlRZX0RPTUFJTgk9IDMsDQogICAgICAgIFVyaV9QUk9Q
RVJUWV9FWFRFTlNJT04JPSA0LA0KICAgICAgICBVcmlfUFJPUEVSVFlfRlJBR01FTlQJPSA1LA0K
ICAgICAgICBVcmlfUFJPUEVSVFlfSE9TVAk9IDYsDQogICAgICAgIFVyaV9QUk9QRVJUWV9QQVNT
V09SRAk9IDcsDQogICAgICAgIFVyaV9QUk9QRVJUWV9QQVRICT0gOCwNCiAgICAgICAgVXJpX1BS
T1BFUlRZX1BBVEhfQU5EX1FVRVJZCT0gOSwNCiAgICAgICAgVXJpX1BST1BFUlRZX1FVRVJZCT0g
MTAsDQogICAgICAgIFVyaV9QUk9QRVJUWV9SQVdfVVJJCT0gMTEsDQogICAgICAgIFVyaV9QUk9Q
RVJUWV9TQ0hFTUVfTkFNRQk9IDEyLA0KICAgICAgICBVcmlfUFJPUEVSVFlfVVNFUl9JTkZPCT0g
MTMsDQogICAgICAgIFVyaV9QUk9QRVJUWV9VU0VSX05BTUUJPSAxNCwNCiAgICAgICAgVXJpX1BS
T1BFUlRZX1NUUklOR19MQVNUCT0gVXJpX1BST1BFUlRZX1VTRVJfTkFNRSwNCiAgICAgICAgVXJp
X1BST1BFUlRZX0hPU1RfVFlQRQk9IDE1LA0KICAgICAgICBVcmlfUFJPUEVSVFlfRFdPUkRfU1RB
UlQJPSBVcmlfUFJPUEVSVFlfSE9TVF9UWVBFLA0KICAgICAgICBVcmlfUFJPUEVSVFlfUE9SVAk9
IDE2LA0KICAgICAgICBVcmlfUFJPUEVSVFlfU0NIRU1FCT0gMTcsDQogICAgICAgIFVyaV9QUk9Q
RVJUWV9aT05FCT0gMTgsDQogICAgICAgIFVyaV9QUk9QRVJUWV9EV09SRF9MQVNUCT0gVXJpX1BS
T1BFUlRZX1pPTkUNCiAgICB9IAlVcmlfUFJPUEVSVFk7DQoNCnR5cGVkZWYgIA0KZW51bSBfX01J
RExfSVVyaV8wMDAyDQogICAgew0KICAgICAgICBVcmlfSE9TVF9VTktOT1dOCT0gMCwNCiAgICAg
ICAgVXJpX0hPU1RfRE5TCT0gKCBVcmlfSE9TVF9VTktOT1dOICsgMSApICwNCiAgICAgICAgVXJp
X0hPU1RfSVBWNAk9ICggVXJpX0hPU1RfRE5TICsgMSApICwNCiAgICAgICAgVXJpX0hPU1RfSVBW
Ngk9ICggVXJpX0hPU1RfSVBWNCArIDEgKSAsDQogICAgICAgIFVyaV9IT1NUX0lETgk9ICggVXJp
X0hPU1RfSVBWNiArIDEgKSANCiAgICB9IAlVcmlfSE9TVF9UWVBFOw0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JVXJpOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlk
KCJBMzlFRTc0OC02QTI3LTQ4MTctQTZGMi0xMzkxNEJFRjU4OTAiKSkgX19kZWNsc3BlYyhub3Z0
YWJsZSkNCiAgICBJVXJpIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0UHJvcGVydHlCU1RSKCANCiAgICAg
ICAgICAgICBVcmlfUFJPUEVSVFkgdXJpUHJvcCwNCiAgICAgICAgICAgICAgIEJTVFIgKnBic3Ry
UHJvcGVydHksDQogICAgICAgICAgICAgRFdPUkQgZHdGbGFncykgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0UHJvcGVydHlMZW5ndGgoIA0KICAg
ICAgICAgICAgIFVyaV9QUk9QRVJUWSB1cmlQcm9wLA0KICAgICAgICAgICAgICAgRFdPUkQgKnBj
Y2hQcm9wZXJ0eSwNCiAgICAgICAgICAgICBEV09SRCBkd0ZsYWdzKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRQcm9wZXJ0eURXT1JEKCANCiAg
ICAgICAgICAgICBVcmlfUFJPUEVSVFkgdXJpUHJvcCwNCiAgICAgICAgICAgICAgIERXT1JEICpw
ZHdQcm9wZXJ0eSwNCiAgICAgICAgICAgICBEV09SRCBkd0ZsYWdzKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBIYXNQcm9wZXJ0eSggDQogICAgICAg
ICAgICAgVXJpX1BST1BFUlRZIHVyaVByb3AsDQogICAgICAgICAgICAgICBCT09MICpwZkhhc1By
b3BlcnR5KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRBYnNvbHV0ZVVyaSggDQogICAgICAgICAgICAgICBCU1RSICpwYnN0ckFic29sdXRlVXJp
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRB
dXRob3JpdHkoIA0KICAgICAgICAgICAgICAgQlNUUiAqcGJzdHJBdXRob3JpdHkpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldERpc3BsYXlVcmko
IA0KICAgICAgICAgICAgICAgQlNUUiAqcGJzdHJEaXNwbGF5U3RyaW5nKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXREb21haW4oIA0KICAgICAg
ICAgICAgICAgQlNUUiAqcGJzdHJEb21haW4pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldEV4dGVuc2lvbiggDQogICAgICAgICAgICAgICBCU1RS
ICpwYnN0ckV4dGVuc2lvbikgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VM
VCBfX3N0ZGNhbGwgR2V0RnJhZ21lbnQoIA0KICAgICAgICAgICAgICAgQlNUUiAqcGJzdHJGcmFn
bWVudCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwg
R2V0SG9zdCggDQogICAgICAgICAgICAgICBCU1RSICpwYnN0ckhvc3QpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldFBhc3N3b3JkKCANCiAgICAg
ICAgICAgICAgIEJTVFIgKnBic3RyUGFzc3dvcmQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldFBhdGgoIA0KICAgICAgICAgICAgICAgQlNUUiAq
cGJzdHJQYXRoKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3Rk
Y2FsbCBHZXRQYXRoQW5kUXVlcnkoIA0KICAgICAgICAgICAgICAgQlNUUiAqcGJzdHJQYXRoQW5k
UXVlcnkpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IEdldFF1ZXJ5KCANCiAgICAgICAgICAgICAgIEJTVFIgKnBic3RyUXVlcnkpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldFJhd1VyaSggDQogICAg
ICAgICAgICAgICBCU1RSICpwYnN0clJhd1VyaSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U2NoZW1lTmFtZSggDQogICAgICAgICAgICAgICBC
U1RSICpwYnN0clNjaGVtZU5hbWUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIEdldFVzZXJJbmZvKCANCiAgICAgICAgICAgICAgIEJTVFIgKnBic3Ry
VXNlckluZm8pID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRj
YWxsIEdldFVzZXJOYW1lVyggDQogICAgICAgICAgICAgICBCU1RSICpwYnN0clVzZXJOYW1lKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRIb3N0
VHlwZSggDQogICAgICAgICAgICAgICBEV09SRCAqcGR3SG9zdFR5cGUpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldFBvcnQoIA0KICAgICAgICAg
ICAgICAgRFdPUkQgKnBkd1BvcnQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhS
RVNVTFQgX19zdGRjYWxsIEdldFNjaGVtZSggDQogICAgICAgICAgICAgICBEV09SRCAqcGR3U2No
ZW1lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBH
ZXRab25lKCANCiAgICAgICAgICAgICAgIERXT1JEICpwZHdab25lKSA9IDA7DQogICAgICAgIA0K
ICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRQcm9wZXJ0aWVzKCANCiAgICAg
ICAgICAgICAgIExQRFdPUkQgcGR3RmxhZ3MpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIElzRXF1YWwoIA0KICAgICAgICAgICAgICAgSVVyaSAqcFVy
aSwNCiAgICAgICAgICAgICAgIEJPT0wgKnBmRXF1YWwpID0gMDsNCiAgICAgICAgDQogICAgfTsN
CiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzMjQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNs
aW5lIDMyNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KZXh0ZXJuICJDIiBI
UkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVVcmkoICBMUENXU1RSIHB3elVSSSwNCiAgICAgICAgICAg
ICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgICAgICAgICAgIERXT1JEX1BUUiBkd1Jl
c2VydmVkLCAgIA0KICAgICAgICAgICAgICAgICAgSVVyaSoqIHBwVVJJKTsNCg0KZXh0ZXJuICJD
IiBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVVcmlXaXRoRnJhZ21lbnQoDQogICAgICAgICAgICAg
ICAgICAgTFBDV1NUUiBwd3pVUkksDQogICAgICAgICAgICAgICAgICAgTFBDV1NUUiBwd3pGcmFn
bWVudCwgICAgICAgIA0KICAgICAgICAgICAgICAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICAg
ICAgICAgICAgICAgRFdPUkRfUFRSIGR3UmVzZXJ2ZWQsICAgDQogICAgICAgICAgICAgICAgICBJ
VXJpKiogcHBVUkkpOw0KDQojbGluZSAzMjY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpleHRlcm4g
IkMiIEhSRVNVTFQgX19zdGRjYWxsIENyZWF0ZVVyaUZyb21NdWx0aUJ5dGVTdHJpbmcoDQogICAg
ICAgICAgICBMUENTVFIgICAgcHN6QU5TSUlucHV0VXJpLA0KICAgICAgICAgICAgICAgRFdPUkQg
ICAgIGR3RW5jb2RpbmdGbGFncywgDQogICAgICAgICAgICAgICBEV09SRCAgICAgZHdDb2RlUGFn
ZSwNCiAgICAgICAgICAgICAgIERXT1JEICAgICBkd0NyZWF0ZUZsYWdzLA0KICAgICAgRFdPUkRf
UFRSIGR3UmVzZXJ2ZWQsICAgDQogICAgICAgSVVyaSoqICAgIHBwVXJpKTsNCg0KI2xpbmUgMzI3
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVn
aW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMzNDYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1cmxtb24uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQojbGluZSAzMzQ4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcdXJsbW9uLmgiDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KZXh0
ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDE1X3YwXzBfY19pZnNw
ZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMTVfdjBf
MF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lV
cmlDb250YWluZXI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoImExNThh
NjMwLWVkNmYtNDVmYi1iOTg3LWY2ODY3NmY1Nzc1MiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0K
ICAgIElVcmlDb250YWluZXIgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0K
ICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRJVXJpKCANCiAgICAgICAgICAg
ICBJVXJpICoqcHBJVXJpKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNDI4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5lIDM0MzMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxt
b24uaCINCg0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVVyaUJ1
aWxkZXI7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjQyMjFCMkUxLTg5
NTUtNDZjMC1CRDVCLURFOTg5NzU2NURFNyIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElV
cmlCdWlsZGVyIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAg
dmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRlVXJpU2ltcGxlKCANCiAgICAgICAgICAg
ICBEV09SRCBkd0FsbG93RW5jb2RpbmdQcm9wZXJ0eU1hc2ssDQogICAgICAgICAgICAgRFdPUkRf
UFRSIGR3UmVzZXJ2ZWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIElVcmkgKipwcElV
cmkpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIENy
ZWF0ZVVyaSggDQogICAgICAgICAgICAgRFdPUkQgZHdDcmVhdGVGbGFncywNCiAgICAgICAgICAg
ICBEV09SRCBkd0FsbG93RW5jb2RpbmdQcm9wZXJ0eU1hc2ssDQogICAgICAgICAgICAgRFdPUkRf
UFRSIGR3UmVzZXJ2ZWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIElVcmkgKipwcElV
cmkpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIENy
ZWF0ZVVyaVdpdGhGbGFncyggDQogICAgICAgICAgICAgRFdPUkQgZHdDcmVhdGVGbGFncywNCiAg
ICAgICAgICAgICBEV09SRCBkd1VyaUJ1aWxkZXJGbGFncywNCiAgICAgICAgICAgICBEV09SRCBk
d0FsbG93RW5jb2RpbmdQcm9wZXJ0eU1hc2ssDQogICAgICAgICAgICAgRFdPUkRfUFRSIGR3UmVz
ZXJ2ZWQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgIElVcmkgKipwcElVcmkpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldElVcmkoIA0K
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBJVXJpICoqcHBJVXJpKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBTZXRJVXJpKCANCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIElVcmkgKnBJVXJpKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRGcmFnbWVudCggDQogICAgICAgICAgICAg
DQogICAgICAgICAgICAgICBEV09SRCAqcGNjaEZyYWdtZW50LA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICBMUENXU1RSICpwcHd6RnJhZ21lbnQpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldEhvc3QoIA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgRFdPUkQgKnBjY2hIb3N0LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICBMUENXU1RSICpwcHd6SG9zdCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJF
U1VMVCBfX3N0ZGNhbGwgR2V0UGFzc3dvcmQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgRFdPUkQgKnBjY2hQYXNzd29yZCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgTFBD
V1NUUiAqcHB3elBhc3N3b3JkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVT
VUxUIF9fc3RkY2FsbCBHZXRQYXRoKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIERX
T1JEICpwY2NoUGF0aCwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgTFBDV1NUUiAqcHB3
elBhdGgpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IEdldFBvcnQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgQk9PTCAqcGZIYXNQb3J0
LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgKnBkd1BvcnQpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIEdldFF1ZXJ5KCANCiAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEICpwY2NoUXVlcnksDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgIExQQ1dTVFIgKnBwd3pRdWVyeSkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U2NoZW1lTmFtZSggDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBEV09SRCAqcGNjaFNjaGVtZU5hbWUsDQogICAgICAgICAg
ICAgDQogICAgICAgICAgICAgIExQQ1dTVFIgKnBwd3pTY2hlbWVOYW1lKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBHZXRVc2VyTmFtZVcoIA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkQgKnBjY2hVc2VyTmFtZSwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgTFBDV1NUUiAqcHB3elVzZXJOYW1lKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBTZXRGcmFnbWVudCggDQogICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICBMUENXU1RSIHB3ek5ld1ZhbHVlKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBTZXRIb3N0KCANCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIExQQ1dTVFIgcHd6TmV3VmFsdWUpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIFNldFBhc3N3b3JkKCANCiAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgIExQQ1dTVFIgcHd6TmV3VmFsdWUpID0gMDsNCiAg
ICAgICAgDQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIFNldFBhdGgoIA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBDV1NUUiBwd3pOZXdWYWx1ZSkgPSAwOw0KICAg
ICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0UG9ydFcoIA0KICAg
ICAgICAgICAgIEJPT0wgZkhhc1BvcnQsDQogICAgICAgICAgICAgRFdPUkQgZHdOZXdWYWx1ZSkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0UXVl
cnkoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBDV1NUUiBwd3pOZXdWYWx1ZSkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0U2No
ZW1lTmFtZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBMUENXU1RSIHB3ek5ld1Zh
bHVlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2FsbCBT
ZXRVc2VyTmFtZSggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBMUENXU1RSIHB3ek5l
d1ZhbHVlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsICBIUkVTVUxUIF9fc3RkY2Fs
bCBSZW1vdmVQcm9wZXJ0aWVzKCANCiAgICAgICAgICAgICBEV09SRCBkd1Byb3BlcnR5TWFzaykg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgSGFzQmVl
bk1vZGlmaWVkKCANCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIEJPT0wgKnBmTW9kaWZp
ZWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM4MjIgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1
cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgMzgyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JVXJpQnVpbGRlckZhY3Rv
cnk7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIkU5ODJDRTQ4LTBCOTYt
NDQwYy1CQzM3LTBDODY5QjI3QTI5RSIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElVcmlC
dWlsZGVyRmFjdG9yeSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIENyZWF0ZUlVcmlCdWlsZGVyKCANCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICBEV09SRF9QVFIgZHdSZXNlcnZlZCwNCiAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgIElVcmlCdWlsZGVyICoqcHBJVXJpQnVpbGRlcikgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCAgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRlSW5pdGlhbGl6ZWRJVXJpQnVp
bGRlciggDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkRfUFRSIGR3UmVzZXJ2ZWQsDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBJVXJpQnVpbGRlciAqKnBwSVVyaUJ1aWxkZXIpID0gMDsN
CiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAzOTMyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5lIDM5MzcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2Fs
bCBDcmVhdGVJVXJpQnVpbGRlcigNCiAgICAgICAgICBJVXJpICAgICAgICAgKnBJVXJpLA0KICAg
ICAgICAgICAgICBEV09SRCAgICAgICAgIGR3RmxhZ3MsDQogICAgICAgICAgICAgIERXT1JEX1BU
UiAgICAgZHdSZXNlcnZlZCwNCiAgICAgICAgIElVcmlCdWlsZGVyICoqcHBJVXJpQnVpbGRlcg0K
ICAgICk7DQojbGluZSAzOTQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQojcHJhZ21hIGVuZHJl
Z2lvbg0KI2xpbmUgMzk1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KI3ByYWdtYSByZWdpb24g
RGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X3VybG1vbl8wMDAwXzAwMThfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfdXJsbW9uXzAwMDBfMDAxOF92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0K
dHlwZWRlZiAgICAgSVdpbkluZXRJbmZvICpMUFdJTklORVRJTkZPOw0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JV2luSW5ldEluZm87DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xz
cGVjKHV1aWQoIjc5ZWFjOWQ2LWJhZmEtMTFjZS04YzgyLTAwYWEwMDRiYTkwYiIpKSBfX2RlY2xz
cGVjKG5vdnRhYmxlKQ0KICAgIElXaW5JbmV0SW5mbyA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsN
CiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIFF1ZXJ5T3B0
aW9uKCANCiAgICAgICAgICAgICBEV09SRCBkd09wdGlvbiwNCiAgICAgICAgICAgICBMUFZPSUQg
cEJ1ZmZlciwNCiAgICAgICAgICAgICBEV09SRCAqcGNiQnVmKSA9IDA7DQogICAgICAgIA0KICAg
IH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNDAzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIEhSRVNV
TFQgX19zdGRjYWxsIElXaW5JbmV0SW5mb19SZW1vdGVRdWVyeU9wdGlvbl9Qcm94eSggDQogICAg
ICBJV2luSW5ldEluZm8gKiBUaGlzLA0KICAgICBEV09SRCBkd09wdGlvbiwNCiAgICAgICBCWVRF
ICpwQnVmZmVyLA0KICAgICAgIERXT1JEICpwY2JCdWYpOw0KDQoNCnZvaWQgX19zdGRjYWxsIElX
aW5JbmV0SW5mb19SZW1vdGVRdWVyeU9wdGlvbl9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpU
aGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVyICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQ
Q19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAgICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0K
DQojbGluZSA0MDU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDQw
NjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRM
RSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMTlfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENf
SUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAxOV92MF8wX3NfaWZzcGVjOw0KDQoN
Cg0KDQoNCiANCg0KdHlwZWRlZiAgSUh0dHBTZWN1cml0eSAqTFBIVFRQU0VDVVJJVFk7DQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lIdHRwU2VjdXJpdHk7DQoNCg0KICAgIA0KICAgIHN0
cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjc5ZWFjOWQ3LWJhZmEtMTFjZS04YzgyLTAwYWEwMDRiYTkw
YiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElIdHRwU2VjdXJpdHkgOiBwdWJsaWMgSVdp
bmRvd0ZvckJpbmRpbmdVSQ0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgT25TZWN1cml0eVByb2JsZW0oIA0KICAgICAgICAgICAgIERXT1JEIGR3
UHJvYmxlbSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
NDE1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA0MTYxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDQxNjcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxt
b24uaCINCg0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAw
MF8wMDIwX3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3Vy
bG1vbl8wMDAwXzAwMjBfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgICAg
IElXaW5JbmV0SHR0cEluZm8gKkxQV0lOSU5FVEhUVFBJTkZPOw0KDQoNCmV4dGVybiAiQyIgY29u
c3QgSUlEIElJRF9JV2luSW5ldEh0dHBJbmZvOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCI3OWVhYzlkOC1iYWZhLTExY2UtOGM4Mi0wMGFhMDA0YmE5MGIiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJV2luSW5ldEh0dHBJbmZvIDogcHVibGljIElXaW5JbmV0SW5m
bw0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxs
IFF1ZXJ5SW5mbyggDQogICAgICAgICAgICAgRFdPUkQgZHdPcHRpb24sDQogICAgICAgICAgICAg
TFBWT0lEIHBCdWZmZXIsDQogICAgICAgICAgICAgRFdPUkQgKnBjYkJ1ZiwNCiAgICAgICAgICAg
ICBEV09SRCAqcGR3RmxhZ3MsDQogICAgICAgICAgICAgRFdPUkQgKnBkd1Jlc2VydmVkKSA9IDA7
DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDI2
NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIEhSRVNVTFQgX19zdGRjYWxsIElXaW5J
bmV0SHR0cEluZm9fUmVtb3RlUXVlcnlJbmZvX1Byb3h5KCANCiAgICAgIElXaW5JbmV0SHR0cElu
Zm8gKiBUaGlzLA0KICAgICBEV09SRCBkd09wdGlvbiwNCiAgICAgICBCWVRFICpwQnVmZmVyLA0K
ICAgICAgIERXT1JEICpwY2JCdWYsDQogICAgICAgRFdPUkQgKnBkd0ZsYWdzLA0KICAgICAgIERX
T1JEICpwZHdSZXNlcnZlZCk7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwgSVdpbkluZXRIdHRwSW5mb19S
ZW1vdGVRdWVyeUluZm9fU3R1YigNCiAgICBJUnBjU3R1YkJ1ZmZlciAqVGhpcywNCiAgICBJUnBj
Q2hhbm5lbEJ1ZmZlciAqX3BScGNDaGFubmVsQnVmZmVyLA0KICAgIFBSUENfTUVTU0FHRSBfcFJw
Y01lc3NhZ2UsDQogICAgRFdPUkQgKl9wZHdTdHViUGhhc2UpOw0KDQoNCg0KI2xpbmUgNDI4OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSA0Mjk0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJs
bW9uXzAwMDBfMDAyMV92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURM
X2l0Zl91cmxtb25fMDAwMF8wMDIxX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4
dGVybiAiQyIgY29uc3QgSUlEIElJRF9JV2luSW5ldEh0dHBUaW1lb3V0czsNCg0KDQogICAgDQog
ICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiRjI4NkZBNTYtQzFGRC00MjcwLThFNjctQjNFQjc5
MEE4MUU4IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVdpbkluZXRIdHRwVGltZW91dHMg
OiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsICBI
UkVTVUxUIF9fc3RkY2FsbCBHZXRSZXF1ZXN0VGltZW91dHMoIA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgRFdPUkQgKnBkd0Nvbm5lY3RUaW1lb3V0LA0KICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgRFdPUkQgKnBkd1NlbmRUaW1lb3V0LA0KICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgRFdPUkQgKnBkd1JlY2VpdmVUaW1lb3V0KSA9IDA7DQogICAgICAgIA0KICAgIH07
DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNDM4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoj
bGluZSA0Mzg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDQzOTUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBf
X01JRExfaXRmX3VybG1vbl8wMDAwXzAwMjJfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZf
SEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAyMl92MF8wX3NfaWZzcGVjOw0KDQoNCg0K
DQoNCiANCg0KdHlwZWRlZiAgSVdpbkluZXRDYWNoZUhpbnRzICpMUFdJTklORVRDQUNIRUhJTlRT
Ow0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JV2luSW5ldENhY2hlSGludHM7DQoNCg0K
ICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIkREMUVDM0IzLTgzOTEtNGZkYi1BOUU2
LTM0N0MzQ0FBQTdERCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElXaW5JbmV0Q2FjaGVI
aW50cyA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0Q2FjaGVFeHRlbnNpb24oIA0KICAgICAgICAgICAgIExQ
Q1dTVFIgcHd6RXh0LA0KICAgICAgICAgICAgIExQVk9JRCBwc3pDYWNoZUZpbGUsDQogICAgICAg
ICAgICAgRFdPUkQgKnBjYkNhY2hlRmlsZSwNCiAgICAgICAgICAgICBEV09SRCAqcGR3V2luSW5l
dEVycm9yLA0KICAgICAgICAgICAgIERXT1JEICpwZHdSZXNlcnZlZCkgPSAwOw0KICAgICAgICAN
CiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NDg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0K
DQoNCiNsaW5lIDQ0OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xpbmUg
NDQ5NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KI2xpbmUgNDQ5OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9u
XzAwMDBfMDAyM192MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0
Zl91cmxtb25fMDAwMF8wMDIzX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVm
ICBJV2luSW5ldENhY2hlSGludHMyICpMUFdJTklORVRDQUNIRUhJTlRTMjsNCg0KDQpleHRlcm4g
IkMiIGNvbnN0IElJRCBJSURfSVdpbkluZXRDYWNoZUhpbnRzMjsNCg0KDQogICAgDQogICAgc3Ry
dWN0IF9fZGVjbHNwZWModXVpZCgiNzg1N0FFQUMtRDMxRi00OWJmLTg4NEUtREQ0NkRGMzY3ODBB
IikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSVdpbkluZXRDYWNoZUhpbnRzMiA6IHB1Ymxp
YyBJV2luSW5ldENhY2hlSGludHMNCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgX19zdGRjYWxsIFNldENhY2hlRXh0ZW5zaW9uMiggDQogICAgICAgICAgICAgTFBD
V1NUUiBwd3pFeHQsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBXQ0hBUiAqcHd6Q2Fj
aGVGaWxlLA0KICAgICAgICAgICAgIERXT1JEICpwY2NoQ2FjaGVGaWxlLA0KICAgICAgICAgICAg
IERXT1JEICpwZHdXaW5JbmV0RXJyb3IsDQogICAgICAgICAgICAgRFdPUkQgKnBkd1Jlc2VydmVk
KSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNDYwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA0NjA4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDQ2MTQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx1cmxtb24uaCINCiNsaW5lIDQ2MTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoN
Cg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEIFNJRF9CaW5kSG9zdDsNCg0KDQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMjRfdjBfMF9jX2lmc3BlYzsNCmV4dGVy
biBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAyNF92MF8wX3NfaWZzcGVj
Ow0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgICAgSUJpbmRIb3N0ICpMUEJJTkRIT1NUOw0KDQoN
CmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JQmluZEhvc3Q7DQoNCg0KICAgIA0KICAgIHN0cnVj
dCBfX2RlY2xzcGVjKHV1aWQoImZjNDgwMWExLTJiYTktMTFjZi1hMjI5LTAwYWEwMDNkNzM1MiIp
KSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElCaW5kSG9zdCA6IHB1YmxpYyBJVW5rbm93bg0K
ICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ3Jl
YXRlTW9uaWtlciggDQogICAgICAgICAgICAgICBMUE9MRVNUUiBzek5hbWUsDQogICAgICAgICAg
ICAgICBJQmluZEN0eCAqcEJDLA0KICAgICAgICAgICAgICAgSU1vbmlrZXIgKipwcG1rLA0KICAg
ICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgIEhSRVNVTFQgX19zdGRjYWxsIE1vbmlrZXJCaW5kVG9TdG9yYWdlKCANCiAgICAgICAgICAg
ICBJTW9uaWtlciAqcE1rLA0KICAgICAgICAgICAgIElCaW5kQ3R4ICpwQkMsDQogICAgICAgICAg
ICAgSUJpbmRTdGF0dXNDYWxsYmFjayAqcEJTQywNCiAgICAgICAgICAgICBjb25zdCBJSUQgJiBy
aWlkLA0KICAgICAgICAgICAgIHZvaWQgKipwcHZPYmopID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgIEhSRVNVTFQgX19zdGRjYWxsIE1vbmlrZXJCaW5kVG9PYmplY3QoIA0KICAgICAg
ICAgICAgIElNb25pa2VyICpwTWssDQogICAgICAgICAgICAgSUJpbmRDdHggKnBCQywNCiAgICAg
ICAgICAgICBJQmluZFN0YXR1c0NhbGxiYWNrICpwQlNDLA0KICAgICAgICAgICAgIGNvbnN0IElJ
RCAmIHJpaWQsDQogICAgICAgICAgICAgdm9pZCAqKnBwdk9iaikgPSAwOw0KICAgICAgICANCiAg
ICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA0NzQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogSFJFU1VMVCBfX3N0ZGNh
bGwgSUJpbmRIb3N0X1JlbW90ZU1vbmlrZXJCaW5kVG9TdG9yYWdlX1Byb3h5KCANCiAgICAgIElC
aW5kSG9zdCAqIFRoaXMsDQogICAgICAgSU1vbmlrZXIgKnBNaywNCiAgICAgICBJQmluZEN0eCAq
cEJDLA0KICAgICAgIElCaW5kU3RhdHVzQ2FsbGJhY2sgKnBCU0MsDQogICAgICAgY29uc3QgSUlE
ICYgcmlpZCwNCiAgICAgICBJVW5rbm93biAqKnBwdk9iaik7DQoNCg0Kdm9pZCBfX3N0ZGNhbGwg
SUJpbmRIb3N0X1JlbW90ZU1vbmlrZXJCaW5kVG9TdG9yYWdlX1N0dWIoDQogICAgSVJwY1N0dWJC
dWZmZXIgKlRoaXMsDQogICAgSVJwY0NoYW5uZWxCdWZmZXIgKl9wUnBjQ2hhbm5lbEJ1ZmZlciwN
CiAgICBQUlBDX01FU1NBR0UgX3BScGNNZXNzYWdlLA0KICAgIERXT1JEICpfcGR3U3R1YlBoYXNl
KTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJpbmRIb3N0X1JlbW90ZU1vbmlrZXJCaW5kVG9P
YmplY3RfUHJveHkoIA0KICAgICAgSUJpbmRIb3N0ICogVGhpcywNCiAgICAgICBJTW9uaWtlciAq
cE1rLA0KICAgICAgIElCaW5kQ3R4ICpwQkMsDQogICAgICAgSUJpbmRTdGF0dXNDYWxsYmFjayAq
cEJTQywNCiAgICAgICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgIElVbmtub3duICoqcHB2T2Jq
KTsNCg0KDQp2b2lkIF9fc3RkY2FsbCBJQmluZEhvc3RfUmVtb3RlTW9uaWtlckJpbmRUb09iamVj
dF9TdHViKA0KICAgIElScGNTdHViQnVmZmVyICpUaGlzLA0KICAgIElScGNDaGFubmVsQnVmZmVy
ICpfcFJwY0NoYW5uZWxCdWZmZXIsDQogICAgUFJQQ19NRVNTQUdFIF9wUnBjTWVzc2FnZSwNCiAg
ICBEV09SRCAqX3Bkd1N0dWJQaGFzZSk7DQoNCg0KDQojbGluZSA0Nzc5ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
dXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDQ3ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCIN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0K
DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpzdHJ1
Y3QgSUJpbmRTdGF0dXNDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZXh0ZXJuICJD
IiBIUkVTVUxUIF9fc3RkY2FsbCBIbGlua1NpbXBsZU5hdmlnYXRlVG9TdHJpbmcoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgICBMUENXU1RSIHN6VGFyZ2V0LCAgICAgICAgIA0KICAgICAgTFBDV1NUUiBz
ekxvY2F0aW9uLCAgICAgICANCiAgICAgIExQQ1dTVFIgc3pUYXJnZXRGcmFtZU5hbWUsDQogICAg
ICAgICAgSVVua25vd24gKnBVbmssICAgICAgICAgICANCiAgICAgIElCaW5kQ3R4ICpwYmMsICAg
ICAgICAgICAgDQogICAgICBJQmluZFN0YXR1c0NhbGxiYWNrICosICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg
ICBEV09SRCBncmZITE5GLCAgICAgICAgICAgIA0KICAgICBEV09SRCBkd1Jlc2VydmVkICAgICAg
ICAgIA0KKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpleHRl
cm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIEhsaW5rU2ltcGxlTmF2aWdhdGVUb01vbmlrZXIoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICANCiAgICAgIElNb25pa2VyICpwbWtUYXJnZXQsICAgICAgDQogICAgICBMUENX
U1RSIHN6TG9jYXRpb24sICAgICAgIA0KICAgICAgTFBDV1NUUiBzelRhcmdldEZyYW1lTmFtZSwN
CiAgICAgIElVbmtub3duICpwVW5rLCAgICAgICAgICAgDQogICAgICBJQmluZEN0eCAqcGJjLCAg
ICAgICAgICAgIA0KICAgICAgSUJpbmRTdGF0dXNDYWxsYmFjayAqLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg
ICAgRFdPUkQgZ3JmSExORiwgICAgICAgICAgICANCiAgICAgRFdPUkQgZHdSZXNlcnZlZCAgICAg
ICAgICANCik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZXh0
ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBVUkxPcGVuU3RyZWFtQSggIExQVU5LTk9XTiwgICBM
UENTVFIsRFdPUkQsICAgTFBCSU5EU1RBVFVTQ0FMTEJBQ0spOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVVJMT3Bl
blN0cmVhbVcoICBMUFVOS05PV04sICAgTFBDV1NUUixEV09SRCwgIExQQklORFNUQVRVU0NBTExC
QUNLKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIg
SFJFU1VMVCBfX3N0ZGNhbGwgVVJMT3BlblB1bGxTdHJlYW1BKCAgTFBVTktOT1dOLCAgIExQQ1NU
UixEV09SRCwgICBMUEJJTkRTVEFUVVNDQUxMQkFDSyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFVSTE9wZW5QdWxsU3Ry
ZWFtVyggIExQVU5LTk9XTiwgIExQQ1dTVFIsRFdPUkQsICAgTFBCSU5EU1RBVFVTQ0FMTEJBQ0sp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpleHRlcm4gIkMiIEhSRVNVTFQg
X19zdGRjYWxsIFVSTERvd25sb2FkVG9GaWxlQSggIExQVU5LTk9XTiwgICBMUENTVFIsICAgTFBD
U1RSLERXT1JELCAgIExQQklORFNUQVRVU0NBTExCQUNLKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBVUkxEb3dubG9hZFRvRmlsZVco
ICBMUFVOS05PV04sICAgTFBDV1NUUiwgIExQQ1dTVFIsRFdPUkQsICAgTFBCSU5EU1RBVFVTQ0FM
TEJBQ0spOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxUIF9f
c3RkY2FsbCBVUkxEb3dubG9hZFRvQ2FjaGVGaWxlQSggIExQVU5LTk9XTiwgICBMUENTVFIsICAg
IExQU1RSLCAgRFdPUkQgY2NoRmlsZU5hbWUsIERXT1JELCAgIExQQklORFNUQVRVU0NBTExCQUNL
KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVVJMRG93bmxvYWRUb0NhY2hlRmlsZVco
ICBMUFVOS05PV04sICAgTFBDV1NUUiwgICBMUFdTVFIsIERXT1JEIGNjaEZpbGVOYW1lLCBEV09S
RCwgICBMUEJJTkRTVEFUVVNDQUxMQkFDSyk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxs
IFVSTE9wZW5CbG9ja2luZ1N0cmVhbUEoICBMUFVOS05PV04sICAgTFBDU1RSLCAgTFBTVFJFQU0q
LERXT1JELCAgIExQQklORFNUQVRVU0NBTExCQUNLKTsgICAgICAgICAgICAgICAgICAgICAgDQpl
eHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFVSTE9wZW5CbG9ja2luZ1N0cmVhbVcoICBMUFVO
S05PV04sICAgTFBDV1NUUiwgIExQU1RSRUFNKixEV09SRCwgICBMUEJJTkRTVEFUVVNDQUxMQkFD
Syk7ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDg0MCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIEhsaW5rR29CYWNrKCAg
SVVua25vd24gKnBVbmspOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwg
SGxpbmtHb0ZvcndhcmQoICBJVW5rbm93biAqcFVuayk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZXh0ZXJuICJDIiBIUkVT
VUxUIF9fc3RkY2FsbCBIbGlua05hdmlnYXRlU3RyaW5nKCAgSVVua25vd24gKnBVbmssICAgTFBD
V1NUUiBzelRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZXh0ZXJuICJDIiBI
UkVTVUxUIF9fc3RkY2FsbCBIbGlua05hdmlnYXRlTW9uaWtlciggIElVbmtub3duICpwVW5rLCAg
IElNb25pa2VyICpwbWtUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAw
MDBfMDAyNV92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91
cmxtb25fMDAwMF8wMDI1X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJ
SW50ZXJuZXQgKkxQSUlOVEVSTkVUOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JSW50
ZXJuZXQ7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjc5ZWFjOWUwLWJh
ZjktMTFjZS04YzgyLTAwYWEwMDRiYTkwYiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElJ
bnRlcm5ldCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgfTsNCiAg
ICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OTMwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5lIDQ5MzUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxt
b24uaCINCg0KDQoNCiANCg0KI2xpbmUgNDk0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMjZfdjBf
MF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBf
MDAyNl92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgSUludGVybmV0Qmlu
ZEluZm8gKkxQSUlOVEVSTkVUQklORElORk87DQoNCnR5cGVkZWYgDQplbnVtIHRhZ0JJTkRTVFJJ
TkcNCiAgICB7DQogICAgICAgIEJJTkRTVFJJTkdfSEVBREVSUwk9IDEsDQogICAgICAgIEJJTkRT
VFJJTkdfQUNDRVBUX01JTUVTCT0gKCBCSU5EU1RSSU5HX0hFQURFUlMgKyAxICkgLA0KICAgICAg
ICBCSU5EU1RSSU5HX0VYVFJBX1VSTAk9ICggQklORFNUUklOR19BQ0NFUFRfTUlNRVMgKyAxICkg
LA0KICAgICAgICBCSU5EU1RSSU5HX0xBTkdVQUdFCT0gKCBCSU5EU1RSSU5HX0VYVFJBX1VSTCAr
IDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdfVVNFUk5BTUUJPSAoIEJJTkRTVFJJTkdfTEFOR1VB
R0UgKyAxICkgLA0KICAgICAgICBCSU5EU1RSSU5HX1BBU1NXT1JECT0gKCBCSU5EU1RSSU5HX1VT
RVJOQU1FICsgMSApICwNCiAgICAgICAgQklORFNUUklOR19VQV9QSVhFTFMJPSAoIEJJTkRTVFJJ
TkdfUEFTU1dPUkQgKyAxICkgLA0KICAgICAgICBCSU5EU1RSSU5HX1VBX0NPTE9SCT0gKCBCSU5E
U1RSSU5HX1VBX1BJWEVMUyArIDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdfT1MJPSAoIEJJTkRT
VFJJTkdfVUFfQ09MT1IgKyAxICkgLA0KICAgICAgICBCSU5EU1RSSU5HX1VTRVJfQUdFTlQJPSAo
IEJJTkRTVFJJTkdfT1MgKyAxICkgLA0KICAgICAgICBCSU5EU1RSSU5HX0FDQ0VQVF9FTkNPRElO
R1MJPSAoIEJJTkRTVFJJTkdfVVNFUl9BR0VOVCArIDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdf
UE9TVF9DT09LSUUJPSAoIEJJTkRTVFJJTkdfQUNDRVBUX0VOQ09ESU5HUyArIDEgKSAsDQogICAg
ICAgIEJJTkRTVFJJTkdfUE9TVF9EQVRBX01JTUUJPSAoIEJJTkRTVFJJTkdfUE9TVF9DT09LSUUg
KyAxICkgLA0KICAgICAgICBCSU5EU1RSSU5HX1VSTAk9ICggQklORFNUUklOR19QT1NUX0RBVEFf
TUlNRSArIDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdfSUlECT0gKCBCSU5EU1RSSU5HX1VSTCAr
IDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdfRkxBR19CSU5EX1RPX09CSkVDVAk9ICggQklORFNU
UklOR19JSUQgKyAxICkgLA0KICAgICAgICBCSU5EU1RSSU5HX1BUUl9CSU5EX0NPTlRFWFQJPSAo
IEJJTkRTVFJJTkdfRkxBR19CSU5EX1RPX09CSkVDVCArIDEgKSAsDQogICAgICAgIEJJTkRTVFJJ
TkdfWERSX09SSUdJTgk9ICggQklORFNUUklOR19QVFJfQklORF9DT05URVhUICsgMSApICwNCiAg
ICAgICAgQklORFNUUklOR19ET1dOTE9BRFBBVEgJPSAoIEJJTkRTVFJJTkdfWERSX09SSUdJTiAr
IDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdfUk9PVERPQ19VUkwJPSAoIEJJTkRTVFJJTkdfRE9X
TkxPQURQQVRIICsgMSApICwNCiAgICAgICAgQklORFNUUklOR19JTklUSUFMX0ZJTEVOQU1FCT0g
KCBCSU5EU1RSSU5HX1JPT1RET0NfVVJMICsgMSApICwNCiAgICAgICAgQklORFNUUklOR19QUk9Y
WV9VU0VSTkFNRQk9ICggQklORFNUUklOR19JTklUSUFMX0ZJTEVOQU1FICsgMSApICwNCiAgICAg
ICAgQklORFNUUklOR19QUk9YWV9QQVNTV09SRAk9ICggQklORFNUUklOR19QUk9YWV9VU0VSTkFN
RSArIDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdfRU5URVJQUklTRV9JRAk9ICggQklORFNUUklO
R19QUk9YWV9QQVNTV09SRCArIDEgKSAsDQogICAgICAgIEJJTkRTVFJJTkdfRE9DX1VSTAk9ICgg
QklORFNUUklOR19FTlRFUlBSSVNFX0lEICsgMSApICwNCiAgICAgICAgQklORFNUUklOR19TQU1F
U0lURV9DT09LSUVfTEVWRUwJPSAoIEJJTkRTVFJJTkdfRE9DX1VSTCArIDEgKSANCiAgICB9IAlC
SU5EU1RSSU5HOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JSW50ZXJuZXRCaW5kSW5m
bzsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNzllYWM5ZTEtYmFmOS0x
MWNlLThjODItMDBhYTAwNGJhOTBiIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUludGVy
bmV0QmluZEluZm8gOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEJpbmRJbmZvKCANCiAgICAgICAgICAgICBE
V09SRCAqZ3JmQklOREYsDQogICAgICAgICAgICAgQklORElORk8gKnBiaW5kaW5mbykgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRCaW5kU3RyaW5n
KCANCiAgICAgICAgICAgICBVTE9ORyB1bFN0cmluZ1R5cGUsDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICBMUE9MRVNUUiAqcHB3elN0ciwNCiAgICAgICAgICAgICBVTE9ORyBjRWwsDQog
ICAgICAgICAgICAgVUxPTkcgKnBjRWxGZXRjaGVkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQog
ICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MDc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgi
DQoNCg0KDQoNCiNsaW5lIDUwNzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0K
I2xpbmUgNTA4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMjdfdjBfMF9jX2lmc3BlYzsNCmV4dGVy
biBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAyN192MF8wX3NfaWZzcGVj
Ow0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAgSUludGVybmV0QmluZEluZm9FeCAqTFBJSU5URVJO
RVRCSU5ESU5GT0VYOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JSW50ZXJuZXRCaW5k
SW5mb0V4Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJhM2UwMTViNy1h
ODJjLTRkY2QtYTE1MC01NjlhZWVlZDM2YWIiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJ
SW50ZXJuZXRCaW5kSW5mb0V4IDogcHVibGljIElJbnRlcm5ldEJpbmRJbmZvDQogICAgew0KICAg
IHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRCaW5kSW5mb0V4
KCANCiAgICAgICAgICAgICBEV09SRCAqZ3JmQklOREYsDQogICAgICAgICAgICAgQklORElORk8g
KnBiaW5kaW5mbywNCiAgICAgICAgICAgICBEV09SRCAqZ3JmQklOREYyLA0KICAgICAgICAgICAg
IERXT1JEICpwZHdSZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUxOTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgNTE5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0K
DQoNCg0KIA0KDQojbGluZSA1MjA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4
dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAyOF92MF8wX2NfaWZz
cGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDI4X3Yw
XzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJSW50ZXJuZXRQcm90b2NvbFJv
b3QgKkxQSUlOVEVSTkVUUFJPVE9DT0xST09UOw0KDQp0eXBlZGVmIA0KZW51bSBfdGFnUElfRkxB
R1MNCiAgICB7DQogICAgICAgIFBJX1BBUlNFX1VSTAk9IDB4MSwNCiAgICAgICAgUElfRklMVEVS
X01PREUJPSAweDIsDQogICAgICAgIFBJX0ZPUkNFX0FTWU5DCT0gMHg0LA0KICAgICAgICBQSV9V
U0VfV09SS0VSVEhSRUFECT0gMHg4LA0KICAgICAgICBQSV9NSU1FVkVSSUZJQ0FUSU9OCT0gMHgx
MCwNCiAgICAgICAgUElfQ0xTSURMT09LVVAJPSAweDIwLA0KICAgICAgICBQSV9EQVRBUFJPR1JF
U1MJPSAweDQwLA0KICAgICAgICBQSV9TWU5DSFJPTk9VUwk9IDB4ODAsDQogICAgICAgIFBJX0FQ
QVJUTUVOVFRIUkVBREVECT0gMHgxMDAsDQogICAgICAgIFBJX0NMQVNTSU5TVEFMTAk9IDB4MjAw
LA0KICAgICAgICBQSV9QQVNTT05CSU5EQ1RYCT0gMHgyMDAwLA0KICAgICAgICBQSV9OT01JTUVI
QU5ETEVSCT0gMHg4MDAwLA0KICAgICAgICBQSV9MT0FEQVBQRElSRUNUCT0gMHg0MDAwLA0KICAg
ICAgICBQRF9GT1JDRV9TV0lUQ0gJPSAweDEwMDAwLA0KICAgICAgICBQSV9QUkVGRVJERUZBVUxU
SEFORExFUgk9IDB4MjAwMDANCiAgICB9IAlQSV9GTEFHUzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX3Rh
Z1BST1RPQ09MREFUQQ0KICAgIHsNCiAgICBEV09SRCBncmZGbGFnczsNCiAgICBEV09SRCBkd1N0
YXRlOw0KICAgIExQVk9JRCBwRGF0YTsNCiAgICBVTE9ORyBjYkRhdGE7DQogICAgfSAJUFJPVE9D
T0xEQVRBOw0KDQp0eXBlZGVmIHN0cnVjdCBfdGFnU3RhcnRQYXJhbQ0KICAgIHsNCiAgICBJSUQg
aWlkOw0KICAgIElCaW5kQ3R4ICpwSUJpbmRDdHg7DQogICAgSVVua25vd24gKnBJdGY7DQogICAg
fSAJU3RhcnRQYXJhbTsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUludGVybmV0UHJv
dG9jb2xSb290Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI3OWVhYzll
My1iYWY5LTExY2UtOGM4Mi0wMGFhMDA0YmE5MGIiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAg
ICBJSW50ZXJuZXRQcm90b2NvbFJvb3QgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVi
bGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFN0YXJ0KCANCiAgICAgICAg
ICAgICBMUENXU1RSIHN6VXJsLA0KICAgICAgICAgICAgIElJbnRlcm5ldFByb3RvY29sU2luayAq
cE9JUHJvdFNpbmssDQogICAgICAgICAgICAgSUludGVybmV0QmluZEluZm8gKnBPSUJpbmRJbmZv
LA0KICAgICAgICAgICAgIERXT1JEIGdyZlBJLA0KICAgICAgICAgICAgIEhBTkRMRV9QVFIgZHdS
ZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBDb250aW51ZSggDQogICAgICAgICAgICAgUFJPVE9DT0xEQVRBICpwUHJvdG9jb2xEYXRhKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEFib3J0KCAN
CiAgICAgICAgICAgICBIUkVTVUxUIGhyUmVhc29uLA0KICAgICAgICAgICAgIERXT1JEIGR3T3B0
aW9ucykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBU
ZXJtaW5hdGUoIA0KICAgICAgICAgICAgIERXT1JEIGR3T3B0aW9ucykgPSAwOw0KICAgICAgICAN
CiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTdXNwZW5kKCB2b2lkKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFJlc3VtZSggdm9pZCkg
PSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUzNzcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgNTM4MiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSA1Mzg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoN
Cg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAyOV92
MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAw
MF8wMDI5X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJSW50ZXJuZXRQ
cm90b2NvbCAqTFBJSU5URVJORVRQUk9UT0NPTDsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJ
SURfSUludGVybmV0UHJvdG9jb2w7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1
aWQoIjc5ZWFjOWU0LWJhZjktMTFjZS04YzgyLTAwYWEwMDRiYTkwYiIpKSBfX2RlY2xzcGVjKG5v
dnRhYmxlKQ0KICAgIElJbnRlcm5ldFByb3RvY29sIDogcHVibGljIElJbnRlcm5ldFByb3RvY29s
Um9vdA0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNh
bGwgUmVhZCggDQogICAgICAgICAgICAgdm9pZCAqcHYsDQogICAgICAgICAgICAgVUxPTkcgY2Is
DQogICAgICAgICAgICAgVUxPTkcgKnBjYlJlYWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2VlayggDQogICAgICAgICAgICAgTEFSR0VfSU5URUdF
UiBkbGliTW92ZSwNCiAgICAgICAgICAgICBEV09SRCBkd09yaWdpbiwNCiAgICAgICAgICAgICBV
TEFSR0VfSU5URUdFUiAqcGxpYk5ld1Bvc2l0aW9uKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIExvY2tSZXF1ZXN0KCANCiAgICAgICAgICAgICBEV09S
RCBkd09wdGlvbnMpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0
ZGNhbGwgVW5sb2NrUmVxdWVzdCggdm9pZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NTUyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoN
Cg0KDQoNCiNsaW5lIDU1NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xp
bmUgNTU2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCmV4dGVybiBSUENfSUZf
SEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAzMF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJu
IFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDMwX3YwXzBfc19pZnNwZWM7
DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JSW50ZXJuZXRQcm90
b2NvbEV4Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJDN0E5OEU2Ni0x
MDEwLTQ5MmMtQTFDOC1DODA5RTFGNzU5MDUiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJ
SW50ZXJuZXRQcm90b2NvbEV4IDogcHVibGljIElJbnRlcm5ldFByb3RvY29sDQogICAgew0KICAg
IHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTdGFydEV4KCANCiAg
ICAgICAgICAgICBJVXJpICpwVXJpLA0KICAgICAgICAgICAgIElJbnRlcm5ldFByb3RvY29sU2lu
ayAqcE9JUHJvdFNpbmssDQogICAgICAgICAgICAgSUludGVybmV0QmluZEluZm8gKnBPSUJpbmRJ
bmZvLA0KICAgICAgICAgICAgIERXT1JEIGdyZlBJLA0KICAgICAgICAgICAgIEhBTkRMRV9QVFIg
ZHdSZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NzMwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJs
bW9uLmgiDQoNCg0KDQoNCiNsaW5lIDU3MzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoN
CiANCg0KI2xpbmUgNTc0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KI2xpbmUgNTc0MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExf
aXRmX3VybG1vbl8wMDAwXzAwMzFfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExF
IF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAzMV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiAN
Cg0KdHlwZWRlZiAgSUludGVybmV0UHJvdG9jb2xTaW5rICpMUElJTlRFUk5FVFBST1RPQ09MU0lO
SzsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUludGVybmV0UHJvdG9jb2xTaW5rOw0K
DQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI3OWVhYzllNS1iYWY5LTExY2Ut
OGM4Mi0wMGFhMDA0YmE5MGIiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJSW50ZXJuZXRQ
cm90b2NvbFNpbmsgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFN3aXRjaCggDQogICAgICAgICAgICAgUFJPVE9D
T0xEQVRBICpwUHJvdG9jb2xEYXRhKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIFJlcG9ydFByb2dyZXNzKCANCiAgICAgICAgICAgICBVTE9ORyB1bFN0
YXR1c0NvZGUsDQogICAgICAgICAgICAgTFBDV1NUUiBzelN0YXR1c1RleHQpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVwb3J0RGF0YSggDQogICAg
ICAgICAgICAgRFdPUkQgZ3JmQlNDRiwNCiAgICAgICAgICAgICBVTE9ORyB1bFByb2dyZXNzLA0K
ICAgICAgICAgICAgIFVMT05HIHVsUHJvZ3Jlc3NNYXgpID0gMDsNCiAgICAgICAgDQogICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVwb3J0UmVzdWx0KCANCiAgICAgICAgICAgICBI
UkVTVUxUIGhyUmVzdWx0LA0KICAgICAgICAgICAgIERXT1JEIGR3RXJyb3IsDQogICAgICAgICAg
ICAgTFBDV1NUUiBzelJlc3VsdCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU4NjQgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgNTg2OSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1v
bi5oIg0KDQoNCg0KIA0KDQojbGluZSA1ODc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0K
DQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAzMl92MF8w
X2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8w
MDMyX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJSW50ZXJuZXRQcm90
b2NvbFNpbmtTdGFja2FibGUgKkxQSUlOVEVSTkVUUFJPVE9DT0xTSU5LU3RhY2thYmxlOw0KDQoN
CmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JSW50ZXJuZXRQcm90b2NvbFNpbmtTdGFja2FibGU7
DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjc5ZWFjOWYwLWJhZjktMTFj
ZS04YzgyLTAwYWEwMDRiYTkwYiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElJbnRlcm5l
dFByb3RvY29sU2lua1N0YWNrYWJsZSA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJs
aWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU3dpdGNoU2luayggDQogICAg
ICAgICAgICAgSUludGVybmV0UHJvdG9jb2xTaW5rICpwT0lQcm90U2luaykgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDb21taXRTd2l0Y2goIHZvaWQp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUm9sbGJh
Y2tTd2l0Y2goIHZvaWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDU5NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUg
NTk3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSA1OTg0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9p
dGZfdXJsbW9uXzAwMDBfMDAzM192MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUg
X19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDMzX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0K
DQp0eXBlZGVmICBJSW50ZXJuZXRTZXNzaW9uICpMUElJTlRFUk5FVFNFU1NJT047DQoNCnR5cGVk
ZWYgDQplbnVtIF90YWdPSUJER19GTEFHUw0KICAgIHsNCiAgICAgICAgT0lCREdfQVBBUlRNRU5U
VEhSRUFERUQJPSAweDEwMCwNCiAgICAgICAgT0lCREdfREFUQU9OTFkJPSAweDEwMDANCiAgICB9
IAlPSUJER19GTEFHUzsNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUludGVybmV0U2Vz
c2lvbjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNzllYWM5ZTctYmFm
OS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUlu
dGVybmV0U2Vzc2lvbiA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVnaXN0ZXJOYW1lU3BhY2UoIA0KICAgICAg
ICAgICAgIElDbGFzc0ZhY3RvcnkgKnBDRiwNCiAgICAgICAgICAgICBjb25zdCBJSUQgJiByY2xz
aWQsDQogICAgICAgICAgICAgTFBDV1NUUiBwd3pQcm90b2NvbCwNCiAgICAgICAgICAgICBVTE9O
RyBjUGF0dGVybnMsDQogICAgICAgICAgICAgY29uc3QgTFBDV1NUUiAqcHB3elBhdHRlcm5zLA0K
ICAgICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgVW5yZWdpc3Rlck5hbWVTcGFjZSggDQogICAgICAgICAg
ICAgSUNsYXNzRmFjdG9yeSAqcENGLA0KICAgICAgICAgICAgIExQQ1dTVFIgcHN6UHJvdG9jb2wp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVnaXN0
ZXJNaW1lRmlsdGVyKCANCiAgICAgICAgICAgICBJQ2xhc3NGYWN0b3J5ICpwQ0YsDQogICAgICAg
ICAgICAgY29uc3QgSUlEICYgcmNsc2lkLA0KICAgICAgICAgICAgIExQQ1dTVFIgcHd6VHlwZSkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBVbnJlZ2lz
dGVyTWltZUZpbHRlciggDQogICAgICAgICAgICAgSUNsYXNzRmFjdG9yeSAqcENGLA0KICAgICAg
ICAgICAgIExQQ1dTVFIgcHd6VHlwZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVCaW5kaW5nKCANCiAgICAgICAgICAgICBMUEJDIHBCQywN
CiAgICAgICAgICAgICBMUENXU1RSIHN6VXJsLA0KICAgICAgICAgICAgIElVbmtub3duICpwVW5r
T3V0ZXIsDQogICAgICAgICAgICAgSVVua25vd24gKipwcFVuaywNCiAgICAgICAgICAgICBJSW50
ZXJuZXRQcm90b2NvbCAqKnBwT0luZXRQcm90LA0KICAgICAgICAgICAgIERXT1JEIGR3T3B0aW9u
KSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFNldFNl
c3Npb25PcHRpb24oIA0KICAgICAgICAgICAgIERXT1JEIGR3T3B0aW9uLA0KICAgICAgICAgICAg
IExQVk9JRCBwQnVmZmVyLA0KICAgICAgICAgICAgIERXT1JEIGR3QnVmZmVyTGVuZ3RoLA0KICAg
ICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U2Vzc2lvbk9wdGlvbiggDQogICAgICAgICAgICAgRFdP
UkQgZHdPcHRpb24sDQogICAgICAgICAgICAgTFBWT0lEIHBCdWZmZXIsDQogICAgICAgICAgICAg
RFdPUkQgKnBkd0J1ZmZlckxlbmd0aCwNCiAgICAgICAgICAgICBEV09SRCBkd1Jlc2VydmVkKSA9
IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjE3MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA2MTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoN
Cg0KDQogDQoNCiNsaW5lIDYxODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KZXh0
ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDM0X3YwXzBfY19pZnNw
ZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMzRfdjBf
MF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYgIElJbnRlcm5ldFRocmVhZFN3aXRj
aCAqTFBJSU5URVJORVRUSFJFQURTV0lUQ0g7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlE
X0lJbnRlcm5ldFRocmVhZFN3aXRjaDsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWMo
dXVpZCgiNzllYWM5ZTgtYmFmOS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikpIF9fZGVjbHNwZWMo
bm92dGFibGUpDQogICAgSUludGVybmV0VGhyZWFkU3dpdGNoIDogcHVibGljIElVbmtub3duDQog
ICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBQcmVw
YXJlKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIENvbnRpbnVlKCB2b2lkKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNjI3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA2Mjc3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDYyODMgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1
cmxtb24uaCINCg0KDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25f
MDAwMF8wMDM1X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X3VybG1vbl8wMDAwXzAwMzVfdjBfMF9zX2lmc3BlYzsNCg0KDQoNCg0KDQogDQoNCnR5cGVkZWYg
IElJbnRlcm5ldFByaW9yaXR5ICpMUElJTlRFUk5FVFBSSU9SSVRZOw0KDQoNCmV4dGVybiAiQyIg
Y29uc3QgSUlEIElJRF9JSW50ZXJuZXRQcmlvcml0eTsNCg0KDQogICAgDQogICAgc3RydWN0IF9f
ZGVjbHNwZWModXVpZCgiNzllYWM5ZWItYmFmOS0xMWNlLThjODItMDBhYTAwNGJhOTBiIikpIF9f
ZGVjbHNwZWMobm92dGFibGUpDQogICAgSUludGVybmV0UHJpb3JpdHkgOiBwdWJsaWMgSVVua25v
d24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFNldFByaW9yaXR5KCANCiAgICAgICAgICAgICBMT05HIG5Qcmlvcml0eSkgPSAwOw0KICAgICAg
ICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRQcmlvcml0eSggDQogICAg
ICAgICAgICAgTE9ORyAqcG5Qcmlvcml0eSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA2Mzc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5l
IDYzODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xpbmUgNjM4NiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExf
aXRmX3VybG1vbl8wMDAwXzAwMzZfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExF
IF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAzNl92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiAN
Cg0KdHlwZWRlZiAgSUludGVybmV0UHJvdG9jb2xJbmZvICpMUElJTlRFUk5FVFBST1RPQ09MSU5G
TzsNCg0KdHlwZWRlZiANCmVudW0gX3RhZ1BBUlNFQUNUSU9ODQogICAgew0KICAgICAgICBQQVJT
RV9DQU5PTklDQUxJWkUJPSAxLA0KICAgICAgICBQQVJTRV9GUklFTkRMWQk9ICggUEFSU0VfQ0FO
T05JQ0FMSVpFICsgMSApICwNCiAgICAgICAgUEFSU0VfU0VDVVJJVFlfVVJMCT0gKCBQQVJTRV9G
UklFTkRMWSArIDEgKSAsDQogICAgICAgIFBBUlNFX1JPT1RET0NVTUVOVAk9ICggUEFSU0VfU0VD
VVJJVFlfVVJMICsgMSApICwNCiAgICAgICAgUEFSU0VfRE9DVU1FTlQJPSAoIFBBUlNFX1JPT1RE
T0NVTUVOVCArIDEgKSAsDQogICAgICAgIFBBUlNFX0FOQ0hPUgk9ICggUEFSU0VfRE9DVU1FTlQg
KyAxICkgLA0KICAgICAgICBQQVJTRV9FTkNPREVfSVNfVU5FU0NBUEUJPSAoIFBBUlNFX0FOQ0hP
UiArIDEgKSAsDQogICAgICAgIFBBUlNFX0RFQ09ERV9JU19FU0NBUEUJPSAoIFBBUlNFX0VOQ09E
RV9JU19VTkVTQ0FQRSArIDEgKSAsDQogICAgICAgIFBBUlNFX1BBVEhfRlJPTV9VUkwJPSAoIFBB
UlNFX0RFQ09ERV9JU19FU0NBUEUgKyAxICkgLA0KICAgICAgICBQQVJTRV9VUkxfRlJPTV9QQVRI
CT0gKCBQQVJTRV9QQVRIX0ZST01fVVJMICsgMSApICwNCiAgICAgICAgUEFSU0VfTUlNRQk9ICgg
UEFSU0VfVVJMX0ZST01fUEFUSCArIDEgKSAsDQogICAgICAgIFBBUlNFX1NFUlZFUgk9ICggUEFS
U0VfTUlNRSArIDEgKSAsDQogICAgICAgIFBBUlNFX1NDSEVNQQk9ICggUEFSU0VfU0VSVkVSICsg
MSApICwNCiAgICAgICAgUEFSU0VfU0lURQk9ICggUEFSU0VfU0NIRU1BICsgMSApICwNCiAgICAg
ICAgUEFSU0VfRE9NQUlOCT0gKCBQQVJTRV9TSVRFICsgMSApICwNCiAgICAgICAgUEFSU0VfTE9D
QVRJT04JPSAoIFBBUlNFX0RPTUFJTiArIDEgKSAsDQogICAgICAgIFBBUlNFX1NFQ1VSSVRZX0RP
TUFJTgk9ICggUEFSU0VfTE9DQVRJT04gKyAxICkgLA0KICAgICAgICBQQVJTRV9FU0NBUEUJPSAo
IFBBUlNFX1NFQ1VSSVRZX0RPTUFJTiArIDEgKSAsDQogICAgICAgIFBBUlNFX1VORVNDQVBFCT0g
KCBQQVJTRV9FU0NBUEUgKyAxICkgDQogICAgfSAJUEFSU0VBQ1RJT047DQoNCnR5cGVkZWYgDQpl
bnVtIF90YWdQU1VBQ1RJT04NCiAgICB7DQogICAgICAgIFBTVV9ERUZBVUxUCT0gMSwNCiAgICAg
ICAgUFNVX1NFQ1VSSVRZX1VSTF9PTkxZCT0gKCBQU1VfREVGQVVMVCArIDEgKSANCiAgICB9IAlQ
U1VBQ1RJT047DQoNCnR5cGVkZWYgDQplbnVtIF90YWdRVUVSWU9QVElPTg0KICAgIHsNCiAgICAg
ICAgUVVFUllfRVhQSVJBVElPTl9EQVRFCT0gMSwNCiAgICAgICAgUVVFUllfVElNRV9PRl9MQVNU
X0NIQU5HRQk9ICggUVVFUllfRVhQSVJBVElPTl9EQVRFICsgMSApICwNCiAgICAgICAgUVVFUllf
Q09OVEVOVF9FTkNPRElORwk9ICggUVVFUllfVElNRV9PRl9MQVNUX0NIQU5HRSArIDEgKSAsDQog
ICAgICAgIFFVRVJZX0NPTlRFTlRfVFlQRQk9ICggUVVFUllfQ09OVEVOVF9FTkNPRElORyArIDEg
KSAsDQogICAgICAgIFFVRVJZX1JFRlJFU0gJPSAoIFFVRVJZX0NPTlRFTlRfVFlQRSArIDEgKSAs
DQogICAgICAgIFFVRVJZX1JFQ09NQklORQk9ICggUVVFUllfUkVGUkVTSCArIDEgKSAsDQogICAg
ICAgIFFVRVJZX0NBTl9OQVZJR0FURQk9ICggUVVFUllfUkVDT01CSU5FICsgMSApICwNCiAgICAg
ICAgUVVFUllfVVNFU19ORVRXT1JLCT0gKCBRVUVSWV9DQU5fTkFWSUdBVEUgKyAxICkgLA0KICAg
ICAgICBRVUVSWV9JU19DQUNIRUQJPSAoIFFVRVJZX1VTRVNfTkVUV09SSyArIDEgKSAsDQogICAg
ICAgIFFVRVJZX0lTX0lOU1RBTExFREVOVFJZCT0gKCBRVUVSWV9JU19DQUNIRUQgKyAxICkgLA0K
ICAgICAgICBRVUVSWV9JU19DQUNIRURfT1JfTUFQUEVECT0gKCBRVUVSWV9JU19JTlNUQUxMRURF
TlRSWSArIDEgKSAsDQogICAgICAgIFFVRVJZX1VTRVNfQ0FDSEUJPSAoIFFVRVJZX0lTX0NBQ0hF
RF9PUl9NQVBQRUQgKyAxICkgLA0KICAgICAgICBRVUVSWV9JU19TRUNVUkUJPSAoIFFVRVJZX1VT
RVNfQ0FDSEUgKyAxICkgLA0KICAgICAgICBRVUVSWV9JU19TQUZFCT0gKCBRVUVSWV9JU19TRUNV
UkUgKyAxICkgLA0KICAgICAgICBRVUVSWV9VU0VTX0hJU1RPUllGT0xERVIJPSAoIFFVRVJZX0lT
X1NBRkUgKyAxICkgLA0KICAgICAgICBRVUVSWV9JU19DQUNIRURfQU5EX1VTQUJMRV9PRkZMSU5F
CT0gKCBRVUVSWV9VU0VTX0hJU1RPUllGT0xERVIgKyAxICkgDQogICAgfSAJUVVFUllPUFRJT047
DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lJbnRlcm5ldFByb3RvY29sSW5mbzsNCg0K
DQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNzllYWM5ZWMtYmFmOS0xMWNlLThj
ODItMDBhYTAwNGJhOTBiIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUludGVybmV0UHJv
dG9jb2xJbmZvIDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAg
dmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBQYXJzZVVybCggDQogICAgICAgICAgICAgTFBDV1NU
UiBwd3pVcmwsDQogICAgICAgICAgICAgUEFSU0VBQ1RJT04gUGFyc2VBY3Rpb24sDQogICAgICAg
ICAgICAgRFdPUkQgZHdQYXJzZUZsYWdzLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
TFBXU1RSIHB3elJlc3VsdCwNCiAgICAgICAgICAgICBEV09SRCBjY2hSZXN1bHQsDQogICAgICAg
ICAgICAgRFdPUkQgKnBjY2hSZXN1bHQsDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNlcnZlZCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDb21iaW5l
VXJsKCANCiAgICAgICAgICAgICBMUENXU1RSIHB3ekJhc2VVcmwsDQogICAgICAgICAgICAgTFBD
V1NUUiBwd3pSZWxhdGl2ZVVybCwNCiAgICAgICAgICAgICBEV09SRCBkd0NvbWJpbmVGbGFncywN
CiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgIExQV1NUUiBwd3pSZXN1bHQsDQogICAgICAg
ICAgICAgRFdPUkQgY2NoUmVzdWx0LA0KICAgICAgICAgICAgIERXT1JEICpwY2NoUmVzdWx0LA0K
ICAgICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZp
cnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgQ29tcGFyZVVybCggDQogICAgICAgICAgICAgTFBDV1NU
UiBwd3pVcmwxLA0KICAgICAgICAgICAgIExQQ1dTVFIgcHd6VXJsMiwNCiAgICAgICAgICAgICBE
V09SRCBkd0NvbXBhcmVGbGFncykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVT
VUxUIF9fc3RkY2FsbCBRdWVyeUluZm8oIA0KICAgICAgICAgICAgIExQQ1dTVFIgcHd6VXJsLA0K
ICAgICAgICAgICAgIFFVRVJZT1BUSU9OIE91ZXJ5T3B0aW9uLA0KICAgICAgICAgICAgIERXT1JE
IGR3UXVlcnlGbGFncywNCiAgICAgICAgICAgICBMUFZPSUQgcEJ1ZmZlciwNCiAgICAgICAgICAg
ICBEV09SRCBjYkJ1ZmZlciwNCiAgICAgICAgICAgICBEV09SRCAqcGNiQnVmLA0KICAgICAgICAg
ICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjU5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KDQojbGluZSA2NTk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCg0KDQoN
Cg0KDQojbGluZSA2NjEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQojbGluZSA2NjExICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY2MTkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx1cmxtb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYzMyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjQ3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIEhSRVNVTFQgX19z
dGRjYWxsIENvSW50ZXJuZXRQYXJzZVVybCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1dTVFIgICAg
ICBwd3pVcmwsICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBBUlNFQUNUSU9OICBQYXJzZUFjdGlvbiwgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEICAgICAgICBkd0ZsYWdzLCAgICAgICANCiAg
ICAgIExQV1NUUiAgICAgICBwc3pSZXN1bHQsICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERXT1JEICAgICAgICBjY2hSZXN1bHQsICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgKnBjY2hSZXN1
bHQsICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdP
UkQgICAgICAgIGR3UmVzZXJ2ZWQgICAgIA0KICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2Fs
bCBDb0ludGVybmV0UGFyc2VJVXJpKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVXJpICAgICAgICAqcElVcmks
ICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
QVJTRUFDVElPTiAgUGFyc2VBY3Rpb24sICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgZHdGbGFncywgICAgICAgDQogICAgICBMUFdT
VFIgICAgICAgcHd6UmVzdWx0LCAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEV09SRCAgICAgICAgY2NoUmVzdWx0LCAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEICAgICAgICpwY2NoUmVzdWx0LCAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEX1BUUiAgICBkd1Jlc2Vy
dmVkICAgICANCiAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgDQojbGluZSA2NjczICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQpleHRlcm4gIkMi
IEhSRVNVTFQgX19zdGRjYWxsIENvSW50ZXJuZXRDb21iaW5lVXJsKCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExQQ1dTVFIgICBwd3pCYXNlVXJsLCAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSICAgcHd6UmVsYXRpdmVVcmws
IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgICAg
IGR3Q29tYmluZUZsYWdzLCANCiAgICAgIExQV1NUUiAgICBwc3pSZXN1bHQsICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCAgICAgY2NoUmVz
dWx0LCAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEICAg
ICAqcGNjaFJlc3VsdCwgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
V09SRCAgICAgZHdSZXNlcnZlZCAgICAgIA0KICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KZXh0ZXJuICJDIiBI
UkVTVUxUIF9fc3RkY2FsbCBDb0ludGVybmV0Q29tYmluZVVybEV4KCAgICAgICAgICAgICAgIA0K
ICAgICAgICAgIElVcmkgICAgICAgKnBCYXNlVXJpLCAgICAgICANCiAgICAgICAgICBMUENXU1RS
ICAgICBwd3pSZWxhdGl2ZVVybCwgDQogICAgICAgICAgICAgICAgIERXT1JEICAgICAgIGR3Q29t
YmluZUZsYWdzLCANCiAgICAgICAgIElVcmkgICAgICAqKnBwQ29tYmluZWRVcmksICANCiAgICAg
ICAgICBEV09SRF9QVFIgICBkd1Jlc2VydmVkICAgICAgDQogICAgKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ29J
bnRlcm5ldENvbWJpbmVJVXJpICggICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgSVVyaSAg
ICAgICAqcEJhc2VVcmksICAgICAgIA0KICAgICAgICAgICAgICBJVXJpICAgICAgICpwUmVsYXRp
dmVVcmksICAgDQogICAgICAgICAgICAgICAgIERXT1JEICAgICAgIGR3Q29tYmluZUZsYWdzLCAN
CiAgICAgICAgIElVcmkgICAgICAqKnBwQ29tYmluZWRVcmksICANCiAgICAgICAgICBEV09SRF9Q
VFIgICBkd1Jlc2VydmVkICAgICAgDQogICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICANCiNsaW5lIDY2OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCmV4dGVybiAi
QyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ29JbnRlcm5ldENvbXBhcmVVcmwoICAgICAgICAgICAgIA0K
ICAgIExQQ1dTVFIgcHd6VXJsMSwgICAgICAgICAgICAgICAgICAgICANCiAgICBMUENXU1RSIHB3
elVybDIsICAgICAgICAgICAgICAgICAgICAgDQogICAgRFdPUkQgZHdGbGFncyAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ29JbnRlcm5ldEdldFByb3RvY29sRmxhZ3Mo
ICAgICAgIA0KICAgICAgICAgICAgIExQQ1dTVFIgICAgIHB3elVybCwgICAgICAgICANCiAgICAg
ICAgIERXT1JEICAgICAgKnBkd0ZsYWdzLCAgICAgICANCiAgICAgICAgICAgICBEV09SRCAgICAg
ICBkd1Jlc2VydmVkICAgICAgDQogICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBDb0ludGVybmV0UXVlcnlJbmZvKCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQQ1dTVFIgICAgIHB3elVy
bCwgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUVVFUllPUFRJT04gUXVlcnlPcHRpb25zLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEV09SRCAgICAgICBkd1F1ZXJ5RmxhZ3MsIA0KICAgICAg
IExQVk9JRCAgICAgIHB2QnVmZmVyLCAgICAgDQogICAgICAgICAgICAgICAgICAgICBEV09SRCAg
ICAgICBjYkJ1ZmZlciwgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEV09SRCAgICAgICpwY2JCdWZmZXIsICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEICAgICAgIGR3UmVzZXJ2ZWQgICAgDQogICAg
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ29JbnRlcm5ldEdl
dFNlc3Npb24oICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAg
RFdPUkQgICAgICAgICAgICAgICBkd1Nlc3Npb25Nb2RlLCAgICAgIA0KICAgICAgICAgSUludGVy
bmV0U2Vzc2lvbiAgKipwcElJbnRlcm5ldFNlc3Npb24sIA0KICAgICAgICAgICAgICAgICBEV09S
RCAgICAgICAgICAgICAgIGR3UmVzZXJ2ZWQgICAgICAgICAgDQogICAgKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VM
VCBfX3N0ZGNhbGwgQ29JbnRlcm5ldEdldFNlY3VyaXR5VXJsKCAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICBMUENXU1RSIHB3c3pVcmwsICAgICAgICANCiAgICAgICAgIExQV1NUUiAqcHB3c3pT
ZWNVcmwsICAgIA0KICAgICAgICAgICAgICBQU1VBQ1RJT04gICBwc3VBY3Rpb24sICANCiAgICAg
ICAgRFdPUkQgZHdSZXNlcnZlZCAgICAgICAgDQogICAgKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBBc3luY0luc3RhbGxE
aXN0cmlidXRpb25Vbml0KCAgICAgDQogICAgICBMUENXU1RSIHN6RGlzdFVuaXQsICAgICAgICAg
ICAgIA0KICAgICAgTFBDV1NUUiBzelRZUEUsICAgICAgICAgICAgIA0KICAgICAgTFBDV1NUUiBz
ekV4dCwgICAgICAgICAgICAgIA0KICAgIERXT1JEIGR3RmlsZVZlcnNpb25NUywgICAgICAgICAg
ICAgICANCiAgICBEV09SRCBkd0ZpbGVWZXJzaW9uTFMsICAgICAgICAgICAgICAgDQogICAgICBM
UENXU1RSIHN6VVJMLCAgICAgICAgICAgICAgICAgIA0KICAgICAgSUJpbmRDdHggKnBiYywgICAg
ICAgICAgICAgICAgICANCiAgICAgIExQVk9JRCAgIHB2UmVzZXJ2ZWQsICAgICAgDQogICAgRFdP
UkQgICBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCg0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBDb0lu
dGVybmV0R2V0U2VjdXJpdHlVcmxFeCggICAgICAgICAgIA0KICAgICAgICAgICAgICBJVXJpICAg
ICAgICAgICAqcFVyaSwgICAgICAgDQogICAgICAgICBJVXJpICAgICAgICAgICoqcHBTZWNVcmks
ICAgDQogICAgICAgICAgICAgICAgIFBTVUFDVElPTiAgICAgICBwc3VBY3Rpb24sICANCiAgICAg
ICAgRFdPUkRfUFRSICAgICAgIGR3UmVzZXJ2ZWQgIA0KICAgICk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQojbGluZSA2NzQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgi
DQoNCg0KDQp0eXBlZGVmIA0KZW51bSBfdGFnSU5URVJORVRGRUFUVVJFTElTVA0KICAgIHsNCiAg
ICAgICAgRkVBVFVSRV9PQkpFQ1RfQ0FDSElORwk9IDAsDQogICAgICAgIEZFQVRVUkVfWk9ORV9F
TEVWQVRJT04JPSAoIEZFQVRVUkVfT0JKRUNUX0NBQ0hJTkcgKyAxICkgLA0KICAgICAgICBGRUFU
VVJFX01JTUVfSEFORExJTkcJPSAoIEZFQVRVUkVfWk9ORV9FTEVWQVRJT04gKyAxICkgLA0KICAg
ICAgICBGRUFUVVJFX01JTUVfU05JRkZJTkcJPSAoIEZFQVRVUkVfTUlNRV9IQU5ETElORyArIDEg
KSAsDQogICAgICAgIEZFQVRVUkVfV0lORE9XX1JFU1RSSUNUSU9OUwk9ICggRkVBVFVSRV9NSU1F
X1NOSUZGSU5HICsgMSApICwNCiAgICAgICAgRkVBVFVSRV9XRUJPQ19QT1BVUE1BTkFHRU1FTlQJ
PSAoIEZFQVRVUkVfV0lORE9XX1JFU1RSSUNUSU9OUyArIDEgKSAsDQogICAgICAgIEZFQVRVUkVf
QkVIQVZJT1JTCT0gKCBGRUFUVVJFX1dFQk9DX1BPUFVQTUFOQUdFTUVOVCArIDEgKSAsDQogICAg
ICAgIEZFQVRVUkVfRElTQUJMRV9NS19QUk9UT0NPTAk9ICggRkVBVFVSRV9CRUhBVklPUlMgKyAx
ICkgLA0KICAgICAgICBGRUFUVVJFX0xPQ0FMTUFDSElORV9MT0NLRE9XTgk9ICggRkVBVFVSRV9E
SVNBQkxFX01LX1BST1RPQ09MICsgMSApICwNCiAgICAgICAgRkVBVFVSRV9TRUNVUklUWUJBTkQJ
PSAoIEZFQVRVUkVfTE9DQUxNQUNISU5FX0xPQ0tET1dOICsgMSApICwNCiAgICAgICAgRkVBVFVS
RV9SRVNUUklDVF9BQ1RJVkVYSU5TVEFMTAk9ICggRkVBVFVSRV9TRUNVUklUWUJBTkQgKyAxICkg
LA0KICAgICAgICBGRUFUVVJFX1ZBTElEQVRFX05BVklHQVRFX1VSTAk9ICggRkVBVFVSRV9SRVNU
UklDVF9BQ1RJVkVYSU5TVEFMTCArIDEgKSAsDQogICAgICAgIEZFQVRVUkVfUkVTVFJJQ1RfRklM
RURPV05MT0FECT0gKCBGRUFUVVJFX1ZBTElEQVRFX05BVklHQVRFX1VSTCArIDEgKSAsDQogICAg
ICAgIEZFQVRVUkVfQURET05fTUFOQUdFTUVOVAk9ICggRkVBVFVSRV9SRVNUUklDVF9GSUxFRE9X
TkxPQUQgKyAxICkgLA0KICAgICAgICBGRUFUVVJFX1BST1RPQ09MX0xPQ0tET1dOCT0gKCBGRUFU
VVJFX0FERE9OX01BTkFHRU1FTlQgKyAxICkgLA0KICAgICAgICBGRUFUVVJFX0hUVFBfVVNFUk5B
TUVfUEFTU1dPUkRfRElTQUJMRQk9ICggRkVBVFVSRV9QUk9UT0NPTF9MT0NLRE9XTiArIDEgKSAs
DQogICAgICAgIEZFQVRVUkVfU0FGRV9CSU5EVE9PQkpFQ1QJPSAoIEZFQVRVUkVfSFRUUF9VU0VS
TkFNRV9QQVNTV09SRF9ESVNBQkxFICsgMSApICwNCiAgICAgICAgRkVBVFVSRV9VTkNfU0FWRURG
SUxFQ0hFQ0sJPSAoIEZFQVRVUkVfU0FGRV9CSU5EVE9PQkpFQ1QgKyAxICkgLA0KICAgICAgICBG
RUFUVVJFX0dFVF9VUkxfRE9NX0ZJTEVQQVRIX1VORU5DT0RFRAk9ICggRkVBVFVSRV9VTkNfU0FW
RURGSUxFQ0hFQ0sgKyAxICkgLA0KICAgICAgICBGRUFUVVJFX1RBQkJFRF9CUk9XU0lORwk9ICgg
RkVBVFVSRV9HRVRfVVJMX0RPTV9GSUxFUEFUSF9VTkVOQ09ERUQgKyAxICkgLA0KICAgICAgICBG
RUFUVVJFX1NTTFVYCT0gKCBGRUFUVVJFX1RBQkJFRF9CUk9XU0lORyArIDEgKSAsDQogICAgICAg
IEZFQVRVUkVfRElTQUJMRV9OQVZJR0FUSU9OX1NPVU5EUwk9ICggRkVBVFVSRV9TU0xVWCArIDEg
KSAsDQogICAgICAgIEZFQVRVUkVfRElTQUJMRV9MRUdBQ1lfQ09NUFJFU1NJT04JPSAoIEZFQVRV
UkVfRElTQUJMRV9OQVZJR0FUSU9OX1NPVU5EUyArIDEgKSAsDQogICAgICAgIEZFQVRVUkVfRk9S
Q0VfQUREUl9BTkRfU1RBVFVTCT0gKCBGRUFUVVJFX0RJU0FCTEVfTEVHQUNZX0NPTVBSRVNTSU9O
ICsgMSApICwNCiAgICAgICAgRkVBVFVSRV9YTUxIVFRQCT0gKCBGRUFUVVJFX0ZPUkNFX0FERFJf
QU5EX1NUQVRVUyArIDEgKSAsDQogICAgICAgIEZFQVRVUkVfRElTQUJMRV9URUxORVRfUFJPVE9D
T0wJPSAoIEZFQVRVUkVfWE1MSFRUUCArIDEgKSAsDQogICAgICAgIEZFQVRVUkVfRkVFRFMJPSAo
IEZFQVRVUkVfRElTQUJMRV9URUxORVRfUFJPVE9DT0wgKyAxICkgLA0KICAgICAgICBGRUFUVVJF
X0JMT0NLX0lOUFVUX1BST01QVFMJPSAoIEZFQVRVUkVfRkVFRFMgKyAxICkgLA0KICAgICAgICBG
RUFUVVJFX0VOVFJZX0NPVU5UCT0gKCBGRUFUVVJFX0JMT0NLX0lOUFVUX1BST01QVFMgKyAxICkg
DQogICAgfSAJSU5URVJORVRGRUFUVVJFTElTVDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2ODEwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9u
LmgiDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIENvSW50ZXJuZXRTZXRGZWF0dXJlRW5h
YmxlZCggICAgICANCiAgICBJTlRFUk5FVEZFQVRVUkVMSVNUIEZlYXR1cmVFbnRyeSwgICAgDQog
ICAgRFdPUkQgZHdGbGFncywgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIEJPT0wgZkVuYWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIENvSW50ZXJuZXRJc0Zl
YXR1cmVFbmFibGVkKCAgICAgICANCiAgICBJTlRFUk5FVEZFQVRVUkVMSVNUIEZlYXR1cmVFbnRy
eSwgICAgDQogICAgRFdPUkQgZHdGbGFncyAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCmV4dGVybiAiQyIgSFJFU1VMVCBf
X3N0ZGNhbGwgQ29JbnRlcm5ldElzRmVhdHVyZUVuYWJsZWRGb3JVcmwoIA0KICAgIElOVEVSTkVU
RkVBVFVSRUxJU1QgRmVhdHVyZUVudHJ5LCAgICANCiAgICBEV09SRCBkd0ZsYWdzLCAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgICBMUENXU1RSIHN6VVJMLCAgICAgICAgICAgICAgICAgICAg
ICAgDQogICAgICBJSW50ZXJuZXRTZWN1cml0eU1hbmFnZXIgKnBTZWNNZ3IgICAgDQogICAgKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KZXh0ZXJuICJDIiBIUkVTVUxUIF9f
c3RkY2FsbCBDb0ludGVybmV0SXNGZWF0dXJlRW5hYmxlZEZvcklVcmkoIA0KICAgIElOVEVSTkVU
RkVBVFVSRUxJU1QgRmVhdHVyZUVudHJ5LCAgICAgDQogICAgRFdPUkQgZHdGbGFncywgICAgICAg
ICAgICAgICAgICAgICAgICANCiAgICAgIElVcmkgKiBwSVVyaSwgICAgICAgICAgICAgICAgICAg
ICAgICAgDQogICAgICBJSW50ZXJuZXRTZWN1cml0eU1hbmFnZXJFeDIgKnBTZWNNZ3IgIA0KICAg
ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQpleHRlcm4gIkMiIEhSRVNV
TFQgX19zdGRjYWxsIENvSW50ZXJuZXRJc0ZlYXR1cmVab25lRWxldmF0aW9uRW5hYmxlZCggDQog
ICAgICBMUENXU1RSIHN6RnJvbVVSTCwgICAgICAgICAgICAgICAgIA0KICAgICAgTFBDV1NUUiBz
elRvVVJMLCAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICBJSW50ZXJuZXRTZWN1cml0eU1h
bmFnZXIgKnBTZWNNZ3IsIA0KICAgIERXT1JEIGR3RmxhZ3MgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCiNsaW5lIDY4MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCiANCmV4dGVybiAiQyIgSFJF
U1VMVCBfX3N0ZGNhbGwgQ29weVN0Z01lZGl1bSggIGNvbnN0IFNUR01FRElVTSAqIHBjc3RnbWVk
U3JjLCAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RHTUVESVVNICogcHN0Z21lZERl
c3QpOyANCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgQ29weUJpbmRJbmZvKCAgY29uc3Qg
QklORElORk8gKiBwY2JpU3JjLCAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgQklORElO
Rk8gKiBwYmlEZXN0ICk7IA0KZXh0ZXJuICJDIiB2b2lkIF9fc3RkY2FsbCBSZWxlYXNlQmluZElu
Zm8oICAgQklORElORk8gKiBwYmluZGluZm8gKTsgIA0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA2ODU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQojbGluZSA2ODYwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIFBXU1RSIF9fc3RkY2Fs
bCBJRUdldFVzZXJQcml2YXRlTmFtZXNwYWNlTmFtZSh2b2lkKTsNCiANCg0KDQpleHRlcm4gIkMi
IEhSRVNVTFQgX19zdGRjYWxsIENvSW50ZXJuZXRDcmVhdGVTZWN1cml0eU1hbmFnZXIoICBJU2Vy
dmljZVByb3ZpZGVyICpwU1AsICBJSW50ZXJuZXRTZWN1cml0eU1hbmFnZXIgKipwcFNNLCBEV09S
RCBkd1Jlc2VydmVkKTsNCg0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBDb0ludGVybmV0
Q3JlYXRlWm9uZU1hbmFnZXIoICBJU2VydmljZVByb3ZpZGVyICpwU1AsICBJSW50ZXJuZXRab25l
TWFuYWdlciAqKnBwWk0sIERXT1JEIGR3UmVzZXJ2ZWQpOw0KDQoNCg0KZXh0ZXJuICJDIiBjb25z
dCBJSUQgQ0xTSURfSW50ZXJuZXRTZWN1cml0eU1hbmFnZXI7ICANCmV4dGVybiAiQyIgY29uc3Qg
SUlEIENMU0lEX0ludGVybmV0Wm9uZU1hbmFnZXI7ICANCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQg
Q0xTSURfUGVyc2lzdGVudFpvbmVJZGVudGlmaWVyOyAgDQojbGluZSA2ODgxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXJsbW9uLmgiDQoNCg0KDQoNCg0KI2xpbmUgNjg4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5o
Ig0KDQoNCg0KI2xpbmUgNjg5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwMzdfdjBfMF9j
X2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDAz
N192MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJ
SURfSUludGVybmV0U2VjdXJpdHlNZ3JTaXRlOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCI3OWVhYzllZC1iYWY5LTExY2UtOGM4Mi0wMGFhMDA0YmE5MGIiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJSW50ZXJuZXRTZWN1cml0eU1nclNpdGUgOiBwdWJsaWMgSVVu
a25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRj
YWxsIEdldFdpbmRvdyggDQogICAgICAgICAgICAgSFdORCAqcGh3bmQpID0gMDsNCiAgICAgICAg
DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgRW5hYmxlTW9kZWxlc3MoIA0KICAg
ICAgICAgICAgIEJPT0wgZkVuYWJsZSkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA2OTg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNsaW5lIDY5
ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xpbmUgNjk5NSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X3VybG1vbl8wMDAwXzAwMzhfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfdXJsbW9uXzAwMDBfMDAzOF92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgIA0KZW51bSBfX01JRExfSUludGVy
bmV0U2VjdXJpdHlNYW5hZ2VyXzAwMDENCiAgICB7DQogICAgICAgIFBVQUZfREVGQVVMVAk9IDAs
DQogICAgICAgIFBVQUZfTk9VSQk9IDB4MSwNCiAgICAgICAgUFVBRl9JU0ZJTEUJPSAweDIsDQog
ICAgICAgIFBVQUZfV0FSTl9JRl9ERU5JRUQJPSAweDQsDQogICAgICAgIFBVQUZfRk9SQ0VVSV9G
T1JFR1JPVU5ECT0gMHg4LA0KICAgICAgICBQVUFGX0NIRUNLX1RJRlMJPSAweDEwLA0KICAgICAg
ICBQVUFGX0RPTlRDSEVDS0JPWElORElBTE9HCT0gMHgyMCwNCiAgICAgICAgUFVBRl9UUlVTVEVE
CT0gMHg0MCwNCiAgICAgICAgUFVBRl9BQ0NFUFRfV0lMRENBUkRfU0NIRU1FCT0gMHg4MCwNCiAg
ICAgICAgUFVBRl9FTkZPUkNFUkVTVFJJQ1RFRAk9IDB4MTAwLA0KICAgICAgICBQVUFGX05PU0FW
RURGSUxFQ0hFQ0sJPSAweDIwMCwNCiAgICAgICAgUFVBRl9SRVFVSVJFU0FWRURGSUxFQ0hFQ0sJ
PSAweDQwMCwNCiAgICAgICAgUFVBRl9ET05UX1VTRV9DQUNIRQk9IDB4MTAwMCwNCiAgICAgICAg
UFVBRl9SRVNFUlZFRDEJPSAweDIwMDAsDQogICAgICAgIFBVQUZfUkVTRVJWRUQyCT0gMHg0MDAw
LA0KICAgICAgICBQVUFGX0xNWl9VTkxPQ0tFRAk9IDB4MTAwMDAsDQogICAgICAgIFBVQUZfTE1a
X0xPQ0tFRAk9IDB4MjAwMDAsDQogICAgICAgIFBVQUZfREVGQVVMVFpPTkVQT0wJPSAweDQwMDAw
LA0KICAgICAgICBQVUFGX05QTF9VU0VfTE9DS0VEX0lGX1JFU1RSSUNURUQJPSAweDgwMDAwLA0K
ICAgICAgICBQVUFGX05PVUlJRkxPQ0tFRAk9IDB4MTAwMDAwLA0KICAgICAgICBQVUFGX0RSQUdQ
Uk9UT0NPTENIRUNLCT0gMHgyMDAwMDANCiAgICB9IAlQVUFGOw0KDQp0eXBlZGVmICANCmVudW0g
X19NSURMX0lJbnRlcm5ldFNlY3VyaXR5TWFuYWdlcl8wMDAyDQogICAgew0KICAgICAgICBQVUFG
T1VUX0RFRkFVTFQJPSAwLA0KICAgICAgICBQVUFGT1VUX0lTTE9DS1pPTkVQT0xJQ1kJPSAweDEN
CiAgICB9IAlQVUFGT1VUOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0
eXBlZGVmICANCmVudW0gX19NSURMX0lJbnRlcm5ldFNlY3VyaXR5TWFuYWdlcl8wMDAzDQogICAg
ew0KICAgICAgICBTWk1fQ1JFQVRFCT0gMCwNCiAgICAgICAgU1pNX0RFTEVURQk9IDB4MQ0KICAg
IH0gCVNaTV9GTEFHUzsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBjb25zdCBJSUQgSUlEX0lJbnRlcm5ldFNlY3VyaXR5TWFuYWdlcjsNCg0KDQogICAgDQogICAg
c3RydWN0IF9fZGVjbHNwZWModXVpZCgiNzllYWM5ZWUtYmFmOS0xMWNlLThjODItMDBhYTAwNGJh
OTBiIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSUludGVybmV0U2VjdXJpdHlNYW5hZ2Vy
IDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBTZXRTZWN1cml0eVNpdGUoIA0KICAgICAgICAgICAgICAgSUludGVy
bmV0U2VjdXJpdHlNZ3JTaXRlICpwU2l0ZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVh
bCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRTZWN1cml0eVNpdGUoIA0KICAgICAgICAgICAgICAgSUlu
dGVybmV0U2VjdXJpdHlNZ3JTaXRlICoqcHBTaXRlKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIE1hcFVybFRvWm9uZSggDQogICAgICAgICAgICAgICBM
UENXU1RSIHB3c3pVcmwsDQogICAgICAgICAgICAgICBEV09SRCAqcGR3Wm9uZSwNCiAgICAgICAg
ICAgICBEV09SRCBkd0ZsYWdzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIEdldFNlY3VyaXR5SWQoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgTFBDV1NUUiBwd3N6VXJsLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgQllURSAq
cGJTZWN1cml0eUlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIERXT1JEICpwY2JT
ZWN1cml0eUlkLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgRFdPUkRfUFRSIGR3UmVz
ZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
UHJvY2Vzc1VybEFjdGlvbiggDQogICAgICAgICAgICAgICBMUENXU1RSIHB3c3pVcmwsDQogICAg
ICAgICAgICAgRFdPUkQgZHdBY3Rpb24sDQogICAgICAgICAgICAgICBCWVRFICpwUG9saWN5LA0K
ICAgICAgICAgICAgIERXT1JEIGNiUG9saWN5LA0KICAgICAgICAgICAgICAgQllURSAqcENvbnRl
eHQsDQogICAgICAgICAgICAgRFdPUkQgY2JDb250ZXh0LA0KICAgICAgICAgICAgIERXT1JEIGR3
RmxhZ3MsDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNlcnZlZCkgPSAwOw0KICAgICAgICANCiAg
ICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBRdWVyeUN1c3RvbVBvbGljeSggDQogICAg
ICAgICAgICAgICBMUENXU1RSIHB3c3pVcmwsDQogICAgICAgICAgICAgICBjb25zdCBHVUlEICYg
Z3VpZEtleSwNCiAgICAgICAgICAgICAgIEJZVEUgKipwcFBvbGljeSwNCiAgICAgICAgICAgICAg
IERXT1JEICpwY2JQb2xpY3ksDQogICAgICAgICAgICAgICBCWVRFICpwQ29udGV4dCwNCiAgICAg
ICAgICAgICBEV09SRCBjYkNvbnRleHQsDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNlcnZlZCkg
PSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRab25l
TWFwcGluZyggDQogICAgICAgICAgICAgRFdPUkQgZHdab25lLA0KICAgICAgICAgICAgICAgTFBD
V1NUUiBscHN6UGF0dGVybiwNCiAgICAgICAgICAgICBEV09SRCBkd0ZsYWdzKSA9IDA7DQogICAg
ICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFpvbmVNYXBwaW5ncygg
DQogICAgICAgICAgICAgRFdPUkQgZHdab25lLA0KICAgICAgICAgICAgICAgSUVudW1TdHJpbmcg
KipwcGVudW1TdHJpbmcsDQogICAgICAgICAgICAgRFdPUkQgZHdGbGFncykgPSAwOw0KICAgICAg
ICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzI4
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA3Mjg4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDcyOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24u
aCINCg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAw
XzAwMzlfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJs
bW9uXzAwMDBfMDAzOV92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUludGVybmV0U2VjdXJpdHlNYW5hZ2VyRXg7DQoN
Cg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIkYxNjRFREYxLUNDN0MtNGYwZC05
QTk0LTM0MjIyNjI1QzM5MyIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElJbnRlcm5ldFNl
Y3VyaXR5TWFuYWdlckV4IDogcHVibGljIElJbnRlcm5ldFNlY3VyaXR5TWFuYWdlcg0KICAgIHsN
CiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUHJvY2Vzc1Vy
bEFjdGlvbkV4KCANCiAgICAgICAgICAgICAgIExQQ1dTVFIgcHdzelVybCwNCiAgICAgICAgICAg
ICBEV09SRCBkd0FjdGlvbiwNCiAgICAgICAgICAgICAgIEJZVEUgKnBQb2xpY3ksDQogICAgICAg
ICAgICAgRFdPUkQgY2JQb2xpY3ksDQogICAgICAgICAgICAgICBCWVRFICpwQ29udGV4dCwNCiAg
ICAgICAgICAgICBEV09SRCBjYkNvbnRleHQsDQogICAgICAgICAgICAgRFdPUkQgZHdGbGFncywN
CiAgICAgICAgICAgICBEV09SRCBkd1Jlc2VydmVkLA0KICAgICAgICAgICAgICAgRFdPUkQgKnBk
d091dEZsYWdzKSA9IDA7DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc0ODAg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgNzQ4NSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHVybG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSA3NDkxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgi
DQojbGluZSA3NDkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCg0KZXh0ZXJuIFJQ
Q19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDQwX3YwXzBfY19pZnNwZWM7DQpl
eHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwNDBfdjBfMF9zX2lm
c3BlYzsNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lJ
bnRlcm5ldFNlY3VyaXR5TWFuYWdlckV4MjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNw
ZWModXVpZCgiRjFFNTAyOTItQTc5NS00MTE3LThFMDktMkI1NjBBNzJBQzYwIikpIF9fZGVjbHNw
ZWMobm92dGFibGUpDQogICAgSUludGVybmV0U2VjdXJpdHlNYW5hZ2VyRXgyIDogcHVibGljIElJ
bnRlcm5ldFNlY3VyaXR5TWFuYWdlckV4DQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBNYXBVcmxUb1pvbmVFeDIoIA0KICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgSVVyaSAqcFVyaSwNCiAgICAgICAgICAgICAgIERXT1JEICpwZHdab25l
LA0KICAgICAgICAgICAgIERXT1JEIGR3RmxhZ3MsDQogICAgICAgICAgICAgDQogICAgICAgICAg
ICAgIExQV1NUUiAqcHB3c3pNYXBwZWRVcmwsDQogICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICBEV09SRCAqcGR3T3V0RmxhZ3MpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJF
U1VMVCBfX3N0ZGNhbGwgUHJvY2Vzc1VybEFjdGlvbkV4MiggDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICBJVXJpICpwVXJpLA0KICAgICAgICAgICAgIERXT1JEIGR3QWN0aW9uLA0KICAg
ICAgICAgICAgICAgQllURSAqcFBvbGljeSwNCiAgICAgICAgICAgICBEV09SRCBjYlBvbGljeSwN
CiAgICAgICAgICAgICAgIEJZVEUgKnBDb250ZXh0LA0KICAgICAgICAgICAgIERXT1JEIGNiQ29u
dGV4dCwNCiAgICAgICAgICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgICAgIERXT1JEX1BU
UiBkd1Jlc2VydmVkLA0KICAgICAgICAgICAgICAgRFdPUkQgKnBkd091dEZsYWdzKSA9IDA7DQog
ICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFNlY3VyaXR5SWRF
eDIoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgSVVyaSAqcFVyaSwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIEJZVEUgKnBiU2VjdXJpdHlJZCwNCiAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICBEV09SRCAqcGNiU2VjdXJpdHlJZCwNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIERXT1JEX1BUUiBkd1Jlc2VydmVkKSA9IDA7DQogICAgICAgIA0KICAgICAg
ICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIFF1ZXJ5Q3VzdG9tUG9saWN5RXgyKCANCiAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgIElVcmkgKnBVcmksDQogICAgICAgICAgICAgICBjb25z
dCBHVUlEICYgZ3VpZEtleSwNCiAgICAgICAgICAgICAgIEJZVEUgKipwcFBvbGljeSwNCiAgICAg
ICAgICAgICAgIERXT1JEICpwY2JQb2xpY3ksDQogICAgICAgICAgICAgICBCWVRFICpwQ29udGV4
dCwNCiAgICAgICAgICAgICBEV09SRCBjYkNvbnRleHQsDQogICAgICAgICAgICAgRFdPUkRfUFRS
IGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDc3NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgNzc3MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSA3Nzc2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJs
bW9uLmgiDQojbGluZSA3Nzc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQpleHRlcm4g
UlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwNDFfdjBfMF9jX2lmc3BlYzsN
CmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA0MV92MF8wX3Nf
aWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSVpvbmVJ
ZGVudGlmaWVyOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCJjZDQ1ZjE4
NS0xYjIxLTQ4ZTItOTY3Yi1lYWQ3NDNhODkxNGUiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAg
ICBJWm9uZUlkZW50aWZpZXIgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldElkKCANCiAgICAgICAgICAgICAg
IERXT1JEICpwZHdab25lKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
X19zdGRjYWxsIFNldElkKCANCiAgICAgICAgICAgICBEV09SRCBkd1pvbmUpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUmVtb3ZlKCB2b2lkKSA9IDA7
DQogICAgICAgIA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc4NzQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgNzg3OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHVybG1vbi5oIg0KDQoNCg0KIA0KDQojbGluZSA3ODg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4MDQyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJs
bW9uLmgiDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJs
bW9uXzAwMDBfMDA0M192MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURM
X2l0Zl91cmxtb25fMDAwMF8wMDQzX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCg0K
ZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lJbnRlcm5ldEhvc3RTZWN1cml0eU1hbmFnZXI7DQoN
Cg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjNhZjI4MGI2LWNiM2YtMTFkMC04
OTFlLTAwYzA0ZmI2YmZjNCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElJbnRlcm5ldEhv
c3RTZWN1cml0eU1hbmFnZXIgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0K
ICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFNlY3VyaXR5SWQoIA0KICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgQllURSAqcGJTZWN1cml0eUlkLA0KICAgICAgICAgICAg
IA0KICAgICAgICAgICAgICAgICAgIERXT1JEICpwY2JTZWN1cml0eUlkLA0KICAgICAgICAgICAg
IERXT1JEX1BUUiBkd1Jlc2VydmVkKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgX19zdGRjYWxsIFByb2Nlc3NVcmxBY3Rpb24oIA0KICAgICAgICAgICAgIERXT1JEIGR3
QWN0aW9uLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgQllURSAqcFBvbGljeSwNCiAg
ICAgICAgICAgICBEV09SRCBjYlBvbGljeSwNCiAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
IEJZVEUgKnBDb250ZXh0LA0KICAgICAgICAgICAgIERXT1JEIGNiQ29udGV4dCwNCiAgICAgICAg
ICAgICBEV09SRCBkd0ZsYWdzLA0KICAgICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsN
CiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUXVlcnlDdXN0b21Q
b2xpY3koIA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQgJiBndWlkS2V5LA0KICAgICAgICAgICAg
IA0KICAgICAgICAgICAgICBCWVRFICoqcHBQb2xpY3ksDQogICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICBEV09SRCAqcGNiUG9saWN5LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
QllURSAqcENvbnRleHQsDQogICAgICAgICAgICAgRFdPUkQgY2JDb250ZXh0LA0KICAgICAgICAg
ICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQogICAgfTsNCiAgICANCiAgICAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgODE4NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA4MTkxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDgxOTcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFx1cmxtb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA4MjgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCg0KI2xp
bmUgODI4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
ODM1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgzNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgzOTQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxt
b24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCBHVUlEX0NVU1RP
TV9MT0NBTE1BQ0hJTkVaT05FVU5MT0NLRUQ7IA0KI2xpbmUgODQ2MiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8w
MDAwXzAwNDRfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZf
dXJsbW9uXzAwMDBfMDA0NF92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KdHlwZWRlZiAg
SUludGVybmV0Wm9uZU1hbmFnZXIgKkxQVVJMWk9ORU1BTkFHRVI7DQoNCnR5cGVkZWYgDQplbnVt
IHRhZ1VSTFpPTkUNCiAgICB7DQogICAgICAgIFVSTFpPTkVfSU5WQUxJRAk9IC0xLA0KICAgICAg
ICBVUkxaT05FX1BSRURFRklORURfTUlOCT0gMCwNCiAgICAgICAgVVJMWk9ORV9MT0NBTF9NQUNI
SU5FCT0gMCwNCiAgICAgICAgVVJMWk9ORV9JTlRSQU5FVAk9ICggVVJMWk9ORV9MT0NBTF9NQUNI
SU5FICsgMSApICwNCiAgICAgICAgVVJMWk9ORV9UUlVTVEVECT0gKCBVUkxaT05FX0lOVFJBTkVU
ICsgMSApICwNCiAgICAgICAgVVJMWk9ORV9JTlRFUk5FVAk9ICggVVJMWk9ORV9UUlVTVEVEICsg
MSApICwNCiAgICAgICAgVVJMWk9ORV9VTlRSVVNURUQJPSAoIFVSTFpPTkVfSU5URVJORVQgKyAx
ICkgLA0KICAgICAgICBVUkxaT05FX1BSRURFRklORURfTUFYCT0gOTk5LA0KICAgICAgICBVUkxa
T05FX1VTRVJfTUlOCT0gMTAwMCwNCiAgICAgICAgVVJMWk9ORV9VU0VSX01BWAk9IDEwMDAwDQog
ICAgfSAJVVJMWk9ORTsNCg0KDQoNCnR5cGVkZWYgDQplbnVtIHRhZ1VSTFRFTVBMQVRFDQogICAg
ew0KICAgICAgICBVUkxURU1QTEFURV9DVVNUT00JPSAwLA0KICAgICAgICBVUkxURU1QTEFURV9Q
UkVERUZJTkVEX01JTgk9IDB4MTAwMDAsDQogICAgICAgIFVSTFRFTVBMQVRFX0xPVwk9IDB4MTAw
MDAsDQogICAgICAgIFVSTFRFTVBMQVRFX01FRExPVwk9IDB4MTA1MDAsDQogICAgICAgIFVSTFRF
TVBMQVRFX01FRElVTQk9IDB4MTEwMDAsDQogICAgICAgIFVSTFRFTVBMQVRFX01FREhJR0gJPSAw
eDExNTAwLA0KICAgICAgICBVUkxURU1QTEFURV9ISUdICT0gMHgxMjAwMCwNCiAgICAgICAgVVJM
VEVNUExBVEVfUFJFREVGSU5FRF9NQVgJPSAweDIwMDAwDQogICAgfSAJVVJMVEVNUExBVEU7DQoN
Cg0KZW51bSBfX01JRExfSUludGVybmV0Wm9uZU1hbmFnZXJfMDAwMQ0KICAgIHsNCiAgICAgICAg
TUFYX1pPTkVfUEFUSAk9IDI2MCwNCiAgICAgICAgTUFYX1pPTkVfREVTQ1JJUFRJT04JPSAyMDAN
CiAgICB9IDsNCnR5cGVkZWYgIA0KZW51bSBfX01JRExfSUludGVybmV0Wm9uZU1hbmFnZXJfMDAw
Mg0KICAgIHsNCiAgICAgICAgWkFGTEFHU19DVVNUT01fRURJVAk9IDB4MSwNCiAgICAgICAgWkFG
TEFHU19BRERfU0lURVMJPSAweDIsDQogICAgICAgIFpBRkxBR1NfUkVRVUlSRV9WRVJJRklDQVRJ
T04JPSAweDQsDQogICAgICAgIFpBRkxBR1NfSU5DTFVERV9QUk9YWV9PVkVSUklERQk9IDB4OCwN
CiAgICAgICAgWkFGTEFHU19JTkNMVURFX0lOVFJBTkVUX1NJVEVTCT0gMHgxMCwNCiAgICAgICAg
WkFGTEFHU19OT19VSQk9IDB4MjAsDQogICAgICAgIFpBRkxBR1NfU1VQUE9SVFNfVkVSSUZJQ0FU
SU9OCT0gMHg0MCwNCiAgICAgICAgWkFGTEFHU19VTkNfQVNfSU5UUkFORVQJPSAweDgwLA0KICAg
ICAgICBaQUZMQUdTX0RFVEVDVF9JTlRSQU5FVAk9IDB4MTAwLA0KICAgICAgICBaQUZMQUdTX1VT
RV9MT0NLRURfWk9ORVMJPSAweDEwMDAwLA0KICAgICAgICBaQUZMQUdTX1ZFUklGWV9URU1QTEFU
RV9TRVRUSU5HUwk9IDB4MjAwMDAsDQogICAgICAgIFpBRkxBR1NfTk9fQ0FDSEUJPSAweDQwMDAw
DQogICAgfSAJWkFGTEFHUzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1pPTkVBVFRSSUJVVEVTDQogICAg
ew0KICAgIFVMT05HIGNiU2l6ZTsNCiAgICBXQ0hBUiBzekRpc3BsYXlOYW1lWyAyNjAgXTsNCiAg
ICBXQ0hBUiBzekRlc2NyaXB0aW9uWyAyMDAgXTsNCiAgICBXQ0hBUiBzekljb25QYXRoWyAyNjAg
XTsNCiAgICBEV09SRCBkd1RlbXBsYXRlTWluTGV2ZWw7DQogICAgRFdPUkQgZHdUZW1wbGF0ZVJl
Y29tbWVuZGVkOw0KICAgIERXT1JEIGR3VGVtcGxhdGVDdXJyZW50TGV2ZWw7DQogICAgRFdPUkQg
ZHdGbGFnczsNCiAgICB9IAlaT05FQVRUUklCVVRFUzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1pPTkVB
VFRSSUJVVEVTICpMUFpPTkVBVFRSSUJVVEVTOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCnR5cGVkZWYgDQplbnVtIF9VUkxaT05FUkVHDQogICAgew0KICAgICAgICBVUkxaT05F
UkVHX0RFRkFVTFQJPSAwLA0KICAgICAgICBVUkxaT05FUkVHX0hLTE0JPSAoIFVSTFpPTkVSRUdf
REVGQVVMVCArIDEgKSAsDQogICAgICAgIFVSTFpPTkVSRUdfSEtDVQk9ICggVVJMWk9ORVJFR19I
S0xNICsgMSApIA0KICAgIH0gCVVSTFpPTkVSRUc7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJ
SUQgSUlEX0lJbnRlcm5ldFpvbmVNYW5hZ2VyOw0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19kZWNs
c3BlYyh1dWlkKCI3OWVhYzllZi1iYWY5LTExY2UtOGM4Mi0wMGFhMDA0YmE5MGIiKSkgX19kZWNs
c3BlYyhub3Z0YWJsZSkNCiAgICBJSW50ZXJuZXRab25lTWFuYWdlciA6IHB1YmxpYyBJVW5rbm93
bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
R2V0Wm9uZUF0dHJpYnV0ZXMoIA0KICAgICAgICAgICAgIERXT1JEIGR3Wm9uZSwNCiAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgIFpPTkVBVFRSSUJVVEVTICpwWm9uZUF0dHJpYnV0ZXMpID0g
MDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0Wm9uZUF0
dHJpYnV0ZXMoIA0KICAgICAgICAgICAgIERXT1JEIGR3Wm9uZSwNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgIFpPTkVBVFRSSUJVVEVTICpwWm9uZUF0dHJpYnV0ZXMpID0gMDsNCiAgICAg
ICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0Wm9uZUN1c3RvbVBvbGlj
eSggDQogICAgICAgICAgICAgRFdPUkQgZHdab25lLA0KICAgICAgICAgICAgIGNvbnN0IEdVSUQg
JiBndWlkS2V5LA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBCWVRFICoqcHBQb2xpY3ks
DQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBEV09SRCAqcGNiUG9saWN5LA0KICAgICAg
ICAgICAgIFVSTFpPTkVSRUcgdXJsWm9uZVJlZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmly
dHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBTZXRab25lQ3VzdG9tUG9saWN5KCANCiAgICAgICAgICAg
ICBEV09SRCBkd1pvbmUsDQogICAgICAgICAgICAgY29uc3QgR1VJRCAmIGd1aWRLZXksDQogICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICBCWVRFICpwUG9saWN5LA0KICAgICAgICAgICAgIERX
T1JEIGNiUG9saWN5LA0KICAgICAgICAgICAgIFVSTFpPTkVSRUcgdXJsWm9uZVJlZykgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRab25lQWN0aW9u
UG9saWN5KCANCiAgICAgICAgICAgICBEV09SRCBkd1pvbmUsDQogICAgICAgICAgICAgRFdPUkQg
ZHdBY3Rpb24sDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBCWVRFICpwUG9saWN5LA0K
ICAgICAgICAgICAgIERXT1JEIGNiUG9saWN5LA0KICAgICAgICAgICAgIFVSTFpPTkVSRUcgdXJs
Wm9uZVJlZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2Fs
bCBTZXRab25lQWN0aW9uUG9saWN5KCANCiAgICAgICAgICAgICBEV09SRCBkd1pvbmUsDQogICAg
ICAgICAgICAgRFdPUkQgZHdBY3Rpb24sDQogICAgICAgICAgICAgDQogICAgICAgICAgICAgICBC
WVRFICpwUG9saWN5LA0KICAgICAgICAgICAgIERXT1JEIGNiUG9saWN5LA0KICAgICAgICAgICAg
IFVSTFpPTkVSRUcgdXJsWm9uZVJlZykgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBQcm9tcHRBY3Rpb24oIA0KICAgICAgICAgICAgIERXT1JEIGR3QWN0
aW9uLA0KICAgICAgICAgICAgIEhXTkQgaHduZFBhcmVudCwNCiAgICAgICAgICAgICBMUENXU1RS
IHB3c3pVcmwsDQogICAgICAgICAgICAgTFBDV1NUUiBwd3N6VGV4dCwNCiAgICAgICAgICAgICBE
V09SRCBkd1Byb21wdEZsYWdzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNV
TFQgX19zdGRjYWxsIExvZ0FjdGlvbiggDQogICAgICAgICAgICAgRFdPUkQgZHdBY3Rpb24sDQog
ICAgICAgICAgICAgTFBDV1NUUiBwd3N6VXJsLA0KICAgICAgICAgICAgIExQQ1dTVFIgcHdzelRl
eHQsDQogICAgICAgICAgICAgRFdPUkQgZHdMb2dGbGFncykgPSAwOw0KICAgICAgICANCiAgICAg
ICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVab25lRW51bWVyYXRvciggDQogICAg
ICAgICAgICAgRFdPUkQgKnBkd0VudW0sDQogICAgICAgICAgICAgRFdPUkQgKnBkd0NvdW50LA0K
ICAgICAgICAgICAgIERXT1JEIGR3RmxhZ3MpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1
YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0Wm9uZUF0KCANCiAgICAgICAgICAgICBEV09SRCBkd0Vu
dW0sDQogICAgICAgICAgICAgRFdPUkQgZHdJbmRleCwNCiAgICAgICAgICAgICBEV09SRCAqcGR3
Wm9uZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBE
ZXN0cm95Wm9uZUVudW1lcmF0b3IoIA0KICAgICAgICAgICAgIERXT1JEIGR3RW51bSkgPSAwOw0K
ICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBDb3B5VGVtcGxhdGVQ
b2xpY2llc1RvWm9uZSggDQogICAgICAgICAgICAgRFdPUkQgZHdUZW1wbGF0ZSwNCiAgICAgICAg
ICAgICBEV09SRCBkd1pvbmUsDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNlcnZlZCkgPSAwOw0K
ICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4ODUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoN
Cg0KDQoNCiNsaW5lIDg4NTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xp
bmUgODg2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQoNCmV4dGVybiBSUENfSUZf
SEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA0NV92MF8wX2NfaWZzcGVjOw0KZXh0ZXJu
IFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDQ1X3YwXzBfc19pZnNwZWM7
DQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJ
SURfSUludGVybmV0Wm9uZU1hbmFnZXJFeDsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNw
ZWModXVpZCgiQTRDMjMzMzktOEUwNi00MzFlLTlCRjQtN0U3MTFDMDg1NjQ4IikpIF9fZGVjbHNw
ZWMobm92dGFibGUpDQogICAgSUludGVybmV0Wm9uZU1hbmFnZXJFeCA6IHB1YmxpYyBJSW50ZXJu
ZXRab25lTWFuYWdlcg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgR2V0Wm9uZUFjdGlvblBvbGljeUV4KCANCiAgICAgICAgICAgICBEV09SRCBk
d1pvbmUsDQogICAgICAgICAgICAgRFdPUkQgZHdBY3Rpb24sDQogICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICBCWVRFICpwUG9saWN5LA0KICAgICAgICAgICAgIERXT1JEIGNiUG9saWN5LA0K
ICAgICAgICAgICAgIFVSTFpPTkVSRUcgdXJsWm9uZVJlZywNCiAgICAgICAgICAgICBEV09SRCBk
d0ZsYWdzKSA9IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxs
IFNldFpvbmVBY3Rpb25Qb2xpY3lFeCggDQogICAgICAgICAgICAgRFdPUkQgZHdab25lLA0KICAg
ICAgICAgICAgIERXT1JEIGR3QWN0aW9uLA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
QllURSAqcFBvbGljeSwNCiAgICAgICAgICAgICBEV09SRCBjYlBvbGljeSwNCiAgICAgICAgICAg
ICBVUkxaT05FUkVHIHVybFpvbmVSZWcsDQogICAgICAgICAgICAgRFdPUkQgZHdGbGFncykgPSAw
Ow0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MTA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoN
Cg0KDQoNCiNsaW5lIDkxMTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xp
bmUgOTExOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KI2xpbmUgOTEyMCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHVybG1vbi5oIg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRm
X3VybG1vbl8wMDAwXzAwNDZfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfdXJsbW9uXzAwMDBfMDA0Nl92MF8wX3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0K
DQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUludGVybmV0Wm9uZU1hbmFnZXJFeDI7
DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIkVEQzE3NTU5LURENUQtNDg0
Ni04RUVGLThCRUNCQTVBNEFCRiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElJbnRlcm5l
dFpvbmVNYW5hZ2VyRXgyIDogcHVibGljIElJbnRlcm5ldFpvbmVNYW5hZ2VyRXgNCiAgICB7DQog
ICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldFpvbmVBdHRy
aWJ1dGVzRXgoIA0KICAgICAgICAgICAgIERXT1JEIGR3Wm9uZSwNCiAgICAgICAgICAgICBaT05F
QVRUUklCVVRFUyAqcFpvbmVBdHRyaWJ1dGVzLA0KICAgICAgICAgICAgIERXT1JEIGR3RmxhZ3Mp
ID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0Wm9u
ZVNlY3VyaXR5U3RhdGUoIA0KICAgICAgICAgICAgIERXT1JEIGR3Wm9uZUluZGV4LA0KICAgICAg
ICAgICAgIEJPT0wgZlJlc3BlY3RQb2xpY3ksDQogICAgICAgICAgICAgTFBEV09SRCBwZHdTdGF0
ZSwNCiAgICAgICAgICAgICBCT09MICpwZlBvbGljeUVuY291bnRlcmVkKSA9IDA7DQogICAgICAg
IA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldElFU2VjdXJpdHlTdGF0ZSgg
DQogICAgICAgICAgICAgQk9PTCBmUmVzcGVjdFBvbGljeSwNCiAgICAgICAgICAgICBMUERXT1JE
IHBkd1N0YXRlLA0KICAgICAgICAgICAgIEJPT0wgKnBmUG9saWN5RW5jb3VudGVyZWQsDQogICAg
ICAgICAgICAgQk9PTCBmTm9DYWNoZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBGaXhVbnNlY3VyZVNldHRpbmdzKCB2b2lkKSA9IDA7DQogICAgICAg
IA0KICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk0MDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24u
aCINCg0KDQoNCg0KI2xpbmUgOTQwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KIA0K
DQojbGluZSA5NDExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQojbGluZSA5NDEyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcdXJsbW9uLmgiDQpleHRlcm4gIkMiIGNvbnN0IElJRCBDTFNJRF9Tb2Z0RGlzdEV4dDsg
IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF90YWdDT0RFQkFT
RUhPTEQNCiAgICB7DQogICAgVUxPTkcgY2JTaXplOw0KICAgIExQV1NUUiBzekRpc3RVbml0Ow0K
ICAgIExQV1NUUiBzekNvZGVCYXNlOw0KICAgIERXT1JEIGR3VmVyc2lvbk1TOw0KICAgIERXT1JE
IGR3VmVyc2lvbkxTOw0KICAgIERXT1JEIGR3U3R5bGU7DQogICAgfSAJQ09ERUJBU0VIT0xEOw0K
DQp0eXBlZGVmIHN0cnVjdCBfdGFnQ09ERUJBU0VIT0xEICpMUENPREVCQVNFSE9MRDsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX3RhZ1NPRlRESVNUSU5GTw0KICAgIHsNCiAgICBVTE9ORyBjYlNpemU7DQog
ICAgRFdPUkQgZHdGbGFnczsNCiAgICBEV09SRCBkd0FkU3RhdGU7DQogICAgTFBXU1RSIHN6VGl0
bGU7DQogICAgTFBXU1RSIHN6QWJzdHJhY3Q7DQogICAgTFBXU1RSIHN6SFJFRjsNCiAgICBEV09S
RCBkd0luc3RhbGxlZFZlcnNpb25NUzsNCiAgICBEV09SRCBkd0luc3RhbGxlZFZlcnNpb25MUzsN
CiAgICBEV09SRCBkd1VwZGF0ZVZlcnNpb25NUzsNCiAgICBEV09SRCBkd1VwZGF0ZVZlcnNpb25M
UzsNCiAgICBEV09SRCBkd0FkdmVydGlzZWRWZXJzaW9uTVM7DQogICAgRFdPUkQgZHdBZHZlcnRp
c2VkVmVyc2lvbkxTOw0KICAgIERXT1JEIGR3UmVzZXJ2ZWQ7DQogICAgfSAJU09GVERJU1RJTkZP
Ow0KDQp0eXBlZGVmIHN0cnVjdCBfdGFnU09GVERJU1RJTkZPICpMUFNPRlRESVNUSU5GTzsNCg0K
DQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA0N192MF8w
X2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8w
MDQ3X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlE
IElJRF9JU29mdERpc3RFeHQ7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQo
IkIxNUI4REMxLUM3RTEtMTFkMC04NjgwLTAwQUEwMEJEQ0I3MSIpKSBfX2RlY2xzcGVjKG5vdnRh
YmxlKQ0KICAgIElTb2Z0RGlzdEV4dCA6IHB1YmxpYyBJVW5rbm93bg0KICAgIHsNCiAgICBwdWJs
aWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgUHJvY2Vzc1NvZnREaXN0KCAN
CiAgICAgICAgICAgICBMUENXU1RSIHN6Q0RGVVJMLA0KICAgICAgICAgICAgIElYTUxFbGVtZW50
ICpwU29mdERpc3RFbGVtZW50LA0KICAgICAgICAgICAgIExQU09GVERJU1RJTkZPIGxwc2RpKSA9
IDA7DQogICAgICAgIA0KICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldEZpcnN0
Q29kZUJhc2UoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBXU1RSICpzekNvZGVC
YXNlLA0KICAgICAgICAgICAgIExQRFdPUkQgZHdNYXhTaXplKSA9IDA7DQogICAgICAgIA0KICAg
ICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldE5leHRDb2RlQmFzZSggDQogICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICBMUFdTVFIgKnN6Q29kZUJhc2UsDQogICAgICAgICAgICAg
TFBEV09SRCBkd01heFNpemUpID0gMDsNCiAgICAgICAgDQogICAgICAgIHZpcnR1YWwgSFJFU1VM
VCBfX3N0ZGNhbGwgQXN5bmNJbnN0YWxsRGlzdHJpYnV0aW9uVW5pdCggDQogICAgICAgICAgICAg
SUJpbmRDdHggKnBiYywNCiAgICAgICAgICAgICBMUFZPSUQgcHZSZXNlcnZlZCwNCiAgICAgICAg
ICAgICBEV09SRCBmbGFncywNCiAgICAgICAgICAgICBMUENPREVCQVNFSE9MRCBscGNiaCkgPSAw
Ow0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTU4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5o
Ig0KDQoNCg0KDQojbGluZSA5NTg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoN
CmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgR2V0U29mdHdhcmVVcGRhdGVJbmZvKCBMUENX
U1RSIHN6RGlzdFVuaXQsICAgTFBTT0ZURElTVElORk8gcHNkaSApOw0KZXh0ZXJuICJDIiBIUkVT
VUxUIF9fc3RkY2FsbCBTZXRTb2Z0d2FyZVVwZGF0ZUFkdmVydGlzZW1lbnRTdGF0ZSggTFBDV1NU
UiBzekRpc3RVbml0LCBEV09SRCBkd0FkU3RhdGUsIERXT1JEIGR3QWR2ZXJ0aXNlZFZlcnNpb25N
UywgRFdPUkQgZHdBZHZlcnRpc2VkVmVyc2lvbkxTICk7DQojbGluZSA5NTk3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJs
bW9uXzAwMDBfMDA0OF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURM
X2l0Zl91cmxtb25fMDAwMF8wMDQ4X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBl
ZGVmICBJQ2F0YWxvZ0ZpbGVJbmZvICpMUENBVEFMT0dGSUxFSU5GTzsNCg0KDQpleHRlcm4gIkMi
IGNvbnN0IElJRCBJSURfSUNhdGFsb2dGaWxlSW5mbzsNCg0KDQogICAgDQogICAgc3RydWN0IF9f
ZGVjbHNwZWModXVpZCgiNzExQzc2MDAtNkI0OC0xMWQxLUI0MDMtMDBBQTAwQjkyQUYxIikpIF9f
ZGVjbHNwZWMobm92dGFibGUpDQogICAgSUNhdGFsb2dGaWxlSW5mbyA6IHB1YmxpYyBJVW5rbm93
bg0KICAgIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwg
R2V0Q2F0YWxvZ0ZpbGUoIA0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgTFBTVFIgKnBw
c3pDYXRhbG9nRmlsZSkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9f
c3RkY2FsbCBHZXRKYXZhVHJ1c3QoIA0KICAgICAgICAgICAgIHZvaWQgKipwcEphdmFUcnVzdCkg
PSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk2OTEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCg0KI2xpbmUgOTY5NiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1v
bi5oIg0KDQoNCg0KIA0KDQojbGluZSA5NzAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0K
DQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA0OV92MF8w
X2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8w
MDQ5X3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICAgICBJRGF0YUZpbHRl
ciAqTFBEQVRBRklMVEVSOw0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JRGF0YUZpbHRl
cjsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiNjlkMTRjODAtYzE4ZS0x
MWQwLWE5Y2UtMDA2MDk3OTQyMzExIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAgSURhdGFG
aWx0ZXIgOiBwdWJsaWMgSVVua25vd24NCiAgICB7DQogICAgcHVibGljOg0KICAgICAgICB2aXJ0
dWFsIEhSRVNVTFQgX19zdGRjYWxsIERvRW5jb2RlKCANCiAgICAgICAgICAgICBEV09SRCBkd0Zs
YWdzLA0KICAgICAgICAgICAgIExPTkcgbEluQnVmZmVyU2l6ZSwNCiAgICAgICAgICAgICAgIEJZ
VEUgKnBiSW5CdWZmZXIsDQogICAgICAgICAgICAgTE9ORyBsT3V0QnVmZmVyU2l6ZSwNCiAgICAg
ICAgICAgICAgIEJZVEUgKnBiT3V0QnVmZmVyLA0KICAgICAgICAgICAgIExPTkcgbEluQnl0ZXNB
dmFpbGFibGUsDQogICAgICAgICAgICAgICBMT05HICpwbEluQnl0ZXNSZWFkLA0KICAgICAgICAg
ICAgICAgTE9ORyAqcGxPdXRCeXRlc1dyaXR0ZW4sDQogICAgICAgICAgICAgRFdPUkQgZHdSZXNl
cnZlZCkgPSAwOw0KICAgICAgICANCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBE
b0RlY29kZSggDQogICAgICAgICAgICAgRFdPUkQgZHdGbGFncywNCiAgICAgICAgICAgICBMT05H
IGxJbkJ1ZmZlclNpemUsDQogICAgICAgICAgICAgICBCWVRFICpwYkluQnVmZmVyLA0KICAgICAg
ICAgICAgIExPTkcgbE91dEJ1ZmZlclNpemUsDQogICAgICAgICAgICAgICBCWVRFICpwYk91dEJ1
ZmZlciwNCiAgICAgICAgICAgICBMT05HIGxJbkJ5dGVzQXZhaWxhYmxlLA0KICAgICAgICAgICAg
ICAgTE9ORyAqcGxJbkJ5dGVzUmVhZCwNCiAgICAgICAgICAgICAgIExPTkcgKnBsT3V0Qnl0ZXNX
cml0dGVuLA0KICAgICAgICAgICAgIERXT1JEIGR3UmVzZXJ2ZWQpID0gMDsNCiAgICAgICAgDQog
ICAgICAgIHZpcnR1YWwgSFJFU1VMVCBfX3N0ZGNhbGwgU2V0RW5jb2RpbmdMZXZlbCggDQogICAg
ICAgICAgICAgRFdPUkQgZHdFbmNMZXZlbCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgOTgzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQojbGluZSA5ODQxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDk4NDcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1
cmxtb24uaCINCg0KDQp0eXBlZGVmIHN0cnVjdCBfdGFnUFJPVE9DT0xGSUxURVJEQVRBDQogICAg
ew0KICAgIERXT1JEIGNiU2l6ZTsNCiAgICBJSW50ZXJuZXRQcm90b2NvbFNpbmsgKnBQcm90b2Nv
bFNpbms7DQogICAgSUludGVybmV0UHJvdG9jb2wgKnBQcm90b2NvbDsNCiAgICBJVW5rbm93biAq
cFVuazsNCiAgICBEV09SRCBkd0ZpbHRlckZsYWdzOw0KICAgIH0gCVBST1RPQ09MRklMVEVSREFU
QTsNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA1
MF92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25f
MDAwMF8wMDUwX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJRW5jb2Rp
bmdGaWx0ZXJGYWN0b3J5ICpMUEVOQ09ESU5HRklMVEVSRkFDVE9SWTsNCg0KdHlwZWRlZiBzdHJ1
Y3QgX3RhZ0RBVEFJTkZPDQogICAgew0KICAgIFVMT05HIHVsVG90YWxTaXplOw0KICAgIFVMT05H
IHVsYXZyUGFja2V0U2l6ZTsNCiAgICBVTE9ORyB1bENvbm5lY3RTcGVlZDsNCiAgICBVTE9ORyB1
bFByb2Nlc3NvclNwZWVkOw0KICAgIH0gCURBVEFJTkZPOw0KDQoNCmV4dGVybiAiQyIgY29uc3Qg
SUlEIElJRF9JRW5jb2RpbmdGaWx0ZXJGYWN0b3J5Ow0KDQoNCiAgICANCiAgICBzdHJ1Y3QgX19k
ZWNsc3BlYyh1dWlkKCI3MGJkZGUwMC1jMThlLTExZDAtYTljZS0wMDYwOTc5NDIzMTEiKSkgX19k
ZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJRW5jb2RpbmdGaWx0ZXJGYWN0b3J5IDogcHVibGljIElV
bmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBGaW5kQmVzdEZpbHRlciggDQogICAgICAgICAgICAgTFBDV1NUUiBwd3pDb2RlSW4sDQog
ICAgICAgICAgICAgTFBDV1NUUiBwd3pDb2RlT3V0LA0KICAgICAgICAgICAgIERBVEFJTkZPIGlu
Zm8sDQogICAgICAgICAgICAgSURhdGFGaWx0ZXIgKipwcERGKSA9IDA7DQogICAgICAgIA0KICAg
ICAgICB2aXJ0dWFsIEhSRVNVTFQgX19zdGRjYWxsIEdldERlZmF1bHRGaWx0ZXIoIA0KICAgICAg
ICAgICAgIExQQ1dTVFIgcHd6Q29kZUluLA0KICAgICAgICAgICAgIExQQ1dTVFIgcHd6Q29kZU91
dCwNCiAgICAgICAgICAgICBJRGF0YUZpbHRlciAqKnBwREYpID0gMDsNCiAgICAgICAgDQogICAg
fTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk5NjYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxt
b24uaCINCg0KDQoNCg0KI2xpbmUgOTk3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0K
IA0KDQojbGluZSA5OTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQpCT09MIF9fc3Rk
Y2FsbCBJc0xvZ2dpbmdFbmFibGVkQSggIExQQ1NUUiAgcHN6VXJsKTsgICAgICAgICAgICAgICAg
ICAgIA0KQk9PTCBfX3N0ZGNhbGwgSXNMb2dnaW5nRW5hYmxlZFcoICBMUENXU1RSICBwd3N6VXJs
KTsgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KI2xpbmUgOTk4NyAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KdHlwZWRlZiBzdHJ1Y3QgX3RhZ0hJVF9MT0dHSU5HX0lORk8NCiAgICB7DQogICAg
RFdPUkQgZHdTdHJ1Y3RTaXplOw0KICAgIExQU1RSIGxwc3pMb2dnZWRVcmxOYW1lOw0KICAgIFNZ
U1RFTVRJTUUgU3RhcnRUaW1lOw0KICAgIFNZU1RFTVRJTUUgRW5kVGltZTsNCiAgICBMUFNUUiBs
cHN6RXh0ZW5kZWRJbmZvOw0KICAgIH0gCUhJVF9MT0dHSU5HX0lORk87DQoNCnR5cGVkZWYgc3Ry
dWN0IF90YWdISVRfTE9HR0lOR19JTkZPICpMUEhJVF9MT0dHSU5HX0lORk87DQoNCkJPT0wgX19z
dGRjYWxsIFdyaXRlSGl0TG9nZ2luZyggIExQSElUX0xPR0dJTkdfSU5GTyBscExvZ2dpbmdpbmZv
KTsgICAgDQoNCnN0cnVjdCBDT05GSVJNU0FGRVRZDQogICAgew0KICAgIENMU0lEIGNsc2lkOw0K
ICAgIElVbmtub3duICpwVW5rOw0KICAgIERXT1JEIGR3RmxhZ3M7DQogICAgfSA7DQpleHRlcm4g
IkMiIGNvbnN0IEdVSUQgR1VJRF9DVVNUT01fQ09ORklSTU9CSkVDVFNBRkVUWTsgDQojbGluZSAx
MDAwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRlcm4gUlBDX0lGX0hBTkRM
RSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwNTFfdjBfMF9jX2lmc3BlYzsNCmV4dGVybiBSUENf
SUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA1MV92MF8wX3NfaWZzcGVjOw0KDQoN
Cg0KDQoNCiANCg0KdHlwZWRlZiAgSVdyYXBwZWRQcm90b2NvbCAqTFBJV1JBUFBFRFBST1RPQ09M
Ow0KDQoNCmV4dGVybiAiQyIgY29uc3QgSUlEIElJRF9JV3JhcHBlZFByb3RvY29sOw0KDQoNCiAg
ICANCiAgICBzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI1M2M4NDc4NS04NDI1LTRkYzUtOTcxYi1l
NThkOWMxOWY5YjYiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkNCiAgICBJV3JhcHBlZFByb3RvY29s
IDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBI
UkVTVUxUIF9fc3RkY2FsbCBHZXRXcmFwcGVyQ29kZSggDQogICAgICAgICAgICAgTE9ORyAqcG5D
b2RlLA0KICAgICAgICAgICAgIERXT1JEX1BUUiBkd1Jlc2VydmVkKSA9IDA7DQogICAgICAgIA0K
ICAgIH07DQogICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDEwMDkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCiNs
aW5lIDEwMDk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDEwMTAz
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFORExFIF9f
TUlETF9pdGZfdXJsbW9uXzAwMDBfMDA1Ml92MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQQ19JRl9I
QU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDUyX3YwXzBfc19pZnNwZWM7DQoNCg0KDQoN
Cg0KIA0KDQp0eXBlZGVmICBJR2V0QmluZEhhbmRsZSAqTFBHRVRCSU5ESEFORExFOw0KDQp0eXBl
ZGVmICANCmVudW0gX19NSURMX0lHZXRCaW5kSGFuZGxlXzAwMDENCiAgICB7DQogICAgICAgIEJJ
TkRIQU5ETEVUWVBFU19BUFBDQUNIRQk9IDAsDQogICAgICAgIEJJTkRIQU5ETEVUWVBFU19ERVBF
TkRFTkNZCT0gMHgxLA0KICAgICAgICBCSU5ESEFORExFVFlQRVNfQ09VTlQJPSAoIEJJTkRIQU5E
TEVUWVBFU19ERVBFTkRFTkNZICsgMSApIA0KICAgIH0gCUJJTkRIQU5ETEVUWVBFUzsNCg0KDQpl
eHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUdldEJpbmRIYW5kbGU7DQoNCg0KICAgIA0KICAgIHN0
cnVjdCBfX2RlY2xzcGVjKHV1aWQoIkFGMEZGNDA4LTEyOUQtNGIyMC05MUYwLTAyQkQyM0Q4ODM1
MiIpKSBfX2RlY2xzcGVjKG5vdnRhYmxlKQ0KICAgIElHZXRCaW5kSGFuZGxlIDogcHVibGljIElV
bmtub3duDQogICAgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3Rk
Y2FsbCBHZXRCaW5kSGFuZGxlKCANCiAgICAgICAgICAgICBCSU5ESEFORExFVFlQRVMgZW51bVJl
cXVlc3RlZEhhbmRsZSwNCiAgICAgICAgICAgICBIQU5ETEUgKnBSZXRIYW5kbGUpID0gMDsNCiAg
ICAgICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTAxOTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0K
DQoNCg0KI2xpbmUgMTAyMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQoNCiANCg0KI2xp
bmUgMTAyMDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx1cmxtb24uaCINCg0KDQp0eXBlZGVmIHN0cnVjdCBfdGFn
UFJPVE9DT0xfQVJHVU1FTlQNCiAgICB7DQogICAgTFBDV1NUUiBzek1ldGhvZDsNCiAgICBMUENX
U1RSIHN6VGFyZ2V0VXJsOw0KICAgIH0gCVBST1RPQ09MX0FSR1VNRU5UOw0KDQp0eXBlZGVmIHN0
cnVjdCBfdGFnUFJPVE9DT0xfQVJHVU1FTlQgKkxQUFJPVE9DT0xfQVJHVU1FTlQ7DQoNCiNsaW5l
IDEwMjE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoNCmV4dGVybiBSUENfSUZfSEFO
RExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA1M192MF8wX2NfaWZzcGVjOw0KZXh0ZXJuIFJQ
Q19JRl9IQU5ETEUgX19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDUzX3YwXzBfc19pZnNwZWM7DQoN
Cg0KDQoNCg0KIA0KDQp0eXBlZGVmICBJQmluZENhbGxiYWNrUmVkaXJlY3QgKkxQQklORENBTExC
QUNLUkVESVJFQ1Q7DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBJSUQgSUlEX0lCaW5kQ2FsbGJhY2tS
ZWRpcmVjdDsNCg0KDQogICAgDQogICAgc3RydWN0IF9fZGVjbHNwZWModXVpZCgiMTFDODFCQzIt
MTIxRS00ZWQ1LUI5QzQtQjQzMEJENTRGMkMwIikpIF9fZGVjbHNwZWMobm92dGFibGUpDQogICAg
SUJpbmRDYWxsYmFja1JlZGlyZWN0IDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1Ymxp
YzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBSZWRpcmVjdCggDQogICAgICAg
ICAgICAgTFBDV1NUUiBscGNVcmwsDQogICAgICAgICAgICAgVkFSSUFOVF9CT09MICp2YkNhbmNl
bCkgPSAwOw0KICAgICAgICANCiAgICB9Ow0KICAgIA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDMwMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KDQoNCg0KDQojbGluZSAxMDMwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoN
Cg0KIA0KDQojbGluZSAxMDMxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQoNCg0KDQpleHRl
cm4gUlBDX0lGX0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwNTRfdjBfMF9jX2lmc3Bl
YzsNCmV4dGVybiBSUENfSUZfSEFORExFIF9fTUlETF9pdGZfdXJsbW9uXzAwMDBfMDA1NF92MF8w
X3NfaWZzcGVjOw0KDQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIGNvbnN0IElJRCBJSURfSUJp
bmRIdHRwU2VjdXJpdHk7DQoNCg0KICAgIA0KICAgIHN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoImE5
ZWRhOTY3LWY1MGUtNGEzMy1iMzU4LTIwNmY2ZWYzMDg2ZCIpKSBfX2RlY2xzcGVjKG5vdnRhYmxl
KQ0KICAgIElCaW5kSHR0cFNlY3VyaXR5IDogcHVibGljIElVbmtub3duDQogICAgew0KICAgIHB1
YmxpYzoNCiAgICAgICAgdmlydHVhbCBIUkVTVUxUIF9fc3RkY2FsbCBHZXRJZ25vcmVDZXJ0TWFz
ayggDQogICAgICAgICAgICAgICBEV09SRCAqcGR3SWdub3JlQ2VydE1hc2spID0gMDsNCiAgICAg
ICAgDQogICAgfTsNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEwMzkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQoN
CiNsaW5lIDEwMzk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KDQogDQoNCiNsaW5lIDEw
NDAzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQojbGluZSAxMDQwNCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVy
bG1vbi5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5l
IDEwNDA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcdXJsbW9uLmgiDQoNCg0KZXh0ZXJuIFJQQ19JRl9IQU5ETEUg
X19NSURMX2l0Zl91cmxtb25fMDAwMF8wMDU1X3YwXzBfY19pZnNwZWM7DQpleHRlcm4gUlBDX0lG
X0hBTkRMRSBfX01JRExfaXRmX3VybG1vbl8wMDAwXzAwNTVfdjBfMF9zX2lmc3BlYzsNCg0KDQoN
CnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBCU1RSX1VzZXJTaXplKCAgICAg
ICB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAsICAgQlNUUiAqICk7
IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgQlNUUl9Vc2VyTWFyc2hhbCggICAgdW5zaWdu
ZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBCU1RSICogKTsgDQp1bnNpZ25lZCBjaGFy
ICogX19zdGRjYWxsICBCU1RSX1VzZXJVbm1hcnNoYWwoICB1bnNpZ25lZCBsb25nICosICAgdW5z
aWduZWQgY2hhciAqLCAgIEJTVFIgKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAgICAgX19z
dGRjYWxsICBCU1RSX1VzZXJGcmVlKCAgICAgICB1bnNpZ25lZCBsb25nICosICAgQlNUUiAqICk7
IA0KDQp1bnNpZ25lZCBsb25nICAgICAgICAgICAgIF9fc3RkY2FsbCAgSFdORF9Vc2VyU2l6ZSgg
ICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAgIEhXTkQg
KiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhXTkRfVXNlck1hcnNoYWwoICAgIHVu
c2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSFdORCAqICk7IA0KdW5zaWduZWQg
Y2hhciAqIF9fc3RkY2FsbCAgSFdORF9Vc2VyVW5tYXJzaGFsKCAgdW5zaWduZWQgbG9uZyAqLCAg
IHVuc2lnbmVkIGNoYXIgKiwgICBIV05EICogKTsgDQp2b2lkICAgICAgICAgICAgICAgICAgICAg
IF9fc3RkY2FsbCAgSFdORF9Vc2VyRnJlZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCAgIEhXTkQg
KiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIEJTVFJfVXNlclNp
emU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAgICAgICAgICAgLCAg
IEJTVFIgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEJTVFJfVXNlck1hcnNoYWw2
NCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBCU1RSICogKTsgDQp1
bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBCU1RSX1VzZXJVbm1hcnNoYWw2NCggIHVuc2lnbmVk
IGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgQlNUUiAqICk7IA0Kdm9pZCAgICAgICAgICAg
ICAgICAgICAgICBfX3N0ZGNhbGwgIEJTVFJfVXNlckZyZWU2NCggICAgICAgdW5zaWduZWQgbG9u
ZyAqLCAgIEJTVFIgKiApOyANCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwg
IEhXTkRfVXNlclNpemU2NCggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICAg
ICAgICAgICAgLCAgIEhXTkQgKiApOyANCnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEhXTkRf
VXNlck1hcnNoYWw2NCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2lnbmVkIGNoYXIgKiwgICBI
V05EICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBIV05EX1VzZXJVbm1hcnNoYWw2
NCggIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgSFdORCAqICk7IA0Kdm9p
ZCAgICAgICAgICAgICAgICAgICAgICBfX3N0ZGNhbGwgIEhXTkRfVXNlckZyZWU2NCggICAgICAg
dW5zaWduZWQgbG9uZyAqLCAgIEhXTkQgKiApOyANCg0KIEhSRVNVTFQgX19zdGRjYWxsIElCaW5k
aW5nX0dldEJpbmRSZXN1bHRfUHJveHkoIA0KICAgIElCaW5kaW5nICogVGhpcywNCiAgICAgQ0xT
SUQgKnBjbHNpZFByb3RvY29sLA0KICAgICBEV09SRCAqcGR3UmVzdWx0LA0KICAgICANCiAgICAg
ICBMUE9MRVNUUiAqcHN6UmVzdWx0LA0KICAgICBEV09SRCAqcGR3UmVzZXJ2ZWQpOw0KDQoNCiBI
UkVTVUxUIF9fc3RkY2FsbCBJQmluZGluZ19HZXRCaW5kUmVzdWx0X1N0dWIoIA0KICAgICAgSUJp
bmRpbmcgKiBUaGlzLA0KICAgICAgIENMU0lEICpwY2xzaWRQcm90b2NvbCwNCiAgICAgICBEV09S
RCAqcGR3UmVzdWx0LA0KICAgICAgIExQT0xFU1RSICpwc3pSZXN1bHQsDQogICAgIERXT1JEIGR3
UmVzZXJ2ZWQpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJpbmRTdGF0dXNDYWxsYmFja19HZXRC
aW5kSW5mb19Qcm94eSggDQogICAgSUJpbmRTdGF0dXNDYWxsYmFjayAqIFRoaXMsDQogICAgIERX
T1JEICpncmZCSU5ERiwNCiAgICAgQklORElORk8gKnBiaW5kaW5mbyk7DQoNCg0KIEhSRVNVTFQg
X19zdGRjYWxsIElCaW5kU3RhdHVzQ2FsbGJhY2tfR2V0QmluZEluZm9fU3R1YiggDQogICAgICBJ
QmluZFN0YXR1c0NhbGxiYWNrICogVGhpcywNCiAgICAgICBEV09SRCAqZ3JmQklOREYsDQogICAg
ICAgUmVtQklORElORk8gKnBiaW5kaW5mbywNCiAgICAgICBSZW1TVEdNRURJVU0gKnBzdGdtZWQp
Ow0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJpbmRTdGF0dXNDYWxsYmFja19PbkRhdGFBdmFpbGFi
bGVfUHJveHkoIA0KICAgIElCaW5kU3RhdHVzQ2FsbGJhY2sgKiBUaGlzLA0KICAgICBEV09SRCBn
cmZCU0NGLA0KICAgICBEV09SRCBkd1NpemUsDQogICAgIEZPUk1BVEVUQyAqcGZvcm1hdGV0YywN
CiAgICAgU1RHTUVESVVNICpwc3RnbWVkKTsNCg0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJpbmRT
dGF0dXNDYWxsYmFja19PbkRhdGFBdmFpbGFibGVfU3R1YiggDQogICAgICBJQmluZFN0YXR1c0Nh
bGxiYWNrICogVGhpcywNCiAgICAgRFdPUkQgZ3JmQlNDRiwNCiAgICAgRFdPUkQgZHdTaXplLA0K
ICAgICAgIFJlbUZPUk1BVEVUQyAqcGZvcm1hdGV0YywNCiAgICAgICBSZW1TVEdNRURJVU0gKnBz
dGdtZWQpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJpbmRTdGF0dXNDYWxsYmFja0V4X0dldEJp
bmRJbmZvRXhfUHJveHkoIA0KICAgIElCaW5kU3RhdHVzQ2FsbGJhY2tFeCAqIFRoaXMsDQogICAg
IERXT1JEICpncmZCSU5ERiwNCiAgICAgQklORElORk8gKnBiaW5kaW5mbywNCiAgICAgRFdPUkQg
KmdyZkJJTkRGMiwNCiAgICAgRFdPUkQgKnBkd1Jlc2VydmVkKTsNCg0KDQogSFJFU1VMVCBfX3N0
ZGNhbGwgSUJpbmRTdGF0dXNDYWxsYmFja0V4X0dldEJpbmRJbmZvRXhfU3R1YiggDQogICAgICBJ
QmluZFN0YXR1c0NhbGxiYWNrRXggKiBUaGlzLA0KICAgICAgIERXT1JEICpncmZCSU5ERiwNCiAg
ICAgICBSZW1CSU5ESU5GTyAqcGJpbmRpbmZvLA0KICAgICAgIFJlbVNUR01FRElVTSAqcHN0Z21l
ZCwNCiAgICAgICBEV09SRCAqZ3JmQklOREYyLA0KICAgICAgIERXT1JEICpwZHdSZXNlcnZlZCk7
DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJV2luSW5ldEluZm9fUXVlcnlPcHRpb25fUHJveHkoIA0K
ICAgIElXaW5JbmV0SW5mbyAqIFRoaXMsDQogICAgIERXT1JEIGR3T3B0aW9uLA0KICAgICBMUFZP
SUQgcEJ1ZmZlciwNCiAgICAgRFdPUkQgKnBjYkJ1Zik7DQoNCg0KIEhSRVNVTFQgX19zdGRjYWxs
IElXaW5JbmV0SW5mb19RdWVyeU9wdGlvbl9TdHViKCANCiAgICAgIElXaW5JbmV0SW5mbyAqIFRo
aXMsDQogICAgIERXT1JEIGR3T3B0aW9uLA0KICAgICAgIEJZVEUgKnBCdWZmZXIsDQogICAgICAg
RFdPUkQgKnBjYkJ1Zik7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJV2luSW5ldEh0dHBJbmZvX1F1
ZXJ5SW5mb19Qcm94eSggDQogICAgSVdpbkluZXRIdHRwSW5mbyAqIFRoaXMsDQogICAgIERXT1JE
IGR3T3B0aW9uLA0KICAgICBMUFZPSUQgcEJ1ZmZlciwNCiAgICAgRFdPUkQgKnBjYkJ1ZiwNCiAg
ICAgRFdPUkQgKnBkd0ZsYWdzLA0KICAgICBEV09SRCAqcGR3UmVzZXJ2ZWQpOw0KDQoNCiBIUkVT
VUxUIF9fc3RkY2FsbCBJV2luSW5ldEh0dHBJbmZvX1F1ZXJ5SW5mb19TdHViKCANCiAgICAgIElX
aW5JbmV0SHR0cEluZm8gKiBUaGlzLA0KICAgICBEV09SRCBkd09wdGlvbiwNCiAgICAgICBCWVRF
ICpwQnVmZmVyLA0KICAgICAgIERXT1JEICpwY2JCdWYsDQogICAgICAgRFdPUkQgKnBkd0ZsYWdz
LA0KICAgICAgIERXT1JEICpwZHdSZXNlcnZlZCk7DQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJQmlu
ZEhvc3RfTW9uaWtlckJpbmRUb1N0b3JhZ2VfUHJveHkoIA0KICAgIElCaW5kSG9zdCAqIFRoaXMs
DQogICAgIElNb25pa2VyICpwTWssDQogICAgIElCaW5kQ3R4ICpwQkMsDQogICAgIElCaW5kU3Rh
dHVzQ2FsbGJhY2sgKnBCU0MsDQogICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgIHZvaWQgKipw
cHZPYmopOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2FsbCBJQmluZEhvc3RfTW9uaWtlckJpbmRUb1N0
b3JhZ2VfU3R1YiggDQogICAgICBJQmluZEhvc3QgKiBUaGlzLA0KICAgICAgIElNb25pa2VyICpw
TWssDQogICAgICAgSUJpbmRDdHggKnBCQywNCiAgICAgICBJQmluZFN0YXR1c0NhbGxiYWNrICpw
QlNDLA0KICAgICAgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgICAgSVVua25vd24gKipwcHZPYmop
Ow0KDQogSFJFU1VMVCBfX3N0ZGNhbGwgSUJpbmRIb3N0X01vbmlrZXJCaW5kVG9PYmplY3RfUHJv
eHkoIA0KICAgIElCaW5kSG9zdCAqIFRoaXMsDQogICAgIElNb25pa2VyICpwTWssDQogICAgIElC
aW5kQ3R4ICpwQkMsDQogICAgIElCaW5kU3RhdHVzQ2FsbGJhY2sgKnBCU0MsDQogICAgIGNvbnN0
IElJRCAmIHJpaWQsDQogICAgIHZvaWQgKipwcHZPYmopOw0KDQoNCiBIUkVTVUxUIF9fc3RkY2Fs
bCBJQmluZEhvc3RfTW9uaWtlckJpbmRUb09iamVjdF9TdHViKCANCiAgICAgIElCaW5kSG9zdCAq
IFRoaXMsDQogICAgICAgSU1vbmlrZXIgKnBNaywNCiAgICAgICBJQmluZEN0eCAqcEJDLA0KICAg
ICAgIElCaW5kU3RhdHVzQ2FsbGJhY2sgKnBCU0MsDQogICAgICAgY29uc3QgSUlEICYgcmlpZCwN
CiAgICAgICBJVW5rbm93biAqKnBwdk9iaik7DQoNCg0KDQoNCg0KDQp9DQojbGluZSAxMDU2NSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHVybG1vbi5oIg0KDQojbGluZSAxMDU2NyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHVybG1v
bi5oIg0KDQoNCiNsaW5lIDI2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamJhc2UuaCINCiNsaW5lIDEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxwcm9waWRsLmgiDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRs
LmgiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQojbGluZSAzOSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb3Bp
ZGwuaCINCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiew0KI2xpbmUgNzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxwcm9waWRsLmgiDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmco
cHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MjApICAgIA0KI2xpbmUgOTMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxwcm9waWRsLmgiDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjAxKSAgICANCiNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMzcpICAgIA0KI2xpbmUgOTYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxw
cm9waWRsLmgiDQoNCiNwcmFnbWEgb25jZQ0KI2xpbmUgOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRs
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQplbnVt
IFBJRE1TSV9TVEFUVVNfVkFMVUUNCiAgICB7DQogICAgICAgIFBJRE1TSV9TVEFUVVNfTk9STUFM
CT0gMCwNCiAgICAgICAgUElETVNJX1NUQVRVU19ORVcJPSAoIFBJRE1TSV9TVEFUVVNfTk9STUFM
ICsgMSApICwNCiAgICAgICAgUElETVNJX1NUQVRVU19QUkVMSU0JPSAoIFBJRE1TSV9TVEFUVVNf
TkVXICsgMSApICwNCiAgICAgICAgUElETVNJX1NUQVRVU19EUkFGVAk9ICggUElETVNJX1NUQVRV
U19QUkVMSU0gKyAxICkgLA0KICAgICAgICBQSURNU0lfU1RBVFVTX0lOUFJPR1JFU1MJPSAoIFBJ
RE1TSV9TVEFUVVNfRFJBRlQgKyAxICkgLA0KICAgICAgICBQSURNU0lfU1RBVFVTX0VESVQJPSAo
IFBJRE1TSV9TVEFUVVNfSU5QUk9HUkVTUyArIDEgKSAsDQogICAgICAgIFBJRE1TSV9TVEFUVVNf
UkVWSUVXCT0gKCBQSURNU0lfU1RBVFVTX0VESVQgKyAxICkgLA0KICAgICAgICBQSURNU0lfU1RB
VFVTX1BST09GCT0gKCBQSURNU0lfU1RBVFVTX1JFVklFVyArIDEgKSAsDQogICAgICAgIFBJRE1T
SV9TVEFUVVNfRklOQUwJPSAoIFBJRE1TSV9TVEFUVVNfUFJPT0YgKyAxICkgLA0KICAgICAgICBQ
SURNU0lfU1RBVFVTX09USEVSCT0gMHg3ZmZmDQogICAgfSA7DQojbGluZSAxMTY4ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccHJvcGlkbC5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCiNwcmFnbWEgcmVnaW9uIEFwcGxp
Y2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIG9yIEdhbWVzIEZhbWlseQ0KDQogIGV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFByb3BWYXJpYW50Q29weSgN
CiAgICAgICAgICAgICAgUFJPUFZBUklBTlQqIHB2YXJEZXN0LA0KICAgICAgICAgICAgICBjb25z
dCBQUk9QVkFSSUFOVCAqIHB2YXJTcmMpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBQcm9wVmFyaWFudENsZWFyKCAgUFJPUFZBUklBTlQqIHB2
YXIpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCBGcmVlUHJvcFZhcmlhbnRBcnJheSgNCiAgICAgICAgICAgICAgVUxPTkcgY1ZhcmlhbnRzLA0K
ICAgICAgICAgICAgICBQUk9QVkFSSUFOVCogcmd2YXJzKTsNCg0KDQoNCg0KDQoNCg0KDQppbmxp
bmUgdm9pZCBQcm9wVmFyaWFudEluaXQgKCAgUFJPUFZBUklBTlQgKiBwdmFyICkNCnsNCiAgICBt
ZW1zZXQgKCBwdmFyLCAwLCBzaXplb2YoUFJPUFZBUklBTlQpICk7DQp9DQoNCg0KDQoNCg0KI2xp
bmUgMTE5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHByb3BpZGwuaCINCg0KDQojbGluZSAxMjAxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxccHJvcGlkbC5oIg0KDQoNCiNsaW5lIDEyMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsLmgi
DQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoN
Cg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdTRVJJQUxJWkVEUFJPUEVSVFlWQUxVRQ0Kew0KICAgIERX
T1JECWR3VHlwZTsNCiAgICBCWVRFCXJnYlsxXTsNCn0gU0VSSUFMSVpFRFBST1BFUlRZVkFMVUU7
DQojbGluZSAxMjE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbC5oIg0KDQpleHRlcm4gIkMiDQogICAN
ClNFUklBTElaRURQUk9QRVJUWVZBTFVFKiBfX3N0ZGNhbGwNClN0Z0NvbnZlcnRWYXJpYW50VG9Q
cm9wZXJ0eSgNCiAgICAgICAgICAgICAgY29uc3QgUFJPUFZBUklBTlQqIHB2YXIsDQogICAgICAg
ICAgICAgIFVTSE9SVCBDb2RlUGFnZSwNCiAgICAgICAgICAgICAgU0VSSUFMSVpFRFBST1BFUlRZ
VkFMVUUqIHBwcm9wLA0KICAgICAgICAgICAgICBVTE9ORyogcGNiLA0KICAgICAgICAgICAgICBQ
Uk9QSUQgcGlkLA0KICAgICAgICAgICAgICBCT09MRUFOIGZSZXNlcnZlZCwNCiAgICAgICAgICAg
ICAgVUxPTkcqIHBjSW5kaXJlY3QpOw0KDQoNCmNsYXNzIFBNZW1vcnlBbGxvY2F0b3I7DQoNCmV4
dGVybiAiQyINCiAgIA0KQk9PTEVBTiBfX3N0ZGNhbGwNClN0Z0NvbnZlcnRQcm9wZXJ0eVRvVmFy
aWFudCgNCiAgICAgICAgICAgICAgY29uc3QgU0VSSUFMSVpFRFBST1BFUlRZVkFMVUUqIHBwcm9w
LA0KICAgICAgICAgICAgICBVU0hPUlQgQ29kZVBhZ2UsDQogICAgICAgICAgICAgIFBST1BWQVJJ
QU5UKiBwdmFyLA0KICAgICAgICAgICAgICBQTWVtb3J5QWxsb2NhdG9yKiBwbWEpOw0KI2xpbmUg
MTI0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHByb3BpZGwuaCINCg0KI2xpbmUgMTI0NCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHByb3BpZGwuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkN
Cg0KDQoNCiNsaW5lIDEyNTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxwcm9waWRsLmgiDQoNCg0KZXh0ZXJuIFJQ
Q19JRl9IQU5ETEUgX19NSURMX2l0Zl9wcm9waWRsXzAwMDBfMDAwNF92MF8wX2NfaWZzcGVjOw0K
ZXh0ZXJuIFJQQ19JRl9IQU5ETEUgX19NSURMX2l0Zl9wcm9waWRsXzAwMDBfMDAwNF92MF8wX3Nf
aWZzcGVjOw0KDQoNCg0KdW5zaWduZWQgbG9uZyAgICAgICAgICAgICBfX3N0ZGNhbGwgIEJTVFJf
VXNlclNpemUoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAgICAgICAgICAg
ICwgICBCU1RSICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBCU1RSX1VzZXJNYXJz
aGFsKCAgICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEJTVFIgKiApOyAN
CnVuc2lnbmVkIGNoYXIgKiBfX3N0ZGNhbGwgIEJTVFJfVXNlclVubWFyc2hhbCggIHVuc2lnbmVk
IGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgQlNUUiAqICk7IA0Kdm9pZCAgICAgICAgICAg
ICAgICAgICAgICBfX3N0ZGNhbGwgIEJTVFJfVXNlckZyZWUoICAgICAgIHVuc2lnbmVkIGxvbmcg
KiwgICBCU1RSICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxsICBM
UFNBRkVBUlJBWV9Vc2VyU2l6ZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25n
ICAgICAgICAgICAgLCAgIExQU0FGRUFSUkFZICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRj
YWxsICBMUFNBRkVBUlJBWV9Vc2VyTWFyc2hhbCggICAgdW5zaWduZWQgbG9uZyAqLCAgIHVuc2ln
bmVkIGNoYXIgKiwgICBMUFNBRkVBUlJBWSAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2Fs
bCAgTFBTQUZFQVJSQVlfVXNlclVubWFyc2hhbCggIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25l
ZCBjaGFyICosICAgTFBTQUZFQVJSQVkgKiApOyANCnZvaWQgICAgICAgICAgICAgICAgICAgICAg
X19zdGRjYWxsICBMUFNBRkVBUlJBWV9Vc2VyRnJlZSggICAgICAgdW5zaWduZWQgbG9uZyAqLCAg
IExQU0FGRUFSUkFZICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgX19zdGRjYWxs
ICBCU1RSX1VzZXJTaXplNjQoICAgICAgIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAg
ICAgICAgICAgICwgICBCU1RSICogKTsgDQp1bnNpZ25lZCBjaGFyICogX19zdGRjYWxsICBCU1RS
X1VzZXJNYXJzaGFsNjQoICAgIHVuc2lnbmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAg
QlNUUiAqICk7IA0KdW5zaWduZWQgY2hhciAqIF9fc3RkY2FsbCAgQlNUUl9Vc2VyVW5tYXJzaGFs
NjQoICB1bnNpZ25lZCBsb25nICosICAgdW5zaWduZWQgY2hhciAqLCAgIEJTVFIgKiApOyANCnZv
aWQgICAgICAgICAgICAgICAgICAgICAgX19zdGRjYWxsICBCU1RSX1VzZXJGcmVlNjQoICAgICAg
IHVuc2lnbmVkIGxvbmcgKiwgICBCU1RSICogKTsgDQoNCnVuc2lnbmVkIGxvbmcgICAgICAgICAg
ICAgX19zdGRjYWxsICBMUFNBRkVBUlJBWV9Vc2VyU2l6ZTY0KCAgICAgICB1bnNpZ25lZCBsb25n
ICosIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAsICAgTFBTQUZFQVJSQVkgKiApOyANCnVuc2ln
bmVkIGNoYXIgKiBfX3N0ZGNhbGwgIExQU0FGRUFSUkFZX1VzZXJNYXJzaGFsNjQoICAgIHVuc2ln
bmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgTFBTQUZFQVJSQVkgKiApOyANCnVuc2ln
bmVkIGNoYXIgKiBfX3N0ZGNhbGwgIExQU0FGRUFSUkFZX1VzZXJVbm1hcnNoYWw2NCggIHVuc2ln
bmVkIGxvbmcgKiwgICB1bnNpZ25lZCBjaGFyICosICAgTFBTQUZFQVJSQVkgKiApOyANCnZvaWQg
ICAgICAgICAgICAgICAgICAgICAgX19zdGRjYWxsICBMUFNBRkVBUlJBWV9Vc2VyRnJlZTY0KCAg
ICAgICB1bnNpZ25lZCBsb25nICosICAgTFBTQUZFQVJSQVkgKiApOyANCg0KIEhSRVNVTFQgX19z
dGRjYWxsIElFbnVtU1RBVFBST1BTVEdfTmV4dF9Qcm94eSggDQogICAgSUVudW1TVEFUUFJPUFNU
RyAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQsDQogICAgIA0KICAgICAgIFNUQVRQUk9QU1RHICpy
Z2VsdCwNCiAgICAgDQogICAgICAgICBVTE9ORyAqcGNlbHRGZXRjaGVkKTsNCg0KDQogSFJFU1VM
VCBfX3N0ZGNhbGwgSUVudW1TVEFUUFJPUFNUR19OZXh0X1N0dWIoIA0KICAgICAgSUVudW1TVEFU
UFJPUFNURyAqIFRoaXMsDQogICAgIFVMT05HIGNlbHQsDQogICAgICAgU1RBVFBST1BTVEcgKnJn
ZWx0LA0KICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQogSFJFU1VMVCBfX3N0ZGNhbGwg
SUVudW1TVEFUUFJPUFNFVFNUR19OZXh0X1Byb3h5KCANCiAgICBJRW51bVNUQVRQUk9QU0VUU1RH
ICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgDQogICAgICAgU1RBVFBST1BTRVRTVEcg
KnJnZWx0LA0KICAgICANCiAgICAgICAgIFVMT05HICpwY2VsdEZldGNoZWQpOw0KDQoNCiBIUkVT
VUxUIF9fc3RkY2FsbCBJRW51bVNUQVRQUk9QU0VUU1RHX05leHRfU3R1YiggDQogICAgICBJRW51
bVNUQVRQUk9QU0VUU1RHICogVGhpcywNCiAgICAgVUxPTkcgY2VsdCwNCiAgICAgICBTVEFUUFJP
UFNFVFNURyAqcmdlbHQsDQogICAgICAgVUxPTkcgKnBjZWx0RmV0Y2hlZCk7DQoNCg0KDQoNCg0K
DQp9DQojbGluZSAxMzE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJvcGlkbC5oIg0KDQojbGluZSAxMzE4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxccHJvcGlkbC5oIg0KDQoNCiNsaW5lIDI2MSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9iamJh
c2UuaCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBQYXJ0aXRpb24NCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBDcmVhdGVTdGRQ
cm9ncmVzc0luZGljYXRvciggIEhXTkQgaHduZFBhcmVudCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMUENPTEVTVFIgcHN6VGl0bGUsDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSUJpbmRTdGF0dXNDYWxsYmFjayAqIHBJYnNjQ2FsbGVyLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJpbmRTdGF0dXNDYWxsYmFjayAqKiBw
cElic2MpOw0KDQojbGluZSAyNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpiYXNlLmgiDQojcHJhZ21hIGVu
ZHJlZ2lvbg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNrKHBvcCkNCg0KDQojbGluZSAzMyAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xpbmUgMzYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJl
ZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xp
bmUgMjc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2JqYmFzZS5oIg0KI2xpbmUgMjgwICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
b2JqYmFzZS5oIg0KDQojbGluZSAyODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvYmpiYXNlLmgiDQojbGluZSAz
OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXG9sZTIuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgi
DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQw
MDEpIA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojbGluZSA4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcb2xlYXV0by5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCiNsaW5lIDI2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KDQoNCg0KI2xpbmUgMSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDMpDQoNCiNwcmFnbWEg
cGFjayhwdXNoLDgpDQoNCg0KI2xpbmUgMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCIN
Cg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwc2hwYWNrOC5oIg0KI2xpbmUgMzQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxccHNocGFjazguaCINCiNsaW5lIDMwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0
by5oIg0KI2xpbmUgMzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSA0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCg0KZXh0ZXJuICJDIiBjb25zdCBJ
SUQgSUlEX1N0ZE9sZTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNv
cmUgRmFtaWx5DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQlNUUiBfX3N0
ZGNhbGwgU3lzQWxsb2NTdHJpbmcoICBjb25zdCBPTEVDSEFSICogcHN6KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIElOVCBfX3N0ZGNhbGwgIFN5c1JlQWxsb2NTdHJpbmcoICAg
QlNUUiogcGJzdHIsICAgY29uc3QgT0xFQ0hBUiogcHN6KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpICAgQlNUUiBfX3N0ZGNhbGwgU3lzQWxsb2NTdHJpbmdMZW4oICBjb25zdCBP
TEVDSEFSICogc3RySW4sIFVJTlQgdWkpOw0KICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBJTlQgX19zdGRjYWxsICBTeXNSZUFsbG9jU3RyaW5nTGVuKCAgIEJTVFIqIHBic3RyLCAg
IGNvbnN0IE9MRUNIQVIqIHBzeiwgICB1bnNpZ25lZCBpbnQgbGVuKTsNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFN5c0FkZFJlZlN0cmluZyggIEJT
VFIgYnN0clN0cmluZyk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9f
c3RkY2FsbCBTeXNSZWxlYXNlU3RyaW5nKCAgQlNUUiBic3RyU3RyaW5nKTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIFN5c0ZyZWVTdHJpbmcoICBCU1RS
IGJzdHJTdHJpbmcpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgICBVSU5UIF9f
c3RkY2FsbCBTeXNTdHJpbmdMZW4oICBCU1RSIHBic3RyKTsNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSAgIFVJTlQgX19zdGRjYWxsIFN5c1N0cmluZ0J5dGVMZW4oICBCU1RS
IGJzdHIpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQlNUUiBfX3N0ZGNhbGwg
U3lzQWxsb2NTdHJpbmdCeXRlTGVuKCAgTFBDU1RSIHBzeiwgICBVSU5UIGxlbik7DQoNCiNsaW5l
IDg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KDQojbGluZSA5MCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9s
ZWF1dG8uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBJTlQgX19zdGRjYWxsIERvc0RhdGVUaW1lVG9WYXJpYW50VGltZSggIFVTSE9S
VCB3RG9zRGF0ZSwgICBVU0hPUlQgd0Rvc1RpbWUsICAgRE9VQkxFICogcHZ0aW1lKTsNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSU5UIF9fc3RkY2FsbCBWYXJpYW50VGltZVRv
RG9zRGF0ZVRpbWUoICBET1VCTEUgdnRpbWUsICAgVVNIT1JUICogcHdEb3NEYXRlLCAgIFVTSE9S
VCAqIHB3RG9zVGltZSk7DQoNCiNsaW5lIDEwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkg
b3IgT25lQ29yZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBJ
TlQgX19zdGRjYWxsIFN5c3RlbVRpbWVUb1ZhcmlhbnRUaW1lKCAgTFBTWVNURU1USU1FIGxwU3lz
dGVtVGltZSwgICBET1VCTEUgKnB2dGltZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBJTlQgX19zdGRjYWxsIFZhcmlhbnRUaW1lVG9TeXN0ZW1UaW1lKCAgRE9VQkxFIHZ0aW1l
LCAgIExQU1lTVEVNVElNRSBscFN5c3RlbVRpbWUpOw0KDQojbGluZSAxMTUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvbGVhdXRvLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMTggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvbGVhdXRvLmgiDQoNCg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1p
bHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlBbGxvY0Rlc2NyaXB0b3IoICBVSU5UIGNEaW1z
LCAgU0FGRUFSUkFZICoqIHBwc2FPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwgU2FmZUFycmF5QWxsb2NEZXNjcmlwdG9yRXgoICBWQVJUWVBF
IHZ0LCAgIFVJTlQgY0RpbXMsICBTQUZFQVJSQVkgKiogcHBzYU91dCk7DQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlBbGxvY0RhdGEo
ICBTQUZFQVJSQVkgKiBwc2EpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU0FG
RUFSUkFZICogX19zdGRjYWxsIFNhZmVBcnJheUNyZWF0ZSggIFZBUlRZUEUgdnQsICAgVUlOVCBj
RGltcywgICBTQUZFQVJSQVlCT1VORCAqIHJnc2Fib3VuZCk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBTQUZFQVJSQVkgKiBfX3N0ZGNhbGwgU2FmZUFycmF5Q3JlYXRlRXgoICBW
QVJUWVBFIHZ0LCAgIFVJTlQgY0RpbXMsICAgU0FGRUFSUkFZQk9VTkQgKiByZ3NhYm91bmQsICAg
UFZPSUQgcHZFeHRyYSk7DQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlDb3B5RGF0YSggIFNBRkVBUlJBWSAqcHNhU291cmNlLCAg
IFNBRkVBUlJBWSAqcHNhVGFyZ2V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IHZvaWQgX19zdGRjYWxsIFNhZmVBcnJheVJlbGVhc2VEZXNjcmlwdG9yKCAgU0FGRUFSUkFZICog
cHNhKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFNhZmVBcnJheURlc3Ryb3lEZXNjcmlwdG9yKCAgU0FGRUFSUkFZICogcHNhKTsNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIFNhZmVBcnJheVJlbGVhc2VE
YXRhKCAgUFZPSUQgcERhdGEpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJF
U1VMVCBfX3N0ZGNhbGwgU2FmZUFycmF5RGVzdHJveURhdGEoICBTQUZFQVJSQVkgKiBwc2EpOw0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU2FmZUFy
cmF5QWRkUmVmKCAgU0FGRUFSUkFZICogcHNhLCAgIFBWT0lEICpwcERhdGFUb1JlbGVhc2UpOw0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU2FmZUFy
cmF5RGVzdHJveSggIFNBRkVBUlJBWSAqIHBzYSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlSZWRpbSggIFNBRkVBUlJBWSAqIHBz
YSwgICBTQUZFQVJSQVlCT1VORCAqIHBzYWJvdW5kTmV3KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIFVJTlQgX19zdGRjYWxsIFNhZmVBcnJheUdldERpbSggIFNBRkVBUlJBWSAq
IHBzYSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSU5UIF9fc3RkY2FsbCBT
YWZlQXJyYXlHZXRFbGVtc2l6ZSggIFNBRkVBUlJBWSAqIHBzYSk7DQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlHZXRVQm91bmQoICBT
QUZFQVJSQVkgKiBwc2EsICAgVUlOVCBuRGltLCAgIExPTkcgKiBwbFVib3VuZCk7DQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlHZXRM
Qm91bmQoICBTQUZFQVJSQVkgKiBwc2EsICAgVUlOVCBuRGltLCAgIExPTkcgKiBwbExib3VuZCk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTYWZl
QXJyYXlMb2NrKCAgU0FGRUFSUkFZICogcHNhKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFNhZmVBcnJheVVubG9jayggIFNBRkVBUlJBWSAqIHBz
YSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBT
YWZlQXJyYXlBY2Nlc3NEYXRhKCAgU0FGRUFSUkFZICogcHNhLCAgdm9pZCAqKiBwcHZEYXRhKTsN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFNhZmVB
cnJheVVuYWNjZXNzRGF0YSggIFNBRkVBUlJBWSAqIHBzYSk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlHZXRFbGVtZW50KCAgU0FG
RUFSUkFZICogcHNhLCAgIExPTkcgKiByZ0luZGljZXMsICAgdm9pZCAqIHB2KTsNCiANCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFNhZmVBcnJheVB1
dEVsZW1lbnQoICBTQUZFQVJSQVkgKiBwc2EsICAgTE9ORyAqIHJnSW5kaWNlcywgICB2b2lkICog
cHYpOw0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNh
bGwgU2FmZUFycmF5Q29weSggIFNBRkVBUlJBWSAqIHBzYSwgIFNBRkVBUlJBWSAqKiBwcHNhT3V0
KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFNh
ZmVBcnJheVB0ck9mSW5kZXgoICBTQUZFQVJSQVkgKiBwc2EsICAgTE9ORyAqIHJnSW5kaWNlcywg
IHZvaWQgKiogcHB2RGF0YSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBTYWZlQXJyYXlTZXRSZWNvcmRJbmZvKCAgU0FGRUFSUkFZICogcHNhLCAg
IElSZWNvcmRJbmZvICogcHJpbmZvKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsIFNhZmVBcnJheUdldFJlY29yZEluZm8oICBTQUZFQVJSQVkgKiBw
c2EsICBJUmVjb3JkSW5mbyAqKiBwcmluZm8pOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgU2FmZUFycmF5U2V0SUlEKCAgU0FGRUFSUkFZICogcHNh
LCAgIGNvbnN0IEdVSUQgJiBndWlkKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsIFNhZmVBcnJheUdldElJRCggIFNBRkVBUlJBWSAqIHBzYSwgICBH
VUlEICogcGd1aWQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBf
X3N0ZGNhbGwgU2FmZUFycmF5R2V0VmFydHlwZSggIFNBRkVBUlJBWSAqIHBzYSwgICBWQVJUWVBF
ICogcHZ0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFNBRkVBUlJBWSAqIF9f
c3RkY2FsbCBTYWZlQXJyYXlDcmVhdGVWZWN0b3IoICBWQVJUWVBFIHZ0LCAgIExPTkcgbExib3Vu
ZCwgICBVTE9ORyBjRWxlbWVudHMpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
U0FGRUFSUkFZICogX19zdGRjYWxsIFNhZmVBcnJheUNyZWF0ZVZlY3RvckV4KCAgVkFSVFlQRSB2
dCwgICBMT05HIGxMYm91bmQsICAgVUxPTkcgY0VsZW1lbnRzLCAgIFBWT0lEIHB2RXh0cmEpOw0K
DQojbGluZSAxNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUg
RmFtaWx5DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNh
bGwgVmFyaWFudEluaXQoICBWQVJJQU5UQVJHICogcHZhcmcpOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyaWFudENsZWFyKCAgVkFSSUFOVEFS
RyAqIHB2YXJnKTsNCiANCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFZhcmlhbnRDb3B5KCAgVkFSSUFOVEFSRyAqIHB2YXJnRGVzdCwgICBjb25zdCBW
QVJJQU5UQVJHICogcHZhcmdTcmMpOw0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyaWFudENvcHlJbmQoICBWQVJJQU5UICogcHZhckRlc3Qs
ICAgY29uc3QgVkFSSUFOVEFSRyAqIHB2YXJnU3JjKTsNCiANCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhcmlhbnRDaGFuZ2VUeXBlKCAgVkFSSUFO
VEFSRyAqIHB2YXJnRGVzdCwNCiAgICAgICAgICAgICAgICAgY29uc3QgVkFSSUFOVEFSRyAqIHB2
YXJTcmMsICAgVVNIT1JUIHdGbGFncywgICBWQVJUWVBFIHZ0KTsNCiANCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhcmlhbnRDaGFuZ2VUeXBlRXgo
ICBWQVJJQU5UQVJHICogcHZhcmdEZXN0LA0KICAgICAgICAgICAgICAgICBjb25zdCBWQVJJQU5U
QVJHICogcHZhclNyYywgICBMQ0lEIGxjaWQsICAgVVNIT1JUIHdGbGFncywgICBWQVJUWVBFIHZ0
KTsNCg0KI2xpbmUgMTg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KI3ByYWdtYSBlbmRyZWdp
b24NCg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCgkJCQkgICAgICANCgkJCQkgICAg
ICANCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdp
b24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQogDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWZWN0b3JGcm9tQnN0ciAoICBC
U1RSIGJzdHIsICBTQUZFQVJSQVkgKiogcHBzYSk7DQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBCc3RyRnJvbVZlY3RvciAoICBTQUZFQVJSQVkg
KnBzYSwgICBCU1RSICpwYnN0cik7DQoNCiNsaW5lIDIxOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8u
aCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDI2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5
IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyVUkxRnJvbUkyKFNIT1JUIHNJbiwgICBCWVRFICogcGJPdXQp
Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFy
VUkxRnJvbUk0KExPTkcgbEluLCAgIEJZVEUgKiBwYk91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTFGcm9tSTgoTE9ORzY0IGk2NElu
LCAgIEJZVEUgKiBwYk91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBWYXJVSTFGcm9tUjQoRkxPQVQgZmx0SW4sICAgQllURSAqIHBiT3V0KTsN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJ
MUZyb21SOChET1VCTEUgZGJsSW4sICAgQllURSAqIHBiT3V0KTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJMUZyb21DeShDWSBjeUluLCAg
IEJZVEUgKiBwYk91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbCBWYXJVSTFGcm9tRGF0ZShEQVRFIGRhdGVJbiwgICBCWVRFICogcGJPdXQpOw0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyVUkx
RnJvbVN0ciggIExQQ09MRVNUUiBzdHJJbiwgTENJRCBsY2lkLCBVTE9ORyBkd0ZsYWdzLCAgIEJZ
VEUgKiBwYk91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9f
c3RkY2FsbCBWYXJVSTFGcm9tRGlzcChJRGlzcGF0Y2ggKiBwZGlzcEluLCBMQ0lEIGxjaWQsICAg
QllURSAqIHBiT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFZhclVJMUZyb21Cb29sKFZBUklBTlRfQk9PTCBib29sSW4sICAgQllURSAqIHBi
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhclVJMUZyb21JMShDSEFSIGNJbiwgICBCWVRFICpwYk91dCk7DQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTFGcm9tVUkyKFVTSE9SVCB1
aUluLCAgIEJZVEUgKnBiT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhS
RVNVTFQgX19zdGRjYWxsIFZhclVJMUZyb21VSTQoVUxPTkcgdWxJbiwgICBCWVRFICpwYk91dCk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJV
STFGcm9tVUk4KFVMT05HNjQgdWk2NEluLCAgIEJZVEUgKiBwYk91dCk7DQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTFGcm9tRGVjKCAgY29u
c3QgREVDSU1BTCAqcGRlY0luLCAgIEJZVEUgKnBiT3V0KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySTJGcm9tVUkxKEJZVEUgYkluLCAg
IFNIT1JUICogcHNPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgVmFySTJGcm9tSTQoTE9ORyBsSW4sICAgU0hPUlQgKiBwc091dCk7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJMkZyb21J
OChMT05HNjQgaTY0SW4sICAgU0hPUlQgKiBwc091dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJMkZyb21SNChGTE9BVCBmbHRJbiwgICBT
SE9SVCAqIHBzT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFZhckkyRnJvbVI4KERPVUJMRSBkYmxJbiwgICBTSE9SVCAqIHBzT3V0KTsNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckkyRnJv
bUN5KENZIGN5SW4sIFNIT1JUICogcHNPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySTJGcm9tRGF0ZShEQVRFIGRhdGVJbiwgICBTSE9S
VCAqIHBzT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19z
dGRjYWxsIFZhckkyRnJvbVN0ciggIExQQ09MRVNUUiBzdHJJbiwgTENJRCBsY2lkLCBVTE9ORyBk
d0ZsYWdzLCAgIFNIT1JUICogcHNPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySTJGcm9tRGlzcChJRGlzcGF0Y2ggKiBwZGlzcEluLCBM
Q0lEIGxjaWQsICAgU0hPUlQgKiBwc091dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJMkZyb21Cb29sKFZBUklBTlRfQk9PTCBib29sSW4s
ICAgU0hPUlQgKiBwc091dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBWYXJJMkZyb21JMShDSEFSIGNJbiwgICBTSE9SVCAqcHNPdXQpOw0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySTJGcm9t
VUkyKFVTSE9SVCB1aUluLCAgIFNIT1JUICpwc091dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJMkZyb21VSTQoVUxPTkcgdWxJbiwgICBT
SE9SVCAqcHNPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBf
X3N0ZGNhbGwgVmFySTJGcm9tVUk4KFVMT05HNjQgdWk2NEluLCAgIFNIT1JUICogcHNPdXQpOw0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySTJG
cm9tRGVjKCAgY29uc3QgREVDSU1BTCAqcGRlY0luLCAgIFNIT1JUICpwc091dCk7DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk0RnJvbVVJ
MShCWVRFIGJJbiwgICBMT05HICogcGxPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySTRGcm9tSTIoU0hPUlQgc0luLCAgIExPTkcgKiBw
bE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCBWYXJJNEZyb21JOChMT05HNjQgaTY0SW4sICAgTE9ORyAqIHBsT3V0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk0RnJvbVI0KEZMT0FU
IGZsdEluLCAgIExPTkcgKiBwbE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJNEZyb21SOChET1VCTEUgZGJsSW4sICAgTE9ORyAqIHBs
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhckk0RnJvbUN5KENZIGN5SW4sICAgTE9ORyAqIHBsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk0RnJvbURhdGUoREFURSBkYXRl
SW4sICAgTE9ORyAqIHBsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhS
RVNVTFQgX19zdGRjYWxsIFZhckk0RnJvbVN0ciggIExQQ09MRVNUUiBzdHJJbiwgTENJRCBsY2lk
LCBVTE9ORyBkd0ZsYWdzLCAgIExPTkcgKiBwbE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJNEZyb21EaXNwKElEaXNwYXRjaCAqIHBk
aXNwSW4sICAgTENJRCBsY2lkLCAgIExPTkcgKiBwbE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJNEZyb21Cb29sKFZBUklBTlRfQk9P
TCBib29sSW4sICAgTE9ORyAqIHBsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk0RnJvbUkxKENIQVIgY0luLCAgIExPTkcgKnBsT3V0
KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZh
ckk0RnJvbVVJMihVU0hPUlQgdWlJbiwgICBMT05HICpwbE91dCk7DQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJNEZyb21VSTQoVUxPTkcgdWxJ
biwgICBMT05HICpwbE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBWYXJJNEZyb21VSTgoVUxPTkc2NCB1aTY0SW4sICAgTE9ORyAqIHBsT3V0
KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZh
ckk0RnJvbURlYyggIGNvbnN0IERFQ0lNQUwgKnBkZWNJbiwgICBMT05HICpwbE91dCk7DQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJ
OEZyb21VSTEoQllURSBiSW4sICAgTE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJOEZyb21JMihTSE9SVCBzSW4s
ICAgTE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJJOEZyb21SNChGTE9BVCBmbHRJbiwgICBMT05HNjQgKiBwaTY0
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhckk4RnJvbVI4KERPVUJMRSBkYmxJbiwgICBMT05HNjQgKiBwaTY0T3V0KTsNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk4RnJvbUN5KCAg
Q1kgY3lJbiwgICBMT05HNjQgKiBwaTY0T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk4RnJvbURhdGUoREFURSBkYXRlSW4sICAgTE9O
RzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbCBWYXJJOEZyb21TdHIoICBMUENPTEVTVFIgc3RySW4sICAgTENJRCBsY2lkLCAg
IFVMT05HIGR3RmxhZ3MsICAgTE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJJOEZyb21EaXNwKElEaXNwYXRjaCAq
IHBkaXNwSW4sICAgTENJRCBsY2lkLCAgIExPTkc2NCAqIHBpNjRPdXQpOw0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySThGcm9tQm9vbChWQVJJ
QU5UX0JPT0wgYm9vbEluLCAgIExPTkc2NCAqIHBpNjRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFySThGcm9tSTEoQ0hBUiBjSW4sICAg
TE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBWYXJJOEZyb21VSTIoVVNIT1JUIHVpSW4sICAgTE9ORzY0ICogcGk2NE91
dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBW
YXJJOEZyb21VSTQoVUxPTkcgdWxJbiwgICBMT05HNjQgKiBwaTY0T3V0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk4RnJvbVVJOChVTE9O
RzY0IHVpNjRJbiwgICBMT05HNjQgKiBwaTY0T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk4RnJvbURlYyggIGNvbnN0IERFQ0lNQUwg
KnBkZWNJbiwgICBMT05HNjQgKiBwaTY0T3V0KTsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJSNEZyb21VSTEoQllURSBiSW4s
ICAgRkxPQVQgKiBwZmx0T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhS
RVNVTFQgX19zdGRjYWxsIFZhclI0RnJvbUkyKFNIT1JUIHNJbiwgICBGTE9BVCAqIHBmbHRPdXQp
Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFy
UjRGcm9tSTQoTE9ORyBsSW4sICAgRkxPQVQgKiBwZmx0T3V0KTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclI0RnJvbUk4KExPTkc2NCBpNjRJ
biwgICBGTE9BVCAqIHBmbHRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjRGcm9tUjgoRE9VQkxFIGRibEluLCAgIEZMT0FUICogcGZs
dE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCBWYXJSNEZyb21DeShDWSBjeUluLCBGTE9BVCAqIHBmbHRPdXQpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjRGcm9tRGF0ZShEQVRFIGRh
dGVJbiwgICBGTE9BVCAqIHBmbHRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjRGcm9tU3RyKCAgTFBDT0xFU1RSIHN0ckluLCBMQ0lE
IGxjaWQsIFVMT05HIGR3RmxhZ3MsICAgRkxPQVQgKnBmbHRPdXQpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjRGcm9tRGlzcChJRGlzcGF0
Y2ggKiBwZGlzcEluLCBMQ0lEIGxjaWQsICAgRkxPQVQgKiBwZmx0T3V0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclI0RnJvbUJvb2woVkFS
SUFOVF9CT09MIGJvb2xJbiwgICBGTE9BVCAqIHBmbHRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjRGcm9tSTEoQ0hBUiBjSW4sICAg
RkxPQVQgKnBmbHRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgVmFyUjRGcm9tVUkyKFVTSE9SVCB1aUluLCAgIEZMT0FUICpwZmx0T3V0KTsN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclI0
RnJvbVVJNChVTE9ORyB1bEluLCAgIEZMT0FUICpwZmx0T3V0KTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclI0RnJvbVVJOChVTE9ORzY0IHVp
NjRJbiwgICBGTE9BVCAqIHBmbHRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjRGcm9tRGVjKCAgY29uc3QgREVDSU1BTCAqcGRlY0lu
LCAgIEZMT0FUICpwZmx0T3V0KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjhGcm9tVUkxKEJZVEUgYkluLCAgIERPVUJMRSAqIHBkYmxP
dXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwg
VmFyUjhGcm9tSTIoU0hPUlQgc0luLCAgIERPVUJMRSAqIHBkYmxPdXQpOw0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjhGcm9tSTQoTE9ORyBs
SW4sICAgRE9VQkxFICogcGRibE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJSOEZyb21JOChMT05HNjQgaTY0SW4sICAgRE9VQkxFICog
cGRibE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbCBWYXJSOEZyb21SNChGTE9BVCBmbHRJbiwgICBET1VCTEUgKiBwZGJsT3V0KTsNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclI4RnJvbUN5
KENZIGN5SW4sIERPVUJMRSAqIHBkYmxPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjhGcm9tRGF0ZShEQVRFIGRhdGVJbiwgICBET1VC
TEUgKiBwZGJsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFZhclI4RnJvbVN0ciggIExQQ09MRVNUUiBzdHJJbiwgTENJRCBsY2lkLCBVTE9O
RyBkd0ZsYWdzLCAgIERPVUJMRSAqcGRibE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJSOEZyb21EaXNwKElEaXNwYXRjaCAqIHBkaXNw
SW4sIExDSUQgbGNpZCwgICBET1VCTEUgKiBwZGJsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclI4RnJvbUJvb2woVkFSSUFOVF9CT09M
IGJvb2xJbiwgICBET1VCTEUgKiBwZGJsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclI4RnJvbUkxKENIQVIgY0luLCBET1VCTEUgKnBk
YmxPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNh
bGwgVmFyUjhGcm9tVUkyKFVTSE9SVCB1aUluLCAgIERPVUJMRSAqcGRibE91dCk7DQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJSOEZyb21VSTQo
VUxPTkcgdWxJbiwgICBET1VCTEUgKnBkYmxPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyUjhGcm9tVUk4KFVMT05HNjQgdWk2NEluLCAg
IERPVUJMRSAqIHBkYmxPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJF
U1VMVCBfX3N0ZGNhbGwgVmFyUjhGcm9tRGVjKCAgY29uc3QgREVDSU1BTCAqcGRlY0luLCAgIERP
VUJMRSAqcGRibE91dCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsIFZhckRhdGVGcm9tVUkxKEJZVEUgYkluLCAgIERBVEUgKiBwZGF0ZU91dCk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJE
YXRlRnJvbUkyKFNIT1JUIHNJbiwgICBEQVRFICogcGRhdGVPdXQpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGF0ZUZyb21JNChMT05HIGxJ
biwgICBEQVRFICogcGRhdGVPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGF0ZUZyb21JOChMT05HNjQgaTY0SW4sICAgREFURSAqIHBk
YXRlT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRj
YWxsIFZhckRhdGVGcm9tUjQoRkxPQVQgZmx0SW4sICAgREFURSAqIHBkYXRlT3V0KTsNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckRhdGVGcm9t
UjgoRE9VQkxFIGRibEluLCAgIERBVEUgKiBwZGF0ZU91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJEYXRlRnJvbUN5KENZIGN5SW4sICAg
REFURSAqIHBkYXRlT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsIFZhckRhdGVGcm9tU3RyKCAgTFBDT0xFU1RSIHN0ckluLCAgIExDSUQgbGNp
ZCwgICBVTE9ORyBkd0ZsYWdzLCAgIERBVEUgKnBkYXRlT3V0KTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckRhdGVGcm9tRGlzcChJRGlzcGF0
Y2ggKiBwZGlzcEluLCBMQ0lEIGxjaWQsICAgREFURSAqIHBkYXRlT3V0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckRhdGVGcm9tQm9vbChW
QVJJQU5UX0JPT0wgYm9vbEluLCAgIERBVEUgKiBwZGF0ZU91dCk7DQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJEYXRlRnJvbUkxKENIQVIgY0lu
LCAgIERBVEUgKnBkYXRlT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhS
RVNVTFQgX19zdGRjYWxsIFZhckRhdGVGcm9tVUkyKFVTSE9SVCB1aUluLCAgIERBVEUgKnBkYXRl
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhckRhdGVGcm9tVUk0KFVMT05HIHVsSW4sICAgREFURSAqcGRhdGVPdXQpOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGF0ZUZyb21VSTgo
VUxPTkc2NCB1aTY0SW4sICAgREFURSAqIHBkYXRlT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckRhdGVGcm9tRGVjKCAgY29uc3QgREVD
SU1BTCAqcGRlY0luLCAgIERBVEUgKnBkYXRlT3V0KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lGcm9tVUkxKEJZVEUgYkluLCAgIENZ
ICogcGN5T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19z
dGRjYWxsIFZhckN5RnJvbUkyKFNIT1JUIHNJbiwgICBDWSAqIHBjeU91dCk7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJDeUZyb21JNChMT05H
IGxJbiwgICBDWSAqIHBjeU91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJDeUZyb21JOChMT05HNjQgaTY0SW4sICAgQ1kgKiBwY3lPdXQp
Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFy
Q3lGcm9tUjQoRkxPQVQgZmx0SW4sICAgQ1kgKiBwY3lPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lGcm9tUjgoRE9VQkxFIGRibElu
LCAgIENZICogcGN5T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsIFZhckN5RnJvbURhdGUoREFURSBkYXRlSW4sICAgQ1kgKiBwY3lPdXQpOw0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lG
cm9tU3RyKCAgTFBDT0xFU1RSIHN0ckluLCAgIExDSUQgbGNpZCwgICBVTE9ORyBkd0ZsYWdzLCAg
IENZICogcGN5T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFZhckN5RnJvbURpc3AoICBJRGlzcGF0Y2ggKiBwZGlzcEluLCBMQ0lEIGxjaWQs
ICAgQ1kgKiBwY3lPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgVmFyQ3lGcm9tQm9vbChWQVJJQU5UX0JPT0wgYm9vbEluLCAgIENZICogcGN5
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhckN5RnJvbUkxKENIQVIgY0luLCAgIENZICpwY3lPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lGcm9tVUkyKFVTSE9SVCB1aUlu
LCAgIENZICpwY3lPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgVmFyQ3lGcm9tVUk0KFVMT05HIHVsSW4sICAgQ1kgKnBjeU91dCk7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJDeUZyb21V
STgoVUxPTkc2NCB1aTY0SW4sICAgQ1kgKiBwY3lPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lGcm9tRGVjKCAgY29uc3QgREVDSU1B
TCAqcGRlY0luLCAgIENZICpwY3lPdXQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJCc3RyRnJvbVVJMShCWVRFIGJWYWwsIExDSUQgbGNp
ZCwgVUxPTkcgZHdGbGFncywgICBCU1RSICogcGJzdHJPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQnN0ckZyb21JMihTSE9SVCBpVmFs
LCBMQ0lEIGxjaWQsIFVMT05HIGR3RmxhZ3MsICAgQlNUUiAqIHBic3RyT3V0KTsNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckJzdHJGcm9tSTQo
TE9ORyBsSW4sIExDSUQgbGNpZCwgVUxPTkcgZHdGbGFncywgICBCU1RSICogcGJzdHJPdXQpOw0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQnN0
ckZyb21JOChMT05HNjQgaTY0SW4sIExDSUQgbGNpZCwgVUxPTkcgZHdGbGFncywgICBCU1RSICog
cGJzdHJPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0
ZGNhbGwgVmFyQnN0ckZyb21SNChGTE9BVCBmbHRJbiwgTENJRCBsY2lkLCBVTE9ORyBkd0ZsYWdz
LCAgIEJTVFIgKiBwYnN0ck91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJCc3RyRnJvbVI4KERPVUJMRSBkYmxJbiwgTENJRCBsY2lkLCBV
TE9ORyBkd0ZsYWdzLCAgIEJTVFIgKiBwYnN0ck91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJCc3RyRnJvbUN5KENZIGN5SW4sIExDSUQg
bGNpZCwgVUxPTkcgZHdGbGFncywgICBCU1RSICogcGJzdHJPdXQpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQnN0ckZyb21EYXRlKCAgREFU
RSBkYXRlSW4sICAgTENJRCBsY2lkLCAgIFVMT05HIGR3RmxhZ3MsICAgQlNUUiAqIHBic3RyT3V0
KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZh
ckJzdHJGcm9tRGlzcChJRGlzcGF0Y2ggKiBwZGlzcEluLCBMQ0lEIGxjaWQsIFVMT05HIGR3Rmxh
Z3MsICAgQlNUUiAqIHBic3RyT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsIFZhckJzdHJGcm9tQm9vbChWQVJJQU5UX0JPT0wgYm9vbEluLCBM
Q0lEIGxjaWQsIFVMT05HIGR3RmxhZ3MsICAgQlNUUiAqIHBic3RyT3V0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckJzdHJGcm9tSTEoQ0hB
UiBjSW4sIExDSUQgbGNpZCwgVUxPTkcgZHdGbGFncywgICBCU1RSICpwYnN0ck91dCk7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJCc3RyRnJv
bVVJMihVU0hPUlQgdWlJbiwgTENJRCBsY2lkLCBVTE9ORyBkd0ZsYWdzLCAgIEJTVFIgKnBic3Ry
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhckJzdHJGcm9tVUk0KFVMT05HIHVsSW4sIExDSUQgbGNpZCwgVUxPTkcgZHdGbGFncywgICBC
U1RSICpwYnN0ck91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbCBWYXJCc3RyRnJvbVVJOChVTE9ORzY0IHVpNjRJbiwgTENJRCBsY2lkLCBVTE9O
RyBkd0ZsYWdzLCAgIEJTVFIgKiBwYnN0ck91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJCc3RyRnJvbURlYyggIGNvbnN0IERFQ0lNQUwg
KnBkZWNJbiwgICBMQ0lEIGxjaWQsICAgVUxPTkcgZHdGbGFncywgICBCU1RSICpwYnN0ck91dCk7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZh
ckJvb2xGcm9tVUkxKEJZVEUgYkluLCAgIFZBUklBTlRfQk9PTCAqIHBib29sT3V0KTsNCiAgZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQm9vbEZy
b21JMiggIFNIT1JUIHNJbiwgICBWQVJJQU5UX0JPT0wgKiBwYm9vbE91dCk7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJCb29sRnJvbUk0KExP
TkcgbEluLCAgIFZBUklBTlRfQk9PTCAqIHBib29sT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckJvb2xGcm9tSTgoTE9ORzY0IGk2NElu
LCAgIFZBUklBTlRfQk9PTCAqIHBib29sT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckJvb2xGcm9tUjQoRkxPQVQgZmx0SW4sICAgVkFS
SUFOVF9CT09MICogcGJvb2xPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyQm9vbEZyb21SOChET1VCTEUgZGJsSW4sICAgVkFSSUFOVF9C
T09MICogcGJvb2xPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgVmFyQm9vbEZyb21EYXRlKERBVEUgZGF0ZUluLCAgIFZBUklBTlRfQk9PTCAq
IHBib29sT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19z
dGRjYWxsIFZhckJvb2xGcm9tQ3koQ1kgY3lJbiwgICBWQVJJQU5UX0JPT0wgKiBwYm9vbE91dCk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJC
b29sRnJvbVN0ciggIExQQ09MRVNUUiBzdHJJbiwgTENJRCBsY2lkLCBVTE9ORyBkd0ZsYWdzLCAg
IFZBUklBTlRfQk9PTCAqIHBib29sT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckJvb2xGcm9tRGlzcChJRGlzcGF0Y2ggKiBwZGlzcElu
LCBMQ0lEIGxjaWQsICAgVkFSSUFOVF9CT09MICogcGJvb2xPdXQpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQm9vbEZyb21JMShDSEFSIGNJ
biwgICBWQVJJQU5UX0JPT0wgKnBib29sT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckJvb2xGcm9tVUkyKFVTSE9SVCB1aUluLCAgIFZB
UklBTlRfQk9PTCAqcGJvb2xPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyQm9vbEZyb21VSTQoVUxPTkcgdWxJbiwgICBWQVJJQU5UX0JP
T0wgKnBib29sT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFZhckJvb2xGcm9tVUk4KFVMT05HNjQgaTY0SW4sICAgVkFSSUFOVF9CT09MICog
cGJvb2xPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0
ZGNhbGwgVmFyQm9vbEZyb21EZWMoICBjb25zdCBERUNJTUFMICpwZGVjSW4sICAgVkFSSUFOVF9C
T09MICpwYm9vbE91dCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsDQpWYXJJMUZyb21VSTEoDQogICAgICBCWVRFIGJJbiwNCiAgICAgIENIQVIg
KnBjT3V0DQogICAgKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwNClZhckkxRnJvbUkyKA0KICAgICAgU0hPUlQgdWlJbiwNCiAgICAgIENIQVIg
KnBjT3V0DQogICAgKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwNClZhckkxRnJvbUk0KA0KICAgICAgTE9ORyBsSW4sDQogICAgICBDSEFSICpw
Y091dA0KICAgICk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsDQpWYXJJMUZyb21JOCgNCiAgICAgIExPTkc2NCBpNjRJbiwNCiAgICAgIENIQVIg
KnBjT3V0DQogICAgKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwNClZhckkxRnJvbVI0KA0KICAgICAgRkxPQVQgZmx0SW4sDQogICAgICBDSEFS
ICpwY091dA0KICAgICk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsDQpWYXJJMUZyb21SOCgNCiAgICAgIERPVUJMRSBkYmxJbiwNCiAgICAgIENI
QVIgKnBjT3V0DQogICAgKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJF
U1VMVCBfX3N0ZGNhbGwNClZhckkxRnJvbURhdGUoDQogICAgICBEQVRFIGRhdGVJbiwNCiAgICAg
IENIQVIgKnBjT3V0DQogICAgKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwNClZhckkxRnJvbUN5KA0KICAgICAgQ1kgY3lJbiwNCiAgICAgIENI
QVIgKnBjT3V0DQogICAgKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJF
U1VMVCBfX3N0ZGNhbGwNClZhckkxRnJvbVN0cigNCiAgICAgIExQQ09MRVNUUiBzdHJJbiwNCiAg
ICAgIExDSUQgbGNpZCwNCiAgICAgIFVMT05HIGR3RmxhZ3MsDQogICAgICBDSEFSICpwY091dA0K
ICAgICk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRj
YWxsDQpWYXJJMUZyb21EaXNwKA0KICAgICAgSURpc3BhdGNoICpwZGlzcEluLA0KICAgICAgTENJ
RCBsY2lkLA0KICAgICAgQ0hBUiAqcGNPdXQNCiAgICApOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KVmFySTFGcm9tQm9vbCgNCiAgICAgIFZB
UklBTlRfQk9PTCBib29sSW4sDQogICAgICBDSEFSICpwY091dA0KICAgICk7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpWYXJJMUZyb21VSTIo
DQogICAgICBVU0hPUlQgdWlJbiwNCiAgICAgIENIQVIgKnBjT3V0DQogICAgKTsNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwNClZhckkxRnJvbVVJ
NCgNCiAgICAgIFVMT05HIHVsSW4sDQogICAgICBDSEFSICpwY091dA0KICAgICk7DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsDQpWYXJJMUZyb21V
STgoDQogICAgICBVTE9ORzY0IGk2NEluLA0KICAgICAgQ0hBUiAqcGNPdXQNCiAgICApOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbA0KVmFySTFG
cm9tRGVjKA0KICAgICAgY29uc3QgREVDSU1BTCAqcGRlY0luLA0KICAgICAgQ0hBUiAqcGNPdXQN
CiAgICApOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbCBWYXJVSTJGcm9tVUkxKEJZVEUgYkluLCAgIFVTSE9SVCAqcHVpT3V0KTsNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJMkZyb21JMihT
SE9SVCB1aUluLCAgIFVTSE9SVCAqcHVpT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJMkZyb21JNChMT05HIGxJbiwgICBVU0hPUlQg
KnB1aU91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbCBWYXJVSTJGcm9tSTgoTE9ORzY0IGk2NEluLCAgIFVTSE9SVCAqcHVpT3V0KTsNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJMkZyb21S
NChGTE9BVCBmbHRJbiwgICBVU0hPUlQgKnB1aU91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTJGcm9tUjgoRE9VQkxFIGRibEluLCBV
U0hPUlQgKnB1aU91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbCBWYXJVSTJGcm9tRGF0ZShEQVRFIGRhdGVJbiwgICBVU0hPUlQgKnB1aU91dCk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJV
STJGcm9tQ3koQ1kgY3lJbiwgICBVU0hPUlQgKnB1aU91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTJGcm9tU3RyKCAgTFBDT0xFU1RS
IHN0ckluLCAgIExDSUQgbGNpZCwgICBVTE9ORyBkd0ZsYWdzLCAgIFVTSE9SVCAqcHVpT3V0KTsN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJ
MkZyb21EaXNwKCAgSURpc3BhdGNoICpwZGlzcEluLCBMQ0lEIGxjaWQsICAgVVNIT1JUICpwdWlP
dXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwg
VmFyVUkyRnJvbUJvb2woVkFSSUFOVF9CT09MIGJvb2xJbiwgICBVU0hPUlQgKnB1aU91dCk7DQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTJG
cm9tSTEoQ0hBUiBjSW4sICAgVVNIT1JUICpwdWlPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyVUkyRnJvbVVJNChVTE9ORyB1bEluLCAg
IFVTSE9SVCAqcHVpT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsIFZhclVJMkZyb21VSTgoVUxPTkc2NCBpNjRJbiwgICBVU0hPUlQgKnB1aU91
dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBW
YXJVSTJGcm9tRGVjKCAgY29uc3QgREVDSU1BTCAqcGRlY0luLCAgIFVTSE9SVCAqcHVpT3V0KTsN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFy
VUk0RnJvbVVJMShCWVRFIGJJbiwgICBVTE9ORyAqcHVsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJNEZyb21JMiggIFNIT1JUIHVp
SW4sICAgVUxPTkcgKnB1bE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJVSTRGcm9tSTQoTE9ORyBsSW4sICAgVUxPTkcgKnB1bE91dCk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJV
STRGcm9tSTgoTE9ORzY0IGk2NEluLCAgIFVMT05HICpwbE91dCk7DQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTRGcm9tUjQoRkxPQVQgZmx0
SW4sICAgVUxPTkcgKnB1bE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJVSTRGcm9tUjgoRE9VQkxFIGRibEluLCAgIFVMT05HICpwdWxP
dXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwg
VmFyVUk0RnJvbURhdGUoREFURSBkYXRlSW4sICAgVUxPTkcgKnB1bE91dCk7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTRGcm9tQ3koQ1kg
Y3lJbiwgICBVTE9ORyAqcHVsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsIFZhclVJNEZyb21TdHIoICBMUENPTEVTVFIgc3RySW4sICAgTENJ
RCBsY2lkLCAgIFVMT05HIGR3RmxhZ3MsICAgVUxPTkcgKnB1bE91dCk7DQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTRGcm9tRGlzcCggIElE
aXNwYXRjaCAqcGRpc3BJbiwgTENJRCBsY2lkLCAgIFVMT05HICpwdWxPdXQpOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyVUk0RnJvbUJvb2wo
VkFSSUFOVF9CT09MIGJvb2xJbiwgICBVTE9ORyAqcHVsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJNEZyb21JMShDSEFSIGNJbiwg
ICBVTE9ORyAqcHVsT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsIFZhclVJNEZyb21VSTIoVVNIT1JUIHVpSW4sICAgVUxPTkcgKnB1bE91dCk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJV
STRGcm9tVUk4KFVMT05HNjQgdWk2NEluLCAgIFVMT05HICpwbE91dCk7DQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSTRGcm9tRGVjKCAgY29u
c3QgREVDSU1BTCAqcGRlY0luLCAgIFVMT05HICpwdWxPdXQpOw0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyVUk4RnJvbVVJMShCWVRF
IGJJbiwgICBVTE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSThGcm9tSTIoU0hPUlQgc0luLCAgIFVMT05HNjQg
KiBwaTY0T3V0KTsNCg0KI2xpbmUgNTg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSThGcm9tSTQo
TE9ORyBsSW4sICAgVUxPTkc2NCAqIHBpNjRPdXQpOw0KDQojbGluZSA1OTUgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVt
XFxvbGVhdXRvLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNh
dGlvbiBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSThGcm9tSTgoTE9ORzY0IHVpNjRJbiwg
ICBVTE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJVSThGcm9tUjQoRkxPQVQgZmx0SW4sICAgVUxPTkc2NCAqIHBp
NjRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNh
bGwgVmFyVUk4RnJvbVI4KERPVUJMRSBkYmxJbiwgICBVTE9ORzY0ICogcGk2NE91dCk7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSThGcm9t
Q3koQ1kgY3lJbiwgICBVTE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJVSThGcm9tRGF0ZShEQVRFIGRhdGVJbiwg
ICBVTE9ORzY0ICogcGk2NE91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJVSThGcm9tU3RyKCAgTFBDT0xFU1RSIHN0ckluLCAgIExDSUQg
bGNpZCwgICBVTE9ORyBkd0ZsYWdzLCAgIFVMT05HNjQgKiBwaTY0T3V0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJOEZyb21EaXNwKCAg
SURpc3BhdGNoICogcGRpc3BJbiwgTENJRCBsY2lkLCAgIFVMT05HNjQgKiBwaTY0T3V0KTsNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJOEZy
b21Cb29sKFZBUklBTlRfQk9PTCBib29sSW4sICAgVUxPTkc2NCAqIHBpNjRPdXQpOw0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyVUk4RnJvbUkx
KENIQVIgY0luLCAgIFVMT05HNjQgKiBwaTY0T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclVJOEZyb21VSTIoVVNIT1JUIHVpSW4sICAg
VUxPTkc2NCAqIHBpNjRPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJF
U1VMVCBfX3N0ZGNhbGwgVmFyVUk4RnJvbVVJNChVTE9ORyB1bEluLCAgIFVMT05HNjQgKiBwaTY0
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhclVJOEZyb21EZWMoICBjb25zdCBERUNJTUFMICpwZGVjSW4sICAgVUxPTkc2NCAqIHBpNjRP
dXQpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgVmFyRGVjRnJvbVVJMSggIEJZVEUgYkluLCAgIERFQ0lNQUwgKnBkZWNPdXQp
Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFy
RGVjRnJvbUkyKCAgU0hPUlQgdWlJbiwgICBERUNJTUFMICpwZGVjT3V0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckRlY0Zyb21JNCggIExP
TkcgbEluLCAgIERFQ0lNQUwgKnBkZWNPdXQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjRnJvbUk4KExPTkc2NCBpNjRJbiwgICBERUNJ
TUFMICpwZGVjT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIFZhckRlY0Zyb21SNCggIEZMT0FUIGZsdEluLCAgIERFQ0lNQUwgKnBkZWNPdXQp
Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFy
RGVjRnJvbVI4KCAgRE9VQkxFIGRibEluLCAgIERFQ0lNQUwgKnBkZWNPdXQpOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjRnJvbURhdGUo
ICBEQVRFIGRhdGVJbiwgICBERUNJTUFMICpwZGVjT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckRlY0Zyb21DeSggIENZIGN5SW4sICAg
REVDSU1BTCAqcGRlY091dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBWYXJEZWNGcm9tU3RyKCAgTFBDT0xFU1RSIHN0ckluLCAgIExDSUQgbGNp
ZCwgICBVTE9ORyBkd0ZsYWdzLCAgIERFQ0lNQUwgKnBkZWNPdXQpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjRnJvbURpc3AoICBJRGlz
cGF0Y2ggKnBkaXNwSW4sICAgTENJRCBsY2lkLCAgIERFQ0lNQUwgKnBkZWNPdXQpOw0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjRnJvbUJv
b2woICBWQVJJQU5UX0JPT0wgYm9vbEluLCAgIERFQ0lNQUwgKnBkZWNPdXQpOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjRnJvbUkxKCAg
Q0hBUiBjSW4sICAgREVDSU1BTCAqcGRlY091dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBWYXJEZWNGcm9tVUkyKCAgVVNIT1JUIHVpSW4sICAg
REVDSU1BTCAqcGRlY091dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBWYXJEZWNGcm9tVUk0KCAgVUxPTkcgdWxJbiwgICBERUNJTUFMICpwZGVj
T3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
IFZhckRlY0Zyb21VSTgoVUxPTkc2NCB1aTY0SW4sICAgREVDSU1BTCAqcGRlY091dCk7DQoNCiNs
aW5lIDYzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
DQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwg
VmFySTRGcm9tSTgoTE9ORzY0IGk2NEluLCAgIExPTkcgKnBsT3V0KTsNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckk0RnJvbVVJOChVTE9ORzY0
IHVpNjRJbiwgICBMT05HICpwbE91dCk7DQoNCiNsaW5lIDY0OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1
dG8uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcmVn
aW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KDQoNCiNsaW5lIDY2NSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1
dG8uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCB7DQogICAgSU5UICAgY0RpZzsNCiAgICBVTE9ORyBkd0luRmxhZ3M7DQogICAgVUxP
TkcgZHdPdXRGbGFnczsNCiAgICBJTlQgICBjY2hVc2VkOw0KICAgIElOVCAgIG5CYXNlU2hpZnQ7
DQogICAgSU5UICAgblB3cjEwOw0KfSBOVU1QQVJTRTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhclBh
cnNlTnVtRnJvbVN0ciggIExQQ09MRVNUUiBzdHJJbiwgICBMQ0lEIGxjaWQsICAgVUxPTkcgZHdG
bGFncywNCiAgICAgICAgICAgICAgTlVNUEFSU0UgKiBwbnVtcHJzLCAgIEJZVEUgKiByZ2JEaWcp
Ow0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCBWYXJOdW1Gcm9tUGFyc2VOdW0oICBOVU1QQVJTRSAqIHBudW1wcnMsICAgQllURSAqIHJnYkRp
ZywNCiAgICAgICAgICAgICAgVUxPTkcgZHdWdEJpdHMsICAgVkFSSUFOVCAqIHB2YXIpOw0KDQoj
bGluZSA3OTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoN
Cg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWls
eQ0KDQoNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQWRkKCAgTFBWQVJJQU5UIHB2
YXJMZWZ0LCAgIExQVkFSSUFOVCBwdmFyUmlnaHQsICAgTFBWQVJJQU5UIHB2YXJSZXN1bHQpOw0K
ZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJBbmQoICBMUFZBUklBTlQgcHZhckxlZnQs
ICAgTFBWQVJJQU5UIHB2YXJSaWdodCwgICBMUFZBUklBTlQgcHZhclJlc3VsdCk7DQpleHRlcm4g
IkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhckNhdCggIExQVkFSSUFOVCBwdmFyTGVmdCwgICBMUFZB
UklBTlQgcHZhclJpZ2h0LCAgIExQVkFSSUFOVCBwdmFyUmVzdWx0KTsNCmV4dGVybiAiQyIgSFJF
U1VMVCBfX3N0ZGNhbGwgVmFyRGl2KCAgTFBWQVJJQU5UIHB2YXJMZWZ0LCAgIExQVkFSSUFOVCBw
dmFyUmlnaHQsICAgTFBWQVJJQU5UIHB2YXJSZXN1bHQpOw0KZXh0ZXJuICJDIiBIUkVTVUxUIF9f
c3RkY2FsbCBWYXJFcXYoICBMUFZBUklBTlQgcHZhckxlZnQsICAgTFBWQVJJQU5UIHB2YXJSaWdo
dCwgICBMUFZBUklBTlQgcHZhclJlc3VsdCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxs
IFZhcklkaXYoICBMUFZBUklBTlQgcHZhckxlZnQsICAgTFBWQVJJQU5UIHB2YXJSaWdodCwgICBM
UFZBUklBTlQgcHZhclJlc3VsdCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhcklt
cCggIExQVkFSSUFOVCBwdmFyTGVmdCwgICBMUFZBUklBTlQgcHZhclJpZ2h0LCAgIExQVkFSSUFO
VCBwdmFyUmVzdWx0KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyTW9kKCAgTFBW
QVJJQU5UIHB2YXJMZWZ0LCAgIExQVkFSSUFOVCBwdmFyUmlnaHQsICAgTFBWQVJJQU5UIHB2YXJS
ZXN1bHQpOw0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJNdWwoICBMUFZBUklBTlQg
cHZhckxlZnQsICAgTFBWQVJJQU5UIHB2YXJSaWdodCwgICBMUFZBUklBTlQgcHZhclJlc3VsdCk7
DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhck9yKCAgTFBWQVJJQU5UIHB2YXJMZWZ0
LCAgIExQVkFSSUFOVCBwdmFyUmlnaHQsICAgTFBWQVJJQU5UIHB2YXJSZXN1bHQpOw0KZXh0ZXJu
ICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJQb3coICBMUFZBUklBTlQgcHZhckxlZnQsICAgTFBW
QVJJQU5UIHB2YXJSaWdodCwgICBMUFZBUklBTlQgcHZhclJlc3VsdCk7DQpleHRlcm4gIkMiIEhS
RVNVTFQgX19zdGRjYWxsIFZhclN1YiggIExQVkFSSUFOVCBwdmFyTGVmdCwgICBMUFZBUklBTlQg
cHZhclJpZ2h0LCAgIExQVkFSSUFOVCBwdmFyUmVzdWx0KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBf
X3N0ZGNhbGwgVmFyWG9yKCAgTFBWQVJJQU5UIHB2YXJMZWZ0LCAgIExQVkFSSUFOVCBwdmFyUmln
aHQsICAgTFBWQVJJQU5UIHB2YXJSZXN1bHQpOw0KDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRj
YWxsIFZhckFicyggIExQVkFSSUFOVCBwdmFySW4sICAgTFBWQVJJQU5UIHB2YXJSZXN1bHQpOw0K
ZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJGaXgoICBMUFZBUklBTlQgcHZhckluLCAg
IExQVkFSSUFOVCBwdmFyUmVzdWx0KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFy
SW50KCAgTFBWQVJJQU5UIHB2YXJJbiwgICBMUFZBUklBTlQgcHZhclJlc3VsdCk7DQpleHRlcm4g
IkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhck5lZyggIExQVkFSSUFOVCBwdmFySW4sICAgTFBWQVJJ
QU5UIHB2YXJSZXN1bHQpOw0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJOb3QoICBM
UFZBUklBTlQgcHZhckluLCAgIExQVkFSSUFOVCBwdmFyUmVzdWx0KTsNCg0KZXh0ZXJuICJDIiBI
UkVTVUxUIF9fc3RkY2FsbCBWYXJSb3VuZCggIExQVkFSSUFOVCBwdmFySW4sICAgaW50IGNEZWNp
bWFscywgICBMUFZBUklBTlQgcHZhclJlc3VsdCk7DQoNCg0KZXh0ZXJuICJDIiBIUkVTVUxUIF9f
c3RkY2FsbCBWYXJDbXAoICBMUFZBUklBTlQgcHZhckxlZnQsICAgTFBWQVJJQU5UIHB2YXJSaWdo
dCwgICBMQ0lEIGxjaWQsICAgVUxPTkcgZHdGbGFncyk7DQoNCiNsaW5lIDgyOSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXG9sZWF1dG8uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0KZXh0ZXJuICJDKysiIHsNCg0K
I3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0K
DQpfX2lubGluZQ0KSFJFU1VMVA0KDQpfX3N0ZGNhbGwNCiNsaW5lIDg0MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XG9sZWF1dG8uaCINClZhckNtcChMUFZBUklBTlQgcHZhckxlZnQsIExQVkFSSUFOVCBwdmFyUmln
aHQsIExDSUQgbGNpZCkgew0KICAgIHJldHVybiBWYXJDbXAocHZhckxlZnQsIHB2YXJSaWdodCwg
bGNpZCwgMCk7DQp9DQoNCiNsaW5lIDg0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCn0gDQojbGluZSA4NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQoN
Cg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5DQoNCg0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJEZWNBZGQoICBMUERFQ0lN
QUwgcGRlY0xlZnQsICAgTFBERUNJTUFMIHBkZWNSaWdodCwgICBMUERFQ0lNQUwgcGRlY1Jlc3Vs
dCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhckRlY0RpdiggIExQREVDSU1BTCBw
ZGVjTGVmdCwgICBMUERFQ0lNQUwgcGRlY1JpZ2h0LCAgIExQREVDSU1BTCBwZGVjUmVzdWx0KTsN
CmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjTXVsKCAgTFBERUNJTUFMIHBkZWNM
ZWZ0LCAgIExQREVDSU1BTCBwZGVjUmlnaHQsICAgTFBERUNJTUFMIHBkZWNSZXN1bHQpOw0KZXh0
ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJEZWNTdWIoICBMUERFQ0lNQUwgcGRlY0xlZnQs
ICAgTFBERUNJTUFMIHBkZWNSaWdodCwgICBMUERFQ0lNQUwgcGRlY1Jlc3VsdCk7DQoNCmV4dGVy
biAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjQWJzKCAgTFBERUNJTUFMIHBkZWNJbiwgICBM
UERFQ0lNQUwgcGRlY1Jlc3VsdCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhckRl
Y0ZpeCggIExQREVDSU1BTCBwZGVjSW4sICAgTFBERUNJTUFMIHBkZWNSZXN1bHQpOw0KZXh0ZXJu
ICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJEZWNJbnQoICBMUERFQ0lNQUwgcGRlY0luLCAgIExQ
REVDSU1BTCBwZGVjUmVzdWx0KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVj
TmVnKCAgTFBERUNJTUFMIHBkZWNJbiwgICBMUERFQ0lNQUwgcGRlY1Jlc3VsdCk7DQoNCmV4dGVy
biAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGVjUm91bmQoICBMUERFQ0lNQUwgcGRlY0luLCBp
bnQgY0RlY2ltYWxzLCAgIExQREVDSU1BTCBwZGVjUmVzdWx0KTsNCg0KZXh0ZXJuICJDIiBIUkVT
VUxUIF9fc3RkY2FsbCBWYXJEZWNDbXAoICBMUERFQ0lNQUwgcGRlY0xlZnQsICAgTFBERUNJTUFM
IHBkZWNSaWdodCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhckRlY0NtcFI4KCAg
TFBERUNJTUFMIHBkZWNMZWZ0LCAgIGRvdWJsZSBkYmxSaWdodCk7DQoNCg0KDQoNCmV4dGVybiAi
QyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lBZGQoICBDWSBjeUxlZnQsICAgQ1kgY3lSaWdodCwg
ICBMUENZIHBjeVJlc3VsdCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhckN5TXVs
KCAgQ1kgY3lMZWZ0LCAgIENZIGN5UmlnaHQsICAgTFBDWSBwY3lSZXN1bHQpOw0KZXh0ZXJuICJD
IiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJDeU11bEk0KCAgQ1kgY3lMZWZ0LCAgIExPTkcgbFJpZ2h0
LCAgIExQQ1kgcGN5UmVzdWx0KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lN
dWxJOCggIENZIGN5TGVmdCwgICBMT05HNjQgbFJpZ2h0LCAgIExQQ1kgcGN5UmVzdWx0KTsNCmV4
dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lTdWIoICBDWSBjeUxlZnQsICAgQ1kgY3lS
aWdodCwgICBMUENZIHBjeVJlc3VsdCk7DQoNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwg
VmFyQ3lBYnMoICBDWSBjeUluLCAgIExQQ1kgcGN5UmVzdWx0KTsNCmV4dGVybiAiQyIgSFJFU1VM
VCBfX3N0ZGNhbGwgVmFyQ3lGaXgoICBDWSBjeUluLCAgIExQQ1kgcGN5UmVzdWx0KTsNCmV4dGVy
biAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lJbnQoICBDWSBjeUluLCAgIExQQ1kgcGN5UmVz
dWx0KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lOZWcoICBDWSBjeUluLCAg
IExQQ1kgcGN5UmVzdWx0KTsNCg0KZXh0ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJDeVJv
dW5kKCAgQ1kgY3lJbiwgICBpbnQgY0RlY2ltYWxzLCAgIExQQ1kgcGN5UmVzdWx0KTsNCg0KZXh0
ZXJuICJDIiBIUkVTVUxUIF9fc3RkY2FsbCBWYXJDeUNtcCggIENZIGN5TGVmdCwgICBDWSBjeVJp
Z2h0KTsNCmV4dGVybiAiQyIgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyQ3lDbXBSOCggIENZIGN5TGVm
dCwgICBkb3VibGUgZGJsUmlnaHQpOw0KDQoNCg0KDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRj
YWxsIFZhckJzdHJDYXQoICBCU1RSIGJzdHJMZWZ0LCAgIEJTVFIgYnN0clJpZ2h0LCAgIExQQlNU
UiBwYnN0clJlc3VsdCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhckJzdHJDbXAo
ICBCU1RSIGJzdHJMZWZ0LCAgIEJTVFIgYnN0clJpZ2h0LCAgIExDSUQgbGNpZCwgICBVTE9ORyBk
d0ZsYWdzKTsgDQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhclI4UG93KCAgZG91Ymxl
IGRibExlZnQsICAgZG91YmxlIGRibFJpZ2h0LCAgIGRvdWJsZSAqcGRibFJlc3VsdCk7DQpleHRl
cm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhclI0Q21wUjgoICBmbG9hdCBmbHRMZWZ0LCAgIGRv
dWJsZSBkYmxSaWdodCk7DQpleHRlcm4gIkMiIEhSRVNVTFQgX19zdGRjYWxsIFZhclI4Um91bmQo
ICBkb3VibGUgZGJsSW4sICAgaW50IGNEZWNpbWFscywgICBkb3VibGUgKnBkYmxSZXN1bHQpOw0K
DQojbGluZSA5MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCB7DQogICAgU1lTVEVNVElNRSBzdDsNCiAgICBVU0hPUlQgIHdEYXlPZlllYXI7DQp9
IFVEQVRFOw0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9y
IE9uZUNvcmUgRmFtaWx5DQoNCg0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyRGF0ZUZyb21VZGF0ZSggIFVEQVRFICpwdWRhdGVJbiwgICBV
TE9ORyBkd0ZsYWdzLCAgIERBVEUgKnBkYXRlT3V0KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckRhdGVGcm9tVWRhdGVFeCggIFVEQVRFICpw
dWRhdGVJbiwgICBMQ0lEIGxjaWQsICAgVUxPTkcgZHdGbGFncywgICBEQVRFICpwZGF0ZU91dCk7
DQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBW
YXJVZGF0ZUZyb21EYXRlKCAgREFURSBkYXRlSW4sICAgVUxPTkcgZHdGbGFncywgICBVREFURSAq
cHVkYXRlT3V0KTsNCg0KI2xpbmUgOTUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KI3ByYWdt
YSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBG
YW1pbHkNCg0KDQoNCg0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBHZXRBbHRNb250aE5hbWVzKExDSUQgbGNpZCwgIExQT0xFU1RSICogKiBw
cmdwKTsNCg0KDQoNCg0KDQojbGluZSA5NjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQojcHJh
Z21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBBcHBsaWNhdGlvbiBGYW1pbHkgb3IgT25l
Q29yZSBGYW1pbHkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbCBWYXJGb3JtYXQoDQoJICBMUFZBUklBTlQgcHZhckluLA0KCSAgTFBPTEVTVFIg
cHN0ckZvcm1hdCwNCglpbnQgaUZpcnN0RGF5LA0KCWludCBpRmlyc3RXZWVrLA0KCVVMT05HIGR3
RmxhZ3MsDQoJICBCU1RSICpwYnN0ck91dA0KCSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckZvcm1hdERhdGVUaW1lKA0KCSAgTFBWQVJJ
QU5UIHB2YXJJbiwNCglpbnQgaU5hbWVkRm9ybWF0LA0KCVVMT05HIGR3RmxhZ3MsDQoJICBCU1RS
ICpwYnN0ck91dA0KCSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsIFZhckZvcm1hdE51bWJlcigNCgkgIExQVkFSSUFOVCBwdmFySW4sDQoJaW50
IGlOdW1EaWcsDQoJaW50IGlJbmNMZWFkLA0KCWludCBpVXNlUGFyZW5zLA0KCWludCBpR3JvdXAs
DQoJVUxPTkcgZHdGbGFncywNCgkgIEJTVFIgKnBic3RyT3V0DQoJKTsNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgVmFyRm9ybWF0UGVyY2VudCgN
CgkgIExQVkFSSUFOVCBwdmFySW4sDQoJaW50IGlOdW1EaWcsDQoJaW50IGlJbmNMZWFkLA0KCWlu
dCBpVXNlUGFyZW5zLA0KCWludCBpR3JvdXAsDQoJVUxPTkcgZHdGbGFncywNCgkgIEJTVFIgKnBi
c3RyT3V0DQoJKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBf
X3N0ZGNhbGwgVmFyRm9ybWF0Q3VycmVuY3koDQoJICBMUFZBUklBTlQgcHZhckluLA0KCWludCBp
TnVtRGlnLA0KCWludCBpSW5jTGVhZCwNCglpbnQgaVVzZVBhcmVucywNCglpbnQgaUdyb3VwLA0K
CVVMT05HIGR3RmxhZ3MsDQoJICBCU1RSICpwYnN0ck91dA0KCSk7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhcldlZWtkYXlOYW1lKA0KCWlu
dCBpV2Vla2RheSwNCglpbnQgZkFiYnJldiwNCglpbnQgaUZpcnN0RGF5LA0KCVVMT05HIGR3Rmxh
Z3MsDQoJICBCU1RSICpwYnN0ck91dA0KCSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhck1vbnRoTmFtZSgNCglpbnQgaU1vbnRoLA0KCWlu
dCBmQWJicmV2LA0KCVVMT05HIGR3RmxhZ3MsDQoJICBCU1RSICpwYnN0ck91dA0KCSk7DQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFZhckZvcm1h
dEZyb21Ub2tlbnMoDQoJICBMUFZBUklBTlQgcHZhckluLA0KCSAgTFBPTEVTVFIgcHN0ckZvcm1h
dCwNCgkgIExQQllURSBwYlRva0N1ciwNCglVTE9ORyBkd0ZsYWdzLA0KCSAgQlNUUiAqcGJzdHJP
dXQsDQoJTENJRCBsY2lkDQoJKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgVmFyVG9rZW5pemVGb3JtYXRTdHJpbmcoDQoJICBMUE9MRVNUUiBw
c3RyRm9ybWF0LA0KCSAgTFBCWVRFIHJnYlRvaywNCglpbnQgY2JUb2ssDQoJaW50IGlGaXJzdERh
eSwNCglpbnQgaUZpcnN0V2VlaywNCglMQ0lEIGxjaWQsDQoJICBpbnQgKnBjYkFjdHVhbA0KCSk7
DQoNCiNsaW5lIDEwNTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiAgICAgSVR5cGVMaWIgKkxQVFlQRUxJQjsNCg0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBMT05HIERJU1BJRDsNCnR5cGVkZWYgRElTUElEIE1FTUJFUklEOw0KDQoNCg0KDQoj
bGluZSAxMDc2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
I3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTA4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5DQoNCg0KdHlwZWRlZiAgICAgSVR5cGVJbmZvICpMUFRZUEVJTkZPOw0KDQoNCg0KDQoNCg0K
dHlwZWRlZiAgICAgSVR5cGVDb21wICpMUFRZUEVDT01QOw0KDQoNCg0KDQoNCg0KdHlwZWRlZiBJ
Q3JlYXRlVHlwZUxpYiAqIExQQ1JFQVRFVFlQRUxJQjsNCg0KdHlwZWRlZiBJQ3JlYXRlVHlwZUlu
Zm8gKiBMUENSRUFURVRZUEVJTkZPOw0KDQoNCg0KDQoNCg0KDQoNCiANCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIFVMT05HIF9fc3RkY2FsbCBMSGFzaFZhbE9mTmFtZVN5c0EoU1lT
S0lORCBzeXNraW5kLCBMQ0lEIGxjaWQsDQogICAgICAgICAgICBMUENTVFIgc3pOYW1lKTsNCiNs
aW5lIDExMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQoNCiANCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIFVMT05HIF9fc3RkY2FsbA0KTEhhc2hWYWxPZk5hbWVTeXMoU1lTS0lO
RCBzeXNraW5kLCBMQ0lEIGxjaWQsIGNvbnN0IE9MRUNIQVIgKiBzek5hbWUpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBf
X3N0ZGNhbGwgTG9hZFR5cGVMaWIoICBMUENPTEVTVFIgc3pGaWxlLCBJVHlwZUxpYiAqKiBwcHRs
aWIpOw0KDQoNCg0KdHlwZWRlZiBlbnVtIHRhZ1JFR0tJTkQNCnsNCiAgICBSRUdLSU5EX0RFRkFV
TFQsDQogICAgUkVHS0lORF9SRUdJU1RFUiwNCiAgICBSRUdLSU5EX05PTkUNCn0gUkVHS0lORDsN
Cg0KDQoNCg0KDQoNCg0KDQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBMb2FkVHlwZUxpYkV4KExQQ09MRVNUUiBzekZpbGUsIFJFR0tJTkQgcmVn
a2luZCwNCiAgICAgICAgICAgIElUeXBlTGliICoqIHBwdGxpYik7DQoNCg0KDQogDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBMb2FkUmVnVHlwZUxp
Yihjb25zdCBHVUlEICYgcmd1aWQsIFdPUkQgd1Zlck1ham9yLCBXT1JEIHdWZXJNaW5vciwNCiAg
ICAgICAgICAgIExDSUQgbGNpZCwgSVR5cGVMaWIgKiogcHB0bGliKTsNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFF1ZXJ5UGF0aE9mUmVn
VHlwZUxpYihjb25zdCBHVUlEICYgZ3VpZCwgVVNIT1JUIHdNYWosIFVTSE9SVCB3TWluLA0KICAg
ICAgICAgICAgTENJRCBsY2lkLCAgIExQQlNUUiBscGJzdHJQYXRoTmFtZSk7DQoNCg0KDQogDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBSZWdpc3Rl
clR5cGVMaWIoSVR5cGVMaWIgKiBwdGxpYiwgICBMUENPTEVTVFIgc3pGdWxsUGF0aCwNCiAgICAg
ICAgICAgICAgTFBDT0xFU1RSIHN6SGVscERpcik7DQoNCg0KDQoNCiANCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFVuUmVnaXN0ZXJUeXBlTGliKGNv
bnN0IEdVSUQgJiBsaWJJRCwgV09SRCB3VmVyTWFqb3IsDQogICAgICAgICAgICBXT1JEIHdWZXJN
aW5vciwgTENJRCBsY2lkLCBTWVNLSU5EIHN5c2tpbmQpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgUmVnaXN0ZXJUeXBlTGliRm9yVXNl
cihJVHlwZUxpYiAqcHRsaWIsICBPTEVDSEFSICAqc3pGdWxsUGF0aCwNCgkJCSAgT0xFQ0hBUiAg
KnN6SGVscERpcik7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBVblJlZ2lzdGVyVHlwZUxpYkZvclVzZXIoDQogICAgY29uc3QgR1VJRCAm
ICAgICAgICAgbGliSUQsDQogICAgV09SRCAgIHdNYWpvclZlck51bSwNCiAgICBXT1JEICAgd01p
bm9yVmVyTnVtLA0KICAgIExDSUQgICAgICAgICAgICBsY2lkLA0KICAgIFNZU0tJTkQgICAgICAg
ICBzeXNraW5kKTsNCg0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgQ3JlYXRlVHlwZUxpYihTWVNLSU5EIHN5c2tpbmQsIExQQ09MRVNUUiBzekZp
bGUsDQogICAgICAgICAgICBJQ3JlYXRlVHlwZUxpYiAqKiBwcGN0bGliKTsNCg0KIA0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgQ3JlYXRlVHlwZUxp
YjIoU1lTS0lORCBzeXNraW5kLCBMUENPTEVTVFIgc3pGaWxlLA0KICAgICAgICAgICAgSUNyZWF0
ZVR5cGVMaWIyICoqcHBjdGxpYik7DQoNCg0KDQoNCg0KDQp0eXBlZGVmICAgICBJRGlzcGF0Y2gg
KkxQRElTUEFUQ0g7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ1BBUkFNREFUQSB7DQogICAgT0xFQ0hB
UiAqIHN6TmFtZTsgICANCiAgICBWQVJUWVBFIHZ0OyAgICAgICAgIA0KfSBQQVJBTURBVEEsICog
TFBQQVJBTURBVEE7DQoNCnR5cGVkZWYgc3RydWN0IHRhZ01FVEhPRERBVEEgew0KICAgIE9MRUNI
QVIgKiBzek5hbWU7ICAgDQogICAgUEFSQU1EQVRBICogcHBkYXRhOyANCiAgICBESVNQSUQgZGlz
cGlkOyAgICAgIA0KICAgIFVJTlQgaU1ldGg7ICAgICAgICAgDQogICAgQ0FMTENPTlYgY2M7ICAg
ICAgICANCiAgICBVSU5UIGNBcmdzOyAgICAgICAgIA0KICAgIFdPUkQgd0ZsYWdzOyAgICAgICAg
DQogICAgVkFSVFlQRSB2dFJldHVybjsNCn0gTUVUSE9EREFUQSwgKiBMUE1FVEhPRERBVEE7DQoN
CnR5cGVkZWYgc3RydWN0IHRhZ0lOVEVSRkFDRURBVEEgew0KICAgIE1FVEhPRERBVEEgKiBwbWV0
aGRhdGE7ICANCiAgICBVSU5UIGNNZW1iZXJzOyAgICAgIA0KfSBJTlRFUkZBQ0VEQVRBLCAqIExQ
SU5URVJGQUNFREFUQTsNCg0KDQoNCg0KDQoNCiANCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIERpc3BHZXRQYXJhbSgNCgkgIERJU1BQQVJBTVMgKiBw
ZGlzcHBhcmFtcywNCglVSU5UIHBvc2l0aW9uLA0KCVZBUlRZUEUgdnRUYXJnLA0KCSAgVkFSSUFO
VCAqIHB2YXJSZXN1bHQsDQoJICBVSU5UICogcHVBcmdFcnINCgkpOw0KDQoNCg0KICBleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBEaXNwR2V0SURzT2ZO
YW1lcyhJVHlwZUluZm8gKiBwdGluZm8sICAgTFBPTEVTVFIqIHJnc3pOYW1lcywNCiAgICAgICAg
ICAgIFVJTlQgY05hbWVzLCAgIERJU1BJRCAqIHJnZGlzcGlkKTsNCg0KDQoNCiANCg0KI2xpbmUg
MTI1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFn
bWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIERpc3BJbnZva2Uo
dm9pZCAqIF90aGlzLCBJVHlwZUluZm8gKiBwdGluZm8sIERJU1BJRCBkaXNwaWRNZW1iZXIsDQog
ICAgICAgICAgICBXT1JEIHdGbGFncywgRElTUFBBUkFNUyAqIHBwYXJhbXMsIFZBUklBTlQgKiBw
dmFyUmVzdWx0LA0KICAgICAgICAgICAgRVhDRVBJTkZPICogcGV4Y2VwaW5mbywgVUlOVCAqIHB1
QXJnRXJyKTsNCg0KI2xpbmUgMTI2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCiNwcmFnbWEg
ZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFt
aWx5DQoNCg0KDQoNCiANCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsIENyZWF0ZURpc3BUeXBlSW5mbyhJTlRFUkZBQ0VEQVRBICogcGlkYXRhLCBMQ0lE
IGxjaWQsDQogICAgICAgICAgICBJVHlwZUluZm8gKiogcHB0aW5mbyk7DQoNCg0KDQoNCiANCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIENyZWF0ZVN0
ZERpc3BhdGNoKElVbmtub3duICogcHVua091dGVyLCB2b2lkICogcHZUaGlzLA0KICAgICAgICAg
ICAgSVR5cGVJbmZvICogcHRpbmZvLCBJVW5rbm93biAqKiBwcHVua1N0ZERpc3ApOw0KDQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBEaXNw
Q2FsbEZ1bmMoICB2b2lkICogcHZJbnN0YW5jZSwgVUxPTkdfUFRSIG9WZnQsIENBTExDT05WIGNj
LA0KICAgICAgICAgICAgVkFSVFlQRSB2dFJldHVybiwgVUlOVCAgY0FjdHVhbHMsICAgVkFSVFlQ
RSAqIHByZ3Z0LA0KICAgICAgICAgICAgICBWQVJJQU5UQVJHICoqIHByZ3B2YXJnLCAgIFZBUklB
TlQgKiBwdmFyZ1Jlc3VsdCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFJlZ2lzdGVyQWN0aXZlT2JqZWN0
KElVbmtub3duICogcHVuaywgY29uc3QgSUlEICYgcmNsc2lkLA0KICAgICAgICAgICAgRFdPUkQg
ZHdGbGFncywgRFdPUkQgKiBwZHdSZWdpc3Rlcik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIFJldm9rZUFjdGl2ZU9iamVjdChEV09SRCBkd1Jl
Z2lzdGVyLCB2b2lkICogcHZSZXNlcnZlZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIEdldEFjdGl2ZU9iamVjdChjb25zdCBJSUQgJiByY2xz
aWQsIHZvaWQgKiBwdlJlc2VydmVkLA0KICAgICAgICAgICAgSVVua25vd24gKiogcHB1bmspOw0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRj
YWxsIFNldEVycm9ySW5mbyggIFVMT05HIGR3UmVzZXJ2ZWQsICAgSUVycm9ySW5mbyAqIHBlcnJp
bmZvKTsNCiANCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRj
YWxsIEdldEVycm9ySW5mbyggIFVMT05HIGR3UmVzZXJ2ZWQsICBJRXJyb3JJbmZvICoqIHBwZXJy
aW5mbyk7DQogDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3Rk
Y2FsbCBDcmVhdGVFcnJvckluZm8oIElDcmVhdGVFcnJvckluZm8gKiogcHBlcnJpbmZvKTsNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCBHZXRSZWNvcmRJbmZvRnJvbVR5cGVJbmZvKElUeXBlSW5mbyAqIHBUeXBlSW5mbywNCiAgICAg
ICAgICAgIElSZWNvcmRJbmZvICoqIHBwUmVjSW5mbyk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIEdldFJlY29yZEluZm9Gcm9tR3VpZHMoY29u
c3QgR1VJRCAmIHJHdWlkVHlwZUxpYiwNCiAgICAgICAgICAgIFVMT05HIHVWZXJNYWpvciwgVUxP
TkcgdVZlck1pbm9yLCBMQ0lEIGxjaWQsDQogICAgICAgICAgICBjb25zdCBHVUlEICYgckd1aWRU
eXBlSW5mbywgSVJlY29yZEluZm8gKiogcHBSZWNJbmZvKTsNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVTE9ORyBfX3N0ZGNhbGwgT2FCdWlsZFZlcnNpb24odm9p
ZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIENs
ZWFyQ3VzdERhdGEoTFBDVVNUREFUQSBwQ3VzdERhdGEpOw0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIE9hRW5hYmxlUGVyVXNlclRMaWJSZWdpc3Ry
YXRpb24odm9pZCk7DQojbGluZSAxMzQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KDQojbGlu
ZSAxMzQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxMzU1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KDQoNCg0KDQoj
bGluZSAxMzYwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxNDA0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlYXV0by5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxwb3BwYWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMykNCg0KI3ByYWdtYSBwYWNr
KHBvcCkNCg0KDQojbGluZSAzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQoNCg0KI2xp
bmUgMzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNo
YXJlZFxccG9wcGFjay5oIg0KI2xpbmUgMTQyOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZWF1dG8uaCINCiNs
aW5lIDE0MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQoNCiNsaW5lIDE0MzIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxvbGVhdXRvLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDE0MzYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxvbGVhdXRvLmgiDQojbGluZSAzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZTIuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgQ3Jl
YXRlRGF0YUFkdmlzZUhvbGRlciggTFBEQVRBQURWSVNFSE9MREVSICogcHBEQUhvbGRlcik7DQoj
bGluZSA4OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG9sZTIuaCINCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbCBPbGVCdWlsZFZlcnNpb24oIHZvaWQgKTsNCg0K
ICBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBXcml0
ZUZtdFVzZXJUeXBlU3RnICggTFBTVE9SQUdFIHBzdGcsICBDTElQRk9STUFUIGNmLCAgIExQT0xF
U1RSIGxwc3pVc2VyVHlwZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCBSZWFkRm10VXNlclR5cGVTdGcgKCBMUFNUT1JBR0UgcHN0ZywgIENMSVBG
T1JNQVQgKiBwY2YsICBMUE9MRVNUUiAqIGxwbHBzelVzZXJUeXBlKTsNCg0KDQoNCg0KICBleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBPbGVJbml0aWFs
aXplKCBMUFZPSUQgcHZSZXNlcnZlZCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB2b2lkIF9fc3RkY2FsbCBPbGVVbmluaXRpYWxpemUodm9pZCk7DQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIE9sZVF1ZXJ5TGlu
a0Zyb21EYXRhKCBMUERBVEFPQkpFQ1QgcFNyY0RhdGFPYmplY3QpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIE9sZVF1ZXJ5Q3JlYXRlRnJvbURh
dGEoIExQREFUQU9CSkVDVCBwU3JjRGF0YU9iamVjdCk7DQoNCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBPbGVDcmVhdGUoIGNvbnN0IElJ
RCAmIHJjbHNpZCwgIGNvbnN0IElJRCAmIHJpaWQsICBEV09SRCByZW5kZXJvcHQsDQogICAgICAg
ICAgICAgICAgIExQRk9STUFURVRDIHBGb3JtYXRFdGMsICBMUE9MRUNMSUVOVFNJVEUgcENsaWVu
dFNpdGUsDQogICAgICAgICAgICAgICAgIExQU1RPUkFHRSBwU3RnLCAgTFBWT0lEICogcHB2T2Jq
KTsNCg0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNh
bGwgIE9sZUNyZWF0ZUV4KCBjb25zdCBJSUQgJiByY2xzaWQsICBjb25zdCBJSUQgJiByaWlkLCAg
RFdPUkQgZHdGbGFncywNCiAgICAgICAgICAgICAgICAgRFdPUkQgcmVuZGVyb3B0LCAgVUxPTkcg
Y0Zvcm1hdHMsICBEV09SRCogcmdBZHZmLA0KICAgICAgICAgICAgICAgICBMUEZPUk1BVEVUQyBy
Z0Zvcm1hdEV0YywgIElBZHZpc2VTaW5rICogbHBBZHZpc2VTaW5rLA0KICAgICAgICAgICAgICAg
ICBEV09SRCAqIHJnZHdDb25uZWN0aW9uLCAgTFBPTEVDTElFTlRTSVRFIHBDbGllbnRTaXRlLA0K
ICAgICAgICAgICAgICAgICBMUFNUT1JBR0UgcFN0ZywgIExQVk9JRCAqIHBwdk9iaik7DQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBPbGVDcmVh
dGVGcm9tRGF0YSggTFBEQVRBT0JKRUNUIHBTcmNEYXRhT2JqLCAgY29uc3QgSUlEICYgcmlpZCwN
CiAgICAgICAgICAgICAgICAgRFdPUkQgcmVuZGVyb3B0LCAgTFBGT1JNQVRFVEMgcEZvcm1hdEV0
YywNCiAgICAgICAgICAgICAgICAgTFBPTEVDTElFTlRTSVRFIHBDbGllbnRTaXRlLCAgTFBTVE9S
QUdFIHBTdGcsDQogICAgICAgICAgICAgICAgIExQVk9JRCAqIHBwdk9iaik7DQoNCiANCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBPbGVDcmVhdGVG
cm9tRGF0YUV4KCBMUERBVEFPQkpFQ1QgcFNyY0RhdGFPYmosICBjb25zdCBJSUQgJiByaWlkLA0K
ICAgICAgICAgICAgICAgICBEV09SRCBkd0ZsYWdzLCAgRFdPUkQgcmVuZGVyb3B0LCAgVUxPTkcg
Y0Zvcm1hdHMsICBEV09SRCogcmdBZHZmLA0KICAgICAgICAgICAgICAgICBMUEZPUk1BVEVUQyBy
Z0Zvcm1hdEV0YywgIElBZHZpc2VTaW5rICogbHBBZHZpc2VTaW5rLA0KICAgICAgICAgICAgICAg
ICBEV09SRCAqIHJnZHdDb25uZWN0aW9uLCAgTFBPTEVDTElFTlRTSVRFIHBDbGllbnRTaXRlLA0K
ICAgICAgICAgICAgICAgICBMUFNUT1JBR0UgcFN0ZywgIExQVk9JRCAqIHBwdk9iaik7DQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBPbGVDcmVh
dGVMaW5rRnJvbURhdGEoIExQREFUQU9CSkVDVCBwU3JjRGF0YU9iaiwgIGNvbnN0IElJRCAmIHJp
aWQsDQogICAgICAgICAgICAgICAgIERXT1JEIHJlbmRlcm9wdCwgIExQRk9STUFURVRDIHBGb3Jt
YXRFdGMsDQogICAgICAgICAgICAgICAgIExQT0xFQ0xJRU5UU0lURSBwQ2xpZW50U2l0ZSwgIExQ
U1RPUkFHRSBwU3RnLA0KICAgICAgICAgICAgICAgICBMUFZPSUQgKiBwcHZPYmopOw0KDQogDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgT2xlQ3Jl
YXRlTGlua0Zyb21EYXRhRXgoIExQREFUQU9CSkVDVCBwU3JjRGF0YU9iaiwgIGNvbnN0IElJRCAm
IHJpaWQsDQogICAgICAgICAgICAgICAgIERXT1JEIGR3RmxhZ3MsICBEV09SRCByZW5kZXJvcHQs
ICBVTE9ORyBjRm9ybWF0cywgIERXT1JEKiByZ0FkdmYsDQogICAgICAgICAgICAgICAgIExQRk9S
TUFURVRDIHJnRm9ybWF0RXRjLCAgSUFkdmlzZVNpbmsgKiBscEFkdmlzZVNpbmssDQogICAgICAg
ICAgICAgICAgICBEV09SRCAqIHJnZHdDb25uZWN0aW9uLCAgTFBPTEVDTElFTlRTSVRFIHBDbGll
bnRTaXRlLA0KICAgICAgICAgICAgICAgICBMUFNUT1JBR0UgcFN0ZywgIExQVk9JRCAqIHBwdk9i
aik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxs
ICBPbGVDcmVhdGVTdGF0aWNGcm9tRGF0YSggTFBEQVRBT0JKRUNUIHBTcmNEYXRhT2JqLCAgY29u
c3QgSUlEICYgaWlkLA0KICAgICAgICAgICAgICAgICBEV09SRCByZW5kZXJvcHQsICBMUEZPUk1B
VEVUQyBwRm9ybWF0RXRjLA0KICAgICAgICAgICAgICAgICBMUE9MRUNMSUVOVFNJVEUgcENsaWVu
dFNpdGUsICBMUFNUT1JBR0UgcFN0ZywNCiAgICAgICAgICAgICAgICAgTFBWT0lEICogcHB2T2Jq
KTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCAgT2xlQ3JlYXRlTGluayggTFBNT05JS0VSIHBta0xpbmtTcmMsICBjb25zdCBJSUQgJiByaWlk
LA0KICAgICAgICAgICAgIERXT1JEIHJlbmRlcm9wdCwgIExQRk9STUFURVRDIGxwRm9ybWF0RXRj
LA0KICAgICAgICAgICAgIExQT0xFQ0xJRU5UU0lURSBwQ2xpZW50U2l0ZSwgIExQU1RPUkFHRSBw
U3RnLCAgTFBWT0lEICogcHB2T2JqKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFJFU1VMVCBfX3N0ZGNhbGwgIE9sZUNyZWF0ZUxpbmtFeCggTFBNT05JS0VSIHBta0xpbmtT
cmMsICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIERXT1JEIGR3RmxhZ3MsICBEV09S
RCByZW5kZXJvcHQsICBVTE9ORyBjRm9ybWF0cywgIERXT1JEKiByZ0FkdmYsDQogICAgICAgICAg
ICAgTFBGT1JNQVRFVEMgcmdGb3JtYXRFdGMsICBJQWR2aXNlU2luayAqIGxwQWR2aXNlU2luaywN
CiAgICAgICAgICAgICBEV09SRCAqIHJnZHdDb25uZWN0aW9uLCAgTFBPTEVDTElFTlRTSVRFIHBD
bGllbnRTaXRlLA0KICAgICAgICAgICAgIExQU1RPUkFHRSBwU3RnLCAgTFBWT0lEICogcHB2T2Jq
KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwg
IE9sZUNyZWF0ZUxpbmtUb0ZpbGUoIExQQ09MRVNUUiBscHN6RmlsZU5hbWUsICBjb25zdCBJSUQg
JiByaWlkLA0KICAgICAgICAgICAgIERXT1JEIHJlbmRlcm9wdCwgIExQRk9STUFURVRDIGxwRm9y
bWF0RXRjLA0KICAgICAgICAgICAgIExQT0xFQ0xJRU5UU0lURSBwQ2xpZW50U2l0ZSwgIExQU1RP
UkFHRSBwU3RnLCAgTFBWT0lEICogcHB2T2JqKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIE9sZUNyZWF0ZUxpbmtUb0ZpbGVFeCggTFBDT0xF
U1RSIGxwc3pGaWxlTmFtZSwgIGNvbnN0IElJRCAmIHJpaWQsDQogICAgICAgICAgICAgRFdPUkQg
ZHdGbGFncywgIERXT1JEIHJlbmRlcm9wdCwgIFVMT05HIGNGb3JtYXRzLCAgRFdPUkQqIHJnQWR2
ZiwNCiAgICAgICAgICAgICBMUEZPUk1BVEVUQyByZ0Zvcm1hdEV0YywgIElBZHZpc2VTaW5rICog
bHBBZHZpc2VTaW5rLA0KICAgICAgICAgICAgIERXT1JEICogcmdkd0Nvbm5lY3Rpb24sICBMUE9M
RUNMSUVOVFNJVEUgcENsaWVudFNpdGUsDQogICAgICAgICAgICAgTFBTVE9SQUdFIHBTdGcsICBM
UFZPSUQgKiBwcHZPYmopOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCAgT2xlQ3JlYXRlRnJvbUZpbGUoIGNvbnN0IElJRCAmIHJjbHNpZCwgIExQ
Q09MRVNUUiBscHN6RmlsZU5hbWUsICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIERX
T1JEIHJlbmRlcm9wdCwgIExQRk9STUFURVRDIGxwRm9ybWF0RXRjLA0KICAgICAgICAgICAgIExQ
T0xFQ0xJRU5UU0lURSBwQ2xpZW50U2l0ZSwgIExQU1RPUkFHRSBwU3RnLCAgTFBWT0lEICogcHB2
T2JqKTsNCg0KIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0
ZGNhbGwgIE9sZUNyZWF0ZUZyb21GaWxlRXgoIGNvbnN0IElJRCAmIHJjbHNpZCwgIExQQ09MRVNU
UiBscHN6RmlsZU5hbWUsICBjb25zdCBJSUQgJiByaWlkLA0KICAgICAgICAgICAgIERXT1JEIGR3
RmxhZ3MsICBEV09SRCByZW5kZXJvcHQsICBVTE9ORyBjRm9ybWF0cywgIERXT1JEKiByZ0FkdmYs
DQogICAgICAgICAgICAgTFBGT1JNQVRFVEMgcmdGb3JtYXRFdGMsICBJQWR2aXNlU2luayAqIGxw
QWR2aXNlU2luaywNCiAgICAgICAgICAgICBEV09SRCAqIHJnZHdDb25uZWN0aW9uLCAgTFBPTEVD
TElFTlRTSVRFIHBDbGllbnRTaXRlLA0KICAgICAgICAgICAgIExQU1RPUkFHRSBwU3RnLCAgTFBW
T0lEICogcHB2T2JqKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VM
VCBfX3N0ZGNhbGwgIE9sZUxvYWQoIExQU1RPUkFHRSBwU3RnLCAgY29uc3QgSUlEICYgcmlpZCwg
IExQT0xFQ0xJRU5UU0lURSBwQ2xpZW50U2l0ZSwNCiAgICAgICAgICAgICBMUFZPSUQgKiBwcHZP
YmopOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCAgT2xlU2F2ZSggIExQUEVSU0lTVFNUT1JBR0UgcFBTLCAgIExQU1RPUkFHRSBwU3RnLCAgIEJP
T0wgZlNhbWVBc0xvYWQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVT
VUxUIF9fc3RkY2FsbCAgT2xlTG9hZEZyb21TdHJlYW0oICBMUFNUUkVBTSBwU3RtLCAgY29uc3Qg
SUlEICYgaWlkSW50ZXJmYWNlLCAgTFBWT0lEICogcHB2T2JqKTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBPbGVTYXZlVG9TdHJlYW0oICBMUFBF
UlNJU1RTVFJFQU0gcFBTdG0sICBMUFNUUkVBTSBwU3RtICk7DQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIE9sZVNldENvbnRhaW5lZE9iamVj
dCggTFBVTktOT1dOIHBVbmtub3duLCAgQk9PTCBmQ29udGFpbmVkKTsNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBPbGVOb3RlT2JqZWN0VmlzaWJs
ZSggTFBVTktOT1dOIHBVbmtub3duLCAgQk9PTCBmVmlzaWJsZSk7DQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICBSZWdpc3RlckRyYWdE
cm9wKCBIV05EIGh3bmQsICBMUERST1BUQVJHRVQgcERyb3BUYXJnZXQpOw0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIFJldm9rZURyYWdEcm9wKCBI
V05EIGh3bmQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0
ZGNhbGwgIERvRHJhZ0Ryb3AoIExQREFUQU9CSkVDVCBwRGF0YU9iaiwgIExQRFJPUFNPVVJDRSBw
RHJvcFNvdXJjZSwNCiAgICAgICAgICAgICBEV09SRCBkd09LRWZmZWN0cywgIExQRFdPUkQgcGR3
RWZmZWN0KTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQg
X19zdGRjYWxsICBPbGVTZXRDbGlwYm9hcmQoIExQREFUQU9CSkVDVCBwRGF0YU9iaik7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgT2xlR2V0Q2xp
cGJvYXJkKCBMUERBVEFPQkpFQ1QgKiBwcERhdGFPYmopOw0KDQoNCg0KDQoNCg0KI2xpbmUgMjE2
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcb2xlMi5oIg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
SFJFU1VMVCBfX3N0ZGNhbGwgIE9sZUZsdXNoQ2xpcGJvYXJkKHZvaWQpOyAgIA0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgIE9sZUlzQ3VycmVudENs
aXBib2FyZCggTFBEQVRBT0JKRUNUIHBEYXRhT2JqKTsgICANCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhPTEVNRU5VIF9fc3RkY2FsbCAgIE9sZUNyZWF0ZU1lbnVEZXNj
cmlwdG9yICggSE1FTlUgaG1lbnVDb21iaW5lZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExQT0xFTUVOVUdST1VQV0lEVEhTIGxwTWVudVdpZHRocyk7DQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgICAgICAgICAgICAgT2xlU2V0
TWVudURlc2NyaXB0b3IgKCBIT0xFTUVOVSBob2xlbWVudSwgIEhXTkQgaHduZEZyYW1lLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFdORCBod25kQWN0aXZlT2JqZWN0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBPTEVJTlBMQUNFRlJBTUUgbHBGcmFtZSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQT0xFSU5QTEFDRUFDVElWRU9CSkVD
VCBscEFjdGl2ZU9iaik7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbCAgICAgICAgICAgICAgT2xlRGVzdHJveU1lbnVEZXNjcmlwdG9yICggSE9MRU1F
TlUgaG9sZW1lbnUpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxU
IF9fc3RkY2FsbCAgICAgICAgICAgICAgT2xlVHJhbnNsYXRlQWNjZWxlcmF0b3IgKCBMUE9MRUlO
UExBQ0VGUkFNRSBscEZyYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUE9MRUlO
UExBQ0VGUkFNRUlORk8gbHBGcmFtZUluZm8sICBMUE1TRyBscG1zZyk7DQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhBTkRMRSBfX3N0ZGNhbGwgT2xlRHVwbGljYXRl
RGF0YSAoIEhBTkRMRSBoU3JjLCAgQ0xJUEZPUk1BVCBjZkZvcm1hdCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICBVSU5UIHVpRmxhZ3MpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgICAgICAgICAgT2xlRHJhdyAoIExQVU5LTk9XTiBw
VW5rbm93biwgIERXT1JEIGR3QXNwZWN0LCAgSERDIGhkY0RyYXcsDQogICAgICAgICAgICAgICAg
ICAgICBMUENSRUNUIGxwcmNCb3VuZHMpOw0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICAgICAgICAgIE9sZVJ1biggTFBVTktOT1dOIHBVbmtu
b3duKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRjYWxsICAg
T2xlSXNSdW5uaW5nKCBMUE9MRU9CSkVDVCBwT2JqZWN0KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICAgICAgICAgIE9sZUxvY2tSdW5uaW5nKCBM
UFVOS05PV04gcFVua25vd24sICBCT09MIGZMb2NrLCAgQk9PTCBmTGFzdFVubG9ja0Nsb3Nlcyk7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsICAgUmVs
ZWFzZVN0Z01lZGl1bSggTFBTVEdNRURJVU0pOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgICAgICAgICBDcmVhdGVPbGVBZHZpc2VIb2xkZXIo
ICBMUE9MRUFEVklTRUhPTERFUiAqIHBwT0FIb2xkZXIpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgICAgICAgICBPbGVDcmVhdGVEZWZhdWx0
SGFuZGxlciggY29uc3QgSUlEICYgY2xzaWQsICBMUFVOS05PV04gcFVua091dGVyLA0KICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwgIExQVk9JRCAqIGxwbHBPYmopOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCAgICAgICAg
ICBPbGVDcmVhdGVFbWJlZGRpbmdIZWxwZXIoIGNvbnN0IElJRCAmIGNsc2lkLCAgTFBVTktOT1dO
IHBVbmtPdXRlciwNCiAgICAgICAgICAgICAgICAgICAgIERXT1JEIGZsYWdzLCAgTFBDTEFTU0ZB
Q1RPUlkgcENGLA0KICAgICAgICAgICAgICAgICAgICAgY29uc3QgSUlEICYgcmlpZCwgIExQVk9J
RCAqIGxwbHBPYmopOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MIF9f
c3RkY2FsbCAgIElzQWNjZWxlcmF0b3IoIEhBQ0NFTCBoQWNjZWwsICBpbnQgY0FjY2VsRW50cmll
cywgIExQTVNHIGxwTXNnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXT1JEICogbHB3Q21kKTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBI
R0xPQkFMIF9fc3RkY2FsbCBPbGVHZXRJY29uT2ZGaWxlKCAgTFBPTEVTVFIgbHBzelBhdGgsICBC
T09MIGZVc2VGaWxlQXNMYWJlbCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhHTE9CQUwgX19zdGRjYWxsIE9sZUdldEljb25PZkNsYXNzKCBjb25zdCBJSUQgJiByY2xzaWQs
ICAgTFBPTEVTVFIgbHBzekxhYmVsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCT09MIGZVc2VUeXBlQXNMYWJlbCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEhHTE9CQUwgX19zdGRjYWxsIE9sZU1ldGFmaWxlUGljdEZyb21JY29uQW5kTGFi
ZWwoIEhJQ09OIGhJY29uLCAgIExQT0xFU1RSIGxwc3pMYWJlbCwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExQT0xFU1RSIGxwc3pTb3VyY2VGaWxlLCAgVUlOVCBp
SWNvbkluZGV4KTsNCg0KDQoNCg0KDQogIGV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEhSRVNVTFQgX19zdGRjYWxsICAgICAgICAgICAgICAgICAgT2xlUmVnR2V0VXNlclR5cGUgKCBj
b25zdCBJSUQgJiBjbHNpZCwgIERXT1JEIGR3Rm9ybU9mVHlwZSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTFBPTEVTVFIgKiBwc3pVc2VyVHlwZSk7DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsICAgICAgICAgICAg
ICAgICAgT2xlUmVnR2V0TWlzY1N0YXR1cyAgICAgKCBjb25zdCBJSUQgJiBjbHNpZCwgIERXT1JE
IGR3QXNwZWN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09S
RCAqIHBkd1N0YXR1cyk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNV
TFQgX19zdGRjYWxsIE9sZVJlZ0VudW1Gb3JtYXRFdGMoIGNvbnN0IElJRCAmIGNsc2lkLCAgRFdP
UkQgZHdEaXJlY3Rpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBFTlVNRk9S
TUFURVRDICogcHBlbnVtKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJF
U1VMVCBfX3N0ZGNhbGwgT2xlUmVnRW51bVZlcmJzICggY29uc3QgSUlEICYgY2xzaWQsICBMUEVO
VU1PTEVWRVJCICogcHBlbnVtKTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9PTEVTVFJF
QU0gKiAgTFBPTEVTVFJFQU07DQoNCnR5cGVkZWYgc3RydWN0IF9PTEVTVFJFQU1WVEJMDQp7DQog
ICAgRFdPUkQgKF9fc3RkY2FsbCogR2V0KShMUE9MRVNUUkVBTSwgdm9pZCAqLCBEV09SRCk7DQog
ICAgRFdPUkQgKF9fc3RkY2FsbCogUHV0KShMUE9MRVNUUkVBTSwgY29uc3Qgdm9pZCAqLCBEV09S
RCk7DQp9IE9MRVNUUkVBTVZUQkw7DQp0eXBlZGVmICBPTEVTVFJFQU1WVEJMICogIExQT0xFU1RS
RUFNVlRCTDsNCg0KdHlwZWRlZiBzdHJ1Y3QgX09MRVNUUkVBTQ0Kew0KICAgIExQT0xFU1RSRUFN
VlRCTCBscHN0Ymw7DQp9IE9MRVNUUkVBTTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBPbGVDb252ZXJ0T0xFU1RSRUFNVG9JU3RvcmFnZQ0K
ICAgICggTFBPTEVTVFJFQU0gICAgICAgICAgICAgICAgbHBvbGVzdHJlYW0sDQogICAgIExQU1RP
UkFHRSAgICAgICAgICAgICAgICAgICBwc3RnLA0KICAgICBjb25zdCBEVlRBUkdFVERFVklDRSAq
ICAgcHRkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0
ZGNhbGwgT2xlQ29udmVydElTdG9yYWdlVG9PTEVTVFJFQU0NCiAgICAoIExQU1RPUkFHRSAgICAg
IHBzdGcsDQogICAgIExQT0xFU1RSRUFNICAgICBscG9sZXN0cmVhbSk7DQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIE9sZURvQXV0b0Nv
bnZlcnQoIExQU1RPUkFHRSBwU3RnLCAgTFBDTFNJRCBwQ2xzaWROZXcpOw0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgT2xlR2V0QXV0b0NvbnZlcnQo
IGNvbnN0IElJRCAmIGNsc2lkT2xkLCAgTFBDTFNJRCBwQ2xzaWROZXcpOw0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgSFJFU1VMVCBfX3N0ZGNhbGwgT2xlU2V0QXV0b0NvbnZlcnQo
IGNvbnN0IElJRCAmIGNsc2lkT2xkLCAgY29uc3QgSUlEICYgY2xzaWROZXcpOw0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2FsbCBTZXRDb252ZXJ0U3Rn
KCBMUFNUT1JBR0UgcFN0ZywgIEJPT0wgZkNvbnZlcnQpOw0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEhSRVNVTFQgX19zdGRjYWxsIE9sZUNvbnZlcnRJU3RvcmFnZVRvT0xF
U1RSRUFNRXgNCiAgICAoIExQU1RPUkFHRSAgICAgICAgICBwc3RnLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICBDTElQRk9STUFUICAgICAgICAgY2ZGb3JtYXQs
ICAgDQogICAgICBMT05HICAgICAgICAgICAgICAgbFdpZHRoLCAgICAgDQogICAgICBMT05HICAg
ICAgICAgICAgICAgbEhlaWdodCwgICAgDQogICAgICBEV09SRCAgICAgICAgICAgICAgZHdTaXpl
LCAgICAgDQogICAgICBMUFNUR01FRElVTSAgICAgICAgcG1lZGl1bSwgICAgDQogICAgICBMUE9M
RVNUUkVBTSAgICAgICAgcG9sZXN0bSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEhSRVNVTFQgX19zdGRjYWxsIE9sZUNvbnZlcnRPTEVTVFJFQU1Ub0lTdG9yYWdlRXgNCiAg
ICAoIExQT0xFU1RSRUFNICAgICAgICBwb2xlc3RtLA0KICAgICAgTFBTVE9SQUdFICAgICAgICAg
IHBzdGcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgIENMSVBG
T1JNQVQgKiAgICBwY2ZGb3JtYXQsICANCiAgICAgIExPTkcgKiAgICAgICAgICBwbHdXaWR0aCwg
ICANCiAgICAgIExPTkcgKiAgICAgICAgICBwbEhlaWdodCwgICANCiAgICAgIERXT1JEICogICAg
ICAgICBwZHdTaXplLCAgICANCiAgICAgIExQU1RHTUVESVVNICAgICAgICBwbWVkaXVtKTsgICAN
Cg0KI2xpbmUgMzQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlMi5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0K
DQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHBvcHBhY2suaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0MTAzKQ0KDQojcHJhZ21hIHBhY2socG9wKQ0KDQoNCiNsaW5lIDMzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFy
ZWRcXHBvcHBhY2suaCINCg0KDQojbGluZSAzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgi
DQojbGluZSAzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxwb3BwYWNrLmgiDQojbGluZSAzNDkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxvbGUyLmgiDQojbGluZSAzNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGUyLmgiDQoNCg0KI2xp
bmUgMzUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcb2xlMi5oIg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQoj
bGluZSAzNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxvbGUyLmgiDQoNCiNsaW5lIDIxOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbmRvd3MuaCINCiNsaW5lIDIxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNsaW5lIDIy
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxn
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTo0MDAxKSANCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MjApIA0K
I2xpbmUgMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBJSURfSVByaW50RGlhbG9nQ2FsbGJhY2s7DQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIElJRF9JUHJpbnREaWFsb2dTZXJ2aWNl
czsNCg0KI2xpbmUgNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCiNsaW5lIDQyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxccHJzaHQu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJh
Z21hIHdhcm5pbmcoZGlzYWJsZTo0MDAxKSANCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMDEp
IA0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojbGluZSAxOSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHByc2h0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDkxMSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHByc2h0LmgiDQoNCiNsaW5lIDQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5o
Ig0KDQoNCg0KI2xpbmUgNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KZXh0ZXJuICJD
IiB7ICAgICAgICAgICAgDQojbGluZSA1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KI3By
YWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCiNsaW5lIDcwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRs
Zy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IFVJTlRfUFRSIChfX3N0ZGNhbGwgKkxQT0ZOSE9PS1BST0MpIChIV05ELCBVSU5ULCBXUEFSQU0s
IExQQVJBTSk7DQoNCg0KDQoNCiNsaW5lIDExMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnT0ZOX05UNEEgew0KICAgRFdPUkQg
ICAgICAgIGxTdHJ1Y3RTaXplOw0KICAgSFdORCAgICAgICAgIGh3bmRPd25lcjsNCiAgIEhJTlNU
QU5DRSAgICBoSW5zdGFuY2U7DQogICBMUENTVFIgICAgICAgbHBzdHJGaWx0ZXI7DQogICBMUFNU
UiAgICAgICAgbHBzdHJDdXN0b21GaWx0ZXI7DQogICBEV09SRCAgICAgICAgbk1heEN1c3RGaWx0
ZXI7DQogICBEV09SRCAgICAgICAgbkZpbHRlckluZGV4Ow0KICAgTFBTVFIgICAgICAgIGxwc3Ry
RmlsZTsNCiAgIERXT1JEICAgICAgICBuTWF4RmlsZTsNCiAgIExQU1RSICAgICAgICBscHN0ckZp
bGVUaXRsZTsNCiAgIERXT1JEICAgICAgICBuTWF4RmlsZVRpdGxlOw0KICAgTFBDU1RSICAgICAg
IGxwc3RySW5pdGlhbERpcjsNCiAgIExQQ1NUUiAgICAgICBscHN0clRpdGxlOw0KICAgRFdPUkQg
ICAgICAgIEZsYWdzOw0KICAgV09SRCAgICAgICAgIG5GaWxlT2Zmc2V0Ow0KICAgV09SRCAgICAg
ICAgIG5GaWxlRXh0ZW5zaW9uOw0KICAgTFBDU1RSICAgICAgIGxwc3RyRGVmRXh0Ow0KICAgTFBB
UkFNICAgICAgIGxDdXN0RGF0YTsNCiAgIExQT0ZOSE9PS1BST0MgbHBmbkhvb2s7DQogICBMUENT
VFIgICAgICAgbHBUZW1wbGF0ZU5hbWU7DQp9IE9QRU5GSUxFTkFNRV9OVDRBLCAqTFBPUEVORklM
RU5BTUVfTlQ0QTsNCnR5cGVkZWYgc3RydWN0IHRhZ09GTl9OVDRXIHsNCiAgIERXT1JEICAgICAg
ICBsU3RydWN0U2l6ZTsNCiAgIEhXTkQgICAgICAgICBod25kT3duZXI7DQogICBISU5TVEFOQ0Ug
ICAgaEluc3RhbmNlOw0KICAgTFBDV1NUUiAgICAgIGxwc3RyRmlsdGVyOw0KICAgTFBXU1RSICAg
ICAgIGxwc3RyQ3VzdG9tRmlsdGVyOw0KICAgRFdPUkQgICAgICAgIG5NYXhDdXN0RmlsdGVyOw0K
ICAgRFdPUkQgICAgICAgIG5GaWx0ZXJJbmRleDsNCiAgIExQV1NUUiAgICAgICBscHN0ckZpbGU7
DQogICBEV09SRCAgICAgICAgbk1heEZpbGU7DQogICBMUFdTVFIgICAgICAgbHBzdHJGaWxlVGl0
bGU7DQogICBEV09SRCAgICAgICAgbk1heEZpbGVUaXRsZTsNCiAgIExQQ1dTVFIgICAgICBscHN0
ckluaXRpYWxEaXI7DQogICBMUENXU1RSICAgICAgbHBzdHJUaXRsZTsNCiAgIERXT1JEICAgICAg
ICBGbGFnczsNCiAgIFdPUkQgICAgICAgICBuRmlsZU9mZnNldDsNCiAgIFdPUkQgICAgICAgICBu
RmlsZUV4dGVuc2lvbjsNCiAgIExQQ1dTVFIgICAgICBscHN0ckRlZkV4dDsNCiAgIExQQVJBTSAg
ICAgICBsQ3VzdERhdGE7DQogICBMUE9GTkhPT0tQUk9DIGxwZm5Ib29rOw0KICAgTFBDV1NUUiAg
ICAgIGxwVGVtcGxhdGVOYW1lOw0KfSBPUEVORklMRU5BTUVfTlQ0VywgKkxQT1BFTkZJTEVOQU1F
X05UNFc7DQoNCnR5cGVkZWYgT1BFTkZJTEVOQU1FX05UNFcgT1BFTkZJTEVOQU1FX05UNDsNCnR5
cGVkZWYgTFBPUEVORklMRU5BTUVfTlQ0VyBMUE9QRU5GSUxFTkFNRV9OVDQ7DQoNCg0KDQojbGlu
ZSAxNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCnR5cGVkZWYgc3RydWN0IHRhZ09GTkEg
ew0KICAgRFdPUkQgICAgICAgIGxTdHJ1Y3RTaXplOw0KICAgSFdORCAgICAgICAgIGh3bmRPd25l
cjsNCiAgIEhJTlNUQU5DRSAgICBoSW5zdGFuY2U7DQogICBMUENTVFIgICAgICAgbHBzdHJGaWx0
ZXI7DQogICBMUFNUUiAgICAgICAgbHBzdHJDdXN0b21GaWx0ZXI7DQogICBEV09SRCAgICAgICAg
bk1heEN1c3RGaWx0ZXI7DQogICBEV09SRCAgICAgICAgbkZpbHRlckluZGV4Ow0KICAgTFBTVFIg
ICAgICAgIGxwc3RyRmlsZTsNCiAgIERXT1JEICAgICAgICBuTWF4RmlsZTsNCiAgIExQU1RSICAg
ICAgICBscHN0ckZpbGVUaXRsZTsNCiAgIERXT1JEICAgICAgICBuTWF4RmlsZVRpdGxlOw0KICAg
TFBDU1RSICAgICAgIGxwc3RySW5pdGlhbERpcjsNCiAgIExQQ1NUUiAgICAgICBscHN0clRpdGxl
Ow0KICAgRFdPUkQgICAgICAgIEZsYWdzOw0KICAgV09SRCAgICAgICAgIG5GaWxlT2Zmc2V0Ow0K
ICAgV09SRCAgICAgICAgIG5GaWxlRXh0ZW5zaW9uOw0KICAgTFBDU1RSICAgICAgIGxwc3RyRGVm
RXh0Ow0KICAgTFBBUkFNICAgICAgIGxDdXN0RGF0YTsNCiAgIExQT0ZOSE9PS1BST0MgbHBmbkhv
b2s7DQogICBMUENTVFIgICAgICAgbHBUZW1wbGF0ZU5hbWU7DQoNCg0KDQoNCg0KICAgdm9pZCAq
ICAgICAgICBwdlJlc2VydmVkOw0KICAgRFdPUkQgICAgICAgIGR3UmVzZXJ2ZWQ7DQogICBEV09S
RCAgICAgICAgRmxhZ3NFeDsNCiNsaW5lIDIwMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCn0g
T1BFTkZJTEVOQU1FQSwgKkxQT1BFTkZJTEVOQU1FQTsNCnR5cGVkZWYgc3RydWN0IHRhZ09GTlcg
ew0KICAgRFdPUkQgICAgICAgIGxTdHJ1Y3RTaXplOw0KICAgSFdORCAgICAgICAgIGh3bmRPd25l
cjsNCiAgIEhJTlNUQU5DRSAgICBoSW5zdGFuY2U7DQogICBMUENXU1RSICAgICAgbHBzdHJGaWx0
ZXI7DQogICBMUFdTVFIgICAgICAgbHBzdHJDdXN0b21GaWx0ZXI7DQogICBEV09SRCAgICAgICAg
bk1heEN1c3RGaWx0ZXI7DQogICBEV09SRCAgICAgICAgbkZpbHRlckluZGV4Ow0KICAgTFBXU1RS
ICAgICAgIGxwc3RyRmlsZTsNCiAgIERXT1JEICAgICAgICBuTWF4RmlsZTsNCiAgIExQV1NUUiAg
ICAgICBscHN0ckZpbGVUaXRsZTsNCiAgIERXT1JEICAgICAgICBuTWF4RmlsZVRpdGxlOw0KICAg
TFBDV1NUUiAgICAgIGxwc3RySW5pdGlhbERpcjsNCiAgIExQQ1dTVFIgICAgICBscHN0clRpdGxl
Ow0KICAgRFdPUkQgICAgICAgIEZsYWdzOw0KICAgV09SRCAgICAgICAgIG5GaWxlT2Zmc2V0Ow0K
ICAgV09SRCAgICAgICAgIG5GaWxlRXh0ZW5zaW9uOw0KICAgTFBDV1NUUiAgICAgIGxwc3RyRGVm
RXh0Ow0KICAgTFBBUkFNICAgICAgIGxDdXN0RGF0YTsNCiAgIExQT0ZOSE9PS1BST0MgbHBmbkhv
b2s7DQogICBMUENXU1RSICAgICAgbHBUZW1wbGF0ZU5hbWU7DQoNCg0KDQoNCg0KICAgdm9pZCAq
ICAgICAgICBwdlJlc2VydmVkOw0KICAgRFdPUkQgICAgICAgIGR3UmVzZXJ2ZWQ7DQogICBEV09S
RCAgICAgICAgRmxhZ3NFeDsNCiNsaW5lIDIzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCn0g
T1BFTkZJTEVOQU1FVywgKkxQT1BFTkZJTEVOQU1FVzsNCg0KdHlwZWRlZiBPUEVORklMRU5BTUVX
IE9QRU5GSUxFTkFNRTsNCnR5cGVkZWYgTFBPUEVORklMRU5BTUVXIExQT1BFTkZJTEVOQU1FOw0K
DQoNCg0KI2xpbmUgMjQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDI1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCiNsaW5lIDI1MSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGNvbW1kbGcuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCAgX19zdGRjYWxs
IEdldE9wZW5GaWxlTmFtZUEoTFBPUEVORklMRU5BTUVBKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBCT09MICBfX3N0ZGNhbGwgR2V0T3BlbkZpbGVOYW1lVyhMUE9QRU5GSUxFTkFNRVcpOw0KDQoN
Cg0KDQojbGluZSAyNjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQk9PTCAgX19zdGRjYWxsIEdldFNhdmVGaWxlTmFtZUEoTFBPUEVORklMRU5BTUVBKTsN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCT09MICBfX3N0ZGNhbGwgR2V0U2F2ZUZpbGVOYW1lVyhM
UE9QRU5GSUxFTkFNRVcpOw0KDQoNCg0KDQojbGluZSAyNjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxn
LmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNob3J0IF9fc3RkY2FsbCBHZXRGaWxlVGl0
bGVBKExQQ1NUUiwgICBMUFNUUiBCdWYsICAgV09SRCBjY2hTaXplKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBzaG9ydCBfX3N0ZGNhbGwgR2V0RmlsZVRpdGxlVyhMUENXU1RSLCAgIExQV1NUUiBC
dWYsICAgV09SRCBjY2hTaXplKTsNCg0KDQoNCg0KI2xpbmUgMjc2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29t
bWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAzMDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KDQojbGluZSAz
MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KDQoNCiNsaW5lIDMxNCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGNvbW1kbGcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUlO
VF9QVFIgKF9fc3RkY2FsbCAqTFBDQ0hPT0tQUk9DKSAoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFS
QU0pOw0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX09GTk9USUZZQQ0Kew0KICAgICAgICBOTUhEUiAg
ICAgICAgICAgaGRyOw0KICAgICAgICBMUE9QRU5GSUxFTkFNRUEgbHBPRk47DQogICAgICAgIExQ
U1RSICAgICAgICAgICBwc3pGaWxlOyAgICAgICAgDQp9IE9GTk9USUZZQSwgKkxQT0ZOT1RJRllB
Ow0KDQp0eXBlZGVmIHN0cnVjdCBfT0ZOT1RJRllXDQp7DQogICAgICAgIE5NSERSICAgICAgICAg
ICBoZHI7DQogICAgICAgIExQT1BFTkZJTEVOQU1FVyBscE9GTjsNCiAgICAgICAgTFBXU1RSICAg
ICAgICAgIHBzekZpbGU7ICAgICAgICANCn0gT0ZOT1RJRllXLCAqTFBPRk5PVElGWVc7DQoNCnR5
cGVkZWYgT0ZOT1RJRllXIE9GTk9USUZZOw0KdHlwZWRlZiBMUE9GTk9USUZZVyBMUE9GTk9USUZZ
Ow0KDQoNCg0KI2xpbmUgMzUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3QgX09GTk9USUZZRVhBDQp7DQogICAgICAgIE5NSERSICAgICAgICAgICBoZHI7DQog
ICAgICAgIExQT1BFTkZJTEVOQU1FQSBscE9GTjsNCiAgICAgICAgTFBWT0lEICAgICAgICAgIHBz
ZjsNCiAgICAgICAgTFBWT0lEICAgICAgICAgIHBpZGw7ICAgICAgICAgIA0KfSBPRk5PVElGWUVY
QSwgKkxQT0ZOT1RJRllFWEE7DQoNCnR5cGVkZWYgc3RydWN0IF9PRk5PVElGWUVYVw0Kew0KICAg
ICAgICBOTUhEUiAgICAgICAgICAgaGRyOw0KICAgICAgICBMUE9QRU5GSUxFTkFNRVcgbHBPRk47
DQogICAgICAgIExQVk9JRCAgICAgICAgICBwc2Y7DQogICAgICAgIExQVk9JRCAgICAgICAgICBw
aWRsOyAgICAgICAgICANCn0gT0ZOT1RJRllFWFcsICpMUE9GTk9USUZZRVhXOw0KDQp0eXBlZGVm
IE9GTk9USUZZRVhXIE9GTk9USUZZRVg7DQp0eXBlZGVmIExQT0ZOT1RJRllFWFcgTFBPRk5PVElG
WUVYOw0KDQoNCg0KI2xpbmUgMzc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MTQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxjb21tZGxnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQyOCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDQy
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxn
LmgiDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0hPT1NFQ09MT1JBIHsNCiAgIERXT1JEICAgICAg
ICBsU3RydWN0U2l6ZTsNCiAgIEhXTkQgICAgICAgICBod25kT3duZXI7DQogICBIV05EICAgICAg
ICAgaEluc3RhbmNlOw0KICAgQ09MT1JSRUYgICAgIHJnYlJlc3VsdDsNCiAgIENPTE9SUkVGKiAg
ICBscEN1c3RDb2xvcnM7DQogICBEV09SRCAgICAgICAgRmxhZ3M7DQogICBMUEFSQU0gICAgICAg
bEN1c3REYXRhOw0KICAgTFBDQ0hPT0tQUk9DIGxwZm5Ib29rOw0KICAgTFBDU1RSICAgICAgIGxw
VGVtcGxhdGVOYW1lOw0KfSBDSE9PU0VDT0xPUkEsICpMUENIT09TRUNPTE9SQTsNCnR5cGVkZWYg
c3RydWN0IHRhZ0NIT09TRUNPTE9SVyB7DQogICBEV09SRCAgICAgICAgbFN0cnVjdFNpemU7DQog
ICBIV05EICAgICAgICAgaHduZE93bmVyOw0KICAgSFdORCAgICAgICAgIGhJbnN0YW5jZTsNCiAg
IENPTE9SUkVGICAgICByZ2JSZXN1bHQ7DQogICBDT0xPUlJFRiogICAgbHBDdXN0Q29sb3JzOw0K
ICAgRFdPUkQgICAgICAgIEZsYWdzOw0KICAgTFBBUkFNICAgICAgIGxDdXN0RGF0YTsNCiAgIExQ
Q0NIT09LUFJPQyBscGZuSG9vazsNCiAgIExQQ1dTVFIgICAgICBscFRlbXBsYXRlTmFtZTsNCn0g
Q0hPT1NFQ09MT1JXLCAqTFBDSE9PU0VDT0xPUlc7DQoNCnR5cGVkZWYgQ0hPT1NFQ09MT1JXIENI
T09TRUNPTE9SOw0KdHlwZWRlZiBMUENIT09TRUNPTE9SVyBMUENIT09TRUNPTE9SOw0KDQoNCg0K
I2xpbmUgNTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUzNSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJPT0wgX19zdGRj
YWxsIENob29zZUNvbG9yQShMUENIT09TRUNPTE9SQSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Qk9PTCBfX3N0ZGNhbGwgQ2hvb3NlQ29sb3JXKExQQ0hPT1NFQ09MT1JXKTsNCg0KDQoNCg0KI2xp
bmUgNTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KdHlwZWRlZiBVSU5UX1BUUiAoX19z
dGRjYWxsICpMUEZSSE9PS1BST0MpIChIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7DQoNCnR5
cGVkZWYgc3RydWN0IHRhZ0ZJTkRSRVBMQUNFQSB7DQogICBEV09SRCAgICAgICAgbFN0cnVjdFNp
emU7ICAgICAgICANCiAgIEhXTkQgICAgICAgICBod25kT3duZXI7ICAgICAgICAgIA0KICAgSElO
U1RBTkNFICAgIGhJbnN0YW5jZTsgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICANCiAgIERXT1JEICAgICAgICBGbGFnczsgICAgICAgICAgICAgIA0KICAgTFBT
VFIgICAgICAgIGxwc3RyRmluZFdoYXQ7ICAgICAgDQogICBMUFNUUiAgICAgICAgbHBzdHJSZXBs
YWNlV2l0aDsgICANCiAgIFdPUkQgICAgICAgICB3RmluZFdoYXRMZW47ICAgICAgIA0KICAgV09S
RCAgICAgICAgIHdSZXBsYWNlV2l0aExlbjsgICAgDQogICBMUEFSQU0gICAgICAgbEN1c3REYXRh
OyAgICAgICAgICANCiAgIExQRlJIT09LUFJPQyBscGZuSG9vazsgICAgICAgICAgIA0KICAgTFBD
U1RSICAgICAgIGxwVGVtcGxhdGVOYW1lOyAgICAgDQp9IEZJTkRSRVBMQUNFQSwgKkxQRklORFJF
UExBQ0VBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnRklORFJFUExBQ0VXIHsNCiAgIERXT1JEICAgICAg
ICBsU3RydWN0U2l6ZTsgICAgICAgIA0KICAgSFdORCAgICAgICAgIGh3bmRPd25lcjsgICAgICAg
ICAgDQogICBISU5TVEFOQ0UgICAgaEluc3RhbmNlOyAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KICAgRFdPUkQgICAgICAgIEZsYWdzOyAgICAgICAgICAg
ICAgDQogICBMUFdTVFIgICAgICAgbHBzdHJGaW5kV2hhdDsgICAgICANCiAgIExQV1NUUiAgICAg
ICBscHN0clJlcGxhY2VXaXRoOyAgIA0KICAgV09SRCAgICAgICAgIHdGaW5kV2hhdExlbjsgICAg
ICAgDQogICBXT1JEICAgICAgICAgd1JlcGxhY2VXaXRoTGVuOyAgICANCiAgIExQQVJBTSAgICAg
ICBsQ3VzdERhdGE7ICAgICAgICAgIA0KICAgTFBGUkhPT0tQUk9DIGxwZm5Ib29rOyAgICAgICAg
ICAgDQogICBMUENXU1RSICAgICAgbHBUZW1wbGF0ZU5hbWU7ICAgICANCn0gRklORFJFUExBQ0VX
LCAqTFBGSU5EUkVQTEFDRVc7DQoNCnR5cGVkZWYgRklORFJFUExBQ0VXIEZJTkRSRVBMQUNFOw0K
dHlwZWRlZiBMUEZJTkRSRVBMQUNFVyBMUEZJTkRSRVBMQUNFOw0KDQoNCg0KI2xpbmUgNTkzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNjE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCg0K
I2xpbmUgNjIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgSFdORCBfX3N0ZGNhbGwgRmluZFRleHRBKExQRklORFJFUExBQ0VBKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBIV05EIF9fc3RkY2FsbCBGaW5kVGV4dFcoTFBGSU5EUkVQTEFDRVcpOw0KDQoN
Cg0KDQojbGluZSA2MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBIV05EIF9fc3RkY2FsbCBSZXBsYWNlVGV4dEEoTFBGSU5EUkVQTEFDRUEpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEhXTkQgX19zdGRjYWxsIFJlcGxhY2VUZXh0VyhMUEZJTkRSRVBM
QUNFVyk7DQoNCg0KDQoNCiNsaW5lIDYzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRv
d3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA2NDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIFVJTlRfUFRSIChfX3N0ZGNh
bGwgKkxQQ0ZIT09LUFJPQykgKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsNCg0KdHlwZWRl
ZiBzdHJ1Y3QgdGFnQ0hPT1NFRk9OVEEgew0KICAgRFdPUkQgICAgICAgICAgIGxTdHJ1Y3RTaXpl
Ow0KICAgSFdORCAgICAgICAgICAgIGh3bmRPd25lcjsgICAgICAgICAgDQogICBIREMgICAgICAg
ICAgICAgaERDOyAgICAgICAgICAgICAgICANCiAgIExQTE9HRk9OVEEgICAgICBscExvZ0ZvbnQ7
ICAgICAgICAgIA0KICAgSU5UICAgICAgICAgICAgIGlQb2ludFNpemU7ICAgICAgICAgDQogICBE
V09SRCAgICAgICAgICAgRmxhZ3M7ICAgICAgICAgICAgICANCiAgIENPTE9SUkVGICAgICAgICBy
Z2JDb2xvcnM7ICAgICAgICAgIA0KICAgTFBBUkFNICAgICAgICAgIGxDdXN0RGF0YTsgICAgICAg
ICAgDQogICBMUENGSE9PS1BST0MgICAgbHBmbkhvb2s7ICAgICAgICAgICANCiAgIExQQ1NUUiAg
ICAgICAgICBscFRlbXBsYXRlTmFtZTsgICAgIA0KICAgSElOU1RBTkNFICAgICAgIGhJbnN0YW5j
ZTsgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg
IExQU1RSICAgICAgICAgICBscHN6U3R5bGU7ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICBXT1JEICAgICAgICAgICAgbkZvbnRUeXBlOyAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICBXT1JEICAgICAgICAgICAgX19fTUlT
U0lOR19BTElHTk1FTlRfXzsNCiAgIElOVCAgICAgICAgICAgICBuU2l6ZU1pbjsgICAgICAgICAg
IA0KICAgSU5UICAgICAgICAgICAgIG5TaXplTWF4OyAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICANCn0gQ0hPT1NFRk9OVEE7DQp0eXBlZGVmIHN0cnVj
dCB0YWdDSE9PU0VGT05UVyB7DQogICBEV09SRCAgICAgICAgICAgbFN0cnVjdFNpemU7DQogICBI
V05EICAgICAgICAgICAgaHduZE93bmVyOyAgICAgICAgICANCiAgIEhEQyAgICAgICAgICAgICBo
REM7ICAgICAgICAgICAgICAgIA0KICAgTFBMT0dGT05UVyAgICAgIGxwTG9nRm9udDsgICAgICAg
ICAgDQogICBJTlQgICAgICAgICAgICAgaVBvaW50U2l6ZTsgICAgICAgICANCiAgIERXT1JEICAg
ICAgICAgICBGbGFnczsgICAgICAgICAgICAgIA0KICAgQ09MT1JSRUYgICAgICAgIHJnYkNvbG9y
czsgICAgICAgICAgDQogICBMUEFSQU0gICAgICAgICAgbEN1c3REYXRhOyAgICAgICAgICANCiAg
IExQQ0ZIT09LUFJPQyAgICBscGZuSG9vazsgICAgICAgICAgIA0KICAgTFBDV1NUUiAgICAgICAg
IGxwVGVtcGxhdGVOYW1lOyAgICAgDQogICBISU5TVEFOQ0UgICAgICAgaEluc3RhbmNlOyAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgTFBXU1RS
ICAgICAgICAgIGxwc3pTdHlsZTsgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICANCiAgIFdPUkQgICAgICAgICAgICBuRm9udFR5cGU7ICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICANCiAgIFdPUkQgICAgICAgICAgICBfX19NSVNTSU5HX0FM
SUdOTUVOVF9fOw0KICAgSU5UICAgICAgICAgICAgIG5TaXplTWluOyAgICAgICAgICAgDQogICBJ
TlQgICAgICAgICAgICAgblNpemVNYXg7ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIA0KfSBDSE9PU0VGT05UVzsNCg0KdHlwZWRlZiBDSE9PU0VGT05U
VyBDSE9PU0VGT05UOw0KDQoNCiNsaW5lIDcyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCnR5
cGVkZWYgQ0hPT1NFRk9OVEEgKkxQQ0hPT1NFRk9OVEE7DQp0eXBlZGVmIENIT09TRUZPTlRXICpM
UENIT09TRUZPTlRXOw0KDQp0eXBlZGVmIExQQ0hPT1NFRk9OVFcgTFBDSE9PU0VGT05UOw0KDQoN
CiNsaW5lIDcyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCnR5cGVkZWYgY29uc3QgQ0hPT1NF
Rk9OVEEgKlBDQ0hPT1NFRk9OVEE7DQp0eXBlZGVmIGNvbnN0IENIT09TRUZPTlRXICpQQ0NIT09T
RUZPTlRXOw0KDQp0eXBlZGVmIENIT09TRUZPTlRXIENIT09TRUZPTlQ7DQp0eXBlZGVmIFBDQ0hP
T1NFRk9OVFcgUENDSE9PU0VGT05UOw0KDQoNCg0KI2xpbmUgNzM3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29t
bWRsZy5oIg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgQ2hvb3NlRm9u
dEEoTFBDSE9PU0VGT05UQSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwg
Q2hvb3NlRm9udFcoTFBDSE9PU0VGT05UVyk7DQoNCg0KDQoNCiNsaW5lIDc0NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXGNvbW1kbGcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc2MSAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNzc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCiNsaW5lIDc4MSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXGNvbW1kbGcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDgwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KDQojbGluZSA4MDYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KDQoNCg0KI2xpbmUgODEyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
Y29tbWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRs
Zy5oIg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIFVJTlRfUFRSIChfX3N0ZGNhbGwgKkxQUFJJTlRI
T09LUFJPQykgKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsNCnR5cGVkZWYgVUlOVF9QVFIg
KF9fc3RkY2FsbCAqTFBTRVRVUEhPT0tQUk9DKSAoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0p
Ow0KDQp0eXBlZGVmIHN0cnVjdCB0YWdQREEgew0KICAgRFdPUkQgICAgICAgICAgICBsU3RydWN0
U2l6ZTsNCiAgIEhXTkQgICAgICAgICAgICAgaHduZE93bmVyOw0KICAgSEdMT0JBTCAgICAgICAg
ICBoRGV2TW9kZTsNCiAgIEhHTE9CQUwgICAgICAgICAgaERldk5hbWVzOw0KICAgSERDICAgICAg
ICAgICAgICBoREM7DQogICBEV09SRCAgICAgICAgICAgIEZsYWdzOw0KICAgV09SRCAgICAgICAg
ICAgICBuRnJvbVBhZ2U7DQogICBXT1JEICAgICAgICAgICAgIG5Ub1BhZ2U7DQogICBXT1JEICAg
ICAgICAgICAgIG5NaW5QYWdlOw0KICAgV09SRCAgICAgICAgICAgICBuTWF4UGFnZTsNCiAgIFdP
UkQgICAgICAgICAgICAgbkNvcGllczsNCiAgIEhJTlNUQU5DRSAgICAgICAgaEluc3RhbmNlOw0K
ICAgTFBBUkFNICAgICAgICAgICBsQ3VzdERhdGE7DQogICBMUFBSSU5USE9PS1BST0MgIGxwZm5Q
cmludEhvb2s7DQogICBMUFNFVFVQSE9PS1BST0MgIGxwZm5TZXR1cEhvb2s7DQogICBMUENTVFIg
ICAgICAgICAgIGxwUHJpbnRUZW1wbGF0ZU5hbWU7DQogICBMUENTVFIgICAgICAgICAgIGxwU2V0
dXBUZW1wbGF0ZU5hbWU7DQogICBIR0xPQkFMICAgICAgICAgIGhQcmludFRlbXBsYXRlOw0KICAg
SEdMT0JBTCAgICAgICAgICBoU2V0dXBUZW1wbGF0ZTsNCn0gUFJJTlRETEdBLCAqTFBQUklOVERM
R0E7DQp0eXBlZGVmIHN0cnVjdCB0YWdQRFcgew0KICAgRFdPUkQgICAgICAgICAgICBsU3RydWN0
U2l6ZTsNCiAgIEhXTkQgICAgICAgICAgICAgaHduZE93bmVyOw0KICAgSEdMT0JBTCAgICAgICAg
ICBoRGV2TW9kZTsNCiAgIEhHTE9CQUwgICAgICAgICAgaERldk5hbWVzOw0KICAgSERDICAgICAg
ICAgICAgICBoREM7DQogICBEV09SRCAgICAgICAgICAgIEZsYWdzOw0KICAgV09SRCAgICAgICAg
ICAgICBuRnJvbVBhZ2U7DQogICBXT1JEICAgICAgICAgICAgIG5Ub1BhZ2U7DQogICBXT1JEICAg
ICAgICAgICAgIG5NaW5QYWdlOw0KICAgV09SRCAgICAgICAgICAgICBuTWF4UGFnZTsNCiAgIFdP
UkQgICAgICAgICAgICAgbkNvcGllczsNCiAgIEhJTlNUQU5DRSAgICAgICAgaEluc3RhbmNlOw0K
ICAgTFBBUkFNICAgICAgICAgICBsQ3VzdERhdGE7DQogICBMUFBSSU5USE9PS1BST0MgIGxwZm5Q
cmludEhvb2s7DQogICBMUFNFVFVQSE9PS1BST0MgIGxwZm5TZXR1cEhvb2s7DQogICBMUENXU1RS
ICAgICAgICAgIGxwUHJpbnRUZW1wbGF0ZU5hbWU7DQogICBMUENXU1RSICAgICAgICAgIGxwU2V0
dXBUZW1wbGF0ZU5hbWU7DQogICBIR0xPQkFMICAgICAgICAgIGhQcmludFRlbXBsYXRlOw0KICAg
SEdMT0JBTCAgICAgICAgICBoU2V0dXBUZW1wbGF0ZTsNCn0gUFJJTlRETEdXLCAqTFBQUklOVERM
R1c7DQoNCnR5cGVkZWYgUFJJTlRETEdXIFBSSU5URExHOw0KdHlwZWRlZiBMUFBSSU5URExHVyBM
UFBSSU5URExHOw0KDQoNCg0KI2xpbmUgOTA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgICBCT09MIF9fc3RkY2FsbCBQcmludERsZ0EoICBMUFBSSU5U
RExHQSBwUEQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpICAgQk9PTCBfX3N0ZGNhbGwgUHJpbnRE
bGdXKCAgTFBQUklOVERMR1cgcFBEKTsNCg0KDQoNCg0KI2xpbmUgOTE2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
Y29tbWRsZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnN0cnVjdCBfX2RlY2xzcGVjKHV1aWQoIjU4
NTJBMkMzLTY1MzAtMTFEMS1CNkEzLTAwMDBGODc1N0JGOSIpKSBfX2RlY2xzcGVjKG5vdnRhYmxl
KSBJUHJpbnREaWFsb2dDYWxsYmFjayA6IHB1YmxpYyBJVW5rbm93bg0Kew0KICAgIA0KICAgIHZp
cnR1YWwgX19kZWNsc3BlYyhub3Rocm93KSBIUkVTVUxUIF9fc3RkY2FsbCBRdWVyeUludGVyZmFj
ZSAoICAgY29uc3QgSUlEICYgcmlpZCwgIHZvaWQgKipwcHZPYmopID0gMDsNCiAgICB2aXJ0dWFs
IF9fZGVjbHNwZWMobm90aHJvdykgVUxPTkcgX19zdGRjYWxsIEFkZFJlZiAodm9pZCkgPSAwOw0K
ICAgIHZpcnR1YWwgX19kZWNsc3BlYyhub3Rocm93KSBVTE9ORyBfX3N0ZGNhbGwgUmVsZWFzZSh2
b2lkKSA9IDA7DQoNCiAgICANCiAgICB2aXJ0dWFsIF9fZGVjbHNwZWMobm90aHJvdykgSFJFU1VM
VCBfX3N0ZGNhbGwgSW5pdERvbmUgKHZvaWQpID0gMDsNCiAgICB2aXJ0dWFsIF9fZGVjbHNwZWMo
bm90aHJvdykgSFJFU1VMVCBfX3N0ZGNhbGwgU2VsZWN0aW9uQ2hhbmdlICh2b2lkKSA9IDA7DQog
ICAgdmlydHVhbCBfX2RlY2xzcGVjKG5vdGhyb3cpIEhSRVNVTFQgX19zdGRjYWxsIEhhbmRsZU1l
c3NhZ2UgKCBIV05EIGhEbGcsIFVJTlQgdU1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJh
bSwgTFJFU1VMVCAqcFJlc3VsdCkgPSAwOw0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQpzdHJ1Y3QgX19kZWNsc3BlYyh1dWlkKCI1MDlBQUVEQS01NjM5LTExRDEt
QjZBMS0wMDAwRjg3NTdCRjkiKSkgX19kZWNsc3BlYyhub3Z0YWJsZSkgSVByaW50RGlhbG9nU2Vy
dmljZXMgOiBwdWJsaWMgSVVua25vd24NCnsNCiAgICANCiAgICB2aXJ0dWFsIF9fZGVjbHNwZWMo
bm90aHJvdykgSFJFU1VMVCBfX3N0ZGNhbGwgUXVlcnlJbnRlcmZhY2UgKCAgIGNvbnN0IElJRCAm
IHJpaWQsICB2b2lkICoqcHB2T2JqKSA9IDA7DQogICAgdmlydHVhbCBfX2RlY2xzcGVjKG5vdGhy
b3cpIFVMT05HIF9fc3RkY2FsbCBBZGRSZWYgKHZvaWQpID0gMDsNCiAgICB2aXJ0dWFsIF9fZGVj
bHNwZWMobm90aHJvdykgVUxPTkcgX19zdGRjYWxsIFJlbGVhc2Uodm9pZCkgPSAwOw0KDQogICAg
DQogICAgdmlydHVhbCBfX2RlY2xzcGVjKG5vdGhyb3cpIEhSRVNVTFQgX19zdGRjYWxsIEdldEN1
cnJlbnREZXZNb2RlICggICBMUERFVk1PREUgcERldk1vZGUsICAgVUlOVCAqcGNiU2l6ZSkgPSAw
Ow0KICAgIHZpcnR1YWwgX19kZWNsc3BlYyhub3Rocm93KSBIUkVTVUxUIF9fc3RkY2FsbCBHZXRD
dXJyZW50UHJpbnRlck5hbWUgKCAgIExQV1NUUiBwUHJpbnRlck5hbWUsICAgVUlOVCAqcGNjaFNp
emUpID0gMDsNCiAgICB2aXJ0dWFsIF9fZGVjbHNwZWMobm90aHJvdykgSFJFU1VMVCBfX3N0ZGNh
bGwgR2V0Q3VycmVudFBvcnROYW1lICggICBMUFdTVFIgcFBvcnROYW1lLCAgIFVJTlQgKnBjY2hT
aXplKSA9IDA7DQp9Ow0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1BSSU5UUEFHRVJBTkdF
IHsNCiAgIERXT1JEICBuRnJvbVBhZ2U7DQogICBEV09SRCAgblRvUGFnZTsNCn0gUFJJTlRQQUdF
UkFOR0U7DQp0eXBlZGVmIFBSSU5UUEFHRVJBTkdFICpMUFBSSU5UUEFHRVJBTkdFOw0KdHlwZWRl
ZiBjb25zdCBQUklOVFBBR0VSQU5HRSAqUENQUklOVFBBR0VSQU5HRTsNCg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCB0YWdQREVYQSB7DQogICBEV09SRCAgICAgICAgICAgICAgICAgbFN0cnVjdFNp
emU7ICAgICAgICAgIA0KICAgSFdORCAgICAgICAgICAgICAgICAgIGh3bmRPd25lcjsgICAgICAg
ICAgICANCiAgIEhHTE9CQUwgICAgICAgICAgICAgICBoRGV2TW9kZTsgICAgICAgICAgICAgDQog
ICBIR0xPQkFMICAgICAgICAgICAgICAgaERldk5hbWVzOyAgICAgICAgICAgIA0KICAgSERDICAg
ICAgICAgICAgICAgICAgIGhEQzsgICAgICAgICAgICAgICAgICANCiAgIERXT1JEICAgICAgICAg
ICAgICAgICBGbGFnczsgICAgICAgICAgICAgICAgDQogICBEV09SRCAgICAgICAgICAgICAgICAg
RmxhZ3MyOyAgICAgICAgICAgICAgIA0KICAgRFdPUkQgICAgICAgICAgICAgICAgIEV4Y2x1c2lv
bkZsYWdzOyAgICAgICANCiAgIERXT1JEICAgICAgICAgICAgICAgICBuUGFnZVJhbmdlczsgICAg
ICAgICAgDQogICBEV09SRCAgICAgICAgICAgICAgICAgbk1heFBhZ2VSYW5nZXM7ICAgICAgIA0K
ICAgTFBQUklOVFBBR0VSQU5HRSAgICAgIGxwUGFnZVJhbmdlczsgICAgICAgICANCiAgIERXT1JE
ICAgICAgICAgICAgICAgICBuTWluUGFnZTsgICAgICAgICAgICAgDQogICBEV09SRCAgICAgICAg
ICAgICAgICAgbk1heFBhZ2U7ICAgICAgICAgICAgIA0KICAgRFdPUkQgICAgICAgICAgICAgICAg
IG5Db3BpZXM7ICAgICAgICAgICAgICANCiAgIEhJTlNUQU5DRSAgICAgICAgICAgICBoSW5zdGFu
Y2U7ICAgICAgICAgICAgDQogICBMUENTVFIgICAgICAgICAgICAgICAgbHBQcmludFRlbXBsYXRl
TmFtZTsgIA0KICAgTFBVTktOT1dOICAgICAgICAgICAgIGxwQ2FsbGJhY2s7ICAgICAgICAgICAN
CiAgIERXT1JEICAgICAgICAgICAgICAgICBuUHJvcGVydHlQYWdlczsgICAgICAgDQogICBIUFJP
UFNIRUVUUEFHRSAgICAgICAqbHBoUHJvcGVydHlQYWdlczsgICAgIA0KICAgRFdPUkQgICAgICAg
ICAgICAgICAgIG5TdGFydFBhZ2U7ICAgICAgICAgICANCiAgIERXT1JEICAgICAgICAgICAgICAg
ICBkd1Jlc3VsdEFjdGlvbjsgICAgICAgDQp9IFBSSU5URExHRVhBLCAqTFBQUklOVERMR0VYQTsN
Cg0KDQoNCnR5cGVkZWYgc3RydWN0IHRhZ1BERVhXIHsNCiAgIERXT1JEICAgICAgICAgICAgICAg
ICBsU3RydWN0U2l6ZTsgICAgICAgICAgDQogICBIV05EICAgICAgICAgICAgICAgICAgaHduZE93
bmVyOyAgICAgICAgICAgIA0KICAgSEdMT0JBTCAgICAgICAgICAgICAgIGhEZXZNb2RlOyAgICAg
ICAgICAgICANCiAgIEhHTE9CQUwgICAgICAgICAgICAgICBoRGV2TmFtZXM7ICAgICAgICAgICAg
DQogICBIREMgICAgICAgICAgICAgICAgICAgaERDOyAgICAgICAgICAgICAgICAgIA0KICAgRFdP
UkQgICAgICAgICAgICAgICAgIEZsYWdzOyAgICAgICAgICAgICAgICANCiAgIERXT1JEICAgICAg
ICAgICAgICAgICBGbGFnczI7ICAgICAgICAgICAgICAgDQogICBEV09SRCAgICAgICAgICAgICAg
ICAgRXhjbHVzaW9uRmxhZ3M7ICAgICAgIA0KICAgRFdPUkQgICAgICAgICAgICAgICAgIG5QYWdl
UmFuZ2VzOyAgICAgICAgICANCiAgIERXT1JEICAgICAgICAgICAgICAgICBuTWF4UGFnZVJhbmdl
czsgICAgICAgDQogICBMUFBSSU5UUEFHRVJBTkdFICAgICAgbHBQYWdlUmFuZ2VzOyAgICAgICAg
IA0KICAgRFdPUkQgICAgICAgICAgICAgICAgIG5NaW5QYWdlOyAgICAgICAgICAgICANCiAgIERX
T1JEICAgICAgICAgICAgICAgICBuTWF4UGFnZTsgICAgICAgICAgICAgDQogICBEV09SRCAgICAg
ICAgICAgICAgICAgbkNvcGllczsgICAgICAgICAgICAgIA0KICAgSElOU1RBTkNFICAgICAgICAg
ICAgIGhJbnN0YW5jZTsgICAgICAgICAgICANCiAgIExQQ1dTVFIgICAgICAgICAgICAgICBscFBy
aW50VGVtcGxhdGVOYW1lOyAgDQogICBMUFVOS05PV04gICAgICAgICAgICAgbHBDYWxsYmFjazsg
ICAgICAgICAgIA0KICAgRFdPUkQgICAgICAgICAgICAgICAgIG5Qcm9wZXJ0eVBhZ2VzOyAgICAg
ICANCiAgIEhQUk9QU0hFRVRQQUdFICAgICAgICpscGhQcm9wZXJ0eVBhZ2VzOyAgICAgDQogICBE
V09SRCAgICAgICAgICAgICAgICAgblN0YXJ0UGFnZTsgICAgICAgICAgIA0KICAgRFdPUkQgICAg
ICAgICAgICAgICAgIGR3UmVzdWx0QWN0aW9uOyAgICAgICANCn0gUFJJTlRETEdFWFcsICpMUFBS
SU5URExHRVhXOw0KDQp0eXBlZGVmIFBSSU5URExHRVhXIFBSSU5URExHRVg7DQp0eXBlZGVmIExQ
UFJJTlRETEdFWFcgTFBQUklOVERMR0VYOw0KDQoNCg0KI2xpbmUgMTA3MCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGNvbW1kbGcuaCINCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBIUkVTVUxUIF9fc3RkY2Fs
bCBQcmludERsZ0V4QSggIExQUFJJTlRETEdFWEEgcFBEKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBIUkVTVUxUIF9fc3RkY2FsbCBQcmludERsZ0V4VyggIExQUFJJTlRETEdFWFcgcFBEKTsNCg0K
DQoNCg0KI2xpbmUgMTA4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KI2xpbmUgMTA4MiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KI2xpbmUgMTA4NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1k
bGcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE0MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGNvbW1kbGcuaCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnREVWTkFNRVMg
ew0KICAgV09SRCB3RHJpdmVyT2Zmc2V0Ow0KICAgV09SRCB3RGV2aWNlT2Zmc2V0Ow0KICAgV09S
RCB3T3V0cHV0T2Zmc2V0Ow0KICAgV09SRCB3RGVmYXVsdDsNCn0gREVWTkFNRVM7DQp0eXBlZGVm
IERFVk5BTUVTICpMUERFVk5BTUVTOw0KdHlwZWRlZiBjb25zdCBERVZOQU1FUyAqUENERVZOQU1F
UzsNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIERXT1JEIF9fc3RkY2FsbCBDb21tRGxn
RXh0ZW5kZWRFcnJvcih2b2lkKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBVSU5UX1BU
UiAoX19zdGRjYWxsKiBMUFBBR0VQQUlOVEhPT0spKCBIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJB
TSApOw0KdHlwZWRlZiBVSU5UX1BUUiAoX19zdGRjYWxsKiBMUFBBR0VTRVRVUEhPT0spKCBIV05E
LCBVSU5ULCBXUEFSQU0sIExQQVJBTSApOw0KDQp0eXBlZGVmIHN0cnVjdCB0YWdQU0RBDQp7DQog
ICAgRFdPUkQgICAgICAgICAgIGxTdHJ1Y3RTaXplOw0KICAgIEhXTkQgICAgICAgICAgICBod25k
T3duZXI7DQogICAgSEdMT0JBTCAgICAgICAgIGhEZXZNb2RlOw0KICAgIEhHTE9CQUwgICAgICAg
ICBoRGV2TmFtZXM7DQogICAgRFdPUkQgICAgICAgICAgIEZsYWdzOw0KICAgIFBPSU5UICAgICAg
ICAgICBwdFBhcGVyU2l6ZTsNCiAgICBSRUNUICAgICAgICAgICAgcnRNaW5NYXJnaW47DQogICAg
UkVDVCAgICAgICAgICAgIHJ0TWFyZ2luOw0KICAgIEhJTlNUQU5DRSAgICAgICBoSW5zdGFuY2U7
DQogICAgTFBBUkFNICAgICAgICAgIGxDdXN0RGF0YTsNCiAgICBMUFBBR0VTRVRVUEhPT0sgbHBm
blBhZ2VTZXR1cEhvb2s7DQogICAgTFBQQUdFUEFJTlRIT09LIGxwZm5QYWdlUGFpbnRIb29rOw0K
ICAgIExQQ1NUUiAgICAgICAgICBscFBhZ2VTZXR1cFRlbXBsYXRlTmFtZTsNCiAgICBIR0xPQkFM
ICAgICAgICAgaFBhZ2VTZXR1cFRlbXBsYXRlOw0KfSBQQUdFU0VUVVBETEdBLCAqIExQUEFHRVNF
VFVQRExHQTsNCnR5cGVkZWYgc3RydWN0IHRhZ1BTRFcNCnsNCiAgICBEV09SRCAgICAgICAgICAg
bFN0cnVjdFNpemU7DQogICAgSFdORCAgICAgICAgICAgIGh3bmRPd25lcjsNCiAgICBIR0xPQkFM
ICAgICAgICAgaERldk1vZGU7DQogICAgSEdMT0JBTCAgICAgICAgIGhEZXZOYW1lczsNCiAgICBE
V09SRCAgICAgICAgICAgRmxhZ3M7DQogICAgUE9JTlQgICAgICAgICAgIHB0UGFwZXJTaXplOw0K
ICAgIFJFQ1QgICAgICAgICAgICBydE1pbk1hcmdpbjsNCiAgICBSRUNUICAgICAgICAgICAgcnRN
YXJnaW47DQogICAgSElOU1RBTkNFICAgICAgIGhJbnN0YW5jZTsNCiAgICBMUEFSQU0gICAgICAg
ICAgbEN1c3REYXRhOw0KICAgIExQUEFHRVNFVFVQSE9PSyBscGZuUGFnZVNldHVwSG9vazsNCiAg
ICBMUFBBR0VQQUlOVEhPT0sgbHBmblBhZ2VQYWludEhvb2s7DQogICAgTFBDV1NUUiAgICAgICAg
IGxwUGFnZVNldHVwVGVtcGxhdGVOYW1lOw0KICAgIEhHTE9CQUwgICAgICAgICBoUGFnZVNldHVw
VGVtcGxhdGU7DQp9IFBBR0VTRVRVUERMR1csICogTFBQQUdFU0VUVVBETEdXOw0KDQp0eXBlZGVm
IFBBR0VTRVRVUERMR1cgUEFHRVNFVFVQRExHOw0KdHlwZWRlZiBMUFBBR0VTRVRVUERMR1cgTFBQ
QUdFU0VUVVBETEc7DQoNCg0KDQojbGluZSAxMjEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgUGFnZVNldHVwRGxnQSggTFBQ
QUdFU0VUVVBETEdBICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgQk9PTCBfX3N0ZGNhbGwgUGFn
ZVNldHVwRGxnVyggTFBQQUdFU0VUVVBETEdXICk7DQoNCg0KDQoNCiNsaW5lIDEyMjEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxjb21tZGxnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxMjQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KDQoNCiNsaW5lIDEyNDYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KDQoNCg0K
I2xpbmUgMTI1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcuaCINCiNsaW5lIDEyNTUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxjb21tZGxnLmgiDQoNCg0KfQ0KI2xpbmUgMTI1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1kbGcu
aCINCg0KDQoNCiNsaW5lIDEyNjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxjb21tZGxnLmgiDQojbGluZSAxMjY0
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcY29tbWRsZy5oIg0KI2xpbmUgMTI2NSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGNvbW1k
bGcuaCINCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDEyNjggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxj
b21tZGxnLmgiDQoNCiNsaW5lIDIyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNsaW5lIDIy
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNsaW5lIDIyMyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRv
d3MuaCINCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzdHJhbGlnbi5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxzdHJhbGlnbi5oIg0KI2xpbmUgNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24u
aCINCg0KDQoNCg0KI2xpbmUgNjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCg0KI2xp
bmUgNjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCiNsaW5lIDYzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxz
aGFyZWRcXHN0cmFsaWduLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSA2NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
c2hhcmVkXFxzdHJhbGlnbi5oIg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTo0MTI3KQ0KI2xpbmUgODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTI1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHN0cmFs
aWduLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCg0KDQoNCg0KDQoNCg0KTFBVV1NUUg0KX19zdGRj
YWxsDQp1YXdfQ2hhclVwcGVyVygNCiAgICAgIExQVVdTVFIgU3RyaW5nDQogICAgKTsNCg0KaW50
DQpfX3N0ZGNhbGwNCnVhd19sc3RyY21wVygNCiAgICAgIFBDVVdTVFIgU3RyaW5nMSwNCiAgICAg
IFBDVVdTVFIgU3RyaW5nMg0KICAgICk7DQoNCmludA0KX19zdGRjYWxsDQp1YXdfbHN0cmNtcGlX
KA0KICAgICAgUENVV1NUUiBTdHJpbmcxLA0KICAgICAgUENVV1NUUiBTdHJpbmcyDQogICAgKTsN
Cg0KaW50DQpfX3N0ZGNhbGwNCnVhd19sc3RybGVuVygNCiAgICAgIExQQ1VXU1RSIFN0cmluZw0K
ICAgICk7DQoNClBVV1NUUg0KX19jZGVjbA0KdWF3X3djc2NocigNCiAgICAgIFBDVVdTVFIgU3Ry
aW5nLA0KICAgICAgV0NIQVIgICBDaGFyYWN0ZXINCiAgICApOw0KDQpQVVdTVFINCl9fY2RlY2wN
CnVhd193Y3NjcHkoDQogICAgICBQVVdTVFIgIERlc3RpbmF0aW9uLA0KICAgICAgIFBDVVdTVFIg
U291cmNlDQogICAgKTsNCg0KaW50DQpfX2NkZWNsDQp1YXdfd2NzaWNtcCgNCiAgICAgIFBDVVdT
VFIgU3RyaW5nMSwNCiAgICAgIFBDVVdTVFIgU3RyaW5nMg0KICAgICk7DQoNCnNpemVfdA0KX19j
ZGVjbA0KdWF3X3djc2xlbigNCiAgICAgIFBDVVdTVFIgU3RyaW5nDQogICAgKTsNCg0KUFVXU1RS
DQpfX2NkZWNsDQp1YXdfd2NzcmNocigNCiAgICAgIFBDVVdTVFIgU3RyaW5nLA0KICAgICAgV0NI
QVIgICBDaGFyYWN0ZXINCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0KX19pbmxpbmUNCkxQVVdT
VFINCnN0YXRpYw0KdWFfQ2hhclVwcGVyVygNCiAgICAgIExQVVdTVFIgU3RyaW5nDQogICAgKQ0K
ew0KICAgIGlmICgxKSB7DQogICAgICAgIHJldHVybiBDaGFyVXBwZXJXKCAoUFdTVFIpU3RyaW5n
ICk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuIHVhd19DaGFyVXBwZXJXKCBTdHJpbmcg
KTsNCiAgICB9DQp9DQojbGluZSAyMzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCg0K
DQpfX2lubGluZQ0KaW50DQpzdGF0aWMNCnVhX2xzdHJjbXBXKA0KICAgICAgTFBDVVdTVFIgU3Ry
aW5nMSwNCiAgICAgIExQQ1VXU1RSIFN0cmluZzINCiAgICApDQp7DQogICAgaWYgKDEgJiYgMSkg
ew0KICAgICAgICByZXR1cm4gbHN0cmNtcFcoIChMUENXU1RSKVN0cmluZzEsIChMUENXU1RSKVN0
cmluZzIpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiB1YXdfbHN0cmNtcFcoIFN0cmlu
ZzEsIFN0cmluZzIgKTsNCiAgICB9DQp9DQojbGluZSAyNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3Ry
YWxpZ24uaCINCg0KDQpfX2lubGluZQ0KaW50DQpzdGF0aWMNCnVhX2xzdHJjbXBpVygNCiAgICAg
IExQQ1VXU1RSIFN0cmluZzEsDQogICAgICBMUENVV1NUUiBTdHJpbmcyDQogICAgKQ0Kew0KICAg
IGlmICgxICYmIDEpIHsNCiAgICAgICAgcmV0dXJuIGxzdHJjbXBpVyggKExQQ1dTVFIpU3RyaW5n
MSwgKExQQ1dTVFIpU3RyaW5nMiApOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiB1YXdf
bHN0cmNtcGlXKCBTdHJpbmcxLCBTdHJpbmcyICk7DQogICAgfQ0KfQ0KI2xpbmUgMjY3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFxzaGFyZWRcXHN0cmFsaWduLmgiDQoNCg0KX19pbmxpbmUNCmludA0Kc3RhdGljDQp1YV9s
c3RybGVuVygNCiAgICAgIExQQ1VXU1RSIFN0cmluZw0KICAgICkNCnsNCiAgICBpZiAoMSkgew0K
I3ByYWdtYSB3YXJuaW5nKHN1cHByZXNzOiAyODc1MCkgDQogICAgICAgIHJldHVybiBsc3RybGVu
VyggKFBDV1NUUilTdHJpbmcgKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gdWF3X2xz
dHJsZW5XKCBTdHJpbmcgKTsNCiAgICB9DQp9DQojbGluZSAyODQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
c3RyYWxpZ24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGNvbnN0IFdDSEFSIF9fdW5hbGlnbmVkICpQVVdT
VFJfQzsNCg0KDQojbGluZSAzMjAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCg0KDQoN
Cg0KDQpfX2lubGluZQ0KUFVXU1RSX0MNCnN0YXRpYw0KdWFfd2NzY2hyKA0KICAgICAgUENVV1NU
UiBTdHJpbmcsDQogICAgICBXQ0hBUiAgIENoYXJhY3Rlcg0KICAgICkNCnsNCiAgICBpZiAoMSkg
ew0KICAgICAgICByZXR1cm4gd2NzY2hyKChQQ1dTVFIpU3RyaW5nLCBDaGFyYWN0ZXIpOw0KICAg
IH0gZWxzZSB7DQogICAgICAgIHJldHVybiAoUFVXU1RSX0MpdWF3X3djc2NocihTdHJpbmcsIENo
YXJhY3Rlcik7DQogICAgfQ0KfQ0KDQpfX2lubGluZQ0KUFVXU1RSX0MNCnN0YXRpYw0KdWFfd2Nz
cmNocigNCiAgICAgIFBDVVdTVFIgU3RyaW5nLA0KICAgICAgV0NIQVIgICBDaGFyYWN0ZXINCiAg
ICApDQp7DQogICAgaWYgKDEpIHsNCiAgICAgICAgcmV0dXJuIHdjc3JjaHIoKFBDV1NUUilTdHJp
bmcsIENoYXJhY3Rlcik7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuIChQVVdTVFJfQyl1
YXdfd2NzcmNocihTdHJpbmcsIENoYXJhY3Rlcik7DQogICAgfQ0KfQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQxNCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcc2hhcmVkXFxzdHJhbGlnbi5oIg0KDQpfX2lubGluZQ0KUFVXU1RSDQpzdGF0aWMN
Cl9fZGVjbHNwZWMoZGVwcmVjYXRlZCkNCnVhX3djc2NweSgNCiAgICAgIFBVV1NUUiAgRGVzdGlu
YXRpb24sDQogICAgICBQQ1VXU1RSIFNvdXJjZQ0KICAgICkNCnsNCiAgICBpZiAoMSAmJiAxKSB7
DQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTUpDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KQ0KDQoNCg0KICAgICAgICByZXR1cm4gd2NzY3B5
KCAoUFdTVFIpRGVzdGluYXRpb24sIChQQ1dTVFIpU291cmNlICk7DQojcHJhZ21hIHdhcm5pbmco
cG9wKQ0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiB1YXdfd2NzY3B5KCBEZXN0aW5hdGlv
biwgU291cmNlICk7DQogICAgfQ0KfQ0KDQoNCg0KX19pbmxpbmUNClBVV1NUUg0Kc3RhdGljDQp1
YV93Y3NjcHlfcygNCiAgICAgIFBVV1NUUiBEZXN0aW5hdGlvbiwNCiAgICAgIHNpemVfdCAgRGVz
dGluYXRpb25TaXplLA0KICAgICAgUENVV1NUUiBTb3VyY2UNCiAgICApDQp7DQogICAgaWYgKDEg
JiYgMSkgew0KICAgICAgICByZXR1cm4gKHdjc2NweV9zKCAoUFdTVFIpRGVzdGluYXRpb24sIERl
c3RpbmF0aW9uU2l6ZSwgKFBDV1NUUilTb3VyY2UgKSA9PSAwID8gRGVzdGluYXRpb24gOiAwKTsN
CiAgICB9IGVsc2Ugew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHVhd193Y3NjcHkoIERlc3Rp
bmF0aW9uLCBTb3VyY2UgKTsNCiAgICB9DQp9DQojbGluZSA0NTcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxc
c3RyYWxpZ24uaCINCg0KX19pbmxpbmUNCnNpemVfdA0Kc3RhdGljDQp1YV93Y3NsZW4oDQogICAg
ICBQQ1VXU1RSIFN0cmluZw0KICAgICkNCnsNCiAgICBpZiAoMSkgew0KICAgICAgICByZXR1cm4g
d2NzbGVuKCAoUENXU1RSKVN0cmluZyApOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiB1
YXdfd2NzbGVuKCBTdHJpbmcgKTsNCiAgICB9DQp9DQoNCiNsaW5lIDQ3MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hh
cmVkXFxzdHJhbGlnbi5oIg0KDQpfX2lubGluZQ0KaW50DQpzdGF0aWMNCnVhX3djc2ljbXAoDQog
ICAgICBQQ1VXU1RSIFN0cmluZzEsDQogICAgICBQQ1VXU1RSIFN0cmluZzINCiAgICApDQp7DQog
ICAgaWYgKDEgJiYgMSkgew0KICAgICAgICByZXR1cm4gX3djc2ljbXAoIChMUENXU1RSKVN0cmlu
ZzEsIChMUENXU1RSKVN0cmluZzIgKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4gdWF3
X3djc2ljbXAoIFN0cmluZzEsIFN0cmluZzIgKTsNCiAgICB9DQp9DQoNCiNsaW5lIDQ5MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcc2hhcmVkXFxzdHJhbGlnbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA1NjEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDU5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzdHJhbGlnbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA2NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCg0KDQoNCiNs
aW5lIDY0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzdHJhbGlnbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNjU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHN0cmFsaWduLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHN0cmFsaWduLmgi
DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDY3OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxz
dHJhbGlnbi5oIg0KDQojbGluZSA2ODAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHNoYXJlZFxcc3RyYWxpZ24uaCINCiNw
cmFnbWEgZW5kcmVnaW9uDQoNCg0KfQ0KI2xpbmUgNjg1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFxzaGFyZWRcXHN0cmFs
aWduLmgiDQoNCiNsaW5lIDY4NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcc2hhcmVkXFxzdHJhbGlnbi5oIg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIyNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0K
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojbGluZSAzOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdp
bnN2Yy5oIg0KDQoNCmV4dGVybiAiQyIgew0KI2xpbmUgNDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMu
aCINCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBjb25zdCBH
VUlEICBORVRXT1JLX01BTkFHRVJfRklSU1RfSVBfQUREUkVTU19BUlJJVkFMX0dVSUQ7DQojbGlu
ZSAzNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KZXh0ZXJuICJDIiBjb25zdCBHVUlEICBO
RVRXT1JLX01BTkFHRVJfTEFTVF9JUF9BRERSRVNTX1JFTU9WQUxfR1VJRDsNCiNsaW5lIDM3OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIERP
TUFJTl9KT0lOX0dVSUQ7DQojbGluZSAzODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KZXh0
ZXJuICJDIiBjb25zdCBHVUlEICBET01BSU5fTEVBVkVfR1VJRDsNCiNsaW5lIDM5NyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnN2Yy5oIg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgRklSRVdB
TExfUE9SVF9PUEVOX0dVSUQ7DQojbGluZSA0MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0K
ZXh0ZXJuICJDIiBjb25zdCBHVUlEICBGSVJFV0FMTF9QT1JUX0NMT1NFX0dVSUQ7DQojbGluZSA0
MTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KDQoNCg0KDQpleHRlcm4gIkMiIGNvbnN0IEdV
SUQgIE1BQ0hJTkVfUE9MSUNZX1BSRVNFTlRfR1VJRDsNCiNsaW5lIDQyOSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnN2Yy5oIg0KDQpleHRlcm4gIkMiIGNvbnN0IEdVSUQgIFVTRVJfUE9MSUNZX1BSRVNFTlRf
R1VJRDsNCiNsaW5lIDQzNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgY29uc3QgR1VJRCAgUlBDX0lOVEVSRkFDRV9FVkVOVF9HVUlEOw0KI2xpbmUgNDQ5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCmV4dGVybiAiQyIgY29uc3QgR1VJRCAgTkFNRURfUElQ
RV9FVkVOVF9HVUlEOw0KI2xpbmUgNDU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCg0KDQoN
CmV4dGVybiAiQyIgY29uc3QgR1VJRCAgQ1VTVE9NX1NZU1RFTV9TVEFURV9DSEFOR0VfRVZFTlRf
R1VJRDsNCiNsaW5lIDQ2OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoNCg0KDQp0eXBlZGVm
IHN0cnVjdA0Kew0KICAgIERXT1JEIERhdGFbMl07DQp9IFNFUlZJQ0VfVFJJR0dFUl9DVVNUT01f
U1RBVEVfSUQ7DQoNCnR5cGVkZWYgc3RydWN0IF9TRVJWSUNFX0NVU1RPTV9TWVNURU1fU1RBVEVf
Q0hBTkdFX0RBVEFfSVRFTSB7DQogICAgdW5pb24gew0KICAgICAgICBTRVJWSUNFX1RSSUdHRVJf
Q1VTVE9NX1NUQVRFX0lEIEN1c3RvbVN0YXRlSWQ7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAg
ICAgICBEV09SRCBEYXRhT2Zmc2V0Ow0KICAgICAgICAgICAgQllURSBEYXRhWzFdOw0KICAgICAg
ICB9IHM7DQogICAgfSB1Ow0KfSBTRVJWSUNFX0NVU1RPTV9TWVNURU1fU1RBVEVfQ0hBTkdFX0RB
VEFfSVRFTSwgKkxQU0VSVklDRV9DVVNUT01fU1lTVEVNX1NUQVRFX0NIQU5HRV9EQVRBX0lURU07
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TRVJWSUNF
X0RFU0NSSVBUSU9OQSB7DQogICAgTFBTVFIgICAgICAgbHBEZXNjcmlwdGlvbjsNCn0gU0VSVklD
RV9ERVNDUklQVElPTkEsICpMUFNFUlZJQ0VfREVTQ1JJUFRJT05BOw0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX1NFUlZJQ0VfREVTQ1JJUFRJT05XIHsNCiAgICBMUFdTVFIgICAgICBscERlc2NyaXB0
aW9uOw0KfSBTRVJWSUNFX0RFU0NSSVBUSU9OVywgKkxQU0VSVklDRV9ERVNDUklQVElPTlc7DQoN
CnR5cGVkZWYgU0VSVklDRV9ERVNDUklQVElPTlcgU0VSVklDRV9ERVNDUklQVElPTjsNCnR5cGVk
ZWYgTFBTRVJWSUNFX0RFU0NSSVBUSU9OVyBMUFNFUlZJQ0VfREVTQ1JJUFRJT047DQoNCg0KDQoj
bGluZSA1MTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KDQoNCg0KdHlwZWRlZiBlbnVtIF9T
Q19BQ1RJT05fVFlQRSB7DQogICAgICAgIFNDX0FDVElPTl9OT05FICAgICAgICAgID0gMCwNCiAg
ICAgICAgU0NfQUNUSU9OX1JFU1RBUlQgICAgICAgPSAxLA0KICAgICAgICBTQ19BQ1RJT05fUkVC
T09UICAgICAgICA9IDIsDQogICAgICAgIFNDX0FDVElPTl9SVU5fQ09NTUFORCAgID0gMywNCiAg
ICAgICAgU0NfQUNUSU9OX09XTl9SRVNUQVJUICAgPSA0DQp9IFNDX0FDVElPTl9UWVBFOw0KDQp0
eXBlZGVmIHN0cnVjdCBfU0NfQUNUSU9OIHsNCiAgICBTQ19BQ1RJT05fVFlQRSAgVHlwZTsNCiAg
ICBEV09SRCAgICAgICAgICAgRGVsYXk7DQp9IFNDX0FDVElPTiwgKkxQU0NfQUNUSU9OOw0KDQp0
eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9GQUlMVVJFX0FDVElPTlNBIHsNCiAgICBEV09SRCAgICAg
ICBkd1Jlc2V0UGVyaW9kOw0KICAgIExQU1RSICAgICAgIGxwUmVib290TXNnOw0KICAgIExQU1RS
ICAgICAgIGxwQ29tbWFuZDsNCg0KDQoNCiAgICBEV09SRCAgICAgICBjQWN0aW9uczsNCg0KDQoN
CiAgICBTQ19BQ1RJT04gKiBscHNhQWN0aW9uczsNCn0gU0VSVklDRV9GQUlMVVJFX0FDVElPTlNB
LCAqTFBTRVJWSUNFX0ZBSUxVUkVfQUNUSU9OU0E7DQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9G
QUlMVVJFX0FDVElPTlNXIHsNCiAgICBEV09SRCAgICAgICBkd1Jlc2V0UGVyaW9kOw0KICAgIExQ
V1NUUiAgICAgIGxwUmVib290TXNnOw0KICAgIExQV1NUUiAgICAgIGxwQ29tbWFuZDsNCg0KDQoN
CiAgICBEV09SRCAgICAgICBjQWN0aW9uczsNCg0KDQoNCiAgICBTQ19BQ1RJT04gKiBscHNhQWN0
aW9uczsNCn0gU0VSVklDRV9GQUlMVVJFX0FDVElPTlNXLCAqTFBTRVJWSUNFX0ZBSUxVUkVfQUNU
SU9OU1c7DQoNCnR5cGVkZWYgU0VSVklDRV9GQUlMVVJFX0FDVElPTlNXIFNFUlZJQ0VfRkFJTFVS
RV9BQ1RJT05TOw0KdHlwZWRlZiBMUFNFUlZJQ0VfRkFJTFVSRV9BQ1RJT05TVyBMUFNFUlZJQ0Vf
RkFJTFVSRV9BQ1RJT05TOw0KDQoNCg0KI2xpbmUgNTY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgi
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IF9TRVJWSUNFX0RFTEFZRURfQVVUT19TVEFSVF9JTkZP
IHsNCiAgICBCT09MICAgICAgIGZEZWxheWVkQXV0b3N0YXJ0OyAgICAgIA0KfSBTRVJWSUNFX0RF
TEFZRURfQVVUT19TVEFSVF9JTkZPLCAqTFBTRVJWSUNFX0RFTEFZRURfQVVUT19TVEFSVF9JTkZP
Ow0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9GQUlMVVJFX0FDVElPTlNfRkxBRyB7
DQogICAgQk9PTCAgICAgICBmRmFpbHVyZUFjdGlvbnNPbk5vbkNyYXNoRmFpbHVyZXM7ICAgICAg
IA0KfSBTRVJWSUNFX0ZBSUxVUkVfQUNUSU9OU19GTEFHLCAqTFBTRVJWSUNFX0ZBSUxVUkVfQUNU
SU9OU19GTEFHOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9TSURfSU5GTyB7DQog
ICAgRFdPUkQgICAgICAgZHdTZXJ2aWNlU2lkVHlwZTsgICAgIA0KfSBTRVJWSUNFX1NJRF9JTkZP
LCAqTFBTRVJWSUNFX1NJRF9JTkZPOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9S
RVFVSVJFRF9QUklWSUxFR0VTX0lORk9BIHsNCiAgICBMUFNUUiAgICAgICBwbXN6UmVxdWlyZWRQ
cml2aWxlZ2VzOyAgICAgICAgICAgICANCn0gU0VSVklDRV9SRVFVSVJFRF9QUklWSUxFR0VTX0lO
Rk9BLCAqTFBTRVJWSUNFX1JFUVVJUkVEX1BSSVZJTEVHRVNfSU5GT0E7DQoNCg0KDQp0eXBlZGVm
IHN0cnVjdCBfU0VSVklDRV9SRVFVSVJFRF9QUklWSUxFR0VTX0lORk9XIHsNCiAgICBMUFdTVFIg
ICAgICBwbXN6UmVxdWlyZWRQcml2aWxlZ2VzOyAgICAgICAgICAgICANCn0gU0VSVklDRV9SRVFV
SVJFRF9QUklWSUxFR0VTX0lORk9XLCAqTFBTRVJWSUNFX1JFUVVJUkVEX1BSSVZJTEVHRVNfSU5G
T1c7DQoNCnR5cGVkZWYgU0VSVklDRV9SRVFVSVJFRF9QUklWSUxFR0VTX0lORk9XIFNFUlZJQ0Vf
UkVRVUlSRURfUFJJVklMRUdFU19JTkZPOw0KdHlwZWRlZiBMUFNFUlZJQ0VfUkVRVUlSRURfUFJJ
VklMRUdFU19JTkZPVyBMUFNFUlZJQ0VfUkVRVUlSRURfUFJJVklMRUdFU19JTkZPOw0KDQoNCg0K
I2xpbmUgNjA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0
IF9TRVJWSUNFX1BSRVNIVVRET1dOX0lORk8gew0KICAgIERXT1JEICAgICAgIGR3UHJlc2h1dGRv
d25UaW1lb3V0OyAgIA0KfSBTRVJWSUNFX1BSRVNIVVRET1dOX0lORk8sICpMUFNFUlZJQ0VfUFJF
U0hVVERPV05fSU5GTzsNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NFUlZJQ0VfVFJJR0dFUl9T
UEVDSUZJQ19EQVRBX0lURU0NCnsNCiAgICBEV09SRCAgIGR3RGF0YVR5cGU7IA0KDQoNCg0KICAg
IERXT1JEICAgY2JEYXRhOyAgICAgDQoNCg0KDQogICAgUEJZVEUgICBwRGF0YTsgICAgICANCn0g
U0VSVklDRV9UUklHR0VSX1NQRUNJRklDX0RBVEFfSVRFTSwgKlBTRVJWSUNFX1RSSUdHRVJfU1BF
Q0lGSUNfREFUQV9JVEVNOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9UUklHR0VS
DQp7DQogICAgRFdPUkQgICAgICAgICAgICAgICAgICAgICAgIGR3VHJpZ2dlclR5cGU7ICAgICAg
ICAgICAgICANCiAgICBEV09SRCAgICAgICAgICAgICAgICAgICAgICAgZHdBY3Rpb247ICAgICAg
ICAgICAgICAgICAgIA0KICAgIEdVSUQgICAgKiAgICAgICAgICAgICAgICAgICBwVHJpZ2dlclN1
YnR5cGU7ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCg0KDQogICAgRFdPUkQgICAgICAg
ICAgICAgICAgICAgICAgIGNEYXRhSXRlbXM7ICAgICAgICAgICAgICAgICANCg0KDQoNCiAgICBQ
U0VSVklDRV9UUklHR0VSX1NQRUNJRklDX0RBVEFfSVRFTSAgcERhdGFJdGVtczsgICAgICAgDQp9
IFNFUlZJQ0VfVFJJR0dFUiwgKlBTRVJWSUNFX1RSSUdHRVI7DQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9TRVJWSUNFX1RSSUdHRVJfSU5GTyB7DQoNCg0KDQogICAgRFdPUkQgICAgICAgICAgICAg
ICAgICAgY1RyaWdnZXJzOyAgDQoNCg0KDQogICAgUFNFUlZJQ0VfVFJJR0dFUiAgICAgICAgcFRy
aWdnZXJzOyAgDQogICAgUEJZVEUgICAgICAgICAgICAgICAgICAgcFJlc2VydmVkOyAgDQp9IFNF
UlZJQ0VfVFJJR0dFUl9JTkZPLCAqUFNFUlZJQ0VfVFJJR0dFUl9JTkZPOw0KDQoNCg0KDQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgX1NFUlZJQ0VfUFJFRkVSUkVEX05PREVfSU5GTyB7DQogICAgVVNIT1JU
ICAgICAgICAgICAgICAgICAgdXNQcmVmZXJyZWROb2RlOyAgICANCiAgICBCT09MRUFOICAgICAg
ICAgICAgICAgICBmRGVsZXRlOyAgICAgICAgICAgIA0KfSBTRVJWSUNFX1BSRUZFUlJFRF9OT0RF
X0lORk8sICpMUFNFUlZJQ0VfUFJFRkVSUkVEX05PREVfSU5GTzsNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX1NFUlZJQ0VfVElNRUNIQU5HRV9JTkZPIHsNCiAgICBMQVJHRV9JTlRFR0VSICAgbGlO
ZXdUaW1lOyAgICAgIA0KICAgIExBUkdFX0lOVEVHRVIgICBsaU9sZFRpbWU7ICAgICAgDQp9IFNF
UlZJQ0VfVElNRUNIQU5HRV9JTkZPLCAqUFNFUlZJQ0VfVElNRUNIQU5HRV9JTkZPOw0KDQoNCg0K
DQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9MQVVOQ0hfUFJPVEVDVEVEX0lORk8gew0KICAgIERX
T1JEICAgICAgIGR3TGF1bmNoUHJvdGVjdGVkOyAgICAgDQp9IFNFUlZJQ0VfTEFVTkNIX1BST1RF
Q1RFRF9JTkZPLCAqUFNFUlZJQ0VfTEFVTkNIX1BST1RFQ1RFRF9JTkZPOw0KDQoNCg0KDQoNCnN0
cnVjdCBTQ19IQU5ETEVfX3tpbnQgdW51c2VkO307IHR5cGVkZWYgc3RydWN0IFNDX0hBTkRMRV9f
ICpTQ19IQU5ETEU7DQp0eXBlZGVmIFNDX0hBTkRMRSAgICpMUFNDX0hBTkRMRTsNCg0Kc3RydWN0
IFNFUlZJQ0VfU1RBVFVTX0hBTkRMRV9fe2ludCB1bnVzZWQ7fTsgdHlwZWRlZiBzdHJ1Y3QgU0VS
VklDRV9TVEFUVVNfSEFORExFX18gKlNFUlZJQ0VfU1RBVFVTX0hBTkRMRTsNCg0KDQoNCg0KDQp0
eXBlZGVmIGVudW0gX1NDX1NUQVRVU19UWVBFIHsNCiAgICBTQ19TVEFUVVNfUFJPQ0VTU19JTkZP
ICAgICAgPSAwDQp9IFNDX1NUQVRVU19UWVBFOw0KDQoNCg0KDQp0eXBlZGVmIGVudW0gX1NDX0VO
VU1fVFlQRSB7DQogICAgU0NfRU5VTV9QUk9DRVNTX0lORk8gICAgICAgID0gMA0KfSBTQ19FTlVN
X1RZUEU7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9TVEFUVVMgew0KICAg
IERXT1JEICAgZHdTZXJ2aWNlVHlwZTsNCiAgICBEV09SRCAgIGR3Q3VycmVudFN0YXRlOw0KICAg
IERXT1JEICAgZHdDb250cm9sc0FjY2VwdGVkOw0KICAgIERXT1JEICAgZHdXaW4zMkV4aXRDb2Rl
Ow0KICAgIERXT1JEICAgZHdTZXJ2aWNlU3BlY2lmaWNFeGl0Q29kZTsNCiAgICBEV09SRCAgIGR3
Q2hlY2tQb2ludDsNCiAgICBEV09SRCAgIGR3V2FpdEhpbnQ7DQp9IFNFUlZJQ0VfU1RBVFVTLCAq
TFBTRVJWSUNFX1NUQVRVUzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NFUlZJQ0VfU1RBVFVTX1BST0NF
U1Mgew0KICAgIERXT1JEICAgZHdTZXJ2aWNlVHlwZTsNCiAgICBEV09SRCAgIGR3Q3VycmVudFN0
YXRlOw0KICAgIERXT1JEICAgZHdDb250cm9sc0FjY2VwdGVkOw0KICAgIERXT1JEICAgZHdXaW4z
MkV4aXRDb2RlOw0KICAgIERXT1JEICAgZHdTZXJ2aWNlU3BlY2lmaWNFeGl0Q29kZTsNCiAgICBE
V09SRCAgIGR3Q2hlY2tQb2ludDsNCiAgICBEV09SRCAgIGR3V2FpdEhpbnQ7DQogICAgRFdPUkQg
ICBkd1Byb2Nlc3NJZDsNCiAgICBEV09SRCAgIGR3U2VydmljZUZsYWdzOw0KfSBTRVJWSUNFX1NU
QVRVU19QUk9DRVNTLCAqTFBTRVJWSUNFX1NUQVRVU19QUk9DRVNTOw0KDQoNCg0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX0VOVU1fU0VSVklDRV9TVEFUVVNBIHsNCiAgICBMUFNUUiAgICAgICAgICAg
ICBscFNlcnZpY2VOYW1lOw0KICAgIExQU1RSICAgICAgICAgICAgIGxwRGlzcGxheU5hbWU7DQog
ICAgU0VSVklDRV9TVEFUVVMgICAgU2VydmljZVN0YXR1czsNCn0gRU5VTV9TRVJWSUNFX1NUQVRV
U0EsICpMUEVOVU1fU0VSVklDRV9TVEFUVVNBOw0KdHlwZWRlZiBzdHJ1Y3QgX0VOVU1fU0VSVklD
RV9TVEFUVVNXIHsNCiAgICBMUFdTVFIgICAgICAgICAgICBscFNlcnZpY2VOYW1lOw0KICAgIExQ
V1NUUiAgICAgICAgICAgIGxwRGlzcGxheU5hbWU7DQogICAgU0VSVklDRV9TVEFUVVMgICAgU2Vy
dmljZVN0YXR1czsNCn0gRU5VTV9TRVJWSUNFX1NUQVRVU1csICpMUEVOVU1fU0VSVklDRV9TVEFU
VVNXOw0KDQp0eXBlZGVmIEVOVU1fU0VSVklDRV9TVEFUVVNXIEVOVU1fU0VSVklDRV9TVEFUVVM7
DQp0eXBlZGVmIExQRU5VTV9TRVJWSUNFX1NUQVRVU1cgTFBFTlVNX1NFUlZJQ0VfU1RBVFVTOw0K
DQoNCg0KI2xpbmUgNzY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCnR5cGVkZWYgc3RydWN0
IF9FTlVNX1NFUlZJQ0VfU1RBVFVTX1BST0NFU1NBIHsNCiAgICBMUFNUUiAgICAgICAgICAgICAg
ICAgICAgIGxwU2VydmljZU5hbWU7DQogICAgTFBTVFIgICAgICAgICAgICAgICAgICAgICBscERp
c3BsYXlOYW1lOw0KICAgIFNFUlZJQ0VfU1RBVFVTX1BST0NFU1MgICAgU2VydmljZVN0YXR1c1By
b2Nlc3M7DQp9IEVOVU1fU0VSVklDRV9TVEFUVVNfUFJPQ0VTU0EsICpMUEVOVU1fU0VSVklDRV9T
VEFUVVNfUFJPQ0VTU0E7DQp0eXBlZGVmIHN0cnVjdCBfRU5VTV9TRVJWSUNFX1NUQVRVU19QUk9D
RVNTVyB7DQogICAgTFBXU1RSICAgICAgICAgICAgICAgICAgICBscFNlcnZpY2VOYW1lOw0KICAg
IExQV1NUUiAgICAgICAgICAgICAgICAgICAgbHBEaXNwbGF5TmFtZTsNCiAgICBTRVJWSUNFX1NU
QVRVU19QUk9DRVNTICAgIFNlcnZpY2VTdGF0dXNQcm9jZXNzOw0KfSBFTlVNX1NFUlZJQ0VfU1RB
VFVTX1BST0NFU1NXLCAqTFBFTlVNX1NFUlZJQ0VfU1RBVFVTX1BST0NFU1NXOw0KDQp0eXBlZGVm
IEVOVU1fU0VSVklDRV9TVEFUVVNfUFJPQ0VTU1cgRU5VTV9TRVJWSUNFX1NUQVRVU19QUk9DRVNT
Ow0KdHlwZWRlZiBMUEVOVU1fU0VSVklDRV9TVEFUVVNfUFJPQ0VTU1cgTFBFTlVNX1NFUlZJQ0Vf
U1RBVFVTX1BST0NFU1M7DQoNCg0KDQojbGluZSA3ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCIN
Cg0KDQoNCg0KDQp0eXBlZGVmIExQVk9JRCAgU0NfTE9DSzsNCg0KdHlwZWRlZiBzdHJ1Y3QgX1FV
RVJZX1NFUlZJQ0VfTE9DS19TVEFUVVNBIHsNCiAgICBEV09SRCAgIGZJc0xvY2tlZDsNCiAgICBM
UFNUUiAgIGxwTG9ja093bmVyOw0KICAgIERXT1JEICAgZHdMb2NrRHVyYXRpb247DQp9IFFVRVJZ
X1NFUlZJQ0VfTE9DS19TVEFUVVNBLCAqTFBRVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTQTsNCnR5
cGVkZWYgc3RydWN0IF9RVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTVyB7DQogICAgRFdPUkQgICBm
SXNMb2NrZWQ7DQogICAgTFBXU1RSICBscExvY2tPd25lcjsNCiAgICBEV09SRCAgIGR3TG9ja0R1
cmF0aW9uOw0KfSBRVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTVywgKkxQUVVFUllfU0VSVklDRV9M
T0NLX1NUQVRVU1c7DQoNCnR5cGVkZWYgUVVFUllfU0VSVklDRV9MT0NLX1NUQVRVU1cgUVVFUllf
U0VSVklDRV9MT0NLX1NUQVRVUzsNCnR5cGVkZWYgTFBRVUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVT
VyBMUFFVRVJZX1NFUlZJQ0VfTE9DS19TVEFUVVM7DQoNCg0KDQojbGluZSA4MDkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFx3aW5zdmMuaCINCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1FVRVJZX1NFUlZJ
Q0VfQ09ORklHQSB7DQogICAgRFdPUkQgICBkd1NlcnZpY2VUeXBlOw0KICAgIERXT1JEICAgZHdT
dGFydFR5cGU7DQogICAgRFdPUkQgICBkd0Vycm9yQ29udHJvbDsNCiAgICBMUFNUUiAgIGxwQmlu
YXJ5UGF0aE5hbWU7DQogICAgTFBTVFIgICBscExvYWRPcmRlckdyb3VwOw0KICAgIERXT1JEICAg
ZHdUYWdJZDsNCiAgICBMUFNUUiAgIGxwRGVwZW5kZW5jaWVzOw0KICAgIExQU1RSICAgbHBTZXJ2
aWNlU3RhcnROYW1lOw0KICAgIExQU1RSICAgbHBEaXNwbGF5TmFtZTsNCn0gUVVFUllfU0VSVklD
RV9DT05GSUdBLCAqTFBRVUVSWV9TRVJWSUNFX0NPTkZJR0E7DQp0eXBlZGVmIHN0cnVjdCBfUVVF
UllfU0VSVklDRV9DT05GSUdXIHsNCiAgICBEV09SRCAgIGR3U2VydmljZVR5cGU7DQogICAgRFdP
UkQgICBkd1N0YXJ0VHlwZTsNCiAgICBEV09SRCAgIGR3RXJyb3JDb250cm9sOw0KICAgIExQV1NU
UiAgbHBCaW5hcnlQYXRoTmFtZTsNCiAgICBMUFdTVFIgIGxwTG9hZE9yZGVyR3JvdXA7DQogICAg
RFdPUkQgICBkd1RhZ0lkOw0KICAgIExQV1NUUiAgbHBEZXBlbmRlbmNpZXM7DQogICAgTFBXU1RS
ICBscFNlcnZpY2VTdGFydE5hbWU7DQogICAgTFBXU1RSICBscERpc3BsYXlOYW1lOw0KfSBRVUVS
WV9TRVJWSUNFX0NPTkZJR1csICpMUFFVRVJZX1NFUlZJQ0VfQ09ORklHVzsNCg0KdHlwZWRlZiBR
VUVSWV9TRVJWSUNFX0NPTkZJR1cgUVVFUllfU0VSVklDRV9DT05GSUc7DQp0eXBlZGVmIExQUVVF
UllfU0VSVklDRV9DT05GSUdXIExQUVVFUllfU0VSVklDRV9DT05GSUc7DQoNCg0KDQojbGluZSA4
NDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiB2b2lkIF9f
c3RkY2FsbCBTRVJWSUNFX01BSU5fRlVOQ1RJT05XICgNCiAgICBEV09SRCBkd051bVNlcnZpY2Vz
QXJncywNCiAgICBMUFdTVFIgKmxwU2VydmljZUFyZ1ZlY3RvcnMNCiAgICApOw0KDQp0eXBlZGVm
IHZvaWQgX19zdGRjYWxsIFNFUlZJQ0VfTUFJTl9GVU5DVElPTkEgKA0KICAgIERXT1JEIGR3TnVt
U2VydmljZXNBcmdzLA0KICAgIExQVFNUUiAqbHBTZXJ2aWNlQXJnVmVjdG9ycw0KICAgICk7DQoN
Cg0KDQoNCg0KI2xpbmUgODY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCnR5cGVkZWYgdm9p
ZCAoX19zdGRjYWxsICpMUFNFUlZJQ0VfTUFJTl9GVU5DVElPTlcpKA0KICAgIERXT1JEICAgZHdO
dW1TZXJ2aWNlc0FyZ3MsDQogICAgTFBXU1RSICAqbHBTZXJ2aWNlQXJnVmVjdG9ycw0KICAgICk7
DQoNCnR5cGVkZWYgdm9pZCAoX19zdGRjYWxsICpMUFNFUlZJQ0VfTUFJTl9GVU5DVElPTkEpKA0K
ICAgIERXT1JEICAgZHdOdW1TZXJ2aWNlc0FyZ3MsDQogICAgTFBTVFIgICAqbHBTZXJ2aWNlQXJn
VmVjdG9ycw0KICAgICk7DQoNCg0KDQoNCg0KI2xpbmUgODgzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Zj
LmgiDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9UQUJMRV9FTlRSWUEgew0K
ICAgIExQU1RSICAgICAgICAgICAgICAgICAgICAgICBscFNlcnZpY2VOYW1lOw0KICAgIExQU0VS
VklDRV9NQUlOX0ZVTkNUSU9OQSAgICBscFNlcnZpY2VQcm9jOw0KfVNFUlZJQ0VfVEFCTEVfRU5U
UllBLCAqTFBTRVJWSUNFX1RBQkxFX0VOVFJZQTsNCnR5cGVkZWYgc3RydWN0IF9TRVJWSUNFX1RB
QkxFX0VOVFJZVyB7DQogICAgTFBXU1RSICAgICAgICAgICAgICAgICAgICAgIGxwU2VydmljZU5h
bWU7DQogICAgTFBTRVJWSUNFX01BSU5fRlVOQ1RJT05XICAgIGxwU2VydmljZVByb2M7DQp9U0VS
VklDRV9UQUJMRV9FTlRSWVcsICpMUFNFUlZJQ0VfVEFCTEVfRU5UUllXOw0KDQp0eXBlZGVmIFNF
UlZJQ0VfVEFCTEVfRU5UUllXIFNFUlZJQ0VfVEFCTEVfRU5UUlk7DQp0eXBlZGVmIExQU0VSVklD
RV9UQUJMRV9FTlRSWVcgTFBTRVJWSUNFX1RBQkxFX0VOVFJZOw0KDQoNCg0KI2xpbmUgOTA0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCg0KDQoNCg0KdHlwZWRlZiB2b2lkIF9fc3RkY2FsbCBI
QU5ETEVSX0ZVTkNUSU9OICgNCiAgICBEV09SRCAgICBkd0NvbnRyb2wNCiAgICApOw0KDQp0eXBl
ZGVmIERXT1JEIF9fc3RkY2FsbCBIQU5ETEVSX0ZVTkNUSU9OX0VYICgNCiAgICBEV09SRCAgICBk
d0NvbnRyb2wsDQogICAgRFdPUkQgICAgZHdFdmVudFR5cGUsDQogICAgTFBWT0lEICAgbHBFdmVu
dERhdGEsDQogICAgTFBWT0lEICAgbHBDb250ZXh0DQogICAgKTsNCg0KdHlwZWRlZiB2b2lkIChf
X3N0ZGNhbGwgKkxQSEFORExFUl9GVU5DVElPTikoDQogICAgRFdPUkQgICAgZHdDb250cm9sDQog
ICAgKTsNCg0KdHlwZWRlZiBEV09SRCAoX19zdGRjYWxsICpMUEhBTkRMRVJfRlVOQ1RJT05fRVgp
KA0KICAgIERXT1JEICAgIGR3Q29udHJvbCwNCiAgICBEV09SRCAgICBkd0V2ZW50VHlwZSwNCiAg
ICBMUFZPSUQgICBscEV2ZW50RGF0YSwNCiAgICBMUFZPSUQgICBscENvbnRleHQNCiAgICApOw0K
DQoNCg0KDQp0eXBlZGVmDQp2b2lkDQooIF9fc3RkY2FsbCAqIFBGTl9TQ19OT1RJRllfQ0FMTEJB
Q0sgKSAoDQogICAgICBQVk9JRCBwUGFyYW1ldGVyDQogICAgKTsNCg0KDQoNCg0KdHlwZWRlZiBz
dHJ1Y3QgX1NFUlZJQ0VfTk9USUZZXzEgew0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3
VmVyc2lvbjsNCiAgICBQRk5fU0NfTk9USUZZX0NBTExCQUNLICBwZm5Ob3RpZnlDYWxsYmFjazsN
CiAgICBQVk9JRCAgICAgICAgICAgICAgICAgICBwQ29udGV4dDsNCiAgICBEV09SRCAgICAgICAg
ICAgICAgICAgICBkd05vdGlmaWNhdGlvblN0YXR1czsNCiAgICBTRVJWSUNFX1NUQVRVU19QUk9D
RVNTICBTZXJ2aWNlU3RhdHVzOw0KfSBTRVJWSUNFX05PVElGWV8xLCAqUFNFUlZJQ0VfTk9USUZZ
XzE7DQoNCnR5cGVkZWYgc3RydWN0IF9TRVJWSUNFX05PVElGWV8yQSB7DQogICAgRFdPUkQgICAg
ICAgICAgICAgICAgICAgZHdWZXJzaW9uOw0KICAgIFBGTl9TQ19OT1RJRllfQ0FMTEJBQ0sgIHBm
bk5vdGlmeUNhbGxiYWNrOw0KICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIHBDb250ZXh0Ow0K
ICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3Tm90aWZpY2F0aW9uU3RhdHVzOw0KICAgIFNF
UlZJQ0VfU1RBVFVTX1BST0NFU1MgIFNlcnZpY2VTdGF0dXM7DQogICAgRFdPUkQgICAgICAgICAg
ICAgICAgICAgZHdOb3RpZmljYXRpb25UcmlnZ2VyZWQ7DQogICAgTFBTVFIgICAgICAgICAgICAg
ICAgICAgcHN6U2VydmljZU5hbWVzOw0KfSBTRVJWSUNFX05PVElGWV8yQSwgKlBTRVJWSUNFX05P
VElGWV8yQTsNCnR5cGVkZWYgc3RydWN0IF9TRVJWSUNFX05PVElGWV8yVyB7DQogICAgRFdPUkQg
ICAgICAgICAgICAgICAgICAgZHdWZXJzaW9uOw0KICAgIFBGTl9TQ19OT1RJRllfQ0FMTEJBQ0sg
IHBmbk5vdGlmeUNhbGxiYWNrOw0KICAgIFBWT0lEICAgICAgICAgICAgICAgICAgIHBDb250ZXh0
Ow0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3Tm90aWZpY2F0aW9uU3RhdHVzOw0KICAg
IFNFUlZJQ0VfU1RBVFVTX1BST0NFU1MgIFNlcnZpY2VTdGF0dXM7DQogICAgRFdPUkQgICAgICAg
ICAgICAgICAgICAgZHdOb3RpZmljYXRpb25UcmlnZ2VyZWQ7DQogICAgTFBXU1RSICAgICAgICAg
ICAgICAgICAgcHN6U2VydmljZU5hbWVzOw0KfSBTRVJWSUNFX05PVElGWV8yVywgKlBTRVJWSUNF
X05PVElGWV8yVzsNCg0KdHlwZWRlZiBTRVJWSUNFX05PVElGWV8yVyBTRVJWSUNFX05PVElGWV8y
Ow0KdHlwZWRlZiBQU0VSVklDRV9OT1RJRllfMlcgUFNFUlZJQ0VfTk9USUZZXzI7DQoNCg0KDQoj
bGluZSA5NzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KdHlwZWRlZiBTRVJWSUNFX05PVElG
WV8yQSBTRVJWSUNFX05PVElGWUEsICpQU0VSVklDRV9OT1RJRllBOw0KdHlwZWRlZiBTRVJWSUNF
X05PVElGWV8yVyBTRVJWSUNFX05PVElGWVcsICpQU0VSVklDRV9OT1RJRllXOw0KDQp0eXBlZGVm
IFNFUlZJQ0VfTk9USUZZVyBTRVJWSUNFX05PVElGWTsNCnR5cGVkZWYgUFNFUlZJQ0VfTk9USUZZ
VyBQU0VSVklDRV9OT1RJRlk7DQoNCg0KDQojbGluZSA5ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMu
aCINCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX1NFUlZJQ0VfQ09OVFJPTF9TVEFUVVNfUkVBU09O
X1BBUkFNU0Egew0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3UmVhc29uOw0KICAgIExQ
U1RSICAgICAgICAgICAgICAgICAgIHBzekNvbW1lbnQ7DQogICAgU0VSVklDRV9TVEFUVVNfUFJP
Q0VTUyAgU2VydmljZVN0YXR1czsNCn0gU0VSVklDRV9DT05UUk9MX1NUQVRVU19SRUFTT05fUEFS
QU1TQSwgKlBTRVJWSUNFX0NPTlRST0xfU1RBVFVTX1JFQVNPTl9QQVJBTVNBOw0KDQoNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX1NFUlZJQ0VfQ09OVFJPTF9TVEFUVVNfUkVBU09OX1BBUkFNU1cgew0KICAg
IERXT1JEICAgICAgICAgICAgICAgICAgIGR3UmVhc29uOw0KICAgIExQV1NUUiAgICAgICAgICAg
ICAgICAgIHBzekNvbW1lbnQ7DQogICAgU0VSVklDRV9TVEFUVVNfUFJPQ0VTUyAgU2VydmljZVN0
YXR1czsNCn0gU0VSVklDRV9DT05UUk9MX1NUQVRVU19SRUFTT05fUEFSQU1TVywgKlBTRVJWSUNF
X0NPTlRST0xfU1RBVFVTX1JFQVNPTl9QQVJBTVNXOw0KDQp0eXBlZGVmIFNFUlZJQ0VfQ09OVFJP
TF9TVEFUVVNfUkVBU09OX1BBUkFNU1cgU0VSVklDRV9DT05UUk9MX1NUQVRVU19SRUFTT05fUEFS
QU1TOw0KdHlwZWRlZiBQU0VSVklDRV9DT05UUk9MX1NUQVRVU19SRUFTT05fUEFSQU1TVyBQU0VS
VklDRV9DT05UUk9MX1NUQVRVU19SRUFTT05fUEFSQU1TOw0KDQoNCg0KI2xpbmUgMTAxMCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfU0VSVklDRV9TVEFS
VF9SRUFTT04gew0KICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3UmVhc29uOw0KfSBTRVJW
SUNFX1NUQVJUX1JFQVNPTiwgKlBTRVJWSUNFX1NUQVJUX1JFQVNPTjsNCg0KDQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hhbmdlU2VydmljZUNvbmZpZ0Eo
DQogICAgICAgICAgICAgU0NfSEFORExFICAgIGhTZXJ2aWNlLA0KICAgICAgICAgICAgIERXT1JE
ICAgICAgICBkd1NlcnZpY2VUeXBlLA0KICAgICAgICAgICAgIERXT1JEICAgICAgICBkd1N0YXJ0
VHlwZSwNCiAgICAgICAgICAgICBEV09SRCAgICAgICAgZHdFcnJvckNvbnRyb2wsDQogICAgICAg
ICBMUENTVFIgICAgIGxwQmluYXJ5UGF0aE5hbWUsDQogICAgICAgICBMUENTVFIgICAgIGxwTG9h
ZE9yZGVyR3JvdXAsDQogICAgICAgIExQRFdPUkQgICAgICBscGR3VGFnSWQsDQogICAgICAgICBM
UENTVFIgICAgIGxwRGVwZW5kZW5jaWVzLA0KICAgICAgICAgTFBDU1RSICAgICBscFNlcnZpY2VT
dGFydE5hbWUsDQogICAgICAgICBMUENTVFIgICAgIGxwUGFzc3dvcmQsDQogICAgICAgICBMUENT
VFIgICAgIGxwRGlzcGxheU5hbWUNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNCkNoYW5nZVNlcnZpY2VDb25maWdXKA0KICAgICAgICAgICAgIFNDX0hBTkRM
RSAgICBoU2VydmljZSwNCiAgICAgICAgICAgICBEV09SRCAgICAgICAgZHdTZXJ2aWNlVHlwZSwN
CiAgICAgICAgICAgICBEV09SRCAgICAgICAgZHdTdGFydFR5cGUsDQogICAgICAgICAgICAgRFdP
UkQgICAgICAgIGR3RXJyb3JDb250cm9sLA0KICAgICAgICAgTFBDV1NUUiAgICAgbHBCaW5hcnlQ
YXRoTmFtZSwNCiAgICAgICAgIExQQ1dTVFIgICAgIGxwTG9hZE9yZGVyR3JvdXAsDQogICAgICAg
IExQRFdPUkQgICAgICBscGR3VGFnSWQsDQogICAgICAgICBMUENXU1RSICAgICBscERlcGVuZGVu
Y2llcywNCiAgICAgICAgIExQQ1dTVFIgICAgIGxwU2VydmljZVN0YXJ0TmFtZSwNCiAgICAgICAg
IExQQ1dTVFIgICAgIGxwUGFzc3dvcmQsDQogICAgICAgICBMUENXU1RSICAgICBscERpc3BsYXlO
YW1lDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTA1OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KQ2hhbmdlU2VydmljZUNv
bmZpZzJBKA0KICAgICAgICAgICAgIFNDX0hBTkRMRSAgICBoU2VydmljZSwNCiAgICAgICAgICAg
ICBEV09SRCAgICAgICAgZHdJbmZvTGV2ZWwsDQogICAgICAgICBMUFZPSUQgICAgICAgbHBJbmZv
DQogICAgKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDaGFuZ2VT
ZXJ2aWNlQ29uZmlnMlcoDQogICAgICAgICAgICAgU0NfSEFORExFICAgIGhTZXJ2aWNlLA0KICAg
ICAgICAgICAgIERXT1JEICAgICAgICBkd0luZm9MZXZlbCwNCiAgICAgICAgIExQVk9JRCAgICAg
ICBscEluZm8NCiAgICApOw0KDQoNCg0KDQojbGluZSAxMDgxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Zj
LmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpDbG9zZVNlcnZp
Y2VIYW5kbGUoDQogICAgICAgICAgICAgU0NfSEFORExFICAgaFNDT2JqZWN0DQogICAgKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNvbnRyb2xTZXJ2aWNlKA0K
ICAgICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgaFNlcnZpY2UsDQogICAgICAgICAgICAg
RFdPUkQgICAgICAgICAgICAgICBkd0NvbnRyb2wsDQogICAgICAgICAgICBMUFNFUlZJQ0VfU1RB
VFVTICAgIGxwU2VydmljZVN0YXR1cw0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KU0NfSEFORExFDQpfX3N0ZGNhbGwNCkNyZWF0ZVNlcnZpY2VBKA0KICAgICAgICAgICAgIFND
X0hBTkRMRSAgICBoU0NNYW5hZ2VyLA0KICAgICAgICAgICAgIExQQ1NUUiAgICAgbHBTZXJ2aWNl
TmFtZSwNCiAgICAgICAgIExQQ1NUUiAgICAgbHBEaXNwbGF5TmFtZSwNCiAgICAgICAgICAgICBE
V09SRCAgICAgICAgZHdEZXNpcmVkQWNjZXNzLA0KICAgICAgICAgICAgIERXT1JEICAgICAgICBk
d1NlcnZpY2VUeXBlLA0KICAgICAgICAgICAgIERXT1JEICAgICAgICBkd1N0YXJ0VHlwZSwNCiAg
ICAgICAgICAgICBEV09SRCAgICAgICAgZHdFcnJvckNvbnRyb2wsDQogICAgICAgICBMUENTVFIg
ICAgIGxwQmluYXJ5UGF0aE5hbWUsDQogICAgICAgICBMUENTVFIgICAgIGxwTG9hZE9yZGVyR3Jv
dXAsDQogICAgICAgIExQRFdPUkQgICAgICBscGR3VGFnSWQsDQogICAgICAgICBMUENTVFIgICAg
IGxwRGVwZW5kZW5jaWVzLA0KICAgICAgICAgTFBDU1RSICAgICBscFNlcnZpY2VTdGFydE5hbWUs
DQogICAgICAgICBMUENTVFIgICAgIGxwUGFzc3dvcmQNCiAgICApOw0KIA0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpTQ19IQU5ETEUNCl9fc3RkY2FsbA0KQ3JlYXRlU2VydmljZVcoDQogICAgICAg
ICAgICAgU0NfSEFORExFICAgIGhTQ01hbmFnZXIsDQogICAgICAgICAgICAgTFBDV1NUUiAgICAg
bHBTZXJ2aWNlTmFtZSwNCiAgICAgICAgIExQQ1dTVFIgICAgIGxwRGlzcGxheU5hbWUsDQogICAg
ICAgICAgICAgRFdPUkQgICAgICAgIGR3RGVzaXJlZEFjY2VzcywNCiAgICAgICAgICAgICBEV09S
RCAgICAgICAgZHdTZXJ2aWNlVHlwZSwNCiAgICAgICAgICAgICBEV09SRCAgICAgICAgZHdTdGFy
dFR5cGUsDQogICAgICAgICAgICAgRFdPUkQgICAgICAgIGR3RXJyb3JDb250cm9sLA0KICAgICAg
ICAgTFBDV1NUUiAgICAgbHBCaW5hcnlQYXRoTmFtZSwNCiAgICAgICAgIExQQ1dTVFIgICAgIGxw
TG9hZE9yZGVyR3JvdXAsDQogICAgICAgIExQRFdPUkQgICAgICBscGR3VGFnSWQsDQogICAgICAg
ICBMUENXU1RSICAgICBscERlcGVuZGVuY2llcywNCiAgICAgICAgIExQQ1dTVFIgICAgIGxwU2Vy
dmljZVN0YXJ0TmFtZSwNCiAgICAgICAgIExQQ1dTVFIgICAgIGxwUGFzc3dvcmQNCiAgICApOw0K
DQoNCg0KDQojbGluZSAxMTQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpEZWxldGVTZXJ2aWNlKA0KICAgICAgICAgICAg
IFNDX0hBTkRMRSAgIGhTZXJ2aWNlDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNCkVudW1EZXBlbmRlbnRTZXJ2aWNlc0EoDQogICAgICAgICAgICAg
ICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAgIGhTZXJ2aWNlLA0KICAgICAgICAgICAgICAgICBE
V09SRCAgICAgICAgICAgICAgICAgICBkd1NlcnZpY2VTdGF0ZSwNCiAgICAgDQogICAgICAgICAg
ICAgICAgICAgIExQRU5VTV9TRVJWSUNFX1NUQVRVU0EgIGxwU2VydmljZXMsDQogICAgICAgICAg
ICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGNiQnVmU2l6ZSwNCiAgICAgICAgICAgICAg
ICBMUERXT1JEICAgICAgICAgICAgICAgICBwY2JCeXRlc05lZWRlZCwNCiAgICAgICAgICAgICAg
ICBMUERXT1JEICAgICAgICAgICAgICAgICBscFNlcnZpY2VzUmV0dXJuZWQNCiAgICApOw0KIA0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1EZXBlbmRlbnRTZXJ2
aWNlc1coDQogICAgICAgICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAgIGhTZXJ2aWNl
LA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBkd1NlcnZpY2VTdGF0
ZSwNCiAgICAgDQogICAgICAgICAgICAgICAgICAgIExQRU5VTV9TRVJWSUNFX1NUQVRVU1cgIGxw
U2VydmljZXMsDQogICAgICAgICAgICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGNiQnVm
U2l6ZSwNCiAgICAgICAgICAgICAgICBMUERXT1JEICAgICAgICAgICAgICAgICBwY2JCeXRlc05l
ZWRlZCwNCiAgICAgICAgICAgICAgICBMUERXT1JEICAgICAgICAgICAgICAgICBscFNlcnZpY2Vz
UmV0dXJuZWQNCiAgICApOw0KDQoNCg0KDQojbGluZSAxMTgwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3Zj
LmgiDQoNCiNsaW5lIDExODIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCiNwcmFnbWEgZW5kcmVn
aW9uDQoNCiNwcmFnbWEgcmVnaW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KIA0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1TZXJ2aWNlc1N0YXR1c0EoDQogICAgICAg
ICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAgIGhTQ01hbmFnZXIsDQogICAgICAgICAg
ICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3U2VydmljZVR5cGUsDQogICAgICAgICAg
ICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3U2VydmljZVN0YXRlLA0KICAgICANCiAg
ICAgICAgICAgICAgICAgICAgTFBFTlVNX1NFUlZJQ0VfU1RBVFVTQSAgbHBTZXJ2aWNlcywNCiAg
ICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgY2JCdWZTaXplLA0KICAgICAg
ICAgICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAgIHBjYkJ5dGVzTmVlZGVkLA0KICAgICAg
ICAgICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAgIGxwU2VydmljZXNSZXR1cm5lZCwNCiAg
ICAgICAgICBMUERXT1JEICAgICAgICAgICAgICAgICBscFJlc3VtZUhhbmRsZQ0KICAgICk7DQog
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KRW51bVNlcnZpY2VzU3Rh
dHVzVygNCiAgICAgICAgICAgICAgICAgU0NfSEFORExFICAgICAgICAgICAgICAgaFNDTWFuYWdl
ciwNCiAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdTZXJ2aWNlVHlw
ZSwNCiAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdTZXJ2aWNlU3Rh
dGUsDQogICAgIA0KICAgICAgICAgICAgICAgICAgICBMUEVOVU1fU0VSVklDRV9TVEFUVVNXICBs
cFNlcnZpY2VzLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBjYkJ1
ZlNpemUsDQogICAgICAgICAgICAgICAgTFBEV09SRCAgICAgICAgICAgICAgICAgcGNiQnl0ZXNO
ZWVkZWQsDQogICAgICAgICAgICAgICAgTFBEV09SRCAgICAgICAgICAgICAgICAgbHBTZXJ2aWNl
c1JldHVybmVkLA0KICAgICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAgIGxwUmVzdW1lSGFu
ZGxlDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTIyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0K
DQojbGluZSAxMjI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxc
aW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0K
DQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseSBvciBPbmVDb3JlIEZhbWlseQ0KDQoNCiAN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpFbnVtU2VydmljZXNTdGF0
dXNFeEEoDQogICAgICAgICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAgIGhTQ01hbmFn
ZXIsDQogICAgICAgICAgICAgICAgIFNDX0VOVU1fVFlQRSAgICAgICAgICAgIEluZm9MZXZlbCwN
CiAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdTZXJ2aWNlVHlwZSwN
CiAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdTZXJ2aWNlU3RhdGUs
DQogICAgIA0KICAgICAgICAgICAgICAgICAgICBMUEJZVEUgICAgICAgICAgICAgICAgICBscFNl
cnZpY2VzLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBjYkJ1ZlNp
emUsDQogICAgICAgICAgICAgICAgTFBEV09SRCAgICAgICAgICAgICAgICAgcGNiQnl0ZXNOZWVk
ZWQsDQogICAgICAgICAgICAgICAgTFBEV09SRCAgICAgICAgICAgICAgICAgbHBTZXJ2aWNlc1Jl
dHVybmVkLA0KICAgICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAgIGxwUmVzdW1lSGFuZGxl
LA0KICAgICAgICAgICAgIExQQ1NUUiAgICAgICAgICAgICAgICBwc3pHcm91cE5hbWUNCiAgICAp
Ow0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkVudW1TZXJ2aWNl
c1N0YXR1c0V4VygNCiAgICAgICAgICAgICAgICAgU0NfSEFORExFICAgICAgICAgICAgICAgaFND
TWFuYWdlciwNCiAgICAgICAgICAgICAgICAgU0NfRU5VTV9UWVBFICAgICAgICAgICAgSW5mb0xl
dmVsLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBkd1NlcnZpY2VU
eXBlLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBkd1NlcnZpY2VT
dGF0ZSwNCiAgICAgDQogICAgICAgICAgICAgICAgICAgIExQQllURSAgICAgICAgICAgICAgICAg
IGxwU2VydmljZXMsDQogICAgICAgICAgICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGNi
QnVmU2l6ZSwNCiAgICAgICAgICAgICAgICBMUERXT1JEICAgICAgICAgICAgICAgICBwY2JCeXRl
c05lZWRlZCwNCiAgICAgICAgICAgICAgICBMUERXT1JEICAgICAgICAgICAgICAgICBscFNlcnZp
Y2VzUmV0dXJuZWQsDQogICAgICAgICAgTFBEV09SRCAgICAgICAgICAgICAgICAgbHBSZXN1bWVI
YW5kbGUsDQogICAgICAgICAgICAgTFBDV1NUUiAgICAgICAgICAgICAgICBwc3pHcm91cE5hbWUN
CiAgICApOw0KDQoNCg0KDQojbGluZSAxMjY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCiAN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRTZXJ2aWNlS2V5TmFt
ZUEoDQogICAgICAgICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAgIGhTQ01hbmFnZXIs
DQogICAgICAgICAgICAgICAgIExQQ1NUUiAgICAgICAgICAgICAgICBscERpc3BsYXlOYW1lLA0K
ICAgICANCiAgICAgICAgICAgICAgICAgICAgTFBTVFIgICAgICAgICAgICAgICAgIGxwU2Vydmlj
ZU5hbWUsDQogICAgICAgICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAgIGxwY2NoQnVmZmVy
DQogICAgKTsNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpHZXRT
ZXJ2aWNlS2V5TmFtZVcoDQogICAgICAgICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAg
IGhTQ01hbmFnZXIsDQogICAgICAgICAgICAgICAgIExQQ1dTVFIgICAgICAgICAgICAgICAgbHBE
aXNwbGF5TmFtZSwNCiAgICAgDQogICAgICAgICAgICAgICAgICAgIExQV1NUUiAgICAgICAgICAg
ICAgICAgbHBTZXJ2aWNlTmFtZSwNCiAgICAgICAgICAgICAgTFBEV09SRCAgICAgICAgICAgICAg
ICAgbHBjY2hCdWZmZXINCiAgICApOw0KDQoNCg0KDQojbGluZSAxMjk2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luc3ZjLmgiDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpH
ZXRTZXJ2aWNlRGlzcGxheU5hbWVBKA0KICAgICAgICAgICAgICAgICBTQ19IQU5ETEUgICAgICAg
ICAgICAgICBoU0NNYW5hZ2VyLA0KICAgICAgICAgICAgICAgICBMUENTVFIgICAgICAgICAgICAg
ICAgbHBTZXJ2aWNlTmFtZSwNCiAgICAgDQogICAgICAgICAgICAgICAgICAgIExQU1RSICAgICAg
ICAgICAgICAgICBscERpc3BsYXlOYW1lLA0KICAgICAgICAgICAgICBMUERXT1JEICAgICAgICAg
ICAgICAgICBscGNjaEJ1ZmZlcg0KICAgICk7DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KR2V0U2VydmljZURpc3BsYXlOYW1lVygNCiAgICAgICAgICAgICAgICAg
U0NfSEFORExFICAgICAgICAgICAgICAgaFNDTWFuYWdlciwNCiAgICAgICAgICAgICAgICAgTFBD
V1NUUiAgICAgICAgICAgICAgICBscFNlcnZpY2VOYW1lLA0KICAgICANCiAgICAgICAgICAgICAg
ICAgICAgTFBXU1RSICAgICAgICAgICAgICAgICBscERpc3BsYXlOYW1lLA0KICAgICAgICAgICAg
ICBMUERXT1JEICAgICAgICAgICAgICAgICBscGNjaEJ1ZmZlcg0KICAgICk7DQoNCg0KDQoNCiNs
aW5lIDEzMjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KI2xpbmUgMTMyNiAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxc
dW1cXHdpbnN2Yy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClNDX0xPQ0sNCl9fc3RkY2FsbA0K
TG9ja1NlcnZpY2VEYXRhYmFzZSgNCiAgICAgICAgICAgICAgICAgU0NfSEFORExFICAgICAgICAg
ICAgICAgaFNDTWFuYWdlcg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0K
X19zdGRjYWxsDQpOb3RpZnlCb290Q29uZmlnU3RhdHVzKA0KICAgICAgICAgICAgICAgICBCT09M
ICAgICAgICAgICAgICAgICAgICBCb290QWNjZXB0YWJsZQ0KICAgICk7DQoNCiNsaW5lIDEzNDYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4w
LjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNwcmFnbWEgcmVn
aW9uIERlc2t0b3AgRmFtaWx5IG9yIE9uZUNvcmUgRmFtaWx5DQoNCg0KIA0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpTQ19IQU5ETEUNCl9fc3RkY2FsbA0KT3BlblNDTWFuYWdlckEoDQogICAgICAg
ICAgICAgTFBDU1RSICAgICAgICAgICAgICAgIGxwTWFjaGluZU5hbWUsDQogICAgICAgICAgICAg
TFBDU1RSICAgICAgICAgICAgICAgIGxwRGF0YWJhc2VOYW1lLA0KICAgICAgICAgICAgICAgICBE
V09SRCAgICAgICAgICAgICAgICAgICBkd0Rlc2lyZWRBY2Nlc3MNCiAgICApOw0KIA0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpTQ19IQU5ETEUNCl9fc3RkY2FsbA0KT3BlblNDTWFuYWdlclcoDQog
ICAgICAgICAgICAgTFBDV1NUUiAgICAgICAgICAgICAgICBscE1hY2hpbmVOYW1lLA0KICAgICAg
ICAgICAgIExQQ1dTVFIgICAgICAgICAgICAgICAgbHBEYXRhYmFzZU5hbWUsDQogICAgICAgICAg
ICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3RGVzaXJlZEFjY2Vzcw0KICAgICk7DQoN
Cg0KDQoNCiNsaW5lIDEzNzQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KIA0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpTQ19IQU5ETEUNCl9fc3RkY2FsbA0KT3BlblNlcnZpY2VBKA0KICAgICAg
ICAgICAgICAgICBTQ19IQU5ETEUgICAgICAgICAgICAgICBoU0NNYW5hZ2VyLA0KICAgICAgICAg
ICAgICAgICBMUENTVFIgICAgICAgICAgICAgICAgbHBTZXJ2aWNlTmFtZSwNCiAgICAgICAgICAg
ICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdEZXNpcmVkQWNjZXNzDQogICAgKTsNCiAN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KU0NfSEFORExFDQpfX3N0ZGNhbGwNCk9wZW5TZXJ2aWNl
VygNCiAgICAgICAgICAgICAgICAgU0NfSEFORExFICAgICAgICAgICAgICAgaFNDTWFuYWdlciwN
CiAgICAgICAgICAgICAgICAgTFBDV1NUUiAgICAgICAgICAgICAgICBscFNlcnZpY2VOYW1lLA0K
ICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBkd0Rlc2lyZWRBY2Nlc3MN
CiAgICApOw0KDQoNCg0KDQojbGluZSAxMzk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCiAN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWVyeVNlcnZpY2VDb25m
aWdBKA0KICAgICAgICAgICAgICAgICBTQ19IQU5ETEUgICAgICAgICAgICAgICBoU2VydmljZSwN
CiAgICAgDQogICAgICAgICAgICAgICAgICAgIExQUVVFUllfU0VSVklDRV9DT05GSUdBIGxwU2Vy
dmljZUNvbmZpZywNCiAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgY2JC
dWZTaXplLA0KICAgICAgICAgICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAgIHBjYkJ5dGVz
TmVlZGVkDQogICAgKTsNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxs
DQpRdWVyeVNlcnZpY2VDb25maWdXKA0KICAgICAgICAgICAgICAgICBTQ19IQU5ETEUgICAgICAg
ICAgICAgICBoU2VydmljZSwNCiAgICAgDQogICAgICAgICAgICAgICAgICAgIExQUVVFUllfU0VS
VklDRV9DT05GSUdXIGxwU2VydmljZUNvbmZpZywNCiAgICAgICAgICAgICAgICAgRFdPUkQgICAg
ICAgICAgICAgICAgICAgY2JCdWZTaXplLA0KICAgICAgICAgICAgICAgIExQRFdPUkQgICAgICAg
ICAgICAgICAgIHBjYkJ5dGVzTmVlZGVkDQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTQyNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoNCiNsaW5lIDE0MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMu
aCINCg0KI2xpbmUgMTQzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQojbGluZSAxNDM0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luc3ZjLmgiDQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9f
c3RkY2FsbA0KUXVlcnlTZXJ2aWNlQ29uZmlnMkEoDQogICAgICAgICAgICAgICAgIFNDX0hBTkRM
RSAgICAgICAgICAgICAgIGhTZXJ2aWNlLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAg
ICAgICAgICAgICBkd0luZm9MZXZlbCwNCiAgICAgDQogICAgICAgICAgICAgICAgICAgIExQQllU
RSAgICAgICAgICAgICAgICAgIGxwQnVmZmVyLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAg
ICAgICAgICAgICAgICBjYkJ1ZlNpemUsDQogICAgICAgICAgICAgICAgTFBEV09SRCAgICAgICAg
ICAgICAgICAgcGNiQnl0ZXNOZWVkZWQNCiAgICApOw0KDQojbGluZSAxNDQ4ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcd2luc3ZjLmgiDQoNCiNsaW5lIDE0NTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KI2xp
bmUgMTQ1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCT09MDQpfX3N0ZGNhbGwNClF1ZXJ5U2VydmljZUNvbmZpZzJXKA0KICAgICAgICAgICAgICAg
ICBTQ19IQU5ETEUgICAgICAgICAgICAgICBoU2VydmljZSwNCiAgICAgICAgICAgICAgICAgRFdP
UkQgICAgICAgICAgICAgICAgICAgZHdJbmZvTGV2ZWwsDQogICAgIA0KICAgICAgICAgICAgICAg
ICAgICBMUEJZVEUgICAgICAgICAgICAgICAgICBscEJ1ZmZlciwNCiAgICAgICAgICAgICAgICAg
RFdPUkQgICAgICAgICAgICAgICAgICAgY2JCdWZTaXplLA0KICAgICAgICAgICAgICAgIExQRFdP
UkQgICAgICAgICAgICAgICAgIHBjYkJ5dGVzTmVlZGVkDQogICAgKTsNCg0KDQoNCg0KI2xpbmUg
MTQ3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQojbGluZSAxNDcyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luc3ZjLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZh
bWlseQ0KDQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpRdWVy
eVNlcnZpY2VMb2NrU3RhdHVzQSgNCiAgICAgICAgICAgICAgICAgU0NfSEFORExFICAgICAgICAg
ICAgICAgICAgICAgICBoU0NNYW5hZ2VyLA0KICAgICANCiAgICAgICAgICAgICAgICAgICAgTFBR
VUVSWV9TRVJWSUNFX0xPQ0tfU1RBVFVTQSAgICBscExvY2tTdGF0dXMsDQogICAgICAgICAgICAg
ICAgIERXT1JEICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JCdWZTaXplLA0KICAgICAgICAg
ICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAgICAgICAgICAgcGNiQnl0ZXNOZWVkZWQNCiAg
ICApOw0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClF1ZXJ5U2Vy
dmljZUxvY2tTdGF0dXNXKA0KICAgICAgICAgICAgICAgICBTQ19IQU5ETEUgICAgICAgICAgICAg
ICAgICAgICAgIGhTQ01hbmFnZXIsDQogICAgIA0KICAgICAgICAgICAgICAgICAgICBMUFFVRVJZ
X1NFUlZJQ0VfTE9DS19TVEFUVVNXICAgIGxwTG9ja1N0YXR1cywNCiAgICAgICAgICAgICAgICAg
RFdPUkQgICAgICAgICAgICAgICAgICAgICAgICAgICBjYkJ1ZlNpemUsDQogICAgICAgICAgICAg
ICAgTFBEV09SRCAgICAgICAgICAgICAgICAgICAgICAgICBwY2JCeXRlc05lZWRlZA0KICAgICk7
DQoNCg0KDQoNCiNsaW5lIDE1MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KI2xpbmUgMTUw
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSBy
ZWdpb24gRGVza3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQogDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KUXVlcnlTZXJ2aWNlT2JqZWN0U2VjdXJpdHko
DQogICAgICAgICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAgIGhTZXJ2aWNlLA0KICAg
ICAgICAgICAgICAgICBTRUNVUklUWV9JTkZPUk1BVElPTiAgICBkd1NlY3VyaXR5SW5mb3JtYXRp
b24sDQogICAgIA0KICAgICAgICAgICAgICAgICAgICBQU0VDVVJJVFlfREVTQ1JJUFRPUiAgICBs
cFNlY3VyaXR5RGVzY3JpcHRvciwNCiAgICAgICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAg
ICAgICAgY2JCdWZTaXplLA0KICAgICAgICAgICAgICAgIExQRFdPUkQgICAgICAgICAgICAgICAg
IHBjYkJ5dGVzTmVlZGVkDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09M
DQpfX3N0ZGNhbGwNClF1ZXJ5U2VydmljZVN0YXR1cygNCiAgICAgICAgICAgICAgICAgU0NfSEFO
RExFICAgICAgICAgICBoU2VydmljZSwNCiAgICAgICAgICAgICAgICBMUFNFUlZJQ0VfU1RBVFVT
ICAgIGxwU2VydmljZVN0YXR1cw0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpRdWVyeVNlcnZpY2VTdGF0dXNFeCgNCiAgICAgICAgICAgICAgICAg
U0NfSEFORExFICAgICAgICAgICBoU2VydmljZSwNCiAgICAgICAgICAgICAgICAgU0NfU1RBVFVT
X1RZUEUgICAgICBJbmZvTGV2ZWwsDQogICAgIA0KICAgICAgICAgICAgICAgICAgICBMUEJZVEUg
ICAgICAgICAgICAgIGxwQnVmZmVyLA0KICAgICAgICAgICAgICAgICBEV09SRCAgICAgICAgICAg
ICAgIGNiQnVmU2l6ZSwNCiAgICAgICAgICAgICAgICBMUERXT1JEICAgICAgICAgICAgIHBjYkJ5
dGVzTmVlZGVkDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpTRVJWSUNFX1NU
QVRVU19IQU5ETEUNCl9fc3RkY2FsbA0KUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJBKA0KICAg
ICAgICAgTFBDU1RSICAgICAgICAgICAgICAgICAgICBscFNlcnZpY2VOYW1lLA0KICAgICAgICAg
DQogICAgICAgICAgICBMUEhBTkRMRVJfRlVOQ1RJT04gICAgICAgICAgbHBIYW5kbGVyUHJvYw0K
ICAgICk7DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNClNFUlZJQ0VfU1RBVFVTX0hBTkRMRQ0K
X19zdGRjYWxsDQpSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlclcoDQogICAgICAgICBMUENXU1RS
ICAgICAgICAgICAgICAgICAgICBscFNlcnZpY2VOYW1lLA0KICAgICAgICAgDQogICAgICAgICAg
ICBMUEhBTkRMRVJfRlVOQ1RJT04gICAgICAgICAgbHBIYW5kbGVyUHJvYw0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDE1NjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KIA0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpTRVJWSUNFX1NUQVRVU19IQU5ETEUNCl9fc3RkY2FsbA0KUmVnaXN0ZXJTZXJ2
aWNlQ3RybEhhbmRsZXJFeEEoDQogICAgICAgICBMUENTVFIgICAgICAgICAgICAgICAgICAgIGxw
U2VydmljZU5hbWUsDQogICAgICAgICANCiAgICAgICAgICAgIExQSEFORExFUl9GVU5DVElPTl9F
WCAgICAgICBscEhhbmRsZXJQcm9jLA0KICAgICAgTFBWT0lEICAgICAgICAgICAgICAgICAgICAg
bHBDb250ZXh0DQogICAgKTsNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KU0VSVklDRV9TVEFU
VVNfSEFORExFDQpfX3N0ZGNhbGwNClJlZ2lzdGVyU2VydmljZUN0cmxIYW5kbGVyRXhXKA0KICAg
ICAgICAgTFBDV1NUUiAgICAgICAgICAgICAgICAgICAgbHBTZXJ2aWNlTmFtZSwNCiAgICAgICAg
IA0KICAgICAgICAgICAgTFBIQU5ETEVSX0ZVTkNUSU9OX0VYICAgICAgIGxwSGFuZGxlclByb2Ms
DQogICAgICBMUFZPSUQgICAgICAgICAgICAgICAgICAgICBscENvbnRleHQNCiAgICApOw0KDQoN
Cg0KDQojbGluZSAxNTk1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTZXRTZXJ2aWNlT2JqZWN0U2VjdXJpdHkoDQogICAg
ICAgICAgICAgU0NfSEFORExFICAgICAgICAgICAgICAgaFNlcnZpY2UsDQogICAgICAgICAgICAg
U0VDVVJJVFlfSU5GT1JNQVRJT04gICAgZHdTZWN1cml0eUluZm9ybWF0aW9uLA0KICAgICAgICAg
ICAgIFBTRUNVUklUWV9ERVNDUklQVE9SICAgIGxwU2VjdXJpdHlEZXNjcmlwdG9yDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClNldFNlcnZpY2VTdGF0
dXMoDQogICAgICAgICAgICAgU0VSVklDRV9TVEFUVVNfSEFORExFICAgaFNlcnZpY2VTdGF0dXMs
DQogICAgICAgICAgICAgTFBTRVJWSUNFX1NUQVRVUyAgICAgICAgbHBTZXJ2aWNlU3RhdHVzDQog
ICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClN0YXJ0U2Vy
dmljZUN0cmxEaXNwYXRjaGVyQSgNCiAgICAgIGNvbnN0ICBTRVJWSUNFX1RBQkxFX0VOVFJZQSAg
ICAqbHBTZXJ2aWNlU3RhcnRUYWJsZQ0KICAgICk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJP
T0wNCl9fc3RkY2FsbA0KU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXJXKA0KICAgICAgY29uc3Qg
IFNFUlZJQ0VfVEFCTEVfRU5UUllXICAgICpscFNlcnZpY2VTdGFydFRhYmxlDQogICAgKTsNCg0K
DQoNCg0KI2xpbmUgMTYzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQk9PTA0KX19zdGRjYWxsDQpTdGFydFNlcnZpY2VBKA0KICAgICAgICAgICAg
ICAgICBTQ19IQU5ETEUgICAgICAgICAgICBoU2VydmljZSwNCiAgICAgICAgICAgICAgICAgRFdP
UkQgICAgICAgICAgICAgICAgZHdOdW1TZXJ2aWNlQXJncywNCiAgICAgDQogICAgICAgICAgICAg
ICAgICAgIExQQ1NUUiAgICAgICAgICAgICAqbHBTZXJ2aWNlQXJnVmVjdG9ycw0KICAgICk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkJPT0wNCl9fc3RkY2FsbA0KU3RhcnRTZXJ2aWNlVygNCiAg
ICAgICAgICAgICAgICAgU0NfSEFORExFICAgICAgICAgICAgaFNlcnZpY2UsDQogICAgICAgICAg
ICAgICAgIERXT1JEICAgICAgICAgICAgICAgIGR3TnVtU2VydmljZUFyZ3MsDQogICAgIA0KICAg
ICAgICAgICAgICAgICAgICBMUENXU1RSICAgICAgICAgICAgICpscFNlcnZpY2VBcmdWZWN0b3Jz
DQogICAgKTsNCg0KDQoNCg0KI2xpbmUgMTY1NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXHdpbnN2Yy5oIg0KDQoj
bGluZSAxNjU3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoj
cHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpVbmxvY2tTZXJ2aWNlRGF0YWJhc2UoDQogICAgICAgICAgICAgICAg
IFNDX0xPQ0sgICAgICAgICAgICAgU2NMb2NrDQogICAgKTsNCg0KI2xpbmUgMTY3MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEu
MFxcdW1cXHdpbnN2Yy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gRGVz
a3RvcCBGYW1pbHkgb3IgT25lQ29yZSBGYW1pbHkNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpEV09SRA0KX19zdGRjYWxsDQpOb3RpZnlTZXJ2aWNlU3RhdHVzQ2hhbmdlQSAoDQogICAg
ICAgICAgICAgU0NfSEFORExFICAgICAgICAgICAgICAgaFNlcnZpY2UsDQogICAgICAgICAgICAg
RFdPUkQgICAgICAgICAgICAgICAgICAgZHdOb3RpZnlNYXNrLA0KICAgICAgICAgICAgIFBTRVJW
SUNFX05PVElGWUEgICAgICAgIHBOb3RpZnlCdWZmZXINCiAgICApOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpEV09SRA0KX19zdGRjYWxsDQpOb3RpZnlTZXJ2aWNlU3RhdHVzQ2hhbmdlVyAoDQog
ICAgICAgICAgICAgU0NfSEFORExFICAgICAgICAgICAgICAgaFNlcnZpY2UsDQogICAgICAgICAg
ICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdOb3RpZnlNYXNrLA0KICAgICAgICAgICAgIFBT
RVJWSUNFX05PVElGWVcgICAgICAgIHBOb3RpZnlCdWZmZXINCiAgICApOw0KDQoNCg0KDQojbGlu
ZSAxNjk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qk9PTA0KX19zdGRjYWxsDQpDb250cm9sU2VydmljZUV4QSgNCiAgICAgICAgICAgICBTQ19IQU5E
TEUgICAgICAgICAgICAgICBoU2VydmljZSwNCiAgICAgICAgICAgICBEV09SRCAgICAgICAgICAg
ICAgICAgICBkd0NvbnRyb2wsDQogICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAg
ZHdJbmZvTGV2ZWwsDQogICAgICAgICAgUFZPSUQgICAgICAgICAgICAgICAgICAgcENvbnRyb2xQ
YXJhbXMNCiAgICApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNCkNv
bnRyb2xTZXJ2aWNlRXhXKA0KICAgICAgICAgICAgIFNDX0hBTkRMRSAgICAgICAgICAgICAgIGhT
ZXJ2aWNlLA0KICAgICAgICAgICAgIERXT1JEICAgICAgICAgICAgICAgICAgIGR3Q29udHJvbCwN
CiAgICAgICAgICAgICBEV09SRCAgICAgICAgICAgICAgICAgICBkd0luZm9MZXZlbCwNCiAgICAg
ICAgICBQVk9JRCAgICAgICAgICAgICAgICAgICBwQ29udHJvbFBhcmFtcw0KICAgICk7DQoNCg0K
DQoNCiNsaW5lIDE3MjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCT09MDQpfX3N0ZGNhbGwNClF1ZXJ5U2VydmljZUR5bmFtaWNJbmZvcm1hdGlvbiAo
DQogICAgICAgICAgICAgU0VSVklDRV9TVEFUVVNfSEFORExFICAgaFNlcnZpY2VTdGF0dXMsDQog
ICAgICAgICAgICAgRFdPUkQgICAgICAgICAgICAgICAgICAgZHdJbmZvTGV2ZWwsDQogICAgICAg
IFBWT0lEICAgICAgICAgICAqICAgICAgIHBwRHluYW1pY0luZm8NCiAgICApOw0KDQojbGluZSAx
NzMzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE3ODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxODEwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDE4MzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KI2xpbmUgMTgzMiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXHdpbnN2Yy5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQp9DQojbGluZSAxODM3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1bVxcd2luc3ZjLmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5l
IDE4NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5zdmMuaCINCg0KI2xpbmUgMTg0MyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XHdpbnN2Yy5oIg0KDQojbGluZSAyMzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGluZSAy
MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
bWN4LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCiNsaW5lIDE1ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcbWN4LmgiDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0ODIwKSANCiNsaW5lIDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcbWN4LmgiDQoNCnR5
cGVkZWYgc3RydWN0IF9NT0RFTURFVkNBUFMgew0KICAgIERXT1JEICAgZHdBY3R1YWxTaXplOw0K
ICAgIERXT1JEICAgZHdSZXF1aXJlZFNpemU7DQogICAgRFdPUkQgICBkd0RldlNwZWNpZmljT2Zm
c2V0Ow0KICAgIERXT1JEICAgZHdEZXZTcGVjaWZpY1NpemU7DQoNCiAgICANCiAgICBEV09SRCAg
IGR3TW9kZW1Qcm92aWRlclZlcnNpb247DQogICAgRFdPUkQgICBkd01vZGVtTWFudWZhY3R1cmVy
T2Zmc2V0Ow0KICAgIERXT1JEICAgZHdNb2RlbU1hbnVmYWN0dXJlclNpemU7DQogICAgRFdPUkQg
ICBkd01vZGVtTW9kZWxPZmZzZXQ7DQogICAgRFdPUkQgICBkd01vZGVtTW9kZWxTaXplOw0KICAg
IERXT1JEICAgZHdNb2RlbVZlcnNpb25PZmZzZXQ7DQogICAgRFdPUkQgICBkd01vZGVtVmVyc2lv
blNpemU7DQoNCiAgICANCiAgICBEV09SRCAgIGR3RGlhbE9wdGlvbnM7ICAgICAgICAgIA0KICAg
IERXT1JEICAgZHdDYWxsU2V0dXBGYWlsVGltZXI7ICAgDQogICAgRFdPUkQgICBkd0luYWN0aXZp
dHlUaW1lb3V0OyAgICANCiAgICBEV09SRCAgIGR3U3BlYWtlclZvbHVtZTsgICAgICAgIA0KICAg
IERXT1JEICAgZHdTcGVha2VyTW9kZTsgICAgICAgICAgDQogICAgRFdPUkQgICBkd01vZGVtT3B0
aW9uczsgICAgICAgICANCiAgICBEV09SRCAgIGR3TWF4RFRFUmF0ZTsgICAgICAgICAgIA0KICAg
IERXT1JEICAgZHdNYXhEQ0VSYXRlOyAgICAgICAgICAgDQoNCiAgICANCiAgICBCWVRFICAgIGFi
VmFyaWFibGVQb3J0aW9uIFsxXTsNCn0gTU9ERU1ERVZDQVBTLCAqUE1PREVNREVWQ0FQUywgKkxQ
TU9ERU1ERVZDQVBTOw0KDQp0eXBlZGVmIHN0cnVjdCBfTU9ERU1TRVRUSU5HUyB7DQogICAgRFdP
UkQgICBkd0FjdHVhbFNpemU7DQogICAgRFdPUkQgICBkd1JlcXVpcmVkU2l6ZTsNCiAgICBEV09S
RCAgIGR3RGV2U3BlY2lmaWNPZmZzZXQ7DQogICAgRFdPUkQgICBkd0RldlNwZWNpZmljU2l6ZTsN
Cg0KICAgIA0KICAgIERXT1JEICAgZHdDYWxsU2V0dXBGYWlsVGltZXI7ICAgICAgIA0KICAgIERX
T1JEICAgZHdJbmFjdGl2aXR5VGltZW91dDsgICAgICAgIA0KICAgIERXT1JEICAgZHdTcGVha2Vy
Vm9sdW1lOyAgICAgICAgICAgIA0KICAgIERXT1JEICAgZHdTcGVha2VyTW9kZTsgICAgICAgICAg
ICAgIA0KICAgIERXT1JEICAgZHdQcmVmZXJyZWRNb2RlbU9wdGlvbnM7ICAgIA0KDQogICAgDQog
ICAgRFdPUkQgICBkd05lZ290aWF0ZWRNb2RlbU9wdGlvbnM7ICAgDQogICAgRFdPUkQgICBkd05l
Z290aWF0ZWREQ0VSYXRlOyAgICAgICAgDQoNCiAgICANCiAgICBCWVRFICAgIGFiVmFyaWFibGVQ
b3J0aW9uIFsxXTsNCn0gTU9ERU1TRVRUSU5HUywgKlBNT0RFTVNFVFRJTkdTLCAqTFBNT0RFTVNF
VFRJTkdTOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI2xpbmUgNzMwICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcbWN4LmgiDQoNCiNsaW5lIDczMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXG1jeC5oIg0KI2xpbmUgMjQzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMjQ0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5o
Ig0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiB7DQojbGluZSAxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQoNCiNw
cmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgyMCkgDQojbGlu
ZSAyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gQXBw
bGljYXRpb24gRmFtaWx5DQoNCg0KDQpzdHJ1Y3QgSElNQ19fe2ludCB1bnVzZWQ7fTsgdHlwZWRl
ZiBzdHJ1Y3QgSElNQ19fICpISU1DOw0Kc3RydWN0IEhJTUNDX197aW50IHVudXNlZDt9OyB0eXBl
ZGVmIHN0cnVjdCBISU1DQ19fICpISU1DQzsNCg0KDQoNCiNsaW5lIDM3ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
aW1tLmgiDQoNCiNsaW5lIDM5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQojcHJhZ21hIGVuZHJlZ2lv
bg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCnR5cGVkZWYgSEtMICAgKkxQ
SEtMOw0KdHlwZWRlZiBVSU5UICAqTFBVSU5UOw0KDQojbGluZSA0OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGlt
bS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KI3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFt
aWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ09NUE9TSVRJT05GT1JNIHsNCiAgICBEV09SRCBk
d1N0eWxlOw0KICAgIFBPSU5UIHB0Q3VycmVudFBvczsNCiAgICBSRUNUICByY0FyZWE7DQp9IENP
TVBPU0lUSU9ORk9STSwgKlBDT01QT1NJVElPTkZPUk0sICAqTlBDT01QT1NJVElPTkZPUk0sICAq
TFBDT01QT1NJVElPTkZPUk07DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0FORElEQVRFRk9STSB7
DQogICAgRFdPUkQgZHdJbmRleDsNCiAgICBEV09SRCBkd1N0eWxlOw0KICAgIFBPSU5UIHB0Q3Vy
cmVudFBvczsNCiAgICBSRUNUICByY0FyZWE7DQp9IENBTkRJREFURUZPUk0sICpQQ0FORElEQVRF
Rk9STSwgICpOUENBTkRJREFURUZPUk0sICAqTFBDQU5ESURBVEVGT1JNOw0KDQojbGluZSA2OCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAu
MTkwNDEuMFxcdW1cXGltbS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCiNwcmFnbWEgcmVn
aW9uIERlc2t0b3AgRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFnQ0FORElEQVRFTElTVCB7
DQogICAgRFdPUkQgZHdTaXplOw0KICAgIERXT1JEIGR3U3R5bGU7DQogICAgRFdPUkQgZHdDb3Vu
dDsNCiAgICBEV09SRCBkd1NlbGVjdGlvbjsNCiAgICBEV09SRCBkd1BhZ2VTdGFydDsNCiAgICBE
V09SRCBkd1BhZ2VTaXplOw0KICAgIERXT1JEIGR3T2Zmc2V0WzFdOw0KfSBDQU5ESURBVEVMSVNU
LCAqUENBTkRJREFURUxJU1QsICAqTlBDQU5ESURBVEVMSVNULCAgKkxQQ0FORElEQVRFTElTVDsN
Cg0KI2xpbmUgODYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCg0K
I3ByYWdtYSByZWdpb24gQXBwbGljYXRpb24gRmFtaWx5DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgdGFn
UkVHSVNURVJXT1JEQSB7DQogICAgTFBTVFIgICBscFJlYWRpbmc7DQogICAgTFBTVFIgICBscFdv
cmQ7DQp9IFJFR0lTVEVSV09SREEsICpQUkVHSVNURVJXT1JEQSwgICpOUFJFR0lTVEVSV09SREEs
ICAqTFBSRUdJU1RFUldPUkRBOw0KdHlwZWRlZiBzdHJ1Y3QgdGFnUkVHSVNURVJXT1JEVyB7DQog
ICAgTFBXU1RSICBscFJlYWRpbmc7DQogICAgTFBXU1RSICBscFdvcmQ7DQp9IFJFR0lTVEVSV09S
RFcsICpQUkVHSVNURVJXT1JEVywgICpOUFJFR0lTVEVSV09SRFcsICAqTFBSRUdJU1RFUldPUkRX
Ow0KDQp0eXBlZGVmIFJFR0lTVEVSV09SRFcgUkVHSVNURVJXT1JEOw0KdHlwZWRlZiBQUkVHSVNU
RVJXT1JEVyBQUkVHSVNURVJXT1JEOw0KdHlwZWRlZiBOUFJFR0lTVEVSV09SRFcgTlBSRUdJU1RF
UldPUkQ7DQp0eXBlZGVmIExQUkVHSVNURVJXT1JEVyBMUFJFR0lTVEVSV09SRDsNCg0KDQoNCg0K
DQojbGluZSAxMTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxp
bmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KI2xpbmUgMTEzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
bVxcaW1tLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3Rv
cCBGYW1pbHkNCg0KDQp0eXBlZGVmIHN0cnVjdCB0YWdSRUNPTlZFUlRTVFJJTkcgew0KICAgIERX
T1JEIGR3U2l6ZTsNCiAgICBEV09SRCBkd1ZlcnNpb247DQogICAgRFdPUkQgZHdTdHJMZW47DQog
ICAgRFdPUkQgZHdTdHJPZmZzZXQ7DQogICAgRFdPUkQgZHdDb21wU3RyTGVuOw0KICAgIERXT1JE
IGR3Q29tcFN0ck9mZnNldDsNCiAgICBEV09SRCBkd1RhcmdldFN0ckxlbjsNCiAgICBEV09SRCBk
d1RhcmdldFN0ck9mZnNldDsNCn0gUkVDT05WRVJUU1RSSU5HLCAqUFJFQ09OVkVSVFNUUklORywg
ICpOUFJFQ09OVkVSVFNUUklORywgICpMUFJFQ09OVkVSVFNUUklORzsNCg0KI2xpbmUgMTMyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcaW1tLmgiDQojcHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAxMzUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFxpbW0uaCINCg0KDQoNCiNwcmFnbWEgcmVnaW9uIEFwcGxpY2F0aW9uIEZhbWlseQ0K
DQoNCnR5cGVkZWYgc3RydWN0IHRhZ1NUWUxFQlVGQSB7DQogICAgRFdPUkQgICAgICAgZHdTdHls
ZTsNCiAgICBDSEFSICAgICAgICBzekRlc2NyaXB0aW9uWzMyXTsNCn0gU1RZTEVCVUZBLCAqUFNU
WUxFQlVGQSwgICpOUFNUWUxFQlVGQSwgICpMUFNUWUxFQlVGQTsNCnR5cGVkZWYgc3RydWN0IHRh
Z1NUWUxFQlVGVyB7DQogICAgRFdPUkQgICAgICAgZHdTdHlsZTsNCiAgICBXQ0hBUiAgICAgICBz
ekRlc2NyaXB0aW9uWzMyXTsNCn0gU1RZTEVCVUZXLCAqUFNUWUxFQlVGVywgICpOUFNUWUxFQlVG
VywgICpMUFNUWUxFQlVGVzsNCg0KdHlwZWRlZiBTVFlMRUJVRlcgU1RZTEVCVUY7DQp0eXBlZGVm
IFBTVFlMRUJVRlcgUFNUWUxFQlVGOw0KdHlwZWRlZiBOUFNUWUxFQlVGVyBOUFNUWUxFQlVGOw0K
dHlwZWRlZiBMUFNUWUxFQlVGVyBMUFNUWUxFQlVGOw0KDQoNCg0KDQoNCiNsaW5lIDE2MCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGltbS5oIg0KDQojbGluZSAxNjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCiNwcmFn
bWEgZW5kcmVnaW9uDQoNCg0KDQoNCg0KI3ByYWdtYSByZWdpb24gRGVza3RvcCBGYW1pbHkNCg0K
DQp0eXBlZGVmIHN0cnVjdCB0YWdJTUVNRU5VSVRFTUlORk9BIHsNCiAgICBVSU5UICAgICAgICBj
YlNpemU7DQogICAgVUlOVCAgICAgICAgZlR5cGU7DQogICAgVUlOVCAgICAgICAgZlN0YXRlOw0K
ICAgIFVJTlQgICAgICAgIHdJRDsNCiAgICBIQklUTUFQICAgICBoYm1wQ2hlY2tlZDsNCiAgICBI
QklUTUFQICAgICBoYm1wVW5jaGVja2VkOw0KICAgIERXT1JEICAgICAgIGR3SXRlbURhdGE7DQog
ICAgQ0hBUiAgICAgICAgc3pTdHJpbmdbODBdOw0KICAgIEhCSVRNQVAgICAgIGhibXBJdGVtOw0K
fSBJTUVNRU5VSVRFTUlORk9BLCAqUElNRU1FTlVJVEVNSU5GT0EsICAqTlBJTUVNRU5VSVRFTUlO
Rk9BLCAgKkxQSU1FTUVOVUlURU1JTkZPQTsNCnR5cGVkZWYgc3RydWN0IHRhZ0lNRU1FTlVJVEVN
SU5GT1cgew0KICAgIFVJTlQgICAgICAgIGNiU2l6ZTsNCiAgICBVSU5UICAgICAgICBmVHlwZTsN
CiAgICBVSU5UICAgICAgICBmU3RhdGU7DQogICAgVUlOVCAgICAgICAgd0lEOw0KICAgIEhCSVRN
QVAgICAgIGhibXBDaGVja2VkOw0KICAgIEhCSVRNQVAgICAgIGhibXBVbmNoZWNrZWQ7DQogICAg
RFdPUkQgICAgICAgZHdJdGVtRGF0YTsNCiAgICBXQ0hBUiAgICAgICBzelN0cmluZ1s4MF07DQog
ICAgSEJJVE1BUCAgICAgaGJtcEl0ZW07DQp9IElNRU1FTlVJVEVNSU5GT1csICpQSU1FTUVOVUlU
RU1JTkZPVywgICpOUElNRU1FTlVJVEVNSU5GT1csICAqTFBJTUVNRU5VSVRFTUlORk9XOw0KDQp0
eXBlZGVmIElNRU1FTlVJVEVNSU5GT1cgSU1FTUVOVUlURU1JTkZPOw0KdHlwZWRlZiBQSU1FTUVO
VUlURU1JTkZPVyBQSU1FTUVOVUlURU1JTkZPOw0KdHlwZWRlZiBOUElNRU1FTlVJVEVNSU5GT1cg
TlBJTUVNRU5VSVRFTUlORk87DQp0eXBlZGVmIExQSU1FTUVOVUlURU1JTkZPVyBMUElNRU1FTlVJ
VEVNSU5GTzsNCg0KDQoNCg0KDQojbGluZSAyMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KdHlw
ZWRlZiBzdHJ1Y3QgdGFnSU1FQ0hBUlBPU0lUSU9OIHsNCiAgICBEV09SRCAgICAgICBkd1NpemU7
DQogICAgRFdPUkQgICAgICAgZHdDaGFyUG9zOw0KICAgIFBPSU5UICAgICAgIHB0Ow0KICAgIFVJ
TlQgICAgICAgIGNMaW5lSGVpZ2h0Ow0KICAgIFJFQ1QgICAgICAgIHJjRG9jdW1lbnQ7DQp9IElN
RUNIQVJQT1NJVElPTiwgKlBJTUVDSEFSUE9TSVRJT04sICAqTlBJTUVDSEFSUE9TSVRJT04sICAq
TFBJTUVDSEFSUE9TSVRJT047DQoNCnR5cGVkZWYgQk9PTCAgICAoX19zdGRjYWxsKiBJTUNFTlVN
UFJPQykoSElNQywgTFBBUkFNKTsNCg0KI2xpbmUgMjE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQoj
cHJhZ21hIGVuZHJlZ2lvbg0KDQojbGluZSAyMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KDQoN
Cg0KDQojcHJhZ21hIHJlZ2lvbiBEZXNrdG9wIEZhbWlseQ0KDQoNCkhLTCAgX19zdGRjYWxsIElt
bUluc3RhbGxJTUVBKCAgTFBDU1RSIGxwc3pJTUVGaWxlTmFtZSwgICBMUENTVFIgbHBzekxheW91
dFRleHQpOw0KSEtMICBfX3N0ZGNhbGwgSW1tSW5zdGFsbElNRVcoICBMUENXU1RSIGxwc3pJTUVG
aWxlTmFtZSwgICBMUENXU1RSIGxwc3pMYXlvdXRUZXh0KTsNCg0KDQoNCg0KI2xpbmUgMjM0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1bVxcaW1tLmgiDQoNCkhXTkQgX19zdGRjYWxsIEltbUdldERlZmF1bHRJTUVXbmQo
IEhXTkQpOw0KDQpVSU5UIF9fc3RkY2FsbCBJbW1HZXREZXNjcmlwdGlvbkEoIEhLTCwgICBMUFNU
UiBscHN6RGVzY3JpcHRpb24sICBVSU5UIHVCdWZMZW4pOw0KVUlOVCBfX3N0ZGNhbGwgSW1tR2V0
RGVzY3JpcHRpb25XKCBIS0wsICAgTFBXU1RSIGxwc3pEZXNjcmlwdGlvbiwgIFVJTlQgdUJ1Zkxl
bik7DQoNCg0KDQoNCiNsaW5lIDI0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQpVSU5UIF9fc3Rk
Y2FsbCBJbW1HZXRJTUVGaWxlTmFtZUEoIEhLTCwgICBMUFNUUiBscHN6RmlsZU5hbWUsICBVSU5U
IHVCdWZMZW4pOw0KVUlOVCBfX3N0ZGNhbGwgSW1tR2V0SU1FRmlsZU5hbWVXKCBIS0wsICAgTFBX
U1RSIGxwc3pGaWxlTmFtZSwgIFVJTlQgdUJ1Zkxlbik7DQoNCg0KDQoNCiNsaW5lIDI1MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkw
NDEuMFxcdW1cXGltbS5oIg0KDQpEV09SRCBfX3N0ZGNhbGwgSW1tR2V0UHJvcGVydHkoIEhLTCwg
IERXT1JEKTsNCg0KQk9PTCBfX3N0ZGNhbGwgSW1tSXNJTUUoIEhLTCk7DQoNCkJPT0wgX19zdGRj
YWxsIEltbVNpbXVsYXRlSG90S2V5KCBIV05ELCAgRFdPUkQpOw0KDQpISU1DIF9fc3RkY2FsbCBJ
bW1DcmVhdGVDb250ZXh0KHZvaWQpOw0KQk9PTCBfX3N0ZGNhbGwgSW1tRGVzdHJveUNvbnRleHQo
IEhJTUMpOw0KSElNQyBfX3N0ZGNhbGwgSW1tR2V0Q29udGV4dCggSFdORCk7DQpCT09MIF9fc3Rk
Y2FsbCBJbW1SZWxlYXNlQ29udGV4dCggSFdORCwgIEhJTUMpOw0KSElNQyBfX3N0ZGNhbGwgSW1t
QXNzb2NpYXRlQ29udGV4dCggSFdORCwgIEhJTUMpOw0KDQpCT09MIF9fc3RkY2FsbCBJbW1Bc3Nv
Y2lhdGVDb250ZXh0RXgoICBIV05ELCAgIEhJTUMsICAgRFdPUkQpOw0KI2xpbmUgMjY3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcaW1tLmgiDQoNCkxPTkcgIF9fc3RkY2FsbCBJbW1HZXRDb21wb3NpdGlvblN0cmlu
Z0EoIEhJTUMsICBEV09SRCwgICBMUFZPSUQgbHBCdWYsICBEV09SRCBkd0J1Zkxlbik7DQpMT05H
ICBfX3N0ZGNhbGwgSW1tR2V0Q29tcG9zaXRpb25TdHJpbmdXKCBISU1DLCAgRFdPUkQsICAgTFBW
T0lEIGxwQnVmLCAgRFdPUkQgZHdCdWZMZW4pOw0KDQoNCg0KDQojbGluZSAyNzUgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVtXFxpbW0uaCINCg0KQk9PTCAgX19zdGRjYWxsIEltbVNldENvbXBvc2l0aW9uU3RyaW5nQSgg
SElNQywgIERXT1JEIGR3SW5kZXgsICAgTFBWT0lEIGxwQ29tcCwgIERXT1JEIGR3Q29tcExlbiwg
ICBMUFZPSUQgbHBSZWFkLCAgRFdPUkQgZHdSZWFkTGVuKTsNCkJPT0wgIF9fc3RkY2FsbCBJbW1T
ZXRDb21wb3NpdGlvblN0cmluZ1coIEhJTUMsICBEV09SRCBkd0luZGV4LCAgIExQVk9JRCBscENv
bXAsICBEV09SRCBkd0NvbXBMZW4sICAgTFBWT0lEIGxwUmVhZCwgIERXT1JEIGR3UmVhZExlbik7
DQoNCg0KDQoNCiNsaW5lIDI4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQpEV09SRCBfX3N0ZGNh
bGwgSW1tR2V0Q2FuZGlkYXRlTGlzdENvdW50QSggSElNQywgICBMUERXT1JEIGxwZHdMaXN0Q291
bnQpOw0KRFdPUkQgX19zdGRjYWxsIEltbUdldENhbmRpZGF0ZUxpc3RDb3VudFcoIEhJTUMsICAg
TFBEV09SRCBscGR3TGlzdENvdW50KTsNCg0KDQoNCg0KI2xpbmUgMjkxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
aW1tLmgiDQoNCkRXT1JEIF9fc3RkY2FsbCBJbW1HZXRDYW5kaWRhdGVMaXN0QSggSElNQywgIERX
T1JEIGRlSW5kZXgsICAgTFBDQU5ESURBVEVMSVNUIGxwQ2FuZExpc3QsICBEV09SRCBkd0J1Zkxl
bik7DQpEV09SRCBfX3N0ZGNhbGwgSW1tR2V0Q2FuZGlkYXRlTGlzdFcoIEhJTUMsICBEV09SRCBk
ZUluZGV4LCAgIExQQ0FORElEQVRFTElTVCBscENhbmRMaXN0LCAgRFdPUkQgZHdCdWZMZW4pOw0K
DQoNCg0KDQojbGluZSAyOTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KRFdPUkQgX19zdGRjYWxs
IEltbUdldEd1aWRlTGluZUEoICBISU1DLCAgIERXT1JEIGR3SW5kZXgsICAgTFBTVFIgbHBCdWYs
ICAgRFdPUkQgZHdCdWZMZW4pOw0KRFdPUkQgX19zdGRjYWxsIEltbUdldEd1aWRlTGluZVcoICBI
SU1DLCAgIERXT1JEIGR3SW5kZXgsICAgTFBXU1RSIGxwQnVmLCAgIERXT1JEIGR3QnVmTGVuKTsN
Cg0KDQoNCg0KI2xpbmUgMzA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQoNCkJPT0wgX19zdGRjYWxs
IEltbUdldENvbnZlcnNpb25TdGF0dXMoIEhJTUMsICAgTFBEV09SRCBscGZkd0NvbnZlcnNpb24s
ICAgTFBEV09SRCBscGZkd1NlbnRlbmNlKTsNCkJPT0wgX19zdGRjYWxsIEltbVNldENvbnZlcnNp
b25TdGF0dXMoIEhJTUMsICBEV09SRCwgIERXT1JEKTsNCkJPT0wgX19zdGRjYWxsIEltbUdldE9w
ZW5TdGF0dXMoIEhJTUMpOw0KQk9PTCBfX3N0ZGNhbGwgSW1tU2V0T3BlblN0YXR1cyggSElNQywg
IEJPT0wpOw0KDQoNCkJPT0wgX19zdGRjYWxsIEltbUdldENvbXBvc2l0aW9uRm9udEEoIEhJTUMs
ICAgTFBMT0dGT05UQSBscGxmKTsNCkJPT0wgX19zdGRjYWxsIEltbUdldENvbXBvc2l0aW9uRm9u
dFcoIEhJTUMsICAgTFBMT0dGT05UVyBscGxmKTsNCg0KDQoNCg0KI2xpbmUgMzIxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcaW1tLmgiDQoNCkJPT0wgX19zdGRjYWxsIEltbVNldENvbXBvc2l0aW9uRm9udEEoIEhJ
TUMsICAgTFBMT0dGT05UQSBscGxmKTsNCkJPT0wgX19zdGRjYWxsIEltbVNldENvbXBvc2l0aW9u
Rm9udFcoIEhJTUMsICAgTFBMT0dGT05UVyBscGxmKTsNCg0KDQoNCg0KI2xpbmUgMzI5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1bVxcaW1tLmgiDQojbGluZSAzMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KQk9PTCAg
ICBfX3N0ZGNhbGwgSW1tQ29uZmlndXJlSU1FQSggSEtMLCAgSFdORCwgIERXT1JELCAgTFBWT0lE
KTsNCkJPT0wgICAgX19zdGRjYWxsIEltbUNvbmZpZ3VyZUlNRVcoIEhLTCwgIEhXTkQsICBEV09S
RCwgIExQVk9JRCk7DQoNCg0KDQoNCiNsaW5lIDMzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQpM
UkVTVUxUIF9fc3RkY2FsbCBJbW1Fc2NhcGVBKCBIS0wsICBISU1DLCAgVUlOVCwgIExQVk9JRCk7
DQpMUkVTVUxUIF9fc3RkY2FsbCBJbW1Fc2NhcGVXKCBIS0wsICBISU1DLCAgVUlOVCwgIExQVk9J
RCk7DQoNCg0KDQoNCiNsaW5lIDM0NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3Mg
S2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQpEV09SRCAgIF9f
c3RkY2FsbCBJbW1HZXRDb252ZXJzaW9uTGlzdEEoIEhLTCwgIEhJTUMsICAgTFBDU1RSIGxwU3Jj
LCAgIExQQ0FORElEQVRFTElTVCBscERzdCwgIERXT1JEIGR3QnVmTGVuLCAgVUlOVCB1RmxhZyk7
DQpEV09SRCAgIF9fc3RkY2FsbCBJbW1HZXRDb252ZXJzaW9uTGlzdFcoIEhLTCwgIEhJTUMsICAg
TFBDV1NUUiBscFNyYywgICBMUENBTkRJREFURUxJU1QgbHBEc3QsICBEV09SRCBkd0J1Zkxlbiwg
IFVJTlQgdUZsYWcpOw0KDQoNCg0KDQojbGluZSAzNTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0K
Qk9PTCAgICBfX3N0ZGNhbGwgSW1tTm90aWZ5SU1FKCBISU1DLCAgRFdPUkQgZHdBY3Rpb24sICBE
V09SRCBkd0luZGV4LCAgRFdPUkQgZHdWYWx1ZSk7DQoNCkJPT0wgX19zdGRjYWxsIEltbUdldFN0
YXR1c1dpbmRvd1BvcyggSElNQywgICBMUFBPSU5UIGxwcHRQb3MpOw0KQk9PTCBfX3N0ZGNhbGwg
SW1tU2V0U3RhdHVzV2luZG93UG9zKCBISU1DLCAgIExQUE9JTlQgbHBwdFBvcyk7DQpCT09MIF9f
c3RkY2FsbCBJbW1HZXRDb21wb3NpdGlvbldpbmRvdyggSElNQywgICBMUENPTVBPU0lUSU9ORk9S
TSBscENvbXBGb3JtKTsNCkJPT0wgX19zdGRjYWxsIEltbVNldENvbXBvc2l0aW9uV2luZG93KCBI
SU1DLCAgIExQQ09NUE9TSVRJT05GT1JNIGxwQ29tcEZvcm0pOw0KQk9PTCBfX3N0ZGNhbGwgSW1t
R2V0Q2FuZGlkYXRlV2luZG93KCBISU1DLCAgRFdPUkQsICAgTFBDQU5ESURBVEVGT1JNIGxwQ2Fu
ZGlkYXRlKTsNCkJPT0wgX19zdGRjYWxsIEltbVNldENhbmRpZGF0ZVdpbmRvdyggSElNQywgICBM
UENBTkRJREFURUZPUk0gbHBDYW5kaWRhdGUpOw0KDQpCT09MIF9fc3RkY2FsbCBJbW1Jc1VJTWVz
c2FnZUEoIEhXTkQsICBVSU5ULCAgV1BBUkFNLCAgTFBBUkFNKTsNCkJPT0wgX19zdGRjYWxsIElt
bUlzVUlNZXNzYWdlVyggSFdORCwgIFVJTlQsICBXUEFSQU0sICBMUEFSQU0pOw0KDQoNCg0KDQoj
bGluZSAzNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KVUlOVCBfX3N0ZGNhbGwgSW1tR2V0Vmly
dHVhbEtleSggSFdORCk7DQoNCnR5cGVkZWYgaW50IChfX3N0ZGNhbGwgKlJFR0lTVEVSV09SREVO
VU1QUk9DQSkoICBMUENTVFIgbHBzelJlYWRpbmcsIERXT1JELCAgIExQQ1NUUiBscHN6U3RyaW5n
LCBMUFZPSUQpOw0KdHlwZWRlZiBpbnQgKF9fc3RkY2FsbCAqUkVHSVNURVJXT1JERU5VTVBST0NX
KSggIExQQ1dTVFIgbHBzelJlYWRpbmcsIERXT1JELCAgIExQQ1dTVFIgbHBzelN0cmluZywgTFBW
T0lEKTsNCg0KDQoNCg0KI2xpbmUgMzgxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQoNCkJPT0wgX19z
dGRjYWxsIEltbVJlZ2lzdGVyV29yZEEoIEhLTCwgICBMUENTVFIgbHBzelJlYWRpbmcsICBEV09S
RCwgICBMUENTVFIgbHBzelJlZ2lzdGVyKTsNCkJPT0wgX19zdGRjYWxsIEltbVJlZ2lzdGVyV29y
ZFcoIEhLTCwgICBMUENXU1RSIGxwc3pSZWFkaW5nLCAgRFdPUkQsICAgTFBDV1NUUiBscHN6UmVn
aXN0ZXIpOw0KDQoNCg0KDQojbGluZSAzODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KQk9PTCBf
X3N0ZGNhbGwgSW1tVW5yZWdpc3RlcldvcmRBKCBIS0wsICAgTFBDU1RSIGxwc3pSZWFkaW5nLCAg
RFdPUkQsICAgTFBDU1RSIGxwc3pVbnJlZ2lzdGVyKTsNCkJPT0wgX19zdGRjYWxsIEltbVVucmVn
aXN0ZXJXb3JkVyggSEtMLCAgIExQQ1dTVFIgbHBzelJlYWRpbmcsICBEV09SRCwgICBMUENXU1RS
IGxwc3pVbnJlZ2lzdGVyKTsNCg0KDQoNCg0KI2xpbmUgMzk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgi
DQoNClVJTlQgX19zdGRjYWxsIEltbUdldFJlZ2lzdGVyV29yZFN0eWxlQSggSEtMLCAgVUlOVCBu
SXRlbSwgICBMUFNUWUxFQlVGQSBscFN0eWxlQnVmKTsNClVJTlQgX19zdGRjYWxsIEltbUdldFJl
Z2lzdGVyV29yZFN0eWxlVyggSEtMLCAgVUlOVCBuSXRlbSwgICBMUFNUWUxFQlVGVyBscFN0eWxl
QnVmKTsNCg0KDQoNCg0KI2xpbmUgNDA1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQoNClVJTlQgX19z
dGRjYWxsIEltbUVudW1SZWdpc3RlcldvcmRBKCBIS0wsICBSRUdJU1RFUldPUkRFTlVNUFJPQ0Es
ICAgTFBDU1RSIGxwc3pSZWFkaW5nLCAgRFdPUkQsICAgTFBDU1RSIGxwc3pSZWdpc3RlciwgIExQ
Vk9JRCk7DQpVSU5UIF9fc3RkY2FsbCBJbW1FbnVtUmVnaXN0ZXJXb3JkVyggSEtMLCAgUkVHSVNU
RVJXT1JERU5VTVBST0NXLCAgIExQQ1dTVFIgbHBzelJlYWRpbmcsICBEV09SRCwgICBMUENXU1RS
IGxwc3pSZWdpc3RlciwgIExQVk9JRCk7DQoNCg0KDQoNCiNsaW5lIDQxMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGltbS5oIg0KDQoNCkJPT0wgX19zdGRjYWxsIEltbURpc2FibGVJTUUoIERXT1JEKTsNCkJPT0wg
X19zdGRjYWxsIEltbUVudW1JbnB1dENvbnRleHQoRFdPUkQgaWRUaHJlYWQsIElNQ0VOVU1QUk9D
IGxwZm4sIExQQVJBTSBsUGFyYW0pOw0KRFdPUkQgX19zdGRjYWxsIEltbUdldEltZU1lbnVJdGVt
c0EoIEhJTUMsICBEV09SRCwgIERXT1JELCAgIExQSU1FTUVOVUlURU1JTkZPQSBscEltZVBhcmVu
dE1lbnUsICAgTFBJTUVNRU5VSVRFTUlORk9BIGxwSW1lTWVudSwgIERXT1JEIGR3U2l6ZSk7DQpE
V09SRCBfX3N0ZGNhbGwgSW1tR2V0SW1lTWVudUl0ZW1zVyggSElNQywgIERXT1JELCAgRFdPUkQs
ICAgTFBJTUVNRU5VSVRFTUlORk9XIGxwSW1lUGFyZW50TWVudSwgICBMUElNRU1FTlVJVEVNSU5G
T1cgbHBJbWVNZW51LCAgRFdPUkQgZHdTaXplKTsNCg0KDQoNCg0KI2xpbmUgNDI0ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4w
XFx1bVxcaW1tLmgiDQoNCkJPT0wgX19zdGRjYWxsIEltbURpc2FibGVUZXh0RnJhbWVTZXJ2aWNl
KERXT1JEIGlkVGhyZWFkKTsNCiNsaW5lIDQyNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQoNCg0K
I2xpbmUgNDMxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQoNCiNsaW5lIDQzMyAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1c
XGltbS5oIg0KI3ByYWdtYSBlbmRyZWdpb24NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbWVf
Y21vZGVzLmgiDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1lX2Ntb2Rlcy5oIg0KDQojbGluZSA2
MzYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdp
bmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA3NzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtp
dHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFxpbW0uaCINCg0KDQojcHJhZ21hIHdh
cm5pbmcocG9wKQ0KI2xpbmUgNzc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBL
aXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQoNCg0KfQ0KI2xpbmUg
Nzc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxc
MTAuMC4xOTA0MS4wXFx1bVxcaW1tLmgiDQoNCiNsaW5lIDc4MSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdW1cXGltbS5o
Ig0KDQojbGluZSAyNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQojbGluZSAyNDggIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVtXFx3aW5kb3dzLmgiDQojbGluZSAyNDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoj
bGluZSAyNTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoNCg0KDQoNCiNwcmFnbWEgd2Fybmlu
Zyhwb3ApDQoNCg0KDQoNCg0KI2xpbmUgMjYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xp
bmUgMjYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1bVxcd2luZG93cy5oIg0KI2xpbmUgMjYzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luZG93cy5oIg0KDQojbGluZSAyNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dz
IEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVtXFx3aW5kb3dzLmgiDQoNCiNsaW5l
IDI2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCiNwcmFnbWEgZW5kcmVnaW9uDQoNCiNsaW5l
IDI3MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdW1cXHdpbmRvd3MuaCINCg0KI2xpbmUgMjcyICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1bVxc
d2luZG93cy5oIg0KDQojbGluZSAzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXRvbWljcy5oIg0KDQojbGluZSAzOSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXRvbWljcy5o
Ig0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KX19mb3JjZWlubGluZSBib29sIGhhc0ZlbmNlKHN0ZDo6
bWVtb3J5X29yZGVyIG9yZGVyKQ0Kew0KICAgIHJldHVybiBvcmRlciAhPSBzdGQ6Om1lbW9yeV9v
cmRlcl9yZWxheGVkOw0KfQ0KICAgIA0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pg0Kc3RydWN0IEF0b21pYyB7DQogICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlv
bjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRv
Rm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQoNCiAgICANCiAgICANCiAgICAN
Cg0KICAgIF9fZm9yY2VpbmxpbmUgVCBsb2FkKHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3Rk
OjptZW1vcnlfb3JkZXJfc2VxX2NzdCkgY29uc3QgeyByZXR1cm4gdmFsdWUubG9hZChvcmRlcik7
IH0NCiAgICANCiAgICBfX2ZvcmNlaW5saW5lIFQgbG9hZFJlbGF4ZWQoKSBjb25zdCB7IHJldHVy
biBsb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9DQogICAgDQogICAgDQogICAgDQog
ICAgX19mb3JjZWlubGluZSBUIGxvYWRGdWxseUZlbmNlZCgpIGNvbnN0DQogICAgew0KICAgICAg
ICBBdG9taWM8VD4qIHB0ciA9IGNvbnN0X2Nhc3Q8QXRvbWljPFQ+Kj4odGhpcyk7DQogICAgICAg
IHJldHVybiBwdHItPmV4Y2hhbmdlQWRkKFQoKSk7DQogICAgfQ0KICAgIA0KICAgIF9fZm9yY2Vp
bmxpbmUgdm9pZCBzdG9yZShUIGRlc2lyZWQsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3Rk
OjptZW1vcnlfb3JkZXJfc2VxX2NzdCkgeyB2YWx1ZS5zdG9yZShkZXNpcmVkLCBvcmRlcik7IH0N
CiAgICANCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgc3RvcmVSZWxheGVkKFQgZGVzaXJlZCkgeyBz
dG9yZShkZXNpcmVkLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsgfQ0KDQogICAgDQogICAg
DQogICAgX19mb3JjZWlubGluZSB2b2lkIHN0b3JlRnVsbHlGZW5jZWQoVCBkZXNpcmVkKQ0KICAg
IHsNCiAgICAgICAgZXhjaGFuZ2UoZGVzaXJlZCk7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGlu
ZSBib29sIGNvbXBhcmVFeGNoYW5nZVdlYWsoVCBleHBlY3RlZCwgVCBkZXNpcmVkLCBzdGQ6Om1l
bW9yeV9vcmRlciBvcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3QpDQogICAgew0KICAg
ICAgICBUIGV4cGVjdGVkT3JBY3R1YWwgPSBleHBlY3RlZDsNCiAgICAgICAgcmV0dXJuIHZhbHVl
LmNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhleHBlY3RlZE9yQWN0dWFsLCBkZXNpcmVkLCBvcmRlcik7
DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBib29sIGNvbXBhcmVFeGNoYW5nZVdlYWtSZWxh
eGVkKFQgZXhwZWN0ZWQsIFQgZGVzaXJlZCkNCiAgICB7DQogICAgICAgIHJldHVybiBjb21wYXJl
RXhjaGFuZ2VXZWFrKGV4cGVjdGVkLCBkZXNpcmVkLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgY29tcGFyZUV4Y2hhbmdlV2VhayhU
IGV4cGVjdGVkLCBUIGRlc2lyZWQsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyX3N1Y2Nlc3MsIHN0
ZDo6bWVtb3J5X29yZGVyIG9yZGVyX2ZhaWx1cmUpDQogICAgew0KICAgICAgICBUIGV4cGVjdGVk
T3JBY3R1YWwgPSBleHBlY3RlZDsNCiAgICAgICAgcmV0dXJuIHZhbHVlLmNvbXBhcmVfZXhjaGFu
Z2Vfd2VhayhleHBlY3RlZE9yQWN0dWFsLCBkZXNpcmVkLCBvcmRlcl9zdWNjZXNzLCBvcmRlcl9m
YWlsdXJlKTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICBfX2ZvcmNlaW5saW5lIFQgY29tcGFy
ZUV4Y2hhbmdlU3Ryb25nKFQgZXhwZWN0ZWQsIFQgZGVzaXJlZCwgc3RkOjptZW1vcnlfb3JkZXIg
b3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQ0KICAgIHsNCiAgICAgICAgVCBleHBl
Y3RlZE9yQWN0dWFsID0gZXhwZWN0ZWQ7DQogICAgICAgIHZhbHVlLmNvbXBhcmVfZXhjaGFuZ2Vf
c3Ryb25nKGV4cGVjdGVkT3JBY3R1YWwsIGRlc2lyZWQsIG9yZGVyKTsNCiAgICAgICAgcmV0dXJu
IGV4cGVjdGVkT3JBY3R1YWw7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBUIGNvbXBhcmVF
eGNoYW5nZVN0cm9uZyhUIGV4cGVjdGVkLCBUIGRlc2lyZWQsIHN0ZDo6bWVtb3J5X29yZGVyIG9y
ZGVyX3N1Y2Nlc3MsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyX2ZhaWx1cmUpDQogICAgew0KICAg
ICAgICBUIGV4cGVjdGVkT3JBY3R1YWwgPSBleHBlY3RlZDsNCiAgICAgICAgdmFsdWUuY29tcGFy
ZV9leGNoYW5nZV9zdHJvbmcoZXhwZWN0ZWRPckFjdHVhbCwgZGVzaXJlZCwgb3JkZXJfc3VjY2Vz
cywgb3JkZXJfZmFpbHVyZSk7DQogICAgICAgIHJldHVybiBleHBlY3RlZE9yQWN0dWFsOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+DQogICAgX19mb3JjZWlubGluZSBUIGV4Y2hh
bmdlQWRkKFUgb3BlcmFuZCwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9v
cmRlcl9zZXFfY3N0KSB7IHJldHVybiB2YWx1ZS5mZXRjaF9hZGQob3BlcmFuZCwgb3JkZXIpOyB9
DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4NCiAgICBfX2ZvcmNlaW5saW5lIFQgZXhj
aGFuZ2VBbmQoVSBvcGVyYW5kLCBzdGQ6Om1lbW9yeV9vcmRlciBvcmRlciA9IHN0ZDo6bWVtb3J5
X29yZGVyX3NlcV9jc3QpIHsgcmV0dXJuIHZhbHVlLmZldGNoX2FuZChvcGVyYW5kLCBvcmRlcik7
IH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0KICAgIF9fZm9yY2VpbmxpbmUgVCBl
eGNoYW5nZU9yKFUgb3BlcmFuZCwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9y
eV9vcmRlcl9zZXFfY3N0KSB7IHJldHVybiB2YWx1ZS5mZXRjaF9vcihvcGVyYW5kLCBvcmRlcik7
IH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0KICAgIF9fZm9yY2VpbmxpbmUgVCBl
eGNoYW5nZVN1YihVIG9wZXJhbmQsIHN0ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3RkOjptZW1v
cnlfb3JkZXJfc2VxX2NzdCkgeyByZXR1cm4gdmFsdWUuZmV0Y2hfc3ViKG9wZXJhbmQsIG9yZGVy
KTsgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+DQogICAgX19mb3JjZWlubGluZSBU
IGV4Y2hhbmdlWG9yKFUgb3BlcmFuZCwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1l
bW9yeV9vcmRlcl9zZXFfY3N0KSB7IHJldHVybiB2YWx1ZS5mZXRjaF94b3Iob3BlcmFuZCwgb3Jk
ZXIpOyB9DQogICAgDQogICAgX19mb3JjZWlubGluZSBUIGV4Y2hhbmdlKFQgbmV3VmFsdWUsIHN0
ZDo6bWVtb3J5X29yZGVyIG9yZGVyID0gc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCkgeyByZXR1
cm4gdmFsdWUuZXhjaGFuZ2UobmV3VmFsdWUsIG9yZGVyKTsgfQ0KDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4NCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgdHJhbnNhY3Rpb24oY29uc3QgRnVu
YyYgZnVuYywgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFf
Y3N0KQ0KICAgIHsNCiAgICAgICAgZm9yICg7Oykgew0KICAgICAgICAgICAgVCBvbGRWYWx1ZSA9
IGxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7DQogICAgICAgICAgICBUIG5ld1ZhbHVl
ID0gb2xkVmFsdWU7DQogICAgICAgICAgICBpZiAoIWZ1bmMobmV3VmFsdWUpKQ0KICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIGlmIChjb21wYXJlRXhjaGFuZ2VXZWFr
KG9sZFZhbHVlLCBuZXdWYWx1ZSwgb3JkZXIpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAgICBf
X2ZvcmNlaW5saW5lIGJvb2wgdHJhbnNhY3Rpb25SZWxheGVkKGNvbnN0IEZ1bmMmIGZ1bmMpDQog
ICAgew0KICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24oZnVuYywgc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCk7DQogICAgfQ0KDQogICAgQXRvbWljKCkgPSBkZWZhdWx0Ow0KICAgIGNvbnN0ZXhw
ciBBdG9taWMoVCBpbml0aWFsKQ0KICAgICAgICA6IHZhbHVlKHN0ZDo6Zm9yd2FyZDxUPihpbml0
aWFsKSkNCiAgICB7DQogICAgfQ0KDQogICAgc3RkOjphdG9taWM8VD4gdmFsdWU7DQp9Ow0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KaW5saW5lIFQgYXRvbWljTG9hZChUKiBsb2NhdGlvbiwgc3Rk
OjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQ0Kew0KICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8QXRvbWljPFQ+Kj4obG9jYXRpb24pLT5sb2FkKG9yZGVyKTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmlubGluZSBUIGF0b21pY0xvYWRGdWxseUZlbmNl
ZChUKiBsb2NhdGlvbikNCnsNCiAgICByZXR1cm4gYml0d2lzZV9jYXN0PEF0b21pYzxUPio+KGxv
Y2F0aW9uKS0+bG9hZEZ1bGx5RmVuY2VkKCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpp
bmxpbmUgdm9pZCBhdG9taWNTdG9yZShUKiBsb2NhdGlvbiwgVCBuZXdWYWx1ZSwgc3RkOjptZW1v
cnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQ0Kew0KICAgIGJpdHdp
c2VfY2FzdDxBdG9taWM8VD4qPihsb2NhdGlvbiktPnN0b3JlKG5ld1ZhbHVlLCBvcmRlcik7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgdm9pZCBhdG9taWNTdG9yZUZ1bGx5RmVu
Y2VkKFQqIGxvY2F0aW9uLCBUIG5ld1ZhbHVlKQ0Kew0KICAgIGJpdHdpc2VfY2FzdDxBdG9taWM8
VD4qPihsb2NhdGlvbiktPnN0b3JlRnVsbHlGZW5jZWQobmV3VmFsdWUpOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBUPg0KaW5saW5lIGJvb2wgYXRvbWljQ29tcGFyZUV4Y2hhbmdlV2VhayhUKiBs
b2NhdGlvbiwgVCBleHBlY3RlZCwgVCBuZXdWYWx1ZSwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIg
PSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQ0Kew0KICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
QXRvbWljPFQ+Kj4obG9jYXRpb24pLT5jb21wYXJlRXhjaGFuZ2VXZWFrKGV4cGVjdGVkLCBuZXdW
YWx1ZSwgb3JkZXIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KaW5saW5lIGJvb2wgYXRv
bWljQ29tcGFyZUV4Y2hhbmdlV2Vha1JlbGF4ZWQoVCogbG9jYXRpb24sIFQgZXhwZWN0ZWQsIFQg
bmV3VmFsdWUpDQp7DQogICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxBdG9taWM8VD4qPihsb2NhdGlv
biktPmNvbXBhcmVFeGNoYW5nZVdlYWtSZWxheGVkKGV4cGVjdGVkLCBuZXdWYWx1ZSk7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgVCBhdG9taWNDb21wYXJlRXhjaGFuZ2VTdHJv
bmcoVCogbG9jYXRpb24sIFQgZXhwZWN0ZWQsIFQgbmV3VmFsdWUsIHN0ZDo6bWVtb3J5X29yZGVy
IG9yZGVyID0gc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCkNCnsNCiAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PEF0b21pYzxUPio+KGxvY2F0aW9uKS0+Y29tcGFyZUV4Y2hhbmdlU3Ryb25nKGV4cGVj
dGVkLCBuZXdWYWx1ZSwgb3JkZXIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPg0KaW5saW5lIFQgYXRvbWljRXhjaGFuZ2VBZGQoVCogbG9jYXRpb24sIFUgb3BlcmFuZCwg
c3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQ0Kew0K
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QXRvbWljPFQ+Kj4obG9jYXRpb24pLT5leGNoYW5nZUFk
ZChvcGVyYW5kLCBvcmRlcik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
DQppbmxpbmUgVCBhdG9taWNFeGNoYW5nZUFuZChUKiBsb2NhdGlvbiwgVSBvcGVyYW5kLCBzdGQ6
Om1lbW9yeV9vcmRlciBvcmRlciA9IHN0ZDo6bWVtb3J5X29yZGVyX3NlcV9jc3QpDQp7DQogICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxBdG9taWM8VD4qPihsb2NhdGlvbiktPmV4Y2hhbmdlQW5kKG9w
ZXJhbmQsIG9yZGVyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCmlu
bGluZSBUIGF0b21pY0V4Y2hhbmdlT3IoVCogbG9jYXRpb24sIFUgb3BlcmFuZCwgc3RkOjptZW1v
cnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQ0Kew0KICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8QXRvbWljPFQ+Kj4obG9jYXRpb24pLT5leGNoYW5nZU9yKG9wZXJhbmQs
IG9yZGVyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCmlubGluZSBU
IGF0b21pY0V4Y2hhbmdlU3ViKFQqIGxvY2F0aW9uLCBVIG9wZXJhbmQsIHN0ZDo6bWVtb3J5X29y
ZGVyIG9yZGVyID0gc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCkNCnsNCiAgICByZXR1cm4gYml0
d2lzZV9jYXN0PEF0b21pYzxUPio+KGxvY2F0aW9uKS0+ZXhjaGFuZ2VTdWIob3BlcmFuZCwgb3Jk
ZXIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIFQgYXRv
bWljRXhjaGFuZ2VYb3IoVCogbG9jYXRpb24sIFUgb3BlcmFuZCwgc3RkOjptZW1vcnlfb3JkZXIg
b3JkZXIgPSBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0KQ0Kew0KICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8QXRvbWljPFQ+Kj4obG9jYXRpb24pLT5leGNoYW5nZVhvcihvcGVyYW5kLCBvcmRlcik7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgVCBhdG9taWNFeGNoYW5nZShUKiBs
b2NhdGlvbiwgVCBuZXdWYWx1ZSwgc3RkOjptZW1vcnlfb3JkZXIgb3JkZXIgPSBzdGQ6Om1lbW9y
eV9vcmRlcl9zZXFfY3N0KQ0Kew0KICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QXRvbWljPFQ+Kj4o
bG9jYXRpb24pLT5leGNoYW5nZShuZXdWYWx1ZSwgb3JkZXIpOw0KfQ0KDQoNCg0KDQppbmxpbmUg
dm9pZCBjb21waWxlckZlbmNlKCkNCnsNCg0KICAgIF9SZWFkV3JpdGVCYXJyaWVyKCk7DQoNCg0K
I2xpbmUgMjUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9BdG9taWNzLmgiDQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjgyICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9BdG9taWNzLmgiDQoNCmlubGlu
ZSB2b2lkIHg4Nl9vcnRvcCgpDQp7DQoNCiAgICBfX2Zhc3RzdG9yZWZlbmNlKCk7DQoNCg0KDQoN
Cg0KDQojbGluZSAyOTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL0F0b21pY3MuaCINCn0NCg0KaW5saW5lIHZvaWQgeDg2X2NwdWlkKCkN
CnsNCg0KICAgIGludCBpbmZvWzRdOw0KICAgIF9fY3B1aWQoaW5mbywgMCk7DQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDMwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvQXRvbWljcy5oIg0KfQ0KDQppbmxpbmUgdm9pZCBsb2FkTG9hZEZlbmNl
KCkgeyBjb21waWxlckZlbmNlKCk7IH0NCmlubGluZSB2b2lkIGxvYWRTdG9yZUZlbmNlKCkgeyBj
b21waWxlckZlbmNlKCk7IH0NCmlubGluZSB2b2lkIHN0b3JlTG9hZEZlbmNlKCkgeyB4ODZfb3J0
b3AoKTsgfQ0KaW5saW5lIHZvaWQgc3RvcmVTdG9yZUZlbmNlKCkgeyBjb21waWxlckZlbmNlKCk7
IH0NCmlubGluZSB2b2lkIG1lbW9yeUJhcnJpZXJBZnRlckxvY2soKSB7IGNvbXBpbGVyRmVuY2Uo
KTsgfQ0KaW5saW5lIHZvaWQgbWVtb3J5QmFycmllckJlZm9yZVVubG9jaygpIHsgY29tcGlsZXJG
ZW5jZSgpOyB9DQppbmxpbmUgdm9pZCBjcm9zc01vZGlmeWluZ0NvZGVGZW5jZSgpIHsgeDg2X2Nw
dWlkKCk7IH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMzAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0F0b21pY3MuaCINCg0K
dHlwZWRlZiB1bnNpZ25lZCBJbnRlcm5hbERlcGVuZGVuY3lUeXBlOw0KDQppbmxpbmUgSW50ZXJu
YWxEZXBlbmRlbmN5VHlwZSBvcGFxdWVNaXh0dXJlKCkNCnsNCiAgICByZXR1cm4gMDsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBUPg0KaW5saW5lIEludGVy
bmFsRGVwZW5kZW5jeVR5cGUgb3BhcXVlTWl4dHVyZShUIHZhbHVlLCBBcmd1bWVudHMuLi4gYXJn
dW1lbnRzKQ0Kew0KICAgIHVuaW9uIHsNCiAgICAgICAgSW50ZXJuYWxEZXBlbmRlbmN5VHlwZSBj
b3B5Ow0KICAgICAgICBUIHZhbHVlOw0KICAgIH0gdTsNCiAgICB1LmNvcHkgPSAwOw0KICAgIHUu
dmFsdWUgPSB2YWx1ZTsNCiAgICByZXR1cm4gb3BhcXVlTWl4dHVyZShhcmd1bWVudHMuLi4pICsg
dS5jb3B5Ow0KfQ0KDQpjbGFzcyBEZXBlbmRlbmN5IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50
OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvID0gaW50Ow0KcHVibGljOg0KICAgIERlcGVuZGVuY3koKQ0KICAgICAgICA6IG1fdmFsdWUo
MCkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4NCiAgICBzdGF0aWMgRGVwZW5kZW5jeSBmZW5jZShB
cmd1bWVudHMuLi4gYXJndW1lbnRzKQ0KICAgIHsNCiAgICAgICAgSW50ZXJuYWxEZXBlbmRlbmN5
VHlwZSBpbnB1dCA9IG9wYXF1ZU1peHR1cmUoYXJndW1lbnRzLi4uKTsNCiAgICAgICAgSW50ZXJu
YWxEZXBlbmRlbmN5VHlwZSBvdXRwdXQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDM4MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvQXRvbWljcy5oIg0KDQoNCg0KI2xpbmUgMzg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9BdG9taWNzLmgiDQogICAgICAgIA0K
ICAgICAgICBsb2FkTG9hZEZlbmNlKCk7DQogICAgICAgIG91dHB1dCA9IDA7DQogICAgICAgICh2
b2lkKWlucHV0Ow0KI2xpbmUgMzkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9BdG9taWNzLmgiDQogICAgICAgIERlcGVuZGVuY3kgcmVz
dWx0Ow0KICAgICAgICByZXN1bHQubV92YWx1ZSA9IG91dHB1dDsNCiAgICAgICAgcmV0dXJuIHJl
c3VsdDsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4N
CiAgICBUKiBjb25zdW1lKFQqIHBvaW50ZXIpDQogICAgew0KDQoNCiNsaW5lIDQwMyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXRvbWlj
cy5oIg0KICAgICAgICAodm9pZCltX3ZhbHVlOw0KICAgICAgICByZXR1cm4gcG9pbnRlcjsNCiNs
aW5lIDQwNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvQXRvbWljcy5oIg0KICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgSW50ZXJuYWxE
ZXBlbmRlbmN5VHlwZSBtX3ZhbHVlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRUeXBl
LCB0eXBlbmFtZSBWYWx1ZVR5cGU+DQpzdHJ1Y3QgSW5wdXRBbmRWYWx1ZSB7DQogICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
eyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQg
PSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8g
PSBpbnQ7DQoNCiAgICBJbnB1dEFuZFZhbHVlKCkgeyB9DQogICAgDQogICAgSW5wdXRBbmRWYWx1
ZShJbnB1dFR5cGUgaW5wdXQsIFZhbHVlVHlwZSB2YWx1ZSkNCiAgICAgICAgOiBpbnB1dChpbnB1
dCkNCiAgICAgICAgLCB2YWx1ZSh2YWx1ZSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIElucHV0
VHlwZSBpbnB1dDsNCiAgICBWYWx1ZVR5cGUgdmFsdWU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnB1dFR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4NCklucHV0QW5kVmFsdWU8SW5wdXRUeXBl
LCBWYWx1ZVR5cGU+IGlucHV0QW5kVmFsdWUoSW5wdXRUeXBlIGlucHV0LCBWYWx1ZVR5cGUgdmFs
dWUpDQp7DQogICAgcmV0dXJuIElucHV0QW5kVmFsdWU8SW5wdXRUeXBlLCBWYWx1ZVR5cGU+KGlu
cHV0LCB2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmM+DQpf
X2ZvcmNlaW5saW5lIFQmIGVuc3VyZVBvaW50ZXIoQXRvbWljPFQqPiYgcG9pbnRlciwgY29uc3Qg
RnVuYyYgZnVuYykNCnsNCiAgICBmb3IgKDs7KSB7DQogICAgICAgIFQqIG9sZFZhbHVlID0gcG9p
bnRlci5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOw0KICAgICAgICBpZiAob2xkVmFs
dWUpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gKm9s
ZFZhbHVlOw0KICAgICAgICB9DQogICAgICAgIFQqIG5ld1ZhbHVlID0gZnVuYygpOw0KICAgICAg
ICBpZiAocG9pbnRlci5jb21wYXJlRXhjaGFuZ2VXZWFrKG9sZFZhbHVlLCBuZXdWYWx1ZSkpDQog
ICAgICAgICAgICByZXR1cm4gKm5ld1ZhbHVlOw0KICAgICAgICBkZWxldGUgbmV3VmFsdWU7DQog
ICAgfQ0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6OkF0b21pYzsNCnVzaW5nIFdURjo6RGVwZW5kZW5j
eTsNCnVzaW5nIFdURjo6SW5wdXRBbmRWYWx1ZTsNCnVzaW5nIFdURjo6aW5wdXRBbmRWYWx1ZTsN
CnVzaW5nIFdURjo6ZW5zdXJlUG9pbnRlcjsNCnVzaW5nIFdURjo6b3BhcXVlTWl4dHVyZTsNCiNs
aW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9XVEZDb25maWcuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGFnZUJsb2NrLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA1MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvUGFnZUJsb2NrLmgiDQpjb25zdGV4cHIgc2l6ZV90IENlaWxpbmdPblBh
Z2VTaXplID0gNCAqIEtCOw0KDQoNCg0KDQojbGluZSA1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGFnZUJsb2NrLmgiDQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgcGFnZVNpemUoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBzaXplX3QgcGFnZU1hc2soKTsNCmlubGluZSBib29sIGlzUGFnZUFsaWduZWQodm9pZCogYWRk
cmVzcykgeyByZXR1cm4gIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRyZXNzKSAmIChw
YWdlU2l6ZSgpIC0gMSkpOyB9DQppbmxpbmUgYm9vbCBpc1BhZ2VBbGlnbmVkKHNpemVfdCBzaXpl
KSB7IHJldHVybiAhKHNpemUgJiAocGFnZVNpemUoKSAtIDEpKTsgfQ0KaW5saW5lIGJvb2wgaXNQ
b3dlck9mVHdvKHNpemVfdCBzaXplKSB7IHJldHVybiAhKHNpemUgJiAoc2l6ZSAtIDEpKTsgfQ0K
DQpjbGFzcyBQYWdlQmxvY2sgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJl
dHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVy
biBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVz
aW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpw
dWJsaWM6DQogICAgUGFnZUJsb2NrKCkgPSBkZWZhdWx0Ow0KICAgIFBhZ2VCbG9jayh2b2lkKiwg
c2l6ZV90LCBib29sIGhhc0d1YXJkUGFnZXMpOw0KICAgIA0KICAgIHZvaWQqIGJhc2UoKSBjb25z
dCB7IHJldHVybiBtX2Jhc2U7IH0NCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQ0KDQogICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9yZWFsQmFz
ZTsgfQ0KDQogICAgYm9vbCBjb250YWlucyh2b2lkKiBjb250YWluZWRCYXNlLCBzaXplX3QgY29u
dGFpbmVkU2l6ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBjb250YWluZWRCYXNlID49IG1fYmFz
ZQ0KICAgICAgICAgICAgJiYgKHN0YXRpY19jYXN0PGNoYXIqPihjb250YWluZWRCYXNlKSArIGNv
bnRhaW5lZFNpemUpIDw9IChzdGF0aWNfY2FzdDxjaGFyKj4obV9iYXNlKSArIG1fc2l6ZSk7DQog
ICAgfQ0KDQpwcml2YXRlOg0KICAgIHZvaWQqIG1fcmVhbEJhc2UgeyBudWxscHRyIH07DQogICAg
dm9pZCogbV9iYXNlIHsgbnVsbHB0ciB9Ow0KICAgIHNpemVfdCBtX3NpemUgeyAwIH07DQp9Ow0K
DQppbmxpbmUgUGFnZUJsb2NrOjpQYWdlQmxvY2sodm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIGJv
b2wgaGFzR3VhcmRQYWdlcykNCiAgICA6IG1fcmVhbEJhc2UoYmFzZSkNCiAgICAsIG1fYmFzZShz
dGF0aWNfY2FzdDxjaGFyKj4oYmFzZSkgKyAoKGJhc2UgJiYgaGFzR3VhcmRQYWdlcykgPyBwYWdl
U2l6ZSgpIDogMCkpDQogICAgLCBtX3NpemUoc2l6ZSkNCnsNCn0NCg0KfSANCg0KdXNpbmcgV1RG
OjpDZWlsaW5nT25QYWdlU2l6ZTsNCnVzaW5nIFdURjo6cGFnZVNpemU7DQp1c2luZyBXVEY6Omlz
UGFnZUFsaWduZWQ7DQp1c2luZyBXVEY6OmlzUG93ZXJPZlR3bzsNCiNsaW5lIDMyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9XVEZDb25m
aWcuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1B0clRhZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9EYXRhTG9nLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUHJpbnRTdHJlYW0uaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGlu
ZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR1
cGxlIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcGFj
ayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODgg
NDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUw
MjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KDQp0
ZW1wbGF0ZSA8Ym9vbCBfU2FtZSwgY2xhc3MgX0Rlc3QsIGNsYXNzLi4uIF9TcmNzPg0KaW5saW5l
IGNvbnN0ZXhwciBib29sIF9UdXBsZV9jb25kaXRpb25hbF9leHBsaWNpdF92MCA9IGZhbHNlOw0K
DQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0Rlc3RzLCBjbGFzcy4uLiBfU3Jjcz4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCBfVHVwbGVfY29uZGl0aW9uYWxfZXhwbGljaXRfdjA8dHJ1ZSwgdHVwbGU8X0Rl
c3RzLi4uPiwgX1NyY3MuLi4+ID0NCiAgICAhY29uanVuY3Rpb25fdjxpc19jb252ZXJ0aWJsZTxf
U3JjcywgX0Rlc3RzPi4uLj47DQoNCnRlbXBsYXRlIDxjbGFzcyBfRGVzdCwgY2xhc3MuLi4gX1Ny
Y3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1R1cGxlX2NvbmRpdGlvbmFsX2V4cGxpY2l0X3Yg
PQ0KICAgIF9UdXBsZV9jb25kaXRpb25hbF9leHBsaWNpdF92MDx0dXBsZV9zaXplX3Y8X0Rlc3Q+
ID09IHNpemVvZi4uLihfU3JjcyksIF9EZXN0LCBfU3Jjcy4uLj47DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjIgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCg0KdGVtcGxh
dGUgPGJvb2wgX1NhbWUsIGNsYXNzIF9EZXN0LCBjbGFzcy4uLiBfU3Jjcz4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCBfVHVwbGVfY29uc3RydWN0aWJsZV92MCA9IGZhbHNlOw0KDQp0ZW1wbGF0ZSA8
Y2xhc3MuLi4gX0Rlc3RzLCBjbGFzcy4uLiBfU3Jjcz4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBf
VHVwbGVfY29uc3RydWN0aWJsZV92MDx0cnVlLCB0dXBsZTxfRGVzdHMuLi4+LCBfU3Jjcy4uLj4g
PQ0KICAgIGNvbmp1bmN0aW9uX3Y8aXNfY29uc3RydWN0aWJsZTxfRGVzdHMsIF9TcmNzPi4uLj47
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRGVzdCwgY2xhc3MuLi4gX1NyY3M+DQppbmxpbmUgY29uc3Rl
eHByIGJvb2wgX1R1cGxlX2NvbnN0cnVjdGlibGVfdiA9DQogICAgX1R1cGxlX2NvbnN0cnVjdGli
bGVfdjA8dHVwbGVfc2l6ZV92PF9EZXN0PiA9PSBzaXplb2YuLi4oX1NyY3MpLCBfRGVzdCwgX1Ny
Y3MuLi4+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Rlc3QsIGNsYXNzLi4uIF9TcmNzPg0Kc3RydWN0
IF9UdXBsZV9jb25zdHJ1Y3RpYmxlX3ZhbCA6IGJvb2xfY29uc3RhbnQ8X1R1cGxlX2NvbnN0cnVj
dGlibGVfdjxfRGVzdCwgX1NyY3MuLi4+PiB7fTsNCg0KDQp0ZW1wbGF0ZSA8Ym9vbCBfU2FtZSwg
Y2xhc3MgX0Rlc3QsIGNsYXNzLi4uIF9TcmNzPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9UdXBs
ZV9ub3Rocm93X2NvbnN0cnVjdGlibGVfdjAgPSBmYWxzZTsNCg0KdGVtcGxhdGUgPGNsYXNzLi4u
IF9EZXN0cywgY2xhc3MuLi4gX1NyY3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1R1cGxlX25v
dGhyb3dfY29uc3RydWN0aWJsZV92MDx0cnVlLCB0dXBsZTxfRGVzdHMuLi4+LCBfU3Jjcy4uLj4g
PQ0KICAgIGNvbmp1bmN0aW9uX3Y8aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPF9EZXN0cywgX1Ny
Y3M+Li4uPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9EZXN0LCBjbGFzcy4uLiBfU3Jjcz4NCmlubGlu
ZSBjb25zdGV4cHIgYm9vbCBfVHVwbGVfbm90aHJvd19jb25zdHJ1Y3RpYmxlX3YgPQ0KICAgIF9U
dXBsZV9ub3Rocm93X2NvbnN0cnVjdGlibGVfdjA8dHVwbGVfc2l6ZV92PF9EZXN0PiA9PSBzaXpl
b2YuLi4oX1NyY3MpLCBfRGVzdCwgX1NyY3MuLi4+Ow0KDQoNCnRlbXBsYXRlIDxib29sIF9TYW1l
LCBjbGFzcyBfRGVzdCwgY2xhc3MuLi4gX1NyY3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1R1
cGxlX2Fzc2lnbmFibGVfdjAgPSBmYWxzZTsNCg0KdGVtcGxhdGUgPGNsYXNzLi4uIF9EZXN0cywg
Y2xhc3MuLi4gX1NyY3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1R1cGxlX2Fzc2lnbmFibGVf
djA8dHJ1ZSwgdHVwbGU8X0Rlc3RzLi4uPiwgX1NyY3MuLi4+ID0NCiAgICBjb25qdW5jdGlvbl92
PGlzX2Fzc2lnbmFibGU8X0Rlc3RzJiwgX1NyY3M+Li4uPjsgDQoNCnRlbXBsYXRlIDxjbGFzcyBf
RGVzdCwgY2xhc3MuLi4gX1NyY3M+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX1R1cGxlX2Fzc2ln
bmFibGVfdiA9DQogICAgX1R1cGxlX2Fzc2lnbmFibGVfdjA8dHVwbGVfc2l6ZV92PF9EZXN0PiA9
PSBzaXplb2YuLi4oX1NyY3MpLCBfRGVzdCwgX1NyY3MuLi4+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0Rlc3QsIGNsYXNzLi4uIF9TcmNzPg0Kc3RydWN0IF9UdXBsZV9hc3NpZ25hYmxlX3ZhbCA6IGJv
b2xfY29uc3RhbnQ8X1R1cGxlX2Fzc2lnbmFibGVfdjxfRGVzdCwgX1NyY3MuLi4+PiB7fTsNCg0K
DQp0ZW1wbGF0ZSA8Ym9vbCBfU2FtZSwgY2xhc3MgX0Rlc3QsIGNsYXNzLi4uIF9TcmNzPg0KaW5s
aW5lIGNvbnN0ZXhwciBib29sIF9UdXBsZV9ub3Rocm93X2Fzc2lnbmFibGVfdjAgPSBmYWxzZTsN
Cg0KdGVtcGxhdGUgPGNsYXNzLi4uIF9EZXN0cywgY2xhc3MuLi4gX1NyY3M+DQppbmxpbmUgY29u
c3RleHByIGJvb2wgX1R1cGxlX25vdGhyb3dfYXNzaWduYWJsZV92MDx0cnVlLCB0dXBsZTxfRGVz
dHMuLi4+LCBfU3Jjcy4uLj4gPQ0KICAgIGNvbmp1bmN0aW9uX3Y8aXNfbm90aHJvd19hc3NpZ25h
YmxlPF9EZXN0cyYsIF9TcmNzPi4uLj47IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Rlc3QsIGNsYXNz
Li4uIF9TcmNzPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9UdXBsZV9ub3Rocm93X2Fzc2lnbmFi
bGVfdiA9DQogICAgX1R1cGxlX25vdGhyb3dfYXNzaWduYWJsZV92MDx0dXBsZV9zaXplX3Y8X0Rl
c3Q+ID09IHNpemVvZi4uLihfU3JjcyksIF9EZXN0LCBfU3Jjcy4uLj47DQoNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX015c2VsZiwgY2xhc3MuLi4gX090aGVyPg0Kc3RydWN0IF9UdXBsZV9jb252ZXJ0
X2NvcHlfdmFsIDogdHJ1ZV90eXBlIHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RoaXMsIGNsYXNz
IF9VdHk+DQpzdHJ1Y3QgX1R1cGxlX2NvbnZlcnRfY29weV92YWw8dHVwbGU8X1RoaXM+LCBfVXR5
Pg0KICAgIDogYm9vbF9jb25zdGFudDwhZGlzanVuY3Rpb25fdjxpc19zYW1lPF9UaGlzLCBfVXR5
PiwgaXNfY29uc3RydWN0aWJsZTxfVGhpcywgY29uc3QgdHVwbGU8X1V0eT4mPiwNCiAgICAgICAg
ICBpc19jb252ZXJ0aWJsZTxjb25zdCB0dXBsZTxfVXR5PiYsIF9UaGlzPj4+IHt9Ow0KDQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9NeXNlbGYsIGNsYXNzLi4uIF9PdGhlcj4NCnN0cnVjdCBfVHVwbGVf
Y29udmVydF9tb3ZlX3ZhbCA6IHRydWVfdHlwZSB7fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UaGlz
LCBjbGFzcyBfVXR5Pg0Kc3RydWN0IF9UdXBsZV9jb252ZXJ0X21vdmVfdmFsPHR1cGxlPF9UaGlz
PiwgX1V0eT4NCiAgICA6IGJvb2xfY29uc3RhbnQ8IWRpc2p1bmN0aW9uX3Y8aXNfc2FtZTxfVGhp
cywgX1V0eT4sIGlzX2NvbnN0cnVjdGlibGU8X1RoaXMsIHR1cGxlPF9VdHk+PiwNCiAgICAgICAg
ICBpc19jb252ZXJ0aWJsZTx0dXBsZTxfVXR5PiwgX1RoaXM+Pj4ge307DQoNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX015c2VsZiwgY2xhc3MgX1RoaXMyLCBjbGFzcy4uLiBfUmVzdDI+DQpzdHJ1Y3Qg
X1R1cGxlX3BlcmZlY3RfdmFsIDogdHJ1ZV90eXBlIHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX015
c2VsZiwgY2xhc3MgX1RoaXMyPg0Kc3RydWN0IF9UdXBsZV9wZXJmZWN0X3ZhbDxfTXlzZWxmLCBf
VGhpczI+DQogICAgOiBib29sX2NvbnN0YW50PCFpc19zYW1lX3Y8X015c2VsZiwgcmVtb3ZlX2Nv
bnN0X3Q8cmVtb3ZlX3JlZmVyZW5jZV90PF9UaGlzMj4+Pj4ge307DQoNCg0Kc3RydWN0IF9JZ25v
cmUgeyANCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KICAgIGNvbnN0ZXhwciBjb25zdCBfSWdu
b3JlJiBvcGVyYXRvcj0oY29uc3QgX1R5JikgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgDQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQp9Ow0KDQppbmxpbmUgY29uc3RleHByIF9JZ25v
cmUgaWdub3Jle307DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeT4NCnN0cnVjdCBfVHVwbGVfdmFs
IHsgDQogICAgY29uc3RleHByIF9UdXBsZV92YWwoKSA6IF9WYWwoKSB7fQ0KDQogICAgdGVtcGxh
dGUgPGNsYXNzIF9PdGhlcj4NCiAgICBjb25zdGV4cHIgX1R1cGxlX3ZhbChfT3RoZXImJiBfQXJn
KSA6IF9WYWwoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcj4oX0FyZykpIHt9DQoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0FsbG9jLCBjbGFzcy4uLiBfT3RoZXIsIGVuYWJsZV9pZl90PCF1c2VzX2FsbG9j
YXRvcl92PF9UeSwgX0FsbG9jPiwgaW50PiA9IDA+DQogICAgY29uc3RleHByIF9UdXBsZV92YWwo
Y29uc3QgX0FsbG9jJiwgYWxsb2NhdG9yX2FyZ190LCBfT3RoZXImJi4uLiBfQXJnKSA6IF9WYWwo
OjpzdGQ6OiBmb3J3YXJkPF9PdGhlcj4oX0FyZykuLi4pIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX0FsbG9jLCBjbGFzcy4uLiBfT3RoZXIsDQogICAgICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0
aW9uX3Y8dXNlc19hbGxvY2F0b3I8X1R5LCBfQWxsb2M+LA0KICAgICAgICAgICAgICAgICAgICAg
ICAgaXNfY29uc3RydWN0aWJsZTxfVHksIGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiwg
X090aGVyLi4uPj4sDQogICAgICAgICAgICBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgX1R1cGxl
X3ZhbChjb25zdCBfQWxsb2MmIF9BbCwgYWxsb2NhdG9yX2FyZ190LCBfT3RoZXImJi4uLiBfQXJn
KQ0KICAgICAgICA6IF9WYWwoYWxsb2NhdG9yX2FyZywgX0FsLCA6OnN0ZDo6IGZvcndhcmQ8X090
aGVyPihfQXJnKS4uLikge30NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzLi4u
IF9PdGhlciwNCiAgICAgICAgZW5hYmxlX2lmX3Q8Y29uanVuY3Rpb25fdjx1c2VzX2FsbG9jYXRv
cjxfVHksIF9BbGxvYz4sDQogICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGlvbjxpc19jb25z
dHJ1Y3RpYmxlPF9UeSwgYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmLCBfT3RoZXIuLi4+
Pj4sDQogICAgICAgICAgICBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgX1R1cGxlX3ZhbChjb25z
dCBfQWxsb2MmIF9BbCwgYWxsb2NhdG9yX2FyZ190LCBfT3RoZXImJi4uLiBfQXJnKQ0KICAgICAg
ICA6IF9WYWwoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcj4oX0FyZykuLi4sIF9BbCkge30NCg0KICAg
IF9UeSBfVmFsOw0KfTsNCg0KDQpzdHJ1Y3QgX0V4YWN0X2FyZ3NfdCB7DQogICAgZXhwbGljaXQg
X0V4YWN0X2FyZ3NfdCgpID0gZGVmYXVsdDsNCn07IA0KDQpzdHJ1Y3QgX1VucGFja190dXBsZV90
IHsNCiAgICBleHBsaWNpdCBfVW5wYWNrX3R1cGxlX3QoKSA9IGRlZmF1bHQ7DQp9OyANCg0Kc3Ry
dWN0IF9BbGxvY19leGFjdF9hcmdzX3Qgew0KICAgIGV4cGxpY2l0IF9BbGxvY19leGFjdF9hcmdz
X3QoKSA9IGRlZmF1bHQ7DQp9OyANCg0Kc3RydWN0IF9BbGxvY191bnBhY2tfdHVwbGVfdCB7DQog
ICAgZXhwbGljaXQgX0FsbG9jX3VucGFja190dXBsZV90KCkgPSBkZWZhdWx0Ow0KfTsgDQoNCnRl
bXBsYXRlIDxjbGFzcy4uLiBfVHlwZXM+DQpjbGFzcyB0dXBsZTsNCg0KdGVtcGxhdGUgPD4NCmNs
YXNzIHR1cGxlPD4geyANCnB1YmxpYzoNCiAgICBjb25zdGV4cHIgdHVwbGUoKSBub2V4Y2VwdCAg
e30NCg0KICAgIGNvbnN0ZXhwciB0dXBsZShjb25zdCB0dXBsZSYpIG5vZXhjZXB0ICB7fSANCg0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+DQogICAgaW5saW5lIHR1cGxlKGFsbG9jYXRvcl9h
cmdfdCwgY29uc3QgX0FsbG9jJikgbm9leGNlcHQgIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X0FsbG9jPg0KICAgIGlubGluZSB0dXBsZShhbGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxvYyYs
IGNvbnN0IHR1cGxlJikgbm9leGNlcHQgIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RhZywg
ZW5hYmxlX2lmX3Q8aXNfc2FtZV92PF9UYWcsIF9FeGFjdF9hcmdzX3Q+LCBpbnQ+ID0gMD4NCiAg
ICBjb25zdGV4cHIgdHVwbGUoX1RhZykgbm9leGNlcHQgIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1RhZywgY2xhc3MgX0FsbG9jLCBlbmFibGVfaWZfdDxpc19zYW1lX3Y8X1RhZywgX0FsbG9j
X2V4YWN0X2FyZ3NfdD4sIGludD4gPSAwPg0KICAgIGNvbnN0ZXhwciB0dXBsZShfVGFnLCBjb25z
dCBfQWxsb2MmKSBub2V4Y2VwdCAge30NCg0KICAgIGNvbnN0ZXhwciB0dXBsZSYgb3BlcmF0b3I9
KGNvbnN0IHR1cGxlJikgPSBkZWZhdWx0Ow0KDQogICAgaW5saW5lIHZvaWQgc3dhcCh0dXBsZSYp
IG5vZXhjZXB0IHt9DQoNCiAgICBjb25zdGV4cHIgYm9vbCBfRXF1YWxzKGNvbnN0IHR1cGxlJikg
Y29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICBjb25z
dGV4cHIgYm9vbCBfTGVzcyhjb25zdCB0dXBsZSYpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVGhpcywgY2xhc3Mu
Li4gX1Jlc3Q+DQpjbGFzcyB0dXBsZTxfVGhpcywgX1Jlc3QuLi4+IDogcHJpdmF0ZSB0dXBsZTxf
UmVzdC4uLj4geyANCnB1YmxpYzoNCiAgICB1c2luZyBfVGhpc190eXBlID0gX1RoaXM7DQogICAg
dXNpbmcgX015YmFzZSAgICA9IHR1cGxlPF9SZXN0Li4uPjsNCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfVGFnLCBjbGFzcyBfVGhpczIsIGNsYXNzLi4uIF9SZXN0MiwgZW5hYmxlX2lmX3Q8aXNfc2Ft
ZV92PF9UYWcsIF9FeGFjdF9hcmdzX3Q+LCBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgdHVwbGUo
X1RhZywgX1RoaXMyJiYgX1RoaXNfYXJnLCBfUmVzdDImJi4uLiBfUmVzdF9hcmcpDQogICAgICAg
IDogX015YmFzZShfRXhhY3RfYXJnc190e30sIDo6c3RkOjogZm9yd2FyZDxfUmVzdDI+KF9SZXN0
X2FyZykuLi4pLCBfTXlmaXJzdCg6OnN0ZDo6IGZvcndhcmQ8X1RoaXMyPihfVGhpc19hcmcpKSB7
fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UYWcsIGNsYXNzIF9UcGwsIHNpemVfdC4uLiBfSW5k
aWNlcywgZW5hYmxlX2lmX3Q8aXNfc2FtZV92PF9UYWcsIF9VbnBhY2tfdHVwbGVfdD4sIGludD4g
PSAwPg0KICAgIGNvbnN0ZXhwciB0dXBsZShfVGFnLCBfVHBsJiYgX1JpZ2h0LCBpbmRleF9zZXF1
ZW5jZTxfSW5kaWNlcy4uLj4pOw0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UYWcsIGNsYXNzIF9U
cGwsIGVuYWJsZV9pZl90PGlzX3NhbWVfdjxfVGFnLCBfVW5wYWNrX3R1cGxlX3Q+LCBpbnQ+ID0g
MD4NCiAgICBjb25zdGV4cHIgdHVwbGUoX1RhZywgX1RwbCYmIF9SaWdodCkNCiAgICAgICAgOiB0
dXBsZShfVW5wYWNrX3R1cGxlX3R7fSwgOjpzdGQ6OiBmb3J3YXJkPF9UcGw+KF9SaWdodCksDQog
ICAgICAgICAgICBtYWtlX2luZGV4X3NlcXVlbmNlPHR1cGxlX3NpemVfdjxyZW1vdmVfcmVmZXJl
bmNlX3Q8X1RwbD4+Pnt9KSB7fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UYWcsIGNsYXNzIF9B
bGxvYywgY2xhc3MgX1RoaXMyLCBjbGFzcy4uLiBfUmVzdDIsDQogICAgICAgIGVuYWJsZV9pZl90
PGlzX3NhbWVfdjxfVGFnLCBfQWxsb2NfZXhhY3RfYXJnc190PiwgaW50PiA9IDA+DQogICAgY29u
c3RleHByIHR1cGxlKF9UYWcsIGNvbnN0IF9BbGxvYyYgX0FsLCBfVGhpczImJiBfVGhpc19hcmcs
IF9SZXN0MiYmLi4uIF9SZXN0X2FyZykNCiAgICAgICAgOiBfTXliYXNlKF9BbGxvY19leGFjdF9h
cmdzX3R7fSwgX0FsLCA6OnN0ZDo6IGZvcndhcmQ8X1Jlc3QyPihfUmVzdF9hcmcpLi4uKSwNCiAg
ICAgICAgICBfTXlmaXJzdChfQWwsIGFsbG9jYXRvcl9hcmcsIDo6c3RkOjogZm9yd2FyZDxfVGhp
czI+KF9UaGlzX2FyZykpIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RhZywgY2xhc3MgX0Fs
bG9jLCBjbGFzcyBfVHBsLCBzaXplX3QuLi4gX0luZGljZXMsDQogICAgICAgIGVuYWJsZV9pZl90
PGlzX3NhbWVfdjxfVGFnLCBfQWxsb2NfdW5wYWNrX3R1cGxlX3Q+LCBpbnQ+ID0gMD4NCiAgICBj
b25zdGV4cHIgdHVwbGUoX1RhZywgY29uc3QgX0FsbG9jJiBfQWwsIF9UcGwmJiBfUmlnaHQsIGlu
ZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPik7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RhZywg
Y2xhc3MgX0FsbG9jLCBjbGFzcyBfVHBsLCBlbmFibGVfaWZfdDxpc19zYW1lX3Y8X1RhZywgX0Fs
bG9jX3VucGFja190dXBsZV90PiwgaW50PiA9IDA+DQogICAgY29uc3RleHByIHR1cGxlKF9UYWcs
IGNvbnN0IF9BbGxvYyYgX0FsLCBfVHBsJiYgX1JpZ2h0KQ0KICAgICAgICA6IHR1cGxlKF9BbGxv
Y191bnBhY2tfdHVwbGVfdHt9LCBfQWwsIDo6c3RkOjogZm9yd2FyZDxfVHBsPihfUmlnaHQpLA0K
ICAgICAgICAgICAgbWFrZV9pbmRleF9zZXF1ZW5jZTx0dXBsZV9zaXplX3Y8cmVtb3ZlX3JlZmVy
ZW5jZV90PF9UcGw+Pj57fSkge30NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UaGlzMiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gX1RoaXMsDQogICAgICAgIGVuYWJsZV9pZl90PGNvbmp1
bmN0aW9uX3Y8aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9UaGlzMj4sIGlzX2RlZmF1bHRfY29u
c3RydWN0aWJsZTxfUmVzdD4uLi4+LCBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgZXhwbGljaXQo
DQogICAgICAgICFjb25qdW5jdGlvbl92PF9Jc19pbXBsaWNpdGx5X2RlZmF1bHRfY29uc3RydWN0
aWJsZTxfVGhpczI+LCBfSXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1Jlc3Q+
Li4uPikNCiAgICAgICAgdHVwbGUoKSBub2V4Y2VwdChjb25qdW5jdGlvbl92PGlzX25vdGhyb3df
ZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9UaGlzMj4sDQogICAgICAgICAgICBpc19ub3Rocm93X2Rl
ZmF1bHRfY29uc3RydWN0aWJsZTxfUmVzdD4uLi4+KSANCiAgICAgICAgOiBfTXliYXNlKCksIF9N
eWZpcnN0KCkge30NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyOTYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUi
DQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVGhpczIgPSBfVGhpcywgZW5hYmxlX2lmX3Q8X1R1
cGxlX2NvbnN0cnVjdGlibGVfdjx0dXBsZSwgY29uc3QgX1RoaXMyJiwgY29uc3QgX1Jlc3QmLi4u
PiwgaW50PiA9IDA+DQogICAgY29uc3RleHByIGV4cGxpY2l0KF9UdXBsZV9jb25kaXRpb25hbF9l
eHBsaWNpdF92PHR1cGxlLCBjb25zdCBfVGhpczImLCBjb25zdCBfUmVzdCYuLi4+KSB0dXBsZSgN
CiAgICAgICAgY29uc3QgX1RoaXMmIF9UaGlzX2FyZywgY29uc3QgX1Jlc3QmLi4uIF9SZXN0X2Fy
Zykgbm9leGNlcHQoY29uanVuY3Rpb25fdjxpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxf
VGhpczI+LA0KICAgICAgICBpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxfUmVzdD4uLi4+
KSANCiAgICAgICAgOiB0dXBsZShfRXhhY3RfYXJnc190e30sIF9UaGlzX2FyZywgX1Jlc3RfYXJn
Li4uKSB7fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMxOCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0dXBsZSINCg0KDQogICAg
dGVtcGxhdGUgPGNsYXNzIF9UaGlzMiwgY2xhc3MuLi4gX1Jlc3QyLA0KICAgICAgICBlbmFibGVf
aWZfdDxjb25qdW5jdGlvbl92PF9UdXBsZV9wZXJmZWN0X3ZhbDx0dXBsZSwgX1RoaXMyLCBfUmVz
dDIuLi4+LA0KICAgICAgICAgICAgICAgICAgICAgICAgX1R1cGxlX2NvbnN0cnVjdGlibGVfdmFs
PHR1cGxlLCBfVGhpczIsIF9SZXN0Mi4uLj4+LA0KICAgICAgICAgICAgaW50PiA9IDA+DQogICAg
Y29uc3RleHByIGV4cGxpY2l0KF9UdXBsZV9jb25kaXRpb25hbF9leHBsaWNpdF92PHR1cGxlLCBf
VGhpczIsIF9SZXN0Mi4uLj4pIHR1cGxlKF9UaGlzMiYmIF9UaGlzX2FyZywNCiAgICAgICAgX1Jl
c3QyJiYuLi4gX1Jlc3RfYXJnKSBub2V4Y2VwdChfVHVwbGVfbm90aHJvd19jb25zdHJ1Y3RpYmxl
X3Y8dHVwbGUsIF9UaGlzMiwgX1Jlc3QyLi4uPikgDQogICAgICAgIDogdHVwbGUoX0V4YWN0X2Fy
Z3NfdHt9LCA6OnN0ZDo6IGZvcndhcmQ8X1RoaXMyPihfVGhpc19hcmcpLCA6OnN0ZDo6IGZvcndh
cmQ8X1Jlc3QyPihfUmVzdF9hcmcpLi4uKSB7fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAzNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcdHVwbGUiDQoNCiAgICB0dXBsZShjb25zdCB0dXBsZSYpID0gZGVmYXVsdDsNCiAg
ICB0dXBsZSh0dXBsZSYmKSAgICAgID0gZGVmYXVsdDsNCg0KDQogICAgdGVtcGxhdGUgPGNsYXNz
Li4uIF9PdGhlciwgZW5hYmxlX2lmX3Q8Y29uanVuY3Rpb25fdjxfVHVwbGVfY29uc3RydWN0aWJs
ZV92YWw8dHVwbGUsIGNvbnN0IF9PdGhlciYuLi4+LA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfVHVwbGVfY29udmVydF9jb3B5X3ZhbDx0dXBsZSwgX090
aGVyLi4uPj4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludD4gPSAwPg0K
ICAgIGNvbnN0ZXhwciBleHBsaWNpdChfVHVwbGVfY29uZGl0aW9uYWxfZXhwbGljaXRfdjx0dXBs
ZSwgY29uc3QgX090aGVyJi4uLj4pDQogICAgICAgIHR1cGxlKGNvbnN0IHR1cGxlPF9PdGhlci4u
Lj4mIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAgICAgICBfVHVwbGVfbm90aHJvd19jb25zdHJ1
Y3RpYmxlX3Y8dHVwbGUsIGNvbnN0IF9PdGhlciYuLi4+KSANCiAgICAgICAgOiB0dXBsZShfVW5w
YWNrX3R1cGxlX3R7fSwgX1JpZ2h0KSB7fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDM3MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx0dXBsZSINCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9PdGhlciwgZW5hYmxlX2lmX3Q8
Y29uanVuY3Rpb25fdjxfVHVwbGVfY29uc3RydWN0aWJsZV92YWw8dHVwbGUsIF9PdGhlci4uLj4s
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UdXBsZV9j
b252ZXJ0X21vdmVfdmFsPHR1cGxlLCBfT3RoZXIuLi4+PiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50PiA9IDA+DQogICAgY29uc3RleHByIGV4cGxpY2l0KF9UdXBsZV9j
b25kaXRpb25hbF9leHBsaWNpdF92PHR1cGxlLCBfT3RoZXIuLi4+KQ0KICAgICAgICB0dXBsZSh0
dXBsZTxfT3RoZXIuLi4+JiYgX1JpZ2h0KSBub2V4Y2VwdChfVHVwbGVfbm90aHJvd19jb25zdHJ1
Y3RpYmxlX3Y8dHVwbGUsIF9PdGhlci4uLj4pIA0KICAgICAgICA6IHR1cGxlKF9VbnBhY2tfdHVw
bGVfdHt9LCA6OnN0ZDo6IG1vdmUoX1JpZ2h0KSkge30NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAzOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcdHVwbGUiDQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRmlyc3QsIGNsYXNzIF9T
ZWNvbmQsDQogICAgICAgIGVuYWJsZV9pZl90PF9UdXBsZV9jb25zdHJ1Y3RpYmxlX3Y8dHVwbGUs
IGNvbnN0IF9GaXJzdCYsIGNvbnN0IF9TZWNvbmQmPiwgaW50PiA9IDA+DQogICAgY29uc3RleHBy
IGV4cGxpY2l0KF9UdXBsZV9jb25kaXRpb25hbF9leHBsaWNpdF92PHR1cGxlLCBjb25zdCBfRmly
c3QmLCBjb25zdCBfU2Vjb25kJj4pDQogICAgICAgIHR1cGxlKGNvbnN0IHBhaXI8X0ZpcnN0LCBf
U2Vjb25kPiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgICAgIF9UdXBsZV9ub3Rocm93X2Nv
bnN0cnVjdGlibGVfdjx0dXBsZSwgY29uc3QgX0ZpcnN0JiwgY29uc3QgX1NlY29uZCY+KSANCiAg
ICAgICAgOiB0dXBsZShfVW5wYWNrX3R1cGxlX3R7fSwgX1JpZ2h0KSB7fQ0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNDE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHR1cGxlIg0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZpcnN0LCBj
bGFzcyBfU2Vjb25kLCBlbmFibGVfaWZfdDxfVHVwbGVfY29uc3RydWN0aWJsZV92PHR1cGxlLCBf
Rmlyc3QsIF9TZWNvbmQ+LCBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgZXhwbGljaXQoX1R1cGxl
X2NvbmRpdGlvbmFsX2V4cGxpY2l0X3Y8dHVwbGUsIF9GaXJzdCwgX1NlY29uZD4pIHR1cGxlKA0K
ICAgICAgICBwYWlyPF9GaXJzdCwgX1NlY29uZD4mJiBfUmlnaHQpIG5vZXhjZXB0KF9UdXBsZV9u
b3Rocm93X2NvbnN0cnVjdGlibGVfdjx0dXBsZSwgX0ZpcnN0LCBfU2Vjb25kPikgDQogICAgICAg
IDogdHVwbGUoX1VucGFja190dXBsZV90e30sIDo6c3RkOjogbW92ZShfUmlnaHQpKSB7fQ0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQWxs
b2MsIGNsYXNzIF9UaGlzMiA9IF9UaGlzLA0KICAgICAgICBlbmFibGVfaWZfdDxjb25qdW5jdGlv
bl92PGlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxfVGhpczI+LCBpc19kZWZhdWx0X2NvbnN0cnVj
dGlibGU8X1Jlc3Q+Li4uPiwgaW50PiA9IDA+DQogICAgaW5saW5lIGV4cGxpY2l0KA0KICAgICAg
ICAhY29uanVuY3Rpb25fdjxfSXNfaW1wbGljaXRseV9kZWZhdWx0X2NvbnN0cnVjdGlibGU8X1Ro
aXMyPiwgX0lzX2ltcGxpY2l0bHlfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9SZXN0Pi4uLj4pDQog
ICAgICAgIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiBfQWwpDQogICAgICAg
IDogX015YmFzZShhbGxvY2F0b3JfYXJnLCBfQWwpLCBfTXlmaXJzdChfQWwsIGFsbG9jYXRvcl9h
cmcpIHt9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NTYgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzIF9UaGlzMiA9IF9UaGlzLA0KICAgICAgICBl
bmFibGVfaWZfdDxfVHVwbGVfY29uc3RydWN0aWJsZV92PHR1cGxlLCBjb25zdCBfVGhpczImLCBj
b25zdCBfUmVzdCYuLi4+LCBpbnQ+ID0gMD4NCiAgICBpbmxpbmUgZXhwbGljaXQoX1R1cGxlX2Nv
bmRpdGlvbmFsX2V4cGxpY2l0X3Y8dHVwbGUsIGNvbnN0IF9UaGlzMiYsIGNvbnN0IF9SZXN0Ji4u
Lj4pDQogICAgICAgIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiBfQWwsIGNv
bnN0IF9UaGlzJiBfVGhpc19hcmcsIGNvbnN0IF9SZXN0Ji4uLiBfUmVzdF9hcmcpDQogICAgICAg
IDogdHVwbGUoX0FsbG9jX2V4YWN0X2FyZ3NfdHt9LCBfQWwsIF9UaGlzX2FyZywgX1Jlc3RfYXJn
Li4uKSB7fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NzQgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfQWxsb2MsIGNsYXNzIF9UaGlzMiwgY2xhc3MuLi4gX1Jlc3QyLA0KICAgICAgICBl
bmFibGVfaWZfdDxjb25qdW5jdGlvbl92PF9UdXBsZV9wZXJmZWN0X3ZhbDx0dXBsZSwgX1RoaXMy
LCBfUmVzdDIuLi4+LA0KICAgICAgICAgICAgICAgICAgICAgICAgX1R1cGxlX2NvbnN0cnVjdGli
bGVfdmFsPHR1cGxlLCBfVGhpczIsIF9SZXN0Mi4uLj4+LA0KICAgICAgICAgICAgaW50PiA9IDA+
DQogICAgaW5saW5lIGV4cGxpY2l0KF9UdXBsZV9jb25kaXRpb25hbF9leHBsaWNpdF92PHR1cGxl
LCBfVGhpczIsIF9SZXN0Mi4uLj4pDQogICAgICAgIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCwgY29u
c3QgX0FsbG9jJiBfQWwsIF9UaGlzMiYmIF9UaGlzX2FyZywgX1Jlc3QyJiYuLi4gX1Jlc3RfYXJn
KQ0KICAgICAgICA6IHR1cGxlKF9BbGxvY19leGFjdF9hcmdzX3R7fSwgX0FsLCA6OnN0ZDo6IGZv
cndhcmQ8X1RoaXMyPihfVGhpc19hcmcpLCA6OnN0ZDo6IGZvcndhcmQ8X1Jlc3QyPihfUmVzdF9h
cmcpLi4uKSB7fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ5OCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0dXBsZSINCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzIF9UaGlzMiA9IF9UaGlzLA0KICAgICAgICBl
bmFibGVfaWZfdDxfVHVwbGVfY29uc3RydWN0aWJsZV92PHR1cGxlLCBjb25zdCBfVGhpczImLCBj
b25zdCBfUmVzdCYuLi4+LCBpbnQ+ID0gMD4NCiAgICBpbmxpbmUgdHVwbGUoYWxsb2NhdG9yX2Fy
Z190LCBjb25zdCBfQWxsb2MmIF9BbCwgY29uc3QgdHVwbGUmIF9SaWdodCkNCiAgICAgICAgOiB0
dXBsZShfQWxsb2NfdW5wYWNrX3R1cGxlX3R7fSwgX0FsLCBfUmlnaHQpIHt9DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX0FsbG9jLCBjbGFzcyBfVGhpczIgPSBfVGhpcywgZW5hYmxlX2lmX3Q8X1R1
cGxlX2NvbnN0cnVjdGlibGVfdjx0dXBsZSwgX1RoaXMyLCBfUmVzdC4uLj4sIGludD4gPSAwPg0K
ICAgIGlubGluZSB0dXBsZShhbGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxvYyYgX0FsLCB0dXBs
ZSYmIF9SaWdodCkNCiAgICAgICAgOiB0dXBsZShfQWxsb2NfdW5wYWNrX3R1cGxlX3R7fSwgX0Fs
LCA6OnN0ZDo6IG1vdmUoX1JpZ2h0KSkge30NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9BbGxv
YywgY2xhc3MuLi4gX090aGVyLA0KICAgICAgICBlbmFibGVfaWZfdDwNCiAgICAgICAgICAgIGNv
bmp1bmN0aW9uX3Y8X1R1cGxlX2NvbnN0cnVjdGlibGVfdmFsPHR1cGxlLCBjb25zdCBfT3RoZXIm
Li4uPiwgX1R1cGxlX2NvbnZlcnRfY29weV92YWw8dHVwbGUsIF9PdGhlci4uLj4+LA0KICAgICAg
ICAgICAgaW50PiA9IDA+DQogICAgaW5saW5lIGV4cGxpY2l0KF9UdXBsZV9jb25kaXRpb25hbF9l
eHBsaWNpdF92PHR1cGxlLCBjb25zdCBfT3RoZXImLi4uPikNCiAgICAgICAgdHVwbGUoYWxsb2Nh
dG9yX2FyZ190LCBjb25zdCBfQWxsb2MmIF9BbCwgY29uc3QgdHVwbGU8X090aGVyLi4uPiYgX1Jp
Z2h0KQ0KICAgICAgICA6IHR1cGxlKF9BbGxvY191bnBhY2tfdHVwbGVfdHt9LCBfQWwsIF9SaWdo
dCkge30NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MzEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCg0KICAgIHRl
bXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzLi4uIF9PdGhlciwNCiAgICAgICAgZW5hYmxlX2lm
X3Q8DQogICAgICAgICAgICBjb25qdW5jdGlvbl92PF9UdXBsZV9jb25zdHJ1Y3RpYmxlX3ZhbDx0
dXBsZSwgX090aGVyLi4uPiwgX1R1cGxlX2NvbnZlcnRfbW92ZV92YWw8dHVwbGUsIF9PdGhlci4u
Lj4+LCBpbnQ+ID0NCiAgICAgICAgICAgIDA+DQogICAgaW5saW5lIGV4cGxpY2l0KF9UdXBsZV9j
b25kaXRpb25hbF9leHBsaWNpdF92PHR1cGxlLCBfT3RoZXIuLi4+KQ0KICAgICAgICB0dXBsZShh
bGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxvYyYgX0FsLCB0dXBsZTxfT3RoZXIuLi4+JiYgX1Jp
Z2h0KQ0KICAgICAgICA6IHR1cGxlKF9BbGxvY191bnBhY2tfdHVwbGVfdHt9LCBfQWwsIDo6c3Rk
OjogbW92ZShfUmlnaHQpKSB7fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTUzICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHR1cGxlIg0K
DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jLCBjbGFzcyBfRmlyc3QsIGNsYXNzIF9TZWNv
bmQsDQogICAgICAgIGVuYWJsZV9pZl90PF9UdXBsZV9jb25zdHJ1Y3RpYmxlX3Y8dHVwbGUsIGNv
bnN0IF9GaXJzdCYsIGNvbnN0IF9TZWNvbmQmPiwgaW50PiA9IDA+DQogICAgaW5saW5lIGV4cGxp
Y2l0KF9UdXBsZV9jb25kaXRpb25hbF9leHBsaWNpdF92PHR1cGxlLCBjb25zdCBfRmlyc3QmLCBj
b25zdCBfU2Vjb25kJj4pDQogICAgICAgIHR1cGxlKGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0Fs
bG9jJiBfQWwsIGNvbnN0IHBhaXI8X0ZpcnN0LCBfU2Vjb25kPiYgX1JpZ2h0KQ0KICAgICAgICA6
IHR1cGxlKF9BbGxvY191bnBhY2tfdHVwbGVfdHt9LCBfQWwsIF9SaWdodCkge30NCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNTcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHR1cGxlIg0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jLCBj
bGFzcyBfRmlyc3QsIGNsYXNzIF9TZWNvbmQsDQogICAgICAgIGVuYWJsZV9pZl90PF9UdXBsZV9j
b25zdHJ1Y3RpYmxlX3Y8dHVwbGUsIF9GaXJzdCwgX1NlY29uZD4sIGludD4gPSAwPg0KICAgIGlu
bGluZSBleHBsaWNpdChfVHVwbGVfY29uZGl0aW9uYWxfZXhwbGljaXRfdjx0dXBsZSwgX0ZpcnN0
LCBfU2Vjb25kPikNCiAgICAgICAgdHVwbGUoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2Mm
IF9BbCwgcGFpcjxfRmlyc3QsIF9TZWNvbmQ+JiYgX1JpZ2h0KQ0KICAgICAgICA6IHR1cGxlKF9B
bGxvY191bnBhY2tfdHVwbGVfdHt9LCBfQWwsIDo6c3RkOjogbW92ZShfUmlnaHQpKSB7fQ0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA1ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCiAgICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0
IHZvbGF0aWxlIHR1cGxlJikgPSBkZWxldGU7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX015c2Vs
ZiA9IHR1cGxlLCBjbGFzcyBfVGhpczIgPSBfVGhpcywNCiAgICAgICAgZW5hYmxlX2lmX3Q8Y29u
anVuY3Rpb25fdjxfSXNfY29weV9hc3NpZ25hYmxlX25vX3ByZWNvbmRpdGlvbl9jaGVjazxfVGhp
czI+LA0KICAgICAgICAgICAgICAgICAgICAgICAgX0lzX2NvcHlfYXNzaWduYWJsZV9ub19wcmVj
b25kaXRpb25fY2hlY2s8X1Jlc3Q+Li4uPiwNCiAgICAgICAgICAgIGludD4gPSAwPg0KICAgIGlu
bGluZSB0dXBsZSYgb3BlcmF0b3I9KF9JZGVudGl0eV90PGNvbnN0IF9NeXNlbGYmPiBfUmlnaHQp
IG5vZXhjZXB0KA0KICAgICAgICBjb25qdW5jdGlvbl92PGlzX25vdGhyb3dfY29weV9hc3NpZ25h
YmxlPF9UaGlzMj4sIGlzX25vdGhyb3dfY29weV9hc3NpZ25hYmxlPF9SZXN0Pi4uLj4pICB7DQog
ICAgICAgIF9NeWZpcnN0Ll9WYWwgPSBfUmlnaHQuX015Zmlyc3QuX1ZhbDsNCiAgICAgICAgX0dl
dF9yZXN0KCkgICA9IF9SaWdodC5fR2V0X3Jlc3QoKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfTXlzZWxmID0gdHVwbGUsIGNsYXNzIF9UaGlz
MiA9IF9UaGlzLA0KICAgICAgICBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PF9Jc19tb3ZlX2Fz
c2lnbmFibGVfbm9fcHJlY29uZGl0aW9uX2NoZWNrPF9UaGlzMj4sDQogICAgICAgICAgICAgICAg
ICAgICAgICBfSXNfbW92ZV9hc3NpZ25hYmxlX25vX3ByZWNvbmRpdGlvbl9jaGVjazxfUmVzdD4u
Li4+LA0KICAgICAgICAgICAgaW50PiA9IDA+DQogICAgaW5saW5lIHR1cGxlJiBvcGVyYXRvcj0o
X0lkZW50aXR5X3Q8X015c2VsZiYmPiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICBjb25qdW5j
dGlvbl92PGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPF9UaGlzMj4sIGlzX25vdGhyb3dfbW92
ZV9hc3NpZ25hYmxlPF9SZXN0Pi4uLj4pIHsNCiAgICAgICAgX015Zmlyc3QuX1ZhbCA9IDo6c3Rk
OjogZm9yd2FyZDxfVGhpcz4oX1JpZ2h0Ll9NeWZpcnN0Ll9WYWwpOw0KICAgICAgICBfR2V0X3Jl
c3QoKSAgID0gOjpzdGQ6OiBmb3J3YXJkPF9NeWJhc2U+KF9SaWdodC5fR2V0X3Jlc3QoKSk7DQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX090
aGVyLCBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PG5lZ2F0aW9uPGlzX3NhbWU8dHVwbGUsIHR1
cGxlPF9PdGhlci4uLj4+PiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1R1cGxlX2Fzc2lnbmFibGVfdmFsPHR1cGxlLCBjb25zdCBfT3RoZXImLi4uPj4s
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludD4gPSAwPg0KICAgIGlubGlu
ZSB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1cGxlPF9PdGhlci4uLj4mIF9SaWdodCkgbm9leGNl
cHQoDQogICAgICAgIF9UdXBsZV9ub3Rocm93X2Fzc2lnbmFibGVfdjx0dXBsZSwgY29uc3QgX090
aGVyJi4uLj4pICB7DQogICAgICAgIF9NeWZpcnN0Ll9WYWwgPSBfUmlnaHQuX015Zmlyc3QuX1Zh
bDsNCiAgICAgICAgX0dldF9yZXN0KCkgICA9IF9SaWdodC5fR2V0X3Jlc3QoKTsNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfT3RoZXIsDQog
ICAgICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8bmVnYXRpb248aXNfc2FtZTx0dXBsZSwg
dHVwbGU8X090aGVyLi4uPj4+LCBfVHVwbGVfYXNzaWduYWJsZV92YWw8dHVwbGUsIF9PdGhlci4u
Lj4+LA0KICAgICAgICAgICAgaW50PiA9IDA+DQogICAgaW5saW5lIHR1cGxlJiBvcGVyYXRvcj0o
dHVwbGU8X090aGVyLi4uPiYmIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAgIF9UdXBsZV9ub3Ro
cm93X2Fzc2lnbmFibGVfdjx0dXBsZSwgX090aGVyLi4uPikgIHsNCiAgICAgICAgX015Zmlyc3Qu
X1ZhbCA9IDo6c3RkOjogZm9yd2FyZDx0eXBlbmFtZSB0dXBsZTxfT3RoZXIuLi4+OjpfVGhpc190
eXBlPihfUmlnaHQuX015Zmlyc3QuX1ZhbCk7DQogICAgICAgIF9HZXRfcmVzdCgpICAgPSA6OnN0
ZDo6IGZvcndhcmQ8dHlwZW5hbWUgdHVwbGU8X090aGVyLi4uPjo6X015YmFzZT4oX1JpZ2h0Ll9H
ZXRfcmVzdCgpKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfRmlyc3QsIGNsYXNzIF9TZWNvbmQsDQogICAgICAgIGVuYWJsZV9pZl90PF9UdXBs
ZV9hc3NpZ25hYmxlX3Y8dHVwbGUsIGNvbnN0IF9GaXJzdCYsIGNvbnN0IF9TZWNvbmQmPiwgaW50
PiA9IDA+DQogICAgaW5saW5lIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgcGFpcjxfRmlyc3QsIF9T
ZWNvbmQ+JiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICBfVHVwbGVfbm90aHJvd19hc3NpZ25h
YmxlX3Y8dHVwbGUsIGNvbnN0IF9GaXJzdCYsIGNvbnN0IF9TZWNvbmQmPikgIHsNCiAgICAgICAg
X015Zmlyc3QuX1ZhbCAgICAgICAgICAgICA9IF9SaWdodC5maXJzdDsNCiAgICAgICAgX0dldF9y
ZXN0KCkuX015Zmlyc3QuX1ZhbCA9IF9SaWdodC5zZWNvbmQ7DQogICAgICAgIHJldHVybiAqdGhp
czsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZpcnN0LCBjbGFzcyBfU2Vjb25kLCBl
bmFibGVfaWZfdDxfVHVwbGVfYXNzaWduYWJsZV92PHR1cGxlLCBfRmlyc3QsIF9TZWNvbmQ+LCBp
bnQ+ID0gMD4NCiAgICBpbmxpbmUgdHVwbGUmIG9wZXJhdG9yPShwYWlyPF9GaXJzdCwgX1NlY29u
ZD4mJiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICBfVHVwbGVfbm90aHJvd19hc3NpZ25hYmxl
X3Y8dHVwbGUsIF9GaXJzdCwgX1NlY29uZD4pICB7DQogICAgICAgIF9NeWZpcnN0Ll9WYWwgICAg
ICAgICAgICAgPSA6OnN0ZDo6IGZvcndhcmQ8X0ZpcnN0PihfUmlnaHQuZmlyc3QpOw0KICAgICAg
ICBfR2V0X3Jlc3QoKS5fTXlmaXJzdC5fVmFsID0gOjpzdGQ6OiBmb3J3YXJkPF9TZWNvbmQ+KF9S
aWdodC5zZWNvbmQpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgaW5saW5l
IHZvaWQgc3dhcCh0dXBsZSYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgY29uanVuY3Rpb25f
djxfSXNfbm90aHJvd19zd2FwcGFibGU8X1RoaXM+LCBfSXNfbm90aHJvd19zd2FwcGFibGU8X1Jl
c3Q+Li4uPikgew0KICAgICAgICBfU3dhcF9hZGwoX015Zmlyc3QuX1ZhbCwgX1JpZ2h0Ll9NeWZp
cnN0Ll9WYWwpOw0KICAgICAgICBfTXliYXNlOjpzd2FwKF9SaWdodC5fR2V0X3Jlc3QoKSk7DQog
ICAgfQ0KDQogICAgY29uc3RleHByIF9NeWJhc2UmIF9HZXRfcmVzdCgpIG5vZXhjZXB0IHsgDQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgY29uc3QgX015YmFz
ZSYgX0dldF9yZXN0KCkgY29uc3Qgbm9leGNlcHQgeyANCiAgICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfT3RoZXI+DQogICAgY29uc3RleHByIGJv
b2wgX0VxdWFscyhjb25zdCB0dXBsZTxfT3RoZXIuLi4+JiBfUmlnaHQpIGNvbnN0IHsNCiAgICAg
ICAgcmV0dXJuIF9NeWZpcnN0Ll9WYWwgPT0gX1JpZ2h0Ll9NeWZpcnN0Ll9WYWwgJiYgX015YmFz
ZTo6X0VxdWFscyhfUmlnaHQuX0dldF9yZXN0KCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxj
bGFzcy4uLiBfT3RoZXI+DQogICAgY29uc3RleHByIGJvb2wgX0xlc3MoY29uc3QgdHVwbGU8X090
aGVyLi4uPiYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIHJldHVybiBfTXlmaXJzdC5fVmFsIDwg
X1JpZ2h0Ll9NeWZpcnN0Ll9WYWwNCiAgICAgICAgICAgICAgIHx8ICghKF9SaWdodC5fTXlmaXJz
dC5fVmFsIDwgX015Zmlyc3QuX1ZhbCkgJiYgX015YmFzZTo6X0xlc3MoX1JpZ2h0Ll9HZXRfcmVz
dCgpKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPHNpemVfdCBfSW5kZXgsIGNsYXNzLi4uIF9U
eXBlcz4NCiAgICBmcmllbmQgY29uc3RleHByIHR1cGxlX2VsZW1lbnRfdDxfSW5kZXgsIHR1cGxl
PF9UeXBlcy4uLj4+JiBnZXQodHVwbGU8X1R5cGVzLi4uPiYgX1R1cGxlKSBub2V4Y2VwdDsNCg0K
ICAgIHRlbXBsYXRlIDxzaXplX3QgX0luZGV4LCBjbGFzcy4uLiBfVHlwZXM+DQogICAgZnJpZW5k
IGNvbnN0ZXhwciBjb25zdCB0dXBsZV9lbGVtZW50X3Q8X0luZGV4LCB0dXBsZTxfVHlwZXMuLi4+
PiYgZ2V0KGNvbnN0IHR1cGxlPF9UeXBlcy4uLj4mIF9UdXBsZSkgbm9leGNlcHQ7DQoNCiAgICB0
ZW1wbGF0ZSA8c2l6ZV90IF9JbmRleCwgY2xhc3MuLi4gX1R5cGVzPg0KICAgIGZyaWVuZCBjb25z
dGV4cHIgdHVwbGVfZWxlbWVudF90PF9JbmRleCwgdHVwbGU8X1R5cGVzLi4uPj4mJiBnZXQodHVw
bGU8X1R5cGVzLi4uPiYmIF9UdXBsZSkgbm9leGNlcHQ7DQoNCiAgICB0ZW1wbGF0ZSA8c2l6ZV90
IF9JbmRleCwgY2xhc3MuLi4gX1R5cGVzPg0KICAgIGZyaWVuZCBjb25zdGV4cHIgY29uc3QgdHVw
bGVfZWxlbWVudF90PF9JbmRleCwgdHVwbGU8X1R5cGVzLi4uPj4mJiBnZXQoY29uc3QgdHVwbGU8
X1R5cGVzLi4uPiYmIF9UdXBsZSkgbm9leGNlcHQ7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5
LCBjbGFzcy4uLiBfVHlwZXM+DQogICAgZnJpZW5kIGNvbnN0ZXhwciBfVHkmIGdldCh0dXBsZTxf
VHlwZXMuLi4+JiBfVHVwbGUpIG5vZXhjZXB0Ow0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeSwg
Y2xhc3MuLi4gX1R5cGVzPg0KICAgIGZyaWVuZCBjb25zdGV4cHIgY29uc3QgX1R5JiBnZXQoY29u
c3QgdHVwbGU8X1R5cGVzLi4uPiYgX1R1cGxlKSBub2V4Y2VwdDsNCg0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfVHksIGNsYXNzLi4uIF9UeXBlcz4NCiAgICBmcmllbmQgY29uc3RleHByIF9UeSYmIGdl
dCh0dXBsZTxfVHlwZXMuLi4+JiYgX1R1cGxlKSBub2V4Y2VwdDsNCg0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfVHksIGNsYXNzLi4uIF9UeXBlcz4NCiAgICBmcmllbmQgY29uc3RleHByIGNvbnN0IF9U
eSYmIGdldChjb25zdCB0dXBsZTxfVHlwZXMuLi4+JiYgX1R1cGxlKSBub2V4Y2VwdDsNCg0KICAg
IF9UdXBsZV92YWw8X1RoaXM+IF9NeWZpcnN0OyANCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzLi4u
IF9UeXBlcz4NCnR1cGxlKF9UeXBlcy4uLikgLT4gdHVwbGU8X1R5cGVzLi4uPjsNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQp0dXBsZShwYWlyPF9UeTEsIF9UeTI+KSAtPiB0
dXBsZTxfVHkxLCBfVHkyPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MuLi4gX1R5
cGVzPg0KdHVwbGUoYWxsb2NhdG9yX2FyZ190LCBfQWxsb2MsIF9UeXBlcy4uLikgLT4gdHVwbGU8
X1R5cGVzLi4uPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MgX1R5MSwgY2xhc3Mg
X1R5Mj4NCnR1cGxlKGFsbG9jYXRvcl9hcmdfdCwgX0FsbG9jLCBwYWlyPF9UeTEsIF9UeTI+KSAt
PiB0dXBsZTxfVHkxLCBfVHkyPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MuLi4g
X1R5cGVzPg0KdHVwbGUoYWxsb2NhdG9yX2FyZ190LCBfQWxsb2MsIHR1cGxlPF9UeXBlcy4uLj4p
IC0+IHR1cGxlPF9UeXBlcy4uLj47DQojbGluZSA3MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCg0KdGVtcGxhdGUgPGNsYXNzLi4u
IF9UeXBlczEsIGNsYXNzLi4uIF9UeXBlczI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgdHVwbGU8X1R5cGVzMS4uLj4mIF9MZWZ0LCBjb25zdCB0dXBsZTxf
VHlwZXMyLi4uPiYgX1JpZ2h0KSB7DQogICAgc3RhdGljX2Fzc2VydChzaXplb2YuLi4oX1R5cGVz
MSkgPT0gc2l6ZW9mLi4uKF9UeXBlczIpLCAiY2Fubm90IGNvbXBhcmUgdHVwbGVzIG9mIGRpZmZl
cmVudCBzaXplcyIpOw0KICAgIHJldHVybiBfTGVmdC5fRXF1YWxzKF9SaWdodCk7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcy4uLiBfVHlwZXMxLCBjbGFzcy4uLiBfVHlwZXMyPg0KW1tub2Rpc2NhcmRd
XSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHR1cGxlPF9UeXBlczEuLi4+JiBfTGVm
dCwgY29uc3QgdHVwbGU8X1R5cGVzMi4uLj4mIF9SaWdodCkgew0KICAgIHJldHVybiAhKF9MZWZ0
ID09IF9SaWdodCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXMxLCBjbGFzcy4uLiBf
VHlwZXMyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgdHVw
bGU8X1R5cGVzMS4uLj4mIF9MZWZ0LCBjb25zdCB0dXBsZTxfVHlwZXMyLi4uPiYgX1JpZ2h0KSB7
DQogICAgc3RhdGljX2Fzc2VydChzaXplb2YuLi4oX1R5cGVzMSkgPT0gc2l6ZW9mLi4uKF9UeXBl
czIpLCAiY2Fubm90IGNvbXBhcmUgdHVwbGVzIG9mIGRpZmZlcmVudCBzaXplcyIpOw0KICAgIHJl
dHVybiBfTGVmdC5fTGVzcyhfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R5cGVz
MSwgY2xhc3MuLi4gX1R5cGVzMj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I+PShjb25zdCB0dXBsZTxfVHlwZXMxLi4uPiYgX0xlZnQsIGNvbnN0IHR1cGxlPF9UeXBlczIu
Li4+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShfTGVmdCA8IF9SaWdodCk7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcy4uLiBfVHlwZXMxLCBjbGFzcy4uLiBfVHlwZXMyPg0KW1tub2Rpc2NhcmRdXSBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgdHVwbGU8X1R5cGVzMS4uLj4mIF9MZWZ0LCBj
b25zdCB0dXBsZTxfVHlwZXMyLi4uPiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuIF9SaWdodCA8IF9M
ZWZ0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R5cGVzMSwgY2xhc3MuLi4gX1R5cGVzMj4N
Cltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCB0dXBsZTxfVHlw
ZXMxLi4uPiYgX0xlZnQsIGNvbnN0IHR1cGxlPF9UeXBlczIuLi4+JiBfUmlnaHQpIHsNCiAgICBy
ZXR1cm4gIShfUmlnaHQgPCBfTGVmdCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXMs
IGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8X0lzX3N3YXBwYWJsZTxfVHlwZXM+Li4uPiwgaW50
PiA9IDA+DQppbmxpbmUgdm9pZCBzd2FwKHR1cGxlPF9UeXBlcy4uLj4mIF9MZWZ0LCB0dXBsZTxf
VHlwZXMuLi4+JiBfUmlnaHQpIG5vZXhjZXB0KG5vZXhjZXB0KF9MZWZ0LnN3YXAoX1JpZ2h0KSkp
IHsNCiAgICByZXR1cm4gX0xlZnQuc3dhcChfUmlnaHQpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHksIGNsYXNzIF9UdXBsZT4NCnN0cnVjdCBfVHVwbGVfZWxlbWVudCB7fTsgDQoNCnRlbXBs
YXRlIDxjbGFzcyBfVGhpcywgY2xhc3MuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX1R1cGxlX2VsZW1lbnQ8
X1RoaXMsIHR1cGxlPF9UaGlzLCBfUmVzdC4uLj4+IHsgDQogICAgc3RhdGljX2Fzc2VydCghX0lz
X2FueV9vZl92PF9UaGlzLCBfUmVzdC4uLj4sICJkdXBsaWNhdGUgdHlwZSBUIGluIGdldDxUPih0
dXBsZSkiKTsNCiAgICB1c2luZyBfVHR5cGUgPSB0dXBsZTxfVGhpcywgX1Jlc3QuLi4+Ow0KfTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX1RoaXMsIGNsYXNzLi4uIF9SZXN0Pg0Kc3Ry
dWN0IF9UdXBsZV9lbGVtZW50PF9UeSwgdHVwbGU8X1RoaXMsIF9SZXN0Li4uPj4geyANCiAgICB1
c2luZyBfVHR5cGUgPSB0eXBlbmFtZSBfVHVwbGVfZWxlbWVudDxfVHksIHR1cGxlPF9SZXN0Li4u
Pj46Ol9UdHlwZTsNCn07DQoNCg0KdGVtcGxhdGUgPHNpemVfdCBfSW5kZXgsIGNsYXNzLi4uIF9U
eXBlcz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIHR1cGxlX2VsZW1lbnRfdDxfSW5kZXgsIHR1
cGxlPF9UeXBlcy4uLj4+JiBnZXQodHVwbGU8X1R5cGVzLi4uPiYgX1R1cGxlKSBub2V4Y2VwdCB7
DQogICAgdXNpbmcgX1R0eXBlID0gdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxfSW5kZXgsIHR1cGxl
PF9UeXBlcy4uLj4+OjpfVHR5cGU7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UdHlwZSY+KF9U
dXBsZSkuX015Zmlyc3QuX1ZhbDsNCn0NCg0KdGVtcGxhdGUgPHNpemVfdCBfSW5kZXgsIGNsYXNz
Li4uIF9UeXBlcz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0IHR1cGxlX2VsZW1lbnRf
dDxfSW5kZXgsIHR1cGxlPF9UeXBlcy4uLj4+JiBnZXQoY29uc3QgdHVwbGU8X1R5cGVzLi4uPiYg
X1R1cGxlKSBub2V4Y2VwdCB7DQogICAgdXNpbmcgX1R0eXBlID0gdHlwZW5hbWUgdHVwbGVfZWxl
bWVudDxfSW5kZXgsIHR1cGxlPF9UeXBlcy4uLj4+OjpfVHR5cGU7DQogICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IF9UdHlwZSY+KF9UdXBsZSkuX015Zmlyc3QuX1ZhbDsNCn0NCg0KdGVtcGxh
dGUgPHNpemVfdCBfSW5kZXgsIGNsYXNzLi4uIF9UeXBlcz4NCltbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIHR1cGxlX2VsZW1lbnRfdDxfSW5kZXgsIHR1cGxlPF9UeXBlcy4uLj4+JiYgZ2V0KHR1cGxl
PF9UeXBlcy4uLj4mJiBfVHVwbGUpIG5vZXhjZXB0IHsNCiAgICB1c2luZyBfVHkgICAgPSB0dXBs
ZV9lbGVtZW50X3Q8X0luZGV4LCB0dXBsZTxfVHlwZXMuLi4+PjsNCiAgICB1c2luZyBfVHR5cGUg
PSB0eXBlbmFtZSB0dXBsZV9lbGVtZW50PF9JbmRleCwgdHVwbGU8X1R5cGVzLi4uPj46Ol9UdHlw
ZTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1R5JiY+KHN0YXRpY19jYXN0PF9UdHlwZSY+KF9U
dXBsZSkuX015Zmlyc3QuX1ZhbCk7DQp9DQoNCnRlbXBsYXRlIDxzaXplX3QgX0luZGV4LCBjbGFz
cy4uLiBfVHlwZXM+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdCB0dXBsZV9lbGVtZW50
X3Q8X0luZGV4LCB0dXBsZTxfVHlwZXMuLi4+PiYmIGdldChjb25zdCB0dXBsZTxfVHlwZXMuLi4+
JiYgX1R1cGxlKSBub2V4Y2VwdCB7DQogICAgdXNpbmcgX1R5ICAgID0gdHVwbGVfZWxlbWVudF90
PF9JbmRleCwgdHVwbGU8X1R5cGVzLi4uPj47DQogICAgdXNpbmcgX1R0eXBlID0gdHlwZW5hbWUg
dHVwbGVfZWxlbWVudDxfSW5kZXgsIHR1cGxlPF9UeXBlcy4uLj4+OjpfVHR5cGU7DQogICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9UeSYmPihzdGF0aWNfY2FzdDxjb25zdCBfVHR5cGUmPihf
VHVwbGUpLl9NeWZpcnN0Ll9WYWwpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNz
Li4uIF9UeXBlcz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeSYgZ2V0KHR1cGxlPF9UeXBl
cy4uLj4mIF9UdXBsZSkgbm9leGNlcHQgew0KICAgIHVzaW5nIF9UdHlwZSA9IHR5cGVuYW1lIF9U
dXBsZV9lbGVtZW50PF9UeSwgdHVwbGU8X1R5cGVzLi4uPj46Ol9UdHlwZTsNCiAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8X1R0eXBlJj4oX1R1cGxlKS5fTXlmaXJzdC5fVmFsOw0KfQ0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5LCBjbGFzcy4uLiBfVHlwZXM+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBj
b25zdCBfVHkmIGdldChjb25zdCB0dXBsZTxfVHlwZXMuLi4+JiBfVHVwbGUpIG5vZXhjZXB0IHsN
CiAgICB1c2luZyBfVHR5cGUgPSB0eXBlbmFtZSBfVHVwbGVfZWxlbWVudDxfVHksIHR1cGxlPF9U
eXBlcy4uLj4+OjpfVHR5cGU7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9UdHlwZSY+
KF9UdXBsZSkuX015Zmlyc3QuX1ZhbDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3Mu
Li4gX1R5cGVzPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX1R5JiYgZ2V0KHR1cGxlPF9UeXBl
cy4uLj4mJiBfVHVwbGUpIG5vZXhjZXB0IHsNCiAgICB1c2luZyBfVHR5cGUgPSB0eXBlbmFtZSBf
VHVwbGVfZWxlbWVudDxfVHksIHR1cGxlPF9UeXBlcy4uLj4+OjpfVHR5cGU7DQogICAgcmV0dXJu
IHN0YXRpY19jYXN0PF9UeSYmPihzdGF0aWNfY2FzdDxfVHR5cGUmPihfVHVwbGUpLl9NeWZpcnN0
Ll9WYWwpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcy4uLiBfVHlwZXM+DQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdCBfVHkmJiBnZXQoY29uc3QgdHVwbGU8X1R5cGVzLi4u
PiYmIF9UdXBsZSkgbm9leGNlcHQgew0KICAgIHVzaW5nIF9UdHlwZSA9IHR5cGVuYW1lIF9UdXBs
ZV9lbGVtZW50PF9UeSwgdHVwbGU8X1R5cGVzLi4uPj46Ol9UdHlwZTsNCiAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgX1R5JiY+KHN0YXRpY19jYXN0PGNvbnN0IF9UdHlwZSY+KF9UdXBsZSku
X015Zmlyc3QuX1ZhbCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UaGlzLCBjbGFzcy4uLiBf
UmVzdD4NCnRlbXBsYXRlIDxjbGFzcyBfVGFnLCBjbGFzcyBfVHBsLCBzaXplX3QuLi4gX0luZGlj
ZXMsIGVuYWJsZV9pZl90PGlzX3NhbWVfdjxfVGFnLCBfVW5wYWNrX3R1cGxlX3Q+LCBpbnQ+Pg0K
Y29uc3RleHByIHR1cGxlPF9UaGlzLCBfUmVzdC4uLj46OnR1cGxlKF9UYWcsIF9UcGwmJiBfUmln
aHQsIGluZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPikNCiAgICA6IHR1cGxlKF9FeGFjdF9hcmdz
X3R7fSwgOjpzdGQ6OiBnZXQ8X0luZGljZXM+KDo6c3RkOjogZm9yd2FyZDxfVHBsPihfUmlnaHQp
KS4uLikge30NCg0KdGVtcGxhdGUgPGNsYXNzIF9UaGlzLCBjbGFzcy4uLiBfUmVzdD4NCnRlbXBs
YXRlIDxjbGFzcyBfVGFnLCBjbGFzcyBfQWxsb2MsIGNsYXNzIF9UcGwsIHNpemVfdC4uLiBfSW5k
aWNlcywNCiAgICBlbmFibGVfaWZfdDxpc19zYW1lX3Y8X1RhZywgX0FsbG9jX3VucGFja190dXBs
ZV90PiwgaW50Pj4NCmNvbnN0ZXhwciB0dXBsZTxfVGhpcywgX1Jlc3QuLi4+Ojp0dXBsZShfVGFn
LCBjb25zdCBfQWxsb2MmIF9BbCwgX1RwbCYmIF9SaWdodCwgaW5kZXhfc2VxdWVuY2U8X0luZGlj
ZXMuLi4+KQ0KICAgIDogdHVwbGUoX0FsbG9jX2V4YWN0X2FyZ3NfdHt9LCBfQWwsIDo6c3RkOjog
Z2V0PF9JbmRpY2VzPig6OnN0ZDo6IGZvcndhcmQ8X1RwbD4oX1JpZ2h0KSkuLi4pIHt9DQoNCg0K
dGVtcGxhdGUgPGNsYXNzLi4uIF9UeXBlcz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIHR1cGxl
PF9VbnJlZndyYXBfdDxfVHlwZXM+Li4uPiBtYWtlX3R1cGxlKF9UeXBlcyYmLi4uIF9BcmdzKSB7
IA0KICAgIHVzaW5nIF9UdHlwZSA9IHR1cGxlPF9VbnJlZndyYXBfdDxfVHlwZXM+Li4uPjsNCiAg
ICByZXR1cm4gX1R0eXBlKDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQp9DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzLi4uIF9UeXBlcz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIHR1
cGxlPF9UeXBlcyYuLi4+IHRpZShfVHlwZXMmLi4uIF9BcmdzKSBub2V4Y2VwdCB7IA0KICAgIHVz
aW5nIF9UdHlwZSA9IHR1cGxlPF9UeXBlcyYuLi4+Ow0KICAgIHJldHVybiBfVHR5cGUoX0FyZ3Mu
Li4pOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXM+DQpbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciB0dXBsZTxfVHlwZXMmJi4uLj4gZm9yd2FyZF9hc190dXBsZShfVHlwZXMmJi4uLiBf
QXJncykgbm9leGNlcHQgeyANCiAgICByZXR1cm4gdHVwbGU8X1R5cGVzJiYuLi4+KDo6c3RkOjog
Zm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9TZXFf
dHlwZTEsIGNsYXNzIF9TZXFfdHlwZTI+DQpzdHJ1Y3QgX0NhdF9zZXF1ZW5jZXM7DQoNCnRlbXBs
YXRlIDxzaXplX3QuLi4gX0luZGV4ZXMxLCBzaXplX3QuLi4gX0luZGV4ZXMyPg0Kc3RydWN0IF9D
YXRfc2VxdWVuY2VzPGluZGV4X3NlcXVlbmNlPF9JbmRleGVzMS4uLj4sDQogICAgaW5kZXhfc2Vx
dWVuY2U8X0luZGV4ZXMyLi4uPj4geyANCiAgICB1c2luZyB0eXBlID0gaW5kZXhfc2VxdWVuY2U8
X0luZGV4ZXMxLi4uLCBfSW5kZXhlczIuLi4+Ow0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
LCBzaXplX3QgX1NpemU+DQpjbGFzcyBhcnJheTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfSWR4LCBj
bGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeSYgZ2V0
KGFycmF5PF9UeSwgX1NpemU+JiBfQXJyKSBub2V4Y2VwdDsNCg0KdGVtcGxhdGUgPHNpemVfdCBf
SWR4LCBjbGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGNv
bnN0IF9UeSYgZ2V0KGNvbnN0IGFycmF5PF9UeSwgX1NpemU+JiBfQXJyKSBub2V4Y2VwdDsNCg0K
dGVtcGxhdGUgPHNpemVfdCBfSWR4LCBjbGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCltbbm9kaXNj
YXJkXV0gY29uc3RleHByIF9UeSYmIGdldChhcnJheTxfVHksIF9TaXplPiYmIF9BcnIpIG5vZXhj
ZXB0Ow0KDQp0ZW1wbGF0ZSA8c2l6ZV90IF9JZHgsIGNsYXNzIF9UeSwgc2l6ZV90IF9TaXplPg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3QgX1R5JiYgZ2V0KGNvbnN0IGFycmF5PF9UeSwg
X1NpemU+JiYgX0Fycikgbm9leGNlcHQ7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3Mu
Li4gX0Zvcl9hcnJheT4NCnN0cnVjdCBfVmlld19hc190dXBsZSB7IA0KICAgIHN0YXRpY19hc3Nl
cnQoX0Fsd2F5c19mYWxzZTxfVHk+LCAiVW5zdXBwb3J0ZWQgdHVwbGVfY2F0IGFyZ3VtZW50cy4i
KTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXM+DQpzdHJ1Y3QgX1ZpZXdfYXNfdHVw
bGU8dHVwbGU8X1R5cGVzLi4uPj4geyANCiAgICB1c2luZyB0eXBlID0gdHVwbGU8X1R5cGVzLi4u
PjsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0Kc3RydWN0IF9WaWV3
X2FzX3R1cGxlPHBhaXI8X1R5MSwgX1R5Mj4+IHsgDQogICAgdXNpbmcgdHlwZSA9IHR1cGxlPF9U
eTEsIF9UeTI+Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MuLi4gX1R5cGVzPg0K
c3RydWN0IF9WaWV3X2FzX3R1cGxlPGFycmF5PF9UeSwgMD4sIF9UeXBlcy4uLj4geyANCiAgICB1
c2luZyB0eXBlID0gdHVwbGU8X1R5cGVzLi4uPjsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHks
IHNpemVfdCBfU2l6ZSwgY2xhc3MuLi4gX1R5cGVzPg0Kc3RydWN0IF9WaWV3X2FzX3R1cGxlPGFy
cmF5PF9UeSwgX1NpemU+LCBfVHlwZXMuLi4+DQogICAgOiBfVmlld19hc190dXBsZTxhcnJheTxf
VHksIF9TaXplIC0gMT4sIF9UeSwgX1R5cGVzLi4uPiB7IA0KfTsNCg0KDQp0ZW1wbGF0ZSA8c2l6
ZV90IF9OeCwgY2xhc3MgX1R5Pg0Kc3RydWN0IF9SZXBlYXRfZm9yIDogaW50ZWdyYWxfY29uc3Rh
bnQ8c2l6ZV90LCBfTng+IHt9OyANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0t4
X2FyZywgY2xhc3MgX0l4X2FyZywgc2l6ZV90IF9JeF9uZXh0LCBjbGFzcy4uLiBfVHVwbGVzPg0K
c3RydWN0IF9UdXBsZV9jYXQyIHsgDQogICAgc3RhdGljX2Fzc2VydChzaXplb2YuLi4oX1R1cGxl
cykgPT0gMCwgIlVuc3VwcG9ydGVkIHR1cGxlX2NhdCBhcmd1bWVudHMuIik7DQogICAgdXNpbmcg
dHlwZSAgICAgICAgPSBfUmV0Ow0KICAgIHVzaW5nIF9LeF9hcmdfc2VxID0gX0t4X2FyZzsNCiAg
ICB1c2luZyBfSXhfYXJnX3NlcSA9IF9JeF9hcmc7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4g
X1R5cGVzMSwgY2xhc3MgX0t4X2FyZywgc2l6ZV90Li4uIF9JeCwgc2l6ZV90IF9JeF9uZXh0LCBj
bGFzcy4uLiBfVHlwZXMyLCBjbGFzcy4uLiBfUmVzdD4NCnN0cnVjdCBfVHVwbGVfY2F0Mjx0dXBs
ZTxfVHlwZXMxLi4uPiwgX0t4X2FyZywgaW5kZXhfc2VxdWVuY2U8X0l4Li4uPiwgX0l4X25leHQs
IHR1cGxlPF9UeXBlczIuLi4+LCBfUmVzdC4uLj4NCiAgICA6IF9UdXBsZV9jYXQyPHR1cGxlPF9U
eXBlczEuLi4sIF9UeXBlczIuLi4+LCB0eXBlbmFtZSBfQ2F0X3NlcXVlbmNlczxfS3hfYXJnLCBp
bmRleF9zZXF1ZW5jZV9mb3I8X1R5cGVzMi4uLj4+Ojp0eXBlLA0KICAgICAgICAgIGluZGV4X3Nl
cXVlbmNlPF9JeC4uLiwgX1JlcGVhdF9mb3I8X0l4X25leHQsIF9UeXBlczI+Ojp2YWx1ZS4uLj4s
IF9JeF9uZXh0ICsgMSwNCiAgICAgICAgICBfUmVzdC4uLj4geyANCn07DQoNCnRlbXBsYXRlIDxj
bGFzcy4uLiBfVHVwbGVzPg0Kc3RydWN0IF9UdXBsZV9jYXQxIDogX1R1cGxlX2NhdDI8dHVwbGU8
PiwgaW5kZXhfc2VxdWVuY2U8PiwgaW5kZXhfc2VxdWVuY2U8PiwgMCwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlbmFtZSBfVmlld19hc190dXBsZTxkZWNheV90PF9UdXBsZXM+Pjo6dHlw
ZS4uLj4geyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBf
UmV0LCBzaXplX3QuLi4gX0t4LCBzaXplX3QuLi4gX0l4LCBjbGFzcyBfVHk+DQpjb25zdGV4cHIg
X1JldCBfVHVwbGVfY2F0KGluZGV4X3NlcXVlbmNlPF9LeC4uLj4sIGluZGV4X3NlcXVlbmNlPF9J
eC4uLj4sIF9UeSYmIF9BcmcpIHsgDQogICAgcmV0dXJuIF9SZXQoOjpzdGQ6OiBnZXQ8X0t4Pig6
OnN0ZDo6IGdldDxfSXg+KDo6c3RkOjogZm9yd2FyZDxfVHk+KF9BcmcpKSkuLi4pOw0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R1cGxlcz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIHR5cGVu
YW1lIF9UdXBsZV9jYXQxPF9UdXBsZXMuLi4+Ojp0eXBlIHR1cGxlX2NhdChfVHVwbGVzJiYuLi4g
X1RwbHMpIHsgDQogICAgdXNpbmcgX0NhdDEgPSBfVHVwbGVfY2F0MTxfVHVwbGVzLi4uPjsNCiAg
ICByZXR1cm4gX1R1cGxlX2NhdDx0eXBlbmFtZSBfQ2F0MTo6dHlwZT4odHlwZW5hbWUgX0NhdDE6
Ol9LeF9hcmdfc2VxKCksIHR5cGVuYW1lIF9DYXQxOjpfSXhfYXJnX3NlcSgpLA0KICAgICAgICA6
OnN0ZDo6IGZvcndhcmRfYXNfdHVwbGUoOjpzdGQ6OiBmb3J3YXJkPF9UdXBsZXM+KF9UcGxzKS4u
LikpOw0KfQ0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9DYWxsYWJsZSwgY2xhc3MgX1R1cGxlLCBz
aXplX3QuLi4gX0luZGljZXM+DQpjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgX0FwcGx5X2ltcGwo
DQogICAgX0NhbGxhYmxlJiYgX09iaiwgX1R1cGxlJiYgX1RwbCwgaW5kZXhfc2VxdWVuY2U8X0lu
ZGljZXMuLi4+KSB7IA0KICAgIHJldHVybiA6OnN0ZDo6IGludm9rZSg6OnN0ZDo6IGZvcndhcmQ8
X0NhbGxhYmxlPihfT2JqKSwgOjpzdGQ6OiBnZXQ8X0luZGljZXM+KDo6c3RkOjogZm9yd2FyZDxf
VHVwbGU+KF9UcGwpKS4uLik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ2FsbGFibGUsIGNsYXNz
IF9UdXBsZT4NCmNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBhcHBseShfQ2FsbGFibGUmJiBfT2Jq
LCBfVHVwbGUmJiBfVHBsKSB7IA0KICAgIHJldHVybiBfQXBwbHlfaW1wbCg6OnN0ZDo6IGZvcndh
cmQ8X0NhbGxhYmxlPihfT2JqKSwgOjpzdGQ6OiBmb3J3YXJkPF9UdXBsZT4oX1RwbCksDQogICAg
ICAgIG1ha2VfaW5kZXhfc2VxdWVuY2U8dHVwbGVfc2l6ZV92PHJlbW92ZV9yZWZlcmVuY2VfdDxf
VHVwbGU+Pj57fSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX1R1cGxlLCBz
aXplX3QuLi4gX0luZGljZXM+DQpjb25zdGV4cHIgX1R5IF9NYWtlX2Zyb21fdHVwbGVfaW1wbCgN
CiAgICBfVHVwbGUmJiBfVHBsLCBpbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4pIHsgDQogICAg
cmV0dXJuIF9UeSg6OnN0ZDo6IGdldDxfSW5kaWNlcz4oOjpzdGQ6OiBmb3J3YXJkPF9UdXBsZT4o
X1RwbCkpLi4uKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX1R1cGxlPg0KW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgX1R5IG1ha2VfZnJvbV90dXBsZShfVHVwbGUmJiBfVHBsKSB7
IA0KICAgIHJldHVybiBfTWFrZV9mcm9tX3R1cGxlX2ltcGw8X1R5PigNCiAgICAgICAgOjpzdGQ6
OiBmb3J3YXJkPF9UdXBsZT4oX1RwbCksIG1ha2VfaW5kZXhfc2VxdWVuY2U8dHVwbGVfc2l6ZV92
PHJlbW92ZV9yZWZlcmVuY2VfdDxfVHVwbGU+Pj57fSk7DQp9DQojbGluZSA5NzQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdHVwbGUiDQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R1cGxlMSwg
Y2xhc3MgX1R1cGxlMiwgc2l6ZV90Li4uIF9JbmRleGVzMSwgc2l6ZV90Li4uIF9JbmRleGVzMj4N
CmNvbnN0ZXhwciBwYWlyPF9UeTEsIF9UeTI+OjpwYWlyKA0KICAgIF9UdXBsZTEmIF9WYWwxLCBf
VHVwbGUyJiBfVmFsMiwgaW5kZXhfc2VxdWVuY2U8X0luZGV4ZXMxLi4uPiwgaW5kZXhfc2VxdWVu
Y2U8X0luZGV4ZXMyLi4uPikNCiAgICA6IGZpcnN0KDo6c3RkOjogZ2V0PF9JbmRleGVzMT4oOjpz
dGQ6OiBtb3ZlKF9WYWwxKSkuLi4pLCBzZWNvbmQoOjpzdGQ6OiBnZXQ8X0luZGV4ZXMyPig6OnN0
ZDo6IG1vdmUoX1ZhbDIpKS4uLikge30NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3Mg
X1R5Mj4NCnRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXMxLCBjbGFzcy4uLiBfVHlwZXMyPg0KaW5s
aW5lIHBhaXI8X1R5MSwgX1R5Mj46OnBhaXIocGllY2V3aXNlX2NvbnN0cnVjdF90LCB0dXBsZTxf
VHlwZXMxLi4uPiBfVmFsMSwgdHVwbGU8X1R5cGVzMi4uLj4gX1ZhbDIpDQogICAgOiBwYWlyKF9W
YWwxLCBfVmFsMiwgaW5kZXhfc2VxdWVuY2VfZm9yPF9UeXBlczEuLi4+e30sIGluZGV4X3NlcXVl
bmNlX2ZvcjxfVHlwZXMyLi4uPnt9KSB7fQ0KDQoNCnRlbXBsYXRlIDxjbGFzcy4uLiBfVHlwZXMs
IGNsYXNzIF9BbGxvYz4NCnN0cnVjdCB1c2VzX2FsbG9jYXRvcjx0dXBsZTxfVHlwZXMuLi4+LCBf
QWxsb2M+IDogdHJ1ZV90eXBlIHt9OyANCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTAwMiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0dXBsZSIN
Cg0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGlu
ZSAxMDEwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHR1cGxlIg0KI2xpbmUgMTAxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx0dXBsZSINCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QcmludFN0cmVhbS5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
Rm9yd2FyZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgQXRvbVN0cmluZzsNCmNs
YXNzIEF0b21TdHJpbmdJbXBsOw0KY2xhc3MgQmluYXJ5U2VtYXBob3JlOw0KY2xhc3MgQ1N0cmlu
ZzsNCmNsYXNzIENyYXNoT25PdmVyZmxvdzsNCmNsYXNzIEZ1bmN0aW9uRGlzcGF0Y2hlcjsNCmNs
YXNzIEhhc2hlcjsNCmNsYXNzIE1vbm90b25pY1RpbWU7DQpjbGFzcyBPcmRpbmFsTnVtYmVyOw0K
Y2xhc3MgUHJpbnRTdHJlYW07DQpjbGFzcyBTSEExOw0KY2xhc3MgU2Vjb25kczsNCmNsYXNzIFN0
cmluZzsNCmNsYXNzIFN0cmluZ0J1aWxkZXI7DQpjbGFzcyBTdHJpbmdJbXBsOw0KY2xhc3MgU3Ry
aW5nVmlldzsNCmNsYXNzIFRleHRQb3NpdGlvbjsNCmNsYXNzIFRleHRTdHJlYW07DQpjbGFzcyBV
bmlxdWVkU3RyaW5nSW1wbDsNCmNsYXNzIFVSTDsNCmNsYXNzIFdhbGxUaW1lOw0KDQpzdHJ1Y3Qg
QW55VGhyZWFkc0FjY2Vzc1RyYWl0czsNCnN0cnVjdCBFbXB0eUNvdW50ZXI7DQpzdHJ1Y3QgRmFz
dE1hbGxvYzsNCnN0cnVjdCBNYWluVGhyZWFkQWNjZXNzVHJhaXRzOw0KDQoNCg0KI2xpbmUgNTgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L0ZvcndhcmQuaCINCnVzaW5nIFZlY3Rvck1hbGxvYyA9IEZhc3RNYWxsb2M7DQojbGluZSA2MCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
Rm9yd2FyZC5oIg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IER1bWJQdHJUcmFpdHM7DQoN
CnRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBDb21wbGV0aW9uSGFuZGxlcjsNCnRlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBGdW5jdGlvbjsNCnRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IEFu
eVRocmVhZHNBY2Nlc3NUcmFpdHM+IGNsYXNzIExhenlOZXZlckRlc3Ryb3llZDsNCnRlbXBsYXRl
PHR5cGVuYW1lLCB0eXBlbmFtZSA9IEFueVRocmVhZHNBY2Nlc3NUcmFpdHM+IGNsYXNzIE5ldmVy
RGVzdHJveWVkOw0KdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIE9wdGlvblNldDsNCnRlbXBsYXRl
PHR5cGVuYW1lPiBjbGFzcyBPcHRpb25hbDsNCnRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBQYWNr
ZWQ7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgPSBhbGlnbm9mKFQpPiBjbGFzcyBQYWNr
ZWRBbGlnbmVkUHRyOw0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBEdW1iUHRyVHJh
aXRzPFQ+PiBjbGFzcyBSZWY7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IER1bWJQ
dHJUcmFpdHM8VD4+IGNsYXNzIFJlZlB0cjsNCnRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJp
bmdCdWZmZXI7DQp0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3RyaW5nUGFyc2luZ0J1ZmZlcjsN
CnRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGNsYXNzIFN0cmluZ1R5cGVBZGFw
dGVyOw0KdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFVuaXF1ZVJlZjsNCnRlbXBsYXRlPHR5cGVu
YW1lLi4uPiBjbGFzcyBWYXJpYW50Ow0KdGVtcGxhdGU8dHlwZW5hbWUsIHNpemVfdCA9IDAsIHR5
cGVuYW1lID0gQ3Jhc2hPbk92ZXJmbG93LCBzaXplX3QgPSAxNiwgdHlwZW5hbWUgTWFsbG9jID0g
VmVjdG9yTWFsbG9jPiBjbGFzcyBWZWN0b3I7DQp0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUg
PSBFbXB0eUNvdW50ZXI+IGNsYXNzIFdlYWtQdHI7DQoNCnRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgRGVmYXVsdEhhc2g7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxBdG9tU3RyaW5n
PjsNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPcHRpb25TZXQ8VD4+
Ow0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nPjsNCnRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPjsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFVSTD47DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0
cnVjdCBEZWZhdWx0SGFzaDxWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+PjsNCg0KdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBEdW1iVmFsdWVUcmFpdHM7DQp0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEVudW1UcmFpdHM7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBFLi4uPiBzdHJ1Y3QgRW51bVZh
bHVlczsNCnRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lID0gRGVmYXVsdEhhc2g8VmFsdWU+LCB0eXBlbmFtZSA9
IEhhc2hUcmFpdHM8VmFsdWU+PiBjbGFzcyBIYXNoQ291bnRlZFNldDsNCnRlbXBsYXRlPHR5cGVu
YW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSA9IERlZmF1bHRIYXNoPEtl
eUFyZz4sIHR5cGVuYW1lID0gSGFzaFRyYWl0czxLZXlBcmc+LCB0eXBlbmFtZSA9IEhhc2hUcmFp
dHM8TWFwcGVkQXJnPj4gY2xhc3MgSGFzaE1hcDsNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSA9IERlZmF1bHRIYXNoPFZhbHVlQXJnPiwgdHlwZW5hbWUgPSBIYXNoVHJhaXRz
PFZhbHVlQXJnPj4gY2xhc3MgSGFzaFNldDsNCg0KfQ0KDQpuYW1lc3BhY2Ugc3RkIHsNCm5hbWVz
cGFjZSBleHBlcmltZW50YWwgew0KaW5saW5lIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjMgew0K
dGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBleHBlY3RlZDsNCnRlbXBsYXRlPGNsYXNzPiBj
bGFzcyB1bmV4cGVjdGVkOw0KfX19IA0KDQp1c2luZyBXVEY6OkF0b21TdHJpbmc7DQp1c2luZyBX
VEY6OkF0b21TdHJpbmdJbXBsOw0KdXNpbmcgV1RGOjpCaW5hcnlTZW1hcGhvcmU7DQp1c2luZyBX
VEY6OkNTdHJpbmc7DQp1c2luZyBXVEY6OkNvbXBsZXRpb25IYW5kbGVyOw0KdXNpbmcgV1RGOjpE
dW1iUHRyVHJhaXRzOw0KdXNpbmcgV1RGOjpEdW1iVmFsdWVUcmFpdHM7DQp1c2luZyBXVEY6OkZ1
bmN0aW9uOw0KdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7DQp1c2luZyBXVEY6Okhhc2hD
b3VudGVkU2V0Ow0KdXNpbmcgV1RGOjpIYXNoTWFwOw0KdXNpbmcgV1RGOjpIYXNoU2V0Ow0KdXNp
bmcgV1RGOjpIYXNoZXI7DQp1c2luZyBXVEY6OkxhenlOZXZlckRlc3Ryb3llZDsNCnVzaW5nIFdU
Rjo6TmV2ZXJEZXN0cm95ZWQ7DQp1c2luZyBXVEY6Ok9wdGlvblNldDsNCnVzaW5nIFdURjo6T3B0
aW9uYWw7DQp1c2luZyBXVEY6Ok9yZGluYWxOdW1iZXI7DQp1c2luZyBXVEY6OlByaW50U3RyZWFt
Ow0KdXNpbmcgV1RGOjpSZWY7DQp1c2luZyBXVEY6OlJlZlB0cjsNCnVzaW5nIFdURjo6U0hBMTsN
CnVzaW5nIFdURjo6U3RyaW5nOw0KdXNpbmcgV1RGOjpTdHJpbmdCdWZmZXI7DQp1c2luZyBXVEY6
OlN0cmluZ0J1aWxkZXI7DQp1c2luZyBXVEY6OlN0cmluZ0ltcGw7DQp1c2luZyBXVEY6OlN0cmlu
Z1BhcnNpbmdCdWZmZXI7DQp1c2luZyBXVEY6OlN0cmluZ1ZpZXc7DQp1c2luZyBXVEY6OlRleHRQ
b3NpdGlvbjsNCnVzaW5nIFdURjo6VGV4dFN0cmVhbTsNCnVzaW5nIFdURjo6VVJMOw0KdXNpbmcg
V1RGOjpVbmlxdWVSZWY7DQp1c2luZyBXVEY6OlZhcmlhbnQ7DQp1c2luZyBXVEY6OlZlY3RvcjsN
Cg0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcgRXhwZWN0ZWQgPSBzdGQ6OmV4cGVy
aW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47DQp0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVj
dGVkID0gc3RkOjpleHBlcmltZW50YWw6OnVuZXhwZWN0ZWQ8RT47DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUHJpbnRTdHJlYW0uaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTm9uY29weWFibGUuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoj
bGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUHJpbnRTdHJlYW0uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL09wdGlvbmFsLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNhc3NlcnQiDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1
ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcYXNzZXJ0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcYXNzZXJ0LmgiDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVz
aCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzI0ICA0NTE0IDQ1NzQgNDcxMCA0NzkzIDQ4
MjAgNDk5NSA0OTk2IDI4NzE5IDI4NzI2IDI4NzI3ICkNCg0KDQpfX3ByYWdtYShwYWNrKHB1c2gs
IDgpKSBleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRz
XFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxhc3NlcnQuaCINCg0KDQoNCn0gX19w
cmFnbWEocGFjayhwb3ApKQ0KDQojcHJhZ21hIHdhcm5pbmcocG9wKSANCiNsaW5lIDEwICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNhc3NlcnQiDQoj
bGluZSA0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvT3B0aW9uYWwuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc3RyaW5nIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhzdHJpbmciDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceHBvbHltb3JwaGljX2FsbG9jYXRvci5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5p
bmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5
NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMg
NDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyAp
DQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNz
IF9PdXRlcl9hbGxvYywgY2xhc3MgX0lubmVyX2FsbG9jLCBjbGFzcy4uLiBfVHlwZXM+DQp2b2lk
IF9Vc2VzX2FsbG9jYXRvcl9jb25zdHJ1Y3QyKA0KICAgIHRydWVfdHlwZSwgX1R5KiBjb25zdCBf
UHRyLCBfT3V0ZXJfYWxsb2MmIF9PdXRlciwgX0lubmVyX2FsbG9jJiBfSW5uZXIsIF9UeXBlcyYm
Li4uIF9BcmdzKSB7DQogICAgDQogICAgYWxsb2NhdG9yX3RyYWl0czxfT3V0ZXJfYWxsb2M+Ojpj
b25zdHJ1Y3QoX091dGVyLCBfUHRyLCBhbGxvY2F0b3JfYXJnLCBfSW5uZXIsIDo6c3RkOjogZm9y
d2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNz
IF9PdXRlcl9hbGxvYywgY2xhc3MgX0lubmVyX2FsbG9jLCBjbGFzcy4uLiBfVHlwZXM+DQp2b2lk
IF9Vc2VzX2FsbG9jYXRvcl9jb25zdHJ1Y3QyKA0KICAgIGZhbHNlX3R5cGUsIF9UeSogY29uc3Qg
X1B0ciwgX091dGVyX2FsbG9jJiBfT3V0ZXIsIF9Jbm5lcl9hbGxvYyYgX0lubmVyLCBfVHlwZXMm
Ji4uLiBfQXJncykgew0KICAgIA0KICAgIHN0YXRpY19hc3NlcnQoaXNfY29uc3RydWN0aWJsZV92
PF9UeSwgX1R5cGVzLi4uLCBfSW5uZXJfYWxsb2MmPiwNCiAgICAgICAgIk40NzAwIDIzLjEwLjcu
MiBbYWxsb2NhdG9yLnVzZXMuY29uc3RydWN0aW9uXS8xIHJlcXVpcmVzICINCiAgICAgICAgImlz
X2NvbnN0cnVjdGlibGVfdjxULCBBcmdzLi4uLCBBbGxvYyY+IHdoZW4gdXNlc19hbGxvY2F0b3Jf
djxULCBBbGxvYz4gaXMgdHJ1ZSBhbmQgIg0KICAgICAgICAiaXNfY29uc3RydWN0aWJsZV92PFQs
IGFsbG9jYXRvcl9hcmdfdCwgQWxsb2MmLCBBcmdzLi4uPiBpcyBmYWxzZSIpOw0KICAgIGFsbG9j
YXRvcl90cmFpdHM8X091dGVyX2FsbG9jPjo6Y29uc3RydWN0KF9PdXRlciwgX1B0ciwgOjpzdGQ6
OiBmb3J3YXJkPF9UeXBlcz4oX0FyZ3MpLi4uLCBfSW5uZXIpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5LCBjbGFzcyBfT3V0ZXJfYWxsb2MsIGNsYXNzIF9Jbm5lcl9hbGxvYywgY2xhc3MuLi4g
X1R5cGVzPg0Kdm9pZCBfVXNlc19hbGxvY2F0b3JfY29uc3RydWN0MSgNCiAgICB0cnVlX3R5cGUs
IF9UeSogY29uc3QgX1B0ciwgX091dGVyX2FsbG9jJiBfT3V0ZXIsIF9Jbm5lcl9hbGxvYyYgX0lu
bmVyLCBfVHlwZXMmJi4uLiBfQXJncykgew0KICAgIA0KICAgIA0KICAgIHVzaW5nIF9Jc0NvbnN0
cnVjdGlibGUgPSB0eXBlbmFtZSBpc19jb25zdHJ1Y3RpYmxlPF9UeSwgYWxsb2NhdG9yX2FyZ190
LCBfSW5uZXJfYWxsb2MmLCBfVHlwZXMuLi4+Ojp0eXBlOw0KICAgIF9Vc2VzX2FsbG9jYXRvcl9j
b25zdHJ1Y3QyKF9Jc0NvbnN0cnVjdGlibGV7fSwgX1B0ciwgX091dGVyLCBfSW5uZXIsIDo6c3Rk
OjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHks
IGNsYXNzIF9PdXRlcl9hbGxvYywgY2xhc3MgX0lubmVyX2FsbG9jLCBjbGFzcy4uLiBfVHlwZXM+
DQp2b2lkIF9Vc2VzX2FsbG9jYXRvcl9jb25zdHJ1Y3QxKGZhbHNlX3R5cGUsIF9UeSogY29uc3Qg
X1B0ciwgX091dGVyX2FsbG9jJiBfT3V0ZXIsIF9Jbm5lcl9hbGxvYyYsIF9UeXBlcyYmLi4uIF9B
cmdzKSB7DQogICAgDQogICAgc3RhdGljX2Fzc2VydChpc19jb25zdHJ1Y3RpYmxlX3Y8X1R5LCBf
VHlwZXMuLi4+LA0KICAgICAgICAiTjQ3MDAgMjMuMTAuNy4yIFthbGxvY2F0b3IudXNlcy5jb25z
dHJ1Y3Rpb25dLzEgcmVxdWlyZXMgIg0KICAgICAgICAiaXNfY29uc3RydWN0aWJsZV92PFQsIEFy
Z3MuLi4+IHdoZW4gdXNlc19hbGxvY2F0b3JfdjxULCBBbGxvYz4gaXMgZmFsc2UiKTsNCiAgICBh
bGxvY2F0b3JfdHJhaXRzPF9PdXRlcl9hbGxvYz46OmNvbnN0cnVjdChfT3V0ZXIsIF9QdHIsIDo6
c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHksIGNsYXNzIF9PdXRlcl9hbGxvYywgY2xhc3MgX0lubmVyX2FsbG9jLCBjbGFzcy4uLiBfVHlw
ZXMsDQogICAgZW5hYmxlX2lmX3Q8IV9Jc19zcGVjaWFsaXphdGlvbl92PF9UeSwgcGFpcj4sIGlu
dD4gPSAwPg0Kdm9pZCBfVXNlc19hbGxvY2F0b3JfY29uc3RydWN0KF9UeSogY29uc3QgX1B0ciwg
X091dGVyX2FsbG9jJiBfT3V0ZXIsIF9Jbm5lcl9hbGxvYyYgX0lubmVyLCBfVHlwZXMmJi4uLiBf
QXJncykgew0KICAgIA0KICAgIF9Vc2VzX2FsbG9jYXRvcl9jb25zdHJ1Y3QxKHVzZXNfYWxsb2Nh
dG9yPF9UeSwgX0lubmVyX2FsbG9jPnt9LCBfUHRyLCBfT3V0ZXIsIF9Jbm5lciwNCiAgICAgICAg
OjpzdGQ6OiBmb3J3YXJkPF9UeXBlcz4oX0FyZ3MpLi4uKTsgDQp9DQoNCnRlbXBsYXRlIDxjbGFz
cyBfQWxsb2MsIGNsYXNzLi4uIF9UeXBlcz4NCmF1dG8gX1VzZXNfYWxsb2NhdG9yX3BpZWNld2lz
ZTIodHJ1ZV90eXBlLCBfQWxsb2MmIF9BbCwgdHVwbGU8X1R5cGVzLi4uPiYmIF9UdXBsZSkgew0K
ICAgIHJldHVybiA6OnN0ZDo6IHR1cGxlX2NhdCh0dXBsZTxhbGxvY2F0b3JfYXJnX3QsIF9BbGxv
YyY+KGFsbG9jYXRvcl9hcmcsIF9BbCksIDo6c3RkOjogbW92ZShfVHVwbGUpKTsNCn0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MuLi4gX1R5cGVzPg0KYXV0byBfVXNlc19hbGxvY2F0
b3JfcGllY2V3aXNlMihmYWxzZV90eXBlLCBfQWxsb2MmIF9BbCwgdHVwbGU8X1R5cGVzLi4uPiYm
IF9UdXBsZSkgew0KICAgIHJldHVybiA6OnN0ZDo6IHR1cGxlX2NhdCg6OnN0ZDo6IG1vdmUoX1R1
cGxlKSwgdHVwbGU8X0FsbG9jJj4oX0FsKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNs
YXNzIF9BbGxvYywgY2xhc3MuLi4gX1R5cGVzPg0KYXV0byBfVXNlc19hbGxvY2F0b3JfcGllY2V3
aXNlKHRydWVfdHlwZSwgX0FsbG9jJiBfQWwsIHR1cGxlPF9UeXBlcy4uLj4mJiBfVHVwbGUpIHsN
CiAgICByZXR1cm4gX1VzZXNfYWxsb2NhdG9yX3BpZWNld2lzZTIoDQogICAgICAgIGlzX2NvbnN0
cnVjdGlibGU8X1R5LCBhbGxvY2F0b3JfYXJnX3QsIF9BbGxvYyYsIF9UeXBlcy4uLj4oKSwgX0Fs
LCA6OnN0ZDo6IG1vdmUoX1R1cGxlKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcywgY2xhc3MgX0Fs
bG9jLCBjbGFzcy4uLiBfVHlwZXM+DQp0dXBsZTxfVHlwZXMuLi4+JiYgX1VzZXNfYWxsb2NhdG9y
X3BpZWNld2lzZShmYWxzZV90eXBlLCBfQWxsb2MmLCB0dXBsZTxfVHlwZXMuLi4+JiYgX1R1cGxl
KSB7DQogICAgcmV0dXJuIDo6c3RkOjogbW92ZShfVHVwbGUpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5MSwgY2xhc3MgX1R5MiwgY2xhc3MgX091dGVyX2FsbG9jLCBjbGFzcyBfSW5uZXJfYWxs
b2MsIGNsYXNzLi4uIF9UeXBlczEsIGNsYXNzLi4uIF9UeXBlczI+DQp2b2lkIF9Vc2VzX2FsbG9j
YXRvcl9jb25zdHJ1Y3RfcGFpcihwYWlyPF9UeTEsIF9UeTI+KiBjb25zdCBfUHRyLCBfT3V0ZXJf
YWxsb2MmIF9PdXRlciwgX0lubmVyX2FsbG9jJiBfSW5uZXIsDQogICAgdHVwbGU8X1R5cGVzMS4u
Lj4mJiBfVmFsMSwgdHVwbGU8X1R5cGVzMi4uLj4mJiBfVmFsMikgew0KICAgIA0KICAgIGFsbG9j
YXRvcl90cmFpdHM8X091dGVyX2FsbG9jPjo6Y29uc3RydWN0KF9PdXRlciwgX1B0ciwgcGllY2V3
aXNlX2NvbnN0cnVjdCwNCiAgICAgICAgX1VzZXNfYWxsb2NhdG9yX3BpZWNld2lzZTxfVHkxPih1
c2VzX2FsbG9jYXRvcjxfVHkxLCBfSW5uZXJfYWxsb2M+e30sIF9Jbm5lciwgOjpzdGQ6OiBtb3Zl
KF9WYWwxKSksDQogICAgICAgIF9Vc2VzX2FsbG9jYXRvcl9waWVjZXdpc2U8X1R5Mj4odXNlc19h
bGxvY2F0b3I8X1R5MiwgX0lubmVyX2FsbG9jPnt9LCBfSW5uZXIsIDo6c3RkOjogbW92ZShfVmFs
MikpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTIsIGNsYXNzIF9PdXRl
cl9hbGxvYywgY2xhc3MgX0lubmVyX2FsbG9jLCBjbGFzcy4uLiBfVHlwZXMxLCBjbGFzcy4uLiBf
VHlwZXMyPg0Kdm9pZCBfVXNlc19hbGxvY2F0b3JfY29uc3RydWN0KHBhaXI8X1R5MSwgX1R5Mj4q
IGNvbnN0IF9QdHIsIF9PdXRlcl9hbGxvYyYgX091dGVyLCBfSW5uZXJfYWxsb2MmIF9Jbm5lciwN
CiAgICBwaWVjZXdpc2VfY29uc3RydWN0X3QsIHR1cGxlPF9UeXBlczEuLi4+IF9WYWwxLCB0dXBs
ZTxfVHlwZXMyLi4uPiBfVmFsMikgew0KICAgIA0KICAgIF9Vc2VzX2FsbG9jYXRvcl9jb25zdHJ1
Y3RfcGFpcihfUHRyLCBfT3V0ZXIsIF9Jbm5lciwgOjpzdGQ6OiBtb3ZlKF9WYWwxKSwgOjpzdGQ6
OiBtb3ZlKF9WYWwyKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCBj
bGFzcyBfT3V0ZXJfYWxsb2MsIGNsYXNzIF9Jbm5lcl9hbGxvYz4NCnZvaWQgX1VzZXNfYWxsb2Nh
dG9yX2NvbnN0cnVjdChwYWlyPF9UeTEsIF9UeTI+KiBjb25zdCBfUHRyLCBfT3V0ZXJfYWxsb2Mm
IF9PdXRlciwgX0lubmVyX2FsbG9jJiBfSW5uZXIpIHsNCiAgICANCiAgICBfVXNlc19hbGxvY2F0
b3JfY29uc3RydWN0X3BhaXIoX1B0ciwgX091dGVyLCBfSW5uZXIsIHR1cGxlPD57fSwgdHVwbGU8
Pnt9KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTIsIGNsYXNzIF9PdXRl
cl9hbGxvYywgY2xhc3MgX0lubmVyX2FsbG9jLCBjbGFzcyBfVXR5LCBjbGFzcyBfVnR5Pg0Kdm9p
ZCBfVXNlc19hbGxvY2F0b3JfY29uc3RydWN0KA0KICAgIHBhaXI8X1R5MSwgX1R5Mj4qIGNvbnN0
IF9QdHIsIF9PdXRlcl9hbGxvYyYgX091dGVyLCBfSW5uZXJfYWxsb2MmIF9Jbm5lciwgX1V0eSYm
IF9BcmcxLCBfVnR5JiYgX0FyZzIpIHsNCiAgICANCiAgICBfVXNlc19hbGxvY2F0b3JfY29uc3Ry
dWN0X3BhaXIoX1B0ciwgX091dGVyLCBfSW5uZXIsIDo6c3RkOjogZm9yd2FyZF9hc190dXBsZSg6
OnN0ZDo6IGZvcndhcmQ8X1V0eT4oX0FyZzEpKSwNCiAgICAgICAgOjpzdGQ6OiBmb3J3YXJkX2Fz
X3R1cGxlKDo6c3RkOjogZm9yd2FyZDxfVnR5PihfQXJnMikpKTsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIF9UeTEsIGNsYXNzIF9UeTIsIGNsYXNzIF9PdXRlcl9hbGxvYywgY2xhc3MgX0lubmVyX2Fs
bG9jLCBjbGFzcyBfVXR5LCBjbGFzcyBfVnR5Pg0Kdm9pZCBfVXNlc19hbGxvY2F0b3JfY29uc3Ry
dWN0KA0KICAgIHBhaXI8X1R5MSwgX1R5Mj4qIGNvbnN0IF9QdHIsIF9PdXRlcl9hbGxvYyYgX091
dGVyLCBfSW5uZXJfYWxsb2MmIF9Jbm5lciwgY29uc3QgcGFpcjxfVXR5LCBfVnR5PiYgX1BhaXIp
IHsNCiAgICANCiAgICBfVXNlc19hbGxvY2F0b3JfY29uc3RydWN0X3BhaXIoDQogICAgICAgIF9Q
dHIsIF9PdXRlciwgX0lubmVyLCA6OnN0ZDo6IGZvcndhcmRfYXNfdHVwbGUoX1BhaXIuZmlyc3Qp
LCA6OnN0ZDo6IGZvcndhcmRfYXNfdHVwbGUoX1BhaXIuc2Vjb25kKSk7DQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCBjbGFzcyBfT3V0ZXJfYWxsb2MsIGNsYXNzIF9Jbm5l
cl9hbGxvYywgY2xhc3MgX1V0eSwgY2xhc3MgX1Z0eT4NCnZvaWQgX1VzZXNfYWxsb2NhdG9yX2Nv
bnN0cnVjdCgNCiAgICBwYWlyPF9UeTEsIF9UeTI+KiBjb25zdCBfUHRyLCBfT3V0ZXJfYWxsb2Mm
IF9PdXRlciwgX0lubmVyX2FsbG9jJiBfSW5uZXIsIHBhaXI8X1V0eSwgX1Z0eT4mJiBfUGFpcikg
ew0KICAgIA0KICAgIF9Vc2VzX2FsbG9jYXRvcl9jb25zdHJ1Y3RfcGFpcihfUHRyLCBfT3V0ZXIs
IF9Jbm5lciwgOjpzdGQ6OiBmb3J3YXJkX2FzX3R1cGxlKDo6c3RkOjogZm9yd2FyZDxfVXR5Pihf
UGFpci5maXJzdCkpLA0KICAgICAgICA6OnN0ZDo6IGZvcndhcmRfYXNfdHVwbGUoOjpzdGQ6OiBm
b3J3YXJkPF9WdHk+KF9QYWlyLnNlY29uZCkpKTsNCn0NCg0KDQpuYW1lc3BhY2UgcG1yIHsNCg0K
ICAgIA0KICAgIGNsYXNzIF9fZGVjbHNwZWMobm92dGFibGUpIG1lbW9yeV9yZXNvdXJjZSB7DQog
ICAgcHVibGljOg0KICAgICAgICB2aXJ0dWFsIH5tZW1vcnlfcmVzb3VyY2UoKSBub2V4Y2VwdCB7
fQ0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gX19kZWNsc3BlYyhhbGxvY2F0b3IpIHZvaWQqIGFs
bG9jYXRlKCBjb25zdCBzaXplX3QgX0J5dGVzLA0KICAgICAgICAgICAgY29uc3Qgc2l6ZV90IF9B
bGlnbiA9IGFsaWdub2YobWF4X2FsaWduX3QpKSB7IA0KICAgICAgICAgICAgOw0KICAgICAgICAg
ICAgcmV0dXJuIGRvX2FsbG9jYXRlKF9CeXRlcywgX0FsaWduKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBjb25zdCBfUHRyLCBjb25zdCBzaXplX3QgX0J5dGVz
LCBjb25zdCBzaXplX3QgX0FsaWduID0gYWxpZ25vZihtYXhfYWxpZ25fdCkpIHsNCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgOw0KICAgICAgICAgICAgcmV0dXJuIGRvX2RlYWxsb2NhdGUoX1B0
ciwgX0J5dGVzLCBfQWxpZ24pOw0KICAgICAgICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBi
b29sIGlzX2VxdWFsKGNvbnN0IG1lbW9yeV9yZXNvdXJjZSYgX1RoYXQpIGNvbnN0IG5vZXhjZXB0
IHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIGRvX2lzX2VxdWFsKF9UaGF0KTsN
CiAgICAgICAgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAgdmlydHVhbCB2b2lkKiBkb19hbGxv
Y2F0ZShzaXplX3QgX0J5dGVzLCBzaXplX3QgX0FsaWduKSAgICAgICAgICAgICAgID0gMDsNCiAg
ICAgICAgdmlydHVhbCB2b2lkIGRvX2RlYWxsb2NhdGUodm9pZCogX1B0ciwgc2l6ZV90IF9CeXRl
cywgc2l6ZV90IF9BbGlnbikgID0gMDsNCiAgICAgICAgdmlydHVhbCBib29sIGRvX2lzX2VxdWFs
KGNvbnN0IG1lbW9yeV9yZXNvdXJjZSYgX1RoYXQpIGNvbnN0IG5vZXhjZXB0ID0gMDsNCiAgICB9
Ow0KDQogICAgW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1lbW9y
eV9yZXNvdXJjZSYgX0xlZnQsIGNvbnN0IG1lbW9yeV9yZXNvdXJjZSYgX1JpZ2h0KSBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiAmX0xlZnQgPT0gJl9SaWdodCB8fCBfTGVmdC5pc19lcXVhbChf
UmlnaHQpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBtZW1vcnlfcmVzb3VyY2UmIF9MZWZ0LCBjb25zdCBtZW1vcnlfcmVzb3VyY2UmIF9S
aWdodCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0KICAg
IH0NCg0KICAgIA0KICAgIGV4dGVybiAiQyIgIG1lbW9yeV9yZXNvdXJjZSogX19jZGVjbCBfQWxp
Z25lZF9nZXRfZGVmYXVsdF9yZXNvdXJjZSgpIG5vZXhjZXB0Ow0KICAgIGV4dGVybiAiQyIgIG1l
bW9yeV9yZXNvdXJjZSogX19jZGVjbCBfVW5hbGlnbmVkX2dldF9kZWZhdWx0X3Jlc291cmNlKCkg
bm9leGNlcHQ7DQoNCiAgICBbW25vZGlzY2FyZF1dIGlubGluZSBtZW1vcnlfcmVzb3VyY2UqIGdl
dF9kZWZhdWx0X3Jlc291cmNlKCkgbm9leGNlcHQgew0KDQogICAgICAgIHJldHVybiBfQWxpZ25l
ZF9nZXRfZGVmYXVsdF9yZXNvdXJjZSgpOw0KDQoNCiNsaW5lIDE4NiAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4cG9seW1vcnBoaWNfYWxsb2NhdG9y
LmgiDQogICAgfQ0KDQogICAgDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeT4NCiAgICBjbGFzcyBw
b2x5bW9ycGhpY19hbGxvY2F0b3Igew0KICAgIHB1YmxpYzoNCiAgICAgICAgdGVtcGxhdGUgPGNs
YXNzPg0KICAgICAgICBmcmllbmQgY2xhc3MgcG9seW1vcnBoaWNfYWxsb2NhdG9yOw0KDQogICAg
ICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBfVHk7DQoNCiAgICAgICAgcG9seW1vcnBoaWNfYWxsb2Nh
dG9yKCkgbm9leGNlcHQgPSBkZWZhdWx0Ow0KDQogICAgICAgICBwb2x5bW9ycGhpY19hbGxvY2F0
b3IobWVtb3J5X3Jlc291cmNlKiBjb25zdCBfUmVzb3VyY2VfKSBub2V4Y2VwdCANCiAgICAgICAg
ICAgIDogX1Jlc291cmNle19SZXNvdXJjZV99IHsgDQogICAgICAgICAgICA7DQojbGluZSAyMDMg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHBvbHlt
b3JwaGljX2FsbG9jYXRvci5oIg0KICAgICAgICB9DQoNCiAgICAgICAgcG9seW1vcnBoaWNfYWxs
b2NhdG9yKGNvbnN0IHBvbHltb3JwaGljX2FsbG9jYXRvciYpID0gZGVmYXVsdDsNCg0KICAgICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eT4NCiAgICAgICAgcG9seW1vcnBoaWNfYWxsb2NhdG9yKGNv
bnN0IHBvbHltb3JwaGljX2FsbG9jYXRvcjxfVXR5PiYgX1RoYXQpIG5vZXhjZXB0DQogICAgICAg
ICAgICA6IF9SZXNvdXJjZXtfVGhhdC5fUmVzb3VyY2V9IHt9IA0KDQogICAgICAgIHBvbHltb3Jw
aGljX2FsbG9jYXRvciYgb3BlcmF0b3I9KGNvbnN0IHBvbHltb3JwaGljX2FsbG9jYXRvciYpID0g
ZGVsZXRlOw0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gX19kZWNsc3BlYyhhbGxvY2F0b3IpIF9U
eSogYWxsb2NhdGUoIGNvbnN0IHNpemVfdCBfQ291bnQpIHsNCiAgICAgICAgICAgIA0KICAgICAg
ICAgICAgdm9pZCogY29uc3QgX1ZwID0gX1Jlc291cmNlLT5hbGxvY2F0ZShfR2V0X3NpemVfb2Zf
bjxzaXplb2YoX1R5KT4oX0NvdW50KSwgYWxpZ25vZihfVHkpKTsNCiAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxfVHkqPihfVnApOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBkZWFs
bG9jYXRlKF9UeSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90IF9Db3VudCkgbm9leGNlcHQgIHsN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICBfUmVzb3VyY2UtPmRlYWxs
b2NhdGUoX1B0ciwgX0NvdW50ICogc2l6ZW9mKF9UeSksIGFsaWdub2YoX1R5KSk7DQogICAgICAg
IH0NCg0KICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1V0eSwgY2xhc3MuLi4gX1R5cGVzPg0KICAg
ICAgICB2b2lkIGNvbnN0cnVjdChfVXR5KiBjb25zdCBfUHRyLCBfVHlwZXMmJi4uLiBfQXJncykg
ew0KICAgICAgICAgICAgDQogICAgICAgICAgICBhbGxvY2F0b3I8Y2hhcj4gX0Fse307DQogICAg
ICAgICAgICBfVXNlc19hbGxvY2F0b3JfY29uc3RydWN0KF9QdHIsIF9BbCwgKnRoaXMsIDo6c3Rk
OjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgICAgIH0NCg0KICAgICAgICBbW25v
ZGlzY2FyZF1dIHBvbHltb3JwaGljX2FsbG9jYXRvciBzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlf
Y29uc3RydWN0aW9uKCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgcmV0dXJuIHt9Ow0KICAgICAgICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBtZW1vcnlf
cmVzb3VyY2UqIHJlc291cmNlKCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgcmV0dXJuIF9SZXNvdXJjZTsNCiAgICAgICAgfQ0KDQogICAgcHJpdmF0ZToNCiAg
ICAgICAgbWVtb3J5X3Jlc291cmNlKiBfUmVzb3VyY2UgPSA6OnN0ZDo6IHBtcjo6Z2V0X2RlZmF1
bHRfcmVzb3VyY2UoKTsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNz
IF9UeTI+DQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPT0oDQogICAgICAgIGNvbnN0
IHBvbHltb3JwaGljX2FsbG9jYXRvcjxfVHkxPiYgX0xlZnQsIGNvbnN0IHBvbHltb3JwaGljX2Fs
bG9jYXRvcjxfVHkyPiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICByZXR1
cm4gKl9MZWZ0LnJlc291cmNlKCkgPT0gKl9SaWdodC5yZXNvdXJjZSgpOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyPg0KICAgIFtbbm9kaXNjYXJkXV0gYm9v
bCBvcGVyYXRvciE9KA0KICAgICAgICBjb25zdCBwb2x5bW9ycGhpY19hbGxvY2F0b3I8X1R5MT4m
IF9MZWZ0LCBjb25zdCBwb2x5bW9ycGhpY19hbGxvY2F0b3I8X1R5Mj4mIF9SaWdodCkgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0KICAgIH0NCg0KfSANCg0K
I2xpbmUgMjYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhwb2x5bW9ycGhpY19hbGxvY2F0b3IuaCINCg0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5n
KHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSAyNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHBvbHltb3JwaGljX2FsbG9jYXRvci5oIg0K
I2xpbmUgMjcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhwb2x5bW9ycGhpY19hbGxvY2F0b3IuaCINCiNsaW5lIDE4ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQojbGluZSAxOSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0K
DQojcHJhZ21hIHBhY2socHVzaCwgOCkNCiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0KI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGUgOiA0MTgwIDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1
ODMgNDU4NyA0NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIw
IDQ5ODggNTAyNiA1MDI3IDUwNDUgNjI5NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4c3RyaW5nIg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBj
bGFzcyBfSW50X3R5cGU+DQpzdHJ1Y3QgX0NoYXJfdHJhaXRzIHsgDQogICAgdXNpbmcgY2hhcl90
eXBlICA9IF9FbGVtOw0KICAgIHVzaW5nIGludF90eXBlICAgPSBfSW50X3R5cGU7DQogICAgdXNp
bmcgcG9zX3R5cGUgICA9IHN0cmVhbXBvczsNCiAgICB1c2luZyBvZmZfdHlwZSAgID0gc3RyZWFt
b2ZmOw0KICAgIHVzaW5nIHN0YXRlX3R5cGUgPSBfTWJzdGF0ZXQ7DQoNCiAgICANCg0KICAgIHN0
YXRpYyBpbmxpbmUgX0VsZW0qIGNvcHkoICBfRWxlbSogY29uc3QgX0ZpcnN0MSwNCiAgICAgICAg
ICBjb25zdCBfRWxlbSogY29uc3QgX0ZpcnN0MiwgY29uc3Qgc2l6ZV90IF9Db3VudCkgbm9leGNl
cHQgIHsNCiAgICAgICAgDQoNCg0KI2xpbmUgNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQog
ICAgICAgIDo6IG1lbWNweShfRmlyc3QxLCBfRmlyc3QyLCBfQ291bnQgKiBzaXplb2YoX0VsZW0p
KTsNCiNsaW5lIDY0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHhzdHJpbmciDQoNCiAgICAgICAgcmV0dXJuIF9GaXJzdDE7DQogICAgfQ0KDQogICAg
ICBzdGF0aWMgaW5saW5lIF9FbGVtKiBfQ29weV9zKCANCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9FbGVtKiBjb25zdCBfRmlyc3QxLA0KICAgICAgICBjb25zdCBzaXplX3QgX0Rlc3Rfc2l6ZSwg
ICBjb25zdCBfRWxlbSogY29uc3QgX0ZpcnN0MiwNCiAgICAgICAgY29uc3Qgc2l6ZV90IF9Db3Vu
dCkgbm9leGNlcHQgeyANCiAgICAgICAgZG8geyBpZiAoX0NvdW50IDw9IF9EZXN0X3NpemUpIHsg
fSBlbHNlIHsgZG8geyA7IDo6X2ludmFsaWRfcGFyYW1ldGVyX25vaW5mb19ub3JldHVybigpOyB9
IHdoaWxlIChmYWxzZSk7IH0gOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHJldHVybiBjb3B5
KF9GaXJzdDEsIF9GaXJzdDIsIF9Db3VudCk7DQogICAgfQ0KDQogICAgc3RhdGljIGlubGluZSBf
RWxlbSogbW92ZSggIF9FbGVtKiBjb25zdCBfRmlyc3QxLA0KICAgICAgICAgIGNvbnN0IF9FbGVt
KiBjb25zdCBfRmlyc3QyLCBjb25zdCBzaXplX3QgX0NvdW50KSBub2V4Y2VwdCAgew0KICAgICAg
ICANCg0KDQojbGluZSA4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx4c3RyaW5nIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIDo6IG1lbW1vdmUo
X0ZpcnN0MSwgX0ZpcnN0MiwgX0NvdW50ICogc2l6ZW9mKF9FbGVtKSk7DQojbGluZSAxMjEgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyIN
Cg0KICAgICAgICByZXR1cm4gX0ZpcnN0MTsNCiAgICB9DQoNCiAgICANCiAgICANCg0KICAgIFtb
bm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnQgY29tcGFyZSggIGNvbnN0IF9FbGVtKiBf
Rmlyc3QxLA0KICAgICAgICAgIGNvbnN0IF9FbGVtKiBfRmlyc3QyLCBzaXplX3QgX0NvdW50KSBu
b2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgZm9yICg7IDAgPCBfQ291bnQ7IC0tX0NvdW50
LCArK19GaXJzdDEsICsrX0ZpcnN0Mikgew0KICAgICAgICAgICAgaWYgKCpfRmlyc3QxICE9ICpf
Rmlyc3QyKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICpfRmlyc3QxIDwgKl9GaXJzdDIgPyAt
MSA6ICsxOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIDA7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBsZW5ndGgo
ICBjb25zdCBfRWxlbSogX0ZpcnN0KSBub2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgc2l6
ZV90IF9Db3VudCA9IDA7DQogICAgICAgIHdoaWxlICgqX0ZpcnN0ICE9IF9FbGVtKCkpIHsNCiAg
ICAgICAgICAgICsrX0NvdW50Ow0KICAgICAgICAgICAgKytfRmlyc3Q7DQogICAgICAgIH0NCg0K
ICAgICAgICByZXR1cm4gX0NvdW50Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBfRWxlbSogZmluZCgNCiAgICAgICAgICBjb25zdCBfRWxlbSogX0Zp
cnN0LCBzaXplX3QgX0NvdW50LCBjb25zdCBfRWxlbSYgX0NoKSBub2V4Y2VwdCAgew0KICAgICAg
ICANCiAgICAgICAgZm9yICg7IDAgPCBfQ291bnQ7IC0tX0NvdW50LCArK19GaXJzdCkgew0KICAg
ICAgICAgICAgaWYgKCpfRmlyc3QgPT0gX0NoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIF9G
aXJzdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBudWxscHRy
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBpbmxpbmUgX0VsZW0qIGFzc2lnbigNCiAgICAgICAgICBf
RWxlbSogY29uc3QgX0ZpcnN0LCBzaXplX3QgX0NvdW50LCBjb25zdCBfRWxlbSBfQ2gpIG5vZXhj
ZXB0DQogICAgIHsNCiAgICAgICAgDQogICAgICAgIGZvciAoX0VsZW0qIF9OZXh0ID0gX0ZpcnN0
OyBfQ291bnQgPiAwOyAtLV9Db3VudCwgKytfTmV4dCkgew0KICAgICAgICAgICAgKl9OZXh0ID0g
X0NoOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9GaXJzdDsNCiAgICB9DQoNCiAgICBz
dGF0aWMgY29uc3RleHByIHZvaWQgYXNzaWduKF9FbGVtJiBfTGVmdCwgY29uc3QgX0VsZW0mIF9S
aWdodCkgbm9leGNlcHQgew0KICAgICAgICBfTGVmdCA9IF9SaWdodDsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlcShjb25zdCBfRWxlbSYgX0xlZnQs
IGNvbnN0IF9FbGVtJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0ID09
IF9SaWdodDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBsdChjb25zdCBfRWxlbSYgX0xlZnQsIGNvbnN0IF9FbGVtJiBfUmlnaHQpIG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIF9MZWZ0IDwgX1JpZ2h0Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gc3RhdGljIGNvbnN0ZXhwciBfRWxlbSB0b19jaGFyX3R5cGUoY29uc3QgaW50X3R5cGUmIF9N
ZXRhKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxfRWxlbT4oX01ldGEp
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZSB0
b19pbnRfdHlwZShjb25zdCBfRWxlbSYgX0NoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnRfdHlwZT4oX0NoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgX0xlZnQsIGNv
bnN0IGludF90eXBlJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0ID09
IF9SaWdodDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgaW50
X3R5cGUgbm90X2VvZihjb25zdCBpbnRfdHlwZSYgX01ldGEpIG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIF9NZXRhICE9IGVvZigpID8gX01ldGEgOiAhZW9mKCk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGludF90eXBlIGVvZigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPigoLTEpKTsNCiAgICB9DQp9Ow0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfRWxlbT4NCnN0cnVjdCBfV0NoYXJfdHJhaXRzIDogcHJpdmF0ZSBf
Q2hhcl90cmFpdHM8X0VsZW0sIHVuc2lnbmVkIHNob3J0PiB7DQogICAgDQpwcml2YXRlOg0KICAg
IHVzaW5nIF9QcmltYXJ5X2NoYXJfdHJhaXRzID0gX0NoYXJfdHJhaXRzPF9FbGVtLCB1bnNpZ25l
ZCBzaG9ydD47DQoNCnB1YmxpYzoNCiAgICB1c2luZyBjaGFyX3R5cGUgID0gX0VsZW07DQogICAg
dXNpbmcgaW50X3R5cGUgICA9IHVuc2lnbmVkIHNob3J0Ow0KICAgIHVzaW5nIHBvc190eXBlICAg
PSBzdHJlYW1wb3M7DQogICAgdXNpbmcgb2ZmX3R5cGUgICA9IHN0cmVhbW9mZjsNCiAgICB1c2lu
ZyBzdGF0ZV90eXBlID0gbWJzdGF0ZV90Ow0KDQogICAgdXNpbmcgX1ByaW1hcnlfY2hhcl90cmFp
dHM6Ol9Db3B5X3M7DQogICAgdXNpbmcgX1ByaW1hcnlfY2hhcl90cmFpdHM6OmNvcHk7DQogICAg
dXNpbmcgX1ByaW1hcnlfY2hhcl90cmFpdHM6Om1vdmU7DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0
YXRpYyBjb25zdGV4cHIgaW50IGNvbXBhcmUoICBjb25zdCBfRWxlbSogY29uc3QgX0ZpcnN0MSwN
CiAgICAgICAgICBjb25zdCBfRWxlbSogY29uc3QgX0ZpcnN0MiwgY29uc3Qgc2l6ZV90IF9Db3Vu
dCkgbm9leGNlcHQgIHsNCiAgICAgICAgDQoNCiAgICAgICAgaWYgY29uc3RleHByIChpc19zYW1l
X3Y8X0VsZW0sIHdjaGFyX3Q+KSB7DQogICAgICAgICAgICByZXR1cm4gX19idWlsdGluX3dtZW1j
bXAoX0ZpcnN0MSwgX0ZpcnN0MiwgX0NvdW50KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg
ICAgIHJldHVybiBfUHJpbWFyeV9jaGFyX3RyYWl0czo6Y29tcGFyZShfRmlyc3QxLCBfRmlyc3Qy
LCBfQ291bnQpOw0KICAgICAgICB9DQoNCg0KDQojbGluZSAyMzggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxlbmd0aCggIGNvbnN0IF9FbGVt
KiBfRmlyc3QpIG5vZXhjZXB0ICB7DQogICAgICAgIA0KDQogICAgICAgIGlmIGNvbnN0ZXhwciAo
aXNfc2FtZV92PF9FbGVtLCB3Y2hhcl90Pikgew0KICAgICAgICAgICAgcmV0dXJuIF9fYnVpbHRp
bl93Y3NsZW4oX0ZpcnN0KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJldHVybiBf
UHJpbWFyeV9jaGFyX3RyYWl0czo6bGVuZ3RoKF9GaXJzdCk7DQogICAgICAgIH0NCg0KDQojbGlu
ZSAyNTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eHN0cmluZyINCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgX0VsZW0qIGZpbmQoDQogICAgICAgICAgY29uc3QgX0VsZW0qIF9GaXJzdCwgY29uc3Qgc2l6
ZV90IF9Db3VudCwgY29uc3QgX0VsZW0mIF9DaCkgbm9leGNlcHQgIHsNCiAgICAgICAgDQoNCiAg
ICAgICAgaWYgY29uc3RleHByIChpc19zYW1lX3Y8X0VsZW0sIHdjaGFyX3Q+KSB7DQogICAgICAg
ICAgICByZXR1cm4gX19idWlsdGluX3dtZW1jaHIoX0ZpcnN0LCBfQ2gsIF9Db3VudCk7DQogICAg
ICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gX1ByaW1hcnlfY2hhcl90cmFpdHM6OmZp
bmQoX0ZpcnN0LCBfQ291bnQsIF9DaCk7DQogICAgICAgIH0NCg0KDQojbGluZSAyNjUgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAg
ICB9DQoNCiAgICBzdGF0aWMgaW5saW5lIF9FbGVtKiBhc3NpZ24oDQogICAgICAgICAgX0VsZW0q
IGNvbnN0IF9GaXJzdCwgc2l6ZV90IF9Db3VudCwgY29uc3QgX0VsZW0gX0NoKSBub2V4Y2VwdA0K
ICAgICB7DQogICAgICAgIA0KDQoNCg0KDQoNCg0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxfRWxlbSo+KDo6IHdtZW1zZXQocmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4oX0ZpcnN0
KSwgX0NoLCBfQ291bnQpKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHZvaWQgYXNz
aWduKF9FbGVtJiBfTGVmdCwgY29uc3QgX0VsZW0mIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAg
ICBfTGVmdCA9IF9SaWdodDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBlcShjb25zdCBfRWxlbSYgX0xlZnQsIGNvbnN0IF9FbGVtJiBfUmlnaHQpIG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0ID09IF9SaWdodDsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBsdChjb25zdCBfRWxlbSYgX0xlZnQs
IGNvbnN0IF9FbGVtJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0IDwg
X1JpZ2h0Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBfRWxl
bSB0b19jaGFyX3R5cGUoY29uc3QgaW50X3R5cGUmIF9NZXRhKSBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiBfTWV0YTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4
cHIgaW50X3R5cGUgdG9faW50X3R5cGUoY29uc3QgX0VsZW0mIF9DaCkgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gX0NoOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0
ZXhwciBib29sIGVxX2ludF90eXBlKGNvbnN0IGludF90eXBlJiBfTGVmdCwgY29uc3QgaW50X3R5
cGUmIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX0xlZnQgPT0gX1JpZ2h0Ow0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZSBub3Rf
ZW9mKGNvbnN0IGludF90eXBlJiBfTWV0YSkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX01l
dGEgIT0gZW9mKCkgPyBfTWV0YSA6IHN0YXRpY19jYXN0PGludF90eXBlPighZW9mKCkpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZSBlb2YoKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAoKHdpbnRfdCkoMHhGRkZGKSk7DQogICAgfQ0KfTsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0+DQpzdHJ1Y3QgY2hhcl90cmFpdHMgOiBfQ2hhcl90
cmFpdHM8X0VsZW0sIGxvbmc+IHt9OyANCg0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0IGNoYXJfdHJh
aXRzPGNoYXIxNl90PiA6IF9XQ2hhcl90cmFpdHM8Y2hhcjE2X3Q+IHt9Ow0KDQp1c2luZyB1MTZz
dHJlYW1wb3MgPSBzdHJlYW1wb3M7DQoNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBjaGFyX3RyYWl0
czxjaGFyMzJfdD4gOiBfQ2hhcl90cmFpdHM8Y2hhcjMyX3QsIHVuc2lnbmVkIGludD4ge307DQoN
CnVzaW5nIHUzMnN0cmVhbXBvcyA9IHN0cmVhbXBvczsNCg0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0
IGNoYXJfdHJhaXRzPHdjaGFyX3Q+IDogX1dDaGFyX3RyYWl0czx3Y2hhcl90PiB7fTsNCg0KDQoN
CnRlbXBsYXRlIDw+DQpzdHJ1Y3QgY2hhcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+IDogX1dDaGFy
X3RyYWl0czx1bnNpZ25lZCBzaG9ydD4ge307DQojbGluZSAzMzggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KDQoNCiNsaW5lIDM0
MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3Ry
aW5nIg0KDQojbGluZSAzNDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHN0cmluZyINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9J
bnRfdHlwZT4NCnN0cnVjdCBfTmFycm93X2NoYXJfdHJhaXRzIDogcHJpdmF0ZSBfQ2hhcl90cmFp
dHM8X0VsZW0sIF9JbnRfdHlwZT4gew0KICAgIA0KcHJpdmF0ZToNCiAgICB1c2luZyBfUHJpbWFy
eV9jaGFyX3RyYWl0cyA9IF9DaGFyX3RyYWl0czxfRWxlbSwgX0ludF90eXBlPjsNCg0KcHVibGlj
Og0KICAgIHVzaW5nIGNoYXJfdHlwZSAgPSBfRWxlbTsNCiAgICB1c2luZyBpbnRfdHlwZSAgID0g
X0ludF90eXBlOw0KICAgIHVzaW5nIHBvc190eXBlICAgPSBzdHJlYW1wb3M7DQogICAgdXNpbmcg
b2ZmX3R5cGUgICA9IHN0cmVhbW9mZjsNCiAgICB1c2luZyBzdGF0ZV90eXBlID0gbWJzdGF0ZV90
Ow0KDQogICAgdXNpbmcgX1ByaW1hcnlfY2hhcl90cmFpdHM6Ol9Db3B5X3M7DQogICAgdXNpbmcg
X1ByaW1hcnlfY2hhcl90cmFpdHM6OmNvcHk7DQogICAgdXNpbmcgX1ByaW1hcnlfY2hhcl90cmFp
dHM6Om1vdmU7DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgaW50IGNvbXBh
cmUoICBjb25zdCBfRWxlbSogY29uc3QgX0ZpcnN0MSwNCiAgICAgICAgICBjb25zdCBfRWxlbSog
Y29uc3QgX0ZpcnN0MiwgY29uc3Qgc2l6ZV90IF9Db3VudCkgbm9leGNlcHQgIHsNCiAgICAgICAg
DQoNCiAgICAgICAgcmV0dXJuIF9fYnVpbHRpbl9tZW1jbXAoX0ZpcnN0MSwgX0ZpcnN0MiwgX0Nv
dW50KTsNCg0KDQojbGluZSAzNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGxlbmd0aCggIGNvbnN0IF9FbGVtKiBjb25zdCBfRmlyc3QpIG5v
ZXhjZXB0ICB7DQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgIHsNCiAgICAg
ICAgICAgIHJldHVybiBfX2J1aWx0aW5fc3RybGVuKF9GaXJzdCk7DQogICAgICAgIH0NCg0KDQoj
bGluZSAzOTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceHN0cmluZyINCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgX0VsZW0qIGZpbmQoICBjb25zdCBfRWxlbSogY29uc3QgX0ZpcnN0LCBjb25zdCBzaXpl
X3QgX0NvdW50LA0KICAgICAgICBjb25zdCBfRWxlbSYgX0NoKSBub2V4Y2VwdCAgew0KICAgICAg
ICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX19i
dWlsdGluX2NoYXJfbWVtY2hyKF9GaXJzdCwgX0NoLCBfQ291bnQpOw0KICAgICAgICB9DQoNCg0K
I2xpbmUgNDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhzdHJpbmciDQogICAgfQ0KDQogICAgc3RhdGljIGlubGluZSBfRWxlbSogYXNzaWduKA0K
ICAgICAgICAgIF9FbGVtKiBjb25zdCBfRmlyc3QsIHNpemVfdCBfQ291bnQsIGNvbnN0IF9FbGVt
IF9DaCkgbm9leGNlcHQNCiAgICAgew0KICAgICAgICANCg0KDQoNCg0KDQoNCiAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PF9FbGVtKj4oOjogbWVtc2V0KF9GaXJzdCwgX0NoLCBfQ291bnQpKTsN
CiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHZvaWQgYXNzaWduKF9FbGVtJiBfTGVmdCwg
Y29uc3QgX0VsZW0mIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICBfTGVmdCA9IF9SaWdodDsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlcShjb25z
dCBfRWxlbSYgX0xlZnQsIGNvbnN0IF9FbGVtJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIF9MZWZ0ID09IF9SaWdodDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBsdChjb25zdCBfRWxlbSYgX0xlZnQsIGNvbnN0IF9FbGVtJiBfUmln
aHQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KF9MZWZ0KSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9SaWdodCk7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIF9FbGVtIHRvX2NoYXJfdHlwZShjb25z
dCBpbnRfdHlwZSYgX01ldGEpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PF9FbGVtPihfTWV0YSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3Rl
eHByIGludF90eXBlIHRvX2ludF90eXBlKGNvbnN0IF9FbGVtJiBfQ2gpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9DaCk7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBzdGF0aWMgY29uc3RleHByIGJvb2wgZXFfaW50X3R5cGUoY29uc3Qg
aW50X3R5cGUmIF9MZWZ0LCBjb25zdCBpbnRfdHlwZSYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBfTGVmdCA9PSBfUmlnaHQ7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBz
dGF0aWMgY29uc3RleHByIGludF90eXBlIG5vdF9lb2YoY29uc3QgaW50X3R5cGUmIF9NZXRhKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTWV0YSAhPSBlb2YoKSA/IF9NZXRhIDogIWVvZigp
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBpbnRfdHlwZSBl
b2YoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oKC0x
KSk7DQogICAgfQ0KfTsNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0IGNoYXJfdHJhaXRz
PGNoYXI+IDogX05hcnJvd19jaGFyX3RyYWl0czxjaGFyLCBpbnQ+IHt9OyANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9T
aXplVD4NCmJhc2ljX29zdHJlYW08X0VsZW0sIF9UcmFpdHM+JiBfSW5zZXJ0X3N0cmluZygNCiAg
ICBiYXNpY19vc3RyZWFtPF9FbGVtLCBfVHJhaXRzPiYgX09zdHIsIGNvbnN0IF9FbGVtKiBjb25z
dCBfRGF0YSwgY29uc3QgX1NpemVUIF9TaXplKSB7DQogICAgDQogICAgdXNpbmcgX09zdHJfdCAg
ICAgICAgICAgICAgICAgICAgPSBiYXNpY19vc3RyZWFtPF9FbGVtLCBfVHJhaXRzPjsNCiAgICB0
eXBlbmFtZSBfT3N0cl90Ojppb3N0YXRlIF9TdGF0ZSA9IF9Pc3RyX3Q6Omdvb2RiaXQ7DQoNCiAg
ICBfU2l6ZVQgX1BhZDsNCiAgICBpZiAoX09zdHIud2lkdGgoKSA8PSAwIHx8IHN0YXRpY19jYXN0
PF9TaXplVD4oX09zdHIud2lkdGgoKSkgPD0gX1NpemUpIHsNCiAgICAgICAgX1BhZCA9IDA7DQog
ICAgfSBlbHNlIHsNCiAgICAgICAgX1BhZCA9IHN0YXRpY19jYXN0PF9TaXplVD4oX09zdHIud2lk
dGgoKSkgLSBfU2l6ZTsNCiAgICB9DQoNCiAgICBjb25zdCB0eXBlbmFtZSBfT3N0cl90OjpzZW50
cnkgX09rKF9Pc3RyKTsNCg0KICAgIGlmICghX09rKSB7DQogICAgICAgIF9TdGF0ZSB8PSBfT3N0
cl90OjpiYWRiaXQ7DQogICAgfSBlbHNlIHsgDQogICAgICAgIHsNCiAgICAgICAgaWYgKChfT3N0
ci5mbGFncygpICYgX09zdHJfdDo6YWRqdXN0ZmllbGQpICE9IF9Pc3RyX3Q6OmxlZnQpIHsNCiAg
ICAgICAgICAgIGZvciAoOyAwIDwgX1BhZDsgLS1fUGFkKSB7IA0KICAgICAgICAgICAgICAgIGlm
IChfVHJhaXRzOjplcV9pbnRfdHlwZShfVHJhaXRzOjplb2YoKSwgX09zdHIucmRidWYoKS0+c3B1
dGMoX09zdHIuZmlsbCgpKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgX1N0YXRlIHw9IF9Pc3Ry
X3Q6OmJhZGJpdDsgDQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChfU3RhdGUgPT0gX09z
dHJfdDo6Z29vZGJpdA0KICAgICAgICAgICAgJiYgX09zdHIucmRidWYoKS0+c3B1dG4oX0RhdGEs
IHN0YXRpY19jYXN0PHN0cmVhbXNpemU+KF9TaXplKSkgIT0gc3RhdGljX2Nhc3Q8c3RyZWFtc2l6
ZT4oX1NpemUpKSB7DQogICAgICAgICAgICBfU3RhdGUgfD0gX09zdHJfdDo6YmFkYml0Ow0KICAg
ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZm9yICg7IDAgPCBfUGFkOyAtLV9QYWQpIHsgDQog
ICAgICAgICAgICAgICAgaWYgKF9UcmFpdHM6OmVxX2ludF90eXBlKF9UcmFpdHM6OmVvZigpLCBf
T3N0ci5yZGJ1ZigpLT5zcHV0YyhfT3N0ci5maWxsKCkpKSkgew0KICAgICAgICAgICAgICAgICAg
ICBfU3RhdGUgfD0gX09zdHJfdDo6YmFkYml0OyANCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAg
X09zdHIud2lkdGgoMCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfT3N0ci5zZXRzdGF0ZShf
U3RhdGUpOw0KICAgIHJldHVybiBfT3N0cjsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RyYWl0
cz4NCnN0cnVjdCBfQ2hhcl90cmFpdHNfZXEgew0KICAgIHVzaW5nIF9FbGVtID0gdHlwZW5hbWUg
X1RyYWl0czo6Y2hhcl90eXBlOw0KDQogICAgYm9vbCBvcGVyYXRvcigpKF9FbGVtIF9MZWZ0LCBf
RWxlbSBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIF9UcmFpdHM6OmVxKF9MZWZ0LCBf
UmlnaHQpOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpzdHJ1Y3Qg
X0NoYXJfdHJhaXRzX2x0IHsNCiAgICB1c2luZyBfRWxlbSA9IHR5cGVuYW1lIF9UcmFpdHM6OmNo
YXJfdHlwZTsNCg0KICAgIGJvb2wgb3BlcmF0b3IoKShfRWxlbSBfTGVmdCwgX0VsZW0gX1JpZ2h0
KSBjb25zdCB7DQogICAgICAgIHJldHVybiBfVHJhaXRzOjpsdChfTGVmdCwgX1JpZ2h0KTsNCiAg
ICB9DQp9Ow0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtPg0KaW5saW5lIGNvbnN0ZXhwciBi
b29sIF9QcmVkX2lzX2NvbnNpc3RlbnRfd2l0aF9tZW1jbXA8X0VsZW0sIF9FbGVtLCBfQ2hhcl90
cmFpdHNfZXE8Y2hhcl90cmFpdHM8X0VsZW0+Pj4gPSB0cnVlOw0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RyYWl0cz4NCnVzaW5nIF9UcmFpdHNfY2hfdCA9IHR5cGVuYW1lIF9UcmFpdHM6OmNoYXJfdHlw
ZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQp1c2luZyBfVHJhaXRzX3B0cl90ID0gY29u
c3QgdHlwZW5hbWUgX1RyYWl0czo6Y2hhcl90eXBlKjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFp
dHM+DQpjb25zdGV4cHIgYm9vbCBfVHJhaXRzX2VxdWFsKCAgY29uc3QgX1RyYWl0c19wdHJfdDxf
VHJhaXRzPiBfTGVmdCwgY29uc3Qgc2l6ZV90IF9MZWZ0X3NpemUsDQogICAgICBjb25zdCBfVHJh
aXRzX3B0cl90PF9UcmFpdHM+IF9SaWdodCwgY29uc3Qgc2l6ZV90IF9SaWdodF9zaXplKSBub2V4
Y2VwdCB7DQogICAgDQogICAgcmV0dXJuIF9MZWZ0X3NpemUgPT0gX1JpZ2h0X3NpemUgJiYgX1Ry
YWl0czo6Y29tcGFyZShfTGVmdCwgX1JpZ2h0LCBfTGVmdF9zaXplKSA9PSAwOw0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1RyYWl0cz4NCmNvbnN0ZXhwciBpbnQgX1RyYWl0c19jb21wYXJlKCAgY29u
c3QgX1RyYWl0c19wdHJfdDxfVHJhaXRzPiBfTGVmdCwgY29uc3Qgc2l6ZV90IF9MZWZ0X3NpemUs
DQogICAgICBjb25zdCBfVHJhaXRzX3B0cl90PF9UcmFpdHM+IF9SaWdodCwgY29uc3Qgc2l6ZV90
IF9SaWdodF9zaXplKSBub2V4Y2VwdCB7DQogICAgDQogICAgY29uc3QgaW50IF9BbnMgPSBfVHJh
aXRzOjpjb21wYXJlKF9MZWZ0LCBfUmlnaHQsICg6OnN0ZDo6IG1pbikoX0xlZnRfc2l6ZSwgX1Jp
Z2h0X3NpemUpKTsNCg0KICAgIGlmIChfQW5zICE9IDApIHsNCiAgICAgICAgcmV0dXJuIF9BbnM7
DQogICAgfQ0KDQogICAgaWYgKF9MZWZ0X3NpemUgPCBfUmlnaHRfc2l6ZSkgew0KICAgICAgICBy
ZXR1cm4gLTE7DQogICAgfQ0KDQogICAgaWYgKF9MZWZ0X3NpemUgPiBfUmlnaHRfc2l6ZSkgew0K
ICAgICAgICByZXR1cm4gMTsNCiAgICB9DQoNCiAgICByZXR1cm4gMDsNCn0NCg0KdGVtcGxhdGUg
PGNsYXNzIF9UcmFpdHM+DQpjb25zdGV4cHIgc2l6ZV90IF9UcmFpdHNfZmluZCggIGNvbnN0IF9U
cmFpdHNfcHRyX3Q8X1RyYWl0cz4gX0hheXN0YWNrLCBjb25zdCBzaXplX3QgX0hheV9zaXplLA0K
ICAgIGNvbnN0IHNpemVfdCBfU3RhcnRfYXQsICAgY29uc3QgX1RyYWl0c19wdHJfdDxfVHJhaXRz
PiBfTmVlZGxlLA0KICAgIGNvbnN0IHNpemVfdCBfTmVlZGxlX3NpemUpIG5vZXhjZXB0IHsNCiAg
ICANCiAgICBpZiAoX05lZWRsZV9zaXplID4gX0hheV9zaXplIHx8IF9TdGFydF9hdCA+IF9IYXlf
c2l6ZSAtIF9OZWVkbGVfc2l6ZSkgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsNCiAgICB9DQoNCiAgICBpZiAoX05lZWRsZV9z
aXplID09IDApIHsgDQogICAgICAgIHJldHVybiBfU3RhcnRfYXQ7DQogICAgfQ0KDQogICAgY29u
c3QgYXV0byBfUG9zc2libGVfbWF0Y2hlc19lbmQgPSBfSGF5c3RhY2sgKyAoX0hheV9zaXplIC0g
X05lZWRsZV9zaXplKSArIDE7DQogICAgZm9yIChhdXRvIF9NYXRjaF90cnkgPSBfSGF5c3RhY2sg
KyBfU3RhcnRfYXQ7OyArK19NYXRjaF90cnkpIHsNCiAgICAgICAgX01hdGNoX3RyeSA9IF9UcmFp
dHM6OmZpbmQoX01hdGNoX3RyeSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihfUG9zc2libGVfbWF0Y2hl
c19lbmQgLSBfTWF0Y2hfdHJ5KSwgKl9OZWVkbGUpOw0KICAgICAgICBpZiAoIV9NYXRjaF90cnkp
IHsgDQogICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7DQogICAgICAg
IH0NCg0KICAgICAgICBpZiAoX1RyYWl0czo6Y29tcGFyZShfTWF0Y2hfdHJ5LCBfTmVlZGxlLCBf
TmVlZGxlX3NpemUpID09IDApIHsgDQogICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6
ZV90PihfTWF0Y2hfdHJ5IC0gX0hheXN0YWNrKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpjb25zdGV4cHIgc2l6ZV90IF9UcmFpdHNfZmluZF9jaCgg
IGNvbnN0IF9UcmFpdHNfcHRyX3Q8X1RyYWl0cz4gX0hheXN0YWNrLCBjb25zdCBzaXplX3QgX0hh
eV9zaXplLA0KICAgIGNvbnN0IHNpemVfdCBfU3RhcnRfYXQsIGNvbnN0IF9UcmFpdHNfY2hfdDxf
VHJhaXRzPiBfQ2gpIG5vZXhjZXB0IHsNCiAgICANCiAgICBpZiAoX1N0YXJ0X2F0IDwgX0hheV9z
aXplKSB7DQogICAgICAgIGNvbnN0IGF1dG8gX0ZvdW5kX2F0ID0gX1RyYWl0czo6ZmluZChfSGF5
c3RhY2sgKyBfU3RhcnRfYXQsIF9IYXlfc2l6ZSAtIF9TdGFydF9hdCwgX0NoKTsNCiAgICAgICAg
aWYgKF9Gb3VuZF9hdCkgew0KICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4o
X0ZvdW5kX2F0IC0gX0hheXN0YWNrKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsgDQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHJhaXRzPg0K
Y29uc3RleHByIHNpemVfdCBfVHJhaXRzX3JmaW5kKCAgY29uc3QgX1RyYWl0c19wdHJfdDxfVHJh
aXRzPiBfSGF5c3RhY2ssIGNvbnN0IHNpemVfdCBfSGF5X3NpemUsDQogICAgY29uc3Qgc2l6ZV90
IF9TdGFydF9hdCwgICBjb25zdCBfVHJhaXRzX3B0cl90PF9UcmFpdHM+IF9OZWVkbGUsDQogICAg
Y29uc3Qgc2l6ZV90IF9OZWVkbGVfc2l6ZSkgbm9leGNlcHQgew0KICAgIA0KICAgIGlmIChfTmVl
ZGxlX3NpemUgPT0gMCkgew0KICAgICAgICByZXR1cm4gKDo6c3RkOjogbWluKShfU3RhcnRfYXQs
IF9IYXlfc2l6ZSk7IA0KICAgIH0NCg0KICAgIGlmIChfTmVlZGxlX3NpemUgPD0gX0hheV9zaXpl
KSB7IA0KICAgICAgICBmb3IgKGF1dG8gX01hdGNoX3RyeSA9IF9IYXlzdGFjayArICg6OnN0ZDo6
IG1pbikoX1N0YXJ0X2F0LCBfSGF5X3NpemUgLSBfTmVlZGxlX3NpemUpOzsgLS1fTWF0Y2hfdHJ5
KSB7DQogICAgICAgICAgICBpZiAoX1RyYWl0czo6ZXEoKl9NYXRjaF90cnksICpfTmVlZGxlKSAm
JiBfVHJhaXRzOjpjb21wYXJlKF9NYXRjaF90cnksIF9OZWVkbGUsIF9OZWVkbGVfc2l6ZSkgPT0g
MCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9NYXRjaF90
cnkgLSBfSGF5c3RhY2spOyANCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKF9NYXRj
aF90cnkgPT0gX0hheXN0YWNrKSB7DQogICAgICAgICAgICAgICAgYnJlYWs7IA0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4o
LTEpOyANCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpjb25zdGV4cHIgc2l6ZV90IF9U
cmFpdHNfcmZpbmRfY2goICBjb25zdCBfVHJhaXRzX3B0cl90PF9UcmFpdHM+IF9IYXlzdGFjaywg
Y29uc3Qgc2l6ZV90IF9IYXlfc2l6ZSwNCiAgICBjb25zdCBzaXplX3QgX1N0YXJ0X2F0LCBjb25z
dCBfVHJhaXRzX2NoX3Q8X1RyYWl0cz4gX0NoKSBub2V4Y2VwdCB7DQogICAgDQogICAgaWYgKF9I
YXlfc2l6ZSAhPSAwKSB7IA0KICAgICAgICBmb3IgKGF1dG8gX01hdGNoX3RyeSA9IF9IYXlzdGFj
ayArICg6OnN0ZDo6IG1pbikoX1N0YXJ0X2F0LCBfSGF5X3NpemUgLSAxKTs7IC0tX01hdGNoX3Ry
eSkgew0KICAgICAgICAgICAgaWYgKF9UcmFpdHM6OmVxKCpfTWF0Y2hfdHJ5LCBfQ2gpKSB7DQog
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX01hdGNoX3RyeSAtIF9I
YXlzdGFjayk7IA0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoX01hdGNoX3RyeSA9
PSBfSGF5c3RhY2spIHsNCiAgICAgICAgICAgICAgICBicmVhazsgDQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7IA0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGJvb2wgPSBfSXNfY2hhcmFjdGVyPF9FbGVtPjo6
dmFsdWU+DQpjbGFzcyBfU3RyaW5nX2JpdG1hcCB7IA0KcHVibGljOg0KICAgIGNvbnN0ZXhwciBi
b29sIF9NYXJrKGNvbnN0IF9FbGVtKiBfRmlyc3QsIGNvbnN0IF9FbGVtKiBjb25zdCBfTGFzdCkg
ew0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIGZvciAoOyBfRmlyc3QgIT0gX0xhc3Q7ICsr
X0ZpcnN0KSB7DQogICAgICAgICAgICBfTWF0Y2hlc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PigqX0ZpcnN0KV0gPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQog
ICAgfQ0KDQogICAgY29uc3RleHByIGJvb2wgX01hdGNoKGNvbnN0IF9FbGVtIF9DaCkgY29uc3Qg
eyANCiAgICAgICAgcmV0dXJuIF9NYXRjaGVzW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9D
aCldOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBib29sIF9NYXRjaGVzWzI1Nl0gPSB7fTsNCn07
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbT4NCmNsYXNzIF9TdHJpbmdfYml0bWFwPF9FbGVtLCBm
YWxzZT4geyANCnB1YmxpYzoNCiAgICBzdGF0aWNfYXNzZXJ0KGlzX3Vuc2lnbmVkX3Y8X0VsZW0+
LA0KICAgICAgICAiU3RhbmRhcmQgY2hhcl90cmFpdHMgaXMgb25seSBwcm92aWRlZCBmb3IgY2hh
ciwgd2NoYXJfdCwgY2hhcjE2X3QsIGFuZCBjaGFyMzJfdC4gU2VlIE41Njg3IFtjaGFyLnRyYWl0
c10uICINCiAgICAgICAgIlZpc3VhbCBDKysgYWNjZXB0cyBvdGhlciB1bnNpZ25lZCBpbnRlZ3Jh
bCB0eXBlcyBhcyBhbiBleHRlbnNpb24uIik7DQoNCiAgICBjb25zdGV4cHIgYm9vbCBfTWFyayhj
b25zdCBfRWxlbSogX0ZpcnN0LCBjb25zdCBfRWxlbSogY29uc3QgX0xhc3QpIHsNCiAgICAgICAg
DQogICAgICAgIA0KICAgICAgICBmb3IgKDsgX0ZpcnN0ICE9IF9MYXN0OyArK19GaXJzdCkgew0K
ICAgICAgICAgICAgY29uc3QgYXV0byBfQ2ggPSAqX0ZpcnN0Ow0KICAgICAgICAgICAgaWYgKF9D
aCA+PSAyNTZVKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAg
fQ0KDQogICAgICAgICAgICBfTWF0Y2hlc1tzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfQ2gp
XSA9IHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAg
ICBjb25zdGV4cHIgYm9vbCBfTWF0Y2goY29uc3QgX0VsZW0gX0NoKSBjb25zdCB7IA0KICAgICAg
ICByZXR1cm4gX0NoIDwgMjU2VSAmJiBfTWF0Y2hlc1tfQ2hdOw0KICAgIH0NCg0KcHJpdmF0ZToN
CiAgICBib29sIF9NYXRjaGVzWzI1Nl0gPSB7fTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHJh
aXRzPg0KY29uc3RleHByIHNpemVfdCBfVHJhaXRzX2ZpbmRfZmlyc3Rfb2YoICBjb25zdCBfVHJh
aXRzX3B0cl90PF9UcmFpdHM+IF9IYXlzdGFjaywNCiAgICBjb25zdCBzaXplX3QgX0hheV9zaXpl
LCBjb25zdCBzaXplX3QgX1N0YXJ0X2F0LCAgIGNvbnN0IF9UcmFpdHNfcHRyX3Q8X1RyYWl0cz4g
X05lZWRsZSwNCiAgICBjb25zdCBzaXplX3QgX05lZWRsZV9zaXplLCBmYWxzZV90eXBlKSBub2V4
Y2VwdCB7DQogICAgDQogICAgDQogICAgaWYgKF9OZWVkbGVfc2l6ZSAhPSAwICYmIF9TdGFydF9h
dCA8IF9IYXlfc2l6ZSkgeyANCiAgICAgICAgY29uc3QgYXV0byBfRW5kID0gX0hheXN0YWNrICsg
X0hheV9zaXplOw0KICAgICAgICBmb3IgKGF1dG8gX01hdGNoX3RyeSA9IF9IYXlzdGFjayArIF9T
dGFydF9hdDsgX01hdGNoX3RyeSA8IF9FbmQ7ICsrX01hdGNoX3RyeSkgew0KICAgICAgICAgICAg
aWYgKF9UcmFpdHM6OmZpbmQoX05lZWRsZSwgX05lZWRsZV9zaXplLCAqX01hdGNoX3RyeSkpIHsN
CiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihfTWF0Y2hfdHJ5IC0g
X0hheXN0YWNrKTsgDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7IA0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RyYWl0
cz4NCmNvbnN0ZXhwciBzaXplX3QgX1RyYWl0c19maW5kX2ZpcnN0X29mKCAgY29uc3QgX1RyYWl0
c19wdHJfdDxfVHJhaXRzPiBfSGF5c3RhY2ssDQogICAgY29uc3Qgc2l6ZV90IF9IYXlfc2l6ZSwg
Y29uc3Qgc2l6ZV90IF9TdGFydF9hdCwgICBjb25zdCBfVHJhaXRzX3B0cl90PF9UcmFpdHM+IF9O
ZWVkbGUsDQogICAgY29uc3Qgc2l6ZV90IF9OZWVkbGVfc2l6ZSwgdHJ1ZV90eXBlKSBub2V4Y2Vw
dCB7DQogICAgDQogICAgDQogICAgaWYgKF9OZWVkbGVfc2l6ZSAhPSAwICYmIF9TdGFydF9hdCA8
IF9IYXlfc2l6ZSkgeyANCiAgICAgICAgX1N0cmluZ19iaXRtYXA8dHlwZW5hbWUgX1RyYWl0czo6
Y2hhcl90eXBlPiBfTWF0Y2hlczsNCiAgICAgICAgaWYgKCFfTWF0Y2hlcy5fTWFyayhfTmVlZGxl
LCBfTmVlZGxlICsgX05lZWRsZV9zaXplKSkgeyANCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVy
biBfVHJhaXRzX2ZpbmRfZmlyc3Rfb2Y8X1RyYWl0cz4oX0hheXN0YWNrLCBfSGF5X3NpemUsIF9T
dGFydF9hdCwgX05lZWRsZSwgX05lZWRsZV9zaXplLCBmYWxzZV90eXBle30pOw0KICAgICAgICB9
DQoNCiAgICAgICAgY29uc3QgYXV0byBfRW5kID0gX0hheXN0YWNrICsgX0hheV9zaXplOw0KICAg
ICAgICBmb3IgKGF1dG8gX01hdGNoX3RyeSA9IF9IYXlzdGFjayArIF9TdGFydF9hdDsgX01hdGNo
X3RyeSA8IF9FbmQ7ICsrX01hdGNoX3RyeSkgew0KICAgICAgICAgICAgaWYgKF9NYXRjaGVzLl9N
YXRjaCgqX01hdGNoX3RyeSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
c2l6ZV90PihfTWF0Y2hfdHJ5IC0gX0hheXN0YWNrKTsgDQogICAgICAgICAgICB9DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7IA0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1RyYWl0cz4NCmNvbnN0ZXhwciBzaXplX3QgX1RyYWl0c19maW5kX2xh
c3Rfb2YoICBjb25zdCBfVHJhaXRzX3B0cl90PF9UcmFpdHM+IF9IYXlzdGFjaywNCiAgICBjb25z
dCBzaXplX3QgX0hheV9zaXplLCBjb25zdCBzaXplX3QgX1N0YXJ0X2F0LCAgIGNvbnN0IF9UcmFp
dHNfcHRyX3Q8X1RyYWl0cz4gX05lZWRsZSwNCiAgICBjb25zdCBzaXplX3QgX05lZWRsZV9zaXpl
LCBmYWxzZV90eXBlKSBub2V4Y2VwdCB7DQogICAgDQogICAgDQogICAgaWYgKF9OZWVkbGVfc2l6
ZSAhPSAwICYmIF9IYXlfc2l6ZSAhPSAwKSB7IA0KICAgICAgICBmb3IgKGF1dG8gX01hdGNoX3Ry
eSA9IF9IYXlzdGFjayArICg6OnN0ZDo6IG1pbikoX1N0YXJ0X2F0LCBfSGF5X3NpemUgLSAxKTs7
IC0tX01hdGNoX3RyeSkgew0KICAgICAgICAgICAgaWYgKF9UcmFpdHM6OmZpbmQoX05lZWRsZSwg
X05lZWRsZV9zaXplLCAqX01hdGNoX3RyeSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihfTWF0Y2hfdHJ5IC0gX0hheXN0YWNrKTsgDQogICAgICAgICAgICB9
DQoNCiAgICAgICAgICAgIGlmIChfTWF0Y2hfdHJ5ID09IF9IYXlzdGFjaykgew0KICAgICAgICAg
ICAgICAgIGJyZWFrOyANCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsgDQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHJh
aXRzPg0KY29uc3RleHByIHNpemVfdCBfVHJhaXRzX2ZpbmRfbGFzdF9vZiggIGNvbnN0IF9UcmFp
dHNfcHRyX3Q8X1RyYWl0cz4gX0hheXN0YWNrLA0KICAgIGNvbnN0IHNpemVfdCBfSGF5X3NpemUs
IGNvbnN0IHNpemVfdCBfU3RhcnRfYXQsICAgY29uc3QgX1RyYWl0c19wdHJfdDxfVHJhaXRzPiBf
TmVlZGxlLA0KICAgIGNvbnN0IHNpemVfdCBfTmVlZGxlX3NpemUsIHRydWVfdHlwZSkgbm9leGNl
cHQgew0KICAgIA0KICAgIA0KICAgIGlmIChfTmVlZGxlX3NpemUgIT0gMCAmJiBfSGF5X3NpemUg
IT0gMCkgeyANCiAgICAgICAgX1N0cmluZ19iaXRtYXA8dHlwZW5hbWUgX1RyYWl0czo6Y2hhcl90
eXBlPiBfTWF0Y2hlczsNCiAgICAgICAgaWYgKCFfTWF0Y2hlcy5fTWFyayhfTmVlZGxlLCBfTmVl
ZGxlICsgX05lZWRsZV9zaXplKSkgeyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiBfVHJh
aXRzX2ZpbmRfbGFzdF9vZjxfVHJhaXRzPihfSGF5c3RhY2ssIF9IYXlfc2l6ZSwgX1N0YXJ0X2F0
LCBfTmVlZGxlLCBfTmVlZGxlX3NpemUsIGZhbHNlX3R5cGV7fSk7DQogICAgICAgIH0NCg0KICAg
ICAgICBmb3IgKGF1dG8gX01hdGNoX3RyeSA9IF9IYXlzdGFjayArICg6OnN0ZDo6IG1pbikoX1N0
YXJ0X2F0LCBfSGF5X3NpemUgLSAxKTs7IC0tX01hdGNoX3RyeSkgew0KICAgICAgICAgICAgaWYg
KF9NYXRjaGVzLl9NYXRjaCgqX01hdGNoX3RyeSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8c2l6ZV90PihfTWF0Y2hfdHJ5IC0gX0hheXN0YWNrKTsgDQogICAgICAgICAg
ICB9DQoNCiAgICAgICAgICAgIGlmIChfTWF0Y2hfdHJ5ID09IF9IYXlzdGFjaykgew0KICAgICAg
ICAgICAgICAgIGJyZWFrOyANCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsgDQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBf
VHJhaXRzPg0KY29uc3RleHByIHNpemVfdCBfVHJhaXRzX2ZpbmRfZmlyc3Rfbm90X29mKCAgY29u
c3QgX1RyYWl0c19wdHJfdDxfVHJhaXRzPiBfSGF5c3RhY2ssDQogICAgY29uc3Qgc2l6ZV90IF9I
YXlfc2l6ZSwgY29uc3Qgc2l6ZV90IF9TdGFydF9hdCwgICBjb25zdCBfVHJhaXRzX3B0cl90PF9U
cmFpdHM+IF9OZWVkbGUsDQogICAgY29uc3Qgc2l6ZV90IF9OZWVkbGVfc2l6ZSwgZmFsc2VfdHlw
ZSkgbm9leGNlcHQgew0KICAgIA0KICAgIA0KICAgIGlmIChfU3RhcnRfYXQgPCBfSGF5X3NpemUp
IHsgDQogICAgICAgIGNvbnN0IGF1dG8gX0VuZCA9IF9IYXlzdGFjayArIF9IYXlfc2l6ZTsNCiAg
ICAgICAgZm9yIChhdXRvIF9NYXRjaF90cnkgPSBfSGF5c3RhY2sgKyBfU3RhcnRfYXQ7IF9NYXRj
aF90cnkgPCBfRW5kOyArK19NYXRjaF90cnkpIHsNCiAgICAgICAgICAgIGlmICghX1RyYWl0czo6
ZmluZChfTmVlZGxlLCBfTmVlZGxlX3NpemUsICpfTWF0Y2hfdHJ5KSkgew0KICAgICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9NYXRjaF90cnkgLSBfSGF5c3RhY2spOyAN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KC0xKTsgDQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHJhaXRzPg0KY29uc3RleHBy
IHNpemVfdCBfVHJhaXRzX2ZpbmRfZmlyc3Rfbm90X29mKCAgY29uc3QgX1RyYWl0c19wdHJfdDxf
VHJhaXRzPiBfSGF5c3RhY2ssDQogICAgY29uc3Qgc2l6ZV90IF9IYXlfc2l6ZSwgY29uc3Qgc2l6
ZV90IF9TdGFydF9hdCwgICBjb25zdCBfVHJhaXRzX3B0cl90PF9UcmFpdHM+IF9OZWVkbGUsDQog
ICAgY29uc3Qgc2l6ZV90IF9OZWVkbGVfc2l6ZSwgdHJ1ZV90eXBlKSBub2V4Y2VwdCB7DQogICAg
DQogICAgDQogICAgaWYgKF9TdGFydF9hdCA8IF9IYXlfc2l6ZSkgeyANCiAgICAgICAgX1N0cmlu
Z19iaXRtYXA8dHlwZW5hbWUgX1RyYWl0czo6Y2hhcl90eXBlPiBfTWF0Y2hlczsNCiAgICAgICAg
aWYgKCFfTWF0Y2hlcy5fTWFyayhfTmVlZGxlLCBfTmVlZGxlICsgX05lZWRsZV9zaXplKSkgeyAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgIHJldHVybiBfVHJhaXRzX2ZpbmRfZmlyc3Rfbm90X29mPF9U
cmFpdHM+KA0KICAgICAgICAgICAgICAgIF9IYXlzdGFjaywgX0hheV9zaXplLCBfU3RhcnRfYXQs
IF9OZWVkbGUsIF9OZWVkbGVfc2l6ZSwgZmFsc2VfdHlwZXt9KTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGNvbnN0IGF1dG8gX0VuZCA9IF9IYXlzdGFjayArIF9IYXlfc2l6ZTsNCiAgICAgICAgZm9y
IChhdXRvIF9NYXRjaF90cnkgPSBfSGF5c3RhY2sgKyBfU3RhcnRfYXQ7IF9NYXRjaF90cnkgPCBf
RW5kOyArK19NYXRjaF90cnkpIHsNCiAgICAgICAgICAgIGlmICghX01hdGNoZXMuX01hdGNoKCpf
TWF0Y2hfdHJ5KSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+
KF9NYXRjaF90cnkgLSBfSGF5c3RhY2spOyANCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg
IH0NCg0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsgDQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHJhaXRzPg0KY29uc3RleHByIHNpemVfdCBfVHJhaXRzX2ZpbmRfbm90X2NoKCAg
Y29uc3QgX1RyYWl0c19wdHJfdDxfVHJhaXRzPiBfSGF5c3RhY2ssDQogICAgY29uc3Qgc2l6ZV90
IF9IYXlfc2l6ZSwgY29uc3Qgc2l6ZV90IF9TdGFydF9hdCwgY29uc3QgX1RyYWl0c19jaF90PF9U
cmFpdHM+IF9DaCkgbm9leGNlcHQgew0KICAgIA0KICAgIGlmIChfU3RhcnRfYXQgPCBfSGF5X3Np
emUpIHsgDQogICAgICAgIGNvbnN0IGF1dG8gX0VuZCA9IF9IYXlzdGFjayArIF9IYXlfc2l6ZTsN
CiAgICAgICAgZm9yIChhdXRvIF9NYXRjaF90cnkgPSBfSGF5c3RhY2sgKyBfU3RhcnRfYXQ7IF9N
YXRjaF90cnkgPCBfRW5kOyArK19NYXRjaF90cnkpIHsNCiAgICAgICAgICAgIGlmICghX1RyYWl0
czo6ZXEoKl9NYXRjaF90cnksIF9DaCkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihfTWF0Y2hfdHJ5IC0gX0hheXN0YWNrKTsgDQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7IA0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RyYWl0cz4NCmNvbnN0ZXhwciBzaXplX3QgX1RyYWl0c19m
aW5kX2xhc3Rfbm90X29mKCAgY29uc3QgX1RyYWl0c19wdHJfdDxfVHJhaXRzPiBfSGF5c3RhY2ss
DQogICAgY29uc3Qgc2l6ZV90IF9IYXlfc2l6ZSwgY29uc3Qgc2l6ZV90IF9TdGFydF9hdCwgICBj
b25zdCBfVHJhaXRzX3B0cl90PF9UcmFpdHM+IF9OZWVkbGUsDQogICAgY29uc3Qgc2l6ZV90IF9O
ZWVkbGVfc2l6ZSwgZmFsc2VfdHlwZSkgbm9leGNlcHQgew0KICAgIA0KICAgIA0KICAgIGlmIChf
SGF5X3NpemUgIT0gMCkgeyANCiAgICAgICAgZm9yIChhdXRvIF9NYXRjaF90cnkgPSBfSGF5c3Rh
Y2sgKyAoOjpzdGQ6OiBtaW4pKF9TdGFydF9hdCwgX0hheV9zaXplIC0gMSk7OyAtLV9NYXRjaF90
cnkpIHsNCiAgICAgICAgICAgIGlmICghX1RyYWl0czo6ZmluZChfTmVlZGxlLCBfTmVlZGxlX3Np
emUsICpfTWF0Y2hfdHJ5KSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxz
aXplX3Q+KF9NYXRjaF90cnkgLSBfSGF5c3RhY2spOyANCiAgICAgICAgICAgIH0NCg0KICAgICAg
ICAgICAgaWYgKF9NYXRjaF90cnkgPT0gX0hheXN0YWNrKSB7DQogICAgICAgICAgICAgICAgYnJl
YWs7IA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdD4oLTEpOyANCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpjb25z
dGV4cHIgc2l6ZV90IF9UcmFpdHNfZmluZF9sYXN0X25vdF9vZiggIGNvbnN0IF9UcmFpdHNfcHRy
X3Q8X1RyYWl0cz4gX0hheXN0YWNrLA0KICAgIGNvbnN0IHNpemVfdCBfSGF5X3NpemUsIGNvbnN0
IHNpemVfdCBfU3RhcnRfYXQsICAgY29uc3QgX1RyYWl0c19wdHJfdDxfVHJhaXRzPiBfTmVlZGxl
LA0KICAgIGNvbnN0IHNpemVfdCBfTmVlZGxlX3NpemUsIHRydWVfdHlwZSkgbm9leGNlcHQgew0K
ICAgIA0KICAgIA0KICAgIGlmIChfSGF5X3NpemUgIT0gMCkgeyANCiAgICAgICAgX1N0cmluZ19i
aXRtYXA8dHlwZW5hbWUgX1RyYWl0czo6Y2hhcl90eXBlPiBfTWF0Y2hlczsNCiAgICAgICAgaWYg
KCFfTWF0Y2hlcy5fTWFyayhfTmVlZGxlLCBfTmVlZGxlICsgX05lZWRsZV9zaXplKSkgeyANCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgIHJldHVybiBfVHJhaXRzX2ZpbmRfbGFzdF9ub3Rfb2Y8X1RyYWl0
cz4oDQogICAgICAgICAgICAgICAgX0hheXN0YWNrLCBfSGF5X3NpemUsIF9TdGFydF9hdCwgX05l
ZWRsZSwgX05lZWRsZV9zaXplLCBmYWxzZV90eXBle30pOw0KICAgICAgICB9DQoNCiAgICAgICAg
Zm9yIChhdXRvIF9NYXRjaF90cnkgPSBfSGF5c3RhY2sgKyAoOjpzdGQ6OiBtaW4pKF9TdGFydF9h
dCwgX0hheV9zaXplIC0gMSk7OyAtLV9NYXRjaF90cnkpIHsNCiAgICAgICAgICAgIGlmICghX01h
dGNoZXMuX01hdGNoKCpfTWF0Y2hfdHJ5KSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxzaXplX3Q+KF9NYXRjaF90cnkgLSBfSGF5c3RhY2spOyANCiAgICAgICAgICAgIH0N
Cg0KICAgICAgICAgICAgaWYgKF9NYXRjaF90cnkgPT0gX0hheXN0YWNrKSB7DQogICAgICAgICAg
ICAgICAgYnJlYWs7IA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOyANCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFp
dHM+DQpjb25zdGV4cHIgc2l6ZV90IF9UcmFpdHNfcmZpbmRfbm90X2NoKCAgY29uc3QgX1RyYWl0
c19wdHJfdDxfVHJhaXRzPiBfSGF5c3RhY2ssDQogICAgY29uc3Qgc2l6ZV90IF9IYXlfc2l6ZSwg
Y29uc3Qgc2l6ZV90IF9TdGFydF9hdCwgY29uc3QgX1RyYWl0c19jaF90PF9UcmFpdHM+IF9DaCkg
bm9leGNlcHQgew0KICAgIA0KICAgIGlmIChfSGF5X3NpemUgIT0gMCkgeyANCiAgICAgICAgZm9y
IChhdXRvIF9NYXRjaF90cnkgPSBfSGF5c3RhY2sgKyAoOjpzdGQ6OiBtaW4pKF9TdGFydF9hdCwg
X0hheV9zaXplIC0gMSk7OyAtLV9NYXRjaF90cnkpIHsNCiAgICAgICAgICAgIGlmICghX1RyYWl0
czo6ZXEoKl9NYXRjaF90cnksIF9DaCkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihfTWF0Y2hfdHJ5IC0gX0hheXN0YWNrKTsgDQogICAgICAgICAgICB9DQoN
CiAgICAgICAgICAgIGlmIChfTWF0Y2hfdHJ5ID09IF9IYXlzdGFjaykgew0KICAgICAgICAgICAg
ICAgIGJyZWFrOyANCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVy
biBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsgDQp9DQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
RWxlbSwgY2xhc3MgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9FbGVtPj4NCmNsYXNzIGJhc2ljX3N0
cmluZ192aWV3Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1RyYWl0cz4NCmNsYXNzIF9TdHJpbmdfdmll
d19pdGVyYXRvciB7DQpwdWJsaWM6DQoNCg0KDQogICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkg
PSByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAg
ICA9IHR5cGVuYW1lIF9UcmFpdHM6OmNoYXJfdHlwZTsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5
cGUgICA9IHB0cmRpZmZfdDsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICA9IGNvbnN0IHZh
bHVlX3R5cGUqOw0KICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICAgID0gY29uc3QgdmFsdWVfdHlw
ZSY7DQoNCiAgICBjb25zdGV4cHIgX1N0cmluZ192aWV3X2l0ZXJhdG9yKCkgbm9leGNlcHQgPSBk
ZWZhdWx0Ow0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBiYXNpY19zdHJpbmdfdmlldzx2YWx1ZV90
eXBlLCBfVHJhaXRzPjsNCg0KDQoNCg0KI2xpbmUgOTcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgY29uc3RleHByIGV4cGxp
Y2l0IF9TdHJpbmdfdmlld19pdGVyYXRvcihjb25zdCBwb2ludGVyIF9QdHIpIG5vZXhjZXB0IDog
X015cHRyKF9QdHIpIHt9DQojbGluZSA5NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KcHVibGljOg0KICAgIFtbbm9kaXNjYXJk
XV0gY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCBub2V4Y2VwdCB7DQoNCg0K
DQoNCiNsaW5lIDk4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICByZXR1cm4gKl9NeXB0cjsNCiNsaW5lIDk4MyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHBvaW50ZXIgb3BlcmF0b3ItPigp
IGNvbnN0IG5vZXhjZXB0IHsNCg0KDQoNCg0KI2xpbmUgOTkxICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgICAgIHJldHVybiBf
TXlwdHI7DQojbGluZSA5OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHN0cmluZyINCiAgICB9DQoNCiAgICBjb25zdGV4cHIgX1N0cmluZ192aWV3
X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgbm9leGNlcHQgew0KDQoNCg0KDQojbGluZSAxMDAxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmci
DQogICAgICAgICsrX015cHRyOw0KI2xpbmUgMTAwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICByZXR1cm4gKnRoaXM7
DQogICAgfQ0KDQogICAgY29uc3RleHByIF9TdHJpbmdfdmlld19pdGVyYXRvciBvcGVyYXRvcisr
KGludCkgbm9leGNlcHQgew0KICAgICAgICBfU3RyaW5nX3ZpZXdfaXRlcmF0b3IgX1RtcHsqdGhp
c307DQogICAgICAgICsrKnRoaXM7DQogICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0NCg0KICAg
IGNvbnN0ZXhwciBfU3RyaW5nX3ZpZXdfaXRlcmF0b3ImIG9wZXJhdG9yLS0oKSBub2V4Y2VwdCB7
DQoNCg0KDQoNCiNsaW5lIDEwMTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgLS1fTXlwdHI7DQojbGluZSAxMDIwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmci
DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgX1N0cmluZ192
aWV3X2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSBub2V4Y2VwdCB7DQogICAgICAgIF9TdHJpbmdf
dmlld19pdGVyYXRvciBfVG1weyp0aGlzfTsNCiAgICAgICAgLS0qdGhpczsNCiAgICAgICAgcmV0
dXJuIF9UbXA7DQogICAgfQ0KDQogICAgY29uc3RleHByIHZvaWQgX1ZlcmlmeV9vZmZzZXQoY29u
c3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIGNvbnN0IG5vZXhjZXB0IHsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTA0NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICAodm9pZCkgX09mZjsNCiNsaW5lIDEw
NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0
cmluZyINCiAgICB9DQoNCiAgICBjb25zdGV4cHIgX1N0cmluZ192aWV3X2l0ZXJhdG9yJiBvcGVy
YXRvcis9KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBub2V4Y2VwdCB7DQoNCg0KDQojbGlu
ZSAxMDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhzdHJpbmciDQogICAgICAgIF9NeXB0ciArPSBfT2ZmOw0KI2xpbmUgMTA1NSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBf
U3RyaW5nX3ZpZXdfaXRlcmF0b3Igb3BlcmF0b3IrKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2Zm
KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIF9TdHJpbmdfdmlld19pdGVyYXRvciBfVG1weyp0
aGlzfTsNCiAgICAgICAgX1RtcCArPSBfT2ZmOw0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9
DQoNCiAgICBjb25zdGV4cHIgX1N0cmluZ192aWV3X2l0ZXJhdG9yJiBvcGVyYXRvci09KGNvbnN0
IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBub2V4Y2VwdCB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxMDgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgICAgIF9NeXB0ciAtPSBfT2ZmOw0KI2xpbmUgMTA4
NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3Ry
aW5nIg0KDQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1d
IGNvbnN0ZXhwciBfU3RyaW5nX3ZpZXdfaXRlcmF0b3Igb3BlcmF0b3ItKGNvbnN0IGRpZmZlcmVu
Y2VfdHlwZSBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIF9TdHJpbmdfdmlld19pdGVy
YXRvciBfVG1weyp0aGlzfTsNCiAgICAgICAgX1RtcCAtPSBfT2ZmOw0KICAgICAgICByZXR1cm4g
X1RtcDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBkaWZmZXJlbmNlX3R5
cGUgb3BlcmF0b3ItKGNvbnN0IF9TdHJpbmdfdmlld19pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBu
b2V4Y2VwdCB7DQoNCg0KDQoNCiNsaW5lIDExMDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIF9NeXB0ciAt
IF9SaWdodC5fTXlwdHI7DQojbGluZSAxMTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9P
ZmYpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuICooKnRoaXMgKyBfT2ZmKTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
X1N0cmluZ192aWV3X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCg0KDQoNCg0K
I2xpbmUgMTExNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4c3RyaW5nIg0KICAgICAgICByZXR1cm4gX015cHRyID09IF9SaWdodC5fTXlwdHI7DQoj
bGluZSAxMTE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHhzdHJpbmciDQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IF9TdHJpbmdfdmlld19pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiAhKCp0aGlzID09IF9SaWdodCk7DQogICAgfQ0KDQogICAg
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgX1N0cmluZ192aWV3
X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCg0KDQoNCg0KI2xpbmUgMTEyOCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5n
Ig0KICAgICAgICByZXR1cm4gX015cHRyIDwgX1JpZ2h0Ll9NeXB0cjsNCiNsaW5lIDExMzAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyIN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25z
dCBfU3RyaW5nX3ZpZXdfaXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gX1JpZ2h0IDwgKnRoaXM7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IF9TdHJpbmdfdmlld19pdGVyYXRvciYgX1JpZ2h0
KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAhKF9SaWdodCA8ICp0aGlzKTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qg
X1N0cmluZ192aWV3X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuICEoKnRoaXMgPCBfUmlnaHQpOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE1
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3Ry
aW5nIg0KDQogICAgdXNpbmcgX1ByZXZlbnRfaW5oZXJpdGluZ191bndyYXAgPSBfU3RyaW5nX3Zp
ZXdfaXRlcmF0b3I7DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBwb2ludGVyIF9Vbndy
YXBwZWQoKSBjb25zdCBub2V4Y2VwdCB7DQoNCg0KI2xpbmUgMTE1OCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICByZXR1
cm4gX015cHRyOw0KI2xpbmUgMTE2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBfVW53cmFwX3doZW5fdW52ZXJpZmllZCA9IDAgPT0gMDsNCg0KICAgIGNvbnN0ZXhwciB2
b2lkIF9TZWVrX3RvKHBvaW50ZXIgX0l0KSBub2V4Y2VwdCB7DQoNCg0KI2xpbmUgMTE2OCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0K
ICAgICAgICBfTXlwdHIgPSBfSXQ7DQojbGluZSAxMTcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgfQ0KDQpwcml2YXRlOg0K
DQoNCg0KDQojbGluZSAxMTc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgcG9pbnRlciBfTXlwdHIgPSBudWxscHRyOw0KI2xp
bmUgMTE4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4c3RyaW5nIg0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpbW25vZGlzY2FyZF1d
IGNvbnN0ZXhwciBfU3RyaW5nX3ZpZXdfaXRlcmF0b3I8X1RyYWl0cz4gb3BlcmF0b3IrKA0KICAg
IGNvbnN0IHR5cGVuYW1lIF9TdHJpbmdfdmlld19pdGVyYXRvcjxfVHJhaXRzPjo6ZGlmZmVyZW5j
ZV90eXBlIF9PZmYsDQogICAgX1N0cmluZ192aWV3X2l0ZXJhdG9yPF9UcmFpdHM+IF9SaWdodCkg
bm9leGNlcHQgew0KICAgIF9SaWdodCArPSBfT2ZmOw0KICAgIHJldHVybiBfUmlnaHQ7DQp9DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0VsZW0sIGNsYXNzIF9UcmFpdHM+DQpjbGFzcyBiYXNpY19zdHJpbmdfdmlldyB7IA0KcHVi
bGljOg0KICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZV92PF9FbGVtLCB0eXBlbmFtZSBfVHJhaXRz
OjpjaGFyX3R5cGU+LA0KICAgICAgICAiQmFkIGNoYXJfdHJhaXRzIGZvciBiYXNpY19zdHJpbmdf
dmlldzsgIg0KICAgICAgICAiTjQ2NTkgMjQuNC4yIFtzdHJpbmcudmlldy50ZW1wbGF0ZV0vMSBc
InRoZSB0eXBlIHRyYWl0czo6Y2hhcl90eXBlIHNoYWxsIG5hbWUgdGhlIHNhbWUgdHlwZSBhcyBj
aGFyVC5cIiIpOw0KDQogICAgdXNpbmcgdHJhaXRzX3R5cGUgICAgICAgICAgICA9IF9UcmFpdHM7
DQogICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgICAgICAgICA9IF9FbGVtOw0KICAgIHVzaW5nIHBv
aW50ZXIgICAgICAgICAgICAgICAgPSBfRWxlbSo7DQogICAgdXNpbmcgY29uc3RfcG9pbnRlciAg
ICAgICAgICA9IGNvbnN0IF9FbGVtKjsNCiAgICB1c2luZyByZWZlcmVuY2UgICAgICAgICAgICAg
ID0gX0VsZW0mOw0KICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSAgICAgICAgPSBjb25zdCBfRWxl
bSY7DQogICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgICAgICAgICA9IF9TdHJpbmdfdmlld19pdGVy
YXRvcjxfVHJhaXRzPjsNCiAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAgID0gY29uc3Rf
aXRlcmF0b3I7DQogICAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciA9IDo6c3RkOjogcmV2
ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47DQogICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRv
ciAgICAgICA9IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7DQogICAgdXNpbmcgc2l6ZV90eXBlICAg
ICAgICAgICAgICA9IHNpemVfdDsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgICAgICAgID0g
cHRyZGlmZl90Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG5wb3N7c3RhdGljX2Nhc3Q8
c2l6ZV90eXBlPigtMSl9Ow0KDQogICAgY29uc3RleHByIGJhc2ljX3N0cmluZ192aWV3KCkgbm9l
eGNlcHQgOiBfTXlkYXRhKCksIF9NeXNpemUoMCkge30NCg0KICAgIGNvbnN0ZXhwciBiYXNpY19z
dHJpbmdfdmlldyhjb25zdCBiYXNpY19zdHJpbmdfdmlldyYpIG5vZXhjZXB0ID0gZGVmYXVsdDsN
CiAgICBjb25zdGV4cHIgYmFzaWNfc3RyaW5nX3ZpZXcmIG9wZXJhdG9yPShjb25zdCBiYXNpY19z
dHJpbmdfdmlldyYpIG5vZXhjZXB0ID0gZGVmYXVsdDsNCg0KICAgICBjb25zdGV4cHIgYmFzaWNf
c3RyaW5nX3ZpZXcoICBjb25zdCBjb25zdF9wb2ludGVyIF9OdGN0cykgbm9leGNlcHQgDQogICAg
ICAgIDogX015ZGF0YShfTnRjdHMpLCBfTXlzaXplKF9UcmFpdHM6Omxlbmd0aChfTnRjdHMpKSB7
fQ0KDQogICAgY29uc3RleHByIGJhc2ljX3N0cmluZ192aWV3KA0KICAgICAgICAgIGNvbnN0IGNv
bnN0X3BvaW50ZXIgX0N0cywgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgbm9leGNlcHQgDQogICAg
ICAgIDogX015ZGF0YShfQ3RzKSwgX015c2l6ZShfQ291bnQpIHsNCg0KDQojbGluZSAxMjQxICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmci
DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgYmVn
aW4oKSBjb25zdCBub2V4Y2VwdCB7DQoNCg0KI2xpbmUgMTI0NyAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICByZXR1cm4g
Y29uc3RfaXRlcmF0b3IoX015ZGF0YSk7DQojbGluZSAxMjQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qgbm9leGNlcHQg
ew0KDQoNCiNsaW5lIDEyNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKF9NeWRh
dGEgKyBfTXlzaXplKTsNCiNsaW5lIDEyNTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1d
IGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBiZWdpbigpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBl
bmQoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3J7ZW5kKCl9Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29u
c3RleHByIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3J7YmVnaW4oKX07DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2lu
KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmJlZ2luKCk7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgp
IGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHJlbmQoKTsNCiAgICB9DQoNCiAgICBj
b25zdGV4cHIgY29uc3RfcG9pbnRlciBfVW5jaGVja2VkX2JlZ2luKCkgY29uc3Qgbm9leGNlcHQg
ew0KICAgICAgICByZXR1cm4gX015ZGF0YTsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgY29uc3Rf
cG9pbnRlciBfVW5jaGVja2VkX2VuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IF9NeWRhdGEgKyBfTXlzaXplOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IHNpemVfdHlwZSBzaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015c2l6
ZTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBzaXplX3R5cGUgbGVuZ3Ro
KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015c2l6ZTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIGVtcHR5KCkgY29uc3Qgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gX015c2l6ZSA9PSAwOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0g
Y29uc3RleHByIGNvbnN0X3BvaW50ZXIgZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIF9NeWRhdGE7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6
ZV90eXBlIG1heF9zaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgDQog
ICAgICAgIHJldHVybiAoOjpzdGQ6OiBtaW4pKHN0YXRpY19jYXN0PHNpemVfdD4oOTIyMzM3MjAz
Njg1NDc3NTgwN2k2NCksIHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIC8gc2l6ZW9mKF9FbGVtKSk7
DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfcmVmZXJlbmNlIG9w
ZXJhdG9yW10oY29uc3Qgc2l6ZV90eXBlIF9PZmYpIGNvbnN0IG5vZXhjZXB0ICB7DQoNCg0KI2xp
bmUgMTMxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4c3RyaW5nIg0KICAgICAgICByZXR1cm4gX015ZGF0YVtfT2ZmXTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdF9yZWZlcmVuY2UgYXQoY29uc3Qgc2l6ZV90eXBl
IF9PZmYpIGNvbnN0IHsNCiAgICAgICAgDQogICAgICAgIF9DaGVja19vZmZzZXRfZXhjbHVzaXZl
KF9PZmYpOw0KICAgICAgICByZXR1cm4gX015ZGF0YVtfT2ZmXTsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBjb25zdF9yZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4Y2Vw
dCAgew0KDQoNCiNsaW5lIDEzMzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIF9NeWRhdGFbMF07DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBj
b25zdCBub2V4Y2VwdCAgew0KDQoNCiNsaW5lIDEzMzcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIF9NeWRh
dGFbX015c2l6ZSAtIDFdOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciB2b2lkIHJlbW92ZV9wcmVm
aXgoY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgbm9leGNlcHQgIHsNCg0KDQojbGluZSAxMzQ0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmci
DQogICAgICAgIF9NeWRhdGEgKz0gX0NvdW50Ow0KICAgICAgICBfTXlzaXplIC09IF9Db3VudDsN
CiAgICB9DQoNCiAgICBjb25zdGV4cHIgdm9pZCByZW1vdmVfc3VmZml4KGNvbnN0IHNpemVfdHlw
ZSBfQ291bnQpIG5vZXhjZXB0ICB7DQoNCg0KI2xpbmUgMTM1MiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICBfTXlzaXpl
IC09IF9Db3VudDsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgdm9pZCBzd2FwKGJhc2ljX3N0cmlu
Z192aWV3JiBfT3RoZXIpIG5vZXhjZXB0IHsNCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nX3Zp
ZXcgX1RtcHtfT3RoZXJ9OyANCiAgICAgICAgX090aGVyID0gKnRoaXM7DQogICAgICAgICp0aGlz
ICA9IF9UbXA7DQogICAgfQ0KDQogICAgaW5saW5lIHNpemVfdHlwZSBjb3B5KA0KICAgICAgICAg
IF9FbGVtKiBjb25zdCBfUHRyLCBzaXplX3R5cGUgX0NvdW50LCBjb25zdCBzaXplX3R5cGUgX09m
ZiA9IDApIGNvbnN0IHsNCiAgICAgICAgDQogICAgICAgIF9DaGVja19vZmZzZXQoX09mZik7DQog
ICAgICAgIF9Db3VudCA9IF9DbGFtcF9zdWZmaXhfc2l6ZShfT2ZmLCBfQ291bnQpOw0KICAgICAg
ICBfVHJhaXRzOjpjb3B5KF9QdHIsIF9NeWRhdGEgKyBfT2ZmLCBfQ291bnQpOw0KICAgICAgICBy
ZXR1cm4gX0NvdW50Ow0KICAgIH0NCg0KICAgICAgaW5saW5lIHNpemVfdHlwZQ0KICAgICAgICBf
Q29weV9zKCAgX0VsZW0qIGNvbnN0IF9EZXN0LCBjb25zdCBzaXplX3R5cGUgX0Rlc3Rfc2l6ZSwg
c2l6ZV90eXBlIF9Db3VudCwNCiAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSBfT2ZmID0gMCkg
Y29uc3Qgew0KICAgICAgICANCiAgICAgICAgX0NoZWNrX29mZnNldChfT2ZmKTsNCiAgICAgICAg
X0NvdW50ID0gX0NsYW1wX3N1ZmZpeF9zaXplKF9PZmYsIF9Db3VudCk7DQogICAgICAgIF9UcmFp
dHM6Ol9Db3B5X3MoX0Rlc3QsIF9EZXN0X3NpemUsIF9NeWRhdGEgKyBfT2ZmLCBfQ291bnQpOw0K
ICAgICAgICByZXR1cm4gX0NvdW50Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIGJhc2ljX3N0cmluZ192aWV3IHN1YnN0cihjb25zdCBzaXplX3R5cGUgX09mZiA9IDAsIHNp
emVfdHlwZSBfQ291bnQgPSBucG9zKSBjb25zdCB7DQogICAgICAgIA0KICAgICAgICBfQ2hlY2tf
b2Zmc2V0KF9PZmYpOw0KICAgICAgICBfQ291bnQgPSBfQ2xhbXBfc3VmZml4X3NpemUoX09mZiwg
X0NvdW50KTsNCiAgICAgICAgcmV0dXJuIGJhc2ljX3N0cmluZ192aWV3KF9NeWRhdGEgKyBfT2Zm
LCBfQ291bnQpOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBib29sIF9FcXVhbChjb25zdCBiYXNp
Y19zdHJpbmdfdmlldyBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9U
cmFpdHNfZXF1YWw8X1RyYWl0cz4oX015ZGF0YSwgX015c2l6ZSwgX1JpZ2h0Ll9NeWRhdGEsIF9S
aWdodC5fTXlzaXplKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBpbnQg
Y29tcGFyZShjb25zdCBiYXNpY19zdHJpbmdfdmlldyBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIF9UcmFpdHNfY29tcGFyZTxfVHJhaXRzPihfTXlkYXRhLCBfTXlzaXpl
LCBfUmlnaHQuX015ZGF0YSwgX1JpZ2h0Ll9NeXNpemUpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gY29uc3RleHByIGludCBjb21wYXJlKGNvbnN0IHNpemVfdHlwZSBfT2ZmLCBjb25zdCBz
aXplX3R5cGUgX054LCBjb25zdCBiYXNpY19zdHJpbmdfdmlldyBfUmlnaHQpIGNvbnN0IHsNCiAg
ICAgICAgDQogICAgICAgIHJldHVybiBzdWJzdHIoX09mZiwgX054KS5jb21wYXJlKF9SaWdodCk7
DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgaW50IGNvbXBhcmUoY29uc3Qg
c2l6ZV90eXBlIF9PZmYsIGNvbnN0IHNpemVfdHlwZSBfTngsIGNvbnN0IGJhc2ljX3N0cmluZ192
aWV3IF9SaWdodCwNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9Sb2ZmLCBjb25zdCBzaXplX3R5
cGUgX0NvdW50KSBjb25zdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gc3Vic3RyKF9PZmYs
IF9OeCkuY29tcGFyZShfUmlnaHQuc3Vic3RyKF9Sb2ZmLCBfQ291bnQpKTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBpbnQgY29tcGFyZSggIGNvbnN0IF9FbGVtKiBjb25z
dCBfUHRyKSBjb25zdCB7IA0KICAgICAgICByZXR1cm4gY29tcGFyZShiYXNpY19zdHJpbmdfdmll
dyhfUHRyKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgaW50IGNvbXBh
cmUoY29uc3Qgc2l6ZV90eXBlIF9PZmYsIGNvbnN0IHNpemVfdHlwZSBfTngsICAgY29uc3QgX0Vs
ZW0qIGNvbnN0IF9QdHIpIGNvbnN0IHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBzdWJzdHIo
X09mZiwgX054KS5jb21wYXJlKGJhc2ljX3N0cmluZ192aWV3KF9QdHIpKTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBpbnQgY29tcGFyZShjb25zdCBzaXplX3R5cGUgX09m
ZiwgY29uc3Qgc2l6ZV90eXBlIF9OeCwNCiAgICAgICAgICBjb25zdCBfRWxlbSogY29uc3QgX1B0
ciwgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgcmV0
dXJuIHN1YnN0cihfT2ZmLCBfTngpLmNvbXBhcmUoYmFzaWNfc3RyaW5nX3ZpZXcoX1B0ciwgX0Nv
dW50KSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAgW1tub2Rpc2NhcmRd
XSBjb25zdGV4cHIgc2l6ZV90eXBlIGZpbmQoY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXcgX1JpZ2h0
LCBjb25zdCBzaXplX3R5cGUgX09mZiA9IDApIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgDQog
ICAgICAgIHJldHVybiBfVHJhaXRzX2ZpbmQ8X1RyYWl0cz4oX015ZGF0YSwgX015c2l6ZSwgX09m
ZiwgX1JpZ2h0Ll9NeWRhdGEsIF9SaWdodC5fTXlzaXplKTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBzaXplX3R5cGUgZmluZChjb25zdCBfRWxlbSBfQ2gsIGNvbnN0IHNp
emVfdHlwZSBfT2ZmID0gMCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgcmV0
dXJuIF9UcmFpdHNfZmluZF9jaDxfVHJhaXRzPihfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBfQ2gp
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHNpemVfdHlwZSBmaW5kKCAg
Y29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfT2ZmLA0KICAgICAgICBj
b25zdCBzaXplX3R5cGUgX0NvdW50KSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICANCiAgICAg
ICAgcmV0dXJuIF9UcmFpdHNfZmluZDxfVHJhaXRzPihfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBf
UHRyLCBfQ291bnQpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHNpemVf
dHlwZSBmaW5kKCAgY29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfT2Zm
ID0gMCkgY29uc3Qgbm9leGNlcHQNCiAgICAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9U
cmFpdHNfZmluZDxfVHJhaXRzPihfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBfUHRyLCBfVHJhaXRz
OjpsZW5ndGgoX1B0cikpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHNp
emVfdHlwZSByZmluZChjb25zdCBiYXNpY19zdHJpbmdfdmlldyBfUmlnaHQsIGNvbnN0IHNpemVf
dHlwZSBfT2ZmID0gbnBvcykgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgcmV0
dXJuIF9UcmFpdHNfcmZpbmQ8X1RyYWl0cz4oX015ZGF0YSwgX015c2l6ZSwgX09mZiwgX1JpZ2h0
Ll9NeWRhdGEsIF9SaWdodC5fTXlzaXplKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBzaXplX3R5cGUgcmZpbmQoY29uc3QgX0VsZW0gX0NoLCBjb25zdCBzaXplX3R5cGUg
X09mZiA9IG5wb3MpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBf
VHJhaXRzX3JmaW5kX2NoPF9UcmFpdHM+KF9NeWRhdGEsIF9NeXNpemUsIF9PZmYsIF9DaCk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6ZV90eXBlIHJmaW5kKCAgY29u
c3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfT2ZmLA0KICAgICAgICBjb25z
dCBzaXplX3R5cGUgX0NvdW50KSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAg
cmV0dXJuIF9UcmFpdHNfcmZpbmQ8X1RyYWl0cz4oX015ZGF0YSwgX015c2l6ZSwgX09mZiwgX1B0
ciwgX0NvdW50KTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBzaXplX3R5
cGUgcmZpbmQoICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBlIF9PZmYg
PSBucG9zKSBjb25zdCBub2V4Y2VwdA0KICAgICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4g
X1RyYWl0c19yZmluZDxfVHJhaXRzPihfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBfUHRyLCBfVHJh
aXRzOjpsZW5ndGgoX1B0cikpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mKGNvbnN0IGJhc2ljX3N0cmluZ192aWV3IF9SaWdodCwN
CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBjb25zdCBub2V4Y2VwdCB7IA0KICAg
ICAgICByZXR1cm4gX1RyYWl0c19maW5kX2ZpcnN0X29mPF9UcmFpdHM+KA0KICAgICAgICAgICAg
X015ZGF0YSwgX015c2l6ZSwgX09mZiwgX1JpZ2h0Ll9NeWRhdGEsIF9SaWdodC5fTXlzaXplLCBf
SXNfc3BlY2lhbGl6YXRpb248X1RyYWl0cywgY2hhcl90cmFpdHM+e30pOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mKGNvbnN0IF9F
bGVtIF9DaCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIA0KICAgICAgICByZXR1cm4gX1RyYWl0c19maW5kX2NoPF9UcmFpdHM+KF9NeWRhdGEsIF9N
eXNpemUsIF9PZmYsIF9DaCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
c2l6ZV90eXBlIGZpbmRfZmlyc3Rfb2YoICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qg
c2l6ZV90eXBlIF9PZmYsDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQpIGNvbnN0IG5v
ZXhjZXB0ICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1RyYWl0c19maW5kX2ZpcnN0X29m
PF9UcmFpdHM+KA0KICAgICAgICAgICAgX015ZGF0YSwgX015c2l6ZSwgX09mZiwgX1B0ciwgX0Nv
dW50LCBfSXNfc3BlY2lhbGl6YXRpb248X1RyYWl0cywgY2hhcl90cmFpdHM+e30pOw0KICAgIH0N
Cg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mKA0K
ICAgICAgICAgIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyLCBjb25zdCBzaXplX3R5cGUgX09mZiA9
IDApIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1RyYWl0c19m
aW5kX2ZpcnN0X29mPF9UcmFpdHM+KA0KICAgICAgICAgICAgX015ZGF0YSwgX015c2l6ZSwgX09m
ZiwgX1B0ciwgX1RyYWl0czo6bGVuZ3RoKF9QdHIpLCBfSXNfc3BlY2lhbGl6YXRpb248X1RyYWl0
cywgY2hhcl90cmFpdHM+e30pOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IHNpemVfdHlwZSBmaW5kX2xhc3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXcgX1JpZ2h0LA0K
ICAgICAgICBjb25zdCBzaXplX3R5cGUgX09mZiA9IG5wb3MpIGNvbnN0IG5vZXhjZXB0IHsgDQog
ICAgICAgIHJldHVybiBfVHJhaXRzX2ZpbmRfbGFzdF9vZjxfVHJhaXRzPigNCiAgICAgICAgICAg
IF9NeWRhdGEsIF9NeXNpemUsIF9PZmYsIF9SaWdodC5fTXlkYXRhLCBfUmlnaHQuX015c2l6ZSwg
X0lzX3NwZWNpYWxpemF0aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9KTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBzaXplX3R5cGUgZmluZF9sYXN0X29mKGNvbnN0IF9F
bGVtIF9DaCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSBucG9zKSBjb25zdCBub2V4Y2VwdCB7DQog
ICAgICAgIA0KICAgICAgICByZXR1cm4gX1RyYWl0c19yZmluZF9jaDxfVHJhaXRzPihfTXlkYXRh
LCBfTXlzaXplLCBfT2ZmLCBfQ2gpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIHNpemVfdHlwZSBmaW5kX2xhc3Rfb2YoICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29u
c3Qgc2l6ZV90eXBlIF9PZmYsDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQpIGNvbnN0
IG5vZXhjZXB0ICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1RyYWl0c19maW5kX2xhc3Rf
b2Y8X1RyYWl0cz4oDQogICAgICAgICAgICBfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBfUHRyLCBf
Q291bnQsIF9Jc19zcGVjaWFsaXphdGlvbjxfVHJhaXRzLCBjaGFyX3RyYWl0cz57fSk7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6ZV90eXBlIGZpbmRfbGFzdF9vZigN
CiAgICAgICAgICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBlIF9PZmYg
PSBucG9zKSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9UcmFp
dHNfZmluZF9sYXN0X29mPF9UcmFpdHM+KA0KICAgICAgICAgICAgX015ZGF0YSwgX015c2l6ZSwg
X09mZiwgX1B0ciwgX1RyYWl0czo6bGVuZ3RoKF9QdHIpLCBfSXNfc3BlY2lhbGl6YXRpb248X1Ry
YWl0cywgY2hhcl90cmFpdHM+e30pOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIHNpemVfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZihjb25zdCBiYXNpY19zdHJpbmdfdmlldyBf
UmlnaHQsDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfT2ZmID0gMCkgY29uc3Qgbm9leGNlcHQg
eyANCiAgICAgICAgcmV0dXJuIF9UcmFpdHNfZmluZF9maXJzdF9ub3Rfb2Y8X1RyYWl0cz4oDQog
ICAgICAgICAgICBfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBfUmlnaHQuX015ZGF0YSwgX1JpZ2h0
Ll9NeXNpemUsIF9Jc19zcGVjaWFsaXphdGlvbjxfVHJhaXRzLCBjaGFyX3RyYWl0cz57fSk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6ZV90eXBlIGZpbmRfZmlyc3Rf
bm90X29mKGNvbnN0IF9FbGVtIF9DaCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBjb25zdCBu
b2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1RyYWl0c19maW5kX25vdF9jaDxf
VHJhaXRzPihfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBfQ2gpOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gY29uc3RleHByIHNpemVfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZiggIGNvbnN0IF9F
bGVtKiBjb25zdCBfUHRyLCBjb25zdCBzaXplX3R5cGUgX09mZiwNCiAgICAgICAgY29uc3Qgc2l6
ZV90eXBlIF9Db3VudCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgDQogICAgICAgIHJldHVy
biBfVHJhaXRzX2ZpbmRfZmlyc3Rfbm90X29mPF9UcmFpdHM+KA0KICAgICAgICAgICAgX015ZGF0
YSwgX015c2l6ZSwgX09mZiwgX1B0ciwgX0NvdW50LCBfSXNfc3BlY2lhbGl6YXRpb248X1RyYWl0
cywgY2hhcl90cmFpdHM+e30pOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IHNpemVfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZigNCiAgICAgICAgICBjb25zdCBfRWxlbSogY29u
c3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBjb25zdCBub2V4Y2VwdCAgew0KICAg
ICAgICANCiAgICAgICAgcmV0dXJuIF9UcmFpdHNfZmluZF9maXJzdF9ub3Rfb2Y8X1RyYWl0cz4o
DQogICAgICAgICAgICBfTXlkYXRhLCBfTXlzaXplLCBfT2ZmLCBfUHRyLCBfVHJhaXRzOjpsZW5n
dGgoX1B0ciksIF9Jc19zcGVjaWFsaXphdGlvbjxfVHJhaXRzLCBjaGFyX3RyYWl0cz57fSk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6ZV90eXBlIGZpbmRfbGFzdF9u
b3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXcgX1JpZ2h0LA0KICAgICAgICBjb25zdCBzaXpl
X3R5cGUgX09mZiA9IG5wb3MpIGNvbnN0IG5vZXhjZXB0IHsgDQogICAgICAgIHJldHVybiBfVHJh
aXRzX2ZpbmRfbGFzdF9ub3Rfb2Y8X1RyYWl0cz4oDQogICAgICAgICAgICBfTXlkYXRhLCBfTXlz
aXplLCBfT2ZmLCBfUmlnaHQuX015ZGF0YSwgX1JpZ2h0Ll9NeXNpemUsIF9Jc19zcGVjaWFsaXph
dGlvbjxfVHJhaXRzLCBjaGFyX3RyYWl0cz57fSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSBjb25zdGV4cHIgc2l6ZV90eXBlIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX0VsZW0gX0NoLCBj
b25zdCBzaXplX3R5cGUgX09mZiA9IG5wb3MpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgDQog
ICAgICAgIHJldHVybiBfVHJhaXRzX3JmaW5kX25vdF9jaDxfVHJhaXRzPihfTXlkYXRhLCBfTXlz
aXplLCBfT2ZmLCBfQ2gpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHNp
emVfdHlwZSBmaW5kX2xhc3Rfbm90X29mKCAgY29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNvbnN0
IHNpemVfdHlwZSBfT2ZmLA0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX0NvdW50KSBjb25zdCBu
b2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9UcmFpdHNfZmluZF9sYXN0X25v
dF9vZjxfVHJhaXRzPigNCiAgICAgICAgICAgIF9NeWRhdGEsIF9NeXNpemUsIF9PZmYsIF9QdHIs
IF9Db3VudCwgX0lzX3NwZWNpYWxpemF0aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9KTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBzaXplX3R5cGUgZmluZF9sYXN0X25v
dF9vZigNCiAgICAgICAgICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBl
IF9PZmYgPSBucG9zKSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJu
IF9UcmFpdHNfZmluZF9sYXN0X25vdF9vZjxfVHJhaXRzPigNCiAgICAgICAgICAgIF9NeWRhdGEs
IF9NeXNpemUsIF9PZmYsIF9QdHIsIF9UcmFpdHM6Omxlbmd0aChfUHRyKSwgX0lzX3NwZWNpYWxp
emF0aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9KTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIGNvbnN0ZXhwciBib29sIF9TdGFydHNfd2l0aChjb25zdCBiYXNpY19zdHJpbmdfdmlldyBf
VmlldykgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015c2l6ZSA+PSBfVmlldy5f
TXlzaXplICYmIF9UcmFpdHM6OmNvbXBhcmUoX015ZGF0YSwgX1ZpZXcuX015ZGF0YSwgX1ZpZXcu
X015c2l6ZSkgPT0gMDsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgY29uc3RleHByIHZvaWQgX0No
ZWNrX29mZnNldChjb25zdCBzaXplX3R5cGUgX09mZikgY29uc3QgeyANCiAgICAgICAgaWYgKF9N
eXNpemUgPCBfT2ZmKSB7DQogICAgICAgICAgICBfWHJhbigpOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgY29uc3RleHByIHZvaWQgX0NoZWNrX29mZnNldF9leGNsdXNpdmUoY29uc3Qgc2l6ZV90
eXBlIF9PZmYpIGNvbnN0IHsNCiAgICAgICAgDQogICAgICAgIGlmIChfTXlzaXplIDw9IF9PZmYp
IHsNCiAgICAgICAgICAgIF9YcmFuKCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBjb25zdGV4
cHIgc2l6ZV90eXBlIF9DbGFtcF9zdWZmaXhfc2l6ZShjb25zdCBzaXplX3R5cGUgX09mZiwgY29u
c3Qgc2l6ZV90eXBlIF9TaXplKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICBy
ZXR1cm4gKDo6c3RkOjogbWluKShfU2l6ZSwgX015c2l6ZSAtIF9PZmYpOw0KICAgIH0NCg0KICAg
IFtbbm9yZXR1cm5dXSBzdGF0aWMgdm9pZCBfWHJhbigpIHsNCiAgICAgICAgX1hvdXRfb2ZfcmFu
Z2UoImludmFsaWQgc3RyaW5nX3ZpZXcgcG9zaXRpb24iKTsNCiAgICB9DQoNCiAgICBjb25zdF9w
b2ludGVyIF9NeWRhdGE7DQogICAgc2l6ZV90eXBlIF9NeXNpemU7DQp9Ow0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cz4NCltbbm9kaXNj
YXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PSgNCiAgICBjb25zdCBiYXNpY19zdHJpbmdf
dmlldzxfRWxlbSwgX1RyYWl0cz4gX0xocywgY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0s
IF9UcmFpdHM+IF9SaHMpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX0xocy5fRXF1YWwoX1Jocyk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgaW50ID0gMT4gDQpb
W25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oDQogICAgY29uc3QgX0lkZW50
aXR5X3Q8YmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+PiBfTGhzLCBjb25zdCBiYXNp
Y19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX1Jocykgbm9leGNlcHQgew0KICAgIHJldHVy
biBfTGhzLl9FcXVhbChfUmhzKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBf
VHJhaXRzLCBpbnQgPSAyPiANCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PSgNCiAgICBjb25zdCBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0xocywgY29u
c3QgX0lkZW50aXR5X3Q8YmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+PiBfUmhzKSBu
b2V4Y2VwdCB7DQogICAgcmV0dXJuIF9MaHMuX0VxdWFsKF9SaHMpOw0KfQ0KDQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KA0KICAgIGNvbnN0IGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJh
aXRzPiBfTGhzLCBjb25zdCBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX1Jocykg
bm9leGNlcHQgew0KICAgIHJldHVybiAhX0xocy5fRXF1YWwoX1Jocyk7DQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgaW50ID0gMT4gDQpbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oDQogICAgY29uc3QgX0lkZW50aXR5X3Q8YmFzaWNfc3Ry
aW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+PiBfTGhzLCBjb25zdCBiYXNpY19zdHJpbmdfdmlldzxf
RWxlbSwgX1RyYWl0cz4gX1Jocykgbm9leGNlcHQgew0KICAgIHJldHVybiAhX0xocy5fRXF1YWwo
X1Jocyk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgaW50ID0g
Mj4gDQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oDQogICAgY29uc3Qg
YmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9MaHMsIGNvbnN0IF9JZGVudGl0eV90
PGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPj4gX1Jocykgbm9leGNlcHQgew0KICAg
IHJldHVybiAhX0xocy5fRXF1YWwoX1Jocyk7DQp9DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Vs
ZW0sIGNsYXNzIF9UcmFpdHM+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PCgNCiAgICBjb25zdCBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0xocywgY29u
c3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9SaHMpIG5vZXhjZXB0IHsNCiAg
ICByZXR1cm4gX0xocy5jb21wYXJlKF9SaHMpIDwgMDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9F
bGVtLCBjbGFzcyBfVHJhaXRzLCBpbnQgPSAxPiANCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8KA0KICAgIGNvbnN0IF9JZGVudGl0eV90PGJhc2ljX3N0cmluZ192aWV3PF9F
bGVtLCBfVHJhaXRzPj4gX0xocywgY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFp
dHM+IF9SaHMpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX0xocy5jb21wYXJlKF9SaHMpIDwgMDsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBpbnQgPSAyPiANCltb
bm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KA0KICAgIGNvbnN0IGJhc2ljX3N0
cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfTGhzLCBjb25zdCBfSWRlbnRpdHlfdDxiYXNpY19z
dHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4+IF9SaHMpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4g
X0xocy5jb21wYXJlKF9SaHMpIDwgMDsNCn0NCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwg
Y2xhc3MgX1RyYWl0cz4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KA0K
ICAgIGNvbnN0IGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfTGhzLCBjb25zdCBi
YXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX1Jocykgbm9leGNlcHQgew0KICAgIHJl
dHVybiBfTGhzLmNvbXBhcmUoX1JocykgPiAwOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0s
IGNsYXNzIF9UcmFpdHMsIGludCA9IDE+IA0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj4oDQogICAgY29uc3QgX0lkZW50aXR5X3Q8YmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0s
IF9UcmFpdHM+PiBfTGhzLCBjb25zdCBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4g
X1Jocykgbm9leGNlcHQgew0KICAgIHJldHVybiBfTGhzLmNvbXBhcmUoX1JocykgPiAwOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGludCA9IDI+IA0KW1tub2Rp
c2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oDQogICAgY29uc3QgYmFzaWNfc3RyaW5n
X3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9MaHMsIGNvbnN0IF9JZGVudGl0eV90PGJhc2ljX3N0cmlu
Z192aWV3PF9FbGVtLCBfVHJhaXRzPj4gX1Jocykgbm9leGNlcHQgew0KICAgIHJldHVybiBfTGhz
LmNvbXBhcmUoX1JocykgPiAwOw0KfQ0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFz
cyBfVHJhaXRzPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KA0KICAg
IGNvbnN0IGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfTGhzLCBjb25zdCBiYXNp
Y19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX1Jocykgbm9leGNlcHQgew0KICAgIHJldHVy
biBfTGhzLmNvbXBhcmUoX1JocykgPD0gMDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBj
bGFzcyBfVHJhaXRzLCBpbnQgPSAxPiANCltbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8PSgNCiAgICBjb25zdCBfSWRlbnRpdHlfdDxiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwg
X1RyYWl0cz4+IF9MaHMsIGNvbnN0IGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBf
UmhzKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9MaHMuY29tcGFyZShfUmhzKSA8PSAwOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGludCA9IDI+IA0KW1tub2Rp
c2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KA0KICAgIGNvbnN0IGJhc2ljX3N0cmlu
Z192aWV3PF9FbGVtLCBfVHJhaXRzPiBfTGhzLCBjb25zdCBfSWRlbnRpdHlfdDxiYXNpY19zdHJp
bmdfdmlldzxfRWxlbSwgX1RyYWl0cz4+IF9SaHMpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX0xo
cy5jb21wYXJlKF9SaHMpIDw9IDA7DQp9DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNs
YXNzIF9UcmFpdHM+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oDQog
ICAgY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9MaHMsIGNvbnN0IGJh
c2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfUmhzKSBub2V4Y2VwdCB7DQogICAgcmV0
dXJuIF9MaHMuY29tcGFyZShfUmhzKSA+PSAwOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0s
IGNsYXNzIF9UcmFpdHMsIGludCA9IDE+IA0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KA0KICAgIGNvbnN0IF9JZGVudGl0eV90PGJhc2ljX3N0cmluZ192aWV3PF9FbGVt
LCBfVHJhaXRzPj4gX0xocywgY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+
IF9SaHMpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX0xocy5jb21wYXJlKF9SaHMpID49IDA7DQp9
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgaW50ID0gMj4gDQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oDQogICAgY29uc3QgYmFzaWNfc3Ry
aW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9MaHMsIGNvbnN0IF9JZGVudGl0eV90PGJhc2ljX3N0
cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPj4gX1Jocykgbm9leGNlcHQgew0KICAgIHJldHVybiBf
TGhzLmNvbXBhcmUoX1JocykgPj0gMDsNCn0NCg0KDQoNCnVzaW5nIHN0cmluZ192aWV3ID0gYmFz
aWNfc3RyaW5nX3ZpZXc8Y2hhcj47DQoNCg0KDQp1c2luZyB1MTZzdHJpbmdfdmlldyA9IGJhc2lj
X3N0cmluZ192aWV3PGNoYXIxNl90PjsNCnVzaW5nIHUzMnN0cmluZ192aWV3ID0gYmFzaWNfc3Ry
aW5nX3ZpZXc8Y2hhcjMyX3Q+Ow0KdXNpbmcgd3N0cmluZ192aWV3ICAgPSBiYXNpY19zdHJpbmdf
dmlldzx3Y2hhcl90PjsNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0
cz4NCnN0cnVjdCBoYXNoPGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPj4gew0KICAg
IFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVm
cyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNv
bmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91
IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9X
QVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBh
Y2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVk
ZWYgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IGFyZ3VtZW50X3R5cGU7DQogICAg
W1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZz
ICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29u
ZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3Ug
Y2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dB
Uk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFj
a25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRl
ZiBzaXplX3QgcmVzdWx0X3R5cGU7DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdCBvcGVyYXRv
cigpKGNvbnN0IGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfS2V5dmFsKSBjb25z
dCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfSGFzaF9hcnJheV9yZXByZXNlbnRhdGlvbihf
S2V5dmFsLmRhdGEoKSwgX0tleXZhbC5zaXplKCkpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxj
bGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cz4NCmJhc2ljX29zdHJlYW08X0VsZW0sIF9UcmFpdHM+
JiBvcGVyYXRvcjw8KA0KICAgIGJhc2ljX29zdHJlYW08X0VsZW0sIF9UcmFpdHM+JiBfT3N0ciwg
Y29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9TdHIpIHsNCiAgICByZXR1
cm4gX0luc2VydF9zdHJpbmcoX09zdHIsIF9TdHIuZGF0YSgpLCBfU3RyLnNpemUoKSk7DQp9DQoN
Cg0KDQppbmxpbmUgbmFtZXNwYWNlIGxpdGVyYWxzIHsNCiAgICBpbmxpbmUgbmFtZXNwYWNlIHN0
cmluZ192aWV3X2xpdGVyYWxzIHsNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc3Ry
aW5nX3ZpZXcgb3BlcmF0b3IiIiBzdihjb25zdCBjaGFyKiBfU3RyLCBzaXplX3QgX0xlbikgbm9l
eGNlcHQgew0KICAgICAgICAgICAgcmV0dXJuIHN0cmluZ192aWV3KF9TdHIsIF9MZW4pOw0KICAg
ICAgICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgd3N0cmluZ192aWV3IG9w
ZXJhdG9yIiIgc3YoY29uc3Qgd2NoYXJfdCogX1N0ciwgc2l6ZV90IF9MZW4pIG5vZXhjZXB0IHsN
CiAgICAgICAgICAgIHJldHVybiB3c3RyaW5nX3ZpZXcoX1N0ciwgX0xlbik7DQogICAgICAgIH0N
Cg0KDQoNCg0KDQoNCg0KICAgICAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciB1MTZzdHJpbmdf
dmlldyBvcGVyYXRvciIiIHN2KGNvbnN0IGNoYXIxNl90KiBfU3RyLCBzaXplX3QgX0xlbikgbm9l
eGNlcHQgew0KICAgICAgICAgICAgcmV0dXJuIHUxNnN0cmluZ192aWV3KF9TdHIsIF9MZW4pOw0K
ICAgICAgICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgdTMyc3RyaW5nX3Zp
ZXcgb3BlcmF0b3IiIiBzdihjb25zdCBjaGFyMzJfdCogX1N0ciwgc2l6ZV90IF9MZW4pIG5vZXhj
ZXB0IHsNCiAgICAgICAgICAgIHJldHVybiB1MzJzdHJpbmdfdmlldyhfU3RyLCBfTGVuKTsNCiAg
ICAgICAgfQ0KICAgIH0gDQp9IA0KI2xpbmUgMTgxNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
TXlzdHI+DQpjbGFzcyBfU3RyaW5nX2NvbnN0X2l0ZXJhdG9yIDogcHVibGljIF9JdGVyYXRvcl9i
YXNlIHsNCnB1YmxpYzoNCg0KDQoNCiAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHJhbmRv
bV9hY2Nlc3NfaXRlcmF0b3JfdGFnOw0KICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgID0gdHlw
ZW5hbWUgX015c3RyOjp2YWx1ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgID0g
dHlwZW5hbWUgX015c3RyOjpkaWZmZXJlbmNlX3R5cGU7DQogICAgdXNpbmcgcG9pbnRlciAgICAg
ICAgICAgPSB0eXBlbmFtZSBfTXlzdHI6OmNvbnN0X3BvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJl
bmNlICAgICAgICAgPSBjb25zdCB2YWx1ZV90eXBlJjsNCg0KICAgIF9TdHJpbmdfY29uc3RfaXRl
cmF0b3IoKSBub2V4Y2VwdCA6IF9QdHIoKSB7fQ0KDQogICAgX1N0cmluZ19jb25zdF9pdGVyYXRv
cihwb2ludGVyIF9QYXJnLCBjb25zdCBfQ29udGFpbmVyX2Jhc2UqIF9Qc3RyaW5nKSBub2V4Y2Vw
dCA6IF9QdHIoX1BhcmcpIHsNCiAgICAgICAgdGhpcy0+X0Fkb3B0KF9Qc3RyaW5nKTsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7DQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxODQ1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICAgICAgOw0KICAgICAgICByZXR1cm4g
Kl9QdHI7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBwb2ludGVyIG9wZXJhdG9yLT4oKSBj
b25zdCB7DQogICAgICAgIHJldHVybiBwb2ludGVyX3RyYWl0czxwb2ludGVyPjo6cG9pbnRlcl90
bygqKnRoaXMpOw0KICAgIH0NCg0KICAgIF9TdHJpbmdfY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9y
KysoKSB7DQoNCg0KDQoNCg0KDQojbGluZSAxODYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICAgICAgKytfUHRyOw0KICAg
ICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgX1N0cmluZ19jb25zdF9pdGVyYXRvciBv
cGVyYXRvcisrKGludCkgew0KICAgICAgICBfU3RyaW5nX2NvbnN0X2l0ZXJhdG9yIF9UbXAgPSAq
dGhpczsNCiAgICAgICAgKysqdGhpczsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQog
ICAgX1N0cmluZ19jb25zdF9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsNCg0KDQoNCg0KDQoNCiNs
aW5lIDE4ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceHN0cmluZyINCg0KICAgICAgICAtLV9QdHI7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgICBfU3RyaW5nX2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7DQogICAg
ICAgIF9TdHJpbmdfY29uc3RfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICAtLSp0aGlz
Ow0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICB2b2lkIF9WZXJpZnlfb2Zmc2V0
KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTE1ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgICAgICh2
b2lkKSBfT2ZmOw0KI2xpbmUgMTkxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgIH0NCg0KICAgIF9TdHJpbmdfY29uc3RfaXRl
cmF0b3ImIG9wZXJhdG9yKz0oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIHsNCg0KDQojbGlu
ZSAxOTIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhzdHJpbmciDQogICAgICAgIF9QdHIgKz0gX09mZjsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gX1N0cmluZ19jb25zdF9pdGVyYXRvciBvcGVyYXRv
cisoY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIGNvbnN0IHsNCiAgICAgICAgX1N0cmluZ19j
b25zdF9pdGVyYXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgIHJldHVybiBfVG1wICs9IF9PZmY7
DQogICAgfQ0KDQogICAgX1N0cmluZ19jb25zdF9pdGVyYXRvciYgb3BlcmF0b3ItPShjb25zdCBk
aWZmZXJlbmNlX3R5cGUgX09mZikgew0KICAgICAgICByZXR1cm4gKnRoaXMgKz0gLV9PZmY7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBfU3RyaW5nX2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9y
LShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgY29uc3Qgew0KICAgICAgICBfU3RyaW5nX2Nv
bnN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgcmV0dXJuIF9UbXAgLT0gX09mZjsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGRpZmZlcmVuY2VfdHlwZSBvcGVyYXRvci0oY29u
c3QgX1N0cmluZ19jb25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIF9Db21w
YXQoX1JpZ2h0KTsNCiAgICAgICAgcmV0dXJuIF9QdHIgLSBfUmlnaHQuX1B0cjsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IGRpZmZlcmVuY2Vf
dHlwZSBfT2ZmKSBjb25zdCB7DQogICAgICAgIHJldHVybiAqKCp0aGlzICsgX09mZik7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPT0oY29uc3QgX1N0cmluZ19jb25z
dF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIF9Db21wYXQoX1JpZ2h0KTsNCiAg
ICAgICAgcmV0dXJuIF9QdHIgPT0gX1JpZ2h0Ll9QdHI7DQogICAgfQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBib29sIG9wZXJhdG9yIT0oY29uc3QgX1N0cmluZ19jb25zdF9pdGVyYXRvciYgX1JpZ2h0
KSBjb25zdCB7DQogICAgICAgIHJldHVybiAhKCp0aGlzID09IF9SaWdodCk7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPChjb25zdCBfU3RyaW5nX2NvbnN0X2l0ZXJh
dG9yJiBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAgX0NvbXBhdChfUmlnaHQpOw0KICAgICAgICBy
ZXR1cm4gX1B0ciA8IF9SaWdodC5fUHRyOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9v
bCBvcGVyYXRvcj4oY29uc3QgX1N0cmluZ19jb25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7
DQogICAgICAgIHJldHVybiBfUmlnaHQgPCAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIGJvb2wgb3BlcmF0b3I8PShjb25zdCBfU3RyaW5nX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQp
IGNvbnN0IHsNCiAgICAgICAgcmV0dXJuICEoX1JpZ2h0IDwgKnRoaXMpOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj49KGNvbnN0IF9TdHJpbmdfY29uc3RfaXRlcmF0
b3ImIF9SaWdodCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gISgqdGhpcyA8IF9SaWdodCk7DQog
ICAgfQ0KDQogICAgdm9pZCBfQ29tcGF0KGNvbnN0IF9TdHJpbmdfY29uc3RfaXRlcmF0b3ImIF9S
aWdodCkgY29uc3QgeyANCg0KDQoNCiNsaW5lIDE5ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgKHZvaWQpIF9SaWdo
dDsNCiNsaW5lIDE5ODMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceHN0cmluZyINCiAgICB9DQoNCg0KDQoNCg0KDQojbGluZSAxOTkxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAg
ICB1c2luZyBfUHJldmVudF9pbmhlcml0aW5nX3Vud3JhcCA9IF9TdHJpbmdfY29uc3RfaXRlcmF0
b3I7DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0IHZhbHVlX3R5cGUqIF9VbndyYXBwZWQoKSBj
b25zdCB7DQogICAgICAgIHJldHVybiBfVW5mYW5jeShfUHRyKTsNCiAgICB9DQoNCiAgICB2b2lk
IF9TZWVrX3RvKGNvbnN0IHZhbHVlX3R5cGUqIF9JdCkgew0KICAgICAgICBfUHRyID0gX1JlZmFu
Y3k8cG9pbnRlcj4oY29uc3RfY2FzdDx2YWx1ZV90eXBlKj4oX0l0KSk7DQogICAgfQ0KDQogICAg
cG9pbnRlciBfUHRyOyANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfTXlzdHI+DQpbW25vZGlzY2Fy
ZF1dIF9TdHJpbmdfY29uc3RfaXRlcmF0b3I8X015c3RyPiBvcGVyYXRvcisoDQogICAgdHlwZW5h
bWUgX1N0cmluZ19jb25zdF9pdGVyYXRvcjxfTXlzdHI+OjpkaWZmZXJlbmNlX3R5cGUgX09mZiwg
X1N0cmluZ19jb25zdF9pdGVyYXRvcjxfTXlzdHI+IF9OZXh0KSB7DQogICAgcmV0dXJuIF9OZXh0
ICs9IF9PZmY7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDQxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9NeXN0
cj4NCmNsYXNzIF9TdHJpbmdfaXRlcmF0b3IgOiBwdWJsaWMgX1N0cmluZ19jb25zdF9pdGVyYXRv
cjxfTXlzdHI+IHsNCnB1YmxpYzoNCiAgICB1c2luZyBfTXliYXNlID0gX1N0cmluZ19jb25zdF9p
dGVyYXRvcjxfTXlzdHI+Ow0KDQoNCg0KDQogICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBy
YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9
IHR5cGVuYW1lIF9NeXN0cjo6dmFsdWVfdHlwZTsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUg
ICA9IHR5cGVuYW1lIF9NeXN0cjo6ZGlmZmVyZW5jZV90eXBlOw0KICAgIHVzaW5nIHBvaW50ZXIg
ICAgICAgICAgID0gdHlwZW5hbWUgX015c3RyOjpwb2ludGVyOw0KICAgIHVzaW5nIHJlZmVyZW5j
ZSAgICAgICAgID0gdmFsdWVfdHlwZSY7DQoNCiAgICB1c2luZyBfTXliYXNlOjpfTXliYXNlOw0K
DQogICAgW1tub2Rpc2NhcmRdXSByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qgew0KICAgICAg
ICByZXR1cm4gY29uc3RfY2FzdDxyZWZlcmVuY2U+KF9NeWJhc2U6Om9wZXJhdG9yKigpKTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsNCiAg
ICAgICAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzPHBvaW50ZXI+Ojpwb2ludGVyX3RvKCoqdGhpcyk7
DQogICAgfQ0KDQogICAgX1N0cmluZ19pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsNCiAgICAgICAg
X015YmFzZTo6b3BlcmF0b3IrKygpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQog
ICAgX1N0cmluZ19pdGVyYXRvciBvcGVyYXRvcisrKGludCkgew0KICAgICAgICBfU3RyaW5nX2l0
ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgX015YmFzZTo6b3BlcmF0b3IrKygpOw0KICAg
ICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICBfU3RyaW5nX2l0ZXJhdG9yJiBvcGVyYXRv
ci0tKCkgew0KICAgICAgICBfTXliYXNlOjpvcGVyYXRvci0tKCk7DQogICAgICAgIHJldHVybiAq
dGhpczsNCiAgICB9DQoNCiAgICBfU3RyaW5nX2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7DQog
ICAgICAgIF9TdHJpbmdfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICBfTXliYXNlOjpv
cGVyYXRvci0tKCk7DQogICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0NCg0KICAgIF9TdHJpbmdf
aXRlcmF0b3ImIG9wZXJhdG9yKz0oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIHsNCiAgICAg
ICAgX015YmFzZTo6b3BlcmF0b3IrPShfT2ZmKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gX1N0cmluZ19pdGVyYXRvciBvcGVyYXRvcisoY29uc3Qg
ZGlmZmVyZW5jZV90eXBlIF9PZmYpIGNvbnN0IHsNCiAgICAgICAgX1N0cmluZ19pdGVyYXRvciBf
VG1wID0gKnRoaXM7DQogICAgICAgIHJldHVybiBfVG1wICs9IF9PZmY7DQogICAgfQ0KDQogICAg
X1N0cmluZ19pdGVyYXRvciYgb3BlcmF0b3ItPShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikg
ew0KICAgICAgICBfTXliYXNlOjpvcGVyYXRvci09KF9PZmYpOw0KICAgICAgICByZXR1cm4gKnRo
aXM7DQogICAgfQ0KDQogICAgdXNpbmcgX015YmFzZTo6b3BlcmF0b3ItOw0KDQogICAgW1tub2Rp
c2NhcmRdXSBfU3RyaW5nX2l0ZXJhdG9yIG9wZXJhdG9yLShjb25zdCBkaWZmZXJlbmNlX3R5cGUg
X09mZikgY29uc3Qgew0KICAgICAgICBfU3RyaW5nX2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAg
ICAgICAgcmV0dXJuIF9UbXAgLT0gX09mZjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHJl
ZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCB7DQog
ICAgICAgIHJldHVybiBjb25zdF9jYXN0PHJlZmVyZW5jZT4oX015YmFzZTo6b3BlcmF0b3JbXShf
T2ZmKSk7DQogICAgfQ0KDQogICAgdXNpbmcgX1ByZXZlbnRfaW5oZXJpdGluZ191bndyYXAgPSBf
U3RyaW5nX2l0ZXJhdG9yOw0KDQogICAgW1tub2Rpc2NhcmRdXSB2YWx1ZV90eXBlKiBfVW53cmFw
cGVkKCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gY29uc3RfY2FzdDx2YWx1ZV90eXBlKj4oX1Vu
ZmFuY3kodGhpcy0+X1B0cikpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfTXlzdHI+
DQpbW25vZGlzY2FyZF1dIF9TdHJpbmdfaXRlcmF0b3I8X015c3RyPiBvcGVyYXRvcisoDQogICAg
dHlwZW5hbWUgX1N0cmluZ19pdGVyYXRvcjxfTXlzdHI+OjpkaWZmZXJlbmNlX3R5cGUgX09mZiwg
X1N0cmluZ19pdGVyYXRvcjxfTXlzdHI+IF9OZXh0KSB7DQogICAgcmV0dXJuIF9OZXh0ICs9IF9P
ZmY7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAyMTU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZV90eXBl
LCBjbGFzcyBfU2l6ZV90eXBlLCBjbGFzcyBfRGlmZmVyZW5jZV90eXBlLCBjbGFzcyBfUG9pbnRl
ciwgY2xhc3MgX0NvbnN0X3BvaW50ZXIsDQogICAgY2xhc3MgX1JlZmVyZW5jZSwgY2xhc3MgX0Nv
bnN0X3JlZmVyZW5jZT4NCnN0cnVjdCBfU3RyaW5nX2l0ZXJfdHlwZXMgew0KICAgIHVzaW5nIHZh
bHVlX3R5cGUgICAgICA9IF9WYWx1ZV90eXBlOw0KICAgIHVzaW5nIHNpemVfdHlwZSAgICAgICA9
IF9TaXplX3R5cGU7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gX0RpZmZlcmVuY2VfdHlw
ZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSBfUG9pbnRlcjsNCiAgICB1c2luZyBjb25z
dF9wb2ludGVyICAgPSBfQ29uc3RfcG9pbnRlcjsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9W
YWxfdHlwZXM+DQpjbGFzcyBfU3RyaW5nX3ZhbCA6IHB1YmxpYyBfQ29udGFpbmVyX2Jhc2Ugew0K
cHVibGljOg0KICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICA9IHR5cGVuYW1lIF9WYWxfdHlwZXM6
OnZhbHVlX3R5cGU7DQogICAgdXNpbmcgc2l6ZV90eXBlICAgICAgID0gdHlwZW5hbWUgX1ZhbF90
eXBlczo6c2l6ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIF9W
YWxfdHlwZXM6OmRpZmZlcmVuY2VfdHlwZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSB0
eXBlbmFtZSBfVmFsX3R5cGVzOjpwb2ludGVyOw0KICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgICA9
IHR5cGVuYW1lIF9WYWxfdHlwZXM6OmNvbnN0X3BvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNl
ICAgICAgID0gdmFsdWVfdHlwZSY7DQogICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3Qg
dmFsdWVfdHlwZSY7DQoNCiAgICBfU3RyaW5nX3ZhbCgpIDogX0J4KCksIF9NeXNpemUoMCksIF9N
eXJlcygwKSB7fQ0KDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgX0JVRl9T
SVpFID0gMTYgLyBzaXplb2YodmFsdWVfdHlwZSkgPCAxID8gMSA6IDE2IC8gc2l6ZW9mKHZhbHVl
X3R5cGUpOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90eXBlIF9BTExPQ19NQVNL
ID0NCiAgICAgICAgc2l6ZW9mKHZhbHVlX3R5cGUpIDw9IDENCiAgICAgICAgICAgID8gMTUNCiAg
ICAgICAgICAgIDogc2l6ZW9mKHZhbHVlX3R5cGUpIDw9IDIgPyA3IDogc2l6ZW9mKHZhbHVlX3R5
cGUpIDw9IDQgPyAzIDogc2l6ZW9mKHZhbHVlX3R5cGUpIDw9IDggPyAxIDogMDsNCg0KICAgIHZh
bHVlX3R5cGUqIF9NeXB0cigpIG5vZXhjZXB0IHsNCiAgICAgICAgdmFsdWVfdHlwZSogX1Jlc3Vs
dCA9IF9CeC5fQnVmOw0KICAgICAgICBpZiAoX0xhcmdlX3N0cmluZ19lbmdhZ2VkKCkpIHsNCiAg
ICAgICAgICAgIF9SZXN1bHQgPSBfVW5mYW5jeShfQnguX1B0cik7DQogICAgICAgIH0NCg0KICAg
ICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQoNCiAgICBjb25zdCB2YWx1ZV90eXBlKiBfTXlw
dHIoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqIF9SZXN1bHQg
PSBfQnguX0J1ZjsNCiAgICAgICAgaWYgKF9MYXJnZV9zdHJpbmdfZW5nYWdlZCgpKSB7DQogICAg
ICAgICAgICBfUmVzdWx0ID0gX1VuZmFuY3koX0J4Ll9QdHIpOw0KICAgICAgICB9DQoNCiAgICAg
ICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KDQogICAgYm9vbCBfTGFyZ2Vfc3RyaW5nX2VuZ2Fn
ZWQoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfQlVGX1NJWkUgPD0gX015cmVz
Ow0KICAgIH0NCg0KICAgIHZvaWQgX0NoZWNrX29mZnNldChjb25zdCBzaXplX3R5cGUgX09mZikg
Y29uc3QgeyANCiAgICAgICAgaWYgKF9NeXNpemUgPCBfT2ZmKSB7DQogICAgICAgICAgICBfWHJh
bigpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBfQ2hlY2tfb2Zmc2V0X2V4Y2x1c2l2
ZShjb25zdCBzaXplX3R5cGUgX09mZikgY29uc3QgeyANCiAgICAgICAgaWYgKF9NeXNpemUgPD0g
X09mZikgew0KICAgICAgICAgICAgX1hyYW4oKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIFtb
bm9yZXR1cm5dXSBzdGF0aWMgdm9pZCBfWHJhbigpIHsNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2Uo
ImludmFsaWQgc3RyaW5nIHBvc2l0aW9uIik7DQogICAgfQ0KDQogICAgc2l6ZV90eXBlIF9DbGFt
cF9zdWZmaXhfc2l6ZShjb25zdCBzaXplX3R5cGUgX09mZiwgY29uc3Qgc2l6ZV90eXBlIF9TaXpl
KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gKDo6c3RkOjogbWlu
KShfU2l6ZSwgX015c2l6ZSAtIF9PZmYpOw0KICAgIH0NCg0KICAgIHVuaW9uIF9CeHR5IHsgDQog
ICAgICAgIF9CeHR5KCkge30gDQoNCiAgICAgICAgfl9CeHR5KCkgbm9leGNlcHQge30gDQoNCiAg
ICAgICAgdmFsdWVfdHlwZSBfQnVmW19CVUZfU0laRV07DQogICAgICAgIHBvaW50ZXIgX1B0cjsN
CiAgICAgICAgY2hhciBfQWxpYXNbX0JVRl9TSVpFXTsgDQogICAgfSBfQng7DQoNCiAgICBzaXpl
X3R5cGUgX015c2l6ZTsgDQogICAgc2l6ZV90eXBlIF9NeXJlczsgDQp9Ow0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHk+DQpjb25zdGV4cHIgc2l6ZV90IF9TaXplX2FmdGVyX2ViY29fdiA9IGlzX2Vt
cHR5X3Y8X1R5PiA/IDAgOiBzaXplb2YoX1R5KTsgDQoNCnN0cnVjdCBfU3RyaW5nX2NvbnN0cnVj
dG9yX2NvbmNhdF90YWcgew0KICAgIA0KICAgIGV4cGxpY2l0IF9TdHJpbmdfY29uc3RydWN0b3Jf
Y29uY2F0X3RhZygpID0gZGVmYXVsdDsNCn07DQoNCltbbm9yZXR1cm5dXSBpbmxpbmUgdm9pZCBf
WGxlbl9zdHJpbmcoKSB7DQogICAgX1hsZW5ndGhfZXJyb3IoInN0cmluZyB0b28gbG9uZyIpOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxf
RWxlbT4sIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjxfRWxlbT4+DQpjbGFzcyBiYXNpY19zdHJp
bmcgeyANCnByaXZhdGU6DQogICAgZnJpZW5kIF9UaWR5X2RlYWxsb2NhdGVfZ3VhcmQ8YmFzaWNf
c3RyaW5nPjsNCg0KICAgIHVzaW5nIF9BbHR5ICAgICAgICA9IF9SZWJpbmRfYWxsb2NfdDxfQWxs
b2MsIF9FbGVtPjsNCiAgICB1c2luZyBfQWx0eV90cmFpdHMgPSBhbGxvY2F0b3JfdHJhaXRzPF9B
bHR5PjsNCg0KICAgIHVzaW5nIF9TY2FyeV92YWwgPSBfU3RyaW5nX3ZhbDxjb25kaXRpb25hbF90
PF9Jc19zaW1wbGVfYWxsb2NfdjxfQWx0eT4sIF9TaW1wbGVfdHlwZXM8X0VsZW0+LA0KICAgICAg
ICBfU3RyaW5nX2l0ZXJfdHlwZXM8X0VsZW0sIHR5cGVuYW1lIF9BbHR5X3RyYWl0czo6c2l6ZV90
eXBlLCB0eXBlbmFtZSBfQWx0eV90cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSwNCiAgICAgICAgICAg
IHR5cGVuYW1lIF9BbHR5X3RyYWl0czo6cG9pbnRlciwgdHlwZW5hbWUgX0FsdHlfdHJhaXRzOjpj
b25zdF9wb2ludGVyLCBfRWxlbSYsIGNvbnN0IF9FbGVtJj4+PjsNCg0KICAgIHN0YXRpY19hc3Nl
cnQoITEgfHwgaXNfc2FtZV92PF9FbGVtLCB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGU+LA0K
ICAgICAgICAiYmFzaWNfc3RyaW5nPFQsIFRyYWl0cywgQWxsb2NhdG9yPiIgIiByZXF1aXJlcyB0
aGF0IEFsbG9jYXRvcidzIHZhbHVlX3R5cGUgbWF0Y2ggIiAiVCIgIiAoU2VlIE40NjU5IDI2LjIu
MSBbY29udGFpbmVyLnJlcXVpcmVtZW50cy5nZW5lcmFsXS8xNiBhbGxvY2F0b3JfdHlwZSkiICIg
RWl0aGVyIGZpeCB0aGUgYWxsb2NhdG9yIHZhbHVlX3R5cGUgb3IgZGVmaW5lIF9FTkZPUkNFX01B
VENISU5HX0FMTE9DQVRPUlM9MCIgIiB0byBzdXBwcmVzcyB0aGlzIGRpYWdub3N0aWMuIik7DQoN
CiAgICBzdGF0aWNfYXNzZXJ0KGlzX3NhbWVfdjxfRWxlbSwgdHlwZW5hbWUgX1RyYWl0czo6Y2hh
cl90eXBlPiwNCiAgICAgICAgIk40NjU5IDI0LjMuMi4xIFtzdHJpbmcucmVxdWlyZV0vMyByZXF1
aXJlcyB0aGF0IHRoZSBzdXBwbGllZCAiDQogICAgICAgICJjaGFyX3RyYWl0cyBjaGFyYWN0ZXIg
dHlwZSBtYXRjaCB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVyIHR5cGUuIik7DQoNCnB1YmxpYzoNCiAg
ICB1c2luZyB0cmFpdHNfdHlwZSAgICA9IF9UcmFpdHM7DQogICAgdXNpbmcgYWxsb2NhdG9yX3R5
cGUgPSBfQWxsb2M7DQoNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgPSBfRWxlbTsNCiAgICB1
c2luZyBzaXplX3R5cGUgICAgICAgPSB0eXBlbmFtZSBfQWx0eV90cmFpdHM6OnNpemVfdHlwZTsN
CiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBfQWx0eV90cmFpdHM6OmRpZmZl
cmVuY2VfdHlwZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSB0eXBlbmFtZSBfQWx0eV90
cmFpdHM6OnBvaW50ZXI7DQogICAgdXNpbmcgY29uc3RfcG9pbnRlciAgID0gdHlwZW5hbWUgX0Fs
dHlfdHJhaXRzOjpjb25zdF9wb2ludGVyOw0KICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICA9IHZh
bHVlX3R5cGUmOw0KICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IHZhbHVlX3R5cGUm
Ow0KDQogICAgdXNpbmcgaXRlcmF0b3IgICAgICAgPSBfU3RyaW5nX2l0ZXJhdG9yPF9TY2FyeV92
YWw+Ow0KICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gX1N0cmluZ19jb25zdF9pdGVyYXRvcjxf
U2NhcnlfdmFsPjsNCg0KICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSA6OnN0ZDo6
IHJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+Ow0KICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IgPSA6OnN0ZDo6IHJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+Ow0KDQpwcml2
YXRlOg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBfQlVGX1NJWkUgICA9IF9TY2FyeV92YWw6
Ol9CVUZfU0laRTsNCiAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gX0FMTE9DX01BU0sgPSBfU2Nh
cnlfdmFsOjpfQUxMT0NfTUFTSzsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBfQ2Fu
X21lbWNweV92YWwgPSBfSXNfc3BlY2lhbGl6YXRpb25fdjxfVHJhaXRzLCBjaGFyX3RyYWl0cz4g
JiYgaXNfdHJpdmlhbF92PHBvaW50ZXI+Ow0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IF9NZW1jcHlfdmFsX29mZnNldCA9IF9TaXplX2FmdGVyX2ViY29fdjxfQ29udGFpbmVyX2Jh
c2U+Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IF9NZW1jcHlfdmFsX3NpemUgICA9IHNp
emVvZihfU2NhcnlfdmFsKSAtIF9NZW1jcHlfdmFsX29mZnNldDsNCg0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfSXRlcj4NCiAgICB1c2luZyBfSXNfZWxlbV9jcHRyID0gYm9vbF9jb25zdGFudDxfSXNf
YW55X29mX3Y8X0l0ZXIsIGNvbnN0IF9FbGVtKiBjb25zdCwgX0VsZW0qIGNvbnN0LCBjb25zdCBf
RWxlbSosIF9FbGVtKj4+Ow0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmluZ1ZpZXdJc2g+
DQogICAgdXNpbmcgX0lzX3N0cmluZ192aWV3X2lzaCA9DQogICAgICAgIGVuYWJsZV9pZl90PGNv
bmp1bmN0aW9uX3Y8aXNfY29udmVydGlibGU8Y29uc3QgX1N0cmluZ1ZpZXdJc2gmLCBiYXNpY19z
dHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4+LA0KICAgICAgICAgICAgICAgICAgICAgICAgbmVn
YXRpb248aXNfY29udmVydGlibGU8Y29uc3QgX1N0cmluZ1ZpZXdJc2gmLCBjb25zdCBfRWxlbSo+
Pj4sDQogICAgICAgICAgICBpbnQ+Ow0KI2xpbmUgMjMyOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQpwdWJsaWM6DQogICAgYmFz
aWNfc3RyaW5nKGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0KQ0KICAgICAgICA6IF9NeXBhaXIo
X09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCBfQWx0eV90cmFpdHM6OnNlbGVjdF9vbl9jb250
YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oX1JpZ2h0Ll9HZXRhbCgpKSkgew0KICAgICAgICBhdXRv
JiYgX0FscHJveHkgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94
eV9wdHI8X0FsdHk+IF9Qcm94eShfQWxwcm94eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAg
X0NvbnN0cnVjdF9sdl9jb250ZW50cyhfUmlnaHQpOw0KICAgICAgICBfUHJveHkuX1JlbGVhc2Uo
KTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfUmlnaHQs
IGNvbnN0IF9BbGxvYyYgX0FsKSA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9
LCBfQWwpIHsNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ID0gX0Zha2VfYWxsb2NhdG9yKCk7DQog
ICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbHR5PiBfUHJveHkoX0FscHJveHksIF9NeXBh
aXIuX015dmFsMik7DQogICAgICAgIF9Db25zdHJ1Y3RfbHZfY29udGVudHMoX1JpZ2h0KTsNCiAg
ICAgICAgX1Byb3h5Ll9SZWxlYXNlKCk7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nKCkgbm9l
eGNlcHQoaXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdGlibGVfdjxfQWx0eT4pIDogX015cGFp
cihfWmVyb190aGVuX3ZhcmlhZGljX2FyZ3NfdHt9KSB7DQogICAgICAgIF9NeXBhaXIuX015dmFs
Mi5fQWxsb2NfcHJveHkoX0Zha2VfYWxsb2NhdG9yKCkpOw0KICAgICAgICBfVGlkeV9pbml0KCk7
DQogICAgfQ0KDQogICAgZXhwbGljaXQgYmFzaWNfc3RyaW5nKGNvbnN0IF9BbGxvYyYgX0FsKSBu
b2V4Y2VwdCA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCBfQWwpIHsNCiAg
ICAgICAgX015cGFpci5fTXl2YWwyLl9BbGxvY19wcm94eShfRmFrZV9hbGxvY2F0b3IoKSk7DQog
ICAgICAgIF9UaWR5X2luaXQoKTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmcoY29uc3QgYmFz
aWNfc3RyaW5nJiBfUmlnaHQsIGNvbnN0IHNpemVfdHlwZSBfUm9mZiwgY29uc3QgX0FsbG9jJiBf
QWwgPSBfQWxsb2MoKSkNCiAgICAgICAgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdz
X3R7fSwgX0FsKSB7IA0KICAgICAgICBhdXRvJiYgX0FscHJveHkgPSBfRmFrZV9hbGxvY2F0b3Io
KTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfQWxwcm94eSwg
X015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX1RpZHlfaW5pdCgpOw0KICAgICAgICBhc3NpZ24o
X1JpZ2h0LCBfUm9mZiwgbnBvcyk7DQogICAgICAgIF9Qcm94eS5fUmVsZWFzZSgpOw0KICAgIH0N
Cg0KICAgIGJhc2ljX3N0cmluZygNCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nJiBfUmlnaHQs
IGNvbnN0IHNpemVfdHlwZSBfUm9mZiwgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCwgY29uc3QgX0Fs
bG9jJiBfQWwgPSBfQWxsb2MoKSkNCiAgICAgICAgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRp
Y19hcmdzX3R7fSwgX0FsKSB7IA0KICAgICAgICBhdXRvJiYgX0FscHJveHkgPSBfRmFrZV9hbGxv
Y2F0b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfQWxw
cm94eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX1RpZHlfaW5pdCgpOw0KICAgICAgICBh
c3NpZ24oX1JpZ2h0LCBfUm9mZiwgX0NvdW50KTsNCiAgICAgICAgX1Byb3h5Ll9SZWxlYXNlKCk7
DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nKCAgY29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsICBj
b25zdCBzaXplX3R5cGUgX0NvdW50KQ0KICAgICAgICA6IF9NeXBhaXIoX1plcm9fdGhlbl92YXJp
YWRpY19hcmdzX3R7fSkgew0KICAgICAgICBhdXRvJiYgX0FscHJveHkgPSBfRmFrZV9hbGxvY2F0
b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfQWxwcm94
eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX1RpZHlfaW5pdCgpOw0KICAgICAgICBhc3Np
Z24oX1B0ciwgX0NvdW50KTsNCiAgICAgICAgX1Byb3h5Ll9SZWxlYXNlKCk7DQogICAgfQ0KDQog
ICAgYmFzaWNfc3RyaW5nKA0KICAgICAgICAgIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyLCAgY29u
c3Qgc2l6ZV90eXBlIF9Db3VudCwgY29uc3QgX0FsbG9jJiBfQWwpDQogICAgICAgIDogX015cGFp
cihfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9BbCkgew0KICAgICAgICBhdXRvJiYgX0Fs
cHJveHkgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8
X0FsdHk+IF9Qcm94eShfQWxwcm94eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX1RpZHlf
aW5pdCgpOw0KICAgICAgICBhc3NpZ24oX1B0ciwgX0NvdW50KTsNCiAgICAgICAgX1Byb3h5Ll9S
ZWxlYXNlKCk7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nKCAgY29uc3QgX0VsZW0qIGNvbnN0
IF9QdHIpIDogX015cGFpcihfWmVyb190aGVuX3ZhcmlhZGljX2FyZ3NfdHt9KSB7DQogICAgICAg
IGF1dG8mJiBfQWxwcm94eSA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICBfQ29udGFpbmVy
X3Byb3h5X3B0cjxfQWx0eT4gX1Byb3h5KF9BbHByb3h5LCBfTXlwYWlyLl9NeXZhbDIpOw0KICAg
ICAgICBfVGlkeV9pbml0KCk7DQogICAgICAgIGFzc2lnbihfUHRyKTsNCiAgICAgICAgX1Byb3h5
Ll9SZWxlYXNlKCk7DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jMiA9IF9B
bGxvYywgZW5hYmxlX2lmX3Q8X0lzX2FsbG9jYXRvcjxfQWxsb2MyPjo6dmFsdWUsIGludD4gPSAw
Pg0KI2xpbmUgMjQwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx4c3RyaW5nIg0KICAgIGJhc2ljX3N0cmluZyggIGNvbnN0IF9FbGVtKiBjb25zdCBf
UHRyLCBjb25zdCBfQWxsb2MmIF9BbCkgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdz
X3R7fSwgX0FsKSB7DQogICAgICAgIGF1dG8mJiBfQWxwcm94eSA9IF9GYWtlX2FsbG9jYXRvcigp
Ow0KICAgICAgICBfQ29udGFpbmVyX3Byb3h5X3B0cjxfQWx0eT4gX1Byb3h5KF9BbHByb3h5LCBf
TXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBfVGlkeV9pbml0KCk7DQogICAgICAgIGFzc2lnbihf
UHRyKTsNCiAgICAgICAgX1Byb3h5Ll9SZWxlYXNlKCk7DQogICAgfQ0KDQogICAgYmFzaWNfc3Ry
aW5nKCBjb25zdCBzaXplX3R5cGUgX0NvdW50LCBjb25zdCBfRWxlbSBfQ2gpIDogX015cGFpcihf
WmVyb190aGVuX3ZhcmlhZGljX2FyZ3NfdHt9KSB7DQogICAgICAgIA0KICAgICAgICBhdXRvJiYg
X0FscHJveHkgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9w
dHI8X0FsdHk+IF9Qcm94eShfQWxwcm94eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX1Rp
ZHlfaW5pdCgpOw0KICAgICAgICBhc3NpZ24oX0NvdW50LCBfQ2gpOw0KICAgICAgICBfUHJveHku
X1JlbGVhc2UoKTsNCiAgICB9DQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQWxsb2MyID0gX0Fs
bG9jLCBlbmFibGVfaWZfdDxfSXNfYWxsb2NhdG9yPF9BbGxvYzI+Ojp2YWx1ZSwgaW50PiA9IDA+
DQojbGluZSAyNDI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHhzdHJpbmciDQogICAgYmFzaWNfc3RyaW5nKCBjb25zdCBzaXplX3R5cGUgX0NvdW50
LCBjb25zdCBfRWxlbSBfQ2gsIGNvbnN0IF9BbGxvYyYgX0FsKQ0KICAgICAgICA6IF9NeXBhaXIo
X09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCBfQWwpIHsgDQogICAgICAgIGF1dG8mJiBfQWxw
cm94eSA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICBfQ29udGFpbmVyX3Byb3h5X3B0cjxf
QWx0eT4gX1Byb3h5KF9BbHByb3h5LCBfTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBfVGlkeV9p
bml0KCk7DQogICAgICAgIGFzc2lnbihfQ291bnQsIF9DaCk7DQogICAgICAgIF9Qcm94eS5fUmVs
ZWFzZSgpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlciwgZW5hYmxlX2lmX3Q8
X0lzX2l0ZXJhdG9yX3Y8X0l0ZXI+LCBpbnQ+ID0gMD4NCiAgICBiYXNpY19zdHJpbmcoX0l0ZXIg
X0ZpcnN0LCBfSXRlciBfTGFzdCwgY29uc3QgX0FsbG9jJiBfQWwgPSBfQWxsb2MoKSkgOiBfTXlw
YWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3R7fSwgX0FsKSB7DQogICAgICAgIGF1dG8mJiBf
QWxwcm94eSA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICBfQ29udGFpbmVyX3Byb3h5X3B0
cjxfQWx0eT4gX1Byb3h5KF9BbHByb3h5LCBfTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBfVGlk
eV9pbml0KCk7DQogICAgICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAg
ICAgICBfQ29uc3RydWN0KF9HZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53cmFwcGVkKF9M
YXN0KSwgX0l0ZXJfY2F0X3Q8X0l0ZXI+e30pOw0KICAgICAgICBfUHJveHkuX1JlbGVhc2UoKTsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdm9pZCBfQ29uc3RydWN0
KF9JdGVyIF9GaXJzdCwgY29uc3QgX0l0ZXIgX0xhc3QsIGlucHV0X2l0ZXJhdG9yX3RhZykgew0K
ICAgICAgICANCiAgICAgICAgX1RpZHlfZGVhbGxvY2F0ZV9ndWFyZDxiYXNpY19zdHJpbmc+IF9H
dWFyZHt0aGlzfTsNCiAgICAgICAgZm9yICg7IF9GaXJzdCAhPSBfTGFzdDsgKytfRmlyc3QpIHsN
CiAgICAgICAgICAgIHB1c2hfYmFjaygqX0ZpcnN0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9H
dWFyZC5fVGFyZ2V0ID0gbnVsbHB0cjsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0
ZXI+DQogICAgdm9pZCBfQ29uc3RydWN0KGNvbnN0IF9JdGVyIF9GaXJzdCwgY29uc3QgX0l0ZXIg
X0xhc3QsIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7DQogICAgICAgIA0KICAgICAgICBjb25zdCBz
aXplX3R5cGUgX0NvdW50ID0gX0NvbnZlcnRfc2l6ZTxzaXplX3R5cGU+KHN0YXRpY19jYXN0PHNp
emVfdD4oOjpzdGQ6OiBkaXN0YW5jZShfRmlyc3QsIF9MYXN0KSkpOw0KICAgICAgICByZXNlcnZl
KF9Db3VudCk7DQogICAgICAgIF9Db25zdHJ1Y3QoX0ZpcnN0LCBfTGFzdCwgaW5wdXRfaXRlcmF0
b3JfdGFne30pOw0KICAgIH0NCg0KICAgIHZvaWQgX0NvbnN0cnVjdChfRWxlbSogY29uc3QgX0Zp
cnN0LCBfRWxlbSogY29uc3QgX0xhc3QsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7DQog
ICAgICAgIA0KICAgICAgICBpZiAoX0ZpcnN0ICE9IF9MYXN0KSB7DQogICAgICAgICAgICBhc3Np
Z24oX0ZpcnN0LCBfQ29udmVydF9zaXplPHNpemVfdHlwZT4oc3RhdGljX2Nhc3Q8c2l6ZV90Pihf
TGFzdCAtIF9GaXJzdCkpKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgX0NvbnN0cnVj
dChjb25zdCBfRWxlbSogY29uc3QgX0ZpcnN0LCBjb25zdCBfRWxlbSogY29uc3QgX0xhc3QsIHJh
bmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7DQogICAgICAgIA0KICAgICAgICBpZiAoX0ZpcnN0
ICE9IF9MYXN0KSB7DQogICAgICAgICAgICBhc3NpZ24oX0ZpcnN0LCBfQ29udmVydF9zaXplPHNp
emVfdHlwZT4oc3RhdGljX2Nhc3Q8c2l6ZV90PihfTGFzdCAtIF9GaXJzdCkpKTsNCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIGJhc2ljX3N0cmluZyhiYXNpY19zdHJpbmcmJiBfUmlnaHQpIG5vZXhj
ZXB0IDogX015cGFpcihfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIDo6c3RkOjogbW92ZShf
UmlnaHQuX0dldGFsKCkpKSB7DQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fQWxsb2NfcHJveHko
X0Zha2VfYWxsb2NhdG9yKCkpOw0KICAgICAgICBfVGFrZV9jb250ZW50cyhfUmlnaHQsIGJvb2xf
Y29uc3RhbnQ8X0Nhbl9tZW1jcHlfdmFsPnt9KTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmco
YmFzaWNfc3RyaW5nJiYgX1JpZ2h0LCBjb25zdCBfQWxsb2MmIF9BbCkgbm9leGNlcHQoDQogICAg
ICAgIF9BbHR5X3RyYWl0czo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1ZSkgDQogICAgICAgIDogX015
cGFpcihfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9BbCkgew0KICAgICAgICBhdXRvJiYg
X0FscHJveHkgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9w
dHI8X0FsdHk+IF9Qcm94eShfQWxwcm94eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgaWYg
Y29uc3RleHByICghX0FsdHlfdHJhaXRzOjppc19hbHdheXNfZXF1YWw6OnZhbHVlKSB7DQogICAg
ICAgICAgICBpZiAoX0dldGFsKCkgIT0gX1JpZ2h0Ll9HZXRhbCgpKSB7DQogICAgICAgICAgICAg
ICAgX0NvbnN0cnVjdF9sdl9jb250ZW50cyhfUmlnaHQpOw0KICAgICAgICAgICAgICAgIF9Qcm94
eS5fUmVsZWFzZSgpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KDQogICAgICAgIF9UYWtlX2NvbnRlbnRzKF9SaWdodCwgYm9vbF9jb25zdGFudDxf
Q2FuX21lbWNweV92YWw+e30pOw0KICAgICAgICBfUHJveHkuX1JlbGVhc2UoKTsNCiAgICB9DQoN
CiAgICBiYXNpY19zdHJpbmcoX1N0cmluZ19jb25zdHJ1Y3Rvcl9jb25jYXRfdGFnLCBjb25zdCBi
YXNpY19zdHJpbmcmIF9Tb3VyY2Vfb2ZfYWwsIGNvbnN0IF9FbGVtKiBjb25zdCBfTGVmdF9wdHIs
DQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfTGVmdF9zaXplLCBjb25zdCBfRWxlbSogY29uc3Qg
X1JpZ2h0X3B0ciwgY29uc3Qgc2l6ZV90eXBlIF9SaWdodF9zaXplKQ0KICAgICAgICA6IF9NeXBh
aXIoDQogICAgICAgICAgICBfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9BbHR5X3RyYWl0
czo6c2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbihfU291cmNlX29mX2FsLl9H
ZXRhbCgpKSkgew0KICAgICAgICA7DQogICAgICAgIDsNCiAgICAgICAgOw0KICAgICAgICBjb25z
dCBhdXRvIF9OZXdfc2l6ZSAgICA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX0xlZnRfc2l6ZSAr
IF9SaWdodF9zaXplKTsNCiAgICAgICAgc2l6ZV90eXBlIF9OZXdfY2FwYWNpdHkgPSBfQlVGX1NJ
WkUgLSAxOw0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgICA9IF9NeXBhaXIuX015dmFs
MjsNCiAgICAgICAgX0VsZW0qIF9QdHIgICAgICAgICAgICAgPSBfTXlfZGF0YS5fQnguX0J1ZjsN
CiAgICAgICAgYXV0byYmIF9BbHByb3h5ICAgICAgICAgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAg
ICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfQWxwcm94eSwgX015X2Rh
dGEpOyANCiAgICAgICAgaWYgKF9OZXdfY2FwYWNpdHkgPCBfTmV3X3NpemUpIHsNCiAgICAgICAg
ICAgIF9OZXdfY2FwYWNpdHkgICAgICAgICAgID0gX0NhbGN1bGF0ZV9ncm93dGgoX05ld19zaXpl
LCBfQlVGX1NJWkUgLSAxLCBtYXhfc2l6ZSgpKTsNCiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIg
X0ZhbmN5cHRyID0gX0dldGFsKCkuYWxsb2NhdGUoX05ld19jYXBhY2l0eSArIDEpOyANCiAgICAg
ICAgICAgIF9QdHIgICAgICAgICAgICAgICAgICAgID0gX1VuZmFuY3koX0ZhbmN5cHRyKTsNCiAg
ICAgICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX015X2RhdGEuX0J4Ll9QdHIsIF9GYW5jeXB0
cik7DQogICAgICAgIH0NCg0KICAgICAgICBfTXlfZGF0YS5fTXlzaXplID0gX05ld19zaXplOw0K
ICAgICAgICBfTXlfZGF0YS5fTXlyZXMgID0gX05ld19jYXBhY2l0eTsNCiAgICAgICAgX1RyYWl0
czo6Y29weShfUHRyLCBfTGVmdF9wdHIsIF9MZWZ0X3NpemUpOw0KICAgICAgICBfVHJhaXRzOjpj
b3B5KF9QdHIgKyBzdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KF9MZWZ0X3NpemUpLCBfUmlnaHRfcHRy
LCBfUmlnaHRfc2l6ZSk7DQogICAgICAgIF9UcmFpdHM6OmFzc2lnbihfUHRyW19OZXdfc2l6ZV0s
IF9FbGVtKCkpOw0KICAgICAgICBfUHJveHkuX1JlbGVhc2UoKTsNCiAgICB9DQoNCiAgICBiYXNp
Y19zdHJpbmcoX1N0cmluZ19jb25zdHJ1Y3Rvcl9jb25jYXRfdGFnLCBiYXNpY19zdHJpbmcmIF9M
ZWZ0LCBiYXNpY19zdHJpbmcmIF9SaWdodCkNCiAgICAgICAgOiBfTXlwYWlyKF9PbmVfdGhlbl92
YXJpYWRpY19hcmdzX3R7fSwgX0xlZnQuX0dldGFsKCkpIHsNCiAgICAgICAgYXV0byYgX015X2Rh
dGEgICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIGF1dG8mIF9MZWZ0X2RhdGEgID0gX0xl
ZnQuX015cGFpci5fTXl2YWwyOw0KICAgICAgICBhdXRvJiBfUmlnaHRfZGF0YSA9IF9SaWdodC5f
TXlwYWlyLl9NeXZhbDI7DQogICAgICAgIF9MZWZ0X2RhdGEuX09ycGhhbl9hbGwoKTsNCiAgICAg
ICAgX1JpZ2h0X2RhdGEuX09ycGhhbl9hbGwoKTsNCiAgICAgICAgY29uc3QgYXV0byBfTGVmdF9z
aXplICA9IF9MZWZ0X2RhdGEuX015c2l6ZTsNCiAgICAgICAgY29uc3QgYXV0byBfUmlnaHRfc2l6
ZSA9IF9SaWdodF9kYXRhLl9NeXNpemU7DQoNCiAgICAgICAgY29uc3QgYXV0byBfTGVmdF9jYXBh
Y2l0eSAgPSBfTGVmdF9kYXRhLl9NeXJlczsNCiAgICAgICAgY29uc3QgYXV0byBfUmlnaHRfY2Fw
YWNpdHkgPSBfUmlnaHRfZGF0YS5fTXlyZXM7DQogICAgICAgIA0KICAgICAgICBjb25zdCBhdXRv
IF9OZXdfc2l6ZSAgICAgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9MZWZ0X3NpemUgKyBfUmln
aHRfc2l6ZSk7DQogICAgICAgIGNvbnN0IGJvb2wgX0ZpdHNfaW5fbGVmdCA9IF9SaWdodF9zaXpl
IDw9IF9MZWZ0X2NhcGFjaXR5IC0gX0xlZnRfc2l6ZTsNCiAgICAgICAgaWYgKF9GaXRzX2luX2xl
ZnQgJiYgX1JpZ2h0X2NhcGFjaXR5IDw9IF9MZWZ0X2NhcGFjaXR5KSB7DQogICAgICAgICAgICAN
CiAgICAgICAgICAgIF9NeV9kYXRhLl9BbGxvY19wcm94eShfRmFrZV9hbGxvY2F0b3IoKSk7IA0K
ICAgICAgICAgICAgX1Rha2VfY29udGVudHMoX0xlZnQsIGJvb2xfY29uc3RhbnQ8X0Nhbl9tZW1j
cHlfdmFsPnt9KTsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX1B0ciA9IF9NeV9kYXRhLl9NeXB0
cigpOw0KICAgICAgICAgICAgX1RyYWl0czo6Y29weShfUHRyICsgX0xlZnRfc2l6ZSwgX1JpZ2h0
X2RhdGEuX015cHRyKCksIF9SaWdodF9zaXplICsgMSk7DQogICAgICAgICAgICBfTXlfZGF0YS5f
TXlzaXplID0gX05ld19zaXplOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAg
ICAgICAgY29uc3QgYm9vbCBfRml0c19pbl9yaWdodCA9IF9MZWZ0X3NpemUgPD0gX1JpZ2h0X2Nh
cGFjaXR5IC0gX1JpZ2h0X3NpemU7DQogICAgICAgIGlmIChfQWxsb2NhdG9yc19lcXVhbChfR2V0
YWwoKSwgX1JpZ2h0Ll9HZXRhbCgpKSAmJiBfRml0c19pbl9yaWdodCkgew0KICAgICAgICAgICAg
DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgOw0KICAgICAgICAgICAgX015X2RhdGEuX0FsbG9jX3Byb3h5KF9GYWtlX2Fs
bG9jYXRvcigpKTsgDQogICAgICAgICAgICBfVGFrZV9jb250ZW50cyhfUmlnaHQsIGJvb2xfY29u
c3RhbnQ8X0Nhbl9tZW1jcHlfdmFsPnt9KTsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX1B0ciA9
IF9VbmZhbmN5KF9NeV9kYXRhLl9CeC5fUHRyKTsNCiAgICAgICAgICAgIF9UcmFpdHM6Om1vdmUo
X1B0ciArIF9MZWZ0X3NpemUsIF9QdHIsIF9SaWdodF9zaXplICsgMSk7DQogICAgICAgICAgICBf
VHJhaXRzOjpjb3B5KF9QdHIsIF9MZWZ0X2RhdGEuX015cHRyKCksIF9MZWZ0X3NpemUpOw0KICAg
ICAgICAgICAgX015X2RhdGEuX015c2l6ZSA9IF9OZXdfc2l6ZTsNCiAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KDQogICAgICAgIA0KICAgICAgICBjb25zdCBhdXRvIF9NYXggPSBtYXhf
c2l6ZSgpOw0KICAgICAgICBpZiAoX01heCAtIF9MZWZ0X3NpemUgPCBfUmlnaHRfc2l6ZSkgeyAN
CiAgICAgICAgICAgIF9YbGVuX3N0cmluZygpOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3Qg
YXV0byBfTmV3X2NhcGFjaXR5ID0gX0NhbGN1bGF0ZV9ncm93dGgoX05ld19zaXplLCBfQlVGX1NJ
WkUgLSAxLCBfTWF4KTsNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ICAgICAgICAgID0gX0Zha2Vf
YWxsb2NhdG9yKCk7DQogICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbHR5PiBfUHJveHko
X0FscHJveHksIF9NeV9kYXRhKTsgDQogICAgICAgIGNvbnN0IHBvaW50ZXIgX0ZhbmN5cHRyID0g
X0dldGFsKCkuYWxsb2NhdGUoX05ld19jYXBhY2l0eSArIDEpOyANCiAgICAgICAgDQogICAgICAg
IF9Db25zdHJ1Y3RfaW5fcGxhY2UoX015X2RhdGEuX0J4Ll9QdHIsIF9GYW5jeXB0cik7DQogICAg
ICAgIF9NeV9kYXRhLl9NeXNpemUgPSBfTmV3X3NpemU7DQogICAgICAgIF9NeV9kYXRhLl9NeXJl
cyAgPSBfTmV3X2NhcGFjaXR5Ow0KICAgICAgICBjb25zdCBhdXRvIF9QdHIgID0gX1VuZmFuY3ko
X0ZhbmN5cHRyKTsNCiAgICAgICAgX1RyYWl0czo6Y29weShfUHRyLCBfTGVmdF9kYXRhLl9NeXB0
cigpLCBfTGVmdF9zaXplKTsNCiAgICAgICAgX1RyYWl0czo6Y29weShfUHRyICsgX0xlZnRfc2l6
ZSwgX1JpZ2h0X2RhdGEuX015cHRyKCksIF9SaWdodF9zaXplICsgMSk7DQogICAgICAgIF9Qcm94
eS5fUmVsZWFzZSgpOw0KICAgIH0NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9TdHJpbmdWaWV3
SXNoLCBfSXNfc3RyaW5nX3ZpZXdfaXNoPF9TdHJpbmdWaWV3SXNoPiA9IDA+DQogICAgZXhwbGlj
aXQgYmFzaWNfc3RyaW5nKGNvbnN0IF9TdHJpbmdWaWV3SXNoJiBfUmlnaHQsIGNvbnN0IF9BbGxv
YyYgX0FsID0gX0FsbG9jKCkpDQogICAgICAgIDogX015cGFpcihfT25lX3RoZW5fdmFyaWFkaWNf
YXJnc190e30sIF9BbCkgew0KICAgICAgICBhdXRvJiYgX0FscHJveHkgPSBfRmFrZV9hbGxvY2F0
b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfQWxwcm94
eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX1RpZHlfaW5pdCgpOw0KICAgICAgICBhc3Np
Z24oX1JpZ2h0KTsNCiAgICAgICAgX1Byb3h5Ll9SZWxlYXNlKCk7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPGNsYXNzIF9TdHJpbmdWaWV3SXNoLCBfSXNfc3RyaW5nX3ZpZXdfaXNoPF9TdHJpbmdW
aWV3SXNoPiA9IDA+DQogICAgYmFzaWNfc3RyaW5nKA0KICAgICAgICBjb25zdCBfU3RyaW5nVmll
d0lzaCYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX1JvZmYsIGNvbnN0IHNpemVfdHlwZSBfQ291
bnQsIGNvbnN0IF9BbGxvYyYgX0FsID0gX0FsbG9jKCkpDQogICAgICAgIDogX015cGFpcihfT25l
X3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9BbCkgeyANCiAgICAgICAgYXV0byYmIF9BbHByb3h5
ID0gX0Zha2VfYWxsb2NhdG9yKCk7DQogICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbHR5
PiBfUHJveHkoX0FscHJveHksIF9NeXBhaXIuX015dmFsMik7DQogICAgICAgIF9UaWR5X2luaXQo
KTsNCiAgICAgICAgYXNzaWduKF9SaWdodCwgX1JvZmYsIF9Db3VudCk7DQogICAgICAgIF9Qcm94
eS5fUmVsZWFzZSgpOw0KICAgIH0NCiNsaW5lIDI2MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KcHJpdmF0ZToNCiAgICB2b2lk
IF9Nb3ZlX2Fzc2lnbihiYXNpY19zdHJpbmcmIF9SaWdodCwgX0VxdWFsX2FsbG9jYXRvcnMpIG5v
ZXhjZXB0IHsNCiAgICAgICAgX1RpZHlfZGVhbGxvY2F0ZSgpOw0KICAgICAgICBfUG9jbWEoX0dl
dGFsKCksIF9SaWdodC5fR2V0YWwoKSk7DQogICAgICAgIF9UYWtlX2NvbnRlbnRzKF9SaWdodCwg
Ym9vbF9jb25zdGFudDxfQ2FuX21lbWNweV92YWw+e30pOw0KICAgIH0NCg0KICAgIHZvaWQgX01v
dmVfYXNzaWduKGJhc2ljX3N0cmluZyYgX1JpZ2h0LCBfUHJvcGFnYXRlX2FsbG9jYXRvcnMpIG5v
ZXhjZXB0IHsNCiAgICAgICAgaWYgKF9HZXRhbCgpID09IF9SaWdodC5fR2V0YWwoKSkgew0KICAg
ICAgICAgICAgX01vdmVfYXNzaWduKF9SaWdodCwgX0VxdWFsX2FsbG9jYXRvcnN7fSk7DQogICAg
ICAgIH0gZWxzZSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5f
T3JwaGFuX2FsbCgpOw0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9SZWxvYWRfcHJveHko
DQogICAgICAgICAgICAgICAgX0Zha2VfYWxsb2NhdG9yKCksIF9GYWtlX2FsbG9jYXRvcigpKTsN
CiAgICAgICAgICAgIF9Qb2NtYShfR2V0YWwoKSwgX1JpZ2h0Ll9HZXRhbCgpKTsNCiAgICAgICAg
ICAgIF9UYWtlX2NvbnRlbnRzKF9SaWdodCwgYm9vbF9jb25zdGFudDxfQ2FuX21lbWNweV92YWw+
e30pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBfTW92ZV9hc3NpZ24oYmFzaWNfc3Ry
aW5nJiBfUmlnaHQsIF9Ob19wcm9wYWdhdGVfYWxsb2NhdG9ycykgew0KICAgICAgICBpZiAoX0dl
dGFsKCkgPT0gX1JpZ2h0Ll9HZXRhbCgpKSB7DQogICAgICAgICAgICBfTW92ZV9hc3NpZ24oX1Jp
Z2h0LCBfRXF1YWxfYWxsb2NhdG9yc3t9KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAg
IGFzc2lnbihfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfUmlnaHQuX015cGFpci5f
TXl2YWwyLl9NeXNpemUpOw0KICAgICAgICB9DQogICAgfQ0KDQpwdWJsaWM6DQogICAgYmFzaWNf
c3RyaW5nJiBvcGVyYXRvcj0oYmFzaWNfc3RyaW5nJiYgX1JpZ2h0KSBub2V4Y2VwdChub2V4Y2Vw
dChfTW92ZV9hc3NpZ24oX1JpZ2h0LCBfQ2hvb3NlX3BvY21hPF9BbHR5Pnt9KSkpIHsNCiAgICAg
ICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0KSkgew0KICAgICAgICAgICAg
X01vdmVfYXNzaWduKF9SaWdodCwgX0Nob29zZV9wb2NtYTxfQWx0eT57fSk7DQogICAgICAgIH0N
Cg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nJiBhc3Np
Z24oYmFzaWNfc3RyaW5nJiYgX1JpZ2h0KSBub2V4Y2VwdChub2V4Y2VwdCgqdGhpcyA9IDo6c3Rk
OjogbW92ZShfUmlnaHQpKSkgew0KICAgICAgICAqdGhpcyA9IDo6c3RkOjogbW92ZShfUmlnaHQp
Ow0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHZvaWQgX01l
bWNweV92YWxfZnJvbShjb25zdCBiYXNpY19zdHJpbmcmIF9SaWdodCkgbm9leGNlcHQgew0KICAg
ICAgICA7IA0KICAgICAgICBjb25zdCBhdXRvIF9NeV9kYXRhX21lbSA9DQogICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPig6OnN0ZDo6IGFkZHJlc3NvZihfTXlwYWly
Ll9NeXZhbDIpKSArIF9NZW1jcHlfdmFsX29mZnNldDsNCiAgICAgICAgY29uc3QgYXV0byBfUmln
aHRfZGF0YV9tZW0gPQ0KICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oOjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0Ll9NeXBhaXIuX015dmFsMikpICsgX01l
bWNweV92YWxfb2Zmc2V0Ow0KICAgICAgICA6OiBtZW1jcHkoX015X2RhdGFfbWVtLCBfUmlnaHRf
ZGF0YV9tZW0sIF9NZW1jcHlfdmFsX3NpemUpOw0KICAgIH0NCg0KICAgIHZvaWQgX1Rha2VfY29u
dGVudHMoYmFzaWNfc3RyaW5nJiBfUmlnaHQsIHRydWVfdHlwZSkgbm9leGNlcHQgew0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDI2ODEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxceHN0cmluZyINCg0KICAgICAgICBfTWVtY3B5X3ZhbF9mcm9tKF9SaWdodCk7DQogICAg
ICAgIF9SaWdodC5fVGlkeV9pbml0KCk7DQogICAgfQ0KDQogICAgdm9pZCBfVGFrZV9jb250ZW50
cyhiYXNpY19zdHJpbmcmIF9SaWdodCwgZmFsc2VfdHlwZSkgbm9leGNlcHQgew0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIGF1dG8mIF9N
eV9kYXRhICAgID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICBhdXRvJiBfUmlnaHRfZGF0YSA9
IF9SaWdodC5fTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIGlmIChfUmlnaHRfZGF0YS5fTGFyZ2Vf
c3RyaW5nX2VuZ2FnZWQoKSkgeyANCiAgICAgICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX015
X2RhdGEuX0J4Ll9QdHIsIF9SaWdodF9kYXRhLl9CeC5fUHRyKTsNCiAgICAgICAgICAgIF9SaWdo
dF9kYXRhLl9CeC5fUHRyID0gcG9pbnRlcigpOw0KICAgICAgICAgICAgX1N3YXBfcHJveHlfYW5k
X2l0ZXJhdG9ycyhfUmlnaHQpOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIF9UcmFp
dHM6OmNvcHkoX015X2RhdGEuX0J4Ll9CdWYsIF9SaWdodF9kYXRhLl9CeC5fQnVmLCBfUmlnaHRf
ZGF0YS5fTXlzaXplICsgMSk7DQogICAgICAgICAgICBfUmlnaHRfZGF0YS5fT3JwaGFuX2FsbCgp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgX015X2RhdGEuX015c2l6ZSA9IF9SaWdodF9kYXRhLl9N
eXNpemU7DQogICAgICAgIF9NeV9kYXRhLl9NeXJlcyAgPSBfUmlnaHRfZGF0YS5fTXlyZXM7DQog
ICAgICAgIF9SaWdodC5fVGlkeV9pbml0KCk7DQogICAgfQ0KDQogICAgdm9pZCBfQ29uc3RydWN0
X2x2X2NvbnRlbnRzKGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0KSB7DQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBhdXRvJiBfUmlnaHRfZGF0YSAgICAg
ICAgICAgICA9IF9SaWdodC5fTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIGNvbnN0IHNpemVfdHlw
ZSBfUmlnaHRfc2l6ZSAgID0gX1JpZ2h0X2RhdGEuX015c2l6ZTsNCiAgICAgICAgY29uc3QgX0Vs
ZW0qIGNvbnN0IF9SaWdodF9wdHIgPSBfUmlnaHRfZGF0YS5fTXlwdHIoKTsNCiAgICAgICAgYXV0
byYgX015X2RhdGEgICAgICAgICAgICAgICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIGlm
IChfUmlnaHRfc2l6ZSA8IF9CVUZfU0laRSkgeyANCiAgICAgICAgICAgIF9UcmFpdHM6OmNvcHko
X015X2RhdGEuX0J4Ll9CdWYsIF9SaWdodF9wdHIsIF9CVUZfU0laRSk7DQogICAgICAgICAgICBf
TXlfZGF0YS5fTXlzaXplID0gX1JpZ2h0X3NpemU7DQogICAgICAgICAgICBfTXlfZGF0YS5fTXly
ZXMgID0gX0JVRl9TSVpFIC0gMTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQog
ICAgICAgIGF1dG8mIF9BbCAgICAgICAgICAgICAgICAgICAgID0gX0dldGFsKCk7DQogICAgICAg
IGNvbnN0IHNpemVfdHlwZSBfTmV3X2NhcGFjaXR5ID0gKDo6c3RkOjogbWluKShfUmlnaHRfc2l6
ZSB8IF9BTExPQ19NQVNLLCBtYXhfc2l6ZSgpKTsNCiAgICAgICAgY29uc3QgcG9pbnRlciBfTmV3
X2FycmF5ICAgICAgPSBfQWwuYWxsb2NhdGUoX05ld19jYXBhY2l0eSArIDEpOyANCiAgICAgICAg
X0NvbnN0cnVjdF9pbl9wbGFjZShfTXlfZGF0YS5fQnguX1B0ciwgX05ld19hcnJheSk7DQogICAg
ICAgIF9UcmFpdHM6OmNvcHkoX1VuZmFuY3koX05ld19hcnJheSksIF9SaWdodF9wdHIsIF9SaWdo
dF9zaXplICsgMSk7DQogICAgICAgIF9NeV9kYXRhLl9NeXNpemUgPSBfUmlnaHRfc2l6ZTsNCiAg
ICAgICAgX015X2RhdGEuX015cmVzICA9IF9OZXdfY2FwYWNpdHk7DQogICAgfQ0KDQpwdWJsaWM6
DQogICAgYmFzaWNfc3RyaW5nKGluaXRpYWxpemVyX2xpc3Q8X0VsZW0+IF9JbGlzdCwgY29uc3Qg
X0FsbG9jJiBfQWwgPSBhbGxvY2F0b3JfdHlwZSgpKQ0KICAgICAgICA6IF9NeXBhaXIoX09uZV90
aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCBfQWwpIHsNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ID0g
X0Zha2VfYWxsb2NhdG9yKCk7DQogICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbHR5PiBf
UHJveHkoX0FscHJveHksIF9NeXBhaXIuX015dmFsMik7DQogICAgICAgIF9UaWR5X2luaXQoKTsN
CiAgICAgICAgYXNzaWduKF9JbGlzdC5iZWdpbigpLCBfQ29udmVydF9zaXplPHNpemVfdHlwZT4o
X0lsaXN0LnNpemUoKSkpOw0KICAgICAgICBfUHJveHkuX1JlbGVhc2UoKTsNCiAgICB9DQoNCiAg
ICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yPShpbml0aWFsaXplcl9saXN0PF9FbGVtPiBfSWxpc3Qp
IHsNCiAgICAgICAgcmV0dXJuIGFzc2lnbihfSWxpc3QuYmVnaW4oKSwgX0NvbnZlcnRfc2l6ZTxz
aXplX3R5cGU+KF9JbGlzdC5zaXplKCkpKTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmcmIG9w
ZXJhdG9yKz0oaW5pdGlhbGl6ZXJfbGlzdDxfRWxlbT4gX0lsaXN0KSB7DQogICAgICAgIHJldHVy
biBhcHBlbmQoX0lsaXN0LmJlZ2luKCksIF9Db252ZXJ0X3NpemU8c2l6ZV90eXBlPihfSWxpc3Qu
c2l6ZSgpKSk7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nJiBhc3NpZ24oaW5pdGlhbGl6ZXJf
bGlzdDxfRWxlbT4gX0lsaXN0KSB7DQogICAgICAgIHJldHVybiBhc3NpZ24oX0lsaXN0LmJlZ2lu
KCksIF9Db252ZXJ0X3NpemU8c2l6ZV90eXBlPihfSWxpc3Quc2l6ZSgpKSk7DQogICAgfQ0KDQog
ICAgYmFzaWNfc3RyaW5nJiBhcHBlbmQoaW5pdGlhbGl6ZXJfbGlzdDxfRWxlbT4gX0lsaXN0KSB7
DQogICAgICAgIHJldHVybiBhcHBlbmQoX0lsaXN0LmJlZ2luKCksIF9Db252ZXJ0X3NpemU8c2l6
ZV90eXBlPihfSWxpc3Quc2l6ZSgpKSk7DQogICAgfQ0KDQogICAgaXRlcmF0b3IgaW5zZXJ0KGNv
bnN0IGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSwgY29uc3QgaW5pdGlhbGl6ZXJfbGlzdDxfRWxlbT4g
X0lsaXN0KSB7DQoNCg0KI2xpbmUgMjc2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICBjb25zdCBhdXRvIF9PZmYgPSBz
dGF0aWNfY2FzdDxzaXplX3R5cGU+KF9VbmZhbmN5KF9XaGVyZS5fUHRyKSAtIF9NeXBhaXIuX015
dmFsMi5fTXlwdHIoKSk7DQogICAgICAgIGluc2VydChfT2ZmLCBfSWxpc3QuYmVnaW4oKSwgX0Nv
bnZlcnRfc2l6ZTxzaXplX3R5cGU+KF9JbGlzdC5zaXplKCkpKTsNCiAgICAgICAgcmV0dXJuIGJl
Z2luKCkgKyBzdGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KF9PZmYpOw0KICAgIH0NCg0KICAg
IGJhc2ljX3N0cmluZyYgcmVwbGFjZSgNCiAgICAgICAgY29uc3QgY29uc3RfaXRlcmF0b3IgX0Zp
cnN0LCBjb25zdCBjb25zdF9pdGVyYXRvciBfTGFzdCwgY29uc3QgaW5pdGlhbGl6ZXJfbGlzdDxf
RWxlbT4gX0lsaXN0KSB7DQogICAgICAgIA0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmly
c3QsIF9MYXN0KTsNCg0KDQojbGluZSAyNzc1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgICAgIGNvbnN0IGF1dG8gX09mZnNl
dCA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1VuZmFuY3koX0ZpcnN0Ll9QdHIpIC0gX015cGFp
ci5fTXl2YWwyLl9NeXB0cigpKTsNCiAgICAgICAgY29uc3QgYXV0byBfTGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90eXBlPihfTGFzdC5fUHRyIC0gX0ZpcnN0Ll9QdHIpOw0KICAgICAgICByZXR1
cm4gcmVwbGFjZShfT2Zmc2V0LCBfTGVuZ3RoLCBfSWxpc3QuYmVnaW4oKSwgX0NvbnZlcnRfc2l6
ZTxzaXplX3R5cGU+KF9JbGlzdC5zaXplKCkpKTsNCiAgICB9DQoNCiAgICB+YmFzaWNfc3RyaW5n
KCkgbm9leGNlcHQgew0KICAgICAgICBfVGlkeV9kZWFsbG9jYXRlKCk7DQoNCg0KDQoNCg0KI2xp
bmUgMjc4OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4c3RyaW5nIg0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBucG9ze3N0YXRp
Y19jYXN0PHNpemVfdHlwZT4oLTEpfTsNCg0KcHJpdmF0ZToNCiAgICB2b2lkIF9Db3B5X2Fzc2ln
bl92YWxfZnJvbV9zbWFsbChjb25zdCBiYXNpY19zdHJpbmcmIF9SaWdodCkgew0KICAgICAgICAN
CiAgICAgICAgX1RpZHlfZGVhbGxvY2F0ZSgpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKF9DYW5f
bWVtY3B5X3ZhbCkgew0KICAgICAgICAgICAgX01lbWNweV92YWxfZnJvbShfUmlnaHQpOw0KICAg
ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX1RyYWl0czo6Y29weSgNCiAgICAgICAgICAgICAg
ICBfTXlwYWlyLl9NeXZhbDIuX0J4Ll9CdWYsIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX0J4Ll9C
dWYsIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015c2l6ZSArIDEpOw0KICAgICAgICAgICAgX015
cGFpci5fTXl2YWwyLl9NeXNpemUgPSBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXNpemU7DQog
ICAgICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015cmVzICA9IF9SaWdodC5fTXlwYWlyLl9NeXZh
bDIuX015cmVzOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBfQ29weV9hc3NpZ24oY29u
c3QgYmFzaWNfc3RyaW5nJiBfUmlnaHQsIGZhbHNlX3R5cGUpIHsNCiAgICAgICAgX1BvY2NhKF9H
ZXRhbCgpLCBfUmlnaHQuX0dldGFsKCkpOw0KICAgICAgICBhc3NpZ24oX1JpZ2h0Ll9NeXBhaXIu
X015dmFsMi5fTXlwdHIoKSwgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplKTsNCiAgICB9
DQoNCiAgICB2b2lkIF9Db3B5X2Fzc2lnbihjb25zdCBiYXNpY19zdHJpbmcmIF9SaWdodCwgdHJ1
ZV90eXBlKSB7DQogICAgICAgIGF1dG8mIF9BbCAgICAgICAgICAgICA9IF9HZXRhbCgpOw0KICAg
ICAgICBjb25zdCBhdXRvJiBfUmlnaHRfYWwgPSBfUmlnaHQuX0dldGFsKCk7DQogICAgICAgIGlm
IChfQWwgPT0gX1JpZ2h0X2FsKSB7DQogICAgICAgICAgICBfQ29weV9hc3NpZ24oX1JpZ2h0LCBm
YWxzZV90eXBle30pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAg
YXV0byYmIF9BbHByb3h5ICAgICAgID0gX0Zha2VfYWxsb2NhdG9yKCk7DQogICAgICAgIGF1dG8m
JiBfUmlnaHRfYWxwcm94eSA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICBfQ29udGFpbmVy
X3Byb3h5X3B0cjxfQWx0eT4gX05ld19wcm94eShfUmlnaHRfYWxwcm94eSwgX0xlYXZlX3Byb3h5
X3VuYm91bmR7fSk7IA0KDQogICAgICAgIGlmIChfUmlnaHQuX015cGFpci5fTXl2YWwyLl9MYXJn
ZV9zdHJpbmdfZW5nYWdlZCgpKSB7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9OZXdfc2l6ZSAg
ICAgPSBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXNpemU7DQogICAgICAgICAgICBjb25zdCBh
dXRvIF9OZXdfY2FwYWNpdHkgPSBfQ2FsY3VsYXRlX2dyb3d0aChfTmV3X3NpemUsIDAsIF9SaWdo
dC5tYXhfc2l6ZSgpKTsNCiAgICAgICAgICAgIGF1dG8gX1JpZ2h0X2FsX25vbl9jb25zdCA9IF9S
aWdodF9hbDsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX05ld19wdHIgICAgICA9IF9SaWdodF9h
bF9ub25fY29uc3QuYWxsb2NhdGUoX05ld19jYXBhY2l0eSk7IA0KICAgICAgICAgICAgX1RyYWl0
czo6Y29weShfVW5mYW5jeShfTmV3X3B0ciksIF9VbmZhbmN5KF9SaWdodC5fTXlwYWlyLl9NeXZh
bDIuX0J4Ll9QdHIpLCBfTmV3X3NpemUgKyAxKTsNCiAgICAgICAgICAgIF9UaWR5X2RlYWxsb2Nh
dGUoKTsNCiAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5fQnguX1B0ciA9IF9OZXdfcHRyOw0K
ICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUgID0gX05ld19zaXplOw0KICAgICAg
ICAgICAgX015cGFpci5fTXl2YWwyLl9NeXJlcyAgID0gX05ld19jYXBhY2l0eTsNCiAgICAgICAg
fSBlbHNlIHsNCiAgICAgICAgICAgIF9Db3B5X2Fzc2lnbl92YWxfZnJvbV9zbWFsbChfUmlnaHQp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgX1BvY2NhKF9BbCwgX1JpZ2h0X2FsKTsNCiAgICAgICAg
X05ld19wcm94eS5fQmluZChfQWxwcm94eSwgOjpzdGQ6OiBhZGRyZXNzb2YoX015cGFpci5fTXl2
YWwyKSk7DQogICAgfQ0KDQpwdWJsaWM6DQogICAgYmFzaWNfc3RyaW5nJiBvcGVyYXRvcj0oY29u
c3QgYmFzaWNfc3RyaW5nJiBfUmlnaHQpIHsNCiAgICAgICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBh
ZGRyZXNzb2YoX1JpZ2h0KSkgew0KICAgICAgICAgICAgX0NvcHlfYXNzaWduKF9SaWdodCwgX0No
b29zZV9wb2NjYTxfQWx0eT57fSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKnRoaXM7
DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmluZ1ZpZXdJc2gsIF9Jc19zdHJp
bmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4NCiAgICBiYXNpY19zdHJpbmcmIG9wZXJh
dG9yPShjb25zdCBfU3RyaW5nVmlld0lzaCYgX1JpZ2h0KSB7DQogICAgICAgIHJldHVybiBhc3Np
Z24oX1JpZ2h0KTsNCiAgICB9DQojbGluZSAyODU2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBiYXNpY19zdHJpbmcmIG9w
ZXJhdG9yPSggIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyKSB7DQogICAgICAgIHJldHVybiBhc3Np
Z24oX1B0cik7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgX0Vs
ZW0gX0NoKSB7IA0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSA9IDE7DQogICAgICAg
IF9FbGVtKiBjb25zdCBfUHRyICAgICAgID0gX015cGFpci5fTXl2YWwyLl9NeXB0cigpOw0KICAg
ICAgICBfVHJhaXRzOjphc3NpZ24oX1B0clswXSwgX0NoKTsNCiAgICAgICAgX1RyYWl0czo6YXNz
aWduKF9QdHJbMV0sIF9FbGVtKCkpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQog
ICAgYmFzaWNfc3RyaW5nJiBvcGVyYXRvcis9KGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0KSB7
DQogICAgICAgIHJldHVybiBhcHBlbmQoX1JpZ2h0KTsNCiAgICB9DQoNCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfU3RyaW5nVmlld0lzaCwgX0lzX3N0cmluZ192aWV3X2lzaDxfU3RyaW5nVmlld0lz
aD4gPSAwPg0KICAgIGJhc2ljX3N0cmluZyYgb3BlcmF0b3IrPShjb25zdCBfU3RyaW5nVmlld0lz
aCYgX1JpZ2h0KSB7DQogICAgICAgIHJldHVybiBhcHBlbmQoX1JpZ2h0KTsNCiAgICB9DQojbGlu
ZSAyODc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhzdHJpbmciDQoNCiAgICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yKz0oICBjb25zdCBfRWxlbSog
Y29uc3QgX1B0cikgeyANCiAgICAgICAgcmV0dXJuIGFwcGVuZChfUHRyKTsNCiAgICB9DQoNCiAg
ICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yKz0oX0VsZW0gX0NoKSB7DQogICAgICAgIHB1c2hfYmFj
ayhfQ2gpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5n
JiBhcHBlbmQoY29uc3QgYmFzaWNfc3RyaW5nJiBfUmlnaHQpIHsNCiAgICAgICAgcmV0dXJuIGFw
cGVuZChfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfUmlnaHQuX015cGFpci5fTXl2
YWwyLl9NeXNpemUpOw0KICAgIH0NCg0KICAgIGJhc2ljX3N0cmluZyYgYXBwZW5kKGNvbnN0IGJh
c2ljX3N0cmluZyYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX1JvZmYsIHNpemVfdHlwZSBfQ291
bnQgPSBucG9zKSB7DQogICAgICAgIA0KICAgICAgICBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9D
aGVja19vZmZzZXQoX1JvZmYpOw0KICAgICAgICBfQ291bnQgPSBfUmlnaHQuX015cGFpci5fTXl2
YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfUm9mZiwgX0NvdW50KTsNCiAgICAgICAgcmV0dXJuIGFw
cGVuZChfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpICsgX1JvZmYsIF9Db3VudCk7DQog
ICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmluZ1ZpZXdJc2gsIF9Jc19zdHJpbmdf
dmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4NCiAgICBiYXNpY19zdHJpbmcmIGFwcGVuZChj
b25zdCBfU3RyaW5nVmlld0lzaCYgX1JpZ2h0KSB7DQogICAgICAgIGNvbnN0IGJhc2ljX3N0cmlu
Z192aWV3PF9FbGVtLCBfVHJhaXRzPiBfQXNfdmlldyA9IF9SaWdodDsNCiAgICAgICAgcmV0dXJu
IGFwcGVuZChfQXNfdmlldy5kYXRhKCksIF9Db252ZXJ0X3NpemU8c2l6ZV90eXBlPihfQXNfdmll
dy5zaXplKCkpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmluZ1ZpZXdJc2gs
IF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4NCiAgICBiYXNpY19zdHJp
bmcmIGFwcGVuZChjb25zdCBfU3RyaW5nVmlld0lzaCYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUg
X1JvZmYsIGNvbnN0IHNpemVfdHlwZSBfQ291bnQgPSBucG9zKSB7DQogICAgICAgIA0KICAgICAg
ICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0FzX3ZpZXcgPSBfUmlnaHQ7DQog
ICAgICAgIHJldHVybiBhcHBlbmQoX0FzX3ZpZXcuc3Vic3RyKF9Sb2ZmLCBfQ291bnQpKTsNCiAg
ICB9DQojbGluZSAyOTE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBiYXNpY19zdHJpbmcmIGFwcGVuZCggIGNvbnN0IF9F
bGVtKiBjb25zdCBfUHRyLCAgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgew0KICAgICAgICANCiAg
ICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PbGRfc2l6ZSA9IF9NeXBhaXIuX015dmFsMi5fTXlzaXpl
Ow0KICAgICAgICBpZiAoX0NvdW50IDw9IF9NeXBhaXIuX015dmFsMi5fTXlyZXMgLSBfT2xkX3Np
emUpIHsNCiAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5fTXlzaXplID0gX09sZF9zaXplICsg
X0NvdW50Ow0KICAgICAgICAgICAgX0VsZW0qIGNvbnN0IF9PbGRfcHRyICAgPSBfTXlwYWlyLl9N
eXZhbDIuX015cHRyKCk7DQogICAgICAgICAgICBfVHJhaXRzOjptb3ZlKF9PbGRfcHRyICsgX09s
ZF9zaXplLCBfUHRyLCBfQ291bnQpOw0KICAgICAgICAgICAgX1RyYWl0czo6YXNzaWduKF9PbGRf
cHRyW19PbGRfc2l6ZSArIF9Db3VudF0sIF9FbGVtKCkpOw0KICAgICAgICAgICAgcmV0dXJuICp0
aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9SZWFsbG9jYXRlX2dyb3dfYnkoDQog
ICAgICAgICAgICBfQ291bnQsDQogICAgICAgICAgICBbXShfRWxlbSogY29uc3QgX05ld19wdHIs
IGNvbnN0IF9FbGVtKiBjb25zdCBfT2xkX3B0ciwgY29uc3Qgc2l6ZV90eXBlIF9PbGRfc2l6ZSwg
Y29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsDQogICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90eXBl
IF9Db3VudCkgew0KICAgICAgICAgICAgICAgIF9UcmFpdHM6OmNvcHkoX05ld19wdHIsIF9PbGRf
cHRyLCBfT2xkX3NpemUpOw0KICAgICAgICAgICAgICAgIF9UcmFpdHM6OmNvcHkoX05ld19wdHIg
KyBfT2xkX3NpemUsIF9QdHIsIF9Db3VudCk7DQogICAgICAgICAgICAgICAgX1RyYWl0czo6YXNz
aWduKF9OZXdfcHRyW19PbGRfc2l6ZSArIF9Db3VudF0sIF9FbGVtKCkpOw0KICAgICAgICAgICAg
fSwNCiAgICAgICAgICAgIF9QdHIsIF9Db3VudCk7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5n
JiBhcHBlbmQoICBjb25zdCBfRWxlbSogY29uc3QgX1B0cikgeyANCiAgICAgICAgcmV0dXJuIGFw
cGVuZChfUHRyLCBfQ29udmVydF9zaXplPHNpemVfdHlwZT4oX1RyYWl0czo6bGVuZ3RoKF9QdHIp
KSk7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nJiBhcHBlbmQoIGNvbnN0IHNpemVfdHlwZSBf
Q291bnQsIGNvbnN0IF9FbGVtIF9DaCkgeyANCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PbGRf
c2l6ZSA9IF9NeXBhaXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBpZiAoX0NvdW50IDw9IF9N
eXBhaXIuX015dmFsMi5fTXlyZXMgLSBfT2xkX3NpemUpIHsNCiAgICAgICAgICAgIF9NeXBhaXIu
X015dmFsMi5fTXlzaXplID0gX09sZF9zaXplICsgX0NvdW50Ow0KICAgICAgICAgICAgX0VsZW0q
IGNvbnN0IF9PbGRfcHRyICAgPSBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCk7DQogICAgICAgICAg
ICBfVHJhaXRzOjphc3NpZ24oX09sZF9wdHIgKyBfT2xkX3NpemUsIF9Db3VudCwgX0NoKTsNCiAg
ICAgICAgICAgIF9UcmFpdHM6OmFzc2lnbihfT2xkX3B0cltfT2xkX3NpemUgKyBfQ291bnRdLCBf
RWxlbSgpKTsNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAg
IHJldHVybiBfUmVhbGxvY2F0ZV9ncm93X2J5KA0KICAgICAgICAgICAgX0NvdW50LA0KICAgICAg
ICAgICAgW10oX0VsZW0qIGNvbnN0IF9OZXdfcHRyLCBjb25zdCBfRWxlbSogY29uc3QgX09sZF9w
dHIsIGNvbnN0IHNpemVfdHlwZSBfT2xkX3NpemUsIGNvbnN0IHNpemVfdHlwZSBfQ291bnQsDQog
ICAgICAgICAgICAgICAgY29uc3QgX0VsZW0gX0NoKSB7DQogICAgICAgICAgICAgICAgX1RyYWl0
czo6Y29weShfTmV3X3B0ciwgX09sZF9wdHIsIF9PbGRfc2l6ZSk7DQogICAgICAgICAgICAgICAg
X1RyYWl0czo6YXNzaWduKF9OZXdfcHRyICsgX09sZF9zaXplLCBfQ291bnQsIF9DaCk7DQogICAg
ICAgICAgICAgICAgX1RyYWl0czo6YXNzaWduKF9OZXdfcHRyW19PbGRfc2l6ZSArIF9Db3VudF0s
IF9FbGVtKCkpOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIF9Db3VudCwgX0NoKTsNCiAg
ICB9DQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlciwgZW5hYmxlX2lmX3Q8X0lzX2l0ZXJh
dG9yX3Y8X0l0ZXI+LCBpbnQ+ID0gMD4NCiAgICBiYXNpY19zdHJpbmcmIGFwcGVuZChjb25zdCBf
SXRlciBfRmlyc3QsIGNvbnN0IF9JdGVyIF9MYXN0KSB7IA0KICAgICAgICBfQWRsX3ZlcmlmeV9y
YW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVUZpcnN0ID0gX0dldF91
bndyYXBwZWQoX0ZpcnN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVUxhc3QgID0gX0dldF91bndy
YXBwZWQoX0xhc3QpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKF9Jc19lbGVtX2NwdHI8ZGVjbHR5
cGUoX1VGaXJzdCk+Ojp2YWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIGFwcGVuZChfVUZpcnN0
LCBfQ29udmVydF9zaXplPHNpemVfdHlwZT4oc3RhdGljX2Nhc3Q8c2l6ZV90PihfVUxhc3QgLSBf
VUZpcnN0KSkpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgY29uc3QgYmFzaWNfc3Ry
aW5nIF9SaWdodChfVUZpcnN0LCBfVUxhc3QsIGdldF9hbGxvY2F0b3IoKSk7DQogICAgICAgICAg
ICByZXR1cm4gYXBwZW5kKF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9SaWdodC5f
TXlwYWlyLl9NeXZhbDIuX015c2l6ZSk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyOTk0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBiYXNpY19zdHJpbmcm
IGFzc2lnbihjb25zdCBiYXNpY19zdHJpbmcmIF9SaWdodCkgew0KICAgICAgICAqdGhpcyA9IF9S
aWdodDsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIGJhc2ljX3N0cmluZyYg
YXNzaWduKGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX1JvZmYs
IHNpemVfdHlwZSBfQ291bnQgPSBucG9zKSB7DQogICAgICAgIA0KICAgICAgICBfUmlnaHQuX015
cGFpci5fTXl2YWwyLl9DaGVja19vZmZzZXQoX1JvZmYpOw0KICAgICAgICBfQ291bnQgPSBfUmln
aHQuX015cGFpci5fTXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfUm9mZiwgX0NvdW50KTsNCiAg
ICAgICAgcmV0dXJuIGFzc2lnbihfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpICsgX1Jv
ZmYsIF9Db3VudCk7DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmluZ1ZpZXdJ
c2gsIF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4NCiAgICBiYXNpY19z
dHJpbmcmIGFzc2lnbihjb25zdCBfU3RyaW5nVmlld0lzaCYgX1JpZ2h0KSB7DQogICAgICAgIGNv
bnN0IGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfQXNfdmlldyA9IF9SaWdodDsN
CiAgICAgICAgcmV0dXJuIGFzc2lnbihfQXNfdmlldy5kYXRhKCksIF9Db252ZXJ0X3NpemU8c2l6
ZV90eXBlPihfQXNfdmlldy5zaXplKCkpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1N0cmluZ1ZpZXdJc2gsIF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4N
CiAgICBiYXNpY19zdHJpbmcmIGFzc2lnbihjb25zdCBfU3RyaW5nVmlld0lzaCYgX1JpZ2h0LCBj
b25zdCBzaXplX3R5cGUgX1JvZmYsIGNvbnN0IHNpemVfdHlwZSBfQ291bnQgPSBucG9zKSB7DQog
ICAgICAgIA0KICAgICAgICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0FzX3Zp
ZXcgPSBfUmlnaHQ7DQogICAgICAgIHJldHVybiBhc3NpZ24oX0FzX3ZpZXcuc3Vic3RyKF9Sb2Zm
LCBfQ291bnQpKTsNCiAgICB9DQojbGluZSAzMDIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBiYXNpY19zdHJpbmcmIGFz
c2lnbiggIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyLCAgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkg
ew0KICAgICAgICANCiAgICAgICAgaWYgKF9Db3VudCA8PSBfTXlwYWlyLl9NeXZhbDIuX015cmVz
KSB7DQogICAgICAgICAgICBfRWxlbSogY29uc3QgX09sZF9wdHIgICA9IF9NeXBhaXIuX015dmFs
Mi5fTXlwdHIoKTsNCiAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5fTXlzaXplID0gX0NvdW50
Ow0KICAgICAgICAgICAgX1RyYWl0czo6bW92ZShfT2xkX3B0ciwgX1B0ciwgX0NvdW50KTsNCiAg
ICAgICAgICAgIF9UcmFpdHM6OmFzc2lnbihfT2xkX3B0cltfQ291bnRdLCBfRWxlbSgpKTsNCiAg
ICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBfUmVh
bGxvY2F0ZV9mb3IoDQogICAgICAgICAgICBfQ291bnQsDQogICAgICAgICAgICBbXShfRWxlbSog
Y29uc3QgX05ld19wdHIsIGNvbnN0IHNpemVfdHlwZSBfQ291bnQsIGNvbnN0IF9FbGVtKiBjb25z
dCBfUHRyKSB7DQogICAgICAgICAgICAgICAgX1RyYWl0czo6Y29weShfTmV3X3B0ciwgX1B0ciwg
X0NvdW50KTsNCiAgICAgICAgICAgICAgICBfVHJhaXRzOjphc3NpZ24oX05ld19wdHJbX0NvdW50
XSwgX0VsZW0oKSk7DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgX1B0cik7DQogICAgfQ0K
DQogICAgYmFzaWNfc3RyaW5nJiBhc3NpZ24oICBjb25zdCBfRWxlbSogY29uc3QgX1B0cikgew0K
ICAgICAgICByZXR1cm4gYXNzaWduKF9QdHIsIF9Db252ZXJ0X3NpemU8c2l6ZV90eXBlPihfVHJh
aXRzOjpsZW5ndGgoX1B0cikpKTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmcmIGFzc2lnbigg
Y29uc3Qgc2l6ZV90eXBlIF9Db3VudCwgY29uc3QgX0VsZW0gX0NoKSB7IA0KICAgICAgICBpZiAo
X0NvdW50IDw9IF9NeXBhaXIuX015dmFsMi5fTXlyZXMpIHsNCiAgICAgICAgICAgIF9FbGVtKiBj
b25zdCBfT2xkX3B0ciAgID0gX015cGFpci5fTXl2YWwyLl9NeXB0cigpOw0KICAgICAgICAgICAg
X015cGFpci5fTXl2YWwyLl9NeXNpemUgPSBfQ291bnQ7DQogICAgICAgICAgICBfVHJhaXRzOjph
c3NpZ24oX09sZF9wdHIsIF9Db3VudCwgX0NoKTsNCiAgICAgICAgICAgIF9UcmFpdHM6OmFzc2ln
bihfT2xkX3B0cltfQ291bnRdLCBfRWxlbSgpKTsNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsN
CiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBfUmVhbGxvY2F0ZV9mb3IoDQogICAgICAgICAg
ICBfQ291bnQsDQogICAgICAgICAgICBbXShfRWxlbSogY29uc3QgX05ld19wdHIsIGNvbnN0IHNp
emVfdHlwZSBfQ291bnQsIGNvbnN0IF9FbGVtIF9DaCkgew0KICAgICAgICAgICAgICAgIF9UcmFp
dHM6OmFzc2lnbihfTmV3X3B0ciwgX0NvdW50LCBfQ2gpOw0KICAgICAgICAgICAgICAgIF9UcmFp
dHM6OmFzc2lnbihfTmV3X3B0cltfQ291bnRdLCBfRWxlbSgpKTsNCiAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICBfQ2gpOw0KICAgIH0NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyLCBl
bmFibGVfaWZfdDxfSXNfaXRlcmF0b3JfdjxfSXRlcj4sIGludD4gPSAwPg0KICAgIGJhc2ljX3N0
cmluZyYgYXNzaWduKGNvbnN0IF9JdGVyIF9GaXJzdCwgY29uc3QgX0l0ZXIgX0xhc3QpIHsNCiAg
ICAgICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgICAgIGNvbnN0IGF1
dG8gX1VGaXJzdCA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgICAgIGNvbnN0IGF1dG8g
X1VMYXN0ICA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICAgICAgaWYgY29uc3RleHByIChf
SXNfZWxlbV9jcHRyPGRlY2x0eXBlKF9VRmlyc3QpPjo6dmFsdWUpIHsNCiAgICAgICAgICAgIHJl
dHVybiBhc3NpZ24oX1VGaXJzdCwgX0NvbnZlcnRfc2l6ZTxzaXplX3R5cGU+KHN0YXRpY19jYXN0
PHNpemVfdD4oX1VMYXN0IC0gX1VGaXJzdCkpKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg
ICAgIGJhc2ljX3N0cmluZyBfUmlnaHQoX1VGaXJzdCwgX1VMYXN0LCBnZXRfYWxsb2NhdG9yKCkp
Ow0KICAgICAgICAgICAgaWYgKF9NeXBhaXIuX015dmFsMi5fTXlyZXMgPCBfUmlnaHQuX015cGFp
ci5fTXl2YWwyLl9NeXJlcykgew0KICAgICAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5fT3Jw
aGFuX2FsbCgpOw0KICAgICAgICAgICAgICAgIF9Td2FwX2RhdGEoX1JpZ2h0LCBib29sX2NvbnN0
YW50PF9DYW5fbWVtY3B5X3ZhbD57fSk7DQogICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gYXNzaWduKF9SaWdo
dC5fTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015c2l6
ZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMTA3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBiYXNpY19z
dHJpbmcmIGluc2VydChjb25zdCBzaXplX3R5cGUgX09mZiwgY29uc3QgYmFzaWNfc3RyaW5nJiBf
UmlnaHQpIHsgDQogICAgICAgIHJldHVybiBpbnNlcnQoX09mZiwgX1JpZ2h0Ll9NeXBhaXIuX015
dmFsMi5fTXlwdHIoKSwgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplKTsNCiAgICB9DQoN
CiAgICBiYXNpY19zdHJpbmcmIGluc2VydCgNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PZmYs
IGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX1JvZmYsIHNpemVf
dHlwZSBfQ291bnQgPSBucG9zKSB7DQogICAgICAgIA0KICAgICAgICBfUmlnaHQuX015cGFpci5f
TXl2YWwyLl9DaGVja19vZmZzZXQoX1JvZmYpOw0KICAgICAgICBfQ291bnQgPSBfUmlnaHQuX015
cGFpci5fTXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfUm9mZiwgX0NvdW50KTsNCiAgICAgICAg
cmV0dXJuIGluc2VydChfT2ZmLCBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpICsgX1Jv
ZmYsIF9Db3VudCk7DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmluZ1ZpZXdJ
c2gsIF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4NCiAgICBiYXNpY19z
dHJpbmcmIGluc2VydChjb25zdCBzaXplX3R5cGUgX09mZiwgY29uc3QgX1N0cmluZ1ZpZXdJc2gm
IF9SaWdodCkgeyANCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFp
dHM+IF9Bc192aWV3ID0gX1JpZ2h0Ow0KICAgICAgICByZXR1cm4gaW5zZXJ0KF9PZmYsIF9Bc192
aWV3LmRhdGEoKSwgX0NvbnZlcnRfc2l6ZTxzaXplX3R5cGU+KF9Bc192aWV3LnNpemUoKSkpOw0K
ICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfU3RyaW5nVmlld0lzaCwgX0lzX3N0cmluZ192
aWV3X2lzaDxfU3RyaW5nVmlld0lzaD4gPSAwPg0KICAgIGJhc2ljX3N0cmluZyYgaW5zZXJ0KGNv
bnN0IHNpemVfdHlwZSBfT2ZmLCBjb25zdCBfU3RyaW5nVmlld0lzaCYgX1JpZ2h0LCBjb25zdCBz
aXplX3R5cGUgX1JvZmYsDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQgPSBucG9zKSB7
IA0KICAgICAgICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0FzX3ZpZXcgPSBf
UmlnaHQ7DQogICAgICAgIHJldHVybiBpbnNlcnQoX09mZiwgX0FzX3ZpZXcuc3Vic3RyKF9Sb2Zm
LCBfQ291bnQpKTsNCiAgICB9DQojbGluZSAzMTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBiYXNpY19zdHJpbmcmIGlu
c2VydCgNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PZmYsICAgY29uc3QgX0VsZW0qIGNvbnN0
IF9QdHIsICBjb25zdCBzaXplX3R5cGUgX0NvdW50KSB7DQogICAgICAgIA0KICAgICAgICBfTXlw
YWlyLl9NeXZhbDIuX0NoZWNrX29mZnNldChfT2ZmKTsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBl
IF9PbGRfc2l6ZSA9IF9NeXBhaXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBpZiAoX0NvdW50
IDw9IF9NeXBhaXIuX015dmFsMi5fTXlyZXMgLSBfT2xkX3NpemUpIHsNCiAgICAgICAgICAgIF9N
eXBhaXIuX015dmFsMi5fTXlzaXplID0gX09sZF9zaXplICsgX0NvdW50Ow0KICAgICAgICAgICAg
X0VsZW0qIGNvbnN0IF9PbGRfcHRyICAgPSBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCk7DQogICAg
ICAgICAgICBfRWxlbSogY29uc3QgX0luc2VydF9hdCA9IF9PbGRfcHRyICsgX09mZjsNCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICBzaXplX3R5cGUgX1B0cl9zaGlmdGVk
X2FmdGVyOw0KICAgICAgICAgICAgaWYgKF9QdHIgKyBfQ291bnQgPD0gX0luc2VydF9hdA0KICAg
ICAgICAgICAgICAgIHx8IF9QdHIgPiBfT2xkX3B0ciArIF9PbGRfc2l6ZSkgeyANCiAgICAgICAg
ICAgICAgICBfUHRyX3NoaWZ0ZWRfYWZ0ZXIgPSBfQ291bnQ7IA0KICAgICAgICAgICAgfSBlbHNl
IGlmIChfSW5zZXJ0X2F0IDw9IF9QdHIpIHsgDQogICAgICAgICAgICAgICAgX1B0cl9zaGlmdGVk
X2FmdGVyID0gMDsNCiAgICAgICAgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgICAgIF9QdHJf
c2hpZnRlZF9hZnRlciA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX0luc2VydF9hdCAtIF9QdHIp
Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBfVHJhaXRzOjptb3ZlKF9JbnNlcnRfYXQg
KyBfQ291bnQsIF9JbnNlcnRfYXQsIF9PbGRfc2l6ZSAtIF9PZmYgKyAxKTsgDQogICAgICAgICAg
ICBfVHJhaXRzOjpjb3B5KF9JbnNlcnRfYXQsIF9QdHIsIF9QdHJfc2hpZnRlZF9hZnRlcik7DQog
ICAgICAgICAgICBfVHJhaXRzOjpjb3B5KA0KICAgICAgICAgICAgICAgIF9JbnNlcnRfYXQgKyBf
UHRyX3NoaWZ0ZWRfYWZ0ZXIsIF9QdHIgKyBfQ291bnQgKyBfUHRyX3NoaWZ0ZWRfYWZ0ZXIsIF9D
b3VudCAtIF9QdHJfc2hpZnRlZF9hZnRlcik7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX1JlYWxsb2NhdGVfZ3Jvd19ieSgNCiAgICAgICAg
ICAgIF9Db3VudCwNCiAgICAgICAgICAgIFtdKF9FbGVtKiBjb25zdCBfTmV3X3B0ciwgY29uc3Qg
X0VsZW0qIGNvbnN0IF9PbGRfcHRyLCBjb25zdCBzaXplX3R5cGUgX09sZF9zaXplLCBjb25zdCBz
aXplX3R5cGUgX09mZiwNCiAgICAgICAgICAgICAgICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwg
Y29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgew0KICAgICAgICAgICAgICAgIF9UcmFpdHM6OmNvcHko
X05ld19wdHIsIF9PbGRfcHRyLCBfT2ZmKTsNCiAgICAgICAgICAgICAgICBfVHJhaXRzOjpjb3B5
KF9OZXdfcHRyICsgX09mZiwgX1B0ciwgX0NvdW50KTsNCiAgICAgICAgICAgICAgICBfVHJhaXRz
Ojpjb3B5KF9OZXdfcHRyICsgX09mZiArIF9Db3VudCwgX09sZF9wdHIgKyBfT2ZmLCBfT2xkX3Np
emUgLSBfT2ZmICsgMSk7DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgX09mZiwgX1B0ciwg
X0NvdW50KTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmcmIGluc2VydChjb25zdCBzaXplX3R5
cGUgX09mZiwgICBjb25zdCBfRWxlbSogY29uc3QgX1B0cikgeyANCiAgICAgICAgcmV0dXJuIGlu
c2VydChfT2ZmLCBfUHRyLCBfQ29udmVydF9zaXplPHNpemVfdHlwZT4oX1RyYWl0czo6bGVuZ3Ro
KF9QdHIpKSk7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nJiBpbnNlcnQoY29uc3Qgc2l6ZV90
eXBlIF9PZmYsICBjb25zdCBzaXplX3R5cGUgX0NvdW50LCBjb25zdCBfRWxlbSBfQ2gpIHsNCiAg
ICAgICAgDQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fQ2hlY2tfb2Zmc2V0KF9PZmYpOw0KICAg
ICAgICBjb25zdCBzaXplX3R5cGUgX09sZF9zaXplID0gX015cGFpci5fTXl2YWwyLl9NeXNpemU7
DQogICAgICAgIGlmIChfQ291bnQgPD0gX015cGFpci5fTXl2YWwyLl9NeXJlcyAtIF9PbGRfc2l6
ZSkgew0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUgPSBfT2xkX3NpemUgKyBf
Q291bnQ7DQogICAgICAgICAgICBfRWxlbSogY29uc3QgX09sZF9wdHIgICA9IF9NeXBhaXIuX015
dmFsMi5fTXlwdHIoKTsNCiAgICAgICAgICAgIF9FbGVtKiBjb25zdCBfSW5zZXJ0X2F0ID0gX09s
ZF9wdHIgKyBfT2ZmOw0KICAgICAgICAgICAgX1RyYWl0czo6bW92ZShfSW5zZXJ0X2F0ICsgX0Nv
dW50LCBfSW5zZXJ0X2F0LCBfT2xkX3NpemUgLSBfT2ZmICsgMSk7IA0KICAgICAgICAgICAgX1Ry
YWl0czo6YXNzaWduKF9JbnNlcnRfYXQsIF9Db3VudCwgX0NoKTsgDQogICAgICAgICAgICByZXR1
cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX1JlYWxsb2NhdGVfZ3Jvd19i
eSgNCiAgICAgICAgICAgIF9Db3VudCwNCiAgICAgICAgICAgIFtdKF9FbGVtKiBjb25zdCBfTmV3
X3B0ciwgY29uc3QgX0VsZW0qIGNvbnN0IF9PbGRfcHRyLCBjb25zdCBzaXplX3R5cGUgX09sZF9z
aXplLCBjb25zdCBzaXplX3R5cGUgX09mZiwNCiAgICAgICAgICAgICAgICBjb25zdCBzaXplX3R5
cGUgX0NvdW50LCBjb25zdCBfRWxlbSBfQ2gpIHsNCiAgICAgICAgICAgICAgICBfVHJhaXRzOjpj
b3B5KF9OZXdfcHRyLCBfT2xkX3B0ciwgX09mZik7DQogICAgICAgICAgICAgICAgX1RyYWl0czo6
YXNzaWduKF9OZXdfcHRyICsgX09mZiwgX0NvdW50LCBfQ2gpOw0KICAgICAgICAgICAgICAgIF9U
cmFpdHM6OmNvcHkoX05ld19wdHIgKyBfT2ZmICsgX0NvdW50LCBfT2xkX3B0ciArIF9PZmYsIF9P
bGRfc2l6ZSAtIF9PZmYgKyAxKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBfT2ZmLCBf
Q291bnQsIF9DaCk7DQogICAgfQ0KDQogICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0IGNvbnN0X2l0
ZXJhdG9yIF9XaGVyZSwgY29uc3QgX0VsZW0gX0NoKSB7IA0KDQoNCiNsaW5lIDMyMDYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAg
ICAgICAgY29uc3QgYXV0byBfT2ZmID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfVW5mYW5jeShf
V2hlcmUuX1B0cikgLSBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkpOw0KICAgICAgICBpbnNlcnQo
X09mZiwgMSwgX0NoKTsNCiAgICAgICAgcmV0dXJuIGJlZ2luKCkgKyBzdGF0aWNfY2FzdDxkaWZm
ZXJlbmNlX3R5cGU+KF9PZmYpOw0KICAgIH0NCg0KICAgIGl0ZXJhdG9yIGluc2VydChjb25zdCBj
b25zdF9pdGVyYXRvciBfV2hlcmUsICBjb25zdCBzaXplX3R5cGUgX0NvdW50LCBjb25zdCBfRWxl
bSBfQ2gpIHsNCiAgICAgICAgDQoNCg0KI2xpbmUgMzIxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KICAgICAgICBjb25zdCBhdXRv
IF9PZmYgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9VbmZhbmN5KF9XaGVyZS5fUHRyKSAtIF9N
eXBhaXIuX015dmFsMi5fTXlwdHIoKSk7DQogICAgICAgIGluc2VydChfT2ZmLCBfQ291bnQsIF9D
aCk7DQogICAgICAgIHJldHVybiBiZWdpbigpICsgc3RhdGljX2Nhc3Q8ZGlmZmVyZW5jZV90eXBl
PihfT2ZmKTsNCiAgICB9DQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlciwgZW5hYmxlX2lm
X3Q8X0lzX2l0ZXJhdG9yX3Y8X0l0ZXI+LCBpbnQ+ID0gMD4NCiAgICBpdGVyYXRvciBpbnNlcnQo
Y29uc3QgY29uc3RfaXRlcmF0b3IgX1doZXJlLCBjb25zdCBfSXRlciBfRmlyc3QsIGNvbnN0IF9J
dGVyIF9MYXN0KSB7DQogICAgICAgIA0KDQoNCiNsaW5lIDMyMjggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgY29uc3Qg
YXV0byBfT2ZmID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfVW5mYW5jeShfV2hlcmUuX1B0cikg
LSBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkpOw0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShf
Rmlyc3QsIF9MYXN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVUZpcnN0ID0gX0dldF91bndyYXBw
ZWQoX0ZpcnN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVUxhc3QgID0gX0dldF91bndyYXBwZWQo
X0xhc3QpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKF9Jc19lbGVtX2NwdHI8ZGVjbHR5cGUoX1VG
aXJzdCk+Ojp2YWx1ZSkgew0KICAgICAgICAgICAgaW5zZXJ0KF9PZmYsIF9VRmlyc3QsIF9Db252
ZXJ0X3NpemU8c2l6ZV90eXBlPihzdGF0aWNfY2FzdDxzaXplX3Q+KF9VTGFzdCAtIF9VRmlyc3Qp
KSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmcgX1Jp
Z2h0KF9VRmlyc3QsIF9VTGFzdCwgZ2V0X2FsbG9jYXRvcigpKTsNCiAgICAgICAgICAgIGluc2Vy
dChfT2ZmLCBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfUmlnaHQuX015cGFpci5f
TXl2YWwyLl9NeXNpemUpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGJlZ2luKCkgKyBz
dGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KF9PZmYpOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMyNjYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIGJh
c2ljX3N0cmluZyYgZXJhc2UoY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSB7IA0KICAgICAgICBf
TXlwYWlyLl9NeXZhbDIuX0NoZWNrX29mZnNldChfT2ZmKTsNCiAgICAgICAgX0VvcyhfT2ZmKTsN
CiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIGJhc2ljX3N0cmluZyYgZXJhc2Uo
Y29uc3Qgc2l6ZV90eXBlIF9PZmYsIHNpemVfdHlwZSBfQ291bnQpIHsgDQogICAgICAgIF9NeXBh
aXIuX015dmFsMi5fQ2hlY2tfb2Zmc2V0KF9PZmYpOw0KICAgICAgICBfQ291bnQgICAgICAgICAg
ICAgICAgICAgID0gX015cGFpci5fTXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfT2ZmLCBfQ291
bnQpOw0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX09sZF9zaXplID0gX015cGFpci5fTXl2YWwy
Ll9NeXNpemU7DQogICAgICAgIF9FbGVtKiBjb25zdCBfTXlfcHRyICAgICAgPSBfTXlwYWlyLl9N
eXZhbDIuX015cHRyKCk7DQogICAgICAgIF9FbGVtKiBjb25zdCBfRXJhc2VfYXQgICAgPSBfTXlf
cHRyICsgX09mZjsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9OZXdfc2l6ZSA9IF9PbGRfc2l6
ZSAtIF9Db3VudDsNCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUgICA9IF9OZXdfc2l6
ZTsNCiAgICAgICAgX1RyYWl0czo6bW92ZShfRXJhc2VfYXQsIF9FcmFzZV9hdCArIF9Db3VudCwg
X05ld19zaXplIC0gX09mZiArIDEpOyANCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0K
ICAgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0IGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSkgbm9leGNlcHQg
IHsNCg0KDQojbGluZSAzMjg5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgICAgIGNvbnN0IGF1dG8gX09mZiA9IHN0YXRpY19j
YXN0PHNpemVfdHlwZT4oX1VuZmFuY3koX1doZXJlLl9QdHIpIC0gX015cGFpci5fTXl2YWwyLl9N
eXB0cigpKTsNCiAgICAgICAgZXJhc2UoX09mZiwgMSk7DQogICAgICAgIHJldHVybiBiZWdpbigp
ICsgc3RhdGljX2Nhc3Q8ZGlmZmVyZW5jZV90eXBlPihfT2ZmKTsNCiAgICB9DQoNCiAgICBpdGVy
YXRvciBlcmFzZShjb25zdCBjb25zdF9pdGVyYXRvciBfRmlyc3QsIGNvbnN0IGNvbnN0X2l0ZXJh
dG9yIF9MYXN0KSBub2V4Y2VwdCAgew0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3Qs
IF9MYXN0KTsNCg0KDQojbGluZSAzMjk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgICAgIGNvbnN0IGF1dG8gX09mZiA9IHN0
YXRpY19jYXN0PHNpemVfdHlwZT4oX1VuZmFuY3koX0ZpcnN0Ll9QdHIpIC0gX015cGFpci5fTXl2
YWwyLl9NeXB0cigpKTsNCiAgICAgICAgZXJhc2UoX09mZiwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBl
PihfTGFzdC5fUHRyIC0gX0ZpcnN0Ll9QdHIpKTsNCiAgICAgICAgcmV0dXJuIGJlZ2luKCkgKyBz
dGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KF9PZmYpOw0KICAgIH0NCg0KICAgIHZvaWQgY2xl
YXIoKSBub2V4Y2VwdCB7IA0KICAgICAgICBfRW9zKDApOw0KICAgIH0NCg0KICAgIGJhc2ljX3N0
cmluZyYgcmVwbGFjZShjb25zdCBzaXplX3R5cGUgX09mZiwgY29uc3Qgc2l6ZV90eXBlIF9OeCwg
Y29uc3QgYmFzaWNfc3RyaW5nJiBfUmlnaHQpIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBy
ZXBsYWNlKF9PZmYsIF9OeCwgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX1JpZ2h0
Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplKTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmcmIHJl
cGxhY2UoY29uc3Qgc2l6ZV90eXBlIF9PZmYsIHNpemVfdHlwZSBfTngsIGNvbnN0IGJhc2ljX3N0
cmluZyYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX1JvZmYsDQogICAgICAgIHNpemVfdHlwZSBf
Q291bnQgPSBucG9zKSB7DQogICAgICAgIA0KICAgICAgICBfUmlnaHQuX015cGFpci5fTXl2YWwy
Ll9DaGVja19vZmZzZXQoX1JvZmYpOw0KICAgICAgICBfQ291bnQgPSBfUmlnaHQuX015cGFpci5f
TXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfUm9mZiwgX0NvdW50KTsNCiAgICAgICAgcmV0dXJu
IHJlcGxhY2UoX09mZiwgX054LCBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpICsgX1Jv
ZmYsIF9Db3VudCk7DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmluZ1ZpZXdJ
c2gsIF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4NCiAgICBiYXNpY19z
dHJpbmcmIHJlcGxhY2UoY29uc3Qgc2l6ZV90eXBlIF9PZmYsIGNvbnN0IHNpemVfdHlwZSBfTngs
IGNvbnN0IF9TdHJpbmdWaWV3SXNoJiBfUmlnaHQpIHsNCiAgICAgICAgDQogICAgICAgIGJhc2lj
X3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfQXNfdmlldyA9IF9SaWdodDsNCiAgICAgICAg
cmV0dXJuIHJlcGxhY2UoX09mZiwgX054LCBfQXNfdmlldy5kYXRhKCksIF9Db252ZXJ0X3NpemU8
c2l6ZV90eXBlPihfQXNfdmlldy5zaXplKCkpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1N0cmluZ1ZpZXdJc2gsIF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0g
MD4NCiAgICBiYXNpY19zdHJpbmcmIHJlcGxhY2UoY29uc3Qgc2l6ZV90eXBlIF9PZmYsIGNvbnN0
IHNpemVfdHlwZSBfTngsIGNvbnN0IF9TdHJpbmdWaWV3SXNoJiBfUmlnaHQsDQogICAgICAgIGNv
bnN0IHNpemVfdHlwZSBfUm9mZiwgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCA9IG5wb3MpIHsNCiAg
ICAgICAgDQogICAgICAgIGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfQXNfdmll
dyA9IF9SaWdodDsNCiAgICAgICAgcmV0dXJuIHJlcGxhY2UoX09mZiwgX054LCBfQXNfdmlldy5z
dWJzdHIoX1JvZmYsIF9Db3VudCkpOw0KICAgIH0NCiNsaW5lIDMzMzcgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIGJhc2lj
X3N0cmluZyYgcmVwbGFjZSgNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PZmYsIHNpemVfdHlw
ZSBfTngsICAgY29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfQ291bnQp
IHsNCiAgICAgICAgDQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fQ2hlY2tfb2Zmc2V0KF9PZmYp
Ow0KICAgICAgICBfTnggPSBfTXlwYWlyLl9NeXZhbDIuX0NsYW1wX3N1ZmZpeF9zaXplKF9PZmYs
IF9OeCk7DQogICAgICAgIGlmIChfTnggPT0gX0NvdW50KSB7IA0KICAgICAgICAgICAgX1RyYWl0
czo6bW92ZShfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkgKyBfT2ZmLCBfUHRyLCBfQ291bnQpOw0K
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3Qgc2l6
ZV90eXBlIF9PbGRfc2l6ZSAgICA9IF9NeXBhaXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBj
b25zdCBzaXplX3R5cGUgX1N1ZmZpeF9zaXplID0gX09sZF9zaXplIC0gX054IC0gX09mZiArIDE7
DQogICAgICAgIGlmIChfQ291bnQgPCBfTngpIHsgDQogICAgICAgICAgICBfTXlwYWlyLl9NeXZh
bDIuX015c2l6ZSA9IF9PbGRfc2l6ZSAtIChfTnggLSBfQ291bnQpOw0KICAgICAgICAgICAgX0Vs
ZW0qIGNvbnN0IF9PbGRfcHRyICAgPSBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCk7DQogICAgICAg
ICAgICBfRWxlbSogY29uc3QgX0luc2VydF9hdCA9IF9PbGRfcHRyICsgX09mZjsNCiAgICAgICAg
ICAgIF9UcmFpdHM6Om1vdmUoX0luc2VydF9hdCwgX1B0ciwgX0NvdW50KTsNCiAgICAgICAgICAg
IF9UcmFpdHM6Om1vdmUoX0luc2VydF9hdCArIF9Db3VudCwgX0luc2VydF9hdCArIF9OeCwgX1N1
ZmZpeF9zaXplKTsNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGNvbnN0IHNpemVfdHlwZSBfR3Jvd3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfQ291
bnQgLSBfTngpOw0KICAgICAgICBpZiAoX0dyb3d0aCA8PSBfTXlwYWlyLl9NeXZhbDIuX015cmVz
IC0gX09sZF9zaXplKSB7IA0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUgPSBf
T2xkX3NpemUgKyBfR3Jvd3RoOw0KICAgICAgICAgICAgX0VsZW0qIGNvbnN0IF9PbGRfcHRyICAg
PSBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCk7DQogICAgICAgICAgICBfRWxlbSogY29uc3QgX0lu
c2VydF9hdCA9IF9PbGRfcHRyICsgX09mZjsNCiAgICAgICAgICAgIF9FbGVtKiBjb25zdCBfU3Vm
Zml4X2F0ID0gX0luc2VydF9hdCArIF9OeDsNCg0KICAgICAgICAgICAgc2l6ZV90eXBlIF9QdHJf
c2hpZnRlZF9hZnRlcjsgDQogICAgICAgICAgICBpZiAoX1B0ciArIF9Db3VudCA8PSBfSW5zZXJ0
X2F0IHx8IF9QdHIgPiBfT2xkX3B0ciArIF9PbGRfc2l6ZSkgew0KICAgICAgICAgICAgICAgIF9Q
dHJfc2hpZnRlZF9hZnRlciA9IF9Db3VudDsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoX1N1ZmZp
eF9hdCA8PSBfUHRyKSB7DQogICAgICAgICAgICAgICAgX1B0cl9zaGlmdGVkX2FmdGVyID0gMDsN
CiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgX1B0cl9zaGlmdGVkX2FmdGVy
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfU3VmZml4X2F0IC0gX1B0cik7DQogICAgICAgICAg
ICB9DQoNCiAgICAgICAgICAgIF9UcmFpdHM6Om1vdmUoX1N1ZmZpeF9hdCArIF9Hcm93dGgsIF9T
dWZmaXhfYXQsIF9TdWZmaXhfc2l6ZSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgDQogICAgICAgICAgICBfVHJhaXRzOjptb3ZlKF9JbnNlcnRfYXQsIF9QdHIsIF9Q
dHJfc2hpZnRlZF9hZnRlcik7DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgX1RyYWl0czo6Y29weSgNCiAgICAgICAgICAgICAgICBfSW5zZXJ0X2F0ICsgX1B0cl9zaGlm
dGVkX2FmdGVyLCBfUHRyICsgX0dyb3d0aCArIF9QdHJfc2hpZnRlZF9hZnRlciwgX0NvdW50IC0g
X1B0cl9zaGlmdGVkX2FmdGVyKTsNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAg
fQ0KDQogICAgICAgIHJldHVybiBfUmVhbGxvY2F0ZV9ncm93X2J5KA0KICAgICAgICAgICAgX0dy
b3d0aCwNCiAgICAgICAgICAgIFtdKF9FbGVtKiBjb25zdCBfTmV3X3B0ciwgY29uc3QgX0VsZW0q
IGNvbnN0IF9PbGRfcHRyLCBjb25zdCBzaXplX3R5cGUgX09sZF9zaXplLCBjb25zdCBzaXplX3R5
cGUgX09mZiwNCiAgICAgICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgX054LCBjb25zdCBfRWxl
bSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgew0KICAgICAgICAgICAgICAg
IF9UcmFpdHM6OmNvcHkoX05ld19wdHIsIF9PbGRfcHRyLCBfT2ZmKTsNCiAgICAgICAgICAgICAg
ICBfVHJhaXRzOjpjb3B5KF9OZXdfcHRyICsgX09mZiwgX1B0ciwgX0NvdW50KTsNCiAgICAgICAg
ICAgICAgICBfVHJhaXRzOjpjb3B5KF9OZXdfcHRyICsgX09mZiArIF9Db3VudCwgX09sZF9wdHIg
KyBfT2ZmICsgX054LCBfT2xkX3NpemUgLSBfTnggLSBfT2ZmICsgMSk7DQogICAgICAgICAgICB9
LA0KICAgICAgICAgICAgX09mZiwgX054LCBfUHRyLCBfQ291bnQpOw0KICAgIH0NCg0KICAgIGJh
c2ljX3N0cmluZyYgcmVwbGFjZShjb25zdCBzaXplX3R5cGUgX09mZiwgY29uc3Qgc2l6ZV90eXBl
IF9OeCwgICBjb25zdCBfRWxlbSogY29uc3QgX1B0cikgew0KICAgICAgICANCiAgICAgICAgcmV0
dXJuIHJlcGxhY2UoX09mZiwgX054LCBfUHRyLCBfQ29udmVydF9zaXplPHNpemVfdHlwZT4oX1Ry
YWl0czo6bGVuZ3RoKF9QdHIpKSk7DQogICAgfQ0KDQogICAgYmFzaWNfc3RyaW5nJiByZXBsYWNl
KGNvbnN0IHNpemVfdHlwZSBfT2ZmLCBzaXplX3R5cGUgX054LCBjb25zdCBzaXplX3R5cGUgX0Nv
dW50LCBjb25zdCBfRWxlbSBfQ2gpIHsNCiAgICAgICAgDQogICAgICAgIF9NeXBhaXIuX015dmFs
Mi5fQ2hlY2tfb2Zmc2V0KF9PZmYpOw0KICAgICAgICBfTnggPSBfTXlwYWlyLl9NeXZhbDIuX0Ns
YW1wX3N1ZmZpeF9zaXplKF9PZmYsIF9OeCk7DQogICAgICAgIGlmIChfQ291bnQgPT0gX054KSB7
DQogICAgICAgICAgICBfVHJhaXRzOjphc3NpZ24oX015cGFpci5fTXl2YWwyLl9NeXB0cigpICsg
X09mZiwgX0NvdW50LCBfQ2gpOw0KICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAgICB9
DQoNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PbGRfc2l6ZSA9IF9NeXBhaXIuX015dmFsMi5f
TXlzaXplOw0KICAgICAgICBpZiAoX0NvdW50IDwgX054DQogICAgICAgICAgICB8fCBfQ291bnQg
LSBfTnggPD0gX015cGFpci5fTXl2YWwyLl9NeXJlcyAtIF9PbGRfc2l6ZSkgeyANCiAgICAgICAg
ICAgIF9NeXBhaXIuX015dmFsMi5fTXlzaXplID0gX09sZF9zaXplICsgX0NvdW50IC0gX054OyAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgIF9FbGVtKiBjb25zdCBfT2xkX3B0ciAgID0gX015cGFpci5f
TXl2YWwyLl9NeXB0cigpOw0KICAgICAgICAgICAgX0VsZW0qIGNvbnN0IF9JbnNlcnRfYXQgPSBf
T2xkX3B0ciArIF9PZmY7DQogICAgICAgICAgICBfVHJhaXRzOjptb3ZlKF9JbnNlcnRfYXQgKyBf
Q291bnQsIF9JbnNlcnRfYXQgKyBfTngsIF9PbGRfc2l6ZSAtIF9OeCAtIF9PZmYgKyAxKTsNCiAg
ICAgICAgICAgIF9UcmFpdHM6OmFzc2lnbihfSW5zZXJ0X2F0LCBfQ291bnQsIF9DaCk7DQogICAg
ICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX1JlYWxs
b2NhdGVfZ3Jvd19ieSgNCiAgICAgICAgICAgIF9Db3VudCAtIF9OeCwNCiAgICAgICAgICAgIFtd
KF9FbGVtKiBjb25zdCBfTmV3X3B0ciwgY29uc3QgX0VsZW0qIGNvbnN0IF9PbGRfcHRyLCBjb25z
dCBzaXplX3R5cGUgX09sZF9zaXplLCBjb25zdCBzaXplX3R5cGUgX09mZiwNCiAgICAgICAgICAg
ICAgICBjb25zdCBzaXplX3R5cGUgX054LCBjb25zdCBzaXplX3R5cGUgX0NvdW50LCBjb25zdCBf
RWxlbSBfQ2gpIHsNCiAgICAgICAgICAgICAgICBfVHJhaXRzOjpjb3B5KF9OZXdfcHRyLCBfT2xk
X3B0ciwgX09mZik7DQogICAgICAgICAgICAgICAgX1RyYWl0czo6YXNzaWduKF9OZXdfcHRyICsg
X09mZiwgX0NvdW50LCBfQ2gpOw0KICAgICAgICAgICAgICAgIF9UcmFpdHM6OmNvcHkoX05ld19w
dHIgKyBfT2ZmICsgX0NvdW50LCBfT2xkX3B0ciArIF9PZmYgKyBfTngsIF9PbGRfc2l6ZSAtIF9O
eCAtIF9PZmYgKyAxKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBfT2ZmLCBfTngsIF9D
b3VudCwgX0NoKTsNCiAgICB9DQoNCiAgICBiYXNpY19zdHJpbmcmIHJlcGxhY2UoY29uc3QgY29u
c3RfaXRlcmF0b3IgX0ZpcnN0LCBjb25zdCBjb25zdF9pdGVyYXRvciBfTGFzdCwgY29uc3QgYmFz
aWNfc3RyaW5nJiBfUmlnaHQpIHsNCiAgICAgICAgDQogICAgICAgIF9BZGxfdmVyaWZ5X3Jhbmdl
KF9GaXJzdCwgX0xhc3QpOw0KDQoNCiNsaW5lIDM0NDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIHJlcGxh
Y2Uoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfVW5mYW5jeShfRmlyc3QuX1B0cikgLSBfTXlwYWly
Ll9NeXZhbDIuX015cHRyKCkpLA0KICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihf
TGFzdC5fUHRyIC0gX0ZpcnN0Ll9QdHIpLCBfUmlnaHQpOw0KICAgIH0NCg0KDQogICAgdGVtcGxh
dGUgPGNsYXNzIF9TdHJpbmdWaWV3SXNoLCBfSXNfc3RyaW5nX3ZpZXdfaXNoPF9TdHJpbmdWaWV3
SXNoPiA9IDA+DQogICAgYmFzaWNfc3RyaW5nJiByZXBsYWNlKGNvbnN0IGNvbnN0X2l0ZXJhdG9y
IF9GaXJzdCwgY29uc3QgY29uc3RfaXRlcmF0b3IgX0xhc3QsIGNvbnN0IF9TdHJpbmdWaWV3SXNo
JiBfUmlnaHQpIHsNCiAgICAgICAgDQogICAgICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwg
X0xhc3QpOw0KDQoNCiNsaW5lIDM0NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIHJlcGxhY2Uoc3RhdGlj
X2Nhc3Q8c2l6ZV90eXBlPihfVW5mYW5jeShfRmlyc3QuX1B0cikgLSBfTXlwYWlyLl9NeXZhbDIu
X015cHRyKCkpLA0KICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTGFzdC5fUHRy
IC0gX0ZpcnN0Ll9QdHIpLCBfUmlnaHQpOw0KICAgIH0NCiNsaW5lIDM0NTcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIGJh
c2ljX3N0cmluZyYgcmVwbGFjZShjb25zdCBjb25zdF9pdGVyYXRvciBfRmlyc3QsIGNvbnN0IGNv
bnN0X2l0ZXJhdG9yIF9MYXN0LA0KICAgICAgICAgIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyLCBj
b25zdCBzaXplX3R5cGUgX0NvdW50KSB7DQogICAgICAgIA0KICAgICAgICBfQWRsX3ZlcmlmeV9y
YW5nZShfRmlyc3QsIF9MYXN0KTsNCg0KDQojbGluZSAzNDY1ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQogICAgICAgIHJldHVybiBy
ZXBsYWNlKHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1VuZmFuY3koX0ZpcnN0Ll9QdHIpIC0gX015
cGFpci5fTXl2YWwyLl9NeXB0cigpKSwNCiAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdHlw
ZT4oX0xhc3QuX1B0ciAtIF9GaXJzdC5fUHRyKSwgX1B0ciwgX0NvdW50KTsNCiAgICB9DQoNCiAg
ICBiYXNpY19zdHJpbmcmIHJlcGxhY2UoY29uc3QgY29uc3RfaXRlcmF0b3IgX0ZpcnN0LCBjb25z
dCBjb25zdF9pdGVyYXRvciBfTGFzdCwgICBjb25zdCBfRWxlbSogY29uc3QgX1B0cikgew0KICAg
ICAgICANCiAgICAgICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQoNCg0KI2xp
bmUgMzQ3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4c3RyaW5nIg0KICAgICAgICByZXR1cm4gcmVwbGFjZShzdGF0aWNfY2FzdDxzaXplX3R5cGU+
KF9VbmZhbmN5KF9GaXJzdC5fUHRyKSAtIF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSksDQogICAg
ICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9MYXN0Ll9QdHIgLSBfRmlyc3QuX1B0ciks
IF9QdHIpOw0KICAgIH0NCg0KICAgIGJhc2ljX3N0cmluZyYgcmVwbGFjZSgNCiAgICAgICAgY29u
c3QgY29uc3RfaXRlcmF0b3IgX0ZpcnN0LCBjb25zdCBjb25zdF9pdGVyYXRvciBfTGFzdCwgY29u
c3Qgc2l6ZV90eXBlIF9Db3VudCwgY29uc3QgX0VsZW0gX0NoKSB7DQogICAgICAgIA0KICAgICAg
ICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCg0KDQojbGluZSAzNDg2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQog
ICAgICAgIHJldHVybiByZXBsYWNlKHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1VuZmFuY3koX0Zp
cnN0Ll9QdHIpIC0gX015cGFpci5fTXl2YWwyLl9NeXB0cigpKSwNCiAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHNpemVfdHlwZT4oX0xhc3QuX1B0ciAtIF9GaXJzdC5fUHRyKSwgX0NvdW50LCBfQ2gp
Ow0KICAgIH0NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyLCBlbmFibGVfaWZfdDxfSXNf
aXRlcmF0b3JfdjxfSXRlcj4sIGludD4gPSAwPg0KICAgIGJhc2ljX3N0cmluZyYgcmVwbGFjZSgN
CiAgICAgICAgY29uc3QgY29uc3RfaXRlcmF0b3IgX0ZpcnN0LCBjb25zdCBjb25zdF9pdGVyYXRv
ciBfTGFzdCwgY29uc3QgX0l0ZXIgX0ZpcnN0MiwgY29uc3QgX0l0ZXIgX0xhc3QyKSB7DQogICAg
ICAgIA0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCg0KDQojbGlu
ZSAzNDk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhzdHJpbmciDQogICAgICAgIGNvbnN0IGF1dG8gX09mZiAgICA9IHN0YXRpY19jYXN0PHNpemVf
dHlwZT4oX1VuZmFuY3koX0ZpcnN0Ll9QdHIpIC0gX015cGFpci5fTXl2YWwyLl9NeXB0cigpKTsN
CiAgICAgICAgY29uc3QgYXV0byBfTGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTGFz
dC5fUHRyIC0gX0ZpcnN0Ll9QdHIpOw0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3Qy
LCBfTGFzdDIpOw0KICAgICAgICBjb25zdCBhdXRvIF9VRmlyc3QyID0gX0dldF91bndyYXBwZWQo
X0ZpcnN0Mik7DQogICAgICAgIGNvbnN0IGF1dG8gX1VMYXN0MiAgPSBfR2V0X3Vud3JhcHBlZChf
TGFzdDIpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKF9Jc19lbGVtX2NwdHI8ZGVjbHR5cGUoX1VG
aXJzdDIpPjo6dmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybiByZXBsYWNlKF9PZmYsIF9MZW5n
dGgsIF9VRmlyc3QyLCBfQ29udmVydF9zaXplPHNpemVfdHlwZT4oc3RhdGljX2Nhc3Q8c2l6ZV90
PihfVUxhc3QyIC0gX1VGaXJzdDIpKSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBj
b25zdCBiYXNpY19zdHJpbmcgX1JpZ2h0KF9VRmlyc3QyLCBfVUxhc3QyLCBnZXRfYWxsb2NhdG9y
KCkpOw0KICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2UoX09mZiwgX0xlbmd0aCwgX1JpZ2h0Ll9N
eXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplKTsN
CiAgICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM1NDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIFtbbm9kaXNjYXJkXV0g
aXRlcmF0b3IgYmVnaW4oKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBpdGVyYXRvcihfUmVm
YW5jeTxwb2ludGVyPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkpLCA6OnN0ZDo6IGFkZHJlc3Nv
ZihfTXlwYWlyLl9NeXZhbDIpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gY29uc3RfaXRl
cmF0b3IoX1JlZmFuY3k8Y29uc3RfcG9pbnRlcj4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpKSwg
OjpzdGQ6OiBhZGRyZXNzb2YoX015cGFpci5fTXl2YWwyKSk7DQogICAgfQ0KDQogICAgW1tub2Rp
c2NhcmRdXSBpdGVyYXRvciBlbmQoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBpdGVyYXRv
cigNCiAgICAgICAgICAgIF9SZWZhbmN5PHBvaW50ZXI+KF9NeXBhaXIuX015dmFsMi5fTXlwdHIo
KSkgKyBzdGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KF9NeXBhaXIuX015dmFsMi5fTXlzaXpl
KSwNCiAgICAgICAgICAgIDo6c3RkOjogYWRkcmVzc29mKF9NeXBhaXIuX015dmFsMikpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IoDQogICAgICAgICAgICBfUmVmYW5j
eTxjb25zdF9wb2ludGVyPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkpICsgc3RhdGljX2Nhc3Q8
ZGlmZmVyZW5jZV90eXBlPihfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSksDQogICAgICAgICAgICA6
OnN0ZDo6IGFkZHJlc3NvZihfTXlwYWlyLl9NeXZhbDIpKTsNCiAgICB9DQoNCiAgICBfRWxlbSog
X1VuY2hlY2tlZF9iZWdpbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015
dmFsMi5fTXlwdHIoKTsNCiAgICB9DQoNCiAgICBjb25zdCBfRWxlbSogX1VuY2hlY2tlZF9iZWdp
bigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5fTXlw
dHIoKTsNCiAgICB9DQoNCiAgICBfRWxlbSogX1VuY2hlY2tlZF9lbmQoKSBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkgKyBfTXlwYWlyLl9NeXZhbDIu
X015c2l6ZTsNCiAgICB9DQoNCiAgICBjb25zdCBfRWxlbSogX1VuY2hlY2tlZF9lbmQoKSBjb25z
dCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkgKyBf
TXlwYWlyLl9NeXZhbDIuX015c2l6ZTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHJldmVy
c2VfaXRlcmF0b3IgcmJlZ2luKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmV2ZXJzZV9p
dGVyYXRvcihlbmQoKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmV2
ZXJzZV9pdGVyYXRvciByZW5kKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmV2ZXJzZV9p
dGVyYXRvcihiZWdpbigpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBj
b25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBi
ZWdpbigpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RfaXRlcmF0b3IgY2VuZCgp
IGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGVuZCgpOw0KICAgIH0NCg0KICAgIFtb
bm9kaXNjYXJkXV0gY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3Qgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gcmJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gcmVuZCgpOw0KICAgIH0NCg0KICAgIHZvaWQgc2hyaW5rX3RvX2ZpdCgpIHsgDQog
ICAgICAgIGF1dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICBpZiAoIV9N
eV9kYXRhLl9MYXJnZV9zdHJpbmdfZW5nYWdlZCgpKSB7IA0KICAgICAgICAgICAgcmV0dXJuOw0K
ICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9NeV9kYXRhLl9NeXNpemUgPCBfQlVGX1NJWkUpIHsN
CiAgICAgICAgICAgIF9CZWNvbWVfc21hbGwoKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgfQ0KDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfVGFyZ2V0X2NhcGFjaXR5ID0gKDo6c3Rk
OjogbWluKShfTXlfZGF0YS5fTXlzaXplIHwgX0FMTE9DX01BU0ssIG1heF9zaXplKCkpOw0KICAg
ICAgICBpZiAoX1RhcmdldF9jYXBhY2l0eSA8IF9NeV9kYXRhLl9NeXJlcykgeyANCiAgICAgICAg
ICAgIGF1dG8mIF9BbCAgICAgICAgICAgICAgPSBfR2V0YWwoKTsNCiAgICAgICAgICAgIGNvbnN0
IHBvaW50ZXIgX05ld19wdHIgPSBfQWwuYWxsb2NhdGUoX1RhcmdldF9jYXBhY2l0eSArIDEpOyAN
CiAgICAgICAgICAgIF9NeV9kYXRhLl9PcnBoYW5fYWxsKCk7DQogICAgICAgICAgICBfVHJhaXRz
Ojpjb3B5KF9VbmZhbmN5KF9OZXdfcHRyKSwgX1VuZmFuY3koX015X2RhdGEuX0J4Ll9QdHIpLCBf
TXlfZGF0YS5fTXlzaXplICsgMSk7DQogICAgICAgICAgICBfQWwuZGVhbGxvY2F0ZShfTXlfZGF0
YS5fQnguX1B0ciwgX015X2RhdGEuX015cmVzICsgMSk7DQogICAgICAgICAgICBfTXlfZGF0YS5f
QnguX1B0ciA9IF9OZXdfcHRyOw0KICAgICAgICAgICAgX015X2RhdGEuX015cmVzICAgPSBfVGFy
Z2V0X2NhcGFjaXR5Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSByZWZl
cmVuY2UgYXQoY29uc3Qgc2l6ZV90eXBlIF9PZmYpIHsNCiAgICAgICAgX015cGFpci5fTXl2YWwy
Ll9DaGVja19vZmZzZXRfZXhjbHVzaXZlKF9PZmYpOw0KICAgICAgICByZXR1cm4gX015cGFpci5f
TXl2YWwyLl9NeXB0cigpW19PZmZdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rf
cmVmZXJlbmNlIGF0KGNvbnN0IHNpemVfdHlwZSBfT2ZmKSBjb25zdCB7DQogICAgICAgIF9NeXBh
aXIuX015dmFsMi5fQ2hlY2tfb2Zmc2V0X2V4Y2x1c2l2ZShfT2ZmKTsNCiAgICAgICAgcmV0dXJu
IF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKVtfT2ZmXTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHJlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IHNpemVfdHlwZSBfT2ZmKSBub2V4Y2VwdCAg
ew0KDQoNCiNsaW5lIDM2NDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5fTXlw
dHIoKVtfT2ZmXTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X3JlZmVyZW5jZSBv
cGVyYXRvcltdKGNvbnN0IHNpemVfdHlwZSBfT2ZmKSBjb25zdCBub2V4Y2VwdCAgew0KDQoNCiNs
aW5lIDM2NTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceHN0cmluZyINCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKVtfT2Zm
XTsNCiAgICB9DQoNCg0KICAgICBvcGVyYXRvciBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1Ry
YWl0cz4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gYmFzaWNf
c3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+KF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX015
cGFpci5fTXl2YWwyLl9NeXNpemUpOw0KICAgIH0NCiNsaW5lIDM2NjQgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIHZvaWQg
cHVzaF9iYWNrKGNvbnN0IF9FbGVtIF9DaCkgeyANCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9P
bGRfc2l6ZSA9IF9NeXBhaXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBpZiAoX09sZF9zaXpl
IDwgX015cGFpci5fTXl2YWwyLl9NeXJlcykgew0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwy
Ll9NeXNpemUgPSBfT2xkX3NpemUgKyAxOw0KICAgICAgICAgICAgX0VsZW0qIGNvbnN0IF9QdHIg
ICAgICAgPSBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCk7DQogICAgICAgICAgICBfVHJhaXRzOjph
c3NpZ24oX1B0cltfT2xkX3NpemVdLCBfQ2gpOw0KICAgICAgICAgICAgX1RyYWl0czo6YXNzaWdu
KF9QdHJbX09sZF9zaXplICsgMV0sIF9FbGVtKCkpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAg
ICAgICB9DQoNCiAgICAgICAgX1JlYWxsb2NhdGVfZ3Jvd19ieSgNCiAgICAgICAgICAgIDEsDQog
ICAgICAgICAgICBbXShfRWxlbSogY29uc3QgX05ld19wdHIsIGNvbnN0IF9FbGVtKiBjb25zdCBf
T2xkX3B0ciwgY29uc3Qgc2l6ZV90eXBlIF9PbGRfc2l6ZSwgY29uc3QgX0VsZW0gX0NoKSB7DQog
ICAgICAgICAgICAgICAgX1RyYWl0czo6Y29weShfTmV3X3B0ciwgX09sZF9wdHIsIF9PbGRfc2l6
ZSk7DQogICAgICAgICAgICAgICAgX1RyYWl0czo6YXNzaWduKF9OZXdfcHRyW19PbGRfc2l6ZV0s
IF9DaCk7DQogICAgICAgICAgICAgICAgX1RyYWl0czo6YXNzaWduKF9OZXdfcHRyW19PbGRfc2l6
ZSArIDFdLCBfRWxlbSgpKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBfQ2gpOw0KICAg
IH0NCg0KICAgIHZvaWQgcG9wX2JhY2soKSBub2V4Y2VwdCAgew0KICAgICAgICBjb25zdCBzaXpl
X3R5cGUgX09sZF9zaXplID0gX015cGFpci5fTXl2YWwyLl9NeXNpemU7DQoNCg0KI2xpbmUgMzY5
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3Ry
aW5nIg0KICAgICAgICBfRW9zKF9PbGRfc2l6ZSAtIDEpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gcmVmZXJlbmNlIGZyb250KCkgbm9leGNlcHQgIHsNCg0KDQojbGluZSAzNjk3ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoN
CiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKVswXTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0IG5vZXhjZXB0ICB7
DQoNCg0KI2xpbmUgMzcwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015
cHRyKClbMF07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSByZWZlcmVuY2UgYmFjaygpIG5v
ZXhjZXB0ICB7DQoNCg0KI2xpbmUgMzcxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAgICAgIHJldHVybiBfTXlwYWlyLl9N
eXZhbDIuX015cHRyKClbX015cGFpci5fTXl2YWwyLl9NeXNpemUgLSAxXTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0X3JlZmVyZW5jZSBiYWNrKCkgY29uc3Qgbm9leGNlcHQgIHsN
Cg0KDQojbGluZSAzNzIxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5fTXlw
dHIoKVtfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSAtIDFdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gICBjb25zdCBfRWxlbSogY19zdHIoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSAgIGNvbnN0IF9FbGVtKiBkYXRhKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
X015cGFpci5fTXl2YWwyLl9NeXB0cigpOw0KICAgIH0NCg0KDQogICAgW1tub2Rpc2NhcmRdXSAg
IF9FbGVtKiBkYXRhKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015cGFpci5fTXl2YWwy
Ll9NeXB0cigpOw0KICAgIH0NCiNsaW5lIDM3MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6
ZV90eXBlIGxlbmd0aCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIu
X015dmFsMi5fTXlzaXplOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIHNp
emUoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015
c2l6ZTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNv
bnN0IG5vZXhjZXB0IHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9BbGxvY19tYXggICA9IF9B
bHR5X3RyYWl0czo6bWF4X3NpemUoX0dldGFsKCkpOw0KICAgICAgICBjb25zdCBzaXplX3R5cGUg
X1N0b3JhZ2VfbWF4ID0gDQogICAgICAgICAgICAoOjpzdGQ6OiBtYXgpKF9BbGxvY19tYXgsIHN0
YXRpY19jYXN0PHNpemVfdHlwZT4oX0JVRl9TSVpFKSk7DQogICAgICAgIHJldHVybiAoOjpzdGQ6
OiBtaW4pKHN0YXRpY19jYXN0PHNpemVfdHlwZT4oKG51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2Vf
dHlwZT46Om1heCkoKSksDQogICAgICAgICAgICBfU3RvcmFnZV9tYXggLSAxIA0KICAgICAgICAp
Ow0KICAgIH0NCg0KICAgIHZvaWQgcmVzaXplKCBjb25zdCBzaXplX3R5cGUgX05ld3NpemUsIGNv
bnN0IF9FbGVtIF9DaCA9IF9FbGVtKCkpIHsNCiAgICAgICAgDQogICAgICAgIGNvbnN0IHNpemVf
dHlwZSBfT2xkX3NpemUgPSBzaXplKCk7DQogICAgICAgIGlmIChfTmV3c2l6ZSA8PSBfT2xkX3Np
emUpIHsNCiAgICAgICAgICAgIF9Fb3MoX05ld3NpemUpOw0KICAgICAgICB9IGVsc2Ugew0KICAg
ICAgICAgICAgYXBwZW5kKF9OZXdzaXplIC0gX09sZF9zaXplLCBfQ2gpOw0KICAgICAgICB9DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgY2FwYWNpdHkoKSBjb25zdCBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015cmVzOw0KICAgIH0NCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3OTEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAg
ICB2b2lkIHJlc2VydmUoIGNvbnN0IHNpemVfdHlwZSBfTmV3Y2FwID0gMCkgeyANCiAgICAgICAg
aWYgKF9NeXBhaXIuX015dmFsMi5fTXlzaXplID4gX05ld2NhcCkgeyANCiAgICAgICAgICAgIHJl
dHVybjsgDQogICAgICAgIH0NCg0KICAgICAgICBpZiAoX015cGFpci5fTXl2YWwyLl9NeXJlcyA9
PSBfTmV3Y2FwKSB7IA0KICAgICAgICAgICAgcmV0dXJuOyANCiAgICAgICAgfQ0KDQogICAgICAg
IGlmIChfTXlwYWlyLl9NeXZhbDIuX015cmVzIDwgX05ld2NhcCkgeyANCiAgICAgICAgICAgIGNv
bnN0IHNpemVfdHlwZSBfT2xkX3NpemUgPSBfTXlwYWlyLl9NeXZhbDIuX015c2l6ZTsNCiAgICAg
ICAgICAgIF9SZWFsbG9jYXRlX2dyb3dfYnkoDQogICAgICAgICAgICAgICAgX05ld2NhcCAtIF9P
bGRfc2l6ZSwgW10oX0VsZW0qIGNvbnN0IF9OZXdfcHRyLCBjb25zdCBfRWxlbSogY29uc3QgX09s
ZF9wdHIsIGNvbnN0IHNpemVfdHlwZSBfT2xkX3NpemUpIHsNCiAgICAgICAgICAgICAgICAgICAg
X1RyYWl0czo6Y29weShfTmV3X3B0ciwgX09sZF9wdHIsIF9PbGRfc2l6ZSArIDEpOw0KICAgICAg
ICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSA9IF9P
bGRfc2l6ZTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChf
QlVGX1NJWkUgPiBfTmV3Y2FwICYmIF9NeXBhaXIuX015dmFsMi5fTGFyZ2Vfc3RyaW5nX2VuZ2Fn
ZWQoKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBfQmVjb21lX3NtYWxsKCk7DQogICAg
ICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICB9DQojbGluZSAzODIw
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhzdHJp
bmciDQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiBzaXplKCkgPT0gMDsNCiAgICB9DQoNCiAgICBzaXplX3R5cGUgY29weSgg
IF9FbGVtKiBjb25zdCBfUHRyLCBzaXplX3R5cGUgX0NvdW50LCBjb25zdCBzaXplX3R5cGUgX09m
ZiA9IDApIGNvbnN0IHsNCiAgICAgICAgDQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fQ2hlY2tf
b2Zmc2V0KF9PZmYpOw0KICAgICAgICBfQ291bnQgPSBfTXlwYWlyLl9NeXZhbDIuX0NsYW1wX3N1
ZmZpeF9zaXplKF9PZmYsIF9Db3VudCk7DQogICAgICAgIF9UcmFpdHM6OmNvcHkoX1B0ciwgX015
cGFpci5fTXl2YWwyLl9NeXB0cigpICsgX09mZiwgX0NvdW50KTsNCiAgICAgICAgcmV0dXJuIF9D
b3VudDsNCiAgICB9DQoNCiAgICAgIHNpemVfdHlwZSBfQ29weV9zKCAgX0VsZW0qIGNvbnN0IF9E
ZXN0LA0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX0Rlc3Rfc2l6ZSwgc2l6ZV90eXBlIF9Db3Vu
dCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBjb25zdCB7DQogICAgICAgIA0KICAgICAgICBf
TXlwYWlyLl9NeXZhbDIuX0NoZWNrX29mZnNldChfT2ZmKTsNCiAgICAgICAgX0NvdW50ID0gX015
cGFpci5fTXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfT2ZmLCBfQ291bnQpOw0KICAgICAgICBf
VHJhaXRzOjpfQ29weV9zKF9EZXN0LCBfRGVzdF9zaXplLCBfTXlwYWlyLl9NeXZhbDIuX015cHRy
KCkgKyBfT2ZmLCBfQ291bnQpOw0KICAgICAgICByZXR1cm4gX0NvdW50Ow0KICAgIH0NCg0KICAg
IHZvaWQgX1N3YXBfZGF0YShiYXNpY19zdHJpbmcmIF9SaWdodCwgdHJ1ZV90eXBlKSB7DQogICAg
ICAgIA0KICAgICAgICBjb25zdCBhdXRvIF9NeV9kYXRhX21lbSA9DQogICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPig6OnN0ZDo6IGFkZHJlc3NvZihfTXlwYWlyLl9N
eXZhbDIpKSArIF9NZW1jcHlfdmFsX29mZnNldDsNCiAgICAgICAgY29uc3QgYXV0byBfUmlnaHRf
ZGF0YV9tZW0gPQ0KICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
OjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0Ll9NeXBhaXIuX015dmFsMikpICsgX01lbWNweV92YWxf
b2Zmc2V0Ow0KICAgICAgICB1bnNpZ25lZCBjaGFyIF9UZW1wX21lbVtfTWVtY3B5X3ZhbF9zaXpl
XTsNCiAgICAgICAgOjogbWVtY3B5KF9UZW1wX21lbSwgX015X2RhdGFfbWVtLCBfTWVtY3B5X3Zh
bF9zaXplKTsNCiAgICAgICAgOjogbWVtY3B5KF9NeV9kYXRhX21lbSwgX1JpZ2h0X2RhdGFfbWVt
LCBfTWVtY3B5X3ZhbF9zaXplKTsNCiAgICAgICAgOjogbWVtY3B5KF9SaWdodF9kYXRhX21lbSwg
X1RlbXBfbWVtLCBfTWVtY3B5X3ZhbF9zaXplKTsNCiAgICB9DQoNCiAgICB2b2lkIF9Td2FwX2J4
X2xhcmdlX3dpdGhfc21hbGwoX1NjYXJ5X3ZhbCYgX1N0YXJ0c19sYXJnZSwgX1NjYXJ5X3ZhbCYg
X1N0YXJ0c19zbWFsbCkgew0KICAgICAgICANCiAgICAgICAgY29uc3QgcG9pbnRlciBfUHRyID0g
X1N0YXJ0c19sYXJnZS5fQnguX1B0cjsNCiAgICAgICAgX0Rlc3Ryb3lfaW5fcGxhY2UoX1N0YXJ0
c19sYXJnZS5fQnguX1B0cik7DQogICAgICAgIF9UcmFpdHM6OmNvcHkoX1N0YXJ0c19sYXJnZS5f
QnguX0J1ZiwgX1N0YXJ0c19zbWFsbC5fQnguX0J1ZiwgX0JVRl9TSVpFKTsNCiAgICAgICAgX0Nv
bnN0cnVjdF9pbl9wbGFjZShfU3RhcnRzX3NtYWxsLl9CeC5fUHRyLCBfUHRyKTsNCiAgICB9DQoN
CiAgICB2b2lkIF9Td2FwX2RhdGEoYmFzaWNfc3RyaW5nJiBfUmlnaHQsIGZhbHNlX3R5cGUpIHsN
CiAgICAgICAgDQogICAgICAgIGF1dG8mIF9NeV9kYXRhICAgICAgICAgID0gX015cGFpci5fTXl2
YWwyOw0KICAgICAgICBhdXRvJiBfUmlnaHRfZGF0YSAgICAgICA9IF9SaWdodC5fTXlwYWlyLl9N
eXZhbDI7DQogICAgICAgIGNvbnN0IGJvb2wgX015X2xhcmdlICAgID0gX015X2RhdGEuX0xhcmdl
X3N0cmluZ19lbmdhZ2VkKCk7DQogICAgICAgIGNvbnN0IGJvb2wgX1JpZ2h0X2xhcmdlID0gX1Jp
Z2h0X2RhdGEuX0xhcmdlX3N0cmluZ19lbmdhZ2VkKCk7DQogICAgICAgIGlmIChfTXlfbGFyZ2Up
IHsNCiAgICAgICAgICAgIGlmIChfUmlnaHRfbGFyZ2UpIHsgDQogICAgICAgICAgICAgICAgX1N3
YXBfYWRsKF9NeV9kYXRhLl9CeC5fUHRyLCBfUmlnaHRfZGF0YS5fQnguX1B0cik7DQogICAgICAg
ICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgICAgICBfU3dhcF9ieF9sYXJnZV93aXRoX3NtYWxs
KF9NeV9kYXRhLCBfUmlnaHRfZGF0YSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICBpZiAoX1JpZ2h0X2xhcmdlKSB7IA0KICAgICAgICAgICAgICAgIF9Td2Fw
X2J4X2xhcmdlX3dpdGhfc21hbGwoX1JpZ2h0X2RhdGEsIF9NeV9kYXRhKTsNCiAgICAgICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgX0VsZW0gX1RlbXBfYnVmW19CVUZfU0laRV07DQog
ICAgICAgICAgICAgICAgX1RyYWl0czo6Y29weShfVGVtcF9idWYsIF9NeV9kYXRhLl9CeC5fQnVm
LCBfQlVGX1NJWkUpOw0KICAgICAgICAgICAgICAgIF9UcmFpdHM6OmNvcHkoX015X2RhdGEuX0J4
Ll9CdWYsIF9SaWdodF9kYXRhLl9CeC5fQnVmLCBfQlVGX1NJWkUpOw0KICAgICAgICAgICAgICAg
IF9UcmFpdHM6OmNvcHkoX1JpZ2h0X2RhdGEuX0J4Ll9CdWYsIF9UZW1wX2J1ZiwgX0JVRl9TSVpF
KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIDo6c3RkOjogc3dhcChfTXlf
ZGF0YS5fTXlzaXplLCBfUmlnaHRfZGF0YS5fTXlzaXplKTsNCiAgICAgICAgOjpzdGQ6OiBzd2Fw
KF9NeV9kYXRhLl9NeXJlcywgX1JpZ2h0X2RhdGEuX015cmVzKTsNCiAgICB9DQoNCiAgICB2b2lk
IHN3YXAoYmFzaWNfc3RyaW5nJiBfUmlnaHQpIG5vZXhjZXB0ICB7DQogICAgICAgIGlmICh0aGlz
ICE9IDo6c3RkOjogYWRkcmVzc29mKF9SaWdodCkpIHsNCiAgICAgICAgICAgIF9Qb2NzKF9HZXRh
bCgpLCBfUmlnaHQuX0dldGFsKCkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMzkwOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4c3RyaW5nIg0KICAgICAgICB9DQoNCiAgICAgICAgX1N3YXBfZGF0YShfUmlnaHQsIGJvb2xf
Y29uc3RhbnQ8X0Nhbl9tZW1jcHlfdmFsPnt9KTsNCiAgICB9DQoNCg0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfU3RyaW5nVmlld0lzaCwgX0lzX3N0cmluZ192aWV3X2lzaDxfU3RyaW5nVmlld0lzaD4g
PSAwPg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZpbmQoY29uc3QgX1N0cmluZ1ZpZXdJ
c2gmIF9SaWdodCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBjb25zdCB7DQogICAgICAgIA0K
ICAgICAgICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0FzX3ZpZXcgPSBfUmln
aHQ7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9UcmFpdHNfZmluZDxf
VHJhaXRzPigNCiAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX015cGFpci5f
TXl2YWwyLl9NeXNpemUsIF9PZmYsIF9Bc192aWV3LmRhdGEoKSwgX0FzX3ZpZXcuc2l6ZSgpKSk7
DQogICAgfQ0KI2xpbmUgMzkyMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgZmlu
ZChjb25zdCBiYXNpY19zdHJpbmcmIF9SaWdodCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBj
b25zdCBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6
ZV90eXBlPihfVHJhaXRzX2ZpbmQ8X1RyYWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBf
TXlwYWlyLl9NeXZhbDIuX015c2l6ZSwgX09mZiwNCiAgICAgICAgICAgIF9SaWdodC5fTXlwYWly
Ll9NeXZhbDIuX015cHRyKCksIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015c2l6ZSkpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZpbmQoICBjb25zdCBfRWxlbSogY29u
c3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBlIF9PZmYsDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBf
Q291bnQpIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90eXBlPigNCiAgICAgICAgICAgIF9UcmFpdHNfZmluZDxfVHJhaXRzPihfTXlw
YWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBhaXIuX015dmFsMi5fTXlzaXplLCBfT2ZmLCBfUHRy
LCBfQ291bnQpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBmaW5kKCAg
Y29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfT2ZmID0gMCkgY29uc3Qg
bm9leGNlcHQNCiAgICAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdHlwZT4oX1RyYWl0c19maW5kPF9UcmFpdHM+KA0KICAgICAgICAgICAgX015cGFpci5fTXl2
YWwyLl9NeXB0cigpLCBfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSwgX09mZiwgX1B0ciwgX1RyYWl0
czo6bGVuZ3RoKF9QdHIpKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUg
ZmluZChjb25zdCBfRWxlbSBfQ2gsIGNvbnN0IHNpemVfdHlwZSBfT2ZmID0gMCkgY29uc3Qgbm9l
eGNlcHQgIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+
KA0KICAgICAgICAgICAgX1RyYWl0c19maW5kX2NoPF9UcmFpdHM+KF9NeXBhaXIuX015dmFsMi5f
TXlwdHIoKSwgX015cGFpci5fTXl2YWwyLl9NeXNpemUsIF9PZmYsIF9DaCkpOw0KICAgIH0NCg0K
DQogICAgdGVtcGxhdGUgPGNsYXNzIF9TdHJpbmdWaWV3SXNoLCBfSXNfc3RyaW5nX3ZpZXdfaXNo
PF9TdHJpbmdWaWV3SXNoPiA9IDA+DQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgcmZpbmQo
Y29uc3QgX1N0cmluZ1ZpZXdJc2gmIF9SaWdodCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSBucG9z
KSBjb25zdCB7DQogICAgICAgIA0KICAgICAgICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1Ry
YWl0cz4gX0FzX3ZpZXcgPSBfUmlnaHQ7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3R5cGU+KF9UcmFpdHNfcmZpbmQ8X1RyYWl0cz4oDQogICAgICAgICAgICBfTXlwYWlyLl9NeXZh
bDIuX015cHRyKCksIF9NeXBhaXIuX015dmFsMi5fTXlzaXplLCBfT2ZmLCBfQXNfdmlldy5kYXRh
KCksIF9Bc192aWV3LnNpemUoKSkpOw0KICAgIH0NCiNsaW5lIDM5NTggIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIFtbbm9k
aXNjYXJkXV0gc2l6ZV90eXBlIHJmaW5kKGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0LCBjb25z
dCBzaXplX3R5cGUgX09mZiA9IG5wb3MpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgDQogICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9UcmFpdHNfcmZpbmQ8X1RyYWl0cz4o
X015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSwgX09mZiwN
CiAgICAgICAgICAgIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9SaWdodC5fTXlw
YWlyLl9NeXZhbDIuX015c2l6ZSkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90
eXBlIHJmaW5kKCAgY29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfT2Zm
LA0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX0NvdW50KSBjb25zdCBub2V4Y2VwdCAgew0KICAg
ICAgICANCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oDQogICAgICAgICAg
ICBfVHJhaXRzX3JmaW5kPF9UcmFpdHM+KF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX015cGFp
ci5fTXl2YWwyLl9NeXNpemUsIF9PZmYsIF9QdHIsIF9Db3VudCkpOw0KICAgIH0NCg0KICAgIFtb
bm9kaXNjYXJkXV0gc2l6ZV90eXBlIHJmaW5kKCAgY29uc3QgX0VsZW0qIGNvbnN0IF9QdHIsIGNv
bnN0IHNpemVfdHlwZSBfT2ZmID0gbnBvcykgY29uc3Qgbm9leGNlcHQNCiAgICAgew0KICAgICAg
ICANCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1RyYWl0c19yZmluZDxf
VHJhaXRzPigNCiAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX015cGFpci5f
TXl2YWwyLl9NeXNpemUsIF9PZmYsIF9QdHIsIF9UcmFpdHM6Omxlbmd0aChfUHRyKSkpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIHJmaW5kKGNvbnN0IF9FbGVtIF9DaCwg
Y29uc3Qgc2l6ZV90eXBlIF9PZmYgPSBucG9zKSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICAN
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oDQogICAgICAgICAgICBfVHJh
aXRzX3JmaW5kX2NoPF9UcmFpdHM+KF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX015cGFpci5f
TXl2YWwyLl9NeXNpemUsIF9PZmYsIF9DaCkpOw0KICAgIH0NCg0KDQogICAgdGVtcGxhdGUgPGNs
YXNzIF9TdHJpbmdWaWV3SXNoLCBfSXNfc3RyaW5nX3ZpZXdfaXNoPF9TdHJpbmdWaWV3SXNoPiA9
IDA+DQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgZmluZF9maXJzdF9vZihjb25zdCBfU3Ry
aW5nVmlld0lzaCYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX09mZiA9IDApIGNvbnN0IHsNCiAg
ICAgICAgDQogICAgICAgIGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfQXNfdmll
dyA9IF9SaWdodDsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1RyYWl0
c19maW5kX2ZpcnN0X29mPF9UcmFpdHM+KF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX015cGFp
ci5fTXl2YWwyLl9NeXNpemUsDQogICAgICAgICAgICBfT2ZmLCBfQXNfdmlldy5kYXRhKCksIF9B
c192aWV3LnNpemUoKSwgX0lzX3NwZWNpYWxpemF0aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9
KSk7DQogICAgfQ0KI2xpbmUgMzk5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUg
ZmluZF9maXJzdF9vZihjb25zdCBiYXNpY19zdHJpbmcmIF9SaWdodCwgY29uc3Qgc2l6ZV90eXBl
IF9PZmYgPSAwKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90eXBlPihfVHJhaXRzX2ZpbmRfZmlyc3Rfb2Y8X1RyYWl0cz4oX015cGFp
ci5fTXl2YWwyLl9NeXB0cigpLCBfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSwNCiAgICAgICAgICAg
IF9PZmYsIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9SaWdodC5fTXlwYWlyLl9N
eXZhbDIuX015c2l6ZSwNCiAgICAgICAgICAgIF9Jc19zcGVjaWFsaXphdGlvbjxfVHJhaXRzLCBj
aGFyX3RyYWl0cz57fSkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZp
bmRfZmlyc3Rfb2YoICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBlIF9P
ZmYsDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQpIGNvbnN0IG5vZXhjZXB0ICB7DQog
ICAgICAgIA0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfVHJhaXRzX2Zp
bmRfZmlyc3Rfb2Y8X1RyYWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfTXlwYWlyLl9N
eXZhbDIuX015c2l6ZSwNCiAgICAgICAgICAgIF9PZmYsIF9QdHIsIF9Db3VudCwgX0lzX3NwZWNp
YWxpemF0aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9KSk7DQogICAgfQ0KDQogICAgW1tub2Rp
c2NhcmRdXSBzaXplX3R5cGUgZmluZF9maXJzdF9vZiggIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRy
LCBjb25zdCBzaXplX3R5cGUgX09mZiA9IDApIGNvbnN0IG5vZXhjZXB0DQogICAgIHsNCiAgICAg
ICAgDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9UcmFpdHNfZmluZF9m
aXJzdF9vZjxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBhaXIuX015dmFs
Mi5fTXlzaXplLA0KICAgICAgICAgICAgX09mZiwgX1B0ciwgX1RyYWl0czo6bGVuZ3RoKF9QdHIp
LCBfSXNfc3BlY2lhbGl6YXRpb248X1RyYWl0cywgY2hhcl90cmFpdHM+e30pKTsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mKGNvbnN0IF9FbGVtIF9D
aCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwKSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICAN
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oDQogICAgICAgICAgICBfVHJh
aXRzX2ZpbmRfY2g8X1RyYWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfTXlwYWlyLl9N
eXZhbDIuX015c2l6ZSwgX09mZiwgX0NoKSk7DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1N0cmluZ1ZpZXdJc2gsIF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0g
MD4NCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBmaW5kX2xhc3Rfb2YoY29uc3QgX1N0cmlu
Z1ZpZXdJc2gmIF9SaWdodCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSBucG9zKSBjb25zdCB7DQog
ICAgICAgIA0KICAgICAgICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0FzX3Zp
ZXcgPSBfUmlnaHQ7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9UcmFp
dHNfZmluZF9sYXN0X29mPF9UcmFpdHM+KF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX015cGFp
ci5fTXl2YWwyLl9NeXNpemUsDQogICAgICAgICAgICBfT2ZmLCBfQXNfdmlldy5kYXRhKCksIF9B
c192aWV3LnNpemUoKSwgX0lzX3NwZWNpYWxpemF0aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9
KSk7DQogICAgfQ0KI2xpbmUgNDAzMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUg
ZmluZF9sYXN0X29mKGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0LCBzaXplX3R5cGUgX09mZiA9
IG5wb3MpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzaXplX3R5cGU+KF9UcmFpdHNfZmluZF9sYXN0X29mPF9UcmFpdHM+KF9NeXBhaXIuX015
dmFsMi5fTXlwdHIoKSwgX015cGFpci5fTXl2YWwyLl9NeXNpemUsDQogICAgICAgICAgICBfT2Zm
LCBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfUmlnaHQuX015cGFpci5fTXl2YWwy
Ll9NeXNpemUsDQogICAgICAgICAgICBfSXNfc3BlY2lhbGl6YXRpb248X1RyYWl0cywgY2hhcl90
cmFpdHM+e30pKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBmaW5kX2xh
c3Rfb2YoICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBlIF9PZmYsDQog
ICAgICAgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQpIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAg
IA0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfVHJhaXRzX2ZpbmRfbGFz
dF9vZjxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBhaXIuX015dmFsMi5f
TXlzaXplLA0KICAgICAgICAgICAgX09mZiwgX1B0ciwgX0NvdW50LCBfSXNfc3BlY2lhbGl6YXRp
b248X1RyYWl0cywgY2hhcl90cmFpdHM+e30pKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1d
IHNpemVfdHlwZSBmaW5kX2xhc3Rfb2YoICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qg
c2l6ZV90eXBlIF9PZmYgPSBucG9zKSBjb25zdCBub2V4Y2VwdA0KICAgICB7DQogICAgICAgIA0K
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfVHJhaXRzX2ZpbmRfbGFzdF9v
ZjxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBhaXIuX015dmFsMi5fTXlz
aXplLA0KICAgICAgICAgICAgX09mZiwgX1B0ciwgX1RyYWl0czo6bGVuZ3RoKF9QdHIpLCBfSXNf
c3BlY2lhbGl6YXRpb248X1RyYWl0cywgY2hhcl90cmFpdHM+e30pKTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIHNpemVfdHlwZSBmaW5kX2xhc3Rfb2YoY29uc3QgX0VsZW0gX0NoLCBjb25z
dCBzaXplX3R5cGUgX09mZiA9IG5wb3MpIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAgIA0KICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigNCiAgICAgICAgICAgIF9UcmFpdHNf
cmZpbmRfY2g8X1RyYWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpLCBfTXlwYWlyLl9NeXZh
bDIuX015c2l6ZSwgX09mZiwgX0NoKSk7DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1N0cmluZ1ZpZXdJc2gsIF9Jc19zdHJpbmdfdmlld19pc2g8X1N0cmluZ1ZpZXdJc2g+ID0gMD4N
CiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZihjb25zdCBfU3Ry
aW5nVmlld0lzaCYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX09mZiA9IDApIGNvbnN0IHsNCiAg
ICAgICAgDQogICAgICAgIGJhc2ljX3N0cmluZ192aWV3PF9FbGVtLCBfVHJhaXRzPiBfQXNfdmll
dyA9IF9SaWdodDsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oDQogICAg
ICAgICAgICBfVHJhaXRzX2ZpbmRfZmlyc3Rfbm90X29mPF9UcmFpdHM+KF9NeXBhaXIuX015dmFs
Mi5fTXlwdHIoKSwgX015cGFpci5fTXl2YWwyLl9NeXNpemUsIF9PZmYsIF9Bc192aWV3LmRhdGEo
KSwNCiAgICAgICAgICAgICAgICBfQXNfdmlldy5zaXplKCksIF9Jc19zcGVjaWFsaXphdGlvbjxf
VHJhaXRzLCBjaGFyX3RyYWl0cz57fSkpOw0KICAgIH0NCiNsaW5lIDQwNjkgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIFtb
bm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZpbmRfZmlyc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0cmlu
ZyYgX1JpZ2h0LCBjb25zdCBzaXplX3R5cGUgX09mZiA9IDApIGNvbnN0IG5vZXhjZXB0IHsNCiAg
ICAgICAgDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9UcmFpdHNfZmlu
ZF9maXJzdF9ub3Rfb2Y8X1RyYWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpLA0KICAgICAg
ICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUsIF9PZmYsIF9SaWdodC5fTXlwYWlyLl9NeXZh
bDIuX015cHRyKCksIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015c2l6ZSwNCiAgICAgICAgICAg
IF9Jc19zcGVjaWFsaXphdGlvbjxfVHJhaXRzLCBjaGFyX3RyYWl0cz57fSkpOw0KICAgIH0NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZpbmRfZmlyc3Rfbm90X29mKCAgY29uc3QgX0Vs
ZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfT2ZmLA0KICAgICAgICBjb25zdCBzaXpl
X3R5cGUgX0NvdW50KSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1RyYWl0c19maW5kX2ZpcnN0X25vdF9vZjxfVHJhaXRz
PihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksDQogICAgICAgICAgICBfTXlwYWlyLl9NeXZhbDIu
X015c2l6ZSwgX09mZiwgX1B0ciwgX0NvdW50LCBfSXNfc3BlY2lhbGl6YXRpb248X1RyYWl0cywg
Y2hhcl90cmFpdHM+e30pKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBm
aW5kX2ZpcnN0X25vdF9vZiggIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyLCBzaXplX3R5cGUgX09m
ZiA9IDApIGNvbnN0IG5vZXhjZXB0DQogICAgIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3R5cGU+KF9UcmFpdHNfZmluZF9maXJzdF9ub3Rfb2Y8X1RyYWl0cz4o
X015cGFpci5fTXl2YWwyLl9NeXB0cigpLA0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9N
eXNpemUsIF9PZmYsIF9QdHIsIF9UcmFpdHM6Omxlbmd0aChfUHRyKSwgX0lzX3NwZWNpYWxpemF0
aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9KSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSBzaXplX3R5cGUgZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgX0VsZW0gX0NoLCBjb25zdCBzaXpl
X3R5cGUgX09mZiA9IDApIGNvbnN0IG5vZXhjZXB0DQogICAgIHsNCiAgICAgICAgDQogICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KA0KICAgICAgICAgICAgX1RyYWl0c19maW5k
X25vdF9jaDxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBhaXIuX015dmFs
Mi5fTXlzaXplLCBfT2ZmLCBfQ2gpKTsNCiAgICB9DQoNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
U3RyaW5nVmlld0lzaCwgX0lzX3N0cmluZ192aWV3X2lzaDxfU3RyaW5nVmlld0lzaD4gPSAwPg0K
ICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgX1N0cmlu
Z1ZpZXdJc2gmIF9SaWdodCwgY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSBucG9zKSBjb25zdCB7DQog
ICAgICAgIA0KICAgICAgICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0FzX3Zp
ZXcgPSBfUmlnaHQ7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KA0KICAg
ICAgICAgICAgX1RyYWl0c19maW5kX2xhc3Rfbm90X29mPF9UcmFpdHM+KF9NeXBhaXIuX015dmFs
Mi5fTXlwdHIoKSwgX015cGFpci5fTXl2YWwyLl9NeXNpemUsIF9PZmYsIF9Bc192aWV3LmRhdGEo
KSwNCiAgICAgICAgICAgICAgICBfQXNfdmlldy5zaXplKCksIF9Jc19zcGVjaWFsaXphdGlvbjxf
VHJhaXRzLCBjaGFyX3RyYWl0cz57fSkpOw0KICAgIH0NCiNsaW5lIDQxMDggIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCg0KICAgIFtb
bm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5n
JiBfUmlnaHQsIGNvbnN0IHNpemVfdHlwZSBfT2ZmID0gbnBvcykgY29uc3Qgbm9leGNlcHQgew0K
ICAgICAgICANCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1RyYWl0c19m
aW5kX2xhc3Rfbm90X29mPF9UcmFpdHM+KF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwNCiAgICAg
ICAgICAgIF9NeXBhaXIuX015dmFsMi5fTXlzaXplLCBfT2ZmLCBfUmlnaHQuX015cGFpci5fTXl2
YWwyLl9NeXB0cigpLCBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9NeXNpemUsDQogICAgICAgICAg
ICBfSXNfc3BlY2lhbGl6YXRpb248X1RyYWl0cywgY2hhcl90cmFpdHM+e30pKTsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBmaW5kX2xhc3Rfbm90X29mKCAgY29uc3QgX0Vs
ZW0qIGNvbnN0IF9QdHIsIGNvbnN0IHNpemVfdHlwZSBfT2ZmLA0KICAgICAgICBjb25zdCBzaXpl
X3R5cGUgX0NvdW50KSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1RyYWl0c19maW5kX2xhc3Rfbm90X29mPF9UcmFpdHM+
KF9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwNCiAgICAgICAgICAgIF9NeXBhaXIuX015dmFsMi5f
TXlzaXplLCBfT2ZmLCBfUHRyLCBfQ291bnQsIF9Jc19zcGVjaWFsaXphdGlvbjxfVHJhaXRzLCBj
aGFyX3RyYWl0cz57fSkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIGZp
bmRfbGFzdF9ub3Rfb2YoICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwgY29uc3Qgc2l6ZV90eXBl
IF9PZmYgPSBucG9zKSBjb25zdCBub2V4Y2VwdA0KICAgICB7DQogICAgICAgIA0KICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfVHJhaXRzX2ZpbmRfbGFzdF9ub3Rfb2Y8X1Ry
YWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpLA0KICAgICAgICAgICAgX015cGFpci5fTXl2
YWwyLl9NeXNpemUsIF9PZmYsIF9QdHIsIF9UcmFpdHM6Omxlbmd0aChfUHRyKSwgX0lzX3NwZWNp
YWxpemF0aW9uPF9UcmFpdHMsIGNoYXJfdHJhaXRzPnt9KSk7DQogICAgfQ0KDQogICAgW1tub2Rp
c2NhcmRdXSBzaXplX3R5cGUgZmluZF9sYXN0X25vdF9vZihjb25zdCBfRWxlbSBfQ2gsIGNvbnN0
IHNpemVfdHlwZSBfT2ZmID0gbnBvcykgY29uc3Qgbm9leGNlcHQNCiAgICAgew0KICAgICAgICAN
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oDQogICAgICAgICAgICBfVHJh
aXRzX3JmaW5kX25vdF9jaDxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBh
aXIuX015dmFsMi5fTXlzaXplLCBfT2ZmLCBfQ2gpKTsNCiAgICB9DQoNCg0KICAgIFtbbm9kaXNj
YXJkXV0gYm9vbCBfU3RhcnRzX3dpdGgoY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9U
cmFpdHM+IF9SaWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gYmFzaWNfc3Ry
aW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+KCp0aGlzKS5fU3RhcnRzX3dpdGgoX1JpZ2h0KTsNCiAg
ICB9DQojbGluZSA0MTQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBbW25vZGlzY2FyZF1dIGJhc2ljX3N0cmluZyBzdWJz
dHIoY29uc3Qgc2l6ZV90eXBlIF9PZmYgPSAwLCBjb25zdCBzaXplX3R5cGUgX0NvdW50ID0gbnBv
cykgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIGJhc2ljX3N0cmluZygqdGhpcywg
X09mZiwgX0NvdW50LCBnZXRfYWxsb2NhdG9yKCkpOw0KICAgIH0NCg0KICAgIGJvb2wgX0VxdWFs
KGNvbnN0IGJhc2ljX3N0cmluZyYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7IA0KICAgICAgICBy
ZXR1cm4gX1RyYWl0c19lcXVhbDxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9N
eXBhaXIuX015dmFsMi5fTXlzaXplLA0KICAgICAgICAgICAgX1JpZ2h0Ll9NeXBhaXIuX015dmFs
Mi5fTXlwdHIoKSwgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplKTsNCiAgICB9DQoNCiAg
ICBib29sIF9FcXVhbCggIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyKSBjb25zdCBub2V4Y2VwdCB7
IA0KICAgICAgICByZXR1cm4gX1RyYWl0c19lcXVhbDxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIu
X015cHRyKCksIF9NeXBhaXIuX015dmFsMi5fTXlzaXplLCBfUHRyLCBfVHJhaXRzOjpsZW5ndGgo
X1B0cikpOw0KICAgIH0NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9TdHJpbmdWaWV3SXNoLCBf
SXNfc3RyaW5nX3ZpZXdfaXNoPF9TdHJpbmdWaWV3SXNoPiA9IDA+DQogICAgW1tub2Rpc2NhcmRd
XSBpbnQgY29tcGFyZShjb25zdCBfU3RyaW5nVmlld0lzaCYgX1JpZ2h0KSBjb25zdCB7IA0KICAg
ICAgICBiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4gX0FzX3ZpZXcgPSBfUmlnaHQ7
DQogICAgICAgIHJldHVybiBfVHJhaXRzX2NvbXBhcmU8X1RyYWl0cz4oDQogICAgICAgICAgICBf
TXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBhaXIuX015dmFsMi5fTXlzaXplLCBfQXNfdmll
dy5kYXRhKCksIF9Bc192aWV3LnNpemUoKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNz
IF9TdHJpbmdWaWV3SXNoLCBfSXNfc3RyaW5nX3ZpZXdfaXNoPF9TdHJpbmdWaWV3SXNoPiA9IDA+
DQogICAgW1tub2Rpc2NhcmRdXSBpbnQgY29tcGFyZShjb25zdCBzaXplX3R5cGUgX09mZiwgY29u
c3Qgc2l6ZV90eXBlIF9OeCwgY29uc3QgX1N0cmluZ1ZpZXdJc2gmIF9SaWdodCkgY29uc3Qgew0K
ICAgICAgICANCiAgICAgICAgYmFzaWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9Bc192
aWV3ID0gX1JpZ2h0Ow0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX0NoZWNrX29mZnNldChfT2Zm
KTsNCiAgICAgICAgcmV0dXJuIF9UcmFpdHNfY29tcGFyZTxfVHJhaXRzPihfTXlwYWlyLl9NeXZh
bDIuX015cHRyKCkgKyBfT2ZmLCBfTXlwYWlyLl9NeXZhbDIuX0NsYW1wX3N1ZmZpeF9zaXplKF9P
ZmYsIF9OeCksDQogICAgICAgICAgICBfQXNfdmlldy5kYXRhKCksIF9Bc192aWV3LnNpemUoKSk7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9TdHJpbmdWaWV3SXNoLCBfSXNfc3RyaW5n
X3ZpZXdfaXNoPF9TdHJpbmdWaWV3SXNoPiA9IDA+DQogICAgW1tub2Rpc2NhcmRdXSBpbnQgY29t
cGFyZShjb25zdCBzaXplX3R5cGUgX09mZiwgY29uc3Qgc2l6ZV90eXBlIF9OeCwgY29uc3QgX1N0
cmluZ1ZpZXdJc2gmIF9SaWdodCwNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9Sb2ZmLCBjb25z
dCBzaXplX3R5cGUgX0NvdW50ID0gbnBvcykgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgYmFz
aWNfc3RyaW5nX3ZpZXc8X0VsZW0sIF9UcmFpdHM+IF9Bc192aWV3ID0gX1JpZ2h0Ow0KICAgICAg
ICBfTXlwYWlyLl9NeXZhbDIuX0NoZWNrX29mZnNldChfT2ZmKTsNCiAgICAgICAgY29uc3QgYXV0
byBfV2l0aF9zdWJzdHIgPSBfQXNfdmlldy5zdWJzdHIoX1JvZmYsIF9Db3VudCk7DQogICAgICAg
IHJldHVybiBfVHJhaXRzX2NvbXBhcmU8X1RyYWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigp
ICsgX09mZiwgX015cGFpci5fTXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfT2ZmLCBfTngpLA0K
ICAgICAgICAgICAgX1dpdGhfc3Vic3RyLmRhdGEoKSwgX1dpdGhfc3Vic3RyLnNpemUoKSk7DQog
ICAgfQ0KI2xpbmUgNDE4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx4c3RyaW5nIg0KDQogICAgW1tub2Rpc2NhcmRdXSBpbnQgY29tcGFyZShjb25z
dCBiYXNpY19zdHJpbmcmIF9SaWdodCkgY29uc3Qgbm9leGNlcHQgeyANCiAgICAgICAgcmV0dXJu
IF9UcmFpdHNfY29tcGFyZTxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIuX015cHRyKCksIF9NeXBh
aXIuX015dmFsMi5fTXlzaXplLA0KICAgICAgICAgICAgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5f
TXlwdHIoKSwgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplKTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIGludCBjb21wYXJlKHNpemVfdHlwZSBfT2ZmLCBzaXplX3R5cGUgX054LCBj
b25zdCBiYXNpY19zdHJpbmcmIF9SaWdodCkgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgX015
cGFpci5fTXl2YWwyLl9DaGVja19vZmZzZXQoX09mZik7DQogICAgICAgIHJldHVybiBfVHJhaXRz
X2NvbXBhcmU8X1RyYWl0cz4oX015cGFpci5fTXl2YWwyLl9NeXB0cigpICsgX09mZiwgX015cGFp
ci5fTXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6ZShfT2ZmLCBfTngpLA0KICAgICAgICAgICAgX1Jp
Z2h0Ll9NeXBhaXIuX015dmFsMi5fTXlwdHIoKSwgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5fTXlz
aXplKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGludCBjb21wYXJlKGNvbnN0IHNpemVf
dHlwZSBfT2ZmLCBjb25zdCBzaXplX3R5cGUgX054LCBjb25zdCBiYXNpY19zdHJpbmcmIF9SaWdo
dCwgY29uc3Qgc2l6ZV90eXBlIF9Sb2ZmLA0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX0NvdW50
ID0gbnBvcykgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9DaGVj
a19vZmZzZXQoX09mZik7DQogICAgICAgIF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX0NoZWNrX29m
ZnNldChfUm9mZik7DQogICAgICAgIHJldHVybiBfVHJhaXRzX2NvbXBhcmU8X1RyYWl0cz4oX015
cGFpci5fTXl2YWwyLl9NeXB0cigpICsgX09mZiwgX015cGFpci5fTXl2YWwyLl9DbGFtcF9zdWZm
aXhfc2l6ZShfT2ZmLCBfTngpLA0KICAgICAgICAgICAgX1JpZ2h0Ll9NeXBhaXIuX015dmFsMi5f
TXlwdHIoKSArIF9Sb2ZmLCBfUmlnaHQuX015cGFpci5fTXl2YWwyLl9DbGFtcF9zdWZmaXhfc2l6
ZShfUm9mZiwgX0NvdW50KSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpbnQgY29tcGFy
ZSggIGNvbnN0IF9FbGVtKiBjb25zdCBfUHRyKSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICAN
CiAgICAgICAgcmV0dXJuIF9UcmFpdHNfY29tcGFyZTxfVHJhaXRzPihfTXlwYWlyLl9NeXZhbDIu
X015cHRyKCksIF9NeXBhaXIuX015dmFsMi5fTXlzaXplLCBfUHRyLCBfVHJhaXRzOjpsZW5ndGgo
X1B0cikpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaW50IGNvbXBhcmUoY29uc3Qgc2l6
ZV90eXBlIF9PZmYsIGNvbnN0IHNpemVfdHlwZSBfTngsICAgY29uc3QgX0VsZW0qIGNvbnN0IF9Q
dHIpIGNvbnN0IHsNCiAgICAgICAgDQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fQ2hlY2tfb2Zm
c2V0KF9PZmYpOw0KICAgICAgICByZXR1cm4gX1RyYWl0c19jb21wYXJlPF9UcmFpdHM+KF9NeXBh
aXIuX015dmFsMi5fTXlwdHIoKSArIF9PZmYsIF9NeXBhaXIuX015dmFsMi5fQ2xhbXBfc3VmZml4
X3NpemUoX09mZiwgX054KSwNCiAgICAgICAgICAgIF9QdHIsIF9UcmFpdHM6Omxlbmd0aChfUHRy
KSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpbnQgY29tcGFyZShjb25zdCBzaXplX3R5
cGUgX09mZiwgY29uc3Qgc2l6ZV90eXBlIF9OeCwgICBjb25zdCBfRWxlbSogY29uc3QgX1B0ciwN
CiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCkgY29uc3QgeyANCiAgICAgICAgX015cGFp
ci5fTXl2YWwyLl9DaGVja19vZmZzZXQoX09mZik7DQogICAgICAgIHJldHVybiBfVHJhaXRzX2Nv
bXBhcmU8X1RyYWl0cz4oDQogICAgICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015cHRyKCkgKyBf
T2ZmLCBfTXlwYWlyLl9NeXZhbDIuX0NsYW1wX3N1ZmZpeF9zaXplKF9PZmYsIF9OeCksIF9QdHIs
IF9Db3VudCk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA0MjUxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhzdHJpbmciDQoNCiAgICBbW25vZGlzY2FyZF1dIGFsbG9jYXRvcl90
eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxhbGxvY2F0b3JfdHlwZT4oX0dldGFsKCkpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAg
ICBbW25vZGlzY2FyZF1dIHN0YXRpYyBzaXplX3R5cGUgX0NhbGN1bGF0ZV9ncm93dGgoDQogICAg
ICAgIGNvbnN0IHNpemVfdHlwZSBfUmVxdWVzdGVkLCBjb25zdCBzaXplX3R5cGUgX09sZCwgY29u
c3Qgc2l6ZV90eXBlIF9NYXgpIG5vZXhjZXB0IHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9N
YXNrZWQgPSBfUmVxdWVzdGVkIHwgX0FMTE9DX01BU0s7DQogICAgICAgIGlmIChfTWFza2VkID4g
X01heCkgeyANCiAgICAgICAgICAgIHJldHVybiBfTWF4Ow0KICAgICAgICB9DQoNCiAgICAgICAg
aWYgKF9PbGQgPiBfTWF4IC0gX09sZCAvIDIpIHsgDQogICAgICAgICAgICByZXR1cm4gX01heDsN
CiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAoOjpzdGQ6OiBtYXgpKF9NYXNrZWQsIF9PbGQg
KyBfT2xkIC8gMik7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgX0NhbGN1
bGF0ZV9ncm93dGgoY29uc3Qgc2l6ZV90eXBlIF9SZXF1ZXN0ZWQpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIF9DYWxjdWxhdGVfZ3Jvd3RoKF9SZXF1ZXN0ZWQsIF9NeXBhaXIuX015
dmFsMi5fTXlyZXMsIG1heF9zaXplKCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
RnR5LCBjbGFzcy4uLiBfQXJnVHlzPg0KICAgIGJhc2ljX3N0cmluZyYgX1JlYWxsb2NhdGVfZm9y
KGNvbnN0IHNpemVfdHlwZSBfTmV3X3NpemUsIF9GdHkgX0ZuLCBfQXJnVHlzLi4uIF9BcmdzKSB7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYgKF9OZXdfc2l6ZSA+IG1heF9zaXplKCkp
IHsNCiAgICAgICAgICAgIF9YbGVuX3N0cmluZygpOyANCiAgICAgICAgfQ0KDQogICAgICAgIGNv
bnN0IHNpemVfdHlwZSBfT2xkX2NhcGFjaXR5ID0gX015cGFpci5fTXl2YWwyLl9NeXJlczsNCiAg
ICAgICAgY29uc3Qgc2l6ZV90eXBlIF9OZXdfY2FwYWNpdHkgPSBfQ2FsY3VsYXRlX2dyb3d0aChf
TmV3X3NpemUpOw0KICAgICAgICBhdXRvJiBfQWwgICAgICAgICAgICAgICAgICAgICA9IF9HZXRh
bCgpOw0KICAgICAgICBjb25zdCBwb2ludGVyIF9OZXdfcHRyICAgICAgICA9IF9BbC5hbGxvY2F0
ZShfTmV3X2NhcGFjaXR5ICsgMSk7IA0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX09ycGhhbl9h
bGwoKTsNCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUgPSBfTmV3X3NpemU7DQogICAg
ICAgIF9NeXBhaXIuX015dmFsMi5fTXlyZXMgID0gX05ld19jYXBhY2l0eTsNCiAgICAgICAgX0Zu
KF9VbmZhbmN5KF9OZXdfcHRyKSwgX05ld19zaXplLCBfQXJncy4uLik7DQogICAgICAgIGlmIChf
QlVGX1NJWkUgPD0gX09sZF9jYXBhY2l0eSkgew0KICAgICAgICAgICAgX0FsLmRlYWxsb2NhdGUo
X015cGFpci5fTXl2YWwyLl9CeC5fUHRyLCBfT2xkX2NhcGFjaXR5ICsgMSk7DQogICAgICAgICAg
ICBfTXlwYWlyLl9NeXZhbDIuX0J4Ll9QdHIgPSBfTmV3X3B0cjsNCiAgICAgICAgfSBlbHNlIHsN
CiAgICAgICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX015cGFpci5fTXl2YWwyLl9CeC5fUHRy
LCBfTmV3X3B0cik7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0K
DQogICAgdGVtcGxhdGUgPGNsYXNzIF9GdHksIGNsYXNzLi4uIF9BcmdUeXM+DQogICAgYmFzaWNf
c3RyaW5nJiBfUmVhbGxvY2F0ZV9ncm93X2J5KGNvbnN0IHNpemVfdHlwZSBfU2l6ZV9pbmNyZWFz
ZSwgX0Z0eSBfRm4sIF9BcmdUeXMuLi4gX0FyZ3MpIHsNCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgICAgID0gX015cGFpci5fTXl2YWwyOw0KICAgICAg
ICBjb25zdCBzaXplX3R5cGUgX09sZF9zaXplID0gX015X2RhdGEuX015c2l6ZTsNCiAgICAgICAg
aWYgKG1heF9zaXplKCkgLSBfT2xkX3NpemUgPCBfU2l6ZV9pbmNyZWFzZSkgew0KICAgICAgICAg
ICAgX1hsZW5fc3RyaW5nKCk7IA0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBl
IF9OZXdfc2l6ZSAgICAgPSBfT2xkX3NpemUgKyBfU2l6ZV9pbmNyZWFzZTsNCiAgICAgICAgY29u
c3Qgc2l6ZV90eXBlIF9PbGRfY2FwYWNpdHkgPSBfTXlfZGF0YS5fTXlyZXM7DQogICAgICAgIGNv
bnN0IHNpemVfdHlwZSBfTmV3X2NhcGFjaXR5ID0gX0NhbGN1bGF0ZV9ncm93dGgoX05ld19zaXpl
KTsNCiAgICAgICAgYXV0byYgX0FsICAgICAgICAgICAgICAgICAgICAgPSBfR2V0YWwoKTsNCiAg
ICAgICAgY29uc3QgcG9pbnRlciBfTmV3X3B0ciAgICAgICAgPSBfQWwuYWxsb2NhdGUoX05ld19j
YXBhY2l0eSArIDEpOyANCiAgICAgICAgX015X2RhdGEuX09ycGhhbl9hbGwoKTsNCiAgICAgICAg
X015X2RhdGEuX015c2l6ZSAgICAgID0gX05ld19zaXplOw0KICAgICAgICBfTXlfZGF0YS5fTXly
ZXMgICAgICAgPSBfTmV3X2NhcGFjaXR5Ow0KICAgICAgICBfRWxlbSogY29uc3QgX1Jhd19uZXcg
PSBfVW5mYW5jeShfTmV3X3B0cik7DQogICAgICAgIGlmIChfQlVGX1NJWkUgPD0gX09sZF9jYXBh
Y2l0eSkgew0KICAgICAgICAgICAgY29uc3QgcG9pbnRlciBfT2xkX3B0ciA9IF9NeV9kYXRhLl9C
eC5fUHRyOw0KICAgICAgICAgICAgX0ZuKF9SYXdfbmV3LCBfVW5mYW5jeShfT2xkX3B0ciksIF9P
bGRfc2l6ZSwgX0FyZ3MuLi4pOw0KICAgICAgICAgICAgX0FsLmRlYWxsb2NhdGUoX09sZF9wdHIs
IF9PbGRfY2FwYWNpdHkgKyAxKTsNCiAgICAgICAgICAgIF9NeV9kYXRhLl9CeC5fUHRyID0gX05l
d19wdHI7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBfRm4oX1Jhd19uZXcsIF9NeV9k
YXRhLl9CeC5fQnVmLCBfT2xkX3NpemUsIF9BcmdzLi4uKTsNCiAgICAgICAgICAgIF9Db25zdHJ1
Y3RfaW5fcGxhY2UoX015X2RhdGEuX0J4Ll9QdHIsIF9OZXdfcHRyKTsNCiAgICAgICAgfQ0KDQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB2b2lkIF9CZWNvbWVfc21hbGwoKSB7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIF9NeXBhaXIuX015dmFsMi5f
T3JwaGFuX2FsbCgpOw0KICAgICAgICBjb25zdCBwb2ludGVyIF9QdHIgPSBfTXlwYWlyLl9NeXZh
bDIuX0J4Ll9QdHI7DQogICAgICAgIGF1dG8mIF9BbCAgICAgICAgICA9IF9HZXRhbCgpOw0KICAg
ICAgICBfRGVzdHJveV9pbl9wbGFjZShfTXlwYWlyLl9NeXZhbDIuX0J4Ll9QdHIpOw0KICAgICAg
ICBfVHJhaXRzOjpjb3B5KF9NeXBhaXIuX015dmFsMi5fQnguX0J1ZiwgX1VuZmFuY3koX1B0ciks
IF9NeXBhaXIuX015dmFsMi5fTXlzaXplICsgMSk7DQogICAgICAgIF9BbC5kZWFsbG9jYXRlKF9Q
dHIsIF9NeXBhaXIuX015dmFsMi5fTXlyZXMgKyAxKTsNCiAgICAgICAgX015cGFpci5fTXl2YWwy
Ll9NeXJlcyA9IF9CVUZfU0laRSAtIDE7DQogICAgfQ0KDQogICAgdm9pZCBfRW9zKGNvbnN0IHNp
emVfdHlwZSBfTmV3c2l6ZSkgeyANCiAgICAgICAgX1RyYWl0czo6YXNzaWduKF9NeXBhaXIuX015
dmFsMi5fTXlwdHIoKVtfTXlwYWlyLl9NeXZhbDIuX015c2l6ZSA9IF9OZXdzaXplXSwgX0VsZW0o
KSk7DQogICAgfQ0KDQogICAgdm9pZCBfVGlkeV9pbml0KCkgbm9leGNlcHQgeyANCiAgICAgICAg
X015cGFpci5fTXl2YWwyLl9NeXNpemUgPSAwOw0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015
cmVzICA9IF9CVUZfU0laRSAtIDE7DQogICAgICAgIA0KICAgICAgICBfVHJhaXRzOjphc3NpZ24o
X015cGFpci5fTXl2YWwyLl9CeC5fQnVmWzBdLCBfRWxlbSgpKTsNCiAgICB9DQoNCiAgICB2b2lk
IF9UaWR5X2RlYWxsb2NhdGUoKSBub2V4Y2VwdCB7IA0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIu
X09ycGhhbl9hbGwoKTsNCiAgICAgICAgaWYgKF9NeXBhaXIuX015dmFsMi5fTGFyZ2Vfc3RyaW5n
X2VuZ2FnZWQoKSkgew0KICAgICAgICAgICAgY29uc3QgcG9pbnRlciBfUHRyID0gX015cGFpci5f
TXl2YWwyLl9CeC5fUHRyOw0KICAgICAgICAgICAgYXV0byYgX0FsICAgICAgICAgID0gX0dldGFs
KCk7DQogICAgICAgICAgICBfRGVzdHJveV9pbl9wbGFjZShfTXlwYWlyLl9NeXZhbDIuX0J4Ll9Q
dHIpOw0KICAgICAgICAgICAgX0FsLmRlYWxsb2NhdGUoX1B0ciwgX015cGFpci5fTXl2YWwyLl9N
eXJlcyArIDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUg
PSAwOw0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015cmVzICA9IF9CVUZfU0laRSAtIDE7DQog
ICAgICAgIA0KICAgICAgICBfVHJhaXRzOjphc3NpZ24oX015cGFpci5fTXl2YWwyLl9CeC5fQnVm
WzBdLCBfRWxlbSgpKTsNCiAgICB9DQoNCnB1YmxpYzoNCiAgICB2b2lkIF9PcnBoYW5fYWxsKCkg
bm9leGNlcHQgeyANCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9PcnBoYW5fYWxsKCk7DQogICAg
fQ0KDQpwcml2YXRlOg0KICAgIHZvaWQgX1N3YXBfcHJveHlfYW5kX2l0ZXJhdG9ycyhiYXNpY19z
dHJpbmcmIF9SaWdodCkgew0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX1N3YXBfcHJveHlfYW5k
X2l0ZXJhdG9ycyhfUmlnaHQuX015cGFpci5fTXl2YWwyKTsNCiAgICB9DQoNCiAgICBfQWx0eSYg
X0dldGFsKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015cGFpci5fR2V0X2ZpcnN0KCk7
DQogICAgfQ0KDQogICAgY29uc3QgX0FsdHkmIF9HZXRhbCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIF9NeXBhaXIuX0dldF9maXJzdCgpOw0KICAgIH0NCg0KICAgIF9Db21wcmVz
c2VkX3BhaXI8X0FsdHksIF9TY2FyeV92YWw+IF9NeXBhaXI7DQp9Ow0KDQoNCnRlbXBsYXRlIDxj
bGFzcyBfSXRlciwgY2xhc3MgX0FsbG9jID0gYWxsb2NhdG9yPF9JdGVyX3ZhbHVlX3Q8X0l0ZXI+
PiwNCiAgICBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PF9Jc19pdGVyYXRvcjxfSXRlcj4sIF9J
c19hbGxvY2F0b3I8X0FsbG9jPj4sIGludD4gPSAwPg0KYmFzaWNfc3RyaW5nKF9JdGVyLCBfSXRl
ciwgX0FsbG9jID0gX0FsbG9jKCkpDQogICAgLT4gYmFzaWNfc3RyaW5nPF9JdGVyX3ZhbHVlX3Q8
X0l0ZXI+LCBjaGFyX3RyYWl0czxfSXRlcl92YWx1ZV90PF9JdGVyPj4sIF9BbGxvYz47DQoNCnRl
bXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jID0gYWxsb2Nh
dG9yPF9FbGVtPiwNCiAgICBlbmFibGVfaWZfdDxfSXNfYWxsb2NhdG9yPF9BbGxvYz46OnZhbHVl
LCBpbnQ+ID0gMD4NCmV4cGxpY2l0IGJhc2ljX3N0cmluZyhiYXNpY19zdHJpbmdfdmlldzxfRWxl
bSwgX1RyYWl0cz4sIGNvbnN0IF9BbGxvYyYgPSBfQWxsb2MoKSkNCiAgICAtPiBiYXNpY19zdHJp
bmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz47DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xh
c3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jID0gYWxsb2NhdG9yPF9FbGVtPiwNCiAgICBlbmFibGVf
aWZfdDxfSXNfYWxsb2NhdG9yPF9BbGxvYz46OnZhbHVlLCBpbnQ+ID0gMD4NCmJhc2ljX3N0cmlu
ZyhiYXNpY19zdHJpbmdfdmlldzxfRWxlbSwgX1RyYWl0cz4sIF9HdWlkZV9zaXplX3R5cGVfdDxf
QWxsb2M+LCBfR3VpZGVfc2l6ZV90eXBlX3Q8X0FsbG9jPiwNCiAgICBjb25zdCBfQWxsb2MmID0g
X0FsbG9jKCkpIC0+IGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPjsNCiNsaW5l
IDQ0MDkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eHN0cmluZyINCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBf
QWxsb2M+DQp2b2lkIHN3YXAoYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBf
TGVmdCwgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBfUmlnaHQpIG5vZXhj
ZXB0DQogew0KICAgIF9MZWZ0LnN3YXAoX1JpZ2h0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9F
bGVtLCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJhc2ljX3N0
cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiBvcGVyYXRvcisoDQogICAgY29uc3QgYmFzaWNf
c3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBfTGVmdCwgY29uc3QgYmFzaWNfc3RyaW5n
PF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICBjb25zdCBhdXRvIF9MZWZ0
X3NpemUgID0gX0xlZnQuc2l6ZSgpOw0KICAgIGNvbnN0IGF1dG8gX1JpZ2h0X3NpemUgPSBfUmln
aHQuc2l6ZSgpOw0KICAgIGlmIChfTGVmdC5tYXhfc2l6ZSgpIC0gX0xlZnRfc2l6ZSA8IF9SaWdo
dF9zaXplKSB7DQogICAgICAgIF9YbGVuX3N0cmluZygpOw0KICAgIH0NCg0KICAgIHJldHVybiB7
X1N0cmluZ19jb25zdHJ1Y3Rvcl9jb25jYXRfdGFne30sIF9MZWZ0LCBfTGVmdC5jX3N0cigpLCBf
TGVmdF9zaXplLCBfUmlnaHQuY19zdHIoKSwgX1JpZ2h0X3NpemV9Ow0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0g
YmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+IG9wZXJhdG9yKygNCiAgICAgIGNv
bnN0IF9FbGVtKiBjb25zdCBfTGVmdCwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRz
LCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICB1c2luZyBfU2l6ZV90eXBlICAgICAgID0gdHlwZW5h
bWUgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGU7DQogICAg
Y29uc3QgYXV0byBfTGVmdF9zaXplICA9IF9Db252ZXJ0X3NpemU8X1NpemVfdHlwZT4oX1RyYWl0
czo6bGVuZ3RoKF9MZWZ0KSk7DQogICAgY29uc3QgYXV0byBfUmlnaHRfc2l6ZSA9IF9SaWdodC5z
aXplKCk7DQogICAgaWYgKF9SaWdodC5tYXhfc2l6ZSgpIC0gX1JpZ2h0X3NpemUgPCBfTGVmdF9z
aXplKSB7DQogICAgICAgIF9YbGVuX3N0cmluZygpOw0KICAgIH0NCg0KICAgIHJldHVybiB7X1N0
cmluZ19jb25zdHJ1Y3Rvcl9jb25jYXRfdGFne30sIF9SaWdodCwgX0xlZnQsIF9MZWZ0X3NpemUs
IF9SaWdodC5jX3N0cigpLCBfUmlnaHRfc2l6ZX07DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxl
bSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBiYXNpY19zdHJp
bmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4gb3BlcmF0b3IrKA0KICAgIGNvbnN0IF9FbGVtIF9M
ZWZ0LCBjb25zdCBiYXNpY19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9SaWdodCkg
ew0KICAgIGNvbnN0IGF1dG8gX1JpZ2h0X3NpemUgPSBfUmlnaHQuc2l6ZSgpOw0KICAgIGlmIChf
UmlnaHRfc2l6ZSA9PSBfUmlnaHQubWF4X3NpemUoKSkgew0KICAgICAgICBfWGxlbl9zdHJpbmco
KTsNCiAgICB9DQoNCiAgICByZXR1cm4ge19TdHJpbmdfY29uc3RydWN0b3JfY29uY2F0X3RhZ3t9
LCBfUmlnaHQsIDo6c3RkOjogYWRkcmVzc29mKF9MZWZ0KSwgMSwgX1JpZ2h0LmNfc3RyKCksIF9S
aWdodF9zaXplfTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBj
bGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywg
X0FsbG9jPiBvcGVyYXRvcisoDQogICAgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRz
LCBfQWxsb2M+JiBfTGVmdCwgICBjb25zdCBfRWxlbSogY29uc3QgX1JpZ2h0KSB7DQogICAgdXNp
bmcgX1NpemVfdHlwZSAgICAgICA9IHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0
cywgX0FsbG9jPjo6c2l6ZV90eXBlOw0KICAgIGNvbnN0IGF1dG8gX0xlZnRfc2l6ZSAgPSBfTGVm
dC5zaXplKCk7DQogICAgY29uc3QgYXV0byBfUmlnaHRfc2l6ZSA9IF9Db252ZXJ0X3NpemU8X1Np
emVfdHlwZT4oX1RyYWl0czo6bGVuZ3RoKF9SaWdodCkpOw0KICAgIGlmIChfTGVmdC5tYXhfc2l6
ZSgpIC0gX0xlZnRfc2l6ZSA8IF9SaWdodF9zaXplKSB7DQogICAgICAgIF9YbGVuX3N0cmluZygp
Ow0KICAgIH0NCg0KICAgIHJldHVybiB7X1N0cmluZ19jb25zdHJ1Y3Rvcl9jb25jYXRfdGFne30s
IF9MZWZ0LCBfTGVmdC5jX3N0cigpLCBfTGVmdF9zaXplLCBfUmlnaHQsIF9SaWdodF9zaXplfTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2M+
DQpbW25vZGlzY2FyZF1dIGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiBvcGVy
YXRvcisoDQogICAgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBf
TGVmdCwgY29uc3QgX0VsZW0gX1JpZ2h0KSB7DQogICAgY29uc3QgYXV0byBfTGVmdF9zaXplID0g
X0xlZnQuc2l6ZSgpOw0KICAgIGlmIChfTGVmdF9zaXplID09IF9MZWZ0Lm1heF9zaXplKCkpIHsN
CiAgICAgICAgX1hsZW5fc3RyaW5nKCk7DQogICAgfQ0KDQogICAgcmV0dXJuIHtfU3RyaW5nX2Nv
bnN0cnVjdG9yX2NvbmNhdF90YWd7fSwgX0xlZnQsIF9MZWZ0LmNfc3RyKCksIF9MZWZ0X3NpemUs
IDo6c3RkOjogYWRkcmVzc29mKF9SaWdodCksIDF9Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Vs
ZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0gYmFzaWNfc3Ry
aW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+IG9wZXJhdG9yKygNCiAgICBjb25zdCBiYXNpY19z
dHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9MZWZ0LCBiYXNpY19zdHJpbmc8X0VsZW0s
IF9UcmFpdHMsIF9BbGxvYz4mJiBfUmlnaHQpIHsNCiAgICByZXR1cm4gOjpzdGQ6OiBtb3ZlKF9S
aWdodC5pbnNlcnQoMCwgX0xlZnQpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFz
cyBfVHJhaXRzLCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJhc2ljX3N0cmluZzxfRWxl
bSwgX1RyYWl0cywgX0FsbG9jPiBvcGVyYXRvcisoDQogICAgYmFzaWNfc3RyaW5nPF9FbGVtLCBf
VHJhaXRzLCBfQWxsb2M+JiYgX0xlZnQsIGNvbnN0IGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0
cywgX0FsbG9jPiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuIDo6c3RkOjogbW92ZShfTGVmdC5hcHBl
bmQoX1JpZ2h0KSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywg
Y2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBiYXNpY19zdHJpbmc8X0VsZW0sIF9UcmFpdHMs
IF9BbGxvYz4gb3BlcmF0b3IrKA0KICAgIGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0Fs
bG9jPiYmIF9MZWZ0LCBiYXNpY19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mJiBfUmln
aHQpIHsNCg0KDQoNCg0KDQoNCiNsaW5lIDQ0OTggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiAgICByZXR1cm4ge19TdHJpbmdfY29u
c3RydWN0b3JfY29uY2F0X3RhZ3t9LCBfTGVmdCwgX1JpZ2h0fTsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJh
c2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiBvcGVyYXRvcisoDQogICAgICBjb25z
dCBfRWxlbSogY29uc3QgX0xlZnQsIGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9j
PiYmIF9SaWdodCkgew0KICAgIHJldHVybiA6OnN0ZDo6IG1vdmUoX1JpZ2h0Lmluc2VydCgwLCBf
TGVmdCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNz
IF9BbGxvYz4NCltbbm9kaXNjYXJkXV0gYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxs
b2M+IG9wZXJhdG9yKygNCiAgICBjb25zdCBfRWxlbSBfTGVmdCwgYmFzaWNfc3RyaW5nPF9FbGVt
LCBfVHJhaXRzLCBfQWxsb2M+JiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuIDo6c3RkOjogbW92ZShf
UmlnaHQuaW5zZXJ0KDAsIDEsIF9MZWZ0KSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwg
Y2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBiYXNpY19zdHJpbmc8
X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4gb3BlcmF0b3IrKA0KICAgIGJhc2ljX3N0cmluZzxfRWxl
bSwgX1RyYWl0cywgX0FsbG9jPiYmIF9MZWZ0LCAgIGNvbnN0IF9FbGVtKiBjb25zdCBfUmlnaHQp
IHsNCiAgICByZXR1cm4gOjpzdGQ6OiBtb3ZlKF9MZWZ0LmFwcGVuZChfUmlnaHQpKTsNCn0NCg0K
dGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2M+DQpbW25v
ZGlzY2FyZF1dIGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiBvcGVyYXRvciso
DQogICAgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiYgX0xlZnQsIGNvbnN0
IF9FbGVtIF9SaWdodCkgew0KICAgIF9MZWZ0LnB1c2hfYmFjayhfUmlnaHQpOw0KICAgIHJldHVy
biA6OnN0ZDo6IG1vdmUoX0xlZnQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNz
IF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj09KA0K
ICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX0xlZnQsIGNv
bnN0IGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX1JpZ2h0KSBub2V4Y2Vw
dCB7DQogICAgcmV0dXJuIF9MZWZ0Ll9FcXVhbChfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0gYm9v
bCBvcGVyYXRvcj09KCAgY29uc3QgX0VsZW0qIGNvbnN0IF9MZWZ0LCBjb25zdCBiYXNpY19zdHJp
bmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9SaWdodCkgew0KICAgIHJldHVybiBfUmlnaHQu
X0VxdWFsKF9MZWZ0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRz
LCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I9PShjb25zdCBiYXNp
Y19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9MZWZ0LCAgIGNvbnN0IF9FbGVtKiBj
b25zdCBfUmlnaHQpIHsNCiAgICByZXR1cm4gX0xlZnQuX0VxdWFsKF9SaWdodCk7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KW1tub2Rp
c2NhcmRdXSBib29sIG9wZXJhdG9yIT0oDQogICAgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBf
VHJhaXRzLCBfQWxsb2M+JiBfTGVmdCwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRz
LCBfQWxsb2M+JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBfUmln
aHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9B
bGxvYz4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvciE9KCAgY29uc3QgX0VsZW0qIGNvbnN0
IF9MZWZ0LCBjb25zdCBiYXNpY19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9SaWdo
dCkgew0KICAgIHJldHVybiAhKF9MZWZ0ID09IF9SaWdodCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFz
cyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBib29s
IG9wZXJhdG9yIT0oY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBf
TGVmdCwgICBjb25zdCBfRWxlbSogY29uc3QgX1JpZ2h0KSB7DQogICAgcmV0dXJuICEoX0xlZnQg
PT0gX1JpZ2h0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBj
bGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8KA0KICAgIGNvbnN0IGJh
c2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX0xlZnQsIGNvbnN0IGJhc2ljX3N0
cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgcmV0
dXJuIF9MZWZ0LmNvbXBhcmUoX1JpZ2h0KSA8IDA7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxl
bSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJh
dG9yPCggIGNvbnN0IF9FbGVtKiBjb25zdCBfTGVmdCwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVt
LCBfVHJhaXRzLCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX1JpZ2h0LmNvbXBhcmUo
X0xlZnQpID4gMDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBj
bGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGJhc2ljX3N0
cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX0xlZnQsICAgY29uc3QgX0VsZW0qIGNvbnN0
IF9SaWdodCkgew0KICAgIHJldHVybiBfTGVmdC5jb21wYXJlKF9SaWdodCkgPCAwOw0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCltbbm9k
aXNjYXJkXV0gYm9vbCBvcGVyYXRvcj4oDQogICAgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBf
VHJhaXRzLCBfQWxsb2M+JiBfTGVmdCwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRz
LCBfQWxsb2M+JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX1JpZ2h0IDwgX0xlZnQ7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9j
Pg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPiggIGNvbnN0IF9FbGVtKiBjb25zdCBfTGVm
dCwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBfUmlnaHQpIHsN
CiAgICByZXR1cm4gX1JpZ2h0IDwgX0xlZnQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwg
Y2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9y
Pihjb25zdCBiYXNpY19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9MZWZ0LCAgIGNv
bnN0IF9FbGVtKiBjb25zdCBfUmlnaHQpIHsNCiAgICByZXR1cm4gX1JpZ2h0IDwgX0xlZnQ7DQp9
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0K
W1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPD0oDQogICAgY29uc3QgYmFzaWNfc3RyaW5nPF9F
bGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBfTGVmdCwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBf
VHJhaXRzLCBfQWxsb2M+JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gIShfUmlnaHQg
PCBfTGVmdCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xh
c3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPD0oICBjb25zdCBfRWxlbSog
Y29uc3QgX0xlZnQsIGNvbnN0IGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYg
X1JpZ2h0KSB7DQogICAgcmV0dXJuICEoX1JpZ2h0IDwgX0xlZnQpOw0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0g
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IGJhc2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9j
PiYgX0xlZnQsICAgY29uc3QgX0VsZW0qIGNvbnN0IF9SaWdodCkgew0KICAgIHJldHVybiAhKF9S
aWdodCA8IF9MZWZ0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRz
LCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I+PSgNCiAgICBjb25z
dCBiYXNpY19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9MZWZ0LCBjb25zdCBiYXNp
Y19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9SaWdodCkgbm9leGNlcHQgew0KICAg
IHJldHVybiAhKF9MZWZ0IDwgX1JpZ2h0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBj
bGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I+
PSggIGNvbnN0IF9FbGVtKiBjb25zdCBfTGVmdCwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBf
VHJhaXRzLCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShfTGVmdCA8IF9SaWdodCk7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9j
Pg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPj0oY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVt
LCBfVHJhaXRzLCBfQWxsb2M+JiBfTGVmdCwgICBjb25zdCBfRWxlbSogY29uc3QgX1JpZ2h0KSB7
DQogICAgcmV0dXJuICEoX0xlZnQgPCBfUmlnaHQpOw0KfQ0KDQp1c2luZyBzdHJpbmcgID0gYmFz
aWNfc3RyaW5nPGNoYXIsIGNoYXJfdHJhaXRzPGNoYXI+LCBhbGxvY2F0b3I8Y2hhcj4+Ow0KdXNp
bmcgd3N0cmluZyA9IGJhc2ljX3N0cmluZzx3Y2hhcl90LCBjaGFyX3RyYWl0czx3Y2hhcl90Piwg
YWxsb2NhdG9yPHdjaGFyX3Q+PjsNCg0KDQoNCnVzaW5nIHUxNnN0cmluZyA9IGJhc2ljX3N0cmlu
ZzxjaGFyMTZfdCwgY2hhcl90cmFpdHM8Y2hhcjE2X3Q+LCBhbGxvY2F0b3I8Y2hhcjE2X3Q+PjsN
CnVzaW5nIHUzMnN0cmluZyA9IGJhc2ljX3N0cmluZzxjaGFyMzJfdCwgY2hhcl90cmFpdHM8Y2hh
cjMyX3Q+LCBhbGxvY2F0b3I8Y2hhcjMyX3Q+PjsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0s
IGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCnN0cnVjdCBoYXNoPGJhc2ljX3N0cmluZzxf
RWxlbSwgX1RyYWl0cywgX0FsbG9jPj4gew0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RM
NDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUs
IGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
QURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJh
aXRzLCBfQWxsb2M+IGFyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBT
VEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlw
ZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZz
IGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgx
N19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxM
X0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUg
cmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBzaXplX3QgcmVzdWx0X3R5cGU7DQoN
CiAgICBbW25vZGlzY2FyZF1dIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IGJhc2ljX3N0cmluZzxf
RWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX0tleXZhbCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gX0hhc2hfYXJyYXlfcmVwcmVzZW50YXRpb24oX0tleXZhbC5jX3N0cigpLCBfS2V5
dmFsLnNpemUoKSk7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNz
IF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCmJhc2ljX2lzdHJlYW08X0VsZW0sIF9UcmFpdHM+JiBv
cGVyYXRvcj4+KA0KICAgIGJhc2ljX2lzdHJlYW08X0VsZW0sIF9UcmFpdHM+JiYgX0lzdHIsIGJh
c2ljX3N0cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX1N0cikgew0KICAgIHVzaW5nIF9N
eWlzICAgPSBiYXNpY19pc3RyZWFtPF9FbGVtLCBfVHJhaXRzPjsNCiAgICB1c2luZyBfQ3R5cGUg
ID0gdHlwZW5hbWUgX015aXM6Ol9DdHlwZTsNCiAgICB1c2luZyBfTXlzdHIgID0gYmFzaWNfc3Ry
aW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+Ow0KICAgIHVzaW5nIF9NeXNpenQgPSB0eXBlbmFt
ZSBfTXlzdHI6OnNpemVfdHlwZTsNCg0KICAgIHR5cGVuYW1lIF9NeWlzOjppb3N0YXRlIF9TdGF0
ZSA9IF9NeWlzOjpnb29kYml0Ow0KICAgIGJvb2wgX0NoYW5nZWQgICAgICAgICAgICAgICAgICA9
IGZhbHNlOw0KICAgIGNvbnN0IHR5cGVuYW1lIF9NeWlzOjpzZW50cnkgX09rKF9Jc3RyKTsNCg0K
ICAgIGlmIChfT2spIHsgDQogICAgICAgIGNvbnN0IF9DdHlwZSYgX0N0eXBlX2ZhYyA9IDo6c3Rk
OjogdXNlX2ZhY2V0PF9DdHlwZT4oX0lzdHIuZ2V0bG9jKCkpOw0KICAgICAgICBfU3RyLmVyYXNl
KCk7DQoNCiAgICAgICAgew0KICAgICAgICBfTXlzaXp0IF9TaXplOw0KICAgICAgICBpZiAoMCA8
IF9Jc3RyLndpZHRoKCkgJiYgc3RhdGljX2Nhc3Q8X015c2l6dD4oX0lzdHIud2lkdGgoKSkgPCBf
U3RyLm1heF9zaXplKCkpIHsNCiAgICAgICAgICAgIF9TaXplID0gc3RhdGljX2Nhc3Q8X015c2l6
dD4oX0lzdHIud2lkdGgoKSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBfU2l6ZSA9
IF9TdHIubWF4X3NpemUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHR5cGVuYW1lIF9UcmFpdHM6
OmludF90eXBlIF9NZXRhID0gX0lzdHIucmRidWYoKS0+c2dldGMoKTsNCg0KICAgICAgICBmb3Ig
KDsgMCA8IF9TaXplOyAtLV9TaXplLCBfTWV0YSA9IF9Jc3RyLnJkYnVmKCktPnNuZXh0YygpKSB7
DQogICAgICAgICAgICBpZiAoX1RyYWl0czo6ZXFfaW50X3R5cGUoX1RyYWl0czo6ZW9mKCksIF9N
ZXRhKSkgeyANCiAgICAgICAgICAgICAgICBfU3RhdGUgfD0gX015aXM6OmVvZmJpdDsNCiAgICAg
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoX0N0eXBlX2ZhYy5pcyhf
Q3R5cGU6OnNwYWNlLCBfVHJhaXRzOjp0b19jaGFyX3R5cGUoX01ldGEpKSkgew0KICAgICAgICAg
ICAgICAgIGJyZWFrOyANCiAgICAgICAgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgICAgIF9T
dHIucHVzaF9iYWNrKF9UcmFpdHM6OnRvX2NoYXJfdHlwZShfTWV0YSkpOw0KICAgICAgICAgICAg
ICAgIF9DaGFuZ2VkID0gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICB9
DQogICAgfQ0KDQogICAgX0lzdHIud2lkdGgoMCk7DQogICAgaWYgKCFfQ2hhbmdlZCkgew0KICAg
ICAgICBfU3RhdGUgfD0gX015aXM6OmZhaWxiaXQ7DQogICAgfQ0KDQogICAgX0lzdHIuc2V0c3Rh
dGUoX1N0YXRlKTsNCiAgICByZXR1cm4gX0lzdHI7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxl
bSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jPg0KYmFzaWNfaXN0cmVhbTxfRWxlbSwgX1Ry
YWl0cz4mIG9wZXJhdG9yPj4oDQogICAgYmFzaWNfaXN0cmVhbTxfRWxlbSwgX1RyYWl0cz4mIF9J
c3RyLCBiYXNpY19zdHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9TdHIpIHsNCiAgICBy
ZXR1cm4gOjpzdGQ6OiBtb3ZlKF9Jc3RyKSA+PiBfU3RyOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCmJhc2ljX29zdHJlYW08X0VsZW0s
IF9UcmFpdHM+JiBvcGVyYXRvcjw8KA0KICAgIGJhc2ljX29zdHJlYW08X0VsZW0sIF9UcmFpdHM+
JiBfT3N0ciwgY29uc3QgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxsb2M+JiBfU3Ry
KSB7DQogICAgcmV0dXJuIF9JbnNlcnRfc3RyaW5nKF9Pc3RyLCBfU3RyLmRhdGEoKSwgX1N0ci5z
aXplKCkpOw0KfQ0KDQoNCmlubGluZSBuYW1lc3BhY2UgbGl0ZXJhbHMgew0KICAgIGlubGluZSBu
YW1lc3BhY2Ugc3RyaW5nX2xpdGVyYWxzIHsNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBpbmxpbmUg
c3RyaW5nIG9wZXJhdG9yIiIgcyhjb25zdCBjaGFyKiBfU3RyLCBzaXplX3QgX0xlbikgew0KICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZyhfU3RyLCBfTGVuKTsNCiAgICAgICAgfQ0KDQogICAgICAg
IFtbbm9kaXNjYXJkXV0gaW5saW5lIHdzdHJpbmcgb3BlcmF0b3IiIiBzKGNvbnN0IHdjaGFyX3Qq
IF9TdHIsIHNpemVfdCBfTGVuKSB7DQogICAgICAgICAgICByZXR1cm4gd3N0cmluZyhfU3RyLCBf
TGVuKTsNCiAgICAgICAgfQ0KDQoNCg0KDQoNCg0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gaW5s
aW5lIHUxNnN0cmluZyBvcGVyYXRvciIiIHMoY29uc3QgY2hhcjE2X3QqIF9TdHIsIHNpemVfdCBf
TGVuKSB7DQogICAgICAgICAgICByZXR1cm4gdTE2c3RyaW5nKF9TdHIsIF9MZW4pOw0KICAgICAg
ICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBpbmxpbmUgdTMyc3RyaW5nIG9wZXJhdG9yIiIg
cyhjb25zdCBjaGFyMzJfdCogX1N0ciwgc2l6ZV90IF9MZW4pIHsNCiAgICAgICAgICAgIHJldHVy
biB1MzJzdHJpbmcoX1N0ciwgX0xlbik7DQogICAgICAgIH0NCiAgICB9IA0KfSANCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDc0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4c3RyaW5nIg0KDQoNCm5hbWVzcGFjZSBwbXIgew0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9FbGVt
Pj4NCiAgICB1c2luZyBiYXNpY19zdHJpbmcgPSA6OnN0ZDo6IGJhc2ljX3N0cmluZzxfRWxlbSwg
X1RyYWl0cywgcG9seW1vcnBoaWNfYWxsb2NhdG9yPF9FbGVtPj47DQoNCiAgICB1c2luZyBzdHJp
bmcgPSBiYXNpY19zdHJpbmc8Y2hhcj47DQoNCg0KDQogICAgdXNpbmcgdTE2c3RyaW5nID0gYmFz
aWNfc3RyaW5nPGNoYXIxNl90PjsNCiAgICB1c2luZyB1MzJzdHJpbmcgPSBiYXNpY19zdHJpbmc8
Y2hhcjMyX3Q+Ow0KICAgIHVzaW5nIHdzdHJpbmcgICA9IGJhc2ljX3N0cmluZzx3Y2hhcl90PjsN
Cn0gDQojbGluZSA0NzU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhzdHJpbmciDQp9DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI3ByYWdt
YSBwYWNrKHBvcCkNCiNsaW5lIDQ3NjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiNsaW5lIDQ3NjYgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHN0cmluZyINCiNsaW5lIDEyICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN0cmluZyINCg0K
DQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcY2N0eXBlIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIHBhY2socHVzaCwgOCkNCiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGUgOiA0MTgwIDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4
NyA0NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODgg
NTAyNiA1MDI3IDUwNDUgNjI5NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCnVzaW5nIDo6IGlzYWxudW07DQp1c2lu
ZyA6OiBpc2FscGhhOw0KdXNpbmcgOjogaXNjbnRybDsNCnVzaW5nIDo6IGlzZGlnaXQ7DQp1c2lu
ZyA6OiBpc2dyYXBoOw0KdXNpbmcgOjogaXNsb3dlcjsNCnVzaW5nIDo6IGlzcHJpbnQ7DQp1c2lu
ZyA6OiBpc3B1bmN0Ow0KdXNpbmcgOjogaXNzcGFjZTsNCnVzaW5nIDo6IGlzdXBwZXI7DQp1c2lu
ZyA6OiBpc3hkaWdpdDsNCnVzaW5nIDo6IHRvbG93ZXI7DQp1c2luZyA6OiB0b3VwcGVyOw0KDQp1
c2luZyA6OiBpc2JsYW5rOw0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEg
cGFjayhwb3ApDQoNCiNsaW5lIDYxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGNjdHlwZSINCiNsaW5lIDYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNjdHlwZSINCiNsaW5lIDE2ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN0cmluZyINCg0KI3ByYWdt
YSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcg
NDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUw
MjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0VsZW0sIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvYz4NCmJh
c2ljX2lzdHJlYW08X0VsZW0sIF9UcmFpdHM+JiBnZXRsaW5lKGJhc2ljX2lzdHJlYW08X0VsZW0s
IF9UcmFpdHM+JiYgX0lzdHIsDQogICAgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJhaXRzLCBfQWxs
b2M+JiBfU3RyLA0KICAgIGNvbnN0IF9FbGVtIF9EZWxpbSkgeyANCiAgICB1c2luZyBfTXlpcyA9
IGJhc2ljX2lzdHJlYW08X0VsZW0sIF9UcmFpdHM+Ow0KDQogICAgdHlwZW5hbWUgX015aXM6Omlv
c3RhdGUgX1N0YXRlID0gX015aXM6Omdvb2RiaXQ7DQogICAgYm9vbCBfQ2hhbmdlZCAgICAgICAg
ICAgICAgICAgID0gZmFsc2U7DQogICAgY29uc3QgdHlwZW5hbWUgX015aXM6OnNlbnRyeSBfT2so
X0lzdHIsIHRydWUpOw0KDQogICAgaWYgKF9PaykgeyANCiAgICAgICAgew0KICAgICAgICBfU3Ry
LmVyYXNlKCk7DQogICAgICAgIGNvbnN0IHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIF9NZXRh
ZGVsaW0gPSBfVHJhaXRzOjp0b19pbnRfdHlwZShfRGVsaW0pOw0KICAgICAgICB0eXBlbmFtZSBf
VHJhaXRzOjppbnRfdHlwZSBfTWV0YSAgICAgICAgICAgID0gX0lzdHIucmRidWYoKS0+c2dldGMo
KTsNCg0KICAgICAgICBmb3IgKDs7IF9NZXRhID0gX0lzdHIucmRidWYoKS0+c25leHRjKCkpIHsN
CiAgICAgICAgICAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfVHJhaXRzOjplb2YoKSwgX01l
dGEpKSB7IA0KICAgICAgICAgICAgICAgIF9TdGF0ZSB8PSBfTXlpczo6ZW9mYml0Ow0KICAgICAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChfVHJhaXRzOjplcV9pbnRf
dHlwZShfTWV0YSwgX01ldGFkZWxpbSkpIHsgDQogICAgICAgICAgICAgICAgX0NoYW5nZWQgPSB0
cnVlOw0KICAgICAgICAgICAgICAgIF9Jc3RyLnJkYnVmKCktPnNidW1wYygpOw0KICAgICAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChfU3RyLm1heF9zaXplKCkgPD0g
X1N0ci5zaXplKCkpIHsgDQogICAgICAgICAgICAgICAgX1N0YXRlIHw9IF9NeWlzOjpmYWlsYml0
Ow0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfSBlbHNlIHsgDQogICAgICAg
ICAgICAgICAgX1N0ciArPSBfVHJhaXRzOjp0b19jaGFyX3R5cGUoX01ldGEpOw0KICAgICAgICAg
ICAgICAgIF9DaGFuZ2VkID0gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgaWYgKCFfQ2hhbmdlZCkgew0KICAgICAgICBfU3RhdGUgfD0gX015
aXM6OmZhaWxiaXQ7DQogICAgfQ0KDQogICAgX0lzdHIuc2V0c3RhdGUoX1N0YXRlKTsNCiAgICBy
ZXR1cm4gX0lzdHI7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywg
Y2xhc3MgX0FsbG9jPg0KYmFzaWNfaXN0cmVhbTxfRWxlbSwgX1RyYWl0cz4mIGdldGxpbmUoYmFz
aWNfaXN0cmVhbTxfRWxlbSwgX1RyYWl0cz4mJiBfSXN0ciwNCiAgICBiYXNpY19zdHJpbmc8X0Vs
ZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9TdHIpIHsgDQogICAgcmV0dXJuIGdldGxpbmUoX0lzdHIs
IF9TdHIsIF9Jc3RyLndpZGVuKCdcbicpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBj
bGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2M+DQpiYXNpY19pc3RyZWFtPF9FbGVtLCBfVHJhaXRz
PiYgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9FbGVtLCBfVHJhaXRzPiYgX0lzdHIsIGJhc2ljX3N0
cmluZzxfRWxlbSwgX1RyYWl0cywgX0FsbG9jPiYgX1N0ciwNCiAgICBjb25zdCBfRWxlbSBfRGVs
aW0pIHsgDQogICAgcmV0dXJuIGdldGxpbmUoOjpzdGQ6OiBtb3ZlKF9Jc3RyKSwgX1N0ciwgX0Rl
bGltKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBf
QWxsb2M+DQpiYXNpY19pc3RyZWFtPF9FbGVtLCBfVHJhaXRzPiYgZ2V0bGluZShiYXNpY19pc3Ry
ZWFtPF9FbGVtLCBfVHJhaXRzPiYgX0lzdHIsDQogICAgYmFzaWNfc3RyaW5nPF9FbGVtLCBfVHJh
aXRzLCBfQWxsb2M+JiBfU3RyKSB7IA0KICAgIHJldHVybiBnZXRsaW5lKDo6c3RkOjogbW92ZShf
SXN0ciksIF9TdHIsIF9Jc3RyLndpZGVuKCdcbicpKTsNCn0NCg0KDQppbmxpbmUgaW50IHN0b2ko
Y29uc3Qgc3RyaW5nJiBfU3RyLCBzaXplX3QqIF9JZHggPSBudWxscHRyLCBpbnQgX0Jhc2UgPSAx
MCkgew0KICAgIA0KICAgIGludCYgX0Vycm5vX3JlZiAgPSAoKl9lcnJubygpKTsgDQogICAgY29u
c3QgY2hhciogX1B0ciA9IF9TdHIuY19zdHIoKTsNCiAgICBjaGFyKiBfRXB0cjsNCiAgICBfRXJy
bm9fcmVmICAgICAgPSAwOw0KICAgIGNvbnN0IGxvbmcgX0FucyA9IDo6IHN0cnRvbChfUHRyLCAm
X0VwdHIsIF9CYXNlKTsNCg0KICAgIGlmIChfUHRyID09IF9FcHRyKSB7DQogICAgICAgIF9YaW52
YWxpZF9hcmd1bWVudCgiaW52YWxpZCBzdG9pIGFyZ3VtZW50Iik7DQogICAgfQ0KDQogICAgaWYg
KF9FcnJub19yZWYgPT0gMzQgfHwgX0FucyA8ICgtMjE0NzQ4MzY0NyAtIDEpIHx8IDIxNDc0ODM2
NDcgPCBfQW5zKSB7DQogICAgICAgIF9Yb3V0X29mX3JhbmdlKCJzdG9pIGFyZ3VtZW50IG91dCBv
ZiByYW5nZSIpOw0KICAgIH0NCg0KICAgIGlmIChfSWR4KSB7DQogICAgICAgICpfSWR4ID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihfRXB0ciAtIF9QdHIpOw0KICAgIH0NCg0KICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KF9BbnMpOw0KfQ0KDQppbmxpbmUgbG9uZyBzdG9sKGNvbnN0IHN0cmluZyYg
X1N0ciwgc2l6ZV90KiBfSWR4ID0gbnVsbHB0ciwgaW50IF9CYXNlID0gMTApIHsNCiAgICANCiAg
ICBpbnQmIF9FcnJub19yZWYgID0gKCpfZXJybm8oKSk7IA0KICAgIGNvbnN0IGNoYXIqIF9QdHIg
PSBfU3RyLmNfc3RyKCk7DQogICAgY2hhciogX0VwdHI7DQogICAgX0Vycm5vX3JlZiAgICAgID0g
MDsNCiAgICBjb25zdCBsb25nIF9BbnMgPSA6OiBzdHJ0b2woX1B0ciwgJl9FcHRyLCBfQmFzZSk7
DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAgICAgICBfWGludmFsaWRfYXJndW1lbnQo
ImludmFsaWQgc3RvbCBhcmd1bWVudCIpOw0KICAgIH0NCg0KICAgIGlmIChfRXJybm9fcmVmID09
IDM0KSB7DQogICAgICAgIF9Yb3V0X29mX3JhbmdlKCJzdG9sIGFyZ3VtZW50IG91dCBvZiByYW5n
ZSIpOw0KICAgIH0NCg0KICAgIGlmIChfSWR4KSB7DQogICAgICAgICpfSWR4ID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihfRXB0ciAtIF9QdHIpOw0KICAgIH0NCg0KICAgIHJldHVybiBfQW5zOw0KfQ0K
DQppbmxpbmUgdW5zaWduZWQgbG9uZyBzdG91bChjb25zdCBzdHJpbmcmIF9TdHIsIHNpemVfdCog
X0lkeCA9IG51bGxwdHIsIGludCBfQmFzZSA9IDEwKSB7DQogICAgDQogICAgaW50JiBfRXJybm9f
cmVmICA9ICgqX2Vycm5vKCkpOyANCiAgICBjb25zdCBjaGFyKiBfUHRyID0gX1N0ci5jX3N0cigp
Ow0KICAgIGNoYXIqIF9FcHRyOw0KICAgIF9FcnJub19yZWYgICAgICAgICAgICAgICA9IDA7DQog
ICAgY29uc3QgdW5zaWduZWQgbG9uZyBfQW5zID0gOjogc3RydG91bChfUHRyLCAmX0VwdHIsIF9C
YXNlKTsNCg0KICAgIGlmIChfUHRyID09IF9FcHRyKSB7DQogICAgICAgIF9YaW52YWxpZF9hcmd1
bWVudCgiaW52YWxpZCBzdG91bCBhcmd1bWVudCIpOw0KICAgIH0NCg0KICAgIGlmIChfRXJybm9f
cmVmID09IDM0KSB7DQogICAgICAgIF9Yb3V0X29mX3JhbmdlKCJzdG91bCBhcmd1bWVudCBvdXQg
b2YgcmFuZ2UiKTsNCiAgICB9DQoNCiAgICBpZiAoX0lkeCkgew0KICAgICAgICAqX0lkeCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oX0VwdHIgLSBfUHRyKTsNCiAgICB9DQoNCiAgICByZXR1cm4gX0Fu
czsNCn0NCg0KaW5saW5lIGxvbmcgbG9uZyBzdG9sbChjb25zdCBzdHJpbmcmIF9TdHIsIHNpemVf
dCogX0lkeCA9IG51bGxwdHIsIGludCBfQmFzZSA9IDEwKSB7DQogICAgDQogICAgaW50JiBfRXJy
bm9fcmVmICA9ICgqX2Vycm5vKCkpOyANCiAgICBjb25zdCBjaGFyKiBfUHRyID0gX1N0ci5jX3N0
cigpOw0KICAgIGNoYXIqIF9FcHRyOw0KICAgIF9FcnJub19yZWYgICAgICAgICAgID0gMDsNCiAg
ICBjb25zdCBsb25nIGxvbmcgX0FucyA9IDo6IHN0cnRvbGwoX1B0ciwgJl9FcHRyLCBfQmFzZSk7
DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAgICAgICBfWGludmFsaWRfYXJndW1lbnQo
ImludmFsaWQgc3RvbGwgYXJndW1lbnQiKTsNCiAgICB9DQoNCiAgICBpZiAoX0Vycm5vX3JlZiA9
PSAzNCkgew0KICAgICAgICBfWG91dF9vZl9yYW5nZSgic3RvbGwgYXJndW1lbnQgb3V0IG9mIHJh
bmdlIik7DQogICAgfQ0KDQogICAgaWYgKF9JZHgpIHsNCiAgICAgICAgKl9JZHggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KF9FcHRyIC0gX1B0cik7DQogICAgfQ0KDQogICAgcmV0dXJuIF9BbnM7DQp9
DQoNCmlubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgc3RvdWxsKGNvbnN0IHN0cmluZyYgX1N0ciwg
c2l6ZV90KiBfSWR4ID0gbnVsbHB0ciwgaW50IF9CYXNlID0gMTApIHsNCiAgICANCiAgICBpbnQm
IF9FcnJub19yZWYgID0gKCpfZXJybm8oKSk7IA0KICAgIGNvbnN0IGNoYXIqIF9QdHIgPSBfU3Ry
LmNfc3RyKCk7DQogICAgY2hhciogX0VwdHI7DQogICAgX0Vycm5vX3JlZiAgICAgICAgICAgICAg
ICAgICAgPSAwOw0KICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBfQW5zID0gOjogc3RydG91
bGwoX1B0ciwgJl9FcHRyLCBfQmFzZSk7DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAg
ICAgICBfWGludmFsaWRfYXJndW1lbnQoImludmFsaWQgc3RvdWxsIGFyZ3VtZW50Iik7DQogICAg
fQ0KDQogICAgaWYgKF9FcnJub19yZWYgPT0gMzQpIHsNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2Uo
InN0b3VsbCBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsNCiAgICB9DQoNCiAgICBpZiAoX0lkeCkg
ew0KICAgICAgICAqX0lkeCA9IHN0YXRpY19jYXN0PHNpemVfdD4oX0VwdHIgLSBfUHRyKTsNCiAg
ICB9DQoNCiAgICByZXR1cm4gX0FuczsNCn0NCg0KaW5saW5lIGZsb2F0IHN0b2YoY29uc3Qgc3Ry
aW5nJiBfU3RyLCBzaXplX3QqIF9JZHggPSBudWxscHRyKSB7IA0KICAgIGludCYgX0Vycm5vX3Jl
ZiAgPSAoKl9lcnJubygpKTsgDQogICAgY29uc3QgY2hhciogX1B0ciA9IF9TdHIuY19zdHIoKTsN
CiAgICBjaGFyKiBfRXB0cjsNCiAgICBfRXJybm9fcmVmICAgICAgID0gMDsNCiAgICBjb25zdCBm
bG9hdCBfQW5zID0gOjogc3RydG9mKF9QdHIsICZfRXB0cik7DQoNCiAgICBpZiAoX1B0ciA9PSBf
RXB0cikgew0KICAgICAgICBfWGludmFsaWRfYXJndW1lbnQoImludmFsaWQgc3RvZiBhcmd1bWVu
dCIpOw0KICAgIH0NCg0KICAgIGlmIChfRXJybm9fcmVmID09IDM0KSB7DQogICAgICAgIF9Yb3V0
X29mX3JhbmdlKCJzdG9mIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOw0KICAgIH0NCg0KICAgIGlm
IChfSWR4KSB7DQogICAgICAgICpfSWR4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihfRXB0ciAtIF9Q
dHIpOw0KICAgIH0NCg0KICAgIHJldHVybiBfQW5zOw0KfQ0KDQppbmxpbmUgZG91YmxlIHN0b2Qo
Y29uc3Qgc3RyaW5nJiBfU3RyLCBzaXplX3QqIF9JZHggPSBudWxscHRyKSB7IA0KICAgIGludCYg
X0Vycm5vX3JlZiAgPSAoKl9lcnJubygpKTsgDQogICAgY29uc3QgY2hhciogX1B0ciA9IF9TdHIu
Y19zdHIoKTsNCiAgICBjaGFyKiBfRXB0cjsNCiAgICBfRXJybm9fcmVmICAgICAgICA9IDA7DQog
ICAgY29uc3QgZG91YmxlIF9BbnMgPSA6OiBzdHJ0b2QoX1B0ciwgJl9FcHRyKTsNCg0KICAgIGlm
IChfUHRyID09IF9FcHRyKSB7DQogICAgICAgIF9YaW52YWxpZF9hcmd1bWVudCgiaW52YWxpZCBz
dG9kIGFyZ3VtZW50Iik7DQogICAgfQ0KDQogICAgaWYgKF9FcnJub19yZWYgPT0gMzQpIHsNCiAg
ICAgICAgX1hvdXRfb2ZfcmFuZ2UoInN0b2QgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7DQogICAg
fQ0KDQogICAgaWYgKF9JZHgpIHsNCiAgICAgICAgKl9JZHggPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KF9FcHRyIC0gX1B0cik7DQogICAgfQ0KDQogICAgcmV0dXJuIF9BbnM7DQp9DQoNCmlubGluZSBs
b25nIGRvdWJsZSBzdG9sZChjb25zdCBzdHJpbmcmIF9TdHIsIHNpemVfdCogX0lkeCA9IG51bGxw
dHIpIHsgDQogICAgaW50JiBfRXJybm9fcmVmICA9ICgqX2Vycm5vKCkpOyANCiAgICBjb25zdCBj
aGFyKiBfUHRyID0gX1N0ci5jX3N0cigpOw0KICAgIGNoYXIqIF9FcHRyOw0KICAgIF9FcnJub19y
ZWYgICAgICAgICAgICAgPSAwOw0KICAgIGNvbnN0IGxvbmcgZG91YmxlIF9BbnMgPSA6OiBzdHJ0
b2xkKF9QdHIsICZfRXB0cik7DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAgICAgICBf
WGludmFsaWRfYXJndW1lbnQoImludmFsaWQgc3RvbGQgYXJndW1lbnQiKTsNCiAgICB9DQoNCiAg
ICBpZiAoX0Vycm5vX3JlZiA9PSAzNCkgew0KICAgICAgICBfWG91dF9vZl9yYW5nZSgic3RvbGQg
YXJndW1lbnQgb3V0IG9mIHJhbmdlIik7DQogICAgfQ0KDQogICAgaWYgKF9JZHgpIHsNCiAgICAg
ICAgKl9JZHggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9FcHRyIC0gX1B0cik7DQogICAgfQ0KDQog
ICAgcmV0dXJuIF9BbnM7DQp9DQoNCg0KaW5saW5lIGludCBzdG9pKGNvbnN0IHdzdHJpbmcmIF9T
dHIsIHNpemVfdCogX0lkeCA9IG51bGxwdHIsIGludCBfQmFzZSA9IDEwKSB7DQogICAgDQogICAg
aW50JiBfRXJybm9fcmVmICAgICA9ICgqX2Vycm5vKCkpOyANCiAgICBjb25zdCB3Y2hhcl90KiBf
UHRyID0gX1N0ci5jX3N0cigpOw0KICAgIHdjaGFyX3QqIF9FcHRyOw0KICAgIF9FcnJub19yZWYg
ICAgICA9IDA7DQogICAgY29uc3QgbG9uZyBfQW5zID0gOjogd2NzdG9sKF9QdHIsICZfRXB0ciwg
X0Jhc2UpOw0KDQogICAgaWYgKF9QdHIgPT0gX0VwdHIpIHsNCiAgICAgICAgX1hpbnZhbGlkX2Fy
Z3VtZW50KCJpbnZhbGlkIHN0b2kgYXJndW1lbnQiKTsNCiAgICB9DQoNCiAgICBpZiAoX0Vycm5v
X3JlZiA9PSAzNCB8fCBfQW5zIDwgKC0yMTQ3NDgzNjQ3IC0gMSkgfHwgMjE0NzQ4MzY0NyA8IF9B
bnMpIHsNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2UoInN0b2kgYXJndW1lbnQgb3V0IG9mIHJhbmdl
Iik7DQogICAgfQ0KDQogICAgaWYgKF9JZHgpIHsNCiAgICAgICAgKl9JZHggPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KF9FcHRyIC0gX1B0cik7DQogICAgfQ0KDQogICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oX0Fucyk7DQp9DQoNCmlubGluZSBsb25nIHN0b2woY29uc3Qgd3N0cmluZyYgX1N0ciwg
c2l6ZV90KiBfSWR4ID0gbnVsbHB0ciwgaW50IF9CYXNlID0gMTApIHsNCiAgICANCiAgICBpbnQm
IF9FcnJub19yZWYgICAgID0gKCpfZXJybm8oKSk7IA0KICAgIGNvbnN0IHdjaGFyX3QqIF9QdHIg
PSBfU3RyLmNfc3RyKCk7DQogICAgd2NoYXJfdCogX0VwdHI7DQogICAgX0Vycm5vX3JlZiAgICAg
ID0gMDsNCiAgICBjb25zdCBsb25nIF9BbnMgPSA6OiB3Y3N0b2woX1B0ciwgJl9FcHRyLCBfQmFz
ZSk7DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAgICAgICBfWGludmFsaWRfYXJndW1l
bnQoImludmFsaWQgc3RvbCBhcmd1bWVudCIpOw0KICAgIH0NCg0KICAgIGlmIChfRXJybm9fcmVm
ID09IDM0KSB7DQogICAgICAgIF9Yb3V0X29mX3JhbmdlKCJzdG9sIGFyZ3VtZW50IG91dCBvZiBy
YW5nZSIpOw0KICAgIH0NCg0KICAgIGlmIChfSWR4KSB7DQogICAgICAgICpfSWR4ID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihfRXB0ciAtIF9QdHIpOw0KICAgIH0NCg0KICAgIHJldHVybiBfQW5zOw0K
fQ0KDQppbmxpbmUgdW5zaWduZWQgbG9uZyBzdG91bChjb25zdCB3c3RyaW5nJiBfU3RyLCBzaXpl
X3QqIF9JZHggPSBudWxscHRyLCBpbnQgX0Jhc2UgPSAxMCkgew0KICAgIA0KICAgIGludCYgX0Vy
cm5vX3JlZiAgICAgPSAoKl9lcnJubygpKTsgDQogICAgY29uc3Qgd2NoYXJfdCogX1B0ciA9IF9T
dHIuY19zdHIoKTsNCiAgICB3Y2hhcl90KiBfRXB0cjsNCiAgICBfRXJybm9fcmVmICAgICAgICAg
ICAgICAgPSAwOw0KICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgX0FucyA9IDo6IHdjc3RvdWwoX1B0
ciwgJl9FcHRyLCBfQmFzZSk7DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAgICAgICBf
WGludmFsaWRfYXJndW1lbnQoImludmFsaWQgc3RvdWwgYXJndW1lbnQiKTsNCiAgICB9DQoNCiAg
ICBpZiAoX0Vycm5vX3JlZiA9PSAzNCkgew0KICAgICAgICBfWG91dF9vZl9yYW5nZSgic3RvdWwg
YXJndW1lbnQgb3V0IG9mIHJhbmdlIik7DQogICAgfQ0KDQogICAgaWYgKF9JZHgpIHsNCiAgICAg
ICAgKl9JZHggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9FcHRyIC0gX1B0cik7DQogICAgfQ0KDQog
ICAgcmV0dXJuIF9BbnM7DQp9DQoNCmlubGluZSBsb25nIGxvbmcgc3RvbGwoY29uc3Qgd3N0cmlu
ZyYgX1N0ciwgc2l6ZV90KiBfSWR4ID0gbnVsbHB0ciwgaW50IF9CYXNlID0gMTApIHsNCiAgICAN
CiAgICBpbnQmIF9FcnJub19yZWYgICAgID0gKCpfZXJybm8oKSk7IA0KICAgIGNvbnN0IHdjaGFy
X3QqIF9QdHIgPSBfU3RyLmNfc3RyKCk7DQogICAgd2NoYXJfdCogX0VwdHI7DQogICAgX0Vycm5v
X3JlZiAgICAgICAgICAgPSAwOw0KICAgIGNvbnN0IGxvbmcgbG9uZyBfQW5zID0gOjogd2NzdG9s
bChfUHRyLCAmX0VwdHIsIF9CYXNlKTsNCg0KICAgIGlmIChfUHRyID09IF9FcHRyKSB7DQogICAg
ICAgIF9YaW52YWxpZF9hcmd1bWVudCgiaW52YWxpZCBzdG9sbCBhcmd1bWVudCIpOw0KICAgIH0N
Cg0KICAgIGlmIChfRXJybm9fcmVmID09IDM0KSB7DQogICAgICAgIF9Yb3V0X29mX3JhbmdlKCJz
dG9sbCBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsNCiAgICB9DQoNCiAgICBpZiAoX0lkeCkgew0K
ICAgICAgICAqX0lkeCA9IHN0YXRpY19jYXN0PHNpemVfdD4oX0VwdHIgLSBfUHRyKTsNCiAgICB9
DQoNCiAgICByZXR1cm4gX0FuczsNCn0NCg0KaW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBzdG91
bGwoY29uc3Qgd3N0cmluZyYgX1N0ciwgc2l6ZV90KiBfSWR4ID0gbnVsbHB0ciwgaW50IF9CYXNl
ID0gMTApIHsNCiAgICANCiAgICBpbnQmIF9FcnJub19yZWYgICAgID0gKCpfZXJybm8oKSk7IA0K
ICAgIGNvbnN0IHdjaGFyX3QqIF9QdHIgPSBfU3RyLmNfc3RyKCk7DQogICAgd2NoYXJfdCogX0Vw
dHI7DQogICAgX0Vycm5vX3JlZiAgICAgICAgICAgICAgICAgICAgPSAwOw0KICAgIGNvbnN0IHVu
c2lnbmVkIGxvbmcgbG9uZyBfQW5zID0gOjogd2NzdG91bGwoX1B0ciwgJl9FcHRyLCBfQmFzZSk7
DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAgICAgICBfWGludmFsaWRfYXJndW1lbnQo
ImludmFsaWQgc3RvdWxsIGFyZ3VtZW50Iik7DQogICAgfQ0KDQogICAgaWYgKF9FcnJub19yZWYg
PT0gMzQpIHsNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2UoInN0b3VsbCBhcmd1bWVudCBvdXQgb2Yg
cmFuZ2UiKTsNCiAgICB9DQoNCiAgICBpZiAoX0lkeCkgew0KICAgICAgICAqX0lkeCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oX0VwdHIgLSBfUHRyKTsNCiAgICB9DQoNCiAgICByZXR1cm4gX0FuczsN
Cn0NCg0KaW5saW5lIGZsb2F0IHN0b2YoY29uc3Qgd3N0cmluZyYgX1N0ciwgc2l6ZV90KiBfSWR4
ID0gbnVsbHB0cikgeyANCiAgICBpbnQmIF9FcnJub19yZWYgICAgID0gKCpfZXJybm8oKSk7IA0K
ICAgIGNvbnN0IHdjaGFyX3QqIF9QdHIgPSBfU3RyLmNfc3RyKCk7DQogICAgd2NoYXJfdCogX0Vw
dHI7DQogICAgX0Vycm5vX3JlZiAgICAgICA9IDA7DQogICAgY29uc3QgZmxvYXQgX0FucyA9IDo6
IHdjc3RvZihfUHRyLCAmX0VwdHIpOw0KDQogICAgaWYgKF9QdHIgPT0gX0VwdHIpIHsNCiAgICAg
ICAgX1hpbnZhbGlkX2FyZ3VtZW50KCJpbnZhbGlkIHN0b2YgYXJndW1lbnQiKTsNCiAgICB9DQoN
CiAgICBpZiAoX0Vycm5vX3JlZiA9PSAzNCkgew0KICAgICAgICBfWG91dF9vZl9yYW5nZSgic3Rv
ZiBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsNCiAgICB9DQoNCiAgICBpZiAoX0lkeCkgew0KICAg
ICAgICAqX0lkeCA9IHN0YXRpY19jYXN0PHNpemVfdD4oX0VwdHIgLSBfUHRyKTsNCiAgICB9DQoN
CiAgICByZXR1cm4gX0FuczsNCn0NCg0KaW5saW5lIGRvdWJsZSBzdG9kKGNvbnN0IHdzdHJpbmcm
IF9TdHIsIHNpemVfdCogX0lkeCA9IG51bGxwdHIpIHsgDQogICAgaW50JiBfRXJybm9fcmVmICAg
ICA9ICgqX2Vycm5vKCkpOyANCiAgICBjb25zdCB3Y2hhcl90KiBfUHRyID0gX1N0ci5jX3N0cigp
Ow0KICAgIHdjaGFyX3QqIF9FcHRyOw0KICAgIF9FcnJub19yZWYgICAgICAgID0gMDsNCiAgICBj
b25zdCBkb3VibGUgX0FucyA9IDo6IHdjc3RvZChfUHRyLCAmX0VwdHIpOw0KDQogICAgaWYgKF9Q
dHIgPT0gX0VwdHIpIHsNCiAgICAgICAgX1hpbnZhbGlkX2FyZ3VtZW50KCJpbnZhbGlkIHN0b2Qg
YXJndW1lbnQiKTsNCiAgICB9DQoNCiAgICBpZiAoX0Vycm5vX3JlZiA9PSAzNCkgew0KICAgICAg
ICBfWG91dF9vZl9yYW5nZSgic3RvZCBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsNCiAgICB9DQoN
CiAgICBpZiAoX0lkeCkgew0KICAgICAgICAqX0lkeCA9IHN0YXRpY19jYXN0PHNpemVfdD4oX0Vw
dHIgLSBfUHRyKTsNCiAgICB9DQoNCiAgICByZXR1cm4gX0FuczsNCn0NCg0KaW5saW5lIGxvbmcg
ZG91YmxlIHN0b2xkKGNvbnN0IHdzdHJpbmcmIF9TdHIsIHNpemVfdCogX0lkeCA9IG51bGxwdHIp
IHsgDQogICAgaW50JiBfRXJybm9fcmVmICAgICA9ICgqX2Vycm5vKCkpOyANCiAgICBjb25zdCB3
Y2hhcl90KiBfUHRyID0gX1N0ci5jX3N0cigpOw0KICAgIHdjaGFyX3QqIF9FcHRyOw0KICAgIF9F
cnJub19yZWYgICAgICAgICAgICAgPSAwOw0KICAgIGNvbnN0IGxvbmcgZG91YmxlIF9BbnMgPSA6
OiB3Y3N0b2xkKF9QdHIsICZfRXB0cik7DQoNCiAgICBpZiAoX1B0ciA9PSBfRXB0cikgew0KICAg
ICAgICBfWGludmFsaWRfYXJndW1lbnQoImludmFsaWQgc3RvbGQgYXJndW1lbnQiKTsNCiAgICB9
DQoNCiAgICBpZiAoX0Vycm5vX3JlZiA9PSAzNCkgew0KICAgICAgICBfWG91dF9vZl9yYW5nZSgi
c3RvbGQgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7DQogICAgfQ0KDQogICAgaWYgKF9JZHgpIHsN
CiAgICAgICAgKl9JZHggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9FcHRyIC0gX1B0cik7DQogICAg
fQ0KDQogICAgcmV0dXJuIF9BbnM7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFz
cyBfVVR5Pg0KX0VsZW0qIF9VSW50ZWdyYWxfdG9fYnVmZihfRWxlbSogX1JOZXh0LCBfVVR5IF9V
VmFsKSB7IA0KICAgIHN0YXRpY19hc3NlcnQoaXNfdW5zaWduZWRfdjxfVVR5PiwgIl9VVHkgbXVz
dCBiZSB1bnNpZ25lZCIpOw0KDQoNCiAgICBhdXRvIF9VVmFsX3RydW5jID0gX1VWYWw7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ3NSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzdHJpbmciDQoNCiAgICBkbyB7DQogICAg
ICAgICotLV9STmV4dCA9IHN0YXRpY19jYXN0PF9FbGVtPignMCcgKyBfVVZhbF90cnVuYyAlIDEw
KTsNCiAgICAgICAgX1VWYWxfdHJ1bmMgLz0gMTA7DQogICAgfSB3aGlsZSAoX1VWYWxfdHJ1bmMg
IT0gMCk7DQogICAgcmV0dXJuIF9STmV4dDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBj
bGFzcyBfVHk+DQpiYXNpY19zdHJpbmc8X0VsZW0+IF9JbnRlZ3JhbF90b19zdHJpbmcoY29uc3Qg
X1R5IF9WYWwpIHsgDQogICAgc3RhdGljX2Fzc2VydChpc19pbnRlZ3JhbF92PF9UeT4sICJfVHkg
bXVzdCBiZSBpbnRlZ3JhbCIpOw0KICAgIHVzaW5nIF9VVHkgPSBtYWtlX3Vuc2lnbmVkX3Q8X1R5
PjsNCiAgICBfRWxlbSBfQnVmZlsyMV07IA0KICAgIF9FbGVtKiBjb25zdCBfQnVmZl9lbmQgPSA6
OnN0ZDo6IGVuZChfQnVmZik7DQogICAgX0VsZW0qIF9STmV4dCAgICAgICAgICA9IF9CdWZmX2Vu
ZDsNCiAgICBjb25zdCBhdXRvIF9VVmFsICAgICAgID0gc3RhdGljX2Nhc3Q8X1VUeT4oX1ZhbCk7
DQogICAgaWYgKF9WYWwgPCAwKSB7DQogICAgICAgIF9STmV4dCAgICA9IF9VSW50ZWdyYWxfdG9f
YnVmZihfUk5leHQsIDAgLSBfVVZhbCk7DQogICAgICAgICotLV9STmV4dCA9ICctJzsNCiAgICB9
IGVsc2Ugew0KICAgICAgICBfUk5leHQgPSBfVUludGVncmFsX3RvX2J1ZmYoX1JOZXh0LCBfVVZh
bCk7DQogICAgfQ0KDQogICAgcmV0dXJuIGJhc2ljX3N0cmluZzxfRWxlbT4oX1JOZXh0LCBfQnVm
Zl9lbmQpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1R5Pg0KYmFzaWNf
c3RyaW5nPF9FbGVtPiBfVUludGVncmFsX3RvX3N0cmluZyhjb25zdCBfVHkgX1ZhbCkgeyANCiAg
ICBzdGF0aWNfYXNzZXJ0KGlzX2ludGVncmFsX3Y8X1R5PiwgIl9UeSBtdXN0IGJlIGludGVncmFs
Iik7DQogICAgc3RhdGljX2Fzc2VydChpc191bnNpZ25lZF92PF9UeT4sICJfVHkgbXVzdCBiZSB1
bnNpZ25lZCIpOw0KICAgIF9FbGVtIF9CdWZmWzIxXTsgDQogICAgX0VsZW0qIGNvbnN0IF9CdWZm
X2VuZCA9IDo6c3RkOjogZW5kKF9CdWZmKTsNCiAgICBfRWxlbSogY29uc3QgX1JOZXh0ICAgID0g
X1VJbnRlZ3JhbF90b19idWZmKF9CdWZmX2VuZCwgX1ZhbCk7DQogICAgcmV0dXJuIGJhc2ljX3N0
cmluZzxfRWxlbT4oX1JOZXh0LCBfQnVmZl9lbmQpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5s
aW5lIHN0cmluZyB0b19zdHJpbmcoaW50IF9WYWwpIHsgDQogICAgcmV0dXJuIF9JbnRlZ3JhbF90
b19zdHJpbmc8Y2hhcj4oX1ZhbCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIHN0cmluZyB0
b19zdHJpbmcodW5zaWduZWQgaW50IF9WYWwpIHsgDQogICAgcmV0dXJuIF9VSW50ZWdyYWxfdG9f
c3RyaW5nPGNoYXI+KF9WYWwpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBzdHJpbmcgdG9f
c3RyaW5nKGxvbmcgX1ZhbCkgeyANCiAgICByZXR1cm4gX0ludGVncmFsX3RvX3N0cmluZzxjaGFy
PihfVmFsKTsNCn0NCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgc3RyaW5nIHRvX3N0cmluZyh1bnNp
Z25lZCBsb25nIF9WYWwpIHsgDQogICAgcmV0dXJuIF9VSW50ZWdyYWxfdG9fc3RyaW5nPGNoYXI+
KF9WYWwpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBzdHJpbmcgdG9fc3RyaW5nKGxvbmcg
bG9uZyBfVmFsKSB7IA0KICAgIHJldHVybiBfSW50ZWdyYWxfdG9fc3RyaW5nPGNoYXI+KF9WYWwp
Ow0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBzdHJpbmcgdG9fc3RyaW5nKHVuc2lnbmVkIGxv
bmcgbG9uZyBfVmFsKSB7IA0KICAgIHJldHVybiBfVUludGVncmFsX3RvX3N0cmluZzxjaGFyPihf
VmFsKTsNCn0NCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgc3RyaW5nIHRvX3N0cmluZyhkb3VibGUg
X1ZhbCkgeyANCiAgICBjb25zdCBhdXRvIF9MZW4gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KDo6IF9z
Y3ByaW50ZigiJWYiLCBfVmFsKSk7DQogICAgc3RyaW5nIF9TdHIoX0xlbiwgJ1wwJyk7DQogICAg
Ojogc3ByaW50Zl9zKCZfU3RyWzBdLCBfTGVuICsgMSwgIiVmIiwgX1ZhbCk7DQogICAgcmV0dXJu
IF9TdHI7DQp9DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIHN0cmluZyB0b19zdHJpbmcoZmxvYXQg
X1ZhbCkgeyANCiAgICByZXR1cm4gOjpzdGQ6OiB0b19zdHJpbmcoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihfVmFsKSk7DQp9DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIHN0cmluZyB0b19zdHJpbmcobG9u
ZyBkb3VibGUgX1ZhbCkgeyANCiAgICByZXR1cm4gOjpzdGQ6OiB0b19zdHJpbmcoc3RhdGljX2Nh
c3Q8ZG91YmxlPihfVmFsKSk7DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgd3N0cmluZyB0
b193c3RyaW5nKGludCBfVmFsKSB7IA0KICAgIHJldHVybiBfSW50ZWdyYWxfdG9fc3RyaW5nPHdj
aGFyX3Q+KF9WYWwpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSB3c3RyaW5nIHRvX3dzdHJp
bmcodW5zaWduZWQgaW50IF9WYWwpIHsgDQogICAgcmV0dXJuIF9VSW50ZWdyYWxfdG9fc3RyaW5n
PHdjaGFyX3Q+KF9WYWwpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSB3c3RyaW5nIHRvX3dz
dHJpbmcobG9uZyBfVmFsKSB7IA0KICAgIHJldHVybiBfSW50ZWdyYWxfdG9fc3RyaW5nPHdjaGFy
X3Q+KF9WYWwpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSB3c3RyaW5nIHRvX3dzdHJpbmco
dW5zaWduZWQgbG9uZyBfVmFsKSB7IA0KICAgIHJldHVybiBfVUludGVncmFsX3RvX3N0cmluZzx3
Y2hhcl90PihfVmFsKTsNCn0NCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgd3N0cmluZyB0b193c3Ry
aW5nKGxvbmcgbG9uZyBfVmFsKSB7IA0KICAgIHJldHVybiBfSW50ZWdyYWxfdG9fc3RyaW5nPHdj
aGFyX3Q+KF9WYWwpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSB3c3RyaW5nIHRvX3dzdHJp
bmcodW5zaWduZWQgbG9uZyBsb25nIF9WYWwpIHsgDQogICAgcmV0dXJuIF9VSW50ZWdyYWxfdG9f
c3RyaW5nPHdjaGFyX3Q+KF9WYWwpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSB3c3RyaW5n
IHRvX3dzdHJpbmcoZG91YmxlIF9WYWwpIHsgDQogICAgY29uc3QgYXV0byBfTGVuID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90Pig6OiBfc2N3cHJpbnRmKEwiJWYiLCBfVmFsKSk7DQogICAgd3N0cmluZyBf
U3RyKF9MZW4sIEwnXDAnKTsNCiAgICA6OiBzd3ByaW50Zl9zKCZfU3RyWzBdLCBfTGVuICsgMSwg
TCIlZiIsIF9WYWwpOw0KICAgIHJldHVybiBfU3RyOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGlu
ZSB3c3RyaW5nIHRvX3dzdHJpbmcoZmxvYXQgX1ZhbCkgeyANCiAgICByZXR1cm4gOjpzdGQ6OiB0
b193c3RyaW5nKHN0YXRpY19jYXN0PGRvdWJsZT4oX1ZhbCkpOw0KfQ0KDQpbW25vZGlzY2FyZF1d
IGlubGluZSB3c3RyaW5nIHRvX3dzdHJpbmcobG9uZyBkb3VibGUgX1ZhbCkgeyANCiAgICByZXR1
cm4gOjpzdGQ6OiB0b193c3RyaW5nKHN0YXRpY19jYXN0PGRvdWJsZT4oX1ZhbCkpOw0KfQ0KfQ0K
DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSA1OTgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc3RyaW5n
Ig0KI2xpbmUgNTk5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHN0cmluZyINCiNsaW5lIDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9PcHRpb25hbC5oIg0KI2xpbmUgMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzdGRleGNlcHQiDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0K
I3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxODAg
NDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIzIDQ2
MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2Mjk0
IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KbmFtZXNwYWNlIHN0ZCB7DQoNCmNsYXNzIGxvZ2ljX2Vycm9y
IDogcHVibGljIGV4Y2VwdGlvbiB7IA0KcHVibGljOg0KICAgIHVzaW5nIF9NeWJhc2UgPSBleGNl
cHRpb247DQoNCiAgICBleHBsaWNpdCBsb2dpY19lcnJvcihjb25zdCBzdHJpbmcmIF9NZXNzYWdl
KSA6IF9NeWJhc2UoX01lc3NhZ2UuY19zdHIoKSkge30NCg0KICAgIGV4cGxpY2l0IGxvZ2ljX2Vy
cm9yKGNvbnN0IGNoYXIqIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UpIHt9DQoNCg0KcHJv
dGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0IG92ZXJyaWRlIHsgDQog
ICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDApOw0K
ICAgIH0NCiNsaW5lIDM2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHN0ZGV4Y2VwdCINCn07DQoNCg0KY2xhc3MgZG9tYWluX2Vycm9yIDogcHVibGlj
IGxvZ2ljX2Vycm9yIHsgDQpwdWJsaWM6DQogICAgdXNpbmcgX015YmFzZSA9IGxvZ2ljX2Vycm9y
Ow0KDQogICAgZXhwbGljaXQgZG9tYWluX2Vycm9yKGNvbnN0IHN0cmluZyYgX01lc3NhZ2UpIDog
X015YmFzZShfTWVzc2FnZS5jX3N0cigpKSB7fQ0KDQogICAgZXhwbGljaXQgZG9tYWluX2Vycm9y
KGNvbnN0IGNoYXIqIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UpIHt9DQoNCg0KcHJvdGVj
dGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0IG92ZXJyaWRlIHsgDQogICAg
ICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDApOw0KICAg
IH0NCiNsaW5lIDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHN0ZGV4Y2VwdCINCn07DQoNCg0KY2xhc3MgaW52YWxpZF9hcmd1bWVudCA6IHB1Ymxp
YyBsb2dpY19lcnJvciB7IA0KcHVibGljOg0KICAgIHVzaW5nIF9NeWJhc2UgPSBsb2dpY19lcnJv
cjsNCg0KICAgIGV4cGxpY2l0IGludmFsaWRfYXJndW1lbnQoY29uc3Qgc3RyaW5nJiBfTWVzc2Fn
ZSkgOiBfTXliYXNlKF9NZXNzYWdlLmNfc3RyKCkpIHt9DQoNCiAgICBleHBsaWNpdCBpbnZhbGlk
X2FyZ3VtZW50KGNvbnN0IGNoYXIqIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UpIHt9DQoN
Cg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0IG92ZXJyaWRl
IHsgDQogICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAs
IDApOw0KICAgIH0NCiNsaW5lIDcwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHN0ZGV4Y2VwdCINCn07DQoNCg0KY2xhc3MgbGVuZ3RoX2Vycm9yIDog
cHVibGljIGxvZ2ljX2Vycm9yIHsgDQpwdWJsaWM6DQogICAgdXNpbmcgX015YmFzZSA9IGxvZ2lj
X2Vycm9yOw0KDQogICAgZXhwbGljaXQgbGVuZ3RoX2Vycm9yKGNvbnN0IHN0cmluZyYgX01lc3Nh
Z2UpIDogX015YmFzZShfTWVzc2FnZS5jX3N0cigpKSB7fQ0KDQogICAgZXhwbGljaXQgbGVuZ3Ro
X2Vycm9yKGNvbnN0IGNoYXIqIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UpIHt9DQoNCg0K
cHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0IG92ZXJyaWRlIHsg
DQogICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAp
Ow0KICAgIH0NCiNsaW5lIDg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHN0ZGV4Y2VwdCINCn07DQoNCg0KY2xhc3Mgb3V0X29mX3JhbmdlIDogcHVi
bGljIGxvZ2ljX2Vycm9yIHsgDQpwdWJsaWM6DQogICAgdXNpbmcgX015YmFzZSA9IGxvZ2ljX2Vy
cm9yOw0KDQogICAgZXhwbGljaXQgb3V0X29mX3JhbmdlKGNvbnN0IHN0cmluZyYgX01lc3NhZ2Up
IDogX015YmFzZShfTWVzc2FnZS5jX3N0cigpKSB7fQ0KDQogICAgZXhwbGljaXQgb3V0X29mX3Jh
bmdlKGNvbnN0IGNoYXIqIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UpIHt9DQoNCg0KcHJv
dGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0IG92ZXJyaWRlIHsgDQog
ICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDApOw0K
ICAgIH0NCiNsaW5lIDEwNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxzdGRleGNlcHQiDQp9Ow0KDQoNCmNsYXNzIHJ1bnRpbWVfZXJyb3IgOiBwdWJs
aWMgZXhjZXB0aW9uIHsgDQpwdWJsaWM6DQogICAgdXNpbmcgX015YmFzZSA9IGV4Y2VwdGlvbjsN
Cg0KICAgIGV4cGxpY2l0IHJ1bnRpbWVfZXJyb3IoY29uc3Qgc3RyaW5nJiBfTWVzc2FnZSkgOiBf
TXliYXNlKF9NZXNzYWdlLmNfc3RyKCkpIHt9DQoNCiAgICBleHBsaWNpdCBydW50aW1lX2Vycm9y
KGNvbnN0IGNoYXIqIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UpIHt9DQoNCg0KcHJvdGVj
dGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0IG92ZXJyaWRlIHsgDQogICAg
ICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDApOw0KICAg
IH0NCiNsaW5lIDEyMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxzdGRleGNlcHQiDQp9Ow0KDQoNCmNsYXNzIG92ZXJmbG93X2Vycm9yIDogcHVibGlj
IHJ1bnRpbWVfZXJyb3IgeyANCnB1YmxpYzoNCiAgICB1c2luZyBfTXliYXNlID0gcnVudGltZV9l
cnJvcjsNCg0KICAgIGV4cGxpY2l0IG92ZXJmbG93X2Vycm9yKGNvbnN0IHN0cmluZyYgX01lc3Nh
Z2UpIDogX015YmFzZShfTWVzc2FnZS5jX3N0cigpKSB7fQ0KDQogICAgZXhwbGljaXQgb3ZlcmZs
b3dfZXJyb3IoY29uc3QgY2hhciogX01lc3NhZ2UpIDogX015YmFzZShfTWVzc2FnZSkge30NCg0K
DQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCB2b2lkIF9Eb3JhaXNlKCkgY29uc3Qgb3ZlcnJpZGUg
eyANCiAgICAgICAgX2ludm9rZV93YXRzb24obnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
MCk7DQogICAgfQ0KI2xpbmUgMTM4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHN0ZGV4Y2VwdCINCn07DQoNCg0KY2xhc3MgdW5kZXJmbG93X2Vycm9y
IDogcHVibGljIHJ1bnRpbWVfZXJyb3IgeyANCnB1YmxpYzoNCiAgICB1c2luZyBfTXliYXNlID0g
cnVudGltZV9lcnJvcjsNCg0KICAgIGV4cGxpY2l0IHVuZGVyZmxvd19lcnJvcihjb25zdCBzdHJp
bmcmIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UuY19zdHIoKSkge30NCg0KICAgIGV4cGxp
Y2l0IHVuZGVyZmxvd19lcnJvcihjb25zdCBjaGFyKiBfTWVzc2FnZSkgOiBfTXliYXNlKF9NZXNz
YWdlKSB7fQ0KDQoNCnByb3RlY3RlZDoNCiAgICB2aXJ0dWFsIHZvaWQgX0RvcmFpc2UoKSBjb25z
dCBvdmVycmlkZSB7IA0KICAgICAgICBfaW52b2tlX3dhdHNvbihudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCAwLCAwKTsNCiAgICB9DQojbGluZSAxNTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc3RkZXhjZXB0Ig0KfTsNCg0KDQpjbGFzcyByYW5n
ZV9lcnJvciA6IHB1YmxpYyBydW50aW1lX2Vycm9yIHsgDQpwdWJsaWM6DQogICAgdXNpbmcgX015
YmFzZSA9IHJ1bnRpbWVfZXJyb3I7DQoNCiAgICBleHBsaWNpdCByYW5nZV9lcnJvcihjb25zdCBz
dHJpbmcmIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3NhZ2UuY19zdHIoKSkge30NCg0KICAgIGV4
cGxpY2l0IHJhbmdlX2Vycm9yKGNvbnN0IGNoYXIqIF9NZXNzYWdlKSA6IF9NeWJhc2UoX01lc3Nh
Z2UpIHt9DQoNCg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0
IG92ZXJyaWRlIHsgDQogICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIDAsIDApOw0KICAgIH0NCiNsaW5lIDE3MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzdGRleGNlcHQiDQp9Ow0KDQpbW25vcmV0dXJuXV0g
aW5saW5lIHZvaWQgX1Rocm93X3JhbmdlX2Vycm9yKGNvbnN0IGNoYXIqIGNvbnN0IF9NZXNzYWdl
KSB7DQogICAgcmFuZ2VfZXJyb3J7X01lc3NhZ2V9Ll9SYWlzZSgpOw0KfQ0KfQ0KDQoNCiNwcmFn
bWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KI2xpbmUgMTgzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN0ZGV4Y2VwdCINCiNsaW5l
IDE4NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxz
dGRleGNlcHQiDQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0aW9uYWwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc0ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9PcHRpb25hbC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL09wdGlvbmFsLmgiDQoNCg0KDQoNCiNsaW5l
IDkyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9PcHRpb25hbC5oIg0KI2xpbmUgOTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL09wdGlvbmFsLmgiDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDEwMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvT3B0aW9uYWwuaCINCg0KI2xpbmUgMTAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9PcHRpb25hbC5oIg0KDQoNCg0KI2xp
bmUgMTA3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9PcHRpb25hbC5oIg0KDQoNCg0KDQoNCiNsaW5lIDExMyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0aW9uYWwuaCINCg0K
DQojbGluZSAxMTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL09wdGlvbmFsLmgiDQoNCg0KDQoNCiNsaW5lIDEyMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0aW9uYWwuaCIN
Cg0KI2xpbmUgMTIzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9PcHRpb25hbC5oIg0KDQoNCg0KDQoNCiNsaW5lIDEyOSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0aW9uYWwu
aCINCg0KDQoNCiNsaW5lIDEzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0aW9uYWwuaCINCg0KbmFtZXNwYWNlIFdURiB7DQpuYW1l
c3BhY2UgZGV0YWlsXyB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwNyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0
aW9uYWwuaCINCg0KfSANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgT3B0aW9uYWw7DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIE9wdGlvbmFsPFQmPjsNCg0KbmFtZXNwYWNlIGRl
dGFpbF8gew0KDQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgVCYmIGNvbnN0ZXhwcl9m
b3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYgdCkgDQp7DQog
IHJldHVybiBzdGF0aWNfY2FzdDxUJiY+KHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIFQmJiBjb25zdGV4cHJfZm9yd2FyZCh0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2U8VD46OnR5cGUmJiB0KSANCnsNCiAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2x2YWx1ZV9y
ZWZlcmVuY2U8VD46OnZhbHVlLCAiISEiKTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCYmPih0
KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiBjb25zdGV4cHJfbW92ZShUJiYgdCkgDQp7DQogICAgcmV0
dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYm
Pih0KTsNCn0NCg0KDQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPg0Kc3RydWN0IGhhc19vdmVybG9h
ZGVkX2FkZHJlc3NvZg0Kew0KICB0ZW1wbGF0ZSA8Y2xhc3MgWD4NCiAgY29uc3RleHByIHN0YXRp
YyBib29sIGhhc19vdmVybG9hZCguLi4pIHsgcmV0dXJuIGZhbHNlOyB9DQoNCiAgdGVtcGxhdGUg
PGNsYXNzIFgsIHNpemVfdCBTID0gc2l6ZW9mKHN0ZDo6ZGVjbHZhbDxYJj4oKS5vcGVyYXRvciYo
KSkgPg0KICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX292ZXJsb2FkKGJvb2wpIHsgcmV0dXJu
IHRydWU7IH0NCg0KICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBoYXNfb3ZlcmxvYWQ8
VD4odHJ1ZSk7DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8IWhhc19vdmVybG9hZGVkX2FkZHJlc3NvZjxUPjo6dmFsdWUsIGJvb2w+Ojp0eXBlID0g
ZmFsc2U+DQpjb25zdGV4cHIgVCogc3RhdGljX2FkZHJlc3NvZihUJiByZWYpDQp7DQogIHJldHVy
biAmcmVmOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8aGFzX292ZXJsb2FkZWRfYWRkcmVzc29mPFQ+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgPSBmYWxz
ZT4NClQqIHN0YXRpY19hZGRyZXNzb2YoVCYgcmVmKQ0Kew0KICByZXR1cm4gc3RkOjphZGRyZXNz
b2YocmVmKTsNCn0NCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBVPg0KY29uc3RleHByIFUgY29udmVy
dChVIHYpIHsgcmV0dXJuIHY7IH0NCg0KfSANCg0KDQpjb25zdGV4cHIgc3RydWN0IHRyaXZpYWxf
aW5pdF90e30gdHJpdmlhbF9pbml0e307DQoNCg0KDQpzdHJ1Y3QgbnVsbG9wdF90DQp7DQogIHN0
cnVjdCBpbml0e307DQogIGNvbnN0ZXhwciBleHBsaWNpdCBudWxsb3B0X3QoaW5pdCl7fQ0KfTsN
CmNvbnN0ZXhwciBudWxsb3B0X3QgbnVsbG9wdHtudWxsb3B0X3Q6OmluaXQoKX07DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIFQ+DQp1bmlvbiBzdG9yYWdlX3QNCnsNCiAgdW5zaWduZWQgY2hhciBkdW1t
eV87DQogIFQgdmFsdWVfOw0KDQogIGNvbnN0ZXhwciBzdG9yYWdlX3QoIHRyaXZpYWxfaW5pdF90
ICkgIDogZHVtbXlfKCkge307DQoNCiAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+DQogIGNvbnN0
ZXhwciBzdG9yYWdlX3QoIEFyZ3MmJi4uLiBhcmdzICkgOiB2YWx1ZV8oZGV0YWlsXzo6Y29uc3Rl
eHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9DQoNCiAgfnN0b3JhZ2VfdCgpe30NCn07DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIFQ+DQp1bmlvbiBjb25zdGV4cHJfc3RvcmFnZV90DQp7DQogICAg
dW5zaWduZWQgY2hhciBkdW1teV87DQogICAgVCB2YWx1ZV87DQoNCiAgICBjb25zdGV4cHIgY29u
c3RleHByX3N0b3JhZ2VfdCggdHJpdmlhbF9pbml0X3QgKSAgOiBkdW1teV8oKSB7fTsNCg0KICAg
IHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPg0KICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFn
ZV90KCBBcmdzJiYuLi4gYXJncyApIDogdmFsdWVfKGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSB7fQ0KDQogICAgfmNvbnN0ZXhwcl9zdG9yYWdlX3QoKSA9IGRlZmF1
bHQ7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBUPg0Kc3RydWN0IE9wdGlvbmFsX2Jhc2UNCnsN
CiAgICBib29sIGluaXRfOw0KICAgIHN0b3JhZ2VfdDxUPiBzdG9yYWdlXzsNCg0KICAgIGNvbnN0
ZXhwciBPcHRpb25hbF9iYXNlKCkgIDogaW5pdF8oZmFsc2UpLCBzdG9yYWdlXyh0cml2aWFsX2lu
aXQpIHt9Ow0KDQogICAgZXhwbGljaXQgY29uc3RleHByIE9wdGlvbmFsX2Jhc2UoY29uc3QgVCYg
dikgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8odikge30NCg0KICAgIGV4cGxpY2l0IGNvbnN0ZXhw
ciBPcHRpb25hbF9iYXNlKFQmJiB2KSA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhkZXRhaWxfOjpj
b25zdGV4cHJfbW92ZSh2KSkge30NCg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiBleHBs
aWNpdCBPcHRpb25hbF9iYXNlKHN0ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpDQogICAg
ICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSB7fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3Ms
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8VT4+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgPSBmYWxzZT4NCiAgICBleHBs
aWNpdCBPcHRpb25hbF9iYXNlKHN0ZDo6aW5fcGxhY2VfdCwgc3RkOjppbml0aWFsaXplcl9saXN0
PFU+IGlsLCBBcmdzJiYuLi4gYXJncykNCiAgICAgICAgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8o
aWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30NCg0KICAgIH5PcHRpb25hbF9iYXNl
KCkgeyBpZiAoaW5pdF8pIHN0b3JhZ2VfLnZhbHVlXy5UOjp+VCgpOyB9DQp9Ow0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBUPg0Kc3RydWN0IGNvbnN0ZXhwcl9PcHRpb25hbF9iYXNlDQp7DQogICAgYm9v
bCBpbml0XzsNCiAgICBjb25zdGV4cHJfc3RvcmFnZV90PFQ+IHN0b3JhZ2VfOw0KDQogICAgY29u
c3RleHByIGNvbnN0ZXhwcl9PcHRpb25hbF9iYXNlKCkgIDogaW5pdF8oZmFsc2UpLCBzdG9yYWdl
Xyh0cml2aWFsX2luaXQpIHt9Ow0KDQogICAgZXhwbGljaXQgY29uc3RleHByIGNvbnN0ZXhwcl9P
cHRpb25hbF9iYXNlKGNvbnN0IFQmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKHYpIHt9DQoN
CiAgICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHByX09wdGlvbmFsX2Jhc2UoVCYmIHYpIDog
aW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQ0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxpY2l0IGNvbnN0ZXhwciBjb25zdGV4cHJf
T3B0aW9uYWxfYmFzZShzdGQ6OmluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQ0KICAgICAgOiBp
bml0Xyh0cnVlKSwgc3RvcmFnZV8oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJn
cykuLi4pIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxVPj46OnZhbHVlLCBib29sPjo6dHlwZSA9IGZhbHNlPg0KICAgICBleHBsaWNpdCBj
b25zdGV4cHJfT3B0aW9uYWxfYmFzZShzdGQ6OmluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxVPiBpbCwgQXJncyYmLi4uIGFyZ3MpDQogICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdl
XyhpbCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQ0KDQogICAgfmNvbnN0ZXhwcl9P
cHRpb25hbF9iYXNlKCkgPSBkZWZhdWx0Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIFQ+DQp1c2lu
ZyBPcHRpb25hbEJhc2UgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPA0KICAgIHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICAgICAgICAgICAgICAgICAgICAgICAg
ICANCiAgICBjb25zdGV4cHJfT3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25z
dDxUPjo6dHlwZT4sIA0KICAgIE9wdGlvbmFsX2Jhc2U8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3Q8VD46OnR5cGU+DQo+Ojp0eXBlOw0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIFQ+DQpjbGFzcyBP
cHRpb25hbCA6IHByaXZhdGUgT3B0aW9uYWxCYXNlPFQ+DQp7DQogIHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm8gPSBpbnQ7DQogIHN0YXRpY19hc3NlcnQoICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3Rk
OjpkZWNheTxUPjo6dHlwZSwgbnVsbG9wdF90Pjo6dmFsdWUsICJiYWQgVCIgKTsNCiAgc3RhdGlj
X2Fzc2VydCggIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlLCBzdGQ6
OmluX3BsYWNlX3Q+Ojp2YWx1ZSwgImJhZCBUIiApOw0KDQoNCiAgY29uc3RleHByIGJvb2wgaW5p
dGlhbGl6ZWQoKSBjb25zdCAgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+Ojppbml0XzsgfQ0KICB0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSogZGF0YXB0cigpIHsgIHJldHVybiBz
dGQ6OmFkZHJlc3NvZihPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXyk7IH0NCiAgY29u
c3RleHByIGNvbnN0IFQqIGRhdGFwdHIoKSBjb25zdCB7IHJldHVybiBkZXRhaWxfOjpzdGF0aWNf
YWRkcmVzc29mKE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQ0KDQoNCiAgY29u
c3RleHByIGNvbnN0IFQmIGNvbnRhaW5lZF92YWwoKSBjb25zdCYgeyByZXR1cm4gT3B0aW9uYWxC
YXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0NCiAgY29uc3RleHByIFQmJiBjb250YWluZWRfdmFs
KCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVf
KTsgfQ0KICBjb25zdGV4cHIgVCYgY29udGFpbmVkX3ZhbCgpICYgeyByZXR1cm4gT3B0aW9uYWxC
YXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0NCg0KDQoNCiNsaW5lIDM4NSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0aW9uYWwuaCIN
Cg0KICB2b2lkIGNsZWFyKCkgIHsNCiAgICBpZiAoaW5pdGlhbGl6ZWQoKSkgZGF0YXB0cigpLT5U
Ojp+VCgpOw0KICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSBmYWxzZTsNCiAgfQ0KDQogIHRl
bXBsYXRlIDxjbGFzcy4uLiBBcmdzPg0KICB2b2lkIGluaXRpYWxpemUoQXJncyYmLi4uIGFyZ3Mp
IA0KICB7DQogICAgKCh2b2lkKTApOw0KICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0
YXB0cigpKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOw0KICAgIE9wdGlvbmFsQmFz
ZTxUPjo6aW5pdF8gPSB0cnVlOw0KICB9DQoNCiAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4u
IEFyZ3M+DQogIHZvaWQgaW5pdGlhbGl6ZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFy
Z3MmJi4uLiBhcmdzKSANCiAgew0KICAgICgodm9pZCkwKTsNCiAgICA6Om5ldyAoc3RhdGljX2Nh
c3Q8dm9pZCo+KGRhdGFwdHIoKSkpIFQoaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7
DQogICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7DQogIH0NCg0KcHVibGljOg0KICB0
eXBlZGVmIFQgdmFsdWVfdHlwZTsNCg0KICANCiAgY29uc3RleHByIE9wdGlvbmFsKCkgIDogT3B0
aW9uYWxCYXNlPFQ+KCkgIHt9Ow0KICBjb25zdGV4cHIgT3B0aW9uYWwobnVsbG9wdF90KSAgOiBP
cHRpb25hbEJhc2U8VD4oKSB7fTsNCg0KICBjb25zdGV4cHIgT3B0aW9uYWwoY29uc3QgT3B0aW9u
YWwmIHJocykNCiAgOiBPcHRpb25hbEJhc2U8VD4oKQ0KICB7DQogICAgaWYgKHJocy5pbml0aWFs
aXplZCgpKSB7DQogICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc190cml2aWFsbHlfY29weWFi
bGVfdjxUPikNCiAgICAgICAgICAgIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8gPSAqcmhzOw0K
ICAgICAgICBlbHNlDQogICAgICAgICAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFw
dHIoKSkpIFQoKnJocyk7DQogICAgICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSB0cnVlOw0K
ICAgIH0NCiAgfQ0KDQogIGNvbnN0ZXhwciBPcHRpb25hbChPcHRpb25hbCYmIHJocykgDQogIDog
T3B0aW9uYWxCYXNlPFQ+KCkNCiAgew0KICAgIGlmIChyaHMuaW5pdGlhbGl6ZWQoKSkgew0KICAg
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlX3Y8VD4pDQogICAg
ICAgICAgICBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfID0gKnJoczsNCiAgICAgICAgZWxzZQ0K
ICAgICAgICAgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKHN0ZDo6
bW92ZSgqcmhzKSk7DQogICAgICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSB0cnVlOw0KICAg
ICAgICByaHMuY2xlYXIoKTsNCiAgICB9DQogIH0NCg0KICBjb25zdGV4cHIgT3B0aW9uYWwoY29u
c3QgVCYgdikgOiBPcHRpb25hbEJhc2U8VD4odikge30NCg0KICBjb25zdGV4cHIgT3B0aW9uYWwo
VCYmIHYpIDogT3B0aW9uYWxCYXNlPFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQ0K
DQogIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPg0KICBleHBsaWNpdCBjb25zdGV4cHIgT3B0aW9u
YWwoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykNCiAgICAgIDogT3B0aW9uYWxCYXNl
PFQ+KHN0ZDo6aW5fcGxhY2VfdHt9LCBkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihh
cmdzKS4uLikge30NCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxVPj46OnZhbHVlLCBib29sPjo6dHlwZSA9IGZhbHNlPg0KICAgZXhwbGljaXQgT3B0
aW9uYWwoc3RkOjppbl9wbGFjZV90LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3Mm
Ji4uLiBhcmdzKQ0KICAgICAgOiBPcHRpb25hbEJhc2U8VD4oc3RkOjppbl9wbGFjZV90e30sIGls
LCBkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30NCg0KICANCiAg
fk9wdGlvbmFsKCkgPSBkZWZhdWx0Ow0KDQogIA0KICBPcHRpb25hbCYgb3BlcmF0b3I9KG51bGxv
cHRfdCkgDQogIHsNCiAgICBjbGVhcigpOw0KICAgIHJldHVybiAqdGhpczsNCiAgfQ0KDQogIE9w
dGlvbmFsJiBvcGVyYXRvcj0oY29uc3QgT3B0aW9uYWwmIHJocykNCiAgew0KICAgIGlmICAgICAg
KGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gZmFsc2UpIGNs
ZWFyKCk7DQogICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSAmJiByaHMuaW5pdGlh
bGl6ZWQoKSA9PSB0cnVlKSAgaW5pdGlhbGl6ZSgqcmhzKTsNCiAgICBlbHNlIGlmIChpbml0aWFs
aXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICBjb250YWluZWRf
dmFsKCkgPSAqcmhzOw0KICAgIHJldHVybiAqdGhpczsNCiAgfQ0KDQogIE9wdGlvbmFsJiBvcGVy
YXRvcj0oT3B0aW9uYWwmJiByaHMpDQogIA0KICB7DQogICAgaWYgICAgICAoaW5pdGlhbGl6ZWQo
KSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSkgY2xlYXIoKTsNCiAgICBl
bHNlIGlmIChpbml0aWFsaXplZCgpID09IGZhbHNlICYmIHJocy5pbml0aWFsaXplZCgpID09IHRy
dWUpICB7IGluaXRpYWxpemUoc3RkOjptb3ZlKCpyaHMpKTsgcmhzLmNsZWFyKCk7IH0NCiAgICBl
bHNlIGlmIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IHRy
dWUpICB7IGNvbnRhaW5lZF92YWwoKSA9IHN0ZDo6bW92ZSgqcmhzKTsgcmhzLmNsZWFyKCk7IH0N
CiAgICByZXR1cm4gKnRoaXM7DQogIH0NCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgVT4NCiAgYXV0byBv
cGVyYXRvcj0oVSYmIHYpDQogIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmDQogIDwNCiAgICBz
dGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxVPjo6dHlwZSwgVD46OnZhbHVlLA0KICAg
IE9wdGlvbmFsJg0KICA+Ojp0eXBlDQogIHsNCiAgICBpZiAoaW5pdGlhbGl6ZWQoKSkgeyBjb250
YWluZWRfdmFsKCkgPSBzdGQ6OmZvcndhcmQ8VT4odik7IH0NCiAgICBlbHNlICAgICAgICAgICAg
ICAgeyBpbml0aWFsaXplKHN0ZDo6Zm9yd2FyZDxVPih2KSk7ICB9DQogICAgcmV0dXJuICp0aGlz
Ow0KICB9DQoNCg0KICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4NCiAgdm9pZCBlbXBsYWNlKEFy
Z3MmJi4uLiBhcmdzKQ0KICB7DQogICAgY2xlYXIoKTsNCiAgICBpbml0aWFsaXplKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7DQogIH0NCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3Mu
Li4gQXJncz4NCiAgdm9pZCBlbXBsYWNlKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJn
cyYmLi4uIGFyZ3MpDQogIHsNCiAgICBjbGVhcigpOw0KICAgIGluaXRpYWxpemU8VSwgQXJncy4u
Lj4oaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7DQogIH0NCg0KICANCiAgdm9pZCBz
d2FwKE9wdGlvbmFsPFQ+JiByaHMpIA0KICB7DQogICAgaWYgICAgICAoaW5pdGlhbGl6ZWQoKSA9
PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSkgeyByaHMuaW5pdGlhbGl6ZShz
dGQ6Om1vdmUoKip0aGlzKSk7IGNsZWFyKCk7IH0NCiAgICBlbHNlIGlmIChpbml0aWFsaXplZCgp
ID09IGZhbHNlICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICB7IGluaXRpYWxpemUoc3Rk
Ojptb3ZlKCpyaHMpKTsgcmhzLmNsZWFyKCk7IH0NCiAgICBlbHNlIGlmIChpbml0aWFsaXplZCgp
ID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICB7IHVzaW5nIHN0ZDo6c3dh
cDsgc3dhcCgqKnRoaXMsICpyaHMpOyB9DQogIH0NCg0KICANCg0KICBleHBsaWNpdCBjb25zdGV4
cHIgb3BlcmF0b3IgYm9vbCgpIGNvbnN0ICB7IHJldHVybiBpbml0aWFsaXplZCgpOyB9DQogIGNv
bnN0ZXhwciBib29sIGhhc1ZhbHVlKCkgY29uc3QgIHsgcmV0dXJuIGluaXRpYWxpemVkKCk7IH0N
Cg0KICBjb25zdGV4cHIgVCBjb25zdCogb3BlcmF0b3IgLT4oKSBjb25zdCB7DQogICAgZG8geyBp
ZiAoKCEoaW5pdGlhbGl6ZWQoKSkpKSB7IFdURkNyYXNoKCk7IH0gfSB3aGlsZSAoMCk7DQogICAg
cmV0dXJuIGRhdGFwdHIoKTsNCiAgfQ0KDQogIGNvbnN0ZXhwciBUKiBvcGVyYXRvciAtPigpIHsN
CiAgICBkbyB7IGlmICgoIShpbml0aWFsaXplZCgpKSkpIHsgV1RGQ3Jhc2goKTsgfSB9IHdoaWxl
ICgwKTsNCiAgICByZXR1cm4gZGF0YXB0cigpOw0KICB9DQoNCiAgY29uc3RleHByIFQgY29uc3Qm
IG9wZXJhdG9yICooKSBjb25zdCYgew0KICAgIGRvIHsgaWYgKCghKGluaXRpYWxpemVkKCkpKSkg
eyBXVEZDcmFzaCgpOyB9IH0gd2hpbGUgKDApOw0KICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7
DQogIH0NCg0KICBjb25zdGV4cHIgVCYgb3BlcmF0b3IgKigpICYgew0KICAgIGRvIHsgaWYgKCgh
KGluaXRpYWxpemVkKCkpKSkgeyBXVEZDcmFzaCgpOyB9IH0gd2hpbGUgKDApOw0KICAgIHJldHVy
biBjb250YWluZWRfdmFsKCk7DQogIH0NCg0KICBjb25zdGV4cHIgVCYmIG9wZXJhdG9yICooKSAm
JiB7DQogICAgZG8geyBpZiAoKCEoaW5pdGlhbGl6ZWQoKSkpKSB7IFdURkNyYXNoKCk7IH0gfSB3
aGlsZSAoMCk7DQogICAgcmV0dXJuIGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKGNvbnRhaW5lZF92
YWwoKSk7DQogIH0NCg0KICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25zdCYgew0KICAg
IGRvIHsgaWYgKCghKGluaXRpYWxpemVkKCkpKSkgeyBXVEZDcmFzaCgpOyB9IH0gd2hpbGUgKDAp
Ow0KICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7DQogIH0NCg0KICBjb25zdGV4cHIgVCYgdmFs
dWUoKSAmIHsNCiAgICBkbyB7IGlmICgoIShpbml0aWFsaXplZCgpKSkpIHsgV1RGQ3Jhc2goKTsg
fSB9IHdoaWxlICgwKTsNCiAgICByZXR1cm4gY29udGFpbmVkX3ZhbCgpOw0KICB9DQoNCiAgY29u
c3RleHByIFQmJiB2YWx1ZSgpICYmIHsNCiAgICBkbyB7IGlmICgoIShpbml0aWFsaXplZCgpKSkp
IHsgV1RGQ3Jhc2goKTsgfSB9IHdoaWxlICgwKTsNCiAgICByZXR1cm4gc3RkOjptb3ZlKGNvbnRh
aW5lZF92YWwoKSk7DQogIH0NCg0KDQoNCiAgdGVtcGxhdGUgPGNsYXNzIFY+DQogIGNvbnN0ZXhw
ciBUIHZhbHVlT3IoViYmIHYpIGNvbnN0Jg0KICB7DQogICAgcmV0dXJuICp0aGlzID8gKip0aGlz
IDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7
DQogIH0NCg0KICB0ZW1wbGF0ZSA8Y2xhc3MgVj4NCiAgY29uc3RleHByIFQgdmFsdWVPcihWJiYg
dikgJiYNCiAgew0KICAgIHJldHVybiAqdGhpcyA/IGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKGNv
bnN0X2Nhc3Q8T3B0aW9uYWw8VD4mPigqdGhpcykuY29udGFpbmVkX3ZhbCgpKSA6IGRldGFpbF86
OmNvbnZlcnQ8VD4oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8Vj4odikpOw0KICB9DQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA1ODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL09wdGlvbmFsLmgiDQoNCiAgDQogIHZvaWQgcmVzZXQo
KSAgeyBjbGVhcigpOyB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBUPg0KY2xhc3MgT3B0aW9u
YWw8VCY+DQp7DQogIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBO
b3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsg
fSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lz
SGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogIHN0YXRpY19hc3Nl
cnQoICFzdGQ6OmlzX3NhbWU8VCwgbnVsbG9wdF90Pjo6dmFsdWUsICJiYWQgVCIgKTsNCiAgc3Rh
dGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTxULCBzdGQ6OmluX3BsYWNlX3Q+Ojp2YWx1ZSwgImJh
ZCBUIiApOw0KICBUKiByZWY7DQoNCnB1YmxpYzoNCg0KICANCiAgY29uc3RleHByIE9wdGlvbmFs
KCkgIDogcmVmKG51bGxwdHIpIHt9DQoNCiAgY29uc3RleHByIE9wdGlvbmFsKG51bGxvcHRfdCkg
IDogcmVmKG51bGxwdHIpIHt9DQoNCiAgY29uc3RleHByIE9wdGlvbmFsKFQmIHYpICA6IHJlZihk
ZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKHYpKSB7fQ0KDQogIE9wdGlvbmFsKFQmJikgPSBkZWxl
dGU7DQoNCiAgY29uc3RleHByIE9wdGlvbmFsKGNvbnN0IE9wdGlvbmFsJiByaHMpICA6IHJlZihy
aHMucmVmKSB7fQ0KDQogIGV4cGxpY2l0IGNvbnN0ZXhwciBPcHRpb25hbChzdGQ6OmluX3BsYWNl
X3QsIFQmIHYpICA6IHJlZihkZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKHYpKSB7fQ0KDQogIGV4
cGxpY2l0IE9wdGlvbmFsKHN0ZDo6aW5fcGxhY2VfdCwgVCYmKSA9IGRlbGV0ZTsNCg0KICB+T3B0
aW9uYWwoKSA9IGRlZmF1bHQ7DQoNCiAgDQogIE9wdGlvbmFsJiBvcGVyYXRvcj0obnVsbG9wdF90
KSAgew0KICAgIHJlZiA9IG51bGxwdHI7DQogICAgcmV0dXJuICp0aGlzOw0KICB9DQoNCiAgDQog
ICAgDQogICAgDQogIA0KDQogIA0KICAgIA0KICAgIA0KICANCg0KICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVT4NCiAgYXV0byBvcGVyYXRvcj0oVSYmIHJocykgDQogIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmDQogIDwNCiAgICBzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxVPjo6dHlw
ZSwgT3B0aW9uYWw8VCY+Pjo6dmFsdWUsDQogICAgT3B0aW9uYWwmDQogID46OnR5cGUNCiAgew0K
ICAgIHJlZiA9IHJocy5yZWY7DQogICAgcmV0dXJuICp0aGlzOw0KICB9DQoNCiAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+DQogIGF1dG8gb3BlcmF0b3I9KFUmJiByaHMpIA0KICAtPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZg0KICA8DQogICAgIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5
PFU+Ojp0eXBlLCBPcHRpb25hbDxUJj4+Ojp2YWx1ZSwNCiAgICBPcHRpb25hbCYNCiAgPjo6dHlw
ZQ0KICA9IGRlbGV0ZTsNCg0KICB2b2lkIGVtcGxhY2UoVCYgdikgIHsNCiAgICByZWYgPSBkZXRh
aWxfOjpzdGF0aWNfYWRkcmVzc29mKHYpOw0KICB9DQoNCiAgdm9pZCBlbXBsYWNlKFQmJikgPSBk
ZWxldGU7DQoNCg0KICB2b2lkIHN3YXAoT3B0aW9uYWw8VCY+JiByaHMpIA0KICB7DQogICAgc3Rk
Ojpzd2FwKHJlZiwgcmhzLnJlZik7DQogIH0NCg0KICANCiAgY29uc3RleHByIFQqIG9wZXJhdG9y
LT4oKSBjb25zdCB7DQogICAgZG8geyBpZiAoKCEocmVmKSkpIHsgV1RGQ3Jhc2goKTsgfSB9IHdo
aWxlICgwKTsNCiAgICByZXR1cm4gcmVmOw0KICB9DQoNCiAgY29uc3RleHByIFQmIG9wZXJhdG9y
KigpIGNvbnN0IHsNCiAgICBkbyB7IGlmICgoIShyZWYpKSkgeyBXVEZDcmFzaCgpOyB9IH0gd2hp
bGUgKDApOw0KICAgIHJldHVybiAqcmVmOw0KICB9DQoNCiAgY29uc3RleHByIFQmIHZhbHVlKCkg
Y29uc3Qgew0KICAgIGRvIHsgaWYgKCghKHJlZigpKSkpIHsgV1RGQ3Jhc2goKTsgfSB9IHdoaWxl
ICgwKTsNCiAgICByZXR1cm4gKnJlZjsNCiAgfQ0KDQogIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVy
YXRvciBib29sKCkgY29uc3QgIHsNCiAgICByZXR1cm4gcmVmICE9IG51bGxwdHI7DQogIH0NCg0K
ICBjb25zdGV4cHIgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0ICB7DQogICAgcmV0dXJuIHJlZiAhPSBu
dWxscHRyOw0KICB9DQoNCiAgdGVtcGxhdGUgPGNsYXNzIFY+DQogIGNvbnN0ZXhwciB0eXBlbmFt
ZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlIHZhbHVlT3IoViYmIHYpIGNvbnN0DQogIHsNCiAgICByZXR1
cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpjb252ZXJ0PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8
VD46OnR5cGU+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsNCiAgfQ0KDQogIA0K
ICB2b2lkIHJlc2V0KCkgIHsgcmVmID0gbnVsbHB0cjsgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgVD4NCmNsYXNzIE9wdGlvbmFsPFQmJj4NCnsNCiAgc3RhdGljX2Fzc2VydCggc2l6ZW9mKFQp
ID09IDAsICJPcHRpb25hbCBydmFsdWUgcmVmZXJlbmNlcyBkaXNhbGxvd2VkIiApOw0KfTsNCg0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9w
dGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25hbDxUPiYgeSkNCnsNCiAgcmV0dXJuIGJvb2woeCkg
IT0gYm9vbCh5KSA/IGZhbHNlIDogYm9vbCh4KSA9PSBmYWxzZSA/IHRydWUgOiAqeCA9PSAqeTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
T3B0aW9uYWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQ0Kew0KICByZXR1cm4gISh4ID09
IHkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25hbDxUPiYgeSkNCnsNCiAgcmV0dXJuICgh
eSkgPyBmYWxzZSA6ICgheCkgPyB0cnVlIDogKnggPCAqeTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3Qg
T3B0aW9uYWw8VD4mIHkpDQp7DQogIHJldHVybiAoeSA8IHgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29u
c3QgT3B0aW9uYWw8VD4mIHkpDQp7DQogIHJldHVybiAhKHkgPCB4KTsNCn0NCg0KdGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8VD4mIHgs
IGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQ0Kew0KICByZXR1cm4gISh4IDwgeSk7DQp9DQoNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25h
bDxUPiYgeCwgbnVsbG9wdF90KSANCnsNCiAgcmV0dXJuICgheCk7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KG51bGxvcHRfdCwgY29uc3QgT3B0aW9u
YWw8VD4mIHgpIA0Kew0KICByZXR1cm4gKCF4KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkg
DQp7DQogIHJldHVybiBib29sKHgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3IhPShudWxsb3B0X3QsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KSANCnsNCiAg
cmV0dXJuIGJvb2woeCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIA0Kew0KICByZXR1cm4gZmFs
c2U7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwobnVs
bG9wdF90LCBjb25zdCBPcHRpb25hbDxUPiYgeCkgDQp7DQogIHJldHVybiBib29sKHgpOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPcHRp
b25hbDxUPiYgeCwgbnVsbG9wdF90KSANCnsNCiAgcmV0dXJuICgheCk7DQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KG51bGxvcHRfdCwgY29uc3QgT3B0
aW9uYWw8VD4mKSANCnsNCiAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgT3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkg
DQp7DQogIHJldHVybiBib29sKHgpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+KG51bGxvcHRfdCwgY29uc3QgT3B0aW9uYWw8VD4mKSANCnsNCiAgcmV0
dXJuIGZhbHNlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBPcHRpb25hbDxUPiYsIG51bGxvcHRfdCkgDQp7DQogIHJldHVybiB0cnVlOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShudWxsb3B0
X3QsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KSANCnsNCiAgcmV0dXJuICgheCk7DQp9DQoNCg0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlv
bmFsPFQ+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4ID09IHYgOiBm
YWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VD4mIHgpDQp7DQogIHJldHVybiBib29sKHgpID8g
diA9PSAqeCA6IGZhbHNlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgVCYgdikNCnsNCiAgcmV0dXJu
IGJvb2woeCkgPyAqeCAhPSB2IDogdHJ1ZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VD4mIHgpDQp7
DQogIHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6IHRydWU7DQp9DQoNCnRlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0
IFQmIHYpDQp7DQogIHJldHVybiBib29sKHgpID8gKnggPCB2IDogdHJ1ZTsNCn0NCg0KdGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBUJiB2LCBjb25zdCBP
cHRpb25hbDxUPiYgeCkNCnsNCiAgcmV0dXJuIGJvb2woeCkgPyB2ID4gKnggOiB0cnVlOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9wdGlv
bmFsPFQ+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4ID4gdiA6IGZh
bHNlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/IHYg
PCAqeCA6IGZhbHNlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I+PShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgVCYgdikNCnsNCiAgcmV0dXJuIGJv
b2woeCkgPyAqeCA+PSB2IDogZmFsc2U7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KQ0Kew0K
ICByZXR1cm4gYm9vbCh4KSA/IHYgPD0gKnggOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0
IFQmIHYpDQp7DQogIHJldHVybiBib29sKHgpID8gKnggPD0gdiA6IHRydWU7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHYsIGNvbnN0
IE9wdGlvbmFsPFQ+JiB4KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/IHYgPj0gKnggOiB0cnVlOw0K
fQ0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4
ID09IHYgOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQ0Kew0KICByZXR1cm4g
Ym9vbCh4KSA/IHYgPT0gKnggOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQ0K
ew0KICByZXR1cm4gYm9vbCh4KSA/ICp4ICE9IHYgOiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25h
bDxUJj4mIHgpDQp7DQogIHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6IHRydWU7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8
VCY+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6IHRydWU7
DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
VCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/IHYgPiAq
eCA6IHRydWU7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj4oY29uc3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4
KSA/ICp4ID4gdiA6IGZhbHNlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQmPiYgeCkNCnsNCiAgcmV0
dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2
KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgdiwgY29uc3QgT3B0
aW9uYWw8VCY+JiB4KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/IHYgPD0gKnggOiBmYWxzZTsNCn0N
Cg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgT3B0
aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4IDw9IHYg
OiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUJj4mIHgpDQp7DQogIHJldHVybiBib29sKHgp
ID8gdiA+PSAqeCA6IHRydWU7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQ0K
ew0KICByZXR1cm4gYm9vbCh4KSA/ICp4ID09IHYgOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9u
YWw8Y29uc3QgVCY+JiB4KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/IHYgPT0gKnggOiBmYWxzZTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
T3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/
ICp4ICE9IHYgOiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgpDQp7DQog
IHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6IHRydWU7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBj
b25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6IHRydWU7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgdiwgY29u
c3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/IHYgPiAqeCA6
IHRydWU7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4o
Y29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9v
bCh4KSA/ICp4ID4gdiA6IGZhbHNlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCkN
CnsNCiAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+
JiB4LCBjb25zdCBUJiB2KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qg
VCYgdiwgY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQ0Kew0KICByZXR1cm4gYm9vbCh4KSA/
IHYgPD0gKnggOiBmYWxzZTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPD0oY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQ0Kew0K
ICByZXR1cm4gYm9vbCh4KSA/ICp4IDw9IHYgOiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxj
b25zdCBUJj4mIHgpDQp7DQogIHJldHVybiBib29sKHgpID8gdiA+PSAqeCA6IHRydWU7DQp9DQoN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVD4NCnZvaWQgc3dhcChPcHRpb25hbDxUPiYgeCwgT3B0aW9u
YWw8VD4mIHkpIA0Kew0KICB4LnN3YXAoeSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIFQ+DQpj
b25zdGV4cHIgT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4gbWFrZU9wdGlv
bmFsKFQmJiB2KQ0Kew0KICByZXR1cm4gT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6
dHlwZT4oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8VD4odikpOw0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgWD4NCmNvbnN0ZXhwciBPcHRpb25hbDxYJj4gbWFrZU9wdGlvbmFsKHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8WD4gdikNCnsNCiAgcmV0dXJuIE9wdGlvbmFsPFgmPih2LmdldCgpKTsNCn0N
Cg0KfSANCg0KbmFtZXNwYWNlIHN0ZA0Kew0KICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCiAgc3Ry
dWN0IGhhc2g8V1RGOjpPcHRpb25hbDxUPj4NCiAgew0KICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFz
aDxUPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7DQogICAgdHlwZWRlZiBXVEY6Ok9wdGlvbmFs
PFQ+IGFyZ3VtZW50X3R5cGU7DQoNCiAgICBjb25zdGV4cHIgcmVzdWx0X3R5cGUgb3BlcmF0b3Io
KShhcmd1bWVudF90eXBlIGNvbnN0JiBhcmcpIGNvbnN0IHsNCiAgICAgIHJldHVybiBhcmcgPyBz
dGQ6Omhhc2g8VD57fSgqYXJnKSA6IHJlc3VsdF90eXBle307DQogICAgfQ0KICB9Ow0KDQogIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPg0KICBzdHJ1Y3QgaGFzaDxXVEY6Ok9wdGlvbmFsPFQmPj4NCiAg
ew0KICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFzaDxUPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7
DQogICAgdHlwZWRlZiBXVEY6Ok9wdGlvbmFsPFQmPiBhcmd1bWVudF90eXBlOw0KDQogICAgY29u
c3RleHByIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoYXJndW1lbnRfdHlwZSBjb25zdCYgYXJnKSBj
b25zdCB7DQogICAgICByZXR1cm4gYXJnID8gc3RkOjpoYXNoPFQ+e30oKmFyZykgOiByZXN1bHRf
dHlwZXt9Ow0KICAgIH0NCiAgfTsNCn0NCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBPcHRpb25hbFR5cGUsIGNsYXNzIENhbGxiYWNrPg0KX19mb3JjZWlubGluZQ0K
YXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25hbFR5cGUgT3B0aW9uYWwsIENhbGxiYWNrIGNhbGxi
YWNrKSAtPiB0eXBlbmFtZSBPcHRpb25hbFR5cGU6OnZhbHVlX3R5cGUNCnsNCiAgICBpZiAoT3B0
aW9uYWwpDQogICAgICAgIHJldHVybiAqT3B0aW9uYWw7DQogICAgcmV0dXJuIGNhbGxiYWNrKCk7
DQp9DQoNCn0gDQoNCnVzaW5nIFdURjo6T3B0aW9uYWw7DQp1c2luZyBXVEY6Om1ha2VPcHRpb25h
bDsNCnVzaW5nIFdURjo6dmFsdWVPckNvbXB1dGU7DQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUHJpbnRTdHJlYW0uaCIN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1Jhd1BvaW50ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFz
cyBSYXdQb2ludGVyIHsNCnB1YmxpYzoNCiAgICBSYXdQb2ludGVyKCkNCiAgICAgICAgOiBtX3Zh
bHVlKG51bGxwdHIpDQogICAgew0KICAgIH0NCiAgICANCiAgICBleHBsaWNpdCBSYXdQb2ludGVy
KHZvaWQqIHZhbHVlKQ0KICAgICAgICA6IG1fdmFsdWUodmFsdWUpDQogICAgew0KICAgIH0NCiAg
ICANCiAgICBleHBsaWNpdCBSYXdQb2ludGVyKGNvbnN0IHZvaWQqIHZhbHVlKQ0KICAgICAgICA6
IG1fdmFsdWUodmFsdWUpDQogICAgew0KICAgIH0NCiAgICANCiAgICBjb25zdCB2b2lkKiB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0NCiAgICANCnByaXZhdGU6DQogICAgY29uc3Qg
dm9pZCogbV92YWx1ZTsNCn07DQoNCn0gDQoNCnVzaW5nIFdURjo6UmF3UG9pbnRlcjsNCiNsaW5l
IDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QcmludFN0cmVhbS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUmVmUHRyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSIN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4
KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQx
ODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIz
IDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2
Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KaW5saW5lIGNvbnN0
ZXhwciBpbnQgX0lTT1JUX01BWCA9IDMyOyANCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0RpZmY+DQpj
b25zdGV4cHIgcHRyZGlmZl90IF9UZW1wb3JhcnlfYnVmZmVyX3NpemUoY29uc3QgX0RpZmYgX1Zh
bHVlKSBub2V4Y2VwdCB7DQogICAgDQogICAgdXNpbmcgX0NUID0gY29tbW9uX3R5cGVfdDxwdHJk
aWZmX3QsIF9EaWZmPjsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cHRyZGlmZl90PigoOjpzdGQ6
OiBtaW4pKHN0YXRpY19jYXN0PF9DVD4oOTIyMzM3MjAzNjg1NDc3NTgwN2k2NCksIHN0YXRpY19j
YXN0PF9DVD4oX1ZhbHVlKSkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0Kc3RydWN0IF9P
cHRpbWlzdGljX3RlbXBvcmFyeV9idWZmZXIgeyANCiAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBfT3B0aW1pc3RpY19zaXplICA9IDQwOTY7IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IF9PcHRpbWlzdGljX2NvdW50ID0gKDo6c3RkOjogbWF4KShzdGF0aWNfY2FzdDxzaXplX3Q+KDEp
LCBfT3B0aW1pc3RpY19zaXplIC8gc2l6ZW9mKF9UeSkpOw0KDQogICAgdGVtcGxhdGUgPGNsYXNz
IF9EaWZmPg0KICAgIGV4cGxpY2l0IF9PcHRpbWlzdGljX3RlbXBvcmFyeV9idWZmZXIoY29uc3Qg
X0RpZmYgX1JlcXVlc3RlZF9zaXplKSBub2V4Y2VwdCB7IA0KICAgICAgICBjb25zdCBhdXRvIF9B
dHRlbXB0ID0gX1RlbXBvcmFyeV9idWZmZXJfc2l6ZShfUmVxdWVzdGVkX3NpemUpOw0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KF9SZXF1ZXN0ZWRf
c2l6ZSkgPD0gX09wdGltaXN0aWNfY291bnQpIHsgDQogICAgICAgICAgICBfRGF0YSAgICAgPSBy
ZWludGVycHJldF9jYXN0PF9UeSo+KCZfU3RhY2tfc3BhY2VbMF0pOw0KICAgICAgICAgICAgX0Nh
cGFjaXR5ID0gc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihfUmVxdWVzdGVkX3NpemUpOyANCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IHBhaXI8X1R5KiwgcHRy
ZGlmZl90PiBfUmF3ID0gX0dldF90ZW1wb3JhcnlfYnVmZmVyPF9UeT4oX0F0dGVtcHQpOw0KICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihfUmF3LnNlY29uZCkgPiBfT3B0aW1pc3RpY19j
b3VudCkgeyANCiAgICAgICAgICAgIF9EYXRhICAgICA9IF9SYXcuZmlyc3Q7DQogICAgICAgICAg
ICBfQ2FwYWNpdHkgPSBfUmF3LnNlY29uZDsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAg
fQ0KDQogICAgICAgIA0KICAgICAgICBfUmV0dXJuX3RlbXBvcmFyeV9idWZmZXIoX1Jhdy5maXJz
dCk7DQogICAgICAgIF9EYXRhICAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8X1R5Kj4oJl9TdGFja19z
cGFjZVswXSk7DQogICAgICAgIF9DYXBhY2l0eSA9IF9PcHRpbWlzdGljX2NvdW50Ow0KICAgIH0N
Cg0KICAgIF9PcHRpbWlzdGljX3RlbXBvcmFyeV9idWZmZXIoY29uc3QgX09wdGltaXN0aWNfdGVt
cG9yYXJ5X2J1ZmZlciYpID0gZGVsZXRlOw0KICAgIF9PcHRpbWlzdGljX3RlbXBvcmFyeV9idWZm
ZXImIG9wZXJhdG9yPShjb25zdCBfT3B0aW1pc3RpY190ZW1wb3JhcnlfYnVmZmVyJikgPSBkZWxl
dGU7DQoNCiAgICB+X09wdGltaXN0aWNfdGVtcG9yYXJ5X2J1ZmZlcigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oX0NhcGFjaXR5KSA+IF9PcHRpbWlzdGljX2Nv
dW50KSB7DQogICAgICAgICAgICBfUmV0dXJuX3RlbXBvcmFyeV9idWZmZXIoX0RhdGEpOw0KICAg
ICAgICB9DQogICAgfQ0KDQogICAgX1R5KiBfRGF0YTsgDQogICAgcHRyZGlmZl90IF9DYXBhY2l0
eTsNCiAgICBhbGlnbmVkX3VuaW9uX3Q8MCwgX1R5PiBfU3RhY2tfc3BhY2VbX09wdGltaXN0aWNf
Y291bnRdOw0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0
LCBjbGFzcyBfRm4+DQppbmxpbmUgX0ZuIGZvcl9lYWNoKF9Jbkl0IF9GaXJzdCwgX0luSXQgX0xh
c3QsIF9GbiBfRnVuYykgeyANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsN
CiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29u
c3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgZm9yICg7IF9VRmly
c3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgX0Z1bmMoKl9VRmlyc3QpOw0KICAg
IH0NCg0KICAgIHJldHVybiBfRnVuYzsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNs
YXNzIF9Gd2RJdCwgY2xhc3MgX0ZuLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQ
bz4gPSAwPg0Kdm9pZCBmb3JfZWFjaChfRXhQbyYmIF9FeGVjLCBfRndkSXQgX0ZpcnN0LCBfRndk
SXQgX0xhc3QsIF9GbiBfRnVuYykgbm9leGNlcHQ7IA0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5J
dCwgY2xhc3MgX0RpZmYsIGNsYXNzIF9Gbj4NCmlubGluZSBfSW5JdCBmb3JfZWFjaF9uKF9Jbkl0
IF9GaXJzdCwgY29uc3QgX0RpZmYgX0NvdW50X3JhdywgX0ZuIF9GdW5jKSB7DQogICAgDQogICAg
X0FsZ29yaXRobV9pbnRfdDxfRGlmZj4gX0NvdW50ID0gX0NvdW50X3JhdzsNCiAgICBpZiAoMCA8
IF9Db3VudCkgew0KICAgICAgICBhdXRvIF9VRmlyc3QgPSBfR2V0X3Vud3JhcHBlZF9uKF9GaXJz
dCwgX0NvdW50KTsNCiAgICAgICAgZG8gew0KICAgICAgICAgICAgX0Z1bmMoKl9VRmlyc3QpOw0K
ICAgICAgICAgICAgLS1fQ291bnQ7DQogICAgICAgICAgICArK19VRmlyc3Q7DQogICAgICAgIH0g
d2hpbGUgKDAgPCBfQ291bnQpOw0KDQogICAgICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0LCBfVUZp
cnN0KTsNCiAgICB9DQoNCiAgICByZXR1cm4gX0ZpcnN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0V4UG8sIGNsYXNzIF9Gd2RJdCwgY2xhc3MgX0RpZmYsIGNsYXNzIF9GbiwgX0VuYWJsZV9pZl9l
eGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCl9Gd2RJdCBmb3JfZWFjaF9uKF9FeFBvJiYg
X0V4ZWMsIF9Gd2RJdCBfRmlyc3QsIF9EaWZmIF9Db3VudF9yYXcsIF9GbiBfRnVuYykgbm9leGNl
cHQ7IA0KI2xpbmUgMzIzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3Mg
X0Z3ZEl0LCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9
IDA+DQpbW25vZGlzY2FyZF1dIF9Gd2RJdCBmaW5kX2lmKF9FeFBvJiYgX0V4ZWMsIF9Gd2RJdCBf
Rmlyc3QsIGNvbnN0IF9Gd2RJdCBfTGFzdCwgX1ByIF9QcmVkKSBub2V4Y2VwdDsgDQojbGluZSA0
NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxn
b3JpdGhtIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9Jbkl0LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBfSW5JdCBmaW5k
X2lmX25vdChfSW5JdCBfRmlyc3QsIGNvbnN0IF9Jbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAg
ICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmly
c3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3Qg
PSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgZm9yICg7IF9VRmlyc3QgIT0gX1VMYXN0OyAr
K19VRmlyc3QpIHsNCiAgICAgICAgaWYgKCFfUHJlZCgqX1VGaXJzdCkpIHsNCiAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9V
Rmlyc3QpOw0KICAgIHJldHVybiBfRmlyc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBv
LCBjbGFzcyBfRndkSXQsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8
X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0IGZpbmRfaWZfbm90KF9FeFBvJiYgX0V4
ZWMsIF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCwgX1ByIF9QcmVkKSBub2V4Y2VwdDsgDQoj
bGluZSA1MTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYWxnb3JpdGhtIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xh
c3MgX1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0Z3ZEl0IGFkamFjZW50X2ZpbmQoY29uc3Qg
X0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRs
X3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgPSBfR2V0X3Vu
d3JhcHBlZChfRmlyc3QpOw0KICAgIGF1dG8gX1VMYXN0ICA9IF9HZXRfdW53cmFwcGVkKF9MYXN0
KTsNCiAgICBpZiAoX1VGaXJzdCAhPSBfVUxhc3QpIHsNCiAgICAgICAgZm9yIChhdXRvIF9VTmV4
dCA9IF9VRmlyc3Q7ICsrX1VOZXh0ICE9IF9VTGFzdDsgX1VGaXJzdCA9IF9VTmV4dCkgew0KICAg
ICAgICAgICAgaWYgKF9QcmVkKCpfVUZpcnN0LCAqX1VOZXh0KSkgew0KICAgICAgICAgICAgICAg
IF9VTGFzdCA9IF9VRmlyc3Q7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9MYXN0LCBfVUxhc3QpOw0K
ICAgIHJldHVybiBfTGFzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdD4NCltbbm9kaXNj
YXJkXV0gaW5saW5lIF9Gd2RJdCBhZGphY2VudF9maW5kKGNvbnN0IF9Gd2RJdCBfRmlyc3QsIGNv
bnN0IF9Gd2RJdCBfTGFzdCkgeyANCiAgICByZXR1cm4gOjpzdGQ6OiBhZGphY2VudF9maW5kKF9G
aXJzdCwgX0xhc3QsIGVxdWFsX3RvPD57fSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBv
LCBjbGFzcyBfRndkSXQsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8
X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0IGFkamFjZW50X2ZpbmQoX0V4UG8mJiBf
RXhlYywgX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0OyAN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIF9FbmFibGVfaWZfZXhlY3V0
aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIF9Gd2RJdCBhZGphY2VudF9m
aW5kKF9FeFBvJiYgX0V4ZWMsIGNvbnN0IF9Gd2RJdCBfRmlyc3QsIGNvbnN0IF9Gd2RJdCBfTGFz
dCkgbm9leGNlcHQgIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBhZGphY2VudF9maW5kKDo6
c3RkOjogZm9yd2FyZDxfRXhQbz4oX0V4ZWMpLCBfRmlyc3QsIF9MYXN0LCBlcXVhbF90b3t9KTsN
Cn0NCiNsaW5lIDU4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX1By
Pg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0l0ZXJfZGlmZl90PF9Jbkl0PiBjb3VudF9pZihfSW5J
dCBfRmlyc3QsIF9Jbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3Zlcmlm
eV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgICAgICAgICAgICAgICA9
IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgICAgICAgICAg
PSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgX0l0ZXJfZGlmZl90PF9Jbkl0PiBfQ291bnQg
PSAwOw0KICAgIGZvciAoOyBfVUZpcnN0ICE9IF9VTGFzdDsgKytfVUZpcnN0KSB7DQogICAgICAg
IGlmIChfUHJlZCgqX1VGaXJzdCkpIHsNCiAgICAgICAgICAgICsrX0NvdW50Ow0KICAgICAgICB9
DQogICAgfQ0KDQogICAgcmV0dXJuIF9Db3VudDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4
UG8sIGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lf
dDxfRXhQbz4gPSAwPg0KW1tub2Rpc2NhcmRdXSBfSXRlcl9kaWZmX3Q8X0Z3ZEl0PiBjb3VudF9p
ZigNCiAgICBfRXhQbyYmIF9FeGVjLCBjb25zdCBfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndkSXQg
X0xhc3QsIF9QciBfUHJlZCkgbm9leGNlcHQ7IA0KI2xpbmUgNjkwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0MSwgY2xhc3MgX0lu
SXQyLCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBwYWlyPF9Jbkl0MSwgX0luSXQy
PiBtaXNtYXRjaChfSW5JdDEgX0ZpcnN0MSwgY29uc3QgX0luSXQxIF9MYXN0MSwgX0luSXQyIF9G
aXJzdDIsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdDEs
IF9MYXN0MSk7DQogICAgYXV0byBfVUZpcnN0MSAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0
MSk7DQogICAgY29uc3QgYXV0byBfVUxhc3QxID0gX0dldF91bndyYXBwZWQoX0xhc3QxKTsNCiAg
ICBhdXRvIF9VRmlyc3QyICAgICAgPSBfR2V0X3Vud3JhcHBlZF9uKF9GaXJzdDIsIF9JZGxfZGlz
dGFuY2U8X0luSXQxPihfVUZpcnN0MSwgX1VMYXN0MSkpOw0KICAgIHdoaWxlIChfVUZpcnN0MSAh
PSBfVUxhc3QxICYmIF9QcmVkKCpfVUZpcnN0MSwgKl9VRmlyc3QyKSkgew0KICAgICAgICArK19V
Rmlyc3QxOw0KICAgICAgICArK19VRmlyc3QyOw0KICAgIH0NCg0KICAgIF9TZWVrX3dyYXBwZWQo
X0ZpcnN0MiwgX1VGaXJzdDIpOw0KICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0MSwgX1VGaXJzdDEp
Ow0KICAgIHJldHVybiB7X0ZpcnN0MSwgX0ZpcnN0Mn07DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFzcyBfUHIsIF9FbmFibGVf
aWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIHBhaXI8X0Z3
ZEl0MSwgX0Z3ZEl0Mj4gbWlzbWF0Y2goDQogICAgX0V4UG8mJiBfRXhlYywgX0Z3ZEl0MSBfRmly
c3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfUHIgX1ByZWQpIG5vZXhjZXB0
OyANCiNsaW5lIDc1OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxhbGdvcml0aG0iDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdDEsIGNsYXNzIF9Jbkl0
Mj4NCltbbm9kaXNjYXJkXV0gaW5saW5lIHBhaXI8X0luSXQxLCBfSW5JdDI+IG1pc21hdGNoKGNv
bnN0IF9Jbkl0MSBfRmlyc3QxLCBjb25zdCBfSW5JdDEgX0xhc3QxLCBjb25zdCBfSW5JdDIgX0Zp
cnN0Mikgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IG1pc21hdGNoKF9GaXJzdDEsIF9MYXN0
MSwgX0ZpcnN0MiwgZXF1YWxfdG88Pnt9KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8s
IGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGlj
eV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIHBhaXI8X0Z3ZEl0MSwgX0Z3ZEl0Mj4gbWlz
bWF0Y2goDQogICAgX0V4UG8mJiBfRXhlYywgY29uc3QgX0Z3ZEl0MSBfRmlyc3QxLCBjb25zdCBf
RndkSXQxIF9MYXN0MSwgY29uc3QgX0Z3ZEl0MiBfRmlyc3QyKSBub2V4Y2VwdCAgew0KICAgIA0K
ICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxlbCBhbGdv
cml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgc3Rh
dGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMg
cmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICByZXR1cm4gOjpz
dGQ6OiBtaXNtYXRjaCg6OnN0ZDo6IGZvcndhcmQ8X0V4UG8+KF9FeGVjKSwgX0ZpcnN0MSwgX0xh
c3QxLCBfRmlyc3QyLCBlcXVhbF90b3t9KTsNCn0NCiNsaW5lIDc3NSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9Jbkl0MSwgY2xhc3MgX0luSXQyLCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1d
IGlubGluZSBwYWlyPF9Jbkl0MSwgX0luSXQyPiBtaXNtYXRjaCgNCiAgICBfSW5JdDEgX0ZpcnN0
MSwgX0luSXQxIF9MYXN0MSwgX0luSXQyIF9GaXJzdDIsIF9Jbkl0MiBfTGFzdDIsIF9QciBfUHJl
ZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdDEsIF9MYXN0MSk7DQogICAg
X0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0MiwgX0xhc3QyKTsNCiAgICBhdXRvIF9VRmlyc3QxICAg
ICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QxKTsNCiAgICBhdXRvIF9VTGFzdDEgICAgICAgPSBf
R2V0X3Vud3JhcHBlZChfTGFzdDEpOw0KICAgIGF1dG8gX1VGaXJzdDIgICAgICA9IF9HZXRfdW53
cmFwcGVkKF9GaXJzdDIpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MiA9IF9HZXRfdW53cmFwcGVk
KF9MYXN0Mik7DQogICAgaWYgY29uc3RleHByIChfSXNfcmFuZG9tX2l0ZXJfdjxfSW5JdDE+ICYm
IF9Jc19yYW5kb21faXRlcl92PF9Jbkl0Mj4pIHsNCiAgICAgICAgdXNpbmcgX0NUICAgICAgICAg
PSBfQ29tbW9uX2RpZmZfdDxfSW5JdDEsIF9Jbkl0Mj47DQogICAgICAgIGNvbnN0IF9DVCBfQ291
bnQxID0gX1VMYXN0MSAtIF9VRmlyc3QxOw0KICAgICAgICBjb25zdCBfQ1QgX0NvdW50MiA9IF9V
TGFzdDIgLSBfVUZpcnN0MjsNCiAgICAgICAgY29uc3QgYXV0byBfQ291bnQgPSBzdGF0aWNfY2Fz
dDxfSXRlcl9kaWZmX3Q8X0luSXQxPj4oKDo6c3RkOjogbWluKShfQ291bnQxLCBfQ291bnQyKSk7
DQogICAgICAgIF9VTGFzdDEgICAgICAgICAgID0gX1VGaXJzdDEgKyBfQ291bnQ7DQogICAgICAg
IHdoaWxlIChfVUZpcnN0MSAhPSBfVUxhc3QxICYmIF9QcmVkKCpfVUZpcnN0MSwgKl9VRmlyc3Qy
KSkgew0KICAgICAgICAgICAgKytfVUZpcnN0MTsNCiAgICAgICAgICAgICsrX1VGaXJzdDI7DQog
ICAgICAgIH0NCiAgICB9IGVsc2Ugew0KICAgICAgICB3aGlsZSAoX1VGaXJzdDEgIT0gX1VMYXN0
MSAmJiBfVUZpcnN0MiAhPSBfVUxhc3QyICYmIF9QcmVkKCpfVUZpcnN0MSwgKl9VRmlyc3QyKSkg
ew0KICAgICAgICAgICAgKytfVUZpcnN0MTsNCiAgICAgICAgICAgICsrX1VGaXJzdDI7DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9GaXJzdDIsIF9VRmlyc3QyKTsNCiAg
ICBfU2Vla193cmFwcGVkKF9GaXJzdDEsIF9VRmlyc3QxKTsNCiAgICByZXR1cm4ge19GaXJzdDEs
IF9GaXJzdDJ9Ow0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg0NCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFzcyBfUHIsIF9F
bmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIHBh
aXI8X0Z3ZEl0MSwgX0Z3ZEl0Mj4gbWlzbWF0Y2goDQogICAgX0V4UG8mJiBfRXhlYywgX0Z3ZEl0
MSBfRmlyc3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfRndkSXQyIF9MYXN0
MiwgX1ByIF9QcmVkKSBub2V4Y2VwdDsgDQojbGluZSA4NTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0luSXQxLCBjbGFzcyBfSW5JdDI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBwYWlyPF9Jbkl0
MSwgX0luSXQyPiBtaXNtYXRjaChfSW5JdDEgX0ZpcnN0MSwgX0luSXQxIF9MYXN0MSwgX0luSXQy
IF9GaXJzdDIsIF9Jbkl0MiBfTGFzdDIpIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBtaXNt
YXRjaChfRmlyc3QxLCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0MiwgZXF1YWxfdG88Pnt9KTsNCn0N
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIs
IF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1d
IHBhaXI8X0Z3ZEl0MSwgX0Z3ZEl0Mj4gbWlzbWF0Y2goDQogICAgX0V4UG8mJiBfRXhlYywgX0Z3
ZEl0MSBfRmlyc3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfRndkSXQyIF9M
YXN0Mikgbm9leGNlcHQgIHsNCiAgICANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92
PF9Gd2RJdDE+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3Jz
IG9yIHN0cm9uZ2VyLiIpOw0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0
Mj4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ry
b25nZXIuIik7DQogICAgcmV0dXJuIDo6c3RkOjogbWlzbWF0Y2goOjpzdGQ6OiBmb3J3YXJkPF9F
eFBvPihfRXhlYyksIF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBlcXVhbF90b3t9
KTsNCn0NCiNsaW5lIDg2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX1ByPg0KW1tu
b2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBpc19wZXJtdXRhdGlvbihfRndkSXQxIF9GaXJzdDEsIF9G
d2RJdDEgX0xhc3QxLCBfRndkSXQyIF9GaXJzdDIsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9B
ZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdDEsIF9MYXN0MSk7DQogICAgYXV0byBfVUZpcnN0MSAgICAg
ID0gX0dldF91bndyYXBwZWQoX0ZpcnN0MSk7DQogICAgY29uc3QgYXV0byBfVUxhc3QxID0gX0dl
dF91bndyYXBwZWQoX0xhc3QxKTsNCiAgICBhdXRvIF9VRmlyc3QyICAgICAgPSBfR2V0X3Vud3Jh
cHBlZF9uKF9GaXJzdDIsIF9JZGxfZGlzdGFuY2U8X0Z3ZEl0MT4oX1VGaXJzdDEsIF9VTGFzdDEp
KTsNCg0KICAgIGZvciAoOzsgKytfVUZpcnN0MSwgKHZvaWQpICsrX1VGaXJzdDIpIHsgDQogICAg
ICAgIGlmIChfVUZpcnN0MSA9PSBfVUxhc3QxKSB7IA0KICAgICAgICAgICAgcmV0dXJuIHRydWU7
DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIV9QcmVkKCpfVUZpcnN0MSwgKl9VRmlyc3QyKSkg
eyANCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgDQogICAgDQog
ICAgY29uc3QgYXV0byBfRGlzdDIgPSBzdGF0aWNfY2FzdDxfSXRlcl9kaWZmX3Q8X0Z3ZEl0Mj4+
KDo6c3RkOjogZGlzdGFuY2UoX1VGaXJzdDEsIF9VTGFzdDEpKTsNCiAgICByZXR1cm4gX0NoZWNr
X21hdGNoX2NvdW50cyhfVUZpcnN0MSwgX1VMYXN0MSwgX1VGaXJzdDIsIDo6c3RkOjogbmV4dChf
VUZpcnN0MiwgX0Rpc3QyKSwgX1Bhc3NfZm4oX1ByZWQpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
IF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIGlzX3Bl
cm11dGF0aW9uKF9Gd2RJdDEgX0ZpcnN0MSwgX0Z3ZEl0MSBfTGFzdDEsIF9Gd2RJdDIgX0ZpcnN0
Mikgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IGlzX3Blcm11dGF0aW9uKF9GaXJzdDEsIF9M
YXN0MSwgX0ZpcnN0MiwgZXF1YWxfdG88Pnt9KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJ
dDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9Qcj4NCmlubGluZSBib29sIF9Jc19wZXJtdXRhdGlv
bl91bmNoZWNrZWQoX0Z3ZEl0MSBfRmlyc3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmly
c3QyLCBfRndkSXQyIF9MYXN0MiwgX1ByIF9QcmVkLA0KICAgIGZvcndhcmRfaXRlcmF0b3JfdGFn
LCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykgew0KICAgIA0KICAgIGZvciAoOzsgKytfRmlyc3QxLCAo
dm9pZCkgKytfRmlyc3QyKSB7IA0KICAgICAgICBpZiAoX0ZpcnN0MSA9PSBfTGFzdDEpIHsNCiAg
ICAgICAgICAgIHJldHVybiBfRmlyc3QyID09IF9MYXN0MjsNCiAgICAgICAgfQ0KDQogICAgICAg
IGlmIChfRmlyc3QyID09IF9MYXN0Mikgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICB9DQoNCiAgICAgICAgaWYgKCFfUHJlZCgqX0ZpcnN0MSwgKl9GaXJzdDIpKSB7IA0KICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBhdXRvIF9OZXh0MSA9IF9G
aXJzdDE7DQogICAgYXV0byBfTmV4dDIgPSBfRmlyc3QyOw0KICAgIGZvciAoOzsgKytfTmV4dDEs
ICh2b2lkKSArK19OZXh0MikgeyANCiAgICAgICAgaWYgKF9OZXh0MSA9PSBfTGFzdDEpIHsNCiAg
ICAgICAgICAgIGlmIChfTmV4dDIgPT0gX0xhc3QyKSB7DQogICAgICAgICAgICAgICAgcmV0dXJu
IF9DaGVja19tYXRjaF9jb3VudHMoX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIF9Q
cmVkKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyANCiAgICAg
ICAgfQ0KDQogICAgICAgIGlmIChfTmV4dDIgPT0gX0xhc3QyKSB7DQogICAgICAgICAgICByZXR1
cm4gZmFsc2U7IA0KICAgICAgICB9DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0
MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX1ByPg0KaW5saW5lIGJvb2wgX0lzX3Blcm11dGF0aW9u
X3VuY2hlY2tlZChfRndkSXQxIF9GaXJzdDEsIF9Gd2RJdDEgX0xhc3QxLCBfRndkSXQyIF9GaXJz
dDIsIF9Gd2RJdDIgX0xhc3QyLCBfUHIgX1ByZWQsDQogICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRv
cl90YWcsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7DQogICAgDQogICAgaWYgKF9MYXN0
MSAtIF9GaXJzdDEgIT0gX0xhc3QyIC0gX0ZpcnN0Mikgew0KICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgfQ0KDQogICAgZm9yICg7IF9GaXJzdDEgIT0gX0xhc3QxOyArK19GaXJzdDEsICh2b2lk
KSArK19GaXJzdDIpIHsgDQogICAgICAgIGlmICghX1ByZWQoKl9GaXJzdDEsICpfRmlyc3QyKSkg
ew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gX0NoZWNrX21hdGNoX2NvdW50cyhf
Rmlyc3QxLCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0MiwgX1ByZWQpOw0KICAgICAgICB9DQogICAg
fQ0KDQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQxLCBjbGFz
cyBfRndkSXQyLCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIGlzX3Blcm11
dGF0aW9uKA0KICAgIF9Gd2RJdDEgX0ZpcnN0MSwgX0Z3ZEl0MSBfTGFzdDEsIF9Gd2RJdDIgX0Zp
cnN0MiwgX0Z3ZEl0MiBfTGFzdDIsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5
X3JhbmdlKF9GaXJzdDEsIF9MYXN0MSk7DQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0Miwg
X0xhc3QyKTsNCiAgICByZXR1cm4gX0lzX3Blcm11dGF0aW9uX3VuY2hlY2tlZChfR2V0X3Vud3Jh
cHBlZChfRmlyc3QxKSwgX0dldF91bndyYXBwZWQoX0xhc3QxKSwgX0dldF91bndyYXBwZWQoX0Zp
cnN0MiksDQogICAgICAgIF9HZXRfdW53cmFwcGVkKF9MYXN0MiksIF9QYXNzX2ZuKF9QcmVkKSwg
X0l0ZXJfY2F0X3Q8X0Z3ZEl0MT57fSwgX0l0ZXJfY2F0X3Q8X0Z3ZEl0Mj57fSk7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyPg0KW1tub2Rpc2NhcmRdXSBpbmxp
bmUgYm9vbCBpc19wZXJtdXRhdGlvbihfRndkSXQxIF9GaXJzdDEsIF9Gd2RJdDEgX0xhc3QxLCBf
RndkSXQyIF9GaXJzdDIsIF9Gd2RJdDIgX0xhc3QyKSB7DQogICAgDQogICAgcmV0dXJuIDo6c3Rk
OjogaXNfcGVybXV0YXRpb24oX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIGVxdWFs
X3RvPD57fSk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFz
cyBfUHI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIGFsbF9vZihfSW5JdCBfRmlyc3QsIF9J
bkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBf
TGFzdCk7DQogICAgYXV0byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0K
ICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KICAgIGZvciAo
OyBfVUZpcnN0ICE9IF9VTGFzdDsgKytfVUZpcnN0KSB7DQogICAgICAgIGlmICghX1ByZWQoKl9V
Rmlyc3QpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoN
CiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9G
d2RJdCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAw
Pg0KW1tub2Rpc2NhcmRdXSBib29sIGFsbF9vZihfRXhQbyYmLCBfRndkSXQgX0ZpcnN0LCBfRndk
SXQgX0xhc3QsIF9QciBfUHJlZCkgbm9leGNlcHQ7IA0KI2xpbmUgMTQwOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGlu
bGluZSBib29sIGFueV9vZihjb25zdCBfSW5JdCBfRmlyc3QsIGNvbnN0IF9Jbkl0IF9MYXN0LCBf
UHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsN
CiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29u
c3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgZm9yICg7IF9VRmly
c3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgaWYgKF9QcmVkKCpfVUZpcnN0KSkg
ew0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1
cm4gZmFsc2U7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNs
YXNzIF9QciwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9k
aXNjYXJkXV0gYm9vbCBhbnlfb2YoX0V4UG8mJiwgY29uc3QgX0Z3ZEl0IF9GaXJzdCwgY29uc3Qg
X0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0OyANCiNsaW5lIDE0NjIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX1ByPg0KW1tub2Rpc2NhcmRd
XSBpbmxpbmUgYm9vbCBub25lX29mKGNvbnN0IF9Jbkl0IF9GaXJzdCwgY29uc3QgX0luSXQgX0xh
c3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xh
c3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAg
ICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBmb3IgKDsg
X1VGaXJzdCAhPSBfVUxhc3Q7ICsrX1VGaXJzdCkgew0KICAgICAgICBpZiAoX1ByZWQoKl9VRmly
c3QpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICByZXR1cm4gdHJ1ZTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJ
dCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0K
W1tub2Rpc2NhcmRdXSBib29sIG5vbmVfb2YoX0V4UG8mJiwgY29uc3QgX0Z3ZEl0IF9GaXJzdCwg
Y29uc3QgX0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0OyANCiNsaW5lIDE1MTYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGht
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX091dEl0LCBjbGFzcyBfUHI+DQppbmxpbmUgX091
dEl0IGNvcHlfaWYoX0luSXQgX0ZpcnN0LCBfSW5JdCBfTGFzdCwgX091dEl0IF9EZXN0LCBfUHIg
X1ByZWQpIHsgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0
byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8g
X1VMYXN0ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KICAgIGF1dG8gX1VEZXN0ICAgICAgID0g
X0dldF91bndyYXBwZWRfdW52ZXJpZmllZChfRGVzdCk7DQogICAgZm9yICg7IF9VRmlyc3QgIT0g
X1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgaWYgKF9QcmVkKCpfVUZpcnN0KSkgew0KICAg
ICAgICAgICAgKl9VRGVzdCA9ICpfVUZpcnN0Ow0KICAgICAgICAgICAgKytfVURlc3Q7DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfVURlc3QpOw0KICAgIHJl
dHVybiBfRGVzdDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEs
IGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8
X0V4UG8+ID0gMD4NCl9Gd2RJdDIgY29weV9pZihfRXhQbyYmLCBfRndkSXQxIF9GaXJzdCwgX0Z3
ZEl0MSBfTGFzdCwgX0Z3ZEl0MiBfRGVzdCwgX1ByIF9QcmVkKSBub2V4Y2VwdCAgew0KICAgIA0K
ICAgIA0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxl
bCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQog
ICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29y
aXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICByZXR1
cm4gOjpzdGQ6OiBjb3B5X2lmKF9GaXJzdCwgX0xhc3QsIF9EZXN0LCBfUGFzc19mbihfUHJlZCkp
Ow0KfQ0KI2xpbmUgMTY4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfT3V0SXQx
LCBjbGFzcyBfT3V0SXQyLCBjbGFzcyBfUHI+DQppbmxpbmUgcGFpcjxfT3V0SXQxLCBfT3V0SXQy
PiBwYXJ0aXRpb25fY29weSgNCiAgICBfSW5JdCBfRmlyc3QsIF9Jbkl0IF9MYXN0LCBfT3V0SXQx
IF9EZXN0X3RydWUsIF9PdXRJdDIgX0Rlc3RfZmFsc2UsIF9QciBfUHJlZCkgew0KICAgIA0KICAg
IF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAg
ID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRf
dW53cmFwcGVkKF9MYXN0KTsNCiAgICBhdXRvIF9VRGVzdF90cnVlICA9IF9HZXRfdW53cmFwcGVk
X3VudmVyaWZpZWQoX0Rlc3RfdHJ1ZSk7DQogICAgYXV0byBfVURlc3RfZmFsc2UgPSBfR2V0X3Vu
d3JhcHBlZF91bnZlcmlmaWVkKF9EZXN0X2ZhbHNlKTsNCiAgICBmb3IgKDsgX1VGaXJzdCAhPSBf
VUxhc3Q7ICsrX1VGaXJzdCkgew0KICAgICAgICBpZiAoX1ByZWQoKl9VRmlyc3QpKSB7DQogICAg
ICAgICAgICAqX1VEZXN0X3RydWUgPSAqX1VGaXJzdDsNCiAgICAgICAgICAgICsrX1VEZXN0X3Ry
dWU7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAqX1VEZXN0X2ZhbHNlID0gKl9VRmly
c3Q7DQogICAgICAgICAgICArK19VRGVzdF9mYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IF9TZWVrX3dyYXBwZWQoX0Rlc3RfZmFsc2UsIF9VRGVzdF9mYWxzZSk7DQogICAgX1NlZWtfd3Jh
cHBlZChfRGVzdF90cnVlLCBfVURlc3RfdHJ1ZSk7DQogICAgcmV0dXJuIHtfRGVzdF90cnVlLCBf
RGVzdF9mYWxzZX07DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQx
LCBjbGFzcyBfRndkSXQyLCBjbGFzcyBfRndkSXQzLCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhl
Y3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpwYWlyPF9Gd2RJdDIsIF9Gd2RJdDM+IHBhcnRp
dGlvbl9jb3B5KF9FeFBvJiYsIF9Gd2RJdDEgX0ZpcnN0LCBfRndkSXQxIF9MYXN0LCBfRndkSXQy
IF9EZXN0X3RydWUsIF9Gd2RJdDMgX0Rlc3RfZmFsc2UsDQogICAgX1ByIF9QcmVkKSBub2V4Y2Vw
dCAgew0KICAgIA0KICAgIA0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0
MT4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ry
b25nZXIuIik7DQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQyPiwgIlBh
cmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4i
KTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdDM+LCAiUGFyYWxsZWwg
YWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAg
IHJldHVybiA6OnN0ZDo6IHBhcnRpdGlvbl9jb3B5KF9GaXJzdCwgX0xhc3QsIF9EZXN0X3RydWUs
IF9EZXN0X2ZhbHNlLCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDE5MDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3Mg
X1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBpc19wYXJ0aXRpb25lZChjb25zdCBfSW5J
dCBfRmlyc3QsIGNvbnN0IF9Jbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRs
X3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9H
ZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3Jh
cHBlZChfTGFzdCk7DQoNCiAgICBmb3IgKDs7ICsrX1VGaXJzdCkgeyANCiAgICAgICAgaWYgKF9V
Rmlyc3QgPT0gX1VMYXN0KSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0K
DQogICAgICAgIGlmICghX1ByZWQoKl9VRmlyc3QpKSB7DQogICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgfQ0KICAgIH0NCg0KICAgIHdoaWxlICgrK19VRmlyc3QgIT0gX1VMYXN0KSB7IA0KICAg
ICAgICBpZiAoX1ByZWQoKl9VRmlyc3QpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7IA0K
ICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIHRydWU7DQp9DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9leGVjdXRpb25f
cG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gYm9vbCBpc19wYXJ0aXRpb25lZChf
RXhQbyYmLCBjb25zdCBfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndkSXQgX0xhc3QsIF9QciBfUHJl
ZCkgbm9leGNlcHQ7IA0KI2xpbmUgMTkzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNz
IF9Qcj4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9Gd2RJdCBwYXJ0aXRpb25fcG9pbnQoX0Z3ZEl0
IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3Zlcmlm
eV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53
cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3JhcHBlZChf
TGFzdCk7DQogICAgYXV0byBfQ291bnQgICAgICAgPSA6OnN0ZDo6IGRpc3RhbmNlKF9VRmlyc3Qs
IF9VTGFzdCk7DQogICAgd2hpbGUgKDAgPCBfQ291bnQpIHsgDQogICAgICAgIGNvbnN0IGF1dG8g
X0NvdW50MiA9IHN0YXRpY19jYXN0PF9JdGVyX2RpZmZfdDxfRndkSXQ+PihfQ291bnQgLyAyKTsN
CiAgICAgICAgY29uc3QgYXV0byBfVU1pZCAgID0gOjpzdGQ6OiBuZXh0KF9VRmlyc3QsIF9Db3Vu
dDIpOw0KDQogICAgICAgIGlmIChfUHJlZCgqX1VNaWQpKSB7IA0KICAgICAgICAgICAgX1VGaXJz
dCA9IF9OZXh0X2l0ZXIoX1VNaWQpOw0KICAgICAgICAgICAgX0NvdW50IC09IF9Db3VudDI7DQog
ICAgICAgICAgICAtLV9Db3VudDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9Db3Vu
dCA9IF9Db3VudDI7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9GaXJz
dCwgX1VGaXJzdCk7DQogICAgcmV0dXJuIF9GaXJzdDsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdDEsIGNsYXNzIF9Jbkl0MiwgY2xhc3Mg
X1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBfRXF1YWxfcmV2X3ByZWRfdW5jaGVja2Vk
KF9Jbkl0MSBfRmlyc3QxLCBfSW5JdDIgX0ZpcnN0MiwgY29uc3QgX0luSXQyIF9MYXN0MiwgX1By
IF9QcmVkKSB7DQogICAgDQogICAgaWYgY29uc3RleHByIChfRXF1YWxfbWVtY21wX2lzX3NhZmU8
X0luSXQxLCBfSW5JdDIsIF9Qcj4pIHsNCg0KDQoNCiAgICAgICAgew0KICAgICAgICAgICAgY29u
c3QgYXV0byBfRmlyc3QxX2NoID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oX0ZpcnN0
MSk7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9GaXJzdDJfY2ggPSByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihfRmlyc3QyKTsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX0NvdW50ICAg
ICA9IHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oX0xh
c3QyKSAtIF9GaXJzdDJfY2gpOw0KICAgICAgICAgICAgcmV0dXJuIDo6IG1lbWNtcChfRmlyc3Qx
X2NoLCBfRmlyc3QyX2NoLCBfQ291bnQpID09IDA7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBm
b3IgKDsgX0ZpcnN0MiAhPSBfTGFzdDI7ICsrX0ZpcnN0MSwgKHZvaWQpICsrX0ZpcnN0Mikgew0K
ICAgICAgICBpZiAoIV9QcmVkKCpfRmlyc3QxLCAqX0ZpcnN0MikpIHsNCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjE2MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0SGF5c3RhY2ssIGNsYXNzIF9Gd2RJdFBhdCwgY2xh
c3MgX1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0Z3ZEl0SGF5c3RhY2sgc2VhcmNoKF9Gd2RJ
dEhheXN0YWNrIF9GaXJzdDEsIF9Gd2RJdEhheXN0YWNrIF9MYXN0MSwgY29uc3QgX0Z3ZEl0UGF0
IF9GaXJzdDIsDQogICAgY29uc3QgX0Z3ZEl0UGF0IF9MYXN0MiwgX1ByIF9QcmVkKSB7IA0KICAg
IF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdDEsIF9MYXN0MSk7DQogICAgX0FkbF92ZXJpZnlfcmFu
Z2UoX0ZpcnN0MiwgX0xhc3QyKTsNCiAgICBhdXRvIF9VRmlyc3QxICAgICAgID0gX0dldF91bndy
YXBwZWQoX0ZpcnN0MSk7DQogICAgY29uc3QgYXV0byBfVUxhc3QxICA9IF9HZXRfdW53cmFwcGVk
KF9MYXN0MSk7DQogICAgY29uc3QgYXV0byBfVUZpcnN0MiA9IF9HZXRfdW53cmFwcGVkKF9GaXJz
dDIpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MiAgPSBfR2V0X3Vud3JhcHBlZChfTGFzdDIpOw0K
ICAgIGlmIGNvbnN0ZXhwciAoX0lzX3JhbmRvbV9pdGVyX3Y8X0Z3ZEl0SGF5c3RhY2s+ICYmIF9J
c19yYW5kb21faXRlcl92PF9Gd2RJdFBhdD4pIHsNCiAgICAgICAgY29uc3QgX0l0ZXJfZGlmZl90
PF9Gd2RJdFBhdD4gX0NvdW50MiA9IF9VTGFzdDIgLSBfVUZpcnN0MjsNCiAgICAgICAgaWYgKF9V
TGFzdDEgLSBfVUZpcnN0MSA+PSBfQ291bnQyKSB7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9M
YXN0X3Bvc3NpYmxlID0gX1VMYXN0MSAtIHN0YXRpY19jYXN0PF9JdGVyX2RpZmZfdDxfRndkSXRI
YXlzdGFjaz4+KF9Db3VudDIpOw0KICAgICAgICAgICAgZm9yICg7OyArK19VRmlyc3QxKSB7DQog
ICAgICAgICAgICAgICAgaWYgKF9FcXVhbF9yZXZfcHJlZF91bmNoZWNrZWQoX1VGaXJzdDEsIF9V
Rmlyc3QyLCBfVUxhc3QyLCBfUGFzc19mbihfUHJlZCkpKSB7DQogICAgICAgICAgICAgICAgICAg
IF9TZWVrX3dyYXBwZWQoX0xhc3QxLCBfVUZpcnN0MSk7DQogICAgICAgICAgICAgICAgICAgIGJy
ZWFrOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChfVUZpcnN0MSA9
PSBfTGFzdF9wb3NzaWJsZSkgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9IGVsc2Ugew0KICAgICAg
ICBmb3IgKDs7ICsrX1VGaXJzdDEpIHsgDQogICAgICAgICAgICBhdXRvIF9VTWlkMSA9IF9VRmly
c3QxOw0KICAgICAgICAgICAgZm9yIChhdXRvIF9VTWlkMiA9IF9VRmlyc3QyOzsgKytfVU1pZDEs
ICh2b2lkKSArK19VTWlkMikgew0KICAgICAgICAgICAgICAgIGlmIChfVU1pZDIgPT0gX1VMYXN0
Mikgew0KICAgICAgICAgICAgICAgICAgICBfU2Vla193cmFwcGVkKF9MYXN0MSwgX1VGaXJzdDEp
Ow0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0xhc3QxOw0KICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoX1VNaWQxID09IF9VTGFzdDEpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IF9MYXN0MTsNCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFfUHJlZCgqX1VNaWQxLCAqX1VN
aWQyKSkgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gX0xhc3QxOw0KfQ0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIyNTYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGht
Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0SGF5c3RhY2ssIGNsYXNz
IF9Gd2RJdFBhdCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQ
bz4gPSAwPg0KW1tub2Rpc2NhcmRdXSBfRndkSXRIYXlzdGFjayBzZWFyY2goX0V4UG8mJiBfRXhl
YywgY29uc3QgX0Z3ZEl0SGF5c3RhY2sgX0ZpcnN0MSwgX0Z3ZEl0SGF5c3RhY2sgX0xhc3QxLA0K
ICAgIGNvbnN0IF9Gd2RJdFBhdCBfRmlyc3QyLCBjb25zdCBfRndkSXRQYXQgX0xhc3QyLCBfUHIg
X1ByZWQpIG5vZXhjZXB0OyANCiNsaW5lIDIyNjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3
ZEl0SGF5c3RhY2ssIGNsYXNzIF9Gd2RJdFBhdD4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9Gd2RJ
dEhheXN0YWNrIHNlYXJjaCgNCiAgICBjb25zdCBfRndkSXRIYXlzdGFjayBfRmlyc3QxLCBjb25z
dCBfRndkSXRIYXlzdGFjayBfTGFzdDEsIGNvbnN0IF9Gd2RJdFBhdCBfRmlyc3QyLCBjb25zdCBf
RndkSXRQYXQgX0xhc3QyKSB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogc2VhcmNoKF9GaXJz
dDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBlcXVhbF90bzw+e30pOw0KfQ0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0SGF5c3RhY2ssIGNsYXNzIF9Gd2RJdFBhdCwg
X0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0g
X0Z3ZEl0SGF5c3RhY2sgc2VhcmNoKF9FeFBvJiYgX0V4ZWMsIGNvbnN0IF9Gd2RJdEhheXN0YWNr
IF9GaXJzdDEsIGNvbnN0IF9Gd2RJdEhheXN0YWNrIF9MYXN0MSwNCiAgICBjb25zdCBfRndkSXRQ
YXQgX0ZpcnN0MiwgY29uc3QgX0Z3ZEl0UGF0IF9MYXN0Mikgbm9leGNlcHQgIHsNCiAgICANCiAg
ICByZXR1cm4gOjpzdGQ6OiBzZWFyY2goOjpzdGQ6OiBmb3J3YXJkPF9FeFBvPihfRXhlYyksIF9G
aXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBlcXVhbF90b3t9KTsNCn0NCiNsaW5lIDIy
NzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxn
b3JpdGhtIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0SGF5c3RhY2ssIGNsYXNzIF9TZWFyY2hl
cj4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9Gd2RJdEhheXN0YWNrIHNlYXJjaCgNCiAgICBjb25z
dCBfRndkSXRIYXlzdGFjayBfRmlyc3QsIGNvbnN0IF9Gd2RJdEhheXN0YWNrIF9MYXN0LCBjb25z
dCBfU2VhcmNoZXImIF9TZWFyY2gpIHsNCiAgICANCiAgICByZXR1cm4gX1NlYXJjaChfRmlyc3Qs
IF9MYXN0KS5maXJzdDsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
RndkSXQsIGNsYXNzIF9EaWZmLCBjbGFzcyBfVHksIGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0g
aW5saW5lIF9Gd2RJdCBzZWFyY2hfbigNCiAgICBjb25zdCBfRndkSXQgX0ZpcnN0LCBfRndkSXQg
X0xhc3QsIGNvbnN0IF9EaWZmIF9Db3VudF9yYXcsIGNvbnN0IF9UeSYgX1ZhbCwgX1ByIF9QcmVk
KSB7DQogICAgDQogICAgY29uc3QgX0FsZ29yaXRobV9pbnRfdDxfRGlmZj4gX0NvdW50ID0gX0Nv
dW50X3JhdzsNCiAgICBpZiAoX0NvdW50IDw9IDApIHsNCiAgICAgICAgcmV0dXJuIF9GaXJzdDsN
CiAgICB9DQoNCiAgICBpZiAoc3RhdGljX2Nhc3Q8dWludG1heF90PihfQ291bnQpID4gc3RhdGlj
X2Nhc3Q8dWludG1heF90PigobnVtZXJpY19saW1pdHM8X0l0ZXJfZGlmZl90PF9Gd2RJdD4+Ojpt
YXgpKCkpKSB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX0xhc3Q7DQogICAgfQ0KDQogICAg
X0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0byBfVUZpcnN0ICAgICAg
PSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX0dldF91
bndyYXBwZWQoX0xhc3QpOw0KICAgIGlmIGNvbnN0ZXhwciAoX0lzX3JhbmRvbV9pdGVyX3Y8X0Z3
ZEl0Pikgew0KICAgICAgICBjb25zdCBhdXRvIF9Db3VudF9kaWZmID0gc3RhdGljX2Nhc3Q8X0l0
ZXJfZGlmZl90PF9Gd2RJdD4+KF9Db3VudCk7DQogICAgICAgIGF1dG8gX1VPbGRfZmlyc3QgICAg
ICAgPSBfVUZpcnN0Ow0KICAgICAgICBmb3IgKF9JdGVyX2RpZmZfdDxfRndkSXQ+IF9JbmMgPSAw
OyBfQ291bnRfZGlmZiA8PSBfVUxhc3QgLSBfVU9sZF9maXJzdDspIHsgDQogICAgICAgICAgICBf
VUZpcnN0ID0gX1VPbGRfZmlyc3QgKyBfSW5jOw0KICAgICAgICAgICAgaWYgKF9QcmVkKCpfVUZp
cnN0LCBfVmFsKSkgeyANCiAgICAgICAgICAgICAgICBfSXRlcl9kaWZmX3Q8X0Z3ZEl0PiBfQ291
bnQxID0gX0NvdW50X2RpZmY7DQogICAgICAgICAgICAgICAgYXV0byBfVU1pZCAgICAgICAgICAg
ICAgICAgICA9IF9VRmlyc3Q7DQoNCiAgICAgICAgICAgICAgICB3aGlsZSAoX1VPbGRfZmlyc3Qg
IT0gX1VGaXJzdCAmJiBfUHJlZCgqX1ByZXZfaXRlcihfVUZpcnN0KSwgX1ZhbCkpIHsgDQogICAg
ICAgICAgICAgICAgICAgIC0tX0NvdW50MTsNCiAgICAgICAgICAgICAgICAgICAgLS1fVUZpcnN0
Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChfQ291bnQxIDw9IF9V
TGFzdCAtIF9VTWlkKSB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsgDQogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoLS1fQ291bnQxID09IDApIHsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfU2Vla193cmFwcGVkKF9MYXN0LCBfVUZpcnN0KTsgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIF9MYXN0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghX1ByZWQoKisrX1VNaWQsIF9WYWwpKSB7IA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF9VT2xkX2ZpcnN0ID0g
KytfVU1pZDsgDQogICAgICAgICAgICAgICAgX0luYyAgICAgICAgPSAwOw0KICAgICAgICAgICAg
fSBlbHNlIHsgDQogICAgICAgICAgICAgICAgX1VPbGRfZmlyc3QgPSBfTmV4dF9pdGVyKF9VRmly
c3QpOw0KICAgICAgICAgICAgICAgIF9JbmMgICAgICAgID0gX0NvdW50X2RpZmYgLSAxOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgICAgZm9yICg7IF9VRmly
c3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgICAgIGlmIChfUHJlZCgqX1VGaXJz
dCwgX1ZhbCkpIHsgDQogICAgICAgICAgICAgICAgYXV0byBfVU1pZCA9IF9VRmlyc3Q7DQoNCiAg
ICAgICAgICAgICAgICBmb3IgKF9BbGdvcml0aG1faW50X3Q8X0RpZmY+IF9Db3VudDEgPSBfQ291
bnQ7Oykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoLS1fQ291bnQxID09IDApIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9TZWVrX3dyYXBwZWQoX0xhc3QsIF9VRmlyc3QpOyANCiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBfTGFzdDsNCiAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICgrK19VTWlkID09IF9VTGFzdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIF9MYXN0OyANCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghX1ByZWQoKl9VTWlk
LCBfVmFsKSkgeyANCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgX1VGaXJzdCA9
IF9VTWlkOyANCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiBf
TGFzdDsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDI1OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0
LCBjbGFzcyBfRGlmZiwgY2xhc3MgX1R5LCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhlY3V0aW9u
X3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIF9Gd2RJdCBzZWFyY2hfbihfRXhQ
byYmIF9FeGVjLCBjb25zdCBfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QsIGNvbnN0IF9EaWZm
IF9Db3VudF9yYXcsIGNvbnN0IF9UeSYgX1ZhbCwNCiAgICBfUHIgX1ByZWQpIG5vZXhjZXB0OyAN
CiNsaW5lIDI1OTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcYWxnb3JpdGhtIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0LCBjbGFzcyBfRGlmZiwg
Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0Z3ZEl0IHNlYXJjaF9uKGNvbnN0IF9G
d2RJdCBfRmlyc3QsIGNvbnN0IF9Gd2RJdCBfTGFzdCwgY29uc3QgX0RpZmYgX0NvdW50LCBjb25z
dCBfVHkmIF9WYWwpIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBzZWFyY2hfbihfRmlyc3Qs
IF9MYXN0LCBfQ291bnQsIF9WYWwsIGVxdWFsX3RvPD57fSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNsYXNzIF9EaWZmLCBjbGFzcyBfVHksIF9FbmFibGVf
aWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIF9Gd2RJdCBz
ZWFyY2hfbihfRXhQbyYmIF9FeGVjLCBjb25zdCBfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndkSXQg
X0xhc3QsIGNvbnN0IF9EaWZmIF9Db3VudCwNCiAgICBjb25zdCBfVHkmIF9WYWwpIG5vZXhjZXB0
ICB7IA0KICAgIHJldHVybiA6OnN0ZDo6IHNlYXJjaF9uKDo6c3RkOjogZm9yd2FyZDxfRXhQbz4o
X0V4ZWMpLCBfRmlyc3QsIF9MYXN0LCBfQ291bnQsIF9WYWwsIGVxdWFsX3Rve30pOw0KfQ0KI2xp
bmUgMjYxMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxhbGdvcml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9Qcj4N
Cltbbm9kaXNjYXJkXV0gaW5saW5lIF9Gd2RJdDEgZmluZF9lbmQoDQogICAgX0Z3ZEl0MSBfRmly
c3QxLCBjb25zdCBfRndkSXQxIF9MYXN0MSwgY29uc3QgX0Z3ZEl0MiBfRmlyc3QyLCBjb25zdCBf
RndkSXQyIF9MYXN0MiwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2Uo
X0ZpcnN0MSwgX0xhc3QxKTsNCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QyLCBfTGFzdDIp
Ow0KICAgIGF1dG8gX1VGaXJzdDEgICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QxKTsNCiAg
ICBjb25zdCBhdXRvIF9VTGFzdDEgID0gX0dldF91bndyYXBwZWQoX0xhc3QxKTsNCiAgICBjb25z
dCBhdXRvIF9VRmlyc3QyID0gX0dldF91bndyYXBwZWQoX0ZpcnN0Mik7DQogICAgY29uc3QgYXV0
byBfVUxhc3QyICA9IF9HZXRfdW53cmFwcGVkKF9MYXN0Mik7DQogICAgaWYgY29uc3RleHByIChf
SXNfcmFuZG9tX2l0ZXJfdjxfRndkSXQxPiAmJiBfSXNfcmFuZG9tX2l0ZXJfdjxfRndkSXQyPikg
ew0KICAgICAgICBjb25zdCBfSXRlcl9kaWZmX3Q8X0Z3ZEl0Mj4gX0NvdW50MiA9IF9VTGFzdDIg
LSBfVUZpcnN0MjsNCiAgICAgICAgaWYgKF9Db3VudDIgPiAwICYmIF9Db3VudDIgPD0gX1VMYXN0
MSAtIF9VRmlyc3QxKSB7DQogICAgICAgICAgICBmb3IgKGF1dG8gX1VDYW5kaWRhdGUgPSBfVUxh
c3QxIC0gc3RhdGljX2Nhc3Q8X0l0ZXJfZGlmZl90PF9Gd2RJdDE+PihfQ291bnQyKTs7IC0tX1VD
YW5kaWRhdGUpIHsNCiAgICAgICAgICAgICAgICBpZiAoX0VxdWFsX3Jldl9wcmVkX3VuY2hlY2tl
ZChfVUNhbmRpZGF0ZSwgX1VGaXJzdDIsIF9VTGFzdDIsIF9QYXNzX2ZuKF9QcmVkKSkpIHsNCiAg
ICAgICAgICAgICAgICAgICAgX1NlZWtfd3JhcHBlZChfRmlyc3QxLCBfVUNhbmRpZGF0ZSk7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBfRmlyc3QxOw0KICAgICAgICAgICAgICAgIH0NCg0K
ICAgICAgICAgICAgICAgIGlmIChfVUNhbmRpZGF0ZSA9PSBfVUZpcnN0MSkgew0KICAgICAgICAg
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCg0KICAgICAgICByZXR1cm4gX0xhc3QxOw0KICAgIH0gZWxzZSBpZiBjb25zdGV4cHIg
KF9Jc19iaWRpX2l0ZXJfdjxfRndkSXQxPiAmJiBfSXNfYmlkaV9pdGVyX3Y8X0Z3ZEl0Mj4pIHsN
CiAgICAgICAgZm9yIChhdXRvIF9VQ2FuZGlkYXRlID0gX1VMYXN0MTs7IC0tX1VDYW5kaWRhdGUp
IHsgDQogICAgICAgICAgICBhdXRvIF9VTmV4dDEgPSBfVUNhbmRpZGF0ZTsNCiAgICAgICAgICAg
IGF1dG8gX1VOZXh0MiA9IF9VTGFzdDI7DQogICAgICAgICAgICBmb3IgKDs7KSB7IA0KICAgICAg
ICAgICAgICAgIGlmIChfVUZpcnN0MiA9PSBfVU5leHQyKSB7IA0KICAgICAgICAgICAgICAgICAg
ICBfU2Vla193cmFwcGVkKF9GaXJzdDEsIF9VTmV4dDEpOw0KICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gX0ZpcnN0MTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAo
X1VGaXJzdDEgPT0gX1VOZXh0MSkgew0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIF9MYXN0MTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
ICAgICAtLV9VTmV4dDE7DQogICAgICAgICAgICAgICAgLS1fVU5leHQyOw0KICAgICAgICAgICAg
ICAgIGlmICghX1ByZWQoKl9VTmV4dDEsICpfVU5leHQyKSkgeyANCiAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQog
ICAgfSBlbHNlIHsNCiAgICAgICAgYXV0byBfVVJlc3VsdCA9IF9VTGFzdDE7DQogICAgICAgIGZv
ciAoOzspIHsgDQogICAgICAgICAgICBhdXRvIF9VTmV4dDEgPSBfVUZpcnN0MTsNCiAgICAgICAg
ICAgIGF1dG8gX1VOZXh0MiA9IF9VRmlyc3QyOw0KICAgICAgICAgICAgZm9yICg7OykgeyANCiAg
ICAgICAgICAgICAgICBjb25zdCBib29sIF9FbmRfb2ZfbmVlZGxlID0gc3RhdGljX2Nhc3Q8Ym9v
bD4oX1VOZXh0MiA9PSBfVUxhc3QyKTsNCiAgICAgICAgICAgICAgICBpZiAoX0VuZF9vZl9uZWVk
bGUpIHsgDQogICAgICAgICAgICAgICAgICAgIF9VUmVzdWx0ID0gX1VGaXJzdDE7DQogICAgICAg
ICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKF9VTmV4dDEgPT0gX1VMYXN0MSkgew0K
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgX1NlZWtfd3JhcHBlZChf
Rmlyc3QxLCBfVVJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBfRmlyc3QxOw0K
ICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChfRW5kX29mX25lZWRsZSB8
fCAhX1ByZWQoKl9VTmV4dDEsICpfVU5leHQyKSkgew0KICAgICAgICAgICAgICAgICAgICBicmVh
azsgDQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgKytfVU5leHQxOw0KICAg
ICAgICAgICAgICAgICsrX1VOZXh0MjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgKytf
VUZpcnN0MTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0MSwgX1VS
ZXN1bHQpOw0KICAgICAgICByZXR1cm4gX0ZpcnN0MTsNCiAgICB9DQp9DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
Mjk0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxh
bGdvcml0aG0iDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyPg0KW1tu
b2Rpc2NhcmRdXSBpbmxpbmUgX0Z3ZEl0MSBmaW5kX2VuZCgNCiAgICBfRndkSXQxIGNvbnN0IF9G
aXJzdDEsIGNvbnN0IF9Gd2RJdDEgX0xhc3QxLCBjb25zdCBfRndkSXQyIF9GaXJzdDIsIGNvbnN0
IF9Gd2RJdDIgX0xhc3QyKSB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogZmluZF9lbmQoX0Zp
cnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIGVxdWFsX3RvPD57fSk7DQp9DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFzcyBf
UHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2Fy
ZF1dIF9Gd2RJdDEgZmluZF9lbmQoDQogICAgX0V4UG8mJiBfRXhlYywgX0Z3ZEl0MSBfRmlyc3Qx
LCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfRndkSXQyIF9MYXN0MiwgX1ByIF9Q
cmVkKSBub2V4Y2VwdDsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0MSwg
Y2xhc3MgX0Z3ZEl0MiwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4N
Cltbbm9kaXNjYXJkXV0gX0Z3ZEl0MSBmaW5kX2VuZChfRXhQbyYmIF9FeGVjLCBfRndkSXQxIF9G
aXJzdDEsIF9Gd2RJdDEgX0xhc3QxLCBfRndkSXQyIF9GaXJzdDIsIF9Gd2RJdDIgX0xhc3QyKSBu
b2V4Y2VwdA0KIHsgDQogICAgcmV0dXJuIDo6c3RkOjogZmluZF9lbmQoOjpzdGQ6OiBmb3J3YXJk
PF9FeFBvPihfRXhlYyksIF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBlcXVhbF90
b3t9KTsNCn0NCiNsaW5lIDI5NjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJ
dDIsIGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0gaW5saW5lIF9Gd2RJdDEgZmluZF9maXJzdF9v
ZigNCiAgICBfRndkSXQxIF9GaXJzdDEsIGNvbnN0IF9Gd2RJdDEgX0xhc3QxLCBjb25zdCBfRndk
SXQyIF9GaXJzdDIsIGNvbnN0IF9Gd2RJdDIgX0xhc3QyLCBfUHIgX1ByZWQpIHsNCiAgICANCiAg
ICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QxLCBfTGFzdDEpOw0KICAgIF9BZGxfdmVyaWZ5X3Jh
bmdlKF9GaXJzdDIsIF9MYXN0Mik7DQogICAgYXV0byBfVUZpcnN0MSAgICAgICA9IF9HZXRfdW53
cmFwcGVkKF9GaXJzdDEpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MSAgPSBfR2V0X3Vud3JhcHBl
ZChfTGFzdDEpOw0KICAgIGNvbnN0IGF1dG8gX1VGaXJzdDIgPSBfR2V0X3Vud3JhcHBlZChfRmly
c3QyKTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdDIgID0gX0dldF91bndyYXBwZWQoX0xhc3QyKTsN
CiAgICBmb3IgKDsgX1VGaXJzdDEgIT0gX1VMYXN0MTsgKytfVUZpcnN0MSkgew0KICAgICAgICBm
b3IgKGF1dG8gX1VNaWQyID0gX1VGaXJzdDI7IF9VTWlkMiAhPSBfVUxhc3QyOyArK19VTWlkMikg
ew0KICAgICAgICAgICAgaWYgKF9QcmVkKCpfVUZpcnN0MSwgKl9VTWlkMikpIHsNCiAgICAgICAg
ICAgICAgICBfU2Vla193cmFwcGVkKF9GaXJzdDEsIF9VRmlyc3QxKTsNCiAgICAgICAgICAgICAg
ICByZXR1cm4gX0ZpcnN0MTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IF9TZWVrX3dyYXBwZWQoX0ZpcnN0MSwgX1VGaXJzdDEpOw0KICAgIHJldHVybiBfRmlyc3QxOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0Mj4NCltbbm9kaXNjYXJk
XV0gaW5saW5lIF9Gd2RJdDEgZmluZF9maXJzdF9vZihjb25zdCBfRndkSXQxIF9GaXJzdDEsIGNv
bnN0IF9Gd2RJdDEgX0xhc3QxLCBjb25zdCBfRndkSXQyIF9GaXJzdDIsDQogICAgY29uc3QgX0Z3
ZEl0MiBfTGFzdDIpIHsgDQogICAgcmV0dXJuIDo6c3RkOjogZmluZF9maXJzdF9vZihfRmlyc3Qx
LCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0MiwgZXF1YWxfdG88Pnt9KTsNCn0NCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9Qciwg
X0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0g
X0Z3ZEl0MSBmaW5kX2ZpcnN0X29mKF9FeFBvJiYgX0V4ZWMsIGNvbnN0IF9Gd2RJdDEgX0ZpcnN0
MSwgX0Z3ZEl0MSBfTGFzdDEsIGNvbnN0IF9Gd2RJdDIgX0ZpcnN0MiwNCiAgICBjb25zdCBfRndk
SXQyIF9MYXN0MiwgX1ByIF9QcmVkKSBub2V4Y2VwdDsgDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQ
bywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0MiwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9s
aWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0MSBmaW5kX2ZpcnN0X29mKF9F
eFBvJiYgX0V4ZWMsIGNvbnN0IF9Gd2RJdDEgX0ZpcnN0MSwgY29uc3QgX0Z3ZEl0MSBfTGFzdDEs
IGNvbnN0IF9Gd2RJdDIgX0ZpcnN0MiwNCiAgICBjb25zdCBfRndkSXQyIF9MYXN0Mikgbm9leGNl
cHQgIHsgDQogICAgcmV0dXJuIDo6c3RkOjogZmluZF9maXJzdF9vZig6OnN0ZDo6IGZvcndhcmQ8
X0V4UG8+KF9FeGVjKSwgX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIGVxdWFsX3Rv
e30pOw0KfQ0KI2xpbmUgMzE3NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdDEs
IGNsYXNzIF9Gd2RJdDI+DQppbmxpbmUgX0Z3ZEl0MiBzd2FwX3Jhbmdlcyhjb25zdCBfRndkSXQx
IF9GaXJzdDEsIGNvbnN0IF9Gd2RJdDEgX0xhc3QxLCBfRndkSXQyIF9GaXJzdDIpIHsNCiAgICAN
CiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QxLCBfTGFzdDEpOw0KICAgIGNvbnN0IGF1dG8g
X1VGaXJzdDEgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QxKTsNCiAgICBjb25zdCBhdXRvIF9VTGFz
dDEgID0gX0dldF91bndyYXBwZWQoX0xhc3QxKTsNCiAgICBjb25zdCBhdXRvIF9VRmlyc3QyID0g
X0dldF91bndyYXBwZWRfbihfRmlyc3QyLCBfSWRsX2Rpc3RhbmNlPF9Gd2RJdDE+KF9VRmlyc3Qx
LCBfVUxhc3QxKSk7DQogICAgX1NlZWtfd3JhcHBlZChfRmlyc3QyLCBfU3dhcF9yYW5nZXNfdW5j
aGVja2VkKF9VRmlyc3QxLCBfVUxhc3QxLCBfVUZpcnN0MikpOw0KICAgIHJldHVybiBfRmlyc3Qy
Ow0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3
ZEl0MiwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCl9Gd2RJdDIg
c3dhcF9yYW5nZXMoX0V4UG8mJiwgX0Z3ZEl0MSBfRmlyc3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3
ZEl0MiBfRGVzdCkgbm9leGNlcHQgIHsNCiAgICANCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBz
d2FwX3JhbmdlcyhfRmlyc3QxLCBfTGFzdDEsIF9EZXN0KTsNCn0NCiNsaW5lIDMyODMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX091dEl0LCBjbGFzcyBfRm4+DQppbmxp
bmUgX091dEl0IHRyYW5zZm9ybShjb25zdCBfSW5JdCBfRmlyc3QsIGNvbnN0IF9Jbkl0IF9MYXN0
LCBfT3V0SXQgX0Rlc3QsIF9GbiBfRnVuYykgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3Jhbmdl
KF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgID0gX0dldF91bndyYXBwZWQo
X0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsN
CiAgICBhdXRvIF9VRGVzdCAgICAgICA9IF9HZXRfdW53cmFwcGVkX24oX0Rlc3QsIF9JZGxfZGlz
dGFuY2U8X0luSXQ+KF9VRmlyc3QsIF9VTGFzdCkpOw0KICAgIGZvciAoOyBfVUZpcnN0ICE9IF9V
TGFzdDsgKytfVUZpcnN0LCAodm9pZCkgKytfVURlc3QpIHsNCiAgICAgICAgKl9VRGVzdCA9IF9G
dW5jKCpfVUZpcnN0KTsNCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfVURlc3Qp
Ow0KICAgIHJldHVybiBfRGVzdDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNz
IF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9GbiwgX0VuYWJsZV9pZl9leGVjdXRpb25f
cG9saWN5X3Q8X0V4UG8+ID0gMD4NCl9Gd2RJdDIgdHJhbnNmb3JtKA0KICAgIF9FeFBvJiYgX0V4
ZWMsIGNvbnN0IF9Gd2RJdDEgX0ZpcnN0LCBjb25zdCBfRndkSXQxIF9MYXN0LCBfRndkSXQyIF9E
ZXN0LCBfRm4gX0Z1bmMpIG5vZXhjZXB0OyANCiNsaW5lIDMzMDUgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0luSXQxLCBjbGFzcyBfSW5JdDIsIGNsYXNzIF9PdXRJdCwgY2xhc3MgX0ZuPg0KaW5s
aW5lIF9PdXRJdCB0cmFuc2Zvcm0oDQogICAgY29uc3QgX0luSXQxIF9GaXJzdDEsIGNvbnN0IF9J
bkl0MSBfTGFzdDEsIGNvbnN0IF9Jbkl0MiBfRmlyc3QyLCBfT3V0SXQgX0Rlc3QsIF9GbiBfRnVu
Yykgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdDEsIF9MYXN0MSk7DQogICAg
YXV0byBfVUZpcnN0MSAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0MSk7DQogICAgY29uc3Qg
YXV0byBfVUxhc3QxID0gX0dldF91bndyYXBwZWQoX0xhc3QxKTsNCiAgICBjb25zdCBhdXRvIF9D
b3VudCAgPSBfSWRsX2Rpc3RhbmNlPF9Jbkl0MT4oX1VGaXJzdDEsIF9VTGFzdDEpOw0KICAgIGF1
dG8gX1VGaXJzdDIgICAgICA9IF9HZXRfdW53cmFwcGVkX24oX0ZpcnN0MiwgX0NvdW50KTsNCiAg
ICBhdXRvIF9VRGVzdCAgICAgICAgPSBfR2V0X3Vud3JhcHBlZF9uKF9EZXN0LCBfQ291bnQpOw0K
ICAgIGZvciAoOyBfVUZpcnN0MSAhPSBfVUxhc3QxOyArK19VRmlyc3QxLCAodm9pZCkgKytfVUZp
cnN0MiwgKytfVURlc3QpIHsNCiAgICAgICAgKl9VRGVzdCA9IF9GdW5jKCpfVUZpcnN0MSwgKl9V
Rmlyc3QyKTsNCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfVURlc3QpOw0KICAg
IHJldHVybiBfRGVzdDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJ
dDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9Gd2RJdDMsIGNsYXNzIF9GbiwgX0VuYWJsZV9pZl9l
eGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCl9Gd2RJdDMgdHJhbnNmb3JtKF9FeFBvJiYg
X0V4ZWMsIGNvbnN0IF9Gd2RJdDEgX0ZpcnN0MSwgY29uc3QgX0Z3ZEl0MSBfTGFzdDEsIGNvbnN0
IF9Gd2RJdDIgX0ZpcnN0MiwgX0Z3ZEl0MyBfRGVzdCwNCiAgICBfRm4gX0Z1bmMpIG5vZXhjZXB0
OyANCiNsaW5lIDMzMjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNzIF9U
eT4NCmlubGluZSB2b2lkIHJlcGxhY2UoY29uc3QgX0Z3ZEl0IF9GaXJzdCwgY29uc3QgX0Z3ZEl0
IF9MYXN0LCBjb25zdCBfVHkmIF9PbGR2YWwsIGNvbnN0IF9UeSYgX05ld3ZhbCkgew0KICAgIA0K
ICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAg
ICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9H
ZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBmb3IgKDsgX1VGaXJzdCAhPSBfVUxhc3Q7ICsrX1VG
aXJzdCkgew0KICAgICAgICBpZiAoKl9VRmlyc3QgPT0gX09sZHZhbCkgew0KICAgICAgICAgICAg
Kl9VRmlyc3QgPSBfTmV3dmFsOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQoNCnRlbXBsYXRlIDxj
bGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0LCBjbGFzcyBfVHksIF9FbmFibGVfaWZfZXhlY3V0aW9u
X3BvbGljeV90PF9FeFBvPiA9IDA+DQp2b2lkIHJlcGxhY2UoX0V4UG8mJiBfRXhlYywgY29uc3Qg
X0Z3ZEl0IF9GaXJzdCwgY29uc3QgX0Z3ZEl0IF9MYXN0LCBjb25zdCBfVHkmIF9PbGR2YWwsDQog
ICAgY29uc3QgX1R5JiBfTmV3dmFsKSBub2V4Y2VwdDsgDQojbGluZSAzNDYzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNzIF9QciwgY2xhc3MgX1R5Pg0KaW5saW5lIHZv
aWQgcmVwbGFjZV9pZihjb25zdCBfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndkSXQgX0xhc3QsIF9Q
ciBfUHJlZCwgY29uc3QgX1R5JiBfVmFsKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2Uo
X0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChf
Rmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0K
ICAgIGZvciAoOyBfVUZpcnN0ICE9IF9VTGFzdDsgKytfVUZpcnN0KSB7DQogICAgICAgIGlmIChf
UHJlZCgqX1VGaXJzdCkpIHsNCiAgICAgICAgICAgICpfVUZpcnN0ID0gX1ZhbDsNCiAgICAgICAg
fQ0KICAgIH0NCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdCwgY2xh
c3MgX1ByLCBjbGFzcyBfVHksIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9
IDA+DQp2b2lkIHJlcGxhY2VfaWYoX0V4UG8mJiBfRXhlYywgX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0
IF9MYXN0LCBfUHIgX1ByZWQsIGNvbnN0IF9UeSYgX1ZhbCkgbm9leGNlcHQ7IA0KI2xpbmUgMzU0
MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdv
cml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFzcyBfT3V0SXQsIGNsYXNzIF9U
eT4NCmlubGluZSBfT3V0SXQgcmVwbGFjZV9jb3B5KF9Jbkl0IF9GaXJzdCwgX0luSXQgX0xhc3Qs
IF9PdXRJdCBfRGVzdCwgY29uc3QgX1R5JiBfT2xkdmFsLCBjb25zdCBfVHkmIF9OZXd2YWwpIHsN
CiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9V
Rmlyc3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxh
c3QgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgYXV0byBfVURlc3QgICAgICAgPSBfR2V0
X3Vud3JhcHBlZF9uKF9EZXN0LCBfSWRsX2Rpc3RhbmNlPF9Jbkl0PihfVUZpcnN0LCBfVUxhc3Qp
KTsNCiAgICBmb3IgKDsgX1VGaXJzdCAhPSBfVUxhc3Q7ICsrX1VGaXJzdCwgKHZvaWQpICsrX1VE
ZXN0KSB7DQogICAgICAgIGlmICgqX1VGaXJzdCA9PSBfT2xkdmFsKSB7DQogICAgICAgICAgICAq
X1VEZXN0ID0gX05ld3ZhbDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICpfVURlc3Qg
PSAqX1VGaXJzdDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIF9TZWVrX3dyYXBwZWQoX0Rlc3Qs
IF9VRGVzdCk7DQogICAgcmV0dXJuIF9EZXN0Ow0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQ
bywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX1R5LCBfRW5hYmxlX2lmX2V4
ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KX0Z3ZEl0MiByZXBsYWNlX2NvcHkoX0V4UG8m
JiwgX0Z3ZEl0MSBfRmlyc3QsIF9Gd2RJdDEgX0xhc3QsIF9Gd2RJdDIgX0Rlc3QsIGNvbnN0IF9U
eSYgX09sZHZhbCwNCiAgICBjb25zdCBfVHkmIF9OZXd2YWwpIG5vZXhjZXB0ICB7DQogICAgDQog
ICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQxPiwgIlBhcmFsbGVs
IGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAg
ICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdDI+LCAiUGFyYWxsZWwgYWxnb3Jp
dGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHJldHVy
biA6OnN0ZDo6IHJlcGxhY2VfY29weShfRmlyc3QsIF9MYXN0LCBfRGVzdCwgX09sZHZhbCwgX05l
d3ZhbCk7DQp9DQojbGluZSAzNjI5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0luSXQsIGNsYXNzIF9PdXRJdCwgY2xhc3MgX1ByLCBjbGFzcyBfVHk+DQppbmxp
bmUgX091dEl0IHJlcGxhY2VfY29weV9pZihfSW5JdCBfRmlyc3QsIF9Jbkl0IF9MYXN0LCBfT3V0
SXQgX0Rlc3QsIF9QciBfUHJlZCwgY29uc3QgX1R5JiBfVmFsKSB7DQogICAgDQogICAgX0FkbF92
ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0byBfVUZpcnN0ICAgICAgPSBfR2V0
X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX0dldF91bndyYXBw
ZWQoX0xhc3QpOw0KICAgIGF1dG8gX1VEZXN0ICAgICAgID0gX0dldF91bndyYXBwZWRfbihfRGVz
dCwgX0lkbF9kaXN0YW5jZTxfSW5JdD4oX1VGaXJzdCwgX1VMYXN0KSk7DQogICAgZm9yICg7IF9V
Rmlyc3QgIT0gX1VMYXN0OyArK19VRmlyc3QsICh2b2lkKSArK19VRGVzdCkgew0KICAgICAgICBp
ZiAoX1ByZWQoKl9VRmlyc3QpKSB7DQogICAgICAgICAgICAqX1VEZXN0ID0gX1ZhbDsNCiAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgICpfVURlc3QgPSAqX1VGaXJzdDsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIF9TZWVrX3dyYXBwZWQoX0Rlc3QsIF9VRGVzdCk7DQogICAgcmV0dXJuIF9E
ZXN0Ow0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3Mg
X0Z3ZEl0MiwgY2xhc3MgX1ByLCBjbGFzcyBfVHksIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGlj
eV90PF9FeFBvPiA9IDA+DQpfRndkSXQyIHJlcGxhY2VfY29weV9pZihfRXhQbyYmLCBfRndkSXQx
IF9GaXJzdCwgX0Z3ZEl0MSBfTGFzdCwgX0Z3ZEl0MiBfRGVzdCwgX1ByIF9QcmVkLCBjb25zdCBf
VHkmIF9WYWwpIG5vZXhjZXB0DQogew0KICAgIA0KICAgIA0KICAgIHN0YXRpY19hc3NlcnQoX0lz
X2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2Fy
ZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0
ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJh
dG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICByZXR1cm4gOjpzdGQ6OiByZXBsYWNlX2NvcHlfaWYo
X0ZpcnN0LCBfTGFzdCwgX0Rlc3QsIF9QYXNzX2ZuKF9QcmVkKSwgX1ZhbCk7DQp9DQojbGluZSAz
NzI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFs
Z29yaXRobSINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNs
YXNzIF9Gbj4NCmlubGluZSB2b2lkIGdlbmVyYXRlKF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFz
dCwgX0ZuIF9GdW5jKSB7IA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0K
ICAgIGF1dG8gX1VGaXJzdCAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25z
dCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBmb3IgKDsgX1VGaXJz
dCAhPSBfVUxhc3Q7ICsrX1VGaXJzdCkgew0KICAgICAgICAqX1VGaXJzdCA9IF9GdW5jKCk7DQog
ICAgfQ0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0LCBjbGFzcyBf
Rm4sIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQp2b2lkIGdlbmVy
YXRlKF9FeFBvJiYsIF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCwgX0ZuIF9GdW5jKSBub2V4
Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IGdlbmVyYXRlKF9GaXJzdCwg
X0xhc3QsIF9QYXNzX2ZuKF9GdW5jKSk7DQp9DQojbGluZSAzOTU1ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX091dEl0LCBjbGFzcyBfRGlmZiwgY2xhc3MgX0ZuPg0KaW5saW5lIF9PdXRJdCBn
ZW5lcmF0ZV9uKF9PdXRJdCBfRGVzdCwgY29uc3QgX0RpZmYgX0NvdW50X3JhdywgX0ZuIF9GdW5j
KSB7DQogICAgDQogICAgX0FsZ29yaXRobV9pbnRfdDxfRGlmZj4gX0NvdW50ID0gX0NvdW50X3Jh
dzsNCiAgICBpZiAoMCA8IF9Db3VudCkgew0KICAgICAgICBhdXRvIF9VRGVzdCA9IF9HZXRfdW53
cmFwcGVkX24oX0Rlc3QsIF9Db3VudCk7DQogICAgICAgIGRvIHsNCiAgICAgICAgICAgICpfVURl
c3QgPSBfRnVuYygpOw0KICAgICAgICAgICAgLS1fQ291bnQ7DQogICAgICAgICAgICArK19VRGVz
dDsNCiAgICAgICAgfSB3aGlsZSAoMCA8IF9Db3VudCk7DQoNCiAgICAgICAgX1NlZWtfd3JhcHBl
ZChfRGVzdCwgX1VEZXN0KTsNCiAgICB9DQoNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNsYXNzIF9EaWZmLCBjbGFzcyBfRm4s
IF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQgZ2VuZXJh
dGVfbihfRXhQbyYmLCBjb25zdCBfRndkSXQgX0Rlc3QsIGNvbnN0IF9EaWZmIF9Db3VudF9yYXcs
IF9GbiBfRnVuYykgbm9leGNlcHQgIHsNCiAgICANCiAgICANCiAgICBzdGF0aWNfYXNzZXJ0KF9J
c19md2RfaXRlcl92PF9Gd2RJdD4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2Fy
ZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgcmV0dXJuIDo6c3RkOjogZ2VuZXJhdGVf
bihfRGVzdCwgX0NvdW50X3JhdywgX1Bhc3NfZm4oX0Z1bmMpKTsNCn0NCiNsaW5lIDM5ODQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGht
Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX091dEl0LCBjbGFzcyBfVHk+DQpp
bmxpbmUgX091dEl0IHJlbW92ZV9jb3B5KF9Jbkl0IF9GaXJzdCwgX0luSXQgX0xhc3QsIF9PdXRJ
dCBfRGVzdCwgY29uc3QgX1R5JiBfVmFsKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2Uo
X0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChf
Rmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0K
ICAgIGF1dG8gX1VEZXN0ICAgICAgID0gX0dldF91bndyYXBwZWRfdW52ZXJpZmllZChfRGVzdCk7
DQogICAgZm9yICg7IF9VRmlyc3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgaWYg
KCEoKl9VRmlyc3QgPT0gX1ZhbCkpIHsNCiAgICAgICAgICAgICpfVURlc3QgPSAqX1VGaXJzdDsN
CiAgICAgICAgICAgICsrX1VEZXN0Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1NlZWtfd3Jh
cHBlZChfRGVzdCwgX1VEZXN0KTsNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KdGVtcGxhdGUg
PGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFzcyBfVHksIF9F
bmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQyIHJlbW92ZV9j
b3B5KF9FeFBvJiYsIF9Gd2RJdDEgX0ZpcnN0LCBfRndkSXQxIF9MYXN0LCBfRndkSXQyIF9EZXN0
LCBjb25zdCBfVHkmIF9WYWwpIG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fz
c2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWly
ZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9J
c19md2RfaXRlcl92PF9Gd2RJdDI+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndh
cmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IHJlbW92ZV9j
b3B5KF9GaXJzdCwgX0xhc3QsIF9EZXN0LCBfVmFsKTsNCn0NCiNsaW5lIDQwMTQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX091dEl0LCBjbGFzcyBfUHI+DQppbmxpbmUg
X091dEl0IHJlbW92ZV9jb3B5X2lmKF9Jbkl0IF9GaXJzdCwgX0luSXQgX0xhc3QsIF9PdXRJdCBf
RGVzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBf
TGFzdCk7DQogICAgYXV0byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0K
ICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KICAgIGF1dG8g
X1VEZXN0ICAgICAgID0gX0dldF91bndyYXBwZWRfdW52ZXJpZmllZChfRGVzdCk7DQogICAgZm9y
ICg7IF9VRmlyc3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgaWYgKCFfUHJlZCgq
X1VGaXJzdCkpIHsNCiAgICAgICAgICAgICpfVURlc3QgPSAqX1VGaXJzdDsNCiAgICAgICAgICAg
ICsrX1VEZXN0Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1NlZWtfd3JhcHBlZChfRGVzdCwg
X1VEZXN0KTsNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBv
LCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhl
Y3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQyIHJlbW92ZV9jb3B5X2lmKF9FeFBv
JiYsIF9Gd2RJdDEgX0ZpcnN0LCBfRndkSXQxIF9MYXN0LCBfRndkSXQyIF9EZXN0LCBfUHIgX1By
ZWQpIG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0
ZXJfdjxfRndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJh
dG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9G
d2RJdDI+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9y
IHN0cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IHJlbW92ZV9jb3B5X2lmKF9GaXJzdCwg
X0xhc3QsIF9EZXN0LCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KI2xpbmUgNDA0NCAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0K
dGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNsYXNzIF9UeSwgX0VuYWJsZV9p
Zl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0IHJl
bW92ZSgNCiAgICBfRXhQbyYmIF9FeGVjLCBjb25zdCBfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndk
SXQgX0xhc3QsIGNvbnN0IF9UeSYgX1ZhbCkgbm9leGNlcHQ7IA0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0V4UG8sIGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xp
Y3lfdDxfRXhQbz4gPSAwPg0KW1tub2Rpc2NhcmRdXSBfRndkSXQgcmVtb3ZlX2lmKF9FeFBvJiYg
X0V4ZWMsIF9Gd2RJdCBfRmlyc3QsIGNvbnN0IF9Gd2RJdCBfTGFzdCwgX1ByIF9QcmVkKSBub2V4
Y2VwdDsgDQojbGluZSA0MDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9Gd2RJdCwgY2xhc3MgX1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0Z3ZEl0IHVuaXF1
ZShfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9B
ZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgID0g
X0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53
cmFwcGVkKF9MYXN0KTsNCiAgICBpZiAoX1VGaXJzdCAhPSBfVUxhc3QpIHsNCiAgICAgICAgZm9y
IChhdXRvIF9VRmlyc3RiID0gX1VGaXJzdDsgKytfVUZpcnN0ICE9IF9VTGFzdDsgX1VGaXJzdGIg
PSBfVUZpcnN0KSB7DQogICAgICAgICAgICBpZiAoX1ByZWQoKl9VRmlyc3RiLCAqX1VGaXJzdCkp
IHsgDQogICAgICAgICAgICAgICAgd2hpbGUgKCsrX1VGaXJzdCAhPSBfVUxhc3QpIHsNCiAgICAg
ICAgICAgICAgICAgICAgaWYgKCFfUHJlZCgqX1VGaXJzdGIsICpfVUZpcnN0KSkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgKisrX1VGaXJzdGIgPSA6OnN0ZDo6IG1vdmUoKl9VRmlyc3QpOw0K
ICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAg
ICAgX1NlZWtfd3JhcHBlZChfTGFzdCwgKytfVUZpcnN0Yik7DQogICAgICAgICAgICAgICAgcmV0
dXJuIF9MYXN0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1NlZWtf
d3JhcHBlZChfTGFzdCwgX1VMYXN0KTsNCiAgICByZXR1cm4gX0xhc3Q7DQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfRndkSXQ+DQpbW25vZGlzY2FyZF1dIGlubGluZSBfRndkSXQgdW5pcXVlKF9Gd2RJ
dCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCkgeyANCiAgICByZXR1cm4gOjpzdGQ6OiB1bmlxdWUoX0Zp
cnN0LCBfTGFzdCwgZXF1YWxfdG88Pnt9KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8s
IGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxf
RXhQbz4gPSAwPg0KW1tub2Rpc2NhcmRdXSBfRndkSXQgdW5pcXVlKF9FeFBvJiYsIF9Gd2RJdCBf
Rmlyc3QsIF9Gd2RJdCBfTGFzdCwgX1ByIF9QcmVkKSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0K
ICAgIHJldHVybiA6OnN0ZDo6IHVuaXF1ZShfRmlyc3QsIF9MYXN0LCBfUGFzc19mbihfUHJlZCkp
Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdCwgX0VuYWJsZV9pZl9l
eGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0IHVuaXF1
ZShfRXhQbyYmLCBfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QpIG5vZXhjZXB0ICB7DQogICAg
DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogdW5pcXVlKF9GaXJzdCwgX0xhc3QpOw0KfQ0KI2xp
bmUgNDMzNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxhbGdvcml0aG0iDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0LCBjbGFz
cyBfT3V0SXQ+DQppbmxpbmUgY29uc3RleHByIGJvb2wgX0Nhbl9yZXJlYWRfZGVzdCA9DQogICAg
X0lzX2Z3ZF9pdGVyX3Y8X091dEl0PiAmJiBpc19zYW1lX3Y8X0l0ZXJfdmFsdWVfdDxfSW5JdD4s
IF9JdGVyX3ZhbHVlX3Q8X091dEl0Pj47DQojbGluZSA0MzQ4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0luSXQsIGNsYXNzIF9PdXRJdCwgY2xhc3MgX1ByPg0KaW5saW5lIF9PdXRJdCB1bmlx
dWVfY29weShfSW5JdCBfRmlyc3QsIF9Jbkl0IF9MYXN0LCBfT3V0SXQgX0Rlc3QsIF9QciBfUHJl
ZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KDQogICAg
YXV0byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1
dG8gX1VMYXN0ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KDQogICAgaWYgKF9VRmlyc3QgPT0g
X1VMYXN0KSB7DQogICAgICAgIHJldHVybiBfRGVzdDsNCiAgICB9DQoNCiAgICBhdXRvIF9VRGVz
dCA9IF9HZXRfdW53cmFwcGVkX3VudmVyaWZpZWQoX0Rlc3QpOw0KDQogICAgaWYgY29uc3RleHBy
IChfSXNfZndkX2l0ZXJfdjxfSW5JdD4pIHsgDQogICAgICAgIGF1dG8gX0ZpcnN0YiA9IF9VRmly
c3Q7DQoNCiAgICAgICAgKl9VRGVzdCA9ICpfRmlyc3RiOw0KICAgICAgICArK19VRGVzdDsNCg0K
ICAgICAgICB3aGlsZSAoKytfVUZpcnN0ICE9IF9VTGFzdCkgew0KICAgICAgICAgICAgaWYgKCFz
dGF0aWNfY2FzdDxib29sPihfUHJlZCgqX0ZpcnN0YiwgKl9VRmlyc3QpKSkgeyANCiAgICAgICAg
ICAgICAgICBfRmlyc3RiID0gX1VGaXJzdDsNCiAgICAgICAgICAgICAgICAqX1VEZXN0ID0gKl9G
aXJzdGI7DQogICAgICAgICAgICAgICAgKytfVURlc3Q7DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCiAgICB9IGVsc2UgaWYgY29uc3RleHByIChfQ2FuX3JlcmVhZF9kZXN0PF9Jbkl0LCBfT3V0
SXQ+KSB7IA0KICAgICAgICAqX1VEZXN0ID0gKl9VRmlyc3Q7DQoNCiAgICAgICAgd2hpbGUgKCsr
X1VGaXJzdCAhPSBfVUxhc3QpIHsNCiAgICAgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8Ym9vbD4o
X1ByZWQoKl9VRGVzdCwgKl9VRmlyc3QpKSkgew0KICAgICAgICAgICAgICAgICorK19VRGVzdCA9
ICpfVUZpcnN0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgKytfVURlc3Q7
DQogICAgfSBlbHNlIHsgDQogICAgICAgIF9JdGVyX3ZhbHVlX3Q8X0luSXQ+IF9WYWwgPSAqX1VG
aXJzdDsNCg0KICAgICAgICAqX1VEZXN0ID0gX1ZhbDsNCiAgICAgICAgKytfVURlc3Q7DQoNCiAg
ICAgICAgd2hpbGUgKCsrX1VGaXJzdCAhPSBfVUxhc3QpIHsNCiAgICAgICAgICAgIGlmICghc3Rh
dGljX2Nhc3Q8Ym9vbD4oX1ByZWQoX1ZhbCwgKl9VRmlyc3QpKSkgeyANCiAgICAgICAgICAgICAg
ICBfVmFsICAgID0gKl9VRmlyc3Q7DQogICAgICAgICAgICAgICAgKl9VRGVzdCA9IF9WYWw7DQog
ICAgICAgICAgICAgICAgKytfVURlc3Q7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9
DQoNCiAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfVURlc3QpOw0KICAgIHJldHVybiBfRGVzdDsN
Cn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDQ4MiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0i
DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdCwgY2xhc3MgX091dEl0Pg0KaW5saW5lIF9PdXRJdCB1
bmlxdWVfY29weShfSW5JdCBfRmlyc3QsIF9Jbkl0IF9MYXN0LCBfT3V0SXQgX0Rlc3QpIHsgDQog
ICAgcmV0dXJuIDo6c3RkOjogdW5pcXVlX2NvcHkoX0ZpcnN0LCBfTGFzdCwgX0Rlc3QsIGVxdWFs
X3RvPD57fSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBj
bGFzcyBfRndkSXQyLCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9F
eFBvPiA9IDA+DQpfRndkSXQyIHVuaXF1ZV9jb3B5KF9FeFBvJiYsIF9Gd2RJdDEgX0ZpcnN0LCBf
RndkSXQxIF9MYXN0LCBfRndkSXQyIF9EZXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0ICB7DQogICAg
DQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQxPiwgIlBhcmFs
bGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsN
CiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdDI+LCAiUGFyYWxsZWwgYWxn
b3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHJl
dHVybiA6OnN0ZDo6IHVuaXF1ZV9jb3B5KF9GaXJzdCwgX0xhc3QsIF9EZXN0LCBfUGFzc19mbihf
UHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNz
IF9Gd2RJdDIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndk
SXQyIHVuaXF1ZV9jb3B5KF9FeFBvJiYsIF9Gd2RJdDEgX0ZpcnN0LCBfRndkSXQxIF9MYXN0LCBf
RndkSXQyIF9EZXN0KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIHN0YXRpY19hc3NlcnQo
X0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9y
d2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgc3RhdGljX2Fzc2VydChfSXNfZndk
X2l0ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0
ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICByZXR1cm4gOjpzdGQ6OiB1bmlxdWVfY29weShf
Rmlyc3QsIF9MYXN0LCBfRGVzdCk7DQp9DQojbGluZSA0NTA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZEl0LCBjbGFzcyBfT3V0SXQ+DQppbmxpbmUgX091dEl0IHJldmVyc2VfY29weShf
QmlkSXQgX0ZpcnN0LCBfQmlkSXQgX0xhc3QsIF9PdXRJdCBfRGVzdCkgew0KICAgIA0KICAgIF9B
ZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VGaXJzdCA9
IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgYXV0byBfVUxhc3QgICAgICAgID0gX0dldF91
bndyYXBwZWQoX0xhc3QpOw0KICAgIGF1dG8gX1VEZXN0ICAgICAgICA9IF9HZXRfdW53cmFwcGVk
X24oX0Rlc3QsIF9JZGxfZGlzdGFuY2U8X0JpZEl0PihfVUZpcnN0LCBfVUxhc3QpKTsNCiAgICBm
b3IgKDsgX1VGaXJzdCAhPSBfVUxhc3Q7ICsrX1VEZXN0KSB7DQogICAgICAgICpfVURlc3QgPSAq
LS1fVUxhc3Q7DQogICAgfQ0KDQogICAgX1NlZWtfd3JhcHBlZChfRGVzdCwgX1VEZXN0KTsNCiAg
ICByZXR1cm4gX0Rlc3Q7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfQmlk
SXQsIGNsYXNzIF9Gd2RJdCwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0g
MD4NCl9Gd2RJdCByZXZlcnNlX2NvcHkoX0V4UG8mJiwgX0JpZEl0IF9GaXJzdCwgX0JpZEl0IF9M
YXN0LCBfRndkSXQgX0Rlc3QpIG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fz
c2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQ+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJl
IGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IHJl
dmVyc2VfY29weShfRmlyc3QsIF9MYXN0LCBfRGVzdCk7DQp9DQojbGluZSA0NTMzICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0LCBjbGFzcyBfT3V0SXQ+DQppbmxpbmUgX091dEl0IHJv
dGF0ZV9jb3B5KF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTWlkLCBfRndkSXQgX0xhc3QsIF9PdXRJ
dCBfRGVzdCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX01pZCk7DQog
ICAgX0FkbF92ZXJpZnlfcmFuZ2UoX01pZCwgX0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VGaXJz
dCA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVU1pZCAgID0gX0dl
dF91bndyYXBwZWQoX01pZCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgID0gX0dldF91bndyYXBw
ZWQoX0xhc3QpOw0KICAgIGF1dG8gX1VEZXN0ICAgICAgICA9IF9HZXRfdW53cmFwcGVkX24oX0Rl
c3QsIF9JZGxfZGlzdGFuY2U8X0Z3ZEl0PihfVUZpcnN0LCBfVUxhc3QpKTsNCiAgICBfVURlc3Qg
ICAgICAgICAgICAgPSBfQ29weV91bmNoZWNrZWQoX1VNaWQsIF9VTGFzdCwgX1VEZXN0KTsNCiAg
ICBfU2Vla193cmFwcGVkKF9EZXN0LCBfQ29weV91bmNoZWNrZWQoX1VGaXJzdCwgX1VNaWQsIF9V
RGVzdCkpOw0KICAgIHJldHVybiBfRGVzdDsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8s
IGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGlj
eV90PF9FeFBvPiA9IDA+DQpfRndkSXQyIHJvdGF0ZV9jb3B5KF9FeFBvJiYsIF9Gd2RJdDEgX0Zp
cnN0LCBfRndkSXQxIF9NaWQsIF9Gd2RJdDEgX0xhc3QsIF9Gd2RJdDIgX0Rlc3QpIG5vZXhjZXB0
ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQy
PiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJv
bmdlci4iKTsNCiAgICByZXR1cm4gOjpzdGQ6OiByb3RhdGVfY29weShfRmlyc3QsIF9NaWQsIF9M
YXN0LCBfRGVzdCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Qb3BJdCwgY2xhc3MgX1NhbXBs
ZUl0LCBjbGFzcyBfRGlmZiwgY2xhc3MgX1JuZ0ZuPg0KX1NhbXBsZUl0IF9TYW1wbGVfcmVzZXJ2
b2lyX3VuY2hlY2tlZCgNCiAgICBfUG9wSXQgX0ZpcnN0LCBjb25zdCBfUG9wSXQgX0xhc3QsIGNv
bnN0IF9TYW1wbGVJdCBfRGVzdCwgY29uc3QgX0RpZmYgX0NvdW50LCBfUm5nRm4mIF9SbmdGdW5j
KSB7DQogICAgDQogICAgDQogICAgdXNpbmcgX0RpZmZfc2FtcGxlID0gX0l0ZXJfZGlmZl90PF9T
YW1wbGVJdD47DQogICAgY29uc3QgYXV0byBfU0NvdW50ID0gc3RhdGljX2Nhc3Q8X0RpZmZfc2Ft
cGxlPihfQ291bnQpOw0KICAgIF9JdGVyX2RpZmZfdDxfUG9wSXQ+IF9Qb3BTaXple307DQogICAg
Zm9yICg7IF9Qb3BTaXplIDwgX1NDb3VudDsgKytfUG9wU2l6ZSwgKHZvaWQpICsrX0ZpcnN0KSB7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIGNvbnN0IGF1dG8gX1NhbXBs
ZV9wb3AgPSBzdGF0aWNfY2FzdDxfRGlmZl9zYW1wbGU+KF9Qb3BTaXplKTsNCiAgICAgICAgaWYg
KF9GaXJzdCA9PSBfTGFzdCkgew0KICAgICAgICAgICAgcmV0dXJuIF9EZXN0ICsgX1NhbXBsZV9w
b3A7DQogICAgICAgIH0NCg0KICAgICAgICAqKF9EZXN0ICsgX1NhbXBsZV9wb3ApID0gKl9GaXJz
dDsNCiAgICB9DQogICAgZm9yICg7IF9GaXJzdCAhPSBfTGFzdDsgKytfRmlyc3QpIHsNCiAgICAg
ICAgY29uc3QgYXV0byBfSWR4ID0gX1JuZ0Z1bmMoKytfUG9wU2l6ZSk7DQogICAgICAgIGlmIChf
SWR4IDwgX1NDb3VudCkgew0KICAgICAgICAgICAgKihfRGVzdCArIHN0YXRpY19jYXN0PF9EaWZm
X3NhbXBsZT4oX0lkeCkpID0gKl9GaXJzdDsgDQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJu
IF9EZXN0ICsgX1NDb3VudDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Qb3BJdCwgY2xhc3MgX1Nh
bXBsZUl0LCBjbGFzcyBfRGlmZiwgY2xhc3MgX1JuZ0ZuPg0KX1NhbXBsZUl0IF9TYW1wbGVfc2Vs
ZWN0aW9uX3VuY2hlY2tlZCgNCiAgICBfUG9wSXQgX0ZpcnN0LCBjb25zdCBfUG9wSXQgX0xhc3Qs
IF9JdGVyX2RpZmZfdDxfUG9wSXQ+IF9Qb3BTaXplLCBfU2FtcGxlSXQgX0Rlc3QsIF9EaWZmIF9D
b3VudCwgX1JuZ0ZuJiBfUm5nRnVuYykgew0KICAgIA0KICAgIA0KICAgIHVzaW5nIF9DVCA9IGNv
bW1vbl90eXBlX3Q8X0l0ZXJfZGlmZl90PF9Qb3BJdD4sIF9EaWZmPjsNCiAgICBmb3IgKDsgX0Nv
dW50ID4gMCAmJiBfRmlyc3QgIT0gX0xhc3Q7ICsrX0ZpcnN0LCAodm9pZCkgLS1fUG9wU2l6ZSkg
ew0KICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8X0NUPihfUm5nRnVuYyhfUG9wU2l6ZSkpIDwgc3Rh
dGljX2Nhc3Q8X0NUPihfQ291bnQpKSB7DQogICAgICAgICAgICAtLV9Db3VudDsNCiAgICAgICAg
ICAgICpfRGVzdCA9ICpfRmlyc3Q7DQogICAgICAgICAgICArK19EZXN0Ow0KICAgICAgICB9DQog
ICAgfQ0KICAgIHJldHVybiBfRGVzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Qb3BJdCwgY2xh
c3MgX1NhbXBsZUl0LCBjbGFzcyBfRGlmZiwgY2xhc3MgX1JuZ0ZuPg0KX1NhbXBsZUl0IF9TYW1w
bGUxKF9Qb3BJdCBfRmlyc3QsIF9Qb3BJdCBfTGFzdCwgX1NhbXBsZUl0IF9EZXN0LCBfRGlmZiBf
Q291bnQsIF9SbmdGbiYgX1JuZ0Z1bmMsIGlucHV0X2l0ZXJhdG9yX3RhZykgew0KICAgIA0KICAg
IA0KICAgIF9TZWVrX3dyYXBwZWQoDQogICAgICAgIF9EZXN0LCBfU2FtcGxlX3Jlc2Vydm9pcl91
bmNoZWNrZWQoX0ZpcnN0LCBfTGFzdCwgX0dldF91bndyYXBwZWRfdW52ZXJpZmllZChfRGVzdCks
IF9Db3VudCwgX1JuZ0Z1bmMpKTsNCiAgICByZXR1cm4gX0Rlc3Q7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfUG9wSXQsIGNsYXNzIF9TYW1wbGVJdCwgY2xhc3MgX0RpZmYsIGNsYXNzIF9SbmdGbj4N
Cl9TYW1wbGVJdCBfU2FtcGxlMShfUG9wSXQgX0ZpcnN0LCBfUG9wSXQgX0xhc3QsIF9TYW1wbGVJ
dCBfRGVzdCwgX0RpZmYgX0NvdW50LCBfUm5nRm4mIF9SbmdGdW5jLCBmb3J3YXJkX2l0ZXJhdG9y
X3RhZykgew0KICAgIA0KICAgIA0KICAgIHVzaW5nIF9Qb3BEaWZmICAgICAgPSBfSXRlcl9kaWZm
X3Q8X1BvcEl0PjsNCiAgICB1c2luZyBfQ1QgICAgICAgICAgID0gY29tbW9uX3R5cGVfdDxfRGlm
ZiwgX1BvcERpZmY+Ow0KICAgIGNvbnN0IGF1dG8gX1BvcFNpemUgPSA6OnN0ZDo6IGRpc3RhbmNl
KF9GaXJzdCwgX0xhc3QpOw0KICAgIGlmIChzdGF0aWNfY2FzdDxfQ1Q+KF9Db3VudCkgPiBzdGF0
aWNfY2FzdDxfQ1Q+KF9Qb3BTaXplKSkgew0KICAgICAgICBfQ291bnQgPSBzdGF0aWNfY2FzdDxf
RGlmZj4oX1BvcFNpemUpOyANCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKA0KICAgICAgICBf
RGVzdCwgX1NhbXBsZV9zZWxlY3Rpb25fdW5jaGVja2VkKF9GaXJzdCwgX0xhc3QsIF9Qb3BTaXpl
LCBfR2V0X3Vud3JhcHBlZF9uKF9EZXN0LCBfQ291bnQpLCBfQ291bnQsIF9SbmdGdW5jKSk7DQog
ICAgcmV0dXJuIF9EZXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1BvcEl0LCBjbGFzcyBfU2Ft
cGxlSXQsIGNsYXNzIF9EaWZmLCBjbGFzcyBfVXJuZz4NCl9TYW1wbGVJdCBzYW1wbGUoX1BvcEl0
IF9GaXJzdCwgX1BvcEl0IF9MYXN0LCBfU2FtcGxlSXQgX0Rlc3QsIF9EaWZmIF9Db3VudCwNCiAg
ICBfVXJuZyYmIF9GdW5jKSB7IA0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X1Bv
cEl0PiB8fCBfSXNfcmFuZG9tX2l0ZXJfdjxfU2FtcGxlSXQ+LA0KICAgICAgICAiSWYgdGhlIHNv
dXJjZSByYW5nZSBpcyBub3QgZm9yd2FyZCwgdGhlIGRlc3RpbmF0aW9uIHJhbmdlIG11c3QgYmUg
cmFuZG9tLWFjY2Vzcy4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KGlzX2ludGVncmFsX3Y8X0RpZmY+
LCAiVGhlIHNhbXBsZSBzaXplIG11c3QgaGF2ZSBhbiBpbnRlZ2VyIHR5cGUuIik7DQogICAgX0Fk
bF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgaWYgKDAgPCBfQ291bnQpIHsNCiAg
ICAgICAgX1JuZ19mcm9tX3Vybmc8X0l0ZXJfZGlmZl90PF9Qb3BJdD4sIHJlbW92ZV9yZWZlcmVu
Y2VfdDxfVXJuZz4+IF9SbmdGdW5jKF9GdW5jKTsNCiAgICAgICAgX0Rlc3QgPSBfU2FtcGxlMShf
R2V0X3Vud3JhcHBlZChfRmlyc3QpLCBfR2V0X3Vud3JhcHBlZChfTGFzdCksIF9EZXN0LCBfQ291
bnQsIF9SbmdGdW5jLCBfSXRlcl9jYXRfdDxfUG9wSXQ+e30pOw0KICAgIH0NCg0KICAgIHJldHVy
biBfRGVzdDsNCn0NCiNsaW5lIDQ2NDMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXQs
IGNsYXNzIF9SbmdGbj4NCnZvaWQgX1JhbmRvbV9zaHVmZmxlMShfUmFuSXQgX0ZpcnN0LCBfUmFu
SXQgX0xhc3QsIF9SbmdGbiYgX1JuZ0Z1bmMpIHsNCiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5n
ZShfRmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53cmFwcGVk
KF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7
DQogICAgaWYgKF9VRmlyc3QgPT0gX1VMYXN0KSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoN
CiAgICB1c2luZyBfRGlmZiAgICAgICAgID0gX0l0ZXJfZGlmZl90PF9SYW5JdD47DQogICAgYXV0
byBfVVRhcmdldCAgICAgICA9IF9VRmlyc3Q7DQogICAgX0RpZmYgX1RhcmdldF9pbmRleCA9IDE7
DQogICAgZm9yICg7ICsrX1VUYXJnZXQgIT0gX1VMYXN0OyArK19UYXJnZXRfaW5kZXgpIHsgDQog
ICAgICAgIF9EaWZmIF9PZmYgPSBfUm5nRnVuYyhzdGF0aWNfY2FzdDxfRGlmZj4oX1RhcmdldF9p
bmRleCArIDEpKTsNCiAgICAgICAgOw0KICAgICAgICBpZiAoX09mZiAhPSBfVGFyZ2V0X2luZGV4
KSB7IA0KICAgICAgICAgICAgOjpzdGQ6OiBpdGVyX3N3YXAoX1VUYXJnZXQsIF9VRmlyc3QgKyBf
T2ZmKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9SYW5JdCwgY2xh
c3MgX1Vybmc+DQp2b2lkIHNodWZmbGUoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0LCBfVXJu
ZyYmIF9GdW5jKSB7IA0KICAgIHVzaW5nIF9Vcm5nMCA9IHJlbW92ZV9yZWZlcmVuY2VfdDxfVXJu
Zz47DQogICAgX1JuZ19mcm9tX3Vybmc8X0l0ZXJfZGlmZl90PF9SYW5JdD4sIF9Vcm5nMD4gX1Ju
Z0Z1bmMoX0Z1bmMpOw0KICAgIF9SYW5kb21fc2h1ZmZsZTEoX0ZpcnN0LCBfTGFzdCwgX1JuZ0Z1
bmMpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ3MDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0ODI4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29y
aXRobSINCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNzIF9Qcj4NCmlubGluZSBf
RndkSXQgcGFydGl0aW9uKF9Gd2RJdCBfRmlyc3QsIGNvbnN0IF9Gd2RJdCBfTGFzdCwgX1ByIF9Q
cmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAg
YXV0byBfVUZpcnN0ID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBhdXRvIF9VTGFzdCAg
PSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgaWYgY29uc3RleHByIChfSXNfYmlkaV9pdGVy
X3Y8X0Z3ZEl0Pikgew0KICAgICAgICBmb3IgKDs7KSB7IA0KICAgICAgICAgICAgZm9yICg7Oykg
eyANCiAgICAgICAgICAgICAgICBpZiAoX1VGaXJzdCA9PSBfVUxhc3QpIHsNCiAgICAgICAgICAg
ICAgICAgICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9VRmlyc3QpOw0KICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gX0ZpcnN0Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAg
IGlmICghX1ByZWQoKl9VRmlyc3QpKSB7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICsrX1VGaXJzdDsNCiAgICAgICAgICAg
IH0NCg0KICAgICAgICAgICAgZG8geyANCiAgICAgICAgICAgICAgICAtLV9VTGFzdDsNCiAgICAg
ICAgICAgICAgICBpZiAoX1VGaXJzdCA9PSBfVUxhc3QpIHsNCiAgICAgICAgICAgICAgICAgICAg
X1NlZWtfd3JhcHBlZChfRmlyc3QsIF9VRmlyc3QpOw0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gX0ZpcnN0Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gd2hpbGUgKCFfUHJl
ZCgqX1VMYXN0KSk7DQoNCiAgICAgICAgICAgIDo6c3RkOjogaXRlcl9zd2FwKF9VRmlyc3QsIF9V
TGFzdCk7IA0KICAgICAgICAgICAgKytfVUZpcnN0Ow0KICAgICAgICB9DQogICAgfSBlbHNlIHsN
CiAgICAgICAgZm9yICg7OykgeyANCiAgICAgICAgICAgIGlmIChfVUZpcnN0ID09IF9VTGFzdCkg
ew0KICAgICAgICAgICAgICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0LCBfVUZpcnN0KTsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gX0ZpcnN0Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBp
ZiAoIV9QcmVkKCpfVUZpcnN0KSkgew0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg
ICAgfQ0KDQogICAgICAgICAgICArK19VRmlyc3Q7DQogICAgICAgIH0NCg0KICAgICAgICBmb3Ig
KGF1dG8gX1VOZXh0ID0gX1VGaXJzdDsgKytfVU5leHQgIT0gX1VMYXN0Oykgew0KICAgICAgICAg
ICAgaWYgKF9QcmVkKCpfVU5leHQpKSB7DQogICAgICAgICAgICAgICAgOjpzdGQ6OiBpdGVyX3N3
YXAoX1VGaXJzdCwgX1VOZXh0KTsgDQogICAgICAgICAgICAgICAgKytfVUZpcnN0Ow0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9V
Rmlyc3QpOw0KICAgIHJldHVybiBfRmlyc3Q7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OTUyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRo
bSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByLCBf
RW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KX0Z3ZEl0IHBhcnRpdGlv
bihfRXhQbyYmIF9FeGVjLCBfRndkSXQgX0ZpcnN0LCBjb25zdCBfRndkSXQgX0xhc3QsIF9QciBf
UHJlZCkgbm9leGNlcHQ7IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNTA0MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJ
dD4NCl9CaWRJdCBfQnVmZmVyZWRfcm90YXRlX3VuY2hlY2tlZChjb25zdCBfQmlkSXQgX0ZpcnN0
LCBjb25zdCBfQmlkSXQgX01pZCwgY29uc3QgX0JpZEl0IF9MYXN0LA0KICAgIGNvbnN0IF9JdGVy
X2RpZmZfdDxfQmlkSXQ+IF9Db3VudDEsIGNvbnN0IF9JdGVyX2RpZmZfdDxfQmlkSXQ+IF9Db3Vu
dDIsIF9JdGVyX3ZhbHVlX3Q8X0JpZEl0PiogY29uc3QgX1RlbXBfcHRyLA0KICAgIGNvbnN0IHB0
cmRpZmZfdCBfQ2FwYWNpdHkpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIGlmIChfQ291bnQxID09IDAp
IHsNCiAgICAgICAgcmV0dXJuIF9MYXN0Ow0KICAgIH0NCg0KICAgIGlmIChfQ291bnQyID09IDAp
IHsNCiAgICAgICAgcmV0dXJuIF9GaXJzdDsNCiAgICB9DQoNCiAgICBpZiAoX0NvdW50MSA8PSBf
Q291bnQyICYmIF9Db3VudDEgPD0gX0NhcGFjaXR5KSB7IA0KICAgICAgICBfVW5pbml0aWFsaXpl
ZF9iYWNrb3V0PF9JdGVyX3ZhbHVlX3Q8X0JpZEl0Pio+IF9CYWNrb3V0ew0KICAgICAgICAgICAg
X1RlbXBfcHRyLCBfVW5pbml0aWFsaXplZF9tb3ZlX3VuY2hlY2tlZChfRmlyc3QsIF9NaWQsIF9U
ZW1wX3B0cil9Ow0KICAgICAgICBjb25zdCBfQmlkSXQgX05ld19taWQgPSBfTW92ZV91bmNoZWNr
ZWQoX01pZCwgX0xhc3QsIF9GaXJzdCk7DQogICAgICAgIF9Nb3ZlX3VuY2hlY2tlZChfQmFja291
dC5fRmlyc3QsIF9CYWNrb3V0Ll9MYXN0LCBfTmV3X21pZCk7DQogICAgICAgIHJldHVybiBfTmV3
X21pZDsgDQogICAgfQ0KDQogICAgaWYgKF9Db3VudDIgPD0gX0NhcGFjaXR5KSB7IA0KICAgICAg
ICBfVW5pbml0aWFsaXplZF9iYWNrb3V0PF9JdGVyX3ZhbHVlX3Q8X0JpZEl0Pio+IF9CYWNrb3V0
ew0KICAgICAgICAgICAgX1RlbXBfcHRyLCBfVW5pbml0aWFsaXplZF9tb3ZlX3VuY2hlY2tlZChf
TWlkLCBfTGFzdCwgX1RlbXBfcHRyKX07DQogICAgICAgIF9Nb3ZlX2JhY2t3YXJkX3VuY2hlY2tl
ZChfRmlyc3QsIF9NaWQsIF9MYXN0KTsNCiAgICAgICAgcmV0dXJuIF9Nb3ZlX3VuY2hlY2tlZChf
QmFja291dC5fRmlyc3QsIF9CYWNrb3V0Ll9MYXN0LCBfRmlyc3QpOyANCiAgICB9DQoNCiAgICAN
CiAgICByZXR1cm4gOjpzdGQ6OiByb3RhdGUoX0ZpcnN0LCBfTWlkLCBfTGFzdCk7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBfQmlkSXQsIGNsYXNzIF9Qcj4NCnBhaXI8X0JpZEl0LCBfSXRlcl9kaWZm
X3Q8X0JpZEl0Pj4gX1N0YWJsZV9wYXJ0aXRpb25fdW5jaGVja2VkMShfQmlkSXQgX0ZpcnN0LCBf
QmlkSXQgX0xhc3QsIF9QciBfUHJlZCwNCiAgICBjb25zdCBfSXRlcl9kaWZmX3Q8X0JpZEl0PiBf
Q291bnQsIF9JdGVyX3ZhbHVlX3Q8X0JpZEl0PiogY29uc3QgX1RlbXBfcHRyLCBjb25zdCBwdHJk
aWZmX3QgX0NhcGFjaXR5KSB7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgdXNpbmcgX0RpZmYgPSBfSXRlcl9kaWZmX3Q8X0JpZEl0PjsNCiAgICBpZiAoX0NvdW50IC0g
c3RhdGljX2Nhc3Q8X0RpZmY+KDEpIDw9IF9DYXBhY2l0eSkgeyANCiAgICAgICAgX1VuaW5pdGlh
bGl6ZWRfYmFja291dDxfSXRlcl92YWx1ZV90PF9CaWRJdD4qPiBfQmFja291dHtfVGVtcF9wdHJ9
Ow0KICAgICAgICBfQmlkSXQgX05leHQgPSBfRmlyc3Q7DQogICAgICAgIF9CYWNrb3V0Ll9FbXBs
YWNlX2JhY2soOjpzdGQ6OiBtb3ZlKCpfRmlyc3QpKTsNCiAgICAgICAgd2hpbGUgKCsrX0ZpcnN0
ICE9IF9MYXN0KSB7IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICBpZiAoX1ByZWQoKl9GaXJzdCkpIHsNCiAgICAgICAgICAgICAgICAqX05leHQgPSA6
OnN0ZDo6IG1vdmUoKl9GaXJzdCk7DQogICAgICAgICAgICAgICAgKytfTmV4dDsNCiAgICAgICAg
ICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgX0JhY2tvdXQuX0VtcGxhY2VfYmFjayg6OnN0
ZDo6IG1vdmUoKl9GaXJzdCkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAg
DQogICAgICAgICpfTmV4dCA9IDo6c3RkOjogbW92ZSgqX0xhc3QpOw0KICAgICAgICArK19OZXh0
Ow0KICAgICAgICBfTW92ZV91bmNoZWNrZWQoX0JhY2tvdXQuX0ZpcnN0LCBfQmFja291dC5fTGFz
dCwgX05leHQpOyANCiAgICAgICAgX0RpZmYgX1RydWVfZGlzdGFuY2UgPSBzdGF0aWNfY2FzdDxf
RGlmZj4oX0NvdW50IC0gc3RhdGljX2Nhc3Q8X0RpZmY+KF9CYWNrb3V0Ll9MYXN0IC0gX0JhY2tv
dXQuX0ZpcnN0KSk7DQogICAgICAgIHJldHVybiBwYWlyPF9CaWRJdCwgX0RpZmY+KF9OZXh0LCBf
VHJ1ZV9kaXN0YW5jZSk7IA0KICAgIH0NCg0KICAgIGNvbnN0IF9EaWZmIF9NaWRfb2Zmc2V0ID0g
X0NvdW50IC8gc3RhdGljX2Nhc3Q8X0RpZmY+KDIpOyANCiAgICBjb25zdCBfQmlkSXQgX01pZCAg
ICAgICA9IDo6c3RkOjogbmV4dChfRmlyc3QsIF9NaWRfb2Zmc2V0KTsNCg0KICAgIA0KICAgIF9C
aWRJdCBfTGVmdCAgICAgICAgICAgPSBfTWlkOw0KICAgIF9EaWZmIF9MZWZ0X3RydWVfY291bnQg
PSBfTWlkX29mZnNldDsNCiAgICBmb3IgKDs7KSB7IA0KICAgICAgICAtLV9MZWZ0Ow0KICAgICAg
ICBpZiAoX0ZpcnN0ID09IF9MZWZ0KSB7IA0KICAgICAgICAgICAgLS1fTGVmdF90cnVlX2NvdW50
OyANCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9QcmVkKCpf
TGVmdCkpIHsgDQogICAgICAgICAgICBjb25zdCBwYWlyPF9CaWRJdCwgX0RpZmY+IF9Mb3cgPQ0K
ICAgICAgICAgICAgICAgIF9TdGFibGVfcGFydGl0aW9uX3VuY2hlY2tlZDEoX0ZpcnN0LCBfTGVm
dCwgX1ByZWQsIF9MZWZ0X3RydWVfY291bnQsIF9UZW1wX3B0ciwgX0NhcGFjaXR5KTsNCiAgICAg
ICAgICAgIF9MZWZ0ICAgICAgICAgICAgPSBfTG93LmZpcnN0Ow0KICAgICAgICAgICAgX0xlZnRf
dHJ1ZV9jb3VudCA9IF9Mb3cuc2Vjb25kOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0N
Cg0KICAgICAgICAtLV9MZWZ0X3RydWVfY291bnQ7DQogICAgfQ0KDQogICAgDQogICAgX0JpZEl0
IF9SaWdodCAgICAgICAgICAgPSBfTWlkOw0KICAgIF9EaWZmIF9SaWdodF90cnVlX2NvdW50ID0g
MDsNCiAgICBmb3IgKDs7KSB7IA0KICAgICAgICBpZiAoX1JpZ2h0ID09IF9MYXN0KSB7IA0KICAg
ICAgICAgICAgKytfUmlnaHQ7IA0KICAgICAgICAgICAgKytfUmlnaHRfdHJ1ZV9jb3VudDsNCiAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFfUHJlZCgqX1JpZ2h0
KSkgeyANCiAgICAgICAgICAgIGNvbnN0IF9EaWZmIF9SaWdodF9jb3VudCA9IF9Db3VudCAtIF9N
aWRfb2Zmc2V0Ow0KICAgICAgICAgICAgY29uc3QgX0RpZmYgX1JlbWFpbmluZyAgID0gX1JpZ2h0
X2NvdW50IC0gX1JpZ2h0X3RydWVfY291bnQ7DQogICAgICAgICAgICBjb25zdCBwYWlyPF9CaWRJ
dCwgX0RpZmY+IF9IaWdoID0NCiAgICAgICAgICAgICAgICBfU3RhYmxlX3BhcnRpdGlvbl91bmNo
ZWNrZWQxKF9SaWdodCwgX0xhc3QsIF9QcmVkLCBfUmVtYWluaW5nLCBfVGVtcF9wdHIsIF9DYXBh
Y2l0eSk7DQogICAgICAgICAgICBfUmlnaHQgPSBfSGlnaC5maXJzdDsNCiAgICAgICAgICAgIF9S
aWdodF90cnVlX2NvdW50ICs9IF9IaWdoLnNlY29uZDsNCiAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICB9DQoNCiAgICAgICAgKytfUmlnaHQ7DQogICAgICAgICsrX1JpZ2h0X3RydWVfY291bnQ7
DQogICAgfQ0KDQogICAgDQogICAgY29uc3QgX0JpZEl0IF9QYXJ0aXRpb25fcG9pbnQgPSBfQnVm
ZmVyZWRfcm90YXRlX3VuY2hlY2tlZChfTGVmdCwgX01pZCwgX1JpZ2h0LA0KICAgICAgICBzdGF0
aWNfY2FzdDxfRGlmZj4oX01pZF9vZmZzZXQgLSBfTGVmdF90cnVlX2NvdW50KSwgX1JpZ2h0X3Ry
dWVfY291bnQsIF9UZW1wX3B0ciwgX0NhcGFjaXR5KTsNCiAgICByZXR1cm4gcGFpcjxfQmlkSXQs
IF9EaWZmPihfUGFydGl0aW9uX3BvaW50LCBzdGF0aWNfY2FzdDxfRGlmZj4oX0xlZnRfdHJ1ZV9j
b3VudCArIF9SaWdodF90cnVlX2NvdW50KSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQs
IGNsYXNzIF9Qcj4NCl9CaWRJdCBfU3RhYmxlX3BhcnRpdGlvbl91bmNoZWNrZWQoX0JpZEl0IF9G
aXJzdCwgX0JpZEl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBmb3IgKDs7KSB7DQog
ICAgICAgIGlmIChfRmlyc3QgPT0gX0xhc3QpIHsgDQogICAgICAgICAgICByZXR1cm4gX0ZpcnN0
Ow0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFfUHJlZCgqX0ZpcnN0KSkgeyANCiAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICAgICAgKytfRmlyc3Q7DQogICAgfQ0KDQogICAg
Zm9yICg7Oykgew0KICAgICAgICAtLV9MYXN0Ow0KICAgICAgICBpZiAoX0ZpcnN0ID09IF9MYXN0
KSB7IA0KICAgICAgICAgICAgcmV0dXJuIF9GaXJzdDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlm
IChfUHJlZCgqX0xhc3QpKSB7IA0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9
DQoNCiAgICB1c2luZyBfRGlmZiAgICAgICAgICAgICAgPSBfSXRlcl9kaWZmX3Q8X0JpZEl0PjsN
CiAgICBjb25zdCBfRGlmZiBfVGVtcF9jb3VudCAgPSA6OnN0ZDo6IGRpc3RhbmNlKF9GaXJzdCwg
X0xhc3QpOyANCiAgICBjb25zdCBfRGlmZiBfVG90YWxfY291bnQgPSBfVGVtcF9jb3VudCArIHN0
YXRpY19jYXN0PF9EaWZmPigxKTsNCiAgICBfT3B0aW1pc3RpY190ZW1wb3JhcnlfYnVmZmVyPF9J
dGVyX3ZhbHVlX3Q8X0JpZEl0Pj4gX1RlbXBfYnVme19UZW1wX2NvdW50fTsNCiAgICByZXR1cm4g
X1N0YWJsZV9wYXJ0aXRpb25fdW5jaGVja2VkMShfRmlyc3QsIF9MYXN0LCBfUHJlZCwgX1RvdGFs
X2NvdW50LCBfVGVtcF9idWYuX0RhdGEsIF9UZW1wX2J1Zi5fQ2FwYWNpdHkpLmZpcnN0Ow0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0LCBjbGFzcyBfUHI+DQpfQmlkSXQgc3RhYmxlX3BhcnRp
dGlvbihfQmlkSXQgX0ZpcnN0LCBfQmlkSXQgX0xhc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAg
IF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIF9TZWVrX3dyYXBwZWQoX0Zp
cnN0LCBfU3RhYmxlX3BhcnRpdGlvbl91bmNoZWNrZWQoX0dldF91bndyYXBwZWQoX0ZpcnN0KSwg
X0dldF91bndyYXBwZWQoX0xhc3QpLCBfUGFzc19mbihfUHJlZCkpKTsNCiAgICByZXR1cm4gX0Zp
cnN0Ow0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0JpZEl0LCBjbGFzcyBf
UHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfQmlkSXQgc3Rh
YmxlX3BhcnRpdGlvbihfRXhQbyYmLCBfQmlkSXQgX0ZpcnN0LCBfQmlkSXQgX0xhc3QsIF9QciBf
UHJlZCkgbm9leGNlcHQgIHsNCiAgICANCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBzdGFibGVf
cGFydGl0aW9uKF9GaXJzdCwgX0xhc3QsIF9QYXNzX2ZuKF9QcmVkKSk7DQp9DQojbGluZSA1MjEx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29y
aXRobSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0LCBjbGFzcyBfVHksIGNsYXNzIF9Qcj4N
CmlubGluZSB2b2lkIF9QdXNoX2hlYXBfYnlfaW5kZXgoDQogICAgX1Jhbkl0IF9GaXJzdCwgX0l0
ZXJfZGlmZl90PF9SYW5JdD4gX0hvbGUsIF9JdGVyX2RpZmZfdDxfUmFuSXQ+IF9Ub3AsIF9UeSYm
IF9WYWwsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIHVzaW5nIF9EaWZmID0gX0l0ZXJfZGlmZl90
PF9SYW5JdD47DQogICAgZm9yIChfRGlmZiBfSWR4ID0gKF9Ib2xlIC0gMSkgPj4gMTsgDQogICAg
ICAgICBfVG9wIDwgX0hvbGUgJiYgc3RhdGljX2Nhc3Q8Ym9vbD4oX1ByZWQoKihfRmlyc3QgKyBf
SWR4KSwgX1ZhbCkpOyANCiAgICAgICAgIF9JZHggPSAoX0hvbGUgLSAxKSA+PiAxKSB7IA0KICAg
ICAgICANCiAgICAgICAgKihfRmlyc3QgKyBfSG9sZSkgPSA6OnN0ZDo6IG1vdmUoKihfRmlyc3Qg
KyBfSWR4KSk7DQogICAgICAgIF9Ib2xlICAgICAgICAgICAgID0gX0lkeDsNCiAgICB9DQoNCiAg
ICAqKF9GaXJzdCArIF9Ib2xlKSA9IDo6c3RkOjogbW92ZShfVmFsKTsgDQp9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfUmFuSXQsIGNsYXNzIF9Qcj4NCmlubGluZSB2b2lkIHB1c2hfaGVhcChfUmFuSXQg
X0ZpcnN0LCBfUmFuSXQgX0xhc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5
X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VGaXJzdCA9IF9HZXRfdW53
cmFwcGVkKF9GaXJzdCk7DQogICAgYXV0byBfVUxhc3QgICAgICAgID0gX0dldF91bndyYXBwZWQo
X0xhc3QpOw0KICAgIHVzaW5nIF9EaWZmICAgICAgICA9IF9JdGVyX2RpZmZfdDxfUmFuSXQ+Ow0K
ICAgIF9EaWZmIF9Db3VudCAgICAgICA9IF9VTGFzdCAtIF9VRmlyc3Q7DQogICAgaWYgKDIgPD0g
X0NvdW50KSB7DQogICAgICAgIF9JdGVyX3ZhbHVlX3Q8X1Jhbkl0PiBfVmFsID0gOjpzdGQ6OiBt
b3ZlKCotLV9VTGFzdCk7DQogICAgICAgIF9QdXNoX2hlYXBfYnlfaW5kZXgoX1VGaXJzdCwgLS1f
Q291bnQsIF9EaWZmKDApLCA6OnN0ZDo6IG1vdmUoX1ZhbCksIF9QYXNzX2ZuKF9QcmVkKSk7DQog
ICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0Pg0KaW5saW5lIHZvaWQgcHVzaF9oZWFw
KF9SYW5JdCBfRmlyc3QsIF9SYW5JdCBfTGFzdCkgew0KICAgIA0KICAgIDo6c3RkOjogcHVzaF9o
ZWFwKF9GaXJzdCwgX0xhc3QsIGxlc3M8Pnt9KTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SYW5JdCwgY2xhc3MgX1R5LCBjbGFzcyBf
UHI+DQppbmxpbmUgdm9pZCBfUG9wX2hlYXBfaG9sZV9ieV9pbmRleCgNCiAgICBfUmFuSXQgX0Zp
cnN0LCBfSXRlcl9kaWZmX3Q8X1Jhbkl0PiBfSG9sZSwgX0l0ZXJfZGlmZl90PF9SYW5JdD4gX0Jv
dHRvbSwgX1R5JiYgX1ZhbCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgOw0KDQogICAgdXNpbmcg
X0RpZmYgICAgICA9IF9JdGVyX2RpZmZfdDxfUmFuSXQ+Ow0KICAgIGNvbnN0IF9EaWZmIF9Ub3Ag
PSBfSG9sZTsNCiAgICBfRGlmZiBfSWR4ICAgICAgID0gX0hvbGU7DQoNCiAgICANCiAgICANCiAg
ICBjb25zdCBfRGlmZiBfTWF4X3NlcXVlbmNlX25vbl9sZWFmID0gKF9Cb3R0b20gLSAxKSA+PiAx
OyANCiAgICB3aGlsZSAoX0lkeCA8IF9NYXhfc2VxdWVuY2Vfbm9uX2xlYWYpIHsgDQogICAgICAg
IF9JZHggPSAyICogX0lkeCArIDI7DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJl
ZCgqKF9GaXJzdCArIF9JZHgpLCAqKF9GaXJzdCArIChfSWR4IC0gMSkpKSkpIHsNCiAgICAgICAg
ICAgIC0tX0lkeDsNCiAgICAgICAgfQ0KICAgICAgICAqKF9GaXJzdCArIF9Ib2xlKSA9IDo6c3Rk
OjogbW92ZSgqKF9GaXJzdCArIF9JZHgpKTsNCiAgICAgICAgX0hvbGUgICAgICAgICAgICAgPSBf
SWR4Ow0KICAgIH0NCg0KICAgIGlmIChfSWR4ID09IF9NYXhfc2VxdWVuY2Vfbm9uX2xlYWYgJiYg
X0JvdHRvbSAlIDIgPT0gMCkgeyANCiAgICAgICAgKihfRmlyc3QgKyBfSG9sZSkgPSA6OnN0ZDo6
IG1vdmUoKihfRmlyc3QgKyAoX0JvdHRvbSAtIDEpKSk7DQogICAgICAgIF9Ib2xlICAgICAgICAg
ICAgID0gX0JvdHRvbSAtIDE7DQogICAgfQ0KDQogICAgX1B1c2hfaGVhcF9ieV9pbmRleChfRmly
c3QsIF9Ib2xlLCBfVG9wLCA6OnN0ZDo6IG1vdmUoX1ZhbCksIF9QcmVkKTsNCn0NCg0KdGVtcGxh
dGUgPGNsYXNzIF9SYW5JdCwgY2xhc3MgX1R5LCBjbGFzcyBfUHI+DQppbmxpbmUgdm9pZCBfUG9w
X2hlYXBfaG9sZV91bmNoZWNrZWQoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0LCBfUmFuSXQg
X0Rlc3QsIF9UeSYmIF9WYWwsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIA0KICAgIA0KICAgICpf
RGVzdCAgICAgID0gOjpzdGQ6OiBtb3ZlKCpfRmlyc3QpOw0KICAgIHVzaW5nIF9EaWZmID0gX0l0
ZXJfZGlmZl90PF9SYW5JdD47DQogICAgX1BvcF9oZWFwX2hvbGVfYnlfaW5kZXgoX0ZpcnN0LCBz
dGF0aWNfY2FzdDxfRGlmZj4oMCksIHN0YXRpY19jYXN0PF9EaWZmPihfTGFzdCAtIF9GaXJzdCks
IDo6c3RkOjogbW92ZShfVmFsKSwgX1ByZWQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0
LCBjbGFzcyBfUHI+DQppbmxpbmUgdm9pZCBfUG9wX2hlYXBfdW5jaGVja2VkKF9SYW5JdCBfRmly
c3QsIF9SYW5JdCBfTGFzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgaWYgKDIgPD0gX0xhc3Qg
LSBfRmlyc3QpIHsNCiAgICAgICAgLS1fTGFzdDsNCiAgICAgICAgX0l0ZXJfdmFsdWVfdDxfUmFu
SXQ+IF9WYWwgPSA6OnN0ZDo6IG1vdmUoKl9MYXN0KTsNCiAgICAgICAgX1BvcF9oZWFwX2hvbGVf
dW5jaGVja2VkKF9GaXJzdCwgX0xhc3QsIF9MYXN0LCA6OnN0ZDo6IG1vdmUoX1ZhbCksIF9QcmVk
KTsNCiAgICB9DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXQsIGNsYXNzIF9Qcj4NCmlubGlu
ZSB2b2lkIHBvcF9oZWFwKF9SYW5JdCBfRmlyc3QsIF9SYW5JdCBfTGFzdCwgX1ByIF9QcmVkKSB7
DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgX1BvcF9o
ZWFwX3VuY2hlY2tlZChfR2V0X3Vud3JhcHBlZChfRmlyc3QpLCBfR2V0X3Vud3JhcHBlZChfTGFz
dCksIF9QYXNzX2ZuKF9QcmVkKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXQ+DQppbmxp
bmUgdm9pZCBwb3BfaGVhcChfUmFuSXQgX0ZpcnN0LCBfUmFuSXQgX0xhc3QpIHsNCiAgICANCiAg
ICA6OnN0ZDo6IHBvcF9oZWFwKF9GaXJzdCwgX0xhc3QsIGxlc3M8Pnt9KTsNCn0NCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0LCBjbGFz
cyBfUHI+DQppbmxpbmUgdm9pZCBfTWFrZV9oZWFwX3VuY2hlY2tlZChfUmFuSXQgX0ZpcnN0LCBf
UmFuSXQgX0xhc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIHVzaW5nIF9EaWZmICAgPSBfSXRl
cl9kaWZmX3Q8X1Jhbkl0PjsNCiAgICBfRGlmZiBfQm90dG9tID0gX0xhc3QgLSBfRmlyc3Q7DQog
ICAgZm9yIChfRGlmZiBfSG9sZSA9IF9Cb3R0b20gPj4gMTsgX0hvbGUgPiAwOykgeyANCiAgICAg
ICAgDQogICAgICAgIC0tX0hvbGU7DQogICAgICAgIF9JdGVyX3ZhbHVlX3Q8X1Jhbkl0PiBfVmFs
ID0gOjpzdGQ6OiBtb3ZlKCooX0ZpcnN0ICsgX0hvbGUpKTsNCiAgICAgICAgX1BvcF9oZWFwX2hv
bGVfYnlfaW5kZXgoX0ZpcnN0LCBfSG9sZSwgX0JvdHRvbSwgOjpzdGQ6OiBtb3ZlKF9WYWwpLCBf
UHJlZCk7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0LCBjbGFzcyBfUHI+DQpp
bmxpbmUgdm9pZCBtYWtlX2hlYXAoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1By
ZWQpIHsgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgX01ha2Vf
aGVhcF91bmNoZWNrZWQoX0dldF91bndyYXBwZWQoX0ZpcnN0KSwgX0dldF91bndyYXBwZWQoX0xh
c3QpLCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0Pg0KaW5s
aW5lIHZvaWQgbWFrZV9oZWFwKF9SYW5JdCBfRmlyc3QsIF9SYW5JdCBfTGFzdCkgeyANCiAgICA6
OnN0ZDo6IG1ha2VfaGVhcChfRmlyc3QsIF9MYXN0LCBsZXNzPD57fSk7DQp9DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9SYW5JdCwgY2xhc3MgX1ByPg0KaW5saW5lIF9SYW5JdCBfSXNfaGVhcF91bnRpbF91bmNo
ZWNrZWQoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAg
ICB1c2luZyBfRGlmZiAgICAgICA9IF9JdGVyX2RpZmZfdDxfUmFuSXQ+Ow0KICAgIGNvbnN0IF9E
aWZmIF9TaXplID0gX0xhc3QgLSBfRmlyc3Q7DQogICAgZm9yIChfRGlmZiBfT2ZmID0gMTsgX09m
ZiA8IF9TaXplOyArK19PZmYpIHsNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9QcmVk
KCooX0ZpcnN0ICsgKChfT2ZmIC0gMSkgPj4gMSkpLCAqKF9GaXJzdCArIF9PZmYpKSkpIHsgDQog
ICAgICAgICAgICByZXR1cm4gX0ZpcnN0ICsgX09mZjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IHJldHVybiBfTGFzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9SYW5JdCwgY2xhc3MgX1ByPg0K
W1tub2Rpc2NhcmRdXSBpbmxpbmUgX1Jhbkl0IGlzX2hlYXBfdW50aWwoX1Jhbkl0IF9GaXJzdCwg
X1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShf
Rmlyc3QsIF9MYXN0KTsNCiAgICBfU2Vla193cmFwcGVkKF9GaXJzdCwgX0lzX2hlYXBfdW50aWxf
dW5jaGVja2VkKF9HZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53cmFwcGVkKF9MYXN0KSwg
X1Bhc3NfZm4oX1ByZWQpKSk7DQogICAgcmV0dXJuIF9GaXJzdDsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIF9SYW5JdCwgY2xhc3MgX1ByPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBpc19oZWFw
KF9SYW5JdCBfRmlyc3QsIF9SYW5JdCBfTGFzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0Fk
bF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgY29uc3QgYXV0byBfVUZpcnN0ID0g
X0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCAgPSBfR2V0X3Vu
d3JhcHBlZChfTGFzdCk7DQogICAgcmV0dXJuIF9Jc19oZWFwX3VudGlsX3VuY2hlY2tlZChfVUZp
cnN0LCBfVUxhc3QsIF9QYXNzX2ZuKF9QcmVkKSkgPT0gX1VMYXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1Jhbkl0Pg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX1Jhbkl0IGlzX2hlYXBfdW50aWwo
X1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0KSB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjog
aXNfaGVhcF91bnRpbChfRmlyc3QsIF9MYXN0LCBsZXNzPD57fSk7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfUmFuSXQ+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIGlzX2hlYXAoX1Jhbkl0IF9G
aXJzdCwgX1Jhbkl0IF9MYXN0KSB7IA0KICAgIHJldHVybiA6OnN0ZDo6IGlzX2hlYXAoX0ZpcnN0
LCBfTGFzdCwgbGVzczw+e30pOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3Mg
X1Jhbkl0LCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9
IDA+DQpbW25vZGlzY2FyZF1dIF9SYW5JdCBpc19oZWFwX3VudGlsKF9FeFBvJiYgX0V4ZWMsIF9S
YW5JdCBfRmlyc3QsIF9SYW5JdCBfTGFzdCwgX1ByIF9QcmVkKSBub2V4Y2VwdDsgDQoNCnRlbXBs
YXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX1Jhbkl0LCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhl
Y3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIGJvb2wgaXNfaGVhcChf
RXhQbyYmIF9FeGVjLCBfUmFuSXQgX0ZpcnN0LCBfUmFuSXQgX0xhc3QsIF9QciBfUHJlZCkgbm9l
eGNlcHQgIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBpc19oZWFwX3VudGlsKDo6c3RkOjog
Zm9yd2FyZDxfRXhQbz4oX0V4ZWMpLCBfRmlyc3QsIF9MYXN0LCBfUGFzc19mbihfUHJlZCkpID09
IF9MYXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9SYW5JdCwgX0VuYWJs
ZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX1Jhbkl0
IGlzX2hlYXBfdW50aWwoX0V4UG8mJiBfRXhlYywgX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0
KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IGlzX2hlYXBfdW50aWwoOjpz
dGQ6OiBmb3J3YXJkPF9FeFBvPihfRXhlYyksIF9GaXJzdCwgX0xhc3QsIGxlc3N7fSk7DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX1Jhbkl0LCBfRW5hYmxlX2lmX2V4ZWN1dGlv
bl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KW1tub2Rpc2NhcmRdXSBib29sIGlzX2hlYXAoX0V4UG8m
JiBfRXhlYywgX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0KSBub2V4Y2VwdCAgew0KICAgIA0K
ICAgIHJldHVybiA6OnN0ZDo6IGlzX2hlYXAoOjpzdGQ6OiBmb3J3YXJkPF9FeFBvPihfRXhlYyks
IF9GaXJzdCwgX0xhc3QsIGxlc3N7fSk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU3MTggIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfUmFuSXQsIGNsYXNzIF9Qcj4NCmlubGluZSB2b2lkIF9Tb3J0X2hlYXBfdW5jaGVj
a2VkKF9SYW5JdCBfRmlyc3QsIF9SYW5JdCBfTGFzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAg
Zm9yICg7IF9MYXN0IC0gX0ZpcnN0ID49IDI7IC0tX0xhc3QpIHsNCiAgICAgICAgX1BvcF9oZWFw
X3VuY2hlY2tlZChfRmlyc3QsIF9MYXN0LCBfUHJlZCk7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1Jhbkl0LCBjbGFzcyBfUHI+DQppbmxpbmUgdm9pZCBzb3J0X2hlYXAoX1Jhbkl0IF9G
aXJzdCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2Uo
X0ZpcnN0LCBfTGFzdCk7DQogICAgY29uc3QgYXV0byBfVUZpcnN0ID0gX0dldF91bndyYXBwZWQo
X0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCAgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7
DQoNCg0KDQoNCg0KI2xpbmUgNTczOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQogICAgX1NvcnRfaGVhcF91bmNoZWNrZWQoX1VG
aXJzdCwgX1VMYXN0LCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bkl0Pg0KaW5saW5lIHZvaWQgc29ydF9oZWFwKF9SYW5JdCBfRmlyc3QsIF9SYW5JdCBfTGFzdCkg
eyANCiAgICA6OnN0ZDo6IHNvcnRfaGVhcChfRmlyc3QsIF9MYXN0LCBsZXNzPD57fSk7DQp9DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9Gd2RJdCwgY2xhc3MgX1R5LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBfRndk
SXQgdXBwZXJfYm91bmQoX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBjb25zdCBfVHkmIF9W
YWwsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xh
c3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgICAgICAgICAgICA9IF9HZXRfdW53cmFwcGVkKF9G
aXJzdCk7DQogICAgX0l0ZXJfZGlmZl90PF9Gd2RJdD4gX0NvdW50ID0gOjpzdGQ6OiBkaXN0YW5j
ZShfVUZpcnN0LCBfR2V0X3Vud3JhcHBlZChfTGFzdCkpOw0KDQogICAgd2hpbGUgKDAgPCBfQ291
bnQpIHsgDQogICAgICAgIF9JdGVyX2RpZmZfdDxfRndkSXQ+IF9Db3VudDIgPSBfQ291bnQgLyAy
Ow0KICAgICAgICBjb25zdCBhdXRvIF9VTWlkICAgICAgICAgICAgID0gOjpzdGQ6OiBuZXh0KF9V
Rmlyc3QsIF9Db3VudDIpOw0KICAgICAgICBpZiAoX1ByZWQoX1ZhbCwgKl9VTWlkKSkgew0KICAg
ICAgICAgICAgX0NvdW50ID0gX0NvdW50MjsNCiAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAg
ICBfVUZpcnN0ID0gX05leHRfaXRlcihfVU1pZCk7DQogICAgICAgICAgICBfQ291bnQgLT0gX0Nv
dW50MiArIDE7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9GaXJzdCwg
X1VGaXJzdCk7DQogICAgcmV0dXJuIF9GaXJzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJ
dCwgY2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0Z3ZEl0IHVwcGVyX2JvdW5kKF9G
d2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCwgY29uc3QgX1R5JiBfVmFsKSB7DQogICAgDQogICAg
cmV0dXJuIDo6c3RkOjogdXBwZXJfYm91bmQoX0ZpcnN0LCBfTGFzdCwgX1ZhbCwgbGVzczw+e30p
Ow0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1R5LCBjbGFzcyBfUHI+
DQpbW25vZGlzY2FyZF1dIGlubGluZSBwYWlyPF9Gd2RJdCwgX0Z3ZEl0PiBlcXVhbF9yYW5nZShf
RndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QsIGNvbnN0IF9UeSYgX1ZhbCwgX1ByIF9QcmVkKSB7
DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgYXV0byBf
VUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VM
YXN0ID0gX0dldF91bndyYXBwZWQoX0xhc3QpOw0KDQogICAgdXNpbmcgX0RpZmYgID0gX0l0ZXJf
ZGlmZl90PF9Gd2RJdD47DQogICAgX0RpZmYgX0NvdW50ID0gOjpzdGQ6OiBkaXN0YW5jZShfVUZp
cnN0LCBfVUxhc3QpOw0KDQogICAgZm9yICg7OykgeyANCiAgICAgICAgaWYgKF9Db3VudCA8PSAw
KSB7DQogICAgICAgICAgICBfU2Vla193cmFwcGVkKF9MYXN0LCBfVUZpcnN0KTsgDQogICAgICAg
ICAgICBfU2Vla193cmFwcGVkKF9GaXJzdCwgX1VGaXJzdCk7DQogICAgICAgICAgICBicmVhazsN
CiAgICAgICAgfQ0KDQogICAgICAgIF9EaWZmIF9Db3VudDIgICAgPSBfQ291bnQgLyAyOw0KICAg
ICAgICBjb25zdCBhdXRvIF9VTWlkID0gOjpzdGQ6OiBuZXh0KF9VRmlyc3QsIF9Db3VudDIpOw0K
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oX1ByZWQoKl9VTWlkLCBfVmFsKSkpIHsgDQog
ICAgICAgICAgICBfVUZpcnN0ID0gX05leHRfaXRlcihfVU1pZCk7DQogICAgICAgICAgICBfQ291
bnQgLT0gX0NvdW50MiArIDE7DQogICAgICAgIH0gZWxzZSBpZiAoX1ByZWQoX1ZhbCwgKl9VTWlk
KSkgew0KICAgICAgICAgICAgX0NvdW50ID0gX0NvdW50MjsgDQogICAgICAgIH0gZWxzZSB7IA0K
ICAgICAgICAgICAgYXV0byBfVUZpcnN0MiA9IDo6c3RkOjogbG93ZXJfYm91bmQoX1VGaXJzdCwg
X1VNaWQsIF9WYWwsIF9QYXNzX2ZuKF9QcmVkKSk7DQogICAgICAgICAgICA6OnN0ZDo6IGFkdmFu
Y2UoX1VGaXJzdCwgX0NvdW50KTsNCiAgICAgICAgICAgIGF1dG8gX1VMYXN0MiA9IDo6c3RkOjog
dXBwZXJfYm91bmQoX05leHRfaXRlcihfVU1pZCksIF9VRmlyc3QsIF9WYWwsIF9QYXNzX2ZuKF9Q
cmVkKSk7DQogICAgICAgICAgICBfU2Vla193cmFwcGVkKF9MYXN0LCBfVUxhc3QyKTsNCiAgICAg
ICAgICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0LCBfVUZpcnN0Mik7DQogICAgICAgICAgICBicmVh
azsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiB7X0ZpcnN0LCBfTGFzdH07DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gaW5saW5l
IHBhaXI8X0Z3ZEl0LCBfRndkSXQ+IGVxdWFsX3JhbmdlKF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBf
TGFzdCwgY29uc3QgX1R5JiBfVmFsKSB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogZXF1YWxf
cmFuZ2UoX0ZpcnN0LCBfTGFzdCwgX1ZhbCwgbGVzczw+e30pOw0KfQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1R5LCBjbGFzcyBfUHI+DQpbW25vZGlz
Y2FyZF1dIGlubGluZSBib29sIGJpbmFyeV9zZWFyY2goX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9M
YXN0LCBjb25zdCBfVHkmIF9WYWwsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5
X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgID0gX0dldF91bndy
YXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVkKF9M
YXN0KTsNCiAgICBfVUZpcnN0ICAgICAgICAgICA9IDo6c3RkOjogbG93ZXJfYm91bmQoX1VGaXJz
dCwgX1VMYXN0LCBfVmFsLCBfUGFzc19mbihfUHJlZCkpOw0KICAgIHJldHVybiBfVUZpcnN0ICE9
IF9VTGFzdCAmJiAhX1ByZWQoX1ZhbCwgKl9VRmlyc3QpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0Z3ZEl0LCBjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIGJpbmFyeV9zZWFy
Y2goX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBjb25zdCBfVHkmIF9WYWwpIHsNCiAgICAN
CiAgICByZXR1cm4gOjpzdGQ6OiBiaW5hcnlfc2VhcmNoKF9GaXJzdCwgX0xhc3QsIF9WYWwsIGxl
c3M8Pnt9KTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9EaXN0
YW5jZV91bmtub3duIF9JZGxfZGlzdF9hZGQoX0Rpc3RhbmNlX3Vua25vd24sIF9EaXN0YW5jZV91
bmtub3duKSB7DQogICAgcmV0dXJuIHt9Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0RpZmYxPg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0Rpc3RhbmNlX3Vua25vd24gX0lkbF9kaXN0X2FkZChf
RGlmZjEsIF9EaXN0YW5jZV91bmtub3duKSB7DQogICAgcmV0dXJuIHt9Ow0KfQ0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0RpZmYyPg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0Rpc3RhbmNlX3Vua25v
d24gX0lkbF9kaXN0X2FkZChfRGlzdGFuY2VfdW5rbm93biwgX0RpZmYyKSB7DQogICAgcmV0dXJu
IHt9Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0RpZmYxLCBjbGFzcyBfRGlmZjI+DQpbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBhdXRvIF9JZGxfZGlzdF9hZGQoX0RpZmYxIF9MaHMsIF9EaWZmMiBf
UmhzKSB7DQogICAgcmV0dXJuIF9MaHMgKyBfUmhzOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
SXQxLCBjbGFzcyBfSW5JdDIsIGNsYXNzIF9PdXRJdCwgY2xhc3MgX1ByPg0KaW5saW5lIF9PdXRJ
dCBtZXJnZShfSW5JdDEgX0ZpcnN0MSwgX0luSXQxIF9MYXN0MSwgX0luSXQyIF9GaXJzdDIsIF9J
bkl0MiBfTGFzdDIsIF9PdXRJdCBfRGVzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92
ZXJpZnlfcmFuZ2UoX0ZpcnN0MSwgX0xhc3QxKTsNCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmly
c3QyLCBfTGFzdDIpOw0KICAgIGF1dG8gX1VGaXJzdDEgICAgICA9IF9HZXRfdW53cmFwcGVkKF9G
aXJzdDEpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MSA9IF9HZXRfdW53cmFwcGVkKF9MYXN0MSk7
DQogICAgYXV0byBfVUZpcnN0MiAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0Mik7DQogICAg
Y29uc3QgYXV0byBfVUxhc3QyID0gX0dldF91bndyYXBwZWQoX0xhc3QyKTsNCiAgICA7DQogICAg
Ow0KICAgIGNvbnN0IGF1dG8gX0NvdW50MSA9IF9JZGxfZGlzdGFuY2U8X0luSXQxPihfVUZpcnN0
MSwgX1VMYXN0MSk7DQogICAgY29uc3QgYXV0byBfQ291bnQyID0gX0lkbF9kaXN0YW5jZTxfSW5J
dDI+KF9VRmlyc3QyLCBfVUxhc3QyKTsNCiAgICBhdXRvIF9VRGVzdCAgICAgICAgPSBfR2V0X3Vu
d3JhcHBlZF9uKF9EZXN0LCBfSWRsX2Rpc3RfYWRkKF9Db3VudDEsIF9Db3VudDIpKTsNCiAgICBp
ZiAoX1VGaXJzdDEgIT0gX1VMYXN0MSAmJiBfVUZpcnN0MiAhPSBfVUxhc3QyKSB7DQogICAgICAg
IGZvciAoOzspIHsNCiAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX1VG
aXJzdDIsICpfVUZpcnN0MSkpKSB7DQogICAgICAgICAgICAgICAgKl9VRGVzdCA9ICpfVUZpcnN0
MjsNCiAgICAgICAgICAgICAgICArK19VRGVzdDsNCiAgICAgICAgICAgICAgICArK19VRmlyc3Qy
Ow0KDQogICAgICAgICAgICAgICAgaWYgKF9VRmlyc3QyID09IF9VTGFzdDIpIHsNCiAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNl
IHsNCiAgICAgICAgICAgICAgICAqX1VEZXN0ID0gKl9VRmlyc3QxOw0KICAgICAgICAgICAgICAg
ICsrX1VEZXN0Ow0KICAgICAgICAgICAgICAgICsrX1VGaXJzdDE7DQoNCiAgICAgICAgICAgICAg
ICBpZiAoX1VGaXJzdDEgPT0gX1VMYXN0MSkgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICBfVURlc3QgPSBfQ29weV91bmNoZWNrZWQoX1VGaXJzdDEsIF9VTGFzdDEsIF9VRGVzdCk7IA0K
ICAgIF9TZWVrX3dyYXBwZWQoX0Rlc3QsIF9Db3B5X3VuY2hlY2tlZChfVUZpcnN0MiwgX1VMYXN0
MiwgX1VEZXN0KSk7DQogICAgcmV0dXJuIF9EZXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
SXQxLCBjbGFzcyBfSW5JdDIsIGNsYXNzIF9PdXRJdD4NCmlubGluZSBfT3V0SXQgbWVyZ2UoX0lu
SXQxIF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEsIF9Jbkl0MiBfRmlyc3QyLCBfSW5JdDIgX0xhc3Qy
LCBfT3V0SXQgX0Rlc3QpIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBtZXJnZShfRmlyc3Qx
LCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0MiwgX0Rlc3QsIGxlc3M8Pnt9KTsNCn0NCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9G
d2RJdDMsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0g
MD4NCl9Gd2RJdDMgbWVyZ2UoX0V4UG8mJiwgX0Z3ZEl0MSBfRmlyc3QxLCBfRndkSXQxIF9MYXN0
MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfRndkSXQyIF9MYXN0MiwgX0Z3ZEl0MyBfRGVzdCwNCiAgICBf
UHIgX1ByZWQpIG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNf
ZndkX2l0ZXJfdjxfRndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJk
IGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRl
cl92PF9Gd2RJdDI+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0
b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3
ZEl0Mz4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Ig
c3Ryb25nZXIuIik7DQogICAgcmV0dXJuIDo6c3RkOjogbWVyZ2UoX0ZpcnN0MSwgX0xhc3QxLCBf
Rmlyc3QyLCBfTGFzdDIsIF9EZXN0LCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9Gd2RJdDMs
IF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQzIG1lcmdl
KF9FeFBvJiYsIF9Gd2RJdDEgX0ZpcnN0MSwgX0Z3ZEl0MSBfTGFzdDEsIF9Gd2RJdDIgX0ZpcnN0
MiwgX0Z3ZEl0MiBfTGFzdDIsIF9Gd2RJdDMgX0Rlc3QpIG5vZXhjZXB0DQogew0KICAgIA0KICAg
IA0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxlbCBh
bGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAg
c3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29yaXRo
bXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNf
YXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdDM+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1
aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6
IG1lcmdlKF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBfRGVzdCk7DQp9DQojbGlu
ZSA2MTg4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGFsZ29yaXRobSINCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdD4N
CnZvaWQgX1JvdGF0ZV9vbmVfcmlnaHQoX0JpZEl0IF9GaXJzdCwgX0JpZEl0IF9NaWQsIF9CaWRJ
dCBfTGFzdCkgew0KICAgIA0KICAgIA0KICAgIF9JdGVyX3ZhbHVlX3Q8X0JpZEl0PiBfVGVtcCg6
OnN0ZDo6IG1vdmUoKl9NaWQpKTsNCiAgICBfTW92ZV9iYWNrd2FyZF91bmNoZWNrZWQoX0ZpcnN0
LCBfTWlkLCBfTGFzdCk7DQogICAgKl9GaXJzdCA9IDo6c3RkOjogbW92ZShfVGVtcCk7DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQ+DQp2b2lkIF9Sb3RhdGVfb25lX2xlZnQoX0JpZEl0IF9G
aXJzdCwgX0JpZEl0IF9NaWQsIF9CaWRJdCBfTGFzdCkgew0KICAgIA0KICAgIA0KICAgIF9JdGVy
X3ZhbHVlX3Q8X0JpZEl0PiBfVGVtcCg6OnN0ZDo6IG1vdmUoKl9GaXJzdCkpOw0KICAgICpfTW92
ZV91bmNoZWNrZWQoX01pZCwgX0xhc3QsIF9GaXJzdCkgPSA6OnN0ZDo6IG1vdmUoX1RlbXApOw0K
fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0LCBjbGFzcyBfUHI+DQp2b2lkIF9JbnBsYWNlX21l
cmdlX2J1ZmZlcl9sZWZ0KA0KICAgIF9CaWRJdCBfRmlyc3QsIF9CaWRJdCBfTWlkLCBfQmlkSXQg
X0xhc3QsIF9JdGVyX3ZhbHVlX3Q8X0JpZEl0PiogY29uc3QgX1RlbXBfcHRyLCBfUHIgX1ByZWQp
IHsNCiAgICANCiAgICANCiAgICB1c2luZyBfUHRyX3R5ID0gX0l0ZXJfdmFsdWVfdDxfQmlkSXQ+
KjsNCiAgICBfVW5pbml0aWFsaXplZF9iYWNrb3V0PF9QdHJfdHk+IF9CYWNrb3V0e19UZW1wX3B0
ciwgX1VuaW5pdGlhbGl6ZWRfbW92ZV91bmNoZWNrZWQoX0ZpcnN0LCBfTWlkLCBfVGVtcF9wdHIp
fTsNCiAgICBfUHRyX3R5IF9MZWZ0X2ZpcnN0ICAgICAgPSBfVGVtcF9wdHI7DQogICAgY29uc3Qg
X1B0cl90eSBfTGVmdF9sYXN0ID0gX0JhY2tvdXQuX0xhc3QgLSAxOyANCiAgICAqX0ZpcnN0ICAg
ICAgICAgICAgICAgICAgPSA6OnN0ZDo6IG1vdmUoKl9NaWQpOyANCiAgICArK19GaXJzdDsNCiAg
ICArK19NaWQ7DQogICAgZm9yICg7Oykgew0KICAgICAgICBpZiAoX1ByZWQoKl9NaWQsICpfTGVm
dF9maXJzdCkpIHsgDQogICAgICAgICAgICAqX0ZpcnN0ID0gOjpzdGQ6OiBtb3ZlKCpfTWlkKTsN
CiAgICAgICAgICAgICsrX0ZpcnN0Ow0KICAgICAgICAgICAgKytfTWlkOw0KICAgICAgICAgICAg
aWYgKF9NaWQgPT0gX0xhc3QpIHsNCiAgICAgICAgICAgICAgICBfTW92ZV91bmNoZWNrZWQoX0xl
ZnRfZmlyc3QsIF9CYWNrb3V0Ll9MYXN0LCBfRmlyc3QpOyANCiAgICAgICAgICAgICAgICByZXR1
cm47DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgKl9GaXJz
dCA9IDo6c3RkOjogbW92ZSgqX0xlZnRfZmlyc3QpOw0KICAgICAgICAgICAgKytfRmlyc3Q7DQog
ICAgICAgICAgICArK19MZWZ0X2ZpcnN0Ow0KICAgICAgICAgICAgaWYgKF9MZWZ0X2ZpcnN0ID09
IF9MZWZ0X2xhc3QpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAqX01vdmVf
dW5jaGVja2VkKF9NaWQsIF9MYXN0LCBfRmlyc3QpID0gOjpzdGQ6OiBtb3ZlKCpfTGVmdF9sYXN0
KTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICB9DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQsIGNsYXNzIF9Qcj4NCnZvaWQgX0lucGxh
Y2VfbWVyZ2VfYnVmZmVyX3JpZ2h0KA0KICAgIF9CaWRJdCBfRmlyc3QsIF9CaWRJdCBfTWlkLCBf
QmlkSXQgX0xhc3QsIF9JdGVyX3ZhbHVlX3Q8X0JpZEl0PiogY29uc3QgX1RlbXBfcHRyLCBfUHIg
X1ByZWQpIHsNCiAgICANCiAgICANCiAgICB1c2luZyBfUHRyX3R5ID0gX0l0ZXJfdmFsdWVfdDxf
QmlkSXQ+KjsNCiAgICBfVW5pbml0aWFsaXplZF9iYWNrb3V0PF9QdHJfdHk+IF9CYWNrb3V0e19U
ZW1wX3B0ciwgX1VuaW5pdGlhbGl6ZWRfbW92ZV91bmNoZWNrZWQoX01pZCwgX0xhc3QsIF9UZW1w
X3B0cil9Ow0KICAgICotLV9MYXN0ICAgICAgICAgICAgICAgICAgID0gOjpzdGQ6OiBtb3ZlKCot
LV9NaWQpOyANCiAgICBjb25zdCBfUHRyX3R5IF9SaWdodF9maXJzdCA9IF9UZW1wX3B0cjsNCiAg
ICBfUHRyX3R5IF9SaWdodF9sYXN0ICAgICAgICA9IF9CYWNrb3V0Ll9MYXN0IC0gMTsNCiAgICAt
LV9NaWQ7DQogICAgZm9yICg7Oykgew0KICAgICAgICBpZiAoX1ByZWQoKl9SaWdodF9sYXN0LCAq
X01pZCkpIHsgDQogICAgICAgICAgICAqLS1fTGFzdCA9IDo6c3RkOjogbW92ZSgqX01pZCk7DQog
ICAgICAgICAgICBpZiAoX0ZpcnN0ID09IF9NaWQpIHsNCiAgICAgICAgICAgICAgICAqLS1fTGFz
dCA9IDo6c3RkOjogbW92ZSgqX1JpZ2h0X2xhc3QpOyANCiAgICAgICAgICAgICAgICBfTW92ZV9i
YWNrd2FyZF91bmNoZWNrZWQoX1JpZ2h0X2ZpcnN0LCBfUmlnaHRfbGFzdCwgX0xhc3QpOyANCiAg
ICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC0tX01p
ZDsNCiAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAgICAqLS1fTGFzdCA9IDo6c3RkOjogbW92
ZSgqX1JpZ2h0X2xhc3QpOw0KICAgICAgICAgICAgLS1fUmlnaHRfbGFzdDsNCiAgICAgICAgICAg
IGlmIChfUmlnaHRfZmlyc3QgPT0gX1JpZ2h0X2xhc3QpIHsgDQogICAgICAgICAgICAgICAgKi0t
X0xhc3QgPSA6OnN0ZDo6IG1vdmUoKl9NaWQpOyANCiAgICAgICAgICAgICAgICBfTW92ZV9iYWNr
d2FyZF91bmNoZWNrZWQoX0ZpcnN0LCBfTWlkLCBfTGFzdCk7DQogICAgICAgICAgICAgICAgKl9G
aXJzdCA9IDo6c3RkOjogbW92ZSgqX1JpZ2h0X2ZpcnN0KTsNCiAgICAgICAgICAgICAgICByZXR1
cm47DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9DQoNCnRlbXBsYXRlIDxjbGFz
cyBfQmlkSXQsIGNsYXNzIF9Qcj4NCnZvaWQgX0J1ZmZlcmVkX2lucGxhY2VfbWVyZ2VfdW5jaGVj
a2VkKF9CaWRJdCBfRmlyc3QsIF9CaWRJdCBfTWlkLCBfQmlkSXQgX0xhc3QsIF9JdGVyX2RpZmZf
dDxfQmlkSXQ+IF9Db3VudDEsDQogICAgX0l0ZXJfZGlmZl90PF9CaWRJdD4gX0NvdW50MiwgX0l0
ZXJfdmFsdWVfdDxfQmlkSXQ+KiBjb25zdCBfVGVtcF9wdHIsIGNvbnN0IHB0cmRpZmZfdCBfQ2Fw
YWNpdHksIF9QciBfUHJlZCk7DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQsIGNsYXNzIF9Qcj4N
CnZvaWQgX0J1ZmZlcmVkX2lucGxhY2VfbWVyZ2VfZGl2aWRlX2FuZF9jb25xdWVyMihfQmlkSXQg
X0ZpcnN0LCBfQmlkSXQgX01pZCwgX0JpZEl0IF9MYXN0LCBfSXRlcl9kaWZmX3Q8X0JpZEl0PiBf
Q291bnQxLA0KICAgIF9JdGVyX2RpZmZfdDxfQmlkSXQ+IF9Db3VudDIsIF9JdGVyX3ZhbHVlX3Q8
X0JpZEl0PiogY29uc3QgX1RlbXBfcHRyLCBjb25zdCBwdHJkaWZmX3QgX0NhcGFjaXR5LCBfUHIg
X1ByZWQsDQogICAgX0JpZEl0IF9GaXJzdG4sIF9CaWRJdCBfTGFzdG4sIF9JdGVyX2RpZmZfdDxf
QmlkSXQ+IF9Db3VudDFuLCBfSXRlcl9kaWZmX3Q8X0JpZEl0PiBfQ291bnQybikgew0KICAgIA0K
ICAgIHVzaW5nIF9EaWZmICA9IF9JdGVyX2RpZmZfdDxfQmlkSXQ+Ow0KICAgIF9CaWRJdCBfTWlk
biA9IF9CdWZmZXJlZF9yb3RhdGVfdW5jaGVja2VkKF9GaXJzdG4sIF9NaWQsIF9MYXN0biwgc3Rh
dGljX2Nhc3Q8X0RpZmY+KF9Db3VudDEgLSBfQ291bnQxbiksIF9Db3VudDJuLA0KICAgICAgICBf
VGVtcF9wdHIsIF9DYXBhY2l0eSk7IA0KICAgIF9CdWZmZXJlZF9pbnBsYWNlX21lcmdlX3VuY2hl
Y2tlZCgNCiAgICAgICAgX0ZpcnN0LCBfRmlyc3RuLCBfTWlkbiwgX0NvdW50MW4sIF9Db3VudDJu
LCBfVGVtcF9wdHIsIF9DYXBhY2l0eSwgX1ByZWQpOyANCiAgICBfQnVmZmVyZWRfaW5wbGFjZV9t
ZXJnZV91bmNoZWNrZWQoX01pZG4sIF9MYXN0biwgX0xhc3QsIHN0YXRpY19jYXN0PF9EaWZmPihf
Q291bnQxIC0gX0NvdW50MW4pLA0KICAgICAgICBzdGF0aWNfY2FzdDxfRGlmZj4oX0NvdW50MiAt
IF9Db3VudDJuKSwgX1RlbXBfcHRyLCBfQ2FwYWNpdHksIF9QcmVkKTsNCn0NCg0KdGVtcGxhdGUg
PGNsYXNzIF9CaWRJdCwgY2xhc3MgX1ByPg0Kdm9pZCBfQnVmZmVyZWRfaW5wbGFjZV9tZXJnZV9k
aXZpZGVfYW5kX2NvbnF1ZXIoX0JpZEl0IF9GaXJzdCwgX0JpZEl0IF9NaWQsIF9CaWRJdCBfTGFz
dCwgX0l0ZXJfZGlmZl90PF9CaWRJdD4gX0NvdW50MSwNCiAgICBfSXRlcl9kaWZmX3Q8X0JpZEl0
PiBfQ291bnQyLCBfSXRlcl92YWx1ZV90PF9CaWRJdD4qIGNvbnN0IF9UZW1wX3B0ciwgY29uc3Qg
cHRyZGlmZl90IF9DYXBhY2l0eSwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgDQogICAgdXNpbmcg
X0RpZmYgPSBfSXRlcl9kaWZmX3Q8X0JpZEl0PjsNCiAgICBpZiAoX0NvdW50MSA8PSBfQ291bnQy
KSB7DQogICAgICAgIGNvbnN0IF9EaWZmIF9Db3VudDFuID0gX0NvdW50MSA+PiAxOyANCiAgICAg
ICAgY29uc3QgX0JpZEl0IF9GaXJzdG4gPSA6OnN0ZDo6IG5leHQoX0ZpcnN0LCBfQ291bnQxbik7
DQogICAgICAgIGNvbnN0IF9CaWRJdCBfTGFzdG4gID0gOjpzdGQ6OiBsb3dlcl9ib3VuZChfTWlk
LCBfTGFzdCwgKl9GaXJzdG4sIF9QcmVkKTsNCiAgICAgICAgX0J1ZmZlcmVkX2lucGxhY2VfbWVy
Z2VfZGl2aWRlX2FuZF9jb25xdWVyMihfRmlyc3QsIF9NaWQsIF9MYXN0LCBfQ291bnQxLCBfQ291
bnQyLCBfVGVtcF9wdHIsIF9DYXBhY2l0eSwgX1ByZWQsDQogICAgICAgICAgICBfRmlyc3RuLCBf
TGFzdG4sIF9Db3VudDFuLCA6OnN0ZDo6IGRpc3RhbmNlKF9NaWQsIF9MYXN0bikpOw0KICAgIH0g
ZWxzZSB7DQogICAgICAgIGNvbnN0IF9EaWZmIF9Db3VudDJuID0gX0NvdW50MiA+PiAxOyANCiAg
ICAgICAgY29uc3QgX0JpZEl0IF9MYXN0biAgPSA6OnN0ZDo6IG5leHQoX01pZCwgX0NvdW50Mm4p
Ow0KICAgICAgICBjb25zdCBfQmlkSXQgX0ZpcnN0biA9IDo6c3RkOjogdXBwZXJfYm91bmQoX0Zp
cnN0LCBfTWlkLCAqX0xhc3RuLCBfUHJlZCk7DQogICAgICAgIF9CdWZmZXJlZF9pbnBsYWNlX21l
cmdlX2RpdmlkZV9hbmRfY29ucXVlcjIoX0ZpcnN0LCBfTWlkLCBfTGFzdCwgX0NvdW50MSwgX0Nv
dW50MiwgX1RlbXBfcHRyLCBfQ2FwYWNpdHksIF9QcmVkLA0KICAgICAgICAgICAgX0ZpcnN0biwg
X0xhc3RuLCA6OnN0ZDo6IGRpc3RhbmNlKF9GaXJzdCwgX0ZpcnN0biksIF9Db3VudDJuKTsNCiAg
ICB9DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQsIGNsYXNzIF9Qcj4NCnZvaWQgX0J1ZmZl
cmVkX2lucGxhY2VfbWVyZ2VfdW5jaGVja2VkX2ltcGwoX0JpZEl0IF9GaXJzdCwgX0JpZEl0IF9N
aWQsIF9CaWRJdCBfTGFzdCwgX0l0ZXJfZGlmZl90PF9CaWRJdD4gX0NvdW50MSwNCiAgICBfSXRl
cl9kaWZmX3Q8X0JpZEl0PiBfQ291bnQyLCBfSXRlcl92YWx1ZV90PF9CaWRJdD4qIGNvbnN0IF9U
ZW1wX3B0ciwgY29uc3QgcHRyZGlmZl90IF9DYXBhY2l0eSwgX1ByIF9QcmVkKSB7DQogICAgDQog
ICAgDQogICAgaWYgKF9Db3VudDEgPD0gX0NvdW50MiAmJiBfQ291bnQxIDw9IF9DYXBhY2l0eSkg
ew0KICAgICAgICBfSW5wbGFjZV9tZXJnZV9idWZmZXJfbGVmdChfRmlyc3QsIF9NaWQsIF9MYXN0
LCBfVGVtcF9wdHIsIF9QcmVkKTsNCiAgICB9IGVsc2UgaWYgKF9Db3VudDIgPD0gX0NhcGFjaXR5
KSB7DQogICAgICAgIF9JbnBsYWNlX21lcmdlX2J1ZmZlcl9yaWdodChfRmlyc3QsIF9NaWQsIF9M
YXN0LCBfVGVtcF9wdHIsIF9QcmVkKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBfQnVmZmVyZWRf
aW5wbGFjZV9tZXJnZV9kaXZpZGVfYW5kX2NvbnF1ZXIoX0ZpcnN0LCBfTWlkLCBfTGFzdCwgX0Nv
dW50MSwgX0NvdW50MiwgX1RlbXBfcHRyLCBfQ2FwYWNpdHksIF9QcmVkKTsNCiAgICB9DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQsIGNsYXNzIF9Qcj4NCnZvaWQgX0J1ZmZlcmVkX2lucGxh
Y2VfbWVyZ2VfdW5jaGVja2VkKF9CaWRJdCBfRmlyc3QsIF9CaWRJdCBfTWlkLCBfQmlkSXQgX0xh
c3QsIF9JdGVyX2RpZmZfdDxfQmlkSXQ+IF9Db3VudDEsDQogICAgX0l0ZXJfZGlmZl90PF9CaWRJ
dD4gX0NvdW50MiwgX0l0ZXJfdmFsdWVfdDxfQmlkSXQ+KiBjb25zdCBfVGVtcF9wdHIsIGNvbnN0
IHB0cmRpZmZfdCBfQ2FwYWNpdHksIF9QciBfUHJlZCkgew0KICAgIA0KICAgIA0KICAgIA0KICAg
IGlmIChfTWlkID09IF9MYXN0KSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBmb3Ig
KDs7KSB7DQogICAgICAgIGlmIChfRmlyc3QgPT0gX01pZCkgew0KICAgICAgICAgICAgcmV0dXJu
Ow0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9QcmVkKCpfTWlkLCAqX0ZpcnN0KSkgew0KICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCg0KICAgICAgICArK19GaXJzdDsNCiAgICAgICAg
LS1fQ291bnQxOw0KICAgIH0NCg0KICAgIGNvbnN0IGF1dG8gX0hpZ2hlc3QgPSBfUHJldl9pdGVy
KF9NaWQpOw0KICAgIGRvIHsNCiAgICAgICAgLS1fTGFzdDsNCiAgICAgICAgLS1fQ291bnQyOw0K
ICAgICAgICBpZiAoX01pZCA9PSBfTGFzdCkgew0KICAgICAgICAgICAgX1JvdGF0ZV9vbmVfcmln
aHQoX0ZpcnN0LCBfTWlkLCArK19MYXN0KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAg
fQ0KICAgIH0gd2hpbGUgKCFfUHJlZCgqX0xhc3QsICpfSGlnaGVzdCkpOw0KDQogICAgKytfTGFz
dDsNCiAgICArK19Db3VudDI7DQoNCiAgICBpZiAoX0NvdW50MSA9PSAxKSB7DQogICAgICAgIF9S
b3RhdGVfb25lX2xlZnQoX0ZpcnN0LCBfTWlkLCBfTGFzdCk7DQogICAgICAgIHJldHVybjsNCiAg
ICB9DQoNCiAgICBfQnVmZmVyZWRfaW5wbGFjZV9tZXJnZV91bmNoZWNrZWRfaW1wbChfRmlyc3Qs
IF9NaWQsIF9MYXN0LCBfQ291bnQxLCBfQ291bnQyLCBfVGVtcF9wdHIsIF9DYXBhY2l0eSwgX1By
ZWQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0LCBjbGFzcyBfUHI+DQp2b2lkIGlucGxh
Y2VfbWVyZ2UoX0JpZEl0IF9GaXJzdCwgX0JpZEl0IF9NaWQsIF9CaWRJdCBfTGFzdCwgX1ByIF9Q
cmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTWlkKTsNCiAgICBf
QWRsX3ZlcmlmeV9yYW5nZShfTWlkLCBfTGFzdCk7DQogICAgYXV0byBfVUZpcnN0ID0gX0dldF91
bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBhdXRvIF9VTWlkICAgPSBfR2V0X3Vud3JhcHBlZChfTWlk
KTsNCiAgICBhdXRvIF9VTGFzdCAgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgOw0KDQog
ICAgDQogICAgaWYgKF9VTWlkID09IF9VTGFzdCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0K
DQogICAgZm9yICg7Oykgew0KICAgICAgICBpZiAoX1VGaXJzdCA9PSBfVU1pZCkgew0KICAgICAg
ICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9QcmVkKCpfVU1pZCwgKl9V
Rmlyc3QpKSB7IA0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCg0KICAgICAgICArK19V
Rmlyc3Q7DQogICAgfQ0KDQogICAgY29uc3QgYXV0byBfSGlnaGVzdCA9IF9QcmV2X2l0ZXIoX1VN
aWQpOw0KICAgIGRvIHsNCiAgICAgICAgLS1fVUxhc3Q7DQogICAgICAgIGlmIChfVU1pZCA9PSBf
VUxhc3QpIHsgDQogICAgICAgICAgICBfUm90YXRlX29uZV9yaWdodChfVUZpcnN0LCBfVU1pZCwg
KytfVUxhc3QpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgfSB3aGlsZSAo
IV9QcmVkKCpfVUxhc3QsICpfSGlnaGVzdCkpOyANCg0KICAgICsrX1VMYXN0Ow0KDQogICAgdXNp
bmcgX0RpZmYgICAgICAgICA9IF9JdGVyX2RpZmZfdDxfQmlkSXQ+Ow0KICAgIGNvbnN0IF9EaWZm
IF9Db3VudDEgPSA6OnN0ZDo6IGRpc3RhbmNlKF9VRmlyc3QsIF9VTWlkKTsNCiAgICBpZiAoX0Nv
dW50MSA9PSAxKSB7IA0KICAgICAgICBfUm90YXRlX29uZV9sZWZ0KF9VRmlyc3QsIF9VTWlkLCBf
VUxhc3QpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KDQogICAgY29uc3QgX0RpZmYgX0NvdW50
MiA9IDo6c3RkOjogZGlzdGFuY2UoX1VNaWQsIF9VTGFzdCk7DQogICAgX09wdGltaXN0aWNfdGVt
cG9yYXJ5X2J1ZmZlcjxfSXRlcl92YWx1ZV90PF9CaWRJdD4+IF9UZW1wX2J1ZnsoOjpzdGQ6OiBt
aW4pKF9Db3VudDEsIF9Db3VudDIpfTsNCiAgICBfQnVmZmVyZWRfaW5wbGFjZV9tZXJnZV91bmNo
ZWNrZWRfaW1wbCgNCiAgICAgICAgX1VGaXJzdCwgX1VNaWQsIF9VTGFzdCwgX0NvdW50MSwgX0Nv
dW50MiwgX1RlbXBfYnVmLl9EYXRhLCBfVGVtcF9idWYuX0NhcGFjaXR5LCBfUGFzc19mbihfUHJl
ZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0Pg0Kdm9pZCBpbnBsYWNlX21lcmdlKF9C
aWRJdCBfRmlyc3QsIF9CaWRJdCBfTWlkLCBfQmlkSXQgX0xhc3QpIHsNCiAgICANCiAgICA6OnN0
ZDo6IGlucGxhY2VfbWVyZ2UoX0ZpcnN0LCBfTWlkLCBfTGFzdCwgbGVzczw+e30pOw0KfQ0KDQoN
CnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0JpZEl0LCBjbGFzcyBfUHIsIF9FbmFibGVf
aWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQp2b2lkIGlucGxhY2VfbWVyZ2UoX0V4
UG8mJiwgX0JpZEl0IF9GaXJzdCwgX0JpZEl0IF9NaWQsIF9CaWRJdCBfTGFzdCwgX1ByIF9QcmVk
KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIDo6c3RkOjogaW5wbGFjZV9tZXJnZShfRmly
c3QsIF9NaWQsIF9MYXN0LCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0V4UG8sIGNsYXNzIF9CaWRJdCwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+
ID0gMD4NCnZvaWQgaW5wbGFjZV9tZXJnZShfRXhQbyYmLCBfQmlkSXQgX0ZpcnN0LCBfQmlkSXQg
X01pZCwgX0JpZEl0IF9MYXN0KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIDo6c3RkOjog
aW5wbGFjZV9tZXJnZShfRmlyc3QsIF9NaWQsIF9MYXN0KTsNCn0NCiNsaW5lIDY0NTIgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQsIGNsYXNzIF9Qcj4NCmlubGluZSBfQmlkSXQgX0lu
c2VydGlvbl9zb3J0X3VuY2hlY2tlZChfQmlkSXQgX0ZpcnN0LCBjb25zdCBfQmlkSXQgX0xhc3Qs
IF9QciBfUHJlZCkgew0KICAgIA0KICAgIGlmIChfRmlyc3QgIT0gX0xhc3QpIHsNCiAgICAgICAg
Zm9yIChfQmlkSXQgX05leHQgPSBfRmlyc3Q7ICsrX05leHQgIT0gX0xhc3Q7KSB7IA0KICAgICAg
ICAgICAgX0JpZEl0IF9OZXh0MSAgICAgICAgICAgICAgPSBfTmV4dDsNCiAgICAgICAgICAgIF9J
dGVyX3ZhbHVlX3Q8X0JpZEl0PiBfVmFsID0gOjpzdGQ6OiBtb3ZlKCpfTmV4dCk7DQoNCiAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZChfVmFsLCAqX0ZpcnN0KSkpIHsgDQog
ICAgICAgICAgICAgICAgX01vdmVfYmFja3dhcmRfdW5jaGVja2VkKF9GaXJzdCwgX05leHQsICsr
X05leHQxKTsNCiAgICAgICAgICAgICAgICAqX0ZpcnN0ID0gOjpzdGQ6OiBtb3ZlKF9WYWwpOw0K
ICAgICAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAgICAgICAgZm9yIChfQmlkSXQgX0ZpcnN0
MSA9IF9OZXh0MTsgc3RhdGljX2Nhc3Q8Ym9vbD4oX1ByZWQoX1ZhbCwgKi0tX0ZpcnN0MSkpOyBf
TmV4dDEgPSBfRmlyc3QxKSB7DQogICAgICAgICAgICAgICAgICAgICpfTmV4dDEgPSA6OnN0ZDo6
IG1vdmUoKl9GaXJzdDEpOyANCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAq
X05leHQxID0gOjpzdGQ6OiBtb3ZlKF9WYWwpOyANCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIHJldHVybiBfTGFzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9SYW5JdCwg
Y2xhc3MgX1ByPg0KaW5saW5lIHZvaWQgX01lZDNfdW5jaGVja2VkKF9SYW5JdCBfRmlyc3QsIF9S
YW5JdCBfTWlkLCBfUmFuSXQgX0xhc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIGlmIChzdGF0
aWNfY2FzdDxib29sPihfUHJlZCgqX01pZCwgKl9GaXJzdCkpKSB7DQogICAgICAgIDo6c3RkOjog
aXRlcl9zd2FwKF9NaWQsIF9GaXJzdCk7DQogICAgfQ0KDQogICAgaWYgKHN0YXRpY19jYXN0PGJv
b2w+KF9QcmVkKCpfTGFzdCwgKl9NaWQpKSkgeyANCiAgICAgICAgOjpzdGQ6OiBpdGVyX3N3YXAo
X0xhc3QsIF9NaWQpOw0KDQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX01p
ZCwgKl9GaXJzdCkpKSB7DQogICAgICAgICAgICA6OnN0ZDo6IGl0ZXJfc3dhcChfTWlkLCBfRmly
c3QpOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0LCBjbGFz
cyBfUHI+DQppbmxpbmUgdm9pZCBfR3Vlc3NfbWVkaWFuX3VuY2hlY2tlZChfUmFuSXQgX0ZpcnN0
LCBfUmFuSXQgX01pZCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICB1c2lu
ZyBfRGlmZiAgICAgICAgPSBfSXRlcl9kaWZmX3Q8X1Jhbkl0PjsNCiAgICBjb25zdCBfRGlmZiBf
Q291bnQgPSBfTGFzdCAtIF9GaXJzdDsNCiAgICBpZiAoNDAgPCBfQ291bnQpIHsgDQogICAgICAg
IGNvbnN0IF9EaWZmIF9TdGVwICAgICA9IChfQ291bnQgKyAxKSA+PiAzOyANCiAgICAgICAgY29u
c3QgX0RpZmYgX1R3b19zdGVwID0gX1N0ZXAgPDwgMTsgDQogICAgICAgIF9NZWQzX3VuY2hlY2tl
ZChfRmlyc3QsIF9GaXJzdCArIF9TdGVwLCBfRmlyc3QgKyBfVHdvX3N0ZXAsIF9QcmVkKTsNCiAg
ICAgICAgX01lZDNfdW5jaGVja2VkKF9NaWQgLSBfU3RlcCwgX01pZCwgX01pZCArIF9TdGVwLCBf
UHJlZCk7DQogICAgICAgIF9NZWQzX3VuY2hlY2tlZChfTGFzdCAtIF9Ud29fc3RlcCwgX0xhc3Qg
LSBfU3RlcCwgX0xhc3QsIF9QcmVkKTsNCiAgICAgICAgX01lZDNfdW5jaGVja2VkKF9GaXJzdCAr
IF9TdGVwLCBfTWlkLCBfTGFzdCAtIF9TdGVwLCBfUHJlZCk7DQogICAgfSBlbHNlIHsNCiAgICAg
ICAgX01lZDNfdW5jaGVja2VkKF9GaXJzdCwgX01pZCwgX0xhc3QsIF9QcmVkKTsNCiAgICB9DQp9
DQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXQsIGNsYXNzIF9Qcj4NCmlubGluZSBwYWlyPF9SYW5J
dCwgX1Jhbkl0PiBfUGFydGl0aW9uX2J5X21lZGlhbl9ndWVzc191bmNoZWNrZWQoX1Jhbkl0IF9G
aXJzdCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfUmFuSXQgX01pZCA9
IF9GaXJzdCArICgoX0xhc3QgLSBfRmlyc3QpID4+IDEpOyANCiAgICBfR3Vlc3NfbWVkaWFuX3Vu
Y2hlY2tlZChfRmlyc3QsIF9NaWQsIF9QcmV2X2l0ZXIoX0xhc3QpLCBfUHJlZCk7DQogICAgX1Jh
bkl0IF9QZmlyc3QgPSBfTWlkOw0KICAgIF9SYW5JdCBfUGxhc3QgID0gX05leHRfaXRlcihfUGZp
cnN0KTsNCg0KICAgIHdoaWxlIChfRmlyc3QgPCBfUGZpcnN0ICYmICFzdGF0aWNfY2FzdDxib29s
PihfUHJlZCgqX1ByZXZfaXRlcihfUGZpcnN0KSwgKl9QZmlyc3QpKQ0KICAgICAgICAgICAmJiAh
X1ByZWQoKl9QZmlyc3QsICpfUHJldl9pdGVyKF9QZmlyc3QpKSkgew0KICAgICAgICAtLV9QZmly
c3Q7DQogICAgfQ0KDQogICAgd2hpbGUgKF9QbGFzdCA8IF9MYXN0ICYmICFzdGF0aWNfY2FzdDxi
b29sPihfUHJlZCgqX1BsYXN0LCAqX1BmaXJzdCkpICYmICFfUHJlZCgqX1BmaXJzdCwgKl9QbGFz
dCkpIHsNCiAgICAgICAgKytfUGxhc3Q7DQogICAgfQ0KDQogICAgX1Jhbkl0IF9HZmlyc3QgPSBf
UGxhc3Q7DQogICAgX1Jhbkl0IF9HbGFzdCAgPSBfUGZpcnN0Ow0KDQogICAgZm9yICg7OykgeyAN
CiAgICAgICAgZm9yICg7IF9HZmlyc3QgPCBfTGFzdDsgKytfR2ZpcnN0KSB7DQogICAgICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oX1ByZWQoKl9QZmlyc3QsICpfR2ZpcnN0KSkpIHsNCiAg
ICAgICAgICAgIH0gZWxzZSBpZiAoX1ByZWQoKl9HZmlyc3QsICpfUGZpcnN0KSkgew0KICAgICAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChfUGxhc3QgIT0gX0dmaXJz
dCkgew0KICAgICAgICAgICAgICAgIDo6c3RkOjogaXRlcl9zd2FwKF9QbGFzdCwgX0dmaXJzdCk7
DQogICAgICAgICAgICAgICAgKytfUGxhc3Q7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgICAgICsrX1BsYXN0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAg
Zm9yICg7IF9GaXJzdCA8IF9HbGFzdDsgLS1fR2xhc3QpIHsNCiAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxib29sPihfUHJlZCgqX1ByZXZfaXRlcihfR2xhc3QpLCAqX1BmaXJzdCkpKSB7DQog
ICAgICAgICAgICB9IGVsc2UgaWYgKF9QcmVkKCpfUGZpcnN0LCAqX1ByZXZfaXRlcihfR2xhc3Qp
KSkgew0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfSBlbHNlIGlmICgtLV9Q
Zmlyc3QgIT0gX1ByZXZfaXRlcihfR2xhc3QpKSB7DQogICAgICAgICAgICAgICAgOjpzdGQ6OiBp
dGVyX3N3YXAoX1BmaXJzdCwgX1ByZXZfaXRlcihfR2xhc3QpKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KDQogICAgICAgIGlmIChfR2xhc3QgPT0gX0ZpcnN0ICYmIF9HZmlyc3QgPT0gX0xh
c3QpIHsNCiAgICAgICAgICAgIHJldHVybiBwYWlyPF9SYW5JdCwgX1Jhbkl0PihfUGZpcnN0LCBf
UGxhc3QpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9HbGFzdCA9PSBfRmlyc3QpIHsgDQog
ICAgICAgICAgICBpZiAoX1BsYXN0ICE9IF9HZmlyc3QpIHsNCiAgICAgICAgICAgICAgICA6OnN0
ZDo6IGl0ZXJfc3dhcChfUGZpcnN0LCBfUGxhc3QpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICArK19QbGFzdDsNCiAgICAgICAgICAgIDo6c3RkOjogaXRlcl9zd2FwKF9QZmlyc3QsIF9H
Zmlyc3QpOw0KICAgICAgICAgICAgKytfUGZpcnN0Ow0KICAgICAgICAgICAgKytfR2ZpcnN0Ow0K
ICAgICAgICB9IGVsc2UgaWYgKF9HZmlyc3QgPT0gX0xhc3QpIHsgDQogICAgICAgICAgICBpZiAo
LS1fR2xhc3QgIT0gLS1fUGZpcnN0KSB7DQogICAgICAgICAgICAgICAgOjpzdGQ6OiBpdGVyX3N3
YXAoX0dsYXN0LCBfUGZpcnN0KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgOjpzdGQ6
OiBpdGVyX3N3YXAoX1BmaXJzdCwgLS1fUGxhc3QpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgOjpzdGQ6OiBpdGVyX3N3YXAoX0dmaXJzdCwgLS1fR2xhc3QpOw0KICAgICAgICAgICAg
KytfR2ZpcnN0Ow0KICAgICAgICB9DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0
LCBjbGFzcyBfUHI+DQppbmxpbmUgdm9pZCBfU29ydF91bmNoZWNrZWQoX1Jhbkl0IF9GaXJzdCwg
X1Jhbkl0IF9MYXN0LCBfSXRlcl9kaWZmX3Q8X1Jhbkl0PiBfSWRlYWwsIF9QciBfUHJlZCkgew0K
ICAgIA0KICAgIGZvciAoOzspIHsNCiAgICAgICAgaWYgKF9MYXN0IC0gX0ZpcnN0IDw9IF9JU09S
VF9NQVgpIHsgDQogICAgICAgICAgICBfSW5zZXJ0aW9uX3NvcnRfdW5jaGVja2VkKF9GaXJzdCwg
X0xhc3QsIF9QcmVkKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAg
IGlmIChfSWRlYWwgPD0gMCkgeyANCiAgICAgICAgICAgIF9NYWtlX2hlYXBfdW5jaGVja2VkKF9G
aXJzdCwgX0xhc3QsIF9QcmVkKTsNCiAgICAgICAgICAgIF9Tb3J0X2hlYXBfdW5jaGVja2VkKF9G
aXJzdCwgX0xhc3QsIF9QcmVkKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQog
ICAgICAgIA0KICAgICAgICBhdXRvIF9NaWQgPSBfUGFydGl0aW9uX2J5X21lZGlhbl9ndWVzc191
bmNoZWNrZWQoX0ZpcnN0LCBfTGFzdCwgX1ByZWQpOw0KDQogICAgICAgIF9JZGVhbCA9IChfSWRl
YWwgPj4gMSkgKyAoX0lkZWFsID4+IDIpOyANCg0KICAgICAgICBpZiAoX01pZC5maXJzdCAtIF9G
aXJzdCA8IF9MYXN0IC0gX01pZC5zZWNvbmQpIHsgDQogICAgICAgICAgICBfU29ydF91bmNoZWNr
ZWQoX0ZpcnN0LCBfTWlkLmZpcnN0LCBfSWRlYWwsIF9QcmVkKTsNCiAgICAgICAgICAgIF9GaXJz
dCA9IF9NaWQuc2Vjb25kOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIF9Tb3J0X3Vu
Y2hlY2tlZChfTWlkLnNlY29uZCwgX0xhc3QsIF9JZGVhbCwgX1ByZWQpOw0KICAgICAgICAgICAg
X0xhc3QgPSBfTWlkLmZpcnN0Ow0KICAgICAgICB9DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1Jhbkl0LCBjbGFzcyBfUHI+DQppbmxpbmUgdm9pZCBzb3J0KGNvbnN0IF9SYW5JdCBfRmly
c3QsIGNvbnN0IF9SYW5JdCBfTGFzdCwgX1ByIF9QcmVkKSB7IA0KICAgIF9BZGxfdmVyaWZ5X3Jh
bmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGNvbnN0IGF1dG8gX1VGaXJzdCA9IF9HZXRfdW53cmFw
cGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgID0gX0dldF91bndyYXBwZWQoX0xh
c3QpOw0KICAgIF9Tb3J0X3VuY2hlY2tlZChfVUZpcnN0LCBfVUxhc3QsIF9VTGFzdCAtIF9VRmly
c3QsIF9QYXNzX2ZuKF9QcmVkKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXQ+DQppbmxp
bmUgdm9pZCBzb3J0KGNvbnN0IF9SYW5JdCBfRmlyc3QsIGNvbnN0IF9SYW5JdCBfTGFzdCkgeyAN
CiAgICA6OnN0ZDo6IHNvcnQoX0ZpcnN0LCBfTGFzdCwgbGVzczw+e30pOw0KfQ0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX1Jhbkl0LCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhl
Y3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQp2b2lkIHNvcnQoX0V4UG8mJiBfRXhlYywgX1Jh
bkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0OyANCg0KdGVtcGxh
dGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfUmFuSXQsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGlj
eV90PF9FeFBvPiA9IDA+DQp2b2lkIHNvcnQoX0V4UG8mJiBfRXhlYywgY29uc3QgX1Jhbkl0IF9G
aXJzdCwgY29uc3QgX1Jhbkl0IF9MYXN0KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIDo6c3RkOjog
c29ydCg6OnN0ZDo6IGZvcndhcmQ8X0V4UG8+KF9FeGVjKSwgX0ZpcnN0LCBfTGFzdCwgbGVzc3t9
KTsNCn0NCiNsaW5lIDY2MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQsIGNsYXNz
IF9UeSwgY2xhc3MgX1ByPg0KX1R5KiBfVW5pbml0aWFsaXplZF9tZXJnZV9tb3ZlKF9Gd2RJdCBf
Rmlyc3QsIGNvbnN0IF9Gd2RJdCBfTWlkLCBjb25zdCBfRndkSXQgX0xhc3QsIF9UeSogY29uc3Qg
X0Rlc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIA0KICAgIF9VbmluaXRpYWxpemVkX2JhY2tv
dXQ8X1R5Kj4gX0JhY2tvdXR7X0Rlc3R9Ow0KICAgIF9Gd2RJdCBfTmV4dCA9IF9NaWQ7DQogICAg
Zm9yICg7Oykgew0KICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oX1ByZWQoKl9OZXh0LCAq
X0ZpcnN0KSkpIHsNCiAgICAgICAgICAgIF9CYWNrb3V0Ll9FbXBsYWNlX2JhY2soOjpzdGQ6OiBt
b3ZlKCpfTmV4dCkpOw0KICAgICAgICAgICAgKytfTmV4dDsNCg0KICAgICAgICAgICAgaWYgKF9O
ZXh0ID09IF9MYXN0KSB7DQogICAgICAgICAgICAgICAgX0JhY2tvdXQuX0xhc3QgPSBfVW5pbml0
aWFsaXplZF9tb3ZlX3VuY2hlY2tlZChfRmlyc3QsIF9NaWQsIF9CYWNrb3V0Ll9MYXN0KTsNCiAg
ICAgICAgICAgICAgICByZXR1cm4gX0JhY2tvdXQuX1JlbGVhc2UoKTsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9CYWNrb3V0Ll9FbXBsYWNlX2JhY2soOjpz
dGQ6OiBtb3ZlKCpfRmlyc3QpKTsNCiAgICAgICAgICAgICsrX0ZpcnN0Ow0KDQogICAgICAgICAg
ICBpZiAoX0ZpcnN0ID09IF9NaWQpIHsNCiAgICAgICAgICAgICAgICBfQmFja291dC5fTGFzdCA9
IF9VbmluaXRpYWxpemVkX21vdmVfdW5jaGVja2VkKF9OZXh0LCBfTGFzdCwgX0JhY2tvdXQuX0xh
c3QpOw0KICAgICAgICAgICAgICAgIHJldHVybiBfQmFja291dC5fUmVsZWFzZSgpOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQsIGNs
YXNzIF9PdXRJdCwgY2xhc3MgX1ByPg0KX091dEl0IF9NZXJnZV9tb3ZlKF9Jbkl0IF9GaXJzdCwg
Y29uc3QgX0luSXQgX01pZCwgY29uc3QgX0luSXQgX0xhc3QsIF9PdXRJdCBfRGVzdCwgX1ByIF9Q
cmVkKSB7DQogICAgDQogICAgDQogICAgX0luSXQgX05leHQgPSBfTWlkOw0KICAgIGZvciAoOzsp
IHsNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpfTmV4dCwgKl9GaXJzdCkp
KSB7DQogICAgICAgICAgICAqX0Rlc3QgPSA6OnN0ZDo6IG1vdmUoKl9OZXh0KTsNCiAgICAgICAg
ICAgICsrX0Rlc3Q7DQogICAgICAgICAgICArK19OZXh0Ow0KDQogICAgICAgICAgICBpZiAoX05l
eHQgPT0gX0xhc3QpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX01vdmVfdW5jaGVja2VkKF9G
aXJzdCwgX01pZCwgX0Rlc3QpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAg
ICAgICAgICAgKl9EZXN0ID0gOjpzdGQ6OiBtb3ZlKCpfRmlyc3QpOw0KICAgICAgICAgICAgKytf
RGVzdDsNCiAgICAgICAgICAgICsrX0ZpcnN0Ow0KDQogICAgICAgICAgICBpZiAoX0ZpcnN0ID09
IF9NaWQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX01vdmVfdW5jaGVja2VkKF9OZXh0LCBf
TGFzdCwgX0Rlc3QpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0JpZEl0LCBjbGFzcyBfVHksIGNsYXNzIF9Qcj4NCnZvaWQgX1VuaW5pdGlh
bGl6ZWRfY2h1bmtlZF9tZXJnZV91bmNoZWNrZWQoX0JpZEl0IF9GaXJzdCwgY29uc3QgX0JpZEl0
IF9MYXN0LCBfVHkqIF9EZXN0LA0KICAgIGNvbnN0IF9JdGVyX2RpZmZfdDxfQmlkSXQ+IF9DaHVu
aywgX0l0ZXJfZGlmZl90PF9CaWRJdD4gX0NvdW50LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICAN
CiAgICANCiAgICBfVW5pbml0aWFsaXplZF9iYWNrb3V0PF9UeSo+IF9CYWNrb3V0e19EZXN0fTsN
CiAgICB3aGlsZSAoX0NodW5rIDwgX0NvdW50KSB7DQogICAgICAgIF9Db3VudCAtPSBfQ2h1bms7
DQogICAgICAgIGNvbnN0IF9CaWRJdCBfTWlkMSA9IDo6c3RkOjogbmV4dChfRmlyc3QsIF9DaHVu
ayk7DQogICAgICAgIGNvbnN0IGF1dG8gX0NodW5rMiA9ICg6OnN0ZDo6IG1pbikoX0NodW5rLCBf
Q291bnQpOw0KICAgICAgICBfQ291bnQgLT0gX0NodW5rMjsNCiAgICAgICAgY29uc3QgX0JpZEl0
IF9NaWQyID0gOjpzdGQ6OiBuZXh0KF9NaWQxLCBfQ2h1bmsyKTsNCiAgICAgICAgX0JhY2tvdXQu
X0xhc3QgICAgID0gX1VuaW5pdGlhbGl6ZWRfbWVyZ2VfbW92ZShfRmlyc3QsIF9NaWQxLCBfTWlk
MiwgX0JhY2tvdXQuX0xhc3QsIF9QcmVkKTsNCiAgICAgICAgX0ZpcnN0ICAgICAgICAgICAgID0g
X01pZDI7DQogICAgfQ0KDQogICAgX1VuaW5pdGlhbGl6ZWRfbW92ZV91bmNoZWNrZWQoX0ZpcnN0
LCBfTGFzdCwgX0JhY2tvdXQuX0xhc3QpOyANCiAgICBfQmFja291dC5fUmVsZWFzZSgpOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0LCBjbGFzcyBfT3V0SXQsIGNsYXNzIF9Qcj4NCnZvaWQg
X0NodW5rZWRfbWVyZ2VfdW5jaGVja2VkKF9CaWRJdCBfRmlyc3QsIGNvbnN0IF9CaWRJdCBfTGFz
dCwgX091dEl0IF9EZXN0LCBjb25zdCBfSXRlcl9kaWZmX3Q8X0JpZEl0PiBfQ2h1bmssDQogICAg
X0l0ZXJfZGlmZl90PF9CaWRJdD4gX0NvdW50LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICANCiAg
ICANCiAgICB3aGlsZSAoX0NodW5rIDwgX0NvdW50KSB7DQogICAgICAgIF9Db3VudCAtPSBfQ2h1
bms7DQogICAgICAgIGNvbnN0IF9CaWRJdCBfTWlkMSA9IDo6c3RkOjogbmV4dChfRmlyc3QsIF9D
aHVuayk7DQogICAgICAgIGNvbnN0IGF1dG8gX0NodW5rMiA9ICg6OnN0ZDo6IG1pbikoX0NodW5r
LCBfQ291bnQpOw0KICAgICAgICBfQ291bnQgLT0gX0NodW5rMjsNCiAgICAgICAgY29uc3QgX0Jp
ZEl0IF9NaWQyID0gOjpzdGQ6OiBuZXh0KF9NaWQxLCBfQ2h1bmsyKTsNCiAgICAgICAgX0Rlc3Qg
ICAgICAgICAgICAgID0gX01lcmdlX21vdmUoX0ZpcnN0LCBfTWlkMSwgX01pZDIsIF9EZXN0LCBf
UHJlZCk7DQogICAgICAgIF9GaXJzdCAgICAgICAgICAgICA9IF9NaWQyOw0KICAgIH0NCg0KICAg
IF9Nb3ZlX3VuY2hlY2tlZChfRmlyc3QsIF9MYXN0LCBfRGVzdCk7IA0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZEl0LCBjbGFzcyBfUHI+DQp2b2lkIF9JbnNlcnRpb25fc29ydF9pc29ydF9tYXhf
Y2h1bmtzKF9CaWRJdCBfRmlyc3QsIGNvbnN0IF9CaWRJdCBfTGFzdCwgX0l0ZXJfZGlmZl90PF9C
aWRJdD4gX0NvdW50LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICANCiAgICBmb3IgKDsgX0lTT1JU
X01BWCA8IF9Db3VudDsgX0NvdW50IC09IF9JU09SVF9NQVgpIHsgDQogICAgICAgIF9GaXJzdCA9
IF9JbnNlcnRpb25fc29ydF91bmNoZWNrZWQoX0ZpcnN0LCA6OnN0ZDo6IG5leHQoX0ZpcnN0LCBf
SVNPUlRfTUFYKSwgX1ByZWQpOw0KICAgIH0NCg0KICAgIF9JbnNlcnRpb25fc29ydF91bmNoZWNr
ZWQoX0ZpcnN0LCBfTGFzdCwgX1ByZWQpOyANCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdCwg
Y2xhc3MgX1ByPg0Kdm9pZCBfQnVmZmVyZWRfbWVyZ2Vfc29ydF91bmNoZWNrZWQoY29uc3QgX0Jp
ZEl0IF9GaXJzdCwgY29uc3QgX0JpZEl0IF9MYXN0LCBjb25zdCBfSXRlcl9kaWZmX3Q8X0JpZEl0
PiBfQ291bnQsDQogICAgX0l0ZXJfdmFsdWVfdDxfQmlkSXQ+KiBjb25zdCBfVGVtcF9wdHIsIF9Q
ciBfUHJlZCkgew0KICAgIA0KICAgIA0KICAgIA0KICAgIF9JbnNlcnRpb25fc29ydF9pc29ydF9t
YXhfY2h1bmtzKF9GaXJzdCwgX0xhc3QsIF9Db3VudCwgX1ByZWQpOw0KICAgIA0KICAgIGF1dG8g
X0NodW5rID0gc3RhdGljX2Nhc3Q8X0l0ZXJfZGlmZl90PF9CaWRJdD4+KF9JU09SVF9NQVgpOw0K
ICAgIGlmIChfQ291bnQgPD0gX0NodW5rKSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAg
ICANCiAgICBfVW5pbml0aWFsaXplZF9jaHVua2VkX21lcmdlX3VuY2hlY2tlZChfRmlyc3QsIF9M
YXN0LCBfVGVtcF9wdHIsIF9DaHVuaywgX0NvdW50LCBfUHJlZCk7DQogICAgX1VuaW5pdGlhbGl6
ZWRfYmFja291dDxfSXRlcl92YWx1ZV90PF9CaWRJdD4qPiBfQmFja291dHtfVGVtcF9wdHIsIF9U
ZW1wX3B0ciArIF9Db3VudH07DQogICAgZm9yICg7Oykgew0KICAgICAgICANCiAgICAgICAgX0No
dW5rIDw8PSAxOw0KICAgICAgICBfQ2h1bmtlZF9tZXJnZV91bmNoZWNrZWQoX1RlbXBfcHRyLCBf
VGVtcF9wdHIgKyBfQ291bnQsIF9GaXJzdCwgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihfQ2h1bmsp
LA0KICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihfQ291bnQpLCBfUHJlZCk7DQog
ICAgICAgIF9DaHVuayA8PD0gMTsNCiAgICAgICAgaWYgKF9Db3VudCA8PSBfQ2h1bmspIHsgDQog
ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgX0NodW5r
ZWRfbWVyZ2VfdW5jaGVja2VkKF9GaXJzdCwgX0xhc3QsIF9UZW1wX3B0ciwgX0NodW5rLCBfQ291
bnQsIF9QcmVkKTsNCiAgICB9DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQsIGNsYXNzIF9Q
cj4NCnZvaWQgX1N0YWJsZV9zb3J0X3VuY2hlY2tlZChjb25zdCBfQmlkSXQgX0ZpcnN0LCBjb25z
dCBfQmlkSXQgX0xhc3QsIGNvbnN0IF9JdGVyX2RpZmZfdDxfQmlkSXQ+IF9Db3VudCwNCiAgICBf
SXRlcl92YWx1ZV90PF9CaWRJdD4qIGNvbnN0IF9UZW1wX3B0ciwgY29uc3QgcHRyZGlmZl90IF9D
YXBhY2l0eSwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgdXNpbmcgX0RpZmYgPSBfSXRlcl9kaWZm
X3Q8X0JpZEl0PjsNCiAgICBpZiAoX0NvdW50IDw9IF9JU09SVF9NQVgpIHsNCiAgICAgICAgX0lu
c2VydGlvbl9zb3J0X3VuY2hlY2tlZChfRmlyc3QsIF9MYXN0LCBfUHJlZCk7IA0KICAgIH0gZWxz
ZSB7IA0KICAgICAgICBjb25zdCBhdXRvIF9IYWxmX2NvdW50ICAgICAgPSBzdGF0aWNfY2FzdDxf
RGlmZj4oX0NvdW50IC8gMik7DQogICAgICAgIGNvbnN0IGF1dG8gX0hhbGZfY291bnRfY2VpbCA9
IHN0YXRpY19jYXN0PF9EaWZmPihfQ291bnQgLSBfSGFsZl9jb3VudCk7DQogICAgICAgIGNvbnN0
IF9CaWRJdCBfTWlkICAgICAgICAgICA9IDo6c3RkOjogbmV4dChfRmlyc3QsIF9IYWxmX2NvdW50
X2NlaWwpOw0KICAgICAgICBpZiAoX0hhbGZfY291bnRfY2VpbCA8PSBfQ2FwYWNpdHkpIHsgDQog
ICAgICAgICAgICBfQnVmZmVyZWRfbWVyZ2Vfc29ydF91bmNoZWNrZWQoX0ZpcnN0LCBfTWlkLCBf
SGFsZl9jb3VudF9jZWlsLCBfVGVtcF9wdHIsIF9QcmVkKTsNCiAgICAgICAgICAgIF9CdWZmZXJl
ZF9tZXJnZV9zb3J0X3VuY2hlY2tlZChfTWlkLCBfTGFzdCwgX0hhbGZfY291bnQsIF9UZW1wX3B0
ciwgX1ByZWQpOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIF9TdGFibGVfc29ydF91
bmNoZWNrZWQoX0ZpcnN0LCBfTWlkLCBfSGFsZl9jb3VudF9jZWlsLCBfVGVtcF9wdHIsIF9DYXBh
Y2l0eSwgX1ByZWQpOw0KICAgICAgICAgICAgX1N0YWJsZV9zb3J0X3VuY2hlY2tlZChfTWlkLCBf
TGFzdCwgX0hhbGZfY291bnQsIF9UZW1wX3B0ciwgX0NhcGFjaXR5LCBfUHJlZCk7DQogICAgICAg
IH0NCg0KICAgICAgICBfQnVmZmVyZWRfaW5wbGFjZV9tZXJnZV91bmNoZWNrZWQoDQogICAgICAg
ICAgICBfRmlyc3QsIF9NaWQsIF9MYXN0LCBfSGFsZl9jb3VudF9jZWlsLCBfSGFsZl9jb3VudCwg
X1RlbXBfcHRyLCBfQ2FwYWNpdHksIF9QcmVkKTsgDQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0JpZEl0LCBjbGFzcyBfUHI+DQp2b2lkIHN0YWJsZV9zb3J0KGNvbnN0IF9CaWRJdCBfRmly
c3QsIGNvbnN0IF9CaWRJdCBfTGFzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJp
ZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgY29uc3QgYXV0byBfVUZpcnN0ID0gX0dldF91
bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCAgPSBfR2V0X3Vud3JhcHBl
ZChfTGFzdCk7DQogICAgY29uc3QgYXV0byBfQ291bnQgID0gOjpzdGQ6OiBkaXN0YW5jZShfVUZp
cnN0LCBfVUxhc3QpOw0KICAgIGlmIChfQ291bnQgPD0gX0lTT1JUX01BWCkgew0KICAgICAgICBf
SW5zZXJ0aW9uX3NvcnRfdW5jaGVja2VkKF9VRmlyc3QsIF9VTGFzdCwgX1Bhc3NfZm4oX1ByZWQp
KTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIF9PcHRpbWlzdGljX3RlbXBvcmFyeV9i
dWZmZXI8X0l0ZXJfdmFsdWVfdDxfQmlkSXQ+PiBfVGVtcF9idWZ7X0NvdW50IC0gX0NvdW50IC8g
Mn07DQogICAgX1N0YWJsZV9zb3J0X3VuY2hlY2tlZChfVUZpcnN0LCBfVUxhc3QsIF9Db3VudCwg
X1RlbXBfYnVmLl9EYXRhLCBfVGVtcF9idWYuX0NhcGFjaXR5LCBfUGFzc19mbihfUHJlZCkpOw0K
fQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0JpZEl0LCBjbGFzcyBfUHIsIF9F
bmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQp2b2lkIHN0YWJsZV9zb3J0
KF9FeFBvJiYgX0V4ZWMsIGNvbnN0IF9CaWRJdCBfRmlyc3QsIGNvbnN0IF9CaWRJdCBfTGFzdCwg
X1ByIF9QcmVkKSBub2V4Y2VwdDsgDQojbGluZSA2ODEzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KdGVtcGxhdGUgPGNsYXNz
IF9CaWRJdD4NCnZvaWQgc3RhYmxlX3NvcnQoY29uc3QgX0JpZEl0IF9GaXJzdCwgY29uc3QgX0Jp
ZEl0IF9MYXN0KSB7IA0KICAgIDo6c3RkOjogc3RhYmxlX3NvcnQoX0ZpcnN0LCBfTGFzdCwgbGVz
czw+e30pOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0JpZEl0LCBfRW5h
YmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0Kdm9pZCBzdGFibGVfc29ydChf
RXhQbyYmIF9FeGVjLCBfQmlkSXQgX0ZpcnN0LCBfQmlkSXQgX0xhc3QpIG5vZXhjZXB0ICB7DQog
ICAgDQogICAgOjpzdGQ6OiBzdGFibGVfc29ydCg6OnN0ZDo6IGZvcndhcmQ8X0V4UG8+KF9FeGVj
KSwgX0ZpcnN0LCBfTGFzdCwgbGVzc3t9KTsNCn0NCiNsaW5lIDY4MjYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfUmFuSXQsIGNsYXNzIF9Qcj4NCmlubGluZSB2b2lkIHBhcnRpYWxfc29ydChf
UmFuSXQgX0ZpcnN0LCBfUmFuSXQgX01pZCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAg
ICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9NaWQpOw0KICAgIF9BZGxfdmVyaWZ5
X3JhbmdlKF9NaWQsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53cmFw
cGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVU1pZCAgPSBfR2V0X3Vud3JhcHBlZChfTWlk
KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCg0KICAg
IGlmIChfVUZpcnN0ID09IF9VTWlkKSB7DQogICAgICAgIHJldHVybjsgDQogICAgfQ0KDQogICAg
X01ha2VfaGVhcF91bmNoZWNrZWQoX1VGaXJzdCwgX1VNaWQsIF9QYXNzX2ZuKF9QcmVkKSk7DQog
ICAgZm9yIChhdXRvIF9VTmV4dCA9IF9VTWlkOyBfVU5leHQgPCBfVUxhc3Q7ICsrX1VOZXh0KSB7
DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX1VOZXh0LCAqX1VGaXJzdCkp
KSB7IA0KICAgICAgICAgICAgX0l0ZXJfdmFsdWVfdDxfUmFuSXQ+IF9WYWwgPSA6OnN0ZDo6IG1v
dmUoKl9VTmV4dCk7DQogICAgICAgICAgICBfUG9wX2hlYXBfaG9sZV91bmNoZWNrZWQoX1VGaXJz
dCwgX1VNaWQsIF9VTmV4dCwgOjpzdGQ6OiBtb3ZlKF9WYWwpLCBfUGFzc19mbihfUHJlZCkpOw0K
ICAgICAgICB9DQogICAgfQ0KDQogICAgX1NvcnRfaGVhcF91bmNoZWNrZWQoX1VGaXJzdCwgX1VN
aWQsIF9QYXNzX2ZuKF9QcmVkKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXQ+DQppbmxp
bmUgdm9pZCBwYXJ0aWFsX3NvcnQoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9NaWQsIF9SYW5JdCBf
TGFzdCkgew0KICAgIA0KICAgIDo6c3RkOjogcGFydGlhbF9zb3J0KF9GaXJzdCwgX01pZCwgX0xh
c3QsIGxlc3M8Pnt9KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9SYW5J
dCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0K
dm9pZCBwYXJ0aWFsX3NvcnQoX0V4UG8mJiwgX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9NaWQsIF9S
YW5JdCBfTGFzdCwgX1ByIF9QcmVkKSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIHJldHVy
biA6OnN0ZDo6IHBhcnRpYWxfc29ydChfRmlyc3QsIF9NaWQsIF9MYXN0LCBfUGFzc19mbihfUHJl
ZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9SYW5JdCwgX0VuYWJsZV9p
Zl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCnZvaWQgcGFydGlhbF9zb3J0KF9FeFBv
JiYsIF9SYW5JdCBfRmlyc3QsIF9SYW5JdCBfTWlkLCBfUmFuSXQgX0xhc3QpIG5vZXhjZXB0ICB7
DQogICAgDQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogcGFydGlhbF9zb3J0KF9GaXJzdCwgX01p
ZCwgX0xhc3QpOw0KfQ0KI2xpbmUgNjg3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0
LCBjbGFzcyBfUmFuSXQsIGNsYXNzIF9Qcj4NCmlubGluZSBfUmFuSXQgcGFydGlhbF9zb3J0X2Nv
cHkoX0luSXQgX0ZpcnN0MSwgX0luSXQgX0xhc3QxLCBfUmFuSXQgX0ZpcnN0MiwgX1Jhbkl0IF9M
YXN0MiwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0MSwg
X0xhc3QxKTsNCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QyLCBfTGFzdDIpOw0KICAgIGF1
dG8gX1VGaXJzdDEgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdDEpOw0KICAgIGNvbnN0IGF1
dG8gX1VMYXN0MSA9IF9HZXRfdW53cmFwcGVkKF9MYXN0MSk7DQogICAgYXV0byBfVUZpcnN0MiAg
ICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0Mik7DQogICAgY29uc3QgYXV0byBfVUxhc3QyID0g
X0dldF91bndyYXBwZWQoX0xhc3QyKTsNCiAgICBhdXRvIF9VTWlkMiAgICAgICAgPSBfVUZpcnN0
MjsNCiAgICBpZiAoX1VGaXJzdDEgIT0gX1VMYXN0MSAmJiBfVUZpcnN0MiAhPSBfVUxhc3QyKSB7
DQogICAgICAgIGZvciAoOyBfVUZpcnN0MSAhPSBfVUxhc3QxICYmIF9VTWlkMiAhPSBfVUxhc3Qy
OyArK19VRmlyc3QxLCAodm9pZCkgKytfVU1pZDIpIHsNCiAgICAgICAgICAgICpfVU1pZDIgPSAq
X1VGaXJzdDE7IA0KICAgICAgICB9DQoNCiAgICAgICAgX01ha2VfaGVhcF91bmNoZWNrZWQoX1VG
aXJzdDIsIF9VTWlkMiwgX1Bhc3NfZm4oX1ByZWQpKTsNCiAgICAgICAgZm9yICg7IF9VRmlyc3Qx
ICE9IF9VTGFzdDE7ICsrX1VGaXJzdDEpIHsNCiAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxi
b29sPihfUHJlZCgqX1VGaXJzdDEsICpfVUZpcnN0MikpKSB7DQogICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgdXNpbmcgX0RpZmYgPSBfSXRlcl9kaWZmX3Q8X1Jhbkl0PjsNCiAgICAg
ICAgICAgICAgICBfUG9wX2hlYXBfaG9sZV9ieV9pbmRleChfVUZpcnN0Miwgc3RhdGljX2Nhc3Q8
X0RpZmY+KDApLCBzdGF0aWNfY2FzdDxfRGlmZj4oX1VNaWQyIC0gX1VGaXJzdDIpLA0KICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxfSXRlcl92YWx1ZV90PF9Jbkl0Pj4oKl9VRmlyc3Qx
KSwgX1Bhc3NfZm4oX1ByZWQpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAg
IF9Tb3J0X2hlYXBfdW5jaGVja2VkKF9VRmlyc3QyLCBfVU1pZDIsIF9QYXNzX2ZuKF9QcmVkKSk7
DQogICAgfQ0KDQogICAgX1NlZWtfd3JhcHBlZChfRmlyc3QyLCBfVU1pZDIpOw0KICAgIHJldHVy
biBfRmlyc3QyOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQsIGNsYXNzIF9SYW5JdD4NCmlu
bGluZSBfUmFuSXQgcGFydGlhbF9zb3J0X2NvcHkoX0luSXQgX0ZpcnN0MSwgX0luSXQgX0xhc3Qx
LCBfUmFuSXQgX0ZpcnN0MiwgX1Jhbkl0IF9MYXN0Mikgew0KICAgIA0KICAgIHJldHVybiA6OnN0
ZDo6IHBhcnRpYWxfc29ydF9jb3B5KF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBs
ZXNzPD57fSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNs
YXNzIF9SYW5JdCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQ
bz4gPSAwPg0KX1Jhbkl0IHBhcnRpYWxfc29ydF9jb3B5KF9FeFBvJiYsIF9Gd2RJdCBfRmlyc3Qx
LCBfRndkSXQgX0xhc3QxLCBfUmFuSXQgX0ZpcnN0MiwgX1Jhbkl0IF9MYXN0MiwgX1ByIF9QcmVk
KSBub2V4Y2VwdA0KIHsNCiAgICANCiAgICANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRl
cl92PF9Gd2RJdD4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRv
cnMgb3Igc3Ryb25nZXIuIik7DQogICAgcmV0dXJuIDo6c3RkOjogcGFydGlhbF9zb3J0X2NvcHko
X0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIF9QYXNzX2ZuKF9QcmVkKSk7DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0LCBjbGFzcyBfUmFuSXQsIF9FbmFi
bGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfUmFuSXQgcGFydGlhbF9zb3J0
X2NvcHkoX0V4UG8mJiwgX0Z3ZEl0IF9GaXJzdDEsIF9Gd2RJdCBfTGFzdDEsIF9SYW5JdCBfRmly
c3QyLCBfUmFuSXQgX0xhc3QyKSBub2V4Y2VwdA0KIHsNCiAgICANCiAgICANCiAgICBzdGF0aWNf
YXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdD4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVp
cmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgcmV0dXJuIDo6c3RkOjog
cGFydGlhbF9zb3J0X2NvcHkoX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIpOw0KfQ0K
I2xpbmUgNjkzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SYW5JdCwgY2xhc3MgX1ByPg0K
aW5saW5lIHZvaWQgbnRoX2VsZW1lbnQoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9OdGgsIF9SYW5J
dCBfTGFzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0
LCBfTnRoKTsNCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfTnRoLCBfTGFzdCk7DQogICAgYXV0byBf
VUZpcnN0ICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdCk7DQogICAgY29uc3QgYXV0byBfVU50
aCA9IF9HZXRfdW53cmFwcGVkKF9OdGgpOw0KICAgIGF1dG8gX1VMYXN0ICAgICAgPSBfR2V0X3Vu
d3JhcHBlZChfTGFzdCk7DQogICAgaWYgKF9VTnRoID09IF9VTGFzdCkgew0KICAgICAgICByZXR1
cm47IA0KICAgIH0NCg0KICAgIHdoaWxlIChfSVNPUlRfTUFYIDwgX1VMYXN0IC0gX1VGaXJzdCkg
eyANCiAgICAgICAgYXV0byBfVU1pZCA9IF9QYXJ0aXRpb25fYnlfbWVkaWFuX2d1ZXNzX3VuY2hl
Y2tlZChfVUZpcnN0LCBfVUxhc3QsIF9QYXNzX2ZuKF9QcmVkKSk7DQoNCiAgICAgICAgaWYgKF9V
TWlkLnNlY29uZCA8PSBfVU50aCkgew0KICAgICAgICAgICAgX1VGaXJzdCA9IF9VTWlkLnNlY29u
ZDsNCiAgICAgICAgfSBlbHNlIGlmIChfVU1pZC5maXJzdCA8PSBfVU50aCkgew0KICAgICAgICAg
ICAgcmV0dXJuOyANCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9VTGFzdCA9IF9VTWlk
LmZpcnN0Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgX0luc2VydGlvbl9zb3J0X3VuY2hlY2tl
ZChfVUZpcnN0LCBfVUxhc3QsIF9QYXNzX2ZuKF9QcmVkKSk7IA0KfQ0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1Jhbkl0Pg0KaW5saW5lIHZvaWQgbnRoX2VsZW1lbnQoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0
IF9OdGgsIF9SYW5JdCBfTGFzdCkgeyANCiAgICA6OnN0ZDo6IG50aF9lbGVtZW50KF9GaXJzdCwg
X050aCwgX0xhc3QsIGxlc3M8Pnt9KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNs
YXNzIF9SYW5JdCwgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQ
bz4gPSAwPg0Kdm9pZCBudGhfZWxlbWVudChfRXhQbyYmLCBfUmFuSXQgX0ZpcnN0LCBfUmFuSXQg
X050aCwgX1Jhbkl0IF9MYXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0ICB7DQogICAgDQogICAgDQog
ICAgOjpzdGQ6OiBudGhfZWxlbWVudChfRmlyc3QsIF9OdGgsIF9MYXN0LCBfUGFzc19mbihfUHJl
ZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9SYW5JdCwgX0VuYWJsZV9p
Zl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCnZvaWQgbnRoX2VsZW1lbnQoX0V4UG8m
JiwgX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9OdGgsIF9SYW5JdCBfTGFzdCkgbm9leGNlcHQgIHsN
CiAgICANCiAgICANCiAgICA6OnN0ZDo6IG50aF9lbGVtZW50KF9GaXJzdCwgX050aCwgX0xhc3Qp
Ow0KfQ0KI2xpbmUgNjk4MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0MSwgY2xhc3Mg
X0luSXQyLCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIGluY2x1ZGVzKF9J
bkl0MSBfRmlyc3QxLCBfSW5JdDEgX0xhc3QxLCBfSW5JdDIgX0ZpcnN0MiwgX0luSXQyIF9MYXN0
MiwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0MSwgX0xh
c3QxKTsNCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QyLCBfTGFzdDIpOw0KICAgIGF1dG8g
X1VGaXJzdDEgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdDEpOw0KICAgIGNvbnN0IGF1dG8g
X1VMYXN0MSA9IF9HZXRfdW53cmFwcGVkKF9MYXN0MSk7DQogICAgYXV0byBfVUZpcnN0MiAgICAg
ID0gX0dldF91bndyYXBwZWQoX0ZpcnN0Mik7DQogICAgY29uc3QgYXV0byBfVUxhc3QyID0gX0dl
dF91bndyYXBwZWQoX0xhc3QyKTsNCiAgICA7DQogICAgOw0KICAgIGZvciAoOyBfVUZpcnN0MSAh
PSBfVUxhc3QxICYmIF9VRmlyc3QyICE9IF9VTGFzdDI7ICsrX1VGaXJzdDEpIHsNCiAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpfVUZpcnN0MiwgKl9VRmlyc3QxKSkpIHsNCiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghX1ByZWQo
Kl9VRmlyc3QxLCAqX1VGaXJzdDIpKSB7DQogICAgICAgICAgICArK19VRmlyc3QyOw0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgcmV0dXJuIF9VRmlyc3QyID09IF9VTGFzdDI7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfSW5JdDEsIGNsYXNzIF9Jbkl0Mj4NCltbbm9kaXNjYXJkXV0gaW5saW5lIGJv
b2wgaW5jbHVkZXMoX0luSXQxIF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEsIF9Jbkl0MiBfRmlyc3Qy
LCBfSW5JdDIgX0xhc3QyKSB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogaW5jbHVkZXMoX0Zp
cnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIGxlc3M8Pnt9KTsNCn0NCg0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX1By
LCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KW1tub2Rpc2NhcmRd
XSBib29sIGluY2x1ZGVzKF9FeFBvJiYsIF9Gd2RJdDEgX0ZpcnN0MSwgX0Z3ZEl0MSBfTGFzdDEs
IF9Gd2RJdDIgX0ZpcnN0MiwgX0Z3ZEl0MiBfTGFzdDIsIF9QciBfUHJlZCkgbm9leGNlcHQNCiB7
DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQxPiwg
IlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdl
ci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdDI+LCAiUGFyYWxs
ZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0K
ICAgIHJldHVybiA6OnN0ZDo6IGluY2x1ZGVzKF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xh
c3QyLCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNz
IF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9F
eFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIGJvb2wgaW5jbHVkZXMoX0V4UG8mJiwgX0Z3ZEl0MSBf
Rmlyc3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfRndkSXQyIF9MYXN0Mikg
bm9leGNlcHQNCiB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJf
djxfRndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9y
cyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJ
dDI+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0
cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IGluY2x1ZGVzKF9GaXJzdDEsIF9MYXN0MSwg
X0ZpcnN0MiwgX0xhc3QyKTsNCn0NCiNsaW5lIDcwMzUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfSW5JdDEsIGNsYXNzIF9Jbkl0MiwgY2xhc3MgX091dEl0LCBjbGFzcyBfUHI+DQppbmxpbmUg
X091dEl0IHNldF91bmlvbihfSW5JdDEgX0ZpcnN0MSwgX0luSXQxIF9MYXN0MSwgX0luSXQyIF9G
aXJzdDIsIF9Jbkl0MiBfTGFzdDIsIF9PdXRJdCBfRGVzdCwgX1ByIF9QcmVkKSB7DQogICAgDQog
ICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0MSwgX0xhc3QxKTsNCiAgICBfQWRsX3ZlcmlmeV9y
YW5nZShfRmlyc3QyLCBfTGFzdDIpOw0KICAgIGF1dG8gX1VGaXJzdDEgICAgICA9IF9HZXRfdW53
cmFwcGVkKF9GaXJzdDEpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MSA9IF9HZXRfdW53cmFwcGVk
KF9MYXN0MSk7DQogICAgYXV0byBfVUZpcnN0MiAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0
Mik7DQogICAgY29uc3QgYXV0byBfVUxhc3QyID0gX0dldF91bndyYXBwZWQoX0xhc3QyKTsNCiAg
ICA7DQogICAgOw0KICAgIGF1dG8gX1VEZXN0ID0gX0dldF91bndyYXBwZWRfdW52ZXJpZmllZChf
RGVzdCk7DQogICAgZm9yICg7IF9VRmlyc3QxICE9IF9VTGFzdDEgJiYgX1VGaXJzdDIgIT0gX1VM
YXN0MjsgKytfVURlc3QpIHsNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpf
VUZpcnN0MSwgKl9VRmlyc3QyKSkpIHsgDQogICAgICAgICAgICAqX1VEZXN0ID0gKl9VRmlyc3Qx
Ow0KICAgICAgICAgICAgKytfVUZpcnN0MTsNCiAgICAgICAgfSBlbHNlIGlmIChfUHJlZCgqX1VG
aXJzdDIsICpfVUZpcnN0MSkpIHsgDQogICAgICAgICAgICAqX1VEZXN0ID0gKl9VRmlyc3QyOw0K
ICAgICAgICAgICAgKytfVUZpcnN0MjsNCiAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAgICAq
X1VEZXN0ID0gKl9VRmlyc3QxOw0KICAgICAgICAgICAgKytfVUZpcnN0MTsNCiAgICAgICAgICAg
ICsrX1VGaXJzdDI7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfVURlc3QgPSBfQ29weV91bmNo
ZWNrZWQoX1VGaXJzdDEsIF9VTGFzdDEsIF9VRGVzdCk7DQogICAgX1NlZWtfd3JhcHBlZChfRGVz
dCwgX0NvcHlfdW5jaGVja2VkKF9VRmlyc3QyLCBfVUxhc3QyLCBfVURlc3QpKTsNCiAgICByZXR1
cm4gX0Rlc3Q7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdDEsIGNsYXNzIF9Jbkl0MiwgY2xh
c3MgX091dEl0Pg0KaW5saW5lIF9PdXRJdCBzZXRfdW5pb24oX0luSXQxIF9GaXJzdDEsIF9Jbkl0
MSBfTGFzdDEsIF9Jbkl0MiBfRmlyc3QyLCBfSW5JdDIgX0xhc3QyLCBfT3V0SXQgX0Rlc3QpIHsN
CiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBzZXRfdW5pb24oX0ZpcnN0MSwgX0xhc3QxLCBfRmly
c3QyLCBfTGFzdDIsIF9EZXN0LCBsZXNzPD57fSk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9F
eFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFzcyBfRndkSXQzLCBjbGFzcyBf
UHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQzIHNl
dF91bmlvbihfRXhQbyYmLCBfRndkSXQxIF9GaXJzdDEsIF9Gd2RJdDEgX0xhc3QxLCBfRndkSXQy
IF9GaXJzdDIsIF9Gd2RJdDIgX0xhc3QyLCBfRndkSXQzIF9EZXN0LA0KICAgIF9QciBfUHJlZCkg
bm9leGNlcHQgIHsNCiAgICANCiAgICANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92
PF9Gd2RJdDE+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3Jz
IG9yIHN0cm9uZ2VyLiIpOw0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0
Mj4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ry
b25nZXIuIik7DQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQzPiwgIlBh
cmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4i
KTsNCiAgICByZXR1cm4gOjpzdGQ6OiBzZXRfdW5pb24oX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3Qy
LCBfTGFzdDIsIF9EZXN0LCBfUGFzc19mbihfUHJlZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0V4UG8sIGNsYXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9Gd2RJdDMsIF9FbmFi
bGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQzIHNldF91bmlvbihf
RXhQbyYmLCBfRndkSXQxIF9GaXJzdDEsIF9Gd2RJdDEgX0xhc3QxLCBfRndkSXQyIF9GaXJzdDIs
IF9Gd2RJdDIgX0xhc3QyLCBfRndkSXQzIF9EZXN0KSBub2V4Y2VwdA0KIHsNCiAgICANCiAgICAN
CiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJdDE+LCAiUGFyYWxsZWwgYWxn
b3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0cm9uZ2VyLiIpOw0KICAgIHN0
YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0Mj4sICJQYXJhbGxlbCBhbGdvcml0aG1z
IHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgc3RhdGljX2Fz
c2VydChfSXNfZndkX2l0ZXJfdjxfRndkSXQzPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWly
ZSBmb3J3YXJkIGl0ZXJhdG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICByZXR1cm4gOjpzdGQ6OiBz
ZXRfdW5pb24oX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIF9EZXN0KTsNCn0NCiNs
aW5lIDcwOTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdDEsIGNsYXNzIF9Jbkl0Miwg
Y2xhc3MgX091dEl0LCBjbGFzcyBfUHI+DQppbmxpbmUgX091dEl0IHNldF9pbnRlcnNlY3Rpb24o
DQogICAgX0luSXQxIF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEsIF9Jbkl0MiBfRmlyc3QyLCBfSW5J
dDIgX0xhc3QyLCBfT3V0SXQgX0Rlc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIF9BZGxfdmVy
aWZ5X3JhbmdlKF9GaXJzdDEsIF9MYXN0MSk7DQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0
MiwgX0xhc3QyKTsNCiAgICBhdXRvIF9VRmlyc3QxICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmly
c3QxKTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdDEgPSBfR2V0X3Vud3JhcHBlZChfTGFzdDEpOw0K
ICAgIGF1dG8gX1VGaXJzdDIgICAgICA9IF9HZXRfdW53cmFwcGVkKF9GaXJzdDIpOw0KICAgIGNv
bnN0IGF1dG8gX1VMYXN0MiA9IF9HZXRfdW53cmFwcGVkKF9MYXN0Mik7DQogICAgOw0KICAgIDsN
CiAgICBhdXRvIF9VRGVzdCA9IF9HZXRfdW53cmFwcGVkX3VudmVyaWZpZWQoX0Rlc3QpOw0KICAg
IHdoaWxlIChfVUZpcnN0MSAhPSBfVUxhc3QxICYmIF9VRmlyc3QyICE9IF9VTGFzdDIpIHsNCiAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpfVUZpcnN0MSwgKl9VRmlyc3QyKSkp
IHsNCiAgICAgICAgICAgICsrX1VGaXJzdDE7DQogICAgICAgIH0gZWxzZSBpZiAoX1ByZWQoKl9V
Rmlyc3QyLCAqX1VGaXJzdDEpKSB7DQogICAgICAgICAgICArK19VRmlyc3QyOw0KICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgKl9VRGVzdCA9ICpfVUZpcnN0MTsNCiAgICAgICAgICAgICsr
X1VEZXN0Ow0KICAgICAgICAgICAgKytfVUZpcnN0MTsNCiAgICAgICAgICAgICsrX1VGaXJzdDI7
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9EZXN0LCBfVURlc3QpOw0K
ICAgIHJldHVybiBfRGVzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0MSwgY2xhc3MgX0lu
SXQyLCBjbGFzcyBfT3V0SXQ+DQppbmxpbmUgX091dEl0IHNldF9pbnRlcnNlY3Rpb24oX0luSXQx
IF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEsIF9Jbkl0MiBfRmlyc3QyLCBfSW5JdDIgX0xhc3QyLCBf
T3V0SXQgX0Rlc3QpIHsNCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBzZXRfaW50ZXJzZWN0aW9u
KF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBfRGVzdCwgbGVzczw+e30pOw0KfQ0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0Miwg
Y2xhc3MgX0Z3ZEl0MywgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxf
RXhQbz4gPSAwPg0KX0Z3ZEl0MyBzZXRfaW50ZXJzZWN0aW9uKF9FeFBvJiYsIF9Gd2RJdDEgX0Zp
cnN0MSwgX0Z3ZEl0MSBfTGFzdDEsIF9Gd2RJdDIgX0ZpcnN0MiwgX0Z3ZEl0MiBfTGFzdDIsIF9G
d2RJdDMgX0Rlc3QsDQogICAgX1ByIF9QcmVkKSBub2V4Y2VwdDsgDQoNCnRlbXBsYXRlIDxjbGFz
cyBfRXhQbywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX0Z3ZEl0MywgX0Vu
YWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCl9Gd2RJdDMgc2V0X2ludGVy
c2VjdGlvbihfRXhQbyYmIF9FeGVjLCBfRndkSXQxIF9GaXJzdDEsIF9Gd2RJdDEgX0xhc3QxLCBf
RndkSXQyIF9GaXJzdDIsIF9Gd2RJdDIgX0xhc3QyLA0KICAgIF9Gd2RJdDMgX0Rlc3QpIG5vZXhj
ZXB0ICB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogc2V0X2ludGVyc2VjdGlvbig6OnN0ZDo6
IGZvcndhcmQ8X0V4UG8+KF9FeGVjKSwgX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIs
IF9EZXN0LCBsZXNze30pOw0KfQ0KI2xpbmUgNzE0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxhdGUgPGNsYXNz
IF9Jbkl0MSwgY2xhc3MgX0luSXQyLCBjbGFzcyBfT3V0SXQsIGNsYXNzIF9Qcj4NCmlubGluZSBf
T3V0SXQgc2V0X2RpZmZlcmVuY2UoDQogICAgX0luSXQxIF9GaXJzdDEsIF9Jbkl0MSBfTGFzdDEs
IF9Jbkl0MiBfRmlyc3QyLCBfSW5JdDIgX0xhc3QyLCBfT3V0SXQgX0Rlc3QsIF9QciBfUHJlZCkg
ew0KICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdDEsIF9MYXN0MSk7DQogICAgX0Fk
bF92ZXJpZnlfcmFuZ2UoX0ZpcnN0MiwgX0xhc3QyKTsNCiAgICBhdXRvIF9VRmlyc3QxICAgICAg
PSBfR2V0X3Vud3JhcHBlZChfRmlyc3QxKTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdDEgPSBfR2V0
X3Vud3JhcHBlZChfTGFzdDEpOw0KICAgIGF1dG8gX1VGaXJzdDIgICAgICA9IF9HZXRfdW53cmFw
cGVkKF9GaXJzdDIpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0MiA9IF9HZXRfdW53cmFwcGVkKF9M
YXN0Mik7DQogICAgOw0KICAgIDsNCiAgICBhdXRvIF9VRGVzdCA9IF9HZXRfdW53cmFwcGVkX3Vu
dmVyaWZpZWQoX0Rlc3QpOw0KICAgIHdoaWxlIChfVUZpcnN0MSAhPSBfVUxhc3QxICYmIF9VRmly
c3QyICE9IF9VTGFzdDIpIHsNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpf
VUZpcnN0MSwgKl9VRmlyc3QyKSkpIHsgDQogICAgICAgICAgICAqX1VEZXN0ID0gKl9VRmlyc3Qx
Ow0KICAgICAgICAgICAgKytfVURlc3Q7DQogICAgICAgICAgICArK19VRmlyc3QxOw0KICAgICAg
ICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKCFfUHJlZCgqX1VGaXJzdDIsICpfVUZpcnN0MSkp
IHsNCiAgICAgICAgICAgICAgICArK19VRmlyc3QxOw0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICArK19VRmlyc3QyOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1NlZWtfd3JhcHBlZChf
RGVzdCwgX0NvcHlfdW5jaGVja2VkKF9VRmlyc3QxLCBfVUxhc3QxLCBfVURlc3QpKTsNCiAgICBy
ZXR1cm4gX0Rlc3Q7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfSW5JdDEsIGNsYXNzIF9Jbkl0Miwg
Y2xhc3MgX091dEl0Pg0KaW5saW5lIF9PdXRJdCBzZXRfZGlmZmVyZW5jZShfSW5JdDEgX0ZpcnN0
MSwgX0luSXQxIF9MYXN0MSwgX0luSXQyIF9GaXJzdDIsIF9Jbkl0MiBfTGFzdDIsIF9PdXRJdCBf
RGVzdCkgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IHNldF9kaWZmZXJlbmNlKF9GaXJzdDEs
IF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBfRGVzdCwgbGVzczw+e30pOw0KfQ0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX0Z3
ZEl0MywgY2xhc3MgX1ByLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAw
Pg0KX0Z3ZEl0MyBzZXRfZGlmZmVyZW5jZShfRXhQbyYmLCBfRndkSXQxIF9GaXJzdDEsIF9Gd2RJ
dDEgX0xhc3QxLCBfRndkSXQyIF9GaXJzdDIsIF9Gd2RJdDIgX0xhc3QyLCBfRndkSXQzIF9EZXN0
LA0KICAgIF9QciBfUHJlZCkgbm9leGNlcHQ7IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNs
YXNzIF9Gd2RJdDEsIGNsYXNzIF9Gd2RJdDIsIGNsYXNzIF9Gd2RJdDMsIF9FbmFibGVfaWZfZXhl
Y3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpfRndkSXQzIHNldF9kaWZmZXJlbmNlKF9FeFBv
JiYgX0V4ZWMsIF9Gd2RJdDEgX0ZpcnN0MSwgX0Z3ZEl0MSBfTGFzdDEsIF9Gd2RJdDIgX0ZpcnN0
MiwgX0Z3ZEl0MiBfTGFzdDIsDQogICAgX0Z3ZEl0MyBfRGVzdCkgbm9leGNlcHQgIHsNCiAgICAN
CiAgICByZXR1cm4gOjpzdGQ6OiBzZXRfZGlmZmVyZW5jZSg6OnN0ZDo6IGZvcndhcmQ8X0V4UG8+
KF9FeGVjKSwgX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFzdDIsIF9EZXN0LCBsZXNze30p
Ow0KfQ0KI2xpbmUgNzE5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxhbGdvcml0aG0iDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Jbkl0MSwgY2xhc3Mg
X0luSXQyLCBjbGFzcyBfT3V0SXQsIGNsYXNzIF9Qcj4NCmlubGluZSBfT3V0SXQgc2V0X3N5bW1l
dHJpY19kaWZmZXJlbmNlKA0KICAgIF9Jbkl0MSBfRmlyc3QxLCBfSW5JdDEgX0xhc3QxLCBfSW5J
dDIgX0ZpcnN0MiwgX0luSXQyIF9MYXN0MiwgX091dEl0IF9EZXN0LCBfUHIgX1ByZWQpIHsNCiAg
ICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QxLCBfTGFzdDEpOw0KICAgIF9BZGxfdmVy
aWZ5X3JhbmdlKF9GaXJzdDIsIF9MYXN0Mik7DQogICAgYXV0byBfVUZpcnN0MSAgICAgID0gX0dl
dF91bndyYXBwZWQoX0ZpcnN0MSk7DQogICAgY29uc3QgYXV0byBfVUxhc3QxID0gX0dldF91bndy
YXBwZWQoX0xhc3QxKTsNCiAgICBhdXRvIF9VRmlyc3QyICAgICAgPSBfR2V0X3Vud3JhcHBlZChf
Rmlyc3QyKTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdDIgPSBfR2V0X3Vud3JhcHBlZChfTGFzdDIp
Ow0KICAgIDsNCiAgICA7DQogICAgYXV0byBfVURlc3QgPSBfR2V0X3Vud3JhcHBlZF91bnZlcmlm
aWVkKF9EZXN0KTsNCiAgICB3aGlsZSAoX1VGaXJzdDEgIT0gX1VMYXN0MSAmJiBfVUZpcnN0MiAh
PSBfVUxhc3QyKSB7DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX1VGaXJz
dDEsICpfVUZpcnN0MikpKSB7IA0KICAgICAgICAgICAgKl9VRGVzdCA9ICpfVUZpcnN0MTsNCiAg
ICAgICAgICAgICsrX1VEZXN0Ow0KICAgICAgICAgICAgKytfVUZpcnN0MTsNCiAgICAgICAgfSBl
bHNlIGlmIChfUHJlZCgqX1VGaXJzdDIsICpfVUZpcnN0MSkpIHsgDQogICAgICAgICAgICAqX1VE
ZXN0ID0gKl9VRmlyc3QyOw0KICAgICAgICAgICAgKytfVURlc3Q7DQogICAgICAgICAgICArK19V
Rmlyc3QyOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgICsrX1VGaXJzdDE7DQogICAg
ICAgICAgICArK19VRmlyc3QyOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgX1VEZXN0ID0gX0Nv
cHlfdW5jaGVja2VkKF9VRmlyc3QxLCBfVUxhc3QxLCBfVURlc3QpOw0KICAgIF9TZWVrX3dyYXBw
ZWQoX0Rlc3QsIF9Db3B5X3VuY2hlY2tlZChfVUZpcnN0MiwgX1VMYXN0MiwgX1VEZXN0KSk7DQog
ICAgcmV0dXJuIF9EZXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0luSXQxLCBjbGFzcyBfSW5J
dDIsIGNsYXNzIF9PdXRJdD4NCmlubGluZSBfT3V0SXQgc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNl
KA0KICAgIF9Jbkl0MSBfRmlyc3QxLCBfSW5JdDEgX0xhc3QxLCBfSW5JdDIgX0ZpcnN0MiwgX0lu
SXQyIF9MYXN0MiwgX091dEl0IF9EZXN0KSB7DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogc2V0
X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9GaXJzdDEsIF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBf
RGVzdCwgbGVzczw+e30pOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3
ZEl0MSwgY2xhc3MgX0Z3ZEl0MiwgY2xhc3MgX0Z3ZEl0MywgY2xhc3MgX1ByLCBfRW5hYmxlX2lm
X2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KX0Z3ZEl0MyBzZXRfc3ltbWV0cmljX2Rp
ZmZlcmVuY2UoX0V4UG8mJiwgX0Z3ZEl0MSBfRmlyc3QxLCBfRndkSXQxIF9MYXN0MSwgX0Z3ZEl0
MiBfRmlyc3QyLCBfRndkSXQyIF9MYXN0MiwNCiAgICBfRndkSXQzIF9EZXN0LCBfUHIgX1ByZWQp
IG5vZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0ZXJf
djxfRndkSXQxPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJhdG9y
cyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9Gd2RJ
dDI+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9yIHN0
cm9uZ2VyLiIpOw0KICAgIHN0YXRpY19hc3NlcnQoX0lzX2Z3ZF9pdGVyX3Y8X0Z3ZEl0Mz4sICJQ
YXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2FyZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIu
Iik7DQogICAgcmV0dXJuIDo6c3RkOjogc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9GaXJzdDEs
IF9MYXN0MSwgX0ZpcnN0MiwgX0xhc3QyLCBfRGVzdCwgX1Bhc3NfZm4oX1ByZWQpKTsNCn0NCg0K
dGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQxLCBjbGFzcyBfRndkSXQyLCBjbGFz
cyBfRndkSXQzLCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KX0Z3
ZEl0MyBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2UoX0V4UG8mJiwgX0Z3ZEl0MSBfRmlyc3QxLCBf
RndkSXQxIF9MYXN0MSwgX0Z3ZEl0MiBfRmlyc3QyLCBfRndkSXQyIF9MYXN0MiwNCiAgICBfRndk
SXQzIF9EZXN0KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIHN0YXRpY19hc3NlcnQoX0lz
X2Z3ZF9pdGVyX3Y8X0Z3ZEl0MT4sICJQYXJhbGxlbCBhbGdvcml0aG1zIHJlcXVpcmUgZm9yd2Fy
ZCBpdGVyYXRvcnMgb3Igc3Ryb25nZXIuIik7DQogICAgc3RhdGljX2Fzc2VydChfSXNfZndkX2l0
ZXJfdjxfRndkSXQyPiwgIlBhcmFsbGVsIGFsZ29yaXRobXMgcmVxdWlyZSBmb3J3YXJkIGl0ZXJh
dG9ycyBvciBzdHJvbmdlci4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19md2RfaXRlcl92PF9G
d2RJdDM+LCAiUGFyYWxsZWwgYWxnb3JpdGhtcyByZXF1aXJlIGZvcndhcmQgaXRlcmF0b3JzIG9y
IHN0cm9uZ2VyLiIpOw0KICAgIHJldHVybiA6OnN0ZDo6IHNldF9zeW1tZXRyaWNfZGlmZmVyZW5j
ZShfRmlyc3QxLCBfTGFzdDEsIF9GaXJzdDIsIF9MYXN0MiwgX0Rlc3QpOw0KfQ0KI2xpbmUgNzI2
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhbGdv
cml0aG0iDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByPg0KY29uc3RleHBy
IF9Gd2RJdCBfTWF4X2VsZW1lbnRfdW5jaGVja2VkKF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFz
dCwgX1ByIF9QcmVkKSB7IA0KICAgIF9Gd2RJdCBfRm91bmQgPSBfRmlyc3Q7DQogICAgaWYgKF9G
aXJzdCAhPSBfTGFzdCkgew0KICAgICAgICB3aGlsZSAoKytfRmlyc3QgIT0gX0xhc3QpIHsNCiAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX0ZvdW5kLCAqX0ZpcnN0KSkp
IHsNCiAgICAgICAgICAgICAgICBfRm91bmQgPSBfRmlyc3Q7DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gX0ZvdW5kOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0Z3ZEl0LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfRndkSXQgbWF4X2Vs
ZW1lbnQoX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIHsgDQogICAgX0Fk
bF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgX1NlZWtfd3JhcHBlZChfRmlyc3Qs
IF9NYXhfZWxlbWVudF91bmNoZWNrZWQoX0dldF91bndyYXBwZWQoX0ZpcnN0KSwgX0dldF91bndy
YXBwZWQoX0xhc3QpLCBfUGFzc19mbihfUHJlZCkpKTsNCiAgICByZXR1cm4gX0ZpcnN0Ow0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0Pg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0Z3ZEl0
IG1heF9lbGVtZW50KF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCkgeyANCiAgICByZXR1cm4g
OjpzdGQ6OiBtYXhfZWxlbWVudChfRmlyc3QsIF9MYXN0LCBsZXNzPD57fSk7DQp9DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9l
eGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0IG1heF9l
bGVtZW50KF9FeFBvJiYsIF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCwgX1ByIF9QcmVkKSBu
b2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IG1heF9lbGVtZW50KF9G
aXJzdCwgX0xhc3QsIF9QYXNzX2ZuKF9QcmVkKSk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQ
bywgY2xhc3MgX0Z3ZEl0LCBfRW5hYmxlX2lmX2V4ZWN1dGlvbl9wb2xpY3lfdDxfRXhQbz4gPSAw
Pg0KW1tub2Rpc2NhcmRdXSBfRndkSXQgbWF4X2VsZW1lbnQoX0V4UG8mJiwgX0Z3ZEl0IF9GaXJz
dCwgX0Z3ZEl0IF9MYXN0KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIA0KICAgIHJldHVybiA6OnN0
ZDo6IG1heF9lbGVtZW50KF9GaXJzdCwgX0xhc3QpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDczNTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfRndkSXQsIGNsYXNzIF9Qcj4NCmNvbnN0ZXhwciBfRndkSXQgX01pbl9lbGVtZW50X3VuY2hl
Y2tlZChfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QsIF9QciBfUHJlZCkgeyANCiAgICBfRndk
SXQgX0ZvdW5kID0gX0ZpcnN0Ow0KICAgIGlmIChfRmlyc3QgIT0gX0xhc3QpIHsNCiAgICAgICAg
d2hpbGUgKCsrX0ZpcnN0ICE9IF9MYXN0KSB7DQogICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
Ym9vbD4oX1ByZWQoKl9GaXJzdCwgKl9Gb3VuZCkpKSB7DQogICAgICAgICAgICAgICAgX0ZvdW5k
ID0gX0ZpcnN0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJu
IF9Gb3VuZDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByPg0KW1tub2Rp
c2NhcmRdXSBjb25zdGV4cHIgX0Z3ZEl0IG1pbl9lbGVtZW50KF9Gd2RJdCBfRmlyc3QsIF9Gd2RJ
dCBfTGFzdCwgX1ByIF9QcmVkKSB7IA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xh
c3QpOw0KICAgIF9TZWVrX3dyYXBwZWQoX0ZpcnN0LCBfTWluX2VsZW1lbnRfdW5jaGVja2VkKF9H
ZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53cmFwcGVkKF9MYXN0KSwgX1Bhc3NfZm4oX1By
ZWQpKSk7DQogICAgcmV0dXJuIF9GaXJzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdD4N
Cltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9Gd2RJdCBtaW5fZWxlbWVudChfRndkSXQgX0ZpcnN0
LCBfRndkSXQgX0xhc3QpIHsgDQogICAgcmV0dXJuIDo6c3RkOjogbWluX2VsZW1lbnQoX0ZpcnN0
LCBfTGFzdCwgbGVzczw+e30pOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3Mg
X0Z3ZEl0LCBjbGFzcyBfUHIsIF9FbmFibGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9
IDA+DQpbW25vZGlzY2FyZF1dIF9Gd2RJdCBtaW5fZWxlbWVudChfRXhQbyYmLCBfRndkSXQgX0Zp
cnN0LCBfRndkSXQgX0xhc3QsIF9QciBfUHJlZCkgbm9leGNlcHQgIHsNCiAgICANCiAgICANCiAg
ICByZXR1cm4gOjpzdGQ6OiBtaW5fZWxlbWVudChfRmlyc3QsIF9MYXN0LCBfUGFzc19mbihfUHJl
ZCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdCwgX0VuYWJsZV9p
Zl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0IG1p
bl9lbGVtZW50KF9FeFBvJiYsIF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCkgbm9leGNlcHQg
IHsNCiAgICANCiAgICANCiAgICByZXR1cm4gOjpzdGQ6OiBtaW5fZWxlbWVudChfRmlyc3QsIF9M
YXN0KTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA3NDQ5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGFsZ29yaXRobSINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0LCBjbGFzcyBfUHI+DQpjb25z
dGV4cHIgcGFpcjxfRndkSXQsIF9Gd2RJdD4gX01pbm1heF9lbGVtZW50X3VuY2hlY2tlZChfRndk
SXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIHBhaXI8X0Z3
ZEl0LCBfRndkSXQ+IF9Gb3VuZChfRmlyc3QsIF9GaXJzdCk7DQoNCiAgICBpZiAoX0ZpcnN0ICE9
IF9MYXN0KSB7DQogICAgICAgIHdoaWxlICgrK19GaXJzdCAhPSBfTGFzdCkgeyANCiAgICAgICAg
ICAgIF9Gd2RJdCBfTmV4dCA9IF9GaXJzdDsNCiAgICAgICAgICAgIGlmICgrK19OZXh0ID09IF9M
YXN0KSB7IA0KICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX0Zp
cnN0LCAqX0ZvdW5kLmZpcnN0KSkpIHsNCiAgICAgICAgICAgICAgICAgICAgX0ZvdW5kLmZpcnN0
ID0gX0ZpcnN0Ow0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRpY19jYXN0PGJvb2w+
KF9QcmVkKCpfRmlyc3QsICpfRm91bmQuc2Vjb25kKSkpIHsNCiAgICAgICAgICAgICAgICAgICAg
X0ZvdW5kLnNlY29uZCA9IF9GaXJzdDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
IGVsc2UgeyANCiAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oX1ByZWQoKl9O
ZXh0LCAqX0ZpcnN0KSkpIHsgDQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxi
b29sPihfUHJlZCgqX05leHQsICpfRm91bmQuZmlyc3QpKSkgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgX0ZvdW5kLmZpcnN0ID0gX05leHQ7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX0ZpcnN0LCAqX0Zv
dW5kLnNlY29uZCkpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBfRm91bmQuc2Vjb25kID0g
X0ZpcnN0Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsg
DQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZCgqX0ZpcnN0
LCAqX0ZvdW5kLmZpcnN0KSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3VuZC5maXJz
dCA9IF9GaXJzdDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBp
ZiAoIXN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpfTmV4dCwgKl9Gb3VuZC5zZWNvbmQpKSkgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvdW5kLnNlY29uZCA9IF9OZXh0Ow0KICAgICAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF9GaXJzdCA9
IF9OZXh0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIF9G
b3VuZDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByPg0KW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgcGFpcjxfRndkSXQsIF9Gd2RJdD4gbWlubWF4X2VsZW1lbnQoX0Z3ZEl0
IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3Zlcmlm
eV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICBjb25zdCBhdXRvIF9SZXN1bHQgPSBfTWlubWF4
X2VsZW1lbnRfdW5jaGVja2VkKF9HZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53cmFwcGVk
KF9MYXN0KSwgX1Bhc3NfZm4oX1ByZWQpKTsNCiAgICBfU2Vla193cmFwcGVkKF9MYXN0LCBfUmVz
dWx0LnNlY29uZCk7DQogICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9SZXN1bHQuZmlyc3QpOw0K
ICAgIHJldHVybiB7X0ZpcnN0LCBfTGFzdH07DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRndkSXQ+
DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBwYWlyPF9Gd2RJdCwgX0Z3ZEl0PiBtaW5tYXhfZWxl
bWVudChfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QpIHsNCiAgICANCiAgICByZXR1cm4gOjpz
dGQ6OiBtaW5tYXhfZWxlbWVudChfRmlyc3QsIF9MYXN0LCBsZXNzPD57fSk7DQp9DQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndkSXQsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9l
eGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gcGFpcjxfRndkSXQs
IF9Gd2RJdD4gbWlubWF4X2VsZW1lbnQoX0V4UG8mJiwgX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9M
YXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0DQogew0KICAgIA0KICAgIA0KICAgIHJldHVybiA6OnN0
ZDo6IG1pbm1heF9lbGVtZW50KF9GaXJzdCwgX0xhc3QsIF9QYXNzX2ZuKF9QcmVkKSk7DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0LCBfRW5hYmxlX2lmX2V4ZWN1dGlv
bl9wb2xpY3lfdDxfRXhQbz4gPSAwPg0KW1tub2Rpc2NhcmRdXSBwYWlyPF9Gd2RJdCwgX0Z3ZEl0
PiBtaW5tYXhfZWxlbWVudChfRXhQbyYmLCBfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QpIG5v
ZXhjZXB0ICB7DQogICAgDQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogbWlubWF4X2VsZW1lbnQo
X0ZpcnN0LCBfTGFzdCk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3NjExICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfVHkobWF4
KShpbml0aWFsaXplcl9saXN0PF9UeT4gX0lsaXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBj
b25zdCBfVHkqIF9SZXMgPSBfTWF4X2VsZW1lbnRfdW5jaGVja2VkKF9JbGlzdC5iZWdpbigpLCBf
SWxpc3QuZW5kKCksIF9QYXNzX2ZuKF9QcmVkKSk7DQogICAgcmV0dXJuICpfUmVzOw0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX1R5KG1heCkoaW5p
dGlhbGl6ZXJfbGlzdDxfVHk+IF9JbGlzdCkgew0KICAgIA0KICAgIHJldHVybiAoOjpzdGQ6OiBt
YXgpKF9JbGlzdCwgbGVzczw+e30pOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHksIGNsYXNzIF9Qcj4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UeShtaW4p
KGluaXRpYWxpemVyX2xpc3Q8X1R5PiBfSWxpc3QsIF9QciBfUHJlZCkgew0KICAgIA0KICAgIGNv
bnN0IF9UeSogX1JlcyA9IF9NaW5fZWxlbWVudF91bmNoZWNrZWQoX0lsaXN0LmJlZ2luKCksIF9J
bGlzdC5lbmQoKSwgX1Bhc3NfZm4oX1ByZWQpKTsNCiAgICByZXR1cm4gKl9SZXM7DQp9DQoNCnRl
bXBsYXRlIDxjbGFzcyBfVHk+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfVHkobWluKShpbml0
aWFsaXplcl9saXN0PF9UeT4gX0lsaXN0KSB7DQogICAgDQogICAgcmV0dXJuICg6OnN0ZDo6IG1p
bikoX0lsaXN0LCBsZXNzPD57fSk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFz
cyBfUHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBwYWlyPGNvbnN0IF9UeSYsIGNvbnN0IF9U
eSY+IG1pbm1heChjb25zdCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkmIF9SaWdodCwgX1ByIF9QcmVk
KSBub2V4Y2VwdCgNCiAgICBub2V4Y2VwdChzdGF0aWNfY2FzdDxib29sPihfUHJlZChfUmlnaHQs
IF9MZWZ0KSkpKSAgew0KICAgIA0KICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZChfUmln
aHQsIF9MZWZ0KSkpIHsNCiAgICAgICAgcmV0dXJuIHtfUmlnaHQsIF9MZWZ0fTsNCiAgICB9DQoN
CiAgICByZXR1cm4ge19MZWZ0LCBfUmlnaHR9Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBj
bGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBwYWlyPF9UeSwgX1R5PiBtaW5tYXgo
aW5pdGlhbGl6ZXJfbGlzdDxfVHk+IF9JbGlzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgcGFp
cjxjb25zdCBfVHkqLCBjb25zdCBfVHkqPiBfUmVzID0gX01pbm1heF9lbGVtZW50X3VuY2hlY2tl
ZChfSWxpc3QuYmVnaW4oKSwgX0lsaXN0LmVuZCgpLCBfUGFzc19mbihfUHJlZCkpOw0KICAgIHJl
dHVybiBwYWlyPF9UeSwgX1R5PigqX1Jlcy5maXJzdCwgKl9SZXMuc2Vjb25kKTsNCn0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9UeT4NCltbbm9kaXNjYXJkXV0gY29uc3RleHByIHBhaXI8Y29uc3QgX1R5
JiwgY29uc3QgX1R5Jj4gbWlubWF4KGNvbnN0IF9UeSYgX0xlZnQsIGNvbnN0IF9UeSYgX1JpZ2h0
KSBub2V4Y2VwdCgNCiAgICBub2V4Y2VwdChfUmlnaHQgPCBfTGVmdCkpICB7DQogICAgDQogICAg
aWYgKF9SaWdodCA8IF9MZWZ0KSB7DQogICAgICAgIDsNCiAgICAgICAgcmV0dXJuIHtfUmlnaHQs
IF9MZWZ0fTsNCiAgICB9DQoNCiAgICByZXR1cm4ge19MZWZ0LCBfUmlnaHR9Ow0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcGFpcjxfVHksIF9UeT4g
bWlubWF4KGluaXRpYWxpemVyX2xpc3Q8X1R5PiBfSWxpc3QpIHsNCiAgICANCiAgICByZXR1cm4g
OjpzdGQ6OiBtaW5tYXgoX0lsaXN0LCBsZXNzPD57fSk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9CaWRJdCwgY2xhc3MgX1ByPg0KaW5saW5lIGJvb2wgbmV4
dF9wZXJtdXRhdGlvbihfQmlkSXQgX0ZpcnN0LCBfQmlkSXQgX0xhc3QsIF9QciBfUHJlZCkgew0K
ICAgIA0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VG
aXJzdCAgICAgID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFz
dCA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICBhdXRvIF9VTmV4dCAgICAgICA9IF9VTGFz
dDsNCiAgICBpZiAoX1VGaXJzdCA9PSBfVUxhc3QgfHwgX1VGaXJzdCA9PSAtLV9VTmV4dCkgew0K
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgZm9yICg7OykgeyANCiAgICAgICAg
YXV0byBfVU5leHQxID0gX1VOZXh0Ow0KICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oX1By
ZWQoKi0tX1VOZXh0LCAqX1VOZXh0MSkpKSB7IA0KICAgICAgICAgICAgYXV0byBfVU1pZCA9IF9V
TGFzdDsNCiAgICAgICAgICAgIGRvIHsNCiAgICAgICAgICAgICAgICAtLV9VTWlkOw0KICAgICAg
ICAgICAgfSB3aGlsZSAoIXN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpfVU5leHQsICpfVU1pZCkp
KTsNCg0KICAgICAgICAgICAgOjpzdGQ6OiBpdGVyX3N3YXAoX1VOZXh0LCBfVU1pZCk7DQogICAg
ICAgICAgICA6OnN0ZDo6IHJldmVyc2UoX1VOZXh0MSwgX1VMYXN0KTsNCiAgICAgICAgICAgIHJl
dHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9VTmV4dCA9PSBfVUZpcnN0KSB7
IA0KICAgICAgICAgICAgOjpzdGQ6OiByZXZlcnNlKF9VRmlyc3QsIF9VTGFzdCk7DQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCnRlbXBsYXRlIDxjbGFz
cyBfQmlkSXQ+DQppbmxpbmUgYm9vbCBuZXh0X3Blcm11dGF0aW9uKF9CaWRJdCBfRmlyc3QsIF9C
aWRJdCBfTGFzdCkgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6IG5leHRfcGVybXV0YXRpb24o
X0ZpcnN0LCBfTGFzdCwgbGVzczw+e30pOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQmlkSXQs
IGNsYXNzIF9Qcj4NCmlubGluZSBib29sIHByZXZfcGVybXV0YXRpb24oX0JpZEl0IF9GaXJzdCwg
X0JpZEl0IF9MYXN0LCBfUHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShf
Rmlyc3QsIF9MYXN0KTsNCiAgICBhdXRvIF9VRmlyc3QgICAgICA9IF9HZXRfdW53cmFwcGVkKF9G
aXJzdCk7DQogICAgY29uc3QgYXV0byBfVUxhc3QgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQog
ICAgYXV0byBfVU5leHQgICAgICAgPSBfVUxhc3Q7DQogICAgaWYgKF9VRmlyc3QgPT0gX1VMYXN0
IHx8IF9VRmlyc3QgPT0gLS1fVU5leHQpIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0N
Cg0KICAgIGZvciAoOzspIHsgDQogICAgICAgIGF1dG8gX1VOZXh0MSA9IF9VTmV4dDsNCiAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9QcmVkKCpfVU5leHQxLCAqLS1fVU5leHQpKSkgeyAN
CiAgICAgICAgICAgIGF1dG8gX1VNaWQgPSBfVUxhc3Q7DQogICAgICAgICAgICBkbyB7DQogICAg
ICAgICAgICAgICAgLS1fVU1pZDsNCiAgICAgICAgICAgIH0gd2hpbGUgKCFzdGF0aWNfY2FzdDxi
b29sPihfUHJlZCgqX1VNaWQsICpfVU5leHQpKSk7DQoNCiAgICAgICAgICAgIDo6c3RkOjogaXRl
cl9zd2FwKF9VTmV4dCwgX1VNaWQpOw0KICAgICAgICAgICAgOjpzdGQ6OiByZXZlcnNlKF9VTmV4
dDEsIF9VTGFzdCk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGlmIChfVU5leHQgPT0gX1VGaXJzdCkgeyANCiAgICAgICAgICAgIDo6c3RkOjogcmV2ZXJz
ZShfVUZpcnN0LCBfVUxhc3QpOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9
DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZEl0Pg0KaW5saW5lIGJvb2wgcHJldl9w
ZXJtdXRhdGlvbihfQmlkSXQgX0ZpcnN0LCBfQmlkSXQgX0xhc3QpIHsNCiAgICANCiAgICByZXR1
cm4gOjpzdGQ6OiBwcmV2X3Blcm11dGF0aW9uKF9GaXJzdCwgX0xhc3QsIGxlc3M8Pnt9KTsNCn0N
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGlu
bGluZSBfRndkSXQgaXNfc29ydGVkX3VudGlsKGNvbnN0IF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBf
TGFzdCwgX1ByIF9QcmVkKSB7DQogICAgDQogICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBf
TGFzdCk7DQogICAgYXV0byBfVUZpcnN0ID0gX0dldF91bndyYXBwZWQoX0ZpcnN0KTsNCiAgICBh
dXRvIF9VTGFzdCAgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7DQogICAgaWYgKF9VRmlyc3QgIT0g
X1VMYXN0KSB7DQogICAgICAgIGZvciAoYXV0byBfVU5leHQgPSBfVUZpcnN0OyArK19VTmV4dCAh
PSBfVUxhc3Q7ICsrX1VGaXJzdCkgew0KICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+
KF9QcmVkKCpfVU5leHQsICpfVUZpcnN0KSkpIHsNCiAgICAgICAgICAgICAgICBfVUxhc3QgPSBf
VU5leHQ7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0N
CiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9MYXN0LCBfVUxhc3QpOw0KICAgIHJldHVybiBf
TGFzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdCwgY2xhc3MgX1ByPg0KW1tub2Rpc2Nh
cmRdXSBpbmxpbmUgYm9vbCBpc19zb3J0ZWQoX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBf
UHIgX1ByZWQpIHsNCiAgICANCiAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsN
CiAgICBjb25zdCBhdXRvIF9VRmlyc3QgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgIGNv
bnN0IGF1dG8gX1VMYXN0ICA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICByZXR1cm4gOjpz
dGQ6OiBpc19zb3J0ZWRfdW50aWwoX1VGaXJzdCwgX1VMYXN0LCBfUGFzc19mbihfUHJlZCkpID09
IF9VTGFzdDsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdD4NCltbbm9kaXNjYXJkXV0gaW5s
aW5lIF9Gd2RJdCBpc19zb3J0ZWRfdW50aWwoX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0KSB7
DQogICAgDQogICAgcmV0dXJuIDo6c3RkOjogaXNfc29ydGVkX3VudGlsKF9GaXJzdCwgX0xhc3Qs
IGxlc3M8Pnt9KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Gd2RJdD4NCltbbm9kaXNjYXJkXV0g
aW5saW5lIGJvb2wgaXNfc29ydGVkKF9Gd2RJdCBfRmlyc3QsIF9Gd2RJdCBfTGFzdCkgeyANCiAg
ICByZXR1cm4gOjpzdGQ6OiBpc19zb3J0ZWQoX0ZpcnN0LCBfTGFzdCwgbGVzczw+e30pOw0KfQ0K
DQoNCnRlbXBsYXRlIDxjbGFzcyBfRXhQbywgY2xhc3MgX0Z3ZEl0LCBjbGFzcyBfUHIsIF9FbmFi
bGVfaWZfZXhlY3V0aW9uX3BvbGljeV90PF9FeFBvPiA9IDA+DQpbW25vZGlzY2FyZF1dIF9Gd2RJ
dCBpc19zb3J0ZWRfdW50aWwoX0V4UG8mJiwgX0Z3ZEl0IF9GaXJzdCwgX0Z3ZEl0IF9MYXN0LCBf
UHIgX1ByZWQpIG5vZXhjZXB0OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9FeFBvLCBjbGFzcyBfRndk
SXQsIGNsYXNzIF9QciwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0gMD4N
Cltbbm9kaXNjYXJkXV0gYm9vbCBpc19zb3J0ZWQoX0V4UG8mJiBfRXhlYywgX0Z3ZEl0IF9GaXJz
dCwgX0Z3ZEl0IF9MYXN0LCBfUHIgX1ByZWQpIG5vZXhjZXB0ICB7DQogICAgDQogICAgcmV0dXJu
IDo6c3RkOjogaXNfc29ydGVkX3VudGlsKDo6c3RkOjogZm9yd2FyZDxfRXhQbz4oX0V4ZWMpLCBf
Rmlyc3QsIF9MYXN0LCBfUGFzc19mbihfUHJlZCkpID09IF9MYXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0V4UG8sIGNsYXNzIF9Gd2RJdCwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8
X0V4UG8+ID0gMD4NCltbbm9kaXNjYXJkXV0gX0Z3ZEl0IGlzX3NvcnRlZF91bnRpbChfRXhQbyYm
IF9FeGVjLCBfRndkSXQgX0ZpcnN0LCBfRndkSXQgX0xhc3QpIG5vZXhjZXB0ICB7DQogICAgDQog
ICAgcmV0dXJuIDo6c3RkOjogaXNfc29ydGVkX3VudGlsKDo6c3RkOjogZm9yd2FyZDxfRXhQbz4o
X0V4ZWMpLCBfRmlyc3QsIF9MYXN0LCBsZXNze30pOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0V4
UG8sIGNsYXNzIF9Gd2RJdCwgX0VuYWJsZV9pZl9leGVjdXRpb25fcG9saWN5X3Q8X0V4UG8+ID0g
MD4NCltbbm9kaXNjYXJkXV0gYm9vbCBpc19zb3J0ZWQoX0V4UG8mJiBfRXhlYywgX0Z3ZEl0IF9G
aXJzdCwgX0Z3ZEl0IF9MYXN0KSBub2V4Y2VwdCAgew0KICAgIA0KICAgIHJldHVybiA6OnN0ZDo6
IGlzX3NvcnRlZCg6OnN0ZDo6IGZvcndhcmQ8X0V4UG8+KF9FeGVjKSwgX0ZpcnN0LCBfTGFzdCwg
bGVzc3t9KTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfUHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhw
ciBjb25zdCBfVHkmIGNsYW1wKGNvbnN0IF9UeSYgX1ZhbCwgY29uc3QgX1R5JiBfTWluX3ZhbCwg
Y29uc3QgX1R5JiBfTWF4X3ZhbCwgX1ByIF9QcmVkKSB7DQogICAgDQoNCg0KDQoNCg0KI2xpbmUg
ODEyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxh
bGdvcml0aG0iDQoNCiAgICBpZiAoc3RhdGljX2Nhc3Q8Ym9vbD4oX1ByZWQoX01heF92YWwsIF9W
YWwpKSkgew0KICAgICAgICByZXR1cm4gX01heF92YWw7DQogICAgfQ0KDQogICAgaWYgKHN0YXRp
Y19jYXN0PGJvb2w+KF9QcmVkKF9WYWwsIF9NaW5fdmFsKSkpIHsNCiAgICAgICAgcmV0dXJuIF9N
aW5fdmFsOw0KICAgIH0NCg0KICAgIHJldHVybiBfVmFsOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5Pg0KW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3QgX1R5JiBjbGFtcChjb25zdCBfVHkm
IF9WYWwsIGNvbnN0IF9UeSYgX01pbl92YWwsIGNvbnN0IF9UeSYgX01heF92YWwpIHsNCiAgICAN
CiAgICByZXR1cm4gOjpzdGQ6OiBjbGFtcChfVmFsLCBfTWluX3ZhbCwgX01heF92YWwsIGxlc3N7
fSk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDgxNzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0KDQp9DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSA4MTc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFsZ29yaXRobSINCiNsaW5lIDgxODAgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYWxnb3JpdGhtIg0K
I2xpbmUgMjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1JlZlB0ci5oIg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZi5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9EdW1iUHRyVHJhaXRzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCiAg
ICANCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgRHVtYlB0clRyYWl0cyB7DQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gdXNpbmcgUmViaW5kVHJhaXRzID0gRHVtYlB0clRyYWl0czxVPjsN
Cg0KICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gVCo7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
Pg0KICAgIHN0YXRpYyBfX2ZvcmNlaW5saW5lIFQqIGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiBwdHIs
IFUmJiBuZXdWYWx1ZSkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShwdHIsIG5ld1ZhbHVlKTsgfQ0K
DQogICAgc3RhdGljIF9fZm9yY2VpbmxpbmUgdm9pZCBzd2FwKFN0b3JhZ2VUeXBlJiBhLCBTdG9y
YWdlVHlwZSYgYikgeyBzdGQ6OnN3YXAoYSwgYik7IH0NCiAgICBzdGF0aWMgX19mb3JjZWlubGlu
ZSBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyOyB9DQoNCiAg
ICBzdGF0aWMgU3RvcmFnZVR5cGUgaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFN0b3JhZ2VUeXBlPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KC0xKSk7IH0NCiAg
ICBzdGF0aWMgX19mb3JjZWlubGluZSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKGNvbnN0
IFN0b3JhZ2VUeXBlJiBwdHIpIHsgcmV0dXJuIHB0ciA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQ0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpEdW1iUHRyVHJhaXRzOw0KI2xpbmUgMzAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Jl
Zi5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9HZXRQdHIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQplbnVtIEhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgeyBIYXNoVGFibGVEZWxldGVkVmFsdWUgfTsNCmVudW0g
SGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUgeyBIYXNoVGFibGVFbXB0eVZhbHVlIH07DQoNCnRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyKFQqIHApIHsgcmV0dXJuIHA7IH0NCg0K
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NtYXJ0UHRyIHsNCiAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgdmFsdWUgPSBmYWxzZTsNCn07DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBULCBi
b29sIGlzU21hcnRQdHI+DQpzdHJ1Y3QgR2V0UHRySGVscGVyQmFzZTsNCg0KdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+DQpzdHJ1Y3QgR2V0UHRySGVscGVyQmFzZTxULCBmYWxzZSA+IHsNCiAgICB0eXBl
ZGVmIFQqIFB0clR5cGU7DQogICAgc3RhdGljIFQqIGdldFB0cihUJiBwKSB7IHJldHVybiBzdGQ6
OmFkZHJlc3NvZihwKTsgfQ0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgR2V0
UHRySGVscGVyQmFzZTxULCB0cnVlID4gew0KICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6UHRyVHlw
ZSBQdHJUeXBlOw0KICAgIHN0YXRpYyBQdHJUeXBlIGdldFB0cihjb25zdCBUJiBwKSB7IHJldHVy
biBwLmdldCgpOyB9DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCnN0cnVjdCBHZXRQdHJI
ZWxwZXIgOiBHZXRQdHJIZWxwZXJCYXNlPFQsIElzU21hcnRQdHI8VD46OnZhbHVlPiB7DQp9Ow0K
DQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCmlubGluZSB0eXBlbmFtZSBHZXRQdHJIZWxwZXI8VD46
OlB0clR5cGUgZ2V0UHRyKFQmIHApDQp7DQogICAgcmV0dXJuIEdldFB0ckhlbHBlcjxUPjo6Z2V0
UHRyKHApOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCmlubGluZSB0eXBlbmFtZSBHZXRQ
dHJIZWxwZXI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IFQmIHApDQp7DQogICAgcmV0dXJuIEdl
dFB0ckhlbHBlcjxUPjo6Z2V0UHRyKHApOw0KfQ0KDQoNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIERlbGV0ZXI+IHN0cnVjdCBJc1NtYXJ0UHRyPHN0ZDo6dW5pcXVlX3B0cjxULCBE
ZWxldGVyPj4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHRydWU7DQp9Ow0K
DQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVsZXRlcj4NCnN0cnVjdCBHZXRQdHJI
ZWxwZXI8c3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0ZXI+PiB7DQogICAgdHlwZWRlZiBUKiBQdHJU
eXBlOw0KICAgIHN0YXRpYyBUKiBnZXRQdHIoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFQsIERlbGV0
ZXI+JiBwKSB7IHJldHVybiBwLmdldCgpOyB9DQp9Ow0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZi5oIg0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9UeXBlQ2FzdHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0K
dGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZSwgYm9vbCBp
c0Jhc2VUeXBlID0gc3RkOjppc19iYXNlX29mX3Y8RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPj4NCnN0
cnVjdCBUeXBlQ2FzdFRyYWl0cyB7DQogICAgc3RhdGljIGJvb2wgaXNPZlR5cGUoQXJnVHlwZSYp
DQogICAgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc192b2lkX3Y8RXhwZWN0ZWRUeXBlPiwgIk1p
c3NpbmcgVHlwZUNhc3RUcmFpdHMgc3BlY2lhbGl6YXRpb24iKTsNCiAgICAgICAgcmV0dXJuIGZh
bHNlOw0KICAgIH0NCn07DQoNCg0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0
eXBlbmFtZSBBcmdUeXBlPg0Kc3RydWN0IFR5cGVDYXN0VHJhaXRzPEV4cGVjdGVkVHlwZSwgQXJn
VHlwZSwgdHJ1ZSA+IHsNCiAgICBzdGF0aWMgYm9vbCBpc09mVHlwZShBcmdUeXBlJikgeyByZXR1
cm4gdHJ1ZTsgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBl
bmFtZSBBcmdUeXBlPg0KaW5saW5lIGJvb2wgaXMoQXJnVHlwZSYgc291cmNlKQ0Kew0KICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8QXJnVHlwZSwgRXhwZWN0ZWRUeXBlPiwgIlVu
bmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsNCiAgICByZXR1cm4gVHlwZUNhc3RUcmFpdHM8Y29uc3Qg
RXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6aXNPZlR5cGUoc291cmNlKTsNCn0NCg0KdGVt
cGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZT4NCmlubGluZSBi
b29sIGlzKEFyZ1R5cGUqIHNvdXJjZSkNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEFyZ1R5cGUsIEV4cGVjdGVkVHlwZT4sICJVbm5lY2Vzc2FyeSB0eXBlIGNoZWNrIik7
DQogICAgcmV0dXJuIHNvdXJjZSAmJiBUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5cGUs
IGNvbnN0IEFyZ1R5cGU+Ojppc09mVHlwZSgqc291cmNlKTsNCn0NCg0KDQp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmVmZXJlbmNlLCB0eXBlbmFtZSBUPg0KdXNpbmcgbWF0Y2hfY29uc3RuZXNzX3QgPQ0K
ICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWxfdDxzdGQ6OmlzX2NvbnN0X3Y8UmVmZXJlbmNl
PiwgdHlwZW5hbWUgc3RkOjphZGRfY29uc3RfdDxUPiwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3RfdDxUPj47DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+
DQppbmxpbmUgbWF0Y2hfY29uc3RuZXNzX3Q8U291cmNlLCBUYXJnZXQ+JiBkb3duY2FzdChTb3Vy
Y2UmIHNvdXJjZSkNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWVfdjxTb3VyY2Us
IFRhcmdldD4sICJVbm5lY2Vzc2FyeSBjYXN0IHRvIHNhbWUgdHlwZSIpOw0KICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mX3Y8U291cmNlLCBUYXJnZXQ+LCAiU2hvdWxkIGJlIGEgZG93
bmNhc3QiKTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PG1hdGNoX2Nv
bnN0bmVzc190PFNvdXJjZSwgVGFyZ2V0PiY+KHNvdXJjZSk7DQp9DQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4NCmlubGluZSBtYXRjaF9jb25zdG5lc3NfdDxTb3Vy
Y2UsIFRhcmdldD4qIGRvd25jYXN0KFNvdXJjZSogc291cmNlKQ0Kew0KICAgIHN0YXRpY19hc3Nl
cnQoIXN0ZDo6aXNfc2FtZV92PFNvdXJjZSwgVGFyZ2V0PiwgIlVubmVjZXNzYXJ5IGNhc3QgdG8g
c2FtZSB0eXBlIik7DQogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxTb3VyY2Us
IFRhcmdldD4sICJTaG91bGQgYmUgYSBkb3duY2FzdCIpOw0KICAgICgodm9pZCkwKTsNCiAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8bWF0Y2hfY29uc3RuZXNzX3Q8U291cmNlLCBUYXJnZXQ+Kj4oc291
cmNlKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp9IA0KDQp1c2luZyBXVEY6OlR5
cGVDYXN0VHJhaXRzOw0KdXNpbmcgV1RGOjppczsNCnVzaW5nIFdURjo6ZG93bmNhc3Q7DQojbGlu
ZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUmVmLmgiDQoNCg0KDQoNCg0KI2xpbmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZi5oIg0KDQpuYW1lc3BhY2UgV1RG
IHsNCg0KaW5saW5lIHZvaWQgYWRvcHRlZChjb25zdCB2b2lkKikgeyB9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cz4gY2xhc3MgUmVmOw0KdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gRHVtYlB0clRyYWl0czxUPj4gUmVmPFQsIFB0clRy
YWl0cz4gYWRvcHRSZWYoVCYpOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFp
dHM+DQpjbGFzcyBSZWYgew0KcHVibGljOg0KICAgIHVzaW5nIFB0clRyYWl0cyA9IFRyYWl0czsN
CiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZWYgPSB0cnVlOw0KDQogICAgflJlZigpDQog
ICAgew0KDQoNCg0KI2xpbmUgNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZi5oIg0KICAgICAgICBpZiAobV9wdHIpDQogICAgICAg
ICAgICBQdHJUcmFpdHM6OnVud3JhcChtX3B0ciktPmRlcmVmKCk7DQogICAgfQ0KDQogICAgUmVm
KFQmIG9iamVjdCkNCiAgICAgICAgOiBtX3B0cigmb2JqZWN0KQ0KICAgIHsNCiAgICAgICAgb2Jq
ZWN0LnJlZigpOw0KICAgIH0NCg0KICAgIFJlZihjb25zdCBSZWYmIG90aGVyKQ0KICAgICAgICA6
IG1fcHRyKG90aGVyLnB0cigpKQ0KICAgIHsNCiAgICAgICAgbV9wdHItPnJlZigpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZihjb25zdCBSZWY8WCwg
WT4mIG90aGVyKQ0KICAgICAgICA6IG1fcHRyKG90aGVyLnB0cigpKQ0KICAgIHsNCiAgICAgICAg
bV9wdHItPnJlZigpOw0KICAgIH0NCg0KICAgIFJlZihSZWYmJiBvdGhlcikNCiAgICAgICAgOiBt
X3B0cigmb3RoZXIubGVha1JlZigpKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+DQogICAgUmVmKFJlZjxYLCBZ
PiYmIG90aGVyKQ0KICAgICAgICA6IG1fcHRyKCZvdGhlci5sZWFrUmVmKCkpDQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgUmVmJiBvcGVyYXRvcj0oVCYpOw0KICAgIFJl
ZiYgb3BlcmF0b3I9KFJlZiYmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZ
PiBSZWYmIG9wZXJhdG9yPShSZWY8WCwgWT4mJik7DQoNCiAgICBSZWYmIG9wZXJhdG9yPShjb25z
dCBSZWYmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWYmIG9wZXJh
dG9yPShjb25zdCBSZWY8WCwgWT4mKTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVu
YW1lIFk+IHZvaWQgc3dhcChSZWY8WCwgWT4mKTsNCg0KICAgIA0KICAgIFJlZihIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKSA6IG1fcHRyKFB0clRyYWl0czo6aGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkpIHsgfQ0KICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBQdHJUcmFpdHM6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKG1fcHRyKTsgfQ0KDQogICAgUmVm
KEhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKSA6IG1fcHRyKGhhc2hUYWJsZUVtcHR5VmFsdWUoKSkg
eyB9DQogICAgYm9vbCBpc0hhc2hUYWJsZUVtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0
ciA9PSBoYXNoVGFibGVFbXB0eVZhbHVlKCk7IH0NCiAgICBzdGF0aWMgVCogaGFzaFRhYmxlRW1w
dHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0NCg0KICAgIGNvbnN0IFQqIHB0ckFsbG93aW5n
SGFzaFRhYmxlRW1wdHlWYWx1ZSgpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gUHRyVHJhaXRz
Ojp1bndyYXAobV9wdHIpOyB9DQogICAgVCogcHRyQWxsb3dpbmdIYXNoVGFibGVFbXB0eVZhbHVl
KCkgeyAoKHZvaWQpMCk7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0NCg0KICAg
IHZvaWQgYXNzaWduVG9IYXNoVGFibGVFbXB0eVZhbHVlKFJlZiYmIHJlZmVyZW5jZSkNCiAgICB7
DQoNCg0KDQojbGluZSAxMjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1JlZi5oIg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1f
cHRyID0gJnJlZmVyZW5jZS5sZWFrUmVmKCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQoN
CiAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiBQdHJUcmFpdHM6
OnVud3JhcChtX3B0cik7IH0NCiAgICBUKiBwdHIoKSBjb25zdCAgeyAoKHZvaWQpMCk7IHJldHVy
biBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0NCiAgICBUJiBnZXQoKSBjb25zdCB7ICgodm9p
ZCkwKTsgcmV0dXJuICpQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0NCiAgICBvcGVyYXRvciBU
JigpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gKlB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsg
fQ0KICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiAhKm1fcHRy
OyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWY8VCwgUHRyVHJh
aXRzPiByZXBsYWNlKFJlZjxYLCBZPiYmKSA7DQoNCiAgICANCiAgICBSZWYgY29weVJlZigpICYm
ID0gZGVsZXRlOw0KICAgIFJlZiBjb3B5UmVmKCkgY29uc3QgJiAgeyByZXR1cm4gUmVmKCptX3B0
cik7IH0NCg0KICAgIFQmIGxlYWtSZWYoKSANCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCg0K
ICAgICAgICBUJiByZXN1bHQgPSAqUHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7
DQoNCg0KI2xpbmUgMTQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9SZWYuaCINCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQoN
CnByaXZhdGU6DQogICAgZnJpZW5kIFJlZiBhZG9wdFJlZjxUPihUJik7DQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJpZW5kIGNsYXNzIFJlZjsNCg0KICAgIGVudW0gQWRv
cHRUYWcgeyBBZG9wdCB9Ow0KICAgIFJlZihUJiBvYmplY3QsIEFkb3B0VGFnKQ0KICAgICAgICA6
IG1fcHRyKCZvYmplY3QpDQogICAgew0KICAgIH0NCg0KICAgIHR5cGVuYW1lIFB0clRyYWl0czo6
U3RvcmFnZVR5cGUgbV9wdHI7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBSZWY8VCwgVT4gYWRvcHRSZWYoVCYpOw0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVmPFQ+IG1h
a2VSZWYoVCYpOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIFJl
ZjxULCBVPiYgUmVmPFQsIFU+OjpvcGVyYXRvcj0oVCYgcmVmZXJlbmNlKQ0Kew0KICAgIFJlZiBj
b3BpZWRSZWZlcmVuY2UgPSByZWZlcmVuY2U7DQogICAgc3dhcChjb3BpZWRSZWZlcmVuY2UpOw0K
ICAgIHJldHVybiAqdGhpczsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4N
CmlubGluZSBSZWY8VCwgVT4mIFJlZjxULCBVPjo6b3BlcmF0b3I9KFJlZiYmIHJlZmVyZW5jZSkN
CnsNCg0KDQoNCiNsaW5lIDE4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUmVmLmgiDQogICAgUmVmIG1vdmVkUmVmZXJlbmNlID0gc3Rk
Ojptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihyZWZlcmVuY2UpOw0KICAgIHN3YXAobW92
ZWRSZWZlcmVuY2UpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4NCnRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+DQppbmxpbmUg
UmVmPFQsIFU+JiBSZWY8VCwgVT46Om9wZXJhdG9yPShSZWY8WCwgWT4mJiByZWZlcmVuY2UpDQp7
DQoNCg0KDQojbGluZSAxOTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1JlZi5oIg0KICAgIFJlZiBtb3ZlZFJlZmVyZW5jZSA9IHN0ZDo6
bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4ocmVmZXJlbmNlKTsNCiAgICBzd2FwKG1vdmVk
UmVmZXJlbmNlKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+DQppbmxpbmUgUmVmPFQsIFU+JiBSZWY8VCwgVT46Om9wZXJhdG9yPShjb25z
dCBSZWYmIHJlZmVyZW5jZSkNCnsNCg0KDQoNCiNsaW5lIDIwNSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUmVmLmgiDQogICAgUmVmIGNv
cGllZFJlZmVyZW5jZSA9IHJlZmVyZW5jZTsNCiAgICBzd2FwKGNvcGllZFJlZmVyZW5jZSk7DQog
ICAgcmV0dXJuICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0K
dGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4NCmlubGluZSBSZWY8VCwgVT4mIFJlZjxU
LCBVPjo6b3BlcmF0b3I9KGNvbnN0IFJlZjxYLCBZPiYgcmVmZXJlbmNlKQ0Kew0KDQoNCg0KI2xp
bmUgMjE4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9SZWYuaCINCiAgICBSZWYgY29waWVkUmVmZXJlbmNlID0gcmVmZXJlbmNlOw0KICAg
IHN3YXAoY29waWVkUmVmZXJlbmNlKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZ
Pg0KaW5saW5lIHZvaWQgUmVmPFQsIFU+Ojpzd2FwKFJlZjxYLCBZPiYgb3RoZXIpDQp7DQogICAg
VTo6c3dhcChtX3B0ciwgb3RoZXIubV9wdHIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfc2FtZTxVLCBEdW1iUHRyVHJhaXRzPFQ+Pjo6dmFsdWUgfHwgIXN0ZDo6
aXNfc2FtZTxZLCBEdW1iUHRyVHJhaXRzPFg+Pjo6dmFsdWU+Pg0KaW5saW5lIHZvaWQgc3dhcChS
ZWY8VCwgVT4mIGEsIFJlZjxYLCBZPiYgYikNCnsNCiAgICBhLnN3YXAoYik7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZPg0KaW5saW5lIFJlZjxULCBVPiBSZWY8VCwgVT46OnJlcGxhY2UoUmVmPFgsIFk+JiYgcmVm
ZXJlbmNlKQ0Kew0KDQoNCg0KI2xpbmUgMjQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWYuaCINCiAgICBhdXRvIG9sZFJlZmVyZW5j
ZSA9IGFkb3B0UmVmKCptX3B0cik7DQogICAgbV9wdHIgPSAmcmVmZXJlbmNlLmxlYWtSZWYoKTsN
CiAgICByZXR1cm4gb2xkUmVmZXJlbmNlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4NCmlubGlu
ZSBSZWY8VCwgVT4gc3RhdGljX3JlZmVyZW5jZV9jYXN0KFJlZjxYLCBZPiYgcmVmZXJlbmNlKQ0K
ew0KICAgIHJldHVybiBSZWY8VCwgVT4oc3RhdGljX2Nhc3Q8VCY+KHJlZmVyZW5jZS5nZXQoKSkp
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gRHVtYlB0clRyYWl0czxU
PiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4NCmlubGluZSBSZWY8VCwgVT4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0KFJlZjxYLCBZPiYmIHJlZmVyZW5jZSkNCnsNCiAgICByZXR1cm4gYWRvcHRSZWYo
c3RhdGljX2Nhc3Q8VCY+KHJlZmVyZW5jZS5sZWFrUmVmKCkpKTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSA9IER1bWJQdHJUcmFpdHM8VD4sIHR5cGVuYW1lIFgsIHR5cGVu
YW1lIFk+DQppbmxpbmUgUmVmPFQsIFU+IHN0YXRpY19yZWZlcmVuY2VfY2FzdChjb25zdCBSZWY8
WCwgWT4mIHJlZmVyZW5jZSkNCnsNCiAgICByZXR1cm4gUmVmPFQsIFU+KHN0YXRpY19jYXN0PFQm
PihyZWZlcmVuY2UuY29weVJlZigpLmdldCgpKSk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPg0Kc3RydWN0IEdldFB0ckhlbHBlcjxSZWY8VCwgVT4+IHsNCiAgICB0eXBl
ZGVmIFQqIFB0clR5cGU7DQogICAgc3RhdGljIFQqIGdldFB0cihjb25zdCBSZWY8VCwgVT4mIHAp
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KHAucHRyKCkpOyB9DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4NCnN0cnVjdCBJc1NtYXJ0UHRyPFJlZjxULCBVPj4gew0KICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHRydWU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIFJlZjxULCBVPiBhZG9wdFJlZihUJiByZWZlcmVu
Y2UpDQp7DQogICAgYWRvcHRlZCgmcmVmZXJlbmNlKTsNCiAgICByZXR1cm4gUmVmPFQsIFU+KHJl
ZmVyZW5jZSwgUmVmPFQsIFU+OjpBZG9wdCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpp
bmxpbmUgUmVmPFQ+IG1ha2VSZWYoVCYgcmVmZXJlbmNlKQ0Kew0KICAgIHJldHVybiBSZWY8VD4o
cmVmZXJlbmNlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFt
ZSBBcmdUeXBlLCB0eXBlbmFtZSBQdHJUcmFpdHM+DQppbmxpbmUgYm9vbCBpcyhSZWY8QXJnVHlw
ZSwgUHRyVHJhaXRzPiYgc291cmNlKQ0Kew0KICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNv
dXJjZS5nZXQoKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5h
bWUgQXJnVHlwZSwgdHlwZW5hbWUgUHRyVHJhaXRzPg0KaW5saW5lIGJvb2wgaXMoY29uc3QgUmVm
PEFyZ1R5cGUsIFB0clRyYWl0cz4mIHNvdXJjZSkNCnsNCiAgICByZXR1cm4gaXM8RXhwZWN0ZWRU
eXBlPihzb3VyY2UuZ2V0KCkpOw0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6OlJlZjsNCnVzaW5nIFdU
Rjo6YWRvcHRSZWY7DQp1c2luZyBXVEY6Om1ha2VSZWY7DQp1c2luZyBXVEY6OnN0YXRpY19yZWZl
cmVuY2VfY2FzdDsNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWZQdHIuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cz4gY2xhc3MgUmVmUHRyOw0KdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gRHVtYlB0clRyYWl0czxUPj4g
UmVmUHRyPFQsIFB0clRyYWl0cz4gYWRvcHRSZWYoVCopOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBfX2ZvcmNlaW5saW5lIHZvaWQgcmVmSWZOb3ROdWxsKFQqIHB0cikNCnsNCiAgICBpZiAoKHB0
ciAhPSBudWxscHRyKSkNCiAgICAgICAgcHRyLT5yZWYoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4gX19mb3JjZWlubGluZSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQqIHB0cikNCnsNCiAgICBp
ZiAoKHB0ciAhPSBudWxscHRyKSkNCiAgICAgICAgcHRyLT5kZXJlZigpOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+DQpjbGFzcyBSZWZQdHIgew0KICAgIHB1Ymxp
Yzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBs
b2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0
TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgdXNpbmcgUHRyVHJhaXRzID0g
VHJhaXRzOw0KICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7DQogICAgdHlwZWRlZiBWYWx1ZVR5cGUq
IFB0clR5cGU7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZWZQdHIgPSB0cnVlOw0K
DQogICAgX19mb3JjZWlubGluZSBjb25zdGV4cHIgUmVmUHRyKCkgOiBtX3B0cihudWxscHRyKSB7
IH0NCiAgICBfX2ZvcmNlaW5saW5lIFJlZlB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IHJlZklm
Tm90TnVsbChwdHIpOyB9DQogICAgX19mb3JjZWlubGluZSBSZWZQdHIoY29uc3QgUmVmUHRyJiBv
KSA6IG1fcHRyKG8ubV9wdHIpIHsgcmVmSWZOb3ROdWxsKFB0clRyYWl0czo6dW53cmFwKG1fcHRy
KSk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWZQdHIoY29uc3Qg
UmVmUHRyPFgsIFk+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgcmVmSWZOb3ROdWxsKFB0clRyYWl0
czo6dW53cmFwKG1fcHRyKSk7IH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgUmVmUHRyKFJlZlB0ciYm
IG8pIDogbV9wdHIoby5sZWFrUmVmKCkpIHsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5
cGVuYW1lIFk+IFJlZlB0cihSZWZQdHI8WCwgWT4mJiBvKSA6IG1fcHRyKG8ubGVha1JlZigpKSB7
IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWZQdHIoUmVmPFgsIFk+
JiYpOw0KDQogICAgDQogICAgUmVmUHRyKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9w
dHIoUHRyVHJhaXRzOjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKSkgeyB9DQogICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFB0clRyYWl0czo6aXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUobV9wdHIpOyB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIH5SZWZQdHIoKSB7
IGRlcmVmSWZOb3ROdWxsKFB0clRyYWl0czo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIpKTsgfQ0K
DQogICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gUHRyVHJhaXRzOjp1bndyYXAobV9wdHIpOyB9
DQoNCiAgICBSZWY8VD4gcmVsZWFzZU5vbk51bGwoKSB7ICgodm9pZCkwKTsgUmVmPFQ+IHRtcChh
ZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9DQogICAgUmVm
PGNvbnN0IFQ+IHJlbGVhc2VDb25zdE5vbk51bGwoKSB7ICgodm9pZCkwKTsgUmVmPGNvbnN0IFQ+
IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1wOyB9DQoN
CiAgICBUKiBsZWFrUmVmKCkgOw0KDQogICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyAoKHZvaWQp
MCk7IHJldHVybiAqUHRyVHJhaXRzOjp1bndyYXAobV9wdHIpOyB9DQogICAgX19mb3JjZWlubGlu
ZSBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gUHRyVHJhaXRzOjp1bndyYXAobV9wdHIp
OyB9DQoNCiAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQ0KDQog
ICAgDQogICAgdXNpbmcgVW5zcGVjaWZpZWRCb29sVHlwZSA9IHZvaWQgKFJlZlB0cjo6KikoKSBj
b25zdDsNCiAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9wdHIgPyAmUmVmUHRyOjp1bnNwZWNpZmllZEJvb2xUeXBlSW5zdGFuY2UgOiBudWxscHRyOyB9
DQoNCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3B0cjsg
fQ0KICAgIA0KICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0ciYpOw0KICAgIFJlZlB0
ciYgb3BlcmF0b3I9KFQqKTsNCiAgICBSZWZQdHImIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCk7
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gUmVmUHRyJiBvcGVyYXRvcj0o
Y29uc3QgUmVmUHRyPFgsIFk+Jik7DQogICAgUmVmUHRyJiBvcGVyYXRvcj0oUmVmUHRyJiYpOw0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0ciYgb3BlcmF0b3I9KFJl
ZlB0cjxYLCBZPiYmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYPiBSZWZQdHImIG9wZXJhdG9y
PShSZWY8WD4mJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiB2b2lk
IHN3YXAoUmVmUHRyPFgsIFk+Jik7DQoNCiAgICBSZWZQdHIgY29weVJlZigpICYmID0gZGVsZXRl
Ow0KICAgIFJlZlB0ciBjb3B5UmVmKCkgY29uc3QgJiAgeyByZXR1cm4gUmVmUHRyKG1fcHRyKTsg
fQ0KDQpwcml2YXRlOg0KICAgIHZvaWQgdW5zcGVjaWZpZWRCb29sVHlwZUluc3RhbmNlKCkgY29u
c3QgeyB9DQoNCiAgICBmcmllbmQgUmVmUHRyIGFkb3B0UmVmPFQsIFB0clRyYWl0cz4oVCopOw0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IGZyaWVuZCBjbGFzcyBSZWZQdHI7
DQoNCiAgICBlbnVtIEFkb3B0VGFnIHsgQWRvcHQgfTsNCiAgICBSZWZQdHIoVCogcHRyLCBBZG9w
dFRhZykgOiBtX3B0cihwdHIpIHsgfQ0KDQogICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdl
VHlwZSBtX3B0cjsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQp0ZW1w
bGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPg0KaW5saW5lIFJlZlB0cjxULCBVPjo6UmVmUHRy
KFJlZjxYLCBZPiYmIHJlZmVyZW5jZSkNCiAgICA6IG1fcHRyKCZyZWZlcmVuY2UubGVha1JlZigp
KQ0Kew0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIFQqIFJl
ZlB0cjxULCBVPjo6bGVha1JlZigpDQp7DQogICAgcmV0dXJuIFU6OmV4Y2hhbmdlKG1fcHRyLCBu
dWxscHRyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCmlubGluZSBS
ZWZQdHI8VCwgVT4mIFJlZlB0cjxULCBVPjo6b3BlcmF0b3I9KGNvbnN0IFJlZlB0ciYgbykNCnsN
CiAgICBSZWZQdHIgcHRyID0gbzsNCiAgICBzd2FwKHB0cik7DQogICAgcmV0dXJuICp0aGlzOw0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KdGVtcGxhdGU8dHlwZW5hbWUg
WCwgdHlwZW5hbWUgWT4NCmlubGluZSBSZWZQdHI8VCwgVT4mIFJlZlB0cjxULCBVPjo6b3BlcmF0
b3I9KGNvbnN0IFJlZlB0cjxYLCBZPiYgbykNCnsNCiAgICBSZWZQdHIgcHRyID0gbzsNCiAgICBz
d2FwKHB0cik7DQogICAgcmV0dXJuICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPg0KaW5saW5lIFJlZlB0cjxULCBVPiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0o
VCogb3B0cikNCnsNCiAgICBSZWZQdHIgcHRyID0gb3B0cjsNCiAgICBzd2FwKHB0cik7DQogICAg
cmV0dXJuICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5s
aW5lIFJlZlB0cjxULCBVPiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0oc3RkOjpudWxscHRyX3Qp
DQp7DQogICAgZGVyZWZJZk5vdE51bGwoVTo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIpKTsNCiAg
ICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQpp
bmxpbmUgUmVmUHRyPFQsIFU+JiBSZWZQdHI8VCwgVT46Om9wZXJhdG9yPShSZWZQdHImJiBvKQ0K
ew0KICAgIFJlZlB0ciBwdHIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG8p
Ow0KICAgIHN3YXAocHRyKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPg0KaW5s
aW5lIFJlZlB0cjxULCBVPiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0oUmVmUHRyPFgsIFk+JiYg
bykNCnsNCiAgICBSZWZQdHIgcHRyID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVy
PihvKTsNCiAgICBzd2FwKHB0cik7DQogICAgcmV0dXJuICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBWPg0KdGVtcGxhdGU8dHlwZW5hbWUgVT4NCmlubGluZSBSZWZQ
dHI8VCwgVj4mIFJlZlB0cjxULCBWPjo6b3BlcmF0b3I9KFJlZjxVPiYmIHJlZmVyZW5jZSkNCnsN
CiAgICBSZWZQdHIgcHRyID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihyZWZl
cmVuY2UpOw0KICAgIHN3YXAocHRyKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRl
PGNsYXNzIFQsIHR5cGVuYW1lIFU+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPg0K
aW5saW5lIHZvaWQgUmVmUHRyPFQsIFU+Ojpzd2FwKFJlZlB0cjxYLCBZPiYgbykNCnsNCiAgICBV
Ojpzd2FwKG1fcHRyLCBvLm1fcHRyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90
PCFzdGQ6OmlzX3NhbWU8VSwgRHVtYlB0clRyYWl0czxUPj46OnZhbHVlIHx8ICFzdGQ6OmlzX3Nh
bWU8WSwgRHVtYlB0clRyYWl0czxYPj46OnZhbHVlPj4NCmlubGluZSB2b2lkIHN3YXAoUmVmUHRy
PFQsIFU+JiBhLCBSZWZQdHI8WCwgWT4mIGIpDQp7DQogICAgYS5zd2FwKGIpOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPg0KaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VCwgVT4mIGEsIGNvbnN0IFJlZlB0cjxY
LCBZPiYgYikNCnsgDQogICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsNCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgWD4NCmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBYKiBiKQ0KeyANCiAgICByZXR1cm4gYS5nZXQo
KSA9PSBiOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUg
WT4NCmlubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUmVmUHRyPFgsIFk+JiBiKQ0K
ew0KICAgIHJldHVybiBhID09IGIuZ2V0KCk7IA0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPg0KaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBSZWZQdHI8VCwgVT4mIGEsIGNvbnN0IFJlZlB0cjxYLCBZPiYgYikNCnsgDQogICAg
cmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgDQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFg+DQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0
cjxULCBVPiYgYSwgWCogYikNCnsNCiAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyANCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4NCmlubGluZSBib29sIG9w
ZXJhdG9yIT0oVCogYSwgY29uc3QgUmVmUHRyPFgsIFk+JiBiKQ0KeyANCiAgICByZXR1cm4gYSAh
PSBiLmdldCgpOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA9IER1bWJQ
dHJUcmFpdHM8VD4sIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+DQppbmxpbmUgUmVmUHRyPFQsIFU+
IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUmVmUHRyPFgsIFk+JiBwKQ0KeyANCiAgICByZXR1
cm4gUmVmUHRyPFQsIFU+KHN0YXRpY19jYXN0PFQqPihwLmdldCgpKSk7DQp9DQoNCnRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0Kc3RydWN0IElzU21hcnRQdHI8UmVmUHRyPFQsIFU+
PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gdHJ1ZTsNCn07DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUgUmVmUHRyPFQsIFU+IGFkb3B0UmVm
KFQqIHApDQp7DQogICAgYWRvcHRlZChwKTsNCiAgICByZXR1cm4gUmVmUHRyPFQsIFU+KHAsIFJl
ZlB0cjxULCBVPjo6QWRvcHQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmVm
UHRyPFQ+IG1ha2VSZWZQdHIoVCogcG9pbnRlcikNCnsNCiAgICByZXR1cm4gcG9pbnRlcjsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiBtYWtlUmVmUHRyKFQmIHJl
ZmVyZW5jZSkNCnsNCiAgICByZXR1cm4gJnJlZmVyZW5jZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlLCB0eXBlbmFtZSBQdHJUcmFpdHM+DQpp
bmxpbmUgYm9vbCBpcyhSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzPiYgc291cmNlKQ0Kew0KICAg
IHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZSwgdHlwZW5hbWUgUHRyVHJhaXRz
Pg0KaW5saW5lIGJvb2wgaXMoY29uc3QgUmVmUHRyPEFyZ1R5cGUsIFB0clRyYWl0cz4mIHNvdXJj
ZSkNCnsNCiAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOw0KfQ0KDQp9
IA0KDQp1c2luZyBXVEY6OlJlZlB0cjsNCnVzaW5nIFdURjo6YWRvcHRSZWY7DQp1c2luZyBXVEY6
Om1ha2VSZWZQdHI7DQp1c2luZyBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q7DQojbGluZSAzNyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
UHJpbnRTdHJlYW0uaCINCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KaW5saW5lIGNvbnN0IGNoYXIq
IGJvb2xGb3JQcmludGluZyhib29sIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA/ICJ0cnVl
IiA6ICJmYWxzZSI7DQp9DQoNCmNsYXNzIFByaW50U3RyZWFtIHsNCiAgICBwdWJsaWM6IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24p
IHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2Vk
ID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVy
VGhpc01hY3JvID0gaW50OyBQcmludFN0cmVhbShjb25zdCBQcmludFN0cmVhbSYpID0gZGVsZXRl
OyBQcmludFN0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IFByaW50U3RyZWFtJikgPSBkZWxldGU7Ow0K
cHVibGljOg0KICAgIFByaW50U3RyZWFtKCk7DQogICAgdmlydHVhbCB+UHJpbnRTdHJlYW0oKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHByaW50Zihjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHByaW50ZlZhcmlhYmxl
Rm9ybWF0KGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsNCiAgICB2aXJ0dWFsIHZvaWQgdnByaW50
Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpICA9IDA7DQoNCiAgICANCiAgICANCiAgICB2
aXJ0dWFsIHZvaWQgZmx1c2goKTsNCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0K
ICAgIHZvaWQgYXRvbWljYWxseShjb25zdCBGdW5jJiBmdW5jKQ0KICAgIHsNCiAgICAgICAgZnVu
YyhiZWdpbigpKTsNCiAgICAgICAgZW5kKCk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIFR5cGVzPg0KICAgIHZvaWQgcHJpbnQoY29uc3QgVHlwZXMmLi4uIHZhbHVlcykN
CiAgICB7DQogICAgICAgIGF0b21pY2FsbHkoDQogICAgICAgICAgICBbJl0gKFByaW50U3RyZWFt
JiBvdXQpIHsNCiAgICAgICAgICAgICAgICBvdXQucHJpbnRJbXBsKHZhbHVlcy4uLik7DQogICAg
ICAgICAgICB9KTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+
DQogICAgdm9pZCBwcmludGxuKGNvbnN0IFR5cGVzJi4uLiB2YWx1ZXMpDQogICAgew0KICAgICAg
ICBwcmludCh2YWx1ZXMuLi4sICJcbiIpOw0KICAgIH0NCg0KcHJvdGVjdGVkOg0KICAgIHZvaWQg
cHJpbnRJbXBsKCkgeyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBU
eXBlcz4NCiAgICB2b2lkIHByaW50SW1wbChjb25zdCBUJiB2YWx1ZSwgY29uc3QgVHlwZXMmLi4u
IHJlbWFpbmluZ1ZhbHVlcykNCiAgICB7DQogICAgICAgIHByaW50SW50ZXJuYWwoKnRoaXMsIHZh
bHVlKTsNCiAgICAgICAgcHJpbnRJbXBsKHJlbWFpbmluZ1ZhbHVlcy4uLik7DQogICAgfQ0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2aXJ0dWFsIFByaW50U3RyZWFtJiBiZWdpbigp
Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2aXJ0dWFsIHZvaWQgZW5kKCk7DQp9Ow0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29u
c3QgY2hhciopOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYsIGNvbnN0IFN0cmluZ1ZpZXcmKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBjb25zdCBDU3RyaW5nJik7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgY29uc3QgU3RyaW5n
Jik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgY29uc3QgU3RyaW5nSW1wbCopOw0KaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBBdG9tU3RyaW5nSW1wbCogdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChv
dXQsIGJpdHdpc2VfY2FzdDxjb25zdCBTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQ0KaW5saW5lIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBVbmlxdWVkU3RyaW5nSW1w
bCogdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChvdXQsIGJpdHdpc2VfY2FzdDxjb25zdCBTdHJpbmdJ
bXBsKj4odmFsdWUpKTsgfQ0KaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCYgdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChvdXQs
ICZ2YWx1ZSk7IH0NCmlubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
Y2hhciogdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
Pih2YWx1ZSkpOyB9DQppbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IENTdHJpbmcmIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxjb25zdCBD
U3RyaW5nJj4odmFsdWUpKTsgfQ0KaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBTdHJpbmcmIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0LCBzdGF0aWNfY2FzdDxj
b25zdCBTdHJpbmcmPih2YWx1ZSkpOyB9DQppbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFN0cmluZ0ltcGwqIHZhbHVlKSB7IHByaW50SW50ZXJuYWwob3V0LCBzdGF0
aWNfY2FzdDxjb25zdCBTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQ0KaW5saW5lIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBdG9tU3RyaW5nSW1wbCogdmFsdWUpIHsgcHJpbnRJ
bnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IEF0b21TdHJpbmdJbXBsKj4odmFsdWUpKTsg
fQ0KaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBVbmlxdWVkU3Ry
aW5nSW1wbCogdmFsdWUpIHsgcHJpbnRJbnRlcm5hbChvdXQsIHN0YXRpY19jYXN0PGNvbnN0IFVu
aXF1ZWRTdHJpbmdJbXBsKj4odmFsdWUpKTsgfQ0KaW5saW5lIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBVbmlxdWVkU3RyaW5nSW1wbCYgdmFsdWUpIHsgcHJpbnRJbnRlcm5h
bChvdXQsICZ2YWx1ZSk7IH0NCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mLCBib29sKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBzaWduZWQgY2hhcik7IA0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGNoYXIpOyANCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBzaG9y
dCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgdW5zaWduZWQgc2hvcnQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIGludCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgdW5zaWduZWQpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGxvbmcpOw0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvbmcpOw0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGxv
bmcgbG9uZyk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgdW5zaWduZWQgbG9uZyBsb25nKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBmbG9hdCk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgZG91YmxlKTsNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBSYXdQb2ludGVyKTsN
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBUJiB2YWx1ZSkNCnsNCiAgICB2YWx1ZS5kdW1wKG91dCk7DQp9DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgZHVtcENoYXJhY3RlcihQcmlu
dFN0cmVhbSYsIGNoYXIpOw0KY2xhc3MgQ2hhcmFjdGVyRHVtcCB7IHB1YmxpYzogQ2hhcmFjdGVy
RHVtcChjaGFyIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfSB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QgeyBkdW1wQ2hhcmFjdGVyKG91dCwgbV92YWx1ZSk7IH0gcHJpdmF0ZTog
Y2hhciBtX3ZhbHVlOyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KY2xhc3MgUG9pbnRlckR1
bXAgew0KcHVibGljOg0KICAgIFBvaW50ZXJEdW1wKGNvbnN0IFQqIHB0cikNCiAgICAgICAgOiBt
X3B0cihwdHIpDQogICAgew0KICAgIH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChtX3B0cikNCiAgICAgICAgICAgIHByaW50
SW50ZXJuYWwob3V0LCAqbV9wdHIpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBvdXQucHJp
bnQoIihudWxsKSIpOw0KICAgIH0NCnByaXZhdGU6DQogICAgY29uc3QgVCogbV9wdHI7DQp9Ow0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KUG9pbnRlckR1bXA8VD4gcG9pbnRlckR1bXAoY29uc3Qg
VCogcHRyKSB7IHJldHVybiBQb2ludGVyRHVtcDxUPihwdHIpOyB9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+DQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPFQ+JiB2YWx1ZSkNCnsNCiAgICBvdXQucHJpbnQocG9pbnRlckR1bXAodmFsdWUu
Z2V0KCkpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBSZWZQdHI8VD4mIHZhbHVlKQ0Kew0KICAgIG91dC5wcmlu
dChwb2ludGVyRHVtcCh2YWx1ZS5nZXQoKSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPg0KY2xhc3MgVmFsdWVJbkNvbnRleHQgew0KcHVibGljOg0KICAgIFZhbHVlSW5D
b250ZXh0KGNvbnN0IFQmIHZhbHVlLCBVKiBjb250ZXh0KQ0KICAgICAgICA6IG1fdmFsdWUoJnZh
bHVlKQ0KICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQ0KICAgIHsNCiAgICB9DQogICAgDQog
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0DQogICAgew0KICAgICAgICBtX3Zh
bHVlLT5kdW1wSW5Db250ZXh0KG91dCwgbV9jb250ZXh0KTsNCiAgICB9DQoNCnByaXZhdGU6DQog
ICAgY29uc3QgVCogbV92YWx1ZTsNCiAgICBVKiBtX2NvbnRleHQ7DQp9Ow0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KVmFsdWVJbkNvbnRleHQ8VCwgVT4gaW5Db250ZXh0KGNv
bnN0IFQmIHZhbHVlLCBVKiBjb250ZXh0KQ0Kew0KICAgIHJldHVybiBWYWx1ZUluQ29udGV4dDxU
LCBVPih2YWx1ZSwgY29udGV4dCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+DQpjbGFzcyBQb2ludGVyRHVtcEluQ29udGV4dCB7DQpwdWJsaWM6DQogICAgUG9pbnRlckR1
bXBJbkNvbnRleHQoY29uc3QgVCogcHRyLCBVKiBjb250ZXh0KQ0KICAgICAgICA6IG1fcHRyKHB0
cikNCiAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkNCiAgICB7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKG1f
cHRyKQ0KICAgICAgICAgICAgbV9wdHItPmR1bXBJbkNvbnRleHQob3V0LCBtX2NvbnRleHQpOw0K
ICAgICAgICBlbHNlDQogICAgICAgICAgICBvdXQucHJpbnQoIihudWxsKSIpOw0KICAgIH0NCg0K
cHJpdmF0ZToNCiAgICBjb25zdCBUKiBtX3B0cjsNCiAgICBVKiBtX2NvbnRleHQ7DQp9Ow0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KUG9pbnRlckR1bXBJbkNvbnRleHQ8VCwg
VT4gcG9pbnRlckR1bXBJbkNvbnRleHQoY29uc3QgVCogcHRyLCBVKiBjb250ZXh0KQ0Kew0KICAg
IHJldHVybiBQb2ludGVyRHVtcEluQ29udGV4dDxULCBVPihwdHIsIGNvbnRleHQpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KY2xhc3MgVmFsdWVJZ25vcmluZ0NvbnRl
eHQgew0KcHVibGljOg0KICAgIFZhbHVlSWdub3JpbmdDb250ZXh0KGNvbnN0IFUmIHZhbHVlKQ0K
ICAgICAgICA6IG1fdmFsdWUoJnZhbHVlKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0DQogICAgew0KICAgICAgICBUIGNvbnRleHQ7DQog
ICAgICAgIG1fdmFsdWUtPmR1bXBJbkNvbnRleHQob3V0LCAmY29udGV4dCk7DQogICAgfQ0KDQpw
cml2YXRlOg0KICAgIGNvbnN0IFUqIG1fdmFsdWU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPg0KVmFsdWVJZ25vcmluZ0NvbnRleHQ8VCwgVT4gaWdub3JpbmdDb250ZXh0
KGNvbnN0IFUmIHZhbHVlKQ0Kew0KICAgIHJldHVybiBWYWx1ZUlnbm9yaW5nQ29udGV4dDxULCBV
Pih2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZS4uLiBUeXBl
cz4NCnN0cnVjdCBGb3JtYXRJbXBsVW5wYWNrZXIgew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3M+DQogICAgc3RhdGljIHZvaWQgdW5wYWNrKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHN0
ZDo6dHVwbGU8VHlwZXMuLi4+JiB0dXBsZSwgY29uc3QgQXJncyYuLi4gdmFsdWVzKTsNCn07DQog
ICAgDQp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4NCnN0cnVjdCBGb3JtYXRJbXBsVW5wYWNr
ZXI8MCwgVHlwZXMuLi4+IHsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPg0KICAgIHN0
YXRpYyB2b2lkIHVucGFjayhQcmludFN0cmVhbSYgb3V0LCBjb25zdCBzdGQ6OnR1cGxlPFR5cGVz
Li4uPiYgdHVwbGUsIGNvbnN0IEFyZ3MmLi4uIHZhbHVlcykNCiAgICB7DQogICAgICAgIG91dC5w
cmludGZWYXJpYWJsZUZvcm1hdChzdGQ6OmdldDwwPih0dXBsZSksIHZhbHVlcy4uLik7DQogICAg
fQ0KfTsNCiAgICANCnRlbXBsYXRlPHVuc2lnbmVkIGluZGV4LCB0eXBlbmFtZS4uLiBUeXBlcz4N
CnRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+DQp2b2lkIEZvcm1hdEltcGxVbnBhY2tlcjxpbmRl
eCwgVHlwZXMuLi4+Ojp1bnBhY2soUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qgc3RkOjp0dXBsZTxU
eXBlcy4uLj4mIHR1cGxlLCBjb25zdCBBcmdzJi4uLiB2YWx1ZXMpDQp7DQogICAgRm9ybWF0SW1w
bFVucGFja2VyPGluZGV4IC0gMSwgVHlwZXMuLi4+Ojp1bnBhY2sob3V0LCB0dXBsZSwgc3RkOjpn
ZXQ8aW5kZXg+KHR1cGxlKSwgdmFsdWVzLi4uKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUuLi4g
VHlwZXM+DQpjbGFzcyBGb3JtYXRJbXBsIHsNCnB1YmxpYzoNCiAgICBGb3JtYXRJbXBsKFR5cGVz
Li4uIHZhbHVlcykNCiAgICAgICAgOiBtX3ZhbHVlcyh2YWx1ZXMuLi4pDQogICAgew0KICAgIH0N
CiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QNCiAgICB7DQogICAg
ICAgIEZvcm1hdEltcGxVbnBhY2tlcjxzaXplb2YuLi4oVHlwZXMpIC0gMSwgVHlwZXMuLi4+Ojp1
bnBhY2sob3V0LCBtX3ZhbHVlcyk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHN0ZDo6dHVwbGU8
VHlwZXMuLi4+IG1fdmFsdWVzOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+DQpG
b3JtYXRJbXBsPFR5cGVzLi4uPiBmb3JtYXQoVHlwZXMuLi4gdmFsdWVzKQ0Kew0KICAgIHJldHVy
biBGb3JtYXRJbXBsPFR5cGVzLi4uPih2YWx1ZXMuLi4pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPg0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IE9wdGlvbmFs
PFQ+JiB2YWx1ZSkNCnsNCiAgICBpZiAodmFsdWUpDQogICAgICAgIG91dC5wcmludCgqdmFsdWUp
Ow0KICAgIGVsc2UNCiAgICAgICAgb3V0LnByaW50KCI8bnVsbG9wdD4iKTsNCn0NCg0KfSANCg0K
dXNpbmcgV1RGOjpib29sRm9yUHJpbnRpbmc7DQp1c2luZyBXVEY6OkNoYXJhY3RlckR1bXA7DQp1
c2luZyBXVEY6OlBvaW50ZXJEdW1wOw0KdXNpbmcgV1RGOjpQcmludFN0cmVhbTsNCnVzaW5nIFdU
Rjo6Zm9ybWF0Ow0KdXNpbmcgV1RGOjppZ25vcmluZ0NvbnRleHQ7DQp1c2luZyBXVEY6OmluQ29u
dGV4dDsNCnVzaW5nIFdURjo6cG9pbnRlckR1bXA7DQp1c2luZyBXVEY6OnBvaW50ZXJEdW1wSW5D
b250ZXh0Ow0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL0RhdGFMb2cuaCINCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIFByaW50U3RyZWFtJiBkYXRhRmlsZSgpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIHZvaWQgc2V0RGF0YUZpbGUoY29uc3QgY2hhciogcGF0aCk7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdm9pZCBzZXREYXRhRmlsZShzdGQ6OnVuaXF1ZV9wdHI8UHJpbnRTdHJlYW0+
JiYpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkYXRhTG9nRlYoY29uc3QgY2hhciog
Zm9ybWF0LCB2YV9saXN0KSA7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkYXRhTG9nRihj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgZGF0
YUxvZ0ZTdHJpbmcoY29uc3QgY2hhciopOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4N
Cl9fZGVjbHNwZWMobm9pbmxpbmUpIHZvaWQgZGF0YUxvZyhjb25zdCBUeXBlcyYuLi4gdmFsdWVz
KQ0Kew0KICAgIGRhdGFGaWxlKCkucHJpbnQodmFsdWVzLi4uKTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gVHlwZXM+DQp2b2lkIGRhdGFMb2dMbihjb25zdCBUeXBlcyYuLi4gdmFsdWVzKQ0K
ew0KICAgIGRhdGFMb2codmFsdWVzLi4uLCAiXG4iKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVHlwZXM+DQpfX2ZvcmNlaW5saW5lIHZvaWQgZGF0YUxvZ0lmKGJvb2wgc2hvdWxkTG9nLCBj
b25zdCBUeXBlcyYuLi4gdmFsdWVzKQ0Kew0KICAgIGlmICgoc2hvdWxkTG9nKSkNCiAgICAgICAg
ZGF0YUxvZyh2YWx1ZXMuLi4pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4NCl9f
Zm9yY2VpbmxpbmUgdm9pZCBkYXRhTG9nTG5JZihib29sIHNob3VsZExvZywgY29uc3QgVHlwZXMm
Li4uIHZhbHVlcykNCnsNCiAgICBpZiAoKHNob3VsZExvZykpDQogICAgICAgIGRhdGFMb2dMbih2
YWx1ZXMuLi4pOw0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6OmRhdGFMb2c7DQp1c2luZyBXVEY6OmRh
dGFMb2dMbjsNCnVzaW5nIFdURjo6ZGF0YUxvZ0lmOw0KdXNpbmcgV1RGOjpkYXRhTG9nTG5JZjsN
CnVzaW5nIFdURjo6ZGF0YUxvZ0Y7DQp1c2luZyBXVEY6OmRhdGFMb2dGU3RyaW5nOw0KI2xpbmUg
MzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1B0clRhZy5oIg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCmVudW0gUHRyVGFnIDogdWludHB0cl90IHsNCiAgICBOb1B0clRhZywNCiAgICBDRnVu
Y3Rpb25QdHJUYWcsDQp9Ow0KDQoNCg0KDQojbGluZSA1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUHRyVGFnLmgiDQoNCg0KI3ByYWdt
YSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzA3KQ0KI2xpbmUgNjEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1B0clRhZy5oIg0KDQp0ZW1wbGF0ZTxzaXplX3QgTj4NCmNvbnN0ZXhwciB1aW50cHRyX3QgbWFr
ZVB0clRhZ0hhc2goY29uc3QgY2hhciAoJnN0cilbTl0pDQp7DQogICAgdWludHB0cl90IHJlc3Vs
dCA9IDEzNDc3NTgxMzsNCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkNCiAgICAg
ICAgcmVzdWx0ICs9ICgocmVzdWx0ICogc3RyW2ldKSBeIChyZXN1bHQgPj4gMTYpKTsNCiAgICBy
ZXR1cm4gcmVzdWx0ICYgMHhmZmZmOw0KfQ0KDQoNCiNsaW5lIDczICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QdHJUYWcuaCINCg0KDQoN
Cg0KDQpzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oTm9QdHJUYWcpID09IHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oMCksICIiKTsNCnN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihDRnVuY3Rpb25QdHJUYWcpID09IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSks
ICIiKTsNCg0KY29uc3RleHByIFB0clRhZyBGcmVlU3BhY2VQdHJUYWcgPSBzdGF0aWNfY2FzdDxQ
dHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiRnJlZVNwYWNlUHRyVGFnXCIiKSk7IHN0YXRp
Y19hc3NlcnQoRnJlZVNwYWNlUHRyVGFnICE9IE5vUHRyVGFnICYmIEZyZWVTcGFjZVB0clRhZyAh
PSBDRnVuY3Rpb25QdHJUYWcsICIiKTsgY29uc3RleHByIFB0clRhZyBIYW5kbGVNZW1vcnlQdHJU
YWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiSGFuZGxlTWVt
b3J5UHRyVGFnXCIiKSk7IHN0YXRpY19hc3NlcnQoSGFuZGxlTWVtb3J5UHRyVGFnICE9IE5vUHRy
VGFnICYmIEhhbmRsZU1lbW9yeVB0clRhZyAhPSBDRnVuY3Rpb25QdHJUYWcsICIiKTsgY29uc3Rl
eHByIFB0clRhZyBQbGF0Zm9ybVJlZ2lzdGVyc0xSUHRyVGFnID0gc3RhdGljX2Nhc3Q8UHRyVGFn
PihXVEY6Om1ha2VQdHJUYWdIYXNoKCJcIlBsYXRmb3JtUmVnaXN0ZXJzTFJQdHJUYWdcIiIpKTsg
c3RhdGljX2Fzc2VydChQbGF0Zm9ybVJlZ2lzdGVyc0xSUHRyVGFnICE9IE5vUHRyVGFnICYmIFBs
YXRmb3JtUmVnaXN0ZXJzTFJQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7IGNvbnN0ZXhw
ciBQdHJUYWcgUGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZyA9IHN0YXRpY19jYXN0PFB0clRhZz4o
V1RGOjptYWtlUHRyVGFnSGFzaCgiXCJQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnXCIiKSk7IHN0
YXRpY19hc3NlcnQoUGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZyAhPSBOb1B0clRhZyAmJiBQbGF0
Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnICE9IENGdW5jdGlvblB0clRhZywgIiIpOw0KDQoNCiNwcmFn
bWEgd2FybmluZyhwb3ApDQojbGluZSA4NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUHRyVGFnLmgiDQoNCnN0cnVjdCBQdHJUYWdMb29r
dXAgew0KICAgIHVzaW5nIFRhZ0ZvclB0ckZ1bmMgPSBjb25zdCBjaGFyKiAoKikoY29uc3Qgdm9p
ZCopOw0KICAgIHVzaW5nIFB0clRhZ05hbWVGdW5jID0gY29uc3QgY2hhciogKCopKFB0clRhZyk7
DQoNCiAgICB2b2lkIGluaXRpYWxpemUoVGFnRm9yUHRyRnVuYyB0YWdGb3JQdHIsIFB0clRhZ05h
bWVGdW5jIHB0clRhZ05hbWUpDQogICAgew0KICAgICAgICB0aGlzLT50YWdGb3JQdHIgPSB0YWdG
b3JQdHI7DQogICAgICAgIHRoaXMtPnB0clRhZ05hbWUgPSBwdHJUYWdOYW1lOw0KICAgIH0NCg0K
ICAgIFRhZ0ZvclB0ckZ1bmMgdGFnRm9yUHRyOw0KICAgIFB0clRhZ05hbWVGdW5jIHB0clRhZ05h
bWU7DQogICAgUHRyVGFnTG9va3VwKiBuZXh0Ow0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNDYwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9QdHJUYWcuaCINCg0KaW5saW5lIHZvaWQgcmVnaXN0ZXJQdHJU
YWdMb29rdXAoUHRyVGFnTG9va3VwKikgeyB9DQppbmxpbmUgdm9pZCByZXBvcnRCYWRUYWcoY29u
c3Qgdm9pZCosIFB0clRhZykgeyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgVCog
dGFnQXJyYXlQdHIoc3RkOjpudWxscHRyX3QsIHNpemVfdCBzaXplKQ0Kew0KICAgICgodm9pZClz
aXplKTsNCiAgICByZXR1cm4gbnVsbHB0cjsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmlu
bGluZSBUKiB0YWdBcnJheVB0cihUKiBwdHIsIHNpemVfdCkNCnsNCiAgICByZXR1cm4gcHRyOw0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KaW5saW5lIFQqIHVudGFnQXJyYXlQdHIoVCogcHRy
LCBzaXplX3QpDQp7DQogICAgcmV0dXJuIHB0cjsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4N
CmlubGluZSBUKiByZW1vdmVBcnJheVB0clRhZyhUKiBwdHIpDQp7DQogICAgcmV0dXJuIHB0cjsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmlubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0
ciwgc2l6ZV90LCBzaXplX3QpDQp7DQogICAgcmV0dXJuIHB0cjsNCn0NCg0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPFQsIFB0clR5
cGU+Ojp2YWx1ZT4+DQpjb25zdGV4cHIgVCB0YWdDb2RlUHRyKFB0clR5cGUgcHRyLCBQdHJUYWcp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihwdHIpOyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IFB0clRhZywgdHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Pg0KaW5saW5lIFQgdGFnQ29kZVB0cihQdHJU
eXBlIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHB0cik7IH0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRl
cjxQdHJUeXBlPjo6dmFsdWU+Pg0KY29uc3RleHByIFB0clR5cGUgdGFnQ29kZVB0cihQdHJUeXBl
IHB0ciwgUHRyVGFnKSB7IHJldHVybiBwdHI7IH0NCg0KdGVtcGxhdGU8UHRyVGFnLCB0eXBlbmFt
ZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0
clR5cGU+Ojp2YWx1ZT4+DQppbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyKFB0clR5cGUgcHRyKSB7
IHJldHVybiBwdHI7IH0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHlwZSwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFs
dWUgJiYgIXN0ZDo6aXNfc2FtZTxULCBQdHJUeXBlPjo6dmFsdWU+Pg0KY29uc3RleHByIFQgdW50
YWdDb2RlUHRyKFB0clR5cGUgcHRyLCBQdHJUYWcpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihw
dHIpOyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIFB0clRhZywgdHlwZW5hbWUgUHRyVHlwZSwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFs
dWU+Pg0KaW5saW5lIFQgdW50YWdDb2RlUHRyKFB0clR5cGUgcHRyKSAgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PFQ+KHB0cik7IH0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Pg0KY29u
c3RleHByIFB0clR5cGUgdW50YWdDb2RlUHRyKFB0clR5cGUgcHRyLCBQdHJUYWcpIHsgcmV0dXJu
IHB0cjsgfQ0KDQp0ZW1wbGF0ZTxQdHJUYWcsIHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4NCmlubGlu
ZSBQdHJUeXBlIHVudGFnQ29kZVB0cihQdHJUeXBlIHB0cikgeyByZXR1cm4gcHRyOyB9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8
VCwgUHRyVHlwZT46OnZhbHVlPj4NCmNvbnN0ZXhwciBUIHJldGFnQ29kZVB0cihQdHJUeXBlIHB0
ciwgUHRyVGFnLCBQdHJUYWcpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihwdHIpOyB9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIFB0clRhZywgUHRyVGFnLCB0eXBlbmFtZSBQdHJUeXBlLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+
DQppbmxpbmUgVCByZXRhZ0NvZGVQdHIoUHRyVHlwZSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxUPihwdHIpOyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4NCmNvbnN0ZXhw
ciBQdHJUeXBlIHJldGFnQ29kZVB0cihQdHJUeXBlIHB0ciwgUHRyVGFnLCBQdHJUYWcpIHsgcmV0
dXJuIHB0cjsgfQ0KDQp0ZW1wbGF0ZTxQdHJUYWcsIFB0clRhZywgdHlwZW5hbWUgUHRyVHlwZSwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFs
dWU+Pg0KaW5saW5lIFB0clR5cGUgcmV0YWdDb2RlUHRyKFB0clR5cGUgcHRyKSB7IHJldHVybiBw
dHI7IH0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWUgJiYgIXN0
ZDo6aXNfc2FtZTxULCBQdHJUeXBlPjo6dmFsdWU+Pg0KY29uc3RleHByIFQgcmVtb3ZlQ29kZVB0
clRhZyhQdHJUeXBlIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHB0cik7IH0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Pg0KY29uc3RleHByIFB0clR5cGUgcmVtb3ZlQ29k
ZVB0clRhZyhQdHJUeXBlIHB0cikgeyByZXR1cm4gcHRyOyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8VCwgUHRyVHlwZT46OnZh
bHVlPj4NCmlubGluZSBUIHRhZ0NGdW5jdGlvblB0cihQdHJUeXBlIHB0ciwgUHRyVGFnKSB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8VD4ocHRyKTsgfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBQdHJU
YWcsIHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4NCmlubGluZSBUIHRhZ0NGdW5jdGlvblB0cihQdHJU
eXBlIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHB0cik7IH0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRl
cjxQdHJUeXBlPjo6dmFsdWU+Pg0KaW5saW5lIFB0clR5cGUgdGFnQ0Z1bmN0aW9uUHRyKFB0clR5
cGUgcHRyLCBQdHJUYWcpIHsgcmV0dXJuIHB0cjsgfQ0KDQp0ZW1wbGF0ZTxQdHJUYWcsIHR5cGVu
YW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8
UHRyVHlwZT46OnZhbHVlPj4NCmlubGluZSBQdHJUeXBlIHRhZ0NGdW5jdGlvblB0cihQdHJUeXBl
IHB0cikgeyByZXR1cm4gcHRyOyB9DQoNCnRlbXBsYXRlPFB0clRhZyBuZXdUYWcsIHR5cGVuYW1l
IEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Bv
aW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+DQpp
bmxpbmUgRnVuY3Rpb25UeXBlIHRhZ0NGdW5jdGlvbihGdW5jdGlvblR5cGUgZnVuYykgeyByZXR1
cm4gZnVuYzsgfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCBQdHJUYWcgbmV3VGFn
LCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+
Ojp0eXBlPg0KaW5saW5lIFJldHVyblR5cGUgdGFnQ0Z1bmN0aW9uKEZ1bmN0aW9uVHlwZSBmdW5j
KQ0Kew0KICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmV0dXJuVHlwZT4odGFnQ0Z1bmN0aW9uPG5l
d1RhZz4oZnVuYykpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUeXBl
LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2
YWx1ZSAmJiAhc3RkOjppc19zYW1lPFQsIFB0clR5cGU+Ojp2YWx1ZT4+DQppbmxpbmUgVCB1bnRh
Z0NGdW5jdGlvblB0cihQdHJUeXBlIHB0ciwgUHRyVGFnKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
VD4ocHRyKTsgfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBQdHJUYWcsIHR5cGVuYW1lIFB0clR5
cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46
OnZhbHVlPj4NCmlubGluZSBUIHVudGFnQ0Z1bmN0aW9uUHRyKFB0clR5cGUgcHRyKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8VD4ocHRyKTsgfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0
eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1
ZT4+DQppbmxpbmUgUHRyVHlwZSB1bnRhZ0NGdW5jdGlvblB0cihQdHJUeXBlIHB0ciwgUHRyVGFn
KSB7IHJldHVybiBwdHI7IH0NCg0KdGVtcGxhdGU8UHRyVGFnLCB0eXBlbmFtZSBQdHJUeXBlLCB0
eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1
ZT4+DQppbmxpbmUgUHRyVHlwZSB1bnRhZ0NGdW5jdGlvblB0cihQdHJUeXBlIHB0cikgeyByZXR1
cm4gcHRyOyB9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPg0KaW5saW5lIEludFR5cGUg
dGFnSW50KEludFR5cGUgcHRySW50LCBQdHJUYWcpDQp7DQogICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoSW50VHlwZSkgPT0gc2l6ZW9mKHVpbnRwdHJfdCksICIiKTsNCiAgICByZXR1cm4gcHRySW50
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPiB2b2lkIGFzc2VydElzQ0Z1bmN0aW9u
UHRyKFB0clR5cGUpIHsgfQ0KdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4gdm9pZCBhc3NlcnRJ
c051bGxPckNGdW5jdGlvblB0cihQdHJUeXBlKSB7IH0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgUHRy
VHlwZT4gdm9pZCBhc3NlcnRJc05vdFRhZ2dlZChQdHJUeXBlKSB7IH0NCnRlbXBsYXRlPHR5cGVu
YW1lIFB0clR5cGU+IHZvaWQgYXNzZXJ0SXNUYWdnZWQoUHRyVHlwZSkgeyB9DQp0ZW1wbGF0ZTx0
eXBlbmFtZSBQdHJUeXBlPiB2b2lkIGFzc2VydElzTnVsbE9yVGFnZ2VkKFB0clR5cGUpIHsgfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPiBib29sIGlzVGFnZ2VkV2l0aChQdHJUeXBlLCBQ
dHJUYWcpIHsgcmV0dXJuIGZhbHNlOyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+IHZv
aWQgYXNzZXJ0SXNUYWdnZWRXaXRoKFB0clR5cGUsIFB0clRhZykgeyB9DQp0ZW1wbGF0ZTx0eXBl
bmFtZSBQdHJUeXBlPiB2b2lkIGFzc2VydElzTnVsbE9yVGFnZ2VkV2l0aChQdHJUeXBlLCBQdHJU
YWcpIHsgfQ0KDQppbmxpbmUgYm9vbCB1c2VzUG9pbnRlclRhZ2dpbmcoKSB7IHJldHVybiBmYWxz
ZTsgfQ0KDQoNCg0KDQojbGluZSA1OTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1B0clRhZy5oIg0KDQp9IA0KDQp1c2luZyBXVEY6OkNG
dW5jdGlvblB0clRhZzsNCnVzaW5nIFdURjo6Tm9QdHJUYWc7DQp1c2luZyBXVEY6OlBsYXRmb3Jt
UmVnaXN0ZXJzTFJQdHJUYWc7DQp1c2luZyBXVEY6OlBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc7
DQp1c2luZyBXVEY6OlB0clRhZzsNCg0KdXNpbmcgV1RGOjpyZXBvcnRCYWRUYWc7DQoNCnVzaW5n
IFdURjo6dGFnQXJyYXlQdHI7DQp1c2luZyBXVEY6OnVudGFnQXJyYXlQdHI7DQp1c2luZyBXVEY6
OnJldGFnQXJyYXlQdHI7DQp1c2luZyBXVEY6OnJlbW92ZUFycmF5UHRyVGFnOw0KDQp1c2luZyBX
VEY6OnRhZ0NvZGVQdHI7DQp1c2luZyBXVEY6OnVudGFnQ29kZVB0cjsNCnVzaW5nIFdURjo6cmV0
YWdDb2RlUHRyOw0KdXNpbmcgV1RGOjpyZW1vdmVDb2RlUHRyVGFnOw0KdXNpbmcgV1RGOjp0YWdD
RnVuY3Rpb247DQp1c2luZyBXVEY6OnRhZ0NGdW5jdGlvblB0cjsNCnVzaW5nIFdURjo6dW50YWdD
RnVuY3Rpb25QdHI7DQp1c2luZyBXVEY6OnRhZ0ludDsNCg0KdXNpbmcgV1RGOjphc3NlcnRJc0NG
dW5jdGlvblB0cjsNCnVzaW5nIFdURjo6YXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHI7DQp1c2lu
ZyBXVEY6OmFzc2VydElzTm90VGFnZ2VkOw0KdXNpbmcgV1RGOjphc3NlcnRJc1RhZ2dlZDsNCnVz
aW5nIFdURjo6YXNzZXJ0SXNOdWxsT3JUYWdnZWQ7DQp1c2luZyBXVEY6OmlzVGFnZ2VkV2l0aDsN
CnVzaW5nIFdURjo6YXNzZXJ0SXNUYWdnZWRXaXRoOw0KdXNpbmcgV1RGOjphc3NlcnRJc051bGxP
clRhZ2dlZFdpdGg7DQp1c2luZyBXVEY6OnVzZXNQb2ludGVyVGFnZ2luZzsNCiNsaW5lIDMzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9X
VEZDb25maWcuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGhyZWFkcy9TaWduYWxzLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNjcgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3Ro
cmVhZHMvU2lnbmFscy5oIg0KI2xpbmUgMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1dURkNvbmZpZy5oIg0KDQoNCm5hbWVzcGFjZSBH
aWdhY2FnZSB7DQpjb25zdGV4cHIgc2l6ZV90IHJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZp
ZyA9IDA7DQpjb25zdGV4cHIgc2l6ZV90IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyA9
IDA7DQp9DQoNCg0KI2xpbmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1dURkNvbmZpZy5oIg0KDQpuYW1lc3BhY2UgV2ViQ29uZmln
IHsNCg0KdXNpbmcgU2xvdCA9IHVpbnQ2NF90Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgU2xvdCBnX2NvbmZpZ1tdOw0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY29uc3Rl
eHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gQ2VpbGluZ09uUGFnZVNpemU7DQoNCnN0
cnVjdCBDb25maWcgew0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgdm9pZCBwZXJt
YW5lbnRseUZyZWV6ZSgpOw0KDQogICAgc3RydWN0IEFzc2VydE5vdEZyb3plblNjb3BlIHsNCiAg
ICAgICAgQXNzZXJ0Tm90RnJvemVuU2NvcGUoKTsNCiAgICAgICAgfkFzc2VydE5vdEZyb3plblNj
b3BlKCk7DQogICAgfTsNCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgYm9vbCBpc1Blcm1hbmVu
dGx5RnJvemVuOw0KDQoNCg0KI2xpbmUgNzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1dURkNvbmZpZy5oIg0KICAgIFB0clRhZ0xvb2t1
cCogcHRyVGFnTG9va3VwSGVhZDsNCg0KICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9uc1sx
XTsNCn07DQoNCmNvbnN0ZXhwciBzaXplX3Qgc3RhcnRTbG90T2ZXVEZDb25maWcgPSBHaWdhY2Fn
ZTo6cmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnOw0KY29uc3RleHByIHNpemVfdCBzdGFy
dE9mZnNldE9mV1RGQ29uZmlnID0gc3RhcnRTbG90T2ZXVEZDb25maWcgKiBzaXplb2YoV2ViQ29u
ZmlnOjpTbG90KTsNCg0KY29uc3RleHByIHNpemVfdCBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lv
biA9IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcgKyBfX2J1aWx0aW5fb2Zmc2V0b2YoV1RGOjpDb25m
aWcsc3BhY2VGb3JFeHRlbnNpb25zKTsNCg0KY29uc3RleHByIHNpemVfdCBhbGlnbm1lbnRPZldU
RkNvbmZpZyA9IHN0ZDo6YWxpZ25tZW50X29mPFdURjo6Q29uZmlnPjo6dmFsdWU7DQoNCnN0YXRp
Y19hc3NlcnQoR2lnYWNhZ2U6OnJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyArIHNpemVv
ZihXVEY6OkNvbmZpZykgPD0gQ29uZmlnU2l6ZVRvUHJvdGVjdCk7DQpzdGF0aWNfYXNzZXJ0KHJv
dW5kVXBUb011bHRpcGxlT2Y8YWxpZ25tZW50T2ZXVEZDb25maWc+KHN0YXJ0T2Zmc2V0T2ZXVEZD
b25maWcpID09IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcpOw0KDQoNCg0KX19mb3JjZWlubGluZSBD
b25maWc6OkFzc2VydE5vdEZyb3plblNjb3BlOjpBc3NlcnROb3RGcm96ZW5TY29wZSgpDQp7DQog
ICAgZG8geyBpZiAoKCEoISgqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5pc1Blcm1hbmVudGx5RnJvemVu
KSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9y
Q3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg5MiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1dURkNvbmZpZy5oIiwgIF9fRlVOQ1RJT05f
XyAgLCAyICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgY29tcGlsZXJGZW5j
ZSgpOw0KfTsNCg0KX19mb3JjZWlubGluZSBDb25maWc6OkFzc2VydE5vdEZyb3plblNjb3BlOjp+
QXNzZXJ0Tm90RnJvemVuU2NvcGUoKQ0Kew0KICAgIGNvbXBpbGVyRmVuY2UoKTsNCiAgICBkbyB7
IGlmICgoISghKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLmlzUGVybWFuZW50bHlGcm96ZW4pKSkgZG8g
eyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgp
OyBXVEZDcmFzaFdpdGhJbmZvKDk5LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvV1RGQ29uZmlnLmgiLCAgX19GVU5DVElPTl9fICAsIDMg
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCn07DQoNCn0gDQojbGluZSAzMCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxK
U0NDb25maWcuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEV4ZWN1dGFibGVBbGxvY2F0
b3I7DQpjbGFzcyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I7DQpjbGFzcyBWTTsNCg0K
Y29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gQ2VpbGluZ09uUGFnZVNpemU7
DQoNCg0KDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxKU0NDb25maWcuaCINCg0Kc3RydWN0IENvbmZpZyB7DQogICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIGRpc2FibGVGcmVlemluZ0ZvclRlc3Rp
bmcoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIHZvaWQgZW5hYmxlUmVzdHJp
Y3RlZE9wdGlvbnMoKTsNCiAgICBzdGF0aWMgdm9pZCBwZXJtYW5lbnRseUZyZWV6ZSgpIHsgV1RG
OjpDb25maWc6OnBlcm1hbmVudGx5RnJlZXplKCk7IH0NCg0KICAgIHN0YXRpYyB2b2lkIGNvbmZp
Z3VyZUZvclRlc3RpbmcoKQ0KICAgIHsNCiAgICAgICAgZGlzYWJsZUZyZWV6aW5nRm9yVGVzdGlu
ZygpOw0KICAgICAgICBlbmFibGVSZXN0cmljdGVkT3B0aW9ucygpOw0KICAgIH0NCg0KICAgIGJv
b2wgaXNQZXJtYW5lbnRseUZyb3plbigpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5p
c1Blcm1hbmVudGx5RnJvemVuOyB9DQoNCiAgICANCiAgICANCiAgICANCg0KICAgIGJvb2wgZGlz
YWJsZWRGcmVlemluZ0ZvclRlc3Rpbmc7DQogICAgYm9vbCByZXN0cmljdGVkT3B0aW9uc0VuYWJs
ZWQ7DQogICAgYm9vbCBqaXREaXNhYmxlZDsNCg0KICAgIA0KICAgIGJvb2wgaW5pdGlhbGl6ZUhh
c0JlZW5DYWxsZWQ7DQoNCiAgICBzdHJ1Y3Qgew0KDQoNCiNsaW5lIDcxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0NvbmZpZy5o
Ig0KICAgICAgICBib29sIGNhblVzZUpJVDsNCiAgICB9IHZtOw0KDQogICAgRXhlY3V0YWJsZUFs
bG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRvcjsNCiAgICBGaXhlZFZNUG9vbEV4ZWN1dGFibGVB
bGxvY2F0b3IqIGZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcjsNCiAgICB2b2lkKiBzdGFy
dEV4ZWN1dGFibGVNZW1vcnk7DQogICAgdm9pZCogZW5kRXhlY3V0YWJsZU1lbW9yeTsNCiAgICB1
aW50cHRyX3Qgc3RhcnRPZkZpeGVkV3JpdGFibGVNZW1vcnlQb29sOw0KDQoNCg0KI2xpbmUgODMg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcSlNDQ29uZmlnLmgiDQoNCiAgICBPcHRpb25zU3RvcmFnZSBvcHRpb25zOw0KDQogICAgdm9p
ZCAoKnNoZWxsVGltZW91dENoZWNrQ2FsbGJhY2spKFZNJik7DQoNCiAgICBXVEY6OlB0clRhZ0xv
b2t1cCBwdHJUYWdMb29rdXBSZWNvcmQ7DQp9Ow0KDQpjb25zdGV4cHIgc2l6ZV90IGFsaWdubWVu
dE9mSlNDQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8SlNDOjpDb25maWc+Ojp2YWx1ZTsNCg0K
c3RhdGljX2Fzc2VydChXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uICsgc2l6ZW9mKEpT
Qzo6Q29uZmlnKSA8PSBXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QpOw0Kc3RhdGljX2Fzc2VydChy
b3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdubWVudE9mSlNDQ29uZmlnPihXVEY6Om9mZnNldE9mV1RG
Q29uZmlnRXh0ZW5zaW9uKSA9PSBXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsNCg0K
DQoNCn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxqaXRcXEV4ZWN1dGFibGVBbGxvY2F0b3IuaCINCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDUHRy
VGFnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnVzaW5nIFB0clRhZyA9IFdU
Rjo6UHRyVGFnOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOjQzMDcpDQojbGluZSA2NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NQdHJUYWcuaCINCg0KY29uc3RleHByIFB0clRh
ZyBCM0NDYWxsUHRyVGFnID0gc3RhdGljX2Nhc3Q8UHRyVGFnPihXVEY6Om1ha2VQdHJUYWdIYXNo
KCJcIkIzQ0NhbGxQdHJUYWdcIiIpKTsgc3RhdGljX2Fzc2VydChCM0NDYWxsUHRyVGFnICE9IE5v
UHRyVGFnICYmIEIzQ0NhbGxQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7IGNvbnN0ZXhw
ciBQdHJUYWcgQjNDb21waWxhdGlvblB0clRhZyA9IHN0YXRpY19jYXN0PFB0clRhZz4oV1RGOjpt
YWtlUHRyVGFnSGFzaCgiXCJCM0NvbXBpbGF0aW9uUHRyVGFnXCIiKSk7IHN0YXRpY19hc3NlcnQo
QjNDb21waWxhdGlvblB0clRhZyAhPSBOb1B0clRhZyAmJiBCM0NvbXBpbGF0aW9uUHRyVGFnICE9
IENGdW5jdGlvblB0clRhZywgIiIpOyBjb25zdGV4cHIgUHRyVGFnIEJ5dGVjb2RlUHRyVGFnID0g
c3RhdGljX2Nhc3Q8UHRyVGFnPihXVEY6Om1ha2VQdHJUYWdIYXNoKCJcIkJ5dGVjb2RlUHRyVGFn
XCIiKSk7IHN0YXRpY19hc3NlcnQoQnl0ZWNvZGVQdHJUYWcgIT0gTm9QdHJUYWcgJiYgQnl0ZWNv
ZGVQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7IGNvbnN0ZXhwciBQdHJUYWcgRE9NSklU
RnVuY3Rpb25QdHJUYWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2go
IlwiRE9NSklURnVuY3Rpb25QdHJUYWdcIiIpKTsgc3RhdGljX2Fzc2VydChET01KSVRGdW5jdGlv
blB0clRhZyAhPSBOb1B0clRhZyAmJiBET01KSVRGdW5jdGlvblB0clRhZyAhPSBDRnVuY3Rpb25Q
dHJUYWcsICIiKTsgY29uc3RleHByIFB0clRhZyBEaXNhc3NlbWJseVB0clRhZyA9IHN0YXRpY19j
YXN0PFB0clRhZz4oV1RGOjptYWtlUHRyVGFnSGFzaCgiXCJEaXNhc3NlbWJseVB0clRhZ1wiIikp
OyBzdGF0aWNfYXNzZXJ0KERpc2Fzc2VtYmx5UHRyVGFnICE9IE5vUHRyVGFnICYmIERpc2Fzc2Vt
Ymx5UHRyVGFnICE9IENGdW5jdGlvblB0clRhZywgIiIpOyBjb25zdGV4cHIgUHRyVGFnIEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hh
c2goIlwiRXhjZXB0aW9uSGFuZGxlclB0clRhZ1wiIikpOyBzdGF0aWNfYXNzZXJ0KEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWcgIT0gTm9QdHJUYWcgJiYgRXhjZXB0aW9uSGFuZGxlclB0clRhZyAhPSBD
RnVuY3Rpb25QdHJUYWcsICIiKTsgY29uc3RleHByIFB0clRhZyBFeGVjdXRhYmxlTWVtb3J5UHRy
VGFnID0gc3RhdGljX2Nhc3Q8UHRyVGFnPihXVEY6Om1ha2VQdHJUYWdIYXNoKCJcIkV4ZWN1dGFi
bGVNZW1vcnlQdHJUYWdcIiIpKTsgc3RhdGljX2Fzc2VydChFeGVjdXRhYmxlTWVtb3J5UHRyVGFn
ICE9IE5vUHRyVGFnICYmIEV4ZWN1dGFibGVNZW1vcnlQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFn
LCAiIik7IGNvbnN0ZXhwciBQdHJUYWcgSklUUHJvYmVQdHJUYWcgPSBzdGF0aWNfY2FzdDxQdHJU
YWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiSklUUHJvYmVQdHJUYWdcIiIpKTsgc3RhdGljX2Fz
c2VydChKSVRQcm9iZVB0clRhZyAhPSBOb1B0clRhZyAmJiBKSVRQcm9iZVB0clRhZyAhPSBDRnVu
Y3Rpb25QdHJUYWcsICIiKTsgY29uc3RleHByIFB0clRhZyBKSVRQcm9iZVRyYW1wb2xpbmVQdHJU
YWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiSklUUHJvYmVU
cmFtcG9saW5lUHRyVGFnXCIiKSk7IHN0YXRpY19hc3NlcnQoSklUUHJvYmVUcmFtcG9saW5lUHRy
VGFnICE9IE5vUHRyVGFnICYmIEpJVFByb2JlVHJhbXBvbGluZVB0clRhZyAhPSBDRnVuY3Rpb25Q
dHJUYWcsICIiKTsgY29uc3RleHByIFB0clRhZyBKSVRQcm9iZUV4ZWN1dG9yUHRyVGFnID0gc3Rh
dGljX2Nhc3Q8UHRyVGFnPihXVEY6Om1ha2VQdHJUYWdIYXNoKCJcIkpJVFByb2JlRXhlY3V0b3JQ
dHJUYWdcIiIpKTsgc3RhdGljX2Fzc2VydChKSVRQcm9iZUV4ZWN1dG9yUHRyVGFnICE9IE5vUHRy
VGFnICYmIEpJVFByb2JlRXhlY3V0b3JQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7IGNv
bnN0ZXhwciBQdHJUYWcgSklUUHJvYmVTdGFja0luaXRpYWxpemF0aW9uRnVuY3Rpb25QdHJUYWcg
PSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiSklUUHJvYmVTdGFj
a0luaXRpYWxpemF0aW9uRnVuY3Rpb25QdHJUYWdcIiIpKTsgc3RhdGljX2Fzc2VydChKSVRQcm9i
ZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0clRhZyAhPSBOb1B0clRhZyAmJiBKSVRQcm9i
ZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0clRhZyAhPSBDRnVuY3Rpb25QdHJUYWcsICIi
KTsgY29uc3RleHByIFB0clRhZyBKSVRUaHVua1B0clRhZyA9IHN0YXRpY19jYXN0PFB0clRhZz4o
V1RGOjptYWtlUHRyVGFnSGFzaCgiXCJKSVRUaHVua1B0clRhZ1wiIikpOyBzdGF0aWNfYXNzZXJ0
KEpJVFRodW5rUHRyVGFnICE9IE5vUHRyVGFnICYmIEpJVFRodW5rUHRyVGFnICE9IENGdW5jdGlv
blB0clRhZywgIiIpOyBjb25zdGV4cHIgUHRyVGFnIEpJVFN0dWJSb3V0aW5lUHRyVGFnID0gc3Rh
dGljX2Nhc3Q8UHRyVGFnPihXVEY6Om1ha2VQdHJUYWdIYXNoKCJcIkpJVFN0dWJSb3V0aW5lUHRy
VGFnXCIiKSk7IHN0YXRpY19hc3NlcnQoSklUU3R1YlJvdXRpbmVQdHJUYWcgIT0gTm9QdHJUYWcg
JiYgSklUU3R1YlJvdXRpbmVQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7IGNvbnN0ZXhw
ciBQdHJUYWcgSlNFbnRyeVB0clRhZyA9IHN0YXRpY19jYXN0PFB0clRhZz4oV1RGOjptYWtlUHRy
VGFnSGFzaCgiXCJKU0VudHJ5UHRyVGFnXCIiKSk7IHN0YXRpY19hc3NlcnQoSlNFbnRyeVB0clRh
ZyAhPSBOb1B0clRhZyAmJiBKU0VudHJ5UHRyVGFnICE9IENGdW5jdGlvblB0clRhZywgIiIpOyBj
b25zdGV4cHIgUHRyVGFnIEpTSW50ZXJuYWxQdHJUYWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdU
Rjo6bWFrZVB0clRhZ0hhc2goIlwiSlNJbnRlcm5hbFB0clRhZ1wiIikpOyBzdGF0aWNfYXNzZXJ0
KEpTSW50ZXJuYWxQdHJUYWcgIT0gTm9QdHJUYWcgJiYgSlNJbnRlcm5hbFB0clRhZyAhPSBDRnVu
Y3Rpb25QdHJUYWcsICIiKTsgY29uc3RleHByIFB0clRhZyBKU1N3aXRjaFB0clRhZyA9IHN0YXRp
Y19jYXN0PFB0clRhZz4oV1RGOjptYWtlUHRyVGFnSGFzaCgiXCJKU1N3aXRjaFB0clRhZ1wiIikp
OyBzdGF0aWNfYXNzZXJ0KEpTU3dpdGNoUHRyVGFnICE9IE5vUHRyVGFnICYmIEpTU3dpdGNoUHRy
VGFnICE9IENGdW5jdGlvblB0clRhZywgIiIpOyBjb25zdGV4cHIgUHRyVGFnIExpbmtCdWZmZXJQ
dHJUYWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiTGlua0J1
ZmZlclB0clRhZ1wiIikpOyBzdGF0aWNfYXNzZXJ0KExpbmtCdWZmZXJQdHJUYWcgIT0gTm9QdHJU
YWcgJiYgTGlua0J1ZmZlclB0clRhZyAhPSBDRnVuY3Rpb25QdHJUYWcsICIiKTsgY29uc3RleHBy
IFB0clRhZyBPcGVyYXRpb25QdHJUYWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0
clRhZ0hhc2goIlwiT3BlcmF0aW9uUHRyVGFnXCIiKSk7IHN0YXRpY19hc3NlcnQoT3BlcmF0aW9u
UHRyVGFnICE9IE5vUHRyVGFnICYmIE9wZXJhdGlvblB0clRhZyAhPSBDRnVuY3Rpb25QdHJUYWcs
ICIiKTsgY29uc3RleHByIFB0clRhZyBPU1JFbnRyeVB0clRhZyA9IHN0YXRpY19jYXN0PFB0clRh
Zz4oV1RGOjptYWtlUHRyVGFnSGFzaCgiXCJPU1JFbnRyeVB0clRhZ1wiIikpOyBzdGF0aWNfYXNz
ZXJ0KE9TUkVudHJ5UHRyVGFnICE9IE5vUHRyVGFnICYmIE9TUkVudHJ5UHRyVGFnICE9IENGdW5j
dGlvblB0clRhZywgIiIpOyBjb25zdGV4cHIgUHRyVGFnIE9TUkV4aXRQdHJUYWcgPSBzdGF0aWNf
Y2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiT1NSRXhpdFB0clRhZ1wiIikpOyBz
dGF0aWNfYXNzZXJ0KE9TUkV4aXRQdHJUYWcgIT0gTm9QdHJUYWcgJiYgT1NSRXhpdFB0clRhZyAh
PSBDRnVuY3Rpb25QdHJUYWcsICIiKTsgY29uc3RleHByIFB0clRhZyBTbG93UGF0aFB0clRhZyA9
IHN0YXRpY19jYXN0PFB0clRhZz4oV1RGOjptYWtlUHRyVGFnSGFzaCgiXCJTbG93UGF0aFB0clRh
Z1wiIikpOyBzdGF0aWNfYXNzZXJ0KFNsb3dQYXRoUHRyVGFnICE9IE5vUHRyVGFnICYmIFNsb3dQ
YXRoUHRyVGFnICE9IENGdW5jdGlvblB0clRhZywgIiIpOyBjb25zdGV4cHIgUHRyVGFnIFdhc21F
bnRyeVB0clRhZyA9IHN0YXRpY19jYXN0PFB0clRhZz4oV1RGOjptYWtlUHRyVGFnSGFzaCgiXCJX
YXNtRW50cnlQdHJUYWdcIiIpKTsgc3RhdGljX2Fzc2VydChXYXNtRW50cnlQdHJUYWcgIT0gTm9Q
dHJUYWcgJiYgV2FzbUVudHJ5UHRyVGFnICE9IENGdW5jdGlvblB0clRhZywgIiIpOyBjb25zdGV4
cHIgUHRyVGFnIFlhcnI4Qml0UHRyVGFnID0gc3RhdGljX2Nhc3Q8UHRyVGFnPihXVEY6Om1ha2VQ
dHJUYWdIYXNoKCJcIllhcnI4Qml0UHRyVGFnXCIiKSk7IHN0YXRpY19hc3NlcnQoWWFycjhCaXRQ
dHJUYWcgIT0gTm9QdHJUYWcgJiYgWWFycjhCaXRQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAi
Iik7IGNvbnN0ZXhwciBQdHJUYWcgWWFycjE2Qml0UHRyVGFnID0gc3RhdGljX2Nhc3Q8UHRyVGFn
PihXVEY6Om1ha2VQdHJUYWdIYXNoKCJcIllhcnIxNkJpdFB0clRhZ1wiIikpOyBzdGF0aWNfYXNz
ZXJ0KFlhcnIxNkJpdFB0clRhZyAhPSBOb1B0clRhZyAmJiBZYXJyMTZCaXRQdHJUYWcgIT0gQ0Z1
bmN0aW9uUHRyVGFnLCAiIik7IGNvbnN0ZXhwciBQdHJUYWcgWWFyck1hdGNoT25seThCaXRQdHJU
YWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiWWFyck1hdGNo
T25seThCaXRQdHJUYWdcIiIpKTsgc3RhdGljX2Fzc2VydChZYXJyTWF0Y2hPbmx5OEJpdFB0clRh
ZyAhPSBOb1B0clRhZyAmJiBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcsICIiKTsgY29uc3RleHByIFB0clRhZyBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcgPSBzdGF0
aWNfY2FzdDxQdHJUYWc+KFdURjo6bWFrZVB0clRhZ0hhc2goIlwiWWFyck1hdGNoT25seTE2Qml0
UHRyVGFnXCIiKSk7IHN0YXRpY19hc3NlcnQoWWFyck1hdGNoT25seTE2Qml0UHRyVGFnICE9IE5v
UHRyVGFnICYmIFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZyAhPSBDRnVuY3Rpb25QdHJUYWcsICIi
KTsgY29uc3RleHByIFB0clRhZyBZYXJyQmFja3RyYWNrUHRyVGFnID0gc3RhdGljX2Nhc3Q8UHRy
VGFnPihXVEY6Om1ha2VQdHJUYWdIYXNoKCJcIllhcnJCYWNrdHJhY2tQdHJUYWdcIiIpKTsgc3Rh
dGljX2Fzc2VydChZYXJyQmFja3RyYWNrUHRyVGFnICE9IE5vUHRyVGFnICYmIFlhcnJCYWNrdHJh
Y2tQdHJUYWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkNCiNsaW5lIDczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEpTQ1B0clRhZy5oIg0KDQp2b2lkIGluaXRpYWxpemVQdHJUYWdMb29r
dXAoKTsNCg0KDQppbmxpbmUgdm9pZCBpbml0aWFsaXplUHRyVGFnTG9va3VwKCkgeyB9DQojbGlu
ZSA3OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxKU0NQdHJUYWcuaCINCg0KfSANCg0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxFeGVjdXRhYmxlQWxsb2NhdG9y
LmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXE9wdGlvbnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRm9y
YmlkSGVhcEFsbG9jYXRpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxPcHRpb25zLmgiDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0K
Y2xhc3MgU3RyaW5nQnVpbGRlcjsNCn0NCnVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIE9wdGlvbnMgew0KcHVibGljOg0KICAgIGVudW0gY2xhc3Mg
RHVtcExldmVsIDogdWludDhfdCB7DQogICAgICAgIE5vbmUgPSAwLA0KICAgICAgICBPdmVycmlk
ZGVuLA0KICAgICAgICBBbGwsDQogICAgICAgIFZlcmJvc2UNCiAgICB9Ow0KDQogICAgZW51bSBj
bGFzcyBBdmFpbGFiaWxpdHkgOiB1aW50OF90ICB7DQogICAgICAgIE5vcm1hbCA9IDAsDQogICAg
ICAgIFJlc3RyaWN0ZWQsDQogICAgICAgIENvbmZpZ3VyYWJsZQ0KICAgIH07DQoNCg0KDQoNCiAg
ICBlbnVtIElEIDogdWludDE2X3Qgew0KICAgICAgICB1c2VLZXJuVENTTUlELCB2YWxpZGF0ZU9w
dGlvbnNJRCwgZHVtcE9wdGlvbnNJRCwgY29uZmlnRmlsZUlELCB1c2VMTEludElELCB1c2VKSVRJ
RCwgdXNlQmFzZWxpbmVKSVRJRCwgdXNlREZHSklUSUQsIHVzZVJlZ0V4cEpJVElELCB1c2VET01K
SVRJRCwgcmVwb3J0TXVzdFN1Y2NlZWRFeGVjdXRhYmxlQWxsb2NhdGlvbnNJRCwgbWF4UGVyVGhy
ZWFkU3RhY2tVc2FnZUlELCBzb2Z0UmVzZXJ2ZWRab25lU2l6ZUlELCByZXNlcnZlZFpvbmVTaXpl
SUQsIGNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeUlELCBjcmFzaElmQ2FudEFsbG9jYXRlSklUTWVt
b3J5SUQsIGppdE1lbW9yeVJlc2VydmF0aW9uU2l6ZUlELCBmb3JjZUNvZGVCbG9ja0xpdmVuZXNz
SUQsIGZvcmNlSUNGYWlsdXJlSUQsIHJlcGF0Y2hDb3VudEZvckNvb2xEb3duSUQsIGluaXRpYWxD
b29sRG93bkNvdW50SUQsIHJlcGF0Y2hCdWZmZXJpbmdDb3VudGRvd25JRCwgZHVtcEdlbmVyYXRl
ZEJ5dGVjb2Rlc0lELCBkdW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2Rlc0lELCBkdW1wQnl0ZWNvZGVM
aXZlbmVzc1Jlc3VsdHNJRCwgdmFsaWRhdGVCeXRlY29kZUlELCBmb3JjZURlYnVnZ2VyQnl0ZWNv
ZGVHZW5lcmF0aW9uSUQsIGR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb25JRCwg
dXNlRnVuY3Rpb25Eb3RBcmd1bWVudHNJRCwgdXNlVGFpbENhbGxzSUQsIG9wdGltaXplUmVjdXJz
aXZlVGFpbENhbGxzSUQsIGFsd2F5c1VzZVNoYWRvd0NoaWNrZW5JRCwgc2hhZG93Q2hpY2tlbkxv
Z1NpemVJRCwgc2hhZG93Q2hpY2tlbk1heFRhaWxEZWxldGVkRnJhbWVzU2l6ZUlELCB1c2VJdGVy
YXRpb25JbnRyaW5zaWNzSUQsIHVzZU9TTG9nSUQsIGR1bXBEaXNhc3NlbWJseUlELCBhc3luY0Rp
c2Fzc2VtYmx5SUQsIGR1bXBERkdEaXNhc3NlbWJseUlELCBkdW1wRlRMRGlzYXNzZW1ibHlJRCwg
ZHVtcFJlZ0V4cERpc2Fzc2VtYmx5SUQsIGR1bXBXYXNtRGlzYXNzZW1ibHlJRCwgZHVtcEJCUURp
c2Fzc2VtYmx5SUQsIGR1bXBPTUdEaXNhc3NlbWJseUlELCBsb2dKSVRDb2RlRm9yUGVyZklELCBi
eXRlY29kZVJhbmdlVG9KSVRDb21waWxlSUQsIGJ5dGVjb2RlUmFuZ2VUb0RGR0NvbXBpbGVJRCwg
Ynl0ZWNvZGVSYW5nZVRvRlRMQ29tcGlsZUlELCBqaXRBbGxvd2xpc3RJRCwgZGZnQWxsb3dsaXN0
SUQsIGZ0bEFsbG93bGlzdElELCBkdW1wU291cmNlQXRERkdUaW1lSUQsIGR1bXBCeXRlY29kZUF0
REZHVGltZUlELCBkdW1wR3JhcGhBZnRlclBhcnNpbmdJRCwgZHVtcEdyYXBoQXRFYWNoUGhhc2VJ
RCwgZHVtcERGR0dyYXBoQXRFYWNoUGhhc2VJRCwgZHVtcERGR0ZUTEdyYXBoQXRFYWNoUGhhc2VJ
RCwgZHVtcEIzR3JhcGhBdEVhY2hQaGFzZUlELCBkdW1wQWlyR3JhcGhBdEVhY2hQaGFzZUlELCB2
ZXJib3NlREZHQnl0ZWNvZGVQYXJzaW5nSUQsIHNhZmVwb2ludEJlZm9yZUVhY2hQaGFzZUlELCB2
ZXJib3NlQ29tcGlsYXRpb25JRCwgdmVyYm9zZUZUTENvbXBpbGF0aW9uSUQsIGxvZ0NvbXBpbGF0
aW9uQ2hhbmdlc0lELCB1c2VQcm9iZU9TUkV4aXRJRCwgcHJpbnRFYWNoT1NSRXhpdElELCB2YWxp
ZGF0ZURvZXNHQ0lELCB2YWxpZGF0ZUdyYXBoSUQsIHZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZUlE
LCB2ZXJib3NlVmFsaWRhdGlvbkZhaWx1cmVJRCwgdmVyYm9zZU9TUklELCB2ZXJib3NlREZHT1NS
RXhpdElELCB2ZXJib3NlRlRMT1NSRXhpdElELCB2ZXJib3NlQ2FsbExpbmtJRCwgdmVyYm9zZUNv
bXBpbGF0aW9uUXVldWVJRCwgcmVwb3J0Q29tcGlsZVRpbWVzSUQsIHJlcG9ydEJhc2VsaW5lQ29t
cGlsZVRpbWVzSUQsIHJlcG9ydERGR0NvbXBpbGVUaW1lc0lELCByZXBvcnRGVExDb21waWxlVGlt
ZXNJRCwgcmVwb3J0VG90YWxDb21waWxlVGltZXNJRCwgcmVwb3J0VG90YWxQaGFzZVRpbWVzSUQs
IHJlcG9ydFBhcnNlVGltZXNJRCwgcmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXNJRCwgY291bnRQ
YXJzZVRpbWVzSUQsIHZlcmJvc2VFeGl0UHJvZmlsZUlELCB2ZXJib3NlQ0ZBSUQsIHZlcmJvc2VE
RkdGYWlsdXJlSUQsIHZlcmJvc2VGVExUb0pTVGh1bmtJRCwgdmVyYm9zZUZUTEZhaWx1cmVJRCwg
YWx3YXlzQ29tcHV0ZUhhc2hJRCwgdGVzdFRoZUZUTElELCB2ZXJib3NlU2FuaXRpemVTdGFja0lE
LCB1c2VHZW5lcmF0aW9uYWxHQ0lELCB1c2VDb25jdXJyZW50R0NJRCwgY29sbGVjdENvbnRpbnVv
dXNseUlELCBjb2xsZWN0Q29udGludW91c2x5UGVyaW9kTVNJRCwgZm9yY2VGZW5jZWRCYXJyaWVy
SUQsIHZlcmJvc2VWaXNpdFJhY2VJRCwgb3B0aW1pemVQYXJhbGxlbFNsb3RWaXNpdG9yc0ZvclN0
b3BwZWRNdXRhdG9ySUQsIGxhcmdlSGVhcFNpemVJRCwgc21hbGxIZWFwU2l6ZUlELCBzbWFsbEhl
YXBSQU1GcmFjdGlvbklELCBzbWFsbEhlYXBHcm93dGhGYWN0b3JJRCwgbWVkaXVtSGVhcFJBTUZy
YWN0aW9uSUQsIG1lZGl1bUhlYXBHcm93dGhGYWN0b3JJRCwgbGFyZ2VIZWFwR3Jvd3RoRmFjdG9y
SUQsIG1pbmlWTUhlYXBHcm93dGhGYWN0b3JJRCwgY3JpdGljYWxHQ01lbW9yeVRocmVzaG9sZElE
LCBtaW5pbXVtTXV0YXRvclV0aWxpemF0aW9uSUQsIG1heGltdW1NdXRhdG9yVXRpbGl6YXRpb25J
RCwgZXBzaWxvbk11dGF0b3JVdGlsaXphdGlvbklELCBjb25jdXJyZW50R0NNYXhIZWFkcm9vbUlE
LCBjb25jdXJyZW50R0NQZXJpb2RNU0lELCB1c2VTdG9jaGFzdGljTXV0YXRvclNjaGVkdWxlcklE
LCBtaW5pbXVtR0NQYXVzZU1TSUQsIGdjUGF1c2VTY2FsZUlELCBnY0luY3JlbWVudEJ5dGVzSUQs
IGdjSW5jcmVtZW50TWF4Qnl0ZXNJRCwgZ2NJbmNyZW1lbnRTY2FsZUlELCBzY3JpYmJsZUZyZWVD
ZWxsc0lELCBzaXplQ2xhc3NQcm9ncmVzc2lvbklELCBwcmVjaXNlQWxsb2NhdGlvbkN1dG9mZklE
LCBkdW1wU2l6ZUNsYXNzZXNJRCwgdXNlQnVtcEFsbG9jYXRvcklELCBzdGVhbEVtcHR5QmxvY2tz
RnJvbU90aGVyQWxsb2NhdG9yc0lELCBlYWdlcmx5VXBkYXRlVG9wQ2FsbEZyYW1lSUQsIGR1bXBa
YXBwZWRDZWxsQ3Jhc2hEYXRhSUQsIHVzZU9TUkVudHJ5VG9ERkdJRCwgdXNlT1NSRW50cnlUb0ZU
TElELCB1c2VGVExKSVRJRCwgdmFsaWRhdGVGVExPU1JFeGl0TGl2ZW5lc3NJRCwgZGVmYXVsdEIz
T3B0TGV2ZWxJRCwgYjNBbHdheXNGYWlsc0JlZm9yZUNvbXBpbGVJRCwgYjNBbHdheXNGYWlsc0Jl
Zm9yZUxpbmtJRCwgZnRsQ3Jhc2hlc0lELCBjbG9iYmVyQWxsUmVnc0luRlRMSUNTbG93UGF0aElE
LCBlbmFibGVKSVREZWJ1Z0Fzc2VydGlvbnNJRCwgdXNlQWNjZXNzSW5saW5pbmdJRCwgbWF4QWNj
ZXNzVmFyaWFudExpc3RTaXplSUQsIHVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbklELCB1
c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nSUQsIG1heFBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmdMaXN0U2l6ZUlELCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0lELCB1c2VQb2x5bW9ycGhp
Y0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXNJRCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFu
dExpc3RTaXplSUQsIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZUZvclRvcFRpZXJJ
RCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplRm9yV2ViQXNzZW1ibHlUb0pTSUQs
IG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRzRm9ySW5saW5pbmdJRCwgZnJlcXVlbnRDYWxsVGhy
ZXNob2xkSUQsIG1pbmltdW1DYWxsVG9Lbm93blJhdGVJRCwgY3JlYXRlUHJlSGVhZGVyc0lELCB1
c2VNb3ZIaW50UmVtb3ZhbElELCB1c2VQdXRTdGFja1NpbmtpbmdJRCwgdXNlT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdJRCwgdXNlVmFsdWVSZXBFbGltaW5hdGlvbklELCB1c2VBcml0eUZpeHVwSW5s
aW5pbmdJRCwgbG9nRXhlY3V0YWJsZUFsbG9jYXRpb25JRCwgbWF4REZHTm9kZXNJbkJhc2ljQmxv
Y2tGb3JQcmVjaXNlQW5hbHlzaXNJRCwgdXNlQ29uY3VycmVudEpJVElELCBudW1iZXJPZkRGR0Nv
bXBpbGVyVGhyZWFkc0lELCBudW1iZXJPZkZUTENvbXBpbGVyVGhyZWFkc0lELCBwcmlvcml0eURl
bHRhT2ZERkdDb21waWxlclRocmVhZHNJRCwgcHJpb3JpdHlEZWx0YU9mRlRMQ29tcGlsZXJUaHJl
YWRzSUQsIHByaW9yaXR5RGVsdGFPZldhc21Db21waWxlclRocmVhZHNJRCwgdXNlUHJvZmlsZXJJ
RCwgZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVySUQsIHVzZUFyY2hpdGVjdHVyZVNwZWNp
ZmljT3B0aW1pemF0aW9uc0lELCBicmVha09uVGhyb3dJRCwgbWF4aW11bU9wdGltaXphdGlvbkNh
bmRpZGF0ZUJ5dGVjb2RlQ29zdElELCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlk
YXRlQnl0ZWNvZGVDb3N0SUQsIG1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2Fu
ZGlkYXRlQnl0ZWNvZGVDb3N0SUQsIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNh
bmRpZGF0ZUJ5dGVjb29kZUNvc3RJRCwgbWF4aW11bUZUTENhbmRpZGF0ZUJ5dGVjb2RlQ29zdElE
LCBtYXhpbXVtSW5saW5pbmdEZXB0aElELCBtYXhpbXVtSW5saW5pbmdSZWN1cnNpb25JRCwgbWF4
aW11bUlubGluaW5nQ2FsbGVyQnl0ZWNvZGVDb3N0SUQsIG1heGltdW1WYXJhcmdzRm9ySW5saW5p
bmdJRCwgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGhJRCwgbWF4aW11bUJpbmFy
eVN0cmluZ1N3aXRjaFRvdGFsTGVuZ3RoSUQsIGppdFBvbGljeVNjYWxlSUQsIGZvcmNlRWFnZXJD
b21waWxhdGlvbklELCB0aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcElELCB0aHJlc2hvbGRGb3JK
SVRTb29uSUQsIHRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXBJRCwgdGhyZXNob2xkRm9y
T3B0aW1pemVBZnRlckxvbmdXYXJtVXBJRCwgdGhyZXNob2xkRm9yT3B0aW1pemVTb29uSUQsIGV4
ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wSUQsIGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1l
bnRGb3JFbnRyeUlELCB0aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwSUQsIHRocmVz
aG9sZEZvckZUTE9wdGltaXplU29vbklELCBmdGxUaWVyVXBDb3VudGVySW5jcmVtZW50Rm9yTG9v
cElELCBmdGxUaWVyVXBDb3VudGVySW5jcmVtZW50Rm9yUmV0dXJuSUQsIGZ0bE9TUkVudHJ5RmFp
bHVyZUNvdW50Rm9yUmVvcHRpbWl6YXRpb25JRCwgZnRsT1NSRW50cnlSZXRyeVRocmVzaG9sZElE
LCBldmFsVGhyZXNob2xkTXVsdGlwbGllcklELCBtYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxl
bmd0aElELCByYW5kb21pemVFeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNJRCwgbWF4
aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50c0ZvckJhc2VsaW5lSUQsIG1heGlt
dW1FeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHNGb3JVcHBlclRpZXJzSUQsIGxpa2Vs
eVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50SUQsIGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNv
dW50SUQsIG9zckV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uSUQsIG9zckV4aXRDb3VudEZvclJl
b3B0aW1pemF0aW9uRnJvbUxvb3BJRCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXhJRCwg
bWluaW11bU9wdGltaXphdGlvbkRlbGF5SUQsIG1heGltdW1PcHRpbWl6YXRpb25EZWxheUlELCBk
ZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZUlELCBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZUlE
LCBkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXRJRCwgc3RydWN0dXJlQ2hlY2tWb3RlUmF0
aW9Gb3JIb2lzdGluZ0lELCBjaGVja0FycmF5Vm90ZVJhdGlvRm9ySG9pc3RpbmdJRCwgbWF4aW11
bURpcmVjdENhbGxTdGFja1NpemVJRCwgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxh
bmNlSUQsIG51bWJlck9mR0NNYXJrZXJzSUQsIHVzZVBhcmFsbGVsTWFya2luZ0NvbnN0cmFpbnRT
b2x2ZXJJRCwgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkSUQsIG1pbkhlYXBVdGlsaXphdGlvbklE
LCBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uSUQsIHNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDc0lE
LCBwZXJjZW50Q1BVUGVyTUJGb3JGdWxsVGltZXJJRCwgcGVyY2VudENQVVBlck1CRm9yRWRlblRp
bWVySUQsIGNvbGxlY3Rpb25UaW1lck1heFBlcmNlbnRDUFVJRCwgZm9yY2VXZWFrUmFuZG9tU2Vl
ZElELCBmb3JjZWRXZWFrUmFuZG9tU2VlZElELCB1c2Vab21iaWVNb2RlSUQsIHVzZUltbW9ydGFs
T2JqZWN0c0lELCBzd2VlcFN5bmNocm9ub3VzbHlJRCwgbWF4U2luZ2xlQWxsb2NhdGlvblNpemVJ
RCwgbG9nR0NJRCwgdXNlR0NJRCwgZ2NBdEVuZElELCBmb3JjZUdDU2xvd1BhdGhzSUQsIGZvcmNl
RGlkRGVmZXJHQ1dvcmtJRCwgZ2NNYXhIZWFwU2l6ZUlELCBmb3JjZVJBTVNpemVJRCwgcmVjb3Jk
R0NQYXVzZVRpbWVzSUQsIGR1bXBIZWFwU3RhdGlzdGljc0F0Vk1EZXN0cnVjdGlvbklELCBmb3Jj
ZUNvZGVCbG9ja1RvSmV0dGlzb25EdWVUb09sZEFnZUlELCB1c2VFYWdlckNvZGVCbG9ja0pldHRp
c29uVGltaW5nSUQsIHVzZVR5cGVQcm9maWxlcklELCB1c2VDb250cm9sRmxvd1Byb2ZpbGVySUQs
IHVzZVNhbXBsaW5nUHJvZmlsZXJJRCwgc2FtcGxlSW50ZXJ2YWxJRCwgY29sbGVjdFNhbXBsaW5n
UHJvZmlsZXJEYXRhRm9ySlNDU2hlbGxJRCwgc2FtcGxpbmdQcm9maWxlclRvcEZ1bmN0aW9uc0Nv
dW50SUQsIHNhbXBsaW5nUHJvZmlsZXJUb3BCeXRlY29kZXNDb3VudElELCBzYW1wbGluZ1Byb2Zp
bGVyUGF0aElELCBzYW1wbGVDQ29kZUlELCBhbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3JpZ2luTWFw
SUQsIHJhbmRvbUludGVncml0eUF1ZGl0UmF0ZUlELCB2ZXJpZnlIZWFwSUQsIG51bWJlck9mR0ND
eWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbklELCBleGNlcHRpb25TdGFja1RyYWNlTGltaXRJ
RCwgZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0SUQsIHVzZUV4Y2VwdGlvbkZ1enpJRCwgZmly
ZUV4Y2VwdGlvbkZ1enpBdElELCB2YWxpZGF0ZURGR0V4Y2VwdGlvbkhhbmRsaW5nSUQsIGR1bXBT
aW11bGF0ZWRUaHJvd3NJRCwgdmFsaWRhdGVFeGNlcHRpb25DaGVja3NJRCwgdW5leHBlY3RlZEV4
Y2VwdGlvblN0YWNrVHJhY2VMaW1pdElELCB2YWxpZGF0ZURGR0Nsb2JiZXJpemVJRCwgdXNlRXhl
Y3V0YWJsZUFsbG9jYXRpb25GdXp6SUQsIGZpcmVFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpBdElE
LCBmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXRPckFmdGVySUQsIHZlcmJvc2VFeGVjdXRh
YmxlQWxsb2NhdGlvbkZ1enpJRCwgdXNlT1NSRXhpdEZ1enpJRCwgZmlyZU9TUkV4aXRGdXp6QXRT
dGF0aWNJRCwgZmlyZU9TUkV4aXRGdXp6QXRJRCwgZmlyZU9TUkV4aXRGdXp6QXRPckFmdGVySUQs
IHNlZWRPZlZNUmFuZG9tRm9yRnV6emVySUQsIHVzZVJhbmRvbWl6aW5nRnV6emVyQWdlbnRJRCwg
c2VlZE9mUmFuZG9taXppbmdGdXp6ZXJBZ2VudElELCBkdW1wRnV6emVyQWdlbnRQcmVkaWN0aW9u
c0lELCB1c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnRJRCwgdXNlRmlsZUJhc2VkRnV6emVy
QWdlbnRJRCwgdXNlUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enplckFnZW50SUQsIHJlcXVpcmVQ
cmVkaWN0aW9uRm9yRmlsZUJhc2VkRnV6emVyQWdlbnRJRCwgZnV6emVyUHJlZGljdGlvbnNGaWxl
SUQsIHVzZU5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudElELCB1c2VXaWRlbmlu
Z051bWJlclByZWRpY3Rpb25GdXp6ZXJBZ2VudElELCBsb2dQaGFzZVRpbWVzSUQsIHJhcmVCbG9j
a1BlbmFsdHlJRCwgYWlyTGluZWFyU2NhblZlcmJvc2VJRCwgYWlyTGluZWFyU2NhblNwaWxsc0V2
ZXJ5dGhpbmdJRCwgYWlyRm9yY2VCcmlnZ3NBbGxvY2F0b3JJRCwgYWlyRm9yY2VJUkNBbGxvY2F0
b3JJRCwgYWlyUmFuZG9taXplUmVnc0lELCBhaXJSYW5kb21pemVSZWdzU2VlZElELCBjb2FsZXNj
ZVNwaWxsU2xvdHNJRCwgbG9nQWlyUmVnaXN0ZXJQcmVzc3VyZUlELCB1c2VCM1RhaWxEdXBJRCwg
bWF4QjNUYWlsRHVwQmxvY2tTaXplSUQsIG1heEIzVGFpbER1cEJsb2NrU3VjY2Vzc29yc0lELCB1
c2VCM0hvaXN0TG9vcEludmFyaWFudFZhbHVlc0lELCB1c2VEb2xsYXJWTUlELCBmdW5jdGlvbk92
ZXJyaWRlc0lELCB1c2VTaWdpbGxDcmFzaEFuYWx5emVySUQsIHdhdGNoZG9nSUQsIHVzZVBvbGxp
bmdUcmFwc0lELCB1c2VNYWNoRm9yRXhjZXB0aW9uc0lELCB1c2VJQ1N0YXRzSUQsIHByb3RvdHlw
ZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nSUQsIGR1bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zSUQs
IGR1bXBNb2R1bGVSZWNvcmRJRCwgZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZUlELCBleHBvc2VJbnRl
cm5hbE1vZHVsZUxvYWRlcklELCB1c2VTdXBlclNhbXBsZXJJRCwgdXNlU291cmNlUHJvdmlkZXJD
YWNoZUlELCB1c2VDb2RlQ2FjaGVJRCwgdXNlV2ViQXNzZW1ibHlJRCwgZmFpbFRvQ29tcGlsZVdl
YkFzc2VtYmx5Q29kZUlELCB3ZWJBc3NlbWJseVBhcnRpYWxDb21waWxlTGltaXRJRCwgd2ViQXNz
ZW1ibHlCQlFBaXJPcHRpbWl6YXRpb25MZXZlbElELCB3ZWJBc3NlbWJseUJCUUIzT3B0aW1pemF0
aW9uTGV2ZWxJRCwgd2ViQXNzZW1ibHlPTUdPcHRpbWl6YXRpb25MZXZlbElELCB3ZWJBc3NlbWJs
eUJCUUZhbGxiYWNrU2l6ZUlELCB1c2VCQlFUaWVyVXBDaGVja3NJRCwgdXNlV2ViQXNzZW1ibHlP
U1JJRCwgdGhyZXNob2xkRm9yQkJRT3B0aW1pemVBZnRlcldhcm1VcElELCB0aHJlc2hvbGRGb3JC
QlFPcHRpbWl6ZVNvb25JRCwgdGhyZXNob2xkRm9yT01HT3B0aW1pemVBZnRlcldhcm1VcElELCB0
aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZVNvb25JRCwgb21nVGllclVwQ291bnRlckluY3JlbWVudEZv
ckxvb3BJRCwgb21nVGllclVwQ291bnRlckluY3JlbWVudEZvckVudHJ5SUQsIHVzZVdlYkFzc2Vt
Ymx5RmFzdE1lbW9yeUlELCBsb2dXZWJBc3NlbWJseU1lbW9yeUlELCB3ZWJBc3NlbWJseUZhc3RN
ZW1vcnlSZWR6b25lUGFnZXNJRCwgY3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnlJRCwg
Y3Jhc2hPbkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRhdGVJRCwgbWF4TnVtV2ViQXNzZW1ibHlGYXN0
TWVtb3JpZXNJRCwgdXNlRmFzdFRMU0Zvcldhc21Db250ZXh0SUQsIHdhc21CQlFVc2VzQWlySUQs
IHVzZVdhc21MTEludElELCB1c2VCQlFKSVRJRCwgdXNlT01HSklUSUQsIHVzZVdhc21MTEludFBy
b2xvZ3VlT1NSSUQsIHVzZVdhc21MTEludExvb3BPU1JJRCwgdXNlV2FzbUxMSW50RXBpbG9ndWVP
U1JJRCwgd2FzbUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZUlELCB3YXNtTExJbnRUaWVyc1Vw
VG9CQlFJRCwgd2ViQXNzZW1ibHlCQlFBaXJNb2RlVGhyZXNob2xkSUQsIHVzZVdlYkFzc2VtYmx5
U3RyZWFtaW5nQXBpSUQsIHVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNoaW5nSUQsIHVzZVdl
YkFzc2VtYmx5UmVmZXJlbmNlc0lELCB1c2VXZWJBc3NlbWJseU11bHRpVmFsdWVzSUQsIHVzZVdl
YWtSZWZzSUQsIHVzZUJpZ0ludElELCB1c2VJbnRsRGlzcGxheU5hbWVzSUQsIHVzZUFycmF5QWxs
b2NhdGlvblByb2ZpbGluZ0lELCBmb3JjZVBvbHlQcm90b0lELCBmb3JjZU1pbmlWTU1vZGVJRCwg
dXNlVHJhY2VQb2ludHNJRCwgdHJhY2VMTEludEV4ZWN1dGlvbklELCB0cmFjZUxMSW50U2xvd1Bh
dGhJRCwgdHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbklELCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoSUQsIGRpc2tDYWNoZVBhdGhJRCwgZm9yY2VEaXNrQ2FjaGVJRCwgdmFs
aWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGVJRCwgdmFsaWRhdGVBYnN0cmFjdEludGVycHJl
dGVyU3RhdGVQcm9iYWJpbGl0eUlELCBkdW1wSklUTWVtb3J5UGF0aElELCBkdW1wSklUTWVtb3J5
Rmx1c2hJbnRlcnZhbElELCB1c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nSUQsIGZvcmNl
T1NSRXhpdFRvTExJbnRJRCwgZ2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnNJRCwgdXNl
UHVibGljQ2xhc3NGaWVsZHNJRCwgdXNlUmFuZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2Nh
dGlvbklELCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdElELCBhbGxvd1Vuc3VwcG9ydGVk
VGllcnNJRCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzSUQsIHJldHVybkVhcmx5RnJvbUluZmluaXRl
TG9vcHNGb3JGdXp6aW5nSUQsIGVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdElELCB1
c2VMSUNNRnV6emluZ0lELCBzZWVkRm9yTElDTUZ1enplcklELCBhbGxvd0hvaXN0aW5nTElDTVBy
b2JhYmlsaXR5SUQsDQogICAgfTsNCg0KDQogICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7
DQogICAgICAgIEJvb2wsDQogICAgICAgIFVuc2lnbmVkLA0KICAgICAgICBEb3VibGUsDQogICAg
ICAgIEludDMyLA0KICAgICAgICBTaXplLA0KICAgICAgICBPcHRpb25SYW5nZSwNCiAgICAgICAg
T3B0aW9uU3RyaW5nLA0KICAgICAgICBHQ0xvZ0xldmVsLA0KICAgIH07DQoNCiAgICBjbGFzcyBB
bGxvd1VuZmluYWxpemVkQWNjZXNzU2NvcGUgew0KICAgICAgICBBbGxvd1VuZmluYWxpemVkQWNj
ZXNzU2NvcGUoY29uc3QgQWxsb3dVbmZpbmFsaXplZEFjY2Vzc1Njb3BlJikgPSBkZWxldGU7IEFs
bG93VW5maW5hbGl6ZWRBY2Nlc3NTY29wZSYgb3BlcmF0b3I9KGNvbnN0IEFsbG93VW5maW5hbGl6
ZWRBY2Nlc3NTY29wZSYpID0gZGVsZXRlOzsNCiAgICAgICAgcHJpdmF0ZTogdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqKSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgPSBkZWxldGU7
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pID0gZGVsZXRlOyB0eXBl
ZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc0ZvcmJpZEhlYXBB
bGxvY2F0aW9uTWFjcm87DQogICAgcHVibGljOg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDEwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxPcHRpb25zLmgiDQogICAgICAgIF9fZm9yY2VpbmxpbmUgQWxs
b3dVbmZpbmFsaXplZEFjY2Vzc1Njb3BlKCkgPSBkZWZhdWx0Ow0KICAgICAgICBfX2ZvcmNlaW5s
aW5lIH5BbGxvd1VuZmluYWxpemVkQWNjZXNzU2NvcGUoKSB7IH0NCiNsaW5lIDEwMyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPcHRp
b25zLmgiDQogICAgfTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCk7DQogICAgc3RhdGljIHZvaWQgZmluYWxpemUoKTsNCg0KICAgIA0KICAgIA0K
ICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgYm9vbCBzZXRPcHRpb25zKGNvbnN0IGNo
YXIqIG9wdGlvbnNMaXN0KTsNCg0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBzdGF0aWMgYm9vbCBzZXRPcHRpb24oY29uc3QgY2hhciogYXJnKTsNCg0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9ucyhGSUxFKiwgRHVtcExldmVs
LCBjb25zdCBjaGFyKiB0aXRsZSA9IG51bGxwdHIpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBzdGF0aWMgdm9pZCBkdW1wQWxsT3B0aW9uc0luQUxpbmUoU3RyaW5nQnVpbGRlciYpOw0KDQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIGVuc3VyZU9wdGlvbnNBcmVDb2hl
cmVudCgpOw0KICAgIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQogICAgcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUtlcm5UQ1NNRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnVzZUtlcm5UQ1NNRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VLZXJuVENTTSgpIHsgKCh2b2lkKTAp
OyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlS2VyblRDU007IH0gcHJpdmF0ZTog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZhbGlkYXRlT3B0aW9u
c0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52YWxpZGF0ZU9wdGlv
bnNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OkJvb2wmIHZhbGlkYXRlT3B0aW9ucygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMudmFsaWRhdGVPcHRpb25zOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgZHVtcE9wdGlvbnNEZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcE9wdGlvbnNEZWZhdWx0OyB9IHB1YmxpYzog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBkdW1wT3B0aW9u
cygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcE9wdGlv
bnM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6Ok9wdGlv
blN0cmluZyYgY29uZmlnRmlsZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6
OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29u
ZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0
aW9ucy5jb25maWdGaWxlRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmcmIGNvbmZpZ0ZpbGUoKSB7ICgodm9pZCkwKTsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNvbmZpZ0ZpbGU7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUxMSW50RGVmYXVsdCgpIHsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUxMSW50RGVmYXVsdDsgfSBwdWJsaWM6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VMTEludCgpIHsg
KCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlTExJbnQ7IH0gcHJp
dmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUpJVERl
ZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VKSVREZWZhdWx0OyB9
IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUpJ
VCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlSklUOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VC
YXNlbGluZUpJVERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VC
YXNlbGluZUpJVERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgdXNlQmFzZWxpbmVKSVQoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0
d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldl
YkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4
dGVuc2lvbnMpKS5vcHRpb25zLnVzZUJhc2VsaW5lSklUOyB9IHByaXZhdGU6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VERkdKSVREZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlREZHSklURGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VERkdKSVQoKSB7ICgo
dm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZURGR0pJVDsgfSBwcml2
YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlUmVnRXhw
SklURGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVJlZ0V4cEpJ
VERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
Qm9vbCYgdXNlUmVnRXhwSklUKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VSZWdFeHBKSVQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZURPTUpJVERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy51c2VET01KSVREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZURPTUpJVCgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlRE9NSklUOyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiByZXBvcnRNdXN0U3VjY2VlZEV4ZWN1
dGFibGVBbGxvY2F0aW9uc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5yZXBvcnRNdXN0U3VjY2VlZEV4ZWN1dGFibGVBbGxvY2F0aW9uc0RlZmF1bHQ7IH0gcHVibGlj
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgcmVwb3J0TXVzdFN1
Y2NlZWRFeGVjdXRhYmxlQWxsb2NhdGlvbnMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnJlcG9ydE11c3RTdWNjZWVkRXhlY3V0YWJsZUFsbG9jYXRpb25zOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYg
bWF4UGVyVGhyZWFkU3RhY2tVc2FnZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy5tYXhQZXJUaHJlYWRTdGFja1VzYWdlRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4UGVyVGhyZWFkU3RhY2tV
c2FnZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4UGVy
VGhyZWFkU3RhY2tVc2FnZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6VW5zaWduZWQmIHNvZnRSZXNlcnZlZFpvbmVTaXplRGVmYXVsdCgpIHsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnNvZnRSZXNlcnZlZFpvbmVTaXplRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc29m
dFJlc2VydmVkWm9uZVNpemUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLnNvZnRSZXNlcnZlZFpvbmVTaXplOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgcmVzZXJ2ZWRab25lU2l6ZURlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5yZXNlcnZlZFpvbmVTaXplRGVmYXVsdDsg
fSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYg
cmVzZXJ2ZWRab25lU2l6ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMucmVzZXJ2ZWRab25lU2l6ZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgY3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5RGVmYXVsdCgpIHsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNyYXNoT25EaXNhbGxvd2VkVk1FbnRyeURl
ZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgY3Jhc2hPbkRpc2FsbG93ZWRWTUVudHJ5KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5jcmFzaE9uRGlzYWxsb3dlZFZNRW50cnk7IH0gcHJpdmF0ZTogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGNyYXNoSWZDYW50QWxsb2Nh
dGVKSVRNZW1vcnlEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY3Jh
c2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgY3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9y
eSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY3Jhc2hJZkNh
bnRBbGxvY2F0ZUpJVE1lbW9yeTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6VW5zaWduZWQmIGppdE1lbW9yeVJlc2VydmF0aW9uU2l6ZURlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5qaXRNZW1vcnlSZXNlcnZhdGlvblNpemVE
ZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkJiBqaXRNZW1vcnlSZXNlcnZhdGlvblNpemUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLmppdE1lbW9yeVJlc2VydmF0aW9uU2l6ZTsgfSBwcml2YXRl
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZm9yY2VDb2RlQmxv
Y2tMaXZlbmVzc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mb3Jj
ZUNvZGVCbG9ja0xpdmVuZXNzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZUNvZGVCbG9ja0xpdmVuZXNzKCkgeyAoKHZvaWQp
MCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mb3JjZUNvZGVCbG9ja0xpdmVuZXNz
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBm
b3JjZUlDRmFpbHVyZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5m
b3JjZUlDRmFpbHVyZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6Qm9vbCYgZm9yY2VJQ0ZhaWx1cmUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLmZvcmNlSUNGYWlsdXJlOyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgcmVwYXRjaENvdW50Rm9yQ29v
bERvd25EZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucmVwYXRjaENv
dW50Rm9yQ29vbERvd25EZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiByZXBhdGNoQ291bnRGb3JDb29sRG93bigpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucmVwYXRjaENvdW50Rm9yQ29vbERv
d247IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2ln
bmVkJiBpbml0aWFsQ29vbERvd25Db3VudERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy5pbml0aWFsQ29vbERvd25Db3VudERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGluaXRpYWxDb29sRG93bkNv
dW50KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5pbml0aWFs
Q29vbERvd25Db3VudDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6VW5zaWduZWQmIHJlcGF0Y2hCdWZmZXJpbmdDb3VudGRvd25EZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucmVwYXRjaEJ1ZmZlcmluZ0NvdW50ZG93bkRlZmF1
bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWdu
ZWQmIHJlcGF0Y2hCdWZmZXJpbmdDb3VudGRvd24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0
d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldl
YkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4
dGVuc2lvbnMpKS5vcHRpb25zLnJlcGF0Y2hCdWZmZXJpbmdDb3VudGRvd247IH0gcHJpdmF0ZTog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBHZW5lcmF0ZWRC
eXRlY29kZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcEdl
bmVyYXRlZEJ5dGVjb2Rlc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcEdlbmVyYXRlZEJ5dGVjb2RlcygpIHsgKCh2b2lkKTAp
OyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcEdlbmVyYXRlZEJ5dGVjb2Rlczsg
fSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVt
cEdlbmVyYXRlZFdhc21CeXRlY29kZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMuZHVtcEdlbmVyYXRlZFdhc21CeXRlY29kZXNEZWZhdWx0OyB9IHB1YmxpYzogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBHZW5lcmF0ZWRXYXNt
Qnl0ZWNvZGVzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5k
dW1wR2VuZXJhdGVkV2FzbUJ5dGVjb2RlczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzRGVmYXVs
dCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBCeXRlY29kZUxpdmVuZXNz
UmVzdWx0c0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHM7
IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZh
bGlkYXRlQnl0ZWNvZGVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
dmFsaWRhdGVCeXRlY29kZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgdmFsaWRhdGVCeXRlY29kZSgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmFsaWRhdGVCeXRlY29kZTsgfSBwcml2YXRlOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZm9yY2VEZWJ1Z2dlckJ5
dGVjb2RlR2VuZXJhdGlvbkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5mb3JjZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZURlYnVnZ2VyQnl0ZWNv
ZGVHZW5lcmF0aW9uKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5mb3JjZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uOyB9IHByaXZhdGU6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wQnl0ZWNvZGVzQmVmb3JlR2VuZXJh
dG9yaWZpY2F0aW9uRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1
bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb25EZWZhdWx0OyB9IHB1YmxpYzogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBCeXRlY29kZXNCZWZv
cmVHZW5lcmF0b3JpZmljYXRpb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb247IH0gcHJpdmF0
ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUZ1bmN0aW9u
RG90QXJndW1lbnRzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVz
ZUZ1bmN0aW9uRG90QXJndW1lbnRzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VGdW5jdGlvbkRvdEFyZ3VtZW50cygpIHsgKCh2
b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlRnVuY3Rpb25Eb3RBcmd1
bWVudHM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJv
b2wmIHVzZVRhaWxDYWxsc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy51c2VUYWlsQ2FsbHNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVRhaWxDYWxscygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlVGFpbENhbGxzOyB9IHByaXZhdGU6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBvcHRpbWl6ZVJlY3Vyc2l2ZVRhaWxDYWxs
c0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5vcHRpbWl6ZVJlY3Vy
c2l2ZVRhaWxDYWxsc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6Qm9vbCYgb3B0aW1pemVSZWN1cnNpdmVUYWlsQ2FsbHMoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm9wdGltaXplUmVjdXJzaXZlVGFpbENh
bGxzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiBhbHdheXNVc2VTaGFkb3dDaGlja2VuRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLmFsd2F5c1VzZVNoYWRvd0NoaWNrZW5EZWZhdWx0OyB9IHB1YmxpYzogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGFsd2F5c1VzZVNoYWRvd0NoaWNr
ZW4oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmFsd2F5c1Vz
ZVNoYWRvd0NoaWNrZW47IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OlVuc2lnbmVkJiBzaGFkb3dDaGlja2VuTG9nU2l6ZURlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy5zaGFkb3dDaGlja2VuTG9nU2l6ZURlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHNoYWRv
d0NoaWNrZW5Mb2dTaXplKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6
OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29u
ZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0
aW9ucy5zaGFkb3dDaGlja2VuTG9nU2l6ZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHNoYWRvd0NoaWNrZW5NYXhUYWlsRGVsZXRlZEZy
YW1lc1NpemVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2hhZG93
Q2hpY2tlbk1heFRhaWxEZWxldGVkRnJhbWVzU2l6ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHNoYWRvd0NoaWNrZW5NYXhU
YWlsRGVsZXRlZEZyYW1lc1NpemUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnNoYWRvd0NoaWNrZW5NYXhUYWlsRGVsZXRlZEZyYW1lc1NpemU7IH0gcHJpdmF0
ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUl0ZXJhdGlv
bkludHJpbnNpY3NEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
SXRlcmF0aW9uSW50cmluc2ljc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlSXRlcmF0aW9uSW50cmluc2ljcygpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlSXRlcmF0aW9uSW50cmluc2lj
czsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
dXNlT1NMb2dEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlT1NM
b2dEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OkJvb2wmIHVzZU9TTG9nKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6
OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29u
ZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0
aW9ucy51c2VPU0xvZzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgZHVtcERpc2Fzc2VtYmx5RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLmR1bXBEaXNhc3NlbWJseURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcERpc2Fzc2VtYmx5KCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wRGlzYXNzZW1ibHk7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGFzeW5j
RGlzYXNzZW1ibHlEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuYXN5
bmNEaXNhc3NlbWJseURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6Qm9vbCYgYXN5bmNEaXNhc3NlbWJseSgpIHsgKCh2b2lkKTApOyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuYXN5bmNEaXNhc3NlbWJseTsgfSBwcml2YXRlOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcERGR0Rpc2Fzc2VtYmx5
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBERkdEaXNhc3Nl
bWJseURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgZHVtcERGR0Rpc2Fzc2VtYmx5KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5kdW1wREZHRGlzYXNzZW1ibHk7IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBGVExEaXNhc3NlbWJseURlZmF1
bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wRlRMRGlzYXNzZW1ibHlE
ZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJv
b2wmIGR1bXBGVExEaXNhc3NlbWJseSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMuZHVtcEZUTERpc2Fzc2VtYmx5OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wUmVnRXhwRGlzYXNzZW1ibHlEZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcFJlZ0V4cERpc2Fzc2VtYmx5
RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpC
b29sJiBkdW1wUmVnRXhwRGlzYXNzZW1ibHkoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLmR1bXBSZWdFeHBEaXNhc3NlbWJseTsgfSBwcml2YXRlOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcFdhc21EaXNhc3NlbWJseURl
ZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wV2FzbURpc2Fzc2Vt
Ymx5RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiBkdW1wV2FzbURpc2Fzc2VtYmx5KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5kdW1wV2FzbURpc2Fzc2VtYmx5OyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wQkJRRGlzYXNzZW1ibHlEZWZh
dWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcEJCUURpc2Fzc2VtYmx5
RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpC
b29sJiBkdW1wQkJRRGlzYXNzZW1ibHkoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLmR1bXBCQlFEaXNhc3NlbWJseTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcE9NR0Rpc2Fzc2VtYmx5RGVmYXVsdCgp
IHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBPTUdEaXNhc3NlbWJseURlZmF1
bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
ZHVtcE9NR0Rpc2Fzc2VtYmx5KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy5kdW1wT01HRGlzYXNzZW1ibHk7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGxvZ0pJVENvZGVGb3JQZXJmRGVmYXVsdCgpIHsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmxvZ0pJVENvZGVGb3JQZXJmRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBsb2dKSVRD
b2RlRm9yUGVyZigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
bG9nSklUQ29kZUZvclBlcmY7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6Ok9wdGlvblJhbmdlJiBieXRlY29kZVJhbmdlVG9KSVRDb21waWxlRGVmYXVsdCgp
IHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmJ5dGVjb2RlUmFuZ2VUb0pJVENvbXBp
bGVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
Ok9wdGlvblJhbmdlJiBieXRlY29kZVJhbmdlVG9KSVRDb21waWxlKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5ieXRlY29kZVJhbmdlVG9KSVRDb21waWxlOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpPcHRpb25SYW5n
ZSYgYnl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy5ieXRlY29kZVJhbmdlVG9ERkdDb21waWxlRGVmYXVsdDsgfSBwdWJsaWM6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpPcHRpb25SYW5nZSYgYnl0ZWNv
ZGVSYW5nZVRvREZHQ29tcGlsZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMuYnl0ZWNvZGVSYW5nZVRvREZHQ29tcGlsZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6T3B0aW9uUmFuZ2UmIGJ5dGVjb2RlUmFuZ2VUb0ZU
TENvbXBpbGVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuYnl0ZWNv
ZGVSYW5nZVRvRlRMQ29tcGlsZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6T3B0aW9uUmFuZ2UmIGJ5dGVjb2RlUmFuZ2VUb0ZUTENvbXBpbGUo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmJ5dGVjb2RlUmFu
Z2VUb0ZUTENvbXBpbGU7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6Ok9wdGlvblN0cmluZyYgaml0QWxsb3dsaXN0RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0
d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldl
YkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4
dGVuc2lvbnMpKS5vcHRpb25zLmppdEFsbG93bGlzdERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6T3B0aW9uU3RyaW5nJiBqaXRBbGxvd2xpc3Qo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmppdEFsbG93bGlz
dDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6T3B0aW9u
U3RyaW5nJiBkZmdBbGxvd2xpc3REZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMuZGZnQWxsb3dsaXN0RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmcmIGRmZ0FsbG93bGlzdCgpIHsgKCh2b2lkKTAp
OyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZGZnQWxsb3dsaXN0OyB9IHByaXZhdGU6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmcmIGZ0bEFs
bG93bGlzdERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mdGxBbGxv
d2xpc3REZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6Ok9wdGlvblN0cmluZyYgZnRsQWxsb3dsaXN0KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy5mdGxBbGxvd2xpc3Q7IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBTb3VyY2VBdERGR1RpbWVEZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcFNvdXJjZUF0REZHVGltZURl
ZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgZHVtcFNvdXJjZUF0REZHVGltZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMuZHVtcFNvdXJjZUF0REZHVGltZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcEJ5dGVjb2RlQXRERkdUaW1lRGVmYXVs
dCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBCeXRlY29kZUF0REZHVGlt
ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
Qm9vbCYgZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5kdW1wQnl0ZWNvZGVBdERGR1RpbWU7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBHcmFwaEFmdGVyUGFyc2lu
Z0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wR3JhcGhBZnRl
clBhcnNpbmdEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OkJvb2wmIGR1bXBHcmFwaEFmdGVyUGFyc2luZygpIHsgKCh2b2lkKTApOyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcEdyYXBoQWZ0ZXJQYXJzaW5nOyB9IHByaXZhdGU6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wR3JhcGhBdEVh
Y2hQaGFzZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wR3Jh
cGhBdEVhY2hQaGFzZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6Qm9vbCYgZHVtcEdyYXBoQXRFYWNoUGhhc2UoKSB7ICgodm9pZCkwKTsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBHcmFwaEF0RWFjaFBoYXNlOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wREZHR3Jh
cGhBdEVhY2hQaGFzZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5k
dW1wREZHR3JhcGhBdEVhY2hQaGFzZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcERGR0dyYXBoQXRFYWNoUGhhc2UoKSB7ICgo
dm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBERkdHcmFwaEF0RWFj
aFBoYXNlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpC
b29sJiBkdW1wREZHRlRMR3JhcGhBdEVhY2hQaGFzZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5kdW1wREZHRlRMR3JhcGhBdEVhY2hQaGFzZURlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcERGR0ZU
TEdyYXBoQXRFYWNoUGhhc2UoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLmR1bXBERkdGVExHcmFwaEF0RWFjaFBoYXNlOyB9IHByaXZhdGU6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wQjNHcmFwaEF0RWFjaFBoYXNlRGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBCM0dyYXBoQXRFYWNo
UGhhc2VEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIGR1bXBCM0dyYXBoQXRFYWNoUGhhc2UoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBCM0dyYXBoQXRFYWNoUGhhc2U7IH0gcHJpdmF0ZTog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBBaXJHcmFwaEF0
RWFjaFBoYXNlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBB
aXJHcmFwaEF0RWFjaFBoYXNlRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wQWlyR3JhcGhBdEVhY2hQaGFzZSgpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcEFpckdyYXBoQXRFYWNoUGhh
c2U7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wm
IHZlcmJvc2VERkdCeXRlY29kZVBhcnNpbmdEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMudmVyYm9zZURGR0J5dGVjb2RlUGFyc2luZ0RlZmF1bHQ7IH0gcHVibGljOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZURGR0J5dGVj
b2RlUGFyc2luZygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
dmVyYm9zZURGR0J5dGVjb2RlUGFyc2luZzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgc2FmZXBvaW50QmVmb3JlRWFjaFBoYXNlRGVmYXVsdCgp
IHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnNhZmVwb2ludEJlZm9yZUVhY2hQaGFz
ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
Qm9vbCYgc2FmZXBvaW50QmVmb3JlRWFjaFBoYXNlKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy5zYWZlcG9pbnRCZWZvcmVFYWNoUGhhc2U7IH0gcHJpdmF0ZTog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VDb21waWxh
dGlvbkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52ZXJib3NlQ29t
cGlsYXRpb25EZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OkJvb2wmIHZlcmJvc2VDb21waWxhdGlvbigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZUNvbXBpbGF0aW9uOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2ZXJib3NlRlRMQ29tcGlsYXRp
b25EZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZUZUTENv
bXBpbGF0aW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpCb29sJiB2ZXJib3NlRlRMQ29tcGlsYXRpb24oKSB7ICgodm9pZCkwKTsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZlcmJvc2VGVExDb21waWxhdGlvbjsgfSBwcml2YXRl
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgbG9nQ29tcGlsYXRp
b25DaGFuZ2VzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmxvZ0Nv
bXBpbGF0aW9uQ2hhbmdlc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgbG9nQ29tcGlsYXRpb25DaGFuZ2VzKCkgeyAoKHZvaWQpMCk7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5sb2dDb21waWxhdGlvbkNoYW5nZXM7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVBy
b2JlT1NSRXhpdERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VQ
cm9iZU9TUkV4aXREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OkJvb2wmIHVzZVByb2JlT1NSRXhpdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlUHJvYmVPU1JFeGl0OyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBwcmludEVhY2hPU1JFeGl0RGVmYXVs
dCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnByaW50RWFjaE9TUkV4aXREZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wm
IHByaW50RWFjaE9TUkV4aXQoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLnByaW50RWFjaE9TUkV4aXQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZhbGlkYXRlRG9lc0dDRGVmYXVsdCgpIHsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLnZhbGlkYXRlRG9lc0dDRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2YWxpZGF0ZURvZXNHQygp
IHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmFsaWRhdGVEb2Vz
R0M7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wm
IHZhbGlkYXRlR3JhcGhEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
dmFsaWRhdGVHcmFwaERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6Qm9vbCYgdmFsaWRhdGVHcmFwaCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudmFsaWRhdGVHcmFwaDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNl
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZhbGlkYXRlR3JhcGhB
dEVhY2hQaGFzZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgdmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2U7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJv
c2VWYWxpZGF0aW9uRmFpbHVyZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6
OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29u
ZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0
aW9ucy52ZXJib3NlVmFsaWRhdGlvbkZhaWx1cmVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VWYWxpZGF0aW9uRmFpbHVy
ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZVZh
bGlkYXRpb25GYWlsdXJlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpCb29sJiB2ZXJib3NlT1NSRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnZlcmJvc2VPU1JEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VPU1IoKSB7ICgodm9pZCkwKTsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZlcmJvc2VPU1I7IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VERkdPU1JFeGl0RGVmYXVs
dCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZlcmJvc2VERkdPU1JFeGl0RGVm
YXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiB2ZXJib3NlREZHT1NSRXhpdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMudmVyYm9zZURGR09TUkV4aXQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VGVExPU1JFeGl0RGVmYXVsdCgpIHsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZlcmJvc2VGVExPU1JFeGl0RGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2ZXJib3Nl
RlRMT1NSRXhpdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
dmVyYm9zZUZUTE9TUkV4aXQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VDYWxsTGlua0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy52ZXJib3NlQ2FsbExpbmtEZWZhdWx0OyB9IHB1YmxpYzogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VDYWxsTGluaygpIHsg
KCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZUNhbGxMaW5r
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2
ZXJib3NlQ29tcGlsYXRpb25RdWV1ZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy52ZXJib3NlQ29tcGlsYXRpb25RdWV1ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZUNvbXBpbGF0aW9uUXVl
dWUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZlcmJvc2VD
b21waWxhdGlvblF1ZXVlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpCb29sJiByZXBvcnRDb21waWxlVGltZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMucmVwb3J0Q29tcGlsZVRpbWVzRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiByZXBvcnRDb21waWxlVGlt
ZXMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJlcG9ydENv
bXBpbGVUaW1lczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgcmVwb3J0QmFzZWxpbmVDb21waWxlVGltZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMucmVwb3J0QmFzZWxpbmVDb21waWxlVGltZXNEZWZhdWx0OyB9
IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHJlcG9y
dEJhc2VsaW5lQ29tcGlsZVRpbWVzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy5yZXBvcnRCYXNlbGluZUNvbXBpbGVUaW1lczsgfSBwcml2YXRlOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgcmVwb3J0REZHQ29tcGlsZVRpbWVz
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJlcG9ydERGR0NvbXBp
bGVUaW1lc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgcmVwb3J0REZHQ29tcGlsZVRpbWVzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy5yZXBvcnRERkdDb21waWxlVGltZXM7IH0gcHJpdmF0ZTog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHJlcG9ydEZUTENvbXBp
bGVUaW1lc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5yZXBvcnRG
VExDb21waWxlVGltZXNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHJlcG9ydEZUTENvbXBpbGVUaW1lcygpIHsgKCh2b2lkKTApOyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucmVwb3J0RlRMQ29tcGlsZVRpbWVzOyB9IHBy
aXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiByZXBvcnRU
b3RhbENvbXBpbGVUaW1lc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5yZXBvcnRUb3RhbENvbXBpbGVUaW1lc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgcmVwb3J0VG90YWxDb21waWxlVGltZXMoKSB7
ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJlcG9ydFRvdGFsQ29t
cGlsZVRpbWVzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiByZXBvcnRUb3RhbFBoYXNlVGltZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMucmVwb3J0VG90YWxQaGFzZVRpbWVzRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiByZXBvcnRUb3RhbFBoYXNl
VGltZXMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJlcG9y
dFRvdGFsUGhhc2VUaW1lczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgcmVwb3J0UGFyc2VUaW1lc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5yZXBvcnRQYXJzZVRpbWVzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiByZXBvcnRQYXJzZVRpbWVzKCkg
eyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5yZXBvcnRQYXJzZVRp
bWVzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiByZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy5yZXBvcnRCeXRlY29kZUNvbXBpbGVUaW1lc0RlZmF1bHQ7IH0gcHVibGlj
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgcmVwb3J0Qnl0ZWNv
ZGVDb21waWxlVGltZXMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBjb3VudFBhcnNlVGltZXNEZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY291bnRQYXJzZVRpbWVzRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBjb3VudFBh
cnNlVGltZXMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNv
dW50UGFyc2VUaW1lczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgdmVyYm9zZUV4aXRQcm9maWxlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnZlcmJvc2VFeGl0UHJvZmlsZURlZmF1bHQ7IH0gcHVibGljOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZUV4aXRQcm9maWxl
KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52ZXJib3NlRXhp
dFByb2ZpbGU7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OkJvb2wmIHZlcmJvc2VDRkFEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMudmVyYm9zZUNGQURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZUNGQSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZUNGQTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZURGR0ZhaWx1cmVEZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZURGR0ZhaWx1cmVEZWZhdWx0OyB9
IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJv
c2VERkdGYWlsdXJlKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy52ZXJib3NlREZHRmFpbHVyZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZUZUTFRvSlNUaHVua0RlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy52ZXJib3NlRlRMVG9KU1RodW5rRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2ZXJib3NlRlRM
VG9KU1RodW5rKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52
ZXJib3NlRlRMVG9KU1RodW5rOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiB2ZXJib3NlRlRMRmFpbHVyZURlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy52ZXJib3NlRlRMRmFpbHVyZURlZmF1bHQ7IH0gcHVibGljOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZUZUTEZhaWx1
cmUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZlcmJvc2VG
VExGYWlsdXJlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiBhbHdheXNDb21wdXRlSGFzaERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy5hbHdheXNDb21wdXRlSGFzaERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgYWx3YXlzQ29tcHV0ZUhhc2goKSB7ICgo
dm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmFsd2F5c0NvbXB1dGVIYXNo
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB0
ZXN0VGhlRlRMRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnRlc3RU
aGVGVExEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIHRlc3RUaGVGVEwoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnRlc3RUaGVGVEw7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VTYW5pdGl6ZVN0YWNrRGVmYXVsdCgpIHsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZlcmJvc2VTYW5pdGl6ZVN0YWNrRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2ZXJib3Nl
U2FuaXRpemVTdGFjaygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMudmVyYm9zZVNhbml0aXplU3RhY2s7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUdlbmVyYXRpb25hbEdDRGVmYXVsdCgpIHsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUdlbmVyYXRpb25hbEdDRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VHZW5lcmF0
aW9uYWxHQygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
R2VuZXJhdGlvbmFsR0M7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OkJvb2wmIHVzZUNvbmN1cnJlbnRHQ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy51c2VDb25jdXJyZW50R0NEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUNvbmN1cnJlbnRHQygpIHsgKCh2
b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlQ29uY3VycmVudEdDOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBjb2xs
ZWN0Q29udGludW91c2x5RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
LmNvbGxlY3RDb250aW51b3VzbHlEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGNvbGxlY3RDb250aW51b3VzbHkoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNvbGxlY3RDb250aW51b3VzbHk7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgY29s
bGVjdENvbnRpbnVvdXNseVBlcmlvZE1TRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLmNvbGxlY3RDb250aW51b3VzbHlQZXJpb2RNU0RlZmF1bHQ7IH0gcHVibGljOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBjb2xsZWN0Q29udGlu
dW91c2x5UGVyaW9kTVMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLmNvbGxlY3RDb250aW51b3VzbHlQZXJpb2RNUzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZm9yY2VGZW5jZWRCYXJyaWVyRGVmYXVsdCgp
IHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZvcmNlRmVuY2VkQmFycmllckRlZmF1
bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
Zm9yY2VGZW5jZWRCYXJyaWVyKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy5mb3JjZUZlbmNlZEJhcnJpZXI7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VWaXNpdFJhY2VEZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZVZpc2l0UmFjZURlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZVZp
c2l0UmFjZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVy
Ym9zZVZpc2l0UmFjZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgb3B0aW1pemVQYXJhbGxlbFNsb3RWaXNpdG9yc0ZvclN0b3BwZWRNdXRhdG9y
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm9wdGltaXplUGFyYWxs
ZWxTbG90VmlzaXRvcnNGb3JTdG9wcGVkTXV0YXRvckRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgb3B0aW1pemVQYXJhbGxlbFNsb3RW
aXNpdG9yc0ZvclN0b3BwZWRNdXRhdG9yKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy5vcHRpbWl6ZVBhcmFsbGVsU2xvdFZpc2l0b3JzRm9yU3RvcHBlZE11dGF0
b3I7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2ln
bmVkJiBsYXJnZUhlYXBTaXplRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLmxhcmdlSGVhcFNpemVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBsYXJnZUhlYXBTaXplKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5sYXJnZUhlYXBTaXplOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc21hbGxIZWFwU2l6
ZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5zbWFsbEhlYXBTaXpl
RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpV
bnNpZ25lZCYgc21hbGxIZWFwU2l6ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMuc21hbGxIZWFwU2l6ZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBzbWFsbEhlYXBSQU1GcmFjdGlvbkRlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5zbWFsbEhlYXBSQU1GcmFjdGlvbkRlZmF1
bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91Ymxl
JiBzbWFsbEhlYXBSQU1GcmFjdGlvbigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMuc21hbGxIZWFwUkFNRnJhY3Rpb247IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgc21hbGxIZWFwR3Jvd3RoRmFjdG9yRGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnNtYWxsSGVhcEdyb3d0aEZh
Y3RvckRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6RG91YmxlJiBzbWFsbEhlYXBHcm93dGhGYWN0b3IoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLnNtYWxsSGVhcEdyb3d0aEZhY3RvcjsgfSBwcml2YXRlOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBtZWRpdW1IZWFwUkFN
RnJhY3Rpb25EZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWVkaXVt
SGVhcFJBTUZyYWN0aW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpEb3VibGUmIG1lZGl1bUhlYXBSQU1GcmFjdGlvbigpIHsgKCh2b2lkKTAp
OyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWVkaXVtSGVhcFJBTUZyYWN0aW9uOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIG1l
ZGl1bUhlYXBHcm93dGhGYWN0b3JEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMubWVkaXVtSGVhcEdyb3d0aEZhY3RvckRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBtZWRpdW1IZWFwR3Jvd3RoRmFjdG9y
KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tZWRpdW1IZWFw
R3Jvd3RoRmFjdG9yOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9y
YWdlOjpEb3VibGUmIGxhcmdlSGVhcEdyb3d0aEZhY3RvckRlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy5sYXJnZUhlYXBHcm93dGhGYWN0b3JEZWZhdWx0OyB9IHB1Ymxp
YzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgbGFyZ2VIZWFw
R3Jvd3RoRmFjdG9yKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5sYXJnZUhlYXBHcm93dGhGYWN0b3I7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgbWluaVZNSGVhcEdyb3d0aEZhY3RvckRlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5taW5pVk1IZWFwR3Jvd3RoRmFjdG9yRGVm
YXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3Vi
bGUmIG1pbmlWTUhlYXBHcm93dGhGYWN0b3IoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLm1pbmlWTUhlYXBHcm93dGhGYWN0b3I7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgY3JpdGljYWxHQ01lbW9yeVRo
cmVzaG9sZERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5jcml0aWNh
bEdDTWVtb3J5VGhyZXNob2xkRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIGNyaXRpY2FsR0NNZW1vcnlUaHJlc2hvbGQoKSB7ICgo
dm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNyaXRpY2FsR0NNZW1vcnlU
aHJlc2hvbGQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OkRvdWJsZSYgbWluaW11bU11dGF0b3JVdGlsaXphdGlvbkRlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy5taW5pbXVtTXV0YXRvclV0aWxpemF0aW9uRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIG1pbmlt
dW1NdXRhdG9yVXRpbGl6YXRpb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLm1pbmltdW1NdXRhdG9yVXRpbGl6YXRpb247IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgbWF4aW11bU11dGF0b3JVdGlsaXph
dGlvbkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtTXV0
YXRvclV0aWxpemF0aW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpEb3VibGUmIG1heGltdW1NdXRhdG9yVXRpbGl6YXRpb24oKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heGltdW1NdXRhdG9yVXRpbGl6
YXRpb247IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRv
dWJsZSYgZXBzaWxvbk11dGF0b3JVdGlsaXphdGlvbkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5lcHNpbG9uTXV0YXRvclV0aWxpemF0aW9uRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIGVwc2lsb25N
dXRhdG9yVXRpbGl6YXRpb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLmVwc2lsb25NdXRhdG9yVXRpbGl6YXRpb247IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgY29uY3VycmVudEdDTWF4SGVhZHJvb21E
ZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY29uY3VycmVudEdDTWF4
SGVhZHJvb21EZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OkRvdWJsZSYgY29uY3VycmVudEdDTWF4SGVhZHJvb20oKSB7ICgodm9pZCkwKTsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNvbmN1cnJlbnRHQ01heEhlYWRyb29tOyB9IHBy
aXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIGNvbmN1
cnJlbnRHQ1BlcmlvZE1TRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
LmNvbmN1cnJlbnRHQ1BlcmlvZE1TRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIGNvbmN1cnJlbnRHQ1BlcmlvZE1TKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5jb25jdXJyZW50R0NQZXJpb2RN
UzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
dXNlU3RvY2hhc3RpY011dGF0b3JTY2hlZHVsZXJEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMudXNlU3RvY2hhc3RpY011dGF0b3JTY2hlZHVsZXJEZWZhdWx0OyB9IHB1
YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVN0b2No
YXN0aWNNdXRhdG9yU2NoZWR1bGVyKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy51c2VTdG9jaGFzdGljTXV0YXRvclNjaGVkdWxlcjsgfSBwcml2YXRlOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBtaW5pbXVtR0NQYXVzZU1T
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1pbmltdW1HQ1BhdXNl
TVNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OkRvdWJsZSYgbWluaW11bUdDUGF1c2VNUygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMubWluaW11bUdDUGF1c2VNUzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBnY1BhdXNlU2NhbGVEZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZ2NQYXVzZVNjYWxlRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIGdjUGF1c2VT
Y2FsZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZ2NQYXVz
ZVNjYWxlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpE
b3VibGUmIGdjSW5jcmVtZW50Qnl0ZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMuZ2NJbmNyZW1lbnRCeXRlc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBnY0luY3JlbWVudEJ5dGVzKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5nY0luY3JlbWVudEJ5dGVzOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIGdj
SW5jcmVtZW50TWF4Qnl0ZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMuZ2NJbmNyZW1lbnRNYXhCeXRlc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBnY0luY3JlbWVudE1heEJ5dGVzKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5nY0luY3JlbWVudE1heEJ5dGVz
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUm
IGdjSW5jcmVtZW50U2NhbGVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMuZ2NJbmNyZW1lbnRTY2FsZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBnY0luY3JlbWVudFNjYWxlKCkgeyAoKHZvaWQpMCk7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5nY0luY3JlbWVudFNjYWxlOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBzY3JpYmJsZUZy
ZWVDZWxsc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5zY3JpYmJs
ZUZyZWVDZWxsc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgc2NyaWJibGVGcmVlQ2VsbHMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLnNjcmliYmxlRnJlZUNlbGxzOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIHNpemVDbGFzc1Byb2dyZXNz
aW9uRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnNpemVDbGFzc1By
b2dyZXNzaW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpEb3VibGUmIHNpemVDbGFzc1Byb2dyZXNzaW9uKCkgeyAoKHZvaWQpMCk7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5zaXplQ2xhc3NQcm9ncmVzc2lvbjsgfSBwcml2YXRl
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHByZWNpc2VB
bGxvY2F0aW9uQ3V0b2ZmRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
LnByZWNpc2VBbGxvY2F0aW9uQ3V0b2ZmRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgcHJlY2lzZUFsbG9jYXRpb25DdXRvZmYo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnByZWNpc2VBbGxv
Y2F0aW9uQ3V0b2ZmOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9y
YWdlOjpCb29sJiBkdW1wU2l6ZUNsYXNzZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMuZHVtcFNpemVDbGFzc2VzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wU2l6ZUNsYXNzZXMoKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBTaXplQ2xhc3NlczsgfSBw
cml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlQnVt
cEFsbG9jYXRvckRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VC
dW1wQWxsb2NhdG9yRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiB1c2VCdW1wQWxsb2NhdG9yKCkgeyAoKHZvaWQpMCk7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VCdW1wQWxsb2NhdG9yOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBzdGVhbEVtcHR5QmxvY2tzRnJv
bU90aGVyQWxsb2NhdG9yc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5zdGVhbEVtcHR5QmxvY2tzRnJvbU90aGVyQWxsb2NhdG9yc0RlZmF1bHQ7IH0gcHVibGljOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgc3RlYWxFbXB0eUJsb2Nr
c0Zyb21PdGhlckFsbG9jYXRvcnMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnN0ZWFsRW1wdHlCbG9ja3NGcm9tT3RoZXJBbGxvY2F0b3JzOyB9IHByaXZhdGU6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBlYWdlcmx5VXBkYXRl
VG9wQ2FsbEZyYW1lRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmVh
Z2VybHlVcGRhdGVUb3BDYWxsRnJhbWVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGVhZ2VybHlVcGRhdGVUb3BDYWxsRnJhbWUoKSB7
ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmVhZ2VybHlVcGRhdGVU
b3BDYWxsRnJhbWU7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIGR1bXBaYXBwZWRDZWxsQ3Jhc2hEYXRhRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0
d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldl
YkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4
dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBaYXBwZWRDZWxsQ3Jhc2hEYXRhRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wWmFwcGVk
Q2VsbENyYXNoRGF0YSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMuZHVtcFphcHBlZENlbGxDcmFzaERhdGE7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZU9TUkVudHJ5VG9ERkdEZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlT1NSRW50cnlUb0RGR0RlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlT1NSRW50
cnlUb0RGRygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
T1NSRW50cnlUb0RGRzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgdXNlT1NSRW50cnlUb0ZUTERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy51c2VPU1JFbnRyeVRvRlRMRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VPU1JFbnRyeVRvRlRMKCkgeyAo
KHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VPU1JFbnRyeVRvRlRM
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1
c2VGVExKSVREZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlRlRM
SklURGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiB1c2VGVExKSVQoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLnVzZUZUTEpJVDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgdmFsaWRhdGVGVExPU1JFeGl0TGl2ZW5lc3NEZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmFsaWRhdGVGVExPU1JFeGl0TGl2ZW5lc3NEZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wm
IHZhbGlkYXRlRlRMT1NSRXhpdExpdmVuZXNzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy52YWxpZGF0ZUZUTE9TUkV4aXRMaXZlbmVzczsgfSBwcml2YXRlOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGRlZmF1bHRCM09w
dExldmVsRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmRlZmF1bHRC
M09wdExldmVsRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpVbnNpZ25lZCYgZGVmYXVsdEIzT3B0TGV2ZWwoKSB7ICgodm9pZCkwKTsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmRlZmF1bHRCM09wdExldmVsOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBiM0Fsd2F5c0ZhaWxzQmVm
b3JlQ29tcGlsZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5iM0Fs
d2F5c0ZhaWxzQmVmb3JlQ29tcGlsZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgYjNBbHdheXNGYWlsc0JlZm9yZUNvbXBpbGUoKSB7
ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmIzQWx3YXlzRmFpbHNC
ZWZvcmVDb21waWxlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9y
YWdlOjpCb29sJiBiM0Fsd2F5c0ZhaWxzQmVmb3JlTGlua0RlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy5iM0Fsd2F5c0ZhaWxzQmVmb3JlTGlua0RlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgYjNBbHdheXNG
YWlsc0JlZm9yZUxpbmsoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLmIzQWx3YXlzRmFpbHNCZWZvcmVMaW5rOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmdGxDcmFzaGVzRGVmYXVsdCgpIHsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ0bENyYXNoZXNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGZ0bENyYXNoZXMoKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ0bENyYXNoZXM7IH0gcHJpdmF0
ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGNsb2JiZXJBbGxS
ZWdzSW5GVExJQ1Nsb3dQYXRoRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLmNsb2JiZXJBbGxSZWdzSW5GVExJQ1Nsb3dQYXRoRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBjbG9iYmVyQWxsUmVnc0luRlRM
SUNTbG93UGF0aCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
Y2xvYmJlckFsbFJlZ3NJbkZUTElDU2xvd1BhdGg7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGVuYWJsZUpJVERlYnVnQXNzZXJ0aW9uc0RlZmF1
bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5lbmFibGVKSVREZWJ1Z0Fzc2Vy
dGlvbnNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIGVuYWJsZUpJVERlYnVnQXNzZXJ0aW9ucygpIHsgKCh2b2lkKTApOyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZW5hYmxlSklURGVidWdBc3NlcnRpb25zOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VBY2Nlc3NJ
bmxpbmluZ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VBY2Nl
c3NJbmxpbmluZ0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgdXNlQWNjZXNzSW5saW5pbmcoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUFjY2Vzc0lubGluaW5nOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4QWNjZXNzVmFyaWFu
dExpc3RTaXplRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heEFj
Y2Vzc1ZhcmlhbnRMaXN0U2l6ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSgpIHsg
KCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4QWNjZXNzVmFyaWFu
dExpc3RTaXplOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiB1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb25EZWZhdWx0KCkgeyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uRGVm
YXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiB1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbjsgfSBw
cml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlUG9s
eW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy51c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZ0xpc3RTaXplRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1h
eFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZURlZmF1bHQ7IH0gcHVibGljOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heFBvbHltb3JwaGlj
QWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMubWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VQb2x5bW9y
cGhpY0NhbGxJbmxpbmluZ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy51c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5p
bmcoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVBvbHlt
b3JwaGljQ2FsbElubGluaW5nOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0
dXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlUG9seW1vcnBo
aWNDYWxsSW5saW5pbmdGb3JOb25TdHViU3RhdHVzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VQb2x5bW9ycGhpY0NhbGxJbmxp
bmluZ0Zvck5vblN0dWJTdGF0dXMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nRm9yTm9uU3R1YlN0YXR1czsgfSBw
cml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1h
eFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5tYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemVEZWZhdWx0
OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVk
JiBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemUoKSB7ICgodm9pZCkwKTsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6
ZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWdu
ZWQmIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZUZvclRvcFRpZXJEZWZhdWx0KCkg
eyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4UG9seW1vcnBoaWNDYWxsVmFyaWFu
dExpc3RTaXplRm9yVG9wVGllckRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0
U2l6ZUZvclRvcFRpZXIoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLm1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZUZvclRvcFRpZXI7IH0gcHJpdmF0
ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhQb2x5
bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemVGb3JXZWJBc3NlbWJseVRvSlNEZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExp
c3RTaXplRm9yV2ViQXNzZW1ibHlUb0pTRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFu
dExpc3RTaXplRm9yV2ViQXNzZW1ibHlUb0pTKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5tYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemVGb3JXZWJB
c3NlbWJseVRvSlM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OlVuc2lnbmVkJiBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50c0ZvcklubGluaW5nRGVmYXVs
dCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heFBvbHltb3JwaGljQ2FsbFZh
cmlhbnRzRm9ySW5saW5pbmdEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50c0Zvcklu
bGluaW5nKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhQ
b2x5bW9ycGhpY0NhbGxWYXJpYW50c0ZvcklubGluaW5nOyB9IHByaXZhdGU6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgZnJlcXVlbnRDYWxsVGhyZXNob2xk
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZyZXF1ZW50Q2FsbFRo
cmVzaG9sZERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6VW5zaWduZWQmIGZyZXF1ZW50Q2FsbFRocmVzaG9sZCgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZnJlcXVlbnRDYWxsVGhyZXNob2xkOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIG1pbmltdW1D
YWxsVG9Lbm93blJhdGVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
bWluaW11bUNhbGxUb0tub3duUmF0ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBtaW5pbXVtQ2FsbFRvS25vd25SYXRlKCkgeyAo
KHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5taW5pbXVtQ2FsbFRvS25v
d25SYXRlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpC
b29sJiBjcmVhdGVQcmVIZWFkZXJzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLmNyZWF0ZVByZUhlYWRlcnNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGNyZWF0ZVByZUhlYWRlcnMoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNyZWF0ZVByZUhlYWRlcnM7IH0gcHJp
dmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZU1vdkhp
bnRSZW1vdmFsRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZU1v
dkhpbnRSZW1vdmFsRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiB1c2VNb3ZIaW50UmVtb3ZhbCgpIHsgKCh2b2lkKTApOyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlTW92SGludFJlbW92YWw7IH0gcHJpdmF0ZTogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVB1dFN0YWNrU2lua2lu
Z0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VQdXRTdGFja1Np
bmtpbmdEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIHVzZVB1dFN0YWNrU2lua2luZygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMudXNlUHV0U3RhY2tTaW5raW5nOyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VPYmplY3RB
bGxvY2F0aW9uU2lua2luZ0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcoKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZU9iamVjdEFsbG9jYXRpb25T
aW5raW5nOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpC
b29sJiB1c2VWYWx1ZVJlcEVsaW1pbmF0aW9uRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLnVzZVZhbHVlUmVwRWxpbWluYXRpb25EZWZhdWx0OyB9IHB1YmxpYzogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVZhbHVlUmVwRWxpbWlu
YXRpb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVZh
bHVlUmVwRWxpbWluYXRpb247IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OkJvb2wmIHVzZUFyaXR5Rml4dXBJbmxpbmluZ0RlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VBcml0eUZpeHVwSW5saW5pbmdEZWZhdWx0OyB9IHB1
YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUFyaXR5
Rml4dXBJbmxpbmluZygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMudXNlQXJpdHlGaXh1cElubGluaW5nOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpCb29sJiBsb2dFeGVjdXRhYmxlQWxsb2NhdGlvbkRlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5sb2dFeGVjdXRhYmxlQWxsb2NhdGlvbkRl
ZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgbG9nRXhlY3V0YWJsZUFsbG9jYXRpb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLmxvZ0V4ZWN1dGFibGVBbGxvY2F0aW9uOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4REZHTm9kZXNJbkJh
c2ljQmxvY2tGb3JQcmVjaXNlQW5hbHlzaXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMubWF4REZHTm9kZXNJbkJhc2ljQmxvY2tGb3JQcmVjaXNlQW5hbHlzaXNEZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2ln
bmVkJiBtYXhERkdOb2Rlc0luQmFzaWNCbG9ja0ZvclByZWNpc2VBbmFseXNpcygpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4REZHTm9kZXNJbkJhc2ljQmxv
Y2tGb3JQcmVjaXNlQW5hbHlzaXM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUNvbmN1cnJlbnRKSVREZWZhdWx0KCkgeyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlQ29uY3VycmVudEpJVERlZmF1bHQ7IH0gcHVibGljOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlQ29uY3VycmVudEpJ
VCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlQ29uY3Vy
cmVudEpJVDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
VW5zaWduZWQmIG51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzRGVmYXVsdCgpIHsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLm51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzRGVmYXVsdDsg
fSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYg
bnVtYmVyT2ZERkdDb21waWxlclRocmVhZHMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLm51bWJlck9mREZHQ29tcGlsZXJUaHJlYWRzOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbnVtYmVyT2ZGVExD
b21waWxlclRocmVhZHNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
bnVtYmVyT2ZGVExDb21waWxlclRocmVhZHNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBudW1iZXJPZkZUTENvbXBpbGVyVGhy
ZWFkcygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubnVtYmVy
T2ZGVExDb21waWxlclRocmVhZHM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkludDMyJiBwcmlvcml0eURlbHRhT2ZERkdDb21waWxlclRocmVhZHNEZWZh
dWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucHJpb3JpdHlEZWx0YU9mREZH
Q29tcGlsZXJUaHJlYWRzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpJbnQzMiYgcHJpb3JpdHlEZWx0YU9mREZHQ29tcGlsZXJUaHJlYWRzKCkg
eyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5wcmlvcml0eURlbHRh
T2ZERkdDb21waWxlclRocmVhZHM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkludDMyJiBwcmlvcml0eURlbHRhT2ZGVExDb21waWxlclRocmVhZHNEZWZh
dWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucHJpb3JpdHlEZWx0YU9mRlRM
Q29tcGlsZXJUaHJlYWRzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpJbnQzMiYgcHJpb3JpdHlEZWx0YU9mRlRMQ29tcGlsZXJUaHJlYWRzKCkg
eyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5wcmlvcml0eURlbHRh
T2ZGVExDb21waWxlclRocmVhZHM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkludDMyJiBwcmlvcml0eURlbHRhT2ZXYXNtQ29tcGlsZXJUaHJlYWRzRGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnByaW9yaXR5RGVsdGFPZldh
c21Db21waWxlclRocmVhZHNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkludDMyJiBwcmlvcml0eURlbHRhT2ZXYXNtQ29tcGlsZXJUaHJlYWRz
KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5wcmlvcml0eURl
bHRhT2ZXYXNtQ29tcGlsZXJUaHJlYWRzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VQcm9maWxlckRlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy51c2VQcm9maWxlckRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlUHJvZmlsZXIoKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVByb2ZpbGVyOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkaXNhc3NlbWJs
ZUJhc2VsaW5lRm9yUHJvZmlsZXJEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMuZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkaXNhc3NlbWJsZUJhc2Vs
aW5lRm9yUHJvZmlsZXIoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNP
cHRpbWl6YXRpb25zRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVz
ZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0aW1pemF0aW9uc0RlZmF1bHQ7IH0gcHVibGljOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlQXJjaGl0ZWN0dXJlU3Bl
Y2lmaWNPcHRpbWl6YXRpb25zKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnM7IH0gcHJpdmF0ZTog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGJyZWFrT25UaHJvd0Rl
ZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5icmVha09uVGhyb3dEZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wm
IGJyZWFrT25UaHJvdygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMuYnJlYWtPblRocm93OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpVbnNpZ25lZCYgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUJ5dGVjb2RlQ29z
dERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtT3B0aW1p
emF0aW9uQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4aW11bU9wdGltaXphdGlvbkNh
bmRpZGF0ZUJ5dGVjb2RlQ29zdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMubWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUJ5dGVjb2RlQ29zdDsgfSBwcml2
YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heGlt
dW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVCeXRlY29kZUNvc3REZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGlu
ZUNhbmRpZGF0ZUJ5dGVjb2RlQ29zdERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxp
bmVDYW5kaWRhdGVCeXRlY29kZUNvc3QoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLm1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVCeXRlY29k
ZUNvc3Q7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkJiBtYXhpbXVtRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUJ5dGVj
b2RlQ29zdERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVt
RnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUJ5dGVjb2RlQ29zdERlZmF1bHQ7
IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQm
IG1heGltdW1GdW5jdGlvbkZvckNsb3N1cmVDYWxsSW5saW5lQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0
KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtRnVu
Y3Rpb25Gb3JDbG9zdXJlQ2FsbElubGluZUNhbmRpZGF0ZUJ5dGVjb2RlQ29zdDsgfSBwcml2YXRl
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heGltdW1G
dW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUJ5dGVjb29kZUNvc3REZWZhdWx0KCkg
eyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0SW5saW5lQ2FuZGlkYXRlQnl0ZWNvb2RlQ29zdERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heGltdW1GdW5jdGlvbkZv
ckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUJ5dGVjb29kZUNvc3QoKSB7ICgodm9pZCkwKTsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElu
bGluZUNhbmRpZGF0ZUJ5dGVjb29kZUNvc3Q7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhpbXVtRlRMQ2FuZGlkYXRlQnl0ZWNvZGVD
b3N0RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heGltdW1GVExD
YW5kaWRhdGVCeXRlY29kZUNvc3REZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhpbXVtRlRMQ2FuZGlkYXRlQnl0ZWNvZGVD
b3N0KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVt
RlRMQ2FuZGlkYXRlQnl0ZWNvZGVDb3N0OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4aW11bUlubGluaW5nRGVwdGhEZWZhdWx0KCkg
eyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUlubGluaW5nRGVwdGhEZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2ln
bmVkJiBtYXhpbXVtSW5saW5pbmdEZXB0aCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMubWF4aW11bUlubGluaW5nRGVwdGg7IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhpbXVtSW5saW5pbmdSZWN1
cnNpb25EZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUlu
bGluaW5nUmVjdXJzaW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4aW11bUlubGluaW5nUmVjdXJzaW9uKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtSW5saW5pbmdSZWN1
cnNpb247IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkJiBtYXhpbXVtSW5saW5pbmdDYWxsZXJCeXRlY29kZUNvc3REZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUlubGluaW5nQ2FsbGVyQnl0ZWNvZGVD
b3N0RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpVbnNpZ25lZCYgbWF4aW11bUlubGluaW5nQ2FsbGVyQnl0ZWNvZGVDb3N0KCkgeyAoKHZvaWQp
MCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtSW5saW5pbmdDYWxsZXJC
eXRlY29kZUNvc3Q7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OlVuc2lnbmVkJiBtYXhpbXVtVmFyYXJnc0ZvcklubGluaW5nRGVmYXVsdCgpIHsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heGltdW1WYXJhcmdzRm9ySW5saW5pbmdEZWZhdWx0
OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVk
JiBtYXhpbXVtVmFyYXJnc0ZvcklubGluaW5nKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5tYXhpbXVtVmFyYXJnc0ZvcklubGluaW5nOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4aW11bUJpbmFy
eVN0cmluZ1N3aXRjaENhc2VMZW5ndGhEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMubWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGhEZWZhdWx0OyB9IHB1
YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhp
bXVtQmluYXJ5U3RyaW5nU3dpdGNoQ2FzZUxlbmd0aCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGg7
IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVk
JiBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoVG90YWxMZW5ndGhEZWZhdWx0KCkgeyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaFRvdGFsTGVu
Z3RoRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpVbnNpZ25lZCYgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaFRvdGFsTGVuZ3RoKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtQmluYXJ5U3RyaW5n
U3dpdGNoVG90YWxMZW5ndGg7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OkRvdWJsZSYgaml0UG9saWN5U2NhbGVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMuaml0UG9saWN5U2NhbGVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgaml0UG9saWN5U2NhbGUoKSB7
ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmppdFBvbGljeVNjYWxl
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBm
b3JjZUVhZ2VyQ29tcGlsYXRpb25EZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMuZm9yY2VFYWdlckNvbXBpbGF0aW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZUVhZ2VyQ29tcGlsYXRpb24oKSB7
ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZvcmNlRWFnZXJDb21w
aWxhdGlvbjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
SW50MzImIHRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0
d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldl
YkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4
dGVuc2lvbnMpKS5vcHRpb25zLnRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgdGhyZXNo
b2xkRm9ySklUQWZ0ZXJXYXJtVXAoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwOyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgdGhyZXNob2xkRm9ySklUU29vbkRl
ZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy50aHJlc2hvbGRGb3JKSVRT
b29uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpJbnQzMiYgdGhyZXNob2xkRm9ySklUU29vbigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMudGhyZXNob2xkRm9ySklUU29vbjsgfSBwcml2YXRlOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIHRocmVzaG9sZEZvck9wdGltaXpl
QWZ0ZXJXYXJtVXBEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudGhy
ZXNob2xkRm9yT3B0aW1pemVBZnRlcldhcm1VcERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIHRocmVzaG9sZEZvck9wdGltaXplQWZ0
ZXJXYXJtVXAoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnRo
cmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJtVXA7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkludDMyJiB0aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9u
Z1dhcm1VcERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy50aHJlc2hv
bGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIHRocmVzaG9sZEZvck9wdGltaXplQWZ0
ZXJMb25nV2FybVVwKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy50aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsgfSBwcml2YXRlOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIHRocmVzaG9sZEZvck9wdGltaXpl
U29vbkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy50aHJlc2hvbGRG
b3JPcHRpbWl6ZVNvb25EZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkludDMyJiB0aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb24oKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnRocmVzaG9sZEZvck9wdGltaXplU29v
bjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzIm
IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0
d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldl
YkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4
dGVuc2lvbnMpKS5vcHRpb25zLmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wRGVmYXVs
dDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYg
ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgZXhl
Y3V0aW9uQ291bnRlckluY3JlbWVudEZvckVudHJ5RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JFbnRyeURlZmF1bHQ7
IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIGV4
ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JFbnRyeSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMuZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckVudHJ5OyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgdGhy
ZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy50aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwRGVmYXVs
dDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYg
dGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1VcCgpIHsgKCh2b2lkKTApOyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudGhyZXNob2xkRm9yRlRMT3B0aW1pemVBZnRlcldhcm1V
cDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzIm
IHRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy50aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb25EZWZhdWx0OyB9IHB1Ymxp
YzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkludDMyJiB0aHJlc2hvbGRG
b3JGVExPcHRpbWl6ZVNvb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLnRocmVzaG9sZEZvckZUTE9wdGltaXplU29vbjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIGZ0bFRpZXJVcENvdW50ZXJJbmNyZW1l
bnRGb3JMb29wRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ0bFRp
ZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JMb29wRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgZnRsVGllclVwQ291bnRlckluY3JlbWVu
dEZvckxvb3AoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ0
bFRpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JMb29wOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgZnRsVGllclVwQ291bnRlckluY3JlbWVudEZv
clJldHVybkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mdGxUaWVy
VXBDb3VudGVySW5jcmVtZW50Rm9yUmV0dXJuRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgZnRsVGllclVwQ291bnRlckluY3JlbWVu
dEZvclJldHVybigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
ZnRsVGllclVwQ291bnRlckluY3JlbWVudEZvclJldHVybjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGZ0bE9TUkVudHJ5RmFpbHVyZUNv
dW50Rm9yUmVvcHRpbWl6YXRpb25EZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMuZnRsT1NSRW50cnlGYWlsdXJlQ291bnRGb3JSZW9wdGltaXphdGlvbkRlZmF1bHQ7IH0g
cHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGZ0
bE9TUkVudHJ5RmFpbHVyZUNvdW50Rm9yUmVvcHRpbWl6YXRpb24oKSB7ICgodm9pZCkwKTsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ0bE9TUkVudHJ5RmFpbHVyZUNvdW50Rm9yUmVv
cHRpbWl6YXRpb247IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OlVuc2lnbmVkJiBmdGxPU1JFbnRyeVJldHJ5VGhyZXNob2xkRGVmYXVsdCgpIHsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ0bE9TUkVudHJ5UmV0cnlUaHJlc2hvbGREZWZhdWx0
OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVk
JiBmdGxPU1JFbnRyeVJldHJ5VGhyZXNob2xkKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5mdGxPU1JFbnRyeVJldHJ5VGhyZXNob2xkOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgZXZhbFRocmVzaG9sZE11
bHRpcGxpZXJEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZXZhbFRo
cmVzaG9sZE11bHRpcGxpZXJEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkludDMyJiBldmFsVGhyZXNob2xkTXVsdGlwbGllcigpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZXZhbFRocmVzaG9sZE11bHRpcGxp
ZXI7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2ln
bmVkJiBtYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aERlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aERl
ZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5z
aWduZWQmIG1heGltdW1FdmFsQ2FjaGVhYmxlU291cmNlTGVuZ3RoKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxl
bmd0aDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgcmFuZG9taXplRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzRGVmYXVsdCgpIHsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJhbmRvbWl6ZUV4ZWN1dGlvbkNvdW50c0Jl
dHdlZW5DaGVja3BvaW50c0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgcmFuZG9taXplRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNr
cG9pbnRzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5yYW5k
b21pemVFeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHM7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkludDMyJiBtYXhpbXVtRXhlY3V0aW9uQ291
bnRzQmV0d2VlbkNoZWNrcG9pbnRzRm9yQmFzZWxpbmVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMubWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50
c0ZvckJhc2VsaW5lRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpJbnQzMiYgbWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50
c0ZvckJhc2VsaW5lKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5tYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzRm9yQmFzZWxpbmU7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkludDMyJiBtYXhp
bXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzRm9yVXBwZXJUaWVyc0RlZmF1bHQo
KSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtRXhlY3V0aW9uQ291bnRz
QmV0d2VlbkNoZWNrcG9pbnRzRm9yVXBwZXJUaWVyc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIG1heGltdW1FeGVjdXRpb25Db3Vu
dHNCZXR3ZWVuQ2hlY2twb2ludHNGb3JVcHBlclRpZXJzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNr
cG9pbnRzRm9yVXBwZXJUaWVyczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6VW5zaWduZWQmIGxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50RGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmxpa2VseVRvVGFrZVNsb3dD
YXNlTWluaW11bUNvdW50RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnREZWZh
dWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY291bGRUYWtlU2xvd0Nhc2VN
aW5pbXVtQ291bnREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OlVuc2lnbmVkJiBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCgpIHsgKCh2
b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY291bGRUYWtlU2xvd0Nhc2VN
aW5pbXVtQ291bnQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OlVuc2lnbmVkJiBvc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlvbkRlZmF1bHQoKSB7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5vc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlv
bkRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
VW5zaWduZWQmIG9zckV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5vc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlv
bjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWdu
ZWQmIG9zckV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uRnJvbUxvb3BEZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMub3NyRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb25G
cm9tTG9vcERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6VW5zaWduZWQmIG9zckV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uRnJvbUxvb3AoKSB7
ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm9zckV4aXRDb3VudEZv
clJlb3B0aW1pemF0aW9uRnJvbUxvb3A7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heERl
ZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlck1heERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6VW5zaWduZWQmIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KCkgeyAo
KHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlck1heDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6VW5zaWduZWQmIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheURlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5taW5pbXVtT3B0aW1pemF0aW9uRGVsYXlEZWZhdWx0
OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVk
JiBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXkoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLm1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsgfSBwcml2YXRlOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heGltdW1PcHRpbWl6
YXRpb25EZWxheURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5tYXhp
bXVtT3B0aW1pemF0aW9uRGVsYXlEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXkoKSB7
ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heGltdW1PcHRpbWl6
YXRpb25EZWxheTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6RG91YmxlJiBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZURlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy5kZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZURlZmF1bHQ7
IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBk
ZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMuZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGU7IH0gcHJpdmF0ZTogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgZGVzaXJlZFByb2ZpbGVG
dWxsbmVzc1JhdGVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZGVz
aXJlZFByb2ZpbGVGdWxsbmVzc1JhdGVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmRlc2lyZWRQcm9m
aWxlRnVsbG5lc3NSYXRlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpEb3VibGUmIGRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdERlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVG
b3JtYXREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkRvdWJsZSYgZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0KCkgeyAoKHZvaWQpMCk7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVG
b3JtYXQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRv
dWJsZSYgc3RydWN0dXJlQ2hlY2tWb3RlUmF0aW9Gb3JIb2lzdGluZ0RlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5zdHJ1Y3R1cmVDaGVja1ZvdGVSYXRpb0ZvckhvaXN0
aW5nRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpEb3VibGUmIHN0cnVjdHVyZUNoZWNrVm90ZVJhdGlvRm9ySG9pc3RpbmcoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnN0cnVjdHVyZUNoZWNrVm90ZVJhdGlv
Rm9ySG9pc3Rpbmc7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkRvdWJsZSYgY2hlY2tBcnJheVZvdGVSYXRpb0ZvckhvaXN0aW5nRGVmYXVsdCgpIHsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNoZWNrQXJyYXlWb3RlUmF0aW9Gb3JIb2lzdGlu
Z0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
RG91YmxlJiBjaGVja0FycmF5Vm90ZVJhdGlvRm9ySG9pc3RpbmcoKSB7ICgodm9pZCkwKTsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNoZWNrQXJyYXlWb3RlUmF0aW9Gb3JIb2lzdGlu
ZzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWdu
ZWQmIG1heGltdW1EaXJlY3RDYWxsU3RhY2tTaXplRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLm1heGltdW1EaXJlY3RDYWxsU3RhY2tTaXplRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4aW11
bURpcmVjdENhbGxTdGFja1NpemUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLm1heGltdW1EaXJlY3RDYWxsU3RhY2tTaXplOyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWluaW11bU51bWJlck9mU2Nh
bnNCZXR3ZWVuUmViYWxhbmNlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLm1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZURlZmF1bHQ7IH0gcHVibGlj
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1pbmltdW1O
dW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMubWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYg
bnVtYmVyT2ZHQ01hcmtlcnNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMubnVtYmVyT2ZHQ01hcmtlcnNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBudW1iZXJPZkdDTWFya2VycygpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubnVtYmVyT2ZHQ01hcmtlcnM7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVBh
cmFsbGVsTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXJEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMudXNlUGFyYWxsZWxNYXJraW5nQ29uc3RyYWludFNvbHZlckRlZmF1bHQ7
IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNl
UGFyYWxsZWxNYXJraW5nQ29uc3RyYWludFNvbHZlcigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlUGFyYWxsZWxNYXJraW5nQ29uc3RyYWludFNvbHZlcjsg
fSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQm
IG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy5vcGFxdWVSb290TWVyZ2VUaHJlc2hvbGREZWZhdWx0OyB9IHB1YmxpYzogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBvcGFxdWVSb290TWVy
Z2VUaHJlc2hvbGQoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
Lm9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBtaW5IZWFwVXRpbGl6YXRpb25EZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWluSGVhcFV0aWxpemF0aW9uRGVmYXVsdDsg
fSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIG1p
bkhlYXBVdGlsaXphdGlvbigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMubWluSGVhcFV0aWxpemF0aW9uOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb25EZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWluTWFya2VkQmxvY2tVdGlsaXph
dGlvbkRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6RG91YmxlJiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgeyAoKHZvaWQpMCk7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5taW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uOyB9IHBy
aXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc2xv
d1BhdGhBbGxvY3NCZXR3ZWVuR0NzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHNsb3dQYXRoQWxsb2NzQmV0
d2VlbkdDcygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2xv
d1BhdGhBbGxvY3NCZXR3ZWVuR0NzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpEb3VibGUmIHBlcmNlbnRDUFVQZXJNQkZvckZ1bGxUaW1lckRlZmF1bHQo
KSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5wZXJjZW50Q1BVUGVyTUJGb3JGdWxs
VGltZXJEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkRvdWJsZSYgcGVyY2VudENQVVBlck1CRm9yRnVsbFRpbWVyKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5wZXJjZW50Q1BVUGVyTUJGb3JGdWxsVGltZXI7
IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYg
cGVyY2VudENQVVBlck1CRm9yRWRlblRpbWVyRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLnBlcmNlbnRDUFVQZXJNQkZvckVkZW5UaW1lckRlZmF1bHQ7IH0gcHVibGlj
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBwZXJjZW50Q1BV
UGVyTUJGb3JFZGVuVGltZXIoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLnBlcmNlbnRDUFVQZXJNQkZvckVkZW5UaW1lcjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBjb2xsZWN0aW9uVGltZXJNYXhQZXJj
ZW50Q1BVRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNvbGxlY3Rp
b25UaW1lck1heFBlcmNlbnRDUFVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgY29sbGVjdGlvblRpbWVyTWF4UGVyY2VudENQVSgp
IHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY29sbGVjdGlvblRp
bWVyTWF4UGVyY2VudENQVTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgZm9yY2VXZWFrUmFuZG9tU2VlZERlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy5mb3JjZVdlYWtSYW5kb21TZWVkRGVmYXVsdDsgfSBwdWJsaWM6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZVdlYWtSYW5k
b21TZWVkKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mb3Jj
ZVdlYWtSYW5kb21TZWVkOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpVbnNpZ25lZCYgZm9yY2VkV2Vha1JhbmRvbVNlZWREZWZhdWx0KCkgeyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZm9yY2VkV2Vha1JhbmRvbVNlZWREZWZhdWx0OyB9IHB1
YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBmb3Jj
ZWRXZWFrUmFuZG9tU2VlZCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMuZm9yY2VkV2Vha1JhbmRvbVNlZWQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVpvbWJpZU1vZGVEZWZhdWx0KCkgeyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlWm9tYmllTW9kZURlZmF1bHQ7IH0gcHVibGljOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlWm9tYmllTW9kZSgp
IHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlWm9tYmllTW9k
ZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
dXNlSW1tb3J0YWxPYmplY3RzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLnVzZUltbW9ydGFsT2JqZWN0c0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlSW1tb3J0YWxPYmplY3RzKCkgeyAoKHZvaWQp
MCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VJbW1vcnRhbE9iamVjdHM7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHN3ZWVw
U3luY2hyb25vdXNseURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5z
d2VlcFN5bmNocm9ub3VzbHlEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHN3ZWVwU3luY2hyb25vdXNseSgpIHsgKCh2b2lkKTApOyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc3dlZXBTeW5jaHJvbm91c2x5OyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4U2lu
Z2xlQWxsb2NhdGlvblNpemVEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMubWF4U2luZ2xlQWxsb2NhdGlvblNpemVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBtYXhTaW5nbGVBbGxvY2F0aW9uU2l6
ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4U2luZ2xl
QWxsb2NhdGlvblNpemU7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OkdDTG9nTGV2ZWwmIGxvZ0dDRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLmxvZ0dDRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpHQ0xvZ0xldmVsJiBsb2dHQygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMubG9nR0M7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUdDRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnVzZUdDRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VHQygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlR0M7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGdjQXRFbmREZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMuZ2NBdEVuZERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZ2NBdEVuZCgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZ2NBdEVuZDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZm9yY2VHQ1Nsb3dQYXRoc0RlZmF1bHQo
KSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mb3JjZUdDU2xvd1BhdGhzRGVmYXVs
dDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBm
b3JjZUdDU2xvd1BhdGhzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6
OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29u
ZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0
aW9ucy5mb3JjZUdDU2xvd1BhdGhzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZURpZERlZmVyR0NXb3JrRGVmYXVsdCgpIHsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZvcmNlRGlkRGVmZXJHQ1dvcmtEZWZhdWx0OyB9IHB1
YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGZvcmNlRGlk
RGVmZXJHQ1dvcmsoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
LmZvcmNlRGlkRGVmZXJHQ1dvcms7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBnY01heEhlYXBTaXplRGVmYXVsdCgpIHsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLmdjTWF4SGVhcFNpemVEZWZhdWx0OyB9IHB1YmxpYzogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBnY01heEhlYXBTaXpl
KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5nY01heEhlYXBT
aXplOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNp
Z25lZCYgZm9yY2VSQU1TaXplRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLmZvcmNlUkFNU2l6ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGZvcmNlUkFNU2l6ZSgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZm9yY2VSQU1TaXplOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiByZWNvcmRHQ1BhdXNlVGltZXNE
ZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucmVjb3JkR0NQYXVzZVRp
bWVzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiByZWNvcmRHQ1BhdXNlVGltZXMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnJlY29yZEdDUGF1c2VUaW1lczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcEhlYXBTdGF0aXN0aWNzQXRWTURl
c3RydWN0aW9uRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBI
ZWFwU3RhdGlzdGljc0F0Vk1EZXN0cnVjdGlvbkRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcEhlYXBTdGF0aXN0aWNzQXRWTURl
c3RydWN0aW9uKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5k
dW1wSGVhcFN0YXRpc3RpY3NBdFZNRGVzdHJ1Y3Rpb247IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1
ZVRvT2xkQWdlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZvcmNl
Q29kZUJsb2NrVG9KZXR0aXNvbkR1ZVRvT2xkQWdlRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZUNvZGVCbG9ja1RvSmV0dGlz
b25EdWVUb09sZEFnZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMuZm9yY2VDb2RlQmxvY2tUb0pldHRpc29uRHVlVG9PbGRBZ2U7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUVhZ2VyQ29kZUJsb2NrSmV0
dGlzb25UaW1pbmdEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
RWFnZXJDb2RlQmxvY2tKZXR0aXNvblRpbWluZ0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlRWFnZXJDb2RlQmxvY2tKZXR0aXNv
blRpbWluZygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
RWFnZXJDb2RlQmxvY2tKZXR0aXNvblRpbWluZzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlVHlwZVByb2ZpbGVyRGVmYXVsdCgpIHsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVR5cGVQcm9maWxlckRlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlVHlwZVBy
b2ZpbGVyKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VU
eXBlUHJvZmlsZXI7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIHVzZUNvbnRyb2xGbG93UHJvZmlsZXJEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMudXNlQ29udHJvbEZsb3dQcm9maWxlckRlZmF1bHQ7IH0gcHVibGlj
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlQ29udHJvbEZs
b3dQcm9maWxlcigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
dXNlQ29udHJvbEZsb3dQcm9maWxlcjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlU2FtcGxpbmdQcm9maWxlckRlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VTYW1wbGluZ1Byb2ZpbGVyRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VTYW1w
bGluZ1Byb2ZpbGVyKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy51c2VTYW1wbGluZ1Byb2ZpbGVyOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc2FtcGxlSW50ZXJ2YWxEZWZhdWx0KCkgeyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2FtcGxlSW50ZXJ2YWxEZWZhdWx0OyB9IHB1YmxpYzog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBzYW1wbGVJbnRl
cnZhbCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2FtcGxl
SW50ZXJ2YWw7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OkJvb2wmIGNvbGxlY3RTYW1wbGluZ1Byb2ZpbGVyRGF0YUZvckpTQ1NoZWxsRGVmYXVsdCgpIHsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmNvbGxlY3RTYW1wbGluZ1Byb2ZpbGVyRGF0
YUZvckpTQ1NoZWxsRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiBjb2xsZWN0U2FtcGxpbmdQcm9maWxlckRhdGFGb3JKU0NTaGVsbCgp
IHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY29sbGVjdFNhbXBs
aW5nUHJvZmlsZXJEYXRhRm9ySlNDU2hlbGw7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBzYW1wbGluZ1Byb2ZpbGVyVG9wRnVuY3Rpb25z
Q291bnREZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2FtcGxpbmdQ
cm9maWxlclRvcEZ1bmN0aW9uc0NvdW50RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc2FtcGxpbmdQcm9maWxlclRvcEZ1bmN0
aW9uc0NvdW50KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5z
YW1wbGluZ1Byb2ZpbGVyVG9wRnVuY3Rpb25zQ291bnQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBzYW1wbGluZ1Byb2ZpbGVyVG9wQnl0
ZWNvZGVzQ291bnREZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2Ft
cGxpbmdQcm9maWxlclRvcEJ5dGVjb2Rlc0NvdW50RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc2FtcGxpbmdQcm9maWxlclRv
cEJ5dGVjb2Rlc0NvdW50KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6
OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29u
ZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0
aW9ucy5zYW1wbGluZ1Byb2ZpbGVyVG9wQnl0ZWNvZGVzQ291bnQ7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZyYgc2FtcGxpbmdQcm9m
aWxlclBhdGhEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2FtcGxp
bmdQcm9maWxlclBhdGhEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZyYgc2FtcGxpbmdQcm9maWxlclBhdGgoKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnNhbXBsaW5nUHJvZmlsZXJQYXRo
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBz
YW1wbGVDQ29kZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5zYW1w
bGVDQ29kZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgc2FtcGxlQ0NvZGUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLnNhbXBsZUNDb2RlOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpCb29sJiBhbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3JpZ2luTWFwRGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmFsd2F5c0dlbmVyYXRlUENU
b0NvZGVPcmlnaW5NYXBEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIGFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSB7ICgo
dm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmFsd2F5c0dlbmVyYXRlUENU
b0NvZGVPcmlnaW5NYXA7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OkRvdWJsZSYgcmFuZG9tSW50ZWdyaXR5QXVkaXRSYXRlRGVmYXVsdCgpIHsgcmV0dXJu
ICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFj
ZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZURlZmF1bHQ7
IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6RG91YmxlJiBy
YW5kb21JbnRlZ3JpdHlBdWRpdFJhdGUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLnJhbmRvbUludGVncml0eUF1ZGl0UmF0ZTsgfSBwcml2YXRlOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyaWZ5SGVhcERlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52ZXJpZnlIZWFwRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2ZXJpZnlIZWFw
KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52ZXJpZnlIZWFw
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25l
ZCYgbnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uRGVmYXVsdCgpIHsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZl
cmlmaWNhdGlvbkRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6VW5zaWduZWQmIG51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlv
bigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubnVtYmVyT2ZH
Q0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgZXhjZXB0aW9uU3RhY2tUcmFjZUxpbWl0
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmV4Y2VwdGlvblN0YWNr
VHJhY2VMaW1pdERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6VW5zaWduZWQmIGV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgpIHsgKCh2b2lkKTAp
OyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZXhjZXB0aW9uU3RhY2tUcmFjZUxpbWl0
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25l
ZCYgZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLmRlZmF1bHRFcnJvclN0YWNrVHJhY2VMaW1pdERlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGRlZmF1
bHRFcnJvclN0YWNrVHJhY2VMaW1pdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMuZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0OyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VFeGNlcHRpb25GdXp6RGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUV4Y2VwdGlvbkZ1enpE
ZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJv
b2wmIHVzZUV4Y2VwdGlvbkZ1enooKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnVzZUV4Y2VwdGlvbkZ1eno7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBmaXJlRXhjZXB0aW9uRnV6ekF0RGVmYXVsdCgp
IHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZpcmVFeGNlcHRpb25GdXp6QXREZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2ln
bmVkJiBmaXJlRXhjZXB0aW9uRnV6ekF0KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy5maXJlRXhjZXB0aW9uRnV6ekF0OyB9IHByaXZhdGU6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2YWxpZGF0ZURGR0V4Y2VwdGlvbkhhbmRs
aW5nRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZhbGlkYXRlREZH
RXhjZXB0aW9uSGFuZGxpbmdEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZhbGlkYXRlREZHRXhjZXB0aW9uSGFuZGxpbmcoKSB7ICgo
dm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZhbGlkYXRlREZHRXhjZXB0
aW9uSGFuZGxpbmc7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIGR1bXBTaW11bGF0ZWRUaHJvd3NEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMuZHVtcFNpbXVsYXRlZFRocm93c0RlZmF1bHQ7IH0gcHVibGljOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcFNpbXVsYXRlZFRocm93
cygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcFNpbXVs
YXRlZFRocm93czsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgdmFsaWRhdGVFeGNlcHRpb25DaGVja3NEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMudmFsaWRhdGVFeGNlcHRpb25DaGVja3NEZWZhdWx0OyB9IHB1Ymxp
YzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZhbGlkYXRlRXhj
ZXB0aW9uQ2hlY2tzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy52YWxpZGF0ZUV4Y2VwdGlvbkNoZWNrczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHVuZXhwZWN0ZWRFeGNlcHRpb25TdGFja1RyYWNl
TGltaXREZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudW5leHBlY3Rl
ZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHVuZXhwZWN0ZWRFeGNlcHRpb25TdGFj
a1RyYWNlTGltaXQoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
LnVuZXhwZWN0ZWRFeGNlcHRpb25TdGFja1RyYWNlTGltaXQ7IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZhbGlkYXRlREZHQ2xvYmJlcml6ZURl
ZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy52YWxpZGF0ZURGR0Nsb2Ji
ZXJpemVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIHZhbGlkYXRlREZHQ2xvYmJlcml6ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudmFsaWRhdGVERkdDbG9iYmVyaXplOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VFeGVjdXRhYmxlQWxs
b2NhdGlvbkZ1enpEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
RXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enoo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUV4ZWN1dGFi
bGVBbGxvY2F0aW9uRnV6ejsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6VW5zaWduZWQmIGZpcmVFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpBdERlZmF1bHQo
KSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5maXJlRXhlY3V0YWJsZUFsbG9jYXRp
b25GdXp6QXREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OlVuc2lnbmVkJiBmaXJlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6QXQoKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZpcmVFeGVjdXRhYmxlQWxsb2Nh
dGlvbkZ1enpBdDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6VW5zaWduZWQmIGZpcmVFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpBdE9yQWZ0ZXJEZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZmlyZUV4ZWN1dGFibGVBbGxvY2F0
aW9uRnV6ekF0T3JBZnRlckRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGZpcmVFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpBdE9y
QWZ0ZXIoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZpcmVF
eGVjdXRhYmxlQWxsb2NhdGlvbkZ1enpBdE9yQWZ0ZXI7IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZlcmJvc2VFeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enpEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZUV4
ZWN1dGFibGVBbGxvY2F0aW9uRnV6ekRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdmVyYm9zZUV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6
eigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudmVyYm9zZUV4
ZWN1dGFibGVBbGxvY2F0aW9uRnV6ejsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlT1NSRXhpdEZ1enpEZWZhdWx0KCkgeyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlT1NSRXhpdEZ1enpEZWZhdWx0OyB9IHB1YmxpYzogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZU9TUkV4aXRGdXp6KCkg
eyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VPU1JFeGl0RnV6
ejsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWdu
ZWQmIGZpcmVPU1JFeGl0RnV6ekF0U3RhdGljRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLmZpcmVPU1JFeGl0RnV6ekF0U3RhdGljRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgZmlyZU9TUkV4aXRG
dXp6QXRTdGF0aWMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
LmZpcmVPU1JFeGl0RnV6ekF0U3RhdGljOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgZmlyZU9TUkV4aXRGdXp6QXREZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZmlyZU9TUkV4aXRGdXp6QXREZWZhdWx0OyB9
IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBm
aXJlT1NSRXhpdEZ1enpBdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMuZmlyZU9TUkV4aXRGdXp6QXQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBmaXJlT1NSRXhpdEZ1enpBdE9yQWZ0ZXJEZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZmlyZU9TUkV4aXRGdXp6QXRPckFm
dGVyRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpVbnNpZ25lZCYgZmlyZU9TUkV4aXRGdXp6QXRPckFmdGVyKCkgeyAoKHZvaWQpMCk7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5maXJlT1NSRXhpdEZ1enpBdE9yQWZ0ZXI7IH0gcHJp
dmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBzZWVk
T2ZWTVJhbmRvbUZvckZ1enplckRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6
OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29u
ZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0
aW9ucy5zZWVkT2ZWTVJhbmRvbUZvckZ1enplckRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHNlZWRPZlZNUmFuZG9tRm9yRnV6
emVyKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5zZWVkT2ZW
TVJhbmRvbUZvckZ1enplcjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6Qm9vbCYgdXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudERlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VSYW5kb21pemluZ0Z1enplckFnZW50RGVmYXVs
dDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1
c2VSYW5kb21pemluZ0Z1enplckFnZW50KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy51c2VSYW5kb21pemluZ0Z1enplckFnZW50OyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc2VlZE9mUmFuZG9taXpp
bmdGdXp6ZXJBZ2VudERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5z
ZWVkT2ZSYW5kb21pemluZ0Z1enplckFnZW50RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgc2VlZE9mUmFuZG9taXppbmdGdXp6
ZXJBZ2VudCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2Vl
ZE9mUmFuZG9taXppbmdGdXp6ZXJBZ2VudDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcEZ1enplckFnZW50UHJlZGljdGlvbnNEZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcEZ1enplckFnZW50UHJlZGlj
dGlvbnNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIGR1bXBGdXp6ZXJBZ2VudFByZWRpY3Rpb25zKCkgeyAoKHZvaWQpMCk7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wRnV6emVyQWdlbnRQcmVkaWN0aW9uczsgfSBw
cml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlRG91
YmxlUHJlZGljdGlvbkZ1enplckFnZW50RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLnVzZURvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudERlZmF1bHQ7IH0gcHVibGlj
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlRG91YmxlUHJl
ZGljdGlvbkZ1enplckFnZW50KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUZpbGVCYXNlZEZ1enplckFn
ZW50RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUZpbGVCYXNl
ZEZ1enplckFnZW50RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiB1c2VGaWxlQmFzZWRGdXp6ZXJBZ2VudCgpIHsgKCh2b2lkKTApOyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlRmlsZUJhc2VkRnV6emVyQWdlbnQ7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVBy
ZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy51c2VQcmVkaWN0aW9uRmlsZUNyZWF0aW5nRnV6emVyQWdlbnREZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wm
IHVzZVByZWRpY3Rpb25GaWxlQ3JlYXRpbmdGdXp6ZXJBZ2VudCgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlUHJlZGljdGlvbkZpbGVDcmVhdGluZ0Z1enpl
ckFnZW50OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpC
b29sJiByZXF1aXJlUHJlZGljdGlvbkZvckZpbGVCYXNlZEZ1enplckFnZW50RGVmYXVsdCgpIHsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJlcXVpcmVQcmVkaWN0aW9uRm9yRmlsZUJh
c2VkRnV6emVyQWdlbnREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHJlcXVpcmVQcmVkaWN0aW9uRm9yRmlsZUJhc2VkRnV6emVyQWdl
bnQoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJlcXVpcmVQ
cmVkaWN0aW9uRm9yRmlsZUJhc2VkRnV6emVyQWdlbnQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZyYgZnV6emVyUHJlZGljdGlvbnNG
aWxlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ1enplclByZWRp
Y3Rpb25zRmlsZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25z
U3RvcmFnZTo6T3B0aW9uU3RyaW5nJiBmdXp6ZXJQcmVkaWN0aW9uc0ZpbGUoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ1enplclByZWRpY3Rpb25zRmlsZTsg
fSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNl
TmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50RGVmYXVsdCgpIHsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZU5hcnJvd2luZ051bWJlclByZWRpY3Rpb25GdXp6ZXJB
Z2VudERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgdXNlTmFycm93aW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50KCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VOYXJyb3dpbmdOdW1iZXJQ
cmVkaWN0aW9uRnV6emVyQWdlbnQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVdpZGVuaW5nTnVtYmVyUHJlZGljdGlvbkZ1enplckFnZW50
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVdpZGVuaW5nTnVt
YmVyUHJlZGljdGlvbkZ1enplckFnZW50RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXaWRlbmluZ051bWJlclByZWRpY3Rpb25G
dXp6ZXJBZ2VudCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
dXNlV2lkZW5pbmdOdW1iZXJQcmVkaWN0aW9uRnV6emVyQWdlbnQ7IH0gcHJpdmF0ZTogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGxvZ1BoYXNlVGltZXNEZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubG9nUGhhc2VUaW1lc0RlZmF1bHQ7
IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgbG9n
UGhhc2VUaW1lcygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
bG9nUGhhc2VUaW1lczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6RG91YmxlJiByYXJlQmxvY2tQZW5hbHR5RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnJhcmVCbG9ja1BlbmFsdHlEZWZhdWx0OyB9IHB1YmxpYzogX19mb3Jj
ZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgcmFyZUJsb2NrUGVuYWx0eSgp
IHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucmFyZUJsb2NrUGVu
YWx0eTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgYWlyTGluZWFyU2NhblZlcmJvc2VEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMuYWlyTGluZWFyU2NhblZlcmJvc2VEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGFpckxpbmVhclNjYW5WZXJib3NlKCkg
eyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5haXJMaW5lYXJTY2Fu
VmVyYm9zZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
Qm9vbCYgYWlyTGluZWFyU2NhblNwaWxsc0V2ZXJ5dGhpbmdEZWZhdWx0KCkgeyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMuYWlyTGluZWFyU2NhblNwaWxsc0V2ZXJ5dGhpbmdEZWZhdWx0
OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGFp
ckxpbmVhclNjYW5TcGlsbHNFdmVyeXRoaW5nKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5haXJMaW5lYXJTY2FuU3BpbGxzRXZlcnl0aGluZzsgfSBwcml2YXRl
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgYWlyRm9yY2VCcmln
Z3NBbGxvY2F0b3JEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuYWly
Rm9yY2VCcmlnZ3NBbGxvY2F0b3JEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGFpckZvcmNlQnJpZ2dzQWxsb2NhdG9yKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5haXJGb3JjZUJyaWdnc0FsbG9j
YXRvcjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgYWlyRm9yY2VJUkNBbGxvY2F0b3JEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMuYWlyRm9yY2VJUkNBbGxvY2F0b3JEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGFpckZvcmNlSVJDQWxsb2NhdG9yKCkg
eyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5haXJGb3JjZUlSQ0Fs
bG9jYXRvcjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
Qm9vbCYgYWlyUmFuZG9taXplUmVnc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy5haXJSYW5kb21pemVSZWdzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBhaXJSYW5kb21pemVSZWdzKCkgeyAoKHZvaWQp
MCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5haXJSYW5kb21pemVSZWdzOyB9IHBy
aXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgYWly
UmFuZG9taXplUmVnc1NlZWREZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMuYWlyUmFuZG9taXplUmVnc1NlZWREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBhaXJSYW5kb21pemVSZWdzU2VlZCgpIHsg
KCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuYWlyUmFuZG9taXplUmVn
c1NlZWQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJv
b2wmIGNvYWxlc2NlU3BpbGxTbG90c0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy5jb2FsZXNjZVNwaWxsU2xvdHNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGNvYWxlc2NlU3BpbGxTbG90cygpIHsgKCh2
b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY29hbGVzY2VTcGlsbFNsb3Rz
OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBs
b2dBaXJSZWdpc3RlclByZXNzdXJlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLmxvZ0FpclJlZ2lzdGVyUHJlc3N1cmVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGxvZ0FpclJlZ2lzdGVyUHJlc3N1cmUo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmxvZ0FpclJlZ2lz
dGVyUHJlc3N1cmU7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkJvb2wmIHVzZUIzVGFpbER1cERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VCM1RhaWxEdXBEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUIzVGFpbER1cCgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlQjNUYWlsRHVwOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4QjNUYWlsRHVwQmxv
Y2tTaXplRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLm1heEIzVGFp
bER1cEJsb2NrU2l6ZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6VW5zaWduZWQmIG1heEIzVGFpbER1cEJsb2NrU2l6ZSgpIHsgKCh2b2lkKTAp
OyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMubWF4QjNUYWlsRHVwQmxvY2tTaXplOyB9
IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYg
bWF4QjNUYWlsRHVwQmxvY2tTdWNjZXNzb3JzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLm1heEIzVGFpbER1cEJsb2NrU3VjY2Vzc29yc0RlZmF1bHQ7IH0gcHVibGlj
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIG1heEIzVGFp
bER1cEJsb2NrU3VjY2Vzc29ycygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMubWF4QjNUYWlsRHVwQmxvY2tTdWNjZXNzb3JzOyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VCM0hvaXN0TG9vcEludmFyaWFu
dFZhbHVlc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VCM0hv
aXN0TG9vcEludmFyaWFudFZhbHVlc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0
YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlQjNIb2lzdExvb3BJbnZhcmlhbnRWYWx1ZXMo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUIzSG9pc3RM
b29wSW52YXJpYW50VmFsdWVzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiB1c2VEb2xsYXJWTURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy51c2VEb2xsYXJWTURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlRG9sbGFyVk0oKSB7ICgodm9pZCkwKTsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZURvbGxhclZNOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmcmIGZ1bmN0aW9u
T3ZlcnJpZGVzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZ1bmN0
aW9uT3ZlcnJpZGVzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpPcHRpb25TdHJpbmcmIGZ1bmN0aW9uT3ZlcnJpZGVzKCkgeyAoKHZvaWQpMCk7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mdW5jdGlvbk92ZXJyaWRlczsgfSBwcml2
YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlU2lnaWxs
Q3Jhc2hBbmFseXplckRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51
c2VTaWdpbGxDcmFzaEFuYWx5emVyRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VTaWdpbGxDcmFzaEFuYWx5emVyKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VTaWdpbGxDcmFzaEFuYWx5
emVyOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNp
Z25lZCYgd2F0Y2hkb2dEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
d2F0Y2hkb2dEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OlVuc2lnbmVkJiB3YXRjaGRvZygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMud2F0Y2hkb2c7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVBvbGxpbmdUcmFwc0RlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VQb2xsaW5nVHJhcHNEZWZhdWx0OyB9IHB1YmxpYzog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVBvbGxpbmdUcmFw
cygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlUG9sbGlu
Z1RyYXBzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpC
b29sJiB1c2VNYWNoRm9yRXhjZXB0aW9uc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy51c2VNYWNoRm9yRXhjZXB0aW9uc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNl
aW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlTWFjaEZvckV4Y2VwdGlvbnMo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZU1hY2hGb3JF
eGNlcHRpb25zOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiB1c2VJQ1N0YXRzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLnVzZUlDU3RhdHNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUlDU3RhdHMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0
d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldl
YkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4
dGVuc2lvbnMpKS5vcHRpb25zLnVzZUlDU3RhdHM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBwcm90b3R5cGVIaXRDb3VudEZvckxMSW50
Q2FjaGluZ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYo
KmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3Rh
cnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5wcm90b3R5
cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZ0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHByb3RvdHlwZUhpdENvdW50Rm9yTExJ
bnRDYWNoaW5nKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5w
cm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnNE
ZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcENvbXBpbGVkUmVn
RXhwUGF0dGVybnNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OkJvb2wmIGR1bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zKCkgeyAoKHZvaWQpMCk7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJu
czsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
ZHVtcE1vZHVsZVJlY29yZERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy5kdW1wTW9kdWxlUmVjb3JkRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wTW9kdWxlUmVjb3JkKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wTW9kdWxlUmVjb3JkOyB9IHByaXZhdGU6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBkdW1wTW9kdWxlTG9h
ZGluZ1N0YXRlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBN
b2R1bGVMb2FkaW5nU3RhdGVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBNb2R1bGVMb2FkaW5nU3RhdGU7
IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGV4
cG9zZUludGVybmFsTW9kdWxlTG9hZGVyRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBleHBvc2VJbnRlcm5hbE1v
ZHVsZUxvYWRlcigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
ZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXI7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVN1cGVyU2FtcGxlckRlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VTdXBlclNhbXBsZXJEZWZhdWx0OyB9IHB1Ymxp
YzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVN1cGVyU2Ft
cGxlcigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlU3Vw
ZXJTYW1wbGVyOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiB1c2VTb3VyY2VQcm92aWRlckNhY2hlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnVzZVNvdXJjZVByb3ZpZGVyQ2FjaGVEZWZhdWx0OyB9IHB1YmxpYzog
X19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVNvdXJjZVByb3Zp
ZGVyQ2FjaGUoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVz
ZVNvdXJjZVByb3ZpZGVyQ2FjaGU7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUNvZGVDYWNoZURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy51c2VDb2RlQ2FjaGVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUNvZGVDYWNoZSgpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlQ29kZUNhY2hlOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXZWJBc3Nl
bWJseURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJp
dHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRT
bG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VXZWJBc3Nl
bWJseURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgdXNlV2ViQXNzZW1ibHkoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLnVzZVdlYkFzc2VtYmx5OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmYWlsVG9Db21waWxlV2ViQXNzZW1ibHlDb2RlRGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZhaWxUb0NvbXBpbGVXZWJB
c3NlbWJseUNvZGVEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OkJvb2wmIGZhaWxUb0NvbXBpbGVXZWJBc3NlbWJseUNvZGUoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZhaWxUb0NvbXBpbGVXZWJBc3NlbWJs
eUNvZGU7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlNp
emUmIHdlYkFzc2VtYmx5UGFydGlhbENvbXBpbGVMaW1pdERlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy53ZWJBc3NlbWJseVBhcnRpYWxDb21waWxlTGltaXREZWZhdWx0
OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlNpemUmIHdl
YkFzc2VtYmx5UGFydGlhbENvbXBpbGVMaW1pdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMud2ViQXNzZW1ibHlQYXJ0aWFsQ29tcGlsZUxpbWl0OyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgd2ViQXNz
ZW1ibHlCQlFBaXJPcHRpbWl6YXRpb25MZXZlbERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy53ZWJBc3NlbWJseUJCUUFpck9wdGltaXphdGlvbkxldmVsRGVmYXVsdDsg
fSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYg
d2ViQXNzZW1ibHlCQlFBaXJPcHRpbWl6YXRpb25MZXZlbCgpIHsgKCh2b2lkKTApOyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMud2ViQXNzZW1ibHlCQlFBaXJPcHRpbWl6YXRpb25MZXZl
bDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWdu
ZWQmIHdlYkFzc2VtYmx5QkJRQjNPcHRpbWl6YXRpb25MZXZlbERlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy53ZWJBc3NlbWJseUJCUUIzT3B0aW1pemF0aW9uTGV2ZWxE
ZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkJiB3ZWJBc3NlbWJseUJCUUIzT3B0aW1pemF0aW9uTGV2ZWwoKSB7ICgodm9pZCkwKTsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLndlYkFzc2VtYmx5QkJRQjNPcHRpbWl6YXRp
b25MZXZlbDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
VW5zaWduZWQmIHdlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWxEZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMud2ViQXNzZW1ibHlPTUdPcHRpbWl6YXRpb25MZXZl
bERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
VW5zaWduZWQmIHdlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwoKSB7ICgodm9pZCkwKTsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLndlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9u
TGV2ZWw7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVu
c2lnbmVkJiB3ZWJBc3NlbWJseUJCUUZhbGxiYWNrU2l6ZURlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy53ZWJBc3NlbWJseUJCUUZhbGxiYWNrU2l6ZURlZmF1bHQ7IH0g
cHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHdl
YkFzc2VtYmx5QkJRRmFsbGJhY2tTaXplKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2Vf
Y2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25m
aWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNp
b25zKSkub3B0aW9ucy53ZWJBc3NlbWJseUJCUUZhbGxiYWNrU2l6ZTsgfSBwcml2YXRlOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlQkJRVGllclVwQ2hlY2tz
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUJCUVRpZXJVcENo
ZWNrc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgdXNlQkJRVGllclVwQ2hlY2tzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy51c2VCQlFUaWVyVXBDaGVja3M7IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVdlYkFzc2VtYmx5T1NSRGVmYXVs
dCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVdlYkFzc2VtYmx5T1NSRGVm
YXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiB1c2VXZWJBc3NlbWJseU9TUigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMudXNlV2ViQXNzZW1ibHlPU1I7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkludDMyJiB0aHJlc2hvbGRGb3JCQlFPcHRpbWl6ZUFmdGVyV2Fy
bVVwRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnRocmVzaG9sZEZv
ckJCUU9wdGltaXplQWZ0ZXJXYXJtVXBEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkludDMyJiB0aHJlc2hvbGRGb3JCQlFPcHRpbWl6ZUFmdGVy
V2FybVVwKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy50aHJl
c2hvbGRGb3JCQlFPcHRpbWl6ZUFmdGVyV2FybVVwOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgdGhyZXNob2xkRm9yQkJRT3B0aW1pemVTb29u
RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lz
ZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RP
ZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnRocmVzaG9sZEZvckJC
UU9wdGltaXplU29vbkRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRp
b25zU3RvcmFnZTo6SW50MzImIHRocmVzaG9sZEZvckJCUU9wdGltaXplU29vbigpIHsgKCh2b2lk
KTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudGhyZXNob2xkRm9yQkJRT3B0aW1p
emVTb29uOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJ
bnQzMiYgdGhyZXNob2xkRm9yT01HT3B0aW1pemVBZnRlcldhcm1VcERlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy50aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZUFmdGVyV2Fy
bVVwRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpJbnQzMiYgdGhyZXNob2xkRm9yT01HT3B0aW1pemVBZnRlcldhcm1VcCgpIHsgKCh2b2lkKTAp
OyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudGhyZXNob2xkRm9yT01HT3B0aW1pemVB
ZnRlcldhcm1VcDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6SW50MzImIHRocmVzaG9sZEZvck9NR09wdGltaXplU29vbkRlZmF1bHQoKSB7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy50aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZVNvb25EZWZhdWx0
OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkludDMyJiB0
aHJlc2hvbGRGb3JPTUdPcHRpbWl6ZVNvb24oKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnRocmVzaG9sZEZvck9NR09wdGltaXplU29vbjsgfSBwcml2YXRlOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIG9tZ1RpZXJVcENvdW50
ZXJJbmNyZW1lbnRGb3JMb29wRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLm9tZ1RpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JMb29wRGVmYXVsdDsgfSBwdWJsaWM6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgb21nVGllclVwQ291bnRl
ckluY3JlbWVudEZvckxvb3AoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLm9tZ1RpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JMb29wOyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpJbnQzMiYgb21nVGllclVwQ291bnRlcklu
Y3JlbWVudEZvckVudHJ5RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
Lm9tZ1RpZXJVcENvdW50ZXJJbmNyZW1lbnRGb3JFbnRyeURlZmF1bHQ7IH0gcHVibGljOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6SW50MzImIG9tZ1RpZXJVcENvdW50ZXJJ
bmNyZW1lbnRGb3JFbnRyeSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMub21nVGllclVwQ291bnRlckluY3JlbWVudEZvckVudHJ5OyB9IHByaXZhdGU6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXZWJBc3NlbWJseUZhc3RN
ZW1vcnlEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlV2ViQXNz
ZW1ibHlGYXN0TWVtb3J5RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9y
eTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
bG9nV2ViQXNzZW1ibHlNZW1vcnlEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMubG9nV2ViQXNzZW1ibHlNZW1vcnlEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGxvZ1dlYkFzc2VtYmx5TWVtb3J5KCkgeyAo
KHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5sb2dXZWJBc3NlbWJseU1l
bW9yeTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5z
aWduZWQmIHdlYkFzc2VtYmx5RmFzdE1lbW9yeVJlZHpvbmVQYWdlc0RlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy53ZWJBc3NlbWJseUZhc3RNZW1vcnlSZWR6b25lUGFn
ZXNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OlVuc2lnbmVkJiB3ZWJBc3NlbWJseUZhc3RNZW1vcnlSZWR6b25lUGFnZXMoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLndlYkFzc2VtYmx5RmFzdE1lbW9yeVJl
ZHpvbmVQYWdlczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgY3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1vcnlEZWZhdWx0KCkgeyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuY3Jhc2hJZldlYkFzc2VtYmx5Q2FudEZhc3RNZW1v
cnlEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6
OkJvb2wmIGNyYXNoSWZXZWJBc3NlbWJseUNhbnRGYXN0TWVtb3J5KCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5jcmFzaElmV2ViQXNzZW1ibHlDYW50RmFzdE1l
bW9yeTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgY3Jhc2hPbkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRhdGVEZWZhdWx0KCkgeyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMuY3Jhc2hPbkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRhdGVEZWZh
dWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wm
IGNyYXNoT25GYWlsZWRXZWJBc3NlbWJseVZhbGlkYXRlKCkgeyAoKHZvaWQpMCk7IHJldHVybiAo
KmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+
KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VG
b3JFeHRlbnNpb25zKSkub3B0aW9ucy5jcmFzaE9uRmFpbGVkV2ViQXNzZW1ibHlWYWxpZGF0ZTsg
fSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQm
IG1heE51bVdlYkFzc2VtYmx5RmFzdE1lbW9yaWVzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLm1heE51bVdlYkFzc2VtYmx5RmFzdE1lbW9yaWVzRGVmYXVsdDsgfSBw
dWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpVbnNpZ25lZCYgbWF4
TnVtV2ViQXNzZW1ibHlGYXN0TWVtb3JpZXMoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLm1heE51bVdlYkFzc2VtYmx5RmFzdE1lbW9yaWVzOyB9IHByaXZhdGU6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VGYXN0VExTRm9y
V2FzbUNvbnRleHREZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
RmFzdFRMU0Zvcldhc21Db250ZXh0RGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSB7ICgo
dm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUZhc3RUTFNGb3JXYXNt
Q29udGV4dDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6
Qm9vbCYgd2FzbUJCUVVzZXNBaXJEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlND
OjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2Nv
bmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9w
dGlvbnMud2FzbUJCUVVzZXNBaXJEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHdhc21CQlFVc2VzQWlyKCkgeyAoKHZvaWQpMCk7IHJl
dHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNv
bmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSku
c3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy53YXNtQkJRVXNlc0FpcjsgfSBwcml2YXRlOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlV2FzbUxMSW50RGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVdhc21MTEludERlZmF1
bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
dXNlV2FzbUxMSW50KCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy51c2VXYXNtTExJbnQ7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6OkJvb2wmIHVzZUJCUUpJVERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VCQlFKSVREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZUJCUUpJVCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpi
aXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigm
V2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9y
RXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlQkJRSklUOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUg
c3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VPTUdKSVREZWZhdWx0KCkgeyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlT01HSklURGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VPTUdKSVQoKSB7ICgodm9p
ZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0
PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNv
bmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZU9NR0pJVDsgfSBwcml2YXRl
OiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlV2FzbUxMSW50
UHJvbG9ndWVPU1JEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
V2FzbUxMSW50UHJvbG9ndWVPU1JEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVdhc21MTEludFByb2xvZ3VlT1NSKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VXYXNtTExJbnRQcm9sb2d1
ZU9TUjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgdXNlV2FzbUxMSW50TG9vcE9TUkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VXYXNtTExJbnRMb29wT1NSRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXYXNtTExJbnRMb29wT1NSKCkgeyAo
KHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VXYXNtTExJbnRMb29w
T1NSOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiB1c2VXYXNtTExJbnRFcGlsb2d1ZU9TUkRlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy51c2VXYXNtTExJbnRFcGlsb2d1ZU9TUkRlZmF1bHQ7IH0gcHVibGljOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlV2FzbUxMSW50RXBpbG9n
dWVPU1IoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVdh
c21MTEludEVwaWxvZ3VlT1NSOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpPcHRpb25SYW5nZSYgd2FzbUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZURl
ZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy53YXNtRnVuY3Rpb25JbmRl
eFJhbmdlVG9Db21waWxlRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpPcHRpb25SYW5nZSYgd2FzbUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGls
ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMud2FzbUZ1bmN0
aW9uSW5kZXhSYW5nZVRvQ29tcGlsZTsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBP
cHRpb25zU3RvcmFnZTo6Qm9vbCYgd2FzbUxMSW50VGllcnNVcFRvQkJRRGVmYXVsdCgpIHsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLndhc21MTEludFRpZXJzVXBUb0JCUURlZmF1bHQ7
IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgd2Fz
bUxMSW50VGllcnNVcFRvQkJRKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy53YXNtTExJbnRUaWVyc1VwVG9CQlE7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBz
dGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlNpemUmIHdlYkFzc2VtYmx5QkJRQWlyTW9kZVRocmVzaG9s
ZERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdp
c2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90
T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy53ZWJBc3NlbWJseUJC
UUFpck1vZGVUaHJlc2hvbGREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OlNpemUmIHdlYkFzc2VtYmx5QkJRQWlyTW9kZVRocmVzaG9sZCgpIHsg
KCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNl
X2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9m
V1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMud2ViQXNzZW1ibHlCQlFB
aXJNb2RlVGhyZXNob2xkOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpCb29sJiB1c2VXZWJBc3NlbWJseVN0cmVhbWluZ0FwaURlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VXZWJBc3NlbWJseVN0cmVhbWluZ0FwaURlZmF1
bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
dXNlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnVzZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpOyB9IHByaXZhdGU6IF9f
Zm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VFYWdlcldlYkFzc2Vt
Ymx5TW9kdWxlSGFzaGluZ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmln
W1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9u
cy51c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFzaGluZ0RlZmF1bHQ7IH0gcHVibGljOiBfX2Zv
cmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlRWFnZXJXZWJBc3NlbWJs
eU1vZHVsZUhhc2hpbmcoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLnVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNoaW5nOyB9IHByaXZhdGU6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXZWJBc3NlbWJseVJlZmVyZW5j
ZXNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3
aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xv
dE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlV2ViQXNzZW1i
bHlSZWZlcmVuY2VzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlv
bnNTdG9yYWdlOjpCb29sJiB1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSB7ICgodm9pZCkwKTsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlczsg
fSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNl
V2ViQXNzZW1ibHlNdWx0aVZhbHVlc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VXZWJBc3NlbWJseU11bHRpVmFsdWVzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXZWJBc3NlbWJseU11bHRp
VmFsdWVzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VX
ZWJBc3NlbWJseU11bHRpVmFsdWVzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpCb29sJiB1c2VXZWFrUmVmc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy51c2VXZWFrUmVmc0RlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlV2Vha1JlZnMoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVdlYWtSZWZzOyB9IHByaXZhdGU6
IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VCaWdJbnREZWZh
dWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nh
c3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RG
Q29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNlQmlnSW50RGVmYXVsdDsg
fSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VC
aWdJbnQoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZUJp
Z0ludDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgdXNlSW50bERpc3BsYXlOYW1lc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy51c2VJbnRsRGlzcGxheU5hbWVzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VJbnRsRGlzcGxheU5hbWVzKCkgeyAo
KHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2Vf
Y2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZX
VEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VJbnRsRGlzcGxheU5h
bWVzOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmdEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNl
X2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29u
ZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5z
aW9ucykpLm9wdGlvbnMudXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nRGVmYXVsdDsgfSBwdWJs
aWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VBcnJheUFs
bG9jYXRpb25Qcm9maWxpbmcoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5v
cHRpb25zLnVzZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZm9yY2VQb2x5UHJvdG9EZWZhdWx0KCkg
eyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RG
OjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmln
XSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZm9yY2VQb2x5UHJvdG9EZWZhdWx0OyB9
IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIGZvcmNl
UG9seVByb3RvKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZp
Zyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dU
Rjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5m
b3JjZVBvbHlQcm90bzsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgZm9yY2VNaW5pVk1Nb2RlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9j
YXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZp
Zzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lv
bnMpKS5vcHRpb25zLmZvcmNlTWluaVZNTW9kZURlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgZm9yY2VNaW5pVk1Nb2RlKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5mb3JjZU1pbmlWTU1vZGU7IH0g
cHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVRy
YWNlUG9pbnRzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVzZVRy
YWNlUG9pbnRzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpCb29sJiB1c2VUcmFjZVBvaW50cygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMudXNlVHJhY2VQb2ludHM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGlu
ZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHRyYWNlTExJbnRFeGVjdXRpb25EZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudHJhY2VMTEludEV4ZWN1dGlvbkRl
ZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9v
bCYgdHJhY2VMTEludEV4ZWN1dGlvbigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9u
cykpLm9wdGlvbnMudHJhY2VMTEludEV4ZWN1dGlvbjsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdHJhY2VMTEludFNsb3dQYXRoRGVmYXVsdCgp
IHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnRyYWNlTExJbnRTbG93UGF0aERlZmF1
bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
dHJhY2VMTEludFNsb3dQYXRoKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy50cmFjZUxMSW50U2xvd1BhdGg7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0
aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHRyYWNlQmFzZWxpbmVKSVRFeGVjdXRpb25EZWZhdWx0
KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8
V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29u
ZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudHJhY2VCYXNlbGluZUpJVEV4ZWN1
dGlvbkRlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgdHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbigpIHsgKCh2b2lkKTApOyByZXR1cm4g
KCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcq
PigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNl
Rm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbjsgfSBwcml2
YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIHRocmVz
aG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMudGhyZXNob2xkRm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaERl
ZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5z
aWduZWQmIHRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnRocmVzaG9sZEZvckdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2g7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0
b3JhZ2U6Ok9wdGlvblN0cmluZyYgZGlza0NhY2hlUGF0aERlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy5kaXNrQ2FjaGVQYXRoRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpPcHRpb25TdHJpbmcmIGRpc2tDYWNoZVBh
dGgoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigq
Yml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFy
dFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmRpc2tDYWNo
ZVBhdGg7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJv
b2wmIGZvcmNlRGlza0NhY2hlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6
Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRp
b25zLmZvcmNlRGlza0NhY2hlRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGlj
IE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZURpc2tDYWNoZSgpIHsgKCh2b2lkKTApOyByZXR1
cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25m
aWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNw
YWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZm9yY2VEaXNrQ2FjaGU7IH0gcHJpdmF0ZTogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHZhbGlkYXRlQWJzdHJhY3RJ
bnRlcnByZXRlclN0YXRlRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29u
ZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdb
V1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25z
LnZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9y
Y2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB2YWxpZGF0ZUFic3RyYWN0SW50
ZXJwcmV0ZXJTdGF0ZSgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpD
b25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZp
Z1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlv
bnMudmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGU7IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OkRvdWJsZSYgdmFsaWRhdGVBYnN0cmFjdEludGVy
cHJldGVyU3RhdGVQcm9iYWJpbGl0eURlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxK
U0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSku
b3B0aW9ucy52YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZVByb2JhYmlsaXR5RGVmYXVs
dDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUm
IHZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlUHJvYmFiaWxpdHkoKSB7ICgodm9pZCkw
KTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdU
Rjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZp
Z10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnZhbGlkYXRlQWJzdHJhY3RJbnRlcnBy
ZXRlclN0YXRlUHJvYmFiaWxpdHk7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmluZyYgZHVtcEpJVE1lbW9yeVBhdGhEZWZhdWx0KCkgeyBy
ZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
LnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuZHVtcEpJVE1lbW9yeVBhdGhEZWZhdWx0OyB9
IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6Ok9wdGlvblN0cmlu
ZyYgZHVtcEpJVE1lbW9yeVBhdGgoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0
PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMp
KS5vcHRpb25zLmR1bXBKSVRNZW1vcnlQYXRoOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpEb3VibGUmIGR1bXBKSVRNZW1vcnlGbHVzaEludGVydmFsRGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmR1bXBKSVRNZW1vcnlGbHVz
aEludGVydmFsRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNT
dG9yYWdlOjpEb3VibGUmIGR1bXBKSVRNZW1vcnlGbHVzaEludGVydmFsKCkgeyAoKHZvaWQpMCk7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5kdW1wSklUTWVtb3J5Rmx1c2hJbnRlcnZh
bDsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYg
dXNlVW5saW5rZWRDb2RlQmxvY2tKZXR0aXNvbmluZ0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy51c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nRGVmYXVsdDsg
fSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VV
bmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy51c2VVbmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nOyB9IHByaXZh
dGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBmb3JjZU9TUkV4
aXRUb0xMSW50RGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4o
JigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpz
dGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZvcmNl
T1NSRXhpdFRvTExJbnREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0
aW9uc1N0b3JhZ2U6OkJvb2wmIGZvcmNlT1NSRXhpdFRvTExJbnQoKSB7ICgodm9pZCkwKTsgcmV0
dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29u
ZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5z
cGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmZvcmNlT1NSRXhpdFRvTExJbnQ7IH0gcHJpdmF0
ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBnZXRCeVZh
bElDTWF4TnVtYmVyT2ZJZGVudGlmaWVyc0RlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2Fz
dDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6
OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25z
KSkub3B0aW9ucy5nZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVyc0RlZmF1bHQ7IH0gcHVi
bGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQmIGdldEJ5
VmFsSUNNYXhOdW1iZXJPZklkZW50aWZpZXJzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdp
c2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJD
b25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRl
bnNpb25zKSkub3B0aW9ucy5nZXRCeVZhbElDTWF4TnVtYmVyT2ZJZGVudGlmaWVyczsgfSBwcml2
YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlUHVibGlj
Q2xhc3NGaWVsZHNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMudXNl
UHVibGljQ2xhc3NGaWVsZHNEZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlubGluZSBzdGF0aWMg
T3B0aW9uc1N0b3JhZ2U6OkJvb2wmIHVzZVB1YmxpY0NsYXNzRmllbGRzKCkgeyAoKHZvaWQpMCk7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VQdWJsaWNDbGFzc0ZpZWxkczsgfSBw
cml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlUmFu
ZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbkRlZmF1bHQoKSB7IHJldHVybiAoKmJp
dHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZX
ZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JF
eHRlbnNpb25zKSkub3B0aW9ucy51c2VSYW5kb21pemluZ0V4ZWN1dGFibGVJc2xhbmRBbGxvY2F0
aW9uRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdl
OjpCb29sJiB1c2VSYW5kb21pemluZ0V4ZWN1dGFibGVJc2xhbmRBbGxvY2F0aW9uKCkgeyAoKHZv
aWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VSYW5kb21pemluZ0V4ZWN1
dGFibGVJc2xhbmRBbGxvY2F0aW9uOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9w
dGlvbnNTdG9yYWdlOjpCb29sJiBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdERlZmF1bHQo
KSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxX
VEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25m
aWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5leHBvc2VQcm9maWxlcnNPbkdsb2Jh
bE9iamVjdERlZmF1bHQ7IH0gcHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3Rv
cmFnZTo6Qm9vbCYgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxPYmplY3QoKSB7ICgodm9pZCkwKTsg
cmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10p
KS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2Jq
ZWN0OyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29s
JiBhbGxvd1Vuc3VwcG9ydGVkVGllcnNEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8
SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpn
X2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykp
Lm9wdGlvbnMuYWxsb3dVbnN1cHBvcnRlZFRpZXJzRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2Vp
bmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiBhbGxvd1Vuc3VwcG9ydGVkVGllcnMo
KSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0
d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNs
b3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLmFsbG93VW5zdXBw
b3J0ZWRUaWVyczsgfSBwcml2YXRlOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFn
ZTo6Qm9vbCYgdXNlUHJpdmF0ZUNsYXNzRmllbGRzRGVmYXVsdCgpIHsgcmV0dXJuICgqYml0d2lz
ZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNv
bmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVu
c2lvbnMpKS5vcHRpb25zLnVzZVByaXZhdGVDbGFzc0ZpZWxkc0RlZmF1bHQ7IH0gcHVibGljOiBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlUHJpdmF0ZUNsYXNz
RmllbGRzKCkgeyAoKHZvaWQpMCk7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VQ
cml2YXRlQ2xhc3NGaWVsZHM7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9u
c1N0b3JhZ2U6OkJvb2wmIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nRGVm
YXVsdCgpIHsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9j
YXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldU
RkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnJldHVybkVhcmx5RnJvbUlu
ZmluaXRlTG9vcHNGb3JGdXp6aW5nRGVmYXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3Rh
dGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9y
RnV6emluZygpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcq
PigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6
OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMucmV0
dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmc7IH0gcHJpdmF0ZTogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlNpemUmIGVhcmx5UmV0dXJuRnJvbUluZmluaXRl
TG9vcHNMaW1pdERlZmF1bHQoKSB7IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+
KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6
c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5lYXJs
eVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXREZWZhdWx0OyB9IHB1YmxpYzogX19mb3JjZWlu
bGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlNpemUmIGVhcmx5UmV0dXJuRnJvbUluZmluaXRl
TG9vcHNMaW1pdCgpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25m
aWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tX
VEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMu
ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0OyB9IHByaXZhdGU6IF9fZm9yY2Vpbmxp
bmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpCb29sJiB1c2VMSUNNRnV6emluZ0RlZmF1bHQoKSB7
IHJldHVybiAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6
OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWdd
KSkuc3BhY2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy51c2VMSUNNRnV6emluZ0RlZmF1bHQ7IH0g
cHVibGljOiBfX2ZvcmNlaW5saW5lIHN0YXRpYyBPcHRpb25zU3RvcmFnZTo6Qm9vbCYgdXNlTElD
TUZ1enppbmcoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgqYml0d2lzZV9jYXN0PEpTQzo6Q29uZmln
Kj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbV1RG
OjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZvckV4dGVuc2lvbnMpKS5vcHRpb25zLnVz
ZUxJQ01GdXp6aW5nOyB9IHByaXZhdGU6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9y
YWdlOjpVbnNpZ25lZCYgc2VlZEZvckxJQ01GdXp6ZXJEZWZhdWx0KCkgeyByZXR1cm4gKCpiaXR3
aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigmKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2Vi
Q29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0
ZW5zaW9ucykpLm9wdGlvbnMuc2VlZEZvckxJQ01GdXp6ZXJEZWZhdWx0OyB9IHB1YmxpYzogX19m
b3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkJiBzZWVkRm9yTElDTUZ1
enplcigpIHsgKCh2b2lkKTApOyByZXR1cm4gKCpiaXR3aXNlX2Nhc3Q8SlNDOjpDb25maWcqPigm
KCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0
YXJ0U2xvdE9mV1RGQ29uZmlnXSkpLnNwYWNlRm9yRXh0ZW5zaW9ucykpLm9wdGlvbnMuc2VlZEZv
ckxJQ01GdXp6ZXI7IH0gcHJpdmF0ZTogX19mb3JjZWlubGluZSBzdGF0aWMgT3B0aW9uc1N0b3Jh
Z2U6OkRvdWJsZSYgYWxsb3dIb2lzdGluZ0xJQ01Qcm9iYWJpbGl0eURlZmF1bHQoKSB7IHJldHVy
biAoKmJpdHdpc2VfY2FzdDxKU0M6OkNvbmZpZyo+KCYoKmJpdHdpc2VfY2FzdDxXVEY6OkNvbmZp
Zyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZDb25maWddKSkuc3Bh
Y2VGb3JFeHRlbnNpb25zKSkub3B0aW9ucy5hbGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5RGVm
YXVsdDsgfSBwdWJsaWM6IF9fZm9yY2VpbmxpbmUgc3RhdGljIE9wdGlvbnNTdG9yYWdlOjpEb3Vi
bGUmIGFsbG93SG9pc3RpbmdMSUNNUHJvYmFiaWxpdHkoKSB7ICgodm9pZCkwKTsgcmV0dXJuICgq
Yml0d2lzZV9jYXN0PEpTQzo6Q29uZmlnKj4oJigqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4o
JldlYkNvbmZpZzo6Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKS5zcGFjZUZv
ckV4dGVuc2lvbnMpKS5vcHRpb25zLmFsbG93SG9pc3RpbmdMSUNNUHJvYmFiaWxpdHk7IH0NCg0K
DQogICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoSUQsIEF2YWlsYWJpbGl0eSk7DQoNCnByaXZh
dGU6DQogICAgc3RydWN0IENvbnN0TWV0YURhdGEgew0KICAgICAgICBjb25zdCBjaGFyKiBuYW1l
Ow0KICAgICAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjsNCiAgICAgICAgVHlwZSB0eXBlOw0K
ICAgICAgICBBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5Ow0KICAgICAgICB1aW50MTZfdCBvZmZz
ZXRPZk9wdGlvbjsNCiAgICAgICAgdWludDE2X3Qgb2Zmc2V0T2ZPcHRpb25EZWZhdWx0Ow0KICAg
IH07DQoNCiAgICBPcHRpb25zKCk7DQoNCiAgICBlbnVtIER1bXBEZWZhdWx0c09wdGlvbiB7DQog
ICAgICAgIERvbnREdW1wRGVmYXVsdHMsDQogICAgICAgIER1bXBEZWZhdWx0cw0KICAgIH07DQog
ICAgc3RhdGljIHZvaWQgZHVtcE9wdGlvbnNJZk5lZWRlZCgpOw0KICAgIHN0YXRpYyB2b2lkIGR1
bXBBbGxPcHRpb25zKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIGNvbnN0IGNoYXIqIHRpdGxl
LA0KICAgICAgICBjb25zdCBjaGFyKiBzZXBhcmF0b3IsIGNvbnN0IGNoYXIqIG9wdGlvbkhlYWRl
ciwgY29uc3QgY2hhciogb3B0aW9uRm9vdGVyLCBEdW1wRGVmYXVsdHNPcHRpb24pOw0KICAgIHN0
YXRpYyB2b2lkIGR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgSUQsDQogICAg
ICAgIGNvbnN0IGNoYXIqIG9wdGlvbkhlYWRlciwgY29uc3QgY2hhciogb3B0aW9uRm9vdGVyLCBE
dW1wRGVmYXVsdHNPcHRpb24pOw0KDQogICAgc3RhdGljIGJvb2wgc2V0T3B0aW9uV2l0aG91dEFs
aWFzKGNvbnN0IGNoYXIqIGFyZyk7DQogICAgc3RhdGljIGJvb2wgc2V0QWxpYXNlZE9wdGlvbihj
b25zdCBjaGFyKiBhcmcpOw0KICAgIHN0YXRpYyBib29sIG92ZXJyaWRlQWxpYXNlZE9wdGlvbldp
dGhIZXVyaXN0aWMoY29uc3QgY2hhciogbmFtZSk7DQoNCiAgICBpbmxpbmUgc3RhdGljIHZvaWQq
IGFkZHJlc3NPZk9wdGlvbihPcHRpb25zOjpJRCk7DQogICAgaW5saW5lIHN0YXRpYyB2b2lkKiBh
ZGRyZXNzT2ZPcHRpb25EZWZhdWx0KE9wdGlvbnM6OklEKTsNCg0KICAgIHN0YXRpYyBjb25zdCBD
b25zdE1ldGFEYXRhIHNfY29uc3RNZXRhRGF0YVtOdW1iZXJPZk9wdGlvbnNdOw0KDQogICAgZnJp
ZW5kIHN0cnVjdCBPcHRpb25SZWFkZXI7DQp9Ow0KDQp9IA0KI2xpbmUgMzMgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxFeGVjdXRhYmxlQWxs
b2NhdG9yLmgiDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9HaWdhY2FnZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoN
Cg0KbmFtZXNwYWNlIEdpZ2FjYWdlIHsNCg0KY29uc3Qgc2l6ZV90IHByaW1pdGl2ZUdpZ2FjYWdl
TWFzayA9IDA7DQpjb25zdCBzaXplX3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IDA7DQoNCmVudW0g
S2luZCB7DQogICAgUHJpbWl0aXZlLA0KICAgIEpTVmFsdWUsDQogICAgTnVtYmVyT2ZLaW5kcw0K
fTsNCg0KaW5saW5lIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKSB7IH0NCmlubGluZSB2b2lkIGRpc2Fi
bGVQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQ0KaW5saW5lIGJvb2wgc2hvdWxkQmVFbmFibGVkKCkg
eyByZXR1cm4gZmFsc2U7IH0NCg0KaW5saW5lIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxi
YWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopIHsgfQ0KaW5saW5lIHZvaWQgcmVtb3ZlUHJpbWl0
aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopIHsgfQ0KDQppbmxpbmUg
dm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQ0KDQpfX2ZvcmNlaW5s
aW5lIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQ0Kew0KICAgIHN3aXRjaCAoa2luZCkgew0K
ICAgIGNhc2UgUHJpbWl0aXZlOg0KICAgICAgICByZXR1cm4gIlByaW1pdGl2ZSI7DQogICAgY2Fz
ZSBKU1ZhbHVlOg0KICAgICAgICByZXR1cm4gIkpTVmFsdWUiOw0KICAgIGNhc2UgTnVtYmVyT2ZL
aW5kczoNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg2
NCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL0dpZ2FjYWdlLmgiLCAgX19GVU5DVElPTl9fICAsIDQgKTsgfSB3aGlsZSAoZmFsc2UpOw0K
ICAgIHJldHVybiBudWxscHRyOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgY29udGFpbnMoY29u
c3Qgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9DQpfX2ZvcmNlaW5saW5lIGJvb2wgZGlzYWJsaW5n
UHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbigpIHsgcmV0dXJuIGZhbHNlOyB9DQpfX2ZvcmNl
aW5saW5lIGJvb2wgaXNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0NCl9fZm9yY2VpbmxpbmUg
Ym9vbCBpc0VuYWJsZWQoS2luZCkgeyByZXR1cm4gZmFsc2U7IH0NCl9fZm9yY2VpbmxpbmUgc2l6
ZV90IG1hc2soS2luZCkgeyByZXR1cm4gMDsgfQ0KX19mb3JjZWlubGluZSBzaXplX3QgZm9vdHBy
aW50KEtpbmQpIHsgcmV0dXJuIDA7IH0NCl9fZm9yY2VpbmxpbmUgc2l6ZV90IG1heFNpemUoS2lu
ZCkgeyByZXR1cm4gMDsgfQ0KX19mb3JjZWlubGluZSBzaXplX3Qgc2l6ZShLaW5kKSB7IHJldHVy
biAwOyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgVCogY2FnZWQoS2luZCwgVCog
cHRyKSB7IHJldHVybiBwdHI7IH0NCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgVCogY2Fn
ZWRNYXlCZU51bGwoS2luZCwgVCogcHRyKSB7IHJldHVybiBwdHI7IH0NCg0KaW5saW5lIGJvb2wg
aXNDYWdlZChLaW5kLCBjb25zdCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0NCg0KaW5saW5lIHZv
aWQqIHRyeUFsaWduZWRNYWxsb2MoS2luZCwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIHRyeUZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVudCwgc2l6ZSk7IH0NCmlubGlu
ZSB2b2lkIGFsaWduZWRGcmVlKEtpbmQsIHZvaWQqIHApIHsgZmFzdEFsaWduZWRGcmVlKHApOyB9
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCogdHJ5TWFsbG9jKEtpbmQsIHNpemVfdCBzaXpl
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkKiB0cnlSZWFsbG9jKEtpbmQsIHZvaWQqLCBz
aXplX3QpOw0KaW5saW5lIHZvaWQgZnJlZShLaW5kLCB2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9
DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkKiB0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQ
YWdlcyhLaW5kLCBzaXplX3Qgc2l6ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBmcmVl
VmlydHVhbFBhZ2VzKEtpbmQsIHZvaWQqIGJhc2VQdHIsIHNpemVfdCBzaXplKTsNCg0KfSANCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvR2lnYWNhZ2UuaCINCg0KbmFt
ZXNwYWNlIEdpZ2FjYWdlIHsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQqIHRyeU1hbGxv
Y0FycmF5KEtpbmQsIHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsNCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQqIG1hbGxvYyhLaW5kLCBzaXplX3QpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHZvaWQqIG1hbGxvY0FycmF5KEtpbmQsIHNpemVfdCBudW1FbGVtZW50
cywgc2l6ZV90IGVsZW1lbnRTaXplKTsNCg0KfSANCg0KDQojbGluZSAzNyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEV4ZWN1dGFibGVBbGxv
Y2F0b3IuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL0xvY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0xvY2tBbGdvcml0
aG0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCg0KDQoNCnRlbXBsYXRl
PHR5cGVuYW1lIExvY2tUeXBlPg0Kc3RydWN0IEVtcHR5TG9ja0hvb2tzIHsNCiAgICBzdGF0aWMg
TG9ja1R5cGUgbG9ja0hvb2soTG9ja1R5cGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9DQogICAg
c3RhdGljIExvY2tUeXBlIHVubG9ja0hvb2soTG9ja1R5cGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
OyB9DQogICAgc3RhdGljIExvY2tUeXBlIHBhcmtIb29rKExvY2tUeXBlIHZhbHVlKSB7IHJldHVy
biB2YWx1ZTsgfQ0KICAgIHN0YXRpYyBMb2NrVHlwZSBoYW5kb2ZmSG9vayhMb2NrVHlwZSB2YWx1
ZSkgeyByZXR1cm4gdmFsdWU7IH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlLCBM
b2NrVHlwZSBpc0hlbGRCaXQsIExvY2tUeXBlIGhhc1BhcmtlZEJpdCwgdHlwZW5hbWUgSG9va3Mg
PSBFbXB0eUxvY2tIb29rczxMb2NrVHlwZT4+DQpjbGFzcyBMb2NrQWxnb3JpdGhtIHsNCiAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgTG9ja1R5cGUgbWFzayA9IGlzSGVsZEJpdCB8IGhhc1BhcmtlZEJpdDsNCg0KcHVibGljOg0K
ICAgIHN0YXRpYyBib29sIGxvY2tGYXN0QXNzdW1pbmdaZXJvKEF0b21pYzxMb2NrVHlwZT4mIGxv
Y2spDQogICAgew0KICAgICAgICByZXR1cm4gbG9jay5jb21wYXJlRXhjaGFuZ2VXZWFrKDAsIEhv
b2tzOjpsb2NrSG9vayhpc0hlbGRCaXQpLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsNCiAg
ICB9DQogICAgDQogICAgc3RhdGljIGJvb2wgbG9ja0Zhc3QoQXRvbWljPExvY2tUeXBlPiYgbG9j
aykNCiAgICB7DQogICAgICAgIHJldHVybiBsb2NrLnRyYW5zYWN0aW9uKA0KICAgICAgICAgICAg
WyZdIChMb2NrVHlwZSYgdmFsdWUpIC0+IGJvb2wgew0KICAgICAgICAgICAgICAgIGlmICh2YWx1
ZSAmIGlzSGVsZEJpdCkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAg
ICAgICAgICAgIHZhbHVlIHw9IGlzSGVsZEJpdDsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IEhv
b2tzOjpsb2NrSG9vayh2YWx1ZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAg
ICAgICAgICB9LA0KICAgICAgICAgICAgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7DQogICAg
fQ0KICAgIA0KICAgIHN0YXRpYyB2b2lkIGxvY2soQXRvbWljPExvY2tUeXBlPiYgbG9jaykNCiAg
ICB7DQogICAgICAgIGlmICgoIWxvY2tGYXN0KGxvY2spKSkNCiAgICAgICAgICAgIGxvY2tTbG93
KGxvY2spOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCB0cnlMb2NrKEF0b21pYzxMb2Nr
VHlwZT4mIGxvY2spDQogICAgew0KICAgICAgICBmb3IgKDs7KSB7DQogICAgICAgICAgICBMb2Nr
VHlwZSBjdXJyZW50VmFsdWUgPSBsb2NrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7
DQogICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICYgaXNIZWxkQml0KQ0KICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIGlmIChsb2NrLmNvbXBhcmVFeGNoYW5nZVdl
YWsoY3VycmVudFZhbHVlLCBIb29rczo6bG9ja0hvb2soY3VycmVudFZhbHVlIHwgaXNIZWxkQml0
KSwgc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBzdGF0aWMgYm9vbCB1bmxvY2tGYXN0QXNzdW1p
bmdaZXJvKEF0b21pYzxMb2NrVHlwZT4mIGxvY2spDQogICAgew0KICAgICAgICByZXR1cm4gbG9j
ay5jb21wYXJlRXhjaGFuZ2VXZWFrKGlzSGVsZEJpdCwgSG9va3M6OnVubG9ja0hvb2soMCksIHN0
ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCB1
bmxvY2tGYXN0KEF0b21pYzxMb2NrVHlwZT4mIGxvY2spDQogICAgew0KICAgICAgICByZXR1cm4g
bG9jay50cmFuc2FjdGlvbigNCiAgICAgICAgICAgIFsmXSAoTG9ja1R5cGUmIHZhbHVlKSAtPiBi
b29sIHsNCiAgICAgICAgICAgICAgICBpZiAoKHZhbHVlICYgbWFzaykgIT0gaXNIZWxkQml0KQ0K
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgdmFsdWUg
Jj0gfmlzSGVsZEJpdDsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IEhvb2tzOjp1bmxvY2tIb29r
KHZhbHVlKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0sDQog
ICAgICAgICAgICBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsNCiAgICB9DQogICAgDQogICAg
c3RhdGljIHZvaWQgdW5sb2NrKEF0b21pYzxMb2NrVHlwZT4mIGxvY2spDQogICAgew0KICAgICAg
ICBpZiAoKCF1bmxvY2tGYXN0KGxvY2spKSkNCiAgICAgICAgICAgIHVubG9ja1Nsb3cobG9jaywg
VW5mYWlyKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHZvaWQgdW5sb2NrRmFpcmx5KEF0b21p
YzxMb2NrVHlwZT4mIGxvY2spDQogICAgew0KICAgICAgICBpZiAoKCF1bmxvY2tGYXN0KGxvY2sp
KSkNCiAgICAgICAgICAgIHVubG9ja1Nsb3cobG9jaywgRmFpcik7DQogICAgfQ0KICAgIA0KICAg
IHN0YXRpYyBib29sIHNhZmVwb2ludEZhc3QoY29uc3QgQXRvbWljPExvY2tUeXBlPiYgbG9jaykN
CiAgICB7DQogICAgICAgIFdURjo6Y29tcGlsZXJGZW5jZSgpOw0KICAgICAgICByZXR1cm4gIShs
b2NrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkgJiBoYXNQYXJrZWRCaXQpOw0KICAg
IH0NCiAgICANCiAgICBzdGF0aWMgdm9pZCBzYWZlcG9pbnQoQXRvbWljPExvY2tUeXBlPiYgbG9j
aykNCiAgICB7DQogICAgICAgIGlmICgoIXNhZmVwb2ludEZhc3QobG9jaykpKQ0KICAgICAgICAg
ICAgc2FmZXBvaW50U2xvdyhsb2NrKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGJvb2wgaXNM
b2NrZWQoY29uc3QgQXRvbWljPExvY2tUeXBlPiYgbG9jaykNCiAgICB7DQogICAgICAgIHJldHVy
biBsb2NrLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkgJiBpc0hlbGRCaXQ7DQogICAg
fQ0KICAgIA0KICAgIF9fZGVjbHNwZWMobm9pbmxpbmUpIHN0YXRpYyB2b2lkIGxvY2tTbG93KEF0
b21pYzxMb2NrVHlwZT4mIGxvY2spOw0KICAgIA0KICAgIGVudW0gRmFpcm5lc3Mgew0KICAgICAg
ICBVbmZhaXIsDQogICAgICAgIEZhaXINCiAgICB9Ow0KICAgIF9fZGVjbHNwZWMobm9pbmxpbmUp
IHN0YXRpYyB2b2lkIHVubG9ja1Nsb3coQXRvbWljPExvY2tUeXBlPiYgbG9jaywgRmFpcm5lc3Mg
ZmFpcm5lc3MgPSBVbmZhaXIpOw0KICAgIA0KICAgIF9fZGVjbHNwZWMobm9pbmxpbmUpIHN0YXRp
YyB2b2lkIHNhZmVwb2ludFNsb3coQXRvbWljPExvY2tUeXBlPiYgbG9ja1dvcmQpDQogICAgew0K
ICAgICAgICB1bmxvY2tGYWlybHkobG9ja1dvcmQpOw0KICAgICAgICBsb2NrKGxvY2tXb3JkKTsN
CiAgICB9DQogICAgDQpwcml2YXRlOg0KICAgIGVudW0gVG9rZW4gew0KICAgICAgICBCYXJnaW5n
T3Bwb3J0dW5pdHksDQogICAgICAgIERpcmVjdEhhbmRvZmYNCiAgICB9Ow0KfTsNCg0KfSANCg0K
dXNpbmcgV1RGOjpMb2NrQWxnb3JpdGhtOw0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0xvY2suaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0xv
Y2tlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQplbnVt
IE5vTG9ja2luZ05lY2Vzc2FyeVRhZyB7IE5vTG9ja2luZ05lY2Vzc2FyeSB9Ow0KDQpjbGFzcyBB
YnN0cmFjdExvY2tlciB7DQogICAgQWJzdHJhY3RMb2NrZXIoY29uc3QgQWJzdHJhY3RMb2NrZXIm
KSA9IGRlbGV0ZTsgQWJzdHJhY3RMb2NrZXImIG9wZXJhdG9yPShjb25zdCBBYnN0cmFjdExvY2tl
ciYpID0gZGVsZXRlOzsNCnB1YmxpYzoNCiAgICBBYnN0cmFjdExvY2tlcihOb0xvY2tpbmdOZWNl
c3NhcnlUYWcpDQogICAgew0KICAgIH0NCiAgICANCnByb3RlY3RlZDoNCiAgICBBYnN0cmFjdExv
Y2tlcigpDQogICAgew0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBM
b2NrZXIgOiBwdWJsaWMgQWJzdHJhY3RMb2NrZXIgew0KcHVibGljOg0KICAgIGV4cGxpY2l0IExv
Y2tlcihUJiBsb2NrYWJsZSkgOiBtX2xvY2thYmxlKCZsb2NrYWJsZSkgeyBsb2NrKCk7IH0NCiAg
ICBleHBsaWNpdCBMb2NrZXIoVCogbG9ja2FibGUpIDogbV9sb2NrYWJsZShsb2NrYWJsZSkgeyBs
b2NrKCk7IH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIExvY2tlcihOb0xv
Y2tpbmdOZWNlc3NhcnlUYWcpIDogbV9sb2NrYWJsZShudWxscHRyKSB7IH0NCiAgICANCiAgICBM
b2NrZXIoaW50KSA9IGRlbGV0ZTsNCg0KICAgIH5Mb2NrZXIoKQ0KICAgIHsNCiAgICAgICAgY29t
cGlsZXJGZW5jZSgpOw0KICAgICAgICBpZiAobV9sb2NrYWJsZSkNCiAgICAgICAgICAgIG1fbG9j
a2FibGUtPnVubG9jaygpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgTG9ja2VyIHRyeUxvY2so
VCYgbG9ja2FibGUpDQogICAgew0KICAgICAgICBMb2NrZXIgcmVzdWx0KE5vTG9ja2luZ05lY2Vz
c2FyeSk7DQogICAgICAgIGlmIChsb2NrYWJsZS50cnlMb2NrKCkpIHsNCiAgICAgICAgICAgIHJl
c3VsdC5tX2xvY2thYmxlID0gJmxvY2thYmxlOw0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsN
CiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCiAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2xvY2thYmxlOyB9DQogICAg
DQogICAgdm9pZCB1bmxvY2tFYXJseSgpDQogICAgew0KICAgICAgICBtX2xvY2thYmxlLT51bmxv
Y2soKTsNCiAgICAgICAgbV9sb2NrYWJsZSA9IDA7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0K
ICAgIExvY2tlcihMb2NrZXImJiBvdGhlcikNCiAgICAgICAgOiBtX2xvY2thYmxlKG90aGVyLm1f
bG9ja2FibGUpDQogICAgew0KICAgICAgICBvdGhlci5tX2xvY2thYmxlID0gbnVsbHB0cjsNCiAg
ICB9DQogICAgDQogICAgTG9ja2VyJiBvcGVyYXRvcj0oTG9ja2VyJiYgb3RoZXIpDQogICAgew0K
ICAgICAgICBpZiAobV9sb2NrYWJsZSkNCiAgICAgICAgICAgIG1fbG9ja2FibGUtPnVubG9jaygp
Ow0KICAgICAgICBtX2xvY2thYmxlID0gb3RoZXIubV9sb2NrYWJsZTsNCiAgICAgICAgb3RoZXIu
bV9sb2NrYWJsZSA9IG51bGxwdHI7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQogICAg
DQpwcml2YXRlOg0KICAgIHZvaWQgbG9jaygpDQogICAgew0KICAgICAgICBpZiAobV9sb2NrYWJs
ZSkNCiAgICAgICAgICAgIG1fbG9ja2FibGUtPmxvY2soKTsNCiAgICAgICAgY29tcGlsZXJGZW5j
ZSgpOw0KICAgIH0NCiAgICANCiAgICBUKiBtX2xvY2thYmxlOw0KfTsNCg0KDQoNCnRlbXBsYXRl
PHR5cGVuYW1lIExvY2tUeXBlPg0KTG9ja2VyPExvY2tUeXBlPiBob2xkTG9jayhMb2NrVHlwZSYp
IDsNCnRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPg0KTG9ja2VyPExvY2tUeXBlPiBob2xkTG9j
ayhMb2NrVHlwZSYgbG9jaykNCnsNCiAgICByZXR1cm4gTG9ja2VyPExvY2tUeXBlPihsb2NrKTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+DQpMb2NrZXI8TG9ja1R5cGU+IGhvbGRM
b2NrSWYoTG9ja1R5cGUmLCBib29sIHByZWRpY2F0ZSkgOw0KdGVtcGxhdGU8dHlwZW5hbWUgTG9j
a1R5cGU+DQpMb2NrZXI8TG9ja1R5cGU+IGhvbGRMb2NrSWYoTG9ja1R5cGUmIGxvY2ssIGJvb2wg
cHJlZGljYXRlKQ0Kew0KICAgIHJldHVybiBMb2NrZXI8TG9ja1R5cGU+KHByZWRpY2F0ZSA/ICZs
b2NrIDogbnVsbHB0cik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPg0KTG9ja2Vy
PExvY2tUeXBlPiB0cnlIb2xkTG9jayhMb2NrVHlwZSYpIDsNCnRlbXBsYXRlPHR5cGVuYW1lIExv
Y2tUeXBlPg0KTG9ja2VyPExvY2tUeXBlPiB0cnlIb2xkTG9jayhMb2NrVHlwZSYgbG9jaykNCnsN
CiAgICByZXR1cm4gTG9ja2VyPExvY2tUeXBlPjo6dHJ5TG9jayhsb2NrKTsNCn0NCg0KfQ0KDQp1
c2luZyBXVEY6OkFic3RyYWN0TG9ja2VyOw0KdXNpbmcgV1RGOjpMb2NrZXI7DQp1c2luZyBXVEY6
Ok5vTG9ja2luZ05lY2Vzc2FyeVRhZzsNCnVzaW5nIFdURjo6Tm9Mb2NraW5nTmVjZXNzYXJ5Ow0K
dXNpbmcgV1RGOjpob2xkTG9jazsNCnVzaW5nIFdURjo6aG9sZExvY2tJZjsNCiNsaW5lIDMwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9M
b2NrLmgiDQoNCg0KbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgew0Kc3RydWN0IExvY2tJbnNwZWN0
b3I7DQp9DQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0eXBlZGVmIExvY2tBbGdvcml0aG08dWludDhf
dCwgMSwgMj4gRGVmYXVsdExvY2tBbGdvcml0aG07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KY2xh
c3MgTG9jayB7DQogICAgTG9jayhjb25zdCBMb2NrJikgPSBkZWxldGU7IExvY2smIG9wZXJhdG9y
PShjb25zdCBMb2NrJikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZh
dGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBp
bnQ7DQpwdWJsaWM6DQogICAgY29uc3RleHByIExvY2soKSA9IGRlZmF1bHQ7DQoNCiAgICB2b2lk
IGxvY2soKQ0KICAgIHsNCiAgICAgICAgaWYgKCghRGVmYXVsdExvY2tBbGdvcml0aG06OmxvY2tG
YXN0QXNzdW1pbmdaZXJvKG1fYnl0ZSkpKQ0KICAgICAgICAgICAgbG9ja1Nsb3coKTsNCiAgICB9
DQoNCiAgICBib29sIHRyeUxvY2soKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIERlZmF1bHRMb2Nr
QWxnb3JpdGhtOjp0cnlMb2NrKG1fYnl0ZSk7DQogICAgfQ0KDQogICAgDQogICAgYm9vbCB0cnlf
bG9jaygpDQogICAgew0KICAgICAgICByZXR1cm4gdHJ5TG9jaygpOw0KICAgIH0NCg0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZvaWQgdW5sb2Nr
KCkNCiAgICB7DQogICAgICAgIGlmICgoIURlZmF1bHRMb2NrQWxnb3JpdGhtOjp1bmxvY2tGYXN0
QXNzdW1pbmdaZXJvKG1fYnl0ZSkpKQ0KICAgICAgICAgICAgdW5sb2NrU2xvdygpOw0KICAgIH0N
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZvaWQgdW5sb2NrRmFpcmx5KCkN
CiAgICB7DQogICAgICAgIGlmICgoIURlZmF1bHRMb2NrQWxnb3JpdGhtOjp1bmxvY2tGYXN0QXNz
dW1pbmdaZXJvKG1fYnl0ZSkpKQ0KICAgICAgICAgICAgdW5sb2NrRmFpcmx5U2xvdygpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIHNhZmVwb2ludCgpDQogICAgew0KICAgICAgICBpZiAoKCFEZWZh
dWx0TG9ja0FsZ29yaXRobTo6c2FmZXBvaW50RmFzdChtX2J5dGUpKSkNCiAgICAgICAgICAgIHNh
ZmVwb2ludFNsb3coKTsNCiAgICB9DQoNCiAgICBib29sIGlzSGVsZCgpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gRGVmYXVsdExvY2tBbGdvcml0aG06OmlzTG9ja2VkKG1fYnl0ZSk7DQog
ICAgfQ0KDQogICAgYm9vbCBpc0xvY2tlZCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4g
aXNIZWxkKCk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBzdHJ1Y3QgVGVzdFdlYktp
dEFQSTo6TG9ja0luc3BlY3RvcjsNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qg
aXNIZWxkQml0ID0gMTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgaGFzUGFya2VkQml0
ID0gMjsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBsb2NrU2xvdygpOw0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHVubG9ja1Nsb3coKTsNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCB1bmxvY2tGYWlybHlTbG93KCk7DQogICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIHZvaWQgc2FmZXBvaW50U2xvdygpOw0KDQogICAgDQogICAgYm9vbCBpc0Z1bGx5
UmVzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICFtX2J5dGUubG9hZCgpOw0KICAg
IH0NCg0KICAgIEF0b21pYzx1aW50OF90PiBtX2J5dGUgeyAwIH07DQp9Ow0KDQp1c2luZyBMb2Nr
SG9sZGVyID0gTG9ja2VyPExvY2s+Ow0KDQp9IA0KDQp1c2luZyBXVEY6OkxvY2s7DQp1c2luZyBX
VEY6OkxvY2tIb2xkZXI7DQojbGluZSAzOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEV4ZWN1dGFibGVBbGxvY2F0b3IuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L01ldGFBbGxvY2F0b3JIYW5kbGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWV0YUFs
bG9jYXRvclB0ci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRyYWl0cy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9IYXNoRnVuY3Rpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KICAgIHRl
bXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgSW50VHlwZXM7DQogICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSW50VHlwZXM8MT4geyB0eXBlZGVmIGludDhfdCBTaWduZWRUeXBlOyB0eXBlZGVmIHVpbnQ4
X3QgVW5zaWduZWRUeXBlOyB9Ow0KICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDI+IHsg
dHlwZWRlZiBpbnQxNl90IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDE2X3QgVW5zaWduZWRUeXBl
OyB9Ow0KICAgIHRlbXBsYXRlPD4gc3RydWN0IEludFR5cGVzPDQ+IHsgdHlwZWRlZiBpbnQzMl90
IFNpZ25lZFR5cGU7IHR5cGVkZWYgdWludDMyX3QgVW5zaWduZWRUeXBlOyB9Ow0KICAgIHRlbXBs
YXRlPD4gc3RydWN0IEludFR5cGVzPDg+IHsgdHlwZWRlZiBpbnQ2NF90IFNpZ25lZFR5cGU7IHR5
cGVkZWYgdWludDY0X3QgVW5zaWduZWRUeXBlOyB9Ow0KDQogICAgDQoNCiAgICANCiAgICBpbmxp
bmUgdW5zaWduZWQgaW50SGFzaCh1aW50OF90IGtleTgpDQogICAgew0KICAgICAgICB1bnNpZ25l
ZCBrZXkgPSBrZXk4Ow0KICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTUpOw0KICAgICAgICBrZXkg
Xj0gKGtleSA+PiAxMCk7DQogICAgICAgIGtleSArPSAoa2V5IDw8IDMpOw0KICAgICAgICBrZXkg
Xj0gKGtleSA+PiA2KTsNCiAgICAgICAga2V5ICs9IH4oa2V5IDw8IDExKTsNCiAgICAgICAga2V5
IF49IChrZXkgPj4gMTYpOw0KICAgICAgICByZXR1cm4ga2V5Ow0KICAgIH0NCg0KICAgIA0KICAg
IGlubGluZSB1bnNpZ25lZCBpbnRIYXNoKHVpbnQxNl90IGtleTE2KQ0KICAgIHsNCiAgICAgICAg
dW5zaWduZWQga2V5ID0ga2V5MTY7DQogICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7DQogICAg
ICAgIGtleSBePSAoa2V5ID4+IDEwKTsNCiAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7DQogICAg
ICAgIGtleSBePSAoa2V5ID4+IDYpOw0KICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOw0KICAg
ICAgICBrZXkgXj0gKGtleSA+PiAxNik7DQogICAgICAgIHJldHVybiBrZXk7DQogICAgfQ0KDQog
ICAgDQogICAgaW5saW5lIHVuc2lnbmVkIGludEhhc2godWludDMyX3Qga2V5KSANCiAgICB7DQog
ICAgICAgIGtleSArPSB+KGtleSA8PCAxNSk7DQogICAgICAgIGtleSBePSAoa2V5ID4+IDEwKTsN
CiAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7DQogICAgICAgIGtleSBePSAoa2V5ID4+IDYpOw0K
ICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTEpOw0KICAgICAgICBrZXkgXj0gKGtleSA+PiAxNik7
DQogICAgICAgIHJldHVybiBrZXk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIGlubGluZSB1bnNp
Z25lZCBpbnRIYXNoKHVpbnQ2NF90IGtleSkNCiAgICB7DQogICAgICAgIGtleSArPSB+KGtleSA8
PCAzMik7DQogICAgICAgIGtleSBePSAoa2V5ID4+IDIyKTsNCiAgICAgICAga2V5ICs9IH4oa2V5
IDw8IDEzKTsNCiAgICAgICAga2V5IF49IChrZXkgPj4gOCk7DQogICAgICAgIGtleSArPSAoa2V5
IDw8IDMpOw0KICAgICAgICBrZXkgXj0gKGtleSA+PiAxNSk7DQogICAgICAgIGtleSArPSB+KGtl
eSA8PCAyNyk7DQogICAgICAgIGtleSBePSAoa2V5ID4+IDMxKTsNCiAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihrZXkpOw0KICAgIH0NCg0KICAgIA0KICAgIGlubGluZSB1bnNp
Z25lZCBwYWlySW50SGFzaCh1bnNpZ25lZCBrZXkxLCB1bnNpZ25lZCBrZXkyKQ0KICAgIHsNCiAg
ICAgICAgdW5zaWduZWQgc2hvcnRSYW5kb20xID0gMjc3OTUxMjI1OyANCiAgICAgICAgdW5zaWdu
ZWQgc2hvcnRSYW5kb20yID0gOTUxODc5NjY7IA0KICAgICAgICB1aW50NjRfdCBsb25nUmFuZG9t
ID0gMTkyNDg2NTgxNjU5NTI2MjJMTDsgDQoNCiAgICAgICAgdWludDY0X3QgcHJvZHVjdCA9IGxv
bmdSYW5kb20gKiAoc2hvcnRSYW5kb20xICoga2V5MSArIHNob3J0UmFuZG9tMiAqIGtleTIpOw0K
ICAgICAgICB1bnNpZ25lZCBoaWdoQml0cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwcm9kdWN0
ID4+IChzaXplb2YodWludDY0X3QpIC0gc2l6ZW9mKHVuc2lnbmVkKSkpOw0KICAgICAgICByZXR1
cm4gaGlnaEJpdHM7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElu
dEhhc2ggew0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChUIGtleSkgeyByZXR1cm4gaW50
SGFzaChzdGF0aWNfY2FzdDx0eXBlbmFtZSBJbnRUeXBlczxzaXplb2YoVCk+OjpVbnNpZ25lZFR5
cGU+KGtleSkpOyB9DQogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKFQgYSwgVCBiKSB7IHJldHVy
biBhID09IGI7IH0NCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEZsb2F0SGFzaCB7DQogICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW50VHlwZXM8
c2l6ZW9mKFQpPjo6VW5zaWduZWRUeXBlIEJpdHM7DQogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKFQga2V5KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gaW50SGFzaChiaXR3aXNl
X2Nhc3Q8Qml0cz4oa2V5KSk7DQogICAgICAgIH0NCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwo
VCBhLCBUIGIpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Qml0
cz4oYSkgPT0gYml0d2lzZV9jYXN0PEJpdHM+KGIpOw0KICAgICAgICB9DQogICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7DQog
ICAgfTsNCg0KICAgIA0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgYm9vbCBpc1NtYXJ0UG9p
bnRlcj4gDQogICAgc3RydWN0IFB0ckhhc2hCYXNlOw0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+DQogICAgc3RydWN0IFB0ckhhc2hCYXNlPFQsIGZhbHNlID4gew0KICAgICAgICB0eXBlZGVm
IFQgUHRyVHlwZTsgDQoNCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goUHRyVHlwZSBrZXkp
IHsgcmV0dXJuIEludEhhc2g8dWludHB0cl90Pjo6aGFzaChyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oa2V5KSk7IH0NCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoUHRyVHlwZSBhLCBQdHJU
eXBlIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOw0KICAgIH07DQoNCiAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4NCiAgICBzdHJ1Y3QgUHRySGFzaEJhc2U8VCwgdHJ1ZSA+IHsNCiAg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBHZXRQdHJIZWxwZXI8VD46OlB0clR5cGUgUHRyVHlwZTsg
DQoNCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goUHRyVHlwZSBrZXkpIHsgcmV0dXJuIElu
dEhhc2g8dWludHB0cl90Pjo6aGFzaChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oa2V5KSk7
IH0NCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoUHRyVHlwZSBhLCBQdHJUeXBlIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQ0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOw0KDQogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFQmIGtleSkgeyByZXR1cm4gaGFzaChnZXRQdHIoa2V5KSk7IH0NCiAgICAgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVCYgYikgeyByZXR1cm4gZ2V0UHRyKGEp
ID09IGdldFB0cihiKTsgfQ0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChQdHJUeXBlIGEsIGNv
bnN0IFQmIGIpIHsgcmV0dXJuIGEgPT0gZ2V0UHRyKGIpOyB9DQogICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFQmIGEsIFB0clR5cGUgYikgeyByZXR1cm4gZ2V0UHRyKGEpID09IGI7IH0N
CiAgICB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFB0ckhhc2ggOiBQdHJI
YXNoQmFzZTxULCBJc1NtYXJ0UHRyPFQ+Ojp2YWx1ZT4gew0KICAgIH07DQoNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgUHRySGFzaDxSZWY8UD4+IDogUHRySGFzaEJhc2U8UmVmPFA+
LCBJc1NtYXJ0UHRyPFJlZjxQPj46OnZhbHVlPiB7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOw0KICAgIH07DQoNCiAg
ICANCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsNCg0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBQYWlySGFzaCB7DQogICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IHN0ZDo6cGFpcjxULCBVPiYgcCkNCiAgICAg
ICAgew0KICAgICAgICAgICAgcmV0dXJuIHBhaXJJbnRIYXNoKERlZmF1bHRIYXNoPFQ+OjpoYXNo
KHAuZmlyc3QpLCBEZWZhdWx0SGFzaDxVPjo6aGFzaChwLnNlY29uZCkpOw0KICAgICAgICB9DQog
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjxULCBVPiYgYSwgY29uc3Qg
c3RkOjpwYWlyPFQsIFU+JiBiKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVmYXVs
dEhhc2g8VD46OmVxdWFsKGEuZmlyc3QsIGIuZmlyc3QpICYmIERlZmF1bHRIYXNoPFU+OjplcXVh
bChhLnNlY29uZCwgYi5zZWNvbmQpOw0KICAgICAgICB9DQogICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IERlZmF1bHRIYXNoPFQ+Ojpz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCAmJiBEZWZhdWx0SGFzaDxVPjo6c2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQ7DQogICAgfTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IHN0cnVjdCBJbnRQYWlySGFzaCB7DQogICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IHN0ZDo6cGFpcjxULCBVPiYgcCkgeyByZXR1cm4gcGFpckludEhhc2gocC5m
aXJzdCwgcC5zZWNvbmQpOyB9DQogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6
cGFpcjxULCBVPiYgYSwgY29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBiKSB7IHJldHVybiBQYWlySGFz
aDxULCBUPjo6ZXF1YWwoYSwgYik7IH0NCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gUGFpckhhc2g8VCwgVT46OnNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkOw0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
eXBlcz4NCiAgICBzdHJ1Y3QgVHVwbGVIYXNoIHsNCiAgICAgICAgdGVtcGxhdGU8c2l6ZV90IEkg
PSAwPg0KICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA8IHNpemVvZi4u
LihUeXBlcykgLSAxLCB1bnNpZ25lZD46OnR5cGUgaGFzaChjb25zdCBzdGQ6OnR1cGxlPFR5cGVz
Li4uPiYgdCkNCiAgICAgICAgew0KICAgICAgICAgICAgdXNpbmcgSXRoVHVwbGVFbGVtZW50VHlw
ZSA9IHR5cGVuYW1lIHN0ZDo6dHVwbGVfZWxlbWVudDxJLCB0eXBlbmFtZSBzdGQ6OnR1cGxlPFR5
cGVzLi4uPj46OnR5cGU7DQogICAgICAgICAgICByZXR1cm4gcGFpckludEhhc2goRGVmYXVsdEhh
c2g8SXRoVHVwbGVFbGVtZW50VHlwZT46Omhhc2goc3RkOjpnZXQ8ST4odCkpLCBoYXNoPEkgKyAx
Pih0KSk7DQogICAgICAgIH0NCg0KICAgICAgICB0ZW1wbGF0ZTxzaXplX3QgSSA9IDA+DQogICAg
ICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJID09IHNpemVvZi4uLihUeXBlcykg
LSAxLCB1bnNpZ25lZD46OnR5cGUgaGFzaChjb25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgdCkN
CiAgICAgICAgew0KICAgICAgICAgICAgdXNpbmcgSXRoVHVwbGVFbGVtZW50VHlwZSA9IHR5cGVu
YW1lIHN0ZDo6dHVwbGVfZWxlbWVudDxJLCB0eXBlbmFtZSBzdGQ6OnR1cGxlPFR5cGVzLi4uPj46
OnR5cGU7DQogICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8SXRoVHVwbGVFbGVtZW50VHlw
ZT46Omhhc2goc3RkOjpnZXQ8ST4odCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgdGVtcGxhdGU8
c2l6ZV90IEkgPSAwPg0KICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA8
IHNpemVvZi4uLihUeXBlcykgLSAxLCBib29sPjo6dHlwZSBlcXVhbChjb25zdCBzdGQ6OnR1cGxl
PFR5cGVzLi4uPiYgYSwgY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4mIGIpDQogICAgICAgIHsN
CiAgICAgICAgICAgIHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnR1
cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBlcy4uLj4+Ojp0eXBlOw0KICAg
ICAgICAgICAgcmV0dXJuIERlZmF1bHRIYXNoPEl0aFR1cGxlRWxlbWVudFR5cGU+OjplcXVhbChz
dGQ6OmdldDxJPihhKSwgc3RkOjpnZXQ8ST4oYikpICYmIGVxdWFsPEkgKyAxPihhLCBiKTsNCiAg
ICAgICAgfQ0KDQogICAgICAgIHRlbXBsYXRlPHNpemVfdCBJID0gMD4NCiAgICAgICAgc3RhdGlj
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEkgPT0gc2l6ZW9mLi4uKFR5cGVzKSAtIDEsIGJvb2w+
Ojp0eXBlIGVxdWFsKGNvbnN0IHN0ZDo6dHVwbGU8VHlwZXMuLi4+JiBhLCBjb25zdCBzdGQ6OnR1
cGxlPFR5cGVzLi4uPiYgYikNCiAgICAgICAgew0KICAgICAgICAgICAgdXNpbmcgSXRoVHVwbGVF
bGVtZW50VHlwZSA9IHR5cGVuYW1lIHN0ZDo6dHVwbGVfZWxlbWVudDxJLCB0eXBlbmFtZSBzdGQ6
OnR1cGxlPFR5cGVzLi4uPj46OnR5cGU7DQogICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8
SXRoVHVwbGVFbGVtZW50VHlwZT46OmVxdWFsKHN0ZDo6Z2V0PEk+KGEpLCBzdGQ6OmdldDxJPihi
KSk7DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEJvb2xUeXBlPg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgYWxsVHJ1ZShC
b29sVHlwZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0NCiAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQm9vbFR5cGUsIHR5cGVuYW1lLi4uIEJvb2xUeXBlcz4NCiAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGFsbFRydWUoQm9vbFR5cGUgdmFsdWUsIEJvb2xUeXBlcy4uLiB2YWx1ZXMpIHsg
cmV0dXJuIHZhbHVlICYmIGFsbFRydWUodmFsdWVzLi4uKTsgfQ0KICAgICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBhbGxUcnVlKERlZmF1
bHRIYXNoPFR5cGVzPjo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQuLi4pOw0KICAgIH07
DQoNCiAgICANCg0KICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPGJvb2w+IDogSW50
SGFzaDx1aW50OF90PiB7IH07DQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dWlu
dDhfdD4gOiBJbnRIYXNoPHVpbnQ4X3Q+IHsgfTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxzaG9ydD4gOiBJbnRIYXNoPHVuc2lnbmVkPiB7IH07DQogICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWduZWQgc2hvcnQ+IDogSW50SGFzaDx1bnNpZ25lZD4geyB9
Ow0KICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPGludD4gOiBJbnRIYXNoPHVuc2ln
bmVkPiB7IH07DQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8dW5zaWduZWQ+IDog
SW50SGFzaDx1bnNpZ25lZD4geyB9Ow0KICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PGxvbmc+IDogSW50SGFzaDx1bnNpZ25lZCBsb25nPiB7IH07DQogICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8dW5zaWduZWQgbG9uZz4gOiBJbnRIYXNoPHVuc2lnbmVkIGxvbmc+IHsg
fTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxsb25nIGxvbmc+IDogSW50SGFz
aDx1bnNpZ25lZCBsb25nIGxvbmc+IHsgfTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDx1bnNpZ25lZCBsb25nIGxvbmc+IDogSW50SGFzaDx1bnNpZ25lZCBsb25nIGxvbmc+IHsg
fTsNCg0KDQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8d2NoYXJfdD4gOiBJbnRI
YXNoPHdjaGFyX3Q+IHsgfTsNCiNsaW5lIDIzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaEZ1bmN0aW9ucy5oIg0KDQogICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8ZmxvYXQ+IDogRmxvYXRIYXNoPGZsb2F0PiB7IH07
DQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8ZG91YmxlPiA6IEZsb2F0SGFzaDxk
b3VibGU+IHsgfTsNCg0KICAgIA0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IERl
ZmF1bHRIYXNoPFAqPiA6IFB0ckhhc2g8UCo+IHsgfTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmVmUHRyPFA+PiA6IFB0ckhhc2g8UmVmUHRyPFA+PiB7IH07
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IERlZmF1bHRIYXNoPFJlZjxQPj4gOiBQ
dHJIYXNoPFJlZjxQPj4geyB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgUCwgdHlwZW5hbWUg
RGVsZXRlcj4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6dW5pcXVlX3B0cjxQLCBEZWxldGVyPj4g
OiBQdHJIYXNoPHN0ZDo6dW5pcXVlX3B0cjxQLCBEZWxldGVyPj4geyB9Ow0KDQoNCg0KDQoNCiAg
ICANCg0KICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxzaG9ydCwg
c2hvcnQ+PiA6IEludFBhaXJIYXNoPHNob3J0LCBzaG9ydD4geyB9Ow0KICAgIHRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxzaG9ydCwgdW5zaWduZWQgc2hvcnQ+PiA6IElu
dFBhaXJIYXNoPHNob3J0LCB1bnNpZ25lZCBzaG9ydD4geyB9Ow0KICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxzaG9ydCwgaW50Pj4gOiBJbnRQYWlySGFzaDxzaG9y
dCwgaW50PiB7IH07DQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWly
PHNob3J0LCB1bnNpZ25lZD4+IDogSW50UGFpckhhc2g8c2hvcnQsIHVuc2lnbmVkPiB7IH07DQog
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0
LCBzaG9ydD4+IDogSW50UGFpckhhc2g8dW5zaWduZWQgc2hvcnQsIHNob3J0PiB7IH07DQogICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCB1
bnNpZ25lZCBzaG9ydD4+IDogSW50UGFpckhhc2g8dW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNo
b3J0PiB7IH07DQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVu
c2lnbmVkIHNob3J0LCBpbnQ+PiA6IEludFBhaXJIYXNoPHVuc2lnbmVkIHNob3J0LCBpbnQ+IHsg
fTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQg
c2hvcnQsIHVuc2lnbmVkPj4gOiBJbnRQYWlySGFzaDx1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQ+
IHsgfTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8aW50LCBz
aG9ydD4+IDogSW50UGFpckhhc2g8aW50LCBzaG9ydD4geyB9Ow0KICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxpbnQsIHVuc2lnbmVkIHNob3J0Pj4gOiBJbnRQYWly
SGFzaDxpbnQsIHVuc2lnbmVkIHNob3J0PiB7IH07DQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8c3RkOjpwYWlyPGludCwgaW50Pj4gOiBJbnRQYWlySGFzaDxpbnQsIGludD4geyB9
Ow0KICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxpbnQsIHVuc2ln
bmVkPj4gOiBJbnRQYWlySGFzaDx1bnNpZ25lZCwgdW5zaWduZWQ+IHsgfTsNCiAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQsIHNob3J0Pj4gOiBJbnRQ
YWlySGFzaDx1bnNpZ25lZCwgc2hvcnQ+IHsgfTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkIHNob3J0Pj4gOiBJbnRQYWlySGFz
aDx1bnNpZ25lZCwgdW5zaWduZWQgc2hvcnQ+IHsgfTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQsIGludD4+IDogSW50UGFpckhhc2g8dW5zaWdu
ZWQsIGludD4geyB9Ow0KICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+PiA6IEludFBhaXJIYXNoPHVuc2lnbmVkLCB1bnNpZ25lZD4g
eyB9Ow0KDQogICAgDQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPFQsIFU+PiA6IFBhaXJIYXNoPFQsIFU+IHsgfTsNCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6dHVw
bGU8VHlwZXMuLi4+PiA6IFR1cGxlSGFzaDxUeXBlcy4uLj4geyB9Ow0KDQp9IA0KDQp1c2luZyBX
VEY6OkRlZmF1bHRIYXNoOw0KdXNpbmcgV1RGOjpJbnRIYXNoOw0KdXNpbmcgV1RGOjpQdHJIYXNo
Ow0KI2xpbmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL0hhc2hUcmFpdHMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0tleVZhbHVlUGFpci5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlQXJn
LCB0eXBlbmFtZSBWYWx1ZVR5cGVBcmc+DQpzdHJ1Y3QgS2V5VmFsdWVQYWlyIHsNCiAgICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9u
KSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2Nl
ZCA9IGludDsgdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
byA9IGludDsNCg0KICAgIHVzaW5nIEtleVR5cGUgPSBLZXlUeXBlQXJnOw0KICAgIHVzaW5nIFZh
bHVlVHlwZSA9IFZhbHVlVHlwZUFyZzsNCg0KICAgIEtleVZhbHVlUGFpcigpDQogICAgew0KICAg
IH0NCg0KICAgIEtleVZhbHVlUGFpcihLZXlUeXBlQXJnJiYga2V5LCBWYWx1ZVR5cGVBcmcmJiB2
YWx1ZSkNCiAgICAgICAgOiBrZXkoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihr
ZXkpKQ0KICAgICAgICAsIHZhbHVlKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4o
dmFsdWUpKQ0KICAgIHsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBWPg0KICAgIEtleVZhbHVlUGFpcihLJiYga2V5LCBWJiYgdmFsdWUpDQogICAgICAgIDoga2V5
KHN0ZDo6Zm9yd2FyZDxLPihrZXkpKQ0KICAgICAgICAsIHZhbHVlKHN0ZDo6Zm9yd2FyZDxWPih2
YWx1ZSkpDQogICAgew0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBWPg0KICAgIEtleVZhbHVlUGFpcihLZXlWYWx1ZVBhaXI8SywgVj4mJiBvdGhlcikNCiAgICAg
ICAgOiBrZXkoc3RkOjpmb3J3YXJkPEs+KG90aGVyLmtleSkpDQogICAgICAgICwgdmFsdWUoc3Rk
Ojpmb3J3YXJkPFY+KG90aGVyLnZhbHVlKSkNCiAgICB7DQogICAgfQ0KDQogICAgS2V5VHlwZSBr
ZXk7DQogICAgVmFsdWVUeXBlIHZhbHVlIHsgfTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEss
IHR5cGVuYW1lIFY+DQppbmxpbmUgS2V5VmFsdWVQYWlyPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8Sz46
OnR5cGUsIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8Vj46OnR5cGU+IG1ha2VLZXlWYWx1ZVBhaXIoSyYm
IGtleSwgViYmIHZhbHVlKQ0Kew0KICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgc3Rk
OjpkZWNheTxLPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpkZWNheTxWPjo6dHlwZT4geyBzdGQ6OmZv
cndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSB9Ow0KfQ0KDQp9DQoNCnVzaW5n
IFdURjo6S2V5VmFsdWVQYWlyOw0KI2xpbmUgMjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUcmFpdHMuaCINCg0KDQoNCg0KDQoN
Cg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPGJvb2wgaXNJbnRlZ2VyLCB0eXBlbmFtZSBU
PiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHNCYXNlOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHNCYXNlPGZhbHNlLCBUPiB7DQogICAgDQogICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCg0KICAgIA0KICAgIA0K
ICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9
IGZhbHNlOw0KDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0lzUmVsZWFzZWRX
ZWFrVmFsdWVGdW5jdGlvbiA9IGZhbHNlOw0KDQogICAgDQogICAgDQogICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBtaW5pbXVtVGFibGVTaXplID0gODsNCn07DQoNCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEdlbmVyaWNIYXNoVHJhaXRzQmFzZTx0cnVlLCBUPiA6IEdlbmVyaWNI
YXNoVHJhaXRzQmFzZTxmYWxzZSwgVD4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gdHJ1ZTsNCiAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoVCYgc2xvdCkgeyBzbG90ID0gc3RhdGljX2Nhc3Q8VD4oLTEpOyB9DQogICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoVCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gc3RhdGljX2Nhc3Q8
VD4oLTEpOyB9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hU
cmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUs
IFQ+IHsNCiAgICB0eXBlZGVmIFQgVHJhaXRUeXBlOw0KICAgIHR5cGVkZWYgVCBFbXB0eVZhbHVl
VHlwZTsNCg0KICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBUKCk7IH0NCg0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+IA0KICAgIHN0YXRpYyB2b2lkIGFzc2ln
blRvRW1wdHkoVSYgZW1wdHlWYWx1ZSwgViYmIHZhbHVlKQ0KICAgIHsgDQogICAgICAgIGVtcHR5
VmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUcmFpdHM+DQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RW1wdHlWYWx1ZShUJiBz
bG90KQ0KICAgIHsNCiAgICAgICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90KSkg
VChUcmFpdHM6OmVtcHR5VmFsdWUoKSk7DQogICAgfQ0KDQogICAgDQogICAgdHlwZWRlZiBUIFBl
ZWtUeXBlOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYgcGVlayhVJiYgdmFs
dWUpIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7IH0NCg0KICAgIHR5cGVkZWYgVCBU
YWtlVHlwZTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgVGFrZVR5cGUgdGFrZShV
JiYgdmFsdWUpIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7IH0NCn07DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4g
eyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRmxvYXRIYXNoVHJhaXRzIDogR2Vu
ZXJpY0hhc2hUcmFpdHM8VD4gew0KICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpOyB9DQogICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3QpIHsgc2xvdCA9IC1zdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjppbmZpbml0eSgpOyB9DQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoVCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWUgPT0gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCk7
IH0NCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8ZmxvYXQ+IDogRmxvYXRIYXNo
VHJhaXRzPGZsb2F0PiB7IH07DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPGRvdWJsZT4g
OiBGbG9hdEhhc2hUcmFpdHM8ZG91YmxlPiB7IH07DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IFVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8
VD4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7
DQogICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46Om1heCgpOyB9DQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFQmIHNs
b3QpIHsgc2xvdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIC0gMTsgfQ0KICAgIHN0
YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8VD46Om1heCgpIC0gMTsgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IFNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRz
PFQ+IHsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNl
Ow0KICAgIHN0YXRpYyBUIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PFQ+OjptaW4oKTsgfQ0KICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBz
bG90KSB7IHNsb3QgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQ0KICAgIHN0YXRp
YyBib29sIGlzRGVsZXRlZFZhbHVlKFQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8VD46Om1heCgpOyB9DQp9Ow0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBTdHJvbmdFbnVtSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsNCiAgICB1
c2luZyBVbmRlcmx5aW5nVHlwZSA9IHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0
eXBlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7
DQogICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8VW5kZXJseWluZ1R5cGU+OjptYXgoKSk7IH0NCiAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYgc2xvdCkgeyBzbG90ID0gc3RhdGljX2Nhc3Q8VD4o
c3RkOjpudW1lcmljX2xpbWl0czxVbmRlcmx5aW5nVHlwZT46Om1heCgpIC0gMSk7IH0NCiAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShUIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBzdGF0
aWNfY2FzdDxUPihzdGQ6Om51bWVyaWNfbGltaXRzPFVuZGVybHlpbmdUeXBlPjo6bWF4KCkgLSAx
KTsgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8UCo+IDog
R2VuZXJpY0hhc2hUcmFpdHM8UCo+IHsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IHRydWU7DQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFAqJiBzbG90KSB7IHNsb3QgPSByZWludGVycHJldF9jYXN0PFAqPigtMSk7IH0NCiAgICBzdGF0
aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gcmVpbnRl
cnByZXRfY2FzdDxQKj4oLTEpOyB9DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVDbGFzc0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRy
YWl0czxUPiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0
cnVlOw0KICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90KSB7IG5l
dyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2Yoc2xvdCkpIFQoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KTsgfQ0KICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9DQp9Ow0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVyPiBzdHJ1Y3QgSGFzaFRyYWl0czxzdGQ6OnVuaXF1
ZV9wdHI8VCwgRGVsZXRlcj4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPHN0ZDo6dW5pcXVlX3B0
cjxULCBEZWxldGVyPj4gew0KICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5
cGU7DQogICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxs
cHRyOyB9DQoNCiAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoc3RkOjp1bmlx
dWVfcHRyPFQsIERlbGV0ZXI+JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2Yo
c2xvdCkpIHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiB7IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+
KC0xKSB9OyB9DQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPFQsIERlbGV0ZXI+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCkgPT0gcmVpbnRl
cnByZXRfY2FzdDxUKj4oLTEpOyB9DQoNCiAgICB0eXBlZGVmIFQqIFBlZWtUeXBlOw0KICAgIHN0
YXRpYyBUKiBwZWVrKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxULCBEZWxldGVyPiYgdmFsdWUpIHsg
cmV0dXJuIHZhbHVlLmdldCgpOyB9DQogICAgc3RhdGljIFQqIHBlZWsoc3RkOjpudWxscHRyX3Qp
IHsgcmV0dXJuIG51bGxwdHI7IH0NCg0KICAgIHN0YXRpYyB2b2lkIGN1c3RvbURlbGV0ZUJ1Y2tl
dChzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4mIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICBUKiBwb2ludGVyID0gdmFsdWUucmVsZWFzZSgpOw0KICAg
ICAgICBjb25zdHJ1Y3REZWxldGVkVmFsdWUodmFsdWUpOw0KDQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgaWYgKChwb2ludGVyKSkNCiAgICAgICAgICAgIERlbGV0ZXIoKShwb2ludGVyKTsN
CiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWZQ
dHI8UD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFJlZlB0cjxQPj4gew0KICAgIHN0YXRpYyBQ
KiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQ0KDQogICAgdHlwZWRlZiBQKiBQZWVr
VHlwZTsNCiAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBSZWZQdHI8UD4mIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS5nZXQoKTsgfQ0KICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKFAqIHZhbHVl
KSB7IHJldHVybiB2YWx1ZTsgfQ0KDQogICAgc3RhdGljIHZvaWQgY3VzdG9tRGVsZXRlQnVja2V0
KFJlZlB0cjxQPiYgdmFsdWUpDQogICAgew0KICAgICAgICANCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICBhdXRvIHZhbHVlVG9CZURlc3Ryb3llZCA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4odmFsdWUpOw0KICAgICAgICBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8UmVmUHRy
PFA+Pjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKHZhbHVlKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgUmVmSGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxSZWY8UD4+IHsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7DQogICAgc3RhdGljIFJlZjxQPiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gSGFzaFRhYmxl
RW1wdHlWYWx1ZTsgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lPg0KICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdEVtcHR5VmFsdWUoUmVmPFA+JiBzbG90KQ0KICAgIHsNCiAgICAgICAgbmV3IChO
b3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90KSkgUmVmPFA+KEhhc2hUYWJsZUVtcHR5VmFsdWUp
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5j
dGlvbiA9IHRydWU7DQogICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFJlZjxQPiYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpOyB9DQoNCiAgICBz
dGF0aWMgdm9pZCBhc3NpZ25Ub0VtcHR5KFJlZjxQPiYgZW1wdHlWYWx1ZSwgUmVmPFA+JiYgbmV3
VmFsdWUpIHsgKCh2b2lkKTApOyBlbXB0eVZhbHVlLmFzc2lnblRvSGFzaFRhYmxlRW1wdHlWYWx1
ZShzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG5ld1ZhbHVlKSk7IH0NCg0KICAg
IHR5cGVkZWYgUCogUGVla1R5cGU7DQogICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgUmVm
PFA+JiB2YWx1ZSkgeyByZXR1cm4gY29uc3RfY2FzdDxQZWVrVHlwZT4odmFsdWUucHRyQWxsb3dp
bmdIYXNoVGFibGVFbXB0eVZhbHVlKCkpOyB9DQogICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoUCog
dmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9DQoNCiAgICB0eXBlZGVmIE9wdGlvbmFsPFJlZjxQPj4g
VGFrZVR5cGU7DQogICAgc3RhdGljIFRha2VUeXBlIHRha2UoUmVmPFA+JiYgdmFsdWUpIHsgcmV0
dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxSZWY8UD4+
KHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpKTsgfQ0KfTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8UmVmPFA+PiA6IFJlZkhhc2hUcmFp
dHM8UD4geyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxQYWNr
ZWQ8UCo+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxQYWNrZWQ8UCo+PiB7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsNCiAgICB1c2lu
ZyBUYXJnZXRUeXBlID0gUGFja2VkPFAqPjsNCiAgICBzdGF0aWNfYXNzZXJ0KFRhcmdldFR5cGU6
OmFsaWdubWVudCA8IDQgKiBLQiwgIlRoZSBmaXJzdCBwYWdlIGlzIGFsd2F5cyB1bm1hcHBlZCBz
aW5jZSBpdCBpbmNsdWRlcyBudWxscHRyLiIpOw0KDQogICAgc3RhdGljIFBhY2tlZDxQKj4gZW1w
dHlWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0NCiAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFs
dWUoY29uc3QgVGFyZ2V0VHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpID09IG51bGxw
dHI7IH0NCg0KICAgIHVzaW5nIFBlZWtUeXBlID0gUCo7DQogICAgc3RhdGljIFBlZWtUeXBlIHBl
ZWsoY29uc3QgVGFyZ2V0VHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9DQogICAg
c3RhdGljIFBlZWtUeXBlIHBlZWsoUCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9DQp9Ow0KDQp0
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8U3RyaW5nPiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1
bmN0aW9uID0gdHJ1ZTsNCiAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgU3RyaW5n
Jik7DQoNCiAgICBzdGF0aWMgdm9pZCBjdXN0b21EZWxldGVCdWNrZXQoU3RyaW5nJik7DQp9Ow0K
DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzLCBib29sIGhhc0VtcHR5VmFsdWVGdW5jdGlv
bj4gc3RydWN0IEhhc2hUcmFpdHNFbXB0eVZhbHVlQ2hlY2tlcjsNCnRlbXBsYXRlPHR5cGVuYW1l
IFRyYWl0cz4gc3RydWN0IEhhc2hUcmFpdHNFbXB0eVZhbHVlQ2hlY2tlcjxUcmFpdHMsIHRydWU+
IHsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29u
c3QgVCYgdmFsdWUpIHsgcmV0dXJuIFRyYWl0czo6aXNFbXB0eVZhbHVlKHZhbHVlKTsgfQ0KfTsN
CnRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cz4gc3RydWN0IEhhc2hUcmFpdHNFbXB0eVZhbHVlQ2hl
Y2tlcjxUcmFpdHMsIGZhbHNlPiB7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGJv
b2wgaXNFbXB0eVZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBUcmFpdHM6
OmVtcHR5VmFsdWUoKTsgfQ0KfTsNCnRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
VD4gaW5saW5lIGJvb2wgaXNIYXNoVHJhaXRzRW1wdHlWYWx1ZShjb25zdCBUJiB2YWx1ZSkNCnsN
CiAgICByZXR1cm4gSGFzaFRyYWl0c0VtcHR5VmFsdWVDaGVja2VyPFRyYWl0cywgVHJhaXRzOjpo
YXNJc0VtcHR5VmFsdWVGdW5jdGlvbj46OmlzRW1wdHlWYWx1ZSh2YWx1ZSk7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFRyYWl0cywgYm9vbCBoYXNJc1JlbGVhc2VkV2Vha1ZhbHVlRnVuY3Rpb24+
IHN0cnVjdCBIYXNoVHJhaXRzUmVsZWFzZWRXZWFrVmFsdWVDaGVja2VyOw0KdGVtcGxhdGU8dHlw
ZW5hbWUgVHJhaXRzPiBzdHJ1Y3QgSGFzaFRyYWl0c1JlbGVhc2VkV2Vha1ZhbHVlQ2hlY2tlcjxU
cmFpdHMsIHRydWU+IHsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCBpc1Jl
bGVhc2VkV2Vha1ZhbHVlKGNvbnN0IFQmIHZhbHVlKSB7IHJldHVybiBUcmFpdHM6OmlzUmVsZWFz
ZWRXZWFrVmFsdWUodmFsdWUpOyB9DQp9Ow0KdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzPiBzdHJ1
Y3QgSGFzaFRyYWl0c1JlbGVhc2VkV2Vha1ZhbHVlQ2hlY2tlcjxUcmFpdHMsIGZhbHNlPiB7DQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGJvb2wgaXNSZWxlYXNlZFdlYWtWYWx1ZShj
b25zdCBUJikgeyByZXR1cm4gZmFsc2U7IH0NCn07DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGlzSGFzaFRyYWl0c1JlbGVhc2VkV2Vha1ZhbHVlKGNv
bnN0IFQmIHZhbHVlKQ0Kew0KICAgIHJldHVybiBIYXNoVHJhaXRzUmVsZWFzZWRXZWFrVmFsdWVD
aGVja2VyPFRyYWl0cywgVHJhaXRzOjpoYXNJc1JlbGVhc2VkV2Vha1ZhbHVlRnVuY3Rpb24+Ojpp
c1JlbGVhc2VkV2Vha1ZhbHVlKHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBUPg0Kc3RydWN0IEhhc2hUcmFpdEhhc0N1c3RvbURlbGV0ZSB7DQogICAgc3Rh
dGljIFQmIGJ1Y2tldEFyZzsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYPiBzdGF0aWMgc3RkOjp0
cnVlX3R5cGUgVGVzdEhhc0N1c3RvbURlbGV0ZShYKiwgZGVjbHR5cGUoWDo6Y3VzdG9tRGVsZXRl
QnVja2V0KGJ1Y2tldEFyZykpKiA9IG51bGxwdHIpOw0KICAgIHN0YXRpYyBzdGQ6OmZhbHNlX3R5
cGUgVGVzdEhhc0N1c3RvbURlbGV0ZSguLi4pOw0KICAgIHR5cGVkZWYgZGVjbHR5cGUoVGVzdEhh
c0N1c3RvbURlbGV0ZShzdGF0aWNfY2FzdDxUcmFpdHMqPihudWxscHRyKSkpIFJlc3VsdFR5cGU7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gUmVzdWx0VHlwZTo6dmFsdWU7DQp9
Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFQ+DQp0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxIYXNoVHJhaXRIYXNDdXN0b21EZWxldGU8VHJhaXRzLCBUPjo6dmFsdWU+Ojp0
eXBlDQpoYXNoVHJhaXRzRGVsZXRlQnVja2V0KFQmIHZhbHVlKQ0Kew0KICAgIFRyYWl0czo6Y3Vz
dG9tRGVsZXRlQnVja2V0KHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBUPg0KdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IUhhc2hUcmFpdEhhc0N1c3RvbURl
bGV0ZTxUcmFpdHMsIFQ+Ojp2YWx1ZT46OnR5cGUNCmhhc2hUcmFpdHNEZWxldGVCdWNrZXQoVCYg
dmFsdWUpDQp7DQogICAgdmFsdWUuflQoKTsNCiAgICBUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRW
YWx1ZSh2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHJhaXRzQXJnLCB0eXBl
bmFtZSBTZWNvbmRUcmFpdHNBcmc+DQpzdHJ1Y3QgUGFpckhhc2hUcmFpdHMgOiBHZW5lcmljSGFz
aFRyYWl0czxzdGQ6OnBhaXI8dHlwZW5hbWUgRmlyc3RUcmFpdHNBcmc6OlRyYWl0VHlwZSwgdHlw
ZW5hbWUgU2Vjb25kVHJhaXRzQXJnOjpUcmFpdFR5cGU+PiB7DQogICAgdHlwZWRlZiBGaXJzdFRy
YWl0c0FyZyBGaXJzdFRyYWl0czsNCiAgICB0eXBlZGVmIFNlY29uZFRyYWl0c0FyZyBTZWNvbmRU
cmFpdHM7DQogICAgdHlwZWRlZiBzdGQ6OnBhaXI8dHlwZW5hbWUgRmlyc3RUcmFpdHM6OlRyYWl0
VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHJhaXRzOjpUcmFpdFR5cGU+IFRyYWl0VHlwZTsNCiAgICB0
eXBlZGVmIHN0ZDo6cGFpcjx0eXBlbmFtZSBGaXJzdFRyYWl0czo6RW1wdHlWYWx1ZVR5cGUsIHR5
cGVuYW1lIFNlY29uZFRyYWl0czo6RW1wdHlWYWx1ZVR5cGU+IEVtcHR5VmFsdWVUeXBlOw0KDQog
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBGaXJzdFRyYWl0czo6
ZW1wdHlWYWx1ZUlzWmVybyAmJiBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm87DQogICAg
c3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBzdGQ6Om1ha2VfcGFp
cihGaXJzdFRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBTZWNvbmRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7
IH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWluaW11bVRhYmxlU2l6ZSA9IEZp
cnN0VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOw0KDQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFRyYWl0VHlwZSYgc2xvdCkgeyBGaXJzdFRyYWl0czo6Y29uc3RydWN0RGVs
ZXRlZFZhbHVlKHNsb3QuZmlyc3QpOyB9DQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUo
Y29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRmlyc3RUcmFpdHM6OmlzRGVsZXRlZFZh
bHVlKHZhbHVlLmZpcnN0KTsgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVu
YW1lIFNlY29uZD4NCnN0cnVjdCBIYXNoVHJhaXRzPHN0ZDo6cGFpcjxGaXJzdCwgU2Vjb25kPj4g
OiBwdWJsaWMgUGFpckhhc2hUcmFpdHM8SGFzaFRyYWl0czxGaXJzdD4sIEhhc2hUcmFpdHM8U2Vj
b25kPj4geyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFRyYWl0LCB0eXBlbmFtZS4uLiBU
cmFpdHM+DQpzdHJ1Y3QgVHVwbGVIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8c3RkOjp0
dXBsZTx0eXBlbmFtZSBGaXJzdFRyYWl0OjpUcmFpdFR5cGUsIHR5cGVuYW1lIFRyYWl0czo6VHJh
aXRUeXBlLi4uPj4gew0KICAgIHR5cGVkZWYgc3RkOjp0dXBsZTx0eXBlbmFtZSBGaXJzdFRyYWl0
OjpUcmFpdFR5cGUsIHR5cGVuYW1lIFRyYWl0czo6VHJhaXRUeXBlLi4uPiBUcmFpdFR5cGU7DQog
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPHR5cGVuYW1lIEZpcnN0VHJhaXQ6OkVtcHR5VmFsdWVUeXBl
LCB0eXBlbmFtZSBUcmFpdHM6OkVtcHR5VmFsdWVUeXBlLi4uPiBFbXB0eVZhbHVlVHlwZTsNCg0K
ICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlPg0KICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBhbGxUcnVlKEJvb2xUeXBlIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQ0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvb2xUeXBlLCB0eXBlbmFtZS4uLiBCb29sVHlwZXM+DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGFsbFRydWUoQm9vbFR5cGUgdmFsdWUsIEJvb2xUeXBl
cy4uLiB2YWx1ZXMpIHsgcmV0dXJuIHZhbHVlICYmIGFsbFRydWUodmFsdWVzLi4uKTsgfQ0KICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gYWxsVHJ1ZShGaXJzdFRy
YWl0OjplbXB0eVZhbHVlSXNaZXJvLCBUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm8uLi4pOw0KICAg
IHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gc3RkOjptYWtlX3R1
cGxlKEZpcnN0VHJhaXQ6OmVtcHR5VmFsdWUoKSwgVHJhaXRzOjplbXB0eVZhbHVlKCkuLi4pOyB9
DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1pbmltdW1UYWJsZVNpemUgPSBGaXJz
dFRyYWl0OjptaW5pbXVtVGFibGVTaXplOw0KDQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKFRyYWl0VHlwZSYgc2xvdCkgeyBGaXJzdFRyYWl0Ojpjb25zdHJ1Y3REZWxldGVk
VmFsdWUoc3RkOjpnZXQ8MD4oc2xvdCkpOyB9DQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gRmlyc3RUcmFpdDo6aXNEZWxldGVk
VmFsdWUoc3RkOjpnZXQ8MD4odmFsdWUpKTsgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUuLi4g
VHJhaXRzPg0Kc3RydWN0IEhhc2hUcmFpdHM8c3RkOjp0dXBsZTxUcmFpdHMuLi4+PiA6IHB1Ymxp
YyBUdXBsZUhhc2hUcmFpdHM8SGFzaFRyYWl0czxUcmFpdHM+Li4uPiB7IH07DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgVmFsdWVUcmFpdHNBcmc+DQpzdHJ1Y3Qg
S2V5VmFsdWVQYWlySGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPEtleVZhbHVlUGFpcjx0
eXBlbmFtZSBLZXlUcmFpdHNBcmc6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHNBcmc6
OlRyYWl0VHlwZT4+IHsNCiAgICB0eXBlZGVmIEtleVRyYWl0c0FyZyBLZXlUcmFpdHM7DQogICAg
dHlwZWRlZiBWYWx1ZVRyYWl0c0FyZyBWYWx1ZVRyYWl0czsNCiAgICB0eXBlZGVmIEtleVZhbHVl
UGFpcjx0eXBlbmFtZSBLZXlUcmFpdHM6OlRyYWl0VHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFpdHM6
OlRyYWl0VHlwZT4gVHJhaXRUeXBlOw0KICAgIHR5cGVkZWYgS2V5VmFsdWVQYWlyPHR5cGVuYW1l
IEtleVRyYWl0czo6RW1wdHlWYWx1ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpFbXB0eVZh
bHVlVHlwZT4gRW1wdHlWYWx1ZVR5cGU7DQogICAgdHlwZWRlZiB0eXBlbmFtZSBWYWx1ZVRyYWl0
c0FyZzo6VHJhaXRUeXBlIFZhbHVlVHlwZTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBl
bXB0eVZhbHVlSXNaZXJvID0gS2V5VHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvICYmIFZhbHVlVHJh
aXRzOjplbXB0eVZhbHVlSXNaZXJvOw0KICAgIHN0YXRpYyBFbXB0eVZhbHVlVHlwZSBlbXB0eVZh
bHVlKCkgeyByZXR1cm4gS2V5VmFsdWVQYWlyPHR5cGVuYW1lIEtleVRyYWl0czo6RW1wdHlWYWx1
ZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpFbXB0eVZhbHVlVHlwZT4oS2V5VHJhaXRzOjpl
bXB0eVZhbHVlKCksIFZhbHVlVHJhaXRzOjplbXB0eVZhbHVlKCkpOyB9DQoNCiAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWU+DQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RW1wdHlWYWx1ZShUcmFpdFR5
cGUmIHNsb3QpDQogICAgew0KICAgICAgICBLZXlUcmFpdHM6OnRlbXBsYXRlIGNvbnN0cnVjdEVt
cHR5VmFsdWU8S2V5VHJhaXRzPihzbG90LmtleSk7DQogICAgICAgIFZhbHVlVHJhaXRzOjp0ZW1w
bGF0ZSBjb25zdHJ1Y3RFbXB0eVZhbHVlPFZhbHVlVHJhaXRzPihzbG90LnZhbHVlKTsNCiAgICB9
DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1pbmltdW1UYWJsZVNpemUgPSBLZXlU
cmFpdHM6Om1pbmltdW1UYWJsZVNpemU7DQoNCiAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxl
dGVkVmFsdWUoVHJhaXRUeXBlJiBzbG90KSB7IEtleVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZh
bHVlKHNsb3Qua2V5KTsgfQ0KICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFRy
YWl0VHlwZSYgdmFsdWUpIHsgcmV0dXJuIEtleVRyYWl0czo6aXNEZWxldGVkVmFsdWUodmFsdWUu
a2V5KTsgfQ0KDQogICAgc3RhdGljIHZvaWQgY3VzdG9tRGVsZXRlQnVja2V0KFRyYWl0VHlwZSYg
dmFsdWUpDQogICAgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxLZXlWYWx1ZVBhaXI8aW50LCBpbnQ+Pjo6dmFsdWUsDQogICAgICAgICAgICAi
VGhlIHdyYXBwZXIgaXRzZWxmIGhhcyB0byBiZSB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIGZvciBj
dXN0b21EZWxldGVCdWNrZXQoKSB0byBtYWtlIHNlbnNlLCBzaW5jZSB3ZSBkbyBub3QgZGVzdHJ1
Y3QgdGhlIHdyYXBwZXIgaXRzZWxmLiIpOw0KDQogICAgICAgIGhhc2hUcmFpdHNEZWxldGVCdWNr
ZXQ8S2V5VHJhaXRzPih2YWx1ZS5rZXkpOw0KICAgICAgICB2YWx1ZS52YWx1ZS5+VmFsdWVUeXBl
KCk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4N
CnN0cnVjdCBIYXNoVHJhaXRzPEtleVZhbHVlUGFpcjxLZXksIFZhbHVlPj4gOiBwdWJsaWMgS2V5
VmFsdWVQYWlySGFzaFRyYWl0czxIYXNoVHJhaXRzPEtleT4sIEhhc2hUcmFpdHM8VmFsdWU+PiB7
IH07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgTnVsbGFibGVIYXNoVHJhaXRzIDog
cHVibGljIEhhc2hUcmFpdHM8VD4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gZmFsc2U7DQogICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8VD4oMSk7IH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4NCnN0cnVjdCBIYXNoVHJhaXRzPFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eT4+IDogR2VuZXJpY0hhc2hUcmFpdHM8VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pj4gew0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gIWlubGluZUNhcGFj
aXR5Ow0KDQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eT4mIHNsb3QpIHsgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90
KSkgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7
IH0NCiAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHk+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQ0KfTsNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgQ3VzdG9tSGFzaFRy
YWl0cyA6IHB1YmxpYyBHZW5lcmljSGFzaFRyYWl0czxUPiB7DQogICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOw0KICAgIA0KICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90KQ0KICAgIHsNCiAgICAgICAgbmV3IChOb3RO
dWxsLCBzdGQ6OmFkZHJlc3NvZihzbG90KSkgVChUOjpEZWxldGVkVmFsdWUpOw0KICAgIH0NCiAg
ICANCiAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBUJiB2YWx1ZSkNCiAgICB7
DQogICAgICAgIHJldHVybiB2YWx1ZS5pc0RlbGV0ZWRWYWx1ZSgpOw0KICAgIH0NCiAgICANCiAg
ICBzdGF0aWMgVCBlbXB0eVZhbHVlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBUKFQ6OkVtcHR5
VmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3Qg
VCYgdmFsdWUpDQogICAgew0KICAgICAgICByZXR1cm4gdmFsdWUuaXNFbXB0eVZhbHVlKCk7DQog
ICAgfQ0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpIYXNoVHJhaXRzOw0KdXNpbmcgV1RGOjpLZXlW
YWx1ZVBhaXI7DQp1c2luZyBXVEY6OlBhaXJIYXNoVHJhaXRzOw0KdXNpbmcgV1RGOjpOdWxsYWJs
ZUhhc2hUcmFpdHM7DQp1c2luZyBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czsNCiNsaW5lIDI5
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9NZXRhQWxsb2NhdG9yUHRyLmgiDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8
UHRyVGFnIHRhZz4NCmNsYXNzIE1ldGFBbGxvY2F0b3JQdHIgew0KcHVibGljOg0KICAgIE1ldGFB
bGxvY2F0b3JQdHIoKSA9IGRlZmF1bHQ7DQogICAgTWV0YUFsbG9jYXRvclB0cihzdGQ6Om51bGxw
dHJfdCkgeyB9DQoNCiAgICBleHBsaWNpdCBNZXRhQWxsb2NhdG9yUHRyKHZvaWQqIHB0cikNCiAg
ICAgICAgOiBtX3B0cih0YWdDb2RlUHRyPHRhZz4ocHRyKSkNCiAgICB7DQogICAgICAgIGFzc2Vy
dElzTm90VGFnZ2VkKHB0cik7DQogICAgfQ0KDQogICAgZXhwbGljaXQgTWV0YUFsbG9jYXRvclB0
cih1aW50cHRyX3QgcHRyQXNJbnQpDQogICAgICAgIDogTWV0YUFsbG9jYXRvclB0cihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihwdHJBc0ludCkpDQogICAgeyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUID0gdm9pZCo+DQogICAgVCB1bnRhZ2dlZFB0cigpIGNvbnN0IHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxUPih1bnRhZ0NvZGVQdHI8dGFnPihtX3B0cikpOyB9DQoNCiAgICB0ZW1wbGF0ZTxQ
dHJUYWcgbmV3VGFnLCB0eXBlbmFtZSBUID0gdm9pZCo+DQogICAgVCByZXRhZ2dlZFB0cigpIGNv
bnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihyZXRhZ0NvZGVQdHI8dGFnLCBuZXdUYWc+KG1f
cHRyKSk7IH0NCg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFQsIGJvb2w+Ojp2YWx1ZT4+DQogICAgb3BlcmF0
b3IgVCgpID0gZGVsZXRlOw0KDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9wdHI7IH0NCiAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFt
X3B0cjsgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KE1ldGFBbGxvY2F0b3JQdHIgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9DQogICAgYm9vbCBvcGVyYXRvciE9
KE1ldGFBbGxvY2F0b3JQdHIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyICE9IG90aGVyLm1f
cHRyOyB9DQoNCiAgICBNZXRhQWxsb2NhdG9yUHRyIG9wZXJhdG9yKyhzaXplX3Qgc2l6ZUluQnl0
ZXMpIGNvbnN0IHsgcmV0dXJuIE1ldGFBbGxvY2F0b3JQdHIodW50YWdnZWRQdHI8dWludDhfdCo+
KCkgKyBzaXplSW5CeXRlcyk7IH0NCiAgICBNZXRhQWxsb2NhdG9yUHRyIG9wZXJhdG9yLShzaXpl
X3Qgc2l6ZUluQnl0ZXMpIGNvbnN0IHsgcmV0dXJuIE1ldGFBbGxvY2F0b3JQdHIodW50YWdnZWRQ
dHI8dWludDhfdCo+KCkgLSBzaXplSW5CeXRlcyk7IH0NCg0KICAgIE1ldGFBbGxvY2F0b3JQdHIm
IG9wZXJhdG9yKz0oc2l6ZV90IHNpemVJbkJ5dGVzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICp0
aGlzID0gKnRoaXMgKyBzaXplSW5CeXRlczsNCiAgICB9DQoNCiAgICBNZXRhQWxsb2NhdG9yUHRy
JiBvcGVyYXRvci09KHNpemVfdCBzaXplSW5CeXRlcykNCiAgICB7DQogICAgICAgIHJldHVybiAq
dGhpcyA9ICp0aGlzIC0gc2l6ZUluQnl0ZXM7DQogICAgfQ0KDQogICAgZW51bSBFbXB0eVZhbHVl
VGFnIHsgRW1wdHlWYWx1ZSB9Ow0KICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZh
bHVlIH07DQoNCiAgICBNZXRhQWxsb2NhdG9yUHRyKEVtcHR5VmFsdWVUYWcpDQogICAgICAgIDog
bV9wdHIoZW1wdHlWYWx1ZSgpKQ0KICAgIHsgfQ0KDQogICAgTWV0YUFsbG9jYXRvclB0cihEZWxl
dGVkVmFsdWVUYWcpDQogICAgICAgIDogbV9wdHIoZGVsZXRlZFZhbHVlKCkpDQogICAgeyB9DQoN
CiAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IGVtcHR5VmFs
dWUoKTsgfQ0KICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9
PSBkZWxldGVkVmFsdWUoKTsgfQ0KDQogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJu
IFB0ckhhc2g8dm9pZCo+OjpoYXNoKG1fcHRyKTsgfQ0KDQpwcml2YXRlOg0KICAgIHN0YXRpYyB2
b2lkKiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSk7IH0N
CiAgICBzdGF0aWMgdm9pZCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oMik7IH0NCg0KICAgIHZvaWQqIG1fcHRyIHsgbnVsbHB0ciB9Ow0KfTsNCg0KdGVt
cGxhdGU8UHRyVGFnIHRhZz4NCnN0cnVjdCBNZXRhQWxsb2NhdG9yUHRySGFzaCB7DQogICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgTWV0YUFsbG9jYXRvclB0cjx0YWc+JiBwdHIpIHsgcmV0
dXJuIHB0ci5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBNZXRhQWxsb2Nh
dG9yUHRyPHRhZz4mIGEsIGNvbnN0IE1ldGFBbGxvY2F0b3JQdHI8dGFnPiYgYikNCiAgICB7DQog
ICAgICAgIHJldHVybiBhID09IGI7DQogICAgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBz
YWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8UHRyVGFnIHRhZz4gc3RydWN0IERl
ZmF1bHRIYXNoPE1ldGFBbGxvY2F0b3JQdHI8dGFnPj4gOiBNZXRhQWxsb2NhdG9yUHRySGFzaDx0
YWc+IHsgfTsNCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4gc3RydWN0IEhhc2hUcmFpdHM8TWV0YUFs
bG9jYXRvclB0cjx0YWc+PiA6IHB1YmxpYyBDdXN0b21IYXNoVHJhaXRzPE1ldGFBbGxvY2F0b3JQ
dHI8dGFnPj4geyB9Ow0KDQp9IA0KDQp1c2luZyBXVEY6Ok1ldGFBbGxvY2F0b3JQdHI7DQojbGlu
ZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUmVkQmxhY2tUcmVlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L0ZhaWx1cmVBY3Rpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBXVEYgew0KDQplbnVtIGNsYXNz
IEZhaWx1cmVBY3Rpb24gew0KICAgIENyYXNoLA0KICAgIFJlcG9ydA0KfTsNCg0KfSANCiNsaW5l
IDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9WZWN0b3IuaCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9NYWxsb2NQdHIuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoN
Cg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IE1hbGxvYyA9IEZhc3RNYWxsb2M+IGNsYXNzIE1hbGxvY1B0ciB7DQogICAgTWFsbG9jUHRyKGNv
bnN0IE1hbGxvY1B0ciYpID0gZGVsZXRlOyBNYWxsb2NQdHImIG9wZXJhdG9yPShjb25zdCBNYWxs
b2NQdHImKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgTWFsbG9jUHRyKCkgPSBkZWZhdWx0Ow0K
DQogICAgY29uc3RleHByIE1hbGxvY1B0cihzdGQ6Om51bGxwdHJfdCkNCiAgICB7DQogICAgfQ0K
DQogICAgTWFsbG9jUHRyKE1hbGxvY1B0ciYmIG90aGVyKQ0KICAgICAgICA6IG1fcHRyKG90aGVy
LmxlYWtQdHIoKSkNCiAgICB7DQogICAgfQ0KDQogICAgfk1hbGxvY1B0cigpDQogICAgew0KICAg
ICAgICBNYWxsb2M6OmZyZWUobV9wdHIpOw0KICAgIH0NCg0KICAgIFQqIGdldCgpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gbV9wdHI7DQogICAgfQ0KDQogICAgVCAqbGVha1B0cigpIA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIpOw0KICAg
IH0NCg0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIG1fcHRyOw0KICAgIH0NCg0KICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiAhbV9wdHI7DQogICAgfQ0KDQogICAgVCYgb3BlcmF0b3IqKCkgY29u
c3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuICptX3B0cjsNCiAg
ICB9DQoNCiAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBt
X3B0cjsNCiAgICB9DQoNCiAgICBNYWxsb2NQdHImIG9wZXJhdG9yPShNYWxsb2NQdHImJiBvdGhl
cikNCiAgICB7DQogICAgICAgIE1hbGxvY1B0ciBwdHIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01v
dmVQYXJhbWV0ZXI+KG90aGVyKTsNCiAgICAgICAgc3dhcChwdHIpOw0KDQogICAgICAgIHJldHVy
biAqdGhpczsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAoTWFsbG9jUHRyJiBvdGhlcikNCiAgICB7
DQogICAgICAgIHN0ZDo6c3dhcChtX3B0ciwgb3RoZXIubV9wdHIpOw0KICAgIH0NCg0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIE90aGVyTWFsbG9jPiBmcmllbmQgTWFsbG9jUHRy
PFUsIE90aGVyTWFsbG9jPiBhZG9wdE1hbGxvY1B0cihVKik7DQoNCiAgICBzdGF0aWMgTWFsbG9j
UHRyIG1hbGxvYyhzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBNYWxsb2NQdHIg
ew0KICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VCo+KE1hbGxvYzo6bWFsbG9jKHNpemUpKQ0KICAg
ICAgICB9Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBNYWxsb2NQdHIgemVyb2VkTWFsbG9jKHNpemVf
dCBzaXplKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIE1hbGxvY1B0ciB7DQogICAgICAgICAgICBz
dGF0aWNfY2FzdDxUKj4oTWFsbG9jOjp6ZXJvZWRNYWxsb2Moc2l6ZSkpDQogICAgICAgIH07DQog
ICAgfQ0KDQogICAgc3RhdGljIE1hbGxvY1B0ciB0cnlNYWxsb2Moc2l6ZV90IHNpemUpDQogICAg
ew0KICAgICAgICByZXR1cm4gTWFsbG9jUHRyIHsNCiAgICAgICAgICAgIHN0YXRpY19jYXN0PFQq
PihNYWxsb2M6OnRyeU1hbGxvYyhzaXplKSkNCiAgICAgICAgfTsNCiAgICB9DQoNCiAgICBzdGF0
aWMgTWFsbG9jUHRyIHRyeVplcm9lZE1hbGxvYyhzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAg
IHJldHVybiBNYWxsb2NQdHIgew0KICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VCo+KE1hbGxvYzo6
dHJ5WmVyb2VkTWFsbG9jKHNpemUpKQ0KICAgICAgICB9Ow0KICAgIH0NCg0KICAgIHZvaWQgcmVh
bGxvYyhzaXplX3QgbmV3U2l6ZSkNCiAgICB7DQogICAgICAgIG1fcHRyID0gc3RhdGljX2Nhc3Q8
VCo+KE1hbGxvYzo6cmVhbGxvYyhtX3B0ciwgbmV3U2l6ZSkpOw0KICAgIH0NCg0KcHJpdmF0ZToN
CiAgICBleHBsaWNpdCBNYWxsb2NQdHIoVCogcHRyKQ0KICAgICAgICA6IG1fcHRyKHB0cikNCiAg
ICB7DQogICAgfQ0KDQogICAgVCogbV9wdHIgeyBudWxscHRyIH07DQp9Ow0KDQpzdGF0aWNfYXNz
ZXJ0KHNpemVvZihNYWxsb2NQdHI8aW50PikgPT0gc2l6ZW9mKGludCopLCAiIik7DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIE90aGVyTWFsbG9jPiBNYWxsb2NQdHI8VSwgT3RoZXJN
YWxsb2M+IGFkb3B0TWFsbG9jUHRyKFUqIHB0cikNCnsNCiAgICByZXR1cm4gTWFsbG9jUHRyPFUs
IE90aGVyTWFsbG9jPihwdHIpOw0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6Ok1hbGxvY1B0cjsNCnVz
aW5nIFdURjo6YWRvcHRNYWxsb2NQdHI7DQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9yLmgiDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9N
YXRoRXh0cmFzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjbWF0aCINCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkNCiNwcmFnbWEgd2Fybmlu
ZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTgwIDQ0MTIgNDQ1NSA0NDk0
IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4NyA0NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2MjYgNDY0MyA0
NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODggNTAyNiA1MDI3IDUwNDUgNjI5NCA0NTc3ICA1MDUzICkN
Cg0KDQoNCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBhY29zKCAgZmxvYXQgX1h4KSBu
b2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBhY29zZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1d
ICAgaW5saW5lIGZsb2F0IGFjb3NoKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVy
biA6OiBhY29zaGYoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBhc2lu
KCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBhc2luZihfWHgpOw0KfQ0K
DQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGFzaW5oKCAgZmxvYXQgX1h4KSBub2V4Y2Vw
dCAgew0KICAgIHJldHVybiA6OiBhc2luaGYoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlu
bGluZSBmbG9hdCBhdGFuKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBh
dGFuZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGF0YW5oKCAgZmxv
YXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBhdGFuaGYoX1h4KTsNCn0NCg0KW1tu
b2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBhdGFuMiggIGZsb2F0IF9ZeCwgICBmbG9hdCBfWHgp
IG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGF0YW4yZihfWXgsIF9YeCk7DQp9DQoNCltbbm9k
aXNjYXJkXV0gICBpbmxpbmUgZmxvYXQgY2JydCggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAg
ICByZXR1cm4gOjogY2JydGYoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9h
dCBjZWlsKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBjZWlsZihfWHgp
Ow0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGNvcHlzaWduKCAgZmxvYXQgX051
bWJlciwgICBmbG9hdCBfU2lnbikgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogY29weXNpZ25m
KF9OdW1iZXIsIF9TaWduKTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBjb3Mo
ICBmbG9hdCBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGNvc2YoX1h4KTsNCn0NCg0K
W1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBjb3NoKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAg
ew0KICAgIHJldHVybiA6OiBjb3NoZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5l
IGZsb2F0IGVyZiggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZXJmZihf
WHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGVyZmMoICBmbG9hdCBfWHgp
IG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGVyZmNmKF9YeCk7DQp9DQoNCltbbm9kaXNjYXJk
XV0gICBpbmxpbmUgZmxvYXQgZXhwKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVy
biA6OiBleHBmKF9YeCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgZmxvYXQgZXhwMigg
IGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZXhwMmYoX1h4KTsNCn0NCg0K
W1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBleHBtMSggIGZsb2F0IF9YeCkgbm9leGNlcHQg
IHsNCiAgICByZXR1cm4gOjogZXhwbTFmKF9YeCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxp
bmUgZmxvYXQgZmFicyggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZmFi
c2YoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBmZGltKCAgZmxvYXQg
X1h4LCAgIGZsb2F0IF9ZeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZmRpbWYoX1h4LCBf
WXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGZsb29yKCAgZmxvYXQgX1h4
KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBmbG9vcmYoX1h4KTsNCn0NCg0KW1tub2Rpc2Nh
cmRdXSAgIGlubGluZSBmbG9hdCBmbWEoICBmbG9hdCBfWHgsICAgZmxvYXQgX1l4LCAgIGZsb2F0
IF9aeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZm1hZihfWHgsIF9ZeCwgX1p4KTsNCn0N
Cg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBmbWF4KCAgZmxvYXQgX1h4LCAgIGZsb2F0
IF9ZeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZm1heGYoX1h4LCBfWXgpOw0KfQ0KDQpb
W25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGZtaW4oICBmbG9hdCBfWHgsICAgZmxvYXQgX1l4
KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBmbWluZihfWHgsIF9ZeCk7DQp9DQoNCltbbm9k
aXNjYXJkXV0gICBpbmxpbmUgZmxvYXQgZm1vZCggIGZsb2F0IF9YeCwgICBmbG9hdCBfWXgpIG5v
ZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGZtb2RmKF9YeCwgX1l4KTsNCn0NCg0KaW5saW5lIGZs
b2F0IGZyZXhwKCAgZmxvYXQgX1h4LCAgIGludCogX1l4KSBub2V4Y2VwdCAgew0KICAgIHJldHVy
biA6OiBmcmV4cGYoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0
IGh5cG90KCAgZmxvYXQgX1h4LCAgIGZsb2F0IF9ZeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4g
OjogaHlwb3RmKF9YeCwgX1l4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBpbnQgaWxv
Z2IoICBmbG9hdCBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGlsb2diZihfWHgpOw0K
fQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGxkZXhwKCAgZmxvYXQgX1h4LCAgIGlu
dCBfWXgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGxkZXhwZihfWHgsIF9ZeCk7DQp9DQoN
Cltbbm9kaXNjYXJkXV0gICBpbmxpbmUgZmxvYXQgbGdhbW1hKCAgZmxvYXQgX1h4KSBub2V4Y2Vw
dCAgew0KICAgIHJldHVybiA6OiBsZ2FtbWFmKF9YeCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBp
bmxpbmUgbG9uZyBsb25nIGxscmludCggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1
cm4gOjogbGxyaW50ZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgbG9u
ZyBsbHJvdW5kKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBsbHJvdW5k
ZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IGxvZyggIGZsb2F0IF9Y
eCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogbG9nZihfWHgpOw0KfQ0KDQpbW25vZGlzY2Fy
ZF1dICAgaW5saW5lIGZsb2F0IGxvZzEwKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJl
dHVybiA6OiBsb2cxMGYoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBs
b2cxcCggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogbG9nMXBmKF9YeCk7
DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgZmxvYXQgbG9nMiggIGZsb2F0IF9YeCkgbm9l
eGNlcHQgIHsNCiAgICByZXR1cm4gOjogbG9nMmYoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAg
IGlubGluZSBmbG9hdCBsb2diKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6
OiBsb2diZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgbHJpbnQoICBm
bG9hdCBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGxyaW50ZihfWHgpOw0KfQ0KDQpb
W25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgbHJvdW5kKCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAg
ew0KICAgIHJldHVybiA6OiBscm91bmRmKF9YeCk7DQp9DQoNCmlubGluZSBmbG9hdCBtb2RmKCAg
ZmxvYXQgX1h4LCAgIGZsb2F0KiBfWXgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IG1vZGZm
KF9YeCwgX1l4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBuZWFyYnlpbnQo
ICBmbG9hdCBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IG5lYXJieWludGYoX1h4KTsN
Cn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBuZXh0YWZ0ZXIoICBmbG9hdCBfWHgs
ICAgZmxvYXQgX1l4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBuZXh0YWZ0ZXJmKF9YeCwg
X1l4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBuZXh0dG93YXJkKCAgZmxv
YXQgX1h4LCAgIGxvbmcgZG91YmxlIF9ZeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogbmV4
dHRvd2FyZGYoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IHBv
dyggIGZsb2F0IF9YeCwgICBmbG9hdCBfWXgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHBv
d2YoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IHJlbWFpbmRl
ciggIGZsb2F0IF9YeCwgICBmbG9hdCBfWXgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHJl
bWFpbmRlcmYoX1h4LCBfWXgpOw0KfQ0KDQppbmxpbmUgZmxvYXQgcmVtcXVvKCAgZmxvYXQgX1h4
LCAgIGZsb2F0IF9ZeCwgICBpbnQqIF9aeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogcmVt
cXVvZihfWHgsIF9ZeCwgX1p4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCBy
aW50KCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiByaW50ZihfWHgpOw0K
fQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IHJvdW5kKCAgZmxvYXQgX1h4KSBub2V4
Y2VwdCAgew0KICAgIHJldHVybiA6OiByb3VuZGYoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAg
IGlubGluZSBmbG9hdCBzY2FsYmxuKCAgZmxvYXQgX1h4LCAgIGxvbmcgX1l4KSBub2V4Y2VwdCAg
ew0KICAgIHJldHVybiA6OiBzY2FsYmxuZihfWHgsIF9ZeCk7DQp9DQoNCltbbm9kaXNjYXJkXV0g
ICBpbmxpbmUgZmxvYXQgc2NhbGJuKCAgZmxvYXQgX1h4LCAgIGludCBfWXgpIG5vZXhjZXB0ICB7
DQogICAgcmV0dXJuIDo6IHNjYWxibmYoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAg
aW5saW5lIGZsb2F0IHNpbiggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjog
c2luZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IHNpbmgoICBmbG9h
dCBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHNpbmhmKF9YeCk7DQp9DQoNCltbbm9k
aXNjYXJkXV0gICBpbmxpbmUgZmxvYXQgc3FydCggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAg
ICByZXR1cm4gOjogc3FydGYoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9h
dCB0YW4oICBmbG9hdCBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHRhbmYoX1h4KTsN
Cn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBmbG9hdCB0YW5oKCAgZmxvYXQgX1h4KSBub2V4
Y2VwdCAgew0KICAgIHJldHVybiA6OiB0YW5oZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAg
aW5saW5lIGZsb2F0IHRnYW1tYSggIGZsb2F0IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4g
OjogdGdhbW1hZihfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGZsb2F0IHRydW5j
KCAgZmxvYXQgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiB0cnVuY2YoX1h4KTsNCn0N
Cg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBhY29zKCAgbG9uZyBkb3VibGUg
X1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBhY29zbChfWHgpOw0KfQ0KDQpbW25vZGlz
Y2FyZF1dICAgaW5saW5lIGxvbmcgZG91YmxlIGFjb3NoKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4
Y2VwdCAgew0KICAgIHJldHVybiA6OiBhY29zaGwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAg
IGlubGluZSBsb25nIGRvdWJsZSBhc2luKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0K
ICAgIHJldHVybiA6OiBhc2lubChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxv
bmcgZG91YmxlIGFzaW5oKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVy
biA6OiBhc2luaGwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJs
ZSBhdGFuKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBhdGFu
bChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91YmxlIGF0YW5oKCAg
bG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBhdGFuaGwoX1h4KTsN
Cn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBhdGFuMiggIGxvbmcgZG91
YmxlIF9ZeCwgICBsb25nIGRvdWJsZSBfWHgpIG5vZXhjZXB0DQogew0KICAgIHJldHVybiA6OiBh
dGFuMmwoX1l4LCBfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91Ymxl
IGNicnQoICBsb25nIGRvdWJsZSBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGNicnRs
KF9YeCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgY2VpbCggIGxv
bmcgZG91YmxlIF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogY2VpbGwoX1h4KTsNCn0N
Cg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBjb3B5c2lnbiggIGxvbmcgZG91
YmxlIF9OdW1iZXIsICAgbG9uZyBkb3VibGUgX1NpZ24pIG5vZXhjZXB0DQogew0KICAgIHJldHVy
biA6OiBjb3B5c2lnbmwoX051bWJlciwgX1NpZ24pOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5s
aW5lIGxvbmcgZG91YmxlIGNvcyggIGxvbmcgZG91YmxlIF9YeCkgbm9leGNlcHQgIHsNCiAgICBy
ZXR1cm4gOjogY29zbChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91
YmxlIGNvc2goICBsb25nIGRvdWJsZSBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGNv
c2hsKF9YeCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgZXJmKCAg
bG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBlcmZsKF9YeCk7DQp9
DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgZXJmYyggIGxvbmcgZG91Ymxl
IF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZXJmY2woX1h4KTsNCn0NCg0KW1tub2Rp
c2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBleHAoICBsb25nIGRvdWJsZSBfWHgpIG5vZXhj
ZXB0ICB7DQogICAgcmV0dXJuIDo6IGV4cGwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlu
bGluZSBsb25nIGRvdWJsZSBleHAyKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAg
IHJldHVybiA6OiBleHAybChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcg
ZG91YmxlIGV4cG0xKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6
OiBleHBtMWwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBm
YWJzKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBmYWJzbChf
WHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91YmxlIGZkaW0oICBsb25n
IGRvdWJsZSBfWHgsICAgbG9uZyBkb3VibGUgX1l4KSBub2V4Y2VwdA0KIHsNCiAgICByZXR1cm4g
OjogZmRpbWwoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91
YmxlIGZsb29yKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBm
bG9vcmwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBmbWEo
DQogICAgICBsb25nIGRvdWJsZSBfWHgsICAgbG9uZyBkb3VibGUgX1l4LCAgIGxvbmcgZG91Ymxl
IF9aeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZm1hbChfWHgsIF9ZeCwgX1p4KTsNCn0N
Cg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBmbWF4KCAgbG9uZyBkb3VibGUg
X1h4LCAgIGxvbmcgZG91YmxlIF9ZeCkgbm9leGNlcHQNCiB7DQogICAgcmV0dXJuIDo6IGZtYXhs
KF9YeCwgX1l4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBmbWlu
KCAgbG9uZyBkb3VibGUgX1h4LCAgIGxvbmcgZG91YmxlIF9ZeCkgbm9leGNlcHQNCiB7DQogICAg
cmV0dXJuIDo6IGZtaW5sKF9YeCwgX1l4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBs
b25nIGRvdWJsZSBmbW9kKCAgbG9uZyBkb3VibGUgX1h4LCAgIGxvbmcgZG91YmxlIF9ZeCkgbm9l
eGNlcHQNCiB7DQogICAgcmV0dXJuIDo6IGZtb2RsKF9YeCwgX1l4KTsNCn0NCg0KaW5saW5lIGxv
bmcgZG91YmxlIGZyZXhwKCAgbG9uZyBkb3VibGUgX1h4LCAgIGludCogX1l4KSBub2V4Y2VwdCAg
ew0KICAgIHJldHVybiA6OiBmcmV4cGwoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAg
aW5saW5lIGxvbmcgZG91YmxlIGh5cG90KCAgbG9uZyBkb3VibGUgX1h4LCAgIGxvbmcgZG91Ymxl
IF9ZeCkgbm9leGNlcHQNCiB7DQogICAgcmV0dXJuIDo6IGh5cG90bChfWHgsIF9ZeCk7DQp9DQoN
Cltbbm9kaXNjYXJkXV0gICBpbmxpbmUgaW50IGlsb2diKCAgbG9uZyBkb3VibGUgX1h4KSBub2V4
Y2VwdCAgew0KICAgIHJldHVybiA6OiBpbG9nYmwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAg
IGlubGluZSBsb25nIGRvdWJsZSBsZGV4cCggIGxvbmcgZG91YmxlIF9YeCwgICBpbnQgX1l4KSBu
b2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBsZGV4cGwoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlz
Y2FyZF1dICAgaW5saW5lIGxvbmcgZG91YmxlIGxnYW1tYSggIGxvbmcgZG91YmxlIF9YeCkgbm9l
eGNlcHQgIHsNCiAgICByZXR1cm4gOjogbGdhbW1hbChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1d
ICAgaW5saW5lIGxvbmcgbG9uZyBsbHJpbnQoICBsb25nIGRvdWJsZSBfWHgpIG5vZXhjZXB0ICB7
DQogICAgcmV0dXJuIDo6IGxscmludGwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGlu
ZSBsb25nIGxvbmcgbGxyb3VuZCggIGxvbmcgZG91YmxlIF9YeCkgbm9leGNlcHQgIHsNCiAgICBy
ZXR1cm4gOjogbGxyb3VuZGwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25n
IGRvdWJsZSBsb2coICBsb25nIGRvdWJsZSBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6
IGxvZ2woX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBsb2cx
MCggIGxvbmcgZG91YmxlIF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogbG9nMTBsKF9Y
eCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgbG9nMXAoICBsb25n
IGRvdWJsZSBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGxvZzFwbChfWHgpOw0KfQ0K
DQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91YmxlIGxvZzIoICBsb25nIGRvdWJsZSBf
WHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IGxvZzJsKF9YeCk7DQp9DQoNCltbbm9kaXNj
YXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgbG9nYiggIGxvbmcgZG91YmxlIF9YeCkgbm9leGNl
cHQgIHsNCiAgICByZXR1cm4gOjogbG9nYmwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlu
bGluZSBsb25nIGxyaW50KCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVy
biA6OiBscmludGwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGxyb3Vu
ZCggIGxvbmcgZG91YmxlIF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogbHJvdW5kbChf
WHgpOw0KfQ0KDQppbmxpbmUgbG9uZyBkb3VibGUgbW9kZiggIGxvbmcgZG91YmxlIF9YeCwgICBs
b25nIGRvdWJsZSogX1l4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBtb2RmbChfWHgsIF9Z
eCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgbmVhcmJ5aW50KCAg
bG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBuZWFyYnlpbnRsKF9Y
eCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgbmV4dGFmdGVyKCAg
bG9uZyBkb3VibGUgX1h4LCAgIGxvbmcgZG91YmxlIF9ZeCkgbm9leGNlcHQNCiB7DQogICAgcmV0
dXJuIDo6IG5leHRhZnRlcmwoX1h4LCBfWXgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5l
IGxvbmcgZG91YmxlIG5leHR0b3dhcmQoICBsb25nIGRvdWJsZSBfWHgsICAgbG9uZyBkb3VibGUg
X1l4KSBub2V4Y2VwdA0KIHsNCiAgICByZXR1cm4gOjogbmV4dHRvd2FyZGwoX1h4LCBfWXgpOw0K
fQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91YmxlIHBvdyggIGxvbmcgZG91Ymxl
IF9YeCwgICBsb25nIGRvdWJsZSBfWXgpIG5vZXhjZXB0DQogew0KICAgIHJldHVybiA6OiBwb3ds
KF9YeCwgX1l4KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSByZW1h
aW5kZXIoICBsb25nIGRvdWJsZSBfWHgsICAgbG9uZyBkb3VibGUgX1l4KSBub2V4Y2VwdA0KIHsN
CiAgICByZXR1cm4gOjogcmVtYWluZGVybChfWHgsIF9ZeCk7DQp9DQoNCmlubGluZSBsb25nIGRv
dWJsZSByZW1xdW8oICBsb25nIGRvdWJsZSBfWHgsICAgbG9uZyBkb3VibGUgX1l4LCAgIGludCog
X1p4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiByZW1xdW9sKF9YeCwgX1l4LCBfWngpOw0K
fQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91YmxlIHJpbnQoICBsb25nIGRvdWJs
ZSBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHJpbnRsKF9YeCk7DQp9DQoNCltbbm9k
aXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgcm91bmQoICBsb25nIGRvdWJsZSBfWHgpIG5v
ZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHJvdW5kbChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1d
ICAgaW5saW5lIGxvbmcgZG91YmxlIHNjYWxibG4oICBsb25nIGRvdWJsZSBfWHgsICAgbG9uZyBf
WXgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHNjYWxibG5sKF9YeCwgX1l4KTsNCn0NCg0K
W1tub2Rpc2NhcmRdXSAgIGlubGluZSBsb25nIGRvdWJsZSBzY2FsYm4oICBsb25nIGRvdWJsZSBf
WHgsICAgaW50IF9ZeCkgbm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogc2NhbGJubChfWHgsIF9Z
eCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgc2luKCAgbG9uZyBk
b3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiBzaW5sKF9YeCk7DQp9DQoNCltb
bm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgc2luaCggIGxvbmcgZG91YmxlIF9YeCkg
bm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogc2luaGwoX1h4KTsNCn0NCg0KW1tub2Rpc2NhcmRd
XSAgIGlubGluZSBsb25nIGRvdWJsZSBzcXJ0KCAgbG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAg
ew0KICAgIHJldHVybiA6OiBzcXJ0bChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5l
IGxvbmcgZG91YmxlIHRhbiggIGxvbmcgZG91YmxlIF9YeCkgbm9leGNlcHQgIHsNCiAgICByZXR1
cm4gOjogdGFubChfWHgpOw0KfQ0KDQpbW25vZGlzY2FyZF1dICAgaW5saW5lIGxvbmcgZG91Ymxl
IHRhbmgoICBsb25nIGRvdWJsZSBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHRhbmhs
KF9YeCk7DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgdGdhbW1hKCAg
bG9uZyBkb3VibGUgX1h4KSBub2V4Y2VwdCAgew0KICAgIHJldHVybiA6OiB0Z2FtbWFsKF9YeCk7
DQp9DQoNCltbbm9kaXNjYXJkXV0gICBpbmxpbmUgbG9uZyBkb3VibGUgdHJ1bmMoICBsb25nIGRv
dWJsZSBfWHgpIG5vZXhjZXB0ICB7DQogICAgcmV0dXJuIDo6IHRydW5jbChfWHgpOw0KfQ0KDQoN
Cm5hbWVzcGFjZSBzdGQgew0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQp1c2lu
ZyBfQ29tbW9uX2Zsb2F0X3R5cGVfdCA9IGNvbmRpdGlvbmFsX3Q8aXNfc2FtZV92PF9UeTEsIGxv
bmcgZG91YmxlPiB8fCBpc19zYW1lX3Y8X1R5MiwgbG9uZyBkb3VibGU+LCBsb25nIGRvdWJsZSwN
CiAgICBjb25kaXRpb25hbF90PGlzX3NhbWVfdjxfVHkxLCBmbG9hdD4gJiYgaXNfc2FtZV92PF9U
eTIsIGZsb2F0PiwgZmxvYXQsDQogICAgICAgIGRvdWJsZT4+OyANCn0NCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+
LCBpbnQ+ID0gMD4NCmRvdWJsZSBmcmV4cChfVHkgX1ZhbHVlLCAgIGludCogY29uc3QgX0V4cCkg
bm9leGNlcHQgIHsNCiAgICByZXR1cm4gOjogZnJleHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfVmFs
dWUpLCBfRXhwKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MTAgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY21hdGgiDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCBjbGFzcyBfVHkzLA0KICAgIDo6c3Rk
OjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19hcml0aG1ldGljX3Y8X1R5MT4gJiYgOjpzdGQ6OiBp
c19hcml0aG1ldGljX3Y8X1R5Mj4gJiYgOjpzdGQ6OiBpc19hcml0aG1ldGljX3Y8X1R5Mz4sIGlu
dD4gPSAwPg0KW1tub2Rpc2NhcmRdXSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEs
IDo6c3RkOjogX0NvbW1vbl9mbG9hdF90eXBlX3Q8X1R5MiwgX1R5Mz4+IGZtYSgNCiAgICBfVHkx
IF9MZWZ0LCBfVHkyIF9NaWRkbGUsIF9UeTMgX1JpZ2h0KSBub2V4Y2VwdCAgew0KICAgIHVzaW5n
IF9Db21tb24gPSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEsIDo6c3RkOjogX0Nv
bW1vbl9mbG9hdF90eXBlX3Q8X1R5MiwgX1R5Mz4+Ow0KDQogICAgaWYgY29uc3RleHByICg6OnN0
ZDo6IGlzX3NhbWVfdjxfQ29tbW9uLCBmbG9hdD4pIHsNCiAgICAgICAgcmV0dXJuIDo6IGZtYWYo
c3RhdGljX2Nhc3Q8X0NvbW1vbj4oX0xlZnQpLCBzdGF0aWNfY2FzdDxfQ29tbW9uPihfTWlkZGxl
KSwgc3RhdGljX2Nhc3Q8X0NvbW1vbj4oX1JpZ2h0KSk7DQogICAgfSBlbHNlIGlmIGNvbnN0ZXhw
ciAoOjpzdGQ6OiBpc19zYW1lX3Y8X0NvbW1vbiwgZG91YmxlPikgew0KICAgICAgICByZXR1cm4g
OjogZm1hKHN0YXRpY19jYXN0PF9Db21tb24+KF9MZWZ0KSwgc3RhdGljX2Nhc3Q8X0NvbW1vbj4o
X01pZGRsZSksIHN0YXRpY19jYXN0PF9Db21tb24+KF9SaWdodCkpOw0KICAgIH0gZWxzZSB7DQog
ICAgICAgIHJldHVybiA6OiBmbWFsKHN0YXRpY19jYXN0PF9Db21tb24+KF9MZWZ0KSwgc3RhdGlj
X2Nhc3Q8X0NvbW1vbj4oX01pZGRsZSksIHN0YXRpY19jYXN0PF9Db21tb24+KF9SaWdodCkpOw0K
ICAgIH0NCg0KDQojbGluZSA1MjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcY21hdGgiDQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGNtYXRoIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5MiwgOjpzdGQ6OiBlbmFi
bGVfaWZfdDw6OnN0ZDo6IGlzX2FyaXRobWV0aWNfdjxfVHkxPiAmJiA6OnN0ZDo6IGlzX2FyaXRo
bWV0aWNfdjxfVHkyPiwgaW50PiA9IDA+DQo6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9U
eTEsIF9UeTI+IHJlbXF1byhfVHkxIF9MZWZ0LCBfVHkyIF9SaWdodCwgaW50KiBfUHF1bykgbm9l
eGNlcHQgIHsNCiAgICB1c2luZyBfQ29tbW9uID0gOjpzdGQ6OiBfQ29tbW9uX2Zsb2F0X3R5cGVf
dDxfVHkxLCBfVHkyPjsNCg0KICAgIGlmIGNvbnN0ZXhwciAoOjpzdGQ6OiBpc19zYW1lX3Y8X0Nv
bW1vbiwgZmxvYXQ+KSB7DQogICAgICAgIHJldHVybiA6OiByZW1xdW9mKHN0YXRpY19jYXN0PF9D
b21tb24+KF9MZWZ0KSwgc3RhdGljX2Nhc3Q8X0NvbW1vbj4oX1JpZ2h0KSwgX1BxdW8pOw0KICAg
IH0gZWxzZSBpZiBjb25zdGV4cHIgKDo6c3RkOjogaXNfc2FtZV92PF9Db21tb24sIGRvdWJsZT4p
IHsNCiAgICAgICAgcmV0dXJuIDo6IHJlbXF1byhzdGF0aWNfY2FzdDxfQ29tbW9uPihfTGVmdCks
IHN0YXRpY19jYXN0PF9Db21tb24+KF9SaWdodCksIF9QcXVvKTsNCiAgICB9IGVsc2Ugew0KICAg
ICAgICByZXR1cm4gOjogcmVtcXVvbChzdGF0aWNfY2FzdDxfQ29tbW9uPihfTGVmdCksIHN0YXRp
Y19jYXN0PF9Db21tb24+KF9SaWdodCksIF9QcXVvKTsNCiAgICB9DQoNCg0KI2xpbmUgNTU4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNtYXRoIg0K
fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8
X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGFjb3MoX1R5IF9MZWZ0KSBub2V4
Y2VwdCB7IHJldHVybiA6OiBhY29zKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVt
cGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFs
X3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGFzaW4oX1R5IF9MZWZ0KSBu
b2V4Y2VwdCB7IHJldHVybiA6OiBhc2luKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0K
dGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVn
cmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGF0YW4oX1R5IF9MZWZ0
KSBub2V4Y2VwdCB7IHJldHVybiA6OiBhdGFuKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsg
fQ0KdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTIsIDo6c3RkOjogZW5hYmxlX2lmX3Q8
OjpzdGQ6OiBpc19hcml0aG1ldGljX3Y8X1R5MT4gJiYgOjpzdGQ6OiBpc19hcml0aG1ldGljX3Y8
X1R5Mj4sIGludD4gPSAwPiBbW25vZGlzY2FyZF1dIDo6c3RkOjogX0NvbW1vbl9mbG9hdF90eXBl
X3Q8X1R5MSwgX1R5Mj4gYXRhbjIoX1R5MSBfTGVmdCwgX1R5MiBfUmlnaHQpIG5vZXhjZXB0IHsg
dXNpbmcgX0NvbW1vbiA9IDo6c3RkOjogX0NvbW1vbl9mbG9hdF90eXBlX3Q8X1R5MSwgX1R5Mj47
IHJldHVybiA6OiBhdGFuMihzdGF0aWNfY2FzdDxfQ29tbW9uPihfTGVmdCksIHN0YXRpY19jYXN0
PF9Db21tb24+KF9SaWdodCkpOyB9DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCA6OnN0ZDo6IGVuYWJs
ZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRd
XSBkb3VibGUgY29zKF9UeSBfTGVmdCkgbm9leGNlcHQgeyByZXR1cm4gOjogY29zKHN0YXRpY19j
YXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFi
bGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJk
XV0gZG91YmxlIHNpbihfVHkgX0xlZnQpIG5vZXhjZXB0IHsgcmV0dXJuIDo6IHNpbihzdGF0aWNf
Y2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBsYXRlIDxjbGFzcyBfVHksIDo6c3RkOjogZW5h
YmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGludD4gPSAwPiBbW25vZGlzY2Fy
ZF1dIGRvdWJsZSB0YW4oX1R5IF9MZWZ0KSBub2V4Y2VwdCB7IHJldHVybiA6OiB0YW4oc3RhdGlj
X2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCA6OnN0ZDo6IGVu
YWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBpbnQ+ID0gMD4gW1tub2Rpc2Nh
cmRdXSBkb3VibGUgYWNvc2goX1R5IF9MZWZ0KSBub2V4Y2VwdCB7IHJldHVybiA6OiBhY29zaChz
dGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBsYXRlIDxjbGFzcyBfVHksIDo6c3Rk
OjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGludD4gPSAwPiBbW25v
ZGlzY2FyZF1dIGRvdWJsZSBhc2luaChfVHkgX0xlZnQpIG5vZXhjZXB0IHsgcmV0dXJuIDo6IGFz
aW5oKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwg
OjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+
IFtbbm9kaXNjYXJkXV0gZG91YmxlIGF0YW5oKF9UeSBfTGVmdCkgbm9leGNlcHQgeyByZXR1cm4g
OjogYXRhbmgoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBpbnQ+
ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgY29zaChfVHkgX0xlZnQpIG5vZXhjZXB0IHsgcmV0
dXJuIDo6IGNvc2goc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBp
bnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgc2luaChfVHkgX0xlZnQpIG5vZXhjZXB0IHsg
cmV0dXJuIDo6IHNpbmgoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+
LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgdGFuaChfVHkgX0xlZnQpIG5vZXhjZXB0
IHsgcmV0dXJuIDo6IHRhbmgoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0
ZSA8Y2xhc3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxf
VHk+LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgZXhwKF9UeSBfTGVmdCkgbm9leGNl
cHQgeyByZXR1cm4gOjogZXhwKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxh
dGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8
X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGV4cDIoX1R5IF9MZWZ0KSBub2V4
Y2VwdCB7IHJldHVybiA6OiBleHAyKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVt
cGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFs
X3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGV4cG0xKF9UeSBfTGVmdCkg
bm9leGNlcHQgeyByZXR1cm4gOjogZXhwbTEoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIDo6c3RkOjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19p
bnRlZ3JhbF92PF9UeT4sIGludD4gPSAwPiBbW25vZGlzY2FyZF1dIGludCBpbG9nYihfVHkgX0xl
ZnQpIG5vZXhjZXB0IHsgcmV0dXJuIDo6IGlsb2diKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQp
KTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlz
X2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGxkZXhwKF9U
eSBfTGVmdCwgaW50IF9BcmcyKSBub2V4Y2VwdCB7IHJldHVybiA6OiBsZGV4cChzdGF0aWNfY2Fz
dDxkb3VibGU+KF9MZWZ0KSwgX0FyZzIpOyB9DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCA6OnN0ZDo6
IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBpbnQ+ID0gMD4gW1tub2Rp
c2NhcmRdXSBkb3VibGUgbG9nKF9UeSBfTGVmdCkgbm9leGNlcHQgeyByZXR1cm4gOjogbG9nKHN0
YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6
OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9k
aXNjYXJkXV0gZG91YmxlIGxvZzEwKF9UeSBfTGVmdCkgbm9leGNlcHQgeyByZXR1cm4gOjogbG9n
MTAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCA6
OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBpbnQ+ID0gMD4g
W1tub2Rpc2NhcmRdXSBkb3VibGUgbG9nMXAoX1R5IF9MZWZ0KSBub2V4Y2VwdCB7IHJldHVybiA6
OiBsb2cxcChzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBsYXRlIDxjbGFzcyBf
VHksIDo6c3RkOjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGludD4g
PSAwPiBbW25vZGlzY2FyZF1dIGRvdWJsZSBsb2cyKF9UeSBfTGVmdCkgbm9leGNlcHQgeyByZXR1
cm4gOjogbG9nMihzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBsYXRlIDxjbGFz
cyBfVHksIDo6c3RkOjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGlu
dD4gPSAwPiBbW25vZGlzY2FyZF1dIGRvdWJsZSBsb2diKF9UeSBfTGVmdCkgbm9leGNlcHQgeyBy
ZXR1cm4gOjogbG9nYihzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5
PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIHNjYWxibihfVHkgX0xlZnQsIGludCBf
QXJnMikgbm9leGNlcHQgeyByZXR1cm4gOjogc2NhbGJuKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xl
ZnQpLCBfQXJnMik7IH0NCnRlbXBsYXRlIDxjbGFzcyBfVHksIDo6c3RkOjogZW5hYmxlX2lmX3Q8
OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGludD4gPSAwPiBbW25vZGlzY2FyZF1dIGRvdWJs
ZSBzY2FsYmxuKF9UeSBfTGVmdCwgbG9uZyBfQXJnMikgbm9leGNlcHQgeyByZXR1cm4gOjogc2Nh
bGJsbihzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSwgX0FyZzIpOyB9DQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBp
bnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgY2JydChfVHkgX0xlZnQpIG5vZXhjZXB0IHsg
cmV0dXJuIDo6IGNicnQoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQoNCnRlbXBsYXRl
IDxjbGFzcyBfVHksIDo6c3RkOjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9U
eT4sIGludD4gPSAwPiBbW25vZGlzY2FyZF1dIGRvdWJsZSBmYWJzKF9UeSBfTGVmdCkgbm9leGNl
cHQgeyByZXR1cm4gOjogZmFicyhzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBs
YXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjog
aXNfYXJpdGhtZXRpY192PF9UeTE+ICYmIDo6c3RkOjogaXNfYXJpdGhtZXRpY192PF9UeTI+LCBp
bnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEs
IF9UeTI+IGh5cG90KF9UeTEgX0xlZnQsIF9UeTIgX1JpZ2h0KSBub2V4Y2VwdCB7IHVzaW5nIF9D
b21tb24gPSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEsIF9UeTI+OyByZXR1cm4g
OjogaHlwb3Qoc3RhdGljX2Nhc3Q8X0NvbW1vbj4oX0xlZnQpLCBzdGF0aWNfY2FzdDxfQ29tbW9u
PihfUmlnaHQpKTsgfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5MiwgOjpzdGQ6
OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2FyaXRobWV0aWNfdjxfVHkxPiAmJiA6OnN0ZDo6IGlz
X2FyaXRobWV0aWNfdjxfVHkyPiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gOjpzdGQ6OiBfQ29t
bW9uX2Zsb2F0X3R5cGVfdDxfVHkxLCBfVHkyPiBwb3coX1R5MSBfTGVmdCwgX1R5MiBfUmlnaHQp
IG5vZXhjZXB0IHsgdXNpbmcgX0NvbW1vbiA9IDo6c3RkOjogX0NvbW1vbl9mbG9hdF90eXBlX3Q8
X1R5MSwgX1R5Mj47IHJldHVybiA6OiBwb3coc3RhdGljX2Nhc3Q8X0NvbW1vbj4oX0xlZnQpLCBz
dGF0aWNfY2FzdDxfQ29tbW9uPihfUmlnaHQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpz
dGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtb
bm9kaXNjYXJkXV0gZG91YmxlIHNxcnQoX1R5IF9MZWZ0KSBub2V4Y2VwdCB7IHJldHVybiA6OiBz
cXJ0KHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwg
OjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+
IFtbbm9kaXNjYXJkXV0gZG91YmxlIGVyZihfVHkgX0xlZnQpIG5vZXhjZXB0IHsgcmV0dXJuIDo6
IGVyZihzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBsYXRlIDxjbGFzcyBfVHks
IDo6c3RkOjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGludD4gPSAw
PiBbW25vZGlzY2FyZF1dIGRvdWJsZSBlcmZjKF9UeSBfTGVmdCkgbm9leGNlcHQgeyByZXR1cm4g
OjogZXJmYyhzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBsYXRlIDxjbGFzcyBf
VHksIDo6c3RkOjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGludD4g
PSAwPiBbW25vZGlzY2FyZF1dIGRvdWJsZSBsZ2FtbWEoX1R5IF9MZWZ0KSBub2V4Y2VwdCB7IHJl
dHVybiA6OiBsZ2FtbWEoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+
LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgdGdhbW1hKF9UeSBfTGVmdCkgbm9leGNl
cHQgeyByZXR1cm4gOjogdGdhbW1hKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVt
cGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFs
X3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGNlaWwoX1R5IF9MZWZ0KSBu
b2V4Y2VwdCB7IHJldHVybiA6OiBjZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0K
dGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVn
cmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIGZsb29yKF9UeSBfTGVm
dCkgbm9leGNlcHQgeyByZXR1cm4gOjogZmxvb3Ioc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkp
OyB9DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNf
aW50ZWdyYWxfdjxfVHk+LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgbmVhcmJ5aW50
KF9UeSBfTGVmdCkgbm9leGNlcHQgeyByZXR1cm4gOjogbmVhcmJ5aW50KHN0YXRpY19jYXN0PGRv
dWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZf
dDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91
YmxlIHJpbnQoX1R5IF9MZWZ0KSBub2V4Y2VwdCB7IHJldHVybiA6OiByaW50KHN0YXRpY19jYXN0
PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVf
aWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0g
bG9uZyBscmludChfVHkgX0xlZnQpIG5vZXhjZXB0IHsgcmV0dXJuIDo6IGxyaW50KHN0YXRpY19j
YXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFi
bGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJk
XV0gbG9uZyBsb25nIGxscmludChfVHkgX0xlZnQpIG5vZXhjZXB0IHsgcmV0dXJuIDo6IGxscmlu
dChzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7IH0NCnRlbXBsYXRlIDxjbGFzcyBfVHksIDo6
c3RkOjogZW5hYmxlX2lmX3Q8OjpzdGQ6OiBpc19pbnRlZ3JhbF92PF9UeT4sIGludD4gPSAwPiBb
W25vZGlzY2FyZF1dIGRvdWJsZSByb3VuZChfVHkgX0xlZnQpIG5vZXhjZXB0IHsgcmV0dXJuIDo6
IHJvdW5kKHN0YXRpY19jYXN0PGRvdWJsZT4oX0xlZnQpKTsgfQ0KdGVtcGxhdGUgPGNsYXNzIF9U
eSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8X1R5PiwgaW50PiA9
IDA+IFtbbm9kaXNjYXJkXV0gbG9uZyBscm91bmQoX1R5IF9MZWZ0KSBub2V4Y2VwdCB7IHJldHVy
biA6OiBscm91bmQoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0ZW1wbGF0ZSA8Y2xh
c3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdyYWxfdjxfVHk+LCBp
bnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBsb25nIGxvbmcgbGxyb3VuZChfVHkgX0xlZnQpIG5vZXhj
ZXB0IHsgcmV0dXJuIDo6IGxscm91bmQoc3RhdGljX2Nhc3Q8ZG91YmxlPihfTGVmdCkpOyB9DQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5LCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfaW50ZWdy
YWxfdjxfVHk+LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSBkb3VibGUgdHJ1bmMoX1R5IF9MZWZ0
KSBub2V4Y2VwdCB7IHJldHVybiA6OiB0cnVuYyhzdGF0aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSk7
IH0NCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCA6OnN0ZDo6IGVuYWJsZV9pZl90
PDo6c3RkOjogaXNfYXJpdGhtZXRpY192PF9UeTE+ICYmIDo6c3RkOjogaXNfYXJpdGhtZXRpY192
PF9UeTI+LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlw
ZV90PF9UeTEsIF9UeTI+IGZtb2QoX1R5MSBfTGVmdCwgX1R5MiBfUmlnaHQpIG5vZXhjZXB0IHsg
dXNpbmcgX0NvbW1vbiA9IDo6c3RkOjogX0NvbW1vbl9mbG9hdF90eXBlX3Q8X1R5MSwgX1R5Mj47
IHJldHVybiA6OiBmbW9kKHN0YXRpY19jYXN0PF9Db21tb24+KF9MZWZ0KSwgc3RhdGljX2Nhc3Q8
X0NvbW1vbj4oX1JpZ2h0KSk7IH0NCnRlbXBsYXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCA6
OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjogaXNfYXJpdGhtZXRpY192PF9UeTE+ICYmIDo6c3Rk
OjogaXNfYXJpdGhtZXRpY192PF9UeTI+LCBpbnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSA6OnN0ZDo6
IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEsIF9UeTI+IHJlbWFpbmRlcihfVHkxIF9MZWZ0LCBf
VHkyIF9SaWdodCkgbm9leGNlcHQgeyB1c2luZyBfQ29tbW9uID0gOjpzdGQ6OiBfQ29tbW9uX2Zs
b2F0X3R5cGVfdDxfVHkxLCBfVHkyPjsgcmV0dXJuIDo6IHJlbWFpbmRlcihzdGF0aWNfY2FzdDxf
Q29tbW9uPihfTGVmdCksIHN0YXRpY19jYXN0PF9Db21tb24+KF9SaWdodCkpOyB9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHkxLCBjbGFzcyBfVHkyLCA6OnN0ZDo6IGVuYWJsZV9pZl90PDo6c3RkOjog
aXNfYXJpdGhtZXRpY192PF9UeTE+ICYmIDo6c3RkOjogaXNfYXJpdGhtZXRpY192PF9UeTI+LCBp
bnQ+ID0gMD4gW1tub2Rpc2NhcmRdXSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEs
IF9UeTI+IGNvcHlzaWduKF9UeTEgX0xlZnQsIF9UeTIgX1JpZ2h0KSBub2V4Y2VwdCB7IHVzaW5n
IF9Db21tb24gPSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEsIF9UeTI+OyByZXR1
cm4gOjogY29weXNpZ24oc3RhdGljX2Nhc3Q8X0NvbW1vbj4oX0xlZnQpLCBzdGF0aWNfY2FzdDxf
Q29tbW9uPihfUmlnaHQpKTsgfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Miwg
OjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2FyaXRobWV0aWNfdjxfVHkxPiAmJiA6OnN0
ZDo6IGlzX2FyaXRobWV0aWNfdjxfVHkyPiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gOjpzdGQ6
OiBfQ29tbW9uX2Zsb2F0X3R5cGVfdDxfVHkxLCBfVHkyPiBuZXh0YWZ0ZXIoX1R5MSBfTGVmdCwg
X1R5MiBfUmlnaHQpIG5vZXhjZXB0IHsgdXNpbmcgX0NvbW1vbiA9IDo6c3RkOjogX0NvbW1vbl9m
bG9hdF90eXBlX3Q8X1R5MSwgX1R5Mj47IHJldHVybiA6OiBuZXh0YWZ0ZXIoc3RhdGljX2Nhc3Q8
X0NvbW1vbj4oX0xlZnQpLCBzdGF0aWNfY2FzdDxfQ29tbW9uPihfUmlnaHQpKTsgfQ0KdGVtcGxh
dGUgPGNsYXNzIF9UeSwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2ludGVncmFsX3Y8
X1R5PiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gZG91YmxlIG5leHR0b3dhcmQoX1R5IF9MZWZ0
LCBsb25nIGRvdWJsZSBfQXJnMikgbm9leGNlcHQgeyByZXR1cm4gOjogbmV4dHRvd2FyZChzdGF0
aWNfY2FzdDxkb3VibGU+KF9MZWZ0KSwgX0FyZzIpOyB9DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwg
Y2xhc3MgX1R5MiwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6IGlzX2FyaXRobWV0aWNfdjxf
VHkxPiAmJiA6OnN0ZDo6IGlzX2FyaXRobWV0aWNfdjxfVHkyPiwgaW50PiA9IDA+IFtbbm9kaXNj
YXJkXV0gOjpzdGQ6OiBfQ29tbW9uX2Zsb2F0X3R5cGVfdDxfVHkxLCBfVHkyPiBmZGltKF9UeTEg
X0xlZnQsIF9UeTIgX1JpZ2h0KSBub2V4Y2VwdCB7IHVzaW5nIF9Db21tb24gPSA6OnN0ZDo6IF9D
b21tb25fZmxvYXRfdHlwZV90PF9UeTEsIF9UeTI+OyByZXR1cm4gOjogZmRpbShzdGF0aWNfY2Fz
dDxfQ29tbW9uPihfTGVmdCksIHN0YXRpY19jYXN0PF9Db21tb24+KF9SaWdodCkpOyB9DQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5MiwgOjpzdGQ6OiBlbmFibGVfaWZfdDw6OnN0ZDo6
IGlzX2FyaXRobWV0aWNfdjxfVHkxPiAmJiA6OnN0ZDo6IGlzX2FyaXRobWV0aWNfdjxfVHkyPiwg
aW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gOjpzdGQ6OiBfQ29tbW9uX2Zsb2F0X3R5cGVfdDxfVHkx
LCBfVHkyPiBmbWF4KF9UeTEgX0xlZnQsIF9UeTIgX1JpZ2h0KSBub2V4Y2VwdCB7IHVzaW5nIF9D
b21tb24gPSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEsIF9UeTI+OyByZXR1cm4g
OjogZm1heChzdGF0aWNfY2FzdDxfQ29tbW9uPihfTGVmdCksIHN0YXRpY19jYXN0PF9Db21tb24+
KF9SaWdodCkpOyB9DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5MiwgOjpzdGQ6OiBl
bmFibGVfaWZfdDw6OnN0ZDo6IGlzX2FyaXRobWV0aWNfdjxfVHkxPiAmJiA6OnN0ZDo6IGlzX2Fy
aXRobWV0aWNfdjxfVHkyPiwgaW50PiA9IDA+IFtbbm9kaXNjYXJkXV0gOjpzdGQ6OiBfQ29tbW9u
X2Zsb2F0X3R5cGVfdDxfVHkxLCBfVHkyPiBmbWluKF9UeTEgX0xlZnQsIF9UeTIgX1JpZ2h0KSBu
b2V4Y2VwdCB7IHVzaW5nIF9Db21tb24gPSA6OnN0ZDo6IF9Db21tb25fZmxvYXRfdHlwZV90PF9U
eTEsIF9UeTI+OyByZXR1cm4gOjogZm1pbihzdGF0aWNfY2FzdDxfQ29tbW9uPihfTGVmdCksIHN0
YXRpY19jYXN0PF9Db21tb24+KF9SaWdodCkpOyB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KbmFt
ZXNwYWNlIHN0ZCB7DQp1c2luZyA6OiBhYnM7DQp1c2luZyA6OiBhY29zOw0KdXNpbmcgOjogYXNp
bjsNCnVzaW5nIDo6IGF0YW47DQp1c2luZyA6OiBhdGFuMjsNCnVzaW5nIDo6IGNlaWw7DQp1c2lu
ZyA6OiBjb3M7DQp1c2luZyA6OiBjb3NoOw0KdXNpbmcgOjogZXhwOw0KdXNpbmcgOjogZmFiczsN
CnVzaW5nIDo6IGZsb29yOw0KdXNpbmcgOjogZm1vZDsNCnVzaW5nIDo6IGZyZXhwOw0KdXNpbmcg
OjogbGRleHA7DQp1c2luZyA6OiBsb2c7DQp1c2luZyA6OiBsb2cxMDsNCnVzaW5nIDo6IG1vZGY7
DQp1c2luZyA6OiBwb3c7DQp1c2luZyA6OiBzaW47DQp1c2luZyA6OiBzaW5oOw0KdXNpbmcgOjog
c3FydDsNCnVzaW5nIDo6IHRhbjsNCnVzaW5nIDo6IHRhbmg7DQoNCnVzaW5nIDo6IGFjb3NmOw0K
dXNpbmcgOjogYXNpbmY7DQp1c2luZyA6OiBhdGFuZjsNCnVzaW5nIDo6IGF0YW4yZjsNCnVzaW5n
IDo6IGNlaWxmOw0KdXNpbmcgOjogY29zZjsNCnVzaW5nIDo6IGNvc2hmOw0KdXNpbmcgOjogZXhw
ZjsNCnVzaW5nIDo6IGZhYnNmOw0KdXNpbmcgOjogZmxvb3JmOw0KdXNpbmcgOjogZm1vZGY7DQp1
c2luZyA6OiBmcmV4cGY7DQp1c2luZyA6OiBsZGV4cGY7DQp1c2luZyA6OiBsb2dmOw0KdXNpbmcg
OjogbG9nMTBmOw0KdXNpbmcgOjogbW9kZmY7DQp1c2luZyA6OiBwb3dmOw0KdXNpbmcgOjogc2lu
ZjsNCnVzaW5nIDo6IHNpbmhmOw0KdXNpbmcgOjogc3FydGY7DQp1c2luZyA6OiB0YW5mOw0KdXNp
bmcgOjogdGFuaGY7DQoNCnVzaW5nIDo6IGFjb3NsOw0KdXNpbmcgOjogYXNpbmw7DQp1c2luZyA6
OiBhdGFubDsNCnVzaW5nIDo6IGF0YW4ybDsNCnVzaW5nIDo6IGNlaWxsOw0KdXNpbmcgOjogY29z
bDsNCnVzaW5nIDo6IGNvc2hsOw0KdXNpbmcgOjogZXhwbDsNCnVzaW5nIDo6IGZhYnNsOw0KdXNp
bmcgOjogZmxvb3JsOw0KdXNpbmcgOjogZm1vZGw7DQp1c2luZyA6OiBmcmV4cGw7DQp1c2luZyA6
OiBsZGV4cGw7DQp1c2luZyA6OiBsb2dsOw0KdXNpbmcgOjogbG9nMTBsOw0KdXNpbmcgOjogbW9k
Zmw7DQp1c2luZyA6OiBwb3dsOw0KdXNpbmcgOjogc2lubDsNCnVzaW5nIDo6IHNpbmhsOw0KdXNp
bmcgOjogc3FydGw7DQp1c2luZyA6OiB0YW5sOw0KdXNpbmcgOjogdGFuaGw7DQoNCnVzaW5nIDo6
IGZsb2F0X3Q7DQp1c2luZyA6OiBkb3VibGVfdDsNCg0KdXNpbmcgOjogYWNvc2g7DQp1c2luZyA6
OiBhc2luaDsNCnVzaW5nIDo6IGF0YW5oOw0KdXNpbmcgOjogY2JydDsNCnVzaW5nIDo6IGVyZjsN
CnVzaW5nIDo6IGVyZmM7DQp1c2luZyA6OiBleHBtMTsNCnVzaW5nIDo6IGV4cDI7DQp1c2luZyA6
OiBoeXBvdDsNCnVzaW5nIDo6IGlsb2diOw0KdXNpbmcgOjogbGdhbW1hOw0KdXNpbmcgOjogbG9n
MXA7DQp1c2luZyA6OiBsb2cyOw0KdXNpbmcgOjogbG9nYjsNCnVzaW5nIDo6IGxscmludDsNCnVz
aW5nIDo6IGxyaW50Ow0KdXNpbmcgOjogbmVhcmJ5aW50Ow0KdXNpbmcgOjogcmludDsNCnVzaW5n
IDo6IGxscm91bmQ7DQp1c2luZyA6OiBscm91bmQ7DQp1c2luZyA6OiBmZGltOw0KdXNpbmcgOjog
Zm1hOw0KdXNpbmcgOjogZm1heDsNCnVzaW5nIDo6IGZtaW47DQp1c2luZyA6OiByb3VuZDsNCnVz
aW5nIDo6IHRydW5jOw0KdXNpbmcgOjogcmVtYWluZGVyOw0KdXNpbmcgOjogcmVtcXVvOw0KdXNp
bmcgOjogY29weXNpZ247DQp1c2luZyA6OiBuYW47DQp1c2luZyA6OiBuZXh0YWZ0ZXI7DQp1c2lu
ZyA6OiBzY2FsYm47DQp1c2luZyA6OiBzY2FsYmxuOw0KdXNpbmcgOjogbmV4dHRvd2FyZDsNCnVz
aW5nIDo6IHRnYW1tYTsNCg0KdXNpbmcgOjogYWNvc2hmOw0KdXNpbmcgOjogYXNpbmhmOw0KdXNp
bmcgOjogYXRhbmhmOw0KdXNpbmcgOjogY2JydGY7DQp1c2luZyA6OiBlcmZmOw0KdXNpbmcgOjog
ZXJmY2Y7DQp1c2luZyA6OiBleHBtMWY7DQp1c2luZyA6OiBleHAyZjsNCnVzaW5nIDo6IGh5cG90
ZjsNCnVzaW5nIDo6IGlsb2diZjsNCnVzaW5nIDo6IGxnYW1tYWY7DQp1c2luZyA6OiBsb2cxcGY7
DQp1c2luZyA6OiBsb2cyZjsNCnVzaW5nIDo6IGxvZ2JmOw0KdXNpbmcgOjogbGxyaW50ZjsNCnVz
aW5nIDo6IGxyaW50ZjsNCnVzaW5nIDo6IG5lYXJieWludGY7DQp1c2luZyA6OiByaW50ZjsNCnVz
aW5nIDo6IGxscm91bmRmOw0KdXNpbmcgOjogbHJvdW5kZjsNCnVzaW5nIDo6IGZkaW1mOw0KdXNp
bmcgOjogZm1hZjsNCnVzaW5nIDo6IGZtYXhmOw0KdXNpbmcgOjogZm1pbmY7DQp1c2luZyA6OiBy
b3VuZGY7DQp1c2luZyA6OiB0cnVuY2Y7DQp1c2luZyA6OiByZW1haW5kZXJmOw0KdXNpbmcgOjog
cmVtcXVvZjsNCnVzaW5nIDo6IGNvcHlzaWduZjsNCnVzaW5nIDo6IG5hbmY7DQp1c2luZyA6OiBu
ZXh0YWZ0ZXJmOw0KdXNpbmcgOjogc2NhbGJuZjsNCnVzaW5nIDo6IHNjYWxibG5mOw0KdXNpbmcg
OjogbmV4dHRvd2FyZGY7DQp1c2luZyA6OiB0Z2FtbWFmOw0KDQp1c2luZyA6OiBhY29zaGw7DQp1
c2luZyA6OiBhc2luaGw7DQp1c2luZyA6OiBhdGFuaGw7DQp1c2luZyA6OiBjYnJ0bDsNCnVzaW5n
IDo6IGVyZmw7DQp1c2luZyA6OiBlcmZjbDsNCnVzaW5nIDo6IGV4cG0xbDsNCnVzaW5nIDo6IGV4
cDJsOw0KdXNpbmcgOjogaHlwb3RsOw0KdXNpbmcgOjogaWxvZ2JsOw0KdXNpbmcgOjogbGdhbW1h
bDsNCnVzaW5nIDo6IGxvZzFwbDsNCnVzaW5nIDo6IGxvZzJsOw0KdXNpbmcgOjogbG9nYmw7DQp1
c2luZyA6OiBsbHJpbnRsOw0KdXNpbmcgOjogbHJpbnRsOw0KdXNpbmcgOjogbmVhcmJ5aW50bDsN
CnVzaW5nIDo6IHJpbnRsOw0KdXNpbmcgOjogbGxyb3VuZGw7DQp1c2luZyA6OiBscm91bmRsOw0K
dXNpbmcgOjogZmRpbWw7DQp1c2luZyA6OiBmbWFsOw0KdXNpbmcgOjogZm1heGw7DQp1c2luZyA6
OiBmbWlubDsNCnVzaW5nIDo6IHJvdW5kbDsNCnVzaW5nIDo6IHRydW5jbDsNCnVzaW5nIDo6IHJl
bWFpbmRlcmw7DQp1c2luZyA6OiByZW1xdW9sOw0KdXNpbmcgOjogY29weXNpZ25sOw0KdXNpbmcg
OjogbmFubDsNCnVzaW5nIDo6IG5leHRhZnRlcmw7DQp1c2luZyA6OiBzY2FsYm5sOw0KdXNpbmcg
Ojogc2NhbGJsbmw7DQp1c2luZyA6OiBuZXh0dG93YXJkbDsNCnVzaW5nIDo6IHRnYW1tYWw7DQoN
CnVzaW5nIDo6IGZwY2xhc3NpZnk7DQp1c2luZyA6OiBzaWduYml0Ow0KdXNpbmcgOjogaXNmaW5p
dGU7DQp1c2luZyA6OiBpc2luZjsNCnVzaW5nIDo6IGlzbmFuOw0KdXNpbmcgOjogaXNub3JtYWw7
DQp1c2luZyA6OiBpc2dyZWF0ZXI7DQp1c2luZyA6OiBpc2dyZWF0ZXJlcXVhbDsNCnVzaW5nIDo6
IGlzbGVzczsNCnVzaW5nIDo6IGlzbGVzc2VxdWFsOw0KdXNpbmcgOjogaXNsZXNzZ3JlYXRlcjsN
CnVzaW5nIDo6IGlzdW5vcmRlcmVkOw0KfQ0KDQoNCmV4dGVybiAiQyIgew0KIFtbbm9kaXNjYXJk
XV0gZG91YmxlIF9fc3RkY2FsbCBfX3N0ZF9zbWZfYXNzb2NfbGFndWVycmUodW5zaWduZWQgaW50
LCB1bnNpZ25lZCBpbnQsIGRvdWJsZSkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBf
X3N0ZGNhbGwgX19zdGRfc21mX2Fzc29jX2xhZ3VlcnJlZih1bnNpZ25lZCBpbnQsIHVuc2lnbmVk
IGludCwgZmxvYXQpIG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZG91YmxlIF9fc3RkY2FsbCBf
X3N0ZF9zbWZfYXNzb2NfbGVnZW5kcmUodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIGRvdWJs
ZSkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBfX3N0ZGNhbGwgX19zdGRfc21mX2Fz
c29jX2xlZ2VuZHJlZih1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgZmxvYXQpIG5vZXhjZXB0
Ow0KIFtbbm9kaXNjYXJkXV0gZG91YmxlIF9fc3RkY2FsbCBfX3N0ZF9zbWZfYmV0YShkb3VibGUs
IGRvdWJsZSkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBfX3N0ZGNhbGwgX19zdGRf
c21mX2JldGFmKGZsb2F0LCBmbG9hdCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBkb3VibGUg
X19zdGRjYWxsIF9fc3RkX3NtZl9jb21wX2VsbGludF8xKGRvdWJsZSkgbm9leGNlcHQ7DQogW1tu
b2Rpc2NhcmRdXSBmbG9hdCBfX3N0ZGNhbGwgX19zdGRfc21mX2NvbXBfZWxsaW50XzFmKGZsb2F0
KSBub2V4Y2VwdDsNCiBbW25vZGlzY2FyZF1dIGRvdWJsZSBfX3N0ZGNhbGwgX19zdGRfc21mX2Nv
bXBfZWxsaW50XzIoZG91YmxlKSBub2V4Y2VwdDsNCiBbW25vZGlzY2FyZF1dIGZsb2F0IF9fc3Rk
Y2FsbCBfX3N0ZF9zbWZfY29tcF9lbGxpbnRfMmYoZmxvYXQpIG5vZXhjZXB0Ow0KIFtbbm9kaXNj
YXJkXV0gZG91YmxlIF9fc3RkY2FsbCBfX3N0ZF9zbWZfY29tcF9lbGxpbnRfMyhkb3VibGUsIGRv
dWJsZSkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBfX3N0ZGNhbGwgX19zdGRfc21m
X2NvbXBfZWxsaW50XzNmKGZsb2F0LCBmbG9hdCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBk
b3VibGUgX19zdGRjYWxsIF9fc3RkX3NtZl9jeWxfYmVzc2VsX2koZG91YmxlLCBkb3VibGUpIG5v
ZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZmxvYXQgX19zdGRjYWxsIF9fc3RkX3NtZl9jeWxfYmVz
c2VsX2lmKGZsb2F0LCBmbG9hdCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBkb3VibGUgX19z
dGRjYWxsIF9fc3RkX3NtZl9jeWxfYmVzc2VsX2ooZG91YmxlLCBkb3VibGUpIG5vZXhjZXB0Ow0K
IFtbbm9kaXNjYXJkXV0gZmxvYXQgX19zdGRjYWxsIF9fc3RkX3NtZl9jeWxfYmVzc2VsX2pmKGZs
b2F0LCBmbG9hdCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBkb3VibGUgX19zdGRjYWxsIF9f
c3RkX3NtZl9jeWxfYmVzc2VsX2soZG91YmxlLCBkb3VibGUpIG5vZXhjZXB0Ow0KIFtbbm9kaXNj
YXJkXV0gZmxvYXQgX19zdGRjYWxsIF9fc3RkX3NtZl9jeWxfYmVzc2VsX2tmKGZsb2F0LCBmbG9h
dCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBkb3VibGUgX19zdGRjYWxsIF9fc3RkX3NtZl9j
eWxfbmV1bWFubihkb3VibGUsIGRvdWJsZSkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9h
dCBfX3N0ZGNhbGwgX19zdGRfc21mX2N5bF9uZXVtYW5uZihmbG9hdCwgZmxvYXQpIG5vZXhjZXB0
Ow0KIFtbbm9kaXNjYXJkXV0gZG91YmxlIF9fc3RkY2FsbCBfX3N0ZF9zbWZfZWxsaW50XzEoZG91
YmxlLCBkb3VibGUpIG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZmxvYXQgX19zdGRjYWxsIF9f
c3RkX3NtZl9lbGxpbnRfMWYoZmxvYXQsIGZsb2F0KSBub2V4Y2VwdDsNCiBbW25vZGlzY2FyZF1d
IGRvdWJsZSBfX3N0ZGNhbGwgX19zdGRfc21mX2VsbGludF8yKGRvdWJsZSwgZG91YmxlKSBub2V4
Y2VwdDsNCiBbW25vZGlzY2FyZF1dIGZsb2F0IF9fc3RkY2FsbCBfX3N0ZF9zbWZfZWxsaW50XzJm
KGZsb2F0LCBmbG9hdCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBkb3VibGUgX19zdGRjYWxs
IF9fc3RkX3NtZl9lbGxpbnRfMyhkb3VibGUsIGRvdWJsZSwgZG91YmxlKSBub2V4Y2VwdDsNCiBb
W25vZGlzY2FyZF1dIGZsb2F0IF9fc3RkY2FsbCBfX3N0ZF9zbWZfZWxsaW50XzNmKGZsb2F0LCBm
bG9hdCwgZmxvYXQpIG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZG91YmxlIF9fc3RkY2FsbCBf
X3N0ZF9zbWZfZXhwaW50KGRvdWJsZSkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBf
X3N0ZGNhbGwgX19zdGRfc21mX2V4cGludGYoZmxvYXQpIG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJk
XV0gZG91YmxlIF9fc3RkY2FsbCBfX3N0ZF9zbWZfaGVybWl0ZSh1bnNpZ25lZCBpbnQsIGRvdWJs
ZSkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBfX3N0ZGNhbGwgX19zdGRfc21mX2hl
cm1pdGVmKHVuc2lnbmVkIGludCwgZmxvYXQpIG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZG91
YmxlIF9fc3RkY2FsbCBfX3N0ZF9zbWZfbGFndWVycmUodW5zaWduZWQgaW50LCBkb3VibGUpIG5v
ZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZmxvYXQgX19zdGRjYWxsIF9fc3RkX3NtZl9sYWd1ZXJy
ZWYodW5zaWduZWQgaW50LCBmbG9hdCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBkb3VibGUg
X19zdGRjYWxsIF9fc3RkX3NtZl9sZWdlbmRyZSh1bnNpZ25lZCBpbnQsIGRvdWJsZSkgbm9leGNl
cHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBfX3N0ZGNhbGwgX19zdGRfc21mX2xlZ2VuZHJlZih1
bnNpZ25lZCBpbnQsIGZsb2F0KSBub2V4Y2VwdDsNCiBbW25vZGlzY2FyZF1dIGRvdWJsZSBfX3N0
ZGNhbGwgX19zdGRfc21mX3JpZW1hbm5femV0YShkb3VibGUpIG5vZXhjZXB0Ow0KIFtbbm9kaXNj
YXJkXV0gZmxvYXQgX19zdGRjYWxsIF9fc3RkX3NtZl9yaWVtYW5uX3pldGFmKGZsb2F0KSBub2V4
Y2VwdDsNCiBbW25vZGlzY2FyZF1dIGRvdWJsZSBfX3N0ZGNhbGwgX19zdGRfc21mX3NwaF9iZXNz
ZWwodW5zaWduZWQgaW50LCBkb3VibGUpIG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZmxvYXQg
X19zdGRjYWxsIF9fc3RkX3NtZl9zcGhfYmVzc2VsZih1bnNpZ25lZCBpbnQsIGZsb2F0KSBub2V4
Y2VwdDsNCiBbW25vZGlzY2FyZF1dIGRvdWJsZSBfX3N0ZGNhbGwgX19zdGRfc21mX3NwaF9sZWdl
bmRyZSh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgZG91YmxlKSBub2V4Y2VwdDsNCiBbW25v
ZGlzY2FyZF1dIGZsb2F0IF9fc3RkY2FsbCBfX3N0ZF9zbWZfc3BoX2xlZ2VuZHJlZih1bnNpZ25l
ZCBpbnQsIHVuc2lnbmVkIGludCwgZmxvYXQpIG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZG91
YmxlIF9fc3RkY2FsbCBfX3N0ZF9zbWZfc3BoX25ldW1hbm4odW5zaWduZWQgaW50LCBkb3VibGUp
IG5vZXhjZXB0Ow0KIFtbbm9kaXNjYXJkXV0gZmxvYXQgX19zdGRjYWxsIF9fc3RkX3NtZl9zcGhf
bmV1bWFubmYodW5zaWduZWQgaW50LCBmbG9hdCkgbm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBk
b3VibGUgX19zdGRjYWxsIF9fc3RkX3NtZl9oeXBvdDMoZG91YmxlLCBkb3VibGUsIGRvdWJsZSkg
bm9leGNlcHQ7DQogW1tub2Rpc2NhcmRdXSBmbG9hdCBfX3N0ZGNhbGwgX19zdGRfc21mX2h5cG90
M2YoZmxvYXQsIGZsb2F0LCBmbG9hdCkgbm9leGNlcHQ7DQp9DQoNCm5hbWVzcGFjZSBzdGQgew0K
DQpbW25vZGlzY2FyZF1dIGlubGluZSBkb3VibGUgYXNzb2NfbGFndWVycmUoY29uc3QgdW5zaWdu
ZWQgaW50IF9EZWdyZWUsIGNvbnN0IHVuc2lnbmVkIGludCBfT3JkZXIsIGNvbnN0IGRvdWJsZSBf
VmFsdWUpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2Fzc29jX2xhZ3VlcnJlKF9EZWdyZWUsIF9P
cmRlciwgX1ZhbHVlKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBmbG9hdCBhc3NvY19s
YWd1ZXJyZWYoY29uc3QgdW5zaWduZWQgaW50IF9EZWdyZWUsIGNvbnN0IHVuc2lnbmVkIGludCBf
T3JkZXIsIGNvbnN0IGZsb2F0IF9WYWx1ZSkgew0KICAgIHJldHVybiBfX3N0ZF9zbWZfYXNzb2Nf
bGFndWVycmVmKF9EZWdyZWUsIF9PcmRlciwgX1ZhbHVlKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1d
IGlubGluZSBsb25nIGRvdWJsZSBhc3NvY19sYWd1ZXJyZWwoDQogICAgY29uc3QgdW5zaWduZWQg
aW50IF9EZWdyZWUsIGNvbnN0IHVuc2lnbmVkIGludCBfT3JkZXIsIGNvbnN0IGxvbmcgZG91Ymxl
IF9WYWx1ZSkgew0KICAgIHJldHVybiBfX3N0ZF9zbWZfYXNzb2NfbGFndWVycmUoX0RlZ3JlZSwg
X09yZGVyLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9WYWx1ZSkpOw0KfQ0KDQoNCltbbm9kaXNjYXJk
XV0gaW5saW5lIGRvdWJsZSBhc3NvY19sZWdlbmRyZShjb25zdCB1bnNpZ25lZCBpbnQgX0RlZ3Jl
ZSwgY29uc3QgdW5zaWduZWQgaW50IF9PcmRlciwgY29uc3QgZG91YmxlIF9WYWx1ZSkgew0KICAg
IHJldHVybiBfX3N0ZF9zbWZfYXNzb2NfbGVnZW5kcmUoX0RlZ3JlZSwgX09yZGVyLCBfVmFsdWUp
Ow0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGZsb2F0IGFzc29jX2xlZ2VuZHJlZihjb25z
dCB1bnNpZ25lZCBpbnQgX0RlZ3JlZSwgY29uc3QgdW5zaWduZWQgaW50IF9PcmRlciwgY29uc3Qg
ZmxvYXQgX1ZhbHVlKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9hc3NvY19sZWdlbmRyZWYoX0Rl
Z3JlZSwgX09yZGVyLCBfVmFsdWUpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGxvbmcg
ZG91YmxlIGFzc29jX2xlZ2VuZHJlbCgNCiAgICBjb25zdCB1bnNpZ25lZCBpbnQgX0RlZ3JlZSwg
Y29uc3QgdW5zaWduZWQgaW50IF9PcmRlciwgY29uc3QgbG9uZyBkb3VibGUgX1ZhbHVlKSB7DQog
ICAgcmV0dXJuIF9fc3RkX3NtZl9hc3NvY19sZWdlbmRyZShfRGVncmVlLCBfT3JkZXIsIHN0YXRp
Y19jYXN0PGRvdWJsZT4oX1ZhbHVlKSk7DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgZG91
YmxlIGJldGEoY29uc3QgZG91YmxlIF9BcmcxLCBjb25zdCBkb3VibGUgX0FyZzIpIHsNCiAgICBy
ZXR1cm4gX19zdGRfc21mX2JldGEoX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1d
IGlubGluZSBmbG9hdCBiZXRhZihjb25zdCBmbG9hdCBfQXJnMSwgY29uc3QgZmxvYXQgX0FyZzIp
IHsNCiAgICByZXR1cm4gX19zdGRfc21mX2JldGFmKF9BcmcxLCBfQXJnMik7DQp9DQoNCg0KW1tu
b2Rpc2NhcmRdXSBpbmxpbmUgbG9uZyBkb3VibGUgYmV0YWwoY29uc3QgbG9uZyBkb3VibGUgX0Fy
ZzEsIGNvbnN0IGxvbmcgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9iZXRh
KHN0YXRpY19jYXN0PGRvdWJsZT4oX0FyZzEpLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcyKSk7
DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgZG91YmxlIGNvbXBfZWxsaW50XzEoY29uc3Qg
ZG91YmxlIF9BcmcpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2NvbXBfZWxsaW50XzEoX0FyZyk7
DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgZmxvYXQgY29tcF9lbGxpbnRfMWYoY29uc3Qg
ZmxvYXQgX0FyZykgew0KICAgIHJldHVybiBfX3N0ZF9zbWZfY29tcF9lbGxpbnRfMWYoX0FyZyk7
DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgbG9uZyBkb3VibGUgY29tcF9lbGxpbnRfMWwo
Y29uc3QgbG9uZyBkb3VibGUgX0FyZykgew0KICAgIHJldHVybiBfX3N0ZF9zbWZfY29tcF9lbGxp
bnRfMShzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcpKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBkb3VibGUgY29tcF9lbGxpbnRfMihjb25zdCBkb3VibGUgX0FyZykgew0KICAgIHJldHVy
biBfX3N0ZF9zbWZfY29tcF9lbGxpbnRfMihfQXJnKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBmbG9hdCBjb21wX2VsbGludF8yZihjb25zdCBmbG9hdCBfQXJnKSB7DQogICAgcmV0dXJu
IF9fc3RkX3NtZl9jb21wX2VsbGludF8yZihfQXJnKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBsb25nIGRvdWJsZSBjb21wX2VsbGludF8ybChjb25zdCBsb25nIGRvdWJsZSBfQXJnKSB7
DQogICAgcmV0dXJuIF9fc3RkX3NtZl9jb21wX2VsbGludF8yKHN0YXRpY19jYXN0PGRvdWJsZT4o
X0FyZykpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGRvdWJsZSBjb21wX2VsbGludF8z
KGNvbnN0IGRvdWJsZSBfQXJnMSwgY29uc3QgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9f
c3RkX3NtZl9jb21wX2VsbGludF8zKF9BcmcxLCBfQXJnMik7DQp9DQoNCg0KW1tub2Rpc2NhcmRd
XSBpbmxpbmUgZmxvYXQgY29tcF9lbGxpbnRfM2YoY29uc3QgZmxvYXQgX0FyZzEsIGNvbnN0IGZs
b2F0IF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9jb21wX2VsbGludF8zZihfQXJnMSwg
X0FyZzIpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGxvbmcgZG91YmxlIGNvbXBfZWxs
aW50XzNsKGNvbnN0IGxvbmcgZG91YmxlIF9BcmcxLCBjb25zdCBsb25nIGRvdWJsZSBfQXJnMikg
ew0KICAgIHJldHVybiBfX3N0ZF9zbWZfY29tcF9lbGxpbnRfMyhzdGF0aWNfY2FzdDxkb3VibGU+
KF9BcmcxKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihfQXJnMikpOw0KfQ0KDQoNCltbbm9kaXNjYXJk
XV0gaW5saW5lIGRvdWJsZSBjeWxfYmVzc2VsX2koY29uc3QgZG91YmxlIF9BcmcxLCBjb25zdCBk
b3VibGUgX0FyZzIpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2N5bF9iZXNzZWxfaShfQXJnMSwg
X0FyZzIpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGZsb2F0IGN5bF9iZXNzZWxfaWYo
Y29uc3QgZmxvYXQgX0FyZzEsIGNvbnN0IGZsb2F0IF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3Rk
X3NtZl9jeWxfYmVzc2VsX2lmKF9BcmcxLCBfQXJnMik7DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBp
bmxpbmUgbG9uZyBkb3VibGUgY3lsX2Jlc3NlbF9pbChjb25zdCBsb25nIGRvdWJsZSBfQXJnMSwg
Y29uc3QgbG9uZyBkb3VibGUgX0FyZzIpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2N5bF9iZXNz
ZWxfaShzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcxKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihfQXJn
MikpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGRvdWJsZSBjeWxfYmVzc2VsX2ooY29u
c3QgZG91YmxlIF9BcmcxLCBjb25zdCBkb3VibGUgX0FyZzIpIHsNCiAgICByZXR1cm4gX19zdGRf
c21mX2N5bF9iZXNzZWxfaihfQXJnMSwgX0FyZzIpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5s
aW5lIGZsb2F0IGN5bF9iZXNzZWxfamYoY29uc3QgZmxvYXQgX0FyZzEsIGNvbnN0IGZsb2F0IF9B
cmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9jeWxfYmVzc2VsX2pmKF9BcmcxLCBfQXJnMik7
DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgbG9uZyBkb3VibGUgY3lsX2Jlc3NlbF9qbChj
b25zdCBsb25nIGRvdWJsZSBfQXJnMSwgY29uc3QgbG9uZyBkb3VibGUgX0FyZzIpIHsNCiAgICBy
ZXR1cm4gX19zdGRfc21mX2N5bF9iZXNzZWxfaihzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcxKSwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihfQXJnMikpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5l
IGRvdWJsZSBjeWxfYmVzc2VsX2soY29uc3QgZG91YmxlIF9BcmcxLCBjb25zdCBkb3VibGUgX0Fy
ZzIpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2N5bF9iZXNzZWxfayhfQXJnMSwgX0FyZzIpOw0K
fQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGZsb2F0IGN5bF9iZXNzZWxfa2YoY29uc3QgZmxv
YXQgX0FyZzEsIGNvbnN0IGZsb2F0IF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9jeWxf
YmVzc2VsX2tmKF9BcmcxLCBfQXJnMik7DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgbG9u
ZyBkb3VibGUgY3lsX2Jlc3NlbF9rbChjb25zdCBsb25nIGRvdWJsZSBfQXJnMSwgY29uc3QgbG9u
ZyBkb3VibGUgX0FyZzIpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2N5bF9iZXNzZWxfayhzdGF0
aWNfY2FzdDxkb3VibGU+KF9BcmcxKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihfQXJnMikpOw0KfQ0K
DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGRvdWJsZSBjeWxfbmV1bWFubihjb25zdCBkb3VibGUg
X0FyZzEsIGNvbnN0IGRvdWJsZSBfQXJnMikgew0KICAgIHJldHVybiBfX3N0ZF9zbWZfY3lsX25l
dW1hbm4oX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBmbG9hdCBj
eWxfbmV1bWFubmYoY29uc3QgZmxvYXQgX0FyZzEsIGNvbnN0IGZsb2F0IF9BcmcyKSB7DQogICAg
cmV0dXJuIF9fc3RkX3NtZl9jeWxfbmV1bWFubmYoX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25v
ZGlzY2FyZF1dIGlubGluZSBsb25nIGRvdWJsZSBjeWxfbmV1bWFubmwoY29uc3QgbG9uZyBkb3Vi
bGUgX0FyZzEsIGNvbnN0IGxvbmcgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3Nt
Zl9jeWxfbmV1bWFubihzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcxKSwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihfQXJnMikpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGRvdWJsZSBlbGxpbnRf
MShjb25zdCBkb3VibGUgX0FyZzEsIGNvbnN0IGRvdWJsZSBfQXJnMikgew0KICAgIHJldHVybiBf
X3N0ZF9zbWZfZWxsaW50XzEoX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBmbG9hdCBlbGxpbnRfMWYoY29uc3QgZmxvYXQgX0FyZzEsIGNvbnN0IGZsb2F0IF9Bcmcy
KSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9lbGxpbnRfMWYoX0FyZzEsIF9BcmcyKTsNCn0NCg0K
DQpbW25vZGlzY2FyZF1dIGlubGluZSBsb25nIGRvdWJsZSBlbGxpbnRfMWwoY29uc3QgbG9uZyBk
b3VibGUgX0FyZzEsIGNvbnN0IGxvbmcgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3Rk
X3NtZl9lbGxpbnRfMShzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcxKSwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihfQXJnMikpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGRvdWJsZSBlbGxpbnRf
Mihjb25zdCBkb3VibGUgX0FyZzEsIGNvbnN0IGRvdWJsZSBfQXJnMikgew0KICAgIHJldHVybiBf
X3N0ZF9zbWZfZWxsaW50XzIoX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBmbG9hdCBlbGxpbnRfMmYoY29uc3QgZmxvYXQgX0FyZzEsIGNvbnN0IGZsb2F0IF9Bcmcy
KSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9lbGxpbnRfMmYoX0FyZzEsIF9BcmcyKTsNCn0NCg0K
DQpbW25vZGlzY2FyZF1dIGlubGluZSBsb25nIGRvdWJsZSBlbGxpbnRfMmwoY29uc3QgbG9uZyBk
b3VibGUgX0FyZzEsIGNvbnN0IGxvbmcgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3Rk
X3NtZl9lbGxpbnRfMihzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcxKSwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihfQXJnMikpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGRvdWJsZSBlbGxpbnRf
Myhjb25zdCBkb3VibGUgX0FyZzEsIGNvbnN0IGRvdWJsZSBfQXJnMiwgY29uc3QgZG91YmxlIF9B
cmczKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9lbGxpbnRfMyhfQXJnMSwgX0FyZzIsIF9Bcmcz
KTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBmbG9hdCBlbGxpbnRfM2YoY29uc3QgZmxv
YXQgX0FyZzEsIGNvbnN0IGZsb2F0IF9BcmcyLCBjb25zdCBmbG9hdCBfQXJnMykgew0KICAgIHJl
dHVybiBfX3N0ZF9zbWZfZWxsaW50XzNmKF9BcmcxLCBfQXJnMiwgX0FyZzMpOw0KfQ0KDQoNCltb
bm9kaXNjYXJkXV0gaW5saW5lIGxvbmcgZG91YmxlIGVsbGludF8zbChjb25zdCBsb25nIGRvdWJs
ZSBfQXJnMSwgY29uc3QgbG9uZyBkb3VibGUgX0FyZzIsIGNvbnN0IGxvbmcgZG91YmxlIF9Bcmcz
KSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9lbGxpbnRfMyhzdGF0aWNfY2FzdDxkb3VibGU+KF9B
cmcxKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihfQXJnMiksIHN0YXRpY19jYXN0PGRvdWJsZT4oX0Fy
ZzMpKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBkb3VibGUgZXhwaW50KGNvbnN0IGRv
dWJsZSBfQXJnKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9leHBpbnQoX0FyZyk7DQp9DQoNCg0K
W1tub2Rpc2NhcmRdXSBpbmxpbmUgZmxvYXQgZXhwaW50Zihjb25zdCBmbG9hdCBfQXJnKSB7DQog
ICAgcmV0dXJuIF9fc3RkX3NtZl9leHBpbnRmKF9BcmcpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0g
aW5saW5lIGxvbmcgZG91YmxlIGV4cGludGwoY29uc3QgbG9uZyBkb3VibGUgX0FyZykgew0KICAg
IHJldHVybiBfX3N0ZF9zbWZfZXhwaW50KHN0YXRpY19jYXN0PGRvdWJsZT4oX0FyZykpOw0KfQ0K
DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGRvdWJsZSBoZXJtaXRlKGNvbnN0IHVuc2lnbmVkIGlu
dCBfQXJnMSwgY29uc3QgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9oZXJt
aXRlKF9BcmcxLCBfQXJnMik7DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgZmxvYXQgaGVy
bWl0ZWYoY29uc3QgdW5zaWduZWQgaW50IF9BcmcxLCBjb25zdCBmbG9hdCBfQXJnMikgew0KICAg
IHJldHVybiBfX3N0ZF9zbWZfaGVybWl0ZWYoX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25vZGlz
Y2FyZF1dIGlubGluZSBsb25nIGRvdWJsZSBoZXJtaXRlbChjb25zdCB1bnNpZ25lZCBpbnQgX0Fy
ZzEsIGNvbnN0IGxvbmcgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9oZXJt
aXRlKF9BcmcxLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcyKSk7DQp9DQoNCg0KW1tub2Rpc2Nh
cmRdXSBpbmxpbmUgZG91YmxlIGxhZ3VlcnJlKGNvbnN0IHVuc2lnbmVkIGludCBfQXJnMSwgY29u
c3QgZG91YmxlIF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9sYWd1ZXJyZShfQXJnMSwg
X0FyZzIpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGZsb2F0IGxhZ3VlcnJlZihjb25z
dCB1bnNpZ25lZCBpbnQgX0FyZzEsIGNvbnN0IGZsb2F0IF9BcmcyKSB7DQogICAgcmV0dXJuIF9f
c3RkX3NtZl9sYWd1ZXJyZWYoX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBsb25nIGRvdWJsZSBsYWd1ZXJyZWwoY29uc3QgdW5zaWduZWQgaW50IF9BcmcxLCBjb25z
dCBsb25nIGRvdWJsZSBfQXJnMikgew0KICAgIHJldHVybiBfX3N0ZF9zbWZfbGFndWVycmUoX0Fy
ZzEsIHN0YXRpY19jYXN0PGRvdWJsZT4oX0FyZzIpKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBkb3VibGUgbGVnZW5kcmUoY29uc3QgdW5zaWduZWQgaW50IF9EZWdyZWUsIGNvbnN0IGRv
dWJsZSBfVmFsdWUpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2xlZ2VuZHJlKF9EZWdyZWUsIF9W
YWx1ZSk7DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgZmxvYXQgbGVnZW5kcmVmKGNvbnN0
IHVuc2lnbmVkIGludCBfRGVncmVlLCBjb25zdCBmbG9hdCBfVmFsdWUpIHsNCiAgICByZXR1cm4g
X19zdGRfc21mX2xlZ2VuZHJlZihfRGVncmVlLCBfVmFsdWUpOw0KfQ0KDQoNCltbbm9kaXNjYXJk
XV0gaW5saW5lIGxvbmcgZG91YmxlIGxlZ2VuZHJlbChjb25zdCB1bnNpZ25lZCBpbnQgX0RlZ3Jl
ZSwgY29uc3QgbG9uZyBkb3VibGUgX1ZhbHVlKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9sZWdl
bmRyZShfRGVncmVlLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9WYWx1ZSkpOw0KfQ0KDQoNCltbbm9k
aXNjYXJkXV0gaW5saW5lIGRvdWJsZSByaWVtYW5uX3pldGEoY29uc3QgZG91YmxlIF9BcmcpIHsN
CiAgICByZXR1cm4gX19zdGRfc21mX3JpZW1hbm5femV0YShfQXJnKTsNCn0NCg0KDQpbW25vZGlz
Y2FyZF1dIGlubGluZSBmbG9hdCByaWVtYW5uX3pldGFmKGNvbnN0IGZsb2F0IF9BcmcpIHsNCiAg
ICByZXR1cm4gX19zdGRfc21mX3JpZW1hbm5femV0YWYoX0FyZyk7DQp9DQoNCg0KW1tub2Rpc2Nh
cmRdXSBpbmxpbmUgbG9uZyBkb3VibGUgcmllbWFubl96ZXRhbChjb25zdCBsb25nIGRvdWJsZSBf
QXJnKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9yaWVtYW5uX3pldGEoc3RhdGljX2Nhc3Q8ZG91
YmxlPihfQXJnKSk7DQp9DQoNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgZG91YmxlIHNwaF9iZXNz
ZWwoY29uc3QgdW5zaWduZWQgaW50IF9BcmcxLCBjb25zdCBkb3VibGUgX0FyZzIpIHsNCiAgICBy
ZXR1cm4gX19zdGRfc21mX3NwaF9iZXNzZWwoX0FyZzEsIF9BcmcyKTsNCn0NCg0KDQpbW25vZGlz
Y2FyZF1dIGlubGluZSBmbG9hdCBzcGhfYmVzc2VsZihjb25zdCB1bnNpZ25lZCBpbnQgX0FyZzEs
IGNvbnN0IGZsb2F0IF9BcmcyKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9zcGhfYmVzc2VsZihf
QXJnMSwgX0FyZzIpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGxvbmcgZG91YmxlIHNw
aF9iZXNzZWxsKGNvbnN0IHVuc2lnbmVkIGludCBfQXJnMSwgY29uc3QgbG9uZyBkb3VibGUgX0Fy
ZzIpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX3NwaF9iZXNzZWwoX0FyZzEsIHN0YXRpY19jYXN0
PGRvdWJsZT4oX0FyZzIpKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBkb3VibGUgc3Bo
X2xlZ2VuZHJlKGNvbnN0IHVuc2lnbmVkIGludCBfQXJnMSwgY29uc3QgdW5zaWduZWQgaW50IF9B
cmcyLCBjb25zdCBkb3VibGUgX1RoZXRhKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9zcGhfbGVn
ZW5kcmUoX0FyZzEsIF9BcmcyLCBfVGhldGEpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5l
IGZsb2F0IHNwaF9sZWdlbmRyZWYoY29uc3QgdW5zaWduZWQgaW50IF9BcmcxLCBjb25zdCB1bnNp
Z25lZCBpbnQgX0FyZzIsIGNvbnN0IGZsb2F0IF9UaGV0YSkgew0KICAgIHJldHVybiBfX3N0ZF9z
bWZfc3BoX2xlZ2VuZHJlZihfQXJnMSwgX0FyZzIsIF9UaGV0YSk7DQp9DQoNCg0KW1tub2Rpc2Nh
cmRdXSBpbmxpbmUgbG9uZyBkb3VibGUgc3BoX2xlZ2VuZHJlbCgNCiAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgX0FyZzEsIGNvbnN0IHVuc2lnbmVkIGludCBfQXJnMiwgY29uc3QgbG9uZyBkb3VibGUg
X1RoZXRhKSB7DQogICAgcmV0dXJuIF9fc3RkX3NtZl9zcGhfbGVnZW5kcmUoX0FyZzEsIF9Bcmcy
LCBzdGF0aWNfY2FzdDxkb3VibGU+KF9UaGV0YSkpOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5s
aW5lIGRvdWJsZSBzcGhfbmV1bWFubihjb25zdCB1bnNpZ25lZCBpbnQgX0FyZzEsIGNvbnN0IGRv
dWJsZSBfQXJnMikgew0KICAgIHJldHVybiBfX3N0ZF9zbWZfc3BoX25ldW1hbm4oX0FyZzEsIF9B
cmcyKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBmbG9hdCBzcGhfbmV1bWFubmYoY29u
c3QgdW5zaWduZWQgaW50IF9BcmcxLCBjb25zdCBmbG9hdCBfQXJnMikgew0KICAgIHJldHVybiBf
X3N0ZF9zbWZfc3BoX25ldW1hbm5mKF9BcmcxLCBfQXJnMik7DQp9DQoNCg0KW1tub2Rpc2NhcmRd
XSBpbmxpbmUgbG9uZyBkb3VibGUgc3BoX25ldW1hbm5sKGNvbnN0IHVuc2lnbmVkIGludCBfQXJn
MSwgY29uc3QgbG9uZyBkb3VibGUgX0FyZzIpIHsNCiAgICByZXR1cm4gX19zdGRfc21mX3NwaF9u
ZXVtYW5uKF9BcmcxLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9BcmcyKSk7DQp9DQoNCg0KW1tub2Rp
c2NhcmRdXSBpbmxpbmUgZG91YmxlIGh5cG90KGNvbnN0IGRvdWJsZSBfRHgsIGNvbnN0IGRvdWJs
ZSBfRHksIGNvbnN0IGRvdWJsZSBfRHopIHsNCiAgICByZXR1cm4gX19zdGRfc21mX2h5cG90Myhf
RHgsIF9EeSwgX0R6KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgZmxvYXQgaHlwb3QoY29u
c3QgZmxvYXQgX0R4LCBjb25zdCBmbG9hdCBfRHksIGNvbnN0IGZsb2F0IF9Eeikgew0KICAgIHJl
dHVybiBfX3N0ZF9zbWZfaHlwb3QzZihfRHgsIF9EeSwgX0R6KTsNCn0NCg0KW1tub2Rpc2NhcmRd
XSBpbmxpbmUgbG9uZyBkb3VibGUgaHlwb3QoY29uc3QgbG9uZyBkb3VibGUgX0R4LCBjb25zdCBs
b25nIGRvdWJsZSBfRHksIGNvbnN0IGxvbmcgZG91YmxlIF9Eeikgew0KICAgIHJldHVybiBfX3N0
ZF9zbWZfaHlwb3QzKHN0YXRpY19jYXN0PGRvdWJsZT4oX0R4KSwgc3RhdGljX2Nhc3Q8ZG91Ymxl
PihfRHkpLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9EeikpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5MSwgY2xhc3MgX1R5MiwgY2xhc3MgX1R5MywNCiAgICBlbmFibGVfaWZfdDxpc19hcml0aG1l
dGljX3Y8X1R5MT4gJiYgaXNfYXJpdGhtZXRpY192PF9UeTI+ICYmIGlzX2FyaXRobWV0aWNfdjxf
VHkzPiwgaW50PiA9IDA+DQpbW25vZGlzY2FyZF1dIGF1dG8gaHlwb3QoY29uc3QgX1R5MSBfRHgs
IGNvbnN0IF9UeTIgX0R5LCBjb25zdCBfVHkzIF9Eeikgew0KICAgIA0KICAgIA0KICAgIA0KICAg
IHVzaW5nIF9Db21tb24gICAgICA9IF9Db21tb25fZmxvYXRfdHlwZV90PF9UeTEsIF9Db21tb25f
ZmxvYXRfdHlwZV90PF9UeTIsIF9UeTM+PjsgDQogICAgY29uc3QgYXV0byBfUmVzdWx0ID0gX19z
dGRfc21mX2h5cG90MyhzdGF0aWNfY2FzdDxkb3VibGU+KF9EeCksIHN0YXRpY19jYXN0PGRvdWJs
ZT4oX0R5KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihfRHopKTsNCiAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8X0NvbW1vbj4oX1Jlc3VsdCk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDEzNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcY21hdGgiDQp9DQojbGluZSAxMzcxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNtYXRoIg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkN
CiNwcmFnbWEgcGFjayhwb3ApDQoNCiNsaW5lIDEzNzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY21hdGgiDQojbGluZSAxMzc5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNtYXRoIg0KI2xpbmUgMzEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L01hdGhFeHRyYXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9NYXRoRXh0cmFzLmgi
DQoNCg0KY29uc3QgZG91YmxlIHBpRG91YmxlID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjsNCmNv
bnN0IGZsb2F0IHBpRmxvYXQgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2ZjsNCg0KDQoNCiNsaW5l
IDQ5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9NYXRoRXh0cmFzLmgiDQoNCg0KY29uc3QgZG91YmxlIHBpT3ZlclR3b0RvdWJsZSA9IDEu
NTcwNzk2MzI2Nzk0ODk2NjE5MjM7DQpjb25zdCBmbG9hdCBwaU92ZXJUd29GbG9hdCA9IDEuNTcw
Nzk2MzI2Nzk0ODk2NjE5MjNmOw0KDQoNCg0KI2xpbmUgNTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL01hdGhFeHRyYXMuaCINCg0KDQpj
b25zdCBkb3VibGUgcGlPdmVyRm91ckRvdWJsZSA9IDAuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE2Ow0K
Y29uc3QgZmxvYXQgcGlPdmVyRm91ckZsb2F0ID0gMC43ODUzOTgxNjMzOTc0NDgzMDk2MTZmOw0K
DQoNCg0KI2xpbmUgNjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL01hdGhFeHRyYXMuaCINCg0KDQpjb25zdCBkb3VibGUgc3FydE9mVHdv
RG91YmxlID0gMS40MTQyMTM1NjIzNzMwOTUwNDg4MDsNCmNvbnN0IGZsb2F0IHNxcnRPZlR3b0Zs
b2F0ID0gMS40MTQyMTM1NjIzNzMwOTUwNDg4MGY7DQoNCg0KDQojbGluZSA3MyAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWF0aEV4dHJh
cy5oIg0KDQoNCg0KDQpleHRlcm4gIkMiIGlubGluZSBkb3VibGUgd3RmX2F0YW4yKGRvdWJsZSB4
LCBkb3VibGUgeSkNCnsNCiAgICBkb3VibGUgcG9zSW5mID0gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjppbmZpbml0eSgpOw0KICAgIGRvdWJsZSBuZWdJbmYgPSAtc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpOw0KICAgIGRvdWJsZSBuYW4gPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOw0KDQogICAgZG91YmxlIHJlc3VsdCA9IG5hbjsN
Cg0KICAgIGlmICh4ID09IHBvc0luZiAmJiB5ID09IHBvc0luZikNCiAgICAgICAgcmVzdWx0ID0g
cGlPdmVyRm91ckRvdWJsZTsNCiAgICBlbHNlIGlmICh4ID09IHBvc0luZiAmJiB5ID09IG5lZ0lu
ZikNCiAgICAgICAgcmVzdWx0ID0gMyAqIHBpT3ZlckZvdXJEb3VibGU7DQogICAgZWxzZSBpZiAo
eCA9PSBuZWdJbmYgJiYgeSA9PSBwb3NJbmYpDQogICAgICAgIHJlc3VsdCA9IC1waU92ZXJGb3Vy
RG91YmxlOw0KICAgIGVsc2UgaWYgKHggPT0gbmVnSW5mICYmIHkgPT0gbmVnSW5mKQ0KICAgICAg
ICByZXN1bHQgPSAtMyAqIHBpT3ZlckZvdXJEb3VibGU7DQogICAgZWxzZQ0KICAgICAgICByZXN1
bHQgPSA6OmF0YW4yKHgsIHkpOw0KDQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KDQoNCiNsaW5l
IDEwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvTWF0aEV4dHJhcy5oIg0KDQppbmxpbmUgZG91YmxlIGRlZzJyYWQoZG91YmxlIGQpICB7
IHJldHVybiBkICogcGlEb3VibGUgLyAxODAuMDsgfQ0KaW5saW5lIGRvdWJsZSByYWQyZGVnKGRv
dWJsZSByKSAgeyByZXR1cm4gciAqIDE4MC4wIC8gcGlEb3VibGU7IH0NCmlubGluZSBkb3VibGUg
ZGVnMmdyYWQoZG91YmxlIGQpIHsgcmV0dXJuIGQgKiA0MDAuMCAvIDM2MC4wOyB9DQppbmxpbmUg
ZG91YmxlIGdyYWQyZGVnKGRvdWJsZSBnKSB7IHJldHVybiBnICogMzYwLjAgLyA0MDAuMDsgfQ0K
aW5saW5lIGRvdWJsZSB0dXJuMmRlZyhkb3VibGUgdCkgeyByZXR1cm4gdCAqIDM2MC4wOyB9DQpp
bmxpbmUgZG91YmxlIGRlZzJ0dXJuKGRvdWJsZSBkKSB7IHJldHVybiBkIC8gMzYwLjA7IH0NCmlu
bGluZSBkb3VibGUgcmFkMmdyYWQoZG91YmxlIHIpIHsgcmV0dXJuIHIgKiAyMDAuMCAvIHBpRG91
YmxlOyB9DQppbmxpbmUgZG91YmxlIGdyYWQycmFkKGRvdWJsZSBnKSB7IHJldHVybiBnICogcGlE
b3VibGUgLyAyMDAuMDsgfQ0KDQppbmxpbmUgZmxvYXQgZGVnMnJhZChmbG9hdCBkKSAgeyByZXR1
cm4gZCAqIHBpRmxvYXQgLyAxODAuMGY7IH0NCmlubGluZSBmbG9hdCByYWQyZGVnKGZsb2F0IHIp
ICB7IHJldHVybiByICogMTgwLjBmIC8gcGlGbG9hdDsgfQ0KaW5saW5lIGZsb2F0IGRlZzJncmFk
KGZsb2F0IGQpIHsgcmV0dXJuIGQgKiA0MDAuMGYgLyAzNjAuMGY7IH0NCmlubGluZSBmbG9hdCBn
cmFkMmRlZyhmbG9hdCBnKSB7IHJldHVybiBnICogMzYwLjBmIC8gNDAwLjBmOyB9DQppbmxpbmUg
ZmxvYXQgdHVybjJkZWcoZmxvYXQgdCkgeyByZXR1cm4gdCAqIDM2MC4wZjsgfQ0KaW5saW5lIGZs
b2F0IGRlZzJ0dXJuKGZsb2F0IGQpIHsgcmV0dXJuIGQgLyAzNjAuMGY7IH0NCmlubGluZSBmbG9h
dCByYWQyZ3JhZChmbG9hdCByKSB7IHJldHVybiByICogMjAwLjBmIC8gcGlGbG9hdDsgfQ0KaW5s
aW5lIGZsb2F0IGdyYWQycmFkKGZsb2F0IGcpIHsgcmV0dXJuIGcgKiBwaUZsb2F0IC8gMjAwLjBm
OyB9DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIFQgZGVmYXVsdE1pbmltdW1G
b3JDbGFtcCgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbigpOyB9DQp0ZW1w
bGF0ZTw+IGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0TWluaW11bUZvckNsYW1wKCkgeyByZXR1cm4g
LXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKTsgfQ0KdGVtcGxhdGU8PiBjb25zdGV4
cHIgZG91YmxlIGRlZmF1bHRNaW5pbXVtRm9yQ2xhbXAoKSB7IHJldHVybiAtc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjptYXgoKTsgfQ0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHBy
IFQgZGVmYXVsdE1heGltdW1Gb3JDbGFtcCgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8
VD46Om1heCgpOyB9DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VHlwZSwgdHlwZW5hbWUg
U291cmNlVHlwZT4NCnR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxUYXJnZXRU
eXBlLCBTb3VyY2VUeXBlPjo6dmFsdWUsIFRhcmdldFR5cGU+Ojp0eXBlDQpjbGFtcFRvKFNvdXJj
ZVR5cGUgdmFsdWUsIFRhcmdldFR5cGUgbWluID0gZGVmYXVsdE1pbmltdW1Gb3JDbGFtcDxUYXJn
ZXRUeXBlPigpLCBUYXJnZXRUeXBlIG1heCA9IGRlZmF1bHRNYXhpbXVtRm9yQ2xhbXA8VGFyZ2V0
VHlwZT4oKSkNCnsNCiAgICBpZiAodmFsdWUgPj0gbWF4KQ0KICAgICAgICByZXR1cm4gbWF4Ow0K
ICAgIGlmICh2YWx1ZSA8PSBtaW4pDQogICAgICAgIHJldHVybiBtaW47DQogICAgcmV0dXJuIHZh
bHVlOw0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1lIFNvdXJj
ZVR5cGU+DQp0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPFRhcmdldFR5cGUs
IFNvdXJjZVR5cGU+Ojp2YWx1ZQ0KICAgICYmIHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8U291cmNl
VHlwZT46OnZhbHVlDQogICAgJiYgIShzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFRhcmdldFR5cGU+
Ojp2YWx1ZSAmJiBzaXplb2YoVGFyZ2V0VHlwZSkgPiBzaXplb2YoU291cmNlVHlwZSkpLCBUYXJn
ZXRUeXBlPjo6dHlwZQ0KY2xhbXBUbyhTb3VyY2VUeXBlIHZhbHVlLCBUYXJnZXRUeXBlIG1pbiA9
IGRlZmF1bHRNaW5pbXVtRm9yQ2xhbXA8VGFyZ2V0VHlwZT4oKSwgVGFyZ2V0VHlwZSBtYXggPSBk
ZWZhdWx0TWF4aW11bUZvckNsYW1wPFRhcmdldFR5cGU+KCkpDQp7DQogICAgaWYgKHZhbHVlID49
IHN0YXRpY19jYXN0PFNvdXJjZVR5cGU+KG1heCkpDQogICAgICAgIHJldHVybiBtYXg7DQogICAg
aWYgKHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZVR5cGU+KG1pbikpDQogICAgICAgIHJldHVy
biBtaW47DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFRhcmdldFR5cGU+KHZhbHVlKTsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VHlwZSwgdHlwZW5hbWUgU291cmNlVHlwZT4NCnR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8VGFyZ2V0VHlwZSwgU291cmNlVHlwZT46
OnZhbHVlDQogICAgJiYgc3RkOjppc19mbG9hdGluZ19wb2ludDxTb3VyY2VUeXBlPjo6dmFsdWUN
CiAgICAmJiBzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFRhcmdldFR5cGU+Ojp2YWx1ZQ0KICAgICYm
IChzaXplb2YoVGFyZ2V0VHlwZSkgPiBzaXplb2YoU291cmNlVHlwZSkpLCBUYXJnZXRUeXBlPjo6
dHlwZQ0KY2xhbXBUbyhTb3VyY2VUeXBlIHZhbHVlLCBUYXJnZXRUeXBlIG1pbiA9IGRlZmF1bHRN
aW5pbXVtRm9yQ2xhbXA8VGFyZ2V0VHlwZT4oKSwgVGFyZ2V0VHlwZSBtYXggPSBkZWZhdWx0TWF4
aW11bUZvckNsYW1wPFRhcmdldFR5cGU+KCkpDQp7DQogICAgVGFyZ2V0VHlwZSBjb252ZXJ0ZWRW
YWx1ZSA9IHN0YXRpY19jYXN0PFRhcmdldFR5cGU+KHZhbHVlKTsNCiAgICBpZiAoY29udmVydGVk
VmFsdWUgPj0gbWF4KQ0KICAgICAgICByZXR1cm4gbWF4Ow0KICAgIGlmIChjb252ZXJ0ZWRWYWx1
ZSA8PSBtaW4pDQogICAgICAgIHJldHVybiBtaW47DQogICAgcmV0dXJuIGNvbnZlcnRlZFZhbHVl
Ow0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1lIFNvdXJjZVR5
cGU+DQp0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPFRhcmdldFR5cGUsIFNv
dXJjZVR5cGU+Ojp2YWx1ZQ0KICAgICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlwZT46
OmlzX2ludGVnZXINCiAgICAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+Ojppc19p
bnRlZ2VyDQogICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6aXNfc2lnbmVk
ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlwZT46OmlzX3NpZ25lZA0KICAgICYmIHNp
emVvZihTb3VyY2VUeXBlKSA+PSBzaXplb2YoVGFyZ2V0VHlwZSksIFRhcmdldFR5cGU+Ojp0eXBl
DQpjbGFtcFRvKFNvdXJjZVR5cGUgdmFsdWUsIFRhcmdldFR5cGUgbWluID0gZGVmYXVsdE1pbmlt
dW1Gb3JDbGFtcDxUYXJnZXRUeXBlPigpLCBUYXJnZXRUeXBlIG1heCA9IGRlZmF1bHRNYXhpbXVt
Rm9yQ2xhbXA8VGFyZ2V0VHlwZT4oKSkNCnsNCiAgICBpZiAodmFsdWUgPj0gc3RhdGljX2Nhc3Q8
U291cmNlVHlwZT4obWF4KSkNCiAgICAgICAgcmV0dXJuIG1heDsNCiAgICBpZiAodmFsdWUgPD0g
c3RhdGljX2Nhc3Q8U291cmNlVHlwZT4obWluKSkNCiAgICAgICAgcmV0dXJuIG1pbjsNCiAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4odmFsdWUpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1lIFNvdXJjZVR5cGU+DQp0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhc3RkOjppc19zYW1lPFRhcmdldFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZQ0KICAg
ICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlwZT46OmlzX2ludGVnZXINCiAgICAmJiBz
dGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+Ojppc19pbnRlZ2VyDQogICAgJiYgc3RkOjpu
dW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6aXNfc2lnbmVkDQogICAgJiYgIXN0ZDo6bnVtZXJp
Y19saW1pdHM8U291cmNlVHlwZT46OmlzX3NpZ25lZA0KICAgICYmIHNpemVvZihTb3VyY2VUeXBl
KSA+PSBzaXplb2YoVGFyZ2V0VHlwZSksIFRhcmdldFR5cGU+Ojp0eXBlDQpjbGFtcFRvKFNvdXJj
ZVR5cGUgdmFsdWUpDQp7DQogICAgVGFyZ2V0VHlwZSBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRz
PFRhcmdldFR5cGU+OjptYXgoKTsNCiAgICBpZiAodmFsdWUgPj0gc3RhdGljX2Nhc3Q8U291cmNl
VHlwZT4obWF4KSkNCiAgICAgICAgcmV0dXJuIG1heDsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGFyZ2V0VHlwZT4odmFsdWUpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUs
IHR5cGVuYW1lIFNvdXJjZVR5cGU+DQp0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19z
YW1lPFRhcmdldFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZQ0KICAgICYmIHN0ZDo6bnVtZXJpY19s
aW1pdHM8U291cmNlVHlwZT46OmlzX2ludGVnZXINCiAgICAmJiBzdGQ6Om51bWVyaWNfbGltaXRz
PFRhcmdldFR5cGU+Ojppc19pbnRlZ2VyDQogICAgJiYgIXN0ZDo6bnVtZXJpY19saW1pdHM8VGFy
Z2V0VHlwZT46OmlzX3NpZ25lZA0KICAgICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlw
ZT46OmlzX3NpZ25lZA0KICAgICYmIHNpemVvZihTb3VyY2VUeXBlKSA9PSBzaXplb2YoVGFyZ2V0
VHlwZSksIFRhcmdldFR5cGU+Ojp0eXBlDQpjbGFtcFRvKFNvdXJjZVR5cGUgdmFsdWUpDQp7DQog
ICAgaWYgKHZhbHVlIDwgMCkNCiAgICAgICAgcmV0dXJuIDA7DQogICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRhcmdldFR5cGU+KHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VHlw
ZSwgdHlwZW5hbWUgU291cmNlVHlwZT4NCnR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6Omlz
X3NhbWU8VGFyZ2V0VHlwZSwgU291cmNlVHlwZT46OnZhbHVlDQogICAgJiYgc3RkOjpudW1lcmlj
X2xpbWl0czxTb3VyY2VUeXBlPjo6aXNfaW50ZWdlcg0KICAgICYmIHN0ZDo6bnVtZXJpY19saW1p
dHM8VGFyZ2V0VHlwZT46OmlzX2ludGVnZXINCiAgICAmJiAhc3RkOjpudW1lcmljX2xpbWl0czxU
YXJnZXRUeXBlPjo6aXNfc2lnbmVkDQogICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VU
eXBlPjo6aXNfc2lnbmVkDQogICAgJiYgKHNpemVvZihTb3VyY2VUeXBlKSA+IHNpemVvZihUYXJn
ZXRUeXBlKSksIFRhcmdldFR5cGU+Ojp0eXBlDQpjbGFtcFRvKFNvdXJjZVR5cGUgdmFsdWUpDQp7
DQogICAgaWYgKHZhbHVlIDwgMCkNCiAgICAgICAgcmV0dXJuIDA7DQogICAgVGFyZ2V0VHlwZSBt
YXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+OjptYXgoKTsNCiAgICBpZiAodmFs
dWUgPj0gc3RhdGljX2Nhc3Q8U291cmNlVHlwZT4obWF4KSkNCiAgICAgICAgcmV0dXJuIG1heDsN
CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4odmFsdWUpOw0KfQ0KDQppbmxpbmUg
aW50IGNsYW1wVG9JbnRlZ2VyKGRvdWJsZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gY2xhbXBUbzxp
bnQ+KHZhbHVlKTsNCn0NCg0KaW5saW5lIHVuc2lnbmVkIGNsYW1wVG9VbnNpZ25lZChkb3VibGUg
dmFsdWUpDQp7DQogICAgcmV0dXJuIGNsYW1wVG88dW5zaWduZWQ+KHZhbHVlKTsNCn0NCg0KaW5s
aW5lIGZsb2F0IGNsYW1wVG9GbG9hdChkb3VibGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIGNsYW1w
VG88ZmxvYXQ+KHZhbHVlKTsNCn0NCg0KaW5saW5lIGludCBjbGFtcFRvUG9zaXRpdmVJbnRlZ2Vy
KGRvdWJsZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KHZhbHVlLCAwKTsNCn0N
Cg0KaW5saW5lIGludCBjbGFtcFRvSW50ZWdlcihmbG9hdCB2YWx1ZSkNCnsNCiAgICByZXR1cm4g
Y2xhbXBUbzxpbnQ+KHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmlubGluZSBp
bnQgY2xhbXBUb0ludGVnZXIoVCB4KQ0Kew0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjpudW1lcmlj
X2xpbWl0czxUPjo6aXNfaW50ZWdlciwgIlQgbXVzdCBiZSBhbiBpbnRlZ2VyLiIpOw0KDQogICAg
Y29uc3QgVCBpbnRNYXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKSk7DQoNCiAgICBpZiAoeCA+PSBpbnRNYXgpDQogICAgICAgIHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOw0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHgpOw0KfQ0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIFQgY2xhbXBU
b0FjY2VwdGluZzY0KGRvdWJsZSB2YWx1ZSwgVCBtaW4gPSBkZWZhdWx0TWluaW11bUZvckNsYW1w
PFQ+KCksIFQgbWF4ID0gZGVmYXVsdE1heGltdW1Gb3JDbGFtcDxUPigpKQ0Kew0KICAgIHJldHVy
biAodmFsdWUgPj0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgpKSA/IG1heCA6ICgodmFsdWUgPD0g
c3RhdGljX2Nhc3Q8ZG91YmxlPihtaW4pKSA/IG1pbiA6IHN0YXRpY19jYXN0PFQ+KHZhbHVlKSk7
DQp9DQoNCmlubGluZSBib29sIGlzV2l0aGluSW50UmFuZ2UoZmxvYXQgeCkNCnsNCiAgICByZXR1
cm4geCA+IHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigp
KSAmJiB4IDwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCkpOw0KfQ0KDQppbmxpbmUgZmxvYXQgbm9ybWFsaXplZEZsb2F0KGZsb2F0IHZhbHVlKQ0Kew0K
ICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bWluKCkpDQogICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCk7
DQogICAgaWYgKHZhbHVlIDwgMCAmJiB2YWx1ZSA+IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6bWluKCkpDQogICAgICAgIHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1p
bigpOw0KICAgIHJldHVybiB2YWx1ZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Rl
eHByIGJvb2wgaGFzT25lQml0U2V0KFQgdmFsdWUpDQp7DQogICAgcmV0dXJuICEoKHZhbHVlIC0g
MSkgJiB2YWx1ZSkgJiYgdmFsdWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhw
ciBib29sIGhhc1plcm9Pck9uZUJpdHNTZXQoVCB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISgodmFs
dWUgLSAxKSAmIHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJv
b2wgaGFzVHdvT3JNb3JlQml0c1NldChUIHZhbHVlKQ0Kew0KICAgIHJldHVybiAhaGFzWmVyb09y
T25lQml0c1NldCh2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGRp
dmlkZVJvdW5kZWRVcChUIGEsIFQgYikNCnsNCiAgICByZXR1cm4gKGEgKyBiIC0gMSkgLyBiOw0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCB0aW1lc1RocmVlUGx1c09uZURpdmlk
ZWRCeVR3byhUIHZhbHVlKQ0Kew0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHJl
dHVybiB2YWx1ZSArICh2YWx1ZSA+PiAxKSArICh2YWx1ZSAmIDEpOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBpc05vdFplcm9BbmRPcmRlcmVkKFQgdmFsdWUpDQp7DQog
ICAgcmV0dXJuIHZhbHVlID4gMC4wIHx8IHZhbHVlIDwgMC4wOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgYm9vbCBpc1plcm9PclVub3JkZXJlZChUIHZhbHVlKQ0Kew0KICAgIHJl
dHVybiAhaXNOb3RaZXJvQW5kT3JkZXJlZCh2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIGlzR3JlYXRlclRoYW5Ob25aZXJvUG93ZXJPZlR3byhUIHZhbHVlLCB1
bnNpZ25lZCBwb3dlcikNCnsNCiAgICANCiAgICANCiAgICByZXR1cm4gISEoKHZhbHVlID4+IDEp
ID4+IChwb3dlciAtIDEpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJv
b2wgaXNMZXNzVGhhbihjb25zdCBUJiBhLCBjb25zdCBUJiBiKSB7IHJldHVybiBhIDwgYjsgfQ0K
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgaXNMZXNzVGhhbkVxdWFsKGNvbnN0
IFQmIGEsIGNvbnN0IFQmIGIpIHsgcmV0dXJuIGEgPD0gYjsgfQ0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY29uc3RleHByIGJvb2wgaXNHcmVhdGVyVGhhbihjb25zdCBUJiBhLCBjb25zdCBUJiBiKSB7
IHJldHVybiBhID4gYjsgfQ0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgaXNH
cmVhdGVyVGhhbkVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIpIHsgcmV0dXJuIGEgPj0gYjsg
fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDM3MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvTWF0aEV4dHJhcy5oIg0KDQoNCg0KDQoNCmlubGluZSB2b2lkIGRlY29t
cG9zZURvdWJsZShkb3VibGUgbnVtYmVyLCBib29sJiBzaWduLCBpbnQzMl90JiBleHBvbmVudCwg
dWludDY0X3QmIG1hbnRpc3NhKQ0Kew0KICAgICgodm9pZCkwKTsNCg0KICAgIHNpZ24gPSBzdGQ6
OnNpZ25iaXQobnVtYmVyKTsNCg0KICAgIHVpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdpc2VfY2Fz
dDx1aW50NjRfdD4obnVtYmVyKTsNCiAgICBleHBvbmVudCA9IChzdGF0aWNfY2FzdDxpbnQzMl90
PihiaXRzID4+IDUyKSAmIDB4N2ZmKSAtIDB4M2ZmOw0KICAgIG1hbnRpc3NhID0gYml0cyAmIDB4
RkZGRkZGRkZGRkZGRnVsbDsNCg0KICAgIA0KICAgIA0KICAgIGlmIChleHBvbmVudCA9PSAtMHgz
ZmYpDQogICAgICAgIGV4cG9uZW50ID0gbWFudGlzc2EgPyAtMHgzZmUgOiAwOw0KICAgIGVsc2UN
CiAgICAgICAgbWFudGlzc2EgfD0gMHgxMDAwMDAwMDAwMDAwMHVsbDsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY29uc3RleHByIHVuc2lnbmVkIGNvdW50T2ZCaXRzID0gc2l6ZW9mKFQpICog
ODsNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciB1bnNpZ25lZCBjb3VudE9mTWFnbml0
dWRlQml0cyA9IGNvdW50T2ZCaXRzPFQ+IC0gc3RkOjppc19zaWduZWRfdjxUPjsNCg0KY29uc3Rl
eHByIGZsb2F0IHBvd2VyT2ZUd28odW5zaWduZWQgZSkNCnsNCiAgICBmbG9hdCBwID0gMTsNCiAg
ICB3aGlsZSAoZS0tKQ0KICAgICAgICBwICo9IDI7DQogICAgcmV0dXJuIHA7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBmbG9hdCBtYXhQbHVzT25lID0gcG93ZXJPZlR3byhj
b3VudE9mTWFnbml0dWRlQml0czxUPik7DQoNCg0KaW5saW5lIHZvaWQgZG91YmxlVG9JbnRlZ2Vy
KGRvdWJsZSBkLCB1bnNpZ25lZCBsb25nIGxvbmcmIHZhbHVlKQ0Kew0KICAgIGlmIChzdGQ6Omlz
bmFuKGQpIHx8IHN0ZDo6aXNpbmYoZCkpDQogICAgICAgIHZhbHVlID0gMDsNCiAgICBlbHNlIHsN
CiAgICAgICAgDQogICAgICAgIGRvdWJsZSBmbW9kVmFsdWUgPSBmbW9kKHRydW5jKGQpLCBtYXhQ
bHVzT25lPHVuc2lnbmVkIGxvbmcgbG9uZz4pOw0KICAgICAgICBpZiAoZm1vZFZhbHVlID49IDAp
IHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICB2YWx1ZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZm1vZFZhbHVlKTsNCiAgICAgICAgfSBlbHNlIHsN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgZm1vZFZhbHVlSW5VbnNpZ25lZExvbmdMb25nID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPigtZm1vZFZhbHVlKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAg
ICAgICB2YWx1ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZyBsb25nPjo6bWF4
KCkgLSBmbW9kVmFsdWVJblVuc2lnbmVkTG9uZ0xvbmcgKyAxOw0KICAgICAgICB9DQogICAgfQ0K
fQ0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KDQpjb25zdGV4cHIgdWludDMyX3Qgcm91bmRVcFRvUG93
ZXJPZlR3byh1aW50MzJfdCB2KQ0Kew0KICAgIHYtLTsNCiAgICB2IHw9IHYgPj4gMTsNCiAgICB2
IHw9IHYgPj4gMjsNCiAgICB2IHw9IHYgPj4gNDsNCiAgICB2IHw9IHYgPj4gODsNCiAgICB2IHw9
IHYgPj4gMTY7DQogICAgdisrOw0KICAgIHJldHVybiB2Ow0KfQ0KDQpjb25zdGV4cHIgdW5zaWdu
ZWQgbWFza0ZvclNpemUodW5zaWduZWQgc2l6ZSkNCnsNCiAgICBpZiAoIXNpemUpDQogICAgICAg
IHJldHVybiAwOw0KICAgIHJldHVybiByb3VuZFVwVG9Qb3dlck9mVHdvKHNpemUpIC0gMTsNCn0N
Cg0KaW5saW5lIHVuc2lnbmVkIGZhc3RMb2cyKHVuc2lnbmVkIGkpDQp7DQogICAgdW5zaWduZWQg
bG9nMiA9IDA7DQogICAgaWYgKGkgJiAoaSAtIDEpKQ0KICAgICAgICBsb2cyICs9IDE7DQogICAg
aWYgKGkgPj4gMTYpIHsNCiAgICAgICAgbG9nMiArPSAxNjsNCiAgICAgICAgaSA+Pj0gMTY7DQog
ICAgfQ0KICAgIGlmIChpID4+IDgpIHsNCiAgICAgICAgbG9nMiArPSA4Ow0KICAgICAgICBpID4+
PSA4Ow0KICAgIH0NCiAgICBpZiAoaSA+PiA0KSB7DQogICAgICAgIGxvZzIgKz0gNDsNCiAgICAg
ICAgaSA+Pj0gNDsNCiAgICB9DQogICAgaWYgKGkgPj4gMikgew0KICAgICAgICBsb2cyICs9IDI7
DQogICAgICAgIGkgPj49IDI7DQogICAgfQ0KICAgIGlmIChpID4+IDEpDQogICAgICAgIGxvZzIg
Kz0gMTsNCiAgICByZXR1cm4gbG9nMjsNCn0NCg0KaW5saW5lIHVuc2lnbmVkIGZhc3RMb2cyKHVp
bnQ2NF90IHZhbHVlKQ0Kew0KICAgIHVuc2lnbmVkIGhpZ2ggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odmFsdWUgPj4gMzIpOw0KICAgIGlmIChoaWdoKQ0KICAgICAgICByZXR1cm4gZmFzdExvZzIo
aGlnaCkgKyAzMjsNCiAgICByZXR1cm4gZmFzdExvZzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZh
bHVlKSk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KaW5saW5lIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZSBzYWZl
RlBEaXZpc2lvbihUIHUsIFQgdikNCnsNCiAgICANCiAgICBpZiAodiA8IDEgJiYgdSA+IHYgKiBz
dGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSkNCiAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46Om1heCgpOw0KICAgIGlmICh2ID4gMSAmJiB1IDwgdiAqIHN0ZDo6bnVtZXJp
Y19saW1pdHM8VD46Om1pbigpKQ0KICAgICAgICByZXR1cm4gMDsNCiAgICByZXR1cm4gdSAvIHY7
DQp9DQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KaW5saW5lIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBib29sPjo6
dHlwZSBhcmVFc3NlbnRpYWxseUVxdWFsKFQgdSwgVCB2LCBUIGVwc2lsb24gPSBzdGQ6Om51bWVy
aWNfbGltaXRzPFQ+OjplcHNpbG9uKCkpDQp7DQogICAgaWYgKHUgPT0gdikNCiAgICAgICAgcmV0
dXJuIHRydWU7DQoNCiAgICBjb25zdCBUIGRlbHRhID0gc3RkOjphYnModSAtIHYpOw0KICAgIHJl
dHVybiBzYWZlRlBEaXZpc2lvbihkZWx0YSwgc3RkOjphYnModSkpIDw9IGVwc2lsb24gJiYgc2Fm
ZUZQRGl2aXNpb24oZGVsdGEsIHN0ZDo6YWJzKHYpKSA8PSBlcHNpbG9uOw0KfQ0KDQoNCnRlbXBs
YXRlIDx0eXBlbmFtZSBUPg0KaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
ZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZSBuYW5Qcm9wYWdhdGluZ01pbihUIGEs
IFQgYikNCnsNCiAgICByZXR1cm4gc3RkOjppc25hbihhKSB8fCBzdGQ6OmlzbmFuKGIpID8gc3Rk
OjpudW1lcmljX2xpbWl0czxUPjo6cXVpZXRfTmFOKCkgOiBzdGQ6Om1pbihhLCBiKTsNCn0NCg0K
DQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCmlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUgbmFuUHJvcGFnYXRpbmdN
YXgoVCBhLCBUIGIpDQp7DQogICAgcmV0dXJuIHN0ZDo6aXNuYW4oYSkgfHwgc3RkOjppc25hbihi
KSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnF1aWV0X05hTigpIDogc3RkOjptYXgoYSwgYik7
DQp9DQoNCmlubGluZSBib29sIGlzSW50ZWdyYWwoZmxvYXQgdmFsdWUpDQp7DQogICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4odmFsdWUpID09IHZhbHVlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPg0KaW5saW5lIHZvaWQgaW5jcmVtZW50V2l0aFNhdHVyYXRpb24oVCYgdmFsdWUpDQp7DQog
ICAgaWYgKHZhbHVlICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpKQ0KICAgICAgICB2
YWx1ZSsrOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KaW5saW5lIFQgbGVmdFNoaWZ0V2l0
aFNhdHVyYXRpb24oVCB2YWx1ZSwgdW5zaWduZWQgc2hpZnRBbW91bnQsIFQgbWF4ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6bWF4KCkpDQp7DQogICAgVCByZXN1bHQgPSB2YWx1ZSA8PCBzaGlm
dEFtb3VudDsNCiAgICANCiAgICBpZiAocmVzdWx0ID4+IHNoaWZ0QW1vdW50ICE9IHZhbHVlKQ0K
ICAgICAgICByZXR1cm4gbWF4Ow0KICAgIGlmIChyZXN1bHQgPiBtYXgpDQogICAgICAgIHJldHVy
biBtYXg7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0K
aW5saW5lIGJvb2wgbm9uRW1wdHlSYW5nZXNPdmVybGFwKFQgbGVmdE1pbiwgVCBsZWZ0TWF4LCBU
IHJpZ2h0TWluLCBUIHJpZ2h0TWF4KQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7
DQoNCiAgICByZXR1cm4gbGVmdE1heCA+IHJpZ2h0TWluICYmIHJpZ2h0TWF4ID4gbGVmdE1pbjsN
Cn0NCg0KDQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KaW5saW5lIGJvb2wgcmFuZ2VzT3Zl
cmxhcChUIGxlZnRNaW4sIFQgbGVmdE1heCwgVCByaWdodE1pbiwgVCByaWdodE1heCkNCnsNCiAg
ICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIA0KICAgIA0KICAgIGlmIChsZWZ0TWlu
ID09IGxlZnRNYXgpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICBpZiAocmlnaHRNaW4gPT0g
cmlnaHRNYXgpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgIHJldHVybiBub25FbXB0eVJh
bmdlc092ZXJsYXAobGVmdE1pbiwgbGVmdE1heCwgcmlnaHRNaW4sIHJpZ2h0TWF4KTsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgUmFuZG9tRnVuYz4NCnZvaWQg
c2h1ZmZsZVZlY3RvcihWZWN0b3JUeXBlJiB2ZWN0b3IsIHNpemVfdCBzaXplLCBjb25zdCBSYW5k
b21GdW5jJiByYW5kb21GdW5jKQ0Kew0KICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICsgMSA8IHNp
emU7ICsraSkNCiAgICAgICAgc3RkOjpzd2FwKHZlY3RvcltpXSwgdmVjdG9yW2kgKyByYW5kb21G
dW5jKHNpemUgLSBpKV0pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlLCB0eXBl
bmFtZSBSYW5kb21GdW5jPg0Kdm9pZCBzaHVmZmxlVmVjdG9yKFZlY3RvclR5cGUmIHZlY3Rvciwg
Y29uc3QgUmFuZG9tRnVuYyYgcmFuZG9tRnVuYykNCnsNCiAgICBzaHVmZmxlVmVjdG9yKHZlY3Rv
ciwgdmVjdG9yLnNpemUoKSwgcmFuZG9tRnVuYyk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBU
Pg0KY29uc3RleHByIHVuc2lnbmVkIGNsekNvbnN0ZXhwcihUIHZhbHVlKQ0Kew0KICAgIGNvbnN0
ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gY291bnRPZkJpdHM8VD47DQoNCiAgICB1c2luZyBVVCA9
IHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxUPjo6dHlwZTsNCiAgICBVVCB1VmFsdWUgPSB2
YWx1ZTsNCg0KICAgIHVuc2lnbmVkIHplcm9Db3VudCA9IDA7DQogICAgZm9yIChpbnQgaSA9IGJp
dFNpemUgLSAxOyBpID49IDA7IGktLSkgew0KICAgICAgICBpZiAodVZhbHVlID4+IGkpDQogICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgemVyb0NvdW50Kys7DQogICAgfQ0KICAgIHJldHVybiB6
ZXJvQ291bnQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgdW5zaWduZWQgY2x6
KFQgdmFsdWUpDQp7DQogICAgY29uc3RleHByIHVuc2lnbmVkIGJpdFNpemUgPSBjb3VudE9mQml0
czxUPjsNCg0KICAgIHVzaW5nIFVUID0gdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFQ+Ojp0
eXBlOw0KICAgIFVUIHVWYWx1ZSA9IHZhbHVlOw0KDQoNCg0KDQoNCg0KI2xpbmUgNjI0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9NYXRo
RXh0cmFzLmgiDQogICAgDQogICAgDQogICAgDQogICAgdW5zaWduZWQgbG9uZyByZXQgPSAwOw0K
ICAgIGlmIChfQml0U2NhblJldmVyc2U2NCgmcmV0LCB1VmFsdWUpKQ0KICAgICAgICByZXR1cm4g
Yml0U2l6ZSAtIDEgLSByZXQ7DQogICAgcmV0dXJuIGJpdFNpemU7DQoNCg0KDQoNCiNsaW5lIDYz
NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvTWF0aEV4dHJhcy5oIg0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCmNvbnN0ZXhwciB1
bnNpZ25lZCBjdHpDb25zdGV4cHIoVCB2YWx1ZSkNCnsNCiAgICBjb25zdGV4cHIgdW5zaWduZWQg
Yml0U2l6ZSA9IGNvdW50T2ZCaXRzPFQ+Ow0KDQogICAgdXNpbmcgVVQgPSB0eXBlbmFtZSBzdGQ6
Om1ha2VfdW5zaWduZWQ8VD46OnR5cGU7DQogICAgVVQgdVZhbHVlID0gdmFsdWU7DQoNCiAgICB1
bnNpZ25lZCB6ZXJvQ291bnQgPSAwOw0KICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiaXRT
aXplOyBpKyspIHsNCiAgICAgICAgaWYgKHVWYWx1ZSAmIDEpDQogICAgICAgICAgICBicmVhazsN
Cg0KICAgICAgICB6ZXJvQ291bnQrKzsNCiAgICAgICAgdVZhbHVlID4+PSAxOw0KICAgIH0NCiAg
ICByZXR1cm4gemVyb0NvdW50Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KaW5saW5lIHVu
c2lnbmVkIGN0eihUIHZhbHVlKQ0Kew0KICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0g
Y291bnRPZkJpdHM8VD47DQoNCiAgICB1c2luZyBVVCA9IHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNp
Z25lZDxUPjo6dHlwZTsNCiAgICBVVCB1VmFsdWUgPSB2YWx1ZTsNCg0KDQoNCg0KDQojbGluZSA2
NzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL01hdGhFeHRyYXMuaCINCiAgICB1bnNpZ25lZCBsb25nIHJldCA9IDA7DQogICAgaWYgKF9C
aXRTY2FuRm9yd2FyZDY0KCZyZXQsIHVWYWx1ZSkpDQogICAgICAgIHJldHVybiByZXQ7DQogICAg
cmV0dXJuIGJpdFNpemU7DQoNCg0KDQoNCiNsaW5lIDY3OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWF0aEV4dHJhcy5oIg0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KaW5saW5lIHVuc2lnbmVkIGdldExTQlNldChUIHQpDQp7DQog
ICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBjdHoodCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+DQpjb25zdGV4cHIgdW5zaWduZWQgZ2V0TFNCU2V0Q29uc3RleHByKFQgdCkNCnsNCiAgICAo
KHZvaWQpMCk7DQogICAgcmV0dXJuIGN0ekNvbnN0ZXhwcih0KTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVD4NCmlubGluZSB1bnNpZ25lZCBnZXRNU0JTZXQoVCB0KQ0Kew0KICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCBiaXRTaXplID0gY291bnRPZkJpdHM8VD47DQogICAgKCh2b2lkKTApOw0KICAg
IHJldHVybiBiaXRTaXplIC0gMSAtIGNseih0KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4N
CmNvbnN0ZXhwciB1bnNpZ25lZCBnZXRNU0JTZXRDb25zdGV4cHIoVCB0KQ0Kew0KICAgIGNvbnN0
ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gY291bnRPZkJpdHM8VD47DQogICAgKCh2b2lkKTApOw0K
ICAgIHJldHVybiBiaXRTaXplIC0gMSAtIGNsekNvbnN0ZXhwcih0KTsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdW5zaWduZWQgbG9nMihUIHZhbHVlKSB7IHJldHVybiBnZXRNU0JTZXQodmFs
dWUpOyB9DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgdW5zaWduZWQgbG9nMkNvbnN0
ZXhwcihUIHZhbHVlKSB7IHJldHVybiBnZXRNU0JTZXRDb25zdGV4cHIodmFsdWUpOyB9DQoNCn0g
DQoNCnVzaW5nIFdURjo6c2h1ZmZsZVZlY3RvcjsNCnVzaW5nIFdURjo6Y2x6Ow0KdXNpbmcgV1RG
OjpjdHo7DQp1c2luZyBXVEY6OmdldExTQlNldDsNCnVzaW5nIFdURjo6Z2V0TVNCU2V0Ow0KI2xp
bmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1ZlY3Rvci5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Ob3RGb3VuZC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNw
YWNlIFdURiB7DQoNCmNvbnN0ZXhwciBzaXplX3Qgbm90Rm91bmQgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KC0xKTsNCg0KfQ0KDQp1c2luZyBXVEY6Om5vdEZvdW5kOw0KI2xpbmUgMzYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1ZlY3Rvci5o
Ig0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9WYWx1ZUNoZWNrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIFdURiB7
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1ZUNoZWNrIHsNCiAgICB0eXBlZGVm
IFQgVHJhaXRUeXBlOw0KICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgVCYp
IHsgfQ0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ5ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WYWx1ZUNoZWNrLmgi
DQoNCn0NCiNsaW5lIDM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9WZWN0b3IuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1ZlY3RvclRyYWl0cy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KICAgIGNsYXNzIEF0b21TdHJpbmc7DQoNCiAgICB0
ZW1wbGF0ZTxib29sIGlzUG9kLCB0eXBlbmFtZSBUPg0KICAgIHN0cnVjdCBWZWN0b3JUcmFpdHNC
YXNlOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4NCiAgICBzdHJ1Y3QgVmVjdG9yVHJhaXRz
QmFzZTxmYWxzZSwgVD4NCiAgICB7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVk
c0luaXRpYWxpemF0aW9uID0gdHJ1ZTsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNh
bkluaXRpYWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBjYW5Nb3ZlV2l0aE1lbWNweSA9IGZhbHNlOw0KICAgICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgY2FuQ29weVdpdGhNZW1jcHkgPSBmYWxzZTsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGNhbkZpbGxXaXRoTWVtc2V0ID0gZmFsc2U7DQogICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOw0KICAgIH07DQoNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPg0KICAgIHN0cnVjdCBWZWN0b3JUcmFpdHNCYXNlPHRydWUsIFQ+DQog
ICAgew0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNJbml0aWFsaXphdGlvbiA9
IGZhbHNlOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhN
ZW1zZXQgPSB0cnVlOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuTW92ZVdpdGhN
ZW1jcHkgPSB0cnVlOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQ29weVdpdGhN
ZW1jcHkgPSB0cnVlOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuRmlsbFdpdGhN
ZW1zZXQgPSBzaXplb2YoVCkgPT0gc2l6ZW9mKGNoYXIpICYmIHN0ZDo6aXNfaW50ZWdyYWw8VD46
OnZhbHVlOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1j
bXAgPSB0cnVlOw0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KICAgIHN0cnVj
dCBWZWN0b3JUcmFpdHMgOiBWZWN0b3JUcmFpdHNCYXNlPHN0ZDo6aXNfcG9kPFQ+Ojp2YWx1ZSwg
VD4geyB9Ow0KDQogICAgc3RydWN0IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIDogVmVjdG9yVHJh
aXRzQmFzZTxmYWxzZSwgdm9pZD4NCiAgICB7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IHRydWU7DQogICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5Nb3ZlV2l0aE1lbWNweSA9IHRydWU7DQogICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IHRydWU7DQogICAgfTsNCg0KICAgIA0KICAg
IA0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZlY3RvclRyYWl0czxSZWZQdHI8
UD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFA+IHN0cnVjdCBWZWN0b3JUcmFpdHM8c3RkOjp1bmlxdWVfcHRyPFA+PiA6IFNpbXBsZUNsYXNz
VmVjdG9yVHJhaXRzIHsgfTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmVjdG9y
VHJhaXRzPFJlZjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07DQogICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21TdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JU
cmFpdHMgeyB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lIFNlY29u
ZD4NCiAgICBzdHJ1Y3QgVmVjdG9yVHJhaXRzPHN0ZDo6cGFpcjxGaXJzdCwgU2Vjb25kPj4NCiAg
ICB7DQogICAgICAgIHR5cGVkZWYgVmVjdG9yVHJhaXRzPEZpcnN0PiBGaXJzdFRyYWl0czsNCiAg
ICAgICAgdHlwZWRlZiBWZWN0b3JUcmFpdHM8U2Vjb25kPiBTZWNvbmRUcmFpdHM7DQoNCiAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzSW5pdGlhbGl6YXRpb24gPSBGaXJzdFRyYWl0
czo6bmVlZHNJbml0aWFsaXphdGlvbiB8fCBTZWNvbmRUcmFpdHM6Om5lZWRzSW5pdGlhbGl6YXRp
b247DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNl
dCA9IEZpcnN0VHJhaXRzOjpjYW5Jbml0aWFsaXplV2l0aE1lbXNldCAmJiBTZWNvbmRUcmFpdHM6
OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0Ow0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
Y2FuTW92ZVdpdGhNZW1jcHkgPSBGaXJzdFRyYWl0czo6Y2FuTW92ZVdpdGhNZW1jcHkgJiYgU2Vj
b25kVHJhaXRzOjpjYW5Nb3ZlV2l0aE1lbWNweTsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGNhbkNvcHlXaXRoTWVtY3B5ID0gRmlyc3RUcmFpdHM6OmNhbkNvcHlXaXRoTWVtY3B5ICYm
IFNlY29uZFRyYWl0czo6Y2FuQ29weVdpdGhNZW1jcHk7DQogICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBjYW5GaWxsV2l0aE1lbXNldCA9IGZhbHNlOw0KICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBGaXJzdFRyYWl0czo6Y2FuQ29tcGFyZVdp
dGhNZW1jbXAgJiYgU2Vjb25kVHJhaXRzOjpjYW5Db21wYXJlV2l0aE1lbWNtcDsNCiAgICB9Ow0K
DQp9IA0KDQp1c2luZyBXVEY6OlZlY3RvclRyYWl0czsNCnVzaW5nIFdURjo6U2ltcGxlQ2xhc3NW
ZWN0b3JUcmFpdHM7DQojbGluZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9yLmgiDQoNCg0KDQojbGluZSA0MyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9y
LmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KfQ0K
DQpuYW1lc3BhY2UgV1RGIHsNCg0KdXNpbmcgVmVjdG9yTWFsbG9jID0gRmFzdE1hbGxvYzsNCg0K
dGVtcGxhdGUgPGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgdHlwZW5hbWUgVD4NCnN0cnVjdCBWZWN0
b3JEZXN0cnVjdG9yOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0Kc3RydWN0IFZlY3RvckRlc3Ry
dWN0b3I8ZmFsc2UsIFQ+DQp7DQogICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoVCosIFQqKSB7fQ0K
fTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yPHRydWUs
IFQ+DQp7DQogICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3QoVCogYmVnaW4sIFQqIGVuZCkgDQogICAg
ew0KICAgICAgICBmb3IgKFQqIGN1ciA9IGJlZ2luOyBjdXIgIT0gZW5kOyArK2N1cikNCiAgICAg
ICAgICAgIGN1ci0+flQoKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Ym9vbCBuZWVkc0luaXRp
YWxpemF0aW9uLCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCB0eXBlbmFtZSBUPg0Kc3Ry
dWN0IFZlY3RvckluaXRpYWxpemVyOw0KDQp0ZW1wbGF0ZTxib29sIGNhbkluaXRpYWxpemVXaXRo
TWVtc2V0LCB0eXBlbmFtZSBUPg0Kc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBjYW5J
bml0aWFsaXplV2l0aE1lbXNldCwgVD4NCnsNCiAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplSWZO
b25QT0QoVCosIFQqKSB7IH0NCg0KICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCogYmVnaW4s
IFQqIGVuZCkNCiAgICB7DQogICAgICAgIFZlY3RvckluaXRpYWxpemVyPHRydWUsIGNhbkluaXRp
YWxpemVXaXRoTWVtc2V0LCBUPjo6aW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsNCiAgICB9DQp9Ow0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0Kc3RydWN0IFZlY3RvckluaXRpYWxpemVyPHRydWUsIGZh
bHNlLCBUPg0Kew0KICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJZk5vblBPRChUKiBiZWdpbiwg
VCogZW5kKQ0KICAgIHsNCiAgICAgICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsg
KytjdXIpDQogICAgICAgICAgICBuZXcgKE5vdE51bGwsIGN1cikgVCgpOw0KICAgIH0NCg0KICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkNCiAgICB7DQogICAgICAg
IGluaXRpYWxpemVJZk5vblBPRChiZWdpbiwgZW5kKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPg0Kc3RydWN0IFZlY3RvckluaXRpYWxpemVyPHRydWUsIHRydWUsIFQ+DQp7DQog
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUlmTm9uUE9EKFQqIGJlZ2luLCBUKiBlbmQpDQogICAg
ew0KICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KGJlZ2luKSwgMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oZW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJlZ2luKSk7DQog
ICAgfQ0KDQogICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQ0KICAg
IHsNCiAgICAgICAgaW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luLCBlbmQpOw0KICAgIH0NCn07DQoN
CnRlbXBsYXRlIDxib29sIGNhbk1vdmVXaXRoTWVtY3B5LCB0eXBlbmFtZSBUPg0Kc3RydWN0IFZl
Y3Rvck1vdmVyOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0Kc3RydWN0IFZlY3Rvck1vdmVyPGZh
bHNlLCBUPg0Kew0KICAgIHN0YXRpYyB2b2lkIG1vdmUoVCogc3JjLCBUKiBzcmNFbmQsIFQqIGRz
dCkNCiAgICB7DQogICAgICAgIHdoaWxlIChzcmMgIT0gc3JjRW5kKSB7DQogICAgICAgICAgICBu
ZXcgKE5vdE51bGwsIGRzdCkgVChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KCpz
cmMpKTsNCiAgICAgICAgICAgIHNyYy0+flQoKTsNCiAgICAgICAgICAgICsrZHN0Ow0KICAgICAg
ICAgICAgKytzcmM7DQogICAgICAgIH0NCiAgICB9DQogICAgc3RhdGljIHZvaWQgbW92ZU92ZXJs
YXBwaW5nKFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3QpDQogICAgew0KICAgICAgICBpZiAoc3Jj
ID4gZHN0KQ0KICAgICAgICAgICAgbW92ZShzcmMsIHNyY0VuZCwgZHN0KTsNCiAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgICBUKiBkc3RFbmQgPSBkc3QgKyAoc3JjRW5kIC0gc3JjKTsNCiAgICAg
ICAgICAgIHdoaWxlIChzcmMgIT0gc3JjRW5kKSB7DQogICAgICAgICAgICAgICAgLS1zcmNFbmQ7
DQogICAgICAgICAgICAgICAgLS1kc3RFbmQ7DQogICAgICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCBkc3RFbmQpIFQoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPigqc3JjRW5kKSk7
DQogICAgICAgICAgICAgICAgc3JjRW5kLT5+VCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnN0cnVjdCBWZWN0b3JNb3Zlcjx0
cnVlLCBUPg0Kew0KICAgIHN0YXRpYyB2b2lkIG1vdmUoY29uc3QgVCogc3JjLCBjb25zdCBUKiBz
cmNFbmQsIFQqIGRzdCkgDQogICAgew0KICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dm9pZCo+
KGRzdCksIHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PFQqPihzcmMpKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oc3JjRW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KHNyYykpOw0KICAgIH0NCiAgICBzdGF0aWMgdm9pZCBtb3ZlT3ZlcmxhcHBpbmcoY29uc3Qg
VCogc3JjLCBjb25zdCBUKiBzcmNFbmQsIFQqIGRzdCkgDQogICAgew0KICAgICAgICBtZW1tb3Zl
KHN0YXRpY19jYXN0PHZvaWQqPihkc3QpLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDxU
Kj4oc3JjKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0VuZCkgLSByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcmMpKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Ym9v
bCBjYW5Db3B5V2l0aE1lbWNweSwgdHlwZW5hbWUgVD4NCnN0cnVjdCBWZWN0b3JDb3BpZXI7DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgVmVjdG9yQ29waWVyPGZhbHNlLCBUPg0Kew0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+DQogICAgc3RhdGljIHZvaWQgdW5pbml0aWFsaXplZENv
cHkoY29uc3QgVCogc3JjLCBjb25zdCBUKiBzcmNFbmQsIFUqIGRzdCkNCiAgICB7DQogICAgICAg
IHdoaWxlIChzcmMgIT0gc3JjRW5kKSB7DQogICAgICAgICAgICBuZXcgKE5vdE51bGwsIGRzdCkg
VSgqc3JjKTsNCiAgICAgICAgICAgICsrZHN0Ow0KICAgICAgICAgICAgKytzcmM7DQogICAgICAg
IH0NCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0Kc3RydWN0IFZlY3RvckNvcGll
cjx0cnVlLCBUPg0Kew0KICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQq
IHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3QpDQogICAgew0KICAgICAgICBtZW1jcHkoc3Rh
dGljX2Nhc3Q8dm9pZCo+KGRzdCksIHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PFQqPihz
cmMpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3JjRW5kKSAtIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KHNyYykpOw0KICAgIH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
Pg0KICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQqIHNyYywgY29uc3Qg
VCogc3JjRW5kLCBVKiBkc3QpDQogICAgew0KICAgICAgICBWZWN0b3JDb3BpZXI8ZmFsc2UsIFQ+
Ojp1bmluaXRpYWxpemVkQ29weShzcmMsIHNyY0VuZCwgZHN0KTsNCiAgICB9DQp9Ow0KDQp0ZW1w
bGF0ZSA8Ym9vbCBjYW5GaWxsV2l0aE1lbXNldCwgdHlwZW5hbWUgVD4NCnN0cnVjdCBWZWN0b3JG
aWxsZXI7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgVmVjdG9yRmlsbGVyPGZhbHNl
LCBUPg0Kew0KICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRGaWxsKFQqIGRzdCwgVCogZHN0
RW5kLCBjb25zdCBUJiB2YWwpIA0KICAgIHsNCiAgICAgICAgd2hpbGUgKGRzdCAhPSBkc3RFbmQp
IHsNCiAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgZHN0KSBUKHZhbCk7DQogICAgICAgICAgICAr
K2RzdDsNCiAgICAgICAgfQ0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1
Y3QgVmVjdG9yRmlsbGVyPHRydWUsIFQ+DQp7DQogICAgc3RhdGljIHZvaWQgdW5pbml0aWFsaXpl
ZEZpbGwoVCogZHN0LCBUKiBkc3RFbmQsIGNvbnN0IFQmIHZhbCkgDQogICAgew0KICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9PSAxLCAiU2l6ZSBvZiB0eXBlIFQgc2hvdWxkIGJlIGVx
dWFsIHRvIG9uZSEiKTsNCiAgICAgICAgbWVtc2V0KGRzdCwgdmFsLCBkc3RFbmQgLSBkc3QpOw0K
ICAgIH0NCn07DQoNCnRlbXBsYXRlPGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAsIHR5cGVuYW1l
IFQ+DQpzdHJ1Y3QgVmVjdG9yQ29tcGFyZXI7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1
Y3QgVmVjdG9yQ29tcGFyZXI8ZmFsc2UsIFQ+DQp7DQogICAgc3RhdGljIGJvb2wgY29tcGFyZShj
b25zdCBUKiBhLCBjb25zdCBUKiBiLCBzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQ0KICAgICAgICAgICAgaWYgKCEoYVtpXSA9PSBi
W2ldKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIHJldHVybiB0cnVl
Ow0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgVmVjdG9yQ29tcGFy
ZXI8dHJ1ZSwgVD4NCnsNCiAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFQqIGEsIGNvbnN0
IFQqIGIsIHNpemVfdCBzaXplKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1lbWNtcChhLCBiLCBz
aXplb2YoVCkgKiBzaXplKSA9PSAwOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+
DQpzdHJ1Y3QgVmVjdG9yVHlwZU9wZXJhdGlvbnMNCnsNCiAgICBzdGF0aWMgdm9pZCBkZXN0cnVj
dChUKiBiZWdpbiwgVCogZW5kKQ0KICAgIHsNCiAgICAgICAgVmVjdG9yRGVzdHJ1Y3Rvcjwhc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgVD46OmRlc3RydWN0KGJlZ2lu
LCBlbmQpOw0KICAgIH0NCg0KICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJZk5vblBPRChUKiBi
ZWdpbiwgVCogZW5kKQ0KICAgIHsNCiAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9yVHJh
aXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbkluaXRpYWxp
emVXaXRoTWVtc2V0LCBUPjo6aW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luLCBlbmQpOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkNCiAgICB7DQog
ICAgICAgIFZlY3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0aWFsaXph
dGlvbiwgVmVjdG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD46OmluaXRp
YWxpemUoYmVnaW4sIGVuZCk7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgbW92ZShUKiBzcmMs
IFQqIHNyY0VuZCwgVCogZHN0KQ0KICAgIHsNCiAgICAgICAgVmVjdG9yTW92ZXI8VmVjdG9yVHJh
aXRzPFQ+OjpjYW5Nb3ZlV2l0aE1lbWNweSwgVD46Om1vdmUoc3JjLCBzcmNFbmQsIGRzdCk7DQog
ICAgfQ0KDQogICAgc3RhdGljIHZvaWQgbW92ZU92ZXJsYXBwaW5nKFQqIHNyYywgVCogc3JjRW5k
LCBUKiBkc3QpDQogICAgew0KICAgICAgICBWZWN0b3JNb3ZlcjxWZWN0b3JUcmFpdHM8VD46OmNh
bk1vdmVXaXRoTWVtY3B5LCBUPjo6bW92ZU92ZXJsYXBwaW5nKHNyYywgc3JjRW5kLCBkc3QpOw0K
ICAgIH0NCg0KICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRDb3B5KGNvbnN0IFQqIHNyYywg
Y29uc3QgVCogc3JjRW5kLCBUKiBkc3QpDQogICAgew0KICAgICAgICBWZWN0b3JDb3BpZXI8VmVj
dG9yVHJhaXRzPFQ+OjpjYW5Db3B5V2l0aE1lbWNweSwgVD46OnVuaW5pdGlhbGl6ZWRDb3B5KHNy
Yywgc3JjRW5kLCBkc3QpOw0KICAgIH0NCg0KICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRG
aWxsKFQqIGRzdCwgVCogZHN0RW5kLCBjb25zdCBUJiB2YWwpDQogICAgew0KICAgICAgICBWZWN0
b3JGaWxsZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5GaWxsV2l0aE1lbXNldCwgVD46OnVuaW5pdGlh
bGl6ZWRGaWxsKGRzdCwgZHN0RW5kLCB2YWwpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9v
bCBjb21wYXJlKGNvbnN0IFQqIGEsIGNvbnN0IFQqIGIsIHNpemVfdCBzaXplKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIFZlY3RvckNvbXBhcmVyPFZlY3RvclRyYWl0czxUPjo6Y2FuQ29tcGFyZVdp
dGhNZW1jbXAsIFQ+Ojpjb21wYXJlKGEsIGIsIHNpemUpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1hbGxvYz4NCmNsYXNzIFZlY3RvckJ1ZmZlckJhc2Ugew0K
ICAgIFZlY3RvckJ1ZmZlckJhc2UoY29uc3QgVmVjdG9yQnVmZmVyQmFzZSYpID0gZGVsZXRlOyBW
ZWN0b3JCdWZmZXJCYXNlJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yQnVmZmVyQmFzZSYpID0gZGVs
ZXRlOzsNCnB1YmxpYzoNCiAgICB0ZW1wbGF0ZTxGYWlsdXJlQWN0aW9uIGFjdGlvbj4NCiAgICBi
b29sIGFsbG9jYXRlQnVmZmVyKHNpemVfdCBuZXdDYXBhY2l0eSkNCiAgICB7DQogICAgICAgIHN0
YXRpY19hc3NlcnQoYWN0aW9uID09IEZhaWx1cmVBY3Rpb246OkNyYXNoIHx8IGFjdGlvbiA9PSBG
YWlsdXJlQWN0aW9uOjpSZXBvcnQpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmIChu
ZXdDYXBhY2l0eSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIHNpemVv
ZihUKSkgew0KICAgICAgICAgICAgaWYgY29uc3RleHByIChhY3Rpb24gPT0gRmFpbHVyZUFjdGlv
bjo6Q3Jhc2gpDQogICAgICAgICAgICAgICAgV1RGQ3Jhc2goKTsNCiAgICAgICAgICAgIGVsc2UN
CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBzaXpl
X3Qgc2l6ZVRvQWxsb2NhdGUgPSBuZXdDYXBhY2l0eSAqIHNpemVvZihUKTsNCiAgICAgICAgVCog
bmV3QnVmZmVyID0gbnVsbHB0cjsNCiAgICAgICAgaWYgY29uc3RleHByIChhY3Rpb24gPT0gRmFp
bHVyZUFjdGlvbjo6Q3Jhc2gpDQogICAgICAgICAgICBuZXdCdWZmZXIgPSBzdGF0aWNfY2FzdDxU
Kj4oTWFsbG9jOjptYWxsb2Moc2l6ZVRvQWxsb2NhdGUpKTsNCiAgICAgICAgZWxzZSB7DQogICAg
ICAgICAgICBuZXdCdWZmZXIgPSBzdGF0aWNfY2FzdDxUKj4oTWFsbG9jOjp0cnlNYWxsb2Moc2l6
ZVRvQWxsb2NhdGUpKTsNCiAgICAgICAgICAgIGlmICgoIW5ld0J1ZmZlcikpDQogICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIG1fY2FwYWNpdHkgPSBzaXpl
VG9BbGxvY2F0ZSAvIHNpemVvZihUKTsNCiAgICAgICAgbV9idWZmZXIgPSBuZXdCdWZmZXI7DQog
ICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBhbGxv
Y2F0ZUJ1ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkpIHsgYWxsb2NhdGVCdWZmZXI8RmFpbHVyZUFj
dGlvbjo6Q3Jhc2g+KG5ld0NhcGFjaXR5KTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCB0cnlB
bGxvY2F0ZUJ1ZmZlcihzaXplX3QgbmV3Q2FwYWNpdHkpIHsgcmV0dXJuIGFsbG9jYXRlQnVmZmVy
PEZhaWx1cmVBY3Rpb246OlJlcG9ydD4obmV3Q2FwYWNpdHkpOyB9DQoNCiAgICBib29sIHNob3Vs
ZFJlYWxsb2NhdGVCdWZmZXIoc2l6ZV90IG5ld0NhcGFjaXR5KSBjb25zdA0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIFZlY3RvclRyYWl0czxUPjo6Y2FuTW92ZVdpdGhNZW1jcHkgJiYgbV9jYXBhY2l0
eSAmJiBuZXdDYXBhY2l0eTsNCiAgICB9DQoNCiAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIoc2l6
ZV90IG5ld0NhcGFjaXR5KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAo
bmV3Q2FwYWNpdHkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9m
KFQpKQ0KICAgICAgICAgICAgV1RGQ3Jhc2goKTsNCiAgICAgICAgc2l6ZV90IHNpemVUb0FsbG9j
YXRlID0gbmV3Q2FwYWNpdHkgKiBzaXplb2YoVCk7DQogICAgICAgIG1fY2FwYWNpdHkgPSBzaXpl
VG9BbGxvY2F0ZSAvIHNpemVvZihUKTsNCiAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxU
Kj4oTWFsbG9jOjpyZWFsbG9jKG1fYnVmZmVyLCBzaXplVG9BbGxvY2F0ZSkpOw0KICAgIH0NCg0K
ICAgIHZvaWQgZGVhbGxvY2F0ZUJ1ZmZlcihUKiBidWZmZXJUb0RlYWxsb2NhdGUpDQogICAgew0K
ICAgICAgICBpZiAoIWJ1ZmZlclRvRGVhbGxvY2F0ZSkNCiAgICAgICAgICAgIHJldHVybjsNCiAg
ICAgICAgDQogICAgICAgIGlmIChtX2J1ZmZlciA9PSBidWZmZXJUb0RlYWxsb2NhdGUpIHsNCiAg
ICAgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsNCiAgICAgICAgICAgIG1fY2FwYWNpdHkgPSAw
Ow0KICAgICAgICB9DQoNCiAgICAgICAgTWFsbG9jOjpmcmVlKGJ1ZmZlclRvRGVhbGxvY2F0ZSk7
DQogICAgfQ0KDQogICAgVCogYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0NCiAgICBjb25z
dCBUKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQ0KICAgIHN0YXRpYyBwdHJk
aWZmX3QgYnVmZmVyTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yQnVmZmVyQmFzZSo+KDB4NDAwMCktPm1f
YnVmZmVyKSkgLSAweDQwMDApOyB9DQogICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9jYXBhY2l0eTsgfQ0KDQogICAgTWFsbG9jUHRyPFQsIE1hbGxvYz4gcmVsZWFzZUJ1ZmZl
cigpDQogICAgew0KICAgICAgICBUKiBidWZmZXIgPSBtX2J1ZmZlcjsNCiAgICAgICAgbV9idWZm
ZXIgPSBudWxscHRyOw0KICAgICAgICBtX2NhcGFjaXR5ID0gMDsNCiAgICAgICAgcmV0dXJuIGFk
b3B0TWFsbG9jUHRyPFQsIE1hbGxvYz4oYnVmZmVyKTsNCiAgICB9DQoNCnByb3RlY3RlZDoNCiAg
ICBWZWN0b3JCdWZmZXJCYXNlKCkNCiAgICAgICAgOiBtX2J1ZmZlcihudWxscHRyKQ0KICAgICAg
ICAsIG1fY2FwYWNpdHkoMCkNCiAgICAgICAgLCBtX3NpemUoMCkNCiAgICB7DQogICAgfQ0KDQog
ICAgVmVjdG9yQnVmZmVyQmFzZShUKiBidWZmZXIsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IHNp
emUpDQogICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQ0KICAgICAgICAsIG1fY2FwYWNpdHkoY2Fw
YWNpdHkpDQogICAgICAgICwgbV9zaXplKHNpemUpDQogICAgew0KICAgIH0NCg0KICAgIH5WZWN0
b3JCdWZmZXJCYXNlKCkNCiAgICB7DQogICAgICAgIA0KICAgIH0NCg0KICAgIFQqIG1fYnVmZmVy
Ow0KICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7DQogICAgdW5zaWduZWQgbV9zaXplOyANCn07DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jID0gVmVjdG9yTWFsbG9jPiBjbGFzcyBWZWN0b3JCdWZmZXI7DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIE1hbGxvYz4NCmNsYXNzIFZlY3RvckJ1ZmZlcjxULCAwLCBNYWxsb2M+
IDogcHJpdmF0ZSBWZWN0b3JCdWZmZXJCYXNlPFQsIE1hbGxvYz4gew0KcHJpdmF0ZToNCiAgICB0
eXBlZGVmIFZlY3RvckJ1ZmZlckJhc2U8VCwgTWFsbG9jPiBCYXNlOw0KcHVibGljOg0KICAgIFZl
Y3RvckJ1ZmZlcigpDQogICAgew0KICAgIH0NCg0KICAgIFZlY3RvckJ1ZmZlcihzaXplX3QgY2Fw
YWNpdHksIHNpemVfdCBzaXplID0gMCkNCiAgICB7DQogICAgICAgIG1fc2l6ZSA9IHNpemU7DQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYgKGNhcGFjaXR5KQ0KICAgICAgICAgICAgYWxs
b2NhdGVCdWZmZXIoY2FwYWNpdHkpOw0KICAgIH0NCg0KICAgIH5WZWN0b3JCdWZmZXIoKQ0KICAg
IHsNCiAgICAgICAgZGVhbGxvY2F0ZUJ1ZmZlcihidWZmZXIoKSk7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgc3dhcChWZWN0b3JCdWZmZXI8VCwgMCwgTWFsbG9jPiYgb3RoZXIsIHNpemVfdCwgc2l6
ZV90KQ0KICAgIHsNCiAgICAgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7
DQogICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsNCiAgICB9
DQogICAgDQogICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKSB7IH0NCg0KDQoN
Cg0KDQoNCiNsaW5lIDQyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9yLmgiDQoNCiAgICB1c2luZyBCYXNlOjphbGxvY2F0ZUJ1
ZmZlcjsNCiAgICB1c2luZyBCYXNlOjp0cnlBbGxvY2F0ZUJ1ZmZlcjsNCiAgICB1c2luZyBCYXNl
OjpzaG91bGRSZWFsbG9jYXRlQnVmZmVyOw0KICAgIHVzaW5nIEJhc2U6OnJlYWxsb2NhdGVCdWZm
ZXI7DQogICAgdXNpbmcgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcjsNCg0KICAgIHVzaW5nIEJhc2U6
OmJ1ZmZlcjsNCiAgICB1c2luZyBCYXNlOjpjYXBhY2l0eTsNCiAgICB1c2luZyBCYXNlOjpidWZm
ZXJNZW1vcnlPZmZzZXQ7DQoNCiAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOw0KDQpwcm90
ZWN0ZWQ6DQogICAgdXNpbmcgQmFzZTo6bV9zaXplOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBj
bGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCiAgICB1c2luZyBCYXNlOjptX2J1ZmZl
cjsNCiAgICB1c2luZyBCYXNlOjptX2NhcGFjaXR5Ow0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQpjbGFzcyBWZWN0b3JC
dWZmZXIgOiBwcml2YXRlIFZlY3RvckJ1ZmZlckJhc2U8VCwgTWFsbG9jPiB7DQogICAgVmVjdG9y
QnVmZmVyKGNvbnN0IFZlY3RvckJ1ZmZlciYpID0gZGVsZXRlOyBWZWN0b3JCdWZmZXImIG9wZXJh
dG9yPShjb25zdCBWZWN0b3JCdWZmZXImKSA9IGRlbGV0ZTs7DQpwcml2YXRlOg0KICAgIHR5cGVk
ZWYgVmVjdG9yQnVmZmVyQmFzZTxULCBNYWxsb2M+IEJhc2U7DQpwdWJsaWM6DQogICAgVmVjdG9y
QnVmZmVyKCkNCiAgICAgICAgOiBCYXNlKGlubGluZUJ1ZmZlcigpLCBpbmxpbmVDYXBhY2l0eSwg
MCkNCiAgICB7DQogICAgfQ0KDQogICAgVmVjdG9yQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgc2l6
ZV90IHNpemUgPSAwKQ0KICAgICAgICA6IEJhc2UoaW5saW5lQnVmZmVyKCksIGlubGluZUNhcGFj
aXR5LCBzaXplKQ0KICAgIHsNCiAgICAgICAgaWYgKGNhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkp
DQogICAgICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1ZmZlcihjYXBhY2l0eSk7DQogICAgfQ0KDQog
ICAgflZlY3RvckJ1ZmZlcigpDQogICAgew0KICAgICAgICBkZWFsbG9jYXRlQnVmZmVyKGJ1ZmZl
cigpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxGYWlsdXJlQWN0aW9uIGFjdGlvbj4NCiAgICBi
b29sIGFsbG9jYXRlQnVmZmVyKHNpemVfdCBuZXdDYXBhY2l0eSkNCiAgICB7DQogICAgICAgIA0K
ICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPiBpbmxpbmVDYXBhY2l0eSkNCiAgICAgICAgICAgIHJl
dHVybiBCYXNlOjp0ZW1wbGF0ZSBhbGxvY2F0ZUJ1ZmZlcjxhY3Rpb24+KG5ld0NhcGFjaXR5KTsN
CiAgICAgICAgbV9idWZmZXIgPSBpbmxpbmVCdWZmZXIoKTsNCiAgICAgICAgbV9jYXBhY2l0eSA9
IGlubGluZUNhcGFjaXR5Ow0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICBfX2Zv
cmNlaW5saW5lIHZvaWQgYWxsb2NhdGVCdWZmZXIoc2l6ZV90IG5ld0NhcGFjaXR5KSB7IGFsbG9j
YXRlQnVmZmVyPEZhaWx1cmVBY3Rpb246OkNyYXNoPihuZXdDYXBhY2l0eSk7IH0NCiAgICBfX2Zv
cmNlaW5saW5lIGJvb2wgdHJ5QWxsb2NhdGVCdWZmZXIoc2l6ZV90IG5ld0NhcGFjaXR5KSB7IHJl
dHVybiBhbGxvY2F0ZUJ1ZmZlcjxGYWlsdXJlQWN0aW9uOjpSZXBvcnQ+KG5ld0NhcGFjaXR5KTsg
fQ0KDQogICAgdm9pZCBkZWFsbG9jYXRlQnVmZmVyKFQqIGJ1ZmZlclRvRGVhbGxvY2F0ZSkNCiAg
ICB7DQogICAgICAgIGlmIChidWZmZXJUb0RlYWxsb2NhdGUgPT0gaW5saW5lQnVmZmVyKCkpDQog
ICAgICAgICAgICByZXR1cm47DQogICAgICAgIEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIoYnVmZmVy
VG9EZWFsbG9jYXRlKTsNCiAgICB9DQoNCiAgICBib29sIHNob3VsZFJlYWxsb2NhdGVCdWZmZXIo
c2l6ZV90IG5ld0NhcGFjaXR5KSBjb25zdA0KICAgIHsNCiAgICAgICAgDQogICAgICAgIHJldHVy
biBCYXNlOjpzaG91bGRSZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KSAmJiBzdGQ6Om1pbihz
dGF0aWNfY2FzdDxzaXplX3Q+KG1fY2FwYWNpdHkpLCBuZXdDYXBhY2l0eSkgPiBpbmxpbmVDYXBh
Y2l0eTsNCiAgICB9DQoNCiAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIoc2l6ZV90IG5ld0NhcGFj
aXR5KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBCYXNlOjpyZWFsbG9jYXRl
QnVmZmVyKG5ld0NhcGFjaXR5KTsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAoVmVjdG9yQnVmZmVy
JiBvdGhlciwgc2l6ZV90IG15U2l6ZSwgc2l6ZV90IG90aGVyU2l6ZSkNCiAgICB7DQogICAgICAg
IGlmIChidWZmZXIoKSA9PSBpbmxpbmVCdWZmZXIoKSAmJiBvdGhlci5idWZmZXIoKSA9PSBvdGhl
ci5pbmxpbmVCdWZmZXIoKSkgew0KICAgICAgICAgICAgc3dhcElubGluZUJ1ZmZlcihvdGhlciwg
bXlTaXplLCBvdGhlclNpemUpOw0KICAgICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90
aGVyLm1fY2FwYWNpdHkpOw0KICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZlcigpID09IGlubGluZUJ1
ZmZlcigpKSB7DQogICAgICAgICAgICBtX2J1ZmZlciA9IG90aGVyLm1fYnVmZmVyOw0KICAgICAg
ICAgICAgb3RoZXIubV9idWZmZXIgPSBvdGhlci5pbmxpbmVCdWZmZXIoKTsNCiAgICAgICAgICAg
IHN3YXBJbmxpbmVCdWZmZXIob3RoZXIsIG15U2l6ZSwgMCk7DQogICAgICAgICAgICBzdGQ6OnN3
YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7DQogICAgICAgIH0gZWxzZSBpZiAob3Ro
ZXIuYnVmZmVyKCkgPT0gb3RoZXIuaW5saW5lQnVmZmVyKCkpIHsNCiAgICAgICAgICAgIG90aGVy
Lm1fYnVmZmVyID0gbV9idWZmZXI7DQogICAgICAgICAgICBtX2J1ZmZlciA9IGlubGluZUJ1ZmZl
cigpOw0KICAgICAgICAgICAgc3dhcElubGluZUJ1ZmZlcihvdGhlciwgMCwgb3RoZXJTaXplKTsN
CiAgICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsNCiAg
ICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHN0ZDo6c3dhcChtX2J1ZmZlciwgb3RoZXIubV9i
dWZmZXIpOw0KICAgICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1fY2FwYWNp
dHkpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZO
ZWVkZWQoKQ0KICAgIHsNCiAgICAgICAgaWYgKG1fYnVmZmVyKQ0KICAgICAgICAgICAgcmV0dXJu
Ow0KICAgICAgICBtX2J1ZmZlciA9IGlubGluZUJ1ZmZlcigpOw0KICAgICAgICBtX2NhcGFjaXR5
ID0gaW5saW5lQ2FwYWNpdHk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNTQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9WZWN0b3IuaCINCg0KICAgIHVzaW5nIEJhc2U6OmJ1ZmZlcjsNCiAgICB1c2lu
ZyBCYXNlOjpjYXBhY2l0eTsNCiAgICB1c2luZyBCYXNlOjpidWZmZXJNZW1vcnlPZmZzZXQ7DQoN
CiAgICBNYWxsb2NQdHI8VCwgTWFsbG9jPiByZWxlYXNlQnVmZmVyKCkNCiAgICB7DQogICAgICAg
IGlmIChidWZmZXIoKSA9PSBpbmxpbmVCdWZmZXIoKSkNCiAgICAgICAgICAgIHJldHVybiB7IH07
DQogICAgICAgIHJldHVybiBCYXNlOjpyZWxlYXNlQnVmZmVyKCk7DQogICAgfQ0KDQpwcm90ZWN0
ZWQ6DQogICAgdXNpbmcgQmFzZTo6bV9zaXplOw0KDQpwcml2YXRlOg0KICAgIHVzaW5nIEJhc2U6
Om1fYnVmZmVyOw0KICAgIHVzaW5nIEJhc2U6Om1fY2FwYWNpdHk7DQogICAgDQogICAgdm9pZCBz
d2FwSW5saW5lQnVmZmVyKFZlY3RvckJ1ZmZlciYgb3RoZXIsIHNpemVfdCBteVNpemUsIHNpemVf
dCBvdGhlclNpemUpDQogICAgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHN3YXBJbmxp
bmVCdWZmZXJzKGlubGluZUJ1ZmZlcigpLCBvdGhlci5pbmxpbmVCdWZmZXIoKSwgbXlTaXplLCBv
dGhlclNpemUpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgdm9pZCBzd2FwSW5saW5lQnVmZmVy
cyhUKiBsZWZ0LCBUKiByaWdodCwgc2l6ZV90IGxlZnRTaXplLCBzaXplX3QgcmlnaHRTaXplKQ0K
ICAgIHsNCiAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpDQogICAgICAgICAgICByZXR1cm47DQog
ICAgICAgIA0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
DQogICAgICAgIHNpemVfdCBzd2FwQm91bmQgPSBzdGQ6Om1pbihsZWZ0U2l6ZSwgcmlnaHRTaXpl
KTsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN3YXBCb3VuZDsgKytpKQ0KICAg
ICAgICAgICAgc3RkOjpzd2FwKGxlZnRbaV0sIHJpZ2h0W2ldKTsNCiAgICAgICAgVmVjdG9yVHlw
ZU9wZXJhdGlvbnM8VD46Om1vdmUobGVmdCArIHN3YXBCb3VuZCwgbGVmdCArIGxlZnRTaXplLCBy
aWdodCArIHN3YXBCb3VuZCk7DQogICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojptb3Zl
KHJpZ2h0ICsgc3dhcEJvdW5kLCByaWdodCArIHJpZ2h0U2l6ZSwgbGVmdCArIHN3YXBCb3VuZCk7
DQogICAgfQ0KDQogICAgVCogaW5saW5lQnVmZmVyKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUKj4obV9pbmxpbmVCdWZmZXIpOyB9DQogICAgY29uc3QgVCogaW5saW5lQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4obV9pbmxpbmVCdWZmZXIpOyB9
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU5MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9yLmgiDQogICAgdHlwZW5hbWUgc3RkOjph
bGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0
eXBlIG1faW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5XTsNCiNsaW5lIDU5NSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9yLmgi
DQp9Ow0KDQpzdHJ1Y3QgVW5zYWZlVmVjdG9yT3ZlcmZsb3cgew0KICAgIHN0YXRpYyAgdm9pZCBv
dmVyZmxvd2VkKCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQp9Ow0KDQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZs
b3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCmNsYXNzIFZl
Y3RvciA6IHByaXZhdGUgVmVjdG9yQnVmZmVyPFQsIGlubGluZUNhcGFjaXR5LCBNYWxsb2M+IHsN
CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZy
ZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RG
OjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6
OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRh
Zywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcg
d2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0Zv
cmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHJpdmF0ZToNCiAgICB0eXBlZGVm
IFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVDYXBhY2l0eSwgTWFsbG9jPiBCYXNlOw0KICAgIHR5cGVk
ZWYgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD4gVHlwZU9wZXJhdGlvbnM7DQogICAgZnJpZW5kIGNs
YXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBU
IFZhbHVlVHlwZTsNCg0KICAgIHR5cGVkZWYgVCogaXRlcmF0b3I7DQogICAgdHlwZWRlZiBjb25z
dCBUKiBjb25zdF9pdGVyYXRvcjsNCiAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxp
dGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsNCiAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVy
YXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsNCg0KICAgIFZlY3Rv
cigpDQogICAgew0KICAgIH0NCg0KICAgIA0KICAgIGV4cGxpY2l0IFZlY3RvcihzaXplX3Qgc2l6
ZSkNCiAgICAgICAgOiBCYXNlKHNpemUsIHNpemUpDQogICAgew0KICAgICAgICBhc2FuU2V0SW5p
dGlhbEJ1ZmZlclNpemVUbyhzaXplKTsNCg0KICAgICAgICBpZiAoYmVnaW4oKSkNCiAgICAgICAg
ICAgIFR5cGVPcGVyYXRpb25zOjppbml0aWFsaXplSWZOb25QT0QoYmVnaW4oKSwgZW5kKCkpOw0K
ICAgIH0NCg0KICAgIFZlY3RvcihzaXplX3Qgc2l6ZSwgY29uc3QgVCYgdmFsKQ0KICAgICAgICA6
IEJhc2Uoc2l6ZSwgc2l6ZSkNCiAgICB7DQogICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6
ZVRvKHNpemUpOw0KDQogICAgICAgIGlmIChiZWdpbigpKQ0KICAgICAgICAgICAgVHlwZU9wZXJh
dGlvbnM6OnVuaW5pdGlhbGl6ZWRGaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOw0KICAgIH0NCg0K
ICAgIFZlY3RvcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQ0KICAg
IHsNCiAgICAgICAgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsaXplckxpc3Quc2l6ZSgp
KTsNCg0KICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhpbml0aWFsaXplckxpc3Qu
c2l6ZSgpKTsNCg0KICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXpl
ckxpc3QpDQogICAgICAgICAgICB1bmNoZWNrZWRBcHBlbmQoZWxlbWVudCk7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gSXRlbXM+DQogICAgc3RhdGljIFZlY3RvciBmcm9tKEl0
ZW1zJiYuLi4gaXRlbXMpDQogICAgew0KICAgICAgICBWZWN0b3IgcmVzdWx0Ow0KICAgICAgICBh
dXRvIHNpemUgPSBzaXplb2YuLi4oaXRlbXMpOw0KDQogICAgICAgIHJlc3VsdC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNpemUpOw0KICAgICAgICByZXN1bHQuYXNhblNldEluaXRpYWxCdWZmZXJT
aXplVG8oc2l6ZSk7DQogICAgICAgIHJlc3VsdC5tX3NpemUgPSBzaXplOw0KDQogICAgICAgIHJl
c3VsdC51bmNoZWNrZWRJbml0aWFsaXplPDA+KHN0ZDo6Zm9yd2FyZDxJdGVtcz4oaXRlbXMpLi4u
KTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQoNCiAgICBWZWN0b3IoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWVUeXBlKQ0KICAgICAgICA6IEJhc2UoMCwgc3RkOjpudW1lcmljX2xp
bWl0czxkZWNsdHlwZShtX3NpemUpPjo6bWF4KCkpDQogICAgew0KICAgIH0NCg0KICAgIH5WZWN0
b3IoKQ0KICAgIHsNCiAgICAgICAgaWYgKG1fc2l6ZSkNCiAgICAgICAgICAgIFR5cGVPcGVyYXRp
b25zOjpkZXN0cnVjdChiZWdpbigpLCBlbmQoKSk7DQoNCiAgICAgICAgYXNhblNldEJ1ZmZlclNp
emVUb0Z1bGxDYXBhY2l0eSgwKTsNCiAgICB9DQoNCiAgICBWZWN0b3IoY29uc3QgVmVjdG9yJik7
DQogICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5cGVuYW1lIG90aGVyT3ZlcmZs
b3dCZWhhdmlvdXIsIHNpemVfdCBvdGhlck1pbmltdW1DYXBhY2l0eSwgdHlwZW5hbWUgT3RoZXJN
YWxsb2M+DQogICAgZXhwbGljaXQgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5
LCBvdGhlck92ZXJmbG93QmVoYXZpb3VyLCBvdGhlck1pbmltdW1DYXBhY2l0eSwgT3RoZXJNYWxs
b2M+Jik7DQoNCiAgICBWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3ImKTsNCiAgICB0ZW1w
bGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eSwgdHlwZW5hbWUgb3RoZXJPdmVyZmxvd0JlaGF2aW91
ciwgc2l6ZV90IG90aGVyTWluaW11bUNhcGFjaXR5LCB0eXBlbmFtZSBPdGhlck1hbGxvYz4NCiAg
ICBWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJP
dmVyZmxvd0JlaGF2aW91ciwgb3RoZXJNaW5pbXVtQ2FwYWNpdHksIE90aGVyTWFsbG9jPiYpOw0K
DQogICAgVmVjdG9yKFZlY3RvciYmKTsNCiAgICBWZWN0b3ImIG9wZXJhdG9yPShWZWN0b3ImJik7
DQoNCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQ0KICAgIHNpemVf
dCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4obV9zaXpl
KSAqIHNpemVvZihUKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgc2l6ZU1lbW9yeU9mZnNldCgp
IHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0
PFZlY3Rvcio+KDB4NDAwMCktPm1fc2l6ZSkpIC0gMHg0MDAwKTsgfQ0KICAgIHNpemVfdCBjYXBh
Y2l0eSgpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmNhcGFjaXR5KCk7IH0NCiAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9DQoNCiAgICBUJiBhdChzaXplX3QgaSkNCiAg
ICB7DQogICAgICAgIGlmICgoaSA+PSBzaXplKCkpKQ0KICAgICAgICAgICAgT3ZlcmZsb3dIYW5k
bGVyOjpvdmVyZmxvd2VkKCk7DQogICAgICAgIHJldHVybiBCYXNlOjpidWZmZXIoKVtpXTsNCiAg
ICB9DQogICAgY29uc3QgVCYgYXQoc2l6ZV90IGkpIGNvbnN0IA0KICAgIHsNCiAgICAgICAgaWYg
KChpID49IHNpemUoKSkpDQogICAgICAgICAgICBPdmVyZmxvd0hhbmRsZXI6Om92ZXJmbG93ZWQo
KTsNCiAgICAgICAgcmV0dXJuIEJhc2U6OmJ1ZmZlcigpW2ldOw0KICAgIH0NCiAgICBUJiBhdChD
aGVja2VkPHNpemVfdD4gaSkNCiAgICB7DQogICAgICAgIGRvIHsgaWYgKCghKGkgPCBzaXplKCkp
KSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JD
cmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDcxMiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1ZlY3Rvci5oIiwgIF9fRlVOQ1RJT05fXyAg
LCA1ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIHJldHVybiBCYXNl
OjpidWZmZXIoKVtpXTsNCiAgICB9DQogICAgY29uc3QgVCYgYXQoQ2hlY2tlZDxzaXplX3Q+IGkp
IGNvbnN0DQogICAgew0KICAgICAgICBkbyB7IGlmICgoIShpIDwgc2l6ZSgpKSkpIGRvIHsgV1RG
Ojppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RG
Q3Jhc2hXaXRoSW5mbyg3MTcsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9WZWN0b3IuaCIsICBfX0ZVTkNUSU9OX18gICwgNiApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICByZXR1cm4gQmFzZTo6YnVmZmVyKClb
aV07DQogICAgfQ0KDQogICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7
IH0NCiAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChp
KTsgfQ0KICAgIFQmIG9wZXJhdG9yW10oQ2hlY2tlZDxzaXplX3Q+IGkpIHsgcmV0dXJuIGF0KGkp
OyB9DQogICAgY29uc3QgVCYgb3BlcmF0b3JbXShDaGVja2VkPHNpemVfdD4gaSkgY29uc3QgeyBy
ZXR1cm4gYXQoaSk7IH0NCg0KICAgIFQqIGRhdGEoKSB7IHJldHVybiBCYXNlOjpidWZmZXIoKTsg
fQ0KICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBCYXNlOjpidWZmZXIoKTsgfQ0K
ICAgIHN0YXRpYyBwdHJkaWZmX3QgZGF0YU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIEJhc2U6OmJ1
ZmZlck1lbW9yeU9mZnNldCgpOyB9DQoNCiAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGRh
dGEoKTsgfQ0KICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGJlZ2luKCkgKyBtX3NpemU7IH0N
CiAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKTsgfQ0KICAg
IGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGJlZ2luKCkgKyBtX3NpemU7IH0N
Cg0KICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRv
cihlbmQoKSk7IH0NCiAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNl
X2l0ZXJhdG9yKGJlZ2luKCkpOyB9DQogICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4o
KSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQ0KICAgIGNv
bnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IoYmVnaW4oKSk7IH0NCg0KICAgIFQmIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0N
CiAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIGF0KDApOyB9DQogICAgVCYgbGFz
dCgpIHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9DQogICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0
IHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9DQogICAgDQogICAgVCB0YWtlTGFzdCgpDQogICAg
ew0KICAgICAgICBUIHJlc3VsdCA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4o
bGFzdCgpKTsNCiAgICAgICAgcmVtb3ZlTGFzdCgpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0K
ICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIGNvbnRhaW5zKGNvbnN0
IFUmKSBjb25zdDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzaXplX3QgZmluZChjb25zdCBV
JikgY29uc3Q7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hGdW5jdGlvbj4gc2l6ZV90IGZp
bmRNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJikgY29uc3Q7DQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFUmKSBjb25zdDsNCiAgICANCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIGFwcGVuZElmTm90Q29udGFpbnMoY29uc3QgVSYpOw0K
DQogICAgdm9pZCBzaHJpbmsoc2l6ZV90IHNpemUpOw0KICAgIHZvaWQgZ3JvdyhzaXplX3Qgc2l6
ZSk7DQogICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpOw0KICAgIHZvaWQgcmVzaXplVG9GaXQo
c2l6ZV90IHNpemUpOw0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCByZXNlcnZlQ2FwYWNpdHkoc2l6
ZV90IG5ld0NhcGFjaXR5KSB7IHJlc2VydmVDYXBhY2l0eTxGYWlsdXJlQWN0aW9uOjpDcmFzaD4o
bmV3Q2FwYWNpdHkpOyB9DQogICAgX19mb3JjZWlubGluZSBib29sIHRyeVJlc2VydmVDYXBhY2l0
eShzaXplX3QgbmV3Q2FwYWNpdHkpIHsgcmV0dXJuIHJlc2VydmVDYXBhY2l0eTxGYWlsdXJlQWN0
aW9uOjpSZXBvcnQ+KG5ld0NhcGFjaXR5KTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCByZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpemVfdCBpbml0aWFsQ2FwYWNpdHkpIHsgcmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eTxGYWlsdXJlQWN0aW9uOjpDcmFzaD4oaW5pdGlhbENhcGFjaXR5KTsgfQ0KICAg
IF9fZm9yY2VpbmxpbmUgYm9vbCB0cnlSZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemVfdCBpbml0
aWFsQ2FwYWNpdHkpIHsgcmV0dXJuIHJlc2VydmVJbml0aWFsQ2FwYWNpdHk8RmFpbHVyZUFjdGlv
bjo6UmVwb3J0Pihpbml0aWFsQ2FwYWNpdHkpOyB9DQogICAgdm9pZCBzaHJpbmtDYXBhY2l0eShz
aXplX3QgbmV3Q2FwYWNpdHkpOw0KICAgIHZvaWQgc2hyaW5rVG9GaXQoKSB7IHNocmlua0NhcGFj
aXR5KHNpemUoKSk7IH0NCg0KICAgIHZvaWQgY2xlYXIoKSB7IHNocmlua0NhcGFjaXR5KDApOyB9
DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gVmVjdG9yPFU+IGlzb2xhdGVkQ29weSgp
IGNvbnN0Ow0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIGFwcGVuZChWYWx1ZVR5cGUmJiB2YWx1
ZSkgeyBhcHBlbmQ8VmFsdWVUeXBlPihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2YWx1ZSkpOyB9
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gX19mb3JjZWlubGluZSB2b2lkIGFwcGVuZChVJiYg
dSkgeyBhcHBlbmQ8RmFpbHVyZUFjdGlvbjo6Q3Jhc2gsIFU+KHN0ZDo6Zm9yd2FyZDxVPih1KSk7
IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBfX2ZvcmNlaW5saW5lIGJvb2wgdHJ5QXBwZW5k
KFUmJiB1KSB7IHJldHVybiBhcHBlbmQ8RmFpbHVyZUFjdGlvbjo6UmVwb3J0LCBVPihzdGQ6OmZv
cndhcmQ8VT4odSkpOyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gX19mb3JjZWlu
bGluZSB2b2lkIGNvbnN0cnVjdEFuZEFwcGVuZChBcmdzJiYuLi4gYXJncykgeyBjb25zdHJ1Y3RB
bmRBcHBlbmQ8RmFpbHVyZUFjdGlvbjo6Q3Jhc2g+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBfX2ZvcmNlaW5saW5lIGJvb2wg
dHJ5Q29uc3RydWN0QW5kQXBwZW5kKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBjb25zdHJ1Y3RB
bmRBcHBlbmQ8RmFpbHVyZUFjdGlvbjo6UmVwb3J0PihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOyB9DQoNCiAgICB2b2lkIHVuY2hlY2tlZEFwcGVuZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyB1
bmNoZWNrZWRBcHBlbmQ8VmFsdWVUeXBlPihzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPih2YWx1ZSkp
OyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoVSYmKTsN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZENvbnN0cnVjdEFu
ZEFwcGVuZChBcmdzJiYuLi4pOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gX19mb3JjZWlu
bGluZSB2b2lkIGFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQ8RmFpbHVy
ZUFjdGlvbjo6Q3Jhc2g+KHUsIHNpemUpOyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gX19m
b3JjZWlubGluZSBib29sIHRyeUFwcGVuZChjb25zdCBVKiB1LCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYXBwZW5kPEZhaWx1cmVBY3Rpb246OlJlcG9ydD4odSwgc2l6ZSk7IH0NCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29u
c3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHk+Jik7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwg
c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxVLCBvdGhlckNh
cGFjaXR5PiYmKTsNCg0KICAgIHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgVmFsdWVUeXBl
JiYgdmFsdWUpIHsgaW5zZXJ0PFZhbHVlVHlwZT4ocG9zaXRpb24sIHN0ZDo6Zm9yd2FyZDxWYWx1
ZVR5cGU+KHZhbHVlKSk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGluc2VydChz
aXplX3QgcG9zaXRpb24sIGNvbnN0IFUqLCBzaXplX3QpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgVSYmKTsNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVLCBzaXplX3QgYywgdHlwZW5hbWUgT0gsIHNpemVfdCBtLCB0eXBlbmFtZSBNPiB2b2lk
IGluc2VydFZlY3RvcihzaXplX3QgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxVLCBjLCBPSCwgbSwg
TT4mKTsNCg0KICAgIHZvaWQgcmVtb3ZlKHNpemVfdCBwb3NpdGlvbik7DQogICAgdm9pZCByZW1v
dmUoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBib29sIHJlbW92ZUZpcnN0KGNvbnN0IFUmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBN
YXRjaEZ1bmN0aW9uPiBib29sIHJlbW92ZUZpcnN0TWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5jdGlv
biYsIHNpemVfdCBzdGFydEluZGV4ID0gMCk7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdW5z
aWduZWQgcmVtb3ZlQWxsKGNvbnN0IFUmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1
bmN0aW9uPiB1bnNpZ25lZCByZW1vdmVBbGxNYXRjaGluZyhjb25zdCBNYXRjaEZ1bmN0aW9uJiwg
c2l6ZV90IHN0YXJ0SW5kZXggPSAwKTsNCg0KICAgIHZvaWQgcmVtb3ZlTGFzdCgpIA0KICAgIHsN
CiAgICAgICAgaWYgKChpc0VtcHR5KCkpKQ0KICAgICAgICAgICAgT3ZlcmZsb3dIYW5kbGVyOjpv
dmVyZmxvd2VkKCk7DQogICAgICAgIHNocmluayhzaXplKCkgLSAxKTsgDQogICAgfQ0KDQogICAg
dm9pZCBmaWxsKGNvbnN0IFQmLCBzaXplX3QpOw0KICAgIHZvaWQgZmlsbChjb25zdCBUJiB2YWwp
IHsgZmlsbCh2YWwsIHNpemUoKSk7IH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9y
PiB2b2lkIGFwcGVuZFJhbmdlKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQpOw0KDQogICAg
TWFsbG9jUHRyPFQsIE1hbGxvYz4gcmVsZWFzZUJ1ZmZlcigpOw0KDQogICAgdm9pZCBzd2FwKFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFs
bG9jPiYgb3RoZXIpDQogICAgew0KDQoNCg0KI2xpbmUgODIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WZWN0b3IuaCINCg0KICAgICAg
ICANCiAgICAgICAgYXNhblNldEJ1ZmZlclNpemVUb0Z1bGxDYXBhY2l0eSgpOw0KICAgICAgICBv
dGhlci5hc2FuU2V0QnVmZmVyU2l6ZVRvRnVsbENhcGFjaXR5KCk7DQoNCiAgICAgICAgQmFzZTo6
c3dhcChvdGhlciwgbV9zaXplLCBvdGhlci5tX3NpemUpOw0KICAgICAgICBzdGQ6OnN3YXAobV9z
aXplLCBvdGhlci5tX3NpemUpOw0KDQogICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRv
KG1fc2l6ZSk7DQogICAgICAgIG90aGVyLmFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG90aGVy
Lm1fc2l6ZSk7DQogICAgfQ0KDQogICAgdm9pZCByZXZlcnNlKCk7DQoNCiAgICB2b2lkIGNoZWNr
Q29uc2lzdGVuY3koKTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBl
bmFtZSBSID0gdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8TWFwRnVuY3Rpb24oY29uc3QgVCYpPjo6
dHlwZT4gVmVjdG9yPFI+IG1hcChNYXBGdW5jdGlvbikgY29uc3Q7DQoNCiAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zaXplID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZGVjbHR5cGUobV9zaXplKT46Om1heCgpOyB9DQoNCnByaXZhdGU6DQogICAgdGVt
cGxhdGU8RmFpbHVyZUFjdGlvbj4gYm9vbCByZXNlcnZlQ2FwYWNpdHkoc2l6ZV90IG5ld0NhcGFj
aXR5KTsNCiAgICB0ZW1wbGF0ZTxGYWlsdXJlQWN0aW9uPiBib29sIHJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc2l6ZV90IGluaXRpYWxDYXBhY2l0eSk7DQoNCiAgICB0ZW1wbGF0ZTxGYWlsdXJlQWN0
aW9uPiBib29sIGV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSk7DQogICAgdGVt
cGxhdGU8RmFpbHVyZUFjdGlvbj4gVCogZXhwYW5kQ2FwYWNpdHkoc2l6ZV90IG5ld01pbkNhcGFj
aXR5LCBUKik7DQogICAgdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gVSogZXhw
YW5kQ2FwYWNpdHkoc2l6ZV90IG5ld01pbkNhcGFjaXR5LCBVKik7DQogICAgdGVtcGxhdGU8RmFp
bHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCBhcHBlbmRTbG93Q2FzZShVJiYpOw0KICAgIHRl
bXBsYXRlPEZhaWx1cmVBY3Rpb24sIHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgY29uc3RydWN0QW5k
QXBwZW5kKEFyZ3MmJi4uLik7DQogICAgdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiwgdHlwZW5hbWUu
Li4gQXJncz4gYm9vbCBjb25zdHJ1Y3RBbmRBcHBlbmRTbG93Q2FzZShBcmdzJiYuLi4pOw0KDQog
ICAgdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiwgdHlwZW5hbWUgVT4gYm9vbCBhcHBlbmQoVSYmKTsN
CiAgICB0ZW1wbGF0ZTxGYWlsdXJlQWN0aW9uLCB0eXBlbmFtZSBVPiBib29sIGFwcGVuZChjb25z
dCBVKiwgc2l6ZV90KTsNCg0KICAgIHRlbXBsYXRlPHNpemVfdCBwb3NpdGlvbiwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUuLi4gSXRlbXM+DQogICAgdm9pZCB1bmNoZWNrZWRJbml0aWFsaXplKFUmJiBp
dGVtLCBJdGVtcyYmLi4uIGl0ZW1zKQ0KICAgIHsNCiAgICAgICAgdW5jaGVja2VkSW5pdGlhbGl6
ZTxwb3NpdGlvbj4oc3RkOjpmb3J3YXJkPFU+KGl0ZW0pKTsNCiAgICAgICAgdW5jaGVja2VkSW5p
dGlhbGl6ZTxwb3NpdGlvbiArIDE+KHN0ZDo6Zm9yd2FyZDxJdGVtcz4oaXRlbXMpLi4uKTsNCiAg
ICB9DQogICAgdGVtcGxhdGU8c2l6ZV90IHBvc2l0aW9uLCB0eXBlbmFtZSBVPg0KICAgIHZvaWQg
dW5jaGVja2VkSW5pdGlhbGl6ZShVJiYgdmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbmV3IChOb3ROdWxsLCBiZWdpbigpICsgcG9z
aXRpb24pIFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7DQogICAgfQ0KDQogICAgdm9pZCBhc2Fu
U2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplX3QpOw0KICAgIHZvaWQgYXNhblNldEJ1ZmZlclNp
emVUb0Z1bGxDYXBhY2l0eShzaXplX3QpOw0KICAgIHZvaWQgYXNhblNldEJ1ZmZlclNpemVUb0Z1
bGxDYXBhY2l0eSgpIHsgYXNhblNldEJ1ZmZlclNpemVUb0Z1bGxDYXBhY2l0eShzaXplKCkpOyB9
DQoNCiAgICB2b2lkIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKHNpemVfdCk7DQoNCiAgICB1
c2luZyBCYXNlOjptX3NpemU7DQogICAgdXNpbmcgQmFzZTo6YnVmZmVyOw0KICAgIHVzaW5nIEJh
c2U6OmNhcGFjaXR5Ow0KICAgIHVzaW5nIEJhc2U6OnN3YXA7DQogICAgdXNpbmcgQmFzZTo6YWxs
b2NhdGVCdWZmZXI7DQogICAgdXNpbmcgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcjsNCiAgICB1c2lu
ZyBCYXNlOjp0cnlBbGxvY2F0ZUJ1ZmZlcjsNCiAgICB1c2luZyBCYXNlOjpzaG91bGRSZWFsbG9j
YXRlQnVmZmVyOw0KICAgIHVzaW5nIEJhc2U6OnJlYWxsb2NhdGVCdWZmZXI7DQogICAgdXNpbmcg
QmFzZTo6cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkOw0KICAgIHVzaW5nIEJhc2U6OnJlbGVh
c2VCdWZmZXI7DQoNCg0KI2xpbmUgODg5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WZWN0b3IuaCINCn07DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NClZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6VmVjdG9yKGNvbnN0
IFZlY3RvciYgb3RoZXIpDQogICAgOiBCYXNlKG90aGVyLmNhcGFjaXR5KCksIG90aGVyLnNpemUo
KSkNCnsNCiAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhvdGhlci5zaXplKCkpOw0KDQog
ICAgaWYgKGJlZ2luKCkpDQogICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29w
eShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnRlbXBsYXRlPHNpemVfdCBv
dGhlckNhcGFjaXR5LCB0eXBlbmFtZSBvdGhlck92ZXJmbG93QmVoYXZpb3VyLCBzaXplX3Qgb3Ro
ZXJNaW5pbXVtQ2FwYWNpdHksIHR5cGVuYW1lIE90aGVyTWFsbG9jPg0KVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpWZWN0b3Io
Y29uc3QgVmVjdG9yPFQsIG90aGVyQ2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXIsIG90
aGVyTWluaW11bUNhcGFjaXR5LCBPdGhlck1hbGxvYz4mIG90aGVyKQ0KICAgIDogQmFzZShvdGhl
ci5jYXBhY2l0eSgpLCBvdGhlci5zaXplKCkpDQp7DQogICAgYXNhblNldEluaXRpYWxCdWZmZXJT
aXplVG8ob3RoZXIuc2l6ZSgpKTsNCg0KICAgIGlmIChiZWdpbigpKQ0KICAgICAgICBUeXBlT3Bl
cmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIGJl
Z2luKCkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBN
YWxsb2M+DQpWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHksIE1hbGxvYz4mIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6b3BlcmF0b3I9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPiYgb3RoZXIpDQp7
DQogICAgaWYgKCZvdGhlciA9PSB0aGlzKQ0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgDQog
ICAgaWYgKHNpemUoKSA+IG90aGVyLnNpemUoKSkNCiAgICAgICAgc2hyaW5rKG90aGVyLnNpemUo
KSk7DQogICAgZWxzZSBpZiAob3RoZXIuc2l6ZSgpID4gY2FwYWNpdHkoKSkgew0KICAgICAgICBj
bGVhcigpOw0KICAgICAgICByZXNlcnZlQ2FwYWNpdHkob3RoZXIuc2l6ZSgpKTsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgIH0NCg0KICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG90aGVy
LnNpemUoKSk7DQoNCiAgICBzdGQ6OmNvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuYmVnaW4oKSAr
IHNpemUoKSwgYmVnaW4oKSk7DQogICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5
KG90aGVyLmJlZ2luKCkgKyBzaXplKCksIG90aGVyLmVuZCgpLCBlbmQoKSk7DQogICAgbV9zaXpl
ID0gb3RoZXIuc2l6ZSgpOw0KDQogICAgcmV0dXJuICp0aGlzOw0KfQ0KDQppbmxpbmUgYm9vbCB0
eXBlbGVzc1BvaW50ZXJzQXJlRXF1YWwoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYikgeyBy
ZXR1cm4gYSA9PSBiOyB9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVu
YW1lIE1hbGxvYz4NCnRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5LCB0eXBlbmFtZSBvdGhl
ck92ZXJmbG93QmVoYXZpb3VyLCBzaXplX3Qgb3RoZXJNaW5pbXVtQ2FwYWNpdHksIHR5cGVuYW1l
IE90aGVyTWFsbG9jPg0KVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsb2M+JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Om9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwg
b3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0JlaGF2aW91ciwgb3RoZXJNaW5pbXVtQ2FwYWNp
dHksIE90aGVyTWFsbG9jPiYgb3RoZXIpDQp7DQogICAgDQogICAgDQogICAgDQogICAgKCh2b2lk
KTApOw0KDQogICAgaWYgKHNpemUoKSA+IG90aGVyLnNpemUoKSkNCiAgICAgICAgc2hyaW5rKG90
aGVyLnNpemUoKSk7DQogICAgZWxzZSBpZiAob3RoZXIuc2l6ZSgpID4gY2FwYWNpdHkoKSkgew0K
ICAgICAgICBjbGVhcigpOw0KICAgICAgICByZXNlcnZlQ2FwYWNpdHkob3RoZXIuc2l6ZSgpKTsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCiAgICANCiAgICBhc2FuQnVmZmVyU2l6ZVdpbGxD
aGFuZ2VUbyhvdGhlci5zaXplKCkpOw0KDQogICAgc3RkOjpjb3B5KG90aGVyLmJlZ2luKCksIG90
aGVyLmJlZ2luKCkgKyBzaXplKCksIGJlZ2luKCkpOw0KICAgIFR5cGVPcGVyYXRpb25zOjp1bmlu
aXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkp
Ow0KICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsNCg0KICAgIHJldHVybiAqdGhpczsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0KaW5saW5l
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwg
TWFsbG9jPjo6VmVjdG9yKFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eSwgTWFsbG9jPiYmIG90aGVyKQ0Kew0KICAgIHN3YXAob3RoZXIpOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQppbmxp
bmUgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
LCBNYWxsb2M+JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvYz46Om9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz4mJiBvdGhlcikNCnsNCiAgICBzd2Fw
KG90aGVyKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWlu
Q2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnRlbXBsYXRlPHR5cGVuYW1lIFU+DQpib29sIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFs
bG9jPjo6Y29udGFpbnMoY29uc3QgVSYgdmFsdWUpIGNvbnN0DQp7DQogICAgcmV0dXJuIGZpbmQo
dmFsdWUpICE9IG5vdEZvdW5kOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5
LCB0eXBlbmFtZSBNYWxsb2M+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPg0Kc2l6
ZV90IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eSwgTWFsbG9jPjo6ZmluZE1hdGNoaW5nKGNvbnN0IE1hdGNoRnVuY3Rpb24mIG1hdGNoZXMpIGNv
bnN0DQp7DQogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgew0KICAgICAg
ICBpZiAobWF0Y2hlcyhhdChpKSkpDQogICAgICAgICAgICByZXR1cm4gaTsNCiAgICB9DQogICAg
cmV0dXJuIG5vdEZvdW5kOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0
eXBlbmFtZSBNYWxsb2M+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0Kc2l6ZV90IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6Zmlu
ZChjb25zdCBVJiB2YWx1ZSkgY29uc3QNCnsNCiAgICByZXR1cm4gZmluZE1hdGNoaW5nKFsmXShh
dXRvJiBpdGVtKSB7DQogICAgICAgIHJldHVybiBpdGVtID09IHZhbHVlOw0KICAgIH0pOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQp0ZW1w
bGF0ZTx0eXBlbmFtZSBVPg0Kc2l6ZV90IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6cmV2ZXJzZUZpbmQoY29uc3QgVSYgdmFs
dWUpIGNvbnN0DQp7DQogICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPD0gc2l6ZSgpOyArK2kpIHsN
CiAgICAgICAgY29uc3Qgc2l6ZV90IGluZGV4ID0gc2l6ZSgpIC0gaTsNCiAgICAgICAgaWYgKGF0
KGluZGV4KSA9PSB2YWx1ZSkNCiAgICAgICAgICAgIHJldHVybiBpbmRleDsNCiAgICB9DQogICAg
cmV0dXJuIG5vdEZvdW5kOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0
eXBlbmFtZSBNYWxsb2M+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0KYm9vbCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmFwcGVu
ZElmTm90Q29udGFpbnMoY29uc3QgVSYgdmFsdWUpDQp7DQogICAgaWYgKGNvbnRhaW5zKHZhbHVl
KSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIGFwcGVuZCh2YWx1ZSk7DQogICAgcmV0dXJu
IHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1h
bGxvYz4NCnZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGFjaXR5LCBNYWxsb2M+OjpmaWxsKGNvbnN0IFQmIHZhbCwgc2l6ZV90IG5ld1NpemUpDQp7
DQogICAgaWYgKHNpemUoKSA+IG5ld1NpemUpDQogICAgICAgIHNocmluayhuZXdTaXplKTsNCiAg
ICBlbHNlIGlmIChuZXdTaXplID4gY2FwYWNpdHkoKSkgew0KICAgICAgICBjbGVhcigpOw0KICAg
ICAgICByZXNlcnZlQ2FwYWNpdHkobmV3U2l6ZSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9
DQoNCiAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhuZXdTaXplKTsNCg0KICAgIHN0ZDo6
ZmlsbChiZWdpbigpLCBlbmQoKSwgdmFsKTsNCiAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFs
aXplZEZpbGwoZW5kKCksIGJlZ2luKCkgKyBuZXdTaXplLCB2YWwpOw0KICAgIG1fc2l6ZSA9IG5l
d1NpemU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1h
bGxvYz4NCnRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPg0Kdm9pZCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmFwcGVuZFJh
bmdlKEl0ZXJhdG9yIHN0YXJ0LCBJdGVyYXRvciBlbmQpDQp7DQogICAgZm9yIChJdGVyYXRvciBp
dCA9IHN0YXJ0OyBpdCAhPSBlbmQ7ICsraXQpDQogICAgICAgIGFwcGVuZCgqaXQpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQp0ZW1wbGF0
ZTxGYWlsdXJlQWN0aW9uIGFjdGlvbj4NCmJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpleHBhbmRDYXBhY2l0eShzaXpl
X3QgbmV3TWluQ2FwYWNpdHkpDQp7DQogICAgcmV0dXJuIHJlc2VydmVDYXBhY2l0eTxhY3Rpb24+
KHN0ZDo6bWF4KG5ld01pbkNhcGFjaXR5LCBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KG1p
bkNhcGFjaXR5KSwgY2FwYWNpdHkoKSArIGNhcGFjaXR5KCkgLyA0ICsgMSkpKTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0KdGVtcGxhdGU8
RmFpbHVyZUFjdGlvbiBhY3Rpb24+DQpfX2RlY2xzcGVjKG5vaW5saW5lKSBUKiBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmV4
cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwgVCogcHRyKQ0Kew0KICAgIHN0YXRp
Y19hc3NlcnQoYWN0aW9uID09IEZhaWx1cmVBY3Rpb246OkNyYXNoIHx8IGFjdGlvbiA9PSBGYWls
dXJlQWN0aW9uOjpSZXBvcnQpOw0KICAgIGlmIChwdHIgPCBiZWdpbigpIHx8IHB0ciA+PSBlbmQo
KSkgew0KICAgICAgICBib29sIHN1Y2Nlc3MgPSBleHBhbmRDYXBhY2l0eTxhY3Rpb24+KG5ld01p
bkNhcGFjaXR5KTsNCiAgICAgICAgaWYgY29uc3RleHByIChhY3Rpb24gPT0gRmFpbHVyZUFjdGlv
bjo6UmVwb3J0KSB7DQogICAgICAgICAgICBpZiAoKCFzdWNjZXNzKSkNCiAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcHRyOw0KICAgIH0N
CiAgICBzaXplX3QgaW5kZXggPSBwdHIgLSBiZWdpbigpOw0KICAgIGJvb2wgc3VjY2VzcyA9IGV4
cGFuZENhcGFjaXR5PGFjdGlvbj4obmV3TWluQ2FwYWNpdHkpOw0KICAgIGlmIGNvbnN0ZXhwciAo
YWN0aW9uID09IEZhaWx1cmVBY3Rpb246OlJlcG9ydCkgew0KICAgICAgICBpZiAoKCFzdWNjZXNz
KSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCiAgICByZXR1cm4gYmVnaW4o
KSArIGluZGV4Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFt
ZSBNYWxsb2M+DQp0ZW1wbGF0ZTxGYWlsdXJlQWN0aW9uIGFjdGlvbiwgdHlwZW5hbWUgVT4NCmlu
bGluZSBVKiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHksIE1hbGxvYz46OmV4cGFuZENhcGFjaXR5KHNpemVfdCBuZXdNaW5DYXBhY2l0eSwgVSog
cHRyKQ0Kew0KICAgIHN0YXRpY19hc3NlcnQoYWN0aW9uID09IEZhaWx1cmVBY3Rpb246OkNyYXNo
IHx8IGFjdGlvbiA9PSBGYWlsdXJlQWN0aW9uOjpSZXBvcnQpOw0KICAgIGJvb2wgc3VjY2VzcyA9
IGV4cGFuZENhcGFjaXR5PGFjdGlvbj4obmV3TWluQ2FwYWNpdHkpOw0KICAgIGlmIGNvbnN0ZXhw
ciAoYWN0aW9uID09IEZhaWx1cmVBY3Rpb246OlJlcG9ydCkgew0KICAgICAgICBpZiAoKCFzdWNj
ZXNzKSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCiAgICByZXR1cm4gcHRy
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+
DQppbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHksIE1hbGxvYz46OnJlc2l6ZShzaXplX3Qgc2l6ZSkNCnsNCiAgICBpZiAoc2l6
ZSA8PSBtX3NpemUpIHsNCiAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkg
KyBzaXplLCBlbmQoKSk7DQogICAgICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKHNpemUp
Ow0KICAgIH0gZWxzZSB7DQogICAgICAgIGlmIChzaXplID4gY2FwYWNpdHkoKSkNCiAgICAgICAg
ICAgIGV4cGFuZENhcGFjaXR5PEZhaWx1cmVBY3Rpb246OkNyYXNoPihzaXplKTsNCiAgICAgICAg
YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7DQogICAgICAgIGlmIChiZWdpbigpKQ0K
ICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemVJZk5vblBPRChlbmQoKSwgYmVn
aW4oKSArIHNpemUpOw0KICAgIH0NCiAgICANCiAgICBtX3NpemUgPSBzaXplOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQp2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9j
Pjo6cmVzaXplVG9GaXQoc2l6ZV90IHNpemUpDQp7DQogICAgcmVzZXJ2ZUNhcGFjaXR5KHNpemUp
Ow0KICAgIHJlc2l6ZShzaXplKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eSwgdHlwZW5hbWUgTWFsbG9jPg0Kdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmluayhzaXplX3Qgc2l6ZSkNCnsN
CiAgICAoKHZvaWQpMCk7DQogICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBz
aXplLCBlbmQoKSk7DQogICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7DQogICAg
bV9zaXplID0gc2l6ZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgTWFsbG9jPg0Kdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omdyb3coc2l6ZV90IHNpemUpDQp7DQogICAgKCh2
b2lkKTApOw0KICAgIGlmIChzaXplID4gY2FwYWNpdHkoKSkNCiAgICAgICAgZXhwYW5kQ2FwYWNp
dHk8RmFpbHVyZUFjdGlvbjo6Q3Jhc2g+KHNpemUpOw0KICAgIGFzYW5CdWZmZXJTaXplV2lsbENo
YW5nZVRvKHNpemUpOw0KICAgIGlmIChiZWdpbigpKQ0KICAgICAgICBUeXBlT3BlcmF0aW9uczo6
aW5pdGlhbGl6ZUlmTm9uUE9EKGVuZCgpLCBiZWdpbigpICsgc2l6ZSk7DQogICAgbV9zaXplID0g
c2l6ZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jPg0KaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojphc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXpl
X3Qgc2l6ZSkNCnsNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTUwICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WZWN0b3IuaCINCiAgICAo
dm9pZClzaXplOw0KI2xpbmUgMTE1MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmVjdG9yLmgiDQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXpl
X3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCmlubGluZSB2b2lkIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6YXNh
blNldEJ1ZmZlclNpemVUb0Z1bGxDYXBhY2l0eShzaXplX3Qgc2l6ZSkNCnsNCg0KDQoNCg0KDQoN
CiNsaW5lIDExNjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1ZlY3Rvci5oIg0KICAgICh2b2lkKXNpemU7DQojbGluZSAxMTY2ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WZWN0
b3IuaCINCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jPg0KaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojphc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhzaXpl
X3QgbmV3U2l6ZSkNCnsNCg0KDQoNCg0KDQoNCiNsaW5lIDExNzggIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1ZlY3Rvci5oIg0KICAgICh2
b2lkKW5ld1NpemU7DQojbGluZSAxMTgwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WZWN0b3IuaCINCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0KdGVtcGxhdGU8RmFpbHVyZUFjdGlv
biBhY3Rpb24+DQpib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6cmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0
eSkNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KGFjdGlvbiA9PSBGYWlsdXJlQWN0aW9uOjpDcmFzaCB8
fCBhY3Rpb24gPT0gRmFpbHVyZUFjdGlvbjo6UmVwb3J0KTsNCiAgICBpZiAobmV3Q2FwYWNpdHkg
PD0gY2FwYWNpdHkoKSkNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgVCogb2xkQnVmZmVyID0g
YmVnaW4oKTsNCiAgICBUKiBvbGRFbmQgPSBlbmQoKTsNCg0KICAgIGFzYW5TZXRCdWZmZXJTaXpl
VG9GdWxsQ2FwYWNpdHkoKTsNCg0KICAgIGJvb2wgc3VjY2VzcyA9IEJhc2U6OnRlbXBsYXRlIGFs
bG9jYXRlQnVmZmVyPGFjdGlvbj4obmV3Q2FwYWNpdHkpOw0KICAgIGlmIGNvbnN0ZXhwciAoYWN0
aW9uID09IEZhaWx1cmVBY3Rpb246OlJlcG9ydCkgew0KICAgICAgICBpZiAoKCFzdWNjZXNzKSkg
ew0KICAgICAgICAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsNCiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAoKHZvaWQpMCk7DQoN
CiAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOw0KDQogICAgVHlwZU9wZXJh
dGlvbnM6Om1vdmUob2xkQnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOw0KICAgIEJhc2U6OmRlYWxs
b2NhdGVCdWZmZXIob2xkQnVmZmVyKTsNCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0KdGVtcGxhdGU8RmFpbHVy
ZUFjdGlvbiBhY3Rpb24+DQppbmxpbmUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZV90IGluaXRpYWxDYXBhY2l0eSkNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KGFjdGlvbiA9
PSBGYWlsdXJlQWN0aW9uOjpDcmFzaCB8fCBhY3Rpb24gPT0gRmFpbHVyZUFjdGlvbjo6UmVwb3J0
KTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIGlmIChpbml0aWFsQ2FwYWNp
dHkgPD0gaW5saW5lQ2FwYWNpdHkpDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIHJldHVybiBC
YXNlOjp0ZW1wbGF0ZSBhbGxvY2F0ZUJ1ZmZlcjxhY3Rpb24+KGluaXRpYWxDYXBhY2l0eSk7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
LCBNYWxsb2M+OjpzaHJpbmtDYXBhY2l0eShzaXplX3QgbmV3Q2FwYWNpdHkpDQp7DQogICAgaWYg
KG5ld0NhcGFjaXR5ID49IGNhcGFjaXR5KCkpDQogICAgICAgIHJldHVybjsNCg0KICAgIGlmIChu
ZXdDYXBhY2l0eSA8IHNpemUoKSkgDQogICAgICAgIHNocmluayhuZXdDYXBhY2l0eSk7DQoNCiAg
ICBhc2FuU2V0QnVmZmVyU2l6ZVRvRnVsbENhcGFjaXR5KCk7DQoNCiAgICBUKiBvbGRCdWZmZXIg
PSBiZWdpbigpOw0KICAgIGlmIChuZXdDYXBhY2l0eSA+IDApIHsNCiAgICAgICAgaWYgKEJhc2U6
OnNob3VsZFJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkpKSB7DQogICAgICAgICAgICBCYXNl
OjpyZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KTsNCiAgICAgICAgICAgIGFzYW5TZXRJbml0
aWFsQnVmZmVyU2l6ZVRvKHNpemUoKSk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0N
Cg0KICAgICAgICBUKiBvbGRFbmQgPSBlbmQoKTsNCiAgICAgICAgQmFzZTo6YWxsb2NhdGVCdWZm
ZXIobmV3Q2FwYWNpdHkpOw0KICAgICAgICBpZiAoYmVnaW4oKSAhPSBvbGRCdWZmZXIpDQogICAg
ICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7
DQogICAgfQ0KDQogICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZmZXIpOw0KICAgIEJh
c2U6OnJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpOw0KDQogICAgYXNhblNldEluaXRpYWxC
dWZmZXJTaXplVG8oc2l6ZSgpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eSwgdHlwZW5hbWUgTWFsbG9jPg0KdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiBhY3Rpb24sIHR5cGVu
YW1lIFU+DQpfX2ZvcmNlaW5saW5lIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmQoY29uc3QgVSogZGF0YSwg
c2l6ZV90IGRhdGFTaXplKQ0Kew0KICAgIHN0YXRpY19hc3NlcnQoYWN0aW9uID09IEZhaWx1cmVB
Y3Rpb246OkNyYXNoIHx8IGFjdGlvbiA9PSBGYWlsdXJlQWN0aW9uOjpSZXBvcnQpOw0KICAgIHNp
emVfdCBuZXdTaXplID0gbV9zaXplICsgZGF0YVNpemU7DQogICAgaWYgKG5ld1NpemUgPiBjYXBh
Y2l0eSgpKSB7DQogICAgICAgIGRhdGEgPSBleHBhbmRDYXBhY2l0eTxhY3Rpb24+KG5ld1NpemUs
IGRhdGEpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKGFjdGlvbiA9PSBGYWlsdXJlQWN0aW9uOjpS
ZXBvcnQpIHsNCiAgICAgICAgICAgIGlmICgoIWRhdGEpKQ0KICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KICAgIGlmIChu
ZXdTaXplIDwgbV9zaXplKSB7DQogICAgICAgIGlmIGNvbnN0ZXhwciAoYWN0aW9uID09IEZhaWx1
cmVBY3Rpb246OkNyYXNoKQ0KICAgICAgICAgICAgV1RGQ3Jhc2goKTsNCiAgICAgICAgZWxzZQ0K
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICBhc2FuQnVmZmVyU2l6ZVdpbGxD
aGFuZ2VUbyhuZXdTaXplKTsNCiAgICBUKiBkZXN0ID0gZW5kKCk7DQogICAgVmVjdG9yQ29waWVy
PHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBz
dGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIGRlc3QpOw0KICAgIG1fc2l6ZSA9IG5ld1Np
emU7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHksIHR5cGVuYW1lIE1hbGxvYz4NCnRlbXBsYXRlPEZhaWx1cmVBY3Rpb24gYWN0aW9uLCB0eXBl
bmFtZSBVPg0KX19mb3JjZWlubGluZSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6YXBwZW5kKFUmJiB2YWx1ZSkNCnsN
CiAgICBpZiAoc2l6ZSgpICE9IGNhcGFjaXR5KCkpIHsNCiAgICAgICAgYXNhbkJ1ZmZlclNpemVX
aWxsQ2hhbmdlVG8obV9zaXplICsgMSk7DQogICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQo
c3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7DQogICAgICAgICsrbV9zaXplOw0KICAgICAgICByZXR1
cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICByZXR1cm4gYXBwZW5kU2xvd0Nhc2U8YWN0aW9uLCBVPihz
dGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0KdGVtcGxhdGU8RmFpbHVyZUFjdGlvbiBhY3Rpb24sIHR5
cGVuYW1lLi4uIEFyZ3M+DQpfX2ZvcmNlaW5saW5lIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojpjb25zdHJ1Y3RBbmRB
cHBlbmQoQXJncyYmLi4uIGFyZ3MpDQp7DQogICAgaWYgKHNpemUoKSAhPSBjYXBhY2l0eSgpKSB7
DQogICAgICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOw0KICAgICAg
ICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7DQog
ICAgICAgICsrbV9zaXplOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICByZXR1
cm4gY29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2U8YWN0aW9uPihzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFt
ZSBNYWxsb2M+DQp0ZW1wbGF0ZTxGYWlsdXJlQWN0aW9uIGFjdGlvbiwgdHlwZW5hbWUgVT4NCmJv
b2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
LCBNYWxsb2M+OjphcHBlbmRTbG93Q2FzZShVJiYgdmFsdWUpDQp7DQogICAgc3RhdGljX2Fzc2Vy
dChhY3Rpb24gPT0gRmFpbHVyZUFjdGlvbjo6Q3Jhc2ggfHwgYWN0aW9uID09IEZhaWx1cmVBY3Rp
b246OlJlcG9ydCk7DQogICAgKCh2b2lkKTApOw0KDQogICAgYXV0byBwdHIgPSBjb25zdF9jYXN0
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZTxVPjo6dHlwZT46OnR5cGUqPihzdGQ6OmFkZHJlc3NvZih2YWx1ZSkpOw0KICAgIHB0ciA9IGV4
cGFuZENhcGFjaXR5PGFjdGlvbj4oc2l6ZSgpICsgMSwgcHRyKTsNCiAgICBpZiBjb25zdGV4cHIg
KGFjdGlvbiA9PSBGYWlsdXJlQWN0aW9uOjpSZXBvcnQpIHsNCiAgICAgICAgaWYgKCghcHRyKSkN
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgKCh2b2lkKTApOw0KDQogICAg
YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7DQogICAgbmV3IChOb3ROdWxs
LCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOw0KICAgICsrbV9zaXplOw0KICAgIHJl
dHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFt
ZSBNYWxsb2M+DQp0ZW1wbGF0ZTxGYWlsdXJlQWN0aW9uIGFjdGlvbiwgdHlwZW5hbWUuLi4gQXJn
cz4NCmJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5LCBNYWxsb2M+Ojpjb25zdHJ1Y3RBbmRBcHBlbmRTbG93Q2FzZShBcmdzJiYuLi4gYXJn
cykNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KGFjdGlvbiA9PSBGYWlsdXJlQWN0aW9uOjpDcmFzaCB8
fCBhY3Rpb24gPT0gRmFpbHVyZUFjdGlvbjo6UmVwb3J0KTsNCiAgICAoKHZvaWQpMCk7DQoNCiAg
ICBib29sIHN1Y2Nlc3MgPSBleHBhbmRDYXBhY2l0eTxhY3Rpb24+KHNpemUoKSArIDEpOw0KICAg
IGlmIGNvbnN0ZXhwciAoYWN0aW9uID09IEZhaWx1cmVBY3Rpb246OlJlcG9ydCkgew0KICAgICAg
ICBpZiAoKCFzdWNjZXNzKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAg
KCh2b2lkKTApOw0KDQogICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7
DQogICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
Ow0KICAgICsrbV9zaXplOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQoNCg0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPg0KX19mb3JjZWlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6dW5jaGVja2VkQXBwZW5kKFUmJiB2YWx1
ZSkNCnsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyht
X3NpemUgKyAxKTsNCg0KICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+
KHZhbHVlKSk7DQogICAgKyttX3NpemU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+DQpfX2Zv
cmNlaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojp1bmNoZWNrZWRDb25zdHJ1Y3RBbmRBcHBlbmQoQXJncyYm
Li4uIGFyZ3MpDQp7DQogICAgKCh2b2lkKTApOw0KDQogICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hh
bmdlVG8obV9zaXplICsgMSk7DQoNCiAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7DQogICAgKyttX3NpemU7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnRlbXBsYXRlPHR5cGVuYW1lIFUs
IHNpemVfdCBvdGhlckNhcGFjaXR5Pg0KaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmRWZWN0b3Io
Y29uc3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpDQp7DQogICAgYXBwZW5kKHZhbC5i
ZWdpbigpLCB2YWwuc2l6ZSgpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eSwgdHlwZW5hbWUgTWFsbG9jPg0KdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2Fw
YWNpdHk+DQppbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmFwcGVuZFZlY3RvcihWZWN0b3I8VSwgb3RoZXJD
YXBhY2l0eT4mJiB2YWwpDQp7DQogICAgc2l6ZV90IG5ld1NpemUgPSBtX3NpemUgKyB2YWwuc2l6
ZSgpOw0KICAgIGlmIChuZXdTaXplID4gY2FwYWNpdHkoKSkNCiAgICAgICAgZXhwYW5kQ2FwYWNp
dHk8RmFpbHVyZUFjdGlvbjo6Q3Jhc2g+KG5ld1NpemUpOw0KICAgIGZvciAoYXV0byYgaXRlbSA6
IHZhbCkNCiAgICAgICAgdW5jaGVja2VkQXBwZW5kKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBh
cmFtZXRlcj4oaXRlbSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0
eXBlbmFtZSBNYWxsb2M+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0Kdm9pZCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omluc2Vy
dChzaXplX3QgcG9zaXRpb24sIGNvbnN0IFUqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkNCnsNCiAg
ICAoKHZvaWQpMCk7DQogICAgc2l6ZV90IG5ld1NpemUgPSBtX3NpemUgKyBkYXRhU2l6ZTsNCiAg
ICBpZiAobmV3U2l6ZSA+IGNhcGFjaXR5KCkpIHsNCiAgICAgICAgZGF0YSA9IGV4cGFuZENhcGFj
aXR5PEZhaWx1cmVBY3Rpb246OkNyYXNoPihuZXdTaXplLCBkYXRhKTsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgIH0NCiAgICBpZiAobmV3U2l6ZSA8IG1fc2l6ZSkNCiAgICAgICAgV1RGQ3Jhc2go
KTsNCiAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhuZXdTaXplKTsNCiAgICBUKiBzcG90
ID0gYmVnaW4oKSArIHBvc2l0aW9uOw0KICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBp
bmcoc3BvdCwgZW5kKCksIHNwb3QgKyBkYXRhU2l6ZSk7DQogICAgVmVjdG9yQ29waWVyPHN0ZDo6
aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFk
ZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIHNwb3QpOw0KICAgIG1fc2l6ZSA9IG5ld1NpemU7DQp9
DQogDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQp0
ZW1wbGF0ZTx0eXBlbmFtZSBVPg0KaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjppbnNlcnQoc2l6ZV90IHBv
c2l0aW9uLCBVJiYgdmFsdWUpDQp7DQogICAgKCh2b2lkKTApOw0KDQogICAgYXV0byBwdHIgPSBj
b25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZTxVPjo6dHlwZT46OnR5cGUqPihzdGQ6OmFkZHJlc3NvZih2YWx1ZSkpOw0KICAg
IGlmIChzaXplKCkgPT0gY2FwYWNpdHkoKSkgew0KICAgICAgICBwdHIgPSBleHBhbmRDYXBhY2l0
eTxGYWlsdXJlQWN0aW9uOjpDcmFzaD4oc2l6ZSgpICsgMSwgcHRyKTsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgIH0NCg0KICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEp
Ow0KDQogICAgVCogc3BvdCA9IGJlZ2luKCkgKyBwb3NpdGlvbjsNCiAgICBUeXBlT3BlcmF0aW9u
czo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgMSk7DQogICAgbmV3IChOb3RO
dWxsLCBzcG90KSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7DQogICAgKyttX3NpemU7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnRlbXBs
YXRlPHR5cGVuYW1lIFUsIHNpemVfdCBjLCB0eXBlbmFtZSBPSCwgc2l6ZV90IG0sIHR5cGVuYW1l
IE0+DQppbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omluc2VydFZlY3RvcihzaXplX3QgcG9zaXRpb24sIGNv
bnN0IFZlY3RvcjxVLCBjLCBPSCwgbSwgTT4mIHZhbCkNCnsNCiAgICBpbnNlcnQocG9zaXRpb24s
IHZhbC5iZWdpbigpLCB2YWwuc2l6ZSgpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0KaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpyZW1vdmUoc2l6
ZV90IHBvc2l0aW9uKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICBUKiBzcG90ID0gYmVnaW4oKSAr
IHBvc2l0aW9uOw0KICAgIHNwb3QtPn5UKCk7DQogICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVy
bGFwcGluZyhzcG90ICsgMSwgZW5kKCksIHNwb3QpOw0KICAgIGFzYW5CdWZmZXJTaXplV2lsbENo
YW5nZVRvKG1fc2l6ZSAtIDEpOw0KICAgIC0tbV9zaXplOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6
ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQppbmxpbmUgdm9pZCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnJl
bW92ZShzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgpDQp7DQogICAgKCh2b2lkKTApOw0K
ICAgICgodm9pZCkwKTsNCiAgICBUKiBiZWdpblNwb3QgPSBiZWdpbigpICsgcG9zaXRpb247DQog
ICAgVCogZW5kU3BvdCA9IGJlZ2luU3BvdCArIGxlbmd0aDsNCiAgICBUeXBlT3BlcmF0aW9uczo6
ZGVzdHJ1Y3QoYmVnaW5TcG90LCBlbmRTcG90KTsgDQogICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVP
dmVybGFwcGluZyhlbmRTcG90LCBlbmQoKSwgYmVnaW5TcG90KTsNCiAgICBhc2FuQnVmZmVyU2l6
ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSBsZW5ndGgpOw0KICAgIG1fc2l6ZSAtPSBsZW5ndGg7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnRl
bXBsYXRlPHR5cGVuYW1lIFU+DQppbmxpbmUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnJlbW92ZUZpcnN0KGNvbnN0
IFUmIHZhbHVlKQ0Kew0KICAgIHJldHVybiByZW1vdmVGaXJzdE1hdGNoaW5nKFsmdmFsdWVdIChj
b25zdCBUJiBjdXJyZW50KSB7DQogICAgICAgIHJldHVybiBjdXJyZW50ID09IHZhbHVlOw0KICAg
IH0pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxs
b2M+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPg0KaW5saW5lIGJvb2wgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+
OjpyZW1vdmVGaXJzdE1hdGNoaW5nKGNvbnN0IE1hdGNoRnVuY3Rpb24mIG1hdGNoZXMsIHNpemVf
dCBzdGFydEluZGV4KQ0Kew0KICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgc2l6
ZSgpOyArK2kpIHsNCiAgICAgICAgaWYgKG1hdGNoZXMoYXQoaSkpKSB7DQogICAgICAgICAgICBy
ZW1vdmUoaSk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgIH0NCiAg
ICByZXR1cm4gZmFsc2U7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5
cGVuYW1lIE1hbGxvYz4NCnRlbXBsYXRlPHR5cGVuYW1lIFU+DQppbmxpbmUgdW5zaWduZWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxs
b2M+OjpyZW1vdmVBbGwoY29uc3QgVSYgdmFsdWUpDQp7DQogICAgcmV0dXJuIHJlbW92ZUFsbE1h
dGNoaW5nKFsmdmFsdWVdIChjb25zdCBUJiBjdXJyZW50KSB7DQogICAgICAgIHJldHVybiBjdXJy
ZW50ID09IHZhbHVlOw0KICAgIH0pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5LCB0eXBlbmFtZSBNYWxsb2M+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRjaEZ1bmN0aW9uPg0K
aW5saW5lIHVuc2lnbmVkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6cmVtb3ZlQWxsTWF0Y2hpbmcoY29uc3QgTWF0Y2hGdW5j
dGlvbiYgbWF0Y2hlcywgc2l6ZV90IHN0YXJ0SW5kZXgpDQp7DQogICAgaXRlcmF0b3IgaG9sZUJl
Z2luID0gZW5kKCk7DQogICAgaXRlcmF0b3IgaG9sZUVuZCA9IGVuZCgpOw0KICAgIHVuc2lnbmVk
IG1hdGNoQ291bnQgPSAwOw0KICAgIGZvciAoYXV0byBpdCA9IGJlZ2luKCkgKyBzdGFydEluZGV4
LCBpdEVuZCA9IGVuZCgpOyBpdCA8IGl0RW5kOyArK2l0KSB7DQogICAgICAgIGlmIChtYXRjaGVz
KCppdCkpIHsNCiAgICAgICAgICAgIGlmIChob2xlQmVnaW4gPT0gZW5kKCkpDQogICAgICAgICAg
ICAgICAgaG9sZUJlZ2luID0gaXQ7DQogICAgICAgICAgICBlbHNlIGlmIChob2xlRW5kICE9IGl0
KSB7DQogICAgICAgICAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhob2xl
RW5kLCBpdCwgaG9sZUJlZ2luKTsNCiAgICAgICAgICAgICAgICBob2xlQmVnaW4gKz0gaXQgLSBo
b2xlRW5kOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaG9sZUVuZCA9IGl0ICsgMTsNCiAg
ICAgICAgICAgIGl0LT5+VCgpOw0KICAgICAgICAgICAgKyttYXRjaENvdW50Ow0KICAgICAgICB9
DQogICAgfQ0KICAgIGlmIChob2xlRW5kICE9IGVuZCgpKQ0KICAgICAgICBUeXBlT3BlcmF0aW9u
czo6bW92ZU92ZXJsYXBwaW5nKGhvbGVFbmQsIGVuZCgpLCBob2xlQmVnaW4pOw0KICAgIGFzYW5C
dWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIG1hdGNoQ291bnQpOw0KICAgIG1fc2l6ZSAt
PSBtYXRjaENvdW50Ow0KICAgIHJldHVybiBtYXRjaENvdW50Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQppbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46
OnJldmVyc2UoKQ0Kew0KICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplIC8gMjsgKytp
KQ0KICAgICAgICBzdGQ6OnN3YXAoYXQoaSksIGF0KG1fc2l6ZSAtIDEgLSBpKSk7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZs
b3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCnRlbXBsYXRl
PHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBSPg0KaW5saW5lIFZlY3RvcjxSPiBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxv
Yz46Om1hcChNYXBGdW5jdGlvbiBtYXBGdW5jdGlvbikgY29uc3QNCnsNCiAgICBWZWN0b3I8Uj4g
cmVzdWx0Ow0KICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7DQogICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkNCiAgICAgICAgcmVzdWx0LnVuY2hl
Y2tlZEFwcGVuZChtYXBGdW5jdGlvbihhdChpKSkpOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4NCmlubGlu
ZSBNYWxsb2NQdHI8VCwgTWFsbG9jPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnJlbGVhc2VCdWZmZXIoKQ0Kew0KICAgIA0K
ICAgIA0KICAgIA0KICAgIGFzYW5TZXRCdWZmZXJTaXplVG9GdWxsQ2FwYWNpdHkoKTsNCg0KICAg
IGF1dG8gYnVmZmVyID0gQmFzZTo6cmVsZWFzZUJ1ZmZlcigpOw0KICAgIGlmIChpbmxpbmVDYXBh
Y2l0eSAmJiAhYnVmZmVyICYmIG1fc2l6ZSkgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICBzaXplX3QgYnl0ZXMgPSBtX3NpemUgKiBzaXplb2YoVCk7DQogICAgICAgIGJ1
ZmZlciA9IGFkb3B0TWFsbG9jUHRyPFQsIE1hbGxvYz4oc3RhdGljX2Nhc3Q8VCo+KE1hbGxvYzo6
bWFsbG9jKGJ5dGVzKSkpOw0KICAgICAgICBtZW1jcHkoYnVmZmVyLmdldCgpLCBkYXRhKCksIGJ5
dGVzKTsNCiAgICB9DQogICAgbV9zaXplID0gMDsNCiAgICANCiAgICByZXR1cm4gYnVmZmVyOw0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQpp
bmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvYz46OmNoZWNrQ29uc2lzdGVuY3koKQ0Kew0KDQoNCg0KI2xpbmUgMTU2
OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvVmVjdG9yLmgiDQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVu
YW1lIE1hbGxvYz4NCmlubGluZSB2b2lkIHN3YXAoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+JiBhLCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz4mIGIpDQp7DQog
ICAgYS5zd2FwKGIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHlBLCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXJBLCBzaXplX3QgbWluQ2FwYWNpdHlBLCB0
eXBlbmFtZSBNYWxsb2NBLCBzaXplX3QgaW5saW5lQ2FwYWNpdHlCLCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXJCLCBzaXplX3QgbWluQ2FwYWNpdHlCLCB0eXBlbmFtZSBNYWxsb2NCPg0KYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eUEsIE92ZXJmbG93SGFuZGxl
ckEsIG1pbkNhcGFjaXR5QSwgTWFsbG9jQT4mIGEsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eUIsIE92ZXJmbG93SGFuZGxlckIsIG1pbkNhcGFjaXR5QiwgTWFsbG9jQj4mIGIpDQp7DQog
ICAgaWYgKGEuc2l6ZSgpICE9IGIuc2l6ZSgpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAg
ICByZXR1cm4gVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OmNvbXBhcmUoYS5kYXRhKCksIGIuZGF0
YSgpLCBhLnNpemUoKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eUEsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlckEsIHNpemVfdCBtaW5DYXBhY2l0eUEs
IHR5cGVuYW1lIE1hbGxvY0EsIHNpemVfdCBpbmxpbmVDYXBhY2l0eUIsIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlckIsIHNpemVfdCBtaW5DYXBhY2l0eUIsIHR5cGVuYW1lIE1hbGxvY0I+DQppbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eUEsIE92ZXJm
bG93SGFuZGxlckEsIG1pbkNhcGFjaXR5QSwgTWFsbG9jQT4mIGEsIGNvbnN0IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eUIsIE92ZXJmbG93SGFuZGxlckIsIG1pbkNhcGFjaXR5QiwgTWFsbG9jQj4m
IGIpDQp7DQogICAgcmV0dXJuICEoYSA9PSBiKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDE2MDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1ZlY3Rvci5oIg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBl
bmFtZSBNYWxsb2M+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0KaW5saW5lIFZlY3RvcjxVPiBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxv
Yz46Omlzb2xhdGVkQ29weSgpIGNvbnN0DQp7DQogICAgVmVjdG9yPFU+IGNvcHk7DQogICAgY29w
eS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7DQogICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogKnRoaXMpDQogICAgICAgIGNvcHkudW5jaGVja2VkQXBwZW5kKGVsZW1lbnQuaXNv
bGF0ZWRDb3B5KCkpOw0KICAgIHJldHVybiBjb3B5Ow0KfQ0KICAgIA0KdGVtcGxhdGU8dHlwZW5h
bWUgVmVjdG9yVHlwZSwgdHlwZW5hbWUgRnVuYz4NCnNpemVfdCByZW1vdmVSZXBlYXRlZEVsZW1l
bnRzKFZlY3RvclR5cGUmIHZlY3RvciwgY29uc3QgRnVuYyYgZnVuYykNCnsNCiAgICBhdXRvIGVu
ZCA9IHN0ZDo6dW5pcXVlKHZlY3Rvci5iZWdpbigpLCB2ZWN0b3IuZW5kKCksIGZ1bmMpOw0KICAg
IHNpemVfdCBuZXdTaXplID0gZW5kIC0gdmVjdG9yLmJlZ2luKCk7DQogICAgdmVjdG9yLnNocmlu
ayhuZXdTaXplKTsNCiAgICByZXR1cm4gbmV3U2l6ZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0Kc2l6ZV90IHJlbW92ZVJlcGVhdGVkRWxl
bWVudHMoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5LCBNYWxsb2M+JiB2ZWN0b3IpDQp7DQogICAgcmV0dXJuIHJlbW92ZVJlcGVhdGVkRWxlbWVu
dHModmVjdG9yLCBbXSAoVCYgYSwgVCYgYikgeyByZXR1cm4gYSA9PSBiOyB9KTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgU291cmNlVHlwZT4NCnN0cnVjdCBDb2xsZWN0aW9uSW5zcGVjdG9yIHsN
CiAgICB1c2luZyBSZWFsU291cmNlVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZTxTb3VyY2VUeXBlPjo6dHlwZTsNCiAgICB1c2luZyBJdGVyYXRvclR5cGUgPSBkZWNsdHlwZShz
dGQ6OmJlZ2luKHN0ZDo6ZGVjbHZhbDxSZWFsU291cmNlVHlwZT4oKSkpOw0KICAgIHVzaW5nIFNv
dXJjZUl0ZW1UeXBlID0gdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3JUeXBl
Pjo6dmFsdWVfdHlwZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBl
bmFtZSBTb3VyY2VUeXBlLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPg0Kc3RydWN0IE1hcHBlciB7
DQogICAgdXNpbmcgU291cmNlSXRlbVR5cGUgPSB0eXBlbmFtZSBDb2xsZWN0aW9uSW5zcGVjdG9y
PFNvdXJjZVR5cGU+OjpTb3VyY2VJdGVtVHlwZTsNCiAgICB1c2luZyBEZXN0aW5hdGlvbkl0ZW1U
eXBlID0gdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8TWFwRnVuY3Rpb24oU291cmNlSXRlbVR5cGUm
KT46OnR5cGU7DQoNCiAgICBzdGF0aWMgVmVjdG9yPERlc3RpbmF0aW9uSXRlbVR5cGU+IG1hcChT
b3VyY2VUeXBlIHNvdXJjZSwgY29uc3QgTWFwRnVuY3Rpb24mIG1hcEZ1bmN0aW9uKQ0KICAgIHsN
CiAgICAgICAgVmVjdG9yPERlc3RpbmF0aW9uSXRlbVR5cGU+IHJlc3VsdDsNCiAgICAgICAgDQog
ICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5zaXplKCkpOw0KICAg
ICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzb3VyY2UpDQogICAgICAgICAgICByZXN1bHQudW5jaGVj
a2VkQXBwZW5kKG1hcEZ1bmN0aW9uKGl0ZW0pKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAg
ICB9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5jdGlvbiwgdHlwZW5hbWUgU291cmNl
VHlwZT4NCnN0cnVjdCBNYXBwZXI8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGUsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxTb3VyY2VUeXBlJiY+Ojp2YWx1
ZT46OnR5cGU+IHsNCiAgICB1c2luZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVuYW1lIENvbGxlY3Rp
b25JbnNwZWN0b3I8U291cmNlVHlwZT46OlNvdXJjZUl0ZW1UeXBlOw0KICAgIHVzaW5nIERlc3Rp
bmF0aW9uSXRlbVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxNYXBGdW5jdGlvbihTb3Vy
Y2VJdGVtVHlwZSYmKT46OnR5cGU7DQoNCiAgICBzdGF0aWMgVmVjdG9yPERlc3RpbmF0aW9uSXRl
bVR5cGU+IG1hcChTb3VyY2VUeXBlJiYgc291cmNlLCBjb25zdCBNYXBGdW5jdGlvbiYgbWFwRnVu
Y3Rpb24pDQogICAgew0KICAgICAgICBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4gcmVzdWx0
Ow0KICAgICAgICANCiAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc291cmNl
LnNpemUoKSk7DQogICAgICAgIGZvciAoYXV0byYgaXRlbSA6IHNvdXJjZSkNCiAgICAgICAgICAg
IHJlc3VsdC51bmNoZWNrZWRBcHBlbmQobWFwRnVuY3Rpb24oc3RkOjptb3ZlPFdURjo6Q2hlY2tN
b3ZlUGFyYW1ldGVyPihpdGVtKSkpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCn07
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBTb3VyY2VUeXBlPg0K
VmVjdG9yPHR5cGVuYW1lIE1hcHBlcjxNYXBGdW5jdGlvbiwgU291cmNlVHlwZT46OkRlc3RpbmF0
aW9uSXRlbVR5cGU+IG1hcChTb3VyY2VUeXBlJiYgc291cmNlLCBNYXBGdW5jdGlvbiYmIG1hcEZ1
bmN0aW9uKQ0Kew0KICAgIHJldHVybiBNYXBwZXI8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+Ojpt
YXAoc3RkOjpmb3J3YXJkPFNvdXJjZVR5cGU+KHNvdXJjZSksIHN0ZDo6Zm9yd2FyZDxNYXBGdW5j
dGlvbj4obWFwRnVuY3Rpb24pKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgRGVzdGluYXRpb25W
ZWN0b3IsIHR5cGVuYW1lIENvbGxlY3Rpb24+DQppbmxpbmUgYXV0byBjb3B5VG9WZWN0b3JTcGVj
aWFsaXphdGlvbihjb25zdCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKSAtPiBEZXN0aW5hdGlvblZl
Y3Rvcg0Kew0KICAgIERlc3RpbmF0aW9uVmVjdG9yIHJlc3VsdDsNCiAgICANCiAgICByZXN1bHQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb2xsZWN0aW9uLnNpemUoKSk7DQogICAgZm9yIChhdXRv
JiBpdGVtIDogY29sbGVjdGlvbikNCiAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChpdGVt
KTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBEZXN0aW5hdGlv
bkl0ZW1UeXBlLCB0eXBlbmFtZSBDb2xsZWN0aW9uPg0KaW5saW5lIGF1dG8gY29weVRvVmVjdG9y
T2YoY29uc3QgQ29sbGVjdGlvbiYgY29sbGVjdGlvbikgLT4gVmVjdG9yPERlc3RpbmF0aW9uSXRl
bVR5cGU+DQp7DQogICAgcmV0dXJuIFdURjo6bWFwKGNvbGxlY3Rpb24sIFtdIChjb25zdCBhdXRv
JiB2KSAtPiBEZXN0aW5hdGlvbkl0ZW1UeXBlIHsgcmV0dXJuIHY7IH0pOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xsZWN0aW9uPg0Kc3RydWN0IENvcHlUb1ZlY3RvclJlc3VsdCB7DQogICAg
dXNpbmcgVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PHR5cGVuYW1lIENvbGxlY3Rpb25J
bnNwZWN0b3I8Q29sbGVjdGlvbj46OlNvdXJjZUl0ZW1UeXBlPjo6dHlwZTsNCn07DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIENvbGxlY3Rpb24+DQppbmxpbmUgYXV0byBjb3B5VG9WZWN0b3IoY29uc3Qg
Q29sbGVjdGlvbiYgY29sbGVjdGlvbikgLT4gVmVjdG9yPHR5cGVuYW1lIENvcHlUb1ZlY3RvclJl
c3VsdDxDb2xsZWN0aW9uPjo6VHlwZT4NCnsNCiAgICByZXR1cm4gY29weVRvVmVjdG9yT2Y8dHlw
ZW5hbWUgQ29weVRvVmVjdG9yUmVzdWx0PENvbGxlY3Rpb24+OjpUeXBlPihjb2xsZWN0aW9uKTsN
Cn0NCg0KfSANCg0KdXNpbmcgV1RGOjpVbnNhZmVWZWN0b3JPdmVyZmxvdzsNCnVzaW5nIFdURjo6
VmVjdG9yOw0KdXNpbmcgV1RGOjpjb3B5VG9WZWN0b3I7DQp1c2luZyBXVEY6OmNvcHlUb1ZlY3Rv
ck9mOw0KdXNpbmcgV1RGOjpjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlvbjsNCnVzaW5nIFdURjo6
cmVtb3ZlUmVwZWF0ZWRFbGVtZW50czsNCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWRCbGFja1RyZWUuaCINCg0KbmFt
ZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGU8Y2xhc3MgTm9kZVR5cGUsIHR5
cGVuYW1lIEtleVR5cGU+DQpjbGFzcyBSZWRCbGFja1RyZWUgZmluYWwgew0KICAgIFJlZEJsYWNr
VHJlZShjb25zdCBSZWRCbGFja1RyZWUmKSA9IGRlbGV0ZTsgUmVkQmxhY2tUcmVlJiBvcGVyYXRv
cj0oY29uc3QgUmVkQmxhY2tUcmVlJikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm8gPSBpbnQ7DQpwcml2YXRlOg0KICAgIGVudW0gQ29sb3Igew0KICAgICAgICBSZWQgPSAx
LA0KICAgICAgICBCbGFjaw0KICAgIH07DQogICAgDQpwdWJsaWM6DQogICAgY2xhc3MgTm9kZSB7
DQogICAgICAgIGZyaWVuZCBjbGFzcyBSZWRCbGFja1RyZWU7DQogICAgICAgIA0KICAgIHB1Ymxp
YzoNCiAgICAgICAgY29uc3QgTm9kZVR5cGUqIHN1Y2Nlc3NvcigpIGNvbnN0DQogICAgICAgIHsN
CiAgICAgICAgICAgIGNvbnN0IE5vZGUqIHggPSB0aGlzOw0KICAgICAgICAgICAgaWYgKHgtPnJp
Z2h0KCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVNaW5pbXVtKHgtPnJpZ2h0KCkpOw0K
ICAgICAgICAgICAgY29uc3QgTm9kZVR5cGUqIHkgPSB4LT5wYXJlbnQoKTsNCiAgICAgICAgICAg
IHdoaWxlICh5ICYmIHggPT0geS0+cmlnaHQoKSkgew0KICAgICAgICAgICAgICAgIHggPSB5Ow0K
ICAgICAgICAgICAgICAgIHkgPSB5LT5wYXJlbnQoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHJldHVybiB5Ow0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBjb25zdCBOb2RlVHlw
ZSogcHJlZGVjZXNzb3IoKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICBjb25zdCBOb2Rl
KiB4ID0gdGhpczsNCiAgICAgICAgICAgIGlmICh4LT5sZWZ0KCkpDQogICAgICAgICAgICAgICAg
cmV0dXJuIHRyZWVNYXhpbXVtKHgtPmxlZnQoKSk7DQogICAgICAgICAgICBjb25zdCBOb2RlVHlw
ZSogeSA9IHgtPnBhcmVudCgpOw0KICAgICAgICAgICAgd2hpbGUgKHkgJiYgeCA9PSB5LT5sZWZ0
KCkpIHsNCiAgICAgICAgICAgICAgICB4ID0geTsNCiAgICAgICAgICAgICAgICB5ID0geS0+cGFy
ZW50KCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4geTsNCiAgICAgICAgfQ0K
ICAgICAgICANCiAgICAgICAgTm9kZVR5cGUqIHN1Y2Nlc3NvcigpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGVUeXBlKj4oY29uc3RfY2FzdDxjb25zdCBOb2Rl
Kj4odGhpcyktPnN1Y2Nlc3NvcigpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIE5vZGVUeXBlKiBw
cmVkZWNlc3NvcigpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PE5v
ZGVUeXBlKj4oY29uc3RfY2FzdDxjb25zdCBOb2RlKj4odGhpcyktPnByZWRlY2Vzc29yKCkpOw0K
ICAgICAgICB9DQoNCiAgICBwcml2YXRlOg0KICAgICAgICB2b2lkIHJlc2V0KCkNCiAgICAgICAg
ew0KICAgICAgICAgICAgbV9sZWZ0ID0gbnVsbHB0cjsNCiAgICAgICAgICAgIG1fcmlnaHQgPSBu
dWxscHRyOw0KICAgICAgICAgICAgbV9wYXJlbnRBbmRSZWQgPSAxOyANCiAgICAgICAgfQ0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBOb2RlVHlwZSogcGFyZW50KCkgY29u
c3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Tm9kZVR5
cGUqPihtX3BhcmVudEFuZFJlZCAmIH5zdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsNCiAgICAg
ICAgfQ0KICAgICAgICANCiAgICAgICAgdm9pZCBzZXRQYXJlbnQoTm9kZVR5cGUqIG5ld1BhcmVu
dCkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9wYXJlbnRBbmRSZWQgPSByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obmV3UGFyZW50KSB8IChtX3BhcmVudEFuZFJlZCAmIDEpOw0KICAgICAg
ICB9DQogICAgICAgIA0KICAgICAgICBOb2RlVHlwZSogbGVmdCgpIGNvbnN0DQogICAgICAgIHsN
CiAgICAgICAgICAgIHJldHVybiBtX2xlZnQ7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAg
IHZvaWQgc2V0TGVmdChOb2RlVHlwZSogbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9s
ZWZ0ID0gbm9kZTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgTm9kZVR5cGUqIHJpZ2h0
KCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG1fcmlnaHQ7DQogICAgICAg
IH0NCiAgICAgICAgDQogICAgICAgIHZvaWQgc2V0UmlnaHQoTm9kZVR5cGUqIG5vZGUpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIG1fcmlnaHQgPSBub2RlOw0KICAgICAgICB9DQogICAgICAgIA0K
ICAgICAgICBDb2xvciBjb2xvcigpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICht
X3BhcmVudEFuZFJlZCAmIDEpDQogICAgICAgICAgICAgICAgcmV0dXJuIFJlZDsNCiAgICAgICAg
ICAgIHJldHVybiBCbGFjazsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdm9pZCBzZXRD
b2xvcihDb2xvciB2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHZhbHVlID09IFJl
ZCkNCiAgICAgICAgICAgICAgICBtX3BhcmVudEFuZFJlZCB8PSAxOw0KICAgICAgICAgICAgZWxz
ZQ0KICAgICAgICAgICAgICAgIG1fcGFyZW50QW5kUmVkICY9IH5zdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBOb2RlVHlwZSogbV9sZWZ0Ow0K
ICAgICAgICBOb2RlVHlwZSogbV9yaWdodDsNCiAgICAgICAgdWludHB0cl90IG1fcGFyZW50QW5k
UmVkOw0KICAgIH07DQoNCiAgICBSZWRCbGFja1RyZWUoKQ0KICAgICAgICA6IG1fcm9vdChudWxs
cHRyKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgdm9pZCBpbnNlcnQoTm9kZVR5cGUqIHgpDQog
ICAgew0KICAgICAgICB4LT5yZXNldCgpOw0KICAgICAgICB0cmVlSW5zZXJ0KHgpOw0KICAgICAg
ICB4LT5zZXRDb2xvcihSZWQpOw0KDQogICAgICAgIHdoaWxlICh4ICE9IG1fcm9vdCAmJiB4LT5w
YXJlbnQoKS0+Y29sb3IoKSA9PSBSZWQpIHsNCiAgICAgICAgICAgIGlmICh4LT5wYXJlbnQoKSA9
PSB4LT5wYXJlbnQoKS0+cGFyZW50KCktPmxlZnQoKSkgew0KICAgICAgICAgICAgICAgIE5vZGVU
eXBlKiB5ID0geC0+cGFyZW50KCktPnBhcmVudCgpLT5yaWdodCgpOw0KICAgICAgICAgICAgICAg
IGlmICh5ICYmIHktPmNvbG9yKCkgPT0gUmVkKSB7DQogICAgICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgICAgICB4LT5wYXJlbnQoKS0+c2V0Q29sb3IoQmxhY2spOw0KICAgICAgICAg
ICAgICAgICAgICB5LT5zZXRDb2xvcihCbGFjayk7DQogICAgICAgICAgICAgICAgICAgIHgtPnBh
cmVudCgpLT5wYXJlbnQoKS0+c2V0Q29sb3IoUmVkKTsNCiAgICAgICAgICAgICAgICAgICAgeCA9
IHgtPnBhcmVudCgpLT5wYXJlbnQoKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgICAgICAgICBpZiAoeCA9PSB4LT5wYXJlbnQoKS0+cmlnaHQoKSkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICB4ID0geC0+cGFyZW50KCk7
DQogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Um90YXRlKHgpOw0KICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICB4LT5wYXJl
bnQoKS0+c2V0Q29sb3IoQmxhY2spOw0KICAgICAgICAgICAgICAgICAgICB4LT5wYXJlbnQoKS0+
cGFyZW50KCktPnNldENvbG9yKFJlZCk7DQogICAgICAgICAgICAgICAgICAgIHJpZ2h0Um90YXRl
KHgtPnBhcmVudCgpLT5wYXJlbnQoKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fSBlbHNlIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBOb2RlVHlwZSogeSA9
IHgtPnBhcmVudCgpLT5wYXJlbnQoKS0+bGVmdCgpOw0KICAgICAgICAgICAgICAgIGlmICh5ICYm
IHktPmNvbG9yKCkgPT0gUmVkKSB7DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgICAgICB4LT5wYXJlbnQoKS0+c2V0Q29sb3IoQmxhY2spOw0KICAgICAgICAgICAgICAgICAg
ICB5LT5zZXRDb2xvcihCbGFjayk7DQogICAgICAgICAgICAgICAgICAgIHgtPnBhcmVudCgpLT5w
YXJlbnQoKS0+c2V0Q29sb3IoUmVkKTsNCiAgICAgICAgICAgICAgICAgICAgeCA9IHgtPnBhcmVu
dCgpLT5wYXJlbnQoKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg
ICAgICBpZiAoeCA9PSB4LT5wYXJlbnQoKS0+bGVmdCgpKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB4LT5wYXJlbnQoKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIHJpZ2h0Um90YXRlKHgpOw0KICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICB4LT5wYXJlbnQoKS0+c2V0
Q29sb3IoQmxhY2spOw0KICAgICAgICAgICAgICAgICAgICB4LT5wYXJlbnQoKS0+cGFyZW50KCkt
PnNldENvbG9yKFJlZCk7DQogICAgICAgICAgICAgICAgICAgIGxlZnRSb3RhdGUoeC0+cGFyZW50
KCktPnBhcmVudCgpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCg0KICAgICAgICBtX3Jvb3QtPnNldENvbG9yKEJsYWNrKTsNCiAgICB9DQoNCiAgICBOb2Rl
VHlwZSogcmVtb3ZlKE5vZGVUeXBlKiB6KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgTm9kZVR5cGUqIHk7
DQogICAgICAgIGlmICghei0+bGVmdCgpIHx8ICF6LT5yaWdodCgpKQ0KICAgICAgICAgICAgeSA9
IHo7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHkgPSB6LT5zdWNjZXNzb3IoKTsNCg0KICAg
ICAgICANCiAgICAgICAgTm9kZVR5cGUqIHg7DQogICAgICAgIGlmICh5LT5sZWZ0KCkpDQogICAg
ICAgICAgICB4ID0geS0+bGVmdCgpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICB4ID0geS0+
cmlnaHQoKTsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIE5vZGVUeXBlKiB4UGFyZW50
Ow0KICAgICAgICBpZiAoeCkgew0KICAgICAgICAgICAgeC0+c2V0UGFyZW50KHktPnBhcmVudCgp
KTsNCiAgICAgICAgICAgIHhQYXJlbnQgPSB4LT5wYXJlbnQoKTsNCiAgICAgICAgfSBlbHNlDQog
ICAgICAgICAgICB4UGFyZW50ID0geS0+cGFyZW50KCk7DQogICAgICAgIGlmICgheS0+cGFyZW50
KCkpDQogICAgICAgICAgICBtX3Jvb3QgPSB4Ow0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg
IGlmICh5ID09IHktPnBhcmVudCgpLT5sZWZ0KCkpDQogICAgICAgICAgICAgICAgeS0+cGFyZW50
KCktPnNldExlZnQoeCk7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgeS0+cGFy
ZW50KCktPnNldFJpZ2h0KHgpOw0KICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgaWYg
KHkgIT0geikgew0KICAgICAgICAgICAgaWYgKHktPmNvbG9yKCkgPT0gQmxhY2spDQogICAgICAg
ICAgICAgICAgcmVtb3ZlRml4dXAoeCwgeFBhcmVudCk7DQogICAgICAgICAgICANCiAgICAgICAg
ICAgIHktPnNldFBhcmVudCh6LT5wYXJlbnQoKSk7DQogICAgICAgICAgICB5LT5zZXRDb2xvcih6
LT5jb2xvcigpKTsNCiAgICAgICAgICAgIHktPnNldExlZnQoei0+bGVmdCgpKTsNCiAgICAgICAg
ICAgIHktPnNldFJpZ2h0KHotPnJpZ2h0KCkpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBp
ZiAoei0+bGVmdCgpKQ0KICAgICAgICAgICAgICAgIHotPmxlZnQoKS0+c2V0UGFyZW50KHkpOw0K
ICAgICAgICAgICAgaWYgKHotPnJpZ2h0KCkpDQogICAgICAgICAgICAgICAgei0+cmlnaHQoKS0+
c2V0UGFyZW50KHkpOw0KICAgICAgICAgICAgaWYgKHotPnBhcmVudCgpKSB7DQogICAgICAgICAg
ICAgICAgaWYgKHotPnBhcmVudCgpLT5sZWZ0KCkgPT0geikNCiAgICAgICAgICAgICAgICAgICAg
ei0+cGFyZW50KCktPnNldExlZnQoeSk7DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgICAgICAgICB6LT5wYXJlbnQoKS0+c2V0UmlnaHQoeSk7DQogICAgICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgICAgICBtX3Jvb3QgPSB5
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2UgaWYgKHktPmNvbG9yKCkgPT0gQmxhY2sp
DQogICAgICAgICAgICByZW1vdmVGaXh1cCh4LCB4UGFyZW50KTsNCg0KICAgICAgICByZXR1cm4g
ejsNCiAgICB9DQogICAgDQogICAgTm9kZVR5cGUqIHJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkp
DQogICAgew0KICAgICAgICBOb2RlVHlwZSogcmVzdWx0ID0gZmluZEV4YWN0KGtleSk7DQogICAg
ICAgIGlmICghcmVzdWx0KQ0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIHJldHVybiBy
ZW1vdmUocmVzdWx0KTsNCiAgICB9DQogICAgDQogICAgTm9kZVR5cGUqIGZpbmRFeGFjdChjb25z
dCBLZXlUeXBlJiBrZXkpIGNvbnN0DQogICAgew0KICAgICAgICBmb3IgKE5vZGVUeXBlKiBjdXJy
ZW50ID0gbV9yb290OyBjdXJyZW50Oykgew0KICAgICAgICAgICAgaWYgKGN1cnJlbnQtPmtleSgp
ID09IGtleSkNCiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDsNCiAgICAgICAgICAgIGlm
IChrZXkgPCBjdXJyZW50LT5rZXkoKSkNCiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVu
dC0+bGVmdCgpOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBj
dXJyZW50LT5yaWdodCgpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCiAg
ICANCiAgICBOb2RlVHlwZSogZmluZExlYXN0R3JlYXRlclRoYW5PckVxdWFsKGNvbnN0IEtleVR5
cGUmIGtleSkgY29uc3QNCiAgICB7DQogICAgICAgIE5vZGVUeXBlKiBiZXN0ID0gbnVsbHB0cjsN
CiAgICAgICAgZm9yIChOb2RlVHlwZSogY3VycmVudCA9IG1fcm9vdDsgY3VycmVudDspIHsNCiAg
ICAgICAgICAgIGlmIChjdXJyZW50LT5rZXkoKSA9PSBrZXkpDQogICAgICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnQ7DQogICAgICAgICAgICBpZiAoY3VycmVudC0+a2V5KCkgPCBrZXkpDQogICAg
ICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnJpZ2h0KCk7DQogICAgICAgICAgICBlbHNl
IHsNCiAgICAgICAgICAgICAgICBiZXN0ID0gY3VycmVudDsNCiAgICAgICAgICAgICAgICBjdXJy
ZW50ID0gY3VycmVudC0+bGVmdCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAg
IHJldHVybiBiZXN0Ow0KICAgIH0NCiAgICANCiAgICBOb2RlVHlwZSogZmluZEdyZWF0ZXN0TGVz
c1RoYW5PckVxdWFsKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QNCiAgICB7DQogICAgICAgIE5v
ZGVUeXBlKiBiZXN0ID0gbnVsbHB0cjsNCiAgICAgICAgZm9yIChOb2RlVHlwZSogY3VycmVudCA9
IG1fcm9vdDsgY3VycmVudDspIHsNCiAgICAgICAgICAgIGlmIChjdXJyZW50LT5rZXkoKSA9PSBr
ZXkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7DQogICAgICAgICAgICBpZiAoY3Vy
cmVudC0+a2V5KCkgPiBrZXkpDQogICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmxl
ZnQoKTsNCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGJlc3QgPSBjdXJyZW50
Ow0KICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5yaWdodCgpOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBiZXN0Ow0KICAgIH0NCg0KICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4NCiAgICB2b2lkIGl0ZXJhdGUoRnVuY3Rpb24gZnVuY3Rp
b24pDQogICAgew0KICAgICAgICBpZiAoIW1fcm9vdCkNCiAgICAgICAgICAgIHJldHVybjsNCg0K
ICAgICAgICBWZWN0b3I8Tm9kZVR5cGUqLCAxNj4gdG9JdGVyYXRlOw0KICAgICAgICB0b0l0ZXJh
dGUuYXBwZW5kKG1fcm9vdCk7DQogICAgICAgIHdoaWxlICh0b0l0ZXJhdGUuc2l6ZSgpKSB7DQog
ICAgICAgICAgICBOb2RlVHlwZSYgY3VycmVudCA9ICp0b0l0ZXJhdGUudGFrZUxhc3QoKTsNCiAg
ICAgICAgICAgIGJvb2wgaXRlcmF0ZUxlZnQgPSBmYWxzZTsNCiAgICAgICAgICAgIGJvb2wgaXRl
cmF0ZVJpZ2h0ID0gZmFsc2U7DQogICAgICAgICAgICBmdW5jdGlvbihjdXJyZW50LCBpdGVyYXRl
TGVmdCwgaXRlcmF0ZVJpZ2h0KTsNCiAgICAgICAgICAgIGlmIChpdGVyYXRlTGVmdCAmJiBjdXJy
ZW50LmxlZnQoKSkNCiAgICAgICAgICAgICAgICB0b0l0ZXJhdGUuYXBwZW5kKGN1cnJlbnQubGVm
dCgpKTsNCiAgICAgICAgICAgIGlmIChpdGVyYXRlUmlnaHQgJiYgY3VycmVudC5yaWdodCgpKQ0K
ICAgICAgICAgICAgICAgIHRvSXRlcmF0ZS5hcHBlbmQoY3VycmVudC5yaWdodCgpKTsNCiAgICAg
ICAgfQ0KICAgIH0NCiAgICANCiAgICBOb2RlVHlwZSogZmlyc3QoKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgaWYgKCFtX3Jvb3QpDQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAg
cmV0dXJuIHRyZWVNaW5pbXVtKG1fcm9vdCk7DQogICAgfQ0KICAgIA0KICAgIE5vZGVUeXBlKiBs
YXN0KCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICghbV9yb290KQ0KICAgICAgICAgICAgcmV0
dXJuIDA7DQogICAgICAgIHJldHVybiB0cmVlTWF4aW11bShtX3Jvb3QpOw0KICAgIH0NCiAgICAN
CiAgICANCiAgICBzaXplX3Qgc2l6ZSgpDQogICAgew0KICAgICAgICBzaXplX3QgcmVzdWx0ID0g
MDsNCiAgICAgICAgZm9yIChOb2RlVHlwZSogY3VycmVudCA9IGZpcnN0KCk7IGN1cnJlbnQ7IGN1
cnJlbnQgPSBjdXJyZW50LT5zdWNjZXNzb3IoKSkNCiAgICAgICAgICAgIHJlc3VsdCsrOw0KICAg
ICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCiAgICANCiAgICBib29sIGlzRW1wdHko
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICFtX3Jvb3Q7DQogICAgfQ0KICAgIA0KcHJpdmF0ZToN
CiAgICANCiAgICANCiAgICBzdGF0aWMgTm9kZVR5cGUqIHRyZWVNaW5pbXVtKE5vZGVUeXBlKiB4
KQ0KICAgIHsNCiAgICAgICAgd2hpbGUgKHgtPmxlZnQoKSkNCiAgICAgICAgICAgIHggPSB4LT5s
ZWZ0KCk7DQogICAgICAgIHJldHVybiB4Ow0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgTm9kZVR5
cGUqIHRyZWVNYXhpbXVtKE5vZGVUeXBlKiB4KQ0KICAgIHsNCiAgICAgICAgd2hpbGUgKHgtPnJp
Z2h0KCkpDQogICAgICAgICAgICB4ID0geC0+cmlnaHQoKTsNCiAgICAgICAgcmV0dXJuIHg7DQog
ICAgfQ0KDQogICAgc3RhdGljIGNvbnN0IE5vZGVUeXBlKiB0cmVlTWluaW11bShjb25zdCBOb2Rl
VHlwZSogeCkNCiAgICB7DQogICAgICAgIHdoaWxlICh4LT5sZWZ0KCkpDQogICAgICAgICAgICB4
ID0geC0+bGVmdCgpOw0KICAgICAgICByZXR1cm4geDsNCiAgICB9DQogICAgDQogICAgc3RhdGlj
IGNvbnN0IE5vZGVUeXBlKiB0cmVlTWF4aW11bShjb25zdCBOb2RlVHlwZSogeCkNCiAgICB7DQog
ICAgICAgIHdoaWxlICh4LT5yaWdodCgpKQ0KICAgICAgICAgICAgeCA9IHgtPnJpZ2h0KCk7DQog
ICAgICAgIHJldHVybiB4Ow0KICAgIH0NCg0KICAgIHZvaWQgdHJlZUluc2VydChOb2RlVHlwZSog
eikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgDQogICAgICAgIE5vZGVU
eXBlKiB5ID0gbnVsbHB0cjsNCiAgICAgICAgTm9kZVR5cGUqIHggPSBtX3Jvb3Q7DQogICAgICAg
IHdoaWxlICh4KSB7DQogICAgICAgICAgICB5ID0geDsNCiAgICAgICAgICAgIGlmICh6LT5rZXko
KSA8IHgtPmtleSgpKQ0KICAgICAgICAgICAgICAgIHggPSB4LT5sZWZ0KCk7DQogICAgICAgICAg
ICBlbHNlDQogICAgICAgICAgICAgICAgeCA9IHgtPnJpZ2h0KCk7DQogICAgICAgIH0NCiAgICAg
ICAgei0+c2V0UGFyZW50KHkpOw0KICAgICAgICBpZiAoIXkpDQogICAgICAgICAgICBtX3Jvb3Qg
PSB6Ow0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGlmICh6LT5rZXkoKSA8IHktPmtleSgp
KQ0KICAgICAgICAgICAgICAgIHktPnNldExlZnQoeik7DQogICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgeS0+c2V0UmlnaHQoeik7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICANCiAg
ICANCiAgICANCg0KICAgIA0KICAgIA0KICAgIE5vZGVUeXBlKiBsZWZ0Um90YXRlKE5vZGVUeXBl
KiB4KQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIE5vZGVUeXBlKiB5ID0geC0+cmlnaHQoKTsN
Cg0KICAgICAgICANCiAgICAgICAgeC0+c2V0UmlnaHQoeS0+bGVmdCgpKTsNCiAgICAgICAgaWYg
KHktPmxlZnQoKSkNCiAgICAgICAgICAgIHktPmxlZnQoKS0+c2V0UGFyZW50KHgpOw0KDQogICAg
ICAgIA0KICAgICAgICB5LT5zZXRQYXJlbnQoeC0+cGFyZW50KCkpOw0KICAgICAgICBpZiAoIXgt
PnBhcmVudCgpKQ0KICAgICAgICAgICAgbV9yb290ID0geTsNCiAgICAgICAgZWxzZSB7DQogICAg
ICAgICAgICBpZiAoeCA9PSB4LT5wYXJlbnQoKS0+bGVmdCgpKQ0KICAgICAgICAgICAgICAgIHgt
PnBhcmVudCgpLT5zZXRMZWZ0KHkpOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAg
IHgtPnBhcmVudCgpLT5zZXRSaWdodCh5KTsNCiAgICAgICAgfQ0KDQogICAgICAgIA0KICAgICAg
ICB5LT5zZXRMZWZ0KHgpOw0KICAgICAgICB4LT5zZXRQYXJlbnQoeSk7DQoNCiAgICAgICAgcmV0
dXJuIHk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgTm9kZVR5cGUqIHJpZ2h0Um90YXRlKE5v
ZGVUeXBlKiB5KQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIE5vZGVUeXBlKiB4ID0geS0+bGVm
dCgpOw0KDQogICAgICAgIA0KICAgICAgICB5LT5zZXRMZWZ0KHgtPnJpZ2h0KCkpOw0KICAgICAg
ICBpZiAoeC0+cmlnaHQoKSkNCiAgICAgICAgICAgIHgtPnJpZ2h0KCktPnNldFBhcmVudCh5KTsN
Cg0KICAgICAgICANCiAgICAgICAgeC0+c2V0UGFyZW50KHktPnBhcmVudCgpKTsNCiAgICAgICAg
aWYgKCF5LT5wYXJlbnQoKSkNCiAgICAgICAgICAgIG1fcm9vdCA9IHg7DQogICAgICAgIGVsc2Ug
ew0KICAgICAgICAgICAgaWYgKHkgPT0geS0+cGFyZW50KCktPmxlZnQoKSkNCiAgICAgICAgICAg
ICAgICB5LT5wYXJlbnQoKS0+c2V0TGVmdCh4KTsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAg
ICAgICAgICB5LT5wYXJlbnQoKS0+c2V0UmlnaHQoeCk7DQogICAgICAgIH0NCg0KICAgICAgICAN
CiAgICAgICAgeC0+c2V0UmlnaHQoeSk7DQogICAgICAgIHktPnNldFBhcmVudCh4KTsNCg0KICAg
ICAgICByZXR1cm4geDsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICB2b2lkIHJlbW92
ZUZpeHVwKE5vZGVUeXBlKiB4LCBOb2RlVHlwZSogeFBhcmVudCkNCiAgICB7DQogICAgICAgIHdo
aWxlICh4ICE9IG1fcm9vdCAmJiAoIXggfHwgeC0+Y29sb3IoKSA9PSBCbGFjaykpIHsNCiAgICAg
ICAgICAgIGlmICh4ID09IHhQYXJlbnQtPmxlZnQoKSkgew0KICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgIE5vZGVUeXBlKiB3ID0geFBhcmVudC0+cmlnaHQoKTsNCiAgICAgICAgICAgICAg
ICAoKHZvaWQpMCk7IA0KICAgICAgICAgICAgICAgIGlmICh3LT5jb2xvcigpID09IFJlZCkgew0K
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgdy0+c2V0Q29sb3IoQmxh
Y2spOw0KICAgICAgICAgICAgICAgICAgICB4UGFyZW50LT5zZXRDb2xvcihSZWQpOw0KICAgICAg
ICAgICAgICAgICAgICBsZWZ0Um90YXRlKHhQYXJlbnQpOw0KICAgICAgICAgICAgICAgICAgICB3
ID0geFBhcmVudC0+cmlnaHQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
aWYgKCghdy0+bGVmdCgpIHx8IHctPmxlZnQoKS0+Y29sb3IoKSA9PSBCbGFjaykNCiAgICAgICAg
ICAgICAgICAgICAgJiYgKCF3LT5yaWdodCgpIHx8IHctPnJpZ2h0KCktPmNvbG9yKCkgPT0gQmxh
Y2spKSB7DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICB3LT5zZXRD
b2xvcihSZWQpOw0KICAgICAgICAgICAgICAgICAgICB4ID0geFBhcmVudDsNCiAgICAgICAgICAg
ICAgICAgICAgeFBhcmVudCA9IHgtPnBhcmVudCgpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICAgICAgICAgIGlmICghdy0+cmlnaHQoKSB8fCB3LT5yaWdodCgpLT5jb2xv
cigpID09IEJsYWNrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgIHctPmxlZnQoKS0+c2V0Q29sb3IoQmxhY2spOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgdy0+c2V0Q29sb3IoUmVkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Um90
YXRlKHcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHhQYXJlbnQtPnJpZ2h0KCk7DQog
ICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgIHctPnNldENvbG9yKHhQYXJlbnQtPmNvbG9yKCkpOw0KICAgICAgICAgICAgICAgICAg
ICB4UGFyZW50LT5zZXRDb2xvcihCbGFjayk7DQogICAgICAgICAgICAgICAgICAgIGlmICh3LT5y
aWdodCgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgdy0+cmlnaHQoKS0+c2V0Q29sb3IoQmxh
Y2spOw0KICAgICAgICAgICAgICAgICAgICBsZWZ0Um90YXRlKHhQYXJlbnQpOw0KICAgICAgICAg
ICAgICAgICAgICB4ID0gbV9yb290Ow0KICAgICAgICAgICAgICAgICAgICB4UGFyZW50ID0geC0+
cGFyZW50KCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCg0KICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgIE5vZGVUeXBlKiB3ID0geFBhcmVudC0+bGVmdCgpOw0KICAgICAgICAgICAgICAgICgo
dm9pZCkwKTsgDQogICAgICAgICAgICAgICAgaWYgKHctPmNvbG9yKCkgPT0gUmVkKSB7DQogICAg
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICB3LT5zZXRDb2xvcihCbGFjayk7
DQogICAgICAgICAgICAgICAgICAgIHhQYXJlbnQtPnNldENvbG9yKFJlZCk7DQogICAgICAgICAg
ICAgICAgICAgIHJpZ2h0Um90YXRlKHhQYXJlbnQpOw0KICAgICAgICAgICAgICAgICAgICB3ID0g
eFBhcmVudC0+bGVmdCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAo
KCF3LT5yaWdodCgpIHx8IHctPnJpZ2h0KCktPmNvbG9yKCkgPT0gQmxhY2spDQogICAgICAgICAg
ICAgICAgICAgICYmICghdy0+bGVmdCgpIHx8IHctPmxlZnQoKS0+Y29sb3IoKSA9PSBCbGFjaykp
IHsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIHctPnNldENvbG9y
KFJlZCk7DQogICAgICAgICAgICAgICAgICAgIHggPSB4UGFyZW50Ow0KICAgICAgICAgICAgICAg
ICAgICB4UGFyZW50ID0geC0+cGFyZW50KCk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKCF3LT5sZWZ0KCkgfHwgdy0+bGVmdCgpLT5jb2xvcigpID09
IEJsYWNrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgIHctPnJpZ2h0KCktPnNldENvbG9yKEJsYWNrKTsNCiAgICAgICAgICAgICAgICAgICAgICAg
IHctPnNldENvbG9yKFJlZCk7DQogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Um90YXRlKHcp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHhQYXJlbnQtPmxlZnQoKTsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
dy0+c2V0Q29sb3IoeFBhcmVudC0+Y29sb3IoKSk7DQogICAgICAgICAgICAgICAgICAgIHhQYXJl
bnQtPnNldENvbG9yKEJsYWNrKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHctPmxlZnQoKSkN
CiAgICAgICAgICAgICAgICAgICAgICAgIHctPmxlZnQoKS0+c2V0Q29sb3IoQmxhY2spOw0KICAg
ICAgICAgICAgICAgICAgICByaWdodFJvdGF0ZSh4UGFyZW50KTsNCiAgICAgICAgICAgICAgICAg
ICAgeCA9IG1fcm9vdDsNCiAgICAgICAgICAgICAgICAgICAgeFBhcmVudCA9IHgtPnBhcmVudCgp
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBp
ZiAoeCkNCiAgICAgICAgICAgIHgtPnNldENvbG9yKEJsYWNrKTsNCiAgICB9DQoNCiAgICBOb2Rl
VHlwZSogbV9yb290Ow0KfTsNCg0KfQ0KI2xpbmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaCIN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
TWFpblRocmVhZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRnVuY3Rpb24uaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpuYW1lc3BhY2UgRGV0YWlsIHsNCg0K
dGVtcGxhdGU8dHlwZW5hbWUgT3V0LCB0eXBlbmFtZS4uLiBJbj4NCmNsYXNzIENhbGxhYmxlV3Jh
cHBlckJhc2Ugew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlv
bjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhp
c0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQog
ICAgdmlydHVhbCB+Q2FsbGFibGVXcmFwcGVyQmFzZSgpIHsgfQ0KICAgIHZpcnR1YWwgT3V0IGNh
bGwoSW4uLi4pID0gMDsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5h
bWUuLi4+IGNsYXNzIENhbGxhYmxlV3JhcHBlcjsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFi
bGVUeXBlLCB0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPg0KY2xhc3MgQ2FsbGFibGVXcmFw
cGVyIDogcHVibGljIENhbGxhYmxlV3JhcHBlckJhc2U8T3V0LCBJbi4uLj4gew0KcHVibGljOg0K
ICAgIGV4cGxpY2l0IENhbGxhYmxlV3JhcHBlcihDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkNCiAg
ICAgICAgOiBtX2NhbGxhYmxlKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oY2Fs
bGFibGUpKSB7IH0NCiAgICBDYWxsYWJsZVdyYXBwZXIoY29uc3QgQ2FsbGFibGVXcmFwcGVyJikg
PSBkZWxldGU7DQogICAgQ2FsbGFibGVXcmFwcGVyJiBvcGVyYXRvcj0oY29uc3QgQ2FsbGFibGVX
cmFwcGVyJikgPSBkZWxldGU7DQogICAgT3V0IGNhbGwoSW4uLi4gaW4pIGZpbmFsIHsgcmV0dXJu
IG1fY2FsbGFibGUoc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOyB9DQpwcml2YXRlOg0KICAgIENh
bGxhYmxlVHlwZSBtX2NhbGxhYmxlOw0KfTsNCg0KfSANCg0KdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIEZ1bmN0aW9uOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsIHR5cGVuYW1lLi4uIEluPiBG
dW5jdGlvbjxPdXQoSW4uLi4pPiBhZG9wdChEZXRhaWw6OkNhbGxhYmxlV3JhcHBlckJhc2U8T3V0
LCBJbi4uLj4qKTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+DQpj
bGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNp
emUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVs
ZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkw
KTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJp
dmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9
IGludDsNCnB1YmxpYzoNCiAgICB1c2luZyBJbXBsID0gRGV0YWlsOjpDYWxsYWJsZVdyYXBwZXJC
YXNlPE91dCwgSW4uLi4+Ow0KDQogICAgRnVuY3Rpb24oKSA9IGRlZmF1bHQ7DQogICAgRnVuY3Rp
b24oc3RkOjpudWxscHRyX3QpIHsgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVU
eXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENh
bGxhYmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVl
X3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4NCiAgICBGdW5jdGlvbihD
YWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkNCiAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtl
VW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+
KHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oY2FsbGFibGUpKSkgeyB9DQoNCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNf
ZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBl
Pjo6dmFsdWU+Ojp0eXBlPg0KICAgIEZ1bmN0aW9uKEZ1bmN0aW9uVHlwZSBmKQ0KICAgICAgICA6
IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVu
Y3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVy
PihmKSkpIHsgfQ0KDQogICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0DQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX2NhbGxhYmxlV3JhcHBlci0+Y2Fs
bChzdGQ6OmZvcndhcmQ8SW4+KGluKS4uLik7DQogICAgfQ0KDQogICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYWJsZVdyYXBwZXI7IH0NCg0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1
bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46
OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1
ZT46OnR5cGU+DQogICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJs
ZSkNCiAgICB7DQogICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6
OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KGNhbGxhYmxlKSk7DQogICAgICAgIHJldHVybiAqdGhpczsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVl
ICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlv
blR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPg0KICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVu
Y3Rpb25UeXBlIGYpDQogICAgew0KICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG1ha2VVbmlx
dWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oc3Rk
Ojptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihmKSk7DQogICAgICAgIHJldHVybiAqdGhp
czsNCiAgICB9DQoNCiAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KQ0KICAg
IHsNCiAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBudWxscHRyOw0KICAgICAgICByZXR1cm4g
KnRoaXM7DQogICAgfQ0KDQogICAgSW1wbCogbGVhaygpDQogICAgew0KICAgICAgICByZXR1cm4g
bV9jYWxsYWJsZVdyYXBwZXIucmVsZWFzZSgpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBlbnVt
IEFkb3B0VGFnIHsgQWRvcHQgfTsNCiAgICBGdW5jdGlvbihJbXBsKiBpbXBsLCBBZG9wdFRhZykN
CiAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihpbXBsKQ0KICAgIHsNCiAgICB9DQoNCiAgICBm
cmllbmQgRnVuY3Rpb24gYWRvcHQ8T3V0LCBJbi4uLj4oSW1wbCopOw0KDQogICAgc3RkOjp1bmlx
dWVfcHRyPEltcGw+IG1fY2FsbGFibGVXcmFwcGVyOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
T3V0LCB0eXBlbmFtZS4uLiBJbj4gRnVuY3Rpb248T3V0KEluLi4uKT4gYWRvcHQoRGV0YWlsOjpD
YWxsYWJsZVdyYXBwZXJCYXNlPE91dCwgSW4uLi4+KiBpbXBsKQ0Kew0KICAgIHJldHVybiBGdW5j
dGlvbjxPdXQoSW4uLi4pPihpbXBsLCBGdW5jdGlvbjxPdXQoSW4uLi4pPjo6QWRvcHQpOw0KfQ0K
DQp9IA0KDQp1c2luZyBXVEY6OkZ1bmN0aW9uOw0KI2xpbmUgMzUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL01haW5UaHJlYWQuaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1dhbGxUaW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9DbG9ja1R5cGUuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCg0KZW51bSBjbGFz
cyBDbG9ja1R5cGUgew0KICAgIFdhbGwsDQogICAgTW9ub3RvbmljDQp9Ow0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgQ2xvY2tUeXBlKTsN
Cg0KfSANCg0KdXNpbmcgV1RGOjpDbG9ja1R5cGU7DQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvV2FsbFRpbWUuaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1NlY29uZHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFz
cyBNb25vdG9uaWNUaW1lOw0KY2xhc3MgUHJpbnRTdHJlYW07DQpjbGFzcyBUZXh0U3RyZWFtOw0K
Y2xhc3MgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlOw0KY2xhc3MgV2FsbFRpbWU7DQoNCmNsYXNz
IFNlY29uZHMgZmluYWwgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBs
b2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5n
IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJs
aWM6DQogICAgY29uc3RleHByIFNlY29uZHMoKSB7IH0NCiAgICANCiAgICBleHBsaWNpdCBjb25z
dGV4cHIgU2Vjb25kcyhkb3VibGUgdmFsdWUpDQogICAgICAgIDogbV92YWx1ZSh2YWx1ZSkNCiAg
ICB7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9DQogICAgDQogICAgY29uc3RleHByIGRvdWJsZSBtaW51dGVzKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSAvIDYwOyB9DQogICAgY29uc3RleHByIGRvdWJsZSBzZWNvbmRz
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQ0KICAgIGNvbnN0ZXhwciBkb3VibGUgbWlsbGlz
ZWNvbmRzKCkgY29uc3QgeyByZXR1cm4gc2Vjb25kcygpICogMTAwMDsgfQ0KICAgIGNvbnN0ZXhw
ciBkb3VibGUgbWljcm9zZWNvbmRzKCkgY29uc3QgeyByZXR1cm4gbWlsbGlzZWNvbmRzKCkgKiAx
MDAwOyB9DQogICAgY29uc3RleHByIGRvdWJsZSBuYW5vc2Vjb25kcygpIGNvbnN0IHsgcmV0dXJu
IG1pY3Jvc2Vjb25kcygpICogMTAwMDsgfQ0KDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVCBtaW51dGVzQXMoKSBjb25zdCB7IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxU
Pjo6dmFsdWUsICIiKTsgcmV0dXJuIGNsYW1wVG9BY2NlcHRpbmc2NDxUPihtaW51dGVzKCkpOyB9
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBzZWNvbmRzQXMoKSBjb25zdCB7IHN0YXRpY19h
c3NlcnQoc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICIiKTsgcmV0dXJuIGNsYW1wVG9BY2Nl
cHRpbmc2NDxUPihzZWNvbmRzKCkpOyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBtaWxs
aXNlY29uZHNBcygpIGNvbnN0IHsgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2
YWx1ZSwgIiIpOyByZXR1cm4gY2xhbXBUb0FjY2VwdGluZzY0PFQ+KG1pbGxpc2Vjb25kcygpKTsg
fQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgbWljcm9zZWNvbmRzQXMoKSBjb25zdCB7IHN0
YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICIiKTsgcmV0dXJuIGNsYW1w
VG9BY2NlcHRpbmc2NDxUPihtaWNyb3NlY29uZHMoKSk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBUIG5hbm9zZWNvbmRzQXMoKSBjb25zdCB7IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRl
Z3JhbDxUPjo6dmFsdWUsICIiKTsgcmV0dXJuIGNsYW1wVG9BY2NlcHRpbmc2NDxUPihuYW5vc2Vj
b25kcygpKTsgfQ0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBmcm9tTWludXRl
cyhkb3VibGUgbWludXRlcykNCiAgICB7DQogICAgICAgIHJldHVybiBTZWNvbmRzKG1pbnV0ZXMg
KiA2MCk7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGZyb21Ib3Vycyhk
b3VibGUgaG91cnMpDQogICAgew0KICAgICAgICByZXR1cm4gU2Vjb25kcyhob3VycyAqIDM2MDAp
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBmcm9tTWlsbGlzZWNvbmRz
KGRvdWJsZSBtaWxsaXNlY29uZHMpDQogICAgew0KICAgICAgICByZXR1cm4gU2Vjb25kcyhtaWxs
aXNlY29uZHMgLyAxMDAwKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBTZWNv
bmRzIGZyb21NaWNyb3NlY29uZHMoZG91YmxlIG1pY3Jvc2Vjb25kcykNCiAgICB7DQogICAgICAg
IHJldHVybiBmcm9tTWlsbGlzZWNvbmRzKG1pY3Jvc2Vjb25kcyAvIDEwMDApOw0KICAgIH0NCiAg
ICANCiAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZnJvbU5hbm9zZWNvbmRzKGRvdWJsZSBu
YW5vc2Vjb25kcykNCiAgICB7DQogICAgICAgIHJldHVybiBmcm9tTWljcm9zZWNvbmRzKG5hbm9z
ZWNvbmRzIC8gMTAwMCk7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25k
cyBpbmZpbml0eSgpDQogICAgew0KICAgICAgICByZXR1cm4gU2Vjb25kcyhzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4
cHIgU2Vjb25kcyBuYW4oKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFNlY29uZHMoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7DQogICAgfQ0KICAgIA0KICAgIGV4cGxp
Y2l0IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3ZhbHVlOyB9
DQogICAgDQogICAgY29uc3RleHByIFNlY29uZHMgb3BlcmF0b3IrKFNlY29uZHMgb3RoZXIpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gU2Vjb25kcyh2YWx1ZSgpICsgb3RoZXIudmFsdWUo
KSk7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBTZWNvbmRzIG9wZXJhdG9yLShTZWNvbmRz
IG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIFNlY29uZHModmFsdWUoKSAtIG90
aGVyLnZhbHVlKCkpOw0KICAgIH0NCiAgICANCiAgICBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRv
ci0oKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIFNlY29uZHMoLXZhbHVlKCkpOw0KICAg
IH0NCiAgICANCiAgICANCiAgICANCiAgICBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvciooZG91
YmxlIHNjYWxhcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBTZWNvbmRzKHZhbHVlKCkg
KiBzY2FsYXIpOw0KICAgIH0NCiAgICANCiAgICBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvci8o
ZG91YmxlIHNjYWxhcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBTZWNvbmRzKHZhbHVl
KCkgLyBzY2FsYXIpOw0KICAgIH0NCiAgICANCiAgICANCiAgICBjb25zdGV4cHIgZG91YmxlIG9w
ZXJhdG9yLyhTZWNvbmRzIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHZhbHVl
KCkgLyBvdGhlci52YWx1ZSgpOw0KICAgIH0NCiAgICANCiAgICBTZWNvbmRzIG9wZXJhdG9yJShk
b3VibGUgc2NhbGFyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIFNlY29uZHMoZm1vZCh2
YWx1ZSgpLCBzY2FsYXIpKTsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgU2Vjb25kcyBvcGVyYXRvciUoU2Vjb25kcyBvdGhlcikgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBTZWNvbmRzKGZtb2QodmFsdWUoKSwgb3RoZXIudmFsdWUoKSkpOw0KICAg
IH0NCiAgICANCiAgICBTZWNvbmRzJiBvcGVyYXRvcis9KFNlY29uZHMgb3RoZXIpDQogICAgew0K
ICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyArIG90aGVyOw0KICAgIH0NCiAgICANCiAgICBT
ZWNvbmRzJiBvcGVyYXRvci09KFNlY29uZHMgb3RoZXIpDQogICAgew0KICAgICAgICByZXR1cm4g
KnRoaXMgPSAqdGhpcyAtIG90aGVyOw0KICAgIH0NCiAgICANCiAgICBTZWNvbmRzJiBvcGVyYXRv
cio9KGRvdWJsZSBzY2FsYXIpDQogICAgew0KICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyAq
IHNjYWxhcjsNCiAgICB9DQogICAgDQogICAgU2Vjb25kcyYgb3BlcmF0b3IvPShkb3VibGUgc2Nh
bGFyKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgLyBzY2FsYXI7DQogICAg
fQ0KICAgIA0KICAgIFNlY29uZHMmIG9wZXJhdG9yJT0oZG91YmxlIHNjYWxhcikNCiAgICB7DQog
ICAgICAgIHJldHVybiAqdGhpcyA9ICp0aGlzICUgc2NhbGFyOw0KICAgIH0NCiAgICANCiAgICBT
ZWNvbmRzJiBvcGVyYXRvciU9KFNlY29uZHMgb3RoZXIpDQogICAgew0KICAgICAgICByZXR1cm4g
KnRoaXMgPSAqdGhpcyAlIG90aGVyOw0KICAgIH0NCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgV2FsbFRpbWUgb3BlcmF0b3IrKFdhbGxUaW1lKSBjb25zdDsNCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgTW9ub3RvbmljVGltZSBvcGVyYXRvcisoTW9ub3RvbmljVGltZSkgY29uc3Q7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBvcGVy
YXRvcisoY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikgY29uc3Q7DQogICAgDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIFdhbGxUaW1lIG9wZXJhdG9yLShXYWxsVGltZSkgY29uc3Q7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIE1vbm90b25pY1RpbWUgb3BlcmF0b3ItKE1vbm90
b25pY1RpbWUpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBUaW1lV2l0aER5bmFt
aWNDbG9ja1R5cGUgb3BlcmF0b3ItKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNv
bnN0Ow0KICAgIA0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oU2Vjb25kcyBvdGhlcikg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7DQog
ICAgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oU2Vjb25kcyBvdGhlcikg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3ZhbHVlICE9IG90aGVyLm1fdmFsdWU7DQog
ICAgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChTZWNvbmRzIG90aGVyKSBj
b25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fdmFsdWUgPCBvdGhlci5tX3ZhbHVlOw0KICAg
IH0NCiAgICANCiAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oU2Vjb25kcyBvdGhlcikgY29u
c3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3ZhbHVlID4gb3RoZXIubV92YWx1ZTsNCiAgICB9
DQogICAgDQogICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShTZWNvbmRzIG90aGVyKSBjb25z
dA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fdmFsdWUgPD0gb3RoZXIubV92YWx1ZTsNCiAgICB9
DQogICAgDQogICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShTZWNvbmRzIG90aGVyKSBjb25z
dA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fdmFsdWUgPj0gb3RoZXIubV92YWx1ZTsNCiAgICB9
DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0Ow0KICAgIA0KICAgIFNlY29uZHMgaXNvbGF0ZWRDb3B5KCkgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pg0KICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0DQogICAgew0KICAgICAg
ICBlbmNvZGVyIDw8IG1fdmFsdWU7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4NCiAgICBzdGF0aWMgT3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
DQogICAgew0KICAgICAgICBPcHRpb25hbDxkb3VibGU+IHNlY29uZHM7DQogICAgICAgIGRlY29k
ZXIgPj4gc2Vjb25kczsNCiAgICAgICAgaWYgKCFzZWNvbmRzKQ0KICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsNCiAgICAgICAgcmV0dXJuIFNlY29uZHMoKnNlY29uZHMpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+DQogICAgc3RhdGljICBib29sIGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBTZWNvbmRzJiBzZWNvbmRzKQ0KICAgIHsNCiAgICAgICAgZG91Ymxl
IHZhbHVlOw0KICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkNCiAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCg0KICAgICAgICBzZWNvbmRzID0gU2Vjb25kcyh2YWx1ZSk7DQogICAg
ICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIHN0cnVjdCBNYXJrYWJsZVRyYWl0czsNCg0K
cHJpdmF0ZToNCiAgICBkb3VibGUgbV92YWx1ZSB7IDAgfTsNCn07DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkIHNsZWVwKFNlY29uZHMpOw0KDQpzdHJ1Y3QgU2Vjb25kczo6TWFya2FibGVU
cmFpdHMgew0KICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShTZWNvbmRzIHNlY29uZHMpDQog
ICAgew0KICAgICAgICByZXR1cm4gc3RkOjppc25hbihzZWNvbmRzLnZhbHVlKCkpOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBlbXB0eVZhbHVlKCkNCiAgICB7DQogICAg
ICAgIHJldHVybiBTZWNvbmRzOjpuYW4oKTsNCiAgICB9DQp9Ow0KDQppbmxpbmUgbmFtZXNwYWNl
IHNlY29uZHNfbGl0ZXJhbHMgew0KDQpjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvciIiIF9taW4o
bG9uZyBkb3VibGUgbWludXRlcykNCnsNCiAgICByZXR1cm4gU2Vjb25kczo6ZnJvbU1pbnV0ZXMo
bWludXRlcyk7DQp9DQoNCmNvbnN0ZXhwciBTZWNvbmRzIG9wZXJhdG9yIiIgX2gobG9uZyBkb3Vi
bGUgaG91cnMpDQp7DQogICAgcmV0dXJuIFNlY29uZHM6OmZyb21Ib3Vycyhob3Vycyk7DQp9DQoN
CmNvbnN0ZXhwciBTZWNvbmRzIG9wZXJhdG9yIiIgX3MobG9uZyBkb3VibGUgc2Vjb25kcykNCnsN
CiAgICByZXR1cm4gU2Vjb25kcyhzZWNvbmRzKTsNCn0NCg0KY29uc3RleHByIFNlY29uZHMgb3Bl
cmF0b3IiIiBfbXMobG9uZyBkb3VibGUgbWlsbGlzZWNvbmRzKQ0Kew0KICAgIHJldHVybiBTZWNv
bmRzOjpmcm9tTWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kcyk7DQp9DQoNCmNvbnN0ZXhwciBTZWNv
bmRzIG9wZXJhdG9yIiIgX3VzKGxvbmcgZG91YmxlIG1pY3Jvc2Vjb25kcykNCnsNCiAgICByZXR1
cm4gU2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOw0KfQ0KDQpjb25zdGV4
cHIgU2Vjb25kcyBvcGVyYXRvciIiIF9ucyhsb25nIGRvdWJsZSBuYW5vc2Vjb25kcykNCnsNCiAg
ICByZXR1cm4gU2Vjb25kczo6ZnJvbU5hbm9zZWNvbmRzKG5hbm9zZWNvbmRzKTsNCn0NCg0KY29u
c3RleHByIFNlY29uZHMgb3BlcmF0b3IiIiBfbWluKHVuc2lnbmVkIGxvbmcgbG9uZyBtaW51dGVz
KQ0Kew0KICAgIHJldHVybiBTZWNvbmRzOjpmcm9tTWludXRlcyhtaW51dGVzKTsNCn0NCg0KY29u
c3RleHByIFNlY29uZHMgb3BlcmF0b3IiIiBfaCh1bnNpZ25lZCBsb25nIGxvbmcgaG91cnMpDQp7
DQogICAgcmV0dXJuIFNlY29uZHM6OmZyb21Ib3Vycyhob3Vycyk7DQp9DQoNCmNvbnN0ZXhwciBT
ZWNvbmRzIG9wZXJhdG9yIiIgX3ModW5zaWduZWQgbG9uZyBsb25nIHNlY29uZHMpDQp7DQogICAg
cmV0dXJuIFNlY29uZHMoc2Vjb25kcyk7DQp9DQoNCmNvbnN0ZXhwciBTZWNvbmRzIG9wZXJhdG9y
IiIgX21zKHVuc2lnbmVkIGxvbmcgbG9uZyBtaWxsaXNlY29uZHMpDQp7DQogICAgcmV0dXJuIFNl
Y29uZHM6OmZyb21NaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzKTsNCn0NCg0KY29uc3RleHByIFNl
Y29uZHMgb3BlcmF0b3IiIiBfdXModW5zaWduZWQgbG9uZyBsb25nIG1pY3Jvc2Vjb25kcykNCnsN
CiAgICByZXR1cm4gU2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZHMpOw0KfQ0K
DQpjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvciIiIF9ucyh1bnNpZ25lZCBsb25nIGxvbmcgbmFu
b3NlY29uZHMpDQp7DQogICAgcmV0dXJuIFNlY29uZHM6OmZyb21OYW5vc2Vjb25kcyhuYW5vc2Vj
b25kcyk7DQp9DQoNCn0gDQoNCmlubGluZSBTZWNvbmRzIG9wZXJhdG9yKihkb3VibGUgc2NhbGFy
LCBTZWNvbmRzIHNlY29uZHMpDQp7DQogICAgcmV0dXJuIFNlY29uZHMoc2NhbGFyICogc2Vjb25k
cy52YWx1ZSgpKTsNCn0NCg0KaW5saW5lIFNlY29uZHMgb3BlcmF0b3IvKGRvdWJsZSBzY2FsYXIs
IFNlY29uZHMgc2Vjb25kcykNCnsNCiAgICByZXR1cm4gU2Vjb25kcyhzY2FsYXIgLyBzZWNvbmRz
LnZhbHVlKCkpOw0KfQ0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgU2Vjb25kcyk7DQoNCn0gDQoNCnVzaW5nIFdURjo6c2xlZXA7DQoN
Cm5hbWVzcGFjZSBzdGQgew0KDQppbmxpbmUgYm9vbCBpc25hbihXVEY6OlNlY29uZHMgc2Vjb25k
cykNCnsNCiAgICByZXR1cm4gc3RkOjppc25hbihzZWNvbmRzLnZhbHVlKCkpOw0KfQ0KDQppbmxp
bmUgYm9vbCBpc2luZihXVEY6OlNlY29uZHMgc2Vjb25kcykNCnsNCiAgICByZXR1cm4gc3RkOjpp
c2luZihzZWNvbmRzLnZhbHVlKCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc2Zpbml0ZShXVEY6OlNl
Y29uZHMgc2Vjb25kcykNCnsNCiAgICByZXR1cm4gc3RkOjppc2Zpbml0ZShzZWNvbmRzLnZhbHVl
KCkpOw0KfQ0KDQp9IA0KDQp1c2luZyBuYW1lc3BhY2UgV1RGOjpzZWNvbmRzX2xpdGVyYWxzOw0K
dXNpbmcgV1RGOjpTZWNvbmRzOw0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1dhbGxUaW1lLmgiDQoNCm5hbWVzcGFjZSBX
VEYgew0KDQpjbGFzcyBNb25vdG9uaWNUaW1lOw0KY2xhc3MgUHJpbnRTdHJlYW07DQoNCg0KDQoN
Cg0KDQpjbGFzcyBXYWxsVGltZSBmaW5hbCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNp
emUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVs
ZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkw
KTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJp
dmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9
IGludDsNCnB1YmxpYzoNCiAgICBzdGF0aWMgY29uc3RleHByIENsb2NrVHlwZSBjbG9ja1R5cGUg
PSBDbG9ja1R5cGU6OldhbGw7DQogICAgDQogICAgDQogICAgY29uc3RleHByIFdhbGxUaW1lKCkg
eyB9DQogICAgDQogICAgDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBXYWxsVGltZSBmcm9t
UmF3U2Vjb25kcyhkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAgICByZXR1cm4gV2FsbFRpbWUo
dmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFdh
bGxUaW1lIG5vdygpOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgaW5maW5p
dHkoKSB7IHJldHVybiBmcm9tUmF3U2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBXYWxsVGltZSBuYW4oKSB7IHJl
dHVybiBmcm9tUmF3U2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKTsgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBTZWNvbmRzIHNlY29uZHNTaW5jZUVwb2NoKCkg
Y29uc3QgeyByZXR1cm4gU2Vjb25kcyhtX3ZhbHVlKTsgfQ0KICAgIA0KICAgIFdhbGxUaW1lIGFw
cHJveGltYXRlV2FsbFRpbWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQ0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBNb25vdG9uaWNUaW1lIGFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpIGNv
bnN0Ow0KICAgIA0KICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gISFtX3ZhbHVlOyB9DQogICAgDQogICAgY29uc3RleHByIFdhbGxUaW1lIG9wZXJh
dG9yKyhTZWNvbmRzIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGZyb21SYXdT
ZWNvbmRzKG1fdmFsdWUgKyBvdGhlci52YWx1ZSgpKTsNCiAgICB9DQogICAgDQogICAgY29uc3Rl
eHByIFdhbGxUaW1lIG9wZXJhdG9yLShTZWNvbmRzIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGZyb21SYXdTZWNvbmRzKG1fdmFsdWUgLSBvdGhlci52YWx1ZSgpKTsNCiAgICB9
DQogICAgDQogICAgDQogICAgDQogICAgY29uc3RleHByIFdhbGxUaW1lIG9wZXJhdG9yLSgpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gZnJvbVJhd1NlY29uZHMoLW1fdmFsdWUpOw0KICAg
IH0NCiAgICANCiAgICBXYWxsVGltZSYgb3BlcmF0b3IrPShTZWNvbmRzIG90aGVyKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgKyBvdGhlcjsNCiAgICB9DQogICAgDQogICAg
V2FsbFRpbWUmIG9wZXJhdG9yLT0oU2Vjb25kcyBvdGhlcikNCiAgICB7DQogICAgICAgIHJldHVy
biAqdGhpcyA9ICp0aGlzIC0gb3RoZXI7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBTZWNv
bmRzIG9wZXJhdG9yLShXYWxsVGltZSBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVy
biBTZWNvbmRzKG1fdmFsdWUgLSBvdGhlci5tX3ZhbHVlKTsNCiAgICB9DQogICAgDQogICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShXYWxsVGltZSBvdGhlcikgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7DQogICAgfQ0KICAgIA0KICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oV2FsbFRpbWUgb3RoZXIpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gbV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlOw0KICAgIH0NCiAgICANCiAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoV2FsbFRpbWUgb3RoZXIpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gbV92YWx1ZSA8IG90aGVyLm1fdmFsdWU7DQogICAgfQ0KICAgIA0KICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPihXYWxsVGltZSBvdGhlcikgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiBtX3ZhbHVlID4gb3RoZXIubV92YWx1ZTsNCiAgICB9DQogICAgDQogICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8PShXYWxsVGltZSBvdGhlcikgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiBtX3ZhbHVlIDw9IG90aGVyLm1fdmFsdWU7DQogICAgfQ0KICAgIA0KICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oV2FsbFRpbWUgb3RoZXIpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gbV92YWx1ZSA+PSBvdGhlci5tX3ZhbHVlOw0KICAgIH0NCiAgICANCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7DQogICAg
DQogICAgV2FsbFRpbWUgaXNvbGF0ZWRDb3B5KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVy
biAqdGhpczsNCiAgICB9DQoNCiAgICBzdHJ1Y3QgTWFya2FibGVUcmFpdHM7DQoNCnByaXZhdGU6
DQogICAgY29uc3RleHByIFdhbGxUaW1lKGRvdWJsZSByYXdWYWx1ZSkNCiAgICAgICAgOiBtX3Zh
bHVlKHJhd1ZhbHVlKQ0KICAgIHsNCiAgICB9DQoNCiAgICBkb3VibGUgbV92YWx1ZSB7IDAgfTsN
Cn07DQoNCnN0cnVjdCBXYWxsVGltZTo6TWFya2FibGVUcmFpdHMgew0KICAgIHN0YXRpYyBib29s
IGlzRW1wdHlWYWx1ZShXYWxsVGltZSB0aW1lKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHN0ZDo6
aXNuYW4odGltZS5tX3ZhbHVlKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIFdhbGxU
aW1lIGVtcHR5VmFsdWUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFdhbGxUaW1lOjpuYW4oKTsN
CiAgICB9DQp9Ow0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzbGVlcChXYWxsVGltZSk7
DQoNCn0gDQoNCm5hbWVzcGFjZSBzdGQgew0KDQppbmxpbmUgYm9vbCBpc25hbihXVEY6OldhbGxU
aW1lIHRpbWUpDQp7DQogICAgcmV0dXJuIHN0ZDo6aXNuYW4odGltZS5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc2luZihXVEY6OldhbGxUaW1lIHRpbWUp
DQp7DQogICAgcmV0dXJuIHN0ZDo6aXNpbmYodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc2Zpbml0ZShXVEY6OldhbGxUaW1lIHRpbWUpDQp7DQog
ICAgcmV0dXJuIHN0ZDo6aXNmaW5pdGUodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
Ow0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6OldhbGxUaW1lOw0KI2xpbmUgMzggIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaCINCg0KDQoNCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiDQoNCm5hbWVzcGFjZSBX
VEYgew0KDQp1c2luZyBUaHJlYWRGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQqIGFyZ3VtZW50KTsN
Cg0KDQoNCg0KDQoNCiNsaW5lIDYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiDQp1c2luZyBUaHJl
YWRJZGVudGlmaWVyID0gdWludDMyX3Q7DQp1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IEhB
TkRMRTsNCnVzaW5nIFBsYXRmb3JtTXV0ZXggPSBTUldMT0NLOw0KdXNpbmcgUGxhdGZvcm1Db25k
aXRpb24gPSBDT05ESVRJT05fVkFSSUFCTEU7DQp1c2luZyBUaHJlYWRTcGVjaWZpY0tleSA9IERX
T1JEOw0KDQoNCiNsaW5lIDY5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiDQoNCmNsYXNzIE11dGV4
IGZpbmFsIHsNCiAgICBNdXRleChjb25zdCBNdXRleCYpID0gZGVsZXRlOyBNdXRleCYgb3BlcmF0
b3I9KGNvbnN0IE11dGV4JikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQp
MCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHBy
aXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8g
PSBpbnQ7DQpwdWJsaWM6DQogICAgY29uc3RleHByIE11dGV4KCkgPSBkZWZhdWx0Ow0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB+TXV0ZXgoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB2b2lkIGxvY2soKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCB0cnlMb2NrKCk7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgdW5sb2NrKCk7DQoNCiAgICBQbGF0Zm9y
bU11dGV4JiBpbXBsKCkgeyByZXR1cm4gbV9tdXRleDsgfQ0KDQpwcml2YXRlOg0KDQoNCiNsaW5l
IDg3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgiDQogICAgUGxhdGZvcm1NdXRleCBtX211dGV4ID0g
ezB9Ow0KI2xpbmUgODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCINCn07DQoNCnR5cGVkZWYgTG9j
a2VyPE11dGV4PiBNdXRleExvY2tlcjsNCg0KY2xhc3MgVGhyZWFkQ29uZGl0aW9uIGZpbmFsIHsN
CiAgICBUaHJlYWRDb25kaXRpb24oY29uc3QgVGhyZWFkQ29uZGl0aW9uJikgPSBkZWxldGU7IFRo
cmVhZENvbmRpdGlvbiYgb3BlcmF0b3I9KGNvbnN0IFRocmVhZENvbmRpdGlvbiYpID0gZGVsZXRl
OzsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVs
bFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNp
bmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIGNvbnN0
ZXhwciBUaHJlYWRDb25kaXRpb24oKSA9IGRlZmF1bHQ7DQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIH5UaHJlYWRDb25kaXRpb24oKTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCB3YWl0KE11dGV4JiBtdXRleCk7DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGJvb2wgdGltZWRXYWl0KE11dGV4JiwgV2FsbFRpbWUgYWJzb2x1dGVUaW1lKTsNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzaWduYWwoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgdm9pZCBicm9hZGNhc3QoKTsNCiAgICANCnByaXZhdGU6DQoNCg0KI2xpbmUgMTEwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJl
YWRpbmdQcmltaXRpdmVzLmgiDQogICAgUGxhdGZvcm1Db25kaXRpb24gbV9jb25kaXRpb24gPSB7
MH07DQojbGluZSAxMTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCINCn07DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmgiDQoNCn0gDQoNCnVzaW5nIFdURjo6TXV0ZXg7DQp1c2luZyBX
VEY6Ok11dGV4TG9ja2VyOw0KdXNpbmcgV1RGOjpUaHJlYWRDb25kaXRpb247DQojbGluZSAzNiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
TWFpblRocmVhZC5oIg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07DQpj
bGFzcyBUaHJlYWQ7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgaW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgY2FsbE9uTWFpblRocmVh
ZChGdW5jdGlvbjx2b2lkKCk+JiYpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgY2FsbE9u
TWFpblRocmVhZEFuZFdhaXQoRnVuY3Rpb248dm9pZCgpPiYmKTsNCg0KDQoNCg0KI2xpbmUgNTIg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L01haW5UaHJlYWQuaCINCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgaXNNYWluVGhyZWFk
KCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NU
aHJlYWRMb2NhbERhdGEoVGhyZWFkJik7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGlz
TWFpblJ1bkxvb3AoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGNhbGxPbk1haW5SdW5M
b29wKEZ1bmN0aW9uPHZvaWQoKT4mJik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBjYWxs
T25NYWluUnVuTG9vcEFuZFdhaXQoRnVuY3Rpb248dm9pZCgpPiYmKTsNCg0KDQoNCg0KDQoNCiNs
aW5lIDY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9NYWluVGhyZWFkLmgiDQppbmxpbmUgYm9vbCBpc1dlYlRocmVhZCgpIHsgcmV0dXJu
IGlzTWFpblRocmVhZCgpOyB9DQppbmxpbmUgYm9vbCBpc1VJVGhyZWFkKCkgeyByZXR1cm4gaXNN
YWluVGhyZWFkKCk7IH0NCiNsaW5lIDcwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9NYWluVGhyZWFkLmgiDQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKTsNCg0KDQp2b2lkIGluaXRpYWxp
emVNYWluVGhyZWFkUGxhdGZvcm0oKTsNCg0KfSANCg0KdXNpbmcgV1RGOjpjYWxsT25NYWluVGhy
ZWFkOw0KdXNpbmcgV1RGOjpjYWxsT25NYWluVGhyZWFkQW5kV2FpdDsNCnVzaW5nIFdURjo6Y2Fs
bE9uTWFpblJ1bkxvb3A7DQp1c2luZyBXVEY6OmNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdDsNCnVz
aW5nIFdURjo6Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YTsNCnVzaW5nIFdU
Rjo6aXNNYWluVGhyZWFkOw0KdXNpbmcgV1RGOjppc01haW5UaHJlYWRPckdDVGhyZWFkOw0KdXNp
bmcgV1RGOjppc1VJVGhyZWFkOw0KdXNpbmcgV1RGOjppc1dlYlRocmVhZDsNCg0KDQoNCiNsaW5l
IDkxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9NYWluVGhyZWFkLmgiDQoNCg0KDQojbGluZSA5NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWFpblRocmVhZC5oIg0KI2xpbmUg
MzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgiDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoN
Cg0KI2xpbmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgiDQoNCmNsYXNzIFRocmVhZFNhZmVS
ZWZDb3VudGVkQmFzZSB7DQogICAgVGhyZWFkU2FmZVJlZkNvdW50ZWRCYXNlKGNvbnN0IFRocmVh
ZFNhZmVSZWZDb3VudGVkQmFzZSYpID0gZGVsZXRlOyBUaHJlYWRTYWZlUmVmQ291bnRlZEJhc2Um
IG9wZXJhdG9yPShjb25zdCBUaHJlYWRTYWZlUmVmQ291bnRlZEJhc2UmKSA9IGRlbGV0ZTs7DQog
ICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9j
KHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcs
IHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdl
YmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3Jj
ZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBUaHJlYWRTYWZl
UmVmQ291bnRlZEJhc2UoKSA9IGRlZmF1bHQ7DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oIg0KDQogICAgdm9pZCByZWYoKSBjb25zdA0KICAgIHsNCg0KDQoj
bGluZSA2MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCINCiAgICAgICAgKyttX3JlZkNvdW50Ow0K
ICAgIH0NCg0KICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QNCiAgICB7DQoNCg0KI2xpbmUgNjgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmgiDQogICAgICAgIHJldHVybiByZWZDb3VudCgpID09IDE7
DQogICAgfQ0KDQogICAgdW5zaWduZWQgcmVmQ291bnQoKSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIG1fcmVmQ291bnQ7DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgDQogICAgYm9vbCBk
ZXJlZkJhc2UoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KDQoNCg0KI2xpbmUg
ODUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgiDQoNCiAgICAgICAgaWYgKCghLS1tX3JlZkNvdW50
KSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIG1fcmVmQ291bnQg
PSAxOw0KDQoNCiNsaW5lIDkzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oIg0KICAgICAgICAgICAg
cmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0K
DQpwcml2YXRlOg0KICAgIG11dGFibGUgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fcmVmQ291bnQg
eyAxIH07DQoNCg0KDQojbGluZSAxMDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmgiDQp9Ow0KDQpl
bnVtIGNsYXNzIERlc3RydWN0aW9uVGhyZWFkIHsgQW55LCBNYWluLCBNYWluUnVuTG9vcCB9Ow0K
DQp0ZW1wbGF0ZTxjbGFzcyBULCBEZXN0cnVjdGlvblRocmVhZCBkZXN0cnVjdGlvblRocmVhZCA9
IERlc3RydWN0aW9uVGhyZWFkOjpBbnk+IGNsYXNzIFRocmVhZFNhZmVSZWZDb3VudGVkIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkQmFzZSB7DQpwdWJsaWM6DQogICAgdm9pZCBkZXJlZigp
IGNvbnN0DQogICAgew0KICAgICAgICBpZiAoIWRlcmVmQmFzZSgpKQ0KICAgICAgICAgICAgcmV0
dXJuOw0KDQogICAgICAgIGF1dG8gZGVsZXRlVGhpcyA9IFt0aGlzXSB7DQogICAgICAgICAgICBk
ZWxldGUgc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KHRoaXMpOw0KICAgICAgICB9Ow0KICAgICAgICBz
d2l0Y2ggKGRlc3RydWN0aW9uVGhyZWFkKSB7DQogICAgICAgIGNhc2UgRGVzdHJ1Y3Rpb25UaHJl
YWQ6OkFueToNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIERlc3RydWN0aW9uVGhy
ZWFkOjpNYWluOg0KICAgICAgICAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgew0KICAgICAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVy
PihkZWxldGVUaGlzKSk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgRGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5S
dW5Mb29wOg0KICAgICAgICAgICAgaWYgKCFpc01haW5SdW5Mb29wKCkpIHsNCiAgICAgICAgICAg
ICAgICBjYWxsT25NYWluUnVuTG9vcChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+
KGRlbGV0ZVRoaXMpKTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBkZWxldGVUaGlzKCk7DQogICAg
fQ0KDQpwcm90ZWN0ZWQ6DQogICAgVGhyZWFkU2FmZVJlZkNvdW50ZWQoKSA9IGRlZmF1bHQ7DQp9
Ow0KDQp9IA0KDQp1c2luZyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkOw0KI2xpbmUgMzUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL01l
dGFBbGxvY2F0b3JIYW5kbGUuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIE1ldGFBbGxv
Y2F0b3I7DQpjbGFzcyBQcmludFN0cmVhbTsNCg0KdXNpbmcgTWV0YUFsbG9jYXRvckhhbmRsZU1h
bGxvYyA9IEZhc3RNYWxsb2M7DQpjbGFzcyBNZXRhQWxsb2NhdG9ySGFuZGxlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPE1ldGFBbGxvY2F0b3JIYW5kbGU+LCBwdWJsaWMgUmVkQmxhY2tU
cmVlPE1ldGFBbGxvY2F0b3JIYW5kbGUsIHZvaWQqPjo6Tm9kZSB7DQogICAgcHVibGljOiB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9u
KSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2Nl
ZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRl
clRoaXNNYWNybyA9IGludDsNCnByaXZhdGU6DQogICAgTWV0YUFsbG9jYXRvckhhbmRsZShNZXRh
QWxsb2NhdG9yJiwgdm9pZCogc3RhcnQsIHNpemVfdCBzaXplSW5CeXRlcyk7DQoNCnB1YmxpYzoN
CiAgICB1c2luZyBNZW1vcnlQdHIgPSBNZXRhQWxsb2NhdG9yUHRyPEhhbmRsZU1lbW9yeVB0clRh
Zz47DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgfk1ldGFBbGxvY2F0b3JIYW5kbGUoKTsN
Cg0KICAgIE1lbW9yeVB0ciBzdGFydCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9z
dGFydDsNCiAgICB9DQoNCiAgICBNZW1vcnlQdHIgZW5kKCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiBtX2VuZDsNCiAgICB9DQoNCiAgICB1aW50cHRyX3Qgc3RhcnRBc0ludGVnZXIoKSBj
b25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fc3RhcnQudW50YWdnZWRQdHI8dWludHB0cl90
PigpOw0KICAgIH0NCg0KICAgIHVpbnRwdHJfdCBlbmRBc0ludGVnZXIoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgcmV0dXJuIG1fZW5kLnVudGFnZ2VkUHRyPHVpbnRwdHJfdD4oKTsNCiAgICB9DQoN
CiAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1f
ZW5kLnVudGFnZ2VkUHRyPHNpemVfdD4oKSAtIG1fc3RhcnQudW50YWdnZWRQdHI8c2l6ZV90Pigp
Ow0KICAgIH0NCiAgICANCiAgICBib29sIGNvbnRhaW5zSW50ZWdlckFkZHJlc3ModWludHB0cl90
IGFkZHJlc3MpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gYWRkcmVzcyA+PSBzdGFydEFz
SW50ZWdlcigpICYmIGFkZHJlc3MgPCBlbmRBc0ludGVnZXIoKTsNCiAgICB9DQogICAgDQogICAg
Ym9vbCBjb250YWlucyh2b2lkKiBhZGRyZXNzKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IGNvbnRhaW5zSW50ZWdlckFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFkZHJl
c3MpKTsNCiAgICB9DQogICAgICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHNo
cmluayhzaXplX3QgbmV3U2l6ZUluQnl0ZXMpOw0KICAgIA0KICAgIE1ldGFBbGxvY2F0b3ImIGFs
bG9jYXRvcigpDQogICAgew0KICAgICAgICByZXR1cm4gbV9hbGxvY2F0b3I7DQogICAgfQ0KDQog
ICAgdm9pZCoga2V5KCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX3N0YXJ0LnVudGFnZ2VkUHRy
KCk7DQogICAgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdDsNCiAgICANCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIE1ldGFB
bGxvY2F0b3I7DQogICAgDQogICAgTWV0YUFsbG9jYXRvciYgbV9hbGxvY2F0b3I7DQogICAgTWVt
b3J5UHRyIG1fc3RhcnQ7DQogICAgTWVtb3J5UHRyIG1fZW5kOw0KfTsNCg0KfQ0KI2xpbmUgMzkg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxF
eGVjdXRhYmxlQWxsb2NhdG9yLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9NZXRhQWxsb2NhdG9yLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL0hhc2hNYXAuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcaXRlcmF0b3IiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1
ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0Nzkz
IDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1l
c3BhY2Ugc3RkIHsNCg0KdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+DQpjbGFzcyBiYWNrX2lu
c2VydF9pdGVyYXRvciB7IA0KcHVibGljOg0KICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0g
b3V0cHV0X2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IHZvaWQ7
DQogICAgdXNpbmcgcG9pbnRlciAgICAgICAgICAgPSB2b2lkOw0KICAgIHVzaW5nIHJlZmVyZW5j
ZSAgICAgICAgID0gdm9pZDsNCg0KICAgIHVzaW5nIGNvbnRhaW5lcl90eXBlID0gX0NvbnRhaW5l
cjsNCg0KDQoNCg0KDQoNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB2b2lkOw0KI2xpbmUg
NDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaXRl
cmF0b3IiDQoNCiAgICBpbmxpbmUgZXhwbGljaXQgYmFja19pbnNlcnRfaXRlcmF0b3IoX0NvbnRh
aW5lciYgX0NvbnQpIG5vZXhjZXB0IA0KICAgICAgICA6IGNvbnRhaW5lcig6OnN0ZDo6IGFkZHJl
c3NvZihfQ29udCkpIHt9DQoNCiAgICBpbmxpbmUgYmFja19pbnNlcnRfaXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfVmFsKSB7DQogICAg
ICAgIGNvbnRhaW5lci0+cHVzaF9iYWNrKF9WYWwpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KDQogICAgaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcj0odHlwZW5h
bWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYmIF9WYWwpIHsNCiAgICAgICAgY29udGFpbmVyLT5w
dXNoX2JhY2soOjpzdGQ6OiBtb3ZlKF9WYWwpKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVy
YXRvciooKSBub2V4Y2VwdCAgew0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAg
aW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgbm9leGNlcHQgIHsNCiAg
ICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIGlubGluZSBiYWNrX2luc2VydF9pdGVy
YXRvciBvcGVyYXRvcisrKGludCkgbm9leGNlcHQgIHsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0K
ICAgIH0NCg0KcHJvdGVjdGVkOg0KICAgIF9Db250YWluZXIqIGNvbnRhaW5lciA9IG51bGxwdHI7
DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPg0KW1tub2Rpc2NhcmRdXSBpbmxp
bmUgYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gYmFja19pbnNlcnRlcihfQ29udGFp
bmVyJiBfQ29udCkgbm9leGNlcHQgIHsNCiAgICANCiAgICByZXR1cm4gYmFja19pbnNlcnRfaXRl
cmF0b3I8X0NvbnRhaW5lcj4oX0NvbnQpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFp
bmVyPg0KY2xhc3MgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yIHsgDQpwdWJsaWM6DQogICAgdXNpbmcg
aXRlcmF0b3JfY2F0ZWdvcnkgPSBvdXRwdXRfaXRlcmF0b3JfdGFnOw0KICAgIHVzaW5nIHZhbHVl
X3R5cGUgICAgICAgID0gdm9pZDsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICA9IHZvaWQ7
DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgPSB2b2lkOw0KDQogICAgdXNpbmcgY29udGFp
bmVyX3R5cGUgPSBfQ29udGFpbmVyOw0KDQoNCg0KDQoNCg0KICAgIHVzaW5nIGRpZmZlcmVuY2Vf
dHlwZSA9IHZvaWQ7DQojbGluZSA5NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCg0KICAgIGlubGluZSBleHBsaWNpdCBmcm9udF9p
bnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX0NvbnQpIDogY29udGFpbmVyKDo6c3RkOjogYWRk
cmVzc29mKF9Db250KSkge30NCg0KICAgIGlubGluZSBmcm9udF9pbnNlcnRfaXRlcmF0b3ImIG9w
ZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfVmFsKSB7DQog
ICAgICAgIA0KICAgICAgICBjb250YWluZXItPnB1c2hfZnJvbnQoX1ZhbCk7DQogICAgICAgIHJl
dHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBpbmxpbmUgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yJiBv
cGVyYXRvcj0odHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYmIF9WYWwpIHsgDQogICAg
ICAgIGNvbnRhaW5lci0+cHVzaF9mcm9udCg6OnN0ZDo6IG1vdmUoX1ZhbCkpOw0KICAgICAgICBy
ZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpbmxpbmUgZnJvbnRfaW5z
ZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSB7IA0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAg
fQ0KDQogICAgaW5saW5lIGZyb250X2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgDQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBpbmxpbmUgZnJvbnRfaW5zZXJ0X2l0
ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7IA0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0K
DQpwcm90ZWN0ZWQ6DQogICAgX0NvbnRhaW5lciogY29udGFpbmVyID0gbnVsbHB0cjsNCn07DQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBmcm9u
dF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gZnJvbnRfaW5zZXJ0ZXIoX0NvbnRhaW5lciYg
X0NvbnQpIHsNCiAgICByZXR1cm4gZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9D
b250KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4NCmNsYXNzIGluc2VydF9p
dGVyYXRvciB7IA0KcHVibGljOg0KICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gb3V0cHV0
X2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IHZvaWQ7DQogICAg
dXNpbmcgcG9pbnRlciAgICAgICAgICAgPSB2b2lkOw0KICAgIHVzaW5nIHJlZmVyZW5jZSAgICAg
ICAgID0gdm9pZDsNCg0KICAgIHVzaW5nIGNvbnRhaW5lcl90eXBlID0gX0NvbnRhaW5lcjsNCg0K
DQoNCg0KDQoNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB2b2lkOw0KI2xpbmUgMTQ5ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGl0ZXJhdG9y
Ig0KDQogICAgaW5saW5lIGluc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfQ29udCwgdHlwZW5h
bWUgX0NvbnRhaW5lcjo6aXRlcmF0b3IgX1doZXJlKQ0KICAgICAgICA6IGNvbnRhaW5lcig6OnN0
ZDo6IGFkZHJlc3NvZihfQ29udCkpLCBpdGVyKF9XaGVyZSkge30NCg0KICAgIGlubGluZSBpbnNl
cnRfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90
eXBlJiBfVmFsKSB7DQogICAgICAgIA0KICAgICAgICBpdGVyID0gY29udGFpbmVyLT5pbnNlcnQo
aXRlciwgX1ZhbCk7DQogICAgICAgICsraXRlcjsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIGlubGluZSBpbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yPSh0eXBlbmFtZSBfQ29u
dGFpbmVyOjp2YWx1ZV90eXBlJiYgX1ZhbCkgeyANCiAgICAgICAgaXRlciA9IGNvbnRhaW5lci0+
aW5zZXJ0KGl0ZXIsIDo6c3RkOjogbW92ZShfVmFsKSk7DQogICAgICAgICsraXRlcjsNCiAgICAg
ICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaW5saW5lIGluc2Vy
dF9pdGVyYXRvciYgb3BlcmF0b3IqKCkgeyANCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0N
Cg0KICAgIGlubGluZSBpbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IA0KICAgICAgICBy
ZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgaW5saW5lIGluc2VydF9pdGVyYXRvciYgb3BlcmF0
b3IrKyhpbnQpIHsgDQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCnByb3RlY3RlZDoN
CiAgICBfQ29udGFpbmVyKiBjb250YWluZXIgPSBudWxscHRyOw0KICAgIHR5cGVuYW1lIF9Db250
YWluZXI6Oml0ZXJhdG9yIGl0ZXJ7fTsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9Db250YWlu
ZXI+DQpbW25vZGlzY2FyZF1dIGlubGluZSBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gaW5z
ZXJ0ZXIoX0NvbnRhaW5lciYgX0NvbnQsIHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9X
aGVyZSkgew0KICAgIHJldHVybiBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX0NvbnQsIF9X
aGVyZSk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwg
Y2xhc3MgX0VsZW0gPSBjaGFyLCBjbGFzcyBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0VsZW0+LCBj
bGFzcyBfRGlmZiA9IHB0cmRpZmZfdD4NCmNsYXNzIGlzdHJlYW1faXRlcmF0b3IgeyANCnB1Ymxp
YzoNCiAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IGlucHV0X2l0ZXJhdG9yX3RhZzsNCiAg
ICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IF9UeTsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5
cGUgICA9IF9EaWZmOw0KICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgID0gY29uc3QgX1R5KjsN
CiAgICB1c2luZyByZWZlcmVuY2UgICAgICAgICA9IGNvbnN0IF9UeSY7DQoNCiAgICB1c2luZyBj
aGFyX3R5cGUgICAgPSBfRWxlbTsNCiAgICB1c2luZyB0cmFpdHNfdHlwZSAgPSBfVHJhaXRzOw0K
ICAgIHVzaW5nIGlzdHJlYW1fdHlwZSA9IGJhc2ljX2lzdHJlYW08X0VsZW0sIF9UcmFpdHM+Ow0K
DQogICAgc3RhdGljX2Fzc2VydChjb25qdW5jdGlvbl92PGlzX2RlZmF1bHRfY29uc3RydWN0aWJs
ZTxfVHk+LCBpc19jb3B5X2NvbnN0cnVjdGlibGU8X1R5PiwgaXNfY29weV9hc3NpZ25hYmxlPF9U
eT4+LA0KICAgICAgICAiaXN0cmVhbV9pdGVyYXRvcjxUPiByZXF1aXJlcyBUIHRvIGJlIGRlZmF1
bHQgY29uc3RydWN0aWJsZSwgY29weSBjb25zdHJ1Y3RpYmxlLCBhbmQgY29weSBhc3NpZ25hYmxl
LiAiDQogICAgICAgICIoTjQ4MzUgW2lzdHJlYW0uaXRlcmF0b3JdLzIpIik7DQoNCiAgICBjb25z
dGV4cHIgaXN0cmVhbV9pdGVyYXRvcigpIHt9DQoNCiAgICBpc3RyZWFtX2l0ZXJhdG9yKGlzdHJl
YW1fdHlwZSYgX0lzdHIpIDogX015aXN0cig6OnN0ZDo6IGFkZHJlc3NvZihfSXN0cikpIHsNCiAg
ICAgICAgX0dldHZhbCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3QgX1R5JiBv
cGVyYXRvciooKSBjb25zdCB7DQogICAgICAgIDsNCiAgICAgICAgcmV0dXJuIF9NeXZhbDsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0IF9UeSogb3BlcmF0b3ItPigpIGNvbnN0IHsN
CiAgICAgICAgOw0KICAgICAgICByZXR1cm4gOjpzdGQ6OiBhZGRyZXNzb2YoX015dmFsKTsNCiAg
ICB9DQoNCiAgICBpc3RyZWFtX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgew0KICAgICAgICBfR2V0
dmFsKCk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBpc3RyZWFtX2l0ZXJh
dG9yIG9wZXJhdG9yKysoaW50KSB7DQogICAgICAgIGlzdHJlYW1faXRlcmF0b3IgX1RtcCA9ICp0
aGlzOw0KICAgICAgICBfR2V0dmFsKCk7DQogICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0NCg0K
ICAgIGJvb2wgX0VxdWFsKGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgew0K
ICAgICAgICByZXR1cm4gX015aXN0ciA9PSBfUmlnaHQuX015aXN0cjsNCiAgICB9DQoNCnByaXZh
dGU6DQogICAgdm9pZCBfR2V0dmFsKCkgeyANCiAgICAgICAgOw0KICAgICAgICBpZiAoISgqX015
aXN0ciA+PiBfTXl2YWwpKSB7DQogICAgICAgICAgICBfTXlpc3RyID0gbnVsbHB0cjsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIGlzdHJlYW1fdHlwZSogX015aXN0cntudWxscHRyfTsgDQogICAg
X1R5IF9NeXZhbHt9OyANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9FbGVtLCBj
bGFzcyBfVHJhaXRzLCBjbGFzcyBfRGlmZj4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj09
KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1R5LCBfRWxlbSwgX1RyYWl0cywgX0RpZmY+JiBfTGVm
dCwNCiAgICBjb25zdCBpc3RyZWFtX2l0ZXJhdG9yPF9UeSwgX0VsZW0sIF9UcmFpdHMsIF9EaWZm
PiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuIF9MZWZ0Ll9FcXVhbChfUmlnaHQpOw0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0RpZmY+
DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpc3RyZWFtX2l0ZXJhdG9yPF9U
eSwgX0VsZW0sIF9UcmFpdHMsIF9EaWZmPiYgX0xlZnQsDQogICAgY29uc3QgaXN0cmVhbV9pdGVy
YXRvcjxfVHksIF9FbGVtLCBfVHJhaXRzLCBfRGlmZj4mIF9SaWdodCkgew0KICAgIHJldHVybiAh
KF9MZWZ0ID09IF9SaWdodCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX0Vs
ZW0gPSBjaGFyLCBjbGFzcyBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0VsZW0+Pg0KY2xhc3Mgb3N0
cmVhbV9pdGVyYXRvciB7IA0KcHVibGljOg0KICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0g
b3V0cHV0X2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IHZvaWQ7
DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgPSB2b2lkOw0KICAgIHVzaW5nIHBvaW50ZXIg
ICAgICAgICAgID0gdm9pZDsNCiAgICB1c2luZyByZWZlcmVuY2UgICAgICAgICA9IHZvaWQ7DQoN
CiAgICB1c2luZyBjaGFyX3R5cGUgICAgPSBfRWxlbTsNCiAgICB1c2luZyB0cmFpdHNfdHlwZSAg
PSBfVHJhaXRzOw0KICAgIHVzaW5nIG9zdHJlYW1fdHlwZSA9IGJhc2ljX29zdHJlYW08X0VsZW0s
IF9UcmFpdHM+Ow0KDQogICAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFtX3R5cGUmIF9Pc3RyLCBj
b25zdCBfRWxlbSogY29uc3QgX0RlbGltID0gbnVsbHB0cikNCiAgICAgICAgOiBfTXlkZWxpbShf
RGVsaW0pLCBfTXlvc3RyKDo6c3RkOjogYWRkcmVzc29mKF9Pc3RyKSkge30NCg0KICAgIG9zdHJl
YW1faXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBfVHkmIF9WYWwpIHsgDQogICAgICAgICpfTXlv
c3RyIDw8IF9WYWw7DQogICAgICAgIGlmIChfTXlkZWxpbSkgew0KICAgICAgICAgICAgKl9NeW9z
dHIgPDwgX015ZGVsaW07DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBvc3RyZWFtX2l0ZXJhdG9yJiBvcGVyYXRvciooKSB7IA0K
ICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgb3N0cmVhbV9pdGVyYXRvciYgb3Bl
cmF0b3IrKygpIHsgDQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBvc3RyZWFt
X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyANCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KcHJvdGVjdGVkOg0KICAgIGNvbnN0IF9FbGVtKiBfTXlkZWxpbTsgDQogICAgb3N0cmVh
bV90eXBlKiBfTXlvc3RyOyANCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBf
VHJhaXRzPg0KY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvciB7IA0KcHVibGljOg0KICAgIHVzaW5n
IGl0ZXJhdG9yX2NhdGVnb3J5ID0gaW5wdXRfaXRlcmF0b3JfdGFnOw0KICAgIHVzaW5nIHZhbHVl
X3R5cGUgICAgICAgID0gX0VsZW07DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgPSB0eXBl
bmFtZSBfVHJhaXRzOjpvZmZfdHlwZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICA9IGNv
bnN0IF9FbGVtKjsNCiAgICB1c2luZyByZWZlcmVuY2UgICAgICAgICA9IF9FbGVtOw0KDQogICAg
dXNpbmcgY2hhcl90eXBlICAgICAgPSBfRWxlbTsNCiAgICB1c2luZyB0cmFpdHNfdHlwZSAgICA9
IF9UcmFpdHM7DQogICAgdXNpbmcgc3RyZWFtYnVmX3R5cGUgPSBiYXNpY19zdHJlYW1idWY8X0Vs
ZW0sIF9UcmFpdHM+Ow0KICAgIHVzaW5nIGlzdHJlYW1fdHlwZSAgID0gYmFzaWNfaXN0cmVhbTxf
RWxlbSwgX1RyYWl0cz47DQoNCiAgICB1c2luZyBpbnRfdHlwZSA9IHR5cGVuYW1lIHRyYWl0c190
eXBlOjppbnRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBpc3RyZWFtYnVmX2l0ZXJhdG9yKCkgbm9l
eGNlcHQgOiBfU3RyYnVmKG51bGxwdHIpLCBfR290KHRydWUpLCBfVmFsKCkge30NCg0KICAgIGlz
dHJlYW1idWZfaXRlcmF0b3Ioc3RyZWFtYnVmX3R5cGUqIF9TYikgbm9leGNlcHQgOiBfU3RyYnVm
KF9TYiksIF9Hb3QoIV9TYiksIF9WYWwoKSB7fQ0KDQogICAgaXN0cmVhbWJ1Zl9pdGVyYXRvcihp
c3RyZWFtX3R5cGUmIF9Jc3RyKSBub2V4Y2VwdCA6IF9TdHJidWYoX0lzdHIucmRidWYoKSksIF9H
b3QoIV9TdHJidWYpLCBfVmFsKCkge30NCg0KcHJpdmF0ZToNCiAgICBjbGFzcyBfSXN0cmVhbWJ1
Zl9wcm94eSB7DQogICAgcHVibGljOg0KICAgICAgICBbW25vZGlzY2FyZF1dIF9FbGVtIG9wZXJh
dG9yKigpIGNvbnN0IHsNCiAgICAgICAgICAgIHJldHVybiBfS2VlcDsNCiAgICAgICAgfQ0KDQog
ICAgcHJpdmF0ZToNCiAgICAgICAgZnJpZW5kIGlzdHJlYW1idWZfaXRlcmF0b3I7DQogICAgICAg
IF9Jc3RyZWFtYnVmX3Byb3h5KHN0cmVhbWJ1Zl90eXBlKiBfU3RyYnVmXywgX0VsZW0gX0tlZXBf
KSA6IF9TdHJidWYoX1N0cmJ1Zl8pLCBfS2VlcChfS2VlcF8pIHt9DQoNCiAgICAgICAgc3RyZWFt
YnVmX3R5cGUqIF9TdHJidWY7DQogICAgICAgIF9FbGVtIF9LZWVwOw0KICAgIH07DQoNCnB1Ymxp
YzoNCiAgICBpc3RyZWFtYnVmX2l0ZXJhdG9yKGNvbnN0IF9Jc3RyZWFtYnVmX3Byb3h5JiBfUHgp
IG5vZXhjZXB0IDogX1N0cmJ1ZihfUHguX1N0cmJ1ZiksIF9Hb3QoIV9TdHJidWYpLCBfVmFsKCkg
e30NCg0KICAgIFtbbm9kaXNjYXJkXV0gX0VsZW0gb3BlcmF0b3IqKCkgY29uc3Qgew0KICAgICAg
ICBpZiAoIV9Hb3QpIHsNCiAgICAgICAgICAgIF9QZWVrKCk7DQogICAgICAgIH0NCg0KDQoNCiNs
aW5lIDM5MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxpdGVyYXRvciINCg0KICAgICAgICByZXR1cm4gX1ZhbDsNCiAgICB9DQoNCiAgICBpc3RyZWFt
YnVmX2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgew0KDQoNCiNsaW5lIDQwMSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCg0KICAgICAg
ICBfSW5jKCk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBfSXN0cmVhbWJ1
Zl9wcm94eSBvcGVyYXRvcisrKGludCkgew0KICAgICAgICBpZiAoIV9Hb3QpIHsNCiAgICAgICAg
ICAgIF9QZWVrKCk7DQogICAgICAgIH0NCg0KICAgICAgICBfSXN0cmVhbWJ1Zl9wcm94eSBfVG1w
e19TdHJidWYsIF9WYWx9Ow0KICAgICAgICArKyp0aGlzOw0KICAgICAgICByZXR1cm4gX1RtcDsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgZXF1YWwoY29uc3QgaXN0cmVhbWJ1Zl9p
dGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIGlmICghX0dvdCkgew0KICAgICAgICAg
ICAgX1BlZWsoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghX1JpZ2h0Ll9Hb3QpIHsNCiAg
ICAgICAgICAgIF9SaWdodC5fUGVlaygpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICgh
X1N0cmJ1ZiAmJiAhX1JpZ2h0Ll9TdHJidWYpIHx8IChfU3RyYnVmICYmIF9SaWdodC5fU3RyYnVm
KTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdm9pZCBfSW5jKCkgeyANCiAgICAgICAgaWYgKCFf
U3RyYnVmIHx8IHRyYWl0c190eXBlOjplcV9pbnRfdHlwZSh0cmFpdHNfdHlwZTo6ZW9mKCksIF9T
dHJidWYtPnNidW1wYygpKSkgew0KICAgICAgICAgICAgX1N0cmJ1ZiA9IG51bGxwdHI7DQogICAg
ICAgICAgICBfR290ICAgID0gdHJ1ZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9H
b3QgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIF9FbGVtIF9QZWVrKCkgY29uc3Qg
eyANCiAgICAgICAgaW50X3R5cGUgX01ldGE7DQogICAgICAgIGlmICghX1N0cmJ1ZiB8fCB0cmFp
dHNfdHlwZTo6ZXFfaW50X3R5cGUodHJhaXRzX3R5cGU6OmVvZigpLCBfTWV0YSA9IF9TdHJidWYt
PnNnZXRjKCkpKSB7DQogICAgICAgICAgICBfU3RyYnVmID0gbnVsbHB0cjsNCiAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgIF9WYWwgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKF9NZXRh
KTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9Hb3QgPSB0cnVlOw0KICAgICAgICByZXR1cm4gX1Zh
bDsNCiAgICB9DQoNCiAgICBtdXRhYmxlIHN0cmVhbWJ1Zl90eXBlKiBfU3RyYnVmOyANCiAgICBt
dXRhYmxlIGJvb2wgX0dvdDsgDQogICAgbXV0YWJsZSBfRWxlbSBfVmFsOyANCn07DQoNCnRlbXBs
YXRlIDxjbGFzcyBfRWxlbSwgY2xhc3MgX1RyYWl0cz4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVy
YXRvcj09KA0KICAgIGNvbnN0IGlzdHJlYW1idWZfaXRlcmF0b3I8X0VsZW0sIF9UcmFpdHM+JiBf
TGVmdCwgY29uc3QgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfRWxlbSwgX1RyYWl0cz4mIF9SaWdodCkg
ew0KICAgIHJldHVybiBfTGVmdC5lcXVhbChfUmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0VsZW0sIGNsYXNzIF9UcmFpdHM+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3IhPSgNCiAg
ICBjb25zdCBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9FbGVtLCBfVHJhaXRzPiYgX0xlZnQsIGNvbnN0
IGlzdHJlYW1idWZfaXRlcmF0b3I8X0VsZW0sIF9UcmFpdHM+JiBfUmlnaHQpIHsNCiAgICByZXR1
cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRWxlbSwgY2xh
c3MgX1RyYWl0cz4NCmNsYXNzIG9zdHJlYW1idWZfaXRlcmF0b3IgeyANCnB1YmxpYzoNCiAgICB1
c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IG91dHB1dF9pdGVyYXRvcl90YWc7DQogICAgdXNpbmcg
dmFsdWVfdHlwZSAgICAgICAgPSB2b2lkOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgID0g
dm9pZDsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICA9IHZvaWQ7DQogICAgdXNpbmcgcmVm
ZXJlbmNlICAgICAgICAgPSB2b2lkOw0KDQogICAgdXNpbmcgY2hhcl90eXBlICAgICAgPSBfRWxl
bTsNCiAgICB1c2luZyB0cmFpdHNfdHlwZSAgICA9IF9UcmFpdHM7DQogICAgdXNpbmcgc3RyZWFt
YnVmX3R5cGUgPSBiYXNpY19zdHJlYW1idWY8X0VsZW0sIF9UcmFpdHM+Ow0KICAgIHVzaW5nIG9z
dHJlYW1fdHlwZSAgID0gYmFzaWNfb3N0cmVhbTxfRWxlbSwgX1RyYWl0cz47DQoNCiAgICBvc3Ry
ZWFtYnVmX2l0ZXJhdG9yKHN0cmVhbWJ1Zl90eXBlKiBfU2IpIG5vZXhjZXB0IDogX0ZhaWxlZChm
YWxzZSksIF9TdHJidWYoX1NiKSB7fQ0KDQogICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcihvc3RyZWFt
X3R5cGUmIF9Pc3RyKSBub2V4Y2VwdCA6IF9GYWlsZWQoZmFsc2UpLCBfU3RyYnVmKF9Pc3RyLnJk
YnVmKCkpIHt9DQoNCiAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yJiBvcGVyYXRvcj0oX0VsZW0gX1Jp
Z2h0KSB7IA0KICAgICAgICBpZiAoIV9TdHJidWYgfHwgdHJhaXRzX3R5cGU6OmVxX2ludF90eXBl
KF9UcmFpdHM6OmVvZigpLCBfU3RyYnVmLT5zcHV0YyhfUmlnaHQpKSkgew0KICAgICAgICAgICAg
X0ZhaWxlZCA9IHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBvc3RyZWFtYnVmX2l0ZXJhdG9yJiBvcGVyYXRvciooKSB7
IA0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgb3N0cmVhbWJ1Zl9pdGVyYXRv
ciYgb3BlcmF0b3IrKygpIHsgDQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBv
c3RyZWFtYnVmX2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyANCiAgICAgICAgcmV0dXJuICp0
aGlzOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBmYWlsZWQoKSBjb25zdCBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiBfRmFpbGVkOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBi
b29sIF9GYWlsZWQ7IA0KICAgIHN0cmVhbWJ1Zl90eXBlKiBfU3RyYnVmOyANCn07DQp9DQoNCm5h
bWVzcGFjZSBzdGRleHQgew0KdXNpbmcgOjpzdGQ6OiBpdGVyYXRvcl90cmFpdHM7DQp1c2luZyA6
OnN0ZDo6IHNpemVfdDsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1B0cj4NCmNsYXNzIGNoZWNrZWRf
YXJyYXlfaXRlcmF0b3IgeyANCiAgICBzdGF0aWNfYXNzZXJ0KDo6c3RkOjogaXNfcG9pbnRlcl92
PF9QdHI+LCAiY2hlY2tlZF9hcnJheV9pdGVyYXRvciByZXF1aXJlcyBwb2ludGVycyIpOw0KDQpw
dWJsaWM6DQogICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X1B0cj46Oml0ZXJhdG9yX2NhdGVnb3J5Ow0KICAgIHVzaW5nIHZhbHVlX3R5cGUgICAg
ICAgID0gdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9QdHI+Ojp2YWx1ZV90eXBlOw0KICAgIHVz
aW5nIGRpZmZlcmVuY2VfdHlwZSAgID0gdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9QdHI+Ojpk
aWZmZXJlbmNlX3R5cGU7DQogICAgdXNpbmcgcG9pbnRlciAgICAgICAgICAgPSB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X1B0cj46OnBvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAg
ICAgPSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1B0cj46OnJlZmVyZW5jZTsNCg0KICAgIGNv
bnN0ZXhwciBjaGVja2VkX2FycmF5X2l0ZXJhdG9yKCkgbm9leGNlcHQgOiBfTXlhcnJheShudWxs
cHRyKSwgX015c2l6ZSgwKSwgX015aW5kZXgoMCkge30NCg0KICAgIGNvbnN0ZXhwciBjaGVja2Vk
X2FycmF5X2l0ZXJhdG9yKGNvbnN0IF9QdHIgX0FycmF5LCBjb25zdCBzaXplX3QgX1NpemUsIGNv
bnN0IHNpemVfdCBfSW5kZXggPSAwKSBub2V4Y2VwdA0KICAgICAgICA6IF9NeWFycmF5KF9BcnJh
eSksIF9NeXNpemUoX1NpemUpLCBfTXlpbmRleChfSW5kZXgpIHsNCiAgICAgICAgZG8geyBpZiAo
X0luZGV4IDw9IF9TaXplKSB7IH0gZWxzZSB7IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFtZXRlcl9u
b2luZm9fbm9yZXR1cm4oKTsgfSB3aGlsZSAoZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFsc2UpOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIF9QdHIgYmFzZSgpIGNvbnN0IG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeWFycmF5ICsgX015aW5kZXg7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuICpvcGVyYXRvci0+KCk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3Qgbm9leGNlcHQg
ew0KICAgICAgICBkbyB7IGlmIChfTXlhcnJheSkgeyB9IGVsc2UgeyBkbyB7IDsgOjpfaW52YWxp
ZF9wYXJhbWV0ZXJfbm9pbmZvX25vcmV0dXJuKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSA7IH0gd2hp
bGUgKGZhbHNlKTsNCiAgICAgICAgZG8geyBpZiAoX015aW5kZXggPCBfTXlzaXplKSB7IH0gZWxz
ZSB7IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFtZXRlcl9ub2luZm9fbm9yZXR1cm4oKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1cm4gX015YXJyYXkg
KyBfTXlpbmRleDsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgY2hlY2tlZF9hcnJheV9pdGVyYXRv
ciYgb3BlcmF0b3IrKygpIG5vZXhjZXB0IHsNCiAgICAgICAgZG8geyBpZiAoX015YXJyYXkpIHsg
fSBlbHNlIHsgZG8geyA7IDo6X2ludmFsaWRfcGFyYW1ldGVyX25vaW5mb19ub3JldHVybigpOyB9
IHdoaWxlIChmYWxzZSk7IH0gOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIGRvIHsgaWYgKF9N
eWluZGV4IDwgX015c2l6ZSkgeyB9IGVsc2UgeyBkbyB7IDsgOjpfaW52YWxpZF9wYXJhbWV0ZXJf
bm9pbmZvX25vcmV0dXJuKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSA7IH0gd2hpbGUgKGZhbHNlKTsN
CiAgICAgICAgKytfTXlpbmRleDsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAg
IGNvbnN0ZXhwciBjaGVja2VkX2FycmF5X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSBub2V4Y2Vw
dCB7DQogICAgICAgIGNoZWNrZWRfYXJyYXlfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAgICAg
ICArKyp0aGlzOw0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIg
Y2hlY2tlZF9hcnJheV9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIG5vZXhjZXB0IHsNCiAgICAgICAg
ZG8geyBpZiAoX015YXJyYXkpIHsgfSBlbHNlIHsgZG8geyA7IDo6X2ludmFsaWRfcGFyYW1ldGVy
X25vaW5mb19ub3JldHVybigpOyB9IHdoaWxlIChmYWxzZSk7IH0gOyB9IHdoaWxlIChmYWxzZSk7
DQogICAgICAgIGRvIHsgaWYgKF9NeWluZGV4ICE9IDApIHsgfSBlbHNlIHsgZG8geyA7IDo6X2lu
dmFsaWRfcGFyYW1ldGVyX25vaW5mb19ub3JldHVybigpOyB9IHdoaWxlIChmYWxzZSk7IH0gOyB9
IHdoaWxlIChmYWxzZSk7DQogICAgICAgIC0tX015aW5kZXg7DQogICAgICAgIHJldHVybiAqdGhp
czsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgY2hlY2tlZF9hcnJheV9pdGVyYXRvciBvcGVyYXRv
ci0tKGludCkgbm9leGNlcHQgew0KICAgICAgICBjaGVja2VkX2FycmF5X2l0ZXJhdG9yIF9UbXAg
PSAqdGhpczsNCiAgICAgICAgLS0qdGhpczsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0K
DQogICAgY29uc3RleHByIGNoZWNrZWRfYXJyYXlfaXRlcmF0b3ImIG9wZXJhdG9yKz0oY29uc3Qg
ZGlmZmVyZW5jZV90eXBlIF9PZmYpIG5vZXhjZXB0IHsNCiAgICAgICAgaWYgKF9PZmYgIT0gMCkg
ew0KICAgICAgICAgICAgZG8geyBpZiAoX015YXJyYXkpIHsgfSBlbHNlIHsgZG8geyA7IDo6X2lu
dmFsaWRfcGFyYW1ldGVyX25vaW5mb19ub3JldHVybigpOyB9IHdoaWxlIChmYWxzZSk7IH0gOyB9
IHdoaWxlIChmYWxzZSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoX09mZiA8IDApIHsNCiAg
ICAgICAgICAgIGRvIHsgaWYgKF9NeWluZGV4ID49IHNpemVfdHswfSAtIHN0YXRpY19jYXN0PHNp
emVfdD4oX09mZikpIHsgfSBlbHNlIHsgZG8geyA7IDo6X2ludmFsaWRfcGFyYW1ldGVyX25vaW5m
b19ub3JldHVybigpOyB9IHdoaWxlIChmYWxzZSk7IH0gOyB9IHdoaWxlIChmYWxzZSk7DQojbGlu
ZSA1ODcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
aXRlcmF0b3IiDQogICAgICAgIH0NCg0KICAgICAgICBpZiAoX09mZiA+IDApIHsNCiAgICAgICAg
ICAgIGRvIHsgaWYgKF9NeXNpemUgLSBfTXlpbmRleCA+PSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9P
ZmYpKSB7IH0gZWxzZSB7IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFtZXRlcl9ub2luZm9fbm9yZXR1
cm4oKTsgfSB3aGlsZSAoZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFsc2UpOw0KI2xpbmUgNTkyICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGl0ZXJhdG9y
Ig0KICAgICAgICB9DQoNCiAgICAgICAgX015aW5kZXggKz0gX09mZjsNCiAgICAgICAgcmV0dXJu
ICp0aGlzOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNoZWNrZWRfYXJy
YXlfaXRlcmF0b3Igb3BlcmF0b3IrKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCBu
b2V4Y2VwdCB7DQogICAgICAgIGNoZWNrZWRfYXJyYXlfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0K
ICAgICAgICBfVG1wICs9IF9PZmY7DQogICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0NCg0KDQog
ICAgW1tub2Rpc2NhcmRdXQ0KI2xpbmUgNjA3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGl0ZXJhdG9yIg0KICAgIGZyaWVuZCBjb25zdGV4cHIgY2hl
Y2tlZF9hcnJheV9pdGVyYXRvciBvcGVyYXRvcisoDQogICAgICAgIGNvbnN0IGRpZmZlcmVuY2Vf
dHlwZSBfT2ZmLCBjb25zdCBjaGVja2VkX2FycmF5X2l0ZXJhdG9yPF9QdHI+JiBfTmV4dCkgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gX05leHQgKyBfT2ZmOw0KICAgIH0NCg0KICAgIGNvbnN0
ZXhwciBjaGVja2VkX2FycmF5X2l0ZXJhdG9yJiBvcGVyYXRvci09KGNvbnN0IGRpZmZlcmVuY2Vf
dHlwZSBfT2ZmKSBub2V4Y2VwdCB7DQogICAgICAgIGlmIChfT2ZmICE9IDApIHsNCiAgICAgICAg
ICAgIGRvIHsgaWYgKF9NeWFycmF5KSB7IH0gZWxzZSB7IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFt
ZXRlcl9ub2luZm9fbm9yZXR1cm4oKTsgfSB3aGlsZSAoZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFs
c2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9PZmYgPiAwKSB7DQogICAgICAgICAgICBk
byB7IGlmIChfTXlpbmRleCA+PSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9PZmYpKSB7IH0gZWxzZSB7
IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFtZXRlcl9ub2luZm9fbm9yZXR1cm4oKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKF9P
ZmYgPCAwKSB7DQogICAgICAgICAgICBkbyB7IGlmIChfTXlzaXplIC0gX015aW5kZXggPj0gc2l6
ZV90ezB9IC0gc3RhdGljX2Nhc3Q8c2l6ZV90PihfT2ZmKSkgeyB9IGVsc2UgeyBkbyB7IDsgOjpf
aW52YWxpZF9wYXJhbWV0ZXJfbm9pbmZvX25vcmV0dXJuKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSA7
IH0gd2hpbGUgKGZhbHNlKTsNCiNsaW5lIDYyNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCiAgICAgICAgfQ0KDQogICAgICAgIF9N
eWluZGV4IC09IF9PZmY7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBjaGVja2VkX2FycmF5X2l0ZXJhdG9yIG9wZXJhdG9yLShjb25z
dCBkaWZmZXJlbmNlX3R5cGUgX09mZikgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBjaGVja2Vk
X2FycmF5X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgX1RtcCAtPSBfT2ZmOw0KICAg
ICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBk
aWZmZXJlbmNlX3R5cGUgb3BlcmF0b3ItKGNvbnN0IGNoZWNrZWRfYXJyYXlfaXRlcmF0b3ImIF9S
aWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBkbyB7IGlmIChfTXlhcnJheSA9PSBfUmln
aHQuX015YXJyYXkgJiYgX015c2l6ZSA9PSBfUmlnaHQuX015c2l6ZSkgeyB9IGVsc2UgeyBkbyB7
IDsgOjpfaW52YWxpZF9wYXJhbWV0ZXJfbm9pbmZvX25vcmV0dXJuKCk7IH0gd2hpbGUgKGZhbHNl
KTsgfSA7IH0gd2hpbGUgKGZhbHNlKTsNCiNsaW5lIDYzOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCiAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGRpZmZlcmVuY2VfdHlwZT4oX015aW5kZXggLSBfUmlnaHQuX015aW5kZXgpOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvcltd
KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJl
dHVybiAqKCp0aGlzICsgX09mZik7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoZWNrZWRfYXJyYXlfaXRlcmF0b3ImIF9SaWdodCkg
Y29uc3Qgbm9leGNlcHQgew0KICAgICAgICBkbyB7IGlmIChfTXlhcnJheSA9PSBfUmlnaHQuX015
YXJyYXkgJiYgX015c2l6ZSA9PSBfUmlnaHQuX015c2l6ZSkgeyB9IGVsc2UgeyBkbyB7IDsgOjpf
aW52YWxpZF9wYXJhbWV0ZXJfbm9pbmZvX25vcmV0dXJuKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSA7
IH0gd2hpbGUgKGZhbHNlKTsNCiNsaW5lIDY0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCiAgICAgICAgcmV0dXJuIF9NeWluZGV4
ID09IF9SaWdodC5fTXlpbmRleDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hlY2tlZF9hcnJheV9pdGVyYXRvciYgX1JpZ2h0KSBj
b25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAhKCp0aGlzID09IF9SaWdodCk7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgY2hl
Y2tlZF9hcnJheV9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIGRv
IHsgaWYgKF9NeWFycmF5ID09IF9SaWdodC5fTXlhcnJheSAmJiBfTXlzaXplID09IF9SaWdodC5f
TXlzaXplKSB7IH0gZWxzZSB7IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFtZXRlcl9ub2luZm9fbm9y
ZXR1cm4oKTsgfSB3aGlsZSAoZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFsc2UpOw0KI2xpbmUgNjU5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGl0ZXJh
dG9yIg0KICAgICAgICByZXR1cm4gX015aW5kZXggPCBfUmlnaHQuX015aW5kZXg7DQogICAgfQ0K
DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgY2hlY2tl
ZF9hcnJheV9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biBfUmlnaHQgPCAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPD0oY29uc3QgY2hlY2tlZF9hcnJheV9pdGVyYXRvciYgX1JpZ2h0KSBjb25z
dCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAhKF9SaWdodCA8ICp0aGlzKTsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgY2hlY2tl
ZF9hcnJheV9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biAhKCp0aGlzIDwgX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBmcmllbmQgY29uc3RleHByIHZvaWQg
X1ZlcmlmeV9yYW5nZSgNCiAgICAgICAgY29uc3QgY2hlY2tlZF9hcnJheV9pdGVyYXRvciYgX0Zp
cnN0LCBjb25zdCBjaGVja2VkX2FycmF5X2l0ZXJhdG9yJiBfTGFzdCkgbm9leGNlcHQgew0KICAg
ICAgICBkbyB7IGlmIChfRmlyc3QuX015YXJyYXkgPT0gX0xhc3QuX015YXJyYXkgJiYgX0ZpcnN0
Ll9NeXNpemUgPT0gX0xhc3QuX015c2l6ZSkgeyB9IGVsc2UgeyBkbyB7IDsgOjpfaW52YWxpZF9w
YXJhbWV0ZXJfbm9pbmZvX25vcmV0dXJuKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSA7IH0gd2hpbGUg
KGZhbHNlKTsNCiNsaW5lIDY3OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCiAgICAgICAgZG8geyBpZiAoX0ZpcnN0Ll9NeWluZGV4
IDw9IF9MYXN0Ll9NeWluZGV4KSB7IH0gZWxzZSB7IGRvIHsgOyA6Ol9pbnZhbGlkX3BhcmFtZXRl
cl9ub2luZm9fbm9yZXR1cm4oKTsgfSB3aGlsZSAoZmFsc2UpOyB9IDsgfSB3aGlsZSAoZmFsc2Up
Ow0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciB2b2lkIF9WZXJpZnlfb2Zmc2V0KGNvbnN0IGRpZmZl
cmVuY2VfdHlwZSBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIGlmIChfT2ZmIDwgMCkg
ew0KICAgICAgICAgICAgZG8geyBpZiAoX015aW5kZXggPj0gc2l6ZV90ezB9IC0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihfT2ZmKSkgeyB9IGVsc2UgeyBkbyB7IDsgOjpfaW52YWxpZF9wYXJhbWV0ZXJf
bm9pbmZvX25vcmV0dXJuKCk7IH0gd2hpbGUgKGZhbHNlKTsgfSA7IH0gd2hpbGUgKGZhbHNlKTsN
CiNsaW5lIDY4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxpdGVyYXRvciINCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChfT2ZmID4gMCkgew0KICAg
ICAgICAgICAgZG8geyBpZiAoX015c2l6ZSAtIF9NeWluZGV4ID49IHN0YXRpY19jYXN0PHNpemVf
dD4oX09mZikpIHsgfSBlbHNlIHsgZG8geyA7IDo6X2ludmFsaWRfcGFyYW1ldGVyX25vaW5mb19u
b3JldHVybigpOyB9IHdoaWxlIChmYWxzZSk7IH0gOyB9IHdoaWxlIChmYWxzZSk7DQojbGluZSA2
OTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaXRl
cmF0b3IiDQogICAgICAgIH0NCiAgICB9DQoNCiAgICB1c2luZyBfUHJldmVudF9pbmhlcml0aW5n
X3Vud3JhcCA9IGNoZWNrZWRfYXJyYXlfaXRlcmF0b3I7DQoNCiAgICBbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBfUHRyIF9VbndyYXBwZWQoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biBfTXlhcnJheSArIF9NeWluZGV4Ow0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciB2b2lkIF9TZWVr
X3RvKF9QdHIgX0l0KSBub2V4Y2VwdCB7DQogICAgICAgIF9NeWluZGV4ID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihfSXQgLSBfTXlhcnJheSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIF9QdHIgX015
YXJyYXk7IA0KICAgIHNpemVfdCBfTXlzaXplOyANCiAgICBzaXplX3QgX015aW5kZXg7IA0KfTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9QdHI+DQpbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjaGVja2Vk
X2FycmF5X2l0ZXJhdG9yPF9QdHI+IG1ha2VfY2hlY2tlZF9hcnJheV9pdGVyYXRvcigNCiAgICBj
b25zdCBfUHRyIF9BcnJheSwgY29uc3Qgc2l6ZV90IF9TaXplLCBjb25zdCBzaXplX3QgX0luZGV4
ID0gMCkgew0KICAgIHJldHVybiBjaGVja2VkX2FycmF5X2l0ZXJhdG9yPF9QdHI+KF9BcnJheSwg
X1NpemUsIF9JbmRleCk7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9QdHI+DQpjbGFzcyB1bmNo
ZWNrZWRfYXJyYXlfaXRlcmF0b3IgeyANCiAgICBzdGF0aWNfYXNzZXJ0KDo6c3RkOjogaXNfcG9p
bnRlcl92PF9QdHI+LCAidW5jaGVja2VkX2FycmF5X2l0ZXJhdG9yIHJlcXVpcmVzIHBvaW50ZXJz
Iik7DQoNCnB1YmxpYzoNCiAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfUHRyPjo6aXRlcmF0b3JfY2F0ZWdvcnk7DQogICAgdXNpbmcgdmFsdWVf
dHlwZSAgICAgICAgPSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1B0cj46OnZhbHVlX3R5cGU7
DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgPSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X1B0cj46OmRpZmZlcmVuY2VfdHlwZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICA9IHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUHRyPjo6cG9pbnRlcjsNCiAgICB1c2luZyByZWZlcmVu
Y2UgICAgICAgICA9IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUHRyPjo6cmVmZXJlbmNlOw0K
DQogICAgY29uc3RleHByIHVuY2hlY2tlZF9hcnJheV9pdGVyYXRvcigpIG5vZXhjZXB0IDogX015
cHRyKG51bGxwdHIpIHt9DQoNCiAgICBjb25zdGV4cHIgZXhwbGljaXQgdW5jaGVja2VkX2FycmF5
X2l0ZXJhdG9yKGNvbnN0IF9QdHIgX1NyYykgbm9leGNlcHQgOiBfTXlwdHIoX1NyYykge30NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIF9QdHIgYmFzZSgpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIF9NeXB0cjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0
ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gKl9NeXB0cjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBwb2ludGVy
IG9wZXJhdG9yLT4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwdHI7DQog
ICAgfQ0KDQogICAgY29uc3RleHByIHVuY2hlY2tlZF9hcnJheV9pdGVyYXRvciYgb3BlcmF0b3Ir
KygpIG5vZXhjZXB0IHsNCiAgICAgICAgKytfTXlwdHI7DQogICAgICAgIHJldHVybiAqdGhpczsN
CiAgICB9DQoNCiAgICBjb25zdGV4cHIgdW5jaGVja2VkX2FycmF5X2l0ZXJhdG9yIG9wZXJhdG9y
KysoaW50KSBub2V4Y2VwdCB7DQogICAgICAgIHVuY2hlY2tlZF9hcnJheV9pdGVyYXRvciBfVG1w
ID0gKnRoaXM7DQogICAgICAgICsrX015cHRyOw0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9
DQoNCiAgICBjb25zdGV4cHIgdW5jaGVja2VkX2FycmF5X2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkg
bm9leGNlcHQgew0KICAgICAgICAtLV9NeXB0cjsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIGNvbnN0ZXhwciB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3Igb3BlcmF0b3ItLShp
bnQpIG5vZXhjZXB0IHsNCiAgICAgICAgdW5jaGVja2VkX2FycmF5X2l0ZXJhdG9yIF9UbXAgPSAq
dGhpczsNCiAgICAgICAgLS1fTXlwdHI7DQogICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0NCg0K
ICAgIGNvbnN0ZXhwciB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3ImIG9wZXJhdG9yKz0oY29uc3Qg
ZGlmZmVyZW5jZV90eXBlIF9PZmYpIG5vZXhjZXB0IHsNCiAgICAgICAgX015cHRyICs9IF9PZmY7
DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0
ZXhwciB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3Igb3BlcmF0b3IrKGNvbnN0IGRpZmZlcmVuY2Vf
dHlwZSBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHVuY2hlY2tlZF9hcnJheV9pdGVy
YXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgIF9UbXAgKz0gX09mZjsNCiAgICAgICAgcmV0dXJu
IF9UbXA7DQogICAgfQ0KDQoNCiAgICBbW25vZGlzY2FyZF1dDQojbGluZSA3NzkgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcaXRlcmF0b3IiDQogICAg
ZnJpZW5kIGNvbnN0ZXhwciB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3Igb3BlcmF0b3IrKA0KICAg
ICAgICBjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZiwgY29uc3QgdW5jaGVja2VkX2FycmF5X2l0
ZXJhdG9yJiBfTmV4dCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX05leHQgKyBfT2ZmOw0K
ICAgIH0NCg0KICAgIGNvbnN0ZXhwciB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3ImIG9wZXJhdG9y
LT0oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
ICp0aGlzICs9IC1fT2ZmOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHVu
Y2hlY2tlZF9hcnJheV9pdGVyYXRvciBvcGVyYXRvci0oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9P
ZmYpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgdW5jaGVja2VkX2FycmF5X2l0ZXJhdG9yIF9U
bXAgPSAqdGhpczsNCiAgICAgICAgX1RtcCAtPSBfT2ZmOw0KICAgICAgICByZXR1cm4gX1RtcDsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBkaWZmZXJlbmNlX3R5cGUgb3Bl
cmF0b3ItKGNvbnN0IHVuY2hlY2tlZF9hcnJheV9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwdHIgLSBfUmlnaHQuX015cHRyOw0KICAgIH0NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IGRp
ZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAqKCp0
aGlzICsgX09mZik7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IHVuY2hlY2tlZF9hcnJheV9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwdHIgPT0gX1JpZ2h0Ll9NeXB0cjsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5j
aGVja2VkX2FycmF5X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3ImIF9S
aWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015cHRyIDwgX1JpZ2h0Ll9N
eXB0cjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
Pihjb25zdCB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgbm9leGNlcHQg
ew0KICAgICAgICByZXR1cm4gX1JpZ2h0IDwgKnRoaXM7DQogICAgfQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IHVuY2hlY2tlZF9hcnJheV9pdGVy
YXRvciYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAhKF9SaWdodCA8
ICp0aGlzKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPj0oY29uc3QgdW5jaGVja2VkX2FycmF5X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBfUmlnaHQpOw0KICAgIH0NCg0KDQoNCg0K
DQoNCiNsaW5lIDgzMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxpdGVyYXRvciINCg0KICAgIHVzaW5nIF9QcmV2ZW50X2luaGVyaXRpbmdfdW53cmFw
ID0gdW5jaGVja2VkX2FycmF5X2l0ZXJhdG9yOw0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IF9VbndyYXBfd2hlbl91bnZlcmlmaWVkID0gdHJ1ZTsNCg0KICAgIFtbbm9kaXNjYXJkXV0gY29u
c3RleHByIF9QdHIgX1Vud3JhcHBlZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IF9NeXB0cjsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgdm9pZCBfU2Vla190byhfUHRyIF9JdCkg
bm9leGNlcHQgew0KICAgICAgICBfTXlwdHIgPSBfSXQ7DQogICAgfQ0KDQpwcml2YXRlOg0KICAg
IF9QdHIgX015cHRyOyANCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUHRyPg0KW1tub2Rpc2NhcmRd
XSB1bmNoZWNrZWRfYXJyYXlfaXRlcmF0b3I8X1B0cj4gbWFrZV91bmNoZWNrZWRfYXJyYXlfaXRl
cmF0b3IoY29uc3QgX1B0ciBfSXQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gdW5jaGVja2VkX2Fy
cmF5X2l0ZXJhdG9yPF9QdHI+KF9JdCk7DQp9DQp9DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9w
KQ0KI3ByYWdtYSBwYWNrKHBvcCkNCiNsaW5lIDg2MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCiNsaW5lIDg2MSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxpdGVyYXRvciINCiNsaW5l
IDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9IYXNoVGFibGUuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcbXV0ZXgiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGNocm9ubyINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0K
DQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXHJhdGlvIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IHBhY2socHVzaCwgOCkNCiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGUgOiA0MTgwIDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4NyA0
NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODggNTAy
NiA1MDI3IDUwNDUgNjI5NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KbmFtZXNwYWNlIHN0ZCB7DQoN
CnRlbXBsYXRlIDxpbnRtYXhfdCBfVmFsPg0Kc3RydWN0IF9BYnMgOiBpbnRlZ3JhbF9jb25zdGFu
dDxpbnRtYXhfdCwgKF9WYWwgPCAwID8gLV9WYWwgOiBfVmFsKT4ge307IA0KDQoNCnRlbXBsYXRl
IDxpbnRtYXhfdCBfQXgsIGludG1heF90IF9CeCwgYm9vbCBfU2ZpbmFlID0gZmFsc2UsDQogICAg
Ym9vbCBfR29vZCA9IChfQWJzPF9BeD46OnZhbHVlIDw9IDkyMjMzNzIwMzY4NTQ3NzU4MDdpNjQg
LyAoX0J4ID09IDAgPyAxIDogX0FiczxfQng+Ojp2YWx1ZSkpPg0Kc3RydWN0IF9TYWZlX211bHQg
OiBpbnRlZ3JhbF9jb25zdGFudDxpbnRtYXhfdCwgX0F4ICogX0J4PiB7fTsgDQoNCnRlbXBsYXRl
IDxpbnRtYXhfdCBfQXgsIGludG1heF90IF9CeCwgYm9vbCBfU2ZpbmFlPg0Kc3RydWN0IF9TYWZl
X211bHQ8X0F4LCBfQngsIF9TZmluYWUsIGZhbHNlPiB7IA0KICAgIHN0YXRpY19hc3NlcnQoX1Nm
aW5hZSwgImludGVnZXIgYXJpdGhtZXRpYyBvdmVyZmxvdyIpOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8
aW50bWF4X3QgX1ZhbD4NCnN0cnVjdCBfU2lnbl9vZiA6IGludGVncmFsX2NvbnN0YW50PGludG1h
eF90LCAoX1ZhbCA8IDAgPyAtMSA6IDEpPiB7fTsgDQoNCg0KdGVtcGxhdGUgPGludG1heF90IF9B
eCwgaW50bWF4X3QgX0J4LCBib29sIF9Hb29kLCBib29sIF9BbHNvX2dvb2Q+DQpzdHJ1Y3QgX1Nh
ZmVfYWRkWCA6IGludGVncmFsX2NvbnN0YW50PGludG1heF90LCBfQXggKyBfQng+IHt9OyANCg0K
dGVtcGxhdGUgPGludG1heF90IF9BeCwgaW50bWF4X3QgX0J4Pg0Kc3RydWN0IF9TYWZlX2FkZFg8
X0F4LCBfQngsIGZhbHNlLCBmYWxzZT4geyANCiAgICBzdGF0aWNfYXNzZXJ0KF9BbHdheXNfZmFs
c2U8X1NhZmVfYWRkWD4sICJpbnRlZ2VyIGFyaXRobWV0aWMgb3ZlcmZsb3ciKTsNCn07DQoNCnRl
bXBsYXRlIDxpbnRtYXhfdCBfQXgsIGludG1heF90IF9CeD4NCnN0cnVjdCBfU2FmZV9hZGQgOiBf
U2FmZV9hZGRYPF9BeCwgX0J4LCBfU2lnbl9vZjxfQXg+Ojp2YWx1ZSAhPSBfU2lnbl9vZjxfQng+
Ojp2YWx1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgKF9BYnM8X0F4Pjo6dmFsdWUgPD0gOTIy
MzM3MjAzNjg1NDc3NTgwN2k2NCAtIF9BYnM8X0J4Pjo6dmFsdWUpPjo6dHlwZSB7DQogICAgDQp9
Ow0KDQoNCnRlbXBsYXRlIDxpbnRtYXhfdCBfQXgsIGludG1heF90IF9CeD4NCnN0cnVjdCBfR2Nk
WCA6IF9HY2RYPF9CeCwgX0F4ICUgX0J4Pjo6dHlwZSB7fTsgDQoNCnRlbXBsYXRlIDxpbnRtYXhf
dCBfQXg+DQpzdHJ1Y3QgX0djZFg8X0F4LCAwPiA6IGludGVncmFsX2NvbnN0YW50PGludG1heF90
LCBfQXg+IHt9OyANCg0KdGVtcGxhdGUgPGludG1heF90IF9BeCwgaW50bWF4X3QgX0J4Pg0Kc3Ry
dWN0IF9HY2QgOiBfR2NkWDxfQWJzPF9BeD46OnZhbHVlLCBfQWJzPF9CeD46OnZhbHVlPjo6dHlw
ZSB7fTsgDQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgX0djZDwwLCAwPiA6IGludGVncmFsX2NvbnN0
YW50PGludG1heF90LCAxPiB7DQogICAgDQp9Ow0KDQoNCnRlbXBsYXRlIDxpbnRtYXhfdCBfTngs
IGludG1heF90IF9EeCA9IDE+DQpzdHJ1Y3QgcmF0aW8geyANCiAgICBzdGF0aWNfYXNzZXJ0KF9E
eCAhPSAwLCAiemVybyBkZW5vbWluYXRvciIpOw0KICAgIHN0YXRpY19hc3NlcnQoLTkyMjMzNzIw
MzY4NTQ3NzU4MDdpNjQgPD0gX054LCAibnVtZXJhdG9yIHRvbyBuZWdhdGl2ZSIpOw0KICAgIHN0
YXRpY19hc3NlcnQoLTkyMjMzNzIwMzY4NTQ3NzU4MDdpNjQgPD0gX0R4LCAiZGVub21pbmF0b3Ig
dG9vIG5lZ2F0aXZlIik7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90IG51bSA9DQog
ICAgICAgIF9TaWduX29mPF9OeD46OnZhbHVlICogX1NpZ25fb2Y8X0R4Pjo6dmFsdWUgKiBfQWJz
PF9OeD46OnZhbHVlIC8gX0djZDxfTngsIF9EeD46OnZhbHVlOw0KDQogICAgc3RhdGljIGNvbnN0
ZXhwciBpbnRtYXhfdCBkZW4gPSBfQWJzPF9EeD46OnZhbHVlIC8gX0djZDxfTngsIF9EeD46OnZh
bHVlOw0KDQogICAgdXNpbmcgdHlwZSA9IHJhdGlvPG51bSwgZGVuPjsNCn07DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBfSXNfcmF0aW9fdiA9IGZhbHNl
OyANCg0KdGVtcGxhdGUgPGludG1heF90IF9SeDEsIGludG1heF90IF9SeDI+DQppbmxpbmUgY29u
c3RleHByIGJvb2wgX0lzX3JhdGlvX3Y8cmF0aW88X1J4MSwgX1J4Mj4+ID0gdHJ1ZTsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4Mj4NCnN0cnVjdCBfUmF0aW9fYWRkIHsgDQog
ICAgc3RhdGljX2Fzc2VydChfSXNfcmF0aW9fdjxfUngxPiAmJiBfSXNfcmF0aW9fdjxfUngyPiwg
InJhdGlvX2FkZDxSMSwgUjI+IHJlcXVpcmVzIFIxIGFuZCBSMiB0byBiZSByYXRpbzw+cy4iKTsN
Cg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4X3QgX054MSA9IF9SeDE6Om51bTsNCiAgICBz
dGF0aWMgY29uc3RleHByIGludG1heF90IF9EeDEgPSBfUngxOjpkZW47DQogICAgc3RhdGljIGNv
bnN0ZXhwciBpbnRtYXhfdCBfTngyID0gX1J4Mjo6bnVtOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50bWF4X3QgX0R4MiA9IF9SeDI6OmRlbjsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4
X3QgX0d4ID0gX0djZDxfRHgxLCBfRHgyPjo6dmFsdWU7DQoNCiAgICANCiAgICB1c2luZyB0eXBl
ID0NCiAgICAgICAgdHlwZW5hbWUgcmF0aW88X1NhZmVfYWRkPF9TYWZlX211bHQ8X054MSwgX0R4
MiAvIF9HeD46OnZhbHVlLCBfU2FmZV9tdWx0PF9OeDIsIF9EeDEgLyBfR3g+Ojp2YWx1ZT46OnZh
bHVlLA0KICAgICAgICAgICAgX1NhZmVfbXVsdDxfRHgxLCBfRHgyIC8gX0d4Pjo6dmFsdWU+Ojp0
eXBlOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9SeDEsIGNsYXNzIF9SeDI+DQp1c2luZyByYXRp
b19hZGQgPSB0eXBlbmFtZSBfUmF0aW9fYWRkPF9SeDEsIF9SeDI+Ojp0eXBlOw0KDQoNCnRlbXBs
YXRlIDxjbGFzcyBfUngxLCBjbGFzcyBfUngyPg0Kc3RydWN0IF9SYXRpb19zdWJ0cmFjdCB7IA0K
ICAgIHN0YXRpY19hc3NlcnQoX0lzX3JhdGlvX3Y8X1J4MT4gJiYgX0lzX3JhdGlvX3Y8X1J4Mj4s
ICJyYXRpb19zdWJ0cmFjdDxSMSwgUjI+IHJlcXVpcmVzIFIxIGFuZCBSMiB0byBiZSByYXRpbzw+
cy4iKTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4X3QgX054MiA9IF9SeDI6Om51bTsN
CiAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90IF9EeDIgPSBfUngyOjpkZW47DQoNCiAgICB1
c2luZyB0eXBlID0gcmF0aW9fYWRkPF9SeDEsIHJhdGlvPC1fTngyLCBfRHgyPj47DQp9Ow0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4Mj4NCnVzaW5nIHJhdGlvX3N1YnRyYWN0ID0g
dHlwZW5hbWUgX1JhdGlvX3N1YnRyYWN0PF9SeDEsIF9SeDI+Ojp0eXBlOw0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfUngxLCBjbGFzcyBfUngyPg0Kc3RydWN0IF9SYXRpb19tdWx0aXBseSB7IA0KICAg
IHN0YXRpY19hc3NlcnQoX0lzX3JhdGlvX3Y8X1J4MT4gJiYgX0lzX3JhdGlvX3Y8X1J4Mj4sICJy
YXRpb19tdWx0aXBseTxSMSwgUjI+IHJlcXVpcmVzIFIxIGFuZCBSMiB0byBiZSByYXRpbzw+cy4i
KTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4X3QgX054MSA9IF9SeDE6Om51bTsNCiAg
ICBzdGF0aWMgY29uc3RleHByIGludG1heF90IF9EeDEgPSBfUngxOjpkZW47DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnRtYXhfdCBfTngyID0gX1J4Mjo6bnVtOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgaW50bWF4X3QgX0R4MiA9IF9SeDI6OmRlbjsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
bWF4X3QgX0d4ID0gX0djZDxfTngxLCBfRHgyPjo6dmFsdWU7DQogICAgc3RhdGljIGNvbnN0ZXhw
ciBpbnRtYXhfdCBfR3kgPSBfR2NkPF9OeDIsIF9EeDE+Ojp2YWx1ZTsNCg0KICAgIHVzaW5nIF9O
dW0gPSBfU2FmZV9tdWx0PF9OeDEgLyBfR3gsIF9OeDIgLyBfR3ksIHRydWU+Ow0KICAgIHVzaW5n
IF9EZW4gPSBfU2FmZV9tdWx0PF9EeDEgLyBfR3ksIF9EeDIgLyBfR3gsIHRydWU+Ow0KfTsNCg0K
dGVtcGxhdGUgPGNsYXNzIF9SeDEsIGNsYXNzIF9SeDIsIGJvb2wgX1NmaW5hZSA9IHRydWUsIGNs
YXNzID0gdm9pZD4NCnN0cnVjdCBfUmF0aW9fbXVsdGlwbHlfc2ZpbmFlIHsgDQogICAgc3RhdGlj
X2Fzc2VydChfU2ZpbmFlLCAiaW50ZWdlciBhcml0aG1ldGljIG92ZXJmbG93Iik7DQp9Ow0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4MiwgYm9vbCBfU2ZpbmFlPg0Kc3RydWN0IF9S
YXRpb19tdWx0aXBseV9zZmluYWU8X1J4MSwgX1J4MiwgX1NmaW5hZSwNCiAgICB2b2lkX3Q8dHlw
ZW5hbWUgX1JhdGlvX211bHRpcGx5PF9SeDEsIF9SeDI+OjpfTnVtOjp0eXBlLA0KICAgICAgICB0
eXBlbmFtZSBfUmF0aW9fbXVsdGlwbHk8X1J4MSwgX1J4Mj46Ol9EZW46OnR5cGU+PiB7IA0KICAg
IHVzaW5nIHR5cGUgPSByYXRpbzxfUmF0aW9fbXVsdGlwbHk8X1J4MSwgX1J4Mj46Ol9OdW06OnZh
bHVlLCBfUmF0aW9fbXVsdGlwbHk8X1J4MSwgX1J4Mj46Ol9EZW46OnZhbHVlPjsNCn07DQoNCnRl
bXBsYXRlIDxjbGFzcyBfUngxLCBjbGFzcyBfUngyPg0KdXNpbmcgcmF0aW9fbXVsdGlwbHkgPSB0
eXBlbmFtZSBfUmF0aW9fbXVsdGlwbHlfc2ZpbmFlPF9SeDEsIF9SeDIsIGZhbHNlPjo6dHlwZTsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4Mj4NCnN0cnVjdCBfUmF0aW9fZGl2
aWRlIHsgDQogICAgc3RhdGljX2Fzc2VydChfSXNfcmF0aW9fdjxfUngxPiAmJiBfSXNfcmF0aW9f
djxfUngyPiwgInJhdGlvX2RpdmlkZTxSMSwgUjI+IHJlcXVpcmVzIFIxIGFuZCBSMiB0byBiZSBy
YXRpbzw+cy4iKTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50bWF4X3QgX054MiA9IF9SeDI6
Om51bTsNCiAgICBzdGF0aWMgY29uc3RleHByIGludG1heF90IF9EeDIgPSBfUngyOjpkZW47DQoN
CiAgICB1c2luZyBfUngyX2ludmVyc2UgPSByYXRpbzxfRHgyLCBfTngyPjsNCn07DQoNCnRlbXBs
YXRlIDxjbGFzcyBfUngxLCBjbGFzcyBfUngyLCBib29sIF9TZmluYWUgPSB0cnVlPg0KdXNpbmcg
X1JhdGlvX2RpdmlkZV9zZmluYWUgPQ0KICAgIHR5cGVuYW1lIF9SYXRpb19tdWx0aXBseV9zZmlu
YWU8X1J4MSwgdHlwZW5hbWUgX1JhdGlvX2RpdmlkZTxfUngxLCBfUngyPjo6X1J4Ml9pbnZlcnNl
LCBfU2ZpbmFlPjo6dHlwZTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9SeDEsIGNsYXNzIF9SeDI+DQp1
c2luZyByYXRpb19kaXZpZGUgPSBfUmF0aW9fZGl2aWRlX3NmaW5hZTxfUngxLCBfUngyLCBmYWxz
ZT47DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SeDEsIGNsYXNzIF9SeDI+DQpzdHJ1Y3QgcmF0aW9f
ZXF1YWwgOiBib29sX2NvbnN0YW50PF9SeDE6Om51bSA9PSBfUngyOjpudW0gJiYgX1J4MTo6ZGVu
ID09IF9SeDI6OmRlbj4geyANCiAgICBzdGF0aWNfYXNzZXJ0KF9Jc19yYXRpb192PF9SeDE+ICYm
IF9Jc19yYXRpb192PF9SeDI+LCAicmF0aW9fZXF1YWw8UjEsIFIyPiByZXF1aXJlcyBSMSBhbmQg
UjIgdG8gYmUgcmF0aW88PnMuIik7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3Mg
X1J4Mj4NCmlubGluZSBjb25zdGV4cHIgYm9vbCByYXRpb19lcXVhbF92ID0gcmF0aW9fZXF1YWw8
X1J4MSwgX1J4Mj46OnZhbHVlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUngxLCBjbGFzcyBfUngy
Pg0Kc3RydWN0IHJhdGlvX25vdF9lcXVhbCA6IGJvb2xfY29uc3RhbnQ8IXJhdGlvX2VxdWFsX3Y8
X1J4MSwgX1J4Mj4+IHsgDQogICAgc3RhdGljX2Fzc2VydChfSXNfcmF0aW9fdjxfUngxPiAmJiBf
SXNfcmF0aW9fdjxfUngyPiwgInJhdGlvX25vdF9lcXVhbDxSMSwgUjI+IHJlcXVpcmVzIFIxIGFu
ZCBSMiB0byBiZSByYXRpbzw+cy4iKTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUngxLCBjbGFz
cyBfUngyPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIHJhdGlvX25vdF9lcXVhbF92ID0gcmF0aW9f
bm90X2VxdWFsPF9SeDEsIF9SeDI+Ojp2YWx1ZTsNCg0KDQpzdHJ1Y3QgX0JpZ191aW50MTI4IHsN
CiAgICB1aW50NjRfdCBfVXBwZXI7DQogICAgdWludDY0X3QgX0xvd2VyOw0KDQogICAgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IF9CaWdfdWludDEyOCBfUmhzKSBjb25zdCBub2V4Y2Vw
dCB7DQogICAgICAgIGlmIChfVXBwZXIgIT0gX1Jocy5fVXBwZXIpIHsNCiAgICAgICAgICAgIHJl
dHVybiBfVXBwZXIgPCBfUmhzLl9VcHBlcjsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBf
TG93ZXIgPCBfUmhzLl9Mb3dlcjsNCiAgICB9DQp9Ow0KDQpjb25zdGV4cHIgX0JpZ191aW50MTI4
IF9CaWdfbXVsdGlwbHkoY29uc3QgdWludDY0X3QgX0xmYWN0b3IsDQogICAgY29uc3QgdWludDY0
X3QgX1JmYWN0b3IpIG5vZXhjZXB0IHsgDQogICAgY29uc3QgdWludDY0X3QgX0xsb3cgID0gX0xm
YWN0b3IgJiAweEZGRkYnRkZGRlVMTDsNCiAgICBjb25zdCB1aW50NjRfdCBfTGhpZ2ggPSBfTGZh
Y3RvciA+PiAzMjsNCiAgICBjb25zdCB1aW50NjRfdCBfUmxvdyAgPSBfUmZhY3RvciAmIDB4RkZG
RidGRkZGVUxMOw0KICAgIGNvbnN0IHVpbnQ2NF90IF9SaGlnaCA9IF9SZmFjdG9yID4+IDMyOw0K
DQogICAgdWludDY0X3QgX1RlbXAgICAgICAgICAgPSBfTGxvdyAqIF9SbG93Ow0KICAgIGNvbnN0
IHVpbnQ2NF90IF9Mb3dlcjMyID0gX1RlbXAgJiAweEZGRkYnRkZGRlVMTDsNCiAgICB1aW50NjRf
dCBfQ2FycnkgICAgICAgICA9IF9UZW1wID4+IDMyOw0KDQogICAgX1RlbXAgICAgICAgICAgICAg
ICAgICAgICA9IF9MbG93ICogX1JoaWdoICsgX0NhcnJ5Ow0KICAgIGNvbnN0IHVpbnQ2NF90IF9N
aWRfbG93ZXIgPSBfVGVtcCAmIDB4RkZGRidGRkZGVUxMOw0KICAgIGNvbnN0IHVpbnQ2NF90IF9N
aWRfdXBwZXIgPSBfVGVtcCA+PiAzMjsNCg0KICAgIF9UZW1wICA9IF9MaGlnaCAqIF9SbG93ICsg
X01pZF9sb3dlcjsNCiAgICBfQ2FycnkgPSBfVGVtcCA+PiAzMjsNCg0KICAgIHJldHVybiB7X0xo
aWdoICogX1JoaWdoICsgX01pZF91cHBlciArIF9DYXJyeSwgKF9UZW1wIDw8IDMyKSArIF9Mb3dl
cjMyfTsNCn0NCg0KY29uc3RleHByIGJvb2wgX1JhdGlvX2xlc3MoY29uc3QgaW50NjRfdCBfTngx
LCBjb25zdCBpbnQ2NF90IF9EeDEsIGNvbnN0IGludDY0X3QgX054MiwgY29uc3QgaW50NjRfdCBf
RHgyKSBub2V4Y2VwdCB7DQogICAgaWYgKF9OeDEgPj0gMCAmJiBfTngyID49IDApIHsNCiAgICAg
ICAgcmV0dXJuIF9CaWdfbXVsdGlwbHkoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9OeDEpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oX0R4MikpDQogICAgICAgICAgICAgICA8IF9CaWdfbXVsdGlwbHko
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9OeDIpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oX0R4MSkp
Ow0KICAgIH0NCg0KICAgIGlmIChfTngxIDwgMCAmJiBfTngyIDwgMCkgew0KICAgICAgICByZXR1
cm4gX0JpZ19tdWx0aXBseShzdGF0aWNfY2FzdDx1aW50NjRfdD4oLV9OeDIpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oX0R4MSkpDQogICAgICAgICAgICAgICA8IF9CaWdfbXVsdGlwbHkoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KC1fTngxKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9EeDIpKTsNCiAg
ICB9DQoNCiAgICByZXR1cm4gX054MSA8IF9OeDI7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfUngx
LCBjbGFzcyBfUngyPg0Kc3RydWN0IHJhdGlvX2xlc3MgOiBib29sX2NvbnN0YW50PF9SYXRpb19s
ZXNzKF9SeDE6Om51bSwgX1J4MTo6ZGVuLCBfUngyOjpudW0sIF9SeDI6OmRlbik+IHsgDQogICAg
c3RhdGljX2Fzc2VydChfSXNfcmF0aW9fdjxfUngxPiAmJiBfSXNfcmF0aW9fdjxfUngyPiwgInJh
dGlvX2xlc3M8UjEsIFIyPiByZXF1aXJlcyBSMSBhbmQgUjIgdG8gYmUgcmF0aW88PnMuIik7DQp9
Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4Mj4NCmlubGluZSBjb25zdGV4cHIg
Ym9vbCByYXRpb19sZXNzX3YgPSByYXRpb19sZXNzPF9SeDEsIF9SeDI+Ojp2YWx1ZTsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4Mj4NCnN0cnVjdCByYXRpb19sZXNzX2VxdWFs
IDogYm9vbF9jb25zdGFudDwhcmF0aW9fbGVzc192PF9SeDIsIF9SeDE+PiB7IA0KICAgIHN0YXRp
Y19hc3NlcnQoDQogICAgICAgIF9Jc19yYXRpb192PF9SeDE+ICYmIF9Jc19yYXRpb192PF9SeDI+
LCAicmF0aW9fbGVzc19lcXVhbDxSMSwgUjI+IHJlcXVpcmVzIFIxIGFuZCBSMiB0byBiZSByYXRp
bzw+cy4iKTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUngxLCBjbGFzcyBfUngyPg0KaW5saW5l
IGNvbnN0ZXhwciBib29sIHJhdGlvX2xlc3NfZXF1YWxfdiA9IHJhdGlvX2xlc3NfZXF1YWw8X1J4
MSwgX1J4Mj46OnZhbHVlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUngxLCBjbGFzcyBfUngyPg0K
c3RydWN0IHJhdGlvX2dyZWF0ZXIgOiByYXRpb19sZXNzPF9SeDIsIF9SeDE+Ojp0eXBlIHsgDQog
ICAgc3RhdGljX2Fzc2VydChfSXNfcmF0aW9fdjxfUngxPiAmJiBfSXNfcmF0aW9fdjxfUngyPiwg
InJhdGlvX2dyZWF0ZXI8UjEsIFIyPiByZXF1aXJlcyBSMSBhbmQgUjIgdG8gYmUgcmF0aW88PnMu
Iik7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4Mj4NCmlubGluZSBjb25z
dGV4cHIgYm9vbCByYXRpb19ncmVhdGVyX3YgPSByYXRpb19ncmVhdGVyPF9SeDEsIF9SeDI+Ojp2
YWx1ZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4MSwgY2xhc3MgX1J4Mj4NCnN0cnVjdCByYXRp
b19ncmVhdGVyX2VxdWFsIDogYm9vbF9jb25zdGFudDwhcmF0aW9fbGVzc192PF9SeDEsIF9SeDI+
PiB7IA0KICAgIHN0YXRpY19hc3NlcnQoDQogICAgICAgIF9Jc19yYXRpb192PF9SeDE+ICYmIF9J
c19yYXRpb192PF9SeDI+LCAicmF0aW9fZ3JlYXRlcl9lcXVhbDxSMSwgUjI+IHJlcXVpcmVzIFIx
IGFuZCBSMiB0byBiZSByYXRpbzw+cy4iKTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUngxLCBj
bGFzcyBfUngyPg0KaW5saW5lIGNvbnN0ZXhwciBib29sIHJhdGlvX2dyZWF0ZXJfZXF1YWxfdiA9
IHJhdGlvX2dyZWF0ZXJfZXF1YWw8X1J4MSwgX1J4Mj46OnZhbHVlOw0KDQoNCnVzaW5nIGF0dG8g
ID0gcmF0aW88MSwgMTAwMDAwMDAwMDAwMDAwMDAwMExMPjsNCnVzaW5nIGZlbXRvID0gcmF0aW88
MSwgMTAwMDAwMDAwMDAwMDAwMExMPjsNCnVzaW5nIHBpY28gID0gcmF0aW88MSwgMTAwMDAwMDAw
MDAwMExMPjsNCnVzaW5nIG5hbm8gID0gcmF0aW88MSwgMTAwMDAwMDAwMD47DQp1c2luZyBtaWNy
byA9IHJhdGlvPDEsIDEwMDAwMDA+Ow0KdXNpbmcgbWlsbGkgPSByYXRpbzwxLCAxMDAwPjsNCnVz
aW5nIGNlbnRpID0gcmF0aW88MSwgMTAwPjsNCnVzaW5nIGRlY2kgID0gcmF0aW88MSwgMTA+Ow0K
dXNpbmcgZGVjYSAgPSByYXRpbzwxMCwgMT47DQp1c2luZyBoZWN0byA9IHJhdGlvPDEwMCwgMT47
DQp1c2luZyBraWxvICA9IHJhdGlvPDEwMDAsIDE+Ow0KdXNpbmcgbWVnYSAgPSByYXRpbzwxMDAw
MDAwLCAxPjsNCnVzaW5nIGdpZ2EgID0gcmF0aW88MTAwMDAwMDAwMCwgMT47DQp1c2luZyB0ZXJh
ICA9IHJhdGlvPDEwMDAwMDAwMDAwMDBMTCwgMT47DQp1c2luZyBwZXRhICA9IHJhdGlvPDEwMDAw
MDAwMDAwMDAwMDBMTCwgMT47DQp1c2luZyBleGEgICA9IHJhdGlvPDEwMDAwMDAwMDAwMDAwMDAw
MDBMTCwgMT47DQp9DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3Ap
DQojbGluZSAzMDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxccmF0aW8iDQojbGluZSAzMDUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxccmF0aW8iDQojbGluZSAxMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjaHJvbm8iDQojbGluZSAxICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFx0aW1lLmgiDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KI3By
YWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUxNCA0
NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0KX19w
cmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRl
ZiBsb25nIGNsb2NrX3Q7DQoNCnN0cnVjdCBfdGltZXNwZWMzMg0Kew0KICAgIF9fdGltZTMyX3Qg
dHZfc2VjOw0KICAgIGxvbmcgICAgICAgdHZfbnNlYzsNCn07DQoNCnN0cnVjdCBfdGltZXNwZWM2
NA0Kew0KICAgIF9fdGltZTY0X3QgdHZfc2VjOw0KICAgIGxvbmcgICAgICAgdHZfbnNlYzsNCn07
DQoNCg0KICAgIHN0cnVjdCB0aW1lc3BlYw0KICAgIHsNCiAgICAgICAgdGltZV90IHR2X3NlYzsg
IA0KICAgICAgICBsb25nICAgdHZfbnNlYzsgDQogICAgfTsNCiNsaW5lIDQ5ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1
Y3J0XFx0aW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgaW50KiBfX2NkZWNsIF9fZGF5bGlnaHQodm9pZCk7DQoNCg0KDQoNCiAg
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyogX19jZGVjbCBfX2RzdGJpYXModm9pZCk7DQoN
Cg0KDQoNCiAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgbG9uZyogX19jZGVjbCBfX3RpbWV6b25l
KHZvaWQpOw0KDQoNCg0KDQogICAgDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhcioqIF9fY2Rl
Y2wgX190em5hbWUodm9pZCk7DQoNCg0KDQogIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5v
X3QgX19jZGVjbCBfZ2V0X2RheWxpZ2h0KA0KICAgICAgaW50KiBfRGF5bGlnaHQNCiAgICApOw0K
DQogDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9nZXRfZHN0YmlhcygN
CiAgICAgIGxvbmcqIF9EYXlsaWdodFNhdmluZ3NCaWFzDQogICAgKTsNCg0KICANCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX2dldF90aW1lem9uZSgNCiAgICAgIGxvbmcq
IF9UaW1lWm9uZQ0KICAgICk7DQoNCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9f
Y2RlY2wgX2dldF90em5hbWUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCog
X1JldHVyblZhbHVlLA0KICAgICAgY2hhciogICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICBfU2l6ZUluQnl0ZXMsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgICAgIF9JbmRleA0KICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KIA0KIA0KICAN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIGFzY3RpbWUoDQogICAgICBzdHJ1
Y3QgdG0gY29uc3QqIF9UbQ0KICAgICk7DQoNCg0KICAgICANCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIGFzY3RpbWVfcygNCiAgICAgICAgICAgIGNoYXIq
ICAgICAgICAgICAgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICAgICAgICAgICBfU2l6ZUluQnl0ZXMsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gY29uc3Qq
IF9UbQ0KICAgICAgICApOw0KI2xpbmUgMTM0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFx0aW1lLmgiDQoNCmV4
dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2Rl
Y2wgYXNjdGltZV9zKCAgY2hhciAoJl9CdWZmZXIpW19TaXplXSwgICBzdHJ1Y3QgdG0gY29uc3Qq
IF9UaW1lKSB0aHJvdygpIHsgcmV0dXJuIGFzY3RpbWVfcyhfQnVmZmVyLCBfU2l6ZSwgX1RpbWUp
OyB9IH0NCiNsaW5lIDE0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcdGltZS5oIg0KDQogDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgY2xvY2tfdCBfX2NkZWNsIGNsb2NrKHZvaWQpOw0KDQogDQogDQogIA0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9fY2RlY2wgX2N0aW1lMzIoDQogICAgICBfX3RpbWUz
Ml90IGNvbnN0KiBfVGltZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5v
X3QgX19jZGVjbCBfY3RpbWUzMl9zKA0KICAgICAgICBjaGFyKiAgICAgICAgICAgICBfQnVmZmVy
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAg
ICAgIF9TaXplSW5CeXRlcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX190aW1lMzJfdCBjb25zdCogX1RpbWUNCiAgICApOw0KDQpleHRlcm4g
IkMrKyIgeyB0ZW1wbGF0ZSA8c2l6ZV90IF9TaXplPiBpbmxpbmUgZXJybm9fdCBfX2NkZWNsIF9j
dGltZTMyX3MoICBjaGFyICgmX0J1ZmZlcilbX1NpemVdLCAgIF9fdGltZTMyX3QgY29uc3QqIF9U
aW1lKSB0aHJvdygpIHsgcmV0dXJuIF9jdGltZTMyX3MoX0J1ZmZlciwgX1NpemUsIF9UaW1lKTsg
fSB9DQojbGluZSAxNjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHRpbWUuaCINCg0KIA0KIA0KICANCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBfX2NkZWNsIF9jdGltZTY0KA0KICAgICAgX190aW1lNjRf
dCBjb25zdCogX1RpbWUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190
IF9fY2RlY2wgX2N0aW1lNjRfcygNCiAgICAgICAgY2hhciogICAgICAgICAgICAgX0J1ZmZlciwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAg
ICAgIF9TaXplSW5CeXRlcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3RpbWU2NF90IGNvbnN0KiBfVGltZQ0KICAgICk7DQoNCmV4dGVy
biAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wg
X2N0aW1lNjRfcyggIGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0sICAgX190aW1lNjRfdCBjb25zdCog
X1RpbWUpIHRocm93KCkgeyByZXR1cm4gX2N0aW1lNjRfcyhfQnVmZmVyLCBfU2l6ZSwgX1RpbWUp
OyB9IH0NCiNsaW5lIDE4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xc
MTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcdGltZS5oIg0KDQogDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgZG91YmxlIF9fY2RlY2wgX2RpZmZ0aW1lMzIoDQogICAgICBfX3RpbWUzMl90
IF9UaW1lMSwNCiAgICAgIF9fdGltZTMyX3QgX1RpbWUyDQogICAgKTsNCg0KIA0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGRvdWJsZSBfX2NkZWNsIF9kaWZmdGltZTY0KA0KICAgICAgX190aW1lNjRf
dCBfVGltZTEsDQogICAgICBfX3RpbWU2NF90IF9UaW1lMg0KICAgICk7DQoNCiANCiAgDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgc3RydWN0IHRtKiBfX2NkZWNsIF9nbXRpbWUzMigNCiAgICAgIF9f
dGltZTMyX3QgY29uc3QqIF9UaW1lDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
ZXJybm9fdCBfX2NkZWNsIF9nbXRpbWUzMl9zKA0KICAgICAgc3RydWN0IHRtKiAgICAgICAgX1Rt
LA0KICAgICAgIF9fdGltZTMyX3QgY29uc3QqIF9UaW1lDQogICAgKTsNCg0KIA0KICANCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBzdHJ1Y3QgdG0qIF9fY2RlY2wgX2dtdGltZTY0KA0KICAgICAgX190
aW1lNjRfdCBjb25zdCogX1RpbWUNCiAgICApOw0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBl
cnJub190IF9fY2RlY2wgX2dtdGltZTY0X3MoDQogICAgICBzdHJ1Y3QgdG0qICAgICAgICBfVG0s
DQogICAgICAgX190aW1lNjRfdCBjb25zdCogX1RpbWUNCiAgICApOw0KDQogDQogIA0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHN0cnVjdCB0bSogX19jZGVjbCBfbG9jYWx0aW1lMzIoDQogICAgICBf
X3RpbWUzMl90IGNvbnN0KiBfVGltZQ0KICAgICk7DQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGVycm5vX3QgX19jZGVjbCBfbG9jYWx0aW1lMzJfcygNCiAgICAgIHN0cnVjdCB0bSogICAgICAg
IF9UbSwNCiAgICAgICBfX3RpbWUzMl90IGNvbnN0KiBfVGltZQ0KICAgICk7DQoNCiANCiAgDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgc3RydWN0IHRtKiBfX2NkZWNsIF9sb2NhbHRpbWU2NCgNCiAg
ICAgIF9fdGltZTY0X3QgY29uc3QqIF9UaW1lDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgZXJybm9fdCBfX2NkZWNsIF9sb2NhbHRpbWU2NF9zKA0KICAgICAgc3RydWN0IHRtKiAg
ICAgICAgX1RtLA0KICAgICAgIF9fdGltZTY0X3QgY29uc3QqIF9UaW1lDQogICAgKTsNCg0KIA0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIF9fdGltZTMyX3QgX19jZGVjbCBfbWtnbXRpbWUzMigNCiAg
ICAgIHN0cnVjdCB0bSogX1RtDQogICAgKTsNCg0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9f
dGltZTY0X3QgX19jZGVjbCBfbWtnbXRpbWU2NCgNCiAgICAgIHN0cnVjdCB0bSogX1RtDQogICAg
KTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX190aW1lMzJfdCBfX2NkZWNsIF9ta3RpbWUz
MigNCiAgICAgIHN0cnVjdCB0bSogX1RtDQogICAgKTsNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgX190aW1lNjRfdCBfX2NkZWNsIF9ta3RpbWU2NCgNCiAgICAgIHN0cnVjdCB0bSogX1RtDQog
ICAgKTsNCg0KIA0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgc3RyZnRp
bWUoDQogICAgICAgY2hhciogICAgICAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgX1NpemVJbkJ5dGVzLA0KICAgICAgICBjaGFy
IGNvbnN0KiAgICAgIF9Gb3JtYXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHRtIGNvbnN0KiBfVG0NCiAgICApOw0KDQogDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBz
aXplX3QgX19jZGVjbCBfc3RyZnRpbWVfbCgNCiAgICAgICAgICAgY2hhciogICAgICAgICAgICBf
QnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAg
X01heFNpemUsDQogICAgICAgIGNoYXIgY29uc3QqICAgICAgX0Zvcm1hdCwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gY29uc3QqIF9UbSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9sb2NhbGVfdCAgICAgICAgX0xvY2FsZQ0KICAgICk7DQoNCg0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGVycm5vX3QgX19jZGVjbCBfc3RyZGF0ZV9zKA0KICAgICAgIGNoYXIq
ICBfQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9TaXplSW5CeXRlcw0KICAg
ICk7DQoNCmV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJu
b190IF9fY2RlY2wgX3N0cmRhdGVfcyggIGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0pIHRocm93KCkg
eyByZXR1cm4gX3N0cmRhdGVfcyhfQnVmZmVyLCBfU2l6ZSk7IH0gfQ0KI2xpbmUgMjkzICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0
MS4wXFx1Y3J0XFx0aW1lLmgiDQoNCl9faW5saW5lICBjaGFyKiBfX2NkZWNsIF9faW5zZWN1cmVf
X3N0cmRhdGUoIGNoYXIgKl9CdWZmZXIpIHsgIGNoYXIqIF9fY2RlY2wgX3N0cmRhdGUoIGNoYXIg
Kl9CdWZmZXIpOyByZXR1cm4gX3N0cmRhdGUoX0J1ZmZlcik7IH0gZXh0ZXJuICJDKysiIHsgdGVt
cGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICBjaGFyKiBfX2NkZWNsIF9zdHJkYXRlKF9UICZf
QnVmZmVyKSB0aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3N0cmRhdGUoc3RhdGljX2Nhc3Q8
Y2hhciAqPihfQnVmZmVyKSk7IH0gdGVtcGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgICBjaGFy
KiBfX2NkZWNsIF9zdHJkYXRlKGNvbnN0IF9UICZfQnVmZmVyKSB0aHJvdygpIHsgcmV0dXJuIF9f
aW5zZWN1cmVfX3N0cmRhdGUoc3RhdGljX2Nhc3Q8Y2hhciAqPihfQnVmZmVyKSk7IH0gdGVtcGxh
dGUgPD4gaW5saW5lICAgY2hhciogX19jZGVjbCBfc3RyZGF0ZSggY2hhciAqICZfQnVmZmVyKSB0
aHJvdygpIHsgcmV0dXJuIF9faW5zZWN1cmVfX3N0cmRhdGUoX0J1ZmZlcik7IH0gdGVtcGxhdGUg
PHNpemVfdCBfU2l6ZT4gaW5saW5lICBjaGFyKiBfX2NkZWNsIF9zdHJkYXRlKGNoYXIgKCZfQnVm
ZmVyKVtfU2l6ZV0pIHRocm93KCkgeyByZXR1cm4gKChfc3RyZGF0ZV9zKF9CdWZmZXIsIF9TaXpl
KSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgICBjaGFyKiBfX2Nk
ZWNsIF9zdHJkYXRlPDE+KGNoYXIgKCZfQnVmZmVyKVsxXSkgdGhyb3coKSB7IHJldHVybiAoKF9z
dHJkYXRlX3MoX0J1ZmZlciwgMSkpID09IDAgPyBfQnVmZmVyIDogMCk7IH0gfQ0KI2xpbmUgMjk4
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAu
MC4xOTA0MS4wXFx1Y3J0XFx0aW1lLmgiDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGVycm5v
X3QgX19jZGVjbCBfc3RydGltZV9zKA0KICAgICAgIGNoYXIqICBfQnVmZmVyLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9TaXplSW5CeXRlcw0KICAgICk7DQoNCmV4dGVybiAiQysrIiB7
IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBlcnJub190IF9fY2RlY2wgX3N0cnRpbWVf
cyggIGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0pIHRocm93KCkgeyByZXR1cm4gX3N0cnRpbWVfcyhf
QnVmZmVyLCBfU2l6ZSk7IH0gfQ0KI2xpbmUgMzA5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
V2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFx0aW1lLmgiDQoN
Cl9faW5saW5lIGNoYXIqIF9fY2RlY2wgX19pbnNlY3VyZV9fc3RydGltZSggY2hhciAqX0J1ZmZl
cikgeyBjaGFyKiBfX2NkZWNsIF9zdHJ0aW1lKCBjaGFyICpfQnVmZmVyKTsgcmV0dXJuIF9zdHJ0
aW1lKF9CdWZmZXIpOyB9IGV4dGVybiAiQysrIiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBfVD4gaW5s
aW5lICBjaGFyKiBfX2NkZWNsIF9zdHJ0aW1lKF9UICZfQnVmZmVyKSB0aHJvdygpIHsgcmV0dXJu
IF9faW5zZWN1cmVfX3N0cnRpbWUoc3RhdGljX2Nhc3Q8Y2hhciAqPihfQnVmZmVyKSk7IH0gdGVt
cGxhdGUgPHR5cGVuYW1lIF9UPiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgX3N0cnRpbWUoY29uc3Qg
X1QgJl9CdWZmZXIpIHRocm93KCkgeyByZXR1cm4gX19pbnNlY3VyZV9fc3RydGltZShzdGF0aWNf
Y2FzdDxjaGFyICo+KF9CdWZmZXIpKTsgfSB0ZW1wbGF0ZSA8PiBpbmxpbmUgIGNoYXIqIF9fY2Rl
Y2wgX3N0cnRpbWUoIGNoYXIgKiAmX0J1ZmZlcikgdGhyb3coKSB7IHJldHVybiBfX2luc2VjdXJl
X19zdHJ0aW1lKF9CdWZmZXIpOyB9IHRlbXBsYXRlIDxzaXplX3QgX1NpemU+IGlubGluZSBjaGFy
KiBfX2NkZWNsIF9zdHJ0aW1lKGNoYXIgKCZfQnVmZmVyKVtfU2l6ZV0pIHRocm93KCkgeyByZXR1
cm4gKChfc3RydGltZV9zKF9CdWZmZXIsIF9TaXplKSkgPT0gMCA/IF9CdWZmZXIgOiAwKTsgfSB0
ZW1wbGF0ZSA8PiBpbmxpbmUgIGNoYXIqIF9fY2RlY2wgX3N0cnRpbWU8MT4oY2hhciAoJl9CdWZm
ZXIpWzFdKSB0aHJvdygpIHsgcmV0dXJuICgoX3N0cnRpbWVfcyhfQnVmZmVyLCAxKSkgPT0gMCA/
IF9CdWZmZXIgOiAwKTsgfSB9DQojbGluZSAzMTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHRpbWUuaCINCg0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIF9fdGltZTMyX3QgX19jZGVjbCBfdGltZTMyKA0KICAgICAg
X190aW1lMzJfdCogX1RpbWUNCiAgICApOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgX190aW1l
NjRfdCBfX2NkZWNsIF90aW1lNjQoDQogICAgICBfX3RpbWU2NF90KiBfVGltZQ0KICAgICk7DQoN
CiANCiANCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgX19jZGVjbCBfdGltZXNwZWMzMl9nZXQo
DQogICAgICBzdHJ1Y3QgX3RpbWVzcGVjMzIqIF9UcywNCiAgICAgICBpbnQgICAgICAgICAgICAg
ICAgIF9CYXNlDQogICAgKTsNCg0KIA0KIA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIF90aW1lc3BlYzY0X2dldCgNCiAgICAgIHN0cnVjdCBfdGltZXNwZWM2NCogX1RzLA0KICAg
ICAgIGludCAgICAgICAgICAgICAgICAgX0Jhc2UNCiAgICApOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19jZGVjbCBfdHpzZXQodm9pZCk7DQoN
CiAgICANCiAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoaXMgZnVuY3Rpb24gb3IgdmFyaWFi
bGUgaGFzIGJlZW4gc3VwZXJjZWRlZCBieSBuZXdlciBsaWJyYXJ5ICIgIm9yIG9wZXJhdGluZyBz
eXN0ZW0gZnVuY3Rpb25hbGl0eS4gQ29uc2lkZXIgdXNpbmcgIiAiR2V0TG9jYWxUaW1lIiAiICIg
Imluc3RlYWQuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdW5zaWduZWQgX19jZGVjbCBfZ2V0c3lzdGltZSgNCiAgICAgICAgICBzdHJ1
Y3QgdG0qIF9UbQ0KICAgICAgICApOw0KDQogICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGlz
IGZ1bmN0aW9uIG9yIHZhcmlhYmxlIGhhcyBiZWVuIHN1cGVyY2VkZWQgYnkgbmV3ZXIgbGlicmFy
eSAiICJvciBvcGVyYXRpbmcgc3lzdGVtIGZ1bmN0aW9uYWxpdHkuIENvbnNpZGVyIHVzaW5nICIg
IlNldExvY2FsVGltZSIgIiAiICJpbnN0ZWFkLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMu
IikpDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHVuc2lnbmVkIF9fY2RlY2wgX3NldHN5c3Rp
bWUoDQogICAgICAgICAgc3RydWN0IHRtKiBfVG0sDQogICAgICAgICAgdW5zaWduZWQgICBfTWls
bGlzZWNvbmRzDQogICAgICAgICk7DQoNCiNsaW5lIDM2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcdGltZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAg
ICAgICAgIA0KICAgICAgICBzdGF0aWMgX19pbmxpbmUgY2hhciogX19jZGVjbCBjdGltZSgNCiAg
ICAgICAgICAgICAgdGltZV90IGNvbnN0KiBjb25zdCBfVGltZQ0KICAgICAgICAgICAgKQ0KICAg
ICAgICB7DQogICAgICAgICAgICByZXR1cm4gX2N0aW1lNjQoX1RpbWUpOw0KICAgICAgICB9DQoN
CiAgICAgICAgIA0KICAgICAgICBzdGF0aWMgX19pbmxpbmUgZG91YmxlIF9fY2RlY2wgZGlmZnRp
bWUoDQogICAgICAgICAgICAgIHRpbWVfdCBjb25zdCBfVGltZTEsDQogICAgICAgICAgICAgIHRp
bWVfdCBjb25zdCBfVGltZTINCiAgICAgICAgICAgICkNCiAgICAgICAgew0KICAgICAgICAgICAg
cmV0dXJuIF9kaWZmdGltZTY0KF9UaW1lMSwgX1RpbWUyKTsNCiAgICAgICAgfQ0KDQogICAgICAg
ICAgDQogICAgICAgIHN0YXRpYyBfX2lubGluZSBzdHJ1Y3QgdG0qIF9fY2RlY2wgZ210aW1lKA0K
ICAgICAgICAgICAgICB0aW1lX3QgY29uc3QqIGNvbnN0IF9UaW1lKQ0KICAgICAgICB7DQogICAg
ICAgICAgICByZXR1cm4gX2dtdGltZTY0KF9UaW1lKTsNCiAgICAgICAgfQ0KDQogICAgICAgIA0K
ICAgICAgICBzdGF0aWMgX19pbmxpbmUgc3RydWN0IHRtKiBfX2NkZWNsIGxvY2FsdGltZSgNCiAg
ICAgICAgICAgICAgdGltZV90IGNvbnN0KiBjb25zdCBfVGltZQ0KICAgICAgICAgICAgKQ0KICAg
ICAgICB7DQogICAgICAgICAgICByZXR1cm4gX2xvY2FsdGltZTY0KF9UaW1lKTsNCiAgICAgICAg
fQ0KDQogICAgICAgICANCiAgICAgICAgc3RhdGljIF9faW5saW5lIHRpbWVfdCBfX2NkZWNsIF9t
a2dtdGltZSgNCiAgICAgICAgICAgICAgc3RydWN0IHRtKiBjb25zdCBfVG0NCiAgICAgICAgICAg
ICkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIF9ta2dtdGltZTY0KF9UbSk7DQogICAg
ICAgIH0NCg0KICAgICAgICANCiAgICAgICAgc3RhdGljIF9faW5saW5lIHRpbWVfdCBfX2NkZWNs
IG1rdGltZSgNCiAgICAgICAgICAgICAgc3RydWN0IHRtKiBjb25zdCBfVG0NCiAgICAgICAgICAg
ICkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIF9ta3RpbWU2NChfVG0pOw0KICAgICAg
ICB9DQoNCiAgICAgICAgc3RhdGljIF9faW5saW5lIHRpbWVfdCBfX2NkZWNsIHRpbWUoDQogICAg
ICAgICAgICAgIHRpbWVfdCogY29uc3QgX1RpbWUNCiAgICAgICAgICAgICkNCiAgICAgICAgew0K
ICAgICAgICAgICAgcmV0dXJuIF90aW1lNjQoX1RpbWUpOw0KICAgICAgICB9DQoNCiAgICAgICAg
IA0KICAgICAgICBzdGF0aWMgX19pbmxpbmUgaW50IF9fY2RlY2wgdGltZXNwZWNfZ2V0KA0KICAg
ICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMqIGNvbnN0IF9UcywNCiAgICAgICAgICAgICAgIGlu
dCAgICAgICAgICAgICAgY29uc3QgX0Jhc2UNCiAgICAgICAgICAgICkNCiAgICAgICAgew0KICAg
ICAgICAgICAgcmV0dXJuIF90aW1lc3BlYzY0X2dldCgoc3RydWN0IF90aW1lc3BlYzY0KilfVHMs
IF9CYXNlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAg
ICBzdGF0aWMgX19pbmxpbmUgZXJybm9fdCBfX2NkZWNsIGN0aW1lX3MoDQogICAgICAgICAgICAg
ICAgICAgIGNoYXIqICAgICAgICAgY29uc3QgX0J1ZmZlciwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICAgIGNvbnN0IF9TaXpl
SW5CeXRlcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZV90IGNvbnN0KiBjb25zdCBfVGltZQ0KICAgICAgICAgICAg
ICAgICkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX2N0aW1lNjRfcyhf
QnVmZmVyLCBfU2l6ZUluQnl0ZXMsIF9UaW1lKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgDQogICAgICAgICAgICBzdGF0aWMgX19pbmxpbmUgZXJybm9fdCBfX2NkZWNsIGdtdGltZV9z
KA0KICAgICAgICAgICAgICAgICAgc3RydWN0IHRtKiAgICBjb25zdCBfVG0sDQogICAgICAgICAg
ICAgICAgICAgdGltZV90IGNvbnN0KiBjb25zdCBfVGltZQ0KICAgICAgICAgICAgICAgICkNCiAg
ICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX2dtdGltZTY0X3MoX1RtLCBfVGlt
ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgc3RhdGljIF9f
aW5saW5lIGVycm5vX3QgX19jZGVjbCBsb2NhbHRpbWVfcygNCiAgICAgICAgICAgICAgICAgIHN0
cnVjdCB0bSogICAgY29uc3QgX1RtLA0KICAgICAgICAgICAgICAgICAgIHRpbWVfdCBjb25zdCog
Y29uc3QgX1RpbWUNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIF9sb2NhbHRpbWU2NF9zKF9UbSwgX1RpbWUpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAjbGluZSA1NjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNc
XDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHRpbWUuaCINCg0KICAgICNsaW5lIDU2
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcdGltZS5oIg0KDQojbGluZSA1NjcgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHRp
bWUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQogICAgDQogICAgICAgIF9fZGVjbHNw
ZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVk
LiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJf
dHpzZXQiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIHZvaWQgX19jZGVjbCB0enNldCh2b2lkKTsNCiAgICAjbGluZSA1ODIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBc
XHVjcnRcXHRpbWUuaCINCg0KI2xpbmUgNTg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2lu
ZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFx0aW1lLmgiDQoNCg0K
DQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSA1
OTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwx
MC4wLjE5MDQxLjBcXHVjcnRcXHRpbWUuaCINCiNsaW5lIDE0ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNocm9ubyINCg0KI2xpbmUgMSAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dGltZWMuaCINCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgp
DQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4
MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMg
NDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYy
OTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KDQpzdHJ1Y3QgeHRpbWUgeyAN
CiAgICBfX3RpbWU2NF90IHNlYzsNCiAgICBsb25nIG5zZWM7DQp9Ow0KDQogaW50IF9fY2RlY2wg
eHRpbWVfZ2V0KHh0aW1lKiwgaW50KTsNCg0KIGxvbmcgX19jZGVjbCBfWHRpbWVfZGlmZl90b19t
aWxsaXMoY29uc3QgeHRpbWUqKTsNCiBsb25nIF9fY2RlY2wgX1h0aW1lX2RpZmZfdG9fbWlsbGlz
Mihjb25zdCB4dGltZSosIGNvbnN0IHh0aW1lKik7DQogbG9uZyBsb25nIF9fY2RlY2wgX1h0aW1l
X2dldF90aWNrcygpOw0KDQoNCg0KIGxvbmcgbG9uZyBfX2NkZWNsIF9RdWVyeV9wZXJmX2NvdW50
ZXIoKTsNCiBsb25nIGxvbmcgX19jZGVjbCBfUXVlcnlfcGVyZl9mcmVxdWVuY3koKTsNCg0KfQ0K
DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSA0NiAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dGltZWMu
aCINCiNsaW5lIDQ3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHh0aW1lYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjaHJv
bm8iDQoNCiNwcmFnbWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQoj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1
ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0Nzkz
IDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1l
c3BhY2Ugc3RkIHsNCm5hbWVzcGFjZSBjaHJvbm8gew0KICAgIA0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfUmVwPg0KICAgIHN0cnVjdCB0cmVhdF9hc19mbG9hdGluZ19wb2ludCA6IGlzX2Zsb2F0aW5n
X3BvaW50PF9SZXA+IHt9OyANCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfUmVwPg0KICAgIGlubGlu
ZSBjb25zdGV4cHIgYm9vbCB0cmVhdF9hc19mbG9hdGluZ19wb2ludF92ID0gdHJlYXRfYXNfZmxv
YXRpbmdfcG9pbnQ8X1JlcD46OnZhbHVlOw0KDQogICAgDQogICAgdGVtcGxhdGUgPGNsYXNzIF9S
ZXA+DQogICAgc3RydWN0IGR1cmF0aW9uX3ZhbHVlcyB7IA0KICAgICAgICBbW25vZGlzY2FyZF1d
IHN0YXRpYyBjb25zdGV4cHIgX1JlcCB6ZXJvKCkgbm9leGNlcHQgew0KICAgICAgICAgICAgDQog
ICAgICAgICAgICByZXR1cm4gX1JlcCgwKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFtbbm9kaXNj
YXJkXV0gc3RhdGljIGNvbnN0ZXhwciBfUmVwKG1pbikoKSBub2V4Y2VwdCB7DQogICAgICAgICAg
ICANCiAgICAgICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0czxfUmVwPjo6bG93ZXN0KCk7DQog
ICAgICAgIH0NCg0KICAgICAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyBjb25zdGV4cHIgX1JlcCht
YXgpKCkgbm9leGNlcHQgew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gKG51bWVy
aWNfbGltaXRzPF9SZXA+OjptYXgpKCk7DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgDQogICAg
dGVtcGxhdGUgPGNsYXNzIF9SZXAsIGNsYXNzIF9QZXJpb2QgPSByYXRpbzwxPj4NCiAgICBjbGFz
cyBkdXJhdGlvbjsNCg0KICAgIA0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHk+DQogICAgaW5saW5l
IGNvbnN0ZXhwciBib29sIF9Jc19kdXJhdGlvbl92ID0gX0lzX3NwZWNpYWxpemF0aW9uX3Y8X1R5
LCBkdXJhdGlvbj47DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RvLCBjbGFzcyBfUmVwLCBjbGFz
cyBfUGVyaW9kLCBlbmFibGVfaWZfdDxfSXNfZHVyYXRpb25fdjxfVG8+LCBpbnQ+ID0gMD4NCiAg
ICBjb25zdGV4cHIgX1RvIGR1cmF0aW9uX2Nhc3QoY29uc3QgZHVyYXRpb248X1JlcCwgX1Blcmlv
ZD4mKSBub2V4Y2VwdCgNCiAgICAgICAgaXNfYXJpdGhtZXRpY192PF9SZXA+JiYgaXNfYXJpdGht
ZXRpY192PHR5cGVuYW1lIF9Ubzo6cmVwPik7IA0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SZXAs
IGNsYXNzIF9QZXJpb2Q+DQogICAgY2xhc3MgZHVyYXRpb24geyANCiAgICBwdWJsaWM6DQogICAg
ICAgIHVzaW5nIHJlcCAgICA9IF9SZXA7DQogICAgICAgIHVzaW5nIHBlcmlvZCA9IHR5cGVuYW1l
IF9QZXJpb2Q6OnR5cGU7DQoNCiAgICAgICAgc3RhdGljX2Fzc2VydCghX0lzX2R1cmF0aW9uX3Y8
X1JlcD4sICJkdXJhdGlvbiBjYW4ndCBoYXZlIGR1cmF0aW9uIGFzIGZpcnN0IHRlbXBsYXRlIGFy
Z3VtZW50Iik7DQogICAgICAgIHN0YXRpY19hc3NlcnQoX0lzX3JhdGlvX3Y8X1BlcmlvZD4sICJw
ZXJpb2Qgbm90IGFuIGluc3RhbmNlIG9mIHN0ZDo6cmF0aW8iKTsNCiAgICAgICAgc3RhdGljX2Fz
c2VydCgwIDwgX1BlcmlvZDo6bnVtLCAicGVyaW9kIG5lZ2F0aXZlIG9yIHplcm8iKTsNCg0KICAg
ICAgICBjb25zdGV4cHIgZHVyYXRpb24oKSA9IGRlZmF1bHQ7DQoNCiAgICAgICAgdGVtcGxhdGUg
PGNsYXNzIF9SZXAyLA0KICAgICAgICAgICAgZW5hYmxlX2lmX3Q8aXNfY29udmVydGlibGVfdjxj
b25zdCBfUmVwMiYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JlcD4gJiYgKHRyZWF0
X2FzX2Zsb2F0aW5nX3BvaW50X3Y8X1JlcD4gfHwgIXRyZWF0X2FzX2Zsb2F0aW5nX3BvaW50X3Y8
X1JlcDI+KSwNCiAgICAgICAgICAgICAgICBpbnQ+ID0gMD4NCiAgICAgICAgY29uc3RleHByIGV4
cGxpY2l0IGR1cmF0aW9uKGNvbnN0IF9SZXAyJiBfVmFsKSBub2V4Y2VwdCgNCiAgICAgICAgICAg
IGlzX2FyaXRobWV0aWNfdjxfUmVwPiYmIGlzX2FyaXRobWV0aWNfdjxfUmVwMj4pIA0KICAgICAg
ICAgICAgOiBfTXlSZXAoc3RhdGljX2Nhc3Q8X1JlcD4oX1ZhbCkpIHt9DQoNCiAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIF9SZXAyLCBjbGFzcyBfUGVyaW9kMiwNCiAgICAgICAgICAgIGVuYWJsZV9p
Zl90PA0KICAgICAgICAgICAgICAgIHRyZWF0X2FzX2Zsb2F0aW5nX3BvaW50X3Y8DQogICAgICAg
ICAgICAgICAgICAgIF9SZXA+IHx8IChfUmF0aW9fZGl2aWRlX3NmaW5hZTxfUGVyaW9kMiwgX1Bl
cmlvZD46OmRlbiA9PSAxICYmICF0cmVhdF9hc19mbG9hdGluZ19wb2ludF92PF9SZXAyPiksDQog
ICAgICAgICAgICAgICAgaW50PiA9IDA+DQogICAgICAgIGNvbnN0ZXhwciBkdXJhdGlvbihjb25z
dCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+JiBfRHVyKSBub2V4Y2VwdCgNCiAgICAgICAgICAg
IGlzX2FyaXRobWV0aWNfdjxfUmVwPiYmIGlzX2FyaXRobWV0aWNfdjxfUmVwMj4pIA0KICAgICAg
ICAgICAgOiBfTXlSZXAoY2hyb25vOjpkdXJhdGlvbl9jYXN0PGR1cmF0aW9uPihfRHVyKS5jb3Vu
dCgpKSB7fQ0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIF9SZXAgY291bnQoKSBj
b25zdCBub2V4Y2VwdChpc19hcml0aG1ldGljX3Y8X1JlcD4pICB7DQogICAgICAgICAgICByZXR1
cm4gX015UmVwOw0KICAgICAgICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
Y29tbW9uX3R5cGVfdDxkdXJhdGlvbj4gb3BlcmF0b3IrKCkgY29uc3QNCiAgICAgICAgICAgIG5v
ZXhjZXB0KGlzX2FyaXRobWV0aWNfdjxfUmVwPikgIHsNCiAgICAgICAgICAgIHJldHVybiBjb21t
b25fdHlwZV90PGR1cmF0aW9uPigqdGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBjb21tb25fdHlwZV90PGR1cmF0aW9uPiBvcGVyYXRvci0oKSBjb25z
dA0KICAgICAgICAgICAgbm9leGNlcHQoaXNfYXJpdGhtZXRpY192PF9SZXA+KSAgew0KICAgICAg
ICAgICAgcmV0dXJuIGNvbW1vbl90eXBlX3Q8ZHVyYXRpb24+KC1fTXlSZXApOw0KICAgICAgICB9
DQoNCiAgICAgICAgY29uc3RleHByIGR1cmF0aW9uJiBvcGVyYXRvcisrKCkgbm9leGNlcHQoaXNf
YXJpdGhtZXRpY192PF9SZXA+KSAgew0KICAgICAgICAgICAgKytfTXlSZXA7DQogICAgICAgICAg
ICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdGV4cHIgZHVyYXRpb24g
b3BlcmF0b3IrKyhpbnQpIG5vZXhjZXB0KGlzX2FyaXRobWV0aWNfdjxfUmVwPikgIHsNCiAgICAg
ICAgICAgIHJldHVybiBkdXJhdGlvbihfTXlSZXArKyk7DQogICAgICAgIH0NCg0KICAgICAgICBj
b25zdGV4cHIgZHVyYXRpb24mIG9wZXJhdG9yLS0oKSBub2V4Y2VwdChpc19hcml0aG1ldGljX3Y8
X1JlcD4pICB7DQogICAgICAgICAgICAtLV9NeVJlcDsNCiAgICAgICAgICAgIHJldHVybiAqdGhp
czsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0ZXhwciBkdXJhdGlvbiBvcGVyYXRvci0tKGlu
dCkgbm9leGNlcHQoaXNfYXJpdGhtZXRpY192PF9SZXA+KSAgew0KICAgICAgICAgICAgcmV0dXJu
IGR1cmF0aW9uKF9NeVJlcC0tKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0ZXhwciBkdXJh
dGlvbiYgb3BlcmF0b3IrPShjb25zdCBkdXJhdGlvbiYgX1JpZ2h0KSBub2V4Y2VwdChpc19hcml0
aG1ldGljX3Y8X1JlcD4pICB7DQogICAgICAgICAgICBfTXlSZXAgKz0gX1JpZ2h0Ll9NeVJlcDsN
CiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0ZXhw
ciBkdXJhdGlvbiYgb3BlcmF0b3ItPShjb25zdCBkdXJhdGlvbiYgX1JpZ2h0KSBub2V4Y2VwdChp
c19hcml0aG1ldGljX3Y8X1JlcD4pICB7DQogICAgICAgICAgICBfTXlSZXAgLT0gX1JpZ2h0Ll9N
eVJlcDsNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIGNv
bnN0ZXhwciBkdXJhdGlvbiYgb3BlcmF0b3IqPShjb25zdCBfUmVwJiBfUmlnaHQpIG5vZXhjZXB0
KGlzX2FyaXRobWV0aWNfdjxfUmVwPikgIHsNCiAgICAgICAgICAgIF9NeVJlcCAqPSBfUmlnaHQ7
DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdGV4
cHIgZHVyYXRpb24mIG9wZXJhdG9yLz0oY29uc3QgX1JlcCYgX1JpZ2h0KSBub2V4Y2VwdChpc19h
cml0aG1ldGljX3Y8X1JlcD4pICB7DQogICAgICAgICAgICBfTXlSZXAgLz0gX1JpZ2h0Ow0KICAg
ICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3RleHByIGR1
cmF0aW9uJiBvcGVyYXRvciU9KGNvbnN0IF9SZXAmIF9SaWdodCkgbm9leGNlcHQoaXNfYXJpdGht
ZXRpY192PF9SZXA+KSAgew0KICAgICAgICAgICAgX015UmVwICU9IF9SaWdodDsNCiAgICAgICAg
ICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0ZXhwciBkdXJhdGlv
biYgb3BlcmF0b3IlPShjb25zdCBkdXJhdGlvbiYgX1JpZ2h0KSBub2V4Y2VwdChpc19hcml0aG1l
dGljX3Y8X1JlcD4pICB7DQogICAgICAgICAgICBfTXlSZXAgJT0gX1JpZ2h0LmNvdW50KCk7DQog
ICAgICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICBbW25vZGlzY2Fy
ZF1dIHN0YXRpYyBjb25zdGV4cHIgZHVyYXRpb24gemVybygpIG5vZXhjZXB0IHsNCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgcmV0dXJuIGR1cmF0aW9uKGR1cmF0aW9uX3ZhbHVlczxfUmVwPjo6
emVybygpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0
ZXhwciBkdXJhdGlvbihtaW4pKCkgbm9leGNlcHQgew0KICAgICAgICAgICAgDQogICAgICAgICAg
ICByZXR1cm4gZHVyYXRpb24oKGR1cmF0aW9uX3ZhbHVlczxfUmVwPjo6bWluKSgpKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciBkdXJhdGlvbiht
YXgpKCkgbm9leGNlcHQgew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gZHVyYXRp
b24oKGR1cmF0aW9uX3ZhbHVlczxfUmVwPjo6bWF4KSgpKTsNCiAgICAgICAgfQ0KDQogICAgcHJp
dmF0ZToNCiAgICAgICAgX1JlcCBfTXlSZXA7IA0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24gPSB0eXBlbmFtZSBfQ2xvY2s6OmR1cmF0aW9uPg0K
ICAgIGNsYXNzIHRpbWVfcG9pbnQgeyANCiAgICBwdWJsaWM6DQogICAgICAgIHVzaW5nIGNsb2Nr
ICAgID0gX0Nsb2NrOw0KICAgICAgICB1c2luZyBkdXJhdGlvbiA9IF9EdXJhdGlvbjsNCiAgICAg
ICAgdXNpbmcgcmVwICAgICAgPSB0eXBlbmFtZSBfRHVyYXRpb246OnJlcDsNCiAgICAgICAgdXNp
bmcgcGVyaW9kICAgPSB0eXBlbmFtZSBfRHVyYXRpb246OnBlcmlvZDsNCg0KICAgICAgICBzdGF0
aWNfYXNzZXJ0KF9Jc19kdXJhdGlvbl92PF9EdXJhdGlvbj4sICJkdXJhdGlvbiBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIHN0ZDo6ZHVyYXRpb24iKTsNCg0KICAgICAgICBjb25zdGV4cHIgdGltZV9w
b2ludCgpID0gZGVmYXVsdDsNCg0KICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgdGltZV9wb2lu
dChjb25zdCBfRHVyYXRpb24mIF9PdGhlcikgbm9leGNlcHQoaXNfYXJpdGhtZXRpY192PHJlcD4p
IA0KICAgICAgICAgICAgOiBfTXlEdXIoX090aGVyKSB7fQ0KDQogICAgICAgIHRlbXBsYXRlIDxj
bGFzcyBfRHVyYXRpb24yLCBlbmFibGVfaWZfdDxpc19jb252ZXJ0aWJsZV92PF9EdXJhdGlvbjIs
IF9EdXJhdGlvbj4sIGludD4gPSAwPg0KICAgICAgICBjb25zdGV4cHIgdGltZV9wb2ludChjb25z
dCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cmF0aW9uMj4mIF9UcCkgbm9leGNlcHQoDQogICAgICAg
ICAgICBpc19hcml0aG1ldGljX3Y8cmVwPiYmIGlzX2FyaXRobWV0aWNfdjx0eXBlbmFtZSBfRHVy
YXRpb24yOjpyZXA+KSANCiAgICAgICAgICAgIDogX015RHVyKF9UcC50aW1lX3NpbmNlX2Vwb2No
KCkpIHt9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0R1cmF0aW9uIHRpbWVf
c2luY2VfZXBvY2goKSBjb25zdCBub2V4Y2VwdChpc19hcml0aG1ldGljX3Y8cmVwPikgIHsNCiAg
ICAgICAgICAgIHJldHVybiBfTXlEdXI7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdGV4cHIg
dGltZV9wb2ludCYgb3BlcmF0b3IrPShjb25zdCBfRHVyYXRpb24mIF9EdXIpIG5vZXhjZXB0KGlz
X2FyaXRobWV0aWNfdjxyZXA+KSAgew0KICAgICAgICAgICAgX015RHVyICs9IF9EdXI7DQogICAg
ICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdGV4cHIgdGlt
ZV9wb2ludCYgb3BlcmF0b3ItPShjb25zdCBfRHVyYXRpb24mIF9EdXIpIG5vZXhjZXB0KGlzX2Fy
aXRobWV0aWNfdjxyZXA+KSAgew0KICAgICAgICAgICAgX015RHVyIC09IF9EdXI7DQogICAgICAg
ICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICBbW25vZGlzY2FyZF1dIHN0
YXRpYyBjb25zdGV4cHIgdGltZV9wb2ludChtaW4pKCkgbm9leGNlcHQgew0KICAgICAgICAgICAg
cmV0dXJuIHRpbWVfcG9pbnQoKF9EdXJhdGlvbjo6bWluKSgpKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIGNvbnN0ZXhwciB0aW1lX3BvaW50KG1heCkoKSBub2V4
Y2VwdCB7DQogICAgICAgICAgICByZXR1cm4gdGltZV9wb2ludCgoX0R1cmF0aW9uOjptYXgpKCkp
Ow0KICAgICAgICB9DQoNCiAgICBwcml2YXRlOg0KICAgICAgICBfRHVyYXRpb24gX015RHVye2R1
cmF0aW9uOjp6ZXJvKCl9OyANCiAgICB9Ow0KfSANCg0KDQp0ZW1wbGF0ZSA8aW50bWF4X3QgX0F4
LCBpbnRtYXhfdCBfQng+DQpzdHJ1Y3QgX0xjbSA6IGludGVncmFsX2NvbnN0YW50PGludG1heF90
LCAoX0F4IC8gX0djZDxfQXgsIF9CeD46OnZhbHVlKSAqIF9CeD4ge307IA0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfUmVwMSwgY2xhc3MgX1BlcmlvZDEsIGNsYXNzIF9SZXAyLCBjbGFzcyBfUGVyaW9k
Mj4NCnN0cnVjdCBjb21tb25fdHlwZTxjaHJvbm86OmR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4s
DQogICAgY2hyb25vOjpkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+PiB7IA0KICAgIHVzaW5nIHR5
cGUgPSBjaHJvbm86OmR1cmF0aW9uPGNvbW1vbl90eXBlX3Q8X1JlcDEsIF9SZXAyPiwNCiAgICAg
ICAgcmF0aW88X0djZDxfUGVyaW9kMTo6bnVtLCBfUGVyaW9kMjo6bnVtPjo6dmFsdWUsIF9MY208
X1BlcmlvZDE6OmRlbiwgX1BlcmlvZDI6OmRlbj46OnZhbHVlPj47DQp9Ow0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24xLCBjbGFzcyBfRHVyYXRpb24yPg0Kc3RydWN0
IGNvbW1vbl90eXBlPGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbjE+LA0KICAg
IGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbjI+PiB7IA0KICAgIHVzaW5nIHR5
cGUgPSBjaHJvbm86OnRpbWVfcG9pbnQ8X0Nsb2NrLCBjb21tb25fdHlwZV90PF9EdXJhdGlvbjEs
IF9EdXJhdGlvbjI+PjsNCn07DQoNCm5hbWVzcGFjZSBjaHJvbm8gew0KICAgIA0KICAgIHRlbXBs
YXRlIDxjbGFzcyBfUmVwMSwgY2xhc3MgX1BlcmlvZDEsIGNsYXNzIF9SZXAyLCBjbGFzcyBfUGVy
aW9kMj4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjb21tb25fdHlwZV90PGR1cmF0aW9u
PF9SZXAxLCBfUGVyaW9kMT4sIGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4+DQogICAgICAgIG9w
ZXJhdG9yKyhjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfTGVmdCwgY29uc3QgZHVy
YXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgICAgIGlz
X2FyaXRobWV0aWNfdjxfUmVwMT4mJiBpc19hcml0aG1ldGljX3Y8X1JlcDI+KSAgew0KICAgICAg
ICB1c2luZyBfQ0QgPSBjb21tb25fdHlwZV90PGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4sIGR1
cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4+Ow0KICAgICAgICByZXR1cm4gX0NEKF9DRChfTGVmdCku
Y291bnQoKSArIF9DRChfUmlnaHQpLmNvdW50KCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfUmVwMSwgY2xhc3MgX1BlcmlvZDEsIGNsYXNzIF9SZXAyLCBjbGFzcyBfUGVyaW9kMj4N
CiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjb21tb25fdHlwZV90PGR1cmF0aW9uPF9SZXAx
LCBfUGVyaW9kMT4sIGR1cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4+DQogICAgICAgIG9wZXJhdG9y
LShjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfTGVmdCwgY29uc3QgZHVyYXRpb248
X1JlcDIsIF9QZXJpb2QyPiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgICAgIGlzX2FyaXRo
bWV0aWNfdjxfUmVwMT4mJiBpc19hcml0aG1ldGljX3Y8X1JlcDI+KSAgew0KICAgICAgICB1c2lu
ZyBfQ0QgPSBjb21tb25fdHlwZV90PGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4sIGR1cmF0aW9u
PF9SZXAyLCBfUGVyaW9kMj4+Ow0KICAgICAgICByZXR1cm4gX0NEKF9DRChfTGVmdCkuY291bnQo
KSAtIF9DRChfUmlnaHQpLmNvdW50KCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
UmVwMSwgY2xhc3MgX1BlcmlvZDEsIGNsYXNzIF9SZXAyLA0KICAgICAgICBlbmFibGVfaWZfdDxp
c19jb252ZXJ0aWJsZV92PGNvbnN0IF9SZXAyJiwgY29tbW9uX3R5cGVfdDxfUmVwMSwgX1JlcDI+
PiwgaW50PiA9IDA+DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgZHVyYXRpb248Y29tbW9u
X3R5cGVfdDxfUmVwMSwgX1JlcDI+LCBfUGVyaW9kMT4gb3BlcmF0b3IqKA0KICAgICAgICBjb25z
dCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfTGVmdCwNCiAgICAgICAgY29uc3QgX1JlcDIm
IF9SaWdodCkgbm9leGNlcHQoaXNfYXJpdGhtZXRpY192PF9SZXAxPiYmIGlzX2FyaXRobWV0aWNf
djxfUmVwMj4pICB7DQogICAgICAgIHVzaW5nIF9DUiA9IGNvbW1vbl90eXBlX3Q8X1JlcDEsIF9S
ZXAyPjsNCiAgICAgICAgdXNpbmcgX0NEID0gZHVyYXRpb248X0NSLCBfUGVyaW9kMT47DQogICAg
ICAgIHJldHVybiBfQ0QoX0NEKF9MZWZ0KS5jb3VudCgpICogX1JpZ2h0KTsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1JlcDEsIGNsYXNzIF9SZXAyLCBjbGFzcyBfUGVyaW9kMiwNCiAg
ICAgICAgZW5hYmxlX2lmX3Q8aXNfY29udmVydGlibGVfdjxjb25zdCBfUmVwMSYsIGNvbW1vbl90
eXBlX3Q8X1JlcDEsIF9SZXAyPj4sIGludD4gPSAwPg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIGR1cmF0aW9uPGNvbW1vbl90eXBlX3Q8X1JlcDEsIF9SZXAyPiwgX1BlcmlvZDI+DQogICAg
ICAgIG9wZXJhdG9yKihjb25zdCBfUmVwMSYgX0xlZnQsIGNvbnN0IGR1cmF0aW9uPF9SZXAyLCBf
UGVyaW9kMj4mIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAgICAgICBpc19hcml0aG1ldGljX3Y8
X1JlcDE+JiYgaXNfYXJpdGhtZXRpY192PF9SZXAyPikgIHsNCiAgICAgICAgcmV0dXJuIF9SaWdo
dCAqIF9MZWZ0Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQ1IsIGNsYXNzIF9QZXJp
b2QxLCBjbGFzcyBfUmVwMiwgYm9vbCA9IGlzX2NvbnZlcnRpYmxlX3Y8Y29uc3QgX1JlcDImLCBf
Q1I+Pg0KICAgIHN0cnVjdCBfRHVyYXRpb25fZGl2X21vZDEgeyANCiAgICAgICAgdXNpbmcgdHlw
ZSA9IGR1cmF0aW9uPF9DUiwgX1BlcmlvZDE+Ow0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX0NSLCBjbGFzcyBfUGVyaW9kMSwgY2xhc3MgX1JlcDI+DQogICAgc3RydWN0IF9EdXJhdGlv
bl9kaXZfbW9kMTxfQ1IsIF9QZXJpb2QxLCBfUmVwMiwgZmFsc2U+IHt9OyANCg0KICAgIHRlbXBs
YXRlIDxjbGFzcyBfQ1IsIGNsYXNzIF9QZXJpb2QxLCBjbGFzcyBfUmVwMiwgYm9vbCA9IF9Jc19k
dXJhdGlvbl92PF9SZXAyPj4NCiAgICBzdHJ1Y3QgX0R1cmF0aW9uX2Rpdl9tb2Qge307IA0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzIF9DUiwgY2xhc3MgX1BlcmlvZDEsIGNsYXNzIF9SZXAyPg0KICAg
IHN0cnVjdCBfRHVyYXRpb25fZGl2X21vZDxfQ1IsIF9QZXJpb2QxLCBfUmVwMiwgZmFsc2U+IDog
X0R1cmF0aW9uX2Rpdl9tb2QxPF9DUiwgX1BlcmlvZDEsIF9SZXAyPiB7DQogICAgICAgIA0KICAg
IH07DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JlcDEsIGNsYXNzIF9QZXJpb2QxLCBjbGFzcyBf
UmVwMj4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciB0eXBlbmFtZSBfRHVyYXRpb25fZGl2
X21vZDxjb21tb25fdHlwZV90PF9SZXAxLCBfUmVwMj4sIF9QZXJpb2QxLCBfUmVwMj46OnR5cGUg
b3BlcmF0b3IvKA0KICAgICAgICBjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfTGVm
dCwNCiAgICAgICAgY29uc3QgX1JlcDImIF9SaWdodCkgbm9leGNlcHQoaXNfYXJpdGhtZXRpY192
PF9SZXAxPiYmIGlzX2FyaXRobWV0aWNfdjxfUmVwMj4pICB7DQogICAgICAgIHVzaW5nIF9DUiA9
IGNvbW1vbl90eXBlX3Q8X1JlcDEsIF9SZXAyPjsNCiAgICAgICAgdXNpbmcgX0NEID0gZHVyYXRp
b248X0NSLCBfUGVyaW9kMT47DQogICAgICAgIHJldHVybiBfQ0QoX0NEKF9MZWZ0KS5jb3VudCgp
IC8gX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JlcDEsIGNsYXNzIF9Q
ZXJpb2QxLCBjbGFzcyBfUmVwMiwgY2xhc3MgX1BlcmlvZDI+DQogICAgW1tub2Rpc2NhcmRdXSBj
b25zdGV4cHIgY29tbW9uX3R5cGVfdDxfUmVwMSwgX1JlcDI+DQogICAgICAgIG9wZXJhdG9yLyhj
b25zdCBkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfTGVmdCwgY29uc3QgZHVyYXRpb248X1Jl
cDIsIF9QZXJpb2QyPiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgICAgIGlzX2FyaXRobWV0
aWNfdjxfUmVwMT4mJiBpc19hcml0aG1ldGljX3Y8X1JlcDI+KSAgew0KICAgICAgICB1c2luZyBf
Q0QgPSBjb21tb25fdHlwZV90PGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4sIGR1cmF0aW9uPF9S
ZXAyLCBfUGVyaW9kMj4+Ow0KICAgICAgICByZXR1cm4gX0NEKF9MZWZ0KS5jb3VudCgpIC8gX0NE
KF9SaWdodCkuY291bnQoKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JlcDEsIGNs
YXNzIF9QZXJpb2QxLCBjbGFzcyBfUmVwMj4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciB0
eXBlbmFtZSBfRHVyYXRpb25fZGl2X21vZDxjb21tb25fdHlwZV90PF9SZXAxLCBfUmVwMj4sIF9Q
ZXJpb2QxLCBfUmVwMj46OnR5cGUgb3BlcmF0b3IlKA0KICAgICAgICBjb25zdCBkdXJhdGlvbjxf
UmVwMSwgX1BlcmlvZDE+JiBfTGVmdCwNCiAgICAgICAgY29uc3QgX1JlcDImIF9SaWdodCkgbm9l
eGNlcHQoaXNfYXJpdGhtZXRpY192PF9SZXAxPiYmIGlzX2FyaXRobWV0aWNfdjxfUmVwMj4pICB7
DQogICAgICAgIHVzaW5nIF9DUiA9IGNvbW1vbl90eXBlX3Q8X1JlcDEsIF9SZXAyPjsNCiAgICAg
ICAgdXNpbmcgX0NEID0gZHVyYXRpb248X0NSLCBfUGVyaW9kMT47DQogICAgICAgIHJldHVybiBf
Q0QoX0NEKF9MZWZ0KS5jb3VudCgpICUgX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX1JlcDEsIGNsYXNzIF9QZXJpb2QxLCBjbGFzcyBfUmVwMiwgY2xhc3MgX1BlcmlvZDI+
DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29tbW9uX3R5cGVfdDxkdXJhdGlvbjxfUmVw
MSwgX1BlcmlvZDE+LCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+Pg0KICAgICAgICBvcGVyYXRv
ciUoY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYgX0xlZnQsIGNvbnN0IGR1cmF0aW9u
PF9SZXAyLCBfUGVyaW9kMj4mIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAgICAgICBpc19hcml0
aG1ldGljX3Y8X1JlcDE+JiYgaXNfYXJpdGhtZXRpY192PF9SZXAyPikgIHsNCiAgICAgICAgdXNp
bmcgX0NEID0gY29tbW9uX3R5cGVfdDxkdXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+LCBkdXJhdGlv
bjxfUmVwMiwgX1BlcmlvZDI+PjsNCiAgICAgICAgcmV0dXJuIF9DRChfQ0QoX0xlZnQpLmNvdW50
KCkgJSBfQ0QoX1JpZ2h0KS5jb3VudCgpKTsNCiAgICB9DQoNCiAgICANCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX1JlcDEsIGNsYXNzIF9QZXJpb2QxLCBjbGFzcyBfUmVwMiwgY2xhc3MgX1BlcmlvZDI+
DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbA0KICAgICAgICBvcGVyYXRvcj09KGNv
bnN0IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4mIF9MZWZ0LCBjb25zdCBkdXJhdGlvbjxfUmVw
MiwgX1BlcmlvZDI+JiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICAgICAgaXNfYXJpdGhtZXRp
Y192PF9SZXAxPiYmIGlzX2FyaXRobWV0aWNfdjxfUmVwMj4pICB7DQogICAgICAgIHVzaW5nIF9D
VCA9IGNvbW1vbl90eXBlX3Q8ZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiwgZHVyYXRpb248X1Jl
cDIsIF9QZXJpb2QyPj47DQogICAgICAgIHJldHVybiBfQ1QoX0xlZnQpLmNvdW50KCkgPT0gX0NU
KF9SaWdodCkuY291bnQoKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JlcDEsIGNs
YXNzIF9QZXJpb2QxLCBjbGFzcyBfUmVwMiwgY2xhc3MgX1BlcmlvZDI+DQogICAgW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgYm9vbA0KICAgICAgICBvcGVyYXRvciE9KGNvbnN0IGR1cmF0aW9uPF9S
ZXAxLCBfUGVyaW9kMT4mIF9MZWZ0LCBjb25zdCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+JiBf
UmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICAgICAgaXNfYXJpdGhtZXRpY192PF9SZXAxPiYmIGlz
X2FyaXRobWV0aWNfdjxfUmVwMj4pICB7DQogICAgICAgIHJldHVybiAhKF9MZWZ0ID09IF9SaWdo
dCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SZXAxLCBjbGFzcyBfUGVyaW9kMSwg
Y2xhc3MgX1JlcDIsIGNsYXNzIF9QZXJpb2QyPg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IGJvb2wNCiAgICAgICAgb3BlcmF0b3I8KGNvbnN0IGR1cmF0aW9uPF9SZXAxLCBfUGVyaW9kMT4m
IF9MZWZ0LCBjb25zdCBkdXJhdGlvbjxfUmVwMiwgX1BlcmlvZDI+JiBfUmlnaHQpIG5vZXhjZXB0
KA0KICAgICAgICAgICAgaXNfYXJpdGhtZXRpY192PF9SZXAxPiYmIGlzX2FyaXRobWV0aWNfdjxf
UmVwMj4pICB7DQogICAgICAgIHVzaW5nIF9DVCA9IGNvbW1vbl90eXBlX3Q8ZHVyYXRpb248X1Jl
cDEsIF9QZXJpb2QxPiwgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPj47DQogICAgICAgIHJldHVy
biBfQ1QoX0xlZnQpLmNvdW50KCkgPCBfQ1QoX1JpZ2h0KS5jb3VudCgpOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfUmVwMSwgY2xhc3MgX1BlcmlvZDEsIGNsYXNzIF9SZXAyLCBjbGFz
cyBfUGVyaW9kMj4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sDQogICAgICAgIG9w
ZXJhdG9yPD0oY29uc3QgZHVyYXRpb248X1JlcDEsIF9QZXJpb2QxPiYgX0xlZnQsIGNvbnN0IGR1
cmF0aW9uPF9SZXAyLCBfUGVyaW9kMj4mIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAgICAgICBp
c19hcml0aG1ldGljX3Y8X1JlcDE+JiYgaXNfYXJpdGhtZXRpY192PF9SZXAyPikgIHsNCiAgICAg
ICAgcmV0dXJuICEoX1JpZ2h0IDwgX0xlZnQpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfUmVwMSwgY2xhc3MgX1BlcmlvZDEsIGNsYXNzIF9SZXAyLCBjbGFzcyBfUGVyaW9kMj4NCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sDQogICAgICAgIG9wZXJhdG9yPihjb25zdCBk
dXJhdGlvbjxfUmVwMSwgX1BlcmlvZDE+JiBfTGVmdCwgY29uc3QgZHVyYXRpb248X1JlcDIsIF9Q
ZXJpb2QyPiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgICAgIGlzX2FyaXRobWV0aWNfdjxf
UmVwMT4mJiBpc19hcml0aG1ldGljX3Y8X1JlcDI+KSAgew0KICAgICAgICByZXR1cm4gX1JpZ2h0
IDwgX0xlZnQ7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SZXAxLCBjbGFzcyBfUGVy
aW9kMSwgY2xhc3MgX1JlcDIsIGNsYXNzIF9QZXJpb2QyPg0KICAgIFtbbm9kaXNjYXJkXV0gY29u
c3RleHByIGJvb2wNCiAgICAgICAgb3BlcmF0b3I+PShjb25zdCBkdXJhdGlvbjxfUmVwMSwgX1Bl
cmlvZDE+JiBfTGVmdCwgY29uc3QgZHVyYXRpb248X1JlcDIsIF9QZXJpb2QyPiYgX1JpZ2h0KSBu
b2V4Y2VwdCgNCiAgICAgICAgICAgIGlzX2FyaXRobWV0aWNfdjxfUmVwMT4mJiBpc19hcml0aG1l
dGljX3Y8X1JlcDI+KSAgew0KICAgICAgICByZXR1cm4gIShfTGVmdCA8IF9SaWdodCk7DQogICAg
fQ0KDQogICAgDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UbywgY2xhc3MgX1JlcCwgY2xhc3MgX1Bl
cmlvZCwgZW5hYmxlX2lmX3Q8X0lzX2R1cmF0aW9uX3Y8X1RvPiwgaW50PiBfRW5hYmxlZD4NCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfVG8gZHVyYXRpb25fY2FzdChjb25zdCBkdXJhdGlv
bjxfUmVwLCBfUGVyaW9kPiYgX0R1cikgbm9leGNlcHQoDQogICAgICAgIGlzX2FyaXRobWV0aWNf
djxfUmVwPiYmIGlzX2FyaXRobWV0aWNfdjx0eXBlbmFtZSBfVG86OnJlcD4pICB7DQogICAgICAg
IA0KICAgICAgICB1c2luZyBfQ0YgPSByYXRpb19kaXZpZGU8X1BlcmlvZCwgdHlwZW5hbWUgX1Rv
OjpwZXJpb2Q+Ow0KDQogICAgICAgIHVzaW5nIF9Ub1JlcCA9IHR5cGVuYW1lIF9Ubzo6cmVwOw0K
ICAgICAgICB1c2luZyBfQ1IgICAgPSBjb21tb25fdHlwZV90PF9Ub1JlcCwgX1JlcCwgaW50bWF4
X3Q+Ow0KDQogICAgICAgIGNvbnN0ZXhwciBib29sIF9OdW1faXNfb25lID0gX0NGOjpudW0gPT0g
MTsNCiAgICAgICAgY29uc3RleHByIGJvb2wgX0Rlbl9pc19vbmUgPSBfQ0Y6OmRlbiA9PSAxOw0K
DQogICAgICAgIGlmIChfRGVuX2lzX29uZSkgew0KICAgICAgICAgICAgaWYgKF9OdW1faXNfb25l
KSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9Ubz4oc3RhdGljX2Nhc3Q8
X1RvUmVwPihfRHVyLmNvdW50KCkpKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9Ubz4oDQogICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PF9Ub1JlcD4oc3RhdGljX2Nhc3Q8X0NSPihfRHVyLmNvdW50KCkpICogc3RhdGljX2Nh
c3Q8X0NSPihfQ0Y6Om51bSkpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgIGlmIChfTnVtX2lzX29uZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxfVG8+KA0KICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxfVG9SZXA+KHN0
YXRpY19jYXN0PF9DUj4oX0R1ci5jb3VudCgpKSAvIHN0YXRpY19jYXN0PF9DUj4oX0NGOjpkZW4p
KSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxfVG8+KHN0YXRpY19jYXN0PF9Ub1JlcD4oDQogICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PF9DUj4oX0R1ci5jb3VudCgpKSAqIHN0YXRpY19jYXN0PF9DUj4oX0NGOjpudW0pIC8g
c3RhdGljX2Nhc3Q8X0NSPihfQ0Y6OmRlbikpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIA0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVG8sIGNsYXNzIF9SZXAsIGNsYXNz
IF9QZXJpb2QsIGVuYWJsZV9pZl90PF9Jc19kdXJhdGlvbl92PF9Ubz4sIGludD4gPSAwPg0KICAg
IFtbbm9kaXNjYXJkXV0gY29uc3RleHByIF9UbyBmbG9vcihjb25zdCBkdXJhdGlvbjxfUmVwLCBf
UGVyaW9kPiYgX0R1cikgbm9leGNlcHQoDQogICAgICAgIGlzX2FyaXRobWV0aWNfdjxfUmVwPiYm
IGlzX2FyaXRobWV0aWNfdjx0eXBlbmFtZSBfVG86OnJlcD4pICB7DQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgY29uc3QgX1RvIF9DYXN0ZWR7Y2hyb25vOjpkdXJhdGlvbl9jYXN0PF9Ubz4o
X0R1cil9Ow0KICAgICAgICBpZiAoX0Nhc3RlZCA+IF9EdXIpIHsNCiAgICAgICAgICAgIHJldHVy
biBfVG97X0Nhc3RlZC5jb3VudCgpIC0gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgX1RvOjpyZXA+KDEp
fTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBfQ2FzdGVkOw0KICAgIH0NCg0KICAgIA0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfVG8sIGNsYXNzIF9SZXAsIGNsYXNzIF9QZXJpb2QsIGVuYWJs
ZV9pZl90PF9Jc19kdXJhdGlvbl92PF9Ubz4sIGludD4gPSAwPg0KICAgIFtbbm9kaXNjYXJkXV0g
Y29uc3RleHByIF9UbyBjZWlsKGNvbnN0IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+JiBfRHVyKSBu
b2V4Y2VwdCgNCiAgICAgICAgaXNfYXJpdGhtZXRpY192PF9SZXA+JiYgaXNfYXJpdGhtZXRpY192
PHR5cGVuYW1lIF9Ubzo6cmVwPikgIHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBjb25z
dCBfVG8gX0Nhc3RlZHtjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8X1RvPihfRHVyKX07DQogICAgICAg
IGlmIChfQ2FzdGVkIDwgX0R1cikgew0KICAgICAgICAgICAgcmV0dXJuIF9Ub3tfQ2FzdGVkLmNv
dW50KCkgKyBzdGF0aWNfY2FzdDx0eXBlbmFtZSBfVG86OnJlcD4oMSl9Ow0KICAgICAgICB9DQoN
CiAgICAgICAgcmV0dXJuIF9DYXN0ZWQ7DQogICAgfQ0KDQogICAgDQogICAgdGVtcGxhdGUgPGNs
YXNzIF9SZXA+DQogICAgY29uc3RleHByIGJvb2wgX0lzX2V2ZW4oX1JlcCBfVmFsKSBub2V4Y2Vw
dChpc19hcml0aG1ldGljX3Y8X1JlcD4pICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1Zh
bCAlIDIgPT0gMDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RvLCBjbGFzcyBfUmVw
LCBjbGFzcyBfUGVyaW9kLA0KICAgICAgICBlbmFibGVfaWZfdDxfSXNfZHVyYXRpb25fdjxfVG8+
ICYmICF0cmVhdF9hc19mbG9hdGluZ19wb2ludF92PHR5cGVuYW1lIF9Ubzo6cmVwPiwgaW50PiA9
IDA+DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX1RvIHJvdW5kKGNvbnN0IGR1cmF0aW9u
PF9SZXAsIF9QZXJpb2Q+JiBfRHVyKSBub2V4Y2VwdCgNCiAgICAgICAgaXNfYXJpdGhtZXRpY192
PF9SZXA+JiYgaXNfYXJpdGhtZXRpY192PHR5cGVuYW1lIF9Ubzo6cmVwPikgIHsNCiAgICAgICAg
DQogICAgICAgIGNvbnN0IF9UbyBfRmxvb3JlZHtjaHJvbm86OmZsb29yPF9Ubz4oX0R1cil9Ow0K
ICAgICAgICBjb25zdCBfVG8gX0NlaWxlZHtfRmxvb3JlZCArIF9Ub3sxfX07DQogICAgICAgIGNv
bnN0IGF1dG8gX0Zsb29yX2FkanVzdG1lbnQgPSBfRHVyIC0gX0Zsb29yZWQ7DQogICAgICAgIGNv
bnN0IGF1dG8gX0NlaWxfYWRqdXN0bWVudCAgPSBfQ2VpbGVkIC0gX0R1cjsNCiAgICAgICAgaWYg
KF9GbG9vcl9hZGp1c3RtZW50IDwgX0NlaWxfYWRqdXN0bWVudA0KICAgICAgICAgICAgfHwgKF9G
bG9vcl9hZGp1c3RtZW50ID09IF9DZWlsX2FkanVzdG1lbnQgJiYgX0lzX2V2ZW4oX0Zsb29yZWQu
Y291bnQoKSkpKSB7DQogICAgICAgICAgICByZXR1cm4gX0Zsb29yZWQ7DQogICAgICAgIH0NCg0K
ICAgICAgICByZXR1cm4gX0NlaWxlZDsNCiAgICB9DQoNCiAgICANCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MgX1JlcCwgY2xhc3MgX1BlcmlvZCwgZW5hYmxlX2lmX3Q8bnVtZXJpY19saW1pdHM8X1JlcD46
OmlzX3NpZ25lZCwgaW50PiA9IDA+DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgZHVyYXRp
b248X1JlcCwgX1BlcmlvZD4gYWJzKGNvbnN0IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+IF9EdXIp
IG5vZXhjZXB0KA0KICAgICAgICBpc19hcml0aG1ldGljX3Y8X1JlcD4pICB7DQogICAgICAgIA0K
ICAgICAgICByZXR1cm4gX0R1ciA8IGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+Ojp6ZXJvKCkgPyBk
dXJhdGlvbjxfUmVwLCBfUGVyaW9kPjo6emVybygpIC0gX0R1ciA6IF9EdXI7DQogICAgfQ0KDQog
ICAgDQogICAgdXNpbmcgbmFub3NlY29uZHMgID0gZHVyYXRpb248bG9uZyBsb25nLCBuYW5vPjsN
CiAgICB1c2luZyBtaWNyb3NlY29uZHMgPSBkdXJhdGlvbjxsb25nIGxvbmcsIG1pY3JvPjsNCiAg
ICB1c2luZyBtaWxsaXNlY29uZHMgPSBkdXJhdGlvbjxsb25nIGxvbmcsIG1pbGxpPjsNCiAgICB1
c2luZyBzZWNvbmRzICAgICAgPSBkdXJhdGlvbjxsb25nIGxvbmc+Ow0KICAgIHVzaW5nIG1pbnV0
ZXMgICAgICA9IGR1cmF0aW9uPGludCwgcmF0aW88NjA+PjsNCiAgICB1c2luZyBob3VycyAgICAg
ICAgPSBkdXJhdGlvbjxpbnQsIHJhdGlvPDM2MDA+PjsNCg0KICAgIA0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbiwgY2xhc3MgX1JlcCwgY2xhc3MgX1BlcmlvZD4N
CiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciB0aW1lX3BvaW50PF9DbG9jaywgY29tbW9uX3R5
cGVfdDxfRHVyYXRpb24sIGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+Pj4NCiAgICAgICAgb3BlcmF0
b3IrKGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24+JiBfTGVmdCwgY29uc3QgZHVy
YXRpb248X1JlcCwgX1BlcmlvZD4mIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAgICAgICBpc19h
cml0aG1ldGljX3Y8dHlwZW5hbWUgX0R1cmF0aW9uOjpyZXA+JiYgaXNfYXJpdGhtZXRpY192PF9S
ZXA+KSAgew0KICAgICAgICB1c2luZyBfUlQgPSB0aW1lX3BvaW50PF9DbG9jaywgY29tbW9uX3R5
cGVfdDxfRHVyYXRpb24sIGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+Pj47DQogICAgICAgIHJldHVy
biBfUlQoX0xlZnQudGltZV9zaW5jZV9lcG9jaCgpICsgX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX1JlcCwgY2xhc3MgX1BlcmlvZCwgY2xhc3MgX0Nsb2NrLCBjbGFzcyBf
RHVyYXRpb24+DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgdGltZV9wb2ludDxfQ2xvY2ss
IGNvbW1vbl90eXBlX3Q8ZHVyYXRpb248X1JlcCwgX1BlcmlvZD4sIF9EdXJhdGlvbj4+DQogICAg
ICAgIG9wZXJhdG9yKyhjb25zdCBkdXJhdGlvbjxfUmVwLCBfUGVyaW9kPiYgX0xlZnQsIGNvbnN0
IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24+JiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAg
ICAgICAgaXNfYXJpdGhtZXRpY192PF9SZXA+JiYgaXNfYXJpdGhtZXRpY192PHR5cGVuYW1lIF9E
dXJhdGlvbjo6cmVwPikgIHsNCiAgICAgICAgcmV0dXJuIF9SaWdodCArIF9MZWZ0Ow0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbiwgY2xhc3MgX1Jl
cCwgY2xhc3MgX1BlcmlvZD4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciB0aW1lX3BvaW50
PF9DbG9jaywgY29tbW9uX3R5cGVfdDxfRHVyYXRpb24sIGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+
Pj4NCiAgICAgICAgb3BlcmF0b3ItKGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24+
JiBfTGVmdCwgY29uc3QgZHVyYXRpb248X1JlcCwgX1BlcmlvZD4mIF9SaWdodCkgbm9leGNlcHQo
DQogICAgICAgICAgICBpc19hcml0aG1ldGljX3Y8dHlwZW5hbWUgX0R1cmF0aW9uOjpyZXA+JiYg
aXNfYXJpdGhtZXRpY192PF9SZXA+KSAgew0KICAgICAgICB1c2luZyBfUlQgPSB0aW1lX3BvaW50
PF9DbG9jaywgY29tbW9uX3R5cGVfdDxfRHVyYXRpb24sIGR1cmF0aW9uPF9SZXAsIF9QZXJpb2Q+
Pj47DQogICAgICAgIHJldHVybiBfUlQoX0xlZnQudGltZV9zaW5jZV9lcG9jaCgpIC0gX1JpZ2h0
KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24x
LCBjbGFzcyBfRHVyYXRpb24yPg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbW1vbl90
eXBlX3Q8X0R1cmF0aW9uMSwgX0R1cmF0aW9uMj4NCiAgICAgICAgb3BlcmF0b3ItKGNvbnN0IHRp
bWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24xPiYgX0xlZnQsIGNvbnN0IHRpbWVfcG9pbnQ8X0Ns
b2NrLCBfRHVyYXRpb24yPiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgICAgIGlzX2FyaXRo
bWV0aWNfdjx0eXBlbmFtZSBfRHVyYXRpb24xOjpyZXA+JiYgaXNfYXJpdGhtZXRpY192PHR5cGVu
YW1lIF9EdXJhdGlvbjI6OnJlcD4pICB7DQogICAgICAgIHJldHVybiBfTGVmdC50aW1lX3NpbmNl
X2Vwb2NoKCkgLSBfUmlnaHQudGltZV9zaW5jZV9lcG9jaCgpOw0KICAgIH0NCg0KICAgIA0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbjEsIGNsYXNzIF9EdXJhdGlv
bjI+DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbA0KICAgICAgICBvcGVyYXRvcj09
KGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24xPiYgX0xlZnQsIGNvbnN0IHRpbWVf
cG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24yPiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAgICAgICAg
IGlzX2FyaXRobWV0aWNfdjx0eXBlbmFtZSBfRHVyYXRpb24xOjpyZXA+JiYgaXNfYXJpdGhtZXRp
Y192PHR5cGVuYW1lIF9EdXJhdGlvbjI6OnJlcD4pICB7DQogICAgICAgIHJldHVybiBfTGVmdC50
aW1lX3NpbmNlX2Vwb2NoKCkgPT0gX1JpZ2h0LnRpbWVfc2luY2VfZXBvY2goKTsNCiAgICB9DQoN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24xLCBjbGFzcyBfRHVy
YXRpb24yPg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGJvb2wNCiAgICAgICAgb3BlcmF0
b3IhPShjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cmF0aW9uMT4mIF9MZWZ0LCBjb25zdCB0
aW1lX3BvaW50PF9DbG9jaywgX0R1cmF0aW9uMj4mIF9SaWdodCkgbm9leGNlcHQoDQogICAgICAg
ICAgICBpc19hcml0aG1ldGljX3Y8dHlwZW5hbWUgX0R1cmF0aW9uMTo6cmVwPiYmIGlzX2FyaXRo
bWV0aWNfdjx0eXBlbmFtZSBfRHVyYXRpb24yOjpyZXA+KSAgew0KICAgICAgICByZXR1cm4gIShf
TGVmdCA9PSBfUmlnaHQpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xvY2ssIGNs
YXNzIF9EdXJhdGlvbjEsIGNsYXNzIF9EdXJhdGlvbjI+DQogICAgW1tub2Rpc2NhcmRdXSBjb25z
dGV4cHIgYm9vbA0KICAgICAgICBvcGVyYXRvcjwoY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9E
dXJhdGlvbjE+JiBfTGVmdCwgY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbjI+JiBf
UmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICAgICAgaXNfYXJpdGhtZXRpY192PHR5cGVuYW1lIF9E
dXJhdGlvbjE6OnJlcD4mJiBpc19hcml0aG1ldGljX3Y8dHlwZW5hbWUgX0R1cmF0aW9uMjo6cmVw
PikgIHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0LnRpbWVfc2luY2VfZXBvY2goKSA8IF9SaWdodC50
aW1lX3NpbmNlX2Vwb2NoKCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9DbG9jaywg
Y2xhc3MgX0R1cmF0aW9uMSwgY2xhc3MgX0R1cmF0aW9uMj4NCiAgICBbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciBib29sDQogICAgICAgIG9wZXJhdG9yPD0oY29uc3QgdGltZV9wb2ludDxfQ2xvY2ss
IF9EdXJhdGlvbjE+JiBfTGVmdCwgY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbjI+
JiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICAgICAgaXNfYXJpdGhtZXRpY192PHR5cGVuYW1l
IF9EdXJhdGlvbjE6OnJlcD4mJiBpc19hcml0aG1ldGljX3Y8dHlwZW5hbWUgX0R1cmF0aW9uMjo6
cmVwPikgIHsNCiAgICAgICAgcmV0dXJuICEoX1JpZ2h0IDwgX0xlZnQpOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbjEsIGNsYXNzIF9EdXJhdGlv
bjI+DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbA0KICAgICAgICBvcGVyYXRvcj4o
Y29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbjE+JiBfTGVmdCwgY29uc3QgdGltZV9w
b2ludDxfQ2xvY2ssIF9EdXJhdGlvbjI+JiBfUmlnaHQpIG5vZXhjZXB0KA0KICAgICAgICAgICAg
aXNfYXJpdGhtZXRpY192PHR5cGVuYW1lIF9EdXJhdGlvbjE6OnJlcD4mJiBpc19hcml0aG1ldGlj
X3Y8dHlwZW5hbWUgX0R1cmF0aW9uMjo6cmVwPikgIHsNCiAgICAgICAgcmV0dXJuIF9SaWdodCA8
IF9MZWZ0Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJh
dGlvbjEsIGNsYXNzIF9EdXJhdGlvbjI+DQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9v
bA0KICAgICAgICBvcGVyYXRvcj49KGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24x
PiYgX0xlZnQsIGNvbnN0IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24yPiYgX1JpZ2h0KSBu
b2V4Y2VwdCgNCiAgICAgICAgICAgIGlzX2FyaXRobWV0aWNfdjx0eXBlbmFtZSBfRHVyYXRpb24x
OjpyZXA+JiYgaXNfYXJpdGhtZXRpY192PHR5cGVuYW1lIF9EdXJhdGlvbjI6OnJlcD4pICB7DQog
ICAgICAgIHJldHVybiAhKF9MZWZ0IDwgX1JpZ2h0KTsNCiAgICB9DQoNCiAgICANCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX1RvLCBjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbiwgZW5hYmxlX2lm
X3Q8X0lzX2R1cmF0aW9uX3Y8X1RvPiwgaW50PiA9IDA+DQogICAgW1tub2Rpc2NhcmRdXSBjb25z
dGV4cHIgdGltZV9wb2ludDxfQ2xvY2ssIF9Ubz4gdGltZV9wb2ludF9jYXN0KGNvbnN0IHRpbWVf
cG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24+JiBfVGltZSkgbm9leGNlcHQoDQogICAgICAgIGlzX2Fy
aXRobWV0aWNfdjx0eXBlbmFtZSBfRHVyYXRpb246OnJlcD4mJiBpc19hcml0aG1ldGljX3Y8dHlw
ZW5hbWUgX1RvOjpyZXA+KSAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHRpbWVfcG9pbnQ8
X0Nsb2NrLCBfVG8+KGNocm9ubzo6ZHVyYXRpb25fY2FzdDxfVG8+KF9UaW1lLnRpbWVfc2luY2Vf
ZXBvY2goKSkpOw0KICAgIH0NCg0KICAgIA0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVG8sIGNsYXNz
IF9DbG9jaywgY2xhc3MgX0R1cmF0aW9uLCBlbmFibGVfaWZfdDxfSXNfZHVyYXRpb25fdjxfVG8+
LCBpbnQ+ID0gMD4NCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciB0aW1lX3BvaW50PF9DbG9j
aywgX1RvPiBmbG9vcihjb25zdCB0aW1lX3BvaW50PF9DbG9jaywgX0R1cmF0aW9uPiYgX1RpbWUp
IG5vZXhjZXB0KA0KICAgICAgICBpc19hcml0aG1ldGljX3Y8dHlwZW5hbWUgX0R1cmF0aW9uOjpy
ZXA+JiYgaXNfYXJpdGhtZXRpY192PHR5cGVuYW1lIF9Ubzo6cmVwPikgIHsNCiAgICAgICAgDQog
ICAgICAgIHJldHVybiB0aW1lX3BvaW50PF9DbG9jaywgX1RvPihjaHJvbm86OmZsb29yPF9Ubz4o
X1RpbWUudGltZV9zaW5jZV9lcG9jaCgpKSk7DQogICAgfQ0KDQogICAgDQogICAgdGVtcGxhdGUg
PGNsYXNzIF9UbywgY2xhc3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24sIGVuYWJsZV9pZl90PF9J
c19kdXJhdGlvbl92PF9Ubz4sIGludD4gPSAwPg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IHRpbWVfcG9pbnQ8X0Nsb2NrLCBfVG8+IGNlaWwoY29uc3QgdGltZV9wb2ludDxfQ2xvY2ssIF9E
dXJhdGlvbj4mIF9UaW1lKSBub2V4Y2VwdCgNCiAgICAgICAgaXNfYXJpdGhtZXRpY192PHR5cGVu
YW1lIF9EdXJhdGlvbjo6cmVwPiYmIGlzX2FyaXRobWV0aWNfdjx0eXBlbmFtZSBfVG86OnJlcD4p
ICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gdGltZV9wb2ludDxfQ2xvY2ssIF9Ubz4oY2hy
b25vOjpjZWlsPF9Ubz4oX1RpbWUudGltZV9zaW5jZV9lcG9jaCgpKSk7DQogICAgfQ0KDQogICAg
DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UbywgY2xhc3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24s
DQogICAgICAgIGVuYWJsZV9pZl90PF9Jc19kdXJhdGlvbl92PF9Ubz4gJiYgIXRyZWF0X2FzX2Zs
b2F0aW5nX3BvaW50X3Y8dHlwZW5hbWUgX1RvOjpyZXA+LCBpbnQ+ID0gMD4NCiAgICBbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciB0aW1lX3BvaW50PF9DbG9jaywgX1RvPiByb3VuZChjb25zdCB0aW1l
X3BvaW50PF9DbG9jaywgX0R1cmF0aW9uPiYgX1RpbWUpIG5vZXhjZXB0KA0KICAgICAgICBpc19h
cml0aG1ldGljX3Y8dHlwZW5hbWUgX0R1cmF0aW9uOjpyZXA+JiYgaXNfYXJpdGhtZXRpY192PHR5
cGVuYW1lIF9Ubzo6cmVwPikgIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiB0aW1lX3BvaW50
PF9DbG9jaywgX1RvPihjaHJvbm86OnJvdW5kPF9Ubz4oX1RpbWUudGltZV9zaW5jZV9lcG9jaCgp
KSk7DQogICAgfQ0KDQogICAgDQogICAgc3RydWN0IHN5c3RlbV9jbG9jayB7IA0KICAgICAgICB1
c2luZyByZXAgPSBsb25nIGxvbmc7DQoNCiAgICAgICAgdXNpbmcgcGVyaW9kID0gcmF0aW9fbXVs
dGlwbHk8cmF0aW88MTAwLCAxPiwgbmFubz47DQoNCiAgICAgICAgdXNpbmcgZHVyYXRpb24gICAg
ICAgICAgICAgICAgICA9IGNocm9ubzo6ZHVyYXRpb248cmVwLCBwZXJpb2Q+Ow0KICAgICAgICB1
c2luZyB0aW1lX3BvaW50ICAgICAgICAgICAgICAgID0gY2hyb25vOjp0aW1lX3BvaW50PHN5c3Rl
bV9jbG9jaz47DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc19zdGVhZHkgPSBmYWxz
ZTsNCg0KICAgICAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyB0aW1lX3BvaW50IG5vdygpIG5vZXhj
ZXB0IHsgDQogICAgICAgICAgICByZXR1cm4gdGltZV9wb2ludChkdXJhdGlvbihfWHRpbWVfZ2V0
X3RpY2tzKCkpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gc3RhdGljIF9f
dGltZTY0X3QgdG9fdGltZV90KGNvbnN0IHRpbWVfcG9pbnQmIF9UaW1lKSBub2V4Y2VwdCB7IA0K
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9fdGltZTY0X3Q+KF9UaW1lLnRpbWVfc2lu
Y2VfZXBvY2goKS5jb3VudCgpIC8gMTAwMDAwMDBMTCk7DQogICAgICAgIH0NCg0KICAgICAgICBb
W25vZGlzY2FyZF1dIHN0YXRpYyB0aW1lX3BvaW50IGZyb21fdGltZV90KF9fdGltZTY0X3QgX1Rt
KSBub2V4Y2VwdCB7IA0KICAgICAgICAgICAgcmV0dXJuIHRpbWVfcG9pbnQoZHVyYXRpb24oX1Rt
ICogMTAwMDAwMDBMTCkpOw0KICAgICAgICB9DQogICAgfTsNCg0KICAgIHN0cnVjdCBzdGVhZHlf
Y2xvY2sgeyANCiAgICAgICAgdXNpbmcgcmVwICAgICAgICAgICAgICAgICAgICAgICA9IGxvbmcg
bG9uZzsNCiAgICAgICAgdXNpbmcgcGVyaW9kICAgICAgICAgICAgICAgICAgICA9IG5hbm87DQog
ICAgICAgIHVzaW5nIGR1cmF0aW9uICAgICAgICAgICAgICAgICAgPSBuYW5vc2Vjb25kczsNCiAg
ICAgICAgdXNpbmcgdGltZV9wb2ludCAgICAgICAgICAgICAgICA9IGNocm9ubzo6dGltZV9wb2lu
dDxzdGVhZHlfY2xvY2s+Ow0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNfc3RlYWR5
ID0gdHJ1ZTsNCg0KICAgICAgICBbW25vZGlzY2FyZF1dIHN0YXRpYyB0aW1lX3BvaW50IG5vdygp
IG5vZXhjZXB0IHsgDQogICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgX0ZyZXEgPSBfUXVlcnlf
cGVyZl9mcmVxdWVuY3koKTsgDQogICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgX0N0ciAgPSBf
UXVlcnlfcGVyZl9jb3VudGVyKCk7DQogICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHBlcmlvZDo6
bnVtID09IDEsICJUaGlzIGFzc3VtZXMgcGVyaW9kOjpudW0gPT0gMS4iKTsNCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAg
DQogICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgX1dob2xlID0gKF9DdHIgLyBfRnJlcSkgKiBw
ZXJpb2Q6OmRlbjsNCiAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBfUGFydCAgPSAoX0N0ciAl
IF9GcmVxKSAqIHBlcmlvZDo6ZGVuIC8gX0ZyZXE7DQogICAgICAgICAgICByZXR1cm4gdGltZV9w
b2ludChkdXJhdGlvbihfV2hvbGUgKyBfUGFydCkpOw0KICAgICAgICB9DQogICAgfTsNCg0KICAg
IHVzaW5nIGhpZ2hfcmVzb2x1dGlvbl9jbG9jayA9IHN0ZWFkeV9jbG9jazsNCn0gDQoNCg0KdGVt
cGxhdGUgPGNsYXNzIF9SZXAsIGNsYXNzIF9QZXJpb2Q+DQpbW25vZGlzY2FyZF1dIGJvb2wgX1Rv
X3h0aW1lXzEwX2RheV9jbGFtcGVkKDo6IHh0aW1lJiBfWHQsIGNvbnN0IGNocm9ubzo6ZHVyYXRp
b248X1JlcCwgX1BlcmlvZD4mIF9SZWxfdGltZSkgbm9leGNlcHQoDQogICAgaXNfYXJpdGhtZXRp
Y192PF9SZXA+KSB7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgY29uc3RleHByIGNocm9u
bzo6bmFub3NlY29uZHMgX1Rlbl9kYXlze2Nocm9ubzo6aG91cnN7MjR9ICogMTB9Ow0KICAgIGNv
bnN0ZXhwciBjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4gX1Rlbl9kYXlzX2R7X1Rlbl9kYXlzfTsN
CiAgICBjaHJvbm86Om5hbm9zZWNvbmRzIF9UeDAgPSBjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93
KCkudGltZV9zaW5jZV9lcG9jaCgpOw0KICAgIGNvbnN0IGJvb2wgX0NsYW1wZWQgICAgICA9IF9U
ZW5fZGF5c19kIDwgX1JlbF90aW1lOw0KICAgIGlmIChfQ2xhbXBlZCkgew0KICAgICAgICBfVHgw
ICs9IF9UZW5fZGF5czsNCiAgICB9IGVsc2Ugew0KICAgICAgICBfVHgwICs9IGNocm9ubzo6ZHVy
YXRpb25fY2FzdDxjaHJvbm86Om5hbm9zZWNvbmRzPihfUmVsX3RpbWUpOw0KICAgIH0NCg0KICAg
IGNvbnN0IGF1dG8gX1dob2xlX3NlY29uZHMgPSBjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8Y2hyb25v
OjpzZWNvbmRzPihfVHgwKTsNCiAgICBfWHQuc2VjICAgICAgICAgICAgICAgICAgID0gX1dob2xl
X3NlY29uZHMuY291bnQoKTsNCiAgICBfVHgwIC09IF9XaG9sZV9zZWNvbmRzOw0KICAgIF9YdC5u
c2VjID0gc3RhdGljX2Nhc3Q8bG9uZz4oX1R4MC5jb3VudCgpKTsNCiAgICByZXR1cm4gX0NsYW1w
ZWQ7DQp9DQoNCg0KaW5saW5lIG5hbWVzcGFjZSBsaXRlcmFscyB7DQogICAgaW5saW5lIG5hbWVz
cGFjZSBjaHJvbm9fbGl0ZXJhbHMgew0KICAgICAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBj
aHJvbm86OmhvdXJzIG9wZXJhdG9yIiIgaCh1bnNpZ25lZCBsb25nIGxvbmcgX1ZhbCkgbm9leGNl
cHQgIHsNCiAgICAgICAgICAgIHJldHVybiBjaHJvbm86OmhvdXJzKF9WYWwpOw0KICAgICAgICB9
DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY2hyb25vOjpkdXJhdGlvbjxkb3Vi
bGUsIHJhdGlvPDM2MDA+PiBvcGVyYXRvciIiIGgobG9uZyBkb3VibGUgX1ZhbCkgbm9leGNlcHQN
CiAgICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBjaHJvbm86OmR1cmF0aW9uPGRvdWJsZSwg
cmF0aW88MzYwMD4+KF9WYWwpOw0KICAgICAgICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBj
b25zdGV4cHIgY2hyb25vOjptaW51dGVzKG9wZXJhdG9yIiIgbWluKSh1bnNpZ25lZCBsb25nIGxv
bmcgX1ZhbCkgbm9leGNlcHQgIHsNCiAgICAgICAgICAgIHJldHVybiBjaHJvbm86Om1pbnV0ZXMo
X1ZhbCk7DQogICAgICAgIH0NCg0KICAgICAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjaHJv
bm86OmR1cmF0aW9uPGRvdWJsZSwgcmF0aW88NjA+PihvcGVyYXRvciIiIG1pbikobG9uZyBkb3Vi
bGUgX1ZhbCkgbm9leGNlcHQNCiAgICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBjaHJvbm86
OmR1cmF0aW9uPGRvdWJsZSwgcmF0aW88NjA+PihfVmFsKTsNCiAgICAgICAgfQ0KDQogICAgICAg
IFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNocm9ubzo6c2Vjb25kcyBvcGVyYXRvciIiIHModW5z
aWduZWQgbG9uZyBsb25nIF9WYWwpIG5vZXhjZXB0ICB7DQogICAgICAgICAgICByZXR1cm4gY2hy
b25vOjpzZWNvbmRzKF9WYWwpOw0KICAgICAgICB9DQoNCiAgICAgICAgW1tub2Rpc2NhcmRdXSBj
b25zdGV4cHIgY2hyb25vOjpkdXJhdGlvbjxkb3VibGU+IG9wZXJhdG9yIiIgcyhsb25nIGRvdWJs
ZSBfVmFsKSBub2V4Y2VwdCAgew0KICAgICAgICAgICAgcmV0dXJuIGNocm9ubzo6ZHVyYXRpb248
ZG91YmxlPihfVmFsKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIGNocm9ubzo6bWlsbGlzZWNvbmRzIG9wZXJhdG9yIiIgbXModW5zaWduZWQgbG9uZyBsb25n
IF9WYWwpIG5vZXhjZXB0ICB7DQogICAgICAgICAgICByZXR1cm4gY2hyb25vOjptaWxsaXNlY29u
ZHMoX1ZhbCk7DQogICAgICAgIH0NCg0KICAgICAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBj
aHJvbm86OmR1cmF0aW9uPGRvdWJsZSwgbWlsbGk+IG9wZXJhdG9yIiIgbXMobG9uZyBkb3VibGUg
X1ZhbCkgbm9leGNlcHQNCiAgICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBjaHJvbm86OmR1
cmF0aW9uPGRvdWJsZSwgbWlsbGk+KF9WYWwpOw0KICAgICAgICB9DQoNCiAgICAgICAgW1tub2Rp
c2NhcmRdXSBjb25zdGV4cHIgY2hyb25vOjptaWNyb3NlY29uZHMgb3BlcmF0b3IiIiB1cyh1bnNp
Z25lZCBsb25nIGxvbmcgX1ZhbCkgbm9leGNlcHQgIHsNCiAgICAgICAgICAgIHJldHVybiBjaHJv
bm86Om1pY3Jvc2Vjb25kcyhfVmFsKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFtbbm9kaXNjYXJk
XV0gY29uc3RleHByIGNocm9ubzo6ZHVyYXRpb248ZG91YmxlLCBtaWNybz4gb3BlcmF0b3IiIiB1
cyhsb25nIGRvdWJsZSBfVmFsKSBub2V4Y2VwdA0KICAgICAgICAgew0KICAgICAgICAgICAgcmV0
dXJuIGNocm9ubzo6ZHVyYXRpb248ZG91YmxlLCBtaWNybz4oX1ZhbCk7DQogICAgICAgIH0NCg0K
ICAgICAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBjaHJvbm86Om5hbm9zZWNvbmRzIG9wZXJh
dG9yIiIgbnModW5zaWduZWQgbG9uZyBsb25nIF9WYWwpIG5vZXhjZXB0ICB7DQogICAgICAgICAg
ICByZXR1cm4gY2hyb25vOjpuYW5vc2Vjb25kcyhfVmFsKTsNCiAgICAgICAgfQ0KDQogICAgICAg
IFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNocm9ubzo6ZHVyYXRpb248ZG91YmxlLCBuYW5vPiBv
cGVyYXRvciIiIG5zKGxvbmcgZG91YmxlIF9WYWwpIG5vZXhjZXB0DQogICAgICAgICB7DQogICAg
ICAgICAgICByZXR1cm4gY2hyb25vOjpkdXJhdGlvbjxkb3VibGUsIG5hbm8+KF9WYWwpOw0KICAg
ICAgICB9DQogICAgfSANCn0gDQoNCm5hbWVzcGFjZSBjaHJvbm8gew0KICAgIHVzaW5nIG5hbWVz
cGFjZSBsaXRlcmFsczo6Y2hyb25vX2xpdGVyYWxzOw0KfSANCg0KfQ0KDQoNCiNwcmFnbWEgd2Fy
bmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KI2xpbmUgNzE3ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNocm9ubyINCiNsaW5lIDcxOCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxjaHJvbm8iDQoj
bGluZSAxNyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxtdXRleCINCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxzeXN0ZW1fZXJyb3IiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
DQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcX19tc3ZjX3N5c3RlbV9lcnJvcl9hYmkuaHBwIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KDQoNCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVz
aCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0
IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0
NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcX19tc3ZjX3N5c3RlbV9lcnJvcl9hYmkuaHBwIg0KDQpleHRlcm4gIkMi
IHsNCltbbm9kaXNjYXJkXV0gc2l6ZV90IF9fc3RkY2FsbCBfX3N0ZF9nZXRfc3RyaW5nX3NpemVf
d2l0aG91dF90cmFpbGluZ193aGl0ZXNwYWNlKA0KICAgIGNvbnN0IGNoYXIqIF9TdHIsIHNpemVf
dCBfU2l6ZSkgbm9leGNlcHQ7DQoNCltbbm9kaXNjYXJkXV0gc2l6ZV90IF9fc3RkY2FsbCBfX3N0
ZF9zeXN0ZW1fZXJyb3JfYWxsb2NhdGVfbWVzc2FnZSgNCiAgICB1bnNpZ25lZCBsb25nIF9NZXNz
YWdlX2lkLCBjaGFyKiogX1B0cl9zdHIpIG5vZXhjZXB0Ow0Kdm9pZCBfX3N0ZGNhbGwgX19zdGRf
c3lzdGVtX2Vycm9yX2RlYWxsb2NhdGVfbWVzc2FnZShjaGFyKiBfU3RyKSBub2V4Y2VwdDsNCn0N
Cg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KDQojbGluZSA0
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxfX21z
dmNfc3lzdGVtX2Vycm9yX2FiaS5ocHAiDQojbGluZSA0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxfX21zdmNfc3lzdGVtX2Vycm9yX2FiaS5ocHAi
DQojbGluZSAxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxzeXN0ZW1fZXJyb3IiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGNlcnJubyINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcY2Vycm5vIg0KI2xpbmUgMTYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcY2Vycm5vIg0KI2xpbmUgMTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc3lzdGVtX2Vycm9yIg0KDQoN
CiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxceGNhbGxfb25jZS5oIg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNwcmFn
bWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3
IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1
MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsN
Cg0Kc3RydWN0IG9uY2VfZmxhZyB7IA0KICAgIGNvbnN0ZXhwciBvbmNlX2ZsYWcoKSBub2V4Y2Vw
dCA6IF9PcGFxdWUobnVsbHB0cikge30NCg0KICAgIG9uY2VfZmxhZyhjb25zdCBvbmNlX2ZsYWcm
KSA9IGRlbGV0ZTsNCiAgICBvbmNlX2ZsYWcmIG9wZXJhdG9yPShjb25zdCBvbmNlX2ZsYWcmKSA9
IGRlbGV0ZTsNCg0KICAgIHZvaWQqIF9PcGFxdWU7DQp9Ow0KDQp1c2luZyBfRXhlY3V0ZV9vbmNl
X2ZwX3QgPSBpbnQoX19zdGRjYWxsKikodm9pZCosIHZvaWQqLCB2b2lkKiopOw0KDQogaW50IF9f
Y2RlY2wgX0V4ZWN1dGVfb25jZSgNCiAgICBvbmNlX2ZsYWcmIF9GbGFnLCBfRXhlY3V0ZV9vbmNl
X2ZwX3QgX0NhbGxiYWNrLCB2b2lkKiBfUHYpIG5vZXhjZXB0Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5Pg0KdW5pb24gX0ltbW9ydGFsaXplcl9pbXBsIHsgDQogICAgY29uc3RleHByIF9JbW1vcnRh
bGl6ZXJfaW1wbCgpIG5vZXhjZXB0IDogX1N0b3JhZ2V7fSB7fQ0KICAgIF9JbW1vcnRhbGl6ZXJf
aW1wbChjb25zdCBfSW1tb3J0YWxpemVyX2ltcGwmKSA9IGRlbGV0ZTsNCiAgICBfSW1tb3J0YWxp
emVyX2ltcGwmIG9wZXJhdG9yPShjb25zdCBfSW1tb3J0YWxpemVyX2ltcGwmKSA9IGRlbGV0ZTsN
CiAgICB+X0ltbW9ydGFsaXplcl9pbXBsKCkgew0KICAgICAgICANCiAgICB9DQoNCiAgICBfVHkg
X1N0b3JhZ2U7DQp9Ow0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFj
ayhwb3ApDQojbGluZSA1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx4Y2FsbF9vbmNlLmgiDQojbGluZSA1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4Y2FsbF9vbmNlLmgiDQojbGluZSAxNiAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzeXN0ZW1fZXJy
b3IiDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXHhlcnJjLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KI3ByYWdt
YSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcg
NDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUw
MjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0K
DQplbnVtIGNsYXNzIGVycmMgeyANCiAgICBhZGRyZXNzX2ZhbWlseV9ub3Rfc3VwcG9ydGVkICAg
ICAgID0gMTAyLCANCiAgICBhZGRyZXNzX2luX3VzZSAgICAgICAgICAgICAgICAgICAgID0gMTAw
LCANCiAgICBhZGRyZXNzX25vdF9hdmFpbGFibGUgICAgICAgICAgICAgID0gMTAxLCANCiAgICBh
bHJlYWR5X2Nvbm5lY3RlZCAgICAgICAgICAgICAgICAgID0gMTEzLCANCiAgICBhcmd1bWVudF9s
aXN0X3Rvb19sb25nICAgICAgICAgICAgID0gNywgDQogICAgYXJndW1lbnRfb3V0X29mX2RvbWFp
biAgICAgICAgICAgICA9IDMzLCANCiAgICBiYWRfYWRkcmVzcyAgICAgICAgICAgICAgICAgICAg
ICAgID0gMTQsIA0KICAgIGJhZF9maWxlX2Rlc2NyaXB0b3IgICAgICAgICAgICAgICAgPSA5LCAN
CiAgICBiYWRfbWVzc2FnZSAgICAgICAgICAgICAgICAgICAgICAgID0gMTA0LCANCiAgICBicm9r
ZW5fcGlwZSAgICAgICAgICAgICAgICAgICAgICAgID0gMzIsIA0KICAgIGNvbm5lY3Rpb25fYWJv
cnRlZCAgICAgICAgICAgICAgICAgPSAxMDYsIA0KICAgIGNvbm5lY3Rpb25fYWxyZWFkeV9pbl9w
cm9ncmVzcyAgICAgPSAxMDMsIA0KICAgIGNvbm5lY3Rpb25fcmVmdXNlZCAgICAgICAgICAgICAg
ICAgPSAxMDcsIA0KICAgIGNvbm5lY3Rpb25fcmVzZXQgICAgICAgICAgICAgICAgICAgPSAxMDgs
IA0KICAgIGNyb3NzX2RldmljZV9saW5rICAgICAgICAgICAgICAgICAgPSAxOCwgDQogICAgZGVz
dGluYXRpb25fYWRkcmVzc19yZXF1aXJlZCAgICAgICA9IDEwOSwgDQogICAgZGV2aWNlX29yX3Jl
c291cmNlX2J1c3kgICAgICAgICAgICA9IDE2LCANCiAgICBkaXJlY3Rvcnlfbm90X2VtcHR5ICAg
ICAgICAgICAgICAgID0gNDEsIA0KICAgIGV4ZWN1dGFibGVfZm9ybWF0X2Vycm9yICAgICAgICAg
ICAgPSA4LCANCiAgICBmaWxlX2V4aXN0cyAgICAgICAgICAgICAgICAgICAgICAgID0gMTcsIA0K
ICAgIGZpbGVfdG9vX2xhcmdlICAgICAgICAgICAgICAgICAgICAgPSAyNywgDQogICAgZmlsZW5h
bWVfdG9vX2xvbmcgICAgICAgICAgICAgICAgICA9IDM4LCANCiAgICBmdW5jdGlvbl9ub3Rfc3Vw
cG9ydGVkICAgICAgICAgICAgID0gNDAsIA0KICAgIGhvc3RfdW5yZWFjaGFibGUgICAgICAgICAg
ICAgICAgICAgPSAxMTAsIA0KICAgIGlkZW50aWZpZXJfcmVtb3ZlZCAgICAgICAgICAgICAgICAg
PSAxMTEsIA0KICAgIGlsbGVnYWxfYnl0ZV9zZXF1ZW5jZSAgICAgICAgICAgICAgPSA0MiwgDQog
ICAgaW5hcHByb3ByaWF0ZV9pb19jb250cm9sX29wZXJhdGlvbiA9IDI1LCANCiAgICBpbnRlcnJ1
cHRlZCAgICAgICAgICAgICAgICAgICAgICAgID0gNCwgDQogICAgaW52YWxpZF9hcmd1bWVudCAg
ICAgICAgICAgICAgICAgICA9IDIyLCANCiAgICBpbnZhbGlkX3NlZWsgICAgICAgICAgICAgICAg
ICAgICAgID0gMjksIA0KICAgIGlvX2Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgPSA1
LCANCiAgICBpc19hX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgID0gMjEsIA0KICAgIG1l
c3NhZ2Vfc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgPSAxMTUsIA0KICAgIG5ldHdvcmtfZG93
biAgICAgICAgICAgICAgICAgICAgICAgPSAxMTYsIA0KICAgIG5ldHdvcmtfcmVzZXQgICAgICAg
ICAgICAgICAgICAgICAgPSAxMTcsIA0KICAgIG5ldHdvcmtfdW5yZWFjaGFibGUgICAgICAgICAg
ICAgICAgPSAxMTgsIA0KICAgIG5vX2J1ZmZlcl9zcGFjZSAgICAgICAgICAgICAgICAgICAgPSAx
MTksIA0KICAgIG5vX2NoaWxkX3Byb2Nlc3MgICAgICAgICAgICAgICAgICAgPSAxMCwgDQogICAg
bm9fbGluayAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEyMSwgDQogICAgbm9fbG9ja19h
dmFpbGFibGUgICAgICAgICAgICAgICAgICA9IDM5LCANCiAgICBub19tZXNzYWdlX2F2YWlsYWJs
ZSAgICAgICAgICAgICAgID0gMTIwLCANCiAgICBub19tZXNzYWdlICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMTIyLCANCiAgICBub19wcm90b2NvbF9vcHRpb24gICAgICAgICAgICAgICAgID0g
MTIzLCANCiAgICBub19zcGFjZV9vbl9kZXZpY2UgICAgICAgICAgICAgICAgID0gMjgsIA0KICAg
IG5vX3N0cmVhbV9yZXNvdXJjZXMgICAgICAgICAgICAgICAgPSAxMjQsIA0KICAgIG5vX3N1Y2hf
ZGV2aWNlX29yX2FkZHJlc3MgICAgICAgICAgPSA2LCANCiAgICBub19zdWNoX2RldmljZSAgICAg
ICAgICAgICAgICAgICAgID0gMTksIA0KICAgIG5vX3N1Y2hfZmlsZV9vcl9kaXJlY3RvcnkgICAg
ICAgICAgPSAyLCANCiAgICBub19zdWNoX3Byb2Nlc3MgICAgICAgICAgICAgICAgICAgID0gMywg
DQogICAgbm90X2FfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICA9IDIwLCANCiAgICBub3Rf
YV9zb2NrZXQgICAgICAgICAgICAgICAgICAgICAgID0gMTI4LCANCiAgICBub3RfYV9zdHJlYW0g
ICAgICAgICAgICAgICAgICAgICAgID0gMTI1LCANCiAgICBub3RfY29ubmVjdGVkICAgICAgICAg
ICAgICAgICAgICAgID0gMTI2LCANCiAgICBub3RfZW5vdWdoX21lbW9yeSAgICAgICAgICAgICAg
ICAgID0gMTIsIA0KICAgIG5vdF9zdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgPSAxMjks
IA0KICAgIG9wZXJhdGlvbl9jYW5jZWxlZCAgICAgICAgICAgICAgICAgPSAxMDUsIA0KICAgIG9w
ZXJhdGlvbl9pbl9wcm9ncmVzcyAgICAgICAgICAgICAgPSAxMTIsIA0KICAgIG9wZXJhdGlvbl9u
b3RfcGVybWl0dGVkICAgICAgICAgICAgPSAxLCANCiAgICBvcGVyYXRpb25fbm90X3N1cHBvcnRl
ZCAgICAgICAgICAgID0gMTMwLCANCiAgICBvcGVyYXRpb25fd291bGRfYmxvY2sgICAgICAgICAg
ICAgID0gMTQwLCANCiAgICBvd25lcl9kZWFkICAgICAgICAgICAgICAgICAgICAgICAgID0gMTMz
LCANCiAgICBwZXJtaXNzaW9uX2RlbmllZCAgICAgICAgICAgICAgICAgID0gMTMsIA0KICAgIHBy
b3RvY29sX2Vycm9yICAgICAgICAgICAgICAgICAgICAgPSAxMzQsIA0KICAgIHByb3RvY29sX25v
dF9zdXBwb3J0ZWQgICAgICAgICAgICAgPSAxMzUsIA0KICAgIHJlYWRfb25seV9maWxlX3N5c3Rl
bSAgICAgICAgICAgICAgPSAzMCwgDQogICAgcmVzb3VyY2VfZGVhZGxvY2tfd291bGRfb2NjdXIg
ICAgICA9IDM2LCANCiAgICByZXNvdXJjZV91bmF2YWlsYWJsZV90cnlfYWdhaW4gICAgID0gMTEs
IA0KICAgIHJlc3VsdF9vdXRfb2ZfcmFuZ2UgICAgICAgICAgICAgICAgPSAzNCwgDQogICAgc3Rh
dGVfbm90X3JlY292ZXJhYmxlICAgICAgICAgICAgICA9IDEyNywgDQogICAgc3RyZWFtX3RpbWVv
dXQgICAgICAgICAgICAgICAgICAgICA9IDEzNywgDQogICAgdGV4dF9maWxlX2J1c3kgICAgICAg
ICAgICAgICAgICAgICA9IDEzOSwgDQogICAgdGltZWRfb3V0ICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDEzOCwgDQogICAgdG9vX21hbnlfZmlsZXNfb3Blbl9pbl9zeXN0ZW0gICAgICA9IDIz
LCANCiAgICB0b29fbWFueV9maWxlc19vcGVuICAgICAgICAgICAgICAgID0gMjQsIA0KICAgIHRv
b19tYW55X2xpbmtzICAgICAgICAgICAgICAgICAgICAgPSAzMSwgDQogICAgdG9vX21hbnlfc3lt
Ym9saWNfbGlua19sZXZlbHMgICAgICA9IDExNCwgDQogICAgdmFsdWVfdG9vX2xhcmdlICAgICAg
ICAgICAgICAgICAgICA9IDEzMiwgDQogICAgd3JvbmdfcHJvdG9jb2xfdHlwZSAgICAgICAgICAg
ICAgICA9IDEzNiANCn07DQoNCn0NCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21h
IHBhY2socG9wKQ0KDQojbGluZSAxMTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxceGVycmMuaCINCiNsaW5lIDExMSAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4ZXJyYy5oIg0KI2xpbmUgMTcgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc3lzdGVtX2Vycm9y
Ig0KDQoNCiNsaW5lIDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHN5c3RlbV9lcnJvciINCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21h
IHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0
NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2
IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAg
NTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KDQplbnVtIGNsYXNzIGlvX2VycmMgeyAN
CiAgICBzdHJlYW0gPSAxDQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRW51bT4NCnN0cnVjdCBp
c19lcnJvcl9jb2RlX2VudW0gOiBmYWxzZV90eXBlIHt9Ow0KDQp0ZW1wbGF0ZSA8Pg0Kc3RydWN0
IGlzX2Vycm9yX2NvZGVfZW51bTxpb19lcnJjPiA6IHRydWVfdHlwZSB7fTsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc19lcnJvcl9jb2RlX2VudW1fdiA9
IGlzX2Vycm9yX2NvZGVfZW51bTxfVHk+Ojp2YWx1ZTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Vu
dW0+DQpzdHJ1Y3QgaXNfZXJyb3JfY29uZGl0aW9uX2VudW0gOiBmYWxzZV90eXBlIHt9Ow0KDQp0
ZW1wbGF0ZSA8Pg0Kc3RydWN0IGlzX2Vycm9yX2NvbmRpdGlvbl9lbnVtPGVycmM+IDogdHJ1ZV90
eXBlIHt9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIGlz
X2Vycm9yX2NvbmRpdGlvbl9lbnVtX3YgPSBpc19lcnJvcl9jb25kaXRpb25fZW51bTxfVHk+Ojp2
YWx1ZTsNCg0KY2xhc3MgZXJyb3JfY29kZTsNCmNsYXNzIGVycm9yX2NvbmRpdGlvbjsNCltbbm9k
aXNjYXJkXV0gZXJyb3JfY29kZSBtYWtlX2Vycm9yX2NvZGUoZXJyYykgbm9leGNlcHQ7DQpbW25v
ZGlzY2FyZF1dIGVycm9yX2NvZGUgbWFrZV9lcnJvcl9jb2RlKGlvX2VycmMpIG5vZXhjZXB0Ow0K
W1tub2Rpc2NhcmRdXSBlcnJvcl9jb25kaXRpb24gbWFrZV9lcnJvcl9jb25kaXRpb24oZXJyYykg
bm9leGNlcHQ7DQpbW25vZGlzY2FyZF1dIGVycm9yX2NvbmRpdGlvbiBtYWtlX2Vycm9yX2NvbmRp
dGlvbihpb19lcnJjKSBub2V4Y2VwdDsNCg0KDQpjbGFzcyBlcnJvcl9jYXRlZ29yeTsNCg0KW1tu
b2Rpc2NhcmRdXSBjb25zdCBlcnJvcl9jYXRlZ29yeSYgZ2VuZXJpY19jYXRlZ29yeSgpIG5vZXhj
ZXB0Ow0KW1tub2Rpc2NhcmRdXSBjb25zdCBlcnJvcl9jYXRlZ29yeSYgaW9zdHJlYW1fY2F0ZWdv
cnkoKSBub2V4Y2VwdDsNCltbbm9kaXNjYXJkXV0gY29uc3QgZXJyb3JfY2F0ZWdvcnkmIHN5c3Rl
bV9jYXRlZ29yeSgpIG5vZXhjZXB0Ow0KDQpjbGFzcyBfX2RlY2xzcGVjKG5vdnRhYmxlKSBlcnJv
cl9jYXRlZ29yeSB7IA0KcHVibGljOg0KICAgICBlcnJvcl9jYXRlZ29yeSgpIG5vZXhjZXB0IHsg
DQogICAgICAgIF9BZGRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpOw0KICAg
IH0NCg0KDQoNCg0KICAgICAgICB2aXJ0dWFsIH5lcnJvcl9jYXRlZ29yeSgpIG5vZXhjZXB0ID0g
ZGVmYXVsdDsNCg0KICAgIFtbbm9kaXNjYXJkXV0gdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkg
Y29uc3Qgbm9leGNlcHQgPSAwOw0KDQogICAgW1tub2Rpc2NhcmRdXSB2aXJ0dWFsIHN0cmluZyBt
ZXNzYWdlKGludCBfRXJydmFsKSBjb25zdCA9IDA7DQoNCiAgICBbW25vZGlzY2FyZF1dIHZpcnR1
YWwgZXJyb3JfY29uZGl0aW9uIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKGludCBfRXJydmFsKSBj
b25zdCBub2V4Y2VwdDsNCg0KICAgIFtbbm9kaXNjYXJkXV0gdmlydHVhbCBib29sIGVxdWl2YWxl
bnQoaW50IF9FcnJ2YWwsIGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX0NvbmQpIGNvbnN0IG5vZXhj
ZXB0Ow0KDQogICAgW1tub2Rpc2NhcmRdXSB2aXJ0dWFsIGJvb2wgZXF1aXZhbGVudChjb25zdCBl
cnJvcl9jb2RlJiBfQ29kZSwgaW50IF9FcnJ2YWwpIGNvbnN0IG5vZXhjZXB0Ow0KDQogICAgW1tu
b2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPT0oY29uc3QgZXJyb3JfY2F0ZWdvcnkmIF9SaWdodCkg
Y29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX0FkZHIgPT0gX1JpZ2h0Ll9BZGRyOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvciE9KGNvbnN0IGVycm9yX2Nh
dGVnb3J5JiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IGVycm9yX2NhdGVnb3J5JiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0
dXJuIF9BZGRyIDwgX1JpZ2h0Ll9BZGRyOw0KICAgIH0NCg0KICAgIGVycm9yX2NhdGVnb3J5KGNv
bnN0IGVycm9yX2NhdGVnb3J5JikgPSBkZWxldGU7DQogICAgZXJyb3JfY2F0ZWdvcnkmIG9wZXJh
dG9yPShjb25zdCBlcnJvcl9jYXRlZ29yeSYpID0gZGVsZXRlOw0KDQpwcm90ZWN0ZWQ6DQogICAg
dWludHB0cl90IF9BZGRyOw0KDQogICAgY29uc3RleHByIGV4cGxpY2l0IGVycm9yX2NhdGVnb3J5
KGNvbnN0IHVpbnRwdHJfdCBfQWRkcl8pIG5vZXhjZXB0IDogX0FkZHIoX0FkZHJfKSB7fQ0KDQog
ICAgZW51bSA6IHVpbnRwdHJfdCB7IA0KICAgICAgICBfRnV0dXJlX2FkZHIgICA9IDEsDQogICAg
ICAgIF9HZW5lcmljX2FkZHIgID0gMywNCiAgICAgICAgX0lvc3RyZWFtX2FkZHIgPSA1LA0KICAg
ICAgICBfU3lzdGVtX2FkZHIgICA9IDcNCiAgICB9Ow0KfTsNCg0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBib29sIF9TeXN0ZW1fZXJyb3JfZXF1YWwoY29uc3QgZXJyb3JfY29kZSYsIGNvbnN0IGVy
cm9yX2NvbmRpdGlvbiYpIG5vZXhjZXB0Ow0KI2xpbmUgMTIwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN5c3RlbV9lcnJvciINCg0KDQpjbGFzcyBl
cnJvcl9jb2RlIHsgDQpwdWJsaWM6DQogICAgZXJyb3JfY29kZSgpIG5vZXhjZXB0IDogX015dmFs
KDApLCBfTXljYXQoJjo6c3RkOjogc3lzdGVtX2NhdGVnb3J5KCkpIHt9IA0KDQogICAgZXJyb3Jf
Y29kZShpbnQgX1ZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkmIF9DYXQpIG5vZXhjZXB0IDogX015
dmFsKF9WYWwpLCBfTXljYXQoJl9DYXQpIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0VudW0s
IGVuYWJsZV9pZl90PGlzX2Vycm9yX2NvZGVfZW51bV92PF9FbnVtPiwgaW50PiA9IDA+DQogICAg
ZXJyb3JfY29kZShfRW51bSBfRXJyY29kZSkgbm9leGNlcHQgOiBfTXl2YWwoMCksIF9NeWNhdChu
dWxscHRyKSB7DQogICAgICAgICp0aGlzID0gbWFrZV9lcnJvcl9jb2RlKF9FcnJjb2RlKTsgDQog
ICAgfQ0KDQogICAgdm9pZCBhc3NpZ24oaW50IF9WYWwsIGNvbnN0IGVycm9yX2NhdGVnb3J5JiBf
Q2F0KSBub2V4Y2VwdCB7DQogICAgICAgIF9NeXZhbCA9IF9WYWw7DQogICAgICAgIF9NeWNhdCA9
ICZfQ2F0Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRW51bSwgZW5hYmxlX2lmX3Q8
aXNfZXJyb3JfY29kZV9lbnVtX3Y8X0VudW0+LCBpbnQ+ID0gMD4NCiAgICBlcnJvcl9jb2RlJiBv
cGVyYXRvcj0oX0VudW0gX0VycmNvZGUpIG5vZXhjZXB0IHsNCiAgICAgICAgKnRoaXMgPSBtYWtl
X2Vycm9yX2NvZGUoX0VycmNvZGUpOyANCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0K
ICAgIHZvaWQgY2xlYXIoKSBub2V4Y2VwdCB7DQogICAgICAgIF9NeXZhbCA9IDA7DQogICAgICAg
IF9NeWNhdCA9ICY6OnN0ZDo6IHN5c3RlbV9jYXRlZ29yeSgpOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gaW50IHZhbHVlKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015
dmFsOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3QgZXJyb3JfY2F0ZWdvcnkmIGNh
dGVnb3J5KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKl9NeWNhdDsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIGVycm9yX2NvbmRpdGlvbiBkZWZhdWx0X2Vycm9yX2NvbmRp
dGlvbigpIGNvbnN0IG5vZXhjZXB0Ow0KDQogICAgW1tub2Rpc2NhcmRdXSBzdHJpbmcgbWVzc2Fn
ZSgpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIGNhdGVnb3J5KCkubWVzc2FnZSh2YWx1ZSgpKTsN
CiAgICB9DQoNCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gdmFsdWUoKSAhPSAwOw0KICAgIH0NCg0KDQogICAgW1tub2Rpc2NhcmRd
XSBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGVycm9yX2NvZGUmIF9MZWZ0LCBjb25zdCBl
cnJvcl9jb2RlJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0LmNhdGVn
b3J5KCkgPT0gX1JpZ2h0LmNhdGVnb3J5KCkgJiYgX0xlZnQudmFsdWUoKSA9PSBfUmlnaHQudmFs
dWUoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgZXJyb3JfY29kZSYgX0xlZnQsIGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX1JpZ2h0KSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfU3lzdGVtX2Vycm9yX2VxdWFsKF9MZWZ0LCBfUmln
aHQpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBlcnJvcl9jb25kaXRpb24mIF9MZWZ0LCBjb25zdCBlcnJvcl9jb2RlJiBfUmlnaHQpIG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9TeXN0ZW1fZXJyb3JfZXF1YWwoX1JpZ2h0LCBfTGVm
dCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGVycm9yX2NvZGUmIF9MZWZ0LCBjb25zdCBlcnJvcl9jb2RlJiBfUmlnaHQpIG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuICEoX0xlZnQgPT0gX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgZXJyb3JfY29kZSYgX0xlZnQs
IGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biAhX1N5c3RlbV9lcnJvcl9lcXVhbChfTGVmdCwgX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgZXJyb3JfY29uZGl0aW9uJiBf
TGVmdCwgY29uc3QgZXJyb3JfY29kZSYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biAhX1N5c3RlbV9lcnJvcl9lcXVhbChfUmlnaHQsIF9MZWZ0KTsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBlcnJvcl9jb2RlJiBfTGVmdCwg
Y29uc3QgZXJyb3JfY29kZSYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTGVm
dC5jYXRlZ29yeSgpIDwgX1JpZ2h0LmNhdGVnb3J5KCkNCiAgICAgICAgICAgICAgIHx8IChfTGVm
dC5jYXRlZ29yeSgpID09IF9SaWdodC5jYXRlZ29yeSgpICYmIF9MZWZ0LnZhbHVlKCkgPCBfUmln
aHQudmFsdWUoKSk7DQogICAgfQ0KI2xpbmUgMTk3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN5c3RlbV9lcnJvciINCg0KcHJpdmF0ZToNCiAgICBp
bnQgX015dmFsOyANCiAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSogX015Y2F0OyANCn07DQoNCg0K
Y2xhc3MgZXJyb3JfY29uZGl0aW9uIHsgDQpwdWJsaWM6DQogICAgZXJyb3JfY29uZGl0aW9uKCkg
bm9leGNlcHQgOiBfTXl2YWwoMCksIF9NeWNhdCgmOjpzdGQ6OiBnZW5lcmljX2NhdGVnb3J5KCkp
IHt9IA0KDQogICAgZXJyb3JfY29uZGl0aW9uKGludCBfVmFsLCBjb25zdCBlcnJvcl9jYXRlZ29y
eSYgX0NhdCkgbm9leGNlcHQgOiBfTXl2YWwoX1ZhbCksIF9NeWNhdCgmX0NhdCkge30NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfRW51bSwgZW5hYmxlX2lmX3Q8aXNfZXJyb3JfY29uZGl0aW9uX2Vu
dW1fdjxfRW51bT4sIGludD4gPSAwPg0KICAgIGVycm9yX2NvbmRpdGlvbihfRW51bSBfRXJyY29k
ZSkgbm9leGNlcHQgOiBfTXl2YWwoMCksIF9NeWNhdChudWxscHRyKSB7DQogICAgICAgICp0aGlz
ID0gbWFrZV9lcnJvcl9jb25kaXRpb24oX0VycmNvZGUpOyANCiAgICB9DQoNCiAgICB2b2lkIGFz
c2lnbihpbnQgX1ZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkmIF9DYXQpIG5vZXhjZXB0IHsNCiAg
ICAgICAgX015dmFsID0gX1ZhbDsNCiAgICAgICAgX015Y2F0ID0gJl9DYXQ7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzIF9FbnVtLCBlbmFibGVfaWZfdDxpc19lcnJvcl9jb25kaXRpb25f
ZW51bV92PF9FbnVtPiwgaW50PiA9IDA+DQogICAgZXJyb3JfY29uZGl0aW9uJiBvcGVyYXRvcj0o
X0VudW0gX0VycmNvZGUpIG5vZXhjZXB0IHsNCiAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2Nv
bmRpdGlvbihfRXJyY29kZSk7IA0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAg
dm9pZCBjbGVhcigpIG5vZXhjZXB0IHsNCiAgICAgICAgX015dmFsID0gMDsNCiAgICAgICAgX015
Y2F0ID0gJjo6c3RkOjogZ2VuZXJpY19jYXRlZ29yeSgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gaW50IHZhbHVlKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015dmFs
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3QgZXJyb3JfY2F0ZWdvcnkmIGNhdGVn
b3J5KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKl9NeWNhdDsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIHN0cmluZyBtZXNzYWdlKCkgY29uc3Qgew0KICAgICAgICByZXR1
cm4gY2F0ZWdvcnkoKS5tZXNzYWdlKHZhbHVlKCkpOw0KICAgIH0NCg0KICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiB2YWx1ZSgpICE9
IDA7DQogICAgfQ0KDQoNCiAgICBbW25vZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgZXJyb3JfY29uZGl0aW9uJiBfTGVmdCwgY29uc3QgZXJyb3JfY29uZGl0aW9uJiBfUmln
aHQpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0LmNhdGVnb3J5KCkgPT0gX1JpZ2h0
LmNhdGVnb3J5KCkgJiYgX0xlZnQudmFsdWUoKSA9PSBfUmlnaHQudmFsdWUoKTsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgZXJyb3JfY29u
ZGl0aW9uJiBfTGVmdCwgY29uc3QgZXJyb3JfY29uZGl0aW9uJiBfUmlnaHQpIG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuICEoX0xlZnQgPT0gX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBlcnJvcl9jb25kaXRpb24mIF9MZWZ0
LCBjb25zdCBlcnJvcl9jb25kaXRpb24mIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gX0xlZnQuY2F0ZWdvcnkoKSA8IF9SaWdodC5jYXRlZ29yeSgpDQogICAgICAgICAgICAgICB8
fCAoX0xlZnQuY2F0ZWdvcnkoKSA9PSBfUmlnaHQuY2F0ZWdvcnkoKSAmJiBfTGVmdC52YWx1ZSgp
IDwgX1JpZ2h0LnZhbHVlKCkpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgZXJyb3JfY29kZSYgX0xlZnQsIGNvbnN0IGVycm9yX2Nv
bmRpdGlvbiYgX1JpZ2h0KSBub2V4Y2VwdDsNCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGVycm9yX2NvbmRpdGlvbiYgX0xlZnQsIGNvbnN0IGVycm9yX2NvZGUmIF9SaWdodCkgbm9l
eGNlcHQ7DQogICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBlcnJvcl9jb2RlJiBfTGVm
dCwgY29uc3QgZXJyb3JfY29uZGl0aW9uJiBfUmlnaHQpIG5vZXhjZXB0Ow0KICAgIGZyaWVuZCBi
b29sIG9wZXJhdG9yIT0oY29uc3QgZXJyb3JfY29uZGl0aW9uJiBfTGVmdCwgY29uc3QgZXJyb3Jf
Y29kZSYgX1JpZ2h0KSBub2V4Y2VwdDsNCiNsaW5lIDI2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzeXN0ZW1fZXJyb3IiDQoNCnByaXZhdGU6DQog
ICAgaW50IF9NeXZhbDsgDQogICAgY29uc3QgZXJyb3JfY2F0ZWdvcnkqIF9NeWNhdDsgDQp9Ow0K
DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgX1N5c3RlbV9lcnJvcl9lcXVhbChjb25zdCBl
cnJvcl9jb2RlJiBfTGVmdCwgY29uc3QgZXJyb3JfY29uZGl0aW9uJiBfUmlnaHQpIG5vZXhjZXB0
IHsNCiAgICByZXR1cm4gX0xlZnQuY2F0ZWdvcnkoKS5lcXVpdmFsZW50KF9MZWZ0LnZhbHVlKCks
IF9SaWdodCkgfHwgX1JpZ2h0LmNhdGVnb3J5KCkuZXF1aXZhbGVudChfTGVmdCwgX1JpZ2h0LnZh
bHVlKCkpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzIyICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN5c3RlbV9lcnJvciIN
Cg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBlcnJvcl9jb25kaXRpb24gZXJyb3JfY2F0ZWdvcnk6
OmRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKGludCBfRXJydmFsKSBjb25zdCBub2V4Y2VwdCB7DQog
ICAgDQogICAgcmV0dXJuIGVycm9yX2NvbmRpdGlvbihfRXJydmFsLCAqdGhpcyk7DQp9DQoNCltb
bm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgZXJyb3JfY2F0ZWdvcnk6OmVxdWl2YWxlbnQoaW50IF9F
cnJ2YWwsIGNvbnN0IGVycm9yX2NvbmRpdGlvbiYgX0NvbmQpIGNvbnN0IG5vZXhjZXB0IHsNCiAg
ICByZXR1cm4gZGVmYXVsdF9lcnJvcl9jb25kaXRpb24oX0VycnZhbCkgPT0gX0NvbmQ7DQp9DQoN
Cltbbm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgZXJyb3JfY2F0ZWdvcnk6OmVxdWl2YWxlbnQoY29u
c3QgZXJyb3JfY29kZSYgX0NvZGUsIGludCBfRXJydmFsKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
cmV0dXJuICp0aGlzID09IF9Db2RlLmNhdGVnb3J5KCkgJiYgX0NvZGUudmFsdWUoKSA9PSBfRXJy
dmFsOw0KfQ0KDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGVycm9yX2NvbmRpdGlvbiBlcnJvcl9j
b2RlOjpkZWZhdWx0X2Vycm9yX2NvbmRpdGlvbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICANCiAg
ICByZXR1cm4gY2F0ZWdvcnkoKS5kZWZhdWx0X2Vycm9yX2NvbmRpdGlvbih2YWx1ZSgpKTsNCn0N
Cg0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBlcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZShlcnJj
IF9FcnJubykgbm9leGNlcHQgew0KICAgIHJldHVybiBlcnJvcl9jb2RlKHN0YXRpY19jYXN0PGlu
dD4oX0Vycm5vKSwgOjpzdGQ6OiBnZW5lcmljX2NhdGVnb3J5KCkpOw0KfQ0KDQpbW25vZGlzY2Fy
ZF1dIGlubGluZSBlcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZShpb19lcnJjIF9FcnJubykgbm9l
eGNlcHQgew0KICAgIHJldHVybiBlcnJvcl9jb2RlKHN0YXRpY19jYXN0PGludD4oX0Vycm5vKSwg
OjpzdGQ6OiBpb3N0cmVhbV9jYXRlZ29yeSgpKTsNCn0NCg0KDQpbW25vZGlzY2FyZF1dIGlubGlu
ZSBlcnJvcl9jb25kaXRpb24gbWFrZV9lcnJvcl9jb25kaXRpb24oZXJyYyBfRXJybm8pIG5vZXhj
ZXB0IHsNCiAgICByZXR1cm4gZXJyb3JfY29uZGl0aW9uKHN0YXRpY19jYXN0PGludD4oX0Vycm5v
KSwgOjpzdGQ6OiBnZW5lcmljX2NhdGVnb3J5KCkpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGlu
ZSBlcnJvcl9jb25kaXRpb24gbWFrZV9lcnJvcl9jb25kaXRpb24oaW9fZXJyYyBfRXJybm8pIG5v
ZXhjZXB0IHsNCiAgICByZXR1cm4gZXJyb3JfY29uZGl0aW9uKHN0YXRpY19jYXN0PGludD4oX0Vy
cm5vKSwgOjpzdGQ6OiBpb3N0cmVhbV9jYXRlZ29yeSgpKTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Pg0K
c3RydWN0IGhhc2g8ZXJyb3JfY29kZT4gew0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RM
NDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUs
IGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
QURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgZXJyb3JfY29kZSBhcmd1bWVudF90eXBl
Ow0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0
eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFu
ZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4g
IiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNB
VElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5H
UyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1d
IHR5cGVkZWYgc2l6ZV90IHJlc3VsdF90eXBlOw0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3Qg
b3BlcmF0b3IoKShjb25zdCBlcnJvcl9jb2RlJiBfS2V5dmFsKSBjb25zdCBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiBoYXNoPGludD57fShfS2V5dmFsLnZhbHVlKCkpOw0KICAgIH0NCn07DQoN
CnRlbXBsYXRlIDw+DQpzdHJ1Y3QgaGFzaDxlcnJvcl9jb25kaXRpb24+IHsNCiAgICBbW2RlcHJl
Y2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5k
IGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3Vt
ZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVm
aW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAi
ICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVk
Z2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIGVycm9y
X2NvbmRpdGlvbiBhcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RM
NDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUs
IGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBh
cmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
QURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9D
WFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJl
Y2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgc2l6ZV90IHJlc3VsdF90eXBlOw0KDQog
ICAgW1tub2Rpc2NhcmRdXSBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBlcnJvcl9jb25kaXRpb24m
IF9LZXl2YWwpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGhhc2g8aW50Pnt9KF9L
ZXl2YWwudmFsdWUoKSk7DQogICAgfQ0KfTsNCg0KDQpjbGFzcyBfU3lzdGVtX2Vycm9yIDogcHVi
bGljIHJ1bnRpbWVfZXJyb3IgeyANCnByaXZhdGU6DQogICAgc3RhdGljIHN0cmluZyBfTWFrZXN0
cihlcnJvcl9jb2RlIF9FcnJjb2RlLCBzdHJpbmcgX01lc3NhZ2UpIHsgDQogICAgICAgIGlmICgh
X01lc3NhZ2UuZW1wdHkoKSkgew0KICAgICAgICAgICAgX01lc3NhZ2UuYXBwZW5kKCI6ICIpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgX01lc3NhZ2UuYXBwZW5kKF9FcnJjb2RlLm1lc3NhZ2UoKSk7
DQogICAgICAgIHJldHVybiBfTWVzc2FnZTsNCiAgICB9DQoNCnByb3RlY3RlZDoNCiAgICBfU3lz
dGVtX2Vycm9yKGVycm9yX2NvZGUgX0VycmNvZGUsIGNvbnN0IHN0cmluZyYgX01lc3NhZ2UpDQog
ICAgICAgIDogcnVudGltZV9lcnJvcihfTWFrZXN0cihfRXJyY29kZSwgX01lc3NhZ2UpKSwgX015
Y29kZShfRXJyY29kZSkge30NCg0KICAgIGVycm9yX2NvZGUgX015Y29kZTsgDQp9Ow0KDQpjbGFz
cyBzeXN0ZW1fZXJyb3IgOiBwdWJsaWMgX1N5c3RlbV9lcnJvciB7IA0KcHJpdmF0ZToNCiAgICB1
c2luZyBfTXliYXNlID0gX1N5c3RlbV9lcnJvcjsNCg0KcHVibGljOg0KICAgIHN5c3RlbV9lcnJv
cihlcnJvcl9jb2RlIF9FcnJjb2RlKSA6IF9NeWJhc2UoX0VycmNvZGUsICIiKSB7fQ0KDQogICAg
c3lzdGVtX2Vycm9yKGVycm9yX2NvZGUgX0VycmNvZGUsIGNvbnN0IHN0cmluZyYgX01lc3NhZ2Up
IDogX015YmFzZShfRXJyY29kZSwgX01lc3NhZ2UpIHt9DQoNCiAgICBzeXN0ZW1fZXJyb3IoZXJy
b3JfY29kZSBfRXJyY29kZSwgY29uc3QgY2hhciogX01lc3NhZ2UpIDogX015YmFzZShfRXJyY29k
ZSwgX01lc3NhZ2UpIHt9DQoNCiAgICBzeXN0ZW1fZXJyb3IoaW50IF9FcnJ2YWwsIGNvbnN0IGVy
cm9yX2NhdGVnb3J5JiBfRXJyY2F0KSA6IF9NeWJhc2UoZXJyb3JfY29kZShfRXJydmFsLCBfRXJy
Y2F0KSwgIiIpIHt9DQoNCiAgICBzeXN0ZW1fZXJyb3IoaW50IF9FcnJ2YWwsIGNvbnN0IGVycm9y
X2NhdGVnb3J5JiBfRXJyY2F0LCBjb25zdCBzdHJpbmcmIF9NZXNzYWdlKQ0KICAgICAgICA6IF9N
eWJhc2UoZXJyb3JfY29kZShfRXJydmFsLCBfRXJyY2F0KSwgX01lc3NhZ2UpIHt9DQoNCiAgICBz
eXN0ZW1fZXJyb3IoaW50IF9FcnJ2YWwsIGNvbnN0IGVycm9yX2NhdGVnb3J5JiBfRXJyY2F0LCBj
b25zdCBjaGFyKiBfTWVzc2FnZSkNCiAgICAgICAgOiBfTXliYXNlKGVycm9yX2NvZGUoX0VycnZh
bCwgX0VycmNhdCksIF9NZXNzYWdlKSB7fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdCBlcnJv
cl9jb2RlJiBjb2RlKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015Y29kZTsN
CiAgICB9DQoNCg0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgdm9pZCBfRG9yYWlzZSgpIGNvbnN0
IG92ZXJyaWRlIHsgDQogICAgICAgIF9pbnZva2Vfd2F0c29uKG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIDAsIDApOw0KICAgIH0NCiNsaW5lIDQzMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzeXN0ZW1fZXJyb3IiDQp9Ow0KDQpbW25vcmV0dXJu
XV0gaW5saW5lIHZvaWQgX1Rocm93X3N5c3RlbV9lcnJvcihjb25zdCBlcnJjIF9FcnJubykgew0K
ICAgIHN5c3RlbV9lcnJvcns6OnN0ZDo6IG1ha2VfZXJyb3JfY29kZShfRXJybm8pfS5fUmFpc2Uo
KTsNCn0NCg0KIGNvbnN0IGNoYXIqIF9fY2RlY2wgX1N5c2Vycm9yX21hcChpbnQpOw0KIGludCBf
X2NkZWNsIF9XaW5lcnJvcl9tYXAoaW50KTsNCg0Kc3RydWN0IF9TeXN0ZW1fZXJyb3JfbWVzc2Fn
ZSB7DQogICAgY2hhciogX1N0cjsNCiAgICBzaXplX3QgX0xlbmd0aDsNCg0KICAgIGV4cGxpY2l0
IF9TeXN0ZW1fZXJyb3JfbWVzc2FnZShjb25zdCB1bnNpZ25lZCBsb25nIF9FYykgbm9leGNlcHQN
CiAgICAgICAgOiBfU3RyKG51bGxwdHIpLCBfTGVuZ3RoKDo6IF9fc3RkX3N5c3RlbV9lcnJvcl9h
bGxvY2F0ZV9tZXNzYWdlKF9FYywgJl9TdHIpKSB7fQ0KDQogICAgX1N5c3RlbV9lcnJvcl9tZXNz
YWdlKGNvbnN0IF9TeXN0ZW1fZXJyb3JfbWVzc2FnZSYpID0gZGVsZXRlOw0KICAgIF9TeXN0ZW1f
ZXJyb3JfbWVzc2FnZSYgb3BlcmF0b3I9KGNvbnN0IF9TeXN0ZW1fZXJyb3JfbWVzc2FnZSYpID0g
ZGVsZXRlOw0KDQogICAgfl9TeXN0ZW1fZXJyb3JfbWVzc2FnZSgpIHsNCiAgICAgICAgOjogX19z
dGRfc3lzdGVtX2Vycm9yX2RlYWxsb2NhdGVfbWVzc2FnZShfU3RyKTsNCiAgICB9DQp9Ow0KDQpj
bGFzcyBfR2VuZXJpY19lcnJvcl9jYXRlZ29yeSA6IHB1YmxpYyBlcnJvcl9jYXRlZ29yeSB7IA0K
cHVibGljOg0KICAgIGNvbnN0ZXhwciBfR2VuZXJpY19lcnJvcl9jYXRlZ29yeSgpIG5vZXhjZXB0
IDogZXJyb3JfY2F0ZWdvcnkoX0dlbmVyaWNfYWRkcikge30NCg0KICAgIFtbbm9kaXNjYXJkXV0g
dmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qgbm9leGNlcHQgb3ZlcnJpZGUgew0KICAg
ICAgICByZXR1cm4gImdlbmVyaWMiOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gdmlydHVh
bCBzdHJpbmcgbWVzc2FnZShpbnQgX0VycmNvZGUpIGNvbnN0IG92ZXJyaWRlIHsNCiAgICAgICAg
cmV0dXJuIF9TeXNlcnJvcl9tYXAoX0VycmNvZGUpOw0KICAgIH0NCn07DQoNCmNsYXNzIF9Jb3N0
cmVhbV9lcnJvcl9jYXRlZ29yeTIgOiBwdWJsaWMgZXJyb3JfY2F0ZWdvcnkgeyANCnB1YmxpYzoN
CiAgICBjb25zdGV4cHIgX0lvc3RyZWFtX2Vycm9yX2NhdGVnb3J5MigpIG5vZXhjZXB0IDogZXJy
b3JfY2F0ZWdvcnkoX0lvc3RyZWFtX2FkZHIpIHt9DQoNCiAgICBbW25vZGlzY2FyZF1dIHZpcnR1
YWwgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IG5vZXhjZXB0IG92ZXJyaWRlIHsNCiAgICAgICAg
cmV0dXJuICJpb3N0cmVhbSI7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSB2aXJ0dWFsIHN0
cmluZyBtZXNzYWdlKGludCBfRXJyY29kZSkgY29uc3Qgb3ZlcnJpZGUgew0KICAgICAgICBpZiAo
X0VycmNvZGUgPT0gc3RhdGljX2Nhc3Q8aW50Pihpb19lcnJjOjpzdHJlYW0pKSB7DQogICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIgX0lvc3RyZWFtX2Vycm9yW10gPSAiaW9zdHJlYW0g
c3RyZWFtIGVycm9yIjsNCiAgICAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgX0lvc3RyZWFtX2Vy
cm9yX2xlbmd0aCA9IHNpemVvZihfSW9zdHJlYW1fZXJyb3IpIC0gMTsgDQogICAgICAgICAgICBy
ZXR1cm4gc3RyaW5nKF9Jb3N0cmVhbV9lcnJvciwgX0lvc3RyZWFtX2Vycm9yX2xlbmd0aCk7DQog
ICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gX1N5c2Vycm9yX21hcChfRXJyY29k
ZSk7DQogICAgICAgIH0NCiAgICB9DQp9Ow0KDQpjbGFzcyBfU3lzdGVtX2Vycm9yX2NhdGVnb3J5
IDogcHVibGljIGVycm9yX2NhdGVnb3J5IHsgDQpwdWJsaWM6DQogICAgY29uc3RleHByIF9TeXN0
ZW1fZXJyb3JfY2F0ZWdvcnkoKSBub2V4Y2VwdCA6IGVycm9yX2NhdGVnb3J5KF9TeXN0ZW1fYWRk
cikge30NCg0KICAgIFtbbm9kaXNjYXJkXV0gdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29u
c3Qgbm9leGNlcHQgb3ZlcnJpZGUgew0KICAgICAgICByZXR1cm4gInN5c3RlbSI7DQogICAgfQ0K
DQogICAgW1tub2Rpc2NhcmRdXSB2aXJ0dWFsIHN0cmluZyBtZXNzYWdlKGludCBfRXJyY29kZSkg
Y29uc3Qgb3ZlcnJpZGUgew0KICAgICAgICBjb25zdCBfU3lzdGVtX2Vycm9yX21lc3NhZ2UgX01z
ZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihfRXJyY29kZSkpOw0KICAgICAgICBpZiAoX01z
Zy5fTGVuZ3RoID09IDApIHsNCiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBfVW5r
bm93bl9lcnJvcltdID0gInVua25vd24gZXJyb3IiOw0KICAgICAgICAgICAgY29uc3RleHByIHNp
emVfdCBfVW5rbm93bl9lcnJvcl9sZW5ndGggPSBzaXplb2YoX1Vua25vd25fZXJyb3IpIC0gMTsg
DQogICAgICAgICAgICByZXR1cm4gc3RyaW5nKF9Vbmtub3duX2Vycm9yLCBfVW5rbm93bl9lcnJv
cl9sZW5ndGgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIHN0cmluZyhf
TXNnLl9TdHIsIF9Nc2cuX0xlbmd0aCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIHZpcnR1YWwgZXJyb3JfY29uZGl0aW9uIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKGlu
dCBfRXJydmFsKSBjb25zdCBub2V4Y2VwdCBvdmVycmlkZSB7DQogICAgICAgIA0KICAgICAgICBj
b25zdCBpbnQgX1Bvc3YgPSBfV2luZXJyb3JfbWFwKF9FcnJ2YWwpOw0KICAgICAgICBpZiAoX1Bv
c3YgPT0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIGVycm9yX2NvbmRpdGlvbihfRXJydmFsLCA6
OnN0ZDo6IHN5c3RlbV9jYXRlZ29yeSgpKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAg
IHJldHVybiBlcnJvcl9jb25kaXRpb24oX1Bvc3YsIDo6c3RkOjogZ2VuZXJpY19jYXRlZ29yeSgp
KTsNCiAgICAgICAgfQ0KICAgIH0NCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NTUg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcc3lzdGVt
X2Vycm9yIg0KDQoNCg0KDQoNCiNsaW5lIDU2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxzeXN0ZW1fZXJyb3IiDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5
Pg0KW1tub2Rpc2NhcmRdXSBjb25zdCBfVHkmIF9JbW1vcnRhbGl6ZV9tZW1jcHlfaW1hZ2UoKSBu
b2V4Y2VwdCB7DQogICAgDQogICAgDQogICAgY29uc3RleHByIHNpemVfdCBfUG9pbnRlcl9jb3Vu
dCA9IHNpemVvZihfVHkpIC8gc2l6ZW9mKHVpbnRwdHJfdCk7DQogICAgc3RhdGljIGF0b21pYzx1
aW50cHRyX3Q+IF9TdG9yYWdlW19Qb2ludGVyX2NvdW50XTsNCiAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihfU3RvcmFnZSkgPT0gc2l6ZW9mKF9UeSksICJCYWQgc3RvcmFnZSBzaXplIik7DQogICAg
c3RhdGljX2Fzc2VydChhbGlnbm9mKGRlY2x0eXBlKF9TdG9yYWdlKSkgPj0gYWxpZ25vZihfVHkp
LCAiQmFkIGFsaWdubWVudCBhc3N1bXB0aW9ucyIpOw0KICAgIGlmIChfU3RvcmFnZVswXS5sb2Fk
KG1lbW9yeV9vcmRlcl9hY3F1aXJlKSAhPSAwKSB7DQogICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PF9UeSY+KF9TdG9yYWdlKTsNCiAgICB9DQoNCiAgICBjb25zdCBfVHkgX1RhcmdldDsN
CiAgICBjb25zdCBhdXRvIF9UYXJnZXRfaXRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dHB0cl90Kj4oOjpzdGQ6OiBhZGRyZXNzb2YoX1RhcmdldCkpOw0KICAgIDo6IG1lbWNweShfU3Rv
cmFnZSArIDEsIF9UYXJnZXRfaXRlciArIDEsIHNpemVvZihfVHkpIC0gc2l6ZW9mKHVpbnRwdHJf
dCkpOw0KICAgIF9TdG9yYWdlWzBdLnN0b3JlKF9UYXJnZXRfaXRlclswXSwgbWVtb3J5X29yZGVy
X3JlbGVhc2UpOw0KICAgIHJldHVybiByZWludGVycHJldF9jYXN0PF9UeSY+KF9TdG9yYWdlKTsN
Cn0NCiNsaW5lIDU4MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxzeXN0ZW1fZXJyb3IiDQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGNvbnN0IGVycm9y
X2NhdGVnb3J5JiBnZW5lcmljX2NhdGVnb3J5KCkgbm9leGNlcHQgew0KICAgIHJldHVybiBfSW1t
b3J0YWxpemVfbWVtY3B5X2ltYWdlPF9HZW5lcmljX2Vycm9yX2NhdGVnb3J5PigpOw0KfQ0KDQpb
W25vZGlzY2FyZF1dIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSYgaW9zdHJlYW1fY2F0ZWdv
cnkoKSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9JbW1vcnRhbGl6ZV9tZW1jcHlfaW1hZ2U8X0lv
c3RyZWFtX2Vycm9yX2NhdGVnb3J5Mj4oKTsNCn0NCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgY29u
c3QgZXJyb3JfY2F0ZWdvcnkmIHN5c3RlbV9jYXRlZ29yeSgpIG5vZXhjZXB0IHsNCiAgICByZXR1
cm4gX0ltbW9ydGFsaXplX21lbWNweV9pbWFnZTxfU3lzdGVtX2Vycm9yX2NhdGVnb3J5PigpOw0K
fQ0KfQ0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KI2xpbmUg
NTk4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHN5
c3RlbV9lcnJvciINCiNsaW5lIDU5OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxzeXN0ZW1fZXJyb3IiDQojbGluZSAxOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtdXRleCINCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdGhyZWFkIg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxc
Li5cXHVjcnRcXHByb2Nlc3MuaCINCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGlu
Y2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29yZWNydF9zdGFydHVwLmgiDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcbWF0aC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTMgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNv
cmVjcnRfc3RhcnR1cC5oIg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx2Y3J1bnRpbWVfc3RhcnR1cC5oIg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6ICAgNDUxNCA0ODIwICkNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJu
ICJDIiB7DQoNCg0KDQp0eXBlZGVmIGVudW0gX2NydF9hcmd2X21vZGUNCnsNCiAgICBfY3J0X2Fy
Z3Zfbm9fYXJndW1lbnRzLA0KICAgIF9jcnRfYXJndl91bmV4cGFuZGVkX2FyZ3VtZW50cywNCiAg
ICBfY3J0X2FyZ3ZfZXhwYW5kZWRfYXJndW1lbnRzLA0KfSBfY3J0X2FyZ3ZfbW9kZTsNCg0KdHlw
ZWRlZiBlbnVtIF9jcnRfZXhpdF9yZXR1cm5fbW9kZQ0Kew0KICAgIF9jcnRfZXhpdF90ZXJtaW5h
dGVfcHJvY2VzcywNCiAgICBfY3J0X2V4aXRfcmV0dXJuX3RvX2NhbGxlcg0KfSBfY3J0X2V4aXRf
cmV0dXJuX21vZGU7DQoNCnR5cGVkZWYgZW51bSBfY3J0X2V4aXRfY2xlYW51cF9tb2RlDQp7DQog
ICAgX2NydF9leGl0X2Z1bGxfY2xlYW51cCwNCiAgICBfY3J0X2V4aXRfcXVpY2tfY2xlYW51cCwN
CiAgICBfY3J0X2V4aXRfbm9fY2xlYW51cA0KfSBfY3J0X2V4aXRfY2xlYW51cF9tb2RlOw0KDQpl
eHRlcm4gX2NydF9leGl0X3JldHVybl9tb2RlIF9fY3VycmVudF9leGl0X3JldHVybl9tb2RlOw0K
DQoNCg0KX192Y3J0X2Jvb2wgX19jZGVjbCBfX3ZjcnRfaW5pdGlhbGl6ZSh2b2lkKTsNCl9fdmNy
dF9ib29sIF9fY2RlY2wgX192Y3J0X3VuaW5pdGlhbGl6ZSggIF9fdmNydF9ib29sIF9UZXJtaW5h
dGluZyk7DQpfX3ZjcnRfYm9vbCBfX2NkZWNsIF9fdmNydF91bmluaXRpYWxpemVfY3JpdGljYWwo
dm9pZCk7DQpfX3ZjcnRfYm9vbCBfX2NkZWNsIF9fdmNydF90aHJlYWRfYXR0YWNoKHZvaWQpOw0K
X192Y3J0X2Jvb2wgX19jZGVjbCBfX3ZjcnRfdGhyZWFkX2RldGFjaCh2b2lkKTsNCg0KaW50IF9f
Y2RlY2wgX19pc2FfYXZhaWxhYmxlX2luaXQodm9pZCk7DQpfY3J0X2FyZ3ZfbW9kZSBfX2NkZWNs
IF9nZXRfc3RhcnR1cF9hcmd2X21vZGUodm9pZCk7DQoNCg0KDQp9IF9fcHJhZ21hKHBhY2socG9w
KSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxNCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcY29y
ZWNydF9zdGFydHVwLmgiDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgyMCA0OTk1IDQ5OTYgMjg3MTkg
Mjg3MjYgMjg3MjcgKQ0KDQoNCl9fcHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0K
DQoNCg0KDQoNCg0KDQoNCnN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgaW50IF9fY2RlY2wgX3NlaF9maWx0ZXJfZGxsKA0KICAgICAgdW5zaWduZWQg
bG9uZyAgICAgICAgICAgICAgIF9FeGNlcHRpb25OdW0sDQogICAgICBzdHJ1Y3QgX0VYQ0VQVElP
Tl9QT0lOVEVSUyogX0V4Y2VwdGlvblB0cg0KICAgICk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBpbnQgX19jZGVjbCBfc2VoX2ZpbHRlcl9leGUoDQogICAgICB1bnNpZ25lZCBsb25nICAgICAg
ICAgICAgICAgX0V4Y2VwdGlvbk51bSwNCiAgICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJT
KiBfRXhjZXB0aW9uUHRyDQogICAgKTsNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gX2Ny
dF9hcHBfdHlwZQ0Kew0KICAgIF9jcnRfdW5rbm93bl9hcHAsDQogICAgX2NydF9jb25zb2xlX2Fw
cCwNCiAgICBfY3J0X2d1aV9hcHANCn0gX2NydF9hcHBfdHlwZTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIF9jcnRfYXBwX3R5cGUgX19jZGVjbCBfcXVlcnlfYXBwX3R5cGUodm9pZCk7DQoNCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fY2RlY2wgX3NldF9hcHBfdHlwZSgNCiAgICAgIF9j
cnRfYXBwX3R5cGUgX1R5cGUNCiAgICApOw0KDQp0eXBlZGVmIGludCAoX19jZGVjbCAqX1VzZXJN
YXRoRXJyb3JGdW5jdGlvblBvaW50ZXIpKHN0cnVjdCBfZXhjZXB0aW9uICopOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF9fc2V0dXNlcm1hdGhlcnIoDQogICAgX1VzZXJN
YXRoRXJyb3JGdW5jdGlvblBvaW50ZXIgX1VzZXJNYXRoRXJyb3JGdW5jdGlvbg0KICAgICk7DQoN
CmludCBfX2NkZWNsIF9pc19jX3Rlcm1pbmF0aW9uX2NvbXBsZXRlKHZvaWQpOw0KDQoNCg0KDQoN
Cg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBlcnJub190IF9fY2RlY2wgX2NvbmZpZ3VyZV9u
YXJyb3dfYXJndigNCiAgICAgIF9jcnRfYXJndl9tb2RlIG1vZGUNCiAgICApOw0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgZXJybm9fdCBfX2NkZWNsIF9jb25maWd1cmVfd2lkZV9hcmd2KA0KICAg
ICAgX2NydF9hcmd2X21vZGUgbW9kZQ0KICAgICk7DQoNCg0KDQppbnQgX19jZGVjbCBfaW5pdGlh
bGl6ZV9uYXJyb3dfZW52aXJvbm1lbnQodm9pZCk7DQppbnQgX19jZGVjbCBfaW5pdGlhbGl6ZV93
aWRlX2Vudmlyb25tZW50KHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhcioqICAg
IF9fY2RlY2wgX2dldF9pbml0aWFsX25hcnJvd19lbnZpcm9ubWVudCh2b2lkKTsNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSB3Y2hhcl90KiogX19jZGVjbCBfZ2V0X2luaXRpYWxfd2lkZV9lbnZpcm9u
bWVudCh2b2lkKTsNCg0KY2hhciogICAgX19jZGVjbCBfZ2V0X25hcnJvd193aW5tYWluX2NvbW1h
bmRfbGluZSh2b2lkKTsNCndjaGFyX3QqIF9fY2RlY2wgX2dldF93aWRlX3dpbm1haW5fY29tbWFu
ZF9saW5lKHZvaWQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhcioqICAgIF9fY2RlY2wg
X19wX19hY21kbG4odm9pZCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCoqIF9fY2Rl
Y2wgX19wX193Y21kbG4odm9pZCk7DQoNCg0KDQoNCg0KICAgIA0KICAgIA0KI2xpbmUgMTA0ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4x
OTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3N0YXJ0dXAuaCINCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVm
IHZvaWQgKF9fY2RlY2wqIF9QVkZWKSh2b2lkKTsNCnR5cGVkZWYgaW50ICAoX19jZGVjbCogX1BJ
RlYpKHZvaWQpOw0KdHlwZWRlZiB2b2lkIChfX2NkZWNsKiBfUFZGSSkoaW50KTsNCg0KDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19jZGVjbCBfaW5pdHRlcm0oDQogICAgICAgICAg
ICBfUFZGViogIF9GaXJzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
UFZGViogIF9MYXN0DQogICAgICAgICk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
ICBfX2NkZWNsIF9pbml0dGVybV9lKA0KICAgICAgICAgICAgICAgX1BJRlYqICBfRmlyc3QsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1BJRlYqICBfTGFzdA0KICAgICAg
ICApOw0KI2xpbmUgMTI3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxjb3JlY3J0X3N0YXJ0dXAuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX29uZXhpdF90YWJsZV90DQp7DQogICAgX1BW
RlYqIF9maXJzdDsNCiAgICBfUFZGViogX2xhc3Q7DQogICAgX1BWRlYqIF9lbmQ7DQp9IF9vbmV4
aXRfdGFibGVfdDsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9pbml0aWFs
aXplX29uZXhpdF90YWJsZSgNCiAgICAgIF9vbmV4aXRfdGFibGVfdCogX1RhYmxlDQogICAgKTsN
Cg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9yZWdpc3Rlcl9vbmV4aXRfZnVu
Y3Rpb24oDQogICAgICBfb25leGl0X3RhYmxlX3QqIF9UYWJsZSwNCiAgICAgIF9vbmV4aXRfdCAg
ICAgICAgX0Z1bmN0aW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2Nk
ZWNsIF9leGVjdXRlX29uZXhpdF90YWJsZSgNCiAgICAgIF9vbmV4aXRfdGFibGVfdCogX1RhYmxl
DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9jcnRfYXRleGl0
KA0KICAgICAgX1BWRlYgX0Z1bmN0aW9uDQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGludCBfX2NkZWNsIF9jcnRfYXRfcXVpY2tfZXhpdCgNCiAgICAgIF9QVkZWIF9GdW5jdGlvbg0K
ICAgICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgDQogICAgX19jcnRfYm9vbCBfX2NkZWNs
IF9fYWNydF9pbml0aWFsaXplKHZvaWQpOw0KDQogICAgIA0KICAgIF9fY3J0X2Jvb2wgX19jZGVj
bCBfX2FjcnRfdW5pbml0aWFsaXplKA0KICAgICAgICAgIF9fY3J0X2Jvb2wgX1Rlcm1pbmF0aW5n
DQogICAgICAgICk7DQoNCiAgICAgDQogICAgX19jcnRfYm9vbCBfX2NkZWNsIF9fYWNydF91bmlu
aXRpYWxpemVfY3JpdGljYWwoDQogICAgICAgICAgX19jcnRfYm9vbCBfVGVybWluYXRpbmcNCiAg
ICAgICAgKTsNCg0KICAgICANCiAgICBfX2NydF9ib29sIF9fY2RlY2wgX19hY3J0X3RocmVhZF9h
dHRhY2godm9pZCk7DQoNCiAgICAgDQogICAgX19jcnRfYm9vbCBfX2NkZWNsIF9fYWNydF90aHJl
YWRfZGV0YWNoKHZvaWQpOw0KDQojbGluZSAxOTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGNvcmVjcnRfc3Rh
cnR1cC5oIg0KDQoNCg0KfSBfX3ByYWdtYShwYWNrKHBvcCkpDQoNCiNwcmFnbWEgd2FybmluZyhw
b3ApIA0KI2xpbmUgMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEw
XFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXC4uXFx1Y3J0XFxwcm9jZXNzLmgiDQoNCg0K
I3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMyNCAgNDUx
NCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyApDQoNCg0K
X19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX2RlY2xzcGVj
KG5vcmV0dXJuKSB2b2lkIF9fY2RlY2wgZXhpdCggIGludCBfQ29kZSk7DQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgX19jZGVjbCBfZXhpdCggIGlu
dCBfQ29kZSk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9fZGVjbHNwZWMobm9yZXR1cm4p
IHZvaWQgX19jZGVjbCBfRXhpdCggIGludCBfQ29kZSk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgX19jZGVjbCBxdWlja19leGl0KCAgaW50IF9D
b2RlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgX19kZWNsc3BlYyhub3JldHVybikgdm9p
ZCBfX2NkZWNsIGFib3J0KHZvaWQpOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBf
X2NkZWNsIHN5c3RlbSggIGNoYXIgY29uc3QqIF9Db21tYW5kKTsNCg0KICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB2b2lkIF9fY2RlY2wgX2NleGl0KHZvaWQpOw0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkIF9fY2RlY2wgX2NfZXhpdCh2b2lkKTsNCg0KICAgIHR5cGVkZWYgdm9pZCAo
X19zdGRjYWxsICpfdGxzX2NhbGxiYWNrX3R5cGUpKHZvaWQgKiwgdW5zaWduZWQgbG9uZywgdm9p
ZCAqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF9yZWdpc3Rlcl90
aHJlYWRfbG9jYWxfZXhlX2F0ZXhpdF9jYWxsYmFjayggIF90bHNfY2FsbGJhY2tfdHlwZSBfQ2Fs
bGJhY2spOw0KDQojbGluZSA1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0
c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcLi5cXHVjcnRcXHByb2Nlc3MuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgdm9pZCAgICAgKF9fY2RlY2wqICAgX2JlZ2ludGhyZWFkX3Byb2NfdHlwZSAgKSh2b2lk
Kik7DQp0eXBlZGVmIHVuc2lnbmVkIChfX3N0ZGNhbGwqIF9iZWdpbnRocmVhZGV4X3Byb2NfdHlw
ZSkodm9pZCopOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdWludHB0cl90IF9fY2RlY2wgX2Jl
Z2ludGhyZWFkKA0KICAgICAgICAgIF9iZWdpbnRocmVhZF9wcm9jX3R5cGUgX1N0YXJ0QWRkcmVz
cywNCiAgICAgICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgIF9TdGFja1NpemUsDQogICAgICB2
b2lkKiAgICAgICAgICAgICAgICAgIF9BcmdMaXN0DQogICAgKTsNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIHZvaWQgX19jZGVjbCBfZW5kdGhyZWFkKHZvaWQpOw0KDQogDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgdWludHB0cl90IF9fY2RlY2wgX2JlZ2ludGhyZWFkZXgoDQogICAgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgIF9TZWN1cml0eSwNCiAgICAgICAgICAgdW5zaWduZWQgICAgICAg
ICAgICAgICAgIF9TdGFja1NpemUsDQogICAgICAgICAgIF9iZWdpbnRocmVhZGV4X3Byb2NfdHlw
ZSBfU3RhcnRBZGRyZXNzLA0KICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICBfQXJnTGlz
dCwNCiAgICAgICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgIF9Jbml0RmxhZywNCiAgICAg
IHVuc2lnbmVkKiAgICAgICAgICAgICAgICBfVGhyZEFkZHINCiAgICApOw0KDQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF9lbmR0aHJlYWRleCgNCiAgICAgIHVuc2lnbmVkIF9S
ZXR1cm5Db2RlDQogICAgKTsNCg0KDQoNCg0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dCBfX2NkZWNsIF9nZXRwaWQodm9pZCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
cHRyX3QgX19jZGVjbCBfY3dhaXQoDQogICAgICAgICAgaW50KiAgICAgX1Rlcm1TdGF0LA0KICAg
ICAgICAgICAgICAgaW50cHRyX3QgX1Byb2NIYW5kbGUsDQogICAgICAgICAgICAgICBpbnQgICAg
ICBfQWN0aW9uDQogICAgICAgICk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRy
X3QgX19jZGVjbCBfZXhlY2woDQogICAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lLA0KICAg
ICAgICAgIGNoYXIgY29uc3QqIF9Bcmd1bWVudHMsDQogICAgICAgIC4uLik7DQoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBfZXhlY2xlKA0KICAgICAgICAgIGNo
YXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfQXJndW1lbnRzLA0K
ICAgICAgICAuLi4pOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2Rl
Y2wgX2V4ZWNscCgNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgICAg
Y2hhciBjb25zdCogX0FyZ3VtZW50cywNCiAgICAgICAgLi4uKTsNCg0KICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIF9leGVjbHBlKA0KICAgICAgICAgIGNoYXIgY29u
c3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICBjaGFyIGNvbnN0KiBfQXJndW1lbnRzLA0KICAgICAg
ICAuLi4pOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgX2V4
ZWN2KA0KICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgICBfRmlsZU5hbWUsDQogICAgICAgICAg
Y2hhciBjb25zdCogY29uc3QqIF9Bcmd1bWVudHMNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIF9leGVjdmUoDQogICAgICAgICAgICAgIGNo
YXIgY29uc3QqICAgICAgICBfRmlsZU5hbWUsDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNv
bnN0KiBfQXJndW1lbnRzLA0KICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0KiBfRW52aXJvbm1l
bnQNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2Nk
ZWNsIF9leGVjdnAoDQogICAgICAgICAgY2hhciBjb25zdCogICAgICAgIF9GaWxlTmFtZSwNCiAg
ICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCogX0FyZ3VtZW50cw0KICAgICAgICApOw0KDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgX2V4ZWN2cGUoDQogICAgICAg
ICAgICAgIGNoYXIgY29uc3QqICAgICAgICBfRmlsZU5hbWUsDQogICAgICAgICAgICAgIGNoYXIg
Y29uc3QqIGNvbnN0KiBfQXJndW1lbnRzLA0KICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0KiBf
RW52aXJvbm1lbnQNCiAgICAgICAgKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRw
dHJfdCBfX2NkZWNsIF9zcGF3bmwoDQogICAgICAgICAgICBpbnQgICAgICAgICBfTW9kZSwNCiAg
ICAgICAgICBjaGFyIGNvbnN0KiBfRmlsZU5hbWUsDQogICAgICAgICAgY2hhciBjb25zdCogX0Fy
Z3VtZW50cywNCiAgICAgICAgLi4uKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRw
dHJfdCBfX2NkZWNsIF9zcGF3bmxlKA0KICAgICAgICAgICAgaW50ICAgICAgICAgX01vZGUsDQog
ICAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgIGNoYXIgY29uc3QqIF9B
cmd1bWVudHMsDQogICAgICAgIC4uLik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50
cHRyX3QgX19jZGVjbCBfc3Bhd25scCgNCiAgICAgICAgICAgIGludCAgICAgICAgIF9Nb2RlLA0K
ICAgICAgICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICBjaGFyIGNvbnN0KiBf
QXJndW1lbnRzLA0KICAgICAgICAuLi4pOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dHB0cl90IF9fY2RlY2wgX3NwYXdubHBlKA0KICAgICAgICAgICAgaW50ICAgICAgICAgX01vZGUs
DQogICAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgIGNoYXIgY29uc3Qq
IF9Bcmd1bWVudHMsDQogICAgICAgIC4uLik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
aW50cHRyX3QgX19jZGVjbCBfc3Bhd252KA0KICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAg
IF9Nb2RlLA0KICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgICBfRmlsZU5hbWUsDQogICAgICAg
ICAgY2hhciBjb25zdCogY29uc3QqIF9Bcmd1bWVudHMNCiAgICAgICAgKTsNCg0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIF9zcGF3bnZlKA0KICAgICAgICAgICAg
ICAgIGludCAgICAgICAgICAgICAgICBfTW9kZSwNCiAgICAgICAgICAgICAgY2hhciBjb25zdCog
ICAgICAgIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QqIF9Bcmd1
bWVudHMsDQogICAgICAgICAgY2hhciBjb25zdCogY29uc3QqIF9FbnZpcm9ubWVudA0KICAgICAg
ICApOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgX3NwYXdu
dnAoDQogICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgX01vZGUsDQogICAgICAgICAgY2hh
ciBjb25zdCogICAgICAgIF9GaWxlTmFtZSwNCiAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCog
X0FyZ3VtZW50cw0KICAgICAgICApOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0
cl90IF9fY2RlY2wgX3NwYXdudnBlKA0KICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAg
ICBfTW9kZSwNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogICAgICAgIF9GaWxlTmFtZSwNCiAg
ICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QqIF9Bcmd1bWVudHMsDQogICAgICAgICAgY2hh
ciBjb25zdCogY29uc3QqIF9FbnZpcm9ubWVudA0KICAgICAgICApOw0KDQogICAgX19kZWNsc3Bl
YyhkZXByZWNhdGVkKCJUaGlzIGZ1bmN0aW9uIG9yIHZhcmlhYmxlIGhhcyBiZWVuIHN1cGVyY2Vk
ZWQgYnkgbmV3ZXIgbGlicmFyeSAiICJvciBvcGVyYXRpbmcgc3lzdGVtIGZ1bmN0aW9uYWxpdHku
IENvbnNpZGVyIHVzaW5nICIgIkxvYWRMaWJyYXJ5IiAiICIgImluc3RlYWQuIFNlZSBvbmxpbmUg
aGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3Qg
X19jZGVjbCBfbG9hZGRsbCgNCiAgICAgICAgICBjaGFyKiBfRmlsZU5hbWUNCiAgICAgICAgKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhpcyBmdW5jdGlvbiBvciB2YXJpYWJsZSBo
YXMgYmVlbiBzdXBlcmNlZGVkIGJ5IG5ld2VyIGxpYnJhcnkgIiAib3Igb3BlcmF0aW5nIHN5c3Rl
bSBmdW5jdGlvbmFsaXR5LiBDb25zaWRlciB1c2luZyAiICJGcmVlTGlicmFyeSIgIiAiICJpbnN0
ZWFkLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludCBfX2NkZWNsIF91bmxvYWRkbGwoDQogICAgICAgICAgaW50cHRyX3QgX0hhbmRs
ZQ0KICAgICAgICApOw0KDQogICAgdHlwZWRlZiBpbnQgKF9fY2RlY2wqIF9HZXREbGxQcm9jQWRk
clByb2NUeXBlKSh2b2lkKTsNCg0KICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhpcyBmdW5j
dGlvbiBvciB2YXJpYWJsZSBoYXMgYmVlbiBzdXBlcmNlZGVkIGJ5IG5ld2VyIGxpYnJhcnkgIiAi
b3Igb3BlcmF0aW5nIHN5c3RlbSBmdW5jdGlvbmFsaXR5LiBDb25zaWRlciB1c2luZyAiICJHZXRQ
cm9jQWRkcmVzcyIgIiAiICJpbnN0ZWFkLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikp
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIF9HZXREbGxQcm9jQWRkclByb2NUeXBlIF9fY2Rl
Y2wgX2dldGRsbHByb2NhZGRyKA0KICAgICAgICAgICAgICAgIGludHB0cl90IF9IYW5kbGUsDQog
ICAgICAgICAgY2hhciogICAgX1Byb2NlZHVyZU5hbWUsDQogICAgICAgICAgICAgICAgaW50cHRy
X3QgX09yZGluYWwNCiAgICAgICAgKTsNCg0KI2xpbmUgMjMzICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFwuLlxc
dWNydFxccHJvY2Vzcy5oIg0KDQoNCg0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCg0KICAgIA0KDQogICAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRl
ZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1
c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfY3dhaXQiICIuIFNl
ZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGludHB0cl90IF9fY2RlY2wgY3dhaXQoDQogICAgICAgICAgICAgIGludCogICAgIF9UZXJt
U3RhdCwNCiAgICAgICAgICAgICAgICAgICBpbnRwdHJfdCBfUHJvY0hhbmRsZSwNCiAgICAgICAg
ICAgICAgICAgICBpbnQgICAgICBfQWN0aW9uDQogICAgICAgICAgICApOw0KDQogICAgICAgIF9f
ZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXBy
ZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1l
OiAiICJfZXhlY2wiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgZXhlY2woDQogICAgICAgICAg
ICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogX0Fy
Z3VtZW50cywNCiAgICAgICAgICAgIC4uLik7DQoNCiAgICAgICAgX19kZWNsc3BlYyhkZXByZWNh
dGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQs
IHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9leGVjbGUiICIu
IFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludHB0cl90IF9fY2RlY2wgZXhlY2xlKA0KICAgICAgICAgICAgICBjaGFyIGNvbnN0
KiBfRmlsZU5hbWUsDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9Bcmd1bWVudHMsDQogICAg
ICAgICAgICAuLi4pOw0KDQogICAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lY
IG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBD
ICIgImFuZCBDKysgY29uZm9ybWFudCBuYW1lOiAiICJfZXhlY2xwIiAiLiBTZWUgb25saW5lIGhl
bHAgZm9yIGRldGFpbHMuIikpDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJf
dCBfX2NkZWNsIGV4ZWNscCgNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lLA0K
ICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfQXJndW1lbnRzLA0KICAgICAgICAgICAgLi4uKTsN
Cg0KICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlz
IGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNv
bmZvcm1hbnQgbmFtZTogIiAiX2V4ZWNscGUiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWls
cy4iKSkNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgZXhl
Y2xwZSgNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogX0ZpbGVOYW1lLA0KICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiBfQXJndW1lbnRzLA0KICAgICAgICAgICAgLi4uKTsNCg0KICAgICAgICBf
X2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVw
cmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFt
ZTogIiAiX2V4ZWN2IiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIGV4ZWN2KA0KICAgICAgICAg
ICAgICBjaGFyIGNvbnN0KiAgICAgICAgX0ZpbGVOYW1lLA0KICAgICAgICAgICAgICBjaGFyIGNv
bnN0KiBjb25zdCogX0FyZ3VtZW50cw0KICAgICAgICAgICAgKTsNCg0KICAgICAgICBfX2RlY2xz
cGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRl
ZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAi
X2V4ZWN2ZSIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgICAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBleGVjdmUoDQogICAgICAgICAgICAg
ICAgICBjaGFyIGNvbnN0KiAgICAgICAgX0ZpbGVOYW1lLA0KICAgICAgICAgICAgICAgICAgY2hh
ciBjb25zdCogY29uc3QqIF9Bcmd1bWVudHMsDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNv
bnN0KiBfRW52aXJvbm1lbnQNCiAgICAgICAgICAgICk7DQoNCiAgICAgICAgX19kZWNsc3BlYyhk
ZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIElu
c3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9leGVj
dnAiICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgZXhlY3ZwKA0KICAgICAgICAgICAgICBjaGFy
IGNvbnN0KiAgICAgICAgX0ZpbGVOYW1lLA0KICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25z
dCogX0FyZ3VtZW50cw0KICAgICAgICAgICAgKTsNCg0KICAgICAgICBfX2RlY2xzcGVjKGRlcHJl
Y2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVh
ZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX2V4ZWN2cGUi
ICIuIFNlZSBvbmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGludHB0cl90IF9fY2RlY2wgZXhlY3ZwZSgNCiAgICAgICAgICAgICAgICAgIGNo
YXIgY29uc3QqICAgICAgICBfRmlsZU5hbWUsDQogICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0
KiBjb25zdCogX0FyZ3VtZW50cywNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QqIF9F
bnZpcm9ubWVudA0KICAgICAgICAgICAgKTsNCg0KICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0
ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwg
dXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3NwYXdubCIgIi4g
U2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgICAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgaW50cHRyX3QgX19jZGVjbCBzcGF3bmwoDQogICAgICAgICAgICAgICAgaW50ICAgICAg
ICAgX01vZGUsDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAg
ICAgICAgY2hhciBjb25zdCogX0FyZ3VtZW50cywNCiAgICAgICAgICAgIC4uLik7DQoNCiAgICAg
ICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlz
IGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50
IG5hbWU6ICIgIl9zcGF3bmxlIiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQog
ICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIHNwYXdubGUoDQog
ICAgICAgICAgICAgICAgaW50ICAgICAgICAgX01vZGUsDQogICAgICAgICAgICAgIGNoYXIgY29u
c3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogX0FyZ3VtZW50cywNCiAg
ICAgICAgICAgIC4uLik7DQoNCiAgICAgICAgX19kZWNsc3BlYyhkZXByZWNhdGVkKCJUaGUgUE9T
SVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNP
IEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9zcGF3bmxwIiAiLiBTZWUgb25saW5l
IGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRw
dHJfdCBfX2NkZWNsIHNwYXdubHAoDQogICAgICAgICAgICAgICAgaW50ICAgICAgICAgX01vZGUs
DQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIF9GaWxlTmFtZSwNCiAgICAgICAgICAgICAgY2hh
ciBjb25zdCogX0FyZ3VtZW50cywNCiAgICAgICAgICAgIC4uLik7DQoNCiAgICAgICAgX19kZWNs
c3BlYyhkZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0
ZWQuIEluc3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIg
Il9zcGF3bmxwZSIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0KICAgICAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19jZGVjbCBzcGF3bmxwZSgNCiAgICAgICAg
ICAgICAgICBpbnQgICAgICAgICBfTW9kZSwNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogX0Zp
bGVOYW1lLA0KICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBfQXJndW1lbnRzLA0KICAgICAgICAg
ICAgLi4uKTsNCg0KICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1l
IGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJh
bmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3NwYXdudiIgIi4gU2VlIG9ubGluZSBoZWxwIGZv
ciBkZXRhaWxzLiIpKQ0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50cHRyX3QgX19j
ZGVjbCBzcGF3bnYoDQogICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgIF9Nb2RlLA0K
ICAgICAgICAgICAgICBjaGFyIGNvbnN0KiAgICAgICAgX0ZpbGVOYW1lLA0KICAgICAgICAgICAg
ICBjaGFyIGNvbnN0KiBjb25zdCogX0FyZ3VtZW50cyk7DQoNCiAgICAgICAgX19kZWNsc3BlYyhk
ZXByZWNhdGVkKCJUaGUgUE9TSVggbmFtZSBmb3IgdGhpcyBpdGVtIGlzIGRlcHJlY2F0ZWQuIElu
c3RlYWQsIHVzZSB0aGUgSVNPIEMgIiAiYW5kIEMrKyBjb25mb3JtYW50IG5hbWU6ICIgIl9zcGF3
bnZlIiAiLiBTZWUgb25saW5lIGhlbHAgZm9yIGRldGFpbHMuIikpDQogICAgICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCBfX2NkZWNsIHNwYXdudmUoDQogICAgICAgICAgICAgICAg
ICAgIGludCAgICAgICAgICAgICAgICBfTW9kZSwNCiAgICAgICAgICAgICAgICAgIGNoYXIgY29u
c3QqICAgICAgICBfRmlsZU5hbWUsDQogICAgICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25z
dCogX0FyZ3VtZW50cywNCiAgICAgICAgICAgICAgY2hhciBjb25zdCogY29uc3QqIF9FbnZpcm9u
bWVudA0KICAgICAgICAgICAgKTsNCg0KICAgICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRo
ZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0gaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRo
ZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1hbnQgbmFtZTogIiAiX3NwYXdudnAiICIuIFNlZSBv
bmxpbmUgaGVscCBmb3IgZGV0YWlscy4iKSkNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGludHB0cl90IF9fY2RlY2wgc3Bhd252cCgNCiAgICAgICAgICAgICAgICBpbnQgICAgICAgICAg
ICAgICAgX01vZGUsDQogICAgICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgICBfRmlsZU5hbWUs
DQogICAgICAgICAgICAgIGNoYXIgY29uc3QqIGNvbnN0KiBfQXJndW1lbnRzDQogICAgICAgICAg
ICApOw0KDQogICAgICAgIF9fZGVjbHNwZWMoZGVwcmVjYXRlZCgiVGhlIFBPU0lYIG5hbWUgZm9y
IHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgdGhlIElTTyBDICIgImFuZCBD
KysgY29uZm9ybWFudCBuYW1lOiAiICJfc3Bhd252cGUiICIuIFNlZSBvbmxpbmUgaGVscCBmb3Ig
ZGV0YWlscy4iKSkNCiAgICAgICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludHB0cl90IF9fY2Rl
Y2wgc3Bhd252cGUoDQogICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICBfTW9k
ZSwNCiAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgICBfRmlsZU5hbWUsDQogICAg
ICAgICAgICAgICAgICBjaGFyIGNvbnN0KiBjb25zdCogX0FyZ3VtZW50cywNCiAgICAgICAgICAg
ICAgY2hhciBjb25zdCogY29uc3QqIF9FbnZpcm9ubWVudA0KICAgICAgICAgICAgKTsNCg0KICAg
ICAgICBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQoIlRoZSBQT1NJWCBuYW1lIGZvciB0aGlzIGl0ZW0g
aXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIHRoZSBJU08gQyAiICJhbmQgQysrIGNvbmZvcm1h
bnQgbmFtZTogIiAiX2dldHBpZCIgIi4gU2VlIG9ubGluZSBoZWxwIGZvciBkZXRhaWxzLiIpKQ0K
ICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgZ2V0cGlkKHZvaWQpOw0K
DQogICAgI2xpbmUgMzY3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwx
MFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFwuLlxcdWNydFxccHJvY2Vzcy5oIg0KDQoj
bGluZSAzNjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNs
dWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXC4uXFx1Y3J0XFxwcm9jZXNzLmgiDQoNCg0KDQp9IF9f
cHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAzNzYgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5
MDQxLjBcXHVjcnRcXC4uXFx1Y3J0XFxwcm9jZXNzLmgiDQojbGluZSAxNCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0aHJlYWQiDQoNCiNsaW5lIDEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHRocmVh
ZHMuaCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBwYWNr
KHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0
NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAy
NyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KdXNpbmcgX1Ro
cmRfaWRfdCA9IHVuc2lnbmVkIGludDsNCnN0cnVjdCBfVGhyZF90IHsgDQogICAgdm9pZCogX0hu
ZDsgDQogICAgX1RocmRfaWRfdCBfSWQ7DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4dGhyZWFkcy5oIg0KI2xpbmUgNTQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceHRocmVhZHMuaCINCg0K
dXNpbmcgX010eF90ID0gc3RydWN0IF9NdHhfaW50ZXJuYWxfaW1wX3QqOw0KDQp1c2luZyBfQ25k
X3QgPSBzdHJ1Y3QgX0NuZF9pbnRlcm5hbF9pbXBfdCo7DQoNCmVudW0geyBfVGhyZF9zdWNjZXNz
LCBfVGhyZF9ub21lbSwgX1RocmRfdGltZWRvdXQsIF9UaHJkX2J1c3ksIF9UaHJkX2Vycm9yIH07
DQoNCg0KIGludCBfX2NkZWNsIF9UaHJkX2RldGFjaChfVGhyZF90KTsNCiBpbnQgX19jZGVjbCBf
VGhyZF9qb2luKF9UaHJkX3QsIGludCopOw0KIHZvaWQgX19jZGVjbCBfVGhyZF9zbGVlcChjb25z
dCB4dGltZSopOw0KIHZvaWQgX19jZGVjbCBfVGhyZF95aWVsZCgpOw0KIHVuc2lnbmVkIGludCBf
X2NkZWNsIF9UaHJkX2hhcmR3YXJlX2NvbmN1cnJlbmN5KCk7DQogX1RocmRfaWRfdCBfX2NkZWNs
IF9UaHJkX2lkKCk7DQoNCg0KZW51bSB7IA0KICAgIF9NdHhfcGxhaW4gICAgID0gMHgwMSwNCiAg
ICBfTXR4X3RyeSAgICAgICA9IDB4MDIsDQogICAgX010eF90aW1lZCAgICAgPSAweDA0LA0KICAg
IF9NdHhfcmVjdXJzaXZlID0gMHgxMDANCn07DQoNCiBpbnQgX19jZGVjbCBfTXR4X2luaXQoX010
eF90KiwgaW50KTsNCiB2b2lkIF9fY2RlY2wgX010eF9kZXN0cm95KF9NdHhfdCk7DQogdm9pZCBf
X2NkZWNsIF9NdHhfaW5pdF9pbl9zaXR1KF9NdHhfdCwgaW50KTsNCiB2b2lkIF9fY2RlY2wgX010
eF9kZXN0cm95X2luX3NpdHUoX010eF90KTsNCiBpbnQgX19jZGVjbCBfTXR4X2N1cnJlbnRfb3du
cyhfTXR4X3QpOw0KIGludCBfX2NkZWNsIF9NdHhfbG9jayhfTXR4X3QpOw0KIGludCBfX2NkZWNs
IF9NdHhfdHJ5bG9jayhfTXR4X3QpOw0KIGludCBfX2NkZWNsIF9NdHhfdGltZWRsb2NrKF9NdHhf
dCwgY29uc3QgeHRpbWUqKTsNCiBpbnQgX19jZGVjbCBfTXR4X3VubG9jayhfTXR4X3QpOyANCg0K
IHZvaWQqIF9fY2RlY2wgX010eF9nZXRjb25jcnRjcyhfTXR4X3QpOw0KIHZvaWQgX19jZGVjbCBf
TXR4X2NsZWFyX293bmVyKF9NdHhfdCk7DQogdm9pZCBfX2NkZWNsIF9NdHhfcmVzZXRfb3duZXIo
X010eF90KTsNCg0KDQoNCnVzaW5nIF9TbXR4X3QgPSB2b2lkKjsNCnZvaWQgX19jZGVjbCBfU210
eF9sb2NrX2V4Y2x1c2l2ZShfU210eF90Kik7DQp2b2lkIF9fY2RlY2wgX1NtdHhfbG9ja19zaGFy
ZWQoX1NtdHhfdCopOw0KaW50IF9fY2RlY2wgX1NtdHhfdHJ5X2xvY2tfZXhjbHVzaXZlKF9TbXR4
X3QqKTsNCmludCBfX2NkZWNsIF9TbXR4X3RyeV9sb2NrX3NoYXJlZChfU210eF90Kik7DQp2b2lk
IF9fY2RlY2wgX1NtdHhfdW5sb2NrX2V4Y2x1c2l2ZShfU210eF90Kik7DQp2b2lkIF9fY2RlY2wg
X1NtdHhfdW5sb2NrX3NoYXJlZChfU210eF90Kik7DQoNCg0KIGludCBfX2NkZWNsIF9DbmRfaW5p
dChfQ25kX3QqKTsNCiB2b2lkIF9fY2RlY2wgX0NuZF9kZXN0cm95KF9DbmRfdCk7DQogdm9pZCBf
X2NkZWNsIF9DbmRfaW5pdF9pbl9zaXR1KF9DbmRfdCk7DQogdm9pZCBfX2NkZWNsIF9DbmRfZGVz
dHJveV9pbl9zaXR1KF9DbmRfdCk7DQogaW50IF9fY2RlY2wgX0NuZF93YWl0KF9DbmRfdCwgX010
eF90KTsgDQogaW50IF9fY2RlY2wgX0NuZF90aW1lZHdhaXQoX0NuZF90LCBfTXR4X3QsIGNvbnN0
IHh0aW1lKik7DQogaW50IF9fY2RlY2wgX0NuZF9icm9hZGNhc3QoX0NuZF90KTsgDQogaW50IF9f
Y2RlY2wgX0NuZF9zaWduYWwoX0NuZF90KTsgDQogdm9pZCBfX2NkZWNsIF9DbmRfcmVnaXN0ZXJf
YXRfdGhyZWFkX2V4aXQoX0NuZF90LCBfTXR4X3QsIGludCopOw0KIHZvaWQgX19jZGVjbCBfQ25k
X3VucmVnaXN0ZXJfYXRfdGhyZWFkX2V4aXQoX010eF90KTsNCiB2b2lkIF9fY2RlY2wgX0NuZF9k
b19icm9hZGNhc3RfYXRfdGhyZWFkX2V4aXQoKTsNCn0NCg0KbmFtZXNwYWNlIHN0ZCB7DQplbnVt
IHsgDQogICAgX0RFVklDRV9PUl9SRVNPVVJDRV9CVVNZLA0KICAgIF9JTlZBTElEX0FSR1VNRU5U
LA0KICAgIF9OT19TVUNIX1BST0NFU1MsDQogICAgX05PVF9FTk9VR0hfTUVNT1JZLA0KICAgIF9P
UEVSQVRJT05fTk9UX1BFUk1JVFRFRCwNCiAgICBfUkVTT1VSQ0VfREVBRExPQ0tfV09VTERfT0ND
VVIsDQogICAgX1JFU09VUkNFX1VOQVZBSUxBQkxFX1RSWV9BR0FJTg0KfTsNCg0KW1tub3JldHVy
bl1dICB2b2lkIF9fY2RlY2wgX1Rocm93X0NfZXJyb3IoaW50IF9Db2RlKTsNCltbbm9yZXR1cm5d
XSAgdm9pZCBfX2NkZWNsIF9UaHJvd19DcHBfZXJyb3IoaW50IF9Db2RlKTsNCg0KaW5saW5lIGlu
dCBfQ2hlY2tfQ19yZXR1cm4oaW50IF9SZXMpIHsgDQogICAgaWYgKF9SZXMgIT0gX1RocmRfc3Vj
Y2Vzcykgew0KICAgICAgICBfVGhyb3dfQ19lcnJvcihfUmVzKTsNCiAgICB9DQoNCiAgICByZXR1
cm4gX1JlczsNCn0NCn0NCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBv
cCkNCiNsaW5lIDE0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx4dGhyZWFkcy5oIg0KI2xpbmUgMTQzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHh0aHJlYWRzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDE2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHRocmVhZCINCg0KDQoNCg0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkN
CiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTgw
IDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4NyA0NTg4IDQ2MTkgNDYyMyA0
NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODggNTAyNiA1MDI3IDUwNDUgNjI5
NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KbmFtZXNwYWNlIHN0ZCB7DQpjbGFzcyB0aHJlYWQgeyAN
CnB1YmxpYzoNCiAgICBjbGFzcyBpZDsNCg0KICAgIHVzaW5nIG5hdGl2ZV9oYW5kbGVfdHlwZSA9
IHZvaWQqOw0KDQogICAgdGhyZWFkKCkgbm9leGNlcHQgOiBfVGhye30ge30NCg0KcHJpdmF0ZToN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R1cGxlLCBzaXplX3QuLi4gX0luZGljZXM+DQogICAgc3Rh
dGljIHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgX0ludm9rZSh2b2lkKiBfUmF3VmFscykgbm9leGNl
cHQgIHsNCiAgICAgICAgDQogICAgICAgIGNvbnN0IHVuaXF1ZV9wdHI8X1R1cGxlPiBfRm5WYWxz
KHN0YXRpY19jYXN0PF9UdXBsZSo+KF9SYXdWYWxzKSk7DQogICAgICAgIF9UdXBsZSYgX1R1cCA9
ICpfRm5WYWxzOw0KICAgICAgICA6OnN0ZDo6IGludm9rZSg6OnN0ZDo6IG1vdmUoOjpzdGQ6OiBn
ZXQ8X0luZGljZXM+KF9UdXApKS4uLik7DQogICAgICAgIF9DbmRfZG9fYnJvYWRjYXN0X2F0X3Ro
cmVhZF9leGl0KCk7IA0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX1R1cGxlLCBzaXplX3QuLi4gX0luZGljZXM+DQogICAgW1tub2Rpc2NhcmRdXSBzdGF0
aWMgY29uc3RleHByIGF1dG8gX0dldF9pbnZva2UoaW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+
KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAmX0ludm9rZTxfVHVwbGUsIF9JbmRpY2VzLi4u
PjsNCiAgICB9DQoNCnB1YmxpYzoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZuLCBjbGFzcy4uLiBf
QXJncywgZW5hYmxlX2lmX3Q8IWlzX3NhbWVfdjxfUmVtb3ZlX2N2cmVmX3Q8X0ZuPiwgdGhyZWFk
PiwgaW50PiA9IDA+DQogICAgZXhwbGljaXQgdGhyZWFkKF9GbiYmIF9GeCwgX0FyZ3MmJi4uLiBf
QXgpIHsNCiAgICAgICAgdXNpbmcgX1R1cGxlICAgICAgICAgICAgICAgICA9IHR1cGxlPGRlY2F5
X3Q8X0ZuPiwgZGVjYXlfdDxfQXJncz4uLi4+Ow0KICAgICAgICBhdXRvIF9EZWNheV9jb3BpZWQg
ICAgICAgICAgID0gOjpzdGQ6OiBtYWtlX3VuaXF1ZTxfVHVwbGU+KDo6c3RkOjogZm9yd2FyZDxf
Rm4+KF9GeCksIDo6c3RkOjogZm9yd2FyZDxfQXJncz4oX0F4KS4uLik7DQogICAgICAgIGNvbnN0
ZXhwciBhdXRvIF9JbnZva2VyX3Byb2MgPSBfR2V0X2ludm9rZTxfVHVwbGU+KG1ha2VfaW5kZXhf
c2VxdWVuY2U8MSArIHNpemVvZi4uLihfQXJncyk+e30pOw0KDQojcHJhZ21hIHdhcm5pbmcocHVz
aCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNTAzOSkgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAg
X1Roci5fSG5kID0NCiAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDo6IF9iZWdp
bnRocmVhZGV4KG51bGxwdHIsIDAsIF9JbnZva2VyX3Byb2MsIF9EZWNheV9jb3BpZWQuZ2V0KCks
IDAsICZfVGhyLl9JZCkpOw0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCg0KICAgICAgICBpZiAoX1Ro
ci5fSG5kKSB7IA0KICAgICAgICAgICAgKHZvaWQpIF9EZWNheV9jb3BpZWQucmVsZWFzZSgpOw0K
ICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIF9UaHIuX0lkID0gMDsNCiAgICAgICAgICAg
IF9UaHJvd19DcHBfZXJyb3IoX1JFU09VUkNFX1VOQVZBSUxBQkxFX1RSWV9BR0FJTik7DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICB+dGhyZWFkKCkgbm9leGNlcHQgew0KICAgICAgICBpZiAoam9p
bmFibGUoKSkgew0KICAgICAgICAgICAgOjpzdGQ6OiB0ZXJtaW5hdGUoKTsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIHRocmVhZCh0aHJlYWQmJiBfT3RoZXIpIG5vZXhjZXB0IDogX1Rocig6OnN0
ZDo6IGV4Y2hhbmdlKF9PdGhlci5fVGhyLCB7fSkpIHt9DQoNCiAgICB0aHJlYWQmIG9wZXJhdG9y
PSh0aHJlYWQmJiBfT3RoZXIpIG5vZXhjZXB0IHsNCiAgICAgICAgaWYgKGpvaW5hYmxlKCkpIHsN
CiAgICAgICAgICAgIDo6c3RkOjogdGVybWluYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBf
VGhyID0gOjpzdGQ6OiBleGNoYW5nZShfT3RoZXIuX1Rociwge30pOw0KICAgICAgICByZXR1cm4g
KnRoaXM7DQogICAgfQ0KDQogICAgdGhyZWFkKGNvbnN0IHRocmVhZCYpID0gZGVsZXRlOw0KICAg
IHRocmVhZCYgb3BlcmF0b3I9KGNvbnN0IHRocmVhZCYpID0gZGVsZXRlOw0KDQogICAgdm9pZCBz
d2FwKHRocmVhZCYgX090aGVyKSBub2V4Y2VwdCB7DQogICAgICAgIDo6c3RkOjogc3dhcChfVGhy
LCBfT3RoZXIuX1Rocik7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIGpvaW5hYmxl
KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX1Roci5fSWQgIT0gMDsNCiAgICB9
DQoNCiAgICB2b2lkIGpvaW4oKSB7DQogICAgICAgIGlmICgham9pbmFibGUoKSkgew0KICAgICAg
ICAgICAgX1Rocm93X0NwcF9lcnJvcihfSU5WQUxJRF9BUkdVTUVOVCk7DQogICAgICAgIH0NCg0K
ICAgICAgICBpZiAoX1Roci5fSWQgPT0gX1RocmRfaWQoKSkgew0KICAgICAgICAgICAgX1Rocm93
X0NwcF9lcnJvcihfUkVTT1VSQ0VfREVBRExPQ0tfV09VTERfT0NDVVIpOw0KICAgICAgICB9DQoN
CiAgICAgICAgaWYgKF9UaHJkX2pvaW4oX1RociwgbnVsbHB0cikgIT0gX1RocmRfc3VjY2Vzcykg
ew0KICAgICAgICAgICAgX1Rocm93X0NwcF9lcnJvcihfTk9fU1VDSF9QUk9DRVNTKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIF9UaHIgPSB7fTsNCiAgICB9DQoNCiAgICB2b2lkIGRldGFjaCgpIHsN
CiAgICAgICAgaWYgKCFqb2luYWJsZSgpKSB7DQogICAgICAgICAgICBfVGhyb3dfQ3BwX2Vycm9y
KF9JTlZBTElEX0FSR1VNRU5UKTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9DaGVja19DX3JldHVy
bihfVGhyZF9kZXRhY2goX1RocikpOw0KICAgICAgICBfVGhyID0ge307DQogICAgfQ0KDQogICAg
W1tub2Rpc2NhcmRdXSBpZCBnZXRfaWQoKSBjb25zdCBub2V4Y2VwdDsNCg0KICAgIFtbbm9kaXNj
YXJkXV0gc3RhdGljIHVuc2lnbmVkIGludCBoYXJkd2FyZV9jb25jdXJyZW5jeSgpIG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIF9UaHJkX2hhcmR3YXJlX2NvbmN1cnJlbmN5KCk7DQogICAgfQ0K
DQogICAgW1tub2Rpc2NhcmRdXSBuYXRpdmVfaGFuZGxlX3R5cGUgbmF0aXZlX2hhbmRsZSgpIHsg
DQogICAgICAgIHJldHVybiBfVGhyLl9IbmQ7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIF9UaHJk
X3QgX1RocjsNCn07DQoNCm5hbWVzcGFjZSB0aGlzX3RocmVhZCB7DQogICAgW1tub2Rpc2NhcmRd
XSB0aHJlYWQ6OmlkIGdldF9pZCgpIG5vZXhjZXB0Ow0KDQogICAgaW5saW5lIHZvaWQgeWllbGQo
KSBub2V4Y2VwdCB7DQogICAgICAgIF9UaHJkX3lpZWxkKCk7DQogICAgfQ0KDQogICAgaW5saW5l
IHZvaWQgc2xlZXBfdW50aWwoY29uc3QgeHRpbWUqIF9BYnNfdGltZSkgew0KICAgICAgICBfVGhy
ZF9zbGVlcChfQWJzX3RpbWUpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xvY2ss
IGNsYXNzIF9EdXJhdGlvbj4NCiAgICB2b2lkIHNsZWVwX3VudGlsKGNvbnN0IGNocm9ubzo6dGlt
ZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbj4mIF9BYnNfdGltZSkgew0KICAgICAgICBmb3IgKDs7
KSB7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9Ob3cgPSBfQ2xvY2s6Om5vdygpOw0KICAgICAg
ICAgICAgaWYgKF9BYnNfdGltZSA8PSBfTm93KSB7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0K
ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICA6OiB4dGltZSBfVGd0Ow0KICAgICAgICAgICAg
KHZvaWQpIF9Ub194dGltZV8xMF9kYXlfY2xhbXBlZChfVGd0LCBfQWJzX3RpbWUgLSBfTm93KTsN
CiAgICAgICAgICAgIF9UaHJkX3NsZWVwKCZfVGd0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfUmVwLCBjbGFzcyBfUGVyaW9kPg0KICAgIHZvaWQgc2xlZXBfZm9y
KGNvbnN0IGNocm9ubzo6ZHVyYXRpb248X1JlcCwgX1BlcmlvZD4mIF9SZWxfdGltZSkgew0KICAg
ICAgICBzbGVlcF91bnRpbChjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgKyBfUmVsX3RpbWUp
Ow0KICAgIH0NCn0gDQoNCmNsYXNzIHRocmVhZDo6aWQgeyANCnB1YmxpYzoNCiAgICBpZCgpIG5v
ZXhjZXB0IDogX0lkKDApIHt9IA0KDQpwcml2YXRlOg0KICAgIGlkKF9UaHJkX2lkX3QgX090aGVy
X2lkKSA6IF9JZChfT3RoZXJfaWQpIHt9DQoNCiAgICBfVGhyZF9pZF90IF9JZDsNCg0KICAgIGZy
aWVuZCB0aHJlYWQ6OmlkIHRocmVhZDo6Z2V0X2lkKCkgY29uc3Qgbm9leGNlcHQ7DQogICAgZnJp
ZW5kIHRocmVhZDo6aWQgdGhpc190aHJlYWQ6OmdldF9pZCgpIG5vZXhjZXB0Ow0KICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0odGhyZWFkOjppZCBfTGVmdCwgdGhyZWFkOjppZCBfUmlnaHQpIG5v
ZXhjZXB0Ow0KICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPCh0aHJlYWQ6OmlkIF9MZWZ0LCB0aHJl
YWQ6OmlkIF9SaWdodCkgbm9leGNlcHQ7DQogICAgdGVtcGxhdGUgPGNsYXNzIF9DaCwgY2xhc3Mg
X1RyPg0KICAgIGZyaWVuZCBiYXNpY19vc3RyZWFtPF9DaCwgX1RyPiYgb3BlcmF0b3I8PChiYXNp
Y19vc3RyZWFtPF9DaCwgX1RyPiYgX1N0ciwgdGhyZWFkOjppZCBfSWQpOw0KICAgIGZyaWVuZCBo
YXNoPHRocmVhZDo6aWQ+Ow0KfTsNCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgdGhyZWFkOjppZCB0
aHJlYWQ6OmdldF9pZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX1Roci5fSWQ7DQp9
DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIHRocmVhZDo6aWQgdGhpc190aHJlYWQ6OmdldF9pZCgp
IG5vZXhjZXB0IHsNCiAgICByZXR1cm4gX1RocmRfaWQoKTsNCn0NCg0KaW5saW5lIHZvaWQgc3dh
cCh0aHJlYWQmIF9MZWZ0LCB0aHJlYWQmIF9SaWdodCkgbm9leGNlcHQgew0KICAgIF9MZWZ0LnN3
YXAoX1JpZ2h0KTsNCn0NCg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KHRo
cmVhZDo6aWQgX0xlZnQsIHRocmVhZDo6aWQgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgcmV0dXJu
IF9MZWZ0Ll9JZCA9PSBfUmlnaHQuX0lkOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBib29s
IG9wZXJhdG9yIT0odGhyZWFkOjppZCBfTGVmdCwgdGhyZWFkOjppZCBfUmlnaHQpIG5vZXhjZXB0
IHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQpOw0KfQ0KDQpbW25vZGlzY2FyZF1dIGlu
bGluZSBib29sIG9wZXJhdG9yPCh0aHJlYWQ6OmlkIF9MZWZ0LCB0aHJlYWQ6OmlkIF9SaWdodCkg
bm9leGNlcHQgew0KICAgIHJldHVybiBfTGVmdC5fSWQgPCBfUmlnaHQuX0lkOw0KfQ0KDQpbW25v
ZGlzY2FyZF1dIGlubGluZSBib29sIG9wZXJhdG9yPD0odGhyZWFkOjppZCBfTGVmdCwgdGhyZWFk
OjppZCBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gIShfUmlnaHQgPCBfTGVmdCk7DQp9
DQoNCltbbm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgb3BlcmF0b3I+KHRocmVhZDo6aWQgX0xlZnQs
IHRocmVhZDo6aWQgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9SaWdodCA8IF9MZWZ0
Ow0KfQ0KDQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIG9wZXJhdG9yPj0odGhyZWFkOjppZCBf
TGVmdCwgdGhyZWFkOjppZCBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICByZXR1cm4gIShfTGVmdCA8
IF9SaWdodCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfQ2gsIGNsYXNzIF9Ucj4NCmJhc2ljX29z
dHJlYW08X0NoLCBfVHI+JiBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoLCBfVHI+JiBfU3Ry
LCB0aHJlYWQ6OmlkIF9JZCkgew0KICAgIHJldHVybiBfU3RyIDw8IF9JZC5fSWQ7DQp9DQoNCg0K
dGVtcGxhdGUgPD4NCnN0cnVjdCBoYXNoPHRocmVhZDo6aWQ+IHsNCiAgICBbW2RlcHJlY2F0ZWQo
ICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBh
cmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5
cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9T
SUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBf
U0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhh
dCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIHRocmVhZDo6aWQg
YXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkg
cmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1
bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0
ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQ
RURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVD
QVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz
IHdhcm5pbmcuIildXSB0eXBlZGVmIHNpemVfdCByZXN1bHRfdHlwZTsNCg0KICAgIFtbbm9kaXNj
YXJkXV0gc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgdGhyZWFkOjppZCBfS2V5dmFsKSBjb25zdCBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfSGFzaF9yZXByZXNlbnRhdGlvbihfS2V5dmFsLl9J
ZCk7DQogICAgfQ0KfTsNCn0NCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBh
Y2socG9wKQ0KI2xpbmUgMjUwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHRocmVhZCINCiNsaW5lIDI1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx0aHJlYWQiDQojbGluZSAyMCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtdXRleCINCg0KDQoNCiNwcmFn
bWEgcGFjayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3
IDQ1ODggNDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1
MDI2IDUwMjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsN
Cg0KDQpjbGFzcyBjb25kaXRpb25fdmFyaWFibGU7DQpjbGFzcyBjb25kaXRpb25fdmFyaWFibGVf
YW55Ow0KDQoNCmNsYXNzIF9NdXRleF9iYXNlIHsgDQpwdWJsaWM6DQogICAgX011dGV4X2Jhc2Uo
aW50IF9GbGFncyA9IDApIG5vZXhjZXB0IHsNCiAgICAgICAgX010eF9pbml0X2luX3NpdHUoX015
bXR4KCksIF9GbGFncyB8IF9NdHhfdHJ5KTsNCiAgICB9DQoNCiAgICB+X011dGV4X2Jhc2UoKSBu
b2V4Y2VwdCB7DQogICAgICAgIF9NdHhfZGVzdHJveV9pbl9zaXR1KF9NeW10eCgpKTsNCiAgICB9
DQoNCiAgICBfTXV0ZXhfYmFzZShjb25zdCBfTXV0ZXhfYmFzZSYpID0gZGVsZXRlOw0KICAgIF9N
dXRleF9iYXNlJiBvcGVyYXRvcj0oY29uc3QgX011dGV4X2Jhc2UmKSA9IGRlbGV0ZTsNCg0KICAg
IHZvaWQgbG9jaygpIHsNCiAgICAgICAgX0NoZWNrX0NfcmV0dXJuKF9NdHhfbG9jayhfTXltdHgo
KSkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCB0cnlfbG9jaygpIHsNCiAgICAg
ICAgY29uc3QgYXV0byBfUmVzID0gX010eF90cnlsb2NrKF9NeW10eCgpKTsNCiAgICAgICAgc3dp
dGNoIChfUmVzKSB7DQogICAgICAgIGNhc2UgX1RocmRfc3VjY2VzczoNCiAgICAgICAgICAgIHJl
dHVybiB0cnVlOw0KICAgICAgICBjYXNlIF9UaHJkX2J1c3k6DQogICAgICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBfVGhyb3dfQ19lcnJvcihfUmVz
KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgdW5sb2NrKCkgew0KICAgICAgICBfTXR4
X3VubG9jayhfTXltdHgoKSk7DQogICAgfQ0KDQogICAgdXNpbmcgbmF0aXZlX2hhbmRsZV90eXBl
ID0gdm9pZCo7DQoNCiAgICBbW25vZGlzY2FyZF1dIG5hdGl2ZV9oYW5kbGVfdHlwZSBuYXRpdmVf
aGFuZGxlKCkgew0KICAgICAgICByZXR1cm4gX010eF9nZXRjb25jcnRjcyhfTXltdHgoKSk7DQog
ICAgfQ0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjb25kaXRpb25fdmFyaWFibGU7DQogICAgZnJp
ZW5kIGNvbmRpdGlvbl92YXJpYWJsZV9hbnk7DQoNCiAgICBhbGlnbmVkX3N0b3JhZ2VfdDw4MCwg
OD4gX010eF9zdG9yYWdlOw0KDQogICAgX010eF90IF9NeW10eCgpIG5vZXhjZXB0IHsgDQogICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PF9NdHhfdD4oJl9NdHhfc3RvcmFnZSk7DQogICAg
fQ0KfTsNCg0KY2xhc3MgbXV0ZXggOiBwdWJsaWMgX011dGV4X2Jhc2UgeyANCnB1YmxpYzoNCiAg
ICAgbXV0ZXgoKSBub2V4Y2VwdCANCiAgICAgICAgOiBfTXV0ZXhfYmFzZSgpIHt9DQoNCiAgICBt
dXRleChjb25zdCBtdXRleCYpID0gZGVsZXRlOw0KICAgIG11dGV4JiBvcGVyYXRvcj0oY29uc3Qg
bXV0ZXgmKSA9IGRlbGV0ZTsNCn07DQoNCmNsYXNzIHJlY3Vyc2l2ZV9tdXRleCA6IHB1YmxpYyBf
TXV0ZXhfYmFzZSB7IA0KcHVibGljOg0KICAgIHJlY3Vyc2l2ZV9tdXRleCgpIDogX011dGV4X2Jh
c2UoX010eF9yZWN1cnNpdmUpIHt9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgdHJ5X2xvY2so
KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXV0ZXhfYmFzZTo6dHJ5X2xvY2soKTsNCiAg
ICB9DQoNCiAgICByZWN1cnNpdmVfbXV0ZXgoY29uc3QgcmVjdXJzaXZlX211dGV4JikgPSBkZWxl
dGU7DQogICAgcmVjdXJzaXZlX211dGV4JiBvcGVyYXRvcj0oY29uc3QgcmVjdXJzaXZlX211dGV4
JikgPSBkZWxldGU7DQp9Ow0KI2xpbmUgMTA4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXG11dGV4Ig0KDQoNCnN0cnVjdCBhZG9wdF9sb2NrX3QgeyAN
CiAgICBleHBsaWNpdCBhZG9wdF9sb2NrX3QoKSA9IGRlZmF1bHQ7DQp9Ow0KDQpzdHJ1Y3QgZGVm
ZXJfbG9ja190IHsgDQogICAgZXhwbGljaXQgZGVmZXJfbG9ja190KCkgPSBkZWZhdWx0Ow0KfTsN
Cg0Kc3RydWN0IHRyeV90b19sb2NrX3QgeyANCiAgICBleHBsaWNpdCB0cnlfdG9fbG9ja190KCkg
PSBkZWZhdWx0Ow0KfTsNCg0KaW5saW5lIGNvbnN0ZXhwciBhZG9wdF9sb2NrX3QgYWRvcHRfbG9j
a3t9Ow0KaW5saW5lIGNvbnN0ZXhwciBkZWZlcl9sb2NrX3QgZGVmZXJfbG9ja3t9Ow0KaW5saW5l
IGNvbnN0ZXhwciB0cnlfdG9fbG9ja190IHRyeV90b19sb2Nre307DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9NdXRleD4NCmNsYXNzIHVuaXF1ZV9sb2NrIHsgDQpwdWJsaWM6DQogICAgdXNpbmcgbXV0
ZXhfdHlwZSA9IF9NdXRleDsNCg0KICAgIA0KICAgIHVuaXF1ZV9sb2NrKCkgbm9leGNlcHQgOiBf
UG10eChudWxscHRyKSwgX093bnMoZmFsc2UpIHt9DQoNCiAgICBleHBsaWNpdCB1bmlxdWVfbG9j
ayhfTXV0ZXgmIF9NdHgpIDogX1BtdHgoOjpzdGQ6OiBhZGRyZXNzb2YoX010eCkpLCBfT3ducyhm
YWxzZSkgeyANCiAgICAgICAgX1BtdHgtPmxvY2soKTsNCiAgICAgICAgX093bnMgPSB0cnVlOw0K
ICAgIH0NCg0KICAgIHVuaXF1ZV9sb2NrKF9NdXRleCYgX010eCwgYWRvcHRfbG9ja190KQ0KICAg
ICAgICA6IF9QbXR4KDo6c3RkOjogYWRkcmVzc29mKF9NdHgpKSwgX093bnModHJ1ZSkge30gDQoN
CiAgICB1bmlxdWVfbG9jayhfTXV0ZXgmIF9NdHgsIGRlZmVyX2xvY2tfdCkgbm9leGNlcHQNCiAg
ICAgICAgOiBfUG10eCg6OnN0ZDo6IGFkZHJlc3NvZihfTXR4KSksIF9Pd25zKGZhbHNlKSB7fSAN
Cg0KICAgIHVuaXF1ZV9sb2NrKF9NdXRleCYgX010eCwgdHJ5X3RvX2xvY2tfdCkNCiAgICAgICAg
OiBfUG10eCg6OnN0ZDo6IGFkZHJlc3NvZihfTXR4KSksIF9Pd25zKF9QbXR4LT50cnlfbG9jaygp
KSB7fSANCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfUmVwLCBjbGFzcyBfUGVyaW9kPg0KICAgIHVu
aXF1ZV9sb2NrKF9NdXRleCYgX010eCwgY29uc3QgY2hyb25vOjpkdXJhdGlvbjxfUmVwLCBfUGVy
aW9kPiYgX1JlbF90aW1lKQ0KICAgICAgICA6IF9QbXR4KDo6c3RkOjogYWRkcmVzc29mKF9NdHgp
KSwgX093bnMoX1BtdHgtPnRyeV9sb2NrX2ZvcihfUmVsX3RpbWUpKSB7fSANCg0KICAgIHRlbXBs
YXRlIDxjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbj4NCiAgICB1bmlxdWVfbG9jayhfTXV0
ZXgmIF9NdHgsIGNvbnN0IGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ssIF9EdXJhdGlvbj4mIF9B
YnNfdGltZSkNCiAgICAgICAgOiBfUG10eCg6OnN0ZDo6IGFkZHJlc3NvZihfTXR4KSksIF9Pd25z
KF9QbXR4LT50cnlfbG9ja191bnRpbChfQWJzX3RpbWUpKSB7fSANCg0KICAgIHVuaXF1ZV9sb2Nr
KF9NdXRleCYgX010eCwgY29uc3QgeHRpbWUqIF9BYnNfdGltZSkNCiAgICAgICAgOiBfUG10eCg6
OnN0ZDo6IGFkZHJlc3NvZihfTXR4KSksIF9Pd25zKGZhbHNlKSB7IA0KICAgICAgICBfT3ducyA9
IF9QbXR4LT50cnlfbG9ja191bnRpbChfQWJzX3RpbWUpOw0KICAgIH0NCg0KICAgIHVuaXF1ZV9s
b2NrKHVuaXF1ZV9sb2NrJiYgX090aGVyKSBub2V4Y2VwdCA6IF9QbXR4KF9PdGhlci5fUG10eCks
IF9Pd25zKF9PdGhlci5fT3ducykgew0KICAgICAgICBfT3RoZXIuX1BtdHggPSBudWxscHRyOw0K
ICAgICAgICBfT3RoZXIuX093bnMgPSBmYWxzZTsNCiAgICB9DQoNCiAgICB1bmlxdWVfbG9jayYg
b3BlcmF0b3I9KHVuaXF1ZV9sb2NrJiYgX090aGVyKSB7DQogICAgICAgIGlmICh0aGlzICE9IDo6
c3RkOjogYWRkcmVzc29mKF9PdGhlcikpIHsNCiAgICAgICAgICAgIGlmIChfT3ducykgew0KICAg
ICAgICAgICAgICAgIF9QbXR4LT51bmxvY2soKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgX1BtdHggICAgICAgID0gX090aGVyLl9QbXR4Ow0KICAgICAgICAgICAgX093bnMgICAgICAg
ID0gX090aGVyLl9Pd25zOw0KICAgICAgICAgICAgX090aGVyLl9QbXR4ID0gbnVsbHB0cjsNCiAg
ICAgICAgICAgIF9PdGhlci5fT3ducyA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIHJldHVy
biAqdGhpczsNCiAgICB9DQoNCiAgICB+dW5pcXVlX2xvY2soKSBub2V4Y2VwdCB7DQogICAgICAg
IGlmIChfT3ducykgew0KICAgICAgICAgICAgX1BtdHgtPnVubG9jaygpOw0KICAgICAgICB9DQog
ICAgfQ0KDQogICAgdW5pcXVlX2xvY2soY29uc3QgdW5pcXVlX2xvY2smKSA9IGRlbGV0ZTsNCiAg
ICB1bmlxdWVfbG9jayYgb3BlcmF0b3I9KGNvbnN0IHVuaXF1ZV9sb2NrJikgPSBkZWxldGU7DQoN
CiAgICB2b2lkIGxvY2soKSB7IA0KICAgICAgICBfVmFsaWRhdGUoKTsNCiAgICAgICAgX1BtdHgt
PmxvY2soKTsNCiAgICAgICAgX093bnMgPSB0cnVlOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gYm9vbCB0cnlfbG9jaygpIHsNCiAgICAgICAgX1ZhbGlkYXRlKCk7DQogICAgICAgIF9Pd25z
ID0gX1BtdHgtPnRyeV9sb2NrKCk7DQogICAgICAgIHJldHVybiBfT3duczsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1JlcCwgY2xhc3MgX1BlcmlvZD4NCiAgICBbW25vZGlzY2FyZF1d
IGJvb2wgdHJ5X2xvY2tfZm9yKGNvbnN0IGNocm9ubzo6ZHVyYXRpb248X1JlcCwgX1BlcmlvZD4m
IF9SZWxfdGltZSkgew0KICAgICAgICBfVmFsaWRhdGUoKTsNCiAgICAgICAgX093bnMgPSBfUG10
eC0+dHJ5X2xvY2tfZm9yKF9SZWxfdGltZSk7DQogICAgICAgIHJldHVybiBfT3duczsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24+DQogICAgW1tu
b2Rpc2NhcmRdXSBib29sIHRyeV9sb2NrX3VudGlsKGNvbnN0IGNocm9ubzo6dGltZV9wb2ludDxf
Q2xvY2ssIF9EdXJhdGlvbj4mIF9BYnNfdGltZSkgew0KICAgICAgICBfVmFsaWRhdGUoKTsNCiAg
ICAgICAgX093bnMgPSBfUG10eC0+dHJ5X2xvY2tfdW50aWwoX0Fic190aW1lKTsNCiAgICAgICAg
cmV0dXJuIF9Pd25zOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCB0cnlfbG9ja191
bnRpbChjb25zdCB4dGltZSogX0Fic190aW1lKSB7DQogICAgICAgIF9WYWxpZGF0ZSgpOw0KICAg
ICAgICBfT3ducyA9IF9QbXR4LT50cnlfbG9ja191bnRpbChfQWJzX3RpbWUpOw0KICAgICAgICBy
ZXR1cm4gX093bnM7DQogICAgfQ0KDQogICAgdm9pZCB1bmxvY2soKSB7DQogICAgICAgIGlmICgh
X1BtdHggfHwgIV9Pd25zKSB7DQogICAgICAgICAgICBfVGhyb3dfc3lzdGVtX2Vycm9yKGVycmM6
Om9wZXJhdGlvbl9ub3RfcGVybWl0dGVkKTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9QbXR4LT51
bmxvY2soKTsNCiAgICAgICAgX093bnMgPSBmYWxzZTsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAo
dW5pcXVlX2xvY2smIF9PdGhlcikgbm9leGNlcHQgew0KICAgICAgICA6OnN0ZDo6IHN3YXAoX1Bt
dHgsIF9PdGhlci5fUG10eCk7DQogICAgICAgIDo6c3RkOjogc3dhcChfT3ducywgX090aGVyLl9P
d25zKTsNCiAgICB9DQoNCiAgICBfTXV0ZXgqIHJlbGVhc2UoKSBub2V4Y2VwdCB7DQogICAgICAg
IF9NdXRleCogX1JlcyA9IF9QbXR4Ow0KICAgICAgICBfUG10eCAgICAgICAgPSBudWxscHRyOw0K
ICAgICAgICBfT3ducyAgICAgICAgPSBmYWxzZTsNCiAgICAgICAgcmV0dXJuIF9SZXM7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG93bnNfbG9jaygpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIF9Pd25zOw0KICAgIH0NCg0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfT3duczsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIF9NdXRleCogbXV0ZXgoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiBfUG10eDsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgX011dGV4KiBfUG10eDsNCiAg
ICBib29sIF9Pd25zOw0KDQogICAgdm9pZCBfVmFsaWRhdGUoKSBjb25zdCB7IA0KICAgICAgICBp
ZiAoIV9QbXR4KSB7DQogICAgICAgICAgICBfVGhyb3dfc3lzdGVtX2Vycm9yKGVycmM6Om9wZXJh
dGlvbl9ub3RfcGVybWl0dGVkKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChfT3ducykgew0K
ICAgICAgICAgICAgX1Rocm93X3N5c3RlbV9lcnJvcihlcnJjOjpyZXNvdXJjZV9kZWFkbG9ja193
b3VsZF9vY2N1cik7DQogICAgICAgIH0NCiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
TXV0ZXg+DQp2b2lkIHN3YXAodW5pcXVlX2xvY2s8X011dGV4PiYgX0xlZnQsIHVuaXF1ZV9sb2Nr
PF9NdXRleD4mIF9SaWdodCkgbm9leGNlcHQgew0KICAgIF9MZWZ0LnN3YXAoX1JpZ2h0KTsNCn0N
Cg0KDQp0ZW1wbGF0ZSA8c2l6ZV90Li4uIF9JbmRpY2VzLCBjbGFzcy4uLiBfTG9ja04+DQp2b2lk
IF9Mb2NrX2Zyb21fbG9ja3MoY29uc3QgaW50IF9UYXJnZXQsIGluZGV4X3NlcXVlbmNlPF9JbmRp
Y2VzLi4uPiwgX0xvY2tOJi4uLiBfTGtOKSB7IA0KICAgIGludCBfSWdub3JlZFtdID0geygoc3Rh
dGljX2Nhc3Q8aW50PihfSW5kaWNlcykgPT0gX1RhcmdldCA/ICh2b2lkKSBfTGtOLmxvY2soKSA6
IHZvaWQoKSksIDApLi4ufTsNCiAgICAodm9pZCkgX0lnbm9yZWQ7DQp9DQoNCg0KdGVtcGxhdGUg
PHNpemVfdC4uLiBfSW5kaWNlcywgY2xhc3MuLi4gX0xvY2tOPg0KYm9vbCBfVHJ5X2xvY2tfZnJv
bV9sb2NrcygNCiAgICBjb25zdCBpbnQgX1RhcmdldCwgaW5kZXhfc2VxdWVuY2U8X0luZGljZXMu
Li4+LCBfTG9ja04mLi4uIF9Ma04pIHsgDQogICAgYm9vbCBfUmVzdWx0e307DQogICAgaW50IF9J
Z25vcmVkW10gPSB7KChzdGF0aWNfY2FzdDxpbnQ+KF9JbmRpY2VzKSA9PSBfVGFyZ2V0ID8gKHZv
aWQpIChfUmVzdWx0ID0gX0xrTi50cnlfbG9jaygpKSA6IHZvaWQoKSksIDApLi4ufTsNCiAgICAo
dm9pZCkgX0lnbm9yZWQ7DQogICAgcmV0dXJuIF9SZXN1bHQ7DQp9DQoNCg0KdGVtcGxhdGUgPHNp
emVfdC4uLiBfSW5kaWNlcywgY2xhc3MuLi4gX0xvY2tOPg0Kdm9pZCBfVW5sb2NrX2xvY2tzKGNv
bnN0IGludCBfRmlyc3QsIGNvbnN0IGludCBfTGFzdCwgaW5kZXhfc2VxdWVuY2U8X0luZGljZXMu
Li4+LCBfTG9ja04mLi4uIF9Ma04pIG5vZXhjZXB0DQogew0KICAgIA0KICAgIGludCBfSWdub3Jl
ZFtdID0gew0KICAgICAgICAoKF9GaXJzdCA8PSBzdGF0aWNfY2FzdDxpbnQ+KF9JbmRpY2VzKSAm
JiBzdGF0aWNfY2FzdDxpbnQ+KF9JbmRpY2VzKSA8IF9MYXN0ID8gKHZvaWQpIF9Ma04udW5sb2Nr
KCkgOiB2b2lkKCkpLA0KICAgICAgICAgICAgMCkuLi59Ow0KICAgICh2b2lkKSBfSWdub3JlZDsN
Cn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0xvY2tOPg0KaW50IF9UcnlfbG9ja19yYW5nZShj
b25zdCBpbnQgX0ZpcnN0LCBjb25zdCBpbnQgX0xhc3QsIF9Mb2NrTiYuLi4gX0xrTikgew0KICAg
IHVzaW5nIF9JbmRpY2VzID0gaW5kZXhfc2VxdWVuY2VfZm9yPF9Mb2NrTi4uLj47DQogICAgaW50
IF9OZXh0ICAgICAgPSBfRmlyc3Q7DQogICAgeyBpZiAoMSkgew0KICAgIGZvciAoOyBfTmV4dCAh
PSBfTGFzdDsgKytfTmV4dCkgew0KICAgICAgICBpZiAoIV9UcnlfbG9ja19mcm9tX2xvY2tzKF9O
ZXh0LCBfSW5kaWNlc3t9LCBfTGtOLi4uKSkgeyANCiAgICAgICAgICAgIF9VbmxvY2tfbG9ja3Mo
X0ZpcnN0LCBfTmV4dCwgX0luZGljZXN7fSwgX0xrTi4uLik7DQogICAgICAgICAgICByZXR1cm4g
X05leHQ7DQogICAgICAgIH0NCiAgICB9DQogICAgfSBlbHNlIGlmICgwKSB7DQogICAgX1VubG9j
a19sb2NrcyhfRmlyc3QsIF9OZXh0LCBfSW5kaWNlc3t9LCBfTGtOLi4uKTsNCiAgICA7DQogICAg
fSB9DQoNCiAgICByZXR1cm4gLTE7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfTG9jazAsIGNsYXNz
IF9Mb2NrMSwgY2xhc3MgX0xvY2syLCBjbGFzcy4uLiBfTG9ja04+DQppbnQgX1RyeV9sb2NrMShf
TG9jazAmIF9MazAsIF9Mb2NrMSYgX0xrMSwgX0xvY2syJiBfTGsyLCBfTG9ja04mLi4uIF9Ma04p
IHsgDQogICAgcmV0dXJuIF9UcnlfbG9ja19yYW5nZSgwLCBzaXplb2YuLi4oX0xvY2tOKSArIDMs
IF9MazAsIF9MazEsIF9MazIsIF9Ma04uLi4pOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0xvY2sw
LCBjbGFzcyBfTG9jazE+DQppbnQgX1RyeV9sb2NrMShfTG9jazAmIF9MazAsIF9Mb2NrMSYgX0xr
MSkgew0KICAgIA0KICAgIGlmICghX0xrMC50cnlfbG9jaygpKSB7DQogICAgICAgIHJldHVybiAw
Ow0KICAgIH0NCg0KICAgIHsgaWYgKDEpIHsNCiAgICBpZiAoIV9MazEudHJ5X2xvY2soKSkgew0K
ICAgICAgICBfTGswLnVubG9jaygpOw0KICAgICAgICByZXR1cm4gMTsNCiAgICB9DQogICAgfSBl
bHNlIGlmICgwKSB7DQogICAgX0xrMC51bmxvY2soKTsNCiAgICA7DQogICAgfSB9DQoNCiAgICBy
ZXR1cm4gLTE7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfTG9jazAsIGNsYXNzIF9Mb2NrMSwgY2xh
c3MuLi4gX0xvY2tOPg0KW1tub2Rpc2NhcmRdXSBpbnQgdHJ5X2xvY2soX0xvY2swJiBfTGswLCBf
TG9jazEmIF9MazEsIF9Mb2NrTiYuLi4gX0xrTikgeyANCiAgICByZXR1cm4gX1RyeV9sb2NrMShf
TGswLCBfTGsxLCBfTGtOLi4uKTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0xvY2tOPg0K
aW50IF9Mb2NrX2F0dGVtcHQoY29uc3QgaW50IF9IYXJkX2xvY2ssIF9Mb2NrTiYuLi4gX0xrTikg
ew0KICAgIA0KICAgIHVzaW5nIF9JbmRpY2VzID0gaW5kZXhfc2VxdWVuY2VfZm9yPF9Mb2NrTi4u
Lj47DQogICAgX0xvY2tfZnJvbV9sb2NrcyhfSGFyZF9sb2NrLCBfSW5kaWNlc3t9LCBfTGtOLi4u
KTsNCiAgICBpbnQgX0ZhaWxlZCAgICAgICAgPSAtMTsNCiAgICBpbnQgX0JhY2tvdXRfc3RhcnQg
PSBfSGFyZF9sb2NrOyANCg0KICAgIHsgaWYgKDEpIHsNCiAgICBfRmFpbGVkID0gX1RyeV9sb2Nr
X3JhbmdlKDAsIF9IYXJkX2xvY2ssIF9Ma04uLi4pOw0KICAgIGlmIChfRmFpbGVkID09IC0xKSB7
DQogICAgICAgIF9CYWNrb3V0X3N0YXJ0ID0gMDsgDQogICAgICAgIF9GYWlsZWQgICAgICAgID0g
X1RyeV9sb2NrX3JhbmdlKF9IYXJkX2xvY2sgKyAxLCBzaXplb2YuLi4oX0xvY2tOKSwgX0xrTi4u
Lik7DQogICAgICAgIGlmIChfRmFpbGVkID09IC0xKSB7IA0KICAgICAgICAgICAgcmV0dXJuIC0x
Ow0KICAgICAgICB9DQogICAgfQ0KICAgIH0gZWxzZSBpZiAoMCkgew0KICAgIF9VbmxvY2tfbG9j
a3MoX0JhY2tvdXRfc3RhcnQsIF9IYXJkX2xvY2sgKyAxLCBfSW5kaWNlc3t9LCBfTGtOLi4uKTsN
CiAgICA7DQogICAgfSB9DQoNCiAgICANCiAgICBfVW5sb2NrX2xvY2tzKF9CYWNrb3V0X3N0YXJ0
LCBfSGFyZF9sb2NrICsgMSwgX0luZGljZXN7fSwgX0xrTi4uLik7DQogICAgOjpzdGQ6OiB0aGlz
X3RocmVhZDo6eWllbGQoKTsNCiAgICByZXR1cm4gX0ZhaWxlZDsNCn0NCg0KdGVtcGxhdGUgPGNs
YXNzIF9Mb2NrMCwgY2xhc3MgX0xvY2sxLCBjbGFzcyBfTG9jazIsIGNsYXNzLi4uIF9Mb2NrTj4N
CnZvaWQgX0xvY2tfbm9ubWVtYmVyMShfTG9jazAmIF9MazAsIF9Mb2NrMSYgX0xrMSwgX0xvY2sy
JiBfTGsyLCBfTG9ja04mLi4uIF9Ma04pIHsNCiAgICANCiAgICBpbnQgX0hhcmRfbG9jayA9IDA7
DQogICAgd2hpbGUgKF9IYXJkX2xvY2sgIT0gLTEpIHsNCiAgICAgICAgX0hhcmRfbG9jayA9IF9M
b2NrX2F0dGVtcHQoX0hhcmRfbG9jaywgX0xrMCwgX0xrMSwgX0xrMiwgX0xrTi4uLik7DQogICAg
fQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0xvY2swLCBjbGFzcyBfTG9jazE+DQpib29sIF9Mb2Nr
X2F0dGVtcHRfc21hbGwoX0xvY2swJiBfTGswLCBfTG9jazEmIF9MazEpIHsNCiAgICANCiAgICBf
TGswLmxvY2soKTsNCiAgICB7IGlmICgxKSB7DQogICAgaWYgKF9MazEudHJ5X2xvY2soKSkgew0K
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIH0gZWxzZSBpZiAoMCkgew0KICAgIF9M
azAudW5sb2NrKCk7DQogICAgOw0KICAgIH0gfQ0KDQogICAgX0xrMC51bmxvY2soKTsNCiAgICA6
OnN0ZDo6IHRoaXNfdGhyZWFkOjp5aWVsZCgpOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0xvY2swLCBjbGFzcyBfTG9jazE+DQp2b2lkIF9Mb2NrX25vbm1lbWJlcjEo
X0xvY2swJiBfTGswLCBfTG9jazEmIF9MazEpIHsNCiAgICANCiAgICB3aGlsZSAoX0xvY2tfYXR0
ZW1wdF9zbWFsbChfTGswLCBfTGsxKSAmJiBfTG9ja19hdHRlbXB0X3NtYWxsKF9MazEsIF9MazAp
KSB7IA0KICAgIH0NCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9Mb2NrMCwgY2xhc3MgX0xvY2sxLCBj
bGFzcy4uLiBfTG9ja04+DQp2b2lkIGxvY2soX0xvY2swJiBfTGswLCBfTG9jazEmIF9MazEsIF9M
b2NrTiYuLi4gX0xrTikgeyANCiAgICBfTG9ja19ub25tZW1iZXIxKF9MazAsIF9MazEsIF9Ma04u
Li4pOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfTXV0ZXg+DQpjbGFzcyBsb2NrX2d1YXJkIHsg
DQpwdWJsaWM6DQogICAgdXNpbmcgbXV0ZXhfdHlwZSA9IF9NdXRleDsNCg0KICAgIGV4cGxpY2l0
IGxvY2tfZ3VhcmQoX011dGV4JiBfTXR4KSA6IF9NeU11dGV4KF9NdHgpIHsgDQogICAgICAgIF9N
eU11dGV4LmxvY2soKTsNCiAgICB9DQoNCiAgICBsb2NrX2d1YXJkKF9NdXRleCYgX010eCwgYWRv
cHRfbG9ja190KSA6IF9NeU11dGV4KF9NdHgpIHt9IA0KDQogICAgfmxvY2tfZ3VhcmQoKSBub2V4
Y2VwdCB7DQogICAgICAgIF9NeU11dGV4LnVubG9jaygpOw0KICAgIH0NCg0KICAgIGxvY2tfZ3Vh
cmQoY29uc3QgbG9ja19ndWFyZCYpID0gZGVsZXRlOw0KICAgIGxvY2tfZ3VhcmQmIG9wZXJhdG9y
PShjb25zdCBsb2NrX2d1YXJkJikgPSBkZWxldGU7DQoNCnByaXZhdGU6DQogICAgX011dGV4JiBf
TXlNdXRleDsNCn07DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MuLi4gX011dGV4ZXM+DQpjbGFzcyBz
Y29wZWRfbG9jayB7IA0KcHVibGljOg0KICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKF9NdXRleGVz
Ji4uLiBfTXR4ZXMpIDogX015TXV0ZXhlcyhfTXR4ZXMuLi4pIHsgDQogICAgICAgIDo6c3RkOjog
bG9jayhfTXR4ZXMuLi4pOw0KICAgIH0NCg0KICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKGFkb3B0
X2xvY2tfdCwgX011dGV4ZXMmLi4uIF9NdHhlcykgOiBfTXlNdXRleGVzKF9NdHhlcy4uLikge30g
DQoNCiAgICB+c2NvcGVkX2xvY2soKSBub2V4Y2VwdCB7DQogICAgICAgIDo6c3RkOjogYXBwbHko
W10oX011dGV4ZXMmLi4uIF9NdHhlcykgeyAoLi4uLCAodm9pZCkgX010eGVzLnVubG9jaygpKTsg
fSwgX015TXV0ZXhlcyk7DQogICAgfQ0KDQogICAgc2NvcGVkX2xvY2soY29uc3Qgc2NvcGVkX2xv
Y2smKSA9IGRlbGV0ZTsNCiAgICBzY29wZWRfbG9jayYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlZF9s
b2NrJikgPSBkZWxldGU7DQoNCnByaXZhdGU6DQogICAgdHVwbGU8X011dGV4ZXMmLi4uPiBfTXlN
dXRleGVzOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9NdXRleD4NCmNsYXNzIHNjb3BlZF9sb2Nr
PF9NdXRleD4gew0KcHVibGljOg0KICAgIHVzaW5nIG11dGV4X3R5cGUgPSBfTXV0ZXg7DQoNCiAg
ICBleHBsaWNpdCBzY29wZWRfbG9jayhfTXV0ZXgmIF9NdHgpIDogX015TXV0ZXgoX010eCkgeyAN
CiAgICAgICAgX015TXV0ZXgubG9jaygpOw0KICAgIH0NCg0KICAgIGV4cGxpY2l0IHNjb3BlZF9s
b2NrKGFkb3B0X2xvY2tfdCwgX011dGV4JiBfTXR4KSA6IF9NeU11dGV4KF9NdHgpIHt9IA0KDQog
ICAgfnNjb3BlZF9sb2NrKCkgbm9leGNlcHQgew0KICAgICAgICBfTXlNdXRleC51bmxvY2soKTsN
CiAgICB9DQoNCiAgICBzY29wZWRfbG9jayhjb25zdCBzY29wZWRfbG9jayYpID0gZGVsZXRlOw0K
ICAgIHNjb3BlZF9sb2NrJiBvcGVyYXRvcj0oY29uc3Qgc2NvcGVkX2xvY2smKSA9IGRlbGV0ZTsN
Cg0KcHJpdmF0ZToNCiAgICBfTXV0ZXgmIF9NeU11dGV4Ow0KfTsNCg0KdGVtcGxhdGUgPD4NCmNs
YXNzIHNjb3BlZF9sb2NrPD4gew0KcHVibGljOg0KICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCkg
e30NCiAgICBleHBsaWNpdCBzY29wZWRfbG9jayhhZG9wdF9sb2NrX3QpIHt9DQogICAgfnNjb3Bl
ZF9sb2NrKCkgbm9leGNlcHQge30NCg0KICAgIHNjb3BlZF9sb2NrKGNvbnN0IHNjb3BlZF9sb2Nr
JikgPSBkZWxldGU7DQogICAgc2NvcGVkX2xvY2smIG9wZXJhdG9yPShjb25zdCBzY29wZWRfbG9j
ayYpID0gZGVsZXRlOw0KfTsNCiNsaW5lIDUwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxtdXRleCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1MDkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbXV0ZXgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgW1tub2Rpc2NhcmRdXSBpbnQgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIF9fc3RkY2FsbCBfX3N0ZF9pbml0X29uY2VfYmVnaW5faW5pdGlhbGl6
ZSgNCiAgICB2b2lkKiogX0xwSW5pdE9uY2UsIHVuc2lnbmVkIGxvbmcgX0R3RmxhZ3MsIGludCog
X0ZQZW5kaW5nLCB2b2lkKiogX0xwQ29udGV4dCkgbm9leGNlcHQ7DQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIFtbbm9kaXNjYXJkXV0gaW50IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfX3N0
ZGNhbGwgX19zdGRfaW5pdF9vbmNlX2NvbXBsZXRlKA0KICAgIHZvaWQqKiBfTHBJbml0T25jZSwg
dW5zaWduZWQgbG9uZyBfRHdGbGFncywgdm9pZCogX0xwQ29udGV4dCkgbm9leGNlcHQ7DQoNCg0K
DQppbmxpbmUgY29uc3RleHByIHVuc2lnbmVkIGxvbmcgX0luaXRfb25jZV9pbml0X2ZhaWxlZCA9
IDB4NFVMOw0KDQpzdHJ1Y3QgX0luaXRfb25jZV9jb21wbGV0ZXIgew0KICAgIG9uY2VfZmxhZyYg
X09uY2U7DQogICAgdW5zaWduZWQgbG9uZyBfRHdGbGFnczsNCiAgICB+X0luaXRfb25jZV9jb21w
bGV0ZXIoKSB7DQogICAgICAgIGlmIChfX3N0ZF9pbml0X29uY2VfY29tcGxldGUoJl9PbmNlLl9P
cGFxdWUsIF9Ed0ZsYWdzLCBudWxscHRyKSA9PSAwKSB7DQogICAgICAgICAgICA6OiBhYm9ydCgp
Ow0KICAgICAgICB9DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9GbiwgY2xhc3MuLi4g
X0FyZ3M+DQp2b2lkKGNhbGxfb25jZSkob25jZV9mbGFnJiBfT25jZSwgX0ZuJiYgX0Z4LCBfQXJn
cyYmLi4uIF9BeCkgbm9leGNlcHQoDQogICAgbm9leGNlcHQoOjpzdGQ6OiBpbnZva2UoOjpzdGQ6
OiBmb3J3YXJkPF9Gbj4oX0Z4KSwgOjpzdGQ6OiBmb3J3YXJkPF9BcmdzPihfQXgpLi4uKSkpICB7
DQogICAgDQogICAgDQogICAgaW50IF9QZW5kaW5nOw0KICAgIGlmIChfX3N0ZF9pbml0X29uY2Vf
YmVnaW5faW5pdGlhbGl6ZSgmX09uY2UuX09wYXF1ZSwgMCwgJl9QZW5kaW5nLCBudWxscHRyKSA9
PSAwKSB7DQogICAgICAgIDo6IGFib3J0KCk7DQogICAgfQ0KDQogICAgaWYgKF9QZW5kaW5nICE9
IDApIHsNCiAgICAgICAgX0luaXRfb25jZV9jb21wbGV0ZXIgX09we19PbmNlLCBfSW5pdF9vbmNl
X2luaXRfZmFpbGVkfTsNCiAgICAgICAgOjpzdGQ6OiBpbnZva2UoOjpzdGQ6OiBmb3J3YXJkPF9G
bj4oX0Z4KSwgOjpzdGQ6OiBmb3J3YXJkPF9BcmdzPihfQXgpLi4uKTsNCiAgICAgICAgX09wLl9E
d0ZsYWdzID0gMDsNCiAgICB9DQp9DQoNCg0KDQoNCg0KDQplbnVtIGNsYXNzIGN2X3N0YXR1cyB7
IA0KICAgIG5vX3RpbWVvdXQsDQogICAgdGltZW91dA0KfTsNCg0KY2xhc3MgY29uZGl0aW9uX3Zh
cmlhYmxlIHsgDQpwdWJsaWM6DQogICAgdXNpbmcgbmF0aXZlX2hhbmRsZV90eXBlID0gX0NuZF90
Ow0KDQogICAgY29uZGl0aW9uX3ZhcmlhYmxlKCkgew0KICAgICAgICBfQ25kX2luaXRfaW5fc2l0
dShfTXljbmQoKSk7DQogICAgfQ0KDQogICAgfmNvbmRpdGlvbl92YXJpYWJsZSgpIG5vZXhjZXB0
IHsNCiAgICAgICAgX0NuZF9kZXN0cm95X2luX3NpdHUoX015Y25kKCkpOw0KICAgIH0NCg0KICAg
IGNvbmRpdGlvbl92YXJpYWJsZShjb25zdCBjb25kaXRpb25fdmFyaWFibGUmKSA9IGRlbGV0ZTsN
CiAgICBjb25kaXRpb25fdmFyaWFibGUmIG9wZXJhdG9yPShjb25zdCBjb25kaXRpb25fdmFyaWFi
bGUmKSA9IGRlbGV0ZTsNCg0KICAgIHZvaWQgbm90aWZ5X29uZSgpIG5vZXhjZXB0IHsgDQogICAg
ICAgIF9DbmRfc2lnbmFsKF9NeWNuZCgpKTsNCiAgICB9DQoNCiAgICB2b2lkIG5vdGlmeV9hbGwo
KSBub2V4Y2VwdCB7IA0KICAgICAgICBfQ25kX2Jyb2FkY2FzdChfTXljbmQoKSk7DQogICAgfQ0K
DQogICAgdm9pZCB3YWl0KHVuaXF1ZV9sb2NrPG11dGV4PiYgX0xjaykgeyANCiAgICAgICAgDQog
ICAgICAgIF9DbmRfd2FpdChfTXljbmQoKSwgX0xjay5tdXRleCgpLT5fTXltdHgoKSk7DQogICAg
fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+DQogICAgdm9pZCB3YWl0KHVuaXF1
ZV9sb2NrPG11dGV4PiYgX0xjaywgX1ByZWRpY2F0ZSBfUHJlZCkgeyANCiAgICAgICAgd2hpbGUg
KCFfUHJlZCgpKSB7DQogICAgICAgICAgICB3YWl0KF9MY2spOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgdGVtcGxhdGUgPGNsYXNzIF9SZXAsIGNsYXNzIF9QZXJpb2Q+DQogICAgY3Zfc3RhdHVz
IHdhaXRfZm9yKHVuaXF1ZV9sb2NrPG11dGV4PiYgX0xjaywgY29uc3QgY2hyb25vOjpkdXJhdGlv
bjxfUmVwLCBfUGVyaW9kPiYgX1JlbF90aW1lKSB7DQogICAgICAgIA0KICAgICAgICBpZiAoX1Jl
bF90aW1lIDw9IGNocm9ubzo6ZHVyYXRpb248X1JlcCwgX1BlcmlvZD46Onplcm8oKSkgew0KICAg
ICAgICAgICAgcmV0dXJuIGN2X3N0YXR1czo6dGltZW91dDsNCiAgICAgICAgfQ0KDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgOjogeHRpbWUgX1RndDsNCiAgICAgICAgY29uc3QgYm9vbCBf
Q2xhbXBlZCAgICAgPSBfVG9feHRpbWVfMTBfZGF5X2NsYW1wZWQoX1RndCwgX1JlbF90aW1lKTsN
CiAgICAgICAgY29uc3QgY3Zfc3RhdHVzIF9SZXN1bHQgPSB3YWl0X3VudGlsKF9MY2ssICZfVGd0
KTsNCiAgICAgICAgaWYgKF9DbGFtcGVkKSB7DQogICAgICAgICAgICByZXR1cm4gY3Zfc3RhdHVz
Ojpub190aW1lb3V0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAg
fQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SZXAsIGNsYXNzIF9QZXJpb2QsIGNsYXNzIF9QcmVk
aWNhdGU+DQogICAgYm9vbCB3YWl0X2Zvcih1bmlxdWVfbG9jazxtdXRleD4mIF9MY2ssIGNvbnN0
IGNocm9ubzo6ZHVyYXRpb248X1JlcCwgX1BlcmlvZD4mIF9SZWxfdGltZSwgX1ByZWRpY2F0ZSBf
UHJlZCkgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9XYWl0X3VudGlsMShfTGNrLCBjaHJv
bm86OnN0ZWFkeV9jbG9jazo6bm93KCkgKyBfUmVsX3RpbWUsIF9QcmVkKTsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0Nsb2NrLCBjbGFzcyBfRHVyYXRpb24+DQogICAgY3Zfc3RhdHVz
IHdhaXRfdW50aWwodW5pcXVlX2xvY2s8bXV0ZXg+JiBfTGNrLCBjb25zdCBjaHJvbm86OnRpbWVf
cG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24+JiBfQWJzX3RpbWUpIHsNCiAgICAgICAgDQogICAgICAg
IGZvciAoOzspIHsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX05vdyA9IF9DbG9jazo6bm93KCk7
DQogICAgICAgICAgICBpZiAoX0Fic190aW1lIDw9IF9Ob3cpIHsNCiAgICAgICAgICAgICAgICBy
ZXR1cm4gY3Zfc3RhdHVzOjp0aW1lb3V0Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICA6
OiB4dGltZSBfVGd0Ow0KICAgICAgICAgICAgKHZvaWQpIF9Ub194dGltZV8xMF9kYXlfY2xhbXBl
ZChfVGd0LCBfQWJzX3RpbWUgLSBfTm93KTsNCiAgICAgICAgICAgIGNvbnN0IGN2X3N0YXR1cyBf
UmVzdWx0ID0gd2FpdF91bnRpbChfTGNrLCAmX1RndCk7DQogICAgICAgICAgICBpZiAoX1Jlc3Vs
dCA9PSBjdl9zdGF0dXM6Om5vX3RpbWVvdXQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gY3Zf
c3RhdHVzOjpub190aW1lb3V0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzIF9DbG9jaywgY2xhc3MgX0R1cmF0aW9uLCBjbGFzcyBfUHJlZGlj
YXRlPg0KICAgIGJvb2wgd2FpdF91bnRpbCgNCiAgICAgICAgdW5pcXVlX2xvY2s8bXV0ZXg+JiBf
TGNrLCBjb25zdCBjaHJvbm86OnRpbWVfcG9pbnQ8X0Nsb2NrLCBfRHVyYXRpb24+JiBfQWJzX3Rp
bWUsIF9QcmVkaWNhdGUgX1ByZWQpIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBfV2FpdF91
bnRpbDEoX0xjaywgX0Fic190aW1lLCBfUHJlZCk7DQogICAgfQ0KDQogICAgY3Zfc3RhdHVzIHdh
aXRfdW50aWwodW5pcXVlX2xvY2s8bXV0ZXg+JiBfTGNrLCBjb25zdCB4dGltZSogX0Fic190aW1l
KSB7DQogICAgICAgIA0KICAgICAgICBpZiAoIV9NdHhfY3VycmVudF9vd25zKF9MY2subXV0ZXgo
KS0+X015bXR4KCkpKSB7DQogICAgICAgICAgICBfVGhyb3dfQ3BwX2Vycm9yKF9PUEVSQVRJT05f
Tk9UX1BFUk1JVFRFRCk7DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgY29uc3QgaW50
IF9SZXMgPSBfQ25kX3RpbWVkd2FpdChfTXljbmQoKSwgX0xjay5tdXRleCgpLT5fTXltdHgoKSwg
X0Fic190aW1lKTsNCiAgICAgICAgc3dpdGNoIChfUmVzKSB7DQogICAgICAgIGNhc2UgX1RocmRf
c3VjY2VzczoNCiAgICAgICAgICAgIHJldHVybiBjdl9zdGF0dXM6Om5vX3RpbWVvdXQ7DQogICAg
ICAgIGNhc2UgX1RocmRfdGltZWRvdXQ6DQogICAgICAgICAgICByZXR1cm4gY3Zfc3RhdHVzOjp0
aW1lb3V0Ow0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgX1Rocm93X0NfZXJyb3IoX1Jl
cyk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4N
CiAgICBib29sIHdhaXRfdW50aWwodW5pcXVlX2xvY2s8bXV0ZXg+JiBfTGNrLCBjb25zdCB4dGlt
ZSogX0Fic190aW1lLCBfUHJlZGljYXRlIF9QcmVkKSB7DQogICAgICAgIA0KICAgICAgICByZXR1
cm4gX1dhaXRfdW50aWwxKF9MY2ssIF9BYnNfdGltZSwgX1ByZWQpOw0KICAgIH0NCg0KICAgIFtb
bm9kaXNjYXJkXV0gbmF0aXZlX2hhbmRsZV90eXBlIG5hdGl2ZV9oYW5kbGUoKSB7DQogICAgICAg
IHJldHVybiBfTXljbmQoKTsNCiAgICB9DQoNCiAgICB2b2lkIF9SZWdpc3Rlcih1bmlxdWVfbG9j
azxtdXRleD4mIF9MY2ssIGludCogX1JlYWR5KSB7IA0KICAgICAgICBfQ25kX3JlZ2lzdGVyX2F0
X3RocmVhZF9leGl0KF9NeWNuZCgpLCBfTGNrLnJlbGVhc2UoKS0+X015bXR4KCksIF9SZWFkeSk7
DQogICAgfQ0KDQogICAgdm9pZCBfVW5yZWdpc3RlcihtdXRleCYgX010eCkgeyANCiAgICAgICAg
X0NuZF91bnJlZ2lzdGVyX2F0X3RocmVhZF9leGl0KF9NdHguX015bXR4KCkpOw0KICAgIH0NCg0K
cHJpdmF0ZToNCiAgICBhbGlnbmVkX3N0b3JhZ2VfdDw3MiwgOD4gX0NuZF9zdG9yYWdlOw0KDQog
ICAgX0NuZF90IF9NeWNuZCgpIG5vZXhjZXB0IHsgDQogICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PF9DbmRfdD4oJl9DbmRfc3RvcmFnZSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNs
YXNzIF9QcmVkaWNhdGU+DQogICAgYm9vbCBfV2FpdF91bnRpbDEodW5pcXVlX2xvY2s8bXV0ZXg+
JiBfTGNrLCBjb25zdCB4dGltZSogX0Fic190aW1lLCBfUHJlZGljYXRlJiBfUHJlZCkgew0KICAg
ICAgICANCiAgICAgICAgd2hpbGUgKCFfUHJlZCgpKSB7DQogICAgICAgICAgICBpZiAod2FpdF91
bnRpbChfTGNrLCBfQWJzX3RpbWUpID09IGN2X3N0YXR1czo6dGltZW91dCkgew0KICAgICAgICAg
ICAgICAgIHJldHVybiBfUHJlZCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAg
ICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9DbG9jaywgY2xh
c3MgX0R1cmF0aW9uLCBjbGFzcyBfUHJlZGljYXRlPg0KICAgIGJvb2wgX1dhaXRfdW50aWwxKA0K
ICAgICAgICB1bmlxdWVfbG9jazxtdXRleD4mIF9MY2ssIGNvbnN0IGNocm9ubzo6dGltZV9wb2lu
dDxfQ2xvY2ssIF9EdXJhdGlvbj4mIF9BYnNfdGltZSwgX1ByZWRpY2F0ZSYgX1ByZWQpIHsNCiAg
ICAgICAgd2hpbGUgKCFfUHJlZCgpKSB7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9Ob3cgPSBf
Q2xvY2s6Om5vdygpOw0KICAgICAgICAgICAgaWYgKF9BYnNfdGltZSA8PSBfTm93KSB7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICA6
OiB4dGltZSBfVGd0Ow0KICAgICAgICAgICAgY29uc3QgYm9vbCBfQ2xhbXBlZCA9IF9Ub194dGlt
ZV8xMF9kYXlfY2xhbXBlZChfVGd0LCBfQWJzX3RpbWUgLSBfTm93KTsNCiAgICAgICAgICAgIGlm
ICh3YWl0X3VudGlsKF9MY2ssICZfVGd0KSA9PSBjdl9zdGF0dXM6OnRpbWVvdXQgJiYgIV9DbGFt
cGVkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIF9QcmVkKCk7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQp9Ow0KDQpzdHJ1Y3QgX1VJ
bnRfaXNfemVybyB7DQogICAgY29uc3QgdW5zaWduZWQgaW50JiBfVUludDsNCg0KICAgIFtbbm9k
aXNjYXJkXV0gYm9vbCBvcGVyYXRvcigpKCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gX1VJbnQg
PT0gMDsNCiAgICB9DQp9Ow0KDQpjbGFzcyB0aW1lZF9tdXRleCB7IA0KcHVibGljOg0KICAgIHRp
bWVkX211dGV4KCkgbm9leGNlcHQgOiBfTXlfbG9ja2VkKDApIHt9DQoNCiAgICB0aW1lZF9tdXRl
eChjb25zdCB0aW1lZF9tdXRleCYpID0gZGVsZXRlOw0KICAgIHRpbWVkX211dGV4JiBvcGVyYXRv
cj0oY29uc3QgdGltZWRfbXV0ZXgmKSA9IGRlbGV0ZTsNCg0KICAgIHZvaWQgbG9jaygpIHsgDQog
ICAgICAgIHVuaXF1ZV9sb2NrPG11dGV4PiBfTG9jayhfTXlfbXV0ZXgpOw0KICAgICAgICB3aGls
ZSAoX015X2xvY2tlZCAhPSAwKSB7DQogICAgICAgICAgICBfTXlfY29uZC53YWl0KF9Mb2NrKTsN
CiAgICAgICAgfQ0KDQogICAgICAgIF9NeV9sb2NrZWQgPSAweGZmZmZmZmZmOw0KICAgIH0NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gYm9vbCB0cnlfbG9jaygpIG5vZXhjZXB0IHsgDQogICAgICAgIGxv
Y2tfZ3VhcmQ8bXV0ZXg+IF9Mb2NrKF9NeV9tdXRleCk7DQogICAgICAgIGlmIChfTXlfbG9ja2Vk
ICE9IDApIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgIF9NeV9sb2NrZWQgPSAweGZmZmZmZmZmOw0KICAgICAgICAgICAgcmV0dXJuIHRy
dWU7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHVubG9jaygpIHsgDQogICAgICAgIHsN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgbG9ja19ndWFyZDxtdXRleD4gX0xvY2soX015X211
dGV4KTsNCiAgICAgICAgICAgIF9NeV9sb2NrZWQgPSAwOw0KICAgICAgICB9DQogICAgICAgIF9N
eV9jb25kLm5vdGlmeV9vbmUoKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1JlcCwg
Y2xhc3MgX1BlcmlvZD4NCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgdHJ5X2xvY2tfZm9yKGNvbnN0
IGNocm9ubzo6ZHVyYXRpb248X1JlcCwgX1BlcmlvZD4mIF9SZWxfdGltZSkgeyANCiAgICAgICAg
cmV0dXJuIHRyeV9sb2NrX3VudGlsKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSArIF9SZWxf
dGltZSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9UaW1lPg0KICAgIGJvb2wgX1Ry
eV9sb2NrX3VudGlsKF9UaW1lIF9BYnNfdGltZSkgeyANCiAgICAgICAgdW5pcXVlX2xvY2s8bXV0
ZXg+IF9Mb2NrKF9NeV9tdXRleCk7DQogICAgICAgIGlmICghX015X2NvbmQud2FpdF91bnRpbChf
TG9jaywgX0Fic190aW1lLCBfVUludF9pc196ZXJve19NeV9sb2NrZWR9KSkgew0KICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgX015X2xvY2tlZCA9IDB4ZmZm
ZmZmZmY7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbj4NCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgdHJ5X2xv
Y2tfdW50aWwoDQogICAgICAgIGNvbnN0IGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ssIF9EdXJh
dGlvbj4mIF9BYnNfdGltZSkgeyANCiAgICAgICAgcmV0dXJuIF9UcnlfbG9ja191bnRpbChfQWJz
X3RpbWUpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCB0cnlfbG9ja191bnRpbChj
b25zdCB4dGltZSogX0Fic190aW1lKSB7IA0KICAgICAgICByZXR1cm4gX1RyeV9sb2NrX3VudGls
KF9BYnNfdGltZSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIG11dGV4IF9NeV9tdXRleDsNCiAg
ICBjb25kaXRpb25fdmFyaWFibGUgX015X2NvbmQ7DQogICAgdW5zaWduZWQgaW50IF9NeV9sb2Nr
ZWQ7DQp9Ow0KDQpjbGFzcyByZWN1cnNpdmVfdGltZWRfbXV0ZXggeyANCnB1YmxpYzoNCiAgICBy
ZWN1cnNpdmVfdGltZWRfbXV0ZXgoKSBub2V4Y2VwdCA6IF9NeV9sb2NrZWQoMCkge30NCg0KICAg
IHJlY3Vyc2l2ZV90aW1lZF9tdXRleChjb25zdCByZWN1cnNpdmVfdGltZWRfbXV0ZXgmKSA9IGRl
bGV0ZTsNCiAgICByZWN1cnNpdmVfdGltZWRfbXV0ZXgmIG9wZXJhdG9yPShjb25zdCByZWN1cnNp
dmVfdGltZWRfbXV0ZXgmKSA9IGRlbGV0ZTsNCg0KICAgIHZvaWQgbG9jaygpIHsgDQogICAgICAg
IGNvbnN0IHRocmVhZDo6aWQgX1RpZCA9IHRoaXNfdGhyZWFkOjpnZXRfaWQoKTsNCg0KICAgICAg
ICB1bmlxdWVfbG9jazxtdXRleD4gX0xvY2soX015X211dGV4KTsNCg0KICAgICAgICBpZiAoX1Rp
ZCA9PSBfTXlfb3duZXIpIHsNCiAgICAgICAgICAgIGlmIChfTXlfbG9ja2VkIDwgMHhmZmZmZmZm
Zikgew0KICAgICAgICAgICAgICAgICsrX015X2xvY2tlZDsNCiAgICAgICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICAgICAgX1Rocm93X3N5c3RlbV9lcnJvcihlcnJjOjpkZXZpY2Vfb3JfcmVz
b3VyY2VfYnVzeSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICB3aGlsZSAoX015X2xvY2tlZCAhPSAwKSB7DQogICAgICAgICAgICAgICAgX015X2NvbmQud2Fp
dChfTG9jayk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF9NeV9sb2NrZWQgPSAxOw0K
ICAgICAgICAgICAgX015X293bmVyICA9IF9UaWQ7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIGJvb2wgdHJ5X2xvY2soKSBub2V4Y2VwdCB7IA0KICAgICAgICBjb25zdCB0
aHJlYWQ6OmlkIF9UaWQgPSB0aGlzX3RocmVhZDo6Z2V0X2lkKCk7DQoNCiAgICAgICAgbG9ja19n
dWFyZDxtdXRleD4gX0xvY2soX015X211dGV4KTsNCg0KICAgICAgICBpZiAoX1RpZCA9PSBfTXlf
b3duZXIpIHsNCiAgICAgICAgICAgIGlmIChfTXlfbG9ja2VkIDwgMHhmZmZmZmZmZikgew0KICAg
ICAgICAgICAgICAgICsrX015X2xvY2tlZDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0K
ICAgICAgICAgICAgaWYgKF9NeV9sb2NrZWQgIT0gMCkgew0KICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgX015X2xvY2tl
ZCA9IDE7DQogICAgICAgICAgICAgICAgX015X293bmVyICA9IF9UaWQ7DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgdm9pZCB1bmxv
Y2soKSB7IA0KICAgICAgICBib29sIF9Eb19ub3RpZnkgPSBmYWxzZTsNCg0KICAgICAgICB7DQog
ICAgICAgICAgICBsb2NrX2d1YXJkPG11dGV4PiBfTG9jayhfTXlfbXV0ZXgpOw0KICAgICAgICAg
ICAgLS1fTXlfbG9ja2VkOw0KICAgICAgICAgICAgaWYgKF9NeV9sb2NrZWQgPT0gMCkgew0KICAg
ICAgICAgICAgICAgIF9Eb19ub3RpZnkgPSB0cnVlOw0KICAgICAgICAgICAgICAgIF9NeV9vd25l
ciAgPSB0aHJlYWQ6OmlkKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBp
ZiAoX0RvX25vdGlmeSkgew0KICAgICAgICAgICAgX015X2NvbmQubm90aWZ5X29uZSgpOw0KICAg
ICAgICB9DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SZXAsIGNsYXNzIF9QZXJpb2Q+
DQogICAgW1tub2Rpc2NhcmRdXSBib29sIHRyeV9sb2NrX2Zvcihjb25zdCBjaHJvbm86OmR1cmF0
aW9uPF9SZXAsIF9QZXJpb2Q+JiBfUmVsX3RpbWUpIHsgDQogICAgICAgIHJldHVybiB0cnlfbG9j
a191bnRpbChjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgKyBfUmVsX3RpbWUpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVGltZT4NCiAgICBib29sIF9UcnlfbG9ja191bnRpbChf
VGltZSBfQWJzX3RpbWUpIHsgDQogICAgICAgIGNvbnN0IHRocmVhZDo6aWQgX1RpZCA9IHRoaXNf
dGhyZWFkOjpnZXRfaWQoKTsNCg0KICAgICAgICB1bmlxdWVfbG9jazxtdXRleD4gX0xvY2soX015
X211dGV4KTsNCg0KICAgICAgICBpZiAoX1RpZCA9PSBfTXlfb3duZXIpIHsNCiAgICAgICAgICAg
IGlmIChfTXlfbG9ja2VkIDwgMHhmZmZmZmZmZikgew0KICAgICAgICAgICAgICAgICsrX015X2xv
Y2tlZDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKCFfTXlf
Y29uZC53YWl0X3VudGlsKF9Mb2NrLCBfQWJzX3RpbWUsIF9VSW50X2lzX3plcm97X015X2xvY2tl
ZH0pKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQog
ICAgICAgICAgICBfTXlfbG9ja2VkID0gMTsNCiAgICAgICAgICAgIF9NeV9vd25lciAgPSBfVGlk
Ow0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfQ2xvY2ssIGNsYXNzIF9EdXJhdGlvbj4NCiAgICBbW25vZGlzY2FyZF1dIGJvb2wg
dHJ5X2xvY2tfdW50aWwoDQogICAgICAgIGNvbnN0IGNocm9ubzo6dGltZV9wb2ludDxfQ2xvY2ss
IF9EdXJhdGlvbj4mIF9BYnNfdGltZSkgeyANCiAgICAgICAgcmV0dXJuIF9UcnlfbG9ja191bnRp
bChfQWJzX3RpbWUpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCB0cnlfbG9ja191
bnRpbChjb25zdCB4dGltZSogX0Fic190aW1lKSB7IA0KICAgICAgICByZXR1cm4gX1RyeV9sb2Nr
X3VudGlsKF9BYnNfdGltZSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIG11dGV4IF9NeV9tdXRl
eDsNCiAgICBjb25kaXRpb25fdmFyaWFibGUgX015X2NvbmQ7DQogICAgdW5zaWduZWQgaW50IF9N
eV9sb2NrZWQ7DQogICAgdGhyZWFkOjppZCBfTXlfb3duZXI7DQp9Ow0KI2xpbmUgOTIxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG11dGV4Ig0KfQ0K
DQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0KI2xpbmUgOTI3ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXG11dGV4Ig0K
I2xpbmUgOTI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXG11dGV4Ig0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUmFuZG9tTnVtYmVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIHJhbmRvbU51bWJlcigpOw0KDQoNCl9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB1bnNpZ25lZCB3ZWFrUmFuZG9tVWludDMyKCk7DQoNCn0NCg0KdXNpbmcgV1RG
OjpyYW5kb21OdW1iZXI7DQp1c2luZyBXVEY6OndlYWtSYW5kb21VaW50MzI7DQojbGluZSA0MiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
SGFzaFRhYmxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0KdXNpbmcgSGFzaFRhYmxlTWFsbG9jID0gRmFzdE1hbGxvYzsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
Pg0KICAgIGNsYXNzIEhhc2hUYWJsZTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIGNsYXNzIEhhc2hUYWJsZUl0
ZXJhdG9yOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjsNCg0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+DQogICAgdm9pZCBhZGRJdGVyYXRvcihjb25zdCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4qLA0KICAgICAg
ICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Kik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIHZvaWQgcmVtb3Zl
SXRlcmF0b3IoSGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhh
c2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiopOw0KDQoNCg0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAg
aW5saW5lIHZvaWQgYWRkSXRlcmF0b3IoY29uc3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KiwNCiAgICAgICAgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPiopIHsgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBpbmxpbmUgdm9pZCByZW1v
dmVJdGVyYXRvcihIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+KikgeyB9DQoNCiNsaW5lIDExMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFz
aFRhYmxlLmgiDQoNCiAgICB0eXBlZGVmIGVudW0geyBIYXNoSXRlbUtub3duR29vZCB9IEhhc2hJ
dGVtS25vd25Hb29kVGFnOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBjbGFzcyBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywg
VmFsdWUsIHN0ZDo6cHRyZGlmZl90LCBjb25zdCBWYWx1ZSosIGNvbnN0IFZhbHVlJj4gew0KICAg
ICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZy
ZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RG
OjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6
OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRh
Zywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcg
d2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0Zv
cmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHByaXZhdGU6DQogICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7DQogICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz4gaXRlcmF0b3I7DQogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPiBjb25zdF9pdGVyYXRvcjsNCiAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7DQog
ICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlJiBSZWZlcmVuY2VUeXBlOw0KICAgICAgICB0
eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSogUG9pbnRlclR5cGU7DQoNCiAgICAgICAgZnJpZW5kIGNs
YXNzIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjsNCiAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJsZUl0ZXJhdG9yPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ow0K
DQogICAgICAgIHZvaWQgc2tpcEVtcHR5QnVja2V0cygpDQogICAgICAgIHsNCiAgICAgICAgICAg
IHdoaWxlIChtX3Bvc2l0aW9uICE9IG1fZW5kUG9zaXRpb24gJiYgSGFzaFRhYmxlVHlwZTo6aXNF
bXB0eU9yRGVsZXRlZEJ1Y2tldCgqbV9wb3NpdGlvbikpDQogICAgICAgICAgICAgICAgKyttX3Bv
c2l0aW9uOw0KICAgICAgICB9DQoNCiAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcihjb25z
dCBIYXNoVGFibGVUeXBlKiB0YWJsZSwgUG9pbnRlclR5cGUgcG9zaXRpb24sIFBvaW50ZXJUeXBl
IGVuZFBvc2l0aW9uKQ0KICAgICAgICAgICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uKSwgbV9lbmRQ
b3NpdGlvbihlbmRQb3NpdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAgYWRkSXRlcmF0b3Io
dGFibGUsIHRoaXMpOw0KICAgICAgICAgICAgc2tpcEVtcHR5QnVja2V0cygpOw0KICAgICAgICB9
DQoNCiAgICAgICAgSGFzaFRhYmxlQ29uc3RJdGVyYXRvcihjb25zdCBIYXNoVGFibGVUeXBlKiB0
YWJsZSwgUG9pbnRlclR5cGUgcG9zaXRpb24sIFBvaW50ZXJUeXBlIGVuZFBvc2l0aW9uLCBIYXNo
SXRlbUtub3duR29vZFRhZykNCiAgICAgICAgICAgIDogbV9wb3NpdGlvbihwb3NpdGlvbiksIG1f
ZW5kUG9zaXRpb24oZW5kUG9zaXRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIGFkZEl0ZXJh
dG9yKHRhYmxlLCB0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgcHVibGljOg0KICAgICAgICBIYXNo
VGFibGVDb25zdEl0ZXJhdG9yKCkNCiAgICAgICAgew0KICAgICAgICAgICAgYWRkSXRlcmF0b3Io
c3RhdGljX2Nhc3Q8Y29uc3QgSGFzaFRhYmxlVHlwZSo+KDApLCB0aGlzKTsNCiAgICAgICAgfQ0K
DQogICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE3OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgUG9pbnRlclR5cGUgZ2V0KCkgY29u
c3QNCiAgICAgICAgew0KICAgICAgICAgICAgY2hlY2tWYWxpZGl0eSgpOw0KICAgICAgICAgICAg
cmV0dXJuIG1fcG9zaXRpb247DQogICAgICAgIH0NCiAgICAgICAgUmVmZXJlbmNlVHlwZSBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0NCiAgICAgICAgUG9pbnRlclR5cGUgb3Bl
cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9DQoNCiAgICAgICAgY29uc3RfaXRlcmF0
b3ImIG9wZXJhdG9yKysoKQ0KICAgICAgICB7DQogICAgICAgICAgICBjaGVja1ZhbGlkaXR5KCk7
DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICArK21fcG9zaXRpb247DQogICAg
ICAgICAgICBza2lwRW1wdHlCdWNrZXRzKCk7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgICAgIH0NCg0KICAgICAgICANCg0KICAgICAgICANCiAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAgICAgICAgew0KICAgICAgICAg
ICAgY2hlY2tWYWxpZGl0eShvdGhlcik7DQogICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9
PSBvdGhlci5tX3Bvc2l0aW9uOw0KICAgICAgICB9DQogICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAg
IGNoZWNrVmFsaWRpdHkob3RoZXIpOw0KICAgICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gIT0g
b3RoZXIubV9wb3NpdGlvbjsNCiAgICAgICAgfQ0KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4g
KnRoaXMgPT0gc3RhdGljX2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVyKTsNCiAgICAgICAgfQ0K
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdA0KICAg
ICAgICB7DQogICAgICAgICAgICByZXR1cm4gKnRoaXMgIT0gc3RhdGljX2Nhc3Q8Y29uc3RfaXRl
cmF0b3I+KG90aGVyKTsNCiAgICAgICAgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAgdm9pZCBj
aGVja1ZhbGlkaXR5KCkgY29uc3QNCiAgICAgICAgew0KDQoNCiNsaW5lIDIyNCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxl
LmgiDQogICAgICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIzNSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgi
DQogICAgICAgIHZvaWQgY2hlY2tWYWxpZGl0eShjb25zdCBjb25zdF9pdGVyYXRvciYpIGNvbnN0
IHsgfQ0KI2xpbmUgMjM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCg0KICAgICAgICBQb2ludGVyVHlwZSBtX3Bv
c2l0aW9uIHsgbnVsbHB0ciB9Ow0KICAgICAgICBQb2ludGVyVHlwZSBtX2VuZFBvc2l0aW9uIHsg
bnVsbHB0ciB9Ow0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0OSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQogICAg
fTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+DQogICAgY2xhc3MgSGFzaFRhYmxlSXRlcmF0b3IgOiBwdWJsaWMgc3Rk
OjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWYWx1ZSwgc3RkOjpwdHJkaWZm
X3QsIFZhbHVlKiwgVmFsdWUmPiB7DQogICAgICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZh
dGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBp
bnQ7DQogICAgcHJpdmF0ZToNCiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlw
ZTsNCiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsNCiAgICAgICAg
dHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KICAgICAgICB0
eXBlZGVmIFZhbHVlIFZhbHVlVHlwZTsNCiAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUmIFJlZmVy
ZW5jZVR5cGU7DQogICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsNCg0KICAg
ICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+Ow0KDQogICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9y
KEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBwb3MsIFBvaW50ZXJUeXBlIGVuZCkg
OiBtX2l0ZXJhdG9yKHRhYmxlLCBwb3MsIGVuZCkgeyB9DQogICAgICAgIEhhc2hUYWJsZUl0ZXJh
dG9yKEhhc2hUYWJsZVR5cGUqIHRhYmxlLCBQb2ludGVyVHlwZSBwb3MsIFBvaW50ZXJUeXBlIGVu
ZCwgSGFzaEl0ZW1Lbm93bkdvb2RUYWcgdGFnKSA6IG1faXRlcmF0b3IodGFibGUsIHBvcywgZW5k
LCB0YWcpIHsgfQ0KDQogICAgcHVibGljOg0KICAgICAgICBIYXNoVGFibGVJdGVyYXRvcigpIHsg
fQ0KDQogICAgICAgIA0KDQogICAgICAgIFBvaW50ZXJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KG1faXRlcmF0b3IuZ2V0KCkpOyB9DQogICAgICAgIFJl
ZmVyZW5jZVR5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9DQogICAgICAg
IFBvaW50ZXJUeXBlIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQ0KDQogICAg
ICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK21faXRlcmF0b3I7IHJldHVybiAqdGhpczsg
fQ0KDQogICAgICAgIA0KDQogICAgICAgIA0KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
aXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yID09IG90aGVyLm1faXRl
cmF0b3I7IH0NCiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhlci5tX2l0ZXJhdG9yOyB9DQogICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1faXRlcmF0b3IgPT0gb3RoZXI7IH0NCiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhl
cjsgfQ0KDQogICAgICAgIG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pdGVyYXRvcjsgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAgY29uc3RfaXRlcmF0b3IgbV9p
dGVyYXRvcjsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnM+IGNsYXNzIElkZW50aXR5SGFzaFRyYW5zbGF0b3Igew0KICAg
IHB1YmxpYzoNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgVCYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7IH0NCiAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwg
Yik7IH0NCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
Vj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBjb25zdCBVJiwgViYmIHZhbHVl
KQ0KICAgICAgICB7IA0KICAgICAgICAgICAgVmFsdWVUcmFpdHM6OmFzc2lnblRvRW1wdHkobG9j
YXRpb24sIHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSkpOyANCiAgICAgICAgfQ0KICAgIH07DQoNCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+IHN0cnVjdCBIYXNoVGFibGVBZGRSZXN1
bHQgew0KICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQoKSA6IGlzTmV3RW50cnkoZmFsc2UpIHsg
fQ0KICAgICAgICBIYXNoVGFibGVBZGRSZXN1bHQoSXRlcmF0b3JUeXBlIGl0ZXIsIGJvb2wgaXNO
ZXdFbnRyeSkgOiBpdGVyYXRvcihpdGVyKSwgaXNOZXdFbnRyeShpc05ld0VudHJ5KSB7IH0NCiAg
ICAgICAgSXRlcmF0b3JUeXBlIGl0ZXJhdG9yOw0KICAgICAgICBib29sIGlzTmV3RW50cnk7DQoN
CiAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzTmV3RW50
cnk7IH0NCiAgICB9Ow0KDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4N
CiAgICBzdHJ1Y3QgSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIHsNCiAgICAgICAgDQogICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc21hbGxNYXhMb2FkTnVtZXJhdG9yID0gMzsNCiAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzbWFsbE1heExvYWREZW5vbWluYXRvciA9
IDQ7DQogICAgICAgIA0KICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGxhcmdlTWF4
TG9hZE51bWVyYXRvciA9IDE7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbGFy
Z2VNYXhMb2FkRGVub21pbmF0b3IgPSAyOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1heFNtYWxsVGFibGVDYXBhY2l0eSA9IDEwMjQ7DQogICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWluTG9hZCA9IDY7DQoNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHNob3VsZEV4cGFuZCh1aW50NjRfdCBrZXlBbmREZWxldGVDb3VudCwgdWludDY0X3QgdGFibGVT
aXplKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAodGFibGVTaXplIDw9IG1heFNtYWxsVGFi
bGVDYXBhY2l0eSkNCiAgICAgICAgICAgICAgICByZXR1cm4ga2V5QW5kRGVsZXRlQ291bnQgKiBz
bWFsbE1heExvYWREZW5vbWluYXRvciA+PSB0YWJsZVNpemUgKiBzbWFsbE1heExvYWROdW1lcmF0
b3I7DQogICAgICAgICAgICByZXR1cm4ga2V5QW5kRGVsZXRlQ291bnQgKiBsYXJnZU1heExvYWRE
ZW5vbWluYXRvciA+PSB0YWJsZVNpemUgKiBsYXJnZU1heExvYWROdW1lcmF0b3I7DQogICAgICAg
IH0NCg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNhcGFjaXR5Rm9yU2l6ZSh1
aW50MzJfdCBzaXplQXJnKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIXNpemVBcmcpDQog
ICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQg
bWF4Q2FwYWNpdHkgPSAxVSA8PCAzMTsNCiAgICAgICAgICAgICh2b2lkKW1heENhcGFjaXR5Ow0K
ICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgdWludDMyX3QgY2FwYWNpdHkgPSBy
b3VuZFVwVG9Qb3dlck9mVHdvKHNpemVBcmcpOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAgICAgaWYgKHNob3VsZEV4cGFuZChzaXplQXJnLCBjYXBhY2l0eSkpIHsNCiAgICAgICAg
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGNhcGFjaXR5ICogMjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBjYXBhY2l0eTsNCiAgICAgICAgfQ0K
DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSBjYXBhY2l0eUZvclNp
emUoc2l6ZSk7DQogICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZSA+IDAsICJIYXNoVGFibGVOb25a
ZXJvTWluaW11bUNhcGFjaXR5Iik7DQogICAgICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0
PHVuc2lnbmVkPih2YWx1ZSA+PiAzMSksICJIYXNoVGFibGVOb0NhcGFjaXR5T3ZlcmZsb3ciKTsN
CiAgICB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBjbGFzcyBIYXNoVGFibGUgew0KICAgIHB1YmxpYzoN
CiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3Is
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsNCiAgICAgICAgdHlw
ZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOw0KICAgICAgICB0eXBl
ZGVmIFRyYWl0cyBWYWx1ZVRyYWl0czsNCiAgICAgICAgdHlwZWRlZiBLZXkgS2V5VHlwZTsNCiAg
ICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7DQogICAgICAgIHR5cGVkZWYgSWRlbnRpdHlI
YXNoVHJhbnNsYXRvcjxWYWx1ZVRyYWl0cywgSGFzaEZ1bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xh
dG9yVHlwZTsNCiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFk
ZFJlc3VsdDsNCg0KICAgICAgICB1c2luZyBIYXNoVGFibGVTaXplUG9saWN5ID0gSGFzaFRhYmxl
Q2FwYWNpdHlGb3JTaXplPDE+Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA0MTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQogICAgICAgIEhhc2hUYWJsZSgpOw0KICAgICAgICB+
SGFzaFRhYmxlKCkgDQogICAgICAgIHsNCiAgICAgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMo
KTsgDQogICAgICAgICAgICBpZiAobV90YWJsZSkNCiAgICAgICAgICAgICAgICBkZWFsbG9jYXRl
VGFibGUobV90YWJsZSk7DQoNCg0KI2xpbmUgNDIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCiAgICAgICAgfQ0K
DQogICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsNCiAgICAgICAgdm9pZCBzd2Fw
KEhhc2hUYWJsZSYpOw0KICAgICAgICBIYXNoVGFibGUmIG9wZXJhdG9yPShjb25zdCBIYXNoVGFi
bGUmKTsNCg0KICAgICAgICBIYXNoVGFibGUoSGFzaFRhYmxlJiYpOw0KICAgICAgICBIYXNoVGFi
bGUmIG9wZXJhdG9yPShIYXNoVGFibGUmJik7DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBpc0VtcHR5KCkgPyBlbmQoKSA6
IG1ha2VJdGVyYXRvcihtX3RhYmxlKTsgfQ0KICAgICAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVy
biBtYWtlS25vd25Hb29kSXRlcmF0b3IobV90YWJsZSArIHRhYmxlU2l6ZSgpKTsgfQ0KICAgICAg
ICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKSA/IGVuZCgp
IDogbWFrZUNvbnN0SXRlcmF0b3IobV90YWJsZSk7IH0NCiAgICAgICAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IobV90YWJsZSAr
IHRhYmxlU2l6ZSgpKTsgfQ0KDQogICAgICAgIGl0ZXJhdG9yIHJhbmRvbSgpDQogICAgICAgIHsN
CiAgICAgICAgICAgIGlmIChpc0VtcHR5KCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGVuZCgp
Ow0KDQogICAgICAgICAgICB3aGlsZSAoMSkgew0KICAgICAgICAgICAgICAgIGF1dG8mIGJ1Y2tl
dCA9IG1fdGFibGVbd2Vha1JhbmRvbVVpbnQzMigpICYgdGFibGVTaXplTWFzaygpXTsNCiAgICAg
ICAgICAgICAgICBpZiAoIWlzRW1wdHlPckRlbGV0ZWRCdWNrZXQoYnVja2V0KSkNCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VLbm93bkdvb2RJdGVyYXRvcigmYnVja2V0KTsNCiAgICAg
ICAgICAgIH07DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdF9pdGVyYXRvciByYW5kb20oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdF9pdGVyYXRvcj4oY29uc3RfY2FzdDxIYXNo
VGFibGUqPih0aGlzKS0+cmFuZG9tKCkpOyB9DQoNCiAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIGtleUNvdW50KCk7IH0NCiAgICAgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBj
b25zdCB7IHJldHVybiB0YWJsZVNpemUoKTsgfQ0KICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAha2V5Q291bnQoKTsgfQ0KDQogICAgICAgIHZvaWQgcmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSh1bnNpZ25lZCBrZXlDb3VudCkNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAgICAgICB1bnNpZ25lZCBtaW5p
bXVtVGFibGVTaXplID0gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXplOw0KICAgICAgICAgICAg
dW5zaWduZWQgbmV3VGFibGVTaXplID0gc3RkOjptYXgobWluaW11bVRhYmxlU2l6ZSwgY29tcHV0
ZUJlc3RUYWJsZVNpemUoa2V5Q291bnQpKTsNCg0KICAgICAgICAgICAgbV90YWJsZSA9IGFsbG9j
YXRlVGFibGUobmV3VGFibGVTaXplKTsNCiAgICAgICAgICAgIHNldFRhYmxlU2l6ZShuZXdUYWJs
ZVNpemUpOw0KICAgICAgICAgICAgc2V0VGFibGVTaXplTWFzayhuZXdUYWJsZVNpemUgLSAxKTsN
CiAgICAgICAgICAgIHNldERlbGV0ZWRDb3VudCgwKTsNCiAgICAgICAgICAgIHNldEtleUNvdW50
KDApOw0KICAgICAgICB9DQoNCiAgICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpl
eHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9DQogICAgICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBl
JiYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6
OmV4dHJhY3QodmFsdWUpLCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVl
KSk7IH0NCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IEFkZFJl
c3VsdCBhZGQoVCYmIGtleSwgRXh0cmEmJik7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gQWRkUmVzdWx0IGFkZFBh
c3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRyYSYmKTsNCg0KICAgICAgICBpdGVyYXRvciBmaW5k
KGNvbnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gZmluZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBl
PihrZXkpOyB9DQogICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYga2V5
KSBjb25zdCB7IHJldHVybiBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0NCiAg
ICAgICAgYm9vbCBjb250YWlucyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0IHsgcmV0dXJuIGNv
bnRhaW5zPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH0NCg0KICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gaXRlcmF0b3IgZmluZChjb25z
dCBUJik7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPiBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IFQmKSBjb25zdDsNCiAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IGJvb2wgY29udGFpbnMoY29u
c3QgVCYpIGNvbnN0Ow0KDQogICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsNCiAg
ICAgICAgdm9pZCByZW1vdmUoaXRlcmF0b3IpOw0KICAgICAgICB2b2lkIHJlbW92ZVdpdGhvdXRF
bnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0b3IpOw0KICAgICAgICB2b2lkIHJlbW92ZVdpdGhv
dXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfaXRlcmF0b3IpOw0KICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPg0KICAgICAgICBib29sIHJlbW92ZUlmKGNvbnN0IEZ1bmN0b3Im
KTsNCiAgICAgICAgdm9pZCBjbGVhcigpOw0KDQogICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlC
dWNrZXQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gaXNIYXNoVHJhaXRzRW1wdHlW
YWx1ZTxLZXlUcmFpdHM+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSkpOyB9DQogICAgICAgIHN0
YXRpYyBib29sIGlzUmVsZWFzZWRXZWFrQnVja2V0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsg
cmV0dXJuIGlzSGFzaFRyYWl0c1JlbGVhc2VkV2Vha1ZhbHVlPEtleVRyYWl0cz4oRXh0cmFjdG9y
OjpleHRyYWN0KHZhbHVlKSk7IH0NCiAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkQnVja2V0
KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIEtleVRyYWl0czo6aXNEZWxldGVkVmFs
dWUoRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSk7IH0NCiAgICAgICAgc3RhdGljIGJvb2wgaXNF
bXB0eU9yRGVsZXRlZEJ1Y2tldChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBpc0Vt
cHR5QnVja2V0KHZhbHVlKSB8fCBpc0RlbGV0ZWRCdWNrZXQodmFsdWUpOyB9DQoNCiAgICAgICAg
VmFsdWVUeXBlKiBsb29rdXAoY29uc3QgS2V5JiBrZXkpIHsgcmV0dXJuIGxvb2t1cDxJZGVudGl0
eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hU
cmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5cGUqIGxvb2t1cChjb25zdCBUJik7DQogICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5
cGUqIGlubGluZUxvb2t1cChjb25zdCBUJik7DQoNCg0KDQojbGluZSA1MDggIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5o
Ig0KICAgICAgICBzdGF0aWMgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSB7IH0NCiNsaW5l
IDUxMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvSGFzaFRhYmxlLmgiDQoNCg0KDQojbGluZSA1MTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KICAgICAg
ICBzdGF0aWMgdm9pZCBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7
IH0NCiAgICAgICAgc3RhdGljIHZvaWQgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKSB7
IH0NCiNsaW5lIDUxNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICBwcml2YXRlOg0KICAgICAgICBzdGF0
aWMgVmFsdWVUeXBlKiBhbGxvY2F0ZVRhYmxlKHVuc2lnbmVkIHNpemUpOw0KICAgICAgICBzdGF0
aWMgdm9pZCBkZWFsbG9jYXRlVGFibGUoVmFsdWVUeXBlKiB0YWJsZSk7DQoNCiAgICAgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8VmFsdWVUeXBlKiwgYm9vbD4gTG9va3VwVHlwZTsNCiAgICAgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8TG9va3VwVHlwZSwgdW5zaWduZWQ+IEZ1bGxMb29rdXBUeXBlOw0KDQog
ICAgICAgIExvb2t1cFR5cGUgbG9va3VwRm9yV3JpdGluZyhjb25zdCBLZXkmIGtleSkgeyByZXR1
cm4gbG9va3VwRm9yV3JpdGluZzxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihrZXkpOyB9Ow0KICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gRnVsbExv
b2t1cFR5cGUgZnVsbExvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYpOw0KICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gTG9va3VwVHlwZSBsb29rdXBG
b3JXcml0aW5nKGNvbnN0IFQmKTsNCg0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0cmE+IHZvaWQgYWRkVW5pcXVlRm9ySW5p
dGlhbGl6YXRpb24oVCYmIGtleSwgRXh0cmEmJik7DQoNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IHZvaWQgY2hlY2tLZXkoY29uc3QgVCYpOw0K
DQogICAgICAgIHZvaWQgcmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5
Q2hlY2soVmFsdWVUeXBlKik7DQogICAgICAgIHZvaWQgcmVtb3ZlQW5kSW52YWxpZGF0ZShWYWx1
ZVR5cGUqKTsNCiAgICAgICAgdm9pZCByZW1vdmUoVmFsdWVUeXBlKik7DQoNCiAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlQmVzdFRhYmxlU2l6ZSh1bnNpZ25lZCBrZXlD
b3VudCk7DQogICAgICAgIGJvb2wgc2hvdWxkRXhwYW5kKCkgY29uc3QgeyByZXR1cm4gSGFzaFRh
YmxlU2l6ZVBvbGljeTo6c2hvdWxkRXhwYW5kKGtleUNvdW50KCkgKyBkZWxldGVkQ291bnQoKSwg
dGFibGVTaXplKCkpOyB9DQogICAgICAgIGJvb2wgbXVzdFJlaGFzaEluUGxhY2UoKSBjb25zdCB7
IHJldHVybiBrZXlDb3VudCgpICogbWluTG9hZCA8IHRhYmxlU2l6ZSgpICogMjsgfQ0KICAgICAg
ICBib29sIHNob3VsZFNocmluaygpIGNvbnN0IHsgcmV0dXJuIGtleUNvdW50KCkgKiBtaW5Mb2Fk
IDwgdGFibGVTaXplKCkgJiYgdGFibGVTaXplKCkgPiBLZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNp
emU7IH0NCiAgICAgICAgVmFsdWVUeXBlKiBleHBhbmQoVmFsdWVUeXBlKiBlbnRyeSA9IG51bGxw
dHIpOw0KICAgICAgICB2b2lkIHNocmluaygpIHsgcmVoYXNoKHRhYmxlU2l6ZSgpIC8gMiwgbnVs
bHB0cik7IH0NCiAgICAgICAgdm9pZCBzaHJpbmtUb0Jlc3RTaXplKCk7DQogICAgDQogICAgICAg
IHZvaWQgZGVsZXRlUmVsZWFzZWRXZWFrQnVja2V0cygpOw0KDQogICAgICAgIFZhbHVlVHlwZSog
cmVoYXNoKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSwgVmFsdWVUeXBlKiBlbnRyeSk7DQogICAgICAg
IFZhbHVlVHlwZSogcmVpbnNlcnQoVmFsdWVUeXBlJiYpOw0KDQogICAgICAgIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVCdWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpOw0KICAgICAgICBzdGF0aWMgdm9p
ZCBkZWxldGVCdWNrZXQoVmFsdWVUeXBlJiBidWNrZXQpIHsgaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tl
dDxUcmFpdHM+KGJ1Y2tldCk7IH0NCg0KICAgICAgICBGdWxsTG9va3VwVHlwZSBtYWtlTG9va3Vw
UmVzdWx0KFZhbHVlVHlwZSogcG9zaXRpb24sIGJvb2wgZm91bmQsIHVuc2lnbmVkIGhhc2gpDQog
ICAgICAgICAgICB7IHJldHVybiBGdWxsTG9va3VwVHlwZShMb29rdXBUeXBlKHBvc2l0aW9uLCBm
b3VuZCksIGhhc2gpOyB9DQoNCiAgICAgICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKFZhbHVlVHlw
ZSogcG9zKSB7IHJldHVybiBpdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyB0YWJsZVNpemUo
KSk7IH0NCiAgICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUNvbnN0SXRlcmF0b3IoVmFsdWVUeXBl
KiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSAr
IHRhYmxlU2l6ZSgpKTsgfQ0KICAgICAgICBpdGVyYXRvciBtYWtlS25vd25Hb29kSXRlcmF0b3Io
VmFsdWVUeXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIHRh
YmxlU2l6ZSgpLCBIYXNoSXRlbUtub3duR29vZCk7IH0NCiAgICAgICAgY29uc3RfaXRlcmF0b3Ig
bWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJsZSArIHRhYmxlU2l6ZSgpLCBIYXNoSXRl
bUtub3duR29vZCk7IH0NCg0KDQoNCiNsaW5lIDU2NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQogICAgICAgIHN0
YXRpYyB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0NCiNsaW5lIDU2
NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvSGFzaFRhYmxlLmgiDQoNCg0KDQojbGluZSA1NzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KICAgICAgICBz
dGF0aWMgdm9pZCBpbnZhbGlkYXRlSXRlcmF0b3JzKCkgeyB9DQojbGluZSA1NzIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJs
ZS5oIg0KDQogICAgICAgIA0KICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNtYWxs
TWF4TG9hZE51bWVyYXRvciA9IEhhc2hUYWJsZVNpemVQb2xpY3k6OnNtYWxsTWF4TG9hZE51bWVy
YXRvcjsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzbWFsbE1heExvYWREZW5v
bWluYXRvciA9IEhhc2hUYWJsZVNpemVQb2xpY3k6OnNtYWxsTWF4TG9hZERlbm9taW5hdG9yOw0K
ICAgICAgICANCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBsYXJnZU1heExvYWRO
dW1lcmF0b3IgPSBIYXNoVGFibGVTaXplUG9saWN5OjpsYXJnZU1heExvYWROdW1lcmF0b3I7DQog
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbGFyZ2VNYXhMb2FkRGVub21pbmF0b3Ig
PSBIYXNoVGFibGVTaXplUG9saWN5OjpsYXJnZU1heExvYWREZW5vbWluYXRvcjsNCiAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhTbWFsbFRhYmxlQ2FwYWNpdHkgPSBIYXNoVGFi
bGVTaXplUG9saWN5OjptYXhTbWFsbFRhYmxlQ2FwYWNpdHk7DQogICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbWluTG9hZCA9IEhhc2hUYWJsZVNpemVQb2xpY3k6Om1pbkxvYWQ7DQoN
CiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdGFibGVTaXplT2Zmc2V0ID0gLTE7DQogICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHRhYmxlU2l6ZU1hc2tPZmZzZXQgPSAtMjsNCiAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQga2V5Q291bnRPZmZzZXQgPSAtMzsNCiAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQgZGVsZXRlZENvdW50T2Zmc2V0ID0gLTQ7DQogICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbWV0YWRhdGFTaXplID0gNCAqIHNpemVvZih1bnNpZ25lZCk7
DQoNCiAgICAgICAgdW5zaWduZWQgdGFibGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV90YWJsZSA/
IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihtX3RhYmxlKVt0YWJsZVNpemVPZmZzZXRdIDog
MDsgfQ0KICAgICAgICB2b2lkIHNldFRhYmxlU2l6ZSh1bnNpZ25lZCBzaXplKSBjb25zdCB7ICgo
dm9pZCkwKTsgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1fdGFibGUpW3RhYmxlU2l6ZU9m
ZnNldF0gPSBzaXplOyB9DQogICAgICAgIHVuc2lnbmVkIHRhYmxlU2l6ZU1hc2soKSBjb25zdCB7
ICgodm9pZCkwKTsgcmV0dXJuIG1fdGFibGUgPyByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4o
bV90YWJsZSlbdGFibGVTaXplTWFza09mZnNldF0gOiAwOyB9DQogICAgICAgIHZvaWQgc2V0VGFi
bGVTaXplTWFzayh1bnNpZ25lZCBtYXNrKSB7ICgodm9pZCkwKTsgcmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZCo+KG1fdGFibGUpW3RhYmxlU2l6ZU1hc2tPZmZzZXRdID0gbWFzazsgfQ0KICAgICAg
ICB1bnNpZ25lZCBrZXlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUgPyByZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkKj4obV90YWJsZSlba2V5Q291bnRPZmZzZXRdIDogMDsgfQ0KICAgICAg
ICB2b2lkIHNldEtleUNvdW50KHVuc2lnbmVkIGNvdW50KSBjb25zdCB7ICgodm9pZCkwKTsgcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1fdGFibGUpW2tleUNvdW50T2Zmc2V0XSA9IGNvdW50
OyB9DQogICAgICAgIHVuc2lnbmVkIGRlbGV0ZWRDb3VudCgpIGNvbnN0IHsgKCh2b2lkKTApOyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1fdGFibGUpW2RlbGV0ZWRDb3VudE9m
ZnNldF07IH0NCiAgICAgICAgdm9pZCBzZXREZWxldGVkQ291bnQodW5zaWduZWQgY291bnQpIGNv
bnN0IHsgKCh2b2lkKTApOyByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obV90YWJsZSlbZGVs
ZXRlZENvdW50T2Zmc2V0XSA9IGNvdW50OyB9DQoNCiAgICAgICAgVmFsdWVUeXBlKiBtX3RhYmxl
IHsgbnVsbHB0ciB9Ow0KDQoNCg0KDQoNCg0KDQojbGluZSA2MDYgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQoN
Cg0KDQojbGluZSA2MTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIGlu
bGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZSgpDQogICAgICAgIDogbV90YWJsZShudWxscHRyKQ0K
DQoNCg0KI2xpbmUgNjIwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCg0KDQojbGluZSA2MjMgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5o
Ig0KICAgIHsNCiAgICB9DQoNCiAgICBpbmxpbmUgdW5zaWduZWQgZG91YmxlSGFzaCh1bnNpZ25l
ZCBrZXkpDQogICAgew0KICAgICAgICBrZXkgPSB+a2V5ICsgKGtleSA+PiAyMyk7DQogICAgICAg
IGtleSBePSAoa2V5IDw8IDEyKTsNCiAgICAgICAga2V5IF49IChrZXkgPj4gNyk7DQogICAgICAg
IGtleSBePSAoa2V5IDw8IDIpOw0KICAgICAgICBrZXkgXj0gKGtleSA+PiAyMCk7DQogICAgICAg
IHJldHVybiBrZXk7DQogICAgfQ0KDQoNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+DQogICAgaW5saW5lIHZvaWQgSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpjaGVja0tleShjb25zdCBUJikNCiAgICB7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDY2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPg0KICAgIGlubGluZSBh
dXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6bG9va3VwKGNvbnN0IFQmIGtleSkgLT4gVmFsdWVUeXBlKg0KICAgIHsN
CiAgICAgICAgcmV0dXJuIGlubGluZUxvb2t1cDxIYXNoVHJhbnNsYXRvcj4oa2V5KTsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBUPg0KICAgIF9fZm9yY2VpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChj
b25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoNCiAgICB7DQogICAgICAgIGNoZWNrS2V5PEhhc2hU
cmFuc2xhdG9yPihrZXkpOw0KDQogICAgICAgIHVuc2lnbmVkIGsgPSAwOw0KICAgICAgICBWYWx1
ZVR5cGUqIHRhYmxlID0gbV90YWJsZTsNCiAgICAgICAgaWYgKCF0YWJsZSkNCiAgICAgICAgICAg
IHJldHVybiBudWxscHRyOw0KDQogICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gdGFibGVTaXpl
TWFzaygpOw0KICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsN
CiAgICAgICAgdW5zaWduZWQgaSA9IGggJiBzaXplTWFzazsNCg0KDQoNCg0KI2xpbmUgNjg4ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9I
YXNoVGFibGUuaCINCg0KDQoNCiNsaW5lIDY5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgd2hp
bGUgKDEpIHsNCiAgICAgICAgICAgIFZhbHVlVHlwZSogZW50cnkgPSB0YWJsZSArIGk7DQogICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmIChIYXNoRnVuY3Rpb25z
OjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgew0KICAgICAgICAgICAgICAgIGlmIChI
YXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpDQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsNCiAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQ0KICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
aWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCFpc0RlbGV0ZWRC
dWNrZXQoKmVudHJ5KSAmJiBIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0
KCplbnRyeSksIGtleSkpDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsNCiAgICAg
ICAgICAgIH0NCg0KDQoNCiNsaW5lIDcxNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCg0KDQojbGluZSA3MTgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L0hhc2hUYWJsZS5oIg0KDQogICAgICAgICAgICBpZiAoayA9PSAwKQ0KICAgICAgICAgICAgICAg
IGsgPSAxIHwgZG91YmxlSGFzaChoKTsNCiAgICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1h
c2s7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPg0KICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxL
ZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6
bG9va3VwRm9yV3JpdGluZyhjb25zdCBUJiBrZXkpIC0+IExvb2t1cFR5cGUNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7DQoN
CiAgICAgICAgdW5zaWduZWQgayA9IDA7DQogICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3Rh
YmxlOw0KICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IHRhYmxlU2l6ZU1hc2soKTsNCiAgICAg
ICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7DQogICAgICAgIHVuc2ln
bmVkIGkgPSBoICYgc2l6ZU1hc2s7DQoNCg0KDQoNCiNsaW5lIDc0MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoN
Cg0KDQojbGluZSA3NDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQogICAgICAgIFZhbHVlVHlwZSogZGVsZXRl
ZEVudHJ5ID0gbnVsbHB0cjsNCg0KICAgICAgICB3aGlsZSAoMSkgew0KICAgICAgICAgICAgVmFs
dWVUeXBlKiBlbnRyeSA9IHRhYmxlICsgaTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQog
ICAgICAgICAgICBpZiAoSGFzaEZ1bmN0aW9uczo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQpIHsNCiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQ0KICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTG9va3VwVHlwZShkZWxldGVkRW50cnkgPyBkZWxldGVkRW50
cnkgOiBlbnRyeSwgZmFsc2UpOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlm
IChIYXNoVHJhbnNsYXRvcjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkp
DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBMb29rdXBUeXBlKGVudHJ5LCB0cnVlKTsNCiAg
ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRy
eSkpDQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Ow0KICAgICAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQ0K
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTG9va3VwVHlwZShkZWxldGVkRW50cnkgPyBkZWxl
dGVkRW50cnkgOiBlbnRyeSwgZmFsc2UpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
aWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQ0KICAgICAgICAgICAgICAgICAgICBkZWxldGVk
RW50cnkgPSBlbnRyeTsNCiAgICAgICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNsYXRvcjo6
ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpDQogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBMb29rdXBUeXBlKGVudHJ5LCB0cnVlKTsNCiAgICAgICAgICAgIH0NCg0KDQoN
CiNsaW5lIDc3NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCg0KDQojbGluZSA3NzkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0K
DQogICAgICAgICAgICBpZiAoayA9PSAwKQ0KICAgICAgICAgICAgICAgIGsgPSAxIHwgZG91Ymxl
SGFzaChoKTsNCiAgICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1hc2s7DQogICAgICAgIH0N
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9y
LCB0eXBlbmFtZSBUPg0KICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRy
YWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZnVsbExvb2t1cEZvcldy
aXRpbmcoY29uc3QgVCYga2V5KSAtPiBGdWxsTG9va3VwVHlwZQ0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsNCg0KICAgICAg
ICB1bnNpZ25lZCBrID0gMDsNCiAgICAgICAgVmFsdWVUeXBlKiB0YWJsZSA9IG1fdGFibGU7DQog
ICAgICAgIHVuc2lnbmVkIHNpemVNYXNrID0gdGFibGVTaXplTWFzaygpOw0KICAgICAgICB1bnNp
Z25lZCBoID0gSGFzaFRyYW5zbGF0b3I6Omhhc2goa2V5KTsNCiAgICAgICAgdW5zaWduZWQgaSA9
IGggJiBzaXplTWFzazsNCg0KDQoNCg0KI2xpbmUgODAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCg0KDQoNCiNs
aW5lIDgwNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkg
PSBudWxscHRyOw0KDQogICAgICAgIHdoaWxlICgxKSB7DQogICAgICAgICAgICBWYWx1ZVR5cGUq
IGVudHJ5ID0gdGFibGUgKyBpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAg
ICAgIGlmIChIYXNoRnVuY3Rpb25zOjpzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCkgew0K
ICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0KCplbnRyeSkpDQogICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGRlbGV0ZWRFbnRyeSA/IGRlbGV0ZWRFbnRy
eSA6IGVudHJ5LCBmYWxzZSwgaCk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
aWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5
KSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQoZW50cnksIHRy
dWUsIGgpOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRC
dWNrZXQoKmVudHJ5KSkNCiAgICAgICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7
DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5QnVja2V0
KCplbnRyeSkpDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGRl
bGV0ZWRFbnRyeSA/IGRlbGV0ZWRFbnRyeSA6IGVudHJ5LCBmYWxzZSwgaCk7DQogICAgICAgICAg
ICANCiAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpDQogICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5Ow0KICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKEhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoKmVudHJ5KSwga2V5
KSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VMb29rdXBSZXN1bHQoZW50cnksIHRy
dWUsIGgpOw0KICAgICAgICAgICAgfQ0KDQoNCg0KI2xpbmUgODM2ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCg0K
DQoNCiNsaW5lIDg0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgICAgIGlmIChrID09IDApDQog
ICAgICAgICAgICAgICAgayA9IDEgfCBkb3VibGVIYXNoKGgpOw0KICAgICAgICAgICAgaSA9IChp
ICsgaykgJiBzaXplTWFzazsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEV4dHJh
Pg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFVuaXF1ZUZvckluaXRpYWxp
emF0aW9uKFQmJiBrZXksIEV4dHJhJiYgZXh0cmEpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7
DQoNCiAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7DQoNCiAgICAgICAgaW52
YWxpZGF0ZUl0ZXJhdG9ycygpOw0KDQogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3Rl
bmN5KCk7DQoNCiAgICAgICAgdW5zaWduZWQgayA9IDA7DQogICAgICAgIFZhbHVlVHlwZSogdGFi
bGUgPSBtX3RhYmxlOw0KICAgICAgICB1bnNpZ25lZCBzaXplTWFzayA9IHRhYmxlU2l6ZU1hc2so
KTsNCiAgICAgICAgdW5zaWduZWQgaCA9IEhhc2hUcmFuc2xhdG9yOjpoYXNoKGtleSk7DQogICAg
ICAgIHVuc2lnbmVkIGkgPSBoICYgc2l6ZU1hc2s7DQoNCg0KDQoNCiNsaW5lIDg2OSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRh
YmxlLmgiDQoNCg0KDQojbGluZSA4NzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQogICAgICAgIFZhbHVlVHlw
ZSogZW50cnk7DQogICAgICAgIHdoaWxlICgxKSB7DQogICAgICAgICAgICBlbnRyeSA9IHRhYmxl
ICsgaTsNCg0KICAgICAgICAgICAgaWYgKGlzRW1wdHlCdWNrZXQoKmVudHJ5KSkNCiAgICAgICAg
ICAgICAgICBicmVhazsNCg0KDQoNCg0KI2xpbmUgODg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCg0KDQoNCiNs
aW5lIDg4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgICAgIGlmIChrID09IDApDQogICAgICAg
ICAgICAgICAgayA9IDEgfCBkb3VibGVIYXNoKGgpOw0KICAgICAgICAgICAgaSA9IChpICsgaykg
JiBzaXplTWFzazsNCiAgICAgICAgfQ0KDQogICAgICAgIEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xh
dGUoKmVudHJ5LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwgc3RkOjpmb3J3YXJkPEV4dHJhPihleHRy
YSkpOw0KDQogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7DQogICAgfQ0K
DQogICAgdGVtcGxhdGU8Ym9vbCBlbXB0eVZhbHVlSXNaZXJvPiBzdHJ1Y3QgSGFzaFRhYmxlQnVj
a2V0SW5pdGlhbGl6ZXI7DQoNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVGFibGVCdWNrZXRJ
bml0aWFsaXplcjxmYWxzZT4gew0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIFZhbHVlPiBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFZhbHVlJiBidWNrZXQpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIFRyYWl0czo6dGVtcGxhdGUgY29uc3RydWN0RW1wdHlWYWx1ZTxU
cmFpdHM+KGJ1Y2tldCk7DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSGFzaFRhYmxlQnVja2V0SW5pdGlhbGl6ZXI8dHJ1ZT4gew0KICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFZhbHVlPiBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFZh
bHVlJiBidWNrZXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICANCiAgICAgICAgICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oc3RkOjphZGRy
ZXNzb2YoYnVja2V0KSksIDAsIHNpemVvZihidWNrZXQpKTsNCiAgICAgICAgfQ0KICAgIH07DQog
ICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVu
YW1lIEtleVRyYWl0cz4NCiAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmluaXRpYWxpemVCdWNr
ZXQoVmFsdWVUeXBlJiBidWNrZXQpDQogICAgew0KICAgICAgICBIYXNoVGFibGVCdWNrZXRJbml0
aWFsaXplcjxUcmFpdHM6OmVtcHR5VmFsdWVJc1plcm8+Ojp0ZW1wbGF0ZSBpbml0aWFsaXplPFRy
YWl0cz4oYnVja2V0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5
cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4NCiAgICBfX2ZvcmNl
aW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGQoVCYmIGtleSwgRXh0cmEmJiBleHRyYSkgLT4gQWRk
UmVzdWx0DQogICAgew0KICAgICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsNCg0K
ICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7DQoNCiAgICAgICAgaWYgKCFtX3RhYmxlKQ0K
ICAgICAgICAgICAgZXhwYW5kKG51bGxwdHIpOw0KDQogICAgICAgIGludGVybmFsQ2hlY2tUYWJs
ZUNvbnNpc3RlbmN5KCk7DQoNCiAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAgIHVuc2lnbmVk
IGsgPSAwOw0KICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJsZTsNCiAgICAgICAgdW5z
aWduZWQgc2l6ZU1hc2sgPSB0YWJsZVNpemVNYXNrKCk7DQogICAgICAgIHVuc2lnbmVkIGggPSBI
YXNoVHJhbnNsYXRvcjo6aGFzaChrZXkpOw0KICAgICAgICB1bnNpZ25lZCBpID0gaCAmIHNpemVN
YXNrOw0KDQoNCg0KDQojbGluZSA5NTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQoNCg0KI2xpbmUgOTU0ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9I
YXNoVGFibGUuaCINCg0KICAgICAgICBWYWx1ZVR5cGUqIGRlbGV0ZWRFbnRyeSA9IG51bGxwdHI7
DQogICAgICAgIFZhbHVlVHlwZSogZW50cnk7DQogICAgICAgIHdoaWxlICgxKSB7DQogICAgICAg
ICAgICBlbnRyeSA9IHRhYmxlICsgaTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICBpZiAoSGFzaEZ1bmN0aW9uczo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQp
IHsNCiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQ0KICAgICAgICAg
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAo
SGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBrZXkpKQ0K
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRv
cihlbnRyeSksIGZhbHNlKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAo
aXNEZWxldGVkQnVja2V0KCplbnRyeSkpDQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRy
eSA9IGVudHJ5Ow0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAoaXNF
bXB0eUJ1Y2tldCgqZW50cnkpKQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQoKmVudHJ5KSkNCiAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlZEVudHJ5ID0gZW50cnk7DQogICAgICAgICAgICAgICAgZWxz
ZSBpZiAoSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpLCBr
ZXkpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJ
dGVyYXRvcihlbnRyeSksIGZhbHNlKTsNCiAgICAgICAgICAgIH0NCg0KDQoNCiNsaW5lIDk4MyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
SGFzaFRhYmxlLmgiDQoNCg0KDQojbGluZSA5ODcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQogICAgICAgICAg
ICBpZiAoayA9PSAwKQ0KICAgICAgICAgICAgICAgIGsgPSAxIHwgZG91YmxlSGFzaChoKTsNCiAg
ICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1hc2s7DQogICAgICAgIH0NCg0KICAgICAgICBp
ZiAoZGVsZXRlZEVudHJ5KSB7DQogICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCpkZWxldGVk
RW50cnkpOw0KICAgICAgICAgICAgZW50cnkgPSBkZWxldGVkRW50cnk7DQogICAgICAgICAgICBz
ZXREZWxldGVkQ291bnQoZGVsZXRlZENvdW50KCkgLSAxKTsNCiAgICAgICAgfQ0KDQogICAgICAg
IEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUoKmVudHJ5LCBzdGQ6OmZvcndhcmQ8VD4oa2V5KSwg
c3RkOjpmb3J3YXJkPEV4dHJhPihleHRyYSkpOw0KICAgICAgICBzZXRLZXlDb3VudChrZXlDb3Vu
dCgpICsgMSk7DQogICAgICAgIA0KICAgICAgICBpZiAoc2hvdWxkRXhwYW5kKCkpDQogICAgICAg
ICAgICBlbnRyeSA9IGV4cGFuZChlbnRyeSk7DQoNCiAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxl
Q29uc2lzdGVuY3koKTsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtu
b3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRXh0
cmE+DQogICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUoVCYmIGtl
eSwgRXh0cmEmJiBleHRyYSkgLT4gQWRkUmVzdWx0DQogICAgew0KICAgICAgICBjaGVja0tleTxI
YXNoVHJhbnNsYXRvcj4oa2V5KTsNCg0KICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7DQoN
CiAgICAgICAgaWYgKCFtX3RhYmxlKQ0KICAgICAgICAgICAgZXhwYW5kKCk7DQoNCiAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsNCg0KICAgICAgICBGdWxsTG9va3VwVHlw
ZSBsb29rdXBSZXN1bHQgPSBmdWxsTG9va3VwRm9yV3JpdGluZzxIYXNoVHJhbnNsYXRvcj4oa2V5
KTsNCg0KICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbG9va3VwUmVzdWx0LmZpcnN0LmZpcnN0
Ow0KICAgICAgICBib29sIGZvdW5kID0gbG9va3VwUmVzdWx0LmZpcnN0LnNlY29uZDsNCiAgICAg
ICAgdW5zaWduZWQgaCA9IGxvb2t1cFJlc3VsdC5zZWNvbmQ7DQogICAgICAgIA0KICAgICAgICBp
ZiAoZm91bmQpDQogICAgICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVy
YXRvcihlbnRyeSksIGZhbHNlKTsNCiAgICAgICAgDQogICAgICAgIGlmIChpc0RlbGV0ZWRCdWNr
ZXQoKmVudHJ5KSkgew0KICAgICAgICAgICAgaW5pdGlhbGl6ZUJ1Y2tldCgqZW50cnkpOw0KICAg
ICAgICAgICAgc2V0RGVsZXRlZENvdW50KGRlbGV0ZWRDb3VudCgpIC0gMSk7DQogICAgICAgIH0N
Cg0KICAgICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwgc3RkOjpmb3J3YXJk
PFQ+KGtleSksIHN0ZDo6Zm9yd2FyZDxFeHRyYT4oZXh0cmEpLCBoKTsNCiAgICAgICAgc2V0S2V5
Q291bnQoa2V5Q291bnQoKSArIDEpOw0KDQogICAgICAgIGlmIChzaG91bGRFeHBhbmQoKSkNCiAg
ICAgICAgICAgIGVudHJ5ID0gZXhwYW5kKGVudHJ5KTsNCg0KICAgICAgICBpbnRlcm5hbENoZWNr
VGFibGVDb25zaXN0ZW5jeSgpOw0KDQogICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3du
R29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBpbmxp
bmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OnJlaW5zZXJ0KFZhbHVlVHlwZSYmIGVudHJ5KSAtPiBWYWx1ZVR5
cGUqDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgKCh2b2lkKTApOw0KDQoNCiNsaW5lIDEwNTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KDQoNCiNsaW5lIDEw
NjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL0hhc2hUYWJsZS5oIg0KDQogICAgICAgIFZhbHVlKiBuZXdFbnRyeSA9IGxvb2t1cEZvcldy
aXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuZmlyc3Q7DQogICAgICAgIG5ld0VudHJ5
LT5+VmFsdWUoKTsNCiAgICAgICAgbmV3IChOb3ROdWxsLCBuZXdFbnRyeSkgVmFsdWVUeXBlKHN0
ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oZW50cnkpKTsNCg0KICAgICAgICByZXR1
cm4gbmV3RW50cnk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
SGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IA0KICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNv
bnN0IFQmIGtleSkgLT4gaXRlcmF0b3INCiAgICB7DQogICAgICAgIGlmICghbV90YWJsZSkNCiAg
ICAgICAgICAgIHJldHVybiBlbmQoKTsNCg0KICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gbG9v
a3VwPEhhc2hUcmFuc2xhdG9yPihrZXkpOw0KICAgICAgICBpZiAoIWVudHJ5KQ0KICAgICAgICAg
ICAgcmV0dXJuIGVuZCgpOw0KDQogICAgICAgIHJldHVybiBtYWtlS25vd25Hb29kSXRlcmF0b3Io
ZW50cnkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hU
cmFuc2xhdG9yLCB0eXBlbmFtZSBUPiANCiAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZmluZChjb25zdCBU
JiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yDQogICAgew0KICAgICAgICBpZiAoIW1fdGFi
bGUpDQogICAgICAgICAgICByZXR1cm4gZW5kKCk7DQoNCiAgICAgICAgVmFsdWVUeXBlKiBlbnRy
eSA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4odGhpcyktPmxvb2t1cDxIYXNoVHJhbnNsYXRvcj4o
a2V5KTsNCiAgICAgICAgaWYgKCFlbnRyeSkNCiAgICAgICAgICAgIHJldHVybiBlbmQoKTsNCg0K
ICAgICAgICByZXR1cm4gbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoZW50cnkpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBUPiANCiAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYga2V5KSBjb25z
dA0KICAgIHsNCiAgICAgICAgaWYgKCFtX3RhYmxlKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KDQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHRoaXMpLT5sb29rdXA8
SGFzaFRyYW5zbGF0b3I+KGtleSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICB2b2lkIEhhc2hU
YWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJh
aXRzPjo6cmVtb3ZlQW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soVmFs
dWVUeXBlKiBwb3MpDQogICAgew0KICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKCk7DQogICAg
ICAgIHJlbW92ZShwb3MpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdm9pZCBIYXNoVGFibGU8
S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46
OnJlbW92ZUFuZEludmFsaWRhdGUoVmFsdWVUeXBlKiBwb3MpDQogICAgew0KICAgICAgICBpbnZh
bGlkYXRlSXRlcmF0b3JzKCk7DQogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5
KCk7DQogICAgICAgIHJlbW92ZShwb3MpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdm9pZCBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46OnJlbW92ZShWYWx1ZVR5cGUqIHBvcykNCiAgICB7DQoNCg0KI2xpbmUgMTEyNyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
SGFzaFRhYmxlLmgiDQoNCg0KI2xpbmUgMTEzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgZGVs
ZXRlQnVja2V0KCpwb3MpOw0KICAgICAgICBzZXREZWxldGVkQ291bnQoZGVsZXRlZENvdW50KCkg
KyAxKTsNCiAgICAgICAgc2V0S2V5Q291bnQoa2V5Q291bnQoKSAtIDEpOw0KDQogICAgICAgIGlm
IChzaG91bGRTaHJpbmsoKSkNCiAgICAgICAgICAgIHNocmluaygpOw0KDQogICAgICAgIGludGVy
bmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBpbmxp
bmUgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZShpdGVyYXRvciBpdCkNCiAgICB7DQogICAgICAgIGlm
IChpdCA9PSBlbmQoKSkNCiAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICByZW1vdmVBbmRJ
bnZhbGlkYXRlKGNvbnN0X2Nhc3Q8VmFsdWVUeXBlKj4oaXQubV9pdGVyYXRvci5tX3Bvc2l0aW9u
KSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBpbmxpbmUgdm9pZCBIYXNoVGFibGU8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92
ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXRlcmF0b3IgaXQpDQogICAgew0KICAgICAg
ICBpZiAoaXQgPT0gZW5kKCkpDQogICAgICAgICAgICByZXR1cm47DQoNCiAgICAgICAgcmVtb3Zl
QW5kSW52YWxpZGF0ZVdpdGhvdXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soY29uc3RfY2FzdDxWYWx1
ZVR5cGUqPihpdC5tX2l0ZXJhdG9yLm1fcG9zaXRpb24pKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0K
ICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVtb3ZlV2l0aG91dEVudHJ5Q29uc2lzdGVuY3lD
aGVjayhjb25zdF9pdGVyYXRvciBpdCkNCiAgICB7DQogICAgICAgIGlmIChpdCA9PSBlbmQoKSkN
CiAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICByZW1vdmVBbmRJbnZhbGlkYXRlV2l0aG91
dEVudHJ5Q29uc2lzdGVuY3lDaGVjayhjb25zdF9jYXN0PFZhbHVlVHlwZSo+KGl0Lm1fcG9zaXRp
b24pKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIGlubGluZSB2b2lkIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVt
b3ZlKGNvbnN0IEtleVR5cGUmIGtleSkNCiAgICB7DQogICAgICAgIHJlbW92ZShmaW5kKGtleSkp
Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4NCiAg
ICBpbmxpbmUgYm9vbCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnJlbW92ZUlmKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
DQogICAgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICB1bnNpZ25lZCBy
ZW1vdmVkQnVja2V0Q291bnQgPSAwOw0KICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJs
ZTsNCg0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZVNpemUoKTsgaS0tOykgew0KICAg
ICAgICAgICAgVmFsdWVUeXBlJiBidWNrZXQgPSB0YWJsZVtpXTsNCiAgICAgICAgICAgIGlmIChp
c0VtcHR5T3JEZWxldGVkQnVja2V0KGJ1Y2tldCkpDQogICAgICAgICAgICAgICAgY29udGludWU7
DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICghZnVuY3RvcihidWNrZXQpKQ0KICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBkZWxldGVCdWNr
ZXQoYnVja2V0KTsNCiAgICAgICAgICAgICsrcmVtb3ZlZEJ1Y2tldENvdW50Ow0KICAgICAgICB9
DQogICAgICAgIGlmIChyZW1vdmVkQnVja2V0Q291bnQpIHsNCiAgICAgICAgICAgIHNldERlbGV0
ZWRDb3VudChkZWxldGVkQ291bnQoKSArIHJlbW92ZWRCdWNrZXRDb3VudCk7DQogICAgICAgICAg
ICBzZXRLZXlDb3VudChrZXlDb3VudCgpIC0gcmVtb3ZlZEJ1Y2tldENvdW50KTsNCiAgICAgICAg
fQ0KDQogICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkNCiAgICAgICAgICAgIHNocmlua1RvQmVz
dFNpemUoKTsNCiAgICAgICAgDQogICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5
KCk7DQogICAgICAgIHJldHVybiByZW1vdmVkQnVja2V0Q291bnQ7DQogICAgfQ0KDQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4NCiAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6YWxsb2NhdGVUYWJsZSh1bnNpZ25lZCBzaXplKSAtPiBW
YWx1ZVR5cGUqDQogICAgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KCEobWV0YWRhdGFTaXplICUg
YWxpZ25vZihWYWx1ZVR5cGUpKSk7DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpZiAo
VHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvKQ0KICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8VmFsdWVUeXBlKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KEhhc2hUYWJsZU1hbGxvYzo6emVy
b2VkTWFsbG9jKG1ldGFkYXRhU2l6ZSArIHNpemUgKiBzaXplb2YoVmFsdWVUeXBlKSkpICsgbWV0
YWRhdGFTaXplKTsNCg0KICAgICAgICBWYWx1ZVR5cGUqIHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VmFsdWVUeXBlKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KEhhc2hUYWJsZU1hbGxvYzo6bWFsbG9j
KG1ldGFkYXRhU2l6ZSArIHNpemUgKiBzaXplb2YoVmFsdWVUeXBlKSkpICsgbWV0YWRhdGFTaXpl
KTsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykNCiAgICAgICAg
ICAgIGluaXRpYWxpemVCdWNrZXQocmVzdWx0W2ldKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJh
Y3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpkZWFsbG9jYXRlVGFibGUo
VmFsdWVUeXBlKiB0YWJsZSkNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIHNpemUgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkKj4odGFibGUpW3RhYmxlU2l6ZU9mZnNldF07DQogICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsNCiAgICAgICAgICAgIGlmICghaXNE
ZWxldGVkQnVja2V0KHRhYmxlW2ldKSkNCiAgICAgICAgICAgICAgICB0YWJsZVtpXS5+VmFsdWVU
eXBlKCk7DQogICAgICAgIH0NCiAgICAgICAgSGFzaFRhYmxlTWFsbG9jOjpmcmVlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHRhYmxlKSAtIG1ldGFkYXRhU2l6ZSk7DQogICAgfQ0KDQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4NCiAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6ZXhwYW5kKFZhbHVlVHlwZSogZW50cnkpIC0+IFZhbHVl
VHlwZSoNCiAgICB7DQogICAgICAgIGlmIChLZXlUcmFpdHM6Omhhc0lzUmVsZWFzZWRXZWFrVmFs
dWVGdW5jdGlvbikNCiAgICAgICAgICAgIGRlbGV0ZVJlbGVhc2VkV2Vha0J1Y2tldHMoKTsNCg0K
ICAgICAgICB1bnNpZ25lZCBuZXdTaXplOw0KICAgICAgICB1bnNpZ25lZCBvbGRTaXplID0gdGFi
bGVTaXplKCk7DQogICAgICAgIGlmICghb2xkU2l6ZSkNCiAgICAgICAgICAgIG5ld1NpemUgPSBL
ZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7DQogICAgICAgIGVsc2UgaWYgKG11c3RSZWhhc2hJ
blBsYWNlKCkpDQogICAgICAgICAgICBuZXdTaXplID0gb2xkU2l6ZTsNCiAgICAgICAgZWxzZQ0K
ICAgICAgICAgICAgbmV3U2l6ZSA9IG9sZFNpemUgKiAyOw0KDQogICAgICAgIHJldHVybiByZWhh
c2gobmV3U2l6ZSwgZW50cnkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgY29uc3RleHByIHVu
c2lnbmVkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6Y29tcHV0ZUJlc3RUYWJsZVNpemUodW5zaWduZWQga2V5Q291bnQp
DQogICAgew0KICAgICAgICB1bnNpZ25lZCBiZXN0VGFibGVTaXplID0gV1RGOjpyb3VuZFVwVG9Q
b3dlck9mVHdvKGtleUNvdW50KTsNCg0KICAgICAgICBpZiAoSGFzaFRhYmxlU2l6ZVBvbGljeTo6
c2hvdWxkRXhwYW5kKGtleUNvdW50LCBiZXN0VGFibGVTaXplKSkNCiAgICAgICAgICAgIGJlc3RU
YWJsZVNpemUgKj0gMjsNCg0KICAgICAgICBhdXRvIGFib3ZlVGhyZXNob2xkRm9yRWFnZXJFeHBh
bnNpb24gPSBbXShkb3VibGUgbG9hZEZhY3RvciwgdW5zaWduZWQga2V5Q291bnQsIHVuc2lnbmVk
IHRhYmxlU2l6ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIGRvdWJsZSBt
YXhMb2FkUmF0aW8gPSBsb2FkRmFjdG9yOw0KICAgICAgICAgICAgZG91YmxlIG1pbkxvYWRSYXRp
byA9IDEuMCAvIG1pbkxvYWQ7DQogICAgICAgICAgICBkb3VibGUgYXZlcmFnZUxvYWRSYXRpbyA9
IChtYXhMb2FkUmF0aW8gKyBtaW5Mb2FkUmF0aW8pIC8gMjsNCiAgICAgICAgICAgIGRvdWJsZSBo
YWxmV2F5QmV0d2VlbkF2ZXJhZ2VBbmRNYXhMb2FkUmF0aW8gPSAoYXZlcmFnZUxvYWRSYXRpbyAr
IG1heExvYWRSYXRpbykgLyAyOw0KICAgICAgICAgICAgcmV0dXJuIGtleUNvdW50ID49IHRhYmxl
U2l6ZSAqIGhhbGZXYXlCZXR3ZWVuQXZlcmFnZUFuZE1heExvYWRSYXRpbzsNCiAgICAgICAgfTsN
Cg0KICAgICAgICBpZiAoYmVzdFRhYmxlU2l6ZSA8PSBtYXhTbWFsbFRhYmxlQ2FwYWNpdHkpIHsN
CiAgICAgICAgICAgIGNvbnN0ZXhwciBkb3VibGUgc21hbGxMb2FkRmFjdG9yID0gc3RhdGljX2Nh
c3Q8ZG91YmxlPihzbWFsbE1heExvYWROdW1lcmF0b3IpIC8gc21hbGxNYXhMb2FkRGVub21pbmF0
b3I7DQogICAgICAgICAgICBpZiAoYWJvdmVUaHJlc2hvbGRGb3JFYWdlckV4cGFuc2lvbihzbWFs
bExvYWRGYWN0b3IsIGtleUNvdW50LCBiZXN0VGFibGVTaXplKSkNCiAgICAgICAgICAgICAgICBi
ZXN0VGFibGVTaXplICo9IDI7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBjb25zdGV4
cHIgZG91YmxlIGxhcmdlTG9hZEZhY3RvciA9IHN0YXRpY19jYXN0PGRvdWJsZT4obGFyZ2VNYXhM
b2FkTnVtZXJhdG9yKSAvIGxhcmdlTWF4TG9hZERlbm9taW5hdG9yOw0KICAgICAgICAgICAgaWYg
KGFib3ZlVGhyZXNob2xkRm9yRWFnZXJFeHBhbnNpb24obGFyZ2VMb2FkRmFjdG9yLCBrZXlDb3Vu
dCwgYmVzdFRhYmxlU2l6ZSkpDQogICAgICAgICAgICAgICAgYmVzdFRhYmxlU2l6ZSAqPSAyOw0K
ICAgICAgICB9DQogICAgICAgIHVuc2lnbmVkIG1pbmltdW1UYWJsZVNpemUgPSBLZXlUcmFpdHM6
Om1pbmltdW1UYWJsZVNpemU7DQogICAgICAgIHJldHVybiBzdGQ6Om1heChiZXN0VGFibGVTaXpl
LCBtaW5pbXVtVGFibGVTaXplKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPg0KICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpzaHJpbmtUb0Jlc3RTaXplKCkNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIG1pbmltdW1U
YWJsZVNpemUgPSBLZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7DQogICAgICAgIHJlaGFzaChz
dGQ6Om1heChtaW5pbXVtVGFibGVTaXplLCBjb21wdXRlQmVzdFRhYmxlU2l6ZShrZXlDb3VudCgp
KSksIG51bGxwdHIpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdm9pZCBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmRl
bGV0ZVJlbGVhc2VkV2Vha0J1Y2tldHMoKQ0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgdGFibGVT
aXplID0gdGhpcy0+dGFibGVTaXplKCk7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0YWJsZVNpemU7ICsraSkgew0KICAgICAgICAgICAgYXV0byYgZW50cnkgPSBtX3RhYmxlW2ld
Ow0KICAgICAgICAgICAgaWYgKGlzUmVsZWFzZWRXZWFrQnVja2V0KGVudHJ5KSkgew0KICAgICAg
ICAgICAgICAgIGRlbGV0ZUJ1Y2tldChlbnRyeSk7DQogICAgICAgICAgICAgICAgc2V0RGVsZXRl
ZENvdW50KGRlbGV0ZWRDb3VudCgpICsgMSk7DQogICAgICAgICAgICAgICAgc2V0S2V5Q291bnQo
a2V5Q291bnQoKSAtIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9y
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRy
YWl0cz4NCiAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6cmVoYXNoKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSwg
VmFsdWVUeXBlKiBlbnRyeSkgLT4gVmFsdWVUeXBlKg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWxD
aGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCk7DQoNCiAgICAgICAgdW5zaWduZWQgb2xk
VGFibGVTaXplID0gdGFibGVTaXplKCk7DQogICAgICAgIFZhbHVlVHlwZSogb2xkVGFibGUgPSBt
X3RhYmxlOw0KDQoNCg0KDQojbGluZSAxMzIwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCg0KDQoNCg0KI2xpbmUg
MTMyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgdW5zaWduZWQgb2xkS2V5Q291bnQgPSBrZXlD
b3VudCgpOw0KICAgICAgICBtX3RhYmxlID0gYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNpemUpOw0K
ICAgICAgICBzZXRUYWJsZVNpemUobmV3VGFibGVTaXplKTsNCiAgICAgICAgc2V0VGFibGVTaXpl
TWFzayhuZXdUYWJsZVNpemUgLSAxKTsNCiAgICAgICAgc2V0RGVsZXRlZENvdW50KDApOw0KICAg
ICAgICBzZXRLZXlDb3VudChvbGRLZXlDb3VudCk7DQoNCiAgICAgICAgVmFsdWUqIG5ld0VudHJ5
ID0gbnVsbHB0cjsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBvbGRUYWJsZVNp
emU7ICsraSkgew0KICAgICAgICAgICAgYXV0byYgb2xkRW50cnkgPSBvbGRUYWJsZVtpXTsNCiAg
ICAgICAgICAgIGlmIChpc0RlbGV0ZWRCdWNrZXQob2xkRW50cnkpKSB7DQogICAgICAgICAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0K
DQogICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldChvbGRFbnRyeSkpIHsNCiAgICAgICAgICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAgICAgb2xkVGFibGVbaV0uflZhbHVlVHlwZSgp
Ow0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAg
ICBpZiAoaXNSZWxlYXNlZFdlYWtCdWNrZXQob2xkRW50cnkpKSB7DQogICAgICAgICAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICAgICAgICAgIG9sZEVudHJ5Ln5WYWx1ZVR5cGUoKTsNCiAgICAg
ICAgICAgICAgICBzZXRLZXlDb3VudChrZXlDb3VudCgpIC0gMSk7DQogICAgICAgICAgICAgICAg
Y29udGludWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFZhbHVlKiByZWluc2VydGVk
RW50cnkgPSByZWluc2VydChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG9sZEVu
dHJ5KSk7DQogICAgICAgICAgICBvbGRFbnRyeS5+VmFsdWVUeXBlKCk7DQogICAgICAgICAgICBp
ZiAoc3RkOjphZGRyZXNzb2Yob2xkRW50cnkpID09IGVudHJ5KSB7DQogICAgICAgICAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICAgICAgICAgIG5ld0VudHJ5ID0gcmVpbnNlcnRlZEVudHJ5Ow0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKG9sZFRhYmxlKQ0KICAgICAg
ICAgICAgSGFzaFRhYmxlTWFsbG9jOjpmcmVlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG9sZFRh
YmxlKSAtIG1ldGFkYXRhU2l6ZSk7DQoNCiAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lz
dGVuY3koKTsNCiAgICAgICAgcmV0dXJuIG5ld0VudHJ5Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQog
ICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OmNsZWFyKCkNCiAgICB7DQogICAgICAgIGludmFsaWRhdGVJdGVy
YXRvcnMoKTsNCiAgICAgICAgaWYgKCFtX3RhYmxlKQ0KICAgICAgICAgICAgcmV0dXJuOw0KDQog
ICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxlKTsNCiAgICAgICAgbV90YWJsZSA9IG51bGxw
dHI7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFj
dG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShjb25zdCBI
YXNoVGFibGUmIG90aGVyKQ0KICAgICAgICA6IG1fdGFibGUobnVsbHB0cikNCg0KDQoNCiNsaW5l
IDEzODcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL0hhc2hUYWJsZS5oIg0KDQoNCiNsaW5lIDEzOTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJsZS5oIg0KICAgIHsN
CiAgICAgICAgdW5zaWduZWQgb3RoZXJLZXlDb3VudCA9IG90aGVyLnNpemUoKTsNCiAgICAgICAg
aWYgKCFvdGhlcktleUNvdW50KQ0KICAgICAgICAgICAgcmV0dXJuOw0KDQogICAgICAgIHVuc2ln
bmVkIGJlc3RUYWJsZVNpemUgPSBjb21wdXRlQmVzdFRhYmxlU2l6ZShvdGhlcktleUNvdW50KTsN
CiAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRlVGFibGUoYmVzdFRhYmxlU2l6ZSk7DQogICAgICAg
IHNldFRhYmxlU2l6ZShiZXN0VGFibGVTaXplKTsNCiAgICAgICAgc2V0VGFibGVTaXplTWFzayhi
ZXN0VGFibGVTaXplIC0gMSk7DQogICAgICAgIHNldEtleUNvdW50KG90aGVyS2V5Q291bnQpOw0K
ICAgICAgICBzZXREZWxldGVkQ291bnQoMCk7DQoNCiAgICAgICAgZm9yIChjb25zdCBhdXRvJiBv
dGhlclZhbHVlIDogb3RoZXIpDQogICAgICAgICAgICBhZGRVbmlxdWVGb3JJbml0aWFsaXphdGlv
bjxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3Qob3RoZXJWYWx1ZSks
IG90aGVyVmFsdWUpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgdm9pZCBIYXNoVGFibGU8S2V5
LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnN3
YXAoSGFzaFRhYmxlJiBvdGhlcikNCiAgICB7DQogICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMo
KTsNCiAgICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KDQogICAgICAgIHN0ZDo6
c3dhcChtX3RhYmxlLCBvdGhlci5tX3RhYmxlKTsNCg0KDQoNCiNsaW5lIDE0MTcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hhc2hUYWJs
ZS5oIg0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+DQogICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJhdG9yPShj
b25zdCBIYXNoVGFibGUmIG90aGVyKSAtPiBIYXNoVGFibGUmDQogICAgew0KICAgICAgICBIYXNo
VGFibGUgdG1wKG90aGVyKTsNCiAgICAgICAgc3dhcCh0bXApOw0KICAgICAgICByZXR1cm4gKnRo
aXM7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUo
SGFzaFRhYmxlJiYgb3RoZXIpDQoNCg0KDQojbGluZSAxNDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCINCiAgICB7
DQogICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsNCg0KICAgICAgICBtX3RhYmxl
ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3RhYmxlLCBudWxscHRyKTsNCg0KDQoNCg0KI2xpbmUg
MTQ0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvSGFzaFRhYmxlLmgiDQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4NCiAgICBpbmxpbmUgYXV0byBI
YXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtl
eVRyYWl0cz46Om9wZXJhdG9yPShIYXNoVGFibGUmJiBvdGhlcikgLT4gSGFzaFRhYmxlJg0KICAg
IHsNCiAgICAgICAgSGFzaFRhYmxlIHRlbXAgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KG90aGVyKTsNCiAgICAgICAgc3dhcCh0ZW1wKTsNCiAgICAgICAgcmV0dXJuICp0aGlz
Ow0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0OTcgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hh
c2hUYWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTY1ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoVGFibGUuaCIN
Cg0KICAgIA0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUg
VmFsdWVUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIgOiBwdWJsaWMg
c3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWYWx1ZVR5cGUsIHN0ZDo6
cHRyZGlmZl90LCBjb25zdCBWYWx1ZVR5cGUqLCBjb25zdCBWYWx1ZVR5cGUmPiB7DQogICAgICAg
IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyKCkge30NCiAgICAgICAgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvckFkYXB0ZXIoY29uc3QgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3RfaXRl
cmF0b3ImIGltcGwpIDogbV9pbXBsKGltcGwpIHt9DQoNCiAgICAgICAgY29uc3QgVmFsdWVUeXBl
KiBnZXQoKSBjb25zdCB7IHJldHVybiAoY29uc3QgVmFsdWVUeXBlKiltX2ltcGwuZ2V0KCk7IH0N
CiAgICAgICAgY29uc3QgVmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0
KCk7IH0NCiAgICAgICAgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gZ2V0KCk7IH0NCg0KICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlciYgb3Bl
cmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQ0KICAgICAgICANCg0KICAgICAg
ICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBtX2ltcGw7DQogICAgfTsN
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlw
ZT4gc3RydWN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9y
PHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIFZhbHVlVHlwZSwgc3RkOjpwdHJkaWZmX3QsIFZh
bHVlVHlwZSosIFZhbHVlVHlwZSY+IHsNCiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVy
KCkge30NCiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhh
c2hUYWJsZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KDQogICAgICAg
IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gKFZhbHVlVHlwZSopbV9pbXBsLmdldCgp
OyB9DQogICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgp
OyB9DQogICAgICAgIFZhbHVlVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdldCgp
OyB9DQoNCiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyAr
K21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQogICAgICAgIA0KDQogICAgICAgIG9wZXJhdG9yIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4oKSB7
DQogICAgICAgICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0g
bV9pbXBsOw0KICAgICAgICAgICAgcmV0dXJuIGk7DQogICAgICAgIH0NCg0KICAgICAgICB0eXBl
bmFtZSBIYXNoVGFibGVUeXBlOjppdGVyYXRvciBtX2ltcGw7DQogICAgfTsNCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQogICAgew0KICAgICAgICByZXR1cm4g
YS5tX2ltcGwgPT0gYi5tX2ltcGw7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4NCiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNv
bnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9y
QWRhcHRlcjxULCBVPiYgYikNCiAgICB7DQogICAgICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1f
aW1wbDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KICAg
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQs
IFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpDQogICAgew0K
ICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7DQogICAgfQ0KDQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCiAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGEubV9pbXBsICE9
IGIubV9pbXBsOw0KICAgIH0NCg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+DQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQs
IFU+JiBiKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQogICAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYg
YSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBI
YXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBiKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09
IGIubV9pbXBsOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
DQogICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0
ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBi
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOw0KICAgIH0NCg0K
fSANCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvSGFzaEl0ZXJhdG9ycy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBX
VEYgew0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZUFyZywgdHlwZW5hbWUgVmFsdWVU
eXBlQXJnPg0KICAgIHN0cnVjdCBLZXlWYWx1ZVBhaXI7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBz
dHJ1Y3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3Ry
dWN0IEhhc2hUYWJsZUNvbnN0VmFsdWVzSXRlcmF0b3I7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3Ry
dWN0IEhhc2hUYWJsZUtleXNJdGVyYXRvcjsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFi
bGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFz
aFRhYmxlVmFsdWVzSXRlcmF0b3I7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVU
eXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh
cHRlcjsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBWYWx1
ZVR5cGU+IHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI7DQoNCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRU
eXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwg
S2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9y
PHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRU
eXBlPiwgc3RkOjpwdHJkaWZmX3QsIGNvbnN0IEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRU
eXBlPiosIGNvbnN0IEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPiY+IHsNCiAgICBw
cml2YXRlOg0KICAgICAgICB0eXBlZGVmIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBl
PiBWYWx1ZVR5cGU7DQogICAgcHVibGljOg0KICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0
S2V5c0l0ZXJhdG9yPEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+IEtleXM7DQog
ICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcjxIYXNoVGFibGVUeXBl
LCBLZXlUeXBlLCBNYXBwZWRUeXBlPiBWYWx1ZXM7DQoNCiAgICAgICAgSGFzaFRhYmxlQ29uc3RJ
dGVyYXRvckFkYXB0ZXIoKSB7fQ0KICAgICAgICBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRl
cihjb25zdCB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciYgaW1wbCkgOiBt
X2ltcGwoaW1wbCkge30NCg0KICAgICAgICBjb25zdCBWYWx1ZVR5cGUqIGdldCgpIGNvbnN0IHsg
cmV0dXJuIChjb25zdCBWYWx1ZVR5cGUqKW1faW1wbC5nZXQoKTsgfQ0KICAgICAgICBjb25zdCBW
YWx1ZVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQ0KICAgICAgICBj
b25zdCBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQ0KDQog
ICAgICAgIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyArK21f
aW1wbDsgcmV0dXJuICp0aGlzOyB9DQogICAgICAgIA0KDQogICAgICAgIEtleXMga2V5cygpIHsg
cmV0dXJuIEtleXMoKnRoaXMpOyB9DQogICAgICAgIFZhbHVlcyB2YWx1ZXMoKSB7IHJldHVybiBW
YWx1ZXMoKnRoaXMpOyB9DQoNCiAgICAgICAgdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgbV9pbXBsOw0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFi
bGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFz
aFRhYmxlSXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIEtleVZhbHVlUGFpcjxLZXlUeXBl
LCBNYXBwZWRUeXBlPj4gOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0
b3JfdGFnLCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4sIHN0ZDo6cHRyZGlmZl90
LCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4qLCBLZXlWYWx1ZVBhaXI8S2V5VHlw
ZSwgTWFwcGVkVHlwZT4mPiB7DQogICAgcHJpdmF0ZToNCiAgICAgICAgdHlwZWRlZiBLZXlWYWx1
ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4gVmFsdWVUeXBlOw0KICAgIHB1YmxpYzoNCiAgICAg
ICAgdHlwZWRlZiBIYXNoVGFibGVLZXlzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlwZSwg
TWFwcGVkVHlwZT4gS2V5czsNCiAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVWYWx1ZXNJdGVyYXRv
cjxIYXNoVGFibGVUeXBlLCBLZXlUeXBlLCBNYXBwZWRUeXBlPiBWYWx1ZXM7DQoNCiAgICAgICAg
SGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyKCkge30NCiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JB
ZGFwdGVyKGNvbnN0IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yJiBpbXBsKSA6IG1f
aW1wbChpbXBsKSB7fQ0KDQogICAgICAgIFZhbHVlVHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4g
KFZhbHVlVHlwZSopbV9pbXBsLmdldCgpOyB9DQogICAgICAgIFZhbHVlVHlwZSYgb3BlcmF0b3Iq
KCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9DQogICAgICAgIFZhbHVlVHlwZSogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9DQoNCiAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JB
ZGFwdGVyJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQogICAgICAg
IA0KDQogICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hU
YWJsZVR5cGUsIFZhbHVlVHlwZT4oKSB7DQogICAgICAgICAgICB0eXBlbmFtZSBIYXNoVGFibGVU
eXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOw0KICAgICAgICAgICAgcmV0dXJuIGk7DQog
ICAgICAgIH0NCg0KICAgICAgICBLZXlzIGtleXMoKSB7IHJldHVybiBLZXlzKCp0aGlzKTsgfQ0K
ICAgICAgICBWYWx1ZXMgdmFsdWVzKCkgeyByZXR1cm4gVmFsdWVzKCp0aGlzKTsgfQ0KDQogICAg
ICAgIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6Oml0ZXJhdG9yIG1faW1wbDsNCiAgICB9Ow0KDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlw
ZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IEhhc2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yIDogcHVi
bGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgS2V5VHlwZSwgc3Rk
OjpwdHJkaWZmX3QsIGNvbnN0IEtleVR5cGUqLCBjb25zdCBLZXlUeXBlJj4gew0KICAgIHByaXZh
dGU6DQogICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRh
YmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiBDb25zdEl0ZXJhdG9y
Ow0KDQogICAgcHVibGljOg0KICAgICAgICBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcihjb25z
dCBDb25zdEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KICAgICAgICANCiAgICAg
ICAgY29uc3QgS2V5VHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gJihtX2ltcGwuZ2V0KCktPmtl
eSk7IH0NCiAgICAgICAgY29uc3QgS2V5VHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KmdldCgpOyB9DQogICAgICAgIGNvbnN0IEtleVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBnZXQoKTsgfQ0KDQogICAgICAgIEhhc2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9DQogICAgICAgIA0KDQogICAgICAg
IENvbnN0SXRlcmF0b3IgbV9pbXBsOw0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1
Y3QgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0
ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIE1hcHBlZFR5cGUsIHN0ZDo6cHRyZGlmZl90LCBjb25z
dCBNYXBwZWRUeXBlKiwgY29uc3QgTWFwcGVkVHlwZSY+IHsNCiAgICBwcml2YXRlOg0KICAgICAg
ICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIEtl
eVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPj4gQ29uc3RJdGVyYXRvcjsNCg0KICAgIHB1
YmxpYzoNCiAgICAgICAgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcihjb25zdCBDb25zdEl0
ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KICAgICAgICANCiAgICAgICAgY29uc3Qg
TWFwcGVkVHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gJihtX2ltcGwuZ2V0KCktPnZhbHVlKTsg
fQ0KICAgICAgICBjb25zdCBNYXBwZWRUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAq
Z2V0KCk7IH0NCiAgICAgICAgY29uc3QgTWFwcGVkVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIGdldCgpOyB9DQoNCiAgICAgICAgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvciYg
b3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQ0KICAgICAgICANCg0KICAg
ICAgICBDb25zdEl0ZXJhdG9yIG1faW1wbDsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4g
c3RydWN0IEhhc2hUYWJsZUtleXNJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6
Zm9yd2FyZF9pdGVyYXRvcl90YWcsIEtleVR5cGUsIHN0ZDo6cHRyZGlmZl90LCBLZXlUeXBlKiwg
S2V5VHlwZSY+IHsNCiAgICBwcml2YXRlOg0KICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUl0ZXJh
dG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlw
ZT4+IEl0ZXJhdG9yOw0KICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFw
dGVyPEhhc2hUYWJsZVR5cGUsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPj4gQ29u
c3RJdGVyYXRvcjsNCg0KICAgIHB1YmxpYzoNCiAgICAgICAgSGFzaFRhYmxlS2V5c0l0ZXJhdG9y
KGNvbnN0IEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQ0KICAgICAgICANCiAgICAg
ICAgS2V5VHlwZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gJihtX2ltcGwuZ2V0KCktPmtleSk7IH0N
CiAgICAgICAgS2V5VHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9DQog
ICAgICAgIEtleVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQ0KDQog
ICAgICAgIEhhc2hUYWJsZUtleXNJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJl
dHVybiAqdGhpczsgfQ0KICAgICAgICANCg0KICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25z
dEtleXNJdGVyYXRvcjxIYXNoVGFibGVUeXBlLCBLZXlUeXBlLCBNYXBwZWRUeXBlPigpIHsNCiAg
ICAgICAgICAgIENvbnN0SXRlcmF0b3IgaSA9IG1faW1wbDsNCiAgICAgICAgICAgIHJldHVybiBp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgSXRlcmF0b3IgbV9pbXBsOw0KICAgIH07DQoNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFt
ZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3IgOiBwdWJsaWMgc3Rk
OjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBNYXBwZWRUeXBlLCBzdGQ6OnB0
cmRpZmZfdCwgTWFwcGVkVHlwZSosIE1hcHBlZFR5cGUmPiB7DQogICAgcHJpdmF0ZToNCiAgICAg
ICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFs
dWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiBJdGVyYXRvcjsNCiAgICAgICAgdHlwZWRlZiBI
YXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8
S2V5VHlwZSwgTWFwcGVkVHlwZT4+IENvbnN0SXRlcmF0b3I7DQoNCiAgICBwdWJsaWM6DQogICAg
ICAgIEhhc2hUYWJsZVZhbHVlc0l0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1w
bChpbXBsKSB7fQ0KICAgICAgICANCiAgICAgICAgTWFwcGVkVHlwZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gc3RkOjphZGRyZXNzb2YobV9pbXBsLmdldCgpLT52YWx1ZSk7IH0NCiAgICAgICAgTWFw
cGVkVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmdldCgpOyB9DQogICAgICAgIE1h
cHBlZFR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsgfQ0KDQogICAgICAg
IEhhc2hUYWJsZVZhbHVlc0l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJu
ICp0aGlzOyB9DQogICAgICAgIA0KDQogICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0VmFs
dWVzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlwZSwgTWFwcGVkVHlwZT4oKSB7DQogICAg
ICAgICAgICBDb25zdEl0ZXJhdG9yIGkgPSBtX2ltcGw7DQogICAgICAgICAgICByZXR1cm4gaTsN
CiAgICAgICAgfQ0KDQogICAgICAgIEl0ZXJhdG9yIG1faW1wbDsNCiAgICB9Ow0KDQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCiAgICAgICAgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjxULCBVLCBW
PiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGIpDQogICAg
ew0KICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7DQogICAgfQ0KDQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCiAgICAgICAgaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjxULCBVLCBW
PiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGIpDQogICAg
ew0KICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7DQogICAgfQ0KDQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCiAgICAgICAgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPFQsIFUs
IFY+JiBhLCBjb25zdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+DQogICAgICAgIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcjxU
LCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYg
YikNCiAgICB7DQogICAgICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsNCiAgICB9DQoN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KICAgICAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUtleXNJdGVyYXRvcjxULCBV
LCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlS2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+DQogICAgICAgIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlS2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBj
b25zdCBIYXNoVGFibGVLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGIpDQogICAgew0KICAgICAgICBy
ZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFz
aFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpDQogICAgew0KICAgICAgICByZXR1cm4g
YS5tX2ltcGwgPT0gYi5tX2ltcGw7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCiAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxl
VmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpDQogICAgew0KICAgICAgICByZXR1cm4gYS5tX2lt
cGwgIT0gYi5tX2ltcGw7DQogICAgfQ0KDQp9IA0KI2xpbmUgMTY1MyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaFRhYmxlLmgiDQoj
bGluZSAyNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvSGFzaE1hcC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSXRlcmF0b3JSYW5nZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4NCmNsYXNz
IEl0ZXJhdG9yUmFuZ2Ugew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBs
b2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5n
IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJs
aWM6DQogICAgSXRlcmF0b3JSYW5nZShJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQ0KICAg
ICAgICA6IG1fYmVnaW4oc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihiZWdpbikp
DQogICAgICAgICwgbV9lbmQoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihlbmQp
KQ0KICAgIHsNCiAgICB9DQoNCiAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
YmVnaW47IH0NCiAgICBJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQ0KDQpw
cml2YXRlOg0KICAgIEl0ZXJhdG9yIG1fYmVnaW47DQogICAgSXRlcmF0b3IgbV9lbmQ7DQp9Ow0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4NCkl0ZXJhdG9yUmFuZ2U8SXRlcmF0b3I+IG1h
a2VJdGVyYXRvclJhbmdlKEl0ZXJhdG9yJiYgYmVnaW4sIEl0ZXJhdG9yJiYgZW5kKQ0Kew0KICAg
IHJldHVybiBJdGVyYXRvclJhbmdlPEl0ZXJhdG9yPihzdGQ6OmZvcndhcmQ8SXRlcmF0b3I+KGJl
Z2luKSwgc3RkOjpmb3J3YXJkPEl0ZXJhdG9yPihlbmQpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgQ29udGFpbmVyPg0KSXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBDb250YWluZXI6OnJldmVyc2Vf
aXRlcmF0b3I+IG1ha2VSZXZlcnNlZFJhbmdlKENvbnRhaW5lciYgY29udGFpbmVyKQ0Kew0KICAg
IHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShzdGQ6OnJiZWdpbihjb250YWluZXIpLCBzdGQ6OnJl
bmQoY29udGFpbmVyKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lcj4NCkl0ZXJh
dG9yUmFuZ2U8dHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yPiBtYWtl
UmV2ZXJzZWRSYW5nZShjb25zdCBDb250YWluZXImIGNvbnRhaW5lcikNCnsNCiAgICByZXR1cm4g
bWFrZUl0ZXJhdG9yUmFuZ2Uoc3RkOjpjcmJlZ2luKGNvbnRhaW5lciksIHN0ZDo6Y3JlbmQoY29u
dGFpbmVyKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgSXRl
cmF0b3I+DQpjbGFzcyBTaXplZEl0ZXJhdG9yUmFuZ2Ugew0KICAgIHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgU2l6ZWRJdGVyYXRvclJhbmdlKGNvbnN0IENvbnRh
aW5lciYgY29udGFpbmVyLCBJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQ0KICAgICAgICA6
IG1fY29udGFpbmVyKGNvbnRhaW5lcikNCiAgICAgICAgLCBtX2JlZ2luKHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4oYmVnaW4pKQ0KICAgICAgICAsIG1fZW5kKHN0ZDo6bW92ZTxX
VEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oZW5kKSkNCiAgICB7DQogICAgfQ0KDQogICAgYXV0byBz
aXplKCkgY29uc3QgLT4gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPENvbnRhaW5lcj4oKS5zaXplKCkp
IHsgcmV0dXJuIG1fY29udGFpbmVyLnNpemUoKTsgfQ0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGFpbmVyLmlzRW1wdHkoKTsgfQ0KICAgIEl0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQ0KICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kOyB9DQoNCnByaXZhdGU6DQogICAgY29uc3QgQ29udGFpbmVyJiBtX2NvbnRhaW5l
cjsNCiAgICBJdGVyYXRvciBtX2JlZ2luOw0KICAgIEl0ZXJhdG9yIG1fZW5kOw0KfTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBJdGVyYXRvcj4NClNpemVkSXRlcmF0
b3JSYW5nZTxDb250YWluZXIsIEl0ZXJhdG9yPiBtYWtlU2l6ZWRJdGVyYXRvclJhbmdlKGNvbnN0
IENvbnRhaW5lciYgY29udGFpbmVyLCBJdGVyYXRvciYmIGJlZ2luLCBJdGVyYXRvciYmIGVuZCkN
CnsNCiAgICByZXR1cm4gU2l6ZWRJdGVyYXRvclJhbmdlPENvbnRhaW5lciwgSXRlcmF0b3I+KGNv
bnRhaW5lciwgc3RkOjpmb3J3YXJkPEl0ZXJhdG9yPihiZWdpbiksIHN0ZDo6Zm9yd2FyZDxJdGVy
YXRvcj4oZW5kKSk7DQp9DQoNCn0gDQojbGluZSAyNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaE1hcC5oIg0KDQpuYW1lc3BhY2Ug
V1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEtleVZhbHVlUGFpcktleUV4dHJh
Y3RvciB7DQogICAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIFQ6OktleVR5cGUmIGV4dHJhY3QoY29u
c3QgVCYgcCkgeyByZXR1cm4gcC5rZXk7IH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFy
ZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFp
dHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4NCmNsYXNzIEhhc2hNYXAgZmluYWwgew0K
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3
ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9y
Y2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwcml2YXRlOg0KICAgIHVzaW5nIEtl
eVRyYWl0cyA9IEtleVRyYWl0c0FyZzsNCiAgICB1c2luZyBNYXBwZWRUcmFpdHMgPSBNYXBwZWRU
cmFpdHNBcmc7DQoNCiAgICBzdHJ1Y3QgS2V5VmFsdWVQYWlyVHJhaXRzIDogS2V5VmFsdWVQYWly
SGFzaFRyYWl0czxLZXlUcmFpdHMsIE1hcHBlZFRyYWl0cz4gew0KICAgICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOw0KICAgICAgICBzdGF0
aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgdHlwZW5hbWUgS2V5VmFsdWVQYWlySGFzaFRyYWl0
czxLZXlUcmFpdHMsIE1hcHBlZFRyYWl0cz46OlRyYWl0VHlwZSYgdmFsdWUpDQogICAgICAgIHsN
CiAgICAgICAgICAgIHJldHVybiBpc0hhc2hUcmFpdHNFbXB0eVZhbHVlPEtleVRyYWl0cz4odmFs
dWUua2V5KTsNCiAgICAgICAgfQ0KICAgIH07DQoNCnB1YmxpYzoNCiAgICB1c2luZyBLZXlUeXBl
ID0gdHlwZW5hbWUgS2V5VHJhaXRzOjpUcmFpdFR5cGU7DQogICAgdXNpbmcgTWFwcGVkVHlwZSA9
IHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6VHJhaXRUeXBlOw0KICAgIHVzaW5nIEtleVZhbHVlUGFp
clR5cGUgPSB0eXBlbmFtZSBLZXlWYWx1ZVBhaXJUcmFpdHM6OlRyYWl0VHlwZTsNCg0KcHJpdmF0
ZToNCiAgICB1c2luZyBNYXBwZWRQZWVrVHlwZSA9IHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6UGVl
a1R5cGU7DQogICAgdXNpbmcgTWFwcGVkVGFrZVR5cGUgPSB0eXBlbmFtZSBNYXBwZWRUcmFpdHM6
OlRha2VUeXBlOw0KDQogICAgdXNpbmcgSGFzaEZ1bmN0aW9ucyA9IEhhc2hBcmc7DQoNCiAgICB1
c2luZyBIYXNoVGFibGVUeXBlID0gSGFzaFRhYmxlPEtleVR5cGUsIEtleVZhbHVlUGFpclR5cGUs
IEtleVZhbHVlUGFpcktleUV4dHJhY3RvcjxLZXlWYWx1ZVBhaXJUeXBlPiwgSGFzaEZ1bmN0aW9u
cywgS2V5VmFsdWVQYWlyVHJhaXRzLCBLZXlUcmFpdHM+Ow0KDQogICAgY2xhc3MgSGFzaE1hcEtl
eXNQcm94eTsNCiAgICBjbGFzcyBIYXNoTWFwVmFsdWVzUHJveHk7DQoNCiAgICB1c2luZyBJZGVu
dGl0eVRyYW5zbGF0b3JUeXBlID0gdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6SWRlbnRpdHlUcmFu
c2xhdG9yVHlwZTsNCg0KcHVibGljOg0KICAgIA0KDQoNCg0KDQogICAgdXNpbmcgaXRlcmF0b3Ig
PSBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyVHlw
ZT47DQogICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh
cHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXJUeXBlPjsNCg0KICAgIHVzaW5nIEtleXNJ
dGVyYXRvclJhbmdlID0gU2l6ZWRJdGVyYXRvclJhbmdlPEhhc2hNYXAsIHR5cGVuYW1lIGl0ZXJh
dG9yOjpLZXlzPjsNCiAgICB1c2luZyBLZXlzQ29uc3RJdGVyYXRvclJhbmdlID0gU2l6ZWRJdGVy
YXRvclJhbmdlPEhhc2hNYXAsIHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpLZXlzPjsNCiAgICB1
c2luZyBWYWx1ZXNJdGVyYXRvclJhbmdlID0gU2l6ZWRJdGVyYXRvclJhbmdlPEhhc2hNYXAsIHR5
cGVuYW1lIGl0ZXJhdG9yOjpWYWx1ZXM+Ow0KICAgIHVzaW5nIFZhbHVlc0NvbnN0SXRlcmF0b3JS
YW5nZSA9IFNpemVkSXRlcmF0b3JSYW5nZTxIYXNoTWFwLCB0eXBlbmFtZSBjb25zdF9pdGVyYXRv
cjo6VmFsdWVzPjsNCg0KICAgIA0KDQoNCg0KDQogICAgdXNpbmcgQWRkUmVzdWx0ID0gdHlwZW5h
bWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0Ow0KDQpwdWJsaWM6DQogICAgSGFzaE1hcCgpDQog
ICAgew0KICAgIH0NCg0KICAgIEhhc2hNYXAoc3RkOjppbml0aWFsaXplcl9saXN0PEtleVZhbHVl
UGFpclR5cGU+IGluaXRpYWxpemVyTGlzdCkNCiAgICB7DQogICAgICAgIGZvciAoY29uc3QgYXV0
byYga2V5VmFsdWVQYWlyIDogaW5pdGlhbGl6ZXJMaXN0KQ0KICAgICAgICAgICAgYWRkKGtleVZh
bHVlUGFpci5rZXksIGtleVZhbHVlUGFpci52YWx1ZSk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
c3dhcChIYXNoTWFwJik7DQoNCiAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7DQogICAgdW5zaWdu
ZWQgY2FwYWNpdHkoKSBjb25zdDsNCiAgICBib29sIGlzRW1wdHkoKSBjb25zdDsNCg0KICAgIHZv
aWQgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh1bnNpZ25lZCBrZXlDb3VudCkgeyBtX2ltcGwucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShrZXlDb3VudCk7IH0NCg0KICAgIA0KICAgIGl0ZXJhdG9yIGJl
Z2luKCk7DQogICAgaXRlcmF0b3IgZW5kKCk7DQogICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBj
b25zdDsNCiAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdDsNCiAgICANCiAgICBpdGVyYXRv
ciByYW5kb20oKSB7IHJldHVybiBtX2ltcGwucmFuZG9tKCk7IH0NCiAgICBjb25zdF9pdGVyYXRv
ciByYW5kb20oKSBjb25zdCB7IHJldHVybiBtX2ltcGwucmFuZG9tKCk7IH0NCg0KICAgIEtleXNJ
dGVyYXRvclJhbmdlIGtleXMoKSB7IHJldHVybiBtYWtlU2l6ZWRJdGVyYXRvclJhbmdlKCp0aGlz
LCBiZWdpbigpLmtleXMoKSwgZW5kKCkua2V5cygpKTsgfQ0KICAgIGNvbnN0IEtleXNDb25zdEl0
ZXJhdG9yUmFuZ2Uga2V5cygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTaXplZEl0ZXJhdG9yUmFuZ2Uo
KnRoaXMsIGJlZ2luKCkua2V5cygpLCBlbmQoKS5rZXlzKCkpOyB9DQoNCiAgICBWYWx1ZXNJdGVy
YXRvclJhbmdlIHZhbHVlcygpIHsgcmV0dXJuIG1ha2VTaXplZEl0ZXJhdG9yUmFuZ2UoKnRoaXMs
IGJlZ2luKCkudmFsdWVzKCksIGVuZCgpLnZhbHVlcygpKTsgfQ0KICAgIGNvbnN0IFZhbHVlc0Nv
bnN0SXRlcmF0b3JSYW5nZSB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtYWtlU2l6ZWRJdGVyYXRv
clJhbmdlKCp0aGlzLCBiZWdpbigpLnZhbHVlcygpLCBlbmQoKS52YWx1ZXMoKSk7IH0NCg0KICAg
IGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOw0KICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQo
Y29uc3QgS2V5VHlwZSYpIGNvbnN0Ow0KICAgIGJvb2wgY29udGFpbnMoY29uc3QgS2V5VHlwZSYp
IGNvbnN0Ow0KICAgIE1hcHBlZFBlZWtUeXBlIGdldChjb25zdCBLZXlUeXBlJikgY29uc3Q7DQoN
CiAgICANCiAgICBNYXBwZWRQZWVrVHlwZSBpbmxpbmVHZXQoY29uc3QgS2V5VHlwZSYpIGNvbnN0
Ow0KDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0
IHNldChjb25zdCBLZXlUeXBlJiwgViYmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRS
ZXN1bHQgc2V0KEtleVR5cGUmJiwgViYmKTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFY+IEFkZFJlc3VsdCBhZGQoY29uc3QgS2V5VHlwZSYsIFYmJik7DQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChLZXlUeXBlJiYsIFYmJik7DQoNCiAg
ICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1bHQgZmFzdEFkZChjb25zdCBLZXlU
eXBlJiwgViYmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBBZGRSZXN1bHQgZmFzdEFkZChL
ZXlUeXBlJiYsIFYmJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBBZGRSZXN1
bHQgZW5zdXJlKGNvbnN0IEtleVR5cGUmLCBGdW5jdG9yJiYpOw0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IEFkZFJlc3VsdCBlbnN1cmUoS2V5VHlwZSYmLCBGdW5jdG9yJiYpOw0KDQog
ICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYpOw0KICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9y
KTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0KICAgIGJvb2wgcmVtb3ZlSWYoRnVu
Y3RvciYmKTsNCiAgICB2b2lkIGNsZWFyKCk7DQoNCiAgICBNYXBwZWRUYWtlVHlwZSB0YWtlKGNv
bnN0IEtleVR5cGUmKTsgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gaXRlcmF0b3IgZmluZChj
b25zdCBUJik7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1l
IFQ+IGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgVCYpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBib29sIGNvbnRhaW5zKGNvbnN0IFQm
KSBjb25zdDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4gTWFwcGVkUGVla1R5cGUgZ2V0KGNvbnN0IFQmKSBjb25zdDsNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gTWFwcGVkUGVla1R5cGUgaW5saW5lR2V0
KGNvbnN0IFQmKSBjb25zdDsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBWPiBBZGRSZXN1bHQgYWRkKEsmJiwgViYmKTsNCg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEsgPSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2
YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJU
eXBlKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGNvbnN0X2l0ZXJhdG9yPjo6dHlwZSBmaW5k
KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSkgY29uc3Q7DQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgSyA9IEtleVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8
Sz46OnZhbHVlLCBib29sPjo6dHlwZSBjb250YWlucyh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+
Ojp0eXBlIGlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUpIGNvbnN0
Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlIGdldCh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEsgPSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2
YWx1ZSwgYm9vbD46OnR5cGUgcmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlw
ZSk7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgSyA9IEtleVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRUYWtlVHlwZT46OnR5cGUgdGFrZSh0
eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUpOw0KDQogICAgdm9pZCBjaGVja0NvbnNp
c3RlbmN5KCkgY29uc3Q7DQoNCiAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2V5KGNvbnN0IEtleVR5
cGUmKTsNCg0KcHJpdmF0ZToNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPg0K
ICAgIEFkZFJlc3VsdCBpbmxpbmVTZXQoSyYmLCBWJiYpOw0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgSywgdHlwZW5hbWUgVj4NCiAgICBBZGRSZXN1bHQgaW5saW5lQWRkKEsmJiwgViYmKTsNCg0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIEY+DQogICAgQWRkUmVzdWx0IGlubGlu
ZUVuc3VyZShLJiYsIEYmJik7DQoNCiAgICBIYXNoVGFibGVUeXBlIG1faW1wbDsNCn07DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zPg0Kc3Ry
dWN0IEhhc2hNYXBUcmFuc2xhdG9yIHsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6Omhhc2go
a2V5KTsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6OmVx
dWFsKGEsIGIpOyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBVJiYga2V5LCBWJiYgbWFw
cGVkKQ0KICAgIHsNCiAgICAgICAgVmFsdWVUcmFpdHM6OktleVRyYWl0czo6YXNzaWduVG9FbXB0
eShsb2NhdGlvbi5rZXksIHN0ZDo6Zm9yd2FyZDxVPihrZXkpKTsNCiAgICAgICAgVmFsdWVUcmFp
dHM6OlZhbHVlVHJhaXRzOjphc3NpZ25Ub0VtcHR5KGxvY2F0aW9uLnZhbHVlLCBzdGQ6OmZvcndh
cmQ8Vj4obWFwcGVkKSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUcmFp
dHMsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+DQpzdHJ1Y3QgSGFzaE1hcEVuc3VyZVRyYW5zbGF0
b3Igew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChrZXkpOyB9DQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVCYgYSwg
Y29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYSwgYik7IH0NCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBGdW5jdG9yPiBzdGF0aWMg
dm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiBrZXksIEZ1bmN0b3ImJiBmdW5jdG9yKQ0K
ICAgIHsNCiAgICAgICAgVmFsdWVUcmFpdHM6OktleVRyYWl0czo6YXNzaWduVG9FbXB0eShsb2Nh
dGlvbi5rZXksIHN0ZDo6Zm9yd2FyZDxVPihrZXkpKTsNCiAgICAgICAgVmFsdWVUcmFpdHM6OlZh
bHVlVHJhaXRzOjphc3NpZ25Ub0VtcHR5KGxvY2F0aW9uLnZhbHVlLCBmdW5jdG9yKCkpOw0KICAg
IH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHJhaXRzLCB0eXBlbmFtZSBUcmFuc2xh
dG9yPg0Kc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlciB7DQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBUcmFu
c2xhdG9yOjpoYXNoKGtleSk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBUcmFu
c2xhdG9yOjplcXVhbChhLCBiKTsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgVSYmIGtl
eSwgViYmIG1hcHBlZCwgdW5zaWduZWQgaGFzaENvZGUpDQogICAgew0KICAgICAgICBUcmFuc2xh
dG9yOjp0cmFuc2xhdGUobG9jYXRpb24ua2V5LCBrZXksIGhhc2hDb2RlKTsNCiAgICAgICAgbG9j
YXRpb24udmFsdWUgPSBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKTsNCiAgICB9DQp9Ow0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6c3dhcChIYXNoTWFw
JiBvdGhlcikNCnsNCiAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPg0KaW5saW5lIHVuc2lnbmVkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnNpemUoKSBjb25z
dA0Kew0KICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCmlubGlu
ZSB1bnNpZ25lZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpjYXBhY2l0eSgpIGNvbnN0DQp7IA0K
ICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsgDQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQppbmxpbmUg
Ym9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojppc0VtcHR5KCkgY29uc3QNCnsNCiAgICByZXR1
cm4gbV9pbXBsLmlzRW1wdHkoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCmlubGluZSBhdXRvIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmJlZ2luKCkgLT4gaXRlcmF0b3INCnsNCiAgICByZXR1cm4gbV9p
bXBsLmJlZ2luKCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQppbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUs
IFYsIFcsIFg+OjplbmQoKSAtPiBpdGVyYXRvcg0Kew0KICAgIHJldHVybiBtX2ltcGwuZW5kKCk7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+DQppbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpi
ZWdpbigpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yDQp7DQogICAgcmV0dXJuIG1faW1wbC5iZWdp
bigpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6ZW5kKCkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3INCnsNCiAgICByZXR1cm4gbV9pbXBsLmVu
ZCgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBY
Pjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIC0+IGl0ZXJhdG9yDQp7DQogICAgcmV0dXJuIG1f
aW1wbC5maW5kKGtleSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQppbmxpbmUgYXV0byBIYXNoTWFwPFQs
IFUsIFYsIFcsIFg+OjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgLT4gY29uc3RfaXRl
cmF0b3INCnsNCiAgICByZXR1cm4gbV9pbXBsLmZpbmQoa2V5KTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4N
CmlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnRhaW5zKGNvbnN0IEtleVR5
cGUmIGtleSkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9pbXBsLmNvbnRhaW5zKGtleSk7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIFg+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VFlQRT4NCmlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppdGVyYXRvcg0K
SGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBUWVBFJiB2YWx1ZSkNCnsNCiAgICBy
ZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPEtleVZh
bHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVFlQRT4NCmlubGlu
ZSB0eXBlbmFtZSBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpjb25zdF9pdGVyYXRvciANCkhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmZpbmQoY29uc3QgVFlQRSYgdmFsdWUpIGNvbnN0DQp7DQogICAg
cmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBmaW5kPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxLZXlW
YWx1ZVBhaXJUcmFpdHMsIEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
Pg0KdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFRZUEU+DQphdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmdldChjb25zdCBUWVBFJiB2YWx1ZSkgY29uc3QgLT4g
TWFwcGVkUGVla1R5cGUNCnsNCiAgICBhdXRvKiBlbnRyeSA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxl
VHlwZSY+KG1faW1wbCkudGVtcGxhdGUgbG9va3VwPEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxL
ZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOw0KICAgIGlmICghZW50
cnkpDQogICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoTWFwcGVkVHJhaXRzOjplbXB0
eVZhbHVlKCkpOw0KICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnktPnZhbHVlKTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4NCnRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBUWVBFPg0KYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpbmVHZXQoY29uc3Qg
VFlQRSYgdmFsdWUpIGNvbnN0IC0+IE1hcHBlZFBlZWtUeXBlDQp7DQogICAgYXV0byogZW50cnkg
PSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLnRlbXBsYXRlIGlubGluZUxvb2t1
cDxIYXNoTWFwVHJhbnNsYXRvckFkYXB0ZXI8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoVHJhbnNs
YXRvcj4+KHZhbHVlKTsNCiAgICBpZiAoIWVudHJ5KQ0KICAgICAgICByZXR1cm4gTWFwcGVkVHJh
aXRzOjpwZWVrKE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsNCiAgICByZXR1cm4gTWFwcGVk
VHJhaXRzOjpwZWVrKGVudHJ5LT52YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQp0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVFlQRT4NCmlubGluZSBib29sIEhhc2hN
YXA8VCwgVSwgViwgVywgWD46OmNvbnRhaW5zKGNvbnN0IFRZUEUmIHZhbHVlKSBjb25zdA0Kew0K
ICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8SGFzaE1hcFRyYW5zbGF0b3JBZGFw
dGVyPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNo
QXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4NCnRl
bXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+DQphdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBw
ZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6aW5saW5lU2V0
KEsmJiBrZXksIFYmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0DQp7DQogICAgQWRkUmVzdWx0IHJlc3Vs
dCA9IGlubGluZUFkZChzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVl
KSk7DQogICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgew0KICAgICAgICANCiAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSk7DQogICAgfQ0KICAg
IHJldHVybiByZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
TWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVu
YW1lIE1hcHBlZFRyYWl0c0FyZz4NCnRlbXBsYXRlPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+DQpf
X2ZvcmNlaW5saW5lIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5
VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjppbmxpbmVBZGQoSyYmIGtleSwgViYmIHZhbHVl
KSAtPiBBZGRSZXN1bHQNCnsNCiAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZDxIYXNoTWFw
VHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihzdGQ6OmZvcndh
cmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFt
ZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4NCnRlbXBsYXRlPHR5cGVu
YW1lIEssIHR5cGVuYW1lIEY+DQpfX2ZvcmNlaW5saW5lIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjppbmxpbmVF
bnN1cmUoSyYmIGtleSwgRiYmIGZ1bmN0b3IpIC0+IEFkZFJlc3VsdA0Kew0KICAgIHJldHVybiBt
X2ltcGwudGVtcGxhdGUgYWRkPEhhc2hNYXBFbnN1cmVUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRy
YWl0cywgSGFzaEZ1bmN0aW9ucz4+KHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6OmZvcndhcmQ8
Rj4oZnVuY3RvcikpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1h
cHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFt
ZSBNYXBwZWRUcmFpdHNBcmc+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KYXV0byBIYXNoTWFwPEtl
eUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46
OnNldChjb25zdCBLZXlUeXBlJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdA0Kew0KICAg
IHJldHVybiBpbmxpbmVTZXQoa2V5LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNo
QXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4NCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+DQphdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hB
cmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtleVR5cGUmJiBrZXksIFQm
JiBtYXBwZWQpIC0+IEFkZFJlc3VsdA0Kew0KICAgIHJldHVybiBpbmxpbmVTZXQoc3RkOjptb3Zl
PFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0
c0FyZz4NCnRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBLLCB0eXBl
bmFtZSBWPg0KYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFp
dHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChLJiYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJl
c3VsdA0Kew0KICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhh
c2hNYXBUcmFuc2xhdG9yQWRhcHRlcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hUcmFuc2xhdG9y
Pj4oc3RkOjpmb3J3YXJkPEs+KGtleSksIHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSkpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFz
aEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+DQp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmFkZChjb25zdCBLZXlUeXBlJiBr
ZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdA0Kew0KICAgIHJldHVybiBpbmxpbmVBZGQoa2V5
LCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFy
ZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFp
dHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4NCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQph
dXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFw
cGVkVHJhaXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3Vs
dA0Kew0KICAgIHJldHVybiBpbmxpbmVBZGQoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1l
dGVyPihrZXkpLCBzdGQ6OmZvcndhcmQ8VD4obWFwcGVkKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFt
ZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4NCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+DQpfX2ZvcmNlaW5saW5lIGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFz
aEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRkKGNvbnN0IEtleVR5
cGUmIGtleSwgVCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0DQp7DQogICAgcmV0dXJuIGlubGluZUFk
ZChrZXksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
S2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtl
eVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzQXJnPg0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4NCl9fZm9yY2VpbmxpbmUgYXV0byBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJn
LCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmZhc3RBZGQoS2V5VHlwZSYmIGtleSwg
VCYmIG1hcHBlZCkgLT4gQWRkUmVzdWx0DQp7DQogICAgcmV0dXJuIGlubGluZUFkZChzdGQ6Om1v
dmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGtleSksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQp
KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5
cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzQXJnPg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4NCmF1dG8gSGFzaE1hcDxLZXlBcmcs
IE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjplbnN1
cmUoY29uc3QgS2V5VHlwZSYga2V5LCBGdW5jdG9yJiYgZnVuY3RvcikgLT4gQWRkUmVzdWx0DQp7
DQogICAgcmV0dXJuIGlubGluZUVuc3VyZShrZXksIHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBl
ZFRyYWl0c0FyZz4NCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+DQphdXRvIEhhc2hNYXA8S2V5
QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6
ZW5zdXJlKEtleVR5cGUmJiBrZXksIEZ1bmN0b3ImJiBmdW5jdG9yKSAtPiBBZGRSZXN1bHQNCnsN
CiAgICByZXR1cm4gaW5saW5lRW5zdXJlKHN0ZDo6Zm9yd2FyZDxLZXlUeXBlPihrZXkpLCBzdGQ6
OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvcikpOw0KfQ0KICAgIA0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzPg0KaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpnZXQo
Y29uc3QgS2V5VHlwZSYga2V5KSBjb25zdCAtPiBNYXBwZWRQZWVrVHlwZQ0Kew0KICAgIHJldHVy
biBnZXQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oa2V5KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzPg0KX19mb3JjZWlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgTWFwcGVkVHJh
aXRzPjo6aW5saW5lR2V0KGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QgLT4gTWFwcGVkUGVla1R5
cGUNCnsNCiAgICBLZXlWYWx1ZVBhaXJUeXBlKiBlbnRyeSA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxl
VHlwZSY+KG1faW1wbCkudGVtcGxhdGUgaW5saW5lTG9va3VwPElkZW50aXR5VHJhbnNsYXRvclR5
cGU+KGtleSk7DQogICAgaWYgKCFlbnRyeSkNCiAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6
cGVlayhNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7DQogICAgcmV0dXJuIE1hcHBlZFRyYWl0
czo6cGVlayhlbnRyeS0+dmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KaW5saW5lIGJvb2wgSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQ0Kew0KICAgIGlmIChpdC5t
X2ltcGwgPT0gbV9pbXBsLmVuZCgpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgbV9pbXBs
LmludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7DQogICAgbV9pbXBsLnJlbW92ZVdpdGhv
dXRFbnRyeUNvbnNpc3RlbmN5Q2hlY2soaXQubV9pbXBsKTsNCiAgICByZXR1cm4gdHJ1ZTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4NCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+DQppbmxpbmUgYm9vbCBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmVJZihGdW5jdG9yJiYgZnVuY3RvcikNCnsNCiAg
ICByZXR1cm4gbV9pbXBsLnJlbW92ZUlmKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+DQppbmxpbmUgYm9vbCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpy
ZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQ0Kew0KICAgIHJldHVybiByZW1vdmUoZmluZChrZXkp
KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgWD4NCmlubGluZSB2b2lkIEhhc2hNYXA8VCwgVSwgViwgVywgWD46
OmNsZWFyKCkNCnsNCiAgICBtX2ltcGwuY2xlYXIoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJh
aXRzPg0KYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OnRha2UoY29uc3Qg
S2V5VHlwZSYga2V5KSAtPiBNYXBwZWRUYWtlVHlwZQ0Kew0KICAgIGl0ZXJhdG9yIGl0ID0gZmlu
ZChrZXkpOw0KICAgIGlmIChpdCA9PSBlbmQoKSkNCiAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0
czo6dGFrZShNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7DQogICAgYXV0byB2YWx1ZSA9IE1h
cHBlZFRyYWl0czo6dGFrZShzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGl0LT52
YWx1ZSkpOw0KICAgIHJlbW92ZShpdCk7DQogICAgcmV0dXJuIHZhbHVlOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFt
ZSBYPg0KdGVtcGxhdGU8dHlwZW5hbWUgSz4NCmlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgLT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlw
ZQ0Kew0KICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJhbnNsYXRvcjxL
ZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
Pg0KdGVtcGxhdGU8dHlwZW5hbWUgSz4NCmlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywg
WD46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGNvbnN0X2l0ZXJh
dG9yPjo6dHlwZQ0Kew0KICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFwVHJh
bnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPg0KdGVtcGxhdGU8dHlwZW5hbWUgSz4NCmlubGluZSBhdXRvIEhhc2hNYXA8VCwg
VSwgViwgVywgWD46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBr
ZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVl
LCBib29sPjo6dHlwZQ0Kew0KICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8SGFz
aE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoRnVuY3Rpb25zPj4oa2V5KTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgWD4NCnRlbXBsYXRlPHR5cGVuYW1lIEs+DQppbmxpbmUgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjppbmxpbmVHZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQ
dHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxL
Pjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6dHlwZQ0Kew0KICAgIEtleVZhbHVlUGFpclR5cGUq
IGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGVUeXBlJj4obV9pbXBsKS50ZW1wbGF0ZSBpbmxp
bmVMb29rdXA8SGFzaE1hcFRyYW5zbGF0b3I8S2V5VmFsdWVQYWlyVHJhaXRzLCBIYXNoRnVuY3Rp
b25zPj4oa2V5KTsNCiAgICBpZiAoIWVudHJ5KQ0KICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRz
OjpwZWVrKE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsNCiAgICByZXR1cm4gTWFwcGVkVHJh
aXRzOjpwZWVrKGVudHJ5LT52YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+DQp0ZW1wbGF0ZTx0eXBl
bmFtZSBLPg0KYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpnZXQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6dHlwZQ0Kew0KICAgIHJldHVy
biBpbmxpbmVHZXQoa2V5KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCnRlbXBsYXRlPHR5cGVuYW1lIEs+
DQppbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpyZW1vdmUodHlwZW5hbWUgR2V0
UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlDQp7DQogICAgcmV0dXJuIHJlbW92ZShmaW5k
KGtleSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
LCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPg0KdGVtcGxhdGU8dHlwZW5hbWUgSz4NCmlubGluZSBh
dXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnRha2UodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+
OjpQdHJUeXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6
dmFsdWUsIE1hcHBlZFRha2VUeXBlPjo6dHlwZQ0Kew0KICAgIGl0ZXJhdG9yIGl0ID0gZmluZChr
ZXkpOw0KICAgIGlmIChpdCA9PSBlbmQoKSkNCiAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6
dGFrZShNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7DQogICAgYXV0byB2YWx1ZSA9IE1hcHBl
ZFRyYWl0czo6dGFrZShzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGl0LT52YWx1
ZSkpOw0KICAgIHJlbW92ZShpdCk7DQogICAgcmV0dXJuIHZhbHVlOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
Pg0KaW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y2hlY2tDb25zaXN0ZW5jeSgp
IGNvbnN0DQp7DQogICAgbV9pbXBsLmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYPg0KaW5saW5lIGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aXNWYWxpZEtleShj
b25zdCBLZXlUeXBlJiBrZXkpDQp7DQogICAgaWYgKEtleVRyYWl0czo6aXNEZWxldGVkVmFsdWUo
a2V5KSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgaWYgKEhhc2hGdW5jdGlvbnM6OnNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkKSB7DQogICAgICAgIGlmIChrZXkgPT0gS2V5VHJh
aXRzOjplbXB0eVZhbHVlKCkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfSBlbHNl
IHsNCiAgICAgICAgaWYgKGlzSGFzaFRyYWl0c0VtcHR5VmFsdWU8S2V5VHJhaXRzPihrZXkpKQ0K
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIHJldHVybiB0cnVlOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPg0KYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywg
WD4mIGEsIGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGIpDQp7DQogICAgaWYgKGEuc2l6
ZSgpICE9IGIuc2l6ZSgpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICB0eXBlZGVmIHR5
cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJh
dG9yOw0KDQogICAgY29uc3RfaXRlcmF0b3IgZW5kID0gYS5lbmQoKTsNCiAgICBjb25zdF9pdGVy
YXRvciBub3RGb3VuZCA9IGIuZW5kKCk7DQogICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IGEu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7DQogICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJQb3Mg
PSBiLmZpbmQoaXQtPmtleSk7DQogICAgICAgIGlmIChiUG9zID09IG5vdEZvdW5kIHx8IGl0LT52
YWx1ZSAhPSBiUG9zLT52YWx1ZSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoN
CiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4NCmlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPiYgYikNCnsNCiAgICByZXR1cm4gIShhID09IGIpOw0KfQ0KDQp9IA0KDQp1c2luZyBX
VEY6Okhhc2hNYXA7DQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWV0YUFsbG9jYXRvci5oIg0KDQoNCg0KDQoNCg0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0KDQoNCmNsYXNzIE1ldGFBbGxvY2F0b3JUcmFja2VyIHsNCiAgICBw
dWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0
TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6
ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9p
ZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0
RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNl
bWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHZvaWQgbm90aWZ5KE1l
dGFBbGxvY2F0b3JIYW5kbGUmKTsNCiAgICB2b2lkIHJlbGVhc2UoTWV0YUFsbG9jYXRvckhhbmRs
ZSYpOw0KDQogICAgTWV0YUFsbG9jYXRvckhhbmRsZSogZmluZCh2b2lkKiBhZGRyZXNzKQ0KICAg
IHsNCiAgICAgICAgTWV0YUFsbG9jYXRvckhhbmRsZSogaGFuZGxlID0gbV9hbGxvY2F0aW9ucy5m
aW5kR3JlYXRlc3RMZXNzVGhhbk9yRXF1YWwoYWRkcmVzcyk7DQogICAgICAgIGlmIChoYW5kbGUg
JiYgaGFuZGxlLT5zdGFydCgpLnVudGFnZ2VkUHRyKCkgPD0gYWRkcmVzcyAmJiBhZGRyZXNzIDwg
aGFuZGxlLT5lbmQoKS51bnRhZ2dlZFB0cigpKQ0KICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTsN
CiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0KDQogICAgUmVkQmxhY2tUcmVlPE1ldGFB
bGxvY2F0b3JIYW5kbGUsIHZvaWQqPiBtX2FsbG9jYXRpb25zOw0KfTsNCg0KY2xhc3MgTWV0YUFs
bG9jYXRvciB7DQogICAgTWV0YUFsbG9jYXRvcihjb25zdCBNZXRhQWxsb2NhdG9yJikgPSBkZWxl
dGU7IE1ldGFBbGxvY2F0b3ImIG9wZXJhdG9yPShjb25zdCBNZXRhQWxsb2NhdG9yJikgPSBkZWxl
dGU7Ow0KDQpwdWJsaWM6DQogICAgdXNpbmcgRnJlZVNwYWNlUHRyID0gTWV0YUFsbG9jYXRvclB0
cjxGcmVlU3BhY2VQdHJUYWc+Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIE1ldGFBbGxv
Y2F0b3IoTG9jayYsIHNpemVfdCBhbGxvY2F0aW9uR3JhbnVsZSwgc2l6ZV90IHBhZ2VTaXplID0g
V1RGOjpwYWdlU2l6ZSgpKTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdmlydHVh
bCB+TWV0YUFsbG9jYXRvcigpOw0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUgUmVmUHRyPE1ldGFB
bGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRlKHNpemVfdCBzaXplSW5CeXRlcykNCiAgICB7DQogICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsNCiAgICAgICAgcmV0dXJuIGFsbG9j
YXRlKGxvY2tlciwgc2l6ZUluQnl0ZXMpOw0KICAgIH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgUmVmUHRyPE1ldGFBbGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRlKGNvbnN0IExvY2tIb2xkZXIm
LCBzaXplX3Qgc2l6ZUluQnl0ZXMpOw0KDQogICAgdm9pZCB0cmFja0FsbG9jYXRpb25zKE1ldGFB
bGxvY2F0b3JUcmFja2VyKiB0cmFja2VyKQ0KICAgIHsNCiAgICAgICAgbV90cmFja2VyID0gdHJh
Y2tlcjsNCiAgICB9DQoNCiAgICANCiAgICBzaXplX3QgYnl0ZXNBbGxvY2F0ZWQoKSB7IHJldHVy
biBtX2J5dGVzQWxsb2NhdGVkOyB9DQogICAgc2l6ZV90IGJ5dGVzUmVzZXJ2ZWQoKSB7IHJldHVy
biBtX2J5dGVzUmVzZXJ2ZWQ7IH0NCiAgICBzaXplX3QgYnl0ZXNDb21taXR0ZWQoKSB7IHJldHVy
biBtX2J5dGVzQ29tbWl0dGVkOyB9DQogICAgDQogICAgDQogICAgc3RydWN0IFN0YXRpc3RpY3Mg
ew0KICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9j
KHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcs
IHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdl
YmtpdEZhc3RNYWxsb2NlZCA9IGludDsgdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29s
b25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICAgICAgc2l6ZV90IGJ5dGVzQWxsb2NhdGVkOw0K
ICAgICAgICBzaXplX3QgYnl0ZXNSZXNlcnZlZDsNCiAgICAgICAgc2l6ZV90IGJ5dGVzQ29tbWl0
dGVkOw0KICAgIH07DQogICAgU3RhdGlzdGljcyBjdXJyZW50U3RhdGlzdGljcygpDQogICAgew0K
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7DQogICAgICAgIHJldHVybiBj
dXJyZW50U3RhdGlzdGljcyhsb2NrZXIpOw0KICAgIH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgU3RhdGlzdGljcyBjdXJyZW50U3RhdGlzdGljcyhjb25zdCBMb2NrSG9sZGVyJik7DQoNCiAg
ICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhZGRGcmVzaEZy
ZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5dGVzKTsNCg0KICAgIA0KICAgIA0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgZGVidWdGcmVlU3BhY2VTaXplKCk7DQoN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBpc0luQWxsb2NhdGVkTWVtb3J5KGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgdm9pZCogYWRkcmVzcyk7DQogICAgDQoNCg0KI2xpbmUgMTE2ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9N
ZXRhQWxsb2NhdG9yLmgiDQogICAgdm9pZCBkdW1wUHJvZmlsZSgpIHsgfQ0KI2xpbmUgMTE4ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9N
ZXRhQWxsb2NhdG9yLmgiDQoNCnByb3RlY3RlZDoNCiAgICANCiAgICANCiAgICANCiAgICB2aXJ0
dWFsIEZyZWVTcGFjZVB0ciBhbGxvY2F0ZU5ld1NwYWNlKHNpemVfdCYgbnVtUGFnZXMpID0gMDsN
Cg0KICAgIA0KICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOZWVkUGFnZSh2b2lkKiBwYWdlLCBzaXpl
X3QpID0gMDsNCiAgICANCiAgICANCiAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZUlzRnJlZSh2
b2lkKiBwYWdlLCBzaXplX3QpID0gMDsNCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIA0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2aXJ0dWFsIHZvaWQgcmVsZWFzZShjb25zdCBMb2Nr
SG9sZGVyJiwgTWV0YUFsbG9jYXRvckhhbmRsZSYpOw0KcHJpdmF0ZToNCiAgICANCiAgICBmcmll
bmQgY2xhc3MgTWV0YUFsbG9jYXRvckhhbmRsZTsNCiAgICANCiAgICBjbGFzcyBGcmVlU3BhY2VO
b2RlIDogcHVibGljIFJlZEJsYWNrVHJlZTxGcmVlU3BhY2VOb2RlLCBzaXplX3Q+OjpOb2RlIHsN
CiAgICBwdWJsaWM6DQogICAgICAgIEZyZWVTcGFjZU5vZGUoKSA9IGRlZmF1bHQ7DQoNCiAgICAg
ICAgRnJlZVNwYWNlTm9kZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5dGVzKQ0KICAgICAg
ICAgICAgOiBtX3N0YXJ0KHN0YXJ0KQ0KICAgICAgICAgICAgLCBtX2VuZChyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihzdGFydCkgKyBzaXplSW5CeXRlcykNCiAgICAgICAgeyB9DQoNCiAgICAg
ICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG1f
ZW5kLnVudGFnZ2VkUHRyPHNpemVfdD4oKSAtIG1fc3RhcnQudW50YWdnZWRQdHI8c2l6ZV90Pigp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgc2l6ZV90IGtleSgpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIHJldHVybiBzaXplSW5CeXRlcygpOw0KICAgICAgICB9DQoNCiAgICAgICAgRnJlZVNwYWNl
UHRyIG1fc3RhcnQ7DQogICAgICAgIEZyZWVTcGFjZVB0ciBtX2VuZDsNCiAgICB9Ow0KICAgIHR5
cGVkZWYgUmVkQmxhY2tUcmVlPEZyZWVTcGFjZU5vZGUsIHNpemVfdD4gVHJlZTsNCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICBGcmVlU3BhY2VQdHIgZmluZEFuZFJlbW92ZUZyZWVTcGFjZShz
aXplX3Qgc2l6ZUluQnl0ZXMpOw0KDQogICAgDQogICAgdm9pZCBhZGRGcmVlU3BhY2VGcm9tUmVs
ZWFzZWRIYW5kbGUoRnJlZVNwYWNlUHRyIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpOw0KDQog
ICAgDQogICAgDQogICAgDQogICAgdm9pZCBhZGRGcmVlU3BhY2UoRnJlZVNwYWNlUHRyIHN0YXJ0
LCBzaXplX3Qgc2l6ZUluQnl0ZXMpOw0KDQogICAgDQogICAgDQogICAgdm9pZCBpbmNyZW1lbnRQ
YWdlT2NjdXBhbmN5KHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplSW5CeXRlcyk7DQogICAgdm9p
ZCBkZWNyZW1lbnRQYWdlT2NjdXBhbmN5KHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplSW5CeXRl
cyk7DQoNCiAgICANCiAgICANCiAgICBzaXplX3Qgcm91bmRVcChzaXplX3Qgc2l6ZUluQnl0ZXMp
Ow0KICAgIA0KICAgIEZyZWVTcGFjZU5vZGUqIGFsbG9jRnJlZVNwYWNlTm9kZSgpOw0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGZyZWVGcmVlU3BhY2VOb2RlKEZyZWVTcGFjZU5vZGUq
KTsNCiAgICANCiAgICBzaXplX3QgbV9hbGxvY2F0aW9uR3JhbnVsZTsNCiAgICBzaXplX3QgbV9w
YWdlU2l6ZTsNCiAgICB1bnNpZ25lZCBtX2xvZ0FsbG9jYXRpb25HcmFudWxlOw0KICAgIHVuc2ln
bmVkIG1fbG9nUGFnZVNpemU7DQogICAgDQogICAgVHJlZSBtX2ZyZWVTcGFjZVNpemVNYXA7DQog
ICAgSGFzaE1hcDxGcmVlU3BhY2VQdHIsIEZyZWVTcGFjZU5vZGUqPiBtX2ZyZWVTcGFjZVN0YXJ0
QWRkcmVzc01hcDsNCiAgICBIYXNoTWFwPEZyZWVTcGFjZVB0ciwgRnJlZVNwYWNlTm9kZSo+IG1f
ZnJlZVNwYWNlRW5kQWRkcmVzc01hcDsNCiAgICBIYXNoTWFwPHVpbnRwdHJfdCwgc2l6ZV90PiBt
X3BhZ2VPY2N1cGFuY3lNYXA7DQogICAgDQogICAgc2l6ZV90IG1fYnl0ZXNBbGxvY2F0ZWQ7DQog
ICAgc2l6ZV90IG1fYnl0ZXNSZXNlcnZlZDsNCiAgICBzaXplX3QgbV9ieXRlc0NvbW1pdHRlZDsN
CiAgICANCiAgICBMb2NrJiBtX2xvY2s7DQoNCiAgICBNZXRhQWxsb2NhdG9yVHJhY2tlciogbV90
cmFja2VyIHsgbnVsbHB0ciB9Ow0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxNiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWV0YUFsbG9j
YXRvci5oIg0KfTsNCg0KfSANCiNsaW5lIDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcRXhlY3V0YWJsZUFsbG9jYXRvci5oIg0KDQoNCg0K
DQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEV4ZWN1dGFibGVBbGxvY2F0b3IuaCINCg0KDQoNCiNsaW5lIDQ5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGppdEFsbG9jYXRpb25HcmFudWxlID0gMzI7DQoNCnR5cGVkZWYgV1RGOjpN
ZXRhQWxsb2NhdG9ySGFuZGxlIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU7DQoNCmNsYXNzIEV4ZWN1
dGFibGVBbGxvY2F0b3JCYXNlIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9p
ZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1
cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1
c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0K
ICAgIEV4ZWN1dGFibGVBbGxvY2F0b3JCYXNlKGNvbnN0IEV4ZWN1dGFibGVBbGxvY2F0b3JCYXNl
JikgPSBkZWxldGU7IEV4ZWN1dGFibGVBbGxvY2F0b3JCYXNlJiBvcGVyYXRvcj0oY29uc3QgRXhl
Y3V0YWJsZUFsbG9jYXRvckJhc2UmKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0NCg0KICAgIHN0YXRpYyBib29sIHVuZGVyTWVt
b3J5UHJlc3N1cmUoKSB7IHJldHVybiBmYWxzZTsgfQ0KDQogICAgc3RhdGljIGRvdWJsZSBtZW1v
cnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90KSB7IHJldHVybiAxLjA7IH0NCg0KICAgIHN0YXRp
YyB2b2lkIGR1bXBQcm9maWxlKCkgeyB9DQoNCiAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhh
bmRsZT4gYWxsb2NhdGUoc2l6ZV90LCBKSVRDb21waWxhdGlvbkVmZm9ydCkgeyByZXR1cm4gbnVs
bHB0cjsgfQ0KDQogICAgc3RhdGljIHZvaWQgc2V0SklURW5hYmxlZChib29sKSB7IH07DQogICAg
DQogICAgYm9vbCBpc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBBYnN0cmFjdExvY2tlciYs
IHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQ0KDQogICAgc3RhdGljIHNpemVfdCBjb21taXR0ZWRC
eXRlQ291bnQoKSB7IHJldHVybiAwOyB9DQoNCiAgICBMb2NrJiBnZXRMb2NrKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX2xvY2s7DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgRXhl
Y3V0YWJsZUFsbG9jYXRvckJhc2UoKSA9IGRlZmF1bHQ7DQogICAgfkV4ZWN1dGFibGVBbGxvY2F0
b3JCYXNlKCkgPSBkZWZhdWx0Ow0KDQpwcml2YXRlOg0KICAgIG11dGFibGUgTG9jayBtX2xvY2s7
DQp9Ow0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQqIHN0YXJ0T2ZGaXhlZEV4ZWN1
dGFibGVNZW1vcnlQb29sSW1wbCgpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQqIGVuZE9m
Rml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwoKTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCA9
IHZvaWQqPg0KVCBzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCgpDQp7DQogICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxUPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwo
KSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4NClQgZW5kT2ZGaXhlZEV4ZWN1
dGFibGVNZW1vcnlQb29sKCkNCnsNCiAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KGVuZE9mRml4
ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwoKSk7DQp9DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBib29sIGlzSklUUEModm9pZCogcGMpOw0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBk
dW1wSklUTWVtb3J5KGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsNCg0Kc3RhdGlj
IF9fZm9yY2VpbmxpbmUgdm9pZCogcGVyZm9ybUpJVE1lbWNweSh2b2lkICpkc3QsIGNvbnN0IHZv
aWQgKnNyYywgc2l6ZV90IG4pDQp7DQoNCg0KDQoNCiNsaW5lIDEyMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEV4ZWN1dGFibGVBbGxvY2F0
b3IuaCINCiAgICBpZiAoaXNKSVRQQyhkc3QpKSB7DQogICAgICAgIGRvIHsgaWYgKCghKCFHaWdh
Y2FnZTo6Y29udGFpbnMoc3JjKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUo
KTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTIyLCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEV4ZWN1dGFi
bGVBbGxvY2F0b3IuaCIsICBfX0ZVTkNUSU9OX18gICwgNyApOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOw0KICAgICAgICBkbyB7IGlmICgoIShyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pihkc3QpICsgbiA8PSBlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSkpKSBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oMTIzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxqaXRcXEV4ZWN1dGFibGVBbGxvY2F0b3IuaCIsICBfX0ZVTkNUSU9OX18g
ICwgOCApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KDQogICAgICAgIGlmICgoT3B0
aW9uczo6ZHVtcEpJVE1lbW9yeVBhdGgoKSkpDQogICAgICAgICAgICBkdW1wSklUTWVtb3J5KGRz
dCwgc3JjLCBuKTsNCg0KICAgICAgICBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpIHsNCiAg
ICAgICAgICAgIHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlcoKTsNCiAgICAgICAgICAgIG1lbWNw
eShkc3QsIHNyYywgbik7DQogICAgICAgICAgICB0aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JYKCk7
DQogICAgICAgICAgICByZXR1cm4gZHN0Ow0KICAgICAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEV4ZWN1dGFibGVBbGxvY2F0b3IuaCINCiAgICB9DQoNCiAgICANCiAgICByZXR1
cm4gbWVtY3B5KGRzdCwgc3JjLCBuKTsNCn0NCg0KY2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvciA6
IHByaXZhdGUgRXhlY3V0YWJsZUFsbG9jYXRvckJhc2Ugew0KcHVibGljOg0KICAgIHVzaW5nIEJh
c2UgPSBFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciYgc2luZ2xldG9uKCk7DQogICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZSgpOw0KICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVVbmRlcmx5aW5nQWxs
b2NhdG9yKCk7DQoNCiAgICBib29sIGlzVmFsaWQoKSBjb25zdDsNCg0KICAgIHN0YXRpYyBib29s
IHVuZGVyTWVtb3J5UHJlc3N1cmUoKTsNCiAgICANCiAgICBzdGF0aWMgZG91YmxlIG1lbW9yeVBy
ZXNzdXJlTXVsdGlwbGllcihzaXplX3QgYWRkZWRNZW1vcnlVc2FnZSk7DQogICAgDQoNCg0KI2xp
bmUgMTY4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGppdFxcRXhlY3V0YWJsZUFsbG9jYXRvci5oIg0KICAgIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxl
KCkgeyB9DQojbGluZSAxNzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaml0XFxFeGVjdXRhYmxlQWxsb2NhdG9yLmgiDQogICAgDQogICAgX19kZWNs
c3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIHNldEpJVEVuYWJsZWQoYm9vbCk7DQoNCiAgICBS
ZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90IHNpemVJbkJ5dGVz
LCBKSVRDb21waWxhdGlvbkVmZm9ydCk7DQoNCiAgICBib29sIGlzVmFsaWRFeGVjdXRhYmxlTWVt
b3J5KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgdm9pZCogYWRkcmVzcyk7DQoNCiAgICBzdGF0aWMg
c2l6ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOw0KDQogICAgTG9jayYgZ2V0TG9jaygpIGNvbnN0
Ow0KDQoNCg0KDQojbGluZSAxODUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaml0XFxFeGVjdXRhYmxlQWxsb2NhdG9yLmgiDQoNCnByaXZhdGU6DQog
ICAgRXhlY3V0YWJsZUFsbG9jYXRvcigpID0gZGVmYXVsdDsNCiAgICB+RXhlY3V0YWJsZUFsbG9j
YXRvcigpID0gZGVmYXVsdDsNCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMjExICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGppdFxcRXhlY3V0YWJsZUFsbG9jYXRvci5oIg0KDQoNCn0gDQojbGluZSAyOSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJs
ZXJcXE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L0NTdHJp
bmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZkNvdW50ZWQuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCm5h
bWVzcGFjZSBXVEYgew0KDQoNCg0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZkNvdW50ZWQuaCINCg0KI2xpbmUgMzUg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1JlZkNvdW50ZWQuaCINCg0KDQoNCg0KY2xhc3MgUmVmQ291bnRlZEJhc2Ugew0KcHVibGljOg0K
ICAgIHZvaWQgcmVmKCkgY29uc3QNCiAgICB7DQogICAgICAgIGFwcGx5UmVmRGVyZWZUaHJlYWRp
bmdDaGVjaygpOw0KDQoNCg0KDQojbGluZSA0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUmVmQ291bnRlZC5oIg0KICAgICAgICArK21f
cmVmQ291bnQ7DQogICAgfQ0KDQogICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdA0KICAgIHsNCg0K
DQojbGluZSA1NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUmVmQ291bnRlZC5oIg0KICAgICAgICByZXR1cm4gbV9yZWZDb3VudCA9PSAx
Ow0KICAgIH0NCg0KICAgIHVuc2lnbmVkIHJlZkNvdW50KCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiBtX3JlZkNvdW50Ow0KICAgIH0NCg0KICAgIHZvaWQgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCkNCiAgICB7DQoNCg0KDQoNCiNsaW5lIDcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWZDb3VudGVkLmgiDQogICAgfQ0K
DQogICAgDQogICAgDQogICAgdm9pZCBkaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCkNCiAgICB7DQoN
Cg0KI2xpbmUgODEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1JlZkNvdW50ZWQuaCINCiAgICB9DQoNCiAgICBzdGF0aWMgdm9pZCBlbmFi
bGVUaHJlYWRpbmdDaGVja3NHbG9iYWxseSgpDQogICAgew0KDQoNCiNsaW5lIDg4ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWZDb3Vu
dGVkLmgiDQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgUmVmQ291bnRlZEJhc2UoKQ0KICAgICAg
ICA6IG1fcmVmQ291bnQoMSkNCg0KDQojbGluZSA5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUmVmQ291bnRlZC5oIg0KDQoNCg0KI2xp
bmUgMTAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9SZWZDb3VudGVkLmgiDQogICAgew0KICAgIH0NCg0KICAgIHZvaWQgYXBwbHlSZWZE
ZXJlZlRocmVhZGluZ0NoZWNrKCkgY29uc3QNCiAgICB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMTE3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9SZWZDb3VudGVkLmgiDQogICAgfQ0KDQogICAgflJlZkNvdW50ZWRCYXNlKCkN
CiAgICB7DQoNCg0KDQojbGluZSAxMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZkNvdW50ZWQuaCINCiAgICB9DQoNCiAgICANCiAg
ICBib29sIGRlcmVmQmFzZSgpIGNvbnN0DQogICAgew0KICAgICAgICBhcHBseVJlZkRlcmVmVGhy
ZWFkaW5nQ2hlY2soKTsNCg0KDQoNCg0KI2xpbmUgMTM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWZDb3VudGVkLmgiDQoNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICB1bnNpZ25lZCB0ZW1wUmVmQ291bnQgPSBtX3JlZkNvdW50
IC0gMTsNCiAgICAgICAgaWYgKCF0ZW1wUmVmQ291bnQpIHsNCg0KDQojbGluZSAxNDMgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZkNv
dW50ZWQuaCINCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIG1f
cmVmQ291bnQgPSB0ZW1wUmVmQ291bnQ7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoN
Cg0KDQoNCg0KDQojbGluZSAxNTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1JlZkNvdW50ZWQuaCINCg0KcHJpdmF0ZToNCg0KDQoNCiNs
aW5lIDE2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvUmVmQ291bnRlZC5oIg0KDQogICAgbXV0YWJsZSB1bnNpZ25lZCBtX3JlZkNvdW50
Ow0KDQoNCg0KI2xpbmUgMTY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWZDb3VudGVkLmgiDQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIHN0YXRpYyBib29sIGFyZVRocmVhZGluZ0NoZWNrc0VuYWJsZWRHbG9iYWxseTsNCg0KDQoN
CiNsaW5lIDE3MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUmVmQ291bnRlZC5oIg0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4
MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvUmVmQ291bnRlZC5oIg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWxldGVy
ID0gc3RkOjpkZWZhdWx0X2RlbGV0ZTxUPj4gY2xhc3MgUmVmQ291bnRlZCA6IHB1YmxpYyBSZWZD
b3VudGVkQmFzZSB7DQogICAgUmVmQ291bnRlZChjb25zdCBSZWZDb3VudGVkJikgPSBkZWxldGU7
IFJlZkNvdW50ZWQmIG9wZXJhdG9yPShjb25zdCBSZWZDb3VudGVkJikgPSBkZWxldGU7OyBwdWJs
aWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCog
bG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFz
dE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWlj
b2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHZvaWQgZGVyZWYoKSBjb25z
dA0KICAgIHsNCiAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQ0KICAgICAgICAgICAgRGVsZXRlcigp
KGNvbnN0X2Nhc3Q8VCo+KHN0YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKSkpOw0KICAgIH0NCg0K
cHJvdGVjdGVkOg0KICAgIFJlZkNvdW50ZWQoKSB7IH0NCiAgICB+UmVmQ291bnRlZCgpDQogICAg
ew0KICAgIH0NCn07DQoNCn0gDQoNCnVzaW5nIFdURjo6UmVmQ291bnRlZDsNCiNsaW5lIDMyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90
ZXh0L0NTdHJpbmcuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCnVzaW5nIENTdHJpbmdCdWZmZXJN
YWxsb2MgPSBGYXN0TWFsbG9jOw0KDQoNCg0KY2xhc3MgQ1N0cmluZ0J1ZmZlciBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPENTdHJpbmdCdWZmZXI+IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50
OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvID0gaW50Ow0KcHVibGljOg0KICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtdXRh
YmxlRGF0YSgpOyB9DQogICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
OyB9DQoNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7DQoNCiAgICBzdGF0aWMg
UmVmPENTdHJpbmdCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCk7DQoN
CiAgICBDU3RyaW5nQnVmZmVyKHNpemVfdCBsZW5ndGgpIDogbV9sZW5ndGgobGVuZ3RoKSB7IH0N
CiAgICBjaGFyKiBtdXRhYmxlRGF0YSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHRoaXMgKyAxKTsgfQ0KDQogICAgY29uc3Qgc2l6ZV90IG1fbGVuZ3RoOw0KfTsNCg0KDQoNCmNs
YXNzIENTdHJpbmcgZmluYWwgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJl
dHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVy
biBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVz
aW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpw
dWJsaWM6DQogICAgQ1N0cmluZygpIHsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDU3Ry
aW5nKGNvbnN0IGNoYXIqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ1N0cmluZyhjb25z
dCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7DQogICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZm
ZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3Rh
dGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFj
dGVyQnVmZmVyKTsNCiAgICBDU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9i
dWZmZXIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0NCg0KICAgIGNvbnN0IGNoYXIqIGRhdGEo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7DQogICAgfQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiBtdXRh
YmxlRGF0YSgpOw0KICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmxlbmd0aCgpIDogMDsNCiAgICB9DQoNCiAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQ0KICAgIGJvb2wgaXNTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7DQoNCiAgICBDU3RyaW5nQnVmZmVyKiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQ0KICAgIA0KICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpOyB9DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHVuc2lnbmVk
IGhhc2goKSBjb25zdDsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGdy
b3coc2l6ZV90IG5ld0xlbmd0aCk7DQoNCnByaXZhdGU6DQogICAgdm9pZCBjb3B5QnVmZmVySWZO
ZWVkZWQoKTsNCiAgICB2b2lkIGluaXQoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpOw0KICAg
IFJlZlB0cjxDU3RyaW5nQnVmZmVyPiBtX2J1ZmZlcjsNCn07DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYik7
DQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcm
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQ0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKTsNCmlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09
IGIpOyB9DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ1N0cmlu
ZyYgYSwgY29uc3QgQ1N0cmluZyYgYik7DQoNCnN0cnVjdCBDU3RyaW5nSGFzaCB7DQogICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ1N0cmluZyYgc3RyaW5nKSB7IHJldHVybiBzdHJpbmcu
aGFzaCgpOyB9DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7DQp9Ow0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxDU3RyaW5nPiA6IENTdHJpbmdIYXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPENTdHJp
bmc+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENTdHJpbmc+IHsgfTsNCg0KfSANCg0KdXNpbmcg
V1RGOjpDU3RyaW5nOw0KI2xpbmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIg0KDQoNCg0KDQojbGluZSA1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIg0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI7DQoNCmVudW0gT3Bjb2RlSUQgOiB1bnNpZ25lZDsNCg0KDQpjbGFzcyBDRnVuY3Rp
b25QdHIgew0KcHVibGljOg0KICAgIHVzaW5nIFB0ciA9IHZvaWQoKikoKTsNCg0KICAgIENGdW5j
dGlvblB0cigpIHsgfQ0KICAgIENGdW5jdGlvblB0cihzdGQ6Om51bGxwdHJfdCkgeyB9DQoNCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+DQog
ICAgY29uc3RleHByIENGdW5jdGlvblB0cihSZXR1cm5UeXBlKCZwdHIpKEFyZ3VtZW50cy4uLikp
DQogICAgICAgIDogbV9wdHIocmVpbnRlcnByZXRfY2FzdDxQdHI+KCZwdHIpKQ0KICAgIHsgfQ0K
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRz
Pg0KICAgIGV4cGxpY2l0IENGdW5jdGlvblB0cihSZXR1cm5UeXBlKCpwdHIpKEFyZ3VtZW50cy4u
LikpDQogICAgICAgIDogbV9wdHIocmVpbnRlcnByZXRfY2FzdDxQdHI+KHB0cikpDQogICAgew0K
ICAgICAgICBhc3NlcnRJc0NGdW5jdGlvblB0cihtX3B0cik7DQogICAgfQ0KDQogICAgDQogICAg
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIg0KDQogICAgY29uc3RleHByIFB0ciBnZXQoKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQ0KICAgIHZvaWQqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihtX3B0cik7IH0NCg0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9DQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9wdHI7IH0NCg0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDRnVuY3Rpb25Q
dHImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQ0KICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBDRnVuY3Rpb25QdHImIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X3B0ciAhPSBvdGhlci5tX3B0cjsgfQ0KDQpwcml2YXRlOg0KICAgIFB0ciBtX3B0ciB7IG51bGxw
dHIgfTsNCn07DQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZTxQdHJUYWcgdGFnID0gQ0Z1bmN0aW9uUHRy
VGFnPg0KY2xhc3MgRnVuY3Rpb25QdHIgew0KcHVibGljOg0KICAgIEZ1bmN0aW9uUHRyKCkgeyB9
DQogICAgRnVuY3Rpb25QdHIoc3RkOjpudWxscHRyX3QpIHsgfQ0KDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPg0KICAgIEZ1bmN0aW9uUHRy
KFJldHVyblR5cGUoKnZhbHVlKShBcmd1bWVudHMuLi4pKQ0KICAgICAgICA6IG1fdmFsdWUodGFn
Q0Z1bmN0aW9uUHRyPHZvaWQqLCB0YWc+KHZhbHVlKSkNCiAgICB7DQogICAgICAgIGFzc2VydElz
TnVsbE9yQ0Z1bmN0aW9uUHRyKHZhbHVlKTsNCiAgICAgICAgOw0KICAgIH0NCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTY5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiDQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZSAmJiAhc3RkOjppc19mdW5j
dGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFB0clR5cGU+Ojp0eXBlPjo6dmFsdWU+
Pg0KICAgIGV4cGxpY2l0IEZ1bmN0aW9uUHRyKFB0clR5cGUgdmFsdWUpDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIDogbV92YWx1ZSh0YWdDRnVuY3Rpb25QdHI8dm9pZCos
IHRhZz4odmFsdWUpKQ0KICAgIHsNCiAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHIo
dmFsdWUpOw0KICAgICAgICA7DQogICAgfQ0KDQogICAgZXhwbGljaXQgRnVuY3Rpb25QdHIoTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4pOw0KDQogICAgdGVtcGxhdGU8UHRyVGFnIG90aGVyVGFn
Pg0KICAgIEZ1bmN0aW9uUHRyPG90aGVyVGFnPiByZXRhZ2dlZCgpIGNvbnN0DQogICAgew0KICAg
ICAgICBpZiAoIW1fdmFsdWUpDQogICAgICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHI8b3RoZXJU
YWc+KCk7DQogICAgICAgIHJldHVybiBGdW5jdGlvblB0cjxvdGhlclRhZz4oKnRoaXMpOw0KICAg
IH0NCg0KICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiBtX3ZhbHVlOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPFB0clRhZyBuZXdUYWc+DQog
ICAgdm9pZCogcmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gcmV0YWdDb2RlUHRyPHRhZywgbmV3VGFnPihtX3ZhbHVlKTsNCiAgICB9DQoNCiAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3ZhbHVlOyB9DQog
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV92YWx1ZTsgfQ0KDQogICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZ1bmN0aW9uUHRyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92
YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9DQogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZ1bmN0
aW9uUHRyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlOyB9
DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGU8UHRyVGFnIG90aGVyVGFnPg0KICAgIGV4cGxpY2l0
IEZ1bmN0aW9uUHRyKGNvbnN0IEZ1bmN0aW9uUHRyPG90aGVyVGFnPiYgb3RoZXIpDQogICAgICAg
IDogbV92YWx1ZShyZXRhZ0NvZGVQdHI8b3RoZXJUYWcsIHRhZz4ob3RoZXIuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpDQogICAgew0KICAgICAgICA7DQogICAgfQ0KDQogICAgdm9pZCogbV92YWx1ZSB7
IG51bGxwdHIgfTsNCg0KICAgIHRlbXBsYXRlPFB0clRhZz4gZnJpZW5kIGNsYXNzIEZ1bmN0aW9u
UHRyOw0KfTsNCg0Kc3RhdGljX2Fzc2VydChzaXplb2YoRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPikgPT0gc2l6ZW9mKHZvaWQqKSwgIiIpOw0KDQoNCiNsaW5lIDIyNSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oIg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBSZXR1cm5BZGRyZXNzUHRyIHsN
CnB1YmxpYzoNCiAgICBSZXR1cm5BZGRyZXNzUHRyKCkgeyB9DQoNCiAgICBleHBsaWNpdCBSZXR1
cm5BZGRyZXNzUHRyKGNvbnN0IHZvaWQqIHZhbHVlKQ0KICAgICAgICA6IG1fdmFsdWUodmFsdWUp
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgY29uc3Qgdm9pZCogdmFs
dWUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fdmFsdWU7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdA0KICAgIHsNCiAgICAgICAgb3V0
LnByaW50KFJhd1BvaW50ZXIobV92YWx1ZSkpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBjb25z
dCB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9Ow0KfTsNCg0KDQoNCg0KY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyQmFzZSB7DQpwcm90ZWN0ZWQ6DQogICAgc3RhdGljIHZvaWQgZHVtcFdpdGhO
YW1lKHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCB2b2lkKiBkYXRhTG9jYXRpb24sIGNvbnN0IGNo
YXIqIG5hbWUsIFByaW50U3RyZWFtJiBvdXQpOw0KfTsNCg0KDQoNCnRlbXBsYXRlPFB0clRhZyB0
YWc+DQpjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ckJhc2Ugew0KcHVibGljOg0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpID0gZGVm
YXVsdDsNCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoc3RkOjpudWxscHRyX3QpIDogbV92YWx1
ZShudWxscHRyKSB7IH0NCg0KICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihjb25z
dCB2b2lkKiB2YWx1ZSkNCg0KDQoNCiNsaW5lIDI3NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oIg0KICAgICAgICA6IG1fdmFsdWUodmFsdWUpDQojbGluZSAyNzkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaCINCiAgICB7DQogICAgICAgIGFzc2VydElzVGFnZ2VkV2l0aCh2YWx1ZSwg
dGFnKTsNCiAgICAgICAgKCh2b2lkKTApOw0KDQoNCiNsaW5lIDI4NSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoY29uc3Qgdm9p
ZCogdmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgYXNzZXJ0SXNUYWdnZWRXaXRoKHZhbHVlLCB0YWcpOw0KICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcmVzdWx0Ow0KICAgICAgICByZXN1bHQubV92YWx1ZSA9IHZhbHVlOw0K
ICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJhKQ0KICAgICAgICA6IG1fdmFsdWUodGFnQ29k
ZVB0cjx0YWc+KHJhLnZhbHVlKCkpKQ0KICAgIHsNCiAgICAgICAgYXNzZXJ0SXNOb3RUYWdnZWQo
cmEudmFsdWUoKSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPFB0clRhZyBuZXdUYWc+DQogICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPG5ld1RhZz4gcmV0YWdnZWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFtX3ZhbHVl
KQ0KICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxuZXdUYWc+KCk7DQog
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8bmV3VGFnPjo6Y3JlYXRlRnJvbUV4
ZWN1dGFibGVBZGRyZXNzKHJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8bmV3VGFnPigpKTsNCiAg
ICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+DQogICAgVCBleGVjdXRhYmxl
QWRkcmVzcygpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KG1f
dmFsdWUpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4NCiAgICBU
IHVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHVudGFnQ29kZVB0cjxULCB0YWc+KG1fdmFsdWUpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPFB0
clRhZyBuZXdUYWcsIHR5cGVuYW1lIFQgPSB2b2lkKj4NCiAgICBUIHJldGFnZ2VkRXhlY3V0YWJs
ZUFkZHJlc3MoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHJldGFnQ29kZVB0cjxULCB0
YWcsIG5ld1RhZz4obV92YWx1ZSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzQx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2Vt
YmxlclxcTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9
IHZvaWQqPg0KICAgIFQgZGF0YUxvY2F0aW9uKCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgcmV0dXJuIHVudGFnQ29kZVB0cjxULCB0YWc+KG1fdmFsdWUpOw0KICAg
IH0NCiNsaW5lIDM0OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIg0KDQogICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICFtX3ZhbHVlOw0KICAgIH0N
CiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISghKnRoaXMpOyB9
DQogICAgDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
b3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3Zh
bHVlOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFQsIGJvb2w+Ojp2YWx1ZT4+DQog
ICAgb3BlcmF0b3IgVCgpID0gZGVsZXRlOw0KDQogICAgdm9pZCBkdW1wV2l0aE5hbWUoY29uc3Qg
Y2hhciogbmFtZSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QNCiAgICB7DQogICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ckJhc2U6OmR1bXBXaXRoTmFtZShleGVjdXRhYmxlQWRkcmVzcygpLCBk
YXRhTG9jYXRpb24oKSwgbmFtZSwgb3V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QgeyBkdW1wV2l0aE5hbWUoIkNvZGVQdHIiLCBvdXQpOyB9DQoNCiAg
ICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07DQogICAgZW51bSBEZWxldGVkVmFs
dWVUYWcgeyBEZWxldGVkVmFsdWUgfTsNCiAgICANCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
RW1wdHlWYWx1ZVRhZykNCiAgICAgICAgOiBtX3ZhbHVlKGVtcHR5VmFsdWUoKSkNCiAgICB7IH0N
CiAgICANCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoRGVsZXRlZFZhbHVlVGFnKQ0KICAgICAg
ICA6IG1fdmFsdWUoZGVsZXRlZFZhbHVlKCkpDQogICAgeyB9DQogICAgDQogICAgYm9vbCBpc0Vt
cHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IGVtcHR5VmFsdWUoKTsgfQ0KICAg
IGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IGRlbGV0ZWRW
YWx1ZSgpOyB9DQoNCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gUHRySGFzaDxj
b25zdCB2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0NCg0KICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoKTsNCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgY29uc3Qgdm9pZCogZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpKTsgfQ0K
ICAgIHN0YXRpYyBjb25zdCB2b2lkKiBkZWxldGVkVmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigyKSk7IH0NCg0KICAgIGNvbnN0IHZvaWQq
IG1fdmFsdWUgeyBudWxscHRyIH07DQp9Ow0KDQp0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0Kc3RydWN0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckhhc2ggew0KICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+JiBwdHIpIHsgcmV0dXJuIHB0ci5oYXNoKCk7
IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFn
PiYgYSwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4mIGIpDQogICAgew0KICAgICAg
ICByZXR1cm4gYSA9PSBiOw0KICAgIH0NCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOw0KfTsNCg0KDQoNCg0KDQoNCmNsYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZkJhc2Ugew0KcHJvdGVjdGVkOg0KICAgIHN0YXRpYyBib29sIHRy
eVRvRGlzYXNzZW1ibGUoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiwg
c2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpOw0KICAgIHN0YXRp
YyBib29sIHRyeVRvRGlzYXNzZW1ibGUoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5
UHRyVGFnPiwgc2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgpOw0KICAgIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBzdGF0aWMgQ1N0cmluZyBkaXNhc3NlbWJseShNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
RGlzYXNzZW1ibHlQdHJUYWc+LCBzaXplX3QpOw0KfTsNCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4N
CmNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmQmFzZSB7DQpwcml2YXRlOg0KICAgIA0KICAgIA0KICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBjb2RlUHRyKQ0KICAgICAgICA6
IG1fY29kZVB0cihjb2RlUHRyKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0K
cHVibGljOg0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpID0gZGVmYXVsdDsNCg0KICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZihSZWY8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4mJiBleGVjdXRh
YmxlTWVtb3J5KQ0KICAgICAgICA6IG1fY29kZVB0cihleGVjdXRhYmxlTWVtb3J5LT5zdGFydCgp
LnJldGFnZ2VkUHRyPHRhZz4oKSkNCiAgICAgICAgLCBtX2V4ZWN1dGFibGVNZW1vcnkoc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihleGVjdXRhYmxlTWVtb3J5KSkNCiAgICB7DQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPFB0clRhZyBvdGhlclRhZz4NCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIG9wZXJhdG9y
PShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8b3RoZXJUYWc+JiBvdGhlckNvZGVSZWYpDQog
ICAgew0KICAgICAgICBtX2NvZGVQdHIgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3Jl
YXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKG90aGVyQ29kZVJlZi5jb2RlKCkudGVtcGxhdGUgcmV0
YWdnZWRFeGVjdXRhYmxlQWRkcmVzczx0YWc+KCkpOw0KICAgICAgICBtX2V4ZWN1dGFibGVNZW1v
cnkgPSBvdGhlckNvZGVSZWYubV9leGVjdXRhYmxlTWVtb3J5Ow0KICAgICAgICByZXR1cm4gKnRo
aXM7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjx0YWc+IGNvZGVQdHIpDQogICAgew0KICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmKGNvZGVQdHIpOw0KICAgIH0NCiAgICANCiAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBl
eGVjdXRhYmxlTWVtb3J5KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2V4ZWN1dGFi
bGVNZW1vcnkuZ2V0KCk7DQogICAgfQ0KICAgIA0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0
YWc+IGNvZGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fY29kZVB0cjsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgbmV3VGFnPg0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxuZXdUYWc+IHJldGFnZ2VkQ29kZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9j
b2RlUHRyLnRlbXBsYXRlIHJldGFnZ2VkPG5ld1RhZz4oKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZTxQdHJUYWcgbmV3VGFnPg0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxuZXdUYWc+IHJldGFn
Z2VkKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
bmV3VGFnPigqdGhpcyk7DQogICAgfQ0KDQogICAgc2l6ZV90IHNpemUoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpDQogICAgICAgICAgICByZXR1cm4gMDsN
CiAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZU1lbW9yeS0+c2l6ZUluQnl0ZXMoKTsNCiAgICB9
DQoNCiAgICBib29sIHRyeVRvRGlzYXNzZW1ibGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hh
ciogcHJlZml4ID0gIiIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gdHJ5VG9EaXNhc3Nl
bWJsZShyZXRhZ2dlZENvZGU8RGlzYXNzZW1ibHlQdHJUYWc+KCksIHNpemUoKSwgcHJlZml4LCBv
dXQpOw0KICAgIH0NCiAgICANCiAgICBib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgY2hhciog
cHJlZml4ID0gIiIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gdHJ5VG9EaXNhc3NlbWJs
ZShyZXRhZ2dlZENvZGU8RGlzYXNzZW1ibHlQdHJUYWc+KCksIHNpemUoKSwgcHJlZml4KTsNCiAg
ICB9DQogICAgDQogICAgQ1N0cmluZyBkaXNhc3NlbWJseSgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmQmFzZTo6ZGlzYXNzZW1ibHkocmV0YWdnZWRD
b2RlPERpc2Fzc2VtYmx5UHRyVGFnPigpLCBzaXplKCkpOw0KICAgIH0NCiAgICANCiAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NvZGVQdHI7IH0NCiAgICAN
CiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QNCiAgICB7DQogICAgICAgIG1f
Y29kZVB0ci5kdW1wV2l0aE5hbWUoIkNvZGVSZWYiLCBvdXQpOw0KICAgIH0NCg0KcHJpdmF0ZToN
CiAgICB0ZW1wbGF0ZTxQdHJUYWcgb3RoZXJUYWc+DQogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxvdGhlclRhZz4mIG90aGVyQ29kZVJlZikNCiAg
ICB7DQogICAgICAgICp0aGlzID0gb3RoZXJDb2RlUmVmOw0KICAgIH0NCg0KICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjx0YWc+IG1fY29kZVB0cjsNCiAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9y
eUhhbmRsZT4gbV9leGVjdXRhYmxlTWVtb3J5Ow0KDQogICAgdGVtcGxhdGU8UHRyVGFnPiBmcmll
bmQgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOw0KfTsNCg0KdGVtcGxhdGU8UHRyVGFnIHRh
Zz4NCmlubGluZSBGdW5jdGlvblB0cjx0YWc+OjpGdW5jdGlvblB0cihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8dGFnPiBwdHIpDQogICAgOiBtX3ZhbHVlKHB0ci5leGVjdXRhYmxlQWRkcmVzcygpKQ0K
ew0KfQ0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8SlNDOjpQdHJUYWcgdGFnPiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPj4gOiBKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVB0ckhhc2g8dGFnPiB7IH07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBI
YXNoVHJhaXRzOw0KdGVtcGxhdGU8SlNDOjpQdHJUYWcgdGFnPiBzdHJ1Y3QgSGFzaFRyYWl0czxK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+PiA6IHB1YmxpYyBDdXN0b21IYXNoVHJhaXRz
PEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4+IHsgfTsNCg0KfSANCiNsaW5lIDI5ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJl
dGVyXFxBYnN0cmFjdFBDLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDYWxsRnJhbWU7
DQpjbGFzcyBWTTsNCnN0cnVjdCBJbnN0cnVjdGlvbjsNCg0KY2xhc3MgQWJzdHJhY3RQQyB7DQpw
dWJsaWM6DQogICAgQWJzdHJhY3RQQygpDQogICAgICAgIDogbV9tb2RlKE5vbmUpDQogICAgew0K
ICAgIH0NCiAgICANCiAgICBBYnN0cmFjdFBDKFZNJiwgQ2FsbEZyYW1lKik7DQogICAgDQoNCiAg
ICBBYnN0cmFjdFBDKFJldHVybkFkZHJlc3NQdHIgcHRyKQ0KICAgICAgICA6IG1fcG9pbnRlcihw
dHIudmFsdWUoKSkNCiAgICAgICAgLCBtX21vZGUoSklUKQ0KICAgIHsNCiAgICB9DQogICAgDQog
ICAgYm9vbCBoYXNKSVRSZXR1cm5BZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IEpJ
VDsgfQ0KICAgIFJldHVybkFkZHJlc3NQdHIgaml0UmV0dXJuQWRkcmVzcygpIGNvbnN0DQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBSZXR1cm5BZGRyZXNzUHRyKG1f
cG9pbnRlcik7DQogICAgfQ0KI2xpbmUgNTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXEFic3RyYWN0UEMuaCINCg0KICAgIGJv
b2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX21vZGUgIT0gTm9uZTsgfQ0KICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0NCg0KcHJpdmF0ZToNCg0KICAgIGNv
bnN0IHZvaWQqIG1fcG9pbnRlciB7IG51bGxwdHIgfTsNCiNsaW5lIDY3ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJldGVyXFxBYnN0cmFj
dFBDLmgiDQoNCiAgICBlbnVtIE1vZGUgeyBOb25lLCBKSVQsIEludGVycHJldGVyIH07DQogICAg
TW9kZSBtX21vZGU7DQp9Ow0KDQp9IA0KI2xpbmUgMjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENhbGxGcmFtZS5oIg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxp
bnRlcnByZXRlclxcQ2FsbGVlQml0cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NKU1ZhbHVl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEVDTUFNb2RlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgV1RGIHsN
CmNsYXNzIFByaW50U3RyZWFtOw0KfTsNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnN0cnVjdCBFQ01B
TW9kZSB7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IFN0cmljdE1vZGUgPSAwOw0KICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBTbG9wcHlNb2RlID0gMTsNCg0KcHVibGljOg0KICAg
IHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgZnJvbUJ5dGUodWludDhfdCBieXRlKSB7IHJldHVy
biBFQ01BTW9kZShieXRlKTsgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgRUNNQU1vZGUgc3RyaWN0
KCkgeyByZXR1cm4gRUNNQU1vZGUoU3RyaWN0TW9kZSk7IH0NCiAgICBzdGF0aWMgY29uc3RleHBy
IEVDTUFNb2RlIHNsb3BweSgpIHsgcmV0dXJuIEVDTUFNb2RlKFNsb3BweU1vZGUpOyB9DQoNCiAg
ICBfX2ZvcmNlaW5saW5lIGJvb2wgaXNTdHJpY3QoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09
IFN0cmljdE1vZGU7IH0NCiAgICBfX2ZvcmNlaW5saW5lIHVpbnQ4X3QgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9DQoNCiAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNv
bnN0Ow0KDQpwcml2YXRlOg0KICAgIGNvbnN0ZXhwciBFQ01BTW9kZSh1aW50OF90IHZhbHVlKQ0K
ICAgICAgICA6IG1fdmFsdWUodmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
fQ0KDQogICAgdWludDhfdCBtX3ZhbHVlOw0KfTsNCg0KfSANCiNsaW5lIDI2ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFs
dWUuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxQdXJlTmFOLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2Ug
SlNDIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KaW5saW5lIGRvdWJsZSBwdXJlTmFOKCkNCnsNCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRv
dWJsZT4oMHg3ZmY4MDAwMDAwMDAwMDAwbGwpOw0KfQ0KDQoNCg0KaW5saW5lIGJvb2wgaXNJbXB1
cmVOYU4oZG91YmxlIHZhbHVlKQ0Kew0KICAgIA0KICAgIA0KICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8dWludDY0X3Q+KHZhbHVlKSA+PSAweGZmZmUwMDAwMDAwMDAwMDBsbHU7DQp9DQoNCg0KaW5s
aW5lIGRvdWJsZSBwdXJpZnlOYU4oZG91YmxlIHZhbHVlKQ0Kew0KICAgIGlmICh2YWx1ZSAhPSB2
YWx1ZSkNCiAgICAgICAgcmV0dXJuIChwdXJlTmFOKCkpOw0KICAgIHJldHVybiB2YWx1ZTsNCn0g
ICANCg0KfSANCiNsaW5lIDI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCiNsaW5lIDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVuY3Rpb25hbCINCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHVub3JkZXJlZF9tYXAi
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2giDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkNCiNwcmFn
bWEgd2FybmluZyhwdXNoLCA0KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTgwIDQ0MTIg
NDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgyIDQ1ODMgNDU4NyA0NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2
MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0ODIwIDQ5ODggNTAyNiA1MDI3IDUwNDUgNjI5NCA0NTc3
ICA1MDUzICkNCg0KDQoNCg0KbmFtZXNwYWNlIHN0ZCB7DQoNCnRlbXBsYXRlIDxjbGFzcyBfTXls
aXN0LCBjbGFzcyBfQmFzZSA9IF9JdGVyYXRvcl9iYXNlMD4NCmNsYXNzIF9MaXN0X3VuY2hlY2tl
ZF9jb25zdF9pdGVyYXRvciA6IHB1YmxpYyBfQmFzZSB7DQpwdWJsaWM6DQogICAgdXNpbmcgaXRl
cmF0b3JfY2F0ZWdvcnkgPSBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsNCg0KICAgIHVzaW5n
IF9Ob2RlcHRyICAgICAgICA9IHR5cGVuYW1lIF9NeWxpc3Q6Ol9Ob2RlcHRyOw0KICAgIHVzaW5n
IHZhbHVlX3R5cGUgICAgICA9IHR5cGVuYW1lIF9NeWxpc3Q6OnZhbHVlX3R5cGU7DQogICAgdXNp
bmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgX015bGlzdDo6ZGlmZmVyZW5jZV90eXBlOw0K
ICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICA9IHR5cGVuYW1lIF9NeWxpc3Q6OmNvbnN0X3BvaW50
ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgID0gY29uc3QgdmFsdWVfdHlwZSY7DQoNCiAg
ICBfTGlzdF91bmNoZWNrZWRfY29uc3RfaXRlcmF0b3IoKSBub2V4Y2VwdCA6IF9QdHIoKSB7fQ0K
DQogICAgX0xpc3RfdW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yKF9Ob2RlcHRyIF9Qbm9kZSwgY29u
c3QgX015bGlzdCogX1BsaXN0KSBub2V4Y2VwdCA6IF9QdHIoX1Bub2RlKSB7DQogICAgICAgIHRo
aXMtPl9BZG9wdChfUGxpc3QpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmVmZXJlbmNl
IG9wZXJhdG9yKigpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIF9QdHItPl9NeXZhbDsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsNCiAgICAg
ICAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzPHBvaW50ZXI+Ojpwb2ludGVyX3RvKCoqdGhpcyk7DQog
ICAgfQ0KDQogICAgX0xpc3RfdW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkg
ew0KICAgICAgICBfUHRyID0gX1B0ci0+X05leHQ7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgICBfTGlzdF91bmNoZWNrZWRfY29uc3RfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQp
IHsNCiAgICAgICAgX0xpc3RfdW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsN
CiAgICAgICAgX1B0ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBfUHRyLT5fTmV4
dDsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgX0xpc3RfdW5jaGVja2VkX2Nv
bnN0X2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkgew0KICAgICAgICBfUHRyID0gX1B0ci0+X1ByZXY7
DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBfTGlzdF91bmNoZWNrZWRfY29u
c3RfaXRlcmF0b3Igb3BlcmF0b3ItLShpbnQpIHsNCiAgICAgICAgX0xpc3RfdW5jaGVja2VkX2Nv
bnN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgX1B0ciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBfUHRyLT5fUHJldjsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPT0oY29uc3QgX0xpc3RfdW5jaGVj
a2VkX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIF9QdHIg
PT0gX1JpZ2h0Ll9QdHI7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9y
IT0oY29uc3QgX0xpc3RfdW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsN
CiAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gX1JpZ2h0KTsNCiAgICB9DQoNCiAgICBfTm9kZXB0
ciBfUHRyOyANCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9NeWxpc3Q+DQpjbGFzcyBfTGlzdF91
bmNoZWNrZWRfaXRlcmF0b3IgOiBwdWJsaWMgX0xpc3RfdW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9y
PF9NeWxpc3Q+IHsNCnB1YmxpYzoNCiAgICB1c2luZyBfTXliYXNlICAgICAgICAgICA9IF9MaXN0
X3VuY2hlY2tlZF9jb25zdF9pdGVyYXRvcjxfTXlsaXN0PjsNCiAgICB1c2luZyBpdGVyYXRvcl9j
YXRlZ29yeSA9IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOw0KDQogICAgdXNpbmcgX05vZGVw
dHIgICAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6X05vZGVwdHI7DQogICAgdXNpbmcgdmFsdWVf
dHlwZSAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6dmFsdWVfdHlwZTsNCiAgICB1c2luZyBkaWZm
ZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBfTXlsaXN0OjpkaWZmZXJlbmNlX3R5cGU7DQogICAgdXNp
bmcgcG9pbnRlciAgICAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6cG9pbnRlcjsNCiAgICB1c2lu
ZyByZWZlcmVuY2UgICAgICAgPSB2YWx1ZV90eXBlJjsNCg0KICAgIHVzaW5nIF9NeWJhc2U6Ol9N
eWJhc2U7DQoNCiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7
DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PHJlZmVyZW5jZT4oX015YmFzZTo6b3BlcmF0b3Iq
KCkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcG9pbnRlciBvcGVyYXRvci0+KCkgY29u
c3Qgew0KICAgICAgICByZXR1cm4gcG9pbnRlcl90cmFpdHM8cG9pbnRlcj46OnBvaW50ZXJfdG8o
Kip0aGlzKTsNCiAgICB9DQoNCiAgICBfTGlzdF91bmNoZWNrZWRfaXRlcmF0b3ImIG9wZXJhdG9y
KysoKSB7DQogICAgICAgIF9NeWJhc2U6Om9wZXJhdG9yKysoKTsNCiAgICAgICAgcmV0dXJuICp0
aGlzOw0KICAgIH0NCg0KICAgIF9MaXN0X3VuY2hlY2tlZF9pdGVyYXRvciBvcGVyYXRvcisrKGlu
dCkgew0KICAgICAgICBfTGlzdF91bmNoZWNrZWRfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAg
ICAgICBfTXliYXNlOjpvcGVyYXRvcisrKCk7DQogICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0N
Cg0KICAgIF9MaXN0X3VuY2hlY2tlZF9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsNCiAgICAgICAg
X015YmFzZTo6b3BlcmF0b3ItLSgpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQog
ICAgX0xpc3RfdW5jaGVja2VkX2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7DQogICAgICAgIF9M
aXN0X3VuY2hlY2tlZF9pdGVyYXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgIF9NeWJhc2U6Om9w
ZXJhdG9yLS0oKTsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX015bGlzdD4NCmNsYXNzIF9MaXN0X2NvbnN0X2l0ZXJhdG9yIDogcHVibGljIF9M
aXN0X3VuY2hlY2tlZF9jb25zdF9pdGVyYXRvcjxfTXlsaXN0LCBfSXRlcmF0b3JfYmFzZT4gew0K
cHVibGljOg0KICAgIHVzaW5nIF9NeWJhc2UgICAgICAgICAgID0gX0xpc3RfdW5jaGVja2VkX2Nv
bnN0X2l0ZXJhdG9yPF9NeWxpc3QsIF9JdGVyYXRvcl9iYXNlPjsNCiAgICB1c2luZyBpdGVyYXRv
cl9jYXRlZ29yeSA9IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOw0KDQogICAgdXNpbmcgX05v
ZGVwdHIgICAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6X05vZGVwdHI7DQogICAgdXNpbmcgdmFs
dWVfdHlwZSAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6dmFsdWVfdHlwZTsNCiAgICB1c2luZyBk
aWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBfTXlsaXN0OjpkaWZmZXJlbmNlX3R5cGU7DQogICAg
dXNpbmcgcG9pbnRlciAgICAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6Y29uc3RfcG9pbnRlcjsN
CiAgICB1c2luZyByZWZlcmVuY2UgICAgICAgPSBjb25zdCB2YWx1ZV90eXBlJjsNCg0KICAgIHVz
aW5nIF9NeWJhc2U6Ol9NeWJhc2U7DQoNCiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5jZSBvcGVy
YXRvciooKSBjb25zdCB7DQoNCg0KDQoNCiNsaW5lIDE1MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KDQogICAgICAgIHJldHVybiB0aGlz
LT5fUHRyLT5fTXl2YWw7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBwb2ludGVyIG9wZXJh
dG9yLT4oKSBjb25zdCB7DQogICAgICAgIHJldHVybiBwb2ludGVyX3RyYWl0czxwb2ludGVyPjo6
cG9pbnRlcl90bygqKnRoaXMpOw0KICAgIH0NCg0KICAgIF9MaXN0X2NvbnN0X2l0ZXJhdG9yJiBv
cGVyYXRvcisrKCkgew0KDQoNCg0KDQojbGluZSAxNjUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCg0KICAgICAgICB0aGlzLT5fUHRyID0g
dGhpcy0+X1B0ci0+X05leHQ7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBf
TGlzdF9jb25zdF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgew0KICAgICAgICBfTGlzdF9jb25z
dF9pdGVyYXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgICsrKnRoaXM7DQogICAgICAgIHJldHVy
biBfVG1wOw0KICAgIH0NCg0KICAgIF9MaXN0X2NvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkg
ew0KICAgICAgICBjb25zdCBhdXRvIF9OZXdfcHRyID0gdGhpcy0+X1B0ci0+X1ByZXY7DQoNCg0K
DQoNCiNsaW5lIDE4MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFxsaXN0Ig0KDQogICAgICAgIHRoaXMtPl9QdHIgPSBfTmV3X3B0cjsNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIF9MaXN0X2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9y
LS0oaW50KSB7DQogICAgICAgIF9MaXN0X2NvbnN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAg
ICAgICAgLS0qdGhpczsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgW1tub2Rp
c2NhcmRdXSBib29sIG9wZXJhdG9yPT0oY29uc3QgX0xpc3RfY29uc3RfaXRlcmF0b3ImIF9SaWdo
dCkgY29uc3Qgew0KDQoNCiNsaW5lIDE5OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KDQogICAgICAgIHJldHVybiB0aGlzLT5fUHRyID09
IF9SaWdodC5fUHRyOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvciE9
KGNvbnN0IF9MaXN0X2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gX1JpZ2h0KTsNCiAgICB9DQoNCg0KDQoNCg0KI2xpbmUgMjExICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCiAg
ICB1c2luZyBfUHJldmVudF9pbmhlcml0aW5nX3Vud3JhcCA9IF9MaXN0X2NvbnN0X2l0ZXJhdG9y
Ow0KDQogICAgW1tub2Rpc2NhcmRdXSBfTGlzdF91bmNoZWNrZWRfY29uc3RfaXRlcmF0b3I8X015
bGlzdD4gX1Vud3JhcHBlZCgpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIF9MaXN0X3VuY2hlY2tl
ZF9jb25zdF9pdGVyYXRvcjxfTXlsaXN0Pih0aGlzLT5fUHRyLCBzdGF0aWNfY2FzdDxjb25zdCBf
TXlsaXN0Kj4odGhpcy0+X0dldGNvbnQoKSkpOw0KICAgIH0NCg0KICAgIHZvaWQgX1NlZWtfdG8o
Y29uc3QgX0xpc3RfdW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yPF9NeWxpc3Q+IF9JdCkgew0KICAg
ICAgICB0aGlzLT5fUHRyID0gX0l0Ll9QdHI7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX015bGlzdD4NCmNsYXNzIF9MaXN0X2l0ZXJhdG9yIDogcHVibGljIF9MaXN0X2NvbnN0X2l0
ZXJhdG9yPF9NeWxpc3Q+IHsNCnB1YmxpYzoNCiAgICB1c2luZyBfTXliYXNlICAgICAgICAgICA9
IF9MaXN0X2NvbnN0X2l0ZXJhdG9yPF9NeWxpc3Q+Ow0KICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVn
b3J5ID0gYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7DQoNCiAgICB1c2luZyBfTm9kZXB0ciAg
ICAgICAgPSB0eXBlbmFtZSBfTXlsaXN0OjpfTm9kZXB0cjsNCiAgICB1c2luZyB2YWx1ZV90eXBl
ICAgICAgPSB0eXBlbmFtZSBfTXlsaXN0Ojp2YWx1ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVu
Y2VfdHlwZSA9IHR5cGVuYW1lIF9NeWxpc3Q6OmRpZmZlcmVuY2VfdHlwZTsNCiAgICB1c2luZyBw
b2ludGVyICAgICAgICAgPSB0eXBlbmFtZSBfTXlsaXN0Ojpwb2ludGVyOw0KICAgIHVzaW5nIHJl
ZmVyZW5jZSAgICAgICA9IHZhbHVlX3R5cGUmOw0KDQogICAgdXNpbmcgX015YmFzZTo6X015YmFz
ZTsNCg0KICAgIFtbbm9kaXNjYXJkXV0gcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsNCiAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8cmVmZXJlbmNlPihfTXliYXNlOjpvcGVyYXRvciooKSk7
DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7
DQogICAgICAgIHJldHVybiBwb2ludGVyX3RyYWl0czxwb2ludGVyPjo6cG9pbnRlcl90bygqKnRo
aXMpOw0KICAgIH0NCg0KICAgIF9MaXN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgew0KICAgICAg
ICBfTXliYXNlOjpvcGVyYXRvcisrKCk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoN
CiAgICBfTGlzdF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgew0KICAgICAgICBfTGlzdF9pdGVy
YXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgIF9NeWJhc2U6Om9wZXJhdG9yKysoKTsNCiAgICAg
ICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgX0xpc3RfaXRlcmF0b3ImIG9wZXJhdG9yLS0o
KSB7DQogICAgICAgIF9NeWJhc2U6Om9wZXJhdG9yLS0oKTsNCiAgICAgICAgcmV0dXJuICp0aGlz
Ow0KICAgIH0NCg0KICAgIF9MaXN0X2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7DQogICAgICAg
IF9MaXN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgX015YmFzZTo6b3BlcmF0b3It
LSgpOw0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICB1c2luZyBfUHJldmVudF9p
bmhlcml0aW5nX3Vud3JhcCA9IF9MaXN0X2l0ZXJhdG9yOw0KDQogICAgW1tub2Rpc2NhcmRdXSBf
TGlzdF91bmNoZWNrZWRfaXRlcmF0b3I8X015bGlzdD4gX1Vud3JhcHBlZCgpIGNvbnN0IHsNCiAg
ICAgICAgcmV0dXJuIF9MaXN0X3VuY2hlY2tlZF9pdGVyYXRvcjxfTXlsaXN0Pih0aGlzLT5fUHRy
LCBzdGF0aWNfY2FzdDxjb25zdCBfTXlsaXN0Kj4odGhpcy0+X0dldGNvbnQoKSkpOw0KICAgIH0N
Cn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZV90eXBlLCBjbGFzcyBfU2l6ZV90eXBlLCBj
bGFzcyBfRGlmZmVyZW5jZV90eXBlLCBjbGFzcyBfUG9pbnRlciwgY2xhc3MgX0NvbnN0X3BvaW50
ZXIsDQogICAgY2xhc3MgX1JlZmVyZW5jZSwgY2xhc3MgX0NvbnN0X3JlZmVyZW5jZSwgY2xhc3Mg
X05vZGVwdHJfdHlwZT4NCnN0cnVjdCBfTGlzdF9pdGVyX3R5cGVzIHsNCiAgICB1c2luZyB2YWx1
ZV90eXBlICAgICAgPSBfVmFsdWVfdHlwZTsNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICAgPSBf
U2l6ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IF9EaWZmZXJlbmNlX3R5cGU7
DQogICAgdXNpbmcgcG9pbnRlciAgICAgICAgID0gX1BvaW50ZXI7DQogICAgdXNpbmcgY29uc3Rf
cG9pbnRlciAgID0gX0NvbnN0X3BvaW50ZXI7DQogICAgdXNpbmcgX05vZGVwdHIgICAgICAgID0g
X05vZGVwdHJfdHlwZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVmFsdWVfdHlwZSwgY2xhc3Mg
X1ZvaWRwdHI+DQpzdHJ1Y3QgX0xpc3Rfbm9kZSB7IA0KICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBf
VmFsdWVfdHlwZTsNCiAgICB1c2luZyBfTm9kZXB0ciAgID0gX1JlYmluZF9wb2ludGVyX3Q8X1Zv
aWRwdHIsIF9MaXN0X25vZGU+Ow0KICAgIF9Ob2RlcHRyIF9OZXh0OyANCiAgICBfTm9kZXB0ciBf
UHJldjsgDQogICAgX1ZhbHVlX3R5cGUgX015dmFsOyANCg0KICAgIF9MaXN0X25vZGUoY29uc3Qg
X0xpc3Rfbm9kZSYpID0gZGVsZXRlOw0KICAgIF9MaXN0X25vZGUmIG9wZXJhdG9yPShjb25zdCBf
TGlzdF9ub2RlJikgPSBkZWxldGU7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Fsbm9kZT4NCiAg
ICBzdGF0aWMgX05vZGVwdHIgX0J1eWhlYWRub2RlKF9BbG5vZGUmIF9BbCkgew0KICAgICAgICBj
b25zdCBhdXRvIF9SZXN1bHQgPSBfQWwuYWxsb2NhdGUoMSk7DQogICAgICAgIF9Db25zdHJ1Y3Rf
aW5fcGxhY2UoX1Jlc3VsdC0+X05leHQsIF9SZXN1bHQpOw0KICAgICAgICBfQ29uc3RydWN0X2lu
X3BsYWNlKF9SZXN1bHQtPl9QcmV2LCBfUmVzdWx0KTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9BbG5vZGU+DQogICAgc3RhdGljIHZvaWQg
X0ZyZWVub2RlMChfQWxub2RlJiBfQWwsIF9Ob2RlcHRyIF9QdHIpIG5vZXhjZXB0IHsNCiAgICAg
ICAgDQogICAgICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZV92PHR5cGVuYW1lIF9BbG5vZGU6OnZh
bHVlX3R5cGUsIF9MaXN0X25vZGU+LCAiQmFkIF9GcmVlbm9kZTAgY2FsbCIpOw0KICAgICAgICBf
RGVzdHJveV9pbl9wbGFjZShfUHRyLT5fTmV4dCk7DQogICAgICAgIF9EZXN0cm95X2luX3BsYWNl
KF9QdHItPl9QcmV2KTsNCiAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxfQWxub2RlPjo6ZGVhbGxv
Y2F0ZShfQWwsIF9QdHIsIDEpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQWxub2Rl
Pg0KICAgIHN0YXRpYyB2b2lkIF9GcmVlbm9kZShfQWxub2RlJiBfQWwsIF9Ob2RlcHRyIF9QdHIp
IG5vZXhjZXB0IHsgDQogICAgICAgIGFsbG9jYXRvcl90cmFpdHM8X0Fsbm9kZT46OmRlc3Ryb3ko
X0FsLCA6OnN0ZDo6IGFkZHJlc3NvZihfUHRyLT5fTXl2YWwpKTsNCiAgICAgICAgX0ZyZWVub2Rl
MChfQWwsIF9QdHIpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfQWxub2RlPg0KICAg
IHN0YXRpYyB2b2lkIF9GcmVlX25vbl9oZWFkKA0KICAgICAgICBfQWxub2RlJiBfQWwsIF9Ob2Rl
cHRyIF9IZWFkKSBub2V4Y2VwdCB7IA0KICAgICAgICBfSGVhZC0+X1ByZXYtPl9OZXh0ID0gbnVs
bHB0cjsNCg0KICAgICAgICBhdXRvIF9Qbm9kZSA9IF9IZWFkLT5fTmV4dDsNCiAgICAgICAgZm9y
IChfTm9kZXB0ciBfUG5leHQ7IF9Qbm9kZTsgX1Bub2RlID0gX1BuZXh0KSB7DQogICAgICAgICAg
ICBfUG5leHQgPSBfUG5vZGUtPl9OZXh0Ow0KICAgICAgICAgICAgX0ZyZWVub2RlKF9BbCwgX1Bu
b2RlKTsNCiAgICAgICAgfQ0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpzdHJ1
Y3QgX0xpc3Rfc2ltcGxlX3R5cGVzIDogX1NpbXBsZV90eXBlczxfVHk+IHsNCiAgICB1c2luZyBf
Tm9kZSAgICA9IF9MaXN0X25vZGU8X1R5LCB2b2lkKj47DQogICAgdXNpbmcgX05vZGVwdHIgPSBf
Tm9kZSo7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVmFsX3R5cGVzPg0KY2xhc3MgX0xpc3Rf
dmFsIDogcHVibGljIF9Db250YWluZXJfYmFzZSB7DQpwdWJsaWM6DQogICAgdXNpbmcgX05vZGVw
dHIgPSB0eXBlbmFtZSBfVmFsX3R5cGVzOjpfTm9kZXB0cjsNCg0KICAgIHVzaW5nIHZhbHVlX3R5
cGUgICAgICA9IHR5cGVuYW1lIF9WYWxfdHlwZXM6OnZhbHVlX3R5cGU7DQogICAgdXNpbmcgc2l6
ZV90eXBlICAgICAgID0gdHlwZW5hbWUgX1ZhbF90eXBlczo6c2l6ZV90eXBlOw0KICAgIHVzaW5n
IGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIF9WYWxfdHlwZXM6OmRpZmZlcmVuY2VfdHlwZTsN
CiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSB0eXBlbmFtZSBfVmFsX3R5cGVzOjpwb2ludGVy
Ow0KICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgICA9IHR5cGVuYW1lIF9WYWxfdHlwZXM6OmNvbnN0
X3BvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgID0gdmFsdWVfdHlwZSY7DQogICAg
dXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3QgdmFsdWVfdHlwZSY7DQoNCiAgICBfTGlzdF92
YWwoKSBub2V4Y2VwdCA6IF9NeWhlYWQoKSwgX015c2l6ZSgwKSB7fSANCg0KICAgIHZvaWQgX09y
cGhhbl9wdHIyKF9Ob2RlcHRyIF9QdHIpIG5vZXhjZXB0IHsgDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzNzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcbGlzdCINCiAgICAgICAgKHZvaWQpIF9QdHI7DQojbGluZSAzNzUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCiAg
ICB9DQoNCiAgICB2b2lkIF9PcnBoYW5fbm9uX2VuZCgpIG5vZXhjZXB0IHsgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM5MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KICAgIH0NCg0KICAgIF9Ob2RlcHRyIF9Vbmxpbmtu
b2RlKF9Ob2RlcHRyIF9Qbm9kZSkgbm9leGNlcHQgeyANCiAgICAgICAgX09ycGhhbl9wdHIyKF9Q
bm9kZSk7DQogICAgICAgIF9Qbm9kZS0+X1ByZXYtPl9OZXh0ID0gX1Bub2RlLT5fTmV4dDsNCiAg
ICAgICAgX1Bub2RlLT5fTmV4dC0+X1ByZXYgPSBfUG5vZGUtPl9QcmV2Ow0KICAgICAgICAtLV9N
eXNpemU7DQogICAgICAgIHJldHVybiBfUG5vZGU7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNDY4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGxpc3QiDQoNCiAgICBzdGF0aWMgX05vZGVwdHIgX1VuY2hlY2tlZF9zcGxpY2UoY29uc3Qg
X05vZGVwdHIgX0JlZm9yZSwgY29uc3QgX05vZGVwdHIgX0ZpcnN0LCBjb25zdCBfTm9kZXB0ciBf
TGFzdCkgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgOw0KICAgICAgICANCg0KICAgICAg
ICANCiAgICAgICAgY29uc3QgYXV0byBfRmlyc3RfcHJldiAgPSBfRmlyc3QtPl9QcmV2Ow0KICAg
ICAgICBfRmlyc3RfcHJldi0+X05leHQgICAgICA9IF9MYXN0Ow0KICAgICAgICBjb25zdCBhdXRv
IF9MYXN0X3ByZXYgICA9IF9MYXN0LT5fUHJldjsNCiAgICAgICAgX0xhc3RfcHJldi0+X05leHQg
ICAgICAgPSBfQmVmb3JlOw0KICAgICAgICBjb25zdCBhdXRvIF9CZWZvcmVfcHJldiA9IF9CZWZv
cmUtPl9QcmV2Ow0KICAgICAgICBfQmVmb3JlX3ByZXYtPl9OZXh0ICAgICA9IF9GaXJzdDsNCg0K
ICAgICAgICANCiAgICAgICAgX0JlZm9yZS0+X1ByZXYgPSBfTGFzdF9wcmV2Ow0KICAgICAgICBf
TGFzdC0+X1ByZXYgICA9IF9GaXJzdF9wcmV2Ow0KICAgICAgICBfRmlyc3QtPl9QcmV2ICA9IF9C
ZWZvcmVfcHJldjsNCg0KICAgICAgICByZXR1cm4gX0xhc3Q7DQogICAgfQ0KDQogICAgc3RhdGlj
IF9Ob2RlcHRyIF9VbmNoZWNrZWRfc3BsaWNlKGNvbnN0IF9Ob2RlcHRyIF9CZWZvcmUsIGNvbnN0
IF9Ob2RlcHRyIF9GaXJzdCkgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgOw0KICAgICAg
ICANCiAgICAgICAgY29uc3QgYXV0byBfTGFzdCA9IF9GaXJzdC0+X05leHQ7DQoNCiAgICAgICAg
DQogICAgICAgIGNvbnN0IGF1dG8gX0ZpcnN0X3ByZXYgPSBfRmlyc3QtPl9QcmV2Ow0KICAgICAg
ICBfRmlyc3RfcHJldi0+X05leHQgICAgID0gX0xhc3Q7DQogICAgICAgIA0KICAgICAgICBfRmly
c3QtPl9OZXh0ICAgICAgICAgICA9IF9CZWZvcmU7DQogICAgICAgIGNvbnN0IGF1dG8gX0JlZm9y
ZV9wcmV2ID0gX0JlZm9yZS0+X1ByZXY7DQogICAgICAgIF9CZWZvcmVfcHJldi0+X05leHQgICAg
ID0gX0ZpcnN0Ow0KDQogICAgICAgIA0KICAgICAgICBfQmVmb3JlLT5fUHJldiA9IF9GaXJzdDsN
CiAgICAgICAgX0xhc3QtPl9QcmV2ICAgPSBfRmlyc3RfcHJldjsNCiAgICAgICAgX0ZpcnN0LT5f
UHJldiAgPSBfQmVmb3JlX3ByZXY7DQoNCiAgICAgICAgcmV0dXJuIF9MYXN0Ow0KICAgIH0NCg0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfUHIyPg0KICAgIHN0YXRpYyBfTm9kZXB0ciBfTWVyZ2Vfc2Ft
ZShfTm9kZXB0ciBfRmlyc3QsIF9Ob2RlcHRyIF9NaWQsIGNvbnN0IF9Ob2RlcHRyIF9MYXN0LCBf
UHIyIF9QcmVkKSB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgOw0KICAgICAgICBfTm9k
ZXB0ciBfTmV3Zmlyc3Q7DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfUHJlZChfTWlk
LT5fTXl2YWwsIF9GaXJzdC0+X015dmFsKSkpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAg
X05ld2ZpcnN0ID0gX01pZDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIA0KICAgICAg
ICAgICAgDQogICAgICAgICAgICBfTmV3Zmlyc3QgPSBfRmlyc3Q7DQogICAgICAgICAgICBkbyB7
DQogICAgICAgICAgICAgICAgX0ZpcnN0ID0gX0ZpcnN0LT5fTmV4dDsNCiAgICAgICAgICAgICAg
ICBpZiAoX0ZpcnN0ID09IF9NaWQpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZXdm
aXJzdDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IHdoaWxlICghc3RhdGljX2Nh
c3Q8Ym9vbD4oX1ByZWQoX01pZC0+X015dmFsLCBfRmlyc3QtPl9NeXZhbCkpKTsNCiAgICAgICAg
fQ0KDQogICAgICAgIGZvciAoOzspIHsgDQogICAgICAgICAgICBhdXRvIF9SdW5fc3RhcnQgPSBf
TWlkOw0KICAgICAgICAgICAgZG8geyANCiAgICAgICAgICAgICAgICBfTWlkID0gX01pZC0+X05l
eHQ7DQogICAgICAgICAgICB9IHdoaWxlIChfTWlkICE9IF9MYXN0ICYmIHN0YXRpY19jYXN0PGJv
b2w+KF9QcmVkKF9NaWQtPl9NeXZhbCwgX0ZpcnN0LT5fTXl2YWwpKSk7DQoNCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgX1VuY2hlY2tlZF9zcGxpY2UoX0ZpcnN0LCBfUnVuX3N0YXJ0LCBfTWlk
KTsNCiAgICAgICAgICAgIGlmIChfTWlkID09IF9MYXN0KSB7DQogICAgICAgICAgICAgICAgcmV0
dXJuIF9OZXdmaXJzdDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgDQogICAgICAgICAg
ICANCiAgICAgICAgICAgIGRvIHsNCiAgICAgICAgICAgICAgICBfRmlyc3QgPSBfRmlyc3QtPl9O
ZXh0Ow0KICAgICAgICAgICAgICAgIGlmIChfRmlyc3QgPT0gX01pZCkgew0KICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gX05ld2ZpcnN0Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0gd2hpbGUgKCFzdGF0aWNfY2FzdDxib29sPihfUHJlZChfTWlkLT5fTXl2YWwsIF9GaXJzdC0+
X015dmFsKSkpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9QcjI+
DQogICAgc3RhdGljIF9Ob2RlcHRyIF9Tb3J0KF9Ob2RlcHRyJiBfRmlyc3QsIGNvbnN0IHNpemVf
dHlwZSBfU2l6ZSwgX1ByMiBfUHJlZCkgew0KICAgICAgICANCiAgICAgICAgc3dpdGNoIChfU2l6
ZSkgew0KICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICByZXR1cm4gX0ZpcnN0Ow0KICAgICAg
ICBjYXNlIDE6DQogICAgICAgICAgICByZXR1cm4gX0ZpcnN0LT5fTmV4dDsNCiAgICAgICAgZGVm
YXVsdDoNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICAgICAgYXV0byBfTWlk
ICAgICAgICA9IF9Tb3J0KF9GaXJzdCwgX1NpemUgLyAyLCBfUHJlZCk7DQogICAgICAgIGNvbnN0
IGF1dG8gX0xhc3QgPSBfU29ydChfTWlkLCBfU2l6ZSAtIF9TaXplIC8gMiwgX1ByZWQpOw0KICAg
ICAgICBfRmlyc3QgICAgICAgICAgID0gX01lcmdlX3NhbWUoX0ZpcnN0LCBfTWlkLCBfTGFzdCwg
X1ByZWQpOw0KICAgICAgICByZXR1cm4gX0xhc3Q7DQogICAgfQ0KDQogICAgX05vZGVwdHIgX015
aGVhZDsgDQogICAgc2l6ZV90eXBlIF9NeXNpemU7IA0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0Fsbm9kZT4NCnN0cnVjdCBfTGlzdF9ub2RlX2VtcGxhY2Vfb3AyIDogX0FsbG9jX2NvbnN0cnVj
dF9wdHI8X0Fsbm9kZT4gew0KICAgIHVzaW5nIF9BbG5vZGVfdHJhaXRzID0gYWxsb2NhdG9yX3Ry
YWl0czxfQWxub2RlPjsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICA9IHR5cGVuYW1lIF9BbG5v
ZGVfdHJhaXRzOjpwb2ludGVyOw0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9WYWx0eXM+DQog
ICAgZXhwbGljaXQgX0xpc3Rfbm9kZV9lbXBsYWNlX29wMihfQWxub2RlJiBfQWxfLCBfVmFsdHlz
JiYuLi4gX1ZhbHMpIDogX0FsbG9jX2NvbnN0cnVjdF9wdHI8X0Fsbm9kZT4oX0FsXykgew0KICAg
ICAgICB0aGlzLT5fQWxsb2NhdGUoKTsNCiAgICAgICAgX0Fsbm9kZV90cmFpdHM6OmNvbnN0cnVj
dCh0aGlzLT5fQWwsIDo6c3RkOjogYWRkcmVzc29mKHRoaXMtPl9QdHItPl9NeXZhbCksIDo6c3Rk
OjogZm9yd2FyZDxfVmFsdHlzPihfVmFscykuLi4pOw0KICAgIH0NCg0KICAgIH5fTGlzdF9ub2Rl
X2VtcGxhY2Vfb3AyKCkgew0KICAgICAgICBpZiAodGhpcy0+X1B0ciAhPSBwb2ludGVye30pIHsN
CiAgICAgICAgICAgIF9BbG5vZGVfdHJhaXRzOjpkZXN0cm95KHRoaXMtPl9BbCwgOjpzdGQ6OiBh
ZGRyZXNzb2YodGhpcy0+X1B0ci0+X015dmFsKSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBf
TGlzdF9ub2RlX2VtcGxhY2Vfb3AyKGNvbnN0IF9MaXN0X25vZGVfZW1wbGFjZV9vcDImKSA9IGRl
bGV0ZTsNCiAgICBfTGlzdF9ub2RlX2VtcGxhY2Vfb3AyJiBvcGVyYXRvcj0oY29uc3QgX0xpc3Rf
bm9kZV9lbXBsYWNlX29wMiYpID0gZGVsZXRlOw0KDQogICAgcG9pbnRlciBfVHJhbnNmZXJfYmVm
b3JlKGNvbnN0IHBvaW50ZXIgX0luc2VydF9iZWZvcmUpIG5vZXhjZXB0IHsNCiAgICAgICAgY29u
c3QgcG9pbnRlciBfSW5zZXJ0X2FmdGVyID0gX0luc2VydF9iZWZvcmUtPl9QcmV2Ow0KICAgICAg
ICBfQ29uc3RydWN0X2luX3BsYWNlKHRoaXMtPl9QdHItPl9OZXh0LCBfSW5zZXJ0X2JlZm9yZSk7
DQogICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UodGhpcy0+X1B0ci0+X1ByZXYsIF9JbnNlcnRf
YWZ0ZXIpOw0KICAgICAgICBjb25zdCBhdXRvIF9SZXN1bHQgICAgPSB0aGlzLT5fUHRyOw0KICAg
ICAgICB0aGlzLT5fUHRyICAgICAgICAgICAgPSBwb2ludGVye307DQogICAgICAgIF9JbnNlcnRf
YmVmb3JlLT5fUHJldiA9IF9SZXN1bHQ7DQogICAgICAgIF9JbnNlcnRfYWZ0ZXItPl9OZXh0ICA9
IF9SZXN1bHQ7DQogICAgICAgIHJldHVybiBfUmVzdWx0Ow0KICAgIH0NCn07DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9BbG5vZGU+DQpzdHJ1Y3QgX0xpc3Rfbm9kZV9pbnNlcnRfb3AyIHsNCiAgICAN
CiAgICB1c2luZyBfQWxub2RlX3RyYWl0cyA9IGFsbG9jYXRvcl90cmFpdHM8X0Fsbm9kZT47DQog
ICAgdXNpbmcgcG9pbnRlciAgICAgICAgPSB0eXBlbmFtZSBfQWxub2RlX3RyYWl0czo6cG9pbnRl
cjsNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICA9IHR5cGVuYW1lIF9BbG5vZGVfdHJhaXRzOjpz
aXplX3R5cGU7DQogICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgPSB0eXBlbmFtZSBfQWxub2RlX3Ry
YWl0czo6dmFsdWVfdHlwZTsNCg0KICAgIGV4cGxpY2l0IF9MaXN0X25vZGVfaW5zZXJ0X29wMihf
QWxub2RlJiBfQWxfKSA6IF9BbChfQWxfKSwgX0FkZGVkKDApIHt9DQoNCiAgICBfTGlzdF9ub2Rl
X2luc2VydF9vcDIoY29uc3QgX0xpc3Rfbm9kZV9pbnNlcnRfb3AyJikgPSBkZWxldGU7DQogICAg
X0xpc3Rfbm9kZV9pbnNlcnRfb3AyJiBvcGVyYXRvcj0oY29uc3QgX0xpc3Rfbm9kZV9pbnNlcnRf
b3AyJikgPSBkZWxldGU7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0NBcmdUPg0KICAgIHZv
aWQgX0FwcGVuZF9uKHNpemVfdHlwZSBfQ291bnQsIGNvbnN0IF9DQXJnVCYuLi4gX0NhcmcpIHsN
CiAgICAgICAgDQogICAgICAgIGlmIChfQ291bnQgPD0gMCkgew0KICAgICAgICAgICAgcmV0dXJu
Ow0KICAgICAgICB9DQoNCiAgICAgICAgX0FsbG9jX2NvbnN0cnVjdF9wdHI8X0Fsbm9kZT4gX05l
d25vZGUoX0FsKTsNCiAgICAgICAgaWYgKF9BZGRlZCA9PSAwKSB7DQogICAgICAgICAgICBfTmV3
bm9kZS5fQWxsb2NhdGUoKTsgDQogICAgICAgICAgICBfQWxub2RlX3RyYWl0czo6Y29uc3RydWN0
KF9BbCwgOjpzdGQ6OiBhZGRyZXNzb2YoX05ld25vZGUuX1B0ci0+X015dmFsKSwgX0NhcmcuLi4p
OyANCiAgICAgICAgICAgIF9IZWFkID0gX05ld25vZGUuX1B0cjsNCiAgICAgICAgICAgIF9UYWls
ID0gX05ld25vZGUuX1B0cjsNCiAgICAgICAgICAgICsrX0FkZGVkOw0KICAgICAgICAgICAgLS1f
Q291bnQ7DQogICAgICAgIH0NCg0KICAgICAgICBmb3IgKDsgMCA8IF9Db3VudDsgLS1fQ291bnQp
IHsNCiAgICAgICAgICAgIF9OZXdub2RlLl9BbGxvY2F0ZSgpOyANCiAgICAgICAgICAgIF9BbG5v
ZGVfdHJhaXRzOjpjb25zdHJ1Y3QoX0FsLCA6OnN0ZDo6IGFkZHJlc3NvZihfTmV3bm9kZS5fUHRy
LT5fTXl2YWwpLCBfQ2FyZy4uLik7IA0KICAgICAgICAgICAgX0NvbnN0cnVjdF9pbl9wbGFjZShf
VGFpbC0+X05leHQsIF9OZXdub2RlLl9QdHIpOw0KICAgICAgICAgICAgX0NvbnN0cnVjdF9pbl9w
bGFjZShfTmV3bm9kZS5fUHRyLT5fUHJldiwgX1RhaWwpOw0KICAgICAgICAgICAgX1RhaWwgPSBf
TmV3bm9kZS5fUHRyOw0KICAgICAgICAgICAgKytfQWRkZWQ7DQogICAgICAgIH0NCg0KICAgICAg
ICBfTmV3bm9kZS5fUHRyID0gcG9pbnRlcnt9Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfSW5JdCwgY2xhc3MgX1NlbnRpbmVsPg0KICAgIHZvaWQgX0FwcGVuZF9yYW5nZV91bmNoZWNr
ZWQoX0luSXQgX0ZpcnN0LCBjb25zdCBfU2VudGluZWwgX0xhc3QpIHsNCiAgICAgICAgDQogICAg
ICAgIGlmIChfRmlyc3QgPT0gX0xhc3QpIHsgDQogICAgICAgICAgICByZXR1cm47DQogICAgICAg
IH0NCg0KICAgICAgICBfQWxsb2NfY29uc3RydWN0X3B0cjxfQWxub2RlPiBfTmV3bm9kZShfQWwp
Ow0KICAgICAgICBpZiAoX0FkZGVkID09IDApIHsNCiAgICAgICAgICAgIF9OZXdub2RlLl9BbGxv
Y2F0ZSgpOyANCiAgICAgICAgICAgIF9BbG5vZGVfdHJhaXRzOjpjb25zdHJ1Y3QoX0FsLCA6OnN0
ZDo6IGFkZHJlc3NvZihfTmV3bm9kZS5fUHRyLT5fTXl2YWwpLCAqX0ZpcnN0KTsgDQogICAgICAg
ICAgICBjb25zdCBhdXRvIF9OZXdoZWFkID0gOjpzdGQ6OiBleGNoYW5nZShfTmV3bm9kZS5fUHRy
LCBwb2ludGVye30pOw0KICAgICAgICAgICAgX0hlYWQgICAgICAgICAgICAgICA9IF9OZXdoZWFk
Ow0KICAgICAgICAgICAgX1RhaWwgICAgICAgICAgICAgICA9IF9OZXdoZWFkOw0KICAgICAgICAg
ICAgKytfQWRkZWQ7DQogICAgICAgICAgICArK19GaXJzdDsgDQogICAgICAgIH0NCg0KICAgICAg
ICB3aGlsZSAoX0ZpcnN0ICE9IF9MYXN0KSB7IA0KICAgICAgICAgICAgX05ld25vZGUuX0FsbG9j
YXRlKCk7IA0KICAgICAgICAgICAgX0Fsbm9kZV90cmFpdHM6OmNvbnN0cnVjdChfQWwsIDo6c3Rk
OjogYWRkcmVzc29mKF9OZXdub2RlLl9QdHItPl9NeXZhbCksICpfRmlyc3QpOyANCiAgICAgICAg
ICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX1RhaWwtPl9OZXh0LCBfTmV3bm9kZS5fUHRyKTsNCiAg
ICAgICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX05ld25vZGUuX1B0ci0+X1ByZXYsIF9UYWls
KTsNCiAgICAgICAgICAgIF9UYWlsID0gOjpzdGQ6OiBleGNoYW5nZShfTmV3bm9kZS5fUHRyLCBw
b2ludGVye30pOw0KICAgICAgICAgICAgKytfQWRkZWQ7DQogICAgICAgICAgICArK19GaXJzdDsg
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1ZhbF90eXBlcz4NCiAg
ICBwb2ludGVyIF9BdHRhY2hfYmVmb3JlKF9MaXN0X3ZhbDxfVmFsX3R5cGVzPiYgX0xpc3RfZGF0
YSwgY29uc3QgcG9pbnRlciBfSW5zZXJ0X2JlZm9yZSkgbm9leGNlcHQgew0KICAgICAgICANCiAg
ICAgICAgDQogICAgICAgIA0KDQogICAgICAgIGNvbnN0IGF1dG8gX0xvY2FsX2FkZGVkID0gX0Fk
ZGVkOw0KICAgICAgICBpZiAoX0xvY2FsX2FkZGVkID09IDApIHsNCiAgICAgICAgICAgIHJldHVy
biBfSW5zZXJ0X2JlZm9yZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IGF1dG8gX0xvY2Fs
X2hlYWQgICA9IF9IZWFkOw0KICAgICAgICBjb25zdCBhdXRvIF9Mb2NhbF90YWlsICAgPSBfVGFp
bDsNCiAgICAgICAgY29uc3QgYXV0byBfSW5zZXJ0X2FmdGVyID0gX0luc2VydF9iZWZvcmUtPl9Q
cmV2Ow0KDQogICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX0xvY2FsX2hlYWQtPl9QcmV2LCBf
SW5zZXJ0X2FmdGVyKTsNCiAgICAgICAgX0luc2VydF9hZnRlci0+X05leHQgPSBfTG9jYWxfaGVh
ZDsNCiAgICAgICAgX0NvbnN0cnVjdF9pbl9wbGFjZShfTG9jYWxfdGFpbC0+X05leHQsIF9JbnNl
cnRfYmVmb3JlKTsNCiAgICAgICAgX0luc2VydF9iZWZvcmUtPl9QcmV2ID0gX0xvY2FsX3RhaWw7
DQoNCiAgICAgICAgX0xpc3RfZGF0YS5fTXlzaXplICs9IF9Mb2NhbF9hZGRlZDsNCiAgICAgICAg
X0FkZGVkID0gMDsNCiAgICAgICAgcmV0dXJuIF9Mb2NhbF9oZWFkOw0KICAgIH0NCg0KICAgIHRl
bXBsYXRlIDxjbGFzcyBfVmFsX3R5cGVzPg0KICAgIHZvaWQgX0F0dGFjaF9hdF9lbmQoX0xpc3Rf
dmFsPF9WYWxfdHlwZXM+JiBfTGlzdF9kYXRhKSBub2V4Y2VwdCB7DQogICAgICAgIF9BdHRhY2hf
YmVmb3JlKF9MaXN0X2RhdGEsIF9MaXN0X2RhdGEuX015aGVhZCk7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPGNsYXNzIF9WYWxfdHlwZXM+DQogICAgdm9pZCBfQXR0YWNoX2hlYWQoX0xpc3RfdmFs
PF9WYWxfdHlwZXM+JiBfTGlzdF9kYXRhKSB7DQogICAgICAgIF9BbGxvY19jb25zdHJ1Y3RfcHRy
PF9BbG5vZGU+IF9OZXdub2RlKF9BbCk7DQogICAgICAgIF9OZXdub2RlLl9BbGxvY2F0ZSgpOyAN
CiAgICAgICAgY29uc3QgYXV0byBfTG9jYWxfYWRkZWQgPSA6OnN0ZDo6IGV4Y2hhbmdlKF9BZGRl
ZCwgc2l6ZV90eXBlezB9KTsNCiAgICAgICAgaWYgKF9Mb2NhbF9hZGRlZCA9PSAwKSB7DQogICAg
ICAgICAgICBfQ29uc3RydWN0X2luX3BsYWNlKF9OZXdub2RlLl9QdHItPl9OZXh0LCBfTmV3bm9k
ZS5fUHRyKTsNCiAgICAgICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX05ld25vZGUuX1B0ci0+
X1ByZXYsIF9OZXdub2RlLl9QdHIpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgY29u
c3QgYXV0byBfTG9jYWxfaGVhZCA9IF9IZWFkOw0KICAgICAgICAgICAgY29uc3QgYXV0byBfTG9j
YWxfdGFpbCA9IF9UYWlsOw0KICAgICAgICAgICAgX0NvbnN0cnVjdF9pbl9wbGFjZShfTmV3bm9k
ZS5fUHRyLT5fTmV4dCwgX0xvY2FsX2hlYWQpOw0KICAgICAgICAgICAgX0NvbnN0cnVjdF9pbl9w
bGFjZShfTmV3bm9kZS5fUHRyLT5fUHJldiwgX0xvY2FsX3RhaWwpOw0KICAgICAgICAgICAgX0Nv
bnN0cnVjdF9pbl9wbGFjZShfTG9jYWxfaGVhZC0+X1ByZXYsIF9OZXdub2RlLl9QdHIpOw0KICAg
ICAgICAgICAgX0NvbnN0cnVjdF9pbl9wbGFjZShfTG9jYWxfdGFpbC0+X05leHQsIF9OZXdub2Rl
Ll9QdHIpOw0KICAgICAgICB9DQoNCiAgICAgICAgX0xpc3RfZGF0YS5fTXlzaXplID0gX0xvY2Fs
X2FkZGVkOw0KICAgICAgICBfTGlzdF9kYXRhLl9NeWhlYWQgPSBfTmV3bm9kZS5fUmVsZWFzZSgp
Ow0KICAgIH0NCg0KICAgIH5fTGlzdF9ub2RlX2luc2VydF9vcDIoKSB7DQogICAgICAgIGlmIChf
QWRkZWQgPT0gMCkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAg
X0NvbnN0cnVjdF9pbl9wbGFjZShfSGVhZC0+X1ByZXYsIHBvaW50ZXJ7fSk7DQogICAgICAgIF9D
b25zdHJ1Y3RfaW5fcGxhY2UoX1RhaWwtPl9OZXh0LCBwb2ludGVye30pOw0KICAgICAgICBwb2lu
dGVyIF9TdWJqZWN0ID0gX0hlYWQ7DQogICAgICAgIHdoaWxlIChfU3ViamVjdCkgew0KICAgICAg
ICAgICAgdmFsdWVfdHlwZTo6X0ZyZWVub2RlKF9BbCwgOjpzdGQ6OiBleGNoYW5nZShfU3ViamVj
dCwgX1N1YmplY3QtPl9OZXh0KSk7DQogICAgICAgIH0NCiAgICB9DQoNCnByaXZhdGU6DQogICAg
X0Fsbm9kZSYgX0FsOw0KICAgIHNpemVfdHlwZSBfQWRkZWQ7IA0KICAgIHBvaW50ZXIgX1RhaWw7
IA0KICAgIHBvaW50ZXIgX0hlYWQ7IA0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpj
bGFzcyBfSGFzaDsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2MgPSBhbGxv
Y2F0b3I8X1R5Pj4NCmNsYXNzIGxpc3QgeyANCnByaXZhdGU6DQogICAgdGVtcGxhdGUgPGNsYXNz
Pg0KICAgIGZyaWVuZCBjbGFzcyBfSGFzaDsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RyYWl0cz4N
CiAgICBmcmllbmQgYm9vbCBfSGFzaF9lcXVhbChjb25zdCBfSGFzaDxfVHJhaXRzPiYsIGNvbnN0
IF9IYXNoPF9UcmFpdHM+Jik7DQoNCg0KDQojbGluZSA3NjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCg0KICAgIHVzaW5nIF9BbHR5ICAg
ICAgICAgID0gX1JlYmluZF9hbGxvY190PF9BbGxvYywgX1R5PjsNCiAgICB1c2luZyBfQWx0eV90
cmFpdHMgICA9IGFsbG9jYXRvcl90cmFpdHM8X0FsdHk+Ow0KICAgIHVzaW5nIF9Ob2RlICAgICAg
ICAgID0gX0xpc3Rfbm9kZTxfVHksIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjo6
dm9pZF9wb2ludGVyPjsNCiAgICB1c2luZyBfQWxub2RlICAgICAgICA9IF9SZWJpbmRfYWxsb2Nf
dDxfQWxsb2MsIF9Ob2RlPjsNCiAgICB1c2luZyBfQWxub2RlX3RyYWl0cyA9IGFsbG9jYXRvcl90
cmFpdHM8X0Fsbm9kZT47DQogICAgdXNpbmcgX05vZGVwdHIgICAgICAgPSB0eXBlbmFtZSBfQWxu
b2RlX3RyYWl0czo6cG9pbnRlcjsNCg0KICAgIHVzaW5nIF9WYWxfdHlwZXMgPSBjb25kaXRpb25h
bF90PF9Jc19zaW1wbGVfYWxsb2NfdjxfQWxub2RlPiwgX0xpc3Rfc2ltcGxlX3R5cGVzPF9UeT4s
DQogICAgICAgIF9MaXN0X2l0ZXJfdHlwZXM8X1R5LCB0eXBlbmFtZSBfQWx0eV90cmFpdHM6OnNp
emVfdHlwZSwgdHlwZW5hbWUgX0FsdHlfdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUsDQogICAgICAg
ICAgICB0eXBlbmFtZSBfQWx0eV90cmFpdHM6OnBvaW50ZXIsIHR5cGVuYW1lIF9BbHR5X3RyYWl0
czo6Y29uc3RfcG9pbnRlciwgX1R5JiwgY29uc3QgX1R5JiwgX05vZGVwdHI+PjsNCg0KICAgIHVz
aW5nIF9TY2FyeV92YWwgPSBfTGlzdF92YWw8X1ZhbF90eXBlcz47DQoNCnB1YmxpYzoNCiAgICBz
dGF0aWNfYXNzZXJ0KCExIHx8IGlzX3NhbWVfdjxfVHksIHR5cGVuYW1lIF9BbGxvYzo6dmFsdWVf
dHlwZT4sDQogICAgICAgICJsaXN0PFQsIEFsbG9jYXRvcj4iICIgcmVxdWlyZXMgdGhhdCBBbGxv
Y2F0b3IncyB2YWx1ZV90eXBlIG1hdGNoICIgIlQiICIgKFNlZSBONDY1OSAyNi4yLjEgW2NvbnRh
aW5lci5yZXF1aXJlbWVudHMuZ2VuZXJhbF0vMTYgYWxsb2NhdG9yX3R5cGUpIiAiIEVpdGhlciBm
aXggdGhlIGFsbG9jYXRvciB2YWx1ZV90eXBlIG9yIGRlZmluZSBfRU5GT1JDRV9NQVRDSElOR19B
TExPQ0FUT1JTPTAiICIgdG8gc3VwcHJlc3MgdGhpcyBkaWFnbm9zdGljLiIpOw0KDQogICAgdXNp
bmcgdmFsdWVfdHlwZSAgICAgID0gX1R5Ow0KICAgIHVzaW5nIGFsbG9jYXRvcl90eXBlICA9IF9B
bGxvYzsNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICAgPSB0eXBlbmFtZSBfQWx0eV90cmFpdHM6
OnNpemVfdHlwZTsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBfQWx0eV90
cmFpdHM6OmRpZmZlcmVuY2VfdHlwZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSB0eXBl
bmFtZSBfQWx0eV90cmFpdHM6OnBvaW50ZXI7DQogICAgdXNpbmcgY29uc3RfcG9pbnRlciAgID0g
dHlwZW5hbWUgX0FsdHlfdHJhaXRzOjpjb25zdF9wb2ludGVyOw0KICAgIHVzaW5nIHJlZmVyZW5j
ZSAgICAgICA9IHZhbHVlX3R5cGUmOw0KICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0
IHZhbHVlX3R5cGUmOw0KDQogICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICAgICA9IF9M
aXN0X2l0ZXJhdG9yPF9TY2FyeV92YWw+Ow0KICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yICAgICAg
ICAgICAgPSBfTGlzdF9jb25zdF9pdGVyYXRvcjxfU2NhcnlfdmFsPjsNCiAgICB1c2luZyBfVW5j
aGVja2VkX2l0ZXJhdG9yICAgICAgID0gX0xpc3RfdW5jaGVja2VkX2l0ZXJhdG9yPF9TY2FyeV92
YWw+Ow0KICAgIHVzaW5nIF9VbmNoZWNrZWRfY29uc3RfaXRlcmF0b3IgPSBfTGlzdF91bmNoZWNr
ZWRfY29uc3RfaXRlcmF0b3I8X1NjYXJ5X3ZhbD47DQoNCiAgICB1c2luZyByZXZlcnNlX2l0ZXJh
dG9yICAgICAgID0gOjpzdGQ6OiByZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsNCiAgICB1c2lu
ZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gOjpzdGQ6OiByZXZlcnNlX2l0ZXJhdG9yPGNvbnN0
X2l0ZXJhdG9yPjsNCg0KICAgIGxpc3QoKSA6IF9NeXBhaXIoX1plcm9fdGhlbl92YXJpYWRpY19h
cmdzX3R7fSkgew0KICAgICAgICBfQWxsb2Nfc2VudGluZWxfYW5kX3Byb3h5KCk7DQogICAgfQ0K
DQogICAgZXhwbGljaXQgbGlzdChjb25zdCBfQWxsb2MmIF9BbCkgOiBfTXlwYWlyKF9PbmVfdGhl
bl92YXJpYWRpY19hcmdzX3R7fSwgX0FsKSB7DQogICAgICAgIF9BbGxvY19zZW50aW5lbF9hbmRf
cHJveHkoKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGUgPGNsYXNzIF9BbnlfYWxs
b2M+DQogICAgZXhwbGljaXQgbGlzdChfTW92ZV9hbGxvY2F0b3JfdGFnLCBfQW55X2FsbG9jJiBf
QWwpIDogX015cGFpcihfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIDo6c3RkOjogbW92ZShf
QWwpKSB7DQogICAgICAgIF9BbGxvY19zZW50aW5lbF9hbmRfcHJveHkoKTsNCiAgICB9DQoNCiAg
ICB2b2lkIF9Db25zdHJ1Y3Rfbiggc2l6ZV90eXBlIF9Db3VudCkgew0KICAgICAgICBhdXRvJiYg
X0FscHJveHkgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9w
dHI8X0FsdHk+IF9Qcm94eShfQWxwcm94eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX0xp
c3Rfbm9kZV9pbnNlcnRfb3AyPF9BbG5vZGU+IF9BcHBlbmRlZChfR2V0YWwoKSk7DQogICAgICAg
IF9BcHBlbmRlZC5fQXBwZW5kX24oX0NvdW50KTsNCiAgICAgICAgX0FwcGVuZGVkLl9BdHRhY2hf
aGVhZChfTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBfUHJveHkuX1JlbGVhc2UoKTsNCiAgICB9
DQoNCnB1YmxpYzoNCiAgICBleHBsaWNpdCBsaXN0KCBzaXplX3R5cGUgX0NvdW50KQ0KICAgICAg
ICA6IF9NeXBhaXIoX1plcm9fdGhlbl92YXJpYWRpY19hcmdzX3R7fSkgeyANCiAgICAgICAgX0Nv
bnN0cnVjdF9uKF9Db3VudCk7DQogICAgfQ0KDQogICAgZXhwbGljaXQgbGlzdCggc2l6ZV90eXBl
IF9Db3VudCwgY29uc3QgX0FsbG9jJiBfQWwpDQogICAgICAgIDogX015cGFpcihfT25lX3RoZW5f
dmFyaWFkaWNfYXJnc190e30sIF9BbCkgeyANCiAgICAgICAgX0NvbnN0cnVjdF9uKF9Db3VudCk7
DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHZvaWQgX0NvbnN0cnVjdF9uKCBzaXplX3R5cGUgX0Nv
dW50LCBjb25zdCBfVHkmIF9WYWwpIHsNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ID0gX0Zha2Vf
YWxsb2NhdG9yKCk7DQogICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbHR5PiBfUHJveHko
X0FscHJveHksIF9NeXBhaXIuX015dmFsMik7DQogICAgICAgIF9MaXN0X25vZGVfaW5zZXJ0X29w
MjxfQWxub2RlPiBfQXBwZW5kZWQoX0dldGFsKCkpOw0KICAgICAgICBfQXBwZW5kZWQuX0FwcGVu
ZF9uKF9Db3VudCwgX1ZhbCk7DQogICAgICAgIF9BcHBlbmRlZC5fQXR0YWNoX2hlYWQoX015cGFp
ci5fTXl2YWwyKTsNCiAgICAgICAgX1Byb3h5Ll9SZWxlYXNlKCk7DQogICAgfQ0KDQpwdWJsaWM6
DQogICAgbGlzdCggc2l6ZV90eXBlIF9Db3VudCwgY29uc3QgX1R5JiBfVmFsKQ0KICAgICAgICA6
IF9NeXBhaXIoX1plcm9fdGhlbl92YXJpYWRpY19hcmdzX3R7fSkgeyANCiAgICAgICAgX0NvbnN0
cnVjdF9uKF9Db3VudCwgX1ZhbCk7DQogICAgfQ0KDQogICAgbGlzdCggc2l6ZV90eXBlIF9Db3Vu
dCwgY29uc3QgX1R5JiBfVmFsLCBjb25zdCBfQWxsb2MmIF9BbCkNCiAgICAgICAgOiBfTXlwYWly
KF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3R7fSwgX0FsKSB7IA0KICAgICAgICBfQ29uc3RydWN0
X24oX0NvdW50LCBfVmFsKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGUgPGNsYXNz
IF9JdGVyPg0KICAgIHZvaWQgX0NvbnN0cnVjdF9yYW5nZV91bmNoZWNrZWQoX0l0ZXIgX0ZpcnN0
LCBfSXRlciBfTGFzdCkgew0KICAgICAgICBhdXRvJiYgX0FscHJveHkgPSBfRmFrZV9hbGxvY2F0
b3IoKTsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfQWxwcm94
eSwgX015cGFpci5fTXl2YWwyKTsNCiAgICAgICAgX0xpc3Rfbm9kZV9pbnNlcnRfb3AyPF9BbG5v
ZGU+IF9BcHBlbmRlZChfR2V0YWwoKSk7DQogICAgICAgIF9BcHBlbmRlZC5fQXBwZW5kX3Jhbmdl
X3VuY2hlY2tlZChfRmlyc3QsIF9MYXN0KTsNCiAgICAgICAgX0FwcGVuZGVkLl9BdHRhY2hfaGVh
ZChfTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBfUHJveHkuX1JlbGVhc2UoKTsNCiAgICB9DQoN
CnB1YmxpYzoNCiAgICBsaXN0KGNvbnN0IGxpc3QmIF9SaWdodCkNCiAgICAgICAgOiBfTXlwYWly
KF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3R7fSwgX0Fsbm9kZV90cmFpdHM6OnNlbGVjdF9vbl9j
b250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oX1JpZ2h0Ll9HZXRhbCgpKSkgew0KICAgICAgICBf
Q29uc3RydWN0X3JhbmdlX3VuY2hlY2tlZChfUmlnaHQuX1VuY2hlY2tlZF9iZWdpbigpLCBfUmln
aHQuX1VuY2hlY2tlZF9lbmQoKSk7DQogICAgfQ0KDQogICAgbGlzdChjb25zdCBsaXN0JiBfUmln
aHQsIGNvbnN0IF9BbGxvYyYgX0FsKSA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3Nf
dHt9LCBfQWwpIHsNCiAgICAgICAgX0NvbnN0cnVjdF9yYW5nZV91bmNoZWNrZWQoX1JpZ2h0Ll9V
bmNoZWNrZWRfYmVnaW4oKSwgX1JpZ2h0Ll9VbmNoZWNrZWRfZW5kKCkpOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfSXRlciwgZW5hYmxlX2lmX3Q8X0lzX2l0ZXJhdG9yX3Y8X0l0ZXI+
LCBpbnQ+ID0gMD4NCiAgICBsaXN0KF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QpIDogX015cGFp
cihfWmVyb190aGVuX3ZhcmlhZGljX2FyZ3NfdHt9KSB7DQogICAgICAgIF9BZGxfdmVyaWZ5X3Jh
bmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgICAgICBfQ29uc3RydWN0X3JhbmdlX3VuY2hlY2tlZChf
R2V0X3Vud3JhcHBlZChfRmlyc3QpLCBfR2V0X3Vud3JhcHBlZChfTGFzdCkpOw0KICAgIH0NCg0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlciwgZW5hYmxlX2lmX3Q8X0lzX2l0ZXJhdG9yX3Y8X0l0
ZXI+LCBpbnQ+ID0gMD4NCiAgICBsaXN0KF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QsIGNvbnN0
IF9BbGxvYyYgX0FsKSA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCBfQWwp
IHsNCiAgICAgICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAgICAgIF9D
b25zdHJ1Y3RfcmFuZ2VfdW5jaGVja2VkKF9HZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53
cmFwcGVkKF9MYXN0KSk7DQogICAgfQ0KDQogICAgbGlzdChsaXN0JiYgX1JpZ2h0KSA6IF9NeXBh
aXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCA6OnN0ZDo6IG1vdmUoX1JpZ2h0Ll9HZXRh
bCgpKSkgew0KICAgICAgICBfQWxsb2Nfc2VudGluZWxfYW5kX3Byb3h5KCk7DQogICAgICAgIF9T
d2FwX3ZhbChfUmlnaHQpOw0KICAgIH0NCg0KICAgIGxpc3QobGlzdCYmIF9SaWdodCwgY29uc3Qg
X0FsbG9jJiBfQWwpIDogX015cGFpcihfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9BbCkg
ew0KICAgICAgICBpZiBjb25zdGV4cHIgKCFfQWxub2RlX3RyYWl0czo6aXNfYWx3YXlzX2VxdWFs
Ojp2YWx1ZSkgew0KICAgICAgICAgICAgaWYgKF9HZXRhbCgpICE9IF9SaWdodC5fR2V0YWwoKSkg
ew0KICAgICAgICAgICAgICAgIF9Db25zdHJ1Y3RfcmFuZ2VfdW5jaGVja2VkKDo6c3RkOjogbWFr
ZV9tb3ZlX2l0ZXJhdG9yKF9SaWdodC5fVW5jaGVja2VkX2JlZ2luKCkpLA0KICAgICAgICAgICAg
ICAgICAgICA6OnN0ZDo6IG1ha2VfbW92ZV9pdGVyYXRvcihfUmlnaHQuX1VuY2hlY2tlZF9lbmQo
KSkpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
DQogICAgICAgIF9BbGxvY19zZW50aW5lbF9hbmRfcHJveHkoKTsNCiAgICAgICAgX1N3YXBfdmFs
KF9SaWdodCk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHZvaWQgX01vdmVfYXNzaWduKGxpc3Qm
IF9SaWdodCwgX0VxdWFsX2FsbG9jYXRvcnMpIG5vZXhjZXB0IHsNCiAgICAgICAgY2xlYXIoKTsN
CiAgICAgICAgX1BvY21hKF9HZXRhbCgpLCBfUmlnaHQuX0dldGFsKCkpOw0KICAgICAgICBfU3dh
cF92YWwoX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB2b2lkIF9Nb3ZlX2Fzc2lnbihsaXN0JiBfUmln
aHQsIF9Qcm9wYWdhdGVfYWxsb2NhdG9ycykgew0KICAgICAgICBhdXRvJiBfQWwgICAgICAgPSBf
R2V0YWwoKTsNCiAgICAgICAgYXV0byYgX1JpZ2h0X2FsID0gX1JpZ2h0Ll9HZXRhbCgpOw0KICAg
ICAgICBpZiAoX0FsID09IF9SaWdodF9hbCkgew0KICAgICAgICAgICAgX01vdmVfYXNzaWduKF9S
aWdodCwgX0VxdWFsX2FsbG9jYXRvcnN7fSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICBhdXRvJiYgX0FscHJveHkgICAgICAgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAgICAgICAg
IGF1dG8mJiBfUmlnaHRfYWxwcm94eSA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICAgICAg
X0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfUmlnaHRfYWxwcm94eSwgX0xlYXZl
X3Byb3h5X3VuYm91bmR7fSk7DQogICAgICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgID0gX015
cGFpci5fTXl2YWwyOw0KICAgICAgICAgICAgYXV0byYgX1JpZ2h0X2RhdGEgICA9IF9SaWdodC5f
TXlwYWlyLl9NeXZhbDI7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9OZXdoZWFkID0gOjpzdGQ6
OiBleGNoYW5nZShfUmlnaHRfZGF0YS5fTXloZWFkLCBfTm9kZTo6X0J1eWhlYWRub2RlKF9SaWdo
dF9hbCkpOw0KICAgICAgICAgICAgY29uc3QgYXV0byBfTmV3c2l6ZSA9IDo6c3RkOjogZXhjaGFu
Z2UoX1JpZ2h0X2RhdGEuX015c2l6ZSwgc2l6ZV90eXBlezB9KTsNCiAgICAgICAgICAgIF9UaWR5
KCk7DQogICAgICAgICAgICBfUG9jbWEoX0FsLCBfUmlnaHRfYWwpOw0KICAgICAgICAgICAgX015
X2RhdGEuX015aGVhZCA9IF9OZXdoZWFkOw0KICAgICAgICAgICAgX015X2RhdGEuX015c2l6ZSA9
IF9OZXdzaXplOw0KICAgICAgICAgICAgX1Byb3h5Ll9CaW5kKF9BbHByb3h5LCA6OnN0ZDo6IGFk
ZHJlc3NvZihfTXlfZGF0YSkpOw0KICAgICAgICAgICAgX015X2RhdGEuX1N3YXBfcHJveHlfYW5k
X2l0ZXJhdG9ycyhfUmlnaHRfZGF0YSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIF9N
b3ZlX2Fzc2lnbihsaXN0JiBfUmlnaHQsIF9Ob19wcm9wYWdhdGVfYWxsb2NhdG9ycykgew0KICAg
ICAgICBpZiAoX0dldGFsKCkgPT0gX1JpZ2h0Ll9HZXRhbCgpKSB7DQogICAgICAgICAgICBfTW92
ZV9hc3NpZ24oX1JpZ2h0LCBfRXF1YWxfYWxsb2NhdG9yc3t9KTsNCiAgICAgICAgfSBlbHNlIHsN
CiAgICAgICAgICAgIGFzc2lnbigNCiAgICAgICAgICAgICAgICA6OnN0ZDo6IG1ha2VfbW92ZV9p
dGVyYXRvcihfUmlnaHQuX1VuY2hlY2tlZF9iZWdpbigpKSwgOjpzdGQ6OiBtYWtlX21vdmVfaXRl
cmF0b3IoX1JpZ2h0Ll9VbmNoZWNrZWRfZW5kKCkpKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KcHVi
bGljOg0KICAgIGxpc3QmIG9wZXJhdG9yPShsaXN0JiYgX1JpZ2h0KSBub2V4Y2VwdCgNCiAgICAg
ICAgbm9leGNlcHQoX01vdmVfYXNzaWduKF9SaWdodCwgX0Nob29zZV9wb2NtYTxfQWxub2RlPnt9
KSkpICB7DQogICAgICAgIGlmICh0aGlzICE9IDo6c3RkOjogYWRkcmVzc29mKF9SaWdodCkpIHsN
CiAgICAgICAgICAgIF9Nb3ZlX2Fzc2lnbihfUmlnaHQsIF9DaG9vc2VfcG9jbWE8X0Fsbm9kZT57
fSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQpwcml2YXRl
Og0KICAgIHZvaWQgX1N3YXBfdmFsKGxpc3QmIF9SaWdodCkgbm9leGNlcHQgeyANCiAgICAgICAg
YXV0byYgX015X2RhdGEgICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIGF1dG8mIF9SaWdo
dF9kYXRhID0gX1JpZ2h0Ll9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgX015X2RhdGEuX1N3YXBf
cHJveHlfYW5kX2l0ZXJhdG9ycyhfUmlnaHRfZGF0YSk7DQogICAgICAgIF9Td2FwX2FkbChfTXlf
ZGF0YS5fTXloZWFkLCBfUmlnaHRfZGF0YS5fTXloZWFkKTsNCiAgICAgICAgOjpzdGQ6OiBzd2Fw
KF9NeV9kYXRhLl9NeXNpemUsIF9SaWdodF9kYXRhLl9NeXNpemUpOw0KICAgIH0NCg0KcHVibGlj
Og0KICAgIHZvaWQgcHVzaF9mcm9udChfVHkmJiBfVmFsKSB7IA0KICAgICAgICBfRW1wbGFjZShf
TXlwYWlyLl9NeXZhbDIuX015aGVhZC0+X05leHQsIDo6c3RkOjogbW92ZShfVmFsKSk7DQogICAg
fQ0KDQogICAgdm9pZCBwdXNoX2JhY2soX1R5JiYgX1ZhbCkgeyANCiAgICAgICAgX0VtcGxhY2Uo
X015cGFpci5fTXl2YWwyLl9NeWhlYWQsIDo6c3RkOjogbW92ZShfVmFsKSk7DQogICAgfQ0KDQog
ICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSwgX1R5JiYgX1ZhbCkgeyAN
CiAgICAgICAgcmV0dXJuIGVtcGxhY2UoX1doZXJlLCA6OnN0ZDo6IG1vdmUoX1ZhbCkpOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfVmFsdHk+DQogICAgZGVjbHR5cGUoYXV0bykg
ZW1wbGFjZV9mcm9udChfVmFsdHkmJi4uLiBfVmFsKSB7IA0KICAgICAgICByZWZlcmVuY2UgX1Jl
c3VsdCA9IF9FbXBsYWNlKF9NeXBhaXIuX015dmFsMi5fTXloZWFkLT5fTmV4dCwgOjpzdGQ6OiBm
b3J3YXJkPF9WYWx0eT4oX1ZhbCkuLi4pLT5fTXl2YWw7DQoNCg0KICAgICAgICByZXR1cm4gX1Jl
c3VsdDsNCg0KDQojbGluZSA5ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcbGlzdCINCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1Zh
bHR5Pg0KICAgIGRlY2x0eXBlKGF1dG8pIGVtcGxhY2VfYmFjayhfVmFsdHkmJi4uLiBfVmFsKSB7
IA0KICAgICAgICByZWZlcmVuY2UgX1Jlc3VsdCA9IF9FbXBsYWNlKF9NeXBhaXIuX015dmFsMi5f
TXloZWFkLCA6OnN0ZDo6IGZvcndhcmQ8X1ZhbHR5PihfVmFsKS4uLiktPl9NeXZhbDsNCg0KDQog
ICAgICAgIHJldHVybiBfUmVzdWx0Ow0KDQoNCiNsaW5lIDEwMDAgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCiAgICB9DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MuLi4gX1ZhbHR5Pg0KICAgIGl0ZXJhdG9yIGVtcGxhY2UoY29uc3QgY29uc3Rf
aXRlcmF0b3IgX1doZXJlLCBfVmFsdHkmJi4uLiBfVmFsKSB7IA0KDQoNCiNsaW5lIDEwMDcgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCg0K
ICAgICAgICByZXR1cm4gX01ha2VfaXRlcihfRW1wbGFjZShfV2hlcmUuX1B0ciwgOjpzdGQ6OiBm
b3J3YXJkPF9WYWx0eT4oX1ZhbCkuLi4pKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3Mu
Li4gX1ZhbHR5Pg0KICAgIF9Ob2RlcHRyIF9FbXBsYWNlKGNvbnN0IF9Ob2RlcHRyIF9XaGVyZSwg
X1ZhbHR5JiYuLi4gX1ZhbCkgeyANCiAgICAgICAgc2l6ZV90eXBlJiBfTXlzaXplID0gX015cGFp
ci5fTXl2YWwyLl9NeXNpemU7DQogICAgICAgIGlmIChfTXlzaXplID09IG1heF9zaXplKCkpIHsN
CiAgICAgICAgICAgIF9YbGVuZ3RoX2Vycm9yKCJsaXN0IHRvbyBsb25nIik7DQogICAgICAgIH0N
Cg0KICAgICAgICBfTGlzdF9ub2RlX2VtcGxhY2Vfb3AyPF9BbG5vZGU+IF9PcHtfR2V0YWwoKSwg
OjpzdGQ6OiBmb3J3YXJkPF9WYWx0eT4oX1ZhbCkuLi59Ow0KICAgICAgICArK19NeXNpemU7DQog
ICAgICAgIHJldHVybiBfT3AuX1RyYW5zZmVyX2JlZm9yZShfV2hlcmUpOw0KICAgIH0NCg0KICAg
IGxpc3QoaW5pdGlhbGl6ZXJfbGlzdDxfVHk+IF9JbGlzdCkgOiBfTXlwYWlyKF9aZXJvX3RoZW5f
dmFyaWFkaWNfYXJnc190e30pIHsNCiAgICAgICAgX0NvbnN0cnVjdF9yYW5nZV91bmNoZWNrZWQo
X0lsaXN0LmJlZ2luKCksIF9JbGlzdC5lbmQoKSk7DQogICAgfQ0KDQogICAgbGlzdChpbml0aWFs
aXplcl9saXN0PF9UeT4gX0lsaXN0LCBjb25zdCBfQWxsb2MmIF9BbCkgOiBfTXlwYWlyKF9PbmVf
dGhlbl92YXJpYWRpY19hcmdzX3R7fSwgX0FsKSB7DQogICAgICAgIF9Db25zdHJ1Y3RfcmFuZ2Vf
dW5jaGVja2VkKF9JbGlzdC5iZWdpbigpLCBfSWxpc3QuZW5kKCkpOw0KICAgIH0NCg0KICAgIGxp
c3QmIG9wZXJhdG9yPShpbml0aWFsaXplcl9saXN0PF9UeT4gX0lsaXN0KSB7DQogICAgICAgIGFz
c2lnbihfSWxpc3QuYmVnaW4oKSwgX0lsaXN0LmVuZCgpKTsNCiAgICAgICAgcmV0dXJuICp0aGlz
Ow0KICAgIH0NCg0KICAgIHZvaWQgYXNzaWduKGluaXRpYWxpemVyX2xpc3Q8X1R5PiBfSWxpc3Qp
IHsNCiAgICAgICAgYXNzaWduKF9JbGlzdC5iZWdpbigpLCBfSWxpc3QuZW5kKCkpOw0KICAgIH0N
Cg0KICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBfV2hlcmUsDQogICAgICAgIGlu
aXRpYWxpemVyX2xpc3Q8X1R5PiBfSWxpc3QpIHsgDQogICAgICAgIHJldHVybiBpbnNlcnQoX1do
ZXJlLCBfSWxpc3QuYmVnaW4oKSwgX0lsaXN0LmVuZCgpKTsNCiAgICB9DQoNCiAgICB+bGlzdCgp
IG5vZXhjZXB0IHsNCiAgICAgICAgX1RpZHkoKTsNCg0KDQoNCiNsaW5lIDEwNTEgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCiAgICB9DQoN
CnByaXZhdGU6DQogICAgdm9pZCBfUmVsb2FkX3NlbnRpbmVsX2FuZF9wcm94eShjb25zdCBsaXN0
JiBfUmlnaHQpIHsgDQogICAgICAgIGF1dG8mIF9BbCAgICAgICAgICAgICA9IF9HZXRhbCgpOw0K
ICAgICAgICBhdXRvJiYgX0FscHJveHkgICAgICAgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAg
ICAgYXV0byYgX1JpZ2h0X2FsICAgICAgID0gX1JpZ2h0Ll9HZXRhbCgpOw0KICAgICAgICBhdXRv
JiYgX1JpZ2h0X2FscHJveHkgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAgICAgICAgX0NvbnRhaW5l
cl9wcm94eV9wdHI8X0FsdHk+IF9Qcm94eShfUmlnaHRfYWxwcm94eSwgX0xlYXZlX3Byb3h5X3Vu
Ym91bmR7fSk7DQogICAgICAgIGF1dG8gX1JpZ2h0X2FsX25vbl9jb25zdCA9IF9SaWdodF9hbDsN
CiAgICAgICAgYXV0byBfTmV3aGVhZCAgICAgICAgICAgID0gX05vZGU6Ol9CdXloZWFkbm9kZShf
UmlnaHRfYWxfbm9uX2NvbnN0KTsNCiAgICAgICAgX1RpZHkoKTsNCiAgICAgICAgX1BvY2NhKF9B
bCwgX1JpZ2h0X2FsKTsNCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeWhlYWQgPSBfTmV3aGVh
ZDsNCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUgPSAwOw0KICAgICAgICBfUHJveHku
X0JpbmQoX0FscHJveHksIDo6c3RkOjogYWRkcmVzc29mKF9NeXBhaXIuX015dmFsMikpOw0KICAg
IH0NCg0KICAgIHZvaWQgX0NvcHlfYXNzaWduKGNvbnN0IGxpc3QmIF9SaWdodCwgZmFsc2VfdHlw
ZSkgew0KICAgICAgICBfUG9jY2EoX0dldGFsKCksIF9SaWdodC5fR2V0YWwoKSk7DQogICAgICAg
IGFzc2lnbihfUmlnaHQuX1VuY2hlY2tlZF9iZWdpbigpLCBfUmlnaHQuX1VuY2hlY2tlZF9lbmQo
KSk7DQogICAgfQ0KDQogICAgdm9pZCBfQ29weV9hc3NpZ24oY29uc3QgbGlzdCYgX1JpZ2h0LCB0
cnVlX3R5cGUpIHsNCiAgICAgICAgaWYgKF9HZXRhbCgpICE9IF9SaWdodC5fR2V0YWwoKSkgew0K
ICAgICAgICAgICAgX1JlbG9hZF9zZW50aW5lbF9hbmRfcHJveHkoX1JpZ2h0KTsNCiAgICAgICAg
fQ0KDQogICAgICAgIGFzc2lnbihfUmlnaHQuX1VuY2hlY2tlZF9iZWdpbigpLCBfUmlnaHQuX1Vu
Y2hlY2tlZF9lbmQoKSk7DQogICAgfQ0KDQpwdWJsaWM6DQogICAgbGlzdCYgb3BlcmF0b3I9KGNv
bnN0IGxpc3QmIF9SaWdodCkgew0KICAgICAgICBpZiAodGhpcyAhPSA6OnN0ZDo6IGFkZHJlc3Nv
ZihfUmlnaHQpKSB7DQogICAgICAgICAgICBfQ29weV9hc3NpZ24oX1JpZ2h0LCBfQ2hvb3NlX3Bv
Y2NhPF9BbG5vZGU+e30pOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaXRlcmF0b3IgYmVnaW4oKSBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBpdGVyYXRvcihfTXlwYWlyLl9NeXZhbDIuX015aGVhZC0+X05leHQsIDo6c3Rk
OjogYWRkcmVzc29mKF9NeXBhaXIuX015dmFsMikpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biBjb25zdF9pdGVyYXRvcihfTXlwYWlyLl9NeXZhbDIuX015aGVhZC0+X05leHQsIDo6c3RkOjog
YWRkcmVzc29mKF9NeXBhaXIuX015dmFsMikpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0g
aXRlcmF0b3IgZW5kKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gaXRlcmF0b3IoX015cGFp
ci5fTXl2YWwyLl9NeWhlYWQsIDo6c3RkOjogYWRkcmVzc29mKF9NeXBhaXIuX015dmFsMikpOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IoX015cGFpci5fTXl2YWwyLl9N
eWhlYWQsIDo6c3RkOjogYWRkcmVzc29mKF9NeXBhaXIuX015dmFsMikpOw0KICAgIH0NCg0KICAg
IF9VbmNoZWNrZWRfaXRlcmF0b3IgX1VuY2hlY2tlZF9iZWdpbigpIG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIF9VbmNoZWNrZWRfaXRlcmF0b3IoX015cGFpci5fTXl2YWwyLl9NeWhlYWQtPl9O
ZXh0LCBudWxscHRyKTsNCiAgICB9DQoNCiAgICBfVW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yIF9V
bmNoZWNrZWRfYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfVW5jaGVj
a2VkX2NvbnN0X2l0ZXJhdG9yKF9NeXBhaXIuX015dmFsMi5fTXloZWFkLT5fTmV4dCwgbnVsbHB0
cik7DQogICAgfQ0KDQogICAgX1VuY2hlY2tlZF9pdGVyYXRvciBfVW5jaGVja2VkX2VuZCgpIG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9VbmNoZWNrZWRfaXRlcmF0b3IoX015cGFpci5fTXl2
YWwyLl9NeWhlYWQsIG51bGxwdHIpOw0KICAgIH0NCg0KICAgIF9VbmNoZWNrZWRfY29uc3RfaXRl
cmF0b3IgX1VuY2hlY2tlZF9lbmQoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBf
VW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yKF9NeXBhaXIuX015dmFsMi5fTXloZWFkLCBudWxscHRy
KTsNCiAgICB9DQoNCiAgICBpdGVyYXRvciBfTWFrZV9pdGVyKF9Ob2RlcHRyIF9XaGVyZSkgY29u
c3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gaXRlcmF0b3IoX1doZXJlLCA6OnN0ZDo6IGFk
ZHJlc3NvZihfTXlwYWlyLl9NeXZhbDIpKTsNCiAgICB9DQoNCiAgICBjb25zdF9pdGVyYXRvciBf
TWFrZV9jb25zdF9pdGVyKF9Ob2RlcHRyIF9XaGVyZSkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gY29uc3RfaXRlcmF0b3IoX1doZXJlLCA6OnN0ZDo6IGFkZHJlc3NvZihfTXlwYWly
Ll9NeXZhbDIpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHJldmVyc2VfaXRlcmF0b3Ig
cmJlZ2luKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQo
KSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJi
ZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IoZW5kKCkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmV2ZXJzZV9pdGVyYXRv
ciByZW5kKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
cmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IoYmVnaW4oKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVyYXRv
ciBjYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBiZWdpbigpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIGVuZCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0g
Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gcmJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmVu
ZCgpOw0KICAgIH0NCg0KICAgIHZvaWQgcmVzaXplKCBzaXplX3R5cGUgX05ld3NpemUpIHsgDQog
ICAgICAgIGF1dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICBpZiAoX015
X2RhdGEuX015c2l6ZSA8IF9OZXdzaXplKSB7IA0KICAgICAgICAgICAgX0xpc3Rfbm9kZV9pbnNl
cnRfb3AyPF9BbG5vZGU+IF9PcChfR2V0YWwoKSk7DQogICAgICAgICAgICBfT3AuX0FwcGVuZF9u
KF9OZXdzaXplIC0gX015X2RhdGEuX015c2l6ZSk7DQogICAgICAgICAgICBfT3AuX0F0dGFjaF9h
dF9lbmQoX015X2RhdGEpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgd2hpbGUgKF9O
ZXdzaXplIDwgX015X2RhdGEuX015c2l6ZSkgew0KICAgICAgICAgICAgICAgIHBvcF9iYWNrKCk7
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHJlc2l6ZSggc2l6
ZV90eXBlIF9OZXdzaXplLCBjb25zdCBfVHkmIF9WYWwpIHsNCiAgICAgICAgDQogICAgICAgIGF1
dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICBpZiAoX015X2RhdGEuX015
c2l6ZSA8IF9OZXdzaXplKSB7IA0KICAgICAgICAgICAgX0xpc3Rfbm9kZV9pbnNlcnRfb3AyPF9B
bG5vZGU+IF9PcChfR2V0YWwoKSk7DQogICAgICAgICAgICBfT3AuX0FwcGVuZF9uKF9OZXdzaXpl
IC0gX015X2RhdGEuX015c2l6ZSwgX1ZhbCk7DQogICAgICAgICAgICBfT3AuX0F0dGFjaF9hdF9l
bmQoX015X2RhdGEpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgd2hpbGUgKF9OZXdz
aXplIDwgX015X2RhdGEuX015c2l6ZSkgew0KICAgICAgICAgICAgICAgIHBvcF9iYWNrKCk7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVf
dHlwZSBzaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX015cGFpci5fTXl2
YWwyLl9NeXNpemU7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgbWF4X3Np
emUoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAoOjpzdGQ6OiBtaW4pKA0KICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigobnVtZXJpY19saW1pdHM8ZGlmZmVyZW5j
ZV90eXBlPjo6bWF4KSgpKSwgX0Fsbm9kZV90cmFpdHM6Om1heF9zaXplKF9HZXRhbCgpKSk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIGVtcHR5KCkgY29uc3Qgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gX015cGFpci5fTXl2YWwyLl9NeXNpemUgPT0gMDsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBub2V4
Y2VwdCB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxhbGxvY2F0b3JfdHlwZT4oX0dldGFs
KCkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmVmZXJlbmNlIGZyb250KCkgbm9leGNl
cHQgIHsNCg0KDQojbGluZSAxMjExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5f
TXloZWFkLT5fTmV4dC0+X015dmFsOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rf
cmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQgIHsNCg0KDQojbGluZSAxMjE5ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCiAg
ICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5fTXloZWFkLT5fTmV4dC0+X015dmFsOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmVmZXJlbmNlIGJhY2soKSBub2V4Y2VwdCAgew0KDQoN
CiNsaW5lIDEyMjcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcbGlzdCINCg0KICAgICAgICByZXR1cm4gX015cGFpci5fTXl2YWwyLl9NeWhlYWQtPl9Q
cmV2LT5fTXl2YWw7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZWZlcmVuY2Ug
YmFjaygpIGNvbnN0IG5vZXhjZXB0ICB7DQoNCg0KI2xpbmUgMTIzNSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KDQogICAgICAgIHJldHVy
biBfTXlwYWlyLl9NeXZhbDIuX015aGVhZC0+X1ByZXYtPl9NeXZhbDsNCiAgICB9DQoNCiAgICB2
b2lkIHB1c2hfZnJvbnQoY29uc3QgX1R5JiBfVmFsKSB7DQogICAgICAgIF9FbXBsYWNlKF9NeXBh
aXIuX015dmFsMi5fTXloZWFkLT5fTmV4dCwgX1ZhbCk7DQogICAgfQ0KDQogICAgdm9pZCBwb3Bf
ZnJvbnQoKSBub2V4Y2VwdCAgew0KDQoNCiNsaW5lIDEyNDcgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCg0KICAgICAgICBfVW5jaGVja2Vk
X2VyYXNlKF9NeXBhaXIuX015dmFsMi5fTXloZWFkLT5fTmV4dCk7DQogICAgfQ0KDQogICAgdm9p
ZCBwdXNoX2JhY2soY29uc3QgX1R5JiBfVmFsKSB7DQogICAgICAgIF9FbXBsYWNlKF9NeXBhaXIu
X015dmFsMi5fTXloZWFkLCBfVmFsKTsNCiAgICB9DQoNCiAgICB2b2lkIHBvcF9iYWNrKCkgbm9l
eGNlcHQgIHsNCg0KDQojbGluZSAxMjU5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCiAgICAgICAgX1VuY2hlY2tlZF9lcmFzZShfTXlw
YWlyLl9NeXZhbDIuX015aGVhZC0+X1ByZXYpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX1RhcmdldF9yZWYsIGNsYXNzIF9VSXRlcj4NCiAgICB2b2lkIF9Bc3NpZ25f
Y2FzdChfVUl0ZXIgX1VGaXJzdCwgY29uc3QgX1VJdGVyIF9VTGFzdCkgew0KICAgICAgICANCiAg
ICAgICAgY29uc3QgYXV0byBfTXllbmQgPSBfTXlwYWlyLl9NeXZhbDIuX015aGVhZDsNCiAgICAg
ICAgYXV0byBfT2xkICAgICAgICAgPSBfTXllbmQtPl9OZXh0Ow0KICAgICAgICBmb3IgKDs7KSB7
IA0KICAgICAgICAgICAgaWYgKF9PbGQgPT0gX015ZW5kKSB7IA0KICAgICAgICAgICAgICAgIF9M
aXN0X25vZGVfaW5zZXJ0X29wMjxfQWxub2RlPiBfT3AoX0dldGFsKCkpOw0KICAgICAgICAgICAg
ICAgIF9PcC5fQXBwZW5kX3JhbmdlX3VuY2hlY2tlZChfVUZpcnN0LCBfVUxhc3QpOw0KICAgICAg
ICAgICAgICAgIF9PcC5fQXR0YWNoX2F0X2VuZChfTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKF9VRmlyc3Qg
PT0gX1VMYXN0KSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgX1VuY2hlY2tl
ZF9lcmFzZShfT2xkLCBfTXllbmQpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgDQogICAgICAgICAgICByZWludGVycHJldF9jYXN0PF9UYXJn
ZXRfcmVmPihfT2xkLT5fTXl2YWwpID0gKl9VRmlyc3Q7DQogICAgICAgICAgICBfT2xkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gX09sZC0+X05leHQ7DQogICAgICAg
ICAgICArK19VRmlyc3Q7DQogICAgICAgIH0NCiAgICB9DQoNCnB1YmxpYzoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0l0ZXIsIGVuYWJsZV9pZl90PF9Jc19pdGVyYXRvcl92PF9JdGVyPiwgaW50PiA9
IDA+DQogICAgdm9pZCBhc3NpZ24oX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCkgew0KICAgICAg
ICBfQXNzaWduX2Nhc3Q8cmVmZXJlbmNlPihfR2V0X3Vud3JhcHBlZChfRmlyc3QpLCBfR2V0X3Vu
d3JhcHBlZChfTGFzdCkpOw0KICAgIH0NCg0KICAgIHZvaWQgYXNzaWduKCBzaXplX3R5cGUgX0Nv
dW50LCBjb25zdCBfVHkmIF9WYWwpIHsgDQogICAgICAgIGNvbnN0IGF1dG8gX015ZW5kID0gX015
cGFpci5fTXl2YWwyLl9NeWhlYWQ7DQogICAgICAgIGF1dG8gX09sZCAgICAgICAgID0gX015ZW5k
LT5fTmV4dDsNCiAgICAgICAgZm9yICg7OykgeyANCiAgICAgICAgICAgIGlmIChfT2xkID09IF9N
eWVuZCkgeyANCiAgICAgICAgICAgICAgICBfTGlzdF9ub2RlX2luc2VydF9vcDI8X0Fsbm9kZT4g
X09wKF9HZXRhbCgpKTsNCiAgICAgICAgICAgICAgICBfT3AuX0FwcGVuZF9uKF9Db3VudCwgX1Zh
bCk7DQogICAgICAgICAgICAgICAgX09wLl9BdHRhY2hfYXRfZW5kKF9NeXBhaXIuX015dmFsMik7
DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBp
ZiAoX0NvdW50ID09IDApIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBfVW5j
aGVja2VkX2VyYXNlKF9PbGQsIF9NeWVuZCk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAg
ICAgICAgICAgfQ0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIF9PbGQtPl9NeXZhbCA9IF9W
YWw7DQogICAgICAgICAgICBfT2xkICAgICAgICAgPSBfT2xkLT5fTmV4dDsNCiAgICAgICAgICAg
IC0tX0NvdW50Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0
X2l0ZXJhdG9yIF9XaGVyZSwgY29uc3QgX1R5JiBfVmFsKSB7IA0KDQoNCiNsaW5lIDEzMjQgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCiAg
ICAgICAgcmV0dXJuIF9NYWtlX2l0ZXIoX0VtcGxhY2UoX1doZXJlLl9QdHIsIF9WYWwpKTsNCiAg
ICB9DQoNCiAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgX1doZXJlLCAgc2l6ZV90
eXBlIF9Db3VudCwNCiAgICAgICAgY29uc3QgX1R5JiBfVmFsKSB7IA0KDQoNCiNsaW5lIDEzMzIg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCIN
CiAgICAgICAgX0xpc3Rfbm9kZV9pbnNlcnRfb3AyPF9BbG5vZGU+IF9PcChfR2V0YWwoKSk7DQog
ICAgICAgIF9PcC5fQXBwZW5kX24oX0NvdW50LCBfVmFsKTsNCiAgICAgICAgcmV0dXJuIF9NYWtl
X2l0ZXIoX09wLl9BdHRhY2hfYmVmb3JlKF9NeXBhaXIuX015dmFsMiwgX1doZXJlLl9QdHIpKTsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIsIGVuYWJsZV9pZl90PF9Jc19pdGVy
YXRvcl92PF9JdGVyPiwgaW50PiA9IDA+DQogICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0IGNvbnN0
X2l0ZXJhdG9yIF9XaGVyZSwgX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCkgeyANCg0KDQojbGlu
ZSAxMzQyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XGxpc3QiDQogICAgICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgICAg
ICBfTGlzdF9ub2RlX2luc2VydF9vcDI8X0Fsbm9kZT4gX09wKF9HZXRhbCgpKTsNCiAgICAgICAg
X09wLl9BcHBlbmRfcmFuZ2VfdW5jaGVja2VkKF9HZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRf
dW53cmFwcGVkKF9MYXN0KSk7DQogICAgICAgIHJldHVybiBfTWFrZV9pdGVyKF9PcC5fQXR0YWNo
X2JlZm9yZShfTXlwYWlyLl9NeXZhbDIsIF9XaGVyZS5fUHRyKSk7DQogICAgfQ0KDQpwdWJsaWM6
DQogICAgaXRlcmF0b3IgZXJhc2UoY29uc3QgY29uc3RfaXRlcmF0b3IgX1doZXJlKSBub2V4Y2Vw
dCAgew0KDQoNCiNsaW5lIDEzNTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcbGlzdCINCiAgICAgICAgY29uc3QgYXV0byBfUmVzdWx0ID0gX1doZXJl
Ll9QdHItPl9OZXh0Ow0KICAgICAgICBfTm9kZTo6X0ZyZWVub2RlKF9HZXRhbCgpLCBfTXlwYWly
Ll9NeXZhbDIuX1VubGlua25vZGUoX1doZXJlLl9QdHIpKTsNCiAgICAgICAgcmV0dXJuIF9NYWtl
X2l0ZXIoX1Jlc3VsdCk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIF9Ob2RlcHRyIF9VbmNoZWNr
ZWRfZXJhc2UoY29uc3QgX05vZGVwdHIgX1Bub2RlKSBub2V4Y2VwdCB7IA0KICAgICAgICBjb25z
dCBhdXRvIF9SZXN1bHQgPSBfUG5vZGUtPl9OZXh0Ow0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIu
X09ycGhhbl9wdHIyKF9Qbm9kZSk7DQogICAgICAgIC0tX015cGFpci5fTXl2YWwyLl9NeXNpemU7
DQogICAgICAgIF9Qbm9kZS0+X1ByZXYtPl9OZXh0ID0gX1Jlc3VsdDsNCiAgICAgICAgX1Jlc3Vs
dC0+X1ByZXYgICAgICAgPSBfUG5vZGUtPl9QcmV2Ow0KICAgICAgICBfTm9kZTo6X0ZyZWVub2Rl
KF9HZXRhbCgpLCBfUG5vZGUpOw0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCiAgICB9DQoNCnB1
YmxpYzoNCiAgICBpdGVyYXRvciBlcmFzZShjb25zdCBjb25zdF9pdGVyYXRvciBfRmlyc3QsIGNv
bnN0IGNvbnN0X2l0ZXJhdG9yIF9MYXN0KSBub2V4Y2VwdCAgew0KICAgICAgICBfQWRsX3Zlcmlm
eV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICAgICAgcmV0dXJuIF9NYWtlX2l0ZXIoX1VuY2hl
Y2tlZF9lcmFzZShfRmlyc3QuX1B0ciwgX0xhc3QuX1B0cikpOw0KICAgIH0NCg0KcHJpdmF0ZToN
CiAgICBfTm9kZXB0ciBfVW5jaGVja2VkX2VyYXNlKF9Ob2RlcHRyIF9GaXJzdCwgY29uc3QgX05v
ZGVwdHIgX0xhc3QpIG5vZXhjZXB0IHsgDQogICAgICAgIGlmIChfRmlyc3QgPT0gX0xhc3QpIHsN
CiAgICAgICAgICAgIHJldHVybiBfTGFzdDsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IGF1
dG8gX1ByZWRlY2Vzc29yID0gX0ZpcnN0LT5fUHJldjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDA2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCiAgICAgICAgDQogICAgICAgIF9Q
cmVkZWNlc3Nvci0+X05leHQgPSBfTGFzdDsNCiAgICAgICAgX0xhc3QtPl9QcmV2ICAgICAgICA9
IF9QcmVkZWNlc3NvcjsNCg0KICAgICAgICANCiAgICAgICAgYXV0byYgX0FsICAgICAgICAgICA9
IF9HZXRhbCgpOw0KICAgICAgICBzaXplX3R5cGUgX0VyYXN1cmVzID0gMDsNCiAgICAgICAgZG8g
ew0KICAgICAgICAgICAgY29uc3QgYXV0byBfTmV4dCA9IF9GaXJzdC0+X05leHQ7DQogICAgICAg
ICAgICBfTm9kZTo6X0ZyZWVub2RlKF9BbCwgX0ZpcnN0KTsNCiAgICAgICAgICAgIF9GaXJzdCA9
IF9OZXh0Ow0KICAgICAgICAgICAgKytfRXJhc3VyZXM7DQogICAgICAgIH0gd2hpbGUgKF9GaXJz
dCAhPSBfTGFzdCk7DQoNCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeXNpemUgLT0gX0VyYXN1
cmVzOw0KICAgICAgICByZXR1cm4gX0xhc3Q7DQogICAgfQ0KDQpwdWJsaWM6DQogICAgdm9pZCBj
bGVhcigpIG5vZXhjZXB0IHsgDQogICAgICAgIGF1dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2
YWwyOw0KICAgICAgICBfTXlfZGF0YS5fT3JwaGFuX25vbl9lbmQoKTsNCiAgICAgICAgX05vZGU6
Ol9GcmVlX25vbl9oZWFkKF9HZXRhbCgpLCBfTXlfZGF0YS5fTXloZWFkKTsNCiAgICAgICAgX015
X2RhdGEuX015aGVhZC0+X05leHQgPSBfTXlfZGF0YS5fTXloZWFkOw0KICAgICAgICBfTXlfZGF0
YS5fTXloZWFkLT5fUHJldiA9IF9NeV9kYXRhLl9NeWhlYWQ7DQogICAgICAgIF9NeV9kYXRhLl9N
eXNpemUgICAgICAgID0gMDsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdm9pZCBfVGlkeSgpIG5v
ZXhjZXB0IHsNCiAgICAgICAgYXV0byYgX0FsICAgICAgPSBfR2V0YWwoKTsNCiAgICAgICAgYXV0
byYgX015X2RhdGEgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIF9NeV9kYXRhLl9PcnBoYW5f
YWxsKCk7DQogICAgICAgIF9Ob2RlOjpfRnJlZV9ub25faGVhZChfQWwsIF9NeV9kYXRhLl9NeWhl
YWQpOw0KICAgICAgICBfTm9kZTo6X0ZyZWVub2RlMChfQWwsIF9NeV9kYXRhLl9NeWhlYWQpOw0K
ICAgIH0NCg0KcHVibGljOg0KICAgIHZvaWQgc3dhcChsaXN0JiBfUmlnaHQpIG5vZXhjZXB0ICB7
DQogICAgICAgIGlmICh0aGlzICE9IDo6c3RkOjogYWRkcmVzc29mKF9SaWdodCkpIHsNCiAgICAg
ICAgICAgIF9Qb2NzKF9HZXRhbCgpLCBfUmlnaHQuX0dldGFsKCkpOw0KICAgICAgICAgICAgX1N3
YXBfdmFsKF9SaWdodCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHNwbGljZShjb25z
dCBjb25zdF9pdGVyYXRvciBfV2hlcmUsIGxpc3QmIF9SaWdodCkgeyANCiAgICAgICAgYXV0byYg
X1JpZ2h0X2RhdGEgPSBfUmlnaHQuX015cGFpci5fTXl2YWwyOw0KICAgICAgICBpZiAodGhpcyAh
PSA6OnN0ZDo6IGFkZHJlc3NvZihfUmlnaHQpICYmIF9SaWdodF9kYXRhLl9NeXNpemUgIT0gMCkg
eyANCg0KDQojbGluZSAxNDU4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXGxpc3QiDQogICAgICAgICAgICBjb25zdCBhdXRvIF9SaWdodF9oZWFkID0g
X1JpZ2h0X2RhdGEuX015aGVhZDsNCiAgICAgICAgICAgIF9TcGxpY2UoX1doZXJlLl9QdHIsIF9S
aWdodCwgX1JpZ2h0X2hlYWQtPl9OZXh0LCBfUmlnaHRfaGVhZCwgX1JpZ2h0X2RhdGEuX015c2l6
ZSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHNwbGljZShjb25zdCBjb25zdF9pdGVy
YXRvciBfV2hlcmUsIGxpc3QmJiBfUmlnaHQpIHsgDQogICAgICAgIHNwbGljZShfV2hlcmUsIF9S
aWdodCk7DQogICAgfQ0KDQogICAgdm9pZCBzcGxpY2UoY29uc3QgY29uc3RfaXRlcmF0b3IgX1do
ZXJlLCBsaXN0JiBfUmlnaHQsIGNvbnN0IGNvbnN0X2l0ZXJhdG9yIF9GaXJzdCkgew0KICAgICAg
ICANCg0KDQoNCg0KI2xpbmUgMTQ3NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KICAgICAgICBjb25zdCBhdXRvIF9VV2hlcmUgPSBfV2hl
cmUuX1B0cjsNCiAgICAgICAgY29uc3QgYXV0byBfVUZpcnN0ID0gX0ZpcnN0Ll9QdHI7DQoNCg0K
DQoNCg0KI2xpbmUgMTQ4MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFxsaXN0Ig0KDQogICAgICAgIGNvbnN0IGF1dG8gX1VMYXN0ID0gX1VGaXJzdC0+
X05leHQ7DQogICAgICAgIGlmICh0aGlzICE9IDo6c3RkOjogYWRkcmVzc29mKF9SaWdodCkgfHwg
KF9VV2hlcmUgIT0gX1VGaXJzdCAmJiBfVVdoZXJlICE9IF9VTGFzdCkpIHsNCiAgICAgICAgICAg
IF9TcGxpY2UoX1VXaGVyZSwgX1JpZ2h0LCBfVUZpcnN0LCBfVUxhc3QsIDEpOw0KICAgICAgICB9
DQogICAgfQ0KDQogICAgdm9pZCBzcGxpY2UoY29uc3QgY29uc3RfaXRlcmF0b3IgX1doZXJlLCBs
aXN0JiYgX1JpZ2h0LCBjb25zdCBjb25zdF9pdGVyYXRvciBfRmlyc3QpIHsNCiAgICAgICAgDQog
ICAgICAgIHNwbGljZShfV2hlcmUsIF9SaWdodCwgX0ZpcnN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IHNwbGljZShjb25zdCBjb25zdF9pdGVyYXRvciBfV2hlcmUsIGxpc3QmIF9SaWdodCwgY29uc3Qg
Y29uc3RfaXRlcmF0b3IgX0ZpcnN0LCBjb25zdCBjb25zdF9pdGVyYXRvciBfTGFzdCkgew0KICAg
ICAgICANCg0KDQoNCg0KDQojbGluZSAxNTAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWlj
cm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xc
MTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCiAgICAgICAgY29uc3QgYXV0byBfVVdoZXJl
ID0gX1doZXJlLl9QdHI7DQogICAgICAgIGNvbnN0IGF1dG8gX1VGaXJzdCA9IF9GaXJzdC5fUHRy
Ow0KICAgICAgICBjb25zdCBhdXRvIF9VTGFzdCAgPSBfTGFzdC5fUHRyOw0KDQogICAgICAgIGlm
IChfVUZpcnN0ICE9IF9VTGFzdCAmJiAodGhpcyAhPSA6OnN0ZDo6IGFkZHJlc3NvZihfUmlnaHQp
IHx8IF9VV2hlcmUgIT0gX1VMYXN0KSkgeyANCiAgICAgICAgICAgIHNpemVfdHlwZSBfQ291bnQg
PSAwOw0KDQogICAgICAgICAgICBpZiAodGhpcyAhPSA6OnN0ZDo6IGFkZHJlc3NvZihfUmlnaHQp
KSB7DQogICAgICAgICAgICAgICAgY29uc3QgYXV0byBfUmlnaHRfZW5kID0gX1JpZ2h0Ll9NeXBh
aXIuX015dmFsMi5fTXloZWFkOw0KICAgICAgICAgICAgICAgIGlmIChfVUZpcnN0ID09IF9SaWdo
dF9lbmQtPl9OZXh0ICYmIF9VTGFzdCA9PSBfUmlnaHRfZW5kKSB7DQogICAgICAgICAgICAgICAg
ICAgIF9Db3VudCA9IF9SaWdodC5fTXlwYWlyLl9NeXZhbDIuX015c2l6ZTsgDQogICAgICAgICAg
ICAgICAgfSBlbHNlIHsgDQogICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byBfVG9fY2hlY2sg
PSBfVUZpcnN0OyBfVG9fY2hlY2sgIT0gX1VMYXN0OyBfVG9fY2hlY2sgPSBfVG9fY2hlY2stPl9O
ZXh0LCAodm9pZCkgKytfQ291bnQpIHsNCg0KDQojbGluZSAxNTE5ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQogICAgICAgICAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF9T
cGxpY2UoX1VXaGVyZSwgX1JpZ2h0LCBfVUZpcnN0LCBfVUxhc3QsIF9Db3VudCk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICB2b2lkIHNwbGljZShjb25zdCBjb25zdF9pdGVyYXRvciBfV2hlcmUs
IGxpc3QmJiBfUmlnaHQsIGNvbnN0IGNvbnN0X2l0ZXJhdG9yIF9GaXJzdCwgY29uc3QgY29uc3Rf
aXRlcmF0b3IgX0xhc3QpIHsNCiAgICAgICAgDQogICAgICAgIHNwbGljZShfV2hlcmUsIF9SaWdo
dCwgX0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgc3RydWN0IF9MaXN0X25vZGVfcmVtb3Zl
X29wIHsNCiAgICAgICAgDQogICAgICAgIA0KDQogICAgICAgIGV4cGxpY2l0IF9MaXN0X25vZGVf
cmVtb3ZlX29wKGxpc3QmIF9MaXN0Xykgbm9leGNlcHQgOiBfTGlzdChfTGlzdF8pLCBfSGVhZCgp
LCBfVGFpbCg6OnN0ZDo6IGFkZHJlc3NvZihfSGVhZCkpIHt9DQoNCiAgICAgICAgX0xpc3Rfbm9k
ZV9yZW1vdmVfb3AoY29uc3QgX0xpc3Rfbm9kZV9yZW1vdmVfb3AmKSA9IGRlbGV0ZTsNCiAgICAg
ICAgX0xpc3Rfbm9kZV9yZW1vdmVfb3AmIG9wZXJhdG9yPShjb25zdCBfTGlzdF9ub2RlX3JlbW92
ZV9vcCYpID0gZGVsZXRlOw0KDQogICAgICAgIF9Ob2RlcHRyIF9UcmFuc2Zlcl9iYWNrKGNvbnN0
IF9Ob2RlcHRyIF9SZW1vdmVkKSBub2V4Y2VwdCB7DQogICAgICAgICAgICANCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgOw0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIC0tX0xpc3QuX015
cGFpci5fTXl2YWwyLl9NeXNpemU7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9OZXh0ID0gOjpz
dGQ6OiBleGNoYW5nZShfUmVtb3ZlZC0+X05leHQsIF9Ob2RlcHRyKCkpOw0KICAgICAgICAgICAg
Y29uc3QgYXV0byBfUHJldiA9IF9SZW1vdmVkLT5fUHJldjsNCiAgICAgICAgICAgIF9QcmV2LT5f
TmV4dCAgICAgPSBfTmV4dDsNCiAgICAgICAgICAgIF9OZXh0LT5fUHJldiAgICAgPSBfUHJldjsN
Cg0KDQoNCg0KI2xpbmUgMTU1NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFxsaXN0Ig0KDQogICAgICAgICAgICAqX1RhaWwgPSBfUmVtb3ZlZDsNCiAg
ICAgICAgICAgIF9UYWlsICA9IDo6c3RkOjogYWRkcmVzc29mKF9SZW1vdmVkLT5fTmV4dCk7DQoN
CiAgICAgICAgICAgIHJldHVybiBfTmV4dDsNCiAgICAgICAgfQ0KDQogICAgICAgIH5fTGlzdF9u
b2RlX3JlbW92ZV9vcCgpIHsNCiAgICAgICAgICAgIGF1dG8mIF9BbCA9IF9MaXN0Ll9HZXRhbCgp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1ODQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCg0KICAgICAg
ICAgICAgYXV0byBfVGFyZ2V0ID0gX0hlYWQ7DQogICAgICAgICAgICB3aGlsZSAoX1RhcmdldCkg
ew0KICAgICAgICAgICAgICAgIGF1dG8gX05leHQgPSBfVGFyZ2V0LT5fTmV4dDsNCiAgICAgICAg
ICAgICAgICBfTGlzdC5fTXlwYWlyLl9NeXZhbDIuX09ycGhhbl9wdHIyKF9UYXJnZXQpOw0KICAg
ICAgICAgICAgICAgIF9BbG5vZGVfdHJhaXRzOjpkZXN0cm95KF9BbCwgOjpzdGQ6OiBhZGRyZXNz
b2YoX1RhcmdldC0+X05leHQpKTsNCiAgICAgICAgICAgICAgICBfQWxub2RlX3RyYWl0czo6ZGVz
dHJveShfQWwsIDo6c3RkOjogYWRkcmVzc29mKF9UYXJnZXQtPl9QcmV2KSk7DQogICAgICAgICAg
ICAgICAgX0Fsbm9kZV90cmFpdHM6OmRlc3Ryb3koX0FsLCA6OnN0ZDo6IGFkZHJlc3NvZihfVGFy
Z2V0LT5fTXl2YWwpKTsNCiAgICAgICAgICAgICAgICBfQWwuZGVhbGxvY2F0ZShfVGFyZ2V0LCAx
KTsNCiAgICAgICAgICAgICAgICBfVGFyZ2V0ID0gX05leHQ7DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCg0KICAgICAgICBsaXN0JiBfTGlzdDsNCiAgICAgICAgX05vZGVwdHIgX0hlYWQ7IA0K
ICAgICAgICBfTm9kZXB0ciogX1RhaWw7DQogICAgfTsNCg0KICAgIGF1dG8gcmVtb3ZlKGNvbnN0
IF9UeSYgX1ZhbCkgeyANCiAgICAgICAgcmV0dXJuIHJlbW92ZV9pZihbJl0oY29uc3QgX1R5JiBf
T3RoZXIpIHsgcmV0dXJuIF9PdGhlciA9PSBfVmFsOyB9KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX1ByMT4NCiAgICBhdXRvIHJlbW92ZV9pZihfUHIxIF9QcmVkKSB7IA0KICAgICAg
ICBhdXRvJiBfTXlfZGF0YSA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgX0xpc3Rfbm9kZV9y
ZW1vdmVfb3AgX09wKCp0aGlzKTsNCiAgICAgICAgY29uc3QgYXV0byBfTGFzdCAgICAgICAgID0g
X015X2RhdGEuX015aGVhZDsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PbGRzaXplID0gX015
X2RhdGEuX015c2l6ZTsNCiAgICAgICAgZm9yIChhdXRvIF9GaXJzdCA9IF9MYXN0LT5fTmV4dDsg
X0ZpcnN0ICE9IF9MYXN0Oykgew0KICAgICAgICAgICAgYXV0byBfTmV4dCA9IF9GaXJzdC0+X05l
eHQ7DQogICAgICAgICAgICBpZiAoX1ByZWQoX0ZpcnN0LT5fTXl2YWwpKSB7DQogICAgICAgICAg
ICAgICAgX09wLl9UcmFuc2Zlcl9iYWNrKF9GaXJzdCk7DQogICAgICAgICAgICB9DQoNCiAgICAg
ICAgICAgIF9GaXJzdCA9IF9OZXh0Ow0KICAgICAgICB9DQoNCg0KDQojbGluZSAxNjI0ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQogICAg
ICAgICh2b2lkKSBfT2xkc2l6ZTsNCiNsaW5lIDE2MjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCiAgICB9DQoNCiAgICBhdXRvIHVuaXF1
ZSgpIHsgDQogICAgICAgIHJldHVybiB1bmlxdWUoZXF1YWxfdG88Pnt9KTsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1ByMj4NCiAgICBhdXRvIHVuaXF1ZShfUHIyIF9QcmVkKSB7IA0K
ICAgICAgICBfTGlzdF9ub2RlX3JlbW92ZV9vcCBfT3AoKnRoaXMpOw0KICAgICAgICBjb25zdCBf
Tm9kZXB0ciBfUGhlYWQgICAgPSBfTXlwYWlyLl9NeXZhbDIuX015aGVhZDsNCiAgICAgICAgX05v
ZGVwdHIgX1BwcmV2ICAgICAgICAgID0gX1BoZWFkLT5fTmV4dDsNCiAgICAgICAgX05vZGVwdHIg
X1Bub2RlICAgICAgICAgID0gX1BwcmV2LT5fTmV4dDsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBl
IF9PbGRzaXplID0gX015cGFpci5fTXl2YWwyLl9NeXNpemU7DQogICAgICAgIHdoaWxlIChfUG5v
ZGUgIT0gX1BoZWFkKSB7DQogICAgICAgICAgICBpZiAoX1ByZWQoX1BwcmV2LT5fTXl2YWwsIF9Q
bm9kZS0+X015dmFsKSkgeyANCiAgICAgICAgICAgICAgICBfUG5vZGUgPSBfT3AuX1RyYW5zZmVy
X2JhY2soX1Bub2RlKTsNCiAgICAgICAgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgICAgIF9Q
cHJldiA9IF9Qbm9kZTsNCiAgICAgICAgICAgICAgICBfUG5vZGUgPSBfUG5vZGUtPl9OZXh0Ow0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCg0KDQojbGluZSAxNjUxICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQogICAgICAgICh2b2lk
KSBfT2xkc2l6ZTsNCiNsaW5lIDE2NTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcbGlzdCINCiAgICB9DQoNCiAgICB2b2lkIG1lcmdlKGxpc3QmIF9S
aWdodCkgeyANCiAgICAgICAgX01lcmdlMShfUmlnaHQsIGxlc3M8Pnt9KTsNCiAgICB9DQoNCiAg
ICB2b2lkIG1lcmdlKGxpc3QmJiBfUmlnaHQpIHsgDQogICAgICAgIF9NZXJnZTEoX1JpZ2h0LCBs
ZXNzPD57fSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9QcjI+DQogICAgdm9pZCBt
ZXJnZShsaXN0JiBfUmlnaHQsIF9QcjIgX1ByZWQpIHsgDQogICAgICAgIF9NZXJnZTEoX1JpZ2h0
LCBfUGFzc19mbihfUHJlZCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfUHIyPg0K
ICAgIHZvaWQgbWVyZ2UobGlzdCYmIF9SaWdodCwgX1ByMiBfUHJlZCkgeyANCiAgICAgICAgX01l
cmdlMShfUmlnaHQsIF9QYXNzX2ZuKF9QcmVkKSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHRl
bXBsYXRlIDxjbGFzcyBfUHIyPg0KICAgIHZvaWQgX01lcmdlMShsaXN0JiBfUmlnaHQsIF9QcjIg
X1ByZWQpIHsgDQoNCg0KI2xpbmUgMTY3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KICAgICAgICBpZiAodGhpcyA9PSA6OnN0ZDo6IGFk
ZHJlc3NvZihfUmlnaHQpKSB7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KDQoN
Cg0KDQoNCiNsaW5lIDE2ODkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcbGlzdCINCg0KICAgICAgICBjb25zdCBhdXRvIF9SaWdodF9zaXplID0gX1Jp
Z2h0Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBpZiAoX1JpZ2h0X3NpemUgPT0g
MCkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAg
ICAgICANCiAgICAgICAgY29uc3QgYXV0byBfTXloZWFkICAgICA9IF9NeXBhaXIuX015dmFsMi5f
TXloZWFkOw0KICAgICAgICBjb25zdCBhdXRvIF9SaWdodF9oZWFkID0gX1JpZ2h0Ll9NeXBhaXIu
X015dmFsMi5fTXloZWFkOw0KICAgICAgICBjb25zdCBhdXRvIF9NaWQgICAgICAgID0gX1JpZ2h0
X2hlYWQtPl9OZXh0Ow0KICAgICAgICBfU3BsaWNlKF9NeWhlYWQsIF9SaWdodCwgX01pZCwgX1Jp
Z2h0X2hlYWQsIF9SaWdodF9zaXplKTsNCg0KICAgICAgICANCiAgICAgICAgaWYgKF9NeWhlYWQt
Pl9OZXh0ICE9IF9NaWQpIHsNCiAgICAgICAgICAgIF9TY2FyeV92YWw6Ol9NZXJnZV9zYW1lKF9N
eWhlYWQtPl9OZXh0LCBfTWlkLCBfTXloZWFkLCBfUHJlZCk7DQogICAgICAgIH0NCiAgICB9DQoN
CnB1YmxpYzoNCiAgICB2b2lkIHNvcnQoKSB7IA0KICAgICAgICBzb3J0KGxlc3M8Pnt9KTsNCiAg
ICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1ByMj4NCiAgICB2b2lkIHNvcnQoX1ByMiBfUHJl
ZCkgeyANCiAgICAgICAgYXV0byYgX015X2RhdGEgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAg
IF9TY2FyeV92YWw6Ol9Tb3J0KF9NeV9kYXRhLl9NeWhlYWQtPl9OZXh0LCBfTXlfZGF0YS5fTXlz
aXplLCBfUGFzc19mbihfUHJlZCkpOw0KICAgIH0NCg0KICAgIHZvaWQgcmV2ZXJzZSgpIG5vZXhj
ZXB0IHsgDQogICAgICAgIGNvbnN0IF9Ob2RlcHRyIF9QaGVhZCA9IF9NeXBhaXIuX015dmFsMi5f
TXloZWFkOw0KICAgICAgICBfTm9kZXB0ciBfUG5vZGUgICAgICAgPSBfUGhlYWQ7DQoNCiAgICAg
ICAgZm9yICg7OykgeyANCiAgICAgICAgICAgIGNvbnN0IF9Ob2RlcHRyIF9QbmV4dCA9IF9Qbm9k
ZS0+X05leHQ7DQogICAgICAgICAgICBfUG5vZGUtPl9OZXh0ICAgICAgICAgPSBfUG5vZGUtPl9Q
cmV2Ow0KICAgICAgICAgICAgX1Bub2RlLT5fUHJldiAgICAgICAgID0gX1BuZXh0Ow0KDQogICAg
ICAgICAgICBpZiAoX1BuZXh0ID09IF9QaGVhZCkgew0KICAgICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBfUG5vZGUgPSBfUG5leHQ7DQogICAgICAgIH0N
CiAgICB9DQoNCnByaXZhdGU6DQogICAgX05vZGVwdHIgX1NwbGljZSgNCiAgICAgICAgY29uc3Qg
X05vZGVwdHIgX1doZXJlLCBsaXN0JiBfUmlnaHQsIGNvbnN0IF9Ob2RlcHRyIF9GaXJzdCwgY29u
c3QgX05vZGVwdHIgX0xhc3QsIGNvbnN0IHNpemVfdHlwZSBfQ291bnQpIHsNCiAgICAgICAgDQog
ICAgICAgIGlmICh0aGlzICE9IDo6c3RkOjogYWRkcmVzc29mKF9SaWdodCkpIHsgDQoNCg0KDQoN
CiNsaW5lIDE3NDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcbGlzdCINCg0KICAgICAgICAgICAgYXV0byYgX015X2RhdGEgPSBfTXlwYWlyLl9NeXZh
bDI7DQogICAgICAgICAgICBpZiAobWF4X3NpemUoKSAtIF9NeV9kYXRhLl9NeXNpemUgPCBfQ291
bnQpIHsNCiAgICAgICAgICAgICAgICBfWGxlbmd0aF9lcnJvcigibGlzdCB0b28gbG9uZyIpOw0K
ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBhdXRvJiBfUmlnaHRfZGF0YSA9IF9SaWdodC5f
TXlwYWlyLl9NeXZhbDI7DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNzYzICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCiAgICAgICAg
ICAgIF9NeV9kYXRhLl9NeXNpemUgKz0gX0NvdW50Ow0KICAgICAgICAgICAgX1JpZ2h0X2RhdGEu
X015c2l6ZSAtPSBfQ291bnQ7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX1NjYXJ5X3Zh
bDo6X1VuY2hlY2tlZF9zcGxpY2UoX1doZXJlLCBfRmlyc3QsIF9MYXN0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIF9BbGxvY19zZW50aW5lbF9hbmRfcHJveHkoKSB7DQogICAgICAgIGF1dG8mJiBfQWxw
cm94eSA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICBfQ29udGFpbmVyX3Byb3h5X3B0cjxf
QWx0eT4gX1Byb3h5KF9BbHByb3h5LCBfTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBhdXRvJiBf
QWwgICAgID0gX0dldGFsKCk7DQogICAgICAgIGF1dG8gX05ld2hlYWQgPSBfQWwuYWxsb2NhdGUo
MSk7DQogICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX05ld2hlYWQtPl9OZXh0LCBfTmV3aGVh
ZCk7DQogICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX05ld2hlYWQtPl9QcmV2LCBfTmV3aGVh
ZCk7DQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fTXloZWFkID0gX05ld2hlYWQ7DQogICAgICAg
IF9Qcm94eS5fUmVsZWFzZSgpOw0KICAgIH0NCg0KICAgIHZvaWQgX09ycGhhbl9hbGwoKSBub2V4
Y2VwdCB7DQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fT3JwaGFuX2FsbCgpOw0KICAgIH0NCg0K
ICAgIF9BbG5vZGUmIF9HZXRhbCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIu
X0dldF9maXJzdCgpOw0KICAgIH0NCg0KICAgIGNvbnN0IF9BbG5vZGUmIF9HZXRhbCgpIGNvbnN0
IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX0dldF9maXJzdCgpOw0KICAgIH0N
Cg0KICAgIF9Db21wcmVzc2VkX3BhaXI8X0Fsbm9kZSwgX1NjYXJ5X3ZhbD4gX015cGFpcjsNCn07
DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyLCBjbGFzcyBfQWxsb2MgPSBhbGxvY2F0b3I8X0l0
ZXJfdmFsdWVfdDxfSXRlcj4+LA0KICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8X0lzX2l0
ZXJhdG9yPF9JdGVyPiwgX0lzX2FsbG9jYXRvcjxfQWxsb2M+PiwgaW50PiA9IDA+DQpsaXN0KF9J
dGVyLCBfSXRlciwgX0FsbG9jID0gX0FsbG9jKCkpIC0+IGxpc3Q8X0l0ZXJfdmFsdWVfdDxfSXRl
cj4sIF9BbGxvYz47DQojbGluZSAxODAyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXGxpc3QiDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9B
bGxvYz4NCnZvaWQgc3dhcChsaXN0PF9UeSwgX0FsbG9jPiYgX0xlZnQsIGxpc3Q8X1R5LCBfQWxs
b2M+JiBfUmlnaHQpIG5vZXhjZXB0ICB7DQogICAgX0xlZnQuc3dhcChfUmlnaHQpOw0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBsaXN0PF9UeSwgX0FsbG9jPiYgX0xlZnQsIGNvbnN0IGxpc3Q8X1R5LCBf
QWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX0xlZnQuc2l6ZSgpID09IF9SaWdodC5zaXpl
KCkgJiYgOjpzdGQ6OiBlcXVhbChfTGVmdC5iZWdpbigpLCBfTGVmdC5lbmQoKSwgX1JpZ2h0LmJl
Z2luKCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2M+DQpbW25vZGlz
Y2FyZF1dIGJvb2wgb3BlcmF0b3IhPShjb25zdCBsaXN0PF9UeSwgX0FsbG9jPiYgX0xlZnQsIGNv
bnN0IGxpc3Q8X1R5LCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBf
UmlnaHQpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2M+DQpbW25vZGlz
Y2FyZF1dIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGxpc3Q8X1R5LCBfQWxsb2M+JiBfTGVmdCwgY29u
c3QgbGlzdDxfVHksIF9BbGxvYz4mIF9SaWdodCkgew0KICAgIHJldHVybiA6OnN0ZDo6IGxleGlj
b2dyYXBoaWNhbF9jb21wYXJlKF9MZWZ0LmJlZ2luKCksIF9MZWZ0LmVuZCgpLCBfUmlnaHQuYmVn
aW4oKSwgX1JpZ2h0LmVuZCgpKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX0Fs
bG9jPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPihjb25zdCBsaXN0PF9UeSwgX0FsbG9j
PiYgX0xlZnQsIGNvbnN0IGxpc3Q8X1R5LCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4g
X1JpZ2h0IDwgX0xlZnQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9BbGxvYz4N
Cltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGxpc3Q8X1R5LCBfQWxsb2M+JiBf
TGVmdCwgY29uc3QgbGlzdDxfVHksIF9BbGxvYz4mIF9SaWdodCkgew0KICAgIHJldHVybiAhKF9S
aWdodCA8IF9MZWZ0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX0FsbG9jPg0K
W1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPj0oY29uc3QgbGlzdDxfVHksIF9BbGxvYz4mIF9M
ZWZ0LCBjb25zdCBsaXN0PF9UeSwgX0FsbG9jPiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuICEoX0xl
ZnQgPCBfUmlnaHQpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4NDkgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcbGlzdCINCg0KDQpu
YW1lc3BhY2UgcG1yIHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KICAgIHVzaW5nIGxpc3Qg
PSA6OnN0ZDo6IGxpc3Q8X1R5LCBwb2x5bW9ycGhpY19hbGxvY2F0b3I8X1R5Pj47DQp9IA0KI2xp
bmUgMTg1NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxsaXN0Ig0KfQ0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21hIHBhY2socG9wKQ0K
I2xpbmUgMTg2MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxsaXN0Ig0KI2xpbmUgMTg2MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFxsaXN0Ig0KI2xpbmUgMTUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2giDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE2ICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0KI3ByYWdtYSBwYWNr
KHB1c2gsIDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0
NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAy
NyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX015dmVjPg0KY2xhc3MgX1ZlY3Rvcl9jb25zdF9pdGVyYXRvciA6IHB1Ymxp
YyBfSXRlcmF0b3JfYmFzZSB7DQpwdWJsaWM6DQoNCg0KDQogICAgdXNpbmcgaXRlcmF0b3JfY2F0
ZWdvcnkgPSByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBl
ICAgICAgICA9IHR5cGVuYW1lIF9NeXZlYzo6dmFsdWVfdHlwZTsNCiAgICB1c2luZyBkaWZmZXJl
bmNlX3R5cGUgICA9IHR5cGVuYW1lIF9NeXZlYzo6ZGlmZmVyZW5jZV90eXBlOw0KICAgIHVzaW5n
IHBvaW50ZXIgICAgICAgICAgID0gdHlwZW5hbWUgX015dmVjOjpjb25zdF9wb2ludGVyOw0KICAg
IHVzaW5nIHJlZmVyZW5jZSAgICAgICAgID0gY29uc3QgdmFsdWVfdHlwZSY7DQoNCiAgICB1c2lu
ZyBfVHB0ciA9IHR5cGVuYW1lIF9NeXZlYzo6cG9pbnRlcjsNCg0KICAgIF9WZWN0b3JfY29uc3Rf
aXRlcmF0b3IoKSBub2V4Y2VwdCA6IF9QdHIoKSB7fQ0KDQogICAgX1ZlY3Rvcl9jb25zdF9pdGVy
YXRvcihfVHB0ciBfUGFyZywgY29uc3QgX0NvbnRhaW5lcl9iYXNlKiBfUHZlY3Rvcikgbm9leGNl
cHQgOiBfUHRyKF9QYXJnKSB7DQogICAgICAgIHRoaXMtPl9BZG9wdChfUHZlY3Rvcik7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qgew0KDQoN
Cg0KDQoNCiNsaW5lIDUzICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHZlY3RvciINCg0KICAgICAgICByZXR1cm4gKl9QdHI7DQogICAgfQ0KDQogICAg
W1tub2Rpc2NhcmRdXSBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7DQoNCg0KDQoNCg0KI2xp
bmUgNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
dmVjdG9yIg0KDQogICAgICAgIHJldHVybiBfUHRyOw0KICAgIH0NCg0KICAgIF9WZWN0b3JfY29u
c3RfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7DQoNCg0KDQoNCiNsaW5lIDc0ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0KICAgICAg
ICArK19QdHI7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBfVmVjdG9yX2Nv
bnN0X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7DQogICAgICAgIF9WZWN0b3JfY29uc3RfaXRl
cmF0b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICArKyp0aGlzOw0KICAgICAgICByZXR1cm4gX1Rt
cDsNCiAgICB9DQoNCiAgICBfVmVjdG9yX2NvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkgew0K
DQoNCg0KDQojbGluZSA5MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAgICAgICAgLS1fUHRyOw0KICAgICAgICByZXR1cm4gKnRo
aXM7DQogICAgfQ0KDQogICAgX1ZlY3Rvcl9jb25zdF9pdGVyYXRvciBvcGVyYXRvci0tKGludCkg
ew0KICAgICAgICBfVmVjdG9yX2NvbnN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAg
LS0qdGhpczsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgdm9pZCBfVmVyaWZ5
X29mZnNldChjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgY29uc3Qgew0KDQogICAgICAgICh2
b2lkKSBfT2ZmOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTYgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNc
XFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KICAgIH0NCg0KICAg
IF9WZWN0b3JfY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yKz0oY29uc3QgZGlmZmVyZW5jZV90eXBl
IF9PZmYpIHsNCiAgICAgICAgX1ZlcmlmeV9vZmZzZXQoX09mZik7DQogICAgICAgIF9QdHIgKz0g
X09mZjsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0g
X1ZlY3Rvcl9jb25zdF9pdGVyYXRvciBvcGVyYXRvcisoY29uc3QgZGlmZmVyZW5jZV90eXBlIF9P
ZmYpIGNvbnN0IHsNCiAgICAgICAgX1ZlY3Rvcl9jb25zdF9pdGVyYXRvciBfVG1wID0gKnRoaXM7
DQogICAgICAgIHJldHVybiBfVG1wICs9IF9PZmY7DQogICAgfQ0KDQogICAgX1ZlY3Rvcl9jb25z
dF9pdGVyYXRvciYgb3BlcmF0b3ItPShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgew0KICAg
ICAgICByZXR1cm4gKnRoaXMgKz0gLV9PZmY7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBf
VmVjdG9yX2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yLShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09m
ZikgY29uc3Qgew0KICAgICAgICBfVmVjdG9yX2NvbnN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsN
CiAgICAgICAgcmV0dXJuIF9UbXAgLT0gX09mZjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1d
IGRpZmZlcmVuY2VfdHlwZSBvcGVyYXRvci0oY29uc3QgX1ZlY3Rvcl9jb25zdF9pdGVyYXRvciYg
X1JpZ2h0KSBjb25zdCB7DQogICAgICAgIF9Db21wYXQoX1JpZ2h0KTsNCiAgICAgICAgcmV0dXJu
IF9QdHIgLSBfUmlnaHQuX1B0cjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5j
ZSBvcGVyYXRvcltdKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCB7DQogICAgICAg
IHJldHVybiAqKCp0aGlzICsgX09mZik7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29s
IG9wZXJhdG9yPT0oY29uc3QgX1ZlY3Rvcl9jb25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7
DQogICAgICAgIF9Db21wYXQoX1JpZ2h0KTsNCiAgICAgICAgcmV0dXJuIF9QdHIgPT0gX1JpZ2h0
Ll9QdHI7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
X1ZlY3Rvcl9jb25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIHJldHVybiAh
KCp0aGlzID09IF9SaWdodCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9wZXJh
dG9yPChjb25zdCBfVmVjdG9yX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsNCiAgICAg
ICAgX0NvbXBhdChfUmlnaHQpOw0KICAgICAgICByZXR1cm4gX1B0ciA8IF9SaWdodC5fUHRyOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj4oY29uc3QgX1ZlY3Rvcl9j
b25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIHJldHVybiBfUmlnaHQgPCAq
dGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I8PShjb25zdCBf
VmVjdG9yX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuICEo
X1JpZ2h0IDwgKnRoaXMpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRv
cj49KGNvbnN0IF9WZWN0b3JfY29uc3RfaXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgew0KICAgICAg
ICByZXR1cm4gISgqdGhpcyA8IF9SaWdodCk7DQogICAgfQ0KDQogICAgdm9pZCBfQ29tcGF0KGNv
bnN0IF9WZWN0b3JfY29uc3RfaXRlcmF0b3ImIF9SaWdodCkgY29uc3QgeyANCg0KICAgICAgICAo
dm9pZCkgX1JpZ2h0Ow0KDQoNCiNsaW5lIDE3OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQogICAgfQ0KDQoNCg0KDQoNCg0KI2xpbmUg
MTg3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZl
Y3RvciINCg0KICAgIHVzaW5nIF9QcmV2ZW50X2luaGVyaXRpbmdfdW53cmFwID0gX1ZlY3Rvcl9j
b25zdF9pdGVyYXRvcjsNCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3QgdmFsdWVfdHlwZSogX1Vu
d3JhcHBlZCgpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIF9VbmZhbmN5KF9QdHIpOw0KICAgIH0N
Cg0KICAgIHZvaWQgX1NlZWtfdG8oY29uc3QgdmFsdWVfdHlwZSogX0l0KSB7DQogICAgICAgIF9Q
dHIgPSBfUmVmYW5jeTxfVHB0cj4oY29uc3RfY2FzdDx2YWx1ZV90eXBlKj4oX0l0KSk7DQogICAg
fQ0KDQogICAgX1RwdHIgX1B0cjsgDQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX015dmVjPg0KW1tu
b2Rpc2NhcmRdXSBfVmVjdG9yX2NvbnN0X2l0ZXJhdG9yPF9NeXZlYz4gb3BlcmF0b3IrKA0KICAg
IHR5cGVuYW1lIF9WZWN0b3JfY29uc3RfaXRlcmF0b3I8X015dmVjPjo6ZGlmZmVyZW5jZV90eXBl
IF9PZmYsIF9WZWN0b3JfY29uc3RfaXRlcmF0b3I8X015dmVjPiBfTmV4dCkgew0KICAgIHJldHVy
biBfTmV4dCArPSBfT2ZmOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIzMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9NeXZlYz4N
CmNsYXNzIF9WZWN0b3JfaXRlcmF0b3IgOiBwdWJsaWMgX1ZlY3Rvcl9jb25zdF9pdGVyYXRvcjxf
TXl2ZWM+IHsNCnB1YmxpYzoNCiAgICB1c2luZyBfTXliYXNlID0gX1ZlY3Rvcl9jb25zdF9pdGVy
YXRvcjxfTXl2ZWM+Ow0KDQoNCg0KDQogICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSByYW5k
b21fYWNjZXNzX2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IHR5
cGVuYW1lIF9NeXZlYzo6dmFsdWVfdHlwZTsNCiAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgICA9
IHR5cGVuYW1lIF9NeXZlYzo6ZGlmZmVyZW5jZV90eXBlOw0KICAgIHVzaW5nIHBvaW50ZXIgICAg
ICAgICAgID0gdHlwZW5hbWUgX015dmVjOjpwb2ludGVyOw0KICAgIHVzaW5nIHJlZmVyZW5jZSAg
ICAgICAgID0gdmFsdWVfdHlwZSY7DQoNCiAgICB1c2luZyBfTXliYXNlOjpfTXliYXNlOw0KDQog
ICAgW1tub2Rpc2NhcmRdXSByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qgew0KICAgICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxyZWZlcmVuY2U+KF9NeWJhc2U6Om9wZXJhdG9yKigpKTsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsNCiAgICAg
ICAgcmV0dXJuIF9Db25zdF9jYXN0KF9NeWJhc2U6Om9wZXJhdG9yLT4oKSk7DQogICAgfQ0KDQog
ICAgX1ZlY3Rvcl9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsNCiAgICAgICAgX015YmFzZTo6b3Bl
cmF0b3IrKygpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgX1ZlY3Rvcl9p
dGVyYXRvciBvcGVyYXRvcisrKGludCkgew0KICAgICAgICBfVmVjdG9yX2l0ZXJhdG9yIF9UbXAg
PSAqdGhpczsNCiAgICAgICAgX015YmFzZTo6b3BlcmF0b3IrKygpOw0KICAgICAgICByZXR1cm4g
X1RtcDsNCiAgICB9DQoNCiAgICBfVmVjdG9yX2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkgew0KICAg
ICAgICBfTXliYXNlOjpvcGVyYXRvci0tKCk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9
DQoNCiAgICBfVmVjdG9yX2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7DQogICAgICAgIF9WZWN0
b3JfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICBfTXliYXNlOjpvcGVyYXRvci0tKCk7
DQogICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0NCg0KICAgIF9WZWN0b3JfaXRlcmF0b3ImIG9w
ZXJhdG9yKz0oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIHsNCiAgICAgICAgX015YmFzZTo6
b3BlcmF0b3IrPShfT2ZmKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIFtb
bm9kaXNjYXJkXV0gX1ZlY3Rvcl9pdGVyYXRvciBvcGVyYXRvcisoY29uc3QgZGlmZmVyZW5jZV90
eXBlIF9PZmYpIGNvbnN0IHsNCiAgICAgICAgX1ZlY3Rvcl9pdGVyYXRvciBfVG1wID0gKnRoaXM7
DQogICAgICAgIHJldHVybiBfVG1wICs9IF9PZmY7DQogICAgfQ0KDQogICAgX1ZlY3Rvcl9pdGVy
YXRvciYgb3BlcmF0b3ItPShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgew0KICAgICAgICBf
TXliYXNlOjpvcGVyYXRvci09KF9PZmYpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0K
DQogICAgdXNpbmcgX015YmFzZTo6b3BlcmF0b3ItOw0KDQogICAgW1tub2Rpc2NhcmRdXSBfVmVj
dG9yX2l0ZXJhdG9yIG9wZXJhdG9yLShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgY29uc3Qg
ew0KICAgICAgICBfVmVjdG9yX2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgcmV0dXJu
IF9UbXAgLT0gX09mZjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5jZSBvcGVy
YXRvcltdKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCB7DQogICAgICAgIHJldHVy
biBjb25zdF9jYXN0PHJlZmVyZW5jZT4oX015YmFzZTo6b3BlcmF0b3JbXShfT2ZmKSk7DQogICAg
fQ0KDQogICAgdXNpbmcgX1ByZXZlbnRfaW5oZXJpdGluZ191bndyYXAgPSBfVmVjdG9yX2l0ZXJh
dG9yOw0KDQogICAgW1tub2Rpc2NhcmRdXSB2YWx1ZV90eXBlKiBfVW53cmFwcGVkKCkgY29uc3Qg
ew0KICAgICAgICByZXR1cm4gX1VuZmFuY3kodGhpcy0+X1B0cik7DQogICAgfQ0KfTsNCg0KdGVt
cGxhdGUgPGNsYXNzIF9NeXZlYz4NCltbbm9kaXNjYXJkXV0gX1ZlY3Rvcl9pdGVyYXRvcjxfTXl2
ZWM+IG9wZXJhdG9yKygNCiAgICB0eXBlbmFtZSBfVmVjdG9yX2l0ZXJhdG9yPF9NeXZlYz46OmRp
ZmZlcmVuY2VfdHlwZSBfT2ZmLCBfVmVjdG9yX2l0ZXJhdG9yPF9NeXZlYz4gX05leHQpIHsNCiAg
ICByZXR1cm4gX05leHQgKz0gX09mZjsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNDYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBf
VmFsdWVfdHlwZSwgY2xhc3MgX1NpemVfdHlwZSwgY2xhc3MgX0RpZmZlcmVuY2VfdHlwZSwgY2xh
c3MgX1BvaW50ZXIsIGNsYXNzIF9Db25zdF9wb2ludGVyLA0KICAgIGNsYXNzIF9SZWZlcmVuY2Us
IGNsYXNzIF9Db25zdF9yZWZlcmVuY2U+DQpzdHJ1Y3QgX1ZlY19pdGVyX3R5cGVzIHsNCiAgICB1
c2luZyB2YWx1ZV90eXBlICAgICAgPSBfVmFsdWVfdHlwZTsNCiAgICB1c2luZyBzaXplX3R5cGUg
ICAgICAgPSBfU2l6ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IF9EaWZmZXJl
bmNlX3R5cGU7DQogICAgdXNpbmcgcG9pbnRlciAgICAgICAgID0gX1BvaW50ZXI7DQogICAgdXNp
bmcgY29uc3RfcG9pbnRlciAgID0gX0NvbnN0X3BvaW50ZXI7DQp9Ow0KDQoNCnN0cnVjdCBfVmFs
dWVfaW5pdF90YWcgeyANCiAgICBleHBsaWNpdCBfVmFsdWVfaW5pdF90YWcoKSA9IGRlZmF1bHQ7
DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVmFsX3R5cGVzPg0KY2xhc3MgX1ZlY3Rvcl92YWwg
OiBwdWJsaWMgX0NvbnRhaW5lcl9iYXNlIHsNCnB1YmxpYzoNCiAgICB1c2luZyB2YWx1ZV90eXBl
ICAgICAgPSB0eXBlbmFtZSBfVmFsX3R5cGVzOjp2YWx1ZV90eXBlOw0KICAgIHVzaW5nIHNpemVf
dHlwZSAgICAgICA9IHR5cGVuYW1lIF9WYWxfdHlwZXM6OnNpemVfdHlwZTsNCiAgICB1c2luZyBk
aWZmZXJlbmNlX3R5cGUgPSB0eXBlbmFtZSBfVmFsX3R5cGVzOjpkaWZmZXJlbmNlX3R5cGU7DQog
ICAgdXNpbmcgcG9pbnRlciAgICAgICAgID0gdHlwZW5hbWUgX1ZhbF90eXBlczo6cG9pbnRlcjsN
CiAgICB1c2luZyBjb25zdF9wb2ludGVyICAgPSB0eXBlbmFtZSBfVmFsX3R5cGVzOjpjb25zdF9w
b2ludGVyOw0KICAgIHVzaW5nIHJlZmVyZW5jZSAgICAgICA9IHZhbHVlX3R5cGUmOw0KICAgIHVz
aW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IHZhbHVlX3R5cGUmOw0KDQogICAgX1ZlY3Rvcl92
YWwoKSBub2V4Y2VwdCA6IF9NeWZpcnN0KCksIF9NeWxhc3QoKSwgX015ZW5kKCkge30NCg0KICAg
IHZvaWQgX1N3YXBfdmFsKF9WZWN0b3JfdmFsJiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAg
dGhpcy0+X1N3YXBfcHJveHlfYW5kX2l0ZXJhdG9ycyhfUmlnaHQpOw0KICAgICAgICBfU3dhcF9h
ZGwoX015Zmlyc3QsIF9SaWdodC5fTXlmaXJzdCk7DQogICAgICAgIF9Td2FwX2FkbChfTXlsYXN0
LCBfUmlnaHQuX015bGFzdCk7DQogICAgICAgIF9Td2FwX2FkbChfTXllbmQsIF9SaWdodC5fTXll
bmQpOw0KICAgIH0NCg0KICAgIHZvaWQgX1Rha2VfY29udGVudHMoX1ZlY3Rvcl92YWwmIF9SaWdo
dCkgbm9leGNlcHQgew0KICAgICAgICB0aGlzLT5fU3dhcF9wcm94eV9hbmRfaXRlcmF0b3JzKF9S
aWdodCk7DQogICAgICAgIF9NeWZpcnN0ID0gX1JpZ2h0Ll9NeWZpcnN0Ow0KICAgICAgICBfTXls
YXN0ICA9IF9SaWdodC5fTXlsYXN0Ow0KICAgICAgICBfTXllbmQgICA9IF9SaWdodC5fTXllbmQ7
DQoNCiAgICAgICAgX1JpZ2h0Ll9NeWZpcnN0ID0gcG9pbnRlcigpOw0KICAgICAgICBfUmlnaHQu
X015bGFzdCAgPSBwb2ludGVyKCk7DQogICAgICAgIF9SaWdodC5fTXllbmQgICA9IHBvaW50ZXIo
KTsNCiAgICB9DQoNCiAgICBwb2ludGVyIF9NeWZpcnN0OyANCiAgICBwb2ludGVyIF9NeWxhc3Q7
IA0KICAgIHBvaW50ZXIgX015ZW5kOyANCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9QdHJ0eT4N
CmF1dG8gX1VuZmFuY3lfbWF5YmVfbnVsbChfUHRydHkgX1B0cikgeyANCiAgICByZXR1cm4gX1B0
ciA/IDo6c3RkOjogYWRkcmVzc29mKCpfUHRyKSA6IG51bGxwdHI7DQp9DQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHk+DQpfVHkqIF9VbmZhbmN5X21heWJlX251bGwoX1R5KiBfUHRyKSB7IA0KICAgIHJl
dHVybiBfUHRyOw0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9BbGxvYyA9IGFs
bG9jYXRvcjxfVHk+Pg0KY2xhc3MgdmVjdG9yIHsgDQpwcml2YXRlOg0KICAgIHRlbXBsYXRlIDxj
bGFzcz4NCiAgICBmcmllbmQgY2xhc3MgX1ZiX3ZhbDsNCiAgICBmcmllbmQgX1RpZHlfZ3VhcmQ8
dmVjdG9yPjsNCg0KICAgIHVzaW5nIF9BbHR5ICAgICAgICA9IF9SZWJpbmRfYWxsb2NfdDxfQWxs
b2MsIF9UeT47DQogICAgdXNpbmcgX0FsdHlfdHJhaXRzID0gYWxsb2NhdG9yX3RyYWl0czxfQWx0
eT47DQoNCnB1YmxpYzoNCiAgICBzdGF0aWNfYXNzZXJ0KCExIHx8IGlzX3NhbWVfdjxfVHksIHR5
cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZT4sDQogICAgICAgICJ2ZWN0b3I8VCwgQWxsb2NhdG9y
PiIgIiByZXF1aXJlcyB0aGF0IEFsbG9jYXRvcidzIHZhbHVlX3R5cGUgbWF0Y2ggIiAiVCIgIiAo
U2VlIE40NjU5IDI2LjIuMSBbY29udGFpbmVyLnJlcXVpcmVtZW50cy5nZW5lcmFsXS8xNiBhbGxv
Y2F0b3JfdHlwZSkiICIgRWl0aGVyIGZpeCB0aGUgYWxsb2NhdG9yIHZhbHVlX3R5cGUgb3IgZGVm
aW5lIF9FTkZPUkNFX01BVENISU5HX0FMTE9DQVRPUlM9MCIgIiB0byBzdXBwcmVzcyB0aGlzIGRp
YWdub3N0aWMuIik7DQoNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgPSBfVHk7DQogICAgdXNp
bmcgYWxsb2NhdG9yX3R5cGUgID0gX0FsbG9jOw0KICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICA9
IHR5cGVuYW1lIF9BbHR5X3RyYWl0czo6cG9pbnRlcjsNCiAgICB1c2luZyBjb25zdF9wb2ludGVy
ICAgPSB0eXBlbmFtZSBfQWx0eV90cmFpdHM6OmNvbnN0X3BvaW50ZXI7DQogICAgdXNpbmcgcmVm
ZXJlbmNlICAgICAgID0gX1R5JjsNCiAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBf
VHkmOw0KICAgIHVzaW5nIHNpemVfdHlwZSAgICAgICA9IHR5cGVuYW1lIF9BbHR5X3RyYWl0czo6
c2l6ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIF9BbHR5X3Ry
YWl0czo6ZGlmZmVyZW5jZV90eXBlOw0KDQpwcml2YXRlOg0KICAgIHVzaW5nIF9TY2FyeV92YWwg
PSBfVmVjdG9yX3ZhbDxjb25kaXRpb25hbF90PF9Jc19zaW1wbGVfYWxsb2NfdjxfQWx0eT4sIF9T
aW1wbGVfdHlwZXM8X1R5PiwNCiAgICAgICAgX1ZlY19pdGVyX3R5cGVzPF9UeSwgc2l6ZV90eXBl
LCBkaWZmZXJlbmNlX3R5cGUsIHBvaW50ZXIsIGNvbnN0X3BvaW50ZXIsIF9UeSYsIGNvbnN0IF9U
eSY+Pj47DQoNCnB1YmxpYzoNCiAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAgID0gX1Zl
Y3Rvcl9pdGVyYXRvcjxfU2NhcnlfdmFsPjsNCiAgICB1c2luZyBjb25zdF9pdGVyYXRvciAgICAg
ICAgID0gX1ZlY3Rvcl9jb25zdF9pdGVyYXRvcjxfU2NhcnlfdmFsPjsNCiAgICB1c2luZyByZXZl
cnNlX2l0ZXJhdG9yICAgICAgID0gOjpzdGQ6OiByZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsN
CiAgICB1c2luZyBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yID0gOjpzdGQ6OiByZXZlcnNlX2l0ZXJh
dG9yPGNvbnN0X2l0ZXJhdG9yPjsNCg0KICAgIHZlY3RvcigpIG5vZXhjZXB0KGlzX25vdGhyb3df
ZGVmYXVsdF9jb25zdHJ1Y3RpYmxlX3Y8X0FsdHk+KSA6IF9NeXBhaXIoX1plcm9fdGhlbl92YXJp
YWRpY19hcmdzX3R7fSkgew0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX0FsbG9jX3Byb3h5KF9G
YWtlX2FsbG9jYXRvcigpKTsNCiAgICB9DQoNCiAgICBleHBsaWNpdCB2ZWN0b3IoY29uc3QgX0Fs
bG9jJiBfQWwpIG5vZXhjZXB0IDogX015cGFpcihfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30s
IF9BbCkgew0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX0FsbG9jX3Byb3h5KF9GYWtlX2FsbG9j
YXRvcigpKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTI+DQog
ICAgdm9pZCBfQ29uc3RydWN0X25fY29waWVzX29mX3R5KCBjb25zdCBzaXplX3R5cGUgX0NvdW50
LCBjb25zdCBfVHkyJiBfVmFsKSB7DQogICAgICAgIGF1dG8mJiBfQWxwcm94eSA9IF9GYWtlX2Fs
bG9jYXRvcigpOw0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgPSBfTXlwYWlyLl9NeXZhbDI7DQog
ICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbHR5PiBfUHJveHkoX0FscHJveHksIF9NeV9k
YXRhKTsNCiAgICAgICAgaWYgKF9Db3VudCAhPSAwKSB7DQogICAgICAgICAgICBfQnV5X25vbnpl
cm8oX0NvdW50KTsNCiAgICAgICAgICAgIF9UaWR5X2d1YXJkPHZlY3Rvcj4gX0d1YXJke3RoaXN9
Ow0KICAgICAgICAgICAgX015X2RhdGEuX015bGFzdCA9IF9VZmlsbChfTXlfZGF0YS5fTXlmaXJz
dCwgX0NvdW50LCBfVmFsKTsNCiAgICAgICAgICAgIF9HdWFyZC5fVGFyZ2V0ICAgPSBudWxscHRy
Ow0KICAgICAgICB9DQoNCiAgICAgICAgX1Byb3h5Ll9SZWxlYXNlKCk7DQogICAgfQ0KDQpwdWJs
aWM6DQogICAgZXhwbGljaXQgdmVjdG9yKCBjb25zdCBzaXplX3R5cGUgX0NvdW50LCBjb25zdCBf
QWxsb2MmIF9BbCA9IF9BbGxvYygpKQ0KICAgICAgICA6IF9NeXBhaXIoX09uZV90aGVuX3Zhcmlh
ZGljX2FyZ3NfdHt9LCBfQWwpIHsNCiAgICAgICAgX0NvbnN0cnVjdF9uX2NvcGllc19vZl90eShf
Q291bnQsIF9WYWx1ZV9pbml0X3RhZ3t9KTsNCiAgICB9DQoNCiAgICB2ZWN0b3IoIGNvbnN0IHNp
emVfdHlwZSBfQ291bnQsIGNvbnN0IF9UeSYgX1ZhbCwgY29uc3QgX0FsbG9jJiBfQWwgPSBfQWxs
b2MoKSkNCiAgICAgICAgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3R7fSwgX0Fs
KSB7DQogICAgICAgIF9Db25zdHJ1Y3Rfbl9jb3BpZXNfb2ZfdHkoX0NvdW50LCBfVmFsKTsNCiAg
ICB9DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KICAgIHZvaWQgX1Jh
bmdlX2NvbnN0cnVjdF9vcl90aWR5KF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QsIGlucHV0X2l0
ZXJhdG9yX3RhZykgew0KICAgICAgICBfVGlkeV9ndWFyZDx2ZWN0b3I+IF9HdWFyZHt0aGlzfTsN
CiAgICAgICAgZm9yICg7IF9GaXJzdCAhPSBfTGFzdDsgKytfRmlyc3QpIHsNCiAgICAgICAgICAg
IGVtcGxhY2VfYmFjaygqX0ZpcnN0KTsgDQogICAgICAgIH0NCg0KICAgICAgICBfR3VhcmQuX1Rh
cmdldCA9IG51bGxwdHI7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KICAg
IHZvaWQgX1JhbmdlX2NvbnN0cnVjdF9vcl90aWR5KF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3Qs
IGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7DQogICAgICAgIGNvbnN0IGF1dG8gX0NvdW50ID0gX0Nv
bnZlcnRfc2l6ZTxzaXplX3R5cGU+KHN0YXRpY19jYXN0PHNpemVfdD4oOjpzdGQ6OiBkaXN0YW5j
ZShfRmlyc3QsIF9MYXN0KSkpOw0KICAgICAgICBpZiAoX0NvdW50ICE9IDApIHsNCiAgICAgICAg
ICAgIF9CdXlfbm9uemVybyhfQ291bnQpOw0KICAgICAgICAgICAgX1RpZHlfZ3VhcmQ8dmVjdG9y
PiBfR3VhcmR7dGhpc307DQogICAgICAgICAgICBhdXRvJiBfTXlfZGF0YSAgID0gX015cGFpci5f
TXl2YWwyOw0KICAgICAgICAgICAgX015X2RhdGEuX015bGFzdCA9IF9VY29weShfRmlyc3QsIF9M
YXN0LCBfTXlfZGF0YS5fTXlmaXJzdCk7DQogICAgICAgICAgICBfR3VhcmQuX1RhcmdldCAgID0g
bnVsbHB0cjsNCiAgICAgICAgfQ0KICAgIH0NCg0KcHVibGljOg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfSXRlciwgZW5hYmxlX2lmX3Q8X0lzX2l0ZXJhdG9yX3Y8X0l0ZXI+LCBpbnQ+ID0gMD4NCiAg
ICB2ZWN0b3IoX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgY29uc3QgX0FsbG9jJiBfQWwgPSBf
QWxsb2MoKSkgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3R7fSwgX0FsKSB7DQog
ICAgICAgIGF1dG8mJiBfQWxwcm94eSA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICBfQ29u
dGFpbmVyX3Byb3h5X3B0cjxfQWx0eT4gX1Byb3h5KF9BbHByb3h5LCBfTXlwYWlyLl9NeXZhbDIp
Ow0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICAgICAgX1Jh
bmdlX2NvbnN0cnVjdF9vcl90aWR5KF9HZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53cmFw
cGVkKF9MYXN0KSwgX0l0ZXJfY2F0X3Q8X0l0ZXI+e30pOw0KICAgICAgICBfUHJveHkuX1JlbGVh
c2UoKTsNCiAgICB9DQoNCiAgICB2ZWN0b3IoaW5pdGlhbGl6ZXJfbGlzdDxfVHk+IF9JbGlzdCwg
Y29uc3QgX0FsbG9jJiBfQWwgPSBfQWxsb2MoKSkgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRp
Y19hcmdzX3R7fSwgX0FsKSB7DQogICAgICAgIGF1dG8mJiBfQWxwcm94eSA9IF9GYWtlX2FsbG9j
YXRvcigpOw0KICAgICAgICBfQ29udGFpbmVyX3Byb3h5X3B0cjxfQWx0eT4gX1Byb3h5KF9BbHBy
b3h5LCBfTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBfUmFuZ2VfY29uc3RydWN0X29yX3RpZHko
X0lsaXN0LmJlZ2luKCksIF9JbGlzdC5lbmQoKSwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWd7
fSk7DQogICAgICAgIF9Qcm94eS5fUmVsZWFzZSgpOw0KICAgIH0NCg0KICAgIHZlY3Rvcihjb25z
dCB2ZWN0b3ImIF9SaWdodCkNCiAgICAgICAgOiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19h
cmdzX3R7fSwgX0FsdHlfdHJhaXRzOjpzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0
aW9uKF9SaWdodC5fR2V0YWwoKSkpIHsNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ICAgICAgICAg
ICA9IF9GYWtlX2FsbG9jYXRvcigpOw0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgICAg
ID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICBjb25zdCBhdXRvJiBfUmlnaHRfZGF0YSAgID0g
X1JpZ2h0Ll9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgY29uc3QgcG9pbnRlciBfUmlnaHRmaXJz
dCA9IF9SaWdodF9kYXRhLl9NeWZpcnN0Ow0KICAgICAgICBjb25zdCBwb2ludGVyIF9SaWdodGxh
c3QgID0gX1JpZ2h0X2RhdGEuX015bGFzdDsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8
X0FsdHk+IF9Qcm94eShfQWxwcm94eSwgX015X2RhdGEpOw0KICAgICAgICBpZiAoX1JpZ2h0Zmly
c3QgIT0gX1JpZ2h0bGFzdCkgew0KICAgICAgICAgICAgX0J1eV9yYXcoc3RhdGljX2Nhc3Q8c2l6
ZV90eXBlPihfUmlnaHRsYXN0IC0gX1JpZ2h0Zmlyc3QpKTsNCiAgICAgICAgICAgIF9UaWR5X2d1
YXJkPHZlY3Rvcj4gX0d1YXJke3RoaXN9Ow0KICAgICAgICAgICAgX015X2RhdGEuX015bGFzdCA9
IF9VY29weShfUmlnaHRmaXJzdCwgX1JpZ2h0bGFzdCwgX015X2RhdGEuX015Zmlyc3QpOw0KICAg
ICAgICAgICAgX0d1YXJkLl9UYXJnZXQgICA9IG51bGxwdHI7DQogICAgICAgIH0NCg0KICAgICAg
ICBfUHJveHkuX1JlbGVhc2UoKTsNCiAgICB9DQoNCiAgICB2ZWN0b3IoY29uc3QgdmVjdG9yJiBf
UmlnaHQsIGNvbnN0IF9BbGxvYyYgX0FsKSA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2Fy
Z3NfdHt9LCBfQWwpIHsNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ICAgICAgICAgICA9IF9GYWtl
X2FsbG9jYXRvcigpOw0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgICAgID0gX015cGFp
ci5fTXl2YWwyOw0KICAgICAgICBjb25zdCBhdXRvJiBfUmlnaHRfZGF0YSAgID0gX1JpZ2h0Ll9N
eXBhaXIuX015dmFsMjsNCiAgICAgICAgY29uc3QgcG9pbnRlciBfUmlnaHRmaXJzdCA9IF9SaWdo
dF9kYXRhLl9NeWZpcnN0Ow0KICAgICAgICBjb25zdCBwb2ludGVyIF9SaWdodGxhc3QgID0gX1Jp
Z2h0X2RhdGEuX015bGFzdDsNCiAgICAgICAgX0NvbnRhaW5lcl9wcm94eV9wdHI8X0FsdHk+IF9Q
cm94eShfQWxwcm94eSwgX015X2RhdGEpOw0KICAgICAgICBpZiAoX1JpZ2h0Zmlyc3QgIT0gX1Jp
Z2h0bGFzdCkgew0KICAgICAgICAgICAgX0J1eV9yYXcoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihf
UmlnaHRsYXN0IC0gX1JpZ2h0Zmlyc3QpKTsNCiAgICAgICAgICAgIF9UaWR5X2d1YXJkPHZlY3Rv
cj4gX0d1YXJke3RoaXN9Ow0KICAgICAgICAgICAgX015X2RhdGEuX015bGFzdCA9IF9VY29weShf
UmlnaHRmaXJzdCwgX1JpZ2h0bGFzdCwgX015X2RhdGEuX015Zmlyc3QpOw0KICAgICAgICAgICAg
X0d1YXJkLl9UYXJnZXQgICA9IG51bGxwdHI7DQogICAgICAgIH0NCg0KICAgICAgICBfUHJveHku
X1JlbGVhc2UoKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdm9pZCBfTW92ZV9jb25zdHJ1Y3Qo
dmVjdG9yJiBfUmlnaHQsIHRydWVfdHlwZSkgbm9leGNlcHQgeyANCiAgICAgICAgX015cGFpci5f
TXl2YWwyLl9UYWtlX2NvbnRlbnRzKF9SaWdodC5fTXlwYWlyLl9NeXZhbDIpOw0KICAgIH0NCg0K
ICAgIHZvaWQgX01vdmVfY29uc3RydWN0KHZlY3RvciYgX1JpZ2h0LCBmYWxzZV90eXBlKSB7IA0K
ICAgICAgICBpZiBjb25zdGV4cHIgKCFfQWx0eV90cmFpdHM6OmlzX2Fsd2F5c19lcXVhbDo6dmFs
dWUpIHsNCiAgICAgICAgICAgIGlmIChfR2V0YWwoKSAhPSBfUmlnaHQuX0dldGFsKCkpIHsNCiAg
ICAgICAgICAgICAgICBjb25zdCBhdXRvJiBfUmlnaHRfZGF0YSAgID0gX1JpZ2h0Ll9NeXBhaXIu
X015dmFsMjsNCiAgICAgICAgICAgICAgICBjb25zdCBwb2ludGVyIF9SaWdodGZpcnN0ID0gX1Jp
Z2h0X2RhdGEuX015Zmlyc3Q7DQogICAgICAgICAgICAgICAgY29uc3QgcG9pbnRlciBfUmlnaHRs
YXN0ICA9IF9SaWdodF9kYXRhLl9NeWxhc3Q7DQogICAgICAgICAgICAgICAgaWYgKF9SaWdodGZp
cnN0ICE9IF9SaWdodGxhc3QpIHsNCiAgICAgICAgICAgICAgICAgICAgX0J1eV9yYXcoc3RhdGlj
X2Nhc3Q8c2l6ZV90eXBlPihfUmlnaHRsYXN0IC0gX1JpZ2h0Zmlyc3QpKTsNCiAgICAgICAgICAg
ICAgICAgICAgX1RpZHlfZ3VhcmQ8dmVjdG9yPiBfR3VhcmR7dGhpc307DQogICAgICAgICAgICAg
ICAgICAgIGF1dG8mIF9NeV9kYXRhICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgICAgICAg
ICAgICAgIF9NeV9kYXRhLl9NeWxhc3QgPSBfVW1vdmUoX1JpZ2h0Zmlyc3QsIF9SaWdodGxhc3Qs
IF9NeV9kYXRhLl9NeWZpcnN0KTsNCiAgICAgICAgICAgICAgICAgICAgX0d1YXJkLl9UYXJnZXQg
ICA9IG51bGxwdHI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIF9Nb3ZlX2NvbnN0cnVjdChfUmln
aHQsIHRydWVfdHlwZXt9KTsNCiAgICB9DQoNCnB1YmxpYzoNCiAgICB2ZWN0b3IodmVjdG9yJiYg
X1JpZ2h0KSBub2V4Y2VwdCA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCA6
OnN0ZDo6IG1vdmUoX1JpZ2h0Ll9HZXRhbCgpKSkgew0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIu
X0FsbG9jX3Byb3h5KF9GYWtlX2FsbG9jYXRvcigpKTsNCiAgICAgICAgX01vdmVfY29uc3RydWN0
KF9SaWdodCwgdHJ1ZV90eXBle30pOw0KICAgIH0NCg0KICAgIHZlY3Rvcih2ZWN0b3ImJiBfUmln
aHQsIGNvbnN0IF9BbGxvYyYgX0FsKSBub2V4Y2VwdChfQWx0eV90cmFpdHM6OmlzX2Fsd2F5c19l
cXVhbDo6dmFsdWUpIA0KICAgICAgICA6IF9NeXBhaXIoX09uZV90aGVuX3ZhcmlhZGljX2FyZ3Nf
dHt9LCBfQWwpIHsNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ID0gX0Zha2VfYWxsb2NhdG9yKCk7
DQogICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbHR5PiBfUHJveHkoX0FscHJveHksIF9N
eXBhaXIuX015dmFsMik7DQogICAgICAgIF9Nb3ZlX2NvbnN0cnVjdChfUmlnaHQsIHR5cGVuYW1l
IF9BbHR5X3RyYWl0czo6aXNfYWx3YXlzX2VxdWFsOjp0eXBle30pOw0KICAgICAgICBfUHJveHku
X1JlbGVhc2UoKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdm9pZCBfTW92ZV9hc3NpZ24odmVj
dG9yJiBfUmlnaHQsIF9FcXVhbF9hbGxvY2F0b3JzKSBub2V4Y2VwdCB7DQogICAgICAgIF9UaWR5
KCk7DQogICAgICAgIF9Qb2NtYShfR2V0YWwoKSwgX1JpZ2h0Ll9HZXRhbCgpKTsNCiAgICAgICAg
X015cGFpci5fTXl2YWwyLl9UYWtlX2NvbnRlbnRzKF9SaWdodC5fTXlwYWlyLl9NeXZhbDIpOw0K
ICAgIH0NCg0KICAgIHZvaWQgX01vdmVfYXNzaWduKHZlY3RvciYgX1JpZ2h0LCBfUHJvcGFnYXRl
X2FsbG9jYXRvcnMpIG5vZXhjZXB0ICB7DQogICAgICAgIF9UaWR5KCk7DQoNCg0KDQoNCg0KDQoj
bGluZSA2MTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcdmVjdG9yIg0KDQogICAgICAgIF9Qb2NtYShfR2V0YWwoKSwgX1JpZ2h0Ll9HZXRhbCgpKTsN
CiAgICAgICAgX015cGFpci5fTXl2YWwyLl9UYWtlX2NvbnRlbnRzKF9SaWdodC5fTXlwYWlyLl9N
eXZhbDIpOw0KICAgIH0NCg0KICAgIHZvaWQgX01vdmVfYXNzaWduKHZlY3RvciYgX1JpZ2h0LCBf
Tm9fcHJvcGFnYXRlX2FsbG9jYXRvcnMpIHsNCiAgICAgICAgaWYgKF9HZXRhbCgpID09IF9SaWdo
dC5fR2V0YWwoKSkgew0KICAgICAgICAgICAgX01vdmVfYXNzaWduKF9SaWdodCwgX0VxdWFsX2Fs
bG9jYXRvcnN7fSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBhdXRvJiBfUmlnaHRf
ZGF0YSAgICA9IF9SaWdodC5fTXlwYWlyLl9NeXZhbDI7DQogICAgICAgICAgICBjb25zdCBwb2lu
dGVyIF9GaXJzdCA9IF9SaWdodF9kYXRhLl9NeWZpcnN0Ow0KICAgICAgICAgICAgY29uc3QgcG9p
bnRlciBfTGFzdCAgPSBfUmlnaHRfZGF0YS5fTXlsYXN0Ow0KICAgICAgICAgICAgY29uc3QgYXV0
byBfTmV3c2l6ZSAgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9MYXN0IC0gX0ZpcnN0KTsNCg0K
ICAgICAgICAgICAgYXV0byYgX015X2RhdGEgICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAg
ICAgICBwb2ludGVyJiBfTXlmaXJzdCA9IF9NeV9kYXRhLl9NeWZpcnN0Ow0KICAgICAgICAgICAg
cG9pbnRlciYgX015bGFzdCAgPSBfTXlfZGF0YS5fTXlsYXN0Ow0KDQogICAgICAgICAgICBfTXlf
ZGF0YS5fT3JwaGFuX2FsbCgpOw0KDQogICAgICAgICAgICBjb25zdCBhdXRvIF9PbGRjYXBhY2l0
eSA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX015X2RhdGEuX015ZW5kIC0gX015Zmlyc3QpOw0K
DQogICAgICAgICAgICBpZiBjb25zdGV4cHIgKGNvbmp1bmN0aW9uX3Y8Ym9vbF9jb25zdGFudDxf
UHRyX2NvcHlfY2F0PF9UeSosIF9UeSo+OjpfVHJpdmlhbGx5X2NvcHlhYmxlPiwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9Vc2VzX2RlZmF1bHRfY29uc3RydWN0PF9BbHR5LCBfVHkq
LCBfVHk+LCBfVXNlc19kZWZhdWx0X2Rlc3Ryb3k8X0FsdHksIF9UeSo+Pikgew0KICAgICAgICAg
ICAgICAgIGlmIChfTmV3c2l6ZSA+IF9PbGRjYXBhY2l0eSkgew0KICAgICAgICAgICAgICAgICAg
ICBfQ2xlYXJfYW5kX3Jlc2VydmVfZ2VvbWV0cmljKF9OZXdzaXplKTsNCiAgICAgICAgICAgICAg
ICB9DQoNCiAgICAgICAgICAgICAgICBfTXlsYXN0ID0gX1JlZmFuY3k8cG9pbnRlcj4oX0NvcHlf
bWVtbW92ZShfVW5mYW5jeShfRmlyc3QpLCBfVW5mYW5jeShfTGFzdCksIF9VbmZhbmN5KF9NeWZp
cnN0KSkpOw0KICAgICAgICAgICAgfSBlbHNlDQojbGluZSA2NDEgIkM6XFxQcm9ncmFtIEZpbGVz
ICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRv
b2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgIGF1dG8gX09sZHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9N
eWxhc3QgLSBfTXlmaXJzdCk7DQoNCiAgICAgICAgICAgICAgICBpZiAoX05ld3NpemUgPiBfT2xk
c2l6ZSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoX05ld3NpemUgPiBfT2xkY2FwYWNpdHkp
IHsgDQogICAgICAgICAgICAgICAgICAgICAgICBfQ2xlYXJfYW5kX3Jlc2VydmVfZ2VvbWV0cmlj
KF9OZXdzaXplKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9PbGRzaXplID0gMDsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgX01p
ZCA9IF9GaXJzdCArIF9PbGRzaXplOw0KICAgICAgICAgICAgICAgICAgICBfTW92ZV91bmNoZWNr
ZWQoX0ZpcnN0LCBfTWlkLCBfTXlmaXJzdCk7DQogICAgICAgICAgICAgICAgICAgIF9NeWxhc3Qg
PSBfVW1vdmUoX01pZCwgX0xhc3QsIF9NeWxhc3QpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgX05ld2xhc3QgPSBfTXlmaXJzdCAr
IF9OZXdzaXplOw0KICAgICAgICAgICAgICAgICAgICBfTW92ZV91bmNoZWNrZWQoX0ZpcnN0LCBf
TGFzdCwgX015Zmlyc3QpOw0KICAgICAgICAgICAgICAgICAgICBfRGVzdHJveShfTmV3bGFzdCwg
X015bGFzdCk7DQogICAgICAgICAgICAgICAgICAgIF9NeWxhc3QgPSBfTmV3bGFzdDsNCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCnB1YmxpYzoN
CiAgICB2ZWN0b3ImIG9wZXJhdG9yPSh2ZWN0b3ImJiBfUmlnaHQpIG5vZXhjZXB0KG5vZXhjZXB0
KF9Nb3ZlX2Fzc2lnbihfUmlnaHQsIF9DaG9vc2VfcG9jbWE8X0FsdHk+e30pKSkgew0KICAgICAg
ICBpZiAodGhpcyAhPSA6OnN0ZDo6IGFkZHJlc3NvZihfUmlnaHQpKSB7DQogICAgICAgICAgICBf
TW92ZV9hc3NpZ24oX1JpZ2h0LCBfQ2hvb3NlX3BvY21hPF9BbHR5Pnt9KTsNCiAgICAgICAgfQ0K
DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB+dmVjdG9yKCkgbm9leGNlcHQg
ew0KICAgICAgICBfVGlkeSgpOw0KDQoNCg0KI2xpbmUgNjc4ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCiAgICB9DQoNCnByaXZhdGU6
DQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9WYWx0eT4NCiAgICBkZWNsdHlwZShhdXRvKSBfRW1w
bGFjZV9iYWNrX3dpdGhfdW51c2VkX2NhcGFjaXR5KF9WYWx0eSYmLi4uIF9WYWwpIHsNCiAgICAg
ICAgDQogICAgICAgIGF1dG8mIF9NeV9kYXRhICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAg
IHBvaW50ZXImIF9NeWxhc3QgPSBfTXlfZGF0YS5fTXlsYXN0Ow0KICAgICAgICA7IA0KICAgICAg
ICBfQWx0eV90cmFpdHM6OmNvbnN0cnVjdChfR2V0YWwoKSwgX1VuZmFuY3koX015bGFzdCksIDo6
c3RkOjogZm9yd2FyZDxfVmFsdHk+KF9WYWwpLi4uKTsNCiAgICAgICAgX09ycGhhbl9yYW5nZShf
TXlsYXN0LCBfTXlsYXN0KTsNCiAgICAgICAgX1R5JiBfUmVzdWx0ID0gKl9NeWxhc3Q7DQogICAg
ICAgICsrX015bGFzdDsNCg0KICAgICAgICByZXR1cm4gX1Jlc3VsdDsNCg0KDQojbGluZSA2OTYg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9y
Ig0KICAgIH0NCg0KcHVibGljOg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfVmFsdHk+DQogICAg
ZGVjbHR5cGUoYXV0bykgZW1wbGFjZV9iYWNrKF9WYWx0eSYmLi4uIF9WYWwpIHsNCiAgICAgICAg
DQogICAgICAgIGF1dG8mIF9NeV9kYXRhICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIHBv
aW50ZXImIF9NeWxhc3QgPSBfTXlfZGF0YS5fTXlsYXN0Ow0KICAgICAgICBpZiAoX015bGFzdCAh
PSBfTXlfZGF0YS5fTXllbmQpIHsNCiAgICAgICAgICAgIHJldHVybiBfRW1wbGFjZV9iYWNrX3dp
dGhfdW51c2VkX2NhcGFjaXR5KDo6c3RkOjogZm9yd2FyZDxfVmFsdHk+KF9WYWwpLi4uKTsNCiAg
ICAgICAgfQ0KDQogICAgICAgIF9UeSYgX1Jlc3VsdCA9ICpfRW1wbGFjZV9yZWFsbG9jYXRlKF9N
eWxhc3QsIDo6c3RkOjogZm9yd2FyZDxfVmFsdHk+KF9WYWwpLi4uKTsNCg0KICAgICAgICByZXR1
cm4gX1Jlc3VsdDsNCg0KDQojbGluZSA3MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KICAgIH0NCg0KICAgIHZvaWQgcHVzaF9iYWNr
KGNvbnN0IF9UeSYgX1ZhbCkgeyANCiAgICAgICAgZW1wbGFjZV9iYWNrKF9WYWwpOw0KICAgIH0N
Cg0KICAgIHZvaWQgcHVzaF9iYWNrKF9UeSYmIF9WYWwpIHsgDQogICAgICAgIGVtcGxhY2VfYmFj
ayg6OnN0ZDo6IG1vdmUoX1ZhbCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBf
VmFsdHk+DQogICAgcG9pbnRlciBfRW1wbGFjZV9yZWFsbG9jYXRlKGNvbnN0IHBvaW50ZXIgX1do
ZXJlcHRyLCBfVmFsdHkmJi4uLiBfVmFsKSB7DQogICAgICAgIA0KICAgICAgICBfQWx0eSYgX0Fs
ICAgICAgICA9IF9HZXRhbCgpOw0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICA9IF9NeXBhaXIu
X015dmFsMjsNCiAgICAgICAgcG9pbnRlciYgX015Zmlyc3QgPSBfTXlfZGF0YS5fTXlmaXJzdDsN
CiAgICAgICAgcG9pbnRlciYgX015bGFzdCAgPSBfTXlfZGF0YS5fTXlsYXN0Ow0KDQogICAgICAg
IDsgDQoNCiAgICAgICAgY29uc3QgYXV0byBfV2hlcmVvZmYgPSBzdGF0aWNfY2FzdDxzaXplX3R5
cGU+KF9XaGVyZXB0ciAtIF9NeWZpcnN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfT2xkc2l6ZSAg
PSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9NeWxhc3QgLSBfTXlmaXJzdCk7DQoNCiAgICAgICAg
aWYgKF9PbGRzaXplID09IG1heF9zaXplKCkpIHsNCiAgICAgICAgICAgIF9YbGVuZ3RoKCk7DQog
ICAgICAgIH0NCg0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX05ld3NpemUgICAgID0gX09sZHNp
emUgKyAxOw0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX05ld2NhcGFjaXR5ID0gX0NhbGN1bGF0
ZV9ncm93dGgoX05ld3NpemUpOw0KDQogICAgICAgIGNvbnN0IHBvaW50ZXIgX05ld3ZlYyAgICAg
ICAgICAgPSBfQWwuYWxsb2NhdGUoX05ld2NhcGFjaXR5KTsNCiAgICAgICAgY29uc3QgcG9pbnRl
ciBfQ29uc3RydWN0ZWRfbGFzdCA9IF9OZXd2ZWMgKyBfV2hlcmVvZmYgKyAxOw0KICAgICAgICBw
b2ludGVyIF9Db25zdHJ1Y3RlZF9maXJzdCAgICAgID0gX0NvbnN0cnVjdGVkX2xhc3Q7DQoNCiAg
ICAgICAgeyBpZiAoMSkgew0KICAgICAgICBfQWx0eV90cmFpdHM6OmNvbnN0cnVjdChfQWwsIF9V
bmZhbmN5KF9OZXd2ZWMgKyBfV2hlcmVvZmYpLCA6OnN0ZDo6IGZvcndhcmQ8X1ZhbHR5PihfVmFs
KS4uLik7DQogICAgICAgIF9Db25zdHJ1Y3RlZF9maXJzdCA9IF9OZXd2ZWMgKyBfV2hlcmVvZmY7
DQoNCiAgICAgICAgaWYgKF9XaGVyZXB0ciA9PSBfTXlsYXN0KSB7IA0KICAgICAgICAgICAgX1Vt
b3ZlX2lmX25vZXhjZXB0KF9NeWZpcnN0LCBfTXlsYXN0LCBfTmV3dmVjKTsNCiAgICAgICAgfSBl
bHNlIHsgDQogICAgICAgICAgICBfVW1vdmUoX015Zmlyc3QsIF9XaGVyZXB0ciwgX05ld3ZlYyk7
DQogICAgICAgICAgICBfQ29uc3RydWN0ZWRfZmlyc3QgPSBfTmV3dmVjOw0KICAgICAgICAgICAg
X1Vtb3ZlKF9XaGVyZXB0ciwgX015bGFzdCwgX05ld3ZlYyArIF9XaGVyZW9mZiArIDEpOw0KICAg
ICAgICB9DQogICAgICAgIH0gZWxzZSBpZiAoMCkgew0KICAgICAgICBfRGVzdHJveShfQ29uc3Ry
dWN0ZWRfZmlyc3QsIF9Db25zdHJ1Y3RlZF9sYXN0KTsNCiAgICAgICAgX0FsLmRlYWxsb2NhdGUo
X05ld3ZlYywgX05ld2NhcGFjaXR5KTsNCiAgICAgICAgOw0KICAgICAgICB9IH0NCg0KICAgICAg
ICBfQ2hhbmdlX2FycmF5KF9OZXd2ZWMsIF9OZXdzaXplLCBfTmV3Y2FwYWNpdHkpOw0KICAgICAg
ICByZXR1cm4gX05ld3ZlYyArIF9XaGVyZW9mZjsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xh
c3MuLi4gX1ZhbHR5Pg0KICAgIGl0ZXJhdG9yIGVtcGxhY2UoY29uc3RfaXRlcmF0b3IgX1doZXJl
LCBfVmFsdHkmJi4uLiBfVmFsKSB7IA0KICAgICAgICBjb25zdCBwb2ludGVyIF9XaGVyZXB0ciA9
IF9XaGVyZS5fUHRyOw0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgICA9IF9NeXBhaXIu
X015dmFsMjsNCiAgICAgICAgY29uc3QgcG9pbnRlciBfT2xkbGFzdCAgPSBfTXlfZGF0YS5fTXls
YXN0Ow0KDQoNCg0KDQojbGluZSA3NzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQogICAgICAgIGlmIChfT2xkbGFzdCAhPSBfTXlf
ZGF0YS5fTXllbmQpIHsNCiAgICAgICAgICAgIGlmIChfV2hlcmVwdHIgPT0gX09sZGxhc3QpIHsg
DQogICAgICAgICAgICAgICAgX0VtcGxhY2VfYmFja193aXRoX3VudXNlZF9jYXBhY2l0eSg6OnN0
ZDo6IGZvcndhcmQ8X1ZhbHR5PihfVmFsKS4uLik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAg
ICAgICAgICAgICAgIGF1dG8mIF9BbCA9IF9HZXRhbCgpOw0KICAgICAgICAgICAgICAgIF9BbGxv
Y190ZW1wb3Jhcnk8X0FsdHk+IF9PYmooX0FsLCA6OnN0ZDo6IGZvcndhcmQ8X1ZhbHR5PihfVmFs
KS4uLik7IA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIF9PcnBoYW5fcmFuZ2Uo
X1doZXJlcHRyLCBfT2xkbGFzdCk7DQogICAgICAgICAgICAgICAgX0FsdHlfdHJhaXRzOjpjb25z
dHJ1Y3QoX0FsLCBfVW5mYW5jeShfT2xkbGFzdCksIDo6c3RkOjogbW92ZShfT2xkbGFzdFstMV0p
KTsNCiAgICAgICAgICAgICAgICArK19NeV9kYXRhLl9NeWxhc3Q7DQogICAgICAgICAgICAgICAg
X01vdmVfYmFja3dhcmRfdW5jaGVja2VkKF9XaGVyZXB0ciwgX09sZGxhc3QgLSAxLCBfT2xkbGFz
dCk7DQogICAgICAgICAgICAgICAgKl9XaGVyZXB0ciA9IDo6c3RkOjogbW92ZShfT2JqLl9TdG9y
YWdlLl9WYWx1ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBfTWFrZV9p
dGVyYXRvcihfV2hlcmVwdHIpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9NYWtlX2l0
ZXJhdG9yKF9FbXBsYWNlX3JlYWxsb2NhdGUoX1doZXJlcHRyLCA6OnN0ZDo6IGZvcndhcmQ8X1Zh
bHR5PihfVmFsKS4uLikpOw0KICAgIH0NCg0KICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVy
YXRvciBfV2hlcmUsIGNvbnN0IF9UeSYgX1ZhbCkgeyANCiAgICAgICAgcmV0dXJuIGVtcGxhY2Uo
X1doZXJlLCBfVmFsKTsNCiAgICB9DQoNCiAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0
b3IgX1doZXJlLCBfVHkmJiBfVmFsKSB7IA0KICAgICAgICByZXR1cm4gZW1wbGFjZShfV2hlcmUs
IDo6c3RkOjogbW92ZShfVmFsKSk7DQogICAgfQ0KDQogICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0
X2l0ZXJhdG9yIF9XaGVyZSwgIGNvbnN0IHNpemVfdHlwZSBfQ291bnQsIGNvbnN0IF9UeSYgX1Zh
bCkgew0KICAgICAgICANCiAgICAgICAgY29uc3QgcG9pbnRlciBfV2hlcmVwdHIgPSBfV2hlcmUu
X1B0cjsNCg0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgID0gX015cGFpci5fTXl2YWwyOw0KICAg
ICAgICBwb2ludGVyJiBfTXlsYXN0ID0gX015X2RhdGEuX015bGFzdDsNCg0KICAgICAgICBjb25z
dCBwb2ludGVyIF9PbGRmaXJzdCA9IF9NeV9kYXRhLl9NeWZpcnN0Ow0KICAgICAgICBjb25zdCBw
b2ludGVyIF9PbGRsYXN0ICA9IF9NeWxhc3Q7DQoNCg0KDQojbGluZSA4MjEgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQogICAgICAg
IGNvbnN0IGF1dG8gX1doZXJlb2ZmICAgICAgICA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX1do
ZXJlcHRyIC0gX09sZGZpcnN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVW51c2VkX2NhcGFjaXR5
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTXlfZGF0YS5fTXllbmQgLSBfT2xkbGFzdCk7DQog
ICAgICAgIGNvbnN0IGJvb2wgX09uZV9hdF9iYWNrICAgICA9IF9Db3VudCA9PSAxICYmIF9XaGVy
ZXB0ciA9PSBfT2xkbGFzdDsNCiAgICAgICAgaWYgKF9Db3VudCA9PSAwKSB7IA0KICAgICAgICB9
IGVsc2UgaWYgKF9Db3VudCA+IF9VbnVzZWRfY2FwYWNpdHkpIHsgDQogICAgICAgICAgICBjb25z
dCBhdXRvIF9PbGRzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfT2xkbGFzdCAtIF9PbGRm
aXJzdCk7DQoNCiAgICAgICAgICAgIGlmIChfQ291bnQgPiBtYXhfc2l6ZSgpIC0gX09sZHNpemUp
IHsNCiAgICAgICAgICAgICAgICBfWGxlbmd0aCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICBjb25zdCBzaXplX3R5cGUgX05ld3NpemUgICAgID0gX09sZHNpemUgKyBfQ291bnQ7DQog
ICAgICAgICAgICBjb25zdCBzaXplX3R5cGUgX05ld2NhcGFjaXR5ID0gX0NhbGN1bGF0ZV9ncm93
dGgoX05ld3NpemUpOw0KDQogICAgICAgICAgICBjb25zdCBwb2ludGVyIF9OZXd2ZWMgICAgICAg
ICAgID0gX0dldGFsKCkuYWxsb2NhdGUoX05ld2NhcGFjaXR5KTsNCiAgICAgICAgICAgIGNvbnN0
IHBvaW50ZXIgX0NvbnN0cnVjdGVkX2xhc3QgPSBfTmV3dmVjICsgX1doZXJlb2ZmICsgX0NvdW50
Ow0KICAgICAgICAgICAgcG9pbnRlciBfQ29uc3RydWN0ZWRfZmlyc3QgICAgICA9IF9Db25zdHJ1
Y3RlZF9sYXN0Ow0KDQogICAgICAgICAgICB7IGlmICgxKSB7DQogICAgICAgICAgICBfVWZpbGwo
X05ld3ZlYyArIF9XaGVyZW9mZiwgX0NvdW50LCBfVmFsKTsNCiAgICAgICAgICAgIF9Db25zdHJ1
Y3RlZF9maXJzdCA9IF9OZXd2ZWMgKyBfV2hlcmVvZmY7DQoNCiAgICAgICAgICAgIGlmIChfT25l
X2F0X2JhY2spIHsgDQogICAgICAgICAgICAgICAgX1Vtb3ZlX2lmX25vZXhjZXB0KF9PbGRmaXJz
dCwgX09sZGxhc3QsIF9OZXd2ZWMpOw0KICAgICAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAg
ICAgICAgX1Vtb3ZlKF9PbGRmaXJzdCwgX1doZXJlcHRyLCBfTmV3dmVjKTsNCiAgICAgICAgICAg
ICAgICBfQ29uc3RydWN0ZWRfZmlyc3QgPSBfTmV3dmVjOw0KICAgICAgICAgICAgICAgIF9VbW92
ZShfV2hlcmVwdHIsIF9PbGRsYXN0LCBfTmV3dmVjICsgX1doZXJlb2ZmICsgX0NvdW50KTsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSBpZiAoMCkgew0KICAgICAgICAgICAgX0Rl
c3Ryb3koX0NvbnN0cnVjdGVkX2ZpcnN0LCBfQ29uc3RydWN0ZWRfbGFzdCk7DQogICAgICAgICAg
ICBfR2V0YWwoKS5kZWFsbG9jYXRlKF9OZXd2ZWMsIF9OZXdjYXBhY2l0eSk7DQogICAgICAgICAg
ICA7DQogICAgICAgICAgICB9IH0NCg0KICAgICAgICAgICAgX0NoYW5nZV9hcnJheShfTmV3dmVj
LCBfTmV3c2l6ZSwgX05ld2NhcGFjaXR5KTsNCiAgICAgICAgfSBlbHNlIGlmIChfT25lX2F0X2Jh
Y2spIHsgDQogICAgICAgICAgICBfRW1wbGFjZV9iYWNrX3dpdGhfdW51c2VkX2NhcGFjaXR5KF9W
YWwpOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIGNvbnN0IF9BbGxvY190ZW1wb3Jh
cnk8X0FsdHk+IF9UbXBfc3RvcmFnZShfR2V0YWwoKSwgX1ZhbCk7IA0KICAgICAgICAgICAgY29u
c3QgYXV0byYgX1RtcCAgICAgICAgICAgICAgPSBfVG1wX3N0b3JhZ2UuX1N0b3JhZ2UuX1ZhbHVl
Ow0KICAgICAgICAgICAgY29uc3QgYXV0byBfQWZmZWN0ZWRfZWxlbWVudHMgPSBzdGF0aWNfY2Fz
dDxzaXplX3R5cGU+KF9PbGRsYXN0IC0gX1doZXJlcHRyKTsNCiAgICAgICAgICAgIF9PcnBoYW5f
cmFuZ2UoX1doZXJlcHRyLCBfT2xkbGFzdCk7DQoNCiAgICAgICAgICAgIGlmIChfQ291bnQgPiBf
QWZmZWN0ZWRfZWxlbWVudHMpIHsgDQogICAgICAgICAgICAgICAgX015bGFzdCA9IF9VZmlsbChf
T2xkbGFzdCwgX0NvdW50IC0gX0FmZmVjdGVkX2VsZW1lbnRzLCBfVG1wKTsNCiAgICAgICAgICAg
ICAgICBfTXlsYXN0ID0gX1Vtb3ZlKF9XaGVyZXB0ciwgX09sZGxhc3QsIF9NeWxhc3QpOw0KICAg
ICAgICAgICAgICAgIDo6c3RkOjogZmlsbChfV2hlcmVwdHIsIF9PbGRsYXN0LCBfVG1wKTsNCiAg
ICAgICAgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgICAgIF9NeWxhc3QgPSBfVW1vdmUoX09s
ZGxhc3QgLSBfQ291bnQsIF9PbGRsYXN0LCBfT2xkbGFzdCk7DQogICAgICAgICAgICAgICAgX01v
dmVfYmFja3dhcmRfdW5jaGVja2VkKF9XaGVyZXB0ciwgX09sZGxhc3QgLSBfQ291bnQsIF9PbGRs
YXN0KTsNCiAgICAgICAgICAgICAgICA6OnN0ZDo6IGZpbGwoX1doZXJlcHRyLCBfV2hlcmVwdHIg
KyBfQ291bnQsIF9UbXApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0
dXJuIF9NYWtlX2l0ZXJhdG9yX29mZnNldChfV2hlcmVvZmYpOw0KICAgIH0NCg0KcHJpdmF0ZToN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdm9pZCBfSW5zZXJ0X3JhbmdlKGNvbnN0
X2l0ZXJhdG9yIF9XaGVyZSwgX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgaW5wdXRfaXRlcmF0
b3JfdGFnKSB7DQogICAgICAgIA0KICAgICAgICBpZiAoX0ZpcnN0ID09IF9MYXN0KSB7DQogICAg
ICAgICAgICByZXR1cm47IA0KICAgICAgICB9DQoNCiAgICAgICAgYXV0byYgX015X2RhdGEgICAg
ICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIHBvaW50ZXImIF9NeWZpcnN0ICAgID0gX015
X2RhdGEuX015Zmlyc3Q7DQogICAgICAgIHBvaW50ZXImIF9NeWxhc3QgICAgID0gX015X2RhdGEu
X015bGFzdDsNCiAgICAgICAgY29uc3QgYXV0byBfV2hlcmVvZmYgPSBzdGF0aWNfY2FzdDxzaXpl
X3R5cGU+KF9XaGVyZS5fUHRyIC0gX015Zmlyc3QpOw0KICAgICAgICBjb25zdCBhdXRvIF9PbGRz
aXplICA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX015bGFzdCAtIF9NeWZpcnN0KTsNCg0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KDQogICAgICAgIGZvciAoOyBfRmlyc3QgIT0gX0xh
c3Q7ICsrX0ZpcnN0KSB7DQogICAgICAgICAgICBlbXBsYWNlX2JhY2soKl9GaXJzdCk7DQogICAg
ICAgIH0NCg0KICAgICAgICBfT3JwaGFuX3JhbmdlKF9NeWZpcnN0ICsgX1doZXJlb2ZmLCBfTXlm
aXJzdCArIF9PbGRzaXplKTsNCg0KICAgICAgICA6OnN0ZDo6IHJvdGF0ZShfTXlmaXJzdCArIF9X
aGVyZW9mZiwgX015Zmlyc3QgKyBfT2xkc2l6ZSwgX015bGFzdCk7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPGNsYXNzIF9JdGVyPg0KICAgIHZvaWQgX0luc2VydF9yYW5nZShjb25zdF9pdGVyYXRv
ciBfV2hlcmUsIF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QsIGZvcndhcmRfaXRlcmF0b3JfdGFn
KSB7DQogICAgICAgIA0KICAgICAgICBjb25zdCBwb2ludGVyIF9XaGVyZXB0ciA9IF9XaGVyZS5f
UHRyOw0KICAgICAgICBjb25zdCBhdXRvIF9Db3VudCAgICAgICA9IF9Db252ZXJ0X3NpemU8c2l6
ZV90eXBlPihzdGF0aWNfY2FzdDxzaXplX3Q+KDo6c3RkOjogZGlzdGFuY2UoX0ZpcnN0LCBfTGFz
dCkpKTsNCg0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgID0gX015cGFpci5fTXl2YWwyOw0KICAg
ICAgICBwb2ludGVyJiBfTXlsYXN0ID0gX015X2RhdGEuX015bGFzdDsNCg0KICAgICAgICBjb25z
dCBwb2ludGVyIF9PbGRmaXJzdCAgICAgPSBfTXlfZGF0YS5fTXlmaXJzdDsNCiAgICAgICAgY29u
c3QgcG9pbnRlciBfT2xkbGFzdCAgICAgID0gX015bGFzdDsNCiAgICAgICAgY29uc3QgYXV0byBf
VW51c2VkX2NhcGFjaXR5ID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTXlfZGF0YS5fTXllbmQg
LSBfT2xkbGFzdCk7DQoNCiAgICAgICAgaWYgKF9Db3VudCA9PSAwKSB7IA0KICAgICAgICB9IGVs
c2UgaWYgKF9Db3VudCA+IF9VbnVzZWRfY2FwYWNpdHkpIHsgDQogICAgICAgICAgICBjb25zdCBh
dXRvIF9PbGRzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfT2xkbGFzdCAtIF9PbGRmaXJz
dCk7DQoNCiAgICAgICAgICAgIGlmIChfQ291bnQgPiBtYXhfc2l6ZSgpIC0gX09sZHNpemUpIHsN
CiAgICAgICAgICAgICAgICBfWGxlbmd0aCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAg
ICBjb25zdCBzaXplX3R5cGUgX05ld3NpemUgICAgID0gX09sZHNpemUgKyBfQ291bnQ7DQogICAg
ICAgICAgICBjb25zdCBzaXplX3R5cGUgX05ld2NhcGFjaXR5ID0gX0NhbGN1bGF0ZV9ncm93dGgo
X05ld3NpemUpOw0KDQogICAgICAgICAgICBjb25zdCBwb2ludGVyIF9OZXd2ZWMgICAgICAgICAg
ID0gX0dldGFsKCkuYWxsb2NhdGUoX05ld2NhcGFjaXR5KTsNCiAgICAgICAgICAgIGNvbnN0IGF1
dG8gX1doZXJlb2ZmICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9XaGVyZXB0
ciAtIF9PbGRmaXJzdCk7DQogICAgICAgICAgICBjb25zdCBwb2ludGVyIF9Db25zdHJ1Y3RlZF9s
YXN0ID0gX05ld3ZlYyArIF9XaGVyZW9mZiArIF9Db3VudDsNCiAgICAgICAgICAgIHBvaW50ZXIg
X0NvbnN0cnVjdGVkX2ZpcnN0ICAgICAgPSBfQ29uc3RydWN0ZWRfbGFzdDsNCg0KICAgICAgICAg
ICAgeyBpZiAoMSkgew0KICAgICAgICAgICAgX1Vjb3B5KF9GaXJzdCwgX0xhc3QsIF9OZXd2ZWMg
KyBfV2hlcmVvZmYpOw0KICAgICAgICAgICAgX0NvbnN0cnVjdGVkX2ZpcnN0ID0gX05ld3ZlYyAr
IF9XaGVyZW9mZjsNCg0KICAgICAgICAgICAgaWYgKF9Db3VudCA9PSAxICYmIF9XaGVyZXB0ciA9
PSBfT2xkbGFzdCkgeyANCiAgICAgICAgICAgICAgICBfVW1vdmVfaWZfbm9leGNlcHQoX09sZGZp
cnN0LCBfT2xkbGFzdCwgX05ld3ZlYyk7DQogICAgICAgICAgICB9IGVsc2UgeyANCiAgICAgICAg
ICAgICAgICBfVW1vdmUoX09sZGZpcnN0LCBfV2hlcmVwdHIsIF9OZXd2ZWMpOw0KICAgICAgICAg
ICAgICAgIF9Db25zdHJ1Y3RlZF9maXJzdCA9IF9OZXd2ZWM7DQogICAgICAgICAgICAgICAgX1Vt
b3ZlKF9XaGVyZXB0ciwgX09sZGxhc3QsIF9OZXd2ZWMgKyBfV2hlcmVvZmYgKyBfQ291bnQpOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIGlmICgwKSB7DQogICAgICAgICAgICBf
RGVzdHJveShfQ29uc3RydWN0ZWRfZmlyc3QsIF9Db25zdHJ1Y3RlZF9sYXN0KTsNCiAgICAgICAg
ICAgIF9HZXRhbCgpLmRlYWxsb2NhdGUoX05ld3ZlYywgX05ld2NhcGFjaXR5KTsNCiAgICAgICAg
ICAgIDsNCiAgICAgICAgICAgIH0gfQ0KDQogICAgICAgICAgICBfQ2hhbmdlX2FycmF5KF9OZXd2
ZWMsIF9OZXdzaXplLCBfTmV3Y2FwYWNpdHkpOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICBjb25zdCBhdXRvIF9B
ZmZlY3RlZF9lbGVtZW50cyA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX09sZGxhc3QgLSBfV2hl
cmVwdHIpOw0KDQogICAgICAgICAgICBpZiAoX0NvdW50IDwgX0FmZmVjdGVkX2VsZW1lbnRzKSB7
IA0KICAgICAgICAgICAgICAgIF9NeWxhc3QgPSBfVW1vdmUoX09sZGxhc3QgLSBfQ291bnQsIF9P
bGRsYXN0LCBfT2xkbGFzdCk7DQogICAgICAgICAgICAgICAgX01vdmVfYmFja3dhcmRfdW5jaGVj
a2VkKF9XaGVyZXB0ciwgX09sZGxhc3QgLSBfQ291bnQsIF9PbGRsYXN0KTsNCiAgICAgICAgICAg
ICAgICBfRGVzdHJveShfV2hlcmVwdHIsIF9XaGVyZXB0ciArIF9Db3VudCk7DQoNCiAgICAgICAg
ICAgICAgICB7IGlmICgxKSB7DQogICAgICAgICAgICAgICAgX1Vjb3B5KF9GaXJzdCwgX0xhc3Qs
IF9XaGVyZXB0cik7DQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgwKSB7DQogICAgICAgICAg
ICAgICAgDQoNCiAgICAgICAgICAgICAgICB7IGlmICgxKSB7DQogICAgICAgICAgICAgICAgX1Vt
b3ZlKF9XaGVyZXB0ciArIF9Db3VudCwgX1doZXJlcHRyICsgMiAqIF9Db3VudCwgX1doZXJlcHRy
KTsNCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKDApIHsNCiAgICAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgICBfT3JwaGFuX3JhbmdlKF9XaGVyZXB0ciwgX09sZGxhc3QpOw0KICAgICAg
ICAgICAgICAgIF9EZXN0cm95KF9XaGVyZXB0ciArIF9Db3VudCwgX015bGFzdCk7DQogICAgICAg
ICAgICAgICAgX015bGFzdCA9IF9XaGVyZXB0cjsNCiAgICAgICAgICAgICAgICA7DQogICAgICAg
ICAgICAgICAgfSB9DQoNCiAgICAgICAgICAgICAgICBfTW92ZV91bmNoZWNrZWQoX1doZXJlcHRy
ICsgMiAqIF9Db3VudCwgX015bGFzdCwgX1doZXJlcHRyICsgX0NvdW50KTsNCiAgICAgICAgICAg
ICAgICBfRGVzdHJveShfT2xkbGFzdCwgX015bGFzdCk7DQogICAgICAgICAgICAgICAgX015bGFz
dCA9IF9PbGRsYXN0Ow0KICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgICAgICB9IH0NCiAg
ICAgICAgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgX1JlbG9j
YXRlZCA9IF9XaGVyZXB0ciArIF9Db3VudDsNCiAgICAgICAgICAgICAgICBfTXlsYXN0ICAgICAg
ICAgICAgICAgICAgPSBfVW1vdmUoX1doZXJlcHRyLCBfT2xkbGFzdCwgX1JlbG9jYXRlZCk7DQog
ICAgICAgICAgICAgICAgX0Rlc3Ryb3koX1doZXJlcHRyLCBfT2xkbGFzdCk7DQoNCiAgICAgICAg
ICAgICAgICB7IGlmICgxKSB7DQogICAgICAgICAgICAgICAgX1Vjb3B5KF9GaXJzdCwgX0xhc3Qs
IF9XaGVyZXB0cik7DQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgwKSB7DQogICAgICAgICAg
ICAgICAgDQoNCiAgICAgICAgICAgICAgICB7IGlmICgxKSB7DQogICAgICAgICAgICAgICAgX1Vt
b3ZlKF9SZWxvY2F0ZWQsIF9NeWxhc3QsIF9XaGVyZXB0cik7DQogICAgICAgICAgICAgICAgfSBl
bHNlIGlmICgwKSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgX09ycGhhbl9y
YW5nZShfV2hlcmVwdHIsIF9PbGRsYXN0KTsNCiAgICAgICAgICAgICAgICBfRGVzdHJveShfUmVs
b2NhdGVkLCBfTXlsYXN0KTsNCiAgICAgICAgICAgICAgICBfTXlsYXN0ID0gX1doZXJlcHRyOw0K
ICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgICAgICB9IH0NCg0KICAgICAgICAgICAgICAg
IF9EZXN0cm95KF9SZWxvY2F0ZWQsIF9NeWxhc3QpOw0KICAgICAgICAgICAgICAgIF9NeWxhc3Qg
PSBfT2xkbGFzdDsNCiAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICAgICAgfSB9DQogICAg
ICAgICAgICB9DQoNCiAgICAgICAgICAgIF9PcnBoYW5fcmFuZ2UoX1doZXJlcHRyLCBfT2xkbGFz
dCk7DQogICAgICAgIH0NCiAgICB9DQoNCnB1YmxpYzoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0
ZXIsIGVuYWJsZV9pZl90PF9Jc19pdGVyYXRvcl92PF9JdGVyPiwgaW50PiA9IDA+DQogICAgaXRl
cmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSwgX0l0ZXIgX0ZpcnN0LCBfSXRlciBf
TGFzdCkgew0KICAgICAgICBjb25zdCBwb2ludGVyIF9XaGVyZXB0ciA9IF9XaGVyZS5fUHRyOw0K
ICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgICA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAg
ICAgY29uc3QgcG9pbnRlciBfT2xkZmlyc3QgPSBfTXlfZGF0YS5fTXlmaXJzdDsNCg0KDQoNCg0K
I2xpbmUgMTAyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx2ZWN0b3IiDQoNCiAgICAgICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7
DQogICAgICAgIGNvbnN0IGF1dG8gX1doZXJlb2ZmID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihf
V2hlcmVwdHIgLSBfT2xkZmlyc3QpOw0KICAgICAgICBfSW5zZXJ0X3JhbmdlKF9XaGVyZSwgX0dl
dF91bndyYXBwZWQoX0ZpcnN0KSwgX0dldF91bndyYXBwZWQoX0xhc3QpLCBfSXRlcl9jYXRfdDxf
SXRlcj57fSk7DQogICAgICAgIHJldHVybiBfTWFrZV9pdGVyYXRvcl9vZmZzZXQoX1doZXJlb2Zm
KTsNCiAgICB9DQoNCiAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgX1doZXJlLCBp
bml0aWFsaXplcl9saXN0PF9UeT4gX0lsaXN0KSB7DQogICAgICAgIHJldHVybiBpbnNlcnQoX1do
ZXJlLCBfSWxpc3QuYmVnaW4oKSwgX0lsaXN0LmVuZCgpKTsNCiAgICB9DQoNCiAgICB2b2lkIGFz
c2lnbiggY29uc3Qgc2l6ZV90eXBlIF9OZXdzaXplLCBjb25zdCBfVHkmIF9WYWwpIHsgDQogICAg
ICAgIGF1dG8mIF9NeV9kYXRhICAgID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICBwb2ludGVy
JiBfTXlmaXJzdCA9IF9NeV9kYXRhLl9NeWZpcnN0Ow0KICAgICAgICBwb2ludGVyJiBfTXlsYXN0
ICA9IF9NeV9kYXRhLl9NeWxhc3Q7DQoNCiAgICAgICAgX015X2RhdGEuX09ycGhhbl9hbGwoKTsN
Cg0KICAgICAgICBhdXRvIF9PbGRzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTXlsYXN0
IC0gX015Zmlyc3QpOw0KICAgICAgICBpZiAoX05ld3NpemUgPiBfT2xkc2l6ZSkgew0KICAgICAg
ICAgICAgY29uc3QgYXV0byBfT2xkY2FwYWNpdHkgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9N
eV9kYXRhLl9NeWVuZCAtIF9NeWZpcnN0KTsNCiAgICAgICAgICAgIGlmIChfTmV3c2l6ZSA+IF9P
bGRjYXBhY2l0eSkgeyANCiAgICAgICAgICAgICAgICBfQ2xlYXJfYW5kX3Jlc2VydmVfZ2VvbWV0
cmljKF9OZXdzaXplKTsNCiAgICAgICAgICAgICAgICBfT2xkc2l6ZSA9IDA7DQogICAgICAgICAg
ICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIDo6c3RkOjogZmlsbChfTXlmaXJzdCwgX015bGFz
dCwgX1ZhbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF9NeWxhc3QgPSBfVWZpbGwo
X015bGFzdCwgX05ld3NpemUgLSBfT2xkc2l6ZSwgX1ZhbCk7DQogICAgICAgIH0gZWxzZSB7DQog
ICAgICAgICAgICBjb25zdCBwb2ludGVyIF9OZXdsYXN0ID0gX015Zmlyc3QgKyBfTmV3c2l6ZTsN
CiAgICAgICAgICAgIDo6c3RkOjogZmlsbChfTXlmaXJzdCwgX05ld2xhc3QsIF9WYWwpOw0KICAg
ICAgICAgICAgX0Rlc3Ryb3koX05ld2xhc3QsIF9NeWxhc3QpOw0KICAgICAgICAgICAgX015bGFz
dCA9IF9OZXdsYXN0Ow0KICAgICAgICB9DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfSXRlcj4NCiAgICB2b2lkIF9Bc3NpZ25fcmFuZ2UoX0l0ZXIgX0ZpcnN0LCBfSXRl
ciBfTGFzdCwgaW5wdXRfaXRlcmF0b3JfdGFnKSB7IA0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAg
ICA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgcG9pbnRlciYgX015Zmlyc3QgPSBfTXlfZGF0
YS5fTXlmaXJzdDsNCiAgICAgICAgcG9pbnRlciYgX015bGFzdCAgPSBfTXlfZGF0YS5fTXlsYXN0
Ow0KDQogICAgICAgIF9NeV9kYXRhLl9PcnBoYW5fYWxsKCk7DQoNCiAgICAgICAgcG9pbnRlciBf
TmV4dCA9IF9NeWZpcnN0Ow0KDQogICAgICAgIGZvciAoOyBfRmlyc3QgIT0gX0xhc3QgJiYgX05l
eHQgIT0gX015bGFzdDsgKytfRmlyc3QsICh2b2lkKSArK19OZXh0KSB7DQogICAgICAgICAgICAq
X05leHQgPSAqX0ZpcnN0Ow0KICAgICAgICB9DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgDQoNCiAgICAgICAgDQogICAgICAgIF9EZXN0cm95KF9OZXh0LCBfTXlsYXN0
KTsNCiAgICAgICAgX015bGFzdCA9IF9OZXh0Ow0KDQogICAgICAgIA0KICAgICAgICBmb3IgKDsg
X0ZpcnN0ICE9IF9MYXN0OyArK19GaXJzdCkgew0KICAgICAgICAgICAgZW1wbGFjZV9iYWNrKCpf
Rmlyc3QpOyANCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlcj4N
CiAgICB2b2lkIF9Bc3NpZ25fcmFuZ2UoX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgZm9yd2Fy
ZF9pdGVyYXRvcl90YWcpIHsgDQogICAgICAgIGNvbnN0IGF1dG8gX05ld3NpemUgPSBfQ29udmVy
dF9zaXplPHNpemVfdHlwZT4oc3RhdGljX2Nhc3Q8c2l6ZV90Pig6OnN0ZDo6IGRpc3RhbmNlKF9G
aXJzdCwgX0xhc3QpKSk7DQogICAgICAgIGF1dG8mIF9NeV9kYXRhICAgICAgPSBfTXlwYWlyLl9N
eXZhbDI7DQogICAgICAgIHBvaW50ZXImIF9NeWZpcnN0ICAgPSBfTXlfZGF0YS5fTXlmaXJzdDsN
CiAgICAgICAgcG9pbnRlciYgX015bGFzdCAgICA9IF9NeV9kYXRhLl9NeWxhc3Q7DQogICAgICAg
IHBvaW50ZXImIF9NeWVuZCAgICAgPSBfTXlfZGF0YS5fTXllbmQ7DQoNCiAgICAgICAgX015X2Rh
dGEuX09ycGhhbl9hbGwoKTsNCg0KDQogICAgICAgIGlmIGNvbnN0ZXhwciAoY29uanVuY3Rpb25f
djxib29sX2NvbnN0YW50PF9QdHJfY29weV9jYXQ8X0l0ZXIsIF9UeSo+OjpfVHJpdmlhbGx5X2Nv
cHlhYmxlPiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1VzZXNfZGVmYXVsdF9jb25zdHJ1
Y3Q8X0FsdHksIF9UeSosIGRlY2x0eXBlKCpfRmlyc3QpPiwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgX1VzZXNfZGVmYXVsdF9kZXN0cm95PF9BbHR5LCBfVHkqPj4pIHsNCiAgICAgICAgICAg
IGNvbnN0IGF1dG8gX09sZGNhcGFjaXR5ID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTXllbmQg
LSBfTXlmaXJzdCk7DQogICAgICAgICAgICBpZiAoX05ld3NpemUgPiBfT2xkY2FwYWNpdHkpIHsN
CiAgICAgICAgICAgICAgICBfQ2xlYXJfYW5kX3Jlc2VydmVfZ2VvbWV0cmljKF9OZXdzaXplKTsN
CiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX015bGFzdCA9IF9SZWZhbmN5PHBvaW50ZXI+
KF9Db3B5X21lbW1vdmUoX0ZpcnN0LCBfTGFzdCwgX1VuZmFuY3koX015Zmlyc3QpKSk7DQogICAg
ICAgIH0gZWxzZQ0KI2xpbmUgMTExNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQogICAgICAgIHsNCiAgICAgICAgICAgIGF1dG8gX09s
ZHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9NeWxhc3QgLSBfTXlmaXJzdCk7DQoNCiAg
ICAgICAgICAgIGlmIChfTmV3c2l6ZSA+IF9PbGRzaXplKSB7DQogICAgICAgICAgICAgICAgY29u
c3QgYXV0byBfT2xkY2FwYWNpdHkgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9NeWVuZCAtIF9N
eWZpcnN0KTsNCiAgICAgICAgICAgICAgICBpZiAoX05ld3NpemUgPiBfT2xkY2FwYWNpdHkpIHsg
DQogICAgICAgICAgICAgICAgICAgIF9DbGVhcl9hbmRfcmVzZXJ2ZV9nZW9tZXRyaWMoX05ld3Np
emUpOw0KICAgICAgICAgICAgICAgICAgICBfT2xkc2l6ZSA9IDA7DQogICAgICAgICAgICAgICAg
fQ0KDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgY29uc3QgX0l0ZXIgX01pZCA9
IDo6c3RkOjogbmV4dChfRmlyc3QsIHN0YXRpY19jYXN0PGRpZmZlcmVuY2VfdHlwZT4oX09sZHNp
emUpKTsNCiAgICAgICAgICAgICAgICBfQ29weV91bmNoZWNrZWQoX0ZpcnN0LCBfTWlkLCBfTXlm
aXJzdCk7DQogICAgICAgICAgICAgICAgX015bGFzdCA9IF9VY29weShfTWlkLCBfTGFzdCwgX015
bGFzdCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50
ZXIgX05ld2xhc3QgPSBfTXlmaXJzdCArIF9OZXdzaXplOw0KICAgICAgICAgICAgICAgIF9Db3B5
X3VuY2hlY2tlZChfRmlyc3QsIF9MYXN0LCBfTXlmaXJzdCk7DQogICAgICAgICAgICAgICAgX0Rl
c3Ryb3koX05ld2xhc3QsIF9NeWxhc3QpOw0KICAgICAgICAgICAgICAgIF9NeWxhc3QgPSBfTmV3
bGFzdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KcHVibGljOg0KICAgIHRl
bXBsYXRlIDxjbGFzcyBfSXRlciwgZW5hYmxlX2lmX3Q8X0lzX2l0ZXJhdG9yX3Y8X0l0ZXI+LCBp
bnQ+ID0gMD4NCiAgICB2b2lkIGFzc2lnbihfSXRlciBfRmlyc3QsIF9JdGVyIF9MYXN0KSB7DQog
ICAgICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xhc3QpOw0KICAgICAgICBfQXNzaWdu
X3JhbmdlKF9HZXRfdW53cmFwcGVkKF9GaXJzdCksIF9HZXRfdW53cmFwcGVkKF9MYXN0KSwgX0l0
ZXJfY2F0X3Q8X0l0ZXI+e30pOw0KICAgIH0NCg0KICAgIHZvaWQgYXNzaWduKGluaXRpYWxpemVy
X2xpc3Q8X1R5PiBfSWxpc3QpIHsNCiAgICAgICAgX0Fzc2lnbl9yYW5nZShfSWxpc3QuYmVnaW4o
KSwgX0lsaXN0LmVuZCgpLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ3t9KTsNCiAgICB9DQoN
CnByaXZhdGU6DQogICAgdm9pZCBfQ29weV9hc3NpZ24oY29uc3QgdmVjdG9yJiBfUmlnaHQsIGZh
bHNlX3R5cGUpIHsNCiAgICAgICAgX1BvY2NhKF9HZXRhbCgpLCBfUmlnaHQuX0dldGFsKCkpOw0K
ICAgICAgICBhdXRvJiBfUmlnaHRfZGF0YSA9IF9SaWdodC5fTXlwYWlyLl9NeXZhbDI7DQogICAg
ICAgIGFzc2lnbihfUmlnaHRfZGF0YS5fTXlmaXJzdCwgX1JpZ2h0X2RhdGEuX015bGFzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCBfQ29weV9hc3NpZ24oY29uc3QgdmVjdG9yJiBfUmlnaHQsIHRydWVf
dHlwZSkgew0KICAgICAgICBpZiAoX0dldGFsKCkgIT0gX1JpZ2h0Ll9HZXRhbCgpKSB7DQogICAg
ICAgICAgICBfVGlkeSgpOw0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9SZWxvYWRfcHJv
eHkoDQogICAgICAgICAgICAgICAgX0Zha2VfYWxsb2NhdG9yKCksIF9GYWtlX2FsbG9jYXRvcigp
KTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9Db3B5X2Fzc2lnbihfUmlnaHQsIGZhbHNlX3R5cGV7
fSk7DQogICAgfQ0KDQpwdWJsaWM6DQogICAgdmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgdmVjdG9y
JiBfUmlnaHQpIHsNCiAgICAgICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0
KSkgew0KICAgICAgICAgICAgX0NvcHlfYXNzaWduKF9SaWdodCwgX0Nob29zZV9wb2NjYTxfQWx0
eT57fSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAg
dmVjdG9yJiBvcGVyYXRvcj0oaW5pdGlhbGl6ZXJfbGlzdDxfVHk+IF9JbGlzdCkgew0KICAgICAg
ICBfQXNzaWduX3JhbmdlKF9JbGlzdC5iZWdpbigpLCBfSWxpc3QuZW5kKCksIHJhbmRvbV9hY2Nl
c3NfaXRlcmF0b3JfdGFne30pOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQpwcml2
YXRlOg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkyPg0KICAgIHZvaWQgX1Jlc2l6ZV9yZWFsbG9j
YXRlKGNvbnN0IHNpemVfdHlwZSBfTmV3c2l6ZSwgY29uc3QgX1R5MiYgX1ZhbCkgew0KICAgICAg
ICBpZiAoX05ld3NpemUgPiBtYXhfc2l6ZSgpKSB7DQogICAgICAgICAgICBfWGxlbmd0aCgpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgYXV0byYgX015X2RhdGEgICAgPSBfTXlwYWlyLl9NeXZhbDI7
DQogICAgICAgIHBvaW50ZXImIF9NeWZpcnN0ID0gX015X2RhdGEuX015Zmlyc3Q7DQogICAgICAg
IHBvaW50ZXImIF9NeWxhc3QgID0gX015X2RhdGEuX015bGFzdDsNCg0KICAgICAgICBjb25zdCBh
dXRvIF9PbGRzaXplICAgICAgICAgID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTXlsYXN0IC0g
X015Zmlyc3QpOw0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX05ld2NhcGFjaXR5ID0gX0NhbGN1
bGF0ZV9ncm93dGgoX05ld3NpemUpOw0KDQogICAgICAgIGNvbnN0IHBvaW50ZXIgX05ld3ZlYyAg
ICAgICAgID0gX0dldGFsKCkuYWxsb2NhdGUoX05ld2NhcGFjaXR5KTsNCiAgICAgICAgY29uc3Qg
cG9pbnRlciBfQXBwZW5kZWRfZmlyc3QgPSBfTmV3dmVjICsgX09sZHNpemU7DQogICAgICAgIHBv
aW50ZXIgX0FwcGVuZGVkX2xhc3QgICAgICAgID0gX0FwcGVuZGVkX2ZpcnN0Ow0KDQogICAgICAg
IHsgaWYgKDEpIHsNCiAgICAgICAgX0FwcGVuZGVkX2xhc3QgPSBfVWZpbGwoX0FwcGVuZGVkX2Zp
cnN0LCBfTmV3c2l6ZSAtIF9PbGRzaXplLCBfVmFsKTsNCiAgICAgICAgX1Vtb3ZlX2lmX25vZXhj
ZXB0KF9NeWZpcnN0LCBfTXlsYXN0LCBfTmV3dmVjKTsNCiAgICAgICAgfSBlbHNlIGlmICgwKSB7
DQogICAgICAgIF9EZXN0cm95KF9BcHBlbmRlZF9maXJzdCwgX0FwcGVuZGVkX2xhc3QpOw0KICAg
ICAgICBfR2V0YWwoKS5kZWFsbG9jYXRlKF9OZXd2ZWMsIF9OZXdjYXBhY2l0eSk7DQogICAgICAg
IDsNCiAgICAgICAgfSB9DQoNCiAgICAgICAgX0NoYW5nZV9hcnJheShfTmV3dmVjLCBfTmV3c2l6
ZSwgX05ld2NhcGFjaXR5KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Mj4NCiAg
ICB2b2lkIF9SZXNpemUoY29uc3Qgc2l6ZV90eXBlIF9OZXdzaXplLCBjb25zdCBfVHkyJiBfVmFs
KSB7IA0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgID0gX015cGFpci5fTXl2YWwyOw0KICAg
ICAgICBwb2ludGVyJiBfTXlmaXJzdCAgID0gX015X2RhdGEuX015Zmlyc3Q7DQogICAgICAgIHBv
aW50ZXImIF9NeWxhc3QgICAgPSBfTXlfZGF0YS5fTXlsYXN0Ow0KICAgICAgICBjb25zdCBhdXRv
IF9PbGRzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTXlsYXN0IC0gX015Zmlyc3QpOw0K
ICAgICAgICBpZiAoX05ld3NpemUgPCBfT2xkc2l6ZSkgeyANCiAgICAgICAgICAgIGNvbnN0IHBv
aW50ZXIgX05ld2xhc3QgPSBfTXlmaXJzdCArIF9OZXdzaXplOw0KICAgICAgICAgICAgX09ycGhh
bl9yYW5nZShfTmV3bGFzdCwgX015bGFzdCk7DQogICAgICAgICAgICBfRGVzdHJveShfTmV3bGFz
dCwgX015bGFzdCk7DQogICAgICAgICAgICBfTXlsYXN0ID0gX05ld2xhc3Q7DQogICAgICAgICAg
ICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoX05ld3NpemUgPiBfT2xkc2l6ZSkg
eyANCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX09sZGNhcGFjaXR5ID0gc3RhdGljX2Nhc3Q8c2l6
ZV90eXBlPihfTXlfZGF0YS5fTXllbmQgLSBfTXlmaXJzdCk7DQogICAgICAgICAgICBpZiAoX05l
d3NpemUgPiBfT2xkY2FwYWNpdHkpIHsgDQogICAgICAgICAgICAgICAgX1Jlc2l6ZV9yZWFsbG9j
YXRlKF9OZXdzaXplLCBfVmFsKTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAg
ICB9DQoNCiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgX09sZGxhc3QgPSBfTXlsYXN0Ow0KICAg
ICAgICAgICAgX015bGFzdCAgICAgICAgICAgICAgICA9IF9VZmlsbChfT2xkbGFzdCwgX05ld3Np
emUgLSBfT2xkc2l6ZSwgX1ZhbCk7DQogICAgICAgICAgICBfT3JwaGFuX3JhbmdlKF9PbGRsYXN0
LCBfT2xkbGFzdCk7DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICB9DQoNCnB1YmxpYzoNCiAg
ICB2b2lkIHJlc2l6ZSggY29uc3Qgc2l6ZV90eXBlIF9OZXdzaXplKSB7DQogICAgICAgIA0KICAg
ICAgICBfUmVzaXplKF9OZXdzaXplLCBfVmFsdWVfaW5pdF90YWd7fSk7DQogICAgfQ0KDQogICAg
dm9pZCByZXNpemUoIGNvbnN0IHNpemVfdHlwZSBfTmV3c2l6ZSwgY29uc3QgX1R5JiBfVmFsKSB7
DQogICAgICAgIA0KICAgICAgICBfUmVzaXplKF9OZXdzaXplLCBfVmFsKTsNCiAgICB9DQoNCnBy
aXZhdGU6DQogICAgdm9pZCBfUmVhbGxvY2F0ZV9leGFjdGx5KGNvbnN0IHNpemVfdHlwZSBfTmV3
Y2FwYWNpdHkpIHsNCiAgICAgICAgDQogICAgICAgIGF1dG8mIF9NeV9kYXRhICAgID0gX015cGFp
ci5fTXl2YWwyOw0KICAgICAgICBwb2ludGVyJiBfTXlmaXJzdCA9IF9NeV9kYXRhLl9NeWZpcnN0
Ow0KICAgICAgICBwb2ludGVyJiBfTXlsYXN0ICA9IF9NeV9kYXRhLl9NeWxhc3Q7DQoNCiAgICAg
ICAgY29uc3QgYXV0byBfU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX015bGFzdCAtIF9N
eWZpcnN0KTsNCg0KICAgICAgICBjb25zdCBwb2ludGVyIF9OZXd2ZWMgPSBfR2V0YWwoKS5hbGxv
Y2F0ZShfTmV3Y2FwYWNpdHkpOw0KDQogICAgICAgIHsgaWYgKDEpIHsNCiAgICAgICAgX1Vtb3Zl
X2lmX25vZXhjZXB0KF9NeWZpcnN0LCBfTXlsYXN0LCBfTmV3dmVjKTsNCiAgICAgICAgfSBlbHNl
IGlmICgwKSB7DQogICAgICAgIF9HZXRhbCgpLmRlYWxsb2NhdGUoX05ld3ZlYywgX05ld2NhcGFj
aXR5KTsNCiAgICAgICAgOw0KICAgICAgICB9IH0NCg0KICAgICAgICBfQ2hhbmdlX2FycmF5KF9O
ZXd2ZWMsIF9TaXplLCBfTmV3Y2FwYWNpdHkpOw0KICAgIH0NCg0KICAgIHZvaWQgX0NsZWFyX2Fu
ZF9yZXNlcnZlX2dlb21ldHJpYyhjb25zdCBzaXplX3R5cGUgX05ld3NpemUpIHsNCiAgICAgICAg
YXV0byYgX015X2RhdGEgICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIHBvaW50ZXImIF9N
eWZpcnN0ID0gX015X2RhdGEuX015Zmlyc3Q7DQogICAgICAgIHBvaW50ZXImIF9NeWxhc3QgID0g
X015X2RhdGEuX015bGFzdDsNCiAgICAgICAgcG9pbnRlciYgX015ZW5kICAgPSBfTXlfZGF0YS5f
TXllbmQ7DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyODQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQogICAgICAgIGlmIChfTmV3c2l6
ZSA+IG1heF9zaXplKCkpIHsNCiAgICAgICAgICAgIF9YbGVuZ3RoKCk7DQogICAgICAgIH0NCg0K
ICAgICAgICBjb25zdCBzaXplX3R5cGUgX05ld2NhcGFjaXR5ID0gX0NhbGN1bGF0ZV9ncm93dGgo
X05ld3NpemUpOw0KDQogICAgICAgIGlmIChfTXlmaXJzdCkgeyANCiAgICAgICAgICAgIF9EZXN0
cm95KF9NeWZpcnN0LCBfTXlsYXN0KTsNCiAgICAgICAgICAgIF9HZXRhbCgpLmRlYWxsb2NhdGUo
X015Zmlyc3QsIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX015ZW5kIC0gX015Zmlyc3QpKTsNCg0K
ICAgICAgICAgICAgX015Zmlyc3QgPSBwb2ludGVyKCk7DQogICAgICAgICAgICBfTXlsYXN0ICA9
IHBvaW50ZXIoKTsNCiAgICAgICAgICAgIF9NeWVuZCAgID0gcG9pbnRlcigpOw0KICAgICAgICB9
DQoNCiAgICAgICAgX0J1eV9yYXcoX05ld2NhcGFjaXR5KTsNCiAgICB9DQoNCnB1YmxpYzoNCiAg
ICB2b2lkIHJlc2VydmUoIGNvbnN0IHNpemVfdHlwZSBfTmV3Y2FwYWNpdHkpIHsNCiAgICAgICAg
DQogICAgICAgIGlmIChfTmV3Y2FwYWNpdHkgPiBjYXBhY2l0eSgpKSB7IA0KICAgICAgICAgICAg
aWYgKF9OZXdjYXBhY2l0eSA+IG1heF9zaXplKCkpIHsNCiAgICAgICAgICAgICAgICBfWGxlbmd0
aCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBfUmVhbGxvY2F0ZV9leGFjdGx5KF9O
ZXdjYXBhY2l0eSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHNocmlua190b19maXQo
KSB7IA0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgID0gX015cGFpci5fTXl2YWwyOw0K
ICAgICAgICBjb25zdCBwb2ludGVyIF9PbGRsYXN0ID0gX015X2RhdGEuX015bGFzdDsNCiAgICAg
ICAgaWYgKF9PbGRsYXN0ICE9IF9NeV9kYXRhLl9NeWVuZCkgeyANCiAgICAgICAgICAgIGNvbnN0
IHBvaW50ZXIgX09sZGZpcnN0ID0gX015X2RhdGEuX015Zmlyc3Q7DQogICAgICAgICAgICBpZiAo
X09sZGZpcnN0ID09IF9PbGRsYXN0KSB7DQogICAgICAgICAgICAgICAgX1RpZHkoKTsNCiAgICAg
ICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgX1JlYWxsb2NhdGVfZXhhY3RseShzdGF0
aWNfY2FzdDxzaXplX3R5cGU+KF9PbGRsYXN0IC0gX09sZGZpcnN0KSk7DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHBvcF9iYWNrKCkgbm9leGNlcHQgIHsNCiAg
ICAgICAgYXV0byYgX015X2RhdGEgICA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgcG9pbnRl
ciYgX015bGFzdCA9IF9NeV9kYXRhLl9NeWxhc3Q7DQoNCg0KDQoNCiNsaW5lIDEzMzYgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQog
ICAgICAgIF9BbHR5X3RyYWl0czo6ZGVzdHJveShfR2V0YWwoKSwgX1VuZmFuY3koX015bGFzdCAt
IDEpKTsNCiAgICAgICAgLS1fTXlsYXN0Ow0KICAgIH0NCg0KICAgIGl0ZXJhdG9yIGVyYXNlKGNv
bnN0X2l0ZXJhdG9yIF9XaGVyZSkgbm9leGNlcHQoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGVf
djx2YWx1ZV90eXBlPikgIHsNCiAgICAgICAgY29uc3QgcG9pbnRlciBfV2hlcmVwdHIgPSBfV2hl
cmUuX1B0cjsNCiAgICAgICAgYXV0byYgX015X2RhdGEgICAgICAgICAgPSBfTXlwYWlyLl9NeXZh
bDI7DQogICAgICAgIHBvaW50ZXImIF9NeWxhc3QgICAgICAgID0gX015X2RhdGEuX015bGFzdDsN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEzNTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQogICAgICAgIF9Nb3ZlX3VuY2hlY2tlZChfV2hl
cmVwdHIgKyAxLCBfTXlsYXN0LCBfV2hlcmVwdHIpOw0KICAgICAgICBfQWx0eV90cmFpdHM6OmRl
c3Ryb3koX0dldGFsKCksIF9VbmZhbmN5KF9NeWxhc3QgLSAxKSk7DQogICAgICAgIC0tX015bGFz
dDsNCiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKF9XaGVyZXB0ciwgOjpzdGQ6OiBhZGRyZXNzb2Yo
X015X2RhdGEpKTsNCiAgICB9DQoNCiAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBf
Rmlyc3QsIGNvbnN0X2l0ZXJhdG9yIF9MYXN0KSBub2V4Y2VwdCgNCiAgICAgICAgaXNfbm90aHJv
d19tb3ZlX2Fzc2lnbmFibGVfdjx2YWx1ZV90eXBlPikgIHsNCiAgICAgICAgY29uc3QgcG9pbnRl
ciBfRmlyc3RwdHIgPSBfRmlyc3QuX1B0cjsNCiAgICAgICAgY29uc3QgcG9pbnRlciBfTGFzdHB0
ciAgPSBfTGFzdC5fUHRyOw0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICAgICAgICA9IF9NeXBh
aXIuX015dmFsMjsNCiAgICAgICAgcG9pbnRlciYgX015bGFzdCAgICAgICAgPSBfTXlfZGF0YS5f
TXlsYXN0Ow0KDQoNCg0KDQoNCiNsaW5lIDEzNzEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQogICAgICAgIGlmIChfRmlyc3RwdHIg
IT0gX0xhc3RwdHIpIHsgDQogICAgICAgICAgICBfT3JwaGFuX3JhbmdlKF9GaXJzdHB0ciwgX015
bGFzdCk7DQoNCiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgX05ld2xhc3QgPSBfTW92ZV91bmNo
ZWNrZWQoX0xhc3RwdHIsIF9NeWxhc3QsIF9GaXJzdHB0cik7DQogICAgICAgICAgICBfRGVzdHJv
eShfTmV3bGFzdCwgX015bGFzdCk7DQogICAgICAgICAgICBfTXlsYXN0ID0gX05ld2xhc3Q7DQog
ICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gaXRlcmF0b3IoX0ZpcnN0cHRyLCA6OnN0ZDo6IGFk
ZHJlc3NvZihfTXlfZGF0YSkpOw0KICAgIH0NCg0KICAgIHZvaWQgY2xlYXIoKSBub2V4Y2VwdCB7
IA0KICAgICAgICBhdXRvJiBfTXlfZGF0YSAgICA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAg
cG9pbnRlciYgX015Zmlyc3QgPSBfTXlfZGF0YS5fTXlmaXJzdDsNCiAgICAgICAgcG9pbnRlciYg
X015bGFzdCAgPSBfTXlfZGF0YS5fTXlsYXN0Ow0KDQogICAgICAgIF9NeV9kYXRhLl9PcnBoYW5f
YWxsKCk7DQogICAgICAgIF9EZXN0cm95KF9NeWZpcnN0LCBfTXlsYXN0KTsNCiAgICAgICAgX015
bGFzdCA9IF9NeWZpcnN0Ow0KICAgIH0NCg0KcHVibGljOg0KICAgIHZvaWQgc3dhcCh2ZWN0b3Im
IF9SaWdodCkgbm9leGNlcHQgIHsNCiAgICAgICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBhZGRyZXNz
b2YoX1JpZ2h0KSkgew0KICAgICAgICAgICAgX1BvY3MoX0dldGFsKCksIF9SaWdodC5fR2V0YWwo
KSk7DQogICAgICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX1N3YXBfdmFsKF9SaWdodC5fTXlwYWly
Ll9NeXZhbDIpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBfVHkqIGRh
dGEoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfVW5mYW5jeV9tYXliZV9udWxsKF9NeXBh
aXIuX015dmFsMi5fTXlmaXJzdCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdCBf
VHkqIGRhdGEoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfVW5mYW5jeV9tYXli
ZV9udWxsKF9NeXBhaXIuX015dmFsMi5fTXlmaXJzdCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBpdGVyYXRvciBiZWdpbigpIG5vZXhjZXB0IHsNCiAgICAgICAgYXV0byYgX015X2RhdGEg
PSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIHJldHVybiBpdGVyYXRvcihfTXlfZGF0YS5fTXlm
aXJzdCwgOjpzdGQ6OiBhZGRyZXNzb2YoX015X2RhdGEpKTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBh
dXRvJiBfTXlfZGF0YSA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2l0
ZXJhdG9yKF9NeV9kYXRhLl9NeWZpcnN0LCA6OnN0ZDo6IGFkZHJlc3NvZihfTXlfZGF0YSkpOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaXRlcmF0b3IgZW5kKCkgbm9leGNlcHQgew0KICAg
ICAgICBhdXRvJiBfTXlfZGF0YSA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yKF9NeV9kYXRhLl9NeWxhc3QsIDo6c3RkOjogYWRkcmVzc29mKF9NeV9kYXRhKSk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCBub2V4
Y2VwdCB7DQogICAgICAgIGF1dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2YWwyOw0KICAgICAg
ICByZXR1cm4gY29uc3RfaXRlcmF0b3IoX015X2RhdGEuX015bGFzdCwgOjpzdGQ6OiBhZGRyZXNz
b2YoX015X2RhdGEpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHJldmVyc2VfaXRlcmF0
b3IgcmJlZ2luKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihl
bmQoKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IoZW5kKCkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmV2ZXJzZV9pdGVy
YXRvciByZW5kKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihi
ZWdpbigpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IoYmVnaW4oKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVy
YXRvciBjYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBiZWdpbigpOw0K
ICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGVuZCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gcmJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
cmVuZCgpOw0KICAgIH0NCg0KICAgIHBvaW50ZXIgX1VuY2hlY2tlZF9iZWdpbigpIG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015dmFsMi5fTXlmaXJzdDsNCiAgICB9DQoNCiAg
ICBjb25zdF9wb2ludGVyIF9VbmNoZWNrZWRfYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015Zmlyc3Q7DQogICAgfQ0KDQogICAgcG9pbnRl
ciBfVW5jaGVja2VkX2VuZCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9NeXBhaXIuX015
dmFsMi5fTXlsYXN0Ow0KICAgIH0NCg0KICAgIGNvbnN0X3BvaW50ZXIgX1VuY2hlY2tlZF9lbmQo
KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015bGFz
dDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2Vw
dCB7DQogICAgICAgIGF1dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICBy
ZXR1cm4gX015X2RhdGEuX015Zmlyc3QgPT0gX015X2RhdGEuX015bGFzdDsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBzaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICBhdXRvJiBfTXlfZGF0YSA9IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdHlwZT4oX015X2RhdGEuX015bGFzdCAtIF9NeV9kYXRhLl9NeWZpcnN0KTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuICg6OnN0ZDo6IG1pbikoDQogICAgICAgICAgICBzdGF0
aWNfY2FzdDxzaXplX3R5cGU+KChudW1lcmljX2xpbWl0czxkaWZmZXJlbmNlX3R5cGU+OjptYXgp
KCkpLCBfQWx0eV90cmFpdHM6Om1heF9zaXplKF9HZXRhbCgpKSk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBzaXplX3R5cGUgY2FwYWNpdHkoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAg
IGF1dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2YWwyOw0KICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90eXBlPihfTXlfZGF0YS5fTXllbmQgLSBfTXlfZGF0YS5fTXlmaXJzdCk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBfVHkmIG9wZXJhdG9yW10oY29uc3Qgc2l6ZV90eXBl
IF9Qb3MpIG5vZXhjZXB0ICB7DQogICAgICAgIGF1dG8mIF9NeV9kYXRhID0gX015cGFpci5fTXl2
YWwyOw0KDQoNCg0KI2xpbmUgMTUwMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAgICAgICAgcmV0dXJuIF9NeV9kYXRhLl9NeWZp
cnN0W19Qb3NdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3QgX1R5JiBvcGVyYXRv
cltdKGNvbnN0IHNpemVfdHlwZSBfUG9zKSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICBhdXRv
JiBfTXlfZGF0YSA9IF9NeXBhaXIuX015dmFsMjsNCg0KDQoNCiNsaW5lIDE1MTMgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQogICAg
ICAgIHJldHVybiBfTXlfZGF0YS5fTXlmaXJzdFtfUG9zXTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIF9UeSYgYXQoY29uc3Qgc2l6ZV90eXBlIF9Qb3MpIHsNCiAgICAgICAgYXV0byYgX015
X2RhdGEgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3R5
cGU+KF9NeV9kYXRhLl9NeWxhc3QgLSBfTXlfZGF0YS5fTXlmaXJzdCkgPD0gX1Bvcykgew0KICAg
ICAgICAgICAgX1hyYW5nZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9NeV9kYXRh
Ll9NeWZpcnN0W19Qb3NdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3QgX1R5JiBh
dChjb25zdCBzaXplX3R5cGUgX1BvcykgY29uc3Qgew0KICAgICAgICBhdXRvJiBfTXlfZGF0YSA9
IF9NeXBhaXIuX015dmFsMjsNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX015
X2RhdGEuX015bGFzdCAtIF9NeV9kYXRhLl9NeWZpcnN0KSA8PSBfUG9zKSB7DQogICAgICAgICAg
ICBfWHJhbmdlKCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX015X2RhdGEuX015Zmly
c3RbX1Bvc107DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBfVHkmIGZyb250KCkgbm9leGNl
cHQgIHsNCiAgICAgICAgYXV0byYgX015X2RhdGEgPSBfTXlwYWlyLl9NeXZhbDI7DQoNCg0KI2xp
bmUgMTU0MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx2ZWN0b3IiDQoNCiAgICAgICAgcmV0dXJuICpfTXlfZGF0YS5fTXlmaXJzdDsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIGNvbnN0IF9UeSYgZnJvbnQoKSBjb25zdCBub2V4Y2VwdCAgew0K
ICAgICAgICBhdXRvJiBfTXlfZGF0YSA9IF9NeXBhaXIuX015dmFsMjsNCg0KDQojbGluZSAxNTQ5
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3Rv
ciINCg0KICAgICAgICByZXR1cm4gKl9NeV9kYXRhLl9NeWZpcnN0Ow0KICAgIH0NCg0KICAgIFtb
bm9kaXNjYXJkXV0gX1R5JiBiYWNrKCkgbm9leGNlcHQgIHsNCiAgICAgICAgYXV0byYgX015X2Rh
dGEgPSBfTXlwYWlyLl9NeXZhbDI7DQoNCg0KI2xpbmUgMTU1OCAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAgICAgICAgcmV0dXJu
IF9NeV9kYXRhLl9NeWxhc3RbLTFdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Qg
X1R5JiBiYWNrKCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgYXV0byYgX015X2RhdGEgPSBf
TXlwYWlyLl9NeXZhbDI7DQoNCg0KI2xpbmUgMTU2NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAgICAgICAgcmV0dXJuIF9NeV9k
YXRhLl9NeWxhc3RbLTFdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYWxsb2NhdG9yX3R5
cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGFsbG9jYXRvcl90eXBlPihfR2V0YWwoKSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAg
IHBvaW50ZXIgX1VmaWxsKHBvaW50ZXIgX0Rlc3QsIGNvbnN0IHNpemVfdHlwZSBfQ291bnQsIGNv
bnN0IF9UeSYgX1ZhbCkgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9VbmluaXRpYWxpemVk
X2ZpbGxfbihfRGVzdCwgX0NvdW50LCBfVmFsLCBfR2V0YWwoKSk7DQogICAgfQ0KDQogICAgcG9p
bnRlciBfVWZpbGwocG9pbnRlciBfRGVzdCwgY29uc3Qgc2l6ZV90eXBlIF9Db3VudCwgX1ZhbHVl
X2luaXRfdGFnKSB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1VuaW5pdGlhbGl6ZWRfdmFs
dWVfY29uc3RydWN0X24oX0Rlc3QsIF9Db3VudCwgX0dldGFsKCkpOw0KICAgIH0NCg0KICAgIHRl
bXBsYXRlIDxjbGFzcyBfSXRlcj4NCiAgICBwb2ludGVyIF9VY29weShfSXRlciBfRmlyc3QsIF9J
dGVyIF9MYXN0LCBwb2ludGVyIF9EZXN0KSB7IA0KICAgICAgICByZXR1cm4gX1VuaW5pdGlhbGl6
ZWRfY29weShfRmlyc3QsIF9MYXN0LCBfRGVzdCwgX0dldGFsKCkpOw0KICAgIH0NCg0KICAgIHBv
aW50ZXIgX1Vtb3ZlKHBvaW50ZXIgX0ZpcnN0LCBwb2ludGVyIF9MYXN0LCBwb2ludGVyIF9EZXN0
KSB7IA0KICAgICAgICByZXR1cm4gX1VuaW5pdGlhbGl6ZWRfbW92ZShfRmlyc3QsIF9MYXN0LCBf
RGVzdCwgX0dldGFsKCkpOw0KICAgIH0NCg0KICAgIHZvaWQgX1Vtb3ZlX2lmX25vZXhjZXB0MShw
b2ludGVyIF9GaXJzdCwgcG9pbnRlciBfTGFzdCwgcG9pbnRlciBfRGVzdCwgdHJ1ZV90eXBlKSB7
DQogICAgICAgIA0KICAgICAgICBfVW5pbml0aWFsaXplZF9tb3ZlKF9GaXJzdCwgX0xhc3QsIF9E
ZXN0LCBfR2V0YWwoKSk7DQogICAgfQ0KDQogICAgdm9pZCBfVW1vdmVfaWZfbm9leGNlcHQxKHBv
aW50ZXIgX0ZpcnN0LCBwb2ludGVyIF9MYXN0LCBwb2ludGVyIF9EZXN0LCBmYWxzZV90eXBlKSB7
DQogICAgICAgIA0KICAgICAgICBfVW5pbml0aWFsaXplZF9jb3B5KF9GaXJzdCwgX0xhc3QsIF9E
ZXN0LCBfR2V0YWwoKSk7DQogICAgfQ0KDQogICAgdm9pZCBfVW1vdmVfaWZfbm9leGNlcHQocG9p
bnRlciBfRmlyc3QsIHBvaW50ZXIgX0xhc3QsIHBvaW50ZXIgX0Rlc3QpIHsNCiAgICAgICAgDQog
ICAgICAgIF9VbW92ZV9pZl9ub2V4Y2VwdDEoX0ZpcnN0LCBfTGFzdCwgX0Rlc3QsDQogICAgICAg
ICAgICBib29sX2NvbnN0YW50PGRpc2p1bmN0aW9uX3Y8aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVj
dGlibGU8X1R5PiwgbmVnYXRpb248aXNfY29weV9jb25zdHJ1Y3RpYmxlPF9UeT4+Pj57fSk7DQog
ICAgfQ0KDQogICAgdm9pZCBfRGVzdHJveShwb2ludGVyIF9GaXJzdCwgcG9pbnRlciBfTGFzdCkg
eyANCiAgICAgICAgX0Rlc3Ryb3lfcmFuZ2UoX0ZpcnN0LCBfTGFzdCwgX0dldGFsKCkpOw0KICAg
IH0NCg0KICAgIHNpemVfdHlwZSBfQ2FsY3VsYXRlX2dyb3d0aChjb25zdCBzaXplX3R5cGUgX05l
d3NpemUpIGNvbnN0IHsNCiAgICAgICAgDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfT2xkY2Fw
YWNpdHkgPSBjYXBhY2l0eSgpOw0KDQogICAgICAgIGlmIChfT2xkY2FwYWNpdHkgPiBtYXhfc2l6
ZSgpIC0gX09sZGNhcGFjaXR5IC8gMikgew0KICAgICAgICAgICAgcmV0dXJuIF9OZXdzaXplOyAN
CiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfR2VvbWV0cmljID0gX09sZGNh
cGFjaXR5ICsgX09sZGNhcGFjaXR5IC8gMjsNCg0KICAgICAgICBpZiAoX0dlb21ldHJpYyA8IF9O
ZXdzaXplKSB7DQogICAgICAgICAgICByZXR1cm4gX05ld3NpemU7IA0KICAgICAgICB9DQoNCiAg
ICAgICAgcmV0dXJuIF9HZW9tZXRyaWM7IA0KICAgIH0NCg0KICAgIHZvaWQgX0J1eV9yYXcoY29u
c3Qgc2l6ZV90eXBlIF9OZXdjYXBhY2l0eSkgew0KICAgICAgICANCiAgICAgICAgYXV0byYgX015
X2RhdGEgICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIHBvaW50ZXImIF9NeWZpcnN0ID0g
X015X2RhdGEuX015Zmlyc3Q7DQogICAgICAgIHBvaW50ZXImIF9NeWxhc3QgID0gX015X2RhdGEu
X015bGFzdDsNCiAgICAgICAgcG9pbnRlciYgX015ZW5kICAgPSBfTXlfZGF0YS5fTXllbmQ7DQoN
CiAgICAgICAgOyANCiAgICAgICAgOw0KDQogICAgICAgIGNvbnN0IGF1dG8gX05ld3ZlYyA9IF9H
ZXRhbCgpLmFsbG9jYXRlKF9OZXdjYXBhY2l0eSk7DQogICAgICAgIF9NeWZpcnN0ICAgICAgICAg
ICA9IF9OZXd2ZWM7DQogICAgICAgIF9NeWxhc3QgICAgICAgICAgICA9IF9OZXd2ZWM7DQogICAg
ICAgIF9NeWVuZCAgICAgICAgICAgICA9IF9OZXd2ZWMgKyBfTmV3Y2FwYWNpdHk7DQogICAgfQ0K
DQogICAgdm9pZCBfQnV5X25vbnplcm8oY29uc3Qgc2l6ZV90eXBlIF9OZXdjYXBhY2l0eSkgew0K
ICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgaWYgKF9OZXdjYXBhY2l0eSA+IG1h
eF9zaXplKCkpIHsNCiAgICAgICAgICAgIF9YbGVuZ3RoKCk7DQogICAgICAgIH0NCg0KICAgICAg
ICBfQnV5X3JhdyhfTmV3Y2FwYWNpdHkpOw0KICAgIH0NCg0KICAgIHZvaWQgX0NoYW5nZV9hcnJh
eShjb25zdCBwb2ludGVyIF9OZXd2ZWMsIGNvbnN0IHNpemVfdHlwZSBfTmV3c2l6ZSwgY29uc3Qg
c2l6ZV90eXBlIF9OZXdjYXBhY2l0eSkgew0KICAgICAgICANCiAgICAgICAgYXV0byYgX015X2Rh
dGEgICAgPSBfTXlwYWlyLl9NeXZhbDI7DQogICAgICAgIHBvaW50ZXImIF9NeWZpcnN0ID0gX015
X2RhdGEuX015Zmlyc3Q7DQogICAgICAgIHBvaW50ZXImIF9NeWxhc3QgID0gX015X2RhdGEuX015
bGFzdDsNCiAgICAgICAgcG9pbnRlciYgX015ZW5kICAgPSBfTXlfZGF0YS5fTXllbmQ7DQoNCiAg
ICAgICAgX015X2RhdGEuX09ycGhhbl9hbGwoKTsNCg0KICAgICAgICBpZiAoX015Zmlyc3QpIHsg
DQogICAgICAgICAgICBfRGVzdHJveShfTXlmaXJzdCwgX015bGFzdCk7DQogICAgICAgICAgICBf
R2V0YWwoKS5kZWFsbG9jYXRlKF9NeWZpcnN0LCBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9NeWVu
ZCAtIF9NeWZpcnN0KSk7DQogICAgICAgIH0NCg0KICAgICAgICBfTXlmaXJzdCA9IF9OZXd2ZWM7
DQogICAgICAgIF9NeWxhc3QgID0gX05ld3ZlYyArIF9OZXdzaXplOw0KICAgICAgICBfTXllbmQg
ICA9IF9OZXd2ZWMgKyBfTmV3Y2FwYWNpdHk7DQogICAgfQ0KDQogICAgdm9pZCBfVGlkeSgpIG5v
ZXhjZXB0IHsgDQogICAgICAgIGF1dG8mIF9NeV9kYXRhICAgID0gX015cGFpci5fTXl2YWwyOw0K
ICAgICAgICBwb2ludGVyJiBfTXlmaXJzdCA9IF9NeV9kYXRhLl9NeWZpcnN0Ow0KICAgICAgICBw
b2ludGVyJiBfTXlsYXN0ICA9IF9NeV9kYXRhLl9NeWxhc3Q7DQogICAgICAgIHBvaW50ZXImIF9N
eWVuZCAgID0gX015X2RhdGEuX015ZW5kOw0KDQogICAgICAgIF9NeV9kYXRhLl9PcnBoYW5fYWxs
KCk7DQoNCiAgICAgICAgaWYgKF9NeWZpcnN0KSB7IA0KICAgICAgICAgICAgX0Rlc3Ryb3koX015
Zmlyc3QsIF9NeWxhc3QpOw0KICAgICAgICAgICAgX0dldGFsKCkuZGVhbGxvY2F0ZShfTXlmaXJz
dCwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfTXllbmQgLSBfTXlmaXJzdCkpOw0KDQogICAgICAg
ICAgICBfTXlmaXJzdCA9IHBvaW50ZXIoKTsNCiAgICAgICAgICAgIF9NeWxhc3QgID0gcG9pbnRl
cigpOw0KICAgICAgICAgICAgX015ZW5kICAgPSBwb2ludGVyKCk7DQogICAgICAgIH0NCiAgICB9
DQoNCiAgICBbW25vcmV0dXJuXV0gc3RhdGljIHZvaWQgX1hsZW5ndGgoKSB7DQogICAgICAgIF9Y
bGVuZ3RoX2Vycm9yKCJ2ZWN0b3IgdG9vIGxvbmciKTsNCiAgICB9DQoNCiAgICBbW25vcmV0dXJu
XV0gc3RhdGljIHZvaWQgX1hyYW5nZSgpIHsNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2UoImludmFs
aWQgdmVjdG9yIHN1YnNjcmlwdCIpOw0KICAgIH0NCg0KICAgIHZvaWQgX09ycGhhbl9yYW5nZShw
b2ludGVyIF9GaXJzdCwgcG9pbnRlciBfTGFzdCkgY29uc3QgeyANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTcyNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4
ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQogICAgICAgICh2b2lkKSBfRmlyc3Q7DQogICAgICAgICh2
b2lkKSBfTGFzdDsNCiNsaW5lIDE3MjkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4y
Ni4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KICAgIH0NCg0KICAgIF9BbHR5JiBfR2V0YWwoKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXlwYWlyLl9HZXRfZmlyc3QoKTsNCiAgICB9DQoN
CiAgICBjb25zdCBfQWx0eSYgX0dldGFsKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gX015cGFpci5fR2V0X2ZpcnN0KCk7DQogICAgfQ0KDQogICAgaXRlcmF0b3IgX01ha2VfaXRl
cmF0b3IoY29uc3QgcG9pbnRlciBfUHRyKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBpdGVy
YXRvcihfUHRyLCA6OnN0ZDo6IGFkZHJlc3NvZihfTXlwYWlyLl9NeXZhbDIpKTsNCiAgICB9DQoN
CiAgICBpdGVyYXRvciBfTWFrZV9pdGVyYXRvcl9vZmZzZXQoY29uc3Qgc2l6ZV90eXBlIF9PZmZz
ZXQpIG5vZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIGF1dG8mIF9NeV9kYXRhID0gX015cGFp
ci5fTXl2YWwyOw0KICAgICAgICByZXR1cm4gaXRlcmF0b3IoX015X2RhdGEuX015Zmlyc3QgKyBf
T2Zmc2V0LCA6OnN0ZDo6IGFkZHJlc3NvZihfTXlfZGF0YSkpOw0KICAgIH0NCg0KICAgIF9Db21w
cmVzc2VkX3BhaXI8X0FsdHksIF9TY2FyeV92YWw+IF9NeXBhaXI7DQp9Ow0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfSXRlciwgY2xhc3MgX0FsbG9jID0gYWxsb2NhdG9yPF9JdGVyX3ZhbHVlX3Q8X0l0
ZXI+PiwNCiAgICBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PF9Jc19pdGVyYXRvcjxfSXRlcj4s
IF9Jc19hbGxvY2F0b3I8X0FsbG9jPj4sIGludD4gPSAwPg0KdmVjdG9yKF9JdGVyLCBfSXRlciwg
X0FsbG9jID0gX0FsbG9jKCkpIC0+IHZlY3RvcjxfSXRlcl92YWx1ZV90PF9JdGVyPiwgX0FsbG9j
PjsNCiNsaW5lIDE3NTcgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcdmVjdG9yIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2M+DQp2
b2lkIHN3YXAodmVjdG9yPF9UeSwgX0FsbG9jPiYgX0xlZnQsIHZlY3RvcjxfVHksIF9BbGxvYz4m
IF9SaWdodCkgbm9leGNlcHQgIHsNCiAgICBfTGVmdC5zd2FwKF9SaWdodCk7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHksIGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRv
cj09KGNvbnN0IHZlY3RvcjxfVHksIF9BbGxvYz4mIF9MZWZ0LCBjb25zdCB2ZWN0b3I8X1R5LCBf
QWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX0xlZnQuc2l6ZSgpID09IF9SaWdodC5zaXpl
KCkNCiAgICAgICAgICAgJiYgOjpzdGQ6OiBlcXVhbChfTGVmdC5fVW5jaGVja2VkX2JlZ2luKCks
IF9MZWZ0Ll9VbmNoZWNrZWRfZW5kKCksIF9SaWdodC5fVW5jaGVja2VkX2JlZ2luKCkpOw0KfQ0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wg
b3BlcmF0b3IhPShjb25zdCB2ZWN0b3I8X1R5LCBfQWxsb2M+JiBfTGVmdCwgY29uc3QgdmVjdG9y
PF9UeSwgX0FsbG9jPiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuICEoX0xlZnQgPT0gX1JpZ2h0KTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgY2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBi
b29sIG9wZXJhdG9yPChjb25zdCB2ZWN0b3I8X1R5LCBfQWxsb2M+JiBfTGVmdCwgY29uc3QgdmVj
dG9yPF9UeSwgX0FsbG9jPiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuIDo6c3RkOjogbGV4aWNvZ3Jh
cGhpY2FsX2NvbXBhcmUoDQogICAgICAgIF9MZWZ0Ll9VbmNoZWNrZWRfYmVnaW4oKSwgX0xlZnQu
X1VuY2hlY2tlZF9lbmQoKSwgX1JpZ2h0Ll9VbmNoZWNrZWRfYmVnaW4oKSwgX1JpZ2h0Ll9VbmNo
ZWNrZWRfZW5kKCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBjbGFzcyBfQWxsb2M+DQpb
W25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I+KGNvbnN0IHZlY3RvcjxfVHksIF9BbGxvYz4mIF9M
ZWZ0LCBjb25zdCB2ZWN0b3I8X1R5LCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX1Jp
Z2h0IDwgX0xlZnQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9BbGxvYz4NCltb
bm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcjw9KGNvbnN0IHZlY3RvcjxfVHksIF9BbGxvYz4mIF9M
ZWZ0LCBjb25zdCB2ZWN0b3I8X1R5LCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShf
UmlnaHQgPCBfTGVmdCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIGNsYXNzIF9BbGxvYz4N
Cltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj49KGNvbnN0IHZlY3RvcjxfVHksIF9BbGxvYz4m
IF9MZWZ0LCBjb25zdCB2ZWN0b3I8X1R5LCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4g
IShfTGVmdCA8IF9SaWdodCk7DQp9DQoNCg0KdXNpbmcgX1ZiYXNlICAgICAgICAgPSB1bnNpZ25l
ZCBpbnQ7IA0KY29uc3RleHByIGludCBfVkJJVFMgPSA4ICogc2l6ZW9mKF9WYmFzZSk7IA0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jMD4NCnN0cnVjdCBfV3JhcF9hbGxvYyB7IA0KICAgIHVzaW5n
IF9BbGxvYyA9IF9BbGxvYzA7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQWx2YmFzZV93cmFw
cGVkPg0KY2xhc3MgX1ZiX2l0ZXJfYmFzZSA6IHB1YmxpYyBfSXRlcmF0b3JfYmFzZSB7DQogICAg
DQpwdWJsaWM6DQogICAgdXNpbmcgX0FsdmJhc2UgICAgICAgICA9IHR5cGVuYW1lIF9BbHZiYXNl
X3dyYXBwZWQ6Ol9BbGxvYzsNCiAgICB1c2luZyBfU2l6ZV90eXBlICAgICAgID0gdHlwZW5hbWUg
YWxsb2NhdG9yX3RyYWl0czxfQWx2YmFzZT46OnNpemVfdHlwZTsNCiAgICB1c2luZyBfRGlmZmVy
ZW5jZV90eXBlID0gdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czxfQWx2YmFzZT46OmRpZmZlcmVu
Y2VfdHlwZTsNCiAgICB1c2luZyBfTXljb250ICAgICAgICAgID0gdmVjdG9yPGJvb2wsIF9SZWJp
bmRfYWxsb2NfdDxfQWx2YmFzZSwgYm9vbD4+Ow0KDQogICAgX1ZiX2l0ZXJfYmFzZSgpID0gZGVm
YXVsdDsNCg0KICAgIF9WYl9pdGVyX2Jhc2UoY29uc3QgX1ZiYXNlKiBfUHRyLCBfU2l6ZV90eXBl
IF9PZmYsIGNvbnN0IF9Db250YWluZXJfYmFzZSogX015cHZib29sKSBub2V4Y2VwdA0KICAgICAg
ICA6IF9NeXB0cihfUHRyKSwgX015b2ZmKF9PZmYpIHsNCiAgICAgICAgdGhpcy0+X0Fkb3B0KF9N
eXB2Ym9vbCk7DQogICAgfQ0KDQogICAgdm9pZCBfQWR2YW5jZShfU2l6ZV90eXBlIF9PZmYpIHsN
CiAgICAgICAgX015b2ZmICs9IF9PZmY7DQogICAgICAgIF9NeXB0ciArPSBfTXlvZmYgLyBfVkJJ
VFM7DQogICAgICAgIF9NeW9mZiAlPSBfVkJJVFM7DQogICAgfQ0KDQoNCg0KDQoNCiNsaW5lIDE4
MzIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVj
dG9yIg0KDQogICAgY29uc3QgX1ZiYXNlKiBfTXlwdHIgPSBudWxscHRyOw0KICAgIF9TaXplX3R5
cGUgX015b2ZmICAgID0gMDsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbHZiYXNlX3dyYXBw
ZWQ+DQpjbGFzcyBfVmJfcmVmZXJlbmNlIDogcHVibGljIF9WYl9pdGVyX2Jhc2U8X0FsdmJhc2Vf
d3JhcHBlZD4gew0KICAgIA0KICAgIHVzaW5nIF9NeWJhc2UgICAgICAgICAgPSBfVmJfaXRlcl9i
YXNlPF9BbHZiYXNlX3dyYXBwZWQ+Ow0KICAgIHVzaW5nIF9NeWNvbnQgICAgICAgICAgPSB0eXBl
bmFtZSBfTXliYXNlOjpfTXljb250Ow0KICAgIHVzaW5nIF9EaWZmZXJlbmNlX3R5cGUgPSB0eXBl
bmFtZSBfTXliYXNlOjpfRGlmZmVyZW5jZV90eXBlOw0KDQogICAgDQogICAgX1ZiX3JlZmVyZW5j
ZSgpID0gZGVmYXVsdDsNCg0KcHVibGljOg0KICAgIF9WYl9yZWZlcmVuY2UoY29uc3QgX1ZiX3Jl
ZmVyZW5jZSYpID0gZGVmYXVsdDsNCg0KICAgIF9WYl9yZWZlcmVuY2UoY29uc3QgX015YmFzZSYg
X1JpZ2h0KSBub2V4Y2VwdCA6IF9NeWJhc2UoX1JpZ2h0Ll9NeXB0ciwgX1JpZ2h0Ll9NeW9mZiwg
X1JpZ2h0Ll9HZXRjb250KCkpIHt9DQoNCiAgICBfVmJfcmVmZXJlbmNlJiBvcGVyYXRvcj0oY29u
c3QgX1ZiX3JlZmVyZW5jZSYgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAqdGhp
cyA9IHN0YXRpY19jYXN0PGJvb2w+KF9SaWdodCk7DQogICAgfQ0KDQogICAgX1ZiX3JlZmVyZW5j
ZSYgb3BlcmF0b3I9KGJvb2wgX1ZhbCkgbm9leGNlcHQgew0KICAgICAgICBpZiAoX1ZhbCkgew0K
ICAgICAgICAgICAgKmNvbnN0X2Nhc3Q8X1ZiYXNlKj4oX0dldHB0cigpKSB8PSBfTWFzaygpOw0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgKmNvbnN0X2Nhc3Q8X1ZiYXNlKj4oX0dldHB0
cigpKSAmPSB+X01hc2soKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgICB2b2lkIGZsaXAoKSBub2V4Y2VwdCB7DQogICAgICAgICpjb25zdF9jYXN0PF9W
YmFzZSo+KF9HZXRwdHIoKSkgXj0gX01hc2soKTsNCiAgICB9DQoNCiAgICBvcGVyYXRvciBib29s
KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gKCpfR2V0cHRyKCkgJiBfTWFzaygp
KSAhPSAwOw0KICAgIH0NCg0KICAgIGNvbnN0IF9WYmFzZSogX0dldHB0cigpIGNvbnN0IHsNCg0K
DQoNCg0KDQojbGluZSAxODgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXHZlY3RvciINCg0KICAgICAgICByZXR1cm4gdGhpcy0+X015cHRyOw0KICAg
IH0NCg0KICAgIGZyaWVuZCB2b2lkIHN3YXAoX1ZiX3JlZmVyZW5jZSBfTGVmdCwgX1ZiX3JlZmVy
ZW5jZSBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICAgICAgYm9vbCBfVmFsID0gX0xlZnQ7IA0KICAg
ICAgICBfTGVmdCAgICAgPSBfUmlnaHQ7DQogICAgICAgIF9SaWdodCAgICA9IF9WYWw7DQogICAg
fQ0KDQpwcm90ZWN0ZWQ6DQogICAgX1ZiYXNlIF9NYXNrKCkgY29uc3Qgew0KICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8X1ZiYXNlPigxKSA8PCB0aGlzLT5fTXlvZmY7DQogICAgfQ0KfTsNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsdmJhc2Vfd3JhcHBlZD4NCmNsYXNzIF9WYl9jb25zdF9pdGVy
YXRvciA6IHB1YmxpYyBfVmJfaXRlcl9iYXNlPF9BbHZiYXNlX3dyYXBwZWQ+IHsNCnByaXZhdGU6
DQogICAgdXNpbmcgX015YmFzZSA9IF9WYl9pdGVyX2Jhc2U8X0FsdmJhc2Vfd3JhcHBlZD47DQoN
CnB1YmxpYzoNCiAgICB1c2luZyBfTXljb250ICAgICAgICAgID0gdHlwZW5hbWUgX015YmFzZTo6
X015Y29udDsNCiAgICB1c2luZyBfRGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgX015YmFzZTo6
X0RpZmZlcmVuY2VfdHlwZTsNCiAgICB1c2luZyBfU2l6ZV90eXBlICAgICAgID0gdHlwZW5hbWUg
X015YmFzZTo6X1NpemVfdHlwZTsNCiAgICB1c2luZyBfUmVmdCAgICAgICAgICAgID0gX1ZiX3Jl
ZmVyZW5jZTxfQWx2YmFzZV93cmFwcGVkPjsNCiAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgID0g
Ym9vbDsNCg0KICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gcmFuZG9tX2FjY2Vzc19pdGVy
YXRvcl90YWc7DQogICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgICAgPSBib29sOw0KICAgIHVzaW5n
IGRpZmZlcmVuY2VfdHlwZSAgID0gdHlwZW5hbWUgX015YmFzZTo6X0RpZmZlcmVuY2VfdHlwZTsN
CiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICA9IGNvbnN0X3JlZmVyZW5jZSo7DQogICAgdXNp
bmcgcmVmZXJlbmNlICAgICAgICAgPSBjb25zdF9yZWZlcmVuY2U7DQoNCiAgICBfVmJfY29uc3Rf
aXRlcmF0b3IoKSA9IGRlZmF1bHQ7DQoNCiAgICBfVmJfY29uc3RfaXRlcmF0b3IoY29uc3QgX1Zi
YXNlKiBfUHRyLCBjb25zdCBfQ29udGFpbmVyX2Jhc2UqIF9NeXB2Ym9vbCkgbm9leGNlcHQgOiBf
TXliYXNlKF9QdHIsIDAsIF9NeXB2Ym9vbCkge30NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rf
cmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsNCg0KDQoNCg0KDQojbGluZSAxOTI4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0K
ICAgICAgICByZXR1cm4gX1JlZnQoKnRoaXMpOw0KICAgIH0NCg0KICAgIF9WYl9jb25zdF9pdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsNCiAgICAgICAgX0luYygpOw0KICAgICAgICByZXR1cm4gKnRo
aXM7DQogICAgfQ0KDQogICAgX1ZiX2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7DQog
ICAgICAgIF9WYl9jb25zdF9pdGVyYXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgIF9JbmMoKTsN
CiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgX1ZiX2NvbnN0X2l0ZXJhdG9yJiBv
cGVyYXRvci0tKCkgew0KICAgICAgICBfRGVjKCk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgICBfVmJfY29uc3RfaXRlcmF0b3Igb3BlcmF0b3ItLShpbnQpIHsNCiAgICAgICAg
X1ZiX2NvbnN0X2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgX0RlYygpOw0KICAgICAg
ICByZXR1cm4gX1RtcDsNCiAgICB9DQoNCiAgICBfVmJfY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9y
Kz0oY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE5NjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcdmVjdG9yIg0KDQogICAgICAgIGlmIChfT2ZmIDwgMCAmJiB0aGlzLT5fTXlvZmYgPCAw
IC0gc3RhdGljX2Nhc3Q8X1NpemVfdHlwZT4oX09mZikpIHsgDQogICAgICAgICAgICB0aGlzLT5f
TXlvZmYgKz0gX09mZjsNCiAgICAgICAgICAgIHRoaXMtPl9NeXB0ciAtPSAxICsgKHN0YXRpY19j
YXN0PF9TaXplX3R5cGU+KC0xKSAtIHRoaXMtPl9NeW9mZikgLyBfVkJJVFM7DQogICAgICAgICAg
ICB0aGlzLT5fTXlvZmYgJT0gX1ZCSVRTOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAg
IHRoaXMtPl9NeW9mZiArPSBfT2ZmOw0KICAgICAgICAgICAgdGhpcy0+X015cHRyICs9IHRoaXMt
Pl9NeW9mZiAvIF9WQklUUzsNCiAgICAgICAgICAgIHRoaXMtPl9NeW9mZiAlPSBfVkJJVFM7DQog
ICAgICAgIH0NCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gX1ZiX2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yKyhjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09m
ZikgY29uc3Qgew0KICAgICAgICBfVmJfY29uc3RfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAg
ICAgICByZXR1cm4gX1RtcCArPSBfT2ZmOw0KICAgIH0NCg0KICAgIF9WYl9jb25zdF9pdGVyYXRv
ciYgb3BlcmF0b3ItPShjb25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgew0KICAgICAgICByZXR1
cm4gKnRoaXMgKz0gLV9PZmY7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBfVmJfY29uc3Rf
aXRlcmF0b3Igb3BlcmF0b3ItKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSBjb25zdCB7DQog
ICAgICAgIF9WYl9jb25zdF9pdGVyYXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgIHJldHVybiBf
VG1wIC09IF9PZmY7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBkaWZmZXJlbmNlX3R5cGUg
b3BlcmF0b3ItKGNvbnN0IF9WYl9jb25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCB7DQogICAg
ICAgIF9Db21wYXQoX1JpZ2h0KTsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRpZmZlcmVu
Y2VfdHlwZT4oX1ZCSVRTICogKHRoaXMtPl9NeXB0ciAtIF9SaWdodC5fTXlwdHIpKQ0KICAgICAg
ICAgICAgICAgKyBzdGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KHRoaXMtPl9NeW9mZikgLSBz
dGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KF9SaWdodC5fTXlvZmYpOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3QgZGlmZmVyZW5j
ZV90eXBlIF9PZmYpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuICooKnRoaXMgKyBfT2ZmKTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3I9PShjb25zdCBfVmJfY29uc3Rf
aXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgew0KICAgICAgICBfQ29tcGF0KF9SaWdodCk7DQogICAg
ICAgIHJldHVybiB0aGlzLT5fTXlwdHIgPT0gX1JpZ2h0Ll9NeXB0ciAmJiB0aGlzLT5fTXlvZmYg
PT0gX1JpZ2h0Ll9NeW9mZjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBfVmJfY29uc3RfaXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgew0KICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBfUmlnaHQpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9v
bCBvcGVyYXRvcjwoY29uc3QgX1ZiX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsNCiAg
ICAgICAgX0NvbXBhdChfUmlnaHQpOw0KICAgICAgICByZXR1cm4gdGhpcy0+X015cHRyIDwgX1Jp
Z2h0Ll9NeXB0ciB8fCAodGhpcy0+X015cHRyID09IF9SaWdodC5fTXlwdHIgJiYgdGhpcy0+X015
b2ZmIDwgX1JpZ2h0Ll9NeW9mZik7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIG9w
ZXJhdG9yPihjb25zdCBfVmJfY29uc3RfaXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgew0KICAgICAg
ICByZXR1cm4gX1JpZ2h0IDwgKnRoaXM7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29s
IG9wZXJhdG9yPD0oY29uc3QgX1ZiX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsNCiAg
ICAgICAgcmV0dXJuICEoX1JpZ2h0IDwgKnRoaXMpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gYm9vbCBvcGVyYXRvcj49KGNvbnN0IF9WYl9jb25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25z
dCB7DQogICAgICAgIHJldHVybiAhKCp0aGlzIDwgX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB2b2lk
IF9Db21wYXQoY29uc3QgX1ZiX2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IHsgDQoNCiAg
ICAgICAgKHZvaWQpIF9SaWdodDsNCg0KDQojbGluZSAyMDM3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCiAgICB9DQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMjA0NyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAgICB2b2lkIF9EZWMoKSB7IA0KDQoNCg0KDQojbGluZSAy
MDU0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZl
Y3RvciINCg0KICAgICAgICBpZiAodGhpcy0+X015b2ZmICE9IDApIHsNCiAgICAgICAgICAgIC0t
dGhpcy0+X015b2ZmOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIHRoaXMtPl9NeW9m
ZiA9IF9WQklUUyAtIDE7DQogICAgICAgICAgICAtLXRoaXMtPl9NeXB0cjsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIHZvaWQgX0luYygpIHsgDQoNCg0KDQoNCg0KI2xpbmUgMjA3MCAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAg
ICAgICAgaWYgKHRoaXMtPl9NeW9mZiA8IF9WQklUUyAtIDEpIHsNCiAgICAgICAgICAgICsrdGhp
cy0+X015b2ZmOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIHRoaXMtPl9NeW9mZiA9
IDA7DQogICAgICAgICAgICArK3RoaXMtPl9NeXB0cjsNCiAgICAgICAgfQ0KICAgIH0NCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfQWx2YmFzZV93cmFwcGVkPg0KW1tub2Rpc2NhcmRdXSBfVmJfY29u
c3RfaXRlcmF0b3I8X0FsdmJhc2Vfd3JhcHBlZD4gb3BlcmF0b3IrKA0KICAgIHR5cGVuYW1lIF9W
Yl9jb25zdF9pdGVyYXRvcjxfQWx2YmFzZV93cmFwcGVkPjo6ZGlmZmVyZW5jZV90eXBlIF9PZmYs
IF9WYl9jb25zdF9pdGVyYXRvcjxfQWx2YmFzZV93cmFwcGVkPiBfUmlnaHQpIHsNCiAgICByZXR1
cm4gX1JpZ2h0ICs9IF9PZmY7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbHZiYXNlX3dyYXBw
ZWQ+DQpjbGFzcyBfVmJfaXRlcmF0b3IgOiBwdWJsaWMgX1ZiX2NvbnN0X2l0ZXJhdG9yPF9BbHZi
YXNlX3dyYXBwZWQ+IHsNCnB1YmxpYzoNCiAgICB1c2luZyBfTXliYXNlICAgICAgICAgID0gX1Zi
X2NvbnN0X2l0ZXJhdG9yPF9BbHZiYXNlX3dyYXBwZWQ+Ow0KICAgIHVzaW5nIF9NeWNvbnQgICAg
ICAgICAgPSB0eXBlbmFtZSBfTXliYXNlOjpfTXljb250Ow0KICAgIHVzaW5nIF9EaWZmZXJlbmNl
X3R5cGUgPSB0eXBlbmFtZSBfTXliYXNlOjpfRGlmZmVyZW5jZV90eXBlOw0KDQogICAgdXNpbmcg
X1JlZnQgICAgICAgICAgID0gX1ZiX3JlZmVyZW5jZTxfQWx2YmFzZV93cmFwcGVkPjsNCiAgICB1
c2luZyBjb25zdF9yZWZlcmVuY2UgPSBib29sOw0KDQogICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdv
cnkgPSByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAg
ICAgICA9IGJvb2w7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgPSB0eXBlbmFtZSBfTXli
YXNlOjpkaWZmZXJlbmNlX3R5cGU7DQogICAgdXNpbmcgcG9pbnRlciAgICAgICAgICAgPSBfUmVm
dCo7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgPSBfUmVmdDsNCg0KICAgIHVzaW5nIF9N
eWJhc2U6Ol9NeWJhc2U7DQoNCiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5jZSBvcGVyYXRvcioo
KSBjb25zdCB7DQoNCg0KDQoNCg0KI2xpbmUgMjExMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAgICAgICAgcmV0dXJuIF9SZWZ0
KCp0aGlzKTsNCiAgICB9DQoNCiAgICBfVmJfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7DQogICAg
ICAgIF9NeWJhc2U6Om9wZXJhdG9yKysoKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0N
Cg0KICAgIF9WYl9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgew0KICAgICAgICBfVmJfaXRlcmF0
b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICBfTXliYXNlOjpvcGVyYXRvcisrKCk7DQogICAgICAg
IHJldHVybiBfVG1wOw0KICAgIH0NCg0KICAgIF9WYl9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsN
CiAgICAgICAgX015YmFzZTo6b3BlcmF0b3ItLSgpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KDQogICAgX1ZiX2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7DQogICAgICAgIF9WYl9p
dGVyYXRvciBfVG1wID0gKnRoaXM7DQogICAgICAgIF9NeWJhc2U6Om9wZXJhdG9yLS0oKTsNCiAg
ICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgX1ZiX2l0ZXJhdG9yJiBvcGVyYXRvcis9
KGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfT2ZmKSB7DQogICAgICAgIF9NeWJhc2U6Om9wZXJhdG9y
Kz0oX09mZik7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIF9WYl9pdGVyYXRvciBvcGVyYXRvcisoY29uc3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIGNv
bnN0IHsNCiAgICAgICAgX1ZiX2l0ZXJhdG9yIF9UbXAgPSAqdGhpczsNCiAgICAgICAgcmV0dXJu
IF9UbXAgKz0gX09mZjsNCiAgICB9DQoNCiAgICBfVmJfaXRlcmF0b3ImIG9wZXJhdG9yLT0oY29u
c3QgZGlmZmVyZW5jZV90eXBlIF9PZmYpIHsNCiAgICAgICAgX015YmFzZTo6b3BlcmF0b3ItPShf
T2ZmKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHVzaW5nIF9NeWJhc2U6
Om9wZXJhdG9yLTsNCg0KICAgIFtbbm9kaXNjYXJkXV0gX1ZiX2l0ZXJhdG9yIG9wZXJhdG9yLShj
b25zdCBkaWZmZXJlbmNlX3R5cGUgX09mZikgY29uc3Qgew0KICAgICAgICBfVmJfaXRlcmF0b3Ig
X1RtcCA9ICp0aGlzOw0KICAgICAgICByZXR1cm4gX1RtcCAtPSBfT2ZmOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3QgZGlmZmVyZW5jZV90eXBl
IF9PZmYpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuICooKnRoaXMgKyBfT2ZmKTsNCiAgICB9DQoN
CiAgICB1c2luZyBfUHJldmVudF9pbmhlcml0aW5nX3Vud3JhcCA9IF9WYl9pdGVyYXRvcjsNCn07
DQoNCnRlbXBsYXRlIDxjbGFzcyBfQWx2YmFzZV93cmFwcGVkPg0KW1tub2Rpc2NhcmRdXSBfVmJf
aXRlcmF0b3I8X0FsdmJhc2Vfd3JhcHBlZD4gb3BlcmF0b3IrKA0KICAgIHR5cGVuYW1lIF9WYl9p
dGVyYXRvcjxfQWx2YmFzZV93cmFwcGVkPjo6ZGlmZmVyZW5jZV90eXBlIF9PZmYsIF9WYl9pdGVy
YXRvcjxfQWx2YmFzZV93cmFwcGVkPiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX1JpZ2h0ICs9IF9P
ZmY7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4NCmNsYXNzIF9WYl92YWwgOiBwdWJs
aWMgX0NvbnRhaW5lcl9iYXNlIHsNCnB1YmxpYzoNCiAgICB1c2luZyBfQWx2YmFzZSAgICAgICAg
ID0gX1JlYmluZF9hbGxvY190PF9BbGxvYywgX1ZiYXNlPjsNCiAgICB1c2luZyBfQWx2YmFzZV90
cmFpdHMgID0gYWxsb2NhdG9yX3RyYWl0czxfQWx2YmFzZT47DQogICAgdXNpbmcgX1ZlY3R5cGUg
ICAgICAgICA9IHZlY3RvcjxfVmJhc2UsIF9BbHZiYXNlPjsNCiAgICB1c2luZyBfQWx2YmFzZV93
cmFwcGVkID0gX1dyYXBfYWxsb2M8X0FsdmJhc2U+Ow0KICAgIHVzaW5nIHNpemVfdHlwZSAgICAg
ICAgPSB0eXBlbmFtZSBfQWx2YmFzZV90cmFpdHM6OnNpemVfdHlwZTsNCg0KICAgIF9WYl92YWwo
KSBub2V4Y2VwdChpc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZV92PF9WZWN0eXBlPikg
OiBfTXl2ZWMoKSwgX015c2l6ZSgwKSB7DQogICAgICAgIHRoaXMtPl9BbGxvY19wcm94eShfRmFr
ZV9hbGxvY2F0b3IoKSk7DQogICAgfQ0KDQogICAgX1ZiX3ZhbChjb25zdCBfQWxsb2MmIF9BbCkg
bm9leGNlcHQoaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8X1ZlY3R5cGUsIF9BbHZiYXNlPikN
CiAgICAgICAgOiBfTXl2ZWMoc3RhdGljX2Nhc3Q8X0FsdmJhc2U+KF9BbCkpLCBfTXlzaXplKDAp
IHsNCiAgICAgICAgdGhpcy0+X0FsbG9jX3Byb3h5KF9GYWtlX2FsbG9jYXRvcigpKTsNCiAgICB9
DQoNCiAgICBfVmJfdmFsKHNpemVfdHlwZSBfQ291bnQsIGNvbnN0IGJvb2wmIF9WYWwpIDogX015
dmVjKF9OdyhfQ291bnQpLCBzdGF0aWNfY2FzdDxfVmJhc2U+KF9WYWwgPyAtMSA6IDApKSwgX015
c2l6ZSgwKSB7DQogICAgICAgIHRoaXMtPl9BbGxvY19wcm94eShfRmFrZV9hbGxvY2F0b3IoKSk7
DQogICAgfQ0KDQogICAgX1ZiX3ZhbChzaXplX3R5cGUgX0NvdW50LCBjb25zdCBib29sJiBfVmFs
LCBjb25zdCBfQWxsb2MmIF9BbCkNCiAgICAgICAgOiBfTXl2ZWMoX053KF9Db3VudCksIHN0YXRp
Y19jYXN0PF9WYmFzZT4oX1ZhbCA/IC0xIDogMCksIHN0YXRpY19jYXN0PF9BbHZiYXNlPihfQWwp
KSwgX015c2l6ZSgwKSB7DQogICAgICAgIHRoaXMtPl9BbGxvY19wcm94eShfRmFrZV9hbGxvY2F0
b3IoKSk7DQogICAgfQ0KDQogICAgX1ZiX3ZhbChjb25zdCBfVmJfdmFsJiBfUmlnaHQpIDogX015
dmVjKF9SaWdodC5fTXl2ZWMpLCBfTXlzaXplKF9SaWdodC5fTXlzaXplKSB7DQogICAgICAgIHRo
aXMtPl9BbGxvY19wcm94eShfRmFrZV9hbGxvY2F0b3IoKSk7DQogICAgfQ0KDQogICAgX1ZiX3Zh
bChjb25zdCBfVmJfdmFsJiBfUmlnaHQsIGNvbnN0IF9BbGxvYyYgX0FsKQ0KICAgICAgICA6IF9N
eXZlYyhfUmlnaHQuX015dmVjLCBzdGF0aWNfY2FzdDxfQWx2YmFzZT4oX0FsKSksIF9NeXNpemUo
X1JpZ2h0Ll9NeXNpemUpIHsNCiAgICAgICAgdGhpcy0+X0FsbG9jX3Byb3h5KF9GYWtlX2FsbG9j
YXRvcigpKTsNCiAgICB9DQoNCiAgICBfVmJfdmFsKF9WYl92YWwmJiBfUmlnaHQpIG5vZXhjZXB0
KGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX3Y8X1ZlY3R5cGU+KQ0KICAgICAgICA6IF9N
eXZlYyg6OnN0ZDo6IG1vdmUoX1JpZ2h0Ll9NeXZlYykpLCBfTXlzaXplKDo6c3RkOjogZXhjaGFu
Z2UoX1JpZ2h0Ll9NeXNpemUsIHNpemVfdHlwZXswfSkpIHsNCiAgICAgICAgdGhpcy0+X0FsbG9j
X3Byb3h5KF9GYWtlX2FsbG9jYXRvcigpKTsNCiAgICB9DQoNCiAgICBfVmJfdmFsKF9WYl92YWwm
JiBfUmlnaHQsIGNvbnN0IF9BbGxvYyYgX0FsKSBub2V4Y2VwdChpc19ub3Rocm93X2NvbnN0cnVj
dGlibGVfdjxfVmVjdHlwZSwgX1ZlY3R5cGUsIF9BbHZiYXNlPikNCiAgICAgICAgOiBfTXl2ZWMo
OjpzdGQ6OiBtb3ZlKF9SaWdodC5fTXl2ZWMpLCBzdGF0aWNfY2FzdDxfQWx2YmFzZT4oX0FsKSks
IF9NeXNpemUoX1JpZ2h0Ll9NeXNpemUpIHsNCiAgICAgICAgaWYgKF9SaWdodC5fTXl2ZWMuZW1w
dHkoKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBfUmlnaHQuX015c2l6ZSA9IDA7DQog
ICAgICAgIH0NCg0KICAgICAgICB0aGlzLT5fQWxsb2NfcHJveHkoX0Zha2VfYWxsb2NhdG9yKCkp
Ow0KICAgIH0NCg0KICAgIH5fVmJfdmFsKCkgbm9leGNlcHQgew0KDQoNCg0KDQojbGluZSAyMjMx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3Rv
ciINCiAgICB9DQoNCiAgICBfQWx2YmFzZSYgX0dldGFsKCkgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gX015dmVjLl9HZXRhbCgpOw0KICAgIH0NCg0KICAgIGNvbnN0IF9BbHZiYXNlJiBfR2V0
YWwoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTXl2ZWMuX0dldGFsKCk7DQog
ICAgfQ0KDQogICAgc3RhdGljIHNpemVfdHlwZSBfTncoc2l6ZV90eXBlIF9Db3VudCkgew0KICAg
ICAgICByZXR1cm4gKF9Db3VudCArIF9WQklUUyAtIDEpIC8gX1ZCSVRTOw0KICAgIH0NCg0KICAg
IF9WZWN0eXBlIF9NeXZlYzsgDQogICAgc2l6ZV90eXBlIF9NeXNpemU7IA0KfTsNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX0FsbG9jPg0KY2xhc3MgdmVjdG9yPGJvb2wsIF9BbGxvYz4gOiBwdWJsaWMg
X1ZiX3ZhbDxfQWxsb2M+IHsNCnB1YmxpYzoNCiAgICBzdGF0aWNfYXNzZXJ0KCExIHx8IGlzX3Nh
bWVfdjxib29sLCB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGU+LA0KICAgICAgICAidmVjdG9y
PGJvb2wsIEFsbG9jYXRvcj4iICIgcmVxdWlyZXMgdGhhdCBBbGxvY2F0b3IncyB2YWx1ZV90eXBl
IG1hdGNoICIgImJvb2wiICIgKFNlZSBONDY1OSAyNi4yLjEgW2NvbnRhaW5lci5yZXF1aXJlbWVu
dHMuZ2VuZXJhbF0vMTYgYWxsb2NhdG9yX3R5cGUpIiAiIEVpdGhlciBmaXggdGhlIGFsbG9jYXRv
ciB2YWx1ZV90eXBlIG9yIGRlZmluZSBfRU5GT1JDRV9NQVRDSElOR19BTExPQ0FUT1JTPTAiICIg
dG8gc3VwcHJlc3MgdGhpcyBkaWFnbm9zdGljLiIpOw0KDQogICAgdXNpbmcgX015YmFzZSAgICAg
ICAgICA9IF9WYl92YWw8X0FsbG9jPjsNCiAgICB1c2luZyBfQWx2YmFzZV93cmFwcGVkID0gdHlw
ZW5hbWUgX015YmFzZTo6X0FsdmJhc2Vfd3JhcHBlZDsNCiAgICB1c2luZyBfQWx2YmFzZSAgICAg
ICAgID0gdHlwZW5hbWUgX015YmFzZTo6X0FsdmJhc2U7DQogICAgdXNpbmcgX0FsdmJhc2VfdHJh
aXRzICA9IHR5cGVuYW1lIF9NeWJhc2U6Ol9BbHZiYXNlX3RyYWl0czsNCg0KICAgIHVzaW5nIHNp
emVfdHlwZSAgICAgICA9IHR5cGVuYW1lIF9BbHZiYXNlX3RyYWl0czo6c2l6ZV90eXBlOw0KICAg
IHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIF9BbHZiYXNlX3RyYWl0czo6ZGlmZmVy
ZW5jZV90eXBlOw0KICAgIHVzaW5nIGFsbG9jYXRvcl90eXBlICA9IF9BbGxvYzsNCg0KICAgIHVz
aW5nIHJlZmVyZW5jZSAgICAgICA9IF9WYl9yZWZlcmVuY2U8X0FsdmJhc2Vfd3JhcHBlZD47DQog
ICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gYm9vbDsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAg
ICAgPSBib29sOw0KDQogICAgdXNpbmcgX1JlZnQgICAgICAgICAgPSByZWZlcmVuY2U7DQogICAg
dXNpbmcgaXRlcmF0b3IgICAgICAgPSBfVmJfaXRlcmF0b3I8X0FsdmJhc2Vfd3JhcHBlZD47DQog
ICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBfVmJfY29uc3RfaXRlcmF0b3I8X0FsdmJhc2Vfd3Jh
cHBlZD47DQoNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAgICAgID0gaXRlcmF0b3I7DQog
ICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0X2l0ZXJhdG9yOw0KICAgIHVz
aW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSA6OnN0ZDo6IHJldmVyc2VfaXRlcmF0b3I8aXRl
cmF0b3I+Ow0KICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSA6OnN0ZDo6IHJldmVy
c2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+Ow0KDQogICAgc3RhdGljIGNvbnN0IGludCBfVkJJ
VFMgPSA6OnN0ZDo6IF9WQklUUzsNCiAgICBlbnVtIHsgX0VFTl9WQklUUyA9IF9WQklUUyB9OyAN
Cg0KICAgIHZlY3RvcigpIG5vZXhjZXB0KGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxl
X3Y8X015YmFzZT4pIA0KICAgICAgICA6IF9NeWJhc2UoKSB7fQ0KDQogICAgZXhwbGljaXQgdmVj
dG9yKGNvbnN0IF9BbGxvYyYgX0FsKSBub2V4Y2VwdChpc19ub3Rocm93X2NvbnN0cnVjdGlibGVf
djxfTXliYXNlLCBjb25zdCBfQWxsb2MmPikgDQogICAgICAgIDogX015YmFzZShfQWwpIHt9DQoN
CiAgICBleHBsaWNpdCB2ZWN0b3IoIHNpemVfdHlwZSBfQ291bnQsIGNvbnN0IF9BbGxvYyYgX0Fs
ID0gX0FsbG9jKCkpIDogX015YmFzZShfQ291bnQsIGZhbHNlLCBfQWwpIHsNCiAgICAgICAgX1Ry
aW0oX0NvdW50KTsNCiAgICB9DQoNCiAgICB2ZWN0b3IoIHNpemVfdHlwZSBfQ291bnQsIGNvbnN0
IGJvb2wmIF9WYWwsIGNvbnN0IF9BbGxvYyYgX0FsID0gX0FsbG9jKCkpDQogICAgICAgIDogX015
YmFzZShfQ291bnQsIF9WYWwsIF9BbCkgew0KICAgICAgICBfVHJpbShfQ291bnQpOw0KICAgIH0N
Cg0KICAgIHZlY3Rvcihjb25zdCB2ZWN0b3ImIF9SaWdodCkgOiBfTXliYXNlKF9SaWdodCkge30N
Cg0KICAgIHZlY3Rvcihjb25zdCB2ZWN0b3ImIF9SaWdodCwgY29uc3QgX0FsbG9jJiBfQWwpIDog
X015YmFzZShfUmlnaHQsIF9BbCkge30NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlciwgZW5h
YmxlX2lmX3Q8X0lzX2l0ZXJhdG9yX3Y8X0l0ZXI+LCBpbnQ+ID0gMD4NCiAgICB2ZWN0b3IoX0l0
ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgY29uc3QgX0FsbG9jJiBfQWwgPSBfQWxsb2MoKSkgOiBf
TXliYXNlKF9BbCkgew0KICAgICAgICBfQkNvbnN0cnVjdChfRmlyc3QsIF9MYXN0KTsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdm9pZCBfQkNvbnN0cnVjdChfSXRl
ciBfRmlyc3QsIF9JdGVyIF9MYXN0KSB7DQogICAgICAgIGluc2VydChiZWdpbigpLCBfRmlyc3Qs
IF9MYXN0KTsNCiAgICB9DQoNCiAgICB2ZWN0b3IodmVjdG9yJiYgX1JpZ2h0KSBub2V4Y2VwdChp
c19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZV92PF9NeWJhc2U+KSANCiAgICAgICAgOiBfTXli
YXNlKDo6c3RkOjogbW92ZShfUmlnaHQpKSB7DQogICAgICAgIHRoaXMtPl9Td2FwX3Byb3h5X2Fu
ZF9pdGVyYXRvcnMoX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB2ZWN0b3IodmVjdG9yJiYgX1JpZ2h0
LCBjb25zdCBfQWxsb2MmIF9BbCkgbm9leGNlcHQoaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8
X015YmFzZSwgX015YmFzZSwgY29uc3QgX0FsbG9jJj4pDQogICAgICAgIDogX015YmFzZSg6OnN0
ZDo6IG1vdmUoX1JpZ2h0KSwgX0FsKSB7DQogICAgICAgIGlmIGNvbnN0ZXhwciAoIV9BbHZiYXNl
X3RyYWl0czo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1ZSkgew0KICAgICAgICAgICAgaWYgKHRoaXMt
Pl9HZXRhbCgpICE9IF9SaWdodC5fR2V0YWwoKSkgew0KICAgICAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHRoaXMtPl9Td2FwX3Byb3h5X2Fu
ZF9pdGVyYXRvcnMoX1JpZ2h0KTsNCiAgICB9DQoNCnByaXZhdGU6DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMjM2NiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx2ZWN0b3IiDQoNCnB1YmxpYzoNCiAgICB2ZWN0b3ImIG9wZXJhdG9yPSh2ZWN0b3Im
JiBfUmlnaHQpIG5vZXhjZXB0KGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlX3Y8X015YmFzZT4p
IHsNCiAgICAgICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0KSkgew0KDQog
ICAgICAgICAgICB0aGlzLT5fTXl2ZWMgID0gOjpzdGQ6OiBtb3ZlKF9SaWdodC5fTXl2ZWMpOw0K
ICAgICAgICAgICAgdGhpcy0+X015c2l6ZSA9IDo6c3RkOjogZXhjaGFuZ2UoX1JpZ2h0Ll9NeXNp
emUsIHNpemVfdHlwZXswfSk7DQoNCg0KDQojbGluZSAyMzc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCiAgICAgICAgfQ0KICAgICAg
ICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9WYWx0eT4N
CiAgICBkZWNsdHlwZShhdXRvKSBlbXBsYWNlX2JhY2soX1ZhbHR5JiYuLi4gX1ZhbCkgew0KICAg
ICAgICBib29sIF9UbXAoOjpzdGQ6OiBmb3J3YXJkPF9WYWx0eT4oX1ZhbCkuLi4pOw0KICAgICAg
ICBwdXNoX2JhY2soX1RtcCk7DQoNCg0KICAgICAgICByZXR1cm4gYmFjaygpOw0KI2xpbmUgMjM4
OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0
b3IiDQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9WYWx0eT4NCiAgICBpdGVyYXRv
ciBlbXBsYWNlKGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSwgX1ZhbHR5JiYuLi4gX1ZhbCkgew0KICAg
ICAgICBib29sIF9UbXAoOjpzdGQ6OiBmb3J3YXJkPF9WYWx0eT4oX1ZhbCkuLi4pOw0KICAgICAg
ICByZXR1cm4gaW5zZXJ0KF9XaGVyZSwgX1RtcCk7DQogICAgfQ0KDQogICAgdmVjdG9yKGluaXRp
YWxpemVyX2xpc3Q8Ym9vbD4gX0lsaXN0LCBjb25zdCBfQWxsb2MmIF9BbCA9IGFsbG9jYXRvcl90
eXBlKCkpIDogX015YmFzZSgwLCBmYWxzZSwgX0FsKSB7DQogICAgICAgIGluc2VydChiZWdpbigp
LCBfSWxpc3QuYmVnaW4oKSwgX0lsaXN0LmVuZCgpKTsNCiAgICB9DQoNCiAgICB2ZWN0b3ImIG9w
ZXJhdG9yPShpbml0aWFsaXplcl9saXN0PGJvb2w+IF9JbGlzdCkgew0KICAgICAgICBhc3NpZ24o
X0lsaXN0LmJlZ2luKCksIF9JbGlzdC5lbmQoKSk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgICB2b2lkIGFzc2lnbihpbml0aWFsaXplcl9saXN0PGJvb2w+IF9JbGlzdCkgew0K
ICAgICAgICBhc3NpZ24oX0lsaXN0LmJlZ2luKCksIF9JbGlzdC5lbmQoKSk7DQogICAgfQ0KDQog
ICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSwgaW5pdGlhbGl6ZXJfbGlz
dDxib29sPiBfSWxpc3QpIHsNCiAgICAgICAgcmV0dXJuIGluc2VydChfV2hlcmUsIF9JbGlzdC5i
ZWdpbigpLCBfSWxpc3QuZW5kKCkpOw0KICAgIH0NCg0KICAgIH52ZWN0b3IoKSBub2V4Y2VwdCB7
fQ0KDQpwcml2YXRlOg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDI0MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcdmVjdG9yIg0KDQpwdWJsaWM6DQogICAgdmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgdmVjdG9y
JiBfUmlnaHQpIHsNCiAgICAgICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0
KSkgew0KDQogICAgICAgICAgICB0aGlzLT5fTXl2ZWMgID0gX1JpZ2h0Ll9NeXZlYzsNCiAgICAg
ICAgICAgIHRoaXMtPl9NeXNpemUgPSBfUmlnaHQuX015c2l6ZTsNCg0KDQoNCiNsaW5lIDI0NDkg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9y
Ig0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHZvaWQg
cmVzZXJ2ZSggc2l6ZV90eXBlIF9Db3VudCkgew0KICAgICAgICB0aGlzLT5fTXl2ZWMucmVzZXJ2
ZSh0aGlzLT5fTncoX0NvdW50KSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5
cGUgY2FwYWNpdHkoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiB0aGlzLT5fTXl2
ZWMuY2FwYWNpdHkoKSAqIF9WQklUUzsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGl0ZXJh
dG9yIGJlZ2luKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gaXRlcmF0b3IodGhpcy0+X015
dmVjLmRhdGEoKSwgdGhpcyk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJh
dG9yKHRoaXMtPl9NeXZlYy5kYXRhKCksIHRoaXMpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gaXRlcmF0b3IgZW5kKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gYmVnaW4oKSArIHN0
YXRpY19jYXN0PGRpZmZlcmVuY2VfdHlwZT4odGhpcy0+X015c2l6ZSk7DQogICAgfQ0KDQogICAg
W1tub2Rpc2NhcmRdXSBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBiZWdpbigpICsgc3RhdGljX2Nhc3Q8ZGlmZmVyZW5jZV90eXBlPih0aGlzLT5f
TXlzaXplKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X2l0ZXJhdG9yIGNiZWdp
bigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGJlZ2luKCk7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3Qgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gZW5kKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biByYmVnaW4oKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IgY3JlbmQoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiByZW5kKCk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpdGVyYXRvciBfVW5jaGVja2VkX2JlZ2luKCkgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gaXRlcmF0b3IodGhpcy0+X015dmVjLmRhdGEoKSwgdGhp
cyk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVyYXRvciBfVW5jaGVja2Vk
X2JlZ2luKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3Io
dGhpcy0+X015dmVjLmRhdGEoKSwgdGhpcyk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBp
dGVyYXRvciBfVW5jaGVja2VkX2VuZCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9VbmNo
ZWNrZWRfYmVnaW4oKSArIHN0YXRpY19jYXN0PGRpZmZlcmVuY2VfdHlwZT4odGhpcy0+X015c2l6
ZSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVyYXRvciBfVW5jaGVja2Vk
X2VuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9VbmNoZWNrZWRfYmVnaW4o
KSArIHN0YXRpY19jYXN0PGRpZmZlcmVuY2VfdHlwZT4odGhpcy0+X015c2l6ZSk7DQogICAgfQ0K
DQogICAgdm9pZCBzaHJpbmtfdG9fZml0KCkgew0KICAgICAgICBpZiAodGhpcy0+X015dmVjLmNh
cGFjaXR5KCkgIT0gdGhpcy0+X015dmVjLnNpemUoKSkgew0KICAgICAgICAgICAgdGhpcy0+X09y
cGhhbl9hbGwoKTsNCiAgICAgICAgICAgIHRoaXMtPl9NeXZlYy5zaHJpbmtfdG9fZml0KCk7DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICBpdGVyYXRvciBfTWFrZV9pdGVyKGNvbnN0X2l0ZXJhdG9y
IF9XaGVyZSkgbm9leGNlcHQgew0KICAgICAgICBpdGVyYXRvciBfVG1wID0gYmVnaW4oKTsNCiAg
ICAgICAgaWYgKDAgPCB0aGlzLT5fTXlzaXplKSB7DQogICAgICAgICAgICBfVG1wICs9IF9XaGVy
ZSAtIGJlZ2luKCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX1RtcDsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOw0KICAgIH0N
Cg0KICAgIFtbbm9kaXNjYXJkXV0gcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgbm9leGNlcHQgew0K
ICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7DQogICAg
fQ0KDQogICAgdm9pZCByZXNpemUoIHNpemVfdHlwZSBfTmV3c2l6ZSwgYm9vbCBfVmFsID0gZmFs
c2UpIHsNCiAgICAgICAgaWYgKHNpemUoKSA8IF9OZXdzaXplKSB7DQogICAgICAgICAgICBfSW5z
ZXJ0X24oZW5kKCksIF9OZXdzaXplIC0gc2l6ZSgpLCBfVmFsKTsNCiAgICAgICAgfSBlbHNlIGlm
IChfTmV3c2l6ZSA8IHNpemUoKSkgew0KICAgICAgICAgICAgZXJhc2UoYmVnaW4oKSArIHN0YXRp
Y19jYXN0PGRpZmZlcmVuY2VfdHlwZT4oX05ld3NpemUpLCBlbmQoKSk7DQogICAgICAgIH0NCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBzaXplKCkgY29uc3Qgbm9leGNlcHQg
ew0KICAgICAgICByZXR1cm4gdGhpcy0+X015c2l6ZTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgY29uc3Rl
eHByIGF1dG8gX0RpZmZfbWF4ICA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oKG51bWVyaWNfbGlt
aXRzPGRpZmZlcmVuY2VfdHlwZT46Om1heCkoKSk7DQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBf
SW50c19tYXggPSB0aGlzLT5fTXl2ZWMubWF4X3NpemUoKTsNCiAgICAgICAgaWYgKF9JbnRzX21h
eCA+IF9EaWZmX21heCAvIF9WQklUUykgeyANCiAgICAgICAgICAgIHJldHVybiBfRGlmZl9tYXg7
DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9JbnRzX21heCAqIF9WQklU
UzsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgZW1wdHkoKSBjb25zdCBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiBzaXplKCkgPT0gMDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxhbGxvY2F0b3JfdHlwZT4odGhpcy0+X015dmVjLmdldF9h
bGxvY2F0b3IoKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZWZlcmVuY2Ug
YXQoc2l6ZV90eXBlIF9PZmYpIGNvbnN0IHsNCiAgICAgICAgaWYgKHNpemUoKSA8PSBfT2ZmKSB7
DQogICAgICAgICAgICBfWHJhbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICgqdGhp
cylbX09mZl07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSByZWZlcmVuY2UgYXQoc2l6ZV90
eXBlIF9PZmYpIHsNCiAgICAgICAgaWYgKHNpemUoKSA8PSBfT2ZmKSB7DQogICAgICAgICAgICBf
WHJhbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICgqdGhpcylbX09mZl07DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5
cGUgX09mZikgY29uc3Qgbm9leGNlcHQgIHsNCg0KDQojbGluZSAyNTkzICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0KICAgICAgICBj
b25zdF9pdGVyYXRvciBfSXQgPSBiZWdpbigpOw0KICAgICAgICBfSXQuX0FkdmFuY2UoX09mZik7
DQogICAgICAgIHJldHVybiAqX0l0Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gcmVmZXJl
bmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9PZmYpIG5vZXhjZXB0ICB7DQoNCg0KI2xpbmUgMjYw
MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0
b3IiDQoNCiAgICAgICAgaXRlcmF0b3IgX0l0ID0gYmVnaW4oKTsNCiAgICAgICAgX0l0Ll9BZHZh
bmNlKF9PZmYpOw0KICAgICAgICByZXR1cm4gKl9JdDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2Fy
ZF1dIHJlZmVyZW5jZSBmcm9udCgpIG5vZXhjZXB0ICB7DQoNCg0KI2xpbmUgMjYxMyAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAg
ICAgICAgcmV0dXJuICpiZWdpbigpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rf
cmVmZXJlbmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQgIHsNCg0KDQojbGluZSAyNjIxICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0K
ICAgICAgICByZXR1cm4gKmJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSByZWZl
cmVuY2UgYmFjaygpIG5vZXhjZXB0ICB7DQoNCg0KI2xpbmUgMjYyOSAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQoNCiAgICAgICAgcmV0
dXJuICooZW5kKCkgLSAxKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X3JlZmVy
ZW5jZSBiYWNrKCkgY29uc3Qgbm9leGNlcHQgIHsNCg0KDQojbGluZSAyNjM3ICJDOlxcUHJvZ3Jh
bSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2Vc
XFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0KICAgICAg
ICByZXR1cm4gKihlbmQoKSAtIDEpOw0KICAgIH0NCg0KICAgIHZvaWQgcHVzaF9iYWNrKGNvbnN0
IGJvb2wmIF9WYWwpIHsNCiAgICAgICAgaW5zZXJ0KGVuZCgpLCBfVmFsKTsNCiAgICB9DQoNCiAg
ICB2b2lkIHBvcF9iYWNrKCkgbm9leGNlcHQgIHsNCiAgICAgICAgZXJhc2UoZW5kKCkgLSAxKTsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIsIGVuYWJsZV9pZl90PF9Jc19pdGVy
YXRvcl92PF9JdGVyPiwgaW50PiA9IDA+DQogICAgdm9pZCBhc3NpZ24oX0l0ZXIgX0ZpcnN0LCBf
SXRlciBfTGFzdCkgew0KICAgICAgICBjbGVhcigpOw0KICAgICAgICBpbnNlcnQoYmVnaW4oKSwg
X0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhc3NpZ24oIHNpemVfdHlwZSBfQ291
bnQsIGNvbnN0IGJvb2wmIF9WYWwpIHsNCiAgICAgICAgY2xlYXIoKTsNCiAgICAgICAgX0luc2Vy
dF9uKGJlZ2luKCksIF9Db3VudCwgX1ZhbCk7DQogICAgfQ0KDQogICAgaXRlcmF0b3IgaW5zZXJ0
KGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSwgY29uc3QgYm9vbCYgX1ZhbCkgew0KICAgICAgICByZXR1
cm4gX0luc2VydF9uKF9XaGVyZSwgc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigxKSwgX1ZhbCk7DQog
ICAgfQ0KDQogICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIF9XaGVyZSwgIHNpemVf
dHlwZSBfQ291bnQsIGNvbnN0IGJvb2wmIF9WYWwpIHsNCiAgICAgICAgcmV0dXJuIF9JbnNlcnRf
bihfV2hlcmUsIF9Db3VudCwgX1ZhbCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9J
dGVyLCBlbmFibGVfaWZfdDxfSXNfaXRlcmF0b3JfdjxfSXRlcj4sIGludD4gPSAwPg0KICAgIGl0
ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBfV2hlcmUsIF9JdGVyIF9GaXJzdCwgX0l0ZXIg
X0xhc3QpIHsNCiAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9PZmYgPSBfV2hlcmUgLSBiZWdpbigp
Ow0KICAgICAgICBfSW5zZXJ0KF9XaGVyZSwgX0ZpcnN0LCBfTGFzdCwgX0l0ZXJfY2F0X3Q8X0l0
ZXI+e30pOw0KICAgICAgICByZXR1cm4gYmVnaW4oKSArIF9PZmY7DQogICAgfQ0KDQogICAgdGVt
cGxhdGUgPGNsYXNzIF9JdGVyPg0KICAgIHZvaWQgX0luc2VydChjb25zdF9pdGVyYXRvciBfV2hl
cmUsIF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QsIGlucHV0X2l0ZXJhdG9yX3RhZykgew0KICAg
ICAgICBkaWZmZXJlbmNlX3R5cGUgX09mZiA9IF9XaGVyZSAtIGJlZ2luKCk7DQoNCiAgICAgICAg
Zm9yICg7IF9GaXJzdCAhPSBfTGFzdDsgKytfRmlyc3QsICh2b2lkKSArK19PZmYpIHsNCiAgICAg
ICAgICAgIGluc2VydChiZWdpbigpICsgX09mZiwgKl9GaXJzdCk7DQogICAgICAgIH0NCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdm9pZCBfSW5zZXJ0KGNvbnN0X2l0
ZXJhdG9yIF9XaGVyZSwgX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgZm9yd2FyZF9pdGVyYXRv
cl90YWcpIHsNCiAgICAgICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAg
ICAgIGF1dG8gX0NvdW50ICAgID0gX0NvbnZlcnRfc2l6ZTxzaXplX3R5cGU+KHN0YXRpY19jYXN0
PHNpemVfdD4oOjpzdGQ6OiBkaXN0YW5jZShfRmlyc3QsIF9MYXN0KSkpOw0KICAgICAgICBzaXpl
X3R5cGUgX09mZiA9IF9JbnNlcnRfeChfV2hlcmUsIF9Db3VudCk7DQogICAgICAgIF9Db3B5X3Vu
Y2hlY2tlZChfR2V0X3Vud3JhcHBlZChfRmlyc3QpLCBfR2V0X3Vud3JhcHBlZChfTGFzdCksIGJl
Z2luKCkgKyBzdGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KF9PZmYpKTsNCiAgICB9DQoNCiAg
ICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBfV2hlcmVfYXJnKSBub2V4Y2VwdCAgew0K
ICAgICAgICBpdGVyYXRvciBfV2hlcmUgICAgICA9IF9NYWtlX2l0ZXIoX1doZXJlX2FyZyk7DQog
ICAgICAgIGRpZmZlcmVuY2VfdHlwZSBfT2ZmID0gX1doZXJlIC0gYmVnaW4oKTsNCg0KDQoNCg0K
DQoNCiNsaW5lIDI3MDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcdmVjdG9yIg0KICAgICAgICA6OnN0ZDo6IGNvcHkoX05leHRfaXRlcihfV2hlcmUp
LCBlbmQoKSwgX1doZXJlKTsNCiNsaW5lIDI3MDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KDQogICAgICAgIF9UcmltKHRoaXMtPl9N
eXNpemUgLSAxKTsNCiAgICAgICAgcmV0dXJuIGJlZ2luKCkgKyBfT2ZmOw0KICAgIH0NCg0KICAg
IGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIF9GaXJzdF9hcmcsIGNvbnN0X2l0ZXJhdG9y
IF9MYXN0X2FyZykgbm9leGNlcHQgIHsNCiAgICAgICAgaXRlcmF0b3IgX0ZpcnN0ICAgICAgPSBf
TWFrZV9pdGVyKF9GaXJzdF9hcmcpOw0KICAgICAgICBpdGVyYXRvciBfTGFzdCAgICAgICA9IF9N
YWtlX2l0ZXIoX0xhc3RfYXJnKTsNCiAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9PZmYgPSBfRmly
c3QgLSBiZWdpbigpOw0KDQogICAgICAgIGlmIChfRmlyc3QgIT0gX0xhc3QpIHsgDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDI3MjMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcdmVjdG9yIg0KICAgICAgICAgICAgaXRlcmF0b3IgX05leHQgPSA6OnN0ZDo6
IGNvcHkoX0xhc3QsIGVuZCgpLCBfRmlyc3QpOw0KICAgICAgICAgICAgX1RyaW0oc3RhdGljX2Nh
c3Q8c2l6ZV90eXBlPihfTmV4dCAtIGJlZ2luKCkpKTsNCiNsaW5lIDI3MjYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KICAgICAgICB9
DQogICAgICAgIHJldHVybiBiZWdpbigpICsgX09mZjsNCiAgICB9DQoNCiAgICB2b2lkIGNsZWFy
KCkgbm9leGNlcHQgew0KICAgICAgICB0aGlzLT5fT3JwaGFuX2FsbCgpOw0KICAgICAgICB0aGlz
LT5fTXl2ZWMuY2xlYXIoKTsNCiAgICAgICAgdGhpcy0+X015c2l6ZSA9IDA7DQogICAgfQ0KDQog
ICAgdm9pZCBmbGlwKCkgbm9leGNlcHQgeyANCiAgICAgICAgZm9yIChhdXRvJiBfRWxlbSA6IHRo
aXMtPl9NeXZlYykgew0KICAgICAgICAgICAgX0VsZW0gPSB+X0VsZW07DQogICAgICAgIH0NCg0K
ICAgICAgICBfVHJpbSh0aGlzLT5fTXlzaXplKTsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAodmVj
dG9yJiBfUmlnaHQpIG5vZXhjZXB0ICB7DQogICAgICAgIGlmICh0aGlzICE9IDo6c3RkOjogYWRk
cmVzc29mKF9SaWdodCkpIHsNCiAgICAgICAgICAgIHRoaXMtPl9Td2FwX3Byb3h5X2FuZF9pdGVy
YXRvcnMoX1JpZ2h0KTsNCiAgICAgICAgICAgIHRoaXMtPl9NeXZlYy5zd2FwKF9SaWdodC5fTXl2
ZWMpOw0KICAgICAgICAgICAgOjpzdGQ6OiBzd2FwKHRoaXMtPl9NeXNpemUsIF9SaWdodC5fTXlz
aXplKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHN0YXRpYyB2b2lkIHN3YXAocmVmZXJlbmNl
IF9MZWZ0LCByZWZlcmVuY2UgX1JpZ2h0KSBub2V4Y2VwdCB7DQogICAgICAgIGJvb2wgX1ZhbCA9
IF9MZWZ0OyANCiAgICAgICAgX0xlZnQgICAgID0gX1JpZ2h0Ow0KICAgICAgICBfUmlnaHQgICAg
PSBfVmFsOw0KICAgIH0NCg0KICAgIGZyaWVuZCBoYXNoPHZlY3Rvcjxib29sLCBfQWxsb2M+PjsN
Cg0KICAgIGl0ZXJhdG9yIF9JbnNlcnRfbihjb25zdF9pdGVyYXRvciBfV2hlcmUsIHNpemVfdHlw
ZSBfQ291bnQsIGNvbnN0IGJvb2wmIF9WYWwpIHsNCiAgICAgICAgc2l6ZV90eXBlIF9PZmYgICAg
ID0gX0luc2VydF94KF9XaGVyZSwgX0NvdW50KTsNCiAgICAgICAgY29uc3QgYXV0byBfUmVzdWx0
ID0gYmVnaW4oKSArIHN0YXRpY19jYXN0PGRpZmZlcmVuY2VfdHlwZT4oX09mZik7DQogICAgICAg
IDo6c3RkOjogZmlsbChfUmVzdWx0LCBfUmVzdWx0ICsgc3RhdGljX2Nhc3Q8ZGlmZmVyZW5jZV90
eXBlPihfQ291bnQpLCBfVmFsKTsNCiAgICAgICAgcmV0dXJuIF9SZXN1bHQ7DQogICAgfQ0KDQog
ICAgc2l6ZV90eXBlIF9JbnNlcnRfeChjb25zdF9pdGVyYXRvciBfV2hlcmUsIHNpemVfdHlwZSBf
Q291bnQpIHsNCiAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9PZmYgPSBfV2hlcmUgLSBiZWdpbigp
Ow0KDQoNCg0KDQojbGluZSAyNzc0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0KICAgICAgICBpZiAoX0NvdW50ICE9IDApIHsNCiAg
ICAgICAgICAgIGlmIChtYXhfc2l6ZSgpIC0gc2l6ZSgpIDwgX0NvdW50KSB7DQogICAgICAgICAg
ICAgICAgX1hsZW4oKTsgDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgdGhpcy0+X015dmVjLnJlc2l6ZSh0aGlzLT5fTncoc2l6ZSgpICsgX0NvdW50KSwgMCk7DQog
ICAgICAgICAgICBpZiAoZW1wdHkoKSkgew0KICAgICAgICAgICAgICAgIHRoaXMtPl9NeXNpemUg
Kz0gX0NvdW50Ow0KICAgICAgICAgICAgfSBlbHNlIHsgDQogICAgICAgICAgICAgICAgaXRlcmF0
b3IgX09sZGVuZCA9IGVuZCgpOw0KICAgICAgICAgICAgICAgIHRoaXMtPl9NeXNpemUgKz0gX0Nv
dW50Ow0KICAgICAgICAgICAgICAgIDo6c3RkOjogY29weV9iYWNrd2FyZChiZWdpbigpICsgX09m
ZiwgX09sZGVuZCwgZW5kKCkpOw0KICAgICAgICAgICAgfQ0KDQoNCg0KI2xpbmUgMjc5MyAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx2ZWN0b3IiDQog
ICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfT2ZmKTsN
CiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI4MTcg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9y
Ig0KICAgIHZvaWQgX09ycGhhbl9yYW5nZShzaXplX3R5cGUsIHNpemVfdHlwZSkgY29uc3Qge30N
CiNsaW5lIDI4MTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5j
bHVkZVxcdmVjdG9yIg0KDQogICAgdm9pZCBfVHJpbShzaXplX3R5cGUgX1NpemUpIHsNCiAgICAg
ICAgaWYgKG1heF9zaXplKCkgPCBfU2l6ZSkgew0KICAgICAgICAgICAgX1hsZW4oKTsgDQogICAg
ICAgIH0NCg0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX1dvcmRzID0gdGhpcy0+X053KF9TaXpl
KTsNCiAgICAgICAgaWYgKF9Xb3JkcyA8IHRoaXMtPl9NeXZlYy5zaXplKCkpIHsNCiAgICAgICAg
ICAgIHRoaXMtPl9NeXZlYy5lcmFzZSh0aGlzLT5fTXl2ZWMuYmVnaW4oKSArIHN0YXRpY19jYXN0
PGRpZmZlcmVuY2VfdHlwZT4oX1dvcmRzKSwgdGhpcy0+X015dmVjLmVuZCgpKTsNCiAgICAgICAg
fQ0KDQogICAgICAgIHRoaXMtPl9NeXNpemUgPSBfU2l6ZTsNCiAgICAgICAgX1NpemUgJT0gX1ZC
SVRTOw0KICAgICAgICBpZiAoMCA8IF9TaXplKSB7DQogICAgICAgICAgICB0aGlzLT5fTXl2ZWNb
X1dvcmRzIC0gMV0gJj0gKHN0YXRpY19jYXN0PF9WYmFzZT4oMSkgPDwgX1NpemUpIC0gMTsNCiAg
ICAgICAgfQ0KICAgIH0NCg0KICAgIFtbbm9yZXR1cm5dXSB2b2lkIF9YbGVuKCkgY29uc3Qgew0K
ICAgICAgICBfWGxlbmd0aF9lcnJvcigidmVjdG9yPGJvb2w+IHRvbyBsb25nIik7DQogICAgfQ0K
DQogICAgW1tub3JldHVybl1dIHZvaWQgX1hyYW4oKSBjb25zdCB7DQogICAgICAgIF9Yb3V0X29m
X3JhbmdlKCJpbnZhbGlkIHZlY3Rvcjxib29sPiBzdWJzY3JpcHQiKTsNCiAgICB9DQp9Ow0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPT0oY29u
c3QgdmVjdG9yPGJvb2wsIF9BbGxvYz4mIF9MZWZ0LCBjb25zdCB2ZWN0b3I8Ym9vbCwgX0FsbG9j
PiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuIF9MZWZ0LnNpemUoKSA9PSBfUmlnaHQuc2l6ZSgpICYm
IF9MZWZ0Ll9NeXZlYyA9PSBfUmlnaHQuX015dmVjOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Fs
bG9jPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yIT0oY29uc3QgdmVjdG9yPGJvb2wsIF9B
bGxvYz4mIF9MZWZ0LCBjb25zdCB2ZWN0b3I8Ym9vbCwgX0FsbG9jPiYgX1JpZ2h0KSB7DQogICAg
cmV0dXJuICEoX0xlZnQgPT0gX1JpZ2h0KTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9j
Pg0Kc3RydWN0IGhhc2g8dmVjdG9yPGJvb2wsIF9BbGxvYz4+IHsNCiAgICBbW2RlcHJlY2F0ZWQo
ICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBh
cmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5
cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9T
SUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBf
U0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhh
dCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIHZlY3Rvcjxib29s
LCBfQWxsb2M+IGFyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0
MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwg
Zmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFy
ZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19B
REFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NY
WDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVj
ZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBzaXplX3QgcmVzdWx0X3R5cGU7DQoNCiAg
ICBbW25vZGlzY2FyZF1dIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IHZlY3Rvcjxib29sLCBfQWxs
b2M+JiBfS2V5dmFsKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfSGFzaF9hcnJh
eV9yZXByZXNlbnRhdGlvbihfS2V5dmFsLl9NeXZlYy5kYXRhKCksIF9LZXl2YWwuX015dmVjLnNp
emUoKSk7DQogICAgfQ0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyODc4ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCg0K
DQpuYW1lc3BhY2UgcG1yIHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KICAgIHVzaW5nIHZl
Y3RvciA9IDo6c3RkOjogdmVjdG9yPF9UeSwgcG9seW1vcnBoaWNfYWxsb2NhdG9yPF9UeT4+Ow0K
fSANCiNsaW5lIDI4ODUgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcdmVjdG9yIg0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEg
cGFjayhwb3ApDQojbGluZSAyODkyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHZlY3RvciINCiNsaW5lIDI4OTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdmVjdG9yIg0KI2xpbmUgMTcgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2giDQojbGluZSAx
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhiaXRf
b3BzLmgiDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcGFj
ayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODgg
NDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUw
MjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KW1tu
b2Rpc2NhcmRdXSBpbmxpbmUgdW5zaWduZWQgbG9uZyBfRmxvb3Jfb2ZfbG9nXzIoc2l6ZV90IF9W
YWx1ZSkgbm9leGNlcHQgeyANCiAgICBfVmFsdWUgfD0gc2l6ZV90ezF9OyANCiAgICB1bnNpZ25l
ZCBsb25nIF9SZXN1bHQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIF9CaXRTY2Fu
UmV2ZXJzZTY0KCZfUmVzdWx0LCBfVmFsdWUpOw0KDQoNCiNsaW5lIDQ0ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhiaXRfb3BzLmgiDQojbGluZSA0
NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4Yml0
X29wcy5oIg0KDQogICAgcmV0dXJuIF9SZXN1bHQ7DQp9DQoNCltbbm9kaXNjYXJkXV0gaW5saW5l
IHVuc2lnbmVkIGxvbmcgX0NlaWxpbmdfb2ZfbG9nXzIoY29uc3Qgc2l6ZV90IF9WYWx1ZSkgbm9l
eGNlcHQgeyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICByZXR1cm4gMSArIF9GbG9v
cl9vZl9sb2dfMihfVmFsdWUgLSAxKTsNCn0NCg0KfQ0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSA2MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4Yml0X29wcy5oIg0KI2xpbmUgNjIgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGJpdF9vcHMuaCINCiNs
aW5lIDE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9c
XDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVc
XHhoYXNoIg0KDQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx4bm9kZV9oYW5kbGUuaCINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4bm9kZV9oYW5kbGUuaCINCg0KI3ByYWdtYSBwYWNrKHB1c2gs
IDgpDQojcHJhZ21hIHdhcm5pbmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDog
NDE4MCA0NDEyIDQ0NTUgNDQ5NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2
MjMgNDYyNSA0NjI2IDQ2NDMgNDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1
IDYyOTQgNDU3NyAgNTA1MyApDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0l0ZXJhdG9yLCBjbGFzcyBfTm9kZVR5cGU+DQpzdHJ1Y3QgX0luc2VydF9yZXR1cm5f
dHlwZSB7DQogICAgX0l0ZXJhdG9yIHBvc2l0aW9uOw0KICAgIGJvb2wgaW5zZXJ0ZWQ7DQogICAg
X05vZGVUeXBlIG5vZGU7DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRGVyaXZlZF90eXBlLCBj
bGFzcyBfS2V5VHksIGNsYXNzIF9WYWx1ZVR5Pg0Kc3RydWN0IF9Ob2RlX2hhbmRsZV9tYXBfYmFz
ZSB7IA0KICAgIHVzaW5nIGtleV90eXBlICAgID0gX0tleVR5Ow0KICAgIHVzaW5nIG1hcHBlZF90
eXBlID0gX1ZhbHVlVHk7DQoNCiAgICBrZXlfdHlwZSYga2V5KCkgY29uc3Qgbm9leGNlcHQgIHsN
CiAgICAgICAgcmV0dXJuIF9EYXR1bSgpLmZpcnN0Ow0KICAgIH0NCiAgICBtYXBwZWRfdHlwZSYg
bWFwcGVkKCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgcmV0dXJuIF9EYXR1bSgpLnNlY29u
ZDsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdXNpbmcgX1BhaXJfdHlwZSA9IHBhaXI8a2V5X3R5
cGUsIG1hcHBlZF90eXBlPjsNCiAgICBfUGFpcl90eXBlJiBfRGF0dW0oKSBjb25zdCB7DQogICAg
ICAgIGNvbnN0IGF1dG8mIF9TZWxmID0gc3RhdGljX2Nhc3Q8Y29uc3QgX0Rlcml2ZWRfdHlwZSY+
KCp0aGlzKTsNCiAgICAgICAgYXV0byYgX0RhdGEgICAgICAgPSBfU2VsZi5fR2V0cHRyKCktPl9N
eXZhbDsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxfUGFpcl90eXBlJj4oX0RhdGEpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfRGVy
aXZlZF90eXBlLCBjbGFzcyBfVmFsdWVUeT4NCnN0cnVjdCBfTm9kZV9oYW5kbGVfc2V0X2Jhc2Ug
eyANCiAgICB1c2luZyB2YWx1ZV90eXBlID0gX1ZhbHVlVHk7DQoNCiAgICB2YWx1ZV90eXBlJiB2
YWx1ZSgpIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAgIGNvbnN0IGF1dG8mIF9TZWxmID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgX0Rlcml2ZWRfdHlwZSY+KCp0aGlzKTsNCiAgICAgICAgcmV0dXJuIF9T
ZWxmLl9HZXRwdHIoKS0+X015dmFsOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfTm9k
ZSwgY2xhc3MgX0FsbG9jLCB0ZW1wbGF0ZSA8Y2xhc3MuLi4+IGNsYXNzIF9CYXNlLCBjbGFzcy4u
LiBfVHlwZXM+DQpjbGFzcyBfTm9kZV9oYW5kbGUgOiBwdWJsaWMgX0Jhc2U8X05vZGVfaGFuZGxl
PF9Ob2RlLCBfQWxsb2MsIF9CYXNlLCBfVHlwZXMuLi4+LCBfVHlwZXMuLi4+IHsNCiAgICANCnB1
YmxpYzoNCiAgICB1c2luZyBhbGxvY2F0b3JfdHlwZSA9IF9BbGxvYzsNCg0KcHJpdmF0ZToNCiAg
ICB1c2luZyBfQWx0eV90cmFpdHMgICA9IGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPjsNCiAgICB1
c2luZyBfQWxub2RlICAgICAgICA9IF9SZWJpbmRfYWxsb2NfdDxfQWxsb2MsIF9Ob2RlPjsNCiAg
ICB1c2luZyBfQWxub2RlX3RyYWl0cyA9IGFsbG9jYXRvcl90cmFpdHM8X0Fsbm9kZT47DQogICAg
dXNpbmcgX05vZGVwdHIgICAgICAgPSB0eXBlbmFtZSBfQWxub2RlX3RyYWl0czo6cG9pbnRlcjsN
Cg0KICAgIF9Ob2RlcHRyIF9QdHJ7fTsNCiAgICBhbGlnbmVkX3VuaW9uX3Q8MCwgX0FsbG9jPiBf
QWxsb2Nfc3RvcmFnZTsgDQoNCiAgICB2b2lkIF9DbGVhcigpIG5vZXhjZXB0IHsgDQogICAgICAg
IGlmIChfUHRyKSB7DQogICAgICAgICAgICBfQWxsb2MmIF9BbCA9IF9HZXRhbCgpOw0KICAgICAg
ICAgICAgX0Fsbm9kZSBfTm9kZV9hbGxvY3tfQWx9Ow0KICAgICAgICAgICAgX0Fsbm9kZV90cmFp
dHM6OmRlc3Ryb3koX05vZGVfYWxsb2MsIDo6c3RkOjogYWRkcmVzc29mKF9QdHItPl9NeXZhbCkp
Ow0KICAgICAgICAgICAgX05vZGU6Ol9GcmVlbm9kZTAoX05vZGVfYWxsb2MsIF9QdHIpOw0KICAg
ICAgICAgICAgX0Rlc3Ryb3lfaW5fcGxhY2UoX0FsKTsNCiAgICAgICAgICAgIF9QdHIgPSBudWxs
cHRyOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgX05vZGVfaGFuZGxlKGNvbnN0IF9Ob2RlcHRy
IF9NeV9wdHIsIGNvbnN0IF9BbGxvYyYgX015X2FsbG9jKSBub2V4Y2VwdA0KICAgICAgICA6IF9Q
dHJ7X015X3B0cn0geyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgICAgICAgIA0KICAgICAgICBfQ29uc3RydWN0X2luX3BsYWNlKF9HZXRhbCgpLCBfTXlf
YWxsb2MpOw0KICAgIH0NCg0KcHVibGljOg0KICAgIGNvbnN0ZXhwciBfTm9kZV9oYW5kbGUoKSBu
b2V4Y2VwdCA6IF9BbGxvY19zdG9yYWdle30ge30NCg0KICAgIH5fTm9kZV9oYW5kbGUoKSBub2V4
Y2VwdCB7DQogICAgICAgIF9DbGVhcigpOw0KICAgIH0NCg0KICAgIF9Ob2RlX2hhbmRsZShfTm9k
ZV9oYW5kbGUmJiBfVGhhdCkgbm9leGNlcHQgOiBfUHRye19UaGF0Ll9QdHJ9IHsgDQogICAgICAg
IGlmIChfUHRyKSB7DQogICAgICAgICAgICBfVGhhdC5fUHRyICAgICAgID0gbnVsbHB0cjsNCiAg
ICAgICAgICAgIF9BbGxvYyYgX1RoYXRfYWwgPSBfVGhhdC5fR2V0YWwoKTsNCiAgICAgICAgICAg
IF9Db25zdHJ1Y3RfaW5fcGxhY2UoX0dldGFsKCksIDo6c3RkOjogbW92ZShfVGhhdF9hbCkpOw0K
ICAgICAgICAgICAgX0Rlc3Ryb3lfaW5fcGxhY2UoX1RoYXRfYWwpOw0KICAgICAgICB9DQogICAg
fQ0KDQogICAgX05vZGVfaGFuZGxlJiBvcGVyYXRvcj0oX05vZGVfaGFuZGxlJiYgX1RoYXQpIG5v
ZXhjZXB0ICB7DQogICAgICAgIA0KICAgICAgICBpZiAoIV9QdHIpIHsNCiAgICAgICAgICAgIGlm
IChfVGhhdC5fUHRyKSB7DQogICAgICAgICAgICAgICAgX0FsbG9jJiBfVGhhdF9hbCA9IF9UaGF0
Ll9HZXRhbCgpOw0KICAgICAgICAgICAgICAgIF9Db25zdHJ1Y3RfaW5fcGxhY2UoX0dldGFsKCks
IDo6c3RkOjogbW92ZShfVGhhdF9hbCkpOw0KICAgICAgICAgICAgICAgIF9EZXN0cm95X2luX3Bs
YWNlKF9UaGF0X2FsKTsNCiAgICAgICAgICAgICAgICBfUHRyID0gOjpzdGQ6OiBleGNoYW5nZShf
VGhhdC5fUHRyLCBudWxscHRyKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFfVGhhdC5fUHRyIHx8IHRoaXMgPT0g
OjpzdGQ6OiBhZGRyZXNzb2YoX1RoYXQpKSB7DQogICAgICAgICAgICBfQ2xlYXIoKTsNCiAgICAg
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIF9BbGxvYyYgX0FsID0g
X0dldGFsKCk7DQogICAgICAgIF9BbG5vZGUgX05vZGVfYWxsb2N7X0FsfTsNCiAgICAgICAgX0Fs
bm9kZV90cmFpdHM6OmRlc3Ryb3koX05vZGVfYWxsb2MsIDo6c3RkOjogYWRkcmVzc29mKF9QdHIt
Pl9NeXZhbCkpOw0KICAgICAgICBfQWxub2RlX3RyYWl0czo6ZGVhbGxvY2F0ZShfTm9kZV9hbGxv
YywgX1B0ciwgMSk7DQoNCiAgICAgICAgX0FsbG9jJiBfVGhhdF9hbCA9IF9UaGF0Ll9HZXRhbCgp
Ow0KICAgICAgICBfUG9jbWEoX0FsLCBfVGhhdF9hbCk7DQogICAgICAgIF9EZXN0cm95X2luX3Bs
YWNlKF9UaGF0X2FsKTsNCg0KICAgICAgICBfUHRyID0gOjpzdGQ6OiBleGNoYW5nZShfVGhhdC5f
UHRyLCBudWxscHRyKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIF9Ob2Rl
cHRyIF9HZXRwdHIoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfUHRyOw0KICAg
IH0NCg0KICAgIF9BbGxvYyYgX0dldGFsKCkgbm9leGNlcHQgeyANCiAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8X0FsbG9jJj4oX0FsbG9jX3N0b3JhZ2UpOw0KICAgIH0NCiAgICBjb25z
dCBfQWxsb2MmIF9HZXRhbCgpIGNvbnN0IG5vZXhjZXB0IHsgDQogICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IF9BbGxvYyY+KF9BbGxvY19zdG9yYWdlKTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBub2V4
Y2VwdCAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9HZXRhbCgpOw0KICAgIH0NCg0KICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVy
biBfUHRyICE9IG51bGxwdHI7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBib29sIGVtcHR5
KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX1B0ciA9PSBudWxscHRyOw0KICAg
IH0NCg0KICAgIF9Ob2RlcHRyIF9SZWxlYXNlKCkgbm9leGNlcHQgeyANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIF9EZXN0cm95X2luX3BsYWNlKF9HZXRhbCgp
KTsNCiAgICAgICAgcmV0dXJuIDo6c3RkOjogZXhjaGFuZ2UoX1B0ciwgbnVsbHB0cik7DQogICAg
fQ0KDQogICAgdm9pZCBzd2FwKF9Ob2RlX2hhbmRsZSYgX1RoYXQpIG5vZXhjZXB0ICB7DQogICAg
ICAgIGlmIChfUHRyKSB7DQogICAgICAgICAgICBpZiAoX1RoYXQuX1B0cikgew0KICAgICAgICAg
ICAgICAgIF9Qb2NzKF9HZXRhbCgpLCBfVGhhdC5fR2V0YWwoKSk7DQogICAgICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgICAgIF9BbGxvYyYgX0FsID0gX0dldGFsKCk7DQogICAgICAgICAg
ICAgICAgX0NvbnN0cnVjdF9pbl9wbGFjZShfVGhhdC5fR2V0YWwoKSwgOjpzdGQ6OiBtb3ZlKF9B
bCkpOw0KICAgICAgICAgICAgICAgIF9EZXN0cm95X2luX3BsYWNlKF9BbCk7DQogICAgICAgICAg
ICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoIV9UaGF0Ll9QdHIpIHsNCiAg
ICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF9BbGxv
YyYgX1RoYXRfYWwgPSBfVGhhdC5fR2V0YWwoKTsNCiAgICAgICAgICAgIF9Db25zdHJ1Y3RfaW5f
cGxhY2UoX0dldGFsKCksIDo6c3RkOjogbW92ZShfVGhhdF9hbCkpOw0KICAgICAgICAgICAgX0Rl
c3Ryb3lfaW5fcGxhY2UoX1RoYXRfYWwpOw0KICAgICAgICB9DQogICAgICAgIF9Td2FwX2FkbChf
UHRyLCBfVGhhdC5fUHRyKTsNCiAgICB9DQogICAgZnJpZW5kIHZvaWQgc3dhcChfTm9kZV9oYW5k
bGUmIF9MZWZ0LCBfTm9kZV9oYW5kbGUmIF9SaWdodCkgbm9leGNlcHQgIHsNCiAgICAgICAgX0xl
ZnQuc3dhcChfUmlnaHQpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBfTm9kZV9oYW5kbGUgX01ha2Uo
Y29uc3QgX05vZGVwdHIgX1B0ciwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9BbCkgew0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICByZXR1cm4gX05vZGVfaGFuZGxle19QdHIs
IF9BbH07DQogICAgfQ0KfTsNCg0KfQ0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojcHJhZ21h
IHBhY2socG9wKQ0KI2xpbmUgMjE1ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHhub2RlX2hhbmRsZS5oIg0KI2xpbmUgMjE2ICJDOlxcUHJvZ3JhbSBG
aWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZD
XFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhub2RlX2hhbmRsZS5oIg0KI2xp
bmUgMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
eGhhc2giDQojbGluZSAyMyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1
YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAx
XFxpbmNsdWRlXFx4aGFzaCINCg0KI3ByYWdtYSBwYWNrKHB1c2gsIDgpDQojcHJhZ21hIHdhcm5p
bmcocHVzaCwgNCkNCiNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE4MCA0NDEyIDQ0NTUgNDQ5
NCA0NTE0IDQ1NzQgNDU4MiA0NTgzIDQ1ODcgNDU4OCA0NjE5IDQ2MjMgNDYyNSA0NjI2IDQ2NDMg
NDY0OCA0NzAyIDQ3OTMgNDgyMCA0OTg4IDUwMjYgNTAyNyA1MDQ1IDYyOTQgNDU3NyAgNTA1MyAp
DQoNCg0KDQoNCm5hbWVzcGFjZSBzdGRleHQgew0KICAgIHVzaW5nIDo6c3RkOjogYmFzaWNfc3Ry
aW5nOw0KICAgIHVzaW5nIDo6c3RkOjogbGVzczsNCiAgICB1c2luZyA6OnN0ZDo6IHNpemVfdDsN
Cg0KICAgIA0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9LdHk+DQogICAgW1tub2Rpc2NhcmRdXSBz
aXplX3QgaGFzaF92YWx1ZShjb25zdCBfS3R5JiBfS2V5dmFsKSBub2V4Y2VwdCB7DQogICAgICAg
IGlmIGNvbnN0ZXhwciAoOjpzdGQ6OiBpc19wb2ludGVyX3Y8X0t0eT4gfHwgOjpzdGQ6OiBpc19u
dWxsX3BvaW50ZXJfdjxfS3R5Pikgew0KICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8c2l6ZV90PihfS2V5dmFsKSBeIDB4ZGVhZGJlZWZ1Ow0KICAgICAgICB9IGVsc2Ugew0KICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX0tleXZhbCkgXiAweGRlYWRiZWVm
dTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDYyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIw
MTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHho
YXNoIg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9FbGVtLCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBf
QWxsb2M+DQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3QgaGFzaF92YWx1ZShjb25zdCBiYXNpY19z
dHJpbmc8X0VsZW0sIF9UcmFpdHMsIF9BbGxvYz4mIF9TdHIpIG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIDo6c3RkOjogX0hhc2hfYXJyYXlfcmVwcmVzZW50YXRpb24oX1N0ci5jX3N0cigpLCBf
U3RyLnNpemUoKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpbmxpbmUgc2l6ZV90IGhh
c2hfdmFsdWUoICBjb25zdCBjaGFyKiBfU3RyKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiA6
OnN0ZDo6IF9IYXNoX2FycmF5X3JlcHJlc2VudGF0aW9uKF9TdHIsIDo6IHN0cmxlbihfU3RyKSk7
DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpbmxpbmUgc2l6ZV90IGhhc2hfdmFsdWUoICBj
b25zdCB3Y2hhcl90KiBfU3RyKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiA6OnN0ZDo6IF9I
YXNoX2FycmF5X3JlcHJlc2VudGF0aW9uKF9TdHIsIDo6IHdjc2xlbihfU3RyKSk7DQogICAgfQ0K
DQogICAgDQogICAgdGVtcGxhdGUgPGNsYXNzIF9LdHksIGNsYXNzIF9QciA9IGxlc3M8X0t0eT4+
DQogICAgY2xhc3MgaGFzaF9jb21wYXJlIHsgDQogICAgcHVibGljOg0KICAgICAgICBlbnVtIHsg
DQogICAgICAgICAgICBidWNrZXRfc2l6ZSA9IDEgDQogICAgICAgIH07DQoNCiAgICAgICAgaGFz
aF9jb21wYXJlKCkgPSBkZWZhdWx0Ow0KICAgICAgICBoYXNoX2NvbXBhcmUoY29uc3QgX1ByJiBf
UHJlZCkgbm9leGNlcHQoOjpzdGQ6OiBpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZV92PF9Q
cj4pIDogY29tcChfUHJlZCkge30NCg0KICAgICAgICBbW25vZGlzY2FyZF1dIHNpemVfdCBvcGVy
YXRvcigpKGNvbnN0IF9LdHkmIF9LZXl2YWwpIGNvbnN0IG5vZXhjZXB0KG5vZXhjZXB0KGhhc2hf
dmFsdWUoX0tleXZhbCkpKSB7DQogICAgICAgICAgICBsb25nIF9RdW90ICAgPSBzdGF0aWNfY2Fz
dDxsb25nPihoYXNoX3ZhbHVlKF9LZXl2YWwpICYgMjE0NzQ4MzY0N0wpOyANCiAgICAgICAgICAg
IGxkaXZfdCBfUXJlbSA9IDo6IGxkaXYoX1F1b3QsIDEyNzc3Myk7DQoNCiAgICAgICAgICAgIF9R
cmVtLnJlbSA9IDE2ODA3ICogX1FyZW0ucmVtIC0gMjgzNiAqIF9RcmVtLnF1b3Q7DQogICAgICAg
ICAgICBpZiAoX1FyZW0ucmVtIDwgMCkgew0KICAgICAgICAgICAgICAgIF9RcmVtLnJlbSArPSAy
MTQ3NDgzNjQ3TDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHNpemVfdD4oX1FyZW0ucmVtKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFtbbm9kaXNjYXJk
XV0gYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9LdHkmIF9LZXl2YWwxLCBjb25zdCBfS3R5JiBfS2V5
dmFsMikgY29uc3QNCiAgICAgICAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KGNvbXAoX0tleXZhbDEs
IF9LZXl2YWwyKSkpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIGNvbXAoX0tl
eXZhbDEsIF9LZXl2YWwyKTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9QciBjb21we307IA0KICAg
IH07DQp9IA0KDQpuYW1lc3BhY2Ugc3RkIHsNCnVzaW5nIHN0ZGV4dDo6aGFzaF9jb21wYXJlOyAN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9LdHksIGNsYXNzIF9IYXNoZXIsIGNsYXNzIF9LZXllcSwgY2xh
c3MgPSB2b2lkPg0Kc3RydWN0IF9VaGFzaF9jaG9vc2VfdHJhbnNwYXJlbmN5IHsNCiAgICANCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3M+DQogICAgdXNpbmcgX0RlZHVjZV9rZXkgPSBjb25zdCBfS3R5JjsN
Cn07DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2giDQoNCnRlbXBsYXRlIDxjbGFzcyBfSGFz
aGVyLCBjbGFzcyBfS3R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9Ob3Rocm93X2hhc2ggPSBu
b2V4Y2VwdCgNCiAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KDo6c3RkOjogZGVjbHZhbDxjb25zdCBf
SGFzaGVyJj4oKSg6OnN0ZDo6IGRlY2x2YWw8Y29uc3QgX0t0eSY+KCkpKSk7DQoNCg0KdGVtcGxh
dGUgPGNsYXNzIF9LdHksIGNsYXNzIF9IYXNoZXIsIGNsYXNzIF9LZXllcT4NCmNsYXNzIF9VaGFz
aF9jb21wYXJlDQogICAgOiBwdWJsaWMgX1VoYXNoX2Nob29zZV90cmFuc3BhcmVuY3k8X0t0eSwg
X0hhc2hlciwgX0tleWVxPiB7IA0KcHVibGljOg0KICAgIGVudW0geyANCiAgICAgICAgYnVja2V0
X3NpemUgPSAxIA0KICAgIH07DQoNCiAgICBfVWhhc2hfY29tcGFyZSgpIG5vZXhjZXB0KA0KICAg
ICAgICBjb25qdW5jdGlvbl92PGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9IYXNo
ZXI+LCBpc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZTxfS2V5ZXE+PikNCiAgICAgICAg
OiBfTXlwYWlyKF9aZXJvX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIF9aZXJvX3RoZW5fdmFyaWFk
aWNfYXJnc190e30sIDAuMGYpIHt9DQoNCiAgICBleHBsaWNpdCBfVWhhc2hfY29tcGFyZShjb25z
dCBfSGFzaGVyJiBfSGFzaGFyZykgbm9leGNlcHQoDQogICAgICAgIGNvbmp1bmN0aW9uX3Y8aXNf
bm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8X0hhc2hlcj4sIGlzX25vdGhyb3dfZGVmYXVsdF9j
b25zdHJ1Y3RpYmxlPF9LZXllcT4+KQ0KICAgICAgICA6IF9NeXBhaXIoX09uZV90aGVuX3Zhcmlh
ZGljX2FyZ3NfdHt9LCBfSGFzaGFyZywgX1plcm9fdGhlbl92YXJpYWRpY19hcmdzX3R7fSwgMC4w
Zikge30NCg0KICAgIGV4cGxpY2l0IF9VaGFzaF9jb21wYXJlKGNvbnN0IF9IYXNoZXImIF9IYXNo
YXJnLCBjb25zdCBfS2V5ZXEmIF9LZXllcWFyZykgbm9leGNlcHQoDQogICAgICAgIGNvbmp1bmN0
aW9uX3Y8aXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8X0hhc2hlcj4sIGlzX25vdGhyb3df
Y29weV9jb25zdHJ1Y3RpYmxlPF9LZXllcT4+KQ0KICAgICAgICA6IF9NeXBhaXIoX09uZV90aGVu
X3ZhcmlhZGljX2FyZ3NfdHt9LCBfSGFzaGFyZywgX09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9
LCBfS2V5ZXFhcmcsIDAuMGYpIHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleXR5Pg0KICAg
IFtbbm9kaXNjYXJkXV0gc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgX0tleXR5JiBfS2V5dmFsKSBj
b25zdCBub2V4Y2VwdChfTm90aHJvd19oYXNoPF9IYXNoZXIsIF9LZXl0eT4pIHsNCiAgICAgICAg
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9NeXBhaXIuX0dldF9maXJzdCgp
KF9LZXl2YWwpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleXR5MSwgY2xhc3Mg
X0tleXR5Mj4NCiAgICBbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfS2V5dHkx
JiBfS2V5dmFsMSwgY29uc3QgX0tleXR5MiYgX0tleXZhbDIpIGNvbnN0DQogICAgICAgIG5vZXhj
ZXB0KF9Ob3Rocm93X2NvbXBhcmU8X0tleWVxLCBfS2V5dHkxLCBfS2V5dHkyPikgew0KICAgICAg
ICANCiAgICAgICAgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPihfTXlwYWlyLl9NeXZhbDIuX0dl
dF9maXJzdCgpKF9LZXl2YWwxLCBfS2V5dmFsMikpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gZmxvYXQmIF9HZXRfbWF4X2J1Y2tldF9zaXplKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gX015cGFpci5fTXl2YWwyLl9NeXZhbDI7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBj
b25zdCBmbG9hdCYgX0dldF9tYXhfYnVja2V0X3NpemUoKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBfTXlwYWlyLl9NeXZhbDIuX015dmFsMjsNCiAgICB9DQoNCiAgICB2b2lkIHN3
YXAoX1VoYXNoX2NvbXBhcmUmIF9SaHMpIG5vZXhjZXB0KA0KICAgICAgICBjb25qdW5jdGlvbl92
PF9Jc19ub3Rocm93X3N3YXBwYWJsZTxfSGFzaGVyPiwgX0lzX25vdGhyb3dfc3dhcHBhYmxlPF9L
ZXllcT4+KSB7DQogICAgICAgIF9Td2FwX2FkbChfTXlwYWlyLl9HZXRfZmlyc3QoKSwgX1Jocy5f
TXlwYWlyLl9HZXRfZmlyc3QoKSk7DQogICAgICAgIGF1dG8mIF9Mc2Vjb25kID0gX015cGFpci5f
TXl2YWwyOw0KICAgICAgICBhdXRvJiBfUnNlY29uZCA9IF9SaHMuX015cGFpci5fTXl2YWwyOw0K
ICAgICAgICBfU3dhcF9hZGwoX0xzZWNvbmQuX0dldF9maXJzdCgpLCBfUnNlY29uZC5fR2V0X2Zp
cnN0KCkpOw0KICAgICAgICA6OnN0ZDo6IHN3YXAoX0xzZWNvbmQuX015dmFsMiwgX1JzZWNvbmQu
X015dmFsMik7DQogICAgfQ0KDQogICAgX0NvbXByZXNzZWRfcGFpcjxfSGFzaGVyLCBfQ29tcHJl
c3NlZF9wYWlyPF9LZXllcSwgZmxvYXQ+PiBfTXlwYWlyOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0l0ZXIsIGNsYXNzIF9WYWw+DQpzdHJ1Y3QgX1JlaW50ZXJwcmV0X21vdmVfaXRlciB7DQog
ICAgX0l0ZXIgX0Jhc2U7DQoNCiAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IGlucHV0X2l0
ZXJhdG9yX3RhZzsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5cGU7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBl
ICAgPSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGU7DQog
ICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgPSBfVmFsJiY7DQogICAgDQoNCiAgICByZWZlcmVu
Y2Ugb3BlcmF0b3IqKCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cmVmZXJl
bmNlPihyZWludGVycHJldF9jYXN0PF9WYWwmPigqX0Jhc2UpKTsNCiAgICB9DQoNCiAgICBfUmVp
bnRlcnByZXRfbW92ZV9pdGVyJiBvcGVyYXRvcisrKCkgew0KICAgICAgICArK19CYXNlOw0KICAg
ICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgDQoNCg0KICAgIFtbbm9kaXNjYXJkXV0N
CiNsaW5lIDIxMiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4aGFzaCINCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9SZWludGVycHJl
dF9tb3ZlX2l0ZXImIF9MaHMsIGNvbnN0IF9SZWludGVycHJldF9tb3ZlX2l0ZXImIF9SaHMpIHsN
CiAgICAgICAgcmV0dXJuIF9MaHMuX0Jhc2UgPT0gX1Jocy5fQmFzZTsNCiAgICB9DQoNCg0KICAg
IFtbbm9kaXNjYXJkXV0NCiNsaW5lIDIxOSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFx4aGFzaCINCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IF9SZWludGVycHJldF9tb3ZlX2l0ZXImIF9MaHMsIGNvbnN0IF9SZWludGVycHJldF9tb3Zl
X2l0ZXImIF9SaHMpIHsNCiAgICAgICAgcmV0dXJuIF9MaHMuX0Jhc2UgIT0gX1Jocy5fQmFzZTsN
CiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQWxub2RlPg0Kc3RydWN0IF9MaXN0X2hl
YWRfY29uc3RydWN0X3B0ciB7DQogICAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIF9BbG5v
ZGU6OnZhbHVlX3R5cGU7DQogICAgc3RhdGljX2Fzc2VydChfSXNfc3BlY2lhbGl6YXRpb25fdjx2
YWx1ZV90eXBlLCBfTGlzdF9ub2RlPiwgIl9MaXN0X2hlYWRfY29uc3RydWN0X3B0ciBhbGxvY2F0
b3Igbm90IHJlYm91bmQiKTsNCiAgICB1c2luZyBfQWxub2RlX3RyYWl0cyA9IGFsbG9jYXRvcl90
cmFpdHM8X0Fsbm9kZT47DQogICAgdXNpbmcgcG9pbnRlciAgICAgICAgPSB0eXBlbmFtZSBfQWxu
b2RlX3RyYWl0czo6cG9pbnRlcjsNCiAgICBfQWxub2RlJiBfQWw7DQogICAgcG9pbnRlciBfTmV3
aGVhZDsNCg0KICAgIGV4cGxpY2l0IF9MaXN0X2hlYWRfY29uc3RydWN0X3B0cihfQWxub2RlJiBf
QWxfKSA6IF9BbChfQWxfKSwgX05ld2hlYWQodmFsdWVfdHlwZTo6X0J1eWhlYWRub2RlKF9BbCkp
IHt9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1ZhbF90eXBlcz4NCiAgICBfTGlzdF9oZWFkX2Nv
bnN0cnVjdF9wdHIoX0Fsbm9kZSYgX0FsXywgX0xpc3RfdmFsPF9WYWxfdHlwZXM+JiBfTXljb250
KQ0KICAgICAgICA6IF9BbChfQWxfKSwgX05ld2hlYWQodmFsdWVfdHlwZTo6X0J1eWhlYWRub2Rl
KF9BbCkpIHsNCiAgICAgICAgX015Y29udC5fTXloZWFkID0gX05ld2hlYWQ7DQogICAgfQ0KDQog
ICAgX0xpc3RfaGVhZF9jb25zdHJ1Y3RfcHRyKGNvbnN0IF9MaXN0X2hlYWRfY29uc3RydWN0X3B0
ciYpID0gZGVsZXRlOw0KICAgIF9MaXN0X2hlYWRfY29uc3RydWN0X3B0ciYgb3BlcmF0b3I9KGNv
bnN0IF9MaXN0X2hlYWRfY29uc3RydWN0X3B0ciYpID0gZGVsZXRlOw0KDQogICAgW1tub2Rpc2Nh
cmRdXSBwb2ludGVyIF9SZWxlYXNlKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gOjpzdGQ6
OiBleGNoYW5nZShfTmV3aGVhZCwgbnVsbHB0cik7DQogICAgfQ0KDQogICAgfl9MaXN0X2hlYWRf
Y29uc3RydWN0X3B0cigpIHsNCiAgICAgICAgaWYgKF9OZXdoZWFkKSB7DQogICAgICAgICAgICB2
YWx1ZV90eXBlOjpfRnJlZW5vZGUwKF9BbCwgX05ld2hlYWQpOw0KICAgICAgICB9DQogICAgfQ0K
fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9Ob2RlcHRyPg0Kc3RydWN0IF9IYXNoX2ZpbmRfbGFzdF9y
ZXN1bHQgew0KICAgIF9Ob2RlcHRyIF9JbnNlcnRfYmVmb3JlOw0KICAgIF9Ob2RlcHRyIF9EdXBs
aWNhdGU7DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0FsaXRlcj4NCnN0cnVjdCBfSGFzaF92ZWMg
ew0KICAgIA0KICAgIHVzaW5nIF9BbGl0ZXJfdHJhaXRzICAgID0gYWxsb2NhdG9yX3RyYWl0czxf
QWxpdGVyPjsNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICA9IHR5cGVuYW1lIF9BbGl0ZXI6
OnZhbHVlX3R5cGU7DQogICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgPSB0eXBlbmFtZSBfQWxp
dGVyX3RyYWl0czo6c2l6ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgID0gdHlw
ZW5hbWUgX0FsaXRlcl90cmFpdHM6OmRpZmZlcmVuY2VfdHlwZTsNCiAgICB1c2luZyBwb2ludGVy
ICAgICAgICAgICA9IHR5cGVuYW1lIF9BbGl0ZXJfdHJhaXRzOjpwb2ludGVyOw0KICAgIHVzaW5n
IF9BbGl0ZXJfc2NhcnlfdmFsID0gX1ZlY3Rvcl92YWw8Y29uZGl0aW9uYWxfdDxfSXNfc2ltcGxl
X2FsbG9jX3Y8X0FsaXRlcj4sIF9TaW1wbGVfdHlwZXM8dmFsdWVfdHlwZT4sDQogICAgICAgIF9W
ZWNfaXRlcl90eXBlczx2YWx1ZV90eXBlLCBzaXplX3R5cGUsIGRpZmZlcmVuY2VfdHlwZSwgcG9p
bnRlciwgdHlwZW5hbWUgX0FsaXRlcl90cmFpdHM6OmNvbnN0X3BvaW50ZXIsDQogICAgICAgICAg
ICB2YWx1ZV90eXBlJiwgY29uc3QgdmFsdWVfdHlwZSY+Pj47DQoNCiAgICBfSGFzaF92ZWMoKSA6
IF9NeXBhaXIoX1plcm9fdGhlbl92YXJpYWRpY19hcmdzX3R7fSkgew0KICAgICAgICBfTXlwYWly
Ll9NeXZhbDIuX0FsbG9jX3Byb3h5KF9GYWtlX2FsbG9jYXRvcigpKTsNCiAgICB9DQoNCiAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX0FueV9hbGxvYywgZW5hYmxlX2lmX3Q8IWlzX3NhbWVfdjxfUmVtb3Zl
X2N2cmVmX3Q8X0FueV9hbGxvYz4sIF9IYXNoX3ZlYz4sIGludD4gPSAwPg0KICAgIGV4cGxpY2l0
IF9IYXNoX3ZlYyhfQW55X2FsbG9jJiYgX0FsKSBub2V4Y2VwdA0KICAgICAgICA6IF9NeXBhaXIo
X09uZV90aGVuX3ZhcmlhZGljX2FyZ3NfdHt9LCA6OnN0ZDo6IGZvcndhcmQ8X0FueV9hbGxvYz4o
X0FsKSkgeyANCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9BbGxvY19wcm94eShfRmFrZV9hbGxv
Y2F0b3IoKSk7DQogICAgfQ0KDQogICAgX0hhc2hfdmVjKGNvbnN0IF9IYXNoX3ZlYyYpID0gZGVs
ZXRlOw0KICAgIF9IYXNoX3ZlYyYgb3BlcmF0b3I9KGNvbnN0IF9IYXNoX3ZlYyYpID0gZGVsZXRl
Ow0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX015cGFpci5fTXl2YWwyLl9N
eWxhc3QgLSBfTXlwYWlyLl9NeXZhbDIuX015Zmlyc3QpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gKDo6c3RkOjogbWluKShzdGF0aWNfY2FzdDxzaXplX3R5cGU+KChudW1lcmljX2xpbWl0czxk
aWZmZXJlbmNlX3R5cGU+OjptYXgpKCkpLA0KICAgICAgICAgICAgX0FsaXRlcl90cmFpdHM6Om1h
eF9zaXplKF9NeXBhaXIuX0dldF9maXJzdCgpKSk7DQogICAgfQ0KDQogICAgdm9pZCBfQXNzaWdu
X2dyb3coY29uc3Qgc2l6ZV90eXBlIF9DZWxscywgY29uc3QgdmFsdWVfdHlwZSBfVmFsKSB7DQog
ICAgICAgIA0KICAgICAgICBjb25zdCBhdXRvIF9PbGRzaXplID0gc2l6ZSgpOw0KICAgICAgICA7
DQogICAgICAgIGF1dG8mIF9BbHZlYyA9IF9NeXBhaXIuX0dldF9maXJzdCgpOw0KICAgICAgICBp
ZiAoX09sZHNpemUgPCBfQ2VsbHMpIHsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX05ld3ZlYyA9
IF9BbHZlYy5hbGxvY2F0ZShfQ2VsbHMpOyANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYg
KF9PbGRzaXplICE9IDApIHsNCiAgICAgICAgICAgICAgICBfRGVzdHJveV9yYW5nZShfTXlwYWly
Ll9NeXZhbDIuX015Zmlyc3QsIF9NeXBhaXIuX015dmFsMi5fTXlsYXN0KTsNCiAgICAgICAgICAg
ICAgICBfQWx2ZWMuZGVhbGxvY2F0ZShfTXlwYWlyLl9NeXZhbDIuX015Zmlyc3QsIF9PbGRzaXpl
KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeWZpcnN0
ID0gX05ld3ZlYzsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX05ld2VuZCAgICAgICA9IF9OZXd2
ZWMgKyBfQ2VsbHM7DQogICAgICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015bGFzdCAgPSBfTmV3
ZW5kOw0KICAgICAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeWVuZCAgID0gX05ld2VuZDsNCiAg
ICAgICAgICAgIDo6c3RkOjogdW5pbml0aWFsaXplZF9maWxsKF9OZXd2ZWMsIF9OZXdlbmQsIF9W
YWwpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgOjpzdGQ6OiBmaWxsKF9NeXBhaXIu
X015dmFsMi5fTXlmaXJzdCwgX015cGFpci5fTXl2YWwyLl9NeWxhc3QsIF9WYWwpOw0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgdm9pZCBfVGlkeSgpIG5vZXhjZXB0IHsNCiAgICAgICAgX0Rlc3Ry
b3lfcmFuZ2UoX015cGFpci5fTXl2YWwyLl9NeWZpcnN0LCBfTXlwYWlyLl9NeXZhbDIuX015bGFz
dCk7DQogICAgICAgIF9NeXBhaXIuX0dldF9maXJzdCgpLmRlYWxsb2NhdGUoX015cGFpci5fTXl2
YWwyLl9NeWZpcnN0LCBzaXplKCkpOw0KICAgICAgICBfTXlwYWlyLl9NeXZhbDIuX015Zmlyc3Qg
PSBwb2ludGVyKCk7DQogICAgICAgIF9NeXBhaXIuX015dmFsMi5fTXlsYXN0ICA9IHBvaW50ZXIo
KTsNCiAgICAgICAgX015cGFpci5fTXl2YWwyLl9NeWVuZCAgID0gcG9pbnRlcigpOw0KICAgIH0N
Cg0KICAgIH5fSGFzaF92ZWMoKSB7DQogICAgICAgIF9UaWR5KCk7DQoNCg0KDQojbGluZSAzMzMg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2gi
DQogICAgfQ0KDQogICAgX0NvbXByZXNzZWRfcGFpcjxfQWxpdGVyLCBfQWxpdGVyX3NjYXJ5X3Zh
bD4gX015cGFpcjsNCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpjbGFzcyBfSGFz
aCB7IA0KcHJvdGVjdGVkOg0KICAgIHVzaW5nIF9NeWxpc3QgICAgICAgICAgICAgPSBsaXN0PHR5
cGVuYW1lIF9UcmFpdHM6OnZhbHVlX3R5cGUsIHR5cGVuYW1lIF9UcmFpdHM6OmFsbG9jYXRvcl90
eXBlPjsNCiAgICB1c2luZyBfQWxub2RlICAgICAgICAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6
X0Fsbm9kZTsNCiAgICB1c2luZyBfQWxub2RlX3RyYWl0cyAgICAgID0gdHlwZW5hbWUgX015bGlz
dDo6X0Fsbm9kZV90cmFpdHM7DQogICAgdXNpbmcgX05vZGUgICAgICAgICAgICAgICA9IHR5cGVu
YW1lIF9NeWxpc3Q6Ol9Ob2RlOw0KICAgIHVzaW5nIF9Ob2RlcHRyICAgICAgICAgICAgPSB0eXBl
bmFtZSBfTXlsaXN0OjpfTm9kZXB0cjsNCiAgICB1c2luZyBfTXV0YWJsZV92YWx1ZV90eXBlID0g
dHlwZW5hbWUgX1RyYWl0czo6X011dGFibGVfdmFsdWVfdHlwZTsNCg0KICAgIHVzaW5nIF9LZXlf
Y29tcGFyZSAgID0gdHlwZW5hbWUgX1RyYWl0czo6a2V5X2NvbXBhcmU7DQogICAgdXNpbmcgX1Zh
bHVlX2NvbXBhcmUgPSB0eXBlbmFtZSBfVHJhaXRzOjp2YWx1ZV9jb21wYXJlOw0KDQpwdWJsaWM6
DQogICAgdXNpbmcga2V5X3R5cGUgPSB0eXBlbmFtZSBfVHJhaXRzOjprZXlfdHlwZTsNCg0KICAg
IHVzaW5nIHZhbHVlX3R5cGUgICAgICA9IHR5cGVuYW1lIF9NeWxpc3Q6OnZhbHVlX3R5cGU7DQog
ICAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgID0gdHlwZW5hbWUgX015bGlzdDo6YWxsb2NhdG9yX3R5
cGU7DQogICAgdXNpbmcgc2l6ZV90eXBlICAgICAgID0gdHlwZW5hbWUgX015bGlzdDo6c2l6ZV90
eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIF9NeWxpc3Q6OmRpZmZl
cmVuY2VfdHlwZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSB0eXBlbmFtZSBfTXlsaXN0
Ojpwb2ludGVyOw0KICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgICA9IHR5cGVuYW1lIF9NeWxpc3Q6
OmNvbnN0X3BvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgID0gdmFsdWVfdHlwZSY7
DQogICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3QgdmFsdWVfdHlwZSY7DQoNCiAgICB1
c2luZyBpdGVyYXRvciA9DQogICAgICAgIGNvbmRpdGlvbmFsX3Q8aXNfc2FtZV92PGtleV90eXBl
LCB2YWx1ZV90eXBlPiwgdHlwZW5hbWUgX015bGlzdDo6Y29uc3RfaXRlcmF0b3IsIHR5cGVuYW1l
IF9NeWxpc3Q6Oml0ZXJhdG9yPjsNCiAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHR5cGVuYW1l
IF9NeWxpc3Q6OmNvbnN0X2l0ZXJhdG9yOw0KDQogICAgdXNpbmcgX1VuY2hlY2tlZF9pdGVyYXRv
ciAgICAgICA9IGNvbmRpdGlvbmFsX3Q8aXNfc2FtZV92PGtleV90eXBlLCB2YWx1ZV90eXBlPiwN
CiAgICAgICAgdHlwZW5hbWUgX015bGlzdDo6X1VuY2hlY2tlZF9jb25zdF9pdGVyYXRvciwgdHlw
ZW5hbWUgX015bGlzdDo6X1VuY2hlY2tlZF9pdGVyYXRvcj47DQogICAgdXNpbmcgX1VuY2hlY2tl
ZF9jb25zdF9pdGVyYXRvciA9IHR5cGVuYW1lIF9NeWxpc3Q6Ol9VbmNoZWNrZWRfY29uc3RfaXRl
cmF0b3I7DQoNCiAgICB1c2luZyBfQWxpdGVyID0gX1JlYmluZF9hbGxvY190PF9BbG5vZGUsIF9V
bmNoZWNrZWRfaXRlcmF0b3I+Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgX0J1
Y2tldF9zaXplID0gX0tleV9jb21wYXJlOjpidWNrZXRfc2l6ZTsNCiAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdHlwZSBfTWluX2J1Y2tldHMgPSA4OyANCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgX011bHRpICAgICAgICAgICAgPSBfVHJhaXRzOjpfTXVsdGk7DQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDM4NSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFx4aGFzaCINCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHJhaXRzVD4NCiAgICBmcmllbmQgYm9v
bCBfSGFzaF9lcXVhbChjb25zdCBfSGFzaDxfVHJhaXRzVD4mIF9MZWZ0LCBjb25zdCBfSGFzaDxf
VHJhaXRzVD4mIF9SaWdodCk7DQoNCnByb3RlY3RlZDoNCiAgICBfSGFzaChjb25zdCBfS2V5X2Nv
bXBhcmUmIF9QYXJnLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX0FsKQ0KICAgICAgICA6IF9UcmFp
dHNvYmooX1BhcmcpLCBfTGlzdChfQWwpLCBfVmVjKF9BbCksIF9NYXNrKF9NaW5fYnVja2V0cyAt
IDEpLCBfTWF4aWR4KF9NaW5fYnVja2V0cykgew0KICAgICAgICANCiAgICAgICAgX01heF9idWNr
ZXRfc2l6ZSgpID0gX0J1Y2tldF9zaXplOw0KICAgICAgICBfVmVjLl9Bc3NpZ25fZ3JvdyhfTWlu
X2J1Y2tldHMgKiAyLCBfTGlzdC5fVW5jaGVja2VkX2VuZCgpKTsNCg0KDQoNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0FueV9hbGxvYz4NCiAgICBfSGFzaChjb25zdCBfSGFzaCYgX1Jp
Z2h0LCBjb25zdCBfQW55X2FsbG9jJiBfQWwpDQogICAgICAgIDogX1RyYWl0c29iaihfUmlnaHQu
X1RyYWl0c29iaiksIF9MaXN0KHN0YXRpY19jYXN0PGFsbG9jYXRvcl90eXBlPihfQWwpKSwgX1Zl
YyhfQWwpLCBfTWFzayhfUmlnaHQuX01hc2spLA0KICAgICAgICAgIF9NYXhpZHgoX1JpZ2h0Ll9N
YXhpZHgpIHsNCiAgICAgICAgDQogICAgICAgIF9WZWMuX0Fzc2lnbl9ncm93KF9SaWdodC5fVmVj
LnNpemUoKSwgX0xpc3QuX1VuY2hlY2tlZF9lbmQoKSk7DQogICAgICAgIGluc2VydChfUmlnaHQu
X1VuY2hlY2tlZF9iZWdpbigpLCBfUmlnaHQuX1VuY2hlY2tlZF9lbmQoKSk7DQoNCg0KDQoNCiAg
ICB9DQoNCiAgICBfSGFzaChfSGFzaCYmIF9SaWdodCkNCiAgICAgICAgOiBfVHJhaXRzb2JqKF9S
aWdodC5fVHJhaXRzb2JqKSwgX0xpc3QoX01vdmVfYWxsb2NhdG9yX3RhZ3t9LCBfUmlnaHQuX0xp
c3QuX0dldGFsKCkpLA0KICAgICAgICAgIF9WZWMoOjpzdGQ6OiBtb3ZlKF9SaWdodC5fVmVjLl9N
eXBhaXIuX0dldF9maXJzdCgpKSkgew0KICAgICAgICBfVmVjLl9Bc3NpZ25fZ3JvdyhfTWluX2J1
Y2tldHMgKiAyLCBfVW5jaGVja2VkX2VuZCgpKTsNCiAgICAgICAgX0xpc3QuX1N3YXBfdmFsKF9S
aWdodC5fTGlzdCk7DQogICAgICAgIF9WZWMuX015cGFpci5fTXl2YWwyLl9Td2FwX3ZhbChfUmln
aHQuX1ZlYy5fTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICBfTWFzayAgID0gOjpzdGQ6OiBleGNo
YW5nZShfUmlnaHQuX01hc2ssIF9NaW5fYnVja2V0cyAtIDEpOw0KICAgICAgICBfTWF4aWR4ID0g
OjpzdGQ6OiBleGNoYW5nZShfUmlnaHQuX01heGlkeCwgX01pbl9idWNrZXRzKTsNCg0KDQoNCg0K
ICAgIH0NCg0KcHJpdmF0ZToNCiAgICB2b2lkIF9Nb3ZlX2NvbnN0cnVjdF9lcXVhbF9hbGxvYyhf
SGFzaCYgX1JpZ2h0KSB7DQogICAgICAgIF9WZWMuX0Fzc2lnbl9ncm93KF9NaW5fYnVja2V0cyAq
IDIsIF9VbmNoZWNrZWRfZW5kKCkpOw0KICAgICAgICBfTGlzdC5fU3dhcF92YWwoX1JpZ2h0Ll9M
aXN0KTsNCiAgICAgICAgX1ZlYy5fTXlwYWlyLl9NeXZhbDIuX1N3YXBfdmFsKF9SaWdodC5fVmVj
Ll9NeXBhaXIuX015dmFsMik7DQogICAgICAgIF9NYXNrICAgPSA6OnN0ZDo6IGV4Y2hhbmdlKF9S
aWdodC5fTWFzaywgX01pbl9idWNrZXRzIC0gMSk7DQogICAgICAgIF9NYXhpZHggPSA6OnN0ZDo6
IGV4Y2hhbmdlKF9SaWdodC5fTWF4aWR4LCBfTWluX2J1Y2tldHMpOw0KICAgIH0NCg0KcHVibGlj
Og0KICAgIF9IYXNoKF9IYXNoJiYgX1JpZ2h0LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX0FsKSA6
IF9UcmFpdHNvYmooX1JpZ2h0Ll9UcmFpdHNvYmopLCBfTGlzdChfQWwpLCBfVmVjKF9BbCkgew0K
ICAgICAgICANCiAgICAgICAgaWYgY29uc3RleHByIChfQWxub2RlX3RyYWl0czo6aXNfYWx3YXlz
X2VxdWFsOjp2YWx1ZSkgew0KICAgICAgICAgICAgX01vdmVfY29uc3RydWN0X2VxdWFsX2FsbG9j
KF9SaWdodCk7DQogICAgICAgIH0gZWxzZSBpZiAoX0xpc3QuX0dldGFsKCkgPT0gX1JpZ2h0Ll9M
aXN0Ll9HZXRhbCgpKSB7DQogICAgICAgICAgICBfTW92ZV9jb25zdHJ1Y3RfZXF1YWxfYWxsb2Mo
X1JpZ2h0KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9NYXhpZHggICAgICAgICAg
ICA9IF9NaW5fYnVja2V0czsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX015aGVhZCA9IF9MaXN0
Ll9NeXBhaXIuX015dmFsMi5fTXloZWFkOw0KICAgICAgICAgICAgZm9yIChhdXRvJiBfVmFsIDog
X1JpZ2h0Ll9MaXN0KSB7DQogICAgICAgICAgICAgICAgX0xpc3QuX0VtcGxhY2UoX015aGVhZCwg
cmVpbnRlcnByZXRfY2FzdDxfTXV0YWJsZV92YWx1ZV90eXBlJiY+KF9WYWwpKTsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIF9SZWluc2VydF93aXRoX2ludmFsaWRfdmVjKCk7DQogICAgICAg
ICAgICBfUmlnaHQuY2xlYXIoKTsNCiAgICAgICAgfQ0KDQoNCg0KDQoNCiAgICB9DQoNCnByaXZh
dGU6DQogICAgdm9pZCBfU3dhcF92YWwoX0hhc2gmIF9SaWdodCkgbm9leGNlcHQgeyANCiAgICAg
ICAgX0xpc3QuX1N3YXBfdmFsKF9SaWdodC5fTGlzdCk7DQogICAgICAgIF9WZWMuX015cGFpci5f
TXl2YWwyLl9Td2FwX3ZhbChfUmlnaHQuX1ZlYy5fTXlwYWlyLl9NeXZhbDIpOw0KICAgICAgICA6
OnN0ZDo6IHN3YXAoX01hc2ssIF9SaWdodC5fTWFzayk7DQogICAgICAgIDo6c3RkOjogc3dhcChf
TWF4aWR4LCBfUmlnaHQuX01heGlkeCk7DQogICAgfQ0KDQogICAgc3RydWN0IF9NaW5fYnVja2V0
c19jb25zdHJ1Y3RfcHRyIHsNCiAgICAgICAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIGFsbG9j
YXRvcl90cmFpdHM8X0FsaXRlcj46OnBvaW50ZXI7DQogICAgICAgIF9BbGl0ZXImIF9BbDsNCiAg
ICAgICAgcG9pbnRlciBfQmFzZTsNCiAgICAgICAgX01pbl9idWNrZXRzX2NvbnN0cnVjdF9wdHIo
X0FsaXRlciYgX0FsXykgOiBfQWwoX0FsXyksIF9CYXNlKF9BbC5hbGxvY2F0ZShfTWluX2J1Y2tl
dHMgKiAyKSkge30NCiAgICAgICAgX01pbl9idWNrZXRzX2NvbnN0cnVjdF9wdHIoY29uc3QgX01p
bl9idWNrZXRzX2NvbnN0cnVjdF9wdHImKSA9IGRlbGV0ZTsNCiAgICAgICAgW1tub2Rpc2NhcmRd
XSBwb2ludGVyIF9SZWxlYXNlKF9VbmNoZWNrZWRfaXRlcmF0b3IgX05ld2VuZCkgbm9leGNlcHQg
ew0KICAgICAgICAgICAgOjpzdGQ6OiB1bmluaXRpYWxpemVkX2ZpbGwoX0Jhc2UsIF9CYXNlICsg
X01pbl9idWNrZXRzICogMiwgX05ld2VuZCk7DQogICAgICAgICAgICByZXR1cm4gOjpzdGQ6OiBl
eGNoYW5nZShfQmFzZSwgcG9pbnRlcigpKTsNCiAgICAgICAgfQ0KICAgICAgICB+X01pbl9idWNr
ZXRzX2NvbnN0cnVjdF9wdHIoKSB7DQogICAgICAgICAgICBpZiAoX0Jhc2UpIHsNCiAgICAgICAg
ICAgICAgICBfQWwuZGVhbGxvY2F0ZShfQmFzZSwgX01pbl9idWNrZXRzICogMik7DQogICAgICAg
ICAgICB9DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgdm9pZCBfUG9jbWFfYm90aChfSGFzaCYg
X1JpZ2h0KSB7DQogICAgICAgIF9Qb2NtYShfTGlzdC5fR2V0YWwoKSwgX1JpZ2h0Ll9MaXN0Ll9H
ZXRhbCgpKTsNCiAgICAgICAgX1BvY21hKF9WZWMuX015cGFpci5fR2V0X2ZpcnN0KCksIF9SaWdo
dC5fVmVjLl9NeXBhaXIuX0dldF9maXJzdCgpKTsNCiAgICB9DQoNCiAgICBzdHJ1Y3QgX0NsZWFy
X2d1YXJkIHsNCiAgICAgICAgX0hhc2gqIF9UYXJnZXQ7DQoNCiAgICAgICAgZXhwbGljaXQgX0Ns
ZWFyX2d1YXJkKF9IYXNoKiBjb25zdCBfVGFyZ2V0XykgOiBfVGFyZ2V0KF9UYXJnZXRfKSB7fQ0K
DQogICAgICAgIF9DbGVhcl9ndWFyZChjb25zdCBfQ2xlYXJfZ3VhcmQmKSA9IGRlbGV0ZTsNCiAg
ICAgICAgX0NsZWFyX2d1YXJkJiBvcGVyYXRvcj0oY29uc3QgX0NsZWFyX2d1YXJkJikgPSBkZWxl
dGU7DQoNCiAgICAgICAgfl9DbGVhcl9ndWFyZCgpIHsNCiAgICAgICAgICAgIGlmIChfVGFyZ2V0
KSB7DQogICAgICAgICAgICAgICAgX1RhcmdldC0+Y2xlYXIoKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KICAgIH07DQoNCiAgICB2b2lkIF9Nb3ZlX2Fzc2lnbihfSGFzaCYgX1JpZ2h0LCBf
RXF1YWxfYWxsb2NhdG9ycykgew0KICAgICAgICBjbGVhcigpOw0KICAgICAgICBfVHJhaXRzb2Jq
ID0gX1JpZ2h0Ll9UcmFpdHNvYmo7DQogICAgICAgIF9Qb2NtYV9ib3RoKF9SaWdodCk7DQogICAg
ICAgIF9Td2FwX3ZhbChfUmlnaHQpOw0KICAgIH0NCg0KICAgIHZvaWQgX01vdmVfYXNzaWduKF9I
YXNoJiBfUmlnaHQsIF9Qcm9wYWdhdGVfYWxsb2NhdG9ycykgew0KICAgICAgICBpZiAoX0dldGFs
KCkgPT0gX1JpZ2h0Ll9HZXRhbCgpKSB7DQogICAgICAgICAgICBfTW92ZV9hc3NpZ24oX1JpZ2h0
LCBfRXF1YWxfYWxsb2NhdG9yc3t9KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgYXV0byYmIF9BbHByb3h5ICAgICAgID0gX0Zha2VfYWxsb2NhdG9yKCk7DQog
ICAgICAgICAgICBhdXRvJiYgX1JpZ2h0X2FscHJveHkgPSBfRmFrZV9hbGxvY2F0b3IoKTsNCiAg
ICAgICAgICAgIF9Db250YWluZXJfcHJveHlfcHRyPF9BbG5vZGU+IF9MaXN0X3Byb3h5KF9SaWdo
dF9hbHByb3h5LCBfTGVhdmVfcHJveHlfdW5ib3VuZHt9KTsNCiAgICAgICAgICAgIF9Db250YWlu
ZXJfcHJveHlfcHRyPF9BbG5vZGU+IF9WZWNfcHJveHkoX1JpZ2h0X2FscHJveHksIF9MZWF2ZV9w
cm94eV91bmJvdW5ke30pOw0KICAgICAgICAgICAgX0xpc3RfaGVhZF9jb25zdHJ1Y3RfcHRyPF9B
bG5vZGU+IF9OZXdoZWFkKF9SaWdodC5fR2V0YWwoKSk7DQogICAgICAgICAgICBfTWluX2J1Y2tl
dHNfY29uc3RydWN0X3B0ciBfQnVja2V0cyhfUmlnaHQuX1ZlYy5fTXlwYWlyLl9HZXRfZmlyc3Qo
KSk7DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICBfVHJhaXRzb2Jq
ID0gX1JpZ2h0Ll9UcmFpdHNvYmo7DQoNCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAg
ICAgICAgICAgIF9MaXN0Ll9UaWR5KCk7DQogICAgICAgICAgICBfVmVjLl9UaWR5KCk7DQogICAg
ICAgICAgICBfUG9jbWFfYm90aChfUmlnaHQpOw0KDQogICAgICAgICAgICANCiAgICAgICAgICAg
IGF1dG8mIF9MaXN0X2RhdGEgICAgICAgPSBfTGlzdC5fTXlwYWlyLl9NeXZhbDI7DQogICAgICAg
ICAgICBhdXRvJiBfUmlnaHRfbGlzdF9kYXRhID0gX1JpZ2h0Ll9MaXN0Ll9NeXBhaXIuX015dmFs
MjsNCiAgICAgICAgICAgIF9MaXN0X2RhdGEuX015aGVhZCAgICAgPSA6OnN0ZDo6IGV4Y2hhbmdl
KF9SaWdodF9saXN0X2RhdGEuX015aGVhZCwgX05ld2hlYWQuX1JlbGVhc2UoKSk7DQogICAgICAg
ICAgICBfTGlzdF9kYXRhLl9NeXNpemUgICAgID0gOjpzdGQ6OiBleGNoYW5nZShfUmlnaHRfbGlz
dF9kYXRhLl9NeXNpemUsIHNpemVfdHlwZXswfSk7DQogICAgICAgICAgICBfTGlzdF9wcm94eS5f
QmluZChfQWxwcm94eSwgOjpzdGQ6OiBhZGRyZXNzb2YoX0xpc3RfZGF0YSkpOw0KICAgICAgICAg
ICAgX0xpc3RfZGF0YS5fU3dhcF9wcm94eV9hbmRfaXRlcmF0b3JzKF9SaWdodF9saXN0X2RhdGEp
Ow0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIGF1dG8mIF9WZWNfZGF0YSAgICAgICA9IF9W
ZWMuX015cGFpci5fTXl2YWwyOw0KICAgICAgICAgICAgYXV0byYgX1JpZ2h0X3ZlY19kYXRhID0g
X1JpZ2h0Ll9WZWMuX015cGFpci5fTXl2YWwyOw0KDQogICAgICAgICAgICBjb25zdCBhdXRvIF9O
ZXdmaXJzdCA9IF9CdWNrZXRzLl9SZWxlYXNlKF9SaWdodC5fVW5jaGVja2VkX2VuZCgpKTsNCiAg
ICAgICAgICAgIGNvbnN0IGF1dG8gX05ld2xhc3QgID0gX05ld2ZpcnN0ICsgX01pbl9idWNrZXRz
ICogMjsNCg0KICAgICAgICAgICAgX1ZlY19kYXRhLl9NeWZpcnN0ID0gOjpzdGQ6OiBleGNoYW5n
ZShfUmlnaHRfdmVjX2RhdGEuX015Zmlyc3QsIF9OZXdmaXJzdCk7DQogICAgICAgICAgICBfVmVj
X2RhdGEuX015bGFzdCAgPSA6OnN0ZDo6IGV4Y2hhbmdlKF9SaWdodF92ZWNfZGF0YS5fTXlsYXN0
LCBfTmV3bGFzdCk7DQogICAgICAgICAgICBfVmVjX2RhdGEuX015ZW5kICAgPSA6OnN0ZDo6IGV4
Y2hhbmdlKF9SaWdodF92ZWNfZGF0YS5fTXllbmQsIF9OZXdsYXN0KTsNCiAgICAgICAgICAgIF9W
ZWNfcHJveHkuX0JpbmQoX0FscHJveHksIDo6c3RkOjogYWRkcmVzc29mKF9WZWNfZGF0YSkpOw0K
ICAgICAgICAgICAgX1ZlY19kYXRhLl9Td2FwX3Byb3h5X2FuZF9pdGVyYXRvcnMoX1JpZ2h0X3Zl
Y19kYXRhKTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBfTWFzayAgID0gOjpzdGQ6OiBl
eGNoYW5nZShfUmlnaHQuX01hc2ssIF9NaW5fYnVja2V0cyAtIDEpOw0KICAgICAgICAgICAgX01h
eGlkeCA9IDo6c3RkOjogZXhjaGFuZ2UoX1JpZ2h0Ll9NYXhpZHgsIF9NaW5fYnVja2V0cyk7DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIF9Nb3ZlX2Fzc2lnbihfSGFzaCYgX1JpZ2h0LCBf
Tm9fcHJvcGFnYXRlX2FsbG9jYXRvcnMpIHsNCiAgICAgICAgaWYgKF9HZXRhbCgpID09IF9SaWdo
dC5fR2V0YWwoKSkgew0KICAgICAgICAgICAgX01vdmVfYXNzaWduKF9SaWdodCwgX0VxdWFsX2Fs
bG9jYXRvcnN7fSk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBf
Q2xlYXJfZ3VhcmQgX0d1YXJke3RoaXN9Ow0KICAgICAgICBfVHJhaXRzb2JqICAgICA9IF9SaWdo
dC5fVHJhaXRzb2JqOw0KICAgICAgICB1c2luZyBfQWRhcHRlciA9IF9SZWludGVycHJldF9tb3Zl
X2l0ZXI8dHlwZW5hbWUgX015bGlzdDo6X1VuY2hlY2tlZF9pdGVyYXRvciwgX011dGFibGVfdmFs
dWVfdHlwZT47DQogICAgICAgIF9MaXN0LnRlbXBsYXRlIF9Bc3NpZ25fY2FzdDxfTXV0YWJsZV92
YWx1ZV90eXBlJj4oDQogICAgICAgICAgICBfQWRhcHRlcntfUmlnaHQuX0xpc3QuX1VuY2hlY2tl
ZF9iZWdpbigpfSwgX0FkYXB0ZXJ7X1JpZ2h0Ll9MaXN0Ll9VbmNoZWNrZWRfZW5kKCl9KTsNCiAg
ICAgICAgX1JlaW5zZXJ0X3dpdGhfaW52YWxpZF92ZWMoKTsNCiAgICAgICAgX0d1YXJkLl9UYXJn
ZXQgPSBudWxscHRyOw0KICAgIH0NCg0KcHVibGljOg0KICAgIF9IYXNoJiBvcGVyYXRvcj0oX0hh
c2gmJiBfUmlnaHQpIHsgDQogICAgICAgIGlmICh0aGlzICE9IDo6c3RkOjogYWRkcmVzc29mKF9S
aWdodCkpIHsNCiAgICAgICAgICAgIF9Nb3ZlX2Fzc2lnbihfUmlnaHQsIF9DaG9vc2VfcG9jbWE8
X0Fsbm9kZT57fSk7DQoNCg0KDQoNCg0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICp0aGlz
Ow0KICAgIH0NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9WYWx0eXM+DQogICAgY29uZGl0
aW9uYWxfdDxfTXVsdGksIGl0ZXJhdG9yLCBwYWlyPGl0ZXJhdG9yLCBib29sPj4gZW1wbGFjZShf
VmFsdHlzJiYuLi4gX1ZhbHMpIHsNCiAgICAgICAgDQogICAgICAgIHVzaW5nIF9Jbl9wbGFjZV9r
ZXlfZXh0cmFjdG9yID0gdHlwZW5hbWUgX1RyYWl0czo6dGVtcGxhdGUgX0luX3BsYWNlX2tleV9l
eHRyYWN0b3I8X1JlbW92ZV9jdnJlZl90PF9WYWx0eXM+Li4uPjsNCiAgICAgICAgaWYgY29uc3Rl
eHByIChfTXVsdGkpIHsNCiAgICAgICAgICAgIF9DaGVja19tYXhfc2l6ZSgpOw0KICAgICAgICAg
ICAgX0xpc3Rfbm9kZV9lbXBsYWNlX29wMjxfQWxub2RlPiBfTmV3bm9kZShfTGlzdC5fR2V0YWwo
KSwgOjpzdGQ6OiBmb3J3YXJkPF9WYWx0eXM+KF9WYWxzKS4uLik7DQogICAgICAgICAgICBjb25z
dCBhdXRvJiBfS2V5dmFsID0gX1RyYWl0czo6X0tmbihfTmV3bm9kZS5fUHRyLT5fTXl2YWwpOw0K
ICAgICAgICAgICAgY29uc3QgYXV0byBfSGFzaHZhbCA9IF9UcmFpdHNvYmooX0tleXZhbCk7DQog
ICAgICAgICAgICBpZiAoX0NoZWNrX3JlaGFzaF9yZXF1aXJlZF8xKCkpIHsNCiAgICAgICAgICAg
ICAgICBfUmVoYXNoX2Zvcl8xKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGNvbnN0
IGF1dG8gX1RhcmdldCA9IF9GaW5kX2xhc3QoX0tleXZhbCwgX0hhc2h2YWwpOw0KICAgICAgICAg
ICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX0luc2VydF9uZXdfbm9kZV9iZWZvcmUoX0hhc2h2
YWwsIF9UYXJnZXQuX0luc2VydF9iZWZvcmUsIF9OZXdub2RlLl9SZWxlYXNlKCkpKTsNCiAgICAg
ICAgfSBlbHNlIGlmIGNvbnN0ZXhwciAoX0luX3BsYWNlX2tleV9leHRyYWN0b3I6Ol9FeHRyYWN0
YWJsZSkgew0KICAgICAgICAgICAgY29uc3QgYXV0byYgX0tleXZhbCA9IF9Jbl9wbGFjZV9rZXlf
ZXh0cmFjdG9yOjpfRXh0cmFjdChfVmFscy4uLik7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9I
YXNodmFsID0gX1RyYWl0c29iaihfS2V5dmFsKTsNCiAgICAgICAgICAgIGF1dG8gX1RhcmdldCAg
ICAgICAgPSBfRmluZF9sYXN0KF9LZXl2YWwsIF9IYXNodmFsKTsNCiAgICAgICAgICAgIGlmIChf
VGFyZ2V0Ll9EdXBsaWNhdGUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4ge19MaXN0Ll9NYWtl
X2l0ZXIoX1RhcmdldC5fRHVwbGljYXRlKSwgZmFsc2V9Ow0KICAgICAgICAgICAgfQ0KDQogICAg
ICAgICAgICBfQ2hlY2tfbWF4X3NpemUoKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgX0xp
c3Rfbm9kZV9lbXBsYWNlX29wMjxfQWxub2RlPiBfTmV3bm9kZShfTGlzdC5fR2V0YWwoKSwgOjpz
dGQ6OiBmb3J3YXJkPF9WYWx0eXM+KF9WYWxzKS4uLik7DQogICAgICAgICAgICBpZiAoX0NoZWNr
X3JlaGFzaF9yZXF1aXJlZF8xKCkpIHsNCiAgICAgICAgICAgICAgICBfUmVoYXNoX2Zvcl8xKCk7
DQogICAgICAgICAgICAgICAgX1RhcmdldCA9IF9GaW5kX2xhc3QoX1RyYWl0czo6X0tmbihfTmV3
bm9kZS5fUHRyLT5fTXl2YWwpLCBfSGFzaHZhbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAg
ICAgIHJldHVybiB7DQogICAgICAgICAgICAgICAgX0xpc3QuX01ha2VfaXRlcihfSW5zZXJ0X25l
d19ub2RlX2JlZm9yZShfSGFzaHZhbCwgX1RhcmdldC5fSW5zZXJ0X2JlZm9yZSwgX05ld25vZGUu
X1JlbGVhc2UoKSkpLCB0cnVlfTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9MaXN0
X25vZGVfZW1wbGFjZV9vcDI8X0Fsbm9kZT4gX05ld25vZGUoX0xpc3QuX0dldGFsKCksIDo6c3Rk
OjogZm9yd2FyZDxfVmFsdHlzPihfVmFscykuLi4pOw0KICAgICAgICAgICAgY29uc3QgYXV0byYg
X0tleXZhbCA9IF9UcmFpdHM6Ol9LZm4oX05ld25vZGUuX1B0ci0+X015dmFsKTsNCiAgICAgICAg
ICAgIGNvbnN0IGF1dG8gX0hhc2h2YWwgPSBfVHJhaXRzb2JqKF9LZXl2YWwpOw0KICAgICAgICAg
ICAgYXV0byBfVGFyZ2V0ICAgICAgICA9IF9GaW5kX2xhc3QoX0tleXZhbCwgX0hhc2h2YWwpOw0K
ICAgICAgICAgICAgaWYgKF9UYXJnZXQuX0R1cGxpY2F0ZSkgew0KICAgICAgICAgICAgICAgIHJl
dHVybiB7X0xpc3QuX01ha2VfaXRlcihfVGFyZ2V0Ll9EdXBsaWNhdGUpLCBmYWxzZX07DQogICAg
ICAgICAgICB9DQoNCiAgICAgICAgICAgIF9DaGVja19tYXhfc2l6ZSgpOw0KICAgICAgICAgICAg
aWYgKF9DaGVja19yZWhhc2hfcmVxdWlyZWRfMSgpKSB7DQogICAgICAgICAgICAgICAgX1JlaGFz
aF9mb3JfMSgpOw0KICAgICAgICAgICAgICAgIF9UYXJnZXQgPSBfRmluZF9sYXN0KF9UcmFpdHM6
Ol9LZm4oX05ld25vZGUuX1B0ci0+X015dmFsKSwgX0hhc2h2YWwpOw0KICAgICAgICAgICAgfQ0K
DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgIF9MaXN0Ll9NYWtlX2l0ZXIo
X0luc2VydF9uZXdfbm9kZV9iZWZvcmUoX0hhc2h2YWwsIF9UYXJnZXQuX0luc2VydF9iZWZvcmUs
IF9OZXdub2RlLl9SZWxlYXNlKCkpKSwgdHJ1ZX07DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDcwNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4aGFzaCINCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9WYWx0eXM+DQogICAgaXRl
cmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIF9IaW50LCBfVmFsdHlzJiYuLi4gX1Zh
bHMpIHsgDQogICAgICAgIHVzaW5nIF9Jbl9wbGFjZV9rZXlfZXh0cmFjdG9yID0gdHlwZW5hbWUg
X1RyYWl0czo6dGVtcGxhdGUgX0luX3BsYWNlX2tleV9leHRyYWN0b3I8X1JlbW92ZV9jdnJlZl90
PF9WYWx0eXM+Li4uPjsNCiAgICAgICAgaWYgY29uc3RleHByIChfTXVsdGkpIHsNCiAgICAgICAg
ICAgIF9DaGVja19tYXhfc2l6ZSgpOw0KICAgICAgICAgICAgX0xpc3Rfbm9kZV9lbXBsYWNlX29w
MjxfQWxub2RlPiBfTmV3bm9kZShfTGlzdC5fR2V0YWwoKSwgOjpzdGQ6OiBmb3J3YXJkPF9WYWx0
eXM+KF9WYWxzKS4uLik7DQogICAgICAgICAgICBjb25zdCBhdXRvJiBfS2V5dmFsID0gX1RyYWl0
czo6X0tmbihfTmV3bm9kZS5fUHRyLT5fTXl2YWwpOw0KICAgICAgICAgICAgY29uc3QgYXV0byBf
SGFzaHZhbCA9IF9UcmFpdHNvYmooX0tleXZhbCk7DQogICAgICAgICAgICBpZiAoX0NoZWNrX3Jl
aGFzaF9yZXF1aXJlZF8xKCkpIHsNCiAgICAgICAgICAgICAgICBfUmVoYXNoX2Zvcl8xKCk7DQog
ICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX1RhcmdldCA9IF9GaW5kX2hp
bnQoX0hpbnQuX1B0ciwgX0tleXZhbCwgX0hhc2h2YWwpOw0KICAgICAgICAgICAgcmV0dXJuIF9M
aXN0Ll9NYWtlX2l0ZXIoX0luc2VydF9uZXdfbm9kZV9iZWZvcmUoX0hhc2h2YWwsIF9UYXJnZXQu
X0luc2VydF9iZWZvcmUsIF9OZXdub2RlLl9SZWxlYXNlKCkpKTsNCiAgICAgICAgfSBlbHNlIGlm
IGNvbnN0ZXhwciAoX0luX3BsYWNlX2tleV9leHRyYWN0b3I6Ol9FeHRyYWN0YWJsZSkgew0KICAg
ICAgICAgICAgY29uc3QgYXV0byYgX0tleXZhbCA9IF9Jbl9wbGFjZV9rZXlfZXh0cmFjdG9yOjpf
RXh0cmFjdChfVmFscy4uLik7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9IYXNodmFsID0gX1Ry
YWl0c29iaihfS2V5dmFsKTsNCiAgICAgICAgICAgIGF1dG8gX1RhcmdldCAgICAgICAgPSBfRmlu
ZF9oaW50KF9IaW50Ll9QdHIsIF9LZXl2YWwsIF9IYXNodmFsKTsNCiAgICAgICAgICAgIGlmIChf
VGFyZ2V0Ll9EdXBsaWNhdGUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX0xpc3QuX01ha2Vf
aXRlcihfVGFyZ2V0Ll9EdXBsaWNhdGUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBf
Q2hlY2tfbWF4X3NpemUoKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgX0xpc3Rfbm9kZV9l
bXBsYWNlX29wMjxfQWxub2RlPiBfTmV3bm9kZShfTGlzdC5fR2V0YWwoKSwgOjpzdGQ6OiBmb3J3
YXJkPF9WYWx0eXM+KF9WYWxzKS4uLik7DQogICAgICAgICAgICBpZiAoX0NoZWNrX3JlaGFzaF9y
ZXF1aXJlZF8xKCkpIHsNCiAgICAgICAgICAgICAgICBfUmVoYXNoX2Zvcl8xKCk7DQogICAgICAg
ICAgICAgICAgX1RhcmdldCA9IF9GaW5kX2hpbnQoX0hpbnQuX1B0ciwgX1RyYWl0czo6X0tmbihf
TmV3bm9kZS5fUHRyLT5fTXl2YWwpLCBfSGFzaHZhbCk7DQogICAgICAgICAgICB9DQoNCiAgICAg
ICAgICAgIHJldHVybiBfTGlzdC5fTWFrZV9pdGVyKF9JbnNlcnRfbmV3X25vZGVfYmVmb3JlKF9I
YXNodmFsLCBfVGFyZ2V0Ll9JbnNlcnRfYmVmb3JlLCBfTmV3bm9kZS5fUmVsZWFzZSgpKSk7DQog
ICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBfTGlzdF9ub2RlX2VtcGxhY2Vfb3AyPF9BbG5v
ZGU+IF9OZXdub2RlKF9MaXN0Ll9HZXRhbCgpLCA6OnN0ZDo6IGZvcndhcmQ8X1ZhbHR5cz4oX1Zh
bHMpLi4uKTsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8mIF9LZXl2YWwgPSBfVHJhaXRzOjpfS2Zu
KF9OZXdub2RlLl9QdHItPl9NeXZhbCk7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9IYXNodmFs
ID0gX1RyYWl0c29iaihfS2V5dmFsKTsNCiAgICAgICAgICAgIGF1dG8gX1RhcmdldCAgICAgICAg
PSBfRmluZF9oaW50KF9IaW50Ll9QdHIsIF9LZXl2YWwsIF9IYXNodmFsKTsNCiAgICAgICAgICAg
IGlmIChfVGFyZ2V0Ll9EdXBsaWNhdGUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX0xpc3Qu
X01ha2VfaXRlcihfVGFyZ2V0Ll9EdXBsaWNhdGUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICBfQ2hlY2tfbWF4X3NpemUoKTsNCiAgICAgICAgICAgIGlmIChfQ2hlY2tfcmVoYXNoX3Jl
cXVpcmVkXzEoKSkgew0KICAgICAgICAgICAgICAgIF9SZWhhc2hfZm9yXzEoKTsNCiAgICAgICAg
ICAgICAgICBfVGFyZ2V0ID0gX0ZpbmRfaGludChfSGludC5fUHRyLCBfVHJhaXRzOjpfS2ZuKF9O
ZXdub2RlLl9QdHItPl9NeXZhbCksIF9IYXNodmFsKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAg
ICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX0luc2VydF9uZXdfbm9kZV9iZWZvcmUoX0hh
c2h2YWwsIF9UYXJnZXQuX0luc2VydF9iZWZvcmUsIF9OZXdub2RlLl9SZWxlYXNlKCkpKTsNCiAg
ICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODE4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhoYXNoIg0KDQpwcm90ZWN0ZWQ6DQogICAgdGVt
cGxhdGUgPGNsYXNzIF9LZXl0eSwgY2xhc3MuLi4gX01hcHBlZHR5Pg0KICAgIHBhaXI8X05vZGVw
dHIsIGJvb2w+IF9UcnlfZW1wbGFjZShfS2V5dHkmJiBfS2V5dmFsX2FyZywgX01hcHBlZHR5JiYu
Li4gX01hcHZhbCkgew0KICAgICAgICBjb25zdCBhdXRvJiBfS2V5dmFsID0gX0tleXZhbF9hcmc7
DQogICAgICAgIGNvbnN0IGF1dG8gX0hhc2h2YWwgPSBfVHJhaXRzb2JqKF9LZXl2YWwpOw0KICAg
ICAgICBhdXRvIF9UYXJnZXQgICAgICAgID0gX0ZpbmRfbGFzdChfS2V5dmFsLCBfSGFzaHZhbCk7
DQogICAgICAgIGlmIChfVGFyZ2V0Ll9EdXBsaWNhdGUpIHsNCiAgICAgICAgICAgIHJldHVybiB7
X1RhcmdldC5fRHVwbGljYXRlLCBmYWxzZX07DQogICAgICAgIH0NCg0KICAgICAgICBfQ2hlY2tf
bWF4X3NpemUoKTsNCiAgICAgICAgX0xpc3Rfbm9kZV9lbXBsYWNlX29wMjxfQWxub2RlPiBfTmV3
bm9kZShfTGlzdC5fR2V0YWwoKSwgcGllY2V3aXNlX2NvbnN0cnVjdCwNCiAgICAgICAgICAgIDo6
c3RkOjogZm9yd2FyZF9hc190dXBsZSg6OnN0ZDo6IGZvcndhcmQ8X0tleXR5PihfS2V5dmFsX2Fy
ZykpLA0KICAgICAgICAgICAgOjpzdGQ6OiBmb3J3YXJkX2FzX3R1cGxlKDo6c3RkOjogZm9yd2Fy
ZDxfTWFwcGVkdHk+KF9NYXB2YWwpLi4uKSk7DQogICAgICAgIGlmIChfQ2hlY2tfcmVoYXNoX3Jl
cXVpcmVkXzEoKSkgew0KICAgICAgICAgICAgX1JlaGFzaF9mb3JfMSgpOw0KICAgICAgICAgICAg
X1RhcmdldCA9IF9GaW5kX2xhc3QoX1RyYWl0czo6X0tmbihfTmV3bm9kZS5fUHRyLT5fTXl2YWwp
LCBfSGFzaHZhbCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4ge19JbnNlcnRfbmV3X25v
ZGVfYmVmb3JlKF9IYXNodmFsLCBfVGFyZ2V0Ll9JbnNlcnRfYmVmb3JlLCBfTmV3bm9kZS5fUmVs
ZWFzZSgpKSwgdHJ1ZX07DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9LZXl0eSwgY2xh
c3MuLi4gX01hcHBlZHR5Pg0KICAgIF9Ob2RlcHRyIF9UcnlfZW1wbGFjZV9oaW50KGNvbnN0IF9O
b2RlcHRyIF9IaW50LCBfS2V5dHkmJiBfS2V5dmFsX2FyZywgX01hcHBlZHR5JiYuLi4gX01hcHZh
bCkgew0KICAgICAgICBjb25zdCBhdXRvJiBfS2V5dmFsID0gX0tleXZhbF9hcmc7DQogICAgICAg
IGNvbnN0IGF1dG8gX0hhc2h2YWwgPSBfVHJhaXRzb2JqKF9LZXl2YWwpOw0KICAgICAgICBhdXRv
IF9UYXJnZXQgICAgICAgID0gX0ZpbmRfaGludChfSGludCwgX0tleXZhbCwgX0hhc2h2YWwpOw0K
ICAgICAgICBpZiAoX1RhcmdldC5fRHVwbGljYXRlKSB7DQogICAgICAgICAgICByZXR1cm4gX1Rh
cmdldC5fRHVwbGljYXRlOw0KICAgICAgICB9DQoNCiAgICAgICAgX0NoZWNrX21heF9zaXplKCk7
DQogICAgICAgIA0KICAgICAgICBfTGlzdF9ub2RlX2VtcGxhY2Vfb3AyPF9BbG5vZGU+IF9OZXdu
b2RlKF9MaXN0Ll9HZXRhbCgpLCBwaWVjZXdpc2VfY29uc3RydWN0LA0KICAgICAgICAgICAgOjpz
dGQ6OiBmb3J3YXJkX2FzX3R1cGxlKDo6c3RkOjogZm9yd2FyZDxfS2V5dHk+KF9LZXl2YWxfYXJn
KSksDQogICAgICAgICAgICA6OnN0ZDo6IGZvcndhcmRfYXNfdHVwbGUoOjpzdGQ6OiBmb3J3YXJk
PF9NYXBwZWR0eT4oX01hcHZhbCkuLi4pKTsNCiAgICAgICAgaWYgKF9DaGVja19yZWhhc2hfcmVx
dWlyZWRfMSgpKSB7DQogICAgICAgICAgICBfUmVoYXNoX2Zvcl8xKCk7DQogICAgICAgICAgICBf
VGFyZ2V0ID0gX0ZpbmRfaGludChfSGludCwgX1RyYWl0czo6X0tmbihfTmV3bm9kZS5fUHRyLT5f
TXl2YWwpLCBfSGFzaHZhbCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX0luc2VydF9u
ZXdfbm9kZV9iZWZvcmUoX0hhc2h2YWwsIF9UYXJnZXQuX0luc2VydF9iZWZvcmUsIF9OZXdub2Rl
Ll9SZWxlYXNlKCkpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB2b2lkIF9Qb2NjYV9ib3RoKGNv
bnN0IF9IYXNoJiBfUmlnaHQpIHsNCiAgICAgICAgX1BvY2NhKF9MaXN0Ll9HZXRhbCgpLCBfUmln
aHQuX0xpc3QuX0dldGFsKCkpOw0KICAgICAgICBfUG9jY2EoX1ZlYy5fTXlwYWlyLl9HZXRfZmly
c3QoKSwgX1JpZ2h0Ll9WZWMuX015cGFpci5fR2V0X2ZpcnN0KCkpOw0KICAgIH0NCg0KICAgIHZv
aWQgX0NvcHlfYXNzaWduKGNvbnN0IF9IYXNoJiBfUmlnaHQsIGZhbHNlX3R5cGUpIHsNCiAgICAg
ICAgX0NsZWFyX2d1YXJkIF9HdWFyZHt0aGlzfTsNCiAgICAgICAgX1RyYWl0c29iaiA9IF9SaWdo
dC5fVHJhaXRzb2JqOw0KICAgICAgICBfUG9jY2FfYm90aChfUmlnaHQpOw0KICAgICAgICBfTGlz
dC50ZW1wbGF0ZSBfQXNzaWduX2Nhc3Q8X011dGFibGVfdmFsdWVfdHlwZSY+KA0KICAgICAgICAg
ICAgX1JpZ2h0Ll9MaXN0Ll9VbmNoZWNrZWRfYmVnaW4oKSwgX1JpZ2h0Ll9MaXN0Ll9VbmNoZWNr
ZWRfZW5kKCkpOw0KICAgICAgICBfUmVpbnNlcnRfd2l0aF9pbnZhbGlkX3ZlYygpOw0KICAgICAg
ICBfR3VhcmQuX1RhcmdldCA9IG51bGxwdHI7DQogICAgfQ0KDQogICAgdm9pZCBfQ29weV9hc3Np
Z24oY29uc3QgX0hhc2gmIF9SaWdodCwgdHJ1ZV90eXBlKSB7DQogICAgICAgIGF1dG8mIF9BbCAg
ICAgICAgICAgICA9IF9HZXRhbCgpOw0KICAgICAgICBjb25zdCBhdXRvJiBfUmlnaHRfYWwgPSBf
UmlnaHQuX0dldGFsKCk7DQogICAgICAgIGlmIChfQWwgPT0gX1JpZ2h0X2FsKSB7DQogICAgICAg
ICAgICBfQ29weV9hc3NpZ24oX1JpZ2h0LCBmYWxzZV90eXBle30pOw0KICAgICAgICAgICAgcmV0
dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgYXV0byYmIF9BbHByb3h5ICAgICAgID0gX0Zha2Vf
YWxsb2NhdG9yKCk7DQogICAgICAgIGF1dG8mJiBfUmlnaHRfYWxwcm94eSA9IF9GYWtlX2FsbG9j
YXRvcigpOw0KICAgICAgICBfQ29udGFpbmVyX3Byb3h5X3B0cjxfQWxub2RlPiBfVmVjX3Byb3h5
KF9SaWdodF9hbHByb3h5LCBfTGVhdmVfcHJveHlfdW5ib3VuZHt9KTsNCiAgICAgICAgX0xpc3Qu
X1JlbG9hZF9zZW50aW5lbF9hbmRfcHJveHkoX1JpZ2h0Ll9MaXN0KTsNCiAgICAgICAgX1ZlYy5f
VGlkeSgpOw0KICAgICAgICBfUG9jY2FfYm90aChfUmlnaHQpOw0KICAgICAgICBfVmVjX3Byb3h5
Ll9CaW5kKF9BbHByb3h5LCA6OnN0ZDo6IGFkZHJlc3NvZihfVmVjLl9NeXBhaXIuX015dmFsMikp
Ow0KDQogICAgICAgIF9DbGVhcl9ndWFyZCBfR3VhcmR7dGhpc307DQogICAgICAgIF9UcmFpdHNv
YmogPSBfUmlnaHQuX1RyYWl0c29iajsNCiAgICAgICAgX0xpc3QudGVtcGxhdGUgX0Fzc2lnbl9j
YXN0PF9NdXRhYmxlX3ZhbHVlX3R5cGUmPigNCiAgICAgICAgICAgIF9SaWdodC5fTGlzdC5fVW5j
aGVja2VkX2JlZ2luKCksIF9SaWdodC5fTGlzdC5fVW5jaGVja2VkX2VuZCgpKTsNCiAgICAgICAg
X1JlaW5zZXJ0X3dpdGhfaW52YWxpZF92ZWMoKTsNCiAgICAgICAgX0d1YXJkLl9UYXJnZXQgPSBu
dWxscHRyOw0KICAgIH0NCg0KcHVibGljOg0KICAgIF9IYXNoJiBvcGVyYXRvcj0oY29uc3QgX0hh
c2gmIF9SaWdodCkgew0KICAgICAgICBpZiAodGhpcyAhPSA6OnN0ZDo6IGFkZHJlc3NvZihfUmln
aHQpKSB7DQogICAgICAgICAgICBfQ29weV9hc3NpZ24oX1JpZ2h0LCBfQ2hvb3NlX3BvY2NhPF9B
bG5vZGU+e30pOw0KDQoNCg0KDQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpdGVyYXRvciBiZWdpbigpIG5vZXhjZXB0IHsNCiAg
ICAgICAgcmV0dXJuIF9MaXN0LmJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBj
b25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9M
aXN0LmJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBpdGVyYXRvciBlbmQoKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTGlzdC5lbmQoKTsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIF9MaXN0LmVuZCgpOw0KICAgIH0NCg0KICAgIF9VbmNoZWNrZWRfaXRlcmF0b3IgX1Vu
Y2hlY2tlZF9iZWdpbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9VbmNoZWNr
ZWRfYmVnaW4oKTsNCiAgICB9DQoNCiAgICBfVW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yIF9VbmNo
ZWNrZWRfYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTGlzdC5fVW5j
aGVja2VkX2JlZ2luKCk7DQogICAgfQ0KDQogICAgX1VuY2hlY2tlZF9pdGVyYXRvciBfVW5jaGVj
a2VkX2VuZCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9VbmNoZWNrZWRfZW5k
KCk7DQogICAgfQ0KDQogICAgX1VuY2hlY2tlZF9jb25zdF9pdGVyYXRvciBfVW5jaGVja2VkX2Vu
ZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9VbmNoZWNrZWRfZW5k
KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBj
b25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBiZWdpbigpOw0KICAgIH0NCg0KICAgIFtb
bm9kaXNjYXJkXV0gY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIGVuZCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6ZV90eXBlIHNp
emUoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTGlzdC5zaXplKCk7DQogICAg
fQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiBfTGlzdC5tYXhfc2l6ZSgpOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gYm9vbCBlbXB0eSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9M
aXN0LmVtcHR5KCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBhbGxvY2F0b3JfdHlwZSBn
ZXRfYWxsb2NhdG9yKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8YWxsb2NhdG9yX3R5cGU+KF9MaXN0LmdldF9hbGxvY2F0b3IoKSk7DQogICAgfQ0KDQogICAg
dXNpbmcgbG9jYWxfaXRlcmF0b3IgICAgICAgPSBpdGVyYXRvcjsNCiAgICB1c2luZyBjb25zdF9s
b2NhbF9pdGVyYXRvciA9IGNvbnN0X2l0ZXJhdG9yOw0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXpl
X3R5cGUgYnVja2V0X2NvdW50KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX01h
eGlkeDsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBtYXhfYnVja2V0X2Nv
dW50KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX1ZlYy5tYXhfc2l6ZSgpID4+
IDE7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBzaXplX3R5cGUgYnVja2V0KGNvbnN0IGtl
eV90eXBlJiBfS2V5dmFsKSBjb25zdA0KICAgICAgICBub2V4Y2VwdChfTm90aHJvd19oYXNoPF9U
cmFpdHMsIGtleV90eXBlPikgIHsNCiAgICAgICAgcmV0dXJuIF9UcmFpdHNvYmooX0tleXZhbCkg
JiBfTWFzazsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHNpemVfdHlwZSBidWNrZXRfc2l6
ZShzaXplX3R5cGUgX0J1Y2tldCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgX1VuY2hlY2tl
ZF9pdGVyYXRvciBfQnVja2V0X2xvID0gX1ZlYy5fTXlwYWlyLl9NeXZhbDIuX015Zmlyc3RbX0J1
Y2tldCA8PCAxXTsNCiAgICAgICAgaWYgKF9CdWNrZXRfbG8gPT0gX1VuY2hlY2tlZF9lbmQoKSkg
ew0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90eXBlPig6OnN0ZDo6IGRpc3RhbmNlKF9CdWNrZXRfbG8sIF9WZWMuX015
cGFpci5fTXl2YWwyLl9NeWZpcnN0WyhfQnVja2V0IDw8IDEpICsgMV0pKSArIDE7DQogICAgfQ0K
DQogICAgW1tub2Rpc2NhcmRdXSBsb2NhbF9pdGVyYXRvciBiZWdpbihzaXplX3R5cGUgX0J1Y2tl
dCkgbm9leGNlcHQgIHsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX1ZlYy5fTXlw
YWlyLl9NeXZhbDIuX015Zmlyc3RbX0J1Y2tldCA8PCAxXS5fUHRyKTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGJlZ2luKHNpemVfdHlwZSBfQnVja2V0
KSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICByZXR1cm4gX0xpc3QuX01ha2VfY29uc3RfaXRl
cihfVmVjLl9NeXBhaXIuX015dmFsMi5fTXlmaXJzdFtfQnVja2V0IDw8IDFdLl9QdHIpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gbG9jYWxfaXRlcmF0b3IgZW5kKHNpemVfdHlwZSBfQnVj
a2V0KSBub2V4Y2VwdCAgew0KICAgICAgICBfTm9kZXB0ciBfQnVja2V0X2hpID0gX1ZlYy5fTXlw
YWlyLl9NeXZhbDIuX015Zmlyc3RbKF9CdWNrZXQgPDwgMSkgKyAxXS5fUHRyOw0KICAgICAgICBp
ZiAoX0J1Y2tldF9oaSAhPSBfTGlzdC5fTXlwYWlyLl9NeXZhbDIuX015aGVhZCkgew0KICAgICAg
ICAgICAgX0J1Y2tldF9oaSA9IF9CdWNrZXRfaGktPl9OZXh0Ow0KICAgICAgICB9DQoNCiAgICAg
ICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX0J1Y2tldF9oaSk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdF9sb2NhbF9pdGVyYXRvciBlbmQoc2l6ZV90eXBlIF9CdWNrZXQpIGNv
bnN0IG5vZXhjZXB0ICB7DQogICAgICAgIF9Ob2RlcHRyIF9CdWNrZXRfaGkgPSBfVmVjLl9NeXBh
aXIuX015dmFsMi5fTXlmaXJzdFsoX0J1Y2tldCA8PCAxKSArIDFdLl9QdHI7DQogICAgICAgIGlm
IChfQnVja2V0X2hpICE9IF9MaXN0Ll9NeXBhaXIuX015dmFsMi5fTXloZWFkKSB7DQogICAgICAg
ICAgICBfQnVja2V0X2hpID0gX0J1Y2tldF9oaS0+X05leHQ7DQogICAgICAgIH0NCg0KICAgICAg
ICByZXR1cm4gX0xpc3QuX01ha2VfY29uc3RfaXRlcihfQnVja2V0X2hpKTsNCiAgICB9DQoNCiAg
ICBbW25vZGlzY2FyZF1dIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGNiZWdpbihzaXplX3R5cGUgX0J1
Y2tldCkgY29uc3Qgbm9leGNlcHQgIHsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2NvbnN0
X2l0ZXIoX1ZlYy5fTXlwYWlyLl9NeXZhbDIuX015Zmlyc3RbX0J1Y2tldCA8PCAxXS5fUHRyKTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGNlbmQoc2l6
ZV90eXBlIF9CdWNrZXQpIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAgIF9Ob2RlcHRyIF9CdWNr
ZXRfaGkgPSBfVmVjLl9NeXBhaXIuX015dmFsMi5fTXlmaXJzdFsoX0J1Y2tldCA8PCAxKSArIDFd
Ll9QdHI7DQogICAgICAgIGlmIChfQnVja2V0X2hpICE9IF9MaXN0Ll9NeXBhaXIuX015dmFsMi5f
TXloZWFkKSB7DQogICAgICAgICAgICBfQnVja2V0X2hpID0gX0J1Y2tldF9oaS0+X05leHQ7DQog
ICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gX0xpc3QuX01ha2VfY29uc3RfaXRlcihfQnVja2V0
X2hpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGZsb2F0IGxvYWRfZmFjdG9yKCkgY29u
c3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNpemUoKSkg
LyBzdGF0aWNfY2FzdDxmbG9hdD4oYnVja2V0X2NvdW50KCkpOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gZmxvYXQgbWF4X2xvYWRfZmFjdG9yKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gX01heF9idWNrZXRfc2l6ZSgpOw0KICAgIH0NCg0KICAgIHZvaWQgbWF4X2xvYWRf
ZmFjdG9yKGZsb2F0IF9OZXdtYXgpIG5vZXhjZXB0ICB7DQogICAgICAgIDsNCiAgICAgICAgX01h
eF9idWNrZXRfc2l6ZSgpID0gX05ld21heDsNCiAgICB9DQoNCiAgICB2b2lkIHJlaGFzaChzaXpl
X3R5cGUgX0J1Y2tldHMpIHsgDQogICAgICAgIA0KICAgICAgICBfQnVja2V0cyA9ICg6OnN0ZDo6
IG1heCkoX01pbl9sb2FkX2ZhY3Rvcl9idWNrZXRzKF9MaXN0LnNpemUoKSksIF9CdWNrZXRzKTsN
CiAgICAgICAgaWYgKF9CdWNrZXRzIDw9IF9NYXhpZHgpIHsgDQogICAgICAgICAgICByZXR1cm47
DQogICAgICAgIH0NCg0KICAgICAgICBfRm9yY2VkX3JlaGFzaChfQnVja2V0cyk7DQogICAgfQ0K
DQogICAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSBfTWF4Y291bnQpIHsgDQogICAgICAgIHJlaGFz
aChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KHN0YXRpY19jYXN0PGZsb2F0PihfTWF4Y291bnQpIC8g
bWF4X2xvYWRfZmFjdG9yKCkgKyAwLjVGKSk7DQogICAgfQ0KDQogICAgY29uZGl0aW9uYWxfdDxf
TXVsdGksIGl0ZXJhdG9yLCBwYWlyPGl0ZXJhdG9yLCBib29sPj4gaW5zZXJ0KGNvbnN0IHZhbHVl
X3R5cGUmIF9WYWwpIHsNCiAgICAgICAgcmV0dXJuIGVtcGxhY2UoX1ZhbCk7DQogICAgfQ0KDQog
ICAgY29uZGl0aW9uYWxfdDxfTXVsdGksIGl0ZXJhdG9yLCBwYWlyPGl0ZXJhdG9yLCBib29sPj4g
aW5zZXJ0KHZhbHVlX3R5cGUmJiBfVmFsKSB7DQogICAgICAgIHJldHVybiBlbXBsYWNlKDo6c3Rk
OjogbW92ZShfVmFsKSk7DQogICAgfQ0KDQogICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJh
dG9yIF9IaW50LCBjb25zdCB2YWx1ZV90eXBlJiBfVmFsKSB7DQogICAgICAgIHJldHVybiBlbXBs
YWNlX2hpbnQoX0hpbnQsIF9WYWwpOw0KICAgIH0NCg0KICAgIGl0ZXJhdG9yIGluc2VydChjb25z
dF9pdGVyYXRvciBfSGludCwgdmFsdWVfdHlwZSYmIF9WYWwpIHsNCiAgICAgICAgcmV0dXJuIGVt
cGxhY2VfaGludChfSGludCwgOjpzdGQ6OiBtb3ZlKF9WYWwpKTsNCiAgICB9DQoNCiAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdm9pZCBpbnNlcnQoX0l0ZXIgX0ZpcnN0LCBfSXRlciBf
TGFzdCkgew0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmlyc3QsIF9MYXN0KTsNCiAgICAg
ICAgYXV0byBfVUZpcnN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmlyc3QpOw0KICAgICAgICBj
b25zdCBhdXRvIF9VTGFzdCA9IF9HZXRfdW53cmFwcGVkKF9MYXN0KTsNCiAgICAgICAgZm9yICg7
IF9VRmlyc3QgIT0gX1VMYXN0OyArK19VRmlyc3QpIHsNCiAgICAgICAgICAgIGVtcGxhY2UoKl9V
Rmlyc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBpbnNlcnQoaW5pdGlhbGl6ZXJf
bGlzdDx2YWx1ZV90eXBlPiBfSWxpc3QpIHsNCiAgICAgICAgaW5zZXJ0KF9JbGlzdC5iZWdpbigp
LCBfSWxpc3QuZW5kKCkpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBfTm9kZXB0ciBfVW5jaGVj
a2VkX2VyYXNlKF9Ob2RlcHRyIF9QbGlzdCkgbm9leGNlcHQoX05vdGhyb3dfaGFzaDxfVHJhaXRz
LCBrZXlfdHlwZT4pIHsNCiAgICAgICAgc2l6ZV90eXBlIF9CdWNrZXQgPSBidWNrZXQoX1RyYWl0
czo6X0tmbihfUGxpc3QtPl9NeXZhbCkpOw0KICAgICAgICBfRXJhc2VfYnVja2V0KF9QbGlzdCwg
X0J1Y2tldCk7DQogICAgICAgIHJldHVybiBfTGlzdC5fVW5jaGVja2VkX2VyYXNlKF9QbGlzdCk7
DQogICAgfQ0KDQogICAgc3RydWN0IF9SYW5nZV9lcmFzZXIgew0KICAgICAgICBfUmFuZ2VfZXJh
c2VyKGNvbnN0IF9SYW5nZV9lcmFzZXImKSA9IGRlbGV0ZTsNCiAgICAgICAgX1JhbmdlX2VyYXNl
ciYgb3BlcmF0b3I9KGNvbnN0IF9SYW5nZV9lcmFzZXImKSA9IGRlbGV0ZTsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExMjIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2giDQogICAgICANCiAgICAgICAgX1Jh
bmdlX2VyYXNlcihfTXlsaXN0JiBfTGlzdF8sIGNvbnN0IF9Ob2RlcHRyIF9GaXJzdF8pIG5vZXhj
ZXB0DQogICAgICAgICAgICA6IF9MaXN0KF9MaXN0XyksIF9QcmVkZWNlc3NvcihfRmlyc3RfLT5f
UHJldiksIF9OZXh0KF9GaXJzdF8pIHt9DQoNCiAgICAgICAgdm9pZCBfQnVtcF9lcmFzZWQoKSBu
b2V4Y2VwdCB7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9PbGRuZXh0ID0gX05leHQ7DQogICAg
ICAgICAgICBfTmV4dCAgICAgICAgICAgICAgID0gX09sZG5leHQtPl9OZXh0Ow0KICAgICAgICAg
ICAgX05vZGU6Ol9GcmVlbm9kZShfTGlzdC5fR2V0YWwoKSwgX09sZG5leHQpOw0KICAgICAgICAg
ICAgLS1fTGlzdC5fTXlwYWlyLl9NeXZhbDIuX015c2l6ZTsNCiAgICAgICAgfQ0KDQogICAgICAg
IH5fUmFuZ2VfZXJhc2VyKCkgbm9leGNlcHQgew0KICAgICAgICAgICAgX1ByZWRlY2Vzc29yLT5f
TmV4dCA9IF9OZXh0Ow0KICAgICAgICAgICAgX05leHQtPl9QcmV2ICAgICAgICA9IF9QcmVkZWNl
c3NvcjsNCiAgICAgICAgfQ0KDQogICAgICAgIF9NeWxpc3QmIF9MaXN0Ow0KICAgICAgICBjb25z
dCBfTm9kZXB0ciBfUHJlZGVjZXNzb3I7DQogICAgICAgIF9Ob2RlcHRyIF9OZXh0Ow0KI2xpbmUg
MTE0MiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4
aGFzaCINCiAgICB9Ow0KDQogICAgX05vZGVwdHIgX1VuY2hlY2tlZF9lcmFzZShfTm9kZXB0ciBf
Rmlyc3QsIGNvbnN0IF9Ob2RlcHRyIF9MYXN0KSBub2V4Y2VwdChfTm90aHJvd19oYXNoPF9UcmFp
dHMsIGtleV90eXBlPikgew0KICAgICAgICBpZiAoX0ZpcnN0ID09IF9MYXN0KSB7DQogICAgICAg
ICAgICByZXR1cm4gX0xhc3Q7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCBhdXRvIF9FbmQg
ICAgICAgICAgID0gX0xpc3QuX015cGFpci5fTXl2YWwyLl9NeWhlYWQ7DQogICAgICAgIGNvbnN0
IGF1dG8gX0J1Y2tldF9ib3VuZHMgPSBfVmVjLl9NeXBhaXIuX015dmFsMi5fTXlmaXJzdDsNCiAg
ICAgICAgX1JhbmdlX2VyYXNlciBfRXJhc2Vye19MaXN0LCBfRmlyc3R9Ow0KICAgICAgICB7DQog
ICAgICAgICAgICANCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX1ByZWRlY2Vzc29yID0gX0ZpcnN0
LT5fUHJldjsNCiAgICAgICAgICAgIGNvbnN0IHNpemVfdHlwZSBfQnVja2V0ID0gYnVja2V0KF9U
cmFpdHM6Ol9LZm4oX0VyYXNlci5fTmV4dC0+X015dmFsKSk7IA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICBfTm9kZXB0ciYgX0J1Y2tldF9sbyAgID0gX0J1Y2tldF9ib3VuZHNbX0J1Y2tldCA8
PCAxXS5fUHRyOw0KICAgICAgICAgICAgX05vZGVwdHImIF9CdWNrZXRfaGkgICA9IF9CdWNrZXRf
Ym91bmRzWyhfQnVja2V0IDw8IDEpICsgMV0uX1B0cjsNCiAgICAgICAgICAgIGNvbnN0IGJvb2wg
X1VwZGF0ZV9sbyAgPSBfQnVja2V0X2xvID09IF9FcmFzZXIuX05leHQ7DQogICAgICAgICAgICBj
b25zdCBfTm9kZXB0ciBfT2xkX2hpID0gX0J1Y2tldF9oaTsNCiAgICAgICAgICAgIGZvciAoOzsp
IHsgDQogICAgICAgICAgICAgICAgY29uc3QgYm9vbCBfQXRfYnVja2V0X2JhY2sgPSBfRXJhc2Vy
Ll9OZXh0ID09IF9PbGRfaGk7DQogICAgICAgICAgICAgICAgX0VyYXNlci5fQnVtcF9lcmFzZWQo
KTsNCiAgICAgICAgICAgICAgICBpZiAoX0F0X2J1Y2tldF9iYWNrKSB7DQogICAgICAgICAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChf
RXJhc2VyLl9OZXh0ID09IF9MYXN0KSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChfVXBkYXRl
X2xvKSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAg
IF9CdWNrZXRfbG8gPSBfRXJhc2VyLl9OZXh0Ow0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIF9MYXN0Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKF9VcGRhdGVfbG8pIHsNCiAgICAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgICBfQnVja2V0X2xvID0gX0VuZDsNCiAgICAgICAgICAgICAgICBf
QnVja2V0X2hpID0gX0VuZDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
X0J1Y2tldF9oaSA9IF9QcmVkZWNlc3NvcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQog
ICAgICAgIA0KICAgICAgICB3aGlsZSAoX0VyYXNlci5fTmV4dCAhPSBfTGFzdCkgew0KICAgICAg
ICAgICAgY29uc3Qgc2l6ZV90eXBlIF9CdWNrZXQgPSBidWNrZXQoX1RyYWl0czo6X0tmbihfRXJh
c2VyLl9OZXh0LT5fTXl2YWwpKTsgDQogICAgICAgICAgICANCiAgICAgICAgICAgIF9Ob2RlcHRy
JiBfQnVja2V0X2xvICAgPSBfQnVja2V0X2JvdW5kc1tfQnVja2V0IDw8IDFdLl9QdHI7DQogICAg
ICAgICAgICBfTm9kZXB0ciYgX0J1Y2tldF9oaSAgID0gX0J1Y2tldF9ib3VuZHNbKF9CdWNrZXQg
PDwgMSkgKyAxXS5fUHRyOw0KICAgICAgICAgICAgY29uc3QgX05vZGVwdHIgX09sZF9oaSA9IF9C
dWNrZXRfaGk7DQogICAgICAgICAgICBmb3IgKDs7KSB7IA0KICAgICAgICAgICAgICAgIGNvbnN0
IGJvb2wgX0F0X2J1Y2tldF9iYWNrID0gX0VyYXNlci5fTmV4dCA9PSBfT2xkX2hpOw0KICAgICAg
ICAgICAgICAgIF9FcmFzZXIuX0J1bXBfZXJhc2VkKCk7DQogICAgICAgICAgICAgICAgaWYgKF9B
dF9idWNrZXRfYmFjaykgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAg
ICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoX0VyYXNlci5fTmV4dCA9PSBfTGFzdCkgew0K
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgX0J1Y2tldF9sbyA9IF9F
cmFzZXIuX05leHQ7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBfTGFzdDsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgX0J1
Y2tldF9sbyA9IF9FbmQ7DQogICAgICAgICAgICBfQnVja2V0X2hpID0gX0VuZDsNCiAgICAgICAg
fQ0KDQogICAgICAgIHJldHVybiBfTGFzdDsNCiAgICB9DQoNCnB1YmxpYzoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0l0ZXIgPSBpdGVyYXRvciwgZW5hYmxlX2lmX3Q8IWlzX3NhbWVfdjxfSXRlciwg
Y29uc3RfaXRlcmF0b3I+LCBpbnQ+ID0gMD4NCiAgICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBf
UGxpc3QpIG5vZXhjZXB0KF9Ob3Rocm93X2hhc2g8X1RyYWl0cywga2V5X3R5cGU+KSAgew0KICAg
ICAgICByZXR1cm4gX0xpc3QuX01ha2VfaXRlcihfVW5jaGVja2VkX2VyYXNlKF9QbGlzdC5fUHRy
KSk7DQogICAgfQ0KDQogICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgX1BsaXN0KSBu
b2V4Y2VwdChfTm90aHJvd19oYXNoPF9UcmFpdHMsIGtleV90eXBlPikgIHsNCiAgICAgICAgcmV0
dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX1VuY2hlY2tlZF9lcmFzZShfUGxpc3QuX1B0cikpOw0KICAg
IH0NCg0KICAgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIF9GaXJzdCwgY29uc3RfaXRl
cmF0b3IgX0xhc3QpIG5vZXhjZXB0KA0KICAgICAgICBfTm90aHJvd19oYXNoPF9UcmFpdHMsIGtl
eV90eXBlPikgIHsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX1VuY2hlY2tlZF9l
cmFzZShfRmlyc3QuX1B0ciwgX0xhc3QuX1B0cikpOw0KICAgIH0NCg0KICAgIHNpemVfdHlwZSBl
cmFzZShjb25zdCBrZXlfdHlwZSYgX0tleXZhbCkgbm9leGNlcHQoDQogICAgICAgIF9Ob3Rocm93
X2hhc2g8X1RyYWl0cywga2V5X3R5cGU+IA0KICAgICAgICAmJiAoIV9NdWx0aSB8fCBfTm90aHJv
d19jb21wYXJlPF9UcmFpdHMsIGtleV90eXBlLCBrZXlfdHlwZT4pICkgIHsNCiAgICAgICAgY29u
c3Qgc2l6ZV90IF9IYXNodmFsID0gX1RyYWl0c29iaihfS2V5dmFsKTsNCiAgICAgICAgaWYgY29u
c3RleHByIChfTXVsdGkpIHsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX1doZXJlID0gX0VxdWFs
X3JhbmdlKF9LZXl2YWwsIF9IYXNodmFsKTsNCiAgICAgICAgICAgIF9VbmNoZWNrZWRfZXJhc2Uo
X1doZXJlLl9GaXJzdC5fUHRyLCBfV2hlcmUuX0xhc3QuX1B0cik7DQogICAgICAgICAgICByZXR1
cm4gX1doZXJlLl9EaXN0YW5jZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGNvbnN0
IGF1dG8gX1RhcmdldCA9IF9GaW5kX2xhc3QoX0tleXZhbCwgX0hhc2h2YWwpLl9EdXBsaWNhdGU7
DQogICAgICAgICAgICBpZiAoX1RhcmdldCkgew0KICAgICAgICAgICAgICAgIF9FcmFzZV9idWNr
ZXQoX1RhcmdldCwgX0hhc2h2YWwgJiBfTWFzayk7DQogICAgICAgICAgICAgICAgX0xpc3QuX1Vu
Y2hlY2tlZF9lcmFzZShfVGFyZ2V0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gMTsNCiAgICAg
ICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICB2b2lkIGNsZWFyKCkgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgY29uc3QgYXV0
byBfT2xkc2l6ZSA9IF9MaXN0Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBpZiAo
X09sZHNpemUgPT0gMCkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAg
ICAgaWYgY29uc3RleHByIChfTm90aHJvd19oYXNoPF9UcmFpdHMsIGtleV90eXBlPikgew0KICAg
ICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKGJ1
Y2tldF9jb3VudCgpIC8gOCA+IF9PbGRzaXplKSB7DQogICAgICAgICAgICAgICAgY29uc3QgYXV0
byBfSGVhZCA9IF9MaXN0Ll9NeXBhaXIuX015dmFsMi5fTXloZWFkOw0KICAgICAgICAgICAgICAg
IF9VbmNoZWNrZWRfZXJhc2UoX0hlYWQtPl9OZXh0LCBfSGVhZCk7DQogICAgICAgICAgICAgICAg
cmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgDQogICAgICAgIF9M
aXN0LmNsZWFyKCk7DQogICAgICAgIDo6c3RkOjogZmlsbChfVmVjLl9NeXBhaXIuX015dmFsMi5f
TXlmaXJzdCwgX1ZlYy5fTXlwYWlyLl9NeXZhbDIuX015bGFzdCwgX1VuY2hlY2tlZF9lbmQoKSk7
DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5dHk+DQogICAgW1tu
b2Rpc2NhcmRdXSBfTm9kZXB0ciBfRmluZF9maXJzdChjb25zdCBfS2V5dHkmIF9LZXl2YWwsIGNv
bnN0IHNpemVfdCBfSGFzaHZhbCkgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgY29uc3Qgc2l6
ZV90eXBlIF9CdWNrZXQgPSBfSGFzaHZhbCAmIF9NYXNrOw0KICAgICAgICBfTm9kZXB0ciBfV2hl
cmUgICAgICAgICA9IF9WZWMuX015cGFpci5fTXl2YWwyLl9NeWZpcnN0W19CdWNrZXQgPDwgMV0u
X1B0cjsNCiAgICAgICAgY29uc3QgX05vZGVwdHIgX0VuZCAgICAgPSBfTGlzdC5fTXlwYWlyLl9N
eXZhbDIuX015aGVhZDsNCiAgICAgICAgaWYgKF9XaGVyZSA9PSBfRW5kKSB7DQogICAgICAgICAg
ICByZXR1cm4gX0VuZDsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IF9Ob2RlcHRyIF9CdWNr
ZXRfaGkgPSBfVmVjLl9NeXBhaXIuX015dmFsMi5fTXlmaXJzdFsoX0J1Y2tldCA8PCAxKSArIDFd
Ll9QdHI7DQogICAgICAgIGZvciAoOzspIHsNCiAgICAgICAgICAgIGlmICghX1RyYWl0c29iaihf
VHJhaXRzOjpfS2ZuKF9XaGVyZS0+X015dmFsKSwgX0tleXZhbCkpIHsNCiAgICAgICAgICAgICAg
ICBpZiBjb25zdGV4cHIgKCFfVHJhaXRzOjpfU3RhbmRhcmQpIHsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKF9UcmFpdHNvYmooX0tleXZhbCwgX1RyYWl0czo6X0tmbihfV2hlcmUtPl9NeXZhbCkp
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0VuZDsNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHJldHVybiBfV2hl
cmU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChfV2hlcmUgPT0gX0J1Y2tldF9o
aSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBfRW5kOw0KICAgICAgICAgICAgfQ0KDQogICAg
ICAgICAgICBfV2hlcmUgPSBfV2hlcmUtPl9OZXh0Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAg
dGVtcGxhdGUgPGNsYXNzIF9LZXl0eT4NCiAgICBfTm9kZXB0ciBfRmluZChjb25zdCBfS2V5dHkm
IF9LZXl2YWwsIGNvbnN0IHNpemVfdCBfSGFzaHZhbCkgY29uc3Qgew0KICAgICAgICBpZiBjb25z
dGV4cHIgKF9UcmFpdHM6Ol9NdWx0aSkgew0KICAgICAgICAgICAgcmV0dXJuIF9GaW5kX2ZpcnN0
KF9LZXl2YWwsIF9IYXNodmFsKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgYXV0byBfVGFyZ2V0ID0gX0ZpbmRfbGFzdChfS2V5dmFsLCBfSGFzaHZhbCkuX0R1
cGxpY2F0ZTsNCiAgICAgICAgICAgIGlmIChfVGFyZ2V0KSB7DQogICAgICAgICAgICAgICAgcmV0
dXJuIF9UYXJnZXQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBfTGlzdC5f
TXlwYWlyLl9NeXZhbDIuX015aGVhZDsNCiAgICAgICAgfQ0KICAgIH0NCg0KcHVibGljOg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfS2V5dHkgPSB2b2lkPg0KICAgIFtbbm9kaXNjYXJkXV0gaXRlcmF0
b3IgZmluZCh0eXBlbmFtZSBfVHJhaXRzOjp0ZW1wbGF0ZSBfRGVkdWNlX2tleTxfS2V5dHk+IF9L
ZXl2YWwpIHsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX0ZpbmQoX0tleXZhbCwg
X1RyYWl0c29iaihfS2V5dmFsKSkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5
dHkgPSB2b2lkPg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RfaXRlcmF0b3IgZmluZCh0eXBlbmFt
ZSBfVHJhaXRzOjp0ZW1wbGF0ZSBfRGVkdWNlX2tleTxfS2V5dHk+IF9LZXl2YWwpIGNvbnN0IHsN
CiAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2NvbnN0X2l0ZXIoX0ZpbmQoX0tleXZhbCwgX1Ry
YWl0c29iaihfS2V5dmFsKSkpOw0KICAgIH0NCg0KDQoNCg0KDQoNCiNsaW5lIDEzNDMgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJw
cmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2giDQoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleXR5ID0gdm9pZD4NCiAgICBbW25vZGlzY2FyZF1dIHNpemVf
dHlwZSBjb3VudCh0eXBlbmFtZSBfVHJhaXRzOjp0ZW1wbGF0ZSBfRGVkdWNlX2tleTxfS2V5dHk+
IF9LZXl2YWwpIGNvbnN0IHsNCiAgICAgICAgY29uc3Qgc2l6ZV90IF9IYXNodmFsID0gX1RyYWl0
c29iaihfS2V5dmFsKTsNCiAgICAgICAgaWYgY29uc3RleHByIChfTXVsdGkpIHsNCiAgICAgICAg
ICAgIHJldHVybiBfRXF1YWxfcmFuZ2UoX0tleXZhbCwgX0hhc2h2YWwpLl9EaXN0YW5jZTsNCiAg
ICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihfRmlu
ZF9sYXN0KF9LZXl2YWwsIF9IYXNodmFsKS5fRHVwbGljYXRlKTsNCiAgICAgICAgfQ0KICAgIH0N
Cg0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAyMjogIiAiVGhlIGhhc2hfbWVvdyBh
bmQgdW5vcmRlcmVkX21lb3cgY29udGFpbmVycycgbm9uLVN0YW5kYXJkIGxvd2VyX2JvdW5kKCkg
bWVtYmVyIHdhcyBwcm92aWRlZCBmb3IgaW50ZXJmYWNlICIgImNvbXBhdGliaWxpdHkgd2l0aCB0
aGUgb3JkZXJlZCBhc3NvY2lhdGl2ZSBjb250YWluZXJzLCBhbmQgZG9lc24ndCBtYXRjaCB0aGUg
c2VtYW50aWNzIG9mIHRoZSAiICJoYXNoX21lb3cgb3IgdW5vcmRlcmVkX21lb3cgY29udGFpbmVy
cy4gUGxlYXNlIHVzZSB0aGUgZmluZCgpIG1lbWJlciBpbnN0ZWFkLiBZb3UgY2FuIGRlZmluZSAi
ICJfU0lMRU5DRV9TVERFWFRfSEFTSF9MT1dFUl9CT1VORF9ERVBSRUNBVElPTl9XQVJOSU5HIHRv
IHN1cHByZXNzIHRoaXMgZGVwcmVjYXRpb24uIildXSBbW25vZGlzY2FyZF1dIGl0ZXJhdG9yIGxv
d2VyX2JvdW5kKGNvbnN0IGtleV90eXBlJiBfS2V5dmFsKSB7DQogICAgICAgIHJldHVybiBfTGlz
dC5fTWFrZV9pdGVyKF9GaW5kKF9LZXl2YWwsIF9UcmFpdHNvYmooX0tleXZhbCkpKTsNCiAgICB9
DQoNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMjI6ICIgIlRoZSBoYXNoX21lb3cg
YW5kIHVub3JkZXJlZF9tZW93IGNvbnRhaW5lcnMnIG5vbi1TdGFuZGFyZCBsb3dlcl9ib3VuZCgp
IG1lbWJlciB3YXMgcHJvdmlkZWQgZm9yIGludGVyZmFjZSAiICJjb21wYXRpYmlsaXR5IHdpdGgg
dGhlIG9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVycywgYW5kIGRvZXNuJ3QgbWF0Y2ggdGhl
IHNlbWFudGljcyBvZiB0aGUgIiAiaGFzaF9tZW93IG9yIHVub3JkZXJlZF9tZW93IGNvbnRhaW5l
cnMuIFBsZWFzZSB1c2UgdGhlIGZpbmQoKSBtZW1iZXIgaW5zdGVhZC4gWW91IGNhbiBkZWZpbmUg
IiAiX1NJTEVOQ0VfU1RERVhUX0hBU0hfTE9XRVJfQk9VTkRfREVQUkVDQVRJT05fV0FSTklORyB0
byBzdXBwcmVzcyB0aGlzIGRlcHJlY2F0aW9uLiIpXV0gW1tub2Rpc2NhcmRdXSBjb25zdF9pdGVy
YXRvciBsb3dlcl9ib3VuZChjb25zdCBrZXlfdHlwZSYgX0tleXZhbCkgY29uc3Qgew0KICAgICAg
ICByZXR1cm4gX0xpc3QuX01ha2VfY29uc3RfaXRlcihfRmluZChfS2V5dmFsLCBfVHJhaXRzb2Jq
KF9LZXl2YWwpKSk7DQogICAgfQ0KDQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDIz
OiAiICJUaGUgaGFzaF9tZW93IGFuZCB1bm9yZGVyZWRfbWVvdyBjb250YWluZXJzJyBub24tU3Rh
bmRhcmQgdXBwZXJfYm91bmQoKSBtZW1iZXIgd2FzIHByb3ZpZGVkIGZvciBpbnRlcmZhY2UgIiAi
Y29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvcmRlcmVkIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMsIGFu
ZCBkb2Vzbid0IG1hdGNoIHRoZSBzZW1hbnRpY3Mgb2YgdGhlICIgImhhc2hfbWVvdyBvciB1bm9y
ZGVyZWRfbWVvdyBjb250YWluZXJzLiBQbGVhc2UgdXNlIHRoZSBzZWNvbmQgaXRlcmF0b3IgcmV0
dXJuZWQgYnkgdGhlICIgImVxdWFsX3JhbmdlKCkgbWVtYmVyIGluc3RlYWQuIFlvdSBjYW4gZGVm
aW5lICIgIl9TSUxFTkNFX1NUREVYVF9IQVNIX1VQUEVSX0JPVU5EX0RFUFJFQ0FUSU9OX1dBUk5J
TkcgdG8gc3VwcHJlc3MgdGhpcyBkZXByZWNhdGlvbi4iKV1dIFtbbm9kaXNjYXJkXV0gaXRlcmF0
b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9LZXl2YWwpIHsNCiAgICAgICAgYXV0byBf
VGFyZ2V0ID0gX0ZpbmRfbGFzdChfS2V5dmFsLCBfVHJhaXRzb2JqKF9LZXl2YWwpKS5fRHVwbGlj
YXRlOw0KICAgICAgICBpZiAoX1RhcmdldCkgew0KICAgICAgICAgICAgX1RhcmdldCA9IF9UYXJn
ZXQtPl9OZXh0Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX1RhcmdldCA9IF9MaXN0
Ll9NeXBhaXIuX015dmFsMi5fTXloZWFkOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIF9M
aXN0Ll9NYWtlX2l0ZXIoX1RhcmdldCk7DQogICAgfQ0KDQogICAgW1tkZXByZWNhdGVkKCAid2Fy
bmluZyBTVEw0MDIzOiAiICJUaGUgaGFzaF9tZW93IGFuZCB1bm9yZGVyZWRfbWVvdyBjb250YWlu
ZXJzJyBub24tU3RhbmRhcmQgdXBwZXJfYm91bmQoKSBtZW1iZXIgd2FzIHByb3ZpZGVkIGZvciBp
bnRlcmZhY2UgIiAiY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvcmRlcmVkIGFzc29jaWF0aXZlIGNv
bnRhaW5lcnMsIGFuZCBkb2Vzbid0IG1hdGNoIHRoZSBzZW1hbnRpY3Mgb2YgdGhlICIgImhhc2hf
bWVvdyBvciB1bm9yZGVyZWRfbWVvdyBjb250YWluZXJzLiBQbGVhc2UgdXNlIHRoZSBzZWNvbmQg
aXRlcmF0b3IgcmV0dXJuZWQgYnkgdGhlICIgImVxdWFsX3JhbmdlKCkgbWVtYmVyIGluc3RlYWQu
IFlvdSBjYW4gZGVmaW5lICIgIl9TSUxFTkNFX1NUREVYVF9IQVNIX1VQUEVSX0JPVU5EX0RFUFJF
Q0FUSU9OX1dBUk5JTkcgdG8gc3VwcHJlc3MgdGhpcyBkZXByZWNhdGlvbi4iKV1dIFtbbm9kaXNj
YXJkXV0gY29uc3RfaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9LZXl2YWwp
IGNvbnN0IHsNCiAgICAgICAgYXV0byBfVGFyZ2V0ID0gX0ZpbmRfbGFzdChfS2V5dmFsLCBfVHJh
aXRzb2JqKF9LZXl2YWwpKS5fRHVwbGljYXRlOw0KICAgICAgICBpZiAoX1RhcmdldCkgew0KICAg
ICAgICAgICAgX1RhcmdldCA9IF9UYXJnZXQtPl9OZXh0Ow0KICAgICAgICB9IGVsc2Ugew0KICAg
ICAgICAgICAgX1RhcmdldCA9IF9MaXN0Ll9NeXBhaXIuX015dmFsMi5fTXloZWFkOw0KICAgICAg
ICB9DQoNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2NvbnN0X2l0ZXIoX1RhcmdldCk7DQog
ICAgfQ0KDQpwcml2YXRlOg0KICAgIHN0cnVjdCBfRXF1YWxfcmFuZ2VfcmVzdWx0IHsNCiAgICAg
ICAgX1VuY2hlY2tlZF9jb25zdF9pdGVyYXRvciBfRmlyc3Q7DQogICAgICAgIF9VbmNoZWNrZWRf
Y29uc3RfaXRlcmF0b3IgX0xhc3Q7DQogICAgICAgIHNpemVfdHlwZSBfRGlzdGFuY2U7DQogICAg
fTsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5dHk+DQogICAgW1tub2Rpc2NhcmRdXSBfRXF1
YWxfcmFuZ2VfcmVzdWx0IF9FcXVhbF9yYW5nZShjb25zdCBfS2V5dHkmIF9LZXl2YWwsIGNvbnN0
IHNpemVfdCBfSGFzaHZhbCkgY29uc3QNCiAgICAgICAgbm9leGNlcHQoX05vdGhyb3dfY29tcGFy
ZTxfVHJhaXRzLCBrZXlfdHlwZSwgX0tleXR5PiYmIF9Ob3Rocm93X2NvbXBhcmU8X1RyYWl0cywg
X0tleXR5LCBrZXlfdHlwZT4pIHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9CdWNrZXQgICAg
ICAgICAgICAgID0gX0hhc2h2YWwgJiBfTWFzazsNCiAgICAgICAgX1VuY2hlY2tlZF9jb25zdF9p
dGVyYXRvciBfV2hlcmUgICAgID0gX1ZlYy5fTXlwYWlyLl9NeXZhbDIuX015Zmlyc3RbX0J1Y2tl
dCA8PCAxXTsNCiAgICAgICAgY29uc3QgX1VuY2hlY2tlZF9jb25zdF9pdGVyYXRvciBfRW5kID0g
X1VuY2hlY2tlZF9lbmQoKTsNCiAgICAgICAgaWYgKF9XaGVyZSA9PSBfRW5kKSB7DQogICAgICAg
ICAgICByZXR1cm4ge19FbmQsIF9FbmQsIDB9Ow0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3Qg
X1VuY2hlY2tlZF9jb25zdF9pdGVyYXRvciBfQnVja2V0X2hpID0gX1ZlYy5fTXlwYWlyLl9NeXZh
bDIuX015Zmlyc3RbKF9CdWNrZXQgPDwgMSkgKyAxXTsNCiAgICAgICAgZm9yICg7IF9UcmFpdHNv
YmooX1RyYWl0czo6X0tmbigqX1doZXJlKSwgX0tleXZhbCk7ICsrX1doZXJlKSB7DQogICAgICAg
ICAgICBpZiAoX1doZXJlID09IF9CdWNrZXRfaGkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4g
e19FbmQsIF9FbmQsIDB9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYg
Y29uc3RleHByICghX1RyYWl0czo6X1N0YW5kYXJkKSB7DQogICAgICAgICAgICBpZiAoX1RyYWl0
c29iaihfS2V5dmFsLCBfVHJhaXRzOjpfS2ZuKCpfV2hlcmUpKSkgew0KICAgICAgICAgICAgICAg
IHJldHVybiB7X0VuZCwgX0VuZCwgMH07DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAg
ICAgICBjb25zdCBfVW5jaGVja2VkX2NvbnN0X2l0ZXJhdG9yIF9GaXJzdCA9IF9XaGVyZTsNCiAg
ICAgICAgaWYgY29uc3RleHByIChfTXVsdGkpIHsNCiAgICAgICAgICAgIHNpemVfdHlwZSBfRGlz
dGFuY2UgPSAwOw0KICAgICAgICAgICAgZm9yICg7Oykgew0KICAgICAgICAgICAgICAgICsrX0Rp
c3RhbmNlOw0KDQogICAgICAgICAgICAgICAgY29uc3QgYm9vbCBfQXRfYnVja2V0X2VuZCA9IF9X
aGVyZSA9PSBfQnVja2V0X2hpOw0KICAgICAgICAgICAgICAgICsrX1doZXJlOw0KICAgICAgICAg
ICAgICAgIGlmIChfQXRfYnVja2V0X2VuZCkgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoX1RyYWl0c29iaihfS2V5
dmFsLCBfVHJhaXRzOjpfS2ZuKCpfV2hlcmUpKSkgew0KICAgICAgICAgICAgICAgICAgICBicmVh
azsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVy
biB7X0ZpcnN0LCBfV2hlcmUsIF9EaXN0YW5jZX07DQogICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICArK19XaGVyZTsgDQogICAgICAgICAgICByZXR1cm4ge19GaXJzdCwgX1doZXJlLCAxfTsN
CiAgICAgICAgfQ0KICAgIH0NCg0KcHVibGljOg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5dHkg
PSB2b2lkPg0KICAgIFtbbm9kaXNjYXJkXV0gcGFpcjxpdGVyYXRvciwgaXRlcmF0b3I+IGVxdWFs
X3JhbmdlKHR5cGVuYW1lIF9UcmFpdHM6OnRlbXBsYXRlIF9EZWR1Y2Vfa2V5PF9LZXl0eT4gX0tl
eXZhbCkgew0KICAgICAgICBjb25zdCBhdXRvIF9SZXN1bHQgPSBfRXF1YWxfcmFuZ2UoX0tleXZh
bCwgX1RyYWl0c29iaihfS2V5dmFsKSk7DQogICAgICAgIHJldHVybiB7X0xpc3QuX01ha2VfaXRl
cihfUmVzdWx0Ll9GaXJzdC5fUHRyKSwgX0xpc3QuX01ha2VfaXRlcihfUmVzdWx0Ll9MYXN0Ll9Q
dHIpfTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleXR5ID0gdm9pZD4NCiAgICBb
W25vZGlzY2FyZF1dIHBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPiBlcXVhbF9y
YW5nZSgNCiAgICAgICAgdHlwZW5hbWUgX1RyYWl0czo6dGVtcGxhdGUgX0RlZHVjZV9rZXk8X0tl
eXR5PiBfS2V5dmFsKSBjb25zdCB7DQogICAgICAgIGNvbnN0IGF1dG8gX1Jlc3VsdCA9IF9FcXVh
bF9yYW5nZShfS2V5dmFsLCBfVHJhaXRzb2JqKF9LZXl2YWwpKTsNCiAgICAgICAgcmV0dXJuIHtf
TGlzdC5fTWFrZV9jb25zdF9pdGVyKF9SZXN1bHQuX0ZpcnN0Ll9QdHIpLCBfTGlzdC5fTWFrZV9j
b25zdF9pdGVyKF9SZXN1bHQuX0xhc3QuX1B0cil9Ow0KICAgIH0NCg0KICAgIHZvaWQgc3dhcChf
SGFzaCYgX1JpZ2h0KSBub2V4Y2VwdChub2V4Y2VwdChfVHJhaXRzb2JqLnN3YXAoX1JpZ2h0Ll9U
cmFpdHNvYmopKSkgIHsNCiAgICAgICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBhZGRyZXNzb2YoX1Jp
Z2h0KSkgew0KICAgICAgICAgICAgX1RyYWl0c29iai5zd2FwKF9SaWdodC5fVHJhaXRzb2JqKTsN
CiAgICAgICAgICAgIF9Qb2NzKF9MaXN0Ll9HZXRhbCgpLCBfUmlnaHQuX0xpc3QuX0dldGFsKCkp
Ow0KICAgICAgICAgICAgX1BvY3MoX1ZlYy5fTXlwYWlyLl9HZXRfZmlyc3QoKSwgX1JpZ2h0Ll9W
ZWMuX015cGFpci5fR2V0X2ZpcnN0KCkpOw0KICAgICAgICAgICAgX1N3YXBfdmFsKF9SaWdodCk7
DQogICAgICAgIH0NCiAgICB9DQoNCg0KICAgIHVzaW5nIG5vZGVfdHlwZSA9IHR5cGVuYW1lIF9U
cmFpdHM6Om5vZGVfdHlwZTsNCg0KICAgIG5vZGVfdHlwZSBleHRyYWN0KGNvbnN0IGNvbnN0X2l0
ZXJhdG9yIF9XaGVyZSkgew0KDQoNCg0KDQojbGluZSAxNDcwICJDOlxcUHJvZ3JhbSBGaWxlcyAo
eDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29s
c1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhoYXNoIg0KDQogICAgICAgIHJldHVybiBu
b2RlX3R5cGU6Ol9NYWtlKF9FeHRyYWN0KF9XaGVyZS5fVW53cmFwcGVkKCkpLCBfTGlzdC5fR2V0
YWwoKSk7DQogICAgfQ0KDQogICAgbm9kZV90eXBlIGV4dHJhY3QoY29uc3Qga2V5X3R5cGUmIF9L
ZXl2YWwpIHsNCiAgICAgICAgY29uc3QgYXV0byBfUHRyID0gX0V4dHJhY3QoX0tleXZhbCk7DQog
ICAgICAgIGlmICghX1B0cikgew0KICAgICAgICAgICAgcmV0dXJuIG5vZGVfdHlwZXt9Ow0KICAg
ICAgICB9DQoNCiAgICAgICAgcmV0dXJuIG5vZGVfdHlwZTo6X01ha2UoX1B0ciwgX0xpc3QuX0dl
dGFsKCkpOw0KICAgIH0NCg0KICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBfSGlu
dCwgbm9kZV90eXBlJiYgX0hhbmRsZSkgew0KICAgICAgICBpZiAoX0hhbmRsZS5lbXB0eSgpKSB7
DQogICAgICAgICAgICByZXR1cm4gZW5kKCk7DQogICAgICAgIH0NCg0KDQoNCiNsaW5lIDE0OTEg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2gi
DQoNCiAgICAgICAgY29uc3QgYXV0byYgX0tleXZhbCAgID0gX1RyYWl0czo6X0tmbihfSGFuZGxl
Ll9HZXRwdHIoKS0+X015dmFsKTsNCiAgICAgICAgY29uc3Qgc2l6ZV90IF9IYXNodmFsID0gX1Ry
YWl0c29iaihfS2V5dmFsKTsNCiAgICAgICAgYXV0byBfVGFyZ2V0ICAgICAgICAgID0gX0ZpbmRf
aGludChfSGludC5fUHRyLCBfS2V5dmFsLCBfSGFzaHZhbCk7DQogICAgICAgIGlmIGNvbnN0ZXhw
ciAoIV9UcmFpdHM6Ol9NdWx0aSkgew0KICAgICAgICAgICAgaWYgKF9UYXJnZXQuX0R1cGxpY2F0
ZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBfTGlzdC5fTWFrZV9pdGVyKF9UYXJnZXQuX0R1
cGxpY2F0ZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBfQ2hlY2tfbWF4
X3NpemUoKTsNCiAgICAgICAgaWYgKF9DaGVja19yZWhhc2hfcmVxdWlyZWRfMSgpKSB7DQogICAg
ICAgICAgICBfUmVoYXNoX2Zvcl8xKCk7DQogICAgICAgICAgICBfVGFyZ2V0ID0gX0ZpbmRfaGlu
dChfSGludC5fUHRyLCBfS2V5dmFsLCBfSGFzaHZhbCk7DQogICAgICAgIH0NCg0KICAgICAgICBj
b25zdCBhdXRvIF9SZWxlYXNlZCA9IF9IYW5kbGUuX1JlbGVhc2UoKTsNCiAgICAgICAgX0Rlc3Ry
b3lfaW5fcGxhY2UoX1JlbGVhc2VkLT5fTmV4dCk7IA0KICAgICAgICBfRGVzdHJveV9pbl9wbGFj
ZShfUmVsZWFzZWQtPl9QcmV2KTsNCiAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX0lu
c2VydF9uZXdfbm9kZV9iZWZvcmUoX0hhc2h2YWwsIF9UYXJnZXQuX0luc2VydF9iZWZvcmUsIF9S
ZWxlYXNlZCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcz4NCiAgICBmcmllbmQgY2xh
c3MgX0hhc2g7DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyX3RyYWl0cz4NCiAgICB2b2lk
IG1lcmdlKF9IYXNoPF9PdGhlcl90cmFpdHM+JiBfVGhhdCkgeyANCiAgICAgICAgc3RhdGljX2Fz
c2VydChpc19zYW1lX3Y8X05vZGVwdHIsIHR5cGVuYW1lIF9IYXNoPF9PdGhlcl90cmFpdHM+Ojpf
Tm9kZXB0cj4sDQogICAgICAgICAgICAibWVyZ2UoKSByZXF1aXJlcyBhbiBhcmd1bWVudCB3aXRo
IGEgY29tcGF0aWJsZSBub2RlIHR5cGUuIik7DQoNCiAgICAgICAgc3RhdGljX2Fzc2VydChpc19z
YW1lX3Y8YWxsb2NhdG9yX3R5cGUsIHR5cGVuYW1lIF9IYXNoPF9PdGhlcl90cmFpdHM+OjphbGxv
Y2F0b3JfdHlwZT4sDQogICAgICAgICAgICAibWVyZ2UoKSByZXF1aXJlcyBhbiBhcmd1bWVudCB3
aXRoIHRoZSBzYW1lIGFsbG9jYXRvciB0eXBlLiIpOw0KDQogICAgICAgIGlmIGNvbnN0ZXhwciAo
aXNfc2FtZV92PF9IYXNoLCBfSGFzaDxfT3RoZXJfdHJhaXRzPj4pIHsNCiAgICAgICAgICAgIGlm
ICh0aGlzID09IDo6c3RkOjogYWRkcmVzc29mKF9UaGF0KSkgew0KICAgICAgICAgICAgICAgIHJl
dHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KDQoNCiNsaW5lIDE1MzUgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxceGhhc2giDQoN
CiAgICAgICAgYXV0byBfRmlyc3QgICAgICA9IF9UaGF0Ll9VbmNoZWNrZWRfYmVnaW4oKTsNCiAg
ICAgICAgY29uc3QgYXV0byBfTGFzdCA9IF9UaGF0Ll9VbmNoZWNrZWRfZW5kKCk7DQogICAgICAg
IHdoaWxlIChfRmlyc3QgIT0gX0xhc3QpIHsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX0NhbmRp
ZGF0ZSA9IF9GaXJzdC5fUHRyOw0KICAgICAgICAgICAgKytfRmlyc3Q7DQogICAgICAgICAgICBj
b25zdCBhdXRvJiBfS2V5dmFsICAgPSBfVHJhaXRzOjpfS2ZuKF9DYW5kaWRhdGUtPl9NeXZhbCk7
DQogICAgICAgICAgICBjb25zdCBzaXplX3QgX0hhc2h2YWwgPSBfVHJhaXRzb2JqKF9LZXl2YWwp
Ow0KICAgICAgICAgICAgYXV0byBfVGFyZ2V0ICAgICAgICAgID0gX0ZpbmRfbGFzdChfS2V5dmFs
LCBfSGFzaHZhbCk7DQogICAgICAgICAgICBpZiBjb25zdGV4cHIgKCFfVHJhaXRzOjpfTXVsdGkp
IHsNCiAgICAgICAgICAgICAgICBpZiAoX1RhcmdldC5fRHVwbGljYXRlKSB7DQogICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0K
ICAgICAgICAgICAgX0NoZWNrX21heF9zaXplKCk7DQogICAgICAgICAgICBpZiAoX0NoZWNrX3Jl
aGFzaF9yZXF1aXJlZF8xKCkpIHsNCiAgICAgICAgICAgICAgICBfUmVoYXNoX2Zvcl8xKCk7DQog
ICAgICAgICAgICAgICAgX1RhcmdldCA9IF9GaW5kX2xhc3QoX0tleXZhbCwgX0hhc2h2YWwpOw0K
ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX1Nv
dXJjZV9idWNrZXQgPSBfSGFzaHZhbCAmIF9UaGF0Ll9NYXNrOw0KICAgICAgICAgICAgX1RoYXQu
X0VyYXNlX2J1Y2tldChfQ2FuZGlkYXRlLCBfU291cmNlX2J1Y2tldCk7DQogICAgICAgICAgICBf
Q2FuZGlkYXRlLT5fUHJldi0+X05leHQgPSBfQ2FuZGlkYXRlLT5fTmV4dDsNCiAgICAgICAgICAg
IF9DYW5kaWRhdGUtPl9OZXh0LT5fUHJldiA9IF9DYW5kaWRhdGUtPl9QcmV2Ow0KICAgICAgICAg
ICAgLS1fVGhhdC5fTGlzdC5fTXlwYWlyLl9NeXZhbDIuX015c2l6ZTsNCiAgICAgICAgICAgIF9E
ZXN0cm95X2luX3BsYWNlKF9DYW5kaWRhdGUtPl9OZXh0KTsgDQogICAgICAgICAgICBfRGVzdHJv
eV9pbl9wbGFjZShfQ2FuZGlkYXRlLT5fUHJldik7DQoNCg0KI2xpbmUgMTU2NyAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx4aGFzaCINCiAgICAgICAg
ICAgICh2b2lkKSBfSW5zZXJ0X25ld19ub2RlX2JlZm9yZShfSGFzaHZhbCwgX1RhcmdldC5fSW5z
ZXJ0X2JlZm9yZSwgX0NhbmRpZGF0ZSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX090aGVyX3RyYWl0cz4NCiAgICB2b2lkIG1lcmdlKF9IYXNoPF9PdGhlcl90cmFp
dHM+JiYgX1RoYXQpIHsgDQogICAgICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZV92PF9Ob2RlcHRy
LCB0eXBlbmFtZSBfSGFzaDxfT3RoZXJfdHJhaXRzPjo6X05vZGVwdHI+LA0KICAgICAgICAgICAg
Im1lcmdlKCkgcmVxdWlyZXMgYW4gYXJndW1lbnQgd2l0aCBhIGNvbXBhdGlibGUgbm9kZSB0eXBl
LiIpOw0KDQogICAgICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZV92PGFsbG9jYXRvcl90eXBlLCB0
eXBlbmFtZSBfSGFzaDxfT3RoZXJfdHJhaXRzPjo6YWxsb2NhdG9yX3R5cGU+LA0KICAgICAgICAg
ICAgIm1lcmdlKCkgcmVxdWlyZXMgYW4gYXJndW1lbnQgd2l0aCB0aGUgc2FtZSBhbGxvY2F0b3Ig
dHlwZS4iKTsNCg0KICAgICAgICBtZXJnZShfVGhhdCk7DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQog
ICAgX05vZGVwdHIgX0V4dHJhY3QoY29uc3QgX1VuY2hlY2tlZF9jb25zdF9pdGVyYXRvciBfV2hl
cmUpIHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9CdWNrZXQgPSBidWNrZXQoX1RyYWl0czo6
X0tmbigqX1doZXJlKSk7DQogICAgICAgIF9FcmFzZV9idWNrZXQoX1doZXJlLl9QdHIsIF9CdWNr
ZXQpOw0KICAgICAgICByZXR1cm4gX0xpc3QuX015cGFpci5fTXl2YWwyLl9Vbmxpbmtub2RlKF9X
aGVyZS5fUHRyKTsNCiAgICB9DQoNCiAgICBfTm9kZXB0ciBfRXh0cmFjdChjb25zdCBrZXlfdHlw
ZSYgX0tleXZhbCkgew0KICAgICAgICBjb25zdCBzaXplX3QgX0hhc2h2YWwgPSBfVHJhaXRzb2Jq
KF9LZXl2YWwpOw0KICAgICAgICBfTm9kZXB0ciBfVGFyZ2V0Ow0KICAgICAgICBpZiBjb25zdGV4
cHIgKF9UcmFpdHM6Ol9NdWx0aSkgew0KICAgICAgICAgICAgX1RhcmdldCA9IF9GaW5kX2ZpcnN0
KF9LZXl2YWwsIF9IYXNodmFsKTsNCiAgICAgICAgICAgIGlmIChfVGFyZ2V0ID09IF9MaXN0Ll9N
eXBhaXIuX015dmFsMi5fTXloZWFkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIF9Ob2RlcHRy
e307DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBfVGFyZ2V0
ID0gX0ZpbmRfbGFzdChfS2V5dmFsLCBfSGFzaHZhbCkuX0R1cGxpY2F0ZTsNCiAgICAgICAgICAg
IGlmIChfVGFyZ2V0ID09IG51bGxwdHIpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX05vZGVw
dHJ7fTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIF9FcmFzZV9idWNrZXQo
X1RhcmdldCwgX0hhc2h2YWwgJiBfTWFzayk7DQogICAgICAgIHJldHVybiBfTGlzdC5fTXlwYWly
Ll9NeXZhbDIuX1VubGlua25vZGUoX1RhcmdldCk7DQogICAgfQ0KDQpwdWJsaWM6DQogICAgY29u
ZGl0aW9uYWxfdDxfVHJhaXRzOjpfTXVsdGksIGl0ZXJhdG9yLCBfSW5zZXJ0X3JldHVybl90eXBl
PGl0ZXJhdG9yLCBub2RlX3R5cGU+PiBpbnNlcnQobm9kZV90eXBlJiYgX0hhbmRsZSkgew0KICAg
ICAgICANCiAgICAgICAgaWYgKF9IYW5kbGUuZW1wdHkoKSkgew0KICAgICAgICAgICAgaWYgY29u
c3RleHByIChfVHJhaXRzOjpfTXVsdGkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZW5kKCk7
DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHJldHVybiB7ZW5kKCksIGZh
bHNlLCA6OnN0ZDo6IG1vdmUoX0hhbmRsZSl9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoN
Cg0KDQojbGluZSAxNjIyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFc
XGluY2x1ZGVcXHhoYXNoIg0KDQogICAgICAgIGNvbnN0IGF1dG8mIF9LZXl2YWwgICA9IF9UcmFp
dHM6Ol9LZm4oX0hhbmRsZS5fR2V0cHRyKCktPl9NeXZhbCk7DQogICAgICAgIGNvbnN0IHNpemVf
dCBfSGFzaHZhbCA9IF9UcmFpdHNvYmooX0tleXZhbCk7DQogICAgICAgIGF1dG8gX1RhcmdldCAg
ICAgICAgICA9IF9GaW5kX2xhc3QoX0tleXZhbCwgX0hhc2h2YWwpOw0KICAgICAgICBpZiBjb25z
dGV4cHIgKCFfVHJhaXRzOjpfTXVsdGkpIHsNCiAgICAgICAgICAgIGlmIChfVGFyZ2V0Ll9EdXBs
aWNhdGUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4ge19MaXN0Ll9NYWtlX2l0ZXIoX1Rhcmdl
dC5fRHVwbGljYXRlKSwgZmFsc2UsIDo6c3RkOjogbW92ZShfSGFuZGxlKX07DQogICAgICAgICAg
ICB9DQogICAgICAgIH0NCg0KICAgICAgICBfQ2hlY2tfbWF4X3NpemUoKTsNCiAgICAgICAgaWYg
KF9DaGVja19yZWhhc2hfcmVxdWlyZWRfMSgpKSB7DQogICAgICAgICAgICBfUmVoYXNoX2Zvcl8x
KCk7DQogICAgICAgICAgICBfVGFyZ2V0ID0gX0ZpbmRfbGFzdChfS2V5dmFsLCBfSGFzaHZhbCk7
DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCBhdXRvIF9SZWxlYXNlZCA9IF9IYW5kbGUuX1Jl
bGVhc2UoKTsNCiAgICAgICAgX0Rlc3Ryb3lfaW5fcGxhY2UoX1JlbGVhc2VkLT5fTmV4dCk7IA0K
ICAgICAgICBfRGVzdHJveV9pbl9wbGFjZShfUmVsZWFzZWQtPl9QcmV2KTsNCiAgICAgICAgY29u
c3QgYXV0byBfTmV3bm9kZSA9IF9JbnNlcnRfbmV3X25vZGVfYmVmb3JlKF9IYXNodmFsLCBfVGFy
Z2V0Ll9JbnNlcnRfYmVmb3JlLCBfUmVsZWFzZWQpOw0KICAgICAgICBpZiBjb25zdGV4cHIgKF9U
cmFpdHM6Ol9NdWx0aSkgew0KICAgICAgICAgICAgcmV0dXJuIF9MaXN0Ll9NYWtlX2l0ZXIoX05l
d25vZGUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIHtfTGlzdC5fTWFr
ZV9pdGVyKF9OZXdub2RlKSwgdHJ1ZSwgbm9kZV90eXBle319Ow0KICAgICAgICB9DQogICAgfQ0K
I2xpbmUgMTY0OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4aGFzaCINCg0KcHJvdGVjdGVkOg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5dHk+DQog
ICAgW1tub2Rpc2NhcmRdXSBfSGFzaF9maW5kX2xhc3RfcmVzdWx0PF9Ob2RlcHRyPiBfRmluZF9s
YXN0KGNvbnN0IF9LZXl0eSYgX0tleXZhbCwgY29uc3Qgc2l6ZV90IF9IYXNodmFsKSBjb25zdCB7
DQogICAgICAgIA0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX0J1Y2tldCA9IF9IYXNodmFsICYg
X01hc2s7DQogICAgICAgIF9Ob2RlcHRyIF9XaGVyZSAgICAgICAgID0gX1ZlYy5fTXlwYWlyLl9N
eXZhbDIuX015Zmlyc3RbKF9CdWNrZXQgPDwgMSkgKyAxXS5fUHRyOw0KICAgICAgICBjb25zdCBf
Tm9kZXB0ciBfRW5kICAgICA9IF9MaXN0Ll9NeXBhaXIuX015dmFsMi5fTXloZWFkOw0KICAgICAg
ICBpZiAoX1doZXJlID09IF9FbmQpIHsNCiAgICAgICAgICAgIHJldHVybiB7X0VuZCwgX05vZGVw
dHJ7fX07DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCBfTm9kZXB0ciBfQnVja2V0X2xvID0g
X1ZlYy5fTXlwYWlyLl9NeXZhbDIuX015Zmlyc3RbX0J1Y2tldCA8PCAxXS5fUHRyOw0KICAgICAg
ICBmb3IgKDs7KSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICghX1RyYWl0c29iaihf
S2V5dmFsLCBfVHJhaXRzOjpfS2ZuKF9XaGVyZS0+X015dmFsKSkpIHsNCiAgICAgICAgICAgICAg
ICBpZiBjb25zdGV4cHIgKCFfVHJhaXRzOjpfU3RhbmRhcmQpIHsNCiAgICAgICAgICAgICAgICAg
ICAgaWYgKF9UcmFpdHNvYmooX1RyYWl0czo6X0tmbihfV2hlcmUtPl9NeXZhbCksIF9LZXl2YWwp
KSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge19XaGVyZS0+X05leHQsIF9Ob2Rl
cHRye319Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAg
ICAgICAgICAgICAgcmV0dXJuIHtfV2hlcmUtPl9OZXh0LCBfV2hlcmV9Ow0KICAgICAgICAgICAg
fQ0KDQogICAgICAgICAgICBpZiAoX1doZXJlID09IF9CdWNrZXRfbG8pIHsNCiAgICAgICAgICAg
ICAgICByZXR1cm4ge19XaGVyZSwgX05vZGVwdHJ7fX07DQogICAgICAgICAgICB9DQoNCiAgICAg
ICAgICAgIF9XaGVyZSA9IF9XaGVyZS0+X1ByZXY7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX0tleXR5Pg0KICAgIFtbbm9kaXNjYXJkXV0gX0hhc2hfZmluZF9sYXN0
X3Jlc3VsdDxfTm9kZXB0cj4gX0ZpbmRfaGludCgNCiAgICAgICAgY29uc3QgX05vZGVwdHIgX0hp
bnQsIGNvbnN0IF9LZXl0eSYgX0tleXZhbCwgY29uc3Qgc2l6ZV90IF9IYXNodmFsKSBjb25zdCB7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYgKF9IaW50ICE9IF9MaXN0Ll9NeXBhaXIu
X015dmFsMi5fTXloZWFkICYmICFfVHJhaXRzb2JqKF9UcmFpdHM6Ol9LZm4oX0hpbnQtPl9NeXZh
bCksIF9LZXl2YWwpKSB7DQogICAgICAgICAgICBpZiBjb25zdGV4cHIgKCFfVHJhaXRzOjpfU3Rh
bmRhcmQpIHsNCiAgICAgICAgICAgICAgICBpZiAoX1RyYWl0c29iaihfS2V5dmFsLCBfVHJhaXRz
OjpfS2ZuKF9IaW50LT5fTXl2YWwpKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gX0Zp
bmRfbGFzdChfS2V5dmFsLCBfSGFzaHZhbCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfQ0KDQogICAgICAgICAgICByZXR1cm4ge19IaW50LT5fTmV4dCwgX0hpbnR9Ow0KICAgICAg
ICB9DQoNCiAgICAgICAgcmV0dXJuIF9GaW5kX2xhc3QoX0tleXZhbCwgX0hhc2h2YWwpOw0KICAg
IH0NCg0KICAgIF9Ob2RlcHRyIF9JbnNlcnRfbmV3X25vZGVfYmVmb3JlKA0KICAgICAgICBjb25z
dCBzaXplX3QgX0hhc2h2YWwsIGNvbnN0IF9Ob2RlcHRyIF9JbnNlcnRfYmVmb3JlLCBjb25zdCBf
Tm9kZXB0ciBfTmV3bm9kZSkgbm9leGNlcHQgew0KICAgICAgICBjb25zdCBfTm9kZXB0ciBfSW5z
ZXJ0X2FmdGVyID0gX0luc2VydF9iZWZvcmUtPl9QcmV2Ow0KICAgICAgICArK19MaXN0Ll9NeXBh
aXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBfQ29uc3RydWN0X2luX3BsYWNlKF9OZXdub2Rl
LT5fTmV4dCwgX0luc2VydF9iZWZvcmUpOw0KICAgICAgICBfQ29uc3RydWN0X2luX3BsYWNlKF9O
ZXdub2RlLT5fUHJldiwgX0luc2VydF9hZnRlcik7DQogICAgICAgIF9JbnNlcnRfYWZ0ZXItPl9O
ZXh0ICA9IF9OZXdub2RlOw0KICAgICAgICBfSW5zZXJ0X2JlZm9yZS0+X1ByZXYgPSBfTmV3bm9k
ZTsNCg0KICAgICAgICBjb25zdCBhdXRvIF9IZWFkICAgICAgICAgICAgICAgID0gX0xpc3QuX015
cGFpci5fTXl2YWwyLl9NeWhlYWQ7DQogICAgICAgIGNvbnN0IGF1dG8gX0J1Y2tldF9hcnJheSAg
ICAgICAgPSBfVmVjLl9NeXBhaXIuX015dmFsMi5fTXlmaXJzdDsNCiAgICAgICAgY29uc3Qgc2l6
ZV90eXBlIF9CdWNrZXQgICAgICAgICA9IF9IYXNodmFsICYgX01hc2s7DQogICAgICAgIF9VbmNo
ZWNrZWRfaXRlcmF0b3ImIF9CdWNrZXRfbG8gPSBfQnVja2V0X2FycmF5W19CdWNrZXQgPDwgMV07
DQogICAgICAgIF9VbmNoZWNrZWRfaXRlcmF0b3ImIF9CdWNrZXRfaGkgPSBfQnVja2V0X2FycmF5
WyhfQnVja2V0IDw8IDEpICsgMV07DQogICAgICAgIGlmIChfQnVja2V0X2xvLl9QdHIgPT0gX0hl
YWQpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgX0J1Y2tldF9sby5fUHRyID0gX05ld25v
ZGU7DQogICAgICAgICAgICBfQnVja2V0X2hpLl9QdHIgPSBfTmV3bm9kZTsNCiAgICAgICAgfSBl
bHNlIGlmIChfQnVja2V0X2xvLl9QdHIgPT0gX0luc2VydF9iZWZvcmUpIHsNCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgX0J1Y2tldF9sby5fUHRyID0gX05ld25vZGU7DQogICAgICAgIH0gZWxz
ZSBpZiAoX0J1Y2tldF9oaS5fUHRyID09IF9JbnNlcnRfYWZ0ZXIpIHsNCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgX0J1Y2tldF9oaS5fUHRyID0gX05ld25vZGU7DQogICAgICAgIH0NCg0KDQoN
Cg0KICAgICAgICByZXR1cm4gX05ld25vZGU7DQogICAgfQ0KDQogICAgdm9pZCBfQ2hlY2tfbWF4
X3NpemUoKSBjb25zdCB7DQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfT2xkc2l6ZSA9IF9MaXN0
Ll9NeXBhaXIuX015dmFsMi5fTXlzaXplOw0KICAgICAgICBpZiAoX09sZHNpemUgPT0gX0xpc3Qu
bWF4X3NpemUoKSkgew0KICAgICAgICAgICAgX1hsZW5ndGhfZXJyb3IoInVub3JkZXJlZF9tYXAv
c2V0IHRvbyBsb25nIik7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBib29sIF9DaGVja19yZWhh
c2hfcmVxdWlyZWRfMSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBl
IF9PbGRzaXplID0gX0xpc3QuX015cGFpci5fTXl2YWwyLl9NeXNpemU7DQogICAgICAgIGNvbnN0
IGF1dG8gX05ld3NpemUgICAgICA9IF9PbGRzaXplICsgMTsNCiAgICAgICAgcmV0dXJuIG1heF9s
b2FkX2ZhY3RvcigpIDwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KF9OZXdzaXplKSAvIHN0YXRpY19jYXN0
PGZsb2F0PihidWNrZXRfY291bnQoKSk7DQogICAgfQ0KDQogICAgdm9pZCBfUmVoYXNoX2Zvcl8x
KCkgew0KICAgICAgICBjb25zdCBhdXRvIF9PbGRzaXplID0gX0xpc3QuX015cGFpci5fTXl2YWwy
Ll9NeXNpemU7DQogICAgICAgIGNvbnN0IGF1dG8gX05ld3NpemUgPSBfT2xkc2l6ZSArIDE7DQog
ICAgICAgIF9Gb3JjZWRfcmVoYXNoKF9EZXNpcmVkX2dyb3dfYnVja2V0X2NvdW50KF9OZXdzaXpl
KSk7DQogICAgfQ0KDQogICAgdm9pZCBfRXJhc2VfYnVja2V0KF9Ob2RlcHRyIF9QbGlzdCwgc2l6
ZV90eXBlIF9CdWNrZXQpIG5vZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIF9Ob2RlcHRyJiBf
QnVja2V0X2xvID0gX1ZlYy5fTXlwYWlyLl9NeXZhbDIuX015Zmlyc3RbX0J1Y2tldCA8PCAxXS5f
UHRyOw0KICAgICAgICBfTm9kZXB0ciYgX0J1Y2tldF9oaSA9IF9WZWMuX015cGFpci5fTXl2YWwy
Ll9NeWZpcnN0WyhfQnVja2V0IDw8IDEpICsgMV0uX1B0cjsNCiAgICAgICAgaWYgKF9CdWNrZXRf
aGkgPT0gX1BsaXN0KSB7DQogICAgICAgICAgICBpZiAoX0J1Y2tldF9sbyA9PSBfUGxpc3QpIHsg
DQogICAgICAgICAgICAgICAgY29uc3QgYXV0byBfRW5kID0gX0xpc3QuX015cGFpci5fTXl2YWwy
Ll9NeWhlYWQ7DQoNCiAgICAgICAgICAgICAgICBfQnVja2V0X2xvID0gX0VuZDsNCiAgICAgICAg
ICAgICAgICBfQnVja2V0X2hpID0gX0VuZDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICAgICAgX0J1Y2tldF9oaSA9IF9QbGlzdC0+X1ByZXY7IA0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9IGVsc2UgaWYgKF9CdWNrZXRfbG8gPT0gX1BsaXN0KSB7DQogICAgICAgICAgICBfQnVj
a2V0X2xvID0gX1BsaXN0LT5fTmV4dDsgDQogICAgICAgIH0NCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIHNpemVfdHlwZSBfTWluX2xvYWRfZmFjdG9yX2J1Y2tldHMoY29uc3Qgc2l6ZV90eXBl
IF9Gb3Jfc2l6ZSkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHNpemVfdHlwZT4oOjogY2VpbGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KF9Gb3Jfc2l6
ZSkgLyBtYXhfbG9hZF9mYWN0b3IoKSkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gc2l6
ZV90eXBlIF9EZXNpcmVkX2dyb3dfYnVja2V0X2NvdW50KGNvbnN0IHNpemVfdHlwZSBfRm9yX3Np
emUpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9PbGRfYnVja2V0
cyA9IGJ1Y2tldF9jb3VudCgpOw0KICAgICAgICBjb25zdCBzaXplX3R5cGUgX1JlcV9idWNrZXRz
ID0gKDo6c3RkOjogbWF4KShfTWluX2J1Y2tldHMsIF9NaW5fbG9hZF9mYWN0b3JfYnVja2V0cyhf
Rm9yX3NpemUpKTsNCiAgICAgICAgaWYgKF9PbGRfYnVja2V0cyA+PSBfUmVxX2J1Y2tldHMpIHsN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIF9PbGRfYnVja2V0czsNCiAgICAgICAg
fQ0KDQogICAgICAgIGlmIChfT2xkX2J1Y2tldHMgPCA1MTIgJiYgX09sZF9idWNrZXRzICogOCA+
PSBfUmVxX2J1Y2tldHMpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIF9PbGRf
YnVja2V0cyAqIDg7DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9SZXFf
YnVja2V0czsNCiAgICB9DQoNCiAgICB2b2lkIF9SZWluc2VydF93aXRoX2ludmFsaWRfdmVjKCkg
eyANCiAgICAgICAgX0ZvcmNlZF9yZWhhc2goX0Rlc2lyZWRfZ3Jvd19idWNrZXRfY291bnQoX0xp
c3Quc2l6ZSgpKSk7DQogICAgfQ0KDQogICAgdm9pZCBfRm9yY2VkX3JlaGFzaChzaXplX3R5cGUg
X0J1Y2tldHMpIHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICANCiAg
ICAgICAgDQogICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgX01heF9zdG9yYWdlX2J1Y2tldHNf
bG9nMiA9IF9GbG9vcl9vZl9sb2dfMihzdGF0aWNfY2FzdDxzaXplX3Q+KF9WZWMubWF4X3NpemUo
KSA+PiAxKSk7DQogICAgICAgIGNvbnN0IGF1dG8gX01heF9zdG9yYWdlX2J1Y2tldHMgICAgICAg
ICAgICAgICA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oMSkgPDwgX01heF9zdG9yYWdlX2J1Y2tl
dHNfbG9nMjsNCiAgICAgICAgaWYgKF9CdWNrZXRzID4gX01heF9zdG9yYWdlX2J1Y2tldHMpIHsN
CiAgICAgICAgICAgIF9YbGVuZ3RoX2Vycm9yKCJpbnZhbGlkIGhhc2ggYnVja2V0IGNvdW50Iik7
DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAg
ICAgICAgX0J1Y2tldHMgICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8c2l6ZV90
eXBlPigxKSA8PCBfQ2VpbGluZ19vZl9sb2dfMihzdGF0aWNfY2FzdDxzaXplX3Q+KF9CdWNrZXRz
KSk7DQogICAgICAgIGNvbnN0IF9VbmNoZWNrZWRfaXRlcmF0b3IgX0VuZCA9IF9VbmNoZWNrZWRf
ZW5kKCk7DQoNCiAgICAgICAgX1ZlYy5fQXNzaWduX2dyb3coX0J1Y2tldHMgPDwgMSwgX0VuZCk7
DQogICAgICAgIF9NYXNrICAgPSBfQnVja2V0cyAtIDE7DQogICAgICAgIF9NYXhpZHggPSBfQnVj
a2V0czsNCg0KICAgICAgICBfQ2xlYXJfZ3VhcmQgX0d1YXJke3RoaXN9Ow0KDQogICAgICAgIF9V
bmNoZWNrZWRfaXRlcmF0b3IgX0luc2VydGVkID0gX1VuY2hlY2tlZF9iZWdpbigpOw0KDQogICAg
ICAgIA0KICAgICAgICBmb3IgKF9VbmNoZWNrZWRfaXRlcmF0b3IgX05leHRfaW5zZXJ0ZWQgPSBf
SW5zZXJ0ZWQ7IF9JbnNlcnRlZCAhPSBfRW5kOyBfSW5zZXJ0ZWQgPSBfTmV4dF9pbnNlcnRlZCkg
ew0KICAgICAgICAgICAgKytfTmV4dF9pbnNlcnRlZDsNCg0KICAgICAgICAgICAgYXV0byYgX0lu
c2VydGVkX2tleSAgICAgPSBfVHJhaXRzOjpfS2ZuKCpfSW5zZXJ0ZWQpOw0KICAgICAgICAgICAg
Y29uc3Qgc2l6ZV90eXBlIF9CdWNrZXQgPSBidWNrZXQoX0luc2VydGVkX2tleSk7DQoNCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICBfVW5jaGVja2VkX2l0ZXJhdG9yJiBf
QnVja2V0X2xvID0gX1ZlYy5fTXlwYWlyLl9NeXZhbDIuX015Zmlyc3RbX0J1Y2tldCA8PCAxXTsN
CiAgICAgICAgICAgIF9VbmNoZWNrZWRfaXRlcmF0b3ImIF9CdWNrZXRfaGkgPSBfVmVjLl9NeXBh
aXIuX015dmFsMi5fTXlmaXJzdFsoX0J1Y2tldCA8PCAxKSArIDFdOw0KDQogICAgICAgICAgICBp
ZiAoX0J1Y2tldF9sbyA9PSBfRW5kKSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgX0J1Y2tldF9sbyA9IF9JbnNlcnRlZDsNCiAgICAgICAgICAgICAgICBfQnVja2V0X2hpID0g
X0luc2VydGVkOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQog
ICAgICAgICAgICANCiAgICAgICAgICAgIF9VbmNoZWNrZWRfY29uc3RfaXRlcmF0b3IgX0luc2Vy
dF9iZWZvcmUgPSBfQnVja2V0X2hpOw0KICAgICAgICAgICAgaWYgKCFfVHJhaXRzb2JqKF9JbnNl
cnRlZF9rZXksIF9UcmFpdHM6Ol9LZm4oKl9JbnNlcnRfYmVmb3JlKSkpIHsNCiAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICArK19JbnNlcnRfYmVmb3Jl
Ow0KICAgICAgICAgICAgICAgIGlmIChfSW5zZXJ0X2JlZm9yZSAhPSBfSW5zZXJ0ZWQpIHsgDQog
ICAgICAgICAgICAgICAgICAgIF9NeWxpc3Q6Ol9TY2FyeV92YWw6Ol9VbmNoZWNrZWRfc3BsaWNl
KF9JbnNlcnRfYmVmb3JlLl9QdHIsIF9JbnNlcnRlZC5fUHRyLCBfTmV4dF9pbnNlcnRlZC5fUHRy
KTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBfQnVja2V0X2hpID0gX0lu
c2VydGVkOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQogICAg
ICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgZm9yICg7Oykgew0KICAgICAgICAg
ICAgICAgIGlmIChfQnVja2V0X2xvID09IF9JbnNlcnRfYmVmb3JlKSB7DQogICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICBfTXlsaXN0OjpfU2NhcnlfdmFs
OjpfVW5jaGVja2VkX3NwbGljZShfSW5zZXJ0X2JlZm9yZS5fUHRyLCBfSW5zZXJ0ZWQuX1B0ciwg
X05leHRfaW5zZXJ0ZWQuX1B0cik7DQogICAgICAgICAgICAgICAgICAgIF9CdWNrZXRfbG8gPSBf
SW5zZXJ0ZWQ7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0N
Cg0KICAgICAgICAgICAgICAgIGlmICghX1RyYWl0c29iaihfSW5zZXJ0ZWRfa2V5LCBfVHJhaXRz
OjpfS2ZuKCotLV9JbnNlcnRfYmVmb3JlKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgICAgICsrX0luc2VydF9iZWZvcmU7DQogICAgICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgX015bGlzdDo6X1NjYXJ5
X3ZhbDo6X1VuY2hlY2tlZF9zcGxpY2UoX0luc2VydF9iZWZvcmUuX1B0ciwgX0luc2VydGVkLl9Q
dHIsIF9OZXh0X2luc2VydGVkLl9QdHIpOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBfR3Vh
cmQuX1RhcmdldCA9IG51bGxwdHI7DQoNCg0KDQoNCiAgICB9DQoNCiAgICBmbG9hdCYgX01heF9i
dWNrZXRfc2l6ZSgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9UcmFpdHNvYmouX0dldF9t
YXhfYnVja2V0X3NpemUoKTsNCiAgICB9DQoNCiAgICBjb25zdCBmbG9hdCYgX01heF9idWNrZXRf
c2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9UcmFpdHNvYmouX0dldF9t
YXhfYnVja2V0X3NpemUoKTsNCiAgICB9DQoNCiAgICBfQWxub2RlJiBfR2V0YWwoKSBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiBfTGlzdC5fR2V0YWwoKTsNCiAgICB9DQoNCiAgICBjb25zdCBf
QWxub2RlJiBfR2V0YWwoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfTGlzdC5f
R2V0YWwoKTsNCiAgICB9DQoNCiAgICBzdHJ1Y3QgX011bHRpX2VxdWFsX2NoZWNrX3Jlc3VsdCB7
DQogICAgICAgIGJvb2wgX0VxdWFsX3Bvc3NpYmxlID0gZmFsc2U7DQogICAgICAgIF9VbmNoZWNr
ZWRfY29uc3RfaXRlcmF0b3IgX1N1YnNlcXVlbnRfZmlyc3R7fTsgDQogICAgfTsNCg0KICAgIFtb
bm9kaXNjYXJkXV0gX011bHRpX2VxdWFsX2NoZWNrX3Jlc3VsdCBfTXVsdGlfZXF1YWxfY2hlY2tf
ZXF1YWxfcmFuZ2UoDQogICAgICAgIGNvbnN0IF9IYXNoJiBfUmlnaHQsIF9VbmNoZWNrZWRfY29u
c3RfaXRlcmF0b3IgX0ZpcnN0MSkgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IGF1dG8mIF9LZXl2YWwgPSBfVHJhaXRzOjpfS2ZuKCpfRmlyc3QxKTsNCiAgICAgICAgDQogICAg
ICAgIGNvbnN0IHNpemVfdCBfSGFzaHZhbCAgID0gX1JpZ2h0Ll9UcmFpdHNvYmooX0tleXZhbCk7
DQogICAgICAgIGNvbnN0IHNpemVfdHlwZSBfQnVja2V0ID0gX0hhc2h2YWwgJiBfUmlnaHQuX01h
c2s7DQogICAgICAgIGF1dG8gX0ZpcnN0MiAgICAgICAgICAgID0gX1JpZ2h0Ll9WZWMuX015cGFp
ci5fTXl2YWwyLl9NeWZpcnN0W19CdWNrZXQgPDwgMV07DQogICAgICAgIGlmIChfRmlyc3QyID09
IF9SaWdodC5fVW5jaGVja2VkX2VuZCgpKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJl
dHVybiB7fTsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IGF1dG8gX0J1Y2tldF9oaSA9IF9S
aWdodC5fVmVjLl9NeXBhaXIuX015dmFsMi5fTXlmaXJzdFsoX0J1Y2tldCA8PCAxKSArIDFdOw0K
ICAgICAgICBmb3IgKDsgX1JpZ2h0Ll9UcmFpdHNvYmooX1RyYWl0czo6X0tmbigqX0ZpcnN0Miks
IF9LZXl2YWwpOyArK19GaXJzdDIpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKF9G
aXJzdDIgPT0gX0J1Y2tldF9oaSkgew0KICAgICAgICAgICAgICAgIHJldHVybiB7fTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIF9VbmNoZWNrZWRfY29uc3RfaXRlcmF0b3Ig
X0xlZnRfc3RvcF9hdDsNCiAgICAgICAgaWYgY29uc3RleHByIChfVHJhaXRzOjpfU3RhbmRhcmQp
IHsNCiAgICAgICAgICAgIF9MZWZ0X3N0b3BfYXQgPSBfVW5jaGVja2VkX2VuZCgpOw0KICAgICAg
ICB9IGVsc2Ugew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoX1JpZ2h0Ll9UcmFpdHNv
YmooX0tleXZhbCwgX1RyYWl0czo6X0tmbigqX0ZpcnN0MikpKSB7DQogICAgICAgICAgICAgICAg
cmV0dXJuIHt9Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBjb25zdCBzaXplX3QgX0xI
YXNodmFsICAgPSBfVHJhaXRzb2JqKF9LZXl2YWwpOw0KICAgICAgICAgICAgY29uc3Qgc2l6ZV90
eXBlIF9MQnVja2V0ID0gX0xIYXNodmFsICYgX01hc2s7DQogICAgICAgICAgICBjb25zdCBhdXRv
IF9MQnVja2V0X2hpICAgPSBfVmVjLl9NeXBhaXIuX015dmFsMi5fTXlmaXJzdFsoX0xCdWNrZXQg
PDwgMSkgKyAxXTsNCiAgICAgICAgICAgIF9MZWZ0X3N0b3BfYXQgICAgICAgICAgICA9IF9MQnVj
a2V0X2hpOw0KICAgICAgICAgICAgKytfTGVmdF9zdG9wX2F0Ow0KICAgICAgICB9DQoNCiAgICAg
ICAgDQogICAgICAgIHdoaWxlICgqX0ZpcnN0MSA9PSAqX0ZpcnN0Mikgew0KICAgICAgICAgICAg
DQogICAgICAgICAgICBib29sIF9SaWdodF9yYW5nZV9lbmQgPSBfRmlyc3QyID09IF9CdWNrZXRf
aGk7DQogICAgICAgICAgICArK19GaXJzdDI7DQogICAgICAgICAgICBpZiAoIV9SaWdodF9yYW5n
ZV9lbmQpIHsNCiAgICAgICAgICAgICAgICBfUmlnaHRfcmFuZ2VfZW5kID0gX1JpZ2h0Ll9UcmFp
dHNvYmooX0tleXZhbCwgX1RyYWl0czo6X0tmbigqX0ZpcnN0MikpOw0KICAgICAgICAgICAgfQ0K
DQogICAgICAgICAgICANCiAgICAgICAgICAgICsrX0ZpcnN0MTsNCiAgICAgICAgICAgIGNvbnN0
IGJvb2wgX0xlZnRfcmFuZ2VfZW5kID0gX0ZpcnN0MSA9PSBfTGVmdF9zdG9wX2F0IHx8IF9UcmFp
dHNvYmooX0tleXZhbCwgX1RyYWl0czo6X0tmbigqX0ZpcnN0MSkpOw0KDQogICAgICAgICAgICBp
ZiAoX0xlZnRfcmFuZ2VfZW5kICYmIF9SaWdodF9yYW5nZV9lbmQpIHsNCiAgICAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgICByZXR1cm4ge3RydWUsIF9GaXJzdDF9Ow0KICAgICAgICAgICAg
fQ0KDQogICAgICAgICAgICBpZiAoX0xlZnRfcmFuZ2VfZW5kIHx8IF9SaWdodF9yYW5nZV9lbmQp
IHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICByZXR1cm4ge307DQogICAgICAg
ICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgYXV0byBfTGFzdDEgPSBfRmly
c3QxOw0KICAgICAgICBhdXRvIF9MYXN0MiA9IF9GaXJzdDI7DQogICAgICAgIGZvciAoOzspIHsN
CiAgICAgICAgICAgIGJvb2wgX1JpZ2h0X3JhbmdlX2VuZCA9IF9MYXN0MiA9PSBfQnVja2V0X2hp
Ow0KICAgICAgICAgICAgKytfTGFzdDI7DQogICAgICAgICAgICBpZiAoIV9SaWdodF9yYW5nZV9l
bmQpIHsNCiAgICAgICAgICAgICAgICBfUmlnaHRfcmFuZ2VfZW5kID0gX1JpZ2h0Ll9UcmFpdHNv
YmooX0tleXZhbCwgX1RyYWl0czo6X0tmbigqX0xhc3QyKSk7DQogICAgICAgICAgICB9DQoNCiAg
ICAgICAgICAgICsrX0xhc3QxOw0KICAgICAgICAgICAgY29uc3QgYm9vbCBfTGVmdF9yYW5nZV9l
bmQgPSBfTGFzdDEgPT0gX0xlZnRfc3RvcF9hdCB8fCBfVHJhaXRzb2JqKF9LZXl2YWwsIF9UcmFp
dHM6Ol9LZm4oKl9MYXN0MSkpOw0KDQogICAgICAgICAgICBpZiAoX0xlZnRfcmFuZ2VfZW5kICYm
IF9SaWdodF9yYW5nZV9lbmQpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBy
ZXR1cm4ge19DaGVja19tYXRjaF9jb3VudHMoX0ZpcnN0MSwgX0xhc3QxLCBfRmlyc3QyLCBfTGFz
dDIsIGVxdWFsX3RvPD57fSksIF9MYXN0MX07DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
IGlmIChfTGVmdF9yYW5nZV9lbmQgfHwgX1JpZ2h0X3JhbmdlX2VuZCkgew0KICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgIHJldHVybiB7fTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gYm9vbCBfTXVsdGlfZXF1YWwoY29uc3QgX0hh
c2gmIF9SaWdodCkgY29uc3Qgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KF9UcmFpdHM6Ol9NdWx0
aSwgIlRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyB3aXRoIG11bHRpIGNvbnRhaW5lcnMiKTsNCiAg
ICAgICAgOw0KICAgICAgICBjb25zdCBhdXRvIF9MYXN0MSA9IF9VbmNoZWNrZWRfZW5kKCk7DQog
ICAgICAgIGF1dG8gX0ZpcnN0MSAgICAgID0gX1VuY2hlY2tlZF9iZWdpbigpOw0KICAgICAgICB3
aGlsZSAoX0ZpcnN0MSAhPSBfTGFzdDEpIHsNCiAgICAgICAgICAgIGNvbnN0IGF1dG8gX1Jlc3Vs
dCA9IF9NdWx0aV9lcXVhbF9jaGVja19lcXVhbF9yYW5nZShfUmlnaHQsIF9GaXJzdDEpOw0KICAg
ICAgICAgICAgaWYgKCFfUmVzdWx0Ll9FcXVhbF9wb3NzaWJsZSkgew0KICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX0ZpcnN0MSA9IF9S
ZXN1bHQuX1N1YnNlcXVlbnRfZmlyc3Q7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1
ZTsNCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIF9UcmFpdHMgX1RyYWl0c29iajsg
DQogICAgX015bGlzdCBfTGlzdDsgDQogICAgX0hhc2hfdmVjPF9BbGl0ZXI+IF9WZWM7IA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQogICAgc2l6ZV90eXBlIF9NYXNrOyANCiAgICBzaXplX3R5cGUgX01heGlkeDsgDQp9Ow0KDQoN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9IYXNoZXI+DQp1c2luZyBfSXNfaGFzaGVyID0gbmVnYXRpb248
ZGlzanVuY3Rpb248aXNfaW50ZWdyYWw8X0hhc2hlcj4sIF9Jc19hbGxvY2F0b3I8X0hhc2hlcj4+
PjsNCiNsaW5lIDIwOTMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxceGhhc2giDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgMjExNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFx4aGFzaCINCg0KdGVtcGxhdGUgPGNsYXNzIF9UcmFpdHM+DQpbW25vZGlzY2FyZF1dIGJv
b2wgX0hhc2hfZXF1YWwoY29uc3QgX0hhc2g8X1RyYWl0cz4mIF9MZWZ0LCBjb25zdCBfSGFzaDxf
VHJhaXRzPiYgX1JpZ2h0KSB7DQogICAgaWYgKF9MZWZ0LnNpemUoKSAhPSBfUmlnaHQuc2l6ZSgp
KSB7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCg0KICAgIGlmIGNvbnN0ZXhwciAo
X1RyYWl0czo6X011bHRpKSB7DQogICAgICAgIHJldHVybiBfTGVmdC5fTXVsdGlfZXF1YWwoX1Jp
Z2h0KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIF9MVmFsIDogX0xl
ZnQpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgY29uc3QgYXV0byYgX0tleXZhbCA9IF9U
cmFpdHM6Ol9LZm4oX0xWYWwpOw0KICAgICAgICAgICAgY29uc3QgYXV0byBfTmV4dDIgICA9IF9S
aWdodC5fRmluZF9sYXN0KF9LZXl2YWwsIF9SaWdodC5fVHJhaXRzb2JqKF9LZXl2YWwpKS5fRHVw
bGljYXRlOw0KICAgICAgICAgICAgaWYgKCEoc3RhdGljX2Nhc3Q8Ym9vbD4oX05leHQyKSAmJiBf
VHJhaXRzOjpfTm9ua2ZuKF9MVmFsKSA9PSBfVHJhaXRzOjpfTm9ua2ZuKF9OZXh0Mi0+X015dmFs
KSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gdHJ1ZTsNCg0KDQojbGluZSAyMTM5ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhoYXNoIg0KfQ0KfQ0K
DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSAyMTQ3
ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlc
XEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHhoYXNo
Ig0KI2xpbmUgMjE0OCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwg
U3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxp
bmNsdWRlXFx4aGFzaCINCiNsaW5lIDEyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9z
b2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQu
MjYuMjg4MDFcXGluY2x1ZGVcXHVub3JkZXJlZF9tYXAiDQoNCg0KDQojbGluZSAxNiAiQzpcXFBy
b2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnBy
aXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1bm9yZGVyZWRfbWFw
Ig0KDQojcHJhZ21hIHBhY2socHVzaCwgOCkNCiNwcmFnbWEgd2FybmluZyhwdXNoLCA0KQ0KI3By
YWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MTgwIDQ0MTIgNDQ1NSA0NDk0IDQ1MTQgNDU3NCA0NTgy
IDQ1ODMgNDU4NyA0NTg4IDQ2MTkgNDYyMyA0NjI1IDQ2MjYgNDY0MyA0NjQ4IDQ3MDIgNDc5MyA0
ODIwIDQ5ODggNTAyNiA1MDI3IDUwNDUgNjI5NCA0NTc3ICA1MDUzICkNCg0KDQoNCg0KbmFtZXNw
YWNlIHN0ZCB7DQoNCnRlbXBsYXRlIDxjbGFzcyBfS3R5LCANCiAgICBjbGFzcyBfVHksIA0KICAg
IGNsYXNzIF9UciwgDQogICAgY2xhc3MgX0FsbG9jLCANCiAgICBib29sIF9NZmw+IA0KY2xhc3Mg
X1VtYXBfdHJhaXRzIDogcHVibGljIF9UciB7IA0KcHVibGljOg0KICAgIHVzaW5nIGtleV90eXBl
ICAgICAgICAgICAgPSBfS3R5Ow0KICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgICAgPSBwYWly
PGNvbnN0IF9LdHksIF9UeT47DQogICAgdXNpbmcgX011dGFibGVfdmFsdWVfdHlwZSA9IHBhaXI8
X0t0eSwgX1R5PjsNCiAgICB1c2luZyBrZXlfY29tcGFyZSAgICAgICAgID0gX1RyOw0KICAgIHVz
aW5nIGFsbG9jYXRvcl90eXBlICAgICAgPSBfQWxsb2M7DQoNCiAgICB1c2luZyBub2RlX3R5cGUg
PSBfTm9kZV9oYW5kbGU8X0xpc3Rfbm9kZTx2YWx1ZV90eXBlLCB0eXBlbmFtZSBhbGxvY2F0b3Jf
dHJhaXRzPF9BbGxvYz46OnZvaWRfcG9pbnRlcj4sIF9BbGxvYywNCiAgICAgICAgX05vZGVfaGFu
ZGxlX21hcF9iYXNlLCBfS3R5LCBfVHk+Ow0KI2xpbmUgNDIgIkM6XFxQcm9ncmFtIEZpbGVzICh4
ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xz
XFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdW5vcmRlcmVkX21hcCINCg0KICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBfTXVsdGkgICAgPSBfTWZsOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBfU3RhbmRhcmQgPSB0cnVlOw0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzPg0K
ICAgIHVzaW5nIF9Jbl9wbGFjZV9rZXlfZXh0cmFjdG9yID0gX0luX3BsYWNlX2tleV9leHRyYWN0
X21hcDxfS3R5LCBfQXJncy4uLj47DQoNCiAgICBfVW1hcF90cmFpdHMoKSA9IGRlZmF1bHQ7DQoN
CiAgICBleHBsaWNpdCBfVW1hcF90cmFpdHMoY29uc3QgX1RyJiBfVHJhaXRzKSBub2V4Y2VwdChp
c19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZV92PF9Ucj4pIDogX1RyKF9UcmFpdHMpIHt9DQoN
CiAgICB1c2luZyB2YWx1ZV9jb21wYXJlID0gdm9pZDsgDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1R5MSwgY2xhc3MgX1R5Mj4NCiAgICBzdGF0aWMgY29uc3QgX0t0eSYgX0tmbihjb25zdCBwYWly
PF9UeTEsIF9UeTI+JiBfVmFsKSBub2V4Y2VwdCB7IA0KICAgICAgICByZXR1cm4gX1ZhbC5maXJz
dDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCiAgICBz
dGF0aWMgY29uc3QgX1R5MiYgX05vbmtmbihjb25zdCBwYWlyPF9UeTEsIF9UeTI+JiBfVmFsKSBu
b2V4Y2VwdCB7IA0KICAgICAgICByZXR1cm4gX1ZhbC5zZWNvbmQ7DQogICAgfQ0KfTsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfSGFzaGVyID0gaGFzaDxfS3R5
PiwgY2xhc3MgX0tleWVxID0gZXF1YWxfdG88X0t0eT4sDQogICAgY2xhc3MgX0FsbG9jID0gYWxs
b2NhdG9yPHBhaXI8Y29uc3QgX0t0eSwgX1R5Pj4+DQpjbGFzcyB1bm9yZGVyZWRfbWFwIDogcHVi
bGljIF9IYXNoPF9VbWFwX3RyYWl0czxfS3R5LCBfVHksIF9VaGFzaF9jb21wYXJlPF9LdHksIF9I
YXNoZXIsIF9LZXllcT4sIF9BbGxvYywgZmFsc2U+PiB7DQogICAgDQpwdWJsaWM6DQogICAgc3Rh
dGljX2Fzc2VydCghMSB8fCBpc19zYW1lX3Y8cGFpcjxjb25zdCBfS3R5LCBfVHk+LCB0eXBlbmFt
ZSBfQWxsb2M6OnZhbHVlX3R5cGU+LA0KICAgICAgICAidW5vcmRlcmVkX21hcDxLZXksIFZhbHVl
LCBIYXNoZXIsIEVxLCBBbGxvY2F0b3I+IiAiIHJlcXVpcmVzIHRoYXQgQWxsb2NhdG9yJ3MgdmFs
dWVfdHlwZSBtYXRjaCAiICJwYWlyPGNvbnN0IEtleSwgVmFsdWU+IiAiIChTZWUgTjQ2NTkgMjYu
Mi4xIFtjb250YWluZXIucmVxdWlyZW1lbnRzLmdlbmVyYWxdLzE2IGFsbG9jYXRvcl90eXBlKSIg
IiBFaXRoZXIgZml4IHRoZSBhbGxvY2F0b3IgdmFsdWVfdHlwZSBvciBkZWZpbmUgX0VORk9SQ0Vf
TUFUQ0hJTkdfQUxMT0NBVE9SUz0wIiAiIHRvIHN1cHByZXNzIHRoaXMgZGlhZ25vc3RpYy4iKTsN
Cg0KcHJpdmF0ZToNCiAgICB1c2luZyBfTXl0cmFpdHMgICAgICA9IF9VaGFzaF9jb21wYXJlPF9L
dHksIF9IYXNoZXIsIF9LZXllcT47DQogICAgdXNpbmcgX015YmFzZSAgICAgICAgPSBfSGFzaDxf
VW1hcF90cmFpdHM8X0t0eSwgX1R5LCBfTXl0cmFpdHMsIF9BbGxvYywgZmFsc2U+PjsNCiAgICB1
c2luZyBfQWxub2RlICAgICAgICA9IHR5cGVuYW1lIF9NeWJhc2U6Ol9BbG5vZGU7DQogICAgdXNp
bmcgX0Fsbm9kZV90cmFpdHMgPSB0eXBlbmFtZSBfTXliYXNlOjpfQWxub2RlX3RyYWl0czsNCiAg
ICB1c2luZyBfTm9kZXB0ciAgICAgICA9IHR5cGVuYW1lIF9NeWJhc2U6Ol9Ob2RlcHRyOw0KICAg
IHVzaW5nIF9LZXlfY29tcGFyZSAgID0gdHlwZW5hbWUgX015YmFzZTo6X0tleV9jb21wYXJlOw0K
DQpwdWJsaWM6DQogICAgdXNpbmcgaGFzaGVyICAgICAgPSBfSGFzaGVyOw0KICAgIHVzaW5nIGtl
eV90eXBlICAgID0gX0t0eTsNCiAgICB1c2luZyBtYXBwZWRfdHlwZSA9IF9UeTsNCiAgICB1c2lu
ZyBrZXlfZXF1YWwgICA9IF9LZXllcTsNCg0KICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICA9IHBh
aXI8Y29uc3QgX0t0eSwgX1R5PjsNCiAgICB1c2luZyBhbGxvY2F0b3JfdHlwZSAgPSB0eXBlbmFt
ZSBfTXliYXNlOjphbGxvY2F0b3JfdHlwZTsNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICAgPSB0
eXBlbmFtZSBfTXliYXNlOjpzaXplX3R5cGU7DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0g
dHlwZW5hbWUgX015YmFzZTo6ZGlmZmVyZW5jZV90eXBlOw0KICAgIHVzaW5nIHBvaW50ZXIgICAg
ICAgICA9IHR5cGVuYW1lIF9NeWJhc2U6OnBvaW50ZXI7DQogICAgdXNpbmcgY29uc3RfcG9pbnRl
ciAgID0gdHlwZW5hbWUgX015YmFzZTo6Y29uc3RfcG9pbnRlcjsNCiAgICB1c2luZyByZWZlcmVu
Y2UgICAgICAgPSB2YWx1ZV90eXBlJjsNCiAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25z
dCB2YWx1ZV90eXBlJjsNCiAgICB1c2luZyBpdGVyYXRvciAgICAgICAgPSB0eXBlbmFtZSBfTXli
YXNlOjppdGVyYXRvcjsNCiAgICB1c2luZyBjb25zdF9pdGVyYXRvciAgPSB0eXBlbmFtZSBfTXli
YXNlOjpjb25zdF9pdGVyYXRvcjsNCg0KICAgIHVzaW5nIGxvY2FsX2l0ZXJhdG9yICAgICAgID0g
dHlwZW5hbWUgX015YmFzZTo6aXRlcmF0b3I7DQogICAgdXNpbmcgY29uc3RfbG9jYWxfaXRlcmF0
b3IgPSB0eXBlbmFtZSBfTXliYXNlOjpjb25zdF9pdGVyYXRvcjsNCg0KDQogICAgdXNpbmcgaW5z
ZXJ0X3JldHVybl90eXBlID0gX0luc2VydF9yZXR1cm5fdHlwZTxpdGVyYXRvciwgdHlwZW5hbWUg
X015YmFzZTo6bm9kZV90eXBlPjsNCiNsaW5lIDEwNiAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1bm9yZGVyZWRfbWFwIg0KDQogICAgdW5vcmRlcmVk
X21hcCgpIDogX015YmFzZShfS2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5cGUoKSkge30NCg0K
ICAgIGV4cGxpY2l0IHVub3JkZXJlZF9tYXAoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9BbCkgOiBf
TXliYXNlKF9LZXlfY29tcGFyZSgpLCBfQWwpIHt9DQoNCiAgICB1bm9yZGVyZWRfbWFwKGNvbnN0
IHVub3JkZXJlZF9tYXAmIF9SaWdodCkNCiAgICAgICAgOiBfTXliYXNlKF9SaWdodCwgX0Fsbm9k
ZV90cmFpdHM6OnNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oX1JpZ2h0Ll9H
ZXRhbCgpKSkge30NCg0KICAgIHVub3JkZXJlZF9tYXAoY29uc3QgdW5vcmRlcmVkX21hcCYgX1Jp
Z2h0LCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX0FsKSA6IF9NeWJhc2UoX1JpZ2h0LCBfQWwpIHt9
DQoNCiAgICBleHBsaWNpdCB1bm9yZGVyZWRfbWFwKHNpemVfdHlwZSBfQnVja2V0cykgOiBfTXli
YXNlKF9LZXlfY29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgpKSB7DQogICAgICAgIF9NeWJhc2U6
OnJlaGFzaChfQnVja2V0cyk7DQogICAgfQ0KDQogICAgdW5vcmRlcmVkX21hcChzaXplX3R5cGUg
X0J1Y2tldHMsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpIDogX015YmFzZShfS2V5X2NvbXBh
cmUoKSwgX0FsKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgfQ0K
DQogICAgdW5vcmRlcmVkX21hcChzaXplX3R5cGUgX0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hh
c2hhcmcpIDogX015YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hhcmcpLCBhbGxvY2F0b3JfdHlwZSgp
KSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgfQ0KDQogICAgdW5v
cmRlcmVkX21hcChzaXplX3R5cGUgX0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hhc2hhcmcsIGNv
bnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2NvbXBhcmUo
X0hhc2hhcmcpLCBfQWwpIHsNCiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAg
ICB9DQoNCiAgICB1bm9yZGVyZWRfbWFwKHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgaGFzaGVy
JiBfSGFzaGFyZywgY29uc3QgX0tleWVxJiBfS2V5ZXFhcmcpDQogICAgICAgIDogX015YmFzZShf
S2V5X2NvbXBhcmUoX0hhc2hhcmcsIF9LZXllcWFyZyksIGFsbG9jYXRvcl90eXBlKCkpIHsNCiAg
ICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICB9DQoNCiAgICB1bm9yZGVyZWRf
bWFwKHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgaGFzaGVyJiBfSGFzaGFyZywgY29uc3QgX0tl
eWVxJiBfS2V5ZXFhcmcsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDogX015
YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hhcmcsIF9LZXllcWFyZyksIF9BbCkgew0KICAgICAgICBf
TXliYXNlOjpyZWhhc2goX0J1Y2tldHMpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
SXRlcj4NCiAgICB1bm9yZGVyZWRfbWFwKF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QpIDogX015
YmFzZShfS2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5cGUoKSkgew0KICAgICAgICBpbnNlcnQo
X0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KICAg
IHVub3JkZXJlZF9tYXAoX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgY29uc3QgYWxsb2NhdG9y
X3R5cGUmIF9BbCkgOiBfTXliYXNlKF9LZXlfY29tcGFyZSgpLCBfQWwpIHsNCiAgICAgICAgaW5z
ZXJ0KF9GaXJzdCwgX0xhc3QpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlcj4N
CiAgICB1bm9yZGVyZWRfbWFwKF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QsIHNpemVfdHlwZSBf
QnVja2V0cykgOiBfTXliYXNlKF9LZXlfY29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgpKSB7DQog
ICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgICAgIGluc2VydChfRmlyc3Qs
IF9MYXN0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdW5vcmRl
cmVkX21hcChfSXRlciBfRmlyc3QsIF9JdGVyIF9MYXN0LCBzaXplX3R5cGUgX0J1Y2tldHMsIGNv
bnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2NvbXBhcmUo
KSwgX0FsKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgICAgIGlu
c2VydChfRmlyc3QsIF9MYXN0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+
DQogICAgdW5vcmRlcmVkX21hcChfSXRlciBfRmlyc3QsIF9JdGVyIF9MYXN0LCBzaXplX3R5cGUg
X0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hhc2hhcmcpDQogICAgICAgIDogX015YmFzZShfS2V5
X2NvbXBhcmUoX0hhc2hhcmcpLCBhbGxvY2F0b3JfdHlwZSgpKSB7DQogICAgICAgIF9NeWJhc2U6
OnJlaGFzaChfQnVja2V0cyk7DQogICAgICAgIGluc2VydChfRmlyc3QsIF9MYXN0KTsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdW5vcmRlcmVkX21hcChfSXRlciBf
Rmlyc3QsIF9JdGVyIF9MYXN0LCBzaXplX3R5cGUgX0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hh
c2hhcmcsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5
X2NvbXBhcmUoX0hhc2hhcmcpLCBfQWwpIHsNCiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNr
ZXRzKTsNCiAgICAgICAgaW5zZXJ0KF9GaXJzdCwgX0xhc3QpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlIDxjbGFzcyBfSXRlcj4NCiAgICB1bm9yZGVyZWRfbWFwKF9JdGVyIF9GaXJzdCwgX0l0ZXIg
X0xhc3QsIHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgaGFzaGVyJiBfSGFzaGFyZywgY29uc3Qg
X0tleWVxJiBfS2V5ZXFhcmcpDQogICAgICAgIDogX015YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hh
cmcsIF9LZXllcWFyZyksIGFsbG9jYXRvcl90eXBlKCkpIHsNCiAgICAgICAgX015YmFzZTo6cmVo
YXNoKF9CdWNrZXRzKTsNCiAgICAgICAgaW5zZXJ0KF9GaXJzdCwgX0xhc3QpOw0KICAgIH0NCg0K
ICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCiAgICB1bm9yZGVyZWRfbWFwKF9JdGVyIF9GaXJz
dCwgX0l0ZXIgX0xhc3QsIHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgaGFzaGVyJiBfSGFzaGFy
ZywgY29uc3QgX0tleWVxJiBfS2V5ZXFhcmcsDQogICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBl
JiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hhcmcsIF9LZXllcWFy
ZyksIF9BbCkgew0KICAgICAgICBfTXliYXNlOjpyZWhhc2goX0J1Y2tldHMpOw0KICAgICAgICBp
bnNlcnQoX0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgdW5vcmRlcmVkX21hcCYgb3BlcmF0
b3I9KGNvbnN0IHVub3JkZXJlZF9tYXAmIF9SaWdodCkgew0KICAgICAgICBfTXliYXNlOjpvcGVy
YXRvcj0oX1JpZ2h0KTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHVub3Jk
ZXJlZF9tYXAodW5vcmRlcmVkX21hcCYmIF9SaWdodCkgOiBfTXliYXNlKDo6c3RkOjogbW92ZShf
UmlnaHQpKSB7fQ0KDQogICAgdW5vcmRlcmVkX21hcCh1bm9yZGVyZWRfbWFwJiYgX1JpZ2h0LCBj
b25zdCBhbGxvY2F0b3JfdHlwZSYgX0FsKSA6IF9NeWJhc2UoOjpzdGQ6OiBtb3ZlKF9SaWdodCks
IF9BbCkge30NCg0KICAgIHVub3JkZXJlZF9tYXAmIG9wZXJhdG9yPSh1bm9yZGVyZWRfbWFwJiYg
X1JpZ2h0KSBub2V4Y2VwdChfQWxub2RlX3RyYWl0czo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1ZSYm
DQogICAgICAgICAgICBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZV92PF9IYXNoZXI+JiYgaXNf
bm90aHJvd19tb3ZlX2Fzc2lnbmFibGVfdjxfS2V5ZXE+KSB7DQogICAgICAgIF9NeWJhc2U6Om9w
ZXJhdG9yPSg6OnN0ZDo6IG1vdmUoX1JpZ2h0KSk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAg
ICB9DQoNCiAgICBtYXBwZWRfdHlwZSYgb3BlcmF0b3JbXShrZXlfdHlwZSYmIF9LZXl2YWwpIHsN
CiAgICAgICAgcmV0dXJuIHRoaXMtPl9UcnlfZW1wbGFjZSg6OnN0ZDo6IG1vdmUoX0tleXZhbCkp
LmZpcnN0LT5fTXl2YWwuc2Vjb25kOw0KICAgIH0NCg0KICAgIHZvaWQgc3dhcCh1bm9yZGVyZWRf
bWFwJiBfUmlnaHQpIG5vZXhjZXB0KG5vZXhjZXB0KF9NeWJhc2U6OnN3YXAoX1JpZ2h0KSkpIHsN
CiAgICAgICAgX015YmFzZTo6c3dhcChfUmlnaHQpOw0KICAgIH0NCg0KICAgIHVzaW5nIF9NeWJh
c2U6Omluc2VydDsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVmFsdHksIGVuYWJsZV9pZl90PGlz
X2NvbnN0cnVjdGlibGVfdjx2YWx1ZV90eXBlLCBfVmFsdHk+LCBpbnQ+ID0gMD4NCiAgICBwYWly
PGl0ZXJhdG9yLCBib29sPiBpbnNlcnQoX1ZhbHR5JiYgX1ZhbCkgew0KICAgICAgICByZXR1cm4g
dGhpcy0+ZW1wbGFjZSg6OnN0ZDo6IGZvcndhcmQ8X1ZhbHR5PihfVmFsKSk7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzIF9WYWx0eSwgZW5hYmxlX2lmX3Q8aXNfY29uc3RydWN0aWJsZV92
PHZhbHVlX3R5cGUsIF9WYWx0eT4sIGludD4gPSAwPg0KICAgIGl0ZXJhdG9yIGluc2VydChjb25z
dF9pdGVyYXRvciBfV2hlcmUsIF9WYWx0eSYmIF9WYWwpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMt
PmVtcGxhY2VfaGludChfV2hlcmUsIDo6c3RkOjogZm9yd2FyZDxfVmFsdHk+KF9WYWwpKTsNCiAg
ICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX01hcHBlZHR5Pg0KICAgIHBhaXI8aXRlcmF0
b3IsIGJvb2w+IHRyeV9lbXBsYWNlKGNvbnN0IGtleV90eXBlJiBfS2V5dmFsLCBfTWFwcGVkdHkm
Ji4uLiBfTWFwdmFsKSB7DQogICAgICAgIGNvbnN0IGF1dG8gX1Jlc3VsdCA9IHRoaXMtPl9Ucnlf
ZW1wbGFjZShfS2V5dmFsLCA6OnN0ZDo6IGZvcndhcmQ8X01hcHBlZHR5PihfTWFwdmFsKS4uLik7
DQogICAgICAgIHJldHVybiB7dGhpcy0+X0xpc3QuX01ha2VfaXRlcihfUmVzdWx0LmZpcnN0KSwg
X1Jlc3VsdC5zZWNvbmR9Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfTWFwcGVk
dHk+DQogICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gdHJ5X2VtcGxhY2Uoa2V5X3R5cGUmJiBfS2V5
dmFsLCBfTWFwcGVkdHkmJi4uLiBfTWFwdmFsKSB7DQogICAgICAgIGNvbnN0IGF1dG8gX1Jlc3Vs
dCA9IHRoaXMtPl9UcnlfZW1wbGFjZSg6OnN0ZDo6IG1vdmUoX0tleXZhbCksIDo6c3RkOjogZm9y
d2FyZDxfTWFwcGVkdHk+KF9NYXB2YWwpLi4uKTsNCiAgICAgICAgcmV0dXJuIHt0aGlzLT5fTGlz
dC5fTWFrZV9pdGVyKF9SZXN1bHQuZmlyc3QpLCBfUmVzdWx0LnNlY29uZH07DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9NYXBwZWR0eT4NCiAgICBpdGVyYXRvciB0cnlfZW1wbGFj
ZShjb25zdCBjb25zdF9pdGVyYXRvciBfSGludCwgY29uc3Qga2V5X3R5cGUmIF9LZXl2YWwsIF9N
YXBwZWR0eSYmLi4uIF9NYXB2YWwpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMtPl9MaXN0Ll9NYWtl
X2l0ZXIoDQogICAgICAgICAgICB0aGlzLT5fVHJ5X2VtcGxhY2VfaGludChfSGludC5fUHRyLCBf
S2V5dmFsLCA6OnN0ZDo6IGZvcndhcmQ8X01hcHBlZHR5PihfTWFwdmFsKS4uLikpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfTWFwcGVkdHk+DQogICAgaXRlcmF0b3IgdHJ5X2Vt
cGxhY2UoY29uc3QgY29uc3RfaXRlcmF0b3IgX0hpbnQsIGtleV90eXBlJiYgX0tleXZhbCwgX01h
cHBlZHR5JiYuLi4gX01hcHZhbCkgew0KICAgICAgICByZXR1cm4gdGhpcy0+X0xpc3QuX01ha2Vf
aXRlcigNCiAgICAgICAgICAgIHRoaXMtPl9UcnlfZW1wbGFjZV9oaW50KF9IaW50Ll9QdHIsIDo6
c3RkOjogbW92ZShfS2V5dmFsKSwgOjpzdGQ6OiBmb3J3YXJkPF9NYXBwZWR0eT4oX01hcHZhbCku
Li4pKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGUgPGNsYXNzIF9LZXl0eSwgY2xh
c3MgX01hcHBlZHR5Pg0KICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IF9JbnNlcnRfb3JfYXNzaWdu
KF9LZXl0eSYmIF9LZXl2YWxfYXJnLCBfTWFwcGVkdHkmJiBfTWFwdmFsKSB7DQogICAgICAgIGNv
bnN0IGF1dG8mIF9LZXl2YWwgICA9IF9LZXl2YWxfYXJnOw0KICAgICAgICBjb25zdCBzaXplX3Qg
X0hhc2h2YWwgPSB0aGlzLT5fVHJhaXRzb2JqKF9LZXl2YWwpOw0KICAgICAgICBhdXRvIF9UYXJn
ZXQgICAgICAgICAgPSB0aGlzLT5fRmluZF9sYXN0KF9LZXl2YWwsIF9IYXNodmFsKTsNCiAgICAg
ICAgaWYgKF9UYXJnZXQuX0R1cGxpY2F0ZSkgew0KICAgICAgICAgICAgX1RhcmdldC5fRHVwbGlj
YXRlLT5fTXl2YWwuc2Vjb25kID0gOjpzdGQ6OiBmb3J3YXJkPF9NYXBwZWR0eT4oX01hcHZhbCk7
DQogICAgICAgICAgICByZXR1cm4ge3RoaXMtPl9MaXN0Ll9NYWtlX2l0ZXIoX1RhcmdldC5fRHVw
bGljYXRlKSwgZmFsc2V9Ow0KICAgICAgICB9DQoNCiAgICAgICAgdGhpcy0+X0NoZWNrX21heF9z
aXplKCk7DQogICAgICAgIA0KICAgICAgICBfTGlzdF9ub2RlX2VtcGxhY2Vfb3AyPF9BbG5vZGU+
IF9OZXdub2RlKA0KICAgICAgICAgICAgdGhpcy0+X0dldGFsKCksIDo6c3RkOjogZm9yd2FyZDxf
S2V5dHk+KF9LZXl2YWxfYXJnKSwgOjpzdGQ6OiBmb3J3YXJkPF9NYXBwZWR0eT4oX01hcHZhbCkp
Ow0KICAgICAgICBpZiAodGhpcy0+X0NoZWNrX3JlaGFzaF9yZXF1aXJlZF8xKCkpIHsNCiAgICAg
ICAgICAgIHRoaXMtPl9SZWhhc2hfZm9yXzEoKTsNCiAgICAgICAgICAgIF9UYXJnZXQgPSB0aGlz
LT5fRmluZF9sYXN0KF9OZXdub2RlLl9QdHItPl9NeXZhbC5maXJzdCwgX0hhc2h2YWwpOw0KICAg
ICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHt0aGlzLT5fTGlzdC5fTWFrZV9pdGVyKA0KICAgICAg
ICAgICAgICAgICAgICB0aGlzLT5fSW5zZXJ0X25ld19ub2RlX2JlZm9yZShfSGFzaHZhbCwgX1Rh
cmdldC5fSW5zZXJ0X2JlZm9yZSwgX05ld25vZGUuX1JlbGVhc2UoKSkpLA0KICAgICAgICAgICAg
dHJ1ZX07DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9LZXl0eSwgY2xhc3MgX01hcHBl
ZHR5Pg0KICAgIGl0ZXJhdG9yIF9JbnNlcnRfb3JfYXNzaWduKGNvbnN0IF9Ob2RlcHRyIF9IaW50
LCBfS2V5dHkmJiBfS2V5dmFsX2FyZywgX01hcHBlZHR5JiYgX01hcHZhbCkgew0KICAgICAgICBj
b25zdCBhdXRvJiBfS2V5dmFsICAgPSBfS2V5dmFsX2FyZzsNCiAgICAgICAgY29uc3Qgc2l6ZV90
IF9IYXNodmFsID0gdGhpcy0+X1RyYWl0c29iaihfS2V5dmFsKTsNCiAgICAgICAgYXV0byBfVGFy
Z2V0ICAgICAgICAgID0gdGhpcy0+X0ZpbmRfaGludChfSGludCwgX0tleXZhbCwgX0hhc2h2YWwp
Ow0KICAgICAgICBpZiAoX1RhcmdldC5fRHVwbGljYXRlKSB7DQogICAgICAgICAgICBfVGFyZ2V0
Ll9EdXBsaWNhdGUtPl9NeXZhbC5zZWNvbmQgPSA6OnN0ZDo6IGZvcndhcmQ8X01hcHBlZHR5Pihf
TWFwdmFsKTsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLT5fTGlzdC5fTWFrZV9pdGVyKF9UYXJn
ZXQuX0R1cGxpY2F0ZSk7DQogICAgICAgIH0NCg0KICAgICAgICB0aGlzLT5fQ2hlY2tfbWF4X3Np
emUoKTsNCiAgICAgICAgDQogICAgICAgIF9MaXN0X25vZGVfZW1wbGFjZV9vcDI8X0Fsbm9kZT4g
X05ld25vZGUoDQogICAgICAgICAgICB0aGlzLT5fR2V0YWwoKSwgOjpzdGQ6OiBmb3J3YXJkPF9L
ZXl0eT4oX0tleXZhbF9hcmcpLCA6OnN0ZDo6IGZvcndhcmQ8X01hcHBlZHR5PihfTWFwdmFsKSk7
DQogICAgICAgIGlmICh0aGlzLT5fQ2hlY2tfcmVoYXNoX3JlcXVpcmVkXzEoKSkgew0KICAgICAg
ICAgICAgdGhpcy0+X1JlaGFzaF9mb3JfMSgpOw0KICAgICAgICAgICAgX1RhcmdldCA9IHRoaXMt
Pl9GaW5kX2hpbnQoX0hpbnQsIF9OZXdub2RlLl9QdHItPl9NeXZhbC5maXJzdCwgX0hhc2h2YWwp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRoaXMtPl9MaXN0Ll9NYWtlX2l0ZXIoDQog
ICAgICAgICAgICB0aGlzLT5fSW5zZXJ0X25ld19ub2RlX2JlZm9yZShfSGFzaHZhbCwgX1Rhcmdl
dC5fSW5zZXJ0X2JlZm9yZSwgX05ld25vZGUuX1JlbGVhc2UoKSkpOw0KICAgIH0NCg0KcHVibGlj
Og0KICAgIHRlbXBsYXRlIDxjbGFzcyBfTWFwcGVkdHk+DQogICAgcGFpcjxpdGVyYXRvciwgYm9v
bD4gaW5zZXJ0X29yX2Fzc2lnbihjb25zdCBrZXlfdHlwZSYgX0tleXZhbCwgX01hcHBlZHR5JiYg
X01hcHZhbCkgew0KICAgICAgICByZXR1cm4gX0luc2VydF9vcl9hc3NpZ24oX0tleXZhbCwgOjpz
dGQ6OiBmb3J3YXJkPF9NYXBwZWR0eT4oX01hcHZhbCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRl
IDxjbGFzcyBfTWFwcGVkdHk+DQogICAgcGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0X29yX2Fz
c2lnbihrZXlfdHlwZSYmIF9LZXl2YWwsIF9NYXBwZWR0eSYmIF9NYXB2YWwpIHsNCiAgICAgICAg
cmV0dXJuIF9JbnNlcnRfb3JfYXNzaWduKDo6c3RkOjogbW92ZShfS2V5dmFsKSwgOjpzdGQ6OiBm
b3J3YXJkPF9NYXBwZWR0eT4oX01hcHZhbCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfTWFwcGVkdHk+DQogICAgaXRlcmF0b3IgaW5zZXJ0X29yX2Fzc2lnbihjb25zdF9pdGVyYXRv
ciBfSGludCwgY29uc3Qga2V5X3R5cGUmIF9LZXl2YWwsIF9NYXBwZWR0eSYmIF9NYXB2YWwpIHsN
CiAgICAgICAgcmV0dXJuIF9JbnNlcnRfb3JfYXNzaWduKF9IaW50Ll9QdHIsIF9LZXl2YWwsIDo6
c3RkOjogZm9yd2FyZDxfTWFwcGVkdHk+KF9NYXB2YWwpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX01hcHBlZHR5Pg0KICAgIGl0ZXJhdG9yIGluc2VydF9vcl9hc3NpZ24oY29uc3Rf
aXRlcmF0b3IgX0hpbnQsIGtleV90eXBlJiYgX0tleXZhbCwgX01hcHBlZHR5JiYgX01hcHZhbCkg
ew0KICAgICAgICByZXR1cm4gX0luc2VydF9vcl9hc3NpZ24oX0hpbnQuX1B0ciwgOjpzdGQ6OiBt
b3ZlKF9LZXl2YWwpLCA6OnN0ZDo6IGZvcndhcmQ8X01hcHBlZHR5PihfTWFwdmFsKSk7DQogICAg
fQ0KDQogICAgdW5vcmRlcmVkX21hcChpbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9JbGlz
dCkgOiBfTXliYXNlKF9LZXlfY29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgpKSB7DQogICAgICAg
IGluc2VydChfSWxpc3QpOw0KICAgIH0NCg0KICAgIHVub3JkZXJlZF9tYXAoaW5pdGlhbGl6ZXJf
bGlzdDx2YWx1ZV90eXBlPiBfSWxpc3QsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpIDogX015
YmFzZShfS2V5X2NvbXBhcmUoKSwgX0FsKSB7DQogICAgICAgIGluc2VydChfSWxpc3QpOw0KICAg
IH0NCg0KICAgIHVub3JkZXJlZF9tYXAoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfSWxp
c3QsIHNpemVfdHlwZSBfQnVja2V0cykgOiBfTXliYXNlKF9LZXlfY29tcGFyZSgpLCBhbGxvY2F0
b3JfdHlwZSgpKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgICAg
IGluc2VydChfSWxpc3QpOw0KICAgIH0NCg0KICAgIHVub3JkZXJlZF9tYXAoaW5pdGlhbGl6ZXJf
bGlzdDx2YWx1ZV90eXBlPiBfSWxpc3QsIHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgYWxsb2Nh
dG9yX3R5cGUmIF9BbCkNCiAgICAgICAgOiBfTXliYXNlKF9LZXlfY29tcGFyZSgpLCBfQWwpIHsN
CiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICAgICAgaW5zZXJ0KF9JbGlz
dCk7DQogICAgfQ0KDQogICAgdW5vcmRlcmVkX21hcChpbml0aWFsaXplcl9saXN0PHZhbHVlX3R5
cGU+IF9JbGlzdCwgc2l6ZV90eXBlIF9CdWNrZXRzLCBjb25zdCBoYXNoZXImIF9IYXNoYXJnKQ0K
ICAgICAgICA6IF9NeWJhc2UoX0tleV9jb21wYXJlKF9IYXNoYXJnKSwgYWxsb2NhdG9yX3R5cGUo
KSkgew0KICAgICAgICBfTXliYXNlOjpyZWhhc2goX0J1Y2tldHMpOw0KICAgICAgICBpbnNlcnQo
X0lsaXN0KTsNCiAgICB9DQoNCiAgICB1bm9yZGVyZWRfbWFwKA0KICAgICAgICBpbml0aWFsaXpl
cl9saXN0PHZhbHVlX3R5cGU+IF9JbGlzdCwgc2l6ZV90eXBlIF9CdWNrZXRzLCBjb25zdCBoYXNo
ZXImIF9IYXNoYXJnLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX0FsKQ0KICAgICAgICA6IF9NeWJh
c2UoX0tleV9jb21wYXJlKF9IYXNoYXJnKSwgX0FsKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFz
aChfQnVja2V0cyk7DQogICAgICAgIGluc2VydChfSWxpc3QpOw0KICAgIH0NCg0KICAgIHVub3Jk
ZXJlZF9tYXAoDQogICAgICAgIGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX0lsaXN0LCBz
aXplX3R5cGUgX0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hhc2hhcmcsIGNvbnN0IF9LZXllcSYg
X0tleWVxYXJnKQ0KICAgICAgICA6IF9NeWJhc2UoX0tleV9jb21wYXJlKF9IYXNoYXJnLCBfS2V5
ZXFhcmcpLCBhbGxvY2F0b3JfdHlwZSgpKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVj
a2V0cyk7DQogICAgICAgIGluc2VydChfSWxpc3QpOw0KICAgIH0NCg0KICAgIHVub3JkZXJlZF9t
YXAoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfSWxpc3QsIHNpemVfdHlwZSBfQnVja2V0
cywgY29uc3QgaGFzaGVyJiBfSGFzaGFyZywNCiAgICAgICAgY29uc3QgX0tleWVxJiBfS2V5ZXFh
cmcsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2Nv
bXBhcmUoX0hhc2hhcmcsIF9LZXllcWFyZyksIF9BbCkgew0KICAgICAgICBfTXliYXNlOjpyZWhh
c2goX0J1Y2tldHMpOw0KICAgICAgICBpbnNlcnQoX0lsaXN0KTsNCiAgICB9DQoNCiAgICB1bm9y
ZGVyZWRfbWFwJiBvcGVyYXRvcj0oaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfSWxpc3Qp
IHsNCiAgICAgICAgX015YmFzZTo6Y2xlYXIoKTsNCiAgICAgICAgaW5zZXJ0KF9JbGlzdCk7DQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGhhc2hlciBo
YXNoX2Z1bmN0aW9uKCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gX015YmFzZTo6X1RyYWl0c29i
ai5fTXlwYWlyLl9HZXRfZmlyc3QoKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGtleV9l
cXVhbCBrZXlfZXEoKSBjb25zdCB7DQogICAgICAgIHJldHVybiBfTXliYXNlOjpfVHJhaXRzb2Jq
Ll9NeXBhaXIuX015dmFsMi5fR2V0X2ZpcnN0KCk7DQogICAgfQ0KDQogICAgbWFwcGVkX3R5cGUm
IG9wZXJhdG9yW10oY29uc3Qga2V5X3R5cGUmIF9LZXl2YWwpIHsNCiAgICAgICAgcmV0dXJuIHRo
aXMtPl9UcnlfZW1wbGFjZShfS2V5dmFsKS5maXJzdC0+X015dmFsLnNlY29uZDsNCiAgICB9DQoN
CiAgICBbW25vZGlzY2FyZF1dIG1hcHBlZF90eXBlJiBhdChjb25zdCBrZXlfdHlwZSYgX0tleXZh
bCkgew0KICAgICAgICBjb25zdCBhdXRvIF9UYXJnZXQgPSB0aGlzLT5fRmluZF9sYXN0KF9LZXl2
YWwsIHRoaXMtPl9UcmFpdHNvYmooX0tleXZhbCkpOw0KICAgICAgICBpZiAoX1RhcmdldC5fRHVw
bGljYXRlKSB7DQogICAgICAgICAgICByZXR1cm4gX1RhcmdldC5fRHVwbGljYXRlLT5fTXl2YWwu
c2Vjb25kOw0KICAgICAgICB9DQoNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2UoImludmFsaWQgdW5v
cmRlcmVkX21hcDxLLCBUPiBrZXkiKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0
IG1hcHBlZF90eXBlJiBhdChjb25zdCBrZXlfdHlwZSYgX0tleXZhbCkgY29uc3Qgew0KICAgICAg
ICBjb25zdCBhdXRvIF9UYXJnZXQgPSB0aGlzLT5fRmluZF9sYXN0KF9LZXl2YWwsIHRoaXMtPl9U
cmFpdHNvYmooX0tleXZhbCkpOw0KICAgICAgICBpZiAoX1RhcmdldC5fRHVwbGljYXRlKSB7DQog
ICAgICAgICAgICByZXR1cm4gX1RhcmdldC5fRHVwbGljYXRlLT5fTXl2YWwuc2Vjb25kOw0KICAg
ICAgICB9DQoNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2UoImludmFsaWQgdW5vcmRlcmVkX21hcDxL
LCBUPiBrZXkiKTsNCiAgICB9DQoNCiAgICB1c2luZyBfTXliYXNlOjpfVW5jaGVja2VkX2JlZ2lu
Ow0KICAgIHVzaW5nIF9NeWJhc2U6Ol9VbmNoZWNrZWRfZW5kOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX0l0ZXIsIGNsYXNzIF9IYXNoZXIgPSBoYXNoPF9HdWlkZV9rZXlfdDxfSXRlcj4+LCBj
bGFzcyBfS2V5ZXEgPSBlcXVhbF90bzxfR3VpZGVfa2V5X3Q8X0l0ZXI+PiwNCiAgICBjbGFzcyBf
QWxsb2MgPSBhbGxvY2F0b3I8X0d1aWRlX3BhaXJfdDxfSXRlcj4+LA0KICAgIGVuYWJsZV9pZl90
PA0KICAgICAgICBjb25qdW5jdGlvbl92PF9Jc19pdGVyYXRvcjxfSXRlcj4sIF9Jc19oYXNoZXI8
X0hhc2hlcj4sIG5lZ2F0aW9uPF9Jc19hbGxvY2F0b3I8X0tleWVxPj4sIF9Jc19hbGxvY2F0b3I8
X0FsbG9jPj4sDQogICAgICAgIGludD4gPSAwPg0KdW5vcmRlcmVkX21hcChfSXRlciwgX0l0ZXIs
IF9HdWlkZV9zaXplX3R5cGVfdDxfQWxsb2M+ID0gMCwgX0hhc2hlciA9IF9IYXNoZXIoKSwgX0tl
eWVxID0gX0tleWVxKCksIF9BbGxvYyA9IF9BbGxvYygpKQ0KICAgIC0+IHVub3JkZXJlZF9tYXA8
X0d1aWRlX2tleV90PF9JdGVyPiwgX0d1aWRlX3ZhbF90PF9JdGVyPiwgX0hhc2hlciwgX0tleWVx
LCBfQWxsb2M+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfSGFz
aGVyID0gaGFzaDxfS3R5PiwgY2xhc3MgX0tleWVxID0gZXF1YWxfdG88X0t0eT4sDQogICAgY2xh
c3MgX0FsbG9jID0gYWxsb2NhdG9yPHBhaXI8Y29uc3QgX0t0eSwgX1R5Pj4sDQogICAgZW5hYmxl
X2lmX3Q8Y29uanVuY3Rpb25fdjxfSXNfaGFzaGVyPF9IYXNoZXI+LCBuZWdhdGlvbjxfSXNfYWxs
b2NhdG9yPF9LZXllcT4+LCBfSXNfYWxsb2NhdG9yPF9BbGxvYz4+LCBpbnQ+ID0gMD4NCnVub3Jk
ZXJlZF9tYXAoaW5pdGlhbGl6ZXJfbGlzdDxwYWlyPF9LdHksIF9UeT4+LCBfR3VpZGVfc2l6ZV90
eXBlX3Q8X0FsbG9jPiA9IDAsIF9IYXNoZXIgPSBfSGFzaGVyKCksIF9LZXllcSA9IF9LZXllcSgp
LA0KICAgIF9BbGxvYyA9IF9BbGxvYygpKSAtPiB1bm9yZGVyZWRfbWFwPF9LdHksIF9UeSwgX0hh
c2hlciwgX0tleWVxLCBfQWxsb2M+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIsIGNsYXNzIF9B
bGxvYywgZW5hYmxlX2lmX3Q8Y29uanVuY3Rpb25fdjxfSXNfaXRlcmF0b3I8X0l0ZXI+LCBfSXNf
YWxsb2NhdG9yPF9BbGxvYz4+LCBpbnQ+ID0gMD4NCnVub3JkZXJlZF9tYXAoX0l0ZXIsIF9JdGVy
LCBfQWxsb2MpIC0+IHVub3JkZXJlZF9tYXA8X0d1aWRlX2tleV90PF9JdGVyPiwgX0d1aWRlX3Zh
bF90PF9JdGVyPiwNCiAgICBoYXNoPF9HdWlkZV9rZXlfdDxfSXRlcj4+LCBlcXVhbF90bzxfR3Vp
ZGVfa2V5X3Q8X0l0ZXI+PiwgX0FsbG9jPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyLCBjbGFz
cyBfQWxsb2MsIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8X0lzX2l0ZXJhdG9yPF9JdGVyPiwg
X0lzX2FsbG9jYXRvcjxfQWxsb2M+PiwgaW50PiA9IDA+DQp1bm9yZGVyZWRfbWFwKF9JdGVyLCBf
SXRlciwgX0d1aWRlX3NpemVfdHlwZV90PF9BbGxvYz4sIF9BbGxvYykgLT4gdW5vcmRlcmVkX21h
cDxfR3VpZGVfa2V5X3Q8X0l0ZXI+LA0KICAgIF9HdWlkZV92YWxfdDxfSXRlcj4sIGhhc2g8X0d1
aWRlX2tleV90PF9JdGVyPj4sIGVxdWFsX3RvPF9HdWlkZV9rZXlfdDxfSXRlcj4+LCBfQWxsb2M+
Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXIsIGNsYXNzIF9IYXNoZXIsIGNsYXNzIF9BbGxvYywN
CiAgICBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PF9Jc19pdGVyYXRvcjxfSXRlcj4sIF9Jc19o
YXNoZXI8X0hhc2hlcj4sIF9Jc19hbGxvY2F0b3I8X0FsbG9jPj4sIGludD4gPSAwPg0KdW5vcmRl
cmVkX21hcChfSXRlciwgX0l0ZXIsIF9HdWlkZV9zaXplX3R5cGVfdDxfQWxsb2M+LCBfSGFzaGVy
LCBfQWxsb2MpDQogICAgLT4gdW5vcmRlcmVkX21hcDxfR3VpZGVfa2V5X3Q8X0l0ZXI+LCBfR3Vp
ZGVfdmFsX3Q8X0l0ZXI+LCBfSGFzaGVyLCBlcXVhbF90bzxfR3VpZGVfa2V5X3Q8X0l0ZXI+Piwg
X0FsbG9jPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9LdHksIGNsYXNzIF9UeSwgY2xhc3MgX0FsbG9j
LCBlbmFibGVfaWZfdDxfSXNfYWxsb2NhdG9yPF9BbGxvYz46OnZhbHVlLCBpbnQ+ID0gMD4NCnVu
b3JkZXJlZF9tYXAoaW5pdGlhbGl6ZXJfbGlzdDxwYWlyPF9LdHksIF9UeT4+LCBfQWxsb2MpDQog
ICAgLT4gdW5vcmRlcmVkX21hcDxfS3R5LCBfVHksIGhhc2g8X0t0eT4sIGVxdWFsX3RvPF9LdHk+
LCBfQWxsb2M+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfQWxs
b2MsIGVuYWJsZV9pZl90PF9Jc19hbGxvY2F0b3I8X0FsbG9jPjo6dmFsdWUsIGludD4gPSAwPg0K
dW5vcmRlcmVkX21hcChpbml0aWFsaXplcl9saXN0PHBhaXI8X0t0eSwgX1R5Pj4sIF9HdWlkZV9z
aXplX3R5cGVfdDxfQWxsb2M+LCBfQWxsb2MpDQogICAgLT4gdW5vcmRlcmVkX21hcDxfS3R5LCBf
VHksIGhhc2g8X0t0eT4sIGVxdWFsX3RvPF9LdHk+LCBfQWxsb2M+Ow0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfSGFzaGVyLCBjbGFzcyBfQWxsb2MsDQogICAgZW5h
YmxlX2lmX3Q8Y29uanVuY3Rpb25fdjxfSXNfaGFzaGVyPF9IYXNoZXI+LCBfSXNfYWxsb2NhdG9y
PF9BbGxvYz4+LCBpbnQ+ID0gMD4NCnVub3JkZXJlZF9tYXAoaW5pdGlhbGl6ZXJfbGlzdDxwYWly
PF9LdHksIF9UeT4+LCBfR3VpZGVfc2l6ZV90eXBlX3Q8X0FsbG9jPiwgX0hhc2hlciwgX0FsbG9j
KQ0KICAgIC0+IHVub3JkZXJlZF9tYXA8X0t0eSwgX1R5LCBfSGFzaGVyLCBlcXVhbF90bzxfS3R5
PiwgX0FsbG9jPjsNCiNsaW5lIDQ1MCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2
LjI4ODAxXFxpbmNsdWRlXFx1bm9yZGVyZWRfbWFwIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwg
Y2xhc3MgX1R5LCBjbGFzcyBfSGFzaGVyLCBjbGFzcyBfS2V5ZXEsIGNsYXNzIF9BbGxvYz4NCnZv
aWQgc3dhcCh1bm9yZGVyZWRfbWFwPF9LdHksIF9UeSwgX0hhc2hlciwgX0tleWVxLCBfQWxsb2M+
JiBfTGVmdCwNCiAgICB1bm9yZGVyZWRfbWFwPF9LdHksIF9UeSwgX0hhc2hlciwgX0tleWVxLCBf
QWxsb2M+JiBfUmlnaHQpIG5vZXhjZXB0KG5vZXhjZXB0KF9MZWZ0LnN3YXAoX1JpZ2h0KSkpIHsN
CiAgICBfTGVmdC5zd2FwKF9SaWdodCk7DQp9DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ2NCAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1bm9yZGVyZWRf
bWFwIg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfSGFzaGVyLCBj
bGFzcyBfS2V5ZXEsIGNsYXNzIF9BbGxvYz4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj09
KGNvbnN0IHVub3JkZXJlZF9tYXA8X0t0eSwgX1R5LCBfSGFzaGVyLCBfS2V5ZXEsIF9BbGxvYz4m
IF9MZWZ0LA0KICAgIGNvbnN0IHVub3JkZXJlZF9tYXA8X0t0eSwgX1R5LCBfSGFzaGVyLCBfS2V5
ZXEsIF9BbGxvYz4mIF9SaWdodCkgew0KICAgIHJldHVybiBfSGFzaF9lcXVhbChfTGVmdCwgX1Jp
Z2h0KTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9LdHksIGNsYXNzIF9UeSwgY2xhc3MgX0hhc2hl
ciwgY2xhc3MgX0tleWVxLCBjbGFzcyBfQWxsb2M+DQpbW25vZGlzY2FyZF1dIGJvb2wgb3BlcmF0
b3IhPShjb25zdCB1bm9yZGVyZWRfbWFwPF9LdHksIF9UeSwgX0hhc2hlciwgX0tleWVxLCBfQWxs
b2M+JiBfTGVmdCwNCiAgICBjb25zdCB1bm9yZGVyZWRfbWFwPF9LdHksIF9UeSwgX0hhc2hlciwg
X0tleWVxLCBfQWxsb2M+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gIShfTGVmdCA9PSBfUmlnaHQp
Ow0KfQ0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfS3R5LCBjbGFzcyBfVHksIGNsYXNzIF9IYXNoZXIg
PSBoYXNoPF9LdHk+LCBjbGFzcyBfS2V5ZXEgPSBlcXVhbF90bzxfS3R5PiwNCiAgICBjbGFzcyBf
QWxsb2MgPSBhbGxvY2F0b3I8cGFpcjxjb25zdCBfS3R5LCBfVHk+Pj4NCmNsYXNzIHVub3JkZXJl
ZF9tdWx0aW1hcCA6IHB1YmxpYyBfSGFzaDxfVW1hcF90cmFpdHM8X0t0eSwgX1R5LCBfVWhhc2hf
Y29tcGFyZTxfS3R5LCBfSGFzaGVyLCBfS2V5ZXE+LCBfQWxsb2MsIHRydWU+PiB7DQogICAgDQpw
dWJsaWM6DQogICAgc3RhdGljX2Fzc2VydCghMSB8fCBpc19zYW1lX3Y8cGFpcjxjb25zdCBfS3R5
LCBfVHk+LCB0eXBlbmFtZSBfQWxsb2M6OnZhbHVlX3R5cGU+LA0KICAgICAgICAidW5vcmRlcmVk
X211bHRpbWFwPEtleSwgVmFsdWUsIEhhc2hlciwgRXEsIEFsbG9jYXRvcj4iICIgcmVxdWlyZXMg
dGhhdCBBbGxvY2F0b3IncyB2YWx1ZV90eXBlIG1hdGNoICIgInBhaXI8Y29uc3QgS2V5LCBWYWx1
ZT4iICIgKFNlZSBONDY1OSAyNi4yLjEgW2NvbnRhaW5lci5yZXF1aXJlbWVudHMuZ2VuZXJhbF0v
MTYgYWxsb2NhdG9yX3R5cGUpIiAiIEVpdGhlciBmaXggdGhlIGFsbG9jYXRvciB2YWx1ZV90eXBl
IG9yIGRlZmluZSBfRU5GT1JDRV9NQVRDSElOR19BTExPQ0FUT1JTPTAiICIgdG8gc3VwcHJlc3Mg
dGhpcyBkaWFnbm9zdGljLiIpOw0KI2xpbmUgNDg2ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHVub3JkZXJlZF9tYXAiDQoNCnByaXZhdGU6DQogICAg
dXNpbmcgX015dHJhaXRzICAgICAgPSBfVWhhc2hfY29tcGFyZTxfS3R5LCBfSGFzaGVyLCBfS2V5
ZXE+Ow0KICAgIHVzaW5nIF9NeWJhc2UgICAgICAgID0gX0hhc2g8X1VtYXBfdHJhaXRzPF9LdHks
IF9UeSwgX015dHJhaXRzLCBfQWxsb2MsIHRydWU+PjsNCiAgICB1c2luZyBfQWxub2RlICAgICAg
ICA9IHR5cGVuYW1lIF9NeWJhc2U6Ol9BbG5vZGU7DQogICAgdXNpbmcgX0Fsbm9kZV90cmFpdHMg
PSB0eXBlbmFtZSBfTXliYXNlOjpfQWxub2RlX3RyYWl0czsNCiAgICB1c2luZyBfS2V5X2NvbXBh
cmUgICA9IHR5cGVuYW1lIF9NeWJhc2U6Ol9LZXlfY29tcGFyZTsNCg0KcHVibGljOg0KICAgIHVz
aW5nIGhhc2hlciAgICAgID0gX0hhc2hlcjsNCiAgICB1c2luZyBrZXlfdHlwZSAgICA9IF9LdHk7
DQogICAgdXNpbmcgbWFwcGVkX3R5cGUgPSBfVHk7DQogICAgdXNpbmcga2V5X2VxdWFsICAgPSBf
S2V5ZXE7DQoNCiAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgPSBwYWlyPGNvbnN0IF9LdHksIF9U
eT47DQogICAgdXNpbmcgYWxsb2NhdG9yX3R5cGUgID0gdHlwZW5hbWUgX015YmFzZTo6YWxsb2Nh
dG9yX3R5cGU7DQogICAgdXNpbmcgc2l6ZV90eXBlICAgICAgID0gdHlwZW5hbWUgX015YmFzZTo6
c2l6ZV90eXBlOw0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHR5cGVuYW1lIF9NeWJhc2U6
OmRpZmZlcmVuY2VfdHlwZTsNCiAgICB1c2luZyBwb2ludGVyICAgICAgICAgPSB0eXBlbmFtZSBf
TXliYXNlOjpwb2ludGVyOw0KICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgICA9IHR5cGVuYW1lIF9N
eWJhc2U6OmNvbnN0X3BvaW50ZXI7DQogICAgdXNpbmcgcmVmZXJlbmNlICAgICAgID0gdmFsdWVf
dHlwZSY7DQogICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3QgdmFsdWVfdHlwZSY7DQog
ICAgdXNpbmcgaXRlcmF0b3IgICAgICAgID0gdHlwZW5hbWUgX015YmFzZTo6aXRlcmF0b3I7DQog
ICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgID0gdHlwZW5hbWUgX015YmFzZTo6Y29uc3RfaXRlcmF0
b3I7DQoNCiAgICB1c2luZyBsb2NhbF9pdGVyYXRvciAgICAgICA9IHR5cGVuYW1lIF9NeWJhc2U6
Oml0ZXJhdG9yOw0KICAgIHVzaW5nIGNvbnN0X2xvY2FsX2l0ZXJhdG9yID0gdHlwZW5hbWUgX015
YmFzZTo6Y29uc3RfaXRlcmF0b3I7DQoNCiAgICB1bm9yZGVyZWRfbXVsdGltYXAoKSA6IF9NeWJh
c2UoX0tleV9jb21wYXJlKCksIGFsbG9jYXRvcl90eXBlKCkpIHt9IA0KDQogICAgZXhwbGljaXQg
dW5vcmRlcmVkX211bHRpbWFwKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDog
X015YmFzZShfS2V5X2NvbXBhcmUoKSwgX0FsKSB7fSANCg0KICAgIHVub3JkZXJlZF9tdWx0aW1h
cChjb25zdCB1bm9yZGVyZWRfbXVsdGltYXAmIF9SaWdodCkNCiAgICAgICAgOiBfTXliYXNlKF9S
aWdodCwgX0Fsbm9kZV90cmFpdHM6OnNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rp
b24oX1JpZ2h0Ll9HZXRhbCgpKSkge30NCg0KICAgIHVub3JkZXJlZF9tdWx0aW1hcChjb25zdCB1
bm9yZGVyZWRfbXVsdGltYXAmIF9SaWdodCwgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9BbCkgOiBf
TXliYXNlKF9SaWdodCwgX0FsKSB7fQ0KDQogICAgZXhwbGljaXQgdW5vcmRlcmVkX211bHRpbWFw
KHNpemVfdHlwZSBfQnVja2V0cykgOiBfTXliYXNlKF9LZXlfY29tcGFyZSgpLCBhbGxvY2F0b3Jf
dHlwZSgpKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgfQ0KDQog
ICAgdW5vcmRlcmVkX211bHRpbWFwKHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgYWxsb2NhdG9y
X3R5cGUmIF9BbCkgOiBfTXliYXNlKF9LZXlfY29tcGFyZSgpLCBfQWwpIHsNCiAgICAgICAgX015
YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICB9DQoNCiAgICB1bm9yZGVyZWRfbXVsdGltYXAo
c2l6ZV90eXBlIF9CdWNrZXRzLCBjb25zdCBoYXNoZXImIF9IYXNoYXJnKSA6IF9NeWJhc2UoX0tl
eV9jb21wYXJlKF9IYXNoYXJnKSwgYWxsb2NhdG9yX3R5cGUoKSkgew0KICAgICAgICBfTXliYXNl
OjpyZWhhc2goX0J1Y2tldHMpOw0KICAgIH0NCg0KICAgIHVub3JkZXJlZF9tdWx0aW1hcChzaXpl
X3R5cGUgX0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hhc2hhcmcsIGNvbnN0IGFsbG9jYXRvcl90
eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hhcmcpLCBfQWwp
IHsNCiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICB9DQoNCiAgICB1bm9y
ZGVyZWRfbXVsdGltYXAoc2l6ZV90eXBlIF9CdWNrZXRzLCBjb25zdCBoYXNoZXImIF9IYXNoYXJn
LCBjb25zdCBfS2V5ZXEmIF9LZXllcWFyZykNCiAgICAgICAgOiBfTXliYXNlKF9LZXlfY29tcGFy
ZShfSGFzaGFyZywgX0tleWVxYXJnKSwgYWxsb2NhdG9yX3R5cGUoKSkgew0KICAgICAgICBfTXli
YXNlOjpyZWhhc2goX0J1Y2tldHMpOw0KICAgIH0NCg0KICAgIHVub3JkZXJlZF9tdWx0aW1hcChz
aXplX3R5cGUgX0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hhc2hhcmcsIGNvbnN0IF9LZXllcSYg
X0tleWVxYXJnLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX0FsKQ0KICAgICAgICA6IF9NeWJhc2Uo
X0tleV9jb21wYXJlKF9IYXNoYXJnLCBfS2V5ZXFhcmcpLCBfQWwpIHsNCiAgICAgICAgX015YmFz
ZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+
DQogICAgdW5vcmRlcmVkX211bHRpbWFwKF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QpIDogX015
YmFzZShfS2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5cGUoKSkgew0KICAgICAgICBpbnNlcnQo
X0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0KICAg
IHVub3JkZXJlZF9tdWx0aW1hcChfSXRlciBfRmlyc3QsIF9JdGVyIF9MYXN0LCBjb25zdCBhbGxv
Y2F0b3JfdHlwZSYgX0FsKSA6IF9NeWJhc2UoX0tleV9jb21wYXJlKCksIF9BbCkgew0KICAgICAg
ICBpbnNlcnQoX0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9J
dGVyPg0KICAgIHVub3JkZXJlZF9tdWx0aW1hcChfSXRlciBfRmlyc3QsIF9JdGVyIF9MYXN0LCBz
aXplX3R5cGUgX0J1Y2tldHMpIDogX015YmFzZShfS2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5
cGUoKSkgew0KICAgICAgICBfTXliYXNlOjpyZWhhc2goX0J1Y2tldHMpOw0KICAgICAgICBpbnNl
cnQoX0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyPg0K
ICAgIHVub3JkZXJlZF9tdWx0aW1hcChfSXRlciBfRmlyc3QsIF9JdGVyIF9MYXN0LCBzaXplX3R5
cGUgX0J1Y2tldHMsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDogX015YmFz
ZShfS2V5X2NvbXBhcmUoKSwgX0FsKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0
cyk7DQogICAgICAgIGluc2VydChfRmlyc3QsIF9MYXN0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdW5vcmRlcmVkX211bHRpbWFwKF9JdGVyIF9GaXJzdCwgX0l0
ZXIgX0xhc3QsIHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgaGFzaGVyJiBfSGFzaGFyZykNCiAg
ICAgICAgOiBfTXliYXNlKF9LZXlfY29tcGFyZShfSGFzaGFyZyksIGFsbG9jYXRvcl90eXBlKCkp
IHsNCiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICAgICAgaW5zZXJ0KF9G
aXJzdCwgX0xhc3QpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlcj4NCiAgICB1
bm9yZGVyZWRfbXVsdGltYXAoX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgc2l6ZV90eXBlIF9C
dWNrZXRzLCBjb25zdCBoYXNoZXImIF9IYXNoYXJnLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX0Fs
KQ0KICAgICAgICA6IF9NeWJhc2UoX0tleV9jb21wYXJlKF9IYXNoYXJnKSwgX0FsKSB7DQogICAg
ICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgICAgIGluc2VydChfRmlyc3QsIF9M
YXN0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+DQogICAgdW5vcmRlcmVk
X211bHRpbWFwKF9JdGVyIF9GaXJzdCwgX0l0ZXIgX0xhc3QsIHNpemVfdHlwZSBfQnVja2V0cywg
Y29uc3QgaGFzaGVyJiBfSGFzaGFyZywgY29uc3QgX0tleWVxJiBfS2V5ZXFhcmcpDQogICAgICAg
IDogX015YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hhcmcsIF9LZXllcWFyZyksIGFsbG9jYXRvcl90
eXBlKCkpIHsNCiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICAgICAgaW5z
ZXJ0KF9GaXJzdCwgX0xhc3QpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfSXRlcj4N
CiAgICB1bm9yZGVyZWRfbXVsdGltYXAoX0l0ZXIgX0ZpcnN0LCBfSXRlciBfTGFzdCwgc2l6ZV90
eXBlIF9CdWNrZXRzLCBjb25zdCBoYXNoZXImIF9IYXNoYXJnLCBjb25zdCBfS2V5ZXEmIF9LZXll
cWFyZywNCiAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9BbCkNCiAgICAgICAgOiBfTXli
YXNlKF9LZXlfY29tcGFyZShfSGFzaGFyZywgX0tleWVxYXJnKSwgX0FsKSB7DQogICAgICAgIF9N
eWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAgICAgIGluc2VydChfRmlyc3QsIF9MYXN0KTsN
CiAgICB9DQoNCiAgICB1bm9yZGVyZWRfbXVsdGltYXAmIG9wZXJhdG9yPShjb25zdCB1bm9yZGVy
ZWRfbXVsdGltYXAmIF9SaWdodCkgew0KICAgICAgICBfTXliYXNlOjpvcGVyYXRvcj0oX1JpZ2h0
KTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHVub3JkZXJlZF9tdWx0aW1h
cCh1bm9yZGVyZWRfbXVsdGltYXAmJiBfUmlnaHQpIDogX015YmFzZSg6OnN0ZDo6IG1vdmUoX1Jp
Z2h0KSkge30NCg0KICAgIHVub3JkZXJlZF9tdWx0aW1hcCh1bm9yZGVyZWRfbXVsdGltYXAmJiBf
UmlnaHQsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpIDogX015YmFzZSg6OnN0ZDo6IG1vdmUo
X1JpZ2h0KSwgX0FsKSB7fQ0KDQogICAgdW5vcmRlcmVkX211bHRpbWFwJiBvcGVyYXRvcj0odW5v
cmRlcmVkX211bHRpbWFwJiYgX1JpZ2h0KSBub2V4Y2VwdChfQWxub2RlX3RyYWl0czo6aXNfYWx3
YXlzX2VxdWFsOjp2YWx1ZSYmDQogICAgICAgICAgICBpc19ub3Rocm93X21vdmVfYXNzaWduYWJs
ZV92PF9IYXNoZXI+JiYgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGVfdjxfS2V5ZXE+KSB7DQog
ICAgICAgIF9NeWJhc2U6Om9wZXJhdG9yPSg6OnN0ZDo6IG1vdmUoX1JpZ2h0KSk7DQogICAgICAg
IHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAodW5vcmRlcmVkX211bHRpbWFw
JiBfUmlnaHQpIG5vZXhjZXB0KG5vZXhjZXB0KF9NeWJhc2U6OnN3YXAoX1JpZ2h0KSkpIHsNCiAg
ICAgICAgX015YmFzZTo6c3dhcChfUmlnaHQpOw0KICAgIH0NCg0KICAgIHVzaW5nIF9NeWJhc2U6
Omluc2VydDsNCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVmFsdHksIGVuYWJsZV9pZl90PGlzX2Nv
bnN0cnVjdGlibGVfdjx2YWx1ZV90eXBlLCBfVmFsdHk+LCBpbnQ+ID0gMD4NCiAgICBpdGVyYXRv
ciBpbnNlcnQoX1ZhbHR5JiYgX1ZhbCkgew0KICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZSg6
OnN0ZDo6IGZvcndhcmQ8X1ZhbHR5PihfVmFsKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNs
YXNzIF9WYWx0eSwgZW5hYmxlX2lmX3Q8aXNfY29uc3RydWN0aWJsZV92PHZhbHVlX3R5cGUsIF9W
YWx0eT4sIGludD4gPSAwPg0KICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBfV2hl
cmUsIF9WYWx0eSYmIF9WYWwpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChf
V2hlcmUsIDo6c3RkOjogZm9yd2FyZDxfVmFsdHk+KF9WYWwpKTsNCiAgICB9DQoNCiAgICB1bm9y
ZGVyZWRfbXVsdGltYXAoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfSWxpc3QpIDogX015
YmFzZShfS2V5X2NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5cGUoKSkgew0KICAgICAgICBpbnNlcnQo
X0lsaXN0KTsNCiAgICB9DQoNCiAgICB1bm9yZGVyZWRfbXVsdGltYXAoaW5pdGlhbGl6ZXJfbGlz
dDx2YWx1ZV90eXBlPiBfSWxpc3QsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpIDogX015YmFz
ZShfS2V5X2NvbXBhcmUoKSwgX0FsKSB7DQogICAgICAgIGluc2VydChfSWxpc3QpOw0KICAgIH0N
Cg0KICAgIHVub3JkZXJlZF9tdWx0aW1hcChpbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9J
bGlzdCwgc2l6ZV90eXBlIF9CdWNrZXRzKQ0KICAgICAgICA6IF9NeWJhc2UoX0tleV9jb21wYXJl
KCksIGFsbG9jYXRvcl90eXBlKCkpIHsNCiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRz
KTsNCiAgICAgICAgaW5zZXJ0KF9JbGlzdCk7DQogICAgfQ0KDQogICAgdW5vcmRlcmVkX211bHRp
bWFwKGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX0lsaXN0LCBzaXplX3R5cGUgX0J1Y2tl
dHMsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2Nv
bXBhcmUoKSwgX0FsKSB7DQogICAgICAgIF9NeWJhc2U6OnJlaGFzaChfQnVja2V0cyk7DQogICAg
ICAgIGluc2VydChfSWxpc3QpOw0KICAgIH0NCg0KICAgIHVub3JkZXJlZF9tdWx0aW1hcChpbml0
aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9JbGlzdCwgc2l6ZV90eXBlIF9CdWNrZXRzLCBjb25z
dCBoYXNoZXImIF9IYXNoYXJnKQ0KICAgICAgICA6IF9NeWJhc2UoX0tleV9jb21wYXJlKF9IYXNo
YXJnKSwgYWxsb2NhdG9yX3R5cGUoKSkgew0KICAgICAgICBfTXliYXNlOjpyZWhhc2goX0J1Y2tl
dHMpOw0KICAgICAgICBpbnNlcnQoX0lsaXN0KTsNCiAgICB9DQoNCiAgICB1bm9yZGVyZWRfbXVs
dGltYXAoDQogICAgICAgIGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gX0lsaXN0LCBzaXpl
X3R5cGUgX0J1Y2tldHMsIGNvbnN0IGhhc2hlciYgX0hhc2hhcmcsIGNvbnN0IGFsbG9jYXRvcl90
eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hhcmcpLCBfQWwp
IHsNCiAgICAgICAgX015YmFzZTo6cmVoYXNoKF9CdWNrZXRzKTsNCiAgICAgICAgaW5zZXJ0KF9J
bGlzdCk7DQogICAgfQ0KDQogICAgdW5vcmRlcmVkX211bHRpbWFwKA0KICAgICAgICBpbml0aWFs
aXplcl9saXN0PHZhbHVlX3R5cGU+IF9JbGlzdCwgc2l6ZV90eXBlIF9CdWNrZXRzLCBjb25zdCBo
YXNoZXImIF9IYXNoYXJnLCBjb25zdCBfS2V5ZXEmIF9LZXllcWFyZykNCiAgICAgICAgOiBfTXli
YXNlKF9LZXlfY29tcGFyZShfSGFzaGFyZywgX0tleWVxYXJnKSwgYWxsb2NhdG9yX3R5cGUoKSkg
ew0KICAgICAgICBfTXliYXNlOjpyZWhhc2goX0J1Y2tldHMpOw0KICAgICAgICBpbnNlcnQoX0ls
aXN0KTsNCiAgICB9DQoNCiAgICB1bm9yZGVyZWRfbXVsdGltYXAoaW5pdGlhbGl6ZXJfbGlzdDx2
YWx1ZV90eXBlPiBfSWxpc3QsIHNpemVfdHlwZSBfQnVja2V0cywgY29uc3QgaGFzaGVyJiBfSGFz
aGFyZywNCiAgICAgICAgY29uc3QgX0tleWVxJiBfS2V5ZXFhcmcsIGNvbnN0IGFsbG9jYXRvcl90
eXBlJiBfQWwpDQogICAgICAgIDogX015YmFzZShfS2V5X2NvbXBhcmUoX0hhc2hhcmcsIF9LZXll
cWFyZyksIF9BbCkgew0KICAgICAgICBfTXliYXNlOjpyZWhhc2goX0J1Y2tldHMpOw0KICAgICAg
ICBpbnNlcnQoX0lsaXN0KTsNCiAgICB9DQoNCiAgICB1bm9yZGVyZWRfbXVsdGltYXAmIG9wZXJh
dG9yPShpbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9JbGlzdCkgew0KICAgICAgICBfTXli
YXNlOjpjbGVhcigpOw0KICAgICAgICBpbnNlcnQoX0lsaXN0KTsNCiAgICAgICAgcmV0dXJuICp0
aGlzOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gaGFzaGVyIGhhc2hfZnVuY3Rpb24oKSBj
b25zdCB7DQogICAgICAgIHJldHVybiBfTXliYXNlOjpfVHJhaXRzb2JqLl9NeXBhaXIuX0dldF9m
aXJzdCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0ga2V5X2VxdWFsIGtleV9lcSgpIGNv
bnN0IHsNCiAgICAgICAgcmV0dXJuIF9NeWJhc2U6Ol9UcmFpdHNvYmouX015cGFpci5fTXl2YWwy
Ll9HZXRfZmlyc3QoKTsNCiAgICB9DQoNCiAgICB1c2luZyBfTXliYXNlOjpfVW5jaGVja2VkX2Jl
Z2luOw0KICAgIHVzaW5nIF9NeWJhc2U6Ol9VbmNoZWNrZWRfZW5kOw0KfTsNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0l0ZXIsIGNsYXNzIF9IYXNoZXIgPSBoYXNoPF9HdWlkZV9rZXlfdDxfSXRlcj4+
LCBjbGFzcyBfS2V5ZXEgPSBlcXVhbF90bzxfR3VpZGVfa2V5X3Q8X0l0ZXI+PiwNCiAgICBjbGFz
cyBfQWxsb2MgPSBhbGxvY2F0b3I8X0d1aWRlX3BhaXJfdDxfSXRlcj4+LA0KICAgIGVuYWJsZV9p
Zl90PA0KICAgICAgICBjb25qdW5jdGlvbl92PF9Jc19pdGVyYXRvcjxfSXRlcj4sIF9Jc19oYXNo
ZXI8X0hhc2hlcj4sIG5lZ2F0aW9uPF9Jc19hbGxvY2F0b3I8X0tleWVxPj4sIF9Jc19hbGxvY2F0
b3I8X0FsbG9jPj4sDQogICAgICAgIGludD4gPSAwPg0KdW5vcmRlcmVkX211bHRpbWFwKF9JdGVy
LCBfSXRlciwgX0d1aWRlX3NpemVfdHlwZV90PF9BbGxvYz4gPSAwLCBfSGFzaGVyID0gX0hhc2hl
cigpLCBfS2V5ZXEgPSBfS2V5ZXEoKSwNCiAgICBfQWxsb2MgPSBfQWxsb2MoKSkgLT4gdW5vcmRl
cmVkX211bHRpbWFwPF9HdWlkZV9rZXlfdDxfSXRlcj4sIF9HdWlkZV92YWxfdDxfSXRlcj4sIF9I
YXNoZXIsIF9LZXllcSwgX0FsbG9jPjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9LdHksIGNsYXNzIF9U
eSwgY2xhc3MgX0hhc2hlciA9IGhhc2g8X0t0eT4sIGNsYXNzIF9LZXllcSA9IGVxdWFsX3RvPF9L
dHk+LA0KICAgIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjxwYWlyPGNvbnN0IF9LdHksIF9UeT4+
LA0KICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8X0lzX2hhc2hlcjxfSGFzaGVyPiwgbmVn
YXRpb248X0lzX2FsbG9jYXRvcjxfS2V5ZXE+PiwgX0lzX2FsbG9jYXRvcjxfQWxsb2M+PiwgaW50
PiA9IDA+DQp1bm9yZGVyZWRfbXVsdGltYXAoaW5pdGlhbGl6ZXJfbGlzdDxwYWlyPF9LdHksIF9U
eT4+LCBfR3VpZGVfc2l6ZV90eXBlX3Q8X0FsbG9jPiA9IDAsIF9IYXNoZXIgPSBfSGFzaGVyKCks
DQogICAgX0tleWVxID0gX0tleWVxKCksIF9BbGxvYyA9IF9BbGxvYygpKSAtPiB1bm9yZGVyZWRf
bXVsdGltYXA8X0t0eSwgX1R5LCBfSGFzaGVyLCBfS2V5ZXEsIF9BbGxvYz47DQoNCnRlbXBsYXRl
IDxjbGFzcyBfSXRlciwgY2xhc3MgX0FsbG9jLCBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92PF9J
c19pdGVyYXRvcjxfSXRlcj4sIF9Jc19hbGxvY2F0b3I8X0FsbG9jPj4sIGludD4gPSAwPg0KdW5v
cmRlcmVkX211bHRpbWFwKF9JdGVyLCBfSXRlciwgX0FsbG9jKSAtPiB1bm9yZGVyZWRfbXVsdGlt
YXA8X0d1aWRlX2tleV90PF9JdGVyPiwgX0d1aWRlX3ZhbF90PF9JdGVyPiwNCiAgICBoYXNoPF9H
dWlkZV9rZXlfdDxfSXRlcj4+LCBlcXVhbF90bzxfR3VpZGVfa2V5X3Q8X0l0ZXI+PiwgX0FsbG9j
PjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9JdGVyLCBjbGFzcyBfQWxsb2MsIGVuYWJsZV9pZl90PGNv
bmp1bmN0aW9uX3Y8X0lzX2l0ZXJhdG9yPF9JdGVyPiwgX0lzX2FsbG9jYXRvcjxfQWxsb2M+Piwg
aW50PiA9IDA+DQp1bm9yZGVyZWRfbXVsdGltYXAoX0l0ZXIsIF9JdGVyLCBfR3VpZGVfc2l6ZV90
eXBlX3Q8X0FsbG9jPiwgX0FsbG9jKSAtPiB1bm9yZGVyZWRfbXVsdGltYXA8X0d1aWRlX2tleV90
PF9JdGVyPiwNCiAgICBfR3VpZGVfdmFsX3Q8X0l0ZXI+LCBoYXNoPF9HdWlkZV9rZXlfdDxfSXRl
cj4+LCBlcXVhbF90bzxfR3VpZGVfa2V5X3Q8X0l0ZXI+PiwgX0FsbG9jPjsNCg0KdGVtcGxhdGUg
PGNsYXNzIF9JdGVyLCBjbGFzcyBfSGFzaGVyLCBjbGFzcyBfQWxsb2MsDQogICAgZW5hYmxlX2lm
X3Q8Y29uanVuY3Rpb25fdjxfSXNfaXRlcmF0b3I8X0l0ZXI+LCBfSXNfaGFzaGVyPF9IYXNoZXI+
LCBfSXNfYWxsb2NhdG9yPF9BbGxvYz4+LCBpbnQ+ID0gMD4NCnVub3JkZXJlZF9tdWx0aW1hcChf
SXRlciwgX0l0ZXIsIF9HdWlkZV9zaXplX3R5cGVfdDxfQWxsb2M+LCBfSGFzaGVyLCBfQWxsb2Mp
DQogICAgLT4gdW5vcmRlcmVkX211bHRpbWFwPF9HdWlkZV9rZXlfdDxfSXRlcj4sIF9HdWlkZV92
YWxfdDxfSXRlcj4sIF9IYXNoZXIsIGVxdWFsX3RvPF9HdWlkZV9rZXlfdDxfSXRlcj4+LCBfQWxs
b2M+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfQWxsb2MsIGVu
YWJsZV9pZl90PF9Jc19hbGxvY2F0b3I8X0FsbG9jPjo6dmFsdWUsIGludD4gPSAwPg0KdW5vcmRl
cmVkX211bHRpbWFwKGluaXRpYWxpemVyX2xpc3Q8cGFpcjxfS3R5LCBfVHk+PiwgX0FsbG9jKQ0K
ICAgIC0+IHVub3JkZXJlZF9tdWx0aW1hcDxfS3R5LCBfVHksIGhhc2g8X0t0eT4sIGVxdWFsX3Rv
PF9LdHk+LCBfQWxsb2M+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFz
cyBfQWxsb2MsIGVuYWJsZV9pZl90PF9Jc19hbGxvY2F0b3I8X0FsbG9jPjo6dmFsdWUsIGludD4g
PSAwPg0KdW5vcmRlcmVkX211bHRpbWFwKGluaXRpYWxpemVyX2xpc3Q8cGFpcjxfS3R5LCBfVHk+
PiwgX0d1aWRlX3NpemVfdHlwZV90PF9BbGxvYz4sIF9BbGxvYykNCiAgICAtPiB1bm9yZGVyZWRf
bXVsdGltYXA8X0t0eSwgX1R5LCBoYXNoPF9LdHk+LCBlcXVhbF90bzxfS3R5PiwgX0FsbG9jPjsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9LdHksIGNsYXNzIF9UeSwgY2xhc3MgX0hhc2hlciwgY2xhc3Mg
X0FsbG9jLA0KICAgIGVuYWJsZV9pZl90PGNvbmp1bmN0aW9uX3Y8X0lzX2hhc2hlcjxfSGFzaGVy
PiwgX0lzX2FsbG9jYXRvcjxfQWxsb2M+PiwgaW50PiA9IDA+DQp1bm9yZGVyZWRfbXVsdGltYXAo
aW5pdGlhbGl6ZXJfbGlzdDxwYWlyPF9LdHksIF9UeT4+LCBfR3VpZGVfc2l6ZV90eXBlX3Q8X0Fs
bG9jPiwgX0hhc2hlciwgX0FsbG9jKQ0KICAgIC0+IHVub3JkZXJlZF9tdWx0aW1hcDxfS3R5LCBf
VHksIF9IYXNoZXIsIGVxdWFsX3RvPF9LdHk+LCBfQWxsb2M+Ow0KI2xpbmUgNzQwICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXHVub3JkZXJlZF9tYXAi
DQoNCnRlbXBsYXRlIDxjbGFzcyBfS3R5LCBjbGFzcyBfVHksIGNsYXNzIF9IYXNoZXIsIGNsYXNz
IF9LZXllcSwgY2xhc3MgX0FsbG9jPg0Kdm9pZCBzd2FwKHVub3JkZXJlZF9tdWx0aW1hcDxfS3R5
LCBfVHksIF9IYXNoZXIsIF9LZXllcSwgX0FsbG9jPiYgX0xlZnQsDQogICAgdW5vcmRlcmVkX211
bHRpbWFwPF9LdHksIF9UeSwgX0hhc2hlciwgX0tleWVxLCBfQWxsb2M+JiBfUmlnaHQpIG5vZXhj
ZXB0KG5vZXhjZXB0KF9MZWZ0LnN3YXAoX1JpZ2h0KSkpIHsNCiAgICBfTGVmdC5zd2FwKF9SaWdo
dCk7DQp9DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc1NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4Nilc
XE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1T
VkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1bm9yZGVyZWRfbWFwIg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfSGFzaGVyLCBjbGFzcyBfS2V5ZXEsIGNsYXNzIF9B
bGxvYz4NCltbbm9kaXNjYXJkXV0gYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVub3JkZXJlZF9tdWx0
aW1hcDxfS3R5LCBfVHksIF9IYXNoZXIsIF9LZXllcSwgX0FsbG9jPiYgX0xlZnQsDQogICAgY29u
c3QgdW5vcmRlcmVkX211bHRpbWFwPF9LdHksIF9UeSwgX0hhc2hlciwgX0tleWVxLCBfQWxsb2M+
JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gX0hhc2hfZXF1YWwoX0xlZnQsIF9SaWdodCk7DQp9DQoN
CnRlbXBsYXRlIDxjbGFzcyBfS3R5LCBjbGFzcyBfVHksIGNsYXNzIF9IYXNoZXIsIGNsYXNzIF9L
ZXllcSwgY2xhc3MgX0FsbG9jPg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
dW5vcmRlcmVkX211bHRpbWFwPF9LdHksIF9UeSwgX0hhc2hlciwgX0tleWVxLCBfQWxsb2M+JiBf
TGVmdCwNCiAgICBjb25zdCB1bm9yZGVyZWRfbXVsdGltYXA8X0t0eSwgX1R5LCBfSGFzaGVyLCBf
S2V5ZXEsIF9BbGxvYz4mIF9SaWdodCkgew0KICAgIHJldHVybiAhKF9MZWZ0ID09IF9SaWdodCk7
DQp9DQoNCg0KDQoNCg0KDQojbGluZSA3NzMgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcdW5vcmRlcmVkX21hcCINCg0KDQpuYW1lc3BhY2UgcG1yIHsN
CiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0t0eSwgY2xhc3MgX1R5LCBjbGFzcyBfSGFzaGVyID0gaGFz
aDxfS3R5PiwgY2xhc3MgX0tleWVxID0gZXF1YWxfdG88X0t0eT4+DQogICAgdXNpbmcgdW5vcmRl
cmVkX21hcCA9IDo6c3RkOjogdW5vcmRlcmVkX21hcDxfS3R5LCBfVHksIF9IYXNoZXIsIF9LZXll
cSwgcG9seW1vcnBoaWNfYWxsb2NhdG9yPHBhaXI8Y29uc3QgX0t0eSwgX1R5Pj4+Ow0KDQogICAg
dGVtcGxhdGUgPGNsYXNzIF9LdHksIGNsYXNzIF9UeSwgY2xhc3MgX0hhc2hlciA9IGhhc2g8X0t0
eT4sIGNsYXNzIF9LZXllcSA9IGVxdWFsX3RvPF9LdHk+Pg0KICAgIHVzaW5nIHVub3JkZXJlZF9t
dWx0aW1hcCA9DQogICAgICAgIDo6c3RkOjogdW5vcmRlcmVkX211bHRpbWFwPF9LdHksIF9UeSwg
X0hhc2hlciwgX0tleWVxLCBwb2x5bW9ycGhpY19hbGxvY2F0b3I8cGFpcjxjb25zdCBfS3R5LCBf
VHk+Pj47DQp9IA0KI2xpbmUgNzg0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXHVub3JkZXJlZF9tYXAiDQp9DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHBv
cCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSA3OTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcdW5vcmRlcmVkX21hcCINCiNsaW5lIDc5MSAiQzpc
XFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRl
cnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFx1bm9yZGVyZWRf
bWFwIg0KI2xpbmUgMTkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFs
IFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxc
aW5jbHVkZVxcZnVuY3Rpb25hbCINCiNsaW5lIDIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxc
TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNW
Q1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGZ1bmN0aW9uYWwiDQoNCg0KDQoNCiNwcmFnbWEgcGFj
ayhwdXNoLCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZSA6IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODgg
NDYxOSA0NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUw
MjcgNTA0NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSA9IHZvaWQ+DQpzdHJ1Y3QgZGl2aWRl
cyB7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBl
IHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwg
YW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3
LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJF
Q0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5J
TkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIp
XV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBzZWNvbmRfYXJn
dW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9UeSByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBfVHkg
b3BlcmF0b3IoKShjb25zdCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkmIF9SaWdodCkgY29uc3Qgew0K
ICAgICAgICByZXR1cm4gX0xlZnQgLyBfUmlnaHQ7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBtb2R1bHVzIHsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBmaXJzdF9hcmd1
bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1
bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50
X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBp
biBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVG
U19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElP
Tl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2Fy
bmluZy4iKV1dIHR5cGVkZWYgX1R5IHNlY29uZF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVj
YXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQg
YWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1l
bnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZp
bmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIg
Im9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRn
ZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IHJl
c3VsdF90eXBlOw0KDQogICAgY29uc3RleHByIF9UeSBvcGVyYXRvcigpKGNvbnN0IF9UeSYgX0xl
ZnQsIGNvbnN0IF9UeSYgX1JpZ2h0KSBjb25zdCB7DQogICAgICAgIHJldHVybiBfTGVmdCAlIF9S
aWdodDsNCiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHkgPSB2b2lkPg0Kc3RydWN0
IG5lZ2F0ZSB7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3Vs
dF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRf
dHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZT
X0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9O
X1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJu
aW5nLiIpXV0gdHlwZWRlZiBfVHkgYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSByZXN1bHRfdHlw
ZTsNCg0KICAgIGNvbnN0ZXhwciBfVHkgb3BlcmF0b3IoKShjb25zdCBfVHkmIF9MZWZ0KSBjb25z
dCB7DQogICAgICAgIHJldHVybiAtX0xlZnQ7DQogICAgfQ0KfTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVj
dCBsb2dpY2FsX2FuZCB7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55
IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJn
dW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNh
dGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZ
UEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJF
Q0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhp
cyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJndW1lbnRfdHlwZTsNCiAgICBbW2Rl
cHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAi
YW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2Fy
Z3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4g
ZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklO
RyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93
bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9U
eSBzZWNvbmRfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQw
MDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBm
aXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJl
IGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FE
QVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hY
MTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNl
aXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5cGU7DQoNCiAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UeSYgX0xlZnQsIGNvbnN0IF9UeSYgX1Jp
Z2h0KSBjb25zdCB7DQogICAgICAgIHJldHVybiBfTGVmdCAmJiBfUmlnaHQ7DQogICAgfQ0KfTsN
Cg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBsb2dpY2FsX29yIHsNCiAg
ICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRl
ZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vj
b25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllv
dSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05f
V0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8g
YWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBl
ZGVmIF9UeSBmaXJzdF9hcmd1bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcg
U1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5
cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVm
cyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hY
MTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FM
TF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZl
IHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IHNlY29uZF9hcmd1bWVudF90
eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlw
ZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUs
IGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysx
Ny4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBS
RUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJO
SU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4i
KV1dIHR5cGVkZWYgYm9vbCByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yKCkoY29uc3QgX1R5JiBfTGVmdCwgY29uc3QgX1R5JiBfUmlnaHQpIGNvbnN0IHsNCiAgICAg
ICAgcmV0dXJuIF9MZWZ0IHx8IF9SaWdodDsNCiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFz
cyBfVHkgPSB2b2lkPg0Kc3RydWN0IGxvZ2ljYWxfbm90IHsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBhcmd1bWVudF90
eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlw
ZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUs
IGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysx
Ny4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBS
RUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJO
SU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4i
KV1dIHR5cGVkZWYgYm9vbCByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yKCkoY29uc3QgX1R5JiBfTGVmdCkgY29uc3Qgew0KICAgICAgICByZXR1cm4gIV9MZWZ0Ow0K
ICAgIH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSA9IHZvaWQ+DQpzdHJ1Y3QgYml0X2Fu
ZCB7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBl
IHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwg
YW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3
LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJF
Q0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5J
TkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIp
XV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3
YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1
bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUg
dHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxF
TkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lM
RU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5
b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBzZWNvbmRfYXJn
dW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVz
dWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVu
dF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQg
aW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURF
RlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJ
T05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdh
cm5pbmcuIildXSB0eXBlZGVmIF9UeSByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhwciBfVHkg
b3BlcmF0b3IoKShjb25zdCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkmIF9SaWdodCkgY29uc3Qgew0K
ICAgICAgICByZXR1cm4gX0xlZnQgJiBfUmlnaHQ7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBiaXRfb3Igew0KICAgIFtbZGVwcmVjYXRlZCggIndh
cm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3Vt
ZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0
eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVO
Q0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxF
TkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlv
dSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHR5cGVkZWYgX1R5IGZpcnN0X2FyZ3Vt
ZW50X3R5cGU7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3Vs
dF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRf
dHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZT
X0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9O
X1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJu
aW5nLiIpXV0gdHlwZWRlZiBfVHkgc2Vjb25kX2FyZ3VtZW50X3R5cGU7DQogICAgW1tkZXByZWNh
dGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3VsdF90eXBlIHR5cGVkZWZzICIgImFuZCBh
bGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRfdHlwZSwgYW5kIHNlY29uZF9hcmd1bWVu
dF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJZb3UgY2FuIGRlZmlu
ZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZTX0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAi
b3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdTIHRvIGFja25vd2xlZGdl
IHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0gdHlwZWRlZiBfVHkgcmVz
dWx0X3R5cGU7DQoNCiAgICBjb25zdGV4cHIgX1R5IG9wZXJhdG9yKCkoY29uc3QgX1R5JiBfTGVm
dCwgY29uc3QgX1R5JiBfUmlnaHQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIF9MZWZ0IHwgX1Jp
Z2h0Ow0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSA9IHZvaWQ+DQpzdHJ1Y3Qg
Yml0X3hvciB7DQogICAgW1tkZXByZWNhdGVkKCAid2FybmluZyBTVEw0MDA3OiBNYW55IHJlc3Vs
dF90eXBlIHR5cGVkZWZzICIgImFuZCBhbGwgYXJndW1lbnRfdHlwZSwgZmlyc3RfYXJndW1lbnRf
dHlwZSwgYW5kIHNlY29uZF9hcmd1bWVudF90eXBlIHR5cGVkZWZzIGFyZSBkZXByZWNhdGVkIGlu
IEMrKzE3LiAiICJZb3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19BREFQVE9SX1RZUEVERUZT
X0RFUFJFQ0FUSU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9O
X1dBUk5JTkdTIHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJu
aW5nLiIpXV0gdHlwZWRlZiBfVHkgZmlyc3RfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0
ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFs
bCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50
X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5l
IF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJv
ciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2Ug
dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBzZWNv
bmRfYXJndW1lbnRfdHlwZTsNCiAgICBbW2RlcHJlY2F0ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1h
bnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFsbCBhcmd1bWVudF90eXBlLCBmaXJzdF9h
cmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJl
Y2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X0FEQVBUT1Jf
VFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQ
UkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSByZXN1bHRfdHlwZTsNCg0KICAgIGNvbnN0ZXhw
ciBfVHkgb3BlcmF0b3IoKShjb25zdCBfVHkmIF9MZWZ0LCBjb25zdCBfVHkmIF9SaWdodCkgY29u
c3Qgew0KICAgICAgICByZXR1cm4gX0xlZnQgXiBfUmlnaHQ7DQogICAgfQ0KfTsNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R5ID0gdm9pZD4NCnN0cnVjdCBiaXRfbm90IHsNCiAgICBbW2RlcHJlY2F0
ZWQoICJ3YXJuaW5nIFNUTDQwMDc6IE1hbnkgcmVzdWx0X3R5cGUgdHlwZWRlZnMgIiAiYW5kIGFs
bCBhcmd1bWVudF90eXBlLCBmaXJzdF9hcmd1bWVudF90eXBlLCBhbmQgc2Vjb25kX2FyZ3VtZW50
X3R5cGUgdHlwZWRlZnMgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIllvdSBjYW4gZGVmaW5l
IF9TSUxFTkNFX0NYWDE3X0FEQVBUT1JfVFlQRURFRlNfREVQUkVDQVRJT05fV0FSTklORyAiICJv
ciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2Ug
dGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSB0eXBlZGVmIF9UeSBhcmd1
bWVudF90eXBlOw0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1
bHRfdHlwZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50
X3R5cGUsIGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBp
biBDKysxNy4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVG
U19ERVBSRUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElP
Tl9XQVJOSU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2Fy
bmluZy4iKV1dIHR5cGVkZWYgX1R5IHJlc3VsdF90eXBlOw0KDQogICAgY29uc3RleHByIF9UeSBv
cGVyYXRvcigpKGNvbnN0IF9UeSYgX0xlZnQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIH5fTGVm
dDsNCiAgICB9DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3Qg
ZGl2aWRlczx2b2lkPiB7DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQog
ICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkxJiYgX0xlZnQsIF9UeTImJiBfUmlnaHQp
IGNvbnN0DQogICAgICAgIC0+IGRlY2x0eXBlKDo6c3RkOjogZm9yd2FyZDxfVHkxPihfTGVmdCkg
LyA6OnN0ZDo6IGZvcndhcmQ8X1R5Mj4oX1JpZ2h0KSkgew0KICAgICAgICByZXR1cm4gOjpzdGQ6
OiBmb3J3YXJkPF9UeTE+KF9MZWZ0KSAvIDo6c3RkOjogZm9yd2FyZDxfVHkyPihfUmlnaHQpOw0K
ICAgIH0NCg0KICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gaW50Ow0KfTsNCg0KDQp0ZW1wbGF0
ZSA8Pg0Kc3RydWN0IG1vZHVsdXM8dm9pZD4gew0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHkxLCBj
bGFzcyBfVHkyPg0KICAgIGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yKCkoX1R5MSYmIF9MZWZ0LCBf
VHkyJiYgX1JpZ2h0KSBjb25zdA0KICAgICAgICAtPiBkZWNsdHlwZSg6OnN0ZDo6IGZvcndhcmQ8
X1R5MT4oX0xlZnQpICUgOjpzdGQ6OiBmb3J3YXJkPF9UeTI+KF9SaWdodCkpIHsNCiAgICAgICAg
cmV0dXJuIDo6c3RkOjogZm9yd2FyZDxfVHkxPihfTGVmdCkgJSA6OnN0ZDo6IGZvcndhcmQ8X1R5
Mj4oX1JpZ2h0KTsNCiAgICB9DQoNCiAgICB1c2luZyBpc190cmFuc3BhcmVudCA9IGludDsNCn07
DQoNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBuZWdhdGU8dm9pZD4gew0KICAgIHRlbXBsYXRlIDxj
bGFzcyBfVHk+DQogICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkmJiBfTGVmdCkgY29u
c3QgLT4gZGVjbHR5cGUoLTo6c3RkOjogZm9yd2FyZDxfVHk+KF9MZWZ0KSkgew0KICAgICAgICBy
ZXR1cm4gLTo6c3RkOjogZm9yd2FyZDxfVHk+KF9MZWZ0KTsNCiAgICB9DQoNCiAgICB1c2luZyBp
c190cmFuc3BhcmVudCA9IGludDsNCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBsb2dpY2FsX2FuZDx2b2lkPiB7DQogICAgdGVt
cGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQogICAgY29uc3RleHByIGF1dG8gb3BlcmF0
b3IoKShfVHkxJiYgX0xlZnQsIF9UeTImJiBfUmlnaHQpIGNvbnN0DQogICAgICAgIC0+IGRlY2x0
eXBlKDo6c3RkOjogZm9yd2FyZDxfVHkxPihfTGVmdCkgJiYgOjpzdGQ6OiBmb3J3YXJkPF9UeTI+
KF9SaWdodCkpIHsNCiAgICAgICAgcmV0dXJuIDo6c3RkOjogZm9yd2FyZDxfVHkxPihfTGVmdCkg
JiYgOjpzdGQ6OiBmb3J3YXJkPF9UeTI+KF9SaWdodCk7DQogICAgfQ0KDQogICAgdXNpbmcgaXNf
dHJhbnNwYXJlbnQgPSBpbnQ7DQp9Ow0KDQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgbG9naWNhbF9v
cjx2b2lkPiB7DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9UeTI+DQogICAgY29u
c3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkxJiYgX0xlZnQsIF9UeTImJiBfUmlnaHQpIGNvbnN0
DQogICAgICAgIC0+IGRlY2x0eXBlKDo6c3RkOjogZm9yd2FyZDxfVHkxPihfTGVmdCkgfHwgOjpz
dGQ6OiBmb3J3YXJkPF9UeTI+KF9SaWdodCkpIHsNCiAgICAgICAgcmV0dXJuIDo6c3RkOjogZm9y
d2FyZDxfVHkxPihfTGVmdCkgfHwgOjpzdGQ6OiBmb3J3YXJkPF9UeTI+KF9SaWdodCk7DQogICAg
fQ0KDQogICAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSBpbnQ7DQp9Ow0KDQoNCnRlbXBsYXRlIDw+
DQpzdHJ1Y3QgbG9naWNhbF9ub3Q8dm9pZD4gew0KICAgIHRlbXBsYXRlIDxjbGFzcyBfVHk+DQog
ICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkmJiBfTGVmdCkgY29uc3QgLT4gZGVjbHR5
cGUoITo6c3RkOjogZm9yd2FyZDxfVHk+KF9MZWZ0KSkgew0KICAgICAgICByZXR1cm4gITo6c3Rk
OjogZm9yd2FyZDxfVHk+KF9MZWZ0KTsNCiAgICB9DQoNCiAgICB1c2luZyBpc190cmFuc3BhcmVu
dCA9IGludDsNCn07DQoNCg0KdGVtcGxhdGUgPD4NCnN0cnVjdCBiaXRfYW5kPHZvaWQ+IHsNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCiAgICBjb25zdGV4cHIgYXV0byBv
cGVyYXRvcigpKF9UeTEmJiBfTGVmdCwgX1R5MiYmIF9SaWdodCkgY29uc3QNCiAgICAgICAgLT4g
ZGVjbHR5cGUoOjpzdGQ6OiBmb3J3YXJkPF9UeTE+KF9MZWZ0KSAmIDo6c3RkOjogZm9yd2FyZDxf
VHkyPihfUmlnaHQpKSB7DQogICAgICAgIHJldHVybiA6OnN0ZDo6IGZvcndhcmQ8X1R5MT4oX0xl
ZnQpICYgOjpzdGQ6OiBmb3J3YXJkPF9UeTI+KF9SaWdodCk7DQogICAgfQ0KDQogICAgdXNpbmcg
aXNfdHJhbnNwYXJlbnQgPSBpbnQ7DQp9Ow0KDQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgYml0X29y
PHZvaWQ+IHsNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5MSwgY2xhc3MgX1R5Mj4NCiAgICBjb25z
dGV4cHIgYXV0byBvcGVyYXRvcigpKF9UeTEmJiBfTGVmdCwgX1R5MiYmIF9SaWdodCkgY29uc3QN
CiAgICAgICAgLT4gZGVjbHR5cGUoOjpzdGQ6OiBmb3J3YXJkPF9UeTE+KF9MZWZ0KSB8IDo6c3Rk
OjogZm9yd2FyZDxfVHkyPihfUmlnaHQpKSB7DQogICAgICAgIHJldHVybiA6OnN0ZDo6IGZvcndh
cmQ8X1R5MT4oX0xlZnQpIHwgOjpzdGQ6OiBmb3J3YXJkPF9UeTI+KF9SaWdodCk7DQogICAgfQ0K
DQogICAgdXNpbmcgaXNfdHJhbnNwYXJlbnQgPSBpbnQ7DQp9Ow0KDQoNCnRlbXBsYXRlIDw+DQpz
dHJ1Y3QgYml0X3hvcjx2b2lkPiB7DQogICAgdGVtcGxhdGUgPGNsYXNzIF9UeTEsIGNsYXNzIF9U
eTI+DQogICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkxJiYgX0xlZnQsIF9UeTImJiBf
UmlnaHQpIGNvbnN0DQogICAgICAgIC0+IGRlY2x0eXBlKDo6c3RkOjogZm9yd2FyZDxfVHkxPihf
TGVmdCkgXiA6OnN0ZDo6IGZvcndhcmQ8X1R5Mj4oX1JpZ2h0KSkgew0KICAgICAgICByZXR1cm4g
OjpzdGQ6OiBmb3J3YXJkPF9UeTE+KF9MZWZ0KSBeIDo6c3RkOjogZm9yd2FyZDxfVHkyPihfUmln
aHQpOw0KICAgIH0NCg0KICAgIHVzaW5nIGlzX3RyYW5zcGFyZW50ID0gaW50Ow0KfTsNCg0KDQp0
ZW1wbGF0ZSA8Pg0Kc3RydWN0IGJpdF9ub3Q8dm9pZD4gew0KICAgIHRlbXBsYXRlIDxjbGFzcyBf
VHk+DQogICAgY29uc3RleHByIGF1dG8gb3BlcmF0b3IoKShfVHkmJiBfTGVmdCkgY29uc3QgLT4g
ZGVjbHR5cGUofjo6c3RkOjogZm9yd2FyZDxfVHk+KF9MZWZ0KSkgew0KICAgICAgICByZXR1cm4g
fjo6c3RkOjogZm9yd2FyZDxfVHk+KF9MZWZ0KTsNCiAgICB9DQoNCiAgICB1c2luZyBpc190cmFu
c3BhcmVudCA9IGludDsNCn07DQoNCg0KX19wcmFnbWEod2FybmluZyhwdXNoKSkgX19wcmFnbWEo
d2FybmluZyhkaXNhYmxlIDogNDk5NikpDQoNCnRlbXBsYXRlIDxjbGFzcyBfRm4+DQpjbGFzcyBb
W2RlcHJlY2F0ZWQoIndhcm5pbmcgU1RMNDAwODogIiAic3RkOjpub3QxKCksIHN0ZDo6bm90Migp
LCBzdGQ6OnVuYXJ5X25lZ2F0ZSwgYW5kIHN0ZDo6YmluYXJ5X25lZ2F0ZSBhcmUgZGVwcmVjYXRl
ZCBpbiBDKysxNy4gIiAiVGhleSBhcmUgc3VwZXJzZWRlZCBieSBzdGQ6Om5vdF9mbigpLiAiICJZ
b3UgY2FuIGRlZmluZSBfU0lMRU5DRV9DWFgxN19ORUdBVE9SU19ERVBSRUNBVElPTl9XQVJOSU5H
ICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJOSU5HUyB0byBhY2tub3ds
ZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4iKV1dIHVuYXJ5X25lZ2F0
ZSB7DQpwdWJsaWM6DQogICAgdXNpbmcgYXJndW1lbnRfdHlwZSA9IHR5cGVuYW1lIF9Gbjo6YXJn
dW1lbnRfdHlwZTsNCiAgICB1c2luZyByZXN1bHRfdHlwZSAgID0gYm9vbDsNCg0KICAgIGNvbnN0
ZXhwciBleHBsaWNpdCB1bmFyeV9uZWdhdGUoY29uc3QgX0ZuJiBfRnVuYykgOiBfRnVuY3Rvcihf
RnVuYykge30NCg0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yKCkoY29uc3QgYXJndW1lbnRf
dHlwZSYgX0xlZnQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuICFfRnVuY3RvcihfTGVmdCk7DQog
ICAgfQ0KDQpwcml2YXRlOg0KICAgIF9GbiBfRnVuY3RvcjsNCn07DQoNCg0KdGVtcGxhdGUgPGNs
YXNzIF9Gbj4NCltbZGVwcmVjYXRlZCgid2FybmluZyBTVEw0MDA4OiAiICJzdGQ6Om5vdDEoKSwg
c3RkOjpub3QyKCksIHN0ZDo6dW5hcnlfbmVnYXRlLCBhbmQgc3RkOjpiaW5hcnlfbmVnYXRlIGFy
ZSBkZXByZWNhdGVkIGluIEMrKzE3LiAiICJUaGV5IGFyZSBzdXBlcnNlZGVkIGJ5IHN0ZDo6bm90
X2ZuKCkuICIgIllvdSBjYW4gZGVmaW5lIF9TSUxFTkNFX0NYWDE3X05FR0FUT1JTX0RFUFJFQ0FU
SU9OX1dBUk5JTkcgIiAib3IgX1NJTEVOQ0VfQUxMX0NYWDE3X0RFUFJFQ0FUSU9OX1dBUk5JTkdT
IHRvIGFja25vd2xlZGdlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyB3YXJuaW5nLiIpXV0g
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgdW5hcnlfbmVnYXRlPF9Gbj4gbm90MShjb25zdCBfRm4m
IF9GdW5jKSB7DQogICAgcmV0dXJuIHVuYXJ5X25lZ2F0ZTxfRm4+KF9GdW5jKTsNCn0NCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZuPg0KY2xhc3MgW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMDg6
ICIgInN0ZDo6bm90MSgpLCBzdGQ6Om5vdDIoKSwgc3RkOjp1bmFyeV9uZWdhdGUsIGFuZCBzdGQ6
OmJpbmFyeV9uZWdhdGUgYXJlIGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIlRoZXkgYXJlIHN1cGVy
c2VkZWQgYnkgc3RkOjpub3RfZm4oKS4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdf
TkVHQVRPUlNfREVQUkVDQVRJT05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQ
UkVDQVRJT05fV0FSTklOR1MgdG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0
aGlzIHdhcm5pbmcuIildXSBiaW5hcnlfbmVnYXRlIHsNCnB1YmxpYzoNCiAgICB1c2luZyBmaXJz
dF9hcmd1bWVudF90eXBlICA9IHR5cGVuYW1lIF9Gbjo6Zmlyc3RfYXJndW1lbnRfdHlwZTsNCiAg
ICB1c2luZyBzZWNvbmRfYXJndW1lbnRfdHlwZSA9IHR5cGVuYW1lIF9Gbjo6c2Vjb25kX2FyZ3Vt
ZW50X3R5cGU7DQogICAgdXNpbmcgcmVzdWx0X3R5cGUgICAgICAgICAgPSBib29sOw0KDQogICAg
Y29uc3RleHByIGV4cGxpY2l0IGJpbmFyeV9uZWdhdGUoY29uc3QgX0ZuJiBfRnVuYykgOiBfRnVu
Y3RvcihfRnVuYykge30NCg0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yKCkoY29uc3QgZmly
c3RfYXJndW1lbnRfdHlwZSYgX0xlZnQsIGNvbnN0IHNlY29uZF9hcmd1bWVudF90eXBlJiBfUmln
aHQpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuICFfRnVuY3RvcihfTGVmdCwgX1JpZ2h0KTsNCiAg
ICB9DQoNCnByaXZhdGU6DQogICAgX0ZuIF9GdW5jdG9yOw0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZuPg0KW1tkZXByZWNhdGVkKCJ3YXJuaW5nIFNUTDQwMDg6ICIgInN0ZDo6bm90MSgpLCBz
dGQ6Om5vdDIoKSwgc3RkOjp1bmFyeV9uZWdhdGUsIGFuZCBzdGQ6OmJpbmFyeV9uZWdhdGUgYXJl
IGRlcHJlY2F0ZWQgaW4gQysrMTcuICIgIlRoZXkgYXJlIHN1cGVyc2VkZWQgYnkgc3RkOjpub3Rf
Zm4oKS4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfTkVHQVRPUlNfREVQUkVDQVRJ
T05fV0FSTklORyAiICJvciBfU0lMRU5DRV9BTExfQ1hYMTdfREVQUkVDQVRJT05fV0FSTklOR1Mg
dG8gYWNrbm93bGVkZ2UgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIHdhcm5pbmcuIildXSBb
W25vZGlzY2FyZF1dIGNvbnN0ZXhwciBiaW5hcnlfbmVnYXRlPF9Gbj4gbm90Mihjb25zdCBfRm4m
IF9GdW5jKSB7DQogICAgcmV0dXJuIGJpbmFyeV9uZWdhdGU8X0ZuPihfRnVuYyk7DQp9DQpfX3By
YWdtYSh3YXJuaW5nKHBvcCkpDQojbGluZSAzNzAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVuY3Rpb25hbCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDYzOCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNs
dWRlXFxmdW5jdGlvbmFsIg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfTWVtcHRyPg0KY2xhc3MgX01l
bV9mbiA6IHB1YmxpYyBfV2Vha190eXBlczxfTWVtcHRyPjo6dHlwZSB7DQpwcml2YXRlOg0KICAg
IF9NZW1wdHIgX1BtOw0KDQpwdWJsaWM6DQogICAgY29uc3RleHByIGV4cGxpY2l0IF9NZW1fZm4o
X01lbXB0ciBfVmFsKSBub2V4Y2VwdCA6IF9QbShfVmFsKSB7fQ0KDQogICAgdGVtcGxhdGUgPGNs
YXNzLi4uIF9UeXBlcz4NCiAgICBpbmxpbmUgYXV0byBvcGVyYXRvcigpKF9UeXBlcyYmLi4uIF9B
cmdzKSBjb25zdA0KICAgICAgICBub2V4Y2VwdChub2V4Y2VwdCg6OnN0ZDo6IGludm9rZShfUG0s
IDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLikpKQ0KICAgICAgICAgICAgLT4gZGVj
bHR5cGUoOjpzdGQ6OiBpbnZva2UoX1BtLCA6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJncyku
Li4pKSB7DQogICAgICAgIHJldHVybiA6OnN0ZDo6IGludm9rZShfUG0sIDo6c3RkOjogZm9yd2Fy
ZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9SeCwg
Y2xhc3MgX1R5Pg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX01lbV9mbjxfUnggX1R5OjoqPiBtZW1f
Zm4oX1J4IF9UeTo6Kl9QbSkgbm9leGNlcHQgew0KICAgIHJldHVybiBfTWVtX2ZuPF9SeCBfVHk6
Oio+KF9QbSk7DQp9DQoNCg0KDQpzdHJ1Y3QgX05vdF9mbl90YWcgew0KICAgIGV4cGxpY2l0IF9O
b3RfZm5fdGFnKCkgPSBkZWZhdWx0Ow0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9EZWNheWVkPg0K
Y2xhc3MgX05vdF9mbiA6IHByaXZhdGUgX0ViY29fYmFzZTxfRGVjYXllZD4gew0KcHJpdmF0ZToN
CiAgICB1c2luZyBfTXliYXNlID0gX0ViY29fYmFzZTxfRGVjYXllZD47DQoNCnB1YmxpYzoNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxhYmxlLCBjbGFzcyBfVGFnLCBlbmFibGVfaWZfdDxpc19z
YW1lX3Y8X1RhZywgX05vdF9mbl90YWc+LCBpbnQ+ID0gMD4NCiAgICBjb25zdGV4cHIgZXhwbGlj
aXQgX05vdF9mbihfQ2FsbGFibGUmJiBfT2JqLCBfVGFnKSBub2V4Y2VwdCgNCiAgICAgICAgaXNf
bm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8X0RlY2F5ZWQsIF9DYWxsYWJsZT4pIA0KICAgICAgICA6
IF9NeWJhc2UoOjpzdGQ6OiBmb3J3YXJkPF9DYWxsYWJsZT4oX09iaikpIHt9IA0KDQogICAgY29u
c3RleHByIF9Ob3RfZm4oY29uc3QgX05vdF9mbiYpID0gZGVmYXVsdDsNCiAgICBjb25zdGV4cHIg
X05vdF9mbihfTm90X2ZuJiYpICAgICAgPSBkZWZhdWx0Ow0KDQogICAgdGVtcGxhdGUgPGNsYXNz
Li4uIF9UeXBlcz4NCiAgICBpbmxpbmUgYXV0byBvcGVyYXRvcigpKF9UeXBlcyYmLi4uIF9Bcmdz
KSAmIG5vZXhjZXB0KA0KICAgICAgICBub2V4Y2VwdCghOjpzdGQ6OiBpbnZva2UodGhpcy0+X0dl
dF92YWwoKSwgOjpzdGQ6OiBmb3J3YXJkPF9UeXBlcz4oX0FyZ3MpLi4uKSkpDQogICAgICAgIC0+
IGRlY2x0eXBlKCE6OnN0ZDo6IGRlY2x2YWw8aW52b2tlX3Jlc3VsdF90PF9EZWNheWVkJiwgX1R5
cGVzLi4uPj4oKSkgew0KICAgICAgICByZXR1cm4gITo6c3RkOjogaW52b2tlKHRoaXMtPl9HZXRf
dmFsKCksIDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgfQ0KDQogICAg
dGVtcGxhdGUgPGNsYXNzLi4uIF9UeXBlcz4NCiAgICBpbmxpbmUgYXV0byBvcGVyYXRvcigpKF9U
eXBlcyYmLi4uIF9BcmdzKSBjb25zdCYgbm9leGNlcHQoDQogICAgICAgIG5vZXhjZXB0KCE6OnN0
ZDo6IGludm9rZSh0aGlzLT5fR2V0X3ZhbCgpLCA6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJn
cykuLi4pKSkNCiAgICAgICAgLT4gZGVjbHR5cGUoITo6c3RkOjogZGVjbHZhbDxpbnZva2VfcmVz
dWx0X3Q8Y29uc3QgX0RlY2F5ZWQmLCBfVHlwZXMuLi4+PigpKSB7DQogICAgICAgIHJldHVybiAh
OjpzdGQ6OiBpbnZva2UodGhpcy0+X0dldF92YWwoKSwgOjpzdGQ6OiBmb3J3YXJkPF9UeXBlcz4o
X0FyZ3MpLi4uKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1R5cGVzPg0KICAg
IGlubGluZSBhdXRvIG9wZXJhdG9yKCkoX1R5cGVzJiYuLi4gX0FyZ3MpICYmIG5vZXhjZXB0KA0K
ICAgICAgICBub2V4Y2VwdCghOjpzdGQ6OiBpbnZva2UoOjpzdGQ6OiBtb3ZlKHRoaXMtPl9HZXRf
dmFsKCkpLCA6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJncykuLi4pKSkNCiAgICAgICAgLT4g
ZGVjbHR5cGUoITo6c3RkOjogZGVjbHZhbDxpbnZva2VfcmVzdWx0X3Q8X0RlY2F5ZWQsIF9UeXBl
cy4uLj4+KCkpIHsNCiAgICAgICAgcmV0dXJuICE6OnN0ZDo6IGludm9rZSg6OnN0ZDo6IG1vdmUo
dGhpcy0+X0dldF92YWwoKSksIDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQog
ICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9UeXBlcz4NCiAgICBpbmxpbmUgYXV0byBv
cGVyYXRvcigpKF9UeXBlcyYmLi4uIF9BcmdzKSBjb25zdCYmIG5vZXhjZXB0KA0KICAgICAgICBu
b2V4Y2VwdCghOjpzdGQ6OiBpbnZva2UoOjpzdGQ6OiBtb3ZlKHRoaXMtPl9HZXRfdmFsKCkpLCA6
OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJncykuLi4pKSkNCiAgICAgICAgLT4gZGVjbHR5cGUo
ITo6c3RkOjogZGVjbHZhbDxpbnZva2VfcmVzdWx0X3Q8Y29uc3QgX0RlY2F5ZWQsIF9UeXBlcy4u
Lj4+KCkpIHsNCiAgICAgICAgcmV0dXJuICE6OnN0ZDo6IGludm9rZSg6OnN0ZDo6IG1vdmUodGhp
cy0+X0dldF92YWwoKSksIDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAg
fQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9DYWxsYWJsZT4NCltbbm9kaXNjYXJkXV0gaW5saW5l
IF9Ob3RfZm48ZGVjYXlfdDxfQ2FsbGFibGU+PiBub3RfZm4oX0NhbGxhYmxlJiYgX09iaikgbm9l
eGNlcHQoDQogICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlX3Y8ZGVjYXlfdDxfQ2FsbGFibGU+
LCBfQ2FsbGFibGU+KSAgew0KICAgIA0KICAgIHJldHVybiBfTm90X2ZuPGRlY2F5X3Q8X0NhbGxh
YmxlPj4oOjpzdGQ6OiBmb3J3YXJkPF9DYWxsYWJsZT4oX09iaiksIF9Ob3RfZm5fdGFne30pOw0K
fQ0KI2xpbmUgNzE3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGZ1bmN0aW9uYWwiDQoNCg0KDQoNCmNsYXNzIGJhZF9mdW5jdGlvbl9jYWxsIDogcHVi
bGljIGV4Y2VwdGlvbiB7IA0KcHVibGljOg0KICAgIGJhZF9mdW5jdGlvbl9jYWxsKCkgbm9leGNl
cHQge30NCg0KICAgIFtbbm9kaXNjYXJkXV0gdmlydHVhbCBjb25zdCBjaGFyKiAgd2hhdCgpIGNv
bnN0IG5vZXhjZXB0IG92ZXJyaWRlIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiAiYmFkIGZ1
bmN0aW9uIGNhbGwiOw0KICAgIH0NCn07DQoNCltbbm9yZXR1cm5dXSAgdm9pZCBfX2NkZWNsIF9Y
YmFkX2Z1bmN0aW9uX2NhbGwoKTsNCg0Kc3RydWN0IF9VbmZvcmNlZCB7IA0KICAgIGV4cGxpY2l0
IF9VbmZvcmNlZCgpID0gZGVmYXVsdDsNCn07DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4LCBi
b29sID0gaXNfdm9pZF92PF9SeD4+DQpzdHJ1Y3QgX0ludm9rZXJfcmV0IHsgDQogICAgdGVtcGxh
dGUgPGNsYXNzIF9GeCwgY2xhc3MuLi4gX1ZhbHR5cz4NCiAgICBzdGF0aWMgaW5saW5lIHZvaWQg
X0NhbGwoX0Z4JiYgX0Z1bmMsIF9WYWx0eXMmJi4uLiBfVmFscykgbm9leGNlcHQoX1NlbGVjdF9p
bnZva2VfdHJhaXRzPF9GeCwNCiAgICAgICAgX1ZhbHR5cy4uLj46Ol9Jc19ub3Rocm93X2ludm9j
YWJsZTo6dmFsdWUpIHsgDQogICAgICAgIDo6c3RkOjogaW52b2tlKHN0YXRpY19jYXN0PF9GeCYm
PihfRnVuYyksIHN0YXRpY19jYXN0PF9WYWx0eXMmJj4oX1ZhbHMpLi4uKTsNCiAgICB9DQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4Pg0Kc3RydWN0IF9JbnZva2VyX3JldDxfUngsIGZhbHNlPiB7
IA0KDQoNCg0KDQoNCg0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Z4LCBjbGFzcy4uLiBfVmFs
dHlzPg0KICAgIHN0YXRpYyBpbmxpbmUgX1J4IF9DYWxsKF9GeCYmIF9GdW5jLCBfVmFsdHlzJiYu
Li4gX1ZhbHMpIG5vZXhjZXB0KF9TZWxlY3RfaW52b2tlX3RyYWl0czxfRngsDQogICAgICAgIF9W
YWx0eXMuLi4+Ojp0ZW1wbGF0ZSBfSXNfbm90aHJvd19pbnZvY2FibGVfcjxfUng+Ojp2YWx1ZSkg
eyANCiAgICAgICAgcmV0dXJuIDo6c3RkOjogaW52b2tlKHN0YXRpY19jYXN0PF9GeCYmPihfRnVu
YyksIHN0YXRpY19jYXN0PF9WYWx0eXMmJj4oX1ZhbHMpLi4uKTsNCiAgICB9DQojbGluZSA3NjQg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVuY3Rp
b25hbCINCn07DQoNCnRlbXBsYXRlIDw+DQpzdHJ1Y3QgX0ludm9rZXJfcmV0PF9VbmZvcmNlZCwg
ZmFsc2U+IHsgDQogICAgdGVtcGxhdGUgPGNsYXNzIF9GeCwgY2xhc3MuLi4gX1ZhbHR5cz4NCiAg
ICBzdGF0aWMgaW5saW5lIGF1dG8gX0NhbGwoX0Z4JiYgX0Z1bmMsIF9WYWx0eXMmJi4uLiBfVmFs
cykgbm9leGNlcHQoDQogICAgICAgIF9TZWxlY3RfaW52b2tlX3RyYWl0czxfRngsIF9WYWx0eXMu
Li4+OjpfSXNfbm90aHJvd19pbnZvY2FibGU6OnZhbHVlKQ0KICAgICAgICAtPiBkZWNsdHlwZSg6
OnN0ZDo6IGludm9rZShzdGF0aWNfY2FzdDxfRngmJj4oX0Z1bmMpLCBzdGF0aWNfY2FzdDxfVmFs
dHlzJiY+KF9WYWxzKS4uLikpIHsgDQogICAgICAgIHJldHVybiA6OnN0ZDo6IGludm9rZShzdGF0
aWNfY2FzdDxfRngmJj4oX0Z1bmMpLCBzdGF0aWNfY2FzdDxfVmFsdHlzJiY+KF9WYWxzKS4uLik7
DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z0eT4NCmNsYXNzIGZ1bmN0aW9uOw0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9UZXN0YWJsZV9j
YWxsYWJsZV92ID0NCiAgICBkaXNqdW5jdGlvbl92PGlzX3BvaW50ZXI8X1R5PiwgX0lzX3NwZWNp
YWxpemF0aW9uPF9UeSwgZnVuY3Rpb24+LCBpc19tZW1iZXJfcG9pbnRlcjxfVHk+PjsNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KYm9vbCBfVGVzdF9jYWxsYWJsZShjb25zdCBfVHkmIF9Bcmcp
IG5vZXhjZXB0IHsgDQogICAgaWYgY29uc3RleHByIChfVGVzdGFibGVfY2FsbGFibGVfdjxfVHk+
KSB7DQogICAgICAgIHJldHVybiAhIV9Bcmc7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJu
IHRydWU7DQogICAgfQ0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4
MTAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVu
Y3Rpb25hbCINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1J4LCBjbGFzcy4uLiBfVHlwZXM+DQpjbGFz
cyBfX2RlY2xzcGVjKG5vdnRhYmxlKSBfRnVuY19iYXNlIHsgDQpwdWJsaWM6DQogICAgdmlydHVh
bCBfRnVuY19iYXNlKiBfQ29weSh2b2lkKikgY29uc3QgICAgICAgICAgICAgICAgID0gMDsNCiAg
ICB2aXJ0dWFsIF9GdW5jX2Jhc2UqIF9Nb3ZlKHZvaWQqKSBub2V4Y2VwdCAgICAgICAgICAgICAg
PSAwOw0KICAgIHZpcnR1YWwgX1J4IF9Eb19jYWxsKF9UeXBlcyYmLi4uKSAgICAgICAgICAgICAg
ICAgICAgICA9IDA7DQogICAgdmlydHVhbCBjb25zdCB0eXBlX2luZm8mIF9UYXJnZXRfdHlwZSgp
IGNvbnN0IG5vZXhjZXB0ID0gMDsNCiAgICB2aXJ0dWFsIHZvaWQgX0RlbGV0ZV90aGlzKGJvb2wp
IG5vZXhjZXB0ICAgICAgICAgICAgICAgPSAwOw0KDQoNCiAgICBjb25zdCB2b2lkKiBfVGFyZ2V0
KGNvbnN0IHR5cGVfaW5mbyYgX0luZm8pIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJu
IF9UYXJnZXRfdHlwZSgpID09IF9JbmZvID8gX0dldCgpIDogbnVsbHB0cjsNCiAgICB9DQojbGlu
ZSA4MjYgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xc
MjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxc
ZnVuY3Rpb25hbCINCg0KICAgIF9GdW5jX2Jhc2UoKSAgICAgICAgICAgICAgICAgID0gZGVmYXVs
dDsNCiAgICBfRnVuY19iYXNlKGNvbnN0IF9GdW5jX2Jhc2UmKSA9IGRlbGV0ZTsNCiAgICBfRnVu
Y19iYXNlJiBvcGVyYXRvcj0oY29uc3QgX0Z1bmNfYmFzZSYpID0gZGVsZXRlOw0KICAgIA0KDQpw
cml2YXRlOg0KICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogX0dldCgpIGNvbnN0IG5vZXhjZXB0ID0g
MDsNCn07DQoNCg0KY29uc3RleHByIHNpemVfdCBfU3BhY2Vfc2l6ZSA9IChfU21hbGxfb2JqZWN0
X251bV9wdHJzIC0gMSkgKiBzaXplb2Yodm9pZCopOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0ltcGw+
IA0KaW5saW5lIGNvbnN0ZXhwciBib29sIF9Jc19sYXJnZSA9IHNpemVvZihfSW1wbCkgPiBfU3Bh
Y2Vfc2l6ZSB8fCBhbGlnbm9mKF9JbXBsKSA+IGFsaWdub2YobWF4X2FsaWduX3QpDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhX0ltcGw6Ol9Ob3Rocm93X21vdmU6
OnZhbHVlOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MTMgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVuY3Rpb25hbCINCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX0NhbGxhYmxlLCBjbGFzcyBfUngsIGNsYXNzLi4uIF9UeXBlcz4NCmNs
YXNzIF9GdW5jX2ltcGxfbm9fYWxsb2MgZmluYWwgOiBwdWJsaWMgX0Z1bmNfYmFzZTxfUngsIF9U
eXBlcy4uLj4gew0KICAgIA0KcHVibGljOg0KICAgIHVzaW5nIF9NeWJhc2UgICAgICAgPSBfRnVu
Y19iYXNlPF9SeCwgX1R5cGVzLi4uPjsNCiAgICB1c2luZyBfTm90aHJvd19tb3ZlID0gaXNfbm90
aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8X0NhbGxhYmxlPjsNCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfT3RoZXIsIGVuYWJsZV9pZl90PCFpc19zYW1lX3Y8X0Z1bmNfaW1wbF9ub19hbGxvYywgZGVj
YXlfdDxfT3RoZXI+PiwgaW50PiA9IDA+DQogICAgZXhwbGljaXQgX0Z1bmNfaW1wbF9ub19hbGxv
YyhfT3RoZXImJiBfVmFsKSA6IF9DYWxsZWUoOjpzdGQ6OiBmb3J3YXJkPF9PdGhlcj4oX1ZhbCkp
IHt9DQoNCiAgICANCg0KcHJpdmF0ZToNCiAgICB2aXJ0dWFsIF9NeWJhc2UqIF9Db3B5KHZvaWQq
IF9XaGVyZSkgY29uc3Qgb3ZlcnJpZGUgew0KICAgICAgICBpZiBjb25zdGV4cHIgKF9Jc19sYXJn
ZTxfRnVuY19pbXBsX25vX2FsbG9jPikgew0KICAgICAgICAgICAgKHZvaWQpIF9XaGVyZTsgDQog
ICAgICAgICAgICByZXR1cm4gX0dsb2JhbF9uZXc8X0Z1bmNfaW1wbF9ub19hbGxvYz4oX0NhbGxl
ZSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gOjpuZXcgKF9XaGVyZSkg
X0Z1bmNfaW1wbF9ub19hbGxvYyhfQ2FsbGVlKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZp
cnR1YWwgX015YmFzZSogX01vdmUodm9pZCogX1doZXJlKSBub2V4Y2VwdCBvdmVycmlkZSB7DQog
ICAgICAgIGlmIGNvbnN0ZXhwciAoX0lzX2xhcmdlPF9GdW5jX2ltcGxfbm9fYWxsb2M+KSB7DQog
ICAgICAgICAgICAodm9pZCkgX1doZXJlOyANCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIDo6bmV3IChfV2hlcmUpIF9GdW5j
X2ltcGxfbm9fYWxsb2MoOjpzdGQ6OiBtb3ZlKF9DYWxsZWUpKTsNCiAgICAgICAgfQ0KICAgIH0N
Cg0KICAgIHZpcnR1YWwgX1J4IF9Eb19jYWxsKF9UeXBlcyYmLi4uIF9BcmdzKSBvdmVycmlkZSB7
IA0KICAgICAgICByZXR1cm4gX0ludm9rZXJfcmV0PF9SeD46Ol9DYWxsKF9DYWxsZWUsIDo6c3Rk
OjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgfQ0KDQogICAgdmlydHVhbCBjb25z
dCB0eXBlX2luZm8mIF9UYXJnZXRfdHlwZSgpIGNvbnN0IG5vZXhjZXB0IG92ZXJyaWRlIHsNCg0K
ICAgICAgICByZXR1cm4gdHlwZWlkKF9DYWxsYWJsZSk7DQoNCg0KI2xpbmUgOTU2ICJDOlxcUHJv
Z3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJp
c2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGZ1bmN0aW9uYWwiDQog
ICAgfQ0KDQogICAgdmlydHVhbCBjb25zdCB2b2lkKiBfR2V0KCkgY29uc3Qgbm9leGNlcHQgb3Zl
cnJpZGUgew0KICAgICAgICByZXR1cm4gOjpzdGQ6OiBhZGRyZXNzb2YoX0NhbGxlZSk7DQogICAg
fQ0KDQogICAgdmlydHVhbCB2b2lkIF9EZWxldGVfdGhpcyhib29sIF9EZWFsbG9jKSBub2V4Y2Vw
dCBvdmVycmlkZSB7IA0KICAgICAgICB0aGlzLT5+X0Z1bmNfaW1wbF9ub19hbGxvYygpOw0KICAg
ICAgICBpZiAoX0RlYWxsb2MpIHsNCiAgICAgICAgICAgIF9EZWFsbG9jYXRlPGFsaWdub2YoX0Z1
bmNfaW1wbF9ub19hbGxvYyk+KHRoaXMsIHNpemVvZihfRnVuY19pbXBsX25vX2FsbG9jKSk7DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICBfQ2FsbGFibGUgX0NhbGxlZTsNCn07DQoNCg0KDQoNCg0K
I2xpbmUgOTc3ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGZ1bmN0aW9uYWwiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBl
cz4NCmNsYXNzIF9GdW5jX2NsYXNzIDogcHVibGljIF9BcmdfdHlwZXM8X1R5cGVzLi4uPiB7DQpw
dWJsaWM6DQogICAgdXNpbmcgcmVzdWx0X3R5cGUgPSBfUmV0Ow0KDQogICAgdXNpbmcgX1B0cnQg
PSBfRnVuY19iYXNlPF9SZXQsIF9UeXBlcy4uLj47DQoNCiAgICBfRnVuY19jbGFzcygpIG5vZXhj
ZXB0IHsNCiAgICAgICAgX1NldChudWxscHRyKTsNCiAgICB9DQoNCiAgICBfUmV0IG9wZXJhdG9y
KCkoX1R5cGVzLi4uIF9BcmdzKSBjb25zdCB7DQogICAgICAgIGlmIChfRW1wdHkoKSkgew0KICAg
ICAgICAgICAgX1hiYWRfZnVuY3Rpb25fY2FsbCgpOw0KICAgICAgICB9DQogICAgICAgIGNvbnN0
IGF1dG8gX0ltcGwgPSBfR2V0aW1wbCgpOw0KICAgICAgICByZXR1cm4gX0ltcGwtPl9Eb19jYWxs
KDo6c3RkOjogZm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQogICAgfQ0KDQogICAgfl9GdW5j
X2NsYXNzKCkgbm9leGNlcHQgew0KICAgICAgICBfVGlkeSgpOw0KICAgIH0NCg0KcHJvdGVjdGVk
Og0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRngsIGNsYXNzIF9GdW5jdGlvbj4NCiAgICB1c2luZyBf
RW5hYmxlX2lmX2NhbGxhYmxlX3QgPQ0KICAgICAgICBlbmFibGVfaWZfdDxjb25qdW5jdGlvbl92
PG5lZ2F0aW9uPGlzX3NhbWU8ZGVjYXlfdDxfRng+LCBfRnVuY3Rpb24+PiwgX0lzX2ludm9jYWJs
ZV9yPF9SZXQsIF9GeCwgX1R5cGVzLi4uPj4sDQogICAgICAgICAgICBpbnQ+Ow0KDQogICAgYm9v
bCBfRW1wdHkoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAhX0dldGltcGwoKTsN
CiAgICB9DQoNCiAgICB2b2lkIF9SZXNldF9jb3B5KGNvbnN0IF9GdW5jX2NsYXNzJiBfUmlnaHQp
IHsgDQogICAgICAgIGlmICghX1JpZ2h0Ll9FbXB0eSgpKSB7DQogICAgICAgICAgICBfU2V0KF9S
aWdodC5fR2V0aW1wbCgpLT5fQ29weSgmX015c3RvcmFnZSkpOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgdm9pZCBfUmVzZXRfbW92ZShfRnVuY19jbGFzcyYmIF9SaWdodCkgbm9leGNlcHQgeyAN
CiAgICAgICAgaWYgKCFfUmlnaHQuX0VtcHR5KCkpIHsNCiAgICAgICAgICAgIGlmIChfUmlnaHQu
X0xvY2FsKCkpIHsgDQogICAgICAgICAgICAgICAgX1NldChfUmlnaHQuX0dldGltcGwoKS0+X01v
dmUoJl9NeXN0b3JhZ2UpKTsNCiAgICAgICAgICAgICAgICBfUmlnaHQuX1RpZHkoKTsNCiAgICAg
ICAgICAgIH0gZWxzZSB7IA0KICAgICAgICAgICAgICAgIF9TZXQoX1JpZ2h0Ll9HZXRpbXBsKCkp
Ow0KICAgICAgICAgICAgICAgIF9SaWdodC5fU2V0KG51bGxwdHIpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9GeD4NCiAgICB2b2lkIF9S
ZXNldChfRngmJiBfVmFsKSB7IA0KICAgICAgICBpZiAoIV9UZXN0X2NhbGxhYmxlKF9WYWwpKSB7
IA0KICAgICAgICAgICAgcmV0dXJuOyANCiAgICAgICAgfQ0KDQogICAgICAgIHVzaW5nIF9JbXBs
ID0gX0Z1bmNfaW1wbF9ub19hbGxvYzxkZWNheV90PF9GeD4sIF9SZXQsIF9UeXBlcy4uLj47DQog
ICAgICAgIGlmIGNvbnN0ZXhwciAoX0lzX2xhcmdlPF9JbXBsPikgew0KICAgICAgICAgICAgDQog
ICAgICAgICAgICBfU2V0KF9HbG9iYWxfbmV3PF9JbXBsPig6OnN0ZDo6IGZvcndhcmQ8X0Z4Pihf
VmFsKSkpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgDQogICAgICAgICAgICBfU2V0
KDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oJl9NeXN0b3JhZ2UpKSBfSW1wbCg6OnN0ZDo6IGZv
cndhcmQ8X0Z4PihfVmFsKSkpOw0KICAgICAgICB9DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA3MCAiQzpcXFByb2dyYW0gRmls
ZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xc
VG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxmdW5jdGlvbmFsIg0KDQogICAgdm9p
ZCBfVGlkeSgpIG5vZXhjZXB0IHsNCiAgICAgICAgaWYgKCFfRW1wdHkoKSkgeyANCiAgICAgICAg
ICAgIF9HZXRpbXBsKCktPl9EZWxldGVfdGhpcyghX0xvY2FsKCkpOw0KICAgICAgICAgICAgX1Nl
dChudWxscHRyKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgX1N3YXAoX0Z1bmNfY2xh
c3MmIF9SaWdodCkgbm9leGNlcHQgeyANCiAgICAgICAgaWYgKCFfTG9jYWwoKSAmJiAhX1JpZ2h0
Ll9Mb2NhbCgpKSB7IA0KICAgICAgICAgICAgX1B0cnQqIF9UZW1wID0gX0dldGltcGwoKTsNCiAg
ICAgICAgICAgIF9TZXQoX1JpZ2h0Ll9HZXRpbXBsKCkpOw0KICAgICAgICAgICAgX1JpZ2h0Ll9T
ZXQoX1RlbXApOw0KICAgICAgICB9IGVsc2UgeyANCiAgICAgICAgICAgIF9GdW5jX2NsYXNzIF9U
ZW1wOw0KICAgICAgICAgICAgX1RlbXAuX1Jlc2V0X21vdmUoOjpzdGQ6OiBtb3ZlKCp0aGlzKSk7
DQogICAgICAgICAgICBfUmVzZXRfbW92ZSg6OnN0ZDo6IG1vdmUoX1JpZ2h0KSk7DQogICAgICAg
ICAgICBfUmlnaHQuX1Jlc2V0X21vdmUoOjpzdGQ6OiBtb3ZlKF9UZW1wKSk7DQogICAgICAgIH0N
CiAgICB9DQoNCg0KICAgIGNvbnN0IHR5cGVfaW5mbyYgX1RhcmdldF90eXBlKCkgY29uc3Qgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gX0dldGltcGwoKSA/IF9HZXRpbXBsKCktPl9UYXJnZXRf
dHlwZSgpIDogdHlwZWlkKHZvaWQpOw0KICAgIH0NCg0KICAgIGNvbnN0IHZvaWQqIF9UYXJnZXQo
Y29uc3QgdHlwZV9pbmZvJiBfSW5mbykgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4g
X0dldGltcGwoKSA/IF9HZXRpbXBsKCktPl9UYXJnZXQoX0luZm8pIDogbnVsbHB0cjsNCiAgICB9
DQojbGluZSAxMTAwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBT
dHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGlu
Y2x1ZGVcXGZ1bmN0aW9uYWwiDQoNCnByaXZhdGU6DQogICAgYm9vbCBfTG9jYWwoKSBjb25zdCBu
b2V4Y2VwdCB7IA0KICAgICAgICByZXR1cm4gX0dldGltcGwoKSA9PSBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4oJl9NeXN0b3JhZ2UpOw0KICAgIH0NCg0KICAgIHVuaW9uIF9TdG9yYWdlIHsgDQog
ICAgICAgIG1heF9hbGlnbl90IF9EdW1teTE7IA0KICAgICAgICBjaGFyIF9EdW1teTJbX1NwYWNl
X3NpemVdOyANCiAgICAgICAgX1B0cnQqIF9QdHJzW19TbWFsbF9vYmplY3RfbnVtX3B0cnNdOyAN
CiAgICB9Ow0KDQogICAgX1N0b3JhZ2UgX015c3RvcmFnZTsNCiAgICBlbnVtIHsgX0VFTl9JTVBM
ID0gX1NtYWxsX29iamVjdF9udW1fcHRycyAtIDEgfTsgDQogICAgX1B0cnQqIF9HZXRpbXBsKCkg
Y29uc3Qgbm9leGNlcHQgeyANCiAgICAgICAgcmV0dXJuIF9NeXN0b3JhZ2UuX1B0cnNbX1NtYWxs
X29iamVjdF9udW1fcHRycyAtIDFdOw0KICAgIH0NCg0KICAgIHZvaWQgX1NldChfUHRydCogX1B0
cikgbm9leGNlcHQgeyANCiAgICAgICAgX015c3RvcmFnZS5fUHRyc1tfU21hbGxfb2JqZWN0X251
bV9wdHJzIC0gMV0gPSBfUHRyOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeD4N
CnN0cnVjdCBfR2V0X2Z1bmN0aW9uX2ltcGwgew0KICAgIHN0YXRpY19hc3NlcnQoX0Fsd2F5c19m
YWxzZTxfVHg+LCAic3RkOjpmdW5jdGlvbiBkb2VzIG5vdCBhY2NlcHQgbm9uLWZ1bmN0aW9uIHR5
cGVzIGFzIHRlbXBsYXRlIGFyZ3VtZW50cy4iKTsNCn07DQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBfR2V0X2Z1bmN0aW9uX2ltcGw8
X1JldCBfX2NkZWNsKF9UeXBlcy4uLik+IHsgdXNpbmcgdHlwZSA9IF9GdW5jX2NsYXNzPF9SZXQs
IF9UeXBlcy4uLj47IH07ICAgIHRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+
IHN0cnVjdCBfR2V0X2Z1bmN0aW9uX2ltcGw8X1JldCBfX3ZlY3RvcmNhbGwoX1R5cGVzLi4uKT4g
eyB1c2luZyB0eXBlID0gX0Z1bmNfY2xhc3M8X1JldCwgX1R5cGVzLi4uPjsgfTsNCg0KDQoNCg0K
DQoNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcy4uLiBfVHlwZXM+IHN0cnVjdCBf
R2V0X2Z1bmN0aW9uX2ltcGw8X1JldCBfX2NkZWNsKF9UeXBlcy4uLikgbm9leGNlcHQ+IHsgc3Rh
dGljX2Fzc2VydCggX0Fsd2F5c19mYWxzZTxfUmV0PiwgInN0ZDo6ZnVuY3Rpb24gZG9lcyBub3Qg
YWNjZXB0IG5vZXhjZXB0IGZ1bmN0aW9uIHR5cGVzIGFzIHRlbXBsYXRlIGFyZ3VtZW50cy4iKTsg
fTsgICAgdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzLi4uIF9UeXBlcz4gc3RydWN0IF9HZXRf
ZnVuY3Rpb25faW1wbDxfUmV0IF9fdmVjdG9yY2FsbChfVHlwZXMuLi4pIG5vZXhjZXB0PiB7IHN0
YXRpY19hc3NlcnQoIF9BbHdheXNfZmFsc2U8X1JldD4sICJzdGQ6OmZ1bmN0aW9uIGRvZXMgbm90
IGFjY2VwdCBub2V4Y2VwdCBmdW5jdGlvbiB0eXBlcyBhcyB0ZW1wbGF0ZSBhcmd1bWVudHMuIik7
IH07DQoNCiNsaW5lIDExNDggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlz
dWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgw
MVxcaW5jbHVkZVxcZnVuY3Rpb25hbCINCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z0eT4NCmNsYXNz
IGZ1bmN0aW9uIDogcHVibGljIF9HZXRfZnVuY3Rpb25faW1wbDxfRnR5Pjo6dHlwZSB7IA0KcHJp
dmF0ZToNCiAgICB1c2luZyBfTXliYXNlID0gdHlwZW5hbWUgX0dldF9mdW5jdGlvbl9pbXBsPF9G
dHk+Ojp0eXBlOw0KDQpwdWJsaWM6DQogICAgZnVuY3Rpb24oKSBub2V4Y2VwdCB7fQ0KDQogICAg
ZnVuY3Rpb24obnVsbHB0cl90KSBub2V4Y2VwdCB7fQ0KDQogICAgZnVuY3Rpb24oY29uc3QgZnVu
Y3Rpb24mIF9SaWdodCkgew0KICAgICAgICB0aGlzLT5fUmVzZXRfY29weShfUmlnaHQpOw0KICAg
IH0NCg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9GeCwgdHlwZW5hbWUgX015YmFzZTo6dGVtcGxh
dGUgX0VuYWJsZV9pZl9jYWxsYWJsZV90PF9GeCYsIGZ1bmN0aW9uPiA9IDA+DQoNCg0KI2xpbmUg
MTE2OSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwy
MDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxm
dW5jdGlvbmFsIg0KICAgIGZ1bmN0aW9uKF9GeCBfRnVuYykgew0KICAgICAgICB0aGlzLT5fUmVz
ZXQoOjpzdGQ6OiBtb3ZlKF9GdW5jKSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE5NCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNc
XDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxmdW5jdGlvbmFsIg0KDQogICAgZnVuY3Rpb24mIG9wZXJh
dG9yPShjb25zdCBmdW5jdGlvbiYgX1JpZ2h0KSB7DQogICAgICAgIGZ1bmN0aW9uKF9SaWdodCku
c3dhcCgqdGhpcyk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBmdW5jdGlv
bihmdW5jdGlvbiYmIF9SaWdodCkgbm9leGNlcHQgew0KICAgICAgICB0aGlzLT5fUmVzZXRfbW92
ZSg6OnN0ZDo6IG1vdmUoX1JpZ2h0KSk7DQogICAgfQ0KDQoNCg0KDQoNCg0KI2xpbmUgMTIxMCAi
QzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxF
bnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxmdW5jdGlv
bmFsIg0KDQogICAgZnVuY3Rpb24mIG9wZXJhdG9yPShmdW5jdGlvbiYmIF9SaWdodCkgbm9leGNl
cHQgIHsNCiAgICAgICAgaWYgKHRoaXMgIT0gOjpzdGQ6OiBhZGRyZXNzb2YoX1JpZ2h0KSkgew0K
ICAgICAgICAgICAgdGhpcy0+X1RpZHkoKTsNCiAgICAgICAgICAgIHRoaXMtPl9SZXNldF9tb3Zl
KDo6c3RkOjogbW92ZShfUmlnaHQpKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gKnRoaXM7
DQogICAgfQ0KDQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Z4LCB0eXBlbmFtZSBfTXliYXNlOjp0
ZW1wbGF0ZSBfRW5hYmxlX2lmX2NhbGxhYmxlX3Q8ZGVjYXlfdDxfRng+JiwgZnVuY3Rpb24+ID0g
MD4NCg0KDQojbGluZSAxMjI0ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4
MDFcXGluY2x1ZGVcXGZ1bmN0aW9uYWwiDQogICAgZnVuY3Rpb24mIG9wZXJhdG9yPShfRngmJiBf
RnVuYykgew0KICAgICAgICBmdW5jdGlvbig6OnN0ZDo6IGZvcndhcmQ8X0Z4PihfRnVuYykpLnN3
YXAoKnRoaXMpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQoNCg0KDQoNCg0KI2xp
bmUgMTIzNSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
XFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRl
XFxmdW5jdGlvbmFsIg0KDQogICAgZnVuY3Rpb24mIG9wZXJhdG9yPShudWxscHRyX3QpIG5vZXhj
ZXB0IHsNCiAgICAgICAgdGhpcy0+X1RpZHkoKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfRng+DQogICAgZnVuY3Rpb24mIG9wZXJhdG9yPShy
ZWZlcmVuY2Vfd3JhcHBlcjxfRng+IF9GdW5jKSBub2V4Y2VwdCB7DQogICAgICAgIHRoaXMtPl9U
aWR5KCk7DQogICAgICAgIHRoaXMtPl9SZXNldChfRnVuYyk7DQogICAgICAgIHJldHVybiAqdGhp
czsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAoZnVuY3Rpb24mIF9SaWdodCkgbm9leGNlcHQgew0K
ICAgICAgICB0aGlzLT5fU3dhcChfUmlnaHQpOw0KICAgIH0NCg0KICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAhdGhpcy0+X0VtcHR5
KCk7DQogICAgfQ0KDQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0IHR5cGVfaW5mbyYgdGFyZ2V0
X3R5cGUoKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiB0aGlzLT5fVGFyZ2V0X3R5
cGUoKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0Z4Pg0KICAgIFtbbm9kaXNjYXJk
XV0gX0Z4KiB0YXJnZXQoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PF9GeCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KHRoaXMtPl9UYXJnZXQodHlwZWlkKF9GeCkpKSk7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9GeD4NCiAgICBbW25vZGlzY2FyZF1dIGNv
bnN0IF9GeCogdGFyZ2V0KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBfRngqPih0aGlzLT5fVGFyZ2V0KHR5cGVpZChfRngpKSk7DQogICAg
fQ0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVuY3Rpb25hbCINCn07DQoNCg0KDQoNCg0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBmdW5jdGlvbihfUmV0KF9fY2RlY2wq
KShfVHlwZXMuLi4pKSAtPiBmdW5jdGlvbjxfUmV0KF9UeXBlcy4uLik+OyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgX1JldCwgY2xhc3MuLi4gX1R5cGVzPiBmdW5jdGlvbihfUmV0KF9fdmVjdG9yY2FsbCop
KF9UeXBlcy4uLikpIC0+IGZ1bmN0aW9uPF9SZXQoX1R5cGVzLi4uKT47DQoNCg0KDQp0ZW1wbGF0
ZSA8Y2xhc3MgX0Z4LCBjbGFzcyA9IHZvaWQ+DQpzdHJ1Y3QgX0RlZHVjZV9zaWduYXR1cmUge307
IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z4Pg0Kc3RydWN0IF9EZWR1Y2Vfc2lnbmF0dXJlPF9GeCwg
dm9pZF90PGRlY2x0eXBlKCZfRng6Om9wZXJhdG9yKCkpPj4NCiAgICA6IF9Jc19tZW1mdW5wdHI8
ZGVjbHR5cGUoJl9GeDo6b3BlcmF0b3IoKSk+OjpfR3VpZGVfdHlwZSB7fTsgDQoNCnRlbXBsYXRl
IDxjbGFzcyBfRng+DQpmdW5jdGlvbihfRngpIC0+IGZ1bmN0aW9uPHR5cGVuYW1lIF9EZWR1Y2Vf
c2lnbmF0dXJlPF9GeD46OnR5cGU+Ow0KI2xpbmUgMTMwMCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxmdW5jdGlvbmFsIg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0Z0eT4NCnZvaWQgc3dhcChmdW5jdGlvbjxfRnR5PiYgX0xlZnQsIGZ1bmN0aW9uPF9GdHk+
JiBfUmlnaHQpIG5vZXhjZXB0IHsNCiAgICBfTGVmdC5zd2FwKF9SaWdodCk7DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfRnR5Pg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yPT0oY29uc3QgZnVu
Y3Rpb248X0Z0eT4mIF9PdGhlciwgbnVsbHB0cl90KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuICFf
T3RoZXI7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRnR5Pg0KW1tub2Rpc2NhcmRdXSBib29sIG9w
ZXJhdG9yPT0obnVsbHB0cl90LCBjb25zdCBmdW5jdGlvbjxfRnR5PiYgX090aGVyKSBub2V4Y2Vw
dCB7DQogICAgcmV0dXJuICFfT3RoZXI7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRnR5Pg0KW1tu
b2Rpc2NhcmRdXSBib29sIG9wZXJhdG9yIT0oY29uc3QgZnVuY3Rpb248X0Z0eT4mIF9PdGhlciwg
bnVsbHB0cl90KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9PdGhl
cik7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfRnR5Pg0KW1tub2Rpc2NhcmRdXSBib29sIG9wZXJh
dG9yIT0obnVsbHB0cl90LCBjb25zdCBmdW5jdGlvbjxfRnR5PiYgX090aGVyKSBub2V4Y2VwdCB7
DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9PdGhlcik7DQp9DQoNCg0KdGVtcGxhdGUg
PGludCBfTng+DQpzdHJ1Y3QgX1BoIHsgDQogICAgc3RhdGljX2Fzc2VydChfTnggPiAwLCAiaW52
YWxpZCBwbGFjZWhvbGRlciBpbmRleCIpOw0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeD4NCnN0
cnVjdCBpc19wbGFjZWhvbGRlciA6IGludGVncmFsX2NvbnN0YW50PGludCwgMD4ge307IA0KDQp0
ZW1wbGF0ZSA8aW50IF9OeD4NCnN0cnVjdCBpc19wbGFjZWhvbGRlcjxfUGg8X054Pj4gOiBpbnRl
Z3JhbF9jb25zdGFudDxpbnQsIF9OeD4ge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R4Pg0Kc3Ry
dWN0IGlzX3BsYWNlaG9sZGVyPGNvbnN0IF9UeD4gOiBpc19wbGFjZWhvbGRlcjxfVHg+Ojp0eXBl
IHt9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9UeD4NCnN0cnVjdCBpc19wbGFjZWhvbGRlcjx2b2xh
dGlsZSBfVHg+IDogaXNfcGxhY2Vob2xkZXI8X1R4Pjo6dHlwZSB7fTsgDQoNCnRlbXBsYXRlIDxj
bGFzcyBfVHg+DQpzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8Y29uc3Qgdm9sYXRpbGUgX1R4PiA6IGlz
X3BsYWNlaG9sZGVyPF9UeD46OnR5cGUge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5s
aW5lIGNvbnN0ZXhwciBpbnQgaXNfcGxhY2Vob2xkZXJfdiA9IGlzX3BsYWNlaG9sZGVyPF9UeT46
OnZhbHVlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfRngsIGNsYXNzLi4uIF9U
eXBlcz4NCmNsYXNzIF9CaW5kZXI7DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeD4NCnN0cnVjdCBp
c19iaW5kX2V4cHJlc3Npb24gOiBmYWxzZV90eXBlIHt9OyANCg0KdGVtcGxhdGUgPGNsYXNzIF9S
ZXQsIGNsYXNzIF9GeCwgY2xhc3MuLi4gX1R5cGVzPg0Kc3RydWN0IGlzX2JpbmRfZXhwcmVzc2lv
bjxfQmluZGVyPF9SZXQsIF9GeCwgX1R5cGVzLi4uPj4gOiB0cnVlX3R5cGUge307IA0KDQp0ZW1w
bGF0ZSA8Y2xhc3MgX1R4Pg0Kc3RydWN0IGlzX2JpbmRfZXhwcmVzc2lvbjxjb25zdCBfVHg+IDog
aXNfYmluZF9leHByZXNzaW9uPF9UeD46OnR5cGUge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R4
Pg0Kc3RydWN0IGlzX2JpbmRfZXhwcmVzc2lvbjx2b2xhdGlsZSBfVHg+IDogaXNfYmluZF9leHBy
ZXNzaW9uPF9UeD46OnR5cGUge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R4Pg0Kc3RydWN0IGlz
X2JpbmRfZXhwcmVzc2lvbjxjb25zdCB2b2xhdGlsZSBfVHg+IDogaXNfYmluZF9leHByZXNzaW9u
PF9UeD46OnR5cGUge307IA0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KaW5saW5lIGNvbnN0ZXhw
ciBib29sIGlzX2JpbmRfZXhwcmVzc2lvbl92ID0gaXNfYmluZF9leHByZXNzaW9uPF9UeT46OnZh
bHVlOw0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfQ3ZfVGlELCBib29sID0gX0lzX3NwZWNpYWxpemF0
aW9uX3Y8cmVtb3ZlX2N2X3Q8X0N2X1RpRD4sIHJlZmVyZW5jZV93cmFwcGVyPiwNCiAgICBib29s
ID0gaXNfYmluZF9leHByZXNzaW9uX3Y8X0N2X1RpRD4sIGludCA9IGlzX3BsYWNlaG9sZGVyX3Y8
X0N2X1RpRD4+DQpzdHJ1Y3QgX1NlbGVjdF9maXhlcjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9Ddl9U
aUQ+DQpzdHJ1Y3QgX1NlbGVjdF9maXhlcjxfQ3ZfVGlELCB0cnVlLCBmYWxzZSwgMD4geyANCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1VudHVwbGU+DQogICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIF9G
aXgoX0N2X1RpRCYgX1RpZCwgX1VudHVwbGUmJikgbm9leGNlcHQgLT4gdHlwZW5hbWUgX0N2X1Rp
RDo6dHlwZSYgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIF9UaWQuZ2V0KCk7DQogICAgfQ0K
fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9Ddl9UaUQ+DQpzdHJ1Y3QgX1NlbGVjdF9maXhlcjxfQ3Zf
VGlELCBmYWxzZSwgdHJ1ZSwgMD4geyANCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1VudHVwbGUsIHNp
emVfdC4uLiBfSng+DQogICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIF9BcHBseShfQ3ZfVGlEJiBf
VGlkLCBfVW50dXBsZSYmIF9VdCwgaW5kZXhfc2VxdWVuY2U8X0p4Li4uPikgbm9leGNlcHQoDQog
ICAgICAgIG5vZXhjZXB0KF9UaWQoOjpzdGQ6OiBnZXQ8X0p4Pig6OnN0ZDo6IG1vdmUoX1V0KSku
Li4pKSkgLT4gZGVjbHR5cGUoX1RpZCg6OnN0ZDo6IGdldDxfSng+KDo6c3RkOjogbW92ZShfVXQp
KS4uLikpIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBfVGlkKDo6c3RkOjogZ2V0PF9KeD4o
OjpzdGQ6OiBtb3ZlKF9VdCkpLi4uKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1Vu
dHVwbGU+DQogICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIF9GaXgoX0N2X1RpRCYgX1RpZCwgX1Vu
dHVwbGUmJiBfVXQpIG5vZXhjZXB0KA0KICAgICAgICBub2V4Y2VwdChfQXBwbHkoX1RpZCwgOjpz
dGQ6OiBtb3ZlKF9VdCksIG1ha2VfaW5kZXhfc2VxdWVuY2U8dHVwbGVfc2l6ZV92PF9VbnR1cGxl
Pj57fSkpKQ0KICAgICAgICAtPiBkZWNsdHlwZShfQXBwbHkoX1RpZCwgOjpzdGQ6OiBtb3ZlKF9V
dCksIG1ha2VfaW5kZXhfc2VxdWVuY2U8dHVwbGVfc2l6ZV92PF9VbnR1cGxlPj57fSkpIHsNCiAg
ICAgICAgDQogICAgICAgIHJldHVybiBfQXBwbHkoX1RpZCwgOjpzdGQ6OiBtb3ZlKF9VdCksIG1h
a2VfaW5kZXhfc2VxdWVuY2U8dHVwbGVfc2l6ZV92PF9VbnR1cGxlPj57fSk7DQogICAgfQ0KfTsN
Cg0KdGVtcGxhdGUgPGNsYXNzIF9Ddl9UaUQ+DQpzdHJ1Y3QgX1NlbGVjdF9maXhlcjxfQ3ZfVGlE
LCBmYWxzZSwgZmFsc2UsIDA+IHsgDQogICAgdGVtcGxhdGUgPGNsYXNzIF9VbnR1cGxlPg0KICAg
IHN0YXRpYyBjb25zdGV4cHIgX0N2X1RpRCYgX0ZpeChfQ3ZfVGlEJiBfVGlkLCBfVW50dXBsZSYm
KSBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1RpZDsNCiAgICB9DQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0N2X1RpRCwgaW50IF9KeD4NCnN0cnVjdCBfU2VsZWN0X2ZpeGVy
PF9Ddl9UaUQsIGZhbHNlLCBmYWxzZSwgX0p4PiB7IA0KICAgIHN0YXRpY19hc3NlcnQoX0p4ID4g
MCwgImludmFsaWQgaXNfcGxhY2Vob2xkZXIgdmFsdWUiKTsNCg0KICAgIHRlbXBsYXRlIDxjbGFz
cyBfVW50dXBsZT4NCiAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gX0ZpeChfQ3ZfVGlEJiwgX1Vu
dHVwbGUmJiBfVXQpIG5vZXhjZXB0DQogICAgICAgIC0+IGRlY2x0eXBlKDo6c3RkOjogZ2V0PF9K
eCAtIDE+KDo6c3RkOjogbW92ZShfVXQpKSkgeyANCiAgICAgICAgcmV0dXJuIDo6c3RkOjogZ2V0
PF9KeCAtIDE+KDo6c3RkOjogbW92ZShfVXQpKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX0N2X1RpRCwgY2xhc3MgX1VudHVwbGU+DQpjb25zdGV4cHIgYXV0byBfRml4X2FyZyhfQ3Zf
VGlEJiBfVGlkLCBfVW50dXBsZSYmIF9VdCkgbm9leGNlcHQoDQogICAgbm9leGNlcHQoX1NlbGVj
dF9maXhlcjxfQ3ZfVGlEPjo6X0ZpeChfVGlkLCA6OnN0ZDo6IG1vdmUoX1V0KSkpKQ0KICAgIC0+
IGRlY2x0eXBlKF9TZWxlY3RfZml4ZXI8X0N2X1RpRD46Ol9GaXgoX1RpZCwgOjpzdGQ6OiBtb3Zl
KF9VdCkpKSB7IA0KICAgIHJldHVybiBfU2VsZWN0X2ZpeGVyPF9Ddl9UaUQ+OjpfRml4KF9UaWQs
IDo6c3RkOjogbW92ZShfVXQpKTsNCn0NCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgc2l6ZV90
Li4uIF9JeCwgY2xhc3MgX0N2X0ZELCBjbGFzcyBfQ3ZfdHVwbGVfVGlELCBjbGFzcyBfVW50dXBs
ZT4NCmlubGluZSBhdXRvIF9DYWxsX2JpbmRlcihfSW52b2tlcl9yZXQ8X1JldD4sIGluZGV4X3Nl
cXVlbmNlPF9JeC4uLj4sIF9Ddl9GRCYgX09iaiwgX0N2X3R1cGxlX1RpRCYgX1RwbCwNCiAgICBf
VW50dXBsZSYmIF9VdCkgbm9leGNlcHQobm9leGNlcHQoX0ludm9rZXJfcmV0PF9SZXQ+OjpfQ2Fs
bChfT2JqLA0KICAgIF9GaXhfYXJnKDo6c3RkOjogZ2V0PF9JeD4oX1RwbCksIDo6c3RkOjogbW92
ZShfVXQpKS4uLikpKQ0KICAgIC0+IGRlY2x0eXBlKF9JbnZva2VyX3JldDxfUmV0Pjo6X0NhbGwo
X09iaiwgX0ZpeF9hcmcoOjpzdGQ6OiBnZXQ8X0l4PihfVHBsKSwgOjpzdGQ6OiBtb3ZlKF9VdCkp
Li4uKSkgew0KICAgIA0KICAgIHJldHVybiBfSW52b2tlcl9yZXQ8X1JldD46Ol9DYWxsKF9PYmos
IF9GaXhfYXJnKDo6c3RkOjogZ2V0PF9JeD4oX1RwbCksIDo6c3RkOjogbW92ZShfVXQpKS4uLik7
DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQ+DQpzdHJ1Y3QgX0ZvcmNlZF9yZXN1bHRfdHlw
ZSB7IA0KICAgIFtbZGVwcmVjYXRlZCggIndhcm5pbmcgU1RMNDAwNzogTWFueSByZXN1bHRfdHlw
ZSB0eXBlZGVmcyAiICJhbmQgYWxsIGFyZ3VtZW50X3R5cGUsIGZpcnN0X2FyZ3VtZW50X3R5cGUs
IGFuZCBzZWNvbmRfYXJndW1lbnRfdHlwZSB0eXBlZGVmcyBhcmUgZGVwcmVjYXRlZCBpbiBDKysx
Ny4gIiAiWW91IGNhbiBkZWZpbmUgX1NJTEVOQ0VfQ1hYMTdfQURBUFRPUl9UWVBFREVGU19ERVBS
RUNBVElPTl9XQVJOSU5HICIgIm9yIF9TSUxFTkNFX0FMTF9DWFgxN19ERVBSRUNBVElPTl9XQVJO
SU5HUyB0byBhY2tub3dsZWRnZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgd2FybmluZy4i
KV1dIHR5cGVkZWYgX1JldCByZXN1bHRfdHlwZTsNCn07DQoNCnRlbXBsYXRlIDxjbGFzcyBfUmV0
LCBjbGFzcyBfRng+DQpzdHJ1Y3QgX0JpbmRlcl9yZXN1bHRfdHlwZSB7IA0KICAgIHVzaW5nIF9E
ZWNheWVkID0gZGVjYXlfdDxfRng+Ow0KDQogICAgdXNpbmcgX0FsbF93ZWFrX3R5cGVzID0gdHlw
ZW5hbWUgX1dlYWtfdHlwZXM8X0RlY2F5ZWQ+Ojp0eXBlOw0KDQogICAgdXNpbmcgdHlwZSA9DQog
ICAgICAgIGNvbmRpdGlvbmFsX3Q8aXNfc2FtZV92PF9SZXQsIF9VbmZvcmNlZD4sIF9XZWFrX3Jl
c3VsdF90eXBlPF9BbGxfd2Vha190eXBlcz4sIF9Gb3JjZWRfcmVzdWx0X3R5cGU8X1JldD4+Ow0K
fTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9GeCwgY2xhc3MuLi4gX1R5cGVzPg0K
Y2xhc3MgX0JpbmRlciA6IHB1YmxpYyBfQmluZGVyX3Jlc3VsdF90eXBlPF9SZXQsIF9GeD46OnR5
cGUgeyANCnByaXZhdGU6DQogICAgdXNpbmcgX1NlcSAgICA9IGluZGV4X3NlcXVlbmNlX2Zvcjxf
VHlwZXMuLi4+Ow0KICAgIHVzaW5nIF9GaXJzdCAgPSBkZWNheV90PF9GeD47DQogICAgdXNpbmcg
X1NlY29uZCA9IHR1cGxlPGRlY2F5X3Q8X1R5cGVzPi4uLj47DQoNCiAgICBfQ29tcHJlc3NlZF9w
YWlyPF9GaXJzdCwgX1NlY29uZD4gX015cGFpcjsNCg0KcHVibGljOg0KICAgIGNvbnN0ZXhwciBl
eHBsaWNpdCBfQmluZGVyKF9GeCYmIF9GdW5jLCBfVHlwZXMmJi4uLiBfQXJncykNCiAgICAgICAg
OiBfTXlwYWlyKF9PbmVfdGhlbl92YXJpYWRpY19hcmdzX3R7fSwgOjpzdGQ6OiBmb3J3YXJkPF9G
eD4oX0Z1bmMpLCA6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJncykuLi4pIHt9DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIHRlbXBsYXRlIDxjbGFz
cy4uLiBfVW5ib3VuZD4NCiAgICBpbmxpbmUgYXV0byBvcGVyYXRvcigpKF9VbmJvdW5kJiYuLi4g
X1VuYmFyZ3MpIG5vZXhjZXB0KG5vZXhjZXB0KF9DYWxsX2JpbmRlcihfSW52b2tlcl9yZXQ8X1Jl
dD57fSwgX1NlcXt9LCBfTXlwYWlyLl9HZXRfZmlyc3QoKSwgX015cGFpci5fTXl2YWwyLCA6OnN0
ZDo6IGZvcndhcmRfYXNfdHVwbGUoOjpzdGQ6OiBmb3J3YXJkPF9VbmJvdW5kPihfVW5iYXJncyku
Li4pKSkpIC0+IGRlY2x0eXBlKF9DYWxsX2JpbmRlcihfSW52b2tlcl9yZXQ8X1JldD57fSwgX1Nl
cXt9LCBfTXlwYWlyLl9HZXRfZmlyc3QoKSwgX015cGFpci5fTXl2YWwyLCA6OnN0ZDo6IGZvcndh
cmRfYXNfdHVwbGUoOjpzdGQ6OiBmb3J3YXJkPF9VbmJvdW5kPihfVW5iYXJncykuLi4pKSkgew0K
ICAgICAgICByZXR1cm4gX0NhbGxfYmluZGVyKF9JbnZva2VyX3JldDxfUmV0Pnt9LCBfU2Vxe30s
IF9NeXBhaXIuX0dldF9maXJzdCgpLCBfTXlwYWlyLl9NeXZhbDIsIDo6c3RkOjogZm9yd2FyZF9h
c190dXBsZSg6OnN0ZDo6IGZvcndhcmQ8X1VuYm91bmQ+KF9VbmJhcmdzKS4uLikpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfVW5ib3VuZD4NCiAgICBpbmxpbmUgYXV0byBvcGVy
YXRvcigpKF9VbmJvdW5kJiYuLi4gX1VuYmFyZ3MpIGNvbnN0IG5vZXhjZXB0KG5vZXhjZXB0KF9D
YWxsX2JpbmRlcihfSW52b2tlcl9yZXQ8X1JldD57fSwgX1NlcXt9LCBfTXlwYWlyLl9HZXRfZmly
c3QoKSwgX015cGFpci5fTXl2YWwyLCA6OnN0ZDo6IGZvcndhcmRfYXNfdHVwbGUoOjpzdGQ6OiBm
b3J3YXJkPF9VbmJvdW5kPihfVW5iYXJncykuLi4pKSkpDQogICAgICAgIC0+IGRlY2x0eXBlKF9D
YWxsX2JpbmRlcihfSW52b2tlcl9yZXQ8X1JldD57fSwgX1NlcXt9LCBfTXlwYWlyLl9HZXRfZmly
c3QoKSwgX015cGFpci5fTXl2YWwyLCA6OnN0ZDo6IGZvcndhcmRfYXNfdHVwbGUoOjpzdGQ6OiBm
b3J3YXJkPF9VbmJvdW5kPihfVW5iYXJncykuLi4pKSkgew0KICAgICAgICByZXR1cm4gX0NhbGxf
YmluZGVyKF9JbnZva2VyX3JldDxfUmV0Pnt9LCBfU2Vxe30sIF9NeXBhaXIuX0dldF9maXJzdCgp
LCBfTXlwYWlyLl9NeXZhbDIsIDo6c3RkOjogZm9yd2FyZF9hc190dXBsZSg6OnN0ZDo6IGZvcndh
cmQ8X1VuYm91bmQ+KF9VbmJhcmdzKS4uLikpOw0KICAgIH0NCiNsaW5lIDE1MDQgIkM6XFxQcm9n
cmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlz
ZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVuY3Rpb25hbCINCg0K
DQp9Ow0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfRngsIGNsYXNzLi4uIF9UeXBlcz4NCltbbm9kaXNj
YXJkXV0gaW5saW5lIF9CaW5kZXI8X1VuZm9yY2VkLCBfRngsIF9UeXBlcy4uLj4gYmluZChfRngm
JiBfRnVuYywgX1R5cGVzJiYuLi4gX0FyZ3MpIHsNCiAgICByZXR1cm4gX0JpbmRlcjxfVW5mb3Jj
ZWQsIF9GeCwgX1R5cGVzLi4uPig6OnN0ZDo6IGZvcndhcmQ8X0Z4PihfRnVuYyksIDo6c3RkOjog
Zm9yd2FyZDxfVHlwZXM+KF9BcmdzKS4uLik7DQp9DQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9SZXQs
IGNsYXNzIF9GeCwgY2xhc3MuLi4gX1R5cGVzPg0KW1tub2Rpc2NhcmRdXSBpbmxpbmUgX0JpbmRl
cjxfUmV0LCBfRngsIF9UeXBlcy4uLj4gYmluZChfRngmJiBfRnVuYywgX1R5cGVzJiYuLi4gX0Fy
Z3MpIHsNCiAgICByZXR1cm4gX0JpbmRlcjxfUmV0LCBfRngsIF9UeXBlcy4uLj4oOjpzdGQ6OiBm
b3J3YXJkPF9GeD4oX0Z1bmMpLCA6OnN0ZDo6IGZvcndhcmQ8X1R5cGVzPihfQXJncykuLi4pOw0K
fQ0KDQoNCm5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgew0KICAgIGlubGluZSBjb25zdGV4cHIgX1Bo
PDE+IF8xe307DQogICAgaW5saW5lIGNvbnN0ZXhwciBfUGg8Mj4gXzJ7fTsNCiAgICBpbmxpbmUg
Y29uc3RleHByIF9QaDwzPiBfM3t9Ow0KICAgIGlubGluZSBjb25zdGV4cHIgX1BoPDQ+IF80e307
DQogICAgaW5saW5lIGNvbnN0ZXhwciBfUGg8NT4gXzV7fTsNCiAgICBpbmxpbmUgY29uc3RleHBy
IF9QaDw2PiBfNnt9Ow0KICAgIGlubGluZSBjb25zdGV4cHIgX1BoPDc+IF83e307DQogICAgaW5s
aW5lIGNvbnN0ZXhwciBfUGg8OD4gXzh7fTsNCiAgICBpbmxpbmUgY29uc3RleHByIF9QaDw5PiBf
OXt9Ow0KICAgIGlubGluZSBjb25zdGV4cHIgX1BoPDEwPiBfMTB7fTsNCiAgICBpbmxpbmUgY29u
c3RleHByIF9QaDwxMT4gXzExe307DQogICAgaW5saW5lIGNvbnN0ZXhwciBfUGg8MTI+IF8xMnt9
Ow0KICAgIGlubGluZSBjb25zdGV4cHIgX1BoPDEzPiBfMTN7fTsNCiAgICBpbmxpbmUgY29uc3Rl
eHByIF9QaDwxND4gXzE0e307DQogICAgaW5saW5lIGNvbnN0ZXhwciBfUGg8MTU+IF8xNXt9Ow0K
ICAgIGlubGluZSBjb25zdGV4cHIgX1BoPDE2PiBfMTZ7fTsNCiAgICBpbmxpbmUgY29uc3RleHBy
IF9QaDwxNz4gXzE3e307DQogICAgaW5saW5lIGNvbnN0ZXhwciBfUGg8MTg+IF8xOHt9Ow0KICAg
IGlubGluZSBjb25zdGV4cHIgX1BoPDE5PiBfMTl7fTsNCiAgICBpbmxpbmUgY29uc3RleHByIF9Q
aDwyMD4gXzIwe307DQp9IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxNjIwICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGZ1bmN0aW9uYWwiDQoNCg0KDQoNCg0KI2xpbmUgMTYyNiAiQzpcXFByb2dyYW0gRmlsZXMg
KHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9v
bHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxmdW5jdGlvbmFsIg0KDQoNCg0KaW5saW5l
IHZvaWQgX0FkZF9hbGxvY19zaXplKHNpemVfdCYgX1NpemUsIGNvbnN0IHNpemVfdCBfU2l6ZV9h
ZGRlZCwgY29uc3Qgc2l6ZV90IF9BbGlnbm1lbnQpIHsNCiAgICANCiAgICANCiAgICBjb25zdCBz
aXplX3QgX0FsaWduX21hc2tlZCA9IF9TaXplICYgKF9BbGlnbm1lbnQgLSAxdSk7DQogICAgX1Np
emUgKz0gX1NpemVfYWRkZWQ7DQogICAgaWYgKF9BbGlnbl9tYXNrZWQgIT0gMCkgew0KICAgICAg
ICBfU2l6ZSArPSBfQWxpZ25tZW50IC0gX0FsaWduX21hc2tlZDsNCiAgICB9DQp9DQoNCnRlbXBs
YXRlIDxjbGFzcyBfVHk+DQp2b2lkIF9BZGRfYWxsb2Nfc2l6ZShzaXplX3QmIF9TaXplKSB7IA0K
ICAgIF9BZGRfYWxsb2Nfc2l6ZShfU2l6ZSwgc2l6ZW9mKF9UeSksIGFsaWdub2YoX1R5KSk7DQp9
DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQp2b2lkIF9BZGRfYWxsb2Nfc2l6ZShzaXplX3QmIF9T
aXplLCBjb25zdCBzaXplX3QgX0NvdW50KSB7DQogICAgDQogICAgX0FkZF9hbGxvY19zaXplKF9T
aXplLCBfR2V0X3NpemVfb2ZfbjxzaXplb2YoX1R5KT4oX0NvdW50KSwgYWxpZ25vZihfVHkpKTsN
Cn0NCg0KaW5saW5lIHZvaWQqIF9EZWNvZGVfYWxpZ25lZF9ibG9jayh2b2lkKiYgX0Jhc2UsIHNp
emVfdCBfU2l6ZSwgY29uc3Qgc2l6ZV90IF9BbGlnbm1lbnQpIHsNCiAgICANCiAgICANCiAgICBh
dXRvIF9TcGFjZSAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsNCiAgICBhdXRvIF9SZXN1bHQg
PSA6OnN0ZDo6IGFsaWduKF9BbGlnbm1lbnQsIF9TaXplLCBfQmFzZSwgX1NwYWNlKTsNCiAgICBf
QmFzZSAgICAgICAgPSBzdGF0aWNfY2FzdDxjaGFyKj4oX0Jhc2UpICsgX1NpemU7DQogICAgcmV0
dXJuIF9SZXN1bHQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHk+DQpfVHkqIF9EZWNvZGVfYWxp
Z25lZF9ibG9jayh2b2lkKiYgX0Jhc2UpIHsgDQogICAgcmV0dXJuIHN0YXRpY19jYXN0PF9UeSo+
KF9EZWNvZGVfYWxpZ25lZF9ibG9jayhfQmFzZSwgc2l6ZW9mKF9UeSksIGFsaWdub2YoX1R5KSkp
Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5Pg0KX1R5KiBfRGVjb2RlX2FsaWduZWRfYmxvY2so
dm9pZComIF9CYXNlLCBjb25zdCBzaXplX3QgX0NvdW50KSB7DQogICAgDQogICAgcmV0dXJuIHN0
YXRpY19jYXN0PF9UeSo+KF9EZWNvZGVfYWxpZ25lZF9ibG9jayhfQmFzZSwgc2l6ZW9mKF9UeSkg
KiBfQ291bnQsIGFsaWdub2YoX1R5KSkpOw0KfQ0KDQoNCnN0cnVjdCBfR2xvYmFsX2RlbGV0ZSB7
DQogICAgdm9pZCBvcGVyYXRvcigpKHZvaWQqIGNvbnN0IF9QdHIpIGNvbnN0IHsNCiAgICAgICAg
OjpvcGVyYXRvciBkZWxldGUoX1B0cik7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3Mg
X0Z3ZEl0SGF5c3RhY2ssIGNsYXNzIF9Gd2RJdFBhdCwgY2xhc3MgX1ByZWRfZXE+DQppbmxpbmUg
cGFpcjxfRndkSXRIYXlzdGFjaywgX0Z3ZEl0SGF5c3RhY2s+IF9TZWFyY2hfcGFpcl91bmNoZWNr
ZWQoX0Z3ZEl0SGF5c3RhY2sgX0ZpcnN0MSwgX0Z3ZEl0SGF5c3RhY2sgX0xhc3QxLA0KICAgIF9G
d2RJdFBhdCBfRmlyc3QyLCBfRndkSXRQYXQgX0xhc3QyLCBfUHJlZF9lcSYgX0VxLCBmb3J3YXJk
X2l0ZXJhdG9yX3RhZywgZm9yd2FyZF9pdGVyYXRvcl90YWcpIHsNCiAgICANCiAgICBmb3IgKDs7
ICsrX0ZpcnN0MSkgeyANCiAgICAgICAgX0Z3ZEl0SGF5c3RhY2sgX01pZDEgPSBfRmlyc3QxOw0K
ICAgICAgICBmb3IgKF9Gd2RJdFBhdCBfTWlkMiA9IF9GaXJzdDI7OyArK19NaWQxLCAodm9pZCkg
KytfTWlkMikgew0KICAgICAgICAgICAgaWYgKF9NaWQyID09IF9MYXN0Mikgew0KICAgICAgICAg
ICAgICAgIHJldHVybiB7X0ZpcnN0MSwgX01pZDF9Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICBpZiAoX01pZDEgPT0gX0xhc3QxKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHtfTGFz
dDEsIF9MYXN0MX07DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghX0VxKCpfTWlk
MSwgKl9NaWQyKSkgew0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0Z3ZEl0SGF5c3RhY2ssIGNsYXNz
IF9Gd2RJdFBhdCwgY2xhc3MgX1ByZWRfZXE+DQppbmxpbmUgcGFpcjxfRndkSXRIYXlzdGFjaywg
X0Z3ZEl0SGF5c3RhY2s+IF9TZWFyY2hfcGFpcl91bmNoZWNrZWQoX0Z3ZEl0SGF5c3RhY2sgX0Zp
cnN0MSwgX0Z3ZEl0SGF5c3RhY2sgX0xhc3QxLA0KICAgIF9Gd2RJdFBhdCBfRmlyc3QyLCBfRndk
SXRQYXQgX0xhc3QyLCBfUHJlZF9lcSYgX0VxLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywg
cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpIHsNCiAgICANCiAgICBfSXRlcl9kaWZmX3Q8X0Z3
ZEl0SGF5c3RhY2s+IF9Db3VudDEgPSBfTGFzdDEgLSBfRmlyc3QxOw0KICAgIF9JdGVyX2RpZmZf
dDxfRndkSXRQYXQ+IF9Db3VudDIgICAgICA9IF9MYXN0MiAtIF9GaXJzdDI7DQoNCiAgICBmb3Ig
KDsgX0NvdW50MiA8PSBfQ291bnQxOyArK19GaXJzdDEsICh2b2lkKSAtLV9Db3VudDEpIHsgDQog
ICAgICAgIF9Gd2RJdEhheXN0YWNrIF9NaWQxID0gX0ZpcnN0MTsNCiAgICAgICAgZm9yIChfRndk
SXRQYXQgX01pZDIgPSBfRmlyc3QyOzsgKytfTWlkMSwgKHZvaWQpICsrX01pZDIpIHsNCiAgICAg
ICAgICAgIGlmIChfTWlkMiA9PSBfTGFzdDIpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4ge19G
aXJzdDEsIF9NaWQxfTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFfRXEoKl9N
aWQxLCAqX01pZDIpKSB7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4ge19MYXN0MSwgX0xhc3QxfTsNCn0NCg0KdGVt
cGxhdGUgPGNsYXNzIF9Gd2RJdFBhdCwgY2xhc3MgX1ByZWRfZXEgPSBlcXVhbF90bzw+Pg0KY2xh
c3MgZGVmYXVsdF9zZWFyY2hlciB7IA0KcHVibGljOg0KICAgIGlubGluZSBkZWZhdWx0X3NlYXJj
aGVyKF9Gd2RJdFBhdCBfRmlyc3QsIF9Gd2RJdFBhdCBfTGFzdCwgX1ByZWRfZXEgX0VxID0gX1By
ZWRfZXEoKSkNCiAgICAgICAgOiBfRGF0YXtfT25lX3RoZW5fdmFyaWFkaWNfYXJnc190e30sIDo6
c3RkOjogbW92ZShfRXEpLCBwYWlyPF9Gd2RJdFBhdCwgX0Z3ZEl0UGF0PntfRmlyc3QsIF9MYXN0
fX0gew0KICAgICAgICBjb25zdCBhdXRvJiBfUGF0ID0gX0RhdGEuX015dmFsMjsNCiAgICAgICAg
X0FkbF92ZXJpZnlfcmFuZ2UoX1BhdC5maXJzdCwgX1BhdC5zZWNvbmQpOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlIDxjbGFzcyBfRndkSXRIYXlzdGFjaz4NCiAgICBbW25vZGlzY2FyZF1dIGlubGlu
ZSBwYWlyPF9Gd2RJdEhheXN0YWNrLCBfRndkSXRIYXlzdGFjaz4gb3BlcmF0b3IoKSgNCiAgICAg
ICAgX0Z3ZEl0SGF5c3RhY2sgX0ZpcnN0LCBfRndkSXRIYXlzdGFjayBfTGFzdCkgY29uc3Qgew0K
ICAgICAgICANCiAgICAgICAgX0FkbF92ZXJpZnlfcmFuZ2UoX0ZpcnN0LCBfTGFzdCk7DQogICAg
ICAgIGNvbnN0IGF1dG8mIF9FcSAgPSBfRGF0YS5fR2V0X2ZpcnN0KCk7DQogICAgICAgIGNvbnN0
IGF1dG8mIF9QYXQgPSBfRGF0YS5fTXl2YWwyOw0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShf
UGF0LmZpcnN0LCBfUGF0LnNlY29uZCk7IA0KICAgICAgICBjb25zdCBhdXRvIF9SZXN1bHQgPQ0K
ICAgICAgICAgICAgX1NlYXJjaF9wYWlyX3VuY2hlY2tlZChfR2V0X3Vud3JhcHBlZChfRmlyc3Qp
LCBfR2V0X3Vud3JhcHBlZChfTGFzdCksIF9HZXRfdW53cmFwcGVkKF9QYXQuZmlyc3QpLA0KICAg
ICAgICAgICAgICAgIF9HZXRfdW53cmFwcGVkKF9QYXQuc2Vjb25kKSwgX0VxLCBfSXRlcl9jYXRf
dDxfRndkSXRIYXlzdGFjaz57fSwgX0l0ZXJfY2F0X3Q8X0Z3ZEl0UGF0Pnt9KTsNCiAgICAgICAg
X1NlZWtfd3JhcHBlZChfTGFzdCwgX1Jlc3VsdC5zZWNvbmQpOw0KICAgICAgICBfU2Vla193cmFw
cGVkKF9GaXJzdCwgX1Jlc3VsdC5maXJzdCk7DQogICAgICAgIHJldHVybiB7X0ZpcnN0LCBfTGFz
dH07DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIF9Db21wcmVzc2VkX3BhaXI8X1ByZWRfZXEsIHBh
aXI8X0Z3ZEl0UGF0LCBfRndkSXRQYXQ+PiBfRGF0YTsNCn07DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xh
c3MgX1Jhbkl0UGF0LCBjbGFzcyBfSGFzaF90eSwgY2xhc3MgX1ByZWRfZXE+DQpzdHJ1Y3QgX0Jv
eWVyX21vb3JlX2hhc2hfZGVsdGFfMV90YWJsZSB7IA0KICAgIHVzaW5nIF9WYWx1ZV90ID0gX0l0
ZXJfdmFsdWVfdDxfUmFuSXRQYXQ+Ow0KICAgIHVzaW5nIF9EaWZmICAgID0gX0l0ZXJfZGlmZl90
PF9SYW5JdFBhdD47DQoNCiAgICBfQm95ZXJfbW9vcmVfaGFzaF9kZWx0YV8xX3RhYmxlKF9SYW5J
dFBhdCBfUGF0X2ZpcnN0X2FyZywgX1Vud3JhcHBlZF90PGNvbnN0IF9SYW5JdFBhdCY+IF9VUGF0
X2ZpcnN0LA0KICAgICAgICBjb25zdCBfRGlmZiBfUGF0X3NpemVfYXJnLCBfSGFzaF90eSYmIF9I
YXNoX2ZuLCBfUHJlZF9lcSYmIF9FcSkNCiAgICAgICAgOiBfUGF0X2ZpcnN0KF9QYXRfZmlyc3Rf
YXJnKSwgX1BhdF9zaXplKF9QYXRfc2l6ZV9hcmcpLA0KICAgICAgICAgIF9NYXAoMCwgOjpzdGQ6
OiBtb3ZlKF9IYXNoX2ZuKSwgOjpzdGQ6OiBtb3ZlKF9FcSkpIHsgDQogICAgICAgIGZvciAoX0Rp
ZmYgX0lkeCA9IDE7IF9JZHggPD0gX1BhdF9zaXplOyArK19JZHgsICh2b2lkKSArK19VUGF0X2Zp
cnN0KSB7DQogICAgICAgICAgICBfTWFwLmluc2VydF9vcl9hc3NpZ24oKl9VUGF0X2ZpcnN0LCBf
UGF0X3NpemUgLSBfSWR4KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIF9EaWZmIF9Mb29rdXAo
Y29uc3QgX1ZhbHVlX3QmIF9WYWx1ZSkgY29uc3Qgew0KICAgICAgICANCiAgICAgICAgY29uc3Qg
YXV0byBfSXRlciA9IF9NYXAuZmluZChfVmFsdWUpOw0KICAgICAgICBpZiAoX0l0ZXIgPT0gX01h
cC5lbmQoKSkgew0KICAgICAgICAgICAgcmV0dXJuIF9QYXRfc2l6ZTsNCiAgICAgICAgfQ0KDQog
ICAgICAgIHJldHVybiBfSXRlci0+c2Vjb25kOw0KICAgIH0NCg0KICAgIF9QcmVkX2VxIF9HZXRf
ZXEoKSBjb25zdCB7DQogICAgICAgIHJldHVybiBfTWFwLmtleV9lcSgpOw0KICAgIH0NCg0KICAg
IGNvbnN0IF9SYW5JdFBhdCBfUGF0X2ZpcnN0Ow0KICAgIGNvbnN0IF9EaWZmIF9QYXRfc2l6ZTsN
Cg0KcHJpdmF0ZToNCiAgICB1bm9yZGVyZWRfbWFwPF9WYWx1ZV90LCBfRGlmZiwgX0hhc2hfdHks
IF9QcmVkX2VxPiBfTWFwOw0KfTsNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXRQYXQsIF9J
dGVyX2RpZmZfdDxfUmFuSXRQYXQ+IF9MaW1pdD4NCnN0cnVjdCBfQm95ZXJfbW9vcmVfZmxhdF9k
ZWx0YV8xX3RhYmxlIHsgDQogICAgdXNpbmcgX1ZhbHVlX3QgPSBfSXRlcl92YWx1ZV90PF9SYW5J
dFBhdD47DQogICAgdXNpbmcgX0RpZmYgICAgPSBfSXRlcl9kaWZmX3Q8X1Jhbkl0UGF0PjsNCg0K
ICAgIF9Cb3llcl9tb29yZV9mbGF0X2RlbHRhXzFfdGFibGUoX1Jhbkl0UGF0IF9QYXRfZmlyc3Rf
YXJnLCBfVW53cmFwcGVkX3Q8Y29uc3QgX1Jhbkl0UGF0Jj4gX1VQYXRfZmlyc3QsDQogICAgICAg
IGNvbnN0IF9EaWZmIF9QYXRfc2l6ZV9hcmcsIF9VbnVzZWRfcGFyYW1ldGVyLCBfVW51c2VkX3Bh
cmFtZXRlcikNCiAgICAgICAgOiBfUGF0X2ZpcnN0KF9QYXRfZmlyc3RfYXJnKSwgX1BhdF9zaXpl
KF9QYXRfc2l6ZV9hcmcpIHsgDQogICAgICAgIDo6c3RkOjogZmlsbCg6OnN0ZDo6IGJlZ2luKF9U
YWJsZSksIDo6c3RkOjogZW5kKF9UYWJsZSksIF9QYXRfc2l6ZSk7DQogICAgICAgIGZvciAoX0Rp
ZmYgX0lkeCA9IDE7IF9JZHggPD0gX1BhdF9zaXplOyArK19JZHgsICh2b2lkKSArK19VUGF0X2Zp
cnN0KSB7DQogICAgICAgICAgICBfVGFibGVbX1Vuc2lnbmVkX3ZhbHVlKCpfVVBhdF9maXJzdCld
ID0gX1BhdF9zaXplIC0gX0lkeDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIF9EaWZmIF9Mb29r
dXAoY29uc3QgX1ZhbHVlX3QgX1ZhbHVlKSBjb25zdCB7IA0KICAgICAgICBjb25zdCBhdXRvIF9V
VmFsdWUgPSBfVW5zaWduZWRfdmFsdWUoX1ZhbHVlKTsNCiAgICAgICAgaWYgKF9VVmFsdWUgPCA6
OnN0ZDo6IHNpemUoX1RhYmxlKSkgew0KICAgICAgICAgICAgcmV0dXJuIF9UYWJsZVtfVVZhbHVl
XTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBfUGF0X3NpemU7DQogICAgfQ0KDQogICAg
ZXF1YWxfdG88PiBfR2V0X2VxKCkgY29uc3Qgew0KICAgICAgICByZXR1cm4ge307DQogICAgfQ0K
DQogICAgY29uc3QgX1Jhbkl0UGF0IF9QYXRfZmlyc3Q7DQogICAgY29uc3QgX0RpZmYgX1BhdF9z
aXplOw0KDQpwcml2YXRlOg0KICAgIF9EaWZmIF9UYWJsZVtfTGltaXRdOw0KfTsNCg0KDQoNCnRl
bXBsYXRlIDxjbGFzcyBfUmFuSXRQYXQsIGNsYXNzIF9QcmVkX2VxPg0Kdm9pZCBfQnVpbGRfYm95
ZXJfbW9vcmVfZGVsdGFfMl90YWJsZShfSXRlcl9kaWZmX3Q8X1Jhbkl0UGF0PiogY29uc3QgX1No
aWZ0cywgY29uc3QgX1Jhbkl0UGF0IF9QYXRfZmlyc3QsDQogICAgY29uc3QgX0l0ZXJfZGlmZl90
PF9SYW5JdFBhdD4gX1BhdF9zaXplLCBfUHJlZF9lcSYgX0VxKSB7DQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgdXNpbmcgX0RpZmYgPSBfSXRlcl9kaWZmX3Q8X1Jhbkl0UGF0PjsNCg0KICAg
IGlmIChfUGF0X3NpemUgPT0gMCkgew0KICAgICAgICByZXR1cm47DQogICAgfQ0KDQogICAgaWYg
KChudW1lcmljX2xpbWl0czxfRGlmZj46Om1heCkoKSAtIF9QYXRfc2l6ZSA8IF9QYXRfc2l6ZSkg
ew0KICAgICAgICBfWGxlbmd0aF9lcnJvcigiQm95ZXItTW9vcmUgcGF0dGVybiBpcyB0b28gbG9u
ZyIpOw0KICAgIH0NCg0KICAgIGNvbnN0IGF1dG8gX014ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihf
UGF0X3NpemUpOw0KDQogICAgY29uc3QgdW5pcXVlX3B0cjxzaXplX3RbXT4gX0Z4e25ldyBzaXpl
X3RbX014XX07DQoNCiAgICBmb3IgKHNpemVfdCBfS3ggPSAxOyBfS3ggPD0gX014OyArK19LeCkg
ew0KICAgICAgICBfU2hpZnRzW19LeCAtIDFdID0gc3RhdGljX2Nhc3Q8X0RpZmY+KDIgKiBfTXgg
LSBfS3gpOw0KICAgIH0NCg0KICAgIHNpemVfdCBfVHggPSBfTXggKyAxOw0KICAgIGZvciAoc2l6
ZV90IF9KeCA9IF9NeDsgX0p4ID4gMDsgLS1fSngsIC0tX1R4KSB7DQogICAgICAgIF9GeFtfSngg
LSAxXSA9IF9UeDsNCiAgICAgICAgd2hpbGUgKF9UeCA8PSBfTXggJiYgIV9FcShfUGF0X2ZpcnN0
W19KeCAtIDFdLCBfUGF0X2ZpcnN0W19UeCAtIDFdKSkgew0KICAgICAgICAgICAgX1NoaWZ0c1tf
VHggLSAxXSA9ICg6OnN0ZDo6IG1pbikoX1NoaWZ0c1tfVHggLSAxXSwgc3RhdGljX2Nhc3Q8X0Rp
ZmY+KF9NeCAtIF9KeCkpOw0KICAgICAgICAgICAgX1R4ICAgICAgICAgICAgICA9IF9GeFtfVHgg
LSAxXTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIA0KICAgIA0KDQogICAgc2l6ZV90IF9ReCA9
IF9UeDsNCiAgICBfVHggICAgICAgID0gX014ICsgMSAtIF9ReDsNCiAgICBmb3IgKHNpemVfdCBf
SnggPSAxLCBfVHgxID0gMDsgX0p4IDw9IF9UeDsgKytfVHgxLCArK19KeCkgew0KICAgICAgICBf
RnhbX0p4IC0gMV0gPSBfVHgxOw0KICAgICAgICB3aGlsZSAoX1R4MSA+PSAxICYmICFfRXEoX1Bh
dF9maXJzdFtfSnggLSAxXSwgX1BhdF9maXJzdFtfVHgxIC0gMV0pKSB7DQogICAgICAgICAgICBf
VHgxID0gX0Z4W19UeDEgLSAxXTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHNpemVfdCBfUXgx
ID0gMTsNCiAgICB3aGlsZSAoX1F4IDwgX014KSB7DQogICAgICAgIGZvciAoc2l6ZV90IF9LeCA9
IF9ReDE7IF9LeCA8PSBfUXg7ICsrX0t4KSB7DQogICAgICAgICAgICBfU2hpZnRzW19LeCAtIDFd
ID0gKDo6c3RkOjogbWluKShfU2hpZnRzW19LeCAtIDFdLCBzdGF0aWNfY2FzdDxfRGlmZj4oX014
ICsgX1F4IC0gX0t4KSk7DQogICAgICAgIH0NCiAgICAgICAgX1F4MSA9IF9ReCArIDE7DQoNCiAg
ICAgICAgY29uc3Qgc2l6ZV90IF9UZW1wID0gX0Z4W19UeCAtIDFdOw0KDQogICAgICAgIF9ReCA9
IF9ReCArIF9UeCAtIF9UZW1wOw0KICAgICAgICBfVHggPSBfVGVtcDsNCiAgICB9DQp9DQoNCg0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0RlbHRhMV90LCBjbGFzcyBfUmFuSXRIYXlzdGFjaz4NCnBhaXI8
X1Jhbkl0SGF5c3RhY2ssIF9SYW5JdEhheXN0YWNrPiBfQm95ZXJfbW9vcmVfc2VhcmNoKA0KICAg
IGNvbnN0IF9EZWx0YTFfdCYgX0RlbHRhMSwgdHlwZW5hbWUgX0RlbHRhMV90OjpfRGlmZiogX0Rl
bHRhMiwgX1Jhbkl0SGF5c3RhY2sgX0ZpcnN0LCBfUmFuSXRIYXlzdGFjayBfTGFzdCkgew0KICAg
IHN0YXRpY19hc3NlcnQoaXNfc2FtZV92PHR5cGVuYW1lIF9EZWx0YTFfdDo6X1ZhbHVlX3QsIF9J
dGVyX3ZhbHVlX3Q8X1Jhbkl0SGF5c3RhY2s+PiwNCiAgICAgICAgImJveWVyX21vb3JlX3NlYXJj
aGVyIHJlcXVpcmVzIG1hdGNoaW5nIGl0ZXJhdG9yIHZhbHVlIHR5cGVzIik7DQogICAgdXNpbmcg
X0RpZmYgPSB0eXBlbmFtZSBfRGVsdGExX3Q6Ol9EaWZmOw0KICAgIF9BZGxfdmVyaWZ5X3Jhbmdl
KF9GaXJzdCwgX0xhc3QpOw0KICAgIGF1dG8gX1VGaXJzdCAgICAgICAgID0gX0dldF91bndyYXBw
ZWQoX0ZpcnN0KTsNCiAgICBjb25zdCBhdXRvIF9VTGFzdCAgICA9IF9HZXRfdW53cmFwcGVkKF9M
YXN0KTsNCiAgICBjb25zdCBhdXRvIF9QYXRfc2l6ZSA9IF9EZWx0YTEuX1BhdF9zaXplOw0KICAg
IGlmIChfUGF0X3NpemUgPT0gMCkgew0KICAgICAgICByZXR1cm4ge19GaXJzdCwgX0ZpcnN0fTsN
CiAgICB9DQoNCiAgICBjb25zdCBhdXRvIF9VUGF0X2ZpcnN0ID0gX0dldF91bndyYXBwZWRfbihf
RGVsdGExLl9QYXRfZmlyc3QsIF9QYXRfc2l6ZSk7DQogICAgY29uc3QgYXV0byBfRXEgICAgICAg
ICA9IF9EZWx0YTEuX0dldF9lcSgpOw0KICAgIF9EaWZmIF9TaGlmdCAgICAgICAgICAgPSBfUGF0
X3NpemUgLSAxOw0KICAgIHdoaWxlIChfU2hpZnQgPCBfVUxhc3QgLSBfVUZpcnN0KSB7DQogICAg
ICAgIF9VRmlyc3QgKz0gX1NoaWZ0Ow0KICAgICAgICBfU2hpZnQgPSBfRGVsdGExLl9Mb29rdXAo
Kl9VRmlyc3QpOw0KICAgICAgICBpZiAoX1NoaWZ0ID09IDApIHsgDQogICAgICAgICAgICBfRGlm
ZiBfSWR4ID0gX1BhdF9zaXplIC0gMTsNCiAgICAgICAgICAgIGRvIHsNCiAgICAgICAgICAgICAg
ICBpZiAoX0lkeCA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgIF9TZWVrX3dyYXBwZWQoX0xh
c3QsIF9VRmlyc3QgKyBfUGF0X3NpemUpOw0KICAgICAgICAgICAgICAgICAgICBfU2Vla193cmFw
cGVkKF9GaXJzdCwgX1VGaXJzdCk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB7X0ZpcnN0
LCBfTGFzdH07DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLS1fSWR4Ow0K
ICAgICAgICAgICAgICAgIC0tX1VGaXJzdDsNCiAgICAgICAgICAgIH0gd2hpbGUgKF9FcSgqX1VG
aXJzdCwgX1VQYXRfZmlyc3RbX0lkeF0pKTsNCiAgICAgICAgICAgIF9TaGlmdCA9ICg6OnN0ZDo6
IG1heCkoX0RlbHRhMS5fTG9va3VwKCpfVUZpcnN0KSwgX0RlbHRhMltfSWR4XSk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICBfU2Vla193cmFwcGVkKF9MYXN0LCBfVUxhc3QpOw0KICAgIF9TZWVr
X3dyYXBwZWQoX0ZpcnN0LCBfVUxhc3QpOw0KICAgIHJldHVybiB7X0ZpcnN0LCBfTGFzdH07DQp9
DQoNCg0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX0RlbHRhMV90LCBjbGFzcyBfUmFuSXRIYXlzdGFjaz4N
CnBhaXI8X1Jhbkl0SGF5c3RhY2ssIF9SYW5JdEhheXN0YWNrPiBfQm95ZXJfbW9vcmVfaG9yc3Bv
b2xfc2VhcmNoKA0KICAgIGNvbnN0IF9EZWx0YTFfdCYgX0RlbHRhMSwgX1Jhbkl0SGF5c3RhY2sg
X0ZpcnN0LCBfUmFuSXRIYXlzdGFjayBfTGFzdCkgew0KICAgIHN0YXRpY19hc3NlcnQoaXNfc2Ft
ZV92PHR5cGVuYW1lIF9EZWx0YTFfdDo6X1ZhbHVlX3QsIF9JdGVyX3ZhbHVlX3Q8X1Jhbkl0SGF5
c3RhY2s+PiwNCiAgICAgICAgImJveWVyX21vb3JlX2hvcnNwb29sX3NlYXJjaGVyIHJlcXVpcmVz
IG1hdGNoaW5nIGl0ZXJhdG9yIHZhbHVlIHR5cGVzIik7DQogICAgdXNpbmcgX0RpZmYgPSB0eXBl
bmFtZSBfRGVsdGExX3Q6Ol9EaWZmOw0KICAgIF9BZGxfdmVyaWZ5X3JhbmdlKF9GaXJzdCwgX0xh
c3QpOw0KICAgIGNvbnN0IGF1dG8gX1BhdF9zaXplID0gX0RlbHRhMS5fUGF0X3NpemU7DQogICAg
aWYgKF9QYXRfc2l6ZSA9PSAwKSB7DQogICAgICAgIHJldHVybiB7X0ZpcnN0LCBfRmlyc3R9Ow0K
ICAgIH0NCg0KICAgIGF1dG8gX1VGaXJzdCAgICAgICAgICAgPSBfR2V0X3Vud3JhcHBlZChfRmly
c3QpOw0KICAgIGNvbnN0IGF1dG8gX1VMYXN0ICAgICAgPSBfR2V0X3Vud3JhcHBlZChfTGFzdCk7
DQogICAgY29uc3QgYXV0byBfVVBhdF9maXJzdCA9IF9HZXRfdW53cmFwcGVkX24oX0RlbHRhMS5f
UGF0X2ZpcnN0LCBfUGF0X3NpemUpOw0KICAgIGNvbnN0IGF1dG8gX0VxICAgICAgICAgPSBfRGVs
dGExLl9HZXRfZXEoKTsNCiAgICBfRGlmZiBfU2hpZnQgICAgICAgICAgID0gX1BhdF9zaXplIC0g
MTsNCiAgICB3aGlsZSAoX1NoaWZ0IDwgX1VMYXN0IC0gX1VGaXJzdCkgew0KICAgICAgICBfVUZp
cnN0ICs9IF9TaGlmdDsNCiAgICAgICAgX1NoaWZ0ID0gX0RlbHRhMS5fTG9va3VwKCpfVUZpcnN0
KTsNCiAgICAgICAgaWYgKF9TaGlmdCA9PSAwKSB7IA0KICAgICAgICAgICAgY29uc3QgYXV0byBf
Q2FuZGlkYXRlID0gX1VGaXJzdCAtIChfUGF0X3NpemUgLSAxKTsNCiAgICAgICAgICAgIGlmICg6
OnN0ZDo6IGVxdWFsKF9VUGF0X2ZpcnN0LCBfVVBhdF9maXJzdCArIChfUGF0X3NpemUgLSAxKSwg
X0NhbmRpZGF0ZSwgX1Bhc3NfZm4oX0VxKSkpIHsNCiAgICAgICAgICAgICAgICBfU2Vla193cmFw
cGVkKF9MYXN0LCBfQ2FuZGlkYXRlICsgX1BhdF9zaXplKTsNCiAgICAgICAgICAgICAgICBfU2Vl
a193cmFwcGVkKF9GaXJzdCwgX0NhbmRpZGF0ZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHtf
Rmlyc3QsIF9MYXN0fTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX1NoaWZ0ID0gMTsN
CiAgICAgICAgfQ0KICAgIH0NCg0KICAgIF9TZWVrX3dyYXBwZWQoX0xhc3QsIF9VTGFzdCk7DQog
ICAgX1NlZWtfd3JhcHBlZChfRmlyc3QsIF9VTGFzdCk7DQogICAgcmV0dXJuIHtfRmlyc3QsIF9M
YXN0fTsNCn0NCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXRQYXQsIGNsYXNzIF9IYXNoX3R5
LCBjbGFzcyBfUHJlZF9lcSwgY2xhc3MgX0RlbHRhMV90Pg0Kc3RydWN0IF9TaW5nbGVfZGVsdGEx
X3R5cGVfYm95ZXJfbW9vcmVfdHJhaXRzIHsNCiAgICB1c2luZyBfRGlmZiA9IF9JdGVyX2RpZmZf
dDxfUmFuSXRQYXQ+Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICB0ZW1w
bGF0ZSA8Ym9vbCBfQnVpbGRfZGVsdGEyPg0KICAgIHN0YXRpYyB2b2lkKiBfQnVpbGRfYm95ZXJf
bW9vcmUoX1Jhbkl0UGF0IF9GaXJzdCwgX1Jhbkl0UGF0IF9MYXN0LCBfSGFzaF90eSBfSGFzaF9m
biwgX1ByZWRfZXEgX0VxKSB7DQogICAgICAgIA0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShf
Rmlyc3QsIF9MYXN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVUZpcnN0ICAgICAgID0gX0dldF91
bndyYXBwZWQoX0ZpcnN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfUGF0X3NpemVfcmF3ID0gX0dl
dF91bndyYXBwZWQoX0xhc3QpIC0gX1VGaXJzdDsNCiAgICAgICAgdXNpbmcgX0NUICAgICAgICAg
ICAgICAgID0gY29tbW9uX3R5cGVfdDxfSXRlcl9kaWZmX3Q8X1Jhbkl0UGF0Piwgc2l6ZV90PjsN
CiAgICAgICAgaWYgKHN0YXRpY19jYXN0PF9DVD4oX1BhdF9zaXplX3JhdykgPiBzdGF0aWNfY2Fz
dDxfQ1Q+KDB4ZmZmZmZmZmZmZmZmZmZmZnVpNjQpKSB7DQogICAgICAgICAgICBfWGJhZF9hbGxv
YygpOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3QgYXV0byBfUGF0X3NpemUgPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KF9QYXRfc2l6ZV9yYXcpOw0KICAgICAgICBzaXplX3QgX0J1Zl9zaXplICAg
ICA9IDA7DQogICAgICAgIF9BZGRfYWxsb2Nfc2l6ZTxfQXRvbWljX2NvdW50ZXJfdD4oX0J1Zl9z
aXplKTsNCiAgICAgICAgX0FkZF9hbGxvY19zaXplPF9EZWx0YTFfdD4oX0J1Zl9zaXplKTsNCiAg
ICAgICAgaWYgKF9CdWlsZF9kZWx0YTIpIHsNCiAgICAgICAgICAgIF9BZGRfYWxsb2Nfc2l6ZTxf
RGlmZj4oX0J1Zl9zaXplLCBfUGF0X3NpemUpOw0KICAgICAgICB9DQoNCiAgICAgICAgdW5pcXVl
X3B0cjx2b2lkLCBfR2xvYmFsX2RlbGV0ZT4gX0J1Zl9ieXRlcyg6Om9wZXJhdG9yIG5ldyhfQnVm
X3NpemUpKTsNCiAgICAgICAgdm9pZCogX0J1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBfQnVmX2J5dGVzLmdldCgpOw0KICAgICAgICAqX0RlY29kZV9hbGlnbmVkX2Js
b2NrPF9BdG9taWNfY291bnRlcl90PihfQnVmKSA9IDE7DQogICAgICAgIHZvaWQqIGNvbnN0IF9E
ZWx0YTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gX0RlY29kZV9hbGlnbmVkX2Jsb2Nr
PF9EZWx0YTFfdD4oX0J1Zik7DQogICAgICAgIGlmIChfQnVpbGRfZGVsdGEyKSB7DQogICAgICAg
ICAgICBfQnVpbGRfYm95ZXJfbW9vcmVfZGVsdGFfMl90YWJsZSgNCiAgICAgICAgICAgICAgICBf
RGVjb2RlX2FsaWduZWRfYmxvY2s8X0RpZmY+KF9CdWYsIF9QYXRfc2l6ZSksIF9VRmlyc3QsIF9Q
YXRfc2l6ZV9yYXcsIF9FcSk7DQogICAgICAgIH0NCg0KICAgICAgICA6Om5ldyAoX0RlbHRhMSkg
X0RlbHRhMV90KF9GaXJzdCwgX1VGaXJzdCwgX1BhdF9zaXplX3JhdywgOjpzdGQ6OiBtb3ZlKF9I
YXNoX2ZuKSwgOjpzdGQ6OiBtb3ZlKF9FcSkpOw0KICAgICAgICByZXR1cm4gX0J1Zl9ieXRlcy5y
ZWxlYXNlKCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SYW5JdEhheXN0YWNrPg0K
ICAgIHN0YXRpYyBwYWlyPF9SYW5JdEhheXN0YWNrLCBfUmFuSXRIYXlzdGFjaz4gX1VzZV9ib3ll
cl9tb29yZSgNCiAgICAgICAgdm9pZCogX0RhdGEsIF9SYW5JdEhheXN0YWNrIF9GaXJzdCwgX1Jh
bkl0SGF5c3RhY2sgX0xhc3QpIHsNCiAgICAgICAgDQogICAgICAgICh2b2lkKSBfRGVjb2RlX2Fs
aWduZWRfYmxvY2s8X0F0b21pY19jb3VudGVyX3Q+KF9EYXRhKTsNCiAgICAgICAgY29uc3QgYXV0
byBfRGVsdGExID0gX0RlY29kZV9hbGlnbmVkX2Jsb2NrPF9EZWx0YTFfdD4oX0RhdGEpOw0KICAg
ICAgICBjb25zdCBhdXRvIF9EZWx0YTIgPSBfRGVjb2RlX2FsaWduZWRfYmxvY2s8X0RpZmY+KF9E
YXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KF9EZWx0YTEtPl9QYXRfc2l6ZSkpOw0KICAgICAgICBy
ZXR1cm4gX0JveWVyX21vb3JlX3NlYXJjaCgqX0RlbHRhMSwgX0RlbHRhMiwgX0ZpcnN0LCBfTGFz
dCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SYW5JdEhheXN0YWNrPg0KICAgIHN0
YXRpYyBwYWlyPF9SYW5JdEhheXN0YWNrLCBfUmFuSXRIYXlzdGFjaz4gX1VzZV9ib3llcl9tb29y
ZV9ob3JzcG9vbCgNCiAgICAgICAgdm9pZCogX0RhdGEsIF9SYW5JdEhheXN0YWNrIF9GaXJzdCwg
X1Jhbkl0SGF5c3RhY2sgX0xhc3QpIHsNCiAgICAgICAgDQogICAgICAgICh2b2lkKSBfRGVjb2Rl
X2FsaWduZWRfYmxvY2s8X0F0b21pY19jb3VudGVyX3Q+KF9EYXRhKTsNCiAgICAgICAgY29uc3Qg
YXV0byBfRGVsdGExID0gX0RlY29kZV9hbGlnbmVkX2Jsb2NrPF9EZWx0YTFfdD4oX0RhdGEpOw0K
ICAgICAgICByZXR1cm4gX0JveWVyX21vb3JlX2hvcnNwb29sX3NlYXJjaCgqX0RlbHRhMSwgX0Zp
cnN0LCBfTGFzdCk7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgX0Rlc3Ryb3kodm9pZCogY29u
c3QgX0Jhc2UpIG5vZXhjZXB0IHsNCiAgICAgICAgDQogICAgICAgIHZvaWQqIF9EYXRhID0gX0Jh
c2U7DQogICAgICAgICh2b2lkKSBfRGVjb2RlX2FsaWduZWRfYmxvY2s8X0F0b21pY19jb3VudGVy
X3Q+KF9EYXRhKTsNCiAgICAgICAgX0RlY29kZV9hbGlnbmVkX2Jsb2NrPF9EZWx0YTFfdD4oX0Rh
dGEpLT5+X0RlbHRhMV90KCk7DQogICAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKF9CYXNlKTsNCiAg
ICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0UGF0LCBjbGFzcyBfSGFzaF90eSwgY2xh
c3MgX1ByZWRfZXE+DQp1c2luZyBfQm95ZXJfbW9vcmVfdHJhaXRzX2NoYXJfbW9kZSA9IF9TaW5n
bGVfZGVsdGExX3R5cGVfYm95ZXJfbW9vcmVfdHJhaXRzPF9SYW5JdFBhdCwgX0hhc2hfdHksIF9Q
cmVkX2VxLA0KICAgIF9Cb3llcl9tb29yZV9mbGF0X2RlbHRhXzFfdGFibGU8X1Jhbkl0UGF0LCAy
NTY+PjsNCg0KdGVtcGxhdGUgPGNsYXNzIF9SYW5JdFBhdD4NCnN0cnVjdCBfQm95ZXJfbW9vcmVf
dHJhaXRzX3djaGFyX3RfbW9kZSB7DQogICAgdXNpbmcgX1ZhbHVlX3QgICAgICAgPSBfSXRlcl92
YWx1ZV90PF9SYW5JdFBhdD47DQogICAgdXNpbmcgX0RpZmYgICAgICAgICAgPSBfSXRlcl9kaWZm
X3Q8X1Jhbkl0UGF0PjsNCiAgICB1c2luZyBfQmlnX3RhYmxlX3QgICA9IF9Cb3llcl9tb29yZV9m
bGF0X2RlbHRhXzFfdGFibGU8X1Jhbkl0UGF0LCA2NTUzNj47DQogICAgdXNpbmcgX1NtYWxsX3Rh
YmxlX3QgPSBfQm95ZXJfbW9vcmVfZmxhdF9kZWx0YV8xX3RhYmxlPF9SYW5JdFBhdCwgMjU2PjsN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgdGVtcGxhdGUgPGJv
b2wgX0J1aWxkX2RlbHRhMj4NCiAgICBzdGF0aWMgdm9pZCogX0J1aWxkX2JveWVyX21vb3JlKF9S
YW5JdFBhdCBfRmlyc3QsIF9SYW5JdFBhdCBfTGFzdCwgX1VudXNlZF9wYXJhbWV0ZXIsIF9VbnVz
ZWRfcGFyYW1ldGVyKSB7DQogICAgICAgIA0KICAgICAgICBfQWRsX3ZlcmlmeV9yYW5nZShfRmly
c3QsIF9MYXN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVUZpcnN0ICAgICAgID0gX0dldF91bndy
YXBwZWQoX0ZpcnN0KTsNCiAgICAgICAgY29uc3QgYXV0byBfVUxhc3QgICAgICAgID0gX0dldF91
bndyYXBwZWQoX0xhc3QpOw0KICAgICAgICBjb25zdCBhdXRvIF9QYXRfc2l6ZV9yYXcgPSBfVUxh
c3QgLSBfVUZpcnN0Ow0KICAgICAgICB1c2luZyBfQ1QgICAgICAgICAgICAgICAgPSBjb21tb25f
dHlwZV90PF9JdGVyX2RpZmZfdDxfUmFuSXRQYXQ+LCBzaXplX3Q+Ow0KICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8X0NUPihfUGF0X3NpemVfcmF3KSA+IHN0YXRpY19jYXN0PF9DVD4oMHhmZmZmZmZm
ZmZmZmZmZmZmdWk2NCkpIHsNCiAgICAgICAgICAgIF9YYmFkX2FsbG9jKCk7DQogICAgICAgIH0N
Cg0KICAgICAgICBjb25zdCBhdXRvIF9QYXRfc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oX1Bh
dF9zaXplX3Jhdyk7DQogICAgICAgIHNpemVfdCBfQnVmX3NpemUgICAgID0gMDsNCiAgICAgICAg
X0FkZF9hbGxvY19zaXplPF9BdG9taWNfY291bnRlcl90PihfQnVmX3NpemUpOw0KICAgICAgICBi
b29sIF9Vc2VfbGFyZ2VfdGFibGUgPSBmYWxzZTsNCg0KICAgICAgICBmb3IgKGF1dG8gX1RlbXAg
PSBfVUZpcnN0OyBfVGVtcCAhPSBfVUxhc3Q7ICsrX1RlbXApIHsNCiAgICAgICAgICAgIGlmIChf
VW5zaWduZWRfdmFsdWUoKl9UZW1wKSA+IDI1NSkgew0KICAgICAgICAgICAgICAgIF9Vc2VfbGFy
Z2VfdGFibGUgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQoNCiAgICAgICAgX0FkZF9hbGxvY19zaXplPGJvb2w+KF9CdWZfc2l6ZSk7DQog
ICAgICAgIGlmIChfVXNlX2xhcmdlX3RhYmxlKSB7DQogICAgICAgICAgICBfQWRkX2FsbG9jX3Np
emU8X0JpZ190YWJsZV90PihfQnVmX3NpemUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAg
ICAgX0FkZF9hbGxvY19zaXplPF9TbWFsbF90YWJsZV90PihfQnVmX3NpemUpOw0KICAgICAgICB9
DQoNCiAgICAgICAgaWYgKF9CdWlsZF9kZWx0YTIpIHsNCiAgICAgICAgICAgIF9BZGRfYWxsb2Nf
c2l6ZTxfRGlmZj4oX0J1Zl9zaXplLCBfUGF0X3NpemUpOw0KICAgICAgICB9DQoNCiAgICAgICAg
dW5pcXVlX3B0cjx2b2lkLCBfR2xvYmFsX2RlbGV0ZT4gX0J1Zl9ieXRlcyg6Om9wZXJhdG9yIG5l
dyhfQnVmX3NpemUpKTsNCiAgICAgICAgdm9pZCogX0J1ZiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBfQnVmX2J5dGVzLmdldCgpOw0KICAgICAgICAqX0RlY29kZV9hbGln
bmVkX2Jsb2NrPF9BdG9taWNfY291bnRlcl90PihfQnVmKSA9IDE7DQogICAgICAgICpfRGVjb2Rl
X2FsaWduZWRfYmxvY2s8Ym9vbD4oX0J1ZikgICAgICAgICAgICAgID0gX1VzZV9sYXJnZV90YWJs
ZTsNCiAgICAgICAgaWYgKF9Vc2VfbGFyZ2VfdGFibGUpIHsNCiAgICAgICAgICAgIHVzaW5nIF9E
ZWx0YTFfdCA9IF9CaWdfdGFibGVfdDsNCiAgICAgICAgICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2
b2lkKj4oX0RlY29kZV9hbGlnbmVkX2Jsb2NrPF9EZWx0YTFfdD4oX0J1ZikpKQ0KICAgICAgICAg
ICAgICAgIF9EZWx0YTFfdChfRmlyc3QsIF9VRmlyc3QsIF9QYXRfc2l6ZV9yYXcsIHt9LCB7fSk7
DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB1c2luZyBfRGVsdGExX3QgPSBfU21hbGxf
dGFibGVfdDsNCiAgICAgICAgICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oX0RlY29kZV9h
bGlnbmVkX2Jsb2NrPF9EZWx0YTFfdD4oX0J1ZikpKQ0KICAgICAgICAgICAgICAgIF9EZWx0YTFf
dChfRmlyc3QsIF9VRmlyc3QsIF9QYXRfc2l6ZV9yYXcsIHt9LCB7fSk7DQogICAgICAgIH0NCg0K
ICAgICAgICBpZiAoX0J1aWxkX2RlbHRhMikgew0KICAgICAgICAgICAgZXF1YWxfdG88PiBfRXE7
DQogICAgICAgICAgICBfQnVpbGRfYm95ZXJfbW9vcmVfZGVsdGFfMl90YWJsZSgNCiAgICAgICAg
ICAgICAgICBfRGVjb2RlX2FsaWduZWRfYmxvY2s8X0RpZmY+KF9CdWYsIF9QYXRfc2l6ZSksIF9V
Rmlyc3QsIF9QYXRfc2l6ZV9yYXcsIF9FcSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4g
X0J1Zl9ieXRlcy5yZWxlYXNlKCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9SYW5J
dEhheXN0YWNrPg0KICAgIHN0YXRpYyBwYWlyPF9SYW5JdEhheXN0YWNrLCBfUmFuSXRIYXlzdGFj
az4gX1VzZV9ib3llcl9tb29yZSgNCiAgICAgICAgdm9pZCogX0RhdGEsIF9SYW5JdEhheXN0YWNr
IF9GaXJzdCwgX1Jhbkl0SGF5c3RhY2sgX0xhc3QpIHsNCiAgICAgICAgDQogICAgICAgICh2b2lk
KSBfRGVjb2RlX2FsaWduZWRfYmxvY2s8X0F0b21pY19jb3VudGVyX3Q+KF9EYXRhKTsNCiAgICAg
ICAgaWYgKCpfRGVjb2RlX2FsaWduZWRfYmxvY2s8Ym9vbD4oX0RhdGEpKSB7DQogICAgICAgICAg
ICBjb25zdCBhdXRvIF9EZWx0YTEgPSBfRGVjb2RlX2FsaWduZWRfYmxvY2s8X0JpZ190YWJsZV90
PihfRGF0YSk7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9EZWx0YTIgPSBfRGVjb2RlX2FsaWdu
ZWRfYmxvY2s8X0RpZmY+KF9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KF9EZWx0YTEtPl9QYXRf
c2l6ZSkpOw0KICAgICAgICAgICAgcmV0dXJuIF9Cb3llcl9tb29yZV9zZWFyY2goKl9EZWx0YTEs
IF9EZWx0YTIsIF9GaXJzdCwgX0xhc3QpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
Y29uc3QgYXV0byBfRGVsdGExID0gX0RlY29kZV9hbGlnbmVkX2Jsb2NrPF9TbWFsbF90YWJsZV90
PihfRGF0YSk7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9EZWx0YTIgPSBfRGVjb2RlX2FsaWdu
ZWRfYmxvY2s8X0RpZmY+KF9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KF9EZWx0YTEtPl9QYXRf
c2l6ZSkpOw0KICAgICAgICAgICAgcmV0dXJuIF9Cb3llcl9tb29yZV9zZWFyY2goKl9EZWx0YTEs
IF9EZWx0YTIsIF9GaXJzdCwgX0xhc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdGVtcGxh
dGUgPGNsYXNzIF9SYW5JdEhheXN0YWNrPg0KICAgIHN0YXRpYyBwYWlyPF9SYW5JdEhheXN0YWNr
LCBfUmFuSXRIYXlzdGFjaz4gX1VzZV9ib3llcl9tb29yZV9ob3JzcG9vbCgNCiAgICAgICAgdm9p
ZCogX0RhdGEsIF9SYW5JdEhheXN0YWNrIF9GaXJzdCwgX1Jhbkl0SGF5c3RhY2sgX0xhc3QpIHsN
CiAgICAgICAgDQogICAgICAgICh2b2lkKSBfRGVjb2RlX2FsaWduZWRfYmxvY2s8X0F0b21pY19j
b3VudGVyX3Q+KF9EYXRhKTsNCiAgICAgICAgaWYgKCpfRGVjb2RlX2FsaWduZWRfYmxvY2s8Ym9v
bD4oX0RhdGEpKSB7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9EZWx0YTEgPSBfRGVjb2RlX2Fs
aWduZWRfYmxvY2s8X0JpZ190YWJsZV90PihfRGF0YSk7DQogICAgICAgICAgICByZXR1cm4gX0Jv
eWVyX21vb3JlX2hvcnNwb29sX3NlYXJjaCgqX0RlbHRhMSwgX0ZpcnN0LCBfTGFzdCk7DQogICAg
ICAgIH0gZWxzZSB7DQogICAgICAgICAgICBjb25zdCBhdXRvIF9EZWx0YTEgPSBfRGVjb2RlX2Fs
aWduZWRfYmxvY2s8X1NtYWxsX3RhYmxlX3Q+KF9EYXRhKTsNCiAgICAgICAgICAgIHJldHVybiBf
Qm95ZXJfbW9vcmVfaG9yc3Bvb2xfc2VhcmNoKCpfRGVsdGExLCBfRmlyc3QsIF9MYXN0KTsNCiAg
ICAgICAgfQ0KICAgIH0NCg0KICAgIHN0YXRpYyB2b2lkIF9EZXN0cm95KHZvaWQqIGNvbnN0IF9C
YXNlKSBub2V4Y2VwdCB7DQogICAgICAgIA0KICAgICAgICB2b2lkKiBfRGF0YSA9IF9CYXNlOw0K
ICAgICAgICAodm9pZCkgX0RlY29kZV9hbGlnbmVkX2Jsb2NrPF9BdG9taWNfY291bnRlcl90Pihf
RGF0YSk7DQogICAgICAgIGlmICgqX0RlY29kZV9hbGlnbmVkX2Jsb2NrPGJvb2w+KF9EYXRhKSkg
ew0KICAgICAgICAgICAgY29uc3QgYXV0byBfRGVsdGExID0gX0RlY29kZV9hbGlnbmVkX2Jsb2Nr
PF9CaWdfdGFibGVfdD4oX0RhdGEpOw0KICAgICAgICAgICAgX0RlbHRhMS0+fl9CaWdfdGFibGVf
dCgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgY29uc3QgYXV0byBfRGVsdGExID0g
X0RlY29kZV9hbGlnbmVkX2Jsb2NrPF9TbWFsbF90YWJsZV90PihfRGF0YSk7DQogICAgICAgICAg
ICBfRGVsdGExLT5+X1NtYWxsX3RhYmxlX3QoKTsNCiAgICAgICAgfQ0KICAgICAgICBzdGF0aWNf
YXNzZXJ0KGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGVfdjxfRGlmZj4sICJhbGxvd3MgQm95ZXIt
TW9vcmUgYW5kIEJveWVyLU1vb3JlLUhvcnNwb29sIHRvICINCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hhcmUgY2xlYW51cCBmdW5j
dGlvbnMiKTsNCiAgICAgICAgOjpvcGVyYXRvciBkZWxldGUoX0Jhc2UpOw0KICAgIH0NCn07DQoN
CnRlbXBsYXRlIDxjbGFzcyBfUmFuSXRQYXQsIGNsYXNzIF9IYXNoX3R5LCBjbGFzcyBfUHJlZF9l
cT4NCnVzaW5nIF9Cb3llcl9tb29yZV90cmFpdHNfZ2VuZXJhbF9tb2RlID0gX1NpbmdsZV9kZWx0
YTFfdHlwZV9ib3llcl9tb29yZV90cmFpdHM8X1Jhbkl0UGF0LCBfSGFzaF90eSwgX1ByZWRfZXEs
DQogICAgX0JveWVyX21vb3JlX2hhc2hfZGVsdGFfMV90YWJsZTxfUmFuSXRQYXQsIF9IYXNoX3R5
LCBfUHJlZF9lcT4+Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0UGF0LCBjbGFzcyBfSGFzaF90
eSwgY2xhc3MgX1ByZWRfZXEsIGNsYXNzIF9WYWx1ZV90ID0gX0l0ZXJfdmFsdWVfdDxfUmFuSXRQ
YXQ+Pg0KdXNpbmcgX0JveWVyX21vb3JlX3RyYWl0cyA9DQogICAgY29uZGl0aW9uYWxfdDxpc19p
bnRlZ3JhbF92PF9WYWx1ZV90PiAmJiBzaXplb2YoX1ZhbHVlX3QpIDw9IDINCiAgICAgICAgICAg
ICAgICAgICAgICAmJiAoaXNfc2FtZV92PGVxdWFsX3RvPD4sIF9QcmVkX2VxPiB8fCBpc19zYW1l
X3Y8ZXF1YWxfdG88X1ZhbHVlX3Q+LCBfUHJlZF9lcT4pLA0KICAgICAgICBjb25kaXRpb25hbF90
PHNpemVvZihfVmFsdWVfdCkgPT0gMSwgX0JveWVyX21vb3JlX3RyYWl0c19jaGFyX21vZGU8X1Jh
bkl0UGF0LCBfSGFzaF90eSwgX1ByZWRfZXE+LA0KICAgICAgICAgICAgX0JveWVyX21vb3JlX3Ry
YWl0c193Y2hhcl90X21vZGU8X1Jhbkl0UGF0Pj4sDQogICAgICAgIF9Cb3llcl9tb29yZV90cmFp
dHNfZ2VuZXJhbF9tb2RlPF9SYW5JdFBhdCwgX0hhc2hfdHksIF9QcmVkX2VxPj47DQoNCg0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1Jhbkl0UGF0LCBjbGFzcyBfSGFzaF90eSA9IGhhc2g8X0l0ZXJfdmFs
dWVfdDxfUmFuSXRQYXQ+PiwgY2xhc3MgX1ByZWRfZXEgPSBlcXVhbF90bzw+Pg0KY2xhc3MgYm95
ZXJfbW9vcmVfc2VhcmNoZXIgew0KcHVibGljOg0KICAgIGJveWVyX21vb3JlX3NlYXJjaGVyKA0K
ICAgICAgICBjb25zdCBfUmFuSXRQYXQgX0ZpcnN0LCBjb25zdCBfUmFuSXRQYXQgX0xhc3QsIF9I
YXNoX3R5IF9IYXNoX2ZuID0gX0hhc2hfdHkoKSwgX1ByZWRfZXEgX0VxID0gX1ByZWRfZXEoKSkN
CiAgICAgICAgOiBfRGF0YShfVHJhaXRzOjp0ZW1wbGF0ZSBfQnVpbGRfYm95ZXJfbW9vcmU8dHJ1
ZT4oX0ZpcnN0LCBfTGFzdCwgOjpzdGQ6OiBtb3ZlKF9IYXNoX2ZuKSwgOjpzdGQ6OiBtb3ZlKF9F
cSkpKSB7DQogICAgICAgIA0KICAgIH0NCg0KICAgIGJveWVyX21vb3JlX3NlYXJjaGVyKGNvbnN0
IGJveWVyX21vb3JlX3NlYXJjaGVyJiBfT3RoZXIpIG5vZXhjZXB0IA0KICAgICAgICA6IF9EYXRh
KF9PdGhlci5fRGF0YSkgew0KICAgICAgICBfSW50ZXJsb2NrZWRJbmNyZW1lbnQocmVpbnRlcnBy
ZXRfY2FzdDx2b2xhdGlsZSBsb25nKj4oJipzdGF0aWNfY2FzdDxfQXRvbWljX2NvdW50ZXJfdCo+
KF9EYXRhKSkpOw0KICAgIH0NCg0KICAgIH5ib3llcl9tb29yZV9zZWFyY2hlcigpIG5vZXhjZXB0
IHsNCiAgICAgICAgaWYgKF9JbnRlcmxvY2tlZERlY3JlbWVudChyZWludGVycHJldF9jYXN0PHZv
bGF0aWxlIGxvbmcqPigmKnN0YXRpY19jYXN0PF9BdG9taWNfY291bnRlcl90Kj4oX0RhdGEpKSkg
PT0gMCkgew0KICAgICAgICAgICAgX1RyYWl0czo6X0Rlc3Ryb3koX0RhdGEpOw0KICAgICAgICB9
DQogICAgfQ0KDQogICAgYm95ZXJfbW9vcmVfc2VhcmNoZXImIG9wZXJhdG9yPShjb25zdCBib3ll
cl9tb29yZV9zZWFyY2hlciYgX090aGVyKSBub2V4Y2VwdCAgew0KICAgICAgICBib3llcl9tb29y
ZV9zZWFyY2hlciBfQ3B5KF9PdGhlcik7DQogICAgICAgIHN3YXAoX0RhdGEsIF9DcHkuX0RhdGEp
Ow0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPGNsYXNzIF9S
YW5JdEhheXN0YWNrPg0KICAgIFtbbm9kaXNjYXJkXV0gcGFpcjxfUmFuSXRIYXlzdGFjaywgX1Jh
bkl0SGF5c3RhY2s+IG9wZXJhdG9yKCkoDQogICAgICAgIGNvbnN0IF9SYW5JdEhheXN0YWNrIF9G
aXJzdCwgY29uc3QgX1Jhbkl0SGF5c3RhY2sgX0xhc3QpIGNvbnN0IHsNCiAgICAgICAgDQogICAg
ICAgIHJldHVybiBfVHJhaXRzOjpfVXNlX2JveWVyX21vb3JlKF9EYXRhLCBfRmlyc3QsIF9MYXN0
KTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdXNpbmcgX1RyYWl0cyA9IF9Cb3llcl9tb29yZV90
cmFpdHM8X1Jhbkl0UGF0LCBfSGFzaF90eSwgX1ByZWRfZXE+Ow0KICAgIHZvaWQqIF9EYXRhOw0K
fTsNCg0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfUmFuSXRQYXQsIGNsYXNzIF9IYXNoX3R5ID0gaGFz
aDxfSXRlcl92YWx1ZV90PF9SYW5JdFBhdD4+LCBjbGFzcyBfUHJlZF9lcSA9IGVxdWFsX3RvPD4+
DQpjbGFzcyBib3llcl9tb29yZV9ob3JzcG9vbF9zZWFyY2hlciB7IA0KcHVibGljOg0KICAgIGJv
eWVyX21vb3JlX2hvcnNwb29sX3NlYXJjaGVyKA0KICAgICAgICBjb25zdCBfUmFuSXRQYXQgX0Zp
cnN0LCBjb25zdCBfUmFuSXRQYXQgX0xhc3QsIF9IYXNoX3R5IF9IYXNoX2ZuID0gX0hhc2hfdHko
KSwgX1ByZWRfZXEgX0VxID0gX1ByZWRfZXEoKSkNCiAgICAgICAgOiBfRGF0YShfVHJhaXRzOjp0
ZW1wbGF0ZSBfQnVpbGRfYm95ZXJfbW9vcmU8ZmFsc2U+KF9GaXJzdCwgX0xhc3QsIDo6c3RkOjog
bW92ZShfSGFzaF9mbiksIDo6c3RkOjogbW92ZShfRXEpKSkgew0KICAgICAgICANCiAgICB9DQoN
CiAgICBib3llcl9tb29yZV9ob3JzcG9vbF9zZWFyY2hlcihjb25zdCBib3llcl9tb29yZV9ob3Jz
cG9vbF9zZWFyY2hlciYgX090aGVyKSBub2V4Y2VwdCANCiAgICAgICAgOiBfRGF0YShfT3RoZXIu
X0RhdGEpIHsNCiAgICAgICAgX0ludGVybG9ja2VkSW5jcmVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8
dm9sYXRpbGUgbG9uZyo+KCYqc3RhdGljX2Nhc3Q8X0F0b21pY19jb3VudGVyX3QqPihfRGF0YSkp
KTsNCiAgICB9DQoNCiAgICB+Ym95ZXJfbW9vcmVfaG9yc3Bvb2xfc2VhcmNoZXIoKSBub2V4Y2Vw
dCB7DQogICAgICAgIGlmIChfSW50ZXJsb2NrZWREZWNyZW1lbnQocmVpbnRlcnByZXRfY2FzdDx2
b2xhdGlsZSBsb25nKj4oJipzdGF0aWNfY2FzdDxfQXRvbWljX2NvdW50ZXJfdCo+KF9EYXRhKSkp
ID09IDApIHsNCiAgICAgICAgICAgIF9UcmFpdHM6Ol9EZXN0cm95KF9EYXRhKTsNCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIGJveWVyX21vb3JlX2hvcnNwb29sX3NlYXJjaGVyJiBvcGVyYXRvcj0o
Y29uc3QgYm95ZXJfbW9vcmVfaG9yc3Bvb2xfc2VhcmNoZXImIF9PdGhlcikgbm9leGNlcHQgIHsN
CiAgICAgICAgYm95ZXJfbW9vcmVfaG9yc3Bvb2xfc2VhcmNoZXIgX0NweShfT3RoZXIpOw0KICAg
ICAgICBzd2FwKF9EYXRhLCBfQ3B5Ll9EYXRhKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlIDxjbGFzcyBfUmFuSXRIYXlzdGFjaz4NCiAgICBbW25vZGlzY2Fy
ZF1dIHBhaXI8X1Jhbkl0SGF5c3RhY2ssIF9SYW5JdEhheXN0YWNrPiBvcGVyYXRvcigpKA0KICAg
ICAgICBjb25zdCBfUmFuSXRIYXlzdGFjayBfRmlyc3QsIGNvbnN0IF9SYW5JdEhheXN0YWNrIF9M
YXN0KSBjb25zdCB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gX1RyYWl0czo6X1VzZV9ib3ll
cl9tb29yZV9ob3JzcG9vbChfRGF0YSwgX0ZpcnN0LCBfTGFzdCk7DQogICAgfQ0KDQpwcml2YXRl
Og0KICAgIHVzaW5nIF9UcmFpdHMgPSBfQm95ZXJfbW9vcmVfdHJhaXRzPF9SYW5JdFBhdCwgX0hh
c2hfdHksIF9QcmVkX2VxPjsNCiAgICB2b2lkKiBfRGF0YTsNCn07DQojbGluZSAyMjU2ICJDOlxc
UHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVy
cHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGZ1bmN0aW9uYWwi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjMzMSAiQzpcXFByb2dy
YW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNl
XFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxmdW5jdGlvbmFsIg0KDQp9
DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI3ByYWdtYSBwYWNrKHBvcCkNCiNsaW5lIDIz
MzkgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAx
OVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcZnVu
Y3Rpb25hbCINCiNsaW5lIDIzNDAgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQg
VmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4y
ODgwMVxcaW5jbHVkZVxcZnVuY3Rpb25hbCINCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCiNs
aW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRl
XFwxMC4wLjE5MDQxLjBcXHVjcnRcXG1hdGguaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWVk
aWFUaW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0pTT05WYWx1ZXMuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0hhc2guaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL3RleHQvQXRvbVN0cmluZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL05ldmVyRGVzdHJveWVkLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpz
dHJ1Y3QgQW55VGhyZWFkc0FjY2Vzc1RyYWl0cyB7DQogICAgc3RhdGljIHZvaWQgYXNzZXJ0QWNj
ZXNzKCkNCiAgICB7DQogICAgfQ0KfTsNCg0Kc3RydWN0IE1haW5UaHJlYWRBY2Nlc3NUcmFpdHMg
ew0KICAgIHN0YXRpYyB2b2lkIGFzc2VydEFjY2VzcygpDQogICAgew0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQWNjZXNzVHJh
aXRzPiBjbGFzcyBOZXZlckRlc3Ryb3llZCB7DQogICAgTmV2ZXJEZXN0cm95ZWQoY29uc3QgTmV2
ZXJEZXN0cm95ZWQmKSA9IGRlbGV0ZTsgTmV2ZXJEZXN0cm95ZWQmIG9wZXJhdG9yPShjb25zdCBO
ZXZlckRlc3Ryb3llZCYpID0gZGVsZXRlOzsNCiAgICBwcml2YXRlOiB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsgdm9p
ZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgPSBkZWxldGU7IHR5cGVkZWYg
aW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVhcEFsbG9j
YXRpb25NYWNybzsNCnB1YmxpYzoNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IE5l
dmVyRGVzdHJveWVkKEFyZ3MmJi4uLiBhcmdzKQ0KICAgIHsNCiAgICAgICAgQWNjZXNzVHJhaXRz
Ojphc3NlcnRBY2Nlc3MoKTsNCiAgICAgICAgTWF5YmVSZWxheDxUPihuZXcgKHN0b3JhZ2VQb2lu
dGVyKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7DQogICAgfQ0KDQogICAgTmV2
ZXJEZXN0cm95ZWQoTmV2ZXJEZXN0cm95ZWQmJiBvdGhlcikNCiAgICB7DQogICAgICAgIEFjY2Vz
c1RyYWl0czo6YXNzZXJ0QWNjZXNzKCk7DQogICAgICAgIE1heWJlUmVsYXg8VD4obmV3IChzdG9y
YWdlUG9pbnRlcigpKSBUKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oKm90aGVy
LnN0b3JhZ2VQb2ludGVyKCkpKSk7DQogICAgfQ0KDQogICAgb3BlcmF0b3IgVCYoKSB7IHJldHVy
biAqc3RvcmFnZVBvaW50ZXIoKTsgfQ0KICAgIFQmIGdldCgpIHsgcmV0dXJuICpzdG9yYWdlUG9p
bnRlcigpOyB9DQoNCiAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gc3RvcmFnZVBvaW50ZXIo
KTsgfQ0KDQogICAgb3BlcmF0b3IgY29uc3QgVCYoKSBjb25zdCB7IHJldHVybiAqc3RvcmFnZVBv
aW50ZXIoKTsgfQ0KICAgIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpzdG9yYWdlUG9p
bnRlcigpOyB9DQoNCiAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3Rv
cmFnZVBvaW50ZXIoKTsgfQ0KDQpwcml2YXRlOg0KICAgIHVzaW5nIFBvaW50ZXJUeXBlID0gdHlw
ZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUqOw0KDQogICAgUG9pbnRlclR5cGUgc3Rv
cmFnZVBvaW50ZXIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgQWNjZXNzVHJhaXRzOjphc3NlcnRB
Y2Nlc3MoKTsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVCo+KCZtX3N0b3JhZ2UpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBQdHJUeXBlLCBib29sIFNob3VsZFJlbGF4ID0gc3RkOjppc19iYXNlX29mPFJlZkNv
dW50ZWRCYXNlLCBQdHJUeXBlPjo6dmFsdWU+IHN0cnVjdCBNYXliZVJlbGF4IHsNCiAgICAgICAg
ZXhwbGljaXQgTWF5YmVSZWxheChQdHJUeXBlKikgeyB9DQogICAgfTsNCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBQdHJUeXBlPiBzdHJ1Y3QgTWF5YmVSZWxheDxQdHJUeXBlLCB0cnVlPiB7DQogICAg
ICAgIGV4cGxpY2l0IE1heWJlUmVsYXgoUHRyVHlwZSogcHRyKSB7IHB0ci0+cmVsYXhBZG9wdGlv
blJlcXVpcmVtZW50KCk7IH0NCiAgICB9Ow0KDQogICAgDQogICAgDQogICAgdHlwZW5hbWUgc3Rk
OjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+
Ojp0eXBlIG1fc3RvcmFnZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFj
Y2Vzc1RyYWl0cyA9IEFueVRocmVhZHNBY2Nlc3NUcmFpdHM+IE5ldmVyRGVzdHJveWVkPFQsIEFj
Y2Vzc1RyYWl0cz4gbWFrZU5ldmVyRGVzdHJveWVkKFQmJik7DQoNCg0KDQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vzc1RyYWl0cz4gY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVk
IHsNCiAgICBMYXp5TmV2ZXJEZXN0cm95ZWQoY29uc3QgTGF6eU5ldmVyRGVzdHJveWVkJikgPSBk
ZWxldGU7IExhenlOZXZlckRlc3Ryb3llZCYgb3BlcmF0b3I9KGNvbnN0IExhenlOZXZlckRlc3Ry
b3llZCYpID0gZGVsZXRlOzsNCiAgICBwcml2YXRlOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCopID0g
ZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgPSBkZWxldGU7IHR5cGVkZWYgaW50IF9fdGhp
c0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVhcEFsbG9jYXRpb25NYWNy
bzsNCnB1YmxpYzoNCiAgICBMYXp5TmV2ZXJEZXN0cm95ZWQoKSA9IGRlZmF1bHQ7DQoNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPg0KICAgIHZvaWQgY29uc3RydWN0KEFyZ3MmJi4uLiBh
cmdzKQ0KICAgIHsNCiAgICAgICAgQWNjZXNzVHJhaXRzOjphc3NlcnRBY2Nlc3MoKTsNCiAgICAg
ICAgY29uc3RydWN0V2l0aG91dEFjY2Vzc0NoZWNrKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4NCiAgICB2b2lkIGNv
bnN0cnVjdFdpdGhvdXRBY2Nlc3NDaGVjayhBcmdzJiYuLi4gYXJncykNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCg0KDQojbGluZSAxMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL05ldmVyRGVzdHJveWVkLmgiDQogICAgICAgIE1h
eWJlUmVsYXg8VD4obmV3IChzdG9yYWdlUG9pbnRlcldpdGhvdXRBY2Nlc3NDaGVjaygpKSBUKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOw0KICAgIH0NCg0KICAgIG9wZXJhdG9yIFQmKCkg
eyByZXR1cm4gKnN0b3JhZ2VQb2ludGVyKCk7IH0NCiAgICBUJiBnZXQoKSB7IHJldHVybiAqc3Rv
cmFnZVBvaW50ZXIoKTsgfQ0KDQogICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHN0b3JhZ2VQ
b2ludGVyKCk7IH0NCg0KICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3QgeyByZXR1cm4gKnN0
b3JhZ2VQb2ludGVyKCk7IH0NCiAgICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqc3Rv
cmFnZVBvaW50ZXIoKTsgfQ0KDQogICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuIHN0b3JhZ2VQb2ludGVyKCk7IH0NCg0KDQoNCiNsaW5lIDE0OCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTmV2ZXJEZXN0cm95ZWQu
aCINCg0KcHJpdmF0ZToNCiAgICB1c2luZyBQb2ludGVyVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PFQ+Ojp0eXBlKjsNCg0KICAgIFBvaW50ZXJUeXBlIHN0b3JhZ2VQb2ludGVyV2l0
aG91dEFjY2Vzc0NoZWNrKCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UG9pbnRlclR5cGU+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VCo+KCZtX3N0b3JhZ2UpKTsNCiAgICB9DQoNCiAgICBQb2ludGVyVHlwZSBzdG9yYWdlUG9pbnRl
cigpIGNvbnN0DQogICAgew0KICAgICAgICBBY2Nlc3NUcmFpdHM6OmFzc2VydEFjY2VzcygpOw0K
ICAgICAgICByZXR1cm4gc3RvcmFnZVBvaW50ZXJXaXRob3V0QWNjZXNzQ2hlY2soKTsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCBib29sIFNob3VsZFJlbGF4ID0gc3Rk
Ojppc19iYXNlX29mPFJlZkNvdW50ZWRCYXNlLCBQdHJUeXBlPjo6dmFsdWU+IHN0cnVjdCBNYXli
ZVJlbGF4IHsNCiAgICAgICAgZXhwbGljaXQgTWF5YmVSZWxheChQdHJUeXBlKikgeyB9DQogICAg
fTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPiBzdHJ1Y3QgTWF5YmVSZWxheDxQdHJU
eXBlLCB0cnVlPiB7DQogICAgICAgIGV4cGxpY2l0IE1heWJlUmVsYXgoUHRyVHlwZSogcHRyKSB7
IHB0ci0+cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7IH0NCiAgICB9Ow0KDQoNCg0KDQoNCiNs
aW5lIDE3NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvTmV2ZXJEZXN0cm95ZWQuaCINCg0KICAgIA0KICAgIA0KICAgIHR5cGVuYW1lIHN0
ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVl
Pjo6dHlwZSBtX3N0b3JhZ2U7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBB
Y2Nlc3NUcmFpdHM+IGlubGluZSBOZXZlckRlc3Ryb3llZDxULCBBY2Nlc3NUcmFpdHM+IG1ha2VO
ZXZlckRlc3Ryb3llZChUJiYgYXJndW1lbnQpDQp7DQogICAgcmV0dXJuIHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4oYXJndW1lbnQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pg0KdXNpbmcgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkID0gTmV2ZXJEZXN0cm95ZWQ8VCwgTWFp
blRocmVhZEFjY2Vzc1RyYWl0cz47DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQp1c2luZyBNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkID0gTGF6eU5ldmVyRGVzdHJveWVkPFQsIE1haW5UaHJl
YWRBY2Nlc3NUcmFpdHM+Ow0KDQp9IA0KDQp1c2luZyBXVEY6OkxhenlOZXZlckRlc3Ryb3llZDsN
CnVzaW5nIFdURjo6TmV2ZXJEZXN0cm95ZWQ7DQp1c2luZyBXVEY6Om1ha2VOZXZlckRlc3Ryb3ll
ZDsNCnVzaW5nIFdURjo6TWFpblRocmVhZE5ldmVyRGVzdHJveWVkOw0KdXNpbmcgV1RGOjpNYWlu
VGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkOw0KdXNpbmcgV1RGOjpBbnlUaHJlYWRzQWNjZXNzVHJh
aXRzOw0KdXNpbmcgV1RGOjpNYWluVGhyZWFkQWNjZXNzVHJhaXRzOw0KI2xpbmUgMjUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQv
QXRvbVN0cmluZy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90
ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91c3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dHlwZXMuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91bWFjaGluZS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wdHlwZXMuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZv
cm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFx1bmljb2RlL3Vjb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Vjb25maWcuaCIN
Cg0KI2xpbmUgNzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
dW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNv
bmZpZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTAgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNv
bmZpZy5oIg0KDQojbGluZSAxMTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDEzOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMTQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFx1bmljb2RlL3Vjb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTYgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVu
aWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE2NSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y29u
ZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTc0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Vjb25maWcuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCiNs
aW5lIDIwMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDIyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDIzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjU4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Vjb25maWcuaCINCg0K
DQoNCiNsaW5lIDI2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAyNzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KI2xpbmUgMjgyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1
bmljb2RlL3Vjb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyOTcg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MzEzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFx1bmljb2RlL3Vjb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMjUg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM0
MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNTAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNv
ZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzYwICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Vjb25m
aWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Vjb25maWcuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzODMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Vjb25maWcuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDQwMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA0MTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDIz
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFx1bmljb2RlL3Vjb25maWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQzMyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29k
ZS91Y29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NDMgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZp
Zy5oIg0KDQojbGluZSA0NDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNvbmZpZy5oIg0KI2xpbmUgMjUgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUv
cGxhdGZvcm0uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXZlcm51bS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXZl
cm51bS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dmVybnVtLmgiDQojbGluZSAxMTgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XHVuaWNvZGUvdXZlcm51bS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dmVybnVtLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMTgxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFx1bmljb2RlL3V2ZXJudW0uaCINCiNsaW5lIDI2ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRm
b3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoj
bGluZSAxNTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxOTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjggIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVu
aWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjQyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1
bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjU0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmlj
b2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2OCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5p
Y29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNzkgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUv
cGxhdGZvcm0uaCINCg0KI2xpbmUgMjgxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDI5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQojbGluZSAyOTQgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVu
aWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoNCg0K
DQojbGluZSAzMTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAz
MjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMz
MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCiNsaW5lIDMzNiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5o
Ig0KICAgIA0KDQojbGluZSAzMzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCiNs
aW5lIDM3MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQojbGluZSAzNzUgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZv
cm0uaCINCg0KI2xpbmUgMzc3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KI2xpbmUgMzgwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1
bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KI2xpbmUgMzgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoN
Cg0KI2xpbmUgMzg2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCiNsaW5lIDM4OCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9w
bGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzOTkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZv
cm0uaCINCg0KI2xpbmUgNDAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDQxNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KDQojbGluZSA0
MjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQojbGluZSA0MjYgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxh
dGZvcm0uaCINCg0KDQojbGluZSA0MjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQojbGluZSA0
MzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQojbGluZSA0MzUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0u
aCINCg0KDQojbGluZSA0MzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA0NDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KI2xpbmUgNDQ5ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRm
b3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCIN
Cg0KDQojbGluZSA0NjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDQ3OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KI2xp
bmUgNDg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQojbGluZSA0OTIgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNv
ZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUwNSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29k
ZS9wbGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUxNyAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9w
bGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgNTI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoN
CiNsaW5lIDUyNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KI2xpbmUgNTMwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2Rl
L3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTk2ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3Jt
LmgiDQoNCiNsaW5lIDU5OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQojbGluZSA2MDAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNv
ZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNjI2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCiNsaW5lIDYyOCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5p
Y29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA2NTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KI2xpbmUgNjUzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2Rl
L3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVu
aWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDcyMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KI2xpbmUgNzI1ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1
bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc1NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0K
I2xpbmUgNzU2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNzc4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNzkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDgwMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgx
MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCg0KDQogICAgDQoNCg0KDQojbGluZSA4MTkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVu
aWNvZGUvcGxhdGZvcm0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSA4NDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXHVuaWNvZGUvcGxhdGZvcm0uaCINCg0KI2xpbmUgODQyICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Bs
YXRmb3JtLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3BsYXRmb3JtLmgi
DQoNCiNsaW5lIDg1MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcdW5pY29kZS9wbGF0Zm9ybS5oIg0KDQoNCiNsaW5lIDg1NiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29k
ZS9wbGF0Zm9ybS5oIg0KI2xpbmUgNTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcHR5cGVzLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDc5ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3B0
eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXHVuaWNvZGUvcHR5cGVzLmgiDQoNCiNsaW5lIDEzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS9wdHlwZXMuaCINCiNs
aW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFx1bmljb2RlL3VtYWNoaW5lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4
NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcdW5pY29kZS91bWFjaGluZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDEwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcdW5pY29kZS91bWFjaGluZS5oIg0KDQoNCg0KI2xpbmUgMTA2ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3VtYWNo
aW5lLmgiDQojbGluZSAxMDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdW1hY2hpbmUuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdW1hY2hpbmUu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3VtYWNoaW5lLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTkwICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3Vt
YWNoaW5lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIx
MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcdW5pY29kZS91bWFjaGluZS5oIg0KDQoNCg0KI2xpbmUgMjE0ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3VtYWNoaW5l
LmgiDQoNCg0KDQojbGluZSAyMTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdW1hY2hpbmUuaCINCiNsaW5lIDIxOSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5p
Y29kZS91bWFjaGluZS5oIg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQ4X3QgVUJvb2w7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI2NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91bWFjaGluZS5oIg0KDQoNCg0K
I2xpbmUgMjcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFx1bmljb2RlL3VtYWNoaW5lLmgiDQoNCiNsaW5lIDI3MyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91bWFj
aGluZS5oIg0KDQojbGluZSAyNzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdW1hY2hpbmUuaCINCiNsaW5lIDI3NiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5p
Y29kZS91bWFjaGluZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjky
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFx1bmljb2RlL3VtYWNoaW5lLmgiDQoNCg0KDQojbGluZSAyOTYgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdW1hY2hpbmUu
aCINCg0KI2xpbmUgMjk4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3VtYWNoaW5lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgDQogICAg
DQoNCg0KI2xpbmUgMzMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3VtYWNoaW5lLmgiDQoNCg0KDQoNCiNsaW5lIDMzOCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
dW5pY29kZS91bWFjaGluZS5oIg0KICAgIHR5cGVkZWYgY2hhcjE2X3QgVUNoYXI7DQoNCg0KDQoN
CiNsaW5lIDM0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcdW5pY29kZS91bWFjaGluZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KICAgIHR5cGVkZWYgd2NoYXJfdCBPbGRVQ2hhcjsNCg0KDQoNCg0K
I2xpbmUgMzcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFx1bmljb2RlL3VtYWNoaW5lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIGludDMyX3QgVUNoYXIzMjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXJlbmFtZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTg2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91cmVuYW1lLmgiDQojbGluZSAxODYzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmlj
b2RlL3VyZW5hbWUuaCINCiNsaW5lIDE4NjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXJlbmFtZS5oIg0KDQojbGluZSA0
MTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXHVuaWNvZGUvdW1hY2hpbmUuaCINCg0KI2xpbmUgNDE0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3VtYWNoaW5lLmgi
DQojbGluZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcdW5pY29kZS91dHlwZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXZlcnNpb24u
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiB1aW50OF90IFVWZXJzaW9uSW5mb1s0XTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMTQgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXZlcnNp
b24uaCINCg0KICAgICAgICBuYW1lc3BhY2UgaWN1XzYzIHsgfQ0KICAgICAgICBuYW1lc3BhY2Ug
aWN1ID0gaWN1XzYzOw0KI2xpbmUgMTE4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V2ZXJzaW9uLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXZlcnNpb24uaCINCg0KI2xpbmUgMTMyICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmlj
b2RlL3V2ZXJzaW9uLmgiDQojbGluZSAxMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXZlcnNpb24uaCINCg0KDQojbGlu
ZSAxMzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXHVuaWNvZGUvdXZlcnNpb24uaCINCg0KDQoNCg0KDQojbGluZSAxNDIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUv
dXZlcnNpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBfX2NkZWNsDQp1X3ZlcnNpb25Gcm9tU3RyaW5nXzYz
KFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXksIGNvbnN0IGNoYXIgKnZlcnNpb25TdHJpbmcpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
dm9pZCBfX2NkZWNsDQp1X3ZlcnNpb25Gcm9tVVN0cmluZ182MyhVVmVyc2lvbkluZm8gdmVyc2lv
bkFycmF5LCBjb25zdCBVQ2hhciAqdmVyc2lvblN0cmluZyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBfX2NkZWNsDQp1
X3ZlcnNpb25Ub1N0cmluZ182Myhjb25zdCBVVmVyc2lvbkluZm8gdmVyc2lvbkFycmF5LCBjaGFy
ICp2ZXJzaW9uU3RyaW5nKTsNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHZvaWQgX19jZGVjbA0KdV9nZXRWZXJzaW9uXzYzKFVWZXJzaW9uSW5mbyB2
ZXJzaW9uQXJyYXkpOw0KI2xpbmUgMjAyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V2ZXJzaW9uLmgiDQojbGluZSA0MCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
dW5pY29kZS91dHlwZXMuaCINCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dGYuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V0ZjguaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIz
MiBfX2NkZWNsDQp1dGY4X25leHRDaGFyU2FmZUJvZHlfNjMoY29uc3QgdWludDhfdCAqcywgaW50
MzJfdCAqcGksIGludDMyX3QgbGVuZ3RoLCBVQ2hhcjMyIGMsIFVCb29sIHN0cmljdCk7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGludDMyX3Qg
X19jZGVjbA0KdXRmOF9hcHBlbmRDaGFyU2FmZUJvZHlfNjModWludDhfdCAqcywgaW50MzJfdCBp
LCBpbnQzMl90IGxlbmd0aCwgVUNoYXIzMiBjLCBVQm9vbCAqcElzRXJyb3IpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhcjMyIF9fY2Rl
Y2wNCnV0ZjhfcHJldkNoYXJTYWZlQm9keV82Myhjb25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0
YXJ0LCBpbnQzMl90ICpwaSwgVUNoYXIzMiBjLCBVQm9vbCBzdHJpY3QpOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2RlY2wN
CnV0ZjhfYmFjazFTYWZlQm9keV82Myhjb25zdCB1aW50OF90ICpzLCBpbnQzMl90IHN0YXJ0LCBp
bnQzMl90IGkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2Rl
L3V0ZjguaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
ODgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFx1bmljb2RlL3V0ZjguaCINCiNsaW5lIDIxOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dGYuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XHVuaWNvZGUvdXRmMTYuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDczNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcdW5pY29kZS91dGYxNi5oIg0KI2xpbmUgMjE5ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V0Zi5oIg0K
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXRmX29sZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxNjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXRmX29sZC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEyMDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXRmX29sZC5oIg0KDQojbGluZSAxMjA1
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFx1bmljb2RlL3V0Zl9vbGQuaCINCiNsaW5lIDIyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dGYuaCINCg0KI2xpbmUg
MjI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFx1bmljb2RlL3V0Zi5oIg0KDQojbGluZSAyMjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXRmLmgiDQojbGluZSA0
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcdW5pY29kZS91dHlwZXMuaCINCiNsaW5lIDQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V0eXBlcy5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2Rl
L3V0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNv
ZGUvdXR5cGVzLmgiDQoNCg0KI2xpbmUgODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxMjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQoNCg0KDQoNCiNsaW5lIDEyOCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91
dHlwZXMuaCINCiAgICAgIA0KDQoNCiNsaW5lIDEzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dHlwZXMuaCINCiNsaW5l
IDEzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcdW5pY29kZS91dHlwZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ0ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1
bmljb2RlL3V0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQojbGlu
ZSAxNzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQojbGluZSAxNzggIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYg
ZG91YmxlIFVEYXRlOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAz
MDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMxNSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91
dHlwZXMuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzIzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V0eXBlcy5oIg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDMzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcdW5pY29kZS91dHlwZXMuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzQ3ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmlj
b2RlL3V0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNTUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgi
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM2MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91dHlwZXMuaCINCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMzcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFx1bmljb2RlL3V0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAzODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXHVuaWNvZGUvdXR5cGVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCnR5cGVkZWYgZW51bSBVRXJyb3JDb2RlIHsNCiAgICANCg0KDQoNCg0KICAgIFVfVVNJ
TkdfRkFMTEJBQ0tfV0FSTklORyAgPSAtMTI4LCAgIA0KDQogICAgVV9FUlJPUl9XQVJOSU5HX1NU
QVJUICAgICA9IC0xMjgsICAgDQoNCiAgICBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyAgID0gLTEy
NywgICANCg0KICAgIFVfU0FGRUNMT05FX0FMTE9DQVRFRF9XQVJOSU5HID0gLTEyNiwgDQoNCiAg
ICBVX1NUQVRFX09MRF9XQVJOSU5HICAgICAgID0gLTEyNSwgICANCg0KICAgIFVfU1RSSU5HX05P
VF9URVJNSU5BVEVEX1dBUk5JTkcgPSAtMTI0LA0KDQogICAgVV9TT1JUX0tFWV9UT09fU0hPUlRf
V0FSTklORyA9IC0xMjMsIA0KDQogICAgVV9BTUJJR1VPVVNfQUxJQVNfV0FSTklORyA9IC0xMjIs
ICAgDQoNCiAgICBVX0RJRkZFUkVOVF9VQ0FfVkVSU0lPTiA9IC0xMjEsICAgICANCiAgICANCiAg
ICBVX1BMVUdJTl9DSEFOR0VEX0xFVkVMX1dBUk5JTkcgPSAtMTIwLCANCg0KDQoNCg0KDQoNCg0K
DQoNCiAgICBVX1pFUk9fRVJST1IgICAgICAgICAgICAgID0gIDAsICAgICANCg0KICAgIFVfSUxM
RUdBTF9BUkdVTUVOVF9FUlJPUiAgPSAgMSwgICAgIA0KICAgIFVfTUlTU0lOR19SRVNPVVJDRV9F
UlJPUiAgPSAgMiwgICAgIA0KICAgIFVfSU5WQUxJRF9GT1JNQVRfRVJST1IgICAgPSAgMywgICAg
IA0KICAgIFVfRklMRV9BQ0NFU1NfRVJST1IgICAgICAgPSAgNCwgICAgIA0KICAgIFVfSU5URVJO
QUxfUFJPR1JBTV9FUlJPUiAgPSAgNSwgICAgIA0KICAgIFVfTUVTU0FHRV9QQVJTRV9FUlJPUiAg
ICAgPSAgNiwgICAgIA0KICAgIFVfTUVNT1JZX0FMTE9DQVRJT05fRVJST1IgPSAgNywgICAgIA0K
ICAgIFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1IgPSAgOCwgICAgIA0KICAgIFVfUEFSU0VfRVJS
T1IgICAgICAgICAgICAgPSAgOSwgICAgIA0KICAgIFVfSU5WQUxJRF9DSEFSX0ZPVU5EICAgICAg
PSAxMCwgICAgIA0KICAgIFVfVFJVTkNBVEVEX0NIQVJfRk9VTkQgICAgPSAxMSwgICAgIA0KICAg
IFVfSUxMRUdBTF9DSEFSX0ZPVU5EICAgICAgPSAxMiwgICAgIA0KICAgIFVfSU5WQUxJRF9UQUJM
RV9GT1JNQVQgICAgPSAxMywgICAgIA0KICAgIFVfSU5WQUxJRF9UQUJMRV9GSUxFICAgICAgPSAx
NCwgICAgIA0KICAgIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SICAgPSAxNSwgICAgIA0KICAgIFVf
VU5TVVBQT1JURURfRVJST1IgICAgICAgPSAxNiwgICAgIA0KICAgIFVfUkVTT1VSQ0VfVFlQRV9N
SVNNQVRDSCAgPSAxNywgICAgIA0KICAgIFVfSUxMRUdBTF9FU0NBUEVfU0VRVUVOQ0UgPSAxOCwg
ICAgIA0KICAgIFVfVU5TVVBQT1JURURfRVNDQVBFX1NFUVVFTkNFID0gMTksIA0KICAgIFVfTk9f
U1BBQ0VfQVZBSUxBQkxFICAgICAgPSAyMCwgICAgIA0KICAgIFVfQ0VfTk9UX0ZPVU5EX0VSUk9S
ICAgICAgPSAyMSwgICAgIA0KICAgIFVfUFJJTUFSWV9UT09fTE9OR19FUlJPUiAgPSAyMiwgICAg
IA0KICAgIFVfU1RBVEVfVE9PX09MRF9FUlJPUiAgICAgPSAyMywgICAgIA0KICAgIFVfVE9PX01B
TllfQUxJQVNFU19FUlJPUiAgPSAyNCwgICAgIA0KDQogICAgVV9FTlVNX09VVF9PRl9TWU5DX0VS
Uk9SICA9IDI1LCAgICAgDQogICAgVV9JTlZBUklBTlRfQ09OVkVSU0lPTl9FUlJPUiA9IDI2LCAg
DQogICAgVV9JTlZBTElEX1NUQVRFX0VSUk9SICAgICA9IDI3LCAgICAgDQogICAgVV9DT0xMQVRP
Ul9WRVJTSU9OX01JU01BVENIID0gMjgsICAgDQogICAgVV9VU0VMRVNTX0NPTExBVE9SX0VSUk9S
ICA9IDI5LCAgICAgDQogICAgVV9OT19XUklURV9QRVJNSVNTSU9OICAgICA9IDMwLCAgICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQogICAgDQoNCg0KICAgIFVfQkFEX1ZBUklBQkxFX0RFRklOSVRJT049
MHgxMDAwMCwNCiAgICBVX1BBUlNFX0VSUk9SX1NUQVJUID0gMHgxMDAwMCwgICAgDQogICAgVV9N
QUxGT1JNRURfUlVMRSwgICAgICAgICAgICAgICAgIA0KICAgIFVfTUFMRk9STUVEX1NFVCwgICAg
ICAgICAgICAgICAgICANCiAgICBVX01BTEZPUk1FRF9TWU1CT0xfUkVGRVJFTkNFLCAgICAgDQog
ICAgVV9NQUxGT1JNRURfVU5JQ09ERV9FU0NBUEUsICAgICAgIA0KICAgIFVfTUFMRk9STUVEX1ZB
UklBQkxFX0RFRklOSVRJT04sICANCiAgICBVX01BTEZPUk1FRF9WQVJJQUJMRV9SRUZFUkVOQ0Us
ICAgDQogICAgVV9NSVNNQVRDSEVEX1NFR01FTlRfREVMSU1JVEVSUywgIA0KICAgIFVfTUlTUExB
Q0VEX0FOQ0hPUl9TVEFSVCwgICAgICAgICANCiAgICBVX01JU1BMQUNFRF9DVVJTT1JfT0ZGU0VU
LCAgICAgICAgDQogICAgVV9NSVNQTEFDRURfUVVBTlRJRklFUiwgICAgICAgICAgIA0KICAgIFVf
TUlTU0lOR19PUEVSQVRPUiwgICAgICAgICAgICAgICANCiAgICBVX01JU1NJTkdfU0VHTUVOVF9D
TE9TRSwgICAgICAgICAgDQogICAgVV9NVUxUSVBMRV9BTlRFX0NPTlRFWFRTLCAgICAgICAgIA0K
ICAgIFVfTVVMVElQTEVfQ1VSU09SUywgICAgICAgICAgICAgICANCiAgICBVX01VTFRJUExFX1BP
U1RfQ09OVEVYVFMsICAgICAgICAgDQogICAgVV9UUkFJTElOR19CQUNLU0xBU0gsICAgICAgICAg
ICAgIA0KICAgIFVfVU5ERUZJTkVEX1NFR01FTlRfUkVGRVJFTkNFLCAgICANCiAgICBVX1VOREVG
SU5FRF9WQVJJQUJMRSwgICAgICAgICAgICAgDQogICAgVV9VTlFVT1RFRF9TUEVDSUFMLCAgICAg
ICAgICAgICAgIA0KICAgIFVfVU5URVJNSU5BVEVEX1FVT1RFLCAgICAgICAgICAgICANCiAgICBV
X1JVTEVfTUFTS19FUlJPUiwgICAgICAgICAgICAgICAgDQogICAgVV9NSVNQTEFDRURfQ09NUE9V
TkRfRklMVEVSLCAgICAgIA0KICAgIFVfTVVMVElQTEVfQ09NUE9VTkRfRklMVEVSUywgICAgICAN
CiAgICBVX0lOVkFMSURfUkJUX1NZTlRBWCwgICAgICAgICAgICAgDQogICAgVV9JTlZBTElEX1BS
T1BFUlRZX1BBVFRFUk4sICAgICAgIA0KICAgIFVfTUFMRk9STUVEX1BSQUdNQSwgICAgICAgICAg
ICAgICANCiAgICBVX1VOQ0xPU0VEX1NFR01FTlQsICAgICAgICAgICAgICAgDQogICAgVV9JTExF
R0FMX0NIQVJfSU5fU0VHTUVOVCwgICAgICAgIA0KICAgIFVfVkFSSUFCTEVfUkFOR0VfRVhIQVVT
VEVELCAgICAgICANCiAgICBVX1ZBUklBQkxFX1JBTkdFX09WRVJMQVAsICAgICAgICAgDQogICAg
VV9JTExFR0FMX0NIQVJBQ1RFUiwgICAgICAgICAgICAgIA0KICAgIFVfSU5URVJOQUxfVFJBTlNM
SVRFUkFUT1JfRVJST1IsICANCiAgICBVX0lOVkFMSURfSUQsICAgICAgICAgICAgICAgICAgICAg
DQogICAgVV9JTlZBTElEX0ZVTkNUSU9OLCAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoN
CiAgICANCg0KDQogICAgVV9VTkVYUEVDVEVEX1RPS0VOPTB4MTAxMDAsICAgICAgIA0KICAgIFVf
Rk1UX1BBUlNFX0VSUk9SX1NUQVJUPTB4MTAxMDAsICANCiAgICBVX01VTFRJUExFX0RFQ0lNQUxf
U0VQQVJBVE9SUywgICAgDQogICAgVV9NVUxUSVBMRV9ERUNJTUFMX1NFUEVSQVRPUlMgPSBVX01V
TFRJUExFX0RFQ0lNQUxfU0VQQVJBVE9SUywgDQogICAgVV9NVUxUSVBMRV9FWFBPTkVOVElBTF9T
WU1CT0xTLCAgIA0KICAgIFVfTUFMRk9STUVEX0VYUE9ORU5USUFMX1BBVFRFUk4sICANCiAgICBV
X01VTFRJUExFX1BFUkNFTlRfU1lNQk9MUywgICAgICAgDQogICAgVV9NVUxUSVBMRV9QRVJNSUxM
X1NZTUJPTFMsICAgICAgIA0KICAgIFVfTVVMVElQTEVfUEFEX1NQRUNJRklFUlMsICAgICAgICAN
CiAgICBVX1BBVFRFUk5fU1lOVEFYX0VSUk9SLCAgICAgICAgICAgDQogICAgVV9JTExFR0FMX1BB
RF9QT1NJVElPTiwgICAgICAgICAgIA0KICAgIFVfVU5NQVRDSEVEX0JSQUNFUywgICAgICAgICAg
ICAgICANCiAgICBVX1VOU1VQUE9SVEVEX1BST1BFUlRZLCAgICAgICAgICAgDQogICAgVV9VTlNV
UFBPUlRFRF9BVFRSSUJVVEUsICAgICAgICAgIA0KICAgIFVfQVJHVU1FTlRfVFlQRV9NSVNNQVRD
SCwgICAgICAgICANCiAgICBVX0RVUExJQ0FURV9LRVlXT1JELCAgICAgICAgICAgICAgDQogICAg
VV9VTkRFRklORURfS0VZV09SRCwgICAgICAgICAgICAgIA0KICAgIFVfREVGQVVMVF9LRVlXT1JE
X01JU1NJTkcsICAgICAgICANCiAgICBVX0RFQ0lNQUxfTlVNQkVSX1NZTlRBWF9FUlJPUiwgICAg
DQogICAgVV9GT1JNQVRfSU5FWEFDVF9FUlJPUiwgICAgICAgICAgIA0KDQogICAgVV9OVU1CRVJf
QVJHX09VVE9GQk9VTkRTX0VSUk9SLCAgIA0KI2xpbmUgNTUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V0eXBlcy5oIg0K
DQogICAgVV9OVU1CRVJfU0tFTEVUT05fU1lOVEFYX0VSUk9SLCAgIA0KI2xpbmUgNTUzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmlj
b2RlL3V0eXBlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQogICAgVV9CUktfSU5URVJO
QUxfRVJST1I9MHgxMDIwMCwgICAgICAgICAgDQogICAgVV9CUktfRVJST1JfU1RBUlQ9MHgxMDIw
MCwgICAgICAgICAgICAgDQogICAgVV9CUktfSEVYX0RJR0lUU19FWFBFQ1RFRCwgICAgICAgICAg
ICAgDQogICAgVV9CUktfU0VNSUNPTE9OX0VYUEVDVEVELCAgICAgICAgICAgICAgDQogICAgVV9C
UktfUlVMRV9TWU5UQVgsICAgICAgICAgICAgICAgICAgICAgDQogICAgVV9CUktfVU5DTE9TRURf
U0VULCAgICAgICAgICAgICAgICAgICAgDQogICAgVV9CUktfQVNTSUdOX0VSUk9SLCAgICAgICAg
ICAgICAgICAgICAgDQogICAgVV9CUktfVkFSSUFCTEVfUkVERklOSVRJT04sICAgICAgICAgICAg
DQogICAgVV9CUktfTUlTTUFUQ0hFRF9QQVJFTiwgICAgICAgICAgICAgICAgDQogICAgVV9CUktf
TkVXX0xJTkVfSU5fUVVPVEVEX1NUUklORywgICAgICAgDQogICAgVV9CUktfVU5ERUZJTkVEX1ZB
UklBQkxFLCAgICAgICAgICAgICAgDQogICAgVV9CUktfSU5JVF9FUlJPUiwgICAgICAgICAgICAg
ICAgICAgICAgDQogICAgVV9CUktfUlVMRV9FTVBUWV9TRVQsICAgICAgICAgICAgICAgICAgDQog
ICAgVV9CUktfVU5SRUNPR05JWkVEX09QVElPTiwgICAgICAgICAgICAgDQogICAgVV9CUktfTUFM
Rk9STUVEX1JVTEVfVEFHLCAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoN
CiAgICBVX1JFR0VYX0lOVEVSTkFMX0VSUk9SPTB4MTAzMDAsICAgICAgIA0KICAgIFVfUkVHRVhf
RVJST1JfU1RBUlQ9MHgxMDMwMCwgICAgICAgICAgDQogICAgVV9SRUdFWF9SVUxFX1NZTlRBWCwg
ICAgICAgICAgICAgICAgICANCiAgICBVX1JFR0VYX0lOVkFMSURfU1RBVEUsICAgICAgICAgICAg
ICAgIA0KICAgIFVfUkVHRVhfQkFEX0VTQ0FQRV9TRVFVRU5DRSwgICAgICAgICAgDQogICAgVV9S
RUdFWF9QUk9QRVJUWV9TWU5UQVgsICAgICAgICAgICAgICANCiAgICBVX1JFR0VYX1VOSU1QTEVN
RU5URUQsICAgICAgICAgICAgICAgIA0KICAgIFVfUkVHRVhfTUlTTUFUQ0hFRF9QQVJFTiwgICAg
ICAgICAgICAgDQogICAgVV9SRUdFWF9OVU1CRVJfVE9PX0JJRywgICAgICAgICAgICAgICANCiAg
ICBVX1JFR0VYX0JBRF9JTlRFUlZBTCwgICAgICAgICAgICAgICAgIA0KICAgIFVfUkVHRVhfTUFY
X0xUX01JTiwgICAgICAgICAgICAgICAgICAgDQogICAgVV9SRUdFWF9JTlZBTElEX0JBQ0tfUkVG
LCAgICAgICAgICAgICANCiAgICBVX1JFR0VYX0lOVkFMSURfRkxBRywgICAgICAgICAgICAgICAg
IA0KICAgIFVfUkVHRVhfTE9PS19CRUhJTkRfTElNSVQsICAgICAgICAgICAgDQogICAgVV9SRUdF
WF9TRVRfQ09OVEFJTlNfU1RSSU5HLCAgICAgICAgICANCg0KDQoNCiAgICBVX1JFR0VYX01JU1NJ
TkdfQ0xPU0VfQlJBQ0tFVD1VX1JFR0VYX1NFVF9DT05UQUlOU19TVFJJTkcrMiwgDQogICAgVV9S
RUdFWF9JTlZBTElEX1JBTkdFLCAgICAgICAgICAgICAgICANCiAgICBVX1JFR0VYX1NUQUNLX09W
RVJGTE9XLCAgICAgICAgICAgICAgIA0KICAgIFVfUkVHRVhfVElNRV9PVVQsICAgICAgICAgICAg
ICAgICAgICAgDQogICAgVV9SRUdFWF9TVE9QUEVEX0JZX0NBTExFUiwgICAgICAgICAgICANCiAg
ICBVX1JFR0VYX1BBVFRFUk5fVE9PX0JJRywgICAgICAgICAgICAgIA0KICAgIFVfUkVHRVhfSU5W
QUxJRF9DQVBUVVJFX0dST1VQX05BTUUsICAgDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCiAg
ICBVX0lETkFfUFJPSElCSVRFRF9FUlJPUj0weDEwNDAwLA0KICAgIFVfSUROQV9FUlJPUl9TVEFS
VD0weDEwNDAwLA0KICAgIFVfSUROQV9VTkFTU0lHTkVEX0VSUk9SLA0KICAgIFVfSUROQV9DSEVD
S19CSURJX0VSUk9SLA0KICAgIFVfSUROQV9TVEQzX0FTQ0lJX1JVTEVTX0VSUk9SLA0KICAgIFVf
SUROQV9BQ0VfUFJFRklYX0VSUk9SLA0KICAgIFVfSUROQV9WRVJJRklDQVRJT05fRVJST1IsDQog
ICAgVV9JRE5BX0xBQkVMX1RPT19MT05HX0VSUk9SLA0KICAgIFVfSUROQV9aRVJPX0xFTkdUSF9M
QUJFTF9FUlJPUiwNCiAgICBVX0lETkFfRE9NQUlOX05BTUVfVE9PX0xPTkdfRVJST1IsDQoNCg0K
DQoNCg0KDQoNCiAgICANCg0KDQogICAgVV9TVFJJTkdQUkVQX1BST0hJQklURURfRVJST1IgPSBV
X0lETkFfUFJPSElCSVRFRF9FUlJPUiwNCiAgICBVX1NUUklOR1BSRVBfVU5BU1NJR05FRF9FUlJP
UiA9IFVfSUROQV9VTkFTU0lHTkVEX0VSUk9SLA0KICAgIFVfU1RSSU5HUFJFUF9DSEVDS19CSURJ
X0VSUk9SID0gVV9JRE5BX0NIRUNLX0JJRElfRVJST1IsDQogICAgDQogICAgDQoNCg0KICAgIFVf
UExVR0lOX0VSUk9SX1NUQVJUPTB4MTA1MDAsICAgICAgICAgDQogICAgVV9QTFVHSU5fVE9PX0hJ
R0g9MHgxMDUwMCwgICAgICAgICAgICANCiAgICBVX1BMVUdJTl9ESUROVF9TRVRfTEVWRUwsICAg
ICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KfSBVRXJyb3JDb2RlOw0K
DQoNCg0KDQoNCiAgICANCg0KDQoNCiAgICBzdGF0aWMNCiAgICBpbmxpbmUgVUJvb2wgVV9TVUND
RVNTKFVFcnJvckNvZGUgY29kZSkgeyByZXR1cm4gKFVCb29sKShjb2RlPD1VX1pFUk9fRVJST1Ip
OyB9DQogICAgDQoNCg0KDQogICAgc3RhdGljDQogICAgaW5saW5lIFVCb29sIFVfRkFJTFVSRShV
RXJyb3JDb2RlIGNvZGUpIHsgcmV0dXJuIChVQm9vbCkoY29kZT5VX1pFUk9fRVJST1IpOyB9DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3V0eXBlcy5oIg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCBjaGFyICogX19j
ZGVjbA0KdV9lcnJvck5hbWVfNjMoVUVycm9yQ29kZSBjb2RlKTsNCg0KDQojbGluZSA3MTMgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVu
aWNvZGUvdXR5cGVzLmgiDQojbGluZSAyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91c3RyaW5nLmgiDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1
bmljb2RlL3B1dGlsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxleHBvcnQpIGNvbnN0IGNoYXIqIF9fY2RlY2wgdV9nZXREYXRhRGlyZWN0b3J5XzYz
KHZvaWQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBfX2NkZWNsIHVfc2V0RGF0YURpcmVjdG9y
eV82Myhjb25zdCBjaGFyICpkaXJlY3RvcnkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KIA0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgY2hhciAqIF9fY2RlY2wgdV9nZXRUaW1l
Wm9uZUZpbGVzRGlyZWN0b3J5XzYzKFVFcnJvckNvZGUgKnN0YXR1cyk7DQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIF9fY2RlY2wgdV9zZXRU
aW1lWm9uZUZpbGVzRGlyZWN0b3J5XzYzKGNvbnN0IGNoYXIgKnBhdGgsIFVFcnJvckNvZGUgKnN0
YXR1cyk7DQojbGluZSAxMTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcHV0aWwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3B1dGlsLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSB2b2lkIF9fY2RlY2wNCnVfY2hhcnNUb1VDaGFyc182Myhjb25zdCBjaGFy
ICpjcywgVUNoYXIgKnVzLCBpbnQzMl90IGxlbmd0aCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBf
X2NkZWNsDQp1X1VDaGFyc1RvQ2hhcnNfNjMoY29uc3QgVUNoYXIgKnVzLCBjaGFyICpjcywgaW50
MzJfdCBsZW5ndGgpOw0KDQojbGluZSAxODQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvcHV0aWwuaCINCiNsaW5lIDIzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1
bmljb2RlL3VzdHJpbmcuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWl0ZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWl0ZXIuaCINCg0KZXh0ZXJuICJDIiB7DQoNCnN0cnVj
dCBVQ2hhckl0ZXJhdG9yOw0KdHlwZWRlZiBzdHJ1Y3QgVUNoYXJJdGVyYXRvciBVQ2hhckl0ZXJh
dG9yOyANCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVDaGFySXRlcmF0b3JPcmlnaW4gew0K
ICAgIFVJVEVSX1NUQVJULCBVSVRFUl9DVVJSRU5ULCBVSVRFUl9MSU1JVCwgVUlURVJfWkVSTywg
VUlURVJfTEVOR1RIDQp9IFVDaGFySXRlcmF0b3JPcmlnaW47DQoNCg0KZW51bSB7DQogICAgDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICBVSVRFUl9VTktOT1dOX0lOREVYPS0yDQp9Ow0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBpbnQzMl90IF9fY2RlY2wNClVDaGFySXRlcmF0b3JHZXRJbmRleChV
Q2hhckl0ZXJhdG9yICppdGVyLCBVQ2hhckl0ZXJhdG9yT3JpZ2luIG9yaWdpbik7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KdHlwZWRlZiBpbnQzMl90IF9fY2RlY2wNClVDaGFySXRlcmF0b3JNb3ZlKFVDaGFySXRl
cmF0b3IgKml0ZXIsIGludDMyX3QgZGVsdGEsIFVDaGFySXRlcmF0b3JPcmlnaW4gb3JpZ2luKTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBVQm9vbCBfX2NkZWNsDQpVQ2hhckl0
ZXJhdG9ySGFzTmV4dChVQ2hhckl0ZXJhdG9yICppdGVyKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnR5cGVkZWYgVUJvb2wgX19jZGVjbA0KVUNoYXJJdGVyYXRvckhhc1ByZXZpb3VzKFVDaGFy
SXRlcmF0b3IgKml0ZXIpOw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBVQ2hh
cjMyIF9fY2RlY2wNClVDaGFySXRlcmF0b3JDdXJyZW50KFVDaGFySXRlcmF0b3IgKml0ZXIpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUNoYXIzMiBfX2NkZWNsDQpVQ2hh
ckl0ZXJhdG9yTmV4dChVQ2hhckl0ZXJhdG9yICppdGVyKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQp0eXBlZGVmIFVDaGFyMzIgX19jZGVjbA0KVUNoYXJJdGVyYXRvclByZXZpb3VzKFVD
aGFySXRlcmF0b3IgKml0ZXIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBpbnQz
Ml90IF9fY2RlY2wNClVDaGFySXRlcmF0b3JSZXNlcnZlZChVQ2hhckl0ZXJhdG9yICppdGVyLCBp
bnQzMl90IHNvbWV0aGluZyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIHVpbnQzMl90IF9fY2RlY2wNClVDaGFySXRlcmF0b3JHZXRTdGF0ZShjb25zdCBVQ2hhckl0
ZXJhdG9yICppdGVyKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIHZvaWQgX19jZGVjbA0KVUNoYXJJdGVyYXRvclNldFN0YXRlKFVD
aGFySXRlcmF0b3IgKml0ZXIsIHVpbnQzMl90IHN0YXRlLCBVRXJyb3JDb2RlICpwRXJyb3JDb2Rl
KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0Kc3RydWN0IFVDaGFySXRlcmF0b3Igew0KICAgIA0KDQoNCg0KDQogICAgY29uc3Qg
dm9pZCAqY29udGV4dDsNCg0KICAgIA0KDQoNCg0KDQogICAgaW50MzJfdCBsZW5ndGg7DQoNCiAg
ICANCg0KDQoNCg0KICAgIGludDMyX3Qgc3RhcnQ7DQoNCiAgICANCg0KDQoNCg0KICAgIGludDMy
X3QgaW5kZXg7DQoNCiAgICANCg0KDQoNCg0KICAgIGludDMyX3QgbGltaXQ7DQoNCiAgICANCg0K
DQoNCiAgICBpbnQzMl90IHJlc2VydmVkRmllbGQ7DQoNCiAgICANCg0KDQoNCg0KDQoNCiAgICBV
Q2hhckl0ZXJhdG9yR2V0SW5kZXggKmdldEluZGV4Ow0KDQogICAgDQoNCg0KDQoNCg0KDQoNCg0K
ICAgIFVDaGFySXRlcmF0b3JNb3ZlICptb3ZlOw0KDQogICAgDQoNCg0KDQoNCg0KDQogICAgVUNo
YXJJdGVyYXRvckhhc05leHQgKmhhc05leHQ7DQoNCiAgICANCg0KDQoNCg0KDQogICAgVUNoYXJJ
dGVyYXRvckhhc1ByZXZpb3VzICpoYXNQcmV2aW91czsNCg0KICAgIA0KDQoNCg0KDQoNCg0KICAg
IFVDaGFySXRlcmF0b3JDdXJyZW50ICpjdXJyZW50Ow0KDQogICAgDQoNCg0KDQoNCg0KDQoNCiAg
ICBVQ2hhckl0ZXJhdG9yTmV4dCAqbmV4dDsNCg0KICAgIA0KDQoNCg0KDQoNCg0KDQogICAgVUNo
YXJJdGVyYXRvclByZXZpb3VzICpwcmV2aW91czsNCg0KICAgIA0KDQoNCg0KDQoNCiAgICBVQ2hh
ckl0ZXJhdG9yUmVzZXJ2ZWQgKnJlc2VydmVkRm47DQoNCiAgICANCg0KDQoNCg0KDQoNCiAgICBV
Q2hhckl0ZXJhdG9yR2V0U3RhdGUgKmdldFN0YXRlOw0KDQogICAgDQoNCg0KDQoNCg0KDQoNCiAg
ICBVQ2hhckl0ZXJhdG9yU2V0U3RhdGUgKnNldFN0YXRlOw0KfTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNo
YXIzMiBfX2NkZWNsDQp1aXRlcl9jdXJyZW50MzJfNjMoVUNoYXJJdGVyYXRvciAqaXRlcik7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBVQ2hhcjMyIF9fY2RlY2wNCnVpdGVyX25leHQzMl82MyhVQ2hhckl0ZXJhdG9yICppdGVy
KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxleHBvcnQpIFVDaGFyMzIgX19jZGVjbA0KdWl0ZXJfcHJldmlvdXMzMl82MyhVQ2hhckl0ZXJh
dG9yICppdGVyKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdWludDMyX3QgX19jZGVjbA0KdWl0ZXJfZ2V0U3Rh
dGVfNjMoY29uc3QgVUNoYXJJdGVyYXRvciAqaXRlcik7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgX19jZGVjbA0K
dWl0ZXJfc2V0U3RhdGVfNjMoVUNoYXJJdGVyYXRvciAqaXRlciwgdWludDMyX3Qgc3RhdGUsIFVF
cnJvckNvZGUgKnBFcnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgX19jZGVj
bA0KdWl0ZXJfc2V0U3RyaW5nXzYzKFVDaGFySXRlcmF0b3IgKml0ZXIsIGNvbnN0IFVDaGFyICpz
LCBpbnQzMl90IGxlbmd0aCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIF9fY2RlY2wNCnVpdGVy
X3NldFVURjE2QkVfNjMoVUNoYXJJdGVyYXRvciAqaXRlciwgY29uc3QgY2hhciAqcywgaW50MzJf
dCBsZW5ndGgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2
b2lkIF9fY2RlY2wNCnVpdGVyX3NldFVURjhfNjMoVUNoYXJJdGVyYXRvciAqaXRlciwgY29uc3Qg
Y2hhciAqcywgaW50MzJfdCBsZW5ndGgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgNzA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFx1bmljb2RlL3VpdGVyLmgiDQoNCn0NCg0KI2xpbmUg
NzEwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFx1bmljb2RlL3VpdGVyLmgiDQojbGluZSAyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91c3RyaW5nLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQogICAgdHlwZWRlZiBzdHJ1Y3QgVUJyZWFrSXRlcmF0b3IgVUJyZWFrSXRl
cmF0b3I7DQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91c3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2RlY2wNCnVfc3RybGVuXzYzKGNvbnN0IFVDaGFyICpz
KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxleHBvcnQpIGludDMyX3QgX19jZGVjbA0KdV9jb3VudENoYXIzMl82Myhjb25zdCBVQ2hhciAq
cywgaW50MzJfdCBsZW5ndGgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQm9vbCBfX2NkZWNsDQp1X3N0ckhh
c01vcmVDaGFyMzJUaGFuXzYzKGNvbnN0IFVDaGFyICpzLCBpbnQzMl90IGxlbmd0aCwgaW50MzJf
dCBudW1iZXIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxleHBvcnQpIFVDaGFyKiBfX2NkZWNsDQp1X3N0cmNhdF82MyhVQ2hhciAgICAgKmRzdCwgDQog
ICAgY29uc3QgVUNoYXIgICAgICpzcmMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIqIF9fY2RlY2wNCnVfc3RybmNh
dF82MyhVQ2hhciAgICAgKmRzdCwgDQogICAgIGNvbnN0IFVDaGFyICAgICAqc3JjLCANCiAgICAg
aW50MzJfdCAgICAgbik7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhciAqIF9fY2RlY2wNCnVfc3Ry
c3RyXzYzKGNvbnN0IFVDaGFyICpzLCBjb25zdCBVQ2hhciAqc3Vic3RyaW5nKTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgVUNoYXIgKiBfX2NkZWNsDQp1X3N0ckZpbmRGaXJzdF82Myhjb25zdCBVQ2hh
ciAqcywgaW50MzJfdCBsZW5ndGgsIGNvbnN0IFVDaGFyICpzdWJzdHJpbmcsIGludDMyX3Qgc3Vi
TGVuZ3RoKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxleHBvcnQpIFVDaGFyICogX19jZGVjbA0KdV9zdHJjaHJfNjMoY29uc3Qg
VUNoYXIgKnMsIFVDaGFyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIgKiBfX2NkZWNsDQp1X3N0cmNo
cjMyXzYzKGNvbnN0IFVDaGFyICpzLCBVQ2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNo
YXIgKiBfX2NkZWNsDQp1X3N0cnJzdHJfNjMoY29uc3QgVUNoYXIgKnMsIGNvbnN0IFVDaGFyICpz
dWJzdHJpbmcpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhciAqIF9fY2RlY2wNCnVfc3RyRmlu
ZExhc3RfNjMoY29uc3QgVUNoYXIgKnMsIGludDMyX3QgbGVuZ3RoLCBjb25zdCBVQ2hhciAqc3Vi
c3RyaW5nLCBpbnQzMl90IHN1Ykxlbmd0aCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhciAqIF9fY2RlY2wN
CnVfc3RycmNocl82Myhjb25zdCBVQ2hhciAqcywgVUNoYXIgYyk7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hh
ciAqIF9fY2RlY2wNCnVfc3RycmNocjMyXzYzKGNvbnN0IFVDaGFyICpzLCBVQ2hhcjMyIGMpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBVQ2hhciAqIF9fY2RlY2wNCnVfc3RycGJya182Myhjb25zdCBVQ2hhciAqc3RyaW5nLCBjb25z
dCBVQ2hhciAqbWF0Y2hTZXQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGludDMyX3QgX19jZGVjbA0KdV9zdHJjc3BuXzYzKGNv
bnN0IFVDaGFyICpzdHJpbmcsIGNvbnN0IFVDaGFyICptYXRjaFNldCk7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50MzJfdCBf
X2NkZWNsDQp1X3N0cnNwbl82Myhjb25zdCBVQ2hhciAqc3RyaW5nLCBjb25zdCBVQ2hhciAqbWF0
Y2hTZXQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVDaGFyICogX19jZGVjbA0KdV9z
dHJ0b2tfcl82MyhVQ2hhciAgICAqc3JjLCANCiAgICAgY29uc3QgVUNoYXIgICAgKmRlbGltLA0K
ICAgICAgICAgICBVQ2hhciAgICoqc2F2ZVN0YXRlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQzMl90ICBfX2NkZWNsDQp1X3N0cmNt
cF82Myhjb25zdCBVQ2hhciAgICAgKnMxLCANCiAgICAgICAgIGNvbnN0IFVDaGFyICAgICAqczIp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgaW50MzJfdCBfX2NkZWNsDQp1X3N0cmNtcENvZGVQb2ludE9yZGVyXzYzKGNvbnN0IFVDaGFy
ICpzMSwgY29uc3QgVUNoYXIgKnMyKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
aW50MzJfdCBfX2NkZWNsDQp1X3N0ckNvbXBhcmVfNjMoY29uc3QgVUNoYXIgKnMxLCBpbnQzMl90
IGxlbmd0aDEsDQogICAgICAgICAgICAgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IGxlbmd0aDIs
DQogICAgICAgICAgICAgVUJvb2wgY29kZVBvaW50T3JkZXIpOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
aW50MzJfdCBfX2NkZWNsDQp1X3N0ckNvbXBhcmVJdGVyXzYzKFVDaGFySXRlcmF0b3IgKml0ZXIx
LCBVQ2hhckl0ZXJhdG9yICppdGVyMiwgVUJvb2wgY29kZVBvaW50T3JkZXIpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGludDMyX3Qg
X19jZGVjbA0KdV9zdHJDYXNlQ29tcGFyZV82Myhjb25zdCBVQ2hhciAqczEsIGludDMyX3QgbGVu
Z3RoMSwNCiAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IGxlbmd0aDIs
DQogICAgICAgICAgICAgICAgIHVpbnQzMl90IG9wdGlvbnMsDQogICAgICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnBFcnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2RlY2wNCnVfc3RybmNtcF82Myhj
b25zdCBVQ2hhciAgICAgKnVjczEsIA0KICAgICBjb25zdCBVQ2hhciAgICAgKnVjczIsIA0KICAg
ICBpbnQzMl90ICAgICBuKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2RlY2wNCnVfc3RybmNtcENvZGVQb2lu
dE9yZGVyXzYzKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IG4pOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxleHBvcnQpIGludDMyX3QgX19jZGVjbA0KdV9zdHJjYXNlY21wXzYzKGNvbnN0IFVD
aGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCB1aW50MzJfdCBvcHRpb25zKTsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgaW50MzJfdCBfX2NkZWNsDQp1X3N0cm5jYXNlY21wXzYzKGNvbnN0IFVDaGFyICpz
MSwgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IG4sIHVpbnQzMl90IG9wdGlvbnMpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2RlY2wNCnVfbWVtY2FzZWNtcF82Myhjb25zdCBVQ2hh
ciAqczEsIGNvbnN0IFVDaGFyICpzMiwgaW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IG9wdGlvbnMp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNo
YXIqIF9fY2RlY2wNCnVfc3RyY3B5XzYzKFVDaGFyICAgICAqZHN0LCANCiAgICBjb25zdCBVQ2hh
ciAgICAgKnNyYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBVQ2hhciogX19jZGVjbA0KdV9zdHJuY3B5XzYzKFVDaGFyICAgICAqZHN0
LCANCiAgICAgY29uc3QgVUNoYXIgICAgICpzcmMsIA0KICAgICBpbnQzMl90ICAgICBuKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
VUNoYXIqIF9fY2RlY2wgdV91YXN0cmNweV82MyhVQ2hhciAqZHN0LA0KICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqc3JjICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxleHBvcnQpIFVDaGFyKiBfX2NkZWNsIHVfdWFzdHJuY3B5XzYzKFVDaGFy
ICpkc3QsDQogICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsDQogICAgICAgICAgICBpbnQzMl90
IG4pOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBv
cnQpIGNoYXIqIF9fY2RlY2wgdV9hdXN0cmNweV82MyhjaGFyICpkc3QsDQogICAgICAgICAgICBj
b25zdCBVQ2hhciAqc3JjICk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxleHBvcnQpIGNoYXIqIF9fY2RlY2wgdV9hdXN0cm5jcHlfNjMoY2hhciAq
ZHN0LA0KICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywNCiAgICAgICAgICAgIGludDMyX3Qg
biApOw0KDQojbGluZSA3MzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXN0cmluZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIqIF9fY2RlY2wNCnVfbWVtY3B5
XzYzKFVDaGFyICpkZXN0LCBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IGNvdW50KTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVDaGFyKiBfX2Nk
ZWNsDQp1X21lbW1vdmVfNjMoVUNoYXIgKmRlc3QsIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qg
Y291bnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBVQ2hhciogX19jZGVjbA0KdV9tZW1zZXRfNjMoVUNoYXIgKmRlc3QsIFVDaGFyIGMsIGlu
dDMyX3QgY291bnQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgaW50MzJfdCBfX2NkZWNsDQp1X21lbWNtcF82Myhjb25zdCBVQ2hhciAq
YnVmMSwgY29uc3QgVUNoYXIgKmJ1ZjIsIGludDMyX3QgY291bnQpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGludDMyX3QgX19j
ZGVjbA0KdV9tZW1jbXBDb2RlUG9pbnRPcmRlcl82Myhjb25zdCBVQ2hhciAqczEsIGNvbnN0IFVD
aGFyICpzMiwgaW50MzJfdCBjb3VudCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhciogX19jZGVjbA0KdV9t
ZW1jaHJfNjMoY29uc3QgVUNoYXIgKnMsIFVDaGFyIGMsIGludDMyX3QgY291bnQpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgVUNoYXIqIF9fY2RlY2wNCnVfbWVtY2hyMzJfNjMoY29uc3QgVUNoYXIgKnMsIFVDaGFy
MzIgYywgaW50MzJfdCBjb3VudCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhciogX19jZGVjbA0KdV9tZW1y
Y2hyXzYzKGNvbnN0IFVDaGFyICpzLCBVQ2hhciBjLCBpbnQzMl90IGNvdW50KTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBv
cnQpIFVDaGFyKiBfX2NkZWNsDQp1X21lbXJjaHIzMl82Myhjb25zdCBVQ2hhciAqcywgVUNoYXIz
MiBjLCBpbnQzMl90IGNvdW50KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk0NyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29k
ZS91c3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2RlY2wNCnVfdW5lc2NhcGVf
NjMoY29uc3QgY2hhciAqc3JjLA0KICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0
Q2FwYWNpdHkpOw0KDQpleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgVUNoYXIgKF9fY2RlY2wgKlVORVNDQVBFX0NIQVJfQVQpKGludDMyX3Qgb2Zmc2V0LCB2b2lk
ICpjb250ZXh0KTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhcjMy
IF9fY2RlY2wNCnVfdW5lc2NhcGVBdF82MyhVTkVTQ0FQRV9DSEFSX0FUIGNoYXJBdCwNCiAgICAg
ICAgICAgICBpbnQzMl90ICpvZmZzZXQsDQogICAgICAgICAgICAgaW50MzJfdCBsZW5ndGgsDQog
ICAgICAgICAgICAgdm9pZCAqY29udGV4dCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9f
Y2RlY2wNCnVfc3RyVG9VcHBlcl82MyhVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHks
DQogICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsDQogICAg
ICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxlLA0KICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBF
cnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50MzJfdCBfX2NkZWNsDQp1X3N0clRvTG93
ZXJfNjMoVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LA0KICAgICAgICAgICAgIGNv
bnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmxvY2FsZSwNCiAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQz
Ml90IF9fY2RlY2wNCnVfc3RyVG9UaXRsZV82MyhVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2Fw
YWNpdHksDQogICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgs
DQogICAgICAgICAgICAgVUJyZWFrSXRlcmF0b3IgKnRpdGxlSXRlciwNCiAgICAgICAgICAgICBj
b25zdCBjaGFyICpsb2NhbGUsDQogICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7
DQoNCiNsaW5lIDExNDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdXN0cmluZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBpbnQzMl90IF9fY2RlY2wNCnVfc3RyRm9sZENhc2VfNjMoVUNoYXIgKmRlc3QsIGludDMy
X3QgZGVzdENhcGFjaXR5LA0KICAgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90
IHNyY0xlbmd0aCwNCiAgICAgICAgICAgICAgdWludDMyX3Qgb3B0aW9ucywNCiAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB3Y2hh
cl90KiBfX2NkZWNsDQp1X3N0clRvV0NTXzYzKHdjaGFyX3QgKmRlc3QsIA0KICAgICAgICAgICBp
bnQzMl90IGRlc3RDYXBhY2l0eSwNCiAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsDQog
ICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsIA0KICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0
aCwNCiAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBv
cnQpIFVDaGFyKiBfX2NkZWNsDQp1X3N0ckZyb21XQ1NfNjMoVUNoYXIgICAqZGVzdCwNCiAgICAg
ICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwgDQogICAgICAgICAgICAgaW50MzJfdCAqcERl
c3RMZW5ndGgsDQogICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCAqc3JjLA0KICAgICAgICAgICAg
IGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUp
Ow0KI2xpbmUgMTI0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcdW5pY29kZS91c3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
Y2hhciogX19jZGVjbCANCnVfc3RyVG9VVEY4XzYzKGNoYXIgKmRlc3QsICAgICAgICAgICANCiAg
ICAgICAgICAgIGludDMyX3QgZGVzdENhcGFjaXR5LA0KICAgICAgICAgICAgaW50MzJfdCAqcERl
c3RMZW5ndGgsDQogICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCANCiAgICAgICAgICAgIGlu
dDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIqIF9fY2RlY2wNCnVfc3RyRnJvbVVURjhfNjMoVUNo
YXIgKmRlc3QsICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0
eSwNCiAgICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsDQogICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKnNyYywgDQogICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAg
ICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNoYXIqIF9fY2RlY2wNCnVfc3RyVG9VVEY4V2l0aFN1
Yl82MyhjaGFyICpkZXN0LA0KICAgICAgICAgICAgaW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAg
ICAgICAgICBpbnQzMl90ICpwRGVzdExlbmd0aCwNCiAgICAgICAgICAgIGNvbnN0IFVDaGFyICpz
cmMsDQogICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAgICAgICAgIFVDaGFyMzIg
c3ViY2hhciwgaW50MzJfdCAqcE51bVN1YnN0aXR1dGlvbnMsDQogICAgICAgICAgICBVRXJyb3JD
b2RlICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgVUNoYXIqIF9fY2RlY2wNCnVfc3RyRnJvbVVURjhXaXRoU3ViXzYzKFVDaGFy
ICpkZXN0LA0KICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwNCiAgICAgICAgICAg
ICAgaW50MzJfdCAqcERlc3RMZW5ndGgsDQogICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywN
CiAgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsDQogICAgICAgICAgICAgIFVDaGFyMzIg
c3ViY2hhciwgaW50MzJfdCAqcE51bVN1YnN0aXR1dGlvbnMsDQogICAgICAgICAgICAgIFVFcnJv
ckNvZGUgKnBFcnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhciAqIF9fY2Rl
Y2wNCnVfc3RyRnJvbVVURjhMZW5pZW50XzYzKFVDaGFyICpkZXN0LA0KICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICpwRGVzdExlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywNCiAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAgICAgICAgICAg
ICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIz
MiogX19jZGVjbCANCnVfc3RyVG9VVEYzMl82MyhVQ2hhcjMyICpkZXN0LCANCiAgICAgICAgICAg
ICBpbnQzMl90ICBkZXN0Q2FwYWNpdHksDQogICAgICAgICAgICAgaW50MzJfdCAgKnBEZXN0TGVu
Z3RoLA0KICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsIA0KICAgICAgICAgICAgIGludDMy
X3QgIHNyY0xlbmd0aCwNCiAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhciogX19jZGVjbCANCnVfc3RyRnJvbVVURjMyXzYzKFVD
aGFyICAgKmRlc3QsDQogICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwgDQogICAg
ICAgICAgICAgICBpbnQzMl90ICpwRGVzdExlbmd0aCwNCiAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyMzIgKnNyYywNCiAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICAg
ICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhcjMyKiBfX2NkZWNsDQp1X3N0clRvVVRGMzJXaXRo
U3ViXzYzKFVDaGFyMzIgKmRlc3QsDQogICAgICAgICAgICAgaW50MzJfdCBkZXN0Q2FwYWNpdHks
DQogICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsDQogICAgICAgICAgICAgY29uc3Qg
VUNoYXIgKnNyYywNCiAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAgICAgICAg
ICBVQ2hhcjMyIHN1YmNoYXIsIGludDMyX3QgKnBOdW1TdWJzdGl0dXRpb25zLA0KICAgICAgICAg
ICAgIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIqIF9fY2RlY2wNCnVfc3RyRnJvbVVURjMyV2l0aFN1
Yl82MyhVQ2hhciAqZGVzdCwNCiAgICAgICAgICAgICAgIGludDMyX3QgZGVzdENhcGFjaXR5LA0K
ICAgICAgICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsDQogICAgICAgICAgICAgICBjb25z
dCBVQ2hhcjMyICpzcmMsDQogICAgICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwNCiAgICAg
ICAgICAgICAgIFVDaGFyMzIgc3ViY2hhciwgaW50MzJfdCAqcE51bVN1YnN0aXR1dGlvbnMsDQog
ICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNoYXIqIF9fY2RlY2wgDQp1X3N0clRvSmF2YU1vZGlm
aWVkVVRGOF82MygNCiAgICAgICAgY2hhciAqZGVzdCwNCiAgICAgICAgaW50MzJfdCBkZXN0Q2Fw
YWNpdHksDQogICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLA0KICAgICAgICBjb25zdCBVQ2hh
ciAqc3JjLCANCiAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsDQogICAgICAgIFVFcnJvckNvZGUg
KnBFcnJvckNvZGUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIqIF9fY2RlY2wNCnVfc3RyRnJvbUphdmFNb2RpZmllZFVU
RjhXaXRoU3ViXzYzKA0KICAgICAgICBVQ2hhciAqZGVzdCwNCiAgICAgICAgaW50MzJfdCBkZXN0
Q2FwYWNpdHksDQogICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLA0KICAgICAgICBjb25zdCBj
aGFyICpzcmMsDQogICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLA0KICAgICAgICBVQ2hhcjMyIHN1
YmNoYXIsIGludDMyX3QgKnBOdW1TdWJzdGl0dXRpb25zLA0KICAgICAgICBVRXJyb3JDb2RlICpw
RXJyb3JDb2RlKTsNCg0KI2xpbmUgMTY5MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91c3RyaW5nLmgiDQojbGluZSAyNyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
dGV4dC9TdHJpbmdJbXBsLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9BU0NJSUNUeXBlLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi90ZXh0L0xDaGFyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciBMQ2hhcjsNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9BU0NJSUNUeXBlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
bmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0
ZXhwciBib29sIGlzQVNDSUkoQ2hhcmFjdGVyVHlwZSk7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzQVNDSUlBbHBoYShDaGFyYWN0ZXJUeXBlKTsNCnRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0ZXJU
eXBlKTsNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUJpbmFy
eURpZ2l0KENoYXJhY3RlclR5cGUpOw0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Ym9vbCBpc0FTQ0lJRGlnaXQoQ2hhcmFjdGVyVHlwZSk7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBib29sIGlzQVNDSUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlKTsNCnRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUxvd2VyKENoYXJhY3RlclR5cGUp
Ow0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJT2N0YWxEaWdp
dChDaGFyYWN0ZXJUeXBlKTsNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wg
aXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBlKTsNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGJvb2wgaXNBU0NJSVNwYWNlKENoYXJhY3RlclR5cGUpOw0KdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSk7DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IENoYXJhY3RlclR5cGUgdG9BU0NJSUxv
d2VyKENoYXJhY3RlclR5cGUpOw0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQ2hh
cmFjdGVyVHlwZSB0b0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSk7DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHVpbnQ4X3QgdG9BU0NJSUhleFZhbHVlKENoYXJhY3RlclR5cGUp
Ow0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdWludDhfdCB0b0FTQ0lJSGV4VmFs
dWUoQ2hhcmFjdGVyVHlwZSBmaXJzdENoYXJhY3RlciwgQ2hhcmFjdGVyVHlwZSBzZWNvbmRDaGFy
YWN0ZXIpOw0KDQpjaGFyIGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHVpbnQ4X3QpOw0KY2hh
ciB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90KTsNCmNoYXIgbG93ZXJOaWJibGVU
b0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCk7DQpjaGFyIHVwcGVyTmliYmxlVG9Mb3dl
cmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QpOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBib29sIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoQ2hhcmFjdGVyVHlwZSwgY2hh
ciBleHBlY3RlZEFTQ0lJTG93ZXJjYXNlTGV0dGVyKTsNCg0KDQoNCg0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlMb3dlclVuY2hlY2tlZChD
aGFyYWN0ZXJUeXBlKTsNCg0KZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCB1bnNp
Z25lZCBjaGFyIGFzY2lpQ2FzZUZvbGRUYWJsZVsyNTZdOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJKENoYXJhY3RlclR5cGUgY2hhcmFj
dGVyKQ0Kew0KICAgIHJldHVybiAhKGNoYXJhY3RlciAmIH4weDdGKTsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSUxvd2VyKENoYXJhY3Rl
clR5cGUgY2hhcmFjdGVyKQ0Kew0KICAgIHJldHVybiBjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJh
Y3RlciA8PSAneic7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGlu
ZSBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlMb3dlclVuY2hlY2tlZChDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikNCnsNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICByZXR1cm4gY2hhcmFj
dGVyIHwgMHgyMDsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5l
IGJvb2wgaXNBU0NJSUFscGhhKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQ0Kew0KICAgIHJldHVy
biBpc0FTQ0lJTG93ZXIodG9BU0NJSUxvd2VyVW5jaGVja2VkKGNoYXJhY3RlcikpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJRGlnaXQo
Q2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpDQp7DQogICAgcmV0dXJuIGNoYXJhY3RlciA+PSAnMCcg
JiYgY2hhcmFjdGVyIDw9ICc5JzsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIGJvb2wgaXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
cikNCnsNCiAgICByZXR1cm4gaXNBU0NJSURpZ2l0KGNoYXJhY3RlcikgfHwgaXNBU0NJSUFscGhh
KGNoYXJhY3Rlcik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGlu
ZSBib29sIGlzQVNDSUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikNCnsNCiAgICBy
ZXR1cm4gaXNBU0NJSURpZ2l0KGNoYXJhY3RlcikgfHwgKHRvQVNDSUlMb3dlclVuY2hlY2tlZChj
aGFyYWN0ZXIpID49ICdhJyAmJiB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA8PSAn
ZicpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBp
c0FTQ0lJQmluYXJ5RGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpDQp7DQogICAgcmV0dXJu
IGNoYXJhY3RlciA9PSAnMCcgfHwgY2hhcmFjdGVyID09ICcxJzsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSU9jdGFsRGlnaXQoQ2hhcmFj
dGVyVHlwZSBjaGFyYWN0ZXIpDQp7DQogICAgcmV0dXJuIGNoYXJhY3RlciA+PSAnMCcgJiYgY2hh
cmFjdGVyIDw9ICc3JzsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5s
aW5lIGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikNCnsNCiAg
ICByZXR1cm4gY2hhcmFjdGVyID49ICcgJyAmJiBjaGFyYWN0ZXIgPD0gJ34nOw0KfQ0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGlzQVNDSUlTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikNCnsN
CiAgICByZXR1cm4gY2hhcmFjdGVyIDw9ICcgJyAmJiAoY2hhcmFjdGVyID09ICcgJyB8fCAoY2hh
cmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5KSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlVcHBlcihDaGFyYWN0ZXJUeXBl
IGNoYXJhY3RlcikNCnsNCiAgICByZXR1cm4gY2hhcmFjdGVyID49ICdBJyAmJiBjaGFyYWN0ZXIg
PD0gJ1onOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgQ2hh
cmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpDQp7DQogICAg
cmV0dXJuIGNoYXJhY3RlciB8IChpc0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSA8PCA1KTsNCn0NCg0K
dGVtcGxhdGU8PiBpbmxpbmUgY2hhciB0b0FTQ0lJTG93ZXIoY2hhciBjaGFyYWN0ZXIpDQp7DQog
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KGFzY2lpQ2FzZUZvbGRUYWJsZVtzdGF0aWNfY2Fz
dDx1aW50OF90PihjaGFyYWN0ZXIpXSk7DQp9DQoNCnRlbXBsYXRlPD4gaW5saW5lIExDaGFyIHRv
QVNDSUlMb3dlcihMQ2hhciBjaGFyYWN0ZXIpDQp7DQogICAgcmV0dXJuIGFzY2lpQ2FzZUZvbGRU
YWJsZVtjaGFyYWN0ZXJdOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBp
bmxpbmUgQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIp
DQp7DQogICAgcmV0dXJuIGNoYXJhY3RlciAmIH4oaXNBU0NJSUxvd2VyKGNoYXJhY3RlcikgPDwg
NSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSB1aW50OF90
IHRvQVNDSUlIZXhWYWx1ZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikNCnsNCiAgICAoKHZvaWQp
MCk7DQogICAgcmV0dXJuIGNoYXJhY3RlciA8ICdBJyA/IGNoYXJhY3RlciAtICcwJyA6IChjaGFy
YWN0ZXIgLSAnQScgKyAxMCkgJiAweEY7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGlubGluZSB1aW50OF90IHRvQVNDSUlIZXhWYWx1ZShDaGFyYWN0ZXJUeXBlIGZpcnN0
Q2hhcmFjdGVyLCBDaGFyYWN0ZXJUeXBlIHNlY29uZENoYXJhY3RlcikNCnsNCiAgICByZXR1cm4g
dG9BU0NJSUhleFZhbHVlKGZpcnN0Q2hhcmFjdGVyKSA8PCA0IHwgdG9BU0NJSUhleFZhbHVlKHNl
Y29uZENoYXJhY3Rlcik7DQp9DQoNCmlubGluZSBjaGFyIGxvd2VyTmliYmxlVG9BU0NJSUhleERp
Z2l0KHVpbnQ4X3QgdmFsdWUpDQp7DQogICAgdWludDhfdCBuaWJibGUgPSB2YWx1ZSAmIDB4RjsN
CiAgICByZXR1cm4gbmliYmxlICsgKG5pYmJsZSA8IDEwID8gJzAnIDogJ0EnIC0gMTApOw0KfQ0K
DQppbmxpbmUgY2hhciB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQ0K
ew0KICAgIHVpbnQ4X3QgbmliYmxlID0gdmFsdWUgPj4gNDsNCiAgICByZXR1cm4gbmliYmxlICsg
KG5pYmJsZSA8IDEwID8gJzAnIDogJ0EnIC0gMTApOw0KfQ0KDQppbmxpbmUgY2hhciBsb3dlck5p
YmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQ0Kew0KICAgIHVpbnQ4
X3QgbmliYmxlID0gdmFsdWUgJiAweEY7DQogICAgcmV0dXJuIG5pYmJsZSArIChuaWJibGUgPCAx
MCA/ICcwJyA6ICdhJyAtIDEwKTsNCn0NCg0KaW5saW5lIGNoYXIgdXBwZXJOaWJibGVUb0xvd2Vy
Y2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCB2YWx1ZSkNCnsNCiAgICB1aW50OF90IG5pYmJsZSA9
IHZhbHVlID4+IDQ7DQogICAgcmV0dXJuIG5pYmJsZSArIChuaWJibGUgPCAxMCA/ICcwJyA6ICdh
JyAtIDEwKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJv
b2wgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChDaGFyYWN0ZXJUeXBlIGlucHV0Q2hhcmFjdGVy
LCBjaGFyIGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIpDQp7DQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgKCh2
b2lkKTApOw0KICAgIHJldHVybiAodG9BU0NJSUxvd2VyVW5jaGVja2VkKGlucHV0Q2hhcmFjdGVy
KSA9PSBleHBlY3RlZEFTQ0lJTG93ZXJjYXNlTGV0dGVyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSURpZ2l0T3JQdW5jdHVhdGlvbihD
aGFyYWN0ZXJUeXBlIGNoYXJDb2RlKQ0Kew0KICAgIHJldHVybiAoY2hhckNvZGUgPj0gJyEnICYm
IGNoYXJDb2RlIDw9ICdAJykgfHwgKGNoYXJDb2RlID49ICdbJyAmJiBjaGFyQ29kZSA8PSAnYCcp
IHx8IChjaGFyQ29kZSA+PSAneycgJiYgY2hhckNvZGUgPD0gJ34nKTsNCn0NCg0KfQ0KDQp1c2lu
ZyBXVEY6OmlzQVNDSUk7DQp1c2luZyBXVEY6OmlzQVNDSUlBbHBoYTsNCnVzaW5nIFdURjo6aXNB
U0NJSUFscGhhQ2FzZWxlc3NFcXVhbDsNCnVzaW5nIFdURjo6aXNBU0NJSUFscGhhbnVtZXJpYzsN
CnVzaW5nIFdURjo6aXNBU0NJSUJpbmFyeURpZ2l0Ow0KdXNpbmcgV1RGOjppc0FTQ0lJRGlnaXQ7
DQp1c2luZyBXVEY6OmlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb247DQp1c2luZyBXVEY6OmlzQVND
SUlIZXhEaWdpdDsNCnVzaW5nIFdURjo6aXNBU0NJSUxvd2VyOw0KdXNpbmcgV1RGOjppc0FTQ0lJ
T2N0YWxEaWdpdDsNCnVzaW5nIFdURjo6aXNBU0NJSVByaW50YWJsZTsNCnVzaW5nIFdURjo6aXNB
U0NJSVNwYWNlOw0KdXNpbmcgV1RGOjppc0FTQ0lJVXBwZXI7DQp1c2luZyBXVEY6Omxvd2VyTmli
YmxlVG9BU0NJSUhleERpZ2l0Ow0KdXNpbmcgV1RGOjpsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVND
SUlIZXhEaWdpdDsNCnVzaW5nIFdURjo6dG9BU0NJSUhleFZhbHVlOw0KdXNpbmcgV1RGOjp0b0FT
Q0lJTG93ZXI7DQp1c2luZyBXVEY6OnRvQVNDSUlMb3dlclVuY2hlY2tlZDsNCnVzaW5nIFdURjo6
dG9BU0NJSVVwcGVyOw0KdXNpbmcgV1RGOjp1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdDsNCnVz
aW5nIFdURjo6dXBwZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQ7DQojbGluZSAyOCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
dGV4dC9TdHJpbmdJbXBsLmgiDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRXhwZWN0ZWQuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1VuZXhwZWN0ZWQuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBzdGQgew0KbmFtZXNw
YWNlIGV4cGVyaW1lbnRhbCB7DQppbmxpbmUgbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MyB7DQoN
CnRlbXBsYXRlPGNsYXNzIEU+DQpjbGFzcyB1bmV4cGVjdGVkIHsNCiAgICBwdWJsaWM6IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24p
IHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2Vk
ID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVy
VGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHVuZXhwZWN0ZWQoKSA9IGRlbGV0ZTsNCiAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVSA9IEU+DQogICAgY29uc3RleHByIGV4cGxpY2l0IHVuZXhwZWN0
ZWQoVSYmIHUpIDogdmFsKHN0ZDo6Zm9yd2FyZDxVPih1KSkgeyB9DQogICAgY29uc3RleHByIGNv
bnN0IEUmIHZhbHVlKCkgY29uc3QgJiB7IHJldHVybiB2YWw7IH0NCiAgICBjb25zdGV4cHIgRSYg
dmFsdWUoKSAmIHsgcmV0dXJuIHZhbDsgfQ0KICAgIGNvbnN0ZXhwciBFJiYgdmFsdWUoKSAmJiB7
IHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbCk7IH0NCiAgICBj
b25zdGV4cHIgY29uc3QgRSYmIHZhbHVlKCkgY29uc3QgJiYgeyByZXR1cm4gc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWwpOyB9DQoNCnByaXZhdGU6DQogICAgRSB2YWw7DQp9
Ow0KDQp0ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVu
ZXhwZWN0ZWQ8RT4mIGxocywgY29uc3QgdW5leHBlY3RlZDxFPiYgcmhzKSB7IHJldHVybiBsaHMu
dmFsdWUoKSA9PSByaHMudmFsdWUoKTsgfQ0KdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiBsaHMsIGNvbnN0IHVuZXhwZWN0ZWQ8
RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgIT0gcmhzLnZhbHVlKCk7IH0NCg0KfX19IA0K
DQp0ZW1wbGF0ZTxjbGFzcyBFPiB1c2luZyBVbmV4cGVjdGVkID0gc3RkOjpleHBlcmltZW50YWw6
OnVuZXhwZWN0ZWQ8RT47DQoNCg0KdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIFVuZXhwZWN0
ZWQ8c3RkOjpkZWNheV90PEU+PiBtYWtlVW5leHBlY3RlZChFJiYgdikgeyByZXR1cm4gVW5leHBl
Y3RlZDx0eXBlbmFtZSBzdGQ6OmRlY2F5PEU+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8RT4odikpOyB9
DQojbGluZSAxODggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL0V4cGVjdGVkLmgiDQoNCm5hbWVzcGFjZSBzdGQgew0KbmFtZXNwYWNlIGV4
cGVyaW1lbnRhbCB7DQppbmxpbmUgbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MyB7DQoNCnN0cnVj
dCB1bmV4cGVjdGVkX3Qgew0KICAgIHVuZXhwZWN0ZWRfdCgpID0gZGVmYXVsdDsNCn07DQoNCg0K
DQoNCiNsaW5lIDIwMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvRXhwZWN0ZWQuaCINCg0Kc3RhdGljIGNvbnN0IGNvbnN0ZXhwciB1bmV4
cGVjdGVkX3QgdW5leHBlY3QgeyB9Ow0KDQp0ZW1wbGF0ZTxjbGFzcyBFPiBjbGFzcyBiYWRfZXhw
ZWN0ZWRfYWNjZXNzOw0KDQp0ZW1wbGF0ZTw+DQpjbGFzcyBiYWRfZXhwZWN0ZWRfYWNjZXNzPHZv
aWQ+IDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsNCnB1YmxpYzoNCiAgICBleHBsaWNpdCBiYWRf
ZXhwZWN0ZWRfYWNjZXNzKCkgeyB9DQp9Ow0KDQp0ZW1wbGF0ZTxjbGFzcyBFPg0KY2xhc3MgYmFk
X2V4cGVjdGVkX2FjY2VzcyA6IHB1YmxpYyBiYWRfZXhwZWN0ZWRfYWNjZXNzPHZvaWQ+IHsNCnB1
YmxpYzoNCiAgICBleHBsaWNpdCBiYWRfZXhwZWN0ZWRfYWNjZXNzKEUgdmFsKSA6IHZhbCh2YWwp
IHsgfQ0KICAgIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCBub2V4Y2VwdCBvdmVycmlkZSB7IHJl
dHVybiBzdGQ6OmV4Y2VwdGlvbjo6d2hhdCgpOyB9DQogICAgRSYgZXJyb3IoKSAmIHsgcmV0dXJu
IHZhbDsgfQ0KICAgIGNvbnN0IEUmIGVycm9yKCkgY29uc3QmIHsgcmV0dXJuIHZhbDsgfQ0KICAg
IEUmJiBlcnJvcigpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZSh2YWwpOyB9DQogICAgY29uc3QgRSYm
ICBlcnJvcigpIGNvbnN0JiYgeyByZXR1cm4gc3RkOjptb3ZlKHZhbCk7IH0NCg0KcHJpdmF0ZToN
CiAgICBFIHZhbDsNCn07DQoNCm5hbWVzcGFjZSBfX2V4cGVjdGVkX2RldGFpbCB7DQoNCg0KDQoj
bGluZSAyMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL0V4cGVjdGVkLmgiDQppbmxpbmUgX19kZWNsc3BlYyhub3JldHVybikgdm9pZCBf
X2V4cGVjdGVkX3Rlcm1pbmF0ZSgpIHsgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBl
KCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDIzMSwgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0V4cGVj
dGVkLmgiLCAgX19GVU5DVElPTl9fICAsIDkgKTsgfSB3aGlsZSAoZmFsc2UpOyB9DQoNCiNsaW5l
IDIzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvRXhwZWN0ZWQuaCINCg0Kc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBlbnVtIGNsYXNzIHZh
bHVlX3RhZ190IHsgfSB2YWx1ZV90YWcgeyB9Ow0Kc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBlbnVt
IGNsYXNzIGVycm9yX3RhZ190IHsgfSBlcnJvcl90YWcgeyB9Ow0KDQp0ZW1wbGF0ZTxjbGFzcyBU
LCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFs
dWU+KiA9IG51bGxwdHI+IHZvaWQgZGVzdHJveShUJikgeyB9DQp0ZW1wbGF0ZTxjbGFzcyBULCBz
dGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVl
ICYmIChzdGQ6OmlzX2NsYXNzPFQ+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSk+
KiA9IG51bGxwdHI+IHZvaWQgZGVzdHJveShUJiB0KSB7IHQuflQoKTsgfQ0KDQp0ZW1wbGF0ZTxj
bGFzcyBULCBjbGFzcyBFPg0KdW5pb24gY29uc3RleHByX3N0b3JhZ2Ugew0KICAgIHR5cGVkZWYg
VCB2YWx1ZV90eXBlOw0KICAgIHR5cGVkZWYgRSBlcnJvcl90eXBlOw0KICAgIHR5cGVkZWYgdW5l
eHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7DQogICAgY2hhciBkdW1teTsNCiAgICB2YWx1ZV90
eXBlIHZhbDsNCiAgICBlcnJvcl90eXBlIGVycjsNCiAgICBjb25zdGV4cHIgY29uc3RleHByX3N0
b3JhZ2UoKSA6IGR1bW15KCkgeyB9DQogICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlKHZh
bHVlX3RhZ190KSA6IHZhbCgpIHsgfQ0KICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFnZShl
cnJvcl90YWdfdCkgOiBlcnIoKSB7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4NCiAg
ICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2UodmFsdWVfdGFnX3QsIFUmJiB2KSA6IHZhbChz
dGQ6OmZvcndhcmQ8VT4odikpIHsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBFPg0KICAg
IGNvbnN0ZXhwciBjb25zdGV4cHJfc3RvcmFnZShlcnJvcl90YWdfdCwgVSYmIGUpIDogZXJyKHN0
ZDo6Zm9yd2FyZDxVPihlKSkgeyB9DQogICAgfmNvbnN0ZXhwcl9zdG9yYWdlKCkgPSBkZWZhdWx0
Ow0KfTsNCg0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4NCnVuaW9uIHN0b3JhZ2Ugew0KICAg
IHR5cGVkZWYgVCB2YWx1ZV90eXBlOw0KICAgIHR5cGVkZWYgRSBlcnJvcl90eXBlOw0KICAgIHR5
cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7DQogICAgY2hhciBkdW1teTsNCiAg
ICB2YWx1ZV90eXBlIHZhbDsNCiAgICBlcnJvcl90eXBlIGVycjsNCiAgICBjb25zdGV4cHIgc3Rv
cmFnZSgpIDogZHVtbXkoKSB7IH0NCiAgICBjb25zdGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCkg
OiB2YWwoKSB7IH0NCiAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCkgOiBlcnIoKSB7
IH0NCiAgICBjb25zdGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCwgY29uc3QgdmFsdWVfdHlwZSYg
dmFsKSA6IHZhbCh2YWwpIHsgfQ0KICAgIGNvbnN0ZXhwciBzdG9yYWdlKHZhbHVlX3RhZ190LCB2
YWx1ZV90eXBlJiYgdmFsKSA6IHZhbChzdGQ6OmZvcndhcmQ8dmFsdWVfdHlwZT4odmFsKSkgeyB9
DQogICAgY29uc3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGNvbnN0IGVycm9yX3R5cGUmIGVy
cikgOiBlcnIoZXJyKSB7IH0NCiAgICBjb25zdGV4cHIgc3RvcmFnZShlcnJvcl90YWdfdCwgZXJy
b3JfdHlwZSYmIGVycikgOiBlcnIoc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpIHsgfQ0K
ICAgIH5zdG9yYWdlKCkgeyB9DQp9Ow0KDQp0ZW1wbGF0ZTxjbGFzcyBFPg0KdW5pb24gY29uc3Rl
eHByX3N0b3JhZ2U8dm9pZCwgRT4gew0KICAgIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOw0KICAg
IHR5cGVkZWYgRSBlcnJvcl90eXBlOw0KICAgIHR5cGVkZWYgdW5leHBlY3RlZDxFPiB1bmV4cGVj
dGVkX3R5cGU7DQogICAgY2hhciBkdW1teTsNCiAgICBlcnJvcl90eXBlIGVycjsNCiAgICBjb25z
dGV4cHIgY29uc3RleHByX3N0b3JhZ2UoKSA6IGR1bW15KCkgeyB9DQogICAgY29uc3RleHByIGNv
bnN0ZXhwcl9zdG9yYWdlKHZhbHVlX3RhZ190KSA6IGR1bW15KCkgeyB9DQogICAgY29uc3RleHBy
IGNvbnN0ZXhwcl9zdG9yYWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQ0KICAgIGNvbnN0ZXhw
ciBjb25zdGV4cHJfc3RvcmFnZShlcnJvcl90YWdfdCwgY29uc3QgZXJyb3JfdHlwZSYgZSkgOiBl
cnIoZSkgeyB9DQogICAgfmNvbnN0ZXhwcl9zdG9yYWdlKCkgPSBkZWZhdWx0Ow0KfTsNCg0KdGVt
cGxhdGU8Y2xhc3MgRT4NCnVuaW9uIHN0b3JhZ2U8dm9pZCwgRT4gew0KICAgIHR5cGVkZWYgdm9p
ZCB2YWx1ZV90eXBlOw0KICAgIHR5cGVkZWYgRSBlcnJvcl90eXBlOw0KICAgIHR5cGVkZWYgdW5l
eHBlY3RlZDxFPiB1bmV4cGVjdGVkX3R5cGU7DQogICAgY2hhciBkdW1teTsNCiAgICBlcnJvcl90
eXBlIGVycjsNCiAgICBjb25zdGV4cHIgc3RvcmFnZSgpIDogZHVtbXkoKSB7IH0NCiAgICBjb25z
dGV4cHIgc3RvcmFnZSh2YWx1ZV90YWdfdCkgOiBkdW1teSgpIHsgfQ0KICAgIGNvbnN0ZXhwciBz
dG9yYWdlKGVycm9yX3RhZ190KSA6IGVycigpIHsgfQ0KICAgIGNvbnN0ZXhwciBzdG9yYWdlKGVy
cm9yX3RhZ190LCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogZXJyKGVycikgeyB9DQogICAgY29u
c3RleHByIHN0b3JhZ2UoZXJyb3JfdGFnX3QsIGVycm9yX3R5cGUmJiBlcnIpIDogZXJyKHN0ZDo6
Zm9yd2FyZDxlcnJvcl90eXBlPihlcnIpKSB7IH0NCiAgICB+c3RvcmFnZSgpIHsgfQ0KfTsNCg0K
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4NCnN0cnVjdCBjb25zdGV4cHJfYmFzZSB7DQogICAg
dHlwZWRlZiBUIHZhbHVlX3R5cGU7DQogICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7DQogICAgdHlw
ZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsNCiAgICBjb25zdGV4cHJfc3RvcmFn
ZTx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiBzOw0KICAgIGJvb2wgaGFzOw0KICAgIGNvbnN0ZXhw
ciBjb25zdGV4cHJfYmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9DQogICAgY29uc3RleHByIGNv
bnN0ZXhwcl9iYXNlKHZhbHVlX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyh0cnVlKSB7IH0NCiAg
ICBjb25zdGV4cHIgY29uc3RleHByX2Jhc2UoZXJyb3JfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFz
KGZhbHNlKSB7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4NCiAgICBjb25zdGV4cHIg
Y29uc3RleHByX2Jhc2UodmFsdWVfdGFnX3QgdGFnLCBVJiYgdmFsKSA6IHModGFnLCBzdGQ6OmZv
cndhcmQ8VT4odmFsKSksIGhhcyh0cnVlKSB7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0g
RT4NCiAgICBjb25zdGV4cHIgY29uc3RleHByX2Jhc2UoZXJyb3JfdGFnX3QgdGFnLCBVJiYgZXJy
KSA6IHModGFnLCBzdGQ6OmZvcndhcmQ8VT4oZXJyKSksIGhhcyhmYWxzZSkgeyB9DQogICAgfmNv
bnN0ZXhwcl9iYXNlKCkgPSBkZWZhdWx0Ow0KfTsNCg0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
RT4NCnN0cnVjdCBiYXNlIHsNCiAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsNCiAgICB0eXBlZGVm
IEUgZXJyb3JfdHlwZTsNCiAgICB0eXBlZGVmIHVuZXhwZWN0ZWQ8RT4gdW5leHBlY3RlZF90eXBl
Ow0KICAgIHN0b3JhZ2U8dmFsdWVfdHlwZSwgZXJyb3JfdHlwZT4gczsNCiAgICBib29sIGhhczsN
CiAgICBjb25zdGV4cHIgYmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9DQogICAgY29uc3RleHBy
IGJhc2UodmFsdWVfdGFnX3QgdGFnKSA6IHModGFnKSwgaGFzKHRydWUpIHsgfQ0KICAgIGNvbnN0
ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyhmYWxzZSkgeyB9DQogICAg
Y29uc3RleHByIGJhc2UodmFsdWVfdGFnX3QgdGFnLCBjb25zdCB2YWx1ZV90eXBlJiB2YWwpIDog
cyh0YWcsIHZhbCksIGhhcyh0cnVlKSB7IH0NCiAgICBjb25zdGV4cHIgYmFzZSh2YWx1ZV90YWdf
dCB0YWcsIHZhbHVlX3R5cGUmJiB2YWwpIDogcyh0YWcsIHN0ZDo6Zm9yd2FyZDx2YWx1ZV90eXBl
Pih2YWwpKSwgaGFzKHRydWUpIHsgfQ0KICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRh
ZywgY29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQ0K
ICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZywgZXJyb3JfdHlwZSYmIGVycikgOiBz
KHRhZywgc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQ0KICAg
IGJhc2UoY29uc3QgYmFzZSYgbykNCiAgICAgICAgOiBoYXMoby5oYXMpDQogICAgew0KICAgICAg
ICBpZiAoaGFzKQ0KICAgICAgICAgICAgOjpuZXcgKHN0ZDo6YWRkcmVzc29mKHMudmFsKSkgdmFs
dWVfdHlwZShvLnMudmFsKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgOjpuZXcgKHN0ZDo6
YWRkcmVzc29mKHMuZXJyKSkgZXJyb3JfdHlwZShvLnMuZXJyKTsNCiAgICB9DQogICAgYmFzZShi
YXNlJiYgbykNCiAgICAgICAgOiBoYXMoby5oYXMpDQogICAgew0KICAgICAgICBpZiAoaGFzKQ0K
ICAgICAgICAgICAgOjpuZXcgKHN0ZDo6YWRkcmVzc29mKHMudmFsKSkgdmFsdWVfdHlwZShzdGQ6
Om1vdmUoby5zLnZhbCkpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICA6Om5ldyAoc3RkOjph
ZGRyZXNzb2Yocy5lcnIpKSBlcnJvcl90eXBlKHN0ZDo6bW92ZShvLnMuZXJyKSk7DQogICAgfQ0K
ICAgIH5iYXNlKCkNCiAgICB7DQogICAgICAgIGlmIChoYXMpDQogICAgICAgICAgICBkZXN0cm95
KHMudmFsKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgZGVzdHJveShzLmVycik7DQogICAg
fQ0KfTsNCg0KdGVtcGxhdGU8Y2xhc3MgRT4NCnN0cnVjdCBjb25zdGV4cHJfYmFzZTx2b2lkLCBF
PiB7DQogICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7DQogICAgdHlwZWRlZiBFIGVycm9yX3R5
cGU7DQogICAgdHlwZWRlZiB1bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsNCiAgICBjb25z
dGV4cHJfc3RvcmFnZTx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiBzOw0KICAgIGJvb2wgaGFzOw0K
ICAgIGNvbnN0ZXhwciBjb25zdGV4cHJfYmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9DQogICAg
Y29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKHZhbHVlX3RhZ190IHRhZykgOiBzKHRhZyksIGhhcyh0
cnVlKSB7IH0NCiAgICBjb25zdGV4cHIgY29uc3RleHByX2Jhc2UoZXJyb3JfdGFnX3QgdGFnKSA6
IHModGFnKSwgaGFzKGZhbHNlKSB7IH0NCiAgICBjb25zdGV4cHIgY29uc3RleHByX2Jhc2UoZXJy
b3JfdGFnX3QgdGFnLCBjb25zdCBlcnJvcl90eXBlJiBlcnIpIDogcyh0YWcsIGVyciksIGhhcyhm
YWxzZSkgeyB9DQogICAgY29uc3RleHByIGNvbnN0ZXhwcl9iYXNlKGVycm9yX3RhZ190IHRhZywg
ZXJyb3JfdHlwZSYmIGVycikgOiBzKHRhZywgc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikp
LCBoYXMoZmFsc2UpIHsgfQ0KICAgIH5jb25zdGV4cHJfYmFzZSgpID0gZGVmYXVsdDsNCn07DQoN
CnRlbXBsYXRlPGNsYXNzIEU+DQpzdHJ1Y3QgYmFzZTx2b2lkLCBFPiB7DQogICAgdHlwZWRlZiB2
b2lkIHZhbHVlX3R5cGU7DQogICAgdHlwZWRlZiBFIGVycm9yX3R5cGU7DQogICAgdHlwZWRlZiB1
bmV4cGVjdGVkPEU+IHVuZXhwZWN0ZWRfdHlwZTsNCiAgICBzdG9yYWdlPHZhbHVlX3R5cGUsIGVy
cm9yX3R5cGU+IHM7DQogICAgYm9vbCBoYXM7DQogICAgY29uc3RleHByIGJhc2UoKSA6IHMoKSwg
aGFzKHRydWUpIHsgfQ0KICAgIGNvbnN0ZXhwciBiYXNlKHZhbHVlX3RhZ190IHRhZykgOiBzKHRh
ZyksIGhhcyh0cnVlKSB7IH0NCiAgICBjb25zdGV4cHIgYmFzZShlcnJvcl90YWdfdCB0YWcpIDog
cyh0YWcpLCBoYXMoZmFsc2UpIHsgfQ0KICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRh
ZywgY29uc3QgZXJyb3JfdHlwZSYgZXJyKSA6IHModGFnLCBlcnIpLCBoYXMoZmFsc2UpIHsgfQ0K
ICAgIGNvbnN0ZXhwciBiYXNlKGVycm9yX3RhZ190IHRhZywgZXJyb3JfdHlwZSYmIGVycikgOiBz
KHRhZywgc3RkOjpmb3J3YXJkPGVycm9yX3R5cGU+KGVycikpLCBoYXMoZmFsc2UpIHsgfQ0KICAg
IGJhc2UoY29uc3QgYmFzZSYgbykNCiAgICAgICAgOiBoYXMoby5oYXMpDQogICAgew0KICAgICAg
ICBpZiAoIWhhcykNCiAgICAgICAgICAgIDo6bmV3IChzdGQ6OmFkZHJlc3NvZihzLmVycikpIGVy
cm9yX3R5cGUoby5zLmVycik7DQogICAgfQ0KICAgIGJhc2UoYmFzZSYmIG8pDQogICAgICAgIDog
aGFzKG8uaGFzKQ0KICAgIHsNCiAgICAgICAgaWYgKCFoYXMpDQogICAgICAgICAgICA6Om5ldyAo
c3RkOjphZGRyZXNzb2Yocy5lcnIpKSBlcnJvcl90eXBlKHN0ZDo6bW92ZShvLnMuZXJyKSk7DQog
ICAgfQ0KICAgIH5iYXNlKCkNCiAgICB7DQogICAgICAgIGlmICghaGFzKQ0KICAgICAgICAgICAg
ZGVzdHJveShzLmVycik7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4N
CnVzaW5nIGJhc2Vfc2VsZWN0ID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwNCiAgICAoKHN0
ZDo6aXNfdm9pZDxUPjo6dmFsdWUgfHwgc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+
Ojp2YWx1ZSkNCiAgICAgICAgJiYgc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEU+Ojp2
YWx1ZSksDQogICAgY29uc3RleHByX2Jhc2U8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46
OnR5cGUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PEU+Ojp0eXBlPiwNCiAgICBiYXNlPHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxFPjo6dHlwZT4NCj46OnR5cGU7DQoNCn0gDQoNCnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
IEU+DQpjbGFzcyBleHBlY3RlZCA6IHByaXZhdGUgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vfc2Vs
ZWN0PFQsIEU+IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7
IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpX
VEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6
OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10o
dm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRp
b247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3Ro
aXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHR5cGVk
ZWYgX19leHBlY3RlZF9kZXRhaWw6OmJhc2Vfc2VsZWN0PFQsIEU+IGJhc2U7DQoNCnB1YmxpYzoN
CiAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsNCiAgICB0
eXBlZGVmIHR5cGVuYW1lIGJhc2U6OmVycm9yX3R5cGUgZXJyb3JfdHlwZTsNCiAgICB0eXBlZGVm
IHR5cGVuYW1lIGJhc2U6OnVuZXhwZWN0ZWRfdHlwZSB1bmV4cGVjdGVkX3R5cGU7DQoNCnByaXZh
dGU6DQogICAgdHlwZWRlZiBleHBlY3RlZDx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiB0eXBlOw0K
DQpwdWJsaWM6DQogICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RydWN0IHJlYmluZCB7DQogICAgICAg
IHVzaW5nIHR5cGUgPSBleHBlY3RlZDxVLCBlcnJvcl90eXBlPjsNCiAgICB9Ow0KDQogICAgY29u
c3RleHByIGV4cGVjdGVkKCkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcpIHsg
fQ0KICAgIGV4cGVjdGVkKGNvbnN0IGV4cGVjdGVkJikgPSBkZWZhdWx0Ow0KICAgIGV4cGVjdGVk
KGV4cGVjdGVkJiYpID0gZGVmYXVsdDsNCg0KICAgIGNvbnN0ZXhwciBleHBlY3RlZChjb25zdCB2
YWx1ZV90eXBlJiBlKSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OnZhbHVlX3RhZywgZSkgeyB9
DQogICAgY29uc3RleHByIGV4cGVjdGVkKHZhbHVlX3R5cGUmJiBlKSA6IGJhc2UoX19leHBlY3Rl
ZF9kZXRhaWw6OnZhbHVlX3RhZywgc3RkOjpmb3J3YXJkPHZhbHVlX3R5cGU+KGUpKSB7IH0NCiAg
ICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQoc3Rk
Ojppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2
YWx1ZV90YWcsIHZhbHVlX3R5cGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9DQog
ICAgDQogICAgY29uc3RleHByIGV4cGVjdGVkKGNvbnN0IHVuZXhwZWN0ZWRfdHlwZSYgdSkgOiBi
YXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHUudmFsdWUoKSkgeyB9DQogICAgY29u
c3RleHByIGV4cGVjdGVkKHVuZXhwZWN0ZWRfdHlwZSYmIHUpIDogYmFzZShfX2V4cGVjdGVkX2Rl
dGFpbDo6ZXJyb3JfdGFnLCBzdGQ6OmZvcndhcmQ8dW5leHBlY3RlZF90eXBlPih1KS52YWx1ZSgp
KSB7IH0NCiAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+IGNvbnN0ZXhwciBleHBlY3RlZChjb25zdCB1
bmV4cGVjdGVkPEVycj4mIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFnLCB1
LnZhbHVlKCkpIHsgfQ0KICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIGV4cGVjdGVk
KHVuZXhwZWN0ZWQ8RXJyPiYmIHUpIDogYmFzZShfX2V4cGVjdGVkX2RldGFpbDo6ZXJyb3JfdGFn
LCBzdGQ6OmZvcndhcmQ8RXJyPih1LnZhbHVlKCkpKSB7IH0NCiAgICB0ZW1wbGF0ZTxjbGFzcy4u
LiBBcmdzPiBjb25zdGV4cHIgZXhwbGljaXQgZXhwZWN0ZWQodW5leHBlY3RlZF90LCBBcmdzJiYu
Li4gYXJncykgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcsIHVuZXhwZWN0ZWRf
dHlwZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0NCiAgICANCg0KICAgIH5leHBl
Y3RlZCgpID0gZGVmYXVsdDsNCg0KICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgZXhwZWN0
ZWQmIGUpIHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9DQogICAgZXhwZWN0
ZWQmIG9wZXJhdG9yPShleHBlY3RlZCYmIGUpIHsgdHlwZShzdGQ6Om1vdmUoZSkpLnN3YXAoKnRo
aXMpOyByZXR1cm4gKnRoaXM7IH0NCiAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBleHBlY3RlZCYgb3Bl
cmF0b3I9KFUmJiB1KSB7IHR5cGUoc3RkOjptb3ZlKHUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0
aGlzOyB9DQogICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCB1bmV4cGVjdGVkX3R5cGUmIHUp
IHsgdHlwZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9DQogICAgZXhwZWN0ZWQmIG9w
ZXJhdG9yPSh1bmV4cGVjdGVkX3R5cGUmJiB1KSB7IHR5cGUoc3RkOjptb3ZlKHUpKS5zd2FwKCp0
aGlzKTsgcmV0dXJuICp0aGlzOyB9DQogICAgDQogICAgDQoNCiAgICB2b2lkIHN3YXAoZXhwZWN0
ZWQmIG8pDQogICAgew0KICAgICAgICB1c2luZyBzdGQ6OnN3YXA7DQogICAgICAgIGlmIChiYXNl
OjpoYXMgJiYgby5oYXMpDQogICAgICAgICAgICBzd2FwKGJhc2U6OnMudmFsLCBvLnMudmFsKTsN
CiAgICAgICAgZWxzZSBpZiAoYmFzZTo6aGFzICYmICFvLmhhcykgew0KICAgICAgICAgICAgZXJy
b3JfdHlwZSBlKHN0ZDo6bW92ZShvLnMuZXJyKSk7DQogICAgICAgICAgICBfX2V4cGVjdGVkX2Rl
dGFpbDo6ZGVzdHJveShvLnMuZXJyKTsNCiAgICAgICAgICAgIDo6bmV3IChzdGQ6OmFkZHJlc3Nv
ZihvLnMudmFsKSkgdmFsdWVfdHlwZShzdGQ6Om1vdmUoYmFzZTo6cy52YWwpKTsNCiAgICAgICAg
ICAgIF9fZXhwZWN0ZWRfZGV0YWlsOjpkZXN0cm95KGJhc2U6OnMudmFsKTsNCiAgICAgICAgICAg
IDo6bmV3IChzdGQ6OmFkZHJlc3NvZihiYXNlOjpzLmVycikpIGVycm9yX3R5cGUoc3RkOjptb3Zl
KGUpKTsNCiAgICAgICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7DQogICAgICAgIH0gZWxz
ZSBpZiAoIWJhc2U6OmhhcyAmJiBvLmhhcykgew0KICAgICAgICAgICAgdmFsdWVfdHlwZSB2KHN0
ZDo6bW92ZShvLnMudmFsKSk7DQogICAgICAgICAgICBfX2V4cGVjdGVkX2RldGFpbDo6ZGVzdHJv
eShvLnMudmFsKTsNCiAgICAgICAgICAgIDo6bmV3IChzdGQ6OmFkZHJlc3NvZihvLnMuZXJyKSkg
ZXJyb3JfdHlwZShzdGQ6Om1vdmUoYmFzZTo6cy5lcnIpKTsNCiAgICAgICAgICAgIF9fZXhwZWN0
ZWRfZGV0YWlsOjpkZXN0cm95KGJhc2U6OnMuZXJyKTsNCiAgICAgICAgICAgIDo6bmV3IChzdGQ6
OmFkZHJlc3NvZihiYXNlOjpzLnZhbCkpIHZhbHVlX3R5cGUoc3RkOjptb3ZlKHYpKTsNCiAgICAg
ICAgICAgIHN3YXAoYmFzZTo6aGFzLCBvLmhhcyk7DQogICAgICAgIH0gZWxzZQ0KICAgICAgICAg
ICAgc3dhcChiYXNlOjpzLmVyciwgby5zLmVycik7DQogICAgfQ0KDQogICAgY29uc3RleHByIGNv
bnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmYmFzZTo6cy52YWw7
IH0NCiAgICB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJmJhc2U6OnMudmFsOyB9
DQogICAgY29uc3RleHByIGNvbnN0IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpIGNvbnN0ICYgeyBy
ZXR1cm4gYmFzZTo6cy52YWw7IH0NCiAgICB2YWx1ZV90eXBlJiBvcGVyYXRvciooKSAmIHsgcmV0
dXJuIGJhc2U6OnMudmFsOyB9DQogICAgY29uc3RleHByIGNvbnN0IHZhbHVlX3R5cGUmJiBvcGVy
YXRvciooKSBjb25zdCAmJiB7IHJldHVybiBzdGQ6Om1vdmUoYmFzZTo6cy52YWwpOyB9DQogICAg
Y29uc3RleHByIHZhbHVlX3R5cGUmJiBvcGVyYXRvciooKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUo
YmFzZTo6cy52YWwpOyB9DQogICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0NCiAgICBjb25zdGV4cHIgYm9vbCBoYXNfdmFsdWUo
KSBjb25zdCB7IHJldHVybiBiYXNlOjpoYXM7IH0NCiAgICBjb25zdGV4cHIgY29uc3QgdmFsdWVf
dHlwZSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IGJhc2U6OnMudmFsIDog
KF9fZXhwZWN0ZWRfZGV0YWlsOjpfX2V4cGVjdGVkX3Rlcm1pbmF0ZSgpLCBiYXNlOjpzLnZhbCk7
IH0NCiAgICBjb25zdGV4cHIgdmFsdWVfdHlwZSYgdmFsdWUoKSAmIHsgcmV0dXJuIGJhc2U6Omhh
cyA/IGJhc2U6OnMudmFsIDogKF9fZXhwZWN0ZWRfZGV0YWlsOjpfX2V4cGVjdGVkX3Rlcm1pbmF0
ZSgpLCBiYXNlOjpzLnZhbCk7IH0NCiAgICBjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSYmIHZh
bHVlKCkgY29uc3QgJiYgeyByZXR1cm4gc3RkOjptb3ZlKGJhc2U6OmhhcyA/IGJhc2U6OnMudmFs
IDogKF9fZXhwZWN0ZWRfZGV0YWlsOjpfX2V4cGVjdGVkX3Rlcm1pbmF0ZSgpLCBiYXNlOjpzLnZh
bCkpOyB9DQogICAgY29uc3RleHByIHZhbHVlX3R5cGUmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIHN0
ZDo6bW92ZShiYXNlOjpoYXMgPyBiYXNlOjpzLnZhbCA6IChfX2V4cGVjdGVkX2RldGFpbDo6X19l
eHBlY3RlZF90ZXJtaW5hdGUoKSwgYmFzZTo6cy52YWwpKTsgfQ0KICAgIGNvbnN0ZXhwciBjb25z
dCBlcnJvcl90eXBlJiBlcnJvcigpIGNvbnN0ICYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6
OnMuZXJyIDogKF9fZXhwZWN0ZWRfZGV0YWlsOjpfX2V4cGVjdGVkX3Rlcm1pbmF0ZSgpLCBiYXNl
OjpzLmVycik7IH0NCiAgICBlcnJvcl90eXBlJiBlcnJvcigpICYgeyByZXR1cm4gIWJhc2U6Omhh
cyA/IGJhc2U6OnMuZXJyIDogKF9fZXhwZWN0ZWRfZGV0YWlsOjpfX2V4cGVjdGVkX3Rlcm1pbmF0
ZSgpLCBiYXNlOjpzLmVycik7IH0NCiAgICBjb25zdGV4cHIgZXJyb3JfdHlwZSYmIGVycm9yKCkg
JiYgeyByZXR1cm4gc3RkOjptb3ZlKCFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChfX2V4cGVj
dGVkX2RldGFpbDo6X19leHBlY3RlZF90ZXJtaW5hdGUoKSwgYmFzZTo6cy5lcnIpKTsgfQ0KICAg
IGNvbnN0ZXhwciBjb25zdCBlcnJvcl90eXBlJiYgZXJyb3IoKSBjb25zdCAmJiB7IHJldHVybiBz
dGQ6Om1vdmUoIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKF9fZXhwZWN0ZWRfZGV0YWlsOjpf
X2V4cGVjdGVkX3Rlcm1pbmF0ZSgpLCBiYXNlOjpzLmVycikpOyB9DQogICAgdGVtcGxhdGU8Y2xh
c3MgVT4gY29uc3RleHByIHZhbHVlX3R5cGUgdmFsdWVfb3IoVSYmIHUpIGNvbnN0ICYgeyByZXR1
cm4gYmFzZTo6aGFzID8gKip0aGlzIDogc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpmb3J3
YXJkPFU+KHUpKTsgfQ0KICAgIHRlbXBsYXRlPGNsYXNzIFU+IHZhbHVlX3R5cGUgdmFsdWVfb3Io
VSYmIHUpICYmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IHN0ZDo6bW92ZSgqKnRoaXMpIDogc3RhdGlj
X2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQ0KfTsNCg0KdGVtcGxhdGU8
Y2xhc3MgRT4NCmNsYXNzIGV4cGVjdGVkPHZvaWQsIEU+IDogcHJpdmF0ZSBfX2V4cGVjdGVkX2Rl
dGFpbDo6YmFzZV9zZWxlY3Q8dm9pZCwgRT4gew0KICAgIHR5cGVkZWYgX19leHBlY3RlZF9kZXRh
aWw6OmJhc2Vfc2VsZWN0PHZvaWQsIEU+IGJhc2U7DQoNCnB1YmxpYzoNCiAgICB0eXBlZGVmIHR5
cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsNCiAgICB0eXBlZGVmIHR5cGVuYW1l
IGJhc2U6OmVycm9yX3R5cGUgZXJyb3JfdHlwZTsNCiAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6
OnVuZXhwZWN0ZWRfdHlwZSB1bmV4cGVjdGVkX3R5cGU7DQoNCnByaXZhdGU6DQogICAgdHlwZWRl
ZiBleHBlY3RlZDx2YWx1ZV90eXBlLCBlcnJvcl90eXBlPiB0eXBlOw0KDQpwdWJsaWM6DQogICAg
dGVtcGxhdGU8Y2xhc3MgVT4gc3RydWN0IHJlYmluZCB7DQogICAgICAgIHVzaW5nIHR5cGUgPSBl
eHBlY3RlZDxVLCBlcnJvcl90eXBlPjsNCiAgICB9Ow0KDQogICAgY29uc3RleHByIGV4cGVjdGVk
KCkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjp2YWx1ZV90YWcpIHsgfQ0KICAgIGV4cGVjdGVk
KGNvbnN0IGV4cGVjdGVkJikgPSBkZWZhdWx0Ow0KICAgIGV4cGVjdGVkKGV4cGVjdGVkJiYpID0g
ZGVmYXVsdDsNCiAgICANCiAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZF90eXBlIGNv
bnN0JiB1KSA6IGJhc2UoX19leHBlY3RlZF9kZXRhaWw6OmVycm9yX3RhZywgdS52YWx1ZSgpKSB7
IH0NCiAgICBjb25zdGV4cHIgZXhwZWN0ZWQodW5leHBlY3RlZF90eXBlJiYgdSkgOiBiYXNlKF9f
ZXhwZWN0ZWRfZGV0YWlsOjplcnJvcl90YWcsIHN0ZDo6Zm9yd2FyZDx1bmV4cGVjdGVkX3R5cGU+
KHUpLnZhbHVlKCkpIHsgfQ0KICAgIHRlbXBsYXRlPGNsYXNzIEVycj4gY29uc3RleHByIGV4cGVj
dGVkKHVuZXhwZWN0ZWQ8RXJyPiBjb25zdCYgdSkgOiBiYXNlKF9fZXhwZWN0ZWRfZGV0YWlsOjpl
cnJvcl90YWcsIHUudmFsdWUoKSkgeyB9DQoNCiAgICB+ZXhwZWN0ZWQoKSA9IGRlZmF1bHQ7DQoN
CiAgICBleHBlY3RlZCYgb3BlcmF0b3I9KGNvbnN0IGV4cGVjdGVkJiBlKSB7IHR5cGUoZSkuc3dh
cCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQ0KICAgIGV4cGVjdGVkJiBvcGVyYXRvcj0oZXhwZWN0
ZWQmJiBlKSB7IHR5cGUoc3RkOjptb3ZlKGUpKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9
DQogICAgZXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCB1bmV4cGVjdGVkX3R5cGUmIHUpIHsgdHlw
ZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9IA0KICAgIGV4cGVjdGVkJiBvcGVyYXRv
cj0odW5leHBlY3RlZF90eXBlJiYgdSkgeyB0eXBlKHN0ZDo6bW92ZSh1KSkuc3dhcCgqdGhpcyk7
IHJldHVybiAqdGhpczsgfSANCiAgICANCg0KICAgIHZvaWQgc3dhcChleHBlY3RlZCYgbykNCiAg
ICB7DQogICAgICAgIHVzaW5nIHN0ZDo6c3dhcDsNCiAgICAgICAgaWYgKGJhc2U6OmhhcyAmJiBv
Lmhhcykgew0KICAgICAgICAgICAgDQogICAgICAgIH0gZWxzZSBpZiAoYmFzZTo6aGFzICYmICFv
Lmhhcykgew0KICAgICAgICAgICAgZXJyb3JfdHlwZSBlKHN0ZDo6bW92ZShvLnMuZXJyKSk7DQog
ICAgICAgICAgICA6Om5ldyAoc3RkOjphZGRyZXNzb2YoYmFzZTo6cy5lcnIpKSBlcnJvcl90eXBl
KGUpOw0KICAgICAgICAgICAgc3dhcChiYXNlOjpoYXMsIG8uaGFzKTsNCiAgICAgICAgfSBlbHNl
IGlmICghYmFzZTo6aGFzICYmIG8uaGFzKSB7DQogICAgICAgICAgICA6Om5ldyAoc3RkOjphZGRy
ZXNzb2Yoby5zLmVycikpIGVycm9yX3R5cGUoc3RkOjptb3ZlKGJhc2U6OnMuZXJyKSk7DQogICAg
ICAgICAgICBzd2FwKGJhc2U6Omhhcywgby5oYXMpOw0KICAgICAgICB9IGVsc2UNCiAgICAgICAg
ICAgIHN3YXAoYmFzZTo6cy5lcnIsIG8ucy5lcnIpOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9DQogICAg
Y29uc3RleHByIGJvb2wgaGFzX3ZhbHVlKCkgY29uc3QgeyByZXR1cm4gYmFzZTo6aGFzOyB9DQog
ICAgdm9pZCB2YWx1ZSgpIGNvbnN0IHsgIWJhc2U6OmhhcyA/IF9fZXhwZWN0ZWRfZGV0YWlsOjpf
X2V4cGVjdGVkX3Rlcm1pbmF0ZSgpIDogdm9pZCgpOyB9DQogICAgY29uc3RleHByIGNvbnN0IEUm
IGVycm9yKCkgY29uc3QgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoX19l
eHBlY3RlZF9kZXRhaWw6Ol9fZXhwZWN0ZWRfdGVybWluYXRlKCksIGJhc2U6OnMuZXJyKTsgfQ0K
ICAgIEUmIGVycm9yKCkgJiB7IHJldHVybiAhYmFzZTo6aGFzID8gYmFzZTo6cy5lcnIgOiAoX19l
eHBlY3RlZF9kZXRhaWw6Ol9fZXhwZWN0ZWRfdGVybWluYXRlKCksIGJhc2U6OnMuZXJyKTsgfQ0K
ICAgIGNvbnN0ZXhwciBFJiYgZXJyb3IoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoIWJhc2U6Omhh
cyA/IGJhc2U6OnMuZXJyIDogKF9fZXhwZWN0ZWRfZGV0YWlsOjpfX2V4cGVjdGVkX3Rlcm1pbmF0
ZSgpLCBiYXNlOjpzLmVycikpOyB9DQp9Ow0KDQp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBl
eHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gYm9vbCh4KSA9PSBib29sKHkpICYmICh4ID8geC52
YWx1ZSgpID09IHkudmFsdWUoKSA6IHguZXJyb3IoKSA9PSB5LmVycm9yKCkpOyB9DQp0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gISh4ID09IHkp
OyB9DQoNCnRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
ZXhwZWN0ZWQ8dm9pZCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPHZvaWQsIEU+JiB5KSB7IHJldHVy
biBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB0cnVlIDogeC5lcnJvcigpID09IHkuZXJyb3Io
KSk7IH0NCg0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCA/ICp4
ID09IHkgOiBmYWxzZTsgfQ0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1
cm4geSA/IHggPT0gKnkgOiBmYWxzZTsgfQ0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYg
eSkgeyByZXR1cm4geCA/ICp4ICE9IHkgOiB0cnVlOyB9DQp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFz
cyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVjdGVk
PFQsIEU+JiB5KSB7IHJldHVybiB5ID8geCAhPSAqeSA6IHRydWU7IH0NCg0KdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDxU
LCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA/IGZhbHNlIDogeC5l
cnJvcigpID09IHkudmFsdWUoKTsgfQ0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBlY3Rl
ZDxULCBFPiYgeSkgeyByZXR1cm4geSA/IGZhbHNlIDogeC52YWx1ZSgpID09IHkuZXJyb3IoKTsg
fQ0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4g
eCA/IHRydWUgOiB4LmVycm9yKCkgIT0geS52YWx1ZSgpOyB9DQp0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHgs
IGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiB5ID8gdHJ1ZSA6IHgudmFsdWUoKSAh
PSB5LmVycm9yKCk7IH0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRT4gdm9pZCBz
d2FwKGV4cGVjdGVkPFQsIEU+JiB4LCBleHBlY3RlZDxULCBFPiYgeSkgeyB4LnN3YXAoeSk7IH0N
Cg0KfX19IA0KDQpzdGF0aWMgY29uc3QgY29uc3RleHByIGF1dG8mIHVuZXhwZWN0ID0gc3RkOjpl
eHBlcmltZW50YWw6OnVuZXhwZWN0Ow0KdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gdXNpbmcg
RXhwZWN0ZWQgPSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZXhwZWN0ZWQ8VCwgRT47DQojbGluZSAzMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
dGV4dC9TdHJpbmdJbXBsLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BhY2tlZC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUg
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5
XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhcnJh
eSINCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCiNwcmFnbWEgcGFjayhwdXNo
LCA4KQ0KI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDQpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6
IDQxODAgNDQxMiA0NDU1IDQ0OTQgNDUxNCA0NTc0IDQ1ODIgNDU4MyA0NTg3IDQ1ODggNDYxOSA0
NjIzIDQ2MjUgNDYyNiA0NjQzIDQ2NDggNDcwMiA0NzkzIDQ4MjAgNDk4OCA1MDI2IDUwMjcgNTA0
NSA2Mjk0IDQ1NzcgIDUwNTMgKQ0KDQoNCg0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KDQoNCg0KDQoN
CiNsaW5lIDI4ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVk
aW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1
ZGVcXGFycmF5Ig0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBzaXplX3QgX1NpemU+DQpjbGFzcyBf
QXJyYXlfY29uc3RfaXRlcmF0b3INCg0KDQojbGluZSAzNCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4
NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNc
XE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhcnJheSINCnsNCnB1YmxpYzoNCg0KDQoNCiAg
ICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnOw0K
ICAgIHVzaW5nIHZhbHVlX3R5cGUgICAgICAgID0gX1R5Ow0KICAgIHVzaW5nIGRpZmZlcmVuY2Vf
dHlwZSAgID0gcHRyZGlmZl90Ow0KICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgID0gY29uc3Qg
X1R5KjsNCiAgICB1c2luZyByZWZlcmVuY2UgICAgICAgICA9IGNvbnN0IF9UeSY7DQoNCiAgICBl
bnVtIHsgX0VFTl9TSVpFID0gX1NpemUgfTsgDQoNCg0KICAgIGNvbnN0ZXhwciBfQXJyYXlfY29u
c3RfaXRlcmF0b3IoKSBub2V4Y2VwdCA6IF9QdHIoKSB7fQ0KDQogICAgY29uc3RleHByIGV4cGxp
Y2l0IF9BcnJheV9jb25zdF9pdGVyYXRvcihwb2ludGVyIF9QYXJnLCBzaXplX3QgX09mZiA9IDAp
IG5vZXhjZXB0IDogX1B0cihfUGFyZyArIF9PZmYpIHt9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNv
bnN0ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gKl9QdHI7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcG9pbnRl
ciBvcGVyYXRvci0+KCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX1B0cjsNCiAg
ICB9DQoNCiAgICBjb25zdGV4cHIgX0FycmF5X2NvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkg
bm9leGNlcHQgew0KICAgICAgICArK19QdHI7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9
DQoNCiAgICBjb25zdGV4cHIgX0FycmF5X2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSBu
b2V4Y2VwdCB7DQogICAgICAgIF9BcnJheV9jb25zdF9pdGVyYXRvciBfVG1wID0gKnRoaXM7DQog
ICAgICAgICsrX1B0cjsNCiAgICAgICAgcmV0dXJuIF9UbXA7DQogICAgfQ0KDQogICAgY29uc3Rl
eHByIF9BcnJheV9jb25zdF9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIG5vZXhjZXB0IHsNCiAgICAg
ICAgLS1fUHRyOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgY29uc3RleHBy
IF9BcnJheV9jb25zdF9pdGVyYXRvciBvcGVyYXRvci0tKGludCkgbm9leGNlcHQgew0KICAgICAg
ICBfQXJyYXlfY29uc3RfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICAtLV9QdHI7DQog
ICAgICAgIHJldHVybiBfVG1wOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBfQXJyYXlfY29uc3Rf
aXRlcmF0b3ImIG9wZXJhdG9yKz0oY29uc3QgcHRyZGlmZl90IF9PZmYpIG5vZXhjZXB0IHsNCiAg
ICAgICAgX1B0ciArPSBfT2ZmOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAg
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0FycmF5X2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yKyhj
b25zdCBwdHJkaWZmX3QgX09mZikgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBfQXJyYXlfY29u
c3RfaXRlcmF0b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICByZXR1cm4gX1RtcCArPSBfT2ZmOw0K
ICAgIH0NCg0KICAgIGNvbnN0ZXhwciBfQXJyYXlfY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yLT0o
Y29uc3QgcHRyZGlmZl90IF9PZmYpIG5vZXhjZXB0IHsNCiAgICAgICAgX1B0ciAtPSBfT2ZmOw0K
ICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4
cHIgX0FycmF5X2NvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yLShjb25zdCBwdHJkaWZmX3QgX09mZikg
Y29uc3Qgbm9leGNlcHQgew0KICAgICAgICBfQXJyYXlfY29uc3RfaXRlcmF0b3IgX1RtcCA9ICp0
aGlzOw0KICAgICAgICByZXR1cm4gX1RtcCAtPSBfT2ZmOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gY29uc3RleHByIHB0cmRpZmZfdCBvcGVyYXRvci0oY29uc3QgX0FycmF5X2NvbnN0X2l0
ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9QdHIgLSBf
UmlnaHQuX1B0cjsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciByZWZlcmVu
Y2Ugb3BlcmF0b3JbXShjb25zdCBwdHJkaWZmX3QgX09mZikgY29uc3Qgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gX1B0cltfT2ZmXTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgX0FycmF5X2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQp
IGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9QdHIgPT0gX1JpZ2h0Ll9QdHI7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IF9BcnJheV9jb25zdF9pdGVyYXRvciYgX1JpZ2h0KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAg
IHJldHVybiAhKCp0aGlzID09IF9SaWdodCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgX0FycmF5X2NvbnN0X2l0ZXJhdG9yJiBfUmln
aHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIF9QdHIgPCBfUmlnaHQuX1B0cjsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25z
dCBfQXJyYXlfY29uc3RfaXRlcmF0b3ImIF9SaWdodCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gX1JpZ2h0IDwgKnRoaXM7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IF9BcnJheV9jb25zdF9pdGVyYXRvciYgX1JpZ2h0
KSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiAhKF9SaWdodCA8ICp0aGlzKTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qg
X0FycmF5X2NvbnN0X2l0ZXJhdG9yJiBfUmlnaHQpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuICEoKnRoaXMgPCBfUmlnaHQpOw0KICAgIH0NCg0KICAgIHVzaW5nIF9QcmV2ZW50X2lu
aGVyaXRpbmdfdW53cmFwID0gX0FycmF5X2NvbnN0X2l0ZXJhdG9yOw0KDQogICAgW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgcG9pbnRlciBfVW53cmFwcGVkKCkgY29uc3Qgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gX1B0cjsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgX1Vu
d3JhcF93aGVuX3VudmVyaWZpZWQgPSB0cnVlOw0KDQogICAgY29uc3RleHByIHZvaWQgX1NlZWtf
dG8ocG9pbnRlciBfSXQpIG5vZXhjZXB0IHsNCiAgICAgICAgX1B0ciA9IF9JdDsNCiAgICB9DQoN
CnByaXZhdGU6DQogICAgcG9pbnRlciBfUHRyOyANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMjgyICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGFycmF5Ig0KfTsNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyOTIgIkM6
XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50
ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXkiDQoN
CnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCltbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIF9BcnJheV9jb25zdF9pdGVyYXRvcjxfVHksIF9TaXplPiBvcGVyYXRvcisoDQogICAgY29u
c3QgcHRyZGlmZl90IF9PZmYsIF9BcnJheV9jb25zdF9pdGVyYXRvcjxfVHksIF9TaXplPiBfTmV4
dCkgbm9leGNlcHQgew0KICAgIHJldHVybiBfTmV4dCArPSBfT2ZmOw0KfQ0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMzExICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYu
Mjg4MDFcXGluY2x1ZGVcXGFycmF5Ig0KDQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBf
U2l6ZT4NCmNsYXNzIF9BcnJheV9pdGVyYXRvciA6IHB1YmxpYyBfQXJyYXlfY29uc3RfaXRlcmF0
b3I8X1R5LCBfU2l6ZT4gew0KcHVibGljOg0KICAgIHVzaW5nIF9NeWJhc2UgPSBfQXJyYXlfY29u
c3RfaXRlcmF0b3I8X1R5LCBfU2l6ZT47DQoNCg0KDQoNCiAgICB1c2luZyBpdGVyYXRvcl9jYXRl
Z29yeSA9IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnOw0KICAgIHVzaW5nIHZhbHVlX3R5cGUg
ICAgICAgID0gX1R5Ow0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgID0gcHRyZGlmZl90Ow0K
ICAgIHVzaW5nIHBvaW50ZXIgICAgICAgICAgID0gX1R5KjsNCiAgICB1c2luZyByZWZlcmVuY2Ug
ICAgICAgICA9IF9UeSY7DQoNCiAgICBlbnVtIHsgX0VFTl9TSVpFID0gX1NpemUgfTsgDQoNCiAg
ICBjb25zdGV4cHIgX0FycmF5X2l0ZXJhdG9yKCkgbm9leGNlcHQge30NCg0KICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBfQXJyYXlfaXRlcmF0b3IocG9pbnRlciBfUGFyZywgc2l6ZV90IF9PZmYgPSAw
KSBub2V4Y2VwdCA6IF9NeWJhc2UoX1BhcmcsIF9PZmYpIHt9DQoNCiAgICBbW25vZGlzY2FyZF1d
IGNvbnN0ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gY29uc3RfY2FzdDxyZWZlcmVuY2U+KF9NeWJhc2U6Om9wZXJhdG9yKigpKTsNCiAg
ICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBwb2ludGVyIG9wZXJhdG9yLT4oKSBj
b25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PHBvaW50ZXI+KF9NeWJh
c2U6Om9wZXJhdG9yLT4oKSk7DQogICAgfQ0KDQogICAgY29uc3RleHByIF9BcnJheV9pdGVyYXRv
ciYgb3BlcmF0b3IrKygpIG5vZXhjZXB0IHsNCiAgICAgICAgX015YmFzZTo6b3BlcmF0b3IrKygp
Ow0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgY29uc3RleHByIF9BcnJheV9p
dGVyYXRvciBvcGVyYXRvcisrKGludCkgbm9leGNlcHQgew0KICAgICAgICBfQXJyYXlfaXRlcmF0
b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICBfTXliYXNlOjpvcGVyYXRvcisrKCk7DQogICAgICAg
IHJldHVybiBfVG1wOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBfQXJyYXlfaXRlcmF0b3ImIG9w
ZXJhdG9yLS0oKSBub2V4Y2VwdCB7DQogICAgICAgIF9NeWJhc2U6Om9wZXJhdG9yLS0oKTsNCiAg
ICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBfQXJyYXlfaXRlcmF0
b3Igb3BlcmF0b3ItLShpbnQpIG5vZXhjZXB0IHsNCiAgICAgICAgX0FycmF5X2l0ZXJhdG9yIF9U
bXAgPSAqdGhpczsNCiAgICAgICAgX015YmFzZTo6b3BlcmF0b3ItLSgpOw0KICAgICAgICByZXR1
cm4gX1RtcDsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgX0FycmF5X2l0ZXJhdG9yJiBvcGVyYXRv
cis9KGNvbnN0IHB0cmRpZmZfdCBfT2ZmKSBub2V4Y2VwdCB7DQogICAgICAgIF9NeWJhc2U6Om9w
ZXJhdG9yKz0oX09mZik7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBfQXJyYXlfaXRlcmF0b3Igb3BlcmF0b3IrKGNvbnN0IHB0cmRp
ZmZfdCBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIF9BcnJheV9pdGVyYXRvciBfVG1w
ID0gKnRoaXM7DQogICAgICAgIHJldHVybiBfVG1wICs9IF9PZmY7DQogICAgfQ0KDQogICAgY29u
c3RleHByIF9BcnJheV9pdGVyYXRvciYgb3BlcmF0b3ItPShjb25zdCBwdHJkaWZmX3QgX09mZikg
bm9leGNlcHQgew0KICAgICAgICBfTXliYXNlOjpvcGVyYXRvci09KF9PZmYpOw0KICAgICAgICBy
ZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdXNpbmcgX015YmFzZTo6b3BlcmF0b3ItOw0KDQog
ICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0FycmF5X2l0ZXJhdG9yIG9wZXJhdG9yLShjb25z
dCBwdHJkaWZmX3QgX09mZikgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBfQXJyYXlfaXRlcmF0
b3IgX1RtcCA9ICp0aGlzOw0KICAgICAgICByZXR1cm4gX1RtcCAtPSBfT2ZmOw0KICAgIH0NCg0K
ICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IHB0
cmRpZmZfdCBfT2ZmKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0
PHJlZmVyZW5jZT4oX015YmFzZTo6b3BlcmF0b3JbXShfT2ZmKSk7DQogICAgfQ0KDQogICAgdXNp
bmcgX1ByZXZlbnRfaW5oZXJpdGluZ191bndyYXAgPSBfQXJyYXlfaXRlcmF0b3I7DQoNCiAgICBb
W25vZGlzY2FyZF1dIGNvbnN0ZXhwciBwb2ludGVyIF9VbndyYXBwZWQoKSBjb25zdCBub2V4Y2Vw
dCB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PHBvaW50ZXI+KF9NeWJhc2U6Ol9VbndyYXBw
ZWQoKSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgc2l6ZV90IF9TaXplPg0K
W1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX0FycmF5X2l0ZXJhdG9yPF9UeSwgX1NpemU+IG9wZXJh
dG9yKygNCiAgICBjb25zdCBwdHJkaWZmX3QgX09mZiwgX0FycmF5X2l0ZXJhdG9yPF9UeSwgX1Np
emU+IF9OZXh0KSBub2V4Y2VwdCB7DQogICAgcmV0dXJuIF9OZXh0ICs9IF9PZmY7DQp9DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MTQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZD
XFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXkiDQoNCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwg
c2l6ZV90IF9TaXplPg0KY2xhc3MgYXJyYXkgeyANCnB1YmxpYzoNCiAgICB1c2luZyB2YWx1ZV90
eXBlICAgICAgPSBfVHk7DQogICAgdXNpbmcgc2l6ZV90eXBlICAgICAgID0gc2l6ZV90Ow0KICAg
IHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZfdDsNCiAgICB1c2luZyBwb2ludGVyICAg
ICAgICAgPSBfVHkqOw0KICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgICA9IGNvbnN0IF9UeSo7DQog
ICAgdXNpbmcgcmVmZXJlbmNlICAgICAgID0gX1R5JjsNCiAgICB1c2luZyBjb25zdF9yZWZlcmVu
Y2UgPSBjb25zdCBfVHkmOw0KDQogICAgdXNpbmcgaXRlcmF0b3IgICAgICAgPSBfQXJyYXlfaXRl
cmF0b3I8X1R5LCBfU2l6ZT47DQogICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBfQXJyYXlfY29u
c3RfaXRlcmF0b3I8X1R5LCBfU2l6ZT47DQoNCiAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yICAg
ICAgID0gOjpzdGQ6OiByZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsNCiAgICB1c2luZyBjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yID0gOjpzdGQ6OiByZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJh
dG9yPjsNCg0KDQoNCg0KDQojbGluZSA0MzggIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNy
b3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwx
NC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXkiDQoNCiAgICBpbmxpbmUgdm9pZCBmaWxsKGNvbnN0
IF9UeSYgX1ZhbHVlKSB7DQogICAgICAgIDo6c3RkOjogZmlsbF9uKF9FbGVtcywgX1NpemUsIF9W
YWx1ZSk7DQogICAgfQ0KDQogICAgaW5saW5lIHZvaWQgc3dhcChhcnJheSYgX090aGVyKSBub2V4
Y2VwdChfSXNfbm90aHJvd19zd2FwcGFibGU8X1R5Pjo6dmFsdWUpIHsNCiAgICAgICAgX1N3YXBf
cmFuZ2VzX3VuY2hlY2tlZChfRWxlbXMsIF9FbGVtcyArIF9TaXplLCBfT3RoZXIuX0VsZW1zKTsN
CiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBpdGVyYXRvciBiZWdpbigpIG5v
ZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKF9FbGVtcywgMCk7DQogICAgfQ0KDQog
ICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcihfRWxlbXMsIDApOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKF9FbGVtcywgX1NpemUpOw0KICAgIH0NCg0KICAg
IFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKF9FbGVtcywgX1NpemUpOw0KICAg
IH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2lu
KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7DQog
ICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfcmV2ZXJzZV9pdGVyYXRv
ciByYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yKGVuZCgpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBy
ZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiByZXZlcnNl
X2l0ZXJhdG9yKGJlZ2luKCkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHBy
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gYmVnaW4oKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1d
IGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvciBjZW5kKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAg
ICByZXR1cm4gZW5kKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICBy
ZXR1cm4gcmJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0
dXJuIHJlbmQoKTsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgX1R5KiBfVW5jaGVja2VkX2JlZ2lu
KCkgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX0VsZW1zOw0KICAgIH0NCg0KICAgIGNvbnN0
ZXhwciBjb25zdCBfVHkqIF9VbmNoZWNrZWRfYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQogICAg
ICAgIHJldHVybiBfRWxlbXM7DQogICAgfQ0KDQogICAgY29uc3RleHByIF9UeSogX1VuY2hlY2tl
ZF9lbmQoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBfRWxlbXMgKyBfU2l6ZTsNCiAgICB9
DQoNCiAgICBjb25zdGV4cHIgY29uc3QgX1R5KiBfVW5jaGVja2VkX2VuZCgpIGNvbnN0IG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIF9FbGVtcyArIF9TaXplOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gY29uc3RleHByIHNpemVfdHlwZSBzaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAg
ICAgICByZXR1cm4gX1NpemU7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIg
c2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gX1Np
emU7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgYm9vbCBlbXB0eSgpIGNv
bnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIFtbbm9k
aXNjYXJkXV0gY29uc3RleHByIHJlZmVyZW5jZSBhdChzaXplX3R5cGUgX1Bvcykgew0KICAgICAg
ICBpZiAoX1NpemUgPD0gX1Bvcykgew0KICAgICAgICAgICAgX1hyYW4oKTsNCiAgICAgICAgfQ0K
DQogICAgICAgIHJldHVybiBfRWxlbXNbX1Bvc107DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRd
XSBjb25zdGV4cHIgY29uc3RfcmVmZXJlbmNlIGF0KHNpemVfdHlwZSBfUG9zKSBjb25zdCB7DQog
ICAgICAgIGlmIChfU2l6ZSA8PSBfUG9zKSB7DQogICAgICAgICAgICBfWHJhbigpOw0KICAgICAg
ICB9DQoNCiAgICAgICAgcmV0dXJuIF9FbGVtc1tfUG9zXTsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3JbXSggIHNpemVfdHlwZSBfUG9zKSBu
b2V4Y2VwdCAgew0KDQoNCiNsaW5lIDU0MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1pY3Jv
c29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxWQ1xcVG9vbHNcXE1TVkNcXDE0
LjI2LjI4ODAxXFxpbmNsdWRlXFxhcnJheSINCg0KICAgICAgICByZXR1cm4gX0VsZW1zW19Qb3Nd
Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0X3JlZmVyZW5jZSBv
cGVyYXRvcltdKCAgc2l6ZV90eXBlIF9Qb3MpIGNvbnN0IG5vZXhjZXB0DQogICAgIHsNCg0KDQoj
bGluZSA1NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
b1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVk
ZVxcYXJyYXkiDQoNCiAgICAgICAgcmV0dXJuIF9FbGVtc1tfUG9zXTsNCiAgICB9DQoNCiAgICBb
W25vZGlzY2FyZF1dIGNvbnN0ZXhwciByZWZlcmVuY2UgZnJvbnQoKSBub2V4Y2VwdCAgew0KICAg
ICAgICByZXR1cm4gX0VsZW1zWzBdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3Rl
eHByIGNvbnN0X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0IG5vZXhjZXB0ICB7DQogICAgICAgIHJl
dHVybiBfRWxlbXNbMF07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgcmVm
ZXJlbmNlIGJhY2soKSBub2V4Y2VwdCAgew0KICAgICAgICByZXR1cm4gX0VsZW1zW19TaXplIC0g
MV07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfcmVmZXJlbmNl
IGJhY2soKSBjb25zdCBub2V4Y2VwdCAgew0KICAgICAgICByZXR1cm4gX0VsZW1zW19TaXplIC0g
MV07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgX1R5KiBkYXRhKCkgbm9l
eGNlcHQgew0KICAgICAgICByZXR1cm4gX0VsZW1zOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gY29uc3RleHByIGNvbnN0IF9UeSogZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAgICAg
cmV0dXJuIF9FbGVtczsNCiAgICB9DQoNCiAgICBbW25vcmV0dXJuXV0gdm9pZCBfWHJhbigpIGNv
bnN0IHsNCiAgICAgICAgX1hvdXRfb2ZfcmFuZ2UoImludmFsaWQgYXJyYXk8VCwgTj4gc3Vic2Ny
aXB0Iik7DQogICAgfQ0KDQogICAgX1R5IF9FbGVtc1tfU2l6ZV07DQp9Ow0KDQoNCnRlbXBsYXRl
IDxjbGFzcyBfRmlyc3QsIGNsYXNzLi4uIF9SZXN0Pg0Kc3RydWN0IF9FbmZvcmNlX3NhbWUgew0K
ICAgIHN0YXRpY19hc3NlcnQoY29uanVuY3Rpb25fdjxpc19zYW1lPF9GaXJzdCwgX1Jlc3Q+Li4u
PiwNCiAgICAgICAgIk40Njg3IDI2LjMuNy4yIFthcnJheS5jb25zXS8yOiAiDQogICAgICAgICJS
ZXF1aXJlczogKGlzX3NhbWVfdjxULCBVPiAmJiAuLi4pIGlzIHRydWUuIE90aGVyd2lzZSB0aGUg
cHJvZ3JhbSBpcyBpbGwtZm9ybWVkLiIpOw0KICAgIHVzaW5nIHR5cGUgPSBfRmlyc3Q7DQp9Ow0K
DQp0ZW1wbGF0ZSA8Y2xhc3MgX0ZpcnN0LCBjbGFzcy4uLiBfUmVzdD4NCmFycmF5KF9GaXJzdCwg
X1Jlc3QuLi4pIC0+IGFycmF5PHR5cGVuYW1lIF9FbmZvcmNlX3NhbWU8X0ZpcnN0LCBfUmVzdC4u
Lj46OnR5cGUsIDEgKyBzaXplb2YuLi4oX1Jlc3QpPjsNCiNsaW5lIDU5OSAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhcnJheSINCg0KdGVtcGxhdGUg
PGNsYXNzIF9UeT4NCmNsYXNzIGFycmF5PF9UeSwgMD4gew0KcHVibGljOg0KICAgIHVzaW5nIHZh
bHVlX3R5cGUgICAgICA9IF9UeTsNCiAgICB1c2luZyBzaXplX3R5cGUgICAgICAgPSBzaXplX3Q7
DQogICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90Ow0KICAgIHVzaW5nIHBvaW50
ZXIgICAgICAgICA9IF9UeSo7DQogICAgdXNpbmcgY29uc3RfcG9pbnRlciAgID0gY29uc3QgX1R5
KjsNCiAgICB1c2luZyByZWZlcmVuY2UgICAgICAgPSBfVHkmOw0KICAgIHVzaW5nIGNvbnN0X3Jl
ZmVyZW5jZSA9IGNvbnN0IF9UeSY7DQoNCiAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAg
ID0gX0FycmF5X2l0ZXJhdG9yPF9UeSwgMD47DQogICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgICAg
ICAgICA9IF9BcnJheV9jb25zdF9pdGVyYXRvcjxfVHksIDA+Ow0KICAgIHVzaW5nIHJldmVyc2Vf
aXRlcmF0b3IgICAgICAgPSA6OnN0ZDo6IHJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+Ow0KICAg
IHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSA6OnN0ZDo6IHJldmVyc2VfaXRlcmF0b3I8
Y29uc3RfaXRlcmF0b3I+Ow0KDQoNCg0KI2xpbmUgNjE5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2
KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxUb29sc1xc
TVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFycmF5Ig0KDQogICAgaW5saW5lIHZvaWQgZmls
bChjb25zdCBfVHkmKSB7fQ0KDQogICAgaW5saW5lIHZvaWQgc3dhcChhcnJheSYpIG5vZXhjZXB0
IHt9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBpdGVyYXRvciBiZWdpbigpIG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIGl0ZXJhdG9ye307DQogICAgfQ0KDQogICAgW1tub2Rpc2Nh
cmRdXSBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcnt9Ow0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJk
XV0gY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGl0
ZXJhdG9ye307DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0
b3J7fTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJh
dG9yIHJiZWdpbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3Io
ZW5kKCkpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gY29u
c3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBj
b25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgbm9leGNlcHQgew0KICAgICAgICByZXR1
cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1d
IGNvbnN0ZXhwciBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCBub2V4Y2VwdCB7
DQogICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOw0KICAgIH0N
Cg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RleHByIGNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNv
bnN0IG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIGJlZ2luKCk7DQogICAgfQ0KDQogICAgW1tu
b2Rpc2NhcmRdXSBjb25zdGV4cHIgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IG5vZXhjZXB0
IHsNCiAgICAgICAgcmV0dXJuIGVuZCgpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29u
c3RleHByIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsN
CiAgICAgICAgcmV0dXJuIHJiZWdpbigpOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29u
c3RleHByIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCBub2V4Y2VwdCB7DQog
ICAgICAgIHJldHVybiByZW5kKCk7DQogICAgfQ0KDQogICAgY29uc3RleHByIF9UeSogX1VuY2hl
Y2tlZF9iZWdpbigpIG5vZXhjZXB0IHsNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0K
DQogICAgY29uc3RleHByIGNvbnN0IF9UeSogX1VuY2hlY2tlZF9iZWdpbigpIGNvbnN0IG5vZXhj
ZXB0IHsNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0KDQogICAgY29uc3RleHByIF9U
eSogX1VuY2hlY2tlZF9lbmQoKSBub2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBudWxscHRyOw0K
ICAgIH0NCg0KICAgIGNvbnN0ZXhwciBjb25zdCBfVHkqIF9VbmNoZWNrZWRfZW5kKCkgY29uc3Qg
bm9leGNlcHQgew0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQoNCiAgICBbW25vZGlz
Y2FyZF1dIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdGV4cHIgc2l6ZV90
eXBlIG1heF9zaXplKCkgY29uc3Qgbm9leGNlcHQgew0KICAgICAgICByZXR1cm4gMDsNCiAgICB9
DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBib29sIGVtcHR5KCkgY29uc3Qgbm9leGNl
cHQgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICBbW25vcmV0dXJuXV0gcmVm
ZXJlbmNlIGF0KHNpemVfdHlwZSkgew0KICAgICAgICBfWHJhbigpOw0KICAgIH0NCg0KICAgIFtb
bm9yZXR1cm5dXSBjb25zdF9yZWZlcmVuY2UgYXQoc2l6ZV90eXBlKSBjb25zdCB7DQogICAgICAg
IF9YcmFuKCk7DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSByZWZlcmVuY2Ugb3BlcmF0b3Jb
XShzaXplX3R5cGUpIG5vZXhjZXB0ICB7DQoNCg0KI2xpbmUgNzEyICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFycmF5Ig0KDQogICAgICAgIHJldHVy
biBfRWxlbXNbMF07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBjb25zdF9yZWZlcmVuY2Ug
b3BlcmF0b3JbXShzaXplX3R5cGUpIGNvbnN0IG5vZXhjZXB0ICB7DQoNCg0KI2xpbmUgNzIwICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFycmF5Ig0K
DQogICAgICAgIHJldHVybiBfRWxlbXNbMF07DQogICAgfQ0KDQogICAgW1tub2Rpc2NhcmRdXSBy
ZWZlcmVuY2UgZnJvbnQoKSBub2V4Y2VwdCAgew0KDQoNCiNsaW5lIDcyOCAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvXFwyMDE5XFxFbnRlcnByaXNlXFxW
Q1xcVG9vbHNcXE1TVkNcXDE0LjI2LjI4ODAxXFxpbmNsdWRlXFxhcnJheSINCg0KICAgICAgICBy
ZXR1cm4gX0VsZW1zWzBdOw0KICAgIH0NCg0KICAgIFtbbm9kaXNjYXJkXV0gY29uc3RfcmVmZXJl
bmNlIGZyb250KCkgY29uc3Qgbm9leGNlcHQgIHsNCg0KDQojbGluZSA3MzYgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXkiDQoNCiAgICAgICAg
cmV0dXJuIF9FbGVtc1swXTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIHJlZmVyZW5jZSBi
YWNrKCkgbm9leGNlcHQgIHsNCg0KDQojbGluZSA3NDQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXkiDQoNCiAgICAgICAgcmV0dXJuIF9FbGVt
c1swXTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0X3JlZmVyZW5jZSBiYWNrKCkg
Y29uc3Qgbm9leGNlcHQgIHsNCg0KDQojbGluZSA3NTIgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxN
U1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXkiDQoNCiAgICAgICAgcmV0dXJuIF9FbGVt
c1swXTsNCiAgICB9DQoNCiAgICBbW25vZGlzY2FyZF1dIGNvbnN0ZXhwciBfVHkqIGRhdGEoKSBu
b2V4Y2VwdCB7DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KICAgIFtbbm9kaXNj
YXJkXV0gY29uc3RleHByIGNvbnN0IF9UeSogZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsNCiAgICAg
ICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0KDQogICAgW1tub3JldHVybl1dIHZvaWQgX1hyYW4o
KSBjb25zdCB7DQogICAgICAgIF9Yb3V0X29mX3JhbmdlKCJpbnZhbGlkIGFycmF5PFQsIDA+IHN1
YnNjcmlwdCIpOw0KICAgIH0NCg0KICAgIF9UeSBfRWxlbXNbMV07DQp9Ow0KDQp0ZW1wbGF0ZSA8
Y2xhc3MgX1R5LCBzaXplX3QgX1NpemUsIGVuYWJsZV9pZl90PF9TaXplID09IDAgfHwgX0lzX3N3
YXBwYWJsZTxfVHk+Ojp2YWx1ZSwgaW50PiA9IDA+DQppbmxpbmUgdm9pZCBzd2FwKGFycmF5PF9U
eSwgX1NpemU+JiBfTGVmdCwgYXJyYXk8X1R5LCBfU2l6ZT4mIF9SaWdodCkgbm9leGNlcHQobm9l
eGNlcHQoX0xlZnQuc3dhcChfUmlnaHQpKSkgew0KICAgIHJldHVybiBfTGVmdC5zd2FwKF9SaWdo
dCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCltbbm9kaXNjYXJk
XV0gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBhcnJheTxfVHksIF9TaXplPiYgX0xlZnQs
IGNvbnN0IGFycmF5PF9UeSwgX1NpemU+JiBfUmlnaHQpIHsNCiAgICByZXR1cm4gOjpzdGQ6OiBl
cXVhbChfTGVmdC5iZWdpbigpLCBfTGVmdC5lbmQoKSwgX1JpZ2h0LmJlZ2luKCkpOw0KfQ0KDQp0
ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBzaXplX3QgX1NpemU+DQpbW25vZGlzY2FyZF1dIGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgYXJyYXk8X1R5LCBfU2l6ZT4mIF9MZWZ0LCBjb25zdCBhcnJh
eTxfVHksIF9TaXplPiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuICEoX0xlZnQgPT0gX1JpZ2h0KTsN
Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIF9UeSwgc2l6ZV90IF9TaXplPg0KW1tub2Rpc2NhcmRdXSBp
bmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgYXJyYXk8X1R5LCBfU2l6ZT4mIF9MZWZ0LCBjb25z
dCBhcnJheTxfVHksIF9TaXplPiYgX1JpZ2h0KSB7DQogICAgcmV0dXJuIDo6c3RkOjogbGV4aWNv
Z3JhcGhpY2FsX2NvbXBhcmUoX0xlZnQuYmVnaW4oKSwgX0xlZnQuZW5kKCksIF9SaWdodC5iZWdp
bigpLCBfUmlnaHQuZW5kKCkpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5LCBzaXplX3QgX1Np
emU+DQpbW25vZGlzY2FyZF1dIGlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBhcnJheTxfVHks
IF9TaXplPiYgX0xlZnQsIGNvbnN0IGFycmF5PF9UeSwgX1NpemU+JiBfUmlnaHQpIHsNCiAgICBy
ZXR1cm4gX1JpZ2h0IDwgX0xlZnQ7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNpemVfdCBf
U2l6ZT4NCltbbm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBhcnJheTxf
VHksIF9TaXplPiYgX0xlZnQsIGNvbnN0IGFycmF5PF9UeSwgX1NpemU+JiBfUmlnaHQpIHsNCiAg
ICByZXR1cm4gIShfUmlnaHQgPCBfTGVmdCk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBfVHksIHNp
emVfdCBfU2l6ZT4NCltbbm9kaXNjYXJkXV0gaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBh
cnJheTxfVHksIF9TaXplPiYgX0xlZnQsIGNvbnN0IGFycmF5PF9UeSwgX1NpemU+JiBfUmlnaHQp
IHsNCiAgICByZXR1cm4gIShfTGVmdCA8IF9SaWdodCk7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODM4ICJD
OlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVu
dGVycHJpc2VcXFZDXFxUb29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFycmF5Ig0K
DQoNCnRlbXBsYXRlIDxzaXplX3QgX0lkeCwgY2xhc3MgX1R5LCBzaXplX3QgX1NpemU+DQpbW25v
ZGlzY2FyZF1dIGNvbnN0ZXhwciBfVHkmIGdldChhcnJheTxfVHksIF9TaXplPiYgX0Fycikgbm9l
eGNlcHQgew0KICAgIHN0YXRpY19hc3NlcnQoX0lkeCA8IF9TaXplLCAiYXJyYXkgaW5kZXggb3V0
IG9mIGJvdW5kcyIpOw0KICAgIHJldHVybiBfQXJyLl9FbGVtc1tfSWR4XTsNCn0NCg0KdGVtcGxh
dGUgPHNpemVfdCBfSWR4LCBjbGFzcyBfVHksIHNpemVfdCBfU2l6ZT4NCltbbm9kaXNjYXJkXV0g
Y29uc3RleHByIGNvbnN0IF9UeSYgZ2V0KGNvbnN0IGFycmF5PF9UeSwgX1NpemU+JiBfQXJyKSBu
b2V4Y2VwdCB7DQogICAgc3RhdGljX2Fzc2VydChfSWR4IDwgX1NpemUsICJhcnJheSBpbmRleCBv
dXQgb2YgYm91bmRzIik7DQogICAgcmV0dXJuIF9BcnIuX0VsZW1zW19JZHhdOw0KfQ0KDQp0ZW1w
bGF0ZSA8c2l6ZV90IF9JZHgsIGNsYXNzIF9UeSwgc2l6ZV90IF9TaXplPg0KW1tub2Rpc2NhcmRd
XSBjb25zdGV4cHIgX1R5JiYgZ2V0KGFycmF5PF9UeSwgX1NpemU+JiYgX0Fycikgbm9leGNlcHQg
ew0KICAgIHN0YXRpY19hc3NlcnQoX0lkeCA8IF9TaXplLCAiYXJyYXkgaW5kZXggb3V0IG9mIGJv
dW5kcyIpOw0KICAgIHJldHVybiA6OnN0ZDo6IG1vdmUoX0Fyci5fRWxlbXNbX0lkeF0pOw0KfQ0K
DQp0ZW1wbGF0ZSA8c2l6ZV90IF9JZHgsIGNsYXNzIF9UeSwgc2l6ZV90IF9TaXplPg0KW1tub2Rp
c2NhcmRdXSBjb25zdGV4cHIgY29uc3QgX1R5JiYgZ2V0KGNvbnN0IGFycmF5PF9UeSwgX1NpemU+
JiYgX0Fycikgbm9leGNlcHQgew0KICAgIHN0YXRpY19hc3NlcnQoX0lkeCA8IF9TaXplLCAiYXJy
YXkgaW5kZXggb3V0IG9mIGJvdW5kcyIpOw0KICAgIHJldHVybiA6OnN0ZDo6IG1vdmUoX0Fyci5f
RWxlbXNbX0lkeF0pOw0KfQ0KDQoNCg0KDQoNCg0KI2xpbmUgODcwICJDOlxcUHJvZ3JhbSBGaWxl
cyAoeDg2KVxcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cXDIwMTlcXEVudGVycHJpc2VcXFZDXFxU
b29sc1xcTVNWQ1xcMTQuMjYuMjg4MDFcXGluY2x1ZGVcXGFycmF5Ig0KfQ0KDQoNCg0KI3ByYWdt
YSB3YXJuaW5nKHBvcCkNCiNwcmFnbWEgcGFjayhwb3ApDQojbGluZSA4NzcgIkM6XFxQcm9ncmFt
IEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxcRW50ZXJwcmlzZVxc
VkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXkiDQojbGluZSA4Nzgg
IkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpb1xcMjAxOVxc
RW50ZXJwcmlzZVxcVkNcXFRvb2xzXFxNU1ZDXFwxNC4yNi4yODgwMVxcaW5jbHVkZVxcYXJyYXki
DQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGFja2VkLmgiDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVW5hbGlnbmVkQWNjZXNz
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPg0KaW5saW5lIFR5cGUgdW5hbGlnbmVkTG9hZChjb25zdCB2b2lkKiBwb2ludGVyKQ0K
ew0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfY29weWFibGU8VHlwZT46OnZh
bHVlLCAiIik7DQogICAgVHlwZSByZXN1bHQgeyB9Ow0KICAgIG1lbWNweSgmcmVzdWx0LCBwb2lu
dGVyLCBzaXplb2YoVHlwZSkpOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFR5cGU+DQppbmxpbmUgdm9pZCB1bmFsaWduZWRTdG9yZSh2b2lkKiBwb2ludGVyLCBU
eXBlIHZhbHVlKQ0Kew0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfY29weWFi
bGU8VHlwZT46OnZhbHVlLCAiIik7DQogICAgbWVtY3B5KHBvaW50ZXIsICZ2YWx1ZSwgc2l6ZW9m
KFR5cGUpKTsNCn0NCg0KfSANCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QYWNrZWQuaCINCg0KbmFtZXNwYWNlIFdURiB7
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpjbGFzcyBQYWNrZWQgew0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
UGFja2VkVHlwZSA9IHRydWU7DQoNCiAgICBQYWNrZWQoKQ0KICAgICAgICA6IFBhY2tlZChUIHsg
fSkNCiAgICB7DQogICAgfQ0KDQogICAgUGFja2VkKGNvbnN0IFQmIHZhbHVlKQ0KICAgIHsNCiAg
ICAgICAgdW5hbGlnbmVkU3RvcmU8VD4obV9zdG9yYWdlLmRhdGEoKSwgdmFsdWUpOw0KICAgIH0N
Cg0KICAgIFQgZ2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiB1bmFsaWduZWRMb2Fk
PFQ+KG1fc3RvcmFnZS5kYXRhKCkpOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0KGNvbnN0IFQmIHZh
bHVlKQ0KICAgIHsNCiAgICAgICAgdW5hbGlnbmVkU3RvcmU8VD4obV9zdG9yYWdlLmRhdGEoKSwg
dmFsdWUpOw0KICAgIH0NCg0KICAgIFBhY2tlZDxUPiYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVl
KQ0KICAgIHsNCiAgICAgICAgc2V0KHZhbHVlKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPGNsYXNzIFU+DQogICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUp
DQogICAgew0KICAgICAgICBUIG9sZFZhbHVlID0gZ2V0KCk7DQogICAgICAgIHNldChzdGQ6OmZv
cndhcmQ8VT4obmV3VmFsdWUpKTsNCiAgICAgICAgcmV0dXJuIG9sZFZhbHVlOw0KICAgIH0NCg0K
ICAgIHZvaWQgc3dhcChQYWNrZWQmIG90aGVyKQ0KICAgIHsNCiAgICAgICAgbV9zdG9yYWdlLnN3
YXAob3RoZXIubV9zdG9yYWdlKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhl
ciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BhY2tlZFR5cGU+Pg0KICAg
IHZvaWQgc3dhcChPdGhlciYgb3RoZXIpDQogICAgew0KICAgICAgICBUIHQxID0gZ2V0KCk7DQog
ICAgICAgIFQgdDIgPSBvdGhlci5nZXQoKTsNCiAgICAgICAgc2V0KHQyKTsNCiAgICAgICAgb3Ro
ZXIuc2V0KHQxKTsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAoVCYgdDIpDQogICAgew0KICAgICAg
ICBUIHQxID0gZ2V0KCk7DQogICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOw0KICAgICAgICBzZXQo
dDEpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIHNpemVvZihU
KT4gbV9zdG9yYWdlOw0KfTsNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBwYXNz
ZWRBbGlnbm1lbnQ+DQpjbGFzcyBQYWNrZWRBbGlnbmVkUHRyIHsNCiAgICBwdWJsaWM6IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24p
IHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2Vk
ID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVy
VGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHN0YXRpY19hc3NlcnQoaGFzT25lQml0U2V0
KHBhc3NlZEFsaWdubWVudCksICJBbGlnbm1lbnQgbmVlZHMgdG8gYmUgcG93ZXItb2YtdHdvIik7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50ID0gcGFzc2VkQWxpZ25tZW50
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BhY2tlZFR5cGUgPSB0cnVlOw0KICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXplSWZQcm9maXRhYmxlID0g
Z2V0TFNCU2V0Q29uc3RleHByKGFsaWdubWVudCk7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBzdG9yYWdlU2l6ZVdpdGhvdXRBbGlnbm1lbnRTaGlmdCA9IHJvdW5kVXBUb011bHRpcGxl
T2Y8OD4oKDQ4KSkgLyA4Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNp
emVXaXRoQWxpZ25tZW50U2hpZnQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPDg+KCg0OCkgLSBhbGln
bm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUpIC8gODsNCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUgPSBzdG9yYWdlU2l6ZVdpdGhvdXRBbGlnbm1l
bnRTaGlmdCA+IHN0b3JhZ2VTaXplV2l0aEFsaWdubWVudFNoaWZ0Ow0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgYWxpZ25tZW50U2hpZnRTaXplID0gaXNBbGlnbm1lbnRTaGlmdFByb2Zp
dGFibGUgPyBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUgOiAwOw0KICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgc3RvcmFnZVNpemUgPSBzdG9yYWdlU2l6ZVdpdGhBbGlnbm1lbnRT
aGlmdDsNCg0KICAgIGNvbnN0ZXhwciBQYWNrZWRBbGlnbmVkUHRyKCkNCiAgICAgICAgOiBtX3N0
b3JhZ2UoKQ0KICAgIHsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgUGFja2VkQWxpZ25lZFB0cihz
dGQ6Om51bGxwdHJfdCkNCiAgICAgICAgOiBtX3N0b3JhZ2UoKQ0KICAgIHsNCiAgICB9DQoNCiAg
ICBQYWNrZWRBbGlnbmVkUHRyKFQqIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgc2V0KHZhbHVlKTsN
CiAgICB9DQoNCiAgICBUKiBnZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICB1aW50cHRyX3QgdmFsdWUgPSAwOw0KDQogICAgICAgIG1lbWNweSgmdmFsdWUsIG1f
c3RvcmFnZS5kYXRhKCksIHN0b3JhZ2VTaXplKTsNCg0KDQojbGluZSAxNDQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BhY2tlZC5oIg0K
ICAgICAgICBpZiAoaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFibGUpDQogICAgICAgICAgICB2YWx1
ZSA8PD0gYWxpZ25tZW50U2hpZnRTaXplOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MTU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9QYWNrZWQuaCINCg0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih2YWx1ZSk7
DQogICAgfQ0KDQogICAgdm9pZCBzZXQoVCogcGFzc2VkVmFsdWUpDQogICAgew0KICAgICAgICB1
aW50cHRyX3QgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYXNzZWRWYWx1ZSk7DQog
ICAgICAgIGlmIChpc0FsaWdubWVudFNoaWZ0UHJvZml0YWJsZSkNCiAgICAgICAgICAgIHZhbHVl
ID4+PSBhbGlnbm1lbnRTaGlmdFNpemU7DQoNCiAgICAgICAgbWVtY3B5KG1fc3RvcmFnZS5kYXRh
KCksICZ2YWx1ZSwgc3RvcmFnZVNpemUpOw0KDQoNCiNsaW5lIDE3MyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGFja2VkLmgiDQogICAg
ICAgICgodm9pZCkwKTsNCiAgICB9DQoNCiAgICB2b2lkIGNsZWFyKCkNCiAgICB7DQogICAgICAg
IHNldChudWxscHRyKTsNCiAgICB9DQoNCiAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gZ2V0KCk7IH0NCiAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7IH0N
CiAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsgfQ0KDQogICAgDQog
ICAgdHlwZWRlZiBUKiAoUGFja2VkQWxpZ25lZFB0cjo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOw0K
ICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBnZXQoKSA/
ICZQYWNrZWRBbGlnbmVkUHRyOjptX3N0b3JhZ2UgOiBudWxscHRyOyB9DQogICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9DQoNCiAgICBQYWNrZWRBbGln
bmVkUHRyJiBvcGVyYXRvcj0oVCogdmFsdWUpDQogICAgew0KICAgICAgICBzZXQodmFsdWUpOw0K
ICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8Y2xhc3MgVT4NCiAg
ICBUKiBleGNoYW5nZShVJiYgbmV3VmFsdWUpDQogICAgew0KICAgICAgICBUKiBvbGRWYWx1ZSA9
IGdldCgpOw0KICAgICAgICBzZXQoc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7DQogICAgICAg
IHJldHVybiBvbGRWYWx1ZTsNCiAgICB9DQoNCiAgICB2b2lkIHN3YXAoc3RkOjpudWxscHRyX3Qp
IHsgY2xlYXIoKTsgfQ0KDQogICAgdm9pZCBzd2FwKFBhY2tlZEFsaWduZWRQdHImIG90aGVyKQ0K
ICAgIHsNCiAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsNCiAgICB9DQoN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90
PE90aGVyOjppc1BhY2tlZFR5cGU+Pg0KICAgIHZvaWQgc3dhcChPdGhlciYgb3RoZXIpDQogICAg
ew0KICAgICAgICBUKiB0MSA9IGdldCgpOw0KICAgICAgICBUKiB0MiA9IG90aGVyLmdldCgpOw0K
ICAgICAgICBzZXQodDIpOw0KICAgICAgICBvdGhlci5zZXQodDEpOw0KICAgIH0NCg0KICAgIHZv
aWQgc3dhcChUKiB0MikNCiAgICB7DQogICAgICAgIFQqIHQxID0gZ2V0KCk7DQogICAgICAgIHN0
ZDo6c3dhcCh0MSwgdDIpOw0KICAgICAgICBzZXQodDEpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAg
ICBzdGQ6OmFycmF5PHVpbnQ4X3QsIHN0b3JhZ2VTaXplPiBtX3N0b3JhZ2U7DQp9Ow0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPg0KY2xhc3MgUGFja2VkPFQqPiA6IHB1YmxpYyBQYWNrZWRBbGlnbmVk
UHRyPFQsIDE+IHsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gUGFja2VkQWxpZ25lZFB0cjxU
LCAxPjsNCiAgICB1c2luZyBCYXNlOjpCYXNlOw0KDQogICAgDQogICAgUGFja2VkKEhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpIDogQmFzZShiaXR3aXNlX2Nhc3Q8VCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oQmFzZTo6YWxpZ25tZW50KSkpIHsgfQ0KICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBCYXNlOjpnZXQoKSA9PSBiaXR3aXNlX2Nhc3Q8VCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oQmFzZTo6YWxpZ25tZW50KSk7IH0NCn07DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+DQp1c2luZyBQYWNrZWRQdHIgPSBQYWNrZWQ8VCo+Ow0KDQp0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4NCnN0cnVjdCBHZXRQdHJIZWxwZXI8UGFja2VkUHRyPFQ+PiB7DQogICAg
dXNpbmcgUHRyVHlwZSA9IFQqOw0KICAgIHN0YXRpYyBUKiBnZXRQdHIoY29uc3QgUGFja2VkUHRy
PFQ+JiBwKSB7IHJldHVybiBjb25zdF9jYXN0PFQqPihwLmdldCgpKTsgfQ0KfTsNCg0KdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgSXNTbWFydFB0cjxQYWNrZWRQdHI8VD4+IHsNCiAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSB0cnVlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4NCnN0cnVjdCBQYWNrZWRQdHJUcmFpdHMgew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IHVzaW5nIFJlYmluZFRyYWl0cyA9IFBhY2tlZFB0clRyYWl0czxVPjsNCg0KICAgIHVzaW5nIFN0
b3JhZ2VUeXBlID0gUGFja2VkUHRyPFQ+Ow0KDQogICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RhdGlj
IF9fZm9yY2VpbmxpbmUgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVl
KSB7IHJldHVybiBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlcj4gc3RhdGljIF9fZm9yY2VpbmxpbmUgdm9pZCBzd2FwKFBhY2tlZFB0cjxUPiYg
YSwgT3RoZXImIGIpIHsgYS5zd2FwKGIpOyB9DQoNCiAgICBzdGF0aWMgX19mb3JjZWlubGluZSBU
KiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyLmdldCgpOyB9DQoN
CiAgICANCiAgICANCiAgICANCiAgICBzdGF0aWMgU3RvcmFnZVR5cGUgaGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgeyByZXR1cm4gU3RvcmFnZVR5cGUgeyBiaXR3aXNlX2Nhc3Q8VCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oU3RvcmFnZVR5cGU6OmFsaWdubWVudCkpIH07IH0NCiAgICBzdGF0aWMg
X19mb3JjZWlubGluZSBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKGNvbnN0IFN0b3JhZ2VU
eXBlJiBwdHIpIHsgcmV0dXJuIHB0ci5nZXQoKSA9PSBiaXR3aXNlX2Nhc3Q8VCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oU3RvcmFnZVR5cGU6OmFsaWdubWVudCkpOyB9DQp9Ow0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UGFja2VkUHRyPFA+PiA6IFB0ckhhc2g8
UGFja2VkUHRyPFA+PiB7IH07DQoNCn0gDQoNCnVzaW5nIFdURjo6UGFja2VkOw0KdXNpbmcgV1RG
OjpQYWNrZWRBbGlnbmVkUHRyOw0KdXNpbmcgV1RGOjpQYWNrZWRQdHI7DQojbGluZSAzMyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4
dC9TdHJpbmdJbXBsLmgiDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmgiDQoNCm5hbWVzcGFjZSBX
VEYgew0KDQp0ZW1wbGF0ZSA8dWludHB0cl90IG1hc2s+DQppbmxpbmUgYm9vbCBpc0FsaWduZWRU
byhjb25zdCB2b2lkKiBwb2ludGVyKQ0Kew0KICAgIHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihwb2ludGVyKSAmIG1hc2spOw0KfQ0KDQoNCg0KdHlwZWRlZiB1aW50cHRyX3Qg
TWFjaGluZVdvcmQ7DQpjb25zdCB1aW50cHRyX3QgbWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrID0g
c2l6ZW9mKE1hY2hpbmVXb3JkKSAtIDE7DQoNCmlubGluZSBib29sIGlzQWxpZ25lZFRvTWFjaGlu
ZVdvcmQoY29uc3Qgdm9pZCogcG9pbnRlcikNCnsNCiAgICByZXR1cm4gaXNBbGlnbmVkVG88bWFj
aGluZVdvcmRBbGlnbm1lbnRNYXNrPihwb2ludGVyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIFQqIGFsaWduVG9NYWNoaW5lV29yZChUKiBwb2ludGVyKQ0Kew0KICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocG9pbnRl
cikgJiB+bWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrKTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IHNp
emUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0cnVjdCBOb25BU0NJSU1hc2s7DQp0ZW1wbGF0
ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8NCwgVUNoYXI+IHsNCiAgICBzdGF0aWMgaW5saW5lIHVp
bnQzMl90IHZhbHVlKCkgeyByZXR1cm4gMHhGRjgwRkY4MFU7IH0NCn07DQp0ZW1wbGF0ZTw+IHN0
cnVjdCBOb25BU0NJSU1hc2s8NCwgTENoYXI+IHsNCiAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90
IHZhbHVlKCkgeyByZXR1cm4gMHg4MDgwODA4MFU7IH0NCn07DQp0ZW1wbGF0ZTw+IHN0cnVjdCBO
b25BU0NJSU1hc2s8OCwgVUNoYXI+IHsNCiAgICBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHZhbHVl
KCkgeyByZXR1cm4gMHhGRjgwRkY4MEZGODBGRjgwVUxMOyB9DQp9Ow0KdGVtcGxhdGU8PiBzdHJ1
Y3QgTm9uQVNDSUlNYXNrPDgsIExDaGFyPiB7DQogICAgc3RhdGljIGlubGluZSB1aW50NjRfdCB2
YWx1ZSgpIHsgcmV0dXJuIDB4ODA4MDgwODA4MDgwODA4MFVMTDsgfQ0KfTsNCg0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPg0KaW5saW5lIGJvb2wgaXNBbGxBU0NJSShNYWNoaW5l
V29yZCB3b3JkKQ0Kew0KICAgIHJldHVybiAhKHdvcmQgJiBOb25BU0NJSU1hc2s8c2l6ZW9mKE1h
Y2hpbmVXb3JkKSwgQ2hhcmFjdGVyVHlwZT46OnZhbHVlKCkpOw0KfQ0KDQoNCg0KdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4NCmlubGluZSBib29sIGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQ0Kew0KICAg
IE1hY2hpbmVXb3JkIGFsbENoYXJCaXRzID0gMDsNCiAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBl
bmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3RoOw0KDQogICAgDQogICAgd2hpbGUgKCFpc0FsaWduZWRU
b01hY2hpbmVXb3JkKGNoYXJhY3RlcnMpICYmIGNoYXJhY3RlcnMgIT0gZW5kKSB7DQogICAgICAg
IGFsbENoYXJCaXRzIHw9ICpjaGFyYWN0ZXJzOw0KICAgICAgICArK2NoYXJhY3RlcnM7DQogICAg
fQ0KDQogICAgDQogICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogd29yZEVuZCA9IGFsaWduVG9NYWNo
aW5lV29yZChlbmQpOw0KICAgIGNvbnN0IHNpemVfdCBsb29wSW5jcmVtZW50ID0gc2l6ZW9mKE1h
Y2hpbmVXb3JkKSAvIHNpemVvZihDaGFyYWN0ZXJUeXBlKTsNCiAgICB3aGlsZSAoY2hhcmFjdGVy
cyA8IHdvcmRFbmQpIHsNCiAgICAgICAgYWxsQ2hhckJpdHMgfD0gKihyZWludGVycHJldF9jYXN0
PGNvbnN0IE1hY2hpbmVXb3JkKj4oY2hhcmFjdGVycykpOw0KICAgICAgICBjaGFyYWN0ZXJzICs9
IGxvb3BJbmNyZW1lbnQ7DQogICAgfQ0KDQogICAgDQogICAgd2hpbGUgKGNoYXJhY3RlcnMgIT0g
ZW5kKSB7DQogICAgICAgIGFsbENoYXJCaXRzIHw9ICpjaGFyYWN0ZXJzOw0KICAgICAgICArK2No
YXJhY3RlcnM7DQogICAgfQ0KDQogICAgTWFjaGluZVdvcmQgbm9uQVNDSUlCaXRNYXNrID0gTm9u
QVNDSUlNYXNrPHNpemVvZihNYWNoaW5lV29yZCksIENoYXJhY3RlclR5cGU+Ojp2YWx1ZSgpOw0K
ICAgIHJldHVybiAhKGFsbENoYXJCaXRzICYgbm9uQVNDSUlCaXRNYXNrKTsNCn0NCg0KaW5saW5l
IHZvaWQgY29weUxDaGFyc0Zyb21VQ2hhclNvdXJjZShMQ2hhciogZGVzdGluYXRpb24sIGNvbnN0
IFVDaGFyKiBzb3VyY2UsIHNpemVfdCBsZW5ndGgpDQp7DQoNCiAgICBjb25zdCB1aW50cHRyX3Qg
bWVtb3J5QWNjZXNzU2l6ZSA9IDE2OyANCiAgICBjb25zdCB1aW50cHRyX3QgbWVtb3J5QWNjZXNz
TWFzayA9IG1lbW9yeUFjY2Vzc1NpemUgLSAxOw0KDQogICAgc2l6ZV90IGkgPSAwOw0KICAgIGZv
ciAoO2kgPCBsZW5ndGggJiYgIWlzQWxpZ25lZFRvPG1lbW9yeUFjY2Vzc01hc2s+KCZzb3VyY2Vb
aV0pOyArK2kpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBkZXN0aW5hdGlvbltpXSA9
IHN0YXRpY19jYXN0PExDaGFyPihzb3VyY2VbaV0pOw0KICAgIH0NCg0KICAgIGNvbnN0IHVpbnRw
dHJfdCBzb3VyY2VMb2FkU2l6ZSA9IDMyOyANCiAgICBjb25zdCBzaXplX3QgdWNoYXJzUGVyTG9v
cCA9IHNvdXJjZUxvYWRTaXplIC8gc2l6ZW9mKFVDaGFyKTsNCiAgICBpZiAobGVuZ3RoID4gdWNo
YXJzUGVyTG9vcCkgew0KICAgICAgICBjb25zdCBzaXplX3QgZW5kTGVuZ3RoID0gbGVuZ3RoIC0g
dWNoYXJzUGVyTG9vcCArIDE7DQogICAgICAgIGZvciAoOyBpIDwgZW5kTGVuZ3RoOyBpICs9IHVj
aGFyc1Blckxvb3ApIHsNCg0KDQoNCg0KICAgICAgICAgICAgX19tMTI4aSBmaXJzdDhVQ2hhcnMg
PSBfbW1fbG9hZF9zaTEyOChyZWludGVycHJldF9jYXN0PGNvbnN0IF9fbTEyOGkqPigmc291cmNl
W2ldKSk7DQogICAgICAgICAgICBfX20xMjhpIHNlY29uZDhVQ2hhcnMgPSBfbW1fbG9hZF9zaTEy
OChyZWludGVycHJldF9jYXN0PGNvbnN0IF9fbTEyOGkqPigmc291cmNlW2krOF0pKTsNCiAgICAg
ICAgICAgIF9fbTEyOGkgcGFja2VkQ2hhcnMgPSBfbW1fcGFja3VzX2VwaTE2KGZpcnN0OFVDaGFy
cywgc2Vjb25kOFVDaGFycyk7DQogICAgICAgICAgICBfbW1fc3RvcmV1X3NpMTI4KHJlaW50ZXJw
cmV0X2Nhc3Q8X19tMTI4aSo+KCZkZXN0aW5hdGlvbltpXSksIHBhY2tlZENoYXJzKTsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHN0YXRpY19jYXN0PExDaGFyPihzb3Vy
Y2VbaV0pOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxOTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oIg0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6
OmNoYXJhY3RlcnNBcmVBbGxBU0NJSTsNCiNsaW5lIDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0ltcGwuaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL3RleHQvQ29udmVyc2lvbk1vZGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBXVEYgew0K
DQp0eXBlZGVmIGVudW0gew0KICAgIExlbmllbnRDb252ZXJzaW9uLA0KICAgIFN0cmljdENvbnZl
cnNpb24sDQogICAgU3RyaWN0Q29udmVyc2lvblJlcGxhY2luZ1VucGFpcmVkU3Vycm9nYXRlc1dp
dGhGRkZELA0KfSBDb252ZXJzaW9uTW9kZTsNCg0KfSANCg0KdXNpbmcgV1RGOjpDb252ZXJzaW9u
TW9kZTsNCnVzaW5nIFdURjo6TGVuaWVudENvbnZlcnNpb247DQp1c2luZyBXVEY6OlN0cmljdENv
bnZlcnNpb247DQp1c2luZyBXVEY6OlN0cmljdENvbnZlcnNpb25SZXBsYWNpbmdVbnBhaXJlZFN1
cnJvZ2F0ZXNXaXRoRkZGRDsNCiNsaW5lIDM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0ltcGwuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L3RleHQvU3RyaW5nQ29tbW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNoYXIu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcdW5pY29kZS9zdHJpbmdvcHRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxOTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvc3RyaW5nb3B0aW9ucy5oIg0KI2xp
bmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXHVuaWNvZGUvdWNoYXIuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNwbWFwLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgVUNQTWFwIFVDUE1hcDsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZW51bSBVQ1BNYXBSYW5nZU9wdGlvbiB7DQogICAgDQoNCg0KDQoNCiAgICBVQ1BN
QVBfUkFOR0VfTk9STUFMLA0KICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICBV
Q1BNQVBfUkFOR0VfRklYRURfTEVBRF9TVVJST0dBVEVTLA0KICAgIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiAgICBVQ1BNQVBfUkFOR0VfRklYRURfQUxMX1NVUlJPR0FURVMNCn07DQoN
CnR5cGVkZWYgZW51bSBVQ1BNYXBSYW5nZU9wdGlvbiBVQ1BNYXBSYW5nZU9wdGlvbjsNCiNsaW5l
IDg3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFx1bmljb2RlL3VjcG1hcC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxleHBvcnQpIHVpbnQzMl90IF9fY2RlY2wNCnVjcG1hcF9nZXRfNjMoY29u
c3QgVUNQTWFwICptYXAsIFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0eXBlZGVmIHVpbnQzMl90IF9fY2RlY2wNClVDUE1hcFZhbHVlRmlsdGVyKGNvbnN0IHZvaWQg
KmNvbnRleHQsIHVpbnQzMl90IHZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIzMiBfX2NkZWNsDQp1Y3BtYXBfZ2V0UmFuZ2VfNjMo
Y29uc3QgVUNQTWFwICptYXAsIFVDaGFyMzIgc3RhcnQsDQogICAgICAgICAgICAgICAgVUNQTWFw
UmFuZ2VPcHRpb24gb3B0aW9uLCB1aW50MzJfdCBzdXJyb2dhdGVWYWx1ZSwNCiAgICAgICAgICAg
ICAgICBVQ1BNYXBWYWx1ZUZpbHRlciAqZmlsdGVyLCBjb25zdCB2b2lkICpjb250ZXh0LCB1aW50
MzJfdCAqcFZhbHVlKTsNCg0KfQ0KDQojbGluZSAxNjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNwbWFwLmgiDQojbGlu
ZSAxNjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXHVuaWNvZGUvdWNwbWFwLmgiDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y2hhci5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBVU2V0IFVTZXQ7DQoNCiNsaW5l
IDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFx1bmljb2RlL3VjaGFyLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51
bSBVUHJvcGVydHkgew0KICAgIA0KDQoNCg0KDQoNCiAgICANCg0KDQoNCg0KICAgIA0KDQogICAg
VUNIQVJfQUxQSEFCRVRJQz0wLA0KICAgIA0KICAgIFVDSEFSX0JJTkFSWV9TVEFSVD1VQ0hBUl9B
TFBIQUJFVElDLA0KICAgIA0KICAgIFVDSEFSX0FTQ0lJX0hFWF9ESUdJVD0xLA0KICAgIA0KDQoN
CiAgICBVQ0hBUl9CSURJX0NPTlRST0w9MiwNCiAgICANCg0KDQoNCiAgICBVQ0hBUl9CSURJX01J
UlJPUkVEPTMsDQogICAgDQogICAgVUNIQVJfREFTSD00LA0KICAgIA0KDQoNCiAgICBVQ0hBUl9E
RUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UPTUsDQogICAgDQoNCiAgICBVQ0hBUl9ERVBSRUNB
VEVEPTYsDQogICAgDQoNCiAgICBVQ0hBUl9ESUFDUklUSUM9NywNCiAgICANCg0KDQogICAgVUNI
QVJfRVhURU5ERVI9OCwNCiAgICANCg0KDQogICAgVUNIQVJfRlVMTF9DT01QT1NJVElPTl9FWENM
VVNJT049OSwNCiAgICANCg0KDQogICAgVUNIQVJfR1JBUEhFTUVfQkFTRT0xMCwNCiAgICANCg0K
DQogICAgVUNIQVJfR1JBUEhFTUVfRVhURU5EPTExLA0KICAgIA0KDQogICAgVUNIQVJfR1JBUEhF
TUVfTElOSz0xMiwNCiAgICANCg0KICAgIFVDSEFSX0hFWF9ESUdJVD0xMywNCiAgICANCg0KICAg
IFVDSEFSX0hZUEhFTj0xNCwNCiAgICANCg0KDQoNCiAgICBVQ0hBUl9JRF9DT05USU5VRT0xNSwN
CiAgICANCg0KDQogICAgVUNIQVJfSURfU1RBUlQ9MTYsDQogICAgDQoNCiAgICBVQ0hBUl9JREVP
R1JBUEhJQz0xNywNCiAgICANCg0KDQogICAgVUNIQVJfSURTX0JJTkFSWV9PUEVSQVRPUj0xOCwN
CiAgICANCg0KDQogICAgVUNIQVJfSURTX1RSSU5BUllfT1BFUkFUT1I9MTksDQogICAgDQoNCiAg
ICBVQ0hBUl9KT0lOX0NPTlRST0w9MjAsDQogICAgDQoNCg0KICAgIFVDSEFSX0xPR0lDQUxfT1JE
RVJfRVhDRVBUSU9OPTIxLA0KICAgIA0KDQogICAgVUNIQVJfTE9XRVJDQVNFPTIyLA0KICAgIA0K
ICAgIFVDSEFSX01BVEg9MjMsDQogICAgDQoNCg0KICAgIFVDSEFSX05PTkNIQVJBQ1RFUl9DT0RF
X1BPSU5UPTI0LA0KICAgIA0KICAgIFVDSEFSX1FVT1RBVElPTl9NQVJLPTI1LA0KICAgIA0KDQoN
CiAgICBVQ0hBUl9SQURJQ0FMPTI2LA0KICAgIA0KDQoNCg0KICAgIFVDSEFSX1NPRlRfRE9UVEVE
PTI3LA0KICAgIA0KDQoNCiAgICBVQ0hBUl9URVJNSU5BTF9QVU5DVFVBVElPTj0yOCwNCiAgICAN
Cg0KDQogICAgVUNIQVJfVU5JRklFRF9JREVPR1JBUEg9MjksDQogICAgDQoNCiAgICBVQ0hBUl9V
UFBFUkNBU0U9MzAsDQogICAgDQoNCg0KICAgIFVDSEFSX1dISVRFX1NQQUNFPTMxLA0KICAgIA0K
DQoNCiAgICBVQ0hBUl9YSURfQ09OVElOVUU9MzIsDQogICAgDQoNCiAgICBVQ0hBUl9YSURfU1RB
UlQ9MzMsDQogICAgDQoNCg0KICAgVUNIQVJfQ0FTRV9TRU5TSVRJVkU9MzQsDQogICAgDQoNCg0K
DQogICAgVUNIQVJfU19URVJNPTM1LA0KICAgIA0KDQoNCg0KDQogICAgVUNIQVJfVkFSSUFUSU9O
X1NFTEVDVE9SPTM2LA0KICAgIA0KDQoNCg0KDQoNCiAgICBVQ0hBUl9ORkRfSU5FUlQ9MzcsDQog
ICAgDQoNCg0KDQoNCg0KICAgIFVDSEFSX05GS0RfSU5FUlQ9MzgsDQogICAgDQoNCg0KDQoNCg0K
ICAgIFVDSEFSX05GQ19JTkVSVD0zOSwNCiAgICANCg0KDQoNCg0KDQogICAgVUNIQVJfTkZLQ19J
TkVSVD00MCwNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCiAgICBVQ0hBUl9TRUdNRU5UX1NUQVJU
RVI9NDEsDQogICAgDQoNCg0KDQogICAgVUNIQVJfUEFUVEVSTl9TWU5UQVg9NDIsDQogICAgDQoN
Cg0KDQogICAgVUNIQVJfUEFUVEVSTl9XSElURV9TUEFDRT00MywNCiAgICANCg0KDQoNCiAgICBV
Q0hBUl9QT1NJWF9BTE5VTT00NCwNCiAgICANCg0KDQoNCiAgICBVQ0hBUl9QT1NJWF9CTEFOSz00
NSwNCiAgICANCg0KDQoNCiAgICBVQ0hBUl9QT1NJWF9HUkFQSD00NiwNCiAgICANCg0KDQoNCiAg
ICBVQ0hBUl9QT1NJWF9QUklOVD00NywNCiAgICANCg0KDQoNCiAgICBVQ0hBUl9QT1NJWF9YRElH
SVQ9NDgsDQogICAgDQogICAgVUNIQVJfQ0FTRUQ9NDksDQogICAgDQogICAgVUNIQVJfQ0FTRV9J
R05PUkFCTEU9NTAsDQogICAgDQogICAgVUNIQVJfQ0hBTkdFU19XSEVOX0xPV0VSQ0FTRUQ9NTEs
DQogICAgDQogICAgVUNIQVJfQ0hBTkdFU19XSEVOX1VQUEVSQ0FTRUQ9NTIsDQogICAgDQogICAg
VUNIQVJfQ0hBTkdFU19XSEVOX1RJVExFQ0FTRUQ9NTMsDQogICAgDQogICAgVUNIQVJfQ0hBTkdF
U19XSEVOX0NBU0VGT0xERUQ9NTQsDQogICAgDQogICAgVUNIQVJfQ0hBTkdFU19XSEVOX0NBU0VN
QVBQRUQ9NTUsDQogICAgDQogICAgVUNIQVJfQ0hBTkdFU19XSEVOX05GS0NfQ0FTRUZPTERFRD01
NiwNCiAgICANCg0KDQoNCg0KDQogICAgVUNIQVJfRU1PSkk9NTcsDQogICAgDQoNCg0KDQoNCg0K
ICAgIFVDSEFSX0VNT0pJX1BSRVNFTlRBVElPTj01OCwNCiAgICANCg0KDQoNCg0KDQogICAgVUNI
QVJfRU1PSklfTU9ESUZJRVI9NTksDQogICAgDQoNCg0KDQoNCg0KICAgIFVDSEFSX0VNT0pJX01P
RElGSUVSX0JBU0U9NjAsDQogICAgDQoNCg0KDQoNCg0KICAgIFVDSEFSX0VNT0pJX0NPTVBPTkVO
VD02MSwNCiAgICANCg0KDQoNCiAgICBVQ0hBUl9SRUdJT05BTF9JTkRJQ0FUT1I9NjIsDQogICAg
DQoNCg0KDQogICAgVUNIQVJfUFJFUEVOREVEX0NPTkNBVEVOQVRJT05fTUFSSz02MywNCiAgICAN
Cg0KDQoNCg0KDQogICAgVUNIQVJfRVhURU5ERURfUElDVE9HUkFQSElDPTY0LA0KDQoNCg0KDQoN
Cg0KDQoNCiAgICANCg0KICAgIFVDSEFSX0JJRElfQ0xBU1M9MHgxMDAwLA0KICAgIA0KICAgIFVD
SEFSX0lOVF9TVEFSVD1VQ0hBUl9CSURJX0NMQVNTLA0KICAgIA0KDQogICAgVUNIQVJfQkxPQ0s9
MHgxMDAxLA0KICAgIA0KDQogICAgVUNIQVJfQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUz0weDEw
MDIsDQogICAgDQoNCiAgICBVQ0hBUl9ERUNPTVBPU0lUSU9OX1RZUEU9MHgxMDAzLA0KICAgIA0K
DQoNCiAgICBVQ0hBUl9FQVNUX0FTSUFOX1dJRFRIPTB4MTAwNCwNCiAgICANCg0KICAgIFVDSEFS
X0dFTkVSQUxfQ0FURUdPUlk9MHgxMDA1LA0KICAgIA0KDQogICAgVUNIQVJfSk9JTklOR19HUk9V
UD0weDEwMDYsDQogICAgDQoNCiAgICBVQ0hBUl9KT0lOSU5HX1RZUEU9MHgxMDA3LA0KICAgIA0K
DQogICAgVUNIQVJfTElORV9CUkVBSz0weDEwMDgsDQogICAgDQoNCiAgICBVQ0hBUl9OVU1FUklD
X1RZUEU9MHgxMDA5LA0KICAgIA0KDQogICAgVUNIQVJfU0NSSVBUPTB4MTAwQSwNCiAgICANCg0K
ICAgIFVDSEFSX0hBTkdVTF9TWUxMQUJMRV9UWVBFPTB4MTAwQiwNCiAgICANCg0KICAgIFVDSEFS
X05GRF9RVUlDS19DSEVDSz0weDEwMEMsDQogICAgDQoNCiAgICBVQ0hBUl9ORktEX1FVSUNLX0NI
RUNLPTB4MTAwRCwNCiAgICANCg0KICAgIFVDSEFSX05GQ19RVUlDS19DSEVDSz0weDEwMEUsDQog
ICAgDQoNCiAgICBVQ0hBUl9ORktDX1FVSUNLX0NIRUNLPTB4MTAwRiwNCiAgICANCg0KDQoNCg0K
DQogICAgVUNIQVJfTEVBRF9DQU5PTklDQUxfQ09NQklOSU5HX0NMQVNTPTB4MTAxMCwNCiAgICAN
Cg0KDQoNCg0KDQogICAgVUNIQVJfVFJBSUxfQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUz0weDEw
MTEsDQogICAgDQoNCg0KDQogICAgVUNIQVJfR1JBUEhFTUVfQ0xVU1RFUl9CUkVBSz0weDEwMTIs
DQogICAgDQoNCg0KDQogICAgVUNIQVJfU0VOVEVOQ0VfQlJFQUs9MHgxMDEzLA0KICAgIA0KDQoN
Cg0KICAgIFVDSEFSX1dPUkRfQlJFQUs9MHgxMDE0LA0KICAgIA0KDQoNCg0KICAgIFVDSEFSX0JJ
RElfUEFJUkVEX0JSQUNLRVRfVFlQRT0weDEwMTUsDQogICAgDQoNCg0KDQoNCg0KDQogICAgVUNI
QVJfSU5ESUNfUE9TSVRJT05BTF9DQVRFR09SWT0weDEwMTYsDQogICAgDQoNCg0KDQoNCg0KICAg
IFVDSEFSX0lORElDX1NZTExBQklDX0NBVEVHT1JZPTB4MTAxNywNCiAgICANCg0KDQoNCg0KDQog
ICAgVUNIQVJfVkVSVElDQUxfT1JJRU5UQVRJT049MHgxMDE4LA0KDQoNCg0KDQoNCg0KDQoNCiAg
ICANCg0KDQoNCg0KDQoNCg0KICAgIFVDSEFSX0dFTkVSQUxfQ0FURUdPUllfTUFTSz0weDIwMDAs
DQogICAgDQogICAgVUNIQVJfTUFTS19TVEFSVD1VQ0hBUl9HRU5FUkFMX0NBVEVHT1JZX01BU0ss
DQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQogICAgVUNIQVJfTlVNRVJJQ19WQUxVRT0weDMwMDAs
DQogICAgDQogICAgVUNIQVJfRE9VQkxFX1NUQVJUPVVDSEFSX05VTUVSSUNfVkFMVUUsDQoNCg0K
DQoNCg0KDQoNCg0KICAgIA0KDQogICAgVUNIQVJfQUdFPTB4NDAwMCwNCiAgICANCiAgICBVQ0hB
Ul9TVFJJTkdfU1RBUlQ9VUNIQVJfQUdFLA0KICAgIA0KDQogICAgVUNIQVJfQklESV9NSVJST1JJ
TkdfR0xZUEg9MHg0MDAxLA0KICAgIA0KDQogICAgVUNIQVJfQ0FTRV9GT0xESU5HPTB4NDAwMiwN
Cg0KDQoNCg0KDQogICAgDQoNCiAgICBVQ0hBUl9MT1dFUkNBU0VfTUFQUElORz0weDQwMDQsDQog
ICAgDQoNCiAgICBVQ0hBUl9OQU1FPTB4NDAwNSwNCiAgICANCg0KICAgIFVDSEFSX1NJTVBMRV9D
QVNFX0ZPTERJTkc9MHg0MDA2LA0KICAgIA0KDQogICAgVUNIQVJfU0lNUExFX0xPV0VSQ0FTRV9N
QVBQSU5HPTB4NDAwNywNCiAgICANCg0KICAgIFVDSEFSX1NJTVBMRV9USVRMRUNBU0VfTUFQUElO
Rz0weDQwMDgsDQogICAgDQoNCiAgICBVQ0hBUl9TSU1QTEVfVVBQRVJDQVNFX01BUFBJTkc9MHg0
MDA5LA0KICAgIA0KDQogICAgVUNIQVJfVElUTEVDQVNFX01BUFBJTkc9MHg0MDBBLA0KDQoNCg0K
DQoNCg0KDQogICAgDQoNCiAgICBVQ0hBUl9VUFBFUkNBU0VfTUFQUElORz0weDQwMEMsDQogICAg
DQoNCiAgICBVQ0hBUl9CSURJX1BBSVJFRF9CUkFDS0VUPTB4NDAwRCwNCg0KDQoNCg0KDQoNCg0K
DQogICAgDQoNCg0KDQoNCiAgICBVQ0hBUl9TQ1JJUFRfRVhURU5TSU9OUz0weDcwMDAsDQogICAg
DQogICAgVUNIQVJfT1RIRVJfUFJPUEVSVFlfU1RBUlQ9VUNIQVJfU0NSSVBUX0VYVEVOU0lPTlMs
DQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KICAgIFVDSEFSX0lOVkFMSURfQ09ERSA9IC0xDQp9IFVQ
cm9wZXJ0eTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBVQ2hhckNhdGVnb3J5DQp7DQogICAg
DQoNCg0KDQoNCg0KDQogICAgDQogICAgVV9VTkFTU0lHTkVEICAgICAgICAgICAgICA9IDAsDQog
ICAgDQogICAgVV9HRU5FUkFMX09USEVSX1RZUEVTICAgICA9IDAsDQogICAgDQogICAgVV9VUFBF
UkNBU0VfTEVUVEVSICAgICAgICA9IDEsDQogICAgDQogICAgVV9MT1dFUkNBU0VfTEVUVEVSICAg
ICAgICA9IDIsDQogICAgDQogICAgVV9USVRMRUNBU0VfTEVUVEVSICAgICAgICA9IDMsDQogICAg
DQogICAgVV9NT0RJRklFUl9MRVRURVIgICAgICAgICA9IDQsDQogICAgDQogICAgVV9PVEhFUl9M
RVRURVIgICAgICAgICAgICA9IDUsDQogICAgDQogICAgVV9OT05fU1BBQ0lOR19NQVJLICAgICAg
ICA9IDYsDQogICAgDQogICAgVV9FTkNMT1NJTkdfTUFSSyAgICAgICAgICA9IDcsDQogICAgDQog
ICAgVV9DT01CSU5JTkdfU1BBQ0lOR19NQVJLICA9IDgsDQogICAgDQogICAgVV9ERUNJTUFMX0RJ
R0lUX05VTUJFUiAgICA9IDksDQogICAgDQogICAgVV9MRVRURVJfTlVNQkVSICAgICAgICAgICA9
IDEwLA0KICAgIA0KICAgIFVfT1RIRVJfTlVNQkVSICAgICAgICAgICAgPSAxMSwNCiAgICANCiAg
ICBVX1NQQUNFX1NFUEFSQVRPUiAgICAgICAgID0gMTIsDQogICAgDQogICAgVV9MSU5FX1NFUEFS
QVRPUiAgICAgICAgICA9IDEzLA0KICAgIA0KICAgIFVfUEFSQUdSQVBIX1NFUEFSQVRPUiAgICAg
PSAxNCwNCiAgICANCiAgICBVX0NPTlRST0xfQ0hBUiAgICAgICAgICAgID0gMTUsDQogICAgDQog
ICAgVV9GT1JNQVRfQ0hBUiAgICAgICAgICAgICA9IDE2LA0KICAgIA0KICAgIFVfUFJJVkFURV9V
U0VfQ0hBUiAgICAgICAgPSAxNywNCiAgICANCiAgICBVX1NVUlJPR0FURSAgICAgICAgICAgICAg
ID0gMTgsDQogICAgDQogICAgVV9EQVNIX1BVTkNUVUFUSU9OICAgICAgICA9IDE5LA0KICAgIA0K
ICAgIFVfU1RBUlRfUFVOQ1RVQVRJT04gICAgICAgPSAyMCwNCiAgICANCiAgICBVX0VORF9QVU5D
VFVBVElPTiAgICAgICAgID0gMjEsDQogICAgDQogICAgVV9DT05ORUNUT1JfUFVOQ1RVQVRJT04g
ICA9IDIyLA0KICAgIA0KICAgIFVfT1RIRVJfUFVOQ1RVQVRJT04gICAgICAgPSAyMywNCiAgICAN
CiAgICBVX01BVEhfU1lNQk9MICAgICAgICAgICAgID0gMjQsDQogICAgDQogICAgVV9DVVJSRU5D
WV9TWU1CT0wgICAgICAgICA9IDI1LA0KICAgIA0KICAgIFVfTU9ESUZJRVJfU1lNQk9MICAgICAg
ICAgPSAyNiwNCiAgICANCiAgICBVX09USEVSX1NZTUJPTCAgICAgICAgICAgID0gMjcsDQogICAg
DQogICAgVV9JTklUSUFMX1BVTkNUVUFUSU9OICAgICA9IDI4LA0KICAgIA0KICAgIFVfRklOQUxf
UFVOQ1RVQVRJT04gICAgICAgPSAyOSwNCiAgICANCg0KDQoNCg0KDQoNCiAgICBVX0NIQVJfQ0FU
RUdPUllfQ09VTlQNCn0gVUNoYXJDYXRlZ29yeTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBVQ2hhckRp
cmVjdGlvbiB7DQogICAgDQoNCg0KDQoNCg0KDQogICAgDQogICAgVV9MRUZUX1RPX1JJR0hUICAg
ICAgICAgICAgICAgPSAwLA0KICAgIA0KICAgIFVfUklHSFRfVE9fTEVGVCAgICAgICAgICAgICAg
ID0gMSwNCiAgICANCiAgICBVX0VVUk9QRUFOX05VTUJFUiAgICAgICAgICAgICA9IDIsDQogICAg
DQogICAgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SICAgPSAzLA0KICAgIA0KICAgIFVfRVVS
T1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IgID0gNCwNCiAgICANCiAgICBVX0FSQUJJQ19OVU1CRVIg
ICAgICAgICAgICAgICA9IDUsDQogICAgDQogICAgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUiAg
ICAgPSA2LA0KICAgIA0KICAgIFVfQkxPQ0tfU0VQQVJBVE9SICAgICAgICAgICAgID0gNywNCiAg
ICANCiAgICBVX1NFR01FTlRfU0VQQVJBVE9SICAgICAgICAgICA9IDgsDQogICAgDQogICAgVV9X
SElURV9TUEFDRV9ORVVUUkFMICAgICAgICAgPSA5LA0KICAgIA0KICAgIFVfT1RIRVJfTkVVVFJB
TCAgICAgICAgICAgICAgID0gMTAsDQogICAgDQogICAgVV9MRUZUX1RPX1JJR0hUX0VNQkVERElO
RyAgICAgPSAxMSwNCiAgICANCiAgICBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUgICAgICA9IDEy
LA0KICAgIA0KICAgIFVfUklHSFRfVE9fTEVGVF9BUkFCSUMgICAgICAgID0gMTMsDQogICAgDQog
ICAgVV9SSUdIVF9UT19MRUZUX0VNQkVERElORyAgICAgPSAxNCwNCiAgICANCiAgICBVX1JJR0hU
X1RPX0xFRlRfT1ZFUlJJREUgICAgICA9IDE1LA0KICAgIA0KICAgIFVfUE9QX0RJUkVDVElPTkFM
X0ZPUk1BVCAgICAgID0gMTYsDQogICAgDQogICAgVV9ESVJfTk9OX1NQQUNJTkdfTUFSSyAgICAg
ICAgPSAxNywNCiAgICANCiAgICBVX0JPVU5EQVJZX05FVVRSQUwgICAgICAgICAgICA9IDE4LA0K
ICAgIA0KICAgIFVfRklSU1RfU1RST05HX0lTT0xBVEUgICAgICAgID0gMTksDQogICAgDQogICAg
VV9MRUZUX1RPX1JJR0hUX0lTT0xBVEUgICAgICAgPSAyMCwNCiAgICANCiAgICBVX1JJR0hUX1RP
X0xFRlRfSVNPTEFURSAgICAgICA9IDIxLA0KICAgIA0KICAgIFVfUE9QX0RJUkVDVElPTkFMX0lT
T0xBVEUgICAgID0gMjIsDQoNCg0KDQoNCg0KDQoNCg0KDQp9IFVDaGFyRGlyZWN0aW9uOw0KDQoN
Cg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gVUJpZGlQYWlyZWRCcmFja2V0VHlwZSB7DQogICAgDQoN
Cg0KDQoNCg0KICAgIA0KICAgIFVfQlBUX05PTkUsDQogICAgDQogICAgVV9CUFRfT1BFTiwNCiAg
ICANCiAgICBVX0JQVF9DTE9TRSwNCg0KDQoNCg0KDQoNCg0KDQoNCn0gVUJpZGlQYWlyZWRCcmFj
a2V0VHlwZTsNCg0KDQoNCg0KDQplbnVtIFVCbG9ja0NvZGUgew0KICAgIA0KDQoNCg0KDQoNCiAg
ICANCiAgICBVQkxPQ0tfTk9fQkxPQ0sgPSAwLCAgDQoNCiAgICANCiAgICBVQkxPQ0tfQkFTSUNf
TEFUSU4gPSAxLCANCg0KICAgIA0KICAgIFVCTE9DS19MQVRJTl8xX1NVUFBMRU1FTlQ9MiwgDQoN
CiAgICANCiAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfQSA9MywgDQoNCiAgICANCiAgICBVQkxP
Q0tfTEFUSU5fRVhURU5ERURfQiA9NCwgDQoNCiAgICANCiAgICBVQkxPQ0tfSVBBX0VYVEVOU0lP
TlMgPTUsIA0KDQogICAgDQogICAgVUJMT0NLX1NQQUNJTkdfTU9ESUZJRVJfTEVUVEVSUyA9Niwg
DQoNCiAgICANCiAgICBVQkxPQ0tfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTID03LCANCg0K
ICAgIA0KDQoNCg0KICAgIFVCTE9DS19HUkVFSyA9OCwgDQoNCiAgICANCiAgICBVQkxPQ0tfQ1lS
SUxMSUMgPTksIA0KDQogICAgDQogICAgVUJMT0NLX0FSTUVOSUFOID0xMCwgDQoNCiAgICANCiAg
ICBVQkxPQ0tfSEVCUkVXID0xMSwgDQoNCiAgICANCiAgICBVQkxPQ0tfQVJBQklDID0xMiwgDQoN
CiAgICANCiAgICBVQkxPQ0tfU1lSSUFDID0xMywgDQoNCiAgICANCiAgICBVQkxPQ0tfVEhBQU5B
ID0xNCwgDQoNCiAgICANCiAgICBVQkxPQ0tfREVWQU5BR0FSSSA9MTUsIA0KDQogICAgDQogICAg
VUJMT0NLX0JFTkdBTEkgPTE2LCANCg0KICAgIA0KICAgIFVCTE9DS19HVVJNVUtISSA9MTcsIA0K
DQogICAgDQogICAgVUJMT0NLX0dVSkFSQVRJID0xOCwgDQoNCiAgICANCiAgICBVQkxPQ0tfT1JJ
WUEgPTE5LCANCg0KICAgIA0KICAgIFVCTE9DS19UQU1JTCA9MjAsIA0KDQogICAgDQogICAgVUJM
T0NLX1RFTFVHVSA9MjEsIA0KDQogICAgDQogICAgVUJMT0NLX0tBTk5BREEgPTIyLCANCg0KICAg
IA0KICAgIFVCTE9DS19NQUxBWUFMQU0gPTIzLCANCg0KICAgIA0KICAgIFVCTE9DS19TSU5IQUxB
ID0yNCwgDQoNCiAgICANCiAgICBVQkxPQ0tfVEhBSSA9MjUsIA0KDQogICAgDQogICAgVUJMT0NL
X0xBTyA9MjYsIA0KDQogICAgDQogICAgVUJMT0NLX1RJQkVUQU4gPTI3LCANCg0KICAgIA0KICAg
IFVCTE9DS19NWUFOTUFSID0yOCwgDQoNCiAgICANCiAgICBVQkxPQ0tfR0VPUkdJQU4gPTI5LCAN
Cg0KICAgIA0KICAgIFVCTE9DS19IQU5HVUxfSkFNTyA9MzAsIA0KDQogICAgDQogICAgVUJMT0NL
X0VUSElPUElDID0zMSwgDQoNCiAgICANCiAgICBVQkxPQ0tfQ0hFUk9LRUUgPTMyLCANCg0KICAg
IA0KICAgIFVCTE9DS19VTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTID0zMywg
DQoNCiAgICANCiAgICBVQkxPQ0tfT0dIQU0gPTM0LCANCg0KICAgIA0KICAgIFVCTE9DS19SVU5J
QyA9MzUsIA0KDQogICAgDQogICAgVUJMT0NLX0tITUVSID0zNiwgDQoNCiAgICANCiAgICBVQkxP
Q0tfTU9OR09MSUFOID0zNywgDQoNCiAgICANCiAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfQURE
SVRJT05BTCA9MzgsIA0KDQogICAgDQogICAgVUJMT0NLX0dSRUVLX0VYVEVOREVEID0zOSwgDQoN
CiAgICANCiAgICBVQkxPQ0tfR0VORVJBTF9QVU5DVFVBVElPTiA9NDAsIA0KDQogICAgDQogICAg
VUJMT0NLX1NVUEVSU0NSSVBUU19BTkRfU1VCU0NSSVBUUyA9NDEsIA0KDQogICAgDQogICAgVUJM
T0NLX0NVUlJFTkNZX1NZTUJPTFMgPTQyLCANCg0KICAgIA0KDQoNCg0KICAgIFVCTE9DS19DT01C
SU5JTkdfTUFSS1NfRk9SX1NZTUJPTFMgPTQzLCANCg0KICAgIA0KICAgIFVCTE9DS19MRVRURVJM
SUtFX1NZTUJPTFMgPTQ0LCANCg0KICAgIA0KICAgIFVCTE9DS19OVU1CRVJfRk9STVMgPTQ1LCAN
Cg0KICAgIA0KICAgIFVCTE9DS19BUlJPV1MgPTQ2LCANCg0KICAgIA0KICAgIFVCTE9DS19NQVRI
RU1BVElDQUxfT1BFUkFUT1JTID00NywgDQoNCiAgICANCiAgICBVQkxPQ0tfTUlTQ0VMTEFORU9V
U19URUNITklDQUwgPTQ4LCANCg0KICAgIA0KICAgIFVCTE9DS19DT05UUk9MX1BJQ1RVUkVTID00
OSwgDQoNCiAgICANCiAgICBVQkxPQ0tfT1BUSUNBTF9DSEFSQUNURVJfUkVDT0dOSVRJT04gPTUw
LCANCg0KICAgIA0KICAgIFVCTE9DS19FTkNMT1NFRF9BTFBIQU5VTUVSSUNTID01MSwgDQoNCiAg
ICANCiAgICBVQkxPQ0tfQk9YX0RSQVdJTkcgPTUyLCANCg0KICAgIA0KICAgIFVCTE9DS19CTE9D
S19FTEVNRU5UUyA9NTMsIA0KDQogICAgDQogICAgVUJMT0NLX0dFT01FVFJJQ19TSEFQRVMgPTU0
LCANCg0KICAgIA0KICAgIFVCTE9DS19NSVNDRUxMQU5FT1VTX1NZTUJPTFMgPTU1LCANCg0KICAg
IA0KICAgIFVCTE9DS19ESU5HQkFUUyA9NTYsIA0KDQogICAgDQogICAgVUJMT0NLX0JSQUlMTEVf
UEFUVEVSTlMgPTU3LCANCg0KICAgIA0KICAgIFVCTE9DS19DSktfUkFESUNBTFNfU1VQUExFTUVO
VCA9NTgsIA0KDQogICAgDQogICAgVUJMT0NLX0tBTkdYSV9SQURJQ0FMUyA9NTksIA0KDQogICAg
DQogICAgVUJMT0NLX0lERU9HUkFQSElDX0RFU0NSSVBUSU9OX0NIQVJBQ1RFUlMgPTYwLCANCg0K
ICAgIA0KICAgIFVCTE9DS19DSktfU1lNQk9MU19BTkRfUFVOQ1RVQVRJT04gPTYxLCANCg0KICAg
IA0KICAgIFVCTE9DS19ISVJBR0FOQSA9NjIsIA0KDQogICAgDQogICAgVUJMT0NLX0tBVEFLQU5B
ID02MywgDQoNCiAgICANCiAgICBVQkxPQ0tfQk9QT01PRk8gPTY0LCANCg0KICAgIA0KICAgIFVC
TE9DS19IQU5HVUxfQ09NUEFUSUJJTElUWV9KQU1PID02NSwgDQoNCiAgICANCiAgICBVQkxPQ0tf
S0FOQlVOID02NiwgDQoNCiAgICANCiAgICBVQkxPQ0tfQk9QT01PRk9fRVhURU5ERUQgPTY3LCAN
Cg0KICAgIA0KICAgIFVCTE9DS19FTkNMT1NFRF9DSktfTEVUVEVSU19BTkRfTU9OVEhTID02OCwg
DQoNCiAgICANCiAgICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFkgPTY5LCANCg0KICAgIA0KICAg
IFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9BID03MCwgDQoNCiAgICAN
CiAgICBVQkxPQ0tfQ0pLX1VOSUZJRURfSURFT0dSQVBIUyA9NzEsIA0KDQogICAgDQogICAgVUJM
T0NLX1lJX1NZTExBQkxFUyA9NzIsIA0KDQogICAgDQogICAgVUJMT0NLX1lJX1JBRElDQUxTID03
MywgDQoNCiAgICANCiAgICBVQkxPQ0tfSEFOR1VMX1NZTExBQkxFUyA9NzQsIA0KDQogICAgDQog
ICAgVUJMT0NLX0hJR0hfU1VSUk9HQVRFUyA9NzUsIA0KDQogICAgDQogICAgVUJMT0NLX0hJR0hf
UFJJVkFURV9VU0VfU1VSUk9HQVRFUyA9NzYsIA0KDQogICAgDQogICAgVUJMT0NLX0xPV19TVVJS
T0dBVEVTID03NywgDQoNCiAgICANCg0KDQoNCg0KDQoNCg0KDQogICAgVUJMT0NLX1BSSVZBVEVf
VVNFX0FSRUEgPTc4LCANCiAgICANCg0KDQoNCg0KDQoNCg0KDQogICAgVUJMT0NLX1BSSVZBVEVf
VVNFID0gVUJMT0NLX1BSSVZBVEVfVVNFX0FSRUEsDQoNCiAgICANCiAgICBVQkxPQ0tfQ0pLX0NP
TVBBVElCSUxJVFlfSURFT0dSQVBIUyA9NzksIA0KDQogICAgDQogICAgVUJMT0NLX0FMUEhBQkVU
SUNfUFJFU0VOVEFUSU9OX0ZPUk1TID04MCwgDQoNCiAgICANCiAgICBVQkxPQ0tfQVJBQklDX1BS
RVNFTlRBVElPTl9GT1JNU19BID04MSwgDQoNCiAgICANCiAgICBVQkxPQ0tfQ09NQklOSU5HX0hB
TEZfTUFSS1MgPTgyLCANCg0KICAgIA0KICAgIFVCTE9DS19DSktfQ09NUEFUSUJJTElUWV9GT1JN
UyA9ODMsIA0KDQogICAgDQogICAgVUJMT0NLX1NNQUxMX0ZPUk1fVkFSSUFOVFMgPTg0LCANCg0K
ICAgIA0KICAgIFVCTE9DS19BUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0IgPTg1LCANCg0KICAg
IA0KICAgIFVCTE9DS19TUEVDSUFMUyA9ODYsIA0KDQogICAgDQogICAgVUJMT0NLX0hBTEZXSURU
SF9BTkRfRlVMTFdJRFRIX0ZPUk1TID04NywgDQoNCiAgICANCg0KICAgIA0KICAgIFVCTE9DS19P
TERfSVRBTElDID0gODgsIA0KICAgIA0KICAgIFVCTE9DS19HT1RISUMgPSA4OSwgDQogICAgDQog
ICAgVUJMT0NLX0RFU0VSRVQgPSA5MCwgDQogICAgDQogICAgVUJMT0NLX0JZWkFOVElORV9NVVNJ
Q0FMX1NZTUJPTFMgPSA5MSwgDQogICAgDQogICAgVUJMT0NLX01VU0lDQUxfU1lNQk9MUyA9IDky
LCANCiAgICANCiAgICBVQkxPQ0tfTUFUSEVNQVRJQ0FMX0FMUEhBTlVNRVJJQ19TWU1CT0xTID0g
OTMsIA0KICAgIA0KICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9C
ICA9IDk0LCANCiAgICANCiAgICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIU19T
VVBQTEVNRU5UID0gOTUsIA0KICAgIA0KICAgIFVCTE9DS19UQUdTID0gOTYsIA0KDQogICAgDQoN
CiAgICANCiAgICBVQkxPQ0tfQ1lSSUxMSUNfU1VQUExFTUVOVCA9IDk3LCANCiAgICANCg0KDQoN
CiAgICBVQkxPQ0tfQ1lSSUxMSUNfU1VQUExFTUVOVEFSWSA9IFVCTE9DS19DWVJJTExJQ19TVVBQ
TEVNRU5ULA0KICAgIA0KICAgIFVCTE9DS19UQUdBTE9HID0gOTgsIA0KICAgIA0KICAgIFVCTE9D
S19IQU5VTk9PID0gOTksIA0KICAgIA0KICAgIFVCTE9DS19CVUhJRCA9IDEwMCwgDQogICAgDQog
ICAgVUJMT0NLX1RBR0JBTldBID0gMTAxLCANCiAgICANCiAgICBVQkxPQ0tfTUlTQ0VMTEFORU9V
U19NQVRIRU1BVElDQUxfU1lNQk9MU19BID0gMTAyLCANCiAgICANCiAgICBVQkxPQ0tfU1VQUExF
TUVOVEFMX0FSUk9XU19BID0gMTAzLCANCiAgICANCiAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX0FS
Uk9XU19CID0gMTA0LCANCiAgICANCiAgICBVQkxPQ0tfTUlTQ0VMTEFORU9VU19NQVRIRU1BVElD
QUxfU1lNQk9MU19CID0gMTA1LCANCiAgICANCiAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX01BVEhF
TUFUSUNBTF9PUEVSQVRPUlMgPSAxMDYsIA0KICAgIA0KICAgIFVCTE9DS19LQVRBS0FOQV9QSE9O
RVRJQ19FWFRFTlNJT05TID0gMTA3LCANCiAgICANCiAgICBVQkxPQ0tfVkFSSUFUSU9OX1NFTEVD
VE9SUyA9IDEwOCwgDQogICAgDQogICAgVUJMT0NLX1NVUFBMRU1FTlRBUllfUFJJVkFURV9VU0Vf
QVJFQV9BID0gMTA5LCANCiAgICANCiAgICBVQkxPQ0tfU1VQUExFTUVOVEFSWV9QUklWQVRFX1VT
RV9BUkVBX0IgPSAxMTAsIA0KDQogICAgDQoNCiAgICANCiAgICBVQkxPQ0tfTElNQlUgPSAxMTEs
IA0KICAgIA0KICAgIFVCTE9DS19UQUlfTEUgPSAxMTIsIA0KICAgIA0KICAgIFVCTE9DS19LSE1F
Ul9TWU1CT0xTID0gMTEzLCANCiAgICANCiAgICBVQkxPQ0tfUEhPTkVUSUNfRVhURU5TSU9OUyA9
IDExNCwgDQogICAgDQogICAgVUJMT0NLX01JU0NFTExBTkVPVVNfU1lNQk9MU19BTkRfQVJST1dT
ID0gMTE1LCANCiAgICANCiAgICBVQkxPQ0tfWUlKSU5HX0hFWEFHUkFNX1NZTUJPTFMgPSAxMTYs
IA0KICAgIA0KICAgIFVCTE9DS19MSU5FQVJfQl9TWUxMQUJBUlkgPSAxMTcsIA0KICAgIA0KICAg
IFVCTE9DS19MSU5FQVJfQl9JREVPR1JBTVMgPSAxMTgsIA0KICAgIA0KICAgIFVCTE9DS19BRUdF
QU5fTlVNQkVSUyA9IDExOSwgDQogICAgDQogICAgVUJMT0NLX1VHQVJJVElDID0gMTIwLCANCiAg
ICANCiAgICBVQkxPQ0tfU0hBVklBTiA9IDEyMSwgDQogICAgDQogICAgVUJMT0NLX09TTUFOWUEg
PSAxMjIsIA0KICAgIA0KICAgIFVCTE9DS19DWVBSSU9UX1NZTExBQkFSWSA9IDEyMywgDQogICAg
DQogICAgVUJMT0NLX1RBSV9YVUFOX0pJTkdfU1lNQk9MUyA9IDEyNCwgDQogICAgDQogICAgVUJM
T0NLX1ZBUklBVElPTl9TRUxFQ1RPUlNfU1VQUExFTUVOVCA9IDEyNSwgDQoNCiAgICANCg0KICAg
IA0KICAgIFVCTE9DS19BTkNJRU5UX0dSRUVLX01VU0lDQUxfTk9UQVRJT04gPSAxMjYsIA0KICAg
IA0KICAgIFVCTE9DS19BTkNJRU5UX0dSRUVLX05VTUJFUlMgPSAxMjcsIA0KICAgIA0KICAgIFVC
TE9DS19BUkFCSUNfU1VQUExFTUVOVCA9IDEyOCwgDQogICAgDQogICAgVUJMT0NLX0JVR0lORVNF
ID0gMTI5LCANCiAgICANCiAgICBVQkxPQ0tfQ0pLX1NUUk9LRVMgPSAxMzAsIA0KICAgIA0KICAg
IFVCTE9DS19DT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1NfU1VQUExFTUVOVCA9IDEzMSwgDQog
ICAgDQogICAgVUJMT0NLX0NPUFRJQyA9IDEzMiwgDQogICAgDQogICAgVUJMT0NLX0VUSElPUElD
X0VYVEVOREVEID0gMTMzLCANCiAgICANCiAgICBVQkxPQ0tfRVRISU9QSUNfU1VQUExFTUVOVCA9
IDEzNCwgDQogICAgDQogICAgVUJMT0NLX0dFT1JHSUFOX1NVUFBMRU1FTlQgPSAxMzUsIA0KICAg
IA0KICAgIFVCTE9DS19HTEFHT0xJVElDID0gMTM2LCANCiAgICANCiAgICBVQkxPQ0tfS0hBUk9T
SFRISSA9IDEzNywgDQogICAgDQogICAgVUJMT0NLX01PRElGSUVSX1RPTkVfTEVUVEVSUyA9IDEz
OCwgDQogICAgDQogICAgVUJMT0NLX05FV19UQUlfTFVFID0gMTM5LCANCiAgICANCiAgICBVQkxP
Q0tfT0xEX1BFUlNJQU4gPSAxNDAsIA0KICAgIA0KICAgIFVCTE9DS19QSE9ORVRJQ19FWFRFTlNJ
T05TX1NVUFBMRU1FTlQgPSAxNDEsIA0KICAgIA0KICAgIFVCTE9DS19TVVBQTEVNRU5UQUxfUFVO
Q1RVQVRJT04gPSAxNDIsIA0KICAgIA0KICAgIFVCTE9DS19TWUxPVElfTkFHUkkgPSAxNDMsIA0K
ICAgIA0KICAgIFVCTE9DS19USUZJTkFHSCA9IDE0NCwgDQogICAgDQogICAgVUJMT0NLX1ZFUlRJ
Q0FMX0ZPUk1TID0gMTQ1LCANCg0KICAgIA0KDQogICAgDQogICAgVUJMT0NLX05LTyA9IDE0Niwg
DQogICAgDQogICAgVUJMT0NLX0JBTElORVNFID0gMTQ3LCANCiAgICANCiAgICBVQkxPQ0tfTEFU
SU5fRVhURU5ERURfQyA9IDE0OCwgDQogICAgDQogICAgVUJMT0NLX0xBVElOX0VYVEVOREVEX0Qg
PSAxNDksIA0KICAgIA0KICAgIFVCTE9DS19QSEFHU19QQSA9IDE1MCwgDQogICAgDQogICAgVUJM
T0NLX1BIT0VOSUNJQU4gPSAxNTEsIA0KICAgIA0KICAgIFVCTE9DS19DVU5FSUZPUk0gPSAxNTIs
IA0KICAgIA0KICAgIFVCTE9DS19DVU5FSUZPUk1fTlVNQkVSU19BTkRfUFVOQ1RVQVRJT04gPSAx
NTMsIA0KICAgIA0KICAgIFVCTE9DS19DT1VOVElOR19ST0RfTlVNRVJBTFMgPSAxNTQsIA0KDQog
ICAgDQoNCiAgICANCiAgICBVQkxPQ0tfU1VOREFORVNFID0gMTU1LCANCiAgICANCiAgICBVQkxP
Q0tfTEVQQ0hBID0gMTU2LCANCiAgICANCiAgICBVQkxPQ0tfT0xfQ0hJS0kgPSAxNTcsIA0KICAg
IA0KICAgIFVCTE9DS19DWVJJTExJQ19FWFRFTkRFRF9BID0gMTU4LCANCiAgICANCiAgICBVQkxP
Q0tfVkFJID0gMTU5LCANCiAgICANCiAgICBVQkxPQ0tfQ1lSSUxMSUNfRVhURU5ERURfQiA9IDE2
MCwgDQogICAgDQogICAgVUJMT0NLX1NBVVJBU0hUUkEgPSAxNjEsIA0KICAgIA0KICAgIFVCTE9D
S19LQVlBSF9MSSA9IDE2MiwgDQogICAgDQogICAgVUJMT0NLX1JFSkFORyA9IDE2MywgDQogICAg
DQogICAgVUJMT0NLX0NIQU0gPSAxNjQsIA0KICAgIA0KICAgIFVCTE9DS19BTkNJRU5UX1NZTUJP
TFMgPSAxNjUsIA0KICAgIA0KICAgIFVCTE9DS19QSEFJU1RPU19ESVNDID0gMTY2LCANCiAgICAN
CiAgICBVQkxPQ0tfTFlDSUFOID0gMTY3LCANCiAgICANCiAgICBVQkxPQ0tfQ0FSSUFOID0gMTY4
LCANCiAgICANCiAgICBVQkxPQ0tfTFlESUFOID0gMTY5LCANCiAgICANCiAgICBVQkxPQ0tfTUFI
Sk9OR19USUxFUyA9IDE3MCwgDQogICAgDQogICAgVUJMT0NLX0RPTUlOT19USUxFUyA9IDE3MSwg
DQoNCiAgICANCg0KICAgIA0KICAgIFVCTE9DS19TQU1BUklUQU4gPSAxNzIsIA0KICAgIA0KICAg
IFVCTE9DS19VTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTX0VYVEVOREVEID0g
MTczLCANCiAgICANCiAgICBVQkxPQ0tfVEFJX1RIQU0gPSAxNzQsIA0KICAgIA0KICAgIFVCTE9D
S19WRURJQ19FWFRFTlNJT05TID0gMTc1LCANCiAgICANCiAgICBVQkxPQ0tfTElTVSA9IDE3Niwg
DQogICAgDQogICAgVUJMT0NLX0JBTVVNID0gMTc3LCANCiAgICANCiAgICBVQkxPQ0tfQ09NTU9O
X0lORElDX05VTUJFUl9GT1JNUyA9IDE3OCwgDQogICAgDQogICAgVUJMT0NLX0RFVkFOQUdBUklf
RVhURU5ERUQgPSAxNzksIA0KICAgIA0KICAgIFVCTE9DS19IQU5HVUxfSkFNT19FWFRFTkRFRF9B
ID0gMTgwLCANCiAgICANCiAgICBVQkxPQ0tfSkFWQU5FU0UgPSAxODEsIA0KICAgIA0KICAgIFVC
TE9DS19NWUFOTUFSX0VYVEVOREVEX0EgPSAxODIsIA0KICAgIA0KICAgIFVCTE9DS19UQUlfVklF
VCA9IDE4MywgDQogICAgDQogICAgVUJMT0NLX01FRVRFSV9NQVlFSyA9IDE4NCwgDQogICAgDQog
ICAgVUJMT0NLX0hBTkdVTF9KQU1PX0VYVEVOREVEX0IgPSAxODUsIA0KICAgIA0KICAgIFVCTE9D
S19JTVBFUklBTF9BUkFNQUlDID0gMTg2LCANCiAgICANCiAgICBVQkxPQ0tfT0xEX1NPVVRIX0FS
QUJJQU4gPSAxODcsIA0KICAgIA0KICAgIFVCTE9DS19BVkVTVEFOID0gMTg4LCANCiAgICANCiAg
ICBVQkxPQ0tfSU5TQ1JJUFRJT05BTF9QQVJUSElBTiA9IDE4OSwgDQogICAgDQogICAgVUJMT0NL
X0lOU0NSSVBUSU9OQUxfUEFITEFWSSA9IDE5MCwgDQogICAgDQogICAgVUJMT0NLX09MRF9UVVJL
SUMgPSAxOTEsIA0KICAgIA0KICAgIFVCTE9DS19SVU1JX05VTUVSQUxfU1lNQk9MUyA9IDE5Miwg
DQogICAgDQogICAgVUJMT0NLX0tBSVRISSA9IDE5MywgDQogICAgDQogICAgVUJMT0NLX0VHWVBU
SUFOX0hJRVJPR0xZUEhTID0gMTk0LCANCiAgICANCiAgICBVQkxPQ0tfRU5DTE9TRURfQUxQSEFO
VU1FUklDX1NVUFBMRU1FTlQgPSAxOTUsIA0KICAgIA0KICAgIFVCTE9DS19FTkNMT1NFRF9JREVP
R1JBUEhJQ19TVVBQTEVNRU5UID0gMTk2LCANCiAgICANCiAgICBVQkxPQ0tfQ0pLX1VOSUZJRURf
SURFT0dSQVBIU19FWFRFTlNJT05fQyA9IDE5NywgDQoNCiAgICANCg0KICAgIA0KICAgIFVCTE9D
S19NQU5EQUlDID0gMTk4LCANCiAgICANCiAgICBVQkxPQ0tfQkFUQUsgPSAxOTksIA0KICAgIA0K
ICAgIFVCTE9DS19FVEhJT1BJQ19FWFRFTkRFRF9BID0gMjAwLCANCiAgICANCiAgICBVQkxPQ0tf
QlJBSE1JID0gMjAxLCANCiAgICANCiAgICBVQkxPQ0tfQkFNVU1fU1VQUExFTUVOVCA9IDIwMiwg
DQogICAgDQogICAgVUJMT0NLX0tBTkFfU1VQUExFTUVOVCA9IDIwMywgDQogICAgDQogICAgVUJM
T0NLX1BMQVlJTkdfQ0FSRFMgPSAyMDQsIA0KICAgIA0KICAgIFVCTE9DS19NSVNDRUxMQU5FT1VT
X1NZTUJPTFNfQU5EX1BJQ1RPR1JBUEhTID0gMjA1LCANCiAgICANCiAgICBVQkxPQ0tfRU1PVElD
T05TID0gMjA2LCANCiAgICANCiAgICBVQkxPQ0tfVFJBTlNQT1JUX0FORF9NQVBfU1lNQk9MUyA9
IDIwNywgDQogICAgDQogICAgVUJMT0NLX0FMQ0hFTUlDQUxfU1lNQk9MUyA9IDIwOCwgDQogICAg
DQogICAgVUJMT0NLX0NKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5TSU9OX0QgPSAyMDksIA0K
DQogICAgDQoNCiAgICANCiAgICBVQkxPQ0tfQVJBQklDX0VYVEVOREVEX0EgPSAyMTAsIA0KICAg
IA0KICAgIFVCTE9DS19BUkFCSUNfTUFUSEVNQVRJQ0FMX0FMUEhBQkVUSUNfU1lNQk9MUyA9IDIx
MSwgDQogICAgDQogICAgVUJMT0NLX0NIQUtNQSA9IDIxMiwgDQogICAgDQogICAgVUJMT0NLX01F
RVRFSV9NQVlFS19FWFRFTlNJT05TID0gMjEzLCANCiAgICANCiAgICBVQkxPQ0tfTUVST0lUSUNf
Q1VSU0lWRSA9IDIxNCwgDQogICAgDQogICAgVUJMT0NLX01FUk9JVElDX0hJRVJPR0xZUEhTID0g
MjE1LCANCiAgICANCiAgICBVQkxPQ0tfTUlBTyA9IDIxNiwgDQogICAgDQogICAgVUJMT0NLX1NI
QVJBREEgPSAyMTcsIA0KICAgIA0KICAgIFVCTE9DS19TT1JBX1NPTVBFTkcgPSAyMTgsIA0KICAg
IA0KICAgIFVCTE9DS19TVU5EQU5FU0VfU1VQUExFTUVOVCA9IDIxOSwgDQogICAgDQogICAgVUJM
T0NLX1RBS1JJID0gMjIwLCANCg0KICAgIA0KDQogICAgDQogICAgVUJMT0NLX0JBU1NBX1ZBSCA9
IDIyMSwgDQogICAgDQogICAgVUJMT0NLX0NBVUNBU0lBTl9BTEJBTklBTiA9IDIyMiwgDQogICAg
DQogICAgVUJMT0NLX0NPUFRJQ19FUEFDVF9OVU1CRVJTID0gMjIzLCANCiAgICANCiAgICBVQkxP
Q0tfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTX0VYVEVOREVEID0gMjI0LCANCiAgICANCiAg
ICBVQkxPQ0tfRFVQTE9ZQU4gPSAyMjUsIA0KICAgIA0KICAgIFVCTE9DS19FTEJBU0FOID0gMjI2
LCANCiAgICANCiAgICBVQkxPQ0tfR0VPTUVUUklDX1NIQVBFU19FWFRFTkRFRCA9IDIyNywgDQog
ICAgDQogICAgVUJMT0NLX0dSQU5USEEgPSAyMjgsIA0KICAgIA0KICAgIFVCTE9DS19LSE9KS0kg
PSAyMjksIA0KICAgIA0KICAgIFVCTE9DS19LSFVEQVdBREkgPSAyMzAsIA0KICAgIA0KICAgIFVC
TE9DS19MQVRJTl9FWFRFTkRFRF9FID0gMjMxLCANCiAgICANCiAgICBVQkxPQ0tfTElORUFSX0Eg
PSAyMzIsIA0KICAgIA0KICAgIFVCTE9DS19NQUhBSkFOSSA9IDIzMywgDQogICAgDQogICAgVUJM
T0NLX01BTklDSEFFQU4gPSAyMzQsIA0KICAgIA0KICAgIFVCTE9DS19NRU5ERV9LSUtBS1VJID0g
MjM1LCANCiAgICANCiAgICBVQkxPQ0tfTU9ESSA9IDIzNiwgDQogICAgDQogICAgVUJMT0NLX01S
TyA9IDIzNywgDQogICAgDQogICAgVUJMT0NLX01ZQU5NQVJfRVhURU5ERURfQiA9IDIzOCwgDQog
ICAgDQogICAgVUJMT0NLX05BQkFUQUVBTiA9IDIzOSwgDQogICAgDQogICAgVUJMT0NLX09MRF9O
T1JUSF9BUkFCSUFOID0gMjQwLCANCiAgICANCiAgICBVQkxPQ0tfT0xEX1BFUk1JQyA9IDI0MSwg
DQogICAgDQogICAgVUJMT0NLX09STkFNRU5UQUxfRElOR0JBVFMgPSAyNDIsIA0KICAgIA0KICAg
IFVCTE9DS19QQUhBV0hfSE1PTkcgPSAyNDMsIA0KICAgIA0KICAgIFVCTE9DS19QQUxNWVJFTkUg
PSAyNDQsIA0KICAgIA0KICAgIFVCTE9DS19QQVVfQ0lOX0hBVSA9IDI0NSwgDQogICAgDQogICAg
VUJMT0NLX1BTQUxURVJfUEFITEFWSSA9IDI0NiwgDQogICAgDQogICAgVUJMT0NLX1NIT1JUSEFO
RF9GT1JNQVRfQ09OVFJPTFMgPSAyNDcsIA0KICAgIA0KICAgIFVCTE9DS19TSURESEFNID0gMjQ4
LCANCiAgICANCiAgICBVQkxPQ0tfU0lOSEFMQV9BUkNIQUlDX05VTUJFUlMgPSAyNDksIA0KICAg
IA0KICAgIFVCTE9DS19TVVBQTEVNRU5UQUxfQVJST1dTX0MgPSAyNTAsIA0KICAgIA0KICAgIFVC
TE9DS19USVJIVVRBID0gMjUxLCANCiAgICANCiAgICBVQkxPQ0tfV0FSQU5HX0NJVEkgPSAyNTIs
IA0KDQogICAgDQoNCiAgICANCiAgICBVQkxPQ0tfQUhPTSA9IDI1MywgDQogICAgDQogICAgVUJM
T0NLX0FOQVRPTElBTl9ISUVST0dMWVBIUyA9IDI1NCwgDQogICAgDQogICAgVUJMT0NLX0NIRVJP
S0VFX1NVUFBMRU1FTlQgPSAyNTUsIA0KICAgIA0KICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVP
R1JBUEhTX0VYVEVOU0lPTl9FID0gMjU2LCANCiAgICANCiAgICBVQkxPQ0tfRUFSTFlfRFlOQVNU
SUNfQ1VORUlGT1JNID0gMjU3LCANCiAgICANCiAgICBVQkxPQ0tfSEFUUkFOID0gMjU4LCANCiAg
ICANCiAgICBVQkxPQ0tfTVVMVEFOSSA9IDI1OSwgDQogICAgDQogICAgVUJMT0NLX09MRF9IVU5H
QVJJQU4gPSAyNjAsIA0KICAgIA0KICAgIFVCTE9DS19TVVBQTEVNRU5UQUxfU1lNQk9MU19BTkRf
UElDVE9HUkFQSFMgPSAyNjEsIA0KICAgIA0KICAgIFVCTE9DS19TVVRUT05fU0lHTldSSVRJTkcg
PSAyNjIsIA0KDQogICAgDQoNCiAgICANCiAgICBVQkxPQ0tfQURMQU0gPSAyNjMsIA0KICAgIA0K
ICAgIFVCTE9DS19CSEFJS1NVS0kgPSAyNjQsIA0KICAgIA0KICAgIFVCTE9DS19DWVJJTExJQ19F
WFRFTkRFRF9DID0gMjY1LCANCiAgICANCiAgICBVQkxPQ0tfR0xBR09MSVRJQ19TVVBQTEVNRU5U
ID0gMjY2LCANCiAgICANCiAgICBVQkxPQ0tfSURFT0dSQVBISUNfU1lNQk9MU19BTkRfUFVOQ1RV
QVRJT04gPSAyNjcsIA0KICAgIA0KICAgIFVCTE9DS19NQVJDSEVOID0gMjY4LCANCiAgICANCiAg
ICBVQkxPQ0tfTU9OR09MSUFOX1NVUFBMRU1FTlQgPSAyNjksIA0KICAgIA0KICAgIFVCTE9DS19O
RVdBID0gMjcwLCANCiAgICANCiAgICBVQkxPQ0tfT1NBR0UgPSAyNzEsIA0KICAgIA0KICAgIFVC
TE9DS19UQU5HVVQgPSAyNzIsIA0KICAgIA0KICAgIFVCTE9DS19UQU5HVVRfQ09NUE9ORU5UUyA9
IDI3MywgDQoNCiAgICANCg0KICAgIA0KICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JBUEhT
X0VYVEVOU0lPTl9GID0gMjc0LCANCiAgICANCiAgICBVQkxPQ0tfS0FOQV9FWFRFTkRFRF9BID0g
Mjc1LCANCiAgICANCiAgICBVQkxPQ0tfTUFTQVJBTV9HT05ESSA9IDI3NiwgDQogICAgDQogICAg
VUJMT0NLX05VU0hVID0gMjc3LCANCiAgICANCiAgICBVQkxPQ0tfU09ZT01CTyA9IDI3OCwgDQog
ICAgDQogICAgVUJMT0NLX1NZUklBQ19TVVBQTEVNRU5UID0gMjc5LCANCiAgICANCiAgICBVQkxP
Q0tfWkFOQUJBWkFSX1NRVUFSRSA9IDI4MCwgDQoNCiAgICANCg0KICAgIA0KICAgIFVCTE9DS19D
SEVTU19TWU1CT0xTID0gMjgxLCANCiAgICANCiAgICBVQkxPQ0tfRE9HUkEgPSAyODIsIA0KICAg
IA0KICAgIFVCTE9DS19HRU9SR0lBTl9FWFRFTkRFRCA9IDI4MywgDQogICAgDQogICAgVUJMT0NL
X0dVTkpBTEFfR09OREkgPSAyODQsIA0KICAgIA0KICAgIFVCTE9DS19IQU5JRklfUk9ISU5HWUEg
PSAyODUsIA0KICAgIA0KICAgIFVCTE9DS19JTkRJQ19TSVlBUV9OVU1CRVJTID0gMjg2LCANCiAg
ICANCiAgICBVQkxPQ0tfTUFLQVNBUiA9IDI4NywgDQogICAgDQogICAgVUJMT0NLX01BWUFOX05V
TUVSQUxTID0gMjg4LCANCiAgICANCiAgICBVQkxPQ0tfTUVERUZBSURSSU4gPSAyODksIA0KICAg
IA0KICAgIFVCTE9DS19PTERfU09HRElBTiA9IDI5MCwgDQogICAgDQogICAgVUJMT0NLX1NPR0RJ
QU4gPSAyOTEsIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCiAgICBVQkxPQ0tfSU5WQUxJ
RF9DT0RFPS0xDQp9Ow0KDQoNCnR5cGVkZWYgZW51bSBVQmxvY2tDb2RlIFVCbG9ja0NvZGU7DQoN
Cg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVFYXN0QXNpYW5XaWR0aCB7DQogICAgDQoNCg0K
DQoNCg0KICAgIFVfRUFfTkVVVFJBTCwgICANCiAgICBVX0VBX0FNQklHVU9VUywgDQogICAgVV9F
QV9IQUxGV0lEVEgsIA0KICAgIFVfRUFfRlVMTFdJRFRILCANCiAgICBVX0VBX05BUlJPVywgICAg
DQogICAgVV9FQV9XSURFLCAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KfSBVRWFzdEFzaWFuV2lk
dGg7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0gVUNoYXJOYW1lQ2hvaWNl
IHsNCiAgICANCiAgICBVX1VOSUNPREVfQ0hBUl9OQU1FLA0KDQoNCg0KDQoNCg0KDQoNCiAgICAN
CiAgICBVX0VYVEVOREVEX0NIQVJfTkFNRSA9IFVfVU5JQ09ERV9DSEFSX05BTUUrMiwNCiAgICAN
CiAgICBVX0NIQVJfTkFNRV9BTElBUywNCg0KDQoNCg0KDQoNCg0KfSBVQ2hhck5hbWVDaG9pY2U7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVQcm9wZXJ0eU5hbWVD
aG9pY2Ugew0KICAgIFVfU0hPUlRfUFJPUEVSVFlfTkFNRSwNCiAgICBVX0xPTkdfUFJPUEVSVFlf
TkFNRSwNCg0KDQoNCg0KDQoNCg0KfSBVUHJvcGVydHlOYW1lQ2hvaWNlOw0KDQoNCg0KDQoNCg0K
DQp0eXBlZGVmIGVudW0gVURlY29tcG9zaXRpb25UeXBlIHsNCiAgICANCg0KDQoNCg0KDQogICAg
VV9EVF9OT05FLCAgICAgICAgICAgICAgDQogICAgVV9EVF9DQU5PTklDQUwsICAgICAgICAgDQog
ICAgVV9EVF9DT01QQVQsICAgICAgICAgICAgDQogICAgVV9EVF9DSVJDTEUsICAgICAgICAgICAg
DQogICAgVV9EVF9GSU5BTCwgICAgICAgICAgICAgDQogICAgVV9EVF9GT05ULCAgICAgICAgICAg
ICAgDQogICAgVV9EVF9GUkFDVElPTiwgICAgICAgICAgDQogICAgVV9EVF9JTklUSUFMLCAgICAg
ICAgICAgDQogICAgVV9EVF9JU09MQVRFRCwgICAgICAgICAgDQogICAgVV9EVF9NRURJQUwsICAg
ICAgICAgICAgDQogICAgVV9EVF9OQVJST1csICAgICAgICAgICAgDQogICAgVV9EVF9OT0JSRUFL
LCAgICAgICAgICAgDQogICAgVV9EVF9TTUFMTCwgICAgICAgICAgICAgDQogICAgVV9EVF9TUVVB
UkUsICAgICAgICAgICAgDQogICAgVV9EVF9TVUIsICAgICAgICAgICAgICAgDQogICAgVV9EVF9T
VVBFUiwgICAgICAgICAgICAgDQogICAgVV9EVF9WRVJUSUNBTCwgICAgICAgICAgDQogICAgVV9E
VF9XSURFLCAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KDQp9IFVEZWNvbXBvc2l0aW9u
VHlwZTsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVKb2luaW5nVHlwZSB7DQogICAgDQoN
Cg0KDQoNCg0KICAgIFVfSlRfTk9OX0pPSU5JTkcsICAgICAgIA0KICAgIFVfSlRfSk9JTl9DQVVT
SU5HLCAgICAgIA0KICAgIFVfSlRfRFVBTF9KT0lOSU5HLCAgICAgIA0KICAgIFVfSlRfTEVGVF9K
T0lOSU5HLCAgICAgIA0KICAgIFVfSlRfUklHSFRfSk9JTklORywgICAgIA0KICAgIFVfSlRfVFJB
TlNQQVJFTlQsICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KfSBVSm9pbmluZ1R5cGU7DQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgZW51bSBVSm9pbmluZ0dyb3VwIHsNCiAgICANCg0KDQoNCg0KDQog
ICAgVV9KR19OT19KT0lOSU5HX0dST1VQLA0KICAgIFVfSkdfQUlOLA0KICAgIFVfSkdfQUxBUEgs
DQogICAgVV9KR19BTEVGLA0KICAgIFVfSkdfQkVILA0KICAgIFVfSkdfQkVUSCwNCiAgICBVX0pH
X0RBTCwNCiAgICBVX0pHX0RBTEFUSF9SSVNILA0KICAgIFVfSkdfRSwNCiAgICBVX0pHX0ZFSCwN
CiAgICBVX0pHX0ZJTkFMX1NFTUtBVEgsDQogICAgVV9KR19HQUYsDQogICAgVV9KR19HQU1BTCwN
CiAgICBVX0pHX0hBSCwNCiAgICBVX0pHX1RFSF9NQVJCVVRBX0dPQUwsICANCiAgICBVX0pHX0hB
TVpBX09OX0hFSF9HT0FMPVVfSkdfVEVIX01BUkJVVEFfR09BTCwNCiAgICBVX0pHX0hFLA0KICAg
IFVfSkdfSEVILA0KICAgIFVfSkdfSEVIX0dPQUwsDQogICAgVV9KR19IRVRILA0KICAgIFVfSkdf
S0FGLA0KICAgIFVfSkdfS0FQSCwNCiAgICBVX0pHX0tOT1RURURfSEVILA0KICAgIFVfSkdfTEFN
LA0KICAgIFVfSkdfTEFNQURILA0KICAgIFVfSkdfTUVFTSwNCiAgICBVX0pHX01JTSwNCiAgICBV
X0pHX05PT04sDQogICAgVV9KR19OVU4sDQogICAgVV9KR19QRSwNCiAgICBVX0pHX1FBRiwNCiAg
ICBVX0pHX1FBUEgsDQogICAgVV9KR19SRUgsDQogICAgVV9KR19SRVZFUlNFRF9QRSwNCiAgICBV
X0pHX1NBRCwNCiAgICBVX0pHX1NBREhFLA0KICAgIFVfSkdfU0VFTiwNCiAgICBVX0pHX1NFTUtB
VEgsDQogICAgVV9KR19TSElOLA0KICAgIFVfSkdfU1dBU0hfS0FGLA0KICAgIFVfSkdfU1lSSUFD
X1dBVywNCiAgICBVX0pHX1RBSCwNCiAgICBVX0pHX1RBVywNCiAgICBVX0pHX1RFSF9NQVJCVVRB
LA0KICAgIFVfSkdfVEVUSCwNCiAgICBVX0pHX1dBVywNCiAgICBVX0pHX1lFSCwNCiAgICBVX0pH
X1lFSF9CQVJSRUUsDQogICAgVV9KR19ZRUhfV0lUSF9UQUlMLA0KICAgIFVfSkdfWVVESCwNCiAg
ICBVX0pHX1lVREhfSEUsDQogICAgVV9KR19aQUlOLA0KICAgIFVfSkdfRkUsICAgICAgICANCiAg
ICBVX0pHX0tIQVBILCAgICAgDQogICAgVV9KR19aSEFJTiwgICAgIA0KICAgIFVfSkdfQlVSVVNI
QVNLSV9ZRUhfQkFSUkVFLCANCiAgICBVX0pHX0ZBUlNJX1lFSCwgDQogICAgVV9KR19OWUEsICAg
ICAgIA0KICAgIFVfSkdfUk9ISU5HWUFfWUVILCAgDQogICAgVV9KR19NQU5JQ0hBRUFOX0FMRVBI
LCAgDQogICAgVV9KR19NQU5JQ0hBRUFOX0FZSU4sICANCiAgICBVX0pHX01BTklDSEFFQU5fQkVU
SCwgIA0KICAgIFVfSkdfTUFOSUNIQUVBTl9EQUxFVEgsICANCiAgICBVX0pHX01BTklDSEFFQU5f
REhBTUVESCwgIA0KICAgIFVfSkdfTUFOSUNIQUVBTl9GSVZFLCAgDQogICAgVV9KR19NQU5JQ0hB
RUFOX0dJTUVMLCAgDQogICAgVV9KR19NQU5JQ0hBRUFOX0hFVEgsICANCiAgICBVX0pHX01BTklD
SEFFQU5fSFVORFJFRCwgIA0KICAgIFVfSkdfTUFOSUNIQUVBTl9LQVBILCAgDQogICAgVV9KR19N
QU5JQ0hBRUFOX0xBTUVESCwgIA0KICAgIFVfSkdfTUFOSUNIQUVBTl9NRU0sICANCiAgICBVX0pH
X01BTklDSEFFQU5fTlVOLCAgDQogICAgVV9KR19NQU5JQ0hBRUFOX09ORSwgIA0KICAgIFVfSkdf
TUFOSUNIQUVBTl9QRSwgIA0KICAgIFVfSkdfTUFOSUNIQUVBTl9RT1BILCAgDQogICAgVV9KR19N
QU5JQ0hBRUFOX1JFU0gsICANCiAgICBVX0pHX01BTklDSEFFQU5fU0FESEUsICANCiAgICBVX0pH
X01BTklDSEFFQU5fU0FNRUtILCAgDQogICAgVV9KR19NQU5JQ0hBRUFOX1RBVywgIA0KICAgIFVf
SkdfTUFOSUNIQUVBTl9URU4sICANCiAgICBVX0pHX01BTklDSEFFQU5fVEVUSCwgIA0KICAgIFVf
SkdfTUFOSUNIQUVBTl9USEFNRURILCAgDQogICAgVV9KR19NQU5JQ0hBRUFOX1RXRU5UWSwgIA0K
ICAgIFVfSkdfTUFOSUNIQUVBTl9XQVcsICANCiAgICBVX0pHX01BTklDSEFFQU5fWU9ESCwgIA0K
ICAgIFVfSkdfTUFOSUNIQUVBTl9aQVlJTiwgIA0KICAgIFVfSkdfU1RSQUlHSFRfV0FXLCAgDQog
ICAgVV9KR19BRlJJQ0FOX0ZFSCwgIA0KICAgIFVfSkdfQUZSSUNBTl9OT09OLCAgDQogICAgVV9K
R19BRlJJQ0FOX1FBRiwgIA0KDQogICAgVV9KR19NQUxBWUFMQU1fQkhBLCAgDQogICAgVV9KR19N
QUxBWUFMQU1fSkEsICANCiAgICBVX0pHX01BTEFZQUxBTV9MTEEsICANCiAgICBVX0pHX01BTEFZ
QUxBTV9MTExBLCAgDQogICAgVV9KR19NQUxBWUFMQU1fTkdBLCAgDQogICAgVV9KR19NQUxBWUFM
QU1fTk5BLCAgDQogICAgVV9KR19NQUxBWUFMQU1fTk5OQSwgIA0KICAgIFVfSkdfTUFMQVlBTEFN
X05ZQSwgIA0KICAgIFVfSkdfTUFMQVlBTEFNX1JBLCAgDQogICAgVV9KR19NQUxBWUFMQU1fU1NB
LCAgDQogICAgVV9KR19NQUxBWUFMQU1fVFRBLCAgDQoNCiAgICBVX0pHX0hBTklGSV9ST0hJTkdZ
QV9LSU5OQV9ZQSwgIA0KICAgIFVfSkdfSEFOSUZJX1JPSElOR1lBX1BBLCAgDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCn0gVUpvaW5pbmdHcm91cDsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVH
cmFwaGVtZUNsdXN0ZXJCcmVhayB7DQogICAgDQoNCg0KDQoNCg0KICAgIFVfR0NCX09USEVSID0g
MCwgICAgICAgICAgICANCiAgICBVX0dDQl9DT05UUk9MID0gMSwgICAgICAgICAgDQogICAgVV9H
Q0JfQ1IgPSAyLCAgICAgICAgICAgICAgIA0KICAgIFVfR0NCX0VYVEVORCA9IDMsICAgICAgICAg
ICANCiAgICBVX0dDQl9MID0gNCwgICAgICAgICAgICAgICAgDQogICAgVV9HQ0JfTEYgPSA1LCAg
ICAgICAgICAgICAgIA0KICAgIFVfR0NCX0xWID0gNiwgICAgICAgICAgICAgICANCiAgICBVX0dD
Ql9MVlQgPSA3LCAgICAgICAgICAgICAgDQogICAgVV9HQ0JfVCA9IDgsICAgICAgICAgICAgICAg
IA0KICAgIFVfR0NCX1YgPSA5LCAgICAgICAgICAgICAgICANCiAgICANCiAgICBVX0dDQl9TUEFD
SU5HX01BUksgPSAxMCwgICAgIA0KICAgIA0KICAgIFVfR0NCX1BSRVBFTkQgPSAxMSwgICAgICAg
ICANCiAgICANCiAgICBVX0dDQl9SRUdJT05BTF9JTkRJQ0FUT1IgPSAxMiwgICANCiAgICANCiAg
ICBVX0dDQl9FX0JBU0UgPSAxMywgICAgICAgICAgIA0KICAgIA0KICAgIFVfR0NCX0VfQkFTRV9H
QVogPSAxNCwgICAgICANCiAgICANCiAgICBVX0dDQl9FX01PRElGSUVSID0gMTUsICAgICAgDQog
ICAgDQogICAgVV9HQ0JfR0xVRV9BRlRFUl9aV0ogPSAxNiwgIA0KICAgIA0KICAgIFVfR0NCX1pX
SiA9IDE3LCAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KfSBVR3JhcGhlbWVDbHVz
dGVyQnJlYWs7DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVXb3JkQnJlYWtWYWx1ZXMg
ew0KICAgIA0KDQoNCg0KDQoNCiAgICBVX1dCX09USEVSID0gMCwgICAgICAgICAgICAgDQogICAg
VV9XQl9BTEVUVEVSID0gMSwgICAgICAgICAgIA0KICAgIFVfV0JfRk9STUFUID0gMiwgICAgICAg
ICAgICANCiAgICBVX1dCX0tBVEFLQU5BID0gMywgICAgICAgICAgDQogICAgVV9XQl9NSURMRVRU
RVIgPSA0LCAgICAgICAgIA0KICAgIFVfV0JfTUlETlVNID0gNSwgICAgICAgICAgICANCiAgICBV
X1dCX05VTUVSSUMgPSA2LCAgICAgICAgICAgDQogICAgVV9XQl9FWFRFTkROVU1MRVQgPSA3LCAg
ICAgIA0KICAgIA0KICAgIFVfV0JfQ1IgPSA4LCAgICAgICAgICAgICAgICAgDQogICAgDQogICAg
VV9XQl9FWFRFTkQgPSA5LCAgICAgICAgICAgIA0KICAgIA0KICAgIFVfV0JfTEYgPSAxMCwgICAg
ICAgICAgICAgICANCiAgICANCiAgICBVX1dCX01JRE5VTUxFVCA9MTEsICAgICAgICAgDQogICAg
DQogICAgVV9XQl9ORVdMSU5FID0xMiwgICAgICAgICAgIA0KICAgIA0KICAgIFVfV0JfUkVHSU9O
QUxfSU5ESUNBVE9SID0gMTMsICAgIA0KICAgIA0KICAgIFVfV0JfSEVCUkVXX0xFVFRFUiA9IDE0
LCAgICAgDQogICAgDQogICAgVV9XQl9TSU5HTEVfUVVPVEUgPSAxNSwgICAgIA0KICAgIA0KICAg
IFVfV0JfRE9VQkxFX1FVT1RFID0gMTYsICAgICANCiAgICANCiAgICBVX1dCX0VfQkFTRSA9IDE3
LCAgICAgICAgICAgIA0KICAgIA0KICAgIFVfV0JfRV9CQVNFX0dBWiA9IDE4LCAgICAgICANCiAg
ICANCiAgICBVX1dCX0VfTU9ESUZJRVIgPSAxOSwgICAgICAgDQogICAgDQogICAgVV9XQl9HTFVF
X0FGVEVSX1pXSiA9IDIwLCAgIA0KICAgIA0KICAgIFVfV0JfWldKID0gMjEsICAgICAgICAgICAg
ICANCiAgICANCiAgICBVX1dCX1dTRUdTUEFDRSA9IDIyLCAgICAgICAgDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCn0gVVdvcmRCcmVha1ZhbHVlczsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVT
ZW50ZW5jZUJyZWFrIHsNCiAgICANCg0KDQoNCg0KDQogICAgVV9TQl9PVEhFUiA9IDAsICAgICAg
ICAgICAgIA0KICAgIFVfU0JfQVRFUk0gPSAxLCAgICAgICAgICAgICANCiAgICBVX1NCX0NMT1NF
ID0gMiwgICAgICAgICAgICAgDQogICAgVV9TQl9GT1JNQVQgPSAzLCAgICAgICAgICAgIA0KICAg
IFVfU0JfTE9XRVIgPSA0LCAgICAgICAgICAgICANCiAgICBVX1NCX05VTUVSSUMgPSA1LCAgICAg
ICAgICAgDQogICAgVV9TQl9PTEVUVEVSID0gNiwgICAgICAgICAgIA0KICAgIFVfU0JfU0VQID0g
NywgICAgICAgICAgICAgICANCiAgICBVX1NCX1NQID0gOCwgICAgICAgICAgICAgICAgDQogICAg
VV9TQl9TVEVSTSA9IDksICAgICAgICAgICAgIA0KICAgIFVfU0JfVVBQRVIgPSAxMCwgICAgICAg
ICAgICANCiAgICBVX1NCX0NSID0gMTEsICAgICAgICAgICAgICAgIA0KICAgIFVfU0JfRVhURU5E
ID0gMTIsICAgICAgICAgICANCiAgICBVX1NCX0xGID0gMTMsICAgICAgICAgICAgICAgDQogICAg
VV9TQl9TQ09OVElOVUUgPSAxNCwgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KfSBVU2VudGVu
Y2VCcmVhazsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIFVMaW5lQnJlYWsgew0KICAgIA0K
DQoNCg0KDQoNCiAgICBVX0xCX1VOS05PV04gPSAwLCAgICAgICAgICAgDQogICAgVV9MQl9BTUJJ
R1VPVVMgPSAxLCAgICAgICAgIA0KICAgIFVfTEJfQUxQSEFCRVRJQyA9IDIsICAgICAgICANCiAg
ICBVX0xCX0JSRUFLX0JPVEggPSAzLCAgICAgICAgDQogICAgVV9MQl9CUkVBS19BRlRFUiA9IDQs
ICAgICAgIA0KICAgIFVfTEJfQlJFQUtfQkVGT1JFID0gNSwgICAgICANCiAgICBVX0xCX01BTkRB
VE9SWV9CUkVBSyA9IDYsICAgDQogICAgVV9MQl9DT05USU5HRU5UX0JSRUFLID0gNywgIA0KICAg
IFVfTEJfQ0xPU0VfUFVOQ1RVQVRJT04gPSA4LCANCiAgICBVX0xCX0NPTUJJTklOR19NQVJLID0g
OSwgICAgDQogICAgVV9MQl9DQVJSSUFHRV9SRVRVUk4gPSAxMCwgICANCiAgICBVX0xCX0VYQ0xB
TUFUSU9OID0gMTEsICAgICAgIA0KICAgIFVfTEJfR0xVRSA9IDEyLCAgICAgICAgICAgICAgDQog
ICAgVV9MQl9IWVBIRU4gPSAxMywgICAgICAgICAgICANCiAgICBVX0xCX0lERU9HUkFQSElDID0g
MTQsICAgICAgIA0KICAgIA0KICAgIFVfTEJfSU5TRVBBUkFCTEUgPSAxNSwgICAgICAgDQogICAg
VV9MQl9JTlNFUEVSQUJMRSA9IFVfTEJfSU5TRVBBUkFCTEUsDQogICAgVV9MQl9JTkZJWF9OVU1F
UklDID0gMTYsICAgICANCiAgICBVX0xCX0xJTkVfRkVFRCA9IDE3LCAgICAgICAgIA0KICAgIFVf
TEJfTk9OU1RBUlRFUiA9IDE4LCAgICAgICAgDQogICAgVV9MQl9OVU1FUklDID0gMTksICAgICAg
ICAgICANCiAgICBVX0xCX09QRU5fUFVOQ1RVQVRJT04gPSAyMCwgIA0KICAgIFVfTEJfUE9TVEZJ
WF9OVU1FUklDID0gMjEsICAgDQogICAgVV9MQl9QUkVGSVhfTlVNRVJJQyA9IDIyLCAgICANCiAg
ICBVX0xCX1FVT1RBVElPTiA9IDIzLCAgICAgICAgIA0KICAgIFVfTEJfQ09NUExFWF9DT05URVhU
ID0gMjQsICAgDQogICAgVV9MQl9TVVJST0dBVEUgPSAyNSwgICAgICAgICANCiAgICBVX0xCX1NQ
QUNFID0gMjYsICAgICAgICAgICAgIA0KICAgIFVfTEJfQlJFQUtfU1lNQk9MUyA9IDI3LCAgICAg
DQogICAgVV9MQl9aV1NQQUNFID0gMjgsICAgICAgICAgICANCiAgICANCiAgICBVX0xCX05FWFRf
TElORSA9IDI5LCAgICAgICAgICANCiAgICANCiAgICBVX0xCX1dPUkRfSk9JTkVSID0gMzAsICAg
ICAgIA0KICAgIA0KICAgIFVfTEJfSDIgPSAzMSwgICAgICAgICAgICAgICAgIA0KICAgIA0KICAg
IFVfTEJfSDMgPSAzMiwgICAgICAgICAgICAgICAgDQogICAgDQogICAgVV9MQl9KTCA9IDMzLCAg
ICAgICAgICAgICAgICANCiAgICANCiAgICBVX0xCX0pUID0gMzQsICAgICAgICAgICAgICAgIA0K
ICAgIA0KICAgIFVfTEJfSlYgPSAzNSwgICAgICAgICAgICAgICAgDQogICAgDQogICAgVV9MQl9D
TE9TRV9QQVJFTlRIRVNJUyA9IDM2LCAgDQogICAgDQogICAgVV9MQl9DT05ESVRJT05BTF9KQVBB
TkVTRV9TVEFSVEVSID0gMzcsIA0KICAgIA0KICAgIFVfTEJfSEVCUkVXX0xFVFRFUiA9IDM4LCAg
ICAgIA0KICAgIA0KICAgIFVfTEJfUkVHSU9OQUxfSU5ESUNBVE9SID0gMzksIA0KICAgIA0KICAg
IFVfTEJfRV9CQVNFID0gNDAsICAgICAgICAgICAgIA0KICAgIA0KICAgIFVfTEJfRV9NT0RJRklF
UiA9IDQxLCAgICAgICAgDQogICAgDQogICAgVV9MQl9aV0ogPSA0MiwgICAgICAgICAgICAgICAN
Cg0KDQoNCg0KDQoNCg0KDQoNCn0gVUxpbmVCcmVhazsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBl
bnVtIFVOdW1lcmljVHlwZSB7DQogICAgDQoNCg0KDQoNCg0KICAgIFVfTlRfTk9ORSwgICAgICAg
ICAgICAgIA0KICAgIFVfTlRfREVDSU1BTCwgICAgICAgICAgIA0KICAgIFVfTlRfRElHSVQsICAg
ICAgICAgICAgIA0KICAgIFVfTlRfTlVNRVJJQywgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoN
Cg0KfSBVTnVtZXJpY1R5cGU7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBVSGFuZ3VsU3ls
bGFibGVUeXBlIHsNCiAgICANCg0KDQoNCg0KDQogICAgVV9IU1RfTk9UX0FQUExJQ0FCTEUsICAg
DQogICAgVV9IU1RfTEVBRElOR19KQU1PLCAgICAgDQogICAgVV9IU1RfVk9XRUxfSkFNTywgICAg
ICAgDQogICAgVV9IU1RfVFJBSUxJTkdfSkFNTywgICAgDQogICAgVV9IU1RfTFZfU1lMTEFCTEUs
ICAgICAgDQogICAgVV9IU1RfTFZUX1NZTExBQkxFLCAgICAgDQoNCg0KDQoNCg0KDQoNCg0KDQp9
IFVIYW5ndWxTeWxsYWJsZVR5cGU7DQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgZW51bSBVSW5kaWNQ
b3NpdGlvbmFsQ2F0ZWdvcnkgew0KICAgIA0KDQoNCg0KDQoNCiAgICANCiAgICBVX0lOUENfTkEs
DQogICAgDQogICAgVV9JTlBDX0JPVFRPTSwNCiAgICANCiAgICBVX0lOUENfQk9UVE9NX0FORF9M
RUZULA0KICAgIA0KICAgIFVfSU5QQ19CT1RUT01fQU5EX1JJR0hULA0KICAgIA0KICAgIFVfSU5Q
Q19MRUZULA0KICAgIA0KICAgIFVfSU5QQ19MRUZUX0FORF9SSUdIVCwNCiAgICANCiAgICBVX0lO
UENfT1ZFUlNUUlVDSywNCiAgICANCiAgICBVX0lOUENfUklHSFQsDQogICAgDQogICAgVV9JTlBD
X1RPUCwNCiAgICANCiAgICBVX0lOUENfVE9QX0FORF9CT1RUT00sDQogICAgDQogICAgVV9JTlBD
X1RPUF9BTkRfQk9UVE9NX0FORF9SSUdIVCwNCiAgICANCiAgICBVX0lOUENfVE9QX0FORF9MRUZU
LA0KICAgIA0KICAgIFVfSU5QQ19UT1BfQU5EX0xFRlRfQU5EX1JJR0hULA0KICAgIA0KICAgIFVf
SU5QQ19UT1BfQU5EX1JJR0hULA0KICAgIA0KICAgIFVfSU5QQ19WSVNVQUxfT1JERVJfTEVGVCwN
Cn0gVUluZGljUG9zaXRpb25hbENhdGVnb3J5Ow0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0g
VUluZGljU3lsbGFiaWNDYXRlZ29yeSB7DQogICAgDQoNCg0KDQoNCg0KICAgIA0KICAgIFVfSU5T
Q19PVEhFUiwNCiAgICANCiAgICBVX0lOU0NfQVZBR1JBSEEsDQogICAgDQogICAgVV9JTlNDX0JJ
TkRVLA0KICAgIA0KICAgIFVfSU5TQ19CUkFITUlfSk9JTklOR19OVU1CRVIsDQogICAgDQogICAg
VV9JTlNDX0NBTlRJTExBVElPTl9NQVJLLA0KICAgIA0KICAgIFVfSU5TQ19DT05TT05BTlQsDQog
ICAgDQogICAgVV9JTlNDX0NPTlNPTkFOVF9ERUFELA0KICAgIA0KICAgIFVfSU5TQ19DT05TT05B
TlRfRklOQUwsDQogICAgDQogICAgVV9JTlNDX0NPTlNPTkFOVF9IRUFEX0xFVFRFUiwNCiAgICAN
CiAgICBVX0lOU0NfQ09OU09OQU5UX0lOSVRJQUxfUE9TVEZJWEVELA0KICAgIA0KICAgIFVfSU5T
Q19DT05TT05BTlRfS0lMTEVSLA0KICAgIA0KICAgIFVfSU5TQ19DT05TT05BTlRfTUVESUFMLA0K
ICAgIA0KICAgIFVfSU5TQ19DT05TT05BTlRfUExBQ0VIT0xERVIsDQogICAgDQogICAgVV9JTlND
X0NPTlNPTkFOVF9QUkVDRURJTkdfUkVQSEEsDQogICAgDQogICAgVV9JTlNDX0NPTlNPTkFOVF9Q
UkVGSVhFRCwNCiAgICANCiAgICBVX0lOU0NfQ09OU09OQU5UX1NVQkpPSU5FRCwNCiAgICANCiAg
ICBVX0lOU0NfQ09OU09OQU5UX1NVQ0NFRURJTkdfUkVQSEEsDQogICAgDQogICAgVV9JTlNDX0NP
TlNPTkFOVF9XSVRIX1NUQUNLRVIsDQogICAgDQogICAgVV9JTlNDX0dFTUlOQVRJT05fTUFSSywN
CiAgICANCiAgICBVX0lOU0NfSU5WSVNJQkxFX1NUQUNLRVIsDQogICAgDQogICAgVV9JTlNDX0pP
SU5FUiwNCiAgICANCiAgICBVX0lOU0NfTU9ESUZZSU5HX0xFVFRFUiwNCiAgICANCiAgICBVX0lO
U0NfTk9OX0pPSU5FUiwNCiAgICANCiAgICBVX0lOU0NfTlVLVEEsDQogICAgDQogICAgVV9JTlND
X05VTUJFUiwNCiAgICANCiAgICBVX0lOU0NfTlVNQkVSX0pPSU5FUiwNCiAgICANCiAgICBVX0lO
U0NfUFVSRV9LSUxMRVIsDQogICAgDQogICAgVV9JTlNDX1JFR0lTVEVSX1NISUZURVIsDQogICAg
DQogICAgVV9JTlNDX1NZTExBQkxFX01PRElGSUVSLA0KICAgIA0KICAgIFVfSU5TQ19UT05FX0xF
VFRFUiwNCiAgICANCiAgICBVX0lOU0NfVE9ORV9NQVJLLA0KICAgIA0KICAgIFVfSU5TQ19WSVJB
TUEsDQogICAgDQogICAgVV9JTlNDX1ZJU0FSR0EsDQogICAgDQogICAgVV9JTlNDX1ZPV0VMLA0K
ICAgIA0KICAgIFVfSU5TQ19WT1dFTF9ERVBFTkRFTlQsDQogICAgDQogICAgVV9JTlNDX1ZPV0VM
X0lOREVQRU5ERU5ULA0KfSBVSW5kaWNTeWxsYWJpY0NhdGVnb3J5Ow0KDQoNCg0KDQoNCg0KDQp0
eXBlZGVmIGVudW0gVVZlcnRpY2FsT3JpZW50YXRpb24gew0KICAgIA0KDQoNCg0KDQoNCiAgICAN
CiAgICBVX1ZPX1JPVEFURUQsDQogICAgDQogICAgVV9WT19UUkFOU0ZPUk1FRF9ST1RBVEVELA0K
ICAgIA0KICAgIFVfVk9fVFJBTlNGT1JNRURfVVBSSUdIVCwNCiAgICANCiAgICBVX1ZPX1VQUklH
SFQsDQp9IFVWZXJ0aWNhbE9yaWVudGF0aW9uOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBVQm9vbCBfX2NkZWNsDQp1X2hhc0JpbmFyeVByb3BlcnR5XzYzKFVDaGFyMzIgYywgVVBy
b3BlcnR5IHdoaWNoKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IFVTZXQgKiBfX2NkZWNsDQp1X2dldEJp
bmFyeVByb3BlcnR5U2V0XzYzKFVQcm9wZXJ0eSBwcm9wZXJ0eSwgVUVycm9yQ29kZSAqcEVycm9y
Q29kZSk7DQoNCiNsaW5lIDI1ODEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNoYXIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0K
dV9pc1VBbHBoYWJldGljXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29sIF9fY2RlY2wNCnVfaXNVTG93
ZXJjYXNlXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29sIF9fY2RlY2wNCnVfaXNVVXBwZXJjYXNlXzYz
KFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29sIF9fY2RlY2wNCnVfaXNVV2hpdGVTcGFj
ZV82MyhVQ2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgaW50MzJfdCBfX2NkZWNsDQp1X2dldEludFByb3BlcnR5VmFsdWVfNjMo
VUNoYXIzMiBjLCBVUHJvcGVydHkgd2hpY2gpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2Rl
Y2wNCnVfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZV82MyhVUHJvcGVydHkgd2hpY2gpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50MzJfdCBfX2NkZWNsDQp1X2dldEludFByb3BlcnR5
TWF4VmFsdWVfNjMoVVByb3BlcnR5IHdoaWNoKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IFVDUE1hcCAq
IF9fY2RlY2wNCnVfZ2V0SW50UHJvcGVydHlNYXBfNjMoVVByb3BlcnR5IHByb3BlcnR5LCBVRXJy
b3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KI2xpbmUgMjc2MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y2hhci5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGRvdWJsZSBfX2NkZWNsDQp1X2dldE51bWVyaWNWYWx1ZV82MyhV
Q2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJv
b2wgX19jZGVjbA0KdV9pc2xvd2VyXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxl
eHBvcnQpIFVCb29sIF9fY2RlY2wNCnVfaXN1cHBlcl82MyhVQ2hhcjMyIGMpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJv
b2wgX19jZGVjbA0KdV9pc3RpdGxlXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29s
IF9fY2RlY2wNCnVfaXNkaWdpdF82MyhVQ2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQm9vbCBf
X2NkZWNsDQp1X2lzYWxwaGFfNjMoVUNoYXIzMiBjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19j
ZGVjbA0KdV9pc2FsbnVtXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQm9vbCBf
X2NkZWNsDQp1X2lzeGRpZ2l0XzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0KdV9p
c3B1bmN0XzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0KdV9pc2dyYXBo
XzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVj
bA0KdV9pc2JsYW5rXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wg
X19jZGVjbA0KdV9pc2RlZmluZWRfNjMoVUNoYXIzMiBjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wg
X19jZGVjbA0KdV9pc3NwYWNlXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29sIF9f
Y2RlY2wNCnVfaXNKYXZhU3BhY2VDaGFyXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0KdV9pc1do
aXRlc3BhY2VfNjMoVUNoYXIzMiBjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVj
bA0KdV9pc2NudHJsXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29sIF9fY2RlY2wNCnVfaXNJU09Db250
cm9sXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29sIF9fY2RlY2wNCnVfaXNwcmludF82MyhV
Q2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQm9vbCBfX2NkZWNsDQp1X2lzYmFzZV82MyhVQ2hh
cjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIFVDaGFyRGlyZWN0aW9uIF9fY2RlY2wNCnVfY2hhckRpcmVjdGlv
bl82MyhVQ2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQm9vbCBfX2NkZWNsDQp1X2lzTWlycm9yZWRfNjMo
VUNoYXIzMiBjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhcjMyIF9fY2RlY2wNCnVfY2hhck1pcnJv
cl82MyhVQ2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVDaGFyMzIgX19jZGVjbA0KdV9nZXRCaWRpUGFp
cmVkQnJhY2tldF82MyhVQ2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50OF90IF9fY2RlY2wNCnVfY2hhclR5cGVfNjMo
VUNoYXIzMiBjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUJvb2wgX19jZGVjbA0KVUNoYXJFbnVtVHlw
ZVJhbmdlKGNvbnN0IHZvaWQgKmNvbnRleHQsIFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgbGltaXQs
IFVDaGFyQ2F0ZWdvcnkgdHlwZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBfX2NkZWNsDQp1X2Vu
dW1DaGFyVHlwZXNfNjMoVUNoYXJFbnVtVHlwZVJhbmdlICplbnVtUmFuZ2UsIGNvbnN0IHZvaWQg
KmNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSB1aW50OF90IF9fY2RlY2wNCnVfZ2V0Q29tYmluaW5nQ2xhc3NfNjMoVUNoYXIzMiBj
KTsNCg0KI2xpbmUgMzM2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcdW5pY29kZS91Y2hhci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgaW50MzJfdCBfX2NkZWNsDQp1X2NoYXJEaWdpdFZhbHVlXzYzKFVDaGFyMzIgYyk7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCbG9ja0Nv
ZGUgX19jZGVjbA0KdWJsb2NrX2dldENvZGVfNjMoVUNoYXIzMiBjKTsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIGludDMyX3QgX19jZGVjbA0KdV9jaGFyTmFtZV82
MyhVQ2hhcjMyIGNvZGUsIFVDaGFyTmFtZUNob2ljZSBuYW1lQ2hvaWNlLA0KICAgICAgICAgICBj
aGFyICpidWZmZXIsIGludDMyX3QgYnVmZmVyTGVuZ3RoLA0KICAgICAgICAgICBVRXJyb3JDb2Rl
ICpwRXJyb3JDb2RlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIzMiBfX2NkZWNsDQp1X2NoYXJGcm9tTmFt
ZV82MyhVQ2hhck5hbWVDaG9pY2UgbmFtZUNob2ljZSwNCiAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKm5hbWUsDQogICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUJvb2wgX19jZGVjbCBVRW51
bUNoYXJOYW1lc0ZuKHZvaWQgKmNvbnRleHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVUNoYXIzMiBjb2RlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyTmFt
ZUNob2ljZSBuYW1lQ2hvaWNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBsZW5n
dGgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIF9fY2RlY2wNCnVfZW51bUNoYXJOYW1lc182
MyhVQ2hhcjMyIHN0YXJ0LCBVQ2hhcjMyIGxpbWl0LA0KICAgICAgICAgICAgICAgIFVFbnVtQ2hh
ck5hbWVzRm4gKmZuLA0KICAgICAgICAgICAgICAgIHZvaWQgKmNvbnRleHQsDQogICAgICAgICAg
ICAgICAgVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2UsDQogICAgICAgICAgICAgICAgVUVycm9y
Q29kZSAqcEVycm9yQ29kZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgY29uc3QgY2hhciogX19jZGVjbA0KdV9nZXRQcm9wZXJ0eU5hbWVfNjMoVVByb3BlcnR5IHBy
b3BlcnR5LA0KICAgICAgICAgICAgICAgICAgVVByb3BlcnR5TmFtZUNob2ljZSBuYW1lQ2hvaWNl
KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBVUHJvcGVydHkgX19jZGVjbA0KdV9nZXRQcm9wZXJ0eUVudW1f
NjMoY29uc3QgY2hhciogYWxpYXMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgY2hhciogX19jZGVj
bA0KdV9nZXRQcm9wZXJ0eVZhbHVlTmFtZV82MyhVUHJvcGVydHkgcHJvcGVydHksDQogICAgICAg
ICAgICAgICAgICAgICAgIGludDMyX3QgdmFsdWUsDQogICAgICAgICAgICAgICAgICAgICAgIFVQ
cm9wZXJ0eU5hbWVDaG9pY2UgbmFtZUNob2ljZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgaW50MzJfdCBfX2NkZWNsDQp1X2dldFByb3BlcnR5VmFsdWVFbnVtXzYz
KFVQcm9wZXJ0eSBwcm9wZXJ0eSwNCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YWxpYXMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0KdV9pc0lEU3RhcnRfNjMoVUNoYXIz
MiBjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0KdV9pc0lEUGFydF82MyhV
Q2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0KdV9pc0lESWdub3Jh
YmxlXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUJvb2wgX19jZGVjbA0KdV9pc0phdmFJRFN0
YXJ0XzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpIFVCb29sIF9fY2RlY2wNCnVfaXNKYXZh
SURQYXJ0XzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgVUNoYXIzMiBfX2Nk
ZWNsDQp1X3RvbG93ZXJfNjMoVUNoYXIzMiBjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hh
cjMyIF9fY2RlY2wNCnVfdG91cHBlcl82MyhVQ2hhcjMyIGMpOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBv
cnQpIFVDaGFyMzIgX19jZGVjbA0KdV90b3RpdGxlXzYzKFVDaGFyMzIgYyk7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgVUNoYXIzMiBfX2NkZWNsDQp1X2ZvbGRDYXNlXzYzKFVDaGFyMzIgYywgdWlu
dDMyX3Qgb3B0aW9ucyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBpbnQzMl90IF9fY2RlY2wNCnVfZGlnaXRfNjMoVUNoYXIzMiBjaCwgaW50
OF90IHJhZGl4KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBVQ2hhcjMyIF9f
Y2RlY2wNCnVfZm9yRGlnaXRfNjMoaW50MzJfdCBkaWdpdCwgaW50OF90IHJhZGl4KTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQp
IHZvaWQgX19jZGVjbA0KdV9jaGFyQWdlXzYzKFVDaGFyMzIgYywgVVZlcnNpb25JbmZvIHZlcnNp
b25BcnJheSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSB2b2lkIF9fY2RlY2wNCnVfZ2V0VW5pY29kZVZlcnNpb25fNjMoVVZlcnNpb25J
bmZvIHZlcnNpb25BcnJheSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50MzJfdCBfX2NkZWNs
DQp1X2dldEZDX05GS0NfQ2xvc3VyZV82MyhVQ2hhcjMyIGMsIFVDaGFyICpkZXN0LCBpbnQzMl90
IGRlc3RDYXBhY2l0eSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7DQoNCiNsaW5lIDQwMTggIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVu
aWNvZGUvdWNoYXIuaCINCg0KDQp9DQoNCiNsaW5lIDQwMjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXHVuaWNvZGUvdWNoYXIuaCINCg0K
I2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgiDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0xhdGluMShD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikNCnsNCiAgICB1c2luZyBVbnNpZ25lZENoYXJhY3RlclR5
cGUgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8Q2hhcmFjdGVyVHlwZT46OnR5cGU7DQog
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hhcmFjdGVyVHlwZT4oY2hhcmFjdGVyKSA8
PSBzdGF0aWNfY2FzdDxVbnNpZ25lZENoYXJhY3RlclR5cGU+KDB4RkYpOw0KfQ0KDQp1c2luZyBD
b2RlVW5pdE1hdGNoRnVuY3Rpb24gPSBib29sICgqKShVQ2hhcik7DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGVBLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQj4gYm9vbCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGVBKiwgY29uc3QgQ2hhcmFjdGVyVHlw
ZUIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUEs
IHR5cGVuYW1lIENoYXJhY3RlclR5cGVCPiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgQ2hhcmFjdGVyVHlwZUEqLCB1bnNpZ25lZCBsZW5ndGhBLCBjb25zdCBDaGFyYWN0ZXJUeXBl
QiosIHVuc2lnbmVkIGxlbmd0aEIpOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0Es
IHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4gYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9u
KGNvbnN0IFN0cmluZ0NsYXNzQSYsIGNvbnN0IFN0cmluZ0NsYXNzQiYpOw0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IENoYXJhY3RlclR5cGUqLCBjb25zdCBjaGFyKiBsb3dlcmNhc2VMZXR0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpOw0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdW5zaWduZWQg
bG93ZXJjYXNlTGV0dGVyc0xlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQgY2hhcmFjdGVyc0xlbmd0aCwgY29uc3Qg
Y2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xvd2VyY2FzZUxldHRlcnNMZW5ndGhdKTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3MsIHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihjb25zdCBTdHJpbmdDbGFzcyYsIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsNCg0KYm9vbCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7DQp0ZW1wbGF0ZTx1bnNpZ25lZCBsb3dl
cmNhc2VMZXR0ZXJzTGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbG93ZXJjYXNlTGV0dGVy
c0xlbmd0aF0pOw0KDQoNCg0KX19mb3JjZWlubGluZSBib29sIGVxdWFsKGNvbnN0IExDaGFyKiBh
TENoYXIsIGNvbnN0IExDaGFyKiBiTENoYXIsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAgICB1bnNp
Z25lZCBkd29yZExlbmd0aCA9IGxlbmd0aCA+PiAzOw0KDQogICAgY29uc3QgY2hhciogYSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFMQ2hhcik7DQogICAgY29uc3QgY2hhciogYiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJMQ2hhcik7DQoNCiAgICBpZiAoZHdvcmRM
ZW5ndGgpIHsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBkd29yZExlbmd0aDsg
KytpKSB7DQogICAgICAgICAgICBpZiAodW5hbGlnbmVkTG9hZDx1aW50NjRfdD4oYSkgIT0gdW5h
bGlnbmVkTG9hZDx1aW50NjRfdD4oYikpDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0K
DQogICAgICAgICAgICBhICs9IHNpemVvZih1aW50NjRfdCk7DQogICAgICAgICAgICBiICs9IHNp
emVvZih1aW50NjRfdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAobGVuZ3RoICYgNCkg
ew0KICAgICAgICBpZiAodW5hbGlnbmVkTG9hZDx1aW50MzJfdD4oYSkgIT0gdW5hbGlnbmVkTG9h
ZDx1aW50MzJfdD4oYikpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAgYSAr
PSBzaXplb2YodWludDMyX3QpOw0KICAgICAgICBiICs9IHNpemVvZih1aW50MzJfdCk7DQogICAg
fQ0KDQogICAgaWYgKGxlbmd0aCAmIDIpIHsNCiAgICAgICAgaWYgKHVuYWxpZ25lZExvYWQ8dWlu
dDE2X3Q+KGEpICE9IHVuYWxpZ25lZExvYWQ8dWludDE2X3Q+KGIpKQ0KICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KDQogICAgICAgIGEgKz0gc2l6ZW9mKHVpbnQxNl90KTsNCiAgICAgICAgYiAr
PSBzaXplb2YodWludDE2X3QpOw0KICAgIH0NCg0KICAgIGlmIChsZW5ndGggJiAxICYmICgqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpICE9ICpyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oYikpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICByZXR1cm4gdHJ1ZTsN
Cn0NCg0KX19mb3JjZWlubGluZSBib29sIGVxdWFsKGNvbnN0IFVDaGFyKiBhVUNoYXIsIGNvbnN0
IFVDaGFyKiBiVUNoYXIsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAgICB1bnNpZ25lZCBkd29yZExl
bmd0aCA9IGxlbmd0aCA+PiAyOw0KDQogICAgY29uc3QgY2hhciogYSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGFVQ2hhcik7DQogICAgY29uc3QgY2hhciogYiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGJVQ2hhcik7DQoNCiAgICBpZiAoZHdvcmRMZW5ndGgpIHsNCiAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBkd29yZExlbmd0aDsgKytpKSB7DQogICAg
ICAgICAgICBpZiAodW5hbGlnbmVkTG9hZDx1aW50NjRfdD4oYSkgIT0gdW5hbGlnbmVkTG9hZDx1
aW50NjRfdD4oYikpDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgICAg
ICBhICs9IHNpemVvZih1aW50NjRfdCk7DQogICAgICAgICAgICBiICs9IHNpemVvZih1aW50NjRf
dCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAobGVuZ3RoICYgMikgew0KICAgICAgICBp
ZiAodW5hbGlnbmVkTG9hZDx1aW50MzJfdD4oYSkgIT0gdW5hbGlnbmVkTG9hZDx1aW50MzJfdD4o
YikpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAgYSArPSBzaXplb2YodWlu
dDMyX3QpOw0KICAgICAgICBiICs9IHNpemVvZih1aW50MzJfdCk7DQogICAgfQ0KDQogICAgaWYg
KGxlbmd0aCAmIDEgJiYgKCpyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYSkgIT0gKnJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihiKSkpDQogICAgICAgIHJldHVybiBmYWxzZTsN
Cg0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI4
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvdGV4dC9TdHJpbmdDb21tb24uaCINCg0KX19mb3JjZWlubGluZSBib29sIGVxdWFsKGNvbnN0
IExDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQ0Kew0KICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgew0KICAgICAgICBpZiAoYVtpXSAhPSBi
W2ldKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICByZXR1cm4gdHJ1ZTsN
Cn0NCg0KX19mb3JjZWlubGluZSBib29sIGVxdWFsKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBMQ2hh
ciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbChiLCBhLCBsZW5ndGgpOyB9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NCPg0K
X19mb3JjZWlubGluZSBib29sIGVxdWFsQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzQSYgYSwgY29u
c3QgU3RyaW5nQ2xhc3NCJiBiKQ0Kew0KICAgIHVuc2lnbmVkIGxlbmd0aCA9IGEubGVuZ3RoKCk7
DQogICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCgpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoN
CiAgICBpZiAoYS5pczhCaXQoKSkgew0KICAgICAgICBpZiAoYi5pczhCaXQoKSkNCiAgICAgICAg
ICAgIHJldHVybiBlcXVhbChhLmNoYXJhY3RlcnM4KCksIGIuY2hhcmFjdGVyczgoKSwgbGVuZ3Ro
KTsNCg0KICAgICAgICByZXR1cm4gZXF1YWwoYS5jaGFyYWN0ZXJzOCgpLCBiLmNoYXJhY3RlcnMx
NigpLCBsZW5ndGgpOw0KICAgIH0NCg0KICAgIGlmIChiLmlzOEJpdCgpKQ0KICAgICAgICByZXR1
cm4gZXF1YWwoYS5jaGFyYWN0ZXJzMTYoKSwgYi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOw0KDQog
ICAgcmV0dXJuIGVxdWFsKGEuY2hhcmFjdGVyczE2KCksIGIuY2hhcmFjdGVyczE2KCksIGxlbmd0
aCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5n
Q2xhc3NCPg0KX19mb3JjZWlubGluZSBib29sIGVxdWFsQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNz
QSogYSwgY29uc3QgU3RyaW5nQ2xhc3NCKiBiKQ0Kew0KICAgIGlmIChhID09IGIpDQogICAgICAg
IHJldHVybiB0cnVlOw0KICAgIGlmICghYSB8fCAhYikNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgIHJldHVybiBlcXVhbCgqYSwgKmIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcywgdW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0NsYXNzJiBhLCBj
b25zdCBVQ2hhciAoJmNvZGVVbml0cylbbGVuZ3RoXSkNCnsNCiAgICBpZiAoYS5sZW5ndGgoKSAh
PSBsZW5ndGgpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgIGlmIChhLmlzOEJpdCgpKQ0K
ICAgICAgICByZXR1cm4gZXF1YWwoYS5jaGFyYWN0ZXJzOCgpLCBjb2RlVW5pdHMsIGxlbmd0aCk7
DQoNCiAgICByZXR1cm4gZXF1YWwoYS5jaGFyYWN0ZXJzMTYoKSwgY29kZVVuaXRzLCBsZW5ndGgp
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQSwgdHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZUI+DQppbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJh
Y3RlclR5cGVBKiBhLCBjb25zdCBDaGFyYWN0ZXJUeXBlQiogYiwgdW5zaWduZWQgbGVuZ3RoKQ0K
ew0KICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgew0KICAgICAgICBp
ZiAodG9BU0NJSUxvd2VyKGFbaV0pICE9IHRvQVNDSUlMb3dlcihiW2ldKSkNCiAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGVBLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQj4gaW5saW5lIGJv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBDaGFyYWN0ZXJUeXBlQSogYSwgdW5zaWdu
ZWQgbGVuZ3RoQSwgY29uc3QgQ2hhcmFjdGVyVHlwZUIqIGIsIHVuc2lnbmVkIGxlbmd0aEIpDQp7
DQogICAgcmV0dXJuIGxlbmd0aEEgPT0gbGVuZ3RoQiAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGEsIGIsIGxlbmd0aEEpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5
cGVuYW1lIFN0cmluZ0NsYXNzQj4NCmJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihj
b25zdCBTdHJpbmdDbGFzc0EmIGEsIGNvbnN0IFN0cmluZ0NsYXNzQiYgYikNCnsNCiAgICB1bnNp
Z25lZCBsZW5ndGggPSBhLmxlbmd0aCgpOw0KICAgIGlmIChsZW5ndGggIT0gYi5sZW5ndGgoKSkN
CiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgaWYgKGEuaXM4Qml0KCkpIHsNCiAgICAgICAg
aWYgKGIuaXM4Qml0KCkpDQogICAgICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShhLmNoYXJhY3RlcnM4KCksIGIuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsNCg0KICAgICAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLmNoYXJhY3RlcnM4KCksIGIuY2hhcmFjdGVy
czE2KCksIGxlbmd0aCk7DQogICAgfQ0KDQogICAgaWYgKGIuaXM4Qml0KCkpDQogICAgICAgIHJl
dHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuY2hhcmFjdGVyczE2KCksIGIuY2hhcmFjdGVy
czgoKSwgbGVuZ3RoKTsNCg0KICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuY2hh
cmFjdGVyczE2KCksIGIuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ0NsYXNzQT4gYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNv
bnN0IFN0cmluZ0NsYXNzQSYgYSwgY29uc3QgY2hhciogYikNCnsNCiAgICB1bnNpZ25lZCBsZW5n
dGggPSBhLmxlbmd0aCgpOw0KICAgIGlmIChsZW5ndGggIT0gc3RybGVuKGIpKQ0KICAgICAgICBy
ZXR1cm4gZmFsc2U7DQoNCiAgICBpZiAoYS5pczhCaXQoKSkNCiAgICAgICAgcmV0dXJuIGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UoYS5jaGFyYWN0ZXJzOCgpLCBiLCBsZW5ndGgpOw0KDQogICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5jaGFyYWN0ZXJzMTYoKSwgYiwgbGVuZ3RoKTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJpbmdDbGFz
c0I+DQpib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0
IFN0cmluZ0NsYXNzQiYgcHJlZml4KQ0Kew0KICAgIHVuc2lnbmVkIHByZWZpeExlbmd0aCA9IHBy
ZWZpeC5sZW5ndGgoKTsNCiAgICBpZiAocHJlZml4TGVuZ3RoID4gcmVmZXJlbmNlLmxlbmd0aCgp
KQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7
DQogICAgICAgIGlmIChwcmVmaXguaXM4Qml0KCkpDQogICAgICAgICAgICByZXR1cm4gZXF1YWwo
cmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5n
dGgpOw0KICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZp
eC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsNCiAgICB9DQogICAgaWYgKHByZWZpeC5p
czhCaXQoKSkNCiAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwg
cHJlZml4LmNoYXJhY3RlcnM4KCksIHByZWZpeExlbmd0aCk7DQogICAgcmV0dXJuIGVxdWFsKHJl
ZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5n
dGgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmlu
Z0NsYXNzQj4NCmJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0Ns
YXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHByZWZpeCkNCnsNCiAgICB1bnNp
Z25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7DQogICAgaWYgKHByZWZpeExlbmd0
aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgaWYg
KHJlZmVyZW5jZS5pczhCaXQoKSkgew0KICAgICAgICBpZiAocHJlZml4LmlzOEJpdCgpKQ0KICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3Rl
cnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOw0KICAgICAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSwgcHJlZml4
LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOw0KICAgIH0NCiAgICBpZiAocHJlZml4Lmlz
OEJpdCgpKQ0KICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2Uu
Y2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOw0KICAg
IHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwg
cHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4NCmJvb2wgZW5kc1dpdGgo
Y29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZ0NsYXNzQiYgc3VmZml4
KQ0Kew0KICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZpeC5sZW5ndGgoKTsNCiAgICB1
bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVuZ3RoKCk7DQogICAgaWYgKHN1
ZmZpeExlbmd0aCA+IHJlZmVyZW5jZUxlbmd0aCkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQog
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSByZWZlcmVuY2VMZW5ndGggLSBzdWZmaXhMZW5ndGg7
DQoNCiAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7DQogICAgICAgIGlmIChzdWZmaXguaXM4
Qml0KCkpDQogICAgICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCkg
KyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7DQogICAg
ICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBz
dWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7DQogICAgfQ0KICAgIGlmIChzdWZm
aXguaXM4Qml0KCkpDQogICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2
KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7DQog
ICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBz
dWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NCPg0KYm9vbCBlbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJp
bmdDbGFzc0ImIHN1ZmZpeCkNCnsNCiAgICB1bnNpZ25lZCBzdWZmaXhMZW5ndGggPSBzdWZmaXgu
bGVuZ3RoKCk7DQogICAgdW5zaWduZWQgcmVmZXJlbmNlTGVuZ3RoID0gcmVmZXJlbmNlLmxlbmd0
aCgpOw0KICAgIGlmIChzdWZmaXhMZW5ndGggPiByZWZlcmVuY2VMZW5ndGgpDQogICAgICAgIHJl
dHVybiBmYWxzZTsNCg0KICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gcmVmZXJlbmNlTGVuZ3Ro
IC0gc3VmZml4TGVuZ3RoOw0KDQogICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgew0KICAgICAg
ICBpZiAoc3VmZml4LmlzOEJpdCgpKQ0KICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNo
YXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7DQogICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5j
aGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsNCiAgICB9DQogICAgaWYgKHN1ZmZpeC5pczhC
aXQoKSkNCiAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNo
YXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzOCgpLCBzdWZmaXhM
ZW5ndGgpOw0KICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFy
YWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExl
bmd0aCk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hDaGFyYWN0ZXJUeXBlLCB0eXBl
bmFtZSBNYXRjaENoYXJhY3RlclR5cGU+DQpzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNvdXJjZSwgY29uc3QgTWF0Y2hDaGFyYWN0ZXJUeXBl
KiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBzZWFyY2hM
ZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQ0Kew0KICAgICgodm9pZCkwKTsNCg0KICAgIGNv
bnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHN0YXJ0U2VhcmNoZWRDaGFyYWN0ZXJzID0gc291cmNl
ICsgc3RhcnRPZmZzZXQ7DQoNCiAgICANCiAgICB1bnNpZ25lZCBkZWx0YSA9IHNlYXJjaExlbmd0
aCAtIG1hdGNoTGVuZ3RoOw0KDQogICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSBkZWx0YTsg
KytpKSB7DQogICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHN0YXJ0U2VhcmNoZWRD
aGFyYWN0ZXJzICsgaSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0aCkpDQogICAgICAgICAg
ICByZXR1cm4gc3RhcnRPZmZzZXQgKyBpOw0KICAgIH0NCiAgICByZXR1cm4gbm90Rm91bmQ7DQp9
DQoNCmlubGluZSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aChjb25z
dCBjaGFyKiBzb3VyY2UsIGNvbnN0IGNoYXIqIG1hdGNoQ2hhcmFjdGVycykNCnsNCiAgICB1bnNp
Z25lZCBzZWFyY2hMZW5ndGggPSBzdHJsZW4oc291cmNlKTsNCiAgICB1bnNpZ25lZCBtYXRjaExl
bmd0aCA9IHN0cmxlbihtYXRjaENoYXJhY3RlcnMpOw0KDQogICAgcmV0dXJuIG1hdGNoTGVuZ3Ro
IDwgc2VhcmNoTGVuZ3RoID8gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZSwgbWF0Y2hDaGFy
YWN0ZXJzLCAwLCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKSA6IG5vdEZvdW5kOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4NCnNp
emVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nQ2xhc3NBJiBzb3VyY2UsIGNv
bnN0IFN0cmluZ0NsYXNzQiYgc3RyaW5nVG9GaW5kLCB1bnNpZ25lZCBzdGFydE9mZnNldCkNCnsN
CiAgICB1bnNpZ25lZCBzb3VyY2VTdHJpbmdMZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7DQogICAg
dW5zaWduZWQgbWF0Y2hMZW5ndGggPSBzdHJpbmdUb0ZpbmQubGVuZ3RoKCk7DQogICAgaWYgKCFt
YXRjaExlbmd0aCkNCiAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXJ0T2Zmc2V0LCBzb3VyY2VT
dHJpbmdMZW5ndGgpOw0KDQogICAgDQogICAgaWYgKHN0YXJ0T2Zmc2V0ID4gc291cmNlU3RyaW5n
TGVuZ3RoKQ0KICAgICAgICByZXR1cm4gbm90Rm91bmQ7DQogICAgdW5zaWduZWQgc2VhcmNoTGVu
Z3RoID0gc291cmNlU3RyaW5nTGVuZ3RoIC0gc3RhcnRPZmZzZXQ7DQogICAgaWYgKG1hdGNoTGVu
Z3RoID4gc2VhcmNoTGVuZ3RoKQ0KICAgICAgICByZXR1cm4gbm90Rm91bmQ7DQoNCiAgICBpZiAo
c291cmNlLmlzOEJpdCgpKSB7DQogICAgICAgIGlmIChzdHJpbmdUb0ZpbmQuaXM4Qml0KCkpDQog
ICAgICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHNlYXJjaExlbmd0
aCwgbWF0Y2hMZW5ndGgpOw0KICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNv
dXJjZS5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zm
c2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsNCiAgICB9DQoNCiAgICBpZiAoc3RyaW5n
VG9GaW5kLmlzOEJpdCgpKQ0KICAgICAgICByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHNv
dXJjZS5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVG9GaW5kLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zm
c2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsNCg0KICAgIHJldHVybiBmaW5kSWdub3Jp
bmdBU0NJSUNhc2Uoc291cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVy
czE2KCksIHN0YXJ0T2Zmc2V0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsNCn0NCg0KdGVt
cGxhdGUgPHR5cGVuYW1lIFNlYXJjaENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoQ2hhcmFj
dGVyVHlwZT4NCl9fZm9yY2VpbmxpbmUgc3RhdGljIHNpemVfdCBmaW5kSW5uZXIoY29uc3QgU2Vh
cmNoQ2hhcmFjdGVyVHlwZSogc2VhcmNoQ2hhcmFjdGVycywgY29uc3QgTWF0Y2hDaGFyYWN0ZXJU
eXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBzZWFyY2hMZW5n
dGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQ0Kew0KICAgIA0KICAgIA0KDQogICAgDQogICAgdW5z
aWduZWQgZGVsdGEgPSBzZWFyY2hMZW5ndGggLSBtYXRjaExlbmd0aDsNCg0KICAgIHVuc2lnbmVk
IHNlYXJjaEhhc2ggPSAwOw0KICAgIHVuc2lnbmVkIG1hdGNoSGFzaCA9IDA7DQoNCiAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hMZW5ndGg7ICsraSkgew0KICAgICAgICBzZWFyY2hI
YXNoICs9IHNlYXJjaENoYXJhY3RlcnNbaV07DQogICAgICAgIG1hdGNoSGFzaCArPSBtYXRjaENo
YXJhY3RlcnNbaV07DQogICAgfQ0KDQogICAgdW5zaWduZWQgaSA9IDA7DQogICAgDQogICAgd2hp
bGUgKHNlYXJjaEhhc2ggIT0gbWF0Y2hIYXNoIHx8ICFlcXVhbChzZWFyY2hDaGFyYWN0ZXJzICsg
aSwgbWF0Y2hDaGFyYWN0ZXJzLCBtYXRjaExlbmd0aCkpIHsNCiAgICAgICAgaWYgKGkgPT0gZGVs
dGEpDQogICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7DQogICAgICAgIHNlYXJjaEhhc2ggKz0g
c2VhcmNoQ2hhcmFjdGVyc1tpICsgbWF0Y2hMZW5ndGhdOw0KICAgICAgICBzZWFyY2hIYXNoIC09
IHNlYXJjaENoYXJhY3RlcnNbaV07DQogICAgICAgICsraTsNCiAgICB9DQogICAgcmV0dXJuIGlu
ZGV4ICsgaTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4NCmlubGluZSBz
aXplX3QgZmluZChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkNCnsN
CiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsNCiAgICAgICAgaWYgKGNoYXJhY3RlcnNbaW5k
ZXhdID09IG1hdGNoQ2hhcmFjdGVyKQ0KICAgICAgICAgICAgcmV0dXJuIGluZGV4Ow0KICAgICAg
ICArK2luZGV4Ow0KICAgIH0NCiAgICByZXR1cm4gbm90Rm91bmQ7DQp9DQoNCl9fZm9yY2Vpbmxp
bmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
TENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkNCnsNCiAgICByZXR1cm4g
ZmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRpY19jYXN0PFVDaGFyPihtYXRjaENoYXJhY3Rl
ciksIGluZGV4KTsNCn0NCg0KaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRl
eCA9IDApDQp7DQogICAgaWYgKCFpc0xhdGluMShtYXRjaENoYXJhY3RlcikpDQogICAgICAgIHJl
dHVybiBub3RGb3VuZDsNCiAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRp
Y19jYXN0PExDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyaW5nQ2xhc3M+DQpzaXplX3QgZmluZENvbW1vbihjb25zdCBTdHJpbmdDbGFzcyYg
aGF5c3RhY2ssIGNvbnN0IFN0cmluZ0NsYXNzJiBuZWVkbGUsIHVuc2lnbmVkIHN0YXJ0KQ0Kew0K
ICAgIHVuc2lnbmVkIG5lZWRsZUxlbmd0aCA9IG5lZWRsZS5sZW5ndGgoKTsNCg0KICAgIGlmIChu
ZWVkbGVMZW5ndGggPT0gMSkgew0KICAgICAgICBpZiAoaGF5c3RhY2suaXM4Qml0KCkpDQogICAg
ICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGhheXN0YWNrLmNoYXJhY3RlcnM4KCksIGhheXN0YWNr
Lmxlbmd0aCgpLCBuZWVkbGVbMF0sIHN0YXJ0KTsNCiAgICAgICAgcmV0dXJuIFdURjo6ZmluZCho
YXlzdGFjay5jaGFyYWN0ZXJzMTYoKSwgaGF5c3RhY2subGVuZ3RoKCksIG5lZWRsZVswXSwgc3Rh
cnQpOw0KICAgIH0NCg0KICAgIGlmIChzdGFydCA+IGhheXN0YWNrLmxlbmd0aCgpKQ0KICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7DQoNCiAgICBpZiAoIW5lZWRsZUxlbmd0aCkNCiAgICAgICAgcmV0
dXJuIHN0YXJ0Ow0KDQogICAgdW5zaWduZWQgc2VhcmNoTGVuZ3RoID0gaGF5c3RhY2subGVuZ3Ro
KCkgLSBzdGFydDsNCiAgICBpZiAobmVlZGxlTGVuZ3RoID4gc2VhcmNoTGVuZ3RoKQ0KICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7DQoNCiAgICBpZiAoaGF5c3RhY2suaXM4Qml0KCkpIHsNCiAgICAg
ICAgaWYgKG5lZWRsZS5pczhCaXQoKSkNCiAgICAgICAgICAgIHJldHVybiBmaW5kSW5uZXIoaGF5
c3RhY2suY2hhcmFjdGVyczgoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczgoKSwgc3RhcnQs
IHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsNCiAgICAgICAgcmV0dXJuIGZpbmRJbm5lciho
YXlzdGFjay5jaGFyYWN0ZXJzOCgpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnQsIHNlYXJjaExlbmd0aCwgbmVlZGxlTGVuZ3RoKTsNCiAgICB9DQoNCiAgICBpZiAobmVlZGxl
LmlzOEJpdCgpKQ0KICAgICAgICByZXR1cm4gZmluZElubmVyKGhheXN0YWNrLmNoYXJhY3RlcnMx
NigpICsgc3RhcnQsIG5lZWRsZS5jaGFyYWN0ZXJzOCgpLCBzdGFydCwgc2VhcmNoTGVuZ3RoLCBu
ZWVkbGVMZW5ndGgpOw0KDQogICAgcmV0dXJuIGZpbmRJbm5lcihoYXlzdGFjay5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0LCBuZWVkbGUuY2hhcmFjdGVyczE2KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgs
IG5lZWRsZUxlbmd0aCk7DQp9DQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBsb3dlcmNhc2VMZXR0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpDQp7DQogICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
DQogICAgICAgIGlmICghaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzW2ldLCBs
b3dlcmNhc2VMZXR0ZXJzW2ldKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQog
ICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHVu
c2lnbmVkIGxvd2VyY2FzZUxldHRlcnNMZW5ndGg+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGNoYXJhY3RlcnNMZW5ndGgsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsb3dlcmNh
c2VMZXR0ZXJzTGVuZ3RoXSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgdW5zaWduZWQgbG93ZXJj
YXNlTGV0dGVyc1N0cmluZ0xlbmd0aCA9IGxvd2VyY2FzZUxldHRlcnNMZW5ndGggLSAxOw0KICAg
IHJldHVybiBjaGFyYWN0ZXJzTGVuZ3RoID09IGxvd2VyY2FzZUxldHRlcnNTdHJpbmdMZW5ndGgg
JiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY2hhcmFjdGVycywgbG93ZXJjYXNlTGV0
dGVycywgbG93ZXJjYXNlTGV0dGVyc1N0cmluZ0xlbmd0aCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ0NsYXNzPiBib29sIGlubGluZSBoYXNQcmVmaXhXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBzdHJpbmcsIGNvbnN0IGNoYXIqIGxv
d2VyY2FzZUxldHRlcnMsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCg0KDQoNCg0KI2xpbmUgNjIwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90
ZXh0L1N0cmluZ0NvbW1vbi5oIg0KICAgICgodm9pZCkwKTsNCg0KICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpDQogICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmcuY2hhcmFjdGVyczgoKSwgbG93ZXJjYXNlTGV0dGVycywgbGVuZ3RoKTsNCiAgICByZXR1cm4g
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsb3dl
cmNhc2VMZXR0ZXJzLCBsZW5ndGgpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0Ns
YXNzPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uV2l0aG91dExlbmd0
aChjb25zdCBTdHJpbmdDbGFzcyYgc3RyaW5nLCBjb25zdCBjaGFyKiBsb3dlcmNhc2VMZXR0ZXJz
KQ0Kew0KICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsNCiAgICBpZiAobGVu
Z3RoICE9IHN0cmxlbihsb3dlcmNhc2VMZXR0ZXJzKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgIHJldHVybiBoYXNQcmVmaXhXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKHN0
cmluZywgbG93ZXJjYXNlTGV0dGVycywgbGVuZ3RoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nQ2xhc3M+IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1v
bldpdGhvdXRMZW5ndGgoY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmluZywgY29uc3QgY2hhciogbG93
ZXJjYXNlTGV0dGVycykNCnsNCiAgICBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKGxvd2Vy
Y2FzZUxldHRlcnMpOw0KICAgIGlmICghcHJlZml4TGVuZ3RoKQ0KICAgICAgICByZXR1cm4gdHJ1
ZTsNCiAgICBpZiAoc3RyaW5nLmxlbmd0aCgpIDwgcHJlZml4TGVuZ3RoKQ0KICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgcmV0dXJuIGhhc1ByZWZpeFdpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2VDb21tb24oc3RyaW5nLCBsb3dlcmNhc2VMZXR0ZXJzLCBwcmVmaXhMZW5ndGgpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcywgdW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9v
bCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihjb25zdCBTdHJpbmdDbGFzcyYg
c3RyaW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSkNCnsNCiAgICAN
CiAgICAoKHZvaWQpMCk7DQogICAgY29uc3QgY2hhciogcG9pbnRlciA9IGxvd2VyY2FzZUxldHRl
cnM7DQogICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uV2l0aG91
dExlbmd0aChzdHJpbmcsIHBvaW50ZXIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcywgdW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBzdHJpbmcsIGNvbnN0IGNoYXIg
KCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKQ0Kew0KICAgIGNvbnN0IGNoYXIqIHBvaW50ZXIg
PSBsb3dlcmNhc2VMZXR0ZXJzOw0KICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlQ29tbW9uV2l0aG91dExlbmd0aChzdHJpbmcsIHBvaW50ZXIpOw0KfQ0KDQppbmxp
bmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IGNoYXIqIGEsIGNvbnN0IGNoYXIq
IGIpDQp7DQogICAgYXV0byBsZW5ndGggPSBzdHJsZW4oYSk7DQogICAgcmV0dXJuIGxlbmd0aCA9
PSBzdHJsZW4oYikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLCBiLCBsZW5ndGgpOw0KfQ0K
DQp0ZW1wbGF0ZTx1bnNpZ25lZCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoPiBpbmxpbmUgYm9vbCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBjaGFyKiBzdHJpbmcsIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoXSkNCnsNCiAgICBh
dXRvIGxlbmd0aCA9IHN0cmxlbihsb3dlcmNhc2VMZXR0ZXJzKTsNCiAgICByZXR1cm4gc3RybGVu
KHN0cmluZykgPT0gbGVuZ3RoICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmlu
ZywgbG93ZXJjYXNlTGV0dGVycywgbGVuZ3RoKTsNCn0NCg0KfQ0KDQp1c2luZyBXVEY6OmVxdWFs
SWdub3JpbmdBU0NJSUNhc2U7DQp1c2luZyBXVEY6OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlOw0KdXNpbmcgV1RGOjppc0xhdGluMTsNCiNsaW5lIDM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0ltcGwuaCIN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL3RleHQvU3RyaW5nSGFzaGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTo0MzA3KQ0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nSGFzaGVyLmgiDQoNCnN0YXRp
YyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWUgPSAweDlF
Mzc3OUI5VTsNCg0KY2xhc3MgU3RyaW5nSGFzaGVyIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50
OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvID0gaW50Ow0KcHVibGljOg0KICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQg
ZmxhZ0NvdW50ID0gODsgDQogICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBtYXNr
SGFzaCA9ICgxVSA8PCAoc2l6ZW9mKHVuc2lnbmVkKSAqIDggLSBmbGFnQ291bnQpKSAtIDE7DQoN
CiAgICBzdHJ1Y3QgRGVmYXVsdENvbnZlcnRlciB7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJUeXBlPg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIFVDaGFyIGNvbnZlcnQoQ2hhclR5
cGUgY2hhcmFjdGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
c3RkOjptYWtlX3Vuc2lnbmVkX3Q8Q2hhclR5cGU+PigoY2hhcmFjdGVyKSk7DQogICAgICAgIH0N
CiAgICB9Ow0KDQogICAgU3RyaW5nSGFzaGVyKCkgPSBkZWZhdWx0Ow0KDQogICAgDQogICAgDQog
ICAgDQogICAgdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKFVDaGFyIGEsIFVDaGFy
IGIpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1faGFzaCA9IGNhbGN1bGF0
ZVdpdGhUd29DaGFyYWN0ZXJzKG1faGFzaCwgYSwgYik7DQogICAgfQ0KDQogICAgdm9pZCBhZGRD
aGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQ0KICAgIHsNCiAgICAgICAgaWYgKG1faGFzUGVuZGlu
Z0NoYXJhY3Rlcikgew0KICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7
DQogICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJh
Y3RlciwgY2hhcmFjdGVyKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAg
ICAgIG1fcGVuZGluZ0NoYXJhY3RlciA9IGNoYXJhY3RlcjsNCiAgICAgICAgbV9oYXNQZW5kaW5n
Q2hhcmFjdGVyID0gdHJ1ZTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZENoYXJhY3RlcnMoVUNoYXIg
YSwgVUNoYXIgYikNCiAgICB7DQogICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsN
Cg0KDQojbGluZSA4OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdIYXNoZXIuaCINCiAgICAgICAgICAgIGFkZENoYXJh
Y3RlcnNBc3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVyLCBhKTsNCiAgICAgICAgICAg
IG1fcGVuZGluZ0NoYXJhY3RlciA9IGI7DQoNCg0KI2xpbmUgOTMgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nSGFzaGVy
LmgiDQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBhZGRDaGFyYWN0
ZXJzQXNzdW1pbmdBbGlnbmVkKGEsIGIpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIENvbnZlcnRlcj4gdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVk
KGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCg0KICAgICAgICBib29sIHJlbWFpbmRlciA9IGxlbmd0aCAmIDE7DQogICAgICAgIGxlbmd0
aCA+Pj0gMTsNCg0KICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHsNCiAgICAgICAgICAgIGFkZENo
YXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoQ29udmVydGVyOjpjb252ZXJ0KGRhdGFbMF0pLCBDb252
ZXJ0ZXI6OmNvbnZlcnQoZGF0YVsxXSkpOw0KICAgICAgICAgICAgZGF0YSArPSAyOw0KICAgICAg
ICB9DQoNCiAgICAgICAgaWYgKHJlbWFpbmRlcikNCiAgICAgICAgICAgIGFkZENoYXJhY3RlcihD
b252ZXJ0ZXI6OmNvbnZlcnQoKmRhdGEpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoY29uc3QgVCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQ0KICAgIHsNCiAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25l
ZDxULCBEZWZhdWx0Q29udmVydGVyPihkYXRhLCBsZW5ndGgpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZlcnRlcj4gdm9pZCBhZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkKGNvbnN0IFQqIGRhdGEpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQoN
CiAgICAgICAgd2hpbGUgKFQgYSA9ICpkYXRhKyspIHsNCiAgICAgICAgICAgIFQgYiA9ICpkYXRh
Kys7DQogICAgICAgICAgICBpZiAoIWIpIHsNCiAgICAgICAgICAgICAgICBhZGRDaGFyYWN0ZXIo
Q29udmVydGVyOjpjb252ZXJ0KGEpKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoQ29udmVydGVy
Ojpjb252ZXJ0KGEpLCBDb252ZXJ0ZXI6OmNvbnZlcnQoYikpOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGln
bmVkKGNvbnN0IFQqIGRhdGEpDQogICAgew0KICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdB
bGlnbmVkPFQsIERlZmF1bHRDb252ZXJ0ZXI+KGRhdGEpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZlcnRlcj4gdm9pZCBhZGRDaGFyYWN0ZXJzKGNvbnN0
IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7DQogICAgICAgIGlmICghbGVuZ3RoKQ0K
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBpZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyKSB7
DQogICAgICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSBmYWxzZTsNCiAgICAgICAgICAg
IGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVyLCBDb252ZXJ0
ZXI6OmNvbnZlcnQoKmRhdGErKykpOw0KICAgICAgICAgICAgLS1sZW5ndGg7DQogICAgICAgIH0N
CiAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxULCBDb252ZXJ0ZXI+KGRhdGEs
IGxlbmd0aCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRDaGFy
YWN0ZXJzKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7DQogICAgICAgIGFk
ZENoYXJhY3RlcnM8VCwgRGVmYXVsdENvbnZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsNCiAgICB9DQoN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb252ZXJ0ZXI+IHZvaWQgYWRkQ2hh
cmFjdGVycyhjb25zdCBUKiBkYXRhKQ0KICAgIHsNCiAgICAgICAgaWYgKG1faGFzUGVuZGluZ0No
YXJhY3RlciAmJiAqZGF0YSkgew0KICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0g
ZmFsc2U7DQogICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGlu
Z0NoYXJhY3RlciwgQ29udmVydGVyOjpjb252ZXJ0KCpkYXRhKyspKTsNCiAgICAgICAgfQ0KICAg
ICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkPFQsIENvbnZlcnRlcj4oZGF0YSk7DQog
ICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRDaGFyYWN0ZXJzKGNvbnN0
IFQqIGRhdGEpDQogICAgew0KICAgICAgICBhZGRDaGFyYWN0ZXJzPFQsIERlZmF1bHRDb252ZXJ0
ZXI+KGRhdGEpOw0KICAgIH0NCg0KICAgIHVuc2lnbmVkIGhhc2hXaXRoVG9wOEJpdHNNYXNrZWQo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGZpbmFsaXplQW5kTWFza1RvcDhCaXRzKHBy
b2Nlc3NQZW5kaW5nQ2hhcmFjdGVyKCkpOw0KICAgIH0NCg0KICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGZpbmFsaXplKHByb2Nlc3NQZW5kaW5nQ2hhcmFj
dGVyKCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZl
cnRlcj4gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpDQogICAgew0KICAgICAgICByZXR1cm4g
ZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoY29tcHV0ZUhhc2hJbXBsPFQsIENvbnZlcnRlcj4oZGF0
YSwgbGVuZ3RoKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Q29udmVydGVyPiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1Rv
cDhCaXRzKGNvbnN0IFQqIGRhdGEpDQogICAgew0KICAgICAgICByZXR1cm4gZmluYWxpemVBbmRN
YXNrVG9wOEJpdHMoY29tcHV0ZUhhc2hJbXBsPFQsIENvbnZlcnRlcj4oZGF0YSkpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFQsIERlZmF1
bHRDb252ZXJ0ZXI+KGRhdGEsIGxlbmd0aCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhjb25zdCBUKiBkYXRhKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzPFQsIERlZmF1bHRDb252ZXJ0ZXI+KGRhdGEpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZlcnRlcj4gc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBjb21wdXRlSGFzaChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpDQogICAgew0K
ICAgICAgICByZXR1cm4gZmluYWxpemUoY29tcHV0ZUhhc2hJbXBsPFQsIENvbnZlcnRlcj4oZGF0
YSwgbGVuZ3RoKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Q29udmVydGVyPiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IFQq
IGRhdGEpDQogICAgew0KICAgICAgICByZXR1cm4gZmluYWxpemUoY29tcHV0ZUhhc2hJbXBsPFQs
IENvbnZlcnRlcj4oZGF0YSkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoPFQsIERlZmF1bHRD
b252ZXJ0ZXI+KGRhdGEsIGxlbmd0aCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBUKiBkYXRhKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoPFQsIERlZmF1bHRDb252ZXJ0ZXI+KGRh
dGEpOw0KICAgIH0NCg0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdW5zaWduZWQgY2hhcmFj
dGVyc0NvdW50Pg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUxpdGVyYWxI
YXNoKGNvbnN0IFQgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGNvbXB1dGVIYXNoPFQsIERlZmF1bHRDb252ZXJ0ZXI+KGNoYXJhY3RlcnMsIGNo
YXJhY3RlcnNDb3VudCAtIDEpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHVu
c2lnbmVkIGNoYXJhY3RlcnNDb3VudD4NCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNv
bXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjb25zdCBUICgmY2hhcmFjdGVycylbY2hh
cmFjdGVyc0NvdW50XSkNCiAgICB7DQogICAgICAgIHJldHVybiBjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0czxULCBEZWZhdWx0Q29udmVydGVyPihjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQg
LSAxKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaE1lbW9yeShjb25zdCB2b2lk
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpDQogICAgew0KICAgICAgICBzaXplX3QgbGVuZ3RoSW5V
Q2hhciA9IGxlbmd0aCAvIHNpemVvZihVQ2hhcik7DQogICAgICAgIFN0cmluZ0hhc2hlciBoYXNo
ZXI7DQogICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHN0YXRpY19j
YXN0PGNvbnN0IFVDaGFyKj4oZGF0YSksIGxlbmd0aEluVUNoYXIpOw0KDQogICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoICUgc2l6ZW9mKFVDaGFyKTsgKytpKQ0KICAgICAgICAg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSlbbGVu
Z3RoSW5VQ2hhciAqIHNpemVvZihVQ2hhcikgKyBpXSk7DQoNCiAgICAgICAgcmV0dXJuIGhhc2hl
ci5oYXNoKCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIHVu
c2lnbmVkIGhhc2hNZW1vcnkoY29uc3Qgdm9pZCogZGF0YSkNCiAgICB7DQogICAgICAgIHJldHVy
biBoYXNoTWVtb3J5KGRhdGEsIGxlbmd0aCk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIF9fZm9y
Y2VpbmxpbmUgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhdmFsYW5jaGVCaXRzKHVuc2lnbmVk
IGhhc2gpDQogICAgew0KICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBoYXNoOw0KDQogICAgICAg
IHJlc3VsdCBePSByZXN1bHQgPDwgMzsNCiAgICAgICAgcmVzdWx0ICs9IHJlc3VsdCA+PiA1Ow0K
ICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDI7DQogICAgICAgIHJlc3VsdCArPSByZXN1bHQg
Pj4gMTU7DQogICAgICAgIHJlc3VsdCBePSByZXN1bHQgPDwgMTA7DQoNCiAgICAgICAgcmV0dXJu
IHJlc3VsdDsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZpbmFsaXpl
KHVuc2lnbmVkIGhhc2gpDQogICAgew0KICAgICAgICByZXR1cm4gYXZvaWRaZXJvKGF2YWxhbmNo
ZUJpdHMoaGFzaCkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmlu
YWxpemVBbmRNYXNrVG9wOEJpdHModW5zaWduZWQgaGFzaCkNCiAgICB7DQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgcmV0dXJuIGF2b2lkWmVybyhhdmFsYW5jaGVCaXRzKGhhc2gpICYgU3Ry
aW5nSGFzaGVyOjptYXNrSGFzaCk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgX19mb3JjZWlubGluZSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGF2b2lkWmVybyh1bnNp
Z25lZCBoYXNoKQ0KICAgIHsNCiAgICAgICAgaWYgKGhhc2gpDQogICAgICAgICAgICByZXR1cm4g
aGFzaDsNCiAgICAgICAgcmV0dXJuIDB4ODAwMDAwMDAgPj4gZmxhZ0NvdW50Ow0KICAgIH0NCg0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY2FsY3VsYXRlV2l0aFJlbWFpbmluZ0xhc3RD
aGFyYWN0ZXIodW5zaWduZWQgaGFzaCwgdW5zaWduZWQgY2hhcmFjdGVyKQ0KICAgIHsNCiAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gaGFzaDsNCg0KICAgICAgICByZXN1bHQgKz0gY2hhcmFjdGVy
Ow0KICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDExOw0KICAgICAgICByZXN1bHQgKz0gcmVz
dWx0ID4+IDE3Ow0KDQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgX19mb3Jj
ZWlubGluZSBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0
ZXJzKHVuc2lnbmVkIGhhc2gsIHVuc2lnbmVkIGZpcnN0Q2hhcmFjdGVyLCB1bnNpZ25lZCBzZWNv
bmRDaGFyYWN0ZXIpDQogICAgew0KICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBoYXNoOw0KDQog
ICAgICAgIHJlc3VsdCArPSBmaXJzdENoYXJhY3RlcjsNCiAgICAgICAgcmVzdWx0ID0gKHJlc3Vs
dCA8PCAxNikgXiAoKHNlY29uZENoYXJhY3RlciA8PCAxMSkgXiByZXN1bHQpOw0KICAgICAgICBy
ZXN1bHQgKz0gcmVzdWx0ID4+IDExOw0KDQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0K
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyPg0KICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUhhc2hJbXBsKGNvbnN0IFQqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0cmlu
Z0hhc2hpbmdTdGFydFZhbHVlOw0KICAgICAgICBib29sIHJlbWFpbmRlciA9IGxlbmd0aCAmIDE7
DQogICAgICAgIGxlbmd0aCA+Pj0gMTsNCg0KICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHsNCiAg
ICAgICAgICAgIHJlc3VsdCA9IGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHJlc3VsdCwgQ29u
dmVydGVyOjpjb252ZXJ0KGNoYXJhY3RlcnNbMF0pLCBDb252ZXJ0ZXI6OmNvbnZlcnQoY2hhcmFj
dGVyc1sxXSkpOw0KICAgICAgICAgICAgY2hhcmFjdGVycyArPSAyOw0KICAgICAgICB9DQoNCiAg
ICAgICAgaWYgKHJlbWFpbmRlcikNCiAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVXaXRoUmVt
YWluaW5nTGFzdENoYXJhY3RlcihyZXN1bHQsIENvbnZlcnRlcjo6Y29udmVydChjaGFyYWN0ZXJz
WzBdKSk7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyPg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgY29tcHV0ZUhhc2hJbXBsKGNvbnN0IFQqIGNoYXJhY3RlcnMpDQogICAgew0KICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZTsNCiAgICAgICAgd2hpbGUg
KFQgYSA9ICpjaGFyYWN0ZXJzKyspIHsNCiAgICAgICAgICAgIFQgYiA9ICpjaGFyYWN0ZXJzKys7
DQogICAgICAgICAgICBpZiAoIWIpDQogICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVdp
dGhSZW1haW5pbmdMYXN0Q2hhcmFjdGVyKHJlc3VsdCwgQ29udmVydGVyOjpjb252ZXJ0KGEpKTsN
CiAgICAgICAgICAgIHJlc3VsdCA9IGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHJlc3VsdCwg
Q29udmVydGVyOjpjb252ZXJ0KGEpLCBDb252ZXJ0ZXI6OmNvbnZlcnQoYikpOw0KICAgICAgICB9
DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgdW5zaWduZWQgcHJvY2Vzc1Bl
bmRpbmdDaGFyYWN0ZXIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
bV9oYXNoOw0KDQogICAgICAgIA0KICAgICAgICBpZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyKQ0K
ICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVdpdGhSZW1haW5pbmdMYXN0Q2hhcmFjdGVyKHJl
c3VsdCwgbV9wZW5kaW5nQ2hhcmFjdGVyKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9
DQoNCiAgICB1bnNpZ25lZCBtX2hhc2ggeyBzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZSB9Ow0KICAg
IFVDaGFyIG1fcGVuZGluZ0NoYXJhY3RlciB7IDAgfTsNCiAgICBib29sIG1faGFzUGVuZGluZ0No
YXJhY3RlciB7IGZhbHNlIH07DQp9Ow0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSAz
NTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL3RleHQvU3RyaW5nSGFzaGVyLmgiDQoNCn0gDQoNCnVzaW5nIFdURjo6U3RyaW5nSGFzaGVy
Ow0KI2xpbmUgMzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nSW1wbC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9VVEY4Q29udmVy
c2lvbkVycm9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KZW51bSBjbGFzcyBVVEY4
Q29udmVyc2lvbkVycm9yIHsNCiAgICBOb25lLA0KICAgIE91dE9mTWVtb3J5LA0KICAgIElsbGVn
YWxTb3VyY2UsDQogICAgU291cmNlRXhoYXVzdGVkDQp9Ow0KDQp9IA0KDQp1c2luZyBXVEY6OlVU
RjhDb252ZXJzaW9uRXJyb3I7DQojbGluZSA0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdJbXBsLmgiDQoNCg0KdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaW5nUmVmOw0KI2xpbmUgNDQgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oIg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KbmFtZXNwYWNlIExM
SW50IHsgY2xhc3MgRGF0YTsgfQ0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KfQ0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgU3ltYm9sSW1wbDsNCmNsYXNzIFN5bWJvbFJlZ2lzdHJ5
Ow0KDQpzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3I7DQpzdHJ1Y3QgSGFzaEFuZFVURjhDaGFyYWN0
ZXJzVHJhbnNsYXRvcjsNCnN0cnVjdCBMQ2hhckJ1ZmZlclRyYW5zbGF0b3I7DQpzdHJ1Y3QgU3Vi
c3RyaW5nVHJhbnNsYXRvcjsNCnN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7DQoNCnRlbXBs
YXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7DQoNCnRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1
Y3QgQnVmZmVyRnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9yOw0KdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7DQoNCg0KDQoNCnRlbXBsYXRlPGJvb2wg
aXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBp
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqLCBzaXplX3QgbGVuZ3Ro
KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyMCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJp
bmdJbXBsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdJbXBs
LmgiDQoNCmNsYXNzIFN0cmluZ0ltcGxTaGFwZSB7DQogICAgU3RyaW5nSW1wbFNoYXBlKGNvbnN0
IFN0cmluZ0ltcGxTaGFwZSYpID0gZGVsZXRlOyBTdHJpbmdJbXBsU2hhcGUmIG9wZXJhdG9yPShj
b25zdCBTdHJpbmdJbXBsU2hhcGUmKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBNYXhMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKTsNCg0KcHJvdGVjdGVkOg0KICAgIFN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZD
b3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIGhhc2hBbmRGbGFn
cyk7DQogICAgU3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKTsNCg0KICAgIGVudW0gQ29u
c3RydWN0V2l0aENvbnN0RXhwclRhZyB7IENvbnN0cnVjdFdpdGhDb25zdEV4cHIgfTsNCiAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFw
ZSh1bnNpZ25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyICgmY2hhcmFj
dGVycylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdp
dGhDb25zdEV4cHJUYWcpOw0KICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBj
b25zdGV4cHIgU3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IGNoYXIxNl90ICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCB1bnNpZ25l
ZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcpOw0KDQogICAgdW5zaWdu
ZWQgbV9yZWZDb3VudDsNCiAgICB1bnNpZ25lZCBtX2xlbmd0aDsNCiAgICB1bmlvbiB7DQogICAg
ICAgIGNvbnN0IExDaGFyKiBtX2RhdGE4Ow0KICAgICAgICBjb25zdCBVQ2hhciogbV9kYXRhMTY7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgY29uc3QgY2hhciogbV9kYXRhOENoYXI7DQog
ICAgICAgIGNvbnN0IGNoYXIxNl90KiBtX2RhdGExNkNoYXI7DQogICAgfTsNCiAgICBtdXRhYmxl
IHVuc2lnbmVkIG1faGFzaEFuZEZsYWdzOw0KfTsNCg0KDQoNCg0KDQoNCg0KdXNpbmcgU3RyaW5n
SW1wbE1hbGxvYyA9IEZhc3RNYWxsb2M7DQpjbGFzcyBTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJp
bmdJbXBsU2hhcGUgew0KICAgIFN0cmluZ0ltcGwoY29uc3QgU3RyaW5nSW1wbCYpID0gZGVsZXRl
OyBTdHJpbmdJbXBsJiBvcGVyYXRvcj0oY29uc3QgU3RyaW5nSW1wbCYpID0gZGVsZXRlOzsNCiAg
ICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywg
dm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Vi
a2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNl
QVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KDQogICAgZnJpZW5kIGNsYXNzIEF0b21T
dHJpbmdJbXBsOw0KICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50OjpEYXRhOw0KICAgIGZyaWVu
ZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCiAgICBmcmllbmQgY2xhc3MgUHJp
dmF0ZVN5bWJvbEltcGw7DQogICAgZnJpZW5kIGNsYXNzIFJlZ2lzdGVyZWRTeW1ib2xJbXBsOw0K
ICAgIGZyaWVuZCBjbGFzcyBTeW1ib2xJbXBsOw0KICAgIGZyaWVuZCBjbGFzcyBFeHRlcm5hbFN0
cmluZ0ltcGw7DQoNCiAgICBmcmllbmQgc3RydWN0IFdURjo6Q1N0cmluZ1RyYW5zbGF0b3I7DQog
ICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7DQog
ICAgZnJpZW5kIHN0cnVjdCBXVEY6OkxDaGFyQnVmZmVyVHJhbnNsYXRvcjsNCiAgICBmcmllbmQg
c3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsNCiAgICBmcmllbmQgc3RydWN0IFdURjo6
VUNoYXJCdWZmZXJUcmFuc2xhdG9yOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBz
dHJ1Y3QgV1RGOjpCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5zbGF0b3I7DQogICAgdGVtcGxhdGU8
dHlwZW5hbWU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7
DQoNCnB1YmxpYzoNCiAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7IEJ1ZmZlckludGVybmFsLCBC
dWZmZXJPd25lZCwgQnVmZmVyU3Vic3RyaW5nLCBCdWZmZXJFeHRlcm5hbCB9Ow0KDQogICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBNYXhMZW5ndGggPSBTdHJpbmdJbXBsU2hhcGU6Ok1heExl
bmd0aDsNCg0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgc19mbGFn
Q291bnQgPSA4Ow0KDQpwcml2YXRlOg0KICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWdu
ZWQgc19mbGFnTWFzayA9ICgxdSA8PCBzX2ZsYWdDb3VudCkgLSAxOw0KICAgIHN0YXRpY19hc3Nl
cnQoc19mbGFnQ291bnQgPD0gU3RyaW5nSGFzaGVyOjpmbGFnQ291bnQsICJTdHJpbmdIYXNoZXIg
cmVzZXJ2ZXMgZW5vdWdoIGJpdHMgZm9yIFN0cmluZ0ltcGwgZmxhZ3MiKTsNCiAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHNfZmxhZ1N0cmluZ0tpbmRDb3VudCA9IDQ7DQoNCiAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IHVuc2lnbmVkIHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNB
dG9tID0gMXUgPDwgKHNfZmxhZ1N0cmluZ0tpbmRDb3VudCk7DQogICAgc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sID0gMXUgPDwgKHNf
ZmxhZ1N0cmluZ0tpbmRDb3VudCArIDEpOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5z
aWduZWQgc19oYXNoTWFza1N0cmluZ0tpbmQgPSBzX2hhc2hGbGFnU3RyaW5nS2luZElzQXRvbSB8
IHNfaGFzaEZsYWdTdHJpbmdLaW5kSXNTeW1ib2w7DQogICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCB1bnNpZ25lZCBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCA9IDF1IDw8IDM7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA9IDF1IDw8IDI7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBzX2hhc2hNYXNrQnVmZmVyT3du
ZXJzaGlwID0gKDF1IDw8IDApIHwgKDF1IDw8IDEpOw0KDQogICAgZW51bSBTdHJpbmdLaW5kIHsN
CiAgICAgICAgU3RyaW5nTm9ybWFsID0gMHUsIA0KICAgICAgICBTdHJpbmdBdG9tID0gc19oYXNo
RmxhZ1N0cmluZ0tpbmRJc0F0b20sIA0KICAgICAgICBTdHJpbmdTeW1ib2wgPSBzX2hhc2hGbGFn
U3RyaW5nS2luZElzU3ltYm9sLCANCiAgICB9Ow0KDQogICAgDQogICAgZW51bSBGb3JjZThCaXQg
eyBGb3JjZThCaXRDb25zdHJ1Y3RvciB9Ow0KICAgIFN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3Ro
LCBGb3JjZThCaXQpOw0KDQogICAgDQogICAgZXhwbGljaXQgU3RyaW5nSW1wbCh1bnNpZ25lZCBs
ZW5ndGgpOw0KDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFsbG9jPiBTdHJpbmdJbXBs
KE1hbGxvY1B0cjxMQ2hhciwgTWFsbG9jPiwgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBNYWxsb2M+IFN0cmluZ0ltcGwoTWFsbG9jUHRyPFVDaGFyLCBNYWxsb2M+LCB1
bnNpZ25lZCBsZW5ndGgpOw0KICAgIGVudW0gQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcgeyBD
b25zdHJ1Y3RXaXRob3V0Q29weWluZyB9Ow0KICAgIFN0cmluZ0ltcGwoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKTsNCiAgICBTdHJpbmdJ
bXBsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWlu
Z1RhZyk7DQoNCiAgICANCiAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCBSZWY8U3RyaW5nSW1wbD4mJik7DQogICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYpOw0KDQpwdWJsaWM6DQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHN0YXRpYyB2b2lkIGRlc3Ryb3koU3RyaW5nSW1wbCopOw0KDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICB0ZW1w
bGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
OEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0
SWZQb3NzaWJsZShjb25zdCBVQ2hhciopOw0KDQogICAgX19mb3JjZWlubGluZSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFj
dGVycyksIGxlbmd0aCk7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqKTsNCiAgICBfX2ZvcmNlaW5saW5lIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4gY3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpKTsgfQ0KDQogICAgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbChTdHJpbmdJbXBs
JiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOw0KDQogICAgdGVtcGxhdGU8dW5z
aWduZWQgY2hhcmFjdGVyQ291bnQ+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxp
dGVyYWwoY29uc3QgY2hhciAoJilbY2hhcmFjdGVyQ291bnRdKTsNCg0KICAgIA0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFs
KGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29w
eWluZyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgsIExDaGFyKiYpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciom
KTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmUHRyPFN0
cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0
ZXJUeXBlKiYpOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxv
Y2F0ZShSZWY8U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBM
Q2hhciomIGRhdGEpOw0KICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZShSZWY8
U3RyaW5nSW1wbD4mJiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRh
dGEpOw0KICAgIHN0YXRpYyBFeHBlY3RlZDxSZWY8U3RyaW5nSW1wbD4sIFVURjhDb252ZXJzaW9u
RXJyb3I+IHRyeVJlYWxsb2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYgb3JpZ2luYWxTdHJpbmcsIHVu
c2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsNCiAgICBzdGF0aWMgRXhwZWN0ZWQ8UmVmPFN0
cmluZ0ltcGw+LCBVVEY4Q29udmVyc2lvbkVycm9yPiB0cnlSZWFsbG9jYXRlKFJlZjxTdHJpbmdJ
bXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7DQoN
CiAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRf
Y2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oMHg0MDAwKS0+
bV9oYXNoQW5kRmxhZ3MpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGZsYWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQ0KICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmxhZ0lzQXRvbSgpIHsgcmV0dXJuIHNfaGFzaEZsYWdT
dHJpbmdLaW5kSXNBdG9tOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmbGFnSXNT
eW1ib2woKSB7IHJldHVybiBzX2hhc2hGbGFnU3RyaW5nS2luZElzU3ltYm9sOyB9DQogICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXNrU3RyaW5nS2luZCgpIHsgcmV0dXJuIHNfaGFzaE1h
c2tTdHJpbmdLaW5kOyB9DQogICAgc3RhdGljIHVuc2lnbmVkIGRhdGFPZmZzZXQoKSB7IHJldHVy
biAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJ
bXBsKj4oMHg0MDAwKS0+bV9kYXRhOCkpIC0gMHg0MDAwKTsgfQ0KDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPg0KICAgIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoVmVjdG9yPENoYXJhY3RlclR5cGUsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+JiYpOw0KDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5n
QnVmZmVyPFVDaGFyPiYmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiYpOw0KDQogICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90
IGxlbmd0aE1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZf
dD4oJihyZWludGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPigweDQwMDApLT5tX2xlbmd0aCkpIC0g
MHg0MDAwKTsgfQ0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2xlbmd0aDsg
fQ0KDQogICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNf
aGFzaEZsYWc4Qml0QnVmZmVyOyB9DQogICAgX19mb3JjZWlubGluZSBjb25zdCBMQ2hhciogY2hh
cmFjdGVyczgoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fZGF0YTg7IH0NCiAgICBfX2Zv
cmNlaW5saW5lIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdCB7ICgodm9pZCkwKTsg
cmV0dXJuIG1fZGF0YTE2OyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzKCkgY29uc3Q7DQoNCiAgICBzaXplX3Qg
Y29zdCgpIGNvbnN0Ow0KICAgIHNpemVfdCBjb3N0RHVyaW5nR0MoKTsNCg0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsNCg0KICAgIGJvb2wgaXNT
eW1ib2woKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdTdHJpbmdL
aW5kSXNTeW1ib2w7IH0NCiAgICBib29sIGlzQXRvbSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFu
ZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b207IH0NCiAgICB2b2lkIHNldElzQXRv
bShib29sKTsNCiAgICANCiAgICBib29sIGlzRXh0ZXJuYWwoKSBjb25zdCB7IHJldHVybiBidWZm
ZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJFeHRlcm5hbDsgfQ0KDQogICAgYm9vbCBpc1N1YlN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZzsg
fQ0KDQogICAgc3RhdGljIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBFeHBlY3RlZDxDU3RyaW5nLCBV
VEY4Q29udmVyc2lvbkVycm9yPiB1dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBMQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICBzdGF0aWMgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IEV4cGVjdGVkPENTdHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IHV0ZjhGb3JDaGFyYWN0ZXJz
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnZlcnNpb25Nb2Rl
ID0gTGVuaWVudENvbnZlcnNpb24pOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEV4cGVj
dGVkPENTdHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IHRyeUdldFV0ZjhGb3JSYW5nZSh1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50Q29u
dmVyc2lvbikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEV4cGVjdGVkPENTdHJp
bmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IHRyeUdldFV0ZjgoQ29udmVyc2lvbk1vZGUgPSBMZW5p
ZW50Q29udmVyc2lvbikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENTdHJpbmcg
dXRmOChDb252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKSBjb25zdDsNCg0KcHJpdmF0
ZToNCiAgICBzdGF0aWMgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVURjhDb252ZXJzaW9uRXJyb3Ig
dXRmOEltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY2hhciom
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIENvbnZlcnNpb25Nb2RlKTsNCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICB2b2lkIHNldEhhc2godW5zaWduZWQpIGNvbnN0Ow0KDQogICAgdW5z
aWduZWQgcmF3SGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzID4+IHNfZmxhZ0Nv
dW50OyB9DQoNCnB1YmxpYzoNCiAgICBib29sIGhhc0hhc2goKSBjb25zdCB7IHJldHVybiAhIXJh
d0hhc2goKTsgfQ0KDQogICAgdW5zaWduZWQgZXhpc3RpbmdIYXNoKCkgY29uc3QgeyAoKHZvaWQp
MCk7IHJldHVybiByYXdIYXNoKCk7IH0NCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1
cm4gaGFzSGFzaCgpID8gcmF3SGFzaCgpIDogaGFzaFNsb3dDYXNlKCk7IH0NCg0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSB1bnNpZ25lZCBjb25jdXJyZW50SGFzaCgpIGNvbnN0Ow0KDQogICAg
dW5zaWduZWQgc3ltYm9sQXdhcmVIYXNoKCkgY29uc3Q7DQogICAgdW5zaWduZWQgZXhpc3RpbmdT
eW1ib2xBd2FyZUhhc2goKSBjb25zdDsNCg0KICAgIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJl
dHVybiBtX3JlZkNvdW50ICYgc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsgfQ0KDQogICAg
c2l6ZV90IHJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudCAvIHNfcmVmQ291bnRJ
bmNyZW1lbnQ7IH0NCiAgICBib29sIGhhc09uZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291
bnQgPT0gc19yZWZDb3VudEluY3JlbWVudDsgfQ0KICAgIGJvb2wgaGFzQXRMZWFzdE9uZVJlZigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmQ291bnQ7IH0gDQoNCiAgICB2b2lkIHJlZigpOw0KICAgIHZv
aWQgZGVyZWYoKTsNCg0KICAgIGNsYXNzIFN0YXRpY1N0cmluZ0ltcGwgOiBwcml2YXRlIFN0cmlu
Z0ltcGxTaGFwZSB7DQogICAgICAgIFN0YXRpY1N0cmluZ0ltcGwoY29uc3QgU3RhdGljU3RyaW5n
SW1wbCYpID0gZGVsZXRlOyBTdGF0aWNTdHJpbmdJbXBsJiBvcGVyYXRvcj0oY29uc3QgU3RhdGlj
U3RyaW5nSW1wbCYpID0gZGVsZXRlOzsNCiAgICBwdWJsaWM6DQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICANCg0KICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4g
Y29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJh
Y3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7DQogICAgICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBjb25zdGV4cHIgU3RhdGljU3RyaW5nSW1wbChjb25z
dCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0
cmluZ05vcm1hbCk7DQogICAgICAgIG9wZXJhdG9yIFN0cmluZ0ltcGwmKCk7DQogICAgfTsNCg0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgU3RhdGljU3RyaW5nSW1wbCBzX2VtcHR5
QXRvbVN0cmluZzsNCiAgICBfX2ZvcmNlaW5saW5lIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzX2VtcHR5QXRvbVN0cmlu
Zyk7IH0NCg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZUNoYXJhY3RlclR5cGUs
IHR5cGVuYW1lIERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgY29weUNoYXJh
Y3RlcnMoRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbiwgY29uc3QgU291cmNl
Q2hhcmFjdGVyVHlwZSogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKTsNCg0KICAgIA0K
ICAgIA0KICAgIA0KICAgIFJlZjxTdHJpbmdJbXBsPiBpc29sYXRlZENvcHkoKSBjb25zdDsNCg0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSZWY8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2ln
bmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBNYXhMZW5ndGgpOw0KDQogICAgVUNoYXIg
YXQodW5zaWduZWQpIGNvbnN0Ow0KICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29u
c3QgeyByZXR1cm4gYXQoaSk7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgVUNoYXIzMiBj
aGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsNCg0KICAgIGludCB0b0ludFN0cmljdChib29s
KiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOw0KICAgIHVuc2lnbmVkIHRvVUludFN0cmlj
dChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOw0KICAgIGludDY0X3QgdG9JbnQ2
NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOw0KICAgIHVpbnQ2NF90
IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7DQogICAg
aW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgdG9JbnQoYm9vbCogb2sgPSBudWxs
cHRyKTsgDQogICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0gbnVsbHB0cik7IA0KICAgIGlu
dDY0X3QgdG9JbnQ2NChib29sKiBvayA9IG51bGxwdHIpOyANCiAgICB1aW50NjRfdCB0b1VJbnQ2
NChib29sKiBvayA9IG51bGxwdHIpOyANCiAgICBpbnRwdHJfdCB0b0ludFB0cihib29sKiBvayA9
IG51bGxwdHIpOyANCg0KICAgIA0KICAgIA0KICAgIA0KICAgIGRvdWJsZSB0b0RvdWJsZShib29s
KiBvayA9IG51bGxwdHIpOw0KICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSBudWxscHRyKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSZWY8U3RyaW5nSW1wbD4gY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgUmVmPFN0cmluZ0ltcGw+
IGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFJl
ZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7DQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9Mb3dlcmNhc2VXaXRo
b3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRleDhCaXQodW5zaWduZWQpOw0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBSZWY8U3RyaW5nSW1wbD4gY29udmVydFRvVXBwZXJjYXNlV2l0aG91
dExvY2FsZSgpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSZWY8U3RyaW5nSW1wbD4gY29u
dmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGVJZGVudGlm
aWVyKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRU
b1VwcGVyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7
DQoNCiAgICBSZWY8U3RyaW5nSW1wbD4gZm9sZENhc2UoKTsNCg0KICAgIFJlZjxTdHJpbmdJbXBs
PiBzdHJpcFdoaXRlU3BhY2UoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgUmVmPFN0cmlu
Z0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOw0KICAgIFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlm
eVdoaXRlU3BhY2UoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uKTsNCg0KICAgIFJlZjxTdHJpbmdJbXBs
PiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0NoYXJhY3RlcnMoQ29kZVVuaXRNYXRjaEZ1bmN0aW9u
KTsNCiAgICBSZWY8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDb2RlVW5pdE1hdGNoRnVu
Y3Rpb24pOw0KDQogICAgYm9vbCBpc0FsbEFTQ0lJKCkgY29uc3Q7DQogICAgYm9vbCBpc0FsbExh
dGluMSgpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFy
KT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7DQoNCiAgICBzaXplX3QgZmlu
ZChMQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7DQogICAgc2l6ZV90IGZpbmQo
Y2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7DQogICAgc2l6ZV90IGZpbmQoVUNo
YXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0g
MCk7DQogICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOw0K
ICAgIF9fZm9yY2VpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25l
ZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KHN0cmluZyksIGluZGV4KTsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgZmlu
ZChTdHJpbmdJbXBsKik7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBmaW5kKFN0
cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNp
emVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0Ow0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZ0ltcGwmLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7DQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1w
bCopIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzaXplX3QgZmluZElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7
DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1
bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNp
emVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBNYXhMZW5ndGgp
Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJp
bmdJbXBsKikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgc3RhcnRzV2l0
aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJv
b2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBi
b29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsN
CiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0
IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gc3RhcnRzV2l0aChw
cmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9v
bCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGVuZHNXaXRoKFN0
cmluZ0ltcGwqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBlbmRzV2l0aChTdHJp
bmdJbXBsJik7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikg
Y29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNv
bnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3Q7DQogICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0
Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhd
KSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0NCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBoYXNJbmZpeEVuZGluZ0F0KGNvbnN0IFN0cmlu
Z0ltcGwmLCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7DQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBs
Kik7DQogICAgX19mb3JjZWlubGluZSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0
ZXJuLCBjb25zdCBjaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgp
IHsgcmV0dXJuIHJlcGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KHJlcGxhY2VtZW50KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2ln
bmVkIHJlcGxhY2VtZW50TGVuZ3RoKTsNCiAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hh
ciwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7DQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJp
bmdJbXBsKik7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFJlZjxTdHJpbmdJbXBsPiByZXBs
YWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5ndGgsIFN0cmluZ0ltcGwqKTsNCg0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVQ2hhckRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxwdHIpOw0KDQoNCiAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nKCk7DQojbGluZSA0NzggIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQv
U3RyaW5nSW1wbC5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA0ODYgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nSW1wbC5o
Ig0KDQogICAgQnVmZmVyT3duZXJzaGlwIGJ1ZmZlck93bmVyc2hpcCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hpcD4obV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hNYXNr
QnVmZmVyT3duZXJzaGlwKTsgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHNp
emVfdCBoZWFkZXJTaXplKCkgeyByZXR1cm4gdGFpbE9mZnNldDxUPigpOyB9DQogICAgDQpwcm90
ZWN0ZWQ6DQogICAgflN0cmluZ0ltcGwoKTsNCg0KICAgIA0KICAgIGVudW0gQ3JlYXRlU3ltYm9s
VGFnIHsgQ3JlYXRlU3ltYm9sIH07DQogICAgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcsIGNv
bnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICBTdHJpbmdJbXBsKENyZWF0ZVN5bWJv
bFRhZywgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KDQogICAgDQogICAgZXhwbGlj
aXQgU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcpOw0KDQpwcml2YXRlOg0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lPiBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiB0
YWlsRWxlbWVudENvdW50KTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RhdGljIHNpemVfdCBt
YXhJbnRlcm5hbExlbmd0aCgpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBzdGF0aWMgc2l6ZV90
IHRhaWxPZmZzZXQoKTsNCg0KICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3Q7DQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCogdGFpbFBvaW50ZXIoKSBjb25zdDsNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUKiB0YWlsUG9pbnRlcigpOw0KICAgIFN0cmluZ0ltcGwqIGNvbnN0
JiBzdWJzdHJpbmdCdWZmZXIoKSBjb25zdDsNCiAgICBTdHJpbmdJbXBsKiYgc3Vic3RyaW5nQnVm
ZmVyKCk7DQoNCiAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9
Ow0KICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0QVNDSUlDYXNlKFN0cmluZ0ltcGwmLCBjb25z
dCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQpOw0KDQogICAgdGVtcGxhdGU8Y2xhc3MgQ29kZVVu
aXRQcmVkaWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKENvZGVV
bml0UHJlZGljYXRlKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBfX2Zv
cmNlaW5saW5lIFJlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIENvZGVVbml0TWF0Y2hGdW5jdGlvbik7DQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgY2xhc3MgQ29kZVVuaXRQcmVkaWNhdGU+IFJlZjxTdHJp
bmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShDb2RlVW5pdFByZWRpY2F0
ZSk7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjb25zdHJ1Y3RJbnRlcm5hbChTdHJpbmdJbXBsJiwgdW5zaWduZWQpOw0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlVW5pbml0aWFsaXplZEludGVybmFsKHVuc2lnbmVkLCBDaGFyYWN0ZXJUeXBlKiYpOw0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkodW5zaWduZWQsIENoYXJhY3RlclR5
cGUqJik7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIEV4cGVj
dGVkPFJlZjxTdHJpbmdJbXBsPiwgVVRGOENvbnZlcnNpb25FcnJvcj4gcmVhbGxvY2F0ZUludGVy
bmFsKFJlZjxTdHJpbmdJbXBsPiYmLCB1bnNpZ25lZCwgQ2hhcmFjdGVyVHlwZSomKTsNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZUludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCk7DQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIF9fZGVjbHNwZWMobm9pbmxpbmUpIHVuc2lnbmVkIGhhc2hTbG93Q2Fz
ZSgpIGNvbnN0Ow0KDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzX3JlZkNv
dW50RmxhZ0lzU3RhdGljU3RyaW5nID0gMHgxOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgc19yZWZDb3VudEluY3JlbWVudCA9IDB4MjsgDQoNCg0KDQojbGluZSA1MzMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3Ry
aW5nSW1wbC5oIg0KDQpwdWJsaWM6DQogICAgdm9pZCBhc3NlcnRIYXNoSXNDb3JyZWN0KCkgY29u
c3Q7DQp9Ow0KDQp1c2luZyBTdGF0aWNTdHJpbmdJbXBsID0gU3RyaW5nSW1wbDo6U3RhdGljU3Ry
aW5nSW1wbDsNCg0Kc3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkgPT0gc2l6ZW9mKFN0
YXRpY1N0cmluZ0ltcGwpLCAiIik7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
DQpzdHJ1Y3QgSGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyIHsNCiAgICBjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjaGFyYWN0ZXJzOw0KICAgIHVuc2lnbmVkIGxlbmd0aDsNCiAgICB1bnNpZ25lZCBoYXNo
Ow0KDQogICAgSGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICAgICAgOiBjaGFyYWN0ZXJzKGNoYXJhY3Rl
cnMpDQogICAgICAgICwgbGVuZ3RoKGxlbmd0aCkNCiAgICAgICAgLCBoYXNoKFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycywgbGVuZ3RoKSkNCiAgICB7
DQogICAgfQ0KDQogICAgSGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyKGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaGFzaCkNCiAgICAgICAg
OiBjaGFyYWN0ZXJzKGNoYXJhY3RlcnMpDQogICAgICAgICwgbGVuZ3RoKGxlbmd0aCkNCiAgICAg
ICAgLCBoYXNoKGhhc2gpDQogICAgew0KICAgIH0NCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU3MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvdGV4dC9TdHJpbmdJbXBsLmgiDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqKTsN
CmlubGluZSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IGNoYXIqIGIpIHsg
cmV0dXJuIGVxdWFsKGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0NCl9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBM
Q2hhciosIHVuc2lnbmVkKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGVxdWFsKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkKTsNCmlubGluZSBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyBy
ZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpLCBsZW5ndGgp
OyB9DQppbmxpbmUgYm9vbCBlcXVhbChjb25zdCBMQ2hhciogYSwgU3RyaW5nSW1wbCogYikgeyBy
ZXR1cm4gZXF1YWwoYiwgYSk7IH0NCmlubGluZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0
cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihhKSk7IH0NCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwmIGEsIGNvbnN0IFN0cmluZ0ltcGwmIGIpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVUNoYXIq
LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmdJbXBsKik7DQoNCmJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJiwgY29uc3QgU3RyaW5nSW1wbCYpOw0KX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgU3RyaW5nSW1wbCopOw0KYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ0ltcGwmLCBjb25zdCBjaGFyKik7DQpib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIqKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZU5vbk51bGwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IFN0cmluZ0ltcGwqKTsNCg0KdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmLCBjb25zdCBjaGFyICgmbG93
ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7DQp0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IGNo
YXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsNCg0Kc2l6ZV90IGZpbmQoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5k
ZXggPSAwKTsNCnNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBDb2Rl
VW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5hdG9yKGNvbnN0
IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGluZGV4ID0gU3RyaW5n
SW1wbDo6TWF4TGVuZ3RoKTsNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVf
dCByZXZlcnNlRmluZChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQgbGVuZ3RoLCBDaGFy
YWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0cmluZ0ltcGw6Ok1h
eExlbmd0aCk7DQpzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5n
dGgsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0cmluZ0ltcGw6Ok1h
eExlbmd0aCk7DQpzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0cmluZ0ltcGw6Ok1h
eExlbmd0aCk7DQoNCnRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gYm9vbCBlcXVhbEln
bm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYsIFN0cmlu
Z0ltcGwqKTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1lIENo
YXJhY3RlclR5cGUyPiBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBDaGFyYWN0ZXJUeXBlMSos
IHVuc2lnbmVkIGxlbmd0aDEsIGNvbnN0IENoYXJhY3RlclR5cGUyKiwgdW5zaWduZWQgbGVuZ3Ro
Mik7DQppbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5n
SW1wbCopOw0KDQoNCg0KYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyMzIpOw0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVk
U3RyaW5nKGNvbnN0IENoYXJhY3RlclR5cGUqKTsNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8U3RyaW5nSW1w
bCo+Ow0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmVmUHRyPFN0cmluZ0ltcGw+PjsN
CnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFBhY2tlZFB0cjxTdHJpbmdJbXBsPj47DQoN
Cg0KDQoNCg0KDQp0ZW1wbGF0ZTw+IF9fZm9yY2VpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmNvbnN0cnVjdEludGVybmFsPExDaGFyPihTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCkNCnsNCiAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgJnN0cmlu
ZykgU3RyaW5nSW1wbCB7IGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0b3IgfSk7DQp9DQoNCnRl
bXBsYXRlPD4gX19mb3JjZWlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3Ry
dWN0SW50ZXJuYWw8VUNoYXI+KFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoKQ0K
ew0KICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCAmc3RyaW5nKSBTdHJpbmdJbXBs
IHsgbGVuZ3RoIH0pOw0KfQ0KDQp0ZW1wbGF0ZTw+IF9fZm9yY2VpbmxpbmUgY29uc3QgTENoYXIq
IFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QNCnsNCiAgICByZXR1cm4gY2hh
cmFjdGVyczgoKTsNCn0NCg0KdGVtcGxhdGU8PiBfX2ZvcmNlaW5saW5lIGNvbnN0IFVDaGFyKiBT
dHJpbmdJbXBsOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0DQp7DQogICAgcmV0dXJuIGNoYXJh
Y3RlcnMxNigpOw0KfQ0KDQppbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIG1hdGNoRnVuY3Rpb24s
IHVuc2lnbmVkIGluZGV4KQ0Kew0KICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgew0KICAgICAg
ICBpZiAobWF0Y2hGdW5jdGlvbihjaGFyYWN0ZXJzW2luZGV4XSkpDQogICAgICAgICAgICByZXR1
cm4gaW5kZXg7DQogICAgICAgICsraW5kZXg7DQogICAgfQ0KICAgIHJldHVybiBub3RGb3VuZDsN
Cn0NCg0KaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBp
bmRleCkNCnsNCiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsNCiAgICAgICAgaWYgKG1hdGNo
RnVuY3Rpb24oY2hhcmFjdGVyc1tpbmRleF0pKQ0KICAgICAgICAgICAgcmV0dXJuIGluZGV4Ow0K
ICAgICAgICArK2luZGV4Ow0KICAgIH0NCiAgICByZXR1cm4gbm90Rm91bmQ7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmRMaW5l
VGVybWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIGluZGV4KQ0Kew0KICAgIGlmICghbGVuZ3RoKQ0KICAgICAgICByZXR1cm4g
bm90Rm91bmQ7DQogICAgaWYgKGluZGV4ID49IGxlbmd0aCkNCiAgICAgICAgaW5kZXggPSBsZW5n
dGggLSAxOw0KICAgIGF1dG8gY2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpbmRleF07DQogICAgd2hp
bGUgKGNoYXJhY3RlciAhPSAnXG4nICYmIGNoYXJhY3RlciAhPSAnXHInKSB7DQogICAgICAgIGlm
ICghaW5kZXgtLSkNCiAgICAgICAgICAgIHJldHVybiBub3RGb3VuZDsNCiAgICAgICAgY2hhcmFj
dGVyID0gY2hhcmFjdGVyc1tpbmRleF07DQogICAgfQ0KICAgIHJldHVybiBpbmRleDsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHNpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJh
Y3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQ0Kew0KICAgIGlmICghbGVu
Z3RoKQ0KICAgICAgICByZXR1cm4gbm90Rm91bmQ7DQogICAgaWYgKGluZGV4ID49IGxlbmd0aCkN
CiAgICAgICAgaW5kZXggPSBsZW5ndGggLSAxOw0KICAgIHdoaWxlIChjaGFyYWN0ZXJzW2luZGV4
XSAhPSBtYXRjaENoYXJhY3Rlcikgew0KICAgICAgICBpZiAoIWluZGV4LS0pDQogICAgICAgICAg
ICByZXR1cm4gbm90Rm91bmQ7DQogICAgfQ0KICAgIHJldHVybiBpbmRleDsNCn0NCg0KX19mb3Jj
ZWlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KQ0Kew0KICAg
IHJldHVybiByZXZlcnNlRmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRpY19jYXN0PFVDaGFy
PihtYXRjaENoYXJhY3RlciksIGluZGV4KTsNCn0NCg0KaW5saW5lIHNpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENo
YXJhY3RlciwgdW5zaWduZWQgaW5kZXgpDQp7DQogICAgaWYgKCFpc0xhdGluMShtYXRjaENoYXJh
Y3RlcikpDQogICAgICAgIHJldHVybiBub3RGb3VuZDsNCiAgICByZXR1cm4gcmV2ZXJzZUZpbmQo
Y2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBp
bmRleCk7DQp9DQoNCmlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChMQ2hhciBjaGFyYWN0
ZXIsIHVuc2lnbmVkIHN0YXJ0KQ0Kew0KICAgIGlmIChpczhCaXQoKSkNCiAgICAgICAgcmV0dXJu
IFdURjo6ZmluZChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7DQog
ICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIGNoYXJhY3Rlciwg
c3RhcnQpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkNCnsNCiAgICByZXR1cm4gZmluZChzdGF0aWNfY2Fz
dDxMQ2hhcj4oY2hhcmFjdGVyKSwgc3RhcnQpOw0KfQ0KDQppbmxpbmUgc2l6ZV90IFN0cmluZ0lt
cGw6OmZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCkNCnsNCiAgICBpZiAoaXM4
Qml0KCkpDQogICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgs
IGNoYXJhY3Rlciwgc3RhcnQpOw0KICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczE2KCks
IG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIHN0YXJ0KTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8
VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgU3RyaW5nSW1wbCogYikNCnsNCiAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ051bGxpdHkoYS5kYXRhKCksIGEuc2l6ZSgpLCBiKTsNCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGUyPiBpbmxp
bmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgQ2hhcmFjdGVyVHlwZTEqIGNoYXJhY3RlcnMx
LCB1bnNpZ25lZCBsZW5ndGgxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiogY2hhcmFjdGVyczIsIHVu
c2lnbmVkIGxlbmd0aDIpDQp7DQogICAgdW5zaWduZWQgY29tbW9uTGVuZ3RoID0gc3RkOjptaW4o
bGVuZ3RoMSwgbGVuZ3RoMik7DQoNCiAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7DQogICAgd2hp
bGUgKHBvc2l0aW9uIDwgY29tbW9uTGVuZ3RoICYmICpjaGFyYWN0ZXJzMSA9PSAqY2hhcmFjdGVy
czIpIHsNCiAgICAgICAgKytjaGFyYWN0ZXJzMTsNCiAgICAgICAgKytjaGFyYWN0ZXJzMjsNCiAg
ICAgICAgKytwb3NpdGlvbjsNCiAgICB9DQoNCiAgICBpZiAocG9zaXRpb24gPCBjb21tb25MZW5n
dGgpDQogICAgICAgIHJldHVybiAoY2hhcmFjdGVyczFbMF0gPiBjaGFyYWN0ZXJzMlswXSkgPyAx
IDogLTE7DQoNCiAgICBpZiAobGVuZ3RoMSA9PSBsZW5ndGgyKQ0KICAgICAgICByZXR1cm4gMDsN
CiAgICByZXR1cm4gKGxlbmd0aDEgPiBsZW5ndGgyKSA/IDEgOiAtMTsNCn0NCg0KaW5saW5lIGlu
dCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmlu
Z0ltcGwqIHN0cmluZzIpDQp7DQogICAgDQogICAgaWYgKCFzdHJpbmcxKQ0KICAgICAgICByZXR1
cm4gKHN0cmluZzIgJiYgc3RyaW5nMi0+bGVuZ3RoKCkpID8gLTEgOiAwOw0KICAgIGlmICghc3Ry
aW5nMikNCiAgICAgICAgcmV0dXJuIHN0cmluZzEtPmxlbmd0aCgpID8gMSA6IDA7DQoNCiAgICBi
b29sIHN0cmluZzFJczhCaXQgPSBzdHJpbmcxLT5pczhCaXQoKTsNCiAgICBib29sIHN0cmluZzJJ
czhCaXQgPSBzdHJpbmcyLT5pczhCaXQoKTsNCiAgICBpZiAoc3RyaW5nMUlzOEJpdCkgew0KICAg
ICAgICBpZiAoc3RyaW5nMklzOEJpdCkNCiAgICAgICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21w
YXJlKHN0cmluZzEtPmNoYXJhY3RlcnM4KCksIHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcyLT5sZW5ndGgoKSk7DQogICAgICAgIHJldHVybiBjb2RlUG9p
bnRDb21wYXJlKHN0cmluZzEtPmNoYXJhY3RlcnM4KCksIHN0cmluZzEtPmxlbmd0aCgpLCBzdHJp
bmcyLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nMi0+bGVuZ3RoKCkpOw0KICAgIH0NCiAgICBpZiAo
c3RyaW5nMklzOEJpdCkNCiAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+
Y2hhcmFjdGVyczE2KCksIHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcyLT5sZW5ndGgoKSk7DQogICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5n
MS0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nMi0+bGVuZ3RoKCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXds
aW5lKFVDaGFyMzIgY2hhcmFjdGVyKQ0Kew0KICAgIA0KICAgIHJldHVybiBpc0xhdGluMShjaGFy
YWN0ZXIpID8gaXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJEaXJlY3Rpb25fNjMoY2hh
cmFjdGVyKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3Ry
aW5nKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZykNCnsNCiAgICAoKHZvaWQpMCk7DQogICAg
c2l6ZV90IGxlbmd0aCA9IDA7DQogICAgd2hpbGUgKHN0cmluZ1tsZW5ndGhdKQ0KICAgICAgICAr
K2xlbmd0aDsNCg0KICAgIGRvIHsgaWYgKCghKGxlbmd0aCA8IFN0cmluZ0ltcGw6Ok1heExlbmd0
aCkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZv
ckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNzgzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdJbXBsLmgiLCAgX19G
VU5DVElPTl9fICAsIDEwICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOw0KfQ0KDQppbmxpbmUgU3RyaW5nSW1w
bFNoYXBlOjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgTENoYXIqIGRhdGE4LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpDQogICAgOiBtX3Jl
ZkNvdW50KHJlZkNvdW50KQ0KICAgICwgbV9sZW5ndGgobGVuZ3RoKQ0KICAgICwgbV9kYXRhOChk
YXRhOCkNCiAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykNCnsNCn0NCg0KaW5saW5l
IFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCB1bnNp
Z25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBkYXRhMTYsIHVuc2lnbmVkIGhhc2hBbmRGbGFncykN
CiAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpDQogICAgLCBtX2xlbmd0aChsZW5ndGgpDQogICAg
LCBtX2RhdGExNihkYXRhMTYpDQogICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpDQp7
DQp9DQoNCnRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBjb25zdGV4cHIgU3RyaW5n
SW1wbFNoYXBlOjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxl
bmd0aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQg
aGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKQ0KICAgIDogbV9yZWZDb3Vu
dChyZWZDb3VudCkNCiAgICAsIG1fbGVuZ3RoKGxlbmd0aCkNCiAgICAsIG1fZGF0YThDaGFyKGNo
YXJhY3RlcnMpDQogICAgLCBtX2hhc2hBbmRGbGFncyhoYXNoQW5kRmxhZ3MpDQp7DQp9DQoNCnRl
bXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBjb25zdGV4cHIgU3RyaW5nSW1wbFNoYXBl
OjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hB
bmRGbGFncywgQ29uc3RydWN0V2l0aENvbnN0RXhwclRhZykNCiAgICA6IG1fcmVmQ291bnQocmVm
Q291bnQpDQogICAgLCBtX2xlbmd0aChsZW5ndGgpDQogICAgLCBtX2RhdGExNkNoYXIoY2hhcmFj
dGVycykNCiAgICAsIG1faGFzaEFuZEZsYWdzKGhhc2hBbmRGbGFncykNCnsNCn0NCg0KaW5saW5l
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjppc29sYXRlZENvcHkoKSBjb25zdA0Kew0KICAg
IGlmICghcmVxdWlyZXNDb3B5KCkpIHsNCiAgICAgICAgaWYgKGlzOEJpdCgpKQ0KICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKG1fZGF0YTgsIG1fbGVu
Z3RoKTsNCiAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKG1f
ZGF0YTE2LCBtX2xlbmd0aCk7DQogICAgfQ0KDQogICAgaWYgKGlzOEJpdCgpKQ0KICAgICAgICBy
ZXR1cm4gY3JlYXRlKG1fZGF0YTgsIG1fbGVuZ3RoKTsNCiAgICByZXR1cm4gY3JlYXRlKG1fZGF0
YTE2LCBtX2xlbmd0aCk7DQp9DQoNCmlubGluZSBib29sIFN0cmluZ0ltcGw6OmlzQWxsQVNDSUko
KSBjb25zdA0Kew0KICAgIGlmIChpczhCaXQoKSkNCiAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7DQogICAgcmV0dXJuIGNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOw0KfQ0KDQppbmxpbmUgYm9v
bCBTdHJpbmdJbXBsOjppc0FsbExhdGluMSgpIGNvbnN0DQp7DQogICAgaWYgKGlzOEJpdCgpKQ0K
ICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBhdXRvKiBjaGFyYWN0ZXJzID0gY2hhcmFjdGVyczE2
KCk7DQogICAgVUNoYXIgb3JlZCA9IDA7DQogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGgoKTsgKytpKQ0KICAgICAgICBvcmVkIHw9IGNoYXJhY3RlcnNbaV07DQogICAgcmV0dXJuICEo
b3JlZCAmIDB4RkYwMCk7DQp9DQoNCnRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVD
aGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBbGxTcGVjaWFsQ2hh
cmFjdGVycyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQ0K
ew0KICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsNCiAgICAgICAgaWYg
KCFpc1NwZWNpYWxDaGFyYWN0ZXIoY2hhcmFjdGVyc1tpXSkpDQogICAgICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgfQ0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZTxib29sIGlzU3Bl
Y2lhbENoYXJhY3RlcihVQ2hhcik+IGlubGluZSBib29sIFN0cmluZ0ltcGw6OmlzQWxsU3BlY2lh
bENoYXJhY3RlcnMoKSBjb25zdA0Kew0KICAgIGlmIChpczhCaXQoKSkNCiAgICAgICAgcmV0dXJu
IFdURjo6aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+KGNoYXJhY3Rl
cnM4KCksIGxlbmd0aCgpKTsNCiAgICByZXR1cm4gV1RGOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzU3BlY2lhbENoYXJhY3Rlcj4oY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKTsNCn0NCg0KaW5s
aW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoLCBGb3JjZThCaXQpDQog
ICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0YWlsUG9p
bnRlcjxMQ2hhcj4oKSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdOb3JtYWwgfCBCdWZm
ZXJJbnRlcm5hbCkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KDQogICAgKCh2
b2lkKTApOw0KfQ0KDQppbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5n
dGgpDQogICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgbGVuZ3RoLCB0
YWlsUG9pbnRlcjxVQ2hhcj4oKSwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpDQp7DQog
ICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCg0KICAgICgodm9pZCkwKTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgTWFsbG9jPg0KaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFs
bG9jUHRyPExDaGFyLCBNYWxsb2M+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICA6
IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIHN0YXRpY19jYXN0
PGNvbnN0IExDaGFyKj4obnVsbHB0ciksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9y
bWFsIHwgQnVmZmVyT3duZWQpDQp7DQogICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxN
YWxsb2MsIFN0cmluZ0ltcGxNYWxsb2M+KQ0KICAgICAgICBtX2RhdGE4ID0gY2hhcmFjdGVycy5s
ZWFrUHRyKCk7DQogICAgZWxzZSB7DQogICAgICAgIGF1dG8gZGF0YTggPSBzdGF0aWNfY2FzdDxM
Q2hhcio+KFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxvYyhsZW5ndGggKiBzaXplb2YoTENoYXIpKSk7
DQogICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGE4LCBjaGFyYWN0ZXJzLmdldCgpLCBsZW5ndGgp
Ow0KICAgICAgICBtX2RhdGE4ID0gZGF0YTg7DQogICAgfQ0KDQogICAgKCh2b2lkKTApOw0KICAg
ICgodm9pZCkwKTsNCg0KICAgICgodm9pZCkwKTsNCn0NCg0KaW5saW5lIFN0cmluZ0ltcGw6OlN0
cmluZ0ltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29uc3Ry
dWN0V2l0aG91dENvcHlpbmdUYWcpDQogICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudElu
Y3JlbWVudCwgbGVuZ3RoLCBjaGFyYWN0ZXJzLCBTdHJpbmdOb3JtYWwgfCBCdWZmZXJJbnRlcm5h
bCkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KDQogICAgKCh2b2lkKTApOw0K
fQ0KDQppbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZykNCiAgICA6IFN0
cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIHNf
aGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVySW50ZXJuYWwpDQp7DQog
ICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCg0KICAgICgodm9pZCkwKTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgTWFsbG9jPg0KaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFs
bG9jUHRyPFVDaGFyLCBNYWxsb2M+IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICA6
IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIHN0YXRpY19jYXN0
PGNvbnN0IFVDaGFyKj4obnVsbHB0ciksIFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQ0Kew0K
ICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8TWFsbG9jLCBTdHJpbmdJbXBsTWFsbG9j
PikNCiAgICAgICAgbV9kYXRhMTYgPSBjaGFyYWN0ZXJzLmxlYWtQdHIoKTsNCiAgICBlbHNlIHsN
CiAgICAgICAgYXV0byBkYXRhMTYgPSBzdGF0aWNfY2FzdDxVQ2hhcio+KFN0cmluZ0ltcGxNYWxs
b2M6Om1hbGxvYyhsZW5ndGggKiBzaXplb2YoVUNoYXIpKSk7DQogICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGExNiwgY2hhcmFjdGVycy5nZXQoKSwgbGVuZ3RoKTsNCiAgICAgICAgbV9kYXRhMTYg
PSBkYXRhMTY7DQogICAgfQ0KDQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCg0KICAg
ICgodm9pZCkwKTsNCn0NCg0KaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkN
CiAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJh
Y3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3Ry
aW5nKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0K
ICAgICgodm9pZCkwKTsNCg0KICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gJmJhc2UubGVha1JlZigp
Ow0KDQogICAgKCh2b2lkKTApOw0KfQ0KDQppbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4m
JiBiYXNlKQ0KICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0
aCwgY2hhcmFjdGVycywgU3RyaW5nTm9ybWFsIHwgQnVmZmVyU3Vic3RyaW5nKQ0Kew0KICAgICgo
dm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsN
Cg0KICAgIHN1YnN0cmluZ0J1ZmZlcigpID0gJmJhc2UubGVha1JlZigpOw0KDQogICAgKCh2b2lk
KTApOw0KfQ0KDQp0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVD
aGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikNCnsNCiAgICByZXR1cm4gY3JlYXRlOEJpdElm
UG9zc2libGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7DQp9DQoNCl9fZm9yY2Vpbmxp
bmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBs
KFN0cmluZ0ltcGwmIHJlcCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpDQp7DQog
ICAgKCh2b2lkKTApOw0KDQogICAgaWYgKCFsZW5ndGgpDQogICAgICAgIHJldHVybiAqZW1wdHko
KTsNCg0KICAgIA0KICAgIHNpemVfdCBzdWJzdHJpbmdTaXplID0gYWxsb2NhdGlvblNpemU8U3Ry
aW5nSW1wbCo+KDEpOw0KICAgIGlmIChyZXAuaXM4Qml0KCkpIHsNCiAgICAgICAgaWYgKHN1YnN0
cmluZ1NpemUgPj0gYWxsb2NhdGlvblNpemU8TENoYXI+KGxlbmd0aCkpDQogICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlKHJlcC5tX2RhdGE4ICsgb2Zmc2V0LCBsZW5ndGgpOw0KICAgIH0gZWxzZSB7
DQogICAgICAgIGlmIChzdWJzdHJpbmdTaXplID49IGFsbG9jYXRpb25TaXplPFVDaGFyPihsZW5n
dGgpKQ0KICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZShyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxl
bmd0aCk7DQogICAgfQ0KDQogICAgYXV0byogb3duZXJSZXAgPSAoKHJlcC5idWZmZXJPd25lcnNo
aXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVwLnN1YnN0cmluZ0J1ZmZlcigpIDogJnJlcCk7
DQoNCiAgICANCiAgICBhdXRvKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+
KFN0cmluZ0ltcGxNYWxsb2M6Om1hbGxvYyhzdWJzdHJpbmdTaXplKSk7DQogICAgaWYgKHJlcC5p
czhCaXQoKSkNCiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0lt
cGwpIFN0cmluZ0ltcGwocmVwLm1fZGF0YTggKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7
DQogICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0lt
cGwocmVwLm1fZGF0YTE2ICsgb2Zmc2V0LCBsZW5ndGgsICpvd25lclJlcCkpOw0KfQ0KDQp0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gX19mb3JjZWlubGluZSBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMp
W2NoYXJhY3RlckNvdW50XSkNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KChjaGFyYWN0ZXJDb3VudCA+
IDEpLCAiU3RyaW5nSW1wbEZyb21MaXRlcmFsTm90RW1wdHkiKTsNCiAgICBzdGF0aWNfYXNzZXJ0
KCgoY2hhcmFjdGVyQ291bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9mKFN0cmluZ0lt
cGwpKSAvIHNpemVvZihMQ2hhcikpKSksICJTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVy
ZmxvdyIpOw0KDQogICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVyQ291bnQgLSAxKTsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gX19mb3JjZWlubGluZSBSZWZQdHI8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5n
dGgsIENoYXJhY3RlclR5cGUqJiBvdXRwdXQpDQp7DQogICAgaWYgKCFsZW5ndGgpIHsNCiAgICAg
ICAgb3V0cHV0ID0gbnVsbHB0cjsNCiAgICAgICAgcmV0dXJuIGVtcHR5KCk7DQogICAgfQ0KDQog
ICAgaWYgKGxlbmd0aCA+IG1heEludGVybmFsTGVuZ3RoPENoYXJhY3RlclR5cGU+KCkpIHsNCiAg
ICAgICAgb3V0cHV0ID0gbnVsbHB0cjsNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0K
ICAgIFN0cmluZ0ltcGwqIHJlc3VsdDsNCg0KICAgIHJlc3VsdCA9IChTdHJpbmdJbXBsKilTdHJp
bmdJbXBsTWFsbG9jOjp0cnlNYWxsb2MoYWxsb2NhdGlvblNpemU8Q2hhcmFjdGVyVHlwZT4obGVu
Z3RoKSk7DQogICAgaWYgKCFyZXN1bHQpIHsNCiAgICAgICAgb3V0cHV0ID0gbnVsbHB0cjsNCiAg
ICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0KICAgIG91dHB1dCA9IHJlc3VsdC0+dGFpbFBv
aW50ZXI8Q2hhcmFjdGVyVHlwZT4oKTsNCg0KICAgIHJldHVybiBjb25zdHJ1Y3RJbnRlcm5hbDxD
aGFyYWN0ZXJUeXBlPigqcmVzdWx0LCBsZW5ndGgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+DQppbmxpbmUgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmFkb3B0KFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPiYmIHZlY3RvcikN
CnsNCiAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PE1hbGxvYywgU3RyaW5nSW1wbE1h
bGxvYz4pIHsNCiAgICAgICAgYXV0byBsZW5ndGggPSB2ZWN0b3Iuc2l6ZSgpOw0KICAgICAgICBp
ZiAoIWxlbmd0aCkNCiAgICAgICAgICAgIHJldHVybiAqZW1wdHkoKTsNCiAgICAgICAgaWYgKGxl
bmd0aCA+IE1heExlbmd0aCkNCiAgICAgICAgICAgIFdURkNyYXNoKCk7DQogICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0cmluZ0ltcGwodmVjdG9yLnJlbGVhc2VCdWZmZXIoKSwgbGVuZ3Ro
KSk7DQogICAgfSBlbHNlDQogICAgICAgIHJldHVybiBjcmVhdGUodmVjdG9yLmRhdGEoKSwgdmVj
dG9yLnNpemUoKSk7DQp9DQoNCmlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdCgpIGNvbnN0
DQp7DQogICAgDQogICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZykN
CiAgICAgICAgcmV0dXJuIHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0KCk7DQoNCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnRGlkUmVwb3J0
Q29zdCkNCiAgICAgICAgcmV0dXJuIDA7DQoNCiAgICBtX2hhc2hBbmRGbGFncyB8PSBzX2hhc2hG
bGFnRGlkUmVwb3J0Q29zdDsNCiAgICBzaXplX3QgcmVzdWx0ID0gbV9sZW5ndGg7DQogICAgaWYg
KCFpczhCaXQoKSkNCiAgICAgICAgcmVzdWx0IDw8PSAxOw0KICAgIHJldHVybiByZXN1bHQ7DQp9
DQoNCmlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6Y29zdER1cmluZ0dDKCkNCnsNCiAgICBpZiAo
aXNTdGF0aWMoKSkNCiAgICAgICAgcmV0dXJuIDA7DQoNCiAgICBpZiAoYnVmZmVyT3duZXJzaGlw
KCkgPT0gQnVmZmVyU3Vic3RyaW5nKQ0KICAgICAgICByZXR1cm4gZGl2aWRlUm91bmRlZFVwKHN1
YnN0cmluZ0J1ZmZlcigpLT5jb3N0RHVyaW5nR0MoKSwgcmVmQ291bnQoKSk7DQoNCiAgICBzaXpl
X3QgcmVzdWx0ID0gbV9sZW5ndGg7DQogICAgaWYgKCFpczhCaXQoKSkNCiAgICAgICAgcmVzdWx0
IDw8PSAxOw0KICAgIHJldHVybiBkaXZpZGVSb3VuZGVkVXAocmVzdWx0LCByZWZDb3VudCgpKTsN
Cn0NCg0KaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6c2V0SXNBdG9tKGJvb2wgaXNBdG9tKQ0Kew0K
ICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKGlzQXRvbSkNCiAgICAgICAg
bV9oYXNoQW5kRmxhZ3MgfD0gc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b207DQogICAgZWxzZQ0K
ICAgICAgICBtX2hhc2hBbmRGbGFncyAmPSB+c19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b207DQp9
DQoNCmlubGluZSB2b2lkIFN0cmluZ0ltcGw6OnNldEhhc2godW5zaWduZWQgaGFzaCkgY29uc3QN
CnsNCiAgICANCiAgICANCiAgICANCg0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQog
ICAgDQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsgDQoNCiAgICBoYXNoIDw8PSBzX2Zs
YWdDb3VudDsNCiAgICAoKHZvaWQpMCk7IA0KICAgICgodm9pZCkwKTsgDQoNCiAgICBtX2hhc2hB
bmRGbGFncyB8PSBoYXNoOyANCn0NCg0KaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6cmVmKCkNCnsN
CiAgICAoKHZvaWQpMCk7DQoNCiAgICBtX3JlZkNvdW50ICs9IHNfcmVmQ291bnRJbmNyZW1lbnQ7
DQp9DQoNCmlubGluZSB2b2lkIFN0cmluZ0ltcGw6OmRlcmVmKCkNCnsNCiAgICAoKHZvaWQpMCk7
DQoNCiAgICB1bnNpZ25lZCB0ZW1wUmVmQ291bnQgPSBtX3JlZkNvdW50IC0gc19yZWZDb3VudElu
Y3JlbWVudDsNCiAgICBpZiAoIXRlbXBSZWZDb3VudCkgew0KICAgICAgICBTdHJpbmdJbXBsOjpk
ZXN0cm95KHRoaXMpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIG1fcmVmQ291bnQgPSB0
ZW1wUmVmQ291bnQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZUNoYXJhY3RlclR5cGUs
IHR5cGVuYW1lIERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlwZT4NCmlubGluZSB2b2lkIFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24s
IGNvbnN0IFNvdXJjZUNoYXJhY3RlclR5cGUqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVy
cykNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PFNvdXJjZUNoYXJhY3RlclR5
cGUsIExDaGFyPiB8fCBzdGQ6OmlzX3NhbWVfdjxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBVQ2hhcj4p
Ow0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8RGVzdGluYXRpb25DaGFyYWN0ZXJU
eXBlLCBMQ2hhcj4gfHwgc3RkOjppc19zYW1lX3Y8RGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCBV
Q2hhcj4pOw0KICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8U291cmNlQ2hhcmFjdGVy
VHlwZSwgRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlPikgew0KICAgICAgICBpZiAobnVtQ2hhcmFj
dGVycyA9PSAxKSB7DQogICAgICAgICAgICAqZGVzdGluYXRpb24gPSAqc291cmNlOw0KICAgICAg
ICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291
cmNlLCBudW1DaGFyYWN0ZXJzICogc2l6ZW9mKERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlwZSkpOw0K
ICAgIH0gZWxzZSB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkNCiAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ld
ID0gc291cmNlW2ldOw0KICAgIH0NCn0NCg0KaW5saW5lIFVDaGFyIFN0cmluZ0ltcGw6OmF0KHVu
c2lnbmVkIGkpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBpczhCaXQoKSA/
IG1fZGF0YThbaV0gOiBtX2RhdGExNltpXTsNCn0NCg0KaW5saW5lIFN0cmluZ0ltcGw6OlN0cmlu
Z0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQ0KICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0
aCwgY2hhcmFjdGVycywgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdTeW1ib2wgfCBCdWZm
ZXJTdWJzdHJpbmcpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZv
aWQpMCk7DQp9DQoNCmlubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRh
ZywgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICA6IFN0cmlu
Z0ltcGxTaGFwZShzX3JlZkNvdW50SW5jcmVtZW50LCBsZW5ndGgsIGNoYXJhY3RlcnMsIFN0cmlu
Z1N5bWJvbCB8IEJ1ZmZlclN1YnN0cmluZykNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lk
KTApOw0KICAgICgodm9pZCkwKTsNCn0NCg0KaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwo
Q3JlYXRlU3ltYm9sVGFnKQ0KICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1l
bnQsIDAsIGVtcHR5KCktPmNoYXJhY3RlcnM4KCksIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3Ry
aW5nU3ltYm9sIHwgQnVmZmVyU3Vic3RyaW5nKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICAoKHZv
aWQpMCk7DQogICAgKCh2b2lkKTApOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
c2l6ZV90IFN0cmluZ0ltcGw6OmFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiB0YWlsRWxl
bWVudENvdW50KQ0Kew0KICAgIHJldHVybiAodGFpbE9mZnNldDxUPigpICsgdGFpbEVsZW1lbnRD
b3VudCAqIHNpemVvZihUKSkudW5zYWZlR2V0KCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+DQppbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6Om1heEludGVybmFsTGVuZ3Ro
KCkNCnsNCiAgICANCiAgICByZXR1cm4gc3RkOjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihNYXhM
ZW5ndGgpLCAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0
cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBzaXplX3QgU3RyaW5nSW1wbDo6dGFpbE9mZnNldCgpDQp7DQoNCiAgICAN
CiAgICByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoVCk+KHNpemVvZihTdHJpbmdJ
bXBsKSk7DQoNCg0KI2xpbmUgMTE5MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdJbXBsLmgiDQp9DQoNCmlubGluZSBi
b29sIFN0cmluZ0ltcGw6OnJlcXVpcmVzQ29weSgpIGNvbnN0DQp7DQogICAgaWYgKGJ1ZmZlck93
bmVyc2hpcCgpICE9IEJ1ZmZlckludGVybmFsKQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAg
IGlmIChpczhCaXQoKSkNCiAgICAgICAgcmV0dXJuIG1fZGF0YTggPT0gdGFpbFBvaW50ZXI8TENo
YXI+KCk7DQogICAgcmV0dXJuIG1fZGF0YTE2ID09IHRhaWxQb2ludGVyPFVDaGFyPigpOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3QgVCogU3RyaW5nSW1wbDo6dGFpbFBv
aW50ZXIoKSBjb25zdA0Kew0KICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSArIHRhaWxPZmZzZXQ8VD4oKSk7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBTdHJpbmdJbXBsOjp0YWlsUG9p
bnRlcigpDQp7DQogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KHRoaXMpICsgdGFpbE9mZnNldDxUPigpKTsNCn0NCg0KaW5saW5lIFN0cmlu
Z0ltcGwqIGNvbnN0JiBTdHJpbmdJbXBsOjpzdWJzdHJpbmdCdWZmZXIoKSBjb25zdA0Kew0KICAg
ICgodm9pZCkwKTsNCg0KICAgIHJldHVybiAqdGFpbFBvaW50ZXI8U3RyaW5nSW1wbCo+KCk7DQp9
DQoNCmlubGluZSBTdHJpbmdJbXBsKiYgU3RyaW5nSW1wbDo6c3Vic3RyaW5nQnVmZmVyKCkNCnsN
CiAgICAoKHZvaWQpMCk7DQoNCiAgICByZXR1cm4gKnRhaWxQb2ludGVyPFN0cmluZ0ltcGwqPigp
Ow0KfQ0KDQppbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjphc3NlcnRIYXNoSXNDb3JyZWN0KCkgY29u
c3QNCnsNCiAgICAoKHZvaWQpMCk7DQp9DQoNCnRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PiBjb25zdGV4cHIgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5n
SW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBTdHJpbmdLaW5k
IHN0cmluZ0tpbmQpDQogICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEZsYWdJc1N0YXRp
Y1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLA0KICAgICAgICBzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwgc3RyaW5nS2luZCB8IEJ1
ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1Rv
cDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhw
cikNCnsNCn0NCg0KdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IGNvbnN0ZXhwciBT
dHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsKGNvbnN0IGNoYXIx
Nl90ICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBTdHJpbmdLaW5kIHN0cmluZ0tpbmQp
DQogICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZywgY2hh
cmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLA0KICAgICAgICBzX2hhc2hGbGFnRGlkUmVwb3J0
Q29zdCB8IHN0cmluZ0tpbmQgfCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1
dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCks
IENvbnN0cnVjdFdpdGhDb25zdEV4cHIpDQp7DQp9DQoNCmlubGluZSBTdHJpbmdJbXBsOjpTdGF0
aWNTdHJpbmdJbXBsOjpvcGVyYXRvciBTdHJpbmdJbXBsJigpDQp7DQogICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PFN0cmluZ0ltcGwqPih0aGlzKTsNCn0NCg0KaW5saW5lIGJvb2wgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBhLCBjb25zdCBTdHJpbmdJbXBsJiBi
KQ0Kew0KICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGEsIGIpOw0KfQ0K
DQppbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIGEs
IGNvbnN0IGNoYXIqIGIpDQp7DQogICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21t
b24oYSwgYik7DQp9DQoNCmlubGluZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYikNCnsNCiAgICByZXR1cm4gYSAmJiBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKCphLCBiKTsNCn0NCg0KdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBp
bmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwmIHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pDQp7
DQogICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb24oc3Ry
aW5nLCBsb3dlcmNhc2VMZXR0ZXJzKTsNCn0NCg0KdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBp
bmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwqIHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pDQp7
DQogICAgcmV0dXJuIHN0cmluZyAmJiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KCpzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMpOw0KfQ0KDQp0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5n
dGg+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwmIHN0cmluZywgY29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pDQp7
DQogICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKHN0cmluZywg
bG93ZXJjYXNlTGV0dGVycyk7DQp9DQoNCnRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gaW5saW5l
IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCogc3Ry
aW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSkNCnsNCiAgICByZXR1
cm4gc3RyaW5nICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKCpzdHJpbmcsIGxvd2Vy
Y2FzZUxldHRlcnMpOw0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6OlN0YXRpY1N0cmluZ0ltcGw7DQp1
c2luZyBXVEY6OlN0cmluZ0ltcGw7DQp1c2luZyBXVEY6OmVxdWFsOw0KI2xpbmUgMjkgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQv
VW5pcXVlZFN0cmluZ0ltcGwuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQpjbGFzcyBVbmlx
dWVkU3RyaW5nSW1wbCA6IHB1YmxpYyBTdHJpbmdJbXBsIHsNCnByaXZhdGU6DQogICAgVW5pcXVl
ZFN0cmluZ0ltcGwoKSA9IGRlbGV0ZTsNCnByb3RlY3RlZDoNCiAgICBVbmlxdWVkU3RyaW5nSW1w
bChDcmVhdGVTeW1ib2xUYWcsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpIDogU3RyaW5nSW1wbChDcmVhdGVTeW1ib2wsIGNoYXJhY3RlcnMsIGxlbmd0aCkgeyB9DQog
ICAgVW5pcXVlZFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKSA6IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpIHsgfQ0KICAgIFVuaXF1ZWRTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZykg
OiBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCkgeyB9DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSA1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oIg0KDQp9IA0KDQp1
c2luZyBXVEY6OlVuaXF1ZWRTdHJpbmdJbXBsOw0KI2xpbmUgMjQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvQXRvbVN0cmluZ0lt
cGwuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIEF0b21TdHJpbmdUYWJsZTsNCg0KY2xh
c3MgQXRvbVN0cmluZ0ltcGwgZmluYWwgOiBwdWJsaWMgVW5pcXVlZFN0cmluZ0ltcGwgew0KcHVi
bGljOg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJ
bXBsPiBsb29rVXAoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBsb29rVXAoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0lt
cGw+IGxvb2tVcChTdHJpbmdJbXBsKiBzdHJpbmcpDQogICAgew0KICAgICAgICBpZiAoIXN0cmlu
ZyB8fCBzdHJpbmctPmlzQXRvbSgpKQ0KICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0
b21TdHJpbmdJbXBsKj4oc3RyaW5nKTsNCiAgICAgICAgcmV0dXJuIGxvb2tVcFNsb3dDYXNlKCpz
dHJpbmcpOw0KICAgIH0NCg0KICAgIHN0YXRpYyB2b2lkIHJlbW92ZShBdG9tU3RyaW5nSW1wbCop
Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0lt
cGw+IGFkZChjb25zdCBMQ2hhciopOw0KICAgIF9fZm9yY2VpbmxpbmUgc3RhdGljIFJlZlB0cjxB
dG9tU3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGFkZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBz
dGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhZGQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmUHRyPEF0b21TdHJp
bmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIF9fZm9yY2Vp
bmxpbmUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMsIHVu
c2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihzKSwgbGVuZ3RoKTsgfTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZlB0
cjxBdG9tU3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFkZChTdHJpbmdJbXBsKiwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIF9fZm9yY2VpbmxpbmUgc3RhdGlj
IFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykNCiAgICB7DQog
ICAgICAgIGlmICghc3RyaW5nKQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAg
IHJldHVybiBhZGQoKnN0cmluZyk7DQogICAgfQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBz
dGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhZGQoY29uc3QgU3RhdGljU3RyaW5nSW1wbCop
Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmPEF0b21TdHJpbmdJbXBsPiBh
ZGRMaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAg
ICANCiAgICBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhZGRVVEY4KGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOw0KDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
c3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKENGU3RyaW5nUmVmKTsNCiNsaW5lIDY0
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgiDQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdU
YWJsZVByb3ZpZGVyPg0KICAgIF9fZm9yY2VpbmxpbmUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5n
SW1wbD4gYWRkV2l0aFN0cmluZ1RhYmxlUHJvdmlkZXIoU3RyaW5nVGFibGVQcm92aWRlciYgc3Ry
aW5nVGFibGVQcm92aWRlciwgU3RyaW5nSW1wbCogc3RyaW5nKQ0KICAgIHsNCiAgICAgICAgaWYg
KCFzdHJpbmcpDQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgcmV0dXJuIGFk
ZCgqc3RyaW5nVGFibGVQcm92aWRlci5hdG9tU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7DQogICAg
fQ0KDQoNCg0KI2xpbmUgNzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaCINCg0KcHJpdmF0ZToNCiAg
ICBBdG9tU3RyaW5nSW1wbCgpID0gZGVsZXRlOw0KDQogICAgX19mb3JjZWlubGluZSBzdGF0aWMg
UmVmPEF0b21TdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCYgc3RyaW5nKQ0KICAgIHsNCiAgICAg
ICAgaWYgKHN0cmluZy5pc0F0b20oKSkgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsJj4oc3RyaW5nKTsNCiAgICAg
ICAgfQ0KICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uoc3RyaW5nKTsNCiAgICB9DQoNCiAgICBf
X2ZvcmNlaW5saW5lIHN0YXRpYyBSZWY8QXRvbVN0cmluZ0ltcGw+IGFkZChBdG9tU3RyaW5nVGFi
bGUmIHN0cmluZ1RhYmxlLCBTdHJpbmdJbXBsJiBzdHJpbmcpDQogICAgew0KICAgICAgICBpZiAo
c3RyaW5nLmlzQXRvbSgpKSB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwmPihzdHJpbmcpOw0KICAgICAgICB9DQog
ICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShzdHJpbmdUYWJsZSwgc3RyaW5nKTsNCiAgICB9DQoN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRk
U2xvd0Nhc2UoU3RyaW5nSW1wbCYpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMg
UmVmPEF0b21TdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShBdG9tU3RyaW5nVGFibGUmLCBTdHJpbmdJ
bXBsJik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZlB0cjxBdG9tU3Ry
aW5nSW1wbD4gbG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOw0KfTsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oIg0KDQp9DQoN
CnVzaW5nIFdURjo6QXRvbVN0cmluZ0ltcGw7DQojbGluZSAyNiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BdG9tU3RyaW5nLmgi
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNw
YWNlIFdURiB7DQoNCmVudW0gUG9zaXRpdmVPck5lZ2F0aXZlTnVtYmVyIHsgUG9zaXRpdmVOdW1i
ZXIsIE5lZ2F0aXZlTnVtYmVyIH07DQoNCnRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvblRyYWl0Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIgTnVtYmVyVHlw
ZSwgdHlwZW5hbWUgQWRkaXRpb25hbEFyZ3VtZW50VHlwZT4NCnN0YXRpYyB0eXBlbmFtZSBJbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdJ
bXBsKFVuc2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyLCBBZGRpdGlvbmFsQXJndW1lbnRUeXBlIGFk
ZGl0aW9uYWxBcmd1bWVudCkNCnsNCiAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdl
clR5cGUpICogMyArIDFdOw0KICAgIExDaGFyKiBlbmQgPSBzdGQ6OmVuZChidWYpOw0KICAgIExD
aGFyKiBwID0gZW5kOw0KDQogICAgZG8gew0KICAgICAgICAqLS1wID0gc3RhdGljX2Nhc3Q8TENo
YXI+KChudW1iZXIgJSAxMCkgKyAnMCcpOw0KICAgICAgICBudW1iZXIgLz0gMTA7DQogICAgfSB3
aGlsZSAobnVtYmVyKTsNCg0KICAgIGlmIChOdW1iZXJUeXBlID09IE5lZ2F0aXZlTnVtYmVyKQ0K
ICAgICAgICAqLS1wID0gJy0nOw0KDQogICAgcmV0dXJuIEludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b25UcmFpdDxUPjo6Zmx1c2gocCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHApLCBhZGRp
dGlvbmFsQXJndW1lbnQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaWdu
ZWRJbnRlZ2VyVHlwZT4NCmlubGluZSB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
VHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdTaWduZWQoU2lnbmVkSW50ZWdlclR5
cGUgbnVtYmVyLCB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46OkFk
ZGl0aW9uYWxBcmd1bWVudFR5cGUqIGFkZGl0aW9uYWxBcmd1bWVudCA9IG51bGxwdHIpDQp7DQog
ICAgaWYgKG51bWJlciA8IDApDQogICAgICAgIHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGw8VCwg
dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFNpZ25lZEludGVnZXJUeXBlPjo6dHlwZSwgTmVn
YXRpdmVOdW1iZXI+KC1udW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7DQogICAgcmV0dXJuIG51
bWJlclRvU3RyaW5nSW1wbDxULCB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8U2lnbmVkSW50
ZWdlclR5cGU+Ojp0eXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBhZGRpdGlvbmFsQXJndW1l
bnQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJU
eXBlPg0KaW5saW5lIHR5cGVuYW1lIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxUPjo6
UmV0dXJuVHlwZSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkKFVuc2lnbmVkSW50ZWdlclR5cGUgbnVt
YmVyLCB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46OkFkZGl0aW9u
YWxBcmd1bWVudFR5cGUqIGFkZGl0aW9uYWxBcmd1bWVudCA9IG51bGxwdHIpDQp7DQogICAgcmV0
dXJuIG51bWJlclRvU3RyaW5nSW1wbDxULCBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU51
bWJlcj4obnVtYmVyLCBhZGRpdGlvbmFsQXJndW1lbnQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlLCBQb3NpdGl2ZU9y
TmVnYXRpdmVOdW1iZXIgTnVtYmVyVHlwZT4NCnN0YXRpYyB2b2lkIHdyaXRlTnVtYmVyVG9CdWZm
ZXJJbXBsKFVuc2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyLCBDaGFyYWN0ZXJUeXBlKiBkZXN0aW5h
dGlvbikNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWVfdjxib29sLCBzdGQ6OnJl
bW92ZV9jdl90PFVuc2lnbmVkSW50ZWdlclR5cGU+PiwgIidib29sJyBub3Qgc3VwcG9ydGVkIik7
DQogICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAxXTsNCiAg
ICBMQ2hhciogZW5kID0gc3RkOjplbmQoYnVmKTsNCiAgICBMQ2hhciogcCA9IGVuZDsNCg0KICAg
IGRvIHsNCiAgICAgICAgKi0tcCA9IHN0YXRpY19jYXN0PExDaGFyPigobnVtYmVyICUgMTApICsg
JzAnKTsNCiAgICAgICAgbnVtYmVyIC89IDEwOw0KICAgIH0gd2hpbGUgKG51bWJlcik7DQoNCiAg
ICBpZiAoTnVtYmVyVHlwZSA9PSBOZWdhdGl2ZU51bWJlcikNCiAgICAgICAgKi0tcCA9ICctJzsN
CiAgICANCiAgICB3aGlsZSAocCA8IGVuZCkNCiAgICAgICAgKmRlc3RpbmF0aW9uKysgPSBzdGF0
aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPigqcCsrKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZSwgdHlwZW5hbWUgU2lnbmVkSW50ZWdlclR5cGU+DQppbmxpbmUgdm9pZCB3cml0
ZU51bWJlclRvQnVmZmVyU2lnbmVkKFNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgQ2hhcmFjdGVy
VHlwZSogZGVzdGluYXRpb24pDQp7DQogICAgaWYgKG51bWJlciA8IDApDQogICAgICAgIHJldHVy
biB3cml0ZU51bWJlclRvQnVmZmVySW1wbDxDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBzdGQ6Om1h
a2VfdW5zaWduZWQ8U2lnbmVkSW50ZWdlclR5cGU+Ojp0eXBlLCBOZWdhdGl2ZU51bWJlcj4oLW51
bWJlciwgZGVzdGluYXRpb24pOw0KICAgIHJldHVybiB3cml0ZU51bWJlclRvQnVmZmVySW1wbDxD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8U2lnbmVkSW50ZWdlclR5
cGU+Ojp0eXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBkZXN0aW5hdGlvbik7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5
cGU+DQppbmxpbmUgdm9pZCB3cml0ZU51bWJlclRvQnVmZmVyVW5zaWduZWQoVW5zaWduZWRJbnRl
Z2VyVHlwZSBudW1iZXIsIENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKQ0Kew0KICAgIHJldHVy
biB3cml0ZU51bWJlclRvQnVmZmVySW1wbDxDaGFyYWN0ZXJUeXBlLCBVbnNpZ25lZEludGVnZXJU
eXBlLCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBkZXN0aW5hdGlvbik7DQp9DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlT3JOZWdhdGl2ZU51bWJlciBO
dW1iZXJUeXBlPg0Kc3RhdGljIHVuc2lnbmVkIGxlbmd0aE9mTnVtYmVyQXNTdHJpbmdJbXBsKFVu
c2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyKQ0Kew0KICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7DQoN
CiAgICBkbyB7DQogICAgICAgICsrbGVuZ3RoOw0KICAgICAgICBudW1iZXIgLz0gMTA7DQogICAg
fSB3aGlsZSAobnVtYmVyKTsNCg0KICAgIGlmIChOdW1iZXJUeXBlID09IE5lZ2F0aXZlTnVtYmVy
KQ0KICAgICAgICArK2xlbmd0aDsNCg0KICAgIHJldHVybiBsZW5ndGg7DQp9DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFNpZ25lZEludGVnZXJUeXBlPg0KaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVt
YmVyQXNTdHJpbmdTaWduZWQoU2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyKQ0Kew0KICAgIGlmIChu
dW1iZXIgPCAwKQ0KICAgICAgICByZXR1cm4gbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGw8dHlw
ZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFNpZ25lZEludGVnZXJUeXBlPjo6dHlwZSwgTmVnYXRp
dmVOdW1iZXI+KC1udW1iZXIpOw0KICAgIHJldHVybiBsZW5ndGhPZk51bWJlckFzU3RyaW5nSW1w
bDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8U2lnbmVkSW50ZWdlclR5cGU+Ojp0eXBlLCBQ
b3NpdGl2ZU51bWJlcj4obnVtYmVyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJ
bnRlZ2VyVHlwZT4NCmlubGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bWJlckFzU3RyaW5nVW5zaWdu
ZWQoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpDQp7DQogICAgcmV0dXJuIGxlbmd0aE9mTnVt
YmVyQXNTdHJpbmdJbXBsPFVuc2lnbmVkSW50ZWdlclR5cGUsIFBvc2l0aXZlTnVtYmVyPihudW1i
ZXIpOw0KfQ0KDQp9IA0KI2xpbmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvQXRvbVN0cmluZy5oIg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4
dC9XVEZTdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCg0K
Y2xhc3MgQVNDSUlMaXRlcmFsIGZpbmFsIHsNCnB1YmxpYzoNCiAgICBvcGVyYXRvciBjb25zdCBj
aGFyKigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQ0KDQogICAgc3RhdGljIGNvbnN0
ZXhwciBBU0NJSUxpdGVyYWwgZnJvbUxpdGVyYWxVbnNhZmUoY29uc3QgY2hhciogc3RyaW5nKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCB7IHN0cmluZyB9Ow0KICAgIH0NCg0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3Q7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBudWxsKCkNCiAgICB7DQog
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwgeyBudWxscHRyIH07DQogICAgfQ0KDQogICAgY29u
c3RleHByIGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnM7IH0NCiAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihtX2NoYXJhY3RlcnMpOyB9DQogICAgc2l6ZV90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIHN0cmxlbihtX2NoYXJhY3RlcnMpOyB9DQoNCiAgICBjb25zdGV4
cHIgY2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jaGFy
YWN0ZXJzW2luZGV4XTsgfQ0KDQpwcml2YXRlOg0KICAgIGNvbnN0ZXhwciBleHBsaWNpdCBBU0NJ
SUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVy
cykgeyB9DQoNCiAgICBjb25zdCBjaGFyKiBtX2NoYXJhY3RlcnM7DQp9Ow0KDQppbmxpbmUgbmFt
ZXNwYWNlIFN0cmluZ0xpdGVyYWxzIHsNCg0KY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBvcGVyYXRv
ciIiIF9zKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBuKQ0Kew0KDQoNCg0KI2xpbmUg
NzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL3RleHQvQVNDSUlMaXRlcmFsLmgiDQogICAgKHZvaWQpbjsNCiNsaW5lIDczICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L0FT
Q0lJTGl0ZXJhbC5oIg0KICAgIHJldHVybiBBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZl
KGNoYXJhY3RlcnMpOw0KfQ0KDQp9IA0KDQp9IA0KDQp1c2luZyBuYW1lc3BhY2UgV1RGOjpTdHJp
bmdMaXRlcmFsczsNCnVzaW5nIFdURjo6QVNDSUlMaXRlcmFsOw0KI2xpbmUgMzAgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvV1RG
U3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQppbmxpbmUgY29uc3Qg
VUNoYXIqIHVjaGFyRnJvbShjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQ0Kew0KICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2No
YXJfdCBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7DQogICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFyYWN0ZXJzKTsNCn0NCg0KaW5saW5lIFVDaGFyKiB1
Y2hhckZyb20od2NoYXJfdCogY2hhcmFjdGVycykNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
Zih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFy
IGhhdmUgdGhlIHNhbWUgc2l6ZSIpOw0KICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFVDaGFy
Kj4oY2hhcmFjdGVycyk7DQp9DQoNCmlubGluZSBjb25zdCB3Y2hhcl90KiB3Y2hhckZyb20oY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMpDQp7DQogICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJf
dCkgPT0gc2l6ZW9mKFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRo
ZSBzYW1lIHNpemUiKTsNCiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90
Kj4oY2hhcmFjdGVycyk7DQp9DQoNCmlubGluZSB3Y2hhcl90KiB3Y2hhckZyb20oVUNoYXIqIGNo
YXJhY3RlcnMpDQp7DQogICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9m
KFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUi
KTsNCiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4oY2hhcmFjdGVycyk7DQp9
DQoNCn0gDQoNCnVzaW5nIFdURjo6dWNoYXJGcm9tOw0KdXNpbmcgV1RGOjp3Y2hhckZyb207DQoj
bGluZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvdGV4dC9XVEZTdHJpbmcuaCINCiNsaW5lIDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1dURlN0cmluZy5oIg0K
DQpuYW1lc3BhY2UgV1RGIHsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgY2hhcmFj
dGVyc1RvSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBjaGFyYWN0ZXJzVG9J
bnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJh
c2UgPSAxMCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUlu
dFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50
U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApOw0KaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsNCmludDY0X3QgY2hhcmFj
dGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdWludDY0X3QgY2hhcmFj
dGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxw
dHIsIGludCBiYXNlID0gMTApOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHVpbnQ2NF90IGNoYXJh
Y3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxs
cHRyLCBpbnQgYmFzZSA9IDEwKTsNCmludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChj
b25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsN
CmludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0cik7IA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBjaGFyYWN0ZXJzVG9JbnQoY29u
c3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IA0KdW5zaWduZWQgY2hhcmFj
dGVyc1RvVUludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgDQp1
bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IG51bGxwdHIpOyANCmludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3QgTENoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IA0KaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgDQp1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IA0K
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgDQppbnRwdHJfdCBjaGFyYWN0ZXJz
VG9JbnRQdHIoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IA0KaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IG51bGxwdHIpOyANCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBjaGFyYWN0
ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBm
bG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBu
dWxscHRyKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhciosIHNpemVfdCwgc2l6
ZV90JiBwYXJzZWRMZW5ndGgpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0IGNoYXJhY3Rl
cnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBzaXplX3QmIHBhcnNlZExlbmd0aCk7DQoN
CnRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKSwgdHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUq
LCBzaXplX3QpOw0KDQplbnVtIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5IHsgS2VlcFRy
YWlsaW5nWmVyb3MsIFRydW5jYXRlVHJhaWxpbmdaZXJvcyB9Ow0KDQpjbGFzcyBTdHJpbmcgZmlu
YWwgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3RO
dWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1
c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVy
ZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgDQog
ICAgU3RyaW5nKCkgPSBkZWZhdWx0Ow0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsNCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPg0KICAgIGV4
cGxpY2l0IFN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXI+Jik7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nKGNv
bnN0IFVDaGFyKik7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nKGNv
bnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcoY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcoY29uc3QgY2hh
ciogY2hhcmFjdGVycyk7DQoNCiAgICANCiAgICBTdHJpbmcoU3RyaW5nSW1wbCYpOw0KICAgIFN0
cmluZyhTdHJpbmdJbXBsKik7DQogICAgU3RyaW5nKFJlZjxTdHJpbmdJbXBsPiYmKTsNCiAgICBT
dHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYpOw0KDQogICAgU3RyaW5nKFJlZjxBdG9tU3RyaW5n
SW1wbD4mJik7DQogICAgU3RyaW5nKFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4mJik7DQoNCiAgICBT
dHJpbmcoU3RhdGljU3RyaW5nSW1wbCYpOw0KICAgIFN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKik7
DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7
DQoNCiAgICANCiAgICANCiAgICBlbnVtIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnIHsgQ29uc3Ry
dWN0RnJvbUxpdGVyYWwgfTsNCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4g
U3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVj
dEZyb21MaXRlcmFsVGFnKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbDxj
aGFyYWN0ZXJDb3VudD4oY2hhcmFjdGVycykpIHsgfQ0KDQogICAgU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpID0gZGVmYXVsdDsNCiAgICBTdHJpbmcoU3RyaW5nJiYpID0gZGVmYXVsdDsNCiAgICBTdHJp
bmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7DQogICAgU3RyaW5nJiBvcGVy
YXRvcj0oU3RyaW5nJiYpID0gZGVmYXVsdDsNCg0KICAgIF9fZm9yY2VpbmxpbmUgflN0cmluZygp
ID0gZGVmYXVsdDsNCg0KICAgIHZvaWQgc3dhcChTdHJpbmcmIG8pIHsgbV9pbXBsLnN3YXAoby5t
X2ltcGwpOyB9DQoNCiAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4m
JiBidWZmZXIpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHN0ZDo6bW92ZTxXVEY6OkNoZWNr
TW92ZVBhcmFtZXRlcj4oYnVmZmVyKSk7IH0NCiAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFN0cmlu
Z0J1ZmZlcjxVQ2hhcj4mJiBidWZmZXIpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHN0ZDo6
bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oYnVmZmVyKSk7IH0NCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5Pg0KICAgIHN0YXRpYyBTdHJpbmcgYWRv
cHQoVmVjdG9yPENoYXJhY3RlclR5cGUsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5PiYmIHZlY3RvcikgeyByZXR1cm4gU3RyaW5nSW1wbDo6YWRvcHQoc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2ZWN0b3IpKTsgfQ0KDQogICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9DQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIW1faW1wbCB8fCBtX2ltcGwtPmlzRW1wdHkoKTsgfQ0KDQogICAgU3RyaW5nSW1w
bCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQ0KICAgIFJlZlB0cjxTdHJp
bmdJbXBsPiByZWxlYXNlSW1wbCgpIHsgcmV0dXJuIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBh
cmFtZXRlcj4obV9pbXBsKTsgfQ0KDQogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsID8gbV9pbXBsLT5sZW5ndGgoKSA6IDA7IH0NCiAgICBjb25zdCBMQ2hhciogY2hh
cmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmNoYXJhY3RlcnM4KCkg
OiBudWxscHRyOyB9DQogICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+Y2hhcmFjdGVyczE2KCkgOiBudWxscHRyOyB9DQoNCiAgICAN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdCBDaGFyYWN0ZXJUeXBl
KiBjaGFyYWN0ZXJzKCkgY29uc3Q7DQoNCiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2ltcGwgfHwgbV9pbXBsLT5pczhCaXQoKTsgfQ0KDQogICAgdW5zaWduZWQgc2l6ZUluQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmxlbmd0aCgpICogKGlzOEJpdCgp
ID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpIDogMDsgfQ0KDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIENTdHJpbmcgYXNjaWkoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBDU3RyaW5nIHV0ZjgoQ29udmVyc2lvbk1vZGUpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBDU3RyaW5nIHV0ZjgoKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBFeHBlY3RlZDxDU3RyaW5nLCBVVEY4Q29udmVyc2lvbkVycm9yPiB0cnlHZXRVdGY4KENvbnZl
cnNpb25Nb2RlKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRXhwZWN0ZWQ8Q1N0
cmluZywgVVRGOENvbnZlcnNpb25FcnJvcj4gdHJ5R2V0VXRmOCgpIGNvbnN0Ow0KDQogICAgVUNo
YXIgY2hhcmFjdGVyQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ow0KICAgIFVDaGFyIG9wZXJhdG9y
W10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlckF0KGluZGV4KTsgfQ0K
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7DQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7DQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxv
bmcpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25n
IGxvbmcpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgU3RyaW5nIG51bWJlcih1
bnNpZ25lZCBsb25nIGxvbmcpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgU3Ry
aW5nIG51bWJlcihmbG9hdCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKGRvdWJsZSk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFN0
cmluZyBudW1iZXJUb1N0cmluZ0ZpeGVkUHJlY2lzaW9uKGZsb2F0LCB1bnNpZ25lZCBwcmVjaXNp
b24gPSA2LCBUcmFpbGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSA9IFRydW5jYXRlVHJhaWxpbmda
ZXJvcyk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9T
dHJpbmdGaXhlZFByZWNpc2lvbihkb3VibGUsIHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWls
aW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0gVHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFN0cmluZyBudW1iZXJUb1N0cmluZ0ZpeGVkV2lk
dGgoZmxvYXQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBzdGF0aWMgU3RyaW5nIG51bWJlclRvU3RyaW5nRml4ZWRXaWR0aChkb3VibGUsIHVuc2ln
bmVkIGRlY2ltYWxQbGFjZXMpOw0KDQogICAgDQogICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFj
dGVyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9DQoNCiAgICBzaXplX3QgZmluZChj
b25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5k
KHN0cmluZy5pbXBsKCkpIDogbm90Rm91bmQ7IH0NCiAgICBzaXplX3QgZmluZChjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+ZmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQ0KICAgIHNpemVfdCBm
aW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDog
bm90Rm91bmQ7IH0NCiAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSwgc3RhcnRPZmZzZXQp
IDogbm90Rm91bmQ7IH0NCg0KICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBt
YXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQ0KICAgIHNp
emVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7
IH0NCg0KICAgIA0KICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2ln
bmVkIHN0YXJ0ID0gTWF4TGVuZ3RoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJl
dmVyc2VGaW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0NCiAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gTWF4TGVuZ3Ro
KSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0cmluZy5pbXBs
KCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgVmVj
dG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0Ow0KDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25l
ZCkgY29uc3Q7DQoNCiAgICBib29sIGNvbnRhaW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyBy
ZXR1cm4gZmluZChjaGFyYWN0ZXIpICE9IG5vdEZvdW5kOyB9DQogICAgYm9vbCBjb250YWlucyhj
b25zdCBMQ2hhciogc3RyaW5nKSBjb25zdCB7IHJldHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91
bmQ7IH0NCiAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJl
dHVybiBmaW5kKHN0cmluZykgIT0gbm90Rm91bmQ7IH0NCiAgICBib29sIGNvbnRhaW5zSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIGZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmcpICE9IG5vdEZvdW5kOyB9DQogICAgYm9vbCBjb250YWluc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCkgY29uc3QgeyByZXR1cm4gZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgc3RhcnRPZmZz
ZXQpICE9IG5vdEZvdW5kOyB9DQoNCiAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzdHJpbmcu
aW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0NCiAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJp
bmcuaXNFbXB0eSgpOyB9DQogICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29u
c3QgeyByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+c3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9DQog
ICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBj
aGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+c3RhcnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQ0KICAg
IGJvb2wgaGFzSW5maXhTdGFydGluZ0F0KGNvbnN0IFN0cmluZyYgcHJlZml4LCB1bnNpZ25lZCBz
dGFydE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIHByZWZpeC5pbXBsKCkgJiYgbV9p
bXBsLT5oYXNJbmZpeFN0YXJ0aW5nQXQoKnByZWZpeC5pbXBsKCksIHN0YXJ0T2Zmc2V0KTsgfQ0K
DQogICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4g
bV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0NCiAgICBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBz
dHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5KCk7IH0NCiAgICBib29sIGVu
ZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+
ZW5kc1dpdGgoY2hhcmFjdGVyKTsgfQ0KICAgIGJvb2wgZW5kc1dpdGgoY2hhciBjaGFyYWN0ZXIp
IGNvbnN0IHsgcmV0dXJuIGVuZHNXaXRoKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsg
fQ0KICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0
IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQ0KICAg
IGJvb2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5k
T2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwt
Pmhhc0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0NCg0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhcHBlbmQoTENoYXIpOw0KICAgIHZvaWQgYXBwZW5kKGNo
YXIgY2hhcmFjdGVyKSB7IGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSk7IH07
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgYXBwZW5kKFVDaGFyKTsNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5n
dGgpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgaW5zZXJ0
KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvc2l0aW9uKTsNCg0KICAgIFN0cmluZyYgcmVwbGFj
ZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsNCiAgICBTdHJpbmcmIHJlcGxhY2Uo
VUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsNCiAgICBTdHJpbmcmIHJl
cGxhY2UoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOw0K
ICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50KTsNCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExpdGVyYWwoVUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFy
ICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNvdW50XSk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW5ndGgpOw0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0g
MSk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gTWF4TGVuZ3RoKSBjb25zdDsNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBv
c2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBNYXhMZW5ndGgpIGNvbnN0Ow0KICAgIFN0cmluZyBs
ZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKDAsIGxlbmd0aCk7
IH0NCiAgICBTdHJpbmcgcmlnaHQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJz
dHJpbmcodGhpcy0+bGVuZ3RoKCkgLSBsZW5ndGgsIGxlbmd0aCk7IH0NCg0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBTdHJpbmcgY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsNCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkg
Y29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZyBjb252ZXJ0VG9Mb3dlcmNh
c2VXaXRob3V0TG9jYWxlKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmlu
ZyBjb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRleDhC
aXQodW5zaWduZWQpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcgY29u
dmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBTdHJpbmcgY29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
U3RyaW5nIGNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9j
YWxlSWRlbnRpZmllcikgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5n
IHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJp
bmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uKSBjb25zdDsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdDaGFyYWN0ZXJzKENvZGVVbml0TWF0Y2hGdW5jdGlvbikgY29uc3Q7DQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENvZGVVbml0TWF0Y2hGdW5jdGlv
bikgY29uc3Q7DQoNCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5n
IGZvbGRDYXNlKCkgY29uc3Q7DQoNCiAgICANCiAgICANCiAgICBzdGF0aWMgU3RyaW5nIGNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQ0KICAgIHN0YXRp
YyBTdHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0
YSkgeyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEp
OyB9DQoNCiAgICB1c2luZyBTcGxpdEZ1bmN0b3IgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nVmlldyYpPjsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHNwbGl0KFVD
aGFyIHNlcGFyYXRvciwgY29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7DQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIFZlY3RvcjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFZlY3RvcjxTdHJpbmc+IHNwbGl0KGNvbnN0IFN0
cmluZyYgc2VwYXJhdG9yKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lk
IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1
bmN0b3ImKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgVmVjdG9yPFN0cmluZz4g
c3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhVQ2hhciBzZXBhcmF0b3IpIGNvbnN0Ow0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBWZWN0b3I8U3RyaW5nPiBzcGxpdEFsbG93aW5nRW1wdHlFbnRy
aWVzKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEw
KSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgdG9VSW50U3RyaWN0
KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7DQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGlu
dCBiYXNlID0gMTApIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB1aW50NjRfdCB0
b1VJbnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0Ow0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludCB0b0ludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0Ow0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50NjRfdCB0b0ludDY0KGJvb2wqIG9rID0gbnVs
bHB0cikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHVpbnQ2NF90IHRvVUludDY0
KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGlu
dHB0cl90IHRvSW50UHRyKGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7DQoNCiAgICANCiAgICAN
CiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9r
ID0gbnVsbHB0cikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGZsb2F0IHRvRmxv
YXQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsNCg0KICAgIGJvb2wgcGVyY2VudGFnZShpbnQm
IHBlcmNlbnRhZ2UpIGNvbnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZyBp
c29sYXRlZENvcHkoKSBjb25zdCAmOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcg
aXNvbGF0ZWRDb3B5KCkgJiY7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBpc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsNCg0KICAgIA0KICAgIA0KICAgIHR5cGVk
ZWYgc3RydWN0IEltcGxpY2l0Q29udmVyc2lvbkZyb21XVEZTdHJpbmdUb0Jvb2xEaXNhbGxvd2Vk
QSogKFN0cmluZzo6KlVuc3BlY2lmaWVkQm9vbFR5cGVBKTsNCiAgICB0eXBlZGVmIHN0cnVjdCBJ
bXBsaWNpdENvbnZlcnNpb25Gcm9tV1RGU3RyaW5nVG9Cb29sRGlzYWxsb3dlZEIqIChTdHJpbmc6
OipVbnNwZWNpZmllZEJvb2xUeXBlQik7DQogICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlw
ZUEoKSBjb25zdDsNCiAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlQigpIGNvbnN0Ow0K
DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nKENGU3RyaW5nUmVmKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVDRlN0cmlu
ZygpIGNvbnN0Ow0KI2xpbmUgMzE5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1dURlN0cmluZy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiAgICBTdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKQ0KICAgICAgICA6IFN0cmluZyh1Y2hhckZyb20oY2hhcmFjdGVycyksIGxlbmd0aCkgeyB9
DQoNCiAgICBTdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykNCiAgICAgICAgOiBTdHJp
bmcodWNoYXJGcm9tKGNoYXJhY3RlcnMpKSB7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBWZWN0b3I8d2NoYXJfdD4gd2lkZUNoYXJhY3RlcnMoKSBjb25zdDsNCiNsaW5lIDMzOCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4
dC9XVEZTdHJpbmcuaCINCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgU3RyaW5n
IG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsNCiAgICB0ZW1w
bGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZC
aXRTb3VyY2UoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsNCg0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgU3RyaW5nIG1ha2UxNkJpdEZyb204Qml0U291cmNl
KGNvbnN0IExDaGFyKiwgc2l6ZV90KTsNCg0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IExDaGFyKiwgc2l6ZV90KTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hh
ciopOw0KICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgY2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOyB9Ow0KICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVU
RjgoY29uc3QgY2hhciogc3RyaW5nKSB7IHJldHVybiBmcm9tVVRGOChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oc3RyaW5nKSk7IH07DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0
YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgQ1N0cmluZyYpOw0KICAgIHN0YXRpYyBTdHJpbmcg
ZnJvbVVURjgoY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycyk7DQoNCiAgICANCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7DQogICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdp
dGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKSB7
IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH07DQoNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgc3RhdGljIFN0cmluZyBmcm9tQ29kZVBvaW50KFVDaGFyMzIgY29kZVBvaW50KTsNCg0K
ICAgIA0KICAgIFVDaGFyRGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVsbHB0cikgY29uc3Q7DQoNCiAgICBib29sIGlzQWxs
QVNDSUkoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8IG1faW1wbC0+aXNBbGxBU0NJSSgpOyB9
DQogICAgYm9vbCBpc0FsbExhdGluMSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBs
LT5pc0FsbExhdGluMSgpOyB9DQogICAgdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIo
VUNoYXIpPiBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiAhbV9p
bXBsIHx8IG1faW1wbC0+aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc1NwZWNpYWxDaGFyYWN0ZXI+
KCk7IH0NCg0KICAgIA0KICAgIFN0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9pbXBsKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0NCiAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0NCg0KICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBpc051
bGwoKSA/IDAgOiBpbXBsKCktPmhhc2goKTsgfQ0KICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgp
IGNvbnN0IHsgcmV0dXJuIGlzTnVsbCgpID8gMCA6IGltcGwoKS0+ZXhpc3RpbmdIYXNoKCk7IH0N
Cg0KDQoNCg0KDQogICAgDQogICAgDQogICAgdm9pZCBjbGVhckltcGxJZk5vdFNoYXJlZCgpOw0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBNYXhMZW5ndGggPSBTdHJpbmdJbXBsOjpN
YXhMZW5ndGg7DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gdm9pZCByZW1vdmVJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVu
c2lnbmVkKTsNCg0KICAgIHRlbXBsYXRlPGJvb2wgYWxsb3dFbXB0eUVudHJpZXM+IHZvaWQgc3Bs
aXRJbnRlcm5hbChVQ2hhciBzZXBhcmF0b3IsIGNvbnN0IFNwbGl0RnVuY3RvciYpIGNvbnN0Ow0K
ICAgIHRlbXBsYXRlPGJvb2wgYWxsb3dFbXB0eUVudHJpZXM+IFZlY3RvcjxTdHJpbmc+IHNwbGl0
SW50ZXJuYWwoVUNoYXIgc2VwYXJhdG9yKSBjb25zdDsNCiAgICB0ZW1wbGF0ZTxib29sIGFsbG93
RW1wdHlFbnRyaWVzPiBWZWN0b3I8U3RyaW5nPiBzcGxpdEludGVybmFsKGNvbnN0IFN0cmluZyYg
c2VwYXJhdG9yKSBjb25zdDsNCg0KICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2ltcGw7DQp9Ow0K
DQpzdGF0aWNfYXNzZXJ0KHNpemVvZihTdHJpbmcpID09IHNpemVvZih2b2lkKiksICJTdHJpbmcg
c2hvdWxkIGVmZmVjdGl2ZWx5IGJlIGEgcG9pbnRlciB0byBhIFN0cmluZ0ltcGwsIGFuZCBlZmZp
Y2llbnQgdG8gcGFzcyBieSB2YWx1ZSIpOw0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5p
bXBsKCkpOyB9DQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3Qg
TENoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiKTsgfQ0KaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEu
aW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9DQppbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIGVx
dWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJz
KCkpKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hhciogYSwgY29uc3QgU3Ry
aW5nJiBiKSB7IHJldHVybiBlcXVhbChhLCBiLmltcGwoKSk7IH0NCmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIuaW1wbCgpKTsgfQ0KaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShBU0NJSUxpdGVyYWwgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVh
bChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwo
KSk7IH0NCnRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEoKSwgYS5zaXplKCkpOyB9DQp0ZW1w
bGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVy
biBiID09IGE7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0NCmlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyBy
ZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBs
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9DQpp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
cmV0dXJuICFlcXVhbChhLCBiLmltcGwoKSk7IH0NCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmltcGwoKSk7IH0NCmlubGluZSBib29sIG9wZXJhdG9y
IT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhLmNoYXJhY3RlcnMoKSksIGIuaW1wbCgpKTsgfQ0K
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIGNvbnN0IFN0cmluZyYgYikgeyBy
ZXR1cm4gIShhID09IGIpOyB9DQp0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5s
aW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBiICE9IGE7IH0NCg0KYm9vbCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOw0KYm9vbCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsNCg0KdGVtcGxhdGU8dW5z
aWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsNCnRlbXBsYXRl
PHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsN
Cg0KaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgU3RyaW5nJiBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEuaW1wbCgpLCBiLmlt
cGwoKSk7IH0NCnRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgZXF1
YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEs
IGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ051bGxpdHkoYSwgYi5pbXBs
KCkpOyB9DQoNCmlubGluZSBib29sIG9wZXJhdG9yIShjb25zdCBTdHJpbmcmIHN0cmluZykgeyBy
ZXR1cm4gc3RyaW5nLmlzTnVsbCgpOyB9DQoNCmlubGluZSB2b2lkIHN3YXAoU3RyaW5nJiBhLCBT
dHJpbmcmIGIpIHsgYS5zd2FwKGIpOyB9DQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
Ow0KYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJik7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgYXBwZW5kTnVt
YmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYsIHVuc2lnbmVkIGNoYXIgbnVtYmVyKTsNCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOw0KX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGNvbnN0IFN0cmluZyYgbnVsbFN0cmluZygpOw0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8U3RyaW5nPjsNCnRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxTdHJpbmc+IDogVmVj
dG9yVHJhaXRzQmFzZTxmYWxzZSwgdm9pZD4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBj
YW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IHRydWU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGNhbk1vdmVXaXRoTWVtY3B5ID0gdHJ1ZTsNCn07DQoNCnRlbXBsYXRlPD4gc3RydWN0IEludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxTdHJpbmc+IHsNCiAgICB1c2luZyBSZXR1cm5UeXBl
ID0gU3RyaW5nOw0KICAgIHVzaW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5cGUgPSB2b2lkOw0KICAg
IHN0YXRpYyBTdHJpbmcgZmx1c2goTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
dm9pZCopIHsgcmV0dXJuIHsgY2hhcmFjdGVycywgbGVuZ3RoIH07IH0NCn07DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCmlubGluZSBTdHJpbmc6OlN0cmluZyhTdHJpbmdJbXBsJiBzdHJpbmcpDQogICAg
OiBtX2ltcGwoJnN0cmluZykNCnsNCn0NCg0KaW5saW5lIFN0cmluZzo6U3RyaW5nKFN0cmluZ0lt
cGwqIHN0cmluZykNCiAgICA6IG1faW1wbChzdHJpbmcpDQp7DQp9DQoNCmlubGluZSBTdHJpbmc6
OlN0cmluZyhSZWY8U3RyaW5nSW1wbD4mJiBzdHJpbmcpDQogICAgOiBtX2ltcGwoc3RkOjptb3Zl
PFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihzdHJpbmcpKQ0Kew0KfQ0KDQppbmxpbmUgU3RyaW5n
OjpTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYgc3RyaW5nKQ0KICAgIDogbV9pbXBsKHN0ZDo6
bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oc3RyaW5nKSkNCnsNCn0NCg0KaW5saW5lIFN0
cmluZzo6U3RyaW5nKFJlZjxBdG9tU3RyaW5nSW1wbD4mJiBzdHJpbmcpDQogICAgOiBtX2ltcGwo
c3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihzdHJpbmcpKQ0Kew0KfQ0KDQppbmxp
bmUgU3RyaW5nOjpTdHJpbmcoUmVmUHRyPEF0b21TdHJpbmdJbXBsPiYmIHN0cmluZykNCiAgICA6
IG1faW1wbChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHN0cmluZykpDQp7DQp9
DQoNCmlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsJiBzdHJpbmcpDQogICAg
OiBtX2ltcGwocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oJnN0cmluZykpDQp7DQp9DQoN
CmlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpDQogICAgOiBt
X2ltcGwocmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oc3RyaW5nKSkNCnsNCn0NCg0KdGVt
cGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IFN0
cmluZzo6U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlcj4mIHZlY3RvcikNCiAgICA6IG1faW1wbCh2ZWN0b3Iuc2l6ZSgpID8gU3RyaW5nSW1w
bDo6Y3JlYXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpIDogUmVmPFN0cmluZ0ltcGw+
IHsgKlN0cmluZ0ltcGw6OmVtcHR5KCkgfSkNCnsNCn0NCg0KdGVtcGxhdGU8PiBpbmxpbmUgY29u
c3QgTENoYXIqIFN0cmluZzo6Y2hhcmFjdGVyczxMQ2hhcj4oKSBjb25zdA0Kew0KICAgIHJldHVy
biBjaGFyYWN0ZXJzOCgpOw0KfQ0KDQp0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBVQ2hhciogU3Ry
aW5nOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0DQp7DQogICAgcmV0dXJuIGNoYXJhY3RlcnMx
NigpOw0KfQ0KDQppbmxpbmUgVUNoYXIgU3RyaW5nOjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QNCnsNCiAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgp
KQ0KICAgICAgICByZXR1cm4gMDsNCiAgICByZXR1cm4gKCptX2ltcGwpW2luZGV4XTsNCn0NCg0K
aW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIgcmVwbGFj
ZW1lbnQpDQp7DQogICAgaWYgKG1faW1wbCkNCiAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBs
YWNlKHRhcmdldCwgcmVwbGFjZW1lbnQpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KaW5saW5l
IFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudCkNCnsNCiAgICBpZiAobV9pbXBsKQ0KICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJl
cGxhY2UodGFyZ2V0LCByZXBsYWNlbWVudC5pbXBsKCkpOw0KICAgIHJldHVybiAqdGhpczsNCn0N
Cg0KaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQ0Kew0KICAgIGlmIChtX2ltcGwpDQogICAgICAgIG1f
aW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQuaW1wbCgpLCByZXBsYWNlbWVudC5pbXBsKCkp
Ow0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNl
KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnQpDQp7DQogICAgaWYgKG1faW1wbCkNCiAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNl
KHN0YXJ0LCBsZW5ndGgsIHJlcGxhY2VtZW50LmltcGwoKSk7DQogICAgcmV0dXJuICp0aGlzOw0K
fQ0KDQp0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gX19mb3JjZWlubGluZSBTdHJp
bmcmIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkNCnsNCiAgICBpZiAobV9pbXBsKQ0KICAgICAg
ICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2UodGFyZ2V0LCBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJD
b3VudCAtIDEpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5PiBpbmxpbmUgU3RyaW5nIFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2Uo
Y29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGJ1ZmZlcikNCnsNCiAgICByZXR1
cm4gbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
DQp9DQoNCmlubGluZSBVQ2hhckRpcmVjdGlvbiBTdHJpbmc6OmRlZmF1bHRXcml0aW5nRGlyZWN0
aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KSBjb25zdA0Kew0KICAgIGlmIChtX2lt
cGwpDQogICAgICAgIHJldHVybiBtX2ltcGwtPmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5KTsNCiAgICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpDQog
ICAgICAgICpoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IGZhbHNlOw0KICAgIHJldHVybiBVX0xF
RlRfVE9fUklHSFQ7DQp9DQoNCmlubGluZSB2b2lkIFN0cmluZzo6Y2xlYXJJbXBsSWZOb3RTaGFy
ZWQoKQ0Kew0KICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5oYXNPbmVSZWYoKSkNCiAgICAgICAg
bV9pbXBsID0gbnVsbHB0cjsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KaW5saW5lIGJvb2wgY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGNvbnN0IFN0cmluZyYgYSwg
Y29uc3QgU3RyaW5nJiBiKQ0Kew0KICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKGEuaW1wbCgp
LCBiLmltcGwoKSkgPCAwOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPg0K
aW5saW5lIHZvaWQgYXBwZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYgdmVjdG9yLCB1
bnNpZ25lZCBjaGFyIG51bWJlcikNCnsNCiAgICBpbnQgbnVtYmVyTGVuZ3RoID0gbnVtYmVyID4g
OTkgPyAzIDogKG51bWJlciA+IDkgPyAyIDogMSk7DQogICAgc2l6ZV90IHZlY3RvclNpemUgPSB2
ZWN0b3Iuc2l6ZSgpOw0KICAgIHZlY3Rvci5ncm93KHZlY3RvclNpemUgKyBudW1iZXJMZW5ndGgp
Ow0KDQogICAgc3dpdGNoIChudW1iZXJMZW5ndGgpIHsNCiAgICBjYXNlIDM6DQogICAgICAgIHZl
Y3Rvclt2ZWN0b3JTaXplICsgMl0gPSBudW1iZXIgJSAxMCArICcwJzsNCiAgICAgICAgbnVtYmVy
IC89IDEwOw0KICAgICAgICBbW2ZhbGx0aHJvdWdoXV07DQoNCiAgICBjYXNlIDI6DQogICAgICAg
IHZlY3Rvclt2ZWN0b3JTaXplICsgMV0gPSBudW1iZXIgJSAxMCArICcwJzsNCiAgICAgICAgbnVt
YmVyIC89IDEwOw0KICAgICAgICBbW2ZhbGx0aHJvdWdoXV07DQoNCiAgICBjYXNlIDE6DQogICAg
ICAgIHZlY3Rvclt2ZWN0b3JTaXplXSA9IG51bWJlciAlIDEwICsgJzAnOw0KICAgIH0NCn0NCg0K
aW5saW5lIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4KGNvbnN0IFZlY3RvcjxMQ2hhcj4mIGNoYXJh
Y3RlcnMpDQp7DQogICAgaWYgKGNoYXJhY3RlcnMuaXNFbXB0eSgpKQ0KICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsNCiAgICByZXR1cm4gZnJvbVVURjgoY2hhcmFjdGVycy5kYXRhKCksIGNo
YXJhY3RlcnMuc2l6ZSgpKTsNCn0NCg0KdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUg
Ym9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZywg
Y29uc3QgY2hhciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pDQp7DQogICAgcmV0dXJuIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCksIGxvd2VyY2FzZUxldHRl
cnMpOw0KfQ0KDQppbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgU3RyaW5nJiBiKQ0Kew0KICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGEuaW1wbCgpLCBiLmltcGwoKSk7DQp9DQoNCmlubGluZSBib29sIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKQ0Kew0KICAgIHJldHVybiBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuaW1wbCgpLCBiKTsNCn0NCg0KdGVtcGxhdGU8dW5zaWdu
ZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVu
Z3RoXSkNCnsNCiAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShz
dHJpbmcuaW1wbCgpLCBsb3dlcmNhc2VMZXR0ZXJzKTsNCn0NCg0KaW5saW5lIG5hbWVzcGFjZSBT
dHJpbmdMaXRlcmFscyB7DQoNCmlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCkNCnsNCiAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpmcm9t
TGl0ZXJhbFVuc2FmZShjaGFyYWN0ZXJzKTsNCn0NCg0KfSANCg0KfSANCg0KdXNpbmcgV1RGOjpL
ZWVwVHJhaWxpbmdaZXJvczsNCnVzaW5nIFdURjo6U3RyaW5nOw0KdXNpbmcgV1RGOjphcHBlbmRO
dW1iZXI7DQp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0RvdWJsZTsNCnVzaW5nIFdURjo6Y2hhcmFj
dGVyc1RvRmxvYXQ7DQp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludDY0Ow0KdXNpbmcgV1RGOjpj
aGFyYWN0ZXJzVG9JbnQ2NFN0cmljdDsNCnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50Ow0KdXNp
bmcgV1RGOjpjaGFyYWN0ZXJzVG9JbnRQdHI7DQp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb0ludFB0
clN0cmljdDsNCnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvSW50U3RyaWN0Ow0KdXNpbmcgV1RGOjpj
aGFyYWN0ZXJzVG9VSW50NjQ7DQp1c2luZyBXVEY6OmNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdDsN
CnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUludDsNCnVzaW5nIFdURjo6Y2hhcmFjdGVyc1RvVUlu
dFN0cmljdDsNCnVzaW5nIFdURjo6ZW1wdHlTdHJpbmc7DQp1c2luZyBXVEY6Om51bGxTdHJpbmc7
DQp1c2luZyBXVEY6OmVxdWFsOw0KdXNpbmcgV1RGOjpmaW5kOw0KdXNpbmcgV1RGOjppc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzOw0KdXNpbmcgV1RGOjppc1NwYWNlT3JOZXdsaW5lOw0KdXNpbmcgV1RG
OjpyZXZlcnNlRmluZDsNCg0KDQojbGluZSAyOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BdG9tU3RyaW5nLmgiDQoNCg0KDQoj
bGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvdGV4dC9BdG9tU3RyaW5nLmgiDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBB
dG9tU3RyaW5nIGZpbmFsIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCog
cCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNp
emUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVs
ZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4g
bG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2lu
ZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVi
bGljOg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgdm9pZCBpbml0KCk7DQoNCiAg
ICBBdG9tU3RyaW5nKCk7DQogICAgQXRvbVN0cmluZyhjb25zdCBMQ2hhciopOw0KICAgIEF0b21T
dHJpbmcoY29uc3QgY2hhciopOw0KICAgIEF0b21TdHJpbmcoY29uc3QgTENoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOw0KICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
Ow0KICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqKTsNCg0KICAgIHRlbXBsYXRlPHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4NCiAgICBleHBsaWNpdCBBdG9tU3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hh
ciwgaW5saW5lQ2FwYWNpdHk+JiBjaGFyYWN0ZXJzKQ0KICAgICAgICA6IG1fc3RyaW5nKEF0b21T
dHJpbmdJbXBsOjphZGQoY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3RlcnMuc2l6ZSgpKSkNCiAg
ICB7DQogICAgfQ0KDQogICAgQXRvbVN0cmluZyhBdG9tU3RyaW5nSW1wbCopOw0KICAgIEF0b21T
dHJpbmcoUmVmUHRyPEF0b21TdHJpbmdJbXBsPiYmKTsNCiAgICBBdG9tU3RyaW5nKGNvbnN0IFN0
YXRpY1N0cmluZ0ltcGwqKTsNCiAgICBBdG9tU3RyaW5nKFN0cmluZ0ltcGwqKTsNCiAgICBBdG9t
U3RyaW5nKGNvbnN0IFN0cmluZyYpOw0KICAgIEF0b21TdHJpbmcoU3RyaW5nSW1wbCogYmFzZVN0
cmluZywgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAgICANCiAgICBBdG9t
U3RyaW5nKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOw0KDQogICAgZW51bSBDb25zdHJ1Y3RGcm9t
TGl0ZXJhbFRhZyB7IENvbnN0cnVjdEZyb21MaXRlcmFsIH07DQogICAgQXRvbVN0cmluZyhjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdEZyb21MaXRlcmFs
VGFnKQ0KICAgICAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGRMaXRlcmFsKGNoYXJh
Y3RlcnMsIGxlbmd0aCkpDQogICAgew0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNo
YXJhY3RlckNvdW50PiBfX2ZvcmNlaW5saW5lIEF0b21TdHJpbmcoY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW2NoYXJhY3RlckNvdW50XSwgQ29uc3RydWN0RnJvbUxpdGVyYWxUYWcpDQogICAgICAg
IDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZExpdGVyYWwoY2hhcmFjdGVycywgY2hhcmFj
dGVyQ291bnQgLSAxKSkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoKGNoYXJhY3RlckNv
dW50ID4gMSksICJBdG9tU3RyaW5nRnJvbUxpdGVyYWxOb3RFbXB0eSIpOw0KICAgICAgICBzdGF0
aWNfYXNzZXJ0KCgoY2hhcmFjdGVyQ291bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9m
KFN0cmluZ0ltcGwpKSAvIHNpemVvZihMQ2hhcikpKSksICJBdG9tU3RyaW5nRnJvbUxpdGVyYWxD
YW5ub3RPdmVyZmxvdyIpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIEF0b21TdHJpbmcoY29u
c3QgQXRvbVN0cmluZyYgb3RoZXIpIDogbV9zdHJpbmcob3RoZXIubV9zdHJpbmcpIHsgfQ0KICAg
IEF0b21TdHJpbmcoQXRvbVN0cmluZyYmIG90aGVyKSA6IG1fc3RyaW5nKHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4ob3RoZXIubV9zdHJpbmcpKSB7IH0NCiAgICBBdG9tU3RyaW5n
JiBvcGVyYXRvcj0oY29uc3QgQXRvbVN0cmluZyYgb3RoZXIpIHsgbV9zdHJpbmcgPSBvdGhlci5t
X3N0cmluZzsgcmV0dXJuICp0aGlzOyB9DQogICAgQXRvbVN0cmluZyYgb3BlcmF0b3I9KEF0b21T
dHJpbmcmJiBvdGhlcikgeyBtX3N0cmluZyA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFt
ZXRlcj4ob3RoZXIubV9zdHJpbmcpOyByZXR1cm4gKnRoaXM7IH0NCg0KICAgIA0KICAgIEF0b21T
dHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0NCiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQ0K
DQogICAgdW5zaWduZWQgZXhpc3RpbmdIYXNoKCkgY29uc3QgeyByZXR1cm4gaXNOdWxsKCkgPyAw
IDogaW1wbCgpLT5leGlzdGluZ0hhc2goKTsgfQ0KDQogICAgb3BlcmF0b3IgY29uc3QgU3RyaW5n
JigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9DQogICAgY29uc3QgU3RyaW5nJiBzdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfTsNCg0KICAgIA0KICAgIEF0b21TdHJpbmdJbXBs
KiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0cmluZ0ltcGwqPihtX3N0
cmluZy5pbXBsKCkpOyB9DQoNCiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmlzOEJpdCgpOyB9DQogICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVyczgoKTsgfQ0KICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzMTYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsgfQ0KICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9DQoNCiAg
ICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGludCBpKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Z1tpXTsgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBBdG9tU3RyaW5nIG51
bWJlcihpbnQpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgQXRvbVN0cmluZyBu
dW1iZXIodW5zaWduZWQpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgQXRvbVN0
cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0
YXRpYyBBdG9tU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOw0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBzdGF0aWMgQXRvbVN0cmluZyBudW1iZXIoZmxvYXQpOw0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgQXRvbVN0cmluZyBudW1iZXIoZG91YmxlKTsNCiAgICAN
Cg0KICAgIGJvb2wgY29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5jb250YWlucyhjaGFyYWN0ZXIpOyB9DQogICAgYm9vbCBjb250YWlucyhjb25zdCBMQ2hh
ciogc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhzdHJpbmcpOyB9DQog
ICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcuY29udGFpbnMoc3RyaW5nKTsgfQ0KICAgIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY29udGFp
bnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9DQoNCiAgICBzaXplX3QgZmluZChVQ2hhciBj
aGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmlu
ZChjaGFyYWN0ZXIsIHN0YXJ0KTsgfQ0KICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZmluZChzdHJp
bmcsIHN0YXJ0KTsgfQ0KICAgIHNpemVfdCBmaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFy
dCk7IH0NCiAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
KTsgfQ0KICAgIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kSWdu
b3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCBzdGFydE9mZnNldCk7IH0NCiAgICBzaXplX3QgZmluZChD
b2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQ0KDQog
ICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5zdGFydHNXaXRoKHN0cmluZyk7IH0NCiAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0NCiAgICBib29sIHN0YXJ0c1dp
dGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoKGNo
YXJhY3Rlcik7IH0NCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBzdGFy
dHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KTsgfQ0KDQogICAgYm9vbCBl
bmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5k
c1dpdGgoc3RyaW5nKTsgfQ0KICAgIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShzdHJpbmcpOyB9DQogICAgYm9vbCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0NCiAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyICgmcHJl
Zml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoPG1hdGNo
TGVuZ3RoPihwcmVmaXgpOyB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQXRvbVN0cmlu
ZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBBdG9tU3RyaW5nIGNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3Q7DQoNCiAgICBp
bnQgdG9JbnQoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0lu
dChvayk7IH0NCiAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy50b0RvdWJsZShvayk7IH0NCiAgICBmbG9hdCB0b0Zsb2F0KGJvb2wq
IG9rID0gbnVsbHB0cikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9GbG9hdChvayk7IH0NCiAg
ICBib29sIHBlcmNlbnRhZ2UoaW50JiBwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5wZXJjZW50
YWdlKHApOyB9DQoNCiAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlz
TnVsbCgpOyB9DQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNF
bXB0eSgpOyB9DQoNCg0KICAgIEF0b21TdHJpbmcoQ0ZTdHJpbmdSZWYpOw0KI2xpbmUgMTQ2ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90
ZXh0L0F0b21TdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KICAgIEF0b21TdHJpbmcoY29uc3Qgd2No
YXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQ0KICAgICAgICA6IEF0b21TdHJpbmco
dWNoYXJGcm9tKGNoYXJhY3RlcnMpLCBsZW5ndGgpIHsgfQ0KDQogICAgQXRvbVN0cmluZyhjb25z
dCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQ0KICAgICAgICA6IEF0b21TdHJpbmcodWNoYXJGcm9tKGNo
YXJhY3RlcnMpKSB7IH0NCiNsaW5lIDE1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9BdG9tU3RyaW5nLmgiDQoNCiAgICANCiAg
ICBzdGF0aWMgQXRvbVN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiwgc2l6ZV90KTsNCiAgICBz
dGF0aWMgQXRvbVN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKik7DQoNCg0KDQoNCg0KcHJpdmF0
ZToNCiAgICANCiAgICBBdG9tU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7DQoNCiAgICBlbnVtIGNsYXNz
IENhc2VDb252ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9Ow0KICAgIHRlbXBsYXRlPENhc2VDb252
ZXJ0VHlwZT4gQXRvbVN0cmluZyBjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3Q7DQoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIEF0b21TdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25z
dCBjaGFyKiwgY29uc3QgY2hhciopOw0KDQogICAgU3RyaW5nIG1fc3RyaW5nOw0KfTsNCg0Kc3Rh
dGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykgPT0gc2l6ZW9mKFN0cmluZyksICJBdG9tU3Ry
aW5nIGFuZCBTdHJpbmcgbXVzdCBiZSB0aGUgc2FtZSBzaXplISIpOw0KDQppbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0
dXJuIGEuaW1wbCgpID09IGIuaW1wbCgpOyB9DQpib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IExDaGFyKik7DQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21T
dHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0NCmlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyByZXR1cm4g
YS5pbXBsKCkgJiYgZXF1YWwoYS5pbXBsKCksIGIuZGF0YSgpLCBiLnNpemUoKSk7IH0gICAgDQpp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQ0KaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gYiA9
PSBhOyB9DQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRv
bVN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQ0KaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8VUNoYXI+JiBhLCBjb25zdCBBdG9tU3RyaW5n
JiBiKSB7IHJldHVybiBiID09IGE7IH0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBB
dG9tU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSAhPSBi
LmltcGwoKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBj
b25zdCBMQ2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9DQppbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICEoYSA9PSBi
KTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9DQppbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4m
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBM
Q2hhciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShiID09IGEpOyB9DQppbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikg
eyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0NCmlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgVmVjdG9yPFVDaGFyPiYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1
cm4gIShhID09IGIpOyB9DQoNCmJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgQXRvbVN0cmluZyYpOw0KYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsNCmJvb2wgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmcmLCBjb25zdCBBdG9tU3RyaW5nJik7DQpib29sIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IGNoYXIqKTsNCg0KdGVtcGxh
dGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7
DQoNCmlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKCkNCnsNCn0NCg0KaW5saW5lIEF0b21T
dHJpbmc6OkF0b21TdHJpbmcoY29uc3QgTENoYXIqIHN0cmluZykNCiAgICA6IG1fc3RyaW5nKEF0
b21TdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkNCnsNCn0NCg0KaW5saW5lIEF0b21TdHJpbmc6OkF0
b21TdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQ0KICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0lt
cGw6OmFkZChzdHJpbmcpKQ0Kew0KfQ0KDQppbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhj
b25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgpDQogICAgOiBtX3N0cmluZyhBdG9t
U3RyaW5nSW1wbDo6YWRkKHN0cmluZywgbGVuZ3RoKSkNCnsNCn0NCg0KaW5saW5lIEF0b21TdHJp
bmc6OkF0b21TdHJpbmcoY29uc3QgVUNoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoKQ0KICAg
IDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZChzdHJpbmcsIGxlbmd0aCkpDQp7DQp9DQoN
CmlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKGNvbnN0IFVDaGFyKiBzdHJpbmcpDQogICAg
OiBtX3N0cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkKHN0cmluZykpDQp7DQp9DQoNCmlubGluZSBB
dG9tU3RyaW5nOjpBdG9tU3RyaW5nKEF0b21TdHJpbmdJbXBsKiBzdHJpbmcpDQogICAgOiBtX3N0
cmluZyhzdHJpbmcpDQp7DQp9DQoNCmlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKFJlZlB0
cjxBdG9tU3RyaW5nSW1wbD4mJiBzdHJpbmcpDQogICAgOiBtX3N0cmluZyhzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KHN0cmluZykpDQp7DQp9DQoNCmlubGluZSBBdG9tU3RyaW5n
OjpBdG9tU3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykNCiAgICA6IG1fc3RyaW5nKEF0b21TdHJp
bmdJbXBsOjphZGQoc3RyaW5nKSkNCnsNCn0NCg0KaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJp
bmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogc3RyaW5nKQ0KICAgIDogbV9zdHJpbmcoQXRvbVN0
cmluZ0ltcGw6OmFkZChzdHJpbmcpKQ0Kew0KfQ0KDQppbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykNCiAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBs
OjphZGQoc3RyaW5nLmltcGwoKSkpDQp7DQp9DQoNCmlubGluZSBBdG9tU3RyaW5nOjpBdG9tU3Ry
aW5nKFN0cmluZ0ltcGwqIGJhc2VTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgpDQogICAgOiBtX3N0cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkKGJhc2VTdHJpbmcsIHN0YXJ0
LCBsZW5ndGgpKQ0Kew0KfQ0KDQppbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQ0KICAgIDogbV9zdHJpbmcodWlkKQ0Kew0KfQ0KDQoNCg0KaW5saW5l
IEF0b21TdHJpbmc6OkF0b21TdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQ0KICAgIDogIG1fc3Ry
aW5nKEF0b21TdHJpbmdJbXBsOjphZGQoc3RyaW5nKSkNCnsNCn0NCg0KI2xpbmUgMjc5ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0
L0F0b21TdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gX19kZWNsc3BlYyhk
bGxpbXBvcnQpIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBudWxsQXRvbURh
dGE7DQpleHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIExhenlOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiBlbXB0eUF0b21EYXRhOw0KDQoNCg0KZXh0ZXJuIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN0
YXJBdG9tRGF0YTsNCmV4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgTWFpblRocmVhZExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB4bWxBdG9tRGF0YTsNCmV4dGVybiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiB4bWxuc0F0b21EYXRhOw0KDQppbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgbnVsbEF0
b20oKSB7IHJldHVybiBudWxsQXRvbURhdGEuZ2V0KCk7IH0NCmlubGluZSBjb25zdCBBdG9tU3Ry
aW5nJiBlbXB0eUF0b20oKSB7IHJldHVybiBlbXB0eUF0b21EYXRhLmdldCgpOyB9DQppbmxpbmUg
Y29uc3QgQXRvbVN0cmluZyYgc3RhckF0b20oKSB7IHJldHVybiBzdGFyQXRvbURhdGEuZ2V0KCk7
IH0NCmlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB4bWxBdG9tKCkgeyByZXR1cm4geG1sQXRvbURh
dGEuZ2V0KCk7IH0NCmlubGluZSBjb25zdCBBdG9tU3RyaW5nJiB4bWxuc0F0b20oKSB7IHJldHVy
biB4bWxuc0F0b21EYXRhLmdldCgpOyB9DQoNCmlubGluZSBBdG9tU3RyaW5nIEF0b21TdHJpbmc6
OmZyb21VVEY4KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpDQp7DQogICAg
aWYgKCFjaGFyYWN0ZXJzKQ0KICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsNCiAgICBpZiAoIWxl
bmd0aCkNCiAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOw0KICAgIHJldHVybiBmcm9tVVRGOElu
dGVybmFsKGNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgpOw0KfQ0KDQppbmxpbmUgQXRv
bVN0cmluZyBBdG9tU3RyaW5nOjpmcm9tVVRGOChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQ0Kew0K
ICAgIGlmICghY2hhcmFjdGVycykNCiAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7DQogICAgaWYg
KCEqY2hhcmFjdGVycykNCiAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOw0KICAgIHJldHVybiBm
cm9tVVRGOEludGVybmFsKGNoYXJhY3RlcnMsIG51bGxwdHIpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5
cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxBdG9tU3RyaW5nPjsNCg0KdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKQ0Kew0KICAgIHJldHVybiBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuc3RyaW5nKCksIGxvd2VyY2FzZUxldHRl
cnMpOw0KfQ0KDQppbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IEF0b21T
dHJpbmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpDQp7DQogICAgcmV0dXJuIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7DQp9DQoNCmlubGluZSBib29sIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBi
KQ0Kew0KICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuc3RyaW5nKCksIGIpOw0K
fQ0KDQppbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgYSwg
Y29uc3QgQXRvbVN0cmluZyYgYikNCnsNCiAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShhLCBiLnN0cmluZygpKTsNCn0NCg0KaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKQ0Kew0KICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGEuc3RyaW5nKCksIGIpOw0KfQ0KDQp0ZW1wbGF0ZTw+IHN0cnVj
dCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8QXRvbVN0cmluZz4gew0KICAgIHVzaW5n
IFJldHVyblR5cGUgPSBBdG9tU3RyaW5nOw0KICAgIHVzaW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5
cGUgPSB2b2lkOw0KICAgIHN0YXRpYyBBdG9tU3RyaW5nIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiB7IGNoYXJhY3RlcnMsIGxlbmd0aCB9
OyB9DQp9Ow0KDQp9IA0KDQp1c2luZyBXVEY6OkF0b21TdHJpbmc7DQp1c2luZyBXVEY6Om51bGxB
dG9tOw0KdXNpbmcgV1RGOjplbXB0eUF0b207DQp1c2luZyBXVEY6OnN0YXJBdG9tOw0KdXNpbmcg
V1RGOjp4bWxBdG9tOw0KdXNpbmcgV1RGOjp4bWxuc0F0b207DQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nVmll
dy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZXRhaW5QdHIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYp
XFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGFzc2VydC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTEgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxX
aW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXGFzc2VydC5oIg0K
DQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMy
NCAgNDUxNCA0NTc0IDQ3MTAgNDc5MyA0ODIwIDQ5OTUgNDk5NiAyODcxOSAyODcyNiAyODcyNyAp
DQoNCg0KX19wcmFnbWEocGFjayhwdXNoLCA4KSkgZXh0ZXJuICJDIiB7DQoNCg0KDQoNCg0KDQoN
CiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MiAiQzpcXFByb2dyYW0g
RmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNy
dFxcYXNzZXJ0LmgiDQoNCg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJu
aW5nKHBvcCkgDQojbGluZSA0NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCg0K
DQoNCg0KI2xpbmUgMSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBc
XGluY2x1ZGVcXDEwLjAuMTkwNDEuMFxcdWNydFxcbG9jYWxlLmgiDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgyMCA0OTk1IDQ5OTYgMjg3
MTkgMjg3MjYgMjg3MjcgKQ0KDQoNCl9fcHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIg
ew0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0Kc3RydWN0IGxjb252DQp7DQogICAgY2hh
ciogICAgZGVjaW1hbF9wb2ludDsNCiAgICBjaGFyKiAgICB0aG91c2FuZHNfc2VwOw0KICAgIGNo
YXIqICAgIGdyb3VwaW5nOw0KICAgIGNoYXIqICAgIGludF9jdXJyX3N5bWJvbDsNCiAgICBjaGFy
KiAgICBjdXJyZW5jeV9zeW1ib2w7DQogICAgY2hhciogICAgbW9uX2RlY2ltYWxfcG9pbnQ7DQog
ICAgY2hhciogICAgbW9uX3Rob3VzYW5kc19zZXA7DQogICAgY2hhciogICAgbW9uX2dyb3VwaW5n
Ow0KICAgIGNoYXIqICAgIHBvc2l0aXZlX3NpZ247DQogICAgY2hhciogICAgbmVnYXRpdmVfc2ln
bjsNCiAgICBjaGFyICAgICBpbnRfZnJhY19kaWdpdHM7DQogICAgY2hhciAgICAgZnJhY19kaWdp
dHM7DQogICAgY2hhciAgICAgcF9jc19wcmVjZWRlczsNCiAgICBjaGFyICAgICBwX3NlcF9ieV9z
cGFjZTsNCiAgICBjaGFyICAgICBuX2NzX3ByZWNlZGVzOw0KICAgIGNoYXIgICAgIG5fc2VwX2J5
X3NwYWNlOw0KICAgIGNoYXIgICAgIHBfc2lnbl9wb3NuOw0KICAgIGNoYXIgICAgIG5fc2lnbl9w
b3NuOw0KICAgIHdjaGFyX3QqIF9XX2RlY2ltYWxfcG9pbnQ7DQogICAgd2NoYXJfdCogX1dfdGhv
dXNhbmRzX3NlcDsNCiAgICB3Y2hhcl90KiBfV19pbnRfY3Vycl9zeW1ib2w7DQogICAgd2NoYXJf
dCogX1dfY3VycmVuY3lfc3ltYm9sOw0KICAgIHdjaGFyX3QqIF9XX21vbl9kZWNpbWFsX3BvaW50
Ow0KICAgIHdjaGFyX3QqIF9XX21vbl90aG91c2FuZHNfc2VwOw0KICAgIHdjaGFyX3QqIF9XX3Bv
c2l0aXZlX3NpZ247DQogICAgd2NoYXJfdCogX1dfbmVnYXRpdmVfc2lnbjsNCn07DQoNCnN0cnVj
dCB0bTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19jZGVjbCBfbG9ja19sb2NhbGVzKHZvaWQpOw0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fY2RlY2wgX3VubG9ja19sb2NhbGVzKHZv
aWQpOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGludCBfX2NkZWNsIF9jb25m
aWd0aHJlYWRsb2NhbGUoDQogICAgICAgICAgaW50IF9GbGFnDQogICAgICAgICk7DQoNCiAgICAg
ICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIqIF9fY2RlY2wgc2V0bG9jYWxlKA0K
ICAgICAgICAgICAgICAgIGludCAgICAgICAgIF9DYXRlZ29yeSwNCiAgICAgICAgICBjaGFyIGNv
bnN0KiBfTG9jYWxlDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgc3RydWN0IGxjb252KiBfX2NkZWNsIGxvY2FsZWNvbnYodm9pZCk7DQoNCiAgICANCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgX2xvY2FsZV90IF9fY2RlY2wgX2dldF9jdXJyZW50X2xvY2Fs
ZSh2b2lkKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBfbG9jYWxlX3QgX19j
ZGVjbCBfY3JlYXRlX2xvY2FsZSgNCiAgICAgICAgICAgIGludCAgICAgICAgIF9DYXRlZ29yeSwN
CiAgICAgICAgICBjaGFyIGNvbnN0KiBfTG9jYWxlDQogICAgICAgICk7DQoNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCBfX2NkZWNsIF9mcmVlX2xvY2FsZSgNCiAgICAgICAgICBfbG9j
YWxlX3QgX0xvY2FsZQ0KICAgICAgICApOw0KDQogICAgDQogICAgICAgIA0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSB3Y2hhcl90KiBfX2NkZWNsIF93c2V0bG9jYWxlKA0KICAgICAgICAgICAg
ICAgIGludCAgICAgICAgICAgIF9DYXRlZ29yeSwNCiAgICAgICAgICB3Y2hhcl90IGNvbnN0KiBf
TG9jYWxlDQogICAgICAgICk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgX2xv
Y2FsZV90IF9fY2RlY2wgX3djcmVhdGVfbG9jYWxlKA0KICAgICAgICAgICAgaW50ICAgICAgICAg
ICAgX0NhdGVnb3J5LA0KICAgICAgICAgIHdjaGFyX3QgY29uc3QqIF9Mb2NhbGUNCiAgICAgICAg
KTsNCg0KDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCoqICAgIF9fY2RlY2wg
X19fbGNfbG9jYWxlX25hbWVfZnVuYyh2b2lkKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dW5zaWduZWQgaW50IF9fY2RlY2wgX19fbGNfY29kZXBhZ2VfZnVuYyAgICh2b2lkKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgdW5zaWduZWQgaW50IF9fY2RlY2wgX19fbGNfY29sbGF0ZV9j
cF9mdW5jICh2b2lkKTsNCg0KDQoNCg0KICAgIA0KICAgICANCiAgICAgDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGNoYXIqICAgIF9fY2RlY2wgX0dldGRheXModm9pZCk7DQoNCiAgICAgDQog
ICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyKiAgICBfX2NkZWNsIF9HZXRtb250
aHModm9pZCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCogICAgX19jZGVjbCBf
R2V0dG5hbWVzKHZvaWQpOw0KDQogICAgIA0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgd2NoYXJfdCogX19jZGVjbCBfV19HZXRkYXlzKHZvaWQpOw0KDQogICAgIA0KICAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgd2NoYXJfdCogX19jZGVjbCBfV19HZXRtb250aHModm9p
ZCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCogICAgX19jZGVjbCBfV19HZXR0
bmFtZXModm9pZCk7DQoNCiAgICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBf
X2NkZWNsIF9TdHJmdGltZSgNCiAgICAgICAgICBjaGFyKiAgICAgICAgICAgX0J1ZmZlciwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICAgX01heF9zaXplLA0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QqICAgICAgX0Zvcm1hdCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSBjb25zdCogX1RpbWVwdHIsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqICAgICAgICAgICAgX0xjX3RpbWVfYXJnKTsN
Cg0KICAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IF9fY2RlY2wgX1djc2Z0
aW1lKA0KICAgICAgICAgIHdjaGFyX3QqICAgICAgICBfQnVmZmVyLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgICBfTWF4X3NpemUsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2NoYXJfdCBjb25zdCogICBfRm9ybWF0LA0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHRtIGNvbnN0KiBfVGltZXB0ciwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCogICAgICAgICAgICBfTGNfdGltZV9hcmcNCiAgICAgICAgKTsNCg0K
I2xpbmUgMTc5ICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5j
bHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxsb2NhbGUuaCINCg0KDQp9IF9fcHJhZ21hKHBhY2so
cG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGluZSAxODUgIkM6XFxQcm9ncmFtIEZp
bGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRc
XGxvY2FsZS5oIg0KI2xpbmUgNTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmgiDQoj
bGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93cyBLaXRzXFwxMFxcaW5jbHVk
ZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxtYXRoLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA1MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCg0KI2xpbmUg
MSAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVcXDEw
LjAuMTkwNDEuMFxcdWNydFxcc2lnbmFsLmgiDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQoNCiNwcmFnbWEgd2FybmluZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQzMjQgIDQ1MTQgNDU3NCA0NzEwIDQ3OTMgNDgyMCA0OTk1IDQ5OTYgMjg3MTkgMjg3MjYgMjg3
MjcgKQ0KDQoNCl9fcHJhZ21hKHBhY2socHVzaCwgOCkpIGV4dGVybiAiQyIgew0KDQoNCg0KdHlw
ZWRlZiBpbnQgc2lnX2F0b21pY190Ow0KDQp0eXBlZGVmIHZvaWQgKF9fY2RlY2wqIF9jcnRfc2ln
bmFsX3QpKGludCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQqKiBfX2NkZWNs
IF9fcHhjcHRpbmZvcHRycyh2b2lkKTsNCg0KDQoNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBfY3J0X3NpZ25hbF90IF9fY2RlY2wgc2lnbmFsKCAgaW50IF9TaWduYWwsICAgX2NydF9zaWdu
YWxfdCBfRnVuY3Rpb24pOw0KI2xpbmUgNjQgIkM6XFxQcm9ncmFtIEZpbGVzICh4ODYpXFxXaW5k
b3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQxLjBcXHVjcnRcXHNpZ25hbC5oIg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IF9fY2RlY2wgcmFpc2UoICBpbnQgX1NpZ25hbCk7DQoN
Cg0KDQp9IF9fcHJhZ21hKHBhY2socG9wKSkNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkgDQojbGlu
ZSA3MyAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXFdpbmRvd3MgS2l0c1xcMTBcXGluY2x1ZGVc
XDEwLjAuMTkwNDEuMFxcdWNydFxcc2lnbmFsLmgiDQojbGluZSA1NSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24v
Q29yZUZvdW5kYXRpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY4ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KDQojbGluZSA3MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24v
Q29yZUZvdW5kYXRpb24uaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcVGFyZ2V0Q29uZGl0aW9uYWxzLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcVGFyZ2V0Q29uZGl0aW9uYWxzLmgiDQoNCg0K
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDE4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDI1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NTQgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFj
cm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDUxMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDU1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA1OTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDYzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDczOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgODM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgODc0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDk0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgOTg3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KICANCg0KDQogDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDEwMjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNTUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRp
dGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxMTA0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KICAgICAgDQogICAgICANCiAgICAgIA0K
ICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQog
ICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAg
ICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgIA0KICAgICAgDQogICAgICANCiAg
ICAgIA0KDQogICAgICAgDQogICAgICAgDQogICAgICANCg0KICAgICAgIA0KICAgICAgICAgDQog
ICAgICANCg0KI2xpbmUgMTEzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCiAgICAgDQogICAgICAN
CiAgICAgICAgIA0KICAgICAgICNsaW5lIDExNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQogICAg
IA0KICAgICAgICAgICANCiAgICAgICAjbGluZSAxMTQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0K
ICAgICANCiAgICAgICANCiAgICAgICAgDQogICAgIA0KICAgICAgDQoNCiAgICAgICAgDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMjUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxNTM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTkzICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNjEwICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25h
bE1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNjI3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b25kaXRpb25hbE1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxNjQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNjc5ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b25kaXRpb25hbE1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMTY4NiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxN
YWNyb3MuaCINCiAgICANCiNsaW5lIDE2ODggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTc0MiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29u
ZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCiNsaW5lIDE3NDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgi
DQoNCg0KDQoNCg0KI2xpbmUgMTc1MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KI2xpbmUgMTc1
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KI2xpbmUgMTc1NiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3Mu
aCINCg0KDQoNCg0KI2xpbmUgMTc2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTc4NCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxN
YWNyb3MuaCINCg0KDQoNCiNsaW5lIDE3ODggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTgwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTgyMCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNy
b3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxODUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0KICANCiAgDQogICANCiAg
DQogICAgDQogDQogICANCiAgDQogICANCiANCiAgDQogICANCiNsaW5lIDE4NjMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlv
bmFsTWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTkwOCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQojbGluZSAxOTExICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5o
Ig0KDQoNCg0KI2xpbmUgMTkxNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCiNsaW5lIDE5
MTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE5MjcgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRp
dGlvbmFsTWFjcm9zLmgiDQoNCg0KDQojbGluZSAxOTMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb25kaXRpb25hbE1hY3Jvcy5oIg0K
DQoNCg0KI2xpbmUgMTkzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcQ29uZGl0aW9uYWxNYWNyb3MuaCINCg0KI2xpbmUgMTkzNyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29u
ZGl0aW9uYWxNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIw
MTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCg0KDQoNCiNsaW5lIDIwMTUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFs
TWFjcm9zLmgiDQoNCg0KDQoNCiNsaW5lIDIwMjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvbmRpdGlvbmFsTWFjcm9zLmgiDQoNCiNs
aW5lIDQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxUYXJnZXRDb25kaXRpb25hbHMuaCINCg0KI2xpbmUgNDggIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXFRhcmdldENvbmRpdGlv
bmFscy5oIg0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoNCg0KI2xpbmUg
NDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoNCg0KI2xpbmUgNTEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGQmFzZS5oIg0KDQoNCg0KI2xpbmUgNTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0K
DQoNCg0KDQojbGluZSA2MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCiNsaW5lIDYyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDYzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2Uu
aCINCg0KDQoNCiNsaW5lIDY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCiNsaW5l
IDcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCiNsaW5lIDc1ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRkJhc2UuaCINCg0KDQoNCiNsaW5lIDc5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk4ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRkJhc2UuaCINCg0KDQoNCiNsaW5lIDEwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0KDQoNCg0KDQogICAgICAgIA0K
DQojbGluZSAxMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQojbGluZSAxMjkgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJp
bGl0eU1hY3Jvcy5oIg0KICAgICAgICAgICAgDQogICAgICAgICNsaW5lIDEzMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmls
aXR5TWFjcm9zLmgiDQogICAgI2xpbmUgMTMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCiNsaW5l
IDEzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0KICAgIA0KDQojbGluZSAxNDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgICAgICANCiAgICAjbGluZSAxNDMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJp
bGl0eU1hY3Jvcy5oIg0KI2xpbmUgMTQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0K
DQoNCiNsaW5lIDE1MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KI2xpbmUgMTU0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFp
bGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDE2MSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFj
cm9zLmgiDQoNCiNsaW5lIDE2MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSAx
NjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMTcyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFi
aWxpdHlNYWNyb3MuaCINCiAgICANCiNsaW5lIDE3NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoN
Cg0KDQoNCg0KDQojbGluZSAxODEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUg
MTgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjIxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxB
dmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KI2xpbmUgMjIzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCIN
CiAgICANCiNsaW5lIDIyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0K
ICAgIA0KDQoNCiNsaW5lIDIzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KICAgIA0KDQoNCiNsaW5lIDI0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0K
DQoNCiAgICANCg0KDQojbGluZSAyNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI3NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAg
DQoNCg0KI2xpbmUgMjc5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDI4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSAyOTEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWls
YWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxp
dHlNYWNyb3MuaCINCiAgICANCiNsaW5lIDMwMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAzMTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xp
bmUgMzE1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMjQg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUgMzI2ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNy
b3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMzOSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFj
cm9zLmgiDQogICAgDQoNCg0KI2xpbmUgMzQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDM1MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGlu
ZSAzNTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzY1
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCiAgICANCiNsaW5lIDM2NyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFj
cm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzNzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5o
Ig0KICAgIA0KI2xpbmUgMzc5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDM4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSAzOTEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2
YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQwMCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmls
aXR5TWFjcm9zLmgiDQogICAgDQojbGluZSA0MDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0K
ICAgIA0KDQoNCiNsaW5lIDQyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA0MzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUgNDMyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxB
dmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ0MiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxh
YmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSA0NDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDU0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCiAgICAN
CiNsaW5lIDQ1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA0NjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUgNDY4ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxp
dHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ3OCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFj
cm9zLmgiDQogICAgDQojbGluZSA0ODAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDQ4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSA0OTEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTA0
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCiAgICANCg0KDQojbGluZSA1MDggIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0
eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTE4ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNy
b3MuaCINCiAgICANCiNsaW5lIDUyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA1MzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUgNTMy
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU0MiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZh
aWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSA1NDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTU0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCiAg
ICANCiNsaW5lIDU1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA1NjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUgNTY4ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFi
aWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU3OCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5
TWFjcm9zLmgiDQogICAgDQojbGluZSA1ODAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDU4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSA1
OTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA2MDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KDQoNCiNsaW5lIDYwOSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxh
YmlsaXR5TWFjcm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2MTkgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0
eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUgNjIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDYzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGlu
ZSA2MzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjQz
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCiAgICANCiNsaW5lIDY0NSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFj
cm9zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5o
Ig0KICAgIA0KI2xpbmUgNjU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDY2NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQogICAgDQojbGluZSA2NjkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2
YWlsYWJpbGl0eU1hY3Jvcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjc5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFi
aWxpdHlNYWNyb3MuaCINCiAgICANCiNsaW5lIDY4MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5TWFjcm9zLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA2OTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0K
I2xpbmUgNjkzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3
MDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXEF2YWlsYWJpbGl0eU1hY3Jvcy5oIg0KICAgIA0KI2xpbmUgNzA0ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlN
YWNyb3MuaCINCg0KI2xpbmUgNzA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlNYWNyb3MuaCINCg0KDQojbGluZSAx
MzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5LmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KIA0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWls
YWJpbGl0eUludGVybmFsLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiAgICANCg0KDQoNCiNsaW5lIDU4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFpbGFiaWxpdHlJbnRlcm5hbC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyODIg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XEF2YWlsYWJpbGl0eUludGVybmFsLmgiDQoNCiNsaW5lIDI4NCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5SW50ZXJu
YWwuaCINCiNsaW5lIDEzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcQXZhaWxhYmlsaXR5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eS5oIg0KICAgIA0KICAgIA0KI2xpbmUgMTUzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxBdmFp
bGFiaWxpdHkuaCINCg0KDQojbGluZSAxNTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXEF2YWlsYWJpbGl0eS5oIg0KI2xpbmUgMTM5ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDE0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQ5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCIN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxNzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoNCiNsaW5lIDE3NyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KICANCg0KI2xpbmUgMTg1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCiAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAg
ICAgICAgIEJvb2xlYW47DQogICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgICAgICAgICBVSW50
ODsNCiAgICB0eXBlZGVmIHNpZ25lZCBjaGFyICAgICAgICAgICAgIFNJbnQ4Ow0KICAgIHR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgICAgICAgICAgVUludDE2Ow0KICAgIHR5cGVkZWYgc2lnbmVkIHNo
b3J0ICAgICAgICAgICAgU0ludDE2Ow0KICAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgICAg
ICAgVUludDMyOw0KICAgIHR5cGVkZWYgc2lnbmVkIGludCAgICAgICAgICAgICAgU0ludDMyOw0K
ICAgIHR5cGVkZWYgdWludDY0X3QJCSAgICBVSW50NjQ7DQogICAgdHlwZWRlZiBpbnQ2NF90CQkg
ICAgU0ludDY0Ow0KICAgIHR5cGVkZWYgU0ludDMyICAgICAgICAgICAgICAgICAgT1NTdGF0dXM7
DQojbGluZSAxOTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KICAgIHR5cGVkZWYgZmxvYXQg
ICAgICAgICAgICAgICAgICAgRmxvYXQzMjsNCiAgICB0eXBlZGVmIGRvdWJsZSAgICAgICAgICAg
ICAgICAgIEZsb2F0NjQ7DQogICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICAgICAgICBVbmlD
aGFyOw0KICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICAgVW5pQ2hhckNvdW50Ow0K
ICAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAqICAgICAgICAgU3RyaW5nUHRyOw0KICAgIHR5cGVk
ZWYgY29uc3QgdW5zaWduZWQgY2hhciAqICAgQ29uc3RTdHJpbmdQdHI7DQogICAgdHlwZWRlZiB1
bnNpZ25lZCBjaGFyICAgICAgICAgICBTdHIyNTVbMjU2XTsNCiAgICB0eXBlZGVmIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKiAgIENvbnN0U3RyMjU1UGFyYW07DQogICAgdHlwZWRlZiBTSW50MTYgICAg
ICAgICAgICAgICAgICBPU0VycjsNCiAgICB0eXBlZGVmIFNJbnQxNiAgICAgICAgICAgICAgICAg
IFJlZ2lvbkNvZGU7DQogICAgdHlwZWRlZiBTSW50MTYgICAgICAgICAgICAgICAgICBMYW5nQ29k
ZTsNCiAgICB0eXBlZGVmIFNJbnQxNiAgICAgICAgICAgICAgICAgIFNjcmlwdENvZGU7DQogICAg
dHlwZWRlZiBVSW50MzIgICAgICAgICAgICAgICAgICBGb3VyQ2hhckNvZGU7DQogICAgdHlwZWRl
ZiBGb3VyQ2hhckNvZGUgICAgICAgICAgICBPU1R5cGU7DQogICAgdHlwZWRlZiBVSW50OCAgICAg
ICAgICAgICAgICAgICBCeXRlOw0KICAgIHR5cGVkZWYgU0ludDggICAgICAgICAgICAgICAgICAg
U2lnbmVkQnl0ZTsNCiNsaW5lIDIxNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCiAgICB0
eXBlZGVmIFVJbnQzMiAgICAgICAgICAgICAgICAgIFVURjMyQ2hhcjsNCiAgICB0eXBlZGVmIFVJ
bnQxNiAgICAgICAgICAgICAgICAgIFVURjE2Q2hhcjsNCiAgICB0eXBlZGVmIFVJbnQ4ICAgICAg
ICAgICAgICAgICAgIFVURjhDaGFyOw0KI2xpbmUgMjIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2Uu
aCINCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0K
I2xpbmUgMjMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCiNsaW5lIDIz
OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCiNsaW5lIDI0MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24v
Q0ZCYXNlLmgiDQoNCg0KDQojbGluZSAyNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xp
bmUgMjQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCiNsaW5lIDI0OSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCYXNlLmgiDQoNCmV4dGVybiAiQyIgew0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMjYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCiNsaW5lIDI2NSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQojbGluZSAyNjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFz
ZS5oIg0KDQoNCiAgICANCg0KI2xpbmUgMjc0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0K
I2xpbmUgMjc2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCgkNCiAgICANCg0KDQoNCiNsaW5l
IDI4MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQojbGluZSAyODMgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGQmFzZS5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMjkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2Uu
aCINCg0KI2xpbmUgMjkyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDI5MyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29y
ZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQojbGluZSAzMDAgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGQmFzZS5oIg0KDQojbGluZSAzMDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xp
bmUgMzAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQojbGluZSAzMDkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENv
cmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQojbGluZSAzMTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFz
ZS5oIg0KI2xpbmUgMzEyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQojbGlu
ZSAzMTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQojbGluZSAzMjAgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGQmFzZS5oIg0KI2xpbmUgMzIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoN
Cg0KI2xpbmUgMzI2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KI2xpbmUgMzI4ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KI2xpbmUgMzMzICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9D
RkJhc2UuaCINCg0KI2xpbmUgMzM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDMz
NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCiNsaW5lIDM0MSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5k
YXRpb24vQ0ZCYXNlLmgiDQoNCiNsaW5lIDM0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoj
bGluZSAzNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGRvdWJsZSBrQ0ZDb3JlRm91bmRhdGlvblZlcnNpb25OdW1iZXI7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQxNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJh
c2UuaCINCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBDRlR5cGVJRDsNCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIENGT3B0aW9uRmxhZ3M7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyBDRkhhc2hDb2RlOw0KdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIENGSW5kZXg7DQoNCg0K
DQoNCg0KI2xpbmUgNDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQp0eXBlZGVmIGNv
bnN0IHZvaWQgKiBDRlR5cGVSZWY7DQoNCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcg
KiBDRlN0cmluZ1JlZjsNCnR5cGVkZWYgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRk11dGFibGVTdHJp
bmdSZWY7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIENGVHlwZVJlZiBDRlByb3BlcnR5TGlzdFJlZjsN
Cg0KDQp0eXBlZGVmIENGSW5kZXggQ0ZDb21wYXJpc29uUmVzdWx0OyBlbnVtIHsNCiAgICBrQ0ZD
b21wYXJlTGVzc1RoYW4gPSAtMUwsDQogICAga0NGQ29tcGFyZUVxdWFsVG8gPSAwLA0KICAgIGtD
RkNvbXBhcmVHcmVhdGVyVGhhbiA9IDENCn07DQoNCg0KdHlwZWRlZiBDRkNvbXBhcmlzb25SZXN1
bHQgKCpDRkNvbXBhcmF0b3JGdW5jdGlvbikoY29uc3Qgdm9pZCAqdmFsMSwgY29uc3Qgdm9pZCAq
dmFsMiwgdm9pZCAqY29udGV4dCk7DQoNCg0KDQplbnVtIHsNCiAgICBrQ0ZOb3RGb3VuZCA9IC0x
DQp9Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIENGSW5kZXggbG9jYXRpb247DQogICAg
Q0ZJbmRleCBsZW5ndGg7DQp9IENGUmFuZ2U7DQoNCg0Kc3RhdGljIGlubGluZSBDRlJhbmdlIENG
UmFuZ2VNYWtlKENGSW5kZXggbG9jLCBDRkluZGV4IGxlbikgew0KICAgIENGUmFuZ2UgcmFuZ2U7
DQogICAgcmFuZ2UubG9jYXRpb24gPSBsb2M7DQogICAgcmFuZ2UubGVuZ3RoID0gbGVuOw0KICAg
IHJldHVybiByYW5nZTsNCn0NCg0KDQojbGluZSA0ODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5o
Ig0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlJhbmdlIF9fQ0ZSYW5n
ZU1ha2UoQ0ZJbmRleCBsb2MsIENGSW5kZXggbGVuKTsNCg0KDQoNCg0KdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRk51bGwgKiBDRk51bGxSZWY7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpDRlR5cGVJRCBDRk51bGxHZXRUeXBlSUQodm9pZCk7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRk51bGxSZWYga0NGTnVsbDsJDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkFsbG9jYXRvciAqIENGQWxsb2Nh
dG9yUmVmOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRkFs
bG9jYXRvclJlZiBrQ0ZBbGxvY2F0b3JEZWZhdWx0Ow0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpjb25zdCBDRkFsbG9jYXRvclJlZiBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZh
dWx0Ow0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29u
c3QgQ0ZBbGxvY2F0b3JSZWYga0NGQWxsb2NhdG9yTWFsbG9jOw0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRkFsbG9jYXRvclJlZiBrQ0ZBbGxvY2F0
b3JNYWxsb2Nab25lOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpjb25zdCBDRkFsbG9jYXRvclJlZiBrQ0ZBbGxvY2F0b3JOdWxsOw0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRkFsbG9jYXRvclJlZiBrQ0ZBbGxv
Y2F0b3JVc2VDb250ZXh0Ow0KDQp0eXBlZGVmIGNvbnN0IHZvaWQgKgkoKkNGQWxsb2NhdG9yUmV0
YWluQ2FsbEJhY2spKGNvbnN0IHZvaWQgKmluZm8pOw0KdHlwZWRlZiB2b2lkCQkoKkNGQWxsb2Nh
dG9yUmVsZWFzZUNhbGxCYWNrKShjb25zdCB2b2lkICppbmZvKTsNCnR5cGVkZWYgQ0ZTdHJpbmdS
ZWYJKCpDRkFsbG9jYXRvckNvcHlEZXNjcmlwdGlvbkNhbGxCYWNrKShjb25zdCB2b2lkICppbmZv
KTsNCnR5cGVkZWYgdm9pZCAqCQkoKkNGQWxsb2NhdG9yQWxsb2NhdGVDYWxsQmFjaykoQ0ZJbmRl
eCBhbGxvY1NpemUsIENGT3B0aW9uRmxhZ3MgaGludCwgdm9pZCAqaW5mbyk7DQp0eXBlZGVmIHZv
aWQgKgkJKCpDRkFsbG9jYXRvclJlYWxsb2NhdGVDYWxsQmFjaykodm9pZCAqcHRyLCBDRkluZGV4
IG5ld3NpemUsIENGT3B0aW9uRmxhZ3MgaGludCwgdm9pZCAqaW5mbyk7DQp0eXBlZGVmIHZvaWQJ
CSgqQ0ZBbGxvY2F0b3JEZWFsbG9jYXRlQ2FsbEJhY2spKHZvaWQgKnB0ciwgdm9pZCAqaW5mbyk7
DQp0eXBlZGVmIENGSW5kZXgJCSgqQ0ZBbGxvY2F0b3JQcmVmZXJyZWRTaXplQ2FsbEJhY2spKENG
SW5kZXggc2l6ZSwgQ0ZPcHRpb25GbGFncyBoaW50LCB2b2lkICppbmZvKTsNCnR5cGVkZWYgc3Ry
dWN0IHsNCiAgICBDRkluZGV4CQkJCXZlcnNpb247DQogICAgdm9pZCAqCQkJCWluZm87DQogICAg
Q0ZBbGxvY2F0b3JSZXRhaW5DYWxsQmFjawkJcmV0YWluOw0KICAgIENGQWxsb2NhdG9yUmVsZWFz
ZUNhbGxCYWNrCQlyZWxlYXNlOyAgICAgICAgDQogICAgQ0ZBbGxvY2F0b3JDb3B5RGVzY3JpcHRp
b25DYWxsQmFjawljb3B5RGVzY3JpcHRpb247DQogICAgQ0ZBbGxvY2F0b3JBbGxvY2F0ZUNhbGxC
YWNrCQlhbGxvY2F0ZTsNCiAgICBDRkFsbG9jYXRvclJlYWxsb2NhdGVDYWxsQmFjawlyZWFsbG9j
YXRlOw0KICAgIENGQWxsb2NhdG9yRGVhbGxvY2F0ZUNhbGxCYWNrCWRlYWxsb2NhdGU7DQogICAg
Q0ZBbGxvY2F0b3JQcmVmZXJyZWRTaXplQ2FsbEJhY2sJcHJlZmVycmVkU2l6ZTsNCn0gQ0ZBbGxv
Y2F0b3JDb250ZXh0Ow0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZUeXBl
SUQJQ0ZBbGxvY2F0b3JHZXRUeXBlSUQodm9pZCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
dm9pZCBDRkFsbG9jYXRvclNldERlZmF1bHQoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yKTsNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQWxsb2NhdG9yUmVmIENGQWxsb2Nh
dG9yR2V0RGVmYXVsdCh2b2lkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGQWxsb2NhdG9yUmVmIENGQWxsb2NhdG9yQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ0ZBbGxvY2F0b3JDb250ZXh0ICpjb250ZXh0KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnZvaWQgKkNGQWxsb2NhdG9yQWxsb2NhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLCBDRkluZGV4IHNpemUsIENGT3B0aW9uRmxhZ3MgaGludCk7DQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkICpDRkFsbG9jYXRvclJlYWxsb2NhdGUoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCB2b2lkICpwdHIsIENGSW5kZXggbmV3c2l6ZSwgQ0ZPcHRpb25G
bGFncyBoaW50KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZB
bGxvY2F0b3JEZWFsbG9jYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgdm9pZCAqcHRyKTsN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGSW5kZXggQ0ZBbGxvY2F0b3JH
ZXRQcmVmZXJyZWRTaXplRm9yU2l6ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXgg
c2l6ZSwgQ0ZPcHRpb25GbGFncyBoaW50KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQgQ0ZBbGxvY2F0b3JHZXRDb250ZXh0KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ0ZBbGxvY2F0b3JDb250ZXh0ICpjb250ZXh0KTsNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGVHlwZUlEIENGR2V0VHlwZUlEKENGVHlwZVJlZiBjZik7DQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRkNvcHlUeXBl
SUREZXNjcmlwdGlvbihDRlR5cGVJRCB0eXBlX2lkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGVHlwZVJlZiBDRlJldGFpbihDRlR5cGVSZWYgY2YpOw0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlJlbGVhc2UoQ0ZUeXBlUmVmIGNmKTsN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGSW5kZXggQ0ZHZXRSZXRhaW5D
b3VudChDRlR5cGVSZWYgY2YpOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpDRlR5cGVSZWYgQ0ZNYWtlQ29sbGVjdGFibGUoQ0ZUeXBlUmVmIGNmKSA7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGRXF1YWwoQ0ZUeXBlUmVmIGNmMSwg
Q0ZUeXBlUmVmIGNmMik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkhh
c2hDb2RlIENGSGFzaChDRlR5cGVSZWYgY2YpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZDb3B5RGVzY3JpcHRpb24oQ0ZUeXBlUmVmIGNmKTsNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQWxsb2NhdG9yUmVmIENGR2V0QWxs
b2NhdG9yKENGVHlwZVJlZiBjZik7DQoNCn0NCg0KI2xpbmUgNjYxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9D
RkJhc2UuaCINCiNsaW5lIDcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZBcnJheS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgODEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGQXJyYXkuaCINCg0KDQpleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGNvbnN0IHZvaWQgKgkoKkNGQXJy
YXlSZXRhaW5DYWxsQmFjaykoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCB2b2lkICp2
YWx1ZSk7DQp0eXBlZGVmIHZvaWQJCSgqQ0ZBcnJheVJlbGVhc2VDYWxsQmFjaykoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBjb25zdCB2b2lkICp2YWx1ZSk7DQp0eXBlZGVmIENGU3RyaW5nUmVm
CSgqQ0ZBcnJheUNvcHlEZXNjcmlwdGlvbkNhbGxCYWNrKShjb25zdCB2b2lkICp2YWx1ZSk7DQp0
eXBlZGVmIEJvb2xlYW4JCSgqQ0ZBcnJheUVxdWFsQ2FsbEJhY2spKGNvbnN0IHZvaWQgKnZhbHVl
MSwgY29uc3Qgdm9pZCAqdmFsdWUyKTsNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBDRkluZGV4CQkJ
CXZlcnNpb247DQogICAgQ0ZBcnJheVJldGFpbkNhbGxCYWNrCQlyZXRhaW47DQogICAgQ0ZBcnJh
eVJlbGVhc2VDYWxsQmFjawkJcmVsZWFzZTsNCiAgICBDRkFycmF5Q29weURlc2NyaXB0aW9uQ2Fs
bEJhY2sJY29weURlc2NyaXB0aW9uOw0KICAgIENGQXJyYXlFcXVhbENhbGxCYWNrCQllcXVhbDsN
Cn0gQ0ZBcnJheUNhbGxCYWNrczsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpjb25zdCBDRkFycmF5Q2FsbEJhY2tzIGtDRlR5cGVBcnJheUNhbGxCYWNrczsN
Cg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdm9pZCAoKkNGQXJyYXlBcHBsaWVyRnVuY3Rpb24p
KGNvbnN0IHZvaWQgKnZhbHVlLCB2b2lkICpjb250ZXh0KTsNCg0KDQoNCg0KDQp0eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0NGQXJyYXkgKiBDRkFycmF5UmVmOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9fQ0ZBcnJheSAqIENGTXV0YWJsZUFycmF5UmVmOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRkFycmF5R2V0VHlwZUlEKHZvaWQpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZBcnJheUNyZWF0ZShDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIGNvbnN0IHZvaWQgKip2YWx1ZXMsIENGSW5kZXggbnVtVmFsdWVzLCBj
b25zdCBDRkFycmF5Q2FsbEJhY2tzICpjYWxsQmFja3MpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZBcnJh
eVJlZiBDRkFycmF5Q3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGQXJyYXlS
ZWYgdGhlQXJyYXkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGTXV0YWJsZUFycmF5UmVmIENGQXJyYXlDcmVhdGVNdXRhYmxl
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZJbmRleCBjYXBhY2l0eSwgY29uc3QgQ0ZBcnJh
eUNhbGxCYWNrcyAqY2FsbEJhY2tzKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGTXV0YWJsZUFycmF5UmVmIENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIENGQXJyYXlSZWYgdGhlQXJyYXkpOw0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkluZGV4IENG
QXJyYXlHZXRDb3VudChDRkFycmF5UmVmIHRoZUFycmF5KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
RkluZGV4IENGQXJyYXlHZXRDb3VudE9mVmFsdWUoQ0ZBcnJheVJlZiB0aGVBcnJheSwgQ0ZSYW5n
ZSByYW5nZSwgY29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4g
Q0ZBcnJheUNvbnRhaW5zVmFsdWUoQ0ZBcnJheVJlZiB0aGVBcnJheSwgQ0ZSYW5nZSByYW5nZSwg
Y29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCmNvbnN0IHZvaWQgKkNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
Q0ZBcnJheVJlZiB0aGVBcnJheSwgQ0ZJbmRleCBpZHgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBD
RkFycmF5R2V0VmFsdWVzKENGQXJyYXlSZWYgdGhlQXJyYXksIENGUmFuZ2UgcmFuZ2UsIGNvbnN0
IHZvaWQgKip2YWx1ZXMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkFycmF5
QXBwbHlGdW5jdGlvbihDRkFycmF5UmVmIHRoZUFycmF5LCBDRlJhbmdlIHJhbmdlLCBDRkFycmF5
QXBwbGllckZ1bmN0aW9uIGFwcGxpZXIsIHZvaWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpDRkluZGV4IENGQXJyYXlHZXRGaXJzdEluZGV4T2ZWYWx1ZShDRkFycmF5UmVmIHRo
ZUFycmF5LCBDRlJhbmdlIHJhbmdlLCBjb25zdCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGSW5kZXggQ0ZBcnJheUdldExhc3RJbmRleE9mVmFsdWUoQ0ZBcnJheVJlZiB0
aGVBcnJheSwgQ0ZSYW5nZSByYW5nZSwgY29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRkFycmF5QlNl
YXJjaFZhbHVlcyhDRkFycmF5UmVmIHRoZUFycmF5LCBDRlJhbmdlIHJhbmdlLCBjb25zdCB2b2lk
ICp2YWx1ZSwgQ0ZDb21wYXJhdG9yRnVuY3Rpb24gY29tcGFyYXRvciwgdm9pZCAqY29udGV4dCk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQgQ0ZBcnJheUFwcGVuZFZhbHVlKENGTXV0YWJsZUFycmF5UmVmIHRoZUFycmF5
LCBjb25zdCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGQXJyYXlJbnNlcnRW
YWx1ZUF0SW5kZXgoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXksIENGSW5kZXggaWR4LCBjb25z
dCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGQXJyYXlTZXRWYWx1ZUF0SW5k
ZXgoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXksIENGSW5kZXggaWR4LCBjb25zdCB2b2lkICp2
YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0Kdm9pZCBDRkFycmF5UmVtb3ZlVmFsdWVBdEluZGV4KENGTXV0YWJsZUFycmF5UmVm
IHRoZUFycmF5LCBDRkluZGV4IGlkeCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhDRk11dGFibGVB
cnJheVJlZiB0aGVBcnJheSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCnZvaWQgQ0ZBcnJheVJlcGxhY2VWYWx1ZXMoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXks
IENGUmFuZ2UgcmFuZ2UsIGNvbnN0IHZvaWQgKipuZXdWYWx1ZXMsIENGSW5kZXggbmV3Q291bnQp
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0Kdm9pZCBDRkFycmF5RXhjaGFuZ2VWYWx1ZXNBdEluZGljZXMoQ0ZNdXRhYmxl
QXJyYXlSZWYgdGhlQXJyYXksIENGSW5kZXggaWR4MSwgQ0ZJbmRleCBpZHgyKTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZBcnJheVNvcnRWYWx1ZXMoQ0ZNdXRhYmxl
QXJyYXlSZWYgdGhlQXJyYXksIENGUmFuZ2UgcmFuZ2UsIENGQ29tcGFyYXRvckZ1bmN0aW9uIGNv
bXBhcmF0b3IsIHZvaWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9p
ZCBDRkFycmF5QXBwZW5kQXJyYXkoQ0ZNdXRhYmxlQXJyYXlSZWYgdGhlQXJyYXksIENGQXJyYXlS
ZWYgb3RoZXJBcnJheSwgQ0ZSYW5nZSBvdGhlclJhbmdlKTsNCg0KfQ0KDQoNCiNsaW5lIDcwNiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZBcnJheS5oIg0KDQojbGluZSA3MyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFnLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDY2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQojbGluZSA0MiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5k
YXRpb24vQ0ZCYWcuaCINCg0KDQpleHRlcm4gIkMiIHsNCg0KdHlwZWRlZiBjb25zdCB2b2lkICoJ
KCpDRkJhZ1JldGFpbkNhbGxCYWNrKShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHZv
aWQgKnZhbHVlKTsNCnR5cGVkZWYgdm9pZAkJKCpDRkJhZ1JlbGVhc2VDYWxsQmFjaykoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCB2b2lkICp2YWx1ZSk7DQp0eXBlZGVmIENGU3RyaW5n
UmVmCSgqQ0ZCYWdDb3B5RGVzY3JpcHRpb25DYWxsQmFjaykoY29uc3Qgdm9pZCAqdmFsdWUpOw0K
dHlwZWRlZiBCb29sZWFuCQkoKkNGQmFnRXF1YWxDYWxsQmFjaykoY29uc3Qgdm9pZCAqdmFsdWUx
LCBjb25zdCB2b2lkICp2YWx1ZTIpOw0KdHlwZWRlZiBDRkhhc2hDb2RlCSgqQ0ZCYWdIYXNoQ2Fs
bEJhY2spKGNvbnN0IHZvaWQgKnZhbHVlKTsNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBDRkluZGV4
CQkJCXZlcnNpb247DQogICAgQ0ZCYWdSZXRhaW5DYWxsQmFjawkJCXJldGFpbjsNCiAgICBDRkJh
Z1JlbGVhc2VDYWxsQmFjawkJcmVsZWFzZTsNCiAgICBDRkJhZ0NvcHlEZXNjcmlwdGlvbkNhbGxC
YWNrCWNvcHlEZXNjcmlwdGlvbjsNCiAgICBDRkJhZ0VxdWFsQ2FsbEJhY2sJCQllcXVhbDsNCiAg
ICBDRkJhZ0hhc2hDYWxsQmFjawkJCWhhc2g7DQp9IENGQmFnQ2FsbEJhY2tzOw0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZCYWdDYWxsQmFja3Mga0NGVHlwZUJh
Z0NhbGxCYWNrczsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRkJh
Z0NhbGxCYWNrcyBrQ0ZDb3B5U3RyaW5nQmFnQ2FsbEJhY2tzOw0KDQp0eXBlZGVmIHZvaWQgKCpD
RkJhZ0FwcGxpZXJGdW5jdGlvbikoY29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpOw0K
DQp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGQmFnICogQ0ZCYWdSZWY7DQp0eXBlZGVmIHN0cnVj
dCBfX0NGQmFnICogQ0ZNdXRhYmxlQmFnUmVmOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQ0ZUeXBlSUQgQ0ZCYWdHZXRUeXBlSUQodm9pZCk7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkJhZ1JlZiBDRkJhZ0NyZWF0ZShDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IsIGNvbnN0IHZvaWQgKip2YWx1ZXMsIENGSW5kZXggbnVtVmFsdWVzLCBjb25zdCBD
RkJhZ0NhbGxCYWNrcyAqY2FsbEJhY2tzKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGQmFnUmVmIENGQmFnQ3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IENGQmFnUmVmIHRoZUJhZyk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
Rk11dGFibGVCYWdSZWYgQ0ZCYWdDcmVhdGVNdXRhYmxlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ0ZJbmRleCBjYXBhY2l0eSwgY29uc3QgQ0ZCYWdDYWxsQmFja3MgKmNhbGxCYWNrcyk7DQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRk11dGFibGVCYWdSZWYgQ0ZCYWdD
cmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNp
dHksIENGQmFnUmVmIHRoZUJhZyk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpDRkluZGV4IENGQmFnR2V0Q291bnQoQ0ZCYWdSZWYgdGhlQmFnKTsNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGSW5kZXggQ0ZCYWdHZXRDb3VudE9mVmFsdWUoQ0ZCYWdS
ZWYgdGhlQmFnLCBjb25zdCB2b2lkICp2YWx1ZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpCb29sZWFuIENGQmFnQ29udGFpbnNWYWx1ZShDRkJhZ1JlZiB0aGVCYWcsIGNv
bnN0IHZvaWQgKnZhbHVlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNv
bnN0IHZvaWQgKkNGQmFnR2V0VmFsdWUoQ0ZCYWdSZWYgdGhlQmFnLCBjb25zdCB2b2lkICp2YWx1
ZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGQmFnR2V0
VmFsdWVJZlByZXNlbnQoQ0ZCYWdSZWYgdGhlQmFnLCBjb25zdCB2b2lkICpjYW5kaWRhdGUsIGNv
bnN0IHZvaWQgKip2YWx1ZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2
b2lkIENGQmFnR2V0VmFsdWVzKENGQmFnUmVmIHRoZUJhZywgY29uc3Qgdm9pZCAqKnZhbHVlcyk7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGQmFnQXBwbHlGdW5j
dGlvbihDRkJhZ1JlZiB0aGVCYWcsIENGQmFnQXBwbGllckZ1bmN0aW9uIGFwcGxpZXIsIHZvaWQg
KmNvbnRleHQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkJh
Z0FkZFZhbHVlKENGTXV0YWJsZUJhZ1JlZiB0aGVCYWcsIGNvbnN0IHZvaWQgKnZhbHVlKTsNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZCYWdSZXBsYWNlVmFsdWUo
Q0ZNdXRhYmxlQmFnUmVmIHRoZUJhZywgY29uc3Qgdm9pZCAqdmFsdWUpOw0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkJhZ1NldFZhbHVlKENGTXV0YWJsZUJhZ1Jl
ZiB0aGVCYWcsIGNvbnN0IHZvaWQgKnZhbHVlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQgQ0ZCYWdSZW1vdmVWYWx1ZShDRk11dGFibGVCYWdSZWYgdGhlQmFnLCBj
b25zdCB2b2lkICp2YWx1ZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2
b2lkIENGQmFnUmVtb3ZlQWxsVmFsdWVzKENGTXV0YWJsZUJhZ1JlZiB0aGVCYWcpOw0KDQp9DQoN
Cg0KI2xpbmUgMTI1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhZy5oIg0KDQojbGluZSA3NCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmlu
YXJ5SGVhcC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGQmFzZS5oIg0KI2xpbmUgNDggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmluYXJ5SGVhcC5oIg0KDQoN
CmV4dGVybiAiQyIgew0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgQ0ZJbmRleAl2ZXJzaW9uOw0K
ICAgIHZvaWQgKglpbmZvOw0KICAgIGNvbnN0IHZvaWQgKigqcmV0YWluKShjb25zdCB2b2lkICpp
bmZvKTsNCiAgICB2b2lkCSgqcmVsZWFzZSkoY29uc3Qgdm9pZCAqaW5mbyk7DQogICAgQ0ZTdHJp
bmdSZWYJKCpjb3B5RGVzY3JpcHRpb24pKGNvbnN0IHZvaWQgKmluZm8pOw0KfSBDRkJpbmFyeUhl
YXBDb21wYXJlQ29udGV4dDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBDRkluZGV4CXZlcnNpb247DQogICAgY29u
c3Qgdm9pZCAqKCpyZXRhaW4pKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3Qgdm9pZCAq
cHRyKTsNCiAgICB2b2lkCSgqcmVsZWFzZSkoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25z
dCB2b2lkICpwdHIpOw0KICAgIENGU3RyaW5nUmVmCSgqY29weURlc2NyaXB0aW9uKShjb25zdCB2
b2lkICpwdHIpOw0KICAgIENGQ29tcGFyaXNvblJlc3VsdAkoKmNvbXBhcmUpKGNvbnN0IHZvaWQg
KnB0cjEsIGNvbnN0IHZvaWQgKnB0cjIsIHZvaWQgKmNvbnRleHQpOw0KfSBDRkJpbmFyeUhlYXBD
YWxsQmFja3M7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGNvbnN0IENGQmluYXJ5SGVhcENhbGxCYWNrcyBrQ0ZTdHJpbmdCaW5hcnlIZWFwQ2FsbEJhY2tz
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiB2b2lkICgqQ0ZCaW5hcnlIZWFwQXBwbGllckZ1
bmN0aW9uKShjb25zdCB2b2lkICp2YWwsIHZvaWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCnR5cGVk
ZWYgc3RydWN0IF9fQ0ZCaW5hcnlIZWFwICogQ0ZCaW5hcnlIZWFwUmVmOw0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVHlwZUlECUNGQmluYXJ5SGVhcEdldFR5
cGVJRCh2b2lkKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQ0ZCaW5hcnlIZWFwUmVmCUNGQmluYXJ5SGVhcENyZWF0ZShDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIGNvbnN0IENGQmluYXJ5SGVh
cENhbGxCYWNrcyAqY2FsbEJhY2tzLCBjb25zdCBDRkJpbmFyeUhlYXBDb21wYXJlQ29udGV4dCAq
Y29tcGFyZUNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRkJpbmFy
eUhlYXBSZWYJQ0ZCaW5hcnlIZWFwQ3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IENGSW5kZXggY2FwYWNpdHksIENGQmluYXJ5SGVhcFJlZiBoZWFwKTsNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRkluZGV4CUNGQmluYXJ5SGVhcEdl
dENvdW50KENGQmluYXJ5SGVhcFJlZiBoZWFwKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRkluZGV4CUNGQmluYXJ5SGVhcEdl
dENvdW50T2ZWYWx1ZShDRkJpbmFyeUhlYXBSZWYgaGVhcCwgY29uc3Qgdm9pZCAqdmFsdWUpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEJvb2xlYW4JQ0ZCaW5hcnlIZWFwQ29udGFpbnNWYWx1ZShDRkJpbmFyeUhlYXBSZWYgaGVh
cCwgY29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCB2b2lkICoJQ0ZCaW5hcnlIZWFwR2V0TWluaW11bShD
RkJpbmFyeUhlYXBSZWYgaGVhcCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJvb2xlYW4JQ0ZCaW5hcnlIZWFwR2V0TWluaW11bUlm
UHJlc2VudChDRkJpbmFyeUhlYXBSZWYgaGVhcCwgY29uc3Qgdm9pZCAqKnZhbHVlKTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkCQlD
RkJpbmFyeUhlYXBHZXRWYWx1ZXMoQ0ZCaW5hcnlIZWFwUmVmIGhlYXAsIGNvbnN0IHZvaWQgKip2
YWx1ZXMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZAkJQ0ZCaW5hcnlIZWFwQXBwbHlGdW5jdGlvbihDRkJp
bmFyeUhlYXBSZWYgaGVhcCwgQ0ZCaW5hcnlIZWFwQXBwbGllckZ1bmN0aW9uIGFwcGxpZXIsIHZv
aWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHZvaWQJCUNGQmluYXJ5SGVhcEFkZFZhbHVlKENGQmluYXJ5SGVhcFJlZiBo
ZWFwLCBjb25zdCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHZvaWQJCUNGQmluYXJ5SGVhcFJlbW92ZU1pbmltdW1WYWx1ZShDRkJp
bmFyeUhlYXBSZWYgaGVhcCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgdm9pZAkJQ0ZCaW5hcnlIZWFwUmVtb3ZlQWxsVmFsdWVzKENGQmluYXJ5SGVh
cFJlZiBoZWFwKTsNCg0KfQ0KDQoNCiNsaW5lIDMyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCaW5hcnlI
ZWFwLmgiDQoNCiNsaW5lIDc1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCaXRWZWN0b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJpdFZl
Y3Rvci5oIg0KDQoNCmV4dGVybiAiQyIgew0KDQp0eXBlZGVmIFVJbnQzMiBDRkJpdDsNCg0KdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkJpdFZlY3RvciAqIENGQml0VmVjdG9yUmVmOw0KdHlwZWRl
ZiBzdHJ1Y3QgX19DRkJpdFZlY3RvciAqIENGTXV0YWJsZUJpdFZlY3RvclJlZjsNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZUeXBlSUQJQ0ZCaXRWZWN0b3JHZXRUeXBlSUQo
dm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGQml0VmVjdG9yUmVm
CUNGQml0VmVjdG9yQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgVUludDgg
KmJ5dGVzLCBDRkluZGV4IG51bUJpdHMpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQ0ZCaXRWZWN0b3JSZWYJQ0ZCaXRWZWN0b3JDcmVhdGVDb3B5KENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgQ0ZCaXRWZWN0b3JSZWYgYnYpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQ0ZNdXRhYmxlQml0VmVjdG9yUmVmCUNGQml0VmVjdG9yQ3JlYXRlTXV0YWJsZShDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHkpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQ0ZNdXRhYmxlQml0VmVjdG9yUmVmCUNGQml0VmVjdG9yQ3JlYXRl
TXV0YWJsZUNvcHkoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkluZGV4IGNhcGFjaXR5LCBD
RkJpdFZlY3RvclJlZiBidik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENG
SW5kZXgJQ0ZCaXRWZWN0b3JHZXRDb3VudChDRkJpdFZlY3RvclJlZiBidik7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRkluZGV4CUNGQml0VmVjdG9yR2V0Q291bnRPZkJpdChD
RkJpdFZlY3RvclJlZiBidiwgQ0ZSYW5nZSByYW5nZSwgQ0ZCaXQgdmFsdWUpOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQm9vbGVhbglDRkJpdFZlY3RvckNvbnRhaW5zQml0KENG
Qml0VmVjdG9yUmVmIGJ2LCBDRlJhbmdlIHJhbmdlLCBDRkJpdCB2YWx1ZSk7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRkJpdAkJQ0ZCaXRWZWN0b3JHZXRCaXRBdEluZGV4KENG
Qml0VmVjdG9yUmVmIGJ2LCBDRkluZGV4IGlkeCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkCQlDRkJpdFZlY3RvckdldEJpdHMoQ0ZCaXRWZWN0b3JSZWYgYnYsIENGUmFu
Z2UgcmFuZ2UsIFVJbnQ4ICpieXRlcyk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBDRkluZGV4CUNGQml0VmVjdG9yR2V0Rmlyc3RJbmRleE9mQml0KENGQml0VmVjdG9yUmVmIGJ2
LCBDRlJhbmdlIHJhbmdlLCBDRkJpdCB2YWx1ZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBDRkluZGV4CUNGQml0VmVjdG9yR2V0TGFzdEluZGV4T2ZCaXQoQ0ZCaXRWZWN0b3JS
ZWYgYnYsIENGUmFuZ2UgcmFuZ2UsIENGQml0IHZhbHVlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZAkJQ0ZCaXRWZWN0b3JTZXRDb3VudChDRk11dGFibGVCaXRWZWN0
b3JSZWYgYnYsIENGSW5kZXggY291bnQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgdm9pZAkJQ0ZCaXRWZWN0b3JGbGlwQml0QXRJbmRleChDRk11dGFibGVCaXRWZWN0b3JSZWYg
YnYsIENGSW5kZXggaWR4KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQJ
CUNGQml0VmVjdG9yRmxpcEJpdHMoQ0ZNdXRhYmxlQml0VmVjdG9yUmVmIGJ2LCBDRlJhbmdlIHJh
bmdlKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQJCUNGQml0VmVjdG9y
U2V0Qml0QXRJbmRleChDRk11dGFibGVCaXRWZWN0b3JSZWYgYnYsIENGSW5kZXggaWR4LCBDRkJp
dCB2YWx1ZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkCQlDRkJpdFZl
Y3RvclNldEJpdHMoQ0ZNdXRhYmxlQml0VmVjdG9yUmVmIGJ2LCBDRlJhbmdlIHJhbmdlLCBDRkJp
dCB2YWx1ZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkCQlDRkJpdFZl
Y3RvclNldEFsbEJpdHMoQ0ZNdXRhYmxlQml0VmVjdG9yUmVmIGJ2LCBDRkJpdCB2YWx1ZSk7DQoN
Cn0NCg0KDQojbGluZSA3NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCaXRWZWN0b3IuaCINCg0KI2xpbmUg
NzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmgiDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRkJ5dGVPcmRlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
QmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCg0KDQoj
bGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCg0KZXh0ZXJuICJDIiB7DQoN
CmVudW0gX19DRkJ5dGVPcmRlciB7DQogICAgQ0ZCeXRlT3JkZXJVbmtub3duLA0KICAgIENGQnl0
ZU9yZGVyTGl0dGxlRW5kaWFuLA0KICAgIENGQnl0ZU9yZGVyQmlnRW5kaWFuDQp9Ow0KdHlwZWRl
ZiBDRkluZGV4IENGQnl0ZU9yZGVyOw0KDQpzdGF0aWMgaW5saW5lIENGQnl0ZU9yZGVyIENGQnl0
ZU9yZGVyR2V0Q3VycmVudCh2b2lkKSB7DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCiAgICByZXR1cm4gQ0ZCeXRlT3JkZXJMaXR0bGVF
bmRpYW47DQoNCg0KDQoNCiNsaW5lIDczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5dGVPcmRlci5oIg0K
I2xpbmUgNzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQp9DQoNCnN0YXRpYyBpbmxp
bmUgdWludDE2X3QgQ0ZTd2FwSW50MTYodWludDE2X3QgYXJnKSB7DQoNCg0KI2xpbmUgODAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENv
cmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQogICAgdWludDE2X3QgcmVzdWx0Ow0KICAgIHJl
c3VsdCA9ICh1aW50MTZfdCkoKChhcmcgPDwgOCkgJiAweEZGMDApIHwgKChhcmcgPj4gOCkgJiAw
eEZGKSk7DQogICAgcmV0dXJuIHJlc3VsdDsNCiNsaW5lIDg0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5
dGVPcmRlci5oIg0KfQ0KDQpzdGF0aWMgaW5saW5lIHVpbnQzMl90IENGU3dhcEludDMyKHVpbnQz
Ml90IGFyZykgew0KDQoNCiNsaW5lIDkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5dGVPcmRlci5oIg0K
ICAgIHVpbnQzMl90IHJlc3VsdDsNCiAgICByZXN1bHQgPSAoKGFyZyAmIDB4RkYpIDw8IDI0KSB8
ICgoYXJnICYgMHhGRjAwKSA8PCA4KSB8ICgoYXJnID4+IDgpICYgMHhGRjAwKSB8ICgoYXJnID4+
IDI0KSAmIDB4RkYpOw0KICAgIHJldHVybiByZXN1bHQ7DQojbGluZSA5NCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGluZSB1aW50NjRfdCBDRlN3YXBJbnQ2
NCh1aW50NjRfdCBhcmcpIHsNCg0KDQojbGluZSAxMDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9y
ZGVyLmgiDQogICAgdW5pb24gQ0ZTd2FwIHsNCiAgICAgICAgdWludDY0X3Qgc3Y7DQogICAgICAg
IHVpbnQzMl90IHVsWzJdOw0KICAgIH0gdG1wLCByZXN1bHQ7DQogICAgdG1wLnN2ID0gYXJnOw0K
ICAgIHJlc3VsdC51bFswXSA9IENGU3dhcEludDMyKHRtcC51bFsxXSk7IA0KICAgIHJlc3VsdC51
bFsxXSA9IENGU3dhcEludDMyKHRtcC51bFswXSk7DQogICAgcmV0dXJuIHJlc3VsdC5zdjsNCiNs
aW5lIDEwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGlu
ZSB1aW50MTZfdCBDRlN3YXBJbnQxNkJpZ1RvSG9zdCh1aW50MTZfdCBhcmcpIHsNCg0KDQojbGlu
ZSAxMTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCiNsaW5lIDExNyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gQ0ZTd2FwSW50MTYoYXJnKTsNCiNs
aW5lIDExOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGlu
ZSB1aW50MzJfdCBDRlN3YXBJbnQzMkJpZ1RvSG9zdCh1aW50MzJfdCBhcmcpIHsNCg0KDQojbGlu
ZSAxMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCiNsaW5lIDEyNyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gQ0ZTd2FwSW50MzIoYXJnKTsNCiNs
aW5lIDEyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGlu
ZSB1aW50NjRfdCBDRlN3YXBJbnQ2NEJpZ1RvSG9zdCh1aW50NjRfdCBhcmcpIHsNCg0KDQojbGlu
ZSAxMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCiNsaW5lIDEzNyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gQ0ZTd2FwSW50NjQoYXJnKTsNCiNs
aW5lIDEzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGlu
ZSB1aW50MTZfdCBDRlN3YXBJbnQxNkhvc3RUb0JpZyh1aW50MTZfdCBhcmcpIHsNCg0KDQojbGlu
ZSAxNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCiNsaW5lIDE0NyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gQ0ZTd2FwSW50MTYoYXJnKTsNCiNs
aW5lIDE0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGlu
ZSB1aW50MzJfdCBDRlN3YXBJbnQzMkhvc3RUb0JpZyh1aW50MzJfdCBhcmcpIHsNCg0KDQojbGlu
ZSAxNTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCiNsaW5lIDE1NyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gQ0ZTd2FwSW50MzIoYXJnKTsNCiNs
aW5lIDE1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGlu
ZSB1aW50NjRfdCBDRlN3YXBJbnQ2NEhvc3RUb0JpZyh1aW50NjRfdCBhcmcpIHsNCg0KDQojbGlu
ZSAxNjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQoNCiNsaW5lIDE2NyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gQ0ZTd2FwSW50NjQoYXJnKTsNCiNs
aW5lIDE2OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0Kc3RhdGljIGlubGlu
ZSB1aW50MTZfdCBDRlN3YXBJbnQxNkxpdHRsZVRvSG9zdCh1aW50MTZfdCBhcmcpIHsNCg0KDQoj
bGluZSAxNzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQogICAgcmV0dXJuIGFyZzsN
Cg0KDQojbGluZSAxNzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQp9DQoNCnN0YXRp
YyBpbmxpbmUgdWludDMyX3QgQ0ZTd2FwSW50MzJMaXR0bGVUb0hvc3QodWludDMyX3QgYXJnKSB7
DQoNCg0KI2xpbmUgMTg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5dGVPcmRlci5oIg0KICAgIHJldHVy
biBhcmc7DQoNCg0KI2xpbmUgMTg5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5dGVPcmRlci5oIg0KfQ0K
DQpzdGF0aWMgaW5saW5lIHVpbnQ2NF90IENGU3dhcEludDY0TGl0dGxlVG9Ib3N0KHVpbnQ2NF90
IGFyZykgew0KDQoNCiNsaW5lIDE5NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAg
ICByZXR1cm4gYXJnOw0KDQoNCiNsaW5lIDE5OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIu
aCINCn0NCg0Kc3RhdGljIGlubGluZSB1aW50MTZfdCBDRlN3YXBJbnQxNkhvc3RUb0xpdHRsZSh1
aW50MTZfdCBhcmcpIHsNCg0KDQojbGluZSAyMDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVy
LmgiDQogICAgcmV0dXJuIGFyZzsNCg0KDQojbGluZSAyMDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0
ZU9yZGVyLmgiDQp9DQoNCnN0YXRpYyBpbmxpbmUgdWludDMyX3QgQ0ZTd2FwSW50MzJIb3N0VG9M
aXR0bGUodWludDMyX3QgYXJnKSB7DQoNCg0KI2xpbmUgMjE1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5
dGVPcmRlci5oIg0KICAgIHJldHVybiBhcmc7DQoNCg0KI2xpbmUgMjE5ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlv
bi9DRkJ5dGVPcmRlci5oIg0KfQ0KDQpzdGF0aWMgaW5saW5lIHVpbnQ2NF90IENGU3dhcEludDY0
SG9zdFRvTGl0dGxlKHVpbnQ2NF90IGFyZykgew0KDQoNCiNsaW5lIDIyNSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gYXJnOw0KDQoNCiNsaW5lIDIyOSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCn0NCg0KdHlwZWRlZiBzdHJ1Y3Qge3VpbnQzMl90IHY7
fSBDRlN3YXBwZWRGbG9hdDMyOw0KdHlwZWRlZiBzdHJ1Y3Qge3VpbnQ2NF90IHY7fSBDRlN3YXBw
ZWRGbG9hdDY0Ow0KDQpzdGF0aWMgaW5saW5lIENGU3dhcHBlZEZsb2F0MzIgQ0ZDb252ZXJ0Rmxv
YXQzMkhvc3RUb1N3YXBwZWQoRmxvYXQzMiBhcmcpIHsNCiAgICB1bmlvbiBDRlN3YXAgew0KCUZs
b2F0MzIgdjsNCglDRlN3YXBwZWRGbG9hdDMyIHN2Ow0KICAgIH0gcmVzdWx0Ow0KICAgIHJlc3Vs
dC52ID0gYXJnOw0KDQogICAgcmVzdWx0LnN2LnYgPSBDRlN3YXBJbnQzMihyZXN1bHQuc3Yudik7
DQojbGluZSAyNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQogICAgcmV0dXJuIHJl
c3VsdC5zdjsNCn0NCg0Kc3RhdGljIGlubGluZSBGbG9hdDMyIENGQ29udmVydEZsb2F0MzJTd2Fw
cGVkVG9Ib3N0KENGU3dhcHBlZEZsb2F0MzIgYXJnKSB7DQogICAgdW5pb24gQ0ZTd2FwIHsNCglG
bG9hdDMyIHY7DQoJQ0ZTd2FwcGVkRmxvYXQzMiBzdjsNCiAgICB9IHJlc3VsdDsNCiAgICByZXN1
bHQuc3YgPSBhcmc7DQoNCiAgICByZXN1bHQuc3YudiA9IENGU3dhcEludDMyKHJlc3VsdC5zdi52
KTsNCiNsaW5lIDI1NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4g
cmVzdWx0LnY7DQp9DQoNCnN0YXRpYyBpbmxpbmUgQ0ZTd2FwcGVkRmxvYXQ2NCBDRkNvbnZlcnRG
bG9hdDY0SG9zdFRvU3dhcHBlZChGbG9hdDY0IGFyZykgew0KICAgIHVuaW9uIENGU3dhcCB7DQoJ
RmxvYXQ2NCB2Ow0KCUNGU3dhcHBlZEZsb2F0NjQgc3Y7DQogICAgfSByZXN1bHQ7DQogICAgcmVz
dWx0LnYgPSBhcmc7DQoNCiAgICByZXN1bHQuc3YudiA9IENGU3dhcEludDY0KHJlc3VsdC5zdi52
KTsNCiNsaW5lIDI2NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4g
cmVzdWx0LnN2Ow0KfQ0KDQpzdGF0aWMgaW5saW5lIEZsb2F0NjQgQ0ZDb252ZXJ0RmxvYXQ2NFN3
YXBwZWRUb0hvc3QoQ0ZTd2FwcGVkRmxvYXQ2NCBhcmcpIHsNCiAgICB1bmlvbiBDRlN3YXAgew0K
CUZsb2F0NjQgdjsNCglDRlN3YXBwZWRGbG9hdDY0IHN2Ow0KICAgIH0gcmVzdWx0Ow0KICAgIHJl
c3VsdC5zdiA9IGFyZzsNCg0KICAgIHJlc3VsdC5zdi52ID0gQ0ZTd2FwSW50NjQocmVzdWx0LnN2
LnYpOw0KI2xpbmUgMjc5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5dGVPcmRlci5oIg0KICAgIHJldHVy
biByZXN1bHQudjsNCn0NCg0Kc3RhdGljIGlubGluZSBDRlN3YXBwZWRGbG9hdDMyIENGQ29udmVy
dEZsb2F0SG9zdFRvU3dhcHBlZChmbG9hdCBhcmcpIHsNCiAgICB1bmlvbiBDRlN3YXAgew0KCWZs
b2F0IHY7DQoJQ0ZTd2FwcGVkRmxvYXQzMiBzdjsNCiAgICB9IHJlc3VsdDsNCiAgICByZXN1bHQu
diA9IGFyZzsNCg0KICAgIHJlc3VsdC5zdi52ID0gQ0ZTd2FwSW50MzIocmVzdWx0LnN2LnYpOw0K
I2xpbmUgMjkxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5dGVPcmRlci5oIg0KICAgIHJldHVybiByZXN1
bHQuc3Y7DQp9DQoNCnN0YXRpYyBpbmxpbmUgZmxvYXQgQ0ZDb252ZXJ0RmxvYXRTd2FwcGVkVG9I
b3N0KENGU3dhcHBlZEZsb2F0MzIgYXJnKSB7DQogICAgdW5pb24gQ0ZTd2FwIHsNCglmbG9hdCB2
Ow0KCUNGU3dhcHBlZEZsb2F0MzIgc3Y7DQogICAgfSByZXN1bHQ7DQogICAgcmVzdWx0LnN2ID0g
YXJnOw0KDQogICAgcmVzdWx0LnN2LnYgPSBDRlN3YXBJbnQzMihyZXN1bHQuc3Yudik7DQojbGlu
ZSAzMDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQogICAgcmV0dXJuIHJlc3VsdC52
Ow0KfQ0KDQpzdGF0aWMgaW5saW5lIENGU3dhcHBlZEZsb2F0NjQgQ0ZDb252ZXJ0RG91YmxlSG9z
dFRvU3dhcHBlZChkb3VibGUgYXJnKSB7DQogICAgdW5pb24gQ0ZTd2FwIHsNCglkb3VibGUgdjsN
CglDRlN3YXBwZWRGbG9hdDY0IHN2Ow0KICAgIH0gcmVzdWx0Ow0KICAgIHJlc3VsdC52ID0gYXJn
Ow0KDQogICAgcmVzdWx0LnN2LnYgPSBDRlN3YXBJbnQ2NChyZXN1bHQuc3Yudik7DQojbGluZSAz
MTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnl0ZU9yZGVyLmgiDQogICAgcmV0dXJuIHJlc3VsdC5zdjsN
Cn0NCg0Kc3RhdGljIGlubGluZSBkb3VibGUgQ0ZDb252ZXJ0RG91YmxlU3dhcHBlZFRvSG9zdChD
RlN3YXBwZWRGbG9hdDY0IGFyZykgew0KICAgIHVuaW9uIENGU3dhcCB7DQoJZG91YmxlIHY7DQoJ
Q0ZTd2FwcGVkRmxvYXQ2NCBzdjsNCiAgICB9IHJlc3VsdDsNCiAgICByZXN1bHQuc3YgPSBhcmc7
DQoNCiAgICByZXN1bHQuc3YudiA9IENGU3dhcEludDY0KHJlc3VsdC5zdi52KTsNCiNsaW5lIDMy
NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcQ29yZUZvdW5kYXRpb24vQ0ZCeXRlT3JkZXIuaCINCiAgICByZXR1cm4gcmVzdWx0LnY7DQp9
DQoNCn0NCg0KI2xpbmUgMzMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ5dGVPcmRlci5oIg0KDQojbGlu
ZSA3NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3Vu
ZGF0aW9uL0NGQ2FsZW5kYXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29y
ZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9D
RkJhc2UuaCINCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkNhbGVuZGFyLmgiDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxDb3JlRm91bmRhdGlvbi9DRkxvY2FsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3Vu
ZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmgiDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkFycmF5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkFycmF5LmgiDQoN
CiNsaW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkxvY2FsZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5k
YXRpb24vQ0ZEaWN0aW9uYXJ5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3Vu
ZGF0aW9uL0NGQmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNl
LmgiDQojbGluZSA5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEaWN0aW9uYXJ5LmgiDQoNCg0KZXh0ZXJu
ICJDIiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBjb25zdCB2b2lkICoJKCpDRkRpY3Rpb25hcnlSZXRhaW5DYWxsQmFjaykoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCB2b2lkICp2YWx1ZSk7DQp0eXBlZGVmIHZvaWQJ
CSgqQ0ZEaWN0aW9uYXJ5UmVsZWFzZUNhbGxCYWNrKShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Is
IGNvbnN0IHZvaWQgKnZhbHVlKTsNCnR5cGVkZWYgQ0ZTdHJpbmdSZWYJKCpDRkRpY3Rpb25hcnlD
b3B5RGVzY3JpcHRpb25DYWxsQmFjaykoY29uc3Qgdm9pZCAqdmFsdWUpOw0KdHlwZWRlZiBCb29s
ZWFuCQkoKkNGRGljdGlvbmFyeUVxdWFsQ2FsbEJhY2spKGNvbnN0IHZvaWQgKnZhbHVlMSwgY29u
c3Qgdm9pZCAqdmFsdWUyKTsNCnR5cGVkZWYgQ0ZIYXNoQ29kZQkoKkNGRGljdGlvbmFyeUhhc2hD
YWxsQmFjaykoY29uc3Qgdm9pZCAqdmFsdWUpOw0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIENGSW5k
ZXgJCQkJdmVyc2lvbjsNCiAgICBDRkRpY3Rpb25hcnlSZXRhaW5DYWxsQmFjawkJcmV0YWluOw0K
ICAgIENGRGljdGlvbmFyeVJlbGVhc2VDYWxsQmFjawkJcmVsZWFzZTsNCiAgICBDRkRpY3Rpb25h
cnlDb3B5RGVzY3JpcHRpb25DYWxsQmFjawljb3B5RGVzY3JpcHRpb247DQogICAgQ0ZEaWN0aW9u
YXJ5RXF1YWxDYWxsQmFjawkJZXF1YWw7DQogICAgQ0ZEaWN0aW9uYXJ5SGFzaENhbGxCYWNrCQlo
YXNoOw0KfSBDRkRpY3Rpb25hcnlLZXlDYWxsQmFja3M7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRkRpY3Rpb25hcnlLZXlDYWxsQmFja3Mg
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3M7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
IGtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIENGSW5k
ZXgJCQkJdmVyc2lvbjsNCiAgICBDRkRpY3Rpb25hcnlSZXRhaW5DYWxsQmFjawkJcmV0YWluOw0K
ICAgIENGRGljdGlvbmFyeVJlbGVhc2VDYWxsQmFjawkJcmVsZWFzZTsNCiAgICBDRkRpY3Rpb25h
cnlDb3B5RGVzY3JpcHRpb25DYWxsQmFjawljb3B5RGVzY3JpcHRpb247DQogICAgQ0ZEaWN0aW9u
YXJ5RXF1YWxDYWxsQmFjawkJZXF1YWw7DQp9IENGRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzOw0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mga0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrczsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiB2b2lkICgqQ0ZEaWN0aW9uYXJ5QXBwbGllckZ1
bmN0aW9uKShjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnZhbHVlLCB2b2lkICpjb250ZXh0
KTsNCg0KDQoNCg0KDQp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGRGljdGlvbmFyeSAqIENGRGlj
dGlvbmFyeVJlZjsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfX0NGRGljdGlvbmFyeSAqIENG
TXV0YWJsZURpY3Rpb25hcnlSZWY7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGVHlwZUlEIENGRGljdGlvbmFyeUdldFR5cGVJRCh2b2lkKTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZEaWN0aW9uYXJ5UmVmIENGRGljdGlvbmFyeUNyZWF0ZShD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IHZvaWQgKiprZXlzLCBjb25zdCB2b2lkICoq
dmFsdWVzLCBDRkluZGV4IG51bVZhbHVlcywgY29uc3QgQ0ZEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
ICprZXlDYWxsQmFja3MsIGNvbnN0IENGRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzICp2YWx1ZUNh
bGxCYWNrcyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkRpY3Rpb25hcnlSZWYgQ0ZEaWN0aW9u
YXJ5Q3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiB0
aGVEaWN0KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGTXV0YWJsZURpY3Rpb25hcnlSZWYgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIGNvbnN0IENG
RGljdGlvbmFyeUtleUNhbGxCYWNrcyAqa2V5Q2FsbEJhY2tzLCBjb25zdCBDRkRpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyAqdmFsdWVDYWxsQmFja3MpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIENG
RGljdGlvbmFyeVJlZiB0aGVEaWN0KTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRkRpY3Rpb25hcnlHZXRDb3VudChDRkRpY3Rpb25h
cnlSZWYgdGhlRGljdCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGSW5kZXggQ0ZEaWN0aW9uYXJ5R2V0Q291bnRP
ZktleShDRkRpY3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqa2V5KTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJ
bmRleCBDRkRpY3Rpb25hcnlHZXRDb3VudE9mVmFsdWUoQ0ZEaWN0aW9uYXJ5UmVmIHRoZURpY3Qs
IGNvbnN0IHZvaWQgKnZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZEaWN0aW9uYXJ5Q29udGFp
bnNLZXkoQ0ZEaWN0aW9uYXJ5UmVmIHRoZURpY3QsIGNvbnN0IHZvaWQgKmtleSk7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJv
b2xlYW4gQ0ZEaWN0aW9uYXJ5Q29udGFpbnNWYWx1ZShDRkRpY3Rpb25hcnlSZWYgdGhlRGljdCwg
Y29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCB2b2lkICpDRkRpY3Rp
b25hcnlHZXRWYWx1ZShDRkRpY3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqa2V5KTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJl
c2VudChDRkRpY3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lk
ICoqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0Fu
ZFZhbHVlcyhDRkRpY3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqKmtleXMsIGNvbnN0
IHZvaWQgKip2YWx1ZXMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5j
dGlvbihDRkRpY3Rpb25hcnlSZWYgdGhlRGljdCwgQ0ZEaWN0aW9uYXJ5QXBwbGllckZ1bmN0aW9u
IGFwcGxpZXIsIHZvaWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB0aGVEaWN0LCBjb25zdCB2b2lkICprZXks
IGNvbnN0IHZvaWQgKnZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGRGljdGlvbmFy
eVNldFZhbHVlKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqa2V5
LCBjb25zdCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZEaWN0aW9uYXJ5UmVwbGFj
ZVZhbHVlKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgdGhlRGljdCwgY29uc3Qgdm9pZCAqa2V5LCBj
b25zdCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZShDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIHRoZURpY3QsIGNvbnN0IHZvaWQgKmtleSk7DQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZEaWN0aW9uYXJ5UmVt
b3ZlQWxsVmFsdWVzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgdGhlRGljdCk7DQoNCn0NCg0KDQoj
bGluZSA3MDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGljdGlvbmFyeS5oIg0KDQojbGluZSA0NCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29y
ZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaCINCg0KDQpleHRlcm4gIkMiIHsNCg0KdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19DRkxvY2FsZSAqQ0ZMb2NhbGVSZWY7DQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRkxvY2FsZUdldFR5cGVJRCh2b2lkKTsNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGTG9jYWxlUmVmIENGTG9jYWxlR2V0U3lzdGVt
KHZvaWQpOw0KCQ0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZMb2NhbGVS
ZWYgQ0ZMb2NhbGVDb3B5Q3VycmVudCh2b2lkKTsNCgkNCgkNCgkNCgkNCgkNCgkNCgkNCgkNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZMb2NhbGVDb3B5
QXZhaWxhYmxlTG9jYWxlSWRlbnRpZmllcnModm9pZCk7DQoJDQoJDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFycmF5UmVmIENGTG9jYWxlQ29weUlTT0xhbmd1YWdlQ29k
ZXModm9pZCk7DQoJDQoJDQoJDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
RkFycmF5UmVmIENGTG9jYWxlQ29weUlTT0NvdW50cnlDb2Rlcyh2b2lkKTsNCgkNCgkNCgkNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZMb2NhbGVDb3B5
SVNPQ3VycmVuY3lDb2Rlcyh2b2lkKTsNCgkNCgkNCgkNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZMb2NhbGVDb3B5Q29tbW9uSVNPQ3VycmVuY3lDb2Rl
cyh2b2lkKSA7DQoJDQoJDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFy
cmF5UmVmIENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcyh2b2lkKSA7DQoJDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRkxvY2FsZUNyZWF0ZUNh
bm9uaWNhbExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2Nh
dG9yLCBDRlN0cmluZ1JlZiBsb2NhbGVJZGVudGlmaWVyKTsNCgkNCgkNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGTG9jYWxlQ3JlYXRlQ2Fub25pY2Fs
TG9jYWxlSWRlbnRpZmllckZyb21TdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0
cmluZ1JlZiBsb2NhbGVJZGVudGlmaWVyKTsNCgkNCgkNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRl
bnRpZmllckZyb21TY3JpcHRNYW5hZ2VyQ29kZXMoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBM
YW5nQ29kZSBsY29kZSwgUmVnaW9uQ29kZSByY29kZSk7DQoJDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRkxvY2FsZUNyZWF0ZUxvY2FsZUlkZW50aWZp
ZXJGcm9tV2luZG93c0xvY2FsZUNvZGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCB1aW50MzJf
dCBsY2lkKSA7DQoJDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp1aW50MzJf
dCBDRkxvY2FsZUdldFdpbmRvd3NMb2NhbGVDb2RlRnJvbUxvY2FsZUlkZW50aWZpZXIoQ0ZTdHJp
bmdSZWYgbG9jYWxlSWRlbnRpZmllcikgOw0KCQ0KDQp0eXBlZGVmIENGSW5kZXggQ0ZMb2NhbGVM
YW5ndWFnZURpcmVjdGlvbjsgZW51bSB7DQogICAga0NGTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb25V
bmtub3duID0gMCwNCiAgICBrQ0ZMb2NhbGVMYW5ndWFnZURpcmVjdGlvbkxlZnRUb1JpZ2h0ID0g
MSwNCiAgICBrQ0ZMb2NhbGVMYW5ndWFnZURpcmVjdGlvblJpZ2h0VG9MZWZ0ID0gMiwNCiAgICBr
Q0ZMb2NhbGVMYW5ndWFnZURpcmVjdGlvblRvcFRvQm90dG9tID0gMywNCiAgICBrQ0ZMb2NhbGVM
YW5ndWFnZURpcmVjdGlvbkJvdHRvbVRvVG9wID0gNA0KfTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkNGTG9jYWxlTGFuZ3VhZ2VEaXJlY3Rpb24gQ0ZMb2NhbGVHZXRMYW5n
dWFnZUNoYXJhY3RlckRpcmVjdGlvbihDRlN0cmluZ1JlZiBpc29MYW5nQ29kZSkgOw0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZMb2NhbGVMYW5ndWFnZURpcmVjdGlvbiBD
RkxvY2FsZUdldExhbmd1YWdlTGluZURpcmVjdGlvbihDRlN0cmluZ1JlZiBpc29MYW5nQ29kZSkg
Ow0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZEaWN0aW9uYXJ5UmVmIENG
TG9jYWxlQ3JlYXRlQ29tcG9uZW50c0Zyb21Mb2NhbGVJZGVudGlmaWVyKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgbG9jYWxlSUQpOw0KCQ0KCQ0KCQ0KCQ0KCQ0KCQ0KCQ0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZMb2NhbGVD
cmVhdGVMb2NhbGVJZGVudGlmaWVyRnJvbUNvbXBvbmVudHMoQ0ZBbGxvY2F0b3JSZWYgYWxsb2Nh
dG9yLCBDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSk7DQoJDQoJDQoJDQoJDQoJDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkxvY2FsZVJlZiBDRkxvY2FsZUNyZWF0ZShD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIGxvY2FsZUlkZW50aWZpZXIpOw0K
CQ0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZMb2NhbGVSZWYgQ0ZMb2Nh
bGVDcmVhdGVDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZMb2NhbGVSZWYgbG9jYWxl
KTsNCgkNCgkNCgkNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5n
UmVmIENGTG9jYWxlR2V0SWRlbnRpZmllcihDRkxvY2FsZVJlZiBsb2NhbGUpOw0KCQ0KCQ0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZUeXBlUmVmIENGTG9jYWxlR2V0VmFs
dWUoQ0ZMb2NhbGVSZWYgbG9jYWxlLCBDRlN0cmluZ1JlZiBrZXkpOw0KCQ0KCQ0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZMb2NhbGVDb3B5RGlzcGxh
eU5hbWVGb3JQcm9wZXJ0eVZhbHVlKENGTG9jYWxlUmVmIGRpc3BsYXlMb2NhbGUsIENGU3RyaW5n
UmVmIGtleSwgQ0ZTdHJpbmdSZWYgdmFsdWUpOw0KCQ0KCQ0KCQ0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZUN1cnJlbnRMb2Nh
bGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTG9jYWxlSWRlbnRpZmllcjsNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZUxhbmd1
YWdlQ29kZTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5n
UmVmIGtDRkxvY2FsZUNvdW50cnlDb2RlOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTG9jYWxlU2NyaXB0Q29kZTsNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZVZhcmlhbnRDb2Rl
Ow0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZMb2NhbGVFeGVtcGxhckNoYXJhY3RlclNldDsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZUNhbGVuZGFySWRlbnRpZmllcjsNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2Fs
ZUNhbGVuZGFyOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJp
bmdSZWYga0NGTG9jYWxlQ29sbGF0aW9uSWRlbnRpZmllcjsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZVVzZXNNZXRyaWNTeXN0ZW07
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZM
b2NhbGVNZWFzdXJlbWVudFN5c3RlbTsgDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZMb2NhbGVEZWNpbWFsU2VwYXJhdG9yOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTG9jYWxlR3JvdXBp
bmdTZXBhcmF0b3I7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZMb2NhbGVDdXJyZW5jeVN5bWJvbDsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZUN1cnJlbmN5Q29kZTsgDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZMb2NhbGVD
b2xsYXRvcklkZW50aWZpZXIgOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGTG9jYWxlUXVvdGF0aW9uQmVnaW5EZWxpbWl0ZXJLZXkgOw0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTG9jYWxl
UXVvdGF0aW9uRW5kRGVsaW1pdGVyS2V5IDsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkxvY2FsZUFsdGVybmF0ZVF1b3RhdGlvbkJlZ2luRGVs
aW1pdGVyS2V5IDsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3Ry
aW5nUmVmIGtDRkxvY2FsZUFsdGVybmF0ZVF1b3RhdGlvbkVuZERlbGltaXRlcktleSA7DQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGR3Jl
Z29yaWFuQ2FsZW5kYXI7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZCdWRkaGlzdENhbGVuZGFyOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGQ2hpbmVzZUNhbGVuZGFyOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGSGVicmV3Q2FsZW5k
YXI7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZJc2xhbWljQ2FsZW5kYXI7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZJc2xhbWljQ2l2aWxDYWxlbmRhcjsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkphcGFuZXNlQ2FsZW5kYXI7DQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZSZXB1
YmxpY09mQ2hpbmFDYWxlbmRhciA7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZQZXJzaWFuQ2FsZW5kYXIgOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGSW5kaWFuQ2FsZW5kYXIgOw0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGSVNPODYw
MUNhbGVuZGFyIDsNCg0KfQ0KDQoNCiNsaW5lIDIyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUu
aCINCg0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQ2FsZW5kYXIuaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENv
cmVGb3VuZGF0aW9uL0NGRGF0ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0ZS5oIg0KDQoNCmV4dGVy
biAiQyIgew0KDQp0eXBlZGVmIGRvdWJsZSBDRlRpbWVJbnRlcnZhbDsNCnR5cGVkZWYgQ0ZUaW1l
SW50ZXJ2YWwgQ0ZBYnNvbHV0ZVRpbWU7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQ0ZBYnNvbHV0ZVRpbWUgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KHZvaWQpOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZUaW1lSW50ZXJ2YWwg
a0NGQWJzb2x1dGVUaW1lSW50ZXJ2YWxTaW5jZTE5NzA7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KY29uc3QgQ0ZUaW1lSW50ZXJ2YWwga0NGQWJzb2x1dGVUaW1lSW50ZXJ2YWxT
aW5jZTE5MDQ7DQoNCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRlICogQ0ZEYXRlUmVmOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZUeXBlSUQgQ0ZEYXRlR2V0VHlw
ZUlEKHZvaWQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZEYXRlUmVm
IENGRGF0ZUNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGQWJzb2x1dGVUaW1lIGF0
KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQWJzb2x1dGVUaW1lIENG
RGF0ZUdldEFic29sdXRlVGltZShDRkRhdGVSZWYgdGhlRGF0ZSk7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlRpbWVJbnRlcnZhbCBDRkRhdGVHZXRUaW1lSW50ZXJ2YWxT
aW5jZURhdGUoQ0ZEYXRlUmVmIHRoZURhdGUsIENGRGF0ZVJlZiBvdGhlckRhdGUpOw0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZDb21wYXJpc29uUmVzdWx0IENGRGF0ZUNv
bXBhcmUoQ0ZEYXRlUmVmIHRoZURhdGUsIENGRGF0ZVJlZiBvdGhlckRhdGUsIHZvaWQgKmNvbnRl
eHQpOw0KDQoNCg0KdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlRpbWVab25lICogQ0ZUaW1lWm9u
ZVJlZjsNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIFNJbnQzMiB5ZWFyOw0KICAgIFNJbnQ4IG1v
bnRoOw0KICAgIFNJbnQ4IGRheTsNCiAgICBTSW50OCBob3VyOw0KICAgIFNJbnQ4IG1pbnV0ZTsN
CiAgICBkb3VibGUgc2Vjb25kOw0KfSBDRkdyZWdvcmlhbkRhdGU7DQoNCnR5cGVkZWYgc3RydWN0
IHsNCiAgICBTSW50MzIgeWVhcnM7DQogICAgU0ludDMyIG1vbnRoczsNCiAgICBTSW50MzIgZGF5
czsNCiAgICBTSW50MzIgaG91cnM7DQogICAgU0ludDMyIG1pbnV0ZXM7DQogICAgZG91YmxlIHNl
Y29uZHM7DQp9IENGR3JlZ29yaWFuVW5pdHM7DQoNCnR5cGVkZWYgQ0ZPcHRpb25GbGFncyBDRkdy
ZWdvcmlhblVuaXRGbGFnczsgZW51bSB7DQogICAga0NGR3JlZ29yaWFuVW5pdHNZZWFycyA9ICgx
VUwgPDwgMCksDQogICAga0NGR3JlZ29yaWFuVW5pdHNNb250aHMgPSAoMVVMIDw8IDEpLA0KICAg
IGtDRkdyZWdvcmlhblVuaXRzRGF5cyA9ICgxVUwgPDwgMiksDQogICAga0NGR3JlZ29yaWFuVW5p
dHNIb3VycyA9ICgxVUwgPDwgMyksDQogICAga0NGR3JlZ29yaWFuVW5pdHNNaW51dGVzID0gKDFV
TCA8PCA0KSwNCiAgICBrQ0ZHcmVnb3JpYW5Vbml0c1NlY29uZHMgPSAoMVVMIDw8IDUpLA0KICAg
IGtDRkdyZWdvcmlhbkFsbFVuaXRzID0gMHgwMEZGRkZGRg0KfTsNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZHcmVnb3JpYW5EYXRlSXNWYWxpZChDRkdyZWdv
cmlhbkRhdGUgZ2RhdGUsIENGT3B0aW9uRmxhZ3MgdW5pdEZsYWdzKTsNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQWJzb2x1dGVUaW1lIENGR3JlZ29yaWFuRGF0ZUdldEFi
c29sdXRlVGltZShDRkdyZWdvcmlhbkRhdGUgZ2RhdGUsIENGVGltZVpvbmVSZWYgdHopOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZHcmVnb3JpYW5EYXRlIENGQWJzb2x1
dGVUaW1lR2V0R3JlZ29yaWFuRGF0ZShDRkFic29sdXRlVGltZSBhdCwgQ0ZUaW1lWm9uZVJlZiB0
eik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFic29sdXRlVGltZSBD
RkFic29sdXRlVGltZUFkZEdyZWdvcmlhblVuaXRzKENGQWJzb2x1dGVUaW1lIGF0LCBDRlRpbWVa
b25lUmVmIHR6LCBDRkdyZWdvcmlhblVuaXRzIHVuaXRzKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkNGR3JlZ29yaWFuVW5pdHMgQ0ZBYnNvbHV0ZVRpbWVHZXREaWZmZXJl
bmNlQXNHcmVnb3JpYW5Vbml0cyhDRkFic29sdXRlVGltZSBhdDEsIENGQWJzb2x1dGVUaW1lIGF0
MiwgQ0ZUaW1lWm9uZVJlZiB0eiwgQ0ZPcHRpb25GbGFncyB1bml0RmxhZ3MpOw0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KU0ludDMyIENGQWJzb2x1dGVUaW1lR2V0RGF5T2ZX
ZWVrKENGQWJzb2x1dGVUaW1lIGF0LCBDRlRpbWVab25lUmVmIHR6KTsNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNClNJbnQzMiBDRkFic29sdXRlVGltZUdldERheU9mWWVhcihD
RkFic29sdXRlVGltZSBhdCwgQ0ZUaW1lWm9uZVJlZiB0eik7DQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpTSW50MzIgQ0ZBYnNvbHV0ZVRpbWVHZXRXZWVrT2ZZZWFyKENGQWJz
b2x1dGVUaW1lIGF0LCBDRlRpbWVab25lUmVmIHR6KTsNCg0KfQ0KDQojbGluZSAxMzUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGRGF0ZS5oIg0KDQojbGluZSA0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZDYWxlbmRh
ci5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZUaW1lWm9uZS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA2NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGVGltZVpvbmUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQXJyYXkuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MDYgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGQXJyYXkuaCINCg0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVGltZVpvbmUuaCIN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0YS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENv
cmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0YS5o
Ig0KDQoNCmV4dGVybiAiQyIgew0KICAgIA0KdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEg
KiBDRkRhdGFSZWY7DQp0eXBlZGVmIHN0cnVjdCBfX0NGRGF0YSAqIENGTXV0YWJsZURhdGFSZWY7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRkRhdGFHZXRU
eXBlSUQodm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkRhdGFS
ZWYgQ0ZEYXRhQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgVUludDggKmJ5
dGVzLCBDRkluZGV4IGxlbmd0aCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpDRkRhdGFSZWYgQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgY29uc3QgVUludDggKmJ5dGVzLCBDRkluZGV4IGxlbmd0aCwgQ0ZBbGxvY2F0b3JS
ZWYgYnl0ZXNEZWFsbG9jYXRvcik7DQogICAgDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpDRkRhdGFSZWYgQ0ZEYXRhQ3JlYXRlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0
b3IsIENGRGF0YVJlZiB0aGVEYXRhKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkNGTXV0YWJsZURhdGFSZWYgQ0ZEYXRhQ3JlYXRlTXV0YWJsZShDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHkpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQ0ZNdXRhYmxlRGF0YVJlZiBDRkRhdGFDcmVhdGVNdXRhYmxlQ29weShDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIENGRGF0YVJlZiB0aGVEYXRhKTsN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGSW5kZXggQ0ZEYXRhR2V0TGVu
Z3RoKENGRGF0YVJlZiB0aGVEYXRhKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCmNvbnN0IFVJbnQ4ICpDRkRhdGFHZXRCeXRlUHRyKENGRGF0YVJlZiB0aGVEYXRhKTsNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVJbnQ4ICpDRkRhdGFHZXRNdXRhYmxl
Qnl0ZVB0cihDRk11dGFibGVEYXRhUmVmIHRoZURhdGEpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkRhdGFHZXRCeXRlcyhDRkRhdGFSZWYgdGhlRGF0YSwgQ0ZS
YW5nZSByYW5nZSwgVUludDggKmJ1ZmZlcik7IA0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0Kdm9pZCBDRkRhdGFTZXRMZW5ndGgoQ0ZNdXRhYmxlRGF0YVJlZiB0aGVEYXRhLCBD
RkluZGV4IGxlbmd0aCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
IENGRGF0YUluY3JlYXNlTGVuZ3RoKENGTXV0YWJsZURhdGFSZWYgdGhlRGF0YSwgQ0ZJbmRleCBl
eHRyYUxlbmd0aCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENG
RGF0YUFwcGVuZEJ5dGVzKENGTXV0YWJsZURhdGFSZWYgdGhlRGF0YSwgY29uc3QgVUludDggKmJ5
dGVzLCBDRkluZGV4IGxlbmd0aCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQp2b2lkIENGRGF0YVJlcGxhY2VCeXRlcyhDRk11dGFibGVEYXRhUmVmIHRoZURhdGEsIENGUmFu
Z2UgcmFuZ2UsIGNvbnN0IFVJbnQ4ICpuZXdCeXRlcywgQ0ZJbmRleCBuZXdMZW5ndGgpOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkRhdGFEZWxldGVCeXRlcyhD
Rk11dGFibGVEYXRhUmVmIHRoZURhdGEsIENGUmFuZ2UgcmFuZ2UpOw0KDQp0eXBlZGVmIENGT3B0
aW9uRmxhZ3MgQ0ZEYXRhU2VhcmNoRmxhZ3M7IGVudW0gew0KICAgIGtDRkRhdGFTZWFyY2hCYWNr
d2FyZHMgPSAxVUwgPDwgMCwNCiAgICBrQ0ZEYXRhU2VhcmNoQW5jaG9yZWQgPSAxVUwgPDwgMQ0K
fSA7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlJhbmdlIENGRGF0YUZp
bmQoQ0ZEYXRhUmVmIHRoZURhdGEsIENGRGF0YVJlZiBkYXRhVG9GaW5kLCBDRlJhbmdlIHNlYXJj
aFJhbmdlLCBDRkRhdGFTZWFyY2hGbGFncyBjb21wYXJlT3B0aW9ucykgOw0KDQp9DQoNCg0KI2xp
bmUgMTA3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRhdGEuaCINCg0KI2xpbmUgNDQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGVGltZVpvbmUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0ZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGRGF0ZS5oIg0KDQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZUaW1lWm9uZS5oIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEaWN0aW9uYXJ5LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEaWN0aW9uYXJ5Lmgi
DQoNCiNsaW5lIDQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlRpbWVab25lLmgiDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRlN0cmluZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxDb3JlRm91bmRhdGlvbi9DRkFycmF5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNzA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkFycmF5LmgiDQoNCiNsaW5l
IDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24v
Q0ZEYXRhLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAx
MDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0YS5oIg0KDQojbGluZSA0NCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24v
Q0ZTdHJpbmcuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGljdGlvbmFyeS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MDIgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
RGljdGlvbmFyeS5oIg0KDQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQ2hhcmFjdGVyU2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENv
cmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQ2hhcmFj
dGVyU2V0LmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRhdGEuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwNyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZE
YXRhLmgiDQoNCiNsaW5lIDY5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkNoYXJhY3RlclNldC5oIg0KDQoN
CmV4dGVybiAiQyIgew0KDQoNCg0KDQoNCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZDaGFyYWN0
ZXJTZXQgKiBDRkNoYXJhY3RlclNldFJlZjsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfX0NG
Q2hhcmFjdGVyU2V0ICogQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmOw0KDQoNCg0KDQoNCiAgIA0K
dHlwZWRlZiBDRkluZGV4IENGQ2hhcmFjdGVyU2V0UHJlZGVmaW5lZFNldDsgZW51bSB7DQogICAg
a0NGQ2hhcmFjdGVyU2V0Q29udHJvbCA9IDEsIA0KICAgIGtDRkNoYXJhY3RlclNldFdoaXRlc3Bh
Y2UsIA0KICAgIGtDRkNoYXJhY3RlclNldFdoaXRlc3BhY2VBbmROZXdsaW5lLCAgDQogICAga0NG
Q2hhcmFjdGVyU2V0RGVjaW1hbERpZ2l0LCANCiAgICBrQ0ZDaGFyYWN0ZXJTZXRMZXR0ZXIsIA0K
ICAgIGtDRkNoYXJhY3RlclNldExvd2VyY2FzZUxldHRlciwgDQogICAga0NGQ2hhcmFjdGVyU2V0
VXBwZXJjYXNlTGV0dGVyLCANCiAgICBrQ0ZDaGFyYWN0ZXJTZXROb25CYXNlLCANCiAgICBrQ0ZD
aGFyYWN0ZXJTZXREZWNvbXBvc2FibGUsIA0KICAgIGtDRkNoYXJhY3RlclNldEFscGhhTnVtZXJp
YywgDQogICAga0NGQ2hhcmFjdGVyU2V0UHVuY3R1YXRpb24sIA0KICAgIGtDRkNoYXJhY3RlclNl
dENhcGl0YWxpemVkTGV0dGVyID0gMTMsIA0KICAgIGtDRkNoYXJhY3RlclNldFN5bWJvbCA9IDE0
LCANCiAgICBrQ0ZDaGFyYWN0ZXJTZXROZXdsaW5lICA9IDE1LCANCiAgICBrQ0ZDaGFyYWN0ZXJT
ZXRJbGxlZ2FsID0gMTINCn07DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGVHlwZUlEIENGQ2hhcmFjdGVyU2V0R2V0VHlwZUlEKHZvaWQpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkNoYXJhY3Rl
clNldFJlZiBDRkNoYXJhY3RlclNldEdldFByZWRlZmluZWQoQ0ZDaGFyYWN0ZXJTZXRQcmVkZWZp
bmVkU2V0IHRoZVNldElkZW50aWZpZXIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkNoYXJhY3RlclNldFJlZiBD
RkNoYXJhY3RlclNldENyZWF0ZVdpdGhDaGFyYWN0ZXJzSW5SYW5nZShDRkFsbG9jYXRvclJlZiBh
bGxvYywgQ0ZSYW5nZSB0aGVSYW5nZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZDaGFyYWN0ZXJTZXRSZWYgQ0ZDaGFy
YWN0ZXJTZXRDcmVhdGVXaXRoQ2hhcmFjdGVyc0luU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9j
LCBDRlN0cmluZ1JlZiB0aGVTdHJpbmcpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
RkNoYXJhY3RlclNldFJlZiBDRkNoYXJhY3RlclNldENyZWF0ZVdpdGhCaXRtYXBSZXByZXNlbnRh
dGlvbihDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZEYXRhUmVmIHRoZURhdGEpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGQ2hh
cmFjdGVyU2V0UmVmIENGQ2hhcmFjdGVyU2V0Q3JlYXRlSW52ZXJ0ZWRTZXQoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2MsIENGQ2hhcmFjdGVyU2V0UmVmIHRoZVNldCk7DQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCb29sZWFuIENGQ2hhcmFjdGVyU2V0SXNT
dXBlcnNldE9mU2V0KENGQ2hhcmFjdGVyU2V0UmVmIHRoZVNldCwgQ0ZDaGFyYWN0ZXJTZXRSZWYg
dGhlT3RoZXJzZXQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBCb29sZWFuIENGQ2hhcmFjdGVyU2V0SGFzTWVtYmVySW5QbGFuZShDRkNoYXJh
Y3RlclNldFJlZiB0aGVTZXQsIENGSW5kZXggdGhlUGxhbmUpOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRk11dGFibGVDaGFyYWN0ZXJT
ZXRSZWYgQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKENGQWxsb2NhdG9yUmVmIGFsbG9jKTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQ0ZDaGFyYWN0ZXJTZXRSZWYgQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVDb3B5KENGQWxsb2Nh
dG9yUmVmIGFsbG9jLCBDRkNoYXJhY3RlclNldFJlZiB0aGVTZXQpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRk11dGFibGVD
aGFyYWN0ZXJTZXRSZWYgQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRv
clJlZiBhbGxvYywgQ0ZDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0KTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGQ2hhcmFj
dGVyU2V0SXNDaGFyYWN0ZXJNZW1iZXIoQ0ZDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0LCBVbmlDaGFy
IHRoZUNoYXIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBCb29sZWFuIENGQ2hhcmFjdGVyU2V0SXNMb25nQ2hhcmFjdGVyTWVtYmVyKENGQ2hh
cmFjdGVyU2V0UmVmIHRoZVNldCwgVVRGMzJDaGFyIHRoZUNoYXIpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkRh
dGFSZWYgQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVCaXRtYXBSZXByZXNlbnRhdGlvbihDRkFsbG9jYXRv
clJlZiBhbGxvYywgQ0ZDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0KTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZDaGFyYWN0
ZXJTZXRBZGRDaGFyYWN0ZXJzSW5SYW5nZShDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0
LCBDRlJhbmdlIHRoZVJhbmdlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZDaGFyYWN0ZXJTZXRSZW1vdmVDaGFyYWN0
ZXJzSW5SYW5nZShDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0LCBDRlJhbmdlIHRoZVJh
bmdlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZCBDRkNoYXJhY3RlclNldEFkZENoYXJhY3RlcnNJblN0cmluZyhDRk11dGFibGVD
aGFyYWN0ZXJTZXRSZWYgdGhlU2V0LCAgQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nKTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkNo
YXJhY3RlclNldFJlbW92ZUNoYXJhY3RlcnNJblN0cmluZyhDRk11dGFibGVDaGFyYWN0ZXJTZXRS
ZWYgdGhlU2V0LCBDRlN0cmluZ1JlZiB0aGVTdHJpbmcpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZDaGFyYWN0ZXJTZXRV
bmlvbihDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgdGhlU2V0LCBDRkNoYXJhY3RlclNldFJlZiB0
aGVPdGhlclNldCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkNoYXJhY3RlclNldEludGVyc2VjdChDRk11dGFibGVDaGFy
YWN0ZXJTZXRSZWYgdGhlU2V0LCBDRkNoYXJhY3RlclNldFJlZiB0aGVPdGhlclNldCk7DQoNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZDaGFy
YWN0ZXJTZXRJbnZlcnQoQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHRoZVNldCk7DQoNCn0NCg0K
DQojbGluZSA0MTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQ2hhcmFjdGVyU2V0LmgiDQoNCiNsaW5lIDQ2
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZM
b2NhbGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDIyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaCINCg0KI2xpbmUgNDcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3Vu
ZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQpleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgVUludDMyIENGU3RyaW5nRW5jb2Rpbmc7DQoNCg0K
DQoNCg0KdHlwZWRlZiBDRlN0cmluZ0VuY29kaW5nIENGU3RyaW5nQnVpbHRJbkVuY29kaW5nczsg
ZW51bSB7DQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNSb21hbiA9IDAsDQogICAga0NGU3RyaW5n
RW5jb2RpbmdXaW5kb3dzTGF0aW4xID0gMHgwNTAwLCANCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lT
T0xhdGluMSA9IDB4MDIwMSwgDQogICAga0NGU3RyaW5nRW5jb2RpbmdOZXh0U3RlcExhdGluID0g
MHgwQjAxLCANCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJID0gMHgwNjAwLCANCiAgICBrQ0ZT
dHJpbmdFbmNvZGluZ1VuaWNvZGUgPSAweDAxMDAsIA0KICAgIGtDRlN0cmluZ0VuY29kaW5nVVRG
OCA9IDB4MDgwMDAxMDAsIA0KICAgIGtDRlN0cmluZ0VuY29kaW5nTm9uTG9zc3lBU0NJSSA9IDB4
MEJGRiwgDQoNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1VURjE2ID0gMHgwMTAwLCANCiAgICBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjE2QkUgPSAweDEwMDAwMTAwLCANCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjE2TEUgPSAweDE0MDAwMTAwLCANCg0KICAgIGtDRlN0cmluZ0VuY29kaW5nVVRGMzIgPSAw
eDBjMDAwMTAwLCANCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1VURjMyQkUgPSAweDE4MDAwMTAwLCAN
CiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1VURjMyTEUgPSAweDFjMDAwMTAwIA0KfTsNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRlN0cmluZ0dldFR5cGVJ
RCh2b2lkKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDE4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCg0KDQoNCg0KDQojbGluZSAx
ODYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCiNsaW5lIDE5MSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZTdHJpbmcuaCINCg0KDQojbGluZSAxOTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3Ry
aW5nLmgiDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
RlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZVdpdGhQYXNjYWxTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYg
YWxsb2MsIENvbnN0U3RyMjU1UGFyYW0gcFN0ciwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlN0cmlu
Z0NyZWF0ZVdpdGhDU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBjb25zdCBjaGFyICpjU3Ry
LCBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhDRkFsbG9j
YXRvclJlZiBhbGxvYywgY29uc3QgVUludDggKmJ5dGVzLCBDRkluZGV4IG51bUJ5dGVzLCBDRlN0
cmluZ0VuY29kaW5nIGVuY29kaW5nLCBCb29sZWFuIGlzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBjb25zdCBVbmlDaGFy
ICpjaGFycywgQ0ZJbmRleCBudW1DaGFycyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZT
dHJpbmdDcmVhdGVXaXRoUGFzY2FsU3RyaW5nTm9Db3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBD
b25zdFN0cjI1NVBhcmFtIHBTdHIsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcsIENGQWxsb2Nh
dG9yUmVmIGNvbnRlbnRzRGVhbGxvY2F0b3IpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShDRkFs
bG9jYXRvclJlZiBhbGxvYywgY29uc3QgY2hhciAqY1N0ciwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZywgQ0ZBbGxvY2F0b3JSZWYgY29udGVudHNEZWFsbG9jYXRvcik7DQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdDcmVhdGVXaXRo
Qnl0ZXNOb0NvcHkoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIGNvbnN0IFVJbnQ4ICpieXRlcywgQ0ZJ
bmRleCBudW1CeXRlcywgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZywgQm9vbGVhbiBpc0V4dGVy
bmFsUmVwcmVzZW50YXRpb24sIENGQWxsb2NhdG9yUmVmIGNvbnRlbnRzRGVhbGxvY2F0b3IpOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShDRkFsbG9jYXRvclJlZiBhbGxvYywgY29uc3QgVW5p
Q2hhciAqY2hhcnMsIENGSW5kZXggbnVtQ2hhcnMsIENGQWxsb2NhdG9yUmVmIGNvbnRlbnRzRGVh
bGxvY2F0b3IpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3Ry
aW5nUmVmIENGU3RyaW5nQ3JlYXRlV2l0aFN1YnN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvYywg
Q0ZTdHJpbmdSZWYgc3RyLCBDRlJhbmdlIHJhbmdlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGU3RyaW5nQ3JlYXRlQ29weShDRkFsbG9jYXRvclJl
ZiBhbGxvYywgQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nKTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2MsIENGRGljdGlvbmFyeVJlZiBmb3JtYXRPcHRpb25zLCBDRlN0cmlu
Z1JlZiBmb3JtYXQsIC4uLikgOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Q0ZTdHJpbmdSZWYgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKENGQWxsb2Nh
dG9yUmVmIGFsbG9jLCBDRkRpY3Rpb25hcnlSZWYgZm9ybWF0T3B0aW9ucywgQ0ZTdHJpbmdSZWYg
Zm9ybWF0LCB2YV9saXN0IGFyZ3VtZW50cykgOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGTXV0YWJsZVN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZU11dGFibGUoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2MsIENGSW5kZXggbWF4TGVuZ3RoKTsNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGTXV0YWJsZVN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZU11dGFi
bGVDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRkluZGV4IG1heExlbmd0aCwgQ0ZTdHJpbmdS
ZWYgdGhlU3RyaW5nKTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGTXV0YWJsZVN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZU11dGFibGVXaXRoRXh0ZXJu
YWxDaGFyYWN0ZXJzTm9Db3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBVbmlDaGFyICpjaGFycywg
Q0ZJbmRleCBudW1DaGFycywgQ0ZJbmRleCBjYXBhY2l0eSwgQ0ZBbGxvY2F0b3JSZWYgZXh0ZXJu
YWxDaGFyYWN0ZXJzQWxsb2NhdG9yKTsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRlN0cmluZ0dldExlbmd0aChDRlN0cmluZ1JlZiB0aGVTdHJp
bmcpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNClVuaUNo
YXIgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJBdEluZGV4KENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZJ
bmRleCBpZHgpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0
cmluZ0dldENoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRlJhbmdlIHJhbmdlLCBV
bmlDaGFyICpidWZmZXIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZTdHJpbmdHZXRQYXNjYWxTdHJpbmcoQ0ZTdHJp
bmdSZWYgdGhlU3RyaW5nLCBTdHJpbmdQdHIgYnVmZmVyLCBDRkluZGV4IGJ1ZmZlclNpemUsIENG
U3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQm9vbGVhbiBDRlN0cmluZ0dldENTdHJpbmcoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBj
aGFyICpidWZmZXIsIENGSW5kZXggYnVmZmVyU2l6ZSwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGlu
Zyk7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ29uc3RT
dHJpbmdQdHIgQ0ZTdHJpbmdHZXRQYXNjYWxTdHJpbmdQdHIoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5n
LCBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsJDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpjb25zdCBjaGFyICpDRlN0cmluZ0dldENTdHJpbmdQdHIoQ0ZTdHJpbmdSZWYg
dGhlU3RyaW5nLCBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsJCQ0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgVW5pQ2hhciAqQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJz
UHRyKENGU3RyaW5nUmVmIHRoZVN0cmluZyk7CQkJCQkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRlN0
cmluZ0dldEJ5dGVzKENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZSYW5nZSByYW5nZSwgQ0ZTdHJp
bmdFbmNvZGluZyBlbmNvZGluZywgVUludDggbG9zc0J5dGUsIEJvb2xlYW4gaXNFeHRlcm5hbFJl
cHJlc2VudGF0aW9uLCBVSW50OCAqYnVmZmVyLCBDRkluZGV4IG1heEJ1ZkxlbiwgQ0ZJbmRleCAq
dXNlZEJ1Zkxlbik7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpDRlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9u
KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRkRhdGFSZWYgZGF0YSwgQ0ZTdHJpbmdFbmNvZGluZyBl
bmNvZGluZyk7CQ0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZEYXRhUmVm
IENGU3RyaW5nQ3JlYXRlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDRkFsbG9jYXRvclJlZiBhbGxv
YywgQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBVSW50
OCBsb3NzQnl0ZSk7CQkNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
RlN0cmluZ0VuY29kaW5nIENGU3RyaW5nR2V0U21hbGxlc3RFbmNvZGluZyhDRlN0cmluZ1JlZiB0
aGVTdHJpbmcpOwkNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5n
RW5jb2RpbmcgQ0ZTdHJpbmdHZXRGYXN0ZXN0RW5jb2RpbmcoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5n
KTsJDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdFbmNv
ZGluZyBDRlN0cmluZ0dldFN5c3RlbUVuY29kaW5nKHZvaWQpOwkJDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkluZGV4IENGU3RyaW5nR2V0TWF4aW11bVNpemVGb3JFbmNv
ZGluZyhDRkluZGV4IGxlbmd0aCwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CQ0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZTdHJpbmdH
ZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQ0ZTdHJpbmdSZWYgc3RyaW5nLCBjaGFyICpidWZm
ZXIsIENGSW5kZXggbWF4QnVmTGVuKTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpDRkluZGV4IENGU3RyaW5nR2V0TWF4aW11bVNpemVPZkZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihDRlN0cmluZ1JlZiBzdHJpbmcpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGU3RyaW5nQ3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihDRkFsbG9jYXRvclJlZiBhbGxvYywgY29uc3QgY2hhciAqYnVmZmVyKTsNCg0K
DQoNCg0KDQoNCnR5cGVkZWYgQ0ZPcHRpb25GbGFncyBDRlN0cmluZ0NvbXBhcmVGbGFnczsgZW51
bSB7DQogICAga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSA9IDEsCQ0KICAgIGtDRkNvbXBhcmVC
YWNrd2FyZHMgPSA0LAkJDQogICAga0NGQ29tcGFyZUFuY2hvcmVkID0gOCwJCQ0KICAgIGtDRkNv
bXBhcmVOb25saXRlcmFsID0gMTYsCQkNCiAgICBrQ0ZDb21wYXJlTG9jYWxpemVkID0gMzIsCQkN
CiAgICBrQ0ZDb21wYXJlTnVtZXJpY2FsbHkgPSA2NCwJCQ0KICAgIGtDRkNvbXBhcmVEaWFjcml0
aWNJbnNlbnNpdGl2ZSAgPSAxMjgsIA0KICAgIGtDRkNvbXBhcmVXaWR0aEluc2Vuc2l0aXZlICA9
IDI1NiwgDQogICAga0NGQ29tcGFyZUZvcmNlZE9yZGVyaW5nICA9IDUxMiANCn07DQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZDb21wYXJpc29uUmVzdWx0
IENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zQW5kTG9jYWxlKENGU3RyaW5nUmVmIHRoZVN0cmlu
ZzEsIENGU3RyaW5nUmVmIHRoZVN0cmluZzIsIENGUmFuZ2UgcmFuZ2VUb0NvbXBhcmUsIENGU3Ry
aW5nQ29tcGFyZUZsYWdzIGNvbXBhcmVPcHRpb25zLCBDRkxvY2FsZVJlZiBsb2NhbGUpIDsNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkNvbXBhcmlzb25SZXN1bHQg
Q0ZTdHJpbmdDb21wYXJlV2l0aE9wdGlvbnMoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nMSwgQ0ZTdHJp
bmdSZWYgdGhlU3RyaW5nMiwgQ0ZSYW5nZSByYW5nZVRvQ29tcGFyZSwgQ0ZTdHJpbmdDb21wYXJl
RmxhZ3MgY29tcGFyZU9wdGlvbnMpOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpDRkNvbXBhcmlzb25SZXN1bHQgQ0ZTdHJpbmdDb21wYXJlKENGU3RyaW5nUmVm
IHRoZVN0cmluZzEsIENGU3RyaW5nUmVmIHRoZVN0cmluZzIsIENGU3RyaW5nQ29tcGFyZUZsYWdz
IGNvbXBhcmVPcHRpb25zKTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpCb29sZWFuIENGU3RyaW5nRmluZFdpdGhPcHRpb25zQW5kTG9jYWxlKENGU3RyaW5n
UmVmIHRoZVN0cmluZywgQ0ZTdHJpbmdSZWYgc3RyaW5nVG9GaW5kLCBDRlJhbmdlIHJhbmdlVG9T
ZWFyY2gsIENGU3RyaW5nQ29tcGFyZUZsYWdzIHNlYXJjaE9wdGlvbnMsIENGTG9jYWxlUmVmIGxv
Y2FsZSwgQ0ZSYW5nZSAqcmVzdWx0KSA7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQm9vbGVhbiBDRlN0cmluZ0ZpbmRXaXRoT3B0aW9ucyhDRlN0cmluZ1JlZiB0aGVT
dHJpbmcsIENGU3RyaW5nUmVmIHN0cmluZ1RvRmluZCwgQ0ZSYW5nZSByYW5nZVRvU2VhcmNoLCBD
RlN0cmluZ0NvbXBhcmVGbGFncyBzZWFyY2hPcHRpb25zLCBDRlJhbmdlICpyZXN1bHQpOw0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlS
ZWYgQ0ZTdHJpbmdDcmVhdGVBcnJheVdpdGhGaW5kUmVzdWx0cyhDRkFsbG9jYXRvclJlZiBhbGxv
YywgQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRlN0cmluZ1JlZiBzdHJpbmdUb0ZpbmQsIENGUmFu
Z2UgcmFuZ2VUb1NlYXJjaCwgQ0ZTdHJpbmdDb21wYXJlRmxhZ3MgY29tcGFyZU9wdGlvbnMpOw0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGUmFuZ2UgQ0ZTdHJpbmdG
aW5kKENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZTdHJpbmdSZWYgc3RyaW5nVG9GaW5kLCBDRlN0
cmluZ0NvbXBhcmVGbGFncyBjb21wYXJlT3B0aW9ucyk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpCb29sZWFuIENGU3RyaW5nSGFzUHJlZml4KENGU3RyaW5nUmVmIHRoZVN0
cmluZywgQ0ZTdHJpbmdSZWYgcHJlZml4KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJvb2xlYW4gQ0ZTdHJpbmdIYXNTdWZmaXgoQ0ZTdHJpbmdSZWYgdGhlU3RyaW5nLCBD
RlN0cmluZ1JlZiBzdWZmaXgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGUmFuZ2UgQ0ZTdHJpbmdHZXRSYW5nZU9mQ29tcG9z
ZWRDaGFyYWN0ZXJzQXRJbmRleChDRlN0cmluZ1JlZiB0aGVTdHJpbmcsIENGSW5kZXggdGhlSW5k
ZXgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQm9vbGVhbiBDRlN0cmlu
Z0ZpbmRDaGFyYWN0ZXJGcm9tU2V0KENGU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZDaGFyYWN0ZXJT
ZXRSZWYgdGhlU2V0LCBDRlJhbmdlIHJhbmdlVG9TZWFyY2gsIENGU3RyaW5nQ29tcGFyZUZsYWdz
IHNlYXJjaE9wdGlvbnMsIENGUmFuZ2UgKnJlc3VsdCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3RyaW5nR2V0TGluZUJvdW5k
cyhDRlN0cmluZ1JlZiB0aGVTdHJpbmcsIENGUmFuZ2UgcmFuZ2UsIENGSW5kZXggKmxpbmVCZWdp
bkluZGV4LCBDRkluZGV4ICpsaW5lRW5kSW5kZXgsIENGSW5kZXggKmNvbnRlbnRzRW5kSW5kZXgp
OyANCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3RyaW5n
R2V0UGFyYWdyYXBoQm91bmRzKENGU3RyaW5nUmVmIHN0cmluZywgQ0ZSYW5nZSByYW5nZSwgQ0ZJ
bmRleCAqcGFyQmVnaW5JbmRleCwgQ0ZJbmRleCAqcGFyRW5kSW5kZXgsIENGSW5kZXggKmNvbnRl
bnRzRW5kSW5kZXgpIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRlN0
cmluZ0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleChDRlN0cmluZ1JlZiBzdHJpbmcs
IENGSW5kZXggbG9jYXRpb24sIENGUmFuZ2UgbGltaXRSYW5nZSwgQ0ZPcHRpb25GbGFncyBvcHRp
b25zLCBDRkxvY2FsZVJlZiBsb2NhbGUsIFVURjMyQ2hhciAqY2hhcmFjdGVyKSA7DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGU3RyaW5nSXNIeXBoZW5hdGlv
bkF2YWlsYWJsZUZvckxvY2FsZShDRkxvY2FsZVJlZiBsb2NhbGUpIDsNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlN0cmluZ0NyZWF0ZUJ5Q29t
YmluaW5nU3RyaW5ncyhDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZBcnJheVJlZiB0aGVBcnJheSwg
Q0ZTdHJpbmdSZWYgc2VwYXJhdG9yU3RyaW5nKTsJDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpDRkFycmF5UmVmIENGU3RyaW5nQ3JlYXRlQXJyYXlCeVNlcGFyYXRpbmdTdHJp
bmdzKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlN0cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5n
UmVmIHNlcGFyYXRvclN0cmluZyk7CQ0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KU0ludDMyIENGU3RyaW5nR2V0SW50VmFsdWUoQ0ZTdHJpbmdSZWYgc3RyKTsJCQ0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KZG91YmxlIENGU3RyaW5nR2V0RG91
YmxlVmFsdWUoQ0ZTdHJpbmdSZWYgc3RyKTsJDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0cmluZ0FwcGVuZChDRk11dGFibGVTdHJp
bmdSZWYgdGhlU3RyaW5nLCBDRlN0cmluZ1JlZiBhcHBlbmRlZFN0cmluZyk7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3RyaW5nQXBwZW5kQ2hhcmFjdGVycyhD
Rk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBjb25zdCBVbmlDaGFyICpjaGFycywgQ0ZJbmRl
eCBudW1DaGFycyk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENG
U3RyaW5nQXBwZW5kUGFzY2FsU3RyaW5nKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENv
bnN0U3RyMjU1UGFyYW0gcFN0ciwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3RyaW5nQXBwZW5kQ1N0cmluZyhD
Rk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBjb25zdCBjaGFyICpjU3RyLCBDRlN0cmluZ0Vu
Y29kaW5nIGVuY29kaW5nKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZv
aWQgQ0ZTdHJpbmdBcHBlbmRGb3JtYXQoQ0ZNdXRhYmxlU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZE
aWN0aW9uYXJ5UmVmIGZvcm1hdE9wdGlvbnMsIENGU3RyaW5nUmVmIGZvcm1hdCwgLi4uKSA7DQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3RyaW5nQXBwZW5kRm9y
bWF0QW5kQXJndW1lbnRzKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGRGljdGlvbmFy
eVJlZiBmb3JtYXRPcHRpb25zLCBDRlN0cmluZ1JlZiBmb3JtYXQsIHZhX2xpc3QgYXJndW1lbnRz
KSA7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3RyaW5nSW5z
ZXJ0KENGTXV0YWJsZVN0cmluZ1JlZiBzdHIsIENGSW5kZXggaWR4LCBDRlN0cmluZ1JlZiBpbnNl
cnRlZFN0cik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3Ry
aW5nRGVsZXRlKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGUmFuZ2UgcmFuZ2UpOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0cmluZ1JlcGxhY2Uo
Q0ZNdXRhYmxlU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZSYW5nZSByYW5nZSwgQ0ZTdHJpbmdSZWYg
cmVwbGFjZW1lbnQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBD
RlN0cmluZ1JlcGxhY2VBbGwoQ0ZNdXRhYmxlU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZTdHJpbmdS
ZWYgcmVwbGFjZW1lbnQpOwkNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpDRkluZGV4IENGU3RyaW5nRmluZEFuZFJlcGxhY2UoQ0ZNdXRhYmxlU3Ry
aW5nUmVmIHRoZVN0cmluZywgQ0ZTdHJpbmdSZWYgc3RyaW5nVG9GaW5kLCBDRlN0cmluZ1JlZiBy
ZXBsYWNlbWVudFN0cmluZywgQ0ZSYW5nZSByYW5nZVRvU2VhcmNoLCBDRlN0cmluZ0NvbXBhcmVG
bGFncyBjb21wYXJlT3B0aW9ucyk7DQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0cmluZ1NldEV4dGVybmFsQ2hhcmFjdGVyc05vQ29w
eShDRk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBVbmlDaGFyICpjaGFycywgQ0ZJbmRleCBs
ZW5ndGgsIENGSW5kZXggY2FwYWNpdHkpOwkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGU3RyaW5nUGFkKENGTXV0YWJsZVN0
cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nUmVmIHBhZFN0cmluZywgQ0ZJbmRleCBsZW5ndGgs
IENGSW5kZXggaW5kZXhJbnRvUGFkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCnZvaWQgQ0ZTdHJpbmdUcmltKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGU3Ry
aW5nUmVmIHRyaW1TdHJpbmcpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
dm9pZCBDRlN0cmluZ1RyaW1XaGl0ZXNwYWNlKENGTXV0YWJsZVN0cmluZ1JlZiB0aGVTdHJpbmcp
Ow0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0cmluZ0xvd2Vy
Y2FzZShDRk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRkxvY2FsZVJlZiBsb2NhbGUpOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0cmluZ1VwcGVyY2Fz
ZShDRk11dGFibGVTdHJpbmdSZWYgdGhlU3RyaW5nLCBDRkxvY2FsZVJlZiBsb2NhbGUpOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0cmluZ0NhcGl0YWxpemUo
Q0ZNdXRhYmxlU3RyaW5nUmVmIHRoZVN0cmluZywgQ0ZMb2NhbGVSZWYgbG9jYWxlKTsNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBDRkluZGV4IENGU3RyaW5nTm9ybWFsaXphdGlvbkZvcm07IGVudW0g
ew0KCWtDRlN0cmluZ05vcm1hbGl6YXRpb25Gb3JtRCA9IDAsIA0KCWtDRlN0cmluZ05vcm1hbGl6
YXRpb25Gb3JtS0QsIA0KCWtDRlN0cmluZ05vcm1hbGl6YXRpb25Gb3JtQywgDQoJa0NGU3RyaW5n
Tm9ybWFsaXphdGlvbkZvcm1LQyANCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIENGU3RyaW5nTm9ybWFsaXplKENGTXV0YWJs
ZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGU3RyaW5nTm9ybWFsaXphdGlvbkZvcm0gdGhlRm9ybSk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZTdHJpbmdGb2xkKENGTXV0YWJs
ZVN0cmluZ1JlZiB0aGVTdHJpbmcsIENGT3B0aW9uRmxhZ3MgdGhlRmxhZ3MsIENGTG9jYWxlUmVm
IHRoZUxvY2FsZSkgOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpCb29sZWFuIENGU3RyaW5nVHJhbnNmb3JtKENGTXV0YWJsZVN0cmluZ1JlZiBzdHJpbmcsIENG
UmFuZ2UgKnJhbmdlLCBDRlN0cmluZ1JlZiB0cmFuc2Zvcm0sIEJvb2xlYW4gcmV2ZXJzZSk7DQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZTdHJpbmdUcmFuc2Zvcm1TdHJpcENvbWJpbmluZ01hcmtzOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtVG9MYXRp
bjsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtD
RlN0cmluZ1RyYW5zZm9ybUZ1bGx3aWR0aEhhbGZ3aWR0aDsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybUxhdGluS2F0
YWthbmE7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0ZTdHJpbmdUcmFuc2Zvcm1MYXRpbkhpcmFnYW5hOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtSGlyYWdhbmFL
YXRha2FuYTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5n
UmVmIGtDRlN0cmluZ1RyYW5zZm9ybU1hbmRhcmluTGF0aW47DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJpbmdUcmFuc2Zvcm1MYXRpbkhh
bmd1bDsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVm
IGtDRlN0cmluZ1RyYW5zZm9ybUxhdGluQXJhYmljOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3JtTGF0aW5IZWJyZXc7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZT
dHJpbmdUcmFuc2Zvcm1MYXRpblRoYWk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJpbmdUcmFuc2Zvcm1MYXRpbkN5cmlsbGljOw0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5n
VHJhbnNmb3JtTGF0aW5HcmVlazsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNv
bnN0IENGU3RyaW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybVRvWE1MSGV4Ow0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyaW5nVHJhbnNmb3Jt
VG9Vbmljb2RlTmFtZTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENG
U3RyaW5nUmVmIGtDRlN0cmluZ1RyYW5zZm9ybVN0cmlwRGlhY3JpdGljcyA7DQoNCg0KDQoNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRlN0cmluZ0lzRW5j
b2RpbmdBdmFpbGFibGUoQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7DQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdFbmNvZGluZyAqQ0ZTdHJp
bmdHZXRMaXN0T2ZBdmFpbGFibGVFbmNvZGluZ3Modm9pZCk7DQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdHZXROYW1lT2ZFbmNvZGlu
ZyhDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQp1bnNpZ25lZCBsb25nIENGU3RyaW5nQ29udmVydEVuY29kaW5nVG9OU1N0
cmluZ0VuY29kaW5nKENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOw0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdFbmNvZGluZyBDRlN0cmluZ0NvbnZlcnROU1N0
cmluZ0VuY29kaW5nVG9FbmNvZGluZyh1bnNpZ25lZCBsb25nIGVuY29kaW5nKTsNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpVSW50MzIgQ0ZTdHJpbmdDb252ZXJ0RW5j
b2RpbmdUb1dpbmRvd3NDb2RlcGFnZShDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nRW5jb2RpbmcgQ0ZTdHJpbmdD
b252ZXJ0V2luZG93c0NvZGVwYWdlVG9FbmNvZGluZyhVSW50MzIgY29kZXBhZ2UpOw0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nRW5jb2RpbmcgQ0ZTdHJp
bmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyhDRlN0cmluZ1JlZiB0aGVTdHJpbmcp
Ow0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgIENGU3Ry
aW5nQ29udmVydEVuY29kaW5nVG9JQU5BQ2hhclNldE5hbWUoQ0ZTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZyk7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3Ry
aW5nRW5jb2RpbmcgQ0ZTdHJpbmdHZXRNb3N0Q29tcGF0aWJsZU1hY1N0cmluZ0VuY29kaW5nKENG
U3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBl
ZGVmIHN0cnVjdCB7DQogICAgVW5pQ2hhciBidWZmZXJbNjRdOw0KICAgIENGU3RyaW5nUmVmIHRo
ZVN0cmluZzsNCiAgICBjb25zdCBVbmlDaGFyICpkaXJlY3RCdWZmZXI7DQogICAgQ0ZSYW5nZSBy
YW5nZVRvQnVmZmVyOwkJDQogICAgQ0ZJbmRleCBidWZmZXJlZFJhbmdlU3RhcnQ7CQkNCiAgICBD
RkluZGV4IGJ1ZmZlcmVkUmFuZ2VFbmQ7CQkNCn0gQ0ZTdHJpbmdJbmxpbmVCdWZmZXI7DQoNCg0K
c3RhdGljIGlubGluZSB2b2lkIENGU3RyaW5nSW5pdElubGluZUJ1ZmZlcihDRlN0cmluZ1JlZiBz
dHIsIENGU3RyaW5nSW5saW5lQnVmZmVyICpidWYsIENGUmFuZ2UgcmFuZ2UpIHsNCiAgICBidWYt
PnRoZVN0cmluZyA9IHN0cjsNCiAgICBidWYtPnJhbmdlVG9CdWZmZXIgPSByYW5nZTsNCiAgICBi
dWYtPmRpcmVjdEJ1ZmZlciA9IENGU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzdHIpOw0KICAgIGJ1
Zi0+YnVmZmVyZWRSYW5nZVN0YXJ0ID0gYnVmLT5idWZmZXJlZFJhbmdlRW5kID0gMDsNCn0NCg0K
c3RhdGljIGlubGluZSBVbmlDaGFyIENGU3RyaW5nR2V0Q2hhcmFjdGVyRnJvbUlubGluZUJ1ZmZl
cihDRlN0cmluZ0lubGluZUJ1ZmZlciAqYnVmLCBDRkluZGV4IGlkeCkgew0KICAgIGlmIChidWYt
PmRpcmVjdEJ1ZmZlcikgew0KCWlmIChpZHggPCAwIHx8IGlkeCA+PSBidWYtPnJhbmdlVG9CdWZm
ZXIubGVuZ3RoKSByZXR1cm4gMDsNCiAgICAgICAgcmV0dXJuIGJ1Zi0+ZGlyZWN0QnVmZmVyW2lk
eCArIGJ1Zi0+cmFuZ2VUb0J1ZmZlci5sb2NhdGlvbl07DQogICAgfQ0KICAgIGlmIChpZHggPj0g
YnVmLT5idWZmZXJlZFJhbmdlRW5kIHx8IGlkeCA8IGJ1Zi0+YnVmZmVyZWRSYW5nZVN0YXJ0KSB7
DQoJaWYgKGlkeCA8IDAgfHwgaWR4ID49IGJ1Zi0+cmFuZ2VUb0J1ZmZlci5sZW5ndGgpIHJldHVy
biAwOw0KCWlmICgoYnVmLT5idWZmZXJlZFJhbmdlU3RhcnQgPSBpZHggLSA0KSA8IDApIGJ1Zi0+
YnVmZmVyZWRSYW5nZVN0YXJ0ID0gMDsNCglidWYtPmJ1ZmZlcmVkUmFuZ2VFbmQgPSBidWYtPmJ1
ZmZlcmVkUmFuZ2VTdGFydCArIDY0Ow0KCWlmIChidWYtPmJ1ZmZlcmVkUmFuZ2VFbmQgPiBidWYt
PnJhbmdlVG9CdWZmZXIubGVuZ3RoKSBidWYtPmJ1ZmZlcmVkUmFuZ2VFbmQgPSBidWYtPnJhbmdl
VG9CdWZmZXIubGVuZ3RoOw0KCUNGU3RyaW5nR2V0Q2hhcmFjdGVycyhidWYtPnRoZVN0cmluZywg
Q0ZSYW5nZU1ha2UoYnVmLT5yYW5nZVRvQnVmZmVyLmxvY2F0aW9uICsgYnVmLT5idWZmZXJlZFJh
bmdlU3RhcnQsIGJ1Zi0+YnVmZmVyZWRSYW5nZUVuZCAtIGJ1Zi0+YnVmZmVyZWRSYW5nZVN0YXJ0
KSwgYnVmLT5idWZmZXIpOw0KICAgIH0NCiAgICByZXR1cm4gYnVmLT5idWZmZXJbaWR4IC0gYnVm
LT5idWZmZXJlZFJhbmdlU3RhcnRdOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA4NDgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCg0Kc3RhdGljIGlubGluZSBCb29s
ZWFuIENGU3RyaW5nSXNTdXJyb2dhdGVIaWdoQ2hhcmFjdGVyKFVuaUNoYXIgY2hhcmFjdGVyKSB7
DQogICAgcmV0dXJuICgoY2hhcmFjdGVyID49IDB4RDgwMFVMKSAmJiAoY2hhcmFjdGVyIDw9IDB4
REJGRlVMKSA/IHRydWUgOiBmYWxzZSk7DQp9DQoNCnN0YXRpYyBpbmxpbmUgQm9vbGVhbiBDRlN0
cmluZ0lzU3Vycm9nYXRlTG93Q2hhcmFjdGVyKFVuaUNoYXIgY2hhcmFjdGVyKSB7DQogICAgcmV0
dXJuICgoY2hhcmFjdGVyID49IDB4REMwMFVMKSAmJiAoY2hhcmFjdGVyIDw9IDB4REZGRlVMKSA/
IHRydWUgOiBmYWxzZSk7DQp9DQoNCnN0YXRpYyBpbmxpbmUgVVRGMzJDaGFyIENGU3RyaW5nR2V0
TG9uZ0NoYXJhY3RlckZvclN1cnJvZ2F0ZVBhaXIoVW5pQ2hhciBzdXJyb2dhdGVIaWdoLCBVbmlD
aGFyIHN1cnJvZ2F0ZUxvdykgew0KICAgIHJldHVybiAoVVRGMzJDaGFyKSgoKHN1cnJvZ2F0ZUhp
Z2ggLSAweEQ4MDBVTCkgPDwgMTApICsgKHN1cnJvZ2F0ZUxvdyAtIDB4REMwMFVMKSArIDB4MDAx
MDAwMFVMKTsNCn0NCg0KDQpzdGF0aWMgaW5saW5lIEJvb2xlYW4gQ0ZTdHJpbmdHZXRTdXJyb2dh
dGVQYWlyRm9yTG9uZ0NoYXJhY3RlcihVVEYzMkNoYXIgY2hhcmFjdGVyLCBVbmlDaGFyICpzdXJy
b2dhdGVzKSB7DQogICAgaWYgKChjaGFyYWN0ZXIgPiAweEZGRkZVTCkgJiYgKGNoYXJhY3RlciA8
IDB4MTEwMDAwVUwpKSB7IA0KICAgICAgICBjaGFyYWN0ZXIgLT0gMHgxMDAwMDsNCiAgICAgICAg
aWYgKDAgIT0gc3Vycm9nYXRlcykgew0KICAgICAgICAgICAgc3Vycm9nYXRlc1swXSA9IChVbmlD
aGFyKSgoY2hhcmFjdGVyID4+IDEwKSArIDB4RDgwMFVMKTsNCiAgICAgICAgICAgIHN1cnJvZ2F0
ZXNbMV0gPSAoVW5pQ2hhcikoKGNoYXJhY3RlciAmIDB4M0ZGKSArIDB4REMwMFVMKTsNCiAgICAg
ICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBpZiAoMCAh
PSBzdXJyb2dhdGVzKSAqc3Vycm9nYXRlcyA9IChVbmlDaGFyKWNoYXJhY3RlcjsNCiAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZTaG93KENGVHlwZVJlZiBvYmopOw0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlNob3dTdHIoQ0ZTdHJpbmdSZWYgc3RyKTsN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgIF9fQ0ZT
dHJpbmdNYWtlQ29uc3RhbnRTdHJpbmcoY29uc3QgY2hhciAqY1N0cik7CQ0KDQp9DQoNCg0KI2xp
bmUgOTAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oIg0KI2xpbmUgNDcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGVGltZVpvbmUuaCINCg0KDQpleHRlcm4gIkMiIHsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCkNGVHlwZUlEIENGVGltZVpvbmVHZXRUeXBlSUQodm9pZCk7DQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlRpbWVab25lUmVmIENGVGltZVpvbmVD
b3B5U3lzdGVtKHZvaWQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9p
ZCBDRlRpbWVab25lUmVzZXRTeXN0ZW0odm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpDRlRpbWVab25lUmVmIENGVGltZVpvbmVDb3B5RGVmYXVsdCh2b2lkKTsNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZUaW1lWm9uZVNldERlZmF1
bHQoQ0ZUaW1lWm9uZVJlZiB0eik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpDRkFycmF5UmVmIENGVGltZVpvbmVDb3B5S25vd25OYW1lcyh2b2lkKTsNCg0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGRGljdGlvbmFyeVJlZiBDRlRpbWVab25lQ29weUFi
YnJldmlhdGlvbkRpY3Rpb25hcnkodm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp2b2lkIENGVGltZVpvbmVTZXRBYmJyZXZpYXRpb25EaWN0aW9uYXJ5KENGRGljdGlv
bmFyeVJlZiBkaWN0KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVGlt
ZVpvbmVSZWYgQ0ZUaW1lWm9uZUNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3Ry
aW5nUmVmIG5hbWUsIENGRGF0YVJlZiBkYXRhKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGVGltZVpvbmVSZWYgQ0ZUaW1lWm9uZUNyZWF0ZVdpdGhUaW1lSW50ZXJ2YWxG
cm9tR01UKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZUaW1lSW50ZXJ2YWwgdGkpOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZUaW1lWm9uZVJlZiBDRlRpbWVab25l
Q3JlYXRlV2l0aE5hbWUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBuYW1l
LCBCb29sZWFuIHRyeUFiYnJldik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpDRlN0cmluZ1JlZiBDRlRpbWVab25lR2V0TmFtZShDRlRpbWVab25lUmVmIHR6KTsNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGRGF0YVJlZiBDRlRpbWVab25lR2V0RGF0
YShDRlRpbWVab25lUmVmIHR6KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGVGltZUludGVydmFsIENGVGltZVpvbmVHZXRTZWNvbmRzRnJvbUdNVChDRlRpbWVab25lUmVm
IHR6LCBDRkFic29sdXRlVGltZSBhdCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpDRlN0cmluZ1JlZiBDRlRpbWVab25lQ29weUFiYnJldmlhdGlvbihDRlRpbWVab25lUmVm
IHR6LCBDRkFic29sdXRlVGltZSBhdCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCb29sZWFuIENGVGltZVpvbmVJc0RheWxpZ2h0U2F2aW5nVGltZShDRlRpbWVab25lUmVm
IHR6LCBDRkFic29sdXRlVGltZSBhdCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpDRlRpbWVJbnRlcnZhbCBDRlRpbWVab25lR2V0RGF5bGlnaHRTYXZpbmdUaW1lT2Zmc2V0
KENGVGltZVpvbmVSZWYgdHosIENGQWJzb2x1dGVUaW1lIGF0KSA7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFic29sdXRlVGltZSBDRlRpbWVab25lR2V0TmV4dERheWxp
Z2h0U2F2aW5nVGltZVRyYW5zaXRpb24oQ0ZUaW1lWm9uZVJlZiB0eiwgQ0ZBYnNvbHV0ZVRpbWUg
YXQpIDsNCg0KdHlwZWRlZiBDRkluZGV4IENGVGltZVpvbmVOYW1lU3R5bGU7IGVudW0gew0KCWtD
RlRpbWVab25lTmFtZVN0eWxlU3RhbmRhcmQsDQoJa0NGVGltZVpvbmVOYW1lU3R5bGVTaG9ydFN0
YW5kYXJkLA0KCWtDRlRpbWVab25lTmFtZVN0eWxlRGF5bGlnaHRTYXZpbmcsDQoJa0NGVGltZVpv
bmVOYW1lU3R5bGVTaG9ydERheWxpZ2h0U2F2aW5nLA0KCWtDRlRpbWVab25lTmFtZVN0eWxlR2Vu
ZXJpYywNCglrQ0ZUaW1lWm9uZU5hbWVTdHlsZVNob3J0R2VuZXJpYw0KfSA7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlRpbWVab25lQ29weUxvY2Fs
aXplZE5hbWUoQ0ZUaW1lWm9uZVJlZiB0eiwgQ0ZUaW1lWm9uZU5hbWVTdHlsZSBzdHlsZSwgQ0ZM
b2NhbGVSZWYgbG9jYWxlKSA7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZUaW1lWm9uZVN5c3RlbVRpbWVab25lRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uIDsNCg0KfQ0KDQoNCiNsaW5lIDEyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZUaW1lWm9uZS5o
Ig0KDQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZDYWxlbmRhci5oIg0KDQoNCmV4dGVybiAi
QyIgew0KDQp0eXBlZGVmIHN0cnVjdCBfX0NGQ2FsZW5kYXIgKiBDRkNhbGVuZGFyUmVmOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZUeXBlSUQgQ0ZDYWxlbmRhckdldFR5
cGVJRCh2b2lkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQ2FsZW5k
YXJSZWYgQ0ZDYWxlbmRhckNvcHlDdXJyZW50KHZvaWQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQ0ZDYWxlbmRhclJlZiBDRkNhbGVuZGFyQ3JlYXRlV2l0aElkZW50aWZp
ZXIoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsNCgkN
CgkNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGQ2Fs
ZW5kYXJHZXRJZGVudGlmaWVyKENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIpOw0KCQ0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZMb2NhbGVSZWYgQ0ZDYWxlbmRhckNvcHlMb2Nh
bGUoQ0ZDYWxlbmRhclJlZiBjYWxlbmRhcik7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQp2b2lkIENGQ2FsZW5kYXJTZXRMb2NhbGUoQ0ZDYWxlbmRhclJlZiBjYWxlbmRhciwg
Q0ZMb2NhbGVSZWYgbG9jYWxlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGVGltZVpvbmVSZWYgQ0ZDYWxlbmRhckNvcHlUaW1lWm9uZShDRkNhbGVuZGFyUmVmIGNhbGVu
ZGFyKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZDYWxlbmRh
clNldFRpbWVab25lKENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIsIENGVGltZVpvbmVSZWYgdHopOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRkNhbGVuZGFyR2V0
Rmlyc3RXZWVrZGF5KENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIpOw0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkNhbGVuZGFyU2V0Rmlyc3RXZWVrZGF5KENGQ2FsZW5k
YXJSZWYgY2FsZW5kYXIsIENGSW5kZXggd2tkeSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpDQpDRkluZGV4IENGQ2FsZW5kYXJHZXRNaW5pbXVtRGF5c0luRmlyc3RXZWVrKENG
Q2FsZW5kYXJSZWYgY2FsZW5kYXIpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZCBDRkNhbGVuZGFyU2V0TWluaW11bURheXNJbkZpcnN0V2VlayhDRkNhbGVuZGFyUmVm
IGNhbGVuZGFyLCBDRkluZGV4IG13ZCk7DQoNCg0KdHlwZWRlZiBDRk9wdGlvbkZsYWdzIENGQ2Fs
ZW5kYXJVbml0OyBlbnVtIHsNCglrQ0ZDYWxlbmRhclVuaXRFcmEgPSAoMVVMIDw8IDEpLA0KCWtD
RkNhbGVuZGFyVW5pdFllYXIgPSAoMVVMIDw8IDIpLA0KCWtDRkNhbGVuZGFyVW5pdE1vbnRoID0g
KDFVTCA8PCAzKSwNCglrQ0ZDYWxlbmRhclVuaXREYXkgPSAoMVVMIDw8IDQpLA0KCWtDRkNhbGVu
ZGFyVW5pdEhvdXIgPSAoMVVMIDw8IDUpLA0KCWtDRkNhbGVuZGFyVW5pdE1pbnV0ZSA9ICgxVUwg
PDwgNiksDQoJa0NGQ2FsZW5kYXJVbml0U2Vjb25kID0gKDFVTCA8PCA3KSwNCglrQ0ZDYWxlbmRh
clVuaXRXZWVrID0gKDFVTCA8PCA4KSAsDQoJa0NGQ2FsZW5kYXJVbml0V2Vla2RheSA9ICgxVUwg
PDwgOSksDQoJa0NGQ2FsZW5kYXJVbml0V2Vla2RheU9yZGluYWwgPSAoMVVMIDw8IDEwKSwNCglr
Q0ZDYWxlbmRhclVuaXRRdWFydGVyICA9ICgxVUwgPDwgMTEpLA0KCWtDRkNhbGVuZGFyVW5pdFdl
ZWtPZk1vbnRoICA9ICgxVUwgPDwgMTIpLA0KCWtDRkNhbGVuZGFyVW5pdFdlZWtPZlllYXIgID0g
KDFVTCA8PCAxMyksDQoJa0NGQ2FsZW5kYXJVbml0WWVhckZvcldlZWtPZlllYXIgID0gKDFVTCA8
PCAxNCksDQp9Ow0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZSYW5nZSBD
RkNhbGVuZGFyR2V0TWluaW11bVJhbmdlT2ZVbml0KENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIsIENG
Q2FsZW5kYXJVbml0IHVuaXQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Q0ZSYW5nZSBDRkNhbGVuZGFyR2V0TWF4aW11bVJhbmdlT2ZVbml0KENGQ2FsZW5kYXJSZWYgY2Fs
ZW5kYXIsIENGQ2FsZW5kYXJVbml0IHVuaXQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQ0ZSYW5nZSBDRkNhbGVuZGFyR2V0UmFuZ2VPZlVuaXQoQ0ZDYWxlbmRhclJlZiBj
YWxlbmRhciwgQ0ZDYWxlbmRhclVuaXQgc21hbGxlclVuaXQsIENGQ2FsZW5kYXJVbml0IGJpZ2dl
clVuaXQsIENGQWJzb2x1dGVUaW1lIGF0KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGSW5kZXggQ0ZDYWxlbmRhckdldE9yZGluYWxpdHlPZlVuaXQoQ0ZDYWxlbmRhclJl
ZiBjYWxlbmRhciwgQ0ZDYWxlbmRhclVuaXQgc21hbGxlclVuaXQsIENGQ2FsZW5kYXJVbml0IGJp
Z2dlclVuaXQsIENGQWJzb2x1dGVUaW1lIGF0KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkJvb2xlYW4gQ0ZDYWxlbmRhckdldFRpbWVSYW5nZU9mVW5pdChDRkNhbGVuZGFy
UmVmIGNhbGVuZGFyLCBDRkNhbGVuZGFyVW5pdCB1bml0LCBDRkFic29sdXRlVGltZSBhdCwgQ0ZB
YnNvbHV0ZVRpbWUgKnN0YXJ0cCwgQ0ZUaW1lSW50ZXJ2YWwgKnRpcCkgOw0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRkNhbGVuZGFyQ29tcG9zZUFic29sdXRl
VGltZShDRkNhbGVuZGFyUmVmIGNhbGVuZGFyLCAgQ0ZBYnNvbHV0ZVRpbWUgKmF0LCBjb25zdCBj
aGFyICpjb21wb25lbnREZXNjLCAuLi4pOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQm9vbGVhbiBDRkNhbGVuZGFyRGVjb21wb3NlQWJzb2x1dGVUaW1lKENGQ2FsZW5kYXJS
ZWYgY2FsZW5kYXIsIENGQWJzb2x1dGVUaW1lIGF0LCBjb25zdCBjaGFyICpjb21wb25lbnREZXNj
LCAuLi4pOw0KDQoNCmVudW0gew0KICAgIGtDRkNhbGVuZGFyQ29tcG9uZW50c1dyYXAgPSAoMVVM
IDw8IDApICANCn07DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFu
IENGQ2FsZW5kYXJBZGRDb21wb25lbnRzKENGQ2FsZW5kYXJSZWYgY2FsZW5kYXIsICBDRkFic29s
dXRlVGltZSAqYXQsIENGT3B0aW9uRmxhZ3Mgb3B0aW9ucywgY29uc3QgY2hhciAqY29tcG9uZW50
RGVzYywgLi4uKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4g
Q0ZDYWxlbmRhckdldENvbXBvbmVudERpZmZlcmVuY2UoQ0ZDYWxlbmRhclJlZiBjYWxlbmRhciwg
Q0ZBYnNvbHV0ZVRpbWUgc3RhcnRpbmdBVCwgQ0ZBYnNvbHV0ZVRpbWUgcmVzdWx0QVQsIENGT3B0
aW9uRmxhZ3Mgb3B0aW9ucywgY29uc3QgY2hhciAqY29tcG9uZW50RGVzYywgLi4uKTsNCg0KDQp9
DQoNCg0KI2xpbmUgMTQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkNhbGVuZGFyLmgiDQoNCiNsaW5lIDc4
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZDaGFyYWN0ZXJTZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0
MTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGQ2hhcmFjdGVyU2V0LmgiDQoNCiNsaW5lIDc5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEYXRh
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDcgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENv
cmVGb3VuZGF0aW9uL0NGRGF0YS5oIg0KDQojbGluZSA4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0ZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
RGF0ZS5oIg0KDQojbGluZSA4MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0ZUZvcm1hdHRlci5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2
NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
RGF0ZUZvcm1hdHRlci5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEYXRlLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzNSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZEYXRlLmgiDQoNCiNsaW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRhdGVGb3JtYXR0ZXIu
aCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
TG9jYWxlLmgiDQoNCiNsaW5lIDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRhdGVGb3JtYXR0ZXIuaCIN
Cg0KZXh0ZXJuICJDIiB7DQoNCnR5cGVkZWYgc3RydWN0IF9fQ0ZEYXRlRm9ybWF0dGVyICpDRkRh
dGVGb3JtYXR0ZXJSZWY7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Q0ZTdHJpbmdSZWYgQ0ZEYXRlRm9ybWF0dGVyQ3JlYXRlRGF0ZUZvcm1hdEZyb21UZW1wbGF0ZShD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIHRtcGxhdGUsIENGT3B0aW9uRmxh
Z3Mgb3B0aW9ucywgQ0ZMb2NhbGVSZWYgbG9jYWxlKSA7DQoJDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRkRhdGVGb3JtYXR0ZXJHZXRUeXBlSUQodm9pZCk7
DQoNCnR5cGVkZWYgQ0ZJbmRleCBDRkRhdGVGb3JtYXR0ZXJTdHlsZTsgZW51bSB7CQ0KCWtDRkRh
dGVGb3JtYXR0ZXJOb1N0eWxlID0gMCwNCglrQ0ZEYXRlRm9ybWF0dGVyU2hvcnRTdHlsZSA9IDEs
DQoJa0NGRGF0ZUZvcm1hdHRlck1lZGl1bVN0eWxlID0gMiwNCglrQ0ZEYXRlRm9ybWF0dGVyTG9u
Z1N0eWxlID0gMywNCglrQ0ZEYXRlRm9ybWF0dGVyRnVsbFN0eWxlID0gNA0KfTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGRGF0
ZUZvcm1hdHRlclJlZiBDRkRhdGVGb3JtYXR0ZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2Nh
dG9yLCBDRkxvY2FsZVJlZiBsb2NhbGUsIENGRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwg
Q0ZEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlKTsNCgkNCgkNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGTG9jYWxlUmVmIENGRGF0ZUZvcm1hdHRlckdldExvY2FsZShD
RkRhdGVGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGRGF0ZUZvcm1hdHRlclN0eWxlIENGRGF0ZUZvcm1hdHRlckdldERhdGVTdHls
ZShDRkRhdGVGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGRGF0ZUZvcm1hdHRlclN0eWxlIENGRGF0ZUZvcm1hdHRlckdldFRpbWVT
dHlsZShDRkRhdGVGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyKTsNCgkNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGRGF0ZUZvcm1hdHRlckdldEZvcm1hdChD
RkRhdGVGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQgQ0ZEYXRlRm9ybWF0dGVyU2V0Rm9ybWF0KENGRGF0ZUZvcm1hdHRlclJl
ZiBmb3JtYXR0ZXIsIENGU3RyaW5nUmVmIGZvcm1hdFN0cmluZyk7DQoJDQoJDQoJDQoJDQoJDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGRGF0ZUZv
cm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhEYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZE
YXRlRm9ybWF0dGVyUmVmIGZvcm1hdHRlciwgQ0ZEYXRlUmVmIGRhdGUpOw0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZEYXRlRm9ybWF0dGVyQ3JlYXRl
U3RyaW5nV2l0aEFic29sdXRlVGltZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGF0ZUZv
cm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGQWJzb2x1dGVUaW1lIGF0KTsNCgkNCgkNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZEYXRlUmVmIENGRGF0ZUZvcm1hdHRlckNy
ZWF0ZURhdGVGcm9tU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZEYXRlRm9ybWF0
dGVyUmVmIGZvcm1hdHRlciwgQ0ZTdHJpbmdSZWYgc3RyaW5nLCBDRlJhbmdlICpyYW5nZXApOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRkRhdGVGb3JtYXR0
ZXJHZXRBYnNvbHV0ZVRpbWVGcm9tU3RyaW5nKENGRGF0ZUZvcm1hdHRlclJlZiBmb3JtYXR0ZXIs
IENGU3RyaW5nUmVmIHN0cmluZywgQ0ZSYW5nZSAqcmFuZ2VwLCBDRkFic29sdXRlVGltZSAqYXRw
KTsNCgkNCgkNCgkNCgkNCgkNCgkNCgkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0Kdm9pZCBDRkRhdGVGb3JtYXR0ZXJTZXRQcm9wZXJ0eShDRkRhdGVGb3JtYXR0ZXJSZWYg
Zm9ybWF0dGVyLCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZVJlZiB2YWx1ZSk7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVSZWYgQ0ZEYXRlRm9ybWF0dGVyQ29weVBy
b3BlcnR5KENGRGF0ZUZvcm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGU3RyaW5nUmVmIGtleSk7DQoJ
DQoJDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVm
IGtDRkRhdGVGb3JtYXR0ZXJJc0xlbmllbnQ7CQ0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlclRpbWVab25lOwkJDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9y
bWF0dGVyQ2FsZW5kYXJOYW1lOwkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNv
bnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJEZWZhdWx0Rm9ybWF0OwkNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0
ZXJUd29EaWdpdFN0YXJ0RGF0ZTsgDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyRGVmYXVsdERhdGU7CQ0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRl
ckNhbGVuZGFyOwkJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyRXJhU3ltYm9sczsJDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyTW9udGhTeW1i
b2xzOwkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVm
IGtDRkRhdGVGb3JtYXR0ZXJTaG9ydE1vbnRoU3ltYm9sczsgDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyV2Vla2RheVN5
bWJvbHM7CQ0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdS
ZWYga0NGRGF0ZUZvcm1hdHRlclNob3J0V2Vla2RheVN5bWJvbHM7IA0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlckFNU3lt
Ym9sOwkJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ0ZEYXRlRm9ybWF0dGVyUE1TeW1ib2w7CQkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3JtYXR0ZXJMb25nRXJhU3ltYm9scyA7
ICAgDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZEYXRlRm9ybWF0dGVyVmVyeVNob3J0TW9udGhTeW1ib2xzIDsgDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyU3RhbmRh
bG9uZU1vbnRoU3ltYm9scyA7IA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlclNob3J0U3RhbmRhbG9uZU1vbnRoU3ltYm9s
cyA7IA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGRGF0ZUZvcm1hdHRlclZlcnlTaG9ydFN0YW5kYWxvbmVNb250aFN5bWJvbHMgOyANCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkRhdGVGb3Jt
YXR0ZXJWZXJ5U2hvcnRXZWVrZGF5U3ltYm9scyA7IA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlclN0YW5kYWxvbmVXZWVr
ZGF5U3ltYm9scyA7IA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZT
dHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlclNob3J0U3RhbmRhbG9uZVdlZWtkYXlTeW1ib2xzIDsg
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZE
YXRlRm9ybWF0dGVyVmVyeVNob3J0U3RhbmRhbG9uZVdlZWtkYXlTeW1ib2xzIDsgDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0
dGVyUXVhcnRlclN5bWJvbHMgOyAJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyU2hvcnRRdWFydGVyU3ltYm9scyA7IA0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0
ZUZvcm1hdHRlclN0YW5kYWxvbmVRdWFydGVyU3ltYm9scyA7IA0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGRGF0ZUZvcm1hdHRlclNob3J0U3Rh
bmRhbG9uZVF1YXJ0ZXJTeW1ib2xzIDsgDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZEYXRlRm9ybWF0dGVyR3JlZ29yaWFuU3RhcnREYXRlIDsg
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZE
YXRlRm9ybWF0dGVyRG9lc1JlbGF0aXZlRGF0ZUZvcm1hdHRpbmdLZXkgOyANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQp9DQoNCiNsaW5lIDE4MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEYXRlRm9y
bWF0dGVyLmgiDQoNCiNsaW5lIDgyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEaWN0aW9uYXJ5LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEaWN0aW9uYXJ5Lmgi
DQoNCiNsaW5lIDgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91
bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFz
ZS5oIg0KI2xpbmUgNjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaCINCiNsaW5lIDEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCiNsaW5lIDY3ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlv
bi9DRkVycm9yLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRpY3Rpb25hcnkuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzAyICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9D
RkRpY3Rpb25hcnkuaCINCg0KI2xpbmUgNjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaCINCg0K
DQpleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfX0NGRXJyb3IgKiBDRkVy
cm9yUmVmOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5
cGVJRCBDRkVycm9yR2V0VHlwZUlEKHZvaWQpIDsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkVycm9yRG9tYWluUE9TSVgJCSAgICA7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZF
cnJvckRvbWFpbk9TU3RhdHVzCSAgICA7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZFcnJvckRvbWFpbk1hY2gJCSAgICA7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZFcnJvckRvbWFpbkNv
Y29hCQkgICAgOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENG
U3RyaW5nUmVmIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXkgICAgICAgICA7ICAgDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZFcnJv
ckxvY2FsaXplZEZhaWx1cmVSZWFzb25LZXkgICAgICAgOyAgIA0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGRXJyb3JMb2NhbGl6ZWRSZWNvdmVy
eVN1Z2dlc3Rpb25LZXkgIDsgICANCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZFcnJvckRlc2NyaXB0aW9uS2V5ICAgICAgICAgICAgICAg
ICAgOyAgIA0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3Ry
aW5nUmVmIGtDRkVycm9yVW5kZXJseWluZ0Vycm9yS2V5ICAgICAgICAgICAgICA7ICAgDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZFcnJvclVS
TEtleSAgICAgICAgICAgICAgICAgICAgICAgICAgOyAgICANCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRkVycm9yRmlsZVBhdGhLZXkgICAgICAg
ICAgICAgICAgICAgICA7ICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZFcnJvclJlZiBDRkVycm9yQ3JlYXRlKENGQWxsb2Nh
dG9yUmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgZG9tYWluLCBDRkluZGV4IGNvZGUsIENGRGlj
dGlvbmFyeVJlZiB1c2VySW5mbykgOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZFcnJvclJlZiBDRkVycm9yQ3JlYXRlV2l0aFVz
ZXJJbmZvS2V5c0FuZFZhbHVlcyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVm
IGRvbWFpbiwgQ0ZJbmRleCBjb2RlLCBjb25zdCB2b2lkICpjb25zdCAqdXNlckluZm9LZXlzLCBj
b25zdCB2b2lkICpjb25zdCAqdXNlckluZm9WYWx1ZXMsIENGSW5kZXggbnVtVXNlckluZm9WYWx1
ZXMpIDsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNG
U3RyaW5nUmVmIENGRXJyb3JHZXREb21haW4oQ0ZFcnJvclJlZiBlcnIpIDsNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGSW5kZXggQ0ZFcnJvckdldENv
ZGUoQ0ZFcnJvclJlZiBlcnIpIDsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQ0ZEaWN0aW9uYXJ5UmVmIENGRXJyb3JDb3B5VXNlckluZm8oQ0ZFcnJv
clJlZiBlcnIpIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRkVycm9yQ29weURlc2NyaXB0aW9uKENGRXJyb3JS
ZWYgZXJyKSA7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpDRlN0cmluZ1JlZiBDRkVycm9yQ29weUZhaWx1cmVSZWFzb24oQ0ZFcnJvclJlZiBl
cnIpIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkNGU3RyaW5nUmVmIENGRXJyb3JDb3B5UmVjb3ZlcnlTdWdnZXN0aW9uKENGRXJyb3JSZWYg
ZXJyKSA7DQoNCg0KDQp9DQoNCg0KI2xpbmUgMjA3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmgi
DQoNCiNsaW5lIDg0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaCINCg0K
I2xpbmUgODUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmgiDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRk51bWJlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGTnVtYmVyLmgiDQoNCg0KZXh0
ZXJuICJDIiB7DQoNCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZCb29sZWFuICogQ0ZCb29sZWFu
UmVmOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZCb29sZWFu
UmVmIGtDRkJvb2xlYW5UcnVlOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNv
bnN0IENGQm9vbGVhblJlZiBrQ0ZCb29sZWFuRmFsc2U7DQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRkJvb2xlYW5HZXRUeXBlSUQodm9pZCk7DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGQm9vbGVhbkdldFZhbHVlKENG
Qm9vbGVhblJlZiBib29sZWFuKTsNCg0KdHlwZWRlZiBDRkluZGV4IENGTnVtYmVyVHlwZTsgZW51
bSB7DQogICAgDQogICAga0NGTnVtYmVyU0ludDhUeXBlID0gMSwNCiAgICBrQ0ZOdW1iZXJTSW50
MTZUeXBlID0gMiwNCiAgICBrQ0ZOdW1iZXJTSW50MzJUeXBlID0gMywNCiAgICBrQ0ZOdW1iZXJT
SW50NjRUeXBlID0gNCwNCiAgICBrQ0ZOdW1iZXJGbG9hdDMyVHlwZSA9IDUsDQogICAga0NGTnVt
YmVyRmxvYXQ2NFR5cGUgPSA2LAkNCiAgICANCiAgICBrQ0ZOdW1iZXJDaGFyVHlwZSA9IDcsDQog
ICAga0NGTnVtYmVyU2hvcnRUeXBlID0gOCwNCiAgICBrQ0ZOdW1iZXJJbnRUeXBlID0gOSwNCiAg
ICBrQ0ZOdW1iZXJMb25nVHlwZSA9IDEwLA0KICAgIGtDRk51bWJlckxvbmdMb25nVHlwZSA9IDEx
LA0KICAgIGtDRk51bWJlckZsb2F0VHlwZSA9IDEyLA0KICAgIGtDRk51bWJlckRvdWJsZVR5cGUg
PSAxMywNCiAgICANCiAgICBrQ0ZOdW1iZXJDRkluZGV4VHlwZSA9IDE0LA0KICAgIGtDRk51bWJl
ck5TSW50ZWdlclR5cGUgID0gMTUsDQogICAga0NGTnVtYmVyQ0dGbG9hdFR5cGUgID0gMTYsDQog
ICAga0NGTnVtYmVyTWF4VHlwZSA9IDE2DQp9Ow0KDQp0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NG
TnVtYmVyICogQ0ZOdW1iZXJSZWY7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpjb25zdCBDRk51bWJlclJlZiBrQ0ZOdW1iZXJQb3NpdGl2ZUluZmluaXR5Ow0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNvbnN0IENGTnVtYmVyUmVmIGtDRk51bWJlck5lZ2F0
aXZlSW5maW5pdHk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZO
dW1iZXJSZWYga0NGTnVtYmVyTmFOOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQ0ZUeXBlSUQgQ0ZOdW1iZXJHZXRUeXBlSUQodm9pZCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGTnVtYmVyUmVmIENGTnVtYmVyQ3JlYXRl
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZOdW1iZXJUeXBlIHRoZVR5cGUsIGNvbnN0IHZv
aWQgKnZhbHVlUHRyKTsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQ0ZOdW1iZXJUeXBlIENGTnVtYmVyR2V0VHlwZShDRk51bWJlclJlZiBudW1iZXIpOw0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRk51bWJlckdl
dEJ5dGVTaXplKENGTnVtYmVyUmVmIG51bWJlcik7DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZOdW1iZXJJc0Zsb2F0VHlwZShDRk51bWJlclJl
ZiBudW1iZXIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkJvb2xlYW4gQ0ZOdW1iZXJHZXRWYWx1ZShDRk51bWJlclJlZiBudW1iZXIsIENGTnVt
YmVyVHlwZSB0aGVUeXBlLCB2b2lkICp2YWx1ZVB0cik7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkNvbXBhcmlzb25S
ZXN1bHQgQ0ZOdW1iZXJDb21wYXJlKENGTnVtYmVyUmVmIG51bWJlciwgQ0ZOdW1iZXJSZWYgb3Ro
ZXJOdW1iZXIsIHZvaWQgKmNvbnRleHQpOw0KDQp9DQoNCg0KI2xpbmUgMTU3ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRk51bWJlci5oIg0KDQojbGluZSA4NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGTnVtYmVyRm9ybWF0dGVyLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDY2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQojbGluZSA0MiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZOdW1iZXJGb3JtYXR0ZXIuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
TnVtYmVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTU3ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRk51bWJlci5oIg0KDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZOdW1iZXJGb3Jt
YXR0ZXIuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMjQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGTG9jYWxlLmgiDQoNCiNsaW5lIDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRk51bWJlckZvcm1h
dHRlci5oIg0KDQpleHRlcm4gIkMiIHsNCg0KdHlwZWRlZiBzdHJ1Y3QgX19DRk51bWJlckZvcm1h
dHRlciAqQ0ZOdW1iZXJGb3JtYXR0ZXJSZWY7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQ0ZUeXBlSUQgQ0ZOdW1iZXJGb3JtYXR0ZXJHZXRUeXBlSUQodm9pZCk7DQoN
CnR5cGVkZWYgQ0ZJbmRleCBDRk51bWJlckZvcm1hdHRlclN0eWxlOyBlbnVtIHsJDQoJa0NGTnVt
YmVyRm9ybWF0dGVyTm9TdHlsZSA9IDAsDQoJa0NGTnVtYmVyRm9ybWF0dGVyRGVjaW1hbFN0eWxl
ID0gMSwNCglrQ0ZOdW1iZXJGb3JtYXR0ZXJDdXJyZW5jeVN0eWxlID0gMiwNCglrQ0ZOdW1iZXJG
b3JtYXR0ZXJQZXJjZW50U3R5bGUgPSAzLA0KCWtDRk51bWJlckZvcm1hdHRlclNjaWVudGlmaWNT
dHlsZSA9IDQsDQoJa0NGTnVtYmVyRm9ybWF0dGVyU3BlbGxPdXRTdHlsZSA9IDUNCn07DQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGTnVtYmVyRm9ybWF0dGVyUmVmIENG
TnVtYmVyRm9ybWF0dGVyQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZMb2NhbGVS
ZWYgbG9jYWxlLCBDRk51bWJlckZvcm1hdHRlclN0eWxlIHN0eWxlKTsNCgkNCgkNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGTG9jYWxlUmVmIENGTnVtYmVyRm9ybWF0dGVy
R2V0TG9jYWxlKENGTnVtYmVyRm9ybWF0dGVyUmVmIGZvcm1hdHRlcik7DQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRk51bWJlckZvcm1hdHRlclN0eWxlIENGTnVtYmVyRm9y
bWF0dGVyR2V0U3R5bGUoQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyKTsNCgkNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGTnVtYmVyRm9ybWF0
dGVyR2V0Rm9ybWF0KENGTnVtYmVyRm9ybWF0dGVyUmVmIGZvcm1hdHRlcik7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGTnVtYmVyRm9ybWF0dGVyU2V0Rm9ybWF0
KENGTnVtYmVyRm9ybWF0dGVyUmVmIGZvcm1hdHRlciwgQ0ZTdHJpbmdSZWYgZm9ybWF0U3RyaW5n
KTsNCgkNCgkNCgkNCgkNCgkNCgkNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQ0ZTdHJpbmdSZWYgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyLCBD
Rk51bWJlclJlZiBudW1iZXIpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Q0ZTdHJpbmdSZWYgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoVmFsdWUoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDRk51bWJlckZvcm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGTnVt
YmVyVHlwZSBudW1iZXJUeXBlLCBjb25zdCB2b2lkICp2YWx1ZVB0cik7DQoJDQoJDQoNCg0KdHlw
ZWRlZiBDRk9wdGlvbkZsYWdzIENGTnVtYmVyRm9ybWF0dGVyT3B0aW9uRmxhZ3M7IGVudW0gew0K
ICAgIGtDRk51bWJlckZvcm1hdHRlclBhcnNlSW50ZWdlcnNPbmx5ID0gMQkNCn07DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRk51bWJlclJlZiBDRk51bWJlckZvcm1hdHRl
ckNyZWF0ZU51bWJlckZyb21TdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRk51bWJl
ckZvcm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGU3RyaW5nUmVmIHN0cmluZywgQ0ZSYW5nZSAqcmFu
Z2VwLCBDRk9wdGlvbkZsYWdzIG9wdGlvbnMpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQm9vbGVhbiBDRk51bWJlckZvcm1hdHRlckdldFZhbHVlRnJvbVN0cmluZyhDRk51
bWJlckZvcm1hdHRlclJlZiBmb3JtYXR0ZXIsIENGU3RyaW5nUmVmIHN0cmluZywgQ0ZSYW5nZSAq
cmFuZ2VwLCBDRk51bWJlclR5cGUgbnVtYmVyVHlwZSwgdm9pZCAqdmFsdWVQdHIpOw0KCQ0KCQ0K
CQ0KCQ0KCQ0KCQ0KCQ0KCQ0KCQ0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQp2b2lkIENGTnVtYmVyRm9ybWF0dGVyU2V0UHJvcGVydHkoQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYg
Zm9ybWF0dGVyLCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZVJlZiB2YWx1ZSk7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVSZWYgQ0ZOdW1iZXJGb3JtYXR0ZXJDb3B5
UHJvcGVydHkoQ0ZOdW1iZXJGb3JtYXR0ZXJSZWYgZm9ybWF0dGVyLCBDRlN0cmluZ1JlZiBrZXkp
Ow0KCQ0KCQ0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJDdXJyZW5jeUNvZGU7CQkNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlckRlY2lt
YWxTZXBhcmF0b3I7CQ0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZT
dHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyQ3VycmVuY3lEZWNpbWFsU2VwYXJhdG9yOyANCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJl
ckZvcm1hdHRlckFsd2F5c1Nob3dEZWNpbWFsU2VwYXJhdG9yOyANCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlckdyb3Vw
aW5nU2VwYXJhdG9yOwkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENG
U3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlclVzZUdyb3VwaW5nU2VwYXJhdG9yOwkNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZv
cm1hdHRlclBlcmNlbnRTeW1ib2w7CQkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlclplcm9TeW1ib2w7CQkNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZv
cm1hdHRlck5hTlN5bWJvbDsJCQ0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVySW5maW5pdHlTeW1ib2w7CQkNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZv
cm1hdHRlck1pbnVzU2lnbjsJCQ0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyUGx1c1NpZ247CQkNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRl
ckN1cnJlbmN5U3ltYm9sOwkJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJFeHBvbmVudFN5bWJvbDsJCQ0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9y
bWF0dGVyTWluSW50ZWdlckRpZ2l0czsJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJNYXhJbnRlZ2VyRGlnaXRzOwkN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51
bWJlckZvcm1hdHRlck1pbkZyYWN0aW9uRGlnaXRzOwkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlck1heEZyYWN0aW9u
RGlnaXRzOwkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5n
UmVmIGtDRk51bWJlckZvcm1hdHRlckdyb3VwaW5nU2l6ZTsJCQ0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyU2Vjb25k
YXJ5R3JvdXBpbmdTaXplOwkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0
IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlclJvdW5kaW5nTW9kZTsJCQ0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0
dGVyUm91bmRpbmdJbmNyZW1lbnQ7CQ0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Y29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyRm9ybWF0V2lkdGg7CQkNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZv
cm1hdHRlclBhZGRpbmdQb3NpdGlvbjsJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJQYWRkaW5nQ2hhcmFjdGVyOwkN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51
bWJlckZvcm1hdHRlckRlZmF1bHRGb3JtYXQ7CQkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlck11bHRpcGxpZXI7CQkN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51
bWJlckZvcm1hdHRlclBvc2l0aXZlUHJlZml4OwkJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJQb3NpdGl2ZVN1ZmZp
eDsJCQ0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGTnVtYmVyRm9ybWF0dGVyTmVnYXRpdmVQcmVmaXg7CQkNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlck5lZ2F0aXZl
U3VmZml4OwkJDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJQZXJNaWxsU3ltYm9sOwkJDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1iZXJGb3JtYXR0ZXJJbnRl
cm5hdGlvbmFsQ3VycmVuY3lTeW1ib2w7IA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyQ3VycmVuY3lHcm91cGluZ1Nl
cGFyYXRvciA7IA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJp
bmdSZWYga0NGTnVtYmVyRm9ybWF0dGVySXNMZW5pZW50IDsJCQ0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGTnVtYmVyRm9ybWF0dGVyVXNlU2ln
bmlmaWNhbnREaWdpdHMgOwkNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0
IENGU3RyaW5nUmVmIGtDRk51bWJlckZvcm1hdHRlck1pblNpZ25pZmljYW50RGlnaXRzIDsJDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZOdW1i
ZXJGb3JtYXR0ZXJNYXhTaWduaWZpY2FudERpZ2l0cyA7CQ0KDQp0eXBlZGVmIENGSW5kZXggQ0ZO
dW1iZXJGb3JtYXR0ZXJSb3VuZGluZ01vZGU7IGVudW0gew0KICAgIGtDRk51bWJlckZvcm1hdHRl
clJvdW5kQ2VpbGluZyA9IDAsDQogICAga0NGTnVtYmVyRm9ybWF0dGVyUm91bmRGbG9vciA9IDEs
DQogICAga0NGTnVtYmVyRm9ybWF0dGVyUm91bmREb3duID0gMiwNCiAgICBrQ0ZOdW1iZXJGb3Jt
YXR0ZXJSb3VuZFVwID0gMywNCiAgICBrQ0ZOdW1iZXJGb3JtYXR0ZXJSb3VuZEhhbGZFdmVuID0g
NCwNCiAgICBrQ0ZOdW1iZXJGb3JtYXR0ZXJSb3VuZEhhbGZEb3duID0gNSwNCiAgICBrQ0ZOdW1i
ZXJGb3JtYXR0ZXJSb3VuZEhhbGZVcCA9IDYNCn07DQoNCnR5cGVkZWYgQ0ZJbmRleCBDRk51bWJl
ckZvcm1hdHRlclBhZFBvc2l0aW9uOyBlbnVtIHsNCiAgICBrQ0ZOdW1iZXJGb3JtYXR0ZXJQYWRC
ZWZvcmVQcmVmaXggPSAwLA0KICAgIGtDRk51bWJlckZvcm1hdHRlclBhZEFmdGVyUHJlZml4ID0g
MSwNCiAgICBrQ0ZOdW1iZXJGb3JtYXR0ZXJQYWRCZWZvcmVTdWZmaXggPSAyLA0KICAgIGtDRk51
bWJlckZvcm1hdHRlclBhZEFmdGVyU3VmZml4ID0gMw0KfTsNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRk51bWJlckZvcm1hdHRlckdldERlY2ltYWxJbmZv
Rm9yQ3VycmVuY3lDb2RlKENGU3RyaW5nUmVmIGN1cnJlbmN5Q29kZSwgaW50MzJfdCAqZGVmYXVs
dEZyYWN0aW9uRGlnaXRzLCBkb3VibGUgKnJvdW5kaW5nSW5jcmVtZW50KTsNCgkNCgkNCgkNCgkN
CgkNCg0KfQ0KDQojbGluZSAxOTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGTnVtYmVyRm9ybWF0dGVyLmgi
DQoNCiNsaW5lIDg3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZQcmVmZXJlbmNlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NjEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUHJlZmVyZW5j
ZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQXJyYXkuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQXJy
YXkuaCINCg0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUHJlZmVyZW5jZXMuaCINCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCiNsaW5lIDQ0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRlByZWZlcmVuY2VzLmgiDQoNCmV4dGVybiAiQyIgew0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGUHJlZmVyZW5jZXNB
bnlBcHBsaWNhdGlvbjsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBD
RlN0cmluZ1JlZiBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbjsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZQcmVmZXJlbmNlc0Fu
eUhvc3Q7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdS
ZWYga0NGUHJlZmVyZW5jZXNDdXJyZW50SG9zdDsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZQcmVmZXJlbmNlc0FueVVzZXI7DQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGUHJlZmVyZW5j
ZXNDdXJyZW50VXNlcjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlByb3BlcnR5TGlzdFJlZiBDRlByZWZlcmVuY2VzQ29w
eUFwcFZhbHVlKENGU3RyaW5nUmVmIGtleSwgQ0ZTdHJpbmdSZWYgYXBwbGljYXRpb25JRCk7DQoN
Cg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGUHJlZmVy
ZW5jZXNHZXRBcHBCb29sZWFuVmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBDRlN0cmluZ1JlZiBhcHBs
aWNhdGlvbklELCBCb29sZWFuICprZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7DQoNCg0KDQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkluZGV4IENGUHJlZmVyZW5jZXNH
ZXRBcHBJbnRlZ2VyVmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBDRlN0cmluZ1JlZiBhcHBsaWNhdGlv
bklELCBCb29sZWFuICprZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7DQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1
ZShDRlN0cmluZ1JlZiBrZXksIENGUHJvcGVydHlMaXN0UmVmIHZhbHVlLCBDRlN0cmluZ1JlZiBh
cHBsaWNhdGlvbklEKTsNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZCBDRlByZWZlcmVuY2VzQWRkU3VpdGVQcmVmZXJlbmNlc1RvQXBwKENGU3RyaW5nUmVm
IGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHN1aXRlSUQpOw0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlByZWZlcmVuY2VzUmVtb3ZlU3VpdGVQcmVmZXJlbmNl
c0Zyb21BcHAoQ0ZTdHJpbmdSZWYgYXBwbGljYXRpb25JRCwgQ0ZTdHJpbmdSZWYgc3VpdGVJRCk7
DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRlByZWZl
cmVuY2VzQXBwU3luY2hyb25pemUoQ0ZTdHJpbmdSZWYgYXBwbGljYXRpb25JRCk7DQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGUHJvcGVydHlMaXN0UmVmIENG
UHJlZmVyZW5jZXNDb3B5VmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBDRlN0cmluZ1JlZiBhcHBsaWNh
dGlvbklELCBDRlN0cmluZ1JlZiB1c2VyTmFtZSwgQ0ZTdHJpbmdSZWYgaG9zdE5hbWUpOw0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkRpY3Rpb25hcnlSZWYg
Q0ZQcmVmZXJlbmNlc0NvcHlNdWx0aXBsZShDRkFycmF5UmVmIGtleXNUb0ZldGNoLCBDRlN0cmlu
Z1JlZiBhcHBsaWNhdGlvbklELCBDRlN0cmluZ1JlZiB1c2VyTmFtZSwgQ0ZTdHJpbmdSZWYgaG9z
dE5hbWUpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZQ
cmVmZXJlbmNlc1NldFZhbHVlKENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFs
dWUsIENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQsIENGU3RyaW5nUmVmIHVzZXJOYW1lLCBDRlN0
cmluZ1JlZiBob3N0TmFtZSk7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0Kdm9pZCBDRlByZWZlcmVuY2VzU2V0TXVsdGlwbGUoQ0ZEaWN0aW9uYXJ5UmVmIGtleXNUb1Nl
dCwgQ0ZBcnJheVJlZiBrZXlzVG9SZW1vdmUsIENGU3RyaW5nUmVmIGFwcGxpY2F0aW9uSUQsIENG
U3RyaW5nUmVmIHVzZXJOYW1lLCBDRlN0cmluZ1JlZiBob3N0TmFtZSk7DQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGUHJlZmVyZW5jZXNTeW5jaHJvbml6ZShD
RlN0cmluZ1JlZiBhcHBsaWNhdGlvbklELCBDRlN0cmluZ1JlZiB1c2VyTmFtZSwgQ0ZTdHJpbmdS
ZWYgaG9zdE5hbWUpOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpDRkFycmF5UmVmIENGUHJlZmVyZW5jZXNDb3B5QXBwbGljYXRpb25MaXN0KENGU3RyaW5nUmVm
IHVzZXJOYW1lLCBDRlN0cmluZ1JlZiBob3N0TmFtZSk7DQoNCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFycmF5UmVmIENGUHJlZmVyZW5jZXNDb3B5S2V5TGlzdChD
RlN0cmluZ1JlZiBhcHBsaWNhdGlvbklELCBDRlN0cmluZ1JlZiB1c2VyTmFtZSwgQ0ZTdHJpbmdS
ZWYgaG9zdE5hbWUpOw0KDQoNCn0NCg0KI2xpbmUgMTU0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlByZWZl
cmVuY2VzLmgiDQoNCiNsaW5lIDg4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZQcm9wZXJ0eUxpc3QuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJp
ZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
NjYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9D
RlByb3BlcnR5TGlzdC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEYXRhLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0
aW9uL0NGRGF0YS5oIg0KDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZQcm9wZXJ0eUxpc3Qu
aCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCiNsaW5l
IDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRlByb3BlcnR5TGlzdC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5k
YXRpb24vQ0ZFcnJvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDcgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
RXJyb3IuaCINCg0KI2xpbmUgNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUHJvcGVydHlMaXN0LmgiDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyZWFtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY2MSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJl
YW0uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCiNs
aW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZEaWN0aW9uYXJ5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDcwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEaWN0aW9uYXJ5LmgiDQoNCiNsaW5lIDQ0ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91
bmRhdGlvbi9DRlN0cmVhbS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZVUkwuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgNjYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDQyICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRlVSTC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEYXRhLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMDcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3Vu
ZGF0aW9uL0NGRGF0YS5oIg0KDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZVUkwuaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjA3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkVycm9yLmgiDQoNCiNsaW5lIDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlVS
TC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgOTAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oIg0KI2xp
bmUgNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJMLmgiDQoNCg0KZXh0ZXJuICJDIiB7DQoNCnR5cGVk
ZWYgQ0ZJbmRleCBDRlVSTFBhdGhTdHlsZTsgZW51bSB7DQogICAga0NGVVJMUE9TSVhQYXRoU3R5
bGUgPSAwLA0KICAgIGtDRlVSTEhGU1BhdGhTdHlsZSwgDQogICAga0NGVVJMV2luZG93c1BhdGhT
dHlsZQ0KfTsNCiAgICANCnR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwgKiBDRlVSTFJlZjsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxp
bXBvcnQpDQpDRlR5cGVJRCBDRlVSTEdldFR5cGVJRCh2b2lkKTsNCg0KDQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlVSTFJlZiBDRlVSTENyZWF0ZVdpdGhCeXRlcyhDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0IFVJbnQ4ICpVUkxCeXRlcywgQ0ZJbmRleCBsZW5n
dGgsIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcsIENGVVJMUmVmIGJhc2VVUkwpOw0KDQoNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkRhdGFSZWYgQ0ZVUkxDcmVh
dGVEYXRhKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVUkxSZWYgdXJsLCBDRlN0cmluZ0Vu
Y29kaW5nIGVuY29kaW5nLCBCb29sZWFuIGVzY2FwZVdoaXRlc3BhY2UpOw0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlVSTFJlZiBDRlVSTENyZWF0ZVdpdGhTdHJpbmco
Q0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBVUkxTdHJpbmcsIENGVVJMUmVm
IGJhc2VVUkwpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGVVJMUmVmIENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2MsIGNvbnN0IFVJbnQ4ICpyZWxhdGl2ZVVSTEJ5dGVzLCBDRkluZGV4
IGxlbmd0aCwgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZywgQ0ZVUkxSZWYgYmFzZVVSTCwgQm9v
bGVhbiB1c2VDb21wYXRpYmlsaXR5TW9kZSk7DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlVSTFJlZiBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIGZpbGVQYXRoLCBDRlVSTFBh
dGhTdHlsZSBwYXRoU3R5bGUsIEJvb2xlYW4gaXNEaXJlY3RvcnkpOw0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZVUkxSZWYgQ0ZVUkxDcmVhdGVGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgVUludDggKmJ1ZmZl
ciwgQ0ZJbmRleCBidWZMZW4sIEJvb2xlYW4gaXNEaXJlY3RvcnkpOw0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZVUkxSZWYgQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGhSZWxhdGl2ZVRvQmFzZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENG
U3RyaW5nUmVmIGZpbGVQYXRoLCBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUsIEJvb2xlYW4gaXNE
aXJlY3RvcnksIENGVVJMUmVmIGJhc2VVUkwpOyANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGVVJMUmVmIENGVVJMQ3JlYXRlRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
blJlbGF0aXZlVG9CYXNlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgVUludDggKmJ1
ZmZlciwgQ0ZJbmRleCBidWZMZW4sIEJvb2xlYW4gaXNEaXJlY3RvcnksIENGVVJMUmVmIGJhc2VV
UkwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihD
RlVSTFJlZiB1cmwsIEJvb2xlYW4gcmVzb2x2ZUFnYWluc3RCYXNlLCBVSW50OCAqYnVmZmVyLCBD
RkluZGV4IG1heEJ1Zkxlbik7DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGVVJMUmVmIENGVVJMQ29weUFic29sdXRlVVJMKENGVVJMUmVmIHJlbGF0aXZlVVJMKTsNCg0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZVUkxHZXRT
dHJpbmcoQ0ZVUkxSZWYgYW5VUkwpOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpDRlVSTFJlZiBDRlVSTEdldEJhc2VVUkwoQ0ZVUkxSZWYgYW5VUkwpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRlVSTENhbkJlRGVjb21w
b3NlZChDRlVSTFJlZiBhblVSTCk7IA0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGU3RyaW5nUmVmIENGVVJMQ29weVNjaGVtZShDRlVSTFJlZiBhblVSTCk7DQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGVVJMQ29weU5l
dExvY2F0aW9uKENGVVJMUmVmIGFuVVJMKTsgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZVUkxDb3B5UGF0aChD
RlVSTFJlZiBhblVSTCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0
cmluZ1JlZiBDRlVSTENvcHlTdHJpY3RQYXRoKENGVVJMUmVmIGFuVVJMLCBCb29sZWFuICppc0Fi
c29sdXRlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVm
IENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKENGVVJMUmVmIGFuVVJMLCBDRlVSTFBhdGhTdHlsZSBw
YXRoU3R5bGUpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xl
YW4gQ0ZVUkxIYXNEaXJlY3RvcnlQYXRoKENGVVJMUmVmIGFuVVJMKTsNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlVSTENvcHlSZXNvdXJjZVNw
ZWNpZmllcihDRlVSTFJlZiBhblVSTCk7IA0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZVUkxDb3B5SG9zdE5hbWUoQ0ZVUkxSZWYgYW5VUkwpOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KU0ludDMyIENGVVJMR2V0UG9ydE51bWJl
cihDRlVSTFJlZiBhblVSTCk7IA0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Q0ZTdHJpbmdSZWYgQ0ZVUkxDb3B5VXNlck5hbWUoQ0ZVUkxSZWYgYW5VUkwpOw0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZVUkxDb3B5UGFzc3dvcmQo
Q0ZVUkxSZWYgYW5VUkwpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGU3RyaW5nUmVmIENGVVJMQ29weVBhcmFtZXRlclN0cmluZyhDRlVSTFJlZiBhblVS
TCwgQ0ZTdHJpbmdSZWYgY2hhcmFjdGVyc1RvTGVhdmVFc2NhcGVkKTsNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGVVJMQ29weVF1ZXJ5U3RyaW5nKENG
VVJMUmVmIGFuVVJMLCBDRlN0cmluZ1JlZiBjaGFyYWN0ZXJzVG9MZWF2ZUVzY2FwZWQpOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZVUkxDb3B5RnJh
Z21lbnQoQ0ZVUkxSZWYgYW5VUkwsIENGU3RyaW5nUmVmIGNoYXJhY3RlcnNUb0xlYXZlRXNjYXBl
ZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRlVS
TENvcHlMYXN0UGF0aENvbXBvbmVudChDRlVSTFJlZiB1cmwpOw0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbihDRlVS
TFJlZiB1cmwpOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
RlVSTFJlZiBDRlVSTENyZWF0ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ0ZVUkxSZWYgdXJsLCBDRlN0cmluZ1JlZiBwYXRoQ29tcG9uZW50LCBC
b29sZWFuIGlzRGlyZWN0b3J5KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGVVJMUmVmIENGVVJMQ3JlYXRlQ29weURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnQoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDRlVSTFJlZiB1cmwpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQ0ZVUkxSZWYgQ0ZVUkxDcmVhdGVDb3B5QXBwZW5kaW5nUGF0aEV4dGVu
c2lvbihDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIHVybCwgQ0ZTdHJpbmdSZWYg
ZXh0ZW5zaW9uKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVVJMUmVm
IENGVVJMQ3JlYXRlQ29weURlbGV0aW5nUGF0aEV4dGVuc2lvbihDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIENGVVJMUmVmIHVybCk7DQoNCg0KDQoNCiANCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRlVSTEdldEJ5dGVzKENGVVJMUmVmIHVybCwgVUludDgg
KmJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJMZW5ndGgpOw0KDQp0eXBlZGVmIENGSW5kZXggQ0ZVUkxD
b21wb25lbnRUeXBlOyBlbnVtIHsNCglrQ0ZVUkxDb21wb25lbnRTY2hlbWUgPSAxLA0KCWtDRlVS
TENvbXBvbmVudE5ldExvY2F0aW9uID0gMiwNCglrQ0ZVUkxDb21wb25lbnRQYXRoID0gMywNCglr
Q0ZVUkxDb21wb25lbnRSZXNvdXJjZVNwZWNpZmllciA9IDQsDQoNCglrQ0ZVUkxDb21wb25lbnRV
c2VyID0gNSwNCglrQ0ZVUkxDb21wb25lbnRQYXNzd29yZCA9IDYsDQoJa0NGVVJMQ29tcG9uZW50
VXNlckluZm8gPSA3LA0KCWtDRlVSTENvbXBvbmVudEhvc3QgPSA4LA0KCWtDRlVSTENvbXBvbmVu
dFBvcnQgPSA5LA0KCWtDRlVSTENvbXBvbmVudFBhcmFtZXRlclN0cmluZyA9IDEwLA0KCWtDRlVS
TENvbXBvbmVudFF1ZXJ5ID0gMTEsDQoJa0NGVVJMQ29tcG9uZW50RnJhZ21lbnQgPSAxMg0KfTsN
CiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlJhbmdl
IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50KENGVVJMUmVmIHVybCwgQ0ZVUkxDb21wb25l
bnRUeXBlIGNvbXBvbmVudCwgQ0ZSYW5nZSAqcmFuZ2VJbmNsdWRpbmdTZXBhcmF0b3JzKTsNCg0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdS
ZWYgQ0ZVUkxDcmVhdGVTdHJpbmdCeVJlcGxhY2luZ1BlcmNlbnRFc2NhcGVzKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxTdHJpbmcsIENGU3RyaW5nUmVmIGNo
YXJhY3RlcnNUb0xlYXZlRXNjYXBlZCk7DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGU3RyaW5nUmVmIENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNj
YXBlc1VzaW5nRW5jb2RpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBv
cmlnU3RyaW5nLCBDRlN0cmluZ1JlZiBjaGFyc1RvTGVhdmVFc2NhcGVkLCBDRlN0cmluZ0VuY29k
aW5nIGVuY29kaW5nKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZVUkxDcmVhdGVTdHJpbmdCeUFkZGlu
Z1BlcmNlbnRFc2NhcGVzKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgb3Jp
Z2luYWxTdHJpbmcsIENGU3RyaW5nUmVmIGNoYXJhY3RlcnNUb0xlYXZlVW5lc2NhcGVkLCBDRlN0
cmluZ1JlZiBsZWdhbFVSTENoYXJhY3RlcnNUb0JlRXNjYXBlZCwgQ0ZTdHJpbmdFbmNvZGluZyBl
bmNvZGluZyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgNDc0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlVSTC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDExNjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJMLmgiDQoNCn0NCg0KDQojbGluZSAxMTcyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRlVSTC5oIg0KDQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJl
YW0uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA2NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGUnVuTG9vcC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZBcnJheS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcwNiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZBcnJheS5oIg0KDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJL
aXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmgiDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRhdGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRhdGUuaCINCg0KI2xp
bmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZTdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgOTAwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRlN0cmluZy5oIg0KI2xpbmUgNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVu
TG9vcC5oIg0KDQoNCiNsaW5lIDQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaCINCg0KI2xp
bmUgNTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KDQpleHRlcm4gIkMiIHsNCg0KdHlw
ZWRlZiBzdHJ1Y3QgX19DRlJ1bkxvb3AgKiBDRlJ1bkxvb3BSZWY7DQoNCnR5cGVkZWYgc3RydWN0
IF9fQ0ZSdW5Mb29wU291cmNlICogQ0ZSdW5Mb29wU291cmNlUmVmOw0KDQp0eXBlZGVmIHN0cnVj
dCBfX0NGUnVuTG9vcE9ic2VydmVyICogQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWY7DQoNCnR5cGVkZWYg
c3RydWN0IF9fQ0ZSdW5Mb29wVGltZXIgKiBDRlJ1bkxvb3BUaW1lclJlZjsNCg0KDQplbnVtIHsN
CiAgICBrQ0ZSdW5Mb29wUnVuRmluaXNoZWQgPSAxLA0KICAgIGtDRlJ1bkxvb3BSdW5TdG9wcGVk
ID0gMiwNCiAgICBrQ0ZSdW5Mb29wUnVuVGltZWRPdXQgPSAzLA0KICAgIGtDRlJ1bkxvb3BSdW5I
YW5kbGVkU291cmNlID0gNA0KfTsNCg0KDQp0eXBlZGVmIENGT3B0aW9uRmxhZ3MgQ0ZSdW5Mb29w
QWN0aXZpdHk7IGVudW0gew0KICAgIGtDRlJ1bkxvb3BFbnRyeSA9ICgxVUwgPDwgMCksDQogICAg
a0NGUnVuTG9vcEJlZm9yZVRpbWVycyA9ICgxVUwgPDwgMSksDQogICAga0NGUnVuTG9vcEJlZm9y
ZVNvdXJjZXMgPSAoMVVMIDw8IDIpLA0KICAgIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nID0gKDFV
TCA8PCA1KSwNCiAgICBrQ0ZSdW5Mb29wQWZ0ZXJXYWl0aW5nID0gKDFVTCA8PCA2KSwNCiAgICBr
Q0ZSdW5Mb29wRXhpdCA9ICgxVUwgPDwgNyksDQogICAga0NGUnVuTG9vcEFsbEFjdGl2aXRpZXMg
PSAweDBGRkZGRkZGVQ0KfTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGUnVuTG9vcERlZmF1bHRNb2RlOw0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGUnVuTG9vcENvbW1vbk1vZGVzOw0K
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlR5cGVJRCBDRlJ1bkxvb3BHZXRU
eXBlSUQodm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGUnVuTG9v
cFJlZiBDRlJ1bkxvb3BHZXRDdXJyZW50KHZvaWQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgQ0ZSdW5Mb29wUmVmIENGUnVuTG9vcEdldE1haW4odm9pZCk7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGU3RyaW5nUmVmIENGUnVuTG9vcENvcHlDdXJyZW50
TW9kZShDRlJ1bkxvb3BSZWYgcmwpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBDRkFycmF5UmVmIENGUnVuTG9vcENvcHlBbGxNb2RlcyhDRlJ1bkxvb3BSZWYgcmwpOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIENGUnVuTG9vcEFkZENvbW1vbk1v
ZGUoQ0ZSdW5Mb29wUmVmIHJsLCBDRlN0cmluZ1JlZiBtb2RlKTsNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgQ0ZBYnNvbHV0ZVRpbWUgQ0ZSdW5Mb29wR2V0TmV4dFRpbWVyRmly
ZURhdGUoQ0ZSdW5Mb29wUmVmIHJsLCBDRlN0cmluZ1JlZiBtb2RlKTsNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1bkxvb3BSdW4odm9pZCk7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTSW50MzIgQ0ZSdW5Mb29wUnVuSW5Nb2RlKENGU3RyaW5n
UmVmIG1vZGUsIENGVGltZUludGVydmFsIHNlY29uZHMsIEJvb2xlYW4gcmV0dXJuQWZ0ZXJTb3Vy
Y2VIYW5kbGVkKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJvb2xlYW4gQ0ZS
dW5Mb29wSXNXYWl0aW5nKENGUnVuTG9vcFJlZiBybCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB2b2lkIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BSZWYgcmwpOw0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1bkxvb3BTdG9wKENGUnVuTG9vcFJl
ZiBybCk7DQoNCg0KDQojbGluZSAxMDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCb29sZWFuIENGUnVuTG9vcENvbnRhaW5z
U291cmNlKENGUnVuTG9vcFJlZiBybCwgQ0ZSdW5Mb29wU291cmNlUmVmIHNvdXJjZSwgQ0ZTdHJp
bmdSZWYgbW9kZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIENGUnVu
TG9vcEFkZFNvdXJjZShDRlJ1bkxvb3BSZWYgcmwsIENGUnVuTG9vcFNvdXJjZVJlZiBzb3VyY2Us
IENGU3RyaW5nUmVmIG1vZGUpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9p
ZCBDRlJ1bkxvb3BSZW1vdmVTb3VyY2UoQ0ZSdW5Mb29wUmVmIHJsLCBDRlJ1bkxvb3BTb3VyY2VS
ZWYgc291cmNlLCBDRlN0cmluZ1JlZiBtb2RlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgQm9vbGVhbiBDRlJ1bkxvb3BDb250YWluc09ic2VydmVyKENGUnVuTG9vcFJlZiBy
bCwgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGU3RyaW5nUmVmIG1vZGUpOw0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1bkxvb3BBZGRPYnNlcnZlcihD
RlJ1bkxvb3BSZWYgcmwsIENGUnVuTG9vcE9ic2VydmVyUmVmIG9ic2VydmVyLCBDRlN0cmluZ1Jl
ZiBtb2RlKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgQ0ZSdW5Mb29w
UmVtb3ZlT2JzZXJ2ZXIoQ0ZSdW5Mb29wUmVmIHJsLCBDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNl
cnZlciwgQ0ZTdHJpbmdSZWYgbW9kZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEJvb2xlYW4gQ0ZSdW5Mb29wQ29udGFpbnNUaW1lcihDRlJ1bkxvb3BSZWYgcmwsIENGUnVu
TG9vcFRpbWVyUmVmIHRpbWVyLCBDRlN0cmluZ1JlZiBtb2RlKTsNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHZvaWQgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wUmVmIHJsLCBD
RlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgQ0ZTdHJpbmdSZWYgbW9kZSk7DQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIENGUnVuTG9vcFJlbW92ZVRpbWVyKENGUnVuTG9vcFJl
ZiBybCwgQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIENGU3RyaW5nUmVmIG1vZGUpOw0KDQp0eXBl
ZGVmIHN0cnVjdCB7DQogICAgQ0ZJbmRleAl2ZXJzaW9uOw0KICAgIHZvaWQgKglpbmZvOw0KICAg
IGNvbnN0IHZvaWQgKigqcmV0YWluKShjb25zdCB2b2lkICppbmZvKTsNCiAgICB2b2lkCSgqcmVs
ZWFzZSkoY29uc3Qgdm9pZCAqaW5mbyk7DQogICAgQ0ZTdHJpbmdSZWYJKCpjb3B5RGVzY3JpcHRp
b24pKGNvbnN0IHZvaWQgKmluZm8pOw0KICAgIEJvb2xlYW4JKCplcXVhbCkoY29uc3Qgdm9pZCAq
aW5mbzEsIGNvbnN0IHZvaWQgKmluZm8yKTsNCiAgICBDRkhhc2hDb2RlCSgqaGFzaCkoY29uc3Qg
dm9pZCAqaW5mbyk7DQogICAgdm9pZAkoKnNjaGVkdWxlKSh2b2lkICppbmZvLCBDRlJ1bkxvb3BS
ZWYgcmwsIENGU3RyaW5nUmVmIG1vZGUpOw0KICAgIHZvaWQJKCpjYW5jZWwpKHZvaWQgKmluZm8s
IENGUnVuTG9vcFJlZiBybCwgQ0ZTdHJpbmdSZWYgbW9kZSk7DQogICAgdm9pZAkoKnBlcmZvcm0p
KHZvaWQgKmluZm8pOw0KfSBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0Ow0KDQp0eXBlZGVmIHN0cnVj
dCB7DQogICAgQ0ZJbmRleAl2ZXJzaW9uOw0KICAgIHZvaWQgKglpbmZvOw0KICAgIGNvbnN0IHZv
aWQgKigqcmV0YWluKShjb25zdCB2b2lkICppbmZvKTsNCiAgICB2b2lkCSgqcmVsZWFzZSkoY29u
c3Qgdm9pZCAqaW5mbyk7DQogICAgQ0ZTdHJpbmdSZWYJKCpjb3B5RGVzY3JpcHRpb24pKGNvbnN0
IHZvaWQgKmluZm8pOw0KICAgIEJvb2xlYW4JKCplcXVhbCkoY29uc3Qgdm9pZCAqaW5mbzEsIGNv
bnN0IHZvaWQgKmluZm8yKTsNCiAgICBDRkhhc2hDb2RlCSgqaGFzaCkoY29uc3Qgdm9pZCAqaW5m
byk7DQoNCg0KDQojbGluZSAxNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KDQoNCiNs
aW5lIDE0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmgiDQogICAgdm9pZCAqCSgqZ2V0UG9y
dCkodm9pZCAqaW5mbyk7DQogICAgdm9pZAkoKnBlcmZvcm0pKHZvaWQgKmluZm8pOw0KI2xpbmUg
MTQ5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaCINCn0gQ0ZSdW5Mb29wU291cmNlQ29udGV4
dDE7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGVHlwZUlEIENGUnVuTG9v
cFNvdXJjZUdldFR5cGVJRCh2b2lkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQ0ZSdW5Mb29wU291cmNlUmVmIENGUnVuTG9vcFNvdXJjZUNyZWF0ZShDRkFsbG9jYXRvclJl
ZiBhbGxvY2F0b3IsIENGSW5kZXggb3JkZXIsIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgKmNvbnRl
eHQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRkluZGV4IENGUnVuTG9v
cFNvdXJjZUdldE9yZGVyKENGUnVuTG9vcFNvdXJjZVJlZiBzb3VyY2UpOw0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1bkxvb3BTb3VyY2VJbnZhbGlkYXRlKENGUnVu
TG9vcFNvdXJjZVJlZiBzb3VyY2UpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Qm9vbGVhbiBDRlJ1bkxvb3BTb3VyY2VJc1ZhbGlkKENGUnVuTG9vcFNvdXJjZVJlZiBzb3VyY2Up
Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1bkxvb3BTb3VyY2VH
ZXRDb250ZXh0KENGUnVuTG9vcFNvdXJjZVJlZiBzb3VyY2UsIENGUnVuTG9vcFNvdXJjZUNvbnRl
eHQgKmNvbnRleHQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1
bkxvb3BTb3VyY2VTaWduYWwoQ0ZSdW5Mb29wU291cmNlUmVmIHNvdXJjZSk7DQoNCnR5cGVkZWYg
c3RydWN0IHsNCiAgICBDRkluZGV4CXZlcnNpb247DQogICAgdm9pZCAqCWluZm87DQogICAgY29u
c3Qgdm9pZCAqKCpyZXRhaW4pKGNvbnN0IHZvaWQgKmluZm8pOw0KICAgIHZvaWQJKCpyZWxlYXNl
KShjb25zdCB2b2lkICppbmZvKTsNCiAgICBDRlN0cmluZ1JlZgkoKmNvcHlEZXNjcmlwdGlvbiko
Y29uc3Qgdm9pZCAqaW5mbyk7DQp9IENGUnVuTG9vcE9ic2VydmVyQ29udGV4dDsNCg0KdHlwZWRl
ZiB2b2lkICgqQ0ZSdW5Mb29wT2JzZXJ2ZXJDYWxsQmFjaykoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYg
b2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IGFjdGl2aXR5LCB2b2lkICppbmZvKTsNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZUeXBlSUQgQ0ZSdW5Mb29wT2JzZXJ2ZXJH
ZXRUeXBlSUQodm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGUnVu
TG9vcE9ic2VydmVyUmVmIENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgQ0ZPcHRpb25GbGFncyBhY3Rpdml0aWVzLCBCb29sZWFuIHJlcGVhdHMsIENGSW5k
ZXggb3JkZXIsIENGUnVuTG9vcE9ic2VydmVyQ2FsbEJhY2sgY2FsbG91dCwgQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJDb250ZXh0ICpjb250ZXh0KTsNCg0KDQojbGluZSAxNzcgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NG
UnVuTG9vcC5oIg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRk9wdGlvbkZs
YWdzIENGUnVuTG9vcE9ic2VydmVyR2V0QWN0aXZpdGllcyhDRlJ1bkxvb3BPYnNlcnZlclJlZiBv
YnNlcnZlcik7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCb29sZWFuIENGUnVu
TG9vcE9ic2VydmVyRG9lc1JlcGVhdChDRlJ1bkxvb3BPYnNlcnZlclJlZiBvYnNlcnZlcik7DQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRkluZGV4IENGUnVuTG9vcE9ic2VydmVy
R2V0T3JkZXIoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIpOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1bkxvb3BPYnNlcnZlckludmFsaWRhdGUoQ0ZSdW5M
b29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQm9vbGVhbiBDRlJ1bkxvb3BPYnNlcnZlcklzVmFsaWQoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYg
b2JzZXJ2ZXIpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBDRlJ1bkxv
b3BPYnNlcnZlckdldENvbnRleHQoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgb2JzZXJ2ZXIsIENGUnVu
TG9vcE9ic2VydmVyQ29udGV4dCAqY29udGV4dCk7DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBD
RkluZGV4CXZlcnNpb247DQogICAgdm9pZCAqCWluZm87DQogICAgY29uc3Qgdm9pZCAqKCpyZXRh
aW4pKGNvbnN0IHZvaWQgKmluZm8pOw0KICAgIHZvaWQJKCpyZWxlYXNlKShjb25zdCB2b2lkICpp
bmZvKTsNCiAgICBDRlN0cmluZ1JlZgkoKmNvcHlEZXNjcmlwdGlvbikoY29uc3Qgdm9pZCAqaW5m
byk7DQp9IENGUnVuTG9vcFRpbWVyQ29udGV4dDsNCg0KdHlwZWRlZiB2b2lkICgqQ0ZSdW5Mb29w
VGltZXJDYWxsQmFjaykoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQgKmluZm8pOw0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlR5cGVJRCBDRlJ1bkxvb3BUaW1lckdl
dFR5cGVJRCh2b2lkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZSdW5M
b29wVGltZXJSZWYgQ0ZSdW5Mb29wVGltZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LCBDRkFic29sdXRlVGltZSBmaXJlRGF0ZSwgQ0ZUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwsIENGT3B0
aW9uRmxhZ3MgZmxhZ3MsIENGSW5kZXggb3JkZXIsIENGUnVuTG9vcFRpbWVyQ2FsbEJhY2sgY2Fs
bG91dCwgQ0ZSdW5Mb29wVGltZXJDb250ZXh0ICpjb250ZXh0KTsNCg0KDQojbGluZSAyMDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENv
cmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBDRkFic29sdXRlVGltZSBDRlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShDRlJ1bkxv
b3BUaW1lclJlZiB0aW1lcik7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lk
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBDRlRpbWVJbnRlcnZhbCBDRlJ1bkxvb3BUaW1lckdldEludGVydmFsKENGUnVuTG9vcFRpbWVy
UmVmIHRpbWVyKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEJvb2xlYW4gQ0ZS
dW5Mb29wVGltZXJEb2VzUmVwZWF0KENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyKTsNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGSW5kZXggQ0ZSdW5Mb29wVGltZXJHZXRPcmRlcihD
RlJ1bkxvb3BUaW1lclJlZiB0aW1lcik7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB2b2lkIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcik7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCb29sZWFuIENGUnVuTG9vcFRpbWVy
SXNWYWxpZChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcik7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSB2b2lkIENGUnVuTG9vcFRpbWVyR2V0Q29udGV4dChDRlJ1bkxvb3BUaW1lclJl
ZiB0aW1lciwgQ0ZSdW5Mb29wVGltZXJDb250ZXh0ICpjb250ZXh0KTsNCg0KfQ0KDQojbGluZSAy
MTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KDQojbGluZSA0NiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZTdHJlYW0uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU29ja2V0LmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZSdW5M
b29wLmgiDQoNCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlNvY2tldC5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZEYXRhLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxMDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0YS5oIg0KDQojbGluZSA0MyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZTb2NrZXQuaCINCg0KZXh0ZXJuICJDIiB7DQoNCnR5cGVkZWYgc3Ry
dWN0IF9fQ0ZTb2NrZXQgKiBDRlNvY2tldFJlZjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBDRkluZGV4IENGU29ja2V0RXJyb3I7IGVudW0gew0K
ICAgIGtDRlNvY2tldFN1Y2Nlc3MgPSAwLA0KICAgIGtDRlNvY2tldEVycm9yID0gLTFMLA0KICAg
IGtDRlNvY2tldFRpbWVvdXQgPSAtMkwNCn07DQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBTSW50
MzIJcHJvdG9jb2xGYW1pbHk7DQogICAgU0ludDMyCXNvY2tldFR5cGU7DQogICAgU0ludDMyCXBy
b3RvY29sOw0KICAgIENGRGF0YVJlZglhZGRyZXNzOw0KfSBDRlNvY2tldFNpZ25hdHVyZTsNCg0K
DQp0eXBlZGVmIENGT3B0aW9uRmxhZ3MgQ0ZTb2NrZXRDYWxsQmFja1R5cGU7IGVudW0gew0KICAg
IGtDRlNvY2tldE5vQ2FsbEJhY2sgPSAwLA0KICAgIGtDRlNvY2tldFJlYWRDYWxsQmFjayA9IDEs
DQogICAga0NGU29ja2V0QWNjZXB0Q2FsbEJhY2sgPSAyLA0KICAgIGtDRlNvY2tldERhdGFDYWxs
QmFjayA9IDMsDQogICAga0NGU29ja2V0Q29ubmVjdENhbGxCYWNrID0gNCwNCiAgICBrQ0ZTb2Nr
ZXRXcml0ZUNhbGxCYWNrID0gOA0KfTsNCg0KDQplbnVtIHsNCiAgICBrQ0ZTb2NrZXRBdXRvbWF0
aWNhbGx5UmVlbmFibGVSZWFkQ2FsbEJhY2sgPSAxLA0KICAgIGtDRlNvY2tldEF1dG9tYXRpY2Fs
bHlSZWVuYWJsZUFjY2VwdENhbGxCYWNrID0gMiwNCiAgICBrQ0ZTb2NrZXRBdXRvbWF0aWNhbGx5
UmVlbmFibGVEYXRhQ2FsbEJhY2sgPSAzLA0KICAgIGtDRlNvY2tldEF1dG9tYXRpY2FsbHlSZWVu
YWJsZVdyaXRlQ2FsbEJhY2sgPSA4LA0KICAgIGtDRlNvY2tldExlYXZlRXJyb3JzICA9IDY0LA0K
ICAgIGtDRlNvY2tldENsb3NlT25JbnZhbGlkYXRlID0gMTI4DQp9Ow0KDQp0eXBlZGVmIHZvaWQg
KCpDRlNvY2tldENhbGxCYWNrKShDRlNvY2tldFJlZiBzLCBDRlNvY2tldENhbGxCYWNrVHlwZSB0
eXBlLCBDRkRhdGFSZWYgYWRkcmVzcywgY29uc3Qgdm9pZCAqZGF0YSwgdm9pZCAqaW5mbyk7DQoN
Cg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIENGSW5kZXgJdmVyc2lvbjsNCiAgICB2b2lkICoJaW5m
bzsNCiAgICBjb25zdCB2b2lkICooKnJldGFpbikoY29uc3Qgdm9pZCAqaW5mbyk7DQogICAgdm9p
ZAkoKnJlbGVhc2UpKGNvbnN0IHZvaWQgKmluZm8pOw0KICAgIENGU3RyaW5nUmVmCSgqY29weURl
c2NyaXB0aW9uKShjb25zdCB2b2lkICppbmZvKTsNCn0gQ0ZTb2NrZXRDb250ZXh0Ow0KDQoNCnR5
cGVkZWYgdWludHB0cl90IENGU29ja2V0TmF0aXZlSGFuZGxlOw0KDQoNCiNsaW5lIDE3NSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29y
ZUZvdW5kYXRpb24vQ0ZTb2NrZXQuaCINCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgQ0ZUeXBlSUQJQ0ZTb2NrZXRHZXRUeXBlSUQodm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIENGU29ja2V0UmVmCUNGU29ja2V0Q3JlYXRlKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgU0ludDMyIHByb3RvY29sRmFtaWx5LCBTSW50MzIgc29ja2V0VHlwZSwgU0lu
dDMyIHByb3RvY29sLCBDRk9wdGlvbkZsYWdzIGNhbGxCYWNrVHlwZXMsIENGU29ja2V0Q2FsbEJh
Y2sgY2FsbG91dCwgY29uc3QgQ0ZTb2NrZXRDb250ZXh0ICpjb250ZXh0KTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIENGU29ja2V0UmVmCUNGU29ja2V0Q3JlYXRlV2l0aE5hdGl2
ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU29ja2V0TmF0aXZlSGFuZGxlIHNvY2ssIENG
T3B0aW9uRmxhZ3MgY2FsbEJhY2tUeXBlcywgQ0ZTb2NrZXRDYWxsQmFjayBjYWxsb3V0LCBjb25z
dCBDRlNvY2tldENvbnRleHQgKmNvbnRleHQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgQ0ZTb2NrZXRSZWYJQ0ZTb2NrZXRDcmVhdGVXaXRoU29ja2V0U2lnbmF0dXJlKENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgQ0ZTb2NrZXRTaWduYXR1cmUgKnNpZ25hdHVyZSwg
Q0ZPcHRpb25GbGFncyBjYWxsQmFja1R5cGVzLCBDRlNvY2tldENhbGxCYWNrIGNhbGxvdXQsIGNv
bnN0IENGU29ja2V0Q29udGV4dCAqY29udGV4dCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIENGU29ja2V0UmVmCUNGU29ja2V0Q3JlYXRlQ29ubmVjdGVkVG9Tb2NrZXRTaWdu
YXR1cmUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBjb25zdCBDRlNvY2tldFNpZ25hdHVyZSAq
c2lnbmF0dXJlLCBDRk9wdGlvbkZsYWdzIGNhbGxCYWNrVHlwZXMsIENGU29ja2V0Q2FsbEJhY2sg
Y2FsbG91dCwgY29uc3QgQ0ZTb2NrZXRDb250ZXh0ICpjb250ZXh0LCBDRlRpbWVJbnRlcnZhbCB0
aW1lb3V0KTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlNvY2tldEVy
cm9yCUNGU29ja2V0U2V0QWRkcmVzcyhDRlNvY2tldFJlZiBzLCBDRkRhdGFSZWYgYWRkcmVzcyk7
DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlNvY2tldEVycm9yCUNGU29ja2V0
Q29ubmVjdFRvQWRkcmVzcyhDRlNvY2tldFJlZiBzLCBDRkRhdGFSZWYgYWRkcmVzcywgQ0ZUaW1l
SW50ZXJ2YWwgdGltZW91dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lk
CQlDRlNvY2tldEludmFsaWRhdGUoQ0ZTb2NrZXRSZWYgcyk7DQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEJvb2xlYW4JQ0ZTb2NrZXRJc1ZhbGlkKENGU29ja2V0UmVmIHMpOw0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZEYXRhUmVmCUNGU29ja2V0Q29weUFk
ZHJlc3MoQ0ZTb2NrZXRSZWYgcyk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBD
RkRhdGFSZWYJQ0ZTb2NrZXRDb3B5UGVlckFkZHJlc3MoQ0ZTb2NrZXRSZWYgcyk7DQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkCQlDRlNvY2tldEdldENvbnRleHQoQ0ZTb2Nr
ZXRSZWYgcywgQ0ZTb2NrZXRDb250ZXh0ICpjb250ZXh0KTsNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIENGU29ja2V0TmF0aXZlSGFuZGxlCUNGU29ja2V0R2V0TmF0aXZlKENGU29j
a2V0UmVmIHMpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlJ1bkxvb3BT
b3VyY2VSZWYJQ0ZTb2NrZXRDcmVhdGVSdW5Mb29wU291cmNlKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgQ0ZTb2NrZXRSZWYgcywgQ0ZJbmRleCBvcmRlcik7DQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIENGT3B0aW9uRmxhZ3MJQ0ZTb2NrZXRHZXRTb2NrZXRGbGFncyhDRlNv
Y2tldFJlZiBzKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQJCUNGU29j
a2V0U2V0U29ja2V0RmxhZ3MoQ0ZTb2NrZXRSZWYgcywgQ0ZPcHRpb25GbGFncyBmbGFncyk7DQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkCQlDRlNvY2tldERpc2FibGVDYWxs
QmFja3MoQ0ZTb2NrZXRSZWYgcywgQ0ZPcHRpb25GbGFncyBjYWxsQmFja1R5cGVzKTsNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQJCUNGU29ja2V0RW5hYmxlQ2FsbEJhY2tz
KENGU29ja2V0UmVmIHMsIENGT3B0aW9uRmxhZ3MgY2FsbEJhY2tUeXBlcyk7DQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlNvY2tldEVycm9yCUNGU29ja2V0U2VuZERh
dGEoQ0ZTb2NrZXRSZWYgcywgQ0ZEYXRhUmVmIGFkZHJlc3MsIENGRGF0YVJlZiBkYXRhLCBDRlRp
bWVJbnRlcnZhbCB0aW1lb3V0KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGU29ja2V0RXJyb3IJQ0ZTb2NrZXRS
ZWdpc3RlclZhbHVlKGNvbnN0IENGU29ja2V0U2lnbmF0dXJlICpuYW1lU2VydmVyU2lnbmF0dXJl
LCBDRlRpbWVJbnRlcnZhbCB0aW1lb3V0LCBDRlN0cmluZ1JlZiBuYW1lLCBDRlByb3BlcnR5TGlz
dFJlZiB2YWx1ZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlNvY2tldEVy
cm9yCUNGU29ja2V0Q29weVJlZ2lzdGVyZWRWYWx1ZShjb25zdCBDRlNvY2tldFNpZ25hdHVyZSAq
bmFtZVNlcnZlclNpZ25hdHVyZSwgQ0ZUaW1lSW50ZXJ2YWwgdGltZW91dCwgQ0ZTdHJpbmdSZWYg
bmFtZSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgKnZhbHVlLCBDRkRhdGFSZWYgKm5hbWVTZXJ2ZXJBZGRy
ZXNzKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZTb2NrZXRFcnJvcglD
RlNvY2tldFJlZ2lzdGVyU29ja2V0U2lnbmF0dXJlKGNvbnN0IENGU29ja2V0U2lnbmF0dXJlICpu
YW1lU2VydmVyU2lnbmF0dXJlLCBDRlRpbWVJbnRlcnZhbCB0aW1lb3V0LCBDRlN0cmluZ1JlZiBu
YW1lLCBjb25zdCBDRlNvY2tldFNpZ25hdHVyZSAqc2lnbmF0dXJlKTsNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIENGU29ja2V0RXJyb3IJQ0ZTb2NrZXRDb3B5UmVnaXN0ZXJlZFNv
Y2tldFNpZ25hdHVyZShjb25zdCBDRlNvY2tldFNpZ25hdHVyZSAqbmFtZVNlcnZlclNpZ25hdHVy
ZSwgQ0ZUaW1lSW50ZXJ2YWwgdGltZW91dCwgQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZTb2NrZXRTaWdu
YXR1cmUgKnNpZ25hdHVyZSwgQ0ZEYXRhUmVmICpuYW1lU2VydmVyQWRkcmVzcyk7DQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENGU29ja2V0RXJyb3IJQ0ZTb2NrZXRVbnJlZ2lz
dGVyKGNvbnN0IENGU29ja2V0U2lnbmF0dXJlICpuYW1lU2VydmVyU2lnbmF0dXJlLCBDRlRpbWVJ
bnRlcnZhbCB0aW1lb3V0LCBDRlN0cmluZ1JlZiBuYW1lKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZAkJQ0ZTb2NrZXRTZXREZWZhdWx0TmFtZVJlZ2lzdHJ5UG9ydE51
bWJlcihVSW50MTYgcG9ydCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBVSW50
MTYJQ0ZTb2NrZXRHZXREZWZhdWx0TmFtZVJlZ2lzdHJ5UG9ydE51bWJlcih2b2lkKTsNCg0KDQpl
eHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTb2Nr
ZXRDb21tYW5kS2V5Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZT
dHJpbmdSZWYga0NGU29ja2V0TmFtZUtleTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIGNvbnN0IENGU3RyaW5nUmVmIGtDRlNvY2tldFZhbHVlS2V5Ow0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU29ja2V0UmVzdWx0S2V5Ow0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU29j
a2V0RXJyb3JLZXk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBDRlN0
cmluZ1JlZiBrQ0ZTb2NrZXRSZWdpc3RlckNvbW1hbmQ7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTb2NrZXRSZXRyaWV2ZUNvbW1hbmQ7DQoN
Cn0NCg0KI2xpbmUgMjQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlNvY2tldC5oIg0KDQojbGluZSA0NyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRXJy
b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjA3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmgiDQoN
CiNsaW5lIDQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oIg0KDQoNCmV4dGVybiAiQyIgew0K
DQp0eXBlZGVmIENGSW5kZXggQ0ZTdHJlYW1TdGF0dXM7IGVudW0gew0KICAgIGtDRlN0cmVhbVN0
YXR1c05vdE9wZW4gPSAwLA0KICAgIGtDRlN0cmVhbVN0YXR1c09wZW5pbmcsICANCiAgICBrQ0ZT
dHJlYW1TdGF0dXNPcGVuLA0KICAgIGtDRlN0cmVhbVN0YXR1c1JlYWRpbmcsDQogICAga0NGU3Ry
ZWFtU3RhdHVzV3JpdGluZywNCiAgICBrQ0ZTdHJlYW1TdGF0dXNBdEVuZCwgICAgDQogICAga0NG
U3RyZWFtU3RhdHVzQ2xvc2VkLA0KICAgIGtDRlN0cmVhbVN0YXR1c0Vycm9yDQp9Ow0KDQp0eXBl
ZGVmIENGT3B0aW9uRmxhZ3MgQ0ZTdHJlYW1FdmVudFR5cGU7IGVudW0gew0KICAgIGtDRlN0cmVh
bUV2ZW50Tm9uZSA9IDAsDQogICAga0NGU3RyZWFtRXZlbnRPcGVuQ29tcGxldGVkID0gMSwNCiAg
ICBrQ0ZTdHJlYW1FdmVudEhhc0J5dGVzQXZhaWxhYmxlID0gMiwNCiAgICBrQ0ZTdHJlYW1FdmVu
dENhbkFjY2VwdEJ5dGVzID0gNCwgDQogICAga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVkID0g
OCwNCiAgICBrQ0ZTdHJlYW1FdmVudEVuZEVuY291bnRlcmVkID0gMTYNCn07DQoNCnR5cGVkZWYg
c3RydWN0IHsNCiAgICBDRkluZGV4IHZlcnNpb247DQogICAgdm9pZCAqaW5mbzsNCiAgICB2b2lk
ICooKnJldGFpbikodm9pZCAqaW5mbyk7DQogICAgdm9pZCAoKnJlbGVhc2UpKHZvaWQgKmluZm8p
Ow0KICAgIENGU3RyaW5nUmVmICgqY29weURlc2NyaXB0aW9uKSh2b2lkICppbmZvKTsNCn0gQ0ZT
dHJlYW1DbGllbnRDb250ZXh0Ow0KDQp0eXBlZGVmIHN0cnVjdCBfX0NGUmVhZFN0cmVhbSAqIENG
UmVhZFN0cmVhbVJlZjsNCnR5cGVkZWYgc3RydWN0IF9fQ0ZXcml0ZVN0cmVhbSAqIENGV3JpdGVT
dHJlYW1SZWY7DQoNCnR5cGVkZWYgdm9pZCAoKkNGUmVhZFN0cmVhbUNsaWVudENhbGxCYWNrKShD
RlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmVhbUV2ZW50VHlwZSB0eXBlLCB2b2lkICpjbGll
bnRDYWxsQmFja0luZm8pOw0KdHlwZWRlZiB2b2lkICgqQ0ZXcml0ZVN0cmVhbUNsaWVudENhbGxC
YWNrKShDRldyaXRlU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm9p
ZCAqY2xpZW50Q2FsbEJhY2tJbmZvKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCkNGVHlwZUlEIENGUmVhZFN0cmVhbUdldFR5cGVJRCh2b2lkKTsNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRldyaXRlU3RyZWFtR2V0VHlwZUlEKHZvaWQp
Ow0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGU3RyZWFtUHJvcGVydHlEYXRhV3JpdHRlbjsNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQ0ZSZWFkU3RyZWFtUmVmIENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhC
eXRlc05vQ29weShDRkFsbG9jYXRvclJlZiBhbGxvYywgY29uc3QgVUludDggKmJ5dGVzLCBDRklu
ZGV4IGxlbmd0aCwgQ0ZBbGxvY2F0b3JSZWYgYnl0ZXNEZWFsbG9jYXRvcik7DQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGV3JpdGVTdHJlYW1SZWYgQ0ZXcml0ZVN0cmVh
bUNyZWF0ZVdpdGhCdWZmZXIoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFVJbnQ4ICpidWZmZXIsIENG
SW5kZXggYnVmZmVyQ2FwYWNpdHkpOw0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpDRldyaXRlU3RyZWFtUmVmIENGV3JpdGVTdHJlYW1DcmVhdGVXaXRoQWxsb2NhdGVkQnVm
ZmVycyhDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZBbGxvY2F0b3JSZWYgYnVmZmVyQWxsb2NhdG9y
KTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZSZWFkU3RyZWFtUmVm
IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlVSTFJl
ZiBmaWxlVVJMKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRldyaXRlU3Ry
ZWFtUmVmIENGV3JpdGVTdHJlYW1DcmVhdGVXaXRoRmlsZShDRkFsbG9jYXRvclJlZiBhbGxvYywg
Q0ZVUkxSZWYgZmlsZVVSTCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2
b2lkIENGU3RyZWFtQ3JlYXRlQm91bmRQYWlyKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlJlYWRT
dHJlYW1SZWYgKnJlYWRTdHJlYW0sIENGV3JpdGVTdHJlYW1SZWYgKndyaXRlU3RyZWFtLCBDRklu
ZGV4IHRyYW5zZmVyQnVmZmVyU2l6ZSk7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlBcHBlbmRUb0ZpbGU7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZTdHJlYW1Qcm9wZXJ0eUZpbGVDdXJyZW50T2Zmc2V0OyAgIA0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9w
ZXJ0eVNvY2tldE5hdGl2ZUhhbmRsZTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlTb2NrZXRSZW1vdGVIb3N0
TmFtZTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGU3RyZWFtUHJvcGVydHlTb2NrZXRSZW1vdGVQb3J0TnVtYmVyOw0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZTdHJlYW1DcmVhdGVQYWlyV2l0
aFNvY2tldChDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZTb2NrZXROYXRpdmVIYW5kbGUgc29jaywg
Q0ZSZWFkU3RyZWFtUmVmICpyZWFkU3RyZWFtLCBDRldyaXRlU3RyZWFtUmVmICp3cml0ZVN0cmVh
bSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlN0cmVhbUNyZWF0
ZVBhaXJXaXRoU29ja2V0VG9Ib3N0KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlN0cmluZ1JlZiBo
b3N0LCBVSW50MzIgcG9ydCwgQ0ZSZWFkU3RyZWFtUmVmICpyZWFkU3RyZWFtLCBDRldyaXRlU3Ry
ZWFtUmVmICp3cml0ZVN0cmVhbSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
dm9pZCBDRlN0cmVhbUNyZWF0ZVBhaXJXaXRoUGVlclNvY2tldFNpZ25hdHVyZShDRkFsbG9jYXRv
clJlZiBhbGxvYywgY29uc3QgQ0ZTb2NrZXRTaWduYXR1cmUgKnNpZ25hdHVyZSwgQ0ZSZWFkU3Ry
ZWFtUmVmICpyZWFkU3RyZWFtLCBDRldyaXRlU3RyZWFtUmVmICp3cml0ZVN0cmVhbSk7DQoNCg0K
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmVhbVN0YXR1cyBDRlJl
YWRTdHJlYW1HZXRTdGF0dXMoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSk7DQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJlYW1TdGF0dXMgQ0ZXcml0ZVN0cmVhbUdldFN0YXR1
cyhDRldyaXRlU3RyZWFtUmVmIHN0cmVhbSk7DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGRXJyb3JSZWYgQ0ZSZWFkU3RyZWFtQ29weUVycm9yKENGUmVhZFN0cmVhbVJl
ZiBzdHJlYW0pIDsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkVycm9yUmVm
IENGV3JpdGVTdHJlYW1Db3B5RXJyb3IoQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0pIDsNCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGUmVhZFN0
cmVhbU9wZW4oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRldyaXRlU3RyZWFtT3BlbihDRldyaXRlU3RyZWFtUmVmIHN0
cmVhbSk7DQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENG
UmVhZFN0cmVhbUNsb3NlKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0pOw0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZXcml0ZVN0cmVhbUNsb3NlKENGV3JpdGVTdHJlYW1S
ZWYgc3RyZWFtKTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29s
ZWFuIENGUmVhZFN0cmVhbUhhc0J5dGVzQXZhaWxhYmxlKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0p
Ow0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRklu
ZGV4IENGUmVhZFN0cmVhbVJlYWQoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgVUludDggKmJ1ZmZl
ciwgQ0ZJbmRleCBidWZmZXJMZW5ndGgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgVUludDggKkNGUmVhZFN0cmVhbUdldEJ1ZmZl
cihDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRkluZGV4IG1heEJ5dGVzVG9SZWFkLCBDRkluZGV4
ICpudW1CeXRlc1JlYWQpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJvb2xlYW4gQ0ZXcml0ZVN0cmVhbUNhbkFjY2VwdEJ5dGVzKENGV3JpdGVTdHJlYW1SZWYgc3Ry
ZWFtKTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRklu
ZGV4IENGV3JpdGVTdHJlYW1Xcml0ZShDRldyaXRlU3RyZWFtUmVmIHN0cmVhbSwgY29uc3QgVUlu
dDggKmJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJMZW5ndGgpOw0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVHlwZVJlZiBDRlJlYWRTdHJlYW1Db3B5
UHJvcGVydHkoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlOYW1l
KTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVSZWYgQ0ZXcml0ZVN0
cmVhbUNvcHlQcm9wZXJ0eShDRldyaXRlU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpbmdSZWYgcHJv
cGVydHlOYW1lKTsNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29s
ZWFuIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgQ0ZUeXBlUmVmIHByb3BlcnR5VmFsdWUpOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZXcml0ZVN0cmVhbVNldFByb3BlcnR5
KENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIENGVHlw
ZVJlZiBwcm9wZXJ0eVZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGUmVhZFN0cmVhbVNl
dENsaWVudChDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRk9wdGlvbkZsYWdzIHN0cmVhbUV2ZW50
cywgQ0ZSZWFkU3RyZWFtQ2xpZW50Q2FsbEJhY2sgY2xpZW50Q0IsIENGU3RyZWFtQ2xpZW50Q29u
dGV4dCAqY2xpZW50Q29udGV4dCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qm9vbGVhbiBDRldyaXRlU3RyZWFtU2V0Q2xpZW50KENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtLCBD
Rk9wdGlvbkZsYWdzIHN0cmVhbUV2ZW50cywgQ0ZXcml0ZVN0cmVhbUNsaWVudENhbGxCYWNrIGNs
aWVudENCLCBDRlN0cmVhbUNsaWVudENvbnRleHQgKmNsaWVudENvbnRleHQpOw0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhS
dW5Mb29wKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0
cmluZ1JlZiBydW5Mb29wTW9kZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
dm9pZCBDRldyaXRlU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcChDRldyaXRlU3RyZWFtUmVmIHN0
cmVhbSwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlKTsNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZSZWFkU3RyZWFtVW5zY2hl
ZHVsZUZyb21SdW5Mb29wKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGUnVuTG9vcFJlZiBydW5M
b29wLCBDRlN0cmluZ1JlZiBydW5Mb29wTW9kZSk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0Kdm9pZCBDRldyaXRlU3RyZWFtVW5zY2hlZHVsZUZyb21SdW5Mb29wKENGV3JpdGVT
dHJlYW1SZWYgc3RyZWFtLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgcnVuTG9v
cE1vZGUpOw0KDQoNCg0KdHlwZWRlZiBDRkluZGV4IENGU3RyZWFtRXJyb3JEb21haW47IGVudW0g
ew0KICAgIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tID0gLTFMLCAgICAgIA0KICAgIGtDRlN0
cmVhbUVycm9yRG9tYWluUE9TSVggPSAxLCAgICAgICAgDQogICAga0NGU3RyZWFtRXJyb3JEb21h
aW5NYWNPU1N0YXR1cyAgICAgIA0KfTsNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIENGSW5kZXgg
ZG9tYWluOyANCiAgICBTSW50MzIgZXJyb3I7DQp9IENGU3RyZWFtRXJyb3I7DQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJlYW1FcnJvciBDRlJlYWRTdHJlYW1HZXRFcnJv
cihDRlJlYWRTdHJlYW1SZWYgc3RyZWFtKTsNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpDRlN0cmVhbUVycm9yIENGV3JpdGVTdHJlYW1HZXRFcnJvcihDRldyaXRlU3RyZWFtUmVm
IHN0cmVhbSk7DQoNCg0KfQ0KDQoNCiNsaW5lIDI5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0u
aCINCiNsaW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlByb3BlcnR5TGlzdC5oIg0KI2xpbmUgNDgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XENvcmVGb3VuZGF0aW9uL0NGUHJvcGVydHlMaXN0LmgiDQoNCg0KZXh0ZXJuICJDIiB7DQoNCnR5
cGVkZWYgQ0ZPcHRpb25GbGFncyBDRlByb3BlcnR5TGlzdE11dGFiaWxpdHlPcHRpb25zOyBlbnVt
IHsNCiAgICBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUgPSAwLA0KICAgIGtDRlByb3BlcnR5TGlz
dE11dGFibGVDb250YWluZXJzLA0KICAgIGtDRlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJz
QW5kTGVhdmVzDQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQ0ZQcm9wZXJ0eUxpc3RSZWYgQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVG
cm9tWE1MRGF0YShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGF0YVJlZiB4bWxEYXRhLCBD
Rk9wdGlvbkZsYWdzIG11dGFiaWxpdHlPcHRpb24sIENGU3RyaW5nUmVmICplcnJvclN0cmluZyk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpDRkRhdGFSZWYgQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVYTUxEYXRhKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgQ0ZQcm9wZXJ0eUxpc3RSZWYgcHJvcGVydHlMaXN0KTsNCg0KDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlByb3BlcnR5TGlzdFJl
ZiBDRlByb3BlcnR5TGlzdENyZWF0ZURlZXBDb3B5KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
Q0ZQcm9wZXJ0eUxpc3RSZWYgcHJvcGVydHlMaXN0LCBDRk9wdGlvbkZsYWdzIG11dGFiaWxpdHlP
cHRpb24pOw0KDQp0eXBlZGVmIENGSW5kZXggQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQ7IGVudW0gew0K
ICAgIGtDRlByb3BlcnR5TGlzdE9wZW5TdGVwRm9ybWF0ID0gMSwNCiAgICBrQ0ZQcm9wZXJ0eUxp
c3RYTUxGb3JtYXRfdjFfMCA9IDEwMCwNCiAgICBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCA9IDIwMA0KfTsNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBv
cnQpDQpCb29sZWFuIENGUHJvcGVydHlMaXN0SXNWYWxpZChDRlByb3BlcnR5TGlzdFJlZiBwbGlz
dCwgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQgZm9ybWF0KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRleCBDRlByb3BlcnR5
TGlzdFdyaXRlVG9TdHJlYW0oQ0ZQcm9wZXJ0eUxpc3RSZWYgcHJvcGVydHlMaXN0LCBDRldyaXRl
U3RyZWFtUmVmIHN0cmVhbSwgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQgZm9ybWF0LCBDRlN0cmluZ1Jl
ZiAqZXJyb3JTdHJpbmcpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZQcm9wZXJ0eUxpc3RSZWYgQ0ZQcm9wZXJ0eUxpc3RDcmVh
dGVGcm9tU3RyZWFtKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZSZWFkU3RyZWFtUmVmIHN0
cmVhbSwgQ0ZJbmRleCBzdHJlYW1MZW5ndGgsIENGT3B0aW9uRmxhZ3MgbXV0YWJpbGl0eU9wdGlv
biwgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQgKmZvcm1hdCwgQ0ZTdHJpbmdSZWYgKmVycm9yU3RyaW5n
KTsNCg0KDQojbGluZSAxNDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUHJvcGVydHlMaXN0LmgiDQoNCg0K
DQplbnVtIHsNCiAgICBrQ0ZQcm9wZXJ0eUxpc3RSZWFkQ29ycnVwdEVycm9yID0gMzg0MCwgICAg
ICAgICAgICAgIA0KICAgIGtDRlByb3BlcnR5TGlzdFJlYWRVbmtub3duVmVyc2lvbkVycm9yID0g
Mzg0MSwgICAgICAgDQogICAga0NGUHJvcGVydHlMaXN0UmVhZFN0cmVhbUVycm9yID0gMzg0Miwg
ICAgICAgICAgICAgICANCiAgICBrQ0ZQcm9wZXJ0eUxpc3RXcml0ZVN0cmVhbUVycm9yID0gMzg1
MSwgICAgICAgICAgICAgIA0KfSA7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQ0ZQcm9wZXJ0eUxpc3RSZWYgQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShDRkFs
bG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGF0YVJlZiBkYXRhLCBDRk9wdGlvbkZsYWdzIG9wdGlv
bnMsIENGUHJvcGVydHlMaXN0Rm9ybWF0ICpmb3JtYXQsIENGRXJyb3JSZWYgKmVycm9yKSA7DQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGUHJvcGVydHlMaXN0
UmVmIENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aFN0cmVhbShDRkFsbG9jYXRvclJlZiBhbGxvY2F0
b3IsIENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGSW5kZXggc3RyZWFtTGVuZ3RoLCBDRk9wdGlv
bkZsYWdzIG9wdGlvbnMsIENGUHJvcGVydHlMaXN0Rm9ybWF0ICpmb3JtYXQsIENGRXJyb3JSZWYg
KmVycm9yKSA7DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZJbmRl
eCBDRlByb3BlcnR5TGlzdFdyaXRlKENGUHJvcGVydHlMaXN0UmVmIHByb3BlcnR5TGlzdCwgQ0ZX
cml0ZVN0cmVhbVJlZiBzdHJlYW0sIENGUHJvcGVydHlMaXN0Rm9ybWF0IGZvcm1hdCwgQ0ZPcHRp
b25GbGFncyBvcHRpb25zLCBDRkVycm9yUmVmICplcnJvcikgOw0KDQojbGluZSAxNzQgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGUHJvcGVydHlMaXN0LmgiDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQ0ZEYXRhUmVmIENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIENGUHJvcGVydHlMaXN0UmVmIHByb3BlcnR5TGlzdCwgQ0ZQcm9wZXJ0
eUxpc3RGb3JtYXQgZm9ybWF0LCBDRk9wdGlvbkZsYWdzIG9wdGlvbnMsIENGRXJyb3JSZWYgKmVy
cm9yKSA7DQoNCg0KDQp9DQoNCg0KI2xpbmUgMTg2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlByb3BlcnR5
TGlzdC5oIg0KDQojbGluZSA4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlNl
dC5oIg0KDQoNCmV4dGVybiAiQyIgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGNvbnN0
IHZvaWQgKgkoKkNGU2V0UmV0YWluQ2FsbEJhY2spKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
Y29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHZvaWQJCSgqQ0ZTZXRS
ZWxlYXNlQ2FsbEJhY2spKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3Qgdm9pZCAqdmFs
dWUpOw0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIENGU3RyaW5nUmVmCSgqQ0ZTZXRDb3B5RGVzY3Jp
cHRpb25DYWxsQmFjaykoY29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgQm9vbGVhbgkJKCpDRlNldEVxdWFsQ2FsbEJhY2spKGNvbnN0IHZvaWQgKnZhbHVlMSwgY29u
c3Qgdm9pZCAqdmFsdWUyKTsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBDRkhhc2hDb2RlCSgqQ0ZT
ZXRIYXNoQ2FsbEJhY2spKGNvbnN0IHZvaWQgKnZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICAgIENGSW5k
ZXgJCQkJdmVyc2lvbjsNCiAgICBDRlNldFJldGFpbkNhbGxCYWNrCQkJcmV0YWluOw0KICAgIENG
U2V0UmVsZWFzZUNhbGxCYWNrCQlyZWxlYXNlOw0KICAgIENGU2V0Q29weURlc2NyaXB0aW9uQ2Fs
bEJhY2sJY29weURlc2NyaXB0aW9uOw0KICAgIENGU2V0RXF1YWxDYWxsQmFjawkJCWVxdWFsOw0K
ICAgIENGU2V0SGFzaENhbGxCYWNrCQkJaGFzaDsNCn0gQ0ZTZXRDYWxsQmFja3M7DQoNCg0KDQoN
Cg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTZXRDYWxsQmFj
a3Mga0NGVHlwZVNldENhbGxCYWNrczsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCmNvbnN0IENGU2V0Q2FsbEJhY2tzIGtDRkNvcHlTdHJpbmdTZXRDYWxs
QmFja3M7DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHZvaWQgKCpDRlNldEFwcGxpZXJGdW5j
dGlvbikoY29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCnR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9fQ0ZTZXQgKiBDRlNldFJlZjsNCg0KDQoNCg0KDQp0eXBlZGVmIHN0
cnVjdCBfX0NGU2V0ICogQ0ZNdXRhYmxlU2V0UmVmOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRlNldEdldFR5cGVJRCh2b2lkKTsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KQ0KQ0ZTZXRSZWYgQ0ZTZXRDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBj
b25zdCB2b2lkICoqdmFsdWVzLCBDRkluZGV4IG51bVZhbHVlcywgY29uc3QgQ0ZTZXRDYWxsQmFj
a3MgKmNhbGxCYWNrcyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlNldFJlZiBDRlNldENyZWF0ZUNvcHko
Q0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlNldFJlZiB0aGVTZXQpOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRk11
dGFibGVTZXRSZWYgQ0ZTZXRDcmVhdGVNdXRhYmxlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
Q0ZJbmRleCBjYXBhY2l0eSwgY29uc3QgQ0ZTZXRDYWxsQmFja3MgKmNhbGxCYWNrcyk7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRk11dGFibGVTZXRSZWYgQ0ZTZXRDcmVhdGVN
dXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGSW5kZXggY2FwYWNpdHksIENG
U2V0UmVmIHRoZVNldCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGSW5kZXggQ0ZTZXRHZXRDb3VudChDRlNldFJlZiB0aGVTZXQpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQ0ZJbmRleCBDRlNldEdldENvdW50T2ZWYWx1ZShDRlNldFJlZiB0aGVTZXQsIGNvbnN0IHZv
aWQgKnZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRlNldENvbnRhaW5zVmFsdWUoQ0ZTZXRSZWYgdGhl
U2V0LCBjb25zdCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCB2b2lkICpDRlNldEdldFZhbHVlKENG
U2V0UmVmIHRoZVNldCwgY29uc3Qgdm9pZCAqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Qm9vbGVhbiBDRlNldEdldFZhbHVlSWZQcmVzZW50KENGU2V0UmVmIHRoZVNldCwgY29uc3Qgdm9p
ZCAqY2FuZGlkYXRlLCBjb25zdCB2b2lkICoqdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZTZXRHZXRWYWx1ZXMo
Q0ZTZXRSZWYgdGhlU2V0LCBjb25zdCB2b2lkICoqdmFsdWVzKTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lk
IENGU2V0QXBwbHlGdW5jdGlvbihDRlNldFJlZiB0aGVTZXQsIENGU2V0QXBwbGllckZ1bmN0aW9u
IGFwcGxpZXIsIHZvaWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlNldEFkZFZhbHVlKENGTXV0YWJs
ZVNldFJlZiB0aGVTZXQsIGNvbnN0IHZvaWQgKnZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlNl
dFJlcGxhY2VWYWx1ZShDRk11dGFibGVTZXRSZWYgdGhlU2V0LCBjb25zdCB2b2lkICp2YWx1ZSk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlNldFNldFZhbHVlKENGTXV0YWJsZVNldFJlZiB0aGVTZXQs
IGNvbnN0IHZvaWQgKnZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZTZXRSZW1vdmVWYWx1ZShDRk11dGFibGVT
ZXRSZWYgdGhlU2V0LCBjb25zdCB2b2lkICp2YWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZTZXRSZW1vdmVBbGxWYWx1ZXMoQ0ZN
dXRhYmxlU2V0UmVmIHRoZVNldCk7DQoNCn0NCg0KDQojbGluZSA1MTkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGU2V0LmgiDQoNCiNsaW5lIDkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgOTAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oIg0KI2xpbmUgOTEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlv
bi9DRlN0cmluZ0VuY29kaW5nRXh0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRkJhc2UuaCINCiNsaW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmluZ0VuY29kaW5n
RXh0LmgiDQoNCmV4dGVybiAiQyIgew0KDQp0eXBlZGVmIENGSW5kZXggQ0ZTdHJpbmdFbmNvZGlu
Z3M7IGVudW0gew0KDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNKYXBhbmVzZSA9IDEsDQogICAg
a0NGU3RyaW5nRW5jb2RpbmdNYWNDaGluZXNlVHJhZCA9IDIsDQogICAga0NGU3RyaW5nRW5jb2Rp
bmdNYWNLb3JlYW4gPSAzLA0KICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjQXJhYmljID0gNCwNCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0hlYnJldyA9IDUsDQogICAga0NGU3RyaW5nRW5jb2RpbmdN
YWNHcmVlayA9IDYsDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNDeXJpbGxpYyA9IDcsDQogICAg
a0NGU3RyaW5nRW5jb2RpbmdNYWNEZXZhbmFnYXJpID0gOSwNCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z01hY0d1cm11a2hpID0gMTAsDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNHdWphcmF0aSA9IDEx
LA0KICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjT3JpeWEgPSAxMiwNCiAgICBrQ0ZTdHJpbmdFbmNv
ZGluZ01hY0JlbmdhbGkgPSAxMywNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY1RhbWlsID0gMTQs
DQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNUZWx1Z3UgPSAxNSwNCiAgICBrQ0ZTdHJpbmdFbmNv
ZGluZ01hY0thbm5hZGEgPSAxNiwNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY01hbGF5YWxhbSA9
IDE3LA0KICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjU2luaGFsZXNlID0gMTgsDQogICAga0NGU3Ry
aW5nRW5jb2RpbmdNYWNCdXJtZXNlID0gMTksDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNLaG1l
ciA9IDIwLA0KICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjVGhhaSA9IDIxLA0KICAgIGtDRlN0cmlu
Z0VuY29kaW5nTWFjTGFvdGlhbiA9IDIyLA0KICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjR2Vvcmdp
YW4gPSAyMywNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0FybWVuaWFuID0gMjQsDQogICAga0NG
U3RyaW5nRW5jb2RpbmdNYWNDaGluZXNlU2ltcCA9IDI1LA0KICAgIGtDRlN0cmluZ0VuY29kaW5n
TWFjVGliZXRhbiA9IDI2LA0KICAgIGtDRlN0cmluZ0VuY29kaW5nTWFjTW9uZ29saWFuID0gMjcs
DQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNFdGhpb3BpYyA9IDI4LA0KICAgIGtDRlN0cmluZ0Vu
Y29kaW5nTWFjQ2VudHJhbEV1clJvbWFuID0gMjksDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNW
aWV0bmFtZXNlID0gMzAsDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNFeHRBcmFiaWMgPSAzMSwN
CiAgICANCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY1N5bWJvbCA9IDMzLA0KICAgIGtDRlN0cmlu
Z0VuY29kaW5nTWFjRGluZ2JhdHMgPSAzNCwNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY1R1cmtp
c2ggPSAzNSwNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0Nyb2F0aWFuID0gMzYsDQogICAga0NG
U3RyaW5nRW5jb2RpbmdNYWNJY2VsYW5kaWMgPSAzNywNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01h
Y1JvbWFuaWFuID0gMzgsDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNDZWx0aWMgPSAzOSwNCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ01hY0dhZWxpYyA9IDQwLA0KICAgIA0KICAgIGtDRlN0cmluZ0Vu
Y29kaW5nTWFjRmFyc2kgPSAweDhDLAkNCiAgICANCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ01hY1Vr
cmFpbmlhbiA9IDB4OTgsDQogICAgDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNJbnVpdCA9IDB4
RUMsDQogICAga0NGU3RyaW5nRW5jb2RpbmdNYWNWVDEwMCA9IDB4RkMsCQ0KICAgIA0KICAgIGtD
RlN0cmluZ0VuY29kaW5nTWFjSEZTID0gMHhGRiwJDQoNCiAgICANCiAgICANCg0KICAgIA0KDQog
ICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjIgPSAweDAyMDIsCQ0KICAgIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4zID0gMHgwMjAzLAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGlu
NCA9IDB4MDIwNCwJDQogICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbkN5cmlsbGljID0gMHgw
MjA1LAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluQXJhYmljID0gMHgwMjA2LAkNCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluR3JlZWsgPSAweDAyMDcsCQ0KICAgIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW5IZWJyZXcgPSAweDAyMDgsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5n
SVNPTGF0aW41ID0gMHgwMjA5LAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluNiA9IDB4
MDIwQSwJDQogICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpblRoYWkgPSAweDAyMEIsCQ0KICAg
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW43ID0gMHgwMjBELAkNCiAgICBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluOCA9IDB4MDIwRSwJDQogICAga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjkg
PSAweDAyMEYsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xMCA9IDB4MDIxMCwJDQoN
CiAgICANCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0xhdGluVVMgPSAweDA0MDAsCQ0KICAgIGtD
RlN0cmluZ0VuY29kaW5nRE9TR3JlZWsgPSAweDA0MDUsCQkNCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z0RPU0JhbHRpY1JpbSA9IDB4MDQwNiwJDQogICAga0NGU3RyaW5nRW5jb2RpbmdET1NMYXRpbjEg
PSAweDA0MTAsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nRE9TR3JlZWsxID0gMHgwNDExLAkNCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0xhdGluMiA9IDB4MDQxMiwJDQogICAga0NGU3RyaW5nRW5j
b2RpbmdET1NDeXJpbGxpYyA9IDB4MDQxMywJDQogICAga0NGU3RyaW5nRW5jb2RpbmdET1NUdXJr
aXNoID0gMHgwNDE0LAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU1BvcnR1Z3Vlc2UgPSAweDA0
MTUsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nRE9TSWNlbGFuZGljID0gMHgwNDE2LAkNCiAgICBr
Q0ZTdHJpbmdFbmNvZGluZ0RPU0hlYnJldyA9IDB4MDQxNywJDQogICAga0NGU3RyaW5nRW5jb2Rp
bmdET1NDYW5hZGlhbkZyZW5jaCA9IDB4MDQxOCwgDQogICAga0NGU3RyaW5nRW5jb2RpbmdET1NB
cmFiaWMgPSAweDA0MTksCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nRE9TTm9yZGljID0gMHgwNDFB
LAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU1J1c3NpYW4gPSAweDA0MUIsCQ0KICAgIGtDRlN0
cmluZ0VuY29kaW5nRE9TR3JlZWsyID0gMHgwNDFDLAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RP
U1RoYWkgPSAweDA0MUQsCQkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0phcGFuZXNlID0gMHgw
NDIwLAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0NoaW5lc2VTaW1wbGlmID0gMHgwNDIxLCAN
CiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0RPU0tvcmVhbiA9IDB4MDQyMiwJDQogICAga0NGU3RyaW5n
RW5jb2RpbmdET1NDaGluZXNlVHJhZCA9IDB4MDQyMywJDQoNCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z1dpbmRvd3NMYXRpbjIgPSAweDA1MDEsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nV2luZG93c0N5
cmlsbGljID0gMHgwNTAyLAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NHcmVlayA9IDB4
MDUwMywJDQogICAga0NGU3RyaW5nRW5jb2RpbmdXaW5kb3dzTGF0aW41ID0gMHgwNTA0LAkNCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NIZWJyZXcgPSAweDA1MDUsCQ0KICAgIGtDRlN0cmlu
Z0VuY29kaW5nV2luZG93c0FyYWJpYyA9IDB4MDUwNiwJDQogICAga0NGU3RyaW5nRW5jb2RpbmdX
aW5kb3dzQmFsdGljUmltID0gMHgwNTA3LAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NW
aWV0bmFtZXNlID0gMHgwNTA4LCANCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NLb3JlYW5K
b2hhYiA9IDB4MDUxMCwgDQoNCiAgICANCg0KICAgIGtDRlN0cmluZ0VuY29kaW5nQU5TRUwgPSAw
eDA2MDEsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nSklTX1gwMjAxXzc2ID0gMHgwNjIwLA0KICAg
IGtDRlN0cmluZ0VuY29kaW5nSklTX1gwMjA4XzgzID0gMHgwNjIxLA0KICAgIGtDRlN0cmluZ0Vu
Y29kaW5nSklTX1gwMjA4XzkwID0gMHgwNjIyLA0KICAgIGtDRlN0cmluZ0VuY29kaW5nSklTX1gw
MjEyXzkwID0gMHgwNjIzLA0KICAgIGtDRlN0cmluZ0VuY29kaW5nSklTX0M2MjI2Xzc4ID0gMHgw
NjI0LA0KICAgIGtDRlN0cmluZ0VuY29kaW5nU2hpZnRKSVNfWDAyMTMgID0gMHgwNjI4LCANCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ1NoaWZ0SklTX1gwMjEzX01lbkt1VGVuID0gMHgwNjI5LAkNCiAg
ICBrQ0ZTdHJpbmdFbmNvZGluZ0dCXzIzMTJfODAgPSAweDA2MzAsDQogICAga0NGU3RyaW5nRW5j
b2RpbmdHQktfOTUgPSAweDA2MzEsCQkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0dCXzE4MDMwXzIw
MDAgPSAweDA2MzIsDQogICAga0NGU3RyaW5nRW5jb2RpbmdLU0NfNTYwMV84NyA9IDB4MDY0MCwJ
DQogICAga0NGU3RyaW5nRW5jb2RpbmdLU0NfNTYwMV85Ml9Kb2hhYiA9IDB4MDY0MSwgDQogICAg
a0NGU3RyaW5nRW5jb2RpbmdDTlNfMTE2NDNfOTJfUDEgPSAweDA2NTEsCQ0KICAgIGtDRlN0cmlu
Z0VuY29kaW5nQ05TXzExNjQzXzkyX1AyID0gMHgwNjUyLAkNCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z0NOU18xMTY0M185Ml9QMyA9IDB4MDY1MywJDQoNCiAgICANCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT18yMDIyX0pQID0gMHgwODIwLA0KICAgIGtDRlN0cmluZ0VuY29kaW5nSVNPXzIwMjJfSlBf
MiA9IDB4MDgyMSwNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT18yMDIyX0pQXzEgPSAweDA4MjIs
IA0KICAgIGtDRlN0cmluZ0VuY29kaW5nSVNPXzIwMjJfSlBfMyA9IDB4MDgyMywgDQogICAga0NG
U3RyaW5nRW5jb2RpbmdJU09fMjAyMl9DTiA9IDB4MDgzMCwNCiAgICBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT18yMDIyX0NOX0VYVCA9IDB4MDgzMSwNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0lTT18yMDIy
X0tSID0gMHgwODQwLA0KDQogICAgDQogICAga0NGU3RyaW5nRW5jb2RpbmdFVUNfSlAgPSAweDA5
MjAsCQkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0VVQ19DTiA9IDB4MDkzMCwJCQ0KICAgIGtDRlN0
cmluZ0VuY29kaW5nRVVDX1RXID0gMHgwOTMxLAkJDQogICAga0NGU3RyaW5nRW5jb2RpbmdFVUNf
S1IgPSAweDA5NDAsCQkNCg0KICAgIA0KICAgIGtDRlN0cmluZ0VuY29kaW5nU2hpZnRKSVMgPSAw
eDBBMDEsCQkNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ0tPSThfUiA9IDB4MEEwMiwJCQ0KICAgIGtD
RlN0cmluZ0VuY29kaW5nQmlnNSA9IDB4MEEwMywJCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nTWFj
Um9tYW5MYXRpbjEgPSAweDBBMDQsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nSFpfR0JfMjMxMiA9
IDB4MEEwNSwJDQogICAga0NGU3RyaW5nRW5jb2RpbmdCaWc1X0hLU0NTXzE5OTkgPSAweDBBMDYs
IA0KICAgIGtDRlN0cmluZ0VuY29kaW5nVklTQ0lJID0gMHgwQTA3LAkNCiAgICBrQ0ZTdHJpbmdF
bmNvZGluZ0tPSThfVSA9IDB4MEEwOCwJDQogICAga0NGU3RyaW5nRW5jb2RpbmdCaWc1X0UgPSAw
eDBBMDksCQ0KDQogICAgDQoNCiAgICBrQ0ZTdHJpbmdFbmNvZGluZ05leHRTdGVwSmFwYW5lc2Ug
PSAweDBCMDIsCQ0KDQogICAgDQogICAga0NGU3RyaW5nRW5jb2RpbmdFQkNESUNfVVMgPSAweDBD
MDEsCQ0KICAgIGtDRlN0cmluZ0VuY29kaW5nRUJDRElDX0NQMDM3ID0gMHgwQzAyLAkNCg0KICAg
IGtDRlN0cmluZ0VuY29kaW5nVVRGNyAgPSAweDA0MDAwMTAwLCANCiAgICBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjdfSU1BUCAgPSAweDBBMTAsIA0KDQogICAgDQogICAga0NGU3RyaW5nRW5jb2RpbmdT
aGlmdEpJU19YMDIxM18wMCA9IDB4MDYyOCANCn07DQoNCn0NCg0KI2xpbmUgMjEzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91
bmRhdGlvbi9DRlN0cmluZ0VuY29kaW5nRXh0LmgiDQoNCiNsaW5lIDkyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZUaW1lWm9uZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZUaW1lWm9uZS5o
Ig0KDQojbGluZSA5MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XENvcmVGb3VuZGF0aW9uL0NGVHJlZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlRyZWUu
aCINCg0KDQpleHRlcm4gIkMiIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGNvbnN0
IHZvaWQgKgkoKkNGVHJlZVJldGFpbkNhbGxCYWNrKShjb25zdCB2b2lkICppbmZvKTsNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiB2b2lkCQkoKkNGVHJlZVJlbGVhc2VDYWxsQmFjaykoY29uc3Qgdm9p
ZCAqaW5mbyk7DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBDRlN0cmluZ1JlZgkoKkNGVHJlZUNv
cHlEZXNjcmlwdGlvbkNhbGxCYWNrKShjb25zdCB2b2lkICppbmZvKTsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBDRkluZGV4CQkJCXZl
cnNpb247DQogICAgdm9pZCAqCQkJCWluZm87DQogICAgQ0ZUcmVlUmV0YWluQ2FsbEJhY2sJCXJl
dGFpbjsNCiAgICBDRlRyZWVSZWxlYXNlQ2FsbEJhY2sJCXJlbGVhc2U7CQ0KICAgIENGVHJlZUNv
cHlEZXNjcmlwdGlvbkNhbGxCYWNrCWNvcHlEZXNjcmlwdGlvbjsNCn0gQ0ZUcmVlQ29udGV4dDsN
Cg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdm9pZCAoKkNGVHJlZUFwcGxpZXJGdW5jdGlvbiko
Y29uc3Qgdm9pZCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCnR5cGVkZWYgc3Ry
dWN0IF9fQ0ZUcmVlICogQ0ZUcmVlUmVmOw0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRlRyZWVHZXRUeXBlSUQodm9pZCk7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQ0ZUcmVlUmVmIENGVHJlZUNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIGNvbnN0
IENGVHJlZUNvbnRleHQgKmNvbnRleHQpOw0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlRyZWVSZWYgQ0ZUcmVlR2V0UGFyZW50KENGVHJlZVJlZiB0
cmVlKTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Q0ZUcmVlUmVmIENGVHJlZUdldE5leHRTaWJsaW5nKENGVHJlZVJlZiB0cmVlKTsNCg0KDQoNCg0K
DQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZUcmVlUmVmIENGVHJl
ZUdldEZpcnN0Q2hpbGQoQ0ZUcmVlUmVmIHRyZWUpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZUcmVlR2V0Q29udGV4dChD
RlRyZWVSZWYgdHJlZSwgQ0ZUcmVlQ29udGV4dCAqY29udGV4dCk7DQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGSW5kZXggQ0ZUcmVlR2V0Q2hpbGRD
b3VudChDRlRyZWVSZWYgdHJlZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVHJlZVJlZiBDRlRyZWVHZXRDaGlsZEF0SW5kZXgoQ0ZU
cmVlUmVmIHRyZWUsIENGSW5kZXggaWR4KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlRyZWVHZXRDaGlsZHJlbihDRlRyZWVS
ZWYgdHJlZSwgQ0ZUcmVlUmVmICpjaGlsZHJlbik7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGVHJl
ZUFwcGx5RnVuY3Rpb25Ub0NoaWxkcmVuKENGVHJlZVJlZiB0cmVlLCBDRlRyZWVBcHBsaWVyRnVu
Y3Rpb24gYXBwbGllciwgdm9pZCAqY29udGV4dCk7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVHJlZVJlZiBDRlRyZWVGaW5kUm9vdChDRlRyZWVS
ZWYgdHJlZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlRyZWVTZXRDb250ZXh0KENGVHJlZVJlZiB0cmVlLCBj
b25zdCBDRlRyZWVDb250ZXh0ICpjb250ZXh0KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRlRyZWVQcmVwZW5kQ2hpbGQoQ0ZU
cmVlUmVmIHRyZWUsIENGVHJlZVJlZiBuZXdDaGlsZCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZUcmVlQXBwZW5kQ2hpbGQo
Q0ZUcmVlUmVmIHRyZWUsIENGVHJlZVJlZiBuZXdDaGlsZCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGVHJlZUluc2Vy
dFNpYmxpbmcoQ0ZUcmVlUmVmIHRyZWUsIENGVHJlZVJlZiBuZXdTaWJsaW5nKTsNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZUcmVlUmVtb3Zl
KENGVHJlZVJlZiB0cmVlKTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQgQ0ZUcmVlUmVtb3ZlQWxsQ2hpbGRyZW4oQ0ZUcmVlUmVmIHRyZWUpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCnZvaWQgQ0ZUcmVlU29ydENoaWxkcmVuKENGVHJlZVJlZiB0cmVlLCBDRkNv
bXBhcmF0b3JGdW5jdGlvbiBjb21wYXJhdG9yLCB2b2lkICpjb250ZXh0KTsNCg0KfQ0KDQoNCiNs
aW5lIDM1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxc
aW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZUcmVlLmgiDQoNCiNsaW5lIDk0ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZVUkwuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDExNzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJMLmgiDQoNCiNsaW5lIDk1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZV
UkxBY2Nlc3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRp
b24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCIN
CiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2lu
XFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlVSTEFjY2Vzcy5oIg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZBcnJheS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDcwNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZBcnJheS5oIg0KDQojbGluZSA0MyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29y
ZUZvdW5kYXRpb24vQ0ZVUkxBY2Nlc3MuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGRGF0
YS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxD
b3JlRm91bmRhdGlvbi9DRkRhdGEuaCINCg0KI2xpbmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJM
QWNjZXNzLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRpY3Rpb25hcnkuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzAyICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRp
Y3Rpb25hcnkuaCINCg0KI2xpbmUgNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJMQWNjZXNzLmgiDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwNyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oIg0KDQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZV
UkxBY2Nlc3MuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcu
aCINCiNsaW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlVSTEFjY2Vzcy5oIg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29y
ZUZvdW5kYXRpb24vQ0ZVUkwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExNzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJM
LmgiDQoNCiNsaW5lIDQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlVSTEFjY2Vzcy5oIg0KDQpleHRlcm4g
IkMiIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZVUkxDcmVhdGVEYXRh
QW5kUHJvcGVydGllc0Zyb21SZXNvdXJjZShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZVUkxSZWYg
dXJsLCBDRkRhdGFSZWYgKnJlc291cmNlRGF0YSwgQ0ZEaWN0aW9uYXJ5UmVmICpwcm9wZXJ0aWVz
LCBDRkFycmF5UmVmIGRlc2lyZWRQcm9wZXJ0aWVzLCBTSW50MzIgKmVycm9yQ29kZSkgOw0KDQoN
Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4g
Q0ZVUkxXcml0ZURhdGFBbmRQcm9wZXJ0aWVzVG9SZXNvdXJjZShDRlVSTFJlZiB1cmwsIENGRGF0
YVJlZiBkYXRhVG9Xcml0ZSwgQ0ZEaWN0aW9uYXJ5UmVmIHByb3BlcnRpZXNUb1dyaXRlLCBTSW50
MzIgKmVycm9yQ29kZSkgOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkJvb2xlYW4gQ0ZVUkxEZXN0cm95UmVzb3VyY2UoQ0ZVUkxSZWYgdXJsLCBTSW50MzIgKmVycm9y
Q29kZSkgOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVHlwZVJl
ZiBDRlVSTENyZWF0ZVByb3BlcnR5RnJvbVJlc291cmNlKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBD
RlVSTFJlZiB1cmwsIENGU3RyaW5nUmVmIHByb3BlcnR5LCBTSW50MzIgKmVycm9yQ29kZSkgOw0K
DQoNCg0KdHlwZWRlZiBDRkluZGV4IENGVVJMRXJyb3I7IGVudW0gew0KICAgIGtDRlVSTFVua25v
d25FcnJvciA9IC0xMEwsDQogICAga0NGVVJMVW5rbm93blNjaGVtZUVycm9yID0gLTExTCwNCiAg
ICBrQ0ZVUkxSZXNvdXJjZU5vdEZvdW5kRXJyb3IgPSAtMTJMLA0KICAgIGtDRlVSTFJlc291cmNl
QWNjZXNzVmlvbGF0aW9uRXJyb3IgPSAtMTNMLA0KICAgIGtDRlVSTFJlbW90ZUhvc3RVbmF2YWls
YWJsZUVycm9yID0gLTE0TCwNCiAgICBrQ0ZVUkxJbXByb3BlckFyZ3VtZW50c0Vycm9yID0gLTE1
TCwNCiAgICBrQ0ZVUkxVbmtub3duUHJvcGVydHlLZXlFcnJvciA9IC0xNkwsDQogICAga0NGVVJM
UHJvcGVydHlLZXlVbmF2YWlsYWJsZUVycm9yID0gLTE3TCwNCiAgICBrQ0ZVUkxUaW1lb3V0RXJy
b3IgPSAtMThMDQp9Ow0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNv
bnN0IENGU3RyaW5nUmVmIGtDRlVSTEZpbGVFeGlzdHMgOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTEZpbGVEaXJlY3RvcnlDb250ZW50
cyA7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGVVJMRmlsZUxlbmd0aCA7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSANCmNv
bnN0IENGU3RyaW5nUmVmIGtDRlVSTEZpbGVMYXN0TW9kaWZpY2F0aW9uVGltZSA7DQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMRmlsZVBP
U0lYTW9kZSA7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGVVJMRmlsZU93bmVySUQgOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9y
dCkNCmNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTEhUVFBTdGF0dXNDb2RlIDsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxIVFRQU3RhdHVz
TGluZSA7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp9DQoNCiNsaW5lIDE0NiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5k
YXRpb24vQ0ZVUkxBY2Nlc3MuaCINCg0KI2xpbmUgOTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlVVSUQuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNjYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlv
bi9DRlVVSUQuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcu
aCINCiNsaW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlVVSUQuaCINCg0KDQpleHRlcm4gIkMiIHsN
Cg0KdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVVSUQgKiBDRlVVSURSZWY7DQoNCnR5cGVkZWYg
c3RydWN0IHsNCiAgICBVSW50OCBieXRlMDsNCiAgICBVSW50OCBieXRlMTsNCiAgICBVSW50OCBi
eXRlMjsNCiAgICBVSW50OCBieXRlMzsNCiAgICBVSW50OCBieXRlNDsNCiAgICBVSW50OCBieXRl
NTsNCiAgICBVSW50OCBieXRlNjsNCiAgICBVSW50OCBieXRlNzsNCiAgICBVSW50OCBieXRlODsN
CiAgICBVSW50OCBieXRlOTsNCiAgICBVSW50OCBieXRlMTA7DQogICAgVUludDggYnl0ZTExOw0K
ICAgIFVJbnQ4IGJ5dGUxMjsNCiAgICBVSW50OCBieXRlMTM7DQogICAgVUludDggYnl0ZTE0Ow0K
ICAgIFVJbnQ4IGJ5dGUxNTsNCn0gQ0ZVVUlEQnl0ZXM7DQoNCg0KDQoNCg0KICAgICAgICANCmV4
dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlR5cGVJRCBDRlVVSURHZXRUeXBlSUQo
dm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlVVSURSZWYgQ0ZV
VUlEQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jKTsNCiAgICANCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGVVVJRFJlZiBDRlVVSURDcmVhdGVXaXRoQnl0ZXMoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2MsIFVJbnQ4IGJ5dGUwLCBVSW50OCBieXRlMSwgVUludDggYnl0ZTIsIFVJ
bnQ4IGJ5dGUzLCBVSW50OCBieXRlNCwgVUludDggYnl0ZTUsIFVJbnQ4IGJ5dGU2LCBVSW50OCBi
eXRlNywgVUludDggYnl0ZTgsIFVJbnQ4IGJ5dGU5LCBVSW50OCBieXRlMTAsIFVJbnQ4IGJ5dGUx
MSwgVUludDggYnl0ZTEyLCBVSW50OCBieXRlMTMsIFVJbnQ4IGJ5dGUxNCwgVUludDggYnl0ZTE1
KTsNCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVVVJRFJlZiBD
RlVVSURDcmVhdGVGcm9tU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlN0cmluZ1JlZiB1
dWlkU3RyKTsNCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3Ry
aW5nUmVmIENGVVVJRENyZWF0ZVN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZVVUlEUmVm
IHV1aWQpOw0KICAgIA0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZVVUlE
UmVmIENGVVVJREdldENvbnN0YW50VVVJRFdpdGhCeXRlcyhDRkFsbG9jYXRvclJlZiBhbGxvYywg
VUludDggYnl0ZTAsIFVJbnQ4IGJ5dGUxLCBVSW50OCBieXRlMiwgVUludDggYnl0ZTMsIFVJbnQ4
IGJ5dGU0LCBVSW50OCBieXRlNSwgVUludDggYnl0ZTYsIFVJbnQ4IGJ5dGU3LCBVSW50OCBieXRl
OCwgVUludDggYnl0ZTksIFVJbnQ4IGJ5dGUxMCwgVUludDggYnl0ZTExLCBVSW50OCBieXRlMTIs
IFVJbnQ4IGJ5dGUxMywgVUludDggYnl0ZTE0LCBVSW50OCBieXRlMTUpOw0KICAgIA0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZVVUlEQnl0ZXMgQ0ZVVUlER2V0VVVJREJ5
dGVzKENGVVVJRFJlZiB1dWlkKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGVVVJRFJlZiBDRlVVSURDcmVhdGVGcm9tVVVJREJ5dGVzKENGQWxsb2NhdG9yUmVmIGFsbG9j
LCBDRlVVSURCeXRlcyBieXRlcyk7DQoNCn0NCg0KDQojbGluZSAxMDYgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGVVVJRC5oIg0KDQojbGluZSA5NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCIN
Cg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFy
aWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDY2MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCYXNlLmgiDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24v
Q0ZCdW5kbGUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGli
cmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQXJyYXkuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3MDYgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGQXJyYXkuaCINCg0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0
TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRkRpY3Rpb25hcnkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNzAyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExp
YnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkRpY3Rpb25hcnkuaCINCg0K
I2xpbmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5c
XGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRkVycm9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwNyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZF
cnJvci5oIg0KDQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJy
YXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCdW5kbGUuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCiNsaW5lIDQ2ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91
bmRhdGlvbi9DRkJ1bmRsZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZVUkwuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDExNzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3
aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJMLmgiDQoNCiNsaW5lIDQ3ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91
bmRhdGlvbi9DRkJ1bmRsZS5oIg0KDQpleHRlcm4gIkMiIHsNCg0KdHlwZWRlZiBzdHJ1Y3QgX19D
RkJ1bmRsZSAqQ0ZCdW5kbGVSZWY7DQp0eXBlZGVmIHN0cnVjdCBfX0NGQnVuZGxlICpDRlBsdWdJ
blJlZjsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJp
bmdSZWYga0NGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uS2V5Ow0KICAgIA0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNvbnN0IENGU3RyaW5nUmVmIGtDRkJ1bmRsZUV4ZWN1
dGFibGVLZXk7DQogICAgDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGQnVuZGxlSWRlbnRpZmllcktleTsNCiAgICANCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpjb25zdCBDRlN0cmluZ1JlZiBrQ0ZCdW5kbGVWZXJzaW9uS2V5
Ow0KICAgIA0KICAgIA0KICAgIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNv
bnN0IENGU3RyaW5nUmVmIGtDRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uS2V5Ow0KICAgIA0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNvbnN0IENGU3RyaW5nUmVmIGtDRkJ1bmRs
ZU5hbWVLZXk7DQogICAgDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGQnVuZGxlTG9jYWxpemF0aW9uc0tleTsNCiAgICANCg0KDQoNCmV4dGVy
biAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkJ1bmRsZVJlZiBDRkJ1bmRsZUdldE1haW5C
dW5kbGUodm9pZCk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkJ1bmRs
ZVJlZiBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU3RyaW5nUmVmIGJ1bmRsZUlE
KTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZCdW5kbGVHZXRBbGxCdW5kbGVzKHZvaWQp
Ow0KICAgIA0KICAgIA0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNG
VHlwZUlEIENGQnVuZGxlR2V0VHlwZUlEKHZvaWQpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQ0ZCdW5kbGVSZWYgQ0ZCdW5kbGVDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLCBDRlVSTFJlZiBidW5kbGVVUkwpOw0KICAgIA0KDQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KQ0KQ0ZBcnJheVJlZiBDRkJ1bmRsZUNyZWF0ZUJ1bmRsZXNGcm9tRGlyZWN0
b3J5KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZVUkxSZWYgZGlyZWN0b3J5VVJMLCBDRlN0
cmluZ1JlZiBidW5kbGVUeXBlKTsNCiAgICANCiAgICANCg0KDQoNCmV4dGVybiAiQyIgX19kZWNs
c3BlYyhkbGxpbXBvcnQpDQpDRlVSTFJlZiBDRkJ1bmRsZUNvcHlCdW5kbGVVUkwoQ0ZCdW5kbGVS
ZWYgYnVuZGxlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVHlwZVJl
ZiBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVSZWYgYnVuZGxl
LCBDRlN0cmluZ1JlZiBrZXkpOw0KICAgIA0KICAgIA0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQ0KQ0ZEaWN0aW9uYXJ5UmVmIENGQnVuZGxlR2V0SW5mb0RpY3Rpb25hcnkoQ0ZC
dW5kbGVSZWYgYnVuZGxlKTsNCiAgICANCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGRGljdGlvbmFyeVJlZiBDRkJ1bmRsZUdldExvY2FsSW5mb0RpY3Rpb25hcnko
Q0ZCdW5kbGVSZWYgYnVuZGxlKTsNCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQgQ0ZCdW5kbGVHZXRQYWNrYWdlSW5mbyhDRkJ1bmRsZVJlZiBidW5kbGUsIFVJ
bnQzMiAqcGFja2FnZVR5cGUsIFVJbnQzMiAqcGFja2FnZUNyZWF0b3IpOw0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZTdHJpbmdSZWYgQ0ZCdW5kbGVHZXRJZGVudGlmaWVy
KENGQnVuZGxlUmVmIGJ1bmRsZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpVSW50MzIgQ0ZCdW5kbGVHZXRWZXJzaW9uTnVtYmVyKENGQnVuZGxlUmVmIGJ1bmRsZSk7DQoN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlN0cmluZ1JlZiBDRkJ1bmRsZUdl
dERldmVsb3BtZW50UmVnaW9uKENGQnVuZGxlUmVmIGJ1bmRsZSk7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlVSTFJlZiBDRkJ1bmRsZUNvcHlTdXBwb3J0RmlsZXNEaXJl
Y3RvcnlVUkwoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGVVJMUmVmIENGQnVuZGxlQ29weVJlc291cmNlc0RpcmVjdG9yeVVSTChDRkJ1
bmRsZVJlZiBidW5kbGUpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZV
UkxSZWYgQ0ZCdW5kbGVDb3B5UHJpdmF0ZUZyYW1ld29ya3NVUkwoQ0ZCdW5kbGVSZWYgYnVuZGxl
KTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVVJMUmVmIENGQnVuZGxl
Q29weVNoYXJlZEZyYW1ld29ya3NVUkwoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsNCg0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVVJMUmVmIENGQnVuZGxlQ29weVNoYXJlZFN1cHBv
cnRVUkwoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCkNGVVJMUmVmIENGQnVuZGxlQ29weUJ1aWx0SW5QbHVnSW5zVVJMKENGQnVuZGxlUmVm
IGJ1bmRsZSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0K
Q0ZEaWN0aW9uYXJ5UmVmIENGQnVuZGxlQ29weUluZm9EaWN0aW9uYXJ5SW5EaXJlY3RvcnkoQ0ZV
UkxSZWYgYnVuZGxlVVJMKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJv
b2xlYW4gQ0ZCdW5kbGVHZXRQYWNrYWdlSW5mb0luRGlyZWN0b3J5KENGVVJMUmVmIHVybCwgVUlu
dDMyICpwYWNrYWdlVHlwZSwgVUludDMyICpwYWNrYWdlQ3JlYXRvcik7DQoNCg0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZVUkxSZWYgQ0ZCdW5kbGVDb3B5UmVzb3VyY2VV
UkwoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBDRlN0cmluZ1JlZiByZXNvdXJjZU5hbWUsIENGU3RyaW5n
UmVmIHJlc291cmNlVHlwZSwgQ0ZTdHJpbmdSZWYgc3ViRGlyTmFtZSk7DQoNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFycmF5UmVmIENGQnVuZGxlQ29weVJlc291cmNlVVJM
c09mVHlwZShDRkJ1bmRsZVJlZiBidW5kbGUsIENGU3RyaW5nUmVmIHJlc291cmNlVHlwZSwgQ0ZT
dHJpbmdSZWYgc3ViRGlyTmFtZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQp
DQpDRlN0cmluZ1JlZiBDRkJ1bmRsZUNvcHlMb2NhbGl6ZWRTdHJpbmcoQ0ZCdW5kbGVSZWYgYnVu
ZGxlLCBDRlN0cmluZ1JlZiBrZXksIENGU3RyaW5nUmVmIHZhbHVlLCBDRlN0cmluZ1JlZiB0YWJs
ZU5hbWUpIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGVVJMUmVmIENGQnVuZGxlQ29weVJlc291cmNlVVJMSW5EaXJl
Y3RvcnkoQ0ZVUkxSZWYgYnVuZGxlVVJMLCBDRlN0cmluZ1JlZiByZXNvdXJjZU5hbWUsIENGU3Ry
aW5nUmVmIHJlc291cmNlVHlwZSwgQ0ZTdHJpbmdSZWYgc3ViRGlyTmFtZSk7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFycmF5UmVmIENGQnVuZGxlQ29weVJlc291cmNl
VVJMc09mVHlwZUluRGlyZWN0b3J5KENGVVJMUmVmIGJ1bmRsZVVSTCwgQ0ZTdHJpbmdSZWYgcmVz
b3VyY2VUeXBlLCBDRlN0cmluZ1JlZiBzdWJEaXJOYW1lKTsNCg0KDQoNCg0KDQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRkFycmF5UmVmIENGQnVuZGxlQ29weUJ1bmRsZUxv
Y2FsaXphdGlvbnMoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsNCiAgICANCg0KZXh0ZXJuICJDIiBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZCdW5kbGVDb3B5UHJlZmVycmVkTG9jYWxp
emF0aW9uc0Zyb21BcnJheShDRkFycmF5UmVmIGxvY0FycmF5KTsNCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlS
ZWYgQ0ZCdW5kbGVDb3B5TG9jYWxpemF0aW9uc0ZvclByZWZlcmVuY2VzKENGQXJyYXlSZWYgbG9j
QXJyYXksIENGQXJyYXlSZWYgcHJlZkFycmF5KTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CkNGVVJMUmVmIENGQnVuZGxlQ29weVJlc291cmNlVVJMRm9yTG9jYWxpemF0aW9uKENGQnVuZGxl
UmVmIGJ1bmRsZSwgQ0ZTdHJpbmdSZWYgcmVzb3VyY2VOYW1lLCBDRlN0cmluZ1JlZiByZXNvdXJj
ZVR5cGUsIENGU3RyaW5nUmVmIHN1YkRpck5hbWUsIENGU3RyaW5nUmVmIGxvY2FsaXphdGlvbk5h
bWUpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZBcnJheVJlZiBDRkJ1
bmRsZUNvcHlSZXNvdXJjZVVSTHNPZlR5cGVGb3JMb2NhbGl6YXRpb24oQ0ZCdW5kbGVSZWYgYnVu
ZGxlLCBDRlN0cmluZ1JlZiByZXNvdXJjZVR5cGUsIENGU3RyaW5nUmVmIHN1YkRpck5hbWUsIENG
U3RyaW5nUmVmIGxvY2FsaXphdGlvbk5hbWUpOw0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KDQoNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZEaWN0aW9uYXJ5
UmVmIENGQnVuZGxlQ29weUluZm9EaWN0aW9uYXJ5Rm9yVVJMKENGVVJMUmVmIHVybCk7DQogICAg
DQogICAgDQogICAgDQogICAgDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpD
RkFycmF5UmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbnNGb3JVUkwoQ0ZVUkxSZWYgdXJsKTsN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZCdW5kbGVDb3B5RXhlY3V0YWJsZUFyY2hpdGVjdHVyZXNG
b3JVUkwoQ0ZVUkxSZWYgdXJsKSA7DQogICAgDQogICAgDQogICAgDQoNCg0KDQoNCg0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZVUkxSZWYgQ0ZCdW5kbGVDb3B5RXhlY3V0
YWJsZVVSTChDRkJ1bmRsZVJlZiBidW5kbGUpOw0KDQplbnVtIHsNCiAgICBrQ0ZCdW5kbGVFeGVj
dXRhYmxlQXJjaGl0ZWN0dXJlSTM4NiAgICAgPSAweDAwMDAwMDA3LA0KICAgIGtDRkJ1bmRsZUV4
ZWN1dGFibGVBcmNoaXRlY3R1cmVQUEMgICAgICA9IDB4MDAwMDAwMTIsDQogICAga0NGQnVuZGxl
RXhlY3V0YWJsZUFyY2hpdGVjdHVyZVg4Nl82NCAgID0gMHgwMTAwMDAwNywNCiAgICBrQ0ZCdW5k
bGVFeGVjdXRhYmxlQXJjaGl0ZWN0dXJlUFBDNjQgICAgPSAweDAxMDAwMDEyDQp9IDsNCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZCdW5kbGVDb3B5RXhl
Y3V0YWJsZUFyY2hpdGVjdHVyZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlKSA7DQogICAgDQogICAgDQog
ICAgDQogICAgDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENG
QnVuZGxlUHJlZmxpZ2h0RXhlY3V0YWJsZShDRkJ1bmRsZVJlZiBidW5kbGUsIENGRXJyb3JSZWYg
KmVycm9yKSA7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGQnVuZGxlTG9hZEV4ZWN1dGFibGVBbmRSZXR1
cm5FcnJvcihDRkJ1bmRsZVJlZiBidW5kbGUsIENGRXJyb3JSZWYgKmVycm9yKSA7DQogICAgDQog
ICAgDQogICAgDQogICAgDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29s
ZWFuIENGQnVuZGxlTG9hZEV4ZWN1dGFibGUoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZCdW5kbGVJc0V4ZWN1dGFibGVM
b2FkZWQoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkNCnZvaWQgQ0ZCdW5kbGVVbmxvYWRFeGVjdXRhYmxlKENGQnVuZGxlUmVmIGJ1bmRsZSk7
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkICpDRkJ1bmRsZUdldEZ1
bmN0aW9uUG9pbnRlckZvck5hbWUoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBDRlN0cmluZ1JlZiBmdW5j
dGlvbk5hbWUpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0Kdm9pZCBDRkJ1
bmRsZUdldEZ1bmN0aW9uUG9pbnRlcnNGb3JOYW1lcyhDRkJ1bmRsZVJlZiBidW5kbGUsIENGQXJy
YXlSZWYgZnVuY3Rpb25OYW1lcywgdm9pZCAqZnRibFtdKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnZvaWQgKkNGQnVuZGxlR2V0RGF0YVBvaW50ZXJGb3JOYW1lKENGQnVu
ZGxlUmVmIGJ1bmRsZSwgQ0ZTdHJpbmdSZWYgc3ltYm9sTmFtZSk7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGQnVuZGxlR2V0RGF0YVBvaW50ZXJzRm9yTmFtZXMo
Q0ZCdW5kbGVSZWYgYnVuZGxlLCBDRkFycmF5UmVmIHN5bWJvbE5hbWVzLCB2b2lkICpzdGJsW10p
Ow0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZVUkxSZWYgQ0ZCdW5kbGVD
b3B5QXV4aWxpYXJ5RXhlY3V0YWJsZVVSTChDRkJ1bmRsZVJlZiBidW5kbGUsIENGU3RyaW5nUmVm
IGV4ZWN1dGFibGVOYW1lKTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCg0KDQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpDRlBsdWdJblJlZiBD
RkJ1bmRsZUdldFBsdWdJbihDRkJ1bmRsZVJlZiBidW5kbGUpOw0KDQoNCg0KDQoNCiNsaW5lIDM0
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVk
ZVxcQ29yZUZvdW5kYXRpb24vQ0ZCdW5kbGUuaCINCnR5cGVkZWYgU0ludDE2IENGQnVuZGxlUmVm
TnVtOw0KI2xpbmUgMzQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmll
c1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5oIg0KDQpleHRlcm4gIkMi
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZCdW5kbGVSZWZOdW0gQ0ZCdW5kbGVPcGVuQnVuZGxl
UmVzb3VyY2VNYXAoQ0ZCdW5kbGVSZWYgYnVuZGxlKTsNCiAgIA0KICAgDQogICANCiAgIA0KICAg
DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpTSW50MzIgQ0ZCdW5kbGVPcGVu
QnVuZGxlUmVzb3VyY2VGaWxlcyhDRkJ1bmRsZVJlZiBidW5kbGUsIENGQnVuZGxlUmVmTnVtICpy
ZWZOdW0sIENGQnVuZGxlUmVmTnVtICpsb2NhbGl6ZWRSZWZOdW0pOw0KICAgDQogICANCg0KZXh0
ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZCdW5kbGVDbG9zZUJ1bmRsZVJl
c291cmNlTWFwKENGQnVuZGxlUmVmIGJ1bmRsZSwgQ0ZCdW5kbGVSZWZOdW0gcmVmTnVtKTsNCg0K
fQ0KDQojbGluZSAzNjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmgiDQoNCiNsaW5lIDEwMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxc
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGTWVzc2FnZVBvcnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZv
dW5kYXRpb24vQ0ZTdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
OTAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRlN0cmluZy5oIg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGTWVzc2FnZVBvcnQuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2Vi
S2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIxNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZSdW5M
b29wLmgiDQoNCiNsaW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRk1lc3NhZ2VQb3J0LmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRkRhdGEuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEwNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZEYXRhLmgiDQoNCiNsaW5l
IDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9DRk1lc3NhZ2VQb3J0LmgiDQoNCg0KI2xpbmUgNDcgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGTWVzc2FnZVBvcnQuaCINCg0KZXh0ZXJuICJDIiB7DQoNCnR5cGVkZWYgc3Ry
dWN0IF9fQ0ZNZXNzYWdlUG9ydCAqIENGTWVzc2FnZVBvcnRSZWY7DQoNCmVudW0gew0KICAgIGtD
Rk1lc3NhZ2VQb3J0U3VjY2VzcyA9IDAsDQogICAga0NGTWVzc2FnZVBvcnRTZW5kVGltZW91dCA9
IC0xLA0KICAgIGtDRk1lc3NhZ2VQb3J0UmVjZWl2ZVRpbWVvdXQgPSAtMiwNCiAgICBrQ0ZNZXNz
YWdlUG9ydElzSW52YWxpZCA9IC0zLA0KICAgIGtDRk1lc3NhZ2VQb3J0VHJhbnNwb3J0RXJyb3Ig
PSAtNCwNCiAgICBrQ0ZNZXNzYWdlUG9ydEJlY2FtZUludmFsaWRFcnJvciA9IC01DQp9Ow0KDQp0
eXBlZGVmIHN0cnVjdCB7DQogICAgQ0ZJbmRleAl2ZXJzaW9uOw0KICAgIHZvaWQgKglpbmZvOw0K
ICAgIGNvbnN0IHZvaWQgKigqcmV0YWluKShjb25zdCB2b2lkICppbmZvKTsNCiAgICB2b2lkCSgq
cmVsZWFzZSkoY29uc3Qgdm9pZCAqaW5mbyk7DQogICAgQ0ZTdHJpbmdSZWYJKCpjb3B5RGVzY3Jp
cHRpb24pKGNvbnN0IHZvaWQgKmluZm8pOw0KfSBDRk1lc3NhZ2VQb3J0Q29udGV4dDsNCg0KdHlw
ZWRlZiBDRkRhdGFSZWYgKCpDRk1lc3NhZ2VQb3J0Q2FsbEJhY2spKENGTWVzc2FnZVBvcnRSZWYg
bG9jYWwsIFNJbnQzMiBtc2dpZCwgQ0ZEYXRhUmVmIGRhdGEsIHZvaWQgKmluZm8pOw0KDQp0eXBl
ZGVmIHZvaWQgKCpDRk1lc3NhZ2VQb3J0SW52YWxpZGF0aW9uQ2FsbEJhY2spKENGTWVzc2FnZVBv
cnRSZWYgbXMsIHZvaWQgKmluZm8pOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBDRlR5cGVJRAlDRk1lc3NhZ2VQb3J0R2V0VHlwZUlEKHZvaWQpOw0KDQpleHRlcm4gIkMiIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBDRk1lc3NhZ2VQb3J0UmVmCUNGTWVzc2FnZVBvcnRDcmVhdGVM
b2NhbChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3RyaW5nUmVmIG5hbWUsIENGTWVzc2Fn
ZVBvcnRDYWxsQmFjayBjYWxsb3V0LCBDRk1lc3NhZ2VQb3J0Q29udGV4dCAqY29udGV4dCwgQm9v
bGVhbiAqc2hvdWxkRnJlZUluZm8pOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Q0ZNZXNzYWdlUG9ydFJlZglDRk1lc3NhZ2VQb3J0Q3JlYXRlUmVtb3RlKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgbmFtZSk7DQoNCmV4dGVybiAiQyIgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIEJvb2xlYW4JQ0ZNZXNzYWdlUG9ydElzUmVtb3RlKENGTWVzc2FnZVBvcnRSZWYg
bXMpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ0ZTdHJpbmdSZWYJQ0ZNZXNz
YWdlUG9ydEdldE5hbWUoQ0ZNZXNzYWdlUG9ydFJlZiBtcyk7DQpleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBCb29sZWFuCUNGTWVzc2FnZVBvcnRTZXROYW1lKENGTWVzc2FnZVBvcnRS
ZWYgbXMsIENGU3RyaW5nUmVmIG5ld05hbWUpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdm9pZAkJQ0ZNZXNzYWdlUG9ydEdldENvbnRleHQoQ0ZNZXNzYWdlUG9ydFJlZiBtcywg
Q0ZNZXNzYWdlUG9ydENvbnRleHQgKmNvbnRleHQpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgdm9pZAkJQ0ZNZXNzYWdlUG9ydEludmFsaWRhdGUoQ0ZNZXNzYWdlUG9ydFJlZiBt
cyk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBCb29sZWFuCUNGTWVzc2FnZVBv
cnRJc1ZhbGlkKENGTWVzc2FnZVBvcnRSZWYgbXMpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgQ0ZNZXNzYWdlUG9ydEludmFsaWRhdGlvbkNhbGxCYWNrIENGTWVzc2FnZVBvcnRH
ZXRJbnZhbGlkYXRpb25DYWxsQmFjayhDRk1lc3NhZ2VQb3J0UmVmIG1zKTsNCmV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgQ0ZNZXNzYWdlUG9ydFNldEludmFsaWRhdGlvbkNh
bGxCYWNrKENGTWVzc2FnZVBvcnRSZWYgbXMsIENGTWVzc2FnZVBvcnRJbnZhbGlkYXRpb25DYWxs
QmFjayBjYWxsb3V0KTsNCg0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTSW50
MzIJQ0ZNZXNzYWdlUG9ydFNlbmRSZXF1ZXN0KENGTWVzc2FnZVBvcnRSZWYgcmVtb3RlLCBTSW50
MzIgbXNnaWQsIENGRGF0YVJlZiBkYXRhLCBDRlRpbWVJbnRlcnZhbCBzZW5kVGltZW91dCwgQ0ZU
aW1lSW50ZXJ2YWwgcmN2VGltZW91dCwgQ0ZTdHJpbmdSZWYgcmVwbHlNb2RlLCBDRkRhdGFSZWYg
KnJldHVybkRhdGEpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDRlJ1bkxv
b3BTb3VyY2VSZWYJQ0ZNZXNzYWdlUG9ydENyZWF0ZVJ1bkxvb3BTb3VyY2UoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBDRk1lc3NhZ2VQb3J0UmVmIGxvY2FsLCBDRkluZGV4IG9yZGVyKTsNCg0K
DQoNCiNsaW5lIDk1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRk1lc3NhZ2VQb3J0LmgiDQoNCn0NCg0KI2xp
bmUgOTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGlu
Y2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGTWVzc2FnZVBvcnQuaCINCg0KI2xpbmUgMTAyICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZQ
bHVnSW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ0ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRlBsdWdJbi5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdl
YktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA2NjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oIg0KI2xpbmUgNDYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVG
b3VuZGF0aW9uL0NGUGx1Z0luLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRkFycmF5Lmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzA2ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRkFycmF5LmgiDQoNCiNsaW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlBsdWdJ
bi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZCdW5kbGUuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzY2ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9D
RkJ1bmRsZS5oIg0KDQojbGluZSA0OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZQbHVnSW4uaCINCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDkwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNc
XHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaCINCiNsaW5lIDQ5ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRlBsdWdJbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZVUkwuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDExNzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGVVJMLmgiDQoNCiNsaW5lIDUwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3Jl
Rm91bmRhdGlvbi9DRlBsdWdJbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZVVUlELmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA2ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91
bmRhdGlvbi9DRlVVSUQuaCINCg0KI2xpbmUgNTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
V2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUGx1Z0luLmgi
DQoNCmV4dGVybiAiQyIgew0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkN
CmNvbnN0IENGU3RyaW5nUmVmIGtDRlBsdWdJbkR5bmFtaWNSZWdpc3RyYXRpb25LZXk7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGUGx1Z0lu
RHluYW1pY1JlZ2lzdGVyRnVuY3Rpb25LZXk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGUGx1Z0luVW5sb2FkRnVuY3Rpb25LZXk7DQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KY29uc3QgQ0ZTdHJpbmdSZWYga0NGUGx1Z0lu
RmFjdG9yaWVzS2V5Ow0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCmNvbnN0IENG
U3RyaW5nUmVmIGtDRlBsdWdJblR5cGVzS2V5Ow0KDQoNCg0KDQp0eXBlZGVmIHZvaWQgKCpDRlBs
dWdJbkR5bmFtaWNSZWdpc3RlckZ1bmN0aW9uKShDRlBsdWdJblJlZiBwbHVnSW4pOw0KdHlwZWRl
ZiB2b2lkICgqQ0ZQbHVnSW5VbmxvYWRGdW5jdGlvbikoQ0ZQbHVnSW5SZWYgcGx1Z0luKTsNCnR5
cGVkZWYgdm9pZCAqKCpDRlBsdWdJbkZhY3RvcnlGdW5jdGlvbikoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLCBDRlVVSURSZWYgdHlwZVVVSUQpOw0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVj
KGRsbGltcG9ydCkNCkNGVHlwZUlEIENGUGx1Z0luR2V0VHlwZUlEKHZvaWQpOw0KDQpleHRlcm4g
IkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZQbHVnSW5SZWYgQ0ZQbHVnSW5DcmVhdGUoQ0ZB
bGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlVSTFJlZiBwbHVnSW5VUkwpOw0KICAgIA0KDQpleHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZCdW5kbGVSZWYgQ0ZQbHVnSW5HZXRCdW5k
bGUoQ0ZQbHVnSW5SZWYgcGx1Z0luKTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZQbHVnSW5TZXRMb2FkT25EZW1hbmQoQ0ZQbHVnSW5SZWYg
cGx1Z0luLCBCb29sZWFuIGZsYWcpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQ0KQm9vbGVhbiBDRlBsdWdJbklzTG9hZE9uRGVtYW5kKENGUGx1Z0luUmVmIHBsdWdJbik7DQoN
Cg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZQ
bHVnSW5GaW5kRmFjdG9yaWVzRm9yUGx1Z0luVHlwZShDRlVVSURSZWYgdHlwZVVVSUQpOw0KICAg
IA0KICAgIA0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGQXJyYXlSZWYgQ0ZQ
bHVnSW5GaW5kRmFjdG9yaWVzRm9yUGx1Z0luVHlwZUluUGx1Z0luKENGVVVJRFJlZiB0eXBlVVVJ
RCwgQ0ZQbHVnSW5SZWYgcGx1Z0luKTsNCiAgICANCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRs
bGltcG9ydCkNCnZvaWQgKkNGUGx1Z0luSW5zdGFuY2VDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yLCBDRlVVSURSZWYgZmFjdG9yeVVVSUQsIENGVVVJRFJlZiB0eXBlVVVJRCk7DQogICAg
DQoNCg0KDQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZQ
bHVnSW5SZWdpc3RlckZhY3RvcnlGdW5jdGlvbihDRlVVSURSZWYgZmFjdG9yeVVVSUQsIENGUGx1
Z0luRmFjdG9yeUZ1bmN0aW9uIGZ1bmMpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQ0KQm9vbGVhbiBDRlBsdWdJblJlZ2lzdGVyRmFjdG9yeUZ1bmN0aW9uQnlOYW1lKENGVVVJ
RFJlZiBmYWN0b3J5VVVJRCwgQ0ZQbHVnSW5SZWYgcGx1Z0luLCBDRlN0cmluZ1JlZiBmdW5jdGlv
bk5hbWUpOw0KDQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQm9vbGVhbiBDRlBs
dWdJblVucmVnaXN0ZXJGYWN0b3J5KENGVVVJRFJlZiBmYWN0b3J5VVVJRCk7DQoNCmV4dGVybiAi
QyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQpCb29sZWFuIENGUGx1Z0luUmVnaXN0ZXJQbHVnSW5U
eXBlKENGVVVJRFJlZiBmYWN0b3J5VVVJRCwgQ0ZVVUlEUmVmIHR5cGVVVUlEKTsNCg0KZXh0ZXJu
ICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJvb2xlYW4gQ0ZQbHVnSW5VbnJlZ2lzdGVyUGx1
Z0luVHlwZShDRlVVSURSZWYgZmFjdG9yeVVVSUQsIENGVVVJRFJlZiB0eXBlVVVJRCk7DQoNCg0K
DQoNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCnZvaWQgQ0ZQbHVnSW5BZGRJ
bnN0YW5jZUZvckZhY3RvcnkoQ0ZVVUlEUmVmIGZhY3RvcnlJRCk7DQoNCmV4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkIENGUGx1Z0luUmVtb3ZlSW5zdGFuY2VGb3JGYWN0b3J5
KENGVVVJRFJlZiBmYWN0b3J5SUQpOw0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCBfX0NGUGx1Z0lu
SW5zdGFuY2UgKkNGUGx1Z0luSW5zdGFuY2VSZWY7DQoNCnR5cGVkZWYgQm9vbGVhbiAoKkNGUGx1
Z0luSW5zdGFuY2VHZXRJbnRlcmZhY2VGdW5jdGlvbikoQ0ZQbHVnSW5JbnN0YW5jZVJlZiBpbnN0
YW5jZSwgQ0ZTdHJpbmdSZWYgaW50ZXJmYWNlTmFtZSwgdm9pZCAqKmZ0YmwpOw0KdHlwZWRlZiB2
b2lkICgqQ0ZQbHVnSW5JbnN0YW5jZURlYWxsb2NhdGVJbnN0YW5jZURhdGFGdW5jdGlvbikodm9p
ZCAqaW5zdGFuY2VEYXRhKTsNCg0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkJv
b2xlYW4gQ0ZQbHVnSW5JbnN0YW5jZUdldEludGVyZmFjZUZ1bmN0aW9uVGFibGUoQ0ZQbHVnSW5J
bnN0YW5jZVJlZiBpbnN0YW5jZSwgQ0ZTdHJpbmdSZWYgaW50ZXJmYWNlTmFtZSwgdm9pZCAqKmZ0
YmwpOw0KZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGU3RyaW5nUmVmIENGUGx1
Z0luSW5zdGFuY2VHZXRGYWN0b3J5TmFtZShDRlBsdWdJbkluc3RhbmNlUmVmIGluc3RhbmNlKTsN
CmV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpDQp2b2lkICpDRlBsdWdJbkluc3RhbmNl
R2V0SW5zdGFuY2VEYXRhKENGUGx1Z0luSW5zdGFuY2VSZWYgaW5zdGFuY2UpOw0KZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGltcG9ydCkNCkNGVHlwZUlEIENGUGx1Z0luSW5zdGFuY2VHZXRUeXBl
SUQodm9pZCk7DQpleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQ0KQ0ZQbHVnSW5JbnN0
YW5jZVJlZiBDRlBsdWdJbkluc3RhbmNlQ3JlYXRlV2l0aEluc3RhbmNlRGF0YVNpemUoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDRkluZGV4IGluc3RhbmNlRGF0YVNpemUsIENGUGx1Z0luSW5z
dGFuY2VEZWFsbG9jYXRlSW5zdGFuY2VEYXRhRnVuY3Rpb24gZGVhbGxvY2F0ZUluc3RhbmNlRnVu
Y3Rpb24sIENGU3RyaW5nUmVmIGZhY3RvcnlOYW1lLCBDRlBsdWdJbkluc3RhbmNlR2V0SW50ZXJm
YWNlRnVuY3Rpb24gZ2V0SW50ZXJmYWNlRnVuY3Rpb24pOw0KDQp9DQoNCg0KDQojbGluZSAxNjcg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVc
XENvcmVGb3VuZGF0aW9uL0NGUGx1Z0luLmgiDQoNCiNsaW5lIDE2OSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24v
Q0ZQbHVnSW4uaCINCg0KI2xpbmUgMTAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
Ig0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdp
blxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMjE0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJh
cmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaCINCg0KI2xpbmUg
MTA0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNs
dWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5k
YXRpb24vQ0ZTdHJlYW0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI5NiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5k
YXRpb24vQ0ZTdHJlYW0uaCINCiNsaW5lIDEwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGU29ja2V0LmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxX
ZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZTb2NrZXQuaCIN
Cg0KI2xpbmUgMTA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xc
d2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KDQoNCg0KI2xp
bmUgMTEwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxp
bmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KDQoNCg0KDQojbGluZSAx
MTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1
ZGVcXENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmgiDQoNCg0KDQoNCg0KI2xpbmUgMTIx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRl
XFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFdlYktpdExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRh
dGlvbi9DRldpbmRvd3NNZXNzYWdlUXVldWUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVzXFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9u
L0NGV2luZG93c01lc3NhZ2VRdWV1ZS5oIg0KDQojbGluZSA2MiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZX
aW5kb3dzTWVzc2FnZVF1ZXVlLmgiDQoNCiNsaW5lIDEyMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaCINCg0KI2xpbmUgMTI1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFdlYktp
dExpYnJhcmllc1xcd2luXFxpbmNsdWRlXFxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
Ig0KDQojbGluZSAxMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmgiDQoNCiNsaW5l
IDEyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRMaWJyYXJpZXNcXHdpblxcaW5j
bHVkZVxcQ29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaCINCg0KI2xpbmUgMzMgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JldGFp
blB0ci5oIg0KI2xpbmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1JldGFpblB0ci5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
UmV0YWluUHRyLmgiDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZXRhaW5QdHIuaCINCg0KDQp0
eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7DQojbGluZSA1NCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUmV0YWluUHRyLmgiDQoN
Cm5hbWVzcGFjZSBXVEYgew0KDQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZXRh
aW5QdHI7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFJldGFpblB0cjxUPiBhZG9wdENGKFQgKSA7
DQoNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJldGFpblB0ciB7DQpwdWJsaWM6
DQogICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlIFZhbHVl
VHlwZTsNCiAgICB0eXBlZGVmIFZhbHVlVHlwZSogUHRyVHlwZTsNCiAgICB0eXBlZGVmIENGVHlw
ZVJlZiBTdG9yYWdlVHlwZTsNCg0KDQoNCg0KICAgIHR5cGVkZWYgVCBIZWxwZXJQdHJUeXBlOw0K
I2xpbmUgNzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1JldGFpblB0ci5oIg0KDQogICAgUmV0YWluUHRyKCkgOiBtX3B0cihudWxscHRy
KSB7IH0NCiAgICBSZXRhaW5QdHIoUHRyVHlwZSBwdHIpIDogbV9wdHIodG9TdG9yYWdlVHlwZShw
dHIpKSB7IGlmIChtX3B0cikgQ0ZSZXRhaW4obV9wdHIpOyB9DQoNCiAgICBSZXRhaW5QdHIoY29u
c3QgUmV0YWluUHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgaWYgKFN0b3JhZ2VUeXBlIHB0ciA9
IG1fcHRyKSBDRlJldGFpbihwdHIpOyB9DQoNCiAgICBSZXRhaW5QdHIoUmV0YWluUHRyJiYgbykg
OiBtX3B0cih0b1N0b3JhZ2VUeXBlKG8ubGVha1JlZigpKSkgeyB9DQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gUmV0YWluUHRyKFJldGFpblB0cjxVPiYmIG8pIDogbV9wdHIodG9TdG9yYWdlVHlw
ZShvLmxlYWtSZWYoKSkpIHsgfQ0KDQogICAgDQogICAgUmV0YWluUHRyKEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpIDogbV9wdHIoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQ0KICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBoYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQ0KICAgIA0KICAgIH5SZXRhaW5QdHIoKTsNCiAgICANCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZXRhaW5QdHIoY29uc3QgUmV0YWluUHRyPFU+Jik7DQoN
CiAgICB2b2lkIGNsZWFyKCk7DQogICAgUHRyVHlwZSBsZWFrUmVmKCkgOw0KICAgIFB0clR5cGUg
YXV0b3JlbGVhc2UoKTsNCg0KDQoNCg0KICAgIFB0clR5cGUgZ2V0KCkgY29uc3QgeyByZXR1cm4g
ZnJvbVN0b3JhZ2VUeXBlKG1fcHRyKTsgfQ0KICAgIFB0clR5cGUgb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIGZyb21TdG9yYWdlVHlwZShtX3B0cik7IH0NCiAgICBleHBsaWNpdCBvcGVyYXRv
ciBQdHJUeXBlKCkgY29uc3QgeyByZXR1cm4gZnJvbVN0b3JhZ2VUeXBlKG1fcHRyKTsgfQ0KICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQ0KDQogICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0NCg0KICAgIA0KICAgIHR5
cGVkZWYgU3RvcmFnZVR5cGUgUmV0YWluUHRyOjoqVW5zcGVjaWZpZWRCb29sVHlwZTsNCiAgICBv
cGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUmV0
YWluUHRyOjptX3B0ciA6IG51bGxwdHI7IH0NCiAgICANCiAgICBSZXRhaW5QdHImIG9wZXJhdG9y
PShjb25zdCBSZXRhaW5QdHImKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZXRhaW5QdHIm
IG9wZXJhdG9yPShjb25zdCBSZXRhaW5QdHI8VT4mKTsNCiAgICBSZXRhaW5QdHImIG9wZXJhdG9y
PShQdHJUeXBlKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZXRhaW5QdHImIG9wZXJhdG9y
PShVKik7DQoNCiAgICBSZXRhaW5QdHImIG9wZXJhdG9yPShSZXRhaW5QdHImJik7DQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gUmV0YWluUHRyJiBvcGVyYXRvcj0oUmV0YWluUHRyPFU+JiYpOw0K
DQogICAgdm9pZCBzd2FwKFJldGFpblB0ciYpOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
ZnJpZW5kIFJldGFpblB0cjxVPiBhZG9wdENGKFUgKSA7DQoNCg0KDQoNCnByaXZhdGU6DQogICAg
ZW51bSBBZG9wdFRhZyB7IEFkb3B0IH07DQogICAgUmV0YWluUHRyKFB0clR5cGUgcHRyLCBBZG9w
dFRhZykgOiBtX3B0cih0b1N0b3JhZ2VUeXBlKHB0cikpIHsgfQ0KDQogICAgc3RhdGljIFB0clR5
cGUgaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdHJU
eXBlPigtMSk7IH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAg
UHRyVHlwZSBmcm9tU3RvcmFnZVR5cGUoU3RvcmFnZVR5cGUgcHRyKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIChQdHJUeXBlKWNvbnN0X2Nhc3Q8IHZvaWQqPihwdHIpOw0KICAgIH0NCiAg
ICBTdG9yYWdlVHlwZSB0b1N0b3JhZ2VUeXBlKFB0clR5cGUgcHRyKSBjb25zdCB7IHJldHVybiAo
U3RvcmFnZVR5cGUpcHRyOyB9DQojbGluZSAxNTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1JldGFpblB0ci5oIg0KDQoNCg0KDQoNCg0K
ICAgIFN0b3JhZ2VUeXBlIG1fcHRyOw0KfTsNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZXRh
aW5QdHI8dHlwZW5hbWUgUmV0YWluUHRyPFQ+OjpIZWxwZXJQdHJUeXBlPiByZXRhaW5QdHIoVCkg
Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmV0YWluUHRyPFQ+Ojp+UmV0YWluUHRy
KCkNCnsNCiAgICBpZiAoU3RvcmFnZVR5cGUgcHRyID0gc3RkOjpleGNoYW5nZShtX3B0ciwgbnVs
bHB0cikpDQogICAgICAgIENGUmVsZWFzZShwdHIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmV0YWluUHRyPFQ+OjpSZXRhaW5QdHIoY29u
c3QgUmV0YWluUHRyPFU+JiBvKQ0KICAgIDogbV9wdHIodG9TdG9yYWdlVHlwZShvLmdldCgpKSkN
CnsNCiAgICBpZiAoU3RvcmFnZVR5cGUgcHRyID0gbV9wdHIpDQogICAgICAgIENGUmV0YWluKHB0
cik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIFJldGFpblB0cjxUPjo6
Y2xlYXIoKQ0Kew0KICAgIGlmIChTdG9yYWdlVHlwZSBwdHIgPSBzdGQ6OmV4Y2hhbmdlKG1fcHRy
LCBudWxscHRyKSkNCiAgICAgICAgQ0ZSZWxlYXNlKHB0cik7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBhdXRvIFJldGFpblB0cjxUPjo6bGVha1JlZigpIC0+IFB0clR5cGUNCnsN
CiAgICByZXR1cm4gZnJvbVN0b3JhZ2VUeXBlKHN0ZDo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIp
KTsNCn0NCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBhdXRvIFJldGFpblB0cjxU
Pjo6YXV0b3JlbGVhc2UoKSAtPiBQdHJUeXBlDQp7DQogICAgaWYgKG1fcHRyKQ0KICAgICAgICBD
RkF1dG9yZWxlYXNlKG1fcHRyKTsNCiAgICByZXR1cm4gbGVha1JlZigpOw0KfQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjMxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9S
ZXRhaW5QdHIuaCINCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJldGFpblB0cjxUPiYg
UmV0YWluUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgUmV0YWluUHRyJiBvKQ0Kew0KICAgIFJldGFp
blB0ciBwdHIgPSBvOw0KICAgIHN3YXAocHRyKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZXRhaW5QdHI8
VD4mIFJldGFpblB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFJldGFpblB0cjxVPiYgbykNCnsNCiAg
ICBSZXRhaW5QdHIgcHRyID0gbzsNCiAgICBzd2FwKHB0cik7DQogICAgcmV0dXJuICp0aGlzOw0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmV0YWluUHRyPFQ+JiBSZXRhaW5QdHI8
VD46Om9wZXJhdG9yPShQdHJUeXBlIG9wdHIpDQp7DQogICAgUmV0YWluUHRyIHB0ciA9IG9wdHI7
DQogICAgc3dhcChwdHIpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJldGFpblB0cjxUPiYgUmV0YWluUHRy
PFQ+OjpvcGVyYXRvcj0oVSogb3B0cikNCnsNCiAgICBSZXRhaW5QdHIgcHRyID0gb3B0cjsNCiAg
ICBzd2FwKHB0cik7DQogICAgcmV0dXJuICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgUmV0YWluUHRyPFQ+JiBSZXRhaW5QdHI8VD46Om9wZXJhdG9yPShSZXRhaW5QdHIm
JiBvKQ0Kew0KICAgIFJldGFpblB0ciBwdHIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KG8pOw0KICAgIHN3YXAocHRyKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZXRhaW5QdHI8VD4m
IFJldGFpblB0cjxUPjo6b3BlcmF0b3I9KFJldGFpblB0cjxVPiYmIG8pDQp7DQogICAgUmV0YWlu
UHRyIHB0ciA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obyk7DQogICAgc3dh
cChwdHIpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIHZvaWQgUmV0YWluUHRyPFQ+Ojpzd2FwKFJldGFpblB0ciYgbykNCnsNCiAgICBzdGQ6OnN3
YXAobV9wdHIsIG8ubV9wdHIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9p
ZCBzd2FwKFJldGFpblB0cjxUPiYgYSwgUmV0YWluUHRyPFQ+JiBiKQ0Kew0KICAgIGEuc3dhcChi
KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZXRhaW5QdHI8VD4mIGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikNCnsg
DQogICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsgDQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmV0YWluUHRyPFQ+
JiBhLCBVKiBiKQ0Kew0KICAgIHJldHVybiBhLmdldCgpID09IGI7IA0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0
IFJldGFpblB0cjxVPiYgYikgDQp7DQogICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgDQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmV0YWluUHRyPFQ+JiBhLCBjb25zdCBSZXRhaW5QdHI8VT4mIGIpDQp7IA0KICAgIHJldHVy
biBhLmdldCgpICE9IGIuZ2V0KCk7IA0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJldGFpblB0cjxUPiYgYSwgVSogYikN
CnsNCiAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZXRhaW5QdHI8
VT4mIGIpDQp7IA0KICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IA0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgUmV0YWluUHRyPFQ+IGFkb3B0Q0YoVCAgcHRyKQ0Kew0KDQoNCg0KICAg
IHJldHVybiBSZXRhaW5QdHI8VD4ocHRyLCBSZXRhaW5QdHI8VD46OkFkb3B0KTsNCn0NCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJl
dGFpblB0cjx0eXBlbmFtZSBSZXRhaW5QdHI8VD46OkhlbHBlclB0clR5cGU+IHJldGFpblB0cihU
IHB0cikNCnsNCiAgICByZXR1cm4gcHRyOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IElzU21hcnRQdHI8UmV0YWluUHRyPFQ+PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHZhbHVlID0gdHJ1ZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJh
aXRzPFJldGFpblB0cjxQPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8UmV0YWluUHRyPFA+PiB7
DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmV0YWluUHRy
PFA+PiA6IFB0ckhhc2g8UmV0YWluUHRyPFA+PiB7IH07DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBQ
Pg0Kc3RydWN0IFJldGFpblB0ck9iamVjdEhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8UmV0YWluUHRyPFA+PiB7DQogICAgc3RhdGljIGNvbnN0IFJldGFpblB0cjxQPiYgZW1wdHlW
YWx1ZSgpDQogICAgew0KICAgICAgICBzdGF0aWMgUmV0YWluUHRyPFA+JiBudWxsID0gKihuZXcg
UmV0YWluUHRyPFA+KTsNCiAgICAgICAgcmV0dXJuIG51bGw7DQogICAgfQ0KfTsNCg0KdGVtcGxh
dGUgPHR5cGVuYW1lIFA+DQpzdHJ1Y3QgUmV0YWluUHRyT2JqZWN0SGFzaCB7DQogICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgUmV0YWluUHRyPFA+JiBvKQ0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENGSGFzaChvLmdl
dCgpKSk7DQogICAgfQ0KICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJldGFpblB0cjxQPiYg
YSwgY29uc3QgUmV0YWluUHRyPFA+JiBiKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIENGRXF1YWwo
YS5nZXQoKSwgYi5nZXQoKSk7DQogICAgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOw0KfTsNCg0KaW5saW5lIGJvb2wgc2Fm
ZUNGRXF1YWwoQ0ZUeXBlUmVmIGEsIENGVHlwZVJlZiBiKQ0Kew0KICAgIHJldHVybiAoIWEgJiYg
IWIpIHx8IChhICYmIGIgJiYgQ0ZFcXVhbChhLCBiKSk7DQp9DQoNCmlubGluZSBDRkhhc2hDb2Rl
IHNhZmVDRkhhc2goQ0ZUeXBlUmVmIGEpDQp7DQogICAgcmV0dXJuIGEgPyBDRkhhc2goYSkgOiAw
Ow0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCn0gDQoNCnVzaW5nIFdURjo6UmV0YWluUHRyOw0K
dXNpbmcgV1RGOjphZG9wdENGOw0KdXNpbmcgV1RGOjpyZXRhaW5QdHI7DQoNCg0KDQoNCg0KDQoj
bGluZSA0MDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1JldGFpblB0ci5oIg0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nVmlldy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdWaWV3LmgiDQoNCm5h
bWVzcGFjZSBXVEYgew0KDQoNCg0KY2xhc3MgU3RyaW5nVmlldyBmaW5hbCB7DQogICAgcHVibGlj
OiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxv
Y2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RN
YWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29s
b25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBTdHJpbmdWaWV3KCk7DQoNCg0K
DQoNCg0KDQojbGluZSA2MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdWaWV3LmgiDQoNCiAgICBTdHJpbmdWaWV3KGNv
bnN0IEF0b21TdHJpbmcmKTsNCiAgICBTdHJpbmdWaWV3KGNvbnN0IFN0cmluZyYpOw0KICAgIFN0
cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCYpOw0KICAgIFN0cmluZ1ZpZXcoY29uc3QgU3RyaW5n
SW1wbCopOw0KICAgIFN0cmluZ1ZpZXcoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0K
ICAgIFN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIFN0cmlu
Z1ZpZXcoY29uc3QgY2hhciopOw0KICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7DQogICAgZXhwbGljaXQgU3RyaW5nVmlldyhBU0NJSUxpdGVyYWwpOw0KDQogICAg
c3RhdGljIFN0cmluZ1ZpZXcgZW1wdHkoKTsNCg0KICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
Ow0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ow0KDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0Ow0KICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7DQoNCiAgICBVQ2hhciBvcGVyYXRv
cltdKHVuc2lnbmVkIGluZGV4KSBjb25zdDsNCg0KICAgIGNsYXNzIENvZGVVbml0czsNCiAgICBD
b2RlVW5pdHMgY29kZVVuaXRzKCkgY29uc3Q7DQoNCiAgICBjbGFzcyBDb2RlUG9pbnRzOw0KICAg
IENvZGVQb2ludHMgY29kZVBvaW50cygpIGNvbnN0Ow0KDQogICAgY2xhc3MgR3JhcGhlbWVDbHVz
dGVyczsNCiAgICBHcmFwaGVtZUNsdXN0ZXJzIGdyYXBoZW1lQ2x1c3RlcnMoKSBjb25zdDsNCg0K
ICAgIGJvb2wgaXM4Qml0KCkgY29uc3Q7DQogICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkg
Y29uc3Q7DQogICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0Ow0KDQogICAgYm9v
bCBpc0FsbEFTQ0lJKCkgY29uc3Q7DQoNCiAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsNCiAg
ICBTdHJpbmcgdG9TdHJpbmdXaXRob3V0Q29weWluZygpIGNvbnN0Ow0KICAgIEF0b21TdHJpbmcg
dG9BdG9tU3RyaW5nKCkgY29uc3Q7DQogICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiB0b0V4aXN0
aW5nQXRvbVN0cmluZygpIGNvbnN0Ow0KDQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVDRlN0cmluZygpIGNvbnN0Ow0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5n
V2l0aG91dENvcHlpbmcoKSBjb25zdDsNCiNsaW5lIDEwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdWaWV3LmgiDQoN
Cg0KDQoNCg0KDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRXhwZWN0ZWQ8Q1N0cmluZywg
VVRGOENvbnZlcnNpb25FcnJvcj4gdHJ5R2V0VXRmOChDb252ZXJzaW9uTW9kZSA9IExlbmllbnRD
b252ZXJzaW9uKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ1N0cmluZyB1dGY4
KENvbnZlcnNpb25Nb2RlID0gTGVuaWVudENvbnZlcnNpb24pIGNvbnN0Ow0KDQogICAgY2xhc3Mg
VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOw0KICAgIFVwY29udmVydGVkQ2hhcmFjdGVycyB1cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSBjb25zdDsNCg0KICAgIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNv
bnZlcnQoTENoYXIqKSBjb25zdDsNCiAgICB2b2lkIGdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KFVDaGFyKikgY29uc3Q7DQoNCiAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlwZSB7IFVwcGVy
LCBMb3dlciB9Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGdldENoYXJhY3RlcnNX
aXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSwgTENoYXIqKSBjb25zdDsNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNlQ29udmVy
dFR5cGUsIFVDaGFyKikgY29uc3Q7DQoNCiAgICBTdHJpbmdWaWV3IHN1YnN0cmluZyh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKSBjb25zdDsNCiAgICBTdHJpbmdWaWV3IGxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25z
dCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuZ3RoKTsgfQ0KICAgIFN0cmluZ1ZpZXcgcmlnaHQo
dW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcodGhpcy0+bGVuZ3RoKCkg
LSBsZW5ndGgsIGxlbmd0aCk7IH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hdGNoZWRDaGFy
YWN0ZXJQcmVkaWNhdGU+DQogICAgU3RyaW5nVmlldyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ01h
dGNoZWRDaGFyYWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsNCg0KICAg
IGNsYXNzIFNwbGl0UmVzdWx0Ow0KICAgIFNwbGl0UmVzdWx0IHNwbGl0KFVDaGFyKSBjb25zdDsN
CiAgICBTcGxpdFJlc3VsdCBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyKSBjb25zdDsN
Cg0KICAgIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Ow0KICAg
IHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBj
b25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IGZpbmQoU3RyaW5nVmlldywg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsNCg0KICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hh
ciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
IGNvbnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHNpemVfdCBmaW5kSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNp
Z25lZCBzdGFydE9mZnNldCkgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3Ry
aW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIFN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0Ow0KDQogICAgYm9v
bCBjb250YWlucyhVQ2hhcikgY29uc3Q7DQogICAgYm9vbCBjb250YWlucyhDb2RlVW5pdE1hdGNo
RnVuY3Rpb24pIGNvbnN0Ow0KICAgIGJvb2wgY29udGFpbnMoU3RyaW5nVmlldyBzdHJpbmcpIGNv
bnN0IHsgcmV0dXJuIGZpbmQoc3RyaW5nLCAwKSAhPSBub3RGb3VuZDsgfQ0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsNCg0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nVmlldyYpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGNvbnRh
aW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KSBjb25zdDsNCg0KICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFy
KT4gYm9vbCBpc0FsbFNwZWNpYWxDaGFyYWN0ZXJzKCkgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgYm9vbCBzdGFydHNXaXRoKFVDaGFyKSBjb25zdDsNCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsNCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nVmlldyYpIGNvbnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJv
b2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29s
IGVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBj
b25zdDsNCg0KICAgIGludCB0b0ludCgpIGNvbnN0Ow0KICAgIGludCB0b0ludChib29sJiBpc1Zh
bGlkKSBjb25zdDsNCiAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29uc3Q7DQog
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHRvVUludDY0U3RyaWN0KCkgY29uc3Q7DQogICAgZmxvYXQg
dG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdDsNCg0KICAgIHN0YXRpYyB2b2lkIGludmFsaWRh
dGUoY29uc3QgU3RyaW5nSW1wbCYpOw0KDQogICAgc3RydWN0IFVuZGVybHlpbmdTdHJpbmc7DQoN
CnByaXZhdGU6DQogICAgZnJpZW5kIGJvb2wgZXF1YWwoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7
DQogICAgZnJpZW5kIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGVxdWFsUmVzcGVjdGluZ051
bGxpdHkoU3RyaW5nVmlldywgU3RyaW5nVmlldyk7DQoNCiAgICB2b2lkIGluaXRpYWxpemUoY29u
c3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPg0KICAgIFN0cmluZ1Zp
ZXcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBDaGFyYWN0
ZXJUeXBlKiwgY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOw0KDQoNCg0KDQoNCg0K
I2xpbmUgMTk2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaCINCiAgICBib29sIHVuZGVybHlpbmdTdHJpbmdJ
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0KICAgIHZvaWQgc2V0VW5kZXJseWluZ1N0
cmluZyhjb25zdCBTdHJpbmdJbXBsKikgeyB9DQogICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5n
KGNvbnN0IFN0cmluZ1ZpZXcmKSB7IH0NCiNsaW5lIDIwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdWaWV3LmgiDQoN
CiAgICB2b2lkIGNsZWFyKCk7DQoNCiAgICBjb25zdCB2b2lkKiBtX2NoYXJhY3RlcnMgeyBudWxs
cHRyIH07DQogICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07DQogICAgYm9vbCBtX2lzOEJpdCB7
IHRydWUgfTsNCg0KDQoNCiNsaW5lIDIxMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdWaWV3LmgiDQp9Ow0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHZvaWQg
YXBwZW5kKFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eT4mLCBTdHJpbmdWaWV3
KTsNCg0KYm9vbCBlcXVhbChTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsNCmJvb2wgZXF1YWwoU3Ry
aW5nVmlldywgY29uc3QgTENoYXIqIGIpOw0KDQpib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
U3RyaW5nVmlldywgU3RyaW5nVmlldyk7DQpib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldywgY29uc3QgY2hhciopOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBlcXVh
bFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOw0KYm9vbCBlcXVhbEln
bm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KTsNCg0KdGVtcGxhdGU8dW5zaWdu
ZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcs
IGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsNCnRlbXBsYXRlPHVuc2ln
bmVkIGxlbmd0aD4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsNCg0KaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gZXF1
YWwoYSwgYik7IH0NCmlubGluZSBib29sIG9wZXJhdG9yPT0oU3RyaW5nVmlldyBhLCBjb25zdCBM
Q2hhciAqYik7DQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KFN0cmluZ1ZpZXcgYSwgY29uc3QgY2hh
ciAqYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIp
KTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBTdHJpbmdWaWV3IGIp
IHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9DQoNCmlubGluZSBib29sIG9wZXJhdG9yIT0oU3RyaW5n
VmlldyBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuICFlcXVhbChhLCBiKTsgfQ0KaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShTdHJpbmdWaWV3IGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiAhZXF1
YWwoYSwgYik7IH0NCmlubGluZSBib29sIG9wZXJhdG9yIT0oU3RyaW5nVmlldyBhLCBjb25zdCBj
aGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYSwgYik7IH0NCmlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTENoYXIqYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiAhZXF1YWwoYiwgYSk7IH0NCmlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciphLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJu
ICFlcXVhbChiLCBhKTsgfQ0KDQpzdHJ1Y3QgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5n
Ow0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmdWaWV3V2l0aFVuZGVybHlp
bmdTdHJpbmcgbm9ybWFsaXplZE5GQyhTdHJpbmdWaWV3KTsNCg0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIFN0cmluZyBub3JtYWxpemVkTkZDKGNvbnN0IFN0cmluZyYpOw0KDQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgT3B0aW9uYWw8dWludDE2X3Q+IHBhcnNlVUludDE2KFN0cmluZ1ZpZXcpOw0KDQp9
DQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpzdHJ1Y3QgU3RyaW5nVmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nIHsNCiAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0
TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51
bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVz
aW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFT
ZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICBTdHJpbmdWaWV3IHZpZXc7DQogICAg
U3RyaW5nIHVuZGVybHlpbmdTdHJpbmc7DQp9Ow0KDQppbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5n
VmlldygpDQp7DQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nVmlldy5oIg0KDQppbmxp
bmUgdm9pZCBTdHJpbmdWaWV3Ojppbml0aWFsaXplKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpDQp7DQogICAgbV9jaGFyYWN0ZXJzID0gY2hhcmFjdGVyczsNCiAgICBt
X2xlbmd0aCA9IGxlbmd0aDsNCiAgICBtX2lzOEJpdCA9IHRydWU7DQp9DQoNCmlubGluZSB2b2lk
IFN0cmluZ1ZpZXc6OmluaXRpYWxpemUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkNCnsNCiAgICBtX2NoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzOw0KICAgIG1fbGVuZ3Ro
ID0gbGVuZ3RoOw0KICAgIG1faXM4Qml0ID0gZmFsc2U7DQp9DQoNCmlubGluZSBTdHJpbmdWaWV3
OjpTdHJpbmdWaWV3KGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpDQp7
DQogICAgaW5pdGlhbGl6ZShjaGFyYWN0ZXJzLCBsZW5ndGgpOw0KfQ0KDQppbmxpbmUgU3RyaW5n
Vmlldzo6U3RyaW5nVmlldyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQ0Kew0KICAgIGluaXRpYWxpemUoY2hhcmFjdGVycywgbGVuZ3RoKTsNCn0NCg0KaW5saW5lIFN0
cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVycykNCnsNCiAgICBpbml0
aWFsaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgc3RybGVu
KGNoYXJhY3RlcnMpKTsNCn0NCg0KaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3Qg
Y2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQ0Kew0KICAgIGluaXRpYWxpemUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOw0KfQ0KDQpp
bmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhBU0NJSUxpdGVyYWwgc3RyaW5nKQ0Kew0KICAg
IGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7DQp9DQoN
CmlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykN
CnsNCiAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKCZzdHJpbmcpOw0KICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpDQogICAgICAgIGluaXRpYWxpemUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSk7DQogICAgZWxzZQ0KICAgICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsNCn0NCg0KaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1Zp
ZXcoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKQ0Kew0KICAgIGlmICghc3RyaW5nKQ0KICAgICAg
ICByZXR1cm47DQoNCiAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKHN0cmluZyk7DQogICAgaWYgKHN0
cmluZy0+aXM4Qml0KCkpDQogICAgICAgIGluaXRpYWxpemUoc3RyaW5nLT5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmctPmxlbmd0aCgpKTsNCiAgICBlbHNlDQogICAgICAgIGluaXRpYWxpemUoc3RyaW5n
LT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLT5sZW5ndGgoKSk7DQp9DQoNCmlubGluZSBTdHJpbmdW
aWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZyYgc3RyaW5nKQ0Kew0KICAgIHNldFVuZGVybHlp
bmdTdHJpbmcoc3RyaW5nLmltcGwoKSk7DQogICAgaWYgKCFzdHJpbmcuaW1wbCgpKSB7DQogICAg
ICAgIGNsZWFyKCk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgaWYgKHN0cmluZy5pczhC
aXQoKSkgew0KICAgICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcu
bGVuZ3RoKCkpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIGluaXRpYWxpemUoc3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOw0KfQ0KDQppbmxpbmUgU3RyaW5nVmll
dzo6U3RyaW5nVmlldyhjb25zdCBBdG9tU3RyaW5nJiBhdG9tU3RyaW5nKQ0KICAgIDogU3RyaW5n
VmlldyhhdG9tU3RyaW5nLnN0cmluZygpKQ0Kew0KfQ0KDQppbmxpbmUgdm9pZCBTdHJpbmdWaWV3
OjpjbGVhcigpDQp7DQogICAgbV9jaGFyYWN0ZXJzID0gbnVsbHB0cjsNCiAgICBtX2xlbmd0aCA9
IDA7DQogICAgbV9pczhCaXQgPSB0cnVlOw0KfQ0KDQppbmxpbmUgU3RyaW5nVmlldyBTdHJpbmdW
aWV3OjplbXB0eSgpDQp7DQogICAgcmV0dXJuIFN0cmluZ1ZpZXcoIiIsIDApOw0KfQ0KDQppbmxp
bmUgY29uc3QgTENoYXIqIFN0cmluZ1ZpZXc6OmNoYXJhY3RlcnM4KCkgY29uc3QNCnsNCiAgICAo
KHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBM
Q2hhcio+KG1fY2hhcmFjdGVycyk7DQp9DQoNCmlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nVmll
dzo6Y2hhcmFjdGVyczE2KCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTAp
Ow0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fY2hhcmFjdGVycyk7DQp9
DQoNCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OmlzQWxsQVNDSUkoKSBjb25zdA0Kew0KICAgIGlm
IChpczhCaXQoKSkNCiAgICAgICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0
ZXJzOCgpLCBsZW5ndGgoKSk7DQogICAgcmV0dXJuIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFy
YWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOw0KfQ0KDQpjbGFzcyBTdHJpbmdWaWV3OjpVcGNvbnZlcnRl
ZENoYXJhY3RlcnMgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9p
ZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHAp
IHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7
IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVb
XSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2Nh
dGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9f
dGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6
DQogICAgZXhwbGljaXQgVXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmKTsN
CiAgICBvcGVyYXRvciBjb25zdCBVQ2hhciooKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7
IH0NCiAgICBjb25zdCBVQ2hhciogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9
DQpwcml2YXRlOg0KICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fdXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
Ow0KICAgIGNvbnN0IFVDaGFyKiBtX2NoYXJhY3RlcnM7DQp9Ow0KDQppbmxpbmUgU3RyaW5nVmll
dzo6VXBjb252ZXJ0ZWRDaGFyYWN0ZXJzIFN0cmluZ1ZpZXc6OnVwY29udmVydGVkQ2hhcmFjdGVy
cygpIGNvbnN0DQp7DQogICAgcmV0dXJuIFVwY29udmVydGVkQ2hhcmFjdGVycygqdGhpcyk7DQp9
DQoNCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OmlzTnVsbCgpIGNvbnN0DQp7DQogICAgcmV0dXJu
ICFtX2NoYXJhY3RlcnM7DQp9DQoNCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OmlzRW1wdHkoKSBj
b25zdA0Kew0KICAgIHJldHVybiAhbGVuZ3RoKCk7DQp9DQoNCmlubGluZSB1bnNpZ25lZCBTdHJp
bmdWaWV3OjpsZW5ndGgoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2xlbmd0aDsNCn0NCg0KaW5s
aW5lIFN0cmluZ1ZpZXc6Om9wZXJhdG9yIGJvb2woKSBjb25zdA0Kew0KICAgIHJldHVybiAhaXNO
dWxsKCk7DQp9DQoNCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OmlzOEJpdCgpIGNvbnN0DQp7DQog
ICAgcmV0dXJuIG1faXM4Qml0Ow0KfQ0KDQppbmxpbmUgU3RyaW5nVmlldyBTdHJpbmdWaWV3Ojpz
dWJzdHJpbmcodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QNCnsNCiAgICBp
ZiAoc3RhcnQgPj0gdGhpcy0+bGVuZ3RoKCkpDQogICAgICAgIHJldHVybiBlbXB0eSgpOw0KICAg
IHVuc2lnbmVkIG1heExlbmd0aCA9IHRoaXMtPmxlbmd0aCgpIC0gc3RhcnQ7DQoNCiAgICBpZiAo
bGVuZ3RoID49IG1heExlbmd0aCkgew0KICAgICAgICBpZiAoIXN0YXJ0KQ0KICAgICAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgICAgICBsZW5ndGggPSBtYXhMZW5ndGg7DQogICAgfQ0KDQogICAg
aWYgKGlzOEJpdCgpKSB7DQogICAgICAgIFN0cmluZ1ZpZXcgcmVzdWx0KGNoYXJhY3RlcnM4KCkg
KyBzdGFydCwgbGVuZ3RoKTsNCiAgICAgICAgcmVzdWx0LnNldFVuZGVybHlpbmdTdHJpbmcoKnRo
aXMpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICBTdHJpbmdWaWV3IHJlc3Vs
dChjaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBsZW5ndGgpOw0KICAgIHJlc3VsdC5zZXRVbmRlcmx5
aW5nU3RyaW5nKCp0aGlzKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQppbmxpbmUgVUNoYXIg
U3RyaW5nVmlldzo6b3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QNCnsNCiAgICAoKHZv
aWQpMCk7DQogICAgaWYgKGlzOEJpdCgpKQ0KICAgICAgICByZXR1cm4gY2hhcmFjdGVyczgoKVtp
bmRleF07DQogICAgcmV0dXJuIGNoYXJhY3RlcnMxNigpW2luZGV4XTsNCn0NCg0KaW5saW5lIGJv
b2wgU3RyaW5nVmlldzo6Y29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdA0Kew0KICAgIHJl
dHVybiBmaW5kKGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7DQp9DQoNCmlubGluZSBib29sIFN0cmlu
Z1ZpZXc6OmNvbnRhaW5zKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBmdW5jdGlvbikgY29uc3QNCnsN
CiAgICByZXR1cm4gZmluZChmdW5jdGlvbikgIT0gbm90Rm91bmQ7DQp9DQoNCnRlbXBsYXRlPGJv
b2wgaXNTcGVjaWFsQ2hhcmFjdGVyKFVDaGFyKT4gaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6aXNB
bGxTcGVjaWFsQ2hhcmFjdGVycygpIGNvbnN0DQp7DQogICAgaWYgKGlzOEJpdCgpKQ0KICAgICAg
ICByZXR1cm4gV1RGOjppc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzU3BlY2lhbENoYXJhY3Rlcj4o
Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKCkpOw0KICAgIHJldHVybiBXVEY6OmlzQWxsU3BlY2lhbENo
YXJhY3RlcnM8aXNTcGVjaWFsQ2hhcmFjdGVyPihjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOw0K
fQ0KDQppbmxpbmUgdm9pZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChM
Q2hhciogZGVzdGluYXRpb24pIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0KICAgIFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7
DQp9DQoNCmlubGluZSB2b2lkIFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KFVDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QNCnsNCiAgICBpZiAoaXM4Qml0KCkpIHsNCiAgICAg
ICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCks
IG1fbGVuZ3RoKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICBTdHJpbmdJbXBsOjpjb3B5
Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoKTsNCn0NCg0K
aW5saW5lIFN0cmluZ1ZpZXc6OlVwY29udmVydGVkQ2hhcmFjdGVyczo6VXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykNCnsNCiAgICBpZiAoIXN0cmluZy5pczhC
aXQoKSkgew0KICAgICAgICBtX2NoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7DQog
ICAgICAgIHJldHVybjsNCiAgICB9DQogICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gc3Ry
aW5nLmNoYXJhY3RlcnM4KCk7DQogICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLm1fbGVuZ3Ro
Ow0KICAgIG1fdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVu
Z3RoKTsNCiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpDQogICAgICAg
IG1fdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLnVuY2hlY2tlZEFwcGVuZChjaGFyYWN0ZXJzOFtpXSk7
DQogICAgbV9jaGFyYWN0ZXJzID0gbV91cGNvbnZlcnRlZENoYXJhY3RlcnMuZGF0YSgpOw0KfQ0K
DQppbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3RyaW5nKCkgY29uc3QNCnsNCiAgICBpZiAo
aXM4Qml0KCkpDQogICAgICAgIHJldHVybiBTdHJpbmcoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgp
Ow0KICAgIHJldHVybiBTdHJpbmcoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoKTsNCn0NCg0KaW5s
aW5lIEF0b21TdHJpbmcgU3RyaW5nVmlldzo6dG9BdG9tU3RyaW5nKCkgY29uc3QNCnsNCiAgICBp
ZiAoaXM4Qml0KCkpDQogICAgICAgIHJldHVybiBBdG9tU3RyaW5nKGNoYXJhY3RlcnM4KCksIG1f
bGVuZ3RoKTsNCiAgICByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgp
Ow0KfQ0KDQppbmxpbmUgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBTdHJpbmdWaWV3Ojp0b0V4aXN0
aW5nQXRvbVN0cmluZygpIGNvbnN0DQp7DQogICAgaWYgKGlzOEJpdCgpKQ0KICAgICAgICByZXR1
cm4gQXRvbVN0cmluZ0ltcGw6Omxvb2tVcChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7DQogICAg
cmV0dXJuIEF0b21TdHJpbmdJbXBsOjpsb29rVXAoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoKTsN
Cn0NCg0KaW5saW5lIGZsb2F0IFN0cmluZ1ZpZXc6OnRvRmxvYXQoYm9vbCYgaXNWYWxpZCkgY29u
c3QNCnsNCiAgICBpZiAoaXM4Qml0KCkpDQogICAgICAgIHJldHVybiBjaGFyYWN0ZXJzVG9GbG9h
dChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOw0KICAgIHJldHVybiBjaGFyYWN0
ZXJzVG9GbG9hdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsNCn0NCg0KaW5s
aW5lIGludCBTdHJpbmdWaWV3Ojp0b0ludCgpIGNvbnN0DQp7DQogICAgYm9vbCBpc1ZhbGlkOw0K
ICAgIHJldHVybiB0b0ludChpc1ZhbGlkKTsNCn0NCg0KaW5saW5lIGludCBTdHJpbmdWaWV3Ojp0
b0ludChib29sJiBpc1ZhbGlkKSBjb25zdA0Kew0KICAgIGlmIChpczhCaXQoKSkNCiAgICAgICAg
cmV0dXJuIGNoYXJhY3RlcnNUb0ludChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQp
Ow0KICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnQoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAm
aXNWYWxpZCk7DQp9DQoNCmlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QoYm9vbCYg
aXNWYWxpZCkgY29uc3QNCnsNCiAgICBpZiAoaXM4Qml0KCkpDQogICAgICAgIHJldHVybiBjaGFy
YWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsNCiAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwg
JmlzVmFsaWQpOw0KfQ0KDQppbmxpbmUgT3B0aW9uYWw8dWludDY0X3Q+IFN0cmluZ1ZpZXc6OnRv
VUludDY0U3RyaWN0KCkgY29uc3QNCnsNCiAgICBib29sIGlzVmFsaWQ7DQogICAgdWludDY0X3Qg
cmVzdWx0ID0gaXM4Qml0KCkgPyBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgo
KSwgbV9sZW5ndGgsICZpc1ZhbGlkKSA6IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsNCiAgICByZXR1cm4gaXNWYWxpZCA/IG1ha2VP
cHRpb25hbChyZXN1bHQpIDogV1RGOjpudWxsb3B0Ow0KfQ0KDQppbmxpbmUgU3RyaW5nIFN0cmlu
Z1ZpZXc6OnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdA0Kew0KICAgIGlmIChpczhCaXQo
KSkNCiAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNoYXJh
Y3RlcnM4KCksIG1fbGVuZ3RoKTsNCiAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoKTsNCn0NCg0KaW5saW5lIHNpemVfdCBT
dHJpbmdWaWV3OjpmaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpIGNvbnN0DQp7
DQogICAgaWYgKGlzOEJpdCgpKQ0KICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4
KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIHN0YXJ0KTsNCiAgICByZXR1cm4gV1RGOjpmaW5kKGNo
YXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7DQp9DQoNCmlubGluZSBz
aXplX3QgU3RyaW5nVmlldzo6ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24gbWF0Y2hGdW5jdGlv
biwgdW5zaWduZWQgc3RhcnQpIGNvbnN0DQp7DQogICAgaWYgKGlzOEJpdCgpKQ0KICAgICAgICBy
ZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBtYXRjaEZ1bmN0aW9uLCBz
dGFydCk7DQogICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsIG1h
dGNoRnVuY3Rpb24sIHN0YXJ0KTsNCn0NCg0KaW5saW5lIHNpemVfdCBTdHJpbmdWaWV3OjpyZXZl
cnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4KSBjb25zdA0Kew0KICAgIGlm
IChpczhCaXQoKSkNCiAgICAgICAgcmV0dXJuIFdURjo6cmV2ZXJzZUZpbmQoY2hhcmFjdGVyczgo
KSwgbV9sZW5ndGgsIGNoYXJhY3RlciwgaW5kZXgpOw0KICAgIHJldHVybiBXVEY6OnJldmVyc2VG
aW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBpbmRleCk7DQp9DQoNCg0K
DQppbmxpbmUgdm9pZCBTdHJpbmdWaWV3OjppbnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmKQ0K
ew0KfQ0KDQojbGluZSA2NDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nVmlldy5oIg0KDQp0ZW1wbGF0ZTw+IGNsYXNz
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1ZpZXcsIHZvaWQ+IHsNCnB1YmxpYzoNCiAgICBTdHJp
bmdUeXBlQWRhcHRlcihTdHJpbmdWaWV3IHN0cmluZykNCiAgICAgICAgOiBtX3N0cmluZyB7IHN0
cmluZyB9DQogICAgew0KICAgIH0NCg0KICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1f
c3RyaW5nLmxlbmd0aCgpOyB9DQogICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiBtX3N0cmluZy5p
czhCaXQoKTsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3Jp
dGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgeyBtX3N0cmluZy5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydChkZXN0aW5hdGlvbik7IH0NCg0KcHJpdmF0ZToNCiAgICBTdHJpbmdWaWV3
IG1fc3RyaW5nOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgc2l6ZV90
IGlubGluZUNhcGFjaXR5PiB2b2lkIGFwcGVuZChWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5l
Q2FwYWNpdHk+JiBidWZmZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQ0Kew0KICAgIHVuc2lnbmVkIG9s
ZFNpemUgPSBidWZmZXIuc2l6ZSgpOw0KICAgIGJ1ZmZlci5ncm93KG9sZFNpemUgKyBzdHJpbmcu
bGVuZ3RoKCkpOw0KICAgIHN0cmluZy5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIu
ZGF0YSgpICsgb2xkU2l6ZSk7DQp9DQoNCmlubGluZSBib29sIGVxdWFsKFN0cmluZ1ZpZXcgYSwg
U3RyaW5nVmlldyBiKQ0Kew0KICAgIGlmIChhLm1fY2hhcmFjdGVycyA9PSBiLm1fY2hhcmFjdGVy
cykgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBhLmxlbmd0aCgpID09IGIu
bGVuZ3RoKCk7DQogICAgfQ0KDQogICAgcmV0dXJuIGVxdWFsQ29tbW9uKGEsIGIpOw0KfQ0KDQpp
bmxpbmUgYm9vbCBlcXVhbChTdHJpbmdWaWV3IGEsIGNvbnN0IExDaGFyKiBiKQ0Kew0KICAgIGlm
ICghYikNCiAgICAgICAgcmV0dXJuICFhLmlzRW1wdHkoKTsNCiAgICBpZiAoYS5pc0VtcHR5KCkp
DQogICAgICAgIHJldHVybiAhYjsNCg0KICAgIHVuc2lnbmVkIGFMZW5ndGggPSBhLmxlbmd0aCgp
Ow0KICAgIGlmIChhTGVuZ3RoICE9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihiKSkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgIGlmIChhLmlzOEJpdCgpKQ0KICAg
ICAgICByZXR1cm4gZXF1YWwoYS5jaGFyYWN0ZXJzOCgpLCBiLCBhTGVuZ3RoKTsNCiAgICByZXR1
cm4gZXF1YWwoYS5jaGFyYWN0ZXJzMTYoKSwgYiwgYUxlbmd0aCk7DQp9DQoNCmlubGluZSBib29s
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBhLCBTdHJpbmdWaWV3IGIpDQp7DQog
ICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24oYSwgYik7DQp9DQoNCmlubGlu
ZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBhLCBjb25zdCBjaGFyKiBi
KQ0Kew0KICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGEsIGIpOw0KfQ0K
DQpjbGFzcyBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0
b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2
b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgo
dm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGlu
dDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNN
YWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBTcGxpdFJlc3VsdChTdHJpbmdWaWV3LCBVQ2hhciBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMpOw0KDQogICAgY2xhc3MgSXRlcmF0b3I7
DQogICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsNCiAgICBJdGVyYXRvciBlbmQoKSBjb25zdDsN
Cg0KcHJpdmF0ZToNCiAgICBTdHJpbmdWaWV3IG1fc3RyaW5nOw0KICAgIFVDaGFyIG1fc2VwYXJh
dG9yOw0KICAgIGJvb2wgbV9hbGxvd0VtcHR5RW50cmllczsNCn07DQoNCmNsYXNzIFN0cmluZ1Zp
ZXc6OkdyYXBoZW1lQ2x1c3RlcnMgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJl
dHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6
IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7
DQpwdWJsaWM6DQogICAgZXhwbGljaXQgR3JhcGhlbWVDbHVzdGVycyhjb25zdCBTdHJpbmdWaWV3
Jik7DQoNCiAgICBjbGFzcyBJdGVyYXRvcjsNCiAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0Ow0K
ICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0Ow0KDQpwcml2YXRlOg0KICAgIFN0cmluZ1ZpZXcgbV9z
dHJpbmdWaWV3Ow0KfTsNCg0KY2xhc3MgU3RyaW5nVmlldzo6Q29kZVBvaW50cyB7DQogICAgcHVi
bGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQq
IGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZh
c3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1p
Y29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBleHBsaWNpdCBDb2RlUG9p
bnRzKGNvbnN0IFN0cmluZ1ZpZXcmKTsNCg0KICAgIGNsYXNzIEl0ZXJhdG9yOw0KICAgIEl0ZXJh
dG9yIGJlZ2luKCkgY29uc3Q7DQogICAgSXRlcmF0b3IgZW5kKCkgY29uc3Q7DQoNCnByaXZhdGU6
DQogICAgU3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7DQp9Ow0KDQpjbGFzcyBTdHJpbmdWaWV3OjpD
b2RlVW5pdHMgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlv
bjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhp
c0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQog
ICAgZXhwbGljaXQgQ29kZVVuaXRzKGNvbnN0IFN0cmluZ1ZpZXcmKTsNCg0KICAgIGNsYXNzIEl0
ZXJhdG9yOw0KICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7DQogICAgSXRlcmF0b3IgZW5kKCkg
Y29uc3Q7DQoNCnByaXZhdGU6DQogICAgU3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7DQp9Ow0KDQpj
bGFzcyBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3Igew0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkg
PSBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnOw0KICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBTdHJp
bmdWaWV3Ow0KICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZfdDsNCiAgICB1c2lu
ZyBwb2ludGVyID0gdmFsdWVfdHlwZSo7DQogICAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlw
ZSY7DQoNCiAgICBTdHJpbmdWaWV3IG9wZXJhdG9yKigpIGNvbnN0Ow0KDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7DQoNCiAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsNCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRl
cmF0b3ImKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICBlbnVtIFBvc2l0aW9uVGFnIHsgQXRFbmQg
fTsNCiAgICBJdGVyYXRvcihjb25zdCBTcGxpdFJlc3VsdCYpOw0KICAgIEl0ZXJhdG9yKGNvbnN0
IFNwbGl0UmVzdWx0JiwgUG9zaXRpb25UYWcpOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IHZvaWQgZmluZE5leHRTdWJzdHJpbmcoKTsNCg0KICAgIGZyaWVuZCBTcGxpdFJlc3VsdDsNCg0K
ICAgIGNvbnN0IFNwbGl0UmVzdWx0JiBtX3Jlc3VsdDsNCiAgICB1bnNpZ25lZCBtX3Bvc2l0aW9u
IHsgMCB9Ow0KICAgIHVuc2lnbmVkIG1fbGVuZ3RoOw0KICAgIGJvb2wgbV9pc0RvbmU7DQp9Ow0K
DQpjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvciB7DQogICAgcHVi
bGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQq
IGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZh
c3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1p
Y29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBJdGVyYXRvcigpID0gZGVs
ZXRlOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3
JiwgdW5zaWduZWQgaW5kZXgpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB+SXRlcmF0b3Io
KTsNCg0KICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJikgPSBkZWxldGU7DQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIEl0ZXJhdG9yKEl0ZXJhdG9yJiYpOw0KICAgIEl0ZXJhdG9yJiBvcGVy
YXRvcj0oY29uc3QgSXRlcmF0b3ImKSA9IGRlbGV0ZTsNCiAgICBJdGVyYXRvciYgb3BlcmF0b3I9
KEl0ZXJhdG9yJiYpID0gZGVsZXRlOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmlu
Z1ZpZXcgb3BlcmF0b3IqKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNvbnN0Ow0KDQpwcml2YXRlOg0KICAg
IGNsYXNzIEltcGw7DQoNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4gbV9pbXBsOw0KfTsNCg0K
Y2xhc3MgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6SXRlcmF0b3Igew0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgSXRlcmF0b3IoY29uc3QgU3RyaW5nVmll
dyYsIHVuc2lnbmVkIGluZGV4KTsNCg0KICAgIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7DQog
ICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsNCg0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
dGVyYXRvciYpIGNvbnN0Ow0KICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNv
bnN0Ow0KDQpwcml2YXRlOg0KICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgU3RyaW5n
Vmlldz4gbV9zdHJpbmdWaWV3Ow0KICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX25leHRDb2RlUG9p
bnRPZmZzZXQ7DQogICAgVUNoYXIzMiBtX2NvZGVQb2ludDsNCn07DQoNCmNsYXNzIFN0cmluZ1Zp
ZXc6OkNvZGVVbml0czo6SXRlcmF0b3Igew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZh
dGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBp
bnQ7DQpwdWJsaWM6DQogICAgSXRlcmF0b3IoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkIGlu
ZGV4KTsNCg0KICAgIFVDaGFyIG9wZXJhdG9yKigpIGNvbnN0Ow0KICAgIEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCk7DQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsN
CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsNCg0KcHJpdmF0ZToN
CiAgICBjb25zdCBTdHJpbmdWaWV3JiBtX3N0cmluZ1ZpZXc7DQogICAgdW5zaWduZWQgbV9pbmRl
eDsNCn07DQoNCmlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OmdyYXBoZW1lQ2x1c3RlcnMoKSBjb25z
dCAtPiBHcmFwaGVtZUNsdXN0ZXJzDQp7DQogICAgcmV0dXJuIEdyYXBoZW1lQ2x1c3RlcnMoKnRo
aXMpOw0KfQ0KDQppbmxpbmUgYXV0byBTdHJpbmdWaWV3Ojpjb2RlUG9pbnRzKCkgY29uc3QgLT4g
Q29kZVBvaW50cw0Kew0KICAgIHJldHVybiBDb2RlUG9pbnRzKCp0aGlzKTsNCn0NCg0KaW5saW5l
IGF1dG8gU3RyaW5nVmlldzo6Y29kZVVuaXRzKCkgY29uc3QgLT4gQ29kZVVuaXRzDQp7DQogICAg
cmV0dXJuIENvZGVVbml0cygqdGhpcyk7DQp9DQoNCmlubGluZSBTdHJpbmdWaWV3OjpHcmFwaGVt
ZUNsdXN0ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcp
DQogICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykNCnsNCn0NCg0KaW5saW5lIGF1dG8gU3Ry
aW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcg0Kew0K
ICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIDApOw0KfQ0KDQppbmxpbmUgYXV0byBT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjplbmQoKSBjb25zdCAtPiBJdGVyYXRvcg0Kew0K
ICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIG1fc3RyaW5nVmlldy5sZW5ndGgoKSk7
DQp9DQoNCmlubGluZSBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpDb2RlUG9pbnRzKGNvbnN0IFN0
cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpDQogICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykNCnsN
Cn0NCg0KaW5saW5lIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpJdGVyYXRvcihj
b25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkNCiAgICA6IG1fc3Ry
aW5nVmlldyhzdHJpbmdWaWV3KQ0KICAgICwgbV9uZXh0Q29kZVBvaW50T2Zmc2V0KGluZGV4KQ0K
ew0KICAgIG9wZXJhdG9yKysoKTsNCn0NCg0KaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6Q29kZVBv
aW50czo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKSAtPiBJdGVyYXRvciYNCnsNCiAgICAoKHZvaWQp
MCk7DQogICAgaWYgKG1fbmV4dENvZGVQb2ludE9mZnNldC52YWx1ZSgpID09IG1fc3RyaW5nVmll
dy5nZXQoKS5sZW5ndGgoKSkgew0KICAgICAgICBtX25leHRDb2RlUG9pbnRPZmZzZXQgPSBXVEY6
Om51bGxvcHQ7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQogICAgaWYgKG1fc3RyaW5n
Vmlldy5nZXQoKS5pczhCaXQoKSkNCiAgICAgICAgbV9jb2RlUG9pbnQgPSBtX3N0cmluZ1ZpZXcu
Z2V0KCkuY2hhcmFjdGVyczgoKVttX25leHRDb2RlUG9pbnRPZmZzZXQudmFsdWUoKSsrXTsNCiAg
ICBlbHNlDQogICAgICAgIHsgKG1fY29kZVBvaW50KT0obV9zdHJpbmdWaWV3LmdldCgpLmNoYXJh
Y3RlcnMxNigpKVsobV9uZXh0Q29kZVBvaW50T2Zmc2V0LnZhbHVlKCkpKytdOyBpZigoKChtX2Nv
ZGVQb2ludCkmMHhmZmZmZmMwMCk9PTB4ZDgwMCkpIHsgdWludDE2X3QgX19jMjsgaWYoKG1fbmV4
dENvZGVQb2ludE9mZnNldC52YWx1ZSgpKSE9KG1fc3RyaW5nVmlldy5nZXQoKS5sZW5ndGgoKSkg
JiYgKCgoX19jMj0obV9zdHJpbmdWaWV3LmdldCgpLmNoYXJhY3RlcnMxNigpKVsobV9uZXh0Q29k
ZVBvaW50T2Zmc2V0LnZhbHVlKCkpXSkmMHhmZmZmZmMwMCk9PTB4ZGMwMCkpIHsgKysobV9uZXh0
Q29kZVBvaW50T2Zmc2V0LnZhbHVlKCkpOyAobV9jb2RlUG9pbnQpPSgoKFVDaGFyMzIpKChtX2Nv
ZGVQb2ludCkpPDwxMFVMKSsoVUNoYXIzMikoX19jMiktKCgweGQ4MDA8PDEwVUwpKzB4ZGMwMC0w
eDEwMDAwKSk7IH0gfSB9Ow0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoN
CmlubGluZSBVQ2hhcjMyIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpvcGVyYXRv
ciooKSBjb25zdA0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gbV9jb2RlUG9pbnQ7DQp9
DQoNCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpvcGVyYXRv
cj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAg
cmV0dXJuIG1fbmV4dENvZGVQb2ludE9mZnNldCA9PSBvdGhlci5tX25leHRDb2RlUG9pbnRPZmZz
ZXQ7DQp9DQoNCmlubGluZSBib29sIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpv
cGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCnsNCiAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7DQp9DQoNCmlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6
OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3INCnsNCiAgICByZXR1cm4gSXRlcmF0b3IobV9zdHJp
bmdWaWV3LCAwKTsNCn0NCg0KaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6Q29kZVBvaW50czo6ZW5k
KCkgY29uc3QgLT4gSXRlcmF0b3INCnsNCiAgICByZXR1cm4gSXRlcmF0b3IobV9zdHJpbmdWaWV3
LCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpOw0KfQ0KDQppbmxpbmUgU3RyaW5nVmlldzo6Q29kZVVu
aXRzOjpDb2RlVW5pdHMoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldykNCiAgICA6IG1fc3Ry
aW5nVmlldyhzdHJpbmdWaWV3KQ0Kew0KfQ0KDQppbmxpbmUgU3RyaW5nVmlldzo6Q29kZVVuaXRz
OjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWdu
ZWQgaW5kZXgpDQogICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykNCiAgICAsIG1faW5kZXgo
aW5kZXgpDQp7DQp9DQoNCmlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OkNvZGVVbml0czo6SXRlcmF0
b3I6Om9wZXJhdG9yKysoKSAtPiBJdGVyYXRvciYNCnsNCiAgICArK21faW5kZXg7DQogICAgcmV0
dXJuICp0aGlzOw0KfQ0KDQppbmxpbmUgVUNoYXIgU3RyaW5nVmlldzo6Q29kZVVuaXRzOjpJdGVy
YXRvcjo6b3BlcmF0b3IqKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9zdHJpbmdWaWV3W21faW5k
ZXhdOw0KfQ0KDQppbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9yOjpv
cGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7
DQogICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsNCn0NCg0KaW5saW5lIGJvb2wg
U3RyaW5nVmlldzo6Q29kZVVuaXRzOjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0DQp7DQogICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOw0KfQ0KDQpp
bmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0
b3INCnsNCiAgICByZXR1cm4gSXRlcmF0b3IobV9zdHJpbmdWaWV3LCAwKTsNCn0NCg0KaW5saW5l
IGF1dG8gU3RyaW5nVmlldzo6Q29kZVVuaXRzOjplbmQoKSBjb25zdCAtPiBJdGVyYXRvcg0Kew0K
ICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIG1fc3RyaW5nVmlldy5sZW5ndGgoKSk7
DQp9DQoNCmlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OnNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29u
c3QgLT4gU3BsaXRSZXN1bHQNCnsNCiAgICByZXR1cm4gU3BsaXRSZXN1bHQgeyAqdGhpcywgc2Vw
YXJhdG9yLCBmYWxzZSB9Ow0KfQ0KDQppbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpzcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29uc3QgLT4gU3BsaXRSZXN1bHQNCnsN
CiAgICByZXR1cm4gU3BsaXRSZXN1bHQgeyAqdGhpcywgc2VwYXJhdG9yLCB0cnVlIH07DQp9DQoN
CmlubGluZSBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6U3BsaXRSZXN1bHQoU3RyaW5nVmlldyBz
dHJpbmdWaWV3LCBVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMpDQogICAg
OiBtX3N0cmluZyB7IHN0cmluZ1ZpZXcgfQ0KICAgICwgbV9zZXBhcmF0b3IgeyBzZXBhcmF0b3Ig
fQ0KICAgICwgbV9hbGxvd0VtcHR5RW50cmllcyB7IGFsbG93RW1wdHlFbnRyaWVzIH0NCnsNCn0N
Cg0KaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6OmJlZ2luKCkgY29uc3QgLT4g
SXRlcmF0b3INCnsNCiAgICByZXR1cm4gSXRlcmF0b3IgeyAqdGhpcyB9Ow0KfQ0KDQppbmxpbmUg
YXV0byBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0b3INCnsN
CiAgICByZXR1cm4gSXRlcmF0b3IgeyAqdGhpcywgSXRlcmF0b3I6OkF0RW5kIH07DQp9DQoNCmlu
bGluZSBTdHJpbmdWaWV3OjpTcGxpdFJlc3VsdDo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IFNw
bGl0UmVzdWx0JiByZXN1bHQpDQogICAgOiBtX3Jlc3VsdCB7IHJlc3VsdCB9DQogICAgLCBtX2lz
RG9uZSB7IHJlc3VsdC5tX3N0cmluZy5pc0VtcHR5KCkgJiYgIXJlc3VsdC5tX2FsbG93RW1wdHlF
bnRyaWVzIH0NCnsNCiAgICBmaW5kTmV4dFN1YnN0cmluZygpOw0KfQ0KDQppbmxpbmUgU3RyaW5n
Vmlldzo6U3BsaXRSZXN1bHQ6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTcGxpdFJlc3VsdCYg
cmVzdWx0LCBQb3NpdGlvblRhZykNCiAgICA6IG1fcmVzdWx0IHsgcmVzdWx0IH0NCiAgICAsIG1f
cG9zaXRpb24geyByZXN1bHQubV9zdHJpbmcubGVuZ3RoKCkgfQ0KICAgICwgbV9pc0RvbmUgeyB0
cnVlIH0NCnsNCn0NCg0KaW5saW5lIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6
Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdA0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1
cm4gbV9yZXN1bHQubV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9zaXRpb24sIG1fbGVuZ3RoKTsNCn0N
Cg0KaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0ZXJhdG9yOjpvcGVyYXRv
cj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAg
cmV0dXJuIG1fcG9zaXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbiAmJiBtX2lzRG9uZSA9PSBvdGhl
ci5tX2lzRG9uZTsNCn0NCg0KaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0
ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCnsNCiAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+DQppbmxpbmUgU3RyaW5n
VmlldyBTdHJpbmdWaWV3OjpzdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJz
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQ
cmVkaWNhdGUmIHByZWRpY2F0ZSkNCnsNCiAgICBpZiAoIW1fbGVuZ3RoKQ0KICAgICAgICByZXR1
cm4gKnRoaXM7DQoNCiAgICB1bnNpZ25lZCBzdGFydCA9IDA7DQogICAgdW5zaWduZWQgZW5kID0g
bV9sZW5ndGggLSAxOw0KDQogICAgd2hpbGUgKHN0YXJ0IDw9IGVuZCAmJiBwcmVkaWNhdGUoY2hh
cmFjdGVyc1tzdGFydF0pKQ0KICAgICAgICArK3N0YXJ0Ow0KDQogICAgaWYgKHN0YXJ0ID4gZW5k
KQ0KICAgICAgICByZXR1cm4gU3RyaW5nVmlldzo6ZW1wdHkoKTsNCg0KICAgIHdoaWxlIChlbmQg
JiYgcHJlZGljYXRlKGNoYXJhY3RlcnNbZW5kXSkpDQogICAgICAgIC0tZW5kOw0KDQogICAgaWYg
KCFzdGFydCAmJiBlbmQgPT0gbV9sZW5ndGggLSAxKQ0KICAgICAgICByZXR1cm4gKnRoaXM7DQoN
CiAgICBTdHJpbmdWaWV3IHJlc3VsdChjaGFyYWN0ZXJzICsgc3RhcnQsIGVuZCArIDEgLSBzdGFy
dCk7DQogICAgcmVzdWx0LnNldFVuZGVybHlpbmdTdHJpbmcoKnRoaXMpOw0KICAgIHJldHVybiBy
ZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+
DQpTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENo
YXJhY3RlcnMoY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYgcHJlZGljYXRlKQ0Kew0K
ICAgIGlmIChpczhCaXQoKSkNCiAgICAgICAgcmV0dXJuIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
TWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KGNoYXJhY3RlcnM4KCksIHByZWRpY2F0ZSk7DQogICAg
cmV0dXJuIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3RlcnM8VUNoYXI+KGNo
YXJhY3RlcnMxNigpLCBwcmVkaWNhdGUpOw0KfQ0KDQp0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSkNCnsNCiAgICByZXR1
cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb24oc3RyaW5nLCBsb3dlcmNhc2VM
ZXR0ZXJzKTsNCn0NCg0KdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFy
dHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBj
aGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSkNCnsNCiAgICByZXR1cm4gc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihzdHJpbmcsIGxvd2VyY2FzZUxldHRlcnMp
Ow0KfQ0KDQppbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdWaWV3IGEsIFN0
cmluZ1ZpZXcgYikNCnsNCiAgICANCiAgICByZXR1cm4gZXF1YWwoYSwgYik7DQp9DQoNCl9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBpbnQgY29kZVBvaW50Q29tcGFyZShTdHJpbmdWaWV3LCBTdHJpbmdW
aWV3KTsNCg0KfSANCg0KdXNpbmcgV1RGOjphcHBlbmQ7DQp1c2luZyBXVEY6OmVxdWFsOw0KdXNp
bmcgV1RGOjpTdHJpbmdWaWV3Ow0KdXNpbmcgV1RGOjpTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdT
dHJpbmc7DQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oIg0KDQoNCg0KDQoNCiNs
aW5lIDM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgiDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0
ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIsIHZvaWQ+IHsNCnB1YmxpYzoN
CiAgICBTdHJpbmdUeXBlQWRhcHRlcihjaGFyIGNoYXJhY3RlcikNCiAgICAgICAgOiBtX2NoYXJh
Y3RlciB7IGNoYXJhY3RlciB9DQogICAgew0KICAgIH0NCg0KICAgIHVuc2lnbmVkIGxlbmd0aCgp
IHsgcmV0dXJuIDE7IH0NCiAgICBib29sIGlzOEJpdCgpIHsgcmV0dXJuIHRydWU7IH0NCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlw
ZSogZGVzdGluYXRpb24pIGNvbnN0IHsgKmRlc3RpbmF0aW9uID0gbV9jaGFyYWN0ZXI7IH0NCg0K
cHJpdmF0ZToNCiAgICBjaGFyIG1fY2hhcmFjdGVyOw0KfTsNCg0KdGVtcGxhdGU8PiBjbGFzcyBT
dHJpbmdUeXBlQWRhcHRlcjxVQ2hhciwgdm9pZD4gew0KcHVibGljOg0KICAgIFN0cmluZ1R5cGVB
ZGFwdGVyKFVDaGFyIGNoYXJhY3RlcikNCiAgICAgICAgOiBtX2NoYXJhY3RlciB7IGNoYXJhY3Rl
ciB9DQogICAgew0KICAgIH0NCg0KICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IDE7IH0NCiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIGlzTGF0aW4xKG1fY2hhcmFj
dGVyKTsgfQ0KDQogICAgdm9pZCB3cml0ZVRvKExDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QNCiAg
ICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKmRlc3RpbmF0aW9uID0gbV9jaGFyYWN0
ZXI7DQogICAgfQ0KDQogICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikgY29uc3Qg
eyAqZGVzdGluYXRpb24gPSBtX2NoYXJhY3RlcjsgfQ0KDQpwcml2YXRlOg0KICAgIFVDaGFyIG1f
Y2hhcmFjdGVyOw0KfTsNCg0KdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25z
dCBMQ2hhciosIHZvaWQ+IHsNCnB1YmxpYzoNCiAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBM
Q2hhciogY2hhcmFjdGVycykNCiAgICAgICAgOiBtX2NoYXJhY3RlcnMgeyBjaGFyYWN0ZXJzIH0N
CiAgICAgICAgLCBtX2xlbmd0aCB7IGNvbXB1dGVMZW5ndGgoY2hhcmFjdGVycykgfQ0KICAgIHsN
CiAgICB9DQoNCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQ0KICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0
aW5hdGlvbikgY29uc3QgeyBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwg
bV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCk7IH0NCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgdW5zaWdu
ZWQgY29tcHV0ZUxlbmd0aChjb25zdCBMQ2hhciogY2hhcmFjdGVycykNCiAgICB7DQogICAgICAg
IHNpemVfdCBsZW5ndGggPSBzdGQ6OnN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihjaGFyYWN0ZXJzKSk7DQogICAgICAgIGRvIHsgaWYgKCghKGxlbmd0aCA8PSBTdHJpbmc6Ok1h
eExlbmd0aCkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJG
ZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oOTQsICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmgiLCAgX19GVU5DVElPTl9fICAsIDExICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsNCiAgICB9
DQoNCiAgICBjb25zdCBMQ2hhciogbV9jaGFyYWN0ZXJzOw0KICAgIHVuc2lnbmVkIG1fbGVuZ3Ro
Ow0KfTsNCg0KdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBVQ2hhcios
IHZvaWQ+IHsNCnB1YmxpYzoNCiAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBVQ2hhciogY2hh
cmFjdGVycykNCiAgICAgICAgOiBtX2NoYXJhY3RlcnMgeyBjaGFyYWN0ZXJzIH0NCiAgICAgICAg
LCBtX2xlbmd0aCB7IGNvbXB1dGVMZW5ndGgoY2hhcmFjdGVycykgfQ0KICAgIHsNCiAgICB9DQoN
CiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQ0KICAgIGJv
b2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gIW1fbGVuZ3RoOyB9DQogICAgdm9pZCB3cml0ZVRv
KExDaGFyKikgY29uc3QgeyAoKHZvaWQpMCk7IH0NCiAgICB2b2lkIHdyaXRlVG8oVUNoYXIqIGRl
c3RpbmF0aW9uKSBjb25zdCB7IFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9u
LCBtX2NoYXJhY3RlcnMsIG1fbGVuZ3RoKTsgfQ0KDQpwcml2YXRlOg0KICAgIHN0YXRpYyB1bnNp
Z25lZCBjb21wdXRlTGVuZ3RoKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKQ0KICAgIHsNCiAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IDA7DQogICAgICAgIHdoaWxlIChjaGFyYWN0ZXJzW2xlbmd0aF0p
DQogICAgICAgICAgICArK2xlbmd0aDsNCiAgICAgICAgZG8geyBpZiAoKCEobGVuZ3RoIDw9IFN0
cmluZzo6TWF4TGVuZ3RoKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBj
b21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygxMjEsICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgiLCAgX19GVU5DVElPTl9fICAsIDEyICk7IH0gd2hpbGUgKGZhbHNlKTsg
fSB3aGlsZSAoMCk7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3Ro
KTsNCiAgICB9DQoNCiAgICBjb25zdCBVQ2hhciogbV9jaGFyYWN0ZXJzOw0KICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOw0KfTsNCg0KdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25z
dCBjaGFyKiwgdm9pZD4gOiBwdWJsaWMgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgTENoYXIqLCB2
b2lkPiB7DQpwdWJsaWM6DQogICAgU3RyaW5nVHlwZUFkYXB0ZXIoY29uc3QgY2hhciogY2hhcmFj
dGVycykNCiAgICAgICAgOiBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBMQ2hhciosIHZvaWQ+IHsg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpIH0NCiAgICB7DQogICAg
fQ0KfTsNCg0KdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFyKiwgdm9pZD4g
OiBwdWJsaWMgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgY2hhciosIHZvaWQ+IHsNCnB1YmxpYzoN
CiAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQ0KICAgICAgICA6
IFN0cmluZ1R5cGVBZGFwdGVyPGNvbnN0IGNoYXIqLCB2b2lkPiB7IGNoYXJhY3RlcnMgfQ0KICAg
IHsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEFTQ0lJ
TGl0ZXJhbCwgdm9pZD4gOiBwdWJsaWMgU3RyaW5nVHlwZUFkYXB0ZXI8Y29uc3QgY2hhciosIHZv
aWQ+IHsNCnB1YmxpYzoNCiAgICBTdHJpbmdUeXBlQWRhcHRlcihBU0NJSUxpdGVyYWwgY2hhcmFj
dGVycykNCiAgICAgICAgOiBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBjaGFyKiwgdm9pZD4geyBj
aGFyYWN0ZXJzIH0NCiAgICB7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdU
eXBlQWRhcHRlcjxWZWN0b3I8Y2hhcj4sIHZvaWQ+IHsNCnB1YmxpYzoNCiAgICBTdHJpbmdUeXBl
QWRhcHRlcihjb25zdCBWZWN0b3I8Y2hhcj4mIHZlY3RvcikNCiAgICAgICAgOiBtX3ZlY3RvciB7
IHZlY3RvciB9DQogICAgew0KICAgIH0NCg0KICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX3ZlY3Rvci5zaXplKCk7IH0NCiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdyaXRl
VG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0IHsgU3RyaW5nSW1wbDo6Y29weUNo
YXJhY3RlcnMoZGVzdGluYXRpb24sIGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpOyB9DQoNCnByaXZh
dGU6DQogICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMoKSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3ZlY3Rvci5kYXRhKCkpOw0K
ICAgIH0NCg0KICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgbV92ZWN0b3I7DQp9Ow0KDQp0ZW1wbGF0
ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gew0KcHVibGljOg0KICAg
IFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQ0KICAgICAgICA6IG1fc3Ry
aW5nIHsgc3RyaW5nIH0NCiAgICB7DQogICAgfQ0KDQogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0NCiAgICBib29sIGlzOEJpdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpIHx8IG1fc3RyaW5nLmlzOEJpdCgpOyB9DQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5
cGUqIGRlc3RpbmF0aW9uKSBjb25zdA0KICAgIHsNCiAgICAgICAgU3RyaW5nVmlldyB7IG1fc3Ry
aW5nIH0uZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGVzdGluYXRpb24pOw0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIGNvbnN0IFN0cmluZyYgbV9zdHJpbmc7
DQp9Ow0KDQp0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEF0b21TdHJpbmcsIHZv
aWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZywgdm9pZD4gew0KcHVibGljOg0K
ICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZykNCiAgICAgICAg
OiBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmcsIHZvaWQ+IHsgc3RyaW5nLnN0cmluZygpIH0NCiAg
ICB7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUuLi4gU3RyaW5nVHlwZXM+IGNsYXNz
IFN0cmluZ1R5cGVBZGFwdGVyPHN0ZDo6dHVwbGU8U3RyaW5nVHlwZXMuLi4+LCB2b2lkPiB7DQpw
dWJsaWM6DQogICAgU3RyaW5nVHlwZUFkYXB0ZXIoc3RkOjp0dXBsZTxTdHJpbmdUeXBlcy4uLj4g
dHVwbGUpDQogICAgICAgIDogbV90dXBsZSB7IHR1cGxlIH0NCiAgICAgICAgLCBtX2xlbmd0aCB7
IHN0ZDo6YXBwbHkoY29tcHV0ZUxlbmd0aCwgdHVwbGUpIH0NCiAgICAgICAgLCBtX2lzOEJpdCB7
IHN0ZDo6YXBwbHkoY29tcHV0ZUlzOEJpdCwgdHVwbGUpIH0NCiAgICB7DQogICAgfQ0KDQogICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0NCiAgICBib29sIGlz
OEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXM4Qml0OyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKSBj
b25zdA0KICAgIHsNCiAgICAgICAgc3RkOjphcHBseShbJl0oU3RyaW5nVHlwZXMuLi4gc3RyaW5n
cykgew0KICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsNCiAgICAgICAgICAgICguLi4s
ICgNCiAgICAgICAgICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlcz4oc3RyaW5n
cykud3JpdGVUbyhkZXN0aW5hdGlvbiArIChvZmZzZXQgKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkp
KSwNCiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlw
ZXM+KHN0cmluZ3MpLmxlbmd0aCgpDQogICAgICAgICAgICApKTsNCiAgICAgICAgfSwgbV90dXBs
ZSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlTGVuZ3Ro
KFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpDQogICAgew0KICAgICAgICByZXR1cm4gKC4uLiArIFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS5sZW5ndGgoKSk7DQogICAgfQ0K
DQogICAgc3RhdGljIGJvb2wgY29tcHV0ZUlzOEJpdChTdHJpbmdUeXBlcy4uLiBzdHJpbmdzKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuICguLi4gJiYgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlw
ZXM+KHN0cmluZ3MpLmlzOEJpdCgpKTsNCiAgICB9DQoNCiAgICBzdGQ6OnR1cGxlPFN0cmluZ1R5
cGVzLi4uPiBtX3R1cGxlOw0KICAgIHVuc2lnbmVkIG1fbGVuZ3RoOw0KICAgIGJvb2wgbV9pczhC
aXQ7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBVbmRlcmx5aW5nRWxlbWVudFR5cGU+IHN0cnVj
dCBQYWRkaW5nU3BlY2lmaWNhdGlvbiB7DQogICAgTENoYXIgY2hhcmFjdGVyOw0KICAgIHVuc2ln
bmVkIGxlbmd0aDsNCiAgICBVbmRlcmx5aW5nRWxlbWVudFR5cGUgdW5kZXJseWluZ0VsZW1lbnQ7
DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBVbmRlcmx5aW5nRWxlbWVudFR5cGU+IFBhZGRpbmdT
cGVjaWZpY2F0aW9uPFVuZGVybHlpbmdFbGVtZW50VHlwZT4gcGFkKGNoYXIgY2hhcmFjdGVyLCB1
bnNpZ25lZCBsZW5ndGgsIFVuZGVybHlpbmdFbGVtZW50VHlwZSBlbGVtZW50KQ0Kew0KICAgIHJl
dHVybiB7IHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpLCBsZW5ndGgsIGVsZW1lbnQgfTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVW5kZXJseWluZ0VsZW1lbnRUeXBlPiBjbGFzcyBTdHJp
bmdUeXBlQWRhcHRlcjxQYWRkaW5nU3BlY2lmaWNhdGlvbjxVbmRlcmx5aW5nRWxlbWVudFR5cGU+
PiB7DQpwdWJsaWM6DQogICAgU3RyaW5nVHlwZUFkYXB0ZXIoY29uc3QgUGFkZGluZ1NwZWNpZmlj
YXRpb248VW5kZXJseWluZ0VsZW1lbnRUeXBlPiYgcGFkZGluZykNCiAgICAgICAgOiBtX3BhZGRp
bmcgeyBwYWRkaW5nIH0NCiAgICAgICAgLCBtX3VuZGVybHlpbmdBZGFwdGVyIHsgbV9wYWRkaW5n
LnVuZGVybHlpbmdFbGVtZW50IH0NCiAgICB7DQogICAgfQ0KDQogICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXgobV9wYWRkaW5nLmxlbmd0aCwgbV91bmRlcmx5aW5n
QWRhcHRlci5sZW5ndGgoKSk7IH0NCiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
dW5kZXJseWluZ0FkYXB0ZXIuaXM4Qml0KCk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0
DQogICAgew0KICAgICAgICB1bnNpZ25lZCB1bmRlcmx5aW5nTGVuZ3RoID0gbV91bmRlcmx5aW5n
QWRhcHRlci5sZW5ndGgoKTsNCiAgICAgICAgdW5zaWduZWQgY291bnQgPSAwOw0KICAgICAgICBp
ZiAodW5kZXJseWluZ0xlbmd0aCA8IG1fcGFkZGluZy5sZW5ndGgpIHsNCiAgICAgICAgICAgIGNv
dW50ID0gbV9wYWRkaW5nLmxlbmd0aCAtIHVuZGVybHlpbmdMZW5ndGg7DQogICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCiAgICAgICAgICAgICAgICBkZXN0
aW5hdGlvbltpXSA9IG1fcGFkZGluZy5jaGFyYWN0ZXI7DQogICAgICAgIH0NCiAgICAgICAgbV91
bmRlcmx5aW5nQWRhcHRlci53cml0ZVRvKGRlc3RpbmF0aW9uICsgY291bnQpOw0KICAgIH0NCg0K
cHJpdmF0ZToNCiAgICBjb25zdCBQYWRkaW5nU3BlY2lmaWNhdGlvbjxVbmRlcmx5aW5nRWxlbWVu
dFR5cGU+JiBtX3BhZGRpbmc7DQogICAgU3RyaW5nVHlwZUFkYXB0ZXI8VW5kZXJseWluZ0VsZW1l
bnRUeXBlPiBtX3VuZGVybHlpbmdBZGFwdGVyOw0KfTsNCg0KdGVtcGxhdGU8dW5zaWduZWQgTj4N
CnN0cnVjdCBJbmRlbnRhdGlvbiB7DQogICAgdW5zaWduZWQgb3BlcmF0b3IrKygpIHsgcmV0dXJu
ICsrdmFsdWU7IH0NCiAgICB1bnNpZ25lZCBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gdmFsdWUr
KzsgfQ0KICAgIHVuc2lnbmVkIG9wZXJhdG9yLS0oKSB7IHJldHVybiAtLXZhbHVlOyB9DQogICAg
dW5zaWduZWQgb3BlcmF0b3ItLShpbnQpIHsgcmV0dXJuIHZhbHVlLS07IH0NCg0KICAgIHVuc2ln
bmVkIHZhbHVlIHsgMCB9Ow0KfTsNCg0KDQp0ZW1wbGF0ZTx1bnNpZ25lZCBOPg0Kc3RydWN0IElu
ZGVudGF0aW9uU2NvcGUgew0KICAgIEluZGVudGF0aW9uU2NvcGUoSW5kZW50YXRpb248Tj4mIGlu
ZGVudGF0aW9uKQ0KICAgICAgICA6IG1faW5kZW50YXRpb24oaW5kZW50YXRpb24pDQogICAgew0K
ICAgICAgICArK21faW5kZW50YXRpb247DQogICAgfQ0KICAgIH5JbmRlbnRhdGlvblNjb3BlKCkN
CiAgICB7DQogICAgICAgIC0tbV9pbmRlbnRhdGlvbjsNCiAgICB9DQoNCiAgICBJbmRlbnRhdGlv
bjxOPiYgbV9pbmRlbnRhdGlvbjsNCn07DQoNCnRlbXBsYXRlPHVuc2lnbmVkIE4+IGNsYXNzIFN0
cmluZ1R5cGVBZGFwdGVyPEluZGVudGF0aW9uPE4+LCB2b2lkPiB7DQpwdWJsaWM6DQogICAgU3Ry
aW5nVHlwZUFkYXB0ZXIoSW5kZW50YXRpb248Tj4gaW5kZW50YXRpb24pDQogICAgICAgIDogbV9p
bmRlbnRhdGlvbiB7IGluZGVudGF0aW9uIH0NCiAgICB7DQogICAgfQ0KDQogICAgdW5zaWduZWQg
bGVuZ3RoKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX2luZGVudGF0aW9uLnZhbHVlICogTjsN
CiAgICB9DQoNCiAgICBib29sIGlzOEJpdCgpDQogICAgew0KICAgICAgICByZXR1cm4gdHJ1ZTsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdyaXRl
VG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pDQogICAgew0KICAgICAgICBzdGQ6OmZpbGxf
bihkZXN0aW5hdGlvbiwgbV9pbmRlbnRhdGlvbi52YWx1ZSAqIE4sICcgJyk7DQogICAgfQ0KDQpw
cml2YXRlOg0KICAgIEluZGVudGF0aW9uPE4+IG1faW5kZW50YXRpb247DQp9Ow0KDQpzdHJ1Y3Qg
QVNDSUlDYXNlQ29udmVydGVyIHsNCiAgICBTdHJpbmdWaWV3OjpDYXNlQ29udmVydFR5cGUgdHlw
ZTsNCiAgICBTdHJpbmdWaWV3IHN0cmluZzsNCn07DQoNCmlubGluZSBBU0NJSUNhc2VDb252ZXJ0
ZXIgbG93ZXJjYXNlKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpDQp7DQogICAgcmV0dXJu
IHsgU3RyaW5nVmlldzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dlciwgc3RyaW5nVmlldyB9Ow0KfQ0K
DQppbmxpbmUgQVNDSUlDYXNlQ29udmVydGVyIHVwcGVyY2FzZShjb25zdCBTdHJpbmdWaWV3JiBz
dHJpbmdWaWV3KQ0Kew0KICAgIHJldHVybiB7IFN0cmluZ1ZpZXc6OkNhc2VDb252ZXJ0VHlwZTo6
VXBwZXIsIHN0cmluZ1ZpZXcgfTsNCn0NCg0KdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRh
cHRlcjxBU0NJSUNhc2VDb252ZXJ0ZXIsIHZvaWQ+IHsNCnB1YmxpYzoNCiAgICBTdHJpbmdUeXBl
QWRhcHRlcihjb25zdCBBU0NJSUNhc2VDb252ZXJ0ZXImIGNvbnZlcnRlcikNCiAgICAgICAgOiBt
X2NvbnZlcnRlciB7IGNvbnZlcnRlciB9DQogICAgew0KICAgIH0NCg0KICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udmVydGVyLnN0cmluZy5sZW5ndGgoKTsgfQ0KICAg
IGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9jb252ZXJ0ZXIuc3RyaW5nLmlzOEJpdCgp
OyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENo
YXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdA0KICAgIHsNCiAgICAgICAgbV9jb252ZXJ0
ZXIuc3RyaW5nLmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKG1fY29udmVydGVyLnR5cGUsIGRl
c3RpbmF0aW9uKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgY29uc3QgQVNDSUlDYXNlQ29udmVy
dGVyJiBtX2NvbnZlcnRlcjsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0ZXI+DQppbmxp
bmUgYm9vbCBhcmU4Qml0KEFkYXB0ZXIgYWRhcHRlcikNCnsNCiAgICByZXR1cm4gYWRhcHRlci5p
czhCaXQoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRlciwgdHlwZW5hbWUuLi4gQWRh
cHRlcnM+DQppbmxpbmUgYm9vbCBhcmU4Qml0KEFkYXB0ZXIgYWRhcHRlciwgQWRhcHRlcnMgLi4u
YWRhcHRlcnMpDQp7DQogICAgcmV0dXJuIGFkYXB0ZXIuaXM4Qml0KCkgJiYgYXJlOEJpdChhZGFw
dGVycy4uLik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lIEFk
YXB0ZXI+DQppbmxpbmUgdm9pZCBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKFJlc3VsdFR5
cGUqIHJlc3VsdCwgQWRhcHRlciBhZGFwdGVyKQ0Kew0KICAgIGFkYXB0ZXIud3JpdGVUbyhyZXN1
bHQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlLCB0eXBlbmFtZSBBZGFwdGVy
LCB0eXBlbmFtZS4uLiBBZGFwdGVycz4NCmlubGluZSB2b2lkIHN0cmluZ1R5cGVBZGFwdGVyQWNj
dW11bGF0b3IoUmVzdWx0VHlwZSogcmVzdWx0LCBBZGFwdGVyIGFkYXB0ZXIsIEFkYXB0ZXJzIC4u
LmFkYXB0ZXJzKQ0Kew0KICAgIGFkYXB0ZXIud3JpdGVUbyhyZXN1bHQpOw0KICAgIHN0cmluZ1R5
cGVBZGFwdGVyQWNjdW11bGF0b3IocmVzdWx0ICsgYWRhcHRlci5sZW5ndGgoKSwgYWRhcHRlcnMu
Li4pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlQWRhcHRlciwgdHlwZW5hbWUu
Li4gU3RyaW5nVHlwZUFkYXB0ZXJzPg0KU3RyaW5nIHRyeU1ha2VTdHJpbmdGcm9tQWRhcHRlcnMo
U3RyaW5nVHlwZUFkYXB0ZXIgYWRhcHRlciwgU3RyaW5nVHlwZUFkYXB0ZXJzIC4uLmFkYXB0ZXJz
KQ0Kew0KICAgIHN0YXRpY19hc3NlcnQoU3RyaW5nOjpNYXhMZW5ndGggPT0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIiKTsNCiAgICBhdXRvIHN1bSA9IGNoZWNrZWRTdW08
aW50MzJfdD4oYWRhcHRlci5sZW5ndGgoKSwgYWRhcHRlcnMubGVuZ3RoKCkuLi4pOw0KICAgIGlm
IChzdW0uaGFzT3ZlcmZsb3dlZCgpKQ0KICAgICAgICByZXR1cm4gU3RyaW5nKCk7DQoNCiAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdW0udW5zYWZlR2V0KCk7DQogICAgKCh2b2lkKTApOw0KICAgIGlm
IChhcmU4Qml0KGFkYXB0ZXIsIGFkYXB0ZXJzLi4uKSkgew0KICAgICAgICBMQ2hhciogYnVmZmVy
Ow0KICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOw0KICAgICAgICBpZiAoIXJlc3Vs
dEltcGwpDQogICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7DQoNCiAgICAgICAgc3RyaW5nVHlw
ZUFkYXB0ZXJBY2N1bXVsYXRvcihidWZmZXIsIGFkYXB0ZXIsIGFkYXB0ZXJzLi4uKTsNCg0KICAg
ICAgICByZXR1cm4gcmVzdWx0SW1wbDsNCiAgICB9DQoNCiAgICBVQ2hhciogYnVmZmVyOw0KICAg
IFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7DQogICAgaWYgKCFyZXN1bHRJbXBsKQ0KICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7DQoNCiAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKGJ1
ZmZlciwgYWRhcHRlciwgYWRhcHRlcnMuLi4pOw0KDQogICAgcmV0dXJuIHJlc3VsdEltcGw7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPg0KU3RyaW5nIHRyeU1ha2VTdHJp
bmcoU3RyaW5nVHlwZXMgLi4uc3RyaW5ncykNCnsNCiAgICByZXR1cm4gdHJ5TWFrZVN0cmluZ0Zy
b21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlcz4oc3RyaW5ncykuLi4pOw0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4NClN0cmluZyBtYWtlU3RyaW5n
KFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpDQp7DQogICAgU3RyaW5nIHJlc3VsdCA9IHRyeU1ha2VT
dHJpbmcoc3RyaW5ncy4uLik7DQogICAgaWYgKCFyZXN1bHQpDQogICAgICAgIFdURkNyYXNoKCk7
DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjpJbmRlbnRhdGlvbjsN
CnVzaW5nIFdURjo6SW5kZW50YXRpb25TY29wZTsNCnVzaW5nIFdURjo6bWFrZVN0cmluZzsNCnVz
aW5nIFdURjo6cGFkOw0KdXNpbmcgV1RGOjpsb3dlcmNhc2U7DQp1c2luZyBXVEY6OnRyeU1ha2VT
dHJpbmc7DQp1c2luZyBXVEY6OnVwcGVyY2FzZTsNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdPcGVy
YXRvcnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmlu
Z1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4gY2xhc3MgU3RyaW5nQXBwZW5kIHsNCnB1Ymxp
YzoNCiAgICBTdHJpbmdBcHBlbmQoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3Ry
aW5nMikNCiAgICAgICAgOiBtX3N0cmluZzEgeyBzdHJpbmcxIH0NCiAgICAgICAgLCBtX3N0cmlu
ZzIgeyBzdHJpbmcyIH0NCiAgICB7DQogICAgfQ0KDQogICAgb3BlcmF0b3IgU3RyaW5nKCkgY29u
c3QNCiAgICB7DQogICAgICAgIFN0cmluZyByZXN1bHQgPSB0cnlNYWtlU3RyaW5nKG1fc3RyaW5n
MSwgbV9zdHJpbmcyKTsNCiAgICAgICAgaWYgKCFyZXN1bHQpDQogICAgICAgICAgICBXVEZDcmFz
aCgpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIG9wZXJhdG9yIEF0b21T
dHJpbmcoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG9wZXJhdG9yIFN0cmluZygpOw0K
ICAgIH0NCg0KICAgIGJvb2wgaXM4Qml0KCkNCiAgICB7DQogICAgICAgIFN0cmluZ1R5cGVBZGFw
dGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShtX3N0cmluZzEpOw0KICAgICAgICBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIobV9zdHJpbmcyKTsNCiAgICAgICAgcmV0dXJu
IGFkYXB0ZXIxLmlzOEJpdCgpICYmIGFkYXB0ZXIyLmlzOEJpdCgpOw0KICAgIH0NCg0KICAgIHZv
aWQgd3JpdGVUbyhMQ2hhciogZGVzdGluYXRpb24pDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShtX3N0cmlu
ZzEpOw0KICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIobV9z
dHJpbmcyKTsNCiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhkZXN0aW5hdGlvbik7DQogICAgICAg
IGFkYXB0ZXIyLndyaXRlVG8oZGVzdGluYXRpb24gKyBhZGFwdGVyMS5sZW5ndGgoKSk7DQogICAg
fQ0KDQogICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikNCiAgICB7DQogICAgICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShtX3N0cmluZzEpOw0KICAg
ICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIobV9zdHJpbmcyKTsN
CiAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhkZXN0aW5hdGlvbik7DQogICAgICAgIGFkYXB0ZXIy
LndyaXRlVG8oZGVzdGluYXRpb24gKyBhZGFwdGVyMS5sZW5ndGgoKSk7DQogICAgfQ0KDQogICAg
dW5zaWduZWQgbGVuZ3RoKCkNCiAgICB7DQogICAgICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z1R5cGUxPiBhZGFwdGVyMShtX3N0cmluZzEpOw0KICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlMj4gYWRhcHRlcjIobV9zdHJpbmcyKTsNCiAgICAgICAgcmV0dXJuIGFkYXB0ZXIx
Lmxlbmd0aCgpICsgYWRhcHRlcjIubGVuZ3RoKCk7DQogICAgfSAgICANCg0KcHJpdmF0ZToNCiAg
ICBTdHJpbmdUeXBlMSBtX3N0cmluZzE7DQogICAgU3RyaW5nVHlwZTIgbV9zdHJpbmcyOw0KfTsN
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyPg0K
Y2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nQXBwZW5kPFN0cmluZ1R5cGUxLCBTdHJpbmdU
eXBlMj4+IHsNCnB1YmxpYzoNCiAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdBcHBlbmQ8U3Ry
aW5nVHlwZTEsIFN0cmluZ1R5cGUyPj4oU3RyaW5nQXBwZW5kPFN0cmluZ1R5cGUxLCBTdHJpbmdU
eXBlMj4mIGJ1ZmZlcikNCiAgICAgICAgOiBtX2J1ZmZlciB7IGJ1ZmZlciB9DQogICAgew0KICAg
IH0NCg0KICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmxlbmd0
aCgpOyB9DQogICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pczhCaXQo
KTsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhD
aGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QgeyBtX2J1ZmZlci53cml0ZVRvKGRlc3Rp
bmF0aW9uKTsgfQ0KDQpwcml2YXRlOg0KICAgIFN0cmluZ0FwcGVuZDxTdHJpbmdUeXBlMSwgU3Ry
aW5nVHlwZTI+JiBtX2J1ZmZlcjsNCn07DQoNCmlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hh
ciosIFN0cmluZz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvbnN0IFN0cmluZyYg
c3RyaW5nMikNCnsNCiAgICByZXR1cm4gU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIqLCBTdHJpbmc+
KHN0cmluZzEsIHN0cmluZzIpOw0KfQ0KDQppbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIq
LCBBdG9tU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgY2hhciogc3RyaW5nMSwgY29uc3QgQXRvbVN0
cmluZyYgc3RyaW5nMikNCnsNCiAgICByZXR1cm4gU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIqLCBB
dG9tU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxzdGQ6OmRlY2F5X3Q8VD4s
IFN0cmluZ1ZpZXc+Ojp2YWx1ZT4+DQppbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIqLCBT
dHJpbmdWaWV3PiBvcGVyYXRvcisoY29uc3QgY2hhciogc3RyaW5nMSwgVCBzdHJpbmcyKQ0Kew0K
ICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIFN0cmluZ1ZpZXc+KHN0cmluZzEs
IHN0cmluZzIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KaW5saW5l
IFN0cmluZ0FwcGVuZDxjb25zdCBjaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+PiBvcGVyYXRvciso
Y29uc3QgY2hhciogc3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcyKQ0K
ew0KICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIFN0cmluZ0FwcGVuZDxVLCBW
Pj4oc3RyaW5nMSwgc3RyaW5nMik7DQp9DQoNCmlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNo
YXIqLCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwgY29uc3QgU3RyaW5n
JiBzdHJpbmcyKQ0Kew0KICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBTdHJp
bmc+KHN0cmluZzEsIHN0cmluZzIpOw0KfQ0KDQppbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0IFVD
aGFyKiwgQXRvbVN0cmluZz4gb3BlcmF0b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBB
dG9tU3RyaW5nJiBzdHJpbmcyKQ0Kew0KICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNo
YXIqLCBBdG9tU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxzdGQ6OmRlY2F5
X3Q8VD4sIFN0cmluZ1ZpZXc+Ojp2YWx1ZT4+DQppbmxpbmUgU3RyaW5nQXBwZW5kPGNvbnN0IFVD
aGFyKiwgU3RyaW5nVmlldz4gb3BlcmF0b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBUIHN0cmlu
ZzIpDQp7DQogICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZ1ZpZXc+
KHN0cmluZzEsIHN0cmluZzIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
Pg0KaW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmluZ0FwcGVuZDxVLCBWPj4g
b3BlcmF0b3IrKGNvbnN0IFVDaGFyKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4m
IHN0cmluZzIpDQp7DQogICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxjb25zdCBVQ2hhciosIFN0cmlu
Z0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7DQp9DQoNCmlubGluZSBTdHJpbmdBcHBl
bmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWwmIHN0
cmluZzEsIGNvbnN0IFN0cmluZyYgc3RyaW5nMikNCnsNCiAgICByZXR1cm4gU3RyaW5nQXBwZW5k
PEFTQ0lJTGl0ZXJhbCwgU3RyaW5nPihzdHJpbmcxLCBzdHJpbmcyKTsNCn0NCg0KaW5saW5lIFN0
cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIEF0b21TdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBBU0NJ
SUxpdGVyYWwmIHN0cmluZzEsIGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZzIpDQp7DQogICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIEF0b21TdHJpbmc+KHN0cmluZzEsIHN0cmlu
ZzIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19zYW1lPHN0ZDo6ZGVjYXlfdDxUPiwgU3RyaW5nVmlldz46OnZhbHVlPj4NCmlu
bGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmdWaWV3PiBvcGVyYXRvcisoY29u
c3QgQVNDSUlMaXRlcmFsJiBzdHJpbmcxLCBUIHN0cmluZzIpDQp7DQogICAgcmV0dXJuIFN0cmlu
Z0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0cmluZ1ZpZXc+KHN0cmluZzEsIHN0cmluZzIpOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KaW5saW5lIFN0cmluZ0FwcGVuZDxB
U0NJSUxpdGVyYWwsIFN0cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0
ZXJhbCYgc3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcyKQ0Kew0KICAg
IHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmdBcHBlbmQ8VSwgVj4+KHN0
cmluZzEsIHN0cmluZzIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KU3RyaW5nQXBwZW5k
PFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJpbmcyKQ0K
ew0KICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8U3RyaW5nLCBUPihzdHJpbmcxLCBzdHJpbmcyKTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxzdGQ6OmRlY2F5X3Q8VD4sIFN0cmluZ1ZpZXc+Ojp2YWx1
ZT4+DQpTdHJpbmdBcHBlbmQ8U3RyaW5nVmlldywgVT4gb3BlcmF0b3IrKFQgc3RyaW5nMSwgVSBz
dHJpbmcyKQ0Kew0KICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8U3RyaW5nVmlldywgVT4oc3RyaW5n
MSwgc3RyaW5nMik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFc+DQpTdHJpbmdBcHBlbmQ8U3RyaW5nQXBwZW5kPFUsIFY+LCBXPiBvcGVyYXRvcisoY29u
c3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcxLCBXIHN0cmluZzIpDQp7DQogICAgcmV0dXJu
IFN0cmluZ0FwcGVuZDxTdHJpbmdBcHBlbmQ8VSwgVj4sIFc+KHN0cmluZzEsIHN0cmluZzIpOw0K
fQ0KDQp9IA0KI2xpbmUgNDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgiDQojbGluZSAzNjgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L3RleHQvQXRvbVN0cmluZy5oIg0KI2xpbmUgMjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nSGFzaC5oIg0KDQoNCm5h
bWVzcGFjZSBXVEYgew0KDQogICAgaW5saW5lIGJvb2wgSGFzaFRyYWl0czxTdHJpbmc+Ojppc0Vt
cHR5VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCiAgICB7DQogICAgICAgIHJldHVybiB2YWx1
ZS5pc051bGwoKTsNCiAgICB9DQoNCiAgICBpbmxpbmUgdm9pZCBIYXNoVHJhaXRzPFN0cmluZz46
OmN1c3RvbURlbGV0ZUJ1Y2tldChTdHJpbmcmIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgDQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgU3RyaW5nIHZhbHVlVG9CZURlc3Ryb3llZCA9IHN0ZDo6
bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpOw0KICAgICAgICBjb25zdHJ1Y3RE
ZWxldGVkVmFsdWUodmFsdWUpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgDQog
ICAgDQogICAgDQoNCiAgICBzdHJ1Y3QgU3RyaW5nSGFzaCB7DQogICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKFN0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0NCiAgICAg
ICAgc3RhdGljIGlubGluZSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0
cmluZ0ltcGwqIGIpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKCph
LCAqYik7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBS
ZWZQdHI8U3RyaW5nSW1wbD4mIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0NCiAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUGFja2VkUHRyPFN0cmluZ0ltcGw+JiBrZXkpIHsg
cmV0dXJuIGtleS0+aGFzaCgpOyB9DQogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJl
ZlB0cjxTdHJpbmdJbXBsPiYgYSwgY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBiKQ0KICAgICAg
ICB7DQogICAgICAgICAgICByZXR1cm4gZXF1YWwoYS5nZXQoKSwgYi5nZXQoKSk7DQogICAgICAg
IH0NCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBh
LCBjb25zdCBTdHJpbmdJbXBsKiBiKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gZXF1
YWwoYS5nZXQoKSwgYik7DQogICAgICAgIH0NCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgU3RyaW5nSW1wbCogYSwgY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBiKQ0KICAgICAgICB7
DQogICAgICAgICAgICByZXR1cm4gZXF1YWwoYSwgYi5nZXQoKSk7DQogICAgICAgIH0NCg0KICAg
ICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBQYWNrZWRQdHI8U3RyaW5nSW1wbD4mIGEsIGNv
bnN0IFBhY2tlZFB0cjxTdHJpbmdJbXBsPiYgYikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0
dXJuIGVxdWFsKGEuZ2V0KCksIGIuZ2V0KCkpOw0KICAgICAgICB9DQogICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFBhY2tlZFB0cjxTdHJpbmdJbXBsPiYgYSwgY29uc3QgU3RyaW5nSW1w
bCogYikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEuZ2V0KCksIGIpOw0K
ICAgICAgICB9DQogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEs
IGNvbnN0IFBhY2tlZFB0cjxTdHJpbmdJbXBsPiYgYikNCiAgICAgICAgew0KICAgICAgICAgICAg
cmV0dXJuIGVxdWFsKGEsIGIuZ2V0KCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuIGtleS5pbXBsKCktPmhhc2go
KTsgfQ0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0
cmluZyYgYikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBi
LmltcGwoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsNCiAgICB9Ow0KDQogICAgc3RydWN0
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaCB7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
DQogICAgICAgIHN0cnVjdCBGb2xkQ2FzZSB7DQogICAgICAgICAgICBzdGF0aWMgaW5saW5lIFVD
aGFyIGNvbnZlcnQoVCBjaGFyYWN0ZXIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
cmV0dXJuIHRvQVNDSUlMb3dlcihjaGFyYWN0ZXIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
Ow0KDQogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVDaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFVDaGFyLCBGb2xkQ2FzZTxVQ2hhcj4+KGRhdGEs
IGxlbmd0aCk7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTdHJp
bmdJbXBsJiBzdHJpbmcpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
cmluZy5sZW5ndGgoKSk7DQogICAgICAgICAgICByZXR1cm4gaGFzaChzdHJpbmcuY2hhcmFjdGVy
czE2KCksIHN0cmluZy5sZW5ndGgoKSk7DQogICAgICAgIH0NCiAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goU3RyaW5nSW1wbCogc3RyaW5nKQ0KICAgICAgICB7DQogICAgICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgICAgICByZXR1cm4gaGFzaCgqc3RyaW5nKTsNCiAgICAgICAgfQ0KDQog
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExDaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzPExDaGFyLCBGb2xkQ2FzZTxMQ2hhcj4+KGRhdGEsIGxlbmd0
aCk7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGhhc2goY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQ0KICAgICAgICB7DQogICAgICAgICAgICBy
ZXR1cm4gaGFzaChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oZGF0YSksIGxlbmd0aCk7
DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChj
b25zdCBTdHJpbmdJbXBsJiBhLCBjb25zdCBTdHJpbmdJbXBsJiBiKQ0KICAgICAgICB7DQogICAg
ICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLCBiKTsNCiAgICAgICAgfQ0K
ICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29u
c3QgU3RyaW5nSW1wbCogYikNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIGVxdWFsKCphLCAqYik7DQog
ICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8U3Ry
aW5nSW1wbD4mIGtleSkgDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBoYXNoKGtleS5n
ZXQoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZWZQ
dHI8U3RyaW5nSW1wbD4mIGEsIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYikNCiAgICAgICAg
ew0KICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEuZ2V0KCksIGIuZ2V0KCkpOw0KICAgICAgICB9
DQoNCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUGFja2VkUHRyPFN0cmluZ0lt
cGw+JiBrZXkpIA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gaGFzaChrZXkuZ2V0KCkp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUGFja2VkUHRy
PFN0cmluZ0ltcGw+JiBhLCBjb25zdCBQYWNrZWRQdHI8U3RyaW5nSW1wbD4mIGIpDQogICAgICAg
IHsNCiAgICAgICAgICAgIHJldHVybiBlcXVhbChhLmdldCgpLCBiLmdldCgpKTsNCiAgICAgICAg
fQ0KDQogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN0cmluZyYga2V5KQ0KICAg
ICAgICB7DQogICAgICAgICAgICByZXR1cm4gaGFzaChrZXkuaW1wbCgpKTsNCiAgICAgICAgfQ0K
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBBdG9tU3RyaW5nJiBrZXkpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIHJldHVybiBoYXNoKGtleS5pbXBsKCkpOw0KICAgICAgICB9DQog
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBi
KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgp
KTsNCiAgICAgICAgfQ0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBBdG9tU3RyaW5n
JiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKQ0KICAgICAgICB7DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIGEgPT0gYiB8fCBlcXVhbChhLmltcGwoKSwgYi5p
bXBsKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7DQogICAgfTsNCg0KICAgIA0KICAgIA0K
ICAgIA0KICAgIHN0cnVjdCBBbHJlYWR5SGFzaGVkIDogSW50SGFzaDx1bnNpZ25lZD4gew0KICAg
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaCh1bnNpZ25lZCBrZXkpIHsgcmV0dXJuIGtleTsgfQ0K
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBzdGF0aWMg
dW5zaWduZWQgYXZvaWREZWxldGVkVmFsdWUodW5zaWduZWQgaGFzaCkNCiAgICAgICAgew0KICAg
ICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgdW5zaWduZWQgbmV3SGFzaCA9IGhhc2gg
fCAoIShoYXNoICsgMSkgPDwgMzEpOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIG5ld0hhc2g7DQogICAgICAgIH0NCiAg
ICB9Ow0KDQogICAgDQogICAgDQogICAgc3RydWN0IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlU3RyaW5n
Vmlld0hhc2hUcmFuc2xhdG9yIHsNCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5n
VmlldyBrZXkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChrZXkuaXM4Qml0KCkpDQogICAg
ICAgICAgICAgICAgcmV0dXJuIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaDo6aGFzaChrZXkuY2hh
cmFjdGVyczgoKSwga2V5Lmxlbmd0aCgpKTsNCiAgICAgICAgICAgIHJldHVybiBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g6Omhhc2goa2V5LmNoYXJhY3RlcnMxNigpLCBrZXkubGVuZ3RoKCkpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nJiBhLCBT
dHJpbmdWaWV3IGIpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlQ29tbW9uKGEsIGIpOw0KICAgICAgICB9DQogICAgfTsNCg0KICAgIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPFN0cmluZ0ltcGwqPiA6IFN0cmluZ0hhc2ggeyB9Ow0KICAg
IHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFJlZlB0cjxTdHJpbmdJbXBsPj4gOiBTdHJp
bmdIYXNoIHsgfTsNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxQYWNrZWRQdHI8
U3RyaW5nSW1wbD4+IDogU3RyaW5nSGFzaCB7IH07DQogICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8U3RyaW5nPiA6IFN0cmluZ0hhc2ggeyB9Ow0KfQ0KDQp1c2luZyBXVEY6OkFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaDsNCnVzaW5nIFdURjo6QVNDSUlDYXNlSW5zZW5zaXRpdmVTdHJp
bmdWaWV3SGFzaFRyYW5zbGF0b3I7DQp1c2luZyBXVEY6OkFscmVhZHlIYXNoZWQ7DQp1c2luZyBX
VEY6OlN0cmluZ0hhc2g7DQojbGluZSAzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvSlNPTlZhbHVlcy5oIg0KDQoNCm5hbWVzcGFjZSBX
VEYgew0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU09OSW1wbCB7DQoNCmNsYXNzIEFycmF5Ow0KY2xh
c3MgQXJyYXlCYXNlOw0KY2xhc3MgT2JqZWN0Ow0KY2xhc3MgT2JqZWN0QmFzZTsNCg0KDQpjbGFz
cyBfX2RlY2xzcGVjKGRsbGltcG9ydCkgVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxWYWx1ZT4g
ew0KcHVibGljOg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heERlcHRoID0gMTAwMDsNCg0K
ICAgIHZpcnR1YWwgflZhbHVlKCkNCiAgICB7DQogICAgICAgIHN3aXRjaCAobV90eXBlKSB7DQog
ICAgICAgIGNhc2UgVHlwZTo6TnVsbDoNCiAgICAgICAgY2FzZSBUeXBlOjpCb29sZWFuOg0KICAg
ICAgICBjYXNlIFR5cGU6OkRvdWJsZToNCiAgICAgICAgY2FzZSBUeXBlOjpJbnRlZ2VyOg0KICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgVHlwZTo6U3RyaW5nOg0KICAgICAgICAgICAg
aWYgKG1fdmFsdWUuc3RyaW5nKQ0KICAgICAgICAgICAgICAgIG1fdmFsdWUuc3RyaW5nLT5kZXJl
ZigpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgVHlwZTo6T2JqZWN0Og0KICAg
ICAgICBjYXNlIFR5cGU6OkFycmF5Og0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAg
ICB9DQoNCiAgICBzdGF0aWMgUmVmPFZhbHVlPiBudWxsKCk7DQogICAgc3RhdGljIFJlZjxWYWx1
ZT4gY3JlYXRlKGJvb2wpOw0KICAgIHN0YXRpYyBSZWY8VmFsdWU+IGNyZWF0ZShpbnQpOw0KICAg
IHN0YXRpYyBSZWY8VmFsdWU+IGNyZWF0ZShkb3VibGUpOw0KICAgIHN0YXRpYyBSZWY8VmFsdWU+
IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsNCiAgICBzdGF0aWMgUmVmPFZhbHVlPiBjcmVhdGUoY29u
c3QgY2hhciopOw0KDQogICAgZW51bSBjbGFzcyBUeXBlIHsNCiAgICAgICAgTnVsbCA9IDAsDQog
ICAgICAgIEJvb2xlYW4sDQogICAgICAgIERvdWJsZSwNCiAgICAgICAgSW50ZWdlciwNCiAgICAg
ICAgU3RyaW5nLA0KICAgICAgICBPYmplY3QsDQogICAgICAgIEFycmF5LA0KICAgIH07DQoNCiAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0NCiAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpOdWxsOyB9DQoNCiAgICBib29sIGFzQm9v
bGVhbihib29sJikgY29uc3Q7DQogICAgYm9vbCBhc0ludGVnZXIoaW50JikgY29uc3Q7DQogICAg
Ym9vbCBhc0ludGVnZXIodW5zaWduZWQmKSBjb25zdDsNCiAgICBib29sIGFzSW50ZWdlcihsb25n
JikgY29uc3Q7DQogICAgYm9vbCBhc0ludGVnZXIobG9uZyBsb25nJikgY29uc3Q7DQogICAgYm9v
bCBhc0ludGVnZXIodW5zaWduZWQgbG9uZyYpIGNvbnN0Ow0KICAgIGJvb2wgYXNJbnRlZ2VyKHVu
c2lnbmVkIGxvbmcgbG9uZyYpIGNvbnN0Ow0KICAgIGJvb2wgYXNEb3VibGUoZG91YmxlJikgY29u
c3Q7DQogICAgYm9vbCBhc0RvdWJsZShmbG9hdCYpIGNvbnN0Ow0KICAgIGJvb2wgYXNTdHJpbmco
U3RyaW5nJikgY29uc3Q7DQogICAgYm9vbCBhc1ZhbHVlKFJlZlB0cjxWYWx1ZT4mKTsNCg0KICAg
IHZpcnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8T2JqZWN0PiYpOw0KICAgIHZpcnR1YWwgYm9v
bCBhc0FycmF5KFJlZlB0cjxBcnJheT4mKTsNCg0KICAgIHN0YXRpYyBib29sIHBhcnNlSlNPTihj
b25zdCBTdHJpbmcmIGpzb25JbnB1dCwgUmVmUHRyPFZhbHVlPiYgb3V0cHV0KTsNCiAgICBzdGF0
aWMgdm9pZCBlc2NhcGVTdHJpbmcoU3RyaW5nQnVpbGRlciYsIFN0cmluZ1ZpZXcpOw0KDQogICAg
U3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0Ow0KICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04o
U3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25zdDsNCg0KICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9y
eUNvc3QoKSBjb25zdDsNCg0KcHJvdGVjdGVkOg0KICAgIFZhbHVlKCkNCiAgICAgICAgOiBtX3R5
cGUgeyBUeXBlOjpOdWxsIH0NCiAgICB7DQogICAgfQ0KDQogICAgZXhwbGljaXQgVmFsdWUoVHlw
ZSB0eXBlKQ0KICAgICAgICA6IG1fdHlwZSh0eXBlKQ0KICAgIHsNCiAgICB9DQoNCiAgICBleHBs
aWNpdCBWYWx1ZShib29sIHZhbHVlKQ0KICAgICAgICA6IG1fdHlwZSB7IFR5cGU6OkJvb2xlYW4g
fQ0KICAgIHsNCiAgICAgICAgbV92YWx1ZS5ib29sZWFuID0gdmFsdWU7DQogICAgfQ0KDQogICAg
ZXhwbGljaXQgVmFsdWUoaW50IHZhbHVlKQ0KICAgICAgICA6IG1fdHlwZSB7IFR5cGU6OkludGVn
ZXIgfQ0KICAgIHsNCiAgICAgICAgbV92YWx1ZS5udW1iZXIgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KHZhbHVlKTsNCiAgICB9DQoNCiAgICBleHBsaWNpdCBWYWx1ZShkb3VibGUgdmFsdWUpDQogICAg
ICAgIDogbV90eXBlKFR5cGU6OkRvdWJsZSkNCiAgICB7DQogICAgICAgIG1fdmFsdWUubnVtYmVy
ID0gdmFsdWU7DQogICAgfQ0KDQogICAgZXhwbGljaXQgVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1
ZSkNCiAgICAgICAgOiBtX3R5cGUgeyBUeXBlOjpTdHJpbmcgfQ0KICAgIHsNCiAgICAgICAgbV92
YWx1ZS5zdHJpbmcgPSB2YWx1ZS5pbXBsKCk7DQogICAgICAgIGlmIChtX3ZhbHVlLnN0cmluZykN
CiAgICAgICAgICAgIG1fdmFsdWUuc3RyaW5nLT5yZWYoKTsNCiAgICB9DQoNCiAgICBleHBsaWNp
dCBWYWx1ZShjb25zdCBjaGFyKiB2YWx1ZSkNCiAgICAgICAgOiBtX3R5cGUgeyBUeXBlOjpTdHJp
bmcgfQ0KICAgIHsNCiAgICAgICAgU3RyaW5nIHdyYXBwZXIodmFsdWUpOw0KICAgICAgICBtX3Zh
bHVlLnN0cmluZyA9IHdyYXBwZXIuaW1wbCgpOw0KICAgICAgICBpZiAobV92YWx1ZS5zdHJpbmcp
DQogICAgICAgICAgICBtX3ZhbHVlLnN0cmluZy0+cmVmKCk7DQogICAgfQ0KDQpwcml2YXRlOg0K
ICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6TnVsbCB9Ow0KICAgIHVuaW9uIHsNCiAgICAgICAgYm9v
bCBib29sZWFuOw0KICAgICAgICBkb3VibGUgbnVtYmVyOw0KICAgICAgICBTdHJpbmdJbXBsKiBz
dHJpbmc7DQogICAgfSBtX3ZhbHVlOw0KfTsNCg0KY2xhc3MgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IE9iamVjdEJhc2UgOiBwdWJsaWMgVmFsdWUgew0KcHJpdmF0ZToNCiAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8VmFsdWU+PiBEaWN0aW9uYXJ5Ow0KDQpwdWJsaWM6DQogICAgdHlw
ZWRlZiBEaWN0aW9uYXJ5OjppdGVyYXRvciBpdGVyYXRvcjsNCiAgICB0eXBlZGVmIERpY3Rpb25h
cnk6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOw0KDQogICAgT2JqZWN0KiBvcGVuQWNj
ZXNzb3JzKCk7DQoNCiAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IGZpbmFsOw0KDQpwcm90
ZWN0ZWQ6DQogICAgfk9iamVjdEJhc2UoKSBvdmVycmlkZTsNCg0KICAgIGJvb2wgYXNPYmplY3Qo
UmVmUHRyPE9iamVjdD4mIG91dHB1dCkgb3ZlcnJpZGU7DQoNCiAgICANCiAgICB2b2lkIHNldEJv
b2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKTsNCiAgICB2b2lkIHNldEludGVnZXIoY29u
c3QgU3RyaW5nJiBuYW1lLCBpbnQpOw0KICAgIHZvaWQgc2V0RG91YmxlKGNvbnN0IFN0cmluZyYg
bmFtZSwgZG91YmxlKTsNCiAgICB2b2lkIHNldFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYpOw0KICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQ
dHI8VmFsdWU+JiYpOw0KICAgIHZvaWQgc2V0T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgUmVm
UHRyPE9iamVjdEJhc2U+JiYpOw0KICAgIHZvaWQgc2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1l
LCBSZWZQdHI8QXJyYXlCYXNlPiYmKTsNCg0KICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgU3RyaW5n
JiBuYW1lKTsNCiAgICBjb25zdF9pdGVyYXRvciBmaW5kKGNvbnN0IFN0cmluZyYgbmFtZSkgY29u
c3Q7DQoNCiAgICANCiAgICBib29sIGdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
JiBvdXRwdXQpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgZ2V0RG91YmxlKGNv
bnN0IFN0cmluZyYgbmFtZSwgVCYgb3V0cHV0KSBjb25zdA0KICAgIHsNCiAgICAgICAgUmVmUHRy
PFZhbHVlPiB2YWx1ZTsNCiAgICAgICAgaWYgKCFnZXRWYWx1ZShuYW1lLCB2YWx1ZSkpDQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAgcmV0dXJuIHZhbHVlLT5hc0RvdWJsZShv
dXRwdXQpOw0KICAgIH0NCiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBib29sIGdldEludGVnZXIoY29u
c3QgU3RyaW5nJiBuYW1lLCBUJiBvdXRwdXQpIGNvbnN0DQogICAgew0KICAgICAgICBSZWZQdHI8
VmFsdWU+IHZhbHVlOw0KICAgICAgICBpZiAoIWdldFZhbHVlKG5hbWUsIHZhbHVlKSkNCiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgICAgICByZXR1cm4gdmFsdWUtPmFzSW50ZWdlcihv
dXRwdXQpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPGNsYXNzIFQ+IE9wdGlvbmFsPFQ+IGdldE51
bWJlcihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0DQogICAgew0KICAgICAgICBSZWZQdHI8VmFs
dWU+IHZhbHVlOw0KICAgICAgICBpZiAoIWdldFZhbHVlKG5hbWUsIHZhbHVlKSkNCiAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7DQoNCiAgICAgICAgVCByZXN1bHQ7DQogICAgICAgIGlm
ICghdmFsdWUtPmFzRG91YmxlKHJlc3VsdCkpDQogICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0Ow0KDQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgYm9vbCBnZXRTdHJp
bmcoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIG91dHB1dCkgY29uc3Q7DQogICAgYm9vbCBn
ZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8T2JqZWN0PiYpIGNvbnN0Ow0KICAg
IGJvb2wgZ2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8QXJyYXk+JikgY29uc3Q7
DQogICAgYm9vbCBnZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxWYWx1ZT4mKSBj
b25zdDsNCg0KICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSk7DQoNCiAgICB2b2lk
IHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOw0KDQogICAg
aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9DQogICAgaXRlcmF0b3Ig
ZW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0NCiAgICBjb25zdF9pdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0NCiAgICBjb25zdF9pdGVyYXRvciBlbmQo
KSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQ0KDQogICAgaW50IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX21hcC5zaXplKCk7IH0NCg0KcHJvdGVjdGVkOg0KICAgIE9iamVjdEJhc2UoKTsN
Cg0KcHJpdmF0ZToNCiAgICBEaWN0aW9uYXJ5IG1fbWFwOw0KICAgIFZlY3RvcjxTdHJpbmc+IG1f
b3JkZXI7DQp9Ow0KDQpjbGFzcyBPYmplY3QgOiBwdWJsaWMgT2JqZWN0QmFzZSB7DQpwdWJsaWM6
DQogICAgc3RhdGljIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBSZWY8T2JqZWN0PiBjcmVhdGUoKTsN
Cg0KICAgIHVzaW5nIE9iamVjdEJhc2U6OmFzT2JqZWN0Ow0KDQogICAgDQogICAgdXNpbmcgT2Jq
ZWN0QmFzZTo6c2V0Qm9vbGVhbjsNCiAgICB1c2luZyBPYmplY3RCYXNlOjpzZXRJbnRlZ2VyOw0K
ICAgIHVzaW5nIE9iamVjdEJhc2U6OnNldERvdWJsZTsNCiAgICB1c2luZyBPYmplY3RCYXNlOjpz
ZXRTdHJpbmc7DQogICAgdXNpbmcgT2JqZWN0QmFzZTo6c2V0VmFsdWU7DQogICAgdXNpbmcgT2Jq
ZWN0QmFzZTo6c2V0T2JqZWN0Ow0KICAgIHVzaW5nIE9iamVjdEJhc2U6OnNldEFycmF5Ow0KDQog
ICAgdXNpbmcgT2JqZWN0QmFzZTo6ZmluZDsNCiAgICB1c2luZyBPYmplY3RCYXNlOjpnZXRCb29s
ZWFuOw0KICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldEludGVnZXI7DQogICAgdXNpbmcgT2JqZWN0
QmFzZTo6Z2V0RG91YmxlOw0KICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldE51bWJlcjsNCiAgICB1
c2luZyBPYmplY3RCYXNlOjpnZXRTdHJpbmc7DQogICAgdXNpbmcgT2JqZWN0QmFzZTo6Z2V0T2Jq
ZWN0Ow0KICAgIHVzaW5nIE9iamVjdEJhc2U6OmdldEFycmF5Ow0KICAgIHVzaW5nIE9iamVjdEJh
c2U6OmdldFZhbHVlOw0KDQogICAgdXNpbmcgT2JqZWN0QmFzZTo6cmVtb3ZlOw0KDQogICAgdXNp
bmcgT2JqZWN0QmFzZTo6YmVnaW47DQogICAgdXNpbmcgT2JqZWN0QmFzZTo6ZW5kOw0KDQogICAg
dXNpbmcgT2JqZWN0QmFzZTo6c2l6ZTsNCn07DQoNCg0KY2xhc3MgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIEFycmF5QmFzZSA6IHB1YmxpYyBWYWx1ZSB7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPFZhbHVlPj46Oml0ZXJhdG9yIGl0ZXJhdG9yOw0KICAgIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxWYWx1ZT4+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsNCg0KICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX21h
cC5zaXplKCkpOyB9DQoNCiAgICBSZWZQdHI8VmFsdWU+IGdldChzaXplX3QgaW5kZXgpIGNvbnN0
Ow0KDQogICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBmaW5hbDsNCg0KcHJvdGVjdGVkOg0K
ICAgIH5BcnJheUJhc2UoKSBvdmVycmlkZTsNCg0KICAgIGJvb2wgYXNBcnJheShSZWZQdHI8QXJy
YXk+Jikgb3ZlcnJpZGU7DQoNCiAgICB2b2lkIHB1c2hCb29sZWFuKGJvb2wpOw0KICAgIHZvaWQg
cHVzaEludGVnZXIoaW50KTsNCiAgICB2b2lkIHB1c2hEb3VibGUoZG91YmxlKTsNCiAgICB2b2lk
IHB1c2hTdHJpbmcoY29uc3QgU3RyaW5nJik7DQogICAgdm9pZCBwdXNoVmFsdWUoUmVmUHRyPFZh
bHVlPiYmKTsNCiAgICB2b2lkIHB1c2hPYmplY3QoUmVmUHRyPE9iamVjdEJhc2U+JiYpOw0KICAg
IHZvaWQgcHVzaEFycmF5KFJlZlB0cjxBcnJheUJhc2U+JiYpOw0KDQogICAgdm9pZCB3cml0ZUpT
T04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25zdCBvdmVycmlkZTsNCg0KICAgIGl0ZXJhdG9y
IGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQ0KICAgIGl0ZXJhdG9yIGVuZCgpIHsg
cmV0dXJuIG1fbWFwLmVuZCgpOyB9DQogICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX21hcC5iZWdpbigpOyB9DQogICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXAuZW5kKCk7IH0NCg0KcHJvdGVjdGVkOg0KICAgIEFycmF5QmFzZSgpOw0K
DQpwcml2YXRlOg0KICAgIFZlY3RvcjxSZWZQdHI8VmFsdWU+PiBtX21hcDsNCn07DQoNCmNsYXNz
IEFycmF5IDogcHVibGljIEFycmF5QmFzZSB7DQpwdWJsaWM6DQogICAgc3RhdGljIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBSZWY8QXJyYXk+IGNyZWF0ZSgpOw0KDQogICAgdXNpbmcgQXJyYXlCYXNl
Ojphc0FycmF5Ow0KDQogICAgDQogICAgdXNpbmcgQXJyYXlCYXNlOjpwdXNoQm9vbGVhbjsNCiAg
ICB1c2luZyBBcnJheUJhc2U6OnB1c2hJbnRlZ2VyOw0KICAgIHVzaW5nIEFycmF5QmFzZTo6cHVz
aERvdWJsZTsNCiAgICB1c2luZyBBcnJheUJhc2U6OnB1c2hTdHJpbmc7DQogICAgdXNpbmcgQXJy
YXlCYXNlOjpwdXNoVmFsdWU7DQogICAgdXNpbmcgQXJyYXlCYXNlOjpwdXNoT2JqZWN0Ow0KICAg
IHVzaW5nIEFycmF5QmFzZTo6cHVzaEFycmF5Ow0KDQogICAgdXNpbmcgQXJyYXlCYXNlOjpnZXQ7
DQoNCiAgICB1c2luZyBBcnJheUJhc2U6OmJlZ2luOw0KICAgIHVzaW5nIEFycmF5QmFzZTo6ZW5k
Ow0KfTsNCg0KDQppbmxpbmUgT2JqZWN0QmFzZTo6aXRlcmF0b3IgT2JqZWN0QmFzZTo6ZmluZChj
b25zdCBTdHJpbmcmIG5hbWUpDQp7DQogICAgcmV0dXJuIG1fbWFwLmZpbmQobmFtZSk7DQp9DQoN
CmlubGluZSBPYmplY3RCYXNlOjpjb25zdF9pdGVyYXRvciBPYmplY3RCYXNlOjpmaW5kKGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9tYXAuZmluZChuYW1lKTsNCn0N
Cg0KaW5saW5lIHZvaWQgT2JqZWN0QmFzZTo6c2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgdmFsdWUpDQp7DQogICAgc2V0VmFsdWUobmFtZSwgVmFsdWU6OmNyZWF0ZSh2YWx1ZSkp
Ow0KfQ0KDQppbmxpbmUgdm9pZCBPYmplY3RCYXNlOjpzZXRJbnRlZ2VyKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50IHZhbHVlKQ0Kew0KICAgIHNldFZhbHVlKG5hbWUsIFZhbHVlOjpjcmVhdGUodmFs
dWUpKTsNCn0NCg0KaW5saW5lIHZvaWQgT2JqZWN0QmFzZTo6c2V0RG91YmxlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgZG91YmxlIHZhbHVlKQ0Kew0KICAgIHNldFZhbHVlKG5hbWUsIFZhbHVlOjpjcmVh
dGUodmFsdWUpKTsNCn0NCg0KaW5saW5lIHZvaWQgT2JqZWN0QmFzZTo6c2V0U3RyaW5nKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkNCnsNCiAgICBzZXRWYWx1ZShuYW1l
LCBWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7DQp9DQoNCmlubGluZSB2b2lkIE9iamVjdEJhc2U6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmUHRyPFZhbHVlPiYmIHZhbHVlKQ0Kew0KICAg
ICgodm9pZCkwKTsNCiAgICBpZiAobV9tYXAuc2V0KG5hbWUsIHN0ZDo6bW92ZTxXVEY6OkNoZWNr
TW92ZVBhcmFtZXRlcj4odmFsdWUpKS5pc05ld0VudHJ5KQ0KICAgICAgICBtX29yZGVyLmFwcGVu
ZChuYW1lKTsNCn0NCg0KaW5saW5lIHZvaWQgT2JqZWN0QmFzZTo6c2V0T2JqZWN0KGNvbnN0IFN0
cmluZyYgbmFtZSwgUmVmUHRyPE9iamVjdEJhc2U+JiYgdmFsdWUpDQp7DQogICAgKCh2b2lkKTAp
Ow0KICAgIGlmIChtX21hcC5zZXQobmFtZSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1l
dGVyPih2YWx1ZSkpLmlzTmV3RW50cnkpDQogICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOw0K
fQ0KDQppbmxpbmUgdm9pZCBPYmplY3RCYXNlOjpzZXRBcnJheShjb25zdCBTdHJpbmcmIG5hbWUs
IFJlZlB0cjxBcnJheUJhc2U+JiYgdmFsdWUpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIGlmICht
X21hcC5zZXQobmFtZSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkp
LmlzTmV3RW50cnkpDQogICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOw0KfQ0KDQppbmxpbmUg
dm9pZCBBcnJheUJhc2U6OnB1c2hCb29sZWFuKGJvb2wgdmFsdWUpDQp7DQogICAgbV9tYXAuYXBw
ZW5kKFZhbHVlOjpjcmVhdGUodmFsdWUpKTsNCn0NCg0KaW5saW5lIHZvaWQgQXJyYXlCYXNlOjpw
dXNoSW50ZWdlcihpbnQgdmFsdWUpDQp7DQogICAgbV9tYXAuYXBwZW5kKFZhbHVlOjpjcmVhdGUo
dmFsdWUpKTsNCn0NCg0KaW5saW5lIHZvaWQgQXJyYXlCYXNlOjpwdXNoRG91YmxlKGRvdWJsZSB2
YWx1ZSkNCnsNCiAgICBtX21hcC5hcHBlbmQoVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOw0KfQ0KDQpp
bmxpbmUgdm9pZCBBcnJheUJhc2U6OnB1c2hTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkNCnsN
CiAgICBtX21hcC5hcHBlbmQoVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOw0KfQ0KDQppbmxpbmUgdm9p
ZCBBcnJheUJhc2U6OnB1c2hWYWx1ZShSZWZQdHI8VmFsdWU+JiYgdmFsdWUpDQp7DQogICAgKCh2
b2lkKTApOw0KICAgIG1fbWFwLmFwcGVuZChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0
ZXI+KHZhbHVlKSk7DQp9DQoNCmlubGluZSB2b2lkIEFycmF5QmFzZTo6cHVzaE9iamVjdChSZWZQ
dHI8T2JqZWN0QmFzZT4mJiB2YWx1ZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgbV9tYXAuYXBw
ZW5kKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpKTsNCn0NCg0KaW5s
aW5lIHZvaWQgQXJyYXlCYXNlOjpwdXNoQXJyYXkoUmVmUHRyPEFycmF5QmFzZT4mJiB2YWx1ZSkN
CnsNCiAgICAoKHZvaWQpMCk7DQogICAgbV9tYXAuYXBwZW5kKHN0ZDo6bW92ZTxXVEY6OkNoZWNr
TW92ZVBhcmFtZXRlcj4odmFsdWUpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmNsYXNz
IEFycmF5T2YgOiBwdWJsaWMgQXJyYXlCYXNlIHsNCnByaXZhdGU6DQogICAgQXJyYXlPZigpIHsg
fQ0KDQogICAgQXJyYXkmIGNhc3RlZEFycmF5KCkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3Nl
cnQoKHNpemVvZihBcnJheSkgPT0gc2l6ZW9mKEFycmF5T2Y8VD4pKSwgImNhbm5vdF9jYXN0Iik7
DQogICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8QXJyYXkqPihzdGF0aWNfY2FzdDxBcnJheUJh
c2UqPih0aGlzKSk7DQogICAgfQ0KDQpwdWJsaWM6DQogICAgdm9pZCBhZGRJdGVtKFJlZlB0cjxU
PiYmIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgY2FzdGVkQXJyYXkoKS5wdXNoVmFsdWUoc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIGFkZEl0ZW0oY29uc3QgU3RyaW5nJiB2YWx1ZSkNCiAgICB7DQogICAgICAgIGNhc3RlZEFy
cmF5KCkucHVzaFN0cmluZyh2YWx1ZSk7DQogICAgfQ0KDQogICAgdm9pZCBhZGRJdGVtKGludCB2
YWx1ZSkNCiAgICB7DQogICAgICAgIGNhc3RlZEFycmF5KCkucHVzaEludGVnZXIodmFsdWUpOw0K
ICAgIH0NCg0KICAgIHZvaWQgYWRkSXRlbShkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAgICBj
YXN0ZWRBcnJheSgpLnB1c2hEb3VibGUodmFsdWUpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBSZWY8
QXJyYXlPZjxUPj4gY3JlYXRlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFycmF5T2Y8VD4oKSk7DQogICAgfQ0KDQogICAgdXNpbmcgQXJyYXlCYXNlOjpnZXQ7DQogICAg
dXNpbmcgQXJyYXlCYXNlOjpiZWdpbjsNCiAgICB1c2luZyBBcnJheUJhc2U6OmVuZDsNCn07DQoN
Cn0gDQoNCn0gDQoNCm5hbWVzcGFjZSBKU09OIHsNCnVzaW5nIG5hbWVzcGFjZSBXVEY6OkpTT05J
bXBsOw0KfQ0KDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWVkaWFUaW1lLmgiDQoNCg0KDQoNCiNsaW5lIDEgIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxXaW5kb3dzIEtpdHNcXDEwXFxpbmNsdWRlXFwxMC4wLjE5MDQx
LjBcXHVjcnRcXG1hdGguaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM4
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9NZWRpYVRpbWUuaCINCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07
DQoNCmNsYXNzIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBNZWRpYVRpbWUgZmluYWwgew0KICAgIHB1
YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRG
YXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgZW51bSB7DQogICAgICAg
IFZhbGlkID0gMSA8PCAwLA0KICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwgMSwNCiAgICAg
ICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwNCiAgICAgICAgTmVnYXRpdmVJbmZpbml0ZSA9
IDEgPDwgMywNCiAgICAgICAgSW5kZWZpbml0ZSA9IDEgPDwgNCwNCiAgICAgICAgRG91YmxlVmFs
dWUgPSAxIDw8IDUsDQogICAgfTsNCg0KICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKTsNCiAgICBj
b25zdGV4cHIgTWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90
IGZsYWdzID0gVmFsaWQpOw0KICAgIE1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHJocyk7DQoN
CiAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUpOw0K
ICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgdWlu
dDMyX3QgdGltZVNjYWxlKTsNCiAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3VibGUo
ZG91YmxlIGRvdWJsZVRpbWUpOw0KICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aERvdWJs
ZShkb3VibGUgZG91YmxlVGltZSwgdWludDMyX3QgdGltZVNjYWxlKTsNCg0KICAgIGZsb2F0IHRv
RmxvYXQoKSBjb25zdDsNCiAgICBkb3VibGUgdG9Eb3VibGUoKSBjb25zdDsNCg0KICAgIE1lZGlh
VGltZSYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYgcmhzKTsNCiAgICBNZWRpYVRpbWUmIG9w
ZXJhdG9yKz0oY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuICp0aGlzID0gKnRoaXMgKyBy
aHM7IH0NCiAgICBNZWRpYVRpbWUmIG9wZXJhdG9yLT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIHsg
cmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0NCiAgICBNZWRpYVRpbWUgb3BlcmF0b3IrKGNv
bnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsNCiAgICBNZWRpYVRpbWUgb3BlcmF0b3ItKGNvbnN0
IE1lZGlhVGltZSYgcmhzKSBjb25zdDsNCiAgICBNZWRpYVRpbWUgb3BlcmF0b3ItKCkgY29uc3Q7
DQogICAgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQzMl90KSBjb25zdDsNCiAgICBib29sIG9wZXJh
dG9yPChjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpID09
IExlc3NUaGFuOyB9DQogICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNv
bnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBHcmVhdGVyVGhhbjsgfQ0KICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMp
ICE9IEVxdWFsVG87IH0NCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFUaW1lJiByaHMp
IGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9PSBFcXVhbFRvOyB9DQogICAgYm9vbCBvcGVy
YXRvcj49KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykg
Pj0gRXF1YWxUbzsgfQ0KICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBNZWRpYVRpbWUmIHJocykg
Y29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMpIDw9IEVxdWFsVG87IH0NCiAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0Ow0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsNCg0KICAg
IHR5cGVkZWYgZW51bSB7DQogICAgICAgIExlc3NUaGFuID0gLTEsDQogICAgICAgIEVxdWFsVG8g
PSAwLA0KICAgICAgICBHcmVhdGVyVGhhbiA9IDEsDQogICAgfSBDb21wYXJpc29uRmxhZ3M7DQoN
CiAgICBDb21wYXJpc29uRmxhZ3MgY29tcGFyZShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7
DQogICAgYm9vbCBpc0JldHdlZW4oY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikg
Y29uc3Q7DQoNCiAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAm
IFZhbGlkOyB9DQogICAgYm9vbCBpc0ludmFsaWQoKSBjb25zdCB7IHJldHVybiAhaXNWYWxpZCgp
OyB9DQogICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdz
ICYgSGFzQmVlblJvdW5kZWQ7IH0NCiAgICBib29sIGlzUG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgUG9zaXRpdmVJbmZpbml0ZTsgfQ0KICAgIGJvb2wgaXNO
ZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBOZWdhdGl2ZUlu
ZmluaXRlOyB9DQogICAgYm9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVG
bGFncyAmIEluZGVmaW5pdGU7IH0NCiAgICBib29sIGhhc0RvdWJsZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lRmxhZ3MgJiBEb3VibGVWYWx1ZTsgfQ0KICAgIHVpbnQ4X3QgdGltZUZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3M7IH0NCg0KICAgIHN0YXRpYyBjb25zdCBNZWRp
YVRpbWUmIHplcm9UaW1lKCk7DQogICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW52YWxpZFRp
bWUoKTsNCiAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZUluZmluaXRlVGltZSgp
Ow0KICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7DQog
ICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW5kZWZpbml0ZVRpbWUoKTsNCg0KICAgIGNvbnN0
IGludDY0X3QmIHRpbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVZhbHVlOyB9DQogICAg
Y29uc3QgdWludDMyX3QmIHRpbWVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVNjYWxlOyB9
DQoNCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7DQogICAgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3Q7DQogICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0Ow0KICAgIFJl
ZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0Ow0KDQogICAgDQogICAgb3BlcmF0
b3IgZG91YmxlKCkgY29uc3QgPSBkZWxldGU7DQogICAgTWVkaWFUaW1lKGRvdWJsZSkgPSBkZWxl
dGU7DQogICAgb3BlcmF0b3IgaW50KCkgY29uc3QgPSBkZWxldGU7DQogICAgTWVkaWFUaW1lKGlu
dCkgPSBkZWxldGU7DQoNCiAgICBmcmllbmQgX19kZWNsc3BlYyhkbGxpbXBvcnQpIE1lZGlhVGlt
ZSBhYnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOw0KDQogICAgc3RhdGljIGNvbnN0IHVpbnQzMl90
IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwMDAwMDsNCiAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qg
TWF4aW11bVRpbWVTY2FsZTsNCg0KICAgIGVudW0gY2xhc3MgUm91bmRpbmdGbGFncyB7DQogICAg
ICAgIEhhbGZBd2F5RnJvbVplcm8gPSAwLA0KICAgICAgICBUb3dhcmRaZXJvLA0KICAgICAgICBB
d2F5RnJvbVplcm8sDQogICAgICAgIFRvd2FyZFBvc2l0aXZlSW5maW5pdHksDQogICAgICAgIFRv
d2FyZE5lZ2F0aXZlSW5maW5pdHksDQogICAgfTsNCg0KICAgIE1lZGlhVGltZSB0b1RpbWVTY2Fs
ZSh1aW50MzJfdCwgUm91bmRpbmdGbGFncyA9IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVpl
cm8pIGNvbnN0Ow0KDQogICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyAgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIE1lZGlhVGltZSYpOw0KDQpwcml2YXRlOg0KICAgIHZvaWQgc2V0VGlt
ZVNjYWxlKHVpbnQzMl90LCBSb3VuZGluZ0ZsYWdzID0gUm91bmRpbmdGbGFnczo6SGFsZkF3YXlG
cm9tWmVybyk7DQoNCiAgICB1bmlvbiB7DQogICAgICAgIGludDY0X3QgbV90aW1lVmFsdWU7DQog
ICAgICAgIGRvdWJsZSBtX3RpbWVWYWx1ZUFzRG91YmxlOw0KICAgIH07DQogICAgdWludDMyX3Qg
bV90aW1lU2NhbGU7DQogICAgdWludDhfdCBtX3RpbWVGbGFnczsNCn07DQoNCmNvbnN0ZXhwciBN
ZWRpYVRpbWU6Ok1lZGlhVGltZSgpDQogICAgOiBtX3RpbWVWYWx1ZSgwKQ0KICAgICwgbV90aW1l
U2NhbGUoRGVmYXVsdFRpbWVTY2FsZSkNCiAgICAsIG1fdGltZUZsYWdzKFZhbGlkKQ0Kew0KfQ0K
DQpjb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgdWludDMyX3Qg
c2NhbGUsIHVpbnQ4X3QgZmxhZ3MpDQogICAgOiBtX3RpbWVWYWx1ZSh2YWx1ZSkNCiAgICAsIG1f
dGltZVNjYWxlKHNjYWxlKQ0KICAgICwgbV90aW1lRmxhZ3MoZmxhZ3MpDQp7DQogICAgaWYgKHNj
YWxlIHx8ICEoZmxhZ3MgJiBWYWxpZCkpDQogICAgICAgIHJldHVybjsNCg0KICAgICp0aGlzID0g
dmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1l
KCk7DQp9DQoNCmlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGludDMyX3QgbGhzLCBjb25zdCBN
ZWRpYVRpbWUmIHJocykgeyByZXR1cm4gcmhzLm9wZXJhdG9yKihsaHMpOyB9DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBleHRlcm4gTWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocyk7
DQoNCnN0cnVjdCBfX2RlY2xzcGVjKGRsbGltcG9ydCkgTWVkaWFUaW1lUmFuZ2Ugew0KICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9p
ZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRp
b24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxv
Y2VkID0gaW50OyB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvID0gaW50Ow0KDQogICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0Ow0KDQogICAgY29u
c3QgTWVkaWFUaW1lIHN0YXJ0Ow0KICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7DQp9Ow0KDQp0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPg0Kdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdA0Kew0KICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2NhbGUg
PDwgbV90aW1lRmxhZ3M7DQp9DQoNCnRlbXBsYXRlPGNsYXNzIERlY29kZXI+DQpib29sIE1lZGlh
VGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhVGltZSYgdGltZSkNCnsNCiAgICBy
ZXR1cm4gZGVjb2Rlci5kZWNvZGUodGltZS5tX3RpbWVWYWx1ZSkNCiAgICAgICAgJiYgZGVjb2Rl
ci5kZWNvZGUodGltZS5tX3RpbWVTY2FsZSkNCiAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGlt
ZS5tX3RpbWVGbGFncyk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTG9nQXJndW1l
bnQ7DQoNCnRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PE1lZGlhVGltZT4gew0KICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSB7IHJldHVybiB0aW1l
LnRvSlNPTlN0cmluZygpOyB9DQp9Ow0KdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVk
aWFUaW1lUmFuZ2U+IHsNCiAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1lZGlhVGlt
ZVJhbmdlJiByYW5nZSkgeyByZXR1cm4gcmFuZ2UudG9KU09OU3RyaW5nKCk7IH0NCn07DQoNCg0K
DQoNCg0KfQ0KDQp1c2luZyBXVEY6Ok1lZGlhVGltZTsNCnVzaW5nIFdURjo6TWVkaWFUaW1lUmFu
Z2U7DQp1c2luZyBXVEY6OmFiczsNCiNsaW5lIDM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L05vbm1vdmFibGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KI2xpbmUgMzkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZS5o
Ig0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9UcmlTdGF0ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIFdURiB7DQoNCmVu
dW0gY2xhc3MgVHJpU3RhdGUgOiB1aW50OF90IHsNCiAgICBGYWxzZSwNCiAgICBUcnVlLA0KICAg
IEluZGV0ZXJtaW5hdGUNCn07DQoNCmlubGluZSBUcmlTdGF0ZSB0cmlTdGF0ZShib29sIGJvb2xl
YW4pDQp7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFRyaVN0YXRlPihib29sZWFuKTsNCn0NCg0K
fQ0KDQp1c2luZyBXVEY6OlRyaVN0YXRlOw0KdXNpbmcgV1RGOjp0cmlTdGF0ZTsNCiNsaW5lIDQx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXEpTQ0pTVmFsdWUuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEFzc2VtYmx5SGVs
cGVyczsNCmNsYXNzIERlbGV0ZVByb3BlcnR5U2xvdDsNCmNsYXNzIEpTQmlnSW50Ow0KY2xhc3Mg
Q2FsbEZyYW1lOw0KY2xhc3MgSlNDZWxsOw0KY2xhc3MgSlNWYWx1ZVNvdXJjZTsNCmNsYXNzIFZN
Ow0KY2xhc3MgSlNHbG9iYWxPYmplY3Q7DQpjbGFzcyBKU09iamVjdDsNCmNsYXNzIEpTU3RyaW5n
Ow0KY2xhc3MgSWRlbnRpZmllcjsNCmNsYXNzIFByb3BlcnR5TmFtZTsNCmNsYXNzIFByb3BlcnR5
U2xvdDsNCmNsYXNzIFB1dFByb3BlcnR5U2xvdDsNCmNsYXNzIFN0cnVjdHVyZTsNCg0KbmFtZXNw
YWNlIERGRyB7DQpjbGFzcyBKSVRDb21waWxlcjsNCmNsYXNzIE9TUkV4aXRDb21waWxlcjsNCmNs
YXNzIFNwZWN1bGF0aXZlSklUOw0KfQ0KI2xpbmUgNjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZS5oIg0KDQoNCg0K
DQojbGluZSA3MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxKU0NKU1ZhbHVlLmgiDQoNCnN0cnVjdCBDbGFzc0luZm87DQpzdHJ1Y3Qg
RHVtcENvbnRleHQ7DQpzdHJ1Y3QgSW5zdHJ1Y3Rpb247DQpzdHJ1Y3QgTWV0aG9kVGFibGU7DQpl
bnVtIGNsYXNzIFVua25vd24geyB9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5hbWUgVHJh
aXRzPiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlOw0KdGVtcGxhdGU8Y2xhc3MgVD4NCnVzaW5nIFdy
aXRlQmFycmllclRyYWl0c1NlbGVjdCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjpp
c19zYW1lPFQsIFVua25vd24+Ojp2YWx1ZSwNCiAgICBEdW1iVmFsdWVUcmFpdHM8VD4sIER1bWJQ
dHJUcmFpdHM8VD4NCj46OnR5cGU7DQoNCmVudW0gUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA6IHVp
bnQ4X3QgeyBOb1ByZWZlcmVuY2UsIFByZWZlck51bWJlciwgUHJlZmVyU3RyaW5nIH07DQoNCnN0
cnVjdCBDYWxsRGF0YTsNCg0KdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOw0KICAgIA0K
dW5pb24gRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB7DQogICAgaW50NjRfdCBhc0ludDY0Ow0KDQoN
CiNsaW5lIDk1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCiAgICBKU0NlbGwqIHB0cjsNCiNsaW5lIDk3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEpTQ0pTVmFsdWUuaCINCiAgICAgICAgDQoNCg0KDQoNCg0KI2xpbmUgMTA0ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFs
dWUuaCINCiAgICBzdHJ1Y3Qgew0KICAgICAgICBpbnQzMl90IHBheWxvYWQ7DQogICAgICAgIGlu
dDMyX3QgdGFnOw0KICAgIH0gYXNCaXRzOw0KI2xpbmUgMTA5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCn07
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTE5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCg0KZW51bSBXaGlj
aFZhbHVlV29yZCB7DQogICAgVGFnV29yZCwNCiAgICBQYXlsb2FkV29yZA0KfTsNCg0KaW50NjRf
dCB0cnlDb252ZXJ0VG9JbnQ1Mihkb3VibGUpOw0KYm9vbCBpc0ludDUyKGRvdWJsZSk7DQoNCmVu
dW0gY2xhc3MgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIDogdWludDhfdCB7DQogICAgT3RoZXIs
DQogICAgSW50ZWdlciwNCiAgICBEb3VibGUsDQogICAgTGlua1RpbWVDb25zdGFudCwNCn07DQoN
CmNsYXNzIEpTVmFsdWUgew0KICAgIGZyaWVuZCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVIYXNoVHJh
aXRzOw0KICAgIGZyaWVuZCBzdHJ1Y3QgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb25I
YXNoVHJhaXRzOw0KICAgIGZyaWVuZCBjbGFzcyBBc3NlbWJseUhlbHBlcnM7DQogICAgZnJpZW5k
IGNsYXNzIEpJVDsNCiAgICBmcmllbmQgY2xhc3MgSklUU2xvd1BhdGhDYWxsOw0KICAgIGZyaWVu
ZCBjbGFzcyBKSVRTdHViczsNCiAgICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7DQogICAgZnJp
ZW5kIGNsYXNzIEpTSW50ZXJmYWNlSklUOw0KICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlU291cmNl
Ow0KICAgIGZyaWVuZCBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUOw0KDQogICAgZnJpZW5kIGNs
YXNzIERGRzo6SklUQ29tcGlsZXI7DQogICAgZnJpZW5kIGNsYXNzIERGRzo6T1NSRXhpdENvbXBp
bGVyOw0KICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOw0KI2xpbmUgMTUxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEpTQ0pTVmFsdWUuaCINCg0KDQojbGluZSAxNTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZS5oIg0KDQpwdWJsaWM6
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTY4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCg0KICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBlbmNvZGUoSlNWYWx1ZSk7DQogICAgc3RhdGljIEpTVmFs
dWUgZGVjb2RlKEVuY29kZWRKU1ZhbHVlKTsNCg0KICAgIGVudW0gSlNOdWxsVGFnIHsgSlNOdWxs
IH07DQogICAgZW51bSBKU1VuZGVmaW5lZFRhZyB7IEpTVW5kZWZpbmVkIH07DQogICAgZW51bSBK
U1RydWVUYWcgeyBKU1RydWUgfTsNCiAgICBlbnVtIEpTRmFsc2VUYWcgeyBKU0ZhbHNlIH07DQog
ICAgZW51bSBKU0NlbGxUYWcgeyBKU0NlbGxUeXBlIH07DQoNCg0KI2xpbmUgMTgwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pT
VmFsdWUuaCINCiAgICBlbnVtIEVuY29kZUFzRG91YmxlVGFnIHsgRW5jb2RlQXNEb3VibGUgfTsN
Cg0KICAgIEpTVmFsdWUoKTsNCiAgICBKU1ZhbHVlKEpTTnVsbFRhZyk7DQogICAgSlNWYWx1ZShK
U1VuZGVmaW5lZFRhZyk7DQogICAgSlNWYWx1ZShKU1RydWVUYWcpOw0KICAgIEpTVmFsdWUoSlNG
YWxzZVRhZyk7DQogICAgSlNWYWx1ZShKU0NlbGwqIHB0cik7DQogICAgSlNWYWx1ZShjb25zdCBK
U0NlbGwqIHB0cik7DQoNCg0KI2xpbmUgMTkyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCg0KICAgIA0KICAg
IEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7DQogICAgZXhwbGljaXQgSlNWYWx1
ZShkb3VibGUpOw0KICAgIGV4cGxpY2l0IEpTVmFsdWUoY2hhcik7DQogICAgZXhwbGljaXQgSlNW
YWx1ZSh1bnNpZ25lZCBjaGFyKTsNCiAgICBleHBsaWNpdCBKU1ZhbHVlKHNob3J0KTsNCiAgICBl
eHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIHNob3J0KTsNCiAgICBleHBsaWNpdCBKU1ZhbHVlKGlu
dCk7DQogICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCk7DQogICAgZXhwbGljaXQgSlNWYWx1
ZShsb25nKTsNCiAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcpOw0KICAgIGV4cGxp
Y2l0IEpTVmFsdWUobG9uZyBsb25nKTsNCiAgICBleHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxv
bmcgbG9uZyk7DQoNCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7DQogICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdDsNCiAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Ow0KDQogICAgYm9vbCBpc0ludDMyKCkg
Y29uc3Q7DQogICAgYm9vbCBpc1VJbnQzMigpIGNvbnN0Ow0KICAgIGJvb2wgaXNEb3VibGUoKSBj
b25zdDsNCiAgICBib29sIGlzVHJ1ZSgpIGNvbnN0Ow0KICAgIGJvb2wgaXNGYWxzZSgpIGNvbnN0
Ow0KDQogICAgaW50MzJfdCBhc0ludDMyKCkgY29uc3Q7DQogICAgdWludDMyX3QgYXNVSW50MzIo
KSBjb25zdDsNCiAgICBPcHRpb25hbDx1aW50MzJfdD4gdHJ5R2V0QXNVaW50MzJJbmRleCgpOw0K
ICAgIE9wdGlvbmFsPGludDMyX3Q+IHRyeUdldEFzSW50MzIoKTsNCiAgICBpbnQ2NF90IGFzQW55
SW50KCkgY29uc3Q7DQogICAgdWludDMyX3QgYXNVSW50MzJBc0FueUludCgpIGNvbnN0Ow0KICAg
IGludDMyX3QgYXNJbnQzMkFzQW55SW50KCkgY29uc3Q7DQogICAgZG91YmxlIGFzRG91YmxlKCkg
Y29uc3Q7DQogICAgYm9vbCBhc0Jvb2xlYW4oKSBjb25zdDsNCiAgICBkb3VibGUgYXNOdW1iZXIo
KSBjb25zdDsNCg0KDQojbGluZSAyMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZS5oIg0KICAgIA0KICAgIGludDMy
X3QgYXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdDsgDQoNCiAgICANCiAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsNCiAgICBib29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsNCiAgICBib29sIGlz
Q29uc3RydWN0b3IoVk0mKSBjb25zdDsNCiAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7DQog
ICAgYm9vbCBpc051bGwoKSBjb25zdDsNCiAgICBib29sIGlzVW5kZWZpbmVkT3JOdWxsKCkgY29u
c3Q7DQogICAgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdDsNCiAgICBib29sIGlzQW55SW50KCkgY29u
c3Q7DQogICAgYm9vbCBpc1VJbnQzMkFzQW55SW50KCkgY29uc3Q7DQogICAgYm9vbCBpc0ludDMy
QXNBbnlJbnQoKSBjb25zdDsNCiAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7DQogICAgYm9vbCBp
c1N0cmluZygpIGNvbnN0Ow0KICAgIGJvb2wgaXNCaWdJbnQoKSBjb25zdDsNCiAgICBib29sIGlz
SGVhcEJpZ0ludCgpIGNvbnN0Ow0KICAgIGJvb2wgaXNCaWdJbnQzMigpIGNvbnN0Ow0KICAgIGJv
b2wgaXNTeW1ib2woKSBjb25zdDsNCiAgICBib29sIGlzUHJpbWl0aXZlKCkgY29uc3Q7DQogICAg
Ym9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0Ow0KICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJTZXR0
ZXIoKSBjb25zdDsNCiAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7DQogICAgYm9vbCBpbmhlcml0
cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRh
cmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0Ow0KICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvT3JOdWxsKFZNJikgY29uc3Q7DQoNCiAgICANCiAgICBib29sIGdldFN0cmluZyhKU0ds
b2JhbE9iamVjdCosIFdURjo6U3RyaW5nJikgY29uc3Q7DQogICAgV1RGOjpTdHJpbmcgZ2V0U3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7IA0KICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKSBj
b25zdDsgDQoNCiAgICANCiAgICBib29sIGdldFVJbnQzMih1aW50MzJfdCYpIGNvbnN0Ow0KICAg
ICAgICANCiAgICANCiAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7DQogICAgYm9vbCBnZXRQ
cmltaXRpdmVOdW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYp
Ow0KDQogICAgYm9vbCB0b0Jvb2xlYW4oSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICBUcmlT
dGF0ZSBwdXJlVG9Cb29sZWFuKCkgY29uc3Q7DQoNCiAgICANCiAgICANCiAgICBkb3VibGUgdG9O
dW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCg0KICAgIEpTVmFsdWUgdG9OdW1lcmljKEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7DQogICAgSlNWYWx1ZSB0b0JpZ0ludE9ySW50MzIoSlNHbG9i
YWxPYmplY3QqKSBjb25zdDsNCiAgICBKU0JpZ0ludCogYXNIZWFwQmlnSW50KCkgY29uc3Q7DQoN
CiAgICANCiAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0
Ow0KDQogICAgSlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7IA0KICAg
IEpTU3RyaW5nKiB0b1N0cmluZ09yTnVsbChKU0dsb2JhbE9iamVjdCopIGNvbnN0OyANCiAgICBJ
ZGVudGlmaWVyIHRvUHJvcGVydHlLZXkoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICBKU1Zh
bHVlIHRvUHJvcGVydHlLZXlWYWx1ZShKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIFdURjo6
U3RyaW5nIHRvV1RGU3RyaW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQogICAgSlNPYmplY3Qq
IHRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQoNCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgZG91YmxlIHRvSW50ZWdlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBkb3VibGUgdG9JbnRlZ2VyUHJlc2VydmVOYU4oSlNHbG9i
YWxPYmplY3QqKSBjb25zdDsNCiAgICBpbnQzMl90IHRvSW50MzIoSlNHbG9iYWxPYmplY3QqKSBj
b25zdDsNCiAgICB1aW50MzJfdCB0b1VJbnQzMihKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAg
IHVpbnQzMl90IHRvSW5kZXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBjaGFyKiBlcnJvck5hbWUp
IGNvbnN0Ow0KICAgIGRvdWJsZSB0b0xlbmd0aChKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KDQog
ICAgT3B0aW9uYWw8dWludDMyX3Q+IHRvVUludDMyQWZ0ZXJUb051bWVyaWMoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsNCg0KICAgIA0KICAgIA0KICAgIGZsb2F0IHRvRmxvYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRvTnVt
YmVyKGdsb2JhbE9iamVjdCkpOyB9DQoNCiAgICANCiAgICBKU1ZhbHVlIGdldChKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7DQogICAgSlNWYWx1ZSBnZXQoSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0Ow0KICAgIEpTVmFsdWUgZ2V0
KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICBKU1Zh
bHVlIGdldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JikgY29uc3Q7DQogICAgSlNWYWx1ZSBnZXQoSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCBw
cm9wZXJ0eU5hbWUpIGNvbnN0Ow0KDQogICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpIGNvbnN0Ow0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPiB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9v
ZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgZ2V0
UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBDYWxsYmFja1doZW5O
b0V4Y2VwdGlvbikgY29uc3Q7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tXaGVuTm9F
eGNlcHRpb24+IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNrV2hlbk5vRXhjZXB0aW9u
KGJvb2wsIFByb3BlcnR5U2xvdCYpPjo6dHlwZSBnZXRQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9u
KSBjb25zdDsNCg0KICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsNCg0KICAgIGJvb2wgcHV0KEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsNCiAg
ICBib29sIHB1dElubGluZShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgcHV0VG9Q
cmltaXRpdmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIHB1dFRvUHJpbWl0aXZl
QnlJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7DQogICAgYm9vbCBwdXRCeUluZGV4KEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsNCg0KICAg
IEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQogICAgSlNWYWx1
ZSB0b1RoaXMoSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkgY29uc3Q7DQoNCiAgICBzdGF0aWMg
Ym9vbCBlcXVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOw0KICAg
IHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBK
U1ZhbHVlIHYyKTsNCiAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7DQogICAgc3RhdGljIGJvb2wgc3RyaWN0
RXF1YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsNCiAgICBzdGF0
aWMgYm9vbCBzdHJpY3RFcXVhbEZvckNlbGxzKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2MSwg
SlNDZWxsKiB2Mik7DQogICAgc3RhdGljIFRyaVN0YXRlIHB1cmVTdHJpY3RFcXVhbChKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKTsNCg0KICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7DQogICAgSlNDZWxs
KiBhc0NlbGwoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBpc1ZhbGlk
Q2FsbGVlKCk7DQoNCiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZU9yTnVsbCgpIGNvbnN0Ow0KICAg
IEpTVmFsdWUgc3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCiAgICB2b2lkIGR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0Ow0KICAgIHZvaWQgZHVt
cEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqLCBT
dHJ1Y3R1cmUqKSBjb25zdDsNCiAgICB2b2lkIGR1bXBGb3JCYWNrdHJhY2UoUHJpbnRTdHJlYW0m
KSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdCogc3ludGhlc2l6
ZVByb3RvdHlwZShKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIGJvb2wgcmVxdWlyZU9iamVj
dENvZXJjaWJsZShKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KDQogICAgDQogICAgDQogICAgc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkludDUyQml0cyA9IDUyOw0KICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgaW50NjRfdCBub3RJbnQ1MiA9IHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDEpIDw8IG51bWJlck9mSW50NTJCaXRzOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgdW5zaWduZWQgaW50NTJTaGlmdEFtb3VudCA9IDEyOw0KICAgIA0KICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlm
Zl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KDB4NDAwMCktPnUuYXNCaXRzLnBheWxv
YWQpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVGFnKCkgeyBy
ZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNW
YWx1ZSo+KDB4NDAwMCktPnUuYXNCaXRzLnRhZykpIC0gMHg0MDAwKTsgfQ0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzg1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpT
Q0pTVmFsdWUuaCINCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgRG91YmxlRW5jb2RlT2Zmc2V0Qml0ID0gNDk7DQogICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQ2NF90IERvdWJsZUVuY29kZU9mZnNldCA9IDFsbCA8PCBEb3VibGVFbmNvZGVPZmZzZXRCaXQ7
DQogICAgDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE51bWJlclRhZyA9IDB4
ZmZmZTAwMDAwMDAwMDAwMGxsOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBM
b3dlc3RPZkhpZ2hCaXRzID0gMVVMTCA8PCA0OTsNCiAgICBzdGF0aWNfYXNzZXJ0KExvd2VzdE9m
SGlnaEJpdHMgJiBOdW1iZXJUYWcpOw0KICAgIHN0YXRpY19hc3NlcnQoISgoTG93ZXN0T2ZIaWdo
Qml0cz4+MSkgJiBOdW1iZXJUYWcpKTsNCg0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
MzJfdCBPdGhlclRhZyAgICAgICA9IDB4MjsNCiAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3Qg
Qm9vbFRhZyAgICAgICAgPSAweDQ7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVm
aW5lZFRhZyAgID0gMHg4Ow0KDQoNCg0KI2xpbmUgNDY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCiAgICAN
CiAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVGYWxzZSAgICAgPSBPdGhlclRhZyB8
IEJvb2xUYWcgfCBmYWxzZTsNCiAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVUcnVl
ICAgICAgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCB0cnVlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50MzJfdCBWYWx1ZVVuZGVmaW5lZCA9IE90aGVyVGFnIHwgVW5kZWZpbmVkVGFnOw0KICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZU51bGwgICAgICA9IE90aGVyVGFnOw0KDQogICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE1pc2NUYWcgPSBPdGhlclRhZyB8IEJvb2xUYWcgfCBV
bmRlZmluZWRUYWc7DQoNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgTm90Q2Vs
bE1hc2sgPSBOdW1iZXJUYWcgfCBPdGhlclRhZzsNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVFbXB0eSAgID0gMHgw
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZURlbGV0ZWQgPSAweDQ7DQoNCiAg
ICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgV2FzbVRhZyA9IE90aGVyVGFnIHwgMHgxOw0KICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBXYXNtTWFzayA9IE51bWJlclRhZyB8IDB4NzsNCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiNsaW5lIDUwNCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxK
U0NKU1ZhbHVlLmgiDQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUo
V3JpdGVCYXJyaWVyQmFzZTxULCBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3Q8VD4+KTsNCg0KICAg
IGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07
DQogICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOw0KDQogICAgaW5saW5lIGNv
bnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9DQogICAgX19kZWNs
c3BlYyhkbGxleHBvcnQpIGRvdWJsZSB0b051bWJlclNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCByZXR1cm5FbXB0eVN0cmluZ09uRXJyb3IpIGNvbnN0
Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBXVEY6OlN0cmluZyB0b1dURlN0cmluZ1Nsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEpT
T2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIEpTVmFsdWUgdG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
LCBFQ01BTW9kZSkgY29uc3Q7DQoNCiAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHU7DQp9Ow0K
DQp0eXBlZGVmIEludEhhc2g8RW5jb2RlZEpTVmFsdWU+IEVuY29kZWRKU1ZhbHVlSGFzaDsNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA1MzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZS5oIg0Kc3RydWN0IEVuY29kZWRK
U1ZhbHVlSGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8RW5jb2RlZEpTVmFsdWU+IHsNCiAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUmIHNsb3QpIHsgc2xv
dCA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJsZURlbGV0ZWRWYWx1
ZSkpOyB9DQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoRW5jb2RlZEpTVmFsdWUgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID09IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9DQp9Ow0KI2xpbmUgNTM2ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCIN
Cg0KdHlwZWRlZiBzdGQ6OnBhaXI8RW5jb2RlZEpTVmFsdWUsIFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbj4gRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb247DQoNCnN0cnVjdCBFbmNvZGVk
SlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbkhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEVuY29kZWRK
U1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uPiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVt
cHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCiAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWVXaXRoUmVw
cmVzZW50YXRpb24gZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpLCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyKTsgfQ0K
ICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShFbmNvZGVkSlNWYWx1ZVdpdGhS
ZXByZXNlbnRhdGlvbiYgc2xvdCkgeyBzbG90ID0gc3RkOjptYWtlX3BhaXIoSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoSlNWYWx1ZTo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSksIFNvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbjo6T3RoZXIpOyB9DQogICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUo
RW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24gdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09
IHN0ZDo6bWFrZV9wYWlyKEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpTVmFsdWU6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkpLCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyKTsgfQ0KfTsN
Cg0Kc3RydWN0IEVuY29kZWRKU1ZhbHVlV2l0aFJlcHJlc2VudGF0aW9uSGFzaCB7DQogICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgRW5jb2RlZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24m
IHZhbHVlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goRW5jb2RlZEpT
VmFsdWVIYXNoOjpoYXNoKHZhbHVlLmZpcnN0KSwgSW50SGFzaDxTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24+OjpoYXNoKHZhbHVlLnNlY29uZCkpOw0KICAgIH0NCiAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBFbmNvZGVkSlNWYWx1ZVdpdGhSZXByZXNlbnRhdGlvbiYgYSwgY29uc3QgRW5jb2Rl
ZEpTVmFsdWVXaXRoUmVwcmVzZW50YXRpb24mIGIpDQogICAgew0KICAgICAgICByZXR1cm4gYSA9
PSBiOw0KICAgIH0NCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSB0cnVlOw0KfTsNCg0KDQppbmxpbmUgSlNWYWx1ZSBqc051bGwoKQ0Kew0K
ICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkpTTnVsbCk7DQp9DQoNCmlubGluZSBKU1ZhbHVl
IGpzVW5kZWZpbmVkKCkNCnsNCiAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpKU1VuZGVmaW5l
ZCk7DQp9DQoNCmlubGluZSBKU1ZhbHVlIGpzVERaVmFsdWUoKQ0Kew0KICAgIHJldHVybiBKU1Zh
bHVlKCk7DQp9DQoNCmlubGluZSBKU1ZhbHVlIGpzQm9vbGVhbihib29sIGIpDQp7DQogICAgcmV0
dXJuIGIgPyBKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1ZSkgOiBKU1ZhbHVlKEpTVmFsdWU6OkpTRmFs
c2UpOw0KfQ0KDQoNCg0KDQoNCg0KI2xpbmUgNTg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCg0KX19mb3Jj
ZWlubGluZSBKU1ZhbHVlIGpzRG91YmxlTnVtYmVyKGRvdWJsZSBkKQ0Kew0KICAgICgodm9pZCkw
KTsNCiAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgZCk7DQp9DQoN
Cl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBqc051bWJlcihkb3VibGUgZCkNCnsNCiAgICAoKHZvaWQp
MCk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBKU1ZhbHVlKGQpOw0KfQ0KDQpfX2ZvcmNl
aW5saW5lIEpTVmFsdWUganNOdW1iZXIoY29uc3QgTWVkaWFUaW1lJiB0KQ0Kew0KICAgIHJldHVy
biBqc051bWJlcih0LnRvRG91YmxlKCkpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTVmFsdWUganNO
dW1iZXIoY2hhciBpKQ0Kew0KICAgIHJldHVybiBKU1ZhbHVlKGkpOw0KfQ0KDQpfX2ZvcmNlaW5s
aW5lIEpTVmFsdWUganNOdW1iZXIodW5zaWduZWQgY2hhciBpKQ0Kew0KICAgIHJldHVybiBKU1Zh
bHVlKGkpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTVmFsdWUganNOdW1iZXIoc2hvcnQgaSkNCnsN
CiAgICByZXR1cm4gSlNWYWx1ZShpKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIGpzTnVt
YmVyKHVuc2lnbmVkIHNob3J0IGkpDQp7DQogICAgcmV0dXJuIEpTVmFsdWUoaSk7DQp9DQoNCl9f
Zm9yY2VpbmxpbmUgSlNWYWx1ZSBqc051bWJlcihpbnQgaSkNCnsNCiAgICByZXR1cm4gSlNWYWx1
ZShpKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGkpDQp7
DQogICAgcmV0dXJuIEpTVmFsdWUoaSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBqc051
bWJlcihsb25nIGkpDQp7DQogICAgcmV0dXJuIEpTVmFsdWUoaSk7DQp9DQoNCl9fZm9yY2Vpbmxp
bmUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBsb25nIGkpDQp7DQogICAgcmV0dXJuIEpTVmFs
dWUoaSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBqc051bWJlcihsb25nIGxvbmcgaSkN
CnsNCiAgICByZXR1cm4gSlNWYWx1ZShpKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIGpz
TnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyBpKQ0Kew0KICAgIHJldHVybiBKU1ZhbHVlKGkpOw0K
fQ0KDQpfX2ZvcmNlaW5saW5lIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRKU1VuZGVmaW5lZCgpDQp7
DQogICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsNCn0NCg0KX19mb3Jj
ZWlubGluZSBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1ZSgpDQp7DQogICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVybiBhID09IEpTVmFsdWUoYik7
IH0NCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNDZWxsKiBhLCBjb25zdCBKU1ZhbHVl
IGIpIHsgcmV0dXJuIEpTVmFsdWUoYSkgPT0gYjsgfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVybiBhICE9IEpTVmFsdWUo
Yik7IH0NCmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNDZWxsKiBhLCBjb25zdCBKU1Zh
bHVlIGIpIHsgcmV0dXJuIEpTVmFsdWUoYSkgIT0gYjsgfQ0KDQoNCmJvb2wgaXNUaGlzVmFsdWVB
bHRlcmVkKGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIEpTT2JqZWN0KiBiYXNlT2JqZWN0KTsNCg0K
DQpib29sIHNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYSwgSlNWYWx1ZSBiKTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjg2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWUuaCINCl9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKEpTVmFsdWUpOw0KI2xpbmUg
Njg4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXEpTQ0pTVmFsdWUuaCINCg0KDQoNCg0KY2xhc3MgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IHsNCiAgICBwcml2YXRlOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxl
dGU7IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHNpemUpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgPSBkZWxldGU7IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVhcEFsbG9jYXRpb25NYWNybzsNCiAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUoY29uc3QgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlJikgPSBkZWxldGU7IEVu
c3VyZVN0aWxsQWxpdmVTY29wZSYgb3BlcmF0b3I9KGNvbnN0IEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSYpID0gZGVsZXRlOzsNCiAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUoRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlJiYpID0gZGVsZXRlOyBFbnN1cmVTdGlsbEFsaXZlU2NvcGUmIG9wZXJhdG9yPShFbnN1
cmVTdGlsbEFsaXZlU2NvcGUmJikgPSBkZWxldGU7Ow0KcHVibGljOg0KICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZShKU1ZhbHVlIHZhbHVlKQ0KICAgICAgICA6IG1fdmFsdWUodmFsdWUpDQogICAg
ew0KICAgIH0NCg0KICAgIH5FbnN1cmVTdGlsbEFsaXZlU2NvcGUoKQ0KICAgIHsNCiAgICAgICAg
ZW5zdXJlU3RpbGxBbGl2ZUhlcmUobV92YWx1ZSk7DQogICAgfQ0KDQogICAgSlNWYWx1ZSB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0NCg0KcHJpdmF0ZToNCiAgICBKU1ZhbHVlIG1f
dmFsdWU7DQp9Ow0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENhbGxlZUJpdHMuaCINCg0KDQpuYW1l
c3BhY2UgSlNDIHsNCg0KbmFtZXNwYWNlIFdhc20gew0KY2xhc3MgQ2FsbGVlOw0KfQ0KDQpjbGFz
cyBKU0NlbGw7DQoNCmNsYXNzIENhbGxlZUJpdHMgew0KcHVibGljOg0KICAgIENhbGxlZUJpdHMo
KSA9IGRlZmF1bHQ7DQogICAgQ2FsbGVlQml0cyh2b2lkKiBwdHIpIDogbV9wdHIocHRyKSB7IH0g
DQoNCiAgICBDYWxsZWVCaXRzJiBvcGVyYXRvcj0oSlNDZWxsKiBjZWxsKQ0KICAgIHsNCiAgICAg
ICAgbV9wdHIgPSBjZWxsOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiAqdGhp
czsNCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENhbGxlZUJpdHMuaCIN
Cg0KICAgIGJvb2wgaXNXYXNtKCkgY29uc3QNCiAgICB7DQoNCg0KI2xpbmUgNjUgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENh
bGxlZUJpdHMuaCINCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KI2xpbmUgNjcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENhbGxl
ZUJpdHMuaCINCiAgICB9DQogICAgYm9vbCBpc0NlbGwoKSBjb25zdCB7IHJldHVybiAhaXNXYXNt
KCk7IH0NCg0KICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQ2VsbCo+KG1fcHRyKTsNCiAgICB9
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJldGVyXFxDYWxsZWVCaXRzLmgiDQoNCiAgICB2b2lk
KiByYXdQdHIoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICB2
b2lkKiBtX3B0ciB7IG51bGxwdHIgfTsNCn07DQoNCn0gDQojbGluZSAyNyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxpbnRlcnByZXRlclxcQ2FsbEZy
YW1lLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXFJlZ2lzdGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQogICAgY2xhc3MgQ2FsbEZyYW1lOw0KICAgIGNsYXNzIENv
ZGVCbG9jazsNCiAgICBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudDsNCiAgICBjbGFzcyBKU09i
amVjdDsNCiAgICBjbGFzcyBKU1Njb3BlOw0KDQogICAgY2xhc3MgUmVnaXN0ZXIgew0KICAgICAg
ICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywg
dm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Vi
a2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNl
QVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHB1YmxpYzoNCiAgICAgICAgUmVn
aXN0ZXIoKTsNCg0KICAgICAgICBSZWdpc3Rlcihjb25zdCBKU1ZhbHVlJik7DQogICAgICAgIEpT
VmFsdWUganNWYWx1ZSgpIGNvbnN0Ow0KICAgICAgICBKU1ZhbHVlIGFzYW5VbnNhZmVKU1ZhbHVl
KCkgY29uc3Q7DQogICAgICAgIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRKU1ZhbHVlKCkgY29uc3Q7
DQogICAgICAgIA0KICAgICAgICBfX2ZvcmNlaW5saW5lIFJlZ2lzdGVyJiBvcGVyYXRvcj0oQ2Fs
bEZyYW1lKik7DQogICAgICAgIF9fZm9yY2VpbmxpbmUgUmVnaXN0ZXImIG9wZXJhdG9yPShDb2Rl
QmxvY2sqKTsNCiAgICAgICAgX19mb3JjZWlubGluZSBSZWdpc3RlciYgb3BlcmF0b3I9KEpTU2Nv
cGUqKTsNCiAgICAgICAgX19mb3JjZWlubGluZSBSZWdpc3RlciYgb3BlcmF0b3I9KEpTT2JqZWN0
Kik7DQogICAgICAgIF9fZm9yY2VpbmxpbmUgUmVnaXN0ZXImIG9wZXJhdG9yPShFbmNvZGVkSlNW
YWx1ZSk7DQoNCiAgICAgICAgaW50MzJfdCBpKCkgY29uc3Q7DQogICAgICAgIF9fZm9yY2Vpbmxp
bmUgQ2FsbEZyYW1lKiBjYWxsRnJhbWUoKSBjb25zdDsNCiAgICAgICAgX19mb3JjZWlubGluZSBD
b2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0Ow0KICAgICAgICBfX2ZvcmNlaW5saW5lIENvZGVC
bG9jayogYXNhblVuc2FmZUNvZGVCbG9jaygpIGNvbnN0Ow0KICAgICAgICBfX2ZvcmNlaW5saW5l
IEpTT2JqZWN0KiBvYmplY3QoKSBjb25zdDsNCiAgICAgICAgX19mb3JjZWlubGluZSBKU1Njb3Bl
KiBzY29wZSgpIGNvbnN0Ow0KICAgICAgICBpbnQzMl90IHVuYm94ZWRJbnQzMigpIGNvbnN0Ow0K
ICAgICAgICBpbnQzMl90IGFzYW5VbnNhZmVVbmJveGVkSW50MzIoKSBjb25zdDsNCiAgICAgICAg
aW50NjRfdCB1bmJveGVkSW50NTIoKSBjb25zdDsNCiAgICAgICAgaW50NjRfdCBhc2FuVW5zYWZl
VW5ib3hlZEludDUyKCkgY29uc3Q7DQogICAgICAgIGludDY0X3QgdW5ib3hlZFN0cmljdEludDUy
KCkgY29uc3Q7DQogICAgICAgIGludDY0X3QgYXNhblVuc2FmZVVuYm94ZWRTdHJpY3RJbnQ1Migp
IGNvbnN0Ow0KICAgICAgICBib29sIHVuYm94ZWRCb29sZWFuKCkgY29uc3Q7DQogICAgICAgIGRv
dWJsZSB1bmJveGVkRG91YmxlKCkgY29uc3Q7DQogICAgICAgIGRvdWJsZSBhc2FuVW5zYWZlVW5i
b3hlZERvdWJsZSgpIGNvbnN0Ow0KICAgICAgICBKU0NlbGwqIHVuYm94ZWRDZWxsKCkgY29uc3Q7
DQogICAgICAgIEpTQ2VsbCogYXNhblVuc2FmZVVuYm94ZWRDZWxsKCkgY29uc3Q7DQogICAgICAg
IGludDMyX3QgcGF5bG9hZCgpIGNvbnN0Ow0KICAgICAgICBpbnQzMl90IHRhZygpIGNvbnN0Ow0K
ICAgICAgICBpbnQzMl90IHVuc2FmZVBheWxvYWQoKSBjb25zdDsNCiAgICAgICAgaW50MzJfdCB1
bnNhZmVUYWcoKSBjb25zdDsNCiAgICAgICAgaW50MzJfdCYgcGF5bG9hZCgpOw0KICAgICAgICBp
bnQzMl90JiB0YWcoKTsNCg0KICAgICAgICB2b2lkKiBwb2ludGVyKCkgY29uc3Q7DQogICAgICAg
IHZvaWQqIGFzYW5VbnNhZmVQb2ludGVyKCkgY29uc3Q7DQoNCiAgICAgICAgc3RhdGljIFJlZ2lz
dGVyIHdpdGhJbnQoaW50MzJfdCBpKQ0KICAgICAgICB7DQogICAgICAgICAgICBSZWdpc3RlciBy
ID0ganNOdW1iZXIoaSk7DQogICAgICAgICAgICByZXR1cm4gcjsNCiAgICAgICAgfQ0KDQogICAg
cHJpdmF0ZToNCiAgICAgICAgdW5pb24gew0KICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgdmFs
dWU7DQogICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZTsNCiAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrOw0KICAgICAgICAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciBlbmNv
ZGVkVmFsdWU7DQogICAgICAgICAgICBkb3VibGUgbnVtYmVyOw0KICAgICAgICAgICAgaW50NjRf
dCBpbnRlZ2VyOw0KICAgICAgICB9IHU7DQogICAgfTsNCg0KICAgIF9fZm9yY2VpbmxpbmUgUmVn
aXN0ZXI6OlJlZ2lzdGVyKCkNCiAgICB7DQoNCg0KDQogICAgfQ0KDQogICAgX19mb3JjZWlubGlu
ZSBSZWdpc3Rlcjo6UmVnaXN0ZXIoY29uc3QgSlNWYWx1ZSYgdikNCiAgICB7DQogICAgICAgIHUu
dmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodik7DQogICAgfQ0KDQogICAgDQogICAgIF9fZm9yY2Vp
bmxpbmUgSlNWYWx1ZSBSZWdpc3Rlcjo6YXNhblVuc2FmZUpTVmFsdWUoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh1LnZhbHVlKTsNCiAgICB9DQoNCiAgICBf
X2ZvcmNlaW5saW5lIEpTVmFsdWUgUmVnaXN0ZXI6OmpzVmFsdWUoKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh1LnZhbHVlKTsNCiAgICB9DQoNCiAgICBfX2Zv
cmNlaW5saW5lIEVuY29kZWRKU1ZhbHVlIFJlZ2lzdGVyOjplbmNvZGVkSlNWYWx1ZSgpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gdS52YWx1ZTsNCiAgICB9DQoNCiAgICANCg0KICAgIF9f
Zm9yY2VpbmxpbmUgaW50MzJfdCBSZWdpc3Rlcjo6aSgpIGNvbnN0DQogICAgew0KICAgICAgICBy
ZXR1cm4ganNWYWx1ZSgpLmFzSW50MzIoKTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIGlu
dDMyX3QgUmVnaXN0ZXI6OnVuYm94ZWRJbnQzMigpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1
cm4gcGF5bG9hZCgpOw0KICAgIH0NCg0KICAgICBfX2ZvcmNlaW5saW5lIGludDMyX3QgUmVnaXN0
ZXI6OmFzYW5VbnNhZmVVbmJveGVkSW50MzIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHVuc2FmZVBheWxvYWQoKTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIGludDY0X3QgUmVn
aXN0ZXI6OnVuYm94ZWRJbnQ1MigpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gdS5pbnRl
Z2VyID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7DQogICAgfQ0KDQogICAgIF9fZm9yY2Vp
bmxpbmUgaW50NjRfdCBSZWdpc3Rlcjo6YXNhblVuc2FmZVVuYm94ZWRJbnQ1MigpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gdS5pbnRlZ2VyID4+IEpTVmFsdWU6OmludDUyU2hpZnRBbW91
bnQ7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBpbnQ2NF90IFJlZ2lzdGVyOjp1bmJveGVk
U3RyaWN0SW50NTIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHUuaW50ZWdlcjsNCiAg
ICB9DQoNCiAgICAgX19mb3JjZWlubGluZSBpbnQ2NF90IFJlZ2lzdGVyOjphc2FuVW5zYWZlVW5i
b3hlZFN0cmljdEludDUyKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiB1LmludGVnZXI7
DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBib29sIFJlZ2lzdGVyOjp1bmJveGVkQm9vbGVh
bigpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gISFwYXlsb2FkKCk7DQogICAgfQ0KDQog
ICAgX19mb3JjZWlubGluZSBkb3VibGUgUmVnaXN0ZXI6OnVuYm94ZWREb3VibGUoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIHUubnVtYmVyOw0KICAgIH0NCg0KICAgICBfX2ZvcmNlaW5s
aW5lIGRvdWJsZSBSZWdpc3Rlcjo6YXNhblVuc2FmZVVuYm94ZWREb3VibGUoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIHUubnVtYmVyOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUg
SlNDZWxsKiBSZWdpc3Rlcjo6dW5ib3hlZENlbGwoKSBjb25zdA0KICAgIHsNCg0KICAgICAgICBy
ZXR1cm4gdS5lbmNvZGVkVmFsdWUucHRyOw0KDQoNCiNsaW5lIDE5MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxpbnRlcnByZXRlclxcUmVnaXN0ZXIu
aCINCiAgICB9DQoNCiAgICAgX19mb3JjZWlubGluZSBKU0NlbGwqIFJlZ2lzdGVyOjphc2FuVW5z
YWZlVW5ib3hlZENlbGwoKSBjb25zdA0KICAgIHsNCg0KICAgICAgICByZXR1cm4gdS5lbmNvZGVk
VmFsdWUucHRyOw0KDQoNCiNsaW5lIDE5OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxpbnRlcnByZXRlclxcUmVnaXN0ZXIuaCINCiAgICB9DQoNCiAg
ICBfX2ZvcmNlaW5saW5lIHZvaWQqIFJlZ2lzdGVyOjpwb2ludGVyKCkgY29uc3QNCiAgICB7DQoN
CiAgICAgICAgcmV0dXJuIHUuZW5jb2RlZFZhbHVlLnB0cjsNCg0KDQojbGluZSAyMDggIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJc
XFJlZ2lzdGVyLmgiDQogICAgfQ0KDQogICAgIF9fZm9yY2VpbmxpbmUgdm9pZCogUmVnaXN0ZXI6
OmFzYW5VbnNhZmVQb2ludGVyKCkgY29uc3QNCiAgICB7DQoNCiAgICAgICAgcmV0dXJuIHUuZW5j
b2RlZFZhbHVlLnB0cjsNCg0KDQojbGluZSAyMTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXFJlZ2lzdGVyLmgiDQogICAgfQ0K
DQogICAgX19mb3JjZWlubGluZSBpbnQzMl90IFJlZ2lzdGVyOjpwYXlsb2FkKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiB1LmVuY29kZWRWYWx1ZS5hc0JpdHMucGF5bG9hZDsNCiAgICB9
DQoNCiAgICBfX2ZvcmNlaW5saW5lIGludDMyX3QgUmVnaXN0ZXI6OnRhZygpIGNvbnN0DQogICAg
ew0KICAgICAgICByZXR1cm4gdS5lbmNvZGVkVmFsdWUuYXNCaXRzLnRhZzsNCiAgICB9DQoNCiAg
ICAgX19mb3JjZWlubGluZSBpbnQzMl90IFJlZ2lzdGVyOjp1bnNhZmVQYXlsb2FkKCkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiB1LmVuY29kZWRWYWx1ZS5hc0JpdHMucGF5bG9hZDsNCiAg
ICB9DQoNCiAgICAgX19mb3JjZWlubGluZSBpbnQzMl90IFJlZ2lzdGVyOjp1bnNhZmVUYWcoKSBj
b25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHUuZW5jb2RlZFZhbHVlLmFzQml0cy50YWc7DQog
ICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBpbnQzMl90JiBSZWdpc3Rlcjo6cGF5bG9hZCgpDQog
ICAgew0KICAgICAgICByZXR1cm4gdS5lbmNvZGVkVmFsdWUuYXNCaXRzLnBheWxvYWQ7DQogICAg
fQ0KDQogICAgX19mb3JjZWlubGluZSBpbnQzMl90JiBSZWdpc3Rlcjo6dGFnKCkNCiAgICB7DQog
ICAgICAgIHJldHVybiB1LmVuY29kZWRWYWx1ZS5hc0JpdHMudGFnOw0KICAgIH0NCg0KfSANCg0K
bmFtZXNwYWNlIFdURiB7DQoNCiAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlND
OjpSZWdpc3Rlcj4gOiBWZWN0b3JUcmFpdHNCYXNlPHRydWUsIEpTQzo6UmVnaXN0ZXI+IHsgfTsN
Cg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGludGVycHJldGVyXFxDYWxsRnJhbWUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXFN0YWNr
VmlzaXRvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQnl0ZWNvZGVJbmRleC5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQpjbGFzcyBQcmludFN0cmVhbTsNCn0NCg0KbmFtZXNw
YWNlIEpTQyB7DQoNCnVzaW5nIENoZWNrcG9pbnQgPSB1aW50OF90Ow0Kc3RhdGljIGNvbnN0ZXhw
ciBDaGVja3BvaW50IG5vQ2hlY2twb2ludHMgPSAwOw0KDQpjbGFzcyBCeXRlY29kZUluZGV4IHsN
CnB1YmxpYzoNCiAgICBCeXRlY29kZUluZGV4KCkgPSBkZWZhdWx0Ow0KICAgIEJ5dGVjb2RlSW5k
ZXgoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQ0KICAgICAgICA6IG1fcGFja2VkQml0
cyhkZWxldGVkVmFsdWUoKS5hc0JpdHMoKSkNCiAgICB7DQogICAgfQ0KDQogICAgZXhwbGljaXQg
Qnl0ZWNvZGVJbmRleCh1aW50MzJfdCBieXRlY29kZU9mZnNldCwgQ2hlY2twb2ludCBjaGVja3Bv
aW50ID0gbm9DaGVja3BvaW50cykNCiAgICAgICAgOiBtX3BhY2tlZEJpdHMocGFjayhieXRlY29k
ZU9mZnNldCwgY2hlY2twb2ludCkpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBudW1iZXJPZkNoZWNrcG9pbnRzID0gNDsN
CiAgICBzdGF0aWNfYXNzZXJ0KGhhc09uZUJpdFNldChudW1iZXJPZkNoZWNrcG9pbnRzKSwgIm51
bWJlck9mQ2hlY2twb2ludHMgc2hvdWxkIGJlIGEgcG93ZXIgb2YgMiIpOw0KICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgY2hlY2twb2ludE1hc2sgPSBudW1iZXJPZkNoZWNrcG9pbnRzIC0g
MTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNoZWNrcG9pbnRTaGlmdCA9IFdURjo6
Z2V0TVNCU2V0Q29uc3RleHByKG51bWJlck9mQ2hlY2twb2ludHMpOw0KDQogICAgdWludDMyX3Qg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9wYWNrZWRCaXRzID4+IGNoZWNrcG9pbnRTaGlmdDsg
fQ0KICAgIENoZWNrcG9pbnQgY2hlY2twb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFja2VkQml0
cyAmIGNoZWNrcG9pbnRNYXNrOyB9DQogICAgdWludDMyX3QgYXNCaXRzKCkgY29uc3QgeyByZXR1
cm4gbV9wYWNrZWRCaXRzOyB9DQoNCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4g
V1RGOjppbnRIYXNoKG1fcGFja2VkQml0cyk7IH0NCiAgICBzdGF0aWMgQnl0ZWNvZGVJbmRleCBk
ZWxldGVkVmFsdWUoKSB7IHJldHVybiBmcm9tQml0cyhpbnZhbGlkT2Zmc2V0IC0gMSk7IH0NCiAg
ICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgPT0g
ZGVsZXRlZFZhbHVlKCk7IH0NCg0KICAgIHN0YXRpYyBCeXRlY29kZUluZGV4IGZyb21CaXRzKHVp
bnQzMl90IGJpdHMpOw0KICAgIEJ5dGVjb2RlSW5kZXggd2l0aENoZWNrcG9pbnQoQ2hlY2twb2lu
dCBjaGVja3BvaW50KSBjb25zdCB7IHJldHVybiBCeXRlY29kZUluZGV4KG9mZnNldCgpLCBjaGVj
a3BvaW50KTsgfQ0KDQogICAgDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFja2VkQml0cyAhPSBpbnZhbGlkT2Zmc2V0ICYmIG1fcGFja2VkQml0cyAhPSBk
ZWxldGVkVmFsdWUoKS5vZmZzZXQoKTsgfQ0KICAgIGJvb2wgb3BlcmF0b3IgPT0oY29uc3QgQnl0
ZWNvZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGFzQml0cygpID09IG90aGVyLmFzQml0
cygpOyB9DQogICAgYm9vbCBvcGVyYXRvciAhPShjb25zdCBCeXRlY29kZUluZGV4JiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0NCg0KICAgIGJvb2wgb3BlcmF0b3Ig
PChjb25zdCBCeXRlY29kZUluZGV4JiBvdGhlcikgY29uc3QgeyByZXR1cm4gYXNCaXRzKCkgPCBv
dGhlci5hc0JpdHMoKTsgfQ0KICAgIGJvb2wgb3BlcmF0b3IgPihjb25zdCBCeXRlY29kZUluZGV4
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gYXNCaXRzKCkgPiBvdGhlci5hc0JpdHMoKTsgfQ0KICAg
IGJvb2wgb3BlcmF0b3IgPD0oY29uc3QgQnl0ZWNvZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGFzQml0cygpIDw9IG90aGVyLmFzQml0cygpOyB9DQogICAgYm9vbCBvcGVyYXRvciA+PShj
b25zdCBCeXRlY29kZUluZGV4JiBvdGhlcikgY29uc3QgeyByZXR1cm4gYXNCaXRzKCkgPj0gb3Ro
ZXIuYXNCaXRzKCk7IH0NCg0KDQogICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mKSBjb25z
dDsNCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGludmFsaWRPZmZz
ZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7DQoNCiAgICBzdGF0aWMg
dWludDMyX3QgcGFjayh1aW50MzJfdCBieXRlY29kZUluZGV4LCBDaGVja3BvaW50KTsNCg0KICAg
IHVpbnQzMl90IG1fcGFja2VkQml0cyB7IGludmFsaWRPZmZzZXQgfTsNCn07DQoNCmlubGluZSB1
aW50MzJfdCBCeXRlY29kZUluZGV4OjpwYWNrKHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgsIENoZWNr
cG9pbnQgY2hlY2twb2ludCkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAg
IHJldHVybiBieXRlY29kZUluZGV4IDw8IGNoZWNrcG9pbnRTaGlmdCB8IGNoZWNrcG9pbnQ7DQp9
DQoNCmlubGluZSBCeXRlY29kZUluZGV4IEJ5dGVjb2RlSW5kZXg6OmZyb21CaXRzKHVpbnQzMl90
IGJpdHMpDQp7DQogICAgQnl0ZWNvZGVJbmRleCByZXN1bHQ7DQogICAgcmVzdWx0Lm1fcGFja2Vk
Qml0cyA9IGJpdHM7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0Kc3RydWN0IEJ5dGVjb2RlSW5k
ZXhIYXNoIHsNCiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBCeXRlY29kZUluZGV4JiBr
ZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBC
eXRlY29kZUluZGV4JiBhLCBjb25zdCBCeXRlY29kZUluZGV4JiBiKSB7IHJldHVybiBhID09IGI7
IH0NCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOw0KfTsNCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PEpTQzo6Qnl0ZWNvZGVJbmRleD4gOiBKU0M6OkJ5dGVjb2RlSW5kZXhIYXNoIHsgfTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPEpTQzo6Qnl0ZWNvZGVJbmRleD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlND
OjpCeXRlY29kZUluZGV4PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJ
c1plcm8gPSBmYWxzZTsNCn07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxpbnRlcnByZXRlclxcU3RhY2tWaXNpdG9yLmgi
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcd2FzbVxcV2FzbUluZGV4T3JOYW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHdhc21cXFdhc21OYW1l
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KbmFtZXNwYWNlIFdhc20gew0K
DQp1c2luZyBOYW1lID0gVmVjdG9yPExDaGFyPjsNCg0KfSB9IA0KI2xpbmUgMjkgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcd2FzbVxcV2FzbUluZGV4
T3JOYW1lLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHdhc21cXFdhc21OYW1lU2VjdGlvbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoN
Cg0KDQpuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gew0KDQpzdHJ1Y3QgTmFtZVNlY3Rp
b24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TmFtZVNlY3Rpb24+IHsNCiAgICBOYW1l
U2VjdGlvbihjb25zdCBOYW1lU2VjdGlvbiYpID0gZGVsZXRlOyBOYW1lU2VjdGlvbiYgb3BlcmF0
b3I9KGNvbnN0IE5hbWVTZWN0aW9uJikgPSBkZWxldGU7Ow0KcHVibGljOg0KICAgIE5hbWVTZWN0
aW9uKCkNCiAgICB7DQogICAgICAgIHNldEhhc2goV1RGOjpudWxsb3B0KTsNCiAgICB9DQoNCiAg
ICBzdGF0aWMgUmVmPE5hbWVTZWN0aW9uPiBjcmVhdGUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmFtZVNlY3Rpb24pOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0SGFzaChj
b25zdCBPcHRpb25hbDxDU3RyaW5nPiAmaGFzaCkNCiAgICB7DQogICAgICAgIG1vZHVsZUhhc2gg
PSBOYW1lKGhhc2ggPyBoYXNoLT5sZW5ndGgoKSA6IDMpOw0KICAgICAgICBpZiAoaGFzaCkgew0K
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoYXNoLT5sZW5ndGgoKTsgKytpKQ0K
ICAgICAgICAgICAgICAgIG1vZHVsZUhhc2hbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigqKGhh
c2gtPmRhdGEoKSArIGkpKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1vZHVsZUhh
c2hbMF0gPSAnPCc7DQogICAgICAgICAgICBtb2R1bGVIYXNoWzFdID0gJz8nOw0KICAgICAgICAg
ICAgbW9kdWxlSGFzaFsyXSA9ICc+JzsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHN0ZDo6cGFp
cjxjb25zdCBOYW1lKiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4gZ2V0KHNpemVfdCBmdW5jdGlvbklu
ZGV4U3BhY2UpDQogICAgew0KICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZnVuY3Rpb25J
bmRleFNwYWNlIDwgZnVuY3Rpb25OYW1lcy5zaXplKCkgPyAmZnVuY3Rpb25OYW1lc1tmdW5jdGlv
bkluZGV4U3BhY2VdIDogbnVsbHB0ciwgbWFrZVJlZlB0cih0aGlzKSk7DQogICAgfQ0KICAgIE5h
bWUgbW9kdWxlTmFtZTsNCiAgICBOYW1lIG1vZHVsZUhhc2g7DQogICAgVmVjdG9yPE5hbWU+IGZ1
bmN0aW9uTmFtZXM7DQp9Ow0KDQp9IH0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFx3YXNtXFxXYXNtSW5kZXhPck5hbWUuaCINCg0K
DQoNCg0KbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsNCg0Kc3RydWN0IE5hbWVTZWN0
aW9uOw0KDQoNCg0Kc3RydWN0IEluZGV4T3JOYW1lIHsNCiAgICB0eXBlZGVmIHNpemVfdCBJbmRl
eDsNCg0KICAgIEluZGV4T3JOYW1lKCkgeyBtX2luZGV4TmFtZS5pbmRleCA9IGVtcHR5VGFnOyB9
DQogICAgSW5kZXhPck5hbWUoSW5kZXgsIHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVmUHRyPE5h
bWVTZWN0aW9uPj4mJik7DQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PEluZGV4PihtX2luZGV4TmFtZSkgJiBlbXB0eVRhZzsgfQ0KICAgIGJvb2wgaXNJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbmRleD4obV9pbmRleE5hbWUpICYgaW5k
ZXhUYWc7IH0NCiAgICBib29sIGlzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICEoaXNFbXB0eSgpIHx8
IGlzTmFtZSgpKTsgfQ0KICAgIE5hbWVTZWN0aW9uKiBuYW1lU2VjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZVNlY3Rpb24uZ2V0KCk7IH0NCg0KICAgIGZyaWVuZCBTdHJpbmcgbWFrZVN0cmlu
Zyhjb25zdCBJbmRleE9yTmFtZSYpOw0KDQpwcml2YXRlOg0KICAgIHVuaW9uIHsNCiAgICAgICAg
SW5kZXggaW5kZXg7DQogICAgICAgIGNvbnN0IE5hbWUqIG5hbWU7DQogICAgfSBtX2luZGV4TmFt
ZTsNCiAgICBSZWZQdHI8TmFtZVNlY3Rpb24+IG1fbmFtZVNlY3Rpb247DQoNCiAgICANCiAgICBz
dGF0aWMgY29uc3RleHByIEluZGV4IGluZGV4VGFnID0gMXVsbCA8PCAoOCAqIHNpemVvZihJbmRl
eCkgLSAxKTsNCiAgICBzdGF0aWMgY29uc3RleHByIEluZGV4IGVtcHR5VGFnID0gMXVsbCA8PCAo
OCAqIHNpemVvZihJbmRleCkgLSAyKTsNCiAgICBzdGF0aWMgY29uc3RleHByIEluZGV4IGFsbFRh
Z3MgPSBpbmRleFRhZyB8IGVtcHR5VGFnOw0KfTsNCg0KU3RyaW5nIG1ha2VTdHJpbmcoY29uc3Qg
SW5kZXhPck5hbWUmKTsNCg0KfSB9IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXFN0YWNrVmlzaXRvci5oIg0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9JbmRlbnRlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoN
CmNsYXNzIEluZGVudGVyIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCog
cCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNp
emUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVs
ZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4g
bG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2lu
ZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVi
bGljOg0KICAgIEluZGVudGVyKHVuc2lnbmVkIGNvdW50ID0gMCwgU3RyaW5nIHN0cmluZyA9ICIg
ICJfcykNCiAgICAgICAgOiBtX2NvdW50KGNvdW50KQ0KICAgICAgICAsIG1fc3RyaW5nKHN0cmlu
ZykNCiAgICB7IH0NCg0KICAgIEluZGVudGVyKGNvbnN0IEluZGVudGVyJiBvdGhlcikNCiAgICAg
ICAgOiBtX2NvdW50KG90aGVyLm1fY291bnQpDQogICAgICAgICwgbV9zdHJpbmcob3RoZXIubV9z
dHJpbmcpDQogICAgeyB9DQoNCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QN
CiAgICB7DQogICAgICAgIHVuc2lnbmVkIGxldmVscyA9IG1fY291bnQ7DQogICAgICAgIHdoaWxl
IChsZXZlbHMtLSkNCiAgICAgICAgICAgIG91dC5wcmludChtX3N0cmluZyk7DQogICAgfQ0KDQog
ICAgdW5zaWduZWQgb3BlcmF0b3IrKygpIHsgcmV0dXJuICsrbV9jb3VudDsgfQ0KICAgIHVuc2ln
bmVkIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiBtX2NvdW50Kys7IH0NCiAgICB1bnNpZ25lZCBv
cGVyYXRvci0tKCkgeyByZXR1cm4gLS1tX2NvdW50OyB9DQogICAgdW5zaWduZWQgb3BlcmF0b3It
LShpbnQpIHsgcmV0dXJuIG1fY291bnQtLTsgfQ0KDQpwcml2YXRlOg0KICAgIHVuc2lnbmVkIG1f
Y291bnQ7DQogICAgU3RyaW5nIG1fc3RyaW5nOw0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpJbmRl
bnRlcjsNCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGludGVycHJldGVyXFxTdGFja1Zpc2l0b3IuaCINCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0Kc3RydWN0IEVudHJ5RnJhbWU7DQpzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOw0KDQpjbGFz
cyBDYWxsRnJhbWU7DQpjbGFzcyBDb2RlQmxvY2s7DQpjbGFzcyBDb2RlT3JpZ2luOw0KY2xhc3Mg
SlNDZWxsOw0KY2xhc3MgSlNGdW5jdGlvbjsNCmNsYXNzIENsb25lZEFyZ3VtZW50czsNCmNsYXNz
IFJlZ2lzdGVyOw0KY2xhc3MgUmVnaXN0ZXJBdE9mZnNldExpc3Q7DQoNCmNsYXNzIFN0YWNrVmlz
aXRvciB7DQpwdWJsaWM6DQogICAgY2xhc3MgRnJhbWUgew0KICAgIHB1YmxpYzoNCiAgICAgICAg
ZW51bSBDb2RlVHlwZSB7DQogICAgICAgICAgICBHbG9iYWwsDQogICAgICAgICAgICBFdmFsLA0K
ICAgICAgICAgICAgRnVuY3Rpb24sDQogICAgICAgICAgICBNb2R1bGUsDQogICAgICAgICAgICBO
YXRpdmUsDQogICAgICAgICAgICBXYXNtDQogICAgICAgIH07DQoNCiAgICAgICAgc2l6ZV90IGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQ0KICAgICAgICBzaXplX3QgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzOyB9DQogICAgICAgIGJvb2wgY2FsbGVySXNFbnRyeUZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsZXJJc0VudHJ5RnJhbWU7IH0NCiAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVyRnJhbWU7IH0NCiAgICAgICAgQ2FsbGVlQml0cyBj
YWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQ0KICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9DQogICAgICAgIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsgfQ0K
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSgpIGNvbnN0IHsNCg0KICAg
ICAgICAgICAgcmV0dXJuIG1faW5saW5lQ2FsbEZyYW1lOw0KDQoNCiNsaW5lIDc1ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJldGVyXFxT
dGFja1Zpc2l0b3IuaCINCiAgICAgICAgfQ0KDQogICAgICAgIGJvb2wgaXNOYXRpdmVGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuICFjb2RlQmxvY2soKSAmJiAhaXNXYXNtRnJhbWUoKTsgfQ0KICAgICAg
ICBib29sIGlzSW5saW5lZEZyYW1lKCkgY29uc3QgeyByZXR1cm4gISFpbmxpbmVDYWxsRnJhbWUo
KTsgfQ0KICAgICAgICBib29sIGlzV2FzbUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pc1dhc21G
cmFtZTsgfQ0KICAgICAgICBXYXNtOjpJbmRleE9yTmFtZSBjb25zdCB3YXNtRnVuY3Rpb25JbmRl
eE9yTmFtZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAg
IHJldHVybiBtX3dhc21GdW5jdGlvbkluZGV4T3JOYW1lOw0KICAgICAgICB9DQoNCiAgICAgICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsNCiAgICAg
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFN0cmluZyBzb3VyY2VVUkwoKSBjb25zdDsNCiAgICAg
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Ow0KDQogICAg
ICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnRwdHJfdCBzb3VyY2VJRCgpOw0KDQogICAgICAg
IENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3Q7DQogICAgICAgIGJvb2wgaGFzTGluZUFuZENvbHVt
bkluZm8oKSBjb25zdDsNCiAgICAgICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgY29tcHV0
ZUxpbmVBbmRDb2x1bW4odW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0Ow0K
DQoNCiAgICAgICAgT3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IGNhbGxlZVNhdmVSZWdp
c3RlcnNGb3JVbndpbmRpbmcoKTsNCiNsaW5lIDk5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJldGVyXFxTdGFja1Zpc2l0b3IuaCINCg0K
ICAgICAgICBDbG9uZWRBcmd1bWVudHMqIGNyZWF0ZUFyZ3VtZW50cyhWTSYpOw0KICAgICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lOyB9DQogICAg
ICAgIA0KICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBJbmRlbnRlciA9IEluZGVudGVy
KCkpIGNvbnN0Ow0KICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBJbmRlbnRlciwgV1RG
OjpGdW5jdGlvbjx2b2lkKFByaW50U3RyZWFtJik+IHByZWZpeCkgY29uc3Q7DQoNCiAgICBwcml2
YXRlOg0KICAgICAgICBGcmFtZSgpIHsgfQ0KICAgICAgICB+RnJhbWUoKSB7IH0NCg0KICAgICAg
ICB2b2lkIHJldHJpZXZlRXhwcmVzc2lvbkluZm8oaW50JiBkaXZvdCwgaW50JiBzdGFydE9mZnNl
dCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25z
dDsNCiAgICAgICAgdm9pZCBzZXRUb0VuZCgpOw0KDQoNCiAgICAgICAgSW5saW5lQ2FsbEZyYW1l
KiBtX2lubGluZUNhbGxGcmFtZTsNCiNsaW5lIDExNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxpbnRlcnByZXRlclxcU3RhY2tWaXNpdG9yLmgiDQog
ICAgICAgIENhbGxGcmFtZSogbV9jYWxsRnJhbWU7DQogICAgICAgIEVudHJ5RnJhbWUqIG1fZW50
cnlGcmFtZTsNCiAgICAgICAgRW50cnlGcmFtZSogbV9jYWxsZXJFbnRyeUZyYW1lOw0KICAgICAg
ICBDYWxsRnJhbWUqIG1fY2FsbGVyRnJhbWU7DQogICAgICAgIENhbGxlZUJpdHMgbV9jYWxsZWU7
DQogICAgICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7DQogICAgICAgIHNpemVfdCBtX2luZGV4
Ow0KICAgICAgICBzaXplX3QgbV9hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsNCiAgICAgICAg
Qnl0ZWNvZGVJbmRleCBtX2J5dGVjb2RlSW5kZXg7DQogICAgICAgIGJvb2wgbV9jYWxsZXJJc0Vu
dHJ5RnJhbWUgOiAxOw0KICAgICAgICBib29sIG1faXNXYXNtRnJhbWUgOiAxOw0KICAgICAgICBX
YXNtOjpJbmRleE9yTmFtZSBtX3dhc21GdW5jdGlvbkluZGV4T3JOYW1lOw0KDQogICAgICAgIGZy
aWVuZCBjbGFzcyBTdGFja1Zpc2l0b3I7DQogICAgfTsNCg0KICAgIGVudW0gU3RhdHVzIHsNCiAg
ICAgICAgQ29udGludWUgPSAwLA0KICAgICAgICBEb25lID0gMQ0KICAgIH07DQoNCiAgICANCiAg
ICANCg0KICAgIGVudW0gRW1wdHlFbnRyeUZyYW1lQWN0aW9uIHsNCiAgICAgICAgQ29udGludWVJ
ZlRvcEVudHJ5RnJhbWVJc0VtcHR5LA0KICAgICAgICBUZXJtaW5hdGVJZlRvcEVudHJ5RnJhbWVJ
c0VtcHR5LA0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZSA8RW1wdHlFbnRyeUZyYW1lQWN0aW9uIGFj
dGlvbiA9IENvbnRpbnVlSWZUb3BFbnRyeUZyYW1lSXNFbXB0eSwgdHlwZW5hbWUgRnVuY3Rvcj4N
CiAgICBzdGF0aWMgdm9pZCB2aXNpdChDYWxsRnJhbWUqIHN0YXJ0RnJhbWUsIFZNJiB2bSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikNCiAgICB7DQogICAgICAgIFN0YWNrVmlzaXRvciB2aXNpdG9y
KHN0YXJ0RnJhbWUsIHZtKTsNCiAgICAgICAgaWYgKGFjdGlvbiA9PSBUZXJtaW5hdGVJZlRvcEVu
dHJ5RnJhbWVJc0VtcHR5ICYmIHZpc2l0b3IudG9wRW50cnlGcmFtZUlzRW1wdHkoKSkNCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgd2hpbGUgKHZpc2l0b3ItPmNhbGxGcmFtZSgpKSB7DQog
ICAgICAgICAgICBTdGF0dXMgc3RhdHVzID0gZnVuY3Rvcih2aXNpdG9yKTsNCiAgICAgICAgICAg
IGlmIChzdGF0dXMgIT0gQ29udGludWUpDQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAg
ICAgICB2aXNpdG9yLmdvdG9OZXh0RnJhbWUoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIEZy
YW1lJiBvcGVyYXRvciooKSB7IHJldHVybiBtX2ZyYW1lOyB9DQogICAgX19mb3JjZWlubGluZSBG
cmFtZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZtX2ZyYW1lOyB9DQogICAgdm9pZCB1bndpbmRU
b01hY2hpbmVDb2RlQmxvY2tGcmFtZSgpOw0KDQogICAgYm9vbCB0b3BFbnRyeUZyYW1lSXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wRW50cnlGcmFtZUlzRW1wdHk7IH0NCg0KcHJpdmF0ZToN
CiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU3RhY2tWaXNpdG9yKENhbGxGcmFtZSogc3RhcnRG
cmFtZSwgVk0mKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGdvdG9OZXh0RnJh
bWUoKTsNCg0KICAgIHZvaWQgcmVhZEZyYW1lKENhbGxGcmFtZSopOw0KICAgIHZvaWQgcmVhZE5v
bklubGluZWRGcmFtZShDYWxsRnJhbWUqLCBDb2RlT3JpZ2luKiA9IG51bGxwdHIpOw0KDQogICAg
dm9pZCByZWFkSW5saW5lZEZyYW1lKENhbGxGcmFtZSosIENvZGVPcmlnaW4qKTsNCiNsaW5lIDE3
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxpbnRl
cnByZXRlclxcU3RhY2tWaXNpdG9yLmgiDQoNCiAgICBGcmFtZSBtX2ZyYW1lOw0KICAgIGJvb2wg
bV90b3BFbnRyeUZyYW1lSXNFbXB0eSB7IGZhbHNlIH07DQp9Ow0KDQpjbGFzcyBDYWxsZXJGdW5j
dG9yIHsNCnB1YmxpYzoNCiAgICBDYWxsZXJGdW5jdG9yKCkNCiAgICAgICAgOiBtX2hhc1NraXBw
ZWRGaXJzdEZyYW1lKGZhbHNlKQ0KICAgICAgICAsIG1fY2FsbGVyRnJhbWUobnVsbHB0cikNCiAg
ICB7DQogICAgfQ0KDQogICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGVyRnJhbWU7IH0NCg0KICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCko
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFtX2hhc1Nr
aXBwZWRGaXJzdEZyYW1lKSB7DQogICAgICAgICAgICBtX2hhc1NraXBwZWRGaXJzdEZyYW1lID0g
dHJ1ZTsNCiAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOw0KICAgICAg
ICB9DQoNCiAgICAgICAgbV9jYWxsZXJGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFtZSgpOw0KICAg
ICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOw0KICAgIH0NCiAgICANCnByaXZhdGU6DQog
ICAgbXV0YWJsZSBib29sIG1faGFzU2tpcHBlZEZpcnN0RnJhbWU7DQogICAgbXV0YWJsZSBDYWxs
RnJhbWUqIG1fY2FsbGVyRnJhbWU7DQp9Ow0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENhbGxGcmFt
ZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxWTS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDYWxsRGF0
YS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxOYXRpdmVGdW5jdGlvbi5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENhbGxGcmFtZTsNCg0KdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSAoICpSYXdOYXRpdmVGdW5jdGlvbikoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsNCg0KY2xhc3MgTmF0aXZlRnVuY3Rpb24gew0KcHVibGljOg0KICAgIE5hdGl2ZUZ1
bmN0aW9uKCkgPSBkZWZhdWx0Ow0KICAgIE5hdGl2ZUZ1bmN0aW9uKHN0ZDo6bnVsbHB0cl90KSA6
IG1fcHRyKG51bGxwdHIpIHsgfQ0KICAgIGV4cGxpY2l0IE5hdGl2ZUZ1bmN0aW9uKHVpbnRwdHJf
dCBiaXRzKSA6IG1fcHRyKGJpdHdpc2VfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oYml0cykpIHsg
fQ0KICAgIE5hdGl2ZUZ1bmN0aW9uKFJhd05hdGl2ZUZ1bmN0aW9uIG90aGVyKSA6IG1fcHRyKG90
aGVyKSB7IH0NCg0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGludHB0cl90KCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9wdHIpOyB9DQogICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7IH0NCiAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQ0KICAgIGJvb2wgb3BlcmF0b3I9PShOYXRpdmVG
dW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXIubV9wdHI7IH0NCiAg
ICBib29sIG9wZXJhdG9yIT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyID09IG90aGVyLm1fcHRyOyB9DQoNCiAgICBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRvcigpKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVy
biBtX3B0cihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7IH0NCg0KICAgIHZvaWQqIHJhd1BvaW50
ZXIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihtX3B0cik7IH0NCg0K
cHJpdmF0ZToNCiAgICBSYXdOYXRpdmVGdW5jdGlvbiBtX3B0cjsNCg0KICAgIGZyaWVuZCBjbGFz
cyBUYWdnZWROYXRpdmVGdW5jdGlvbjsNCn07DQoNCnN0cnVjdCBOYXRpdmVGdW5jdGlvbkhhc2gg
ew0KICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKE5hdGl2ZUZ1bmN0aW9uIGtleSkgeyByZXR1cm4g
SW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGtleSkpOyB9
DQogICAgc3RhdGljIGJvb2wgZXF1YWwoTmF0aXZlRnVuY3Rpb24gYSwgTmF0aXZlRnVuY3Rpb24g
YikgeyByZXR1cm4gYSA9PSBiOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0Nv
bXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsNCn07DQoNCmNsYXNzIFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIHsNCnB1YmxpYzoNCiAgICBUYWdnZWROYXRpdmVGdW5jdGlvbigpID0gZGVmYXVsdDsN
CiAgICBUYWdnZWROYXRpdmVGdW5jdGlvbihzdGQ6Om51bGxwdHJfdCkgOiBtX3B0cihudWxscHRy
KSB7IH0NCiAgICBleHBsaWNpdCBUYWdnZWROYXRpdmVGdW5jdGlvbihpbnRwdHJfdCBiaXRzKSA6
IG1fcHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oYml0cykpIHsgfQ0KDQogICAgVGFnZ2VkTmF0aXZl
RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuYykNCiAgICAgICAgOiBtX3B0cih0YWdDRnVuY3Rp
b25QdHI8dm9pZCosIEpTRW50cnlQdHJUYWc+KGZ1bmMubV9wdHIpKQ0KICAgIHsgfQ0KICAgIFRh
Z2dlZE5hdGl2ZUZ1bmN0aW9uKFJhd05hdGl2ZUZ1bmN0aW9uIGZ1bmMpDQogICAgICAgIDogbV9w
dHIodGFnQ0Z1bmN0aW9uUHRyPHZvaWQqLCBKU0VudHJ5UHRyVGFnPihmdW5jKSkNCiAgICB7IH0N
Cg0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9
DQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0NCiAgICBib29s
IG9wZXJhdG9yPT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyID09IG90aGVyLm1fcHRyOyB9DQogICAgYm9vbCBvcGVyYXRvciE9KFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSBvdGhlci5tX3B0cjsgfQ0KDQog
ICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gTmF0aXZlRnVuY3Rpb24oKnRoaXMpKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQ0KDQogICAgZXhwbGljaXQgb3BlcmF0b3IgTmF0aXZl
RnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gdW50
YWdDRnVuY3Rpb25QdHI8TmF0aXZlRnVuY3Rpb24sIEpTRW50cnlQdHJUYWc+KG1fcHRyKTsNCiAg
ICB9DQoNCiAgICB2b2lkKiByYXdQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0NCg0K
cHJpdmF0ZToNCiAgICB2b2lkKiBtX3B0cjsNCn07DQoNCnN0cnVjdCBUYWdnZWROYXRpdmVGdW5j
dGlvbkhhc2ggew0KICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFRhZ2dlZE5hdGl2ZUZ1bmN0aW9u
IGtleSkgeyByZXR1cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGtleSkpOyB9DQogICAgc3RhdGljIGJvb2wgZXF1YWwoVGFnZ2VkTmF0aXZlRnVuY3Rp
b24gYSwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gYikgeyByZXR1cm4gYSA9PSBiOyB9DQogICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsN
Cn07DQoNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKE5hdGl2ZUZ1bmN0aW9uKSA9PSBzaXplb2Yodm9p
ZCopLCAiIik7DQpzdGF0aWNfYXNzZXJ0KHNpemVvZihUYWdnZWROYXRpdmVGdW5jdGlvbikgPT0g
c2l6ZW9mKHZvaWQqKSwgIiIpOw0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBEZWZhdWx0SGFzaDsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPEpTQzo6TmF0aXZlRnVuY3Rpb24+IDogSlNDOjpOYXRpdmVGdW5jdGlvbkhhc2ggeyB9Ow0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8SlNDOjpUYWdnZWROYXRpdmVGdW5jdGlvbj4gOiBKU0M6OlRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uSGFzaCB7IH07DQoNCn0gDQoNCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXENhbGxEYXRhLmgiDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9OYWtlZFB0ci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCg0K
DQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTmFrZWRQdHIgew0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgX19mb3JjZWlubGluZSBOYWtlZFB0cigp
IDogbV9wdHIobnVsbHB0cikgeyB9DQogICAgX19mb3JjZWlubGluZSBOYWtlZFB0cihUKiBwdHIp
IDogbV9wdHIocHRyKSB7IH0NCiAgICBfX2ZvcmNlaW5saW5lIE5ha2VkUHRyKGNvbnN0IE5ha2Vk
UHRyJiBvKSA6IG1fcHRyKG8ubV9wdHIpIHsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IE5h
a2VkUHRyKGNvbnN0IE5ha2VkUHRyPFU+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgfQ0KDQogICAg
X19mb3JjZWlubGluZSBOYWtlZFB0cihOYWtlZFB0ciYmIG8pIDogbV9wdHIoby5nZXQoKSkgeyB9
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gTmFrZWRQdHIoTmFrZWRQdHI8VT4mJiBvKSA6IG1f
cHRyKG8uZ2V0KCkpIHsgfQ0KDQogICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0N
Cg0KICAgIHZvaWQgY2xlYXIoKSB7IG1fcHRyID0gbnVsbHB0cjsgfQ0KDQogICAgVCYgb3BlcmF0
b3IqKCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiAqbV9wdHI7IH0NCiAgICBfX2ZvcmNlaW5s
aW5lIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQ0KDQogICAgb3BlcmF0
b3IgVCooKSB7IHJldHVybiBtX3B0cjsgfQ0KDQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9wdHI7IH0NCiAgICANCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gISFtX3B0cjsgfQ0KDQogICAgTmFrZWRQdHImIG9wZXJhdG9yPShjb25zdCBO
YWtlZFB0ciYpOw0KICAgIE5ha2VkUHRyJiBvcGVyYXRvcj0oVCopOw0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IE5ha2VkUHRyJiBvcGVyYXRvcj0oY29uc3QgTmFrZWRQdHI8VT4mKTsNCiAgICBO
YWtlZFB0ciYgb3BlcmF0b3I9KE5ha2VkUHRyJiYpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IE5ha2VkUHRyJiBvcGVyYXRvcj0oTmFrZWRQdHI8VT4mJik7DQoNCiAgICB2b2lkIHN3YXAoTmFr
ZWRQdHImKTsNCg0KcHJpdmF0ZToNCiAgICBUKiBtX3B0cjsNCn07DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBOYWtlZFB0cjxUPiYgTmFrZWRQdHI8VD46Om9wZXJhdG9yPShjb25zdCBO
YWtlZFB0ciYgbykNCnsNCiAgICBtX3B0ciA9IG8ubV9wdHI7DQogICAgcmV0dXJuICp0aGlzOw0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+
OjpvcGVyYXRvcj0oVCogb3B0cikNCnsNCiAgICBtX3B0ciA9IG9wdHI7DQogICAgcmV0dXJuICp0
aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxp
bmUgTmFrZWRQdHI8VD4mIE5ha2VkUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgTmFrZWRQdHI8VT4m
IG8pDQp7DQogICAgTmFrZWRQdHIgcHRyID0gbzsNCiAgICBzd2FwKHB0cik7DQogICAgcmV0dXJu
ICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgTmFrZWRQdHI8VD4mIE5h
a2VkUHRyPFQ+OjpvcGVyYXRvcj0oTmFrZWRQdHImJiBvKQ0Kew0KICAgIE5ha2VkUHRyIHB0ciA9
IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obyk7DQogICAgc3dhcChwdHIpOw0K
ICAgIHJldHVybiAqdGhpczsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gaW5saW5lIE5ha2VkUHRyPFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KE5ha2Vk
UHRyPFU+JiYgbykNCnsNCiAgICBOYWtlZFB0ciBwdHIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01v
dmVQYXJhbWV0ZXI+KG8pOw0KICAgIHN3YXAocHRyKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoN
CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIE5ha2VkUHRyPFQ+Ojpzd2FwKE5ha2VkUHRy
JiBvKQ0Kew0KICAgIHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7DQp9DQoNCnRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoTmFrZWRQdHI8VD4mIGEsIE5ha2VkUHRyPFQ+JiBiKQ0K
ew0KICAgIGEuc3dhcChiKTsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjpOYWtlZFB0cjsNCiNsaW5l
IDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXENhbGxEYXRhLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBBcmdMaXN0Ow0K
Y2xhc3MgRXhjZXB0aW9uOw0KY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOw0KY2xhc3MgSlNTY29w
ZTsNCg0Kc3RydWN0IENhbGxEYXRhIHsNCiAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsg
Tm9uZSwgTmF0aXZlLCBKUyB9Ow0KICAgIFR5cGUgdHlwZSB7IFR5cGU6Ok5vbmUgfTsNCg0KICAg
IHVuaW9uIHsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uOw0KICAgICAgICB9IG5hdGl2ZTsNCiAgICAgICAgc3RydWN0IHsNCiAgICAg
ICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlOw0KICAgICAgICAg
ICAgSlNTY29wZSogc2NvcGU7DQogICAgICAgIH0ganM7DQogICAgfTsNCn07DQoNCmVudW0gY2xh
c3MgUHJvZmlsaW5nUmVhc29uIDogdWludDhfdCB7DQogICAgQVBJLA0KICAgIE1pY3JvdGFzaywN
CiAgICBPdGhlcg0KfTsNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZSBjYWxsKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgQXJnTGlzdCYsIGNv
bnN0IGNoYXIqIGVycm9yTWVzc2FnZSk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZSBj
YWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOw0KDQpfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZSBjYWxsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBm
dW5jdGlvbk9iamVjdCwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3Qg
QXJnTGlzdCYpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTVmFsdWUgY2FsbChKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0
aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4
Y2VwdGlvbik7DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlIHByb2ZpbGVkQ2FsbChK
U0dsb2JhbE9iamVjdCosIFByb2ZpbGluZ1JlYXNvbiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
Y29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOw0KX19k
ZWNsc3BlYyhkbGxleHBvcnQpIEpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTR2xvYmFsT2JqZWN0Kiwg
UHJvZmlsaW5nUmVhc29uLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBDYWxsRGF0YSYs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiwgTmFrZWRQdHI8RXhjZXB0aW9uPiYg
cmV0dXJuZWRFeGNlcHRpb24pOw0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVu
dW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCA6IHVpbnQ4X3QgeyBDb2RlRm9yQ2FsbCwgQ29kZUZv
ckNvbnN0cnVjdCB9Ow0KDQppbmxpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXph
dGlvbkZyb21Jc0NhbGwoYm9vbCBpc0NhbGwpDQp7DQogICAgcmV0dXJuIGlzQ2FsbCA/IENvZGVG
b3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdDsNCn0NCg0KaW5saW5lIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgc3BlY2lhbGl6YXRpb25Gcm9tSXNDb25zdHJ1Y3QoYm9vbCBpc0NvbnN0cnVjdCkNCnsN
CiAgICByZXR1cm4gaXNDb25zdHJ1Y3QgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGw7
DQp9DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCnZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6Q29kZVNwZWNpYWxpemF0aW9uS2luZCk7
DQoNCn0gDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxDb21wbGV0ZVN1YnNwYWNlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGhlYXBcXFN1YnNwYWNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEFsbG9jYXRpb25G
YWlsdXJlTW9kZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xhc3MgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlIHsNCiAgICBBc3NlcnQsDQogICAgUmV0dXJuTnVsbA0KfTsNCg0K
fSANCg0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaGVhcFxcU3Vic3BhY2UuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcQWxsb2NhdG9yRm9yTW9kZS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KZW51bSBjbGFzcyBBbGxvY2F0b3JGb3JNb2Rl
IHsNCiAgICBNdXN0QWxyZWFkeUhhdmVBbGxvY2F0b3IsDQogICAgRW5zdXJlQWxsb2NhdG9yLA0K
ICAgIEFsbG9jYXRvcklmRXhpc3RzDQp9Ow0KDQp9IA0KDQojbGluZSAzMCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxTdWJzcGFjZS5oIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxoZWFwXFxBbGxvY2F0b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpj
bGFzcyBHQ0RlZmVycmFsQ29udGV4dDsNCmNsYXNzIEhlYXA7DQpjbGFzcyBMb2NhbEFsbG9jYXRv
cjsNCg0KDQoNCg0KY2xhc3MgQWxsb2NhdG9yIHsNCnB1YmxpYzoNCiAgICBBbGxvY2F0b3IoKSB7
IH0NCiAgICANCiAgICBleHBsaWNpdCBBbGxvY2F0b3IoTG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxs
b2NhdG9yKQ0KICAgICAgICA6IG1fbG9jYWxBbGxvY2F0b3IobG9jYWxBbGxvY2F0b3IpDQogICAg
ew0KICAgIH0NCiAgICANCiAgICB2b2lkKiBhbGxvY2F0ZShIZWFwJiwgR0NEZWZlcnJhbENvbnRl
eHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpIGNvbnN0Ow0KICAgIA0KICAgIHVuc2lnbmVkIGNl
bGxTaXplKCkgY29uc3Q7DQogICAgDQogICAgTG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxsb2NhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFsbG9jYXRvcjsgfQ0KICAgIA0KICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBbGxvY2F0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQWxs
b2NhdG9yID09IG90aGVyLmxvY2FsQWxsb2NhdG9yKCk7IH0NCiAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgQWxsb2NhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0NCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0g
QWxsb2NhdG9yKCk7IH0NCiAgICANCnByaXZhdGU6DQogICAgTG9jYWxBbGxvY2F0b3IqIG1fbG9j
YWxBbGxvY2F0b3IgeyBudWxscHRyIH07DQp9Ow0KDQp9IA0KDQojbGluZSAzMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxTdWJzcGFjZS5o
Ig0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxoZWFwXFxNYXJrZWRCbG9jay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcQ2VsbEF0dHJpYnV0ZXMuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaGVhcFxcRGVzdHJ1Y3Rpb25Nb2RlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KZW51bSBEZXN0cnVjdGlvbk1vZGUgOiBpbnQ4X3Qgew0KICAgIERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sDQogICAgTmVlZHNEZXN0cnVjdGlvbg0KfTsNCg0KfSANCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCmNsYXNzIFByaW50U3RyZWFtOw0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgSlNDOjpEZXN0cnVjdGlvbk1vZGUpOw0KDQp9IA0KDQojbGluZSAyOSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxDZWxsQXR0cmlidXRl
cy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxoZWFwXFxIZWFwQ2VsbC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEVuc3VyZVN0
aWxsQWxpdmVIZXJlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCINCg0KX19kZWNs
c3BlYyhkbGxleHBvcnQpIHZvaWQgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodWludDY0X3QgdmFsdWUp
Ow0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoY29uc3Qg
dm9pZCopOw0KDQojbGluZSA0OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIg0KDQp9IA0KI2xp
bmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcSGVhcENlbGwuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENlbGxDb250YWlu
ZXI7DQpjbGFzcyBIZWFwOw0KY2xhc3MgUHJlY2lzZUFsbG9jYXRpb247DQpjbGFzcyBNYXJrZWRC
bG9jazsNCmNsYXNzIFN1YnNwYWNlOw0KY2xhc3MgVk07DQpzdHJ1Y3QgQ2VsbEF0dHJpYnV0ZXM7
DQoNCmNsYXNzIEhlYXBDZWxsIHsNCnB1YmxpYzoNCiAgICBlbnVtIEtpbmQgOiBpbnQ4X3Qgew0K
ICAgICAgICBKU0NlbGwsDQogICAgICAgIEpTQ2VsbFdpdGhJbmRleGluZ0hlYWRlciwNCiAgICAg
ICAgQXV4aWxpYXJ5DQogICAgfTsNCiAgICANCiAgICBIZWFwQ2VsbCgpIHsgfQ0KICAgIA0KICAg
IA0KICAgIA0KICAgIGVudW0gWmFwUmVhc29uIDogaW50OF90IHsgVW5zcGVjaWZpZWQsIERlc3Ry
dWN0aW9uLCBTdG9wQWxsb2NhdGluZyB9Ow0KICAgIHZvaWQgemFwKFphcFJlYXNvbiByZWFzb24p
DQogICAgew0KICAgICAgICB1aW50MzJfdCogY2VsbFdvcmRzID0gYml0d2lzZV9jYXN0PHVpbnQz
Ml90Kj4odGhpcyk7DQogICAgICAgIGNlbGxXb3Jkc1swXSA9IDA7DQogICAgICAgIA0KICAgICAg
ICBjZWxsV29yZHNbMl0gPSByZWFzb247DQogICAgfQ0KICAgIGJvb2wgaXNaYXBwZWQoKSBjb25z
dCB7IHJldHVybiAhKmJpdHdpc2VfY2FzdDxjb25zdCB1aW50MzJfdCo+KHRoaXMpOyB9DQoNCiAg
ICBib29sIGlzTGl2ZSgpOw0KDQogICAgYm9vbCBpc1ByZWNpc2VBbGxvY2F0aW9uKCkgY29uc3Q7
DQogICAgQ2VsbENvbnRhaW5lciBjZWxsQ29udGFpbmVyKCkgY29uc3Q7DQogICAgTWFya2VkQmxv
Y2smIG1hcmtlZEJsb2NrKCkgY29uc3Q7DQogICAgUHJlY2lzZUFsbG9jYXRpb24mIHByZWNpc2VB
bGxvY2F0aW9uKCkgY29uc3Q7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICBIZWFwKiBoZWFwKCkgY29uc3Q7DQogICAgVk0mIHZtKCkgY29uc3Q7DQogICAgDQogICAg
c2l6ZV90IGNlbGxTaXplKCkgY29uc3Q7DQogICAgQ2VsbEF0dHJpYnV0ZXMgY2VsbEF0dHJpYnV0
ZXMoKSBjb25zdDsNCiAgICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlKCkgY29uc3Q7
DQogICAgS2luZCBjZWxsS2luZCgpIGNvbnN0Ow0KICAgIFN1YnNwYWNlKiBzdWJzcGFjZSgpIGNv
bnN0Ow0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCB1c2Uo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodGhpcyk7DQogICAg
fQ0KfTsNCg0KaW5saW5lIGJvb2wgaXNKU0NlbGxLaW5kKEhlYXBDZWxsOjpLaW5kIGtpbmQpDQp7
DQogICAgcmV0dXJuIGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCB8fCBraW5kID09IEhlYXBDZWxs
OjpKU0NlbGxXaXRoSW5kZXhpbmdIZWFkZXI7DQp9DQoNCmlubGluZSBib29sIG1heUhhdmVJbmRl
eGluZ0hlYWRlcihIZWFwQ2VsbDo6S2luZCBraW5kKQ0Kew0KICAgIHJldHVybiBraW5kID09IEhl
YXBDZWxsOjpBdXhpbGlhcnkgfHwga2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsV2l0aEluZGV4aW5n
SGVhZGVyOw0KfQ0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07
DQoNCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SGVhcENlbGw6OktpbmQp
Ow0KDQp9IA0KDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxoZWFwXFxDZWxsQXR0cmlidXRlcy5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQpzdHJ1Y3QgQ2VsbEF0dHJpYnV0ZXMgew0KICAgIENlbGxBdHRyaWJ1dGVzKCkgeyB9DQog
ICAgDQogICAgQ2VsbEF0dHJpYnV0ZXMoRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6S2luZCBjZWxsS2luZCkNCiAgICAgICAgOiBkZXN0cnVjdGlvbihkZXN0cnVjdGlvbikN
CiAgICAgICAgLCBjZWxsS2luZChjZWxsS2luZCkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7DQog
ICAgDQogICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uIHsgRG9lc05vdE5lZWREZXN0cnVj
dGlvbiB9Ow0KICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kIHsgSGVhcENlbGw6OkpTQ2VsbCB9
Ow0KfTsNCg0KfSANCg0KI2xpbmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkQmxvY2suaCINCg0KDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEl0
ZXJhdGlvblN0YXR1cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xhc3Mg
SXRlcmF0aW9uU3RhdHVzIHsNCiAgICBDb250aW51ZSwNCiAgICBEb25lDQp9Ow0KDQp9IA0KI2xp
bmUgMjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcTWFya2VkQmxvY2suaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcV2Vha1NldC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFw
XFxDZWxsQ29udGFpbmVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNz
IEhlYXA7DQpjbGFzcyBIZWFwQ2VsbDsNCmNsYXNzIFByZWNpc2VBbGxvY2F0aW9uOw0KY2xhc3Mg
TWFya2VkQmxvY2s7DQpjbGFzcyBXZWFrU2V0Ow0KY2xhc3MgVk07DQoNCnR5cGVkZWYgdWludDMy
X3QgSGVhcFZlcnNpb247DQoNCg0KDQoNCmNsYXNzIENlbGxDb250YWluZXIgew0KcHVibGljOg0K
ICAgIENlbGxDb250YWluZXIoKQ0KICAgICAgICA6IG1fZW5jb2RlZFBvaW50ZXIoMCkNCiAgICB7
DQogICAgfQ0KICAgIA0KICAgIENlbGxDb250YWluZXIoTWFya2VkQmxvY2smIG1hcmtlZEJsb2Nr
KQ0KICAgICAgICA6IG1fZW5jb2RlZFBvaW50ZXIoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJm1h
cmtlZEJsb2NrKSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIENlbGxDb250YWluZXIoUHJlY2lz
ZUFsbG9jYXRpb24mIHByZWNpc2VBbGxvY2F0aW9uKQ0KICAgICAgICA6IG1fZW5jb2RlZFBvaW50
ZXIoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJnByZWNpc2VBbGxvY2F0aW9uKSB8IGlzUHJlY2lz
ZUFsbG9jYXRpb25CaXQpDQogICAgew0KICAgIH0NCiAgICANCiAgICBWTSYgdm0oKSBjb25zdDsN
CiAgICBIZWFwKiBoZWFwKCkgY29uc3Q7DQogICAgDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICEhbV9lbmNvZGVkUG9pbnRlcjsgfQ0KICAgIA0KICAgIGJvb2wg
aXNNYXJrZWRCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZFBvaW50ZXIgJiYgIShtX2Vu
Y29kZWRQb2ludGVyICYgaXNQcmVjaXNlQWxsb2NhdGlvbkJpdCk7IH0NCiAgICBib29sIGlzUHJl
Y2lzZUFsbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRQb2ludGVyICYgaXNQcmVj
aXNlQWxsb2NhdGlvbkJpdDsgfQ0KICAgIA0KICAgIE1hcmtlZEJsb2NrJiBtYXJrZWRCbG9jaygp
IGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiAqYml0d2lz
ZV9jYXN0PE1hcmtlZEJsb2NrKj4obV9lbmNvZGVkUG9pbnRlcik7DQogICAgfQ0KICAgIA0KICAg
IFByZWNpc2VBbGxvY2F0aW9uJiBwcmVjaXNlQWxsb2NhdGlvbigpIGNvbnN0DQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFByZWNpc2VBbGxv
Y2F0aW9uKj4obV9lbmNvZGVkUG9pbnRlciAtIGlzUHJlY2lzZUFsbG9jYXRpb25CaXQpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9u
KTsNCiAgICBib29sIGFyZU1hcmtzU3RhbGUoKSBjb25zdDsNCiAgICANCiAgICBib29sIGlzTWFy
a2VkKEhlYXBDZWxsKikgY29uc3Q7DQogICAgYm9vbCBpc01hcmtlZChIZWFwVmVyc2lvbiBtYXJr
aW5nVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsNCiAgICANCiAgICBib29sIGlzTmV3bHlBbGxv
Y2F0ZWQoSGVhcENlbGwqKSBjb25zdDsNCiAgICANCiAgICB2b2lkIG5vdGVNYXJrZWQoKTsNCiAg
ICB2b2lkIGFzc2VydFZhbGlkQ2VsbChWTSYsIEhlYXBDZWxsKikgY29uc3Q7DQogICAgDQogICAg
c2l6ZV90IGNlbGxTaXplKCkgY29uc3Q7DQogICAgDQogICAgV2Vha1NldCYgd2Vha1NldCgpIGNv
bnN0Ow0KICAgIA0KcHJpdmF0ZToNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBpc1By
ZWNpc2VBbGxvY2F0aW9uQml0ID0gMTsNCiAgICB1aW50cHRyX3QgbV9lbmNvZGVkUG9pbnRlcjsN
Cn07DQoNCn0gDQoNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGhlYXBcXFdlYWtTZXQuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcV2Vha0Jsb2NrLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcV2Vha0ltcGwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KY2xhc3MgV2Vha0hhbmRsZU93bmVyOw0KDQpjbGFzcyBXZWFrSW1wbCB7DQpwdWJsaWM6
DQogICAgZW51bSBTdGF0ZSB7DQogICAgICAgIExpdmUgICAgICAgID0gMHgwLA0KICAgICAgICBE
ZWFkICAgICAgICA9IDB4MSwNCiAgICAgICAgRmluYWxpemVkICAgPSAweDIsDQogICAgICAgIERl
YWxsb2NhdGVkID0gMHgzDQogICAgfTsNCg0KICAgIGVudW0gew0KICAgICAgICBTdGF0ZU1hc2sg
ICA9IDB4Mw0KICAgIH07DQoNCiAgICBXZWFrSW1wbCgpOw0KICAgIFdlYWtJbXBsKEpTVmFsdWUs
IFdlYWtIYW5kbGVPd25lciosIHZvaWQqIGNvbnRleHQpOw0KDQogICAgU3RhdGUgc3RhdGUoKTsN
CiAgICB2b2lkIHNldFN0YXRlKFN0YXRlKTsNCg0KICAgIGNvbnN0IEpTVmFsdWUmIGpzVmFsdWUo
KTsNCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSlNWYWx1ZSgpIHsgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFdlYWtJbXBsKj4oMHg0
MDAwKS0+bV9qc1ZhbHVlKSkgLSAweDQwMDApOyB9DQogICAgV2Vha0hhbmRsZU93bmVyKiB3ZWFr
SGFuZGxlT3duZXIoKTsNCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mV2Vha0hhbmRsZU93
bmVyKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0
X2Nhc3Q8V2Vha0ltcGwqPigweDQwMDApLT5tX3dlYWtIYW5kbGVPd25lcikpIC0gMHg0MDAwKTsg
fQ0KICAgIHZvaWQqIGNvbnRleHQoKTsNCg0KICAgIHN0YXRpYyBXZWFrSW1wbCogYXNXZWFrSW1w
bChKU1ZhbHVlKik7DQoNCnByaXZhdGU6DQogICAgY29uc3QgSlNWYWx1ZSBtX2pzVmFsdWU7DQog
ICAgV2Vha0hhbmRsZU93bmVyKiBtX3dlYWtIYW5kbGVPd25lcjsNCiAgICB2b2lkKiBtX2NvbnRl
eHQ7DQp9Ow0KDQppbmxpbmUgV2Vha0ltcGw6OldlYWtJbXBsKCkNCiAgICA6IG1fd2Vha0hhbmRs
ZU93bmVyKG51bGxwdHIpDQogICAgLCBtX2NvbnRleHQobnVsbHB0cikNCnsNCiAgICBzZXRTdGF0
ZShEZWFsbG9jYXRlZCk7DQp9DQoNCmlubGluZSBXZWFrSW1wbDo6V2Vha0ltcGwoSlNWYWx1ZSBq
c1ZhbHVlLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciwgdm9pZCogY29udGV4dCkN
CiAgICA6IG1fanNWYWx1ZShqc1ZhbHVlKQ0KICAgICwgbV93ZWFrSGFuZGxlT3duZXIod2Vha0hh
bmRsZU93bmVyKQ0KICAgICwgbV9jb250ZXh0KGNvbnRleHQpDQp7DQogICAgKCh2b2lkKTApOw0K
ICAgICgodm9pZCkwKTsNCn0NCg0KaW5saW5lIFdlYWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3Rh
dGUoKQ0Kew0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZT4ocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KG1fd2Vha0hhbmRsZU93bmVyKSAmIFN0YXRlTWFzayk7DQp9DQoNCmlubGluZSB2
b2lkIFdlYWtJbXBsOjpzZXRTdGF0ZShXZWFrSW1wbDo6U3RhdGUgc3RhdGUpDQp7DQogICAgKCh2
b2lkKTApOw0KICAgIG1fd2Vha0hhbmRsZU93bmVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWFrSGFu
ZGxlT3duZXIqPigocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fd2Vha0hhbmRsZU93bmVy
KSAmIH5TdGF0ZU1hc2spIHwgc3RhdGUpOw0KfQ0KDQppbmxpbmUgY29uc3QgSlNWYWx1ZSYgV2Vh
a0ltcGw6OmpzVmFsdWUoKQ0Kew0KICAgIHJldHVybiBtX2pzVmFsdWU7DQp9DQoNCmlubGluZSBX
ZWFrSGFuZGxlT3duZXIqIFdlYWtJbXBsOjp3ZWFrSGFuZGxlT3duZXIoKQ0Kew0KICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdlYWtIYW5kbGVPd25lcio+KChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4obV93ZWFrSGFuZGxlT3duZXIpICYgflN0YXRlTWFzaykpOw0KfQ0KDQppbmxpbmUg
dm9pZCogV2Vha0ltcGw6OmNvbnRleHQoKQ0Kew0KICAgIHJldHVybiBtX2NvbnRleHQ7DQp9DQoN
CmlubGluZSBXZWFrSW1wbCogV2Vha0ltcGw6OmFzV2Vha0ltcGwoSlNWYWx1ZSogc2xvdCkNCnsN
CiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWFrSW1wbCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHNsb3QpICsgKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0
X2Nhc3Q8V2Vha0ltcGwqPigweDQwMDApLT5tX2pzVmFsdWUpKSAtIDB4NDAwMCkpOw0KfQ0KDQp9
IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcaGVhcFxcV2Vha0Jsb2NrLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Eb3VibHlMaW5rZWRMaXN0LmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBE
b3VibHlMaW5rZWRMaXN0Tm9kZSB7DQpwdWJsaWM6DQogICAgRG91Ymx5TGlua2VkTGlzdE5vZGUo
KTsNCiAgICANCiAgICB2b2lkIHNldFByZXYoVCopOw0KICAgIHZvaWQgc2V0TmV4dChUKik7DQog
ICAgDQogICAgVCogcHJldigpIGNvbnN0Ow0KICAgIFQqIG5leHQoKSBjb25zdDsNCn07DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBEb3VibHlMaW5rZWRMaXN0Tm9kZTxUPjo6RG91Ymx5
TGlua2VkTGlzdE5vZGUoKQ0Kew0KICAgIHNldFByZXYoMCk7DQogICAgc2V0TmV4dCgwKTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgRG91Ymx5TGlua2VkTGlzdE5vZGU8
VD46OnNldFByZXYoVCogcHJldikNCnsNCiAgICBzdGF0aWNfY2FzdDxUKj4odGhpcyktPm1fcHJl
diA9IHByZXY7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIERvdWJseUxp
bmtlZExpc3ROb2RlPFQ+OjpzZXROZXh0KFQqIG5leHQpDQp7DQogICAgc3RhdGljX2Nhc3Q8VCo+
KHRoaXMpLT5tX25leHQgPSBuZXh0Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
VCogRG91Ymx5TGlua2VkTGlzdE5vZGU8VD46OnByZXYoKSBjb25zdA0Kew0KICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBUKj4odGhpcyktPm1fcHJldjsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFQqIERvdWJseUxpbmtlZExpc3ROb2RlPFQ+OjpuZXh0KCkgY29uc3QNCnsN
CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KHRoaXMpLT5tX25leHQ7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+DQpjbGFzcyBEb3VibHlMaW5rZWRMaXN0IHsNCnB1YmxpYzoNCiAg
ICBEb3VibHlMaW5rZWRMaXN0KCk7DQogICAgDQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7DQog
ICAgc2l6ZV90IHNpemUoKSBjb25zdDsgDQogICAgdm9pZCBjbGVhcigpOw0KDQogICAgVCogaGVh
ZCgpIGNvbnN0Ow0KICAgIFQqIHJlbW92ZUhlYWQoKTsNCg0KICAgIFQqIHRhaWwoKSBjb25zdDsN
Cg0KICAgIHZvaWQgcHVzaChUKik7DQogICAgdm9pZCBhcHBlbmQoVCopOw0KICAgIHZvaWQgcmVt
b3ZlKFQqKTsNCiAgICB2b2lkIGFwcGVuZChEb3VibHlMaW5rZWRMaXN0PFQ+Jik7DQoNCnByaXZh
dGU6DQogICAgVCogbV9oZWFkOw0KICAgIFQqIG1fdGFpbDsNCn07DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBEb3VibHlMaW5rZWRMaXN0PFQ+OjpEb3VibHlMaW5rZWRMaXN0KCkNCiAg
ICA6IG1faGVhZCgwKQ0KICAgICwgbV90YWlsKDApDQp7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIERvdWJseUxpbmtlZExpc3Q8VD46OmlzRW1wdHkoKSBjb25zdA0Kew0K
ICAgIHJldHVybiAhbV9oZWFkOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgc2l6
ZV90IERvdWJseUxpbmtlZExpc3Q8VD46OnNpemUoKSBjb25zdA0Kew0KICAgIHNpemVfdCBzaXpl
ID0gMDsNCiAgICBmb3IgKFQqIG5vZGUgPSBtX2hlYWQ7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0
KCkpDQogICAgICAgICsrc2l6ZTsNCiAgICByZXR1cm4gc2l6ZTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgRG91Ymx5TGlua2VkTGlzdDxUPjo6Y2xlYXIoKQ0Kew0KICAg
IG1faGVhZCA9IDA7DQogICAgbV90YWlsID0gMDsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIFQqIERvdWJseUxpbmtlZExpc3Q8VD46OmhlYWQoKSBjb25zdA0Kew0KICAgIHJldHVy
biBtX2hlYWQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBEb3VibHlMaW5r
ZWRMaXN0PFQ+Ojp0YWlsKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV90YWlsOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBEb3VibHlMaW5rZWRMaXN0PFQ+OjpwdXNoKFQq
IG5vZGUpDQp7DQogICAgaWYgKCFtX2hlYWQpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICBtX2hlYWQgPSBub2RlOw0KICAgICAgICBtX3RhaWwgPSBub2RlOw0KICAgICAgICBub2RlLT5z
ZXRQcmV2KDApOw0KICAgICAgICBub2RlLT5zZXROZXh0KDApOw0KICAgICAgICByZXR1cm47DQog
ICAgfQ0KDQogICAgKCh2b2lkKTApOw0KICAgIG1faGVhZC0+c2V0UHJldihub2RlKTsNCiAgICBu
b2RlLT5zZXROZXh0KG1faGVhZCk7DQogICAgbm9kZS0+c2V0UHJldigwKTsNCiAgICBtX2hlYWQg
PSBub2RlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBEb3VibHlMaW5r
ZWRMaXN0PFQ+OjphcHBlbmQoVCogbm9kZSkNCnsNCiAgICBpZiAoIW1fdGFpbCkgew0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgIG1faGVhZCA9IG5vZGU7DQogICAgICAgIG1fdGFpbCA9IG5v
ZGU7DQogICAgICAgIG5vZGUtPnNldFByZXYoMCk7DQogICAgICAgIG5vZGUtPnNldE5leHQoMCk7
DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICAoKHZvaWQpMCk7DQogICAgbV90YWlsLT5z
ZXROZXh0KG5vZGUpOw0KICAgIG5vZGUtPnNldFByZXYobV90YWlsKTsNCiAgICBub2RlLT5zZXRO
ZXh0KDApOw0KICAgIG1fdGFpbCA9IG5vZGU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSB2b2lkIERvdWJseUxpbmtlZExpc3Q8VD46OnJlbW92ZShUKiBub2RlKQ0Kew0KICAgIGlm
IChub2RlLT5wcmV2KCkpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBub2RlLT5wcmV2
KCktPnNldE5leHQobm9kZS0+bmV4dCgpKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIG1faGVhZCA9IG5vZGUtPm5leHQoKTsNCiAgICB9DQoNCiAgICBpZiAobm9k
ZS0+bmV4dCgpKSB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbm9kZS0+bmV4dCgpLT5z
ZXRQcmV2KG5vZGUtPnByZXYoKSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICBtX3RhaWwgPSBub2RlLT5wcmV2KCk7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgVCogRG91Ymx5TGlua2VkTGlzdDxUPjo6cmVtb3ZlSGVhZCgpDQp7DQog
ICAgVCogbm9kZSA9IGhlYWQoKTsNCiAgICBpZiAobm9kZSkNCiAgICAgICAgcmVtb3ZlKG5vZGUp
Ow0KICAgIHJldHVybiBub2RlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9p
ZCBEb3VibHlMaW5rZWRMaXN0PFQ+OjphcHBlbmQoRG91Ymx5TGlua2VkTGlzdDxUPiYgb3RoZXIp
DQp7DQogICAgaWYgKCFvdGhlci5oZWFkKCkpDQogICAgICAgIHJldHVybjsNCg0KICAgIGlmICgh
aGVhZCgpKSB7DQogICAgICAgIG1faGVhZCA9IG90aGVyLmhlYWQoKTsNCiAgICAgICAgbV90YWls
ID0gb3RoZXIudGFpbCgpOw0KICAgICAgICBvdGhlci5jbGVhcigpOw0KICAgICAgICByZXR1cm47
DQogICAgfQ0KDQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICBUKiBvdGhlckhl
YWQgPSBvdGhlci5oZWFkKCk7DQogICAgVCogb3RoZXJUYWlsID0gb3RoZXIudGFpbCgpOw0KICAg
IG90aGVyLmNsZWFyKCk7DQoNCiAgICAoKHZvaWQpMCk7DQogICAgbV90YWlsLT5zZXROZXh0KG90
aGVySGVhZCk7DQogICAgKCh2b2lkKTApOw0KICAgIG90aGVySGVhZC0+c2V0UHJldihtX3RhaWwp
Ow0KICAgIG1fdGFpbCA9IG90aGVyVGFpbDsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjpEb3VibHlM
aW5rZWRMaXN0Tm9kZTsNCnVzaW5nIFdURjo6RG91Ymx5TGlua2VkTGlzdDsNCiNsaW5lIDMxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFdl
YWtCbG9jay5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBIZWFwOw0KY2xhc3MgU2xv
dFZpc2l0b3I7DQoNCnVzaW5nIFdlYWtCbG9ja01hbGxvYyA9IEZhc3RNYWxsb2M7DQoNCmNsYXNz
IFdlYWtCbG9jayA6IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxXZWFrQmxvY2s+IHsNCnB1
YmxpYzoNCiAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxXZWFrQmxv
Y2s+Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDI1NjsgDQoNCiAg
ICBzdHJ1Y3QgRnJlZUNlbGwgew0KICAgICAgICBGcmVlQ2VsbCogbmV4dDsNCiAgICB9Ow0KDQog
ICAgc3RydWN0IFN3ZWVwUmVzdWx0IHsNCiAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsNCg0K
ICAgICAgICBib29sIGJsb2NrSXNGcmVlIHsgdHJ1ZSB9Ow0KICAgICAgICBib29sIGJsb2NrSXNM
b2dpY2FsbHlFbXB0eSB7IHRydWUgfTsNCiAgICAgICAgRnJlZUNlbGwqIGZyZWVMaXN0IHsgbnVs
bHB0ciB9Ow0KICAgIH07DQoNCiAgICBzdGF0aWMgV2Vha0Jsb2NrKiBjcmVhdGUoSGVhcCYsIENl
bGxDb250YWluZXIpOw0KICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSGVhcCYsIFdlYWtCbG9jayop
Ow0KDQogICAgc3RhdGljIFdlYWtJbXBsKiBhc1dlYWtJbXBsKEZyZWVDZWxsKik7DQoNCiAgICBi
b29sIGlzRW1wdHkoKTsNCiAgICBib29sIGlzTG9naWNhbGx5RW1wdHlCdXROb3RGcmVlKCkgY29u
c3Q7DQoNCiAgICB2b2lkIHN3ZWVwKCk7DQogICAgU3dlZXBSZXN1bHQgdGFrZVN3ZWVwUmVzdWx0
KCk7DQoNCiAgICB2b2lkIHZpc2l0KFNsb3RWaXNpdG9yJik7DQoNCiAgICB2b2lkIHJlYXAoKTsN
Cg0KICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsNCiAgICB2b2lkIGRpc2Nvbm5lY3RD
b250YWluZXIoKSB7IG1fY29udGFpbmVyID0gQ2VsbENvbnRhaW5lcigpOyB9DQoNCnByaXZhdGU6
DQogICAgc3RhdGljIEZyZWVDZWxsKiBhc0ZyZWVDZWxsKFdlYWtJbXBsKik7DQogICAgDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4NCiAgICB2b2lkIHNwZWNpYWxpemVkVmlz
aXQoQ29udGFpbmVyVHlwZSYsIFNsb3RWaXNpdG9yJik7DQoNCiAgICBleHBsaWNpdCBXZWFrQmxv
Y2soQ2VsbENvbnRhaW5lcik7DQogICAgdm9pZCBmaW5hbGl6ZShXZWFrSW1wbCopOw0KICAgIFdl
YWtJbXBsKiB3ZWFrSW1wbHMoKTsNCiAgICBzaXplX3Qgd2Vha0ltcGxDb3VudCgpOw0KICAgIHZv
aWQgYWRkVG9GcmVlTGlzdChGcmVlQ2VsbCoqLCBXZWFrSW1wbCopOw0KDQogICAgQ2VsbENvbnRh
aW5lciBtX2NvbnRhaW5lcjsNCiAgICBXZWFrQmxvY2sqIG1fcHJldjsNCiAgICBXZWFrQmxvY2sq
IG1fbmV4dDsNCiAgICBTd2VlcFJlc3VsdCBtX3N3ZWVwUmVzdWx0Ow0KfTsNCg0KaW5saW5lIGJv
b2wgV2Vha0Jsb2NrOjpTd2VlcFJlc3VsdDo6aXNOdWxsKCkgY29uc3QNCnsNCiAgICByZXR1cm4g
YmxvY2tJc0ZyZWUgJiYgIWZyZWVMaXN0OyANCn0NCg0KaW5saW5lIFdlYWtJbXBsKiBXZWFrQmxv
Y2s6OmFzV2Vha0ltcGwoRnJlZUNlbGwqIGZyZWVDZWxsKQ0Kew0KICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdlYWtJbXBsKj4oZnJlZUNlbGwpOw0KfQ0KDQppbmxpbmUgV2Vha0Jsb2NrOjpT
d2VlcFJlc3VsdCBXZWFrQmxvY2s6OnRha2VTd2VlcFJlc3VsdCgpDQp7DQogICAgU3dlZXBSZXN1
bHQgdG1wOw0KICAgIHN0ZDo6c3dhcCh0bXAsIG1fc3dlZXBSZXN1bHQpOw0KICAgICgodm9pZCkw
KTsNCiAgICByZXR1cm4gdG1wOw0KfQ0KDQppbmxpbmUgV2Vha0Jsb2NrOjpGcmVlQ2VsbCogV2Vh
a0Jsb2NrOjphc0ZyZWVDZWxsKFdlYWtJbXBsKiB3ZWFrSW1wbCkNCnsNCiAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxGcmVlQ2VsbCo+KHdlYWtJbXBsKTsNCn0NCg0KaW5saW5lIFdlYWtJbXBs
KiBXZWFrQmxvY2s6OndlYWtJbXBscygpDQp7DQogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V2Vha0ltcGwqPih0aGlzKSArICgoc2l6ZW9mKFdlYWtCbG9jaykgKyBzaXplb2YoV2Vha0ltcGwp
IC0gMSkgLyBzaXplb2YoV2Vha0ltcGwpKTsNCn0NCg0KaW5saW5lIHNpemVfdCBXZWFrQmxvY2s6
OndlYWtJbXBsQ291bnQoKQ0Kew0KICAgIHJldHVybiAoYmxvY2tTaXplIC8gc2l6ZW9mKFdlYWtJ
bXBsKSkgLSAoKHNpemVvZihXZWFrQmxvY2spICsgc2l6ZW9mKFdlYWtJbXBsKSAtIDEpIC8gc2l6
ZW9mKFdlYWtJbXBsKSk7DQp9DQoNCmlubGluZSB2b2lkIFdlYWtCbG9jazo6YWRkVG9GcmVlTGlz
dChGcmVlQ2VsbCoqIGZyZWVMaXN0LCBXZWFrSW1wbCogd2Vha0ltcGwpDQp7DQogICAgKCh2b2lk
KTApOw0KICAgIEZyZWVDZWxsKiBmcmVlQ2VsbCA9IGFzRnJlZUNlbGwod2Vha0ltcGwpOw0KICAg
ICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgZnJlZUNlbGwtPm5leHQgPSAqZnJlZUxp
c3Q7DQogICAgKmZyZWVMaXN0ID0gZnJlZUNlbGw7DQp9DQoNCmlubGluZSBib29sIFdlYWtCbG9j
azo6aXNFbXB0eSgpDQp7DQogICAgcmV0dXJuICFtX3N3ZWVwUmVzdWx0LmlzTnVsbCgpICYmIG1f
c3dlZXBSZXN1bHQuYmxvY2tJc0ZyZWU7DQp9DQoNCmlubGluZSBib29sIFdlYWtCbG9jazo6aXNM
b2dpY2FsbHlFbXB0eUJ1dE5vdEZyZWUoKSBjb25zdA0Kew0KICAgIHJldHVybiAhbV9zd2VlcFJl
c3VsdC5pc051bGwoKSAmJiAhbV9zd2VlcFJlc3VsdC5ibG9ja0lzRnJlZSAmJiBtX3N3ZWVwUmVz
dWx0LmJsb2NrSXNMb2dpY2FsbHlFbXB0eTsNCn0NCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFdlYWtTZXQuaCIN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KZW51bSBTZW50aW5lbFRhZyB7IFNlbnRpbmVs
IH07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFBhc3NlZFB0clRyYWl0cyA9IER1
bWJQdHJUcmFpdHM8VD4+DQpjbGFzcyBCYXNpY1Jhd1NlbnRpbmVsTm9kZSB7DQogICAgcHVibGlj
OiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxv
Y2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RN
YWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29s
b25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICB1c2luZyBQdHJUcmFpdHMgPSB0
eXBlbmFtZSBQYXNzZWRQdHJUcmFpdHM6OnRlbXBsYXRlIFJlYmluZFRyYWl0czxCYXNpY1Jhd1Nl
bnRpbmVsTm9kZT47DQoNCiAgICBCYXNpY1Jhd1NlbnRpbmVsTm9kZShTZW50aW5lbFRhZykNCiAg
ICB7DQogICAgfQ0KICAgIA0KICAgIEJhc2ljUmF3U2VudGluZWxOb2RlKCkgPSBkZWZhdWx0Ow0K
ICAgIA0KICAgIHZvaWQgc2V0UHJldihCYXNpY1Jhd1NlbnRpbmVsTm9kZSogcHJldikgeyBtX3By
ZXYgPSBwcmV2OyB9DQogICAgdm9pZCBzZXROZXh0KEJhc2ljUmF3U2VudGluZWxOb2RlKiBuZXh0
KSB7IG1fbmV4dCA9IG5leHQ7IH0NCiAgICANCiAgICBUKiBwcmV2KCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VCo+KFB0clRyYWl0czo6dW53cmFwKG1fcHJldikpOyB9DQogICAgVCogbmV4dCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFQqPihQdHJUcmFpdHM6OnVud3JhcChtX25leHQpKTsgfQ0KICAg
IA0KICAgIGJvb2wgaXNPbkxpc3QoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICByZXR1cm4gISFtX3ByZXY7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgcmVtb3ZlKCk7
DQoNCiAgICB2b2lkIHByZXBlbmQoQmFzaWNSYXdTZW50aW5lbE5vZGUqKTsNCiAgICB2b2lkIGFw
cGVuZChCYXNpY1Jhd1NlbnRpbmVsTm9kZSopOw0KICAgIA0KcHJpdmF0ZToNCiAgICB0eXBlbmFt
ZSBQdHJUcmFpdHM6OlN0b3JhZ2VUeXBlIG1fbmV4dCB7IG51bGxwdHIgfTsNCiAgICB0eXBlbmFt
ZSBQdHJUcmFpdHM6OlN0b3JhZ2VUeXBlIG1fcHJldiB7IG51bGxwdHIgfTsNCn07DQoNCnRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSYXdOb2RlID0gVD4gY2xhc3MgU2VudGluZWxMaW5r
ZWRMaXN0IHsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIFQqIGl0ZXJhdG9yOw0KDQogICAgU2VudGlu
ZWxMaW5rZWRMaXN0KCk7DQoNCiAgICANCiAgICB2b2lkIHB1c2goVCopOw0KDQogICAgDQogICAg
dm9pZCBhcHBlbmQoVCopOw0KICAgIA0KICAgIHN0YXRpYyB2b2lkIHJlbW92ZShUKik7DQogICAg
c3RhdGljIHZvaWQgcHJlcGVuZChUKiBleGlzdGluZ05vZGUsIFQqIG5ld05vZGUpOw0KICAgIHN0
YXRpYyB2b2lkIGFwcGVuZChUKiBleGlzdGluZ05vZGUsIFQqIG5ld05vZGUpOw0KICAgIA0KICAg
IGJvb2wgaXNPbkxpc3QoVCopOw0KDQogICAgaXRlcmF0b3IgYmVnaW4oKTsNCiAgICBpdGVyYXRv
ciBlbmQoKTsNCiAgICANCiAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVu
ZCgpOyB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAgICB2b2lkIGZvckVh
Y2goY29uc3QgRnVuYyYgZnVuYykNCiAgICB7DQogICAgICAgIGZvciAoaXRlcmF0b3IgaXRlciA9
IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7KSB7DQogICAgICAgICAgICBpdGVyYXRvciBuZXh0ID0g
aXRlci0+bmV4dCgpOw0KICAgICAgICAgICAgZnVuYyhpdGVyKTsNCiAgICAgICAgICAgIGl0ZXIg
PSBuZXh0Ow0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIHZvaWQgdGFrZUZyb20oU2VudGlu
ZWxMaW5rZWRMaXN0PFQsIFJhd05vZGU+Jik7DQogICAgDQpwcml2YXRlOg0KICAgIFJhd05vZGUg
bV9oZWFkU2VudGluZWw7DQogICAgUmF3Tm9kZSBtX3RhaWxTZW50aW5lbDsNCn07DQoNCnRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+IHZvaWQgQmFzaWNSYXdTZW50aW5l
bE5vZGU8VCwgUHRyVHJhaXRzPjo6cmVtb3ZlKCkNCnsNCiAgICBTZW50aW5lbExpbmtlZExpc3Q8
VCwgQmFzaWNSYXdTZW50aW5lbE5vZGU+OjpyZW1vdmUoc3RhdGljX2Nhc3Q8VCo+KHRoaXMpKTsN
Cn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cz4gdm9pZCBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxULCBQdHJUcmFpdHM+OjpwcmVwZW5kKEJhc2ljUmF3U2VudGluZWxO
b2RlKiBub2RlKQ0Kew0KICAgIFNlbnRpbmVsTGlua2VkTGlzdDxULCBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZT46OnByZXBlbmQoDQogICAgICAgIHN0YXRpY19jYXN0PFQqPih0aGlzKSwgc3RhdGljX2Nh
c3Q8VCo+KG5vZGUpKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRy
YWl0cz4gdm9pZCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxULCBQdHJUcmFpdHM+OjphcHBlbmQoQmFz
aWNSYXdTZW50aW5lbE5vZGUqIG5vZGUpDQp7DQogICAgU2VudGluZWxMaW5rZWRMaXN0PFQsIEJh
c2ljUmF3U2VudGluZWxOb2RlPjo6YXBwZW5kKA0KICAgICAgICBzdGF0aWNfY2FzdDxUKj4odGhp
cyksIHN0YXRpY19jYXN0PFQqPihub2RlKSk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBSYXdOb2RlPiBpbmxpbmUgU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vZGU+OjpT
ZW50aW5lbExpbmtlZExpc3QoKQ0KICAgIDogbV9oZWFkU2VudGluZWwoU2VudGluZWwpDQogICAg
LCBtX3RhaWxTZW50aW5lbChTZW50aW5lbCkNCnsNCiAgICBtX2hlYWRTZW50aW5lbC5zZXROZXh0
KCZtX3RhaWxTZW50aW5lbCk7DQogICAgbV9oZWFkU2VudGluZWwuc2V0UHJldihudWxscHRyKTsN
Cg0KICAgIG1fdGFpbFNlbnRpbmVsLnNldFByZXYoJm1faGVhZFNlbnRpbmVsKTsNCiAgICBtX3Rh
aWxTZW50aW5lbC5zZXROZXh0KG51bGxwdHIpOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIHR5cGVuYW1lIFNlbnRpbmVsTGlua2VkTGlzdDxULCBS
YXdOb2RlPjo6aXRlcmF0b3IgU2VudGluZWxMaW5rZWRMaXN0PFQsIFJhd05vZGU+OjpiZWdpbigp
DQp7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2hlYWRTZW50aW5lbC5uZXh0KCkpOw0K
fQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIHR5cGVu
YW1lIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6aXRlcmF0b3IgU2VudGluZWxMaW5r
ZWRMaXN0PFQsIFJhd05vZGU+OjplbmQoKQ0Kew0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
Jm1fdGFpbFNlbnRpbmVsKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJh
d05vZGU+IGlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6cHVzaChU
KiBub2RlKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTAp
Ow0KICAgIA0KICAgIFJhd05vZGUqIHByZXYgPSAmbV9oZWFkU2VudGluZWw7DQogICAgUmF3Tm9k
ZSogbmV4dCA9IG1faGVhZFNlbnRpbmVsLm5leHQoKTsNCg0KICAgIG5vZGUtPnNldFByZXYocHJl
dik7DQogICAgbm9kZS0+c2V0TmV4dChuZXh0KTsNCg0KICAgIHByZXYtPnNldE5leHQobm9kZSk7
DQogICAgbmV4dC0+c2V0UHJldihub2RlKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFJhd05vZGU+IGlubGluZSB2b2lkIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2Rl
Pjo6YXBwZW5kKFQqIG5vZGUpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAg
ICAoKHZvaWQpMCk7DQogICAgDQogICAgUmF3Tm9kZSogcHJldiA9IG1fdGFpbFNlbnRpbmVsLnBy
ZXYoKTsNCiAgICBSYXdOb2RlKiBuZXh0ID0gJm1fdGFpbFNlbnRpbmVsOw0KDQogICAgbm9kZS0+
c2V0UHJldihwcmV2KTsNCiAgICBub2RlLT5zZXROZXh0KG5leHQpOw0KDQogICAgcHJldi0+c2V0
TmV4dChub2RlKTsNCiAgICBuZXh0LT5zZXRQcmV2KG5vZGUpOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4gaW5saW5lIHZvaWQgU2VudGluZWxMaW5rZWRMaXN0
PFQsIFJhd05vZGU+OjpyZW1vdmUoVCogbm9kZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2
b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICANCiAgICBSYXdOb2RlKiBwcmV2ID0gbm9kZS0+
cHJldigpOw0KICAgIFJhd05vZGUqIG5leHQgPSBub2RlLT5uZXh0KCk7DQoNCiAgICBwcmV2LT5z
ZXROZXh0KG5leHQpOw0KICAgIG5leHQtPnNldFByZXYocHJldik7DQogICAgDQogICAgbm9kZS0+
c2V0UHJldihudWxscHRyKTsNCiAgICBub2RlLT5zZXROZXh0KG51bGxwdHIpOw0KfQ0KDQp0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4NCmlubGluZSB2b2lkIFNlbnRpbmVs
TGlua2VkTGlzdDxULCBSYXdOb2RlPjo6cHJlcGVuZChUKiBleGlzdGluZ05vZGUsIFQqIG5ld05v
ZGUpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQog
ICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBSYXdO
b2RlKiBwcmV2ID0gZXhpc3RpbmdOb2RlLT5wcmV2KCk7DQoNCiAgICBuZXdOb2RlLT5zZXROZXh0
KGV4aXN0aW5nTm9kZSk7DQogICAgbmV3Tm9kZS0+c2V0UHJldihwcmV2KTsNCiAgICANCiAgICBw
cmV2LT5zZXROZXh0KG5ld05vZGUpOw0KICAgIGV4aXN0aW5nTm9kZS0+c2V0UHJldihuZXdOb2Rl
KTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05vZGU+DQppbmxpbmUg
dm9pZCBTZW50aW5lbExpbmtlZExpc3Q8VCwgUmF3Tm9kZT46OmFwcGVuZChUKiBleGlzdGluZ05v
ZGUsIFQqIG5ld05vZGUpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAo
KHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7
DQoNCiAgICBSYXdOb2RlKiBuZXh0ID0gZXhpc3RpbmdOb2RlLT5uZXh0KCk7DQoNCiAgICBuZXdO
b2RlLT5zZXROZXh0KG5leHQpOw0KICAgIG5ld05vZGUtPnNldFByZXYoZXhpc3RpbmdOb2RlKTsN
CiAgICANCiAgICBuZXh0LT5zZXRQcmV2KG5ld05vZGUpOw0KICAgIGV4aXN0aW5nTm9kZS0+c2V0
TmV4dChuZXdOb2RlKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJhd05v
ZGU+IGlubGluZSBib29sIFNlbnRpbmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6aXNPbkxpc3Qo
VCogbm9kZSkNCnsNCiAgICBpZiAoIW5vZGUtPmlzT25MaXN0KCkpDQogICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICANCiAgICBmb3IgKFQqIGl0ZXIgPSBiZWdpbigpOyBpdGVyICE9IGVuZCgpOyBp
dGVyID0gaXRlci0+bmV4dCgpKSB7DQogICAgICAgIGlmIChpdGVyID09IG5vZGUpDQogICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQp0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmF3Tm9kZT4NCmlubGluZSB2b2lkIFNlbnRp
bmVsTGlua2VkTGlzdDxULCBSYXdOb2RlPjo6dGFrZUZyb20oU2VudGluZWxMaW5rZWRMaXN0PFQs
IFJhd05vZGU+JiBvdGhlcikNCnsNCiAgICBpZiAob3RoZXIuaXNFbXB0eSgpKQ0KICAgICAgICBy
ZXR1cm47DQogICAgDQogICAgbV90YWlsU2VudGluZWwucHJldigpLT5zZXROZXh0KG90aGVyLm1f
aGVhZFNlbnRpbmVsLm5leHQoKSk7DQogICAgb3RoZXIubV9oZWFkU2VudGluZWwubmV4dCgpLT5z
ZXRQcmV2KG1fdGFpbFNlbnRpbmVsLnByZXYoKSk7DQogICAgDQogICAgbV90YWlsU2VudGluZWwu
c2V0UHJldihvdGhlci5tX3RhaWxTZW50aW5lbC5wcmV2KCkpOw0KICAgIG1fdGFpbFNlbnRpbmVs
LnByZXYoKS0+c2V0TmV4dCgmbV90YWlsU2VudGluZWwpOw0KDQogICAgb3RoZXIubV9oZWFkU2Vu
dGluZWwuc2V0TmV4dCgmb3RoZXIubV90YWlsU2VudGluZWwpOw0KICAgIG90aGVyLm1fdGFpbFNl
bnRpbmVsLnNldFByZXYoJm90aGVyLm1faGVhZFNlbnRpbmVsKTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVD4NCnVzaW5nIFBhY2tlZFJhd1NlbnRpbmVsTm9kZSA9IEJhc2ljUmF3U2VudGluZWxO
b2RlPFQsIFBhY2tlZFB0clRyYWl0czxUPj47DQoNCn0NCg0KdXNpbmcgV1RGOjpCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTsNCnVzaW5nIFdURjo6UGFja2VkUmF3U2VudGluZWxOb2RlOw0KdXNpbmcgV1RG
OjpTZW50aW5lbExpbmtlZExpc3Q7DQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxXZWFrU2V0LmgiDQoNCm5hbWVzcGFjZSBK
U0Mgew0KDQpjbGFzcyBIZWFwOw0KY2xhc3MgV2Vha0ltcGw7DQoNCmNsYXNzIFdlYWtTZXQgOiBw
dWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4gew0KICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7DQoNCnB1YmxpYzoNCiAgICBzdGF0aWMgV2Vha0ltcGwqIGFs
bG9jYXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSBudWxscHRyLCB2b2lkKiBjb250ZXh0
ID0gbnVsbHB0cik7DQogICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShXZWFrSW1wbCopOw0KDQog
ICAgV2Vha1NldChWTSYpOw0KICAgIH5XZWFrU2V0KCk7DQogICAgdm9pZCBsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpOw0KICAgIA0KICAgIEhlYXAqIGhlYXAoKSBjb25zdDsNCiAgICBWTSYgdm0oKSBj
b25zdDsNCg0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ow0KICAgIGJvb2wgaXNUcml2aWFsbHlE
ZXN0cnVjdGlibGUoKSBjb25zdDsNCg0KICAgIHZvaWQgdmlzaXQoU2xvdFZpc2l0b3ImKTsNCg0K
ICAgIHZvaWQgcmVhcCgpOw0KICAgIHZvaWQgc3dlZXAoKTsNCiAgICB2b2lkIHNocmluaygpOw0K
ICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsNCg0KcHJpdmF0ZToNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgV2Vha0Jsb2NrOjpGcmVlQ2VsbCogZmluZEFsbG9jYXRvcihDZWxsQ29udGFpbmVy
KTsNCiAgICBXZWFrQmxvY2s6OkZyZWVDZWxsKiB0cnlGaW5kQWxsb2NhdG9yKCk7DQogICAgV2Vh
a0Jsb2NrOjpGcmVlQ2VsbCogYWRkQWxsb2NhdG9yKENlbGxDb250YWluZXIpOw0KICAgIHZvaWQg
cmVtb3ZlQWxsb2NhdG9yKFdlYWtCbG9jayopOw0KDQogICAgV2Vha0Jsb2NrOjpGcmVlQ2VsbCog
bV9hbGxvY2F0b3IgeyBudWxscHRyIH07DQogICAgV2Vha0Jsb2NrKiBtX25leHRBbGxvY2F0b3Ig
eyBudWxscHRyIH07DQogICAgRG91Ymx5TGlua2VkTGlzdDxXZWFrQmxvY2s+IG1fYmxvY2tzOw0K
ICAgIA0KICAgIA0KICAgIFZNKiBtX3ZtOw0KfTsNCg0KaW5saW5lIFdlYWtTZXQ6OldlYWtTZXQo
Vk0mIHZtKQ0KICAgIDogbV92bSgmdm0pDQp7DQp9DQoNCmlubGluZSBWTSYgV2Vha1NldDo6dm0o
KSBjb25zdA0Kew0KICAgIHJldHVybiAqbV92bTsNCn0NCg0KaW5saW5lIGJvb2wgV2Vha1NldDo6
aXNFbXB0eSgpIGNvbnN0DQp7DQogICAgZm9yIChXZWFrQmxvY2sqIGJsb2NrID0gbV9ibG9ja3Mu
aGVhZCgpOyBibG9jazsgYmxvY2sgPSBibG9jay0+bmV4dCgpKSB7DQogICAgICAgIGlmICghYmxv
Y2stPmlzRW1wdHkoKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICBy
ZXR1cm4gdHJ1ZTsNCn0NCg0KaW5saW5lIGJvb2wgV2Vha1NldDo6aXNUcml2aWFsbHlEZXN0cnVj
dGlibGUoKSBjb25zdA0Kew0KICAgIGlmICghbV9ibG9ja3MuaXNFbXB0eSgpKQ0KICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgaWYgKGlzT25MaXN0KCkpDQogICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KaW5saW5lIHZvaWQgV2Vha1NldDo6ZGVhbGxvY2F0ZShX
ZWFrSW1wbCogd2Vha0ltcGwpDQp7DQogICAgd2Vha0ltcGwtPnNldFN0YXRlKFdlYWtJbXBsOjpE
ZWFsbG9jYXRlZCk7DQp9DQoNCmlubGluZSB2b2lkIFdlYWtTZXQ6Omxhc3RDaGFuY2VUb0ZpbmFs
aXplKCkNCnsNCiAgICBmb3IgKFdlYWtCbG9jayogYmxvY2sgPSBtX2Jsb2Nrcy5oZWFkKCk7IGJs
b2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpDQogICAgICAgIGJsb2NrLT5sYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpOw0KfQ0KDQppbmxpbmUgdm9pZCBXZWFrU2V0Ojp2aXNpdChTbG90VmlzaXRvciYg
dmlzaXRvcikNCnsNCiAgICBmb3IgKFdlYWtCbG9jayogYmxvY2sgPSBtX2Jsb2Nrcy5oZWFkKCk7
IGJsb2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpDQogICAgICAgIGJsb2NrLT52aXNpdCh2aXNp
dG9yKTsNCn0NCg0KaW5saW5lIHZvaWQgV2Vha1NldDo6cmVhcCgpDQp7DQogICAgZm9yIChXZWFr
QmxvY2sqIGJsb2NrID0gbV9ibG9ja3MuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBibG9jay0+bmV4
dCgpKQ0KICAgICAgICBibG9jay0+cmVhcCgpOw0KfQ0KDQppbmxpbmUgdm9pZCBXZWFrU2V0Ojpy
ZXNldEFsbG9jYXRvcigpDQp7DQogICAgbV9hbGxvY2F0b3IgPSBudWxscHRyOw0KICAgIG1fbmV4
dEFsbG9jYXRvciA9IG1fYmxvY2tzLmhlYWQoKTsNCn0NCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hcmtlZEJs
b2NrLmgiDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvQml0bWFwLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1N0ZEludEV4dHJh
cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCnVzaW5nIENQVVJlZ2lzdGVy
ID0gaW50NjRfdDsNCnVzaW5nIFVDUFVSZWdpc3RlciA9IHVpbnQ2NF90Ow0KDQoNCg0KI2xpbmUg
MzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1N0ZEludEV4dHJhcy5oIg0KDQp9IA0KDQp1c2luZyBXVEY6OkNQVVJlZ2lzdGVyOw0KdXNp
bmcgV1RGOjpVQ1BVUmVnaXN0ZXI7DQojbGluZSAyNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQml0bWFwLmgiDQoNCg0KDQpuYW1lc3Bh
Y2UgV1RGIHsNCg0KdGVtcGxhdGU8c2l6ZV90IHNpemU+DQp1c2luZyBCaXRtYXBXb3JkVHlwZSA9
IHN0ZDo6Y29uZGl0aW9uYWxfdDwoc2l6ZSA8PSAzMiAmJiBzaXplb2YoVUNQVVJlZ2lzdGVyKSA+
IHNpemVvZih1aW50MzJfdCkpLCB1aW50MzJfdCwgVUNQVVJlZ2lzdGVyPjsNCg0KdGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlID0gQml0bWFwV29yZFR5cGU8Yml0
bWFwU2l6ZT4+DQpjbGFzcyBCaXRtYXAgZmluYWwgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9p
ZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZv
aWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7
IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFj
cm8gPSBpbnQ7DQogICAgDQogICAgc3RhdGljX2Fzc2VydChzaXplb2YoV29yZFR5cGUpIDw9IHNp
emVvZihVQ1BVUmVnaXN0ZXIpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdGhl
IENQVSBhdG9taWMgd29yZCBzaXplIik7DQpwdWJsaWM6DQogICAgY29uc3RleHByIEJpdG1hcCgp
Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSgpDQogICAgew0KICAgICAgICBy
ZXR1cm4gYml0bWFwU2l6ZTsNCiAgICB9DQoNCiAgICBib29sIGdldChzaXplX3QsIERlcGVuZGVu
Y3kgPSBEZXBlbmRlbmN5KCkpIGNvbnN0Ow0KICAgIHZvaWQgc2V0KHNpemVfdCk7DQogICAgdm9p
ZCBzZXQoc2l6ZV90LCBib29sKTsNCiAgICBib29sIHRlc3RBbmRTZXQoc2l6ZV90KTsNCiAgICBi
b29sIHRlc3RBbmRDbGVhcihzaXplX3QpOw0KICAgIGJvb2wgY29uY3VycmVudFRlc3RBbmRTZXQo
c2l6ZV90LCBEZXBlbmRlbmN5ID0gRGVwZW5kZW5jeSgpKTsNCiAgICBib29sIGNvbmN1cnJlbnRU
ZXN0QW5kQ2xlYXIoc2l6ZV90LCBEZXBlbmRlbmN5ID0gRGVwZW5kZW5jeSgpKTsNCiAgICBzaXpl
X3QgbmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90KSBjb25zdDsNCiAgICB2b2lkIGNsZWFyKHNpemVf
dCk7DQogICAgdm9pZCBjbGVhckFsbCgpOw0KICAgIHZvaWQgaW52ZXJ0KCk7DQogICAgaW50NjRf
dCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdDsNCiAgICBzaXplX3QgY291
bnQoc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7DQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7DQog
ICAgYm9vbCBpc0Z1bGwoKSBjb25zdDsNCiAgICANCiAgICB2b2lkIG1lcmdlKGNvbnN0IEJpdG1h
cCYpOw0KICAgIHZvaWQgZmlsdGVyKGNvbnN0IEJpdG1hcCYpOw0KICAgIHZvaWQgZXhjbHVkZShj
b25zdCBCaXRtYXAmKTsNCg0KICAgIHZvaWQgY29uY3VycmVudEZpbHRlcihjb25zdCBCaXRtYXAm
KTsNCiAgICANCiAgICBib29sIHN1YnN1bWVzKGNvbnN0IEJpdG1hcCYpIGNvbnN0Ow0KICAgIA0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQogICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0
IEZ1bmMmKSBjb25zdDsNCiAgICANCiAgICBzaXplX3QgZmluZEJpdChzaXplX3Qgc3RhcnRJbmRl
eCwgYm9vbCB2YWx1ZSkgY29uc3Q7DQogICAgDQogICAgY2xhc3MgaXRlcmF0b3Igew0KICAgICAg
ICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywg
dm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Vi
a2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNl
QVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHB1YmxpYzoNCiAgICAgICAgaXRl
cmF0b3IoKQ0KICAgICAgICAgICAgOiBtX2JpdG1hcChudWxscHRyKQ0KICAgICAgICAgICAgLCBt
X2luZGV4KDApDQogICAgICAgIHsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgaXRlcmF0
b3IoY29uc3QgQml0bWFwJiBiaXRtYXAsIHNpemVfdCBpbmRleCkNCiAgICAgICAgICAgIDogbV9i
aXRtYXAoJmJpdG1hcCkNCiAgICAgICAgICAgICwgbV9pbmRleChpbmRleCkNCiAgICAgICAgew0K
ICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBzaXplX3Qgb3BlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleDsgfQ0KICAgICAgICANCiAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKyso
KQ0KICAgICAgICB7DQogICAgICAgICAgICBtX2luZGV4ID0gbV9iaXRtYXAtPmZpbmRCaXQobV9p
bmRleCArIDEsIHRydWUpOw0KICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAgICB9DQog
ICAgICAgIA0KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBj
b25zdA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2lu
ZGV4Ow0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
aXRlcmF0b3ImIG90aGVyKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7DQogICAgICAgIH0NCg0KICAgIHByaXZhdGU6DQogICAgICAgIGNvbnN0
IEJpdG1hcCogbV9iaXRtYXA7DQogICAgICAgIHNpemVfdCBtX2luZGV4Ow0KICAgIH07DQogICAg
DQogICAgDQogICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigqdGhp
cywgZmluZEJpdCgwLCB0cnVlKSk7IH0NCiAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBpdGVyYXRvcigqdGhpcywgYml0bWFwU2l6ZSk7IH0NCiAgICANCiAgICB2b2lkIG1lcmdlQW5k
Q2xlYXIoQml0bWFwJik7DQogICAgdm9pZCBzZXRBbmRDbGVhcihCaXRtYXAmKTsNCg0KICAgIHZv
aWQgc2V0RWFjaE50aEJpdChzaXplX3Qgbiwgc2l6ZV90IHN0YXJ0ID0gMCwgc2l6ZV90IGVuZCA9
IGJpdG1hcFNpemUpOw0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYpIGNvbnN0
Ow0KICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaXRtYXAmKSBjb25zdDsNCg0KICAgIHZvaWQg
b3BlcmF0b3J8PShjb25zdCBCaXRtYXAmKTsNCiAgICB2b2lkIG9wZXJhdG9yJj0oY29uc3QgQml0
bWFwJik7DQogICAgdm9pZCBvcGVyYXRvcl49KGNvbnN0IEJpdG1hcCYpOw0KDQogICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0Ow0KDQogICAgDQogICAgdXNpbmcgV29yZCA9IFdvcmRUeXBlOw0KICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0c0luV29yZCA9IGNvdW50T2ZCaXRzPFdvcmRU
eXBlPjsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mV29yZHMgPSAoYml0
bWFwU2l6ZSArIGJpdHNJbldvcmQgLSAxKSAvIGJpdHNJbldvcmQ7DQogICAgV29yZFR5cGUgd29y
ZEF0KHNpemVfdCB3b3JkSW5kZXgpIGNvbnN0IHsgcmV0dXJuIGJpdHNbd29yZEluZGV4XTsgfQ0K
ICAgIFdvcmQqIHdvcmRzKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PFdvcmQqPigmYml0cyk7IH0N
Cg0KcHJpdmF0ZToNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBzdGF0aWMgY29u
c3RleHByIFdvcmRUeXBlIG9uZSA9IDE7DQoNCiAgICBzdGQ6OmFycmF5PFdvcmRUeXBlLCBudW1i
ZXJPZldvcmRzPiBiaXRzOw0KfTsNCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPg0KY29uc3RleHByIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OkJp
dG1hcCgpDQp7DQogICAgY2xlYXJBbGwoKTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6Z2V0KHNpemVfdCBuLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpIGNvbnN0DQp7DQog
ICAgcmV0dXJuICEhKGRlcGVuZGVuY3kuY29uc3VtZSh0aGlzKS0+Yml0c1tuIC8gYml0c0luV29y
ZF0gJiAob25lIDw8IChuICUgYml0c0luV29yZCkpKTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQ0Kew0KICAgIGJpdHNbbiAvIGJpdHNJbldvcmRd
IHw9IChvbmUgPDwgKG4gJSBiaXRzSW5Xb3JkKSk7DQp9DQoNCnRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkNCnsNCiAgICBpZiAodmFsdWUp
DQogICAgICAgIHNldChuKTsNCiAgICBlbHNlDQogICAgICAgIGNsZWFyKG4pOw0KfQ0KDQp0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+DQppbmxpbmUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojp0ZXN0QW5kU2V0KHNpemVfdCBuKQ0Kew0KICAg
IFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSBiaXRzSW5Xb3JkKTsNCiAgICBzaXplX3QgaW5k
ZXggPSBuIC8gYml0c0luV29yZDsNCiAgICBib29sIHJlc3VsdCA9IGJpdHNbaW5kZXhdICYgbWFz
azsNCiAgICBiaXRzW2luZGV4XSB8PSBtYXNrOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikNCnsN
CiAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgYml0c0luV29yZCk7DQogICAgc2l6ZV90
IGluZGV4ID0gbiAvIGJpdHNJbldvcmQ7DQogICAgYm9vbCByZXN1bHQgPSBiaXRzW2luZGV4XSAm
IG1hc2s7DQogICAgYml0c1tpbmRleF0gJj0gfm1hc2s7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0N
Cg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KX19mb3Jj
ZWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0
QW5kU2V0KHNpemVfdCBuLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpDQp7DQogICAgV29yZFR5cGUg
bWFzayA9IG9uZSA8PCAobiAlIGJpdHNJbldvcmQpOw0KICAgIHNpemVfdCBpbmRleCA9IG4gLyBi
aXRzSW5Xb3JkOw0KICAgIFdvcmRUeXBlKiBkYXRhID0gZGVwZW5kZW5jeS5jb25zdW1lKGJpdHMu
ZGF0YSgpKSArIGluZGV4Ow0KICAgIHJldHVybiAhYml0d2lzZV9jYXN0PEF0b21pYzxXb3JkVHlw
ZT4qPihkYXRhKS0+dHJhbnNhY3Rpb25SZWxheGVkKA0KICAgICAgICBbJl0gKFdvcmRUeXBlJiB2
YWx1ZSkgLT4gYm9vbCB7DQogICAgICAgICAgICBpZiAodmFsdWUgJiBtYXNrKQ0KICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgdmFsdWUgfD0g
bWFzazsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9KTsNCn0NCg0KdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KX19mb3JjZWlubGluZSBi
b29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIo
c2l6ZV90IG4sIERlcGVuZGVuY3kgZGVwZW5kZW5jeSkNCnsNCiAgICBXb3JkVHlwZSBtYXNrID0g
b25lIDw8IChuICUgYml0c0luV29yZCk7DQogICAgc2l6ZV90IGluZGV4ID0gbiAvIGJpdHNJbldv
cmQ7DQogICAgV29yZFR5cGUqIGRhdGEgPSBkZXBlbmRlbmN5LmNvbnN1bWUoYml0cy5kYXRhKCkp
ICsgaW5kZXg7DQogICAgcmV0dXJuICFiaXR3aXNlX2Nhc3Q8QXRvbWljPFdvcmRUeXBlPio+KGRh
dGEpLT50cmFuc2FjdGlvblJlbGF4ZWQoDQogICAgICAgIFsmXSAoV29yZFR5cGUmIHZhbHVlKSAt
PiBib29sIHsNCiAgICAgICAgICAgIGlmICghKHZhbHVlICYgbWFzaykpDQogICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgDQogICAgICAgICAgICB2YWx1ZSAmPSB+bWFz
azsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9KTsNCn0NCg0KdGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KaW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pDQp7DQogICAgYml0c1tuIC8g
Yml0c0luV29yZF0gJj0gfihvbmUgPDwgKG4gJSBiaXRzSW5Xb3JkKSk7DQp9DQoNCnRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkNCnsNCiAgICBtZW1zZXQoYml0cy5k
YXRhKCksIDAsIHNpemVvZihiaXRzKSk7DQp9DQoNCnRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OmludmVydCgpDQp7DQogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZldv
cmRzOyArK2kpDQogICAgICAgIGJpdHNbaV0gPSB+Yml0c1tpXTsNCiAgICBpZiBjb25zdGV4cHIg
KCEhKGJpdG1hcFNpemUgJSBiaXRzSW5Xb3JkKSkgew0KICAgICAgICBjb25zdGV4cHIgc2l6ZV90
IHJlbWFpbmluZ0JpdHMgPSBiaXRtYXBTaXplICUgYml0c0luV29yZDsNCiAgICAgICAgY29uc3Rl
eHByIFdvcmRUeXBlIG1hc2sgPSAoc3RhdGljX2Nhc3Q8V29yZFR5cGU+KDEpIDw8IHJlbWFpbmlu
Z0JpdHMpIC0gMTsNCiAgICAgICAgYml0c1tudW1iZXJPZldvcmRzIC0gMV0gJj0gbWFzazsNCiAg
ICB9DQp9DQoNCnRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4N
CmlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5
VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdA0Kew0KICAgIGlmICghfmJpdHNbc3RhcnQgLyBiaXRz
SW5Xb3JkXSkNCiAgICAgICAgcmV0dXJuICgoc3RhcnQgLyBiaXRzSW5Xb3JkKSArIDEpICogYml0
c0luV29yZDsNCiAgICByZXR1cm4gc3RhcnQgKyAxOw0KfQ0KDQp0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+DQppbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdA0K
ew0KICAgIGlmICghcnVuTGVuZ3RoKSANCiAgICAgICAgcnVuTGVuZ3RoID0gMTsgDQogICAgIA0K
ICAgIGlmIChydW5MZW5ndGggPiBiaXRtYXBTaXplKQ0KICAgICAgICByZXR1cm4gLTE7DQoNCiAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8PSAoYml0bWFwU2l6ZSAtIHJ1bkxlbmd0aCkgOyBpKysp
IHsNCiAgICAgICAgYm9vbCBmb3VuZCA9IHRydWU7IA0KICAgICAgICBmb3IgKHNpemVfdCBqID0g
aTsgaiA8PSAoaSArIHJ1bkxlbmd0aCAtIDEpIDsgaisrKSB7IA0KICAgICAgICAgICAgaWYgKGdl
dChqKSkgew0KICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7IA0KICAgICAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChmb3VuZCkgIA0K
ICAgICAgICAgICAgcmV0dXJuIGk7IA0KICAgIH0NCiAgICByZXR1cm4gLTE7DQp9DQoNCnRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlubGluZSBzaXplX3Qg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdA0K
ew0KICAgIHNpemVfdCByZXN1bHQgPSAwOw0KICAgIGZvciAoIDsgKHN0YXJ0ICUgYml0c0luV29y
ZCk7ICsrc3RhcnQpIHsNCiAgICAgICAgaWYgKGdldChzdGFydCkpDQogICAgICAgICAgICArK3Jl
c3VsdDsNCiAgICB9DQogICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0IC8gYml0c0luV29yZDsgaSA8
IG51bWJlck9mV29yZHM7ICsraSkNCiAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoYml0
c1tpXSk7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0DQp7DQogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1iZXJPZldvcmRzOyArK2kpIHsNCiAgICAgICAgaWYgKGJpdHNbaV0pDQogICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+DQppbmxpbmUgYm9vbCBCaXRtYXA8Yml0
bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdA0Kew0KICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtYmVyT2ZXb3JkczsgKytpKSB7DQogICAgICAgIGlmICh+Yml0c1tpXSkgew0K
ICAgICAgICAgICAgaWYgY29uc3RleHByICghIShiaXRtYXBTaXplICUgYml0c0luV29yZCkpIHsN
CiAgICAgICAgICAgICAgICBpZiAoaSA9PSBudW1iZXJPZldvcmRzIC0gMSkgew0KICAgICAgICAg
ICAgICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHJlbWFpbmluZ0JpdHMgPSBiaXRtYXBTaXplICUg
Yml0c0luV29yZDsNCiAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIFdvcmRUeXBlIG1hc2sg
PSAoc3RhdGljX2Nhc3Q8V29yZFR5cGU+KDEpIDw8IHJlbWFpbmluZ0JpdHMpIC0gMTsNCiAgICAg
ICAgICAgICAgICAgICAgaWYgKChiaXRzW2ldICYgbWFzaykgPT0gbWFzaykNCiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1
cm4gdHJ1ZTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPg0KaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2UoY29u
c3QgQml0bWFwJiBvdGhlcikNCnsNCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9m
V29yZHM7ICsraSkNCiAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOw0KfQ0KDQp0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+DQppbmxpbmUgdm9pZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikN
CnsNCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkNCiAgICAg
ICAgYml0c1tpXSAmPSBvdGhlci5iaXRzW2ldOw0KfQ0KDQp0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+DQppbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwg
V29yZFR5cGU+OjpleGNsdWRlKGNvbnN0IEJpdG1hcCYgb3RoZXIpDQp7DQogICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1iZXJPZldvcmRzOyArK2kpDQogICAgICAgIGJpdHNbaV0gJj0gfm90
aGVyLmJpdHNbaV07DQp9DQoNCnRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4NCmlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1
cnJlbnRGaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikNCnsNCiAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkgew0KICAgICAgICBmb3IgKDs7KSB7DQogICAgICAg
ICAgICBXb3JkVHlwZSBvdGhlckJpdHMgPSBvdGhlci5iaXRzW2ldOw0KICAgICAgICAgICAgaWYg
KCFvdGhlckJpdHMpIHsNCiAgICAgICAgICAgICAgICBiaXRzW2ldID0gMDsNCiAgICAgICAgICAg
ICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFdvcmRUeXBlIG9sZEJpdHMg
PSBiaXRzW2ldOw0KICAgICAgICAgICAgV29yZFR5cGUgZmlsdGVyZWRCaXRzID0gb2xkQml0cyAm
IG90aGVyQml0czsNCiAgICAgICAgICAgIGlmIChvbGRCaXRzID09IGZpbHRlcmVkQml0cykNCiAg
ICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGlmIChhdG9taWNDb21wYXJlRXhjaGFu
Z2VXZWFrUmVsYXhlZCgmYml0c1tpXSwgb2xkQml0cywgZmlsdGVyZWRCaXRzKSkNCiAgICAgICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6c3Vic3VtZXMoY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QNCnsNCiAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkgew0KICAgICAgICBX
b3JkVHlwZSBteUJpdHMgPSBiaXRzW2ldOw0KICAgICAgICBXb3JkVHlwZSBvdGhlckJpdHMgPSBv
dGhlci5iaXRzW2ldOw0KICAgICAgICBpZiAoKG15Qml0cyB8IG90aGVyQml0cykgIT0gbXlCaXRz
KQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICByZXR1cm4gdHJ1ZTsNCn0N
Cg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPg0KdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4NCmlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QNCnsNCiAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkgew0KICAgICAgICBXb3JkVHlwZSB3
b3JkID0gYml0c1tpXTsNCiAgICAgICAgc2l6ZV90IGJhc2UgPSBpICogYml0c0luV29yZDsNCiAg
ICAgICAgc2l6ZV90IGogPSAwOw0KICAgICAgICBmb3IgKDsgd29yZDsgKytqKSB7DQogICAgICAg
ICAgICBpZiAod29yZCAmIDEpDQogICAgICAgICAgICAgICAgZnVuYyhiYXNlICsgaik7DQogICAg
ICAgICAgICB3b3JkID4+PSAxOw0KICAgICAgICB9DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9
DQp9DQoNCnRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlu
bGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZEJpdChzaXplX3Qg
c3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QNCnsNCiAgICBXb3JkVHlwZSBza2lwVmFsdWUg
PSAtKHN0YXRpY19jYXN0PFdvcmRUeXBlPih2YWx1ZSkgXiAxKTsNCiAgICBzaXplX3Qgd29yZElu
ZGV4ID0gc3RhcnRJbmRleCAvIGJpdHNJbldvcmQ7DQogICAgc2l6ZV90IHN0YXJ0SW5kZXhJbldv
cmQgPSBzdGFydEluZGV4IC0gd29yZEluZGV4ICogYml0c0luV29yZDsNCiAgICANCiAgICB3aGls
ZSAod29yZEluZGV4IDwgbnVtYmVyT2ZXb3Jkcykgew0KICAgICAgICBXb3JkVHlwZSB3b3JkID0g
Yml0c1t3b3JkSW5kZXhdOw0KICAgICAgICBpZiAod29yZCAhPSBza2lwVmFsdWUpIHsNCiAgICAg
ICAgICAgIHNpemVfdCBpbmRleCA9IHN0YXJ0SW5kZXhJbldvcmQ7DQogICAgICAgICAgICBpZiAo
ZmluZEJpdEluV29yZCh3b3JkLCBpbmRleCwgYml0c0luV29yZCwgdmFsdWUpKQ0KICAgICAgICAg
ICAgICAgIHJldHVybiB3b3JkSW5kZXggKiBiaXRzSW5Xb3JkICsgaW5kZXg7DQogICAgICAgIH0N
CiAgICAgICAgDQogICAgICAgIHdvcmRJbmRleCsrOw0KICAgICAgICBzdGFydEluZGV4SW5Xb3Jk
ID0gMDsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIGJpdG1hcFNpemU7DQp9DQoNCnRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikNCnsN
CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkgew0KICAgICAg
ICBiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV07DQogICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOw0K
ICAgIH0NCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
Pg0KaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIo
Qml0bWFwJiBvdGhlcikNCnsNCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29y
ZHM7ICsraSkgew0KICAgICAgICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsNCiAgICAgICAgb3Ro
ZXIuYml0c1tpXSA9IDA7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+DQppbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpzZXRFYWNoTnRoQml0KHNpemVfdCBuLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQpDQp7
DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCg0KICAgIHNpemVfdCB3b3JkSW5kZXgg
PSBzdGFydCAvIGJpdHNJbldvcmQ7DQogICAgc2l6ZV90IGVuZFdvcmRJbmRleCA9IGVuZCAvIGJp
dHNJbldvcmQ7DQogICAgc2l6ZV90IGluZGV4ID0gc3RhcnQgLSB3b3JkSW5kZXggKiBiaXRzSW5X
b3JkOw0KICAgIHdoaWxlICh3b3JkSW5kZXggPCBlbmRXb3JkSW5kZXgpIHsNCiAgICAgICAgd2hp
bGUgKGluZGV4IDwgYml0c0luV29yZCkgew0KICAgICAgICAgICAgYml0c1t3b3JkSW5kZXhdIHw9
IChvbmUgPDwgaW5kZXgpOw0KICAgICAgICAgICAgaW5kZXggKz0gbjsNCiAgICAgICAgfQ0KICAg
ICAgICBpbmRleCAtPSBiaXRzSW5Xb3JkOw0KICAgICAgICB3b3JkSW5kZXgrKzsNCiAgICB9DQoN
CiAgICBzaXplX3QgZW5kSW5kZXggPSBlbmQgLSBlbmRXb3JkSW5kZXggKiBiaXRzSW5Xb3JkOw0K
ICAgIHdoaWxlIChpbmRleCA8IGVuZEluZGV4KSB7DQogICAgICAgIGJpdHNbd29yZEluZGV4XSB8
PSAob25lIDw8IGluZGV4KTsNCiAgICAgICAgaW5kZXggKz0gbjsNCiAgICB9DQoNCiAgICBpZiBj
b25zdGV4cHIgKCEhKGJpdG1hcFNpemUgJSBiaXRzSW5Xb3JkKSkgew0KICAgICAgICBjb25zdGV4
cHIgc2l6ZV90IHJlbWFpbmluZ0JpdHMgPSBiaXRtYXBTaXplICUgYml0c0luV29yZDsNCiAgICAg
ICAgY29uc3RleHByIFdvcmRUeXBlIG1hc2sgPSAoc3RhdGljX2Nhc3Q8V29yZFR5cGU+KDEpIDw8
IHJlbWFpbmluZ0JpdHMpIC0gMTsNCiAgICAgICAgYml0c1tudW1iZXJPZldvcmRzIC0gMV0gJj0g
bWFzazsNCiAgICB9DQp9DQoNCnRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4NCmlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJh
dG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QNCnsNCiAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkgew0KICAgICAgICBpZiAoYml0c1tpXSAhPSBvdGhl
ci5iaXRzW2ldKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICByZXR1cm4g
dHJ1ZTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
Pg0KaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShj
b25zdCBCaXRtYXAmIG90aGVyKSBjb25zdA0Kew0KICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPg0K
aW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3J8PShjb25z
dCBCaXRtYXAmIG90aGVyKQ0Kew0KICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZX
b3JkczsgKytpKQ0KICAgICAgICBiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV07DQp9DQoNCnRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4NCmlubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yJj0oY29uc3QgQml0bWFwJiBvdGhl
cikNCnsNCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mV29yZHM7ICsraSkNCiAg
ICAgICAgYml0c1tpXSAmPSBvdGhlci5iaXRzW2ldOw0KfQ0KDQp0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+DQppbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpvcGVyYXRvcl49KGNvbnN0IEJpdG1hcCYgb3RoZXIpDQp7DQogICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZldvcmRzOyArK2kpDQogICAgICAgIGJpdHNbaV0g
Xj0gb3RoZXIuYml0c1tpXTsNCn0NCg0KdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPg0KaW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46Omhhc2goKSBjb25zdA0Kew0KICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7DQogICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZldvcmRzOyArK2kpDQogICAgICAgIHJlc3VsdCBePSBJ
bnRIYXNoPFdvcmRUeXBlPjo6aGFzaChiaXRzW2ldKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0K
DQp9IA0KDQp1c2luZyBXVEY6OkJpdG1hcDsNCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hcmtlZEJsb2NrLmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9Db3VudGluZ0xvY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBDb3Vu
dGluZ0xvY2sgZmluYWwgew0KICAgIENvdW50aW5nTG9jayhjb25zdCBDb3VudGluZ0xvY2smKSA9
IGRlbGV0ZTsgQ291bnRpbmdMb2NrJiBvcGVyYXRvcj0oY29uc3QgQ291bnRpbmdMb2NrJikgPSBk
ZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBO
b3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsg
fSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lz
SGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQoNCiAgICB0eXBlZGVm
IHVuc2lnbmVkIExvY2tUeXBlOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgTG9ja1R5cGUg
aXNIZWxkQml0ID0gMTsNCiAgICBzdGF0aWMgY29uc3RleHByIExvY2tUeXBlIGhhc1BhcmtlZEJp
dCA9IDI7DQogICAgc3RhdGljIGNvbnN0ZXhwciBMb2NrVHlwZSBtYXNrID0gaXNIZWxkQml0IHwg
aGFzUGFya2VkQml0Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgTG9ja1R5cGUgc2hpZnQgPSAyOw0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgTG9ja1R5cGUgY291bnRVbml0ID0gNDsNCiAgICANCiAgICBz
dHJ1Y3QgTG9ja0hvb2tzIHsNCiAgICAgICAgc3RhdGljIExvY2tUeXBlIGxvY2tIb29rKExvY2tU
eXBlIHZhbHVlKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gdmFsdWUgKyBjb3VudFVu
aXQ7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBMb2NrVHlwZSB1bmxvY2tI
b29rKExvY2tUeXBlIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQ0KICAgICAgICBzdGF0aWMgTG9j
a1R5cGUgcGFya0hvb2soTG9ja1R5cGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9DQogICAgICAg
IHN0YXRpYyBMb2NrVHlwZSBoYW5kb2ZmSG9vayhMb2NrVHlwZSB2YWx1ZSkgeyByZXR1cm4gdmFs
dWU7IH0NCiAgICB9Ow0KICAgIA0KICAgIHR5cGVkZWYgTG9ja0FsZ29yaXRobTxMb2NrVHlwZSwg
aXNIZWxkQml0LCBoYXNQYXJrZWRCaXQsIExvY2tIb29rcz4gRXhjbHVzaXZlQWxnb3JpdGhtOw0K
ICAgIA0KcHVibGljOg0KICAgIENvdW50aW5nTG9jaygpID0gZGVmYXVsdDsNCiAgICANCiAgICBi
b29sIHRyeUxvY2soKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIEV4Y2x1c2l2ZUFsZ29yaXRobTo6
dHJ5TG9jayhtX3dvcmQpOw0KICAgIH0NCg0KICAgIHZvaWQgbG9jaygpDQogICAgew0KICAgICAg
ICBpZiAoKCFFeGNsdXNpdmVBbGdvcml0aG06OmxvY2tGYXN0KG1fd29yZCkpKQ0KICAgICAgICAg
ICAgbG9ja1Nsb3coKTsNCiAgICB9DQogICAgDQogICAgdm9pZCB1bmxvY2soKQ0KICAgIHsNCiAg
ICAgICAgaWYgKCghRXhjbHVzaXZlQWxnb3JpdGhtOjp1bmxvY2tGYXN0KG1fd29yZCkpKQ0KICAg
ICAgICAgICAgdW5sb2NrU2xvdygpOw0KICAgIH0NCiAgICANCiAgICBib29sIGlzSGVsZCgpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gRXhjbHVzaXZlQWxnb3JpdGhtOjppc0xvY2tlZCht
X3dvcmQpOw0KICAgIH0NCiAgICANCiAgICBib29sIGlzTG9ja2VkKCkgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBpc0hlbGQoKTsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgY2xh
c3MgQ291bnQgew0KICAgIHB1YmxpYzoNCiAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQ0KICAgICAgICANCiAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvdW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhl
ci5tX3ZhbHVlOyB9DQogICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb3VudCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1ZTsgfQ0KICAgICAgICANCiAg
ICBwcml2YXRlOg0KICAgICAgICBmcmllbmQgY2xhc3MgQ291bnRpbmdMb2NrOw0KICAgICAgICAN
CiAgICAgICAgTG9ja1R5cGUgbV92YWx1ZSB7IDAgfTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIENvdW50IHRyeU9w
dGltaXN0aWNSZWFkKCkNCiAgICB7DQogICAgICAgIExvY2tUeXBlIGN1cnJlbnRWYWx1ZSA9IG1f
d29yZC5sb2FkKCk7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIGlm
IChjdXJyZW50VmFsdWUgJiBpc0hlbGRCaXQpDQogICAgICAgICAgICByZXR1cm4gQ291bnQoKTsN
CiAgICAgICAgcmV0dXJuIGdldENvdW50KGN1cnJlbnRWYWx1ZSk7DQogICAgfQ0KICAgIA0KICAg
IGJvb2wgdmFsaWRhdGUoQ291bnQgY291bnQpDQogICAgew0KICAgICAgICBXVEY6OmxvYWRMb2Fk
RmVuY2UoKTsNCiAgICAgICAgTG9ja1R5cGUgY3VycmVudFZhbHVlID0gbV93b3JkLmxvYWRSZWxh
eGVkKCk7DQogICAgICAgIHJldHVybiBnZXRDb3VudChjdXJyZW50VmFsdWUpID09IGNvdW50Ow0K
ICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KICAgIGF1dG8gZG9P
cHRpbWl6ZWRSZWFkKGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0KICAgICAgICBDb3VudCBjb3Vu
dCA9IHRyeU9wdGltaXN0aWNSZWFkKCk7DQogICAgICAgIGlmIChjb3VudCkgew0KICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBmdW5jKCk7DQogICAgICAgICAgICBpZiAodmFsaWRhdGUoY291bnQp
KQ0KICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICAgICAgbG9j
aygpOw0KICAgICAgICBhdXRvIHJlc3VsdCA9IGZ1bmMoKTsNCiAgICAgICAgdW5sb2NrKCk7DQog
ICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIElucHV0QW5kVmFsdWU8
TG9ja1R5cGUsIENvdW50PiB0cnlPcHRpbWlzdGljRmVuY2VsZXNzUmVhZCgpDQogICAgew0KICAg
ICAgICBMb2NrVHlwZSBjdXJyZW50VmFsdWUgPSBtX3dvcmQubG9hZFJlbGF4ZWQoKTsNCiAgICAg
ICAgaWYgKGN1cnJlbnRWYWx1ZSAmIGlzSGVsZEJpdCkNCiAgICAgICAgICAgIHJldHVybiBpbnB1
dEFuZFZhbHVlKGN1cnJlbnRWYWx1ZSwgQ291bnQoKSk7DQogICAgICAgIHJldHVybiBpbnB1dEFu
ZFZhbHVlKGN1cnJlbnRWYWx1ZSwgZ2V0Q291bnQoY3VycmVudFZhbHVlKSk7DQogICAgfQ0KICAg
IA0KICAgIGJvb2wgZmVuY2VsZXNzVmFsaWRhdGUoQ291bnQgY291bnQsIERlcGVuZGVuY3kgZGVw
ZW5kZW5jeSkNCiAgICB7DQogICAgICAgIExvY2tUeXBlIGN1cnJlbnRWYWx1ZSA9IGRlcGVuZGVu
Y3kuY29uc3VtZSh0aGlzKS0+bV93b3JkLmxvYWRSZWxheGVkKCk7DQogICAgICAgIHJldHVybiBn
ZXRDb3VudChjdXJyZW50VmFsdWUpID09IGNvdW50Ow0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcHRpbWlzdGljRnVuYywgdHlwZW5hbWUgRnVuYz4NCiAgICBhdXRvIGRvT3B0
aW1pemVkRmVuY2VsZXNzUmVhZChjb25zdCBPcHRpbWlzdGljRnVuYyYgb3B0aW1pc3RpY0Z1bmMs
IGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0KICAgICAgICBhdXRvIGNvdW50ID0gdHJ5T3B0aW1p
c3RpY0ZlbmNlbGVzc1JlYWQoKTsNCiAgICAgICAgaWYgKGNvdW50LnZhbHVlKSB7DQogICAgICAg
ICAgICBEZXBlbmRlbmN5IGRlcGVuZGVuY3kgPSBEZXBlbmRlbmN5OjpmZW5jZShjb3VudC5pbnB1
dCk7DQogICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wdGltaXN0aWNGdW5jKGRlcGVuZGVuY3ks
IGNvdW50LnZhbHVlKTsNCiAgICAgICAgICAgIGlmIChmZW5jZWxlc3NWYWxpZGF0ZShjb3VudC52
YWx1ZSwgZGVwZW5kZW5jeSkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAg
ICAgfQ0KICAgICAgICBsb2NrKCk7DQogICAgICAgIGF1dG8gcmVzdWx0ID0gZnVuYygpOw0KICAg
ICAgICB1bmxvY2soKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgDQpwcml2
YXRlOg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGxvY2tTbG93KCk7DQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgdW5sb2NrU2xvdygpOw0KICAgIA0KICAgIENvdW50IGdl
dENvdW50KExvY2tUeXBlIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgQ291bnQgcmVzdWx0Ow0KICAg
ICAgICByZXN1bHQubV92YWx1ZSA9IHZhbHVlIHwgbWFzazsNCiAgICAgICAgcmV0dXJuIHJlc3Vs
dDsNCiAgICB9DQogICAgDQogICAgQXRvbWljPExvY2tUeXBlPiBtX3dvcmQgeyAwIH07DQp9Ow0K
DQp9IA0KDQp1c2luZyBXVEY6OkNvdW50aW5nTG9jazsNCg0KI2xpbmUgMzMgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkQmxvY2su
aCINCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3I7ICAgIA0KY2xhc3MgRnJlZUxpc3Q7DQpjbGFzcyBIZWFwOw0KY2xhc3MgSlNDZWxsOw0KY2xh
c3MgQmxvY2tEaXJlY3Rvcnk7DQpjbGFzcyBNYXJrZWRTcGFjZTsNCmNsYXNzIFNsb3RWaXNpdG9y
Ow0KY2xhc3MgU3Vic3BhY2U7DQoNCnR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247DQoNCg0K
DQoNCg0KDQoNCg0KdXNpbmcgTWFya2VkQmxvY2tNYWxsb2MgPSBGYXN0TWFsbG9jOw0KdXNpbmcg
TWFya2VkQmxvY2tIYW5kbGVNYWxsb2MgPSBGYXN0TWFsbG9jOw0KY2xhc3MgTWFya2VkQmxvY2sg
ew0KICAgIE1hcmtlZEJsb2NrKGNvbnN0IE1hcmtlZEJsb2NrJikgPSBkZWxldGU7IE1hcmtlZEJs
b2NrJiBvcGVyYXRvcj0oY29uc3QgTWFya2VkQmxvY2smKSA9IGRlbGV0ZTs7DQogICAgcHVibGlj
OiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxv
Y2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RN
YWxsb2NlZCA9IGludDsgdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRo
aXNNYWNybyA9IGludDsNCiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0K
ICAgIGZyaWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkOw0KDQpwdWJsaWM6DQogICAgY2xhc3MgRm9v
dGVyOw0KICAgIGNsYXNzIEhhbmRsZTsNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIEZvb3Rl
cjsNCiAgICBmcmllbmQgY2xhc3MgSGFuZGxlOw0KcHVibGljOg0KICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IGF0b21TaXplID0gMTY7IA0KDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgYmxvY2tTaXplID0gc3RkOjptYXgoMTYgKiBLQiwgQ2VpbGluZ09uUGFnZVNpemUpOw0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYmxvY2tNYXNrID0gfihibG9ja1NpemUgLSAx
KTsgDQoNCiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBhdG9tc1BlckJsb2NrID0gYmxvY2tT
aXplIC8gYXRvbVNpemU7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhOdW1iZXJP
Zkxvd2VyVGllckNlbGxzID0gODsNCiAgICBzdGF0aWNfYXNzZXJ0KG1heE51bWJlck9mTG93ZXJU
aWVyQ2VsbHMgPD0gMjU2KTsNCiAgICANCiAgICBzdGF0aWNfYXNzZXJ0KCEoTWFya2VkQmxvY2s6
OmF0b21TaXplICYgKE1hcmtlZEJsb2NrOjphdG9tU2l6ZSAtIDEpKSwgIk1hcmtlZEJsb2NrOjph
dG9tU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOw0KICAgIHN0YXRpY19hc3NlcnQoIShN
YXJrZWRCbG9jazo6YmxvY2tTaXplICYgKE1hcmtlZEJsb2NrOjpibG9ja1NpemUgLSAxKSksICJN
YXJrZWRCbG9jazo6YmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uIik7DQogICAgDQog
ICAgdXNpbmcgQXRvbXNCaXRtYXAgPSBCaXRtYXA8YXRvbXNQZXJCbG9jaz47DQoNCiAgICBzdHJ1
Y3QgVm9pZEZ1bmN0b3Igew0KICAgICAgICB0eXBlZGVmIHZvaWQgUmV0dXJuVHlwZTsNCiAgICAg
ICAgdm9pZCByZXR1cm5WYWx1ZSgpIHsgfQ0KICAgIH07DQogICAgDQogICAgY2xhc3MgQ291bnRG
dW5jdG9yIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHR5cGVkZWYgc2l6ZV90IFJldHVyblR5cGU7
DQoNCiAgICAgICAgQ291bnRGdW5jdG9yKCkgOiBtX2NvdW50KDApIHsgfQ0KICAgICAgICB2b2lk
IGNvdW50KHNpemVfdCBjb3VudCkgY29uc3QgeyBtX2NvdW50ICs9IGNvdW50OyB9DQogICAgICAg
IFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9DQoNCiAg
ICBwcml2YXRlOg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIG11dGFibGUgUmV0dXJuVHlw
ZSBtX2NvdW50Ow0KICAgIH07DQogICAgICAgIA0KICAgIGNsYXNzIEhhbmRsZSB7DQogICAgICAg
IEhhbmRsZShjb25zdCBIYW5kbGUmKSA9IGRlbGV0ZTsgSGFuZGxlJiBvcGVyYXRvcj0oY29uc3Qg
SGFuZGxlJikgPSBkZWxldGU7Ow0KICAgICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUo
dm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0
b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyBy
ZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyB1c2luZyBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KICAgICAgICBmcmllbmQgY2xh
c3MgTWFya2VkQmxvY2s7DQogICAgICAgIGZyaWVuZCBzdHJ1Y3QgVmVyaWZ5TWFya2VkOw0KICAg
IHB1YmxpYzoNCiAgICAgICAgICAgIA0KICAgICAgICB+SGFuZGxlKCk7DQogICAgICAgICAgICAN
CiAgICAgICAgTWFya2VkQmxvY2smIGJsb2NrKCk7DQogICAgICAgIE1hcmtlZEJsb2NrOjpGb290
ZXImIGJsb2NrRm9vdGVyKCk7DQogICAgICAgICAgICANCiAgICAgICAgdm9pZCogY2VsbEFsaWdu
KHZvaWQqKTsNCiAgICAgICAgICAgIA0KICAgICAgICBib29sIGlzRW1wdHkoKTsNCg0KICAgICAg
ICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7DQoNCiAgICAgICAgQmxvY2tEaXJlY3Rvcnkq
IGRpcmVjdG9yeSgpIGNvbnN0Ow0KICAgICAgICBTdWJzcGFjZSogc3Vic3BhY2UoKSBjb25zdDsN
CiAgICAgICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcigp
IGNvbnN0Ow0KICAgICAgICBIZWFwKiBoZWFwKCkgY29uc3Q7DQogICAgICAgIGlubGluZSBNYXJr
ZWRTcGFjZSogc3BhY2UoKSBjb25zdDsNCiAgICAgICAgVk0mIHZtKCkgY29uc3Q7DQogICAgICAg
IFdlYWtTZXQmIHdlYWtTZXQoKTsNCiAgICAgICAgICAgIA0KICAgICAgICBlbnVtIFN3ZWVwTW9k
ZSB7IFN3ZWVwT25seSwgU3dlZXBUb0ZyZWVMaXN0IH07DQoNCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgdm9pZCBzd2VlcChGcmVlTGlzdCopOw0KICAgICAgICANCiAg
ICAgICAgDQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlc3Ryb3lGdW5jPg0KICAgICAgICB2
b2lkIGZpbmlzaFN3ZWVwS25vd2luZ0hlYXBDZWxsVHlwZShGcmVlTGlzdCosIGNvbnN0IERlc3Ry
b3lGdW5jJik7DQogICAgICAgIA0KICAgICAgICB2b2lkIHVuc3dlZXBXaXRoTm9OZXdseUFsbG9j
YXRlZCgpOw0KICAgICAgICANCiAgICAgICAgdm9pZCBzaHJpbmsoKTsNCiAgICAgICAgICAgIA0K
ICAgICAgICB2b2lkIHZpc2l0V2Vha1NldChTbG90VmlzaXRvciYpOw0KICAgICAgICB2b2lkIHJl
YXBXZWFrU2V0KCk7DQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsgDQogICAgICAgIHZvaWQgc3RvcEFs
bG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmKTsNCiAgICAgICAgdm9pZCByZXN1bWVBbGxvY2F0aW5n
KEZyZWVMaXN0Jik7IA0KICAgICAgICAgICAgDQogICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOw0K
ICAgICAgICBpbmxpbmUgdW5zaWduZWQgY2VsbHNQZXJCbG9jaygpOw0KICAgICAgICANCiAgICAg
ICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsNCiAgICAgICAgRGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7DQogICAgICAgIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbigpIGNvbnN0Ow0KICAgICAgICBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCgpIGNvbnN0
Ow0KICAgICAgICAgICAgDQogICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsNCiAgICAgICAgc2l6
ZV90IHNpemUoKTsNCiAgICAgICAgDQogICAgICAgIGJvb2wgaXNBbGxvY2F0ZWQoKTsNCiAgICAg
ICAgDQogICAgICAgIGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBIZWFw
VmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25zdCBIZWFw
Q2VsbCopOw0KICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uIG1hcmtp
bmdWZXJzaW9uLCBIZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24sIGJvb2wgaXNNYXJr
aW5nLCBjb25zdCB2b2lkKik7DQoNCiAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwq
KTsNCiAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsNCg0KICAgICAgICBib29s
IGlzRnJlZUxpc3RlZENlbGwoY29uc3Qgdm9pZCogdGFyZ2V0KSBjb25zdDsNCg0KICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNv
bnN0IEZ1bmN0b3ImKTsNCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsNCiAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsNCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaE1hcmtlZENlbGwoY29uc3Qg
RnVuY3RvciYpOw0KICAgICAgICAgICAgDQogICAgICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBi
b29sIGFyZU1hcmtzU3RhbGUoKTsNCiAgICAgICAgYm9vbCBhcmVNYXJrc1N0YWxlRm9yU3dlZXAo
KTsNCiAgICAgICAgDQogICAgICAgIHZvaWQgYXNzZXJ0TWFya3NOb3RTdGFsZSgpOw0KICAgICAg
ICAgICAgDQogICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Zy
ZWVMaXN0ZWQ7IH0NCiAgICAgICAgDQogICAgICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleDsgfQ0KICAgICAgICANCiAgICAgICAgdm9pZCByZW1vdmVGcm9tRGlyZWN0
b3J5KCk7DQogICAgICAgIA0KICAgICAgICB2b2lkIGRpZEFkZFRvRGlyZWN0b3J5KEJsb2NrRGly
ZWN0b3J5KiwgdW5zaWduZWQgaW5kZXgpOw0KICAgICAgICB2b2lkIGRpZFJlbW92ZUZyb21EaXJl
Y3RvcnkoKTsNCiAgICAgICAgDQogICAgICAgIHZvaWQqIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
Jm1fYmxvY2stPmF0b21zKClbMF07IH0NCiAgICAgICAgdm9pZCogZW5kKCkgY29uc3QgeyByZXR1
cm4gJm1fYmxvY2stPmF0b21zKClbbV9lbmRBdG9tXTsgfQ0KICAgICAgICB2b2lkKiBhdG9tQXQo
c2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuICZtX2Jsb2NrLT5hdG9tcygpW2ldOyB9DQogICAgICAg
IGJvb2wgY29udGFpbnModm9pZCogcCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSA8PSBwICYmIHAg
PCBlbmQoKTsgfQ0KDQogICAgICAgIHZvaWQgZHVtcFN0YXRlKFByaW50U3RyZWFtJik7DQogICAg
ICAgIA0KICAgIHByaXZhdGU6DQogICAgICAgIEhhbmRsZShIZWFwJiwgQWxpZ25lZE1lbW9yeUFs
bG9jYXRvciosIHZvaWQqKTsNCiAgICAgICAgDQogICAgICAgIGVudW0gU3dlZXBEZXN0cnVjdGlv
bk1vZGUgeyBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMsIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIEJsb2Nr
SGFzRGVzdHJ1Y3RvcnNBbmRDb2xsZWN0b3JJc1J1bm5pbmcgfTsNCiAgICAgICAgZW51bSBTY3Jp
YmJsZU1vZGUgeyBEb250U2NyaWJibGUsIFNjcmliYmxlIH07DQogICAgICAgIGVudW0gRW1wdHlN
b2RlIHsgSXNFbXB0eSwgTm90RW1wdHkgfTsNCiAgICAgICAgZW51bSBOZXdseUFsbG9jYXRlZE1v
ZGUgeyBIYXNOZXdseUFsbG9jYXRlZCwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCB9Ow0KICAg
ICAgICBlbnVtIE1hcmtzTW9kZSB7IE1hcmtzU3RhbGUsIE1hcmtzTm90U3RhbGUgfTsNCiAgICAg
ICAgDQogICAgICAgIFN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlIHN3ZWVwRGVzdHJ1Y3Rpb25Nb2RlKCk7
DQogICAgICAgIEVtcHR5TW9kZSBlbXB0eU1vZGUoKTsNCiAgICAgICAgU2NyaWJibGVNb2RlIHNj
cmliYmxlTW9kZSgpOw0KICAgICAgICBOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRN
b2RlKCk7DQogICAgICAgIE1hcmtzTW9kZSBtYXJrc01vZGUoKTsNCiAgICAgICAgDQogICAgICAg
IHRlbXBsYXRlPGJvb2wsIEVtcHR5TW9kZSwgU3dlZXBNb2RlLCBTd2VlcERlc3RydWN0aW9uTW9k
ZSwgU2NyaWJibGVNb2RlLCBOZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtzTW9kZSwgdHlwZW5hbWUg
RGVzdHJveUZ1bmM+DQogICAgICAgIHZvaWQgc3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCosIEVt
cHR5TW9kZSwgU3dlZXBNb2RlLCBTd2VlcERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBO
ZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtzTW9kZSwgY29uc3QgRGVzdHJveUZ1bmMmKTsNCiAgICAg
ICAgDQogICAgICAgIHZvaWQgc2V0SXNGcmVlTGlzdGVkKCk7DQogICAgICAgIA0KICAgICAgICB1
bnNpZ25lZCBtX2F0b21zUGVyQ2VsbCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSB9Ow0KICAgICAgICB1bnNpZ25lZCBtX2VuZEF0b20geyBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkPjo6bWF4KCkgfTsgDQogICAgICAgICAgICANCiAgICAgICAgQ2VsbEF0dHJpYnV0
ZXMgbV9hdHRyaWJ1dGVzOw0KICAgICAgICBib29sIG1faXNGcmVlTGlzdGVkIHsgZmFsc2UgfTsN
CiAgICAgICAgdW5zaWduZWQgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSB9Ow0KDQogICAgICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIG1fYWxpZ25lZE1l
bW9yeUFsbG9jYXRvciB7IG51bGxwdHIgfTsNCiAgICAgICAgQmxvY2tEaXJlY3RvcnkqIG1fZGly
ZWN0b3J5IHsgbnVsbHB0ciB9Ow0KICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsNCiAgICAgICAg
DQogICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9Ow0KICAgIH07DQoNCnBy
aXZhdGU6ICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNr
ID0gYXRvbVNpemUgLSAxOw0KDQogICAgdHlwZWRlZiBjaGFyIEF0b21bYXRvbVNpemVdOw0KDQpw
dWJsaWM6DQogICAgY2xhc3MgRm9vdGVyIHsNCiAgICBwdWJsaWM6DQogICAgICAgIEZvb3RlcihW
TSYsIEhhbmRsZSYpOw0KICAgICAgICB+Rm9vdGVyKCk7DQogICAgICAgIA0KICAgIHByaXZhdGU6
DQogICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQogICAgICAgIGZy
aWVuZCBjbGFzcyBNYXJrZWRCbG9jazsNCiAgICAgICAgDQogICAgICAgIEhhbmRsZSYgbV9oYW5k
bGU7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgVk0qIG1fdm07DQogICAgICAgIFN1YnNw
YWNlKiBtX3N1YnNwYWNlOw0KDQogICAgICAgIENvdW50aW5nTG9jayBtX2xvY2s7DQogICAgDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpbnQxNl90IG1f
Ymlhc2VkTWFya0NvdW50Ow0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgaW50MTZf
dCBtX21hcmtDb3VudEJpYXM7DQoNCiAgICAgICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lv
bjsNCiAgICAgICAgSGVhcFZlcnNpb24gbV9uZXdseUFsbG9jYXRlZFZlcnNpb247DQoNCiAgICAg
ICAgQXRvbXNCaXRtYXAgbV9tYXJrczsNCiAgICAgICAgQXRvbXNCaXRtYXAgbV9uZXdseUFsbG9j
YXRlZDsNCiAgICB9Ow0KICAgIA0KcHJpdmF0ZTogICAgDQogICAgRm9vdGVyJiBmb290ZXIoKTsN
CiAgICBjb25zdCBGb290ZXImIGZvb3RlcigpIGNvbnN0Ow0KDQpwdWJsaWM6DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgZW5kQXRvbSA9IChibG9ja1NpemUgLSBzaXplb2YoRm9vdGVyKSkg
LyBhdG9tU2l6ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwYXlsb2FkU2l6ZSA9IGVu
ZEF0b20gKiBhdG9tU2l6ZTsNCiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBmb290ZXJTaXpl
ID0gYmxvY2tTaXplIC0gcGF5bG9hZFNpemU7DQoNCiAgICBzdGF0aWNfYXNzZXJ0KHBheWxvYWRT
aXplID09ICgoYmxvY2tTaXplIC0gc2l6ZW9mKE1hcmtlZEJsb2NrOjpGb290ZXIpKSAmIH4oYXRv
bVNpemUgLSAxKSksICJQYXlsb2FkIHNpemUgY29tcHV0ZWQgdGhlIGFsdGVybmF0ZSB3YXkgc2hv
dWxkIGdpdmUgdGhlIHNhbWUgcmVzdWx0Iik7DQogICAgDQogICAgc3RhdGljIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIHRyeUNyZWF0ZShIZWFwJiwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciopOw0KICAg
ICAgICANCiAgICBIYW5kbGUmIGhhbmRsZSgpOw0KICAgIGNvbnN0IEhhbmRsZSYgaGFuZGxlKCkg
Y29uc3Q7DQogICAgICAgIA0KICAgIFZNJiB2bSgpIGNvbnN0Ow0KICAgIGlubGluZSBIZWFwKiBo
ZWFwKCkgY29uc3Q7DQogICAgaW5saW5lIE1hcmtlZFNwYWNlKiBzcGFjZSgpIGNvbnN0Ow0KDQog
ICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKik7DQogICAgc3RhdGljIE1h
cmtlZEJsb2NrKiBibG9ja0Zvcihjb25zdCB2b2lkKik7DQogICAgdW5zaWduZWQgYXRvbU51bWJl
cihjb25zdCB2b2lkKik7DQogICAgc2l6ZV90IGNhbmRpZGF0ZUF0b21OdW1iZXIoY29uc3Qgdm9p
ZCopOw0KICAgICAgICANCiAgICBzaXplX3QgbWFya0NvdW50KCk7DQoNCiAgICBib29sIGlzTWFy
a2VkKGNvbnN0IHZvaWQqKTsNCiAgICBib29sIGlzTWFya2VkKEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uLCBjb25zdCB2b2lkKik7DQogICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKiwgRGVw
ZW5kZW5jeSk7DQogICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqLCBEZXBlbmRl
bmN5KTsNCiAgICAgICAgDQogICAgYm9vbCBpc0F0b20oY29uc3Qgdm9pZCopOw0KICAgIHZvaWQg
Y2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOw0KICAgIA0KICAgIGJvb2wgaXNOZXdseUFsbG9jYXRl
ZChjb25zdCB2b2lkKik7DQogICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7
DQogICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsNCiAgICBjb25zdCBB
dG9tc0JpdG1hcCYgbmV3bHlBbGxvY2F0ZWQoKSBjb25zdDsNCiAgICANCiAgICBIZWFwVmVyc2lv
biBuZXdseUFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBmb290ZXIoKS5tX25ld2x5
QWxsb2NhdGVkVmVyc2lvbjsgfQ0KICAgIA0KICAgIGlubGluZSBib29sIGlzTmV3bHlBbGxvY2F0
ZWRTdGFsZSgpIGNvbnN0Ow0KICAgIA0KICAgIGlubGluZSBib29sIGhhc0FueU5ld2x5QWxsb2Nh
dGVkKCk7DQogICAgdm9pZCByZXNldEFsbG9jYXRlZCgpOw0KICAgICAgICANCiAgICBzaXplX3Qg
Y2VsbFNpemUoKTsNCiAgICBjb25zdCBDZWxsQXR0cmlidXRlcyYgYXR0cmlidXRlcygpIGNvbnN0
Ow0KICAgIA0KICAgIGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7DQogICAgdm9pZCBub3RlTWFy
a2VkKCk7DQoNCg0KI2xpbmUgMzU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hcmtlZEJsb2NrLmgiDQogICAgdm9pZCBhc3NlcnRWYWxp
ZENlbGwoVk0mLCBIZWFwQ2VsbCopIGNvbnN0IHsgfQ0KI2xpbmUgMzYxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hcmtlZEJsb2NrLmgi
DQogICAgICAgIA0KICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBib29sIGFyZU1hcmtzU3RhbGUoKTsNCiAgICBib29sIGFyZU1hcmtzU3RhbGUoSGVh
cFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOw0KICAgIA0KICAgIERlcGVuZGVuY3kgYWJvdXRUb01h
cmsoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOw0KICAgICAgICANCg0KDQojbGluZSAzNzIg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxc
TWFya2VkQmxvY2suaCINCiAgICB2b2lkIGFzc2VydE1hcmtzTm90U3RhbGUoKSB7IH0NCiNsaW5l
IDM3NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxo
ZWFwXFxNYXJrZWRCbG9jay5oIg0KICAgICAgICANCiAgICB2b2lkIHJlc2V0TWFya3MoKTsNCiAg
ICANCiAgICBib29sIGlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApOw0KICAgIEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gZm9vdGVyKCkubV9tYXJraW5nVmVyc2lv
bjsgfQ0KICAgIA0KICAgIGNvbnN0IEF0b21zQml0bWFwJiBtYXJrcygpIGNvbnN0Ow0KICAgIA0K
ICAgIENvdW50aW5nTG9jayYgbG9jaygpIHsgcmV0dXJuIGZvb3RlcigpLm1fbG9jazsgfQ0KICAg
IA0KICAgIFN1YnNwYWNlKiBzdWJzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZvb3RlcigpLm1fc3Vi
c3BhY2U7IH0NCg0KICAgIHZvaWQgcG9wdWxhdGVQYWdlKCkgY29uc3QNCiAgICB7DQogICAgICAg
ICpiaXR3aXNlX2Nhc3Q8dm9sYXRpbGUgdWludDhfdCo+KCZmb290ZXIoKSk7DQogICAgfQ0KICAg
IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mRm9vdGVyID0gZW5kQXRvbSAq
IGF0b21TaXplOw0KDQpwcml2YXRlOg0KICAgIE1hcmtlZEJsb2NrKFZNJiwgSGFuZGxlJik7DQog
ICAgfk1hcmtlZEJsb2NrKCk7DQogICAgQXRvbSogYXRvbXMoKTsNCiAgICAgICAgDQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgYWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uIG1hcmtp
bmdWZXJzaW9uKTsNCiAgICB2b2lkIGNsZWFySGFzQW55TWFya2VkKCk7DQogICAgDQogICAgdm9p
ZCBub3RlTWFya2VkU2xvdygpOw0KICAgIA0KICAgIGlubGluZSBib29sIG1hcmtzQ29udmV5TGl2
ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsNCiAgICBpbmxp
bmUgYm9vbCBtYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBteU1h
cmtpbmdWZXJzaW9uLCBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7DQoNCiAgICBmcmllbmQg
Y2xhc3MgRnJlZUxpc3Q7DQp9Ow0KDQppbmxpbmUgTWFya2VkQmxvY2s6OkZvb3RlciYgTWFya2Vk
QmxvY2s6OmZvb3RlcigpDQp7DQogICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8TWFya2VkQmxvY2s6
OkZvb3Rlcio+KGF0b21zKCkgKyBlbmRBdG9tKTsNCn0NCg0KaW5saW5lIGNvbnN0IE1hcmtlZEJs
b2NrOjpGb290ZXImIE1hcmtlZEJsb2NrOjpmb290ZXIoKSBjb25zdA0Kew0KICAgIHJldHVybiBj
b25zdF9jYXN0PE1hcmtlZEJsb2NrKj4odGhpcyktPmZvb3RlcigpOw0KfQ0KDQppbmxpbmUgTWFy
a2VkQmxvY2s6OkhhbmRsZSYgTWFya2VkQmxvY2s6OmhhbmRsZSgpDQp7DQogICAgcmV0dXJuIGZv
b3RlcigpLm1faGFuZGxlOw0KfQ0KDQppbmxpbmUgY29uc3QgTWFya2VkQmxvY2s6OkhhbmRsZSYg
TWFya2VkQmxvY2s6OmhhbmRsZSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TWFy
a2VkQmxvY2sqPih0aGlzKS0+aGFuZGxlKCk7DQp9DQoNCmlubGluZSBNYXJrZWRCbG9jayYgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6YmxvY2soKQ0Kew0KICAgIHJldHVybiAqbV9ibG9jazsNCn0NCg0K
aW5saW5lIE1hcmtlZEJsb2NrOjpGb290ZXImIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmJsb2NrRm9v
dGVyKCkNCnsNCiAgICByZXR1cm4gYmxvY2soKS5mb290ZXIoKTsNCn0NCg0KaW5saW5lIE1hcmtl
ZEJsb2NrOjpBdG9tKiBNYXJrZWRCbG9jazo6YXRvbXMoKQ0Kew0KICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEF0b20qPih0aGlzKTsNCn0NCg0KaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
QXRvbUFsaWduZWQoY29uc3Qgdm9pZCogcCkNCnsNCiAgICByZXR1cm4gIShyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ocCkgJiBhdG9tQWxpZ25tZW50TWFzayk7DQp9DQoNCmlubGluZSB2b2lk
KiBNYXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsQWxpZ24odm9pZCogcCkNCnsNCiAgICB1aW50cHRy
X3QgYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihibG9jaygpLmF0b21zKCkpOw0K
ICAgIHVpbnRwdHJfdCBiaXRzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApOw0KICAg
IGJpdHMgLT0gYmFzZTsNCiAgICBiaXRzIC09IGJpdHMgJSBjZWxsU2l6ZSgpOw0KICAgIGJpdHMg
Kz0gYmFzZTsNCiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYml0cyk7DQp9DQoN
CmlubGluZSBNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNvbnN0IHZvaWQqIHAp
DQp7DQogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TWFya2VkQmxvY2sqPihyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4ocCkgJiBibG9ja01hc2spOw0KfQ0KDQppbmxpbmUgQmxvY2tEaXJl
Y3RvcnkqIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpcmVjdG9yeSgpIGNvbnN0DQp7DQogICAgcmV0
dXJuIG1fZGlyZWN0b3J5Ow0KfQ0KDQppbmxpbmUgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogTWFy
a2VkQmxvY2s6OkhhbmRsZTo6YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpIGNvbnN0DQp7DQogICAg
cmV0dXJuIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsNCn0NCg0KaW5saW5lIEhlYXAqIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmhlYXAoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX3dlYWtTZXQuaGVh
cCgpOw0KfQ0KDQppbmxpbmUgVk0mIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnZtKCkgY29uc3QNCnsN
CiAgICByZXR1cm4gbV93ZWFrU2V0LnZtKCk7DQp9DQoNCmlubGluZSBWTSYgTWFya2VkQmxvY2s6
OnZtKCkgY29uc3QNCnsNCiAgICByZXR1cm4gKmZvb3RlcigpLm1fdm07DQp9DQoNCmlubGluZSBX
ZWFrU2V0JiBNYXJrZWRCbG9jazo6SGFuZGxlOjp3ZWFrU2V0KCkNCnsNCiAgICByZXR1cm4gbV93
ZWFrU2V0Ow0KfQ0KDQppbmxpbmUgV2Vha1NldCYgTWFya2VkQmxvY2s6OndlYWtTZXQoKQ0Kew0K
ICAgIHJldHVybiBoYW5kbGUoKS53ZWFrU2V0KCk7DQp9DQoNCmlubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnNocmluaygpDQp7DQogICAgbV93ZWFrU2V0LnNocmluaygpOw0KfQ0KDQpp
bmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjp2aXNpdFdlYWtTZXQoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpDQp7DQogICAgcmV0dXJuIG1fd2Vha1NldC52aXNpdCh2aXNpdG9yKTsNCn0NCg0K
aW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVhcFdlYWtTZXQoKQ0Kew0KICAgIG1f
d2Vha1NldC5yZWFwKCk7DQp9DQoNCmlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
Y2VsbFNpemUoKQ0Kew0KICAgIHJldHVybiBtX2F0b21zUGVyQ2VsbCAqIGF0b21TaXplOw0KfQ0K
DQppbmxpbmUgc2l6ZV90IE1hcmtlZEJsb2NrOjpjZWxsU2l6ZSgpDQp7DQogICAgcmV0dXJuIGhh
bmRsZSgpLmNlbGxTaXplKCk7DQp9DQoNCmlubGluZSBjb25zdCBDZWxsQXR0cmlidXRlcyYgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6YXR0cmlidXRlcygpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1fYXR0
cmlidXRlczsNCn0NCg0KaW5saW5lIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBNYXJrZWRCbG9jazo6
YXR0cmlidXRlcygpIGNvbnN0DQp7DQogICAgcmV0dXJuIGhhbmRsZSgpLmF0dHJpYnV0ZXMoKTsN
Cn0NCg0KaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNEZXN0cnVjdGlvbigp
IGNvbnN0DQp7DQogICAgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rl
c3RydWN0aW9uOw0KfQ0KDQppbmxpbmUgRGVzdHJ1Y3Rpb25Nb2RlIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmRlc3RydWN0aW9uKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9hdHRyaWJ1dGVzLmRlc3Ry
dWN0aW9uOw0KfQ0KDQppbmxpbmUgSGVhcENlbGw6OktpbmQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
Y2VsbEtpbmQoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7DQp9
DQoNCmlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6bWFya0NvdW50KCkNCnsNCiAg
ICByZXR1cm4gbV9ibG9jay0+bWFya0NvdW50KCk7DQp9DQoNCmlubGluZSBzaXplX3QgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c2l6ZSgpDQp7DQogICAgcmV0dXJuIG1hcmtDb3VudCgpICogY2VsbFNp
emUoKTsNCn0NCg0KaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6Y2FuZGlkYXRlQXRvbU51bWJl
cihjb25zdCB2b2lkKiBwKQ0Kew0KICAgIA0KICAgIA0KICAgIHJldHVybiAocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHApIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSAv
IGF0b21TaXplOw0KfQ0KDQppbmxpbmUgdW5zaWduZWQgTWFya2VkQmxvY2s6OmF0b21OdW1iZXIo
Y29uc3Qgdm9pZCogcCkNCnsNCiAgICBzaXplX3QgYXRvbU51bWJlciA9IGNhbmRpZGF0ZUF0b21O
dW1iZXIocCk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBhdG9tTnVtYmVyOw0KfQ0KDQpp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZShIZWFwVmVyc2lvbiBtYXJraW5n
VmVyc2lvbikNCnsNCiAgICByZXR1cm4gbWFya2luZ1ZlcnNpb24gIT0gZm9vdGVyKCkubV9tYXJr
aW5nVmVyc2lvbjsNCn0NCg0KaW5saW5lIERlcGVuZGVuY3kgTWFya2VkQmxvY2s6OmFib3V0VG9N
YXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQ0Kew0KICAgIEhlYXBWZXJzaW9uIHZlcnNp
b24gPSBmb290ZXIoKS5tX21hcmtpbmdWZXJzaW9uOw0KICAgIGlmICgodmVyc2lvbiAhPSBtYXJr
aW5nVmVyc2lvbikpDQogICAgICAgIGFib3V0VG9NYXJrU2xvdyhtYXJraW5nVmVyc2lvbik7DQog
ICAgcmV0dXJuIERlcGVuZGVuY3k6OmZlbmNlKHZlcnNpb24pOw0KfQ0KDQppbmxpbmUgdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRNYXJrc05vdFN0YWxlKCkNCnsNCiAgICBibG9jaygp
LmFzc2VydE1hcmtzTm90U3RhbGUoKTsNCn0NCg0KaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
TWFya2VkUmF3KGNvbnN0IHZvaWQqIHApDQp7DQogICAgcmV0dXJuIGZvb3RlcigpLm1fbWFya3Mu
Z2V0KGF0b21OdW1iZXIocCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJr
ZWQoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqIHApDQp7DQogICAgSGVh
cFZlcnNpb24gdmVyc2lvbiA9IGZvb3RlcigpLm1fbWFya2luZ1ZlcnNpb247DQogICAgaWYgKCh2
ZXJzaW9uICE9IG1hcmtpbmdWZXJzaW9uKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIHJl
dHVybiBmb290ZXIoKS5tX21hcmtzLmdldChhdG9tTnVtYmVyKHApLCBEZXBlbmRlbmN5OjpmZW5j
ZSh2ZXJzaW9uKSk7DQp9DQoNCmlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25z
dCB2b2lkKiBwLCBEZXBlbmRlbmN5IGRlcGVuZGVuY3kpDQp7DQogICAgYXNzZXJ0TWFya3NOb3RT
dGFsZSgpOw0KICAgIHJldHVybiBmb290ZXIoKS5tX21hcmtzLmdldChhdG9tTnVtYmVyKHApLCBk
ZXBlbmRlbmN5KTsNCn0NCg0KaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJr
ZWQoY29uc3Qgdm9pZCogcCwgRGVwZW5kZW5jeSBkZXBlbmRlbmN5KQ0Kew0KICAgIGFzc2VydE1h
cmtzTm90U3RhbGUoKTsNCiAgICByZXR1cm4gZm9vdGVyKCkubV9tYXJrcy5jb25jdXJyZW50VGVz
dEFuZFNldChhdG9tTnVtYmVyKHApLCBkZXBlbmRlbmN5KTsNCn0NCg0KaW5saW5lIGNvbnN0IEJp
dG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4mIE1hcmtlZEJsb2NrOjptYXJrcygpIGNv
bnN0DQp7DQogICAgcmV0dXJuIGZvb3RlcigpLm1fbWFya3M7DQp9DQoNCmlubGluZSBib29sIE1h
cmtlZEJsb2NrOjppc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHApDQp7DQogICAgcmV0dXJu
IGZvb3RlcigpLm1fbmV3bHlBbGxvY2F0ZWQuZ2V0KGF0b21OdW1iZXIocCkpOw0KfQ0KDQppbmxp
bmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCogcCkNCnsN
CiAgICBmb290ZXIoKS5tX25ld2x5QWxsb2NhdGVkLnNldChhdG9tTnVtYmVyKHApKTsNCn0NCg0K
aW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCog
cCkNCnsNCiAgICBmb290ZXIoKS5tX25ld2x5QWxsb2NhdGVkLmNsZWFyKGF0b21OdW1iZXIocCkp
Ow0KfQ0KDQppbmxpbmUgY29uc3QgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPiYg
TWFya2VkQmxvY2s6Om5ld2x5QWxsb2NhdGVkKCkgY29uc3QNCnsNCiAgICByZXR1cm4gZm9vdGVy
KCkubV9uZXdseUFsbG9jYXRlZDsNCn0NCg0KaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRv
bShjb25zdCB2b2lkKiBwKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICBzaXplX3QgYXRvbU51bWJl
ciA9IGNhbmRpZGF0ZUF0b21OdW1iZXIocCk7DQogICAgaWYgKGF0b21OdW1iZXIgJSBoYW5kbGUo
KS5tX2F0b21zUGVyQ2VsbCkgDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICBpZiAoYXRvbU51
bWJlciA+PSBoYW5kbGUoKS5tX2VuZEF0b20pIA0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
cmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPg0KaW5saW5lIEl0
ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQ0Kew0KICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0dHJpYnV0ZXMu
Y2VsbEtpbmQ7DQogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9h
dG9tc1BlckNlbGwpIHsNCiAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0
PEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOw0KICAgICAgICBpZiAoZnVuY3Rvcihp
LCBjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpDQogICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOw0KICAgIH0NCiAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsNCn0NCg0KaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omhhc0FueU1hcmtl
ZCgpIGNvbnN0DQp7DQogICAgcmV0dXJuIGZvb3RlcigpLm1fYmlhc2VkTWFya0NvdW50ICE9IGZv
b3RlcigpLm1fbWFya0NvdW50QmlhczsNCn0NCg0KaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6Om5v
dGVNYXJrZWQoKQ0Kew0KICAgIA0KICAgIGludDE2X3QgYmlhc2VkTWFya0NvdW50ID0gZm9vdGVy
KCkubV9iaWFzZWRNYXJrQ291bnQ7DQogICAgKytiaWFzZWRNYXJrQ291bnQ7DQogICAgZm9vdGVy
KCkubV9iaWFzZWRNYXJrQ291bnQgPSBiaWFzZWRNYXJrQ291bnQ7DQogICAgaWYgKCghYmlhc2Vk
TWFya0NvdW50KSkNCiAgICAgICAgbm90ZU1hcmtlZFNsb3coKTsNCn0NCg0KfSANCg0KbmFtZXNw
YWNlIFdURiB7DQoNCnN0cnVjdCBNYXJrZWRCbG9ja0hhc2ggOiBQdHJIYXNoPEpTQzo6TWFya2Vk
QmxvY2sqPiB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSlNDOjpNYXJrZWRCbG9jayogY29u
c3QmIGtleSkNCiAgICB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oa2V5KSAvIEpTQzo6TWFya2VkQmxvY2s6
OmJsb2NrU2l6ZTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxK
U0M6Ok1hcmtlZEJsb2NrKj4gOiBNYXJrZWRCbG9ja0hhc2ggeyB9Ow0KDQp2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1v
ZGUpOw0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaGVhcFxcU3Vic3BhY2UuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkU3BhY2UuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGhlYXBcXEJsb2NrRGlyZWN0b3J5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcQmxvY2tEaXJl
Y3RvcnlCaXRzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Zhc3RCaXRWZWN0b3IuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCg0K
dXNpbmcgRmFzdEJpdFZlY3Rvck1hbGxvYyA9IEZhc3RNYWxsb2M7DQoNCmlubGluZSBjb25zdGV4
cHIgc2l6ZV90IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChzaXplX3QgbnVtQml0cykgeyByZXR1
cm4gKG51bUJpdHMgKyAzMSkgLyAzMjsgfQ0KDQpjbGFzcyBGYXN0Qml0VmVjdG9yV29yZFZpZXcg
ew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1
cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpX
VEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7
IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxs
VGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2lu
ZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRv
Rm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgdHlwZWRl
ZiBGYXN0Qml0VmVjdG9yV29yZFZpZXcgVmlld1R5cGU7DQogICAgDQogICAgRmFzdEJpdFZlY3Rv
cldvcmRWaWV3KCkgeyB9DQogICAgDQogICAgRmFzdEJpdFZlY3RvcldvcmRWaWV3KGNvbnN0IHVp
bnQzMl90KiBhcnJheSwgc2l6ZV90IG51bUJpdHMpDQogICAgICAgIDogbV93b3JkcyhhcnJheSkN
CiAgICAgICAgLCBtX251bUJpdHMobnVtQml0cykNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIHNp
emVfdCBudW1CaXRzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX251bUJpdHM7DQog
ICAgfQ0KICAgIA0KICAgIHVpbnQzMl90IHdvcmQoc2l6ZV90IGluZGV4KSBjb25zdA0KICAgIHsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gbV93b3Jkc1tpbmRleF07DQogICAg
fQ0KICAgIA0KcHJpdmF0ZToNCiAgICBjb25zdCB1aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIg
fTsNCiAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9Ow0KfTsNCg0KY2xhc3MgRmFzdEJpdFZlY3Rv
cldvcmRPd25lciB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsg
OjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0
aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190
aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoN
CiAgICB0eXBlZGVmIEZhc3RCaXRWZWN0b3JXb3JkVmlldyBWaWV3VHlwZTsNCiAgICANCiAgICBG
YXN0Qml0VmVjdG9yV29yZE93bmVyKCkgPSBkZWZhdWx0Ow0KICAgIA0KICAgIEZhc3RCaXRWZWN0
b3JXb3JkT3duZXIoRmFzdEJpdFZlY3RvcldvcmRPd25lciYmIG90aGVyKQ0KICAgICAgICA6IG1f
d29yZHMoc3RkOjpleGNoYW5nZShvdGhlci5tX3dvcmRzLCBudWxscHRyKSkNCiAgICAgICAgLCBt
X251bUJpdHMoc3RkOjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQ0KICAgIHsNCiAgICB9
DQoNCiAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVyKGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3du
ZXImIG90aGVyKQ0KICAgIHsNCiAgICAgICAgKnRoaXMgPSBvdGhlcjsNCiAgICB9DQogICAgDQog
ICAgfkZhc3RCaXRWZWN0b3JXb3JkT3duZXIoKQ0KICAgIHsNCiAgICAgICAgaWYgKG1fd29yZHMp
DQogICAgICAgICAgICBGYXN0Qml0VmVjdG9yTWFsbG9jOjpmcmVlKG1fd29yZHMpOw0KICAgIH0N
CiAgICANCiAgICBGYXN0Qml0VmVjdG9yV29yZFZpZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuIEZh
c3RCaXRWZWN0b3JXb3JkVmlldyhtX3dvcmRzLCBtX251bUJpdHMpOyB9DQogICAgDQogICAgRmFz
dEJpdFZlY3RvcldvcmRPd25lciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3du
ZXImIG90aGVyKQ0KICAgIHsNCiAgICAgICAgaWYgKGFycmF5TGVuZ3RoKCkgIT0gb3RoZXIuYXJy
YXlMZW5ndGgoKSkNCiAgICAgICAgICAgIHNldEVxdWFsc1Nsb3cob3RoZXIpOw0KICAgICAgICBl
bHNlIHsNCiAgICAgICAgICAgIG1lbWNweShtX3dvcmRzLCBvdGhlci5tX3dvcmRzLCBhcnJheUxl
bmd0aCgpICogc2l6ZW9mKHVpbnQzMl90KSk7DQogICAgICAgICAgICBtX251bUJpdHMgPSBvdGhl
ci5tX251bUJpdHM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCiAg
ICANCiAgICBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvcGVyYXRvcj0oRmFzdEJpdFZlY3Rvcldv
cmRPd25lciYmIG90aGVyKQ0KICAgIHsNCiAgICAgICAgc3RkOjpzd2FwKG1fd29yZHMsIG90aGVy
Lm1fd29yZHMpOw0KICAgICAgICBzdGQ6OnN3YXAobV9udW1CaXRzLCBvdGhlci5tX251bUJpdHMp
Ow0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgc2V0QWxsKCkN
CiAgICB7DQogICAgICAgIG1lbXNldChtX3dvcmRzLCAyNTUsIGFycmF5TGVuZ3RoKCkgKiBzaXpl
b2YodWludDMyX3QpKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBjbGVhckFsbCgpDQogICAgew0K
ICAgICAgICBtZW1zZXQobV93b3JkcywgMCwgYXJyYXlMZW5ndGgoKSAqIHNpemVvZih1aW50MzJf
dCkpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHNldChjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93
bmVyJiBvdGhlcikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbWVtY3B5KG1f
d29yZHMsIG90aGVyLm1fd29yZHMsIGFycmF5TGVuZ3RoKCkgKiBzaXplb2YodWludDMyX3QpKTsN
CiAgICB9DQogICAgDQogICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIG1fbnVtQml0czsNCiAgICB9DQogICAgDQogICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVt
Qml0cygpKTsNCiAgICB9DQogICAgDQogICAgdm9pZCByZXNpemUoc2l6ZV90IG51bUJpdHMpDQog
ICAgew0KICAgICAgICBpZiAoYXJyYXlMZW5ndGgoKSAhPSBmYXN0Qml0VmVjdG9yQXJyYXlMZW5n
dGgobnVtQml0cykpDQogICAgICAgICAgICByZXNpemVTbG93KG51bUJpdHMpOw0KICAgICAgICBt
X251bUJpdHMgPSBudW1CaXRzOw0KICAgIH0NCiAgICANCiAgICB1aW50MzJfdCB3b3JkKHNpemVf
dCBpbmRleCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJu
IG1fd29yZHNbaW5kZXhdOw0KICAgIH0NCiAgICANCiAgICB1aW50MzJfdCYgd29yZChzaXplX3Qg
aW5kZXgpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX3dvcmRz
W2luZGV4XTsNCiAgICB9DQogICAgDQogICAgY29uc3QgdWludDMyX3QqIHdvcmRzKCkgY29uc3Qg
eyByZXR1cm4gbV93b3JkczsgfQ0KICAgIHVpbnQzMl90KiB3b3JkcygpIHsgcmV0dXJuIG1fd29y
ZHM7IH0NCg0KcHJpdmF0ZToNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzZXRFcXVh
bHNTbG93KGNvbnN0IEZhc3RCaXRWZWN0b3JXb3JkT3duZXImIG90aGVyKTsNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCByZXNpemVTbG93KHNpemVfdCBudW1CaXRzKTsNCiAgICANCiAg
ICB1aW50MzJfdCogbV93b3JkcyB7IG51bGxwdHIgfTsNCiAgICBzaXplX3QgbV9udW1CaXRzIHsg
MCB9Ow0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgTGVmdCwgdHlwZW5hbWUgUmlnaHQ+DQpjbGFz
cyBGYXN0Qml0VmVjdG9yQW5kV29yZHMgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZh
dGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBp
bnQ7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBGYXN0Qml0VmVjdG9yQW5kV29yZHMgVmlld1R5cGU7
DQogICAgDQogICAgRmFzdEJpdFZlY3RvckFuZFdvcmRzKGNvbnN0IExlZnQmIGxlZnQsIGNvbnN0
IFJpZ2h0JiByaWdodCkNCiAgICAgICAgOiBtX2xlZnQobGVmdCkNCiAgICAgICAgLCBtX3JpZ2h0
KHJpZ2h0KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCiAgICANCiAgICBGYXN0
Qml0VmVjdG9yQW5kV29yZHMgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9DQogICAgDQog
ICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fbGVmdC5u
dW1CaXRzKCk7DQogICAgfQ0KICAgIA0KICAgIHVpbnQzMl90IHdvcmQoc2l6ZV90IGluZGV4KSBj
b25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fbGVmdC53b3JkKGluZGV4KSAmIG1fcmlnaHQu
d29yZChpbmRleCk7DQogICAgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICBMZWZ0IG1fbGVmdDsNCiAg
ICBSaWdodCBtX3JpZ2h0Ow0KfTsNCiAgICANCnRlbXBsYXRlPHR5cGVuYW1lIExlZnQsIHR5cGVu
YW1lIFJpZ2h0Pg0KY2xhc3MgRmFzdEJpdFZlY3Rvck9yV29yZHMgew0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBGYXN0Qml0VmVjdG9yT3JX
b3JkcyBWaWV3VHlwZTsNCiAgICANCiAgICBGYXN0Qml0VmVjdG9yT3JXb3Jkcyhjb25zdCBMZWZ0
JiBsZWZ0LCBjb25zdCBSaWdodCYgcmlnaHQpDQogICAgICAgIDogbV9sZWZ0KGxlZnQpDQogICAg
ICAgICwgbV9yaWdodChyaWdodCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQog
ICAgDQogICAgRmFzdEJpdFZlY3Rvck9yV29yZHMgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlz
OyB9DQogICAgDQogICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1fbGVmdC5udW1CaXRzKCk7DQogICAgfQ0KICAgIA0KICAgIHVpbnQzMl90IHdvcmQoc2l6
ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fbGVmdC53b3JkKGluZGV4
KSB8IG1fcmlnaHQud29yZChpbmRleCk7DQogICAgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICBMZWZ0
IG1fbGVmdDsNCiAgICBSaWdodCBtX3JpZ2h0Ow0KfTsNCiAgICANCnRlbXBsYXRlPHR5cGVuYW1l
IFZpZXc+DQpjbGFzcyBGYXN0Qml0VmVjdG9yTm90V29yZHMgew0KICAgIHB1YmxpYzogdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
eyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQg
PSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBGYXN0Qml0VmVjdG9yTm90V29y
ZHMgVmlld1R5cGU7DQogICAgDQogICAgRmFzdEJpdFZlY3Rvck5vdFdvcmRzKGNvbnN0IFZpZXcm
IHZpZXcpDQogICAgICAgIDogbV92aWV3KHZpZXcpDQogICAgew0KICAgIH0NCiAgICANCiAgICBG
YXN0Qml0VmVjdG9yTm90V29yZHMgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9DQogICAg
DQogICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fdmll
dy5udW1CaXRzKCk7DQogICAgfQ0KICAgIA0KICAgIHVpbnQzMl90IHdvcmQoc2l6ZV90IGluZGV4
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIH5tX3ZpZXcud29yZChpbmRleCk7DQogICAg
fQ0KICAgIA0KcHJpdmF0ZToNCiAgICBWaWV3IG1fdmlldzsNCn07DQoNCmNsYXNzIEZhc3RCaXRW
ZWN0b3I7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFdvcmRzPg0KY2xhc3MgRmFzdEJpdFZlY3Rvcklt
cGwgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3RO
dWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1
c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVy
ZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgRmFz
dEJpdFZlY3RvckltcGwoKQ0KICAgICAgICA6IG1fd29yZHMoKQ0KICAgIHsNCiAgICB9DQogICAg
DQogICAgRmFzdEJpdFZlY3RvckltcGwoY29uc3QgV29yZHMmIHdvcmRzKQ0KICAgICAgICA6IG1f
d29yZHMod29yZHMpDQogICAgew0KICAgIH0NCiAgICANCiAgICBGYXN0Qml0VmVjdG9ySW1wbChX
b3JkcyYmIHdvcmRzKQ0KICAgICAgICA6IG1fd29yZHMoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3Zl
UGFyYW1ldGVyPih3b3JkcykpDQogICAgew0KICAgIH0NCg0KICAgIHNpemVfdCBudW1CaXRzKCkg
Y29uc3QgeyByZXR1cm4gbV93b3Jkcy5udW1CaXRzKCk7IH0NCiAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG51bUJpdHMoKTsgfQ0KICAgIA0KICAgIHNpemVfdCBhcnJheUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkpOyB9DQog
ICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+DQogICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE90aGVyJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChudW1CaXRzKCkgIT0g
b3RoZXIubnVtQml0cygpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBmb3Ig
KHNpemVfdCBpID0gYXJyYXlMZW5ndGgoKTsgaS0tOykgew0KICAgICAgICAgICAgaWYgKG1fd29y
ZHMud29yZChpKSAhPSBvdGhlci5tX3dvcmRzLndvcmQoaSkpDQogICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgICAN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4NCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
T3RoZXImIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOw0KICAgIH0NCiAgICANCiAgICBib29sIGF0KHNpemVfdCBpbmRleCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBhdEltcGwoaW5kZXgpOw0KICAgIH0NCiAgICANCiAgICBib29sIG9w
ZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGF0SW1w
bChpbmRleCk7DQogICAgfQ0KICAgIA0KICAgIHNpemVfdCBiaXRDb3VudCgpIGNvbnN0DQogICAg
ew0KICAgICAgICBzaXplX3QgcmVzdWx0ID0gMDsNCiAgICAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykNCiAgICAgICAgICAgIHJlc3VsdCArPSBXVEY6OmJp
dENvdW50KG1fd29yZHMud29yZChpbmRleCkpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAg
IH0NCiAgICANCiAgICBib29sIGlzRW1wdHkoKSBjb25zdA0KICAgIHsNCiAgICAgICAgZm9yIChz
aXplX3QgaW5kZXggPSBhcnJheUxlbmd0aCgpOyBpbmRleC0tOykgew0KICAgICAgICAgICAgaWYg
KG1fd29yZHMud29yZChpbmRleCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdGhlcldvcmRzPg0KICAgIEZhc3RCaXRWZWN0b3JJbXBsPEZhc3RCaXRWZWN0b3JB
bmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUsIHR5cGVuYW1lIE90aGVyV29yZHM6OlZp
ZXdUeXBlPj4gb3BlcmF0b3ImKGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBv
dGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBGYXN0Qml0VmVjdG9ySW1wbDxGYXN0
Qml0VmVjdG9yQW5kV29yZHM8dHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBPdGhl
cldvcmRzOjpWaWV3VHlwZT4+KEZhc3RCaXRWZWN0b3JBbmRXb3Jkczx0eXBlbmFtZSBXb3Jkczo6
Vmlld1R5cGUsIHR5cGVuYW1lIE90aGVyV29yZHM6OlZpZXdUeXBlPih3b3JkVmlldygpLCBvdGhl
ci53b3JkVmlldygpKSk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVy
V29yZHM+DQogICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rvck9yV29yZHM8dHlwZW5h
bWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBPdGhlcldvcmRzOjpWaWV3VHlwZT4+IG9wZXJh
dG9yfChjb25zdCBGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rvck9yV29y
ZHM8dHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlLCB0eXBlbmFtZSBPdGhlcldvcmRzOjpWaWV3VHlw
ZT4+KEZhc3RCaXRWZWN0b3JPcldvcmRzPHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSwgdHlwZW5h
bWUgT3RoZXJXb3Jkczo6Vmlld1R5cGU+KHdvcmRWaWV3KCksIG90aGVyLndvcmRWaWV3KCkpKTsN
CiAgICB9DQogICAgDQogICAgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rvck5vdFdvcmRz
PHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZT4+IG9wZXJhdG9yfigpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rvck5vdFdvcmRzPHR5cGVu
YW1lIFdvcmRzOjpWaWV3VHlwZT4+KEZhc3RCaXRWZWN0b3JOb3RXb3Jkczx0eXBlbmFtZSBXb3Jk
czo6Vmlld1R5cGU+KHdvcmRWaWV3KCkpKTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4NCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBG
dW5jJiBmdW5jKSBjb25zdA0KICAgIHsNCiAgICAgICAgc2l6ZV90IG4gPSBhcnJheUxlbmd0aCgp
Ow0KICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgew0KICAgICAgICAgICAg
dWludDMyX3Qgd29yZCA9IG1fd29yZHMud29yZChpKTsNCiAgICAgICAgICAgIHNpemVfdCBqID0g
aSAqIDMyOw0KICAgICAgICAgICAgd2hpbGUgKHdvcmQpIHsNCiAgICAgICAgICAgICAgICBpZiAo
d29yZCAmIDEpDQogICAgICAgICAgICAgICAgICAgIGZ1bmMoaik7DQogICAgICAgICAgICAgICAg
d29yZCA+Pj0gMTsNCiAgICAgICAgICAgICAgICBqKys7DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAgICBfX2ZvcmNl
aW5saW5lIHZvaWQgZm9yRWFjaENsZWFyQml0KGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0DQogICAg
ew0KICAgICAgICAofip0aGlzKS5mb3JFYWNoU2V0Qml0KGZ1bmMpOw0KICAgIH0NCiAgICANCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KICAgIHZvaWQgZm9yRWFjaEJpdChib29sIHZhbHVl
LCBjb25zdCBGdW5jJiBmdW5jKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKHZhbHVlKQ0KICAg
ICAgICAgICAgZm9yRWFjaFNldEJpdChmdW5jKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAg
Zm9yRWFjaENsZWFyQml0KGZ1bmMpOw0KICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICBfX2ZvcmNlaW5saW5lIHNpemVfdCBmaW5kQml0KHNpemVfdCBz
dGFydEluZGV4LCBib29sIHZhbHVlKSBjb25zdA0KICAgIHsNCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICB1aW50MzJfdCBza2lwVmFsdWUgPSAtKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1
ZSkgXiAxKTsNCiAgICAgICAgDQogICAgICAgIHNpemVfdCBudW1Xb3JkcyA9IGZhc3RCaXRWZWN0
b3JBcnJheUxlbmd0aChtX3dvcmRzLm51bUJpdHMoKSk7DQogICAgICAgIA0KICAgICAgICBzaXpl
X3Qgd29yZEluZGV4ID0gc3RhcnRJbmRleCAvIDMyOw0KICAgICAgICBzaXplX3Qgc3RhcnRJbmRl
eEluV29yZCA9IHN0YXJ0SW5kZXggLSB3b3JkSW5kZXggKiAzMjsNCiAgICAgICAgDQogICAgICAg
IHdoaWxlICh3b3JkSW5kZXggPCBudW1Xb3Jkcykgew0KICAgICAgICAgICAgdWludDMyX3Qgd29y
ZCA9IG1fd29yZHMud29yZCh3b3JkSW5kZXgpOw0KICAgICAgICAgICAgaWYgKHdvcmQgIT0gc2tp
cFZhbHVlKSB7DQogICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gc3RhcnRJbmRleEluV29y
ZDsNCiAgICAgICAgICAgICAgICBpZiAoZmluZEJpdEluV29yZCh3b3JkLCBpbmRleCwgMzIsIHZh
bHVlKSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmRJbmRleCAqIDMyICsgaW5kZXg7
DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHdvcmRJbmRleCsrOw0K
ICAgICAgICAgICAgc3RhcnRJbmRleEluV29yZCA9IDA7DQogICAgICAgIH0NCiAgICAgICAgDQog
ICAgICAgIHJldHVybiBudW1CaXRzKCk7DQogICAgfQ0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUg
c2l6ZV90IGZpbmRTZXRCaXQoc2l6ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIGZpbmRCaXQoaW5kZXgsIHRydWUpOw0KICAgIH0NCiAgICANCiAgICBfX2ZvcmNlaW5saW5l
IHNpemVfdCBmaW5kQ2xlYXJCaXQoc2l6ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGZpbmRCaXQoaW5kZXgsIGZhbHNlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0DQogICAgew0KICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUJpdHMoKTsgKytpKQ0KICAgICAgICAgICAgb3V0LnByaW50KCgqdGhpcylbaV0g
PyAiMSIgOiAiLSIpOw0KICAgIH0NCiAgICANCiAgICB0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUg
d29yZFZpZXcoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzLnZpZXcoKTsgfQ0KDQogICAgV29yZHMm
IHVuc2FmZVdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQ0KICAgIGNvbnN0IFdvcmRzJiB1bnNh
ZmVXb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHM7IH0NCiAgICANCnByaXZhdGU6DQogICAg
DQogICAgDQogICAgZnJpZW5kIGNsYXNzIEZhc3RCaXRWZWN0b3I7DQogICAgDQogICAgYm9vbCBh
dEltcGwoc2l6ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICByZXR1cm4gISEobV93b3Jkcy53b3JkKGluZGV4ID4+IDUpICYgKDEgPDwgKGluZGV4ICYg
MzEpKSk7DQogICAgfQ0KICAgIA0KICAgIFdvcmRzIG1fd29yZHM7DQp9Ow0KDQpjbGFzcyBGYXN0
Qml0UmVmZXJlbmNlIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9j
YXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGlj
Og0KICAgIEZhc3RCaXRSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7DQoNCiAgICBGYXN0Qml0UmVmZXJl
bmNlKHVpbnQzMl90KiB3b3JkLCB1aW50MzJfdCBtYXNrKQ0KICAgICAgICA6IG1fd29yZCh3b3Jk
KQ0KICAgICAgICAsIG1fbWFzayhtYXNrKQ0KICAgIHsNCiAgICB9DQoNCiAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAhISgqbV93b3JkICYgbV9tYXNrKTsN
CiAgICB9DQoNCiAgICBGYXN0Qml0UmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2YWx1ZSkNCiAg
ICB7DQogICAgICAgIGlmICh2YWx1ZSkNCiAgICAgICAgICAgICptX3dvcmQgfD0gbV9tYXNrOw0K
ICAgICAgICBlbHNlDQogICAgICAgICAgICAqbV93b3JkICY9IH5tX21hc2s7DQogICAgICAgIHJl
dHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBGYXN0Qml0UmVmZXJlbmNlJiBvcGVyYXRvcnw9KGJv
b2wgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID8gKnRoaXMgPSB2YWx1ZSA6ICp0aGlzOyB9DQogICAg
RmFzdEJpdFJlZmVyZW5jZSYgb3BlcmF0b3ImPShib29sIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA/
ICp0aGlzIDogKnRoaXMgPSB2YWx1ZTsgfQ0KDQpwcml2YXRlOg0KICAgIHVpbnQzMl90KiBtX3dv
cmQgeyBudWxscHRyIH07DQogICAgdWludDMyX3QgbV9tYXNrIHsgMCB9Ow0KfTsNCg0KDQoNCmNs
YXNzIEZhc3RCaXRWZWN0b3IgOiBwdWJsaWMgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3Rv
cldvcmRPd25lcj4gew0KcHVibGljOg0KICAgIEZhc3RCaXRWZWN0b3IoKSB7IH0NCiAgICANCiAg
ICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3ImKSA9IGRlZmF1bHQ7DQogICAgRmFz
dEJpdFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0b3ImKSA9IGRlZmF1bHQ7DQog
ICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4NCiAgICBGYXN0Qml0VmVjdG9y
KGNvbnN0IEZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikNCiAgICB7DQogICAg
ICAgICp0aGlzID0gb3RoZXI7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyV29yZHM+DQogICAgRmFzdEJpdFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IEZhc3RCaXRWZWN0
b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikNCiAgICB7DQogICAgICAgIGlmICgobnVtQml0cygp
ICE9IG90aGVyLm51bUJpdHMoKSkpDQogICAgICAgICAgICByZXNpemUob3RoZXIubnVtQml0cygp
KTsNCiAgICAgICAgDQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFycmF5TGVuZ3RoKCk7IGkt
LTspDQogICAgICAgICAgICBtX3dvcmRzLndvcmQoaSkgPSBvdGhlci5tX3dvcmRzLndvcmQoaSk7
DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQogICAgDQogICAgdm9pZCByZXNpemUoc2l6
ZV90IG51bUJpdHMpDQogICAgew0KICAgICAgICBtX3dvcmRzLnJlc2l6ZShudW1CaXRzKTsNCiAg
ICB9DQogICAgDQogICAgdm9pZCBzZXRBbGwoKQ0KICAgIHsNCiAgICAgICAgbV93b3Jkcy5zZXRB
bGwoKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBjbGVhckFsbCgpDQogICAgew0KICAgICAgICBt
X3dvcmRzLmNsZWFyQWxsKCk7DQogICAgfQ0KDQogICAgDQogICAgdm9pZCBmaWxsKGJvb2wgdmFs
dWUpIHsgdmFsdWUgPyBzZXRBbGwoKSA6IGNsZWFyQWxsKCk7IH0NCiAgICB2b2lkIGdyb3coc2l6
ZV90IG5ld1NpemUpIHsgcmVzaXplKG5ld1NpemUpOyB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdm9pZCBjbGVhclJhbmdlKHNpemVfdCBiZWdpbiwgc2l6ZV90IGVuZCk7DQoNCiAgICAN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPg0KICAgIGJvb2wgc2V0QW5kQ2hlY2so
Y29uc3QgRmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQ0KICAgIHsNCiAgICAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gYXJyYXlMZW5ndGgoKTsgaS0tOykgew0KICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtX3dvcmRzLndvcmQoaSkgIT0gb3RoZXIubV93b3Jkcy53b3JkKGkpOw0KICAgICAgICAg
ICAgbV93b3Jkcy53b3JkKGkpID0gb3RoZXIubV93b3Jkcy53b3JkKGkpOw0KICAgICAgICB9DQog
ICAgICAgIHJldHVybiBjaGFuZ2VkOw0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlcldvcmRzPg0KICAgIEZhc3RCaXRWZWN0b3ImIG9wZXJhdG9yfD0oY29uc3QgRmFzdEJp
dFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheUxlbmd0aCgpOyBpLS07KQ0KICAgICAg
ICAgICAgbV93b3Jkcy53b3JkKGkpIHw9IG90aGVyLm1fd29yZHMud29yZChpKTsNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldv
cmRzPg0KICAgIEZhc3RCaXRWZWN0b3ImIG9wZXJhdG9yJj0oY29uc3QgRmFzdEJpdFZlY3Rvcklt
cGw8T3RoZXJXb3Jkcz4mIG90aGVyKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJheUxlbmd0aCgpOyBpLS07KQ0KICAgICAgICAgICAgbV93
b3Jkcy53b3JkKGkpICY9IG90aGVyLm1fd29yZHMud29yZChpKTsNCiAgICAgICAgcmV0dXJuICp0
aGlzOw0KICAgIH0NCiAgICANCiAgICBib29sIGF0KHNpemVfdCBpbmRleCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBhdEltcGwoaW5kZXgpOw0KICAgIH0NCiAgICANCiAgICBib29sIG9w
ZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGF0SW1w
bChpbmRleCk7DQogICAgfQ0KICAgIA0KICAgIEZhc3RCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGlu
ZGV4KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gRmFzdEJpdFJl
ZmVyZW5jZSgmbV93b3Jkcy53b3JkKGluZGV4ID4+IDUpLCAxIDw8IChpbmRleCAmIDMxKSk7DQog
ICAgfQ0KICAgIA0KICAgIEZhc3RCaXRSZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
DQogICAgew0KICAgICAgICByZXR1cm4gYXQoaW5kZXgpOw0KICAgIH0NCiAgICANCiAgICANCiAg
ICBfX2ZvcmNlaW5saW5lIGJvb2wgYXRvbWljU2V0QW5kQ2hlY2soc2l6ZV90IGluZGV4LCBib29s
IHZhbHVlKQ0KICAgIHsNCiAgICAgICAgdWludDMyX3QqIHBvaW50ZXIgPSAmbV93b3Jkcy53b3Jk
KGluZGV4ID4+IDUpOw0KICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAoaW5kZXggJiAzMSk7
DQogICAgICAgIGZvciAoOzspIHsNCiAgICAgICAgICAgIHVpbnQzMl90IG9sZFZhbHVlID0gKnBv
aW50ZXI7DQogICAgICAgICAgICB1aW50MzJfdCBuZXdWYWx1ZTsNCiAgICAgICAgICAgIGlmICh2
YWx1ZSkgew0KICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZSAmIG1hc2spDQogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZFZh
bHVlIHwgbWFzazsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKCEo
b2xkVmFsdWUgJiBtYXNrKSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgJiB+bWFzazsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIGlmIChhdG9taWNDb21wYXJlRXhjaGFuZ2VXZWFrUmVsYXhlZChwb2ludGVy
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAg
ICAgICB9DQogICAgfQ0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpGYXN0Qml0UmVmZXJlbmNlOw0K
dXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOw0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcQmxvY2tEaXJlY3RvcnlCaXRzLmgi
DQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7DQogICAgcHVi
bGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQq
IGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZh
c3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1p
Y29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIGJpdHNQZXJTZWdtZW50ID0gMzI7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBzZWdtZW50U2hpZnQgPSA1Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW5k
ZXhNYXNrID0gKDFVIDw8IHNlZ21lbnRTaGlmdCkgLSAxOw0KICAgIHN0YXRpY19hc3NlcnQoKDEg
PDwgc2VnbWVudFNoaWZ0KSA9PSBiaXRzUGVyU2VnbWVudCk7DQoNCg0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRzID0gMCArIDEgKyAx
ICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMTsNCg0KDQogICAgZW51bSBjbGFzcyBLaW5kIHsN
Cg0KDQogICAgICAgIExpdmUsIEVtcHR5LCBBbGxvY2F0ZWQsIENhbkFsbG9jYXRlQnV0Tm90RW1w
dHksIERlc3RydWN0aWJsZSwgRWRlbiwgVW5zd2VwdCwgTWFya2luZ05vdEVtcHR5LCBNYXJraW5n
UmV0aXJlZCwNCg0KICAgIH07DQoNCiAgICBjbGFzcyBTZWdtZW50IHsNCiAgICBwdWJsaWM6DQog
ICAgICAgIFNlZ21lbnQoKSA9IGRlZmF1bHQ7DQogICAgICAgIHN0ZDo6YXJyYXk8dWludDMyX3Qs
IG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsNCiAgICB9Ow0KDQog
ICAgdGVtcGxhdGU8S2luZCBraW5kPg0KICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
V29yZFZpZXcgew0KICAgICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9j
YXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHB1
YmxpYzoNCiAgICAgICAgdXNpbmcgVmlld1R5cGUgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3Rvcldv
cmRWaWV3Ow0KDQogICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoKSA9IGRl
ZmF1bHQ7DQoNCiAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldyhjb25zdCBT
ZWdtZW50KiBzZWdtZW50cywgc2l6ZV90IG51bUJpdHMpDQogICAgICAgICAgICA6IG1fc2VnbWVu
dHMoc2VnbWVudHMpDQogICAgICAgICAgICAsIG1fbnVtQml0cyhudW1CaXRzKQ0KICAgICAgICB7
DQogICAgICAgIH0NCg0KICAgICAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0DQogICAgICAgIHsN
CiAgICAgICAgICAgIHJldHVybiBtX251bUJpdHM7DQogICAgICAgIH0NCg0KICAgICAgICB1aW50
MzJfdCB3b3JkKHNpemVfdCBpbmRleCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHNbaW5kZXhdLm1fZGF0YVtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOw0KICAgICAgICB9DQoNCiAgICAgICAgdWludDMyX3Qm
IHdvcmQoc2l6ZV90IGluZGV4KQ0KICAgICAgICB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQog
ICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhd
Lm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOw0KICAgICAgICB9DQoNCiAgICAg
ICAgdm9pZCBjbGVhckFsbCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkp
OyArK2luZGV4KQ0KICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8U2VnbWVudCo+KG1fc2VnbWVu
dHMpW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpXSA9IDA7DQogICAg
ICAgIH0NCg0KICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3IHZpZXcoKSBj
b25zdCB7IHJldHVybiAqdGhpczsgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAgY29uc3QgU2Vn
bWVudCogbV9zZWdtZW50cyB7IG51bGxwdHIgfTsNCiAgICAgICAgc2l6ZV90IG1fbnVtQml0cyB7
IDAgfTsNCiAgICB9Ow0KDQogICAgdGVtcGxhdGU8S2luZCBraW5kPg0KICAgIHVzaW5nIEJsb2Nr
RGlyZWN0b3J5Qml0VmVjdG9yVmlldyA9IFdURjo6RmFzdEJpdFZlY3RvckltcGw8QmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPj47DQoNCiAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+
DQogICAgY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYgZmluYWwgOiBwdWJsaWMgQmxv
Y2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+IHsNCiAgICBwdWJsaWM6DQogICAgICAgIHVz
aW5nIEJhc2UgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD47DQoNCiAgICAgICAg
ZXhwbGljaXQgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYoQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JXb3JkVmlldzxraW5kPiB2aWV3KQ0KICAgICAgICAgICAgOiBCYXNlKHZpZXcpDQogICAgICAg
IHsNCiAgICAgICAgfQ0KDQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+DQog
ICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpG
YXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEJhc2U6OmFycmF5
TGVuZ3RoKCk7IGktLTspDQogICAgICAgICAgICAgICAgQmFzZTo6dW5zYWZlV29yZHMoKS53b3Jk
KGkpID0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOw0KICAgICAgICAgICAgcmV0dXJuICp0
aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4N
CiAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yfD0oY29uc3QgV1RG
OjpGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpDQogICAgICAgIHsNCiAgICAg
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEJhc2U6OmFy
cmF5TGVuZ3RoKCk7IGktLTspDQogICAgICAgICAgICAgICAgQmFzZTo6dW5zYWZlV29yZHMoKS53
b3JkKGkpIHw9IG90aGVyLnVuc2FmZVdvcmRzKCkud29yZChpKTsNCiAgICAgICAgICAgIHJldHVy
biAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgY2xlYXJBbGwoKQ0KICAgICAgICB7
DQogICAgICAgICAgICBCYXNlOjp1bnNhZmVXb3JkcygpLmNsZWFyQWxsKCk7DQogICAgICAgIH0N
Cg0KICAgICAgICBXVEY6OkZhc3RCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4KQ0KICAgICAg
ICB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICByZXR1cm4gV1RGOjpGYXN0
Qml0UmVmZXJlbmNlKCZCYXNlOjp1bnNhZmVXb3JkcygpLndvcmQoaW5kZXggPj4gNSksIDEgPDwg
KGluZGV4ICYgMzEpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFdURjo6RmFzdEJpdFJlZmVyZW5j
ZSBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJu
IGF0KGluZGV4KTsNCiAgICAgICAgfQ0KICAgIH07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQogICAgYm9vbCBpc0xpdmUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBs
aXZlKClbaW5kZXhdOyB9IHZvaWQgc2V0SXNMaXZlKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkg
eyBsaXZlKClbaW5kZXhdID0gdmFsdWU7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtp
bmQ6OkxpdmU+IGxpdmUoKSBjb25zdCB7IHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZp
ZXc8S2luZDo6TGl2ZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5kOjpMaXZl
PihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JSZWY8S2luZDo6TGl2ZT4gbGl2ZSgpIHsgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
UmVmPEtpbmQ6OkxpdmU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6TGl2
ZT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyB9IGJvb2wgaXNFbXB0eShzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5KClbaW5kZXhdOyB9IHZvaWQgc2V0SXNFbXB0eShz
aXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgZW1wdHkoKVtpbmRleF0gPSB2YWx1ZTsgfSBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6RW1wdHk+IGVtcHR5KCkgY29uc3QgeyByZXR1
cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OkVtcHR5PihCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OkVtcHR5PihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1C
aXRzKSk7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6RW1wdHk+IGVtcHR5KCkg
eyByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6RW1wdHk+KEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6RW1wdHk+KG1fc2VnbWVudHMuZGF0YSgpLCBt
X251bUJpdHMpKTsgfSBib29sIGlzQWxsb2NhdGVkKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gYWxsb2NhdGVkKClbaW5kZXhdOyB9IHZvaWQgc2V0SXNBbGxvY2F0ZWQoc2l6ZV90IGluZGV4
LCBib29sIHZhbHVlKSB7IGFsbG9jYXRlZCgpW2luZGV4XSA9IHZhbHVlOyB9IEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpBbGxvY2F0ZWQ+IGFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpBbGxvY2F0ZWQ+KEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6QWxsb2NhdGVkPihtX3NlZ21lbnRzLmRhdGEo
KSwgbV9udW1CaXRzKSk7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6QWxsb2Nh
dGVkPiBhbGxvY2F0ZWQoKSB7IHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5k
OjpBbGxvY2F0ZWQ+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6QWxsb2Nh
dGVkPihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IH0gYm9vbCBpc0NhbkFsbG9jYXRl
QnV0Tm90RW1wdHkoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBjYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5KClbaW5kZXhdOyB9IHZvaWQgc2V0SXNDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KHNpemVf
dCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KClbaW5kZXhdID0g
dmFsdWU7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OkNhbkFsbG9jYXRlQnV0
Tm90RW1wdHk+IGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSBjb25zdCB7IHJldHVybiBCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6Q2FuQWxsb2NhdGVCdXROb3RFbXB0eT4oQmxvY2tE
aXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5kOjpDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5Piht
X3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JS
ZWY8S2luZDo6Q2FuQWxsb2NhdGVCdXROb3RFbXB0eT4gY2FuQWxsb2NhdGVCdXROb3RFbXB0eSgp
IHsgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OkNhbkFsbG9jYXRlQnV0
Tm90RW1wdHk+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Q2FuQWxsb2Nh
dGVCdXROb3RFbXB0eT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyB9IGJvb2wgaXNE
ZXN0cnVjdGlibGUoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBkZXN0cnVjdGlibGUoKVtp
bmRleF07IH0gdm9pZCBzZXRJc0Rlc3RydWN0aWJsZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUp
IHsgZGVzdHJ1Y3RpYmxlKClbaW5kZXhdID0gdmFsdWU7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JWaWV3PEtpbmQ6OkRlc3RydWN0aWJsZT4gZGVzdHJ1Y3RpYmxlKCkgY29uc3QgeyByZXR1cm4g
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OkRlc3RydWN0aWJsZT4oQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5kOjpEZXN0cnVjdGlibGU+KG1fc2VnbWVudHMuZGF0
YSgpLCBtX251bUJpdHMpKTsgfSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5kOjpEZXN0
cnVjdGlibGU+IGRlc3RydWN0aWJsZSgpIHsgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
UmVmPEtpbmQ6OkRlc3RydWN0aWJsZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxL
aW5kOjpEZXN0cnVjdGlibGU+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgfSBib29s
IGlzRWRlbihzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGVkZW4oKVtpbmRleF07IH0gdm9p
ZCBzZXRJc0VkZW4oc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IGVkZW4oKVtpbmRleF0gPSB2
YWx1ZTsgfSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6RWRlbj4gZWRlbigpIGNv
bnN0IHsgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpFZGVuPihCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OkVkZW4+KG1fc2VnbWVudHMuZGF0YSgp
LCBtX251bUJpdHMpKTsgfSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5kOjpFZGVuPiBl
ZGVuKCkgeyByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6RWRlbj4oQmxv
Y2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5kOjpFZGVuPihtX3NlZ21lbnRzLmRhdGEo
KSwgbV9udW1CaXRzKSk7IH0gYm9vbCBpc1Vuc3dlcHQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJl
dHVybiB1bnN3ZXB0KClbaW5kZXhdOyB9IHZvaWQgc2V0SXNVbnN3ZXB0KHNpemVfdCBpbmRleCwg
Ym9vbCB2YWx1ZSkgeyB1bnN3ZXB0KClbaW5kZXhdID0gdmFsdWU7IH0gQmxvY2tEaXJlY3RvcnlC
aXRWZWN0b3JWaWV3PEtpbmQ6OlVuc3dlcHQ+IHVuc3dlcHQoKSBjb25zdCB7IHJldHVybiBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6VW5zd2VwdD4oQmxvY2tEaXJlY3RvcnlCaXRW
ZWN0b3JXb3JkVmlldzxLaW5kOjpVbnN3ZXB0PihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRz
KSk7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6VW5zd2VwdD4gdW5zd2VwdCgp
IHsgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OlVuc3dlcHQ+KEJsb2Nr
RGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6VW5zd2VwdD4obV9zZWdtZW50cy5kYXRh
KCksIG1fbnVtQml0cykpOyB9IGJvb2wgaXNNYXJraW5nTm90RW1wdHkoc2l6ZV90IGluZGV4KSBj
b25zdCB7IHJldHVybiBtYXJraW5nTm90RW1wdHkoKVtpbmRleF07IH0gdm9pZCBzZXRJc01hcmtp
bmdOb3RFbXB0eShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbWFya2luZ05vdEVtcHR5KClb
aW5kZXhdID0gdmFsdWU7IH0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6Ok1hcmtp
bmdOb3RFbXB0eT4gbWFya2luZ05vdEVtcHR5KCkgY29uc3QgeyByZXR1cm4gQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JWaWV3PEtpbmQ6Ok1hcmtpbmdOb3RFbXB0eT4oQmxvY2tEaXJlY3RvcnlCaXRW
ZWN0b3JXb3JkVmlldzxLaW5kOjpNYXJraW5nTm90RW1wdHk+KG1fc2VnbWVudHMuZGF0YSgpLCBt
X251bUJpdHMpKTsgfSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5kOjpNYXJraW5nTm90
RW1wdHk+IG1hcmtpbmdOb3RFbXB0eSgpIHsgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
UmVmPEtpbmQ6Ok1hcmtpbmdOb3RFbXB0eT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmll
dzxLaW5kOjpNYXJraW5nTm90RW1wdHk+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsg
fSBib29sIGlzTWFya2luZ1JldGlyZWQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtYXJr
aW5nUmV0aXJlZCgpW2luZGV4XTsgfSB2b2lkIHNldElzTWFya2luZ1JldGlyZWQoc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKSB7IG1hcmtpbmdSZXRpcmVkKClbaW5kZXhdID0gdmFsdWU7IH0gQmxv
Y2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6Ok1hcmtpbmdSZXRpcmVkPiBtYXJraW5nUmV0
aXJlZCgpIGNvbnN0IHsgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpN
YXJraW5nUmV0aXJlZD4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5kOjpNYXJr
aW5nUmV0aXJlZD4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyB9IEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yUmVmPEtpbmQ6Ok1hcmtpbmdSZXRpcmVkPiBtYXJraW5nUmV0aXJlZCgpIHsg
cmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6Ok1hcmtpbmdSZXRpcmVkPihC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6Ok1hcmtpbmdSZXRpcmVkPihtX3Nl
Z21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IH0NCg0KDQogICAgdW5zaWduZWQgbnVtQml0cygp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtQml0czsgfQ0KDQogICAgdm9pZCByZXNpemUodW5zaWduZWQg
bnVtQml0cykNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIG9sZE51bUJpdHMgPSBtX251bUJpdHM7
DQogICAgICAgIG1fbnVtQml0cyA9IG51bUJpdHM7DQogICAgICAgIG1fc2VnbWVudHMucmVzaXpl
KFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpKTsNCiAgICAgICAgdW5zaWdu
ZWQgdXNlZEJpdHNJbkxhc3RTZWdtZW50ID0gbnVtQml0cyAmIGluZGV4TWFzazsgDQogICAgICAg
IGlmIChudW1CaXRzIDwgb2xkTnVtQml0cyAmJiB1c2VkQml0c0luTGFzdFNlZ21lbnQpIHsNCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgYXV0byYgc2Vn
bWVudCA9IG1fc2VnbWVudHMubGFzdCgpOw0KICAgICAgICAgICAgdWludDMyX3QgbWFzayA9ICgx
VSA8PCB1c2VkQml0c0luTGFzdFNlZ21lbnQpIC0gMTsNCiAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kczsgKytp
bmRleCkNCiAgICAgICAgICAgICAgICBzZWdtZW50Lm1fZGF0YVtpbmRleF0gJj0gbWFzazsNCiAg
ICAgICAgfQ0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQogICAgdm9pZCBm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jJiBmdW5jKQ0KICAgIHsNCiAgICAgICAgdW5zaWduZWQg
aW5kZXggPSAwOw0KICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQ0KICAg
ICAgICAgICAgZnVuYyhpbmRleCsrLCBzZWdtZW50KTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAg
VmVjdG9yPFNlZ21lbnQ+IG1fc2VnbWVudHM7DQogICAgdW5zaWduZWQgbV9udW1CaXRzIHsgMCB9
Ow0KfTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGhlYXBcXEJsb2NrRGlyZWN0b3J5LmgiDQoNCiNsaW5lIDEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcRnJlZUxp
c3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSGVhcENl
bGw7DQoNCg0KDQoNCg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcRnJlZUxpc3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcRnJlZUxpc3QuaCIN
Cg0KY2xhc3MgRnJlZUxpc3Qgew0KcHVibGljOg0KICAgIEZyZWVMaXN0KHVuc2lnbmVkIGNlbGxT
aXplKTsNCiAgICB+RnJlZUxpc3QoKTsNCiAgICANCiAgICB2b2lkIGNsZWFyKCk7DQogICAgDQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgaW5pdGlhbGl6ZUJ1bXAoY2hhciogcGF5bG9h
ZEVuZCwgdW5zaWduZWQgcmVtYWluaW5nKTsNCiAgICANCiAgICBib29sIGFsbG9jYXRpb25XaWxs
U3VjY2VlZCgpIGNvbnN0IHsgcmV0dXJuICFhbGxvY2F0aW9uV2lsbEZhaWwoKTsgfQ0KICAgIA0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQogICAgSGVhcENlbGwqIGFsbG9jYXRlKGNvbnN0
IEZ1bmMmIHNsb3dQYXRoKTsNCiAgICANCiAgICBib29sIGNvbnRhaW5zKEhlYXBDZWxsKiwgTWFy
a2VkQmxvY2s6OkhhbmRsZSogY3VycmVudEJsb2NrKSBjb25zdDsNCiAgICANCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPg0KICAgIHZvaWQgZm9yRWFjaChjb25zdCBGdW5jJikgY29uc3Q7DQog
ICAgDQogICAgdW5zaWduZWQgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5h
bFNpemU7IH0NCg0KDQogICAgdXNpbmcgQXRvbSA9IE1hcmtlZEJsb2NrOjpBdG9tOw0KICAgIHVz
aW5nIEF0b21zQml0bWFwID0gTWFya2VkQmxvY2s6OkF0b21zQml0bWFwOw0KDQogICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgYXRvbXNQZXJSb3cgPSBBdG9tc0JpdG1hcDo6Yml0c0luV29yZDsN
CiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBhdG9tc1Jvd0J5dGVzID0gYXRvbXNQZXJSb3cg
KiBzaXplb2YoQXRvbSk7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhdG9tU2l6ZVNo
aWZ0ID0gV1RGOjpsb2cyQ29uc3RleHByKHNpemVvZihBdG9tKSk7DQogICAgc3RhdGljX2Fzc2Vy
dCgoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBhdG9tU2l6ZVNoaWZ0KSA9PSBzaXplb2YoQXRv
bSkpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgaW5pdGlhbGl6ZUF0b21zQml0
bWFwKE1hcmtlZEJsb2NrOjpIYW5kbGUqLCBBdG9tc0JpdG1hcCYgZnJlZUF0b21zLCB1bnNpZ25l
ZCBieXRlcyk7DQoNCiAgICBib29sIGJpdG1hcElzRW1wdHkoKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHJldHVybiAhbV9jdXJy
ZW50Um93Qml0bWFwICYmICFtX2N1cnJlbnRSb3dJbmRleDsNCiAgICB9DQogICAgYm9vbCBhbGxv
Y2F0aW9uV2lsbEZhaWwoKSBjb25zdCB7IHJldHVybiBiaXRtYXBJc0VtcHR5KCkgJiYgIW1fcmVt
YWluaW5nOyB9DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ3VycmVudFJvd0JpdG1h
cCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9j
YXN0PEZyZWVMaXN0Kj4oMHg0MDAwKS0+bV9jdXJyZW50Um93Qml0bWFwKSkgLSAweDQwMDApOyB9
DQoNCiAgICANCiAgICANCiAgICANCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQml0bWFw
Um93c01pbnVzT25lKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJl
aW50ZXJwcmV0X2Nhc3Q8RnJlZUxpc3QqPigweDQwMDApLT5tX2JpdG1hcCkpIC0gMHg0MDAwKSAt
IHNpemVvZihBdG9tc0JpdG1hcDo6V29yZCk7IH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZDdXJyZW50Um93SW5kZXgoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KCYocmVpbnRlcnByZXRfY2FzdDxGcmVlTGlzdCo+KDB4NDAwMCktPm1fY3VycmVudFJvd0lu
ZGV4KSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkN1cnJlbnRN
YXJrZWRCbG9ja1Jvd0FkZHJlc3MoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KCYocmVpbnRlcnByZXRfY2FzdDxGcmVlTGlzdCo+KDB4NDAwMCktPm1fY3VycmVudE1hcmtl
ZEJsb2NrUm93QWRkcmVzcykpIC0gMHg0MDAwKTsgfQ0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxc
RnJlZUxpc3QuaCINCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkRW5kKCkg
eyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8
RnJlZUxpc3QqPigweDQwMDApLT5tX3BheWxvYWRFbmQpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mUmVtYWluaW5nKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nh
c3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RnJlZUxpc3QqPigweDQwMDApLT5tX3Jl
bWFpbmluZykpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDZWxs
U2l6ZSgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJl
dF9jYXN0PEZyZWVMaXN0Kj4oMHg0MDAwKS0+bV9jZWxsU2l6ZSkpIC0gMHg0MDAwKTsgfQ0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsNCg0KICAgIHVuc2lnbmVkIGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsU2l6ZTsg
fQ0KICAgIA0KcHJpdmF0ZToNCg0KDQogICAgQXRvbXNCaXRtYXAmIGF0b21zQml0bWFwKCkgeyBy
ZXR1cm4gbV9iaXRtYXA7IH0NCiAgICBBdG9tc0JpdG1hcDo6V29yZCogYml0bWFwUm93c01pbnVz
T25lKCkgY29uc3QNCiAgICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PEF0b21zQml0bWFwOjpXb3JkKj4oJm1fYml0bWFwKSAtIDE7DQogICAgfQ0KDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICBBdG9tc0JpdG1hcDo6
V29yZCBtX2N1cnJlbnRSb3dCaXRtYXAgeyAwIH07DQogICAgdW5zaWduZWQgbV9jdXJyZW50Um93
SW5kZXggeyAwIH07DQogICAgdW5zaWduZWQgbV9vcmlnaW5hbFNpemUgeyAwIH07DQoNCg0KDQoN
Cg0KDQojbGluZSAxODggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaGVhcFxcRnJlZUxpc3QuaCINCg0KICAgIHVuaW9uIHsNCiAgICAgICAgY2hhciog
bV9wYXlsb2FkRW5kIHsgbnVsbHB0ciB9Ow0KDQogICAgICAgIEF0b20qIG1fY3VycmVudE1hcmtl
ZEJsb2NrUm93QWRkcmVzczsNCiNsaW5lIDE5NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxGcmVlTGlzdC5oIg0KICAgIH07DQogICAgdW5z
aWduZWQgbV9yZW1haW5pbmcgeyAwIH07DQogICAgdW5zaWduZWQgbV9jZWxsU2l6ZSB7IDAgfTsN
Cg0KDQogICAgQXRvbXNCaXRtYXAgbV9iaXRtYXA7DQoNCg0KI2xpbmUgMjAzICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEZyZWVMaXN0Lmgi
DQoNCg0KDQojbGluZSAyMDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcRnJlZUxpc3QuaCINCg0KICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRC
bG9jazsNCn07DQoNCn0gDQoNCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEJsb2NrRGlyZWN0b3J5LmgiDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXExv
Y2FsQWxsb2NhdG9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNs
YXNzIEJsb2NrRGlyZWN0b3J5Ow0KY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7DQpjbGFzcyBIZWFw
Ow0KDQpjbGFzcyBMb2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxM
b2NhbEFsbG9jYXRvcj4gew0KICAgIExvY2FsQWxsb2NhdG9yKGNvbnN0IExvY2FsQWxsb2NhdG9y
JikgPSBkZWxldGU7IExvY2FsQWxsb2NhdG9yJiBvcGVyYXRvcj0oY29uc3QgTG9jYWxBbGxvY2F0
b3ImKSA9IGRlbGV0ZTs7DQogICAgDQpwdWJsaWM6DQogICAgTG9jYWxBbGxvY2F0b3IoQmxvY2tE
aXJlY3RvcnkqKTsNCiAgICB+TG9jYWxBbGxvY2F0b3IoKTsNCiAgICANCiAgICB2b2lkKiBhbGxv
Y2F0ZShIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOw0K
ICAgIA0KICAgIHVuc2lnbmVkIGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9mcmVlTGlzdC5j
ZWxsU2l6ZSgpOyB9DQoNCiAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKCk7DQogICAgdm9pZCBwcmVw
YXJlRm9yQWxsb2NhdGlvbigpOw0KICAgIHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOw0KICAgIHZv
aWQgc3RvcEFsbG9jYXRpbmdGb3JHb29kKCk7DQogICAgDQogICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkZyZWVMaXN0KCk7DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNlbGxTaXpl
KCk7DQogICAgDQogICAgYm9vbCBpc0ZyZWVMaXN0ZWRDZWxsKGNvbnN0IHZvaWQqKSBjb25zdDsN
CiAgICANCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0b3J5Ow0KICAgIA0K
ICAgIHZvaWQgcmVzZXQoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCogYWxsb2Nh
dGVTbG93Q2FzZShIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGUpOw0KICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KCk7DQogICAgdm9pZCogdHJ5QWxsb2Nh
dGVXaXRob3V0Q29sbGVjdGluZygpOw0KICAgIHZvaWQqIHRyeUFsbG9jYXRlSW4oTWFya2VkQmxv
Y2s6OkhhbmRsZSopOw0KICAgIHZvaWQqIGFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSop
Ow0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKEhlYXAm
LCBHQ0RlZmVycmFsQ29udGV4dCopOw0KDQogICAgQmxvY2tEaXJlY3RvcnkqIG1fZGlyZWN0b3J5
Ow0KICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7DQoNCiAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBt
X2N1cnJlbnRCbG9jayB7IG51bGxwdHIgfTsNCiAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBtX2xh
c3RBY3RpdmVCbG9jayB7IG51bGxwdHIgfTsNCiAgICANCiAgICANCiAgICANCiAgICB1bnNpZ25l
ZCBtX2FsbG9jYXRpb25DdXJzb3IgeyAwIH07IA0KfTsNCg0KaW5saW5lIHB0cmRpZmZfdCBMb2Nh
bEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdCgpDQp7DQogICAgcmV0dXJuIChyZWludGVycHJl
dF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PExvY2FsQWxsb2NhdG9yKj4oMHg0
MDAwKS0+bV9mcmVlTGlzdCkpIC0gMHg0MDAwKTsNCn0NCg0KaW5saW5lIHB0cmRpZmZfdCBMb2Nh
bEFsbG9jYXRvcjo6b2Zmc2V0T2ZDZWxsU2l6ZSgpDQp7DQogICAgcmV0dXJuIChyZWludGVycHJl
dF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PExvY2FsQWxsb2NhdG9yKj4oMHg0
MDAwKS0+bV9mcmVlTGlzdCkpIC0gMHg0MDAwKSArIEZyZWVMaXN0OjpvZmZzZXRPZkNlbGxTaXpl
KCk7DQp9DQoNCn0gDQoNCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEJsb2NrRGlyZWN0b3J5LmgiDQoNCg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9Nb25vdG9uaWNUaW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xh
c3MgV2FsbFRpbWU7DQpjbGFzcyBQcmludFN0cmVhbTsNCg0KDQoNCg0KDQpjbGFzcyBNb25vdG9u
aWNUaW1lIGZpbmFsIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9j
YXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGlj
Og0KICAgIHN0YXRpYyBjb25zdGV4cHIgQ2xvY2tUeXBlIGNsb2NrVHlwZSA9IENsb2NrVHlwZTo6
TW9ub3RvbmljOw0KICAgIA0KICAgIA0KICAgIGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lKCkgeyB9
DQogICAgDQogICAgDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lIGZy
b21SYXdTZWNvbmRzKGRvdWJsZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBNb25vdG9u
aWNUaW1lKHZhbHVlKTsNCiAgICB9DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0
YXRpYyBNb25vdG9uaWNUaW1lIG5vdygpOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgTW9u
b3RvbmljVGltZSBpbmZpbml0eSgpIHsgcmV0dXJuIGZyb21SYXdTZWNvbmRzKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7IH0NCiAgICBzdGF0aWMgY29uc3RleHByIE1v
bm90b25pY1RpbWUgbmFuKCkgeyByZXR1cm4gZnJvbVJhd1NlY29uZHMoc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7IH0NCg0KICAgIGNvbnN0ZXhwciBTZWNvbmRzIHNl
Y29uZHNTaW5jZUVwb2NoKCkgY29uc3QgeyByZXR1cm4gU2Vjb25kcyhtX3ZhbHVlKTsgfQ0KICAg
IA0KICAgIE1vbm90b25pY1RpbWUgYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCkgY29uc3QgeyBy
ZXR1cm4gKnRoaXM7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgV2FsbFRpbWUgYXBwcm94
aW1hdGVXYWxsVGltZSgpIGNvbnN0Ow0KICAgIA0KICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3ZhbHVlOyB9DQogICAgDQogICAgY29uc3Rl
eHByIE1vbm90b25pY1RpbWUgb3BlcmF0b3IrKFNlY29uZHMgb3RoZXIpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gZnJvbVJhd1NlY29uZHMobV92YWx1ZSArIG90aGVyLnZhbHVlKCkpOw0K
ICAgIH0NCiAgICANCiAgICBjb25zdGV4cHIgTW9ub3RvbmljVGltZSBvcGVyYXRvci0oU2Vjb25k
cyBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBmcm9tUmF3U2Vjb25kcyhtX3Zh
bHVlIC0gb3RoZXIudmFsdWUoKSk7DQogICAgfQ0KDQogICAgU2Vjb25kcyBvcGVyYXRvciUoU2Vj
b25kcyBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBTZWNvbmRzIHsgZm1vZCht
X3ZhbHVlLCBvdGhlci52YWx1ZSgpKSB9Ow0KICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICBj
b25zdGV4cHIgTW9ub3RvbmljVGltZSBvcGVyYXRvci0oKSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGZyb21SYXdTZWNvbmRzKC1tX3ZhbHVlKTsNCiAgICB9DQogICAgDQogICAgTW9ub3Rv
bmljVGltZSBvcGVyYXRvcis9KFNlY29uZHMgb3RoZXIpDQogICAgew0KICAgICAgICByZXR1cm4g
KnRoaXMgPSAqdGhpcyArIG90aGVyOw0KICAgIH0NCiAgICANCiAgICBNb25vdG9uaWNUaW1lIG9w
ZXJhdG9yLT0oU2Vjb25kcyBvdGhlcikNCiAgICB7DQogICAgICAgIHJldHVybiAqdGhpcyA9ICp0
aGlzIC0gb3RoZXI7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBTZWNvbmRzIG9wZXJhdG9y
LShNb25vdG9uaWNUaW1lIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIFNlY29u
ZHMobV92YWx1ZSAtIG90aGVyLm1fdmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KE1vbm90b25pY1RpbWUgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOw0KICAgIH0NCiAgICANCiAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KE1vbm90b25pY1RpbWUgb3RoZXIpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gbV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlOw0KICAgIH0NCiAgICANCiAg
ICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoTW9ub3RvbmljVGltZSBvdGhlcikgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX3ZhbHVlIDwgb3RoZXIubV92YWx1ZTsNCiAgICB9DQogICAg
DQogICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KE1vbm90b25pY1RpbWUgb3RoZXIpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gbV92YWx1ZSA+IG90aGVyLm1fdmFsdWU7DQogICAgfQ0K
ICAgIA0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oTW9ub3RvbmljVGltZSBvdGhlcikg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3ZhbHVlIDw9IG90aGVyLm1fdmFsdWU7DQog
ICAgfQ0KICAgIA0KICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oTW9ub3RvbmljVGltZSBv
dGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3ZhbHVlID49IG90aGVyLm1fdmFs
dWU7DQogICAgfQ0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsNCg0KICAgIE1vbm90b25pY1RpbWUgaXNvbGF0ZWRDb3B5KCkgY29u
c3QNCiAgICB7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPg0KICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0DQog
ICAgew0KICAgICAgICBlbmNvZGVyIDw8IG1fdmFsdWU7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4NCiAgICBzdGF0aWMgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpDQogICAgew0KICAgICAgICBPcHRpb25hbDxkb3VibGU+IHRpbWU7
DQogICAgICAgIGRlY29kZXIgPj4gdGltZTsNCiAgICAgICAgaWYgKCF0aW1lKQ0KICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCiAgICAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6OmZy
b21SYXdTZWNvbmRzKCp0aW1lKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
Pg0KICAgIHN0YXRpYyAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTW9ub3RvbmljVGlt
ZSYgdGltZSkNCiAgICB7DQogICAgICAgIGRvdWJsZSB2YWx1ZTsNCiAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh2YWx1ZSkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAg
dGltZSA9IE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKHZhbHVlKTsNCiAgICAgICAgcmV0
dXJuIHRydWU7DQogICAgfQ0KDQogICAgc3RydWN0IE1hcmthYmxlVHJhaXRzOw0KDQpwcml2YXRl
Og0KICAgIGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lKGRvdWJsZSByYXdWYWx1ZSkNCiAgICAgICAg
OiBtX3ZhbHVlKHJhd1ZhbHVlKQ0KICAgIHsNCiAgICB9DQoNCiAgICBkb3VibGUgbV92YWx1ZSB7
IDAgfTsNCn07DQoNCnN0cnVjdCBNb25vdG9uaWNUaW1lOjpNYXJrYWJsZVRyYWl0cyB7DQogICAg
c3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKE1vbm90b25pY1RpbWUgdGltZSkNCiAgICB7DQogICAg
ICAgIHJldHVybiBzdGQ6OmlzbmFuKHRpbWUubV92YWx1ZSk7DQogICAgfQ0KDQogICAgc3RhdGlj
IGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lIGVtcHR5VmFsdWUoKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIE1vbm90b25pY1RpbWU6Om5hbigpOw0KICAgIH0NCn07DQoNCn0gDQoNCm5hbWVzcGFjZSBz
dGQgew0KDQppbmxpbmUgYm9vbCBpc25hbihXVEY6Ok1vbm90b25pY1RpbWUgdGltZSkNCnsNCiAg
ICByZXR1cm4gc3RkOjppc25hbih0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7DQp9
DQoNCmlubGluZSBib29sIGlzaW5mKFdURjo6TW9ub3RvbmljVGltZSB0aW1lKQ0Kew0KICAgIHJl
dHVybiBzdGQ6OmlzaW5mKHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsNCn0NCg0K
aW5saW5lIGJvb2wgaXNmaW5pdGUoV1RGOjpNb25vdG9uaWNUaW1lIHRpbWUpDQp7DQogICAgcmV0
dXJuIHN0ZDo6aXNmaW5pdGUodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOw0KfQ0K
DQp9IA0KDQp1c2luZyBXVEY6Ok1vbm90b25pY1RpbWU7DQojbGluZSAzNyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxCbG9ja0RpcmVjdG9y
eS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvU2hhcmVkVGFzay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4gY2xhc3MgU2hhcmVkVGFzazsNCnRl
bXBsYXRlPHR5cGVuYW1lIFBhc3NlZFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlw
ZXM+DQpjbGFzcyBTaGFyZWRUYXNrPFBhc3NlZFJlc3VsdFR5cGUgKEFyZ3VtZW50VHlwZXMuLi4p
PiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRUYXNrPFBhc3NlZFJlc3VsdFR5
cGUgKEFyZ3VtZW50VHlwZXMuLi4pPj4gew0KcHVibGljOg0KICAgIHR5cGVkZWYgUGFzc2VkUmVz
dWx0VHlwZSBSZXN1bHRUeXBlOw0KICAgIA0KICAgIFNoYXJlZFRhc2soKSB7IH0NCiAgICB2aXJ0
dWFsIH5TaGFyZWRUYXNrKCkgeyB9DQoNCiAgICB2aXJ0dWFsIFJlc3VsdFR5cGUgcnVuKEFyZ3Vt
ZW50VHlwZXMuLi4pID0gMDsNCn07DQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5
cGUsIHR5cGVuYW1lIEZ1bmN0b3I+IGNsYXNzIFNoYXJlZFRhc2tGdW5jdG9yOw0KdGVtcGxhdGU8
dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcywgdHlwZW5hbWUg
RnVuY3Rvcj4NCmNsYXNzIFNoYXJlZFRhc2tGdW5jdG9yPFJlc3VsdFR5cGUoQXJndW1lbnRUeXBl
cy4uLiksIEZ1bmN0b3I+IGZpbmFsIDogcHVibGljIFNoYXJlZFRhc2s8UmVzdWx0VHlwZShBcmd1
bWVudFR5cGVzLi4uKT4gew0KcHVibGljOg0KICAgIFNoYXJlZFRhc2tGdW5jdG9yKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpDQogICAgICAgIDogbV9mdW5jdG9yKGZ1bmN0b3IpDQogICAgew0KICAg
IH0NCg0KICAgIFNoYXJlZFRhc2tGdW5jdG9yKEZ1bmN0b3ImJiBmdW5jdG9yKQ0KICAgICAgICA6
IG1fZnVuY3RvcihzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGZ1bmN0b3IpKQ0K
ICAgIHsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgUmVzdWx0VHlwZSBydW4oQXJndW1lbnRUeXBl
cy4uLiBhcmd1bWVudHMpIGZpbmFsDQogICAgew0KICAgICAgICByZXR1cm4gbV9mdW5jdG9yKHN0
ZDo6Zm9yd2FyZDxBcmd1bWVudFR5cGVzPihhcmd1bWVudHMpLi4uKTsNCiAgICB9DQoNCiAgICBG
dW5jdG9yIG1fZnVuY3RvcjsNCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+DQpSZWY8
U2hhcmVkVGFzazxGdW5jdGlvblR5cGU+PiBjcmVhdGVTaGFyZWRUYXNrKGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpDQp7DQogICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkVGFza0Z1bmN0b3I8
RnVuY3Rpb25UeXBlLCBGdW5jdG9yPihmdW5jdG9yKSk7DQp9DQp0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+DQpSZWY8U2hhcmVkVGFzazxGdW5jdGlvblR5
cGU+PiBjcmVhdGVTaGFyZWRUYXNrKEZ1bmN0b3ImJiBmdW5jdG9yKQ0Kew0KICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZFRhc2tGdW5jdG9yPEZ1bmN0aW9uVHlwZSwgRnVuY3Rvcj4oc3Rk
Ojptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihmdW5jdG9yKSkpOw0KfQ0KDQp9IA0KDQp1
c2luZyBXVEY6OmNyZWF0ZVNoYXJlZFRhc2s7DQp1c2luZyBXVEY6OlNoYXJlZFRhc2s7DQp1c2lu
ZyBXVEY6OlNoYXJlZFRhc2tGdW5jdG9yOw0KI2xpbmUgMzggIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcQmxvY2tEaXJlY3RvcnkuaCINCg0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7DQpjbGFzcyBIZWFw
Ow0KY2xhc3MgSXNvQ2VsbFNldDsNCmNsYXNzIE1hcmtlZFNwYWNlOw0KY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOw0KDQp1c2luZyBCbG9ja0RpcmVjdG9yeU1hbGxvYyA9IEZhc3RNYWxsb2M7
DQoNCmNsYXNzIEJsb2NrRGlyZWN0b3J5IHsNCiAgICBCbG9ja0RpcmVjdG9yeShjb25zdCBCbG9j
a0RpcmVjdG9yeSYpID0gZGVsZXRlOyBCbG9ja0RpcmVjdG9yeSYgb3BlcmF0b3I9KGNvbnN0IEJs
b2NrRGlyZWN0b3J5JikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZh
dGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBp
bnQ7DQogICAgDQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCg0KcHVi
bGljOg0KICAgIEJsb2NrRGlyZWN0b3J5KHNpemVfdCBjZWxsU2l6ZSk7DQogICAgfkJsb2NrRGly
ZWN0b3J5KCk7DQogICAgdm9pZCBzZXRTdWJzcGFjZShTdWJzcGFjZSopOw0KICAgIHZvaWQgbGFz
dENoYW5jZVRvRmluYWxpemUoKTsNCiAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7DQog
ICAgdm9pZCBzdG9wQWxsb2NhdGluZygpOw0KICAgIHZvaWQgc3RvcEFsbG9jYXRpbmdGb3JHb29k
KCk7DQogICAgdm9pZCByZXN1bWVBbGxvY2F0aW5nKCk7DQogICAgdm9pZCBiZWdpbk1hcmtpbmdG
b3JGdWxsQ29sbGVjdGlvbigpOw0KICAgIHZvaWQgZW5kTWFya2luZygpOw0KICAgIHZvaWQgc25h
cHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsNCiAgICB2b2lkIHNuYXBzaG90VW5zd2Vw
dEZvckZ1bGxDb2xsZWN0aW9uKCk7DQogICAgdm9pZCBzd2VlcCgpOw0KICAgIHZvaWQgc2hyaW5r
KCk7DQogICAgdm9pZCBhc3NlcnROb1Vuc3dlcHQoKTsNCiAgICBzaXplX3QgY2VsbFNpemUoKSBj
b25zdCB7IHJldHVybiBtX2NlbGxTaXplOyB9DQogICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0NCiAgICBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0g
TmVlZHNEZXN0cnVjdGlvbjsgfQ0KICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQ0KICAgIEhlYXBDZWxsOjpL
aW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOyB9DQoN
CiAgICBib29sIGlzRnJlZUxpc3RlZENlbGwoY29uc3Qgdm9pZCogdGFyZ2V0KTsNCg0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3Im
KTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hOb3RFbXB0eUJs
b2NrKGNvbnN0IEZ1bmN0b3ImKTsNCiAgICANCiAgICBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRC
bG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eUJsb2NrU291cmNlKCk7DQogICAgDQog
ICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7DQogICAgdm9pZCByZW1vdmVC
bG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7DQoNCiAgICBib29sIGlzUGFnZWRPdXQoTW9ub3Rv
bmljVGltZSBkZWFkbGluZSk7DQogICAgDQogICAgTG9jayYgYml0dmVjdG9yTG9jaygpIHsgcmV0
dXJuIG1fYml0dmVjdG9yTG9jazsgfQ0KDQoNCg0KDQoNCg0KICAgIGJvb2wgaXNMaXZlKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNM
aXZlKGluZGV4KTsgfSBib29sIGlzTGl2ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXNMaXZlKGxvY2tlciwg
YmxvY2stPmluZGV4KCkpOyB9IHZvaWQgc2V0SXNMaXZlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwg
c2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fYml0cy5zZXRJc0xpdmUoaW5kZXgsIHZhbHVl
KTsgfSB2b2lkIHNldElzTGl2ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRC
bG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJc0xpdmUobG9ja2VyLCBibG9j
ay0+aW5kZXgoKSwgdmFsdWUpOyB9IGJvb2wgaXNFbXB0eShjb25zdCBBYnN0cmFjdExvY2tlciYs
IHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmlzRW1wdHkoaW5kZXgpOyB9IGJv
b2wgaXNFbXB0eShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXNFbXB0eShsb2NrZXIsIGJsb2NrLT5pbmRleCgp
KTsgfSB2b2lkIHNldElzRW1wdHkoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgs
IGJvb2wgdmFsdWUpIHsgbV9iaXRzLnNldElzRW1wdHkoaW5kZXgsIHZhbHVlKTsgfSB2b2lkIHNl
dElzRW1wdHkoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXNFbXB0eShsb2NrZXIsIGJsb2NrLT5pbmRleCgp
LCB2YWx1ZSk7IH0gYm9vbCBpc0FsbG9jYXRlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmlzQWxsb2NhdGVkKGluZGV4KTsgfSBib29s
IGlzQWxsb2NhdGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpc0FsbG9jYXRlZChsb2NrZXIsIGJsb2NrLT5p
bmRleCgpKTsgfSB2b2lkIHNldElzQWxsb2NhdGVkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6
ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fYml0cy5zZXRJc0FsbG9jYXRlZChpbmRleCwgdmFs
dWUpOyB9IHZvaWQgc2V0SXNBbGxvY2F0ZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXNBbGxvY2F0ZWQo
bG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9IGJvb2wgaXNDYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2JpdHMuaXNDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KGluZGV4KTsgfSBib29sIGlzQ2FuQWxs
b2NhdGVCdXROb3RFbXB0eShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXNDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5
KGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IHZvaWQgc2V0SXNDYW5BbGxvY2F0ZUJ1dE5vdEVt
cHR5KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1f
Yml0cy5zZXRJc0NhbkFsbG9jYXRlQnV0Tm90RW1wdHkoaW5kZXgsIHZhbHVlKTsgfSB2b2lkIHNl
dElzQ2FuQWxsb2NhdGVCdXROb3RFbXB0eShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJc0NhbkFsbG9jYXRl
QnV0Tm90RW1wdHkobG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9IGJvb2wgaXNEZXN0
cnVjdGlibGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cy5pc0Rlc3RydWN0aWJsZShpbmRleCk7IH0gYm9vbCBpc0Rlc3RydWN0aWJsZShj
b25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykg
Y29uc3QgeyByZXR1cm4gaXNEZXN0cnVjdGlibGUobG9ja2VyLCBibG9jay0+aW5kZXgoKSk7IH0g
dm9pZCBzZXRJc0Rlc3RydWN0aWJsZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRl
eCwgYm9vbCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXNEZXN0cnVjdGlibGUoaW5kZXgsIHZhbHVlKTsg
fSB2b2lkIHNldElzRGVzdHJ1Y3RpYmxlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzRGVzdHJ1Y3RpYmxl
KGxvY2tlciwgYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfSBib29sIGlzRWRlbihjb25zdCBBYnN0
cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmlzRWRlbihp
bmRleCk7IH0gYm9vbCBpc0VkZW4oY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzRWRlbihsb2NrZXIsIGJsb2Nr
LT5pbmRleCgpKTsgfSB2b2lkIHNldElzRWRlbihjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVf
dCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXNFZGVuKGluZGV4LCB2YWx1ZSk7IH0g
dm9pZCBzZXRJc0VkZW4oY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXNFZGVuKGxvY2tlciwgYmxvY2stPmlu
ZGV4KCksIHZhbHVlKTsgfSBib29sIGlzVW5zd2VwdChjb25zdCBBYnN0cmFjdExvY2tlciYsIHNp
emVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmlzVW5zd2VwdChpbmRleCk7IH0gYm9v
bCBpc1Vuc3dlcHQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzVW5zd2VwdChsb2NrZXIsIGJsb2NrLT5pbmRl
eCgpKTsgfSB2b2lkIHNldElzVW5zd2VwdChjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBp
bmRleCwgYm9vbCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXNVbnN3ZXB0KGluZGV4LCB2YWx1ZSk7IH0g
dm9pZCBzZXRJc1Vuc3dlcHQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXNVbnN3ZXB0KGxvY2tlciwgYmxv
Y2stPmluZGV4KCksIHZhbHVlKTsgfSBib29sIGlzTWFya2luZ05vdEVtcHR5KGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXNNYXJraW5n
Tm90RW1wdHkoaW5kZXgpOyB9IGJvb2wgaXNNYXJraW5nTm90RW1wdHkoY29uc3QgQWJzdHJhY3RM
b2NrZXImIGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJu
IGlzTWFya2luZ05vdEVtcHR5KGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IHZvaWQgc2V0SXNN
YXJraW5nTm90RW1wdHkoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wg
dmFsdWUpIHsgbV9iaXRzLnNldElzTWFya2luZ05vdEVtcHR5KGluZGV4LCB2YWx1ZSk7IH0gdm9p
ZCBzZXRJc01hcmtpbmdOb3RFbXB0eShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJc01hcmtpbmdOb3RFbXB0
eShsb2NrZXIsIGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0gYm9vbCBpc01hcmtpbmdSZXRpcmVk
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Jp
dHMuaXNNYXJraW5nUmV0aXJlZChpbmRleCk7IH0gYm9vbCBpc01hcmtpbmdSZXRpcmVkKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25z
dCB7IHJldHVybiBpc01hcmtpbmdSZXRpcmVkKGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IHZv
aWQgc2V0SXNNYXJraW5nUmV0aXJlZChjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRl
eCwgYm9vbCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXNNYXJraW5nUmV0aXJlZChpbmRleCwgdmFsdWUp
OyB9IHZvaWQgc2V0SXNNYXJraW5nUmV0aXJlZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
LCBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJc01hcmtpbmdS
ZXRpcmVkKGxvY2tlciwgYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQ0KDQoNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPg0KICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBBYnN0cmFj
dExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0KDQoNCiAgICAgICAgZnVuYyhtX2Jp
dHMubGl2ZSgpKTsgZnVuYyhtX2JpdHMuZW1wdHkoKSk7IGZ1bmMobV9iaXRzLmFsbG9jYXRlZCgp
KTsgZnVuYyhtX2JpdHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0eSgpKTsgZnVuYyhtX2JpdHMuZGVz
dHJ1Y3RpYmxlKCkpOyBmdW5jKG1fYml0cy5lZGVuKCkpOyBmdW5jKG1fYml0cy51bnN3ZXB0KCkp
OyBmdW5jKG1fYml0cy5tYXJraW5nTm90RW1wdHkoKSk7IGZ1bmMobV9iaXRzLm1hcmtpbmdSZXRp
cmVkKCkpOzsNCg0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KICAg
IHZvaWQgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29u
c3QgRnVuYyYgZnVuYykNCiAgICB7DQoNCg0KICAgICAgICBmdW5jKG1fYml0cy5saXZlKCksICJM
aXZlIik7IGZ1bmMobV9iaXRzLmVtcHR5KCksICJFbXB0eSIpOyBmdW5jKG1fYml0cy5hbGxvY2F0
ZWQoKSwgIkFsbG9jYXRlZCIpOyBmdW5jKG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCks
ICJDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5Iik7IGZ1bmMobV9iaXRzLmRlc3RydWN0aWJsZSgpLCAi
RGVzdHJ1Y3RpYmxlIik7IGZ1bmMobV9iaXRzLmVkZW4oKSwgIkVkZW4iKTsgZnVuYyhtX2JpdHMu
dW5zd2VwdCgpLCAiVW5zd2VwdCIpOyBmdW5jKG1fYml0cy5tYXJraW5nTm90RW1wdHkoKSwgIk1h
cmtpbmdOb3RFbXB0eSIpOyBmdW5jKG1fYml0cy5tYXJraW5nUmV0aXJlZCgpLCAiTWFya2luZ1Jl
dGlyZWQiKTs7DQoNCiAgICB9DQogICAgDQogICAgQmxvY2tEaXJlY3RvcnkqIG5leHREaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX25leHREaXJlY3Rvcnk7IH0NCiAgICBCbG9ja0RpcmVjdG9y
eSogbmV4dERpcmVjdG9yeUluU3Vic3BhY2UoKSBjb25zdCB7IHJldHVybiBtX25leHREaXJlY3Rv
cnlJblN1YnNwYWNlOyB9DQogICAgQmxvY2tEaXJlY3RvcnkqIG5leHREaXJlY3RvcnlJbkFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX25leHREaXJlY3RvcnlJbkFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I7IH0NCiAgICANCiAgICB2b2lkIHNldE5leHREaXJlY3RvcnkoQmxv
Y2tEaXJlY3RvcnkqIGRpcmVjdG9yeSkgeyBtX25leHREaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0N
CiAgICB2b2lkIHNldE5leHREaXJlY3RvcnlJblN1YnNwYWNlKEJsb2NrRGlyZWN0b3J5KiBkaXJl
Y3RvcnkpIHsgbV9uZXh0RGlyZWN0b3J5SW5TdWJzcGFjZSA9IGRpcmVjdG9yeTsgfQ0KICAgIHZv
aWQgc2V0TmV4dERpcmVjdG9yeUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihCbG9ja0RpcmVjdG9y
eSogZGlyZWN0b3J5KSB7IG1fbmV4dERpcmVjdG9yeUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvciA9
IGRpcmVjdG9yeTsgfQ0KICAgIA0KICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRFbXB0eUJs
b2NrVG9TdGVhbCgpOw0KICAgIA0KICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja1Rv
U3dlZXAoKTsNCiAgICANCiAgICBTdWJzcGFjZSogc3Vic3BhY2UoKSBjb25zdCB7IHJldHVybiBt
X3N1YnNwYWNlOyB9DQogICAgTWFya2VkU3BhY2UmIG1hcmtlZFNwYWNlKCkgY29uc3Q7DQogICAg
DQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7DQogICAgdm9pZCBkdW1wQml0cyhQ
cmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCkpOw0KICAgIA0KcHJpdmF0ZToNCiAgICBmcmll
bmQgY2xhc3MgSXNvQ2VsbFNldDsNCiAgICBmcmllbmQgY2xhc3MgTG9jYWxBbGxvY2F0b3I7DQog
ICAgZnJpZW5kIGNsYXNzIExvY2FsU2lkZUFsbG9jYXRvcjsNCiAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7DQogICAgDQogICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJsb2NrRm9yQWxs
b2NhdGlvbihMb2NhbEFsbG9jYXRvciYpOw0KICAgIA0KICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IHRyeUFsbG9jYXRlQmxvY2soSGVhcCYpOw0KICAgIA0KICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6
SGFuZGxlKj4gbV9ibG9ja3M7DQogICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGlj
ZXM7DQoNCiAgICANCiAgICANCiAgICBCbG9ja0RpcmVjdG9yeUJpdHMgbV9iaXRzOw0KICAgIExv
Y2sgbV9iaXR2ZWN0b3JMb2NrOw0KICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2NrOw0KICAg
IENlbGxBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsNCg0KICAgIHVuc2lnbmVkIG1fY2VsbFNpemU7
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdW5zaWduZWQgbV9lbXB0eUN1cnNvciB7IDAg
fTsNCiAgICB1bnNpZ25lZCBtX3Vuc3dlcHRDdXJzb3IgeyAwIH07IA0KICAgIA0KICAgIA0KICAg
IA0KICAgIFN1YnNwYWNlKiBtX3N1YnNwYWNlIHsgbnVsbHB0ciB9Ow0KICAgIEJsb2NrRGlyZWN0
b3J5KiBtX25leHREaXJlY3RvcnkgeyBudWxscHRyIH07DQogICAgQmxvY2tEaXJlY3RvcnkqIG1f
bmV4dERpcmVjdG9yeUluU3Vic3BhY2UgeyBudWxscHRyIH07DQogICAgQmxvY2tEaXJlY3Rvcnkq
IG1fbmV4dERpcmVjdG9yeUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7IG51bGxwdHIgfTsNCiAg
ICANCiAgICBTZW50aW5lbExpbmtlZExpc3Q8TG9jYWxBbGxvY2F0b3IsIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPExvY2FsQWxsb2NhdG9yPj4gbV9sb2NhbEFsbG9jYXRvcnM7DQp9Ow0KDQp9IA0KI2xp
bmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcTWFya2VkU3BhY2UuaCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hcmtlZEJsb2NrU2V0LmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaGVhcFxcVGlueUJsb29tRmlsdGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KdHlwZWRlZiB1aW50cHRyX3QgQml0czsNCg0KY2xhc3MgVGlueUJsb29tRmlsdGVyIHsN
CnB1YmxpYzoNCiAgICBUaW55Qmxvb21GaWx0ZXIoKSA9IGRlZmF1bHQ7DQogICAgVGlueUJsb29t
RmlsdGVyKEJpdHMpOw0KDQogICAgdm9pZCBhZGQoQml0cyk7DQogICAgdm9pZCBhZGQoVGlueUJs
b29tRmlsdGVyJik7DQogICAgYm9vbCBydWxlT3V0KEJpdHMpIGNvbnN0OyANCiAgICB2b2lkIHJl
c2V0KCk7DQogICAgQml0cyBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9DQoNCnByaXZh
dGU6DQogICAgQml0cyBtX2JpdHMgeyAwIH07DQp9Ow0KDQppbmxpbmUgVGlueUJsb29tRmlsdGVy
OjpUaW55Qmxvb21GaWx0ZXIoQml0cyBiaXRzKQ0KICAgIDogbV9iaXRzKGJpdHMpDQp7DQp9DQoN
CmlubGluZSB2b2lkIFRpbnlCbG9vbUZpbHRlcjo6YWRkKEJpdHMgYml0cykNCnsNCiAgICBtX2Jp
dHMgfD0gYml0czsNCn0NCg0KaW5saW5lIHZvaWQgVGlueUJsb29tRmlsdGVyOjphZGQoVGlueUJs
b29tRmlsdGVyJiBvdGhlcikNCnsNCiAgICBtX2JpdHMgfD0gb3RoZXIubV9iaXRzOw0KfQ0KDQpp
bmxpbmUgYm9vbCBUaW55Qmxvb21GaWx0ZXI6OnJ1bGVPdXQoQml0cyBiaXRzKSBjb25zdA0Kew0K
ICAgIGlmICghYml0cykNCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICBpZiAoKGJpdHMgJiBt
X2JpdHMpICE9IGJpdHMpDQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgcmV0dXJuIGZhbHNl
Ow0KfQ0KDQppbmxpbmUgdm9pZCBUaW55Qmxvb21GaWx0ZXI6OnJlc2V0KCkNCnsNCiAgICBtX2Jp
dHMgPSAwOw0KfQ0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkQmxvY2tTZXQuaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0hh
c2hTZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpzdHJ1Y3QgSWRlbnRpdHlFeHRy
YWN0b3I7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBUcmFpdHNBcmc+DQpjbGFzcyBIYXNoU2V0IGZpbmFsIHsNCiAgICBwdWJsaWM6IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9p
ZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRp
b24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxv
Y2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFm
dGVyVGhpc01hY3JvID0gaW50Ow0KcHJpdmF0ZToNCiAgICB0eXBlZGVmIEhhc2hBcmcgSGFzaEZ1
bmN0aW9uczsNCiAgICB0eXBlZGVmIFRyYWl0c0FyZyBWYWx1ZVRyYWl0czsNCiAgICB0eXBlZGVm
IHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUYWtlVHlwZSBUYWtlVHlwZTsNCg0KcHVibGljOg0KICAg
IHR5cGVkZWYgdHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7DQoNCnBy
aXZhdGU6DQogICAgdHlwZWRlZiBIYXNoVGFibGU8VmFsdWVUeXBlLCBWYWx1ZVR5cGUsIElkZW50
aXR5RXh0cmFjdG9yLA0KICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgVmFsdWVU
cmFpdHM+IEhhc2hUYWJsZVR5cGU7DQoNCnB1YmxpYzoNCiAgICANCg0KDQoNCiAgICB0eXBlZGVm
IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4g
aXRlcmF0b3I7DQogICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNo
VGFibGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOw0KDQogICAgDQoNCg0KDQoNCiAg
ICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7DQoN
CiAgICBIYXNoU2V0KCkNCiAgICB7DQogICAgfQ0KDQogICAgSGFzaFNldChzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VmFsdWVBcmc+IGluaXRpYWxpemVyTGlzdCkNCiAgICB7DQogICAgICAgIGZvciAo
Y29uc3QgYXV0byYgdmFsdWUgOiBpbml0aWFsaXplckxpc3QpDQogICAgICAgICAgICBhZGQodmFs
dWUpOw0KICAgIH0NCg0KICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7DQoNCiAgICB1bnNpZ25lZCBz
aXplKCkgY29uc3Q7DQogICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25zdDsNCiAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsNCg0KICAgIHZvaWQgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh1bnNpZ25l
ZCBrZXlDb3VudCkgeyBtX2ltcGwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrZXlDb3VudCk7IH0N
Cg0KICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7DQogICAgaXRlcmF0b3IgZW5kKCkgY29uc3Q7
DQoNCiAgICBpdGVyYXRvciByYW5kb20oKSBjb25zdCB7IHJldHVybiBtX2ltcGwucmFuZG9tKCk7
IH0NCg0KICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgVmFsdWVUeXBlJikgY29uc3Q7DQogICAgYm9v
bCBjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmKSBjb25zdDsNCg0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPiBpdGVyYXRvciBmaW5kKGNvbnN0IFQmKSBjb25zdDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gYm9vbCBjb250YWlucyhjb25zdCBUJikgY29u
c3Q7DQoNCiAgICANCiAgICANCiAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYpOw0K
ICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYpOw0KICAgIHZvaWQgYWRkKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZhbHVlVHlwZT4+KTsNCg0K
ICAgIHZvaWQgYWRkVm9pZChjb25zdCBWYWx1ZVR5cGUmKTsNCiAgICB2b2lkIGFkZFZvaWQoVmFs
dWVUeXBlJiYpOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IEFkZFJlc3VsdCBhZGQo
Y29uc3QgVCYpOw0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJh
dG9yVHlwZT4NCiAgICBib29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBl
bmQpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4NCiAgICBib29sIHJlbW92
ZShJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOw0KDQogICAgYm9vbCByZW1v
dmUoY29uc3QgVmFsdWVUeXBlJik7DQogICAgYm9vbCByZW1vdmUoaXRlcmF0b3IpOw0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+DQogICAgYm9vbCByZW1vdmVJZihjb25zdCBGdW5jdG9y
Jik7DQogICAgdm9pZCBjbGVhcigpOw0KDQogICAgVGFrZVR5cGUgdGFrZShjb25zdCBWYWx1ZVR5
cGUmKTsNCiAgICBUYWtlVHlwZSB0YWtlKGl0ZXJhdG9yKTsNCiAgICBUYWtlVHlwZSB0YWtlQW55
KCk7DQoNCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlIGZp
bmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKSBjb25zdDsNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0
UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgY29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVy
PFY+OjpQdHJUeXBlKSBjb25zdDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBl
PiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5
cGUgcmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSk7DQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFy
dFB0cjxWPjo6dmFsdWUsIFRha2VUeXBlPjo6dHlwZSB0YWtlKHR5cGVuYW1lIEdldFB0ckhlbHBl
cjxWPjo6UHRyVHlwZSk7DQoNCiAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkVmFsdWUoY29uc3QgVmFs
dWVUeXBlJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+DQogICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVjdGlvbiYpIGNvbnN0Ow0KICAgIA0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4NCiAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgT3RoZXJDb2xsZWN0aW9uJikgY29uc3Q7DQoNCiAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICBIYXNoVGFibGVUeXBlIG1faW1wbDsNCn07DQoN
CnN0cnVjdCBJZGVudGl0eUV4dHJhY3RvciB7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIGNvbnN0IFQmIGV4dHJhY3QoY29uc3QgVCYgdCkgeyByZXR1cm4gdDsgfQ0KfTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+DQpzdHJ1
Y3QgSGFzaFNldFRyYW5zbGF0b3Igew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChr
ZXkpOyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1
YWwoYSwgYik7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiwgViYmIHZhbHVlKQ0K
ICAgIHsgDQogICAgICAgIFZhbHVlVHJhaXRzOjphc3NpZ25Ub0VtcHR5KGxvY2F0aW9uLCBzdGQ6
OmZvcndhcmQ8Vj4odmFsdWUpKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFu
c2xhdG9yPg0Kc3RydWN0IEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlciB7DQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVCYga2V5KSB7IHJldHVybiBU
cmFuc2xhdG9yOjpoYXNoKGtleSk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBU
cmFuc2xhdG9yOjplcXVhbChhLCBiKTsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgY29uc3QgVSYga2V5LCBj
b25zdCBVJiwgdW5zaWduZWQgaGFzaENvZGUpDQogICAgew0KICAgICAgICBUcmFuc2xhdG9yOjp0
cmFuc2xhdGUobG9jYXRpb24sIGtleSwgaGFzaENvZGUpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+DQppbmxpbmUgdm9pZCBIYXNoU2V0
PFQsIFUsIFY+Ojpzd2FwKEhhc2hTZXQmIG90aGVyKQ0Kew0KICAgIG1faW1wbC5zd2FwKG90aGVy
Lm1faW1wbCk7IA0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPg0KaW5saW5lIHVuc2lnbmVkIEhhc2hTZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdA0Kew0K
ICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4NCmlubGluZSB1bnNpZ25lZCBIYXNoU2V0PFQsIFUsIFY+Ojpj
YXBhY2l0eSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1faW1wbC5jYXBhY2l0eSgpOyANCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCmlubGluZSBib29s
IEhhc2hTZXQ8VCwgVSwgVj46OmlzRW1wdHkoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2ltcGwu
aXNFbXB0eSgpOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4NCmlubGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OmJlZ2luKCkgY29uc3QgLT4gaXRl
cmF0b3INCnsNCiAgICByZXR1cm4gbV9pbXBsLmJlZ2luKCk7IA0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KaW5saW5lIGF1dG8gSGFzaFNldDxULCBV
LCBWPjo6ZW5kKCkgY29uc3QgLT4gaXRlcmF0b3INCnsNCiAgICByZXR1cm4gbV9pbXBsLmVuZCgp
OyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCmlu
bGluZSBhdXRvIEhhc2hTZXQ8VCwgVSwgVj46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
Y29uc3QgLT4gaXRlcmF0b3INCnsNCiAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOyANCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCmlubGluZSBi
b29sIEhhc2hTZXQ8VCwgVSwgVj46OmNvbnRhaW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNv
bnN0DQp7DQogICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1ZSk7IA0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
Pg0KdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+DQppbmxpbmUg
YXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKGNvbnN0IFQm
IHZhbHVlKSBjb25zdCAtPiBpdGVyYXRvcg0Kew0KICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUg
ZmluZDxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHM+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4NCmlubGluZSBib29sIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNv
bnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgY29udGFpbnM8SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4odmFs
dWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0K
aW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6YWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUp
IC0+IEFkZFJlc3VsdA0Kew0KICAgIHJldHVybiBtX2ltcGwuYWRkKHZhbHVlKTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCmlubGluZSBhdXRvIEhh
c2hTZXQ8VCwgVSwgVj46OmFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0DQp7DQog
ICAgcmV0dXJuIG1faW1wbC5hZGQoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2
YWx1ZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
Pg0KaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBWPjo6YWRkVm9pZChjb25zdCBWYWx1ZVR5cGUm
IHZhbHVlKQ0Kew0KICAgIG1faW1wbC5hZGQodmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KaW5saW5lIHZvaWQgSGFzaFNldDxULCBVLCBW
Pjo6YWRkVm9pZChWYWx1ZVR5cGUmJiB2YWx1ZSkNCnsNCiAgICBtX2ltcGwuYWRkKHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCnRlbXBs
YXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPg0KaW5saW5lIGF1dG8gSGFz
aFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAt
PiBBZGRSZXN1bHQNCnsNCiAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNo
Q29kZTxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSwgdmFs
dWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0K
dGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JUeXBlPg0KaW5saW5lIGJvb2wgSGFzaFNldDxULCBV
LCBWPjo6YWRkKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkNCnsNCiAgICBi
b29sIGNoYW5nZWQgPSBmYWxzZTsNCiAgICBmb3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpDQogICAgICAgIGNoYW5nZWQgfD0gYWRkKCppdGVyKS5pc05l
d0VudHJ5Ow0KICAgIHJldHVybiBjaGFuZ2VkOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JUeXBlPg0K
aW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKEl0ZXJhdG9yVHlwZSBiZWdpbiwg
SXRlcmF0b3JUeXBlIGVuZCkNCnsNCiAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsNCiAgICBmb3Ig
KEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpDQogICAgICAg
IGNoYW5nZWQgfD0gcmVtb3ZlKCppdGVyKTsNCiAgICByZXR1cm4gY2hhbmdlZDsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4NCmlubGluZSBib29sIEhh
c2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVyYXRvciBpdCkNCnsNCiAgICBpZiAoaXQubV9pbXBs
ID09IG1faW1wbC5lbmQoKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIG1faW1wbC5pbnRl
cm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOw0KICAgIG1faW1wbC5yZW1vdmVXaXRob3V0RW50
cnlDb25zaXN0ZW5jeUNoZWNrKGl0Lm1faW1wbCk7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+DQppbmxpbmUgYm9vbCBI
YXNoU2V0PFQsIFUsIFY+OjpyZW1vdmUoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkNCnsNCiAgICBy
ZXR1cm4gcmVtb3ZlKGZpbmQodmFsdWUpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4NCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+DQppbmxpbmUg
Ym9vbCBIYXNoU2V0PFQsIFUsIFY+OjpyZW1vdmVJZihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQ0K
ew0KICAgIHJldHVybiBtX2ltcGwucmVtb3ZlSWYoZnVuY3Rvcik7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+DQppbmxpbmUgdm9pZCBIYXNoU2V0PFQs
IFUsIFY+OjpjbGVhcigpDQp7DQogICAgbV9pbXBsLmNsZWFyKCk7IA0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KaW5saW5lIGF1dG8gSGFzaFNldDxU
LCBVLCBWPjo6dGFrZShpdGVyYXRvciBpdCkgLT4gVGFrZVR5cGUNCnsNCiAgICBpZiAoaXQgPT0g
ZW5kKCkpDQogICAgICAgIHJldHVybiBWYWx1ZVRyYWl0czo6dGFrZShWYWx1ZVRyYWl0czo6ZW1w
dHlWYWx1ZSgpKTsNCg0KICAgIGF1dG8gcmVzdWx0ID0gVmFsdWVUcmFpdHM6OnRha2Uoc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihjb25zdF9jYXN0PFZhbHVlVHlwZSY+KCppdCkp
KTsNCiAgICByZW1vdmUoaXQpOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+DQppbmxpbmUgYXV0byBIYXNoU2V0PFQs
IFUsIFY+Ojp0YWtlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IFRha2VUeXBlDQp7DQogICAg
cmV0dXJuIHRha2UoZmluZCh2YWx1ZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPg0KaW5saW5lIGF1dG8gSGFzaFNldDxULCBVLCBWPjo6dGFrZUFu
eSgpIC0+IFRha2VUeXBlDQp7DQogICAgcmV0dXJuIHRha2UoYmVnaW4oKSk7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHM+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBWPg0KaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5
cGUgdmFsdWUpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46
OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUNCnsNCiAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZp
bmQ8SGFzaFNldFRyYW5zbGF0b3I8VHJhaXRzLCBIYXNoRnVuY3Rpb25zPj4odmFsdWUpOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5h
bWUgVHJhaXRzPg0KdGVtcGxhdGU8dHlwZW5hbWUgVj4NCmlubGluZSBhdXRvIEhhc2hTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBl
cjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlDQp7DQogICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBjb250YWluczxIYXNoU2V0VHJhbnNsYXRvcjxUcmFpdHMsIEhhc2hGdW5jdGlvbnM+Pih2
YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBWPg0KaW5saW5lIGF1dG8g
SGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKHR5cGVuYW1lIEdl
dFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlDQp7DQogICAgcmV0dXJuIHJlbW92ZShm
aW5kKHZhbHVlKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBWPg0KaW5saW5l
IGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6dGFrZSh0eXBlbmFt
ZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBUYWtlVHlwZT46OnR5cGUNCnsNCiAgICByZXR1cm4g
dGFrZShmaW5kKHZhbHVlKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFY+DQppbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+Ojppc1ZhbGlkVmFsdWUo
Y29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkNCnsNCiAgICBpZiAoVmFsdWVUcmFpdHM6OmlzRGVsZXRl
ZFZhbHVlKHZhbHVlKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgaWYgKEhhc2hGdW5j
dGlvbnM6OnNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkKSB7DQogICAgICAgIGlmICh2YWx1
ZSA9PSBWYWx1ZVRyYWl0czo6ZW1wdHlWYWx1ZSgpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgIH0gZWxzZSB7DQogICAgICAgIGlmIChpc0hhc2hUcmFpdHNFbXB0eVZhbHVlPFZhbHVl
VHJhaXRzPih2YWx1ZSkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAg
cmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFY+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+DQppbmxpbmUgYm9vbCBI
YXNoU2V0PFQsIFUsIFY+OjpvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVjdGlvbiYgb3RoZXJD
b2xsZWN0aW9uKSBjb25zdA0Kew0KICAgIGlmIChzaXplKCkgIT0gb3RoZXJDb2xsZWN0aW9uLnNp
emUoKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIGZvciAoY29uc3QgYXV0byYgb3RoZXIg
OiBvdGhlckNvbGxlY3Rpb24pIHsNCiAgICAgICAgaWYgKCFjb250YWlucyhvdGhlcikpDQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0KdGVtcGxhdGU8dHlwZW5h
bWUgT3RoZXJDb2xsZWN0aW9uPg0KaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6b3BlcmF0
b3IhPShjb25zdCBPdGhlckNvbGxlY3Rpb24mIG90aGVyQ29sbGVjdGlvbikgY29uc3QNCnsNCiAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlckNvbGxlY3Rpb24pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPg0Kdm9pZCBIYXNoU2V0PFQsIFUsIFY+Ojph
ZGQoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmFs
dWVUeXBlPj4gbGlzdCkNCnsNCiAgICBmb3IgKGF1dG8mIHZhbHVlIDogbGlzdCkNCiAgICAgICAg
YWRkKHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4NCmlubGluZSB2b2lkIEhhc2hTZXQ8VCwgVSwgVj46OmNoZWNrQ29uc2lzdGVuY3koKSBj
b25zdA0Kew0KICAgIG1faW1wbC5jaGVja1RhYmxlQ29uc2lzdGVuY3koKTsNCn0NCg0KfSANCg0K
dXNpbmcgV1RGOjpIYXNoU2V0Ow0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkQmxvY2tTZXQuaCINCg0KbmFtZXNw
YWNlIEpTQyB7DQoNCmNsYXNzIE1hcmtlZEJsb2NrOw0KDQpjbGFzcyBNYXJrZWRCbG9ja1NldCB7
DQpwdWJsaWM6DQogICAgdm9pZCBhZGQoTWFya2VkQmxvY2sqKTsNCiAgICB2b2lkIHJlbW92ZShN
YXJrZWRCbG9jayopOw0KDQogICAgVGlueUJsb29tRmlsdGVyIGZpbHRlcigpIGNvbnN0Ow0KICAg
IGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgc2V0KCkgY29uc3Q7DQoNCnByaXZhdGU6DQog
ICAgdm9pZCByZWNvbXB1dGVGaWx0ZXIoKTsNCg0KICAgIFRpbnlCbG9vbUZpbHRlciBtX2ZpbHRl
cjsNCiAgICBIYXNoU2V0PE1hcmtlZEJsb2NrKj4gbV9zZXQ7DQp9Ow0KDQppbmxpbmUgdm9pZCBN
YXJrZWRCbG9ja1NldDo6YWRkKE1hcmtlZEJsb2NrKiBibG9jaykNCnsNCiAgICBtX2ZpbHRlci5h
ZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPihibG9jaykpOw0KICAgIG1fc2V0LmFkZChibG9jayk7
DQp9DQoNCmlubGluZSB2b2lkIE1hcmtlZEJsb2NrU2V0OjpyZW1vdmUoTWFya2VkQmxvY2sqIGJs
b2NrKQ0Kew0KICAgIHVuc2lnbmVkIG9sZENhcGFjaXR5ID0gbV9zZXQuY2FwYWNpdHkoKTsNCiAg
ICBtX3NldC5yZW1vdmUoYmxvY2spOw0KICAgIGlmIChtX3NldC5jYXBhY2l0eSgpICE9IG9sZENh
cGFjaXR5KSANCiAgICAgICAgcmVjb21wdXRlRmlsdGVyKCk7DQp9DQoNCmlubGluZSB2b2lkIE1h
cmtlZEJsb2NrU2V0OjpyZWNvbXB1dGVGaWx0ZXIoKQ0Kew0KICAgIFRpbnlCbG9vbUZpbHRlciBm
aWx0ZXI7DQogICAgZm9yIChIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIGl0ID0gbV9z
ZXQuYmVnaW4oKTsgaXQgIT0gbV9zZXQuZW5kKCk7ICsraXQpDQogICAgICAgIGZpbHRlci5hZGQo
cmVpbnRlcnByZXRfY2FzdDxCaXRzPigqaXQpKTsNCiAgICBtX2ZpbHRlciA9IGZpbHRlcjsNCn0N
Cg0KaW5saW5lIFRpbnlCbG9vbUZpbHRlciBNYXJrZWRCbG9ja1NldDo6ZmlsdGVyKCkgY29uc3QN
CnsNCiAgICByZXR1cm4gbV9maWx0ZXI7DQp9DQoNCmlubGluZSBjb25zdCBIYXNoU2V0PE1hcmtl
ZEJsb2NrKj4mIE1hcmtlZEJsb2NrU2V0OjpzZXQoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX3Nl
dDsNCn0NCg0KfSANCiNsaW5lIDI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hcmtlZFNwYWNlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFByZWNpc2VBbGxv
Y2F0aW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSXNvU3Vi
c3BhY2U7DQpjbGFzcyBTbG90VmlzaXRvcjsNCg0KDQoNCg0KDQoNCmNsYXNzIFByZWNpc2VBbGxv
Y2F0aW9uIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxQcmVjaXNlQWxsb2NhdGlvbj4g
ew0KcHVibGljOg0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQogICAg
ZnJpZW5kIGNsYXNzIElzb1N1YnNwYWNlOw0KDQogICAgc3RhdGljIFByZWNpc2VBbGxvY2F0aW9u
KiB0cnlDcmVhdGUoSGVhcCYsIHNpemVfdCwgU3Vic3BhY2UqLCB1bnNpZ25lZCBpbmRleEluU3Bh
Y2UpOw0KDQogICAgc3RhdGljIFByZWNpc2VBbGxvY2F0aW9uKiBjcmVhdGVGb3JMb3dlclRpZXIo
SGVhcCYsIHNpemVfdCwgU3Vic3BhY2UqLCB1aW50OF90IGxvd2VyVGllckluZGV4KTsNCiAgICBQ
cmVjaXNlQWxsb2NhdGlvbiogcmV1c2VGb3JMb3dlclRpZXIoKTsNCg0KICAgIFByZWNpc2VBbGxv
Y2F0aW9uKiB0cnlSZWFsbG9jYXRlKHNpemVfdCwgU3Vic3BhY2UqKTsNCiAgICANCiAgICB+UHJl
Y2lzZUFsbG9jYXRpb24oKTsNCiAgICANCiAgICBzdGF0aWMgUHJlY2lzZUFsbG9jYXRpb24qIGZy
b21DZWxsKGNvbnN0IHZvaWQqIGNlbGwpDQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PFByZWNpc2VBbGxvY2F0aW9uKj4oYml0d2lzZV9jYXN0PGNoYXIqPihjZWxsKSAtIGhlYWRl
clNpemUoKSk7DQogICAgfQ0KICAgIA0KICAgIEhlYXBDZWxsKiBjZWxsKCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHRoaXMpICsgaGVhZGVyU2l6ZSgpKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGJvb2wg
aXNQcmVjaXNlQWxsb2NhdGlvbihIZWFwQ2VsbCogY2VsbCkNCiAgICB7DQogICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjZWxsKSAmIGhhbGZBbGlnbm1lbnQ7DQogICAgfQ0K
ICAgIA0KICAgIFN1YnNwYWNlKiBzdWJzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic3BhY2U7
IH0NCiAgICANCiAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7DQogICAgDQogICAgSGVh
cCogaGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vha1NldC5oZWFwKCk7IH0NCiAgICBWTSYgdm0o
KSBjb25zdCB7IHJldHVybiBtX3dlYWtTZXQudm0oKTsgfQ0KICAgIFdlYWtTZXQmIHdlYWtTZXQo
KSB7IHJldHVybiBtX3dlYWtTZXQ7IH0NCg0KICAgIHVuc2lnbmVkIGluZGV4SW5TcGFjZSgpIHsg
cmV0dXJuIG1faW5kZXhJblNwYWNlOyB9DQogICAgdm9pZCBzZXRJbmRleEluU3BhY2UodW5zaWdu
ZWQgaW5kZXhJblNwYWNlKSB7IG1faW5kZXhJblNwYWNlID0gaW5kZXhJblNwYWNlOyB9DQogICAg
DQogICAgdm9pZCBzaHJpbmsoKTsNCiAgICANCiAgICB2b2lkIHZpc2l0V2Vha1NldChTbG90Vmlz
aXRvciYpOw0KICAgIHZvaWQgcmVhcFdlYWtTZXQoKTsNCiAgICANCiAgICB2b2lkIGNsZWFyTmV3
bHlBbGxvY2F0ZWQoKSB7IG1faXNOZXdseUFsbG9jYXRlZCA9IGZhbHNlOyB9DQogICAgdm9pZCBm
bGlwKCk7DQogICAgDQogICAgYm9vbCBpc05ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc05ld2x5QWxsb2NhdGVkOyB9DQogICAgX19mb3JjZWlubGluZSBib29sIGlzTWFya2VkKCkg
eyByZXR1cm4gbV9pc01hcmtlZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOyB9DQog
ICAgX19mb3JjZWlubGluZSBib29sIGlzTWFya2VkKEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJr
ZWQoKTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCBpc01hcmtlZChIZWFwQ2VsbCosIERlcGVu
ZGVuY3kpIHsgcmV0dXJuIGlzTWFya2VkKCk7IH0NCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgaXNN
YXJrZWQoSGVhcFZlcnNpb24sIEhlYXBDZWxsKikgeyByZXR1cm4gaXNNYXJrZWQoKTsgfQ0KICAg
IGJvb2wgaXNMaXZlKCkgeyByZXR1cm4gaXNNYXJrZWQoKSB8fCBpc05ld2x5QWxsb2NhdGVkKCk7
IH0NCiAgICANCiAgICBib29sIGhhc1ZhbGlkQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzVmFs
aWRDZWxsOyB9DQogICAgDQogICAgYm9vbCBpc0VtcHR5KCk7DQogICAgDQogICAgc2l6ZV90IGNl
bGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsU2l6ZTsgfQ0KDQogICAgdWludDhfdCBsb3dl
clRpZXJJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbG93ZXJUaWVySW5kZXg7IH0NCiAgICANCiAg
ICBib29sIGFib3ZlTG93ZXJCb3VuZChjb25zdCB2b2lkKiByYXdQdHIpDQogICAgew0KICAgICAg
ICBjaGFyKiBwdHIgPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KHJhd1B0cik7DQogICAgICAgIGNoYXIq
IGJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihjZWxsKCkpOw0KICAgICAgICByZXR1cm4gcHRy
ID49IGJlZ2luOw0KICAgIH0NCiAgICANCiAgICBib29sIGJlbG93VXBwZXJCb3VuZChjb25zdCB2
b2lkKiByYXdQdHIpDQogICAgew0KICAgICAgICBjaGFyKiBwdHIgPSBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHJhd1B0cik7DQogICAgICAgIGNoYXIqIGJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihj
ZWxsKCkpOw0KICAgICAgICBjaGFyKiBlbmQgPSBiZWdpbiArIGNlbGxTaXplKCk7DQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgc2l6ZV90IHNpemVPZkluZGV4aW5nSGVhZGVyID0gODsNCiAg
ICAgICAgcmV0dXJuIHB0ciA8PSBlbmQgKyBzaXplT2ZJbmRleGluZ0hlYWRlcjsNCiAgICB9DQog
ICAgDQogICAgYm9vbCBjb250YWlucyhjb25zdCB2b2lkKiByYXdQdHIpDQogICAgew0KICAgICAg
ICByZXR1cm4gYWJvdmVMb3dlckJvdW5kKHJhd1B0cikgJiYgYmVsb3dVcHBlckJvdW5kKHJhd1B0
cik7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0IENlbGxBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9DQogICAgDQogICAgRGVwZW5kZW5jeSBhYm91
dFRvTWFyayhIZWFwVmVyc2lvbikgeyByZXR1cm4gRGVwZW5kZW5jeSgpOyB9DQogICAgDQogICAg
X19mb3JjZWlubGluZSBib29sIHRlc3RBbmRTZXRNYXJrZWQoKQ0KICAgIHsNCiAgICAgICAgDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYgKGlzTWFya2VkKCkpDQogICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsNCiAgICAgICAgcmV0dXJuIG1faXNNYXJrZWQuY29tcGFyZUV4Y2hhbmdlU3Ry
b25nKGZhbHNlLCB0cnVlKTsNCiAgICB9DQogICAgX19mb3JjZWlubGluZSBib29sIHRlc3RBbmRT
ZXRNYXJrZWQoSGVhcENlbGwqLCBEZXBlbmRlbmN5KSB7IHJldHVybiB0ZXN0QW5kU2V0TWFya2Vk
KCk7IH0NCiAgICB2b2lkIGNsZWFyTWFya2VkKCkgeyBtX2lzTWFya2VkLnN0b3JlKGZhbHNlKTsg
fQ0KICAgIA0KICAgIHZvaWQgbm90ZU1hcmtlZCgpIHsgfQ0KICAgIA0KDQoNCiNsaW5lIDE0OCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxQ
cmVjaXNlQWxsb2NhdGlvbi5oIg0KICAgIHZvaWQgYXNzZXJ0VmFsaWRDZWxsKFZNJiwgSGVhcENl
bGwqKSBjb25zdCB7IH0NCiNsaW5lIDE1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxQcmVjaXNlQWxsb2NhdGlvbi5oIg0KICAgIA0KICAg
IHZvaWQgc3dlZXAoKTsNCiAgICANCiAgICB2b2lkIGRlc3Ryb3koKTsNCiAgICANCiAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCg0KICAgIGJvb2wgaXNMb3dlclRpZXIoKSBjb25z
dCB7IHJldHVybiBtX2xvd2VyVGllckluZGV4ICE9IDB4ZmZ1aTg7IH0NCiAgICANCiAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGFsaWdubWVudCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsN
CiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGhhbGZBbGlnbm1lbnQgPSBhbGlnbm1lbnQg
LyAyOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaGVhZGVyU2l6ZSgpIHsgcmV0dXJu
ICgoc2l6ZW9mKFByZWNpc2VBbGxvY2F0aW9uKSArIGhhbGZBbGlnbm1lbnQgLSAxKSAmIH4oaGFs
ZkFsaWdubWVudCAtIDEpKSB8IGhhbGZBbGlnbm1lbnQ7IH0NCg0KcHJpdmF0ZToNCiAgICBQcmVj
aXNlQWxsb2NhdGlvbihIZWFwJiwgc2l6ZV90LCBTdWJzcGFjZSosIHVuc2lnbmVkIGluZGV4SW5T
cGFjZSwgYm9vbCBhZGp1c3RlZEFsaWdubWVudCk7DQogICAgDQogICAgdm9pZCogYmFzZVBvaW50
ZXIoKSBjb25zdDsNCiAgICANCiAgICB1bnNpZ25lZCBtX2luZGV4SW5TcGFjZSB7IDAgfTsNCiAg
ICBzaXplX3QgbV9jZWxsU2l6ZTsNCiAgICBib29sIG1faXNOZXdseUFsbG9jYXRlZCA6IDE7DQog
ICAgYm9vbCBtX2hhc1ZhbGlkQ2VsbCA6IDE7DQogICAgYm9vbCBtX2FkanVzdGVkQWxpZ25tZW50
IDogMTsNCiAgICBBdG9taWM8Ym9vbD4gbV9pc01hcmtlZDsNCiAgICBDZWxsQXR0cmlidXRlcyBt
X2F0dHJpYnV0ZXM7DQogICAgdWludDhfdCBtX2xvd2VyVGllckluZGV4IHsgMHhmZnVpOCB9Ow0K
ICAgIFN1YnNwYWNlKiBtX3N1YnNwYWNlOw0KICAgIFdlYWtTZXQgbV93ZWFrU2V0Ow0KfTsNCg0K
aW5saW5lIHZvaWQqIFByZWNpc2VBbGxvY2F0aW9uOjpiYXNlUG9pbnRlcigpIGNvbnN0DQp7DQog
ICAgaWYgKG1fYWRqdXN0ZWRBbGlnbm1lbnQpDQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KHRoaXMpIC0gaGFsZkFsaWdubWVudDsNCiAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZv
aWQqPih0aGlzKTsNCn0NCg0KfSANCg0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkU3BhY2UuaCINCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvQmFnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCnVzaW5nIEJh
Z05vZGVNYWxsb2MgPSBGYXN0TWFsbG9jOw0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
UGFzc2VkUHRyVHJhaXRzID0gRHVtYlB0clRyYWl0czxUPj4NCmNsYXNzIEJhZ05vZGUgew0KICAg
IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJr
aXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgdXNpbmcgUHRyVHJh
aXRzID0gdHlwZW5hbWUgUGFzc2VkUHRyVHJhaXRzOjp0ZW1wbGF0ZSBSZWJpbmRUcmFpdHM8QmFn
Tm9kZT47DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPg0KICAgIEJhZ05vZGUoQXJn
cyYmLi4uIGFyZ3MpDQogICAgICAgIDogbV9pdGVtKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikNCiAgICB7IH0NCiAgICANCiAgICBUIG1faXRlbTsNCiAgICB0eXBlbmFtZSBQdHJUcmFpdHM6
OlN0b3JhZ2VUeXBlIG1fbmV4dCB7IG51bGxwdHIgfTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFBhc3NlZFB0clRyYWl0cyA9IER1bWJQdHJUcmFpdHM8VD4+DQpjbGFzcyBC
YWcgZmluYWwgew0KICAgIEJhZyhjb25zdCBCYWcmKSA9IGRlbGV0ZTsgQmFnJiBvcGVyYXRvcj0o
Y29uc3QgQmFnJikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJl
dHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6
IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7
DQogICAgdXNpbmcgTm9kZSA9IEJhZ05vZGU8VCwgUGFzc2VkUHRyVHJhaXRzPjsNCiAgICB1c2lu
ZyBQdHJUcmFpdHMgPSB0eXBlbmFtZSBQYXNzZWRQdHJUcmFpdHM6OnRlbXBsYXRlIFJlYmluZFRy
YWl0czxOb2RlPjsNCg0KcHVibGljOg0KICAgIEJhZygpID0gZGVmYXVsdDsNCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+DQogICAgQmFnKEJhZzxULCBVPiYmIG90aGVyKQ0KICAgIHsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICBtX2hlYWQgPSBvdGhlci51bndyYXBwZWRIZWFkKCk7DQog
ICAgICAgIG90aGVyLm1faGVhZCA9IG51bGxwdHI7DQogICAgfQ0KDQogICAgfkJhZygpDQogICAg
ew0KICAgICAgICBjbGVhcigpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNsZWFyKCkNCiAgICB7
DQogICAgICAgIE5vZGUqIGhlYWQgPSB0aGlzLT51bndyYXBwZWRIZWFkKCk7DQogICAgICAgIHdo
aWxlIChoZWFkKSB7DQogICAgICAgICAgICBOb2RlKiBjdXJyZW50ID0gaGVhZDsNCiAgICAgICAg
ICAgIGhlYWQgPSBOb2RlOjpQdHJUcmFpdHM6OnVud3JhcChjdXJyZW50LT5tX25leHQpOw0KICAg
ICAgICAgICAgZGVsZXRlIGN1cnJlbnQ7DQogICAgICAgIH0NCiAgICAgICAgbV9oZWFkID0gbnVs
bHB0cjsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4NCiAgICBU
KiBhZGQoQXJncyYmLi4uIGFyZ3MpDQogICAgew0KICAgICAgICBOb2RlKiBuZXdOb2RlID0gbmV3
IE5vZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsNCiAgICAgICAgbmV3Tm9kZS0+bV9u
ZXh0ID0gdW53cmFwcGVkSGVhZCgpOw0KICAgICAgICBtX2hlYWQgPSBuZXdOb2RlOw0KICAgICAg
ICByZXR1cm4gJm5ld05vZGUtPm1faXRlbTsNCiAgICB9DQogICAgDQogICAgY2xhc3MgaXRlcmF0
b3Igew0KICAgICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHAp
IHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0
dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9p
ZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
Tm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247
IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJ
c0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHB1YmxpYzoN
CiAgICAgICAgaXRlcmF0b3IoKQ0KICAgICAgICAgICAgOiBtX25vZGUoMCkNCiAgICAgICAgew0K
ICAgICAgICB9DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV9ub2RlOyB9DQogICAgICAgIA0KICAgICAgICBUKiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiAmbV9ub2RlLT5tX2l0ZW07IH0NCiAgICAgICAgDQogICAgICAgIGl0
ZXJhdG9yJiBvcGVyYXRvcisrKCkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9ub2RlID0gTm9k
ZTo6UHRyVHJhaXRzOjp1bndyYXAobV9ub2RlLT5tX25leHQpOw0KICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4g
bV9ub2RlID09IG90aGVyLm1fbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsNCiAgICAgICAgfQ0KDQogICAgcHJpdmF0ZToNCiAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgV1RGOjpCYWc7
DQogICAgICAgIE5vZGUqIG1fbm9kZTsNCiAgICB9Ow0KICAgIA0KICAgIGl0ZXJhdG9yIGJlZ2lu
KCkNCiAgICB7DQogICAgICAgIGl0ZXJhdG9yIHJlc3VsdDsNCiAgICAgICAgcmVzdWx0Lm1fbm9k
ZSA9IHVud3JhcHBlZEhlYWQoKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQoNCiAg
ICBjb25zdCBpdGVyYXRvciBiZWdpbigpIGNvbnN0DQogICAgew0KICAgICAgICBpdGVyYXRvciBy
ZXN1bHQ7DQogICAgICAgIHJlc3VsdC5tX25vZGUgPSB1bndyYXBwZWRIZWFkKCk7DQogICAgICAg
IHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQoNCiAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJl
dHVybiBpdGVyYXRvcigpOyB9DQogICAgDQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1faGVhZDsgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICBOb2RlKiB1bndyYXBwZWRIZWFkKCkg
Y29uc3QgeyByZXR1cm4gUHRyVHJhaXRzOjp1bndyYXAobV9oZWFkKTsgfQ0KDQogICAgdHlwZW5h
bWUgUHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBtX2hlYWQgeyBudWxscHRyIH07DQp9Ow0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPg0KdXNpbmcgUGFja2VkQmFnID0gQmFnPFQsIFBhY2tlZFB0clRyYWl0
czxUPj47DQoNCn0gDQoNCnVzaW5nIFdURjo6QmFnOw0KdXNpbmcgV1RGOjpQYWNrZWRCYWc7DQoj
bGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxoZWFwXFxNYXJrZWRTcGFjZS5oIg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TaW5nbHlMaW5rZWRMaXN0
V2l0aFRhaWwuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPg0KY2xhc3MgU2luZ2x5TGlua2VkTGlzdFdpdGhUYWlsIHsNCnB1YmxpYzoNCiAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9maXJzdDsgfQ0KICAgIA0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFNldE5leHRGdW5jPg0KICAgIHZvaWQgYXBwZW5kKFNldE5leHRGdW5j
JiYgc2V0TmV4dEZ1bmMsIFQqIG5vZGUpDQogICAgew0KICAgICAgICBpZiAoIW1fZmlyc3QpIHsN
CiAgICAgICAgICAgIGRvIHsgaWYgKCghKCFtX2xhc3QpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxP
clBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZv
KDQyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvU2luZ2x5TGlua2VkTGlzdFdpdGhUYWlsLmgiLCAgX19GVU5DVElPTl9fICAsIDEzICk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgICAgICBtX2ZpcnN0ID0gbm9k
ZTsNCiAgICAgICAgICAgIG1fbGFzdCA9IG5vZGU7DQogICAgICAgICAgICByZXR1cm47DQogICAg
ICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0ZDo6Zm9yd2FyZDxTZXROZXh0RnVuYz4oc2V0TmV4
dEZ1bmMpKG1fbGFzdCwgbm9kZSk7DQogICAgICAgIG1fbGFzdCA9IG5vZGU7DQogICAgfQ0KICAg
IA0KICAgIFQqIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQ0KICAgIFQqIGxhc3Qo
KSBjb25zdCB7IHJldHVybiBtX2xhc3Q7IH0NCiAgICANCnByaXZhdGU6DQogICAgVCogbV9maXJz
dCB7IG51bGxwdHIgfTsNCiAgICBUKiBtX2xhc3QgeyBudWxscHRyIH07DQp9Ow0KDQp9IA0KDQp1
c2luZyBXVEY6OlNpbmdseUxpbmtlZExpc3RXaXRoVGFpbDsNCg0KI2xpbmUgMzYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkU3Bh
Y2UuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQ29tcGxldGVTdWJzcGFjZTsNCmNs
YXNzIEhlYXA7DQpjbGFzcyBIZWFwQ2VsbDsNCmNsYXNzIEhlYXBJdGVyYXRpb25TY29wZTsNCmNs
YXNzIElzb1N1YnNwYWNlOw0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KY2xhc3MgU3Vi
c3BhY2U7DQpjbGFzcyBXZWFrU2V0Ow0KDQp0eXBlZGVmIHVpbnQzMl90IEhlYXBWZXJzaW9uOw0K
DQpjbGFzcyBNYXJrZWRTcGFjZSB7DQogICAgTWFya2VkU3BhY2UoY29uc3QgTWFya2VkU3BhY2Um
KSA9IGRlbGV0ZTsgTWFya2VkU3BhY2UmIG9wZXJhdG9yPShjb25zdCBNYXJrZWRTcGFjZSYpID0g
ZGVsZXRlOzsNCnB1YmxpYzoNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXpl
U3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsNCiAgICANCiAgICANCiAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gODA7DQogICAgDQogICAgDQogICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgYmxvY2tQYXlsb2FkID0gTWFya2VkQmxvY2s6OnBheWxvYWRTaXpl
Ow0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGxhcmdlQ3V0b2ZmID0gKGJsb2NrUGF5bG9hZCAvIDIpICYgfihzaXplU3RlcCAtIDEpOw0K
ICAgIHN0YXRpY19hc3NlcnQobGFyZ2VDdXRvZmYgPD0gMHhmZmZmZmZmZnVpMzIpOw0KDQogICAg
DQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbnVtU2l6ZUNsYXNzZXMgPSBsYXJnZUN1dG9m
ZiAvIHNpemVTdGVwICsgMTsNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIEhlYXBWZXJzaW9u
IG51bGxWZXJzaW9uID0gMDsgDQogICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwVmVyc2lvbiBpbml0
aWFsVmVyc2lvbiA9IDI7IA0KICAgIA0KICAgIHN0YXRpYyBIZWFwVmVyc2lvbiBuZXh0VmVyc2lv
bihIZWFwVmVyc2lvbiB2ZXJzaW9uKQ0KICAgIHsNCiAgICAgICAgdmVyc2lvbisrOw0KICAgICAg
ICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikNCiAgICAgICAgICAgIHZlcnNpb24gPSBpbml0
aWFsVmVyc2lvbjsNCiAgICAgICAgcmV0dXJuIHZlcnNpb247DQogICAgfQ0KICAgIA0KICAgIHN0
YXRpYyBzaXplX3Qgc2l6ZUNsYXNzVG9JbmRleChzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAg
IHJldHVybiAoc2l6ZSArIHNpemVTdGVwIC0gMSkgLyBzaXplU3RlcDsNCiAgICB9DQogICAgDQog
ICAgc3RhdGljIHNpemVfdCBpbmRleFRvU2l6ZUNsYXNzKHNpemVfdCBpbmRleCkNCiAgICB7DQog
ICAgICAgIHNpemVfdCByZXN1bHQgPSBpbmRleCAqIHNpemVTdGVwOw0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIE1hcmtlZFNwYWNl
KEhlYXAqKTsNCiAgICB+TWFya2VkU3BhY2UoKTsNCiAgICANCiAgICBIZWFwJiBoZWFwKCkgY29u
c3Q7DQogICAgDQogICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOyANCiAgICB2b2lkIGZy
ZWVNZW1vcnkoKTsNCg0KICAgIHN0YXRpYyBzaXplX3Qgb3B0aW1hbFNpemVGb3Ioc2l6ZV90KTsN
CiAgICANCiAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7DQoNCiAgICB2b2lkIHZpc2l0
V2Vha1NldHMoU2xvdFZpc2l0b3ImKTsNCiAgICB2b2lkIHJlYXBXZWFrU2V0cygpOw0KDQogICAg
TWFya2VkQmxvY2tTZXQmIGJsb2NrcygpIHsgcmV0dXJuIG1fYmxvY2tzOyB9DQoNCiAgICB2b2lk
IHdpbGxTdGFydEl0ZXJhdGluZygpOw0KICAgIGJvb2wgaXNJdGVyYXRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2lzSXRlcmF0aW5nOyB9DQogICAgdm9pZCBkaWRGaW5pc2hJdGVyYXRpbmcoKTsNCg0K
ICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoKTsNCiAgICB2b2lkIHN0b3BBbGxvY2F0aW5nRm9yR29v
ZCgpOw0KICAgIHZvaWQgcmVzdW1lQWxsb2NhdGluZygpOyANCiAgICANCiAgICB2b2lkIHByZXBh
cmVGb3JNYXJraW5nKCk7DQogICAgDQogICAgdm9pZCBwcmVwYXJlRm9yQ29uc2VydmF0aXZlU2Nh
bigpOw0KDQogICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2Nr
SXRlcmF0b3I7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hM
aXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7DQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNj
b3BlJiwgY29uc3QgRnVuY3RvciYpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJik7DQoNCiAgICB2b2lk
IHNocmluaygpOw0KICAgIHZvaWQgZnJlZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsNCiAg
ICB2b2lkIGZyZWVPclNocmlua0Jsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsNCg0KICAgIHZv
aWQgZGlkQWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSopOw0KICAgIHZvaWQgZGlkQ29uc3Vt
ZUZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsNCiAgICB2b2lkIGRpZEFsbG9jYXRlSW5C
bG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKik7DQoNCiAgICB2b2lkIGJlZ2luTWFya2luZygpOw0K
ICAgIHZvaWQgZW5kTWFya2luZygpOw0KICAgIHZvaWQgc25hcHNob3RVbnN3ZXB0KCk7DQogICAg
dm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7DQogICAgdm9pZCBzd2VlcEJsb2NrcygpOw0KICAg
IHZvaWQgc3dlZXBQcmVjaXNlQWxsb2NhdGlvbnMoKTsNCiAgICB2b2lkIGFzc2VydE5vVW5zd2Vw
dCgpOw0KICAgIHNpemVfdCBvYmplY3RDb3VudCgpOw0KICAgIHNpemVfdCBzaXplKCk7DQogICAg
c2l6ZV90IGNhcGFjaXR5KCk7DQoNCiAgICBib29sIGlzUGFnZWRPdXQoTW9ub3RvbmljVGltZSBk
ZWFkbGluZSk7DQogICAgDQogICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBjb25zdCB7
IHJldHVybiBtX21hcmtpbmdWZXJzaW9uOyB9DQogICAgSGVhcFZlcnNpb24gbmV3bHlBbGxvY2F0
ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdseUFsbG9jYXRlZFZlcnNpb247IH0NCg0K
ICAgIGNvbnN0IFZlY3RvcjxQcmVjaXNlQWxsb2NhdGlvbio+JiBwcmVjaXNlQWxsb2NhdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX3ByZWNpc2VBbGxvY2F0aW9uczsgfQ0KICAgIHVuc2lnbmVkIHBy
ZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3ByZWNpc2VB
bGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0NCiAgICB1bnNpZ25lZCBwcmVjaXNlQWxsb2NhdGlv
bnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJlY2lzZUFsbG9j
YXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IH0NCiAgICBIYXNoU2V0PEhlYXBDZWxsKj4q
IHByZWNpc2VBbGxvY2F0aW9uU2V0KCkgY29uc3QgeyByZXR1cm4gbV9wcmVjaXNlQWxsb2NhdGlv
blNldC5nZXQoKTsgfQ0KDQogICAgdm9pZCBlbmFibGVQcmVjaXNlQWxsb2NhdGlvblRyYWNraW5n
KCk7DQogICAgDQogICAgDQogICAgDQogICAgUHJlY2lzZUFsbG9jYXRpb24qKiBwcmVjaXNlQWxs
b2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9wcmVjaXNl
QWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkJlZ2luOyB9DQogICAgUHJlY2lzZUFsbG9jYXRp
b24qKiBwcmVjaXNlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlY2lzZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQ7IH0NCiAgICB1bnNp
Z25lZCBwcmVjaXNlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvblNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3ByZWNpc2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZTsgfQ0KICAgIA0K
ICAgIEJsb2NrRGlyZWN0b3J5KiBmaXJzdERpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGly
ZWN0b3JpZXMuZmlyc3QoKTsgfQ0KICAgIA0KICAgIExvY2smIGRpcmVjdG9yeUxvY2soKSB7IHJl
dHVybiBtX2RpcmVjdG9yeUxvY2s7IH0NCiAgICB2b2lkIGFkZEJsb2NrRGlyZWN0b3J5KGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgQmxvY2tEaXJlY3RvcnkqKTsNCiAgICANCiAgICANCiAgICBib29s
IGlzTWFya2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXJraW5nOyB9DQogICAgDQogICAgdm9p
ZCBkdW1wQml0cyhQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCkpOw0KICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgc3RkOjphcnJheTx1bnNpZ25lZCwgbnVtU2l6ZUNs
YXNzZXM+IHNfc2l6ZUNsYXNzRm9yU2l6ZVN0ZXA7DQogICAgDQpwcml2YXRlOg0KICAgIGZyaWVu
ZCBjbGFzcyBDb21wbGV0ZVN1YnNwYWNlOw0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7DQogICAgZnJpZW5kIGNsYXNzIEpJVDsNCiAgICBmcmllbmQgY2xhc3MgV2Vha1Nl
dDsNCiAgICBmcmllbmQgY2xhc3MgU3Vic3BhY2U7DQogICAgZnJpZW5kIGNsYXNzIElzb1N1YnNw
YWNlOw0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsNCg0KICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpOw0KICAgIA0KICAgIHZvaWQgaW5pdGlhbGl6
ZVN1YnNwYWNlKFN1YnNwYWNlJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IEZ1bmN0b3ImKTsNCiAgICANCiAgICB2
b2lkIGFkZEFjdGl2ZVdlYWtTZXQoV2Vha1NldCopOw0KDQogICAgVmVjdG9yPFN1YnNwYWNlKj4g
bV9zdWJzcGFjZXM7DQoNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxIZWFwQ2VsbCo+PiBt
X3ByZWNpc2VBbGxvY2F0aW9uU2V0Ow0KICAgIFZlY3RvcjxQcmVjaXNlQWxsb2NhdGlvbio+IG1f
cHJlY2lzZUFsbG9jYXRpb25zOw0KICAgIHVuc2lnbmVkIG1fcHJlY2lzZUFsbG9jYXRpb25zTnVy
c2VyeU9mZnNldCB7IDAgfTsNCiAgICB1bnNpZ25lZCBtX3ByZWNpc2VBbGxvY2F0aW9uc09mZnNl
dEZvclRoaXNDb2xsZWN0aW9uIHsgMCB9Ow0KICAgIHVuc2lnbmVkIG1fcHJlY2lzZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldEZvclN3ZWVwIHsgMCB9Ow0KICAgIHVuc2lnbmVkIG1fcHJlY2lzZUFs
bG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25TaXplIHsgMCB9Ow0KICAgIFByZWNpc2VBbGxvY2F0
aW9uKiogbV9wcmVjaXNlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkJlZ2luIHsgbnVsbHB0
ciB9Ow0KICAgIFByZWNpc2VBbGxvY2F0aW9uKiogbV9wcmVjaXNlQWxsb2NhdGlvbnNGb3JUaGlz
Q29sbGVjdGlvbkVuZCB7IG51bGxwdHIgfTsNCg0KICAgIHNpemVfdCBtX2NhcGFjaXR5IHsgMCB9
Ow0KICAgIEhlYXBWZXJzaW9uIG1fbWFya2luZ1ZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9Ow0K
ICAgIEhlYXBWZXJzaW9uIG1fbmV3bHlBbGxvY2F0ZWRWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24g
fTsNCiAgICBib29sIG1faXNJdGVyYXRpbmcgeyBmYWxzZSB9Ow0KICAgIGJvb2wgbV9pc01hcmtp
bmcgeyBmYWxzZSB9Ow0KICAgIExvY2sgbV9kaXJlY3RvcnlMb2NrOw0KICAgIE1hcmtlZEJsb2Nr
U2V0IG1fYmxvY2tzOw0KICAgIA0KICAgIFNlbnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4gbV9hY3RpdmVXZWFrU2V0czsNCiAgICBTZW50aW5l
bExpbmtlZExpc3Q8V2Vha1NldCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2Vha1NldD4+IG1fbmV3
QWN0aXZlV2Vha1NldHM7DQoNCiAgICBTaW5nbHlMaW5rZWRMaXN0V2l0aFRhaWw8QmxvY2tEaXJl
Y3Rvcnk+IG1fZGlyZWN0b3JpZXM7DQoNCiAgICBmcmllbmQgY2xhc3MgSGVhcFZlcmlmaWVyOw0K
fTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNl
Ojpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikNCnsNCiAgICBmb3JFYWNoRGly
ZWN0b3J5KA0KICAgICAgICBbJl0gKEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7DQogICAgICAgICAgICBkaXJlY3RvcnkuZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
Ow0KICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7DQogICAgICAg
IH0pOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4NCnZvaWQgTWFya2VkU3BhY2U6
OmZvckVhY2hEaXJlY3RvcnkoY29uc3QgRnVuY3RvciYgZnVuY3RvcikNCnsNCiAgICBmb3IgKEJs
b2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSBtX2RpcmVjdG9yaWVzLmZpcnN0KCk7IGRpcmVjdG9y
eTsgZGlyZWN0b3J5ID0gZGlyZWN0b3J5LT5uZXh0RGlyZWN0b3J5KCkpIHsNCiAgICAgICAgaWYg
KGZ1bmN0b3IoKmRpcmVjdG9yeSkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQ0KICAgICAgICAg
ICAgcmV0dXJuOw0KICAgIH0NCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4NCnZvaWQg
TWFya2VkU3BhY2U6OmZvckVhY2hTdWJzcGFjZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQ0Kew0K
ICAgIGZvciAoYXV0byBzdWJzcGFjZSA6IG1fc3Vic3BhY2VzKSB7DQogICAgICAgIGlmIChmdW5j
dG9yKCpzdWJzcGFjZSkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQ0KICAgICAgICAgICAgcmV0
dXJuOw0KICAgIH0NCn0NCg0KDQpfX2ZvcmNlaW5saW5lIHNpemVfdCBNYXJrZWRTcGFjZTo6b3B0
aW1hbFNpemVGb3Ioc2l6ZV90IGJ5dGVzKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICBpZiAoYnl0
ZXMgPD0gcHJlY2lzZUN1dG9mZikNCiAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxzaXplU3RlcD4oYnl0ZXMpOw0KICAgIGlmIChieXRlcyA8PSBsYXJnZUN1dG9mZikNCiAg
ICAgICAgcmV0dXJuIHNfc2l6ZUNsYXNzRm9yU2l6ZVN0ZXBbc2l6ZUNsYXNzVG9JbmRleChieXRl
cyldOw0KICAgIHJldHVybiBieXRlczsNCn0NCg0KfSANCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFN1YnNwYWNlLmgiDQoN
Cg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I7DQpjbGFz
cyBIZWFwQ2VsbFR5cGU7DQoNCg0KDQoNCmNsYXNzIFN1YnNwYWNlIHsNCiAgICBTdWJzcGFjZShj
b25zdCBTdWJzcGFjZSYpID0gZGVsZXRlOyBTdWJzcGFjZSYgb3BlcmF0b3I9KGNvbnN0IFN1YnNw
YWNlJikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBs
b2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5n
IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJs
aWM6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFN1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVh
cCYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2aXJ0dWFsIH5TdWJzcGFjZSgpOw0KDQog
ICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5kYXRhKCk7IH0NCiAg
ICBNYXJrZWRTcGFjZSYgc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9DQogICAgDQog
ICAgY29uc3QgQ2VsbEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsNCiAgICBIZWFwQ2Vs
bFR5cGUqIGhlYXBDZWxsVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcENlbGxUeXBlOyB9DQog
ICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciogYWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsgfQ0KICAgIA0KICAgIHZvaWQgZmlu
aXNoU3dlZXAoTWFya2VkQmxvY2s6OkhhbmRsZSYsIEZyZWVMaXN0Kik7DQogICAgdm9pZCBkZXN0
cm95KFZNJiwgSlNDZWxsKik7DQoNCiAgICB2aXJ0dWFsIEFsbG9jYXRvciBhbGxvY2F0b3JGb3Io
c2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKSA9IDA7DQogICAgdmlydHVhbCB2b2lkKiBhbGxvY2F0
ZShWTSYsIHNpemVfdCwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUp
ID0gMDsNCiAgICANCiAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7DQogICAgDQogICAg
dm9pZCBkaWRDcmVhdGVGaXJzdERpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5KSB7
IG1fZGlyZWN0b3J5Rm9yRW1wdHlBbGxvY2F0aW9uID0gZGlyZWN0b3J5OyB9DQogICAgDQogICAg
DQogICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCk7DQogICAg
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAgICB2b2lkIGZvckVhY2hEaXJlY3Rvcnko
Y29uc3QgRnVuYyYpOw0KICAgIA0KICAgIFJlZjxTaGFyZWRUYXNrPEJsb2NrRGlyZWN0b3J5Kigp
Pj4gcGFyYWxsZWxEaXJlY3RvcnlTb3VyY2UoKTsNCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPg0KICAgIHZvaWQgZm9yRWFjaE1hcmtlZEJsb2NrKGNvbnN0IEZ1bmMmKTsNCiAgICAN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KICAgIHZvaWQgZm9yRWFjaE5vdEVtcHR5TWFy
a2VkQmxvY2soY29uc3QgRnVuYyYpOw0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBS
ZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gcGFyYWxsZWxOb3RFbXB0eU1h
cmtlZEJsb2NrU291cmNlKCk7DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAg
ICB2b2lkIGZvckVhY2hQcmVjaXNlQWxsb2NhdGlvbihjb25zdCBGdW5jJik7DQogICAgDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAgICB2b2lkIGZvckVhY2hNYXJrZWRDZWxsKGNvbnN0
IEZ1bmMmKTsNCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KICAgIFJlZjxTaGFy
ZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZvckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChj
b25zdCBGdW5jJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KICAgIHZvaWQgZm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmMmKTsNCiAgICANCiAgICB2b2lkIHN3ZWVwQmxvY2tzKCk7
DQogICAgDQogICAgU3Vic3BhY2UqIG5leHRTdWJzcGFjZUluQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFN1YnNwYWNlSW5BbGlnbmVkTWVtb3J5QWxsb2NhdG9y
OyB9DQogICAgdm9pZCBzZXROZXh0U3Vic3BhY2VJbkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoU3Vi
c3BhY2UqIHN1YnNwYWNlKSB7IG1fbmV4dFN1YnNwYWNlSW5BbGlnbmVkTWVtb3J5QWxsb2NhdG9y
ID0gc3Vic3BhY2U7IH0NCiAgICANCiAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplQml0cyh1bnNp
Z25lZCBuZXdTaXplKTsNCiAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQmxvY2sodW5zaWduZWQg
YmxvY2tJbmRleCk7DQogICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0
KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsNCg0KICAgIGJvb2wgaXNJc29TdWJzcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNJc29TdWJzcGFjZTsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgdm9pZCBpbml0
aWFsaXplKEhlYXBDZWxsVHlwZSosIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsNCiAgICANCiAg
ICBNYXJrZWRTcGFjZSYgbV9zcGFjZTsNCiAgICANCiAgICBIZWFwQ2VsbFR5cGUqIG1faGVhcENl
bGxUeXBlIHsgbnVsbHB0ciB9Ow0KICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIG1fYWxpZ25l
ZE1lbW9yeUFsbG9jYXRvciB7IG51bGxwdHIgfTsNCiAgICANCiAgICBCbG9ja0RpcmVjdG9yeSog
bV9maXJzdERpcmVjdG9yeSB7IG51bGxwdHIgfTsNCiAgICBCbG9ja0RpcmVjdG9yeSogbV9kaXJl
Y3RvcnlGb3JFbXB0eUFsbG9jYXRpb24geyBudWxscHRyIH07IA0KICAgIFNlbnRpbmVsTGlua2Vk
TGlzdDxQcmVjaXNlQWxsb2NhdGlvbiwgUGFja2VkUmF3U2VudGluZWxOb2RlPFByZWNpc2VBbGxv
Y2F0aW9uPj4gbV9wcmVjaXNlQWxsb2NhdGlvbnM7DQogICAgU3Vic3BhY2UqIG1fbmV4dFN1YnNw
YWNlSW5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsgbnVsbHB0ciB9Ow0KDQogICAgQ1N0cmluZyBt
X25hbWU7DQoNCiAgICBib29sIG1faXNJc29TdWJzcGFjZSB7IGZhbHNlIH07DQpwcm90ZWN0ZWQ6
DQogICAgdWludDhfdCBtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCB7IDAgfTsNCn07DQoN
Cn0gDQoNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGhlYXBcXENvbXBsZXRlU3Vic3BhY2UuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoN
CmNsYXNzIENvbXBsZXRlU3Vic3BhY2UgZmluYWwgOiBwdWJsaWMgU3Vic3BhY2Ugew0KcHVibGlj
Og0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBDb21wbGV0ZVN1YnNwYWNlKENTdHJpbmcgbmFt
ZSwgSGVhcCYsIEhlYXBDZWxsVHlwZSosIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgfkNvbXBsZXRlU3Vic3BhY2UoKSBmaW5hbDsNCg0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIEFsbG9jYXRvciBhbGxvY2F0b3JGb3Ioc2l6ZV90
LCBBbGxvY2F0b3JGb3JNb2RlKSBmaW5hbDsNCiAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yTm9u
VmlydHVhbChzaXplX3QsIEFsbG9jYXRvckZvck1vZGUpOw0KICAgIA0KICAgIHZvaWQqIGFsbG9j
YXRlKFZNJiwgc2l6ZV90LCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSkgZmluYWw7DQogICAgdm9pZCogYWxsb2NhdGVOb25WaXJ0dWFsKFZNJiwgc2l6ZV90LCBHQ0Rl
ZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7DQogICAgdm9pZCogcmVhbGxv
Y2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbChWTSYsIEhlYXBDZWxsKiwgc2l6ZV90LCBH
Q0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7DQogICAgDQogICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvckZvclNpemVTdGVwKCkgeyByZXR1cm4gKHJl
aW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Q29tcGxldGVTdWJz
cGFjZSo+KDB4NDAwMCktPm1fYWxsb2NhdG9yRm9yU2l6ZVN0ZXApKSAtIDB4NDAwMCk7IH0NCiAg
ICANCiAgICBBbGxvY2F0b3IqIGFsbG9jYXRvckZvclNpemVTdGVwKCkgeyByZXR1cm4gJm1fYWxs
b2NhdG9yRm9yU2l6ZVN0ZXBbMF07IH0NCg0KcHJpdmF0ZToNCiAgICBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgQWxsb2NhdG9yIGFsbG9jYXRvckZvclNsb3coc2l6ZV90KTsNCiAgICANCiAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCogYWxsb2NhdGVTbG93KFZNJiwgc2l6ZV90LCBH
Q0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7DQogICAgdm9pZCogdHJ5
QWxsb2NhdGVTbG93KFZNJiwgc2l6ZV90LCBHQ0RlZmVycmFsQ29udGV4dCopOw0KICAgIA0KICAg
IHN0ZDo6YXJyYXk8QWxsb2NhdG9yLCBNYXJrZWRTcGFjZTo6bnVtU2l6ZUNsYXNzZXM+IG1fYWxs
b2NhdG9yRm9yU2l6ZVN0ZXA7DQogICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVj
dG9yeT4+IG1fZGlyZWN0b3JpZXM7DQogICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFs
bG9jYXRvcj4+IG1fbG9jYWxBbGxvY2F0b3JzOw0KfTsNCg0KX19mb3JjZWlubGluZSBBbGxvY2F0
b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplX3Qgc2l6ZSwg
QWxsb2NhdG9yRm9yTW9kZSBtb2RlKQ0Kew0KICAgIGlmIChzaXplIDw9IE1hcmtlZFNwYWNlOjps
YXJnZUN1dG9mZikgew0KICAgICAgICBBbGxvY2F0b3IgcmVzdWx0ID0gbV9hbGxvY2F0b3JGb3JT
aXplU3RlcFtNYXJrZWRTcGFjZTo6c2l6ZUNsYXNzVG9JbmRleChzaXplKV07DQogICAgICAgIHN3
aXRjaCAobW9kZSkgew0KICAgICAgICBjYXNlIEFsbG9jYXRvckZvck1vZGU6Ok11c3RBbHJlYWR5
SGF2ZUFsbG9jYXRvcjoNCiAgICAgICAgICAgIGRvIHsgaWYgKCghKHJlc3VsdCkpKSBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oNzEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGhlYXBcXENvbXBsZXRlU3Vic3BhY2UuaCIsICBfX0ZVTkNUSU9OX18gICwg
MTQgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICBjYXNlIEFsbG9jYXRvckZvck1vZGU6OkVuc3VyZUFsbG9jYXRvcjoNCiAgICAgICAg
ICAgIGlmICghcmVzdWx0KQ0KICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3JGb3JTbG93
KHNpemUpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgQWxsb2NhdG9yRm9yTW9k
ZTo6QWxsb2NhdG9ySWZFeGlzdHM6DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAg
ICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICBkbyB7IGlmICgoIShtb2RlICE9IEFsbG9j
YXRvckZvck1vZGU6Ok11c3RBbHJlYWR5SGF2ZUFsbG9jYXRvcikpKSBkbyB7IFdURjo6aXNJbnRl
Z3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0
aEluZm8oODIsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGhlYXBcXENvbXBsZXRlU3Vic3BhY2UuaCIsICBfX0ZVTkNUSU9OX18gICwgMTUgKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICByZXR1cm4gQWxsb2NhdG9yKCk7DQp9DQoN
Cn0gDQoNCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXENvbmN1cnJlbnRKU0xvY2suaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcRGVmZXJHQy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxEaXNhbGxv
d1Njb3BlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdGVtcGxhdGU8Y2xh
c3MgVD4NCmNsYXNzIERpc2FsbG93U2NvcGUgew0KICAgIERpc2FsbG93U2NvcGUoY29uc3QgRGlz
YWxsb3dTY29wZSYpID0gZGVsZXRlOyBEaXNhbGxvd1Njb3BlJiBvcGVyYXRvcj0oY29uc3QgRGlz
YWxsb3dTY29wZSYpID0gZGVsZXRlOzsNCiAgICBwcml2YXRlOiB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9p
ZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsgdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgPSBkZWxldGU7IHR5cGVkZWYgaW50
IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVhcEFsbG9jYXRp
b25NYWNybzsNCnB1YmxpYzoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcRGlzYWxsb3dTY29wZS5oIg0KICAgIF9fZm9yY2VpbmxpbmUgRGlzYWxsb3dT
Y29wZSgpIHsgfSANCiAgICBfX2ZvcmNlaW5saW5lIHN0YXRpYyBib29sIGlzSW5FZmZlY3RPbkN1
cnJlbnRUaHJlYWQoKSB7IHJldHVybiBmYWxzZTsgfQ0KI2xpbmUgNjEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRGlzYWxsb3dTY29w
ZS5oIg0KfTsNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXERlZmVyR0MuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcQXJyYXlCdWZmZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQXJyYXlCdWZmZXJT
aGFyaW5nTW9kZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xh
c3MgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSB7DQogICAgRGVmYXVsdCwNCiAgICBTaGFyZWQNCn07
DQoNCmlubGluZSBBU0NJSUxpdGVyYWwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkNCnsNCiAgICBzd2l0Y2ggKHNoYXJpbmdNb2Rl
KSB7DQogICAgY2FzZSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0Og0KICAgICAgICBy
ZXR1cm4gIkFycmF5QnVmZmVyIl9zOw0KICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6
U2hhcmVkOg0KICAgICAgICByZXR1cm4gIlNoYXJlZEFycmF5QnVmZmVyIl9zOw0KICAgIH0NCiAg
ICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNy
YXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDYsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEFycmF5QnVmZmVyU2hhcmluZ01vZGUuaCIs
ICBfX0ZVTkNUSU9OX18gICwgMTYgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsNCn0NCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCmlubGluZSB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlIG1vZGUpDQp7DQogICAgb3V0LnByaW50KEpTQzo6YXJyYXlCdWZmZXJTaGFyaW5nTW9k
ZU5hbWUobW9kZSkpOw0KfQ0KDQp9IA0KDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxBcnJheUJ1ZmZlci5oIg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxo
ZWFwXFxHQ0luY29taW5nUmVmQ291bnRlZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRGVmZXJyYWJs
ZVJlZkNvdW50ZWQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoN
Cg0KDQoNCmNsYXNzIERlZmVycmFibGVSZWZDb3VudGVkQmFzZSB7DQogICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBkZWZlcnJlZEZsYWcgPSAxOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbm9ybWFsSW5jcmVtZW50ID0gMjsNCg0KcHVibGljOg0KICAgIHZvaWQgcmVmKCkgY29u
c3QNCiAgICB7DQogICAgICAgIG1fcmVmQ291bnQgKz0gbm9ybWFsSW5jcmVtZW50Ow0KICAgIH0N
Cg0KICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiByZWZD
b3VudCgpID09IDE7DQogICAgfQ0KDQogICAgdW5zaWduZWQgcmVmQ291bnQoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgLyBub3JtYWxJbmNyZW1lbnQ7DQogICAgfQ0K
DQogICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAhISht
X3JlZkNvdW50ICYgZGVmZXJyZWRGbGFnKTsNCiAgICB9DQoNCnByb3RlY3RlZDoNCiAgICBEZWZl
cnJhYmxlUmVmQ291bnRlZEJhc2UoKQ0KICAgICAgICA6IG1fcmVmQ291bnQobm9ybWFsSW5jcmVt
ZW50KQ0KICAgIHsNCiAgICB9DQoNCiAgICB+RGVmZXJyYWJsZVJlZkNvdW50ZWRCYXNlKCkNCiAg
ICB7DQogICAgfQ0KDQogICAgYm9vbCBkZXJlZkJhc2UoKSBjb25zdA0KICAgIHsNCiAgICAgICAg
bV9yZWZDb3VudCAtPSBub3JtYWxJbmNyZW1lbnQ7DQogICAgICAgIHJldHVybiAhbV9yZWZDb3Vu
dDsNCiAgICB9DQoNCiAgICBib29sIHNldElzRGVmZXJyZWRCYXNlKGJvb2wgdmFsdWUpDQogICAg
ew0KICAgICAgICBpZiAodmFsdWUpIHsNCiAgICAgICAgICAgIG1fcmVmQ291bnQgfD0gZGVmZXJy
ZWRGbGFnOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIG1f
cmVmQ291bnQgJj0gfmRlZmVycmVkRmxhZzsNCiAgICAgICAgcmV0dXJuICFtX3JlZkNvdW50Ow0K
ICAgIH0NCg0KcHJpdmF0ZToNCiAgICBtdXRhYmxlIHVuc2lnbmVkIG1fcmVmQ291bnQ7DQp9Ow0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KY2xhc3MgRGVmZXJyYWJsZVJlZkNvdW50ZWQgOiBwdWJs
aWMgRGVmZXJyYWJsZVJlZkNvdW50ZWRCYXNlIHsNCiAgICBEZWZlcnJhYmxlUmVmQ291bnRlZChj
b25zdCBEZWZlcnJhYmxlUmVmQ291bnRlZCYpID0gZGVsZXRlOyBEZWZlcnJhYmxlUmVmQ291bnRl
ZCYgb3BlcmF0b3I9KGNvbnN0IERlZmVycmFibGVSZWZDb3VudGVkJikgPSBkZWxldGU7OyBwdWJs
aWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCog
bG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFz
dE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWlj
b2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHZvaWQgZGVyZWYoKSBjb25z
dA0KICAgIHsNCiAgICAgICAgaWYgKGRlcmVmQmFzZSgpKQ0KICAgICAgICAgICAgZGVsZXRlIHN0
YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKTsNCiAgICB9DQoNCiAgICBib29sIHNldElzRGVmZXJy
ZWQoYm9vbCB2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmICghc2V0SXNEZWZlcnJlZEJhc2UodmFs
dWUpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBkZWxldGUgc3RhdGljX2Nh
c3Q8VCo+KHRoaXMpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCnByb3RlY3RlZDoN
CiAgICBEZWZlcnJhYmxlUmVmQ291bnRlZCgpIHsgfQ0KICAgIH5EZWZlcnJhYmxlUmVmQ291bnRl
ZCgpIHsgfQ0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpEZWZlcnJhYmxlUmVmQ291bnRlZDsNCiNs
aW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGhlYXBcXEdDSW5jb21pbmdSZWZDb3VudGVkLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNs
YXNzIEpTQ2VsbDsNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmNsYXNzIEdD
SW5jb21pbmdSZWZDb3VudGVkIDogcHVibGljIERlZmVycmFibGVSZWZDb3VudGVkPFQ+IHsNCnB1
YmxpYzoNCiAgICBHQ0luY29taW5nUmVmQ291bnRlZCgpDQogICAgICAgIDogbV9lbmNvZGVkUG9p
bnRlcigwKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgfkdDSW5jb21pbmdSZWZDb3VudGVkKCkN
CiAgICB7DQogICAgICAgIGlmIChoYXNWZWN0b3JPZkNlbGxzKCkpDQogICAgICAgICAgICBkZWxl
dGUgdmVjdG9yT2ZDZWxscygpOw0KICAgIH0NCiAgICANCiAgICBzaXplX3QgbnVtYmVyT2ZJbmNv
bWluZ1JlZmVyZW5jZXMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFoYXNBbnlJbmNvbWlu
ZygpKQ0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIGlmIChoYXNTaW5nbGV0b24oKSkN
CiAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICByZXR1cm4gdmVjdG9yT2ZDZWxscygpLT5z
aXplKCk7DQogICAgfQ0KICAgIA0KICAgIEpTQ2VsbCogaW5jb21pbmdSZWZlcmVuY2VBdChzaXpl
X3QgaW5kZXgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmICho
YXNTaW5nbGV0b24oKSkgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0
dXJuIHNpbmdsZXRvbigpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB2ZWN0b3JPZkNlbGxz
KCktPmF0KGluZGV4KTsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgYm9vbCBh
ZGRJbmNvbWluZ1JlZmVyZW5jZShKU0NlbGwqKTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXJGdW5jdGlvblR5cGU+DQogICAg
Ym9vbCBmaWx0ZXJJbmNvbWluZ1JlZmVyZW5jZXMoRmlsdGVyRnVuY3Rpb25UeXBlJiYpOw0KICAg
IA0KcHJpdmF0ZToNCiAgICBzdGF0aWMgdWludHB0cl90IHNpbmdsZXRvbkZsYWcoKSB7IHJldHVy
biAxOyB9DQogICAgDQogICAgYm9vbCBoYXNWZWN0b3JPZkNlbGxzKCkgY29uc3QgeyByZXR1cm4g
IShtX2VuY29kZWRQb2ludGVyICYgc2luZ2xldG9uRmxhZygpKTsgfQ0KICAgIGJvb2wgaGFzQW55
SW5jb21pbmcoKSBjb25zdCB7IHJldHVybiAhIW1fZW5jb2RlZFBvaW50ZXI7IH0NCiAgICBib29s
IGhhc1NpbmdsZXRvbigpIGNvbnN0IHsgcmV0dXJuIGhhc0FueUluY29taW5nKCkgJiYgIWhhc1Zl
Y3Rvck9mQ2VsbHMoKTsgfQ0KICAgIA0KICAgIEpTQ2VsbCogc2luZ2xldG9uKCkgY29uc3QNCiAg
ICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0Nl
bGwqPihtX2VuY29kZWRQb2ludGVyICYgfnNpbmdsZXRvbkZsYWcoKSk7DQogICAgfQ0KICAgIA0K
ICAgIFZlY3RvcjxKU0NlbGwqPiogdmVjdG9yT2ZDZWxscygpIGNvbnN0DQogICAgew0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VmVjdG9yPEpTQ2VsbCo+
Kj4obV9lbmNvZGVkUG9pbnRlcik7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIHVpbnRw
dHJfdCBtX2VuY29kZWRQb2ludGVyOw0KfTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEFycmF5QnVmZmVy
LmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxXYXRjaHBvaW50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvU2NvcGVkTGFtYmRhLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4gY2xhc3Mg
U2NvcGVkTGFtYmRhOw0KdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4g
QXJndW1lbnRUeXBlcz4NCmNsYXNzIFNjb3BlZExhbWJkYTxSZXN1bHRUeXBlIChBcmd1bWVudFR5
cGVzLi4uKT4gew0KICAgIHByaXZhdGU6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51
bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSA9IGRlbGV0ZTsgdHlwZWRlZiBpbnQgX190aGlzSXNIZXJl
VG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNGb3JiaWRIZWFwQWxsb2NhdGlvbk1hY3JvOw0KcHVi
bGljOg0KICAgIFNjb3BlZExhbWJkYShSZXN1bHRUeXBlICgqaW1wbCkodm9pZCogYXJnLCBBcmd1
bWVudFR5cGVzLi4uKSA9IG51bGxwdHIsIHZvaWQqIGFyZyA9IG51bGxwdHIpDQogICAgICAgIDog
bV9pbXBsKGltcGwpDQogICAgICAgICwgbV9hcmcoYXJnKQ0KICAgIHsNCiAgICB9DQoNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXNzZWRBcmd1bWVudFR5cGVzPg0KICAgIFJlc3VsdFR5cGUg
b3BlcmF0b3IoKShQYXNzZWRBcmd1bWVudFR5cGVzJiYuLi4gYXJndW1lbnRzKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIG1faW1wbChtX2FyZywgc3RkOjpmb3J3YXJkPFBhc3NlZEFyZ3Vt
ZW50VHlwZXM+KGFyZ3VtZW50cykuLi4pOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBSZXN1bHRU
eXBlICgqbV9pbXBsKSh2b2lkKiBhcmcsIEFyZ3VtZW50VHlwZXMuLi4pOw0KICAgIHZvaWQgKm1f
YXJnOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBGdW5j
dG9yPiBjbGFzcyBTY29wZWRMYW1iZGFGdW5jdG9yOw0KdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0
VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcywgdHlwZW5hbWUgRnVuY3Rvcj4NCmNsYXNz
IFNjb3BlZExhbWJkYUZ1bmN0b3I8UmVzdWx0VHlwZSAoQXJndW1lbnRUeXBlcy4uLiksIEZ1bmN0
b3I+IDogcHVibGljIFNjb3BlZExhbWJkYTxSZXN1bHRUeXBlIChBcmd1bWVudFR5cGVzLi4uKT4g
ew0KcHVibGljOg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhc3NlZEZ1bmN0b3I+DQogICAgU2Nv
cGVkTGFtYmRhRnVuY3RvcihQYXNzZWRGdW5jdG9yJiYgZnVuY3RvcikNCiAgICAgICAgOiBTY29w
ZWRMYW1iZGE8UmVzdWx0VHlwZSAoQXJndW1lbnRUeXBlcy4uLik+KGltcGxGdW5jdGlvbiwgdGhp
cykNCiAgICAgICAgLCBtX2Z1bmN0b3Ioc3RkOjpmb3J3YXJkPFBhc3NlZEZ1bmN0b3I+KGZ1bmN0
b3IpKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgU2NvcGVkTGFtYmRhRnVu
Y3Rvcihjb25zdCBTY29wZWRMYW1iZGFGdW5jdG9yJiBvdGhlcikNCiAgICAgICAgOiBTY29wZWRM
YW1iZGE8UmVzdWx0VHlwZSAoQXJndW1lbnRUeXBlcy4uLik+KGltcGxGdW5jdGlvbiwgdGhpcykN
CiAgICAgICAgLCBtX2Z1bmN0b3Iob3RoZXIubV9mdW5jdG9yKQ0KICAgIHsNCiAgICB9DQoNCiAg
ICBTY29wZWRMYW1iZGFGdW5jdG9yKFNjb3BlZExhbWJkYUZ1bmN0b3ImJiBvdGhlcikNCiAgICAg
ICAgOiBTY29wZWRMYW1iZGE8UmVzdWx0VHlwZSAoQXJndW1lbnRUeXBlcy4uLik+KGltcGxGdW5j
dGlvbiwgdGhpcykNCiAgICAgICAgLCBtX2Z1bmN0b3Ioc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3Zl
UGFyYW1ldGVyPihvdGhlci5tX2Z1bmN0b3IpKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgU2Nv
cGVkTGFtYmRhRnVuY3RvciYgb3BlcmF0b3I9KGNvbnN0IFNjb3BlZExhbWJkYUZ1bmN0b3ImIG90
aGVyKQ0KICAgIHsNCiAgICAgICAgbV9mdW5jdG9yID0gb3RoZXIubV9mdW5jdG9yOw0KICAgICAg
ICByZXR1cm4gKnRoaXM7DQogICAgfQ0KICAgIA0KICAgIFNjb3BlZExhbWJkYUZ1bmN0b3ImIG9w
ZXJhdG9yPShTY29wZWRMYW1iZGFGdW5jdG9yJiYgb3RoZXIpDQogICAgew0KICAgICAgICBtX2Z1
bmN0b3IgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG90aGVyLm1fZnVuY3Rv
cik7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgc3RhdGlj
IFJlc3VsdFR5cGUgaW1wbEZ1bmN0aW9uKHZvaWQqIGFyZ3VtZW50LCBBcmd1bWVudFR5cGVzLi4u
IGFyZ3VtZW50cykNCiAgICB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTY29wZWRMYW1i
ZGFGdW5jdG9yKj4oYXJndW1lbnQpLT5tX2Z1bmN0b3IoYXJndW1lbnRzLi4uKTsNCiAgICB9DQoN
CiAgICBGdW5jdG9yIG1fZnVuY3RvcjsNCn07DQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBGdW5jdG9yPg0KU2NvcGVkTGFtYmRhRnVuY3Rv
cjxGdW5jdGlvblR5cGUsIEZ1bmN0b3I+IHNjb3BlZExhbWJkYShjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQ0Kew0KICAgIHJldHVybiBTY29wZWRMYW1iZGFGdW5jdG9yPEZ1bmN0aW9uVHlwZSwgRnVu
Y3Rvcj4oZnVuY3Rvcik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlw
ZW5hbWUgRnVuY3Rvcj4NClNjb3BlZExhbWJkYUZ1bmN0b3I8RnVuY3Rpb25UeXBlLCBGdW5jdG9y
PiBzY29wZWRMYW1iZGEoRnVuY3RvciYmIGZ1bmN0b3IpDQp7DQogICAgcmV0dXJuIFNjb3BlZExh
bWJkYUZ1bmN0b3I8RnVuY3Rpb25UeXBlLCBGdW5jdG9yPihzdGQ6Om1vdmU8V1RGOjpDaGVja01v
dmVQYXJhbWV0ZXI+KGZ1bmN0b3IpKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25U
eXBlLCB0eXBlbmFtZSBGdW5jdG9yPiBjbGFzcyBTY29wZWRMYW1iZGFSZWZGdW5jdG9yOw0KdGVt
cGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcywgdHlw
ZW5hbWUgRnVuY3Rvcj4NCmNsYXNzIFNjb3BlZExhbWJkYVJlZkZ1bmN0b3I8UmVzdWx0VHlwZSAo
QXJndW1lbnRUeXBlcy4uLiksIEZ1bmN0b3I+IDogcHVibGljIFNjb3BlZExhbWJkYTxSZXN1bHRU
eXBlIChBcmd1bWVudFR5cGVzLi4uKT4gew0KcHVibGljOg0KICAgIFNjb3BlZExhbWJkYVJlZkZ1
bmN0b3IoY29uc3QgRnVuY3RvciYgZnVuY3RvcikNCiAgICAgICAgOiBTY29wZWRMYW1iZGE8UmVz
dWx0VHlwZSAoQXJndW1lbnRUeXBlcy4uLik+KGltcGxGdW5jdGlvbiwgdGhpcykNCiAgICAgICAg
LCBtX2Z1bmN0b3IoJmZ1bmN0b3IpDQogICAgew0KICAgIH0NCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICBTY29wZWRMYW1iZGFSZWZGdW5jdG9yKGNvbnN0IFNjb3BlZExhbWJkYVJlZkZ1bmN0
b3ImIG90aGVyKQ0KICAgICAgICA6IFNjb3BlZExhbWJkYTxSZXN1bHRUeXBlIChBcmd1bWVudFR5
cGVzLi4uKT4oaW1wbEZ1bmN0aW9uLCB0aGlzKQ0KICAgICAgICAsIG1fZnVuY3RvcihvdGhlci5t
X2Z1bmN0b3IpDQogICAgew0KICAgIH0NCg0KICAgIFNjb3BlZExhbWJkYVJlZkZ1bmN0b3IoU2Nv
cGVkTGFtYmRhUmVmRnVuY3RvciYmIG90aGVyKQ0KICAgICAgICA6IFNjb3BlZExhbWJkYTxSZXN1
bHRUeXBlIChBcmd1bWVudFR5cGVzLi4uKT4oaW1wbEZ1bmN0aW9uLCB0aGlzKQ0KICAgICAgICAs
IG1fZnVuY3RvcihvdGhlci5tX2Z1bmN0b3IpDQogICAgew0KICAgIH0NCiAgICANCiAgICBTY29w
ZWRMYW1iZGFSZWZGdW5jdG9yJiBvcGVyYXRvcj0oY29uc3QgU2NvcGVkTGFtYmRhUmVmRnVuY3Rv
ciYgb3RoZXIpDQogICAgew0KICAgICAgICBtX2Z1bmN0b3IgPSBvdGhlci5tX2Z1bmN0b3I7DQog
ICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQogICAgDQogICAgU2NvcGVkTGFtYmRhUmVmRnVu
Y3RvciYgb3BlcmF0b3I9KFNjb3BlZExhbWJkYVJlZkZ1bmN0b3ImJiBvdGhlcikNCiAgICB7DQog
ICAgICAgIG1fZnVuY3RvciA9IG90aGVyLm1fZnVuY3RvcjsNCiAgICAgICAgcmV0dXJuICp0aGlz
Ow0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgUmVzdWx0VHlwZSBpbXBsRnVuY3Rpb24o
dm9pZCogYXJndW1lbnQsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuICgqc3RhdGljX2Nhc3Q8U2NvcGVkTGFtYmRhUmVmRnVuY3Rvcio+KGFyZ3VtZW50
KS0+bV9mdW5jdG9yKShhcmd1bWVudHMuLi4pOw0KICAgIH0NCg0KICAgIGNvbnN0IEZ1bmN0b3Iq
IG1fZnVuY3RvcjsNCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4NClNjb3BlZExhbWJkYVJlZkZ1bmN0b3I8RnVu
Y3Rpb25UeXBlLCBGdW5jdG9yPiBzY29wZWRMYW1iZGFSZWYoY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikNCnsNCiAgICByZXR1cm4gU2NvcGVkTGFtYmRhUmVmRnVuY3RvcjxGdW5jdGlvblR5cGUsIEZ1
bmN0b3I+KGZ1bmN0b3IpOw0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6OlNjb3BlZExhbWJkYTsNCnVz
aW5nIFdURjo6c2NvcGVkTGFtYmRhOw0KdXNpbmcgV1RGOjpzY29wZWRMYW1iZGFSZWY7DQojbGlu
ZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxi
eXRlY29kZVxcV2F0Y2hwb2ludC5oIg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCm5hbWVzcGFj
ZSBERkcgew0Kc3RydWN0IEFycmF5QnVmZmVyVmlld1dhdGNocG9pbnRBZGFwdG9yOw0KfQ0KDQpj
bGFzcyBWTTsNCg0KY2xhc3MgRmlyZURldGFpbCB7DQogICAgdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCkgPSBkZWxldGU7DQogICAgDQpwdWJsaWM6DQogICAgRmlyZURldGFpbCgpDQogICAgew0K
ICAgIH0NCiAgICANCiAgICB2aXJ0dWFsIH5GaXJlRGV0YWlsKCkNCiAgICB7DQogICAgfQ0KICAg
IA0KICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgPSAwOw0KfTsNCg0K
Y2xhc3MgU3RyaW5nRmlyZURldGFpbCBmaW5hbCA6IHB1YmxpYyBGaXJlRGV0YWlsIHsNCnB1Ymxp
YzoNCiAgICBTdHJpbmdGaXJlRGV0YWlsKGNvbnN0IGNoYXIqIHN0cmluZykNCiAgICAgICAgOiBt
X3N0cmluZyhzdHJpbmcpDQogICAgew0KICAgIH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QgZmluYWw7DQoNCnByaXZhdGU6DQogICAgY29uc3QgY2hhciogbV9z
dHJpbmc7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4NCmNsYXNzIExhenlGaXJl
RGV0YWlsIGZpbmFsIDogcHVibGljIEZpcmVEZXRhaWwgew0KcHVibGljOg0KICAgIExhenlGaXJl
RGV0YWlsKGNvbnN0IFR5cGVzJi4uLiBhcmdzKQ0KICAgIHsNCiAgICAgICAgbV9sYW1iZGEgPSBz
Y29wZWRMYW1iZGE8dm9pZChQcmludFN0cmVhbSYpPihbJl0gKFByaW50U3RyZWFtJiBvdXQpIHsN
CiAgICAgICAgICAgIG91dC5wcmludChhcmdzLi4uKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQog
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IGZpbmFsIHsgbV9sYW1iZGEob3V0
KTsgfQ0KDQpwcml2YXRlOg0KICAgIFNjb3BlZExhbWJkYTx2b2lkKFByaW50U3RyZWFtJik+IG1f
bGFtYmRhOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+DQpMYXp5RmlyZURldGFp
bDxUeXBlcy4uLj4gY3JlYXRlTGF6eUZpcmVEZXRhaWwoY29uc3QgVHlwZXMmLi4uIHR5cGVzKQ0K
ew0KICAgIHJldHVybiBMYXp5RmlyZURldGFpbDxUeXBlcy4uLj4odHlwZXMuLi4pOw0KfQ0KDQpj
bGFzcyBXYXRjaHBvaW50U2V0Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEzMiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcV2F0Y2hwb2lu
dC5oIg0KDQoNCg0KDQojbGluZSAxMzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFdhdGNocG9pbnQuaCINCg0KDQoNCg0KDQp1c2lu
ZyBXYXRjaHBvaW50TWFsbG9jID0gRmFzdE1hbGxvYzsNCg0KY2xhc3MgV2F0Y2hwb2ludCA6IHB1
YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gew0KICAgIFdhdGNocG9pbnQo
Y29uc3QgV2F0Y2hwb2ludCYpID0gZGVsZXRlOyBXYXRjaHBvaW50JiBvcGVyYXRvcj0oY29uc3Qg
V2F0Y2hwb2ludCYpID0gZGVsZXRlOzsNCiAgICBXYXRjaHBvaW50KFdhdGNocG9pbnQmJikgPSBk
ZWxldGU7IFdhdGNocG9pbnQmIG9wZXJhdG9yPShXYXRjaHBvaW50JiYpID0gZGVsZXRlOzsNCiAg
ICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywg
dm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Vi
a2l0RmFzdE1hbGxvY2VkID0gaW50OyB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KDQogICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7DQogICAgICAgIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlU3RydWN0dXJl
LCBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVByb3BlcnR5LCBDb2RlQmxvY2tKZXR0aXNv
bmluZywgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURh
dGFBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nLCBPYmplY3RUb1N0cmluZ0FkYXB0aXZlU3RydWN0
dXJlLCBTdHJ1Y3R1cmVUcmFuc2l0aW9uU3RydWN0dXJlU3R1YkNsZWFyaW5nLCBBZGFwdGl2ZVN0
cnVjdHVyZSwNCiAgICB9Ow0KDQoNCiAgICBXYXRjaHBvaW50KFR5cGUgdHlwZSkNCiAgICAgICAg
OiBtX3R5cGUodHlwZSkNCiAgICB7IH0NCg0KcHJvdGVjdGVkOg0KICAgIH5XYXRjaHBvaW50KCk7
DQoNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIFdhdGNocG9pbnRTZXQ7DQogICAgDQogICAg
ZnJpZW5kIHN0cnVjdCBERkc6OkFycmF5QnVmZmVyVmlld1dhdGNocG9pbnRBZGFwdG9yOw0KICAg
IHZvaWQgZmlyZShWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsNCg0KICAgIFR5cGUgbV90eXBlOw0K
fTsNCg0KDQplbnVtIFdhdGNocG9pbnRTdGF0ZSA6IHVpbnQ4X3Qgew0KICAgIENsZWFyV2F0Y2hw
b2ludCA9IDAsDQogICAgSXNXYXRjaGVkID0gMSwNCiAgICBJc0ludmFsaWRhdGVkID0gMg0KfTsN
Cg0KY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsNCmNsYXNzIERlZmVycmVkV2F0Y2hwb2ludEZp
cmU7DQpjbGFzcyBWTTsNCg0KdXNpbmcgV2F0Y2hwb2ludFNldE1hbGxvYyA9IEZhc3RNYWxsb2M7
DQoNCmNsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2F0
Y2hwb2ludFNldD4gew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9p
ZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHAp
IHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7
IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVb
XSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2Nh
dGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVy
ZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCiAgICBmcmllbmQgY2xhc3MgRGVmZXJyZWRXYXRjaHBv
aW50RmlyZTsNCnB1YmxpYzoNCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
fldhdGNocG9pbnRTZXQoKTsgDQoNCiAgICBzdGF0aWMgUmVmPFdhdGNocG9pbnRTZXQ+IGNyZWF0
ZShXYXRjaHBvaW50U3RhdGUgc3RhdGUpDQogICAgew0KICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXYXRjaHBvaW50U2V0KHN0YXRlKSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIFdhdGNo
cG9pbnRTdGF0ZSBzdGF0ZU9uSlNUaHJlYWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdhdGNocG9pbnRTdGF0ZT4obV9zdGF0ZSk7DQogICAgfQ0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIFdhdGNocG9pbnRTdGF0ZSBzdGF0ZSgpIGNv
bnN0DQogICAgew0KICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsNCiAgICAgICAgV2F0Y2hw
b2ludFN0YXRlIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdhdGNocG9pbnRTdGF0ZT4obV9zdGF0ZSk7
DQogICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0K
ICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBib29s
IGlzU3RpbGxWYWxpZCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGUoKSAhPSBJ
c0ludmFsaWRhdGVkOw0KICAgIH0NCiAgICANCiAgICBib29sIGhhc0JlZW5JbnZhbGlkYXRlZCgp
IGNvbnN0IHsgcmV0dXJuICFpc1N0aWxsVmFsaWQoKTsgfQ0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIHZvaWQgYWRkKFdhdGNocG9pbnQqKTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICB2b2lkIHN0YXJ0V2F0Y2hpbmcoKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICBpZiAobV9zdGF0ZSA9PSBJc1dhdGNoZWQpDQogICAgICAgICAgICByZXR1
cm47DQogICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7DQogICAgICAgIG1fc3RhdGUgPSBJ
c1dhdGNoZWQ7DQogICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7DQogICAgfQ0KDQogICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQogICAgdm9pZCBmaXJlQWxsKFZNJiB2bSwgVCYgZmlyZURl
dGFpbHMpDQogICAgew0KICAgICAgICBpZiAoKG1fc3RhdGUgIT0gSXNXYXRjaGVkKSkNCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgZmlyZUFsbFNsb3codm0sIGZpcmVEZXRhaWxzKTsNCiAg
ICB9DQoNCiAgICB2b2lkIHRvdWNoKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQ0K
ICAgIHsNCiAgICAgICAgaWYgKHN0YXRlKCkgPT0gQ2xlYXJXYXRjaHBvaW50KQ0KICAgICAgICAg
ICAgc3RhcnRXYXRjaGluZygpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBmaXJlQWxsKHZt
LCBkZXRhaWwpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHRvdWNoKFZNJiB2bSwgY29uc3QgY2hh
ciogcmVhc29uKQ0KICAgIHsNCiAgICAgICAgdG91Y2godm0sIFN0cmluZ0ZpcmVEZXRhaWwocmVh
c29uKSk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgaW52YWxpZGF0ZShWTSYgdm0sIGNvbnN0IEZp
cmVEZXRhaWwmIGRldGFpbCkNCiAgICB7DQogICAgICAgIGlmIChzdGF0ZSgpID09IElzV2F0Y2hl
ZCkNCiAgICAgICAgICAgIGZpcmVBbGwodm0sIGRldGFpbCk7DQogICAgICAgIG1fc3RhdGUgPSBJ
c0ludmFsaWRhdGVkOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGludmFsaWRhdGUoVk0mIHZtLCBj
b25zdCBjaGFyKiByZWFzb24pDQogICAgew0KICAgICAgICBpbnZhbGlkYXRlKHZtLCBTdHJpbmdG
aXJlRGV0YWlsKHJlYXNvbikpOw0KICAgIH0NCiAgICANCiAgICBib29sIGlzQmVpbmdXYXRjaGVk
KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3NldElzTm90RW1wdHk7DQogICAgfQ0K
ICAgIA0KICAgIGludDhfdCogYWRkcmVzc09mU3RhdGUoKSB7IHJldHVybiAmbV9zdGF0ZTsgfQ0K
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTdGF0ZSgpIHsgcmV0dXJuIChyZWludGVycHJl
dF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFdhdGNocG9pbnRTZXQqPigweDQw
MDApLT5tX3N0YXRlKSkgLSAweDQwMDApOyB9DQogICAgaW50OF90KiBhZGRyZXNzT2ZTZXRJc05v
dEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0SXNOb3RFbXB0eTsgfQ0KICAgIA0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSB2b2lkIGZpcmVBbGxTbG93KFZNJiwgY29uc3QgRmlyZURldGFpbCYpOyAN
CiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBmaXJlQWxsU2xvdyhWTSYsIERlZmVycmVk
V2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkV2F0Y2hwb2ludHMpOyANCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgdm9pZCBmaXJlQWxsU2xvdyhWTSYsIGNvbnN0IGNoYXIqIHJlYXNvbik7IA0KICAg
IA0KcHJvdGVjdGVkOg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBXYXRjaHBvaW50U2V0KFdh
dGNocG9pbnRTdGF0ZSk7DQoNCnByaXZhdGU6DQogICAgdm9pZCBmaXJlQWxsV2F0Y2hwb2ludHMo
Vk0mLCBjb25zdCBGaXJlRGV0YWlsJik7DQogICAgdm9pZCB0YWtlKFdhdGNocG9pbnRTZXQqIG90
aGVyKTsNCiAgICANCiAgICBmcmllbmQgY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsNCg0KICAg
IGludDhfdCBtX3N0YXRlOw0KICAgIGludDhfdCBtX3NldElzTm90RW1wdHk7DQoNCiAgICBTZW50
aW5lbExpbmtlZExpc3Q8V2F0Y2hwb2ludCwgUGFja2VkUmF3U2VudGluZWxOb2RlPFdhdGNocG9p
bnQ+PiBtX3NldDsNCn07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
Y2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldCB7DQogICAgSW5saW5lV2F0Y2hwb2ludFNldChjb25z
dCBJbmxpbmVXYXRjaHBvaW50U2V0JikgPSBkZWxldGU7IElubGluZVdhdGNocG9pbnRTZXQmIG9w
ZXJhdG9yPShjb25zdCBJbmxpbmVXYXRjaHBvaW50U2V0JikgPSBkZWxldGU7Ow0KcHVibGljOg0K
ICAgIElubGluZVdhdGNocG9pbnRTZXQoV2F0Y2hwb2ludFN0YXRlIHN0YXRlKQ0KICAgICAgICA6
IG1fZGF0YShlbmNvZGVTdGF0ZShzdGF0ZSkpDQogICAgew0KICAgIH0NCiAgICANCiAgICB+SW5s
aW5lV2F0Y2hwb2ludFNldCgpDQogICAgew0KICAgICAgICBpZiAoaXNUaGluKCkpDQogICAgICAg
ICAgICByZXR1cm47DQogICAgICAgIGZyZWVGYXQoKTsNCiAgICB9DQogICAgDQogICAgDQogICAg
V2F0Y2hwb2ludFN0YXRlIHN0YXRlT25KU1RocmVhZCgpIGNvbnN0DQogICAgew0KICAgICAgICB1
aW50cHRyX3QgZGF0YSA9IG1fZGF0YTsNCiAgICAgICAgaWYgKGlzRmF0KGRhdGEpKQ0KICAgICAg
ICAgICAgcmV0dXJuIGZhdChkYXRhKS0+c3RhdGVPbkpTVGhyZWFkKCk7DQogICAgICAgIHJldHVy
biBkZWNvZGVTdGF0ZShkYXRhKTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICBXYXRj
aHBvaW50U3RhdGUgc3RhdGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgV1RGOjpsb2FkTG9hZEZl
bmNlKCk7DQogICAgICAgIHVpbnRwdHJfdCBkYXRhID0gbV9kYXRhOw0KICAgICAgICBXVEY6Omxv
YWRMb2FkRmVuY2UoKTsNCiAgICAgICAgaWYgKGlzRmF0KGRhdGEpKQ0KICAgICAgICAgICAgcmV0
dXJuIGZhdChkYXRhKS0+c3RhdGUoKTsNCiAgICAgICAgcmV0dXJuIGRlY29kZVN0YXRlKGRhdGEp
Ow0KICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBib29sIGhhc0JlZW5JbnZhbGlk
YXRlZCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGUoKSA9PSBJc0ludmFsaWRh
dGVkOw0KICAgIH0NCiAgICANCiAgICANCiAgICBib29sIGlzU3RpbGxWYWxpZCgpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gIWhhc0JlZW5JbnZhbGlkYXRlZCgpOw0KICAgIH0NCiAgICAN
CiAgICB2b2lkIGFkZChXYXRjaHBvaW50Kik7DQogICAgDQogICAgdm9pZCBzdGFydFdhdGNoaW5n
KCkNCiAgICB7DQogICAgICAgIGlmIChpc0ZhdCgpKSB7DQogICAgICAgICAgICBmYXQoKS0+c3Rh
cnRXYXRjaGluZygpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgbV9kYXRhID0gZW5jb2RlU3RhdGUoSXNXYXRjaGVkKTsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCiAgICB2b2lkIGZpcmVBbGwoVk0mIHZtLCBU
IGZpcmVEZXRhaWxzKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzRmF0KCkpIHsNCiAgICAgICAgICAg
IGZhdCgpLT5maXJlQWxsKHZtLCBmaXJlRGV0YWlscyk7DQogICAgICAgICAgICByZXR1cm47DQog
ICAgICAgIH0NCiAgICAgICAgaWYgKGRlY29kZVN0YXRlKG1fZGF0YSkgPT0gQ2xlYXJXYXRjaHBv
aW50KQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBtX2RhdGEgPSBlbmNvZGVTdGF0ZShJ
c0ludmFsaWRhdGVkKTsNCiAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsNCiAgICB9DQoN
CiAgICB2b2lkIGludmFsaWRhdGUoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpDQog
ICAgew0KICAgICAgICBpZiAoaXNGYXQoKSkNCiAgICAgICAgICAgIGZhdCgpLT5pbnZhbGlkYXRl
KHZtLCBkZXRhaWwpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2RhdGEgPSBlbmNvZGVT
dGF0ZShJc0ludmFsaWRhdGVkKTsNCiAgICB9DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIHZvaWQgZmlyZUFsbChWTSYsIGNvbnN0IGNoYXIqIHJlYXNvbik7DQogICAgDQogICAgdm9p
ZCB0b3VjaChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkNCiAgICB7DQogICAgICAg
IGlmIChpc0ZhdCgpKSB7DQogICAgICAgICAgICBmYXQoKS0+dG91Y2godm0sIGRldGFpbCk7DQog
ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgdWludHB0cl90IGRhdGEgPSBt
X2RhdGE7DQogICAgICAgIGlmIChkZWNvZGVTdGF0ZShkYXRhKSA9PSBJc0ludmFsaWRhdGVkKQ0K
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOw0KICAg
ICAgICBpZiAoZGVjb2RlU3RhdGUoZGF0YSkgPT0gQ2xlYXJXYXRjaHBvaW50KQ0KICAgICAgICAg
ICAgbV9kYXRhID0gZW5jb2RlU3RhdGUoSXNXYXRjaGVkKTsNCiAgICAgICAgZWxzZQ0KICAgICAg
ICAgICAgbV9kYXRhID0gZW5jb2RlU3RhdGUoSXNJbnZhbGlkYXRlZCk7DQogICAgICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgdG91Y2goVk0mIHZtLCBj
b25zdCBjaGFyKiByZWFzb24pDQogICAgew0KICAgICAgICB0b3VjaCh2bSwgU3RyaW5nRmlyZURl
dGFpbChyZWFzb24pKTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBib29sIGlz
QmVpbmdXYXRjaGVkKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChpc0ZhdCgpKQ0KICAgICAg
ICAgICAgcmV0dXJuIGZhdCgpLT5pc0JlaW5nV2F0Y2hlZCgpOw0KICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgV2F0Y2hwb2ludFNldCog
aW5mbGF0ZSgpDQogICAgew0KICAgICAgICBpZiAoKGlzRmF0KCkpKQ0KICAgICAgICAgICAgcmV0
dXJuIGZhdCgpOw0KICAgICAgICByZXR1cm4gaW5mbGF0ZVNsb3coKTsNCiAgICB9DQogICAgDQpw
cml2YXRlOg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IElzVGhpbkZsYWcgICAgICAg
ID0gMTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBTdGF0ZU1hc2sgICAgICAgICA9
IDY7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgU3RhdGVTaGlmdCAgICAgICAgPSAx
Ow0KICAgIA0KICAgIHN0YXRpYyBib29sIGlzVGhpbih1aW50cHRyX3QgZGF0YSkgeyByZXR1cm4g
ZGF0YSAmIElzVGhpbkZsYWc7IH0NCiAgICBzdGF0aWMgYm9vbCBpc0ZhdCh1aW50cHRyX3QgZGF0
YSkgeyByZXR1cm4gIWlzVGhpbihkYXRhKTsgfQ0KICAgIA0KICAgIHN0YXRpYyBXYXRjaHBvaW50
U3RhdGUgZGVjb2RlU3RhdGUodWludHB0cl90IGRhdGEpDQogICAgew0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXYXRjaHBvaW50U3RhdGU+KChkYXRhICYg
U3RhdGVNYXNrKSA+PiBTdGF0ZVNoaWZ0KTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHVpbnRw
dHJfdCBlbmNvZGVTdGF0ZShXYXRjaHBvaW50U3RhdGUgc3RhdGUpDQogICAgew0KICAgICAgICBy
ZXR1cm4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oc3RhdGUpIDw8IFN0YXRlU2hpZnQpIHwgSXNU
aGluRmxhZzsNCiAgICB9DQogICAgDQogICAgYm9vbCBpc1RoaW4oKSBjb25zdCB7IHJldHVybiBp
c1RoaW4obV9kYXRhKTsgfQ0KICAgIGJvb2wgaXNGYXQoKSBjb25zdCB7IHJldHVybiBpc0ZhdCht
X2RhdGEpOyB9Ow0KICAgIA0KICAgIHN0YXRpYyBXYXRjaHBvaW50U2V0KiBmYXQodWludHB0cl90
IGRhdGEpDQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdhdGNocG9pbnRTZXQq
PihkYXRhKTsNCiAgICB9DQogICAgDQogICAgV2F0Y2hwb2ludFNldCogZmF0KCkNCiAgICB7DQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGZhdChtX2RhdGEpOw0KICAgIH0NCiAg
ICANCiAgICBjb25zdCBXYXRjaHBvaW50U2V0KiBmYXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gZmF0KG1fZGF0YSk7DQogICAgfQ0KICAgIA0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBXYXRjaHBvaW50U2V0KiBpbmZsYXRlU2xvdygpOw0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGZyZWVGYXQoKTsNCiAgICANCiAgICB1aW50cHRy
X3QgbV9kYXRhOw0KfTsNCg0KY2xhc3MgRGVmZXJyZWRXYXRjaHBvaW50RmlyZSA6IHB1YmxpYyBG
aXJlRGV0YWlsIHsNCiAgICBEZWZlcnJlZFdhdGNocG9pbnRGaXJlKGNvbnN0IERlZmVycmVkV2F0
Y2hwb2ludEZpcmUmKSA9IGRlbGV0ZTsgRGVmZXJyZWRXYXRjaHBvaW50RmlyZSYgb3BlcmF0b3I9
KGNvbnN0IERlZmVycmVkV2F0Y2hwb2ludEZpcmUmKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIERlZmVycmVkV2F0Y2hwb2ludEZpcmUoVk0mKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgfkRlZmVycmVkV2F0Y2hwb2ludEZpcmUoKSBvdmVycmlkZTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHRha2VXYXRjaHBvaW50c1RvRmlyZShX
YXRjaHBvaW50U2V0Kik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgZmlyZUFsbCgp
Ow0KDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IG92ZXJyaWRlID0gMDsN
CnByaXZhdGU6DQogICAgVk0mIG1fdm07DQogICAgV2F0Y2hwb2ludFNldCBtX3dhdGNocG9pbnRz
VG9GaXJlOw0KfTsNCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OldhdGNocG9pbnRTdGF0ZSk7DQoNCn0gDQoNCiNsaW5l
IDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXEFycmF5QnVmZmVyLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFdlYWsuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBXZWFrSW1wbDsNCmNsYXNzIFdlYWtIYW5kbGVP
d25lcjsNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCB3ZWFrQ2xlYXJTbG93Q2FzZShX
ZWFrSW1wbComKTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2VhayB7DQogICAgV2Vh
ayhjb25zdCBXZWFrJikgPSBkZWxldGU7IFdlYWsmIG9wZXJhdG9yPShjb25zdCBXZWFrJikgPSBk
ZWxldGU7Ow0KcHVibGljOg0KICAgIFdlYWsoKSA9IGRlZmF1bHQ7DQoNCiAgICBjb25zdGV4cHIg
V2VhayhzdGQ6Om51bGxwdHJfdCkNCiAgICAgICAgOiBXZWFrKCkNCiAgICB7DQogICAgfQ0KDQog
ICAgV2VhayhUKiwgV2Vha0hhbmRsZU93bmVyKiA9IG51bGxwdHIsIHZvaWQqIGNvbnRleHQgPSBu
dWxscHRyKTsNCg0KICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdDsNCiAg
ICBXZWFrKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7DQogICAgY29uc3RleHByIGJv
b2wgaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQ0KDQog
ICAgV2VhayhXZWFrJiYpOw0KDQogICAgfldlYWsoKQ0KICAgIHsNCiAgICAgICAgY2xlYXIoKTsN
CiAgICB9DQoNCiAgICBpbmxpbmUgdm9pZCBzd2FwKFdlYWsmKTsNCg0KICAgIGlubGluZSBXZWFr
JiBvcGVyYXRvcj0oV2VhayYmKTsNCg0KICAgIGlubGluZSBib29sIG9wZXJhdG9yISgpIGNvbnN0
Ow0KICAgIGlubGluZSBUKiBvcGVyYXRvci0+KCkgY29uc3Q7DQogICAgaW5saW5lIFQmIG9wZXJh
dG9yKigpIGNvbnN0Ow0KICAgIGlubGluZSBUKiBnZXQoKSBjb25zdDsNCg0KICAgIGlubGluZSBi
b29sIHdhcyhUKikgY29uc3Q7DQoNCiAgICBpbmxpbmUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0Ow0KDQogICAgaW5saW5lIFdlYWtJbXBsKiBsZWFrSW1wbCgpIDsNCiAgICBXZWFrSW1w
bCogdW5zYWZlSW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQ0KICAgIHZvaWQgY2xlYXIo
KQ0KICAgIHsNCiAgICAgICAgaWYgKCFtX2ltcGwpDQogICAgICAgICAgICByZXR1cm47DQogICAg
ICAgIHdlYWtDbGVhclNsb3dDYXNlKG1faW1wbCk7DQogICAgfQ0KICAgIA0KcHJpdmF0ZToNCiAg
ICBzdGF0aWMgaW5saW5lIFdlYWtJbXBsKiBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsNCg0KICAg
IFdlYWtJbXBsKiBtX2ltcGwgeyBudWxscHRyIH07DQp9Ow0KDQp9IA0KDQpuYW1lc3BhY2UgV1RG
IHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZlY3RvclRyYWl0czxKU0M6OldlYWs8
VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpXZWFrPFQ+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxKU0M6OldlYWs8VD4+IHsNCiAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsN
Cg0KICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7DQogICAgc3RhdGlj
IEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9DQoNCiAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOw0KICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBKU0M6OldlYWs8VD4mIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZS5pc0hhc2hUYWJsZUVtcHR5VmFsdWUoKTsgfQ0KDQogICAgdHlwZWRlZiBUKiBQ
ZWVrVHlwZTsNCiAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9yYWdlVHlwZSYgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9DQogICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoRW1w
dHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0NCn07DQoNCn0gDQojbGluZSAzMiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxBcnJheUJ1ZmZlci5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ2FnZWRQdHIuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0K
DQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjb25zdGV4cHIgYm9vbCB0YWdDYWdlZFB0ciA9IHRydWU7
DQoNCnRlbXBsYXRlPEdpZ2FjYWdlOjpLaW5kIHBhc3NlZEtpbmQsIHR5cGVuYW1lIFQsIGJvb2wg
c2hvdWxkVGFnID0gZmFsc2UsIHR5cGVuYW1lIFB0clRyYWl0cyA9IER1bWJQdHJUcmFpdHM8VD4+
DQpjbGFzcyBDYWdlZFB0ciB7DQpwdWJsaWM6DQogICAgc3RhdGljIGNvbnN0ZXhwciBHaWdhY2Fn
ZTo6S2luZCBraW5kID0gcGFzc2VkS2luZDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG51bWJlck9mUEFDQml0cyA9IDI1Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IG5v
blBBQ0JpdHNNYXNrID0gKDF1bGwgPDwgKChzaXplb2YoVCopICogOCkgLSBudW1iZXJPZlBBQ0Jp
dHMpKSAtIDE7DQoNCiAgICBDYWdlZFB0cigpIDogQ2FnZWRQdHIobnVsbHB0cikgeyB9DQogICAg
Q2FnZWRQdHIoc3RkOjpudWxscHRyX3QpDQogICAgICAgIDogbV9wdHIoc2hvdWxkVGFnID8gdGFn
QXJyYXlQdHI8VD4obnVsbHB0ciwgMCkgOiBudWxscHRyKQ0KICAgIHsgfQ0KDQogICAgQ2FnZWRQ
dHIoVCogcHRyLCB1bnNpZ25lZCBzaXplKQ0KICAgICAgICA6IG1fcHRyKHNob3VsZFRhZyA/IHRh
Z0FycmF5UHRyKHB0ciwgc2l6ZSkgOiBwdHIpDQogICAgeyB9DQoNCiAgICBUKiBnZXQodW5zaWdu
ZWQgc2l6ZSkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgVCogcHRy
ID0gUHRyVHJhaXRzOjp1bndyYXAobV9wdHIpOw0KICAgICAgICBUKiBjYWdlZFB0ciA9IEdpZ2Fj
YWdlOjpjYWdlZChraW5kLCBwdHIpOw0KICAgICAgICBUKiB1bnRhZ2dlZFB0ciA9IHNob3VsZFRh
ZyA/IHVudGFnQXJyYXlQdHIobWVyZ2VQb2ludGVycyhwdHIsIGNhZ2VkUHRyKSwgc2l6ZSkgOiBj
YWdlZFB0cjsNCiAgICAgICAgcmV0dXJuIHVudGFnZ2VkUHRyOw0KICAgIH0NCg0KICAgIFQqIGdl
dE1heUJlTnVsbCh1bnNpZ25lZCBzaXplKSBjb25zdA0KICAgIHsNCiAgICAgICAgVCogcHRyID0g
UHRyVHJhaXRzOjp1bndyYXAobV9wdHIpOw0KICAgICAgICBpZiAoIXJlbW92ZUFycmF5UHRyVGFn
KHB0cikpDQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgVCogY2FnZWRQdHIg
PSBHaWdhY2FnZTo6Y2FnZWQoa2luZCwgcHRyKTsNCiAgICAgICAgVCogdW50YWdnZWRQdHIgPSBz
aG91bGRUYWcgPyB1bnRhZ0FycmF5UHRyKG1lcmdlUG9pbnRlcnMocHRyLCBjYWdlZFB0ciksIHNp
emUpIDogY2FnZWRQdHI7DQogICAgICAgIHJldHVybiB1bnRhZ2dlZFB0cjsNCiAgICB9DQoNCiAg
ICBUKiBnZXRVbnNhZmUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgVCogcHRyID0gUHRyVHJhaXRz
Ojp1bndyYXAobV9wdHIpOw0KICAgICAgICBwdHIgPSBzaG91bGRUYWcgPyByZW1vdmVBcnJheVB0
clRhZyhwdHIpIDogcHRyOw0KICAgICAgICByZXR1cm4gR2lnYWNhZ2U6OmNhZ2VkTWF5QmVOdWxs
KGtpbmQsIHB0cik7DQogICAgfQ0KDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+
DQogICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTx2b2lkLCBVPjo6dmFs
dWUsIFQ+Ojp0eXBlJg0KICAgICBhdCh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc2l6ZSkgY29u
c3QgeyByZXR1cm4gZ2V0KHNpemUpW2luZGV4XTsgfQ0KDQogICAgdm9pZCByZWNhZ2UodW5zaWdu
ZWQgb2xkU2l6ZSwgdW5zaWduZWQgbmV3U2l6ZSkNCiAgICB7DQogICAgICAgIGF1dG8gcHRyID0g
Z2V0KG9sZFNpemUpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICp0aGlzID0gQ2FnZWRQ
dHIocHRyLCBuZXdTaXplKTsNCiAgICB9DQoNCiAgICBDYWdlZFB0cihDYWdlZFB0ciYgb3RoZXIp
DQogICAgICAgIDogbV9wdHIob3RoZXIubV9wdHIpDQogICAgew0KICAgIH0NCg0KICAgIENhZ2Vk
UHRyJiBvcGVyYXRvcj0oY29uc3QgQ2FnZWRQdHImIHB0cikNCiAgICB7DQogICAgICAgIG1fcHRy
ID0gcHRyLm1fcHRyOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgQ2FnZWRQ
dHIoQ2FnZWRQdHImJiBvdGhlcikNCiAgICAgICAgOiBtX3B0cihQdHJUcmFpdHM6OmV4Y2hhbmdl
KG90aGVyLm1fcHRyLCBudWxscHRyKSkNCiAgICB7DQogICAgfQ0KDQogICAgQ2FnZWRQdHImIG9w
ZXJhdG9yPShDYWdlZFB0ciYmIHB0cikNCiAgICB7DQogICAgICAgIG1fcHRyID0gUHRyVHJhaXRz
OjpleGNoYW5nZShwdHIubV9wdHIsIG51bGxwdHIpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhZ2VkUHRyJiBvdGhlcikgY29uc3QN
CiAgICB7DQogICAgICAgIGJvb2wgcmVzdWx0ID0gbV9wdHIgPT0gb3RoZXIubV9wdHI7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgDQogICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENhZ2VkUHRyJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsNCiAgICB9DQogICAgDQogICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gZ2V0VW5zYWZlKCkg
IT0gbnVsbHB0cjsNCiAgICB9DQoNCiAgICBUKiByYXdCaXRzKCkgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VCo+KG1fcHRyKTsNCiAgICB9DQogICAgDQpwcm90ZWN0
ZWQ6DQogICAgc3RhdGljIGlubGluZSBUKiBtZXJnZVBvaW50ZXJzKFQqIHNvdXJjZVB0ciwgVCog
Y2FnZWRQdHIpDQogICAgew0KDQoNCiNsaW5lIDE0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ2FnZWRQdHIuaCINCiAgICAgICAgKHZv
aWQpc291cmNlUHRyOw0KICAgICAgICByZXR1cm4gY2FnZWRQdHI7DQojbGluZSAxNDUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NhZ2Vk
UHRyLmgiDQogICAgfQ0KDQogICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBtX3B0
cjsNCn07DQoNCn0gDQoNCnVzaW5nIFdURjo6Q2FnZWRQdHI7DQp1c2luZyBXVEY6OnRhZ0NhZ2Vk
UHRyOw0KDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxBcnJheUJ1ZmZlci5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QYWNrZWRSZWZQ
dHIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPg0KdXNpbmcgUGFja2VkUmVmUHRyID0gUmVmUHRyPFQsIFBhY2tlZFB0clRyYWl0czxUPj47
DQoNCn0gDQoNCnVzaW5nIFdURjo6UGFja2VkUmVmUHRyOw0KI2xpbmUgMzUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQXJyYXlCdWZm
ZXIuaCINCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoNCmNsYXNzIFZNOw0KY2xhc3Mg
QXJyYXlCdWZmZXI7DQpjbGFzcyBBcnJheUJ1ZmZlclZpZXc7DQpjbGFzcyBKU0FycmF5QnVmZmVy
Ow0KDQp1c2luZyBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiA9IFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQodm9pZCopPj47DQp1c2luZyBQYWNrZWRBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5j
dGlvbiA9IFBhY2tlZFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQodm9pZCopPj47DQoNCmNsYXNzIFNo
YXJlZEFycmF5QnVmZmVyQ29udGVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hh
cmVkQXJyYXlCdWZmZXJDb250ZW50cz4gew0KcHVibGljOg0KICAgIFNoYXJlZEFycmF5QnVmZmVy
Q29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb24mJik7DQogICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoKTsNCiAgICANCiAg
ICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJlTnVsbChtX3NpemVJ
bkJ5dGVzKTsgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICB1c2luZyBEYXRhVHlwZSA9IENhZ2VkUHRy
PEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsNCiAgICBEYXRhVHlwZSBt
X2RhdGE7DQogICAgUGFja2VkQXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24gbV9kZXN0cnVj
dG9yOw0KICAgIHVuc2lnbmVkIG1fc2l6ZUluQnl0ZXM7DQp9Ow0KDQpjbGFzcyBBcnJheUJ1ZmZl
ckNvbnRlbnRzIHsNCiAgICBBcnJheUJ1ZmZlckNvbnRlbnRzKGNvbnN0IEFycmF5QnVmZmVyQ29u
dGVudHMmKSA9IGRlbGV0ZTsgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KGNvbnN0IEFy
cmF5QnVmZmVyQ29udGVudHMmKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIEFycmF5QnVmZmVyQ29udGVudHMoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgQXJyYXlCdWZmZXJDb250ZW50cyh2b2lkKiBkYXRhLCB1bnNpZ25lZCBzaXplSW5CeXRlcywg
QXJyYXlCdWZmZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7DQogICAgDQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIEFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgQXJyYXlCdWZmZXJDb250ZW50cyYgb3BlcmF0b3I9KEFy
cmF5QnVmZmVyQ29udGVudHMmJik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgfkFycmF5
QnVmZmVyQ29udGVudHMoKTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBj
bGVhcigpOw0KICAgIA0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAhIW1f
ZGF0YTsgfQ0KICAgIA0KICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0
TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9DQogICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBj
b25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9DQogICAgDQogICAgYm9vbCBpc1NoYXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9DQogICAgDQpwcml2YXRlOg0KICAgIHZvaWQgZGVz
dHJveSgpOw0KICAgIHZvaWQgcmVzZXQoKTsNCg0KICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZl
cjsNCg0KICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgew0KICAgICAgICBaZXJvSW5pdGlh
bGl6ZSwNCiAgICAgICAgRG9udEluaXRpYWxpemUNCiAgICB9Ow0KDQogICAgdm9pZCB0cnlBbGxv
Y2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBJbml0
aWFsaXphdGlvblBvbGljeSk7DQogICAgDQogICAgdm9pZCBtYWtlU2hhcmVkKCk7DQogICAgdm9p
ZCB0cmFuc2ZlclRvKEFycmF5QnVmZmVyQ29udGVudHMmKTsNCiAgICB2b2lkIGNvcHlUbyhBcnJh
eUJ1ZmZlckNvbnRlbnRzJik7DQogICAgdm9pZCBzaGFyZVdpdGgoQXJyYXlCdWZmZXJDb250ZW50
cyYpOw0KDQogICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZl
LCB2b2lkLCB0YWdDYWdlZFB0cj47DQogICAgRGF0YVR5cGUgbV9kYXRhOw0KICAgIFBhY2tlZEFy
cmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uIG1fZGVzdHJ1Y3RvcjsNCiAgICBQYWNrZWRSZWZQ
dHI8U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cz4gbV9zaGFyZWQ7DQogICAgdW5zaWduZWQgbV9z
aXplSW5CeXRlczsNCn07DQoNCmNsYXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdS
ZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7DQpwdWJsaWM6DQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3Rh
dGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyJik7DQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBz
b3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBz
dGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYmKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRv
cHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsNCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlRnJvbUJ5dGVzKGNv
bnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgsIEFycmF5QnVmZmVyRGVzdHJ1Y3Rv
ckZ1bmN0aW9uJiYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1l
bnRCeXRlU2l6ZSk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOw0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOw0KDQog
ICAgaW5saW5lIHZvaWQqIGRhdGEoKTsNCiAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0YSgpIGNv
bnN0Ow0KICAgIGlubGluZSB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7DQogICAgDQogICAg
dm9pZCBtYWtlU2hhcmVkKCk7DQogICAgdm9pZCBzZXRTaGFyaW5nTW9kZShBcnJheUJ1ZmZlclNo
YXJpbmdNb2RlKTsNCiAgICBpbmxpbmUgYm9vbCBpc1NoYXJlZCgpIGNvbnN0Ow0KICAgIGlubGlu
ZSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNT
aGFyZWQoKSA/IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZCA6IEFycmF5QnVmZmVyU2hh
cmluZ01vZGU6OkRlZmF1bHQ7IH0NCg0KICAgIGlubGluZSBzaXplX3QgZ2NTaXplRXN0aW1hdGVJ
bkJ5dGVzKCkgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgUmVmUHRyPEFycmF5
QnVmZmVyPiBzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0Ow0KICAgIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikg
Y29uc3Q7DQogICAgDQogICAgaW5saW5lIHZvaWQgcGluKCk7DQogICAgaW5saW5lIHZvaWQgdW5w
aW4oKTsNCiAgICBpbmxpbmUgdm9pZCBwaW5BbmRMb2NrKCk7DQogICAgaW5saW5lIGJvb2wgaXNM
b2NrZWQoKTsNCg0KICAgIHZvaWQgbWFrZVdhc21NZW1vcnkoKTsNCiAgICBpbmxpbmUgYm9vbCBp
c1dhc21NZW1vcnkoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIHRyYW5zZmVy
VG8oVk0mLCBBcnJheUJ1ZmZlckNvbnRlbnRzJik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQp
IGJvb2wgc2hhcmVXaXRoKEFycmF5QnVmZmVyQ29udGVudHMmKTsNCg0KICAgIHZvaWQgbmV1dGVy
KFZNJik7DQogICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fY29udGVudHMubV9kYXRh
OyB9DQogICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbmV1dGVyaW5nV2F0Y2hwb2ludFNldCgpIHsg
cmV0dXJuIG1fbmV1dGVyaW5nV2F0Y2hwb2ludFNldDsgfQ0KDQogICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkRhdGEoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxBcnJheUJ1ZmZlcio+KDB4NDAwMCktPm1fY29udGVudHMpKSAtIDB4
NDAwMCkgKyAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxB
cnJheUJ1ZmZlckNvbnRlbnRzKj4oMHg0MDAwKS0+bV9kYXRhKSkgLSAweDQwMDApOyB9DQoNCiAg
ICB+QXJyYXlCdWZmZXIoKSB7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMg
UmVmPFNoYXJlZFRhc2s8dm9pZCh2b2lkKik+PiBwcmltaXRpdmVHaWdhY2FnZURlc3RydWN0b3Io
KTsNCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250
ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOw0KICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+
IGNyZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2ln
bmVkKTsNCiAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQg
bnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50
czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kpOw0KICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29u
dGVudHMmJik7DQogICAgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVn
aW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7DQogICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgo
ZG91YmxlIGluZGV4KSBjb25zdDsNCiAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFs
dWUoZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsNCg0KICAgIHZvaWQg
bm90aWZ5TmV1dGVyaW5nKFZNJik7DQoNCiAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIG1fY29udGVu
dHM7DQogICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX25ldXRlcmluZ1dhdGNocG9pbnRTZXQgeyBJ
c1dhdGNoZWQgfTsNCnB1YmxpYzoNCiAgICBXZWFrPEpTQXJyYXlCdWZmZXI+IG1fd3JhcHBlcjsN
CnByaXZhdGU6DQogICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9waW5Db3VudDsNCiAgICBib29sIG1f
aXNXYXNtTWVtb3J5Ow0KICAgIA0KICAgIA0KICAgIGJvb2wgbV9sb2NrZWQ7DQp9Ow0KDQp2b2lk
KiBBcnJheUJ1ZmZlcjo6ZGF0YSgpDQp7DQogICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgpOw0K
fQ0KDQpjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0DQp7DQogICAgcmV0dXJu
IG1fY29udGVudHMuZGF0YSgpOw0KfQ0KDQp1bnNpZ25lZCBBcnJheUJ1ZmZlcjo6Ynl0ZUxlbmd0
aCgpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1fY29udGVudHMuc2l6ZUluQnl0ZXMoKTsNCn0NCg0K
Ym9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2NvbnRl
bnRzLmlzU2hhcmVkKCk7DQp9DQoNCnNpemVfdCBBcnJheUJ1ZmZlcjo6Z2NTaXplRXN0aW1hdGVJ
bkJ5dGVzKCkgY29uc3QNCnsNCiAgICANCiAgICByZXR1cm4gc2l6ZW9mKEFycmF5QnVmZmVyKSAr
IHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZUxlbmd0aCgpKTsNCn0NCg0Kdm9pZCBBcnJheUJ1ZmZl
cjo6cGluKCkNCnsNCiAgICBtX3BpbkNvdW50Kys7DQp9DQoNCnZvaWQgQXJyYXlCdWZmZXI6OnVu
cGluKCkNCnsNCiAgICBtX3BpbkNvdW50LS07DQp9DQoNCnZvaWQgQXJyYXlCdWZmZXI6OnBpbkFu
ZExvY2soKQ0Kew0KICAgIG1fbG9ja2VkID0gdHJ1ZTsNCn0NCg0KYm9vbCBBcnJheUJ1ZmZlcjo6
aXNMb2NrZWQoKQ0Kew0KICAgIHJldHVybiBtX2xvY2tlZDsNCn0NCg0KYm9vbCBBcnJheUJ1ZmZl
cjo6aXNXYXNtTWVtb3J5KCkNCnsNCiAgICByZXR1cm4gbV9pc1dhc21NZW1vcnk7DQp9DQoNCl9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBBU0NJSUxpdGVyYWwgZXJyb3JNZXNhc2dlRm9yVHJhbnNmZXIo
QXJyYXlCdWZmZXIqKTsNCg0KfSANCg0KdXNpbmcgSlNDOjpBcnJheUJ1ZmZlcjsNCiNsaW5lIDI1
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBc
XEhlYXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcQ2VsbFN0YXRlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpT
QyB7DQoNCg0KZW51bSBjbGFzcyBDZWxsU3RhdGUgOiB1aW50OF90IHsNCiAgICANCiAgICANCiAg
ICANCiAgICBQb3NzaWJseUJsYWNrID0gMCwNCiAgICANCiAgICANCiAgICBEZWZpbml0ZWx5V2hp
dGUgPSAxLA0KDQogICAgDQogICAgDQogICAgDQogICAgUG9zc2libHlHcmV5ID0gMg0KfTsNCg0K
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBibGFja1RocmVzaG9sZCA9IDA7IA0Kc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCB0YXV0b2xvZ2ljYWxUaHJlc2hvbGQgPSAxMDA7IA0KDQppbmxpbmUg
Ym9vbCBpc1dpdGhpblRocmVzaG9sZChDZWxsU3RhdGUgY2VsbFN0YXRlLCB1bnNpZ25lZCB0aHJl
c2hvbGQpDQp7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjZWxsU3RhdGUpIDw9
IHRocmVzaG9sZDsNCn0NCg0KfSANCiNsaW5lIDI2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcQ29sbGVjdGlv
blNjb3BlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51bSBjbGFzcyBDb2xsZWN0
aW9uU2NvcGUgOiB1aW50OF90IHsgRWRlbiwgRnVsbCB9Ow0KDQpjb25zdCBjaGFyKiBjb2xsZWN0
aW9uU2NvcGVOYW1lKENvbGxlY3Rpb25TY29wZSk7DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0K
DQpjbGFzcyBQcmludFN0cmVhbTsNCg0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6Q29sbGVjdGlvblNjb3BlKTsNCg0KfSANCg0KI2xpbmUgMjcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcC5oIg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxo
ZWFwXFxDb2xsZWN0b3JQaGFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCmVudW0gY2xhc3MgQ29sbGVjdG9yUGhhc2UgOiB1aW50OF90IHsNCiAgICAN
CiAgICBOb3RSdW5uaW5nLA0KICAgIA0KICAgIA0KICAgIA0KICAgIEJlZ2luLA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIEZpeHBvaW50LA0KICAgIA0KICAgIA0KICAgIA0KICAgIENvbmN1
cnJlbnQsDQogICAgICAgIA0KICAgIA0KICAgIA0KICAgIFJlbG9vcCwNCiAgICANCiAgICANCiAg
ICBFbmQNCn07DQoNCmJvb2wgd29ybGRTaG91bGRCZVN1c3BlbmRlZChDb2xsZWN0b3JQaGFzZSBw
aGFzZSk7DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCg0K
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpDb2xsZWN0b3JQaGFzZSk7DQoN
Cn0gDQoNCiNsaW5lIDI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcZGZnXFxERkdEb2VzR0NDaGVjay5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFZNOw0KDQpuYW1lc3BhY2UgREZHIHsN
Cg0Kc3RydWN0IERvZXNHQ0NoZWNrIHsNCiAgICBlbnVtIGNsYXNzIFNwZWNpYWwgew0KICAgICAg
ICBVbmluaXRpYWxpemVkLA0KICAgICAgICBERkdPU1JFeGl0LA0KICAgICAgICBGVExPU1JFeGl0
LA0KICAgICAgICBOdW1iZXJPZlNwZWNpYWxzDQogICAgfTsNCg0KICAgIERvZXNHQ0NoZWNrKCkN
CiAgICAgICAgOiBtX3ZhbHVlKGVuY29kZSh0cnVlLCBTcGVjaWFsOjpVbmluaXRpYWxpemVkKSkN
CiAgICB7IH0NCg0KICAgIHN0YXRpYyB1aW50MzJfdCBlbmNvZGUoYm9vbCBleHBlY3REb2VzR0Ms
IHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQgbm9kZU9wKQ0KICAgIHsNCiAgICAgICAgDQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG5vZGVJbmRleCA8PCBub2RlSW5kZXhT
aGlmdCB8IG5vZGVPcCA8PCBub2RlT3BTaGlmdCB8IGJpdHMoZXhwZWN0RG9lc0dDKTsNCiAgICB9
DQoNCiAgICBzdGF0aWMgdWludDMyX3QgZW5jb2RlKGJvb2wgZXhwZWN0RG9lc0dDLCBTcGVjaWFs
IHNwZWNpYWwpDQogICAgew0KICAgICAgICByZXR1cm4gYml0cyhzcGVjaWFsKSA8PCBzcGVjaWFs
U2hpZnQgfCBpc1NwZWNpYWxCaXQgfCBiaXRzKGV4cGVjdERvZXNHQyk7DQogICAgfQ0KDQogICAg
dm9pZCBzZXQoYm9vbCBleHBlY3REb2VzR0MsIHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQg
bm9kZU9wKQ0KICAgIHsNCiAgICAgICAgbV92YWx1ZSA9IGVuY29kZShleHBlY3REb2VzR0MsIG5v
ZGVJbmRleCwgbm9kZU9wKTsNCiAgICB9DQoNCiAgICB2b2lkIHNldChib29sIGV4cGVjdERvZXNH
QywgU3BlY2lhbCBzcGVjaWFsKQ0KICAgIHsNCiAgICAgICAgbV92YWx1ZSA9IGVuY29kZShleHBl
Y3REb2VzR0MsIHNwZWNpYWwpOw0KICAgIH0NCg0KICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSAmIGV4cGVjdERvZXNHQ0JpdDsgfQ0KICAgIGJvb2wgaXNTcGVj
aWFsKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSAmIGlzU3BlY2lhbEJpdDsgfQ0KDQogICAgU3Bl
Y2lhbCBzcGVjaWFsKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3BlY2lhbD4obV92YWx1ZSA+PiBz
cGVjaWFsU2hpZnQpOyB9DQoNCiAgICB1bnNpZ25lZCBub2RlT3AoKSB7IHJldHVybiAobV92YWx1
ZSA+PiBub2RlT3BTaGlmdCkgJiBub2RlT3BNYXNrOyB9DQogICAgdW5zaWduZWQgbm9kZUluZGV4
KCkgeyByZXR1cm4gbV92YWx1ZSA+PiBub2RlSW5kZXhTaGlmdDsgfQ0KDQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHZvaWQgdmVyaWZ5Q2FuR0MoVk0mKTsNCg0KcHJpdmF0ZToNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDMyX3QgYml0cyhUIHZhbHVlKSB7IHJldHVybiBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpOyB9DQoNCiAgICANCiAgICANCiAgICANCg0KICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZXhwZWN0RG9lc0dDQml0ID0gMSA8PCAwOw0KICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaXNTcGVjaWFsQml0ID0gMSA8PCAxOw0KICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tbW9uQml0cyA9IDI7DQogICAgc3RhdGljX2Fzc2Vy
dCgoZXhwZWN0RG9lc0dDQml0IHwgaXNTcGVjaWFsQml0KSA9PSAoMSA8PCBjb21tb25CaXRzKSAt
IDEpOw0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzcGVjaWFsU2hpZnQgPSBjb21t
b25CaXRzOw0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub2RlT3BCaXRzID0gOTsN
CiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vZGVPcE1hc2sgPSAoMSA8PCBub2RlT3BC
aXRzKSAtIDE7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub2RlT3BTaGlmdCA9IGNv
bW1vbkJpdHM7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vZGVJbmRleEJpdHMg
PSAyMTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vZGVJbmRleFNoaWZ0ID0gbm9k
ZU9wU2hpZnQgKyBub2RlT3BCaXRzOw0KICAgIHN0YXRpY19hc3NlcnQobm9kZUluZGV4U2hpZnQg
KyBub2RlSW5kZXhCaXRzID09IDMyKTsNCg0KICAgIHVpbnQzMl90IG1fdmFsdWUgeyAwIH07DQp9
Ow0KDQp9IA0KDQp1c2luZyBERkc6OkRvZXNHQ0NoZWNrOw0KDQp9IA0KI2xpbmUgMjkgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcC5o
Ig0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxoZWFwXFxEZWxldGVBbGxDb2RlRWZmb3J0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KZW51bSBEZWxldGVBbGxDb2RlRWZmb3J0IHsNCiAgICBQcmV2ZW50Q29sbGVjdGlvbkFu
ZERlbGV0ZUFsbENvZGUsDQogICAgRGVsZXRlQWxsQ29kZUlmTm90Q29sbGVjdGluZw0KfTsNCg0K
fSANCg0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaGVhcFxcSGVhcC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxHQ0NvbmR1Y3Rvci5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoNCmVudW0gY2xhc3MgR0NDb25kdWN0b3IgOiB1aW50OF90
IHsNCiAgICBNdXRhdG9yLA0KICAgIENvbGxlY3Rvcg0KfTsNCg0KY29uc3QgY2hhciogZ2NDb25k
dWN0b3JTaG9ydE5hbWUoR0NDb25kdWN0b3Igb2ZmaWNlcik7DQoNCn0gDQoNCm5hbWVzcGFjZSBX
VEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCg0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgSlNDOjpHQ0NvbmR1Y3Rvcik7DQoNCn0gDQoNCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVh
cFxcR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpjbGFzcyBHQ0luY29taW5nUmVmQ291bnRl
ZFNldCB7DQpwdWJsaWM6DQogICAgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQoKTsNCg0KICAgIHZv
aWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsNCg0KICAgIA0KICAgIGJvb2wgYWRkUmVmZXJlbmNl
KEpTQ2VsbCosIFQqKTsNCiAgICANCiAgICB2b2lkIHN3ZWVwKFZNJik7DQogICAgDQogICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVzOyB9Ow0KICAgIA0KcHJpdmF0ZToNCiAg
ICBWZWN0b3I8VCo+IG1fdmVjdG9yOw0KICAgIHNpemVfdCBtX2J5dGVzOw0KfTsNCg0KfSANCiNs
aW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGhlYXBcXEhlYXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcR0NNZW1vcnlPcGVyYXRpb25zLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGFzc2VtYmxlclxcQ1BVLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL051bWJlck9mQ29yZXMuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
bmFtZXNwYWNlIFdURiB7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgbnVtYmVyT2ZQcm9j
ZXNzb3JDb3JlcygpOw0KDQp9DQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXENQVS5oIg0KDQoNCm5hbWVzcGFjZSBK
U0Mgew0KDQp1c2luZyBVQ1BVU3RyaWN0SW50MzIgPSBVQ1BVUmVnaXN0ZXI7DQoNCmNvbnN0ZXhw
ciBib29sIGlzQVJNdjdJRElWU3VwcG9ydGVkKCkNCnsNCg0KDQojbGluZSA0MSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXENQVS5o
Ig0KICAgIHJldHVybiBmYWxzZTsNCiNsaW5lIDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQ1BVLmgiDQp9DQoNCmNvbnN0ZXhw
ciBib29sIGlzQVJNNjQoKQ0Kew0KDQoNCiNsaW5lIDUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQ1BVLmgiDQogICAgcmV0dXJu
IGZhbHNlOw0KI2xpbmUgNTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxDUFUuaCINCn0NCg0KY29uc3RleHByIGJvb2wgaXNBUk02
NEUoKQ0Kew0KDQoNCiNsaW5lIDU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQ1BVLmgiDQogICAgcmV0dXJuIGZhbHNlOw0KI2xp
bmUgNjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
YXNzZW1ibGVyXFxDUFUuaCINCn0NCg0KY29uc3RleHByIGJvb2wgaXNYODYoKQ0Kew0KDQogICAg
cmV0dXJuIHRydWU7DQoNCg0KI2xpbmUgNzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxDUFUuaCINCn0NCg0KY29uc3RleHByIGJv
b2wgaXNYODZfNjQoKQ0Kew0KDQogICAgcmV0dXJuIHRydWU7DQoNCg0KI2xpbmUgNzkgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxD
UFUuaCINCn0NCg0KY29uc3RleHByIGJvb2wgaXM2NEJpdCgpDQp7DQoNCiAgICByZXR1cm4gdHJ1
ZTsNCg0KDQojbGluZSA4OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxhc3NlbWJsZXJcXENQVS5oIg0KfQ0KDQpjb25zdGV4cHIgYm9vbCBpczMyQml0
KCkNCnsNCiAgICByZXR1cm4gIWlzNjRCaXQoKTsNCn0NCg0KY29uc3RleHByIGJvb2wgaXNBZGRy
ZXNzNjRCaXQoKQ0Kew0KICAgIHJldHVybiBzaXplb2Yodm9pZCopID09IDg7DQp9DQoNCmNvbnN0
ZXhwciBib29sIGlzQWRkcmVzczMyQml0KCkNCnsNCiAgICByZXR1cm4gIWlzQWRkcmVzczY0Qml0
KCk7DQp9DQoNCmNvbnN0ZXhwciBib29sIGlzTUlQUygpDQp7DQoNCg0KI2xpbmUgMTEwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxc
Q1BVLmgiDQogICAgcmV0dXJuIGZhbHNlOw0KI2xpbmUgMTEyICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQ1BVLmgiDQp9DQoNCmlu
bGluZSBib29sIG9wdGltaXplRm9yQVJNdjdJRElWU3VwcG9ydGVkKCkNCnsNCiAgICByZXR1cm4g
aXNBUk12N0lESVZTdXBwb3J0ZWQoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZp
Y09wdGltaXphdGlvbnMoKTsNCn0NCg0KaW5saW5lIGJvb2wgb3B0aW1pemVGb3JBUk02NCgpDQp7
DQogICAgcmV0dXJuIGlzQVJNNjQoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZp
Y09wdGltaXphdGlvbnMoKTsNCn0NCg0KaW5saW5lIGJvb2wgb3B0aW1pemVGb3JYODYoKQ0Kew0K
ICAgIHJldHVybiBpc1g4NigpICYmIE9wdGlvbnM6OnVzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0
aW1pemF0aW9ucygpOw0KfQ0KDQppbmxpbmUgYm9vbCBvcHRpbWl6ZUZvclg4Nl82NCgpDQp7DQog
ICAgcmV0dXJuIGlzWDg2XzY0KCkgJiYgT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNP
cHRpbWl6YXRpb25zKCk7DQp9DQoNCmlubGluZSBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQo
KQ0Kew0KICAgIHJldHVybiBvcHRpbWl6ZUZvclg4NigpOw0KfQ0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxNDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
YXNzZW1ibGVyXFxDUFUuaCINCl9fZm9yY2VpbmxpbmUgYm9vbCBpc0tlcm5UQ1NNQXZhaWxhYmxl
KCkgeyByZXR1cm4gZmFsc2U7IH0NCl9fZm9yY2VpbmxpbmUgYm9vbCBlbmFibGVLZXJuVENTTSgp
IHsgcmV0dXJuIGZhbHNlOyB9DQpfX2ZvcmNlaW5saW5lIGludCBrZXJuVENTTUF3YXJlTnVtYmVy
T2ZQcm9jZXNzb3JDb3JlcygpIHsgcmV0dXJuIFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3Jlcygp
OyB9DQpfX2ZvcmNlaW5saW5lIGludDY0X3QgaHdMM0NhY2hlU2l6ZSgpIHsgcmV0dXJuIDA7IH0N
Cl9fZm9yY2VpbmxpbmUgaW50MzJfdCBod1BoeXNpY2FsQ1BVTWF4KCkgeyByZXR1cm4ga2VyblRD
U01Bd2FyZU51bWJlck9mUHJvY2Vzc29yQ29yZXMoKTsgfQ0KI2xpbmUgMTUyICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQ1BVLmgi
DQoNCn0gDQoNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGhlYXBcXEdDTWVtb3J5T3BlcmF0aW9ucy5oIg0KDQoNCm5hbWVzcGFjZSBK
U0Mgew0KDQoNCg0KDQoNCg0KY29uc3RleHByIHNpemVfdCBzbWFsbEN1dG9mZiA9IDMwICogODsN
CmNvbnN0ZXhwciBzaXplX3QgbWVkaXVtQ3V0b2ZmID0gNCAqIDEwMjQ7DQoNCg0KdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+DQpfX2ZvcmNlaW5saW5lIHZvaWQgZ2NTYWZlTWVtY3B5KFQqIGRzdCwgVCog
c3JjLCBzaXplX3QgYnl0ZXMpDQp7DQogICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6
ZW9mKEpTVmFsdWUpKTsNCiAgICBkbyB7IGlmICgoIShieXRlcyAlIDggPT0gMCkpKSBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oNDYsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGhlYXBcXEdDTWVtb3J5T3BlcmF0aW9ucy5oIiwgIF9fRlVOQ1RJT05fXyAg
LCAxNyApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KDQoNCg0KICAgIGF1dG8gc2xv
d1BhdGhGb3J3YXJkTWVtY3B5ID0gWyZdIHsNCiAgICAgICAgc2l6ZV90IGNvdW50ID0gYnl0ZXMg
LyA4Ow0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCiAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx2b2xhdGlsZSB1aW50NjRfdCo+KGRzdClbaV0gPSBiaXR3aXNl
X2Nhc3Q8dm9sYXRpbGUgdWludDY0X3QqPihzcmMpW2ldOw0KICAgIH07DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEdDTWVtb3J5
T3BlcmF0aW9ucy5oIg0KICAgIHNsb3dQYXRoRm9yd2FyZE1lbWNweSgpOw0KI2xpbmUgMTQxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEdD
TWVtb3J5T3BlcmF0aW9ucy5oIg0KDQoNCiNsaW5lIDE0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxHQ01lbW9yeU9wZXJhdGlvbnMuaCIN
Cn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQpfX2ZvcmNlaW5saW5lIHZvaWQgZ2NTYWZlTWVt
bW92ZShUKiBkc3QsIFQqIHNyYywgc2l6ZV90IGJ5dGVzKQ0Kew0KICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFQpID09IHNpemVvZihKU1ZhbHVlKSk7DQogICAgZG8geyBpZiAoKCEoYnl0ZXMgJSA4
ID09IDApKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVu
Y2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE1MCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcR0NNZW1vcnlPcGVyYXRpb25zLmgi
LCAgX19GVU5DVElPTl9fICAsIDE4ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQoN
CiAgICBpZiAoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3JjKSA+PSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pihkc3QpKSB7DQogICAgICAgIA0KICAgICAgICBnY1NhZmVNZW1jcHkoZHN0LCBzcmMs
IGJ5dGVzKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIGlmICgoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHNyYykpICsgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGJ5dGVzKSkgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGRzdCkpKSB7DQogICAgICAgIGdjU2FmZU1lbWNweShkc3QsIHNyYywgYnl0ZXMpOw0K
ICAgICAgICByZXR1cm47DQogICAgfQ0KDQogICAgYXV0byBzbG93UGF0aEJhY2t3YXJkc01lbW1v
dmUgPSBbJl0gew0KICAgICAgICBzaXplX3QgY291bnQgPSBieXRlcyAvIDg7DQogICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBjb3VudDsgaS0tOyApDQogICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9s
YXRpbGUgdWludDY0X3QqPihkc3QpW2ldID0gYml0d2lzZV9jYXN0PHZvbGF0aWxlIHVpbnQ2NF90
Kj4oc3JjKVtpXTsNCiAgICB9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MjQxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhl
YXBcXEdDTWVtb3J5T3BlcmF0aW9ucy5oIg0KICAgIHNsb3dQYXRoQmFja3dhcmRzTWVtbW92ZSgp
Ow0KI2xpbmUgMjQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGhlYXBcXEdDTWVtb3J5T3BlcmF0aW9ucy5oIg0KDQoNCiNsaW5lIDI0NiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxHQ01lbW9y
eU9wZXJhdGlvbnMuaCINCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQpfX2ZvcmNlaW5saW5l
IHZvaWQgZ2NTYWZlWmVyb01lbW9yeShUKiBkc3QsIHNpemVfdCBieXRlcykNCnsNCiAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBzaXplb2YoSlNWYWx1ZSkpOw0KICAgIGRvIHsgaWYgKCgh
KGJ5dGVzICUgOCA9PSAwKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBj
b21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygyNTIsICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEdDTWVtb3J5T3Bl
cmF0aW9ucy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxOSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjk2ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEdDTWVtb3J5T3Bl
cmF0aW9ucy5oIg0KICAgIHNpemVfdCBjb3VudCA9IGJ5dGVzIC8gODsNCiAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpDQogICAgICAgIGJpdHdpc2VfY2FzdDx2b2xhdGlsZSB1
aW50NjRfdCo+KGRzdClbaV0gPSAwOw0KI2xpbmUgMzAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEdDTWVtb3J5T3BlcmF0aW9ucy5oIg0K
DQoNCiNsaW5lIDMwMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxoZWFwXFxHQ01lbW9yeU9wZXJhdGlvbnMuaCINCn0NCg0KfSANCiNsaW5lIDMzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhl
YXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaGVhcFxcR0NSZXF1ZXN0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0Kc3RydWN0IEdDUmVxdWVzdCB7DQogICAgR0NSZXF1ZXN0KCkgeyB9DQogICAg
DQogICAgR0NSZXF1ZXN0KENvbGxlY3Rpb25TY29wZSBzY29wZSkNCiAgICAgICAgOiBzY29wZShz
Y29wZSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIEdDUmVxdWVzdChPcHRpb25hbDxDb2xsZWN0
aW9uU2NvcGU+IHNjb3BlKQ0KICAgICAgICA6IHNjb3BlKHNjb3BlKQ0KICAgIHsNCiAgICB9DQog
ICAgDQogICAgYm9vbCBzdWJzdW1lZEJ5KGNvbnN0IEdDUmVxdWVzdCYgb3RoZXIpIGNvbnN0Ow0K
ICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Ow0KICAgIA0KICAgIE9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGU7DQogICAgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgp
Pj4gZGlkRmluaXNoRW5kUGhhc2U7DQp9Ow0KDQp9IA0KDQojbGluZSAzNCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFwLmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhl
YXBcXEhhbmRsZVNldC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIYW5kbGUuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcSGFuZGxlVHlwZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdHlw
ZWRlZiBKU1ZhbHVlKiBIYW5kbGVTbG90Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SGFuZGxlVHlwZXMgew0KICAgIHR5cGVkZWYgVCogRXh0ZXJuYWxUeXBlOw0KICAgIHN0YXRpYyBF
eHRlcm5hbFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJldHVybiAoc2xvdCAm
JiAqc2xvdCkgPyByZWludGVycHJldF9jYXN0PEV4dGVybmFsVHlwZT4oc3RhdGljX2Nhc3Q8dm9p
ZCo+KHNsb3QtPmFzQ2VsbCgpKSkgOiBudWxscHRyOyB9DQogICAgc3RhdGljIEpTVmFsdWUgdG9K
U1ZhbHVlKFQqIGNlbGwpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7
IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB2YWxpZGF0ZVVwY2FzdCgp
IHsgVCogdGVtcDsgdGVtcCA9IChVKikwOyB9DQp9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYW5k
bGVUeXBlczxVbmtub3duPiB7DQogICAgdHlwZWRlZiBKU1ZhbHVlIEV4dGVybmFsVHlwZTsNCiAg
ICBzdGF0aWMgRXh0ZXJuYWxUeXBlIGdldEZyb21TbG90KEhhbmRsZVNsb3Qgc2xvdCkgeyByZXR1
cm4gc2xvdCA/ICpzbG90IDogSlNWYWx1ZSgpOyB9DQogICAgc3RhdGljIEpTVmFsdWUgdG9KU1Zh
bHVlKGNvbnN0IEpTVmFsdWUmIHYpIHsgcmV0dXJuIHY7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBzdGF0aWMgdm9pZCB2YWxpZGF0ZVVwY2FzdCgpIHsgfQ0KfTsNCg0KfSANCiNsaW5lIDI5
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBc
XEhhbmRsZS5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoNCg0KDQoNCg0KDQoNCmVudW0gY2xh
c3MgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIDogYm9vbCB7IE5vLCBZZXMgfTsNCg0K
dGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIEhhbmRsZTsNCg0KDQp0ZW1wbGF0ZSA8PiBjbGFzcyBI
YW5kbGU8SlNWYWx1ZT47DQoNCmNsYXNzIEhhbmRsZUJhc2Ugew0KICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBmcmllbmQgY2xhc3MgV2VhazsNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hv
dWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9j
az4gZnJpZW5kIGNsYXNzIFN0cm9uZzsNCiAgICBmcmllbmQgY2xhc3MgSGFuZGxlU2V0Ow0KICAg
IGZyaWVuZCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGE7DQoNCnB1YmxpYzoNCiAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3Nsb3QgfHwgISptX3Nsb3Q7IH0NCg0KICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3Nsb3QgJiYgKm1fc2xv
dDsgfQ0KDQogICAgSGFuZGxlU2xvdCBzbG90KCkgY29uc3QgeyByZXR1cm4gbV9zbG90OyB9DQoN
CnByb3RlY3RlZDoNCiAgICBIYW5kbGVCYXNlKEhhbmRsZVNsb3Qgc2xvdCkNCiAgICAgICAgOiBt
X3Nsb3Qoc2xvdCkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgc3dhcChIYW5kbGVCYXNl
JiBvdGhlcikgeyBzdGQ6OnN3YXAobV9zbG90LCBvdGhlci5tX3Nsb3QpOyB9DQoNCiAgICB2b2lk
IHNldFNsb3QoSGFuZGxlU2xvdCBzbG90KQ0KICAgIHsNCiAgICAgICAgbV9zbG90ID0gc2xvdDsN
CiAgICB9DQoNCnByaXZhdGU6DQogICAgSGFuZGxlU2xvdCBtX3Nsb3Q7DQp9Ow0KDQp0ZW1wbGF0
ZSA8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gc3RydWN0IEhhbmRsZUNvbnZlcnRlciB7DQog
ICAgVCogb3BlcmF0b3ItPigpDQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QmFz
ZSo+KHRoaXMpLT5nZXQoKTsNCiAgICB9DQogICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5n
ZXQoKTsNCiAgICB9DQoNCiAgICBUKiBvcGVyYXRvciooKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEJhc2UqPih0aGlzKS0+Z2V0KCk7DQogICAgfQ0KICAgIGNvbnN0IFQqIG9w
ZXJhdG9yKigpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
QmFzZSo+KHRoaXMpLT5nZXQoKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFz
ZT4gc3RydWN0IEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPiB7DQogICAgSGFuZGxlPEpT
T2JqZWN0PiBhc09iamVjdCgpIGNvbnN0Ow0KICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBqc1ZhbHVlKCkuaXNPYmplY3QoKTsgfQ0KICAgIGJvb2wgZ2V0TnVtYmVyKGRvdWJsZSBu
dW1iZXIpIGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUoKS5nZXROdW1iZXIobnVtYmVyKTsgfQ0KICAg
IFdURjo6U3RyaW5nIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIGJvb2wg
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IHJldHVybiBqc1ZhbHVlKCkuaXNVbmRlZmluZWRP
ck51bGwoKTsgfQ0KDQpwcml2YXRlOg0KICAgIEpTVmFsdWUganNWYWx1ZSgpIGNvbnN0DQogICAg
ew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsN
CiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgSGFuZGxlIDogcHVibGlj
IEhhbmRsZUJhc2UsIHB1YmxpYyBIYW5kbGVDb252ZXJ0ZXI8SGFuZGxlPFQ+LCBUPiB7DQpwdWJs
aWM6DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+IGZyaWVuZCBzdHJ1Y3Qg
SGFuZGxlQ29udmVydGVyOw0KICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlVHlwZXM8VD46OkV4
dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IEhhbmRs
ZShIYW5kbGU8VT4gbykNCiAgICB7DQogICAgICAgIHR5cGVuYW1lIEhhbmRsZVR5cGVzPFQ+Ojp0
ZW1wbGF0ZSB2YWxpZGF0ZVVwY2FzdDxVPigpOw0KICAgICAgICBzZXRTbG90KG8uc2xvdCgpKTsN
CiAgICB9DQoNCiAgICB2b2lkIHN3YXAoSGFuZGxlJiBvdGhlcikgeyBIYW5kbGVCYXNlOjpzd2Fw
KG90aGVyKTsgfQ0KDQogICAgRXh0ZXJuYWxUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIEhhbmRs
ZVR5cGVzPFQ+OjpnZXRGcm9tU2xvdCh0aGlzLT5zbG90KCkpOyB9DQoNCnByb3RlY3RlZDoNCiAg
ICBIYW5kbGUoSGFuZGxlU2xvdCBzbG90ID0gbnVsbHB0cikNCiAgICAgICAgOiBIYW5kbGVCYXNl
KHNsb3QpDQogICAgew0KICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIEhh
bmRsZVNldDsNCiAgICBmcmllbmQgY2xhc3MgV2Vha0Jsb2NrOw0KDQogICAgc3RhdGljIEhhbmRs
ZTxUPiB3cmFwU2xvdChIYW5kbGVTbG90IHNsb3QpDQogICAgew0KICAgICAgICByZXR1cm4gSGFu
ZGxlPFQ+KHNsb3QpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBIYW5k
bGU8SlNPYmplY3Q+IEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6YXNPYmplY3QoKSBj
b25zdA0Kew0KICAgIHJldHVybiBIYW5kbGU8SlNPYmplY3Q+Ojp3cmFwU2xvdChzdGF0aWNfY2Fz
dDxjb25zdCBCYXNlKj4odGhpcyktPnNsb3QoKSk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhbmRsZTxUPiYgYSwg
Y29uc3QgSGFuZGxlPFU+JiBiKQ0KeyANCiAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOyAN
Cn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBVKiBiKQ0KeyANCiAgICByZXR1cm4gYS5nZXQoKSA9
PSBiOyANCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yPT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKSANCnsNCiAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyANCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4mIGIp
DQp7IA0KICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IA0KfQ0KDQp0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5kbGU8
VD4mIGEsIFUqIGIpDQp7DQogICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgDQp9DQoNCnRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNv
bnN0IEhhbmRsZTxVPiYgYikNCnsgDQogICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgDQp9DQoNCnRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEhhbmRsZTxUPiYgYSwgSlNWYWx1ZSBiKQ0Kew0KICAgIHJldHVybiBhLmdldCgpICE9IGI7
IA0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShKU1ZhbHVlIGEsIGNvbnN0IEhhbmRsZTxVPiYgYikNCnsgDQogICAgcmV0dXJuIGEg
IT0gYi5nZXQoKTsgDQp9DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIYW5kbGVTZXQuaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGFu
ZGxlQmxvY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSGFuZGxl
U2V0Ow0KY2xhc3MgSGFuZGxlTm9kZTsNCg0KY2xhc3MgSGFuZGxlQmxvY2sgOiBwdWJsaWMgRG91
Ymx5TGlua2VkTGlzdE5vZGU8SGFuZGxlQmxvY2s+IHsNCiAgICBmcmllbmQgY2xhc3MgV1RGOjpE
b3VibHlMaW5rZWRMaXN0Tm9kZTxIYW5kbGVCbG9jaz47DQpwdWJsaWM6DQogICAgc3RhdGljIEhh
bmRsZUJsb2NrKiBjcmVhdGUoSGFuZGxlU2V0Kik7DQogICAgc3RhdGljIHZvaWQgZGVzdHJveShI
YW5kbGVCbG9jayopOw0KICAgIHN0YXRpYyBIYW5kbGVCbG9jayogYmxvY2tGb3IoSGFuZGxlTm9k
ZSopOw0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYmxvY2tTaXplID0gNCAqIEtCOw0K
DQogICAgSGFuZGxlU2V0KiBoYW5kbGVTZXQoKTsNCg0KICAgIEhhbmRsZU5vZGUqIG5vZGVzKCk7
DQogICAgSGFuZGxlTm9kZSogbm9kZUF0SW5kZXgodW5zaWduZWQpOw0KICAgIHVuc2lnbmVkIG5v
ZGVDYXBhY2l0eSgpOw0KDQpwcml2YXRlOg0KICAgIEhhbmRsZUJsb2NrKEhhbmRsZVNldCopOw0K
DQogICAgY2hhciogcGF5bG9hZCgpOw0KICAgIGNoYXIqIHBheWxvYWRFbmQoKTsNCg0KICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfYmxvY2tNYXNrID0gfihibG9ja1NpemUgLSAxKTsNCg0K
ICAgIEhhbmRsZUJsb2NrKiBtX3ByZXY7DQogICAgSGFuZGxlQmxvY2sqIG1fbmV4dDsNCiAgICBI
YW5kbGVTZXQqIG1faGFuZGxlU2V0Ow0KfTsNCg0KaW5saW5lIEhhbmRsZUJsb2NrKiBIYW5kbGVC
bG9jazo6YmxvY2tGb3IoSGFuZGxlTm9kZSogbm9kZSkNCnsNCiAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxIYW5kbGVCbG9jayo+KHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Pihub2RlKSAmIHNf
YmxvY2tNYXNrKTsNCn0NCg0KaW5saW5lIEhhbmRsZVNldCogSGFuZGxlQmxvY2s6OmhhbmRsZVNl
dCgpDQp7DQogICAgcmV0dXJuIG1faGFuZGxlU2V0Ow0KfQ0KDQp9IA0KI2xpbmUgMzAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGFuZGxl
U2V0LmgiDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvSGFzaENvdW50ZWRTZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KbmFtZXNw
YWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHM+DQpjbGFzcyBIYXNoQ291bnRlZFNldCBmaW5hbCB7DQogICAg
cHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZv
aWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtp
dEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFT
ZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnByaXZhdGU6DQogICAgdXNpbmcgSW1wbFR5
cGUgPSBIYXNoTWFwPFZhbHVlLCB1bnNpZ25lZCwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjsNCnB1
YmxpYzoNCiAgICB1c2luZyBWYWx1ZVR5cGUgPSBWYWx1ZTsNCiAgICB1c2luZyBpdGVyYXRvciA9
IHR5cGVuYW1lIEltcGxUeXBlOjppdGVyYXRvcjsNCiAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9
IHR5cGVuYW1lIEltcGxUeXBlOjpjb25zdF9pdGVyYXRvcjsNCiAgICB1c2luZyBWYWx1ZXNJdGVy
YXRvclJhbmdlID0gdHlwZW5hbWUgSW1wbFR5cGU6OktleXNJdGVyYXRvclJhbmdlOw0KICAgIHVz
aW5nIFZhbHVlc0NvbnN0SXRlcmF0b3JSYW5nZSA9IHR5cGVuYW1lIEltcGxUeXBlOjpLZXlzQ29u
c3RJdGVyYXRvclJhbmdlOw0KICAgIHVzaW5nIEFkZFJlc3VsdCA9IHR5cGVuYW1lIEltcGxUeXBl
OjpBZGRSZXN1bHQ7DQoNCiAgICBIYXNoQ291bnRlZFNldCgpDQogICAgew0KICAgIH0NCg0KICAg
IEhhc2hDb3VudGVkU2V0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx0eXBlbmFtZSBJbXBsVHlwZTo6
S2V5VmFsdWVQYWlyVHlwZT4gaW5pdGlhbGl6ZXJMaXN0KQ0KICAgIHsNCiAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBrZXlWYWx1ZVBhaXIgOiBpbml0aWFsaXplckxpc3QpDQogICAgICAgICAgICBh
ZGQoa2V5VmFsdWVQYWlyLmtleSwga2V5VmFsdWVQYWlyLnZhbHVlKTsNCiAgICB9DQoNCiAgICBI
YXNoQ291bnRlZFNldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dHlwZW5hbWUgSW1wbFR5cGU6Oktl
eVR5cGU+IGluaXRpYWxpemVyTGlzdCkNCiAgICB7DQogICAgICAgIGZvciAoY29uc3QgYXV0byYg
dmFsdWUgOiBpbml0aWFsaXplckxpc3QpDQogICAgICAgICAgICBhZGQodmFsdWUpOw0KICAgIH0N
CiAgICANCiAgICB2b2lkIHN3YXAoSGFzaENvdW50ZWRTZXQmKTsNCiAgICANCiAgICB1bnNpZ25l
ZCBzaXplKCkgY29uc3Q7DQogICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25zdDsNCiAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsNCiAgICANCiAgICANCiAgICBpdGVyYXRvciBiZWdpbigpOw0KICAg
IGl0ZXJhdG9yIGVuZCgpOw0KICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7DQogICAg
Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7DQoNCiAgICBpdGVyYXRvciByYW5kb20oKSB7IHJl
dHVybiBtX2ltcGwucmFuZG9tKCk7IH0NCiAgICBjb25zdF9pdGVyYXRvciByYW5kb20oKSBjb25z
dCB7IHJldHVybiBtX2ltcGwucmFuZG9tKCk7IH0NCg0KICAgIFZhbHVlc0l0ZXJhdG9yUmFuZ2Ug
dmFsdWVzKCk7DQogICAgY29uc3QgVmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIHZhbHVlcygpIGNv
bnN0Ow0KDQogICAgaXRlcmF0b3IgZmluZChjb25zdCBWYWx1ZVR5cGUmKTsNCiAgICBjb25zdF9p
dGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYpIGNvbnN0Ow0KICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgVmFsdWVUeXBlJikgY29uc3Q7DQogICAgdW5zaWduZWQgY291bnQoY29uc3QgVmFsdWVU
eXBlJikgY29uc3Q7DQoNCiAgICANCiAgICANCiAgICANCiAgICBBZGRSZXN1bHQgYWRkKGNvbnN0
IFZhbHVlVHlwZSYpOw0KICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYpOw0KDQogICAgDQog
ICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmLCB1bnNpZ25lZCk7DQogICAgQWRkUmVz
dWx0IGFkZChWYWx1ZVR5cGUmJiwgdW5zaWduZWQpOw0KDQogICAgDQogICAgDQogICAgYm9vbCBy
ZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7DQogICAgYm9vbCByZW1vdmUoaXRlcmF0b3IpOw0KDQog
ICAgDQogICAgDQogICAgYm9vbCByZW1vdmVBbGwoaXRlcmF0b3IpOw0KICAgIGJvb2wgcmVtb3Zl
QWxsKGNvbnN0IFZhbHVlVHlwZSYpOw0KDQogICAgDQogICAgdm9pZCBjbGVhcigpOw0KDQogICAg
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZSBmaW5kKHR5cGVuYW1l
IEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSk7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZh
bHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGNv
bnN0X2l0ZXJhdG9yPjo6dHlwZSBmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlw
ZSkgY29uc3Q7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlIGNvbnRhaW5z
KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSkgY29uc3Q7DQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0
cjxWPjo6dmFsdWUsIHVuc2lnbmVkPjo6dHlwZSBjb3VudCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Vj46OlB0clR5cGUpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBib29sPjo6dHlw
ZSByZW1vdmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKTsNCg0KICAgIHN0YXRp
YyBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBJbXBs
VHlwZTo6aXNWYWxpZFZhbHVlKHZhbHVlKTsgfQ0KDQpwcml2YXRlOg0KICAgIEltcGxUeXBlIG1f
aW1wbDsNCn07DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCmlubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVl
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpzd2FwKEhhc2hDb3VudGVkU2V0JiBvdGhlcikNCnsN
CiAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIHVu
c2lnbmVkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpzaXpl
KCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCmlu
bGluZSB1bnNpZ25lZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6Y2FwYWNpdHkoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIFRyYWl0cz4NCmlubGluZSBib29sIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHM+Ojppc0VtcHR5KCkgY29uc3QNCnsNCiAgICByZXR1cm4gc2l6ZSgpID09IDA7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHM+DQppbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSAtPiBpdGVyYXRvcg0Kew0KICAgIHJldHVybiBtX2lt
cGwuYmVnaW4oKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCmlubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZh
bHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjplbmQoKSAtPiBpdGVyYXRvcg0Kew0KICAgIHJl
dHVybiBtX2ltcGwuZW5kKCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQppbmxpbmUgYXV0byBIYXNoQ291bnRl
ZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6YmVnaW4oKSBjb25zdCAtPiBjb25z
dF9pdGVyYXRvcg0Kew0KICAgIHJldHVybiBtX2ltcGwuYmVnaW4oKTsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4N
CmlubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+
OjplbmQoKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcg0Kew0KICAgIHJldHVybiBtX2ltcGwuZW5k
KCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHM+DQppbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzPjo6dmFsdWVzKCkgLT4gVmFsdWVzSXRlcmF0b3JSYW5nZQ0Kew0K
ICAgIHJldHVybiBtX2ltcGwua2V5cygpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIGF1dG8gSGFz
aENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnZhbHVlcygpIGNvbnN0
IC0+IGNvbnN0IFZhbHVlc0NvbnN0SXRlcmF0b3JSYW5nZQ0Kew0KICAgIHJldHVybiBtX2ltcGwu
a2V5cygpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUs
IEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4g
aXRlcmF0b3INCnsNCiAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
Pg0KaW5saW5lIGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IN
CnsNCiAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5l
IGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnRh
aW5zKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1faW1wbC5j
b250YWlucyh2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQppbmxpbmUgdW5zaWduZWQgSGFzaENvdW50
ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvdW50KGNvbnN0IFZhbHVlVHlw
ZSYgdmFsdWUpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1faW1wbC5nZXQodmFsdWUpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzPg0KaW5saW5lIGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmFkZChjb25zdCBWYWx1ZVR5cGUgJnZhbHVlKSAtPiBBZGRSZXN1bHQNCnsNCiAg
ICBhdXRvIHJlc3VsdCA9IG1faW1wbC5hZGQodmFsdWUsIDApOw0KICAgICsrcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIGF1
dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChWYWx1
ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0DQp7DQogICAgYXV0byByZXN1bHQgPSBtX2ltcGwu
YWRkKHN0ZDo6Zm9yd2FyZDxWYWx1ZT4odmFsdWUpLCAwKTsNCiAgICArK3Jlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCmlubGluZSBhdXRv
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjphZGQoY29uc3Qg
VmFsdWVUeXBlJiB2YWx1ZSwgdW5zaWduZWQgY291bnQpIC0+IEFkZFJlc3VsdA0Kew0KICAgIGF1
dG8gcmVzdWx0ID0gbV9pbXBsLmFkZCh2YWx1ZSwgMCk7DQogICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSArPSBjb3VudDsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5l
IGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmFkZChW
YWx1ZVR5cGUmJiB2YWx1ZSwgdW5zaWduZWQgY291bnQpIC0+IEFkZFJlc3VsdA0Kew0KICAgIGF1
dG8gcmVzdWx0ID0gbV9pbXBsLmFkZChzdGQ6OmZvcndhcmQ8VmFsdWU+KHZhbHVlKSwgMCk7DQog
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsNCiAgICByZXR1cm4gcmVzdWx0Ow0K
fQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzPg0KaW5saW5lIGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cz46OnJlbW92ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQ0Kew0KICAgIHJl
dHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIGJvb2wgSGFz
aENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZShpdGVyYXRv
ciBpdCkNCnsNCiAgICBpZiAoaXQgPT0gZW5kKCkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0K
ICAgIHVuc2lnbmVkIG9sZFZhbCA9IGl0LT52YWx1ZTsNCiAgICAoKHZvaWQpMCk7DQogICAgdW5z
aWduZWQgbmV3VmFsID0gb2xkVmFsIC0gMTsNCiAgICBpZiAobmV3VmFsKSB7DQogICAgICAgIGl0
LT52YWx1ZSA9IG5ld1ZhbDsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIG1f
aW1wbC5yZW1vdmUoaXQpOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5l
IGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92
ZUFsbChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKQ0Kew0KICAgIHJldHVybiByZW1vdmVBbGwoZmlu
ZCh2YWx1ZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIGJvb2wgSGFzaENvdW50ZWRTZXQ8VmFs
dWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnJlbW92ZUFsbChpdGVyYXRvciBpdCkNCnsNCiAg
ICBpZiAoaXQgPT0gZW5kKCkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgIG1faW1wbC5y
ZW1vdmUoaXQpOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIHZvaWQg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNsZWFyKCkNCnsN
CiAgICBtX2ltcGwuY2xlYXIoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4NCnRlbXBsYXRlPHR5cGVuYW1lIFY+
DQppbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
Pjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUpIC0+IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUN
CnsNCiAgICByZXR1cm4gbV9pbXBsLmZpbmQodmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPg0KdGVtcGxh
dGU8dHlwZW5hbWUgVj4NCmlubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2
YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFs
dWUsIGNvbnN0X2l0ZXJhdG9yPjo6dHlwZQ0Kew0KICAgIHJldHVybiBtX2ltcGwuZmluZCh2YWx1
ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHM+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBWPg0KaW5saW5lIGF1dG8gSGFz
aENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvbnRhaW5zKHR5cGVu
YW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlDQp7DQogICAgcmV0
dXJuIG1faW1wbC5jb250YWlucyh2YWx1ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+DQp0ZW1wbGF0ZTx0eXBl
bmFtZSBWPg0KaW5saW5lIGF1dG8gSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmNvdW50KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkg
Y29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIHVu
c2lnbmVkPjo6dHlwZQ0Kew0KICAgIHJldHVybiBtX2ltcGwuZ2V0KHZhbHVlKTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRy
YWl0cz4NCnRlbXBsYXRlPHR5cGVuYW1lIFY+DQppbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxW
YWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBl
cjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0
cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlDQp7DQogICAgcmV0dXJuIHJlbW92ZShmaW5kKHZhbHVl
KSk7DQp9DQoNCn0gDQoNCnVzaW5nIFdURjo6SGFzaENvdW50ZWRTZXQ7DQojbGluZSAzMyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIYW5k
bGVTZXQuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvU2luZ2x5TGlua2VkTGlzdC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNw
YWNlIFdURiB7DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPg0KY2xhc3MgU2luZ2x5TGlua2Vk
TGlzdCB7DQpwdWJsaWM6DQogICAgU2luZ2x5TGlua2VkTGlzdCgpOw0KICAgIA0KICAgIGJvb2wg
aXNFbXB0eSgpOw0KDQogICAgdm9pZCBwdXNoKE5vZGUqKTsNCiAgICBOb2RlKiBwb3AoKTsNCg0K
cHJpdmF0ZToNCiAgICBOb2RlKiBtX2hlYWQ7DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9k
ZT4gaW5saW5lIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT46OlNpbmdseUxpbmtlZExpc3QoKQ0KICAg
IDogbV9oZWFkKDApDQp7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlPiBpbmxpbmUgYm9v
bCBTaW5nbHlMaW5rZWRMaXN0PE5vZGU+Ojppc0VtcHR5KCkNCnsNCiAgICByZXR1cm4gIW1faGVh
ZDsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IGlubGluZSB2b2lkIFNpbmdseUxpbmtl
ZExpc3Q8Tm9kZT46OnB1c2goTm9kZSogbm9kZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgbm9k
ZS0+c2V0TmV4dChtX2hlYWQpOw0KICAgIG1faGVhZCA9IG5vZGU7DQp9DQoNCnRlbXBsYXRlIDx0
eXBlbmFtZSBOb2RlPiBpbmxpbmUgTm9kZSogU2luZ2x5TGlua2VkTGlzdDxOb2RlPjo6cG9wKCkN
CnsNCiAgICBOb2RlKiB0bXAgPSBtX2hlYWQ7DQogICAgbV9oZWFkID0gbV9oZWFkLT5uZXh0KCk7
DQogICAgcmV0dXJuIHRtcDsNCn0NCg0KfQ0KDQp1c2luZyBXVEY6OlNpbmdseUxpbmtlZExpc3Q7
DQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxoZWFwXFxIYW5kbGVTZXQuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEhhbmRs
ZVNldDsNCmNsYXNzIFZNOw0KY2xhc3MgSlNWYWx1ZTsNCmNsYXNzIFNsb3RWaXNpdG9yOw0KDQpj
bGFzcyBIYW5kbGVOb2RlIHsNCnB1YmxpYzoNCiAgICBIYW5kbGVOb2RlKFdURjo6U2VudGluZWxU
YWcpOw0KICAgIEhhbmRsZU5vZGUoKTsNCiAgICANCiAgICBIYW5kbGVTbG90IHNsb3QoKTsNCiAg
ICBIYW5kbGVTZXQqIGhhbmRsZVNldCgpOw0KDQogICAgdm9pZCBzZXRQcmV2KEhhbmRsZU5vZGUq
KTsNCiAgICBIYW5kbGVOb2RlKiBwcmV2KCk7DQoNCiAgICB2b2lkIHNldE5leHQoSGFuZGxlTm9k
ZSopOw0KICAgIEhhbmRsZU5vZGUqIG5leHQoKTsNCg0KcHJpdmF0ZToNCiAgICBKU1ZhbHVlIG1f
dmFsdWU7DQogICAgSGFuZGxlTm9kZSogbV9wcmV2Ow0KICAgIEhhbmRsZU5vZGUqIG1fbmV4dDsN
Cn07DQoNCmNsYXNzIEhhbmRsZVNldCB7DQogICAgZnJpZW5kIGNsYXNzIEhhbmRsZUJsb2NrOw0K
cHVibGljOg0KICAgIHN0YXRpYyBIYW5kbGVTZXQqIGhlYXBGb3IoSGFuZGxlU2xvdCk7DQoNCiAg
ICBIYW5kbGVTZXQoVk0mKTsNCiAgICB+SGFuZGxlU2V0KCk7DQoNCiAgICBWTSYgdm0oKTsNCg0K
ICAgIEhhbmRsZVNsb3QgYWxsb2NhdGUoKTsNCiAgICB2b2lkIGRlYWxsb2NhdGUoSGFuZGxlU2xv
dCk7DQoNCiAgICB2b2lkIHZpc2l0U3Ryb25nSGFuZGxlcyhTbG90VmlzaXRvciYpOw0KDQogICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0
IEpTVmFsdWUmKTsNCg0KICAgIHVuc2lnbmVkIHByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KCk7
DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hTdHJvbmdIYW5k
bGUoY29uc3QgRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBza2lwU2V0
KTsNCg0KcHJpdmF0ZToNCiAgICB0eXBlZGVmIEhhbmRsZU5vZGUgTm9kZTsNCiAgICBzdGF0aWMg
SGFuZGxlU2xvdCB0b0hhbmRsZShOb2RlKik7DQogICAgc3RhdGljIE5vZGUqIHRvTm9kZShIYW5k
bGVTbG90KTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGdyb3coKTsNCiAgICAN
Cg0KDQojbGluZSA5NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxoZWFwXFxIYW5kbGVTZXQuaCINCg0KICAgIFZNJiBtX3ZtOw0KICAgIERvdWJseUxp
bmtlZExpc3Q8SGFuZGxlQmxvY2s+IG1fYmxvY2tMaXN0Ow0KDQogICAgU2VudGluZWxMaW5rZWRM
aXN0PE5vZGU+IG1fc3Ryb25nTGlzdDsNCiAgICBTZW50aW5lbExpbmtlZExpc3Q8Tm9kZT4gbV9p
bW1lZGlhdGVMaXN0Ow0KICAgIFNpbmdseUxpbmtlZExpc3Q8Tm9kZT4gbV9mcmVlTGlzdDsNCn07
DQoNCmlubGluZSBIYW5kbGVTZXQqIEhhbmRsZVNldDo6aGVhcEZvcihIYW5kbGVTbG90IGhhbmRs
ZSkNCnsNCiAgICByZXR1cm4gdG9Ob2RlKGhhbmRsZSktPmhhbmRsZVNldCgpOw0KfQ0KDQppbmxp
bmUgVk0mIEhhbmRsZVNldDo6dm0oKQ0Kew0KICAgIHJldHVybiBtX3ZtOw0KfQ0KDQppbmxpbmUg
SGFuZGxlU2xvdCBIYW5kbGVTZXQ6OnRvSGFuZGxlKEhhbmRsZVNldDo6Tm9kZSogbm9kZSkNCnsN
CiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90Pihub2RlKTsNCn0NCg0KaW5s
aW5lIEhhbmRsZVNldDo6Tm9kZSogSGFuZGxlU2V0Ojp0b05vZGUoSGFuZGxlU2xvdCBoYW5kbGUp
DQp7DQogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SGFuZGxlU2V0OjpOb2RlKj4oaGFuZGxl
KTsNCn0NCg0KaW5saW5lIEhhbmRsZVNsb3QgSGFuZGxlU2V0OjphbGxvY2F0ZSgpDQp7DQogICAg
aWYgKG1fZnJlZUxpc3QuaXNFbXB0eSgpKQ0KICAgICAgICBncm93KCk7DQoNCiAgICBIYW5kbGVT
ZXQ6Ok5vZGUqIG5vZGUgPSBtX2ZyZWVMaXN0LnBvcCgpOw0KICAgIG5ldyAoTm90TnVsbCwgbm9k
ZSkgSGFuZGxlU2V0OjpOb2RlKCk7DQogICAgbV9pbW1lZGlhdGVMaXN0LnB1c2gobm9kZSk7DQog
ICAgcmV0dXJuIHRvSGFuZGxlKG5vZGUpOw0KfQ0KDQppbmxpbmUgdm9pZCBIYW5kbGVTZXQ6OmRl
YWxsb2NhdGUoSGFuZGxlU2xvdCBoYW5kbGUpDQp7DQogICAgSGFuZGxlU2V0OjpOb2RlKiBub2Rl
ID0gdG9Ob2RlKGhhbmRsZSk7DQogICAgU2VudGluZWxMaW5rZWRMaXN0PEhhbmRsZVNldDo6Tm9k
ZT46OnJlbW92ZShub2RlKTsNCiAgICBtX2ZyZWVMaXN0LnB1c2gobm9kZSk7DQp9DQoNCmlubGlu
ZSBIYW5kbGVOb2RlOjpIYW5kbGVOb2RlKCkNCiAgICA6IG1fcHJldihudWxscHRyKQ0KICAgICwg
bV9uZXh0KG51bGxwdHIpDQp7DQp9DQoNCmlubGluZSBIYW5kbGVOb2RlOjpIYW5kbGVOb2RlKFdU
Rjo6U2VudGluZWxUYWcpDQogICAgOiBtX3ByZXYobnVsbHB0cikNCiAgICAsIG1fbmV4dChudWxs
cHRyKQ0Kew0KfQ0KDQppbmxpbmUgSGFuZGxlU2xvdCBIYW5kbGVOb2RlOjpzbG90KCkNCnsNCiAg
ICByZXR1cm4gJm1fdmFsdWU7DQp9DQoNCmlubGluZSBIYW5kbGVTZXQqIEhhbmRsZU5vZGU6Omhh
bmRsZVNldCgpDQp7DQogICAgcmV0dXJuIEhhbmRsZUJsb2NrOjpibG9ja0Zvcih0aGlzKS0+aGFu
ZGxlU2V0KCk7DQp9DQoNCmlubGluZSB2b2lkIEhhbmRsZU5vZGU6OnNldFByZXYoSGFuZGxlTm9k
ZSogcHJldikNCnsNCiAgICBtX3ByZXYgPSBwcmV2Ow0KfQ0KDQppbmxpbmUgSGFuZGxlTm9kZSog
SGFuZGxlTm9kZTo6cHJldigpDQp7DQogICAgcmV0dXJuIG1fcHJldjsNCn0NCg0KaW5saW5lIHZv
aWQgSGFuZGxlTm9kZTo6c2V0TmV4dChIYW5kbGVOb2RlKiBuZXh0KQ0Kew0KICAgIG1fbmV4dCA9
IG5leHQ7DQp9DQoNCmlubGluZSBIYW5kbGVOb2RlKiBIYW5kbGVOb2RlOjpuZXh0KCkNCnsNCiAg
ICByZXR1cm4gbV9uZXh0Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIEhh
bmRsZVNldDo6Zm9yRWFjaFN0cm9uZ0hhbmRsZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yLCBjb25z
dCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCkNCnsNCiAgICBIYW5kbGVTZXQ6Ok5v
ZGUqIGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsNCiAgICBmb3IgKEhhbmRsZVNldDo6Tm9kZSog
bm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5vZGUtPm5l
eHQoKSkgew0KICAgICAgICBKU1ZhbHVlIHZhbHVlID0gKm5vZGUtPnNsb3QoKTsNCiAgICAgICAg
aWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpDQogICAgICAgICAgICBjb250aW51ZTsNCiAg
ICAgICAgaWYgKHNraXBTZXQuY29udGFpbnModmFsdWUuYXNDZWxsKCkpKQ0KICAgICAgICAgICAg
Y29udGludWU7DQogICAgICAgIGZ1bmN0b3IodmFsdWUuYXNDZWxsKCkpOw0KICAgIH0NCn0NCg0K
fSANCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGhlYXBcXEhlYXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcEZpbmFsaXplckNhbGxiYWNrLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXEFQSVxcSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxKYXZhU2NyaXB0Q29yZVxcSGVhZGVyc1xc
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHRHcm91cCogSlNDb250ZXh0R3JvdXBSZWY7DQoNCg0K
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7DQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbENvbnRleHRSZWY7DQoNCg0K
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcqIEpTU3RyaW5nUmVmOw0KDQoNCnR5cGVkZWYg
c3RydWN0IE9wYXF1ZUpTQ2xhc3MqIEpTQ2xhc3NSZWY7DQoNCg0KdHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlSlNQcm9wZXJ0eU5hbWVBcnJheSogSlNQcm9wZXJ0eU5hbWVBcnJheVJlZjsNCg0KDQp0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yKiBKU1Byb3BlcnR5TmFt
ZUFjY3VtdWxhdG9yUmVmOw0KDQoNCnR5cGVkZWYgdm9pZCAoKkpTVHlwZWRBcnJheUJ5dGVzRGVh
bGxvY2F0b3IpKHZvaWQqIGJ5dGVzLCB2b2lkKiBkZWFsbG9jYXRvckNvbnRleHQpOw0KDQoNCg0K
DQp0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU1ZhbHVlUmVmOw0KDQoNCnR5
cGVkZWYgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxKYXZhU2NyaXB0Q29yZVxcSGVhZGVyc1xcSmF2YVNjcmlwdENvcmUvSlNCYXNlLmgiDQoN
Cg0KDQoNCiNsaW5lIDkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxK
YXZhU2NyaXB0Q29yZVxcSGVhZGVyc1xcSmF2YVNjcmlwdENvcmUvSlNCYXNlLmgiDQoNCg0KDQoN
CiNsaW5lIDk1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxKYXZhU2Ny
aXB0Q29yZVxcSGVhZGVyc1xcSmF2YVNjcmlwdENvcmUvSlNCYXNlLmgiDQoNCg0KZXh0ZXJuICJD
IiB7DQojbGluZSA5OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2
YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlUmVmIEpTRXZh
bHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVO
dW1iZXIsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgSlNDaGVja1NjcmlwdFN5bnRheChKU0NvbnRleHRSZWYg
Y3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTU3RyaW5nUmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0
aW5nTGluZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBKU0dhcmJhZ2VDb2xsZWN0KEpT
Q29udGV4dFJlZiBjdHgpOw0KDQoNCn0NCiNsaW5lIDE0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3JpcHRDb3Jl
L0pTQmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE1NCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3JpcHRD
b3JlL0pTQmFzZS5oIg0KDQojbGluZSAxNTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXEphdmFTY3JpcHRDb3JlXFxIZWFkZXJzXFxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aCINCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXEFQSVxcSlNIZWFwRmluYWxpemVyUHJpdmF0ZS5oIg0KDQoNCg0KZXh0ZXJuICJDIiB7
DQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxBUElcXEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCINCg0KdHlwZWRlZiB2b2lkICgqSlNI
ZWFwRmluYWxpemVyKShKU0NvbnRleHRHcm91cFJlZiwgdm9pZCAqdXNlckRhdGEpOw0KDQpfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBKU0NvbnRleHRHcm91cEFkZEhlYXBGaW5hbGl6ZXIoSlND
b250ZXh0R3JvdXBSZWYsIEpTSGVhcEZpbmFsaXplciwgdm9pZCAqdXNlckRhdGEpOw0KX19kZWNs
c3BlYyhkbGxleHBvcnQpIHZvaWQgSlNDb250ZXh0R3JvdXBSZW1vdmVIZWFwRmluYWxpemVyKEpT
Q29udGV4dEdyb3VwUmVmLCBKU0hlYXBGaW5hbGl6ZXIsIHZvaWQgKnVzZXJEYXRhKTsNCg0KDQp9
DQojbGluZSA0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxBUElcXEpTSGVhcEZpbmFsaXplclByaXZhdGUuaCINCg0KI2xpbmUgNDYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcQVBJXFxKU0hlYXBGaW5h
bGl6ZXJQcml2YXRlLmgiDQoNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXBGaW5hbGl6ZXJDYWxsYmFjay5oIg0KDQoN
Cm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBWTTsNCg0KY2xhc3MgSGVhcEZpbmFsaXplckNhbGxi
YWNrIHsNCnB1YmxpYzoNCiAgICBIZWFwRmluYWxpemVyQ2FsbGJhY2soSlNIZWFwRmluYWxpemVy
IGZpbmFsaXplciA9IG51bGxwdHIsIHZvaWQgKnVzZXJEYXRhID0gbnVsbHB0cikNCiAgICAgICAg
OiBtX2ZpbmFsaXplcihmaW5hbGl6ZXIpDQogICAgICAgICwgbV91c2VyRGF0YSh1c2VyRGF0YSkN
CiAgICB7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwRmluYWxp
emVyQ2FsbGJhY2smIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fZmluYWxp
emVyID09IG90aGVyLm1fZmluYWxpemVyDQogICAgICAgICAgICAmJiBtX3VzZXJEYXRhID09IG90
aGVyLm1fdXNlckRhdGE7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBI
ZWFwRmluYWxpemVyQ2FsbGJhY2smIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOw0KICAgIH0NCiAgICANCiAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAqdGhpcyAhPSBIZWFwRmluYWxpemVy
Q2FsbGJhY2soKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7DQogICAgDQogICAgdm9pZCBydW4oVk0mKSBjb25zdDsNCiAgICANCnByaXZhdGU6DQogICAg
SlNIZWFwRmluYWxpemVyIG1fZmluYWxpemVyOw0KICAgIHZvaWQgKm1fdXNlckRhdGE7DQp9Ow0K
DQp9IA0KDQojbGluZSAzNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxoZWFwXFxIZWFwLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXBPYnNlcnZlci5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBIZWFwT2JzZXJ2ZXIgew0KcHVibGljOg0K
ICAgIHZpcnR1YWwgfkhlYXBPYnNlcnZlcigpIHsgfQ0KICAgIHZpcnR1YWwgdm9pZCB3aWxsR2Fy
YmFnZUNvbGxlY3QoKSA9IDA7DQogICAgdmlydHVhbCB2b2lkIGRpZEdhcmJhZ2VDb2xsZWN0KENv
bGxlY3Rpb25TY29wZSkgPSAwOw0KfTsNCg0KfSANCiNsaW5lIDM3ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhl
YXBcXE11dGF0b3JTdGF0ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xh
c3MgTXV0YXRvclN0YXRlIHsNCiAgICANCiAgICBSdW5uaW5nLA0KICAgIA0KICAgIA0KICAgIEFs
bG9jYXRpbmcsDQogICAgDQogICAgDQogICAgU3dlZXBpbmcsDQogICAgDQogICAgDQogICAgQ29s
bGVjdGluZw0KfTsNCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIFByaW50U3RyZWFt
Ow0KDQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Ok11dGF0b3JTdGF0ZSk7
DQoNCn0gDQoNCiNsaW5lIDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmVJRFRhYmxl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaml0XFxVbnVzZWRQb2ludGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0Kc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgdW51c2VkUG9pbnRlciA9IDB4
ZDFlN2JlZWY7DQoNCn0gDQoNCnVzaW5nIEpTQzo6dW51c2VkUG9pbnRlcjsNCiNsaW5lIDMwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XFN0cnVjdHVyZUlEVGFibGUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1VuaXF1ZUFycmF5LmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp1c2luZyBVbmlxdWVBcnJheU1hbGxvYyA9IEZhc3RN
YWxsb2M7DQp1c2luZyBVbmlxdWVBcnJheUVsZW1lbnRNYWxsb2MgPSBGYXN0TWFsbG9jOw0KDQp0
ZW1wbGF0ZTxib29sIGlzVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlLCB0eXBlbmFtZSBUPiBzdHJ1Y3Qg
VW5pcXVlQXJyYXlNYWtlcjsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnN0cnVjdCBVbmlxdWVB
cnJheUZyZWUgew0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPFQ+Ojp2YWx1ZSwgIiIpOw0KDQogICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNv
bnN0DQogICAgew0KICAgICAgICBVbmlxdWVBcnJheU1hbGxvYzo6ZnJlZShjb25zdF9jYXN0PHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOw0KICAgIH0NCn07DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgVW5pcXVlQXJyYXlGcmVlPFRbXT4gew0KICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwg
IiIpOw0KDQogICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0DQogICAgew0KICAg
ICAgICBVbmlxdWVBcnJheU1hbGxvYzo6ZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVD4NCnN0cnVjdCBVbmlxdWVBcnJheU1ha2VyPHRydWUsIFQ+IHsNCiAgICB1c2luZyBS
ZXN1bHRUeXBlID0gdHlwZW5hbWUgc3RkOjp1bmlxdWVfcHRyPFRbXSwgVW5pcXVlQXJyYXlGcmVl
PFRbXT4+Ow0KDQogICAgc3RhdGljIFJlc3VsdFR5cGUgbWFrZShzaXplX3Qgc2l6ZSkNCiAgICB7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVl
LCAiIik7DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgVCogc3RvcmFn
ZSA9IHN0YXRpY19jYXN0PFQqPihVbmlxdWVBcnJheU1hbGxvYzo6bWFsbG9jKChDaGVja2VkPHNp
emVfdD4oc2l6ZW9mKFQpKSAqIHNpemUpLnVuc2FmZUdldCgpKSk7DQogICAgICAgIFZlY3RvclR5
cGVPcGVyYXRpb25zPFQ+Ojppbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBzaXplKTsNCiAg
ICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoc3RvcmFnZSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVD4NCnN0cnVjdCBVbmlxdWVBcnJheU1ha2VyPGZhbHNlLCBUPiB7DQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgY2xhc3MgVW5pcXVlQXJyYXlFbGVtZW50IHsNCiAgICAgICAg
cHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZv
aWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtp
dEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFT
ZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICBwdWJsaWM6DQogICAgICAgIHN0cnVj
dCBEZWxldGVyIHsNCiAgICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKQ0KICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSBiaXR3aXNlX2Nhc3Q8VW5pcXVl
QXJyYXlFbGVtZW50Kj4ocG9pbnRlcik7DQogICAgICAgICAgICB9Ow0KICAgICAgICB9Ow0KDQog
ICAgICAgIFVuaXF1ZUFycmF5RWxlbWVudCgpID0gZGVmYXVsdDsNCg0KICAgICAgICBUIHZhbHVl
IHsgfTsNCiAgICB9Ow0KICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNpemVvZihVbmlx
dWVBcnJheUVsZW1lbnQpLCAiIik7DQoNCiAgICB1c2luZyBSZXN1bHRUeXBlID0gdHlwZW5hbWUg
c3RkOjp1bmlxdWVfcHRyPFRbXSwgdHlwZW5hbWUgVW5pcXVlQXJyYXlFbGVtZW50OjpEZWxldGVy
PjsNCg0KICAgIHN0YXRpYyBSZXN1bHRUeXBlIG1ha2Uoc2l6ZV90IHNpemUpDQogICAgew0KICAg
ICAgICByZXR1cm4gUmVzdWx0VHlwZShiaXR3aXNlX2Nhc3Q8VCo+KG5ldyBVbmlxdWVBcnJheUVs
ZW1lbnRbc2l6ZV0oKSkpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQp1c2lu
ZyBVbmlxdWVBcnJheSA9IHR5cGVuYW1lIFVuaXF1ZUFycmF5TWFrZXI8c3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgVD46OlJlc3VsdFR5cGU7DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQ+DQpVbmlxdWVBcnJheTxUPiBtYWtlVW5pcXVlQXJyYXkoc2l6ZV90IHNpemUpDQp7
DQogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfZXh0
ZW50PFQ+Ojp0eXBlLCBUPjo6dmFsdWUsICIiKTsNCiAgICByZXR1cm4gVW5pcXVlQXJyYXlNYWtl
cjxzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCBUPjo6bWFrZShzaXpl
KTsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjpVbmlxdWVBcnJheTsNCnVzaW5nIFdURjo6bWFrZVVu
aXF1ZUFycmF5Ow0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlSURUYWJsZS5oIg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9X
ZWFrUmFuZG9tLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdWludDMyX3QgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIo
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFs
dWVzKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7DQoNCn0NCg0KdXNpbmcgV1RGOjpjcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlcjsNCnVzaW5nIFdURjo6Y3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21WYWx1ZXM7DQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvV2Vha1JhbmRvbS5oIg0KDQoNCm5hbWVzcGFjZSBXVEYg
ew0KDQoNCg0KY2xhc3MgV2Vha1JhbmRvbSBmaW5hbCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0
b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2
b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgo
dm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGlu
dDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNN
YWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBXZWFrUmFuZG9tKHVuc2lnbmVkIHNlZWQgPSBjcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKQ0KICAgIHsNCiAgICAgICAgc2V0U2VlZChzZWVk
KTsNCiAgICB9DQoNCiAgICB2b2lkIHNldFNlZWQodW5zaWduZWQgc2VlZCkNCiAgICB7DQogICAg
ICAgIG1fc2VlZCA9IHNlZWQ7DQoNCiAgICAgICAgDQogICAgICAgIGlmICghc2VlZCkNCiAgICAg
ICAgICAgIHNlZWQgPSAxOw0KDQogICAgICAgIG1fbG93ID0gc2VlZDsNCiAgICAgICAgbV9oaWdo
ID0gc2VlZDsNCiAgICAgICAgYWR2YW5jZSgpOw0KICAgIH0NCg0KICAgIHVuc2lnbmVkIHNlZWQo
KSBjb25zdCB7IHJldHVybiBtX3NlZWQ7IH0NCg0KICAgIGRvdWJsZSBnZXQoKQ0KICAgIHsNCiAg
ICAgICAgdWludDY0X3QgdmFsdWUgPSBhZHZhbmNlKCkgJiAoKDFVTEwgPDwgNTMpIC0gMSk7DQog
ICAgICAgIHJldHVybiB2YWx1ZSAqICgxLjAgLyAoMVVMTCA8PCA1MykpOw0KICAgIH0NCg0KICAg
IHVuc2lnbmVkIGdldFVpbnQzMigpDQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGFkdmFuY2UoKSk7DQogICAgfQ0KDQogICAgdW5zaWduZWQgZ2V0VWludDMyKHVu
c2lnbmVkIGxpbWl0KQ0KICAgIHsNCiAgICAgICAgaWYgKGxpbWl0IDw9IDEpDQogICAgICAgICAg
ICByZXR1cm4gMDsNCiAgICAgICAgdWludDY0X3QgY3V0b2ZmID0gKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpICsgMSkgLyBsaW1pdCAq
IGxpbWl0Ow0KICAgICAgICBmb3IgKDs7KSB7DQogICAgICAgICAgICB1aW50NjRfdCB2YWx1ZSA9
IGdldFVpbnQzMigpOw0KICAgICAgICAgICAgaWYgKHZhbHVlID49IGN1dG9mZikNCiAgICAgICAg
ICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAlIGxpbWl0Ow0KICAg
ICAgICB9DQogICAgfQ0KDQogICAgc3RhdGljIHVuc2lnbmVkIGxvd09mZnNldCgpIHsgcmV0dXJu
IChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFdlYWtSYW5k
b20qPigweDQwMDApLT5tX2xvdykpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyB1bnNpZ25lZCBo
aWdoT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50
ZXJwcmV0X2Nhc3Q8V2Vha1JhbmRvbSo+KDB4NDAwMCktPm1faGlnaCkpIC0gMHg0MDAwKTsgfQ0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0U3RhdGUodWludDY0X3QgeCwgdWlu
dDY0X3QgeSkNCiAgICB7DQogICAgICAgIHggXj0geCA8PCAyMzsNCiAgICAgICAgeCBePSB4ID4+
IDE3Ow0KICAgICAgICB4IF49IHkgXiAoeSA+PiAyNik7DQogICAgICAgIHJldHVybiB4Ow0KICAg
IH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgZ2VuZXJhdGUodW5zaWduZWQgc2Vl
ZCkNCiAgICB7DQogICAgICAgIGlmICghc2VlZCkNCiAgICAgICAgICAgIHNlZWQgPSAxOw0KICAg
ICAgICB1aW50NjRfdCBsb3cgPSBzZWVkOw0KICAgICAgICB1aW50NjRfdCBoaWdoID0gc2VlZDsN
CiAgICAgICAgaGlnaCA9IG5leHRTdGF0ZShsb3csIGhpZ2gpOw0KICAgICAgICByZXR1cm4gbG93
ICsgaGlnaDsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdWludDY0X3QgYWR2YW5jZSgpDQogICAg
ew0KICAgICAgICB1aW50NjRfdCB4ID0gbV9sb3c7DQogICAgICAgIHVpbnQ2NF90IHkgPSBtX2hp
Z2g7DQogICAgICAgIG1fbG93ID0geTsNCiAgICAgICAgbV9oaWdoID0gbmV4dFN0YXRlKHgsIHkp
Ow0KICAgICAgICByZXR1cm4gbV9oaWdoICsgbV9sb3c7DQogICAgfQ0KDQogICAgdW5zaWduZWQg
bV9zZWVkOw0KICAgIHVpbnQ2NF90IG1fbG93Ow0KICAgIHVpbnQ2NF90IG1faGlnaDsNCn07DQoN
Cn0gDQoNCnVzaW5nIFdURjo6V2Vha1JhbmRvbTsNCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN0cnVjdHVyZUlEVGFi
bGUuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFN0cnVjdHVyZTsNCg0KDQp0eXBlZGVm
IHVpbnQzMl90IFN0cnVjdHVyZUlEOw0KDQppbmxpbmUgU3RydWN0dXJlSUQgbnVrZWRTdHJ1Y3R1
cmVJREJpdCgpDQp7DQogICAgcmV0dXJuIDB4ODAwMDAwMDB1Ow0KfQ0KDQppbmxpbmUgU3RydWN0
dXJlSUQgbnVrZShTdHJ1Y3R1cmVJRCBpZCkNCnsNCiAgICByZXR1cm4gaWQgfCBudWtlZFN0cnVj
dHVyZUlEQml0KCk7DQp9DQoNCmlubGluZSBib29sIGlzTnVrZWQoU3RydWN0dXJlSUQgaWQpDQp7
DQogICAgcmV0dXJuICEhKGlkICYgbnVrZWRTdHJ1Y3R1cmVJREJpdCgpKTsNCn0NCg0KaW5saW5l
IFN0cnVjdHVyZUlEIGRlY29udGFtaW5hdGUoU3RydWN0dXJlSUQgaWQpDQp7DQogICAgcmV0dXJu
IGlkICYgfm51a2VkU3RydWN0dXJlSURCaXQoKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlSURUYWJsZS5oIg0KDQoN
Cg0KdXNpbmcgRW5jb2RlZFN0cnVjdHVyZUJpdHMgPSB1aW50cHRyX3Q7DQoNCmNsYXNzIFN0cnVj
dHVyZUlEVGFibGUgew0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQpw
dWJsaWM6DQogICAgU3RydWN0dXJlSURUYWJsZSgpOw0KDQogICAgdm9pZCoqIGJhc2UoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1fdGFibGUpOyB9DQoNCiAgICBfX2ZvcmNl
aW5saW5lIHZvaWQgdmFsaWRhdGUoU3RydWN0dXJlSUQpOw0KDQogICAgU3RydWN0dXJlKiBnZXQo
U3RydWN0dXJlSUQpOw0KICAgIHZvaWQgZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSosIFN0cnVjdHVy
ZUlEKTsNCiAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVyZSopOw0KDQogICAgdm9p
ZCBmbHVzaE9sZFRhYmxlcygpOw0KICAgIA0KICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9DQoNCnByaXZhdGU6DQogICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld0NhcGFj
aXR5KTsNCiAgICB2b2lkIG1ha2VGcmVlTGlzdEZyb21SYW5nZSh1aW50MzJfdCBmaXJzdCwgdWlu
dDMyX3QgbGFzdCk7DQoNCiAgICB1bmlvbiBTdHJ1Y3R1cmVPck9mZnNldCB7DQogICAgICAgIHB1
YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRG
YXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgcHVibGljOg0KICAgICAgICBFbmNvZGVk
U3RydWN0dXJlQml0cyBlbmNvZGVkU3RydWN0dXJlQml0czsNCiAgICAgICAgdWludHB0cl90IG9m
ZnNldDsNCiAgICB9Ow0KDQogICAgU3RydWN0dXJlT3JPZmZzZXQqIHRhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90YWJsZS5nZXQoKTsgfQ0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlY29kZShFbmNv
ZGVkU3RydWN0dXJlQml0cywgU3RydWN0dXJlSUQpOw0KICAgIHN0YXRpYyBFbmNvZGVkU3RydWN0
dXJlQml0cyBlbmNvZGUoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQpOw0KDQogICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3Qgc19pbml0aWFsU2l6ZSA9IDUxMjsNCg0KICAgIFZlY3RvcjxVbmlxdWVB
cnJheTxTdHJ1Y3R1cmVPck9mZnNldD4+IG1fb2xkVGFibGVzOw0KDQogICAgdWludDMyX3QgbV9m
aXJzdEZyZWVPZmZzZXQgeyAwIH07DQogICAgdWludDMyX3QgbV9sYXN0RnJlZU9mZnNldCB7IDAg
fTsNCiAgICBVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4gbV90YWJsZTsNCg0KICAgIHNp
emVfdCBtX3NpemUgeyAwIH07DQogICAgc2l6ZV90IG1fY2FwYWNpdHk7DQoNCiAgICBXZWFrUmFu
ZG9tIG1fd2Vha1JhbmRvbTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgU3RydWN0dXJlSUQgc191
bnVzZWRJRCA9IDA7DQoNCnB1YmxpYzoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19udW1i
ZXJPZk51a2VCaXRzID0gMTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfbnVtYmVy
T2ZFbnRyb3B5Qml0cyA9IDc7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2VudHJv
cHlCaXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyID0gKHNpemVvZihFbmNvZGVkU3RydWN0dXJl
Qml0cykgKiA4KSAtIDE2Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX21heGlt
dW1OdW1iZXJPZlN0cnVjdHVyZXMgPSAxIDw8ICgzMiAtIHNfbnVtYmVyT2ZFbnRyb3B5Qml0cyAt
IHNfbnVtYmVyT2ZOdWtlQml0cyk7DQp9Ow0KDQpfX2ZvcmNlaW5saW5lIFN0cnVjdHVyZSogU3Ry
dWN0dXJlSURUYWJsZTo6ZGVjb2RlKEVuY29kZWRTdHJ1Y3R1cmVCaXRzIGJpdHMsIFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEKQ0Kew0KICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8U3RydWN0dXJlKj4o
Yml0cyBeIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZUlEKSA8PCBzX2VudHJvcHlC
aXRzU2hpZnRGb3JTdHJ1Y3R1cmVQb2ludGVyKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgRW5jb2Rl
ZFN0cnVjdHVyZUJpdHMgU3RydWN0dXJlSURUYWJsZTo6ZW5jb2RlKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkNCnsNCiAgICByZXR1cm4gYml0d2lzZV9jYXN0
PEVuY29kZWRTdHJ1Y3R1cmVCaXRzPihzdHJ1Y3R1cmUpIF4gKHN0YXRpY19jYXN0PEVuY29kZWRT
dHJ1Y3R1cmVCaXRzPihzdHJ1Y3R1cmVJRCkgPDwgc19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0
dXJlUG9pbnRlcik7DQp9DQoNCmlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlEVGFibGU6Omdl
dChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lk
KTApOw0KICAgIHVpbnQzMl90IHN0cnVjdHVyZUluZGV4ID0gc3RydWN0dXJlSUQgPj4gc19udW1i
ZXJPZkVudHJvcHlCaXRzOw0KICAgIGRvIHsgaWYgKCghKHN0cnVjdHVyZUluZGV4IDwgbV9jYXBh
Y2l0eSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5j
ZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTc3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmVJRFRhYmxlLmgi
LCAgX19GVU5DVElPTl9fICAsIDIwICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQog
ICAgcmV0dXJuIGRlY29kZSh0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5lbmNvZGVkU3RydWN0dXJl
Qml0cywgc3RydWN0dXJlSUQpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHZvaWQgU3RydWN0dXJlSURU
YWJsZTo6dmFsaWRhdGUoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpDQp7DQogICAgdWludDMyX3Qg
c3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9mRW50cm9weUJpdHM7DQog
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBkZWNvZGUodGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0u
ZW5jb2RlZFN0cnVjdHVyZUJpdHMsIHN0cnVjdHVyZUlEKTsNCiAgICBkbyB7IGlmICgoIShzdHJ1
Y3R1cmVJbmRleCA8IG1fY2FwYWNpdHkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJU
eXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE4NSwgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
U3RydWN0dXJlSURUYWJsZS5oIiwgIF9fRlVOQ1RJT05fXyAgLCAyMSApOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOw0KICAgICpiaXR3aXNlX2Nhc3Q8dm9sYXRpbGUgdWludDY0X3QqPihz
dHJ1Y3R1cmUpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDIwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxTdHJ1Y3R1cmVJRFRhYmxlLmgiDQoNCn0gDQojbGluZSA0MiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFwLmgiDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGhlYXBcXFN5bmNocm9ub3VzbmVzcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVu
dW0gU3luY2hyb25vdXNuZXNzIHsNCiAgICBBc3luYywNCiAgICBTeW5jDQp9Ow0KDQp9IA0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07DQoNCnZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OlN5bmNocm9ub3VzbmVzcyk7DQoNCn0gDQoNCiNsaW5l
IDQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhl
YXBcXEhlYXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaGVhcFxcV2Vha0hhbmRsZU93bmVyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFNsb3RWaXNpdG9yOw0KDQpjbGFzcyBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgV2Vha0hhbmRsZU93bmVyIHsNCnB1YmxpYzoNCiAgICB2aXJ0dWFsIH5XZWFrSGFu
ZGxlT3duZXIoKTsNCiAgICANCiAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0LCBTbG90VmlzaXRvciYsIGNoYXIg
Y29uc3QqKiByZWFzb24gPSBudWxscHRyKTsNCiAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFu
ZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KTsNCn07DQoNCn0gDQojbGluZSA0NCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFwLmgi
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9BdXRvbWF0aWNUaHJlYWQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0JveC5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pg0KY2xhc3MgQm94IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9j
YXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGlj
Og0KICAgIEJveCgpID0gZGVmYXVsdDsNCiAgICBCb3goQm94JiYpID0gZGVmYXVsdDsNCiAgICBC
b3goY29uc3QgQm94JikgPSBkZWZhdWx0Ow0KDQogICAgQm94KHN0ZDo6bnVsbHB0cl90KQ0KICAg
IHsNCiAgICB9DQoNCiAgICBCb3gmIG9wZXJhdG9yPShCb3gmJikgPSBkZWZhdWx0Ow0KICAgIEJv
eCYgb3BlcmF0b3I9KGNvbnN0IEJveCYpID0gZGVmYXVsdDsNCg0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4NCiAgICBzdGF0aWMgQm94IGNyZWF0ZShBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpDQogICAgew0KICAgICAgICBCb3ggcmVzdWx0Ow0KICAgICAgICByZXN1bHQubV9k
YXRhID0gYWRvcHRSZWYobmV3IERhdGEoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLikpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIFQqIGdldCgpIGNv
bnN0IHsgcmV0dXJuICZtX2RhdGEtPnZhbHVlOyB9DQoNCiAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiBtX2RhdGEtPnZhbHVlOyB9DQogICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuICZtX2RhdGEtPnZhbHVlOyB9DQoNCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9kYXRhKTsgfQ0KICAgIA0KcHJpdmF0
ZToNCiAgICBzdHJ1Y3QgRGF0YSA6IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGE+IHsNCiAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPg0KICAgICAgICBEYXRhKEFyZ3VtZW50
cyYmLi4uIGFyZ3VtZW50cykNCiAgICAgICAgICAgIDogdmFsdWUoc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50cz4oYXJndW1lbnRzKS4uLikNCiAgICAgICAgew0KICAgICAgICB9DQogICAgICAgIA0KICAg
ICAgICBUIHZhbHVlOw0KICAgIH07DQoNCiAgICBSZWZQdHI8RGF0YT4gbV9kYXRhOw0KfTsNCg0K
fSANCg0KdXNpbmcgV1RGOjpCb3g7DQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQXV0b21hdGljVGhyZWFkLmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9Db25kaXRpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGFya2luZ0xvdC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07DQoNCmNsYXNzIFRp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBmaW5hbCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9p
ZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsg
cHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
byA9IGludDsNCnB1YmxpYzoNCiAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUoKSB7IH0NCiAg
ICANCiAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUoV2FsbFRpbWUgdGltZSkNCiAgICAgICAg
OiBtX3ZhbHVlKHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKQ0KICAgICAgICAsIG1f
dHlwZShDbG9ja1R5cGU6OldhbGwpDQogICAgew0KICAgIH0NCiAgICANCiAgICBUaW1lV2l0aER5
bmFtaWNDbG9ja1R5cGUoTW9ub3RvbmljVGltZSB0aW1lKQ0KICAgICAgICA6IG1fdmFsdWUodGlt
ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpDQogICAgICAgICwgbV90eXBlKENsb2NrVHlw
ZTo6TW9ub3RvbmljKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgc3RhdGljIFRpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZSBmcm9tUmF3U2Vjb25kcyhkb3VibGUgdmFsdWUsIENsb2NrVHlwZSB0eXBl
KQ0KICAgIHsNCiAgICAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIHJlc3VsdDsNCiAgICAg
ICAgcmVzdWx0Lm1fdmFsdWUgPSB2YWx1ZTsNCiAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IHR5cGU7
DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIFNlY29uZHMgc2Vjb25k
c1NpbmNlRXBvY2goKSBjb25zdCB7IHJldHVybiBTZWNvbmRzKG1fdmFsdWUpOyB9DQogICAgQ2xv
Y2tUeXBlIGNsb2NrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQ0KICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG5vdyhD
bG9ja1R5cGUpOw0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBUaW1lV2l0aER5bmFt
aWNDbG9ja1R5cGUgbm93V2l0aFNhbWVDbG9jaygpIGNvbnN0Ow0KICAgIA0KICAgIFRpbWVXaXRo
RHluYW1pY0Nsb2NrVHlwZSB3aXRoU2FtZUNsb2NrQW5kUmF3U2Vjb25kcyhkb3VibGUgdmFsdWUp
IGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlOjpm
cm9tUmF3U2Vjb25kcyh2YWx1ZSwgY2xvY2tUeXBlKCkpOw0KICAgIH0NCiAgICANCiAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgV2FsbFRpbWUgd2FsbFRpbWUoKSBjb25zdDsNCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgTW9ub3RvbmljVGltZSBtb25vdG9uaWNUaW1lKCkgY29uc3Q7
DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFdhbGxUaW1lIGFwcHJveGltYXRlV2Fs
bFRpbWUoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgTW9ub3RvbmljVGltZSBh
cHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSBjb25zdDsNCiAgICANCiAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3ZhbHVlOyB9DQogICAgDQogICAgVGltZVdp
dGhEeW5hbWljQ2xvY2tUeXBlIG9wZXJhdG9yKyhTZWNvbmRzIG90aGVyKSBjb25zdA0KICAgIHsN
CiAgICAgICAgcmV0dXJuIHdpdGhTYW1lQ2xvY2tBbmRSYXdTZWNvbmRzKG1fdmFsdWUgKyBvdGhl
ci52YWx1ZSgpKTsNCiAgICB9DQogICAgDQogICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG9w
ZXJhdG9yLShTZWNvbmRzIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHdpdGhT
YW1lQ2xvY2tBbmRSYXdTZWNvbmRzKG1fdmFsdWUgLSBvdGhlci52YWx1ZSgpKTsNCiAgICB9DQog
ICAgDQogICAgDQogICAgDQogICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG9wZXJhdG9yLSgp
IGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gd2l0aFNhbWVDbG9ja0FuZFJhd1NlY29uZHMo
LW1fdmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgb3Bl
cmF0b3IrPShTZWNvbmRzIG90aGVyKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICp0aGlzID0gKnRo
aXMgKyBvdGhlcjsNCiAgICB9DQogICAgDQogICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG9w
ZXJhdG9yLT0oU2Vjb25kcyBvdGhlcikNCiAgICB7DQogICAgICAgIHJldHVybiAqdGhpcyA9ICp0
aGlzIC0gb3RoZXI7DQogICAgfQ0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTZWNv
bmRzIG9wZXJhdG9yLShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmKSBjb25zdDsNCiAg
ICANCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJiBv
dGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFs
dWUNCiAgICAgICAgICAgICYmIG1fdHlwZSA9PSBvdGhlci5tX3R5cGU7DQogICAgfQ0KICAgIA0K
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIG90aGVy
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOw0KICAgIH0N
CiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBvcGVyYXRvcjwoY29u
c3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNv
bnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIG9wZXJhdG9yPD0oY29uc3QgVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IGJvb2wgb3BlcmF0b3I+PShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmKSBjb25zdDsN
CiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7DQogICAgDQpwcml2YXRlOg0KICAgIGRvdWJsZSBtX3ZhbHVlIHsgMCB9Ow0KICAgIENs
b2NrVHlwZSBtX3R5cGUgeyBDbG9ja1R5cGU6OldhbGwgfTsNCn07DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB2b2lkIHNsZWVwKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpOw0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBoYXNFbGFwc2VkKGNvbnN0IFRpbWVXaXRoRHluYW1p
Y0Nsb2NrVHlwZSYpOw0KDQp9IA0KDQpuYW1lc3BhY2Ugc3RkIHsNCg0KaW5saW5lIGJvb2wgaXNu
YW4oV1RGOjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgdGltZSkNCnsNCiAgICByZXR1cm4gc3Rk
Ojppc25hbih0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7DQp9DQoNCmlubGluZSBi
b29sIGlzaW5mKFdURjo6VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIHRpbWUpDQp7DQogICAgcmV0
dXJuIHN0ZDo6aXNpbmYodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOw0KfQ0KDQpp
bmxpbmUgYm9vbCBpc2Zpbml0ZShXVEY6OlRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSB0aW1lKQ0K
ew0KICAgIHJldHVybiBzdGQ6OmlzZmluaXRlKHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpKTsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjpUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGU7DQp1
c2luZyBXVEY6Omhhc0VsYXBzZWQ7DQp1c2luZyBXVEY6OnNsZWVwOw0KI2xpbmUgMzEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Bhcmtp
bmdMb3QuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIFRocmVhZDsNCg0KY2xhc3MgUGFy
a2luZ0xvdCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RG
OjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJl
dHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9u
OyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlz
SXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCg0KICAgIFBhcmtp
bmdMb3QoKSA9IGRlbGV0ZTsNCiAgICBQYXJraW5nTG90KGNvbnN0IFBhcmtpbmdMb3QmKSA9IGRl
bGV0ZTsNCg0KcHVibGljOg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIHR5cGVkZWYgV2FsbFRpbWUgVGltZTsNCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBzdHJ1Y3QgUGFya1Jlc3Vs
dCB7DQogICAgICAgIGJvb2wgd2FzVW5wYXJrZWQgeyBmYWxzZSB9Ow0KICAgICAgICBpbnRwdHJf
dCB0b2tlbiB7IDAgfTsNCiAgICB9Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbGlkYXRpb25G
dW5jdG9yLCB0eXBlbmFtZSBCZWZvcmVTbGVlcEZ1bmN0b3I+DQogICAgc3RhdGljIFBhcmtSZXN1
bHQgcGFya0NvbmRpdGlvbmFsbHkoDQogICAgICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MsDQogICAg
ICAgIGNvbnN0IFZhbGlkYXRpb25GdW5jdG9yJiB2YWxpZGF0aW9uLA0KICAgICAgICBjb25zdCBC
ZWZvcmVTbGVlcEZ1bmN0b3ImIGJlZm9yZVNsZWVwLA0KICAgICAgICBjb25zdCBUaW1lV2l0aER5
bmFtaWNDbG9ja1R5cGUmIHRpbWVvdXQpDQogICAgew0KICAgICAgICByZXR1cm4gcGFya0NvbmRp
dGlvbmFsbHlJbXBsKA0KICAgICAgICAgICAgYWRkcmVzcywNCiAgICAgICAgICAgIHNjb3BlZExh
bWJkYVJlZjxib29sKCk+KHZhbGlkYXRpb24pLA0KICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVm
PHZvaWQoKT4oYmVmb3JlU2xlZXApLA0KICAgICAgICAgICAgdGltZW91dCk7DQogICAgfQ0KDQog
ICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCiAgICBzdGF0
aWMgUGFya1Jlc3VsdCBjb21wYXJlQW5kUGFyayhjb25zdCBBdG9taWM8VD4qIGFkZHJlc3MsIFUg
ZXhwZWN0ZWQpDQogICAgew0KICAgICAgICByZXR1cm4gcGFya0NvbmRpdGlvbmFsbHkoDQogICAg
ICAgICAgICBhZGRyZXNzLA0KICAgICAgICAgICAgW2FkZHJlc3MsIGV4cGVjdGVkXSAoKSAtPiBi
b29sIHsNCiAgICAgICAgICAgICAgICBVIHZhbHVlID0gYWRkcmVzcy0+bG9hZCgpOw0KICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA9PSBleHBlY3RlZDsNCiAgICAgICAgICAgIH0sDQogICAg
ICAgICAgICBbXSAoKSB7IH0sDQogICAgICAgICAgICBUaW1lOjppbmZpbml0eSgpKTsNCiAgICB9
DQoNCiAgICANCiAgICBzdHJ1Y3QgVW5wYXJrUmVzdWx0IHsNCiAgICAgICAgDQogICAgICAgIGJv
b2wgZGlkVW5wYXJrVGhyZWFkIHsgZmFsc2UgfTsNCiAgICAgICAgDQogICAgICAgIGJvb2wgbWF5
SGF2ZU1vcmVUaHJlYWRzIHsgZmFsc2UgfTsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgYm9vbCB0aW1lVG9CZUZhaXIgeyBmYWxzZSB9Ow0KICAgIH07DQoNCiAgICANCiAg
ICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFVucGFya1Jlc3VsdCB1
bnBhcmtPbmUoY29uc3Qgdm9pZCogYWRkcmVzcyk7DQoNCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4NCiAgICBzdGF0aWMgdm9pZCB1bnBh
cmtPbmUoY29uc3Qgdm9pZCogYWRkcmVzcywgY29uc3QgQ2FsbGJhY2smIGNhbGxiYWNrKQ0KICAg
IHsNCiAgICAgICAgdW5wYXJrT25lSW1wbChhZGRyZXNzLCBzY29wZWRMYW1iZGFSZWY8aW50cHRy
X3QoVW5wYXJrUmVzdWx0KT4oY2FsbGJhY2spKTsNCiAgICB9DQogICAgDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHN0YXRpYyB1bnNpZ25lZCB1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRy
ZXNzLCB1bnNpZ25lZCBjb3VudCk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
c3RhdGljIHZvaWQgdW5wYXJrQWxsKGNvbnN0IHZvaWQqIGFkZHJlc3MpOw0KDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAgICBzdGF0aWMgdm9pZCBm
b3JFYWNoKGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0KICAgICAgICBmb3JFYWNoSW1wbChzY29w
ZWRMYW1iZGFSZWY8dm9pZChUaHJlYWQmLCBjb25zdCB2b2lkKik+KGZ1bmMpKTsNCiAgICB9DQoN
CnByaXZhdGU6DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBQYXJrUmVzdWx0IHBh
cmtDb25kaXRpb25hbGx5SW1wbCgNCiAgICAgICAgY29uc3Qgdm9pZCogYWRkcmVzcywNCiAgICAg
ICAgY29uc3QgU2NvcGVkTGFtYmRhPGJvb2woKT4mIHZhbGlkYXRpb24sDQogICAgICAgIGNvbnN0
IFNjb3BlZExhbWJkYTx2b2lkKCk+JiBiZWZvcmVTbGVlcCwNCiAgICAgICAgY29uc3QgVGltZVdp
dGhEeW5hbWljQ2xvY2tUeXBlJiB0aW1lb3V0KTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgc3RhdGljIHZvaWQgdW5wYXJrT25lSW1wbCgNCiAgICAgICAgY29uc3Qgdm9pZCogYWRk
cmVzcywgY29uc3QgU2NvcGVkTGFtYmRhPGludHB0cl90KFVucGFya1Jlc3VsdCk+JiBjYWxsYmFj
ayk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIHZvaWQgZm9yRWFjaEltcGwo
Y29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoVGhyZWFkJiwgY29uc3Qgdm9pZCopPiYpOw0KfTsNCg0K
fSANCg0KdXNpbmcgV1RGOjpQYXJraW5nTG90Ow0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbmRpdGlvbi5oIg0KDQoN
Cm5hbWVzcGFjZSBXVEYgew0KDQoNCg0KDQoNCg0KDQoNCg0KY2xhc3MgQ29uZGl0aW9uIGZpbmFs
IHsNCiAgICBDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uJikgPSBkZWxldGU7IENvbmRpdGlvbiYg
b3BlcmF0b3I9KGNvbnN0IENvbmRpdGlvbiYpID0gZGVsZXRlOzsNCiAgICBwdWJsaWM6IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24p
IHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2Vk
ID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVy
VGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIA0KICAgIA0KICAgIA0KICAgIHVzaW5nIFRp
bWUgPSBQYXJraW5nTG90OjpUaW1lOw0KDQogICAgY29uc3RleHByIENvbmRpdGlvbigpID0gZGVm
YXVsdDsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIExvY2tUeXBlPg0KICAgIGJvb2wgd2FpdFVudGlsKExvY2tUeXBlJiBsb2NrLCBjb25z
dCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRpbWVvdXQpDQogICAgew0KICAgICAgICBib29s
IHJlc3VsdDsNCiAgICAgICAgaWYgKHRpbWVvdXQgPCB0aW1lb3V0Lm5vd1dpdGhTYW1lQ2xvY2so
KSkgew0KICAgICAgICAgICAgbG9jay51bmxvY2soKTsNCiAgICAgICAgICAgIHJlc3VsdCA9IGZh
bHNlOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmVzdWx0ID0gUGFya2luZ0xvdDo6
cGFya0NvbmRpdGlvbmFsbHkoDQogICAgICAgICAgICAgICAgJm1faGFzV2FpdGVycywNCiAgICAg
ICAgICAgICAgICBbdGhpc10gKCkgLT4gYm9vbCB7DQogICAgICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgbV9oYXNXYWl0ZXJzLnN0b3Jl
KHRydWUpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAg
ICB9LA0KICAgICAgICAgICAgICAgIFsmbG9ja10gKCkgeyBsb2NrLnVubG9jaygpOyB9LA0KICAg
ICAgICAgICAgICAgIHRpbWVvdXQpLndhc1VucGFya2VkOw0KICAgICAgICB9DQogICAgICAgIGxv
Y2subG9jaygpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIA0KICAgIA0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPg0KICAgIGJv
b2wgd2FpdFVudGlsKA0KICAgICAgICBMb2NrVHlwZSYgbG9jaywgY29uc3QgVGltZVdpdGhEeW5h
bWljQ2xvY2tUeXBlJiB0aW1lb3V0LCBjb25zdCBGdW5jdG9yJiBwcmVkaWNhdGUpDQogICAgew0K
ICAgICAgICB3aGlsZSAoIXByZWRpY2F0ZSgpKSB7DQogICAgICAgICAgICBpZiAoIXdhaXRVbnRp
bChsb2NrLCB0aW1lb3V0KSkNCiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlKCk7DQog
ICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgDQogICAgDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+DQogICAgYm9vbCB3
YWl0Rm9yKA0KICAgICAgICBMb2NrVHlwZSYgbG9jaywgU2Vjb25kcyByZWxhdGl2ZVRpbWVvdXQs
IGNvbnN0IEZ1bmN0b3ImIHByZWRpY2F0ZSkNCiAgICB7DQogICAgICAgIHJldHVybiB3YWl0VW50
aWwobG9jaywgTW9ub3RvbmljVGltZTo6bm93KCkgKyByZWxhdGl2ZVRpbWVvdXQsIHByZWRpY2F0
ZSk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPg0KICAgIGJv
b2wgd2FpdEZvcihMb2NrVHlwZSYgbG9jaywgU2Vjb25kcyByZWxhdGl2ZVRpbWVvdXQpDQogICAg
ew0KICAgICAgICByZXR1cm4gd2FpdFVudGlsKGxvY2ssIE1vbm90b25pY1RpbWU6Om5vdygpICsg
cmVsYXRpdmVUaW1lb3V0KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlw
ZT4NCiAgICB2b2lkIHdhaXQoTG9ja1R5cGUmIGxvY2spDQogICAgew0KICAgICAgICB3YWl0VW50
aWwobG9jaywgVGltZTo6aW5maW5pdHkoKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgTG9ja1R5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+DQogICAgdm9pZCB3YWl0KExvY2tUeXBlJiBs
b2NrLCBjb25zdCBGdW5jdG9yJiBwcmVkaWNhdGUpDQogICAgew0KICAgICAgICB3aGlsZSAoIXBy
ZWRpY2F0ZSgpKQ0KICAgICAgICAgICAgd2FpdChsb2NrKTsNCiAgICB9DQoNCiAgICANCiAgICAN
CiAgICBib29sIG5vdGlmeU9uZSgpDQogICAgew0KICAgICAgICBpZiAoIW1faGFzV2FpdGVycy5s
b2FkKCkpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgYm9vbCBk
aWROb3RpZnlUaHJlYWQgPSBmYWxzZTsNCiAgICAgICAgUGFya2luZ0xvdDo6dW5wYXJrT25lKA0K
ICAgICAgICAgICAgJm1faGFzV2FpdGVycywNCiAgICAgICAgICAgIFsmXSAoUGFya2luZ0xvdDo6
VW5wYXJrUmVzdWx0IHJlc3VsdCkgLT4gaW50cHRyX3Qgew0KICAgICAgICAgICAgICAgIGlmICgh
cmVzdWx0Lm1heUhhdmVNb3JlVGhyZWFkcykNCiAgICAgICAgICAgICAgICAgICAgbV9oYXNXYWl0
ZXJzLnN0b3JlKGZhbHNlKTsNCiAgICAgICAgICAgICAgICBkaWROb3RpZnlUaHJlYWQgPSByZXN1
bHQuZGlkVW5wYXJrVGhyZWFkOw0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAg
ICAgfSk7DQogICAgICAgIHJldHVybiBkaWROb3RpZnlUaHJlYWQ7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgbm90aWZ5QWxsKCkNCiAgICB7DQogICAgICAgIGlmICghbV9oYXNXYWl0ZXJzLmxvYWQo
KSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgbV9oYXNXYWl0ZXJz
LnN0b3JlKGZhbHNlKTsNCiAgICAgICAgDQogICAgICAgIFBhcmtpbmdMb3Q6OnVucGFya0FsbCgm
bV9oYXNXYWl0ZXJzKTsNCiAgICB9DQogICAgDQpwcml2YXRlOg0KICAgIEF0b21pYzxib29sPiBt
X2hhc1dhaXRlcnMgeyBmYWxzZSB9Ow0KfTsNCg0KdXNpbmcgU3RhdGljQ29uZGl0aW9uID0gQ29u
ZGl0aW9uOw0KDQp9IA0KDQp1c2luZyBXVEY6OkNvbmRpdGlvbjsNCnVzaW5nIFdURjo6U3RhdGlj
Q29uZGl0aW9uOw0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL0F1dG9tYXRpY1RocmVhZC5oIg0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Ro
cmVhZGluZy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRmFzdFRMUy5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Zhc3RUTFMuaCINCg0KI2xpbmUg
MzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1RocmVhZGluZy5oIg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgiDQoNCg0K
DQojbGluZSA0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA2NyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1SZWdpc3RlcnMuaCINCg0KdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBDT05URVhUOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA5MiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1SZWdpc3RlcnMuaCINCg0KfSANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE2MSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUGxh
dGZvcm1SZWdpc3RlcnMuaCINCg0KdXNpbmcgV1RGOjpQbGF0Zm9ybVJlZ2lzdGVyczsNCiNsaW5l
IDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9UaHJlYWRpbmcuaCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdGFja0JvdW5kcy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL1N0YWNrUG9pbnRlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIFdURiB7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDUzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdGFj
a1BvaW50ZXIuaCINCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCogY3VycmVudFN0YWNr
UG9pbnRlcigpOw0KDQojbGluZSA1OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU3RhY2tQb2ludGVyLmgiDQoNCn0gDQoNCnVzaW5nIFdU
Rjo6Y3VycmVudFN0YWNrUG9pbnRlcjsNCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdGFja0JvdW5kcy5oIg0KDQoNCm5h
bWVzcGFjZSBXVEYgew0KDQpjbGFzcyBTdGFja0JvdW5kcyB7DQogICAgcHVibGljOiB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3Bl
cmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7
ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9
IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRo
aXNNYWNybyA9IGludDsNCnB1YmxpYzoNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IERlZmF1bHRSZXNlcnZlZFpvbmUgPSA2NCAqIDEw
MjQ7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIFN0YWNrQm91bmRzIGVtcHR5Qm91bmRzKCkgeyBy
ZXR1cm4gU3RhY2tCb3VuZHMoKTsgfQ0KDQoNCg0KDQojbGluZSA1MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU3RhY2tCb3VuZHMuaCIN
CiAgICBzdGF0aWMgU3RhY2tCb3VuZHMgY3VycmVudFRocmVhZFN0YWNrQm91bmRzKCkNCiAgICB7
DQogICAgICAgIGF1dG8gcmVzdWx0ID0gY3VycmVudFRocmVhZFN0YWNrQm91bmRzSW50ZXJuYWwo
KTsNCiAgICAgICAgcmVzdWx0LmNoZWNrQ29uc2lzdGVuY3koKTsNCiAgICAgICAgcmV0dXJuIHJl
c3VsdDsNCiAgICB9DQoNCiAgICB2b2lkKiBvcmlnaW4oKSBjb25zdA0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gbV9vcmlnaW47DQogICAgfQ0KDQogICAgdm9pZCog
ZW5kKCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1f
Ym91bmQ7DQogICAgfQ0KICAgIA0KICAgIHNpemVfdCBzaXplKCkgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9vcmlnaW4pIC0gc3RhdGljX2Nhc3Q8Y2hh
cio+KG1fYm91bmQpOw0KICAgIH0NCg0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX29yaWdpbjsgfQ0KDQogICAgYm9vbCBjb250YWlucyh2b2lkKiBwKSBjb25zdA0KICAgIHsN
CiAgICAgICAgaWYgKGlzRW1wdHkoKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAg
ICAgcmV0dXJuIChtX29yaWdpbiA+PSBwKSAmJiAocCA+IG1fYm91bmQpOw0KICAgIH0NCg0KICAg
IHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNpemVfdCBtaW5SZXNlcnZlZFpvbmUgPSBEZWZhdWx0UmVz
ZXJ2ZWRab25lKSBjb25zdA0KICAgIHsNCiAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOw0KICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsgbWluUmVzZXJ2ZWRab25l
Ow0KICAgIH0NCg0KICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KGNoYXIqIHN0YXJ0T2ZVc2VyU3Rh
Y2ssIHNpemVfdCBtYXhVc2VyU3RhY2ssIHNpemVfdCByZXNlcnZlZFpvbmVTaXplKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOw0KICAgICAgICBpZiAobWF4VXNlclN0
YWNrIDwgcmVzZXJ2ZWRab25lU2l6ZSkNCiAgICAgICAgICAgIHJlc2VydmVkWm9uZVNpemUgPSBt
YXhVc2VyU3RhY2s7DQogICAgICAgIHNpemVfdCBtYXhVc2VyU3RhY2tXaXRoUmVzZXJ2ZWRab25l
ID0gbWF4VXNlclN0YWNrIC0gcmVzZXJ2ZWRab25lU2l6ZTsNCg0KICAgICAgICBjaGFyKiBlbmRP
ZlN0YWNrV2l0aFJlc2VydmVkWm9uZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYm91bmQp
ICsgcmVzZXJ2ZWRab25lU2l6ZTsNCiAgICAgICAgaWYgKHN0YXJ0T2ZVc2VyU3RhY2sgPCBlbmRP
ZlN0YWNrV2l0aFJlc2VydmVkWm9uZSkNCiAgICAgICAgICAgIHJldHVybiBlbmRPZlN0YWNrV2l0
aFJlc2VydmVkWm9uZTsNCiAgICAgICAgc2l6ZV90IGF2YWlsYWJsZVVzZXJTdGFjayA9IHN0YXJ0
T2ZVc2VyU3RhY2sgLSBlbmRPZlN0YWNrV2l0aFJlc2VydmVkWm9uZTsNCiAgICAgICAgaWYgKG1h
eFVzZXJTdGFja1dpdGhSZXNlcnZlZFpvbmUgPiBhdmFpbGFibGVVc2VyU3RhY2spDQogICAgICAg
ICAgICBtYXhVc2VyU3RhY2tXaXRoUmVzZXJ2ZWRab25lID0gYXZhaWxhYmxlVXNlclN0YWNrOw0K
ICAgICAgICByZXR1cm4gc3RhcnRPZlVzZXJTdGFjayAtIG1heFVzZXJTdGFja1dpdGhSZXNlcnZl
ZFpvbmU7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIFN0YWNrQm91bmRzKHZvaWQqIG9yaWdpbiwg
dm9pZCogZW5kKQ0KICAgICAgICA6IG1fb3JpZ2luKG9yaWdpbikNCiAgICAgICAgLCBtX2JvdW5k
KGVuZCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIg
U3RhY2tCb3VuZHMoKQ0KICAgICAgICA6IG1fb3JpZ2luKG51bGxwdHIpDQogICAgICAgICwgbV9i
b3VuZChudWxscHRyKQ0KICAgIHsNCiAgICB9DQoNCiAgICBpbmxpbmUgYm9vbCBpc0dyb3dpbmdE
b3dud2FyZHMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gbV9ib3VuZCA8PSBtX29yaWdpbjsNCiAgICB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgc3RhdGljIFN0YWNrQm91bmRzIGN1cnJlbnRUaHJlYWRTdGFja0JvdW5kc0ludGVybmFsKCk7
DQoNCiAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdA0KICAgIHsNCg0KDQoNCg0KI2xp
bmUgMTM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9TdGFja0JvdW5kcy5oIg0KICAgIH0NCg0KICAgIHZvaWQqIG1fb3JpZ2luOw0KICAg
IHZvaWQqIG1fYm91bmQ7DQoNCiAgICBmcmllbmQgY2xhc3MgU3RhY2tTdGF0czsNCn07DQoNCn0g
DQoNCnVzaW5nIFdURjo6U3RhY2tCb3VuZHM7DQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5nLmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9TdGFja1N0YXRzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQpjbGFzcyBTdGFja1N0YXRzIHsNCiAgICBwdWJs
aWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCog
bG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFz
dE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWlj
b2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIA0KICAgIA0KDQogICAgY2xh
c3MgQ2hlY2tQb2ludCB7DQogICAgcHVibGljOg0KICAgICAgICBDaGVja1BvaW50KCkgeyB9DQog
ICAgfTsNCg0KICAgIGNsYXNzIFBlclRocmVhZFN0YXRzIHsNCiAgICBwdWJsaWM6DQogICAgICAg
IFBlclRocmVhZFN0YXRzKCkgeyB9DQogICAgfTsNCg0KICAgIGNsYXNzIExheW91dENoZWNrUG9p
bnQgew0KICAgIHB1YmxpYzoNCiAgICAgICAgTGF5b3V0Q2hlY2tQb2ludCgpIHsgfQ0KICAgIH07
DQoNCiAgICBzdGF0aWMgdm9pZCBwcm9iZSgpIHsgfQ0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgMTQzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9TdGFja1N0YXRzLmgiDQoNCn0gDQoNCnVzaW5nIFdURjo6U3RhY2tT
dGF0czsNCiNsaW5lIDQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRpbmcuaCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Xb3JkTG9jay5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsNCnN0cnVjdCBMb2Nr
SW5zcGVjdG9yOw0KfTsNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNs
YXNzIFdvcmRMb2NrIGZpbmFsIHsNCiAgICBXb3JkTG9jayhjb25zdCBXb3JkTG9jayYpID0gZGVs
ZXRlOyBXb3JkTG9jayYgb3BlcmF0b3I9KGNvbnN0IFdvcmRMb2NrJikgPSBkZWxldGU7Ow0KICAg
IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJr
aXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgY29uc3RleHByIFdv
cmRMb2NrKCkgPSBkZWZhdWx0Ow0KDQogICAgdm9pZCBsb2NrKCkNCiAgICB7DQogICAgICAgIGlm
ICgobV93b3JkLmNvbXBhcmVFeGNoYW5nZVdlYWsoMCwgaXNMb2NrZWRCaXQsIHN0ZDo6bWVtb3J5
X29yZGVyX2FjcXVpcmUpKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm47DQog
ICAgICAgIH0NCg0KICAgICAgICBsb2NrU2xvdygpOw0KICAgIH0NCg0KICAgIHZvaWQgdW5sb2Nr
KCkNCiAgICB7DQogICAgICAgIGlmICgobV93b3JkLmNvbXBhcmVFeGNoYW5nZVdlYWsoaXNMb2Nr
ZWRCaXQsIDAsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpKSkgew0KICAgICAgICAgICAgDQog
ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICB1bmxvY2tTbG93KCk7DQog
ICAgfQ0KDQogICAgYm9vbCBpc0hlbGQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1f
d29yZC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpICYgaXNMb2NrZWRCaXQ7DQogICAg
fQ0KDQogICAgYm9vbCBpc0xvY2tlZCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gaXNI
ZWxkKCk7DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgZnJpZW5kIHN0cnVjdCBUZXN0V2ViS2l0
QVBJOjpMb2NrSW5zcGVjdG9yOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90
IGlzTG9ja2VkQml0ID0gMTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBpc1F1ZXVl
TG9ja2VkQml0ID0gMjsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBxdWV1ZUhlYWRN
YXNrID0gMzsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGxvY2tTbG93KCk7DQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgdW5sb2NrU2xvdygpOw0KDQogICAgDQogICAg
Ym9vbCBpc0Z1bGx5UmVzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICFtX3dvcmQu
bG9hZCgpOw0KICAgIH0NCg0KICAgIEF0b21pYzx1aW50cHRyX3Q+IG1fd29yZCB7IDAgfTsNCn07
DQoNCnVzaW5nIFdvcmRMb2NrSG9sZGVyID0gTG9ja2VyPFdvcmRMb2NrPjsNCg0KfSANCg0KdXNp
bmcgV1RGOjpXb3JkTG9jazsNCnVzaW5nIFdURjo6V29yZExvY2tIb2xkZXI7DQojbGluZSA0OSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
VGhyZWFkaW5nLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L0F0b21TdHJpbmdUYWJsZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0K
DQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgU3RyaW5nSW1wbDsNCg0KY2xhc3MgQXRvbVN0cmlu
Z1RhYmxlIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHAp
IHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0
dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9p
ZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
Tm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247
IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJ
c0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB+QXRvbVN0cmluZ1RhYmxlKCk7DQoNCiAgICBIYXNoU2V0
PFBhY2tlZFB0cjxTdHJpbmdJbXBsPj4mIHRhYmxlKCkgeyByZXR1cm4gbV90YWJsZTsgfQ0KDQpw
cml2YXRlOg0KICAgIEhhc2hTZXQ8UGFja2VkUHRyPFN0cmluZ0ltcGw+PiBtX3RhYmxlOw0KfTsN
Cg0KfQ0KdXNpbmcgV1RGOjpBdG9tU3RyaW5nVGFibGU7DQojbGluZSA1MCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5nLmgi
DQoNCg0KDQojbGluZSA1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5nLmgiDQoNCg0KDQojbGluZSA1OCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5n
LmgiDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBBYnN0cmFjdExvY2tlcjsNCmNsYXNzIFRo
cmVhZE1lc3NhZ2VEYXRhOw0KDQplbnVtIGNsYXNzIFRocmVhZEdyb3VwQWRkUmVzdWx0Ow0KDQpj
bGFzcyBUaHJlYWRHcm91cDsNCmNsYXNzIFByaW50U3RyZWFtOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdm9pZCBpbml0aWFsaXplKCk7DQoNCg0KDQoNCg0KDQojbGluZSA3NyAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5n
LmgiDQoNCmVudW0gY2xhc3MgR0NUaHJlYWRUeXBlIDogdWludDhfdCB7DQogICAgTm9uZSA9IDAs
DQogICAgTWFpbiwNCiAgICBIZWxwZXIsDQp9Ow0KDQplbnVtIGNsYXNzIFRocmVhZFR5cGUgOiB1
aW50OF90IHsNCiAgICBVbmtub3duID0gMCwNCiAgICBKYXZhU2NyaXB0LA0KICAgIENvbXBpbGVy
LA0KICAgIEdhcmJhZ2VDb2xsZWN0aW9uLA0KICAgIE5ldHdvcmssDQogICAgR3JhcGhpY3MsDQog
ICAgQXVkaW8sDQp9Ow0KDQpjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8VGhyZWFkPiB7DQpwdWJsaWM6DQogICAgZnJpZW5kIGNsYXNzIFRocmVhZEdyb3VwOw0KICAg
IGZyaWVuZCBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBpbml0aWFsaXplKCk7DQoNCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgflRocmVhZCgpOw0KDQogICAgDQogICAgDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBSZWY8VGhyZWFkPiBjcmVhdGUoY29uc3QgY2hhciogdGhy
ZWFkTmFtZSwgRnVuY3Rpb248dm9pZCgpPiYmLCBUaHJlYWRUeXBlIHRocmVhZFR5cGUgPSBUaHJl
YWRUeXBlOjpVbmtub3duKTsNCg0KICAgIA0KICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsN
Cg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgSGFzaFNldDxUaHJlYWQq
PiYgYWxsVGhyZWFkcyhjb25zdCBMb2NrSG9sZGVyJik7DQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIHN0YXRpYyBMb2NrJiBhbGxUaHJlYWRzTXV0ZXgoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSB1bnNpZ25lZCBudW1iZXJPZlRocmVhZEdyb3VwcygpOw0KDQoNCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFRocmVhZElkZW50
aWZpZXIgY3VycmVudElEKCk7DQoNCiAgICBUaHJlYWRJZGVudGlmaWVyIGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQ0KDQogICAgY2xhc3MgU3BlY2lmaWNTdG9yYWdlIHsNCiAgICBwdWJsaWM6
DQogICAgICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQqKTsNCiAgICAg
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBib29sIGFsbG9jYXRlS2V5KGludCYga2V5
LCBEZXN0cm95RnVuY3Rpb24pOw0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCog
Z2V0KGludCBrZXkpOw0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzZXQoaW50
IGtleSwgdm9pZCogdmFsdWUpOw0KICAgICAgICB2b2lkIGRlc3Ryb3lTbG90cygpOw0KDQogICAg
cHJpdmF0ZToNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19tYXhLZXlzID0gMzI7
DQogICAgICAgIHN0YXRpYyBBdG9taWM8aW50PiBzX251bWJlck9mS2V5czsNCiAgICAgICAgc3Rh
dGljIHN0ZDo6YXJyYXk8QXRvbWljPERlc3Ryb3lGdW5jdGlvbj4sIHNfbWF4S2V5cz4gc19kZXN0
cm95RnVuY3Rpb25zOw0KICAgICAgICBzdGQ6OmFycmF5PHZvaWQqLCBzX21heEtleXM+IG1fc2xv
dHMgeyB9Ow0KICAgIH07DQoNCiAgICBTcGVjaWZpY1N0b3JhZ2UmIHNwZWNpZmljU3RvcmFnZSgp
IHsgcmV0dXJuIG1fc3BlY2lmaWNTdG9yYWdlOyB9Ow0KDQogICAgc3RydWN0IFRocmVhZEhvbGRl
cjsNCiNsaW5lIDE0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5nLmgiDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCBjaGFuZ2VQcmlvcml0eShpbnQpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQg
d2FpdEZvckNvbXBsZXRpb24oKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkZXRh
Y2goKTsNCg0KDQoNCiNsaW5lIDE1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5nLmgiDQoNCiNsaW5lIDE1MiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFk
aW5nLmgiDQogICAgdXNpbmcgUGxhdGZvcm1TdXNwZW5kRXJyb3IgPSBEV09SRDsNCiNsaW5lIDE1
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvVGhyZWFkaW5nLmgiDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRXhwZWN0ZWQ8dm9p
ZCwgUGxhdGZvcm1TdXNwZW5kRXJyb3I+IHN1c3BlbmQoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgdm9pZCByZXN1bWUoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IGdl
dFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYpOw0KDQoNCg0KI2xpbmUgMTYyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRp
bmcuaCINCg0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgdm9p
ZCBzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUoaW50IHJlbGF0aXZlUHJpb3JpdHkg
PSAwKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIHZvaWQgc2V0Q3VycmVudFRo
cmVhZElzVXNlckluaXRpYXRlZChpbnQgcmVsYXRpdmVQcmlvcml0eSA9IDApOw0KDQoNCg0KDQoj
bGluZSAxNzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1RocmVhZGluZy5oIg0KDQogICAgDQogICAgDQogICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsNCiAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEV2ZW5JZk5vbldURkNyZWF0ZWQo
KTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIHZvaWQgeWllbGQoKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgYm9vbCBleGNoYW5nZUlzQ29tcGls
YXRpb25UaHJlYWQoYm9vbCBuZXdWYWx1ZSk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRUeXBlKTsNCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgc3RhdGljIGJvb2wgbWF5QmVHQ1RocmVhZCgpOw0KDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsNCg0KICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZygpOw0KDQogICAgY29uc3QgU3Rh
Y2tCb3VuZHMmIHN0YWNrKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3N0YWNrOw0K
ICAgIH0NCg0KICAgIEF0b21TdHJpbmdUYWJsZSogYXRvbVN0cmluZ1RhYmxlKCkNCiAgICB7DQog
ICAgICAgIHJldHVybiBtX2N1cnJlbnRBdG9tU3RyaW5nVGFibGU7DQogICAgfQ0KDQogICAgQXRv
bVN0cmluZ1RhYmxlKiBzZXRDdXJyZW50QXRvbVN0cmluZ1RhYmxlKEF0b21TdHJpbmdUYWJsZSog
YXRvbVN0cmluZ1RhYmxlKQ0KICAgIHsNCiAgICAgICAgQXRvbVN0cmluZ1RhYmxlKiBvbGRBdG9t
U3RyaW5nVGFibGUgPSBtX2N1cnJlbnRBdG9tU3RyaW5nVGFibGU7DQogICAgICAgIG1fY3VycmVu
dEF0b21TdHJpbmdUYWJsZSA9IGF0b21TdHJpbmdUYWJsZTsNCiAgICAgICAgcmV0dXJuIG9sZEF0
b21TdHJpbmdUYWJsZTsNCiAgICB9DQoNCg0KDQoNCg0KDQojbGluZSAyMTEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZy5o
Ig0KDQogICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7DQogICAgfQ0KDQogICAgdm9p
ZCBzZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzdGFja1BvaW50ZXJBdFZNRW50
cnkpDQogICAgew0KICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQ
b2ludGVyQXRWTUVudHJ5Ow0KICAgIH0NCg0KICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkN
CiAgICB7DQogICAgICAgIHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOw0KICAgIH0NCg0KICAg
IHZvaWQgc2V0U2F2ZWRMYXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQ0KICAgIHsNCiAg
ICAgICAgbV9zYXZlZExhc3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsNCiAgICB9DQoNCg0KDQoj
bGluZSAyMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL1RocmVhZGluZy5oIg0KDQogICAgYm9vbCBpc0NvbXBpbGF0aW9uVGhyZWFkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvbXBpbGF0aW9uVGhyZWFkOyB9DQogICAgR0NUaHJlYWRUeXBl
IGdjVGhyZWFkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdDVGhyZWFkVHlwZT4o
bV9nY1RocmVhZFR5cGUpOyB9DQoNCiAgICBzdHJ1Y3QgTmV3VGhyZWFkQ29udGV4dDsNCiAgICBz
dGF0aWMgdm9pZCBlbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQqKTsNCnByb3RlY3RlZDoNCiAg
ICBUaHJlYWQoKTsNCg0KICAgIHZvaWQgaW5pdGlhbGl6ZUluVGhyZWFkKCk7DQoNCiAgICANCiAg
ICBib29sIGVzdGFibGlzaEhhbmRsZShOZXdUaHJlYWRDb250ZXh0KiwgT3B0aW9uYWw8c2l6ZV90
Pik7DQoNCg0KDQojbGluZSAyNTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZy5oIg0KICAgIHZvaWQgZXN0YWJsaXNoUGxh
dGZvcm1TcGVjaWZpY0hhbmRsZShQbGF0Zm9ybVRocmVhZEhhbmRsZSwgVGhyZWFkSWRlbnRpZmll
cik7DQojbGluZSAyNTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZy5oIg0KDQoNCg0KI2xpbmUgMjU4ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRpbmcu
aCINCg0KICAgIHN0YXRpYyBjb25zdCBjaGFyKiBub3JtYWxpemVUaHJlYWROYW1lKGNvbnN0IGNo
YXIqIHRocmVhZE5hbWUpOw0KDQogICAgZW51bSBKb2luYWJsZVN0YXRlIDogdWludDhfdCB7DQog
ICAgICAgIA0KICAgICAgICBKb2luYWJsZSwNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgSm9pbmVkLA0KDQogICAgICAgIA0KICAgICAgICBEZXRhY2hl
ZCwNCiAgICB9Ow0KDQogICAgSm9pbmFibGVTdGF0ZSBqb2luYWJsZVN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9qb2luYWJsZVN0YXRlOyB9DQogICAgdm9pZCBkaWRCZWNvbWVEZXRhY2hlZCgpIHsg
bV9qb2luYWJsZVN0YXRlID0gRGV0YWNoZWQ7IH0NCiAgICB2b2lkIGRpZEV4aXQoKTsNCiAgICB2
b2lkIGRpZEpvaW4oKSB7IG1fam9pbmFibGVTdGF0ZSA9IEpvaW5lZDsgfQ0KICAgIGJvb2wgaGFz
RXhpdGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaWRFeGl0OyB9DQoNCiAgICANCiAgICBUaHJlYWRH
cm91cEFkZFJlc3VsdCBhZGRUb1RocmVhZEdyb3VwKGNvbnN0IEFic3RyYWN0TG9ja2VyJiB0aHJl
YWRHcm91cExvY2tlciwgVGhyZWFkR3JvdXAmKTsNCiAgICB2b2lkIHJlbW92ZUZyb21UaHJlYWRH
cm91cChjb25zdCBBYnN0cmFjdExvY2tlciYgdGhyZWFkR3JvdXBMb2NrZXIsIFRocmVhZEdyb3Vw
Jik7DQoNCiAgICANCiAgICANCg0KDQoNCg0KDQoNCiNsaW5lIDI5NCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkaW5nLmgiDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3RUTFMo
dm9pZCogZGF0YSk7DQoNCiAgICANCiAgICBzdGF0aWMgVGhyZWFkJiBpbml0aWFsaXplVExTKFJl
ZjxUaHJlYWQ+JiYpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgVGhyZWFkJiBp
bml0aWFsaXplQ3VycmVudFRMUygpOw0KDQogICAgDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgc3RhdGljIFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOw0KDQoNCiNsaW5lIDMxMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhy
ZWFkaW5nLmgiDQoNCiAgICBKb2luYWJsZVN0YXRlIG1fam9pbmFibGVTdGF0ZSB7IEpvaW5hYmxl
IH07DQogICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIDogMTsNCiAgICBib29sIG1fZGlkRXhpdCA6
IDE7DQogICAgYm9vbCBtX2lzRGVzdHJveWVkT25jZSA6IDE7DQogICAgYm9vbCBtX2lzQ29tcGls
YXRpb25UaHJlYWQ6IDE7DQogICAgdW5zaWduZWQgbV9nY1RocmVhZFR5cGUgOiAyOw0KDQogICAg
Ym9vbCBtX2RpZFVucmVnaXN0ZXJGcm9tQWxsVGhyZWFkcyB7IGZhbHNlIH07DQoNCiAgICANCiAg
ICANCiAgICBXb3JkTG9jayBtX211dGV4Ow0KICAgIFN0YWNrQm91bmRzIG1fc3RhY2sgeyBTdGFj
a0JvdW5kczo6ZW1wdHlCb3VuZHMoKSB9Ow0KICAgIEhhc2hNYXA8VGhyZWFkR3JvdXAqLCBzdGQ6
OndlYWtfcHRyPFRocmVhZEdyb3VwPj4gbV90aHJlYWRHcm91cE1hcDsNCiAgICBQbGF0Zm9ybVRo
cmVhZEhhbmRsZSBtX2hhbmRsZTsNCg0KICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsN
Cg0KDQoNCg0KDQojbGluZSAzMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZy5oIg0KDQoNCiAgICBTcGVjaWZpY1N0b3Jh
Z2UgbV9zcGVjaWZpY1N0b3JhZ2U7DQojbGluZSAzMzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZGluZy5oIg0KDQogICAgQXRv
bVN0cmluZ1RhYmxlKiBtX2N1cnJlbnRBdG9tU3RyaW5nVGFibGUgeyBudWxscHRyIH07DQogICAg
QXRvbVN0cmluZ1RhYmxlIG1fZGVmYXVsdEF0b21TdHJpbmdUYWJsZTsNCg0KDQoNCiNsaW5lIDM0
NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvVGhyZWFkaW5nLmgiDQogICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSB7
IG51bGxwdHIgfTsNCiAgICB2b2lkKiBtX3NhdmVkTGFzdFN0YWNrVG9wOw0KcHVibGljOg0KICAg
IHZvaWQqIG1fYXBpRGF0YSB7IG51bGxwdHIgfTsNCn07DQoNCmlubGluZSBUaHJlYWQ6OlRocmVh
ZCgpDQogICAgOiBtX2lzU2h1dHRpbmdEb3duKGZhbHNlKQ0KICAgICwgbV9kaWRFeGl0KGZhbHNl
KQ0KICAgICwgbV9pc0Rlc3Ryb3llZE9uY2UoZmFsc2UpDQogICAgLCBtX2lzQ29tcGlsYXRpb25U
aHJlYWQoZmFsc2UpDQogICAgLCBtX2djVGhyZWFkVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
R0NUaHJlYWRUeXBlOjpOb25lKSkNCnsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAz
NzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1RocmVhZGluZy5oIg0KDQppbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQ0Kew0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQoNCg0KI2xpbmUgMzg1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJl
YWRpbmcuaCINCiAgICBpZiAoYXV0byogdGhyZWFkID0gY3VycmVudE1heUJlTnVsbCgpKQ0KICAg
ICAgICByZXR1cm4gKnRocmVhZDsNCiAgICByZXR1cm4gaW5pdGlhbGl6ZUN1cnJlbnRUTFMoKTsN
Cn0NCg0KfSANCg0KdXNpbmcgV1RGOjpUaHJlYWQ7DQp1c2luZyBXVEY6OlRocmVhZFR5cGU7DQp1
c2luZyBXVEY6OkdDVGhyZWFkVHlwZTsNCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9BdXRvbWF0aWNUaHJlYWQuaCINCg0K
DQpuYW1lc3BhY2UgV1RGIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBBdXRvbWF0aWNUaHJlYWQ7DQoNCmNsYXNz
IEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxB
dXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IHsNCnB1YmxpYzoNCiAgICBzdGF0aWMgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIFJlZjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IGNyZWF0ZSgpOw0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB+QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uKCk7
DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgbm90aWZ5T25lKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJik7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgbm90aWZ5QWxs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJik7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgd2FpdChMb2NrJik7DQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgd2FpdEZvcihMb2NrJiwgU2Vjb25kcyk7DQogICAgDQpw
cml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBBdXRvbWF0aWNUaHJlYWQ7DQogICAgDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbigpOw0KDQogICAgdm9p
ZCBhZGQoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBBdXRvbWF0aWNUaHJlYWQqKTsNCiAgICB2b2lk
IHJlbW92ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIEF1dG9tYXRpY1RocmVhZCopOw0KICAgIGJv
b2wgY29udGFpbnMoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBBdXRvbWF0aWNUaHJlYWQqKTsNCiAg
ICANCiAgICBDb25kaXRpb24gbV9jb25kaXRpb247DQogICAgVmVjdG9yPEF1dG9tYXRpY1RocmVh
ZCo+IG1fdGhyZWFkczsNCn07DQoNCmNsYXNzIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBBdXRvbWF0
aWNUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXV0b21hdGljVGhyZWFkPiB7
DQpwdWJsaWM6DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgdmlydHVhbCB+QXV0b21hdGljVGhyZWFkKCk7DQogICAgDQogICAg
DQogICAgYm9vbCBoYXNVbmRlcmx5aW5nVGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgY29u
c3QgeyByZXR1cm4gbV9oYXNVbmRlcmx5aW5nVGhyZWFkOyB9DQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgYm9vbCB0cnlTdG9wKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7DQoNCiAg
ICBib29sIGlzV2FpdGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYpOw0KDQogICAgYm9vbCBub3Rp
ZnkoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsNCg0KICAgIHZvaWQgam9pbigpOw0KDQogICAgdmly
dHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gIldURjo6QXV0b21hdGljVGhy
ZWFkIjsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgDQogICAgDQogICAgQXV0b21hdGljVGhyZWFkKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgQm94PExvY2s+LCBSZWY8QXV0b21hdGljVGhyZWFkQ29uZGl0
aW9uPiYmLCBTZWNvbmRzIHRpbWVvdXQgPSAxMF9zKTsNCg0KICAgIEF1dG9tYXRpY1RocmVhZChj
b25zdCBBYnN0cmFjdExvY2tlciYsIEJveDxMb2NrPiwgUmVmPEF1dG9tYXRpY1RocmVhZENvbmRp
dGlvbj4mJiwgVGhyZWFkVHlwZSwgU2Vjb25kcyB0aW1lb3V0ID0gMTBfcyk7DQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgZW51bSBjbGFzcyBQb2xs
UmVzdWx0IHsgV29yaywgU3RvcCwgV2FpdCB9Ow0KICAgIHZpcnR1YWwgUG9sbFJlc3VsdCBwb2xs
KGNvbnN0IEFic3RyYWN0TG9ja2VyJikgPSAwOw0KICAgIA0KICAgIGVudW0gY2xhc3MgV29ya1Jl
c3VsdCB7IENvbnRpbnVlLCBTdG9wIH07DQogICAgdmlydHVhbCBXb3JrUmVzdWx0IHdvcmsoKSA9
IDA7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdmlydHVhbCB2b2lkIHRocmVhZERpZFN0
YXJ0KCk7DQogICAgdmlydHVhbCB2b2lkIHRocmVhZElzU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RM
b2NrZXImKTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbGVl
cChjb25zdCBBYnN0cmFjdExvY2tlciYpIHsgcmV0dXJuIHRydWU7IH0NCiAgICANCnByaXZhdGU6
DQogICAgZnJpZW5kIGNsYXNzIEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjsNCiAgICANCiAgICB2
b2lkIHN0YXJ0KGNvbnN0IEFic3RyYWN0TG9ja2VyJik7DQogICAgDQogICAgQm94PExvY2s+IG1f
bG9jazsNCiAgICBSZWY8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiBtX2NvbmRpdGlvbjsNCiAg
ICBTZWNvbmRzIG1fdGltZW91dDsNCiAgICBUaHJlYWRUeXBlIG1fdGhyZWFkVHlwZSB7IFRocmVh
ZFR5cGU6OlVua25vd24gfTsNCiAgICBib29sIG1faXNSdW5uaW5nIHsgdHJ1ZSB9Ow0KICAgIGJv
b2wgbV9pc1dhaXRpbmcgeyBmYWxzZSB9Ow0KICAgIGJvb2wgbV9oYXNVbmRlcmx5aW5nVGhyZWFk
IHsgZmFsc2UgfTsNCiAgICBDb25kaXRpb24gbV93YWl0Q29uZGl0aW9uOw0KICAgIENvbmRpdGlv
biBtX2lzUnVubmluZ0NvbmRpdGlvbjsNCn07DQoNCn0gDQoNCnVzaW5nIFdURjo6QXV0b21hdGlj
VGhyZWFkOw0KdXNpbmcgV1RGOjpBdXRvbWF0aWNUaHJlYWRDb25kaXRpb247DQojbGluZSA0NSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxI
ZWFwLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9Db25jdXJyZW50UHRySGFzaFNldC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0K
DQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KY2xhc3MgQ29uY3VycmVudFB0ckhhc2hTZXQgZmluYWwgew0KICAgIENvbmN1cnJlbnRQ
dHJIYXNoU2V0KGNvbnN0IENvbmN1cnJlbnRQdHJIYXNoU2V0JikgPSBkZWxldGU7IENvbmN1cnJl
bnRQdHJIYXNoU2V0JiBvcGVyYXRvcj0oY29uc3QgQ29uY3VycmVudFB0ckhhc2hTZXQmKSA9IGRl
bGV0ZTs7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7
IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1
cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
IHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5v
dE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9
IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCg0KcHVibGljOg0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBDb25jdXJyZW50UHRySGFzaFNldCgpOw0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSB+Q29uY3VycmVudFB0ckhhc2hTZXQoKTsNCiAgICANCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPg0KICAgIGJvb2wgY29udGFpbnMoVCB2YWx1ZSkNCiAgICB7DQogICAg
ICAgIHJldHVybiBjb250YWluc0ltcGwoY2FzdCh2YWx1ZSkpOw0KICAgIH0NCiAgICANCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KICAgIGJvb2wgYWRkKFQgdmFsdWUpDQogICAgew0KICAgICAg
ICByZXR1cm4gYWRkSW1wbChjYXN0KHZhbHVlKSk7DQogICAgfQ0KICAgIA0KICAgIHNpemVfdCBz
aXplKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3RhYmxlLmxvYWRSZWxheGVkKCkt
PmxvYWQubG9hZFJlbGF4ZWQoKTsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHZvaWQgZGVsZXRlT2xkVGFibGVzKCk7DQogICAgDQogICAgDQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgY2xlYXIoKTsNCiAgICANCnByaXZhdGU6
DQogICAgc3RydWN0IFRhYmxlIHsNCiAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBs
b2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHVzaW5nIF9fdGhpc0lz
SGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgICAgIA0KICAg
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRhYmxlPiBjcmVhdGUodW5zaWduZWQgc2l6ZSk7
DQogICAgICAgIA0KICAgICAgICB1bnNpZ25lZCBtYXhMb2FkKCkgY29uc3QgeyByZXR1cm4gc2l6
ZSAvIDI7IH0NCiAgICAgICAgDQogICAgICAgIHVuc2lnbmVkIHNpemU7IA0KICAgICAgICB1bnNp
Z25lZCBtYXNrOyANCiAgICAgICAgQXRvbWljPHVuc2lnbmVkPiBsb2FkOw0KICAgICAgICBBdG9t
aWM8dm9pZCo+IGFycmF5WzFdOw0KICAgIH07DQogICAgDQogICAgc3RhdGljIHVuc2lnbmVkIGhh
c2godm9pZCogcHRyKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFB0ckhhc2g8dm9pZCo+OjpoYXNo
KHB0cik7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgaW5pdGlhbGl6ZSgpOw0KICAgIA0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+DQogICAgdm9pZCogY2FzdChUIHZhbHVlKQ0KICAgIHsNCiAgICAg
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHZvaWQqKSwgInR5cGUgdG9vIGJp
ZyIpOw0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICB2b2lkKiBwdHI7DQogICAgICAgICAg
ICBUIHZhbHVlOw0KICAgICAgICB9IHU7DQogICAgICAgIHUucHRyID0gbnVsbHB0cjsNCiAgICAg
ICAgdS52YWx1ZSA9IHZhbHVlOw0KICAgICAgICByZXR1cm4gdS5wdHI7DQogICAgfQ0KICAgIA0K
ICAgIGJvb2wgY29udGFpbnNJbXBsKHZvaWQqIHB0cikgY29uc3QNCiAgICB7DQogICAgICAgIFRh
YmxlKiB0YWJsZSA9IG1fdGFibGUubG9hZFJlbGF4ZWQoKTsNCiAgICAgICAgdW5zaWduZWQgbWFz
ayA9IHRhYmxlLT5tYXNrOw0KICAgICAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gaGFzaChwdHIp
ICYgbWFzazsNCiAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4Ow0KICAgICAgICBm
b3IgKDs7KSB7DQogICAgICAgICAgICB2b2lkKiBlbnRyeSA9IHRhYmxlLT5hcnJheVtpbmRleF0u
bG9hZFJlbGF4ZWQoKTsNCiAgICAgICAgICAgIGlmICghZW50cnkpDQogICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgaWYgKGVudHJ5ID09IHB0cikNCiAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJiBtYXNr
Ow0KICAgICAgICAgICAgZG8geyBpZiAoKCEoaW5kZXggIT0gc3RhcnRJbmRleCkpKSBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oMTM1LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaCIsICBfX0ZVTkNUSU9O
X18gICwgMjIgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgfQ0KICAg
IH0NCiAgICANCiAgICANCiAgICBib29sIGFkZEltcGwodm9pZCogcHRyKQ0KICAgIHsNCiAgICAg
ICAgVGFibGUqIHRhYmxlID0gbV90YWJsZS5sb2FkUmVsYXhlZCgpOw0KICAgICAgICB1bnNpZ25l
ZCBtYXNrID0gdGFibGUtPm1hc2s7DQogICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXggPSBoYXNo
KHB0cikgJiBtYXNrOw0KICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXJ0SW5kZXg7DQogICAg
ICAgIGZvciAoOzspIHsNCiAgICAgICAgICAgIHZvaWQqIGVudHJ5ID0gdGFibGUtPmFycmF5W2lu
ZGV4XS5sb2FkUmVsYXhlZCgpOw0KICAgICAgICAgICAgaWYgKCFlbnRyeSkNCiAgICAgICAgICAg
ICAgICByZXR1cm4gYWRkU2xvdyh0YWJsZSwgbWFzaywgc3RhcnRJbmRleCwgaW5kZXgsIHB0cik7
DQogICAgICAgICAgICBpZiAoZW50cnkgPT0gcHRyKQ0KICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJiBtYXNrOw0KICAgICAgICAg
ICAgZG8geyBpZiAoKCEoaW5kZXggIT0gc3RhcnRJbmRleCkpKSBkbyB7IFdURjo6aXNJbnRlZ3Jh
bE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aElu
Zm8oMTUzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvQ29uY3VycmVudFB0ckhhc2hTZXQuaCIsICBfX0ZVTkNUSU9OX18gICwgMjMgKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBhZGRTbG93KFRhYmxlKiB0YWJsZSwgdW5zaWdu
ZWQgbWFzaywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgaW5kZXgsIHZvaWQqIHB0cik7
DQoNCiAgICB2b2lkIHJlc2l6ZUlmTmVjZXNzYXJ5KCk7DQogICAgYm9vbCByZXNpemVBbmRBZGQo
dm9pZCogcHRyKTsNCiAgICANCiAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRhYmxlPiwgND4g
bV9hbGxUYWJsZXM7DQogICAgQXRvbWljPFRhYmxlKj4gbV90YWJsZTsgDQogICAgTG9jayBtX2xv
Y2s7IA0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpDb25jdXJyZW50UHRySGFzaFNldDsNCiNsaW5l
IDQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhl
YXBcXEhlYXAuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1k
NjRcXFdURlxcSGVhZGVyc1xcd3RmL0RlcXVlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0K
DQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eT4gY2xhc3MgRGVxdWVJdGVyYXRvckJhc2U7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIERlcXVlSXRlcmF0b3I7DQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIERlcXVlQ29uc3RJdGVyYXRv
cjsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMD4NCmNs
YXNzIERlcXVlIGZpbmFsIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCog
cCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNp
emUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVs
ZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4g
bG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2lu
ZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVi
bGljOg0KICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7DQoNCiAgICB0eXBlZGVmIERlcXVlSXRlcmF0
b3I8VCwgaW5saW5lQ2FwYWNpdHk+IGl0ZXJhdG9yOw0KICAgIHR5cGVkZWYgRGVxdWVDb25zdEl0
ZXJhdG9yPFQsIGlubGluZUNhcGFjaXR5PiBjb25zdF9pdGVyYXRvcjsNCiAgICB0eXBlZGVmIHN0
ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsNCiAgICB0eXBl
ZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9p
dGVyYXRvcjsNCg0KICAgIERlcXVlKCk7DQogICAgRGVxdWUoc3RkOjppbml0aWFsaXplcl9saXN0
PFQ+KTsNCiAgICBEZXF1ZShjb25zdCBEZXF1ZSYpOw0KICAgIERlcXVlKERlcXVlJiYpOw0KICAg
IH5EZXF1ZSgpOw0KDQogICAgRGVxdWUmIG9wZXJhdG9yPShjb25zdCBEZXF1ZSYpOw0KICAgIERl
cXVlJiBvcGVyYXRvcj0oRGVxdWUmJik7DQoNCiAgICB2b2lkIHN3YXAoRGVxdWUmKTsNCg0KICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydCA8PSBtX2VuZCA/IG1fZW5kIC0g
bV9zdGFydCA6IG1fZW5kICsgbV9idWZmZXIuY2FwYWNpdHkoKSAtIG1fc3RhcnQ7IH0NCiAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0ID09IG1fZW5kOyB9DQoNCiAgICBp
dGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIG1fc3RhcnQpOyB9DQogICAg
aXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgbV9lbmQpOyB9DQogICAgY29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBt
X3N0YXJ0KTsgfQ0KICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X2l0ZXJhdG9yKHRoaXMsIG1fZW5kKTsgfQ0KICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkg
eyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0NCiAgICByZXZlcnNlX2l0ZXJhdG9y
IHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9DQogICAgY29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yKGVuZCgpKTsgfQ0KICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0NCiAgICANCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIGNvbnRhaW5zKGNvbnN0IFUmKSBjb25zdDsNCg0KICAg
IFQmIGZpcnN0KCkgeyAoKHZvaWQpMCk7IHJldHVybiBtX2J1ZmZlci5idWZmZXIoKVttX3N0YXJ0
XTsgfQ0KICAgIGNvbnN0IFQmIGZpcnN0KCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiBtX2J1
ZmZlci5idWZmZXIoKVttX3N0YXJ0XTsgfQ0KICAgIFQgdGFrZUZpcnN0KCk7DQoNCiAgICBUJiBs
YXN0KCkgeyAoKHZvaWQpMCk7IHJldHVybiAqKC0tZW5kKCkpOyB9DQogICAgY29uc3QgVCYgbGFz
dCgpIGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gKigtLWVuZCgpKTsgfQ0KICAgIFQgdGFrZUxh
c3QoKTsNCg0KICAgIHZvaWQgYXBwZW5kKFQmJiB2YWx1ZSkgeyBhcHBlbmQ8VD4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGFwcGVuZChV
JiYpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgcHJlcGVuZChVJiYpOw0KICAgIHZv
aWQgcmVtb3ZlRmlyc3QoKTsNCiAgICB2b2lkIHJlbW92ZUxhc3QoKTsNCiAgICB2b2lkIHJlbW92
ZShpdGVyYXRvciYpOw0KICAgIHZvaWQgcmVtb3ZlKGNvbnN0X2l0ZXJhdG9yJik7DQogICAgDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4gdm9pZCByZW1vdmVBbGxNYXRjaGluZyhjb25zdCBG
dW5jJik7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwg
dHlwZW5hbWUgRnVuYz4NCiAgICB2b2lkIGFwcGVuZEFuZEJ1YmJsZShVJiYsIGNvbnN0IEZ1bmMm
KTsNCiAgICANCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KICAgIFQg
dGFrZUZpcnN0KGNvbnN0IEZ1bmMmKTsNCg0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+DQogICAgVCB0YWtlTGFzdChjb25zdCBGdW5jJik7DQoNCiAgICB2b2lkIGNsZWFy
KCk7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IGl0ZXJhdG9yIGZpbmRJZihj
b25zdCBQcmVkaWNhdGUmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IGNvbnN0
X2l0ZXJhdG9yIGZpbmRJZihjb25zdCBQcmVkaWNhdGUmKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAg
ICBmcmllbmQgY2xhc3MgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+Ow0KDQog
ICAgdHlwZWRlZiBWZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHk+IEJ1ZmZlcjsNCiAgICB0
eXBlZGVmIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+IFR5cGVPcGVyYXRpb25zOw0KICAgIHR5cGVk
ZWYgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yQmFzZTsNCg0K
ICAgIHZvaWQgcmVtb3ZlKHNpemVfdCBwb3NpdGlvbik7DQogICAgdm9pZCBpbnZhbGlkYXRlSXRl
cmF0b3JzKCk7DQogICAgdm9pZCBkZXN0cm95QWxsKCk7DQogICAgdm9pZCBjaGVja1ZhbGlkaXR5
KCkgY29uc3Q7DQogICAgdm9pZCBjaGVja0luZGV4VmFsaWRpdHkoc2l6ZV90KSBjb25zdDsNCiAg
ICB2b2lkIGV4cGFuZENhcGFjaXR5SWZOZWVkZWQoKTsNCiAgICB2b2lkIGV4cGFuZENhcGFjaXR5
KCk7DQoNCiAgICBzaXplX3QgbV9zdGFydDsNCiAgICBzaXplX3QgbV9lbmQ7DQogICAgQnVmZmVy
IG1fYnVmZmVyOw0KDQoNCg0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5ID0gMD4NCmNsYXNzIERlcXVlSXRlcmF0b3JCYXNlIHsNCiAgICBwdWJsaWM6IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9p
ZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRp
b24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxv
Y2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFm
dGVyVGhpc01hY3JvID0gaW50Ow0KcHJvdGVjdGVkOg0KICAgIERlcXVlSXRlcmF0b3JCYXNlKCk7
DQogICAgRGVxdWVJdGVyYXRvckJhc2UoY29uc3QgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+Kiwg
c2l6ZV90KTsNCiAgICBEZXF1ZUl0ZXJhdG9yQmFzZShjb25zdCBEZXF1ZUl0ZXJhdG9yQmFzZSYp
Ow0KICAgIERlcXVlSXRlcmF0b3JCYXNlJiBvcGVyYXRvcj0oY29uc3QgRGVxdWVJdGVyYXRvckJh
c2UmKTsNCiAgICB+RGVxdWVJdGVyYXRvckJhc2UoKTsNCg0KICAgIHZvaWQgYXNzaWduKGNvbnN0
IERlcXVlSXRlcmF0b3JCYXNlJiBvdGhlcikgeyAqdGhpcyA9IG90aGVyOyB9DQoNCiAgICB2b2lk
IGluY3JlbWVudCgpOw0KICAgIHZvaWQgZGVjcmVtZW50KCk7DQoNCiAgICBUKiBiZWZvcmUoKSBj
b25zdDsNCiAgICBUKiBhZnRlcigpIGNvbnN0Ow0KDQogICAgYm9vbCBpc0VxdWFsKGNvbnN0IERl
cXVlSXRlcmF0b3JCYXNlJikgY29uc3Q7DQoNCnByaXZhdGU6DQogICAgdm9pZCBhZGRUb0l0ZXJh
dG9yc0xpc3QoKTsNCiAgICB2b2lkIHJlbW92ZUZyb21JdGVyYXRvcnNMaXN0KCk7DQogICAgdm9p
ZCBjaGVja1ZhbGlkaXR5KCkgY29uc3Q7DQogICAgdm9pZCBjaGVja1ZhbGlkaXR5KGNvbnN0IERl
cXVlSXRlcmF0b3JCYXNlJikgY29uc3Q7DQoNCiAgICBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4q
IG1fZGVxdWU7DQogICAgc2l6ZV90IG1faW5kZXg7DQoNCiAgICBmcmllbmQgY2xhc3MgRGVxdWU8
VCwgaW5saW5lQ2FwYWNpdHk+Ow0KDQoNCg0KDQoNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+DQpjbGFzcyBEZXF1ZUl0ZXJhdG9yIDogcHVibGlj
IERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5PiB7DQogICAgcHVibGljOiB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9u
KSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2Nl
ZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRl
clRoaXNNYWNybyA9IGludDsNCnByaXZhdGU6DQogICAgdHlwZWRlZiBEZXF1ZUl0ZXJhdG9yQmFz
ZTxULCBpbmxpbmVDYXBhY2l0eT4gQmFzZTsNCiAgICB0eXBlZGVmIERlcXVlSXRlcmF0b3I8VCwg
aW5saW5lQ2FwYWNpdHk+IEl0ZXJhdG9yOw0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBwdHJkaWZm
X3QgZGlmZmVyZW5jZV90eXBlOw0KICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOw0KICAgIHR5cGVk
ZWYgVCogcG9pbnRlcjsNCiAgICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsNCiAgICB0eXBlZGVmIHN0
ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7DQoNCiAgICBE
ZXF1ZUl0ZXJhdG9yKERlcXVlPFQsIGlubGluZUNhcGFjaXR5PiogZGVxdWUsIHNpemVfdCBpbmRl
eCkNCiAgICAgICAgOiBCYXNlKGRlcXVlLCBpbmRleCkgeyB9DQoNCiAgICBEZXF1ZUl0ZXJhdG9y
KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgOiBCYXNlKG90aGVyKSB7IH0NCiAgICBEZXF1ZUl0ZXJh
dG9yJiBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IEJhc2U6OmFzc2lnbihvdGhl
cik7IHJldHVybiAqdGhpczsgfQ0KDQogICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KkJhc2U6OmFmdGVyKCk7IH0NCiAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gQmFz
ZTo6YWZ0ZXIoKTsgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gQmFzZTo6aXNFcXVhbChvdGhlcik7IH0NCiAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhQmFzZTo6aXNFcXVh
bChvdGhlcik7IH0NCg0KICAgIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBCYXNlOjppbmNyZW1l
bnQoKTsgcmV0dXJuICp0aGlzOyB9DQogICAgDQogICAgSXRlcmF0b3ImIG9wZXJhdG9yLS0oKSB7
IEJhc2U6OmRlY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7IH0NCiAgICANCn07DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+DQpjbGFzcyBEZXF1ZUNvbnN0
SXRlcmF0b3IgOiBwdWJsaWMgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+IHsN
CiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZy
ZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RG
OjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6
OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRh
Zywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcg
d2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0Zv
cmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHJpdmF0ZToNCiAgICB0eXBlZGVm
IERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5PiBCYXNlOw0KICAgIHR5cGVkZWYg
RGVxdWVDb25zdEl0ZXJhdG9yPFQsIGlubGluZUNhcGFjaXR5PiBJdGVyYXRvcjsNCiAgICB0eXBl
ZGVmIERlcXVlSXRlcmF0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IE5vbkNvbnN0SXRlcmF0b3I7DQoN
CnB1YmxpYzoNCiAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7DQogICAgdHlw
ZWRlZiBUIHZhbHVlX3R5cGU7DQogICAgdHlwZWRlZiBjb25zdCBUKiBwb2ludGVyOw0KICAgIHR5
cGVkZWYgY29uc3QgVCYgcmVmZXJlbmNlOw0KICAgIHR5cGVkZWYgc3RkOjpiaWRpcmVjdGlvbmFs
X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsNCg0KICAgIERlcXVlQ29uc3RJdGVyYXRv
cihjb25zdCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4qIGRlcXVlLCBzaXplX3QgaW5kZXgpDQog
ICAgICAgIDogQmFzZShkZXF1ZSwgaW5kZXgpIHsgfQ0KDQogICAgRGVxdWVDb25zdEl0ZXJhdG9y
KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgOiBCYXNlKG90aGVyKSB7IH0NCiAgICBEZXF1ZUNvbnN0
SXRlcmF0b3IoY29uc3QgTm9uQ29uc3RJdGVyYXRvciYgb3RoZXIpIDogQmFzZShvdGhlcikgeyB9
DQogICAgRGVxdWVDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVy
KSB7IEJhc2U6OmFzc2lnbihvdGhlcik7IHJldHVybiAqdGhpczsgfQ0KICAgIERlcXVlQ29uc3RJ
dGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IE5vbkNvbnN0SXRlcmF0b3ImIG90aGVyKSB7IEJhc2U6
OmFzc2lnbihvdGhlcik7IHJldHVybiAqdGhpczsgfQ0KDQogICAgY29uc3QgVCYgb3BlcmF0b3Iq
KCkgY29uc3QgeyByZXR1cm4gKkJhc2U6OmFmdGVyKCk7IH0NCiAgICBjb25zdCBUKiBvcGVyYXRv
ci0+KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6YWZ0ZXIoKTsgfQ0KDQogICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gQmFzZTo6aXNFcXVhbChv
dGhlcik7IH0NCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhQmFzZTo6aXNFcXVhbChvdGhlcik7IH0NCg0KICAgIEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyBCYXNlOjppbmNyZW1lbnQoKTsgcmV0dXJuICp0aGlzOyB9DQogICAgDQogICAg
SXRlcmF0b3ImIG9wZXJhdG9yLS0oKSB7IEJhc2U6OmRlY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7
IH0NCiAgICANCn07DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PiBpbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OmNoZWNrVmFsaWRpdHko
KSBjb25zdCB7IH0NCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
aW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpjaGVja0luZGV4VmFsaWRpdHko
c2l6ZV90KSBjb25zdCB7IH0NCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4gaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjppbnZhbGlkYXRlSXRl
cmF0b3JzKCkgeyB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjkzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9EZXF1ZS5o
Ig0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQppbmxpbmUg
RGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpEZXF1ZSgpDQogICAgOiBtX3N0YXJ0KDApDQogICAg
LCBtX2VuZCgwKQ0KDQoNCg0Kew0KICAgIGNoZWNrVmFsaWRpdHkoKTsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0KaW5saW5lIERlcXVlPFQsIGlubGlu
ZUNhcGFjaXR5Pjo6RGVxdWUoc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGluaXRpYWxpemVyTGlz
dCkNCiAgICA6IERlcXVlKCkNCnsNCiAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBpbml0aWFsaXpl
ckxpc3QpDQogICAgICAgIGFwcGVuZChlbGVtZW50KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0KaW5saW5lIERlcXVlPFQsIGlubGluZUNhcGFjaXR5
Pjo6RGVxdWUoY29uc3QgRGVxdWUmIG90aGVyKQ0KICAgIDogbV9zdGFydChvdGhlci5tX3N0YXJ0
KQ0KICAgICwgbV9lbmQob3RoZXIubV9lbmQpDQogICAgLCBtX2J1ZmZlcihvdGhlci5tX2J1ZmZl
ci5jYXBhY2l0eSgpKQ0KDQoNCg0Kew0KICAgIGNvbnN0IFQqIG90aGVyQnVmZmVyID0gb3RoZXIu
bV9idWZmZXIuYnVmZmVyKCk7DQogICAgaWYgKG1fc3RhcnQgPD0gbV9lbmQpDQogICAgICAgIFR5
cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlckJ1ZmZlciArIG1fc3RhcnQsIG90
aGVyQnVmZmVyICsgbV9lbmQsIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9zdGFydCk7DQogICAgZWxz
ZSB7DQogICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlckJ1ZmZl
ciwgb3RoZXJCdWZmZXIgKyBtX2VuZCwgbV9idWZmZXIuYnVmZmVyKCkpOw0KICAgICAgICBUeXBl
T3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXJCdWZmZXIgKyBtX3N0YXJ0LCBvdGhl
ckJ1ZmZlciArIG1fYnVmZmVyLmNhcGFjaXR5KCksIG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9zdGFy
dCk7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+DQppbmxpbmUgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjpEZXF1ZShEZXF1ZSYmIG90aGVy
KQ0KICAgIDogRGVxdWUoKQ0Kew0KICAgIHN3YXAob3RoZXIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQppbmxpbmUgYXV0byBEZXF1ZTxULCBpbmxp
bmVDYXBhY2l0eT46Om9wZXJhdG9yPShjb25zdCBEZXF1ZSYgb3RoZXIpIC0+IERlcXVlJg0Kew0K
ICAgIA0KICAgIA0KICAgIERlcXVlPFQsIGlubGluZUNhcGFjaXR5PiBjb3B5KG90aGVyKTsNCiAg
ICBzd2FwKGNvcHkpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0KaW5saW5lIGF1dG8gRGVxdWU8VCwgaW5saW5lQ2Fw
YWNpdHk+OjpvcGVyYXRvcj0oRGVxdWUmJiBvdGhlcikgLT4gRGVxdWUmDQp7DQogICAgc3dhcChv
dGhlcik7DQogICAgcmV0dXJuICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+DQppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46
OmRlc3Ryb3lBbGwoKQ0Kew0KICAgIGlmIChtX3N0YXJ0IDw9IG1fZW5kKQ0KICAgICAgICBUeXBl
T3BlcmF0aW9uczo6ZGVzdHJ1Y3QobV9idWZmZXIuYnVmZmVyKCkgKyBtX3N0YXJ0LCBtX2J1ZmZl
ci5idWZmZXIoKSArIG1fZW5kKTsNCiAgICBlbHNlIHsNCiAgICAgICAgVHlwZU9wZXJhdGlvbnM6
OmRlc3RydWN0KG1fYnVmZmVyLmJ1ZmZlcigpLCBtX2J1ZmZlci5idWZmZXIoKSArIG1fZW5kKTsN
CiAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KG1fYnVmZmVyLmJ1ZmZlcigpICsgbV9z
dGFydCwgbV9idWZmZXIuYnVmZmVyKCkgKyBtX2J1ZmZlci5jYXBhY2l0eSgpKTsNCiAgICB9DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4NCmlubGluZSBE
ZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46On5EZXF1ZSgpDQp7DQogICAgY2hlY2tWYWxpZGl0eSgp
Ow0KICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsNCiAgICBkZXN0cm95QWxsKCk7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4NCmlubGluZSB2b2lkIERl
cXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6c3dhcChEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4mIG90
aGVyKQ0Kew0KICAgIGNoZWNrVmFsaWRpdHkoKTsNCiAgICBvdGhlci5jaGVja1ZhbGlkaXR5KCk7
DQogICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOw0KICAgIHN0ZDo6c3dhcChtX3N0YXJ0LCBvdGhl
ci5tX3N0YXJ0KTsNCiAgICBzdGQ6OnN3YXAobV9lbmQsIG90aGVyLm1fZW5kKTsNCiAgICBtX2J1
ZmZlci5zd2FwKG90aGVyLm1fYnVmZmVyLCAwLCAwKTsNCiAgICBjaGVja1ZhbGlkaXR5KCk7DQog
ICAgb3RoZXIuY2hlY2tWYWxpZGl0eSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+DQppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46
OmNsZWFyKCkNCnsNCiAgICBjaGVja1ZhbGlkaXR5KCk7DQogICAgaW52YWxpZGF0ZUl0ZXJhdG9y
cygpOw0KICAgIGRlc3Ryb3lBbGwoKTsNCiAgICBtX3N0YXJ0ID0gMDsNCiAgICBtX2VuZCA9IDA7
DQogICAgbV9idWZmZXIuZGVhbGxvY2F0ZUJ1ZmZlcihtX2J1ZmZlci5idWZmZXIoKSk7DQogICAg
Y2hlY2tWYWxpZGl0eSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+DQppbmxpbmUgYXV0byBEZXF1
ZTxULCBpbmxpbmVDYXBhY2l0eT46OmZpbmRJZihjb25zdCBQcmVkaWNhdGUmIHByZWRpY2F0ZSkg
LT4gaXRlcmF0b3INCnsNCiAgICByZXR1cm4gc3RkOjpmaW5kX2lmKGJlZ2luKCksIGVuZCgpLCBw
cmVkaWNhdGUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+DQppbmxpbmUgYXV0byBEZXF1ZTxULCBp
bmxpbmVDYXBhY2l0eT46OmZpbmRJZihjb25zdCBQcmVkaWNhdGUmIHByZWRpY2F0ZSkgY29uc3Qg
LT4gY29uc3RfaXRlcmF0b3INCnsNCiAgICByZXR1cm4gc3RkOjpmaW5kX2lmKGJlZ2luKCksIGVu
ZCgpLCBwcmVkaWNhdGUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+DQppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OmV4cGFuZENh
cGFjaXR5SWZOZWVkZWQoKQ0Kew0KICAgIGlmIChtX3N0YXJ0KSB7DQogICAgICAgIGlmIChtX2Vu
ZCArIDEgIT0gbV9zdGFydCkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYgKG1f
ZW5kKSB7DQogICAgICAgIGlmIChtX2VuZCAhPSBtX2J1ZmZlci5jYXBhY2l0eSgpIC0gMSkNCiAg
ICAgICAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYgKG1fYnVmZmVyLmNhcGFjaXR5KCkpDQog
ICAgICAgIHJldHVybjsNCg0KICAgIGV4cGFuZENhcGFjaXR5KCk7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4NCnZvaWQgRGVxdWU8VCwgaW5saW5lQ2Fw
YWNpdHk+OjpleHBhbmRDYXBhY2l0eSgpDQp7DQogICAgY2hlY2tWYWxpZGl0eSgpOw0KICAgIHNp
emVfdCBvbGRDYXBhY2l0eSA9IG1fYnVmZmVyLmNhcGFjaXR5KCk7DQogICAgVCogb2xkQnVmZmVy
ID0gbV9idWZmZXIuYnVmZmVyKCk7DQogICAgbV9idWZmZXIuYWxsb2NhdGVCdWZmZXIoc3RkOjpt
YXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigxNiksIG9sZENhcGFjaXR5ICsgb2xkQ2FwYWNpdHkgLyA0
ICsgMSkpOw0KICAgIGlmIChtX3N0YXJ0IDw9IG1fZW5kKQ0KICAgICAgICBUeXBlT3BlcmF0aW9u
czo6bW92ZShvbGRCdWZmZXIgKyBtX3N0YXJ0LCBvbGRCdWZmZXIgKyBtX2VuZCwgbV9idWZmZXIu
YnVmZmVyKCkgKyBtX3N0YXJ0KTsNCiAgICBlbHNlIHsNCiAgICAgICAgVHlwZU9wZXJhdGlvbnM6
Om1vdmUob2xkQnVmZmVyLCBvbGRCdWZmZXIgKyBtX2VuZCwgbV9idWZmZXIuYnVmZmVyKCkpOw0K
ICAgICAgICBzaXplX3QgbmV3U3RhcnQgPSBtX2J1ZmZlci5jYXBhY2l0eSgpIC0gKG9sZENhcGFj
aXR5IC0gbV9zdGFydCk7DQogICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciAr
IG1fc3RhcnQsIG9sZEJ1ZmZlciArIG9sZENhcGFjaXR5LCBtX2J1ZmZlci5idWZmZXIoKSArIG5l
d1N0YXJ0KTsNCiAgICAgICAgbV9zdGFydCA9IG5ld1N0YXJ0Ow0KICAgIH0NCiAgICBtX2J1ZmZl
ci5kZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7DQogICAgY2hlY2tWYWxpZGl0eSgpOw0KfQ0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQp0ZW1wbGF0ZTx0
eXBlbmFtZSBVPg0KYm9vbCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OmNvbnRhaW5zKGNvbnN0
IFUmIHNlYXJjaFZhbHVlKSBjb25zdA0Kew0KICAgIGF1dG8gZW5kSXRlcmF0b3IgPSBlbmQoKTsN
CiAgICByZXR1cm4gc3RkOjpmaW5kKGJlZ2luKCksIGVuZEl0ZXJhdG9yLCBzZWFyY2hWYWx1ZSkg
IT0gZW5kSXRlcmF0b3I7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eT4NCmlubGluZSBhdXRvIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6dGFrZUZpcnN0
KCkgLT4gVA0Kew0KICAgIFQgb2xkRmlyc3QgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KGZpcnN0KCkpOw0KICAgIHJlbW92ZUZpcnN0KCk7DQogICAgcmV0dXJuIG9sZEZpcnN0
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQppbmxp
bmUgYXV0byBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OnRha2VMYXN0KCkgLT4gVA0Kew0KICAg
IFQgb2xkTGFzdCA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obGFzdCgpKTsN
CiAgICByZW1vdmVMYXN0KCk7DQogICAgcmV0dXJuIG9sZExhc3Q7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gdGVtcGxhdGU8dHlwZW5hbWUgVT4NCmlu
bGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6YXBwZW5kKFUmJiB2YWx1ZSkNCnsN
CiAgICBjaGVja1ZhbGlkaXR5KCk7DQogICAgZXhwYW5kQ2FwYWNpdHlJZk5lZWRlZCgpOw0KICAg
IG5ldyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2YobV9idWZmZXIuYnVmZmVyKClbbV9lbmRdKSkg
VChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsNCiAgICBpZiAobV9lbmQgPT0gbV9idWZmZXIuY2Fw
YWNpdHkoKSAtIDEpDQogICAgICAgIG1fZW5kID0gMDsNCiAgICBlbHNlDQogICAgICAgICsrbV9l
bmQ7DQogICAgY2hlY2tWYWxpZGl0eSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+IHRlbXBsYXRlPHR5cGVuYW1lIFU+DQppbmxpbmUgdm9pZCBEZXF1
ZTxULCBpbmxpbmVDYXBhY2l0eT46OnByZXBlbmQoVSYmIHZhbHVlKQ0Kew0KICAgIGNoZWNrVmFs
aWRpdHkoKTsNCiAgICBleHBhbmRDYXBhY2l0eUlmTmVlZGVkKCk7DQogICAgaWYgKCFtX3N0YXJ0
KQ0KICAgICAgICBtX3N0YXJ0ID0gbV9idWZmZXIuY2FwYWNpdHkoKSAtIDE7DQogICAgZWxzZQ0K
ICAgICAgICAtLW1fc3RhcnQ7DQogICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihtX2J1
ZmZlci5idWZmZXIoKVttX3N0YXJ0XSkpIFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7DQogICAg
Y2hlY2tWYWxpZGl0eSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+DQppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZUZp
cnN0KCkNCnsNCiAgICBjaGVja1ZhbGlkaXR5KCk7DQogICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygp
Ow0KICAgICgodm9pZCkwKTsNCiAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3Qoc3RkOjphZGRy
ZXNzb2YobV9idWZmZXIuYnVmZmVyKClbbV9zdGFydF0pLCBzdGQ6OmFkZHJlc3NvZihtX2J1ZmZl
ci5idWZmZXIoKVttX3N0YXJ0ICsgMV0pKTsNCiAgICBpZiAobV9zdGFydCA9PSBtX2J1ZmZlci5j
YXBhY2l0eSgpIC0gMSkNCiAgICAgICAgbV9zdGFydCA9IDA7DQogICAgZWxzZQ0KICAgICAgICAr
K21fc3RhcnQ7DQogICAgY2hlY2tWYWxpZGl0eSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBh
Y2l0eT46OnJlbW92ZUxhc3QoKQ0Kew0KICAgIGNoZWNrVmFsaWRpdHkoKTsNCiAgICBpbnZhbGlk
YXRlSXRlcmF0b3JzKCk7DQogICAgKCh2b2lkKTApOw0KICAgIGlmICghbV9lbmQpDQogICAgICAg
IG1fZW5kID0gbV9idWZmZXIuY2FwYWNpdHkoKSAtIDE7DQogICAgZWxzZQ0KICAgICAgICAtLW1f
ZW5kOw0KICAgIFR5cGVPcGVyYXRpb25zOjpkZXN0cnVjdChzdGQ6OmFkZHJlc3NvZihtX2J1ZmZl
ci5idWZmZXIoKVttX2VuZF0pLCBzdGQ6OmFkZHJlc3NvZihtX2J1ZmZlci5idWZmZXIoKVttX2Vu
ZCArIDFdKSk7DQogICAgY2hlY2tWYWxpZGl0eSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBh
Y2l0eT46OnJlbW92ZShpdGVyYXRvciYgaXQpDQp7DQogICAgaXQuY2hlY2tWYWxpZGl0eSgpOw0K
ICAgIHJlbW92ZShpdC5tX2luZGV4KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5Pg0KaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+Ojpy
ZW1vdmUoY29uc3RfaXRlcmF0b3ImIGl0KQ0Kew0KICAgIGl0LmNoZWNrVmFsaWRpdHkoKTsNCiAg
ICByZW1vdmUoaXQubV9pbmRleCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eT4NCmlubGluZSB2b2lkIERlcXVlPFQsIGlubGluZUNhcGFjaXR5Pjo6cmVt
b3ZlKHNpemVfdCBwb3NpdGlvbikNCnsNCiAgICBpZiAocG9zaXRpb24gPT0gbV9lbmQpDQogICAg
ICAgIHJldHVybjsNCg0KICAgIGNoZWNrVmFsaWRpdHkoKTsNCiAgICBpbnZhbGlkYXRlSXRlcmF0
b3JzKCk7DQoNCiAgICBUKiBidWZmZXIgPSBtX2J1ZmZlci5idWZmZXIoKTsNCiAgICBUeXBlT3Bl
cmF0aW9uczo6ZGVzdHJ1Y3Qoc3RkOjphZGRyZXNzb2YoYnVmZmVyW3Bvc2l0aW9uXSksIHN0ZDo6
YWRkcmVzc29mKGJ1ZmZlcltwb3NpdGlvbiArIDFdKSk7DQoNCiAgICANCiAgICBpZiAocG9zaXRp
b24gPj0gbV9zdGFydCkgew0KICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5n
KGJ1ZmZlciArIG1fc3RhcnQsIGJ1ZmZlciArIHBvc2l0aW9uLCBidWZmZXIgKyBtX3N0YXJ0ICsg
MSk7DQogICAgICAgIG1fc3RhcnQgPSAobV9zdGFydCArIDEpICUgbV9idWZmZXIuY2FwYWNpdHko
KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5n
KGJ1ZmZlciArIHBvc2l0aW9uICsgMSwgYnVmZmVyICsgbV9lbmQsIGJ1ZmZlciArIHBvc2l0aW9u
KTsNCiAgICAgICAgbV9lbmQgPSAobV9lbmQgLSAxICsgbV9idWZmZXIuY2FwYWNpdHkoKSkgJSBt
X2J1ZmZlci5jYXBhY2l0eSgpOw0KICAgIH0NCiAgICBjaGVja1ZhbGlkaXR5KCk7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4NCnRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+DQppbmxpbmUgdm9pZCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OnJlbW92ZUFs
bE1hdGNoaW5nKGNvbnN0IEZ1bmMmIGZ1bmMpDQp7DQogICAgc2l6ZV90IGNvdW50ID0gc2l6ZSgp
Ow0KICAgIHdoaWxlIChjb3VudC0tKSB7DQogICAgICAgIFQgdmFsdWUgPSB0YWtlRmlyc3QoKTsN
CiAgICAgICAgaWYgKCFmdW5jKHZhbHVlKSkNCiAgICAgICAgICAgIGFwcGVuZChzdGQ6Om1vdmU8
V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKSk7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBGdW5jPg0KaW5saW5lIHZvaWQgRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+OjphcHBl
bmRBbmRCdWJibGUoVSYmIHZhbHVlLCBjb25zdCBGdW5jJiBmdW5jKQ0Kew0KICAgIGFwcGVuZChz
dGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKSk7DQogICAgaXRlcmF0b3Ig
YmVnaW4gPSB0aGlzLT5iZWdpbigpOw0KICAgIGl0ZXJhdG9yIGl0ZXIgPSBlbmQoKTsNCiAgICAt
LWl0ZXI7DQogICAgd2hpbGUgKGl0ZXIgIT0gYmVnaW4pIHsNCiAgICAgICAgaXRlcmF0b3IgcHJl
diA9IGl0ZXI7DQogICAgICAgIC0tcHJldjsNCiAgICAgICAgaWYgKCFmdW5jKCpwcmV2KSkNCiAg
ICAgICAgICAgIHJldHVybjsNCiAgICAgICAgc3RkOjpzd2FwKCpwcmV2LCAqaXRlcik7DQogICAg
ICAgIGl0ZXIgPSBwcmV2Ow0KICAgIH0NCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5Pg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCmlubGluZSBUIERlcXVl
PFQsIGlubGluZUNhcGFjaXR5Pjo6dGFrZUZpcnN0KGNvbnN0IEZ1bmMmIGZ1bmMpDQp7DQogICAg
dW5zaWduZWQgY291bnQgPSAwOw0KICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7DQog
ICAgd2hpbGUgKGNvdW50IDwgc2l6ZSkgew0KICAgICAgICBUIGNhbmRpZGF0ZSA9IHRha2VGaXJz
dCgpOw0KICAgICAgICBpZiAoZnVuYyhjYW5kaWRhdGUpKSB7DQogICAgICAgICAgICB3aGlsZSAo
Y291bnQtLSkNCiAgICAgICAgICAgICAgICBwcmVwZW5kKHRha2VMYXN0KCkpOw0KICAgICAgICAg
ICAgcmV0dXJuIGNhbmRpZGF0ZTsNCiAgICAgICAgfQ0KICAgICAgICBjb3VudCsrOw0KICAgICAg
ICBhcHBlbmQoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihjYW5kaWRhdGUpKTsN
CiAgICB9DQogICAgcmV0dXJuIFQoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5Pg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCmlubGluZSBUIERlcXVl
PFQsIGlubGluZUNhcGFjaXR5Pjo6dGFrZUxhc3QoY29uc3QgRnVuYyYgZnVuYykNCnsNCiAgICB1
bnNpZ25lZCBjb3VudCA9IDA7DQogICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsNCiAg
ICB3aGlsZSAoY291bnQgPCBzaXplKSB7DQogICAgICAgIFQgY2FuZGlkYXRlID0gdGFrZUxhc3Qo
KTsNCiAgICAgICAgaWYgKGZ1bmMoY2FuZGlkYXRlKSkgew0KICAgICAgICAgICAgd2hpbGUgKGNv
dW50LS0pDQogICAgICAgICAgICAgICAgYXBwZW5kKHRha2VGaXJzdCgpKTsNCiAgICAgICAgICAg
IHJldHVybiBjYW5kaWRhdGU7DQogICAgICAgIH0NCiAgICAgICAgY291bnQrKzsNCiAgICAgICAg
cHJlcGVuZChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGNhbmRpZGF0ZSkpOw0K
ICAgIH0NCiAgICByZXR1cm4gVCgpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIHZvaWQgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5l
Q2FwYWNpdHk+OjpjaGVja1ZhbGlkaXR5KCkgY29uc3QgeyB9DQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSB2b2lkIERlcXVlSXRlcmF0b3JCYXNlPFQs
IGlubGluZUNhcGFjaXR5Pjo6Y2hlY2tWYWxpZGl0eShjb25zdCBEZXF1ZUl0ZXJhdG9yQmFzZTxU
LCBpbmxpbmVDYXBhY2l0eT4mKSBjb25zdCB7IH0NCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIHZvaWQgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5l
Q2FwYWNpdHk+OjphZGRUb0l0ZXJhdG9yc0xpc3QoKSB7IH0NCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIHZvaWQgRGVxdWVJdGVyYXRvckJhc2U8VCwg
aW5saW5lQ2FwYWNpdHk+OjpyZW1vdmVGcm9tSXRlcmF0b3JzTGlzdCgpIHsgfQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY4OSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRGVxdWUu
aCINCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0KaW5saW5l
IERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6RGVxdWVJdGVyYXRvckJhc2Uo
KQ0KICAgIDogbV9kZXF1ZSgwKQ0Kew0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+DQppbmxpbmUgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNp
dHk+OjpEZXF1ZUl0ZXJhdG9yQmFzZShjb25zdCBEZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT4qIGRl
cXVlLCBzaXplX3QgaW5kZXgpDQogICAgOiBtX2RlcXVlKGNvbnN0X2Nhc3Q8RGVxdWU8VCwgaW5s
aW5lQ2FwYWNpdHk+Kj4oZGVxdWUpKQ0KICAgICwgbV9pbmRleChpbmRleCkNCnsNCiAgICBhZGRU
b0l0ZXJhdG9yc0xpc3QoKTsNCiAgICBjaGVja1ZhbGlkaXR5KCk7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4NCmlubGluZSBEZXF1ZUl0ZXJhdG9yQmFz
ZTxULCBpbmxpbmVDYXBhY2l0eT46OkRlcXVlSXRlcmF0b3JCYXNlKGNvbnN0IERlcXVlSXRlcmF0
b3JCYXNlJiBvdGhlcikNCiAgICA6IG1fZGVxdWUob3RoZXIubV9kZXF1ZSkNCiAgICAsIG1faW5k
ZXgob3RoZXIubV9pbmRleCkNCnsNCiAgICBhZGRUb0l0ZXJhdG9yc0xpc3QoKTsNCiAgICBjaGVj
a1ZhbGlkaXR5KCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4NCmlubGluZSBEZXF1ZUl0ZXJhdG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT4mIERlcXVl
SXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6b3BlcmF0b3I9KGNvbnN0IERlcXVlSXRl
cmF0b3JCYXNlJiBvdGhlcikNCnsNCiAgICBvdGhlci5jaGVja1ZhbGlkaXR5KCk7DQogICAgcmVt
b3ZlRnJvbUl0ZXJhdG9yc0xpc3QoKTsNCg0KICAgIG1fZGVxdWUgPSBvdGhlci5tX2RlcXVlOw0K
ICAgIG1faW5kZXggPSBvdGhlci5tX2luZGV4Ow0KICAgIGFkZFRvSXRlcmF0b3JzTGlzdCgpOw0K
ICAgIGNoZWNrVmFsaWRpdHkoKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4NCmlubGluZSBEZXF1ZUl0ZXJhdG9yQmFz
ZTxULCBpbmxpbmVDYXBhY2l0eT46On5EZXF1ZUl0ZXJhdG9yQmFzZSgpDQp7DQoNCg0KDQoNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0KaW5saW5lIGJv
b2wgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+Ojppc0VxdWFsKGNvbnN0IERl
cXVlSXRlcmF0b3JCYXNlJiBvdGhlcikgY29uc3QNCnsNCiAgICBjaGVja1ZhbGlkaXR5KG90aGVy
KTsNCiAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4Ow0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+DQppbmxpbmUgdm9pZCBEZXF1ZUl0ZXJh
dG9yQmFzZTxULCBpbmxpbmVDYXBhY2l0eT46OmluY3JlbWVudCgpDQp7DQogICAgY2hlY2tWYWxp
ZGl0eSgpOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKG1faW5kZXgg
PT0gbV9kZXF1ZS0+bV9idWZmZXIuY2FwYWNpdHkoKSAtIDEpDQogICAgICAgIG1faW5kZXggPSAw
Ow0KICAgIGVsc2UNCiAgICAgICAgKyttX2luZGV4Ow0KICAgIGNoZWNrVmFsaWRpdHkoKTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0KaW5saW5lIHZv
aWQgRGVxdWVJdGVyYXRvckJhc2U8VCwgaW5saW5lQ2FwYWNpdHk+OjpkZWNyZW1lbnQoKQ0Kew0K
ICAgIGNoZWNrVmFsaWRpdHkoKTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAg
IGlmICghbV9pbmRleCkNCiAgICAgICAgbV9pbmRleCA9IG1fZGVxdWUtPm1fYnVmZmVyLmNhcGFj
aXR5KCkgLSAxOw0KICAgIGVsc2UNCiAgICAgICAgLS1tX2luZGV4Ow0KICAgIGNoZWNrVmFsaWRp
dHkoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0K
aW5saW5lIFQqIERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6YWZ0ZXIoKSBj
b25zdA0Kew0KICAgIGNoZWNrVmFsaWRpdHkoKTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJu
IHN0ZDo6YWRkcmVzc29mKG1fZGVxdWUtPm1fYnVmZmVyLmJ1ZmZlcigpW21faW5kZXhdKTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5Pg0KaW5saW5lIFQq
IERlcXVlSXRlcmF0b3JCYXNlPFQsIGlubGluZUNhcGFjaXR5Pjo6YmVmb3JlKCkgY29uc3QNCnsN
CiAgICBjaGVja1ZhbGlkaXR5KCk7DQogICAgKCh2b2lkKTApOw0KICAgIGlmICghbV9pbmRleCkN
CiAgICAgICAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKG1fZGVxdWUtPm1fYnVmZmVyLmJ1ZmZlcigp
W21fZGVxdWUtPm1fYnVmZmVyLmNhcGFjaXR5KCkgLSAxXSk7DQogICAgcmV0dXJuIHN0ZDo6YWRk
cmVzc29mKG1fZGVxdWUtPm1fYnVmZmVyLmJ1ZmZlcigpW21faW5kZXggLSAxXSk7DQp9DQoNCn0g
DQoNCnVzaW5nIFdURjo6RGVxdWU7DQojbGluZSA0NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFwLmgiDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTWFy
a2FibGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCg0KDQoNCnRlbXBsYXRlPA0KICAgIHR5cGVuYW1lIEVudW1UeXBlLA0KICAgIHR5cGVu
YW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW1UeXBlPjo6dHlwZSBjb25zdGFudCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0
eXBlPjo6bWF4KCk+DQpzdHJ1Y3QgRW51bU1hcmthYmxlVHJhaXRzIHsNCiAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfZW51bTxFbnVtVHlwZT46OnZhbHVlLCAiIik7DQogICAgdXNpbmcgVW5kZXJs
eWluZ1R5cGUgPSB0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFbnVtVHlwZT46OnR5cGU7
DQoNCiAgICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKEVudW1UeXBlIHZhbHVl
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuZGVybHlpbmdUeXBlPih2YWx1
ZSkgPT0gY29uc3RhbnQ7DQogICAgfQ0KDQogICAgY29uc3RleHByIHN0YXRpYyBFbnVtVHlwZSBl
bXB0eVZhbHVlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbnVtVHlwZT4o
Y29uc3RhbnQpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwg
SW50ZWdyYWxUeXBlIGNvbnN0YW50ID0gMD4NCnN0cnVjdCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRz
IHsNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8SW50ZWdyYWxUeXBlPjo6dmFs
dWUsICIiKTsNCiAgICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKEludGVncmFs
VHlwZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIHJldHVybiB2YWx1ZSA9PSBjb25zdGFudDsNCiAg
ICB9DQoNCiAgICBjb25zdGV4cHIgc3RhdGljIEludGVncmFsVHlwZSBlbXB0eVZhbHVlKCkNCiAg
ICB7DQogICAgICAgIHJldHVybiBjb25zdGFudDsNCiAgICB9DQp9Ow0KDQoNCg0KDQoNCg0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+DQpjbGFzcyBNYXJrYWJsZSB7DQog
ICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9j
KHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcs
IHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdl
YmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3Jj
ZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBjb25zdGV4cHIg
TWFya2FibGUoKQ0KICAgICAgICA6IG1fdmFsdWUoVHJhaXRzOjplbXB0eVZhbHVlKCkpDQogICAg
eyB9DQoNCiAgICBjb25zdGV4cHIgTWFya2FibGUoV1RGOjpudWxsb3B0X3QpDQogICAgICAgIDog
TWFya2FibGUoKQ0KICAgIHsgfQ0KDQogICAgY29uc3RleHByIE1hcmthYmxlKFQmJiB2YWx1ZSkN
CiAgICAgICAgOiBtX3ZhbHVlKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFs
dWUpKQ0KICAgIHsgfQ0KDQogICAgY29uc3RleHByIE1hcmthYmxlKGNvbnN0IFQmIHZhbHVlKQ0K
ICAgICAgICA6IG1fdmFsdWUodmFsdWUpDQogICAgeyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPg0KICAgIGNvbnN0ZXhwciBleHBsaWNpdCBNYXJrYWJsZShzdGQ6OmluX3BsYWNl
X3QsIEFyZ3MmJi4uLiBhcmdzKQ0KICAgICAgICA6IG1fdmFsdWUoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKQ0KICAgIHsgfQ0KDQogICAgY29uc3RleHByIE1hcmthYmxlKGNvbnN0IE9wdGlv
bmFsPFQ+JiB2YWx1ZSkNCiAgICAgICAgOiBtX3ZhbHVlKGJvb2wodmFsdWUpID8gKnZhbHVlIDog
VHJhaXRzOjplbXB0eVZhbHVlKCkpDQogICAgeyB9DQoNCiAgICBjb25zdGV4cHIgTWFya2FibGUo
T3B0aW9uYWw8VD4mJiB2YWx1ZSkNCiAgICAgICAgOiBtX3ZhbHVlKGJvb2wodmFsdWUpID8gc3Rk
Ojptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPigqdmFsdWUpIDogVHJhaXRzOjplbXB0eVZh
bHVlKCkpDQogICAgeyB9DQoNCiAgICBjb25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICFUcmFpdHM6OmlzRW1wdHlWYWx1ZShtX3ZhbHVlKTsgfQ0KDQogICAg
dm9pZCByZXNldCgpIHsgbV92YWx1ZSA9IFRyYWl0czo6ZW1wdHlWYWx1ZSgpOyB9DQoNCiAgICBj
b25zdGV4cHIgY29uc3QgVCYgdmFsdWUoKSBjb25zdCYgeyByZXR1cm4gbV92YWx1ZTsgfQ0KICAg
IGNvbnN0ZXhwciBUJiB2YWx1ZSgpICYgeyByZXR1cm4gbV92YWx1ZTsgfQ0KICAgIGNvbnN0ZXhw
ciBUJiYgdmFsdWUoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0
ZXI+KG1fdmFsdWUpOyB9DQoNCiAgICBjb25zdGV4cHIgY29uc3QgVCogb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKG1fdmFsdWUpOyB9DQogICAgY29uc3RleHByIFQq
IG9wZXJhdG9yLT4oKSB7IHJldHVybiBzdGQ6OmFkZHJlc3NvZihtX3ZhbHVlKTsgfQ0KDQogICAg
Y29uc3RleHByIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0JiB7IHJldHVybiBtX3ZhbHVlOyB9
DQogICAgY29uc3RleHByIFQmIG9wZXJhdG9yKigpICYgeyByZXR1cm4gbV92YWx1ZTsgfQ0KDQog
ICAgb3BlcmF0b3IgT3B0aW9uYWw8VD4oKSAmJg0KICAgIHsNCiAgICAgICAgaWYgKGJvb2woKnRo
aXMpKQ0KICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRl
cj4obV92YWx1ZSk7DQogICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7DQogICAgfQ0KDQogICAg
b3BlcmF0b3IgT3B0aW9uYWw8VD4oKSBjb25zdCYNCiAgICB7DQogICAgICAgIGlmIChib29sKCp0
aGlzKSkNCiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOw0KICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0Ow0KICAgIH0NCg0KICAgIE9wdGlvbmFsPFQ+IGFzT3B0aW9uYWwoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFQ+KCp0aGlzKTsNCiAgICB9DQoNCnByaXZhdGU6
DQogICAgVCBtX3ZhbHVlOw0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRy
YWl0cz4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXJrYWJsZTxULCBUcmFpdHM+
JiB4LCBjb25zdCBNYXJrYWJsZTxULCBUcmFpdHM+JiB5KQ0Kew0KICAgIGlmIChib29sKHgpICE9
IGJvb2woeSkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICBpZiAoIWJvb2woeCkpDQogICAg
ICAgIHJldHVybiB0cnVlOw0KICAgIHJldHVybiB4LnZhbHVlKCkgPT0geS52YWx1ZSgpOw0KfQ0K
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBNYXJrYWJsZTxULCBUcmFpdHM+JiB4LCBjb25zdCBUJiB2KSB7IHJldHVy
biBib29sKHgpICYmIHgudmFsdWUoKSA9PSB2OyB9DQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVHJhaXRzPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0
IE1hcmthYmxlPFQsIFRyYWl0cz4mIHgpIHsgcmV0dXJuIGJvb2woeCkgJiYgdiA9PSB4LnZhbHVl
KCk7IH0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXJrYWJsZTxULCBUcmFpdHM+JiB4LCBjb25zdCBNYXJr
YWJsZTxULCBUcmFpdHM+JiB5KSB7IHJldHVybiAhKHggPT0geSk7IH0NCnRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TWFya2FibGU8VCwgVHJhaXRzPiYgeCwgY29uc3QgVCYgdikgeyByZXR1cm4gISh4ID09IHYpOyB9
DQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IE1hcmthYmxlPFQsIFRyYWl0cz4mIHgpIHsgcmV0
dXJuICEodiA9PSB4KTsgfQ0KDQp9IA0KDQp1c2luZyBXVEY6Ok1hcmthYmxlOw0KdXNpbmcgV1RG
OjpJbnRlZ3JhbE1hcmthYmxlVHJhaXRzOw0KdXNpbmcgV1RGOjpFbnVtTWFya2FibGVUcmFpdHM7
DQojbGluZSA1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxoZWFwXFxIZWFwLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QYXJhbGxlbEhlbHBlclBvb2wuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgQXV0b21h
dGljVGhyZWFkOw0KY2xhc3MgQXV0b21hdGljVGhyZWFkQ29uZGl0aW9uOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBQYXJhbGxlbEhlbHBlclBvb2w7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmNsYXNzIFBhcmFsbGVsSGVscGVyQ2xpZW50IHsNCiAgICBQYXJhbGxl
bEhlbHBlckNsaWVudChjb25zdCBQYXJhbGxlbEhlbHBlckNsaWVudCYpID0gZGVsZXRlOyBQYXJh
bGxlbEhlbHBlckNsaWVudCYgb3BlcmF0b3I9KGNvbnN0IFBhcmFsbGVsSGVscGVyQ2xpZW50Jikg
PSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlv
bjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhp
c0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQog
ICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFBhcmFsbGVsSGVscGVyQ2xpZW50KFJlZlB0cjxQYXJh
bGxlbEhlbHBlclBvb2w+JiYpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB+UGFyYWxsZWxI
ZWxwZXJDbGllbnQoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHNldFRhc2so
UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+JiYpOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4NCiAgICB2b2lkIHNldEZ1bmN0aW9uKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpDQog
ICAgew0KICAgICAgICBzZXRUYXNrKGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCAoKT4oZnVuY3Rvcikp
Ow0KICAgIH0NCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBmaW5pc2goKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGRvU29tZUhlbHBpbmcoKTsNCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHJ1blRh
c2tJblBhcmFsbGVsKFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiYmKTsNCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+DQogICAgdm9pZCBy
dW5GdW5jdGlvbkluUGFyYWxsZWwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikNCiAgICB7DQogICAg
ICAgIHJ1blRhc2tJblBhcmFsbGVsKGNyZWF0ZVNoYXJlZFRhc2s8dm9pZCAoKT4oZnVuY3Rvcikp
Ow0KICAgIH0NCg0KICAgIFBhcmFsbGVsSGVscGVyUG9vbCYgcG9vbCgpIHsgcmV0dXJuICptX3Bv
b2w7IH0NCiAgICB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZVRocmVhZHMoKSBjb25zdCB7IHJldHVy
biBtX251bUFjdGl2ZTsgfQ0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBQYXJhbGxlbEhl
bHBlclBvb2w7DQoNCiAgICB2b2lkIGZpbmlzaChjb25zdCBBYnN0cmFjdExvY2tlciYpOw0KICAg
IFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiBjbGFpbVRhc2soY29uc3QgQWJzdHJhY3RMb2Nr
ZXImKTsNCiAgICB2b2lkIHJ1blRhc2soY29uc3QgUmVmUHRyPFNoYXJlZFRhc2s8dm9pZCAoKT4+
Jik7DQogICAgDQogICAgUmVmUHRyPFBhcmFsbGVsSGVscGVyUG9vbD4gbV9wb29sOw0KICAgIFJl
ZlB0cjxTaGFyZWRUYXNrPHZvaWQgKCk+PiBtX3Rhc2s7DQogICAgdW5zaWduZWQgbV9udW1BY3Rp
dmUgeyAwIH07DQp9Ow0KDQpjbGFzcyBQYXJhbGxlbEhlbHBlclBvb2wgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UGFyYWxsZWxIZWxwZXJQb29sPiB7DQpwdWJsaWM6DQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIFBhcmFsbGVsSGVscGVyUG9vbChDU3RyaW5nJiYgdGhyZWFkTmFtZSk7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIH5QYXJhbGxlbEhlbHBlclBvb2woKTsNCg0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGVuc3VyZVRocmVhZHModW5zaWduZWQgbnVtVGhy
ZWFkcyk7DQoNCiAgICB1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMoKSBjb25zdCB7IHJldHVybiBt
X251bVRocmVhZHM7IH0NCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkb1Nv
bWVIZWxwaW5nKCk7DQoNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIFBhcmFsbGVsSGVscGVy
Q2xpZW50Ow0KICAgIGNsYXNzIFRocmVhZDsNCiAgICBmcmllbmQgY2xhc3MgVGhyZWFkOw0KDQog
ICAgdm9pZCBkaWRNYWtlV29ya0F2YWlsYWJsZShjb25zdCBBYnN0cmFjdExvY2tlciYpOw0KDQog
ICAgYm9vbCBoYXNDbGllbnRXaXRoVGFzayhjb25zdCBBYnN0cmFjdExvY2tlciYpOw0KICAgIFBh
cmFsbGVsSGVscGVyQ2xpZW50KiBnZXRDbGllbnRXaXRoVGFzayhjb25zdCBBYnN0cmFjdExvY2tl
ciYpOw0KICAgIFBhcmFsbGVsSGVscGVyQ2xpZW50KiB3YWl0Rm9yQ2xpZW50V2l0aFRhc2soY29u
c3QgQWJzdHJhY3RMb2NrZXImKTsNCiAgICANCiAgICBCb3g8TG9jaz4gbV9sb2NrOyANCiAgICBS
ZWY8QXV0b21hdGljVGhyZWFkQ29uZGl0aW9uPiBtX3dvcmtBdmFpbGFibGVDb25kaXRpb247DQog
ICAgQ29uZGl0aW9uIG1fd29ya0NvbXBsZXRlQ29uZGl0aW9uOw0KDQogICAgV2Vha1JhbmRvbSBt
X3JhbmRvbTsNCiAgICANCiAgICBWZWN0b3I8UGFyYWxsZWxIZWxwZXJDbGllbnQqPiBtX2NsaWVu
dHM7DQogICAgVmVjdG9yPFJlZlB0cjxBdXRvbWF0aWNUaHJlYWQ+PiBtX3RocmVhZHM7DQogICAg
Q1N0cmluZyBtX3RocmVhZE5hbWU7DQogICAgdW5zaWduZWQgbV9udW1UaHJlYWRzIHsgMCB9OyAN
CiAgICBib29sIG1faXNEeWluZyB7IGZhbHNlIH07DQp9Ow0KDQp9IA0KDQp1c2luZyBXVEY6OlBh
cmFsbGVsSGVscGVyQ2xpZW50Ow0KdXNpbmcgV1RGOjpQYXJhbGxlbEhlbHBlclBvb2w7DQojbGlu
ZSA1MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxo
ZWFwXFxIZWFwLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENvZGVCbG9jazsNCmNs
YXNzIENvZGVCbG9ja1NldDsNCmNsYXNzIENvbGxlY3RpbmdTY29wZTsNCmNsYXNzIENvbnNlcnZh
dGl2ZVJvb3RzOw0KY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7DQpjbGFzcyBFZGVuR0NBY3Rpdml0
eUNhbGxiYWNrOw0KY2xhc3MgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazsNCmNsYXNzIEdDQWN0aXZp
dHlDYWxsYmFjazsNCmNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZTsNCmNsYXNzIEhlYXA7DQpj
bGFzcyBIZWFwUHJvZmlsZXI7DQpjbGFzcyBIZWFwVmVyaWZpZXI7DQpjbGFzcyBJbmNyZW1lbnRh
bFN3ZWVwZXI7DQpjbGFzcyBKSVRTdHViUm91dGluZTsNCmNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0
Ow0KY2xhc3MgSlNDZWxsOw0KY2xhc3MgSlNJbW11dGFibGVCdXR0ZXJmbHk7DQpjbGFzcyBKU1Zh
bHVlOw0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KY2xhc3MgTWFjaGluZVRocmVhZHM7
DQpjbGFzcyBNYXJrU3RhY2tBcnJheTsNCmNsYXNzIE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50
Ow0KY2xhc3MgTWFya2VkSlNWYWx1ZVJlZkFycmF5Ow0KY2xhc3MgQmxvY2tEaXJlY3Rvcnk7DQpj
bGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsNCmNsYXNzIE1hcmtpbmdDb25zdHJhaW50Ow0KY2xh
c3MgTWFya2luZ0NvbnN0cmFpbnRTZXQ7DQpjbGFzcyBNdXRhdG9yU2NoZWR1bGVyOw0KY2xhc3Mg
UnVubmluZ1Njb3BlOw0KY2xhc3MgU2xvdFZpc2l0b3I7DQpjbGFzcyBTcGFjZVRpbWVNdXRhdG9y
U2NoZWR1bGVyOw0KY2xhc3MgU3RvcElmTmVjZXNzYXJ5VGltZXI7DQpjbGFzcyBTd2VlcGluZ1Nj
b3BlOw0KY2xhc3MgVk07DQpjbGFzcyBXZWFrR0NNYXBCYXNlOw0Kc3RydWN0IEN1cnJlbnRUaHJl
YWRTdGF0ZTsNCg0KDQoNCg0KDQpuYW1lc3BhY2UgREZHIHsNCmNsYXNzIFNwZWN1bGF0aXZlSklU
Ow0KY2xhc3MgV29ya2xpc3Q7DQp9DQoNCg0KDQojbGluZSAxMDQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcC5oIg0KDQojbGluZSAx
MDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVh
cFxcSGVhcC5oIg0KDQpjb25zdGV4cHIgYm9vbCB2YWxpZGF0ZURGR0RvZXNHQyA9IDA7DQoNCnR5
cGVkZWYgSGFzaENvdW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0Ow0KdHlwZWRlZiBI
YXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj4gVHlwZUNvdW50U2V0Ow0KDQplbnVtIEhlYXBUeXBl
IHsgU21hbGxIZWFwLCBMYXJnZUhlYXAgfTsNCg0KY2xhc3MgSGVhcFV0aWw7DQoNCmNsYXNzIEhl
YXAgew0KICAgIEhlYXAoY29uc3QgSGVhcCYpID0gZGVsZXRlOyBIZWFwJiBvcGVyYXRvcj0oY29u
c3QgSGVhcCYpID0gZGVsZXRlOzsNCnB1YmxpYzoNCiAgICBmcmllbmQgY2xhc3MgSklUOw0KICAg
IGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOw0KICAgIHN0YXRpYyBIZWFwKiBoZWFw
KGNvbnN0IEpTVmFsdWUpOyANCiAgICBzdGF0aWMgSGVhcCogaGVhcChjb25zdCBIZWFwQ2VsbCop
Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBzX3RpbWVDaGVja1Jlc29sdXRpb24gPSAxNjsNCg0KICAgIGJvb2wgaXNNYXJrZWQoY29uc3Qg
dm9pZCopOw0KICAgIHN0YXRpYyBib29sIHRlc3RBbmRTZXRNYXJrZWQoSGVhcFZlcnNpb24sIGNv
bnN0IHZvaWQqKTsNCiAgICANCiAgICBzdGF0aWMgc2l6ZV90IGNlbGxTaXplKGNvbnN0IHZvaWQq
KTsNCg0KICAgIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSk7DQogICAgdm9p
ZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU1ZhbHVlIHRvKTsNCiAgICB2b2lk
IHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8pOw0KICAgIA0KICAg
IHZvaWQgd3JpdGVCYXJyaWVyV2l0aG91dEZlbmNlKGNvbnN0IEpTQ2VsbCogZnJvbSk7DQogICAg
DQogICAgdm9pZCBtdXRhdG9yRmVuY2UoKTsNCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgdm9pZCB3cml0ZUJhcnJpZXJTbG93UGF0aChjb25zdCBKU0NlbGwqIGZyb20pOw0K
DQogICAgSGVhcChWTSYsIEhlYXBUeXBlKTsNCiAgICB+SGVhcCgpOw0KICAgIHZvaWQgbGFzdENo
YW5jZVRvRmluYWxpemUoKTsNCiAgICB2b2lkIHJlbGVhc2VEZWxheWVkUmVsZWFzZWRPYmplY3Rz
KCk7DQoNCiAgICBWTSYgdm0oKSBjb25zdDsNCg0KICAgIE1hcmtlZFNwYWNlJiBvYmplY3RTcGFj
ZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0NCiAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGlu
ZVRocmVhZHMoKSB7IHJldHVybiAqbV9tYWNoaW5lVGhyZWFkczsgfQ0KDQogICAgU2xvdFZpc2l0
b3ImIGNvbGxlY3RvclNsb3RWaXNpdG9yKCkgeyByZXR1cm4gKm1fY29sbGVjdG9yU2xvdFZpc2l0
b3I7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGZ1
bGxBY3Rpdml0eUNhbGxiYWNrKCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEdDQWN0aXZp
dHlDYWxsYmFjayogZWRlbkFjdGl2aXR5Q2FsbGJhY2soKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgdm9pZCBzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChib29sKTsNCg0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJbmNyZW1lbnRhbFN3ZWVwZXImIHN3ZWVwZXIoKTsNCg0K
ICAgIHZvaWQgYWRkT2JzZXJ2ZXIoSGVhcE9ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVy
cy5hcHBlbmQob2JzZXJ2ZXIpOyB9DQogICAgdm9pZCByZW1vdmVPYnNlcnZlcihIZWFwT2JzZXJ2
ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJlbW92ZUZpcnN0KG9ic2VydmVyKTsgfQ0KDQog
ICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRvclN0
YXRlOyB9DQogICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBj
b25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQ0KICAgIGJvb2wgaGFzSGVhcEFjY2Vz
cygpIGNvbnN0Ow0KICAgIGJvb2wgd29ybGRJc1N0b3BwZWQoKSBjb25zdDsNCiAgICBib29sIHdv
cmxkSXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gIXdvcmxkSXNTdG9wcGVkKCk7IH0NCg0KICAg
IA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIGlzQ3VycmVudFRocmVhZEJ1
c3koKTsNCiAgICANCiAgICB0eXBlZGVmIHZvaWQgKCpDRmluYWxpemVyKShKU0NlbGwqKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBhZGRGaW5hbGl6ZXIoSlNDZWxsKiwgQ0ZpbmFs
aXplcik7DQogICAgdXNpbmcgTGFtYmRhRmluYWxpemVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKEpT
Q2VsbCopPjsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBhZGRGaW5hbGl6ZXIoSlND
ZWxsKiwgTGFtYmRhRmluYWxpemVyKTsNCg0KICAgIHZvaWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0
KCk7DQogICAgYm9vbCBpc1NhZmVUb0NvbGxlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzU2FmZVRv
Q29sbGVjdDsgfQ0KICAgIA0KICAgIGJvb2wgaXNTaHV0dGluZ0Rvd24oKSBjb25zdCB7IHJldHVy
biBtX2lzU2h1dHRpbmdEb3duOyB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBp
c0FuYWx5emluZ0hlYXAoKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lk
IHN3ZWVwU3luY2hyb25vdXNseSgpOw0KDQogICAgYm9vbCBzaG91bGRDb2xsZWN0SGV1cmlzdGlj
KCk7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIHZvaWQgY29sbGVjdEFzeW5jKEdDUmVxdWVzdCA9IEdDUmVxdWVzdCgpKTsNCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgdm9pZCBjb2xsZWN0U3luYyhHQ1JlcXVlc3QgPSBHQ1JlcXVlc3QoKSk7DQogICAgDQogICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgY29sbGVjdChTeW5jaHJvbm91c25lc3MsIEdDUmVx
dWVzdCA9IEdDUmVxdWVzdCgpKTsNCiAgICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgdm9pZCBjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcywgR0NSZXF1ZXN0ID0gR0NS
ZXF1ZXN0KCkpOw0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGNvbGxlY3RO
b3dGdWxsSWZOb3REb25lUmVjZW50bHkoU3luY2hyb25vdXNuZXNzKTsNCiAgICANCiAgICB2b2lk
IGNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoR0NEZWZlcnJhbENvbnRleHQqID0gbnVsbHB0cik7
DQoNCiAgICB2b2lkIGNvbXBsZXRlQWxsSklUUGxhbnMoKTsNCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemVfdCk7DQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHNpemVfdCk7
DQoNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHJlcG9ydEV4dGVybmFs
TWVtb3J5VmlzaXRlZChzaXplX3QpOw0KICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeVNpemUoKSB7
IHJldHVybiBtX2V4dGVybmFsTWVtb3J5U2l6ZTsgfQ0KI2xpbmUgMjMwICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCg0KICAg
IA0KICAgIHZvaWQgZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KHNpemVfdCk7DQoNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCByZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCgpOw0K
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IA0KICAgIA0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzaXplX3QgZXh0cmFNZW1vcnlTaXplKCk7IA0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBzaXplX3Qgc2l6ZSgpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBzaXplX3QgY2FwYWNpdHkoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc2l6ZV90
IG9iamVjdENvdW50KCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHNpemVfdCBnbG9iYWxP
YmplY3RDb3VudCgpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzaXplX3QgcHJvdGVjdGVk
T2JqZWN0Q291bnQoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc2l6ZV90IHByb3RlY3Rl
ZEdsb2JhbE9iamVjdENvdW50KCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gb2JqZWN0
VHlwZUNvdW50cygpOw0KDQogICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJr
TGlzdFNldCgpOw0KICAgIHZvaWQgYWRkTWFya2VkSlNWYWx1ZVJlZkFycmF5KE1hcmtlZEpTVmFs
dWVSZWZBcnJheSopOw0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
Zm9yRWFjaFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYpOw0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5jdG9yJik7DQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQ29kZUJsb2NrSWdub3JpbmdK
SVRQbGFucyhjb25zdCBBYnN0cmFjdExvY2tlciYgY29kZUJsb2NrU2V0TG9ja2VyLCBjb25zdCBG
dW5jdG9yJik7DQoNCiAgICBIYW5kbGVTZXQqIGhhbmRsZVNldCgpIHsgcmV0dXJuICZtX2hhbmRs
ZVNldDsgfQ0KDQogICAgdm9pZCB3aWxsU3RhcnRJdGVyYXRpbmcoKTsNCiAgICB2b2lkIGRpZEZp
bmlzaEl0ZXJhdGluZygpOw0KDQogICAgU2Vjb25kcyBsYXN0RnVsbEdDTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0RnVsbEdDTGVuZ3RoOyB9DQogICAgU2Vjb25kcyBsYXN0RWRlbkdDTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWRlbkdDTGVuZ3RoOyB9DQogICAgdm9pZCBpbmNy
ZWFzZUxhc3RGdWxsR0NMZW5ndGgoU2Vjb25kcyBhbW91bnQpIHsgbV9sYXN0RnVsbEdDTGVuZ3Ro
ICs9IGFtb3VudDsgfQ0KDQogICAgc2l6ZV90IHNpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3Q7IH0NCiAgICBzaXpl
X3Qgc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0
ZXJMYXN0RWRlbkNvbGxlY3Q7IH0NCiAgICBzaXplX3Qgc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdDsgfQ0KICAg
IHNpemVfdCBzaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Np
emVBZnRlckxhc3RGdWxsQ29sbGVjdDsgfQ0KDQogICAgdm9pZCBkZWxldGVBbGxDb2RlQmxvY2tz
KERlbGV0ZUFsbENvZGVFZmZvcnQpOw0KICAgIHZvaWQgZGVsZXRlQWxsVW5saW5rZWRDb2RlQmxv
Y2tzKERlbGV0ZUFsbENvZGVFZmZvcnQpOw0KDQogICAgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3Qp
Ow0KICAgIGJvb2wgaXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKTsNCiAgICANCiAg
ICBjb25zdCBKSVRTdHViUm91dGluZVNldCYgaml0U3R1YlJvdXRpbmVzKCkgeyByZXR1cm4gKm1f
aml0U3R1YlJvdXRpbmVzOyB9DQogICAgDQogICAgdm9pZCBhZGRSZWZlcmVuY2UoSlNDZWxsKiwg
QXJyYXlCdWZmZXIqKTsNCiAgICANCiAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdCB7IHJldHVy
biAhIW1fZGVmZXJyYWxEZXB0aDsgfQ0KDQogICAgU3RydWN0dXJlSURUYWJsZSYgc3RydWN0dXJl
SURUYWJsZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlSURUYWJsZTsgfQ0KDQogICAgQ29kZUJsb2Nr
U2V0JiBjb2RlQmxvY2tTZXQoKSB7IHJldHVybiAqbV9jb2RlQmxvY2tzOyB9DQoNCg0KDQojbGlu
ZSAyODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcSGVhcC5oIg0KDQoNCg0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVn
aXN0ZXJXZWFrR0NNYXAoV2Vha0dDTWFwQmFzZSogd2Vha0dDTWFwKTsNCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgdm9pZCB1bnJlZ2lzdGVyV2Vha0dDTWFwKFdlYWtHQ01hcEJhc2UqIHdlYWtH
Q01hcCk7DQoNCiAgICB2b2lkIGFkZExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKFdlYWtCbG9jayop
Ow0KDQoNCiAgICBzaXplX3QgYmxvY2tCeXRlc0FsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YmxvY2tCeXRlc0FsbG9jYXRlZDsgfQ0KI2xpbmUgMzAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCg0KICAgIHZvaWQgZGlk
QWxsb2NhdGVCbG9jayhzaXplX3QgY2FwYWNpdHkpOw0KICAgIHZvaWQgZGlkRnJlZUJsb2NrKHNp
emVfdCBjYXBhY2l0eSk7DQogICAgDQogICAgYm9vbCBtdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSBj
b25zdCB7IHJldHVybiBtX211dGF0b3JTaG91bGRCZUZlbmNlZDsgfQ0KICAgIGNvbnN0IGJvb2wq
IGFkZHJlc3NPZk11dGF0b3JTaG91bGRCZUZlbmNlZCgpIGNvbnN0IHsgcmV0dXJuICZtX211dGF0
b3JTaG91bGRCZUZlbmNlZDsgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGJhcnJpZXJUaHJlc2hvbGQo
KSBjb25zdCB7IHJldHVybiBtX2JhcnJpZXJUaHJlc2hvbGQ7IH0NCiAgICBjb25zdCB1bnNpZ25l
ZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuICZtX2JhcnJpZXJU
aHJlc2hvbGQ7IH0NCg0KDQoNCg0KDQoNCiNsaW5lIDMxNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFwLmgiDQogICAgRG9lc0dDQ2hl
Y2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBl
KCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDMxNywgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcC5o
IiwgIF9fRlVOQ1RJT05fXyAgLCAyNCApOyB9IHdoaWxlIChmYWxzZSk7IHJldHVybiBudWxscHRy
OyB9DQogICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sLCB1bnNpZ25lZCwgdW5zaWdu
ZWQpIHsgfQ0KICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCwgRG9lc0dDQ2hlY2s6
OlNwZWNpYWwpIHsgfQ0KICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7IH0NCiNsaW5lIDMyMiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFw
LmgiDQoNCiAgICANCiAgICANCiAgICANCiAgICBib29sIGhhc0FjY2VzcygpIGNvbnN0Ow0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZv
aWQgYWNxdWlyZUFjY2VzcygpOw0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIHZvaWQgcmVsZWFzZUFjY2VzcygpOw0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZvaWQgc3RvcElmTmVjZXNzYXJ5
KCk7DQogICAgDQogICAgDQogICAgdm9pZCByZWxpbnF1aXNoQ29ubigpOw0KICAgIA0KICAgIGJv
b2wgbWF5TmVlZFRvU3RvcCgpOw0KDQogICAgdm9pZCBwZXJmb3JtSW5jcmVtZW50KHNpemVfdCBi
eXRlcyk7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgdm9pZCBwcmV2ZW50Q29sbGVjdGlvbigpOw0KICAgIHZvaWQgYWxsb3dDb2xsZWN0aW9uKCk7
DQogICAgDQogICAgdWludDY0X3QgbXV0YXRvckV4ZWN1dGlvblZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX211dGF0b3JFeGVjdXRpb25WZXJzaW9uOyB9DQogICAgdWludDY0X3QgcGhhc2VWZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9waGFzZVZlcnNpb247IH0NCiAgICANCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgdm9pZCBhZGRNYXJraW5nQ29uc3RyYWludChzdGQ6OnVuaXF1ZV9wdHI8
TWFya2luZ0NvbnN0cmFpbnQ+KTsNCiAgICANCiAgICBzaXplX3QgbnVtT3BhcXVlUm9vdHMoKSBj
b25zdCB7IHJldHVybiBtX29wYXF1ZVJvb3RzLnNpemUoKTsgfQ0KDQogICAgSGVhcFZlcmlmaWVy
KiB2ZXJpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyaWZpZXIuZ2V0KCk7IH0NCiAgICANCiAg
ICB2b2lkIGFkZEhlYXBGaW5hbGl6ZXJDYWxsYmFjayhjb25zdCBIZWFwRmluYWxpemVyQ2FsbGJh
Y2smKTsNCiAgICB2b2lkIHJlbW92ZUhlYXBGaW5hbGl6ZXJDYWxsYmFjayhjb25zdCBIZWFwRmlu
YWxpemVyQ2FsbGJhY2smKTsNCiAgICANCiAgICB2b2lkIHJ1blRhc2tJblBhcmFsbGVsKFJlZlB0
cjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+KTsNCiAgICANCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPg0KICAgIHZvaWQgcnVuRnVuY3Rpb25JblBhcmFsbGVsKGNvbnN0IEZ1bmMm
IGZ1bmMpDQogICAgew0KICAgICAgICBydW5UYXNrSW5QYXJhbGxlbChjcmVhdGVTaGFyZWRUYXNr
PHZvaWQoU2xvdFZpc2l0b3ImKT4oZnVuYykpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+DQogICAgdm9pZCBmb3JFYWNoU2xvdFZpc2l0b3IoY29uc3QgRnVuYyYpOw0KICAg
IA0KICAgIFNlY29uZHMgdG90YWxHQ1RpbWUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsR0NUaW1l
OyB9DQoNCiAgICBIYXNoTWFwPEpTSW1tdXRhYmxlQnV0dGVyZmx5KiwgSlNTdHJpbmcqPiBpbW11
dGFibGVCdXR0ZXJmbHlUb1N0cmluZ0NhY2hlOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFz
cyBBbGxvY2F0aW5nU2NvcGU7DQogICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsNCiAgICBmcmll
bmQgY2xhc3MgQ29sbGVjdGluZ1Njb3BlOw0KICAgIGZyaWVuZCBjbGFzcyBEZWZlckdDOw0KICAg
IGZyaWVuZCBjbGFzcyBEZWZlckdDRm9yQVdoaWxlOw0KICAgIGZyaWVuZCBjbGFzcyBHQ0F3YXJl
SklUU3R1YlJvdXRpbmU7DQogICAgZnJpZW5kIGNsYXNzIEdDTG9nZ2luZzsNCiAgICBmcmllbmQg
Y2xhc3MgR0NUaHJlYWQ7DQogICAgZnJpZW5kIGNsYXNzIEhhbmRsZVNldDsNCiAgICBmcmllbmQg
Y2xhc3MgSGVhcFV0aWw7DQogICAgZnJpZW5kIGNsYXNzIEhlYXBWZXJpZmllcjsNCiAgICBmcmll
bmQgY2xhc3MgSklUU3R1YlJvdXRpbmU7DQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsNCiAgICBmcmllbmQgY2xhc3MgTWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ7DQog
ICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOw0KICAgIGZyaWVuZCBjbGFzcyBCbG9ja0RpcmVj
dG9yeTsNCiAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7DQogICAgZnJpZW5kIGNsYXNzIFJ1
bm5pbmdTY29wZTsNCiAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7DQogICAgZnJpZW5kIGNs
YXNzIFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI7DQogICAgZnJpZW5kIGNsYXNzIFN0b2NoYXN0
aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyOw0KICAgIGZyaWVuZCBjbGFzcyBTd2VlcGluZ1Nj
b3BlOw0KICAgIGZyaWVuZCBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7DQogICAgZnJpZW5kIGNs
YXNzIFZNOw0KICAgIGZyaWVuZCBjbGFzcyBXZWFrU2V0Ow0KDQogICAgY2xhc3MgSGVhcFRocmVh
ZDsNCiAgICBmcmllbmQgY2xhc3MgSGVhcFRocmVhZDsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IG1pbkV4dHJhTWVtb3J5ID0gMjU2Ow0KICAgIA0KICAgIGNsYXNzIENGaW5hbGl6ZXJP
d25lciBmaW5hbCA6IHB1YmxpYyBXZWFrSGFuZGxlT3duZXIgew0KICAgICAgICB2b2lkIGZpbmFs
aXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7DQogICAgfTsNCg0KICAg
IGNsYXNzIExhbWJkYUZpbmFsaXplck93bmVyIGZpbmFsIDogcHVibGljIFdlYWtIYW5kbGVPd25l
ciB7DQogICAgICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0
KSBmaW5hbDsNCiAgICB9Ow0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgaXNWYWxp
ZEFsbG9jYXRpb24oc2l6ZV90KTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCByZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNpemVfdCk7DQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIHZvaWQgZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2xvd0Nhc2Uoc2l6ZV90
KTsNCiAgICANCiAgICBib29sIHNob3VsZENvbGxlY3RJbkNvbGxlY3RvclRocmVhZChjb25zdCBB
YnN0cmFjdExvY2tlciYpOw0KICAgIHZvaWQgY29sbGVjdEluQ29sbGVjdG9yVGhyZWFkKCk7DQog
ICAgDQogICAgdm9pZCBjaGVja0Nvbm4oR0NDb25kdWN0b3IpOw0KDQogICAgZW51bSBjbGFzcyBS
dW5DdXJyZW50UGhhc2VSZXN1bHQgew0KICAgICAgICBGaW5pc2hlZCwNCiAgICAgICAgQ29udGlu
dWUsDQogICAgICAgIE5lZWRDdXJyZW50VGhyZWFkU3RhdGUNCiAgICB9Ow0KICAgIFJ1bkN1cnJl
bnRQaGFzZVJlc3VsdCBydW5DdXJyZW50UGhhc2UoR0NDb25kdWN0b3IsIEN1cnJlbnRUaHJlYWRT
dGF0ZSopOw0KICAgIA0KICAgIA0KICAgIGJvb2wgcnVuTm90UnVubmluZ1BoYXNlKEdDQ29uZHVj
dG9yKTsNCiAgICBib29sIHJ1bkJlZ2luUGhhc2UoR0NDb25kdWN0b3IpOw0KICAgIGJvb2wgcnVu
Rml4cG9pbnRQaGFzZShHQ0NvbmR1Y3Rvcik7DQogICAgYm9vbCBydW5Db25jdXJyZW50UGhhc2Uo
R0NDb25kdWN0b3IpOw0KICAgIGJvb2wgcnVuUmVsb29wUGhhc2UoR0NDb25kdWN0b3IpOw0KICAg
IGJvb2wgcnVuRW5kUGhhc2UoR0NDb25kdWN0b3IpOw0KICAgIGJvb2wgY2hhbmdlUGhhc2UoR0ND
b25kdWN0b3IsIENvbGxlY3RvclBoYXNlKTsNCiAgICBib29sIGZpbmlzaENoYW5naW5nUGhhc2Uo
R0NDb25kdWN0b3IpOw0KICAgIA0KICAgIHZvaWQgY29sbGVjdEluTXV0YXRvclRocmVhZCgpOw0K
ICAgIA0KICAgIHZvaWQgc3RvcFRoZVBlcmlwaGVyeShHQ0NvbmR1Y3Rvcik7DQogICAgdm9pZCBy
ZXN1bWVUaGVQZXJpcGhlcnkoKTsNCiAgICANCiAgICANCiAgICBib29sIHN0b3BUaGVNdXRhdG9y
KCk7DQogICAgdm9pZCByZXN1bWVUaGVNdXRhdG9yKCk7DQogICAgDQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIHZvaWQgc3RvcElmTmVjZXNzYXJ5U2xvdygpOw0KICAgIGJvb2wgc3RvcElmTmVj
ZXNzYXJ5U2xvdyh1bnNpZ25lZCBleHRyYVN0YXRlQml0cyk7DQogICAgDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4NCiAgICB2b2lkIHdhaXRGb3JDb2xsZWN0b3IoY29uc3QgRnVuYyYpOw0K
ICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGFjcXVpcmVBY2Nlc3NTbG93KCk7
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVsZWFzZUFjY2Vzc1Nsb3coKTsNCiAg
ICANCiAgICBib29sIGhhbmRsZUdDRGlkSklUKHVuc2lnbmVkKTsNCiAgICB2b2lkIGhhbmRsZUdD
RGlkSklUKCk7DQogICAgDQogICAgYm9vbCBoYW5kbGVOZWVkRmluYWxpemUodW5zaWduZWQpOw0K
ICAgIHZvaWQgaGFuZGxlTmVlZEZpbmFsaXplKCk7DQogICAgDQogICAgYm9vbCByZWxpbnF1aXNo
Q29ubih1bnNpZ25lZCk7DQogICAgdm9pZCBmaW5pc2hSZWxpbnF1aXNoaW5nQ29ubigpOw0KICAg
IA0KICAgIHZvaWQgc2V0R0NEaWRKSVQoKTsNCiAgICB2b2lkIHNldE5lZWRGaW5hbGl6ZSgpOw0K
ICAgIHZvaWQgd2FpdFdoaWxlTmVlZEZpbmFsaXplKCk7DQogICAgDQogICAgdm9pZCBzZXRNdXRh
dG9yV2FpdGluZygpOw0KICAgIHZvaWQgY2xlYXJNdXRhdG9yV2FpdGluZygpOw0KICAgIHZvaWQg
bm90aWZ5VGhyZWFkU3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsNCiAgICANCiAgICB0
eXBlZGVmIHVpbnQ2NF90IFRpY2tldDsNCiAgICBUaWNrZXQgcmVxdWVzdENvbGxlY3Rpb24oR0NS
ZXF1ZXN0KTsNCiAgICB2b2lkIHdhaXRGb3JDb2xsZWN0aW9uKFRpY2tldCk7DQogICAgDQogICAg
dm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7DQogICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0
aW9uKCk7DQogICAgdm9pZCBwcmVwYXJlRm9yTWFya2luZygpOw0KICAgIA0KICAgIHZvaWQgZ2F0
aGVyU3RhY2tSb290cyhDb25zZXJ2YXRpdmVSb290cyYpOw0KICAgIHZvaWQgZ2F0aGVySlNTdGFj
a1Jvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7DQogICAgdm9pZCBnYXRoZXJTY3JhdGNoQnVmZmVy
Um9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsNCiAgICB2b2lkIGJlZ2luTWFya2luZygpOw0KICAg
IHZvaWQgdmlzaXRDb21waWxlcldvcmtsaXN0V2Vha1JlZmVyZW5jZXMoKTsNCiAgICB2b2lkIHJl
bW92ZURlYWRDb21waWxlcldvcmtsaXN0RW50cmllcygpOw0KICAgIHZvaWQgdXBkYXRlT2JqZWN0
Q291bnRzKCk7DQogICAgdm9pZCBlbmRNYXJraW5nKCk7DQoNCiAgICB2b2lkIHJlYXBXZWFrSGFu
ZGxlcygpOw0KICAgIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpOw0KICAg
IHZvaWQgc3dlZXBBcnJheUJ1ZmZlcnMoKTsNCiAgICB2b2lkIHNuYXBzaG90VW5zd2VwdCgpOw0K
ICAgIHZvaWQgZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKTsNCiAgICB2b2lkIG5vdGlmeUlu
Y3JlbWVudGFsU3dlZXBlcigpOw0KICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7DQoN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgdHlwZW5hbWUgQ2VsbFNldD4NCiAgICB2
b2lkIGZpbmFsaXplTWFya2VkVW5jb25kaXRpb25hbEZpbmFsaXplcnMoQ2VsbFNldCYpOw0KDQog
ICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7DQoNCiAgICB2b2lkIGRl
bGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZv
aWQgYWRkVG9SZW1lbWJlcmVkU2V0KGNvbnN0IEpTQ2VsbCopOw0KICAgIHZvaWQgdXBkYXRlQWxs
b2NhdGlvbkxpbWl0cygpOw0KICAgIHZvaWQgZGlkRmluaXNoQ29sbGVjdGlvbigpOw0KICAgIHZv
aWQgcmVzdW1lQ29tcGlsZXJUaHJlYWRzKCk7DQogICAgdm9pZCBnYXRoZXJFeHRyYUhlYXBEYXRh
KEhlYXBQcm9maWxlciYpOw0KICAgIHZvaWQgcmVtb3ZlRGVhZEhlYXBTbmFwc2hvdE5vZGVzKEhl
YXBQcm9maWxlciYpOw0KICAgIHZvaWQgZmluYWxpemUoKTsNCiAgICB2b2lkIHN3ZWVwSW5GaW5h
bGl6ZSgpOw0KICAgIA0KICAgIHZvaWQgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3Mo
KTsNCiAgICBib29sIHN3ZWVwTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKCk7DQoNCiAgICBi
b29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oKTsNCg0KICAgIHZvaWQgaW5jcmVtZW50RGVmZXJy
YWxEZXB0aCgpOw0KICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aCgpOw0KICAgIHZvaWQg
ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKTsNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZFNsb3coKTsN
Cg0KICAgIHNpemVfdCB2aXNpdENvdW50KCk7DQogICAgc2l6ZV90IGJ5dGVzVmlzaXRlZCgpOw0K
ICAgIA0KICAgIHZvaWQgZm9yRWFjaENvZGVCbG9ja0ltcGwoY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoQ29kZUJsb2NrKik+Jik7DQogICAgdm9pZCBmb3JFYWNoQ29kZUJsb2NrSWdub3JpbmdKSVRQ
bGFuc0ltcGwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGNvZGVCbG9ja1NldExvY2tlciwgY29uc3Qg
U2NvcGVkTGFtYmRhPHZvaWQoQ29kZUJsb2NrKik+Jik7DQogICAgDQogICAgdm9pZCBzZXRNdXRh
dG9yU2hvdWxkQmVGZW5jZWQoYm9vbCB2YWx1ZSk7DQogICAgDQogICAgdm9pZCBhZGRDb3JlQ29u
c3RyYWludHMoKTsNCg0KICAgIGVudW0gY2xhc3MgTWVtb3J5VGhyZXNob2xkQ2FsbFR5cGUgew0K
ICAgICAgICBDYWNoZWQsDQogICAgICAgIERpcmVjdA0KICAgIH07DQoNCiAgICBib29sIG92ZXJD
cml0aWNhbE1lbW9yeVRocmVzaG9sZChNZW1vcnlUaHJlc2hvbGRDYWxsVHlwZSBtZW1vcnlUaHJl
c2hvbGRDYWxsVHlwZSA9IE1lbW9yeVRocmVzaG9sZENhbGxUeXBlOjpDYWNoZWQpOw0KICAgIA0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQogICAgdm9pZCBpdGVyYXRlRXhlY3V0aW5nQW5k
Q29tcGlsaW5nQ29kZUJsb2Nrcyhjb25zdCBGdW5jJik7DQogICAgDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4NCiAgICB2b2lkIGl0ZXJhdGVFeGVjdXRpbmdBbmRDb21waWxpbmdDb2RlQmxv
Y2tzV2l0aG91dEhvbGRpbmdMb2Nrcyhjb25zdCBGdW5jJik7DQogICAgDQogICAgdm9pZCBhc3Nl
cnRNYXJrU3RhY2tzRW1wdHkoKTsNCg0KICAgIHZvaWQgc2V0Qm9udXNWaXNpdG9yVGFzayhSZWZQ
dHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+Pik7DQoNCiAgICB2b2lkIGR1bXBIZWFw
U3RhdGlzdGljc0F0Vk1EZXN0cnVjdGlvbigpOw0KDQogICAgc3RhdGljIGJvb2wgdXNlR2VuZXJh
dGlvbmFsR0MoKTsNCiAgICBzdGF0aWMgYm9vbCBzaG91bGRTd2VlcFN5bmNocm9ub3VzbHkoKTsN
CiAgICANCiAgICBjb25zdCBIZWFwVHlwZSBtX2hlYXBUeXBlOw0KICAgIE11dGF0b3JTdGF0ZSBt
X211dGF0b3JTdGF0ZSB7IE11dGF0b3JTdGF0ZTo6UnVubmluZyB9Ow0KICAgIGNvbnN0IHNpemVf
dCBtX3JhbVNpemU7DQogICAgY29uc3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJDeWNsZTsNCiAgICBz
aXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCB7IDAgfTsNCiAgICBzaXplX3QgbV9zaXplQWZ0
ZXJMYXN0RnVsbENvbGxlY3QgeyAwIH07DQogICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RGdWxs
Q29sbGVjdCB7IDAgfTsNCiAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3QgeyAw
IH07DQogICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdCB7IDAgfTsNCg0KICAg
IHNpemVfdCBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlIHsgMCB9Ow0KICAgIHNpemVfdCBtX2J5
dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3QgeyAwIH07DQogICAgc2l6ZV90IG1fbWF4
RWRlblNpemU7DQogICAgc2l6ZV90IG1fbWF4RWRlblNpemVXaGVuQ3JpdGljYWw7DQogICAgc2l6
ZV90IG1fbWF4SGVhcFNpemU7DQogICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWQgeyAwIH07
DQogICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGUgeyAwIH07DQogICAgZG91
YmxlIG1faW5jcmVtZW50QmFsYW5jZSB7IDAgfTsNCiAgICANCiAgICBib29sIG1fc2hvdWxkRG9G
dWxsQ29sbGVjdGlvbiB7IGZhbHNlIH07DQogICAgTWFya2FibGU8Q29sbGVjdGlvblNjb3BlLCBF
bnVtTWFya2FibGVUcmFpdHM8Q29sbGVjdGlvblNjb3BlPj4gbV9jb2xsZWN0aW9uU2NvcGU7DQog
ICAgTWFya2FibGU8Q29sbGVjdGlvblNjb3BlLCBFbnVtTWFya2FibGVUcmFpdHM8Q29sbGVjdGlv
blNjb3BlPj4gbV9sYXN0Q29sbGVjdGlvblNjb3BlOw0KICAgIExvY2sgbV9yYWNlTWFya1N0YWNr
TG9jazsNCg0KDQojbGluZSA2MTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcC5oIg0KDQogICAgU3RydWN0dXJlSURUYWJsZSBtX3N0
cnVjdHVyZUlEVGFibGU7DQogICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsNCiAgICBHQ0lu
Y29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1ZmZlcnM7DQogICAgc2l6
ZV90IG1fZXh0cmFNZW1vcnlTaXplIHsgMCB9Ow0KICAgIHNpemVfdCBtX2RlcHJlY2F0ZWRFeHRy
YU1lbW9yeVNpemUgeyAwIH07DQoNCiAgICBIYXNoU2V0PGNvbnN0IEpTQ2VsbCo+IG1fY29weWlu
Z1JlbWVtYmVyZWRTZXQ7DQoNCiAgICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7
DQogICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4gbV9t
YXJrTGlzdFNldDsNCiAgICBTZW50aW5lbExpbmtlZExpc3Q8TWFya2VkSlNWYWx1ZVJlZkFycmF5
LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxNYXJrZWRKU1ZhbHVlUmVmQXJyYXk+PiBtX21hcmtlZEpT
VmFsdWVSZWZBcnJheXM7DQoNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFjaGluZVRocmVhZHM+IG1f
bWFjaGluZVRocmVhZHM7DQogICAgDQogICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiBt
X2NvbGxlY3RvclNsb3RWaXNpdG9yOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4g
bV9tdXRhdG9yU2xvdFZpc2l0b3I7DQogICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtTdGFja0FycmF5
PiBtX211dGF0b3JNYXJrU3RhY2s7DQogICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtTdGFja0FycmF5
PiBtX3JhY2VNYXJrU3RhY2s7DQogICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtpbmdDb25zdHJhaW50
U2V0PiBtX2NvbnN0cmFpbnRTZXQ7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPj4gbV9wYXJhbGxlbFNsb3RWaXNpdG9yczsN
CiAgICBWZWN0b3I8U2xvdFZpc2l0b3IqPiBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3Jz
Ow0KICAgIA0KICAgIEhhbmRsZVNldCBtX2hhbmRsZVNldDsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q29kZUJsb2NrU2V0PiBtX2NvZGVCbG9ja3M7DQogICAgc3RkOjp1bmlxdWVfcHRyPEpJVFN0dWJS
b3V0aW5lU2V0PiBtX2ppdFN0dWJSb3V0aW5lczsNCiAgICBDRmluYWxpemVyT3duZXIgbV9jRmlu
YWxpemVyT3duZXI7DQogICAgTGFtYmRhRmluYWxpemVyT3duZXIgbV9sYW1iZGFGaW5hbGl6ZXJP
d25lcjsNCiAgICANCiAgICBMb2NrIG1fcGFyYWxsZWxTbG90VmlzaXRvckxvY2s7DQogICAgYm9v
bCBtX2lzU2FmZVRvQ29sbGVjdCB7IGZhbHNlIH07DQogICAgYm9vbCBtX2lzU2h1dHRpbmdEb3du
IHsgZmFsc2UgfTsNCiAgICBib29sIG1fbXV0YXRvclNob3VsZEJlRmVuY2VkIHsgT3B0aW9uczo6
Zm9yY2VGZW5jZWRCYXJyaWVyKCkgfTsNCg0KICAgIHVuc2lnbmVkIG1fYmFycmllclRocmVzaG9s
ZCB7IE9wdGlvbnM6OmZvcmNlRmVuY2VkQmFycmllcigpID8gdGF1dG9sb2dpY2FsVGhyZXNob2xk
IDogYmxhY2tUaHJlc2hvbGQgfTsNCg0KICAgIFZNJiBtX3ZtOw0KICAgIFNlY29uZHMgbV9sYXN0
RnVsbEdDTGVuZ3RoIHsgMTBfbXMgfTsNCiAgICBTZWNvbmRzIG1fbGFzdEVkZW5HQ0xlbmd0aCB7
IDEwX21zIH07DQoNCiAgICBWZWN0b3I8V2Vha0Jsb2NrKj4gbV9sb2dpY2FsbHlFbXB0eVdlYWtC
bG9ja3M7DQogICAgc2l6ZV90IG1faW5kZXhPZk5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja1Rv
U3dlZXAgeyBXVEY6Om5vdEZvdW5kIH07DQogICAgDQogICAgUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7DQogICAgUmVmUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsNCiAgICBSZWY8SW5jcmVtZW50YWxTd2Vl
cGVyPiBtX3N3ZWVwZXI7DQogICAgUmVmPFN0b3BJZk5lY2Vzc2FyeVRpbWVyPiBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyOw0KDQogICAgVmVjdG9yPEhlYXBPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOw0K
ICAgIA0KICAgIFZlY3RvcjxIZWFwRmluYWxpemVyQ2FsbGJhY2s+IG1faGVhcEZpbmFsaXplckNh
bGxiYWNrczsNCiAgICANCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcFZlcmlmaWVyPiBtX3Zlcmlm
aWVyOw0KDQoNCg0KDQojbGluZSA2ODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcC5oIg0KDQoNCg0KDQogICAgdW5zaWduZWQgbV9k
ZWZlcnJhbERlcHRoIHsgMCB9Ow0KDQogICAgSGFzaFNldDxXZWFrR0NNYXBCYXNlKj4gbV93ZWFr
R0NNYXBzOw0KICAgIA0KICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXJrU3RhY2tBcnJheT4gbV9zaGFy
ZWRDb2xsZWN0b3JNYXJrU3RhY2s7DQogICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtTdGFja0FycmF5
PiBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2s7DQogICAgdW5zaWduZWQgbV9udW1iZXJPZkFjdGl2
ZVBhcmFsbGVsTWFya2VycyB7IDAgfTsNCiAgICB1bnNpZ25lZCBtX251bWJlck9mV2FpdGluZ1Bh
cmFsbGVsTWFya2VycyB7IDAgfTsNCg0KICAgIENvbmN1cnJlbnRQdHJIYXNoU2V0IG1fb3BhcXVl
Um9vdHM7DQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc19ibG9ja0ZyYWdtZW50TGVuZ3Ro
ID0gMzI7DQoNCiAgICBQYXJhbGxlbEhlbHBlckNsaWVudCBtX2hlbHBlckNsaWVudDsNCiAgICBS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBtX2JvbnVzVmlzaXRvclRhc2s7
DQoNCg0KICAgIHNpemVfdCBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgeyAwIH07DQogICAgc2l6ZV90
IG1fZXh0ZXJuYWxNZW1vcnlTaXplIHsgMCB9Ow0KI2xpbmUgNzA1ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXAuaCINCiAgICANCiAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRvclNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7DQogICAgDQog
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtdXRhdG9ySGFzQ29ubkJpdCA9IDF1IDw8IDB1
OyANCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHN0b3BwZWRCaXQgPSAxdSA8PCAxdTsg
DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBoYXNBY2Nlc3NCaXQgPSAxdSA8PCAydTsN
CiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGdjRGlkSklUQml0ID0gMXUgPDwgM3U7IA0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbmVlZEZpbmFsaXplQml0ID0gMXUgPDwgNHU7
DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtdXRhdG9yV2FpdGluZ0JpdCA9IDF1IDw8
IDV1OyANCiAgICBBdG9taWM8dW5zaWduZWQ+IG1fd29ybGRTdGF0ZTsNCiAgICBib29sIG1fd29y
bGRJc1N0b3BwZWQgeyBmYWxzZSB9Ow0KICAgIExvY2sgbV92aXNpdFJhY2VMb2NrOw0KICAgIExv
Y2sgbV9tYXJraW5nTXV0ZXg7DQogICAgQ29uZGl0aW9uIG1fbWFya2luZ0NvbmRpdGlvblZhcmlh
YmxlOw0KDQogICAgTW9ub3RvbmljVGltZSBtX2JlZm9yZUdDOw0KICAgIE1vbm90b25pY1RpbWUg
bV9hZnRlckdDOw0KICAgIE1vbm90b25pY1RpbWUgbV9zdG9wVGltZTsNCiAgICANCiAgICBEZXF1
ZTxHQ1JlcXVlc3Q+IG1fcmVxdWVzdHM7DQogICAgR0NSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7
DQogICAgVGlja2V0IG1fbGFzdFNlcnZlZFRpY2tldCB7IDAgfTsNCiAgICBUaWNrZXQgbV9sYXN0
R3JhbnRlZFRpY2tldCB7IDAgfTsNCg0KICAgIENvbGxlY3RvclBoYXNlIG1fbGFzdFBoYXNlIHsg
Q29sbGVjdG9yUGhhc2U6Ok5vdFJ1bm5pbmcgfTsNCiAgICBDb2xsZWN0b3JQaGFzZSBtX2N1cnJl
bnRQaGFzZSB7IENvbGxlY3RvclBoYXNlOjpOb3RSdW5uaW5nIH07DQogICAgQ29sbGVjdG9yUGhh
c2UgbV9uZXh0UGhhc2UgeyBDb2xsZWN0b3JQaGFzZTo6Tm90UnVubmluZyB9Ow0KICAgIGJvb2wg
bV9jb2xsZWN0b3JUaHJlYWRJc1J1bm5pbmcgeyBmYWxzZSB9Ow0KICAgIGJvb2wgbV90aHJlYWRT
aG91bGRTdG9wIHsgZmFsc2UgfTsNCiAgICBib29sIG1fdGhyZWFkSXNTdG9wcGluZyB7IGZhbHNl
IH07DQogICAgYm9vbCBtX211dGF0b3JEaWRSdW4geyB0cnVlIH07DQogICAgYm9vbCBtX2RpZERl
ZmVyR0NXb3JrIHsgZmFsc2UgfTsNCiAgICBib29sIG1fc2hvdWxkU3RvcENvbGxlY3RpbmdDb250
aW51b3VzbHkgeyBmYWxzZSB9Ow0KDQogICAgdWludDY0X3QgbV9tdXRhdG9yRXhlY3V0aW9uVmVy
c2lvbiB7IDAgfTsNCiAgICB1aW50NjRfdCBtX3BoYXNlVmVyc2lvbiB7IDAgfTsNCiAgICBCb3g8
TG9jaz4gbV90aHJlYWRMb2NrOw0KICAgIFJlZjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1f
dGhyZWFkQ29uZGl0aW9uOyANCiAgICBSZWZQdHI8QXV0b21hdGljVGhyZWFkPiBtX3RocmVhZDsN
Cg0KICAgIFJlZlB0cjxUaHJlYWQ+IG1fY29sbGVjdENvbnRpbnVvdXNseVRocmVhZCB7IG51bGxw
dHIgfTsNCiAgICANCiAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEdDU3RhcnRUaW1lOw0KICAgIE1v
bm90b25pY1RpbWUgbV9sYXN0R0NFbmRUaW1lOw0KICAgIE1vbm90b25pY1RpbWUgbV9jdXJyZW50
R0NTdGFydFRpbWU7DQogICAgU2Vjb25kcyBtX3RvdGFsR0NUaW1lOw0KICAgIA0KICAgIHVpbnRw
dHJfdCBtX2JhcnJpZXJzRXhlY3V0ZWQgeyAwIH07DQogICAgDQogICAgQ3VycmVudFRocmVhZFN0
YXRlKiBtX2N1cnJlbnRUaHJlYWRTdGF0ZSB7IG51bGxwdHIgfTsNCiAgICBUaHJlYWQqIG1fY3Vy
cmVudFRocmVhZCB7IG51bGxwdHIgfTsgDQoNCg0KDQoNCiNsaW5lIDc2MSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFwLmgiDQoNCiAg
ICBib29sIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCB7IGZhbHNlIH07DQogICAgTG9jayBt
X2NvbGxlY3RDb250aW51b3VzbHlMb2NrOw0KICAgIENvbmRpdGlvbiBtX2NvbGxlY3RDb250aW51
b3VzbHlDb25kaXRpb247DQp9Ow0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcRGVmZXJHQy5oIg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9UaHJlYWRTcGVjaWZpYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCmVudW0gY2xhc3MgQ2FuQmVHQ1RocmVh
ZCB7DQogICAgRmFsc2UsDQogICAgVHJ1ZQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgQ2Fu
QmVHQ1RocmVhZCBjYW5CZUdDVGhyZWFkID0gQ2FuQmVHQ1RocmVhZDo6RmFsc2U+IGNsYXNzIFRo
cmVhZFNwZWNpZmljIHsNCiAgICBUaHJlYWRTcGVjaWZpYyhjb25zdCBUaHJlYWRTcGVjaWZpYyYp
ID0gZGVsZXRlOyBUaHJlYWRTcGVjaWZpYyYgb3BlcmF0b3I9KGNvbnN0IFRocmVhZFNwZWNpZmlj
JikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9p
ZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHAp
IHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7
IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVb
XSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2Nh
dGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9f
dGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6
DQogICAgVGhyZWFkU3BlY2lmaWMoKTsNCiAgICBib29sIGlzU2V0KCk7IA0KICAgIFQqIG9wZXJh
dG9yLT4oKTsNCiAgICBvcGVyYXRvciBUKigpOw0KICAgIFQmIG9wZXJhdG9yKigpOw0KDQpwcml2
YXRlOg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIH5UaHJlYWRTcGVjaWZpYygpOw0KDQog
ICAgc3RydWN0IERhdGEgew0KICAgICAgICBEYXRhKGNvbnN0IERhdGEmKSA9IGRlbGV0ZTsgRGF0
YSYgb3BlcmF0b3I9KGNvbnN0IERhdGEmKSA9IGRlbGV0ZTs7DQogICAgICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgcHVibGljOg0KICAgICAgICB1c2luZyBQb2ludGVyVHlw
ZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlKjsNCg0KICAgICAgICBEYXRh
KFRocmVhZFNwZWNpZmljPFQsIGNhbkJlR0NUaHJlYWQ+KiBvd25lcikNCiAgICAgICAgICAgIDog
b3duZXIob3duZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICBvd25lci0+c2V0SW5UTFModGhpcyk7DQogICAgICAgICAgICBuZXcgKE5vdE51bGws
IHN0b3JhZ2VQb2ludGVyKCkpIFQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIH5EYXRhKCkNCiAg
ICAgICAgew0KICAgICAgICAgICAgc3RvcmFnZVBvaW50ZXIoKS0+flQoKTsNCiAgICAgICAgICAg
IG93bmVyLT5zZXRJblRMUyhudWxscHRyKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFBvaW50ZXJU
eXBlIHN0b3JhZ2VQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQb2ludGVyVHlw
ZT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oJm1fc3RvcmFnZSkpOyB9DQoNCiAgICAgICAg
dHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9v
ZjxUPjo6dmFsdWU+Ojp0eXBlIG1fc3RvcmFnZTsNCiAgICAgICAgVGhyZWFkU3BlY2lmaWM8VCwg
Y2FuQmVHQ1RocmVhZD4qIG93bmVyOw0KICAgIH07DQoNCiAgICBUKiBnZXQoKTsNCiAgICBUKiBz
ZXQoKTsNCiAgICB2b2lkIHNldEluVExTKERhdGEqKTsNCiAgICB2b2lkIHN0YXRpYyBkZXN0cm95
KHZvaWQqIHB0cik7DQoNCg0KDQojbGluZSAxMDggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZFNwZWNpZmljLmgiDQogICAgaW50
IG1fa2V5Ow0KI2xpbmUgMTEwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9UaHJlYWRTcGVjaWZpYy5oIg0KfTsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzggIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZFNw
ZWNpZmljLmgiDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIENhbkJlR0NUaHJlYWQgY2FuQmVHQ1Ro
cmVhZD4NCmlubGluZSBUaHJlYWRTcGVjaWZpYzxULCBjYW5CZUdDVGhyZWFkPjo6VGhyZWFkU3Bl
Y2lmaWMoKQ0KICAgIDogbV9rZXkoLTEpDQp7DQogICAgYm9vbCBvayA9IFRocmVhZDo6U3BlY2lm
aWNTdG9yYWdlOjphbGxvY2F0ZUtleShtX2tleSwgZGVzdHJveSk7DQogICAgaWYgKCFvaykNCiAg
ICAgICAgV1RGQ3Jhc2goKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgQ2FuQmVHQ1RocmVh
ZCBjYW5CZUdDVGhyZWFkPg0KaW5saW5lIFQqIFRocmVhZFNwZWNpZmljPFQsIGNhbkJlR0NUaHJl
YWQ+OjpnZXQoKQ0Kew0KICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PERhdGEqPihUaHJlYWQ6
OmN1cnJlbnQoKS5zcGVjaWZpY1N0b3JhZ2UoKS5nZXQobV9rZXkpKTsNCiAgICBpZiAoIWRhdGEp
DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIHJldHVybiBkYXRhLT5zdG9yYWdlUG9pbnRl
cigpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDYW5CZUdDVGhyZWFkIGNhbkJlR0NUaHJl
YWQ+DQppbmxpbmUgdm9pZCBUaHJlYWRTcGVjaWZpYzxULCBjYW5CZUdDVGhyZWFkPjo6c2V0SW5U
TFMoRGF0YSogZGF0YSkNCnsNCiAgICByZXR1cm4gVGhyZWFkOjpjdXJyZW50KCkuc3BlY2lmaWNT
dG9yYWdlKCkuc2V0KG1fa2V5LCBkYXRhKTsNCn0NCg0KDQoNCiNsaW5lIDE2NiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVGhyZWFkU3Bl
Y2lmaWMuaCINCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgQ2FuQmVHQ1RocmVhZCBjYW5CZUdDVGhy
ZWFkPg0KaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8VCwgY2FuQmVHQ1RocmVhZD46OmRlc3Ry
b3kodm9pZCogcHRyKQ0Kew0KICAgIERhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxEYXRhKj4ocHRy
KTsNCg0KDQoNCg0KDQojbGluZSAxNzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZFNwZWNpZmljLmgiDQoNCiAgICBkZWxldGUg
ZGF0YTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgQ2FuQmVHQ1RocmVhZCBjYW5CZUdDVGhy
ZWFkPg0KaW5saW5lIFQqIFRocmVhZFNwZWNpZmljPFQsIGNhbkJlR0NUaHJlYWQ+OjpzZXQoKQ0K
ew0KICAgIGRvIHsgaWYgKCghKGNhbkJlR0NUaHJlYWQgPT0gQ2FuQmVHQ1RocmVhZDo6VHJ1ZSB8
fCAhVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50
ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE4NCwg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1RocmVhZFNwZWNpZmljLmgiLCAgX19GVU5DVElPTl9fICAsIDI1ICk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7DQogICAgKCh2b2lkKTApOw0KICAgIERhdGEqIGRhdGEgPSBuZXcgRGF0
YSh0aGlzKTsgDQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBkYXRhLT5zdG9yYWdlUG9pbnRl
cigpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDYW5CZUdDVGhyZWFkIGNhbkJlR0NUaHJl
YWQ+DQppbmxpbmUgYm9vbCBUaHJlYWRTcGVjaWZpYzxULCBjYW5CZUdDVGhyZWFkPjo6aXNTZXQo
KQ0Kew0KICAgIHJldHVybiAhIWdldCgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDYW5C
ZUdDVGhyZWFkIGNhbkJlR0NUaHJlYWQ+DQppbmxpbmUgVGhyZWFkU3BlY2lmaWM8VCwgY2FuQmVH
Q1RocmVhZD46Om9wZXJhdG9yIFQqKCkNCnsNCiAgICBpZiAoVCogcHRyID0gZ2V0KCkpDQogICAg
ICAgIHJldHVybiBwdHI7DQogICAgcmV0dXJuIHNldCgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBDYW5CZUdDVGhyZWFkIGNhbkJlR0NUaHJlYWQ+DQppbmxpbmUgVCogVGhyZWFkU3BlY2lm
aWM8VCwgY2FuQmVHQ1RocmVhZD46Om9wZXJhdG9yLT4oKQ0Kew0KICAgIHJldHVybiBvcGVyYXRv
ciBUKigpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDYW5CZUdDVGhyZWFkIGNhbkJlR0NU
aHJlYWQ+DQppbmxpbmUgVCYgVGhyZWFkU3BlY2lmaWM8VCwgY2FuQmVHQ1RocmVhZD46Om9wZXJh
dG9yKigpDQp7DQogICAgcmV0dXJuICpvcGVyYXRvciBUKigpOw0KfQ0KDQp9IA0KDQp1c2luZyBX
VEY6OlRocmVhZFNwZWNpZmljOw0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcRGVmZXJHQy5oIg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KY2xhc3MgRGVmZXJHQyB7DQogICAgRGVmZXJHQyhjb25zdCBEZWZlckdDJikgPSBkZWxl
dGU7IERlZmVyR0MmIG9wZXJhdG9yPShjb25zdCBEZWZlckdDJikgPSBkZWxldGU7Ow0KICAgIHBy
aXZhdGU6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqKSA9IGRlbGV0ZTsgdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBk
ZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0
aW9uKSA9IGRlbGV0ZTsgdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25B
ZnRlclRoaXNGb3JiaWRIZWFwQWxsb2NhdGlvbk1hY3JvOw0KcHVibGljOg0KICAgIERlZmVyR0Mo
SGVhcCYgaGVhcCkNCiAgICAgICAgOiBtX2hlYXAoaGVhcCkNCiAgICB7DQogICAgICAgIG1faGVh
cC5pbmNyZW1lbnREZWZlcnJhbERlcHRoKCk7DQogICAgfQ0KICAgIA0KICAgIH5EZWZlckdDKCkN
CiAgICB7DQogICAgICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpDQogICAgICAg
ICAgICBtX2hlYXAudmVyaWZ5Q2FuR0MoKTsNCiAgICAgICAgbV9oZWFwLmRlY3JlbWVudERlZmVy
cmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIEhlYXAmIG1f
aGVhcDsNCn07DQoNCmNsYXNzIERlZmVyR0NGb3JBV2hpbGUgew0KICAgIERlZmVyR0NGb3JBV2hp
bGUoY29uc3QgRGVmZXJHQ0ZvckFXaGlsZSYpID0gZGVsZXRlOyBEZWZlckdDRm9yQVdoaWxlJiBv
cGVyYXRvcj0oY29uc3QgRGVmZXJHQ0ZvckFXaGlsZSYpID0gZGVsZXRlOzsNCiAgICBwcml2YXRl
OiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRl
OyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
PSBkZWxldGU7IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzRm9yYmlkSGVhcEFsbG9jYXRpb25NYWNybzsNCnB1YmxpYzoNCiAgICBEZWZlckdDRm9yQVdo
aWxlKEhlYXAmIGhlYXApDQogICAgICAgIDogbV9oZWFwKGhlYXApDQogICAgew0KICAgICAgICBt
X2hlYXAuaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOw0KICAgIH0NCiAgICANCiAgICB+RGVmZXJH
Q0ZvckFXaGlsZSgpDQogICAgew0KICAgICAgICBtX2hlYXAuZGVjcmVtZW50RGVmZXJyYWxEZXB0
aCgpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBIZWFwJiBtX2hlYXA7DQp9Ow0KDQpjbGFzcyBE
aXNhbGxvd0dDIDogcHVibGljIERpc2FsbG93U2NvcGU8RGlzYWxsb3dHQz4gew0KICAgIERpc2Fs
bG93R0MoY29uc3QgRGlzYWxsb3dHQyYpID0gZGVsZXRlOyBEaXNhbGxvd0dDJiBvcGVyYXRvcj0o
Y29uc3QgRGlzYWxsb3dHQyYpID0gZGVsZXRlOzsNCiAgICBwcml2YXRlOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsg
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgPSBkZWxldGU7IHR5cGVk
ZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVhcEFs
bG9jYXRpb25NYWNybzsNCiAgICB0eXBlZGVmIERpc2FsbG93U2NvcGU8RGlzYWxsb3dHQz4gQmFz
ZTsNCnB1YmxpYzoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxMDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcRGVmZXJHQy5oIg0KICAgIF9fZm9yY2VpbmxpbmUgRGlzYWxsb3dHQygpIHsgfSANCiAg
ICBfX2ZvcmNlaW5saW5lIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKSB7IH0NCiNsaW5lIDEwNCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxE
ZWZlckdDLmgiDQogICAgDQogICAgZnJpZW5kIGNsYXNzIERpc2FsbG93U2NvcGU8RGlzYWxsb3dH
Qz47DQp9Ow0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQ29uY3VycmVudEpTTG9jay5oIg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9Ob0xvY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgTm9Mb2Nr
IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVs
bFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNp
bmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHZvaWQg
bG9jaygpIHsgfQ0KICAgIHZvaWQgdW5sb2NrKCkgeyB9DQogICAgYm9vbCBpc0hlbGQoKSB7IHJl
dHVybiBmYWxzZTsgfQ0KfTsNCg0KdHlwZWRlZiBMb2NrZXI8Tm9Mb2NrPiBOb0xvY2tMb2NrZXI7
DQoNCn0gDQoNCnVzaW5nIFdURjo6Tm9Mb2NrOw0KdXNpbmcgV1RGOjpOb0xvY2tMb2NrZXI7DQoj
bGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxDb25jdXJyZW50SlNMb2NrLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnVz
aW5nIENvbmN1cnJlbnRKU0xvY2sgPSBMb2NrOw0KdXNpbmcgQ29uY3VycmVudEpTTG9ja2VySW1w
bCA9IExvY2tIb2xkZXI7DQoNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKENvbmN1cnJlbnRKU0xvY2sp
ID09IDEsICJSZWdhcmRsZXNzIG9mIHN0YXR1cyBvZiBjb25jdXJyZW50IEpTIGZsYWcsIHNpemUg
b2YgQ29udXJyZW50SlNMb2NrIGlzIGFsd2F5cyBvbmUgYnl0ZS4iKTsNCg0KY2xhc3MgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSA6IHB1YmxpYyBBYnN0cmFjdExvY2tlciB7DQogICAgQ29uY3VycmVu
dEpTTG9ja2VyQmFzZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJikgPSBkZWxldGU7IENv
bmN1cnJlbnRKU0xvY2tlckJhc2UmIG9wZXJhdG9yPShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJC
YXNlJikgPSBkZWxldGU7Ow0KcHVibGljOg0KICAgIGV4cGxpY2l0IENvbmN1cnJlbnRKU0xvY2tl
ckJhc2UoQ29uY3VycmVudEpTTG9jayYgbG9ja2FibGUpDQogICAgICAgIDogbV9sb2NrZXIoJmxv
Y2thYmxlKQ0KICAgIHsNCiAgICB9DQogICAgZXhwbGljaXQgQ29uY3VycmVudEpTTG9ja2VyQmFz
ZShDb25jdXJyZW50SlNMb2NrKiBsb2NrYWJsZSkNCiAgICAgICAgOiBtX2xvY2tlcihsb2NrYWJs
ZSkNCiAgICB7DQogICAgfQ0KDQogICAgZXhwbGljaXQgQ29uY3VycmVudEpTTG9ja2VyQmFzZShO
b0xvY2tpbmdOZWNlc3NhcnlUYWcpDQogICAgICAgIDogbV9sb2NrZXIoTm9Mb2NraW5nTmVjZXNz
YXJ5KQ0KICAgIHsNCiAgICB9DQoNCiAgICB+Q29uY3VycmVudEpTTG9ja2VyQmFzZSgpDQogICAg
ew0KICAgIH0NCiAgICANCiAgICB2b2lkIHVubG9ja0Vhcmx5KCkNCiAgICB7DQogICAgICAgIG1f
bG9ja2VyLnVubG9ja0Vhcmx5KCk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIENvbmN1cnJlbnRK
U0xvY2tlckltcGwgbV9sb2NrZXI7DQp9Ow0KDQpjbGFzcyBHQ1NhZmVDb25jdXJyZW50SlNMb2Nr
ZXIgOiBwdWJsaWMgQ29uY3VycmVudEpTTG9ja2VyQmFzZSB7DQpwdWJsaWM6DQogICAgR0NTYWZl
Q29uY3VycmVudEpTTG9ja2VyKENvbmN1cnJlbnRKU0xvY2smIGxvY2thYmxlLCBIZWFwJiBoZWFw
KQ0KICAgICAgICA6IENvbmN1cnJlbnRKU0xvY2tlckJhc2UobG9ja2FibGUpDQogICAgICAgICwg
bV9kZWZlckdDKGhlYXApDQogICAgew0KICAgIH0NCg0KICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlcihDb25jdXJyZW50SlNMb2NrKiBsb2NrYWJsZSwgSGVhcCYgaGVhcCkNCiAgICAgICAgOiBD
b25jdXJyZW50SlNMb2NrZXJCYXNlKGxvY2thYmxlKQ0KICAgICAgICAsIG1fZGVmZXJHQyhoZWFw
KQ0KICAgIHsNCiAgICB9DQoNCiAgICB+R0NTYWZlQ29uY3VycmVudEpTTG9ja2VyKCkNCiAgICB7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICB1bmxvY2tF
YXJseSgpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBEZWZlckdDIG1fZGVmZXJHQzsNCn07DQoN
CmNsYXNzIENvbmN1cnJlbnRKU0xvY2tlciA6IHB1YmxpYyBDb25jdXJyZW50SlNMb2NrZXJCYXNl
IHsNCnB1YmxpYzoNCiAgICBDb25jdXJyZW50SlNMb2NrZXIoQ29uY3VycmVudEpTTG9jayYgbG9j
a2FibGUpDQogICAgICAgIDogQ29uY3VycmVudEpTTG9ja2VyQmFzZShsb2NrYWJsZSkNCg0KDQoj
bGluZSAxMDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcQ29uY3VycmVudEpTTG9jay5oIg0KICAgIHsNCiAgICB9DQoNCiAgICBDb25j
dXJyZW50SlNMb2NrZXIoQ29uY3VycmVudEpTTG9jayogbG9ja2FibGUpDQogICAgICAgIDogQ29u
Y3VycmVudEpTTG9ja2VyQmFzZShsb2NrYWJsZSkNCg0KDQojbGluZSAxMTIgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQ29uY3VycmVu
dEpTTG9jay5oIg0KICAgIHsNCiAgICB9DQoNCiAgICBDb25jdXJyZW50SlNMb2NrZXIoTm9Mb2Nr
aW5nTmVjZXNzYXJ5VGFnKQ0KICAgICAgICA6IENvbmN1cnJlbnRKU0xvY2tlckJhc2UoTm9Mb2Nr
aW5nTmVjZXNzYXJ5KQ0KDQoNCiNsaW5lIDEyMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDb25jdXJyZW50SlNMb2NrLmgiDQogICAg
ew0KICAgIH0NCiAgICANCiAgICBDb25jdXJyZW50SlNMb2NrZXIoaW50KSA9IGRlbGV0ZTsNCg0K
DQoNCg0KI2xpbmUgMTI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXENvbmN1cnJlbnRKU0xvY2suaCINCn07DQoNCn0gDQojbGluZSAz
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxWTS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxDb250cm9sRmxvd1Byb2ZpbGVyLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcQmFzaWNCbG9ja0xvY2F0aW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJs
ZXJcXE1hY3JvQXNzZW1ibGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFz
c2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0KDQoNCg0KI2xpbmUgNDQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fz
c2VtYmxlci5oIg0KDQoNCg0KDQojbGluZSA0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyLmgiDQoNCg0K
DQoNCiNsaW5lIDU0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0KDQoNCg0KI2xpbmUgNTkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVy
XFxNYWNyb0Fzc2VtYmxlci5oIg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4Nl82
NC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGFzc2VtYmxlclxcQXNzZW1ibGVyQnVmZmVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGFzc2VtYmxlclxcQXNzZW1ibGVyQnVmZmVyLmgiDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KICAgIGNsYXNzIEFzc2VtYmxlckRhdGE7DQoNCiAgICB0eXBlZGVmIFRocmVhZFNw
ZWNpZmljPEFzc2VtYmxlckRhdGEsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4gVGhyZWFkU3Bl
Y2lmaWNBc3NlbWJsZXJEYXRhOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFRocmVhZFNw
ZWNpZmljQXNzZW1ibGVyRGF0YSYgdGhyZWFkU3BlY2lmaWNBc3NlbWJsZXJEYXRhKCk7DQoNCiAg
ICBjbGFzcyBMaW5rQnVmZmVyOw0KDQogICAgdXNpbmcgQXNzZW1ibGVyRGF0YU1hbGxvYyA9IEZh
c3RNYWxsb2M7DQoNCiAgICBzdHJ1Y3QgQXNzZW1ibGVyTGFiZWwgew0KICAgICAgICBBc3NlbWJs
ZXJMYWJlbCgpDQogICAgICAgICAgICA6IG1fb2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgZXhwbGljaXQg
QXNzZW1ibGVyTGFiZWwodWludDMyX3Qgb2Zmc2V0KQ0KICAgICAgICAgICAgOiBtX29mZnNldChv
ZmZzZXQpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiAobV9vZmZzZXQgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKTsgfQ0KDQogICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsQXRPZmZzZXQoaW50IG9mZnNl
dCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlckxhYmVsKG1f
b2Zmc2V0ICsgb2Zmc2V0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBc3NlbWJsZXJMYWJlbCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0ID09IG90
aGVyLm1fb2Zmc2V0OyB9DQoNCiAgICAgICAgdWludDMyX3QgbV9vZmZzZXQ7DQogICAgfTsNCg0K
ICAgIGNsYXNzIEFzc2VtYmxlckRhdGEgew0KICAgICAgICBBc3NlbWJsZXJEYXRhKGNvbnN0IEFz
c2VtYmxlckRhdGEmKSA9IGRlbGV0ZTsgQXNzZW1ibGVyRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEFz
c2VtYmxlckRhdGEmKSA9IGRlbGV0ZTs7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IElubGluZUNhcGFjaXR5ID0gMTI4Ow0KICAgIHB1YmxpYzoNCiAgICAgICAgQXNzZW1ibGVyRGF0
YSgpDQogICAgICAgICAgICA6IG1fYnVmZmVyKG1faW5saW5lQnVmZmVyKQ0KICAgICAgICAgICAg
LCBtX2NhcGFjaXR5KElubGluZUNhcGFjaXR5KQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAg
ICAgICBBc3NlbWJsZXJEYXRhKHNpemVfdCBpbml0aWFsQ2FwYWNpdHkpDQogICAgICAgIHsNCiAg
ICAgICAgICAgIGlmIChpbml0aWFsQ2FwYWNpdHkgPD0gSW5saW5lQ2FwYWNpdHkpIHsNCiAgICAg
ICAgICAgICAgICBtX2NhcGFjaXR5ID0gSW5saW5lQ2FwYWNpdHk7DQogICAgICAgICAgICAgICAg
bV9idWZmZXIgPSBtX2lubGluZUJ1ZmZlcjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICAgICAgbV9jYXBhY2l0eSA9IGluaXRpYWxDYXBhY2l0eTsNCiAgICAgICAgICAgICAgICBt
X2J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihBc3NlbWJsZXJEYXRhTWFsbG9jOjptYWxsb2Mo
bV9jYXBhY2l0eSkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgQXNzZW1i
bGVyRGF0YShBc3NlbWJsZXJEYXRhJiYgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlm
IChvdGhlci5pc0lubGluZUJ1ZmZlcigpKSB7DQogICAgICAgICAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICAgICAgICAgIG1lbWNweShtX2lubGluZUJ1ZmZlciwgb3RoZXIubV9pbmxpbmVCdWZm
ZXIsIElubGluZUNhcGFjaXR5KTsNCiAgICAgICAgICAgICAgICBtX2J1ZmZlciA9IG1faW5saW5l
QnVmZmVyOw0KICAgICAgICAgICAgfSBlbHNlDQogICAgICAgICAgICAgICAgbV9idWZmZXIgPSBv
dGhlci5tX2J1ZmZlcjsNCiAgICAgICAgICAgIG1fY2FwYWNpdHkgPSBvdGhlci5tX2NhcGFjaXR5
Ow0KDQogICAgICAgICAgICBvdGhlci5tX2J1ZmZlciA9IG90aGVyLm1faW5saW5lQnVmZmVyOw0K
ICAgICAgICAgICAgb3RoZXIubV9jYXBhY2l0eSA9IElubGluZUNhcGFjaXR5Ow0KICAgICAgICB9
DQoNCiAgICAgICAgQXNzZW1ibGVyRGF0YSYgb3BlcmF0b3I9KEFzc2VtYmxlckRhdGEmJiBvdGhl
cikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG1fYnVmZmVyICYmICFpc0lubGluZUJ1ZmZl
cigpKQ0KICAgICAgICAgICAgICAgIEFzc2VtYmxlckRhdGFNYWxsb2M6OmZyZWUobV9idWZmZXIp
Ow0KDQogICAgICAgICAgICBpZiAob3RoZXIuaXNJbmxpbmVCdWZmZXIoKSkgew0KICAgICAgICAg
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgICAgICBtZW1jcHkobV9pbmxpbmVCdWZmZXIs
IG90aGVyLm1faW5saW5lQnVmZmVyLCBJbmxpbmVDYXBhY2l0eSk7DQogICAgICAgICAgICAgICAg
bV9idWZmZXIgPSBtX2lubGluZUJ1ZmZlcjsNCiAgICAgICAgICAgIH0gZWxzZQ0KICAgICAgICAg
ICAgICAgIG1fYnVmZmVyID0gb3RoZXIubV9idWZmZXI7DQogICAgICAgICAgICBtX2NhcGFjaXR5
ID0gb3RoZXIubV9jYXBhY2l0eTsNCg0KICAgICAgICAgICAgb3RoZXIubV9idWZmZXIgPSBvdGhl
ci5tX2lubGluZUJ1ZmZlcjsNCiAgICAgICAgICAgIG90aGVyLm1fY2FwYWNpdHkgPSBJbmxpbmVD
YXBhY2l0eTsNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAg
IHZvaWQgdGFrZUJ1ZmZlcklmTGFyZ2VyKEFzc2VtYmxlckRhdGEmJiBvdGhlcikNCiAgICAgICAg
ew0KICAgICAgICAgICAgaWYgKG90aGVyLmlzSW5saW5lQnVmZmVyKCkpDQogICAgICAgICAgICAg
ICAgcmV0dXJuOw0KDQogICAgICAgICAgICBpZiAobV9jYXBhY2l0eSA+PSBvdGhlci5tX2NhcGFj
aXR5KQ0KICAgICAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICAgICAgaWYgKG1fYnVmZmVy
ICYmICFpc0lubGluZUJ1ZmZlcigpKQ0KICAgICAgICAgICAgICAgIEFzc2VtYmxlckRhdGFNYWxs
b2M6OmZyZWUobV9idWZmZXIpOw0KDQogICAgICAgICAgICBtX2J1ZmZlciA9IG90aGVyLm1fYnVm
ZmVyOw0KICAgICAgICAgICAgbV9jYXBhY2l0eSA9IG90aGVyLm1fY2FwYWNpdHk7DQoNCiAgICAg
ICAgICAgIG90aGVyLm1fYnVmZmVyID0gb3RoZXIubV9pbmxpbmVCdWZmZXI7DQogICAgICAgICAg
ICBvdGhlci5tX2NhcGFjaXR5ID0gSW5saW5lQ2FwYWNpdHk7DQogICAgICAgIH0NCg0KICAgICAg
ICB+QXNzZW1ibGVyRGF0YSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIGNsZWFyKCk7DQogICAg
ICAgIH0NCg0KICAgICAgICB2b2lkIGNsZWFyKCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYg
KG1fYnVmZmVyICYmICFpc0lubGluZUJ1ZmZlcigpKSB7DQogICAgICAgICAgICAgICAgQXNzZW1i
bGVyRGF0YU1hbGxvYzo6ZnJlZShtX2J1ZmZlcik7DQogICAgICAgICAgICAgICAgbV9jYXBhY2l0
eSA9IElubGluZUNhcGFjaXR5Ow0KICAgICAgICAgICAgICAgIG1fYnVmZmVyID0gbV9pbmxpbmVC
dWZmZXI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBjaGFyKiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQ0KDQogICAgICAgIHVuc2lnbmVkIGNhcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQ0KDQogICAgICAgIHZvaWQgZ3Jvdyh1bnNp
Z25lZCBleHRyYUNhcGFjaXR5ID0gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9jYXBhY2l0
eSA9IG1fY2FwYWNpdHkgKyBtX2NhcGFjaXR5IC8gMiArIGV4dHJhQ2FwYWNpdHk7DQogICAgICAg
ICAgICBpZiAoaXNJbmxpbmVCdWZmZXIoKSkgew0KICAgICAgICAgICAgICAgIG1fYnVmZmVyID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KEFzc2VtYmxlckRhdGFNYWxsb2M6Om1hbGxvYyhtX2NhcGFjaXR5
KSk7DQogICAgICAgICAgICAgICAgbWVtY3B5KG1fYnVmZmVyLCBtX2lubGluZUJ1ZmZlciwgSW5s
aW5lQ2FwYWNpdHkpOw0KICAgICAgICAgICAgfSBlbHNlDQogICAgICAgICAgICAgICAgbV9idWZm
ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oQXNzZW1ibGVyRGF0YU1hbGxvYzo6cmVhbGxvYyhtX2J1
ZmZlciwgbV9jYXBhY2l0eSkpOw0KICAgICAgICB9DQoNCiAgICBwcml2YXRlOg0KICAgICAgICBi
b29sIGlzSW5saW5lQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPT0gbV9pbmxpbmVC
dWZmZXI7IH0NCiAgICAgICAgY2hhciogbV9idWZmZXI7DQogICAgICAgIGNoYXIgbV9pbmxpbmVC
dWZmZXJbSW5saW5lQ2FwYWNpdHldOw0KICAgICAgICB1bnNpZ25lZCBtX2NhcGFjaXR5Ow0KICAg
IH07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIw
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXEFzc2VtYmxlckJ1ZmZlci5oIg0KDQogICAgY2xhc3MgQXNzZW1ibGVyQnVmZmVyIHsN
CiAgICBwdWJsaWM6DQogICAgICAgIEFzc2VtYmxlckJ1ZmZlcigpDQogICAgICAgICAgICA6IG1f
c3RvcmFnZSgpDQogICAgICAgICAgICAsIG1faW5kZXgoMCkNCiAgICAgICAgew0KICAgICAgICAg
ICAgYXV0byYgdGhyZWFkU3BlY2lmaWMgPSB0aHJlYWRTcGVjaWZpY0Fzc2VtYmxlckRhdGEoKTsN
CiAgICAgICAgICAgIG1fc3RvcmFnZS50YWtlQnVmZmVySWZMYXJnZXIoc3RkOjptb3ZlPFdURjo6
Q2hlY2tNb3ZlUGFyYW1ldGVyPigqdGhyZWFkU3BlY2lmaWMpKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIH5Bc3NlbWJsZXJCdWZmZXIoKQ0KICAgICAgICB7DQogICAgICAgICAgICBhdXRvJiB0aHJl
YWRTcGVjaWZpYyA9IHRocmVhZFNwZWNpZmljQXNzZW1ibGVyRGF0YSgpOw0KICAgICAgICAgICAg
dGhyZWFkU3BlY2lmaWMtPnRha2VCdWZmZXJJZkxhcmdlcihzdGQ6Om1vdmU8V1RGOjpDaGVja01v
dmVQYXJhbWV0ZXI+KG1fc3RvcmFnZSkpOw0KICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBpc0F2
YWlsYWJsZSh1bnNpZ25lZCBzcGFjZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG1f
aW5kZXggKyBzcGFjZSA8PSBtX3N0b3JhZ2UuY2FwYWNpdHkoKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIHZvaWQgZW5zdXJlU3BhY2UodW5zaWduZWQgc3BhY2UpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIHdoaWxlICghaXNBdmFpbGFibGUoc3BhY2UpKQ0KICAgICAgICAgICAgICAgIG91dE9mTGlu
ZUdyb3coKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGJvb2wgaXNBbGlnbmVkKGludCBhbGlnbm1l
bnQpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAhKG1faW5kZXggJiAoYWxp
Z25tZW50IC0gMSkpOw0KICAgICAgICB9DQoNCg0KICAgICAgICB2b2lkIHB1dEJ5dGVVbmNoZWNr
ZWQoaW50OF90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQ0KICAgICAg
ICB2b2lkIHB1dEJ5dGUoaW50OF90IHZhbHVlKSB7IHB1dEludGVncmFsKHZhbHVlKTsgfQ0KICAg
ICAgICB2b2lkIHB1dFNob3J0VW5jaGVja2VkKGludDE2X3QgdmFsdWUpIHsgcHV0SW50ZWdyYWxV
bmNoZWNrZWQodmFsdWUpOyB9DQogICAgICAgIHZvaWQgcHV0U2hvcnQoaW50MTZfdCB2YWx1ZSkg
eyBwdXRJbnRlZ3JhbCh2YWx1ZSk7IH0NCiAgICAgICAgdm9pZCBwdXRJbnQ2NFVuY2hlY2tlZChp
bnQ2NF90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQ0KICAgICAgICB2
b2lkIHB1dEludDY0KGludDY0X3QgdmFsdWUpIHsgcHV0SW50ZWdyYWwodmFsdWUpOyB9DQojbGlu
ZSAyNDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
YXNzZW1ibGVyXFxBc3NlbWJsZXJCdWZmZXIuaCINCiAgICAgICAgdm9pZCBwdXRJbnRVbmNoZWNr
ZWQoaW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0NCiAgICAg
ICAgdm9pZCBwdXRJbnQoaW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbCh2YWx1ZSk7IH0NCg0K
ICAgICAgICBzaXplX3QgY29kZVNpemUoKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICBy
ZXR1cm4gbV9pbmRleDsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgdm9pZCBzZXRDb2RlU2l6ZShz
aXplX3QgaW5kZXgpDQogICAgICAgIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICANCiAgICAgICAgICAgIG1faW5kZXggPSBpbmRleDsNCiAgICAgICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgfQ0KI2xpbmUgMjY0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQXNzZW1ibGVyQnVmZmVyLmgiDQoNCiAg
ICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAg
ICByZXR1cm4gQXNzZW1ibGVyTGFiZWwobV9pbmRleCk7DQogICAgICAgIH0NCg0KICAgICAgICB1
bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1faW5kZXg7IH0NCg0KICAgICAgICBBc3Nl
bWJsZXJEYXRhJiYgcmVsZWFzZUFzc2VtYmxlckRhdGEoKSB7IHJldHVybiBzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KG1fc3RvcmFnZSk7IH0NCg0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCg0KICAg
ICAgICBjbGFzcyBMb2NhbFdyaXRlciB7DQogICAgICAgIHB1YmxpYzoNCiAgICAgICAgICAgIExv
Y2FsV3JpdGVyKEFzc2VtYmxlckJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCByZXF1aXJlZFNwYWNl
KQ0KICAgICAgICAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgIGJ1ZmZlci5lbnN1cmVTcGFjZShyZXF1aXJlZFNwYWNlKTsNCiAgICAgICAg
ICAgICAgICBtX3N0b3JhZ2VCdWZmZXIgPSBidWZmZXIubV9zdG9yYWdlLmJ1ZmZlcigpOw0KICAg
ICAgICAgICAgICAgIG1faW5kZXggPSBidWZmZXIubV9pbmRleDsNCg0KDQoNCiNsaW5lIDI5NCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJs
ZXJcXEFzc2VtYmxlckJ1ZmZlci5oIg0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB+TG9j
YWxXcml0ZXIoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAgICAgICAgIG1fYnVmZmVyLm1faW5kZXggPSBtX2luZGV4Ow0KICAgICAgICAgICAgfQ0K
DQogICAgICAgICAgICB2b2lkIHB1dEJ5dGVVbmNoZWNrZWQoaW50OF90IHZhbHVlKSB7IHB1dElu
dGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQ0KICAgICAgICAgICAgdm9pZCBwdXRTaG9ydFVuY2hl
Y2tlZChpbnQxNl90IHZhbHVlKSB7IHB1dEludGVncmFsVW5jaGVja2VkKHZhbHVlKTsgfQ0KICAg
ICAgICAgICAgdm9pZCBwdXRJbnRVbmNoZWNrZWQoaW50MzJfdCB2YWx1ZSkgeyBwdXRJbnRlZ3Jh
bFVuY2hlY2tlZCh2YWx1ZSk7IH0NCiAgICAgICAgICAgIHZvaWQgcHV0SW50NjRVbmNoZWNrZWQo
aW50NjRfdCB2YWx1ZSkgeyBwdXRJbnRlZ3JhbFVuY2hlY2tlZCh2YWx1ZSk7IH0NCiAgICAgICAg
cHJpdmF0ZToNCiAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZT4NCiAg
ICAgICAgICAgIHZvaWQgcHV0SW50ZWdyYWxVbmNoZWNrZWQoSW50ZWdyYWxUeXBlIHZhbHVlKQ0K
ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgICAg
ICBXVEY6OnVuYWxpZ25lZFN0b3JlPEludGVncmFsVHlwZT4obV9zdG9yYWdlQnVmZmVyICsgbV9p
bmRleCwgdmFsdWUpOw0KICAgICAgICAgICAgICAgIG1faW5kZXggKz0gc2l6ZW9mKEludGVncmFs
VHlwZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBBc3NlbWJsZXJCdWZmZXImIG1fYnVm
ZmVyOw0KICAgICAgICAgICAgY2hhciogbV9zdG9yYWdlQnVmZmVyOw0KICAgICAgICAgICAgdW5z
aWduZWQgbV9pbmRleDsNCg0KDQoNCiNsaW5lIDMyMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFzc2VtYmxlckJ1ZmZlci5oIg0K
ICAgICAgICB9Ow0KI2xpbmUgMzI1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQXNzZW1ibGVyQnVmZmVyLmgiDQoNCg0KDQojbGlu
ZSAzMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
YXNzZW1ibGVyXFxBc3NlbWJsZXJCdWZmZXIuaCINCg0KDQogICAgICAgIHZvaWQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX3N0b3JhZ2UuYnVmZmVyKCk7IH0NCiNsaW5lIDMzMyAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFzc2Vt
YmxlckJ1ZmZlci5oIg0KDQoNCiAgICBwcm90ZWN0ZWQ6DQogICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEludGVncmFsVHlwZT4NCiAgICAgICAgdm9pZCBwdXRJbnRlZ3JhbChJbnRlZ3JhbFR5cGUg
dmFsdWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHVuc2lnbmVkIG5leHRJbmRleCA9IG1faW5k
ZXggKyBzaXplb2YoSW50ZWdyYWxUeXBlKTsNCiAgICAgICAgICAgIGlmICgobmV4dEluZGV4ID4g
bV9zdG9yYWdlLmNhcGFjaXR5KCkpKQ0KICAgICAgICAgICAgICAgIG91dE9mTGluZUdyb3coKTsN
CiAgICAgICAgICAgIHB1dEludGVncmFsVW5jaGVja2VkPEludGVncmFsVHlwZT4odmFsdWUpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPg0KICAg
ICAgICB2b2lkIHB1dEludGVncmFsVW5jaGVja2VkKEludGVncmFsVHlwZSB2YWx1ZSkNCiAgICAg
ICAgew0KDQoNCg0KDQoNCiNsaW5lIDM1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFzc2VtYmxlckJ1ZmZlci5oIg0KICAgICAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTxJbnRlZ3Jh
bFR5cGU+KG1fc3RvcmFnZS5idWZmZXIoKSArIG1faW5kZXgsIHZhbHVlKTsNCiAgICAgICAgICAg
IG1faW5kZXggKz0gc2l6ZW9mKEludGVncmFsVHlwZSk7DQogICAgICAgIH0NCg0KICAgIHByaXZh
dGU6DQogICAgICAgIHZvaWQgZ3JvdyhpbnQgZXh0cmFDYXBhY2l0eSA9IDApDQogICAgICAgIHsN
CiAgICAgICAgICAgIG1fc3RvcmFnZS5ncm93KGV4dHJhQ2FwYWNpdHkpOw0KICAgICAgICB9DQoN
CiAgICAgICAgX19kZWNsc3BlYyhub2lubGluZSkgdm9pZCBvdXRPZkxpbmVHcm93KCkNCiAgICAg
ICAgew0KICAgICAgICAgICAgbV9zdG9yYWdlLmdyb3coKTsNCiAgICAgICAgfQ0KDQoNCiAgICAg
ICAgZnJpZW5kIExvY2FsV3JpdGVyOw0KI2xpbmUgMzczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQXNzZW1ibGVyQnVmZmVyLmgi
DQogICAgICAgIGZyaWVuZCBMaW5rQnVmZmVyOw0KDQogICAgICAgIEFzc2VtYmxlckRhdGEgbV9z
dG9yYWdlOw0KICAgICAgICB1bnNpZ25lZCBtX2luZGV4Ow0KDQoNCiNsaW5lIDM4MCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFz
c2VtYmxlckJ1ZmZlci5oIg0KICAgIH07DQoNCn0gDQoNCiNsaW5lIDM4NSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFzc2VtYmxl
ckJ1ZmZlci5oIg0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCiNsaW5lIDEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxB
c3NlbWJsZXJDb21tb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpfX2ZvcmNlaW5s
aW5lIGNvbnN0ZXhwciBib29sIGlzRGFyd2luKCkNCnsNCg0KDQojbGluZSAzNSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFzc2Vt
YmxlckNvbW1vbi5oIg0KICAgIHJldHVybiBmYWxzZTsNCiNsaW5lIDM3ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQXNzZW1ibGVy
Q29tbW9uLmgiDQp9DQoNCl9fZm9yY2VpbmxpbmUgY29uc3RleHByIGJvb2wgaXNJT1MoKQ0Kew0K
DQoNCiNsaW5lIDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGFzc2VtYmxlclxcQXNzZW1ibGVyQ29tbW9uLmgiDQogICAgcmV0dXJuIGZhbHNlOw0K
I2xpbmUgNDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYXNzZW1ibGVyXFxBc3NlbWJsZXJDb21tb24uaCINCn0NCg0KX19mb3JjZWlubGluZSBib29s
IGlzSW50OShpbnQzMl90IHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA9PSAoKHZhbHVlIDw8
IDIzKSA+PiAyMyk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+DQpfX2ZvcmNlaW5saW5l
IGJvb2wgaXNVSW50MTIoVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISh2YWx1ZSAmIH5zdGF0
aWNfY2FzdDxUeXBlPigweGZmZikpOw0KfQ0KDQp0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+DQpfX2Zv
cmNlaW5saW5lIGJvb2wgaXNWYWxpZFNjYWxlZFVJbW0xMihpbnQzMl90IG9mZnNldCkNCnsNCiAg
ICBpbnQzMl90IG1heFBJbW0gPSA0MDk1ICogKGRhdGFzaXplIC8gOCk7DQogICAgaWYgKG9mZnNl
dCA8IDApDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICBpZiAob2Zmc2V0ID4gbWF4UEltbSkN
CiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIGlmIChvZmZzZXQgJiAoKGRhdGFzaXplIC8gOCkg
LSAxKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQpfX2Zv
cmNlaW5saW5lIGJvb2wgaXNWYWxpZFNpZ25lZEltbTkoaW50MzJfdCB2YWx1ZSkNCnsNCiAgICBy
ZXR1cm4gaXNJbnQ5KHZhbHVlKTsNCn0NCg0KY2xhc3MgQVJNNjRMb2dpY2FsSW1tZWRpYXRlIHsN
CnB1YmxpYzoNCiAgICBzdGF0aWMgQVJNNjRMb2dpY2FsSW1tZWRpYXRlIGNyZWF0ZTMyKHVpbnQz
Ml90IHZhbHVlKQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIGlmICghdmFsdWUgfHwgIX52YWx1
ZSkNCiAgICAgICAgICAgIHJldHVybiBJbnZhbGlkTG9naWNhbEltbWVkaWF0ZTsNCg0KICAgICAg
ICANCiAgICAgICAgDQoNCiAgICAgICAgdW5zaWduZWQgaHNiLCBsc2I7DQogICAgICAgIGJvb2wg
aW52ZXJ0ZWQ7DQogICAgICAgIGlmIChmaW5kQml0UmFuZ2U8MzI+KHZhbHVlLCBoc2IsIGxzYiwg
aW52ZXJ0ZWQpKQ0KICAgICAgICAgICAgcmV0dXJuIGVuY29kZUxvZ2ljYWxJbW1lZGlhdGU8MzI+
KGhzYiwgbHNiLCBpbnZlcnRlZCk7DQoNCiAgICAgICAgaWYgKCh2YWx1ZSAmIDB4ZmZmZikgIT0g
KHZhbHVlID4+IDE2KSkNCiAgICAgICAgICAgIHJldHVybiBJbnZhbGlkTG9naWNhbEltbWVkaWF0
ZTsNCiAgICAgICAgdmFsdWUgJj0gMHhmZmZmOw0KDQogICAgICAgIGlmIChmaW5kQml0UmFuZ2U8
MTY+KHZhbHVlLCBoc2IsIGxzYiwgaW52ZXJ0ZWQpKQ0KICAgICAgICAgICAgcmV0dXJuIGVuY29k
ZUxvZ2ljYWxJbW1lZGlhdGU8MTY+KGhzYiwgbHNiLCBpbnZlcnRlZCk7DQoNCiAgICAgICAgaWYg
KCh2YWx1ZSAmIDB4ZmYpICE9ICh2YWx1ZSA+PiA4KSkNCiAgICAgICAgICAgIHJldHVybiBJbnZh
bGlkTG9naWNhbEltbWVkaWF0ZTsNCiAgICAgICAgdmFsdWUgJj0gMHhmZjsNCg0KICAgICAgICBp
ZiAoZmluZEJpdFJhbmdlPDg+KHZhbHVlLCBoc2IsIGxzYiwgaW52ZXJ0ZWQpKQ0KICAgICAgICAg
ICAgcmV0dXJuIGVuY29kZUxvZ2ljYWxJbW1lZGlhdGU8OD4oaHNiLCBsc2IsIGludmVydGVkKTsN
Cg0KICAgICAgICBpZiAoKHZhbHVlICYgMHhmKSAhPSAodmFsdWUgPj4gNCkpDQogICAgICAgICAg
ICByZXR1cm4gSW52YWxpZExvZ2ljYWxJbW1lZGlhdGU7DQogICAgICAgIHZhbHVlICY9IDB4ZjsN
Cg0KICAgICAgICBpZiAoZmluZEJpdFJhbmdlPDQ+KHZhbHVlLCBoc2IsIGxzYiwgaW52ZXJ0ZWQp
KQ0KICAgICAgICAgICAgcmV0dXJuIGVuY29kZUxvZ2ljYWxJbW1lZGlhdGU8ND4oaHNiLCBsc2Is
IGludmVydGVkKTsNCg0KICAgICAgICBpZiAoKHZhbHVlICYgMHgzKSAhPSAodmFsdWUgPj4gMikp
DQogICAgICAgICAgICByZXR1cm4gSW52YWxpZExvZ2ljYWxJbW1lZGlhdGU7DQogICAgICAgIHZh
bHVlICY9IDB4MzsNCg0KICAgICAgICBpZiAoZmluZEJpdFJhbmdlPDI+KHZhbHVlLCBoc2IsIGxz
YiwgaW52ZXJ0ZWQpKQ0KICAgICAgICAgICAgcmV0dXJuIGVuY29kZUxvZ2ljYWxJbW1lZGlhdGU8
Mj4oaHNiLCBsc2IsIGludmVydGVkKTsNCg0KICAgICAgICByZXR1cm4gSW52YWxpZExvZ2ljYWxJ
bW1lZGlhdGU7DQogICAgfQ0KDQogICAgc3RhdGljIEFSTTY0TG9naWNhbEltbWVkaWF0ZSBjcmVh
dGU2NCh1aW50NjRfdCB2YWx1ZSkNCiAgICB7DQogICAgICAgIA0KICAgICAgICBpZiAoIXZhbHVl
IHx8ICF+dmFsdWUpDQogICAgICAgICAgICByZXR1cm4gSW52YWxpZExvZ2ljYWxJbW1lZGlhdGU7
DQoNCiAgICAgICAgDQogICAgICAgIHVuc2lnbmVkIGhzYiwgbHNiOw0KICAgICAgICBib29sIGlu
dmVydGVkOw0KICAgICAgICBpZiAoZmluZEJpdFJhbmdlPDY0Pih2YWx1ZSwgaHNiLCBsc2IsIGlu
dmVydGVkKSkNCiAgICAgICAgICAgIHJldHVybiBlbmNvZGVMb2dpY2FsSW1tZWRpYXRlPDY0Piho
c2IsIGxzYiwgaW52ZXJ0ZWQpOw0KDQogICAgICAgIA0KICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHZhbHVlKSA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgPj4gMzIpKQ0K
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZTMyKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkp
Ow0KICAgICAgICByZXR1cm4gSW52YWxpZExvZ2ljYWxJbW1lZGlhdGU7DQogICAgfQ0KDQogICAg
aW50IHZhbHVlKCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0
dXJuIG1fdmFsdWU7DQogICAgfQ0KDQogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBtX3ZhbHVlICE9IEludmFsaWRMb2dpY2FsSW1tZWRpYXRlOw0KICAgIH0N
Cg0KICAgIGJvb2wgaXM2NGJpdCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV92YWx1
ZSAmICgxIDw8IDEyKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgQVJNNjRMb2dpY2FsSW1tZWRp
YXRlKGludCB2YWx1ZSkNCiAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQ0KICAgIHsNCiAgICB9DQoN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICBzdGF0aWMgdWludDY0X3QgbWFzayh1bnNpZ25l
ZCBoc2IpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiAweGZmZmZm
ZmZmZmZmZmZmZmZ1bGwgPj4gKDYzIC0gaHNiKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBOPg0KICAgIHN0YXRpYyB2b2lkIHBhcnRpYWxIU0IodWludDY0X3QmIHZhbHVlLCB1bnNp
Z25lZCZyZXN1bHQpDQogICAgew0KICAgICAgICBpZiAodmFsdWUgJiAoMHhmZmZmZmZmZmZmZmZm
ZmZmdWxsIDw8IE4pKSB7DQogICAgICAgICAgICByZXN1bHQgKz0gTjsNCiAgICAgICAgICAgIHZh
bHVlID4+PSBOOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgc3RhdGljIHVuc2lnbmVkIGhpZ2hlc3RTZXRCaXQodWludDY0X3QgdmFsdWUpDQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHVuc2lnbmVkIGhzYiA9IDA7DQogICAgICAgIHBh
cnRpYWxIU0I8MzI+KHZhbHVlLCBoc2IpOw0KICAgICAgICBwYXJ0aWFsSFNCPDE2Pih2YWx1ZSwg
aHNiKTsNCiAgICAgICAgcGFydGlhbEhTQjw4Pih2YWx1ZSwgaHNiKTsNCiAgICAgICAgcGFydGlh
bEhTQjw0Pih2YWx1ZSwgaHNiKTsNCiAgICAgICAgcGFydGlhbEhTQjwyPih2YWx1ZSwgaHNiKTsN
CiAgICAgICAgcGFydGlhbEhTQjwxPih2YWx1ZSwgaHNiKTsNCiAgICAgICAgcmV0dXJuIGhzYjsN
CiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCB3aWR0aD4NCiAgICBzdGF0
aWMgYm9vbCBmaW5kQml0UmFuZ2UodWludDY0X3QgdmFsdWUsIHVuc2lnbmVkJiBoc2IsIHVuc2ln
bmVkJiBsc2IsIGJvb2wmIGludmVydGVkKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIGNvbnN0IHVpbnQ2NF90IG1zYiA9IDF1bGwgPDwgKHdpZHRoIC0gMSk7DQogICAg
ICAgIGlmICgoaW52ZXJ0ZWQgPSAodmFsdWUgJiBtc2IpKSkNCiAgICAgICAgICAgIHZhbHVlIF49
IG1hc2sod2lkdGggLSAxKTsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIGhzYiA9IGhp
Z2hlc3RTZXRCaXQodmFsdWUpOw0KICAgICAgICB2YWx1ZSBePSBtYXNrKGhzYik7DQogICAgICAg
IGlmICghdmFsdWUpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgbHNiID0gMDsNCiAgICAg
ICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgDQogICAgICAgIGxzYiA9
IGhpZ2hlc3RTZXRCaXQodmFsdWUpOw0KICAgICAgICB2YWx1ZSBePSBtYXNrKGxzYik7DQogICAg
ICAgIGlmICghdmFsdWUpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAg
ICArK2xzYjsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIA0KICAgIHRlbXBsYXRlPHVuc2lnbmVkIHdpZHRo
Pg0KICAgIHN0YXRpYyBpbnQgZW5jb2RlTG9naWNhbEltbWVkaWF0ZSh1bnNpZ25lZCBoc2IsIHVu
c2lnbmVkIGxzYiwgYm9vbCBpbnZlcnRlZCkNCiAgICB7DQogICAgICAgIA0KICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAo
KHZvaWQpMCk7DQoNCiAgICAgICAgaW50IGltbU4gPSAwOw0KICAgICAgICBpbnQgaW1tcyA9IDA7
DQogICAgICAgIGludCBpbW1yID0gMDsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IGlmICh3aWR0aCA9PSA2NCkNCiAgICAgICAgICAgIGltbU4gPSAxOw0KICAgICAgICBlbHNlDQog
ICAgICAgICAgICBpbW1zID0gNjMgJiB+KHdpZHRoICsgd2lkdGggLSAxKTsNCg0KICAgICAgICBp
ZiAoaW52ZXJ0ZWQpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgaW1tciA9ICh3aWR0aCAtIDEpIC0gaHNiOw0KICAg
ICAgICAgICAgaW1tcyB8PSAod2lkdGggLSAoKGhzYiAtIGxzYikgKyAxKSkgLSAxOw0KICAgICAg
ICB9IGVsc2Ugew0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIGltbXIgPSAod2lkdGggLSBsc2Ip
ICYgKHdpZHRoIC0gMSk7DQogICAgICAgICAgICBpbW1zIHw9IGhzYiAtIGxzYjsNCiAgICAgICAg
fQ0KDQogICAgICAgIHJldHVybiBpbW1OIDw8IDEyIHwgaW1tciA8PCA2IHwgaW1tczsNCiAgICB9
DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBJbnZhbGlkTG9naWNhbEltbWVkaWF0ZSA9IC0x
Ow0KDQogICAgaW50IG1fdmFsdWU7DQp9Ow0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJs
ZXIuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxhc3NlbWJsZXJcXFJlZ2lzdGVySW5mby5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxSZWdp
c3RlckluZm8uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZfNjRSZWdpc3RlcnMuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXFg4Nl82NFJlZ2lzdGVycy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA3NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4Nl82NFJlZ2lzdGVycy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFJlZ2lzdGVySW5mby5o
Ig0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDYzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcUmVnaXN0ZXJJbmZvLmgiDQojbGluZSAz
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQppbmxp
bmUgYm9vbCBDQU5fU0lHTl9FWFRFTkRfOF8zMihpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA9PSAoaW50MzJfdCkoc2lnbmVkIGNoYXIpdmFsdWU7IH0NCg0KbmFtZXNwYWNlIFg4NlJlZ2lz
dGVycyB7DQoNCg0KDQoNCg0KI2xpbmUgNTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KDQoNCnR5
cGVkZWYgZW51bSAgew0KICAgIGVheCwgZWN4LCBlZHgsIGVieCwgZXNwLCBlYnAsIGVzaSwgZWRp
LCByOCwgcjksIHIxMCwgcjExLCByMTIsIHIxMywgcjE0LCByMTUsDQogICAgSW52YWxpZEdQUlJl
ZyA9IC0xLA0KfSBSZWdpc3RlcklEOw0KDQp0eXBlZGVmIGVudW0gIHsNCiAgICBlaXAsIGVmbGFn
cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
fSBTUFJlZ2lzdGVySUQ7DQoNCnR5cGVkZWYgZW51bSAgew0KICAgIHhtbTAsIHhtbTEsIHhtbTIs
IHhtbTMsIHhtbTQsIHhtbTUsIHhtbTYsIHhtbTcsIHhtbTgsIHhtbTksIHhtbTEwLCB4bW0xMSwg
eG1tMTIsIHhtbTEzLCB4bW0xNCwgeG1tMTUsDQogICAgSW52YWxpZEZQUlJlZyA9IC0xLA0KfSBY
TU1SZWdpc3RlcklEOw0KDQoNCg0KfSANCg0KY2xhc3MgWDg2QXNzZW1ibGVyIHsNCnB1YmxpYzoN
CiAgICB0eXBlZGVmIFg4NlJlZ2lzdGVyczo6UmVnaXN0ZXJJRCBSZWdpc3RlcklEOw0KICAgIA0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBmaXJzdFJlZ2lzdGVyKCkgeyByZXR1cm4g
WDg2UmVnaXN0ZXJzOjplYXg7IH0NCiAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbGFz
dFJlZ2lzdGVyKCkNCiAgICB7DQoNCiAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6cjE1Ow0K
DQoNCiNsaW5lIDgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQogICAgfQ0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0UmVnaXN0ZXIo
KSAtIGZpcnN0UmVnaXN0ZXIoKSArIDE7IH0NCiAgICANCiAgICB0eXBlZGVmIFg4NlJlZ2lzdGVy
czo6U1BSZWdpc3RlcklEIFNQUmVnaXN0ZXJJRDsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgU1BS
ZWdpc3RlcklEIGZpcnN0U1BSZWdpc3RlcigpIHsgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWlwOyB9
DQogICAgc3RhdGljIGNvbnN0ZXhwciBTUFJlZ2lzdGVySUQgbGFzdFNQUmVnaXN0ZXIoKSB7IHJl
dHVybiBYODZSZWdpc3RlcnM6OmVmbGFnczsgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygpIHsgcmV0dXJuIGxhc3RTUFJlZ2lzdGVyKCkgLSBmaXJz
dFNQUmVnaXN0ZXIoKSArIDE7IH0NCiAgICANCiAgICB0eXBlZGVmIFg4NlJlZ2lzdGVyczo6WE1N
UmVnaXN0ZXJJRCBYTU1SZWdpc3RlcklEOw0KICAgIHR5cGVkZWYgWE1NUmVnaXN0ZXJJRCBGUFJl
Z2lzdGVySUQ7DQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBGUFJlZ2lzdGVySUQgZmlyc3RG
UFJlZ2lzdGVyKCkgeyByZXR1cm4gWDg2UmVnaXN0ZXJzOjp4bW0wOyB9DQogICAgc3RhdGljIGNv
bnN0ZXhwciBGUFJlZ2lzdGVySUQgbGFzdEZQUmVnaXN0ZXIoKQ0KICAgIHsNCg0KICAgICAgICBy
ZXR1cm4gWDg2UmVnaXN0ZXJzOjp4bW0xNTsNCg0KDQojbGluZSAxMDMgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJs
ZXIuaCINCiAgICB9DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkZQUmVn
aXN0ZXJzKCkgeyByZXR1cm4gbGFzdEZQUmVnaXN0ZXIoKSAtIGZpcnN0RlBSZWdpc3RlcigpICsg
MTsgfQ0KICAgIA0KICAgIHN0YXRpYyBjb25zdCBjaGFyKiBncHJOYW1lKFJlZ2lzdGVySUQgaWQp
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBuYW1lRm9yUmVnaXN0ZXJbbnVtYmVyT2ZSZWdpc3RlcnMoKV0gPSB7DQoNCiAgICAgICAg
InJheCIsICJyY3giLCAicmR4IiwgInJieCIsICJyc3AiLCAicmJwIiwgInJzaSIsICJyZGkiLCAi
cjgiLCAicjkiLCAicjEwIiwgInIxMSIsICJyMTIiLCAicjEzIiwgInIxNCIsICJyMTUiLA0KDQog
ICAgICAgIH07DQogICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbaWRdOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzcHJOYW1lKFNQUmVnaXN0ZXJJRCBpZCkNCiAgICB7DQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVG
b3JSZWdpc3RlcltudW1iZXJPZlNQUmVnaXN0ZXJzKCldID0gew0KDQogICAgICAgICJlaXAiLCAi
ZWZsYWdzIiwNCg0KICAgICAgICB9Ow0KICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW2lk
XTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGNvbnN0IGNoYXIqIGZwck5hbWUoRlBSZWdpc3Rl
cklEIHJlZykNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IG5hbWVGb3JSZWdpc3RlcltudW1iZXJPZkZQUmVnaXN0ZXJzKCldID0gew0K
DQogICAgICAgICJ4bW0wIiwgInhtbTEiLCAieG1tMiIsICJ4bW0zIiwgInhtbTQiLCAieG1tNSIs
ICJ4bW02IiwgInhtbTciLCAieG1tOCIsICJ4bW05IiwgInhtbTEwIiwgInhtbTExIiwgInhtbTEy
IiwgInhtbTEzIiwgInhtbTE0IiwgInhtbTE1IiwNCg0KICAgICAgICB9Ow0KICAgICAgICByZXR1
cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107DQogICAgfQ0KICAgIA0KICAgIHR5cGVkZWYgZW51bSB7
DQogICAgICAgIENvbmRpdGlvbk8sDQogICAgICAgIENvbmRpdGlvbk5PLA0KICAgICAgICBDb25k
aXRpb25CLA0KICAgICAgICBDb25kaXRpb25BRSwNCiAgICAgICAgQ29uZGl0aW9uRSwNCiAgICAg
ICAgQ29uZGl0aW9uTkUsDQogICAgICAgIENvbmRpdGlvbkJFLA0KICAgICAgICBDb25kaXRpb25B
LA0KICAgICAgICBDb25kaXRpb25TLA0KICAgICAgICBDb25kaXRpb25OUywNCiAgICAgICAgQ29u
ZGl0aW9uUCwNCiAgICAgICAgQ29uZGl0aW9uTlAsDQogICAgICAgIENvbmRpdGlvbkwsDQogICAg
ICAgIENvbmRpdGlvbkdFLA0KICAgICAgICBDb25kaXRpb25MRSwNCiAgICAgICAgQ29uZGl0aW9u
RywNCg0KICAgICAgICBDb25kaXRpb25DICA9IENvbmRpdGlvbkIsDQogICAgICAgIENvbmRpdGlv
bk5DID0gQ29uZGl0aW9uQUUsDQogICAgfSBDb25kaXRpb247DQoNCnByaXZhdGU6DQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdHlwZWRlZiBlbnVtIHsNCiAgICAg
ICAgT1BfQUREX0ViR2IgICAgICAgICAgICAgICAgICAgICA9IDB4MDAsDQogICAgICAgIE9QX0FE
RF9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDAxLA0KICAgICAgICBPUF9BRERfR3ZFdiAg
ICAgICAgICAgICAgICAgICAgID0gMHgwMywNCiAgICAgICAgT1BfQUREX0VBWEl2ICAgICAgICAg
ICAgICAgICAgICA9IDB4MDUsDQogICAgICAgIE9QX09SX0V2R2IgICAgICAgICAgICAgICAgICAg
ICAgPSAweDA4LA0KICAgICAgICBPUF9PUl9Fdkd2ICAgICAgICAgICAgICAgICAgICAgID0gMHgw
OSwNCiAgICAgICAgT1BfT1JfR3ZFdiAgICAgICAgICAgICAgICAgICAgICA9IDB4MEIsDQogICAg
ICAgIE9QX09SX0VBWEl2ICAgICAgICAgICAgICAgICAgICAgPSAweDBELA0KICAgICAgICBPUF8y
QllURV9FU0NBUEUgICAgICAgICAgICAgICAgID0gMHgwRiwNCiAgICAgICAgT1BfQU5EX0V2R2Ig
ICAgICAgICAgICAgICAgICAgICA9IDB4MjAsDQogICAgICAgIE9QX0FORF9Fdkd2ICAgICAgICAg
ICAgICAgICAgICAgPSAweDIxLA0KICAgICAgICBPUF9BTkRfR3ZFdiAgICAgICAgICAgICAgICAg
ICAgID0gMHgyMywNCiAgICAgICAgT1BfU1VCX0V2R2IgICAgICAgICAgICAgICAgICAgICA9IDB4
MjgsDQogICAgICAgIE9QX1NVQl9Fdkd2ICAgICAgICAgICAgICAgICAgICAgPSAweDI5LA0KICAg
ICAgICBPUF9TVUJfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHgyQiwNCiAgICAgICAgT1Bf
U1VCX0VBWEl2ICAgICAgICAgICAgICAgICAgICA9IDB4MkQsDQogICAgICAgIFBSRV9QUkVESUNU
X0JSQU5DSF9OT1RfVEFLRU4gICAgPSAweDJFLA0KICAgICAgICBPUF9YT1JfRXZHYiAgICAgICAg
ICAgICAgICAgICAgID0gMHgzMCwNCiAgICAgICAgT1BfWE9SX0V2R3YgICAgICAgICAgICAgICAg
ICAgICA9IDB4MzEsDQogICAgICAgIE9QX1hPUl9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAw
eDMzLA0KICAgICAgICBPUF9YT1JfRUFYSXYgICAgICAgICAgICAgICAgICAgID0gMHgzNSwNCiAg
ICAgICAgT1BfQ01QX0V2R3YgICAgICAgICAgICAgICAgICAgICA9IDB4MzksDQogICAgICAgIE9Q
X0NNUF9HdkV2ICAgICAgICAgICAgICAgICAgICAgPSAweDNCLA0KICAgICAgICBPUF9DTVBfRUFY
SXYgICAgICAgICAgICAgICAgICAgID0gMHgzRCwNCg0KICAgICAgICBQUkVfUkVYICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMHg0MCwNCiNsaW5lIDIwNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0K
ICAgICAgICBPUF9QVVNIX0VBWCAgICAgICAgICAgICAgICAgICAgID0gMHg1MCwNCiAgICAgICAg
T1BfUE9QX0VBWCAgICAgICAgICAgICAgICAgICAgICA9IDB4NTgsDQoNCiAgICAgICAgT1BfTU9W
U1hEX0d2RXYgICAgICAgICAgICAgICAgICA9IDB4NjMsDQojbGluZSAyMTEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3Nl
bWJsZXIuaCINCiAgICAgICAgUFJFX0dTICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NjUs
DQogICAgICAgIFBSRV9PUEVSQU5EX1NJWkUgICAgICAgICAgICAgICAgPSAweDY2LA0KICAgICAg
ICBQUkVfU1NFXzY2ICAgICAgICAgICAgICAgICAgICAgID0gMHg2NiwNCiAgICAgICAgT1BfUFVT
SF9JeiAgICAgICAgICAgICAgICAgICAgICA9IDB4NjgsDQogICAgICAgIE9QX0lNVUxfR3ZFdkl6
ICAgICAgICAgICAgICAgICAgPSAweDY5LA0KICAgICAgICBPUF9HUk9VUDFfRWJJYiAgICAgICAg
ICAgICAgICAgID0gMHg4MCwNCiAgICAgICAgT1BfR1JPVVAxX0V2SXogICAgICAgICAgICAgICAg
ICA9IDB4ODEsDQogICAgICAgIE9QX0dST1VQMV9FdkliICAgICAgICAgICAgICAgICAgPSAweDgz
LA0KICAgICAgICBPUF9URVNUX0ViR2IgICAgICAgICAgICAgICAgICAgID0gMHg4NCwNCiAgICAg
ICAgT1BfVEVTVF9Fdkd2ICAgICAgICAgICAgICAgICAgICA9IDB4ODUsDQogICAgICAgIE9QX1hD
SEdfRXZHYiAgICAgICAgICAgICAgICAgICAgPSAweDg2LA0KICAgICAgICBPUF9YQ0hHX0V2R3Yg
ICAgICAgICAgICAgICAgICAgID0gMHg4NywNCiAgICAgICAgT1BfTU9WX0ViR2IgICAgICAgICAg
ICAgICAgICAgICA9IDB4ODgsDQogICAgICAgIE9QX01PVl9Fdkd2ICAgICAgICAgICAgICAgICAg
ICAgPSAweDg5LA0KICAgICAgICBPUF9NT1ZfR3ZFdiAgICAgICAgICAgICAgICAgICAgID0gMHg4
QiwNCiAgICAgICAgT1BfTEVBICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4OEQsDQogICAg
ICAgIE9QX0dST1VQMUFfRXYgICAgICAgICAgICAgICAgICAgPSAweDhGLA0KICAgICAgICBPUF9O
T1AgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg5MCwNCiAgICAgICAgT1BfWENIR19FQVgg
ICAgICAgICAgICAgICAgICAgICA9IDB4OTAsDQogICAgICAgIE9QX1BBVVNFICAgICAgICAgICAg
ICAgICAgICAgICAgPSAweDkwLA0KICAgICAgICBPUF9DRFEgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMHg5OSwNCiAgICAgICAgT1BfTU9WX0VBWE92ICAgICAgICAgICAgICAgICAgICA9IDB4
QTEsDQogICAgICAgIE9QX01PVl9PdkVBWCAgICAgICAgICAgICAgICAgICAgPSAweEEzLA0KICAg
ICAgICBPUF9URVNUX0FMSWIgICAgICAgICAgICAgICAgICAgID0gMHhBOCwNCiAgICAgICAgT1Bf
VEVTVF9FQVhJdiAgICAgICAgICAgICAgICAgICA9IDB4QTksDQogICAgICAgIE9QX01PVl9FQVhJ
diAgICAgICAgICAgICAgICAgICAgPSAweEI4LA0KICAgICAgICBPUF9HUk9VUDJfRXZJYiAgICAg
ICAgICAgICAgICAgID0gMHhDMSwNCiAgICAgICAgT1BfUkVUICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDB4QzMsDQogICAgICAgIE9QX0dST1VQMTFfRXZJYiAgICAgICAgICAgICAgICAgPSAw
eEM2LA0KICAgICAgICBPUF9HUk9VUDExX0V2SXogICAgICAgICAgICAgICAgID0gMHhDNywNCiAg
ICAgICAgT1BfSU5UMyAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4Q0MsDQogICAgICAgIE9Q
X0dST1VQMl9FdjEgICAgICAgICAgICAgICAgICAgPSAweEQxLA0KICAgICAgICBPUF9HUk9VUDJf
RXZDTCAgICAgICAgICAgICAgICAgID0gMHhEMywNCiAgICAgICAgT1BfRVNDQVBFX0Q5ICAgICAg
ICAgICAgICAgICAgICA9IDB4RDksDQogICAgICAgIE9QX0VTQ0FQRV9ERCAgICAgICAgICAgICAg
ICAgICAgPSAweERELA0KICAgICAgICBPUF9DQUxMX3JlbDMyICAgICAgICAgICAgICAgICAgID0g
MHhFOCwNCiAgICAgICAgT1BfSk1QX3JlbDMyICAgICAgICAgICAgICAgICAgICA9IDB4RTksDQog
ICAgICAgIFBSRV9MT0NLICAgICAgICAgICAgICAgICAgICAgICAgPSAweEYwLA0KICAgICAgICBQ
UkVfU1NFX0YyICAgICAgICAgICAgICAgICAgICAgID0gMHhGMiwNCiAgICAgICAgUFJFX1NTRV9G
MyAgICAgICAgICAgICAgICAgICAgICA9IDB4RjMsDQogICAgICAgIE9QX0hMVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAweEY0LA0KICAgICAgICBPUF9HUk9VUDNfRWIgICAgICAgICAgICAg
ICAgICAgID0gMHhGNiwNCiAgICAgICAgT1BfR1JPVVAzX0ViSWIgICAgICAgICAgICAgICAgICA9
IDB4RjYsDQogICAgICAgIE9QX0dST1VQM19FdiAgICAgICAgICAgICAgICAgICAgPSAweEY3LA0K
ICAgICAgICBPUF9HUk9VUDNfRXZJeiAgICAgICAgICAgICAgICAgID0gMHhGNywgDQogICAgICAg
IE9QX0dST1VQNV9FdiAgICAgICAgICAgICAgICAgICAgPSAweEZGLA0KICAgIH0gT25lQnl0ZU9w
Y29kZUlEOw0KDQogICAgdHlwZWRlZiBlbnVtIHsNCiAgICAgICAgT1AyX1VEMiAgICAgICAgICAg
ICA9IDB4QiwNCiAgICAgICAgT1AyX01PVlNEX1ZzZFdzZCAgICA9IDB4MTAsDQogICAgICAgIE9Q
Ml9NT1ZTRF9Xc2RWc2QgICAgPSAweDExLA0KICAgICAgICBPUDJfTU9WU1NfVnNkV3NkICAgID0g
MHgxMCwNCiAgICAgICAgT1AyX01PVlNTX1dzZFZzZCAgICA9IDB4MTEsDQogICAgICAgIE9QMl9N
T1ZBUERfVnBkV3BkICAgPSAweDI4LA0KICAgICAgICBPUDJfTU9WQVBTX1ZwZFdwZCAgID0gMHgy
OCwNCiAgICAgICAgT1AyX0NWVFNJMlNEX1ZzZEVkICA9IDB4MkEsDQogICAgICAgIE9QMl9DVlRU
U0QyU0lfR2RXc2QgPSAweDJDLA0KICAgICAgICBPUDJfQ1ZUVFNTMlNJX0dkV3NkID0gMHgyQywN
CiAgICAgICAgT1AyX1VDT01JU0RfVnNkV3NkICA9IDB4MkUsDQogICAgICAgIE9QMl9SRFRTQyAg
ICAgICAgICAgPSAweDMxLA0KICAgICAgICBPUDJfM0JZVEVfRVNDQVBFXzNBID0gMHgzQSwNCiAg
ICAgICAgT1AyX0NNT1ZDQyAgICAgICAgICA9IDB4NDAsDQogICAgICAgIE9QMl9BRERTRF9Wc2RX
c2QgICAgPSAweDU4LA0KICAgICAgICBPUDJfTVVMU0RfVnNkV3NkICAgID0gMHg1OSwNCiAgICAg
ICAgT1AyX0NWVFNEMlNTX1ZzZFdzZCA9IDB4NUEsDQogICAgICAgIE9QMl9DVlRTUzJTRF9Wc2RX
c2QgPSAweDVBLA0KICAgICAgICBPUDJfU1VCU0RfVnNkV3NkICAgID0gMHg1QywNCiAgICAgICAg
T1AyX0RJVlNEX1ZzZFdzZCAgICA9IDB4NUUsDQogICAgICAgIE9QMl9NT1ZNU0tQRF9WZEVkICAg
PSAweDUwLA0KICAgICAgICBPUDJfU1FSVFNEX1ZzZFdzZCAgID0gMHg1MSwNCiAgICAgICAgT1Ay
X0FORFBTX1ZwZFdwZCAgICA9IDB4NTQsDQogICAgICAgIE9QMl9BTkROUERfVnBkV3BkICAgPSAw
eDU1LA0KICAgICAgICBPUDJfT1JQU19WcGRXcGQgICAgID0gMHg1NiwNCiAgICAgICAgT1AyX1hP
UlBEX1ZwZFdwZCAgICA9IDB4NTcsDQogICAgICAgIE9QMl9NT1ZEX1ZkRWQgICAgICAgPSAweDZF
LA0KICAgICAgICBPUDJfTU9WRF9FZFZkICAgICAgID0gMHg3RSwNCiAgICAgICAgT1AyX0pDQ19y
ZWwzMiAgICAgICA9IDB4ODAsDQogICAgICAgIE9QX1NFVENDICAgICAgICAgICAgPSAweDkwLA0K
ICAgICAgICBPUDJfQ1BVSUQgICAgICAgICAgID0gMHhBMiwNCiAgICAgICAgT1AyXzNCWVRFX0VT
Q0FQRV9BRSA9IDB4QUUsDQogICAgICAgIE9QMl9JTVVMX0d2RXYgICAgICAgPSAweEFGLA0KICAg
ICAgICBPUDJfQ01QWENIR2IgICAgICAgID0gMHhCMCwNCiAgICAgICAgT1AyX0NNUFhDSEcgICAg
ICAgICA9IDB4QjEsDQogICAgICAgIE9QMl9CVFIgICAgICAgICAgICAgPSAweEIzLA0KICAgICAg
ICBPUDJfTU9WWlhfR3ZFYiAgICAgID0gMHhCNiwNCiAgICAgICAgT1AyX1BPUENOVCAgICAgICAg
ICA9IDB4QjgsDQogICAgICAgIE9QMl9HUk9VUF9CVF9FdkliICAgPSAweEJBLA0KICAgICAgICBP
UDJfQlRfRXZFdiAgICAgICAgID0gMHhBMywNCiAgICAgICAgT1AyX0JTRiAgICAgICAgICAgICA9
IDB4QkMsDQogICAgICAgIE9QMl9UWkNOVCAgICAgICAgICAgPSAweEJDLA0KICAgICAgICBPUDJf
QlNSICAgICAgICAgICAgID0gMHhCRCwNCiAgICAgICAgT1AyX0xaQ05UICAgICAgICAgICA9IDB4
QkQsDQogICAgICAgIE9QMl9NT1ZTWF9HdkViICAgICAgPSAweEJFLA0KICAgICAgICBPUDJfTU9W
WlhfR3ZFdyAgICAgID0gMHhCNywNCiAgICAgICAgT1AyX01PVlNYX0d2RXcgICAgICA9IDB4QkYs
DQogICAgICAgIE9QMl9YQUREYiAgICAgICAgICAgPSAweEMwLA0KICAgICAgICBPUDJfWEFERCAg
ICAgICAgICAgID0gMHhDMSwNCiAgICAgICAgT1AyX1BFWFRSV19HZFVkSWIgICA9IDB4QzUsDQog
ICAgICAgIE9QMl9CU1dBUCAgICAgICAgICAgPSAweEM4LA0KICAgICAgICBPUDJfUFNMTFFfVWRx
SWIgICAgID0gMHg3MywNCiAgICAgICAgT1AyX1BTUkxRX1VkcUliICAgICA9IDB4NzMsDQogICAg
ICAgIE9QMl9QT1JfVmRxV2RxICAgICAgPSAwWEVCLA0KICAgIH0gVHdvQnl0ZU9wY29kZUlEOw0K
ICAgIA0KICAgIHR5cGVkZWYgZW51bSB7DQogICAgICAgIE9QM19ST1VORFNTX1Zzc1dzc0liID0g
MHgwQSwNCiAgICAgICAgT1AzX1JPVU5EU0RfVnNkV3NkSWIgPSAweDBCLA0KICAgICAgICBPUDNf
TEZFTkNFICAgICAgICAgICA9IDB4RTgsDQogICAgICAgIE9QM19NRkVOQ0UgICAgICAgICAgID0g
MHhGMCwNCiAgICAgICAgT1AzX1NGRU5DRSAgICAgICAgICAgPSAweEY4LA0KICAgIH0gVGhyZWVC
eXRlT3Bjb2RlSUQ7DQoNCiAgICBzdHJ1Y3QgVmV4UHJlZml4IHsNCiAgICAgICAgZW51bSA6IHVp
bnQ4X3Qgew0KICAgICAgICAgICAgVHdvQnl0ZXMgPSAweEM1LA0KICAgICAgICAgICAgVGhyZWVC
eXRlcyA9IDB4QzQNCiAgICAgICAgfTsNCiAgICB9Ow0KICAgIGVudW0gY2xhc3MgVmV4SW1wbGll
ZEJ5dGVzIDogdWludDhfdCB7DQogICAgICAgIFR3b0J5dGVzT3AgPSAxLA0KICAgICAgICBUaHJl
ZUJ5dGVzT3AzOCA9IDIsDQogICAgICAgIFRocmVlQnl0ZXNPcDNBID0gMw0KICAgIH07DQogICAg
DQogICAgVHdvQnl0ZU9wY29kZUlEIGNtb3ZjYyhDb25kaXRpb24gY29uZCkNCiAgICB7DQogICAg
ICAgIHJldHVybiAoVHdvQnl0ZU9wY29kZUlEKShPUDJfQ01PVkNDICsgY29uZCk7DQogICAgfQ0K
DQogICAgVHdvQnl0ZU9wY29kZUlEIGpjY1JlbDMyKENvbmRpdGlvbiBjb25kKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIChUd29CeXRlT3Bjb2RlSUQpKE9QMl9KQ0NfcmVsMzIgKyBjb25kKTsNCiAg
ICB9DQoNCiAgICBUd29CeXRlT3Bjb2RlSUQgc2V0Y2NPcGNvZGUoQ29uZGl0aW9uIGNvbmQpDQog
ICAgew0KICAgICAgICByZXR1cm4gKFR3b0J5dGVPcGNvZGVJRCkoT1BfU0VUQ0MgKyBjb25kKTsN
CiAgICB9DQoNCiAgICB0eXBlZGVmIGVudW0gew0KICAgICAgICBHUk9VUDFfT1BfQUREID0gMCwN
CiAgICAgICAgR1JPVVAxX09QX09SICA9IDEsDQogICAgICAgIEdST1VQMV9PUF9BREMgPSAyLA0K
ICAgICAgICBHUk9VUDFfT1BfQU5EID0gNCwNCiAgICAgICAgR1JPVVAxX09QX1NVQiA9IDUsDQog
ICAgICAgIEdST1VQMV9PUF9YT1IgPSA2LA0KICAgICAgICBHUk9VUDFfT1BfQ01QID0gNywNCg0K
ICAgICAgICBHUk9VUDFBX09QX1BPUCA9IDAsDQogICAgICAgIA0KICAgICAgICBHUk9VUDJfT1Bf
Uk9MID0gMCwNCiAgICAgICAgR1JPVVAyX09QX1JPUiA9IDEsDQogICAgICAgIEdST1VQMl9PUF9S
Q0wgPSAyLA0KICAgICAgICBHUk9VUDJfT1BfUkNSID0gMywNCiAgICAgICAgDQogICAgICAgIEdS
T1VQMl9PUF9TSEwgPSA0LA0KICAgICAgICBHUk9VUDJfT1BfU0hSID0gNSwNCiAgICAgICAgR1JP
VVAyX09QX1NBUiA9IDcsDQoNCiAgICAgICAgR1JPVVAzX09QX1RFU1QgPSAwLA0KICAgICAgICBH
Uk9VUDNfT1BfTk9UICA9IDIsDQogICAgICAgIEdST1VQM19PUF9ORUcgID0gMywNCiAgICAgICAg
R1JPVVAzX09QX0RJViA9IDYsDQogICAgICAgIEdST1VQM19PUF9JRElWID0gNywNCg0KICAgICAg
ICBHUk9VUDVfT1BfQ0FMTE4gPSAyLA0KICAgICAgICBHUk9VUDVfT1BfSk1QTiAgPSA0LA0KICAg
ICAgICBHUk9VUDVfT1BfUFVTSCAgPSA2LA0KDQogICAgICAgIEdST1VQMTFfTU9WID0gMCwNCg0K
ICAgICAgICBHUk9VUDE0X09QX1BTTExRID0gNiwNCiAgICAgICAgR1JPVVAxNF9PUF9QU1JMUSA9
IDIsDQoNCiAgICAgICAgRVNDQVBFX0Q5X0ZTVFBfc2luZ2xlUmVhbCA9IDMsDQogICAgICAgIEVT
Q0FQRV9ERF9GU1RQX2RvdWJsZVJlYWwgPSAzLA0KDQogICAgICAgIEdST1VQX0JUX09QX0JUID0g
NCwNCiAgICB9IEdyb3VwT3Bjb2RlSUQ7DQogICAgDQogICAgY2xhc3MgWDg2SW5zdHJ1Y3Rpb25G
b3JtYXR0ZXI7DQpwdWJsaWM6DQoNCiAgICBYODZBc3NlbWJsZXIoKQ0KICAgICAgICA6IG1faW5k
ZXhPZkxhc3RXYXRjaHBvaW50KCgtMjE0NzQ4MzY0NyAtIDEpKQ0KICAgICAgICAsIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50KCgtMjE0NzQ4MzY0NyAtIDEpKQ0KICAgIHsNCiAgICB9DQog
ICAgDQogICAgQXNzZW1ibGVyQnVmZmVyJiBidWZmZXIoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5t
X2J1ZmZlcjsgfQ0KDQogICAgDQoNCiAgICB2b2lkIHB1c2hfcihSZWdpc3RlcklEIHJlZykNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9QVVNIX0VBWCwgcmVnKTsNCiAg
ICB9DQoNCiAgICB2b2lkIHBvcF9yKFJlZ2lzdGVySUQgcmVnKQ0KICAgIHsNCiAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX1BPUF9FQVgsIHJlZyk7DQogICAgfQ0KDQogICAgdm9pZCBw
dXNoX2kzMihpbnQgaW1tKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X1BVU0hfSXopOw0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgIH0N
Cg0KICAgIHZvaWQgcHVzaF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQog
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDVfRXYsIEdST1VQNV9PUF9QVVNI
LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgcG9wX20oaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMUFfRXYsIEdST1VQMUFfT1BfUE9QLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIA0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoN
CiAgICB2b2lkIGFkZGxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsN
CiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FERF9Fdkd2LCBzcmMsIGRzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCBhZGRsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQURE
X0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhZGRsX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9BRERfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KICAg
IA0KDQoNCg0KDQoNCiNsaW5lIDQ2NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCBh
ZGRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0V2R3YsIHNyYywgYmFzZSwg
b2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FERF9Fdkd2LCBzcmMsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZGJfcm0oUmVnaXN0
ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDgoT1BfQUREX0ViR2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAg
ICB9DQoNCiAgICB2b2lkIGFkZGJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9BRERfRWJHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBhZGR3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDgo
T1BfQUREX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZHdf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBS
RV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX0FERF9F
dkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lk
IGFkZGxfaXIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBpZiAoQ0FO
X1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURELCBkc3QpOw0KICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
aWYgKGRzdCA9PSBYODZSZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQUREX0VBWEl2KTsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQs
IGRzdCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgdm9pZCBhZGRsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7DQog
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgICAgICB9DQogICAg
fQ0KDQogICAgdm9pZCBhZGRsX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6
LCBHUk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAg
dm9pZCBhZGRiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDgoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9P
UF9BREQsIGJhc2UsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQURELCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVS
QU5EX1NJWkUpOw0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0KICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X0FERCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDgoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGJhc2UsIG9mZnNldCk7DQogICAgICAg
ICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOw0KICAgICAgICB9DQogICAgfQ0KDQog
ICAgdm9pZCBhZGR3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIo
aW1tKSkgew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9HUk9VUDFfRXZJ
YiwgR1JPVVAxX09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FE
RCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMTYoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgdm9pZCBhZGRxX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0FERF9Fdkd2LCBzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCBhZGRxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0LCBi
YXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkcV9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3Qp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfR3ZFdiwgZHN0
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBhZGRxX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0K
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9BRERfRXZHdiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBhZGRxX2lyKGludCBpbW0s
IFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMy
KGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkliLCBHUk9VUDFfT1BfQURELCBkc3QpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKGRzdCA9PSBYODZS
ZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9BRERfRUFYSXYpOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBkc3QpOw0KICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0N
Cg0KICAgIHZvaWQgYWRkcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
DQogICAgew0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0KICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9B
REQsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICB2b2lkIGFkZHFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BREQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsN
CiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNl
IHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfQURELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgICAgICB9DQogICAgfQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDY0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCBh
bmRsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfRXZHdiwgc3JjLCBkc3QpOw0KICAgIH0NCg0KICAg
IHZvaWQgYW5kbF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0FORF9HdkV2LCBkc3Qs
IGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmRsX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRz
dCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9BTkRfR3ZFdiwgZHN0
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmR3X21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAgIGFuZGxf
bXIob2Zmc2V0LCBiYXNlLCBkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYW5kd19tcihpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0
ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRf
U0laRSk7DQogICAgICAgIGFuZGxfbXIob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUsIGRzdCk7
DQogICAgfQ0KDQogICAgdm9pZCBhbmRsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
QU5EX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZGxfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0FORF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIGFuZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsN
CiAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBh
bmR3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZp
eChQUkVfT1BFUkFORF9TSVpFKTsNCiAgICAgICAgYW5kbF9ybShzcmMsIG9mZnNldCwgYmFzZSwg
aW5kZXgsIHNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZGJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9BTkRfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAg
IHZvaWQgYW5kYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQU5EX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
Ow0KICAgIH0NCg0KICAgIHZvaWQgYW5kbF9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAg
ICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGRz
dCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAgIH0g
ZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXos
IEdST1VQMV9PUF9BTkQsIGRzdCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBhbmRsX2ltKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9F
WFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BTkQsIGJh
c2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0K
ICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBhbmRsX2ltKGludCBpbW0sIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgICAgICB9
DQogICAgfQ0KDQogICAgdm9pZCBhbmR3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9T
SVpFKTsNCiAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwg
YmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsN
CiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lk
IGFuZHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X09QRVJBTkRfU0laRSk7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MTYoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgYW5kYl9pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIG9mZnNldCk7DQog
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIGFu
ZGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAxX0ViSWIsIEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsN
CiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgIH0NCg0KDQogICAgdm9p
ZCBhbmRxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0FORF9Fdkd2LCBzcmMsIGRzdCk7DQogICAgfQ0K
DQogICAgdm9pZCBhbmRxX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBkc3QpOw0KICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9IGVsc2Ugew0K
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9BTkQsIGRzdCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0p
Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBhbmRxX21yKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAg
IHZvaWQgYW5kcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9BTkRfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmRxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgYW5k
cV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9BTkRfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAg
fQ0KDQogICAgdm9pZCBhbmRxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X0FORCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiYXNlLCBvZmZzZXQpOw0KICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0K
ICAgIHZvaWQgYW5kcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9F
WFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
Ow0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXos
IEdST1VQMV9PUF9BTkQsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgODQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoNCiAgICB2b2lk
IGRlY19yKFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX09SLCBkc3QpOw0KICAgIH0NCg0KDQogICAgdm9p
ZCBkZWNxX3IoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDVfRXYsIEdST1VQMV9PUF9PUiwgZHN0KTsNCiAgICB9DQojbGluZSA4
NTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNz
ZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIA0KICAgIHZvaWQgaWxsZWdhbEluc3RydWN0
aW9uKCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfVUQyKTsNCiAg
ICB9DQoNCiAgICB2b2lkIGluY19yKFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQNV9FdiwgR1JPVVAxX09QX0FERCwgZHN0KTsNCiAg
ICB9DQoNCg0KICAgIHZvaWQgaW5jcV9yKFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVA1X0V2LCBHUk9VUDFfT1BfQURELCBkc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgaW5jcV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkN
CiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JP
VVAxX09QX0FERCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGluY3FfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQNV9FdiwgR1JPVVAx
X09QX0FERCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCiNsaW5lIDg4NCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJs
ZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCBuZWdsX3IoUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNf
T1BfTkVHLCBkc3QpOw0KICAgIH0NCg0KDQogICAgdm9pZCBuZWdxX3IoUmVnaXN0ZXJJRCBkc3Qp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdS
T1VQM19PUF9ORUcsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBuZWdxX20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAg
IHZvaWQgbmVncV9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
R1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQog
ICAgfQ0KI2xpbmUgOTA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoNCiAgICB2b2lkIG5lZ2xfbShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfTkVHLCBiYXNlLCBvZmZzZXQpOw0KICAg
IH0NCg0KICAgIHZvaWQgbmVnbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQM19FdiwgR1JPVVAzX09QX05FRywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgbmVnd19tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsN
CiAgICAgICAgbmVnbF9tKG9mZnNldCwgYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBuZWd3X20o
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQog
ICAgICAgIG5lZ2xfbShvZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7DQogICAgfQ0KDQogICAg
dm9pZCBuZWdiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19FYiwgR1JPVVAzX09QX05FRywgYmFzZSwg
b2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG5lZ2JfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9ORUcsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG5vdGxfcihSZWdpc3RlcklEIGRz
dCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdS
T1VQM19PUF9OT1QsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBub3RsX20oaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQM19FdiwgR1JPVVAzX09QX05PVCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2
b2lkIG5vdGxfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9
DQoNCiAgICB2b2lkIG5vdHdfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0K
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAgIG5v
dGxfbShvZmZzZXQsIGJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgbm90d19tKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICBub3Rs
X20ob2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgbm90Yl9t
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDNfRWIsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7DQog
ICAgfQ0KDQogICAgdm9pZCBub3RiX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAzX0ViLCBHUk9VUDNfT1BfTk9ULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7DQogICAgfQ0KDQoNCiAgICB2b2lkIG5vdHFfcihSZWdpc3RlcklEIGRzdCkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19FdiwgR1JPVVAzX09Q
X05PVCwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG5vdHFfbShpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDNfRXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBu
b3RxX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNf
RXYsIEdST1VQM19PUF9OT1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoj
bGluZSA5OTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgb3JsX3JyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBvcmxfbXIoaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7DQog
ICAgfQ0KDQogICAgdm9pZCBvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQg
b3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9
DQoNCiAgICB2b2lkIG9yd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJ
RCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOw0KICAgICAgICBvcmxfcm0oc3JjLCBvZmZzZXQsIGJhc2UpOw0KICAgIH0NCg0KICAgIHZv
aWQgb3J3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnBy
ZWZpeChQUkVfT1BFUkFORF9TSVpFKTsNCiAgICAgICAgb3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNl
LCBpbmRleCwgc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAg
IHZvaWQgb3JiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9PUl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsN
CiAgICB9DQoNCiAgICB2b2lkIG9ybF9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7
DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgZHN0KTsN
CiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNl
IHsNCiAgICAgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpDQogICAgICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0VBWEl2KTsNCiAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXos
IEdST1VQMV9PUF9PUiwgZHN0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMy
KGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYmFzZSwg
b2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9
DQoNCiAgICB2b2lkIG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQog
ICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYmFzZSwgb2Zm
c2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAg
fSBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMTYoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgb3J3X2ltKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOw0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOw0KICAg
ICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBvcmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FYkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yYl9pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkN
CiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JP
VVAxX09QX09SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCg0KICAgIHZvaWQgb3JxX3JyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDY0KE9QX09SX0V2R3YsIHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG9ycV9tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfT1JfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQp
Ow0KICAgIH0NCg0KICAgIHZvaWQgb3JxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX09SX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgb3JxX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9PUl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQog
ICAgdm9pZCBvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfT1JfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7DQogICAgfQ0KDQogICAgdm9pZCBvcnFfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkp
IHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBH
Uk9VUDFfT1BfT1IsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiYXNlLCBvZmZzZXQpOw0K
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAg
IH0NCg0KICAgIHZvaWQgb3JxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAg
fSBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9F
dkl6LCBHUk9VUDFfT1BfT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICB2b2lkIG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBkc3QpOw0KICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgaWYgKGRzdCA9PSBYODZSZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3A2NChPUF9PUl9FQVhJdik7DQogICAgICAgICAgICBlbHNlDQogICAg
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9PUiwgZHN0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7
DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDExOTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
YXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgc3VibF9ycihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfU1VCX0V2R3YsIHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YmxfbXIoaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfR3ZFdiwgZHN0LCBiYXNlLCBvZmZzZXQpOw0K
ICAgIH0NCg0KICAgIHZvaWQgc3VibF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgc3VibF9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1NVQl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAg
dm9pZCBzdWJsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
DQogICAgfQ0KDQogICAgdm9pZCBzdWJ3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09Q
RVJBTkRfU0laRSk7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgc3Vid19ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9TVUJfRXZHdiwgc3JjLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBzdWJiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0V2R2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAg
ICB9DQoNCiAgICB2b2lkIHN1YmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1NVQl9FdkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YmxfaXIoaW50IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpDQogICAgew0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0K
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFf
T1BfU1VCLCBkc3QpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaWYgKGRzdCA9PSBYODZSZWdpc3RlcnM6OmVh
eCkNCiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfU1VCX0VBWEl2KTsN
CiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGRzdCk7DQogICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
c3VibF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAg
ICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZz
ZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6
LCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgc3VibF9pbShp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7
DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgc3Vid19pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJhc2UsIG9mZnNl
dCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOw0KICAgICAgICB9
DQogICAgfQ0KDQogICAgdm9pZCBzdWJ3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICBpZiAoQ0FOX1NJR05f
RVhURU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7
DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxz
ZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9TVUIsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lk
IHN1YmJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VC
LCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQog
ICAgfQ0KDQogICAgdm9pZCBzdWJiX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsN
CiAgICB9DQoNCg0KICAgIHZvaWQgc3VicV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
c3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9TVUJfRXZHdiwg
c3JjLCBkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgc3VicV9tcihpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2
b2lkIHN1YnFfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfU1VCX0d2RXYsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
Ow0KICAgIH0NCg0KICAgIHZvaWQgc3VicV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YnFf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfU1VCX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0N
Cg0KICAgIHZvaWQgc3VicV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgZHN0KTsNCiAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsN
CiAgICAgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpDQogICAgICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfU1VCX0VBWEl2KTsNCiAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJ
eiwgR1JPVVAxX09QX1NVQiwgZHN0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHN1YnFfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9T
VUIsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihp
bW0pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBzdWJxX2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAg
IHsNCiAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsN
CiAgICAgICAgfQ0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzgzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxc
WDg2QXNzZW1ibGVyLmgiDQoNCiAgICB2b2lkIHhvcmxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX1hPUl9F
dkd2LCBzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCB4b3JsX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfWE9SX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIHhvcmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX1hPUl9HdkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9YT1JfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9ybF9y
bShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCg0K
ICAgIHZvaWQgeG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQog
ICAgew0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQg
eG9ybF9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hP
UiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgeG9yd19ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICB4b3JsX3Jt
KHNyYywgb2Zmc2V0LCBiYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJ
WkUpOw0KICAgICAgICB4b3JsX3JtKHNyYywgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOw0K
ICAgIH0NCg0KICAgIHZvaWQgeG9yd19pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9YT1IsIGJh
c2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQog
ICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCB4
b3J3X2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9P
UEVSQU5EX1NJWkUpOw0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0K
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFf
T1BfWE9SLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9YT1IsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTE2
KGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHhvcmJfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9YT1JfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0K
ICAgIHZvaWQgeG9yYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3AoT1BfWE9SX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yYl9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JP
VVAxX0ViSWIsIEdST1VQMV9PUF9YT1IsIGJhc2UsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0
dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcmJfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0ViSWIsIEdS
T1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgIH0NCg0KICAgIHZvaWQgeG9ybF9pcihpbnQgaW1t
LCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9YT1IsIGRzdCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoZHN0ID09IFg4NlJl
Z2lzdGVyczo6ZWF4KQ0KICAgICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9Y
T1JfRUFYSXYpOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgZHN0KTsNCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCg0K
ICAgIHZvaWQgeG9ycV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0K
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YT1JfRXZHdiwgc3JjLCBkc3QpOw0K
ICAgIH0NCg0KICAgIHZvaWQgeG9ycV9pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7
DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgZHN0
KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpDQogICAgICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0VBWEl2KTsNCiAgICAgICAg
ICAgIGVsc2UNCiAgICAgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9V
UDFfRXZJeiwgR1JPVVAxX09QX1hPUiwgZHN0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmlt
bWVkaWF0ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgdm9pZCB4b3JxX2lt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIGlm
IChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1hPUiwgYmFzZSwgb2Zmc2V0KTsN
CiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNl
IHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfWE9SLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICB2b2lkIHhvcnFfaW0o
aW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpDQogICAgew0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkg
ew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9YT1IsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfWE9SLCBi
YXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGUzMihpbW0pOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIHZvaWQgeG9ycV9ybShS
ZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0
KTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0V2R3YsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9HdkV2LCBkZXN0LCBiYXNlLCBvZmZzZXQpOw0KICAg
IH0NCg0KICAgIHZvaWQgeG9ycV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWE9SX0d2RXYsIGRlc3QsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsNCiAgICB9DQojbGluZSAxNTY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoN
CiAgICB2b2lkIGx6Y250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wKE9QMl9MWkNOVCwgZHN0LCBzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQg
bHpjbnRfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9MWkNOVCwgZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0N
Cg0KDQogICAgdm9pZCBsemNudHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0K
ICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOw0KICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfTFpDTlQsIGRzdCwgc3JjKTsNCiAgICB9DQoNCiAg
ICB2b2lkIGx6Y250cV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
ZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOw0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfTFpDTlQsIGRzdCwgYmFzZSwgb2Zmc2V0
KTsNCiAgICB9DQojbGluZSAxNTkxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoNCiAgICB2b2lkIGJz
cl9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX0JTUiwgZHN0LCBzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQg
YnNyX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0JTUiwgZHN0LCBiYXNlLCBvZmZz
ZXQpOw0KICAgIH0NCg0KDQogICAgdm9pZCBic3JxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9CU1Is
IGRzdCwgc3JjKTsNCiAgICB9DQoNCiAgICB2b2lkIGJzcnFfbXIoaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcDY0KE9QMl9CU1IsIGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQojbGluZSAxNjEz
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2Vt
YmxlclxcWDg2QXNzZW1ibGVyLmgiDQoNCiAgICB2b2lkIGJzd2FwbF9yKFJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9CU1dBUCwgZHN0KTsN
CiAgICB9DQoNCg0KICAgIHZvaWQgYnN3YXBxX3IoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQlNXQVAsIGRzdCk7DQogICAgfQ0KI2xp
bmUgMTYyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCB0emNudF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX1NTRV9GMyk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfVFpDTlQs
IGRzdCwgc3JjKTsNCiAgICB9DQoNCg0KICAgIHZvaWQgdHpjbnRxX3JyKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
U1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1RaQ05ULCBkc3Qs
IHNyYyk7DQogICAgfQ0KI2xpbmUgMTYzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9p
ZCBic2ZfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9CU0YsIGRzdCwgc3JjKTsNCiAgICB9DQoNCg0KICAg
IHZvaWQgYnNmcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfQlNGLCBkc3QsIHNyYyk7DQogICAgfQ0K
I2xpbmUgMTY1MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQoNCiAgICB2b2lkIGJ0cnFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX0JUUiwgZHN0LCBzcmMpOw0KICAgIH0NCiNsaW5lIDE2NTggIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxY
ODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgcG9wY250X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0Yz
KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9QT1BDTlQsIGRzdCwgc3JjKTsN
CiAgICB9DQoNCiAgICB2b2lkIHBvcGNudF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjMpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1BPUENOVCwgZHN0LCBi
YXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KDQogICAgdm9pZCBwb3BjbnRxX3JyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX1BPUENOVCwg
ZHN0LCBzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgcG9wY250cV9tcihpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9TU0VfRjMpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJf
UE9QQ05ULCBkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KI2xpbmUgMTY4NCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFz
c2VtYmxlci5oIg0KDQpwcml2YXRlOg0KICAgIHRlbXBsYXRlPEdyb3VwT3Bjb2RlSUQgb3A+DQog
ICAgdm9pZCBzaGlmdEluc3RydWN0aW9uMzIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQogICAg
ew0KICAgICAgICBpZiAoaW1tID09IDEpDQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAyX0V2MSwgb3AsIGRzdCk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdkliLCBvcCwgZHN0KTsNCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IHRlbXBsYXRlPEdyb3VwT3Bjb2RlSUQgb3A+DQogICAgdm9pZCBzaGlmdEluc3RydWN0aW9uMTYo
aW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAgIGlmIChpbW0gPT0gMSkNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDJfRXYxLCBvcCwgZHN0KTsNCiAgICAgICAg
ZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2SWIs
IG9wLCBkc3QpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAg
ICAgICB9DQogICAgfQ0KcHVibGljOg0KDQogICAgdm9pZCBzYXJsX2k4cihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24zMjxHUk9VUDJfT1Bf
U0FSPihpbW0sIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzYXJsX0NMcihSZWdpc3RlcklEIGRz
dCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDJfRXZDTCwg
R1JPVVAyX09QX1NBUiwgZHN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBzaHJsX2k4cihpbnQg
aW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24zMjxH
Uk9VUDJfT1BfU0hSPihpbW0sIGRzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgc2hybF9DTHIo
UmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9TSFIsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzaGxs
X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIHNoaWZ0SW5zdHJ1
Y3Rpb24zMjxHUk9VUDJfT1BfU0hMPihpbW0sIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzaGxs
X0NMcihSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDJfRXZDTCwgR1JPVVAyX09QX1NITCwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IHJvcmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgc2hpZnRJ
bnN0cnVjdGlvbjMyPEdST1VQMl9PUF9ST1I+KGltbSwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IHJvcmxfQ0xyKFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wKE9QX0dST1VQMl9FdkNMLCBHUk9VUDJfT1BfUk9SLCBkc3QpOw0KICAgIH0NCg0KICAg
IHZvaWQgcm9sbF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBz
aGlmdEluc3RydWN0aW9uMzI8R1JPVVAyX09QX1JPTD4oaW1tLCBkc3QpOw0KICAgIH0NCg0KICAg
IHZvaWQgcm9sbF9DTHIoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9ST0wsIGRzdCk7DQogICAgfQ0K
DQogICAgdm9pZCByb2x3X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAg
ICAgIHNoaWZ0SW5zdHJ1Y3Rpb24xNjxHUk9VUDJfT1BfUk9MPihpbW0sIGRzdCk7DQogICAgfQ0K
DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGU8R3JvdXBPcGNvZGVJRCBvcD4NCiAgICB2b2lkIHNo
aWZ0SW5zdHJ1Y3Rpb242NChpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IGlmIChpbW0gPT0gMSkNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dS
T1VQMl9FdjEsIG9wLCBkc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMl9FdkliLCBvcCwgZHN0KTsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCnB1YmxpYzoNCiAg
ICB2b2lkIHNhcnFfQ0xyKFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9TQVIsIGRzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBzYXJxX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQog
ICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb242NDxHUk9VUDJfT1BfU0FSPihpbW0sIGRzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBzaHJxX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQog
ICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb242NDxHUk9VUDJfT1BfU0hSPihpbW0sIGRzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBzaHJxX0NMcihSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMl9FdkNMLCBHUk9VUDJfT1BfU0hSLCBkc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgc2hscV9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBzaGlmdEluc3RydWN0aW9uNjQ8R1JPVVAyX09QX1NITD4oaW1tLCBkc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgc2hscV9DTHIoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDJfRXZDTCwgR1JPVVAyX09QX1NI
TCwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHJvcnFfaThyKGludCBpbW0sIFJlZ2lzdGVySUQg
ZHN0KQ0KICAgIHsNCiAgICAgICAgc2hpZnRJbnN0cnVjdGlvbjY0PEdST1VQMl9PUF9ST1I+KGlt
bSwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHJvcnFfQ0xyKFJlZ2lzdGVySUQgZHN0KQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAyX0V2Q0wsIEdST1VQ
Ml9PUF9ST1IsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCByb2xxX2k4cihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb242NDxHUk9VUDJfT1Bf
Uk9MPihpbW0sIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCByb2xxX0NMcihSZWdpc3RlcklEIGRz
dCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMl9FdkNM
LCBHUk9VUDJfT1BfUk9MLCBkc3QpOw0KICAgIH0NCiNsaW5lIDE4MjggIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJs
ZXIuaCINCg0KICAgIHZvaWQgaW11bGxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9JTVVMX0d2RXYsIGRz
dCwgc3JjKTsNCiAgICB9DQoNCg0KICAgIHZvaWQgaW11bHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1Ay
X0lNVUxfR3ZFdiwgZHN0LCBzcmMpOw0KICAgIH0NCiNsaW5lIDE4NDAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJs
ZXIuaCINCg0KICAgIHZvaWQgaW11bGxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
SU1VTF9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBpbXVsbF9p
MzJyKFJlZ2lzdGVySUQgc3JjLCBpbnQzMl90IHZhbHVlLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9JTVVMX0d2RXZJeiwgZHN0LCBzcmMp
Ow0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMih2YWx1ZSk7DQogICAgfQ0KDQogICAg
dm9pZCBkaXZsX3IoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfRElWLCBkc3QpOw0KICAgIH0NCg0KICAg
IHZvaWQgaWRpdmxfcihSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9JRElWLCBkc3QpOw0KICAgIH0NCg0K
DQogICAgdm9pZCBkaXZxX3IoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXYsIEdST1VQM19PUF9ESVYsIGRzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBpZGl2cV9yKFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAzX0V2LCBHUk9VUDNfT1BfSURJViwgZHN0KTsN
CiAgICB9DQojbGluZSAxODczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoNCiAgICANCg0KICAgIHZv
aWQgY21wbF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQ01QX0V2R3YsIHNyYywgZHN0KTsNCiAgICB9DQoN
CiAgICB2b2lkIGNtcGxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9DTVBfRXZHdiwg
c3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgY21wbF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgc3JjKQ0KICAgIHsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0NNUF9HdkV2LCBzcmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0K
DQogICAgdm9pZCBjbXBsX2lyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAg
ICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0NNUCwgZHN0KTsNCiAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAg
ICAgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpDQogICAgICAgICAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0NNUF9FQVhJdik7DQogICAgICAgICAgICBlbHNlDQog
ICAgICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9V
UDFfT1BfQ01QLCBkc3QpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1t
KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgY21wbF9pcl9mb3JjZTMyKGludCBpbW0s
IFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBkc3QpOw0KICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGUzMihpbW0pOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNtcGxfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF84XzMyKGltbSkpIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0NNUCwg
YmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7
DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgdm9pZCBjbXBiX2ltKGludCBpbW0sIGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAg
ICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNt
cGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGlu
ZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAxX0ViSWIsIEdST1VQMV9PUF9DTVAsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsN
CiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgIH0NCiAgICANCg0KDQoN
Cg0KDQoNCiNsaW5lIDE5NDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgY21wbF9p
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0p
KSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdS
T1VQMV9PUF9DTVAsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0NNUCwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgY21wbF9pbV9mb3JjZTMy
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0NNUCwgYmFzZSwg
b2Zmc2V0KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICB9DQoN
Cg0KICAgIHZvaWQgY21wcV9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9DTVBfRXZHdiwgc3JjLCBkc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgY21wcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQo
T1BfQ01QX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGNtcHFf
cm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjQoT1BfQ01QX0V2R3YsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0N
Cg0KICAgIHZvaWQgY21wcV9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgc3JjKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfQ01QX0d2
RXYsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGNtcHFfaXIoaW50IGlt
bSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhf
MzIoaW1tKSkgew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAx
X0V2SWIsIEdST1VQMV9PUF9DTVAsIGRzdCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1l
ZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoZHN0ID09IFg4
NlJlZ2lzdGVyczo6ZWF4KQ0KICAgICAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0
KE9QX0NNUF9FQVhJdik7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9DTVAsIGRzdCk7DQog
ICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgICAgICB9DQogICAg
fQ0KDQogICAgdm9pZCBjbXBxX2ltKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X0NNUCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgo
aW1tKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBvZmZzZXQpOw0KICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICAgICAgfQ0KICAgIH0NCg0K
ICAgIHZvaWQgY21wcV9pbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9F
WFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
Ow0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxX0V2SXos
IEdST1VQMV9PUF9DTVAsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCIN
Cg0KICAgIHZvaWQgY21wd19pcihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAg
ICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7DQogICAgICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9DTVAsIGRzdCk7DQogICAgICAgICAg
ICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9DTVAsIGRzdCk7
DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUxNihpbW0pOw0KICAgICAgICB9DQog
ICAgfQ0KDQogICAgdm9pZCBjbXB3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsNCiAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX0NNUF9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsNCiAgICB9DQoNCiAgICB2b2lkIGNtcHdfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgew0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQ01QLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7DQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9DTVAsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTE2KGltbSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lk
IHRlc3RsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9URVNUX0V2R3YsIHNyYywgZHN0KTsNCiAgICB9DQog
ICAgDQogICAgdm9pZCB0ZXN0bF9pMzJyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsN
CiAgICAgICAgaWYgKGRzdCA9PSBYODZSZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9URVNUX0VBWEl2KTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwg
ZHN0KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICB9DQoNCiAg
ICB2b2lkIHRlc3RsX2kzMm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0K
ICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQM19Fdkl6LCBHUk9V
UDNfT1BfVEVTVCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
MzIoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIHRlc3RiX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDgoT1BfVEVT
VF9FYkdiLCBzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCB0ZXN0Yl9pbShpbnQgaW1tLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3AoT1BfR1JPVVAzX0ViSWIsIEdST1VQM19PUF9URVNULCBiYXNlLCBvZmZzZXQpOw0K
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7DQogICAgfQ0KICAgIA0KICAgIHZv
aWQgdGVzdGJfaW0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfR1JPVVAzX0ViSWIsIEdST1VQM19PUF9URVNULCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIxMDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgdGVz
dGxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICB9DQoNCg0KICAg
IHZvaWQgdGVzdHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfVEVTVF9Fdkd2LCBzcmMsIGRzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCB0ZXN0cV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1Bf
VEVTVF9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCB0ZXN0cV9p
MzJyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgaWYgKGRzdCA9PSBY
ODZSZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9Q
X1RFU1RfRUFYSXYpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3A2NChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGRzdCk7DQogICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAgfQ0KDQogICAgdm9pZCB0ZXN0cV9pMzJt
KGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQM19Fdkl6LCBHUk9VUDNfT1BfVEVTVCwgYmFz
ZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICB9
DQoNCiAgICB2b2lkIHRlc3RxX2kzMm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRXZJeiwgR1JPVVAzX09QX1RFU1QsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1t
KTsNCiAgICB9DQojbGluZSAyMTQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoNCiAgICB2b2lkIHRl
c3R3X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX1RFU1RfRXZHdiwgc3JjLCBkc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IHRlc3RiX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGlmIChk
c3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpDQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfVEVTVF9BTEliKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wOChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGRzdCk7DQogICAgICAg
IG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIGJ0X2lyKGlu
dCBiaXRPZmZzZXQsIFJlZ2lzdGVySUQgdGVzdFZhbHVlKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0dST1VQX0JUX0V2SWIsIEdS
T1VQX0JUX09QX0JULCB0ZXN0VmFsdWUpOw0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4
KGJpdE9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBidF9pbShpbnQgYml0T2Zmc2V0LCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfR1JPVVBfQlRfRXZJYiwgR1JPVVBfQlRfT1Bf
QlQsIGJhc2UsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoYml0T2Zm
c2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGJ0X2lyKFJlZ2lzdGVySUQgYml0T2Zmc2V0LCBSZWdp
c3RlcklEIHRlc3RWYWx1ZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfQlRfRXZFdiwgYml0T2Zmc2V0LCB0ZXN0VmFsdWUpOw0KICAgIH0NCg0KICAgIHZvaWQgYnRf
aW0oUmVnaXN0ZXJJRCBiaXRPZmZzZXQsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQlRfRXZFdiwgYml0T2Zmc2V0
LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KDQogICAgdm9pZCBidHdfaXIoaW50IGJpdE9mZnNl
dCwgUmVnaXN0ZXJJRCB0ZXN0VmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9HUk9VUF9CVF9FdkliLCBHUk9VUF9CVF9P
UF9CVCwgdGVzdFZhbHVlKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChiaXRPZmZz
ZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgYnR3X2ltKGludCBiaXRPZmZzZXQsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0dST1VQX0JUX0V2SWIsIEdST1VQX0JUX09QX0JULCBi
YXNlLCBvZmZzZXQpOw0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGJpdE9mZnNldCk7
DQogICAgfQ0KDQogICAgdm9pZCBidHdfaXIoUmVnaXN0ZXJJRCBiaXRPZmZzZXQsIFJlZ2lzdGVy
SUQgdGVzdFZhbHVlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1Ay
X0JUX0V2RXYsIGJpdE9mZnNldCwgdGVzdFZhbHVlKTsNCiAgICB9DQoNCiAgICB2b2lkIGJ0d19p
bShSZWdpc3RlcklEIGJpdE9mZnNldCwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0JUX0V2RXYsIGJpdE9mZnNl
dCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQojbGluZSAyMjEzICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgi
DQoNCiAgICB2b2lkIHNldENDX3IoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZHN0KQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChzZXRjY09wY29kZShjb25kKSwgKEdy
b3VwT3Bjb2RlSUQpMCwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHNldGVfcihSZWdpc3RlcklE
IGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoc2V0Y2NPcGNvZGUo
Q29uZGl0aW9uRSksIChHcm91cE9wY29kZUlEKTAsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBz
ZXR6X3IoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBzZXRlX3IoZHN0KTsNCiAgICB9
DQoNCiAgICB2b2lkIHNldG5lX3IoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3A4KHNldGNjT3Bjb2RlKENvbmRpdGlvbk5FKSwgKEdyb3VwT3Bjb2Rl
SUQpMCwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHNldG56X3IoUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBzZXRuZV9yKGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRucF9yKFJl
Z2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChzZXRj
Y09wY29kZShDb25kaXRpb25OUCksIChHcm91cE9wY29kZUlEKTAsIGRzdCk7DQogICAgfQ0KDQog
ICAgdm9pZCBzZXRwX3IoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3A4KHNldGNjT3Bjb2RlKENvbmRpdGlvblApLCAoR3JvdXBPcGNvZGVJRCkwLCBk
c3QpOw0KICAgIH0NCg0KICAgIA0KDQogICAgdm9pZCBjZHEoKQ0KICAgIHsNCiAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0NEUSk7DQogICAgfQ0KDQoNCiAgICB2b2lkIGNxbygpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9DRFEpOw0KICAgIH0NCiNs
aW5lIDIyNjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgZnN0cHMoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0VTQ0FQRV9EOSwgRVNDQVBFX0Q5X0ZTVFBfc2luZ2xlUmVhbCwgYmFzZSwgb2Zmc2V0KTsN
CiAgICB9DQoNCiAgICB2b2lkIGZzdHBsKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9FU0NBUEVfREQsIEVTQ0FQRV9E
RF9GU1RQX2RvdWJsZVJlYWwsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCB4Y2hn
bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBpZiAo
c3JjID09IFg4NlJlZ2lzdGVyczo6ZWF4KQ0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRUFYLCBkc3QpOw0KICAgICAgICBlbHNlIGlmIChkc3QgPT0gWDg2UmVnaXN0
ZXJzOjplYXgpDQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19FQVgs
IHNyYyk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9YQ0hHX0V2R3YsIHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHhjaGdiX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX1hDSEdfRXZHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0K
ICAgIH0NCg0KICAgIHZvaWQgeGNoZ2Jfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9YQ0hHX0V2R2IsIHNyYywgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgeGNoZ3dfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX1hDSEdfRXZHdiwgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQg
eGNoZ3dfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
WENIR19Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCB4Y2hnbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfWENIR19Fdkd2
LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCg0KICAgIHZvaWQg
eGNoZ3FfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAg
aWYgKHNyYyA9PSBYODZSZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX1hDSEdfRUFYLCBkc3QpOw0KICAgICAgICBlbHNlIGlmIChkc3QgPT0gWDg2
UmVnaXN0ZXJzOjplYXgpDQogICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9Y
Q0hHX0VBWCwgc3JjKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCB4Y2hn
cV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsN
CiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfWENIR19Fdkd2LCBzcmMsIGJhc2Us
IG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCB4Y2hncV9ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9YQ0hHX0V2R3YsIHNyYywg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCiNsaW5lIDIzMzYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZB
c3NlbWJsZXIuaCINCg0KICAgIHZvaWQgbW92bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0V2R3Ys
IHNyYywgZHN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBtb3ZsX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfTU9WX0V2R3YsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIG1vdmxfcm1fZGlzcDMyKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BfZGlzcDMyKE9Q
X01PVl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZsX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9NT1ZfRXZHdiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgbW92bF9tRUFYKGNvbnN0IHZvaWQqIGFkZHIpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0VBWE92KTsNCg0KICAgICAgICBtX2Zvcm1hdHRl
ci5pbW1lZGlhdGU2NChyZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFkZHIpKTsNCg0KDQojbGlu
ZSAyMzY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQogICAgfQ0KDQogICAgdm9pZCBtb3ZsX21yKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsN
CiAgICB9DQoNCiAgICB2b2lkIG1vdmxfbXJfZGlzcDMyKGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3BfZGlzcDMyKE9QX01PVl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgbW92bF9tcl9kaXNwOChpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wX2Rpc3A4KE9Q
X01PVl9HdkV2LCBkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZsX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9NT1ZfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQog
ICAgdm9pZCBtb3ZsX2kzMnIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0VBWEl2LCBkc3QpOw0KICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgIH0NCg0KICAgIHZvaWQgbW92bF9pMzJtKGlu
dCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQMTFfTU9WLCBiYXNlLCBvZmZz
ZXQpOw0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOw0KICAgIH0NCiAgICAN
CiAgICB2b2lkIG1vdmxfaTMybShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7DQogICAg
fQ0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0MTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAg
IHZvaWQgbW92Yl9pOG0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1Bf
R1JPVVAxMV9FdkliLCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlOChpbW0pOw0KICAgIH0NCg0KICAgIHZvaWQgbW92Yl9pOG0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDExX0V2SWIsIEdST1VQMTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9m
ZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCg0K
DQoNCg0KDQojbGluZSAyNDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQogICAgDQogICAgdm9pZCBt
b3ZiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9FYkdiLCBzcmMsIGJhc2Us
IG9mZnNldCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgbW92Yl9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9FYkdiLCBzcmMs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdndfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAg
ICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFORF9TSVpFKTsNCg0KICAgICAgICANCiAg
ICAgICAgDQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDgoT1BfTU9WX0V2R3YsIHNyYywg
YmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdndfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOw0K
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdndfaW0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMTYoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdndfaW0oaW50
IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0la
RSk7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDExX0V2SXosIEdST1VQ
MTFfTU9WLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTE2KGltbSk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZsX0VBWG0oY29uc3Qgdm9p
ZCogYWRkcikNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfT3ZF
QVgpOw0KDQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50NjRfdD4oYWRkcikpOw0KDQoNCiNsaW5lIDI0ODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCiAg
ICB9DQoNCiAgICB2b2lkIG1vdmxfbXIodWludDMyX3QgYWRkciwgUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3Qs
IGFkZHIpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92bF9ybShSZWdpc3RlcklEIHNyYywgdWludDMy
X3QgYWRkcikNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9W
X0V2R3YsIHNyYywgYWRkcik7DQogICAgfQ0KDQoNCiAgICB2b2lkIG1vdnFfcnIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wNjQoT1BfTU9WX0V2R3YsIHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnFfcm0o
UmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNl
dCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZxX3JtX2Rpc3AzMihSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25l
Qnl0ZU9wNjRfZGlzcDMyKE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0K
DQogICAgdm9pZCBtb3ZxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9Fdkd2LCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwg
b2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnFfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBv
ZmZzZXQpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NEFkZHIoT1BfTU9W
X0V2R3YsIHNyYywgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnFfbUVBWChjb25zdCB2
b2lkKiBhZGRyKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9W
X0VBWE92KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQocmVpbnRlcnByZXRfY2Fz
dDxpbnQ2NF90PihhZGRyKSk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZxX0VBWG0oY29uc3Qgdm9p
ZCogYWRkcikNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9P
dkVBWCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTY0KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50NjRfdD4oYWRkcikpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92cV9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoN
CiAgICB2b2lkIG1vdnFfbXJfZGlzcDMyKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NF9kaXNw
MzIoT1BfTU9WX0d2RXYsIGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1v
dnFfbXJfZGlzcDgoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkN
CiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0X2Rpc3A4KE9QX01PVl9HdkV2
LCBkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZxX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3Rl
cklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01PVl9H
dkV2LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lk
IG1vdnFfbXIodWludDMyX3QgYWRkciwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3A2NEFkZHIoT1BfTU9WX0d2RXYsIGRzdCwgYWRkcik7DQogICAg
fQ0KDQogICAgdm9pZCBtb3ZxX2kzMm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAxMV9F
dkl6LCBHUk9VUDExX01PViwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnFfaTMybShpbnQgaW1tLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwgR1JP
VVAxMV9NT1YsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlMzIoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnFfaTY0cihpbnQ2NF90
IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A2NChPUF9NT1ZfRUFYSXYsIGRzdCk7DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTY0
KGltbSk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZfaTMycihpbnQzMl90IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDEx
X0V2SXosIEdST1VQMTFfTU9WLCBkc3QpOw0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUz
MihpbW0pOw0KICAgIH0NCiAgICANCiAgICB2b2lkIG1vdnN4ZF9ycihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChP
UF9NT1ZTWERfR3ZFdiwgZHN0LCBzcmMpOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjYwOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQog
ICAgdm9pZCBtb3Z6d2xfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WWlhfR3ZF
dywgZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92endsX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9W
WlhfR3ZFdywgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAg
dm9pZCBtb3Zzd2xfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRz
dCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU1hfR3ZFdywg
ZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92c3dsX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3Rl
cklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU1hf
R3ZFdywgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9p
ZCBtb3Z6YmxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkN
CiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WWlhfR3ZFYiwgZHN0
LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIG1vdnpibF9tcihpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0
ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVlpY
X0d2RWIsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCg0KDQoNCg0K
DQoNCiNsaW5lIDI2NDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgbW92c2JsX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVlNYX0d2RWIsIGRzdCwgYmFzZSwgb2Zm
c2V0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBtb3ZzYmxfbXIoaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVySUQgZHN0KQ0K
ICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZTWF9HdkViLCBkc3Qs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnpibF9y
cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICANCiAgICAg
ICAgDQogICAgICAgIA0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9NT1ZaWF9H
dkViLCBkc3QsIHNyYyk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZzYmxfcnIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9w
OChPUDJfTU9WU1hfR3ZFYiwgZHN0LCBzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92endsX3Jy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcDgoT1AyX01PVlpYX0d2RXcsIGRzdCwgc3JjKTsNCiAgICB9DQoNCiAgICB2
b2lkIG1vdnN3bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9NT1ZTWF9HdkV3LCBkc3QsIHNyYyk7DQog
ICAgfQ0KDQogICAgdm9pZCBjbW92bF9ycihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGNt
b3ZjYyhjb25kKSwgZHN0LCBzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgY21vdmxfbXIoQ29uZGl0
aW9uIGNvbmQsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoY21vdmNjKGNvbmQpLCBkc3QsIGJh
c2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBjbW92bF9tcihDb25kaXRpb24gY29uZCwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUs
IFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGNt
b3ZjYyhjb25kKSwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQog
ICAgdm9pZCBjbW92ZWxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsN
CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGNtb3ZjYyhDb25kaXRpb25FKSwgZHN0LCBz
cmMpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNtb3ZuZWxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGNtb3Zj
YyhDb25kaXRpb25ORSksIGRzdCwgc3JjKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBjbW92cGxf
cnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wKGNtb3ZjYyhDb25kaXRpb25QKSwgZHN0LCBzcmMpOw0KICAgIH0NCiAg
ICANCiAgICB2b2lkIGNtb3ZucGxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0K
ICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGNtb3ZjYyhDb25kaXRpb25OUCks
IGRzdCwgc3JjKTsNCiAgICB9DQoNCg0KICAgIHZvaWQgY21vdnFfcnIoQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLnR3b0J5dGVPcDY0KGNtb3ZjYyhjb25kKSwgZHN0LCBzcmMpOw0KICAgIH0NCg0KICAgIHZv
aWQgY21vdnFfbXIoQ29uZGl0aW9uIGNvbmQsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChj
bW92Y2MoY29uZCksIGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGNtb3Zx
X21yKENvbmRpdGlvbiBjb25kLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3A2NChjbW92Y2MoY29uZCksIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgY21vdmVxX3JyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KGNt
b3ZjYyhDb25kaXRpb25FKSwgZHN0LCBzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgY21vdm5lcV9y
cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1h
dHRlci50d29CeXRlT3A2NChjbW92Y2MoQ29uZGl0aW9uTkUpLCBkc3QsIHNyYyk7DQogICAgfQ0K
DQogICAgdm9pZCBjbW92cHFfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wNjQoY21vdmNjKENvbmRpdGlvblApLCBk
c3QsIHNyYyk7DQogICAgfQ0KDQogICAgdm9pZCBjbW92bnBxX3JyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KGNt
b3ZjYyhDb25kaXRpb25OUCksIGRzdCwgc3JjKTsNCiAgICB9DQoNCg0KDQoNCg0KI2xpbmUgMjc1
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCBsZWFsX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfTEVBLCBkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9p
ZCBsZWFsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9MRUEsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0N
Cg0KDQogICAgdm9pZCBsZWFxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9MRUEs
IGRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIGxlYXFfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFJlZ2lzdGVy
SUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTEVBLCBk
c3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQojbGluZSAyNzc3ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxc
WDg2QXNzZW1ibGVyLmgiDQoNCiAgICANCg0KICAgIEFzc2VtYmxlckxhYmVsIGNhbGwoKQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0NBTExfcmVsMzIpOw0KICAgICAg
ICByZXR1cm4gbV9mb3JtYXR0ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9DQogICAgDQogICAg
QXNzZW1ibGVyTGFiZWwgY2FsbChSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDVfRXYsIEdST1VQNV9PUF9DQUxMTiwgZHN0KTsNCiAg
ICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyLmxhYmVsKCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
Y2FsbF9tKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDVfRXYsIEdST1VQNV9PUF9DQUxMTiwgYmFzZSwgb2Zm
c2V0KTsNCiAgICB9DQoNCiAgICBBc3NlbWJsZXJMYWJlbCBqbXAoKQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0pNUF9yZWwzMik7DQogICAgICAgIHJldHVybiBtX2Zv
cm1hdHRlci5pbW1lZGlhdGVSZWwzMigpOw0KICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICBBc3NlbWJsZXJMYWJlbCBqbXBfcihSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDVfRXYsIEdST1VQNV9PUF9KTVBOLCBkc3Qp
Ow0KICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsNCiAgICB9DQogICAgDQogICAg
dm9pZCBqbXBfbShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVA1X0V2LCBHUk9VUDVfT1BfSk1QTiwgYmFzZSwg
b2Zmc2V0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBqbXBfbShpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDVfRXYsIEdST1VQNV9PUF9KTVBOLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KICAgIA0KDQoNCg0KDQoNCiNsaW5lIDI4Mjgg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1i
bGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIEFzc2VtYmxlckxhYmVsIGpuZSgpDQogICAgew0K
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoamNjUmVsMzIoQ29uZGl0aW9uTkUpKTsNCiAg
ICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyLmltbWVkaWF0ZVJlbDMyKCk7DQogICAgfQ0KICAgIA0K
ICAgIEFzc2VtYmxlckxhYmVsIGpueigpDQogICAgew0KICAgICAgICByZXR1cm4gam5lKCk7DQog
ICAgfQ0KDQogICAgQXNzZW1ibGVyTGFiZWwgamUoKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKGpjY1JlbDMyKENvbmRpdGlvbkUpKTsNCiAgICAgICAgcmV0dXJuIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZVJlbDMyKCk7DQogICAgfQ0KICAgIA0KICAgIEFzc2VtYmxlckxhYmVs
IGp6KCkNCiAgICB7DQogICAgICAgIHJldHVybiBqZSgpOw0KICAgIH0NCg0KICAgIEFzc2VtYmxl
ckxhYmVsIGpsKCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChqY2NSZWwz
MihDb25kaXRpb25MKSk7DQogICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5pbW1lZGlhdGVSZWwz
MigpOw0KICAgIH0NCiAgICANCiAgICBBc3NlbWJsZXJMYWJlbCBqYigpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3AoamNjUmVsMzIoQ29uZGl0aW9uQikpOw0KICAgICAgICBy
ZXR1cm4gbV9mb3JtYXR0ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9DQogICAgDQogICAgQXNz
ZW1ibGVyTGFiZWwgamxlKCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChq
Y2NSZWwzMihDb25kaXRpb25MRSkpOw0KICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlUmVsMzIoKTsNCiAgICB9DQogICAgDQogICAgQXNzZW1ibGVyTGFiZWwgamJlKCkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChqY2NSZWwzMihDb25kaXRpb25CRSkpOw0K
ICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9DQogICAg
DQogICAgQXNzZW1ibGVyTGFiZWwgamdlKCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcChqY2NSZWwzMihDb25kaXRpb25HRSkpOw0KICAgICAgICByZXR1cm4gbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9DQoNCiAgICBBc3NlbWJsZXJMYWJlbCBqZygpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoamNjUmVsMzIoQ29uZGl0aW9uRykp
Ow0KICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9DQoN
CiAgICBBc3NlbWJsZXJMYWJlbCBqYSgpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29C
eXRlT3AoamNjUmVsMzIoQ29uZGl0aW9uQSkpOw0KICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIu
aW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9DQogICAgDQogICAgQXNzZW1ibGVyTGFiZWwgamFlKCkN
CiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChqY2NSZWwzMihDb25kaXRpb25B
RSkpOw0KICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9
DQogICAgDQogICAgQXNzZW1ibGVyTGFiZWwgam8oKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKGpjY1JlbDMyKENvbmRpdGlvbk8pKTsNCiAgICAgICAgcmV0dXJuIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZVJlbDMyKCk7DQogICAgfQ0KDQogICAgQXNzZW1ibGVyTGFiZWwgam5w
KCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChqY2NSZWwzMihDb25kaXRp
b25OUCkpOw0KICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAg
ICB9DQoNCiAgICBBc3NlbWJsZXJMYWJlbCBqcCgpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoamNjUmVsMzIoQ29uZGl0aW9uUCkpOw0KICAgICAgICByZXR1cm4gbV9mb3Jt
YXR0ZXIuaW1tZWRpYXRlUmVsMzIoKTsNCiAgICB9DQogICAgDQogICAgQXNzZW1ibGVyTGFiZWwg
anMoKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGpjY1JlbDMyKENvbmRp
dGlvblMpKTsNCiAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyLmltbWVkaWF0ZVJlbDMyKCk7DQog
ICAgfQ0KDQogICAgQXNzZW1ibGVyTGFiZWwgakNDKENvbmRpdGlvbiBjb25kKQ0KICAgIHsNCiAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGpjY1JlbDMyKGNvbmQpKTsNCiAgICAgICAgcmV0
dXJuIG1fZm9ybWF0dGVyLmltbWVkaWF0ZVJlbDMyKCk7DQogICAgfQ0KDQogICAgDQoNCiAgICB2
b2lkIGFkZHNkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wKE9QMl9BRERTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lz
dGVySUQpc3JjKTsNCiAgICB9DQoNCiAgICB2b2lkIHZhZGRzZF9ycihYTU1SZWdpc3RlcklEIGEs
IFhNTVJlZ2lzdGVySUQgYiwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zv
cm1hdHRlci52ZXhOZHNMaWdXaWdDb21tdXRhdGl2ZVR3b0J5dGVPcChQUkVfU1NFX0YyLCBPUDJf
QUREU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKWEsIChSZWdpc3RlcklE
KWIpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkc2RfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZp
eChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9BRERTRF9W
c2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lk
IGFkZHNkX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9B
RERTRF9Wc2RXc2QsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCg0K
ICAgIHZvaWQgdmFkZHNkX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0
ZXJJRCBiLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnZl
eE5kc0xpZ1dpZ1R3b0J5dGVPcChQUkVfU1NFX0YyLCBPUDJfQUREU0RfVnNkV3NkLCAoUmVnaXN0
ZXJJRClkc3QsIChSZWdpc3RlcklEKWIsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9p
ZCB2YWRkc2RfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIFhNTVJlZ2lzdGVySUQgYiwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0K
ICAgICAgICBtX2Zvcm1hdHRlci52ZXhOZHNMaWdXaWdUd29CeXRlT3AoUFJFX1NTRV9GMiwgT1Ay
X0FERFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRCliLCBvZmZzZXQsIGJh
c2UsIGluZGV4LCBzY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBhZGRzc19ycihYTU1SZWdpc3Rl
cklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX1NTRV9GMyk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQURE
U0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7DQogICAgfQ0KDQog
ICAgdm9pZCB2YWRkc3NfcnIoWE1NUmVnaXN0ZXJJRCBhLCBYTU1SZWdpc3RlcklEIGIsIFhNTVJl
Z2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudmV4TmRzTGlnV2lnQ29t
bXV0YXRpdmVUd29CeXRlT3AoUFJFX1NTRV9GMywgT1AyX0FERFNEX1ZzZFdzZCwgKFJlZ2lzdGVy
SUQpZHN0LCAoUmVnaXN0ZXJJRClhLCAoUmVnaXN0ZXJJRCliKTsNCiAgICB9DQoNCiAgICB2b2lk
IGFkZHNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3Qp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7DQogICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQUREU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3Qs
IGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBhZGRzc19tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0ZXJJ
RCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7DQog
ICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQUREU0RfVnNkV3NkLCBkc3QsIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIHZhZGRzc19tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgYiwgWE1NUmVnaXN0ZXJJRCBk
c3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci52ZXhOZHNMaWdXaWdUd29CeXRlT3AoUFJF
X1NTRV9GMywgT1AyX0FERFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRCli
LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgdmFkZHNzX21yKGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBYTU1SZWdpc3Rl
cklEIGIsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudmV4
TmRzTGlnV2lnVHdvQnl0ZU9wKFBSRV9TU0VfRjMsIE9QMl9BRERTRF9Wc2RXc2QsIChSZWdpc3Rl
cklEKWRzdCwgKFJlZ2lzdGVySUQpYiwgb2Zmc2V0LCBiYXNlLCBpbmRleCwgc2NhbGUpOw0KICAg
IH0NCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzAwNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAg
dm9pZCBjdnRzaTJzZF9ycihSZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7DQogICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcChPUDJfQ1ZUU0kyU0RfVnNkRWQsIChSZWdpc3RlcklEKWRzdCwgc3Jj
KTsNCiAgICB9DQoNCiAgICB2b2lkIGN2dHNpMnNzX3JyKFJlZ2lzdGVySUQgc3JjLCBYTU1SZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0Yz
KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJl
Z2lzdGVySUQpZHN0LCBzcmMpOw0KICAgIH0NCg0KDQogICAgdm9pZCBjdnRzaTJzZHFfcnIoUmVn
aXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9TU0VfRjIpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChP
UDJfQ1ZUU0kyU0RfVnNkRWQsIChSZWdpc3RlcklEKWRzdCwgc3JjKTsNCiAgICB9DQoNCiAgICB2
b2lkIGN2dHNpMnNzcV9ycihSZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7DQogICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBz
cmMpOw0KICAgIH0NCg0KICAgIHZvaWQgY3Z0c2kyc2RxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX1NTRV9GMik7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9D
VlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0K
ICAgIHZvaWQgY3Z0c2kyc3NxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVn
aXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9G
Myk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DVlRTSTJTRF9Wc2RFZCwg
KFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCiNsaW5lIDMwNDIgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxY
ODZBc3NlbWJsZXIuaCINCg0KICAgIHZvaWQgY3Z0c2kyc2RfbXIoaW50IG9mZnNldCwgUmVnaXN0
ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVy
LnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9D
VlRTSTJTRF9Wc2RFZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0K
ICAgIHZvaWQgY3Z0c2kyc3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0Yz
KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTSTJTRF9Wc2RFZCwgKFJl
Z2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MzA2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxh
c3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCBjdnR0c2Qyc2lfcnIoWE1NUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9TU0VfRjIpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NW
VFRTRDJTSV9HZFdzZCwgZHN0LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQg
Y3Z0dHNzMnNpX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQog
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9DVlRUU1MyU0lfR2RXc2QsIGRzdCwgKFJlZ2lzdGVySUQpc3JjKTsN
CiAgICB9DQoNCg0KICAgIHZvaWQgY3Z0dHNzMnNpcV9ycihYTU1SZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9G
Myk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DVlRUU1MyU0lfR2RXc2Qs
IGRzdCwgKFJlZ2lzdGVySUQpc3JjKTsNCiAgICB9DQojbGluZSAzMDgyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1i
bGVyLmgiDQoNCiAgICB2b2lkIGN2dHNkMnNzX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0Yy
KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTRDJTU19Wc2RXc2QsIGRz
dCwgKFJlZ2lzdGVySUQpc3JjKTsNCiAgICB9DQoNCiAgICB2b2lkIGN2dHNkMnNzX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcChPUDJfQ1ZUU0QyU1NfVnNkV3NkLCBkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0K
DQogICAgdm9pZCBjdnRzczJzZF9ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBk
c3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7DQogICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ1ZUU1MyU0RfVnNkV3NkLCBkc3QsIChSZWdp
c3RlcklEKXNyYyk7DQogICAgfQ0KDQogICAgdm9pZCBjdnRzczJzZF9tcihpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX0NWVFNTMlNEX1ZzZFdzZCwgZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KDQogICAg
dm9pZCBjdnR0c2Qyc2lxX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wNjQoT1AyX0NWVFRTRDJTSV9HZFdzZCwgZHN0LCAoUmVnaXN0ZXJJ
RClzcmMpOw0KICAgIH0NCiNsaW5lIDMxMTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgIHZv
aWQgbW92ZF9ycihYTU1SZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV82Nik7DQogICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfTU9WRF9FZFZkLCAoUmVnaXN0ZXJJRClzcmMsIGRzdCk7DQogICAgfQ0K
DQogICAgdm9pZCBtb3ZkX3JyKFJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAg
ICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsNCiAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZEX1ZkRWQsIChSZWdpc3RlcklEKWRzdCwgc3JjKTsN
CiAgICB9DQoNCg0KICAgIHZvaWQgbW92bXNrcGRfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYp
Ow0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2NChPUDJfTU9WTVNLUERfVmRFZCwgZHN0
LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92cV9ycihYTU1SZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX1NTRV82Nik7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9NT1ZE
X0VkVmQsIChSZWdpc3RlcklEKXNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnFfcnIo
UmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A2
NChPUDJfTU9WRF9WZEVkLCAoUmVnaXN0ZXJJRClkc3QsIHNyYyk7DQogICAgfQ0KI2xpbmUgMzE0
NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCBtb3ZhcGRfcnIoWE1NUmVnaXN0ZXJJ
RCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9TU0VfNjYpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVkFQ
RF9WcGRXcGQsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsNCiAgICB9DQoNCiAg
ICB2b2lkIG1vdmFwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVkFQU19WcGRXcGQsIChS
ZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnNk
X3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9NT1ZTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3Jj
KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdnNkX3JtKFhNTVJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX1NTRV9GMik7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfV3Nk
VnNkLCAoUmVnaXN0ZXJJRClzcmMsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KICAgIA0KICAgIHZv
aWQgbW92c2Rfcm0oWE1NUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9TU0VfRjIpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQpc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3Zzc19ybShYTU1SZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9TU0VfRjMpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVlNEX1dz
ZFZzZCwgKFJlZ2lzdGVySUQpc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIG1vdnNzX3JtKFhNTVJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9NT1ZTRF9Xc2RWc2QsIChSZWdpc3RlcklEKXNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIG1vdnNkX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX1NTRV9GMik7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9W
U0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAg
dm9pZCBtb3ZzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMik7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfTU9WU0RfVnNkV3NkLCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9
DQoNCiAgICB2b2lkIG1vdnNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVn
aXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9G
Myk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNkV3NkLCAoUmVn
aXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3Zzc19tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwg
WE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X1NTRV9GMyk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNkV3Nk
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMyMzQgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJs
ZXIuaCINCg0KICAgIHZvaWQgbXVsc2RfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVy
SUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOw0K
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01VTFNEX1ZzZFdzZCwgKFJlZ2lzdGVy
SUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgdm11bHNkX3JyKFhN
TVJlZ2lzdGVySUQgYSwgWE1NUmVnaXN0ZXJJRCBiLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLnZleE5kc0xpZ1dpZ0NvbW11dGF0aXZlVHdvQnl0ZU9wKFBS
RV9TU0VfRjIsIE9QMl9NVUxTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQp
YSwgKFJlZ2lzdGVySUQpYik7DQogICAgfQ0KDQogICAgdm9pZCBtdWxzZF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX01VTFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAg
IH0NCg0KICAgIHZvaWQgbXVsc2RfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOw0KICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX01VTFNEX1ZzZFdzZCwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7DQogICAgfQ0KDQogICAgdm9pZCB2bXVsc2RfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBYTU1SZWdpc3RlcklEIGIsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIudmV4TmRzTGlnV2lnVHdvQnl0ZU9wKFBSRV9TU0VfRjIsIE9QMl9NVUxTRF9W
c2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpYiwgYmFzZSwgb2Zmc2V0KTsNCiAg
ICB9DQoNCiAgICB2b2lkIHZtdWxzZF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJl
Z2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0ZXJJRCBiLCBYTU1SZWdpc3RlcklE
IGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnZleE5kc0xpZ1dpZ1R3b0J5dGVPcChQ
UkVfU1NFX0YyLCBPUDJfTVVMU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklE
KWIsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIG11bHNz
X3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9NVUxTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3Jj
KTsNCiAgICB9DQoNCiAgICB2b2lkIHZtdWxzc19ycihYTU1SZWdpc3RlcklEIGEsIFhNTVJlZ2lz
dGVySUQgYiwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci52
ZXhOZHNMaWdXaWdDb21tdXRhdGl2ZVR3b0J5dGVPcChQUkVfU1NFX0YzLCBPUDJfTVVMU0RfVnNk
V3NkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKWEsIChSZWdpc3RlcklEKWIpOw0KICAg
IH0NCg0KICAgIHZvaWQgbXVsc3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1S
ZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NF
X0YzKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NVUxTRF9Wc2RXc2QsIChS
ZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIG11bHNzX21y
KGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NVUxTRF9Wc2RX
c2QsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQg
dm11bHNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBiLCBY
TU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnZleE5kc0xpZ1dp
Z1R3b0J5dGVPcChQUkVfU1NFX0YzLCBPUDJfTVVMU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3Qs
IChSZWdpc3RlcklEKWIsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCB2bXVsc3Nf
bXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUsIFhNTVJlZ2lzdGVySUQgYiwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci52ZXhOZHNMaWdXaWdUd29CeXRlT3AoUFJFX1NTRV9GMywgT1AyX01VTFNEX1Zz
ZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRCliLCBvZmZzZXQsIGJhc2UsIGluZGV4
LCBzY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBwZXh0cndfaXJyKGludCB3aGljaFdvcmQsIFhN
TVJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfU1NFXzY2KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9QRVhUUldfR2RVZEliLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7DQogICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgod2hpY2hXb3JkKTsNCiAgICB9DQoNCiAgICB2b2lk
IHBzbGxxX2k4cihpbnQgaW1tLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wOChPUDJfUFNMTFFfVWRxSWIsIEdST1VQMTRfT1BfUFNMTFEsIChSZWdpc3RlcklEKWRzdCk7
DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lk
IHBzcmxxX2k4cihpbnQgaW1tLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wOChPUDJfUFNSTFFfVWRxSWIsIEdST1VQMTRfT1BfUFNSTFEsIChSZWdpc3RlcklEKWRzdCk7
DQogICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsNCiAgICB9DQoNCiAgICB2b2lk
IHBvcl9ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV82Nik7DQogICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfUE9SX1ZkcVdkcSwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClz
cmMpOw0KICAgIH0NCg0KICAgIHZvaWQgc3Vic2RfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJl
Z2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjIpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NVQlNEX1ZzZFdzZCwgKFJl
Z2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgdnN1YnNk
X3JyKFhNTVJlZ2lzdGVySUQgYSwgWE1NUmVnaXN0ZXJJRCBiLCBYTU1SZWdpc3RlcklEIGRzdCkN
CiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnZleE5kc0xpZ1dpZ1R3b0J5dGVPcChQUkVfU1NF
X0YyLCBPUDJfU1VCU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKWEsIChS
ZWdpc3RlcklEKWIpOw0KICAgIH0NCg0KICAgIHZvaWQgc3Vic2RfbXIoaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9TVUJTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoN
CiAgICB2b2lkIHN1YnNkX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wKE9QMl9TVUJTRF9Wc2RXc2QsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0K
ICAgIH0NCg0KICAgIHZvaWQgdnN1YnNkX21yKFhNTVJlZ2lzdGVySUQgYiwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLnZleE5kc0xpZ1dpZ1R3b0J5dGVPcChQUkVfU1NFX0YyLCBPUDJfU1VCU0RfVnNkV3Nk
LCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKWIsIGJhc2UsIG9mZnNldCk7DQogICAgfQ0K
DQogICAgdm9pZCB2c3Vic2RfbXIoWE1NUmVnaXN0ZXJJRCBiLCBpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0ZXJJRCBkc3Qp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci52ZXhOZHNMaWdXaWdUd29CeXRlT3AoUFJFX1NT
RV9GMiwgT1AyX1NVQlNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRCliLCBv
ZmZzZXQsIGJhc2UsIGluZGV4LCBzY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBzdWJzc19ycihY
TU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfU1VCU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7DQog
ICAgfQ0KDQogICAgdm9pZCB2c3Vic3NfcnIoWE1NUmVnaXN0ZXJJRCBhLCBYTU1SZWdpc3RlcklE
IGIsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudmV4TmRz
TGlnV2lnVHdvQnl0ZU9wKFBSRV9TU0VfRjMsIE9QMl9TVUJTRF9Wc2RXc2QsIChSZWdpc3RlcklE
KWRzdCwgKFJlZ2lzdGVySUQpYSwgKFJlZ2lzdGVySUQpYik7DQogICAgfQ0KDQogICAgdm9pZCBz
dWJzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQ0K
ICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOw0KICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NVQlNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBi
YXNlLCBvZmZzZXQpOw0KICAgIH0NCg0KICAgIHZvaWQgc3Vic3NfbXIoaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIFhNTVJlZ2lzdGVySUQg
ZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOw0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NVQlNEX1ZzZFdzZCwgZHN0LCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQogICAgdm9pZCB2c3Vic3NfbXIoWE1NUmVn
aXN0ZXJJRCBiLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudmV4TmRzTGlnV2lnVHdvQnl0ZU9wKFBSRV9T
U0VfRjMsIE9QMl9TVUJTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpYiwg
YmFzZSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIHZzdWJzc19tcihYTU1SZWdpc3RlcklE
IGIsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnZleE5k
c0xpZ1dpZ1R3b0J5dGVPcChQUkVfU1NFX0YzLCBPUDJfU1VCU0RfVnNkV3NkLCAoUmVnaXN0ZXJJ
RClkc3QsIChSZWdpc3RlcklEKWIsIG9mZnNldCwgYmFzZSwgaW5kZXgsIHNjYWxlKTsNCiAgICB9
DQoNCiAgICB2b2lkIHVjb21pc2RfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQg
ZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOw0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1VDT01JU0RfVnNkV3NkLCAoUmVnaXN0ZXJJ
RClkc3QsIChSZWdpc3RlcklEKXNyYyk7DQogICAgfQ0KDQogICAgdm9pZCB1Y29taXNkX21yKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV82Nik7DQogICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfVUNPTUlTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zm
c2V0KTsNCiAgICB9DQoNCiAgICB2b2lkIHVjb21pc3NfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhN
TVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9VQ09NSVNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAg
IH0NCg0KICAgIHZvaWQgdWNvbWlzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhN
TVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9VQ09NSVNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOw0KICAgIH0N
Cg0KICAgIHZvaWQgZGl2c2RfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOw0KICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0RJVlNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0
LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgZGl2c2RfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1f
Zm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wKE9QMl9ESVZTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAg
ICB9DQoNCiAgICB2b2lkIGRpdnNzX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklE
IGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9ESVZTRF9Wc2RXc2QsIChSZWdpc3RlcklE
KWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsNCiAgICB9DQoNCiAgICB2b2lkIGRpdnNzX21yKGludCBv
ZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcChPUDJfRElWU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7
DQogICAgfQ0KDQogICAgdm9pZCBhbmRwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0
ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0FORFBT
X1ZwZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAg
IHZvaWQgb3Jwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX09SUFNfVnBkV3BkLCAoUmVnaXN0
ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7DQogICAgfQ0KDQogICAgdm9pZCB4b3Jwc19ycihY
TU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX1hPUlBEX1ZwZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVn
aXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9ycGRfcnIoWE1NUmVnaXN0ZXJJRCBz
cmMsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNyYyA9PSBkc3QpIHsN
CiAgICAgICAgICAgIHhvcnBzX3JyKHNyYywgZHN0KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAg
ICAgICAgfQ0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV82Nik7DQogICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWE9SUERfVnBkV3BkLCAoUmVnaXN0ZXJJRClkc3Qs
IChSZWdpc3RlcklEKXNyYyk7DQogICAgfQ0KDQogICAgdm9pZCBhbmRucGRfcnIoWE1NUmVnaXN0
ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
cHJlZml4KFBSRV9TU0VfNjYpOw0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0FO
RE5QRF9WcGRXcGQsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsNCiAgICB9DQoN
CiAgICB2b2lkIHNxcnRzZF9ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3Qp
DQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7DQogICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfU1FSVFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0
LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgIH0NCg0KICAgIHZvaWQgc3FydHNkX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcChPUDJfU1FSVFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOw0K
ICAgIH0NCg0KICAgIHZvaWQgc3FydHNzX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3Rl
cklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsN
CiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TUVJUU0RfVnNkV3NkLCAoUmVnaXN0
ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7DQogICAgfQ0KDQogICAgdm9pZCBzcXJ0c3NfbXIo
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkNCiAgICB7DQog
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9TUVJUU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9m
ZnNldCk7DQogICAgfQ0KDQogICAgZW51bSBjbGFzcyBSb3VuZGluZ1R5cGUgOiB1aW50OF90IHsN
CiAgICAgICAgVG9OZWFyZXN0V2l0aFRpZXNUb0V2ZW4gPSAwLA0KICAgICAgICBUb3dhcmROZWdh
dGl2ZUluZmluaXRpID0gMSwNCiAgICAgICAgVG93YXJkSW5maW5pdGkgPSAyLA0KICAgICAgICBU
b3dhcmRaZXJvID0gMw0KICAgIH07DQoNCiAgICB2b2lkIHJvdW5kc3NfcnIoWE1NUmVnaXN0ZXJJ
RCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0LCBSb3VuZGluZ1R5cGUgcm91bmRpbmcpDQogICAgew0K
ICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV82Nik7DQogICAgICAgIG1fZm9ybWF0
dGVyLnRocmVlQnl0ZU9wKE9QMl8zQllURV9FU0NBUEVfM0EsIE9QM19ST1VORFNTX1Zzc1dzc0li
LCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7DQogICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoc3RhdGljX2Nhc3Q8dWludDhfdD4ocm91bmRpbmcpKTsNCiAgICB9DQoNCiAg
ICB2b2lkIHJvdW5kc3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3Rl
cklEIGRzdCwgUm91bmRpbmdUeXBlIHJvdW5kaW5nKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9TU0VfNjYpOw0KICAgICAgICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChP
UDJfM0JZVEVfRVNDQVBFXzNBLCBPUDNfUk9VTkRTU19Wc3NXc3NJYiwgKFJlZ2lzdGVySUQpZHN0
LCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHJvdW5kaW5nKSk7DQogICAgfQ0KDQogICAgdm9pZCByb3VuZHNkX3JyKFhN
TVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCwgUm91bmRpbmdUeXBlIHJvdW5kaW5n
KQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOw0KICAgICAg
ICBtX2Zvcm1hdHRlci50aHJlZUJ5dGVPcChPUDJfM0JZVEVfRVNDQVBFXzNBLCBPUDNfUk9VTkRT
RF9Wc2RXc2RJYiwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOw0KICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU4KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kaW5nKSk7DQog
ICAgfQ0KDQogICAgdm9pZCByb3VuZHNkX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwg
WE1NUmVnaXN0ZXJJRCBkc3QsIFJvdW5kaW5nVHlwZSByb3VuZGluZykNCiAgICB7DQogICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudGhy
ZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV8zQSwgT1AzX1JPVU5EU0RfVnNkV3NkSWIsIChSZWdp
c3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZGluZykpOw0KICAgIH0NCg0KICAgIA0KDQogICAg
dm9pZCBpbnQzKCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9JTlQz
KTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGJvb2wgaXNJbnQzKHZvaWQqIGFkZHJlc3MpDQog
ICAgew0KICAgICAgICB1aW50OF90IGNhbmRpZGF0ZUluc3RydWN0aW9uID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGFkZHJlc3MpOw0KICAgICAgICByZXR1cm4gY2FuZGlkYXRlSW5zdHJ1
Y3Rpb24gPT0gT1BfSU5UMzsNCiAgICB9DQoNCiAgICB2b2lkIHJldCgpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfUkVUKTsNCiAgICB9DQoNCiAgICB2b2lkIHByZWRp
Y3ROb3RUYWtlbigpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1BSRURJ
Q1RfQlJBTkNIX05PVF9UQUtFTik7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgbG9jaygpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0xPQ0spOw0KICAgIH0NCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICB2b2lkIGdzKCkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfR1MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNtcHhjaGdiX3Jt
KFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZz
ZXQpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkN
CiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDgoT1AyX0NNUFhDSEdiLCBzcmMs
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBjbXB4
Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOw0KICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NNUFhDSEcsIHNyYywgYmFzZSwgb2Zmc2V0KTsN
CiAgICB9DQogICAgDQogICAgdm9pZCBjbXB4Y2hnd19ybShSZWdpc3RlcklEIHNyYywgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAg
ew0KICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7DQogICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgY21weGNoZ2xfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAgIH0N
CiAgICANCiAgICB2b2lkIGNtcHhjaGdsX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQogICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7DQogICAgfQ0KDQoNCiAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3A2NChPUDJfQ01QWENIRywgc3JjLCBiYXNlLCBvZmZzZXQpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIGNtcHhjaGdxX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkNCiAgICB7DQog
ICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9DTVBYQ0hHLCBzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICB9DQojbGluZSAzNjEwICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVy
LmgiDQogICAgDQogICAgdm9pZCB4YWRkYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wOChP
UDJfWEFERGIsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCB4YWRk
Yl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3A4KE9QMl9YQUREYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgfQ0K
ICAgIA0KICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfT1BFUkFO
RF9TSVpFKTsNCiAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YQURELCBzcmMsIGJh
c2UsIG9mZnNldCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgeGFkZHdfcm0oUmVnaXN0ZXJJRCBz
cmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNj
YWxlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUp
Ow0KICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHhhZGRsX3JtKFJlZ2lz
dGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpDQogICAgew0KICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9
DQogICAgDQogICAgdm9pZCB4YWRkbF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVn
aXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hBREQsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOw0KICAgIH0NCg0KDQogICAgdm9pZCB4YWRkcV9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIu
dHdvQnl0ZU9wNjQoT1AyX1hBREQsIHNyYywgYmFzZSwgb2Zmc2V0KTsNCiAgICB9DQogICAgDQog
ICAgdm9pZCB4YWRkcV9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpDQogICAgew0KICAgICAgICBtX2Zvcm1h
dHRlci50d29CeXRlT3A2NChPUDJfWEFERCwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7DQogICAgfQ0KI2xpbmUgMzY1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KDQogICAgdm9pZCBs
ZmVuY2UoKQ0KICAgIHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNCWVRF
X0VTQ0FQRV9BRSwgT1AzX0xGRU5DRSk7DQogICAgfQ0KDQogICAgdm9pZCBtZmVuY2UoKQ0KICAg
IHsNCiAgICAgICAgbV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwg
T1AzX01GRU5DRSk7DQogICAgfQ0KDQogICAgdm9pZCBzZmVuY2UoKQ0KICAgIHsNCiAgICAgICAg
bV9mb3JtYXR0ZXIudGhyZWVCeXRlT3AoT1AyXzNCWVRFX0VTQ0FQRV9BRSwgT1AzX1NGRU5DRSk7
DQogICAgfQ0KDQogICAgdm9pZCByZHRzYygpDQogICAgew0KICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX1JEVFNDKTsNCiAgICB9DQoNCiAgICB2b2lkIHBhdXNlKCkNCiAgICB7DQog
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsNCiAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wKE9QX1BBVVNFKTsNCiAgICB9DQoNCiAgICB2b2lkIGNwdWlkKCkNCiAgICB7
DQogICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ1BVSUQpOw0KICAgIH0NCg0KICAg
IA0KDQogICAgc2l6ZV90IGNvZGVTaXplKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBt
X2Zvcm1hdHRlci5jb2RlU2l6ZSgpOw0KICAgIH0NCiAgICANCiAgICBBc3NlbWJsZXJMYWJlbCBs
YWJlbEZvcldhdGNocG9pbnQoKQ0KICAgIHsNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0
ID0gbV9mb3JtYXR0ZXIubGFiZWwoKTsNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVz
dWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkNCiAgICAgICAgICAgIHJl
c3VsdCA9IGxhYmVsKCk7DQogICAgICAgIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0
Lm1fb2Zmc2V0Ow0KICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3Vs
dC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsNCiAgICAgICAgcmV0dXJuIHJl
c3VsdDsNCiAgICB9DQogICAgDQogICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNo
cG9pbnRzKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5sYWJlbCgpOw0KICAg
IH0NCg0KICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkNCiAgICB7DQogICAgICAgIEFzc2VtYmxl
ckxhYmVsIHJlc3VsdCA9IG1fZm9ybWF0dGVyLmxhYmVsKCk7DQogICAgICAgIHdoaWxlICgoc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNo
cG9pbnQpKSB7DQogICAgICAgICAgICBub3AoKTsNCiAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9y
bWF0dGVyLmxhYmVsKCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9
DQoNCiAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQ0KICAgIHsNCiAgICAg
ICAgd2hpbGUgKCFtX2Zvcm1hdHRlci5pc0FsaWduZWQoYWxpZ25tZW50KSkNCiAgICAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9ITFQpOw0KDQogICAgICAgIHJldHVybiBsYWJlbCgp
Ow0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQog
ICAgdm9pZCBsaW5rSnVtcChBc3NlbWJsZXJMYWJlbCBmcm9tLCBBc3NlbWJsZXJMYWJlbCB0bykN
CiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAg
IGNoYXIqIGNvZGUgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2Zvcm1hdHRlci5kYXRhKCkp
Ow0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHNldFJlbDMyKGNvZGUgKyBmcm9tLm1fb2Zm
c2V0LCBjb2RlICsgdG8ubV9vZmZzZXQpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgdm9pZCBs
aW5rSnVtcCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBmcm9tLCB2b2lkKiB0bykNCiAgICB7
DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICBzZXRSZWwzMihyZWludGVycHJldF9jYXN0
PGNoYXIqPihjb2RlKSArIGZyb20ubV9vZmZzZXQsIHRvKTsNCiAgICB9DQoNCiAgICBzdGF0aWMg
dm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBmcm9tLCB2b2lkKiB0bykN
CiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICBzZXRSZWwzMihyZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb2RlKSArIGZyb20ubV9vZmZzZXQsIHRvKTsNCiAgICB9DQoNCiAgICBz
dGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCB3aGVyZSwg
dm9pZCogdmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgc2V0UG9p
bnRlcihyZWludGVycHJldF9jYXN0PGNoYXIqPihjb2RlKSArIHdoZXJlLm1fb2Zmc2V0LCB2YWx1
ZSk7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgcmVsaW5rSnVtcCh2b2lkKiBmcm9tLCB2b2lk
KiB0bykNCiAgICB7DQogICAgICAgIHNldFJlbDMyKGZyb20sIHRvKTsNCiAgICB9DQogICAgDQog
ICAgc3RhdGljIHZvaWQgcmVsaW5rSnVtcFRvTm9wKHZvaWQqIGZyb20pDQogICAgew0KICAgICAg
ICBzZXRJbnQzMihmcm9tLCAwKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHZvaWQgcmVsaW5r
Q2FsbCh2b2lkKiBmcm9tLCB2b2lkKiB0bykNCiAgICB7DQogICAgICAgIHNldFJlbDMyKGZyb20s
IHRvKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHZvaWQgcmVwYXRjaENvbXBhY3Qodm9pZCog
d2hlcmUsIGludDMyX3QgdmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgc2V0SW50OCh3aGVyZSwgdmFsdWUpOw0KICAgIH0NCg0KICAg
IHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMih2b2lkKiB3aGVyZSwgaW50MzJfdCB2YWx1ZSkNCiAg
ICB7DQogICAgICAgIHNldEludDMyKHdoZXJlLCB2YWx1ZSk7DQogICAgfQ0KDQogICAgc3RhdGlj
IHZvaWQgcmVwYXRjaFBvaW50ZXIodm9pZCogd2hlcmUsIHZvaWQqIHZhbHVlKQ0KICAgIHsNCiAg
ICAgICAgc2V0UG9pbnRlcih3aGVyZSwgdmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMg
dm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpDQogICAgew0KICAgICAgICByZXR1cm4gV1RG
Ojp1bmFsaWduZWRMb2FkPHZvaWQqPihiaXR3aXNlX2Nhc3Q8dm9pZCoqPih3aGVyZSkgLSAxKTsN
CiAgICB9DQoNCiAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEhsdCh2b2lkKiBpbnN0cnVjdGlv
blN0YXJ0KQ0KICAgIHsNCiAgICAgICAgV1RGOjp1bmFsaWduZWRTdG9yZTx1aW50OF90PihpbnN0
cnVjdGlvblN0YXJ0LCBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9ITFQpKTsNCiAgICB9DQoNCiAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9p
ZCogdG8pDQogICAgew0KICAgICAgICB1aW50OF90KiBwdHIgPSBiaXR3aXNlX2Nhc3Q8dWludDhf
dCo+KGluc3RydWN0aW9uU3RhcnQpOw0KICAgICAgICB1aW50OF90KiBkc3RQdHIgPSBiaXR3aXNl
X2Nhc3Q8dWludDhfdCo+KHRvKTsNCiAgICAgICAgaW50cHRyX3QgZGlzdGFuY2UgPSAoaW50cHRy
X3QpKGRzdFB0ciAtIChwdHIgKyA1KSk7DQogICAgICAgIFdURjo6dW5hbGlnbmVkU3RvcmU8dWlu
dDhfdD4ocHRyLCBzdGF0aWNfY2FzdDx1aW50OF90PihPUF9KTVBfcmVsMzIpKTsNCiAgICAgICAg
V1RGOjp1bmFsaWduZWRTdG9yZTxpbnQzMl90PihwdHIgKyAxLCBzdGF0aWNfY2FzdDxpbnQzMl90
PihkaXN0YW5jZSkpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIDU7DQogICAgfQ0KDQogICAg
c3RhdGljIGNvbnN0ZXhwciBwdHJkaWZmX3QgcGF0Y2hhYmxlSnVtcFNpemUoKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIDU7DQogICAgfQ0KICAgIA0KDQogICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFRvX21vdnFfaTY0cih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBpbnQ2NF90IGltbSwgUmVnaXN0
ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUg
PSAxMDsgDQogICAgICAgIGNvbnN0IGludCByZXhCeXRlcyA9IDE7DQogICAgICAgIGNvbnN0IGlu
dCBvcGNvZGVCeXRlcyA9IDE7DQogICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOw0KICAgICAgICBwdHJbMF0gPSBQUkVfUkVY
IHwgKDEgPDwgMykgfCAoZHN0ID4+IDMpOw0KICAgICAgICBwdHJbMV0gPSBPUF9NT1ZfRUFYSXYg
fCAoZHN0ICYgNyk7DQogICAgICAgIA0KICAgICAgICB1bmlvbiB7DQogICAgICAgICAgICB1aW50
NjRfdCBhc1dvcmQ7DQogICAgICAgICAgICB1aW50OF90IGFzQnl0ZXNbOF07DQogICAgICAgIH0g
dTsNCiAgICAgICAgdS5hc1dvcmQgPSBpbW07DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJl
eEJ5dGVzICsgb3Bjb2RlQnl0ZXM7IGkgPCBpbnN0cnVjdGlvblNpemU7ICsraSkNCiAgICAgICAg
ICAgIHB0cltpXSA9IHUuYXNCeXRlc1tpIC0gcmV4Qnl0ZXMgLSBvcGNvZGVCeXRlc107DQogICAg
fQ0KDQogICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX21vdmxfaTMycih2b2lkKiBpbnN0cnVj
dGlvblN0YXJ0LCBpbnQzMl90IGltbSwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGNvbnN0IHVu
c2lnbmVkIGluc3RydWN0aW9uU2l6ZSA9IDY7IA0KICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMg
PSAxOw0KICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOw0KICAgICAgICB1aW50OF90
KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsNCiAg
ICAgICAgcHRyWzBdID0gUFJFX1JFWCB8IChkc3QgPj4gMyk7DQogICAgICAgIHB0clsxXSA9IE9Q
X01PVl9FQVhJdiB8IChkc3QgJiA3KTsNCiAgICAgICAgDQogICAgICAgIHVuaW9uIHsNCiAgICAg
ICAgICAgIHVpbnQzMl90IGFzV29yZDsNCiAgICAgICAgICAgIHVpbnQ4X3QgYXNCeXRlc1s0XTsN
CiAgICAgICAgfSB1Ow0KICAgICAgICB1LmFzV29yZCA9IGltbTsNCiAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlczsgaSA8IGluc3RydWN0aW9uU2l6ZTsgKytp
KQ0KICAgICAgICAgICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSByZXhCeXRlcyAtIG9wY29kZUJ5
dGVzXTsNCiAgICB9DQojbGluZSAzODY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQoNCiAgICBzdGF0
aWMgdm9pZCByZXZlcnRKdW1wVG9fY21wbF9pcl9mb3JjZTMyKHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQsIGludDMyX3QgaW1tLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGNvbnN0IGlu
dCBvcGNvZGVCeXRlcyA9IDE7DQogICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsNCiAgICAgICAgcHRyWzBdID0gT1BfR1JPVVAx
X0V2SXo7DQogICAgICAgIHB0clsxXSA9IChYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TW9kUm1S
ZWdpc3RlciA8PCA2KSB8IChHUk9VUDFfT1BfQ01QIDw8IDMpIHwgZHN0Ow0KICAgICAgICB1bmlv
biB7DQogICAgICAgICAgICB1aW50MzJfdCBhc1dvcmQ7DQogICAgICAgICAgICB1aW50OF90IGFz
Qnl0ZXNbNF07DQogICAgICAgIH0gdTsNCiAgICAgICAgdS5hc1dvcmQgPSBpbW07DQogICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlczsgaSA8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOyArK2kpDQogICAgICAgICAg
ICBwdHJbaV0gPSB1LmFzQnl0ZXNbaSAtIG9wY29kZUJ5dGVzIC0gbW9kUk1CeXRlc107DQogICAg
fQ0KICAgIA0KICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19jbXBsX2ltX2ZvcmNlMzIodm9p
ZCogaW5zdHJ1Y3Rpb25TdGFydCwgaW50MzJfdCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
ZHN0KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKW9mZnNldCk7DQogICAgICAgIGNvbnN0IGludCBv
cGNvZGVCeXRlcyA9IDE7DQogICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsNCiAgICAgICAgcHRyWzBdID0gT1BfR1JPVVAxX0V2
SXo7DQogICAgICAgIHB0clsxXSA9IChYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6TW9kUm1NZW1v
cnlOb0Rpc3AgPDwgNikgfCAoR1JPVVAxX09QX0NNUCA8PCAzKSB8IGRzdDsNCiAgICAgICAgdW5p
b24gew0KICAgICAgICAgICAgdWludDMyX3QgYXNXb3JkOw0KICAgICAgICAgICAgdWludDhfdCBh
c0J5dGVzWzRdOw0KICAgICAgICB9IHU7DQogICAgICAgIHUuYXNXb3JkID0gaW1tOw0KICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBvcGNvZGVCeXRlcyArIG1vZFJNQnl0ZXM7IGkgPCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsgKytpKQ0KICAgICAgICAg
ICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSBvcGNvZGVCeXRlcyAtIG1vZFJNQnl0ZXNdOw0KICAg
IH0NCiAgICANCiAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rp
b25TdGFydCkNCiAgICB7DQogICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOw0KDQogICAgICAgIGlmICgoKnB0ciAmIH4xNSkg
PT0gUFJFX1JFWCkNCiAgICAgICAgICAgIHB0cisrOw0KI2xpbmUgMzkxMCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2Vt
Ymxlci5oIg0KICAgICAgICBzd2l0Y2ggKCpwdHIpIHsNCiAgICAgICAgY2FzZSBPUF9NT1ZfR3ZF
djoNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIE9QX0xFQToNCiAgICAgICAgICAg
ICpwdHIgPSBPUF9NT1ZfR3ZFdjsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBkZWZhdWx0
Og0KICAgICAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBp
bGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDM5MTcsICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1i
bGVyLmgiLCAgX19GVU5DVElPTl9fICAsIDI2ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAg
fQ0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQ0KICAgIHsNCiAgICAgICAgdWludDhfdCogcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7DQoNCiAgICAg
ICAgaWYgKCgqcHRyICYgfjE1KSA9PSBQUkVfUkVYKQ0KICAgICAgICAgICAgcHRyKys7DQojbGlu
ZSAzOTI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgiDQogICAgICAgIHN3aXRjaCAoKnB0cikgew0KICAg
ICAgICBjYXNlIE9QX01PVl9HdkV2Og0KICAgICAgICAgICAgKnB0ciA9IE9QX0xFQTsNCiAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIE9QX0xFQToNCiAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50
ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDM5MzUs
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2Vt
YmxlclxcWDg2QXNzZW1ibGVyLmgiLCAgX19GVU5DVElPTl9fICAsIDI3ICk7IH0gd2hpbGUgKGZh
bHNlKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2Fs
bFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICByZXR1cm4gY2FsbC5tX29mZnNldDsNCiAgICB9DQoNCiAgICBzdGF0aWMg
dm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJl
bCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90Pihjb2RlKSArIGxhYmVsLm1f
b2Zmc2V0KTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGludCBnZXREaWZmZXJlbmNlQmV0d2Vl
bkxhYmVscyhBc3NlbWJsZXJMYWJlbCBhLCBBc3NlbWJsZXJMYWJlbCBiKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGIubV9vZmZzZXQgLSBhLm1fb2Zmc2V0Ow0KICAgIH0NCiAgICANCiAgICB1bnNp
Z25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0N
Cg0KICAgIHZvaWQgbm9wKCkNCiAgICB7DQogICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9OT1ApOw0KICAgIH0NCg0KICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYpKHZvaWQq
LCBjb25zdCB2b2lkKiwgc2l6ZV90KTsNCg0KICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rpb24gY29w
eT4NCiAgICBzdGF0aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkNCiAg
ICB7DQogICAgICAgICh2b2lkKWNvcHk7DQoNCiAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qg
bm9wc1sxMF1bMTBdID0gew0KICAgICAgICAgICAgDQogICAgICAgICAgICB7MHg5MH0sDQogICAg
ICAgICAgICANCiAgICAgICAgICAgIHsweDY2LCAweDkwfSwNCiAgICAgICAgICAgIA0KICAgICAg
ICAgICAgezB4MGYsIDB4MWYsIDB4MDB9LA0KICAgICAgICAgICAgDQogICAgICAgICAgICB7MHgw
ZiwgMHgxZiwgMHg0MCwgMHgwOH0sDQogICAgICAgICAgICANCiAgICAgICAgICAgIHsweDBmLCAw
eDFmLCAweDQ0LCAweDAwLCAweDA4fSwNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgezB4NjYs
IDB4MGYsIDB4MWYsIDB4NDQsIDB4MDAsIDB4MDh9LA0KICAgICAgICAgICAgDQogICAgICAgICAg
ICB7MHgwZiwgMHgxZiwgMHg4MCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMH0sDQogICAgICAgICAg
ICANCiAgICAgICAgICAgIHsweDBmLCAweDFmLCAweDg0LCAweDAwLCAweDAwLCAweDAyLCAweDAw
LCAweDAwfSwNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgezB4NjYsIDB4MGYsIDB4MWYsIDB4
ODQsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDB9LA0KICAgICAgICAgICAgDQogICAgICAg
ICAgICB7MHg2NiwgMHgyZSwgMHgwZiwgMHgxZiwgMHg4NCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgw
MCwgMHgwMH0NCiAgICAgICAgfTsNCg0KICAgICAgICB1aW50OF90KiB3aGVyZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGJhc2UpOw0KICAgICAgICB3aGlsZSAoc2l6ZSkgew0KICAgICAg
ICAgICAgdW5zaWduZWQgbm9wU2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbjxz
aXplX3Q+KHNpemUsIDE1KSk7DQogICAgICAgICAgICB1bnNpZ25lZCBudW1QcmVmaXhlcyA9IG5v
cFNpemUgPD0gMTAgPyAwIDogbm9wU2l6ZSAtIDEwOw0KICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSAhPSBudW1QcmVmaXhlczsgKytpKQ0KICAgICAgICAgICAgICAgICp3aGVyZSsr
ID0gMHg2NjsNCg0KICAgICAgICAgICAgdW5zaWduZWQgbm9wUmVzdCA9IG5vcFNpemUgLSBudW1Q
cmVmaXhlczsNCiAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbm9wUmVzdDsg
KytpKQ0KICAgICAgICAgICAgICAgICp3aGVyZSsrID0gbm9wc1tub3BSZXN0LTFdW2ldOw0KDQog
ICAgICAgICAgICBzaXplIC09IG5vcFNpemU7DQogICAgICAgIH0NCg0KDQojbGluZSA0MDA5ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxl
clxcWDg2QXNzZW1ibGVyLmgiDQogICAgfQ0KDQogICAgDQogICAgX19mb3JjZWlubGluZSBzdGF0
aWMgdm9pZCBjYWNoZUZsdXNoKHZvaWQqLCBzaXplX3QpIHsgfQ0KDQpwcml2YXRlOg0KDQogICAg
c3RhdGljIHZvaWQgc2V0UG9pbnRlcih2b2lkKiB3aGVyZSwgdm9pZCogdmFsdWUpDQogICAgew0K
ICAgICAgICBXVEY6OnVuYWxpZ25lZFN0b3JlPHZvaWQqPihiaXR3aXNlX2Nhc3Q8dm9pZCoqPih3
aGVyZSkgLSAxLCB2YWx1ZSk7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgc2V0SW50MzIodm9p
ZCogd2hlcmUsIGludDMyX3QgdmFsdWUpDQogICAgew0KICAgICAgICBXVEY6OnVuYWxpZ25lZFN0
b3JlPGludDMyX3Q+KGJpdHdpc2VfY2FzdDxpbnQzMl90Kj4od2hlcmUpIC0gMSwgdmFsdWUpOw0K
ICAgIH0NCiAgICANCiAgICBzdGF0aWMgdm9pZCBzZXRJbnQ4KHZvaWQqIHdoZXJlLCBpbnQ4X3Qg
dmFsdWUpDQogICAgew0KICAgICAgICBXVEY6OnVuYWxpZ25lZFN0b3JlPGludDhfdD4oYml0d2lz
ZV9jYXN0PGludDhfdCo+KHdoZXJlKSAtIDEsIHZhbHVlKTsNCiAgICB9DQoNCiAgICBzdGF0aWMg
dm9pZCBzZXRSZWwzMih2b2lkKiBmcm9tLCB2b2lkKiB0bykNCiAgICB7DQogICAgICAgIGludHB0
cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGZyb20pOw0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgc2V0
SW50MzIoZnJvbSwgb2Zmc2V0KTsNCiAgICB9DQoNCiAgICBjbGFzcyBYODZJbnN0cnVjdGlvbkZv
cm1hdHRlciB7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heEluc3RydWN0aW9uU2l6
ZSA9IDE2Ow0KDQogICAgcHVibGljOg0KICAgICAgICBlbnVtIE1vZFJtTW9kZSB7DQogICAgICAg
ICAgICBNb2RSbU1lbW9yeU5vRGlzcCA9IDAsDQogICAgICAgICAgICBNb2RSbU1lbW9yeURpc3A4
ID0gMSA8PCA2LA0KICAgICAgICAgICAgTW9kUm1NZW1vcnlEaXNwMzIgPSAyIDw8IDYsDQogICAg
ICAgICAgICBNb2RSbVJlZ2lzdGVyID0gMyA8PCA2LA0KICAgICAgICB9Ow0KDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQoNCiAgICAgICAgdm9pZCBwcmVmaXgoT25lQnl0ZU9wY29kZUlE
IHByZSkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZShwcmUpOw0KICAg
ICAgICB9DQoNCg0KICAgICAgICANCiAgICAgICAgc3RhdGljIGJvb2wgYnl0ZVJlZ1JlcXVpcmVz
UmV4KGludCByZWcpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoWDg2UmVn
aXN0ZXJzOjplc3AgPT0gNCwgIk5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIE9SLW1hc2tpbmciKTsN
CiAgICAgICAgICAgIHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVyczo6ZXNwKTsNCiAgICAgICAg
fQ0KICAgICAgICBzdGF0aWMgYm9vbCBieXRlUmVnUmVxdWlyZXNSZXgoaW50IGEsIGludCBiKQ0K
ICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gYnl0ZVJlZ1JlcXVpcmVzUmV4KGEgfCBiKTsN
CiAgICAgICAgfQ0KDQogICAgICAgIA0KICAgICAgICBzdGF0aWMgYm9vbCByZWdSZXF1aXJlc1Jl
eChpbnQgcmVnKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KFg4NlJlZ2lz
dGVyczo6cjggPT0gOCwgIk5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIE9SLW1hc2tpbmciKTsNCiAg
ICAgICAgICAgIHJldHVybiAocmVnID49IFg4NlJlZ2lzdGVyczo6cjgpOw0KICAgICAgICB9DQog
ICAgICAgIHN0YXRpYyBib29sIHJlZ1JlcXVpcmVzUmV4KGludCBhLCBpbnQgYikNCiAgICAgICAg
ew0KICAgICAgICAgICAgcmV0dXJuIHJlZ1JlcXVpcmVzUmV4KGEgfCBiKTsNCiAgICAgICAgfQ0K
ICAgICAgICBzdGF0aWMgYm9vbCByZWdSZXF1aXJlc1JleChpbnQgYSwgaW50IGIsIGludCBjKQ0K
ICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gcmVnUmVxdWlyZXNSZXgoYSB8IGIgfCBjKTsN
CiAgICAgICAgfQ0KDQoNCg0KDQoNCg0KI2xpbmUgNDA5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0K
DQogICAgICAgIGNsYXNzIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIDogcHVibGljIEFz
c2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIgew0KICAgICAgICBwdWJsaWM6DQogICAgICAgICAg
ICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlcihBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlcikN
CiAgICAgICAgICAgICAgICA6IEFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXIoYnVmZmVyLCBt
YXhJbnN0cnVjdGlvblNpemUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICB9DQoNCiAgICAg
ICAgICAgIA0KDQogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgbm9CYXNl
ID0gWDg2UmVnaXN0ZXJzOjplYnA7DQogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lz
dGVySUQgaGFzU2liID0gWDg2UmVnaXN0ZXJzOjplc3A7DQogICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIFJlZ2lzdGVySUQgbm9JbmRleCA9IFg4NlJlZ2lzdGVyczo6ZXNwOw0KDQoNCiAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBub0Jhc2UyID0gWDg2UmVnaXN0ZXJz
OjpyMTM7DQogICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgaGFzU2liMiA9
IFg4NlJlZ2lzdGVyczo6cjEyOw0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIF9fZm9yY2Vp
bmxpbmUgdm9pZCBlbWl0UmV4KGJvb2wgdywgaW50IHIsIGludCB4LCBpbnQgYikNCiAgICAgICAg
ICAgIHsNCiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgICAgICBwdXRCeXRl
VW5jaGVja2VkKFBSRV9SRVggfCAoKGludCl3IDw8IDMpIHwgKChyPj4zKTw8MikgfCAoKHg+PjMp
PDwxKSB8IChiPj4zKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgX19mb3JjZWlubGluZSB2b2lkIGVtaXRSZXhXKGludCByLCBpbnQgeCwgaW50IGIpDQogICAg
ICAgICAgICB7DQogICAgICAgICAgICAgICAgZW1pdFJleCh0cnVlLCByLCB4LCBiKTsNCiAgICAg
ICAgICAgIH0NCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIF9fZm9y
Y2VpbmxpbmUgdm9pZCBlbWl0UmV4SWYoYm9vbCBjb25kaXRpb24sIGludCByLCBpbnQgeCwgaW50
IGIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbikNCiAgICAg
ICAgICAgICAgICAgICAgZW1pdFJleChmYWxzZSwgciwgeCwgYik7DQogICAgICAgICAgICB9DQoN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgX19mb3JjZWlubGluZSB2b2lkIGVtaXRSZXhJZk5l
ZWRlZChpbnQgciwgaW50IHgsIGludCBiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IGVtaXRSZXhJZihyZWdSZXF1aXJlc1JleChyLCB4LCBiKSwgciwgeCwgYik7DQogICAgICAgICAg
ICB9DQoNCg0KDQoNCiNsaW5lIDQxNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCg0KICAgICAgICAg
ICAgX19mb3JjZWlubGluZSB2b2lkIHB1dE1vZFJtKE1vZFJtTW9kZSBtb2RlLCBpbnQgcmVnLCBS
ZWdpc3RlcklEIHJtKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHB1dEJ5dGVVbmNo
ZWNrZWQobW9kZSB8ICgocmVnICYgNykgPDwgMykgfCAocm0gJiA3KSk7DQogICAgICAgICAgICB9
DQoNCiAgICAgICAgICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBwdXRNb2RSbVNpYihNb2RSbU1vZGUg
bW9kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAg
ICAgICAgICAgcHV0TW9kUm0obW9kZSwgcmVnLCBoYXNTaWIpOw0KICAgICAgICAgICAgICAgIHB1
dEJ5dGVVbmNoZWNrZWQoKHNjYWxlIDw8IDYpIHwgKChpbmRleCAmIDcpIDw8IDMpIHwgKGJhc2Ug
JiA3KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBy
ZWdpc3Rlck1vZFJNKGludCByZWcsIFJlZ2lzdGVySUQgcm0pDQogICAgICAgICAgICB7DQogICAg
ICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1SZWdpc3RlciwgcmVnLCBybSk7DQogICAgICAgICAg
ICB9DQoNCiAgICAgICAgICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBtZW1vcnlNb2RSTShpbnQgcmVn
LCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpDQogICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgDQoNCiAgICAgICAgICAgICAgICBpZiAoKGJhc2UgPT0gaGFzU2liKSB8fCAoYmFzZSA9
PSBoYXNTaWIyKSkgew0KDQoNCiNsaW5lIDQxNzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCiAgICAg
ICAgICAgICAgICAgICAgaWYgKCFvZmZzZXQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgcHV0
TW9kUm1TaWIoTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgYmFzZSwgbm9JbmRleCwgMCk7DQogICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKG9mZnNldCkpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlzcDgsIHJl
ZywgYmFzZSwgbm9JbmRleCwgMCk7DQogICAgICAgICAgICAgICAgICAgICAgICBwdXRCeXRlVW5j
aGVja2VkKG9mZnNldCk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlLCBu
b0luZGV4LCAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChvZmZz
ZXQpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCg0K
ICAgICAgICAgICAgICAgICAgICBpZiAoIW9mZnNldCAmJiAoYmFzZSAhPSBub0Jhc2UpICYmIChi
YXNlICE9IG5vQmFzZTIpKQ0KDQoNCiNsaW5lIDQxODUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCINCiAg
ICAgICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtKE1vZFJtTWVtb3J5Tm9EaXNwLCByZWcsIGJh
c2UpOw0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihv
ZmZzZXQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURp
c3A4LCByZWcsIGJhc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcHV0Qnl0ZVVuY2hlY2tl
ZChvZmZzZXQpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg
ICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlEaXNwMzIsIHJlZywgYmFzZSk7DQogICAgICAg
ICAgICAgICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQob2Zmc2V0KTsNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAg
X19mb3JjZWlubGluZSB2b2lkIG1lbW9yeU1vZFJNX2Rpc3A4KGludCByZWcsIFJlZ2lzdGVySUQg
YmFzZSwgaW50IG9mZnNldCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgICAgICAgICBpZiAoKGJhc2UgPT0gaGFz
U2liKSB8fCAoYmFzZSA9PSBoYXNTaWIyKSkgew0KDQoNCiNsaW5lIDQyMDUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3Nl
bWJsZXIuaCINCiAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNw
OCwgcmVnLCBiYXNlLCBub0luZGV4LCAwKTsNCiAgICAgICAgICAgICAgICAgICAgcHV0Qnl0ZVVu
Y2hlY2tlZChvZmZzZXQpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAg
ICAgICAgIHB1dE1vZFJtKE1vZFJtTWVtb3J5RGlzcDgsIHJlZywgYmFzZSk7DQogICAgICAgICAg
ICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsNCiAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBtZW1vcnlNb2RS
TV9kaXNwMzIoaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQ0KICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgIA0KDQogICAgICAgICAgICAgICAgaWYgKChiYXNlID09IGhh
c1NpYikgfHwgKGJhc2UgPT0gaGFzU2liMikpIHsNCg0KDQojbGluZSA0MjIxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNz
ZW1ibGVyLmgiDQogICAgICAgICAgICAgICAgICAgIHB1dE1vZFJtU2liKE1vZFJtTWVtb3J5RGlz
cDMyLCByZWcsIGJhc2UsIG5vSW5kZXgsIDApOw0KICAgICAgICAgICAgICAgICAgICBwdXRJbnRV
bmNoZWNrZWQob2Zmc2V0KTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
ICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeURpc3AzMiwgcmVnLCBiYXNlKTsNCiAgICAgICAg
ICAgICAgICAgICAgcHV0SW50VW5jaGVja2VkKG9mZnNldCk7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBt
ZW1vcnlNb2RSTShpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgaW50IG9mZnNldCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAoKHZv
aWQpMCk7DQoNCg0KICAgICAgICAgICAgICAgIGlmICghb2Zmc2V0ICYmIChiYXNlICE9IG5vQmFz
ZSkgJiYgKGJhc2UgIT0gbm9CYXNlMikpDQoNCg0KI2xpbmUgNDIzOCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxl
ci5oIg0KICAgICAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9yeU5vRGlzcCwg
cmVnLCBiYXNlLCBpbmRleCwgc2NhbGUpOw0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKG9mZnNldCkpIHsNCiAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1T
aWIoTW9kUm1NZW1vcnlEaXNwOCwgcmVnLCBiYXNlLCBpbmRleCwgc2NhbGUpOw0KICAgICAgICAg
ICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKG9mZnNldCk7DQogICAgICAgICAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1vcnlEaXNwMzIs
IHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlKTsNCiAgICAgICAgICAgICAgICAgICAgcHV0SW50VW5j
aGVja2VkKG9mZnNldCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAg
ICAgICAgICBfX2ZvcmNlaW5saW5lIHZvaWQgbWVtb3J5TW9kUk1BZGRyKGludCByZWcsIHVpbnQz
Ml90IGFkZHJlc3MpDQogICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICBwdXRNb2RSbVNp
YihNb2RSbU1lbW9yeU5vRGlzcCwgcmVnLCBub0Jhc2UsIG5vSW5kZXgsIDApOw0KDQoNCg0KI2xp
bmUgNDI1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0KICAgICAgICAgICAgICAgIHB1dEludFVuY2hl
Y2tlZChhZGRyZXNzKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX19mb3JjZWlubGlu
ZSB2b2lkIHR3b0J5dGVzVmV4KE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4LCBSZWdpc3RlcklE
IGluT3BSZWcsIFJlZ2lzdGVySUQgcikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBw
dXRCeXRlVW5jaGVja2VkKFZleFByZWZpeDo6VHdvQnl0ZXMpOw0KDQogICAgICAgICAgICAgICAg
dWludDhfdCBzZWNvbmRCeXRlID0gdmV4RW5jb2RlU2ltZFByZWZpeChzaW1kUHJlZml4KTsNCiAg
ICAgICAgICAgICAgICBzZWNvbmRCeXRlIHw9ICh+aW5PcFJlZyAmIDB4ZikgPDwgMzsNCiAgICAg
ICAgICAgICAgICBzZWNvbmRCeXRlIHw9ICFyZWdSZXF1aXJlc1JleChyKSA8PCA3Ow0KICAgICAg
ICAgICAgICAgIHB1dEJ5dGVVbmNoZWNrZWQoc2Vjb25kQnl0ZSk7DQogICAgICAgICAgICB9DQoN
CiAgICAgICAgICAgIF9fZm9yY2VpbmxpbmUgdm9pZCB0aHJlZUJ5dGVzVmV4TmRzKE9uZUJ5dGVP
cGNvZGVJRCBzaW1kUHJlZml4LCBWZXhJbXBsaWVkQnl0ZXMgaW1wbGllZEJ5dGVzLCBSZWdpc3Rl
cklEIHIsIFJlZ2lzdGVySUQgaW5PcFJlZywgUmVnaXN0ZXJJRCB4LCBSZWdpc3RlcklEIGIpDQog
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcHV0Qnl0ZVVuY2hlY2tlZChWZXhQcmVmaXg6
OlRocmVlQnl0ZXMpOw0KDQogICAgICAgICAgICAgICAgdWludDhfdCBzZWNvbmRCeXRlID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oaW1wbGllZEJ5dGVzKTsNCiAgICAgICAgICAgICAgICBzZWNvbmRC
eXRlIHw9ICFyZWdSZXF1aXJlc1JleChyKSA8PCA3Ow0KICAgICAgICAgICAgICAgIHNlY29uZEJ5
dGUgfD0gIXJlZ1JlcXVpcmVzUmV4KHgpIDw8IDY7DQogICAgICAgICAgICAgICAgc2Vjb25kQnl0
ZSB8PSAhcmVnUmVxdWlyZXNSZXgoYikgPDwgNTsNCiAgICAgICAgICAgICAgICBwdXRCeXRlVW5j
aGVja2VkKHNlY29uZEJ5dGUpOw0KDQogICAgICAgICAgICAgICAgdWludDhfdCB0aGlyZEJ5dGUg
PSB2ZXhFbmNvZGVTaW1kUHJlZml4KHNpbWRQcmVmaXgpOw0KICAgICAgICAgICAgICAgIHRoaXJk
Qnl0ZSB8PSAofmluT3BSZWcgJiAweGYpIDw8IDM7DQogICAgICAgICAgICAgICAgcHV0Qnl0ZVVu
Y2hlY2tlZCh0aGlyZEJ5dGUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBfX2ZvcmNl
aW5saW5lIHZvaWQgdGhyZWVCeXRlc1ZleE5kcyhPbmVCeXRlT3Bjb2RlSUQgc2ltZFByZWZpeCwg
VmV4SW1wbGllZEJ5dGVzIGltcGxpZWRCeXRlcywgUmVnaXN0ZXJJRCByLCBSZWdpc3RlcklEIGlu
T3BSZWcsIFJlZ2lzdGVySUQgYikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBwdXRC
eXRlVW5jaGVja2VkKFZleFByZWZpeDo6VGhyZWVCeXRlcyk7DQoNCiAgICAgICAgICAgICAgICB1
aW50OF90IHNlY29uZEJ5dGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihpbXBsaWVkQnl0ZXMpOw0K
ICAgICAgICAgICAgICAgIHNlY29uZEJ5dGUgfD0gIXJlZ1JlcXVpcmVzUmV4KHIpIDw8IDc7DQog
ICAgICAgICAgICAgICAgc2Vjb25kQnl0ZSB8PSAxIDw8IDY7IA0KICAgICAgICAgICAgICAgIHNl
Y29uZEJ5dGUgfD0gIXJlZ1JlcXVpcmVzUmV4KGIpIDw8IDU7DQogICAgICAgICAgICAgICAgcHV0
Qnl0ZVVuY2hlY2tlZChzZWNvbmRCeXRlKTsNCg0KICAgICAgICAgICAgICAgIHVpbnQ4X3QgdGhp
cmRCeXRlID0gdmV4RW5jb2RlU2ltZFByZWZpeChzaW1kUHJlZml4KTsNCiAgICAgICAgICAgICAg
ICB0aGlyZEJ5dGUgfD0gKH5pbk9wUmVnICYgMHhmKSA8PCAzOw0KICAgICAgICAgICAgICAgIHB1
dEJ5dGVVbmNoZWNrZWQodGhpcmRCeXRlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgcHJpdmF0
ZToNCiAgICAgICAgICAgIHVpbnQ4X3QgdmV4RW5jb2RlU2ltZFByZWZpeChPbmVCeXRlT3Bjb2Rl
SUQgc2ltZFByZWZpeCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKHNp
bWRQcmVmaXgpIHsNCiAgICAgICAgICAgICAgICBjYXNlIDB4NjY6DQogICAgICAgICAgICAgICAg
ICAgIHJldHVybiAxOw0KICAgICAgICAgICAgICAgIGNhc2UgMHhGMzoNCiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDI7DQogICAgICAgICAgICAgICAgY2FzZSAweEYyOg0KICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMzsNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAg
ICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5j
ZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDMwOSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxYODZBc3NlbWJsZXIuaCIs
ICBfX0ZVTkNUSU9OX18gICwgMjggKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICB9
Ow0KDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAg
ICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KDQogICAgICAgIHZvaWQgb25lQnl0ZU9wKE9uZUJ5dGVPcGNv
ZGVJRCBvcGNvZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVm
ZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBvbmVCeXRlT3AoT25l
Qnl0ZU9wY29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCByZWcpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAg
ICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKDAsIDAsIHJlZyk7DQogICAgICAgICAgICB3
cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUgKyAocmVnICYgNykpOw0KICAgICAgICB9DQoN
CiAgICAgICAgdm9pZCBvbmVCeXRlT3AoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywg
UmVnaXN0ZXJJRCBybSkNCiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25C
dWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4
SWZOZWVkZWQocmVnLCAwLCBybSk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tl
ZChvcGNvZGUpOw0KICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7DQog
ICAgICAgIH0NCg0KICAgICAgICB2b2lkIG9uZUJ5dGVPcChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2Rl
LCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQog
ICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7DQogICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAgICAgd3JpdGVy
Lm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZv
aWQgb25lQnl0ZU9wX2Rpc3AzMihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdp
c3RlcklEIGJhc2UsIGludCBvZmZzZXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmdsZUlu
c3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICB3cml0
ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgMCwgYmFzZSk7DQogICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNX2Rp
c3AzMihyZWcsIGJhc2UsIG9mZnNldCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHZv
aWQgb25lQnl0ZU9wX2Rpc3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lz
dGVySUQgYmFzZSwgaW50IG9mZnNldCkNCiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5z
dHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRl
ci5lbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRC
eXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1fZGlz
cDgocmVnLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBvbmVCeXRl
T3AoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAg
ICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKHJlZywgaW5kZXgsIGJhc2UpOw0KICAgICAg
ICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgICAgIHdyaXRl
ci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAg
fQ0KDQogICAgICAgIHZvaWQgb25lQnl0ZU9wQWRkcihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnLCB1aW50MzJfdCBhZGRyZXNzKQ0KICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgICAgIHdyaXRlci5tZW1vcnlN
b2RSTUFkZHIocmVnLCBhZGRyZXNzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgdHdvQnl0
ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmds
ZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICB3
cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOw0KICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQg
dHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcpDQogICAgICAgIHsNCiAg
ICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7
DQogICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmTmVlZGVkKDAsIDAsIHJlZyk7DQogICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOw0KICAgICAgICAg
ICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlICsgKHJlZyAmIDcpKTsNCiAgICAgICAg
fQ0KDQogICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCBy
ZWcsIFJlZ2lzdGVySUQgcm0pDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmdsZUluc3RydWN0
aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICB3cml0ZXIuZW1p
dFJleElmTmVlZGVkKHJlZywgMCwgcm0pOw0KICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNo
ZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVj
a2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIucmVnaXN0ZXJNb2RSTShyZWcsIHJtKTsN
CiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNv
ZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkNCiAgICAgICAgew0KICAg
ICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsN
CiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVnLCAwLCBiYXNlKTsNCiAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7DQogICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAgICAgd3JpdGVy
Lm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZv
aWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQ0KICAgICAgICB7
DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOw0KICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZk5lZWRlZChyZWcsIGluZGV4LCBiYXNl
KTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7
DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAg
ICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgdm9pZCB0d29CeXRlT3BBZGRyKFR3b0J5dGVPcGNvZGVJRCBv
cGNvZGUsIGludCByZWcsIHVpbnQzMl90IGFkZHJlc3MpDQogICAgICAgIHsNCiAgICAgICAgICAg
IFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOw0KICAgICAgICAg
ICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgICAgIHdyaXRlci5t
ZW1vcnlNb2RSTUFkZHIocmVnLCBhZGRyZXNzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQg
dmV4TmRzTGlnV2lnVHdvQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4LCBUd29CeXRl
T3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgYSwgUmVnaXN0ZXJJ
RCBiKQ0KICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRl
ciB3cml0ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgaWYgKHJlZ1JlcXVpcmVzUmV4KGIpKQ0K
ICAgICAgICAgICAgICAgIHdyaXRlci50aHJlZUJ5dGVzVmV4TmRzKHNpbWRQcmVmaXgsIFZleElt
cGxpZWRCeXRlczo6VHdvQnl0ZXNPcCwgZGVzdCwgYSwgYik7DQogICAgICAgICAgICBlbHNlDQog
ICAgICAgICAgICAgICAgd3JpdGVyLnR3b0J5dGVzVmV4KHNpbWRQcmVmaXgsIGEsIGRlc3QpOw0K
ICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgICAg
IHdyaXRlci5yZWdpc3Rlck1vZFJNKGRlc3QsIGIpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9p
ZCB2ZXhOZHNMaWdXaWdDb21tdXRhdGl2ZVR3b0J5dGVPcChPbmVCeXRlT3Bjb2RlSUQgc2ltZFBy
ZWZpeCwgVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklE
IGEsIFJlZ2lzdGVySUQgYikNCiAgICAgICAgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBp
ZiAocmVnUmVxdWlyZXNSZXgoYikpDQogICAgICAgICAgICAgICAgc3RkOjpzd2FwKGEsIGIpOw0K
ICAgICAgICAgICAgdmV4TmRzTGlnV2lnVHdvQnl0ZU9wKHNpbWRQcmVmaXgsIG9wY29kZSwgZGVz
dCwgYSwgYik7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIHZleE5kc0xpZ1dpZ1R3b0J5dGVP
cChPbmVCeXRlT3Bjb2RlSUQgc2ltZFByZWZpeCwgVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgUmVn
aXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIGEsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNldCkN
CiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3Jp
dGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIGlmIChyZWdSZXF1aXJlc1JleChiYXNlKSkNCiAg
ICAgICAgICAgICAgICB3cml0ZXIudGhyZWVCeXRlc1ZleE5kcyhzaW1kUHJlZml4LCBWZXhJbXBs
aWVkQnl0ZXM6OlR3b0J5dGVzT3AsIGRlc3QsIGEsIGJhc2UpOw0KICAgICAgICAgICAgZWxzZQ0K
ICAgICAgICAgICAgICAgIHdyaXRlci50d29CeXRlc1ZleChzaW1kUHJlZml4LCBhLCBkZXN0KTsN
CiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAg
ICB3cml0ZXIubWVtb3J5TW9kUk0oZGVzdCwgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgfQ0KDQog
ICAgICAgIHZvaWQgdmV4TmRzTGlnV2lnVHdvQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJl
Zml4LCBUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQg
YSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVy
IHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICBpZiAocmVnUmVxdWlyZXNSZXgoYmFzZSwg
aW5kZXgpKQ0KICAgICAgICAgICAgICAgIHdyaXRlci50aHJlZUJ5dGVzVmV4TmRzKHNpbWRQcmVm
aXgsIFZleEltcGxpZWRCeXRlczo6VHdvQnl0ZXNPcCwgZGVzdCwgYSwgaW5kZXgsIGJhc2UpOw0K
ICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHdyaXRlci50d29CeXRlc1ZleChzaW1k
UHJlZml4LCBhLCBkZXN0KTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSk7DQogICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0oZGVzdCwgYmFzZSwgaW5kZXgs
IHNjYWxlLCBvZmZzZXQpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCB0aHJlZUJ5dGVPcChU
d29CeXRlT3Bjb2RlSUQgdHdvQnl0ZVByZWZpeCwgVGhyZWVCeXRlT3Bjb2RlSUQgb3Bjb2RlKQ0K
ICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0
ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZ
VEVfRVNDQVBFKTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKHR3b0J5dGVQ
cmVmaXgpOw0KICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAg
ICAgICAgfQ0KDQogICAgICAgIHZvaWQgdGhyZWVCeXRlT3AoVHdvQnl0ZU9wY29kZUlEIHR3b0J5
dGVQcmVmaXgsIFRocmVlQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBy
bSkNCiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQocmVn
LCAwLCBybSk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9F
U0NBUEUpOw0KICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQodHdvQnl0ZVByZWZp
eCk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAg
ICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7DQogICAgICAgIH0NCg0KICAgICAg
ICB2b2lkIHRocmVlQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCB0d29CeXRlUHJlZml4LCBUaHJlZUJ5
dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IGRpc3BsYWNl
bWVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0
ZXIgd3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4SWZOZWVkZWQo
cmVnLCAwLCBiYXNlKTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJC
WVRFX0VTQ0FQRSk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZCh0d29CeXRl
UHJlZml4KTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQog
ICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBkaXNwbGFjZW1lbnQpOw0K
ICAgICAgICB9DQoNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAg
ICAgICAgDQoNCiAgICAgICAgdm9pZCBvbmVCeXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2Rl
KQ0KICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3
cml0ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhXKDAsIDAsIDApOw0K
ICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgfQ0K
DQogICAgICAgIHZvaWQgb25lQnl0ZU9wNjQoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgUmVnaXN0
ZXJJRCByZWcpDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVy
V3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcoMCwg
MCwgcmVnKTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSArIChy
ZWcgJiA3KSk7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9uZUJ5dGVP
cGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgcm0pDQogICAgICAgIHsNCiAgICAg
ICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQog
ICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBybSk7DQogICAgICAgICAgICB3cml0
ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVy
TW9kUk0ocmVnLCBybSk7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0KE9u
ZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgaW50IG9mZnNl
dCkNCiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIg
d3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIDAsIGJh
c2UpOw0KICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAg
ICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIG9mZnNldCk7DQogICAgICAgIH0N
Cg0KICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0X2Rpc3AzMihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2Rl
LCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQog
ICAgICAgICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBiYXNlKTsNCiAgICAgICAgICAgIHdy
aXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIubWVtb3J5
TW9kUk1fZGlzcDMyKHJlZywgYmFzZSwgb2Zmc2V0KTsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgdm9pZCBvbmVCeXRlT3A2NF9kaXNwOChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQg
cmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBvZmZzZXQpDQogICAgICAgIHsNCiAgICAgICAgICAg
IFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAg
ICAgICB3cml0ZXIuZW1pdFJleFcocmVnLCAwLCBiYXNlKTsNCiAgICAgICAgICAgIHdyaXRlci5w
dXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1f
ZGlzcDgocmVnLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBvbmVC
eXRlT3A2NChPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2Us
IFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50IG9mZnNldCkNCiAgICAgICAgew0KICAg
ICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsN
CiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIGluZGV4LCBiYXNlKTsNCiAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIu
bWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgIH0N
Cg0KICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0QWRkcihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBp
bnQgcmVnLCB1aW50MzJfdCBhZGRyZXNzKQ0KICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJ
bnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgd3Jp
dGVyLmVtaXRSZXhXKHJlZywgMCwgMCk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hl
Y2tlZChvcGNvZGUpOw0KICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNQWRkcihyZWcsIGFk
ZHJlc3MpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bj
b2RlSUQgb3Bjb2RlLCBpbnQgcmVnKQ0KICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJbnN0
cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgd3JpdGVy
LmVtaXRSZXhXKDAsIDAsIHJlZyk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tl
ZChPUF8yQllURV9FU0NBUEUpOw0KICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQo
b3Bjb2RlICsgKHJlZyAmIDcpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgdHdvQnl0ZU9w
NjQoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBybSkNCiAgICAg
ICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1f
YnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4VyhyZWcsIDAsIHJtKTsNCiAgICAg
ICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7DQogICAgICAg
ICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAgICAgd3JpdGVy
LnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIHR3b0J5
dGVPcDY0KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwg
aW50IG9mZnNldCkNCiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4Vyhy
ZWcsIDAsIGJhc2UpOw0KICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZ
VEVfRVNDQVBFKTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7
DQogICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOw0KICAg
ICAgICB9DQoNCiAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQgb3Bjb2Rl
LCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwg
aW50IG9mZnNldCkNCiAgICAgICAgew0KICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAgIHdyaXRlci5lbWl0UmV4Vyhy
ZWcsIGluZGV4LCBiYXNlKTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9Q
XzJCWVRFX0VTQ0FQRSk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOw0KICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNj
YWxlLCBvZmZzZXQpOw0KICAgICAgICB9DQojbGluZSA0NjEzICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcWDg2QXNzZW1ibGVyLmgi
DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIA0KICAgICAgICANCg0KICAgICAgICB2b2lkIG9uZUJ5dGVPcDgoT25lQnl0ZU9wY29kZUlE
IG9wY29kZSwgR3JvdXBPcGNvZGVJRCBncm91cE9wLCBSZWdpc3RlcklEIHJtKQ0KICAgICAgICB7
DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOw0KICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocm0p
LCAwLCAwLCBybSk7DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUp
Ow0KICAgICAgICAgICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0oZ3JvdXBPcCwgcm0pOw0KICAgICAg
ICB9DQoNCiAgICAgICAgdm9pZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGlu
dCByZWcsIFJlZ2lzdGVySUQgcm0pDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmdsZUluc3Ry
dWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICB3cml0ZXIu
ZW1pdFJleElmKGJ5dGVSZWdSZXF1aXJlc1JleChyZWcsIHJtKSwgcmVnLCAwLCBybSk7DQogICAg
ICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAgICAgd3Jp
dGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIG9u
ZUJ5dGVPcDgoT25lQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgUmVnaXN0ZXJJRCBiYXNl
LCBpbnQgb2Zmc2V0KQ0KICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1
ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJ
ZihieXRlUmVnUmVxdWlyZXNSZXgocmVnLCBiYXNlKSwgcmVnLCAwLCBiYXNlKTsNCiAgICAgICAg
ICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIu
bWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9p
ZCBvbmVCeXRlT3A4KE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQ0KICAgICAgICB7
DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOw0KICAgICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVn
KSB8fCByZWdSZXF1aXJlc1JleChpbmRleCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOw0KICAg
ICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgICAgIHdy
aXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIHZvaWQgdHdvQnl0ZU9wOChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBS
ZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBybSkNCiAgICAgICAgew0KICAgICAgICAgICAgU2lu
Z2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsNCiAgICAgICAgICAg
IHdyaXRlci5lbWl0UmV4SWYoYnl0ZVJlZ1JlcXVpcmVzUmV4KHJlZywgcm0pLCByZWcsIDAsIHJt
KTsNCiAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7
DQogICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOw0KICAgICAgICAg
ICAgd3JpdGVyLnJlZ2lzdGVyTW9kUk0ocmVnLCBybSk7DQogICAgICAgIH0NCg0KICAgICAgICB2
b2lkIHR3b0J5dGVPcDgoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgR3JvdXBPcGNvZGVJRCBncm91
cE9wLCBSZWdpc3RlcklEIHJtKQ0KICAgICAgICB7DQogICAgICAgICAgICBTaW5nbGVJbnN0cnVj
dGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOw0KICAgICAgICAgICAgd3JpdGVyLmVt
aXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocm0pLCAwLCAwLCBybSk7DQogICAgICAgICAgICB3
cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChPUF8yQllURV9FU0NBUEUpOw0KICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bjb2RlKTsNCiAgICAgICAgICAgIHdyaXRlci5yZWdpc3Rl
ck1vZFJNKGdyb3VwT3AsIHJtKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgdHdvQnl0ZU9w
OChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIGJhc2UsIGludCBv
ZmZzZXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3Jp
dGVyIHdyaXRlcihtX2J1ZmZlcik7DQogICAgICAgICAgICB3cml0ZXIuZW1pdFJleElmKGJ5dGVS
ZWdSZXF1aXJlc1JleChyZWcsIGJhc2UpLCByZWcsIDAsIGJhc2UpOw0KICAgICAgICAgICAgd3Jp
dGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsNCiAgICAgICAgICAgIHdyaXRl
ci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9k
Uk0ocmVnLCBiYXNlLCBvZmZzZXQpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCB0d29CeXRl
T3A4KFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQgb2Zmc2V0KQ0KICAgICAgICB7DQogICAgICAg
ICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOw0KICAg
ICAgICAgICAgd3JpdGVyLmVtaXRSZXhJZihieXRlUmVnUmVxdWlyZXNSZXgocmVnKSB8fCByZWdS
ZXF1aXJlc1JleChpbmRleCwgYmFzZSksIHJlZywgaW5kZXgsIGJhc2UpOw0KICAgICAgICAgICAg
d3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsNCiAgICAgICAgICAgIHdy
aXRlci5wdXRCeXRlVW5jaGVja2VkKG9wY29kZSk7DQogICAgICAgICAgICB3cml0ZXIubWVtb3J5
TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7DQogICAgICAgIH0NCg0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICB2b2lkIGltbWVk
aWF0ZTgoaW50IGltbSkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9idWZmZXIucHV0Qnl0ZVVu
Y2hlY2tlZChpbW0pOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBpbW1lZGlhdGUxNihpbnQg
aW1tKQ0KICAgICAgICB7DQogICAgICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydFVuY2hlY2tlZChp
bW0pOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBpbW1lZGlhdGUzMihpbnQgaW1tKQ0KICAg
ICAgICB7DQogICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRVbmNoZWNrZWQoaW1tKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIHZvaWQgaW1tZWRpYXRlNjQoaW50NjRfdCBpbW0pDQogICAgICAgIHsN
CiAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludDY0VW5jaGVja2VkKGltbSk7DQogICAgICAgIH0N
Cg0KICAgICAgICBBc3NlbWJsZXJMYWJlbCBpbW1lZGlhdGVSZWwzMigpDQogICAgICAgIHsNCiAg
ICAgICAgICAgIG1fYnVmZmVyLnB1dEludFVuY2hlY2tlZCgwKTsNCiAgICAgICAgICAgIHJldHVy
biBsYWJlbCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgDQoNCiAgICAgICAgc2l6ZV90IGNvZGVT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29kZVNpemUoKTsgfQ0KICAgICAgICBBc3Nl
bWJsZXJMYWJlbCBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7IH0NCiAg
ICAgICAgYm9vbCBpc0FsaWduZWQoaW50IGFsaWdubWVudCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuaXNBbGlnbmVkKGFsaWdubWVudCk7IH0NCiAgICAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQ0KDQogICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0
KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQoKTsgfQ0KDQogICAgcHVibGljOg0KICAg
ICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZmZXI7DQogICAgfSBtX2Zvcm1hdHRlcjsNCiAgICBp
bnQgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7DQogICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RX
YXRjaHBvaW50Ow0KfTsNCg0KfSANCg0KI2xpbmUgNDc1NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXFg4NkFzc2VtYmxlci5oIg0K
I2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYm9ydFJlYXNv
bi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoNCg0KZW51bSBBYm9ydFJlYXNv
biB7DQogICAgQUhDYWxsRnJhbWVNaXNhbGlnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9ICAxMCwNCiAgICBBSEluZGV4aW5nVHlwZUlzVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gIDIwLA0KICAgIEFISW5zYW5lQXJndW1lbnRDb3VudCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAgMzAsDQogICAgQUhJc05vdENlbGwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9ICA0MCwNCiAgICBBSElzTm90SW50MzIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gIDUwLA0KICAgIEFISXNOb3RKU0RvdWJsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgNjAsDQogICAgQUhJc05vdEpTSW50MzIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICA3MCwNCiAgICBBSElzTm90SlNOdW1i
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIDgwLA0KICAgIEFISXNOb3RO
dWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAgOTAsDQogICAgQUhT
dGFja1BvaW50ZXJNaXNhbGlnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEwMCwNCiAg
ICBBSFN0cnVjdHVyZUlESXNWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTEw
LA0KICAgIEFITm90Q2VsbE1hc2tOb3RJblBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxMjAsDQogICAgQUhOdW1iZXJUYWdOb3RJblBsYWNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDEzMCwNCiAgICBBSFR5cGVJbmZvSW5saW5lVHlwZUZsYWdzQXJlVmFsaWQgICAgICAg
ICAgICAgICAgID0gMTQwLA0KICAgIEFIVHlwZUluZm9Jc1ZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxNTAsDQogICAgQjNPb3BzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDE1NSwNCiAgICBERkdCYWlsZWRBdFRvcE9mQmxvY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMTYxLA0KICAgIERGR0JhaWxlZEF0RW5kT2ZOb2Rl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNjIsDQogICAgREZHQmFzaWNTdG9yYWdl
QWxsb2NhdG9yWmVyb1NpemUgICAgICAgICAgICAgICAgICA9IDE3MCwNCiAgICBERkdJc05vdENl
bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTgwLA0KICAgIERGR0lu
ZWZmZWN0aXZlV2F0Y2hwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxOTAsDQogICAg
REZHTmVnYXRpdmVTdHJpbmdMZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICA9IDIwMCwN
CiAgICBERkdTbG93UGF0aEdlbmVyYXRvckZlbGxUaHJvdWdoICAgICAgICAgICAgICAgICAgID0g
MjEwLA0KICAgIERGR1VucmVhY2hhYmxlQmFzaWNCbG9jayAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAyMjAsDQogICAgREZHVW5yZWFjaGFibGVOb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDIyNSwNCiAgICBERkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlv
biAgICAgICAgICAgID0gMjMwLA0KICAgIERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJv
dyAgICAgICAgICAgICAgICAgPSAyMzUsDQogICAgRlRMQ3Jhc2ggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDIzNiwNCiAgICBKSVREaWRSZXR1cm5Gcm9tVGFpbENh
bGwgICAgICAgICAgICAgICAgICAgICAgICAgID0gMjM3LA0KICAgIEpJVERpdk9wZXJhbmRzQXJl
Tm90TnVtYmVycyAgICAgICAgICAgICAgICAgICAgICAgPSAyNDAsDQogICAgSklUR2V0QnlWYWxS
ZXN1bHRJc05vdEVtcHR5ICAgICAgICAgICAgICAgICAgICAgICA9IDI1MCwNCiAgICBKSVROb3RT
dXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMjYwLA0KICAgIEpJ
VE9mZnNldElzTm90T3V0T2ZMaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAyNzAsDQog
ICAgSklUVW5jb3VnaHRFeGNlcHRpb25BZnRlckNhbGwgICAgICAgICAgICAgICAgICAgICA9IDI3
NSwNCiAgICBKSVRVbmV4cGVjdGVkQ2FsbEZyYW1lU2l6ZSAgICAgICAgICAgICAgICAgICAgICAg
ID0gMjc3LA0KICAgIEpJVFVucmVhc29uYWJsZUxvb3BIaW50SnVtcFRhcmdldCAgICAgICAgICAg
ICAgICAgPSAyODAsDQogICAgTWFjcm9Bc3NlbWJsZXJPb3BzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDI4NSwNCiAgICBSUFdVbnJlYXNvbmFibGVKdW1wVGFyZ2V0ICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMjkwLA0KICAgIFJlcGF0Y2hJbmVmZmVjdGl2ZVdhdGNocG9pbnQg
ICAgICAgICAgICAgICAgICAgICAgPSAzMDAsDQogICAgUmVwYXRjaEluc2FuZUFyZ3VtZW50Q291
bnQgICAgICAgICAgICAgICAgICAgICAgICA9IDMxMCwNCiAgICBUR0ludmFsaWRQb2ludGVyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMzIwLA0KICAgIFRHTm90U3VwcG9ydGVk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAzMzAsDQogICAgVW5jaGVja2Vk
T3ZlcmZsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDMzNSwNCn07DQoNCg0K
DQoNCmVudW0gQ29tcGlsZXJBYm9ydFJlYXNvbiB7DQogICAgQWJzdHJhY3RJbnRlcnByZXRlcklu
dmFsaWRUeXBlICAgICAgICAgICAgICAgID0gIDEwLA0KICAgIE9iamVjdEFsbG9jYXRpb25TaW5r
aW5nQXNzZXJ0aW9uRmFpbHVyZSAgICAgICA9IDEwMCwNCn07DQoNCn0gDQojbGluZSAyOSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJc
XEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCINCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxDb2RlTG9jYXRp
b24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xhc3MgTmVh
ckNhbGxNb2RlIDogdWludDhfdCB7IFJlZ3VsYXIsIFRhaWwgfTsNCg0KdGVtcGxhdGU8UHRyVGFn
PiBjbGFzcyBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbjsNCnRlbXBsYXRlPFB0clRhZz4gY2xhc3Mg
Q29kZUxvY2F0aW9uTGFiZWw7DQp0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIENvZGVMb2NhdGlvbkp1
bXA7DQp0ZW1wbGF0ZTxQdHJUYWc+IGNsYXNzIENvZGVMb2NhdGlvbkNhbGw7DQp0ZW1wbGF0ZTxQ
dHJUYWc+IGNsYXNzIENvZGVMb2NhdGlvbk5lYXJDYWxsOw0KdGVtcGxhdGU8UHRyVGFnPiBjbGFz
cyBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0Ow0KdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBD
b2RlTG9jYXRpb25EYXRhTGFiZWwzMjsNCnRlbXBsYXRlPFB0clRhZz4gY2xhc3MgQ29kZUxvY2F0
aW9uRGF0YUxhYmVsUHRyOw0KdGVtcGxhdGU8UHRyVGFnPiBjbGFzcyBDb2RlTG9jYXRpb25Db252
ZXJ0aWJsZUxvYWQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZTxQdHJUYWcgdGFn
Pg0KY2xhc3MgQ29kZUxvY2F0aW9uQ29tbW9uIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjx0YWc+IHsNCiAgICB1c2luZyBCYXNlID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz47DQpw
dWJsaWM6DQogICAgdGVtcGxhdGU8UHRyVGFnIHJlc3VsdFRhZyA9IHRhZz4gQ29kZUxvY2F0aW9u
SW5zdHJ1Y3Rpb248cmVzdWx0VGFnPiBpbnN0cnVjdGlvbkF0T2Zmc2V0KGludCBvZmZzZXQpOw0K
ICAgIHRlbXBsYXRlPFB0clRhZyByZXN1bHRUYWcgPSB0YWc+IENvZGVMb2NhdGlvbkxhYmVsPHJl
c3VsdFRhZz4gbGFiZWxBdE9mZnNldChpbnQgb2Zmc2V0KTsNCiAgICB0ZW1wbGF0ZTxQdHJUYWcg
cmVzdWx0VGFnID0gdGFnPiBDb2RlTG9jYXRpb25KdW1wPHJlc3VsdFRhZz4ganVtcEF0T2Zmc2V0
KGludCBvZmZzZXQpOw0KICAgIHRlbXBsYXRlPFB0clRhZyByZXN1bHRUYWcgPSB0YWc+IENvZGVM
b2NhdGlvbkNhbGw8cmVzdWx0VGFnPiBjYWxsQXRPZmZzZXQoaW50IG9mZnNldCk7DQogICAgdGVt
cGxhdGU8UHRyVGFnIHJlc3VsdFRhZyA9IHRhZz4gQ29kZUxvY2F0aW9uTmVhckNhbGw8cmVzdWx0
VGFnPiBuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIE5lYXJDYWxsTW9kZSk7DQogICAgdGVt
cGxhdGU8UHRyVGFnIHJlc3VsdFRhZyA9IHRhZz4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPHJl
c3VsdFRhZz4gZGF0YUxhYmVsUHRyQXRPZmZzZXQoaW50IG9mZnNldCk7DQogICAgdGVtcGxhdGU8
UHRyVGFnIHJlc3VsdFRhZyA9IHRhZz4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzI8cmVzdWx0VGFn
PiBkYXRhTGFiZWwzMkF0T2Zmc2V0KGludCBvZmZzZXQpOw0KICAgIHRlbXBsYXRlPFB0clRhZyBy
ZXN1bHRUYWcgPSB0YWc+IENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q8cmVzdWx0VGFnPiBk
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCk7DQogICAgdGVtcGxhdGU8UHRyVGFn
IHJlc3VsdFRhZyA9IHRhZz4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkPHJlc3VsdFRhZz4g
Y29udmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9mZnNldCk7DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUID0gdm9pZCo+DQogICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBCYXNl
Ojp0ZW1wbGF0ZSBkYXRhTG9jYXRpb248VD4oKTsgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxDb2RlTG9jYXRp
b25Db21tb248dGFnPiwgVD46OnZhbHVlPj4NCiAgICBvcGVyYXRvciBUKCkNCiAgICB7DQogICAg
ICAgIHJldHVybiBUKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+OjpjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3ModGhpcy0+ZXhlY3V0YWJsZUFkZHJlc3MoKSkpOw0KICAgIH0NCg0KcHJvdGVj
dGVkOg0KICAgIENvZGVMb2NhdGlvbkNvbW1vbigpDQogICAgew0KICAgIH0NCg0KICAgIENvZGVM
b2NhdGlvbkNvbW1vbihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBsb2NhdGlvbikNCiAgICAg
ICAgOiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPihsb2NhdGlvbikNCiAgICB7DQogICAgfQ0K
fTsNCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4NCmNsYXNzIENvZGVMb2NhdGlvbkluc3RydWN0aW9u
IDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+IHsNCnB1YmxpYzoNCiAgICBDb2RlTG9j
YXRpb25JbnN0cnVjdGlvbigpIHsgfQ0KICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbkluc3RydWN0
aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGxvY2F0aW9uKQ0KICAgICAgICA6IENvZGVM
b2NhdGlvbkNvbW1vbjx0YWc+KGxvY2F0aW9uKSB7IH0NCiAgICBleHBsaWNpdCBDb2RlTG9jYXRp
b25JbnN0cnVjdGlvbih2b2lkKiBsb2NhdGlvbikNCiAgICAgICAgOiBDb2RlTG9jYXRpb25Db21t
b248dGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPihsb2NhdGlvbikpIHsgfQ0KfTsNCg0K
dGVtcGxhdGU8UHRyVGFnIHRhZz4NCmNsYXNzIENvZGVMb2NhdGlvbkxhYmVsIDogcHVibGljIENv
ZGVMb2NhdGlvbkNvbW1vbjx0YWc+IHsNCnB1YmxpYzoNCiAgICBDb2RlTG9jYXRpb25MYWJlbCgp
IHsgfQ0KICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjx0YWc+IGxvY2F0aW9uKQ0KICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+KGxvY2F0
aW9uKSB7IH0NCiAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25MYWJlbCh2b2lkKiBsb2NhdGlvbikN
CiAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb248dGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
dGFnPihsb2NhdGlvbikpIHsgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIG5ld1RhZz4NCiAgICBD
b2RlTG9jYXRpb25MYWJlbDxuZXdUYWc+IHJldGFnZ2VkKCkgeyByZXR1cm4gQ29kZUxvY2F0aW9u
TGFiZWw8bmV3VGFnPihDb2RlTG9jYXRpb25Db21tb248dGFnPjo6dGVtcGxhdGUgcmV0YWdnZWQ8
bmV3VGFnPigpKTsgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPg0KICAgIFQg
dW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIENvZGVMb2NhdGlvbkNv
bW1vbjx0YWc+Ojp0ZW1wbGF0ZSB1bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPFQ+KCk7IH0NCg0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4NCiAgICBUIGRhdGFMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+Ojp0ZW1wbGF0ZSBkYXRhTG9jYXRp
b248VD4oKTsgfQ0KfTsNCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4NCmNsYXNzIENvZGVMb2NhdGlv
bkp1bXAgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9uPHRhZz4gew0KcHVibGljOg0KICAgIENv
ZGVMb2NhdGlvbkp1bXAoKSB7IH0NCiAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25KdW1wKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjx0YWc+IGxvY2F0aW9uKQ0KICAgICAgICA6IENvZGVMb2NhdGlvbkNv
bW1vbjx0YWc+KGxvY2F0aW9uKSB7IH0NCiAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25KdW1wKHZv
aWQqIGxvY2F0aW9uKQ0KICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+KE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjx0YWc+KGxvY2F0aW9uKSkgeyB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcg
bmV3VGFnPg0KICAgIENvZGVMb2NhdGlvbkp1bXA8bmV3VGFnPiByZXRhZ2dlZCgpIHsgcmV0dXJu
IENvZGVMb2NhdGlvbkp1bXA8bmV3VGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6dGVt
cGxhdGUgcmV0YWdnZWQ8bmV3VGFnPigpKTsgfQ0KfTsNCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4N
CmNsYXNzIENvZGVMb2NhdGlvbkNhbGwgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9uPHRhZz4g
ew0KcHVibGljOg0KICAgIENvZGVMb2NhdGlvbkNhbGwoKSB7IH0NCiAgICBleHBsaWNpdCBDb2Rl
TG9jYXRpb25DYWxsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGxvY2F0aW9uKQ0KICAgICAg
ICA6IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+KGxvY2F0aW9uKSB7IH0NCiAgICBleHBsaWNpdCBD
b2RlTG9jYXRpb25DYWxsKHZvaWQqIGxvY2F0aW9uKQ0KICAgICAgICA6IENvZGVMb2NhdGlvbkNv
bW1vbjx0YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+KGxvY2F0aW9uKSkgeyB9DQoNCiAg
ICB0ZW1wbGF0ZTxQdHJUYWcgbmV3VGFnPg0KICAgIENvZGVMb2NhdGlvbkNhbGw8bmV3VGFnPiBy
ZXRhZ2dlZCgpIHsgcmV0dXJuIENvZGVMb2NhdGlvbkNhbGw8bmV3VGFnPihDb2RlTG9jYXRpb25D
b21tb248dGFnPjo6dGVtcGxhdGUgcmV0YWdnZWQ8bmV3VGFnPigpKTsgfQ0KfTsNCg0KdGVtcGxh
dGU8UHRyVGFnIHRhZz4NCmNsYXNzIENvZGVMb2NhdGlvbk5lYXJDYWxsIDogcHVibGljIENvZGVM
b2NhdGlvbkNvbW1vbjx0YWc+IHsNCnB1YmxpYzoNCiAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbCgp
IHsgfQ0KICAgIGV4cGxpY2l0IENvZGVMb2NhdGlvbk5lYXJDYWxsKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjx0YWc+IGxvY2F0aW9uLCBOZWFyQ2FsbE1vZGUgY2FsbE1vZGUpDQogICAgICAgIDogQ29k
ZUxvY2F0aW9uQ29tbW9uPHRhZz4obG9jYXRpb24pLCBtX2NhbGxNb2RlKGNhbGxNb2RlKSB7IH0N
CiAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25OZWFyQ2FsbCh2b2lkKiBsb2NhdGlvbiwgTmVhckNh
bGxNb2RlIGNhbGxNb2RlKQ0KICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+KE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjx0YWc+KGxvY2F0aW9uKSksIG1fY2FsbE1vZGUoY2FsbE1vZGUpIHsg
fQ0KICAgIE5lYXJDYWxsTW9kZSBjYWxsTW9kZSgpIHsgcmV0dXJuIG1fY2FsbE1vZGU7IH0NCnBy
aXZhdGU6DQogICAgTmVhckNhbGxNb2RlIG1fY2FsbE1vZGUgeyBOZWFyQ2FsbE1vZGU6OlJlZ3Vs
YXIgfTsNCn07DQoNCnRlbXBsYXRlPFB0clRhZyB0YWc+DQpjbGFzcyBDb2RlTG9jYXRpb25EYXRh
TGFiZWwzMiA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb248dGFnPiB7DQpwdWJsaWM6DQogICAg
Q29kZUxvY2F0aW9uRGF0YUxhYmVsMzIoKSB7IH0NCiAgICBleHBsaWNpdCBDb2RlTG9jYXRpb25E
YXRhTGFiZWwzMihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBsb2NhdGlvbikNCiAgICAgICAg
OiBDb2RlTG9jYXRpb25Db21tb248dGFnPihsb2NhdGlvbikgeyB9DQogICAgZXhwbGljaXQgQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsMzIodm9pZCogbG9jYXRpb24pDQogICAgICAgIDogQ29kZUxvY2F0
aW9uQ29tbW9uPHRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4obG9jYXRpb24pKSB7IH0N
Cn07DQoNCnRlbXBsYXRlPFB0clRhZyB0YWc+DQpjbGFzcyBDb2RlTG9jYXRpb25EYXRhTGFiZWxD
b21wYWN0IDogcHVibGljIENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+IHsNCnB1YmxpYzoNCiAgICBD
b2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0KCkgeyB9DQogICAgZXhwbGljaXQgQ29kZUxvY2F0
aW9uRGF0YUxhYmVsQ29tcGFjdChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBsb2NhdGlvbikN
CiAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb248dGFnPihsb2NhdGlvbikgeyB9DQogICAgZXhw
bGljaXQgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdCh2b2lkKiBsb2NhdGlvbikNCiAgICAg
ICAgOiBDb2RlTG9jYXRpb25Db21tb248dGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPihs
b2NhdGlvbikpIHsgfQ0KfTsNCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4NCmNsYXNzIENvZGVMb2Nh
dGlvbkRhdGFMYWJlbFB0ciA6IHB1YmxpYyBDb2RlTG9jYXRpb25Db21tb248dGFnPiB7DQpwdWJs
aWM6DQogICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKCkgeyB9DQogICAgZXhwbGljaXQgQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsUHRyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGxvY2F0aW9u
KQ0KICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+KGxvY2F0aW9uKSB7IH0NCiAgICBl
eHBsaWNpdCBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIodm9pZCogbG9jYXRpb24pDQogICAgICAg
IDogQ29kZUxvY2F0aW9uQ29tbW9uPHRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4obG9j
YXRpb24pKSB7IH0NCn07DQoNCnRlbXBsYXRlPFB0clRhZyB0YWc+DQpjbGFzcyBDb2RlTG9jYXRp
b25Db252ZXJ0aWJsZUxvYWQgOiBwdWJsaWMgQ29kZUxvY2F0aW9uQ29tbW9uPHRhZz4gew0KcHVi
bGljOg0KICAgIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZCgpIHsgfQ0KICAgIGV4cGxpY2l0
IENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBs
b2NhdGlvbikNCiAgICAgICAgOiBDb2RlTG9jYXRpb25Db21tb248dGFnPihsb2NhdGlvbikgeyB9
DQogICAgZXhwbGljaXQgQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKHZvaWQqIGxvY2F0aW9u
KQ0KICAgICAgICA6IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjx0YWc+KGxvY2F0aW9uKSkgeyB9DQp9Ow0KDQp0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KdGVtcGxh
dGU8UHRyVGFnIHJlc3VsdFRhZz4NCmlubGluZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbjxyZXN1
bHRUYWc+IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+OjppbnN0cnVjdGlvbkF0T2Zmc2V0KGludCBv
ZmZzZXQpDQp7DQogICAgOw0KICAgIHJldHVybiBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbjxyZXN1
bHRUYWc+KHRhZ0NvZGVQdHI8cmVzdWx0VGFnPihkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZz
ZXQpKTsNCn0NCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4NCnRlbXBsYXRlPFB0clRhZyByZXN1bHRU
YWc+DQppbmxpbmUgQ29kZUxvY2F0aW9uTGFiZWw8cmVzdWx0VGFnPiBDb2RlTG9jYXRpb25Db21t
b248dGFnPjo6bGFiZWxBdE9mZnNldChpbnQgb2Zmc2V0KQ0Kew0KICAgIDsNCiAgICByZXR1cm4g
Q29kZUxvY2F0aW9uTGFiZWw8cmVzdWx0VGFnPih0YWdDb2RlUHRyPHJlc3VsdFRhZz4oZGF0YUxv
Y2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0KSk7DQp9DQoNCnRlbXBsYXRlPFB0clRhZyB0YWc+DQp0
ZW1wbGF0ZTxQdHJUYWcgcmVzdWx0VGFnPg0KaW5saW5lIENvZGVMb2NhdGlvbkp1bXA8cmVzdWx0
VGFnPiBDb2RlTG9jYXRpb25Db21tb248dGFnPjo6anVtcEF0T2Zmc2V0KGludCBvZmZzZXQpDQp7
DQogICAgOw0KICAgIHJldHVybiBDb2RlTG9jYXRpb25KdW1wPHJlc3VsdFRhZz4odGFnQ29kZVB0
cjxyZXN1bHRUYWc+KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCkpOw0KfQ0KDQp0ZW1w
bGF0ZTxQdHJUYWcgdGFnPg0KdGVtcGxhdGU8UHRyVGFnIHJlc3VsdFRhZz4NCmlubGluZSBDb2Rl
TG9jYXRpb25DYWxsPHJlc3VsdFRhZz4gQ29kZUxvY2F0aW9uQ29tbW9uPHRhZz46OmNhbGxBdE9m
ZnNldChpbnQgb2Zmc2V0KQ0Kew0KICAgIDsNCiAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbDxy
ZXN1bHRUYWc+KHRhZ0NvZGVQdHI8cmVzdWx0VGFnPihkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBv
ZmZzZXQpKTsNCn0NCg0KdGVtcGxhdGU8UHRyVGFnIHRhZz4NCnRlbXBsYXRlPFB0clRhZyByZXN1
bHRUYWc+DQppbmxpbmUgQ29kZUxvY2F0aW9uTmVhckNhbGw8cmVzdWx0VGFnPiBDb2RlTG9jYXRp
b25Db21tb248dGFnPjo6bmVhckNhbGxBdE9mZnNldChpbnQgb2Zmc2V0LCBOZWFyQ2FsbE1vZGUg
Y2FsbE1vZGUpDQp7DQogICAgOw0KICAgIHJldHVybiBDb2RlTG9jYXRpb25OZWFyQ2FsbDxyZXN1
bHRUYWc+KHRhZ0NvZGVQdHI8cmVzdWx0VGFnPihkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZz
ZXQpLCBjYWxsTW9kZSk7DQp9DQoNCnRlbXBsYXRlPFB0clRhZyB0YWc+DQp0ZW1wbGF0ZTxQdHJU
YWcgcmVzdWx0VGFnPg0KaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxyZXN1bHRUYWc+
IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+OjpkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0
KQ0Kew0KICAgIDsNCiAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPHJlc3VsdFRh
Zz4odGFnQ29kZVB0cjxyZXN1bHRUYWc+KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCkp
Ow0KfQ0KDQp0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KdGVtcGxhdGU8UHRyVGFnIHJlc3VsdFRhZz4N
CmlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMjxyZXN1bHRUYWc+IENvZGVMb2NhdGlvbkNv
bW1vbjx0YWc+OjpkYXRhTGFiZWwzMkF0T2Zmc2V0KGludCBvZmZzZXQpDQp7DQogICAgOw0KICAg
IHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMjxyZXN1bHRUYWc+KHRhZ0NvZGVQdHI8cmVz
dWx0VGFnPihkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpKTsNCn0NCg0KdGVtcGxhdGU8
UHRyVGFnIHRhZz4NCnRlbXBsYXRlPFB0clRhZyByZXN1bHRUYWc+DQppbmxpbmUgQ29kZUxvY2F0
aW9uRGF0YUxhYmVsQ29tcGFjdDxyZXN1bHRUYWc+IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+Ojpk
YXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9mZnNldCkNCnsNCiAgICA7DQogICAgcmV0dXJu
IENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q8cmVzdWx0VGFnPih0YWdDb2RlUHRyPHJlc3Vs
dFRhZz4oZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0KSk7DQp9DQoNCnRlbXBsYXRlPFB0
clRhZyB0YWc+DQp0ZW1wbGF0ZTxQdHJUYWcgcmVzdWx0VGFnPg0KaW5saW5lIENvZGVMb2NhdGlv
bkNvbnZlcnRpYmxlTG9hZDxyZXN1bHRUYWc+IENvZGVMb2NhdGlvbkNvbW1vbjx0YWc+Ojpjb252
ZXJ0aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQ0Kew0KICAgIDsNCiAgICByZXR1cm4gQ29k
ZUxvY2F0aW9uQ29udmVydGlibGVMb2FkPHJlc3VsdFRhZz4odGFnQ29kZVB0cjxyZXN1bHRUYWc+
KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCkpOw0KfQ0KDQp9IA0KDQojbGluZSAyNzQg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1i
bGVyXFxDb2RlTG9jYXRpb24uaCINCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oIg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVySGVscGVycy5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KbmFtZXNwYWNlIEpTQyB7DQpuYW1lc3BhY2UgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzIHsNCg0K
DQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU+DQppbmxpbmUgYm9v
bCBpc1NpZ25lZCh0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCkNCnsNCiAgICBzd2l0Y2ggKGNvbmQpIHsNCiAgICBjYXNlIE1hY3JvQXNzZW1ibGVy
VHlwZTo6RXF1YWw6DQogICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6Ok5vdEVxdWFsOg0KICAg
IGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpHcmVhdGVyVGhhbjoNCiAgICBjYXNlIE1hY3JvQXNz
ZW1ibGVyVHlwZTo6R3JlYXRlclRoYW5PckVxdWFsOg0KICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJU
eXBlOjpMZXNzVGhhbjoNCiAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6TGVzc1RoYW5PckVx
dWFsOg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgfQ0KfQ0KDQoNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1i
bGVyVHlwZT4NCmlubGluZSBib29sIGlzVW5zaWduZWQodHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJU
eXBlOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpDQp7DQogICAgc3dpdGNoIChjb25kKSB7DQog
ICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkVxdWFsOg0KICAgIGNhc2UgTWFjcm9Bc3NlbWJs
ZXJUeXBlOjpOb3RFcXVhbDoNCiAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6QWJvdmU6DQog
ICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkFib3ZlT3JFcXVhbDoNCiAgICBjYXNlIE1hY3Jv
QXNzZW1ibGVyVHlwZTo6QmVsb3c6DQogICAgY2FzZSBNYWNyb0Fzc2VtYmxlclR5cGU6OkJlbG93
T3JFcXVhbDoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoNCiAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KDQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fz
c2VtYmxlclR5cGU+DQppbmxpbmUgYm9vbCBpc1NpZ25lZCh0eXBlbmFtZSBNYWNyb0Fzc2VtYmxl
clR5cGU6OlJlc3VsdENvbmRpdGlvbiBjb25kKQ0Kew0KICAgIHN3aXRjaCAoY29uZCkgew0KICAg
IGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpTaWduZWQ6DQogICAgY2FzZSBNYWNyb0Fzc2VtYmxl
clR5cGU6OlBvc2l0aXZlT3JaZXJvOg0KICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpaZXJv
Og0KICAgIGNhc2UgTWFjcm9Bc3NlbWJsZXJUeXBlOjpOb25aZXJvOg0KICAgICAgICByZXR1cm4g
dHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQoN
Cg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZT4NCmlubGluZSBib29s
IGlzVW5zaWduZWQodHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZXN1bHRDb25kaXRpb24g
Y29uZCkNCnsNCiAgICBzd2l0Y2ggKGNvbmQpIHsNCiAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlw
ZTo6WmVybzoNCiAgICBjYXNlIE1hY3JvQXNzZW1ibGVyVHlwZTo6Tm9uWmVybzoNCiAgICAgICAg
cmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0N
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlPg0KaW5saW5lIHR5cGVu
YW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyIG1hc2s4T25Db25kaXRpb24oTWFj
cm9Bc3NlbWJsZXJUeXBlJiwgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIHR5cGVuYW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMy
IHZhbHVlKQ0Kew0KICAgIGlmIChpc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyVHlwZT4oY29uZCkp
DQogICAgICAgIHJldHVybiB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6OlRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZS5tX3ZhbHVlKSk7DQogICAgcmV0dXJuIHR5cGVu
YW1lIE1hY3JvQXNzZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4o
dmFsdWUubV92YWx1ZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5
cGU+DQppbmxpbmUgdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBlOjpUcnVzdGVkSW1tMzIgbWFz
azhPbkNvbmRpdGlvbihNYWNyb0Fzc2VtYmxlclR5cGUmLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxl
clR5cGU6OlJlc3VsdENvbmRpdGlvbiBjb25kLCB0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGU6
OlRydXN0ZWRJbW0zMiB2YWx1ZSkNCnsNCiAgICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxl
clR5cGU+KGNvbmQpKQ0KICAgICAgICByZXR1cm4gdHlwZW5hbWUgTWFjcm9Bc3NlbWJsZXJUeXBl
OjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUubV92YWx1ZSkpOw0KICAg
ICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIHR5cGVuYW1lIE1hY3JvQXNz
ZW1ibGVyVHlwZTo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUubV92YWx1
ZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYWNyb0Fzc2VtYmxlclR5cGUsIHR5cGVuYW1l
IENvbmRpdGlvbiwgdHlwZW5hbWUgLi4uQXJncz4NCnZvaWQgbG9hZDhPbkNvbmRpdGlvbihNYWNy
b0Fzc2VtYmxlclR5cGUmIGppdCwgQ29uZGl0aW9uIGNvbmQsIEFyZ3MuLi4gYXJncykNCnsNCiAg
ICBpZiAoaXNVbnNpZ25lZDxNYWNyb0Fzc2VtYmxlclR5cGU+KGNvbmQpKQ0KICAgICAgICByZXR1
cm4gaml0LmxvYWQ4KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7DQogICAgcmV0dXJuIGpp
dC5sb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsNCn0N
Cg0KfSB9IA0KI2xpbmUgMzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiDQoNCg0KDQoN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KY2xhc3MgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlOw0KY2xhc3MgRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOw0KY2xh
c3MgTGlua0J1ZmZlcjsNCmNsYXNzIFdhdGNocG9pbnQ7DQpuYW1lc3BhY2UgREZHIHsNCnN0cnVj
dCBPU1JFeGl0Ow0KfQ0KDQpjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZSB7DQogICAg
cHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHAp
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6
OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZv
aWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtp
dEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFT
ZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBlbnVtIFN0YXR1c0Nv
bmRpdGlvbiB7DQogICAgICAgIFN1Y2Nlc3MsDQogICAgICAgIEZhaWx1cmUNCiAgICB9Ow0KICAg
IA0KICAgIHN0YXRpYyBTdGF0dXNDb25kaXRpb24gaW52ZXJ0KFN0YXR1c0NvbmRpdGlvbiBjb25k
aXRpb24pDQogICAgew0KICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbikgew0KICAgICAgICBjYXNl
IFN1Y2Nlc3M6DQogICAgICAgICAgICByZXR1cm4gRmFpbHVyZTsNCiAgICAgICAgY2FzZSBGYWls
dXJlOg0KICAgICAgICAgICAgcmV0dXJuIFN1Y2Nlc3M7DQogICAgICAgIH0NCiAgICAgICAgZG8g
eyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgp
OyBXVEZDcmFzaFdpdGhJbmZvKDcyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIsICBf
X0ZVTkNUSU9OX18gICwgMjkgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1cm4gU3Vj
Y2VzczsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZSA8Y2xhc3MgQXNzZW1ibGVyVHlwZT4NCmNsYXNz
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2Ugew0KcHVibGljOg0KICAgIHR5cGVkZWYgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJs
ZXJUeXBlPiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZTsNCiAgICB0eXBlZGVmIEFzc2VtYmxl
clR5cGUgQXNzZW1ibGVyVHlwZV9UOw0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4gdXNpbmcg
Q29kZVB0ciA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+Ow0KICAgIHRlbXBsYXRlPFB0clRh
ZyB0YWc+IHVzaW5nIENvZGVSZWYgPSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPjsNCg0KICAg
IGVudW0gY2xhc3MgQ1BVSURDaGVja1N0YXRlIHsNCiAgICAgICAgTm90Q2hlY2tlZCwNCiAgICAg
ICAgQ2xlYXIsDQogICAgICAgIFNldA0KICAgIH07DQoNCiAgICBjbGFzcyBKdW1wOw0KDQogICAg
dHlwZWRlZiB0eXBlbmFtZSBBc3NlbWJsZXJUeXBlOjpSZWdpc3RlcklEIFJlZ2lzdGVySUQ7DQog
ICAgdHlwZWRlZiB0eXBlbmFtZSBBc3NlbWJsZXJUeXBlOjpTUFJlZ2lzdGVySUQgU1BSZWdpc3Rl
cklEOw0KICAgIHR5cGVkZWYgdHlwZW5hbWUgQXNzZW1ibGVyVHlwZTo6RlBSZWdpc3RlcklEIEZQ
UmVnaXN0ZXJJRDsNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZmlyc3RS
ZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxlclR5cGU6OmZpcnN0UmVnaXN0ZXIoKTsgfQ0KICAg
IHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBsYXN0UmVnaXN0ZXIoKSB7IHJldHVybiBBc3Nl
bWJsZXJUeXBlOjpsYXN0UmVnaXN0ZXIoKTsgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtYmVyT2ZSZWdpc3RlcnMoKSB7IHJldHVybiBBc3NlbWJsZXJUeXBlOjpudW1iZXJPZlJl
Z2lzdGVycygpOyB9DQogICAgc3RhdGljIGNvbnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBp
ZCkgeyByZXR1cm4gQXNzZW1ibGVyVHlwZTo6Z3ByTmFtZShpZCk7IH0NCg0KICAgIHN0YXRpYyBj
b25zdGV4cHIgU1BSZWdpc3RlcklEIGZpcnN0U1BSZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxl
clR5cGU6OmZpcnN0U1BSZWdpc3RlcigpOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBTUFJlZ2lz
dGVySUQgbGFzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBBc3NlbWJsZXJUeXBlOjpsYXN0U1BSZWdp
c3RlcigpOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlNQUmVnaXN0
ZXJzKCkgeyByZXR1cm4gQXNzZW1ibGVyVHlwZTo6bnVtYmVyT2ZTUFJlZ2lzdGVycygpOyB9DQog
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHNwck5hbWUoU1BSZWdpc3RlcklEIGlkKSB7IHJldHVybiBB
c3NlbWJsZXJUeXBlOjpzcHJOYW1lKGlkKTsgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBGUFJl
Z2lzdGVySUQgZmlyc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQXNzZW1ibGVyVHlwZTo6Zmlyc3RG
UFJlZ2lzdGVyKCk7IH0NCiAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBsYXN0RlBS
ZWdpc3RlcigpIHsgcmV0dXJuIEFzc2VtYmxlclR5cGU6Omxhc3RGUFJlZ2lzdGVyKCk7IH0NCiAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mRlBSZWdpc3RlcnMoKSB7IHJldHVy
biBBc3NlbWJsZXJUeXBlOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCk7IH0NCiAgICBzdGF0aWMgY29u
c3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQgaWQpIHsgcmV0dXJuIEFzc2VtYmxlclR5cGU6
OmZwck5hbWUoaWQpOyB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIGVudW0gU2Nh
bGUgew0KICAgICAgICBUaW1lc09uZSwNCiAgICAgICAgVGltZXNUd28sDQogICAgICAgIFRpbWVz
Rm91ciwNCiAgICAgICAgVGltZXNFaWdodCwNCiAgICAgICAgU2NhbGVQdHIgPSBpc0FkZHJlc3M2
NEJpdCgpID8gVGltZXNFaWdodCA6IFRpbWVzRm91ciwNCiAgICB9Ow0KICAgIA0KICAgIHN0cnVj
dCBCYXNlSW5kZXg7DQogICAgDQogICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdp
c3RlcihSZWdpc3RlcklEIG9yaWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQpDQogICAgew0KICAgICAgICBpZiAob3JpZ2luYWwgPT0gbGVmdCkNCiAgICAgICAgICAgIHJl
dHVybiByaWdodDsNCiAgICAgICAgaWYgKG9yaWdpbmFsID09IHJpZ2h0KQ0KICAgICAgICAgICAg
cmV0dXJuIGxlZnQ7DQogICAgICAgIHJldHVybiBvcmlnaW5hbDsNCiAgICB9DQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgc3RydWN0IEFkZHJlc3Mgew0KICAgICAgICBleHBsaWNpdCBBZGRy
ZXNzKFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQgPSAwKQ0KICAgICAgICAgICAgOiBi
YXNlKGJhc2UpDQogICAgICAgICAgICAsIG9mZnNldChvZmZzZXQpDQogICAgICAgIHsNCiAgICAg
ICAgfQ0KICAgICAgICANCiAgICAgICAgQWRkcmVzcyB3aXRoT2Zmc2V0KGludDMyX3QgYWRkaXRp
b25hbE9mZnNldCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwg
b2Zmc2V0ICsgYWRkaXRpb25hbE9mZnNldCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAg
IEFkZHJlc3Mgd2l0aFN3YXBwZWRSZWdpc3RlcihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBBZGRyZXNzKEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OndpdGhTd2FwcGVkUmVnaXN0ZXIoYmFzZSwgbGVmdCwgcmlnaHQpLCBvZmZz
ZXQpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBCYXNlSW5kZXggaW5kZXhlZEJ5KFJl
Z2lzdGVySUQgaW5kZXgsIFNjYWxlKSBjb25zdDsNCiAgICAgICAgDQogICAgICAgIFJlZ2lzdGVy
SUQgYmFzZTsNCiAgICAgICAgaW50MzJfdCBvZmZzZXQ7DQogICAgfTsNCg0KICAgIHN0cnVjdCBF
eHRlbmRlZEFkZHJlc3Mgew0KICAgICAgICBleHBsaWNpdCBFeHRlbmRlZEFkZHJlc3MoUmVnaXN0
ZXJJRCBiYXNlLCBpbnRwdHJfdCBvZmZzZXQgPSAwKQ0KICAgICAgICAgICAgOiBiYXNlKGJhc2Up
DQogICAgICAgICAgICAsIG9mZnNldChvZmZzZXQpDQogICAgICAgIHsNCiAgICAgICAgfQ0KICAg
ICAgICANCiAgICAgICAgUmVnaXN0ZXJJRCBiYXNlOw0KICAgICAgICBpbnRwdHJfdCBvZmZzZXQ7
DQogICAgfTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0cnVjdCBJbXBsaWNp
dEFkZHJlc3Mgew0KICAgICAgICBJbXBsaWNpdEFkZHJlc3MoUmVnaXN0ZXJJRCBiYXNlKQ0KICAg
ICAgICAgICAgOiBiYXNlKGJhc2UpDQogICAgICAgICAgICAsIG9mZnNldCgwKQ0KICAgICAgICB7
DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIH0NCg0KICAgICAgICBJbXBsaWNpdEFk
ZHJlc3MoQWRkcmVzcyBhZGRyZXNzKQ0KICAgICAgICAgICAgOiBiYXNlKGFkZHJlc3MuYmFzZSkN
CiAgICAgICAgICAgICwgb2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KQ0KICAgICAgICB7DQogICAgICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIH0NCg0KICAgICAgICBSZWdpc3RlcklEIGJhc2U7DQog
ICAgICAgIGludDMyX3Qgb2Zmc2V0Ow0KICAgIH07DQoNCiAgICANCiAgICANCiAgICANCiAgICBz
dHJ1Y3QgQmFzZUluZGV4IHsNCiAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCkNCiAgICAgICAg
ICAgIDogYmFzZShiYXNlKQ0KICAgICAgICAgICAgLCBpbmRleChpbmRleCkNCiAgICAgICAgICAg
ICwgc2NhbGUoc2NhbGUpDQogICAgICAgICAgICAsIG9mZnNldChvZmZzZXQpDQogICAgICAgIHsN
CiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgUmVnaXN0ZXJJRCBiYXNlOw0KICAgICAgICBS
ZWdpc3RlcklEIGluZGV4Ow0KICAgICAgICBTY2FsZSBzY2FsZTsNCiAgICAgICAgaW50MzJfdCBv
ZmZzZXQ7DQogICAgICAgIA0KICAgICAgICBCYXNlSW5kZXggd2l0aE9mZnNldChpbnQzMl90IGFk
ZGl0aW9uYWxPZmZzZXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBCYXNlSW5kZXgo
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQgKyBhZGRpdGlvbmFsT2Zmc2V0KTsNCiAgICAgICAg
fQ0KDQogICAgICAgIEJhc2VJbmRleCB3aXRoU3dhcHBlZFJlZ2lzdGVyKFJlZ2lzdGVySUQgbGVm
dCwgUmVnaXN0ZXJJRCByaWdodCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIEJhc2VJ
bmRleChBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjp3aXRoU3dhcHBlZFJlZ2lzdGVyKGJhc2UsIGxl
ZnQsIHJpZ2h0KSwgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6d2l0aFN3YXBwZWRSZWdpc3Rlcihp
bmRleCwgbGVmdCwgcmlnaHQpLCBzY2FsZSwgb2Zmc2V0KTsNCiAgICAgICAgfQ0KICAgIH07DQoN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICBzdHJ1Y3QgQWJzb2x1dGVBZGRyZXNzIHsNCiAg
ICAgICAgZXhwbGljaXQgQWJzb2x1dGVBZGRyZXNzKGNvbnN0IHZvaWQqIHB0cikNCiAgICAgICAg
ICAgIDogbV9wdHIocHRyKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCB2
b2lkKiBtX3B0cjsNCiAgICB9Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgc3RydWN0
IFRydXN0ZWRJbW0geyB9Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgc3Ry
dWN0IFRydXN0ZWRJbW1QdHIgOiBwdWJsaWMgVHJ1c3RlZEltbSB7DQogICAgICAgIFRydXN0ZWRJ
bW1QdHIoKSB7IH0NCiAgICAgICAgDQogICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoY29u
c3Qgdm9pZCogdmFsdWUpDQogICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpDQogICAgICAgIHsN
CiAgICAgICAgfQ0KDQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4NCiAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihSZXR1cm5U
eXBlKCp2YWx1ZSkoQXJndW1lbnRzLi4uKSkNCiAgICAgICAgICAgIDogbV92YWx1ZShyZWludGVy
cHJldF9jYXN0PHZvaWQqPih2YWx1ZSkpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpDQogICAgICAgIHsNCiAgICAg
ICAgfQ0KDQogICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQ0KICAg
ICAgICAgICAgOiBtX3ZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKSkNCiAgICAg
ICAgew0KICAgICAgICB9DQoNCiAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQ0KICAgICAgICB7
DQogICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV92YWx1ZSk7
DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkKiBhc1B0cigpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihtX3ZhbHVlKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGNvbnN0IHZvaWQqIG1fdmFsdWUgeyBudWxscHRyIH07DQogICAgfTsNCg0KICAgIHN0cnVj
dCBJbW1QdHIgOiBwcml2YXRlIFRydXN0ZWRJbW1QdHINCiAgICB7DQogICAgICAgIGV4cGxpY2l0
IEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkNCiAgICAgICAgICAgIDogVHJ1c3RlZEltbVB0cih2
YWx1ZSkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgVHJ1c3RlZEltbVB0ciBhc1Ry
dXN0ZWRJbW1QdHIoKSB7IHJldHVybiAqdGhpczsgfQ0KICAgIH07DQoNCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICBzdHJ1Y3QgVHJ1c3RlZEltbTMyIDogcHVibGljIFRy
dXN0ZWRJbW0gew0KICAgICAgICBUcnVzdGVkSW1tMzIoKSB7IH0NCiAgICAgICAgDQogICAgICAg
IGV4cGxpY2l0IFRydXN0ZWRJbW0zMihpbnQzMl90IHZhbHVlKQ0KICAgICAgICAgICAgOiBtX3Zh
bHVlKHZhbHVlKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KDQoNCg0KDQoNCiNsaW5lIDMyNSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJs
ZXJcXEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCINCg0KICAgICAgICBpbnQzMl90IG1fdmFsdWU7
DQogICAgfTsNCg0KDQogICAgc3RydWN0IEltbTMyIDogcHJpdmF0ZSBUcnVzdGVkSW1tMzIgew0K
ICAgICAgICBleHBsaWNpdCBJbW0zMihpbnQzMl90IHZhbHVlKQ0KICAgICAgICAgICAgOiBUcnVz
dGVkSW1tMzIodmFsdWUpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQoNCg0KDQoNCiNsaW5lIDM0
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCINCiAgICAgICAgY29uc3QgVHJ1c3RlZElt
bTMyJiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9DQoNCiAgICB9Ow0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0cnVjdCBUcnVz
dGVkSW1tNjQgOiBUcnVzdGVkSW1tIHsNCiAgICAgICAgVHJ1c3RlZEltbTY0KCkgeyB9DQogICAg
ICAgIA0KICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoaW50NjRfdCB2YWx1ZSkNCiAgICAg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICB9DQoNCg0KICAgICAg
ICBleHBsaWNpdCBUcnVzdGVkSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpDQogICAgICAgICAgICA6
IG1fdmFsdWUocHRyLmFzSW50cHRyKCkpDQogICAgICAgIHsNCiAgICAgICAgfQ0KI2xpbmUgMzY1
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2Vt
YmxlclxcQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KDQogICAgICAgIGludDY0X3QgbV92YWx1
ZTsNCiAgICB9Ow0KDQogICAgc3RydWN0IEltbTY0IDogcHJpdmF0ZSBUcnVzdGVkSW1tNjQNCiAg
ICB7DQogICAgICAgIGV4cGxpY2l0IEltbTY0KGludDY0X3QgdmFsdWUpDQogICAgICAgICAgICA6
IFRydXN0ZWRJbW02NCh2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgZXhw
bGljaXQgSW1tNjQoVHJ1c3RlZEltbVB0ciBwdHIpDQogICAgICAgICAgICA6IFRydXN0ZWRJbW02
NChwdHIpDQogICAgICAgIHsNCiAgICAgICAgfQ0KI2xpbmUgMzgxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oIg0KICAgICAgICBjb25zdCBUcnVzdGVkSW1tNjQmIGFzVHJ1c3RlZEltbTY0
KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBjbGFz
cyBMYWJlbCB7DQogICAgICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlclR5cGU+Ow0KICAgICAgICBmcmllbmQgc3RydWN0IERGRzo6T1NSRXhpdDsNCiAgICAg
ICAgZnJpZW5kIGNsYXNzIEp1bXA7DQogICAgICAgIHRlbXBsYXRlPFB0clRhZz4gZnJpZW5kIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsNCiAgICAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZm
ZXI7DQogICAgICAgIGZyaWVuZCBjbGFzcyBXYXRjaHBvaW50Ow0KDQogICAgcHVibGljOg0KICAg
ICAgICBMYWJlbCgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIExhYmVsKEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNtKQ0KICAgICAgICAgICAgOiBtX2xhYmVsKG1hc20t
Pm1fYXNzZW1ibGVyLmxhYmVsKCkpDQogICAgICAgIHsNCiAgICAgICAgICAgIG1hc20tPmludmFs
aWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7DQogICAgICAgIH0NCg0KICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGFiZWwmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2xhYmVsID09IG90aGVy
Lm1fbGFiZWw7IH0NCg0KICAgICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYWJl
bC5pc1NldCgpOyB9DQogICAgcHJpdmF0ZToNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJl
bDsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIGNsYXNzIENvbnZlcnRpYmxlTG9hZExhYmVsIHsNCiAg
ICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZT47
DQogICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOw0KICAgICAgICANCiAgICBwdWJsaWM6
DQogICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsKCkNCiAgICAgICAgew0KICAgICAgICB9DQog
ICAgICAgIA0KICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbChBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyVHlwZSogbWFzbSkNCiAgICAgICAgICAgIDogbV9sYWJlbChtYXNtLT5tX2Fzc2VtYmxlci5s
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSkNCiAgICAgICAgew0KICAgICAgICB9DQogICAgICAg
IA0KICAgICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9
DQogICAgcHJpdmF0ZToNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsNCiAgICB9Ow0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgY2xhc3MgRGF0YUxhYmVsUHRyIHsNCiAgICAg
ICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZT47DQog
ICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOw0KICAgIHB1YmxpYzoNCiAgICAgICAgRGF0
YUxhYmVsUHRyKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgRGF0YUxhYmVsUHRy
KEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNtKQ0KICAgICAgICAgICAgOiBtX2xhYmVs
KG1hc20tPm1fYXNzZW1ibGVyLmxhYmVsKCkpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsLmlzU2V0KCk7IH0NCiAgICAg
ICAgDQogICAgcHJpdmF0ZToNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsNCiAgICB9
Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgY2xhc3MgRGF0YUxhYmVsMzIgew0KICAg
ICAgICBmcmllbmQgY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPjsN
CiAgICAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7DQogICAgcHVibGljOg0KICAgICAgICBE
YXRhTGFiZWwzMigpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIERhdGFMYWJlbDMy
KEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNtKQ0KICAgICAgICAgICAgOiBtX2xhYmVs
KG1hc20tPm1fYXNzZW1ibGVyLmxhYmVsKCkpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAg
ICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQ0KDQog
ICAgcHJpdmF0ZToNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbV9sYWJlbDsNCiAgICB9Ow0KDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgY2xhc3MgRGF0YUxhYmVsQ29tcGFjdCB7DQogICAg
ICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlclR5cGU+Ow0K
ICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsNCiAgICBwdWJsaWM6DQogICAgICAgIERh
dGFMYWJlbENvbXBhY3QoKQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAg
IERhdGFMYWJlbENvbXBhY3QoQWJzdHJhY3RNYWNyb0Fzc2VtYmxlclR5cGUqIG1hc20pDQogICAg
ICAgICAgICA6IG1fbGFiZWwobWFzbS0+bV9hc3NlbWJsZXIubGFiZWwoKSkNCiAgICAgICAgew0K
ICAgICAgICB9DQoNCiAgICAgICAgRGF0YUxhYmVsQ29tcGFjdChBc3NlbWJsZXJMYWJlbCBsYWJl
bCkNCiAgICAgICAgICAgIDogbV9sYWJlbChsYWJlbCkNCiAgICAgICAgew0KICAgICAgICB9DQoN
CiAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9
DQoNCiAgICBwcml2YXRlOg0KICAgICAgICBBc3NlbWJsZXJMYWJlbCBtX2xhYmVsOw0KICAgIH07
DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBjbGFzcyBDYWxsIHsN
CiAgICAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlw
ZT47DQoNCiAgICBwdWJsaWM6DQogICAgICAgIGVudW0gRmxhZ3Mgew0KICAgICAgICAgICAgTm9u
ZSA9IDB4MCwNCiAgICAgICAgICAgIExpbmthYmxlID0gMHgxLA0KICAgICAgICAgICAgTmVhciA9
IDB4MiwNCiAgICAgICAgICAgIFRhaWwgPSAweDQsDQogICAgICAgICAgICBMaW5rYWJsZU5lYXIg
PSAweDMsDQogICAgICAgICAgICBMaW5rYWJsZU5lYXJUYWlsID0gMHg3LA0KICAgICAgICB9Ow0K
DQogICAgICAgIENhbGwoKQ0KICAgICAgICAgICAgOiBtX2ZsYWdzKE5vbmUpDQogICAgICAgIHsN
CiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgQ2FsbChBc3NlbWJsZXJMYWJlbCBqbXAsIEZs
YWdzIGZsYWdzKQ0KICAgICAgICAgICAgOiBtX2xhYmVsKGptcCkNCiAgICAgICAgICAgICwgbV9m
bGFncyhmbGFncykNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBpc0ZsYWdT
ZXQoRmxhZ3MgZmxhZykNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBm
bGFnOw0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIENhbGwgZnJvbVRhaWxKdW1wKEp1bXAg
anVtcCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIENhbGwoanVtcC5tX2xhYmVsLCBM
aW5rYWJsZSk7DQogICAgICAgIH0NCg0KICAgICAgICBBc3NlbWJsZXJMYWJlbCBtX2xhYmVsOw0K
ICAgIHByaXZhdGU6DQogICAgICAgIEZsYWdzIG1fZmxhZ3M7DQogICAgfTsNCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIGNsYXNzIEp1bXAgew0KICAgICAgICBmcmll
bmQgY2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPjsNCiAgICAgICAg
ZnJpZW5kIGNsYXNzIENhbGw7DQogICAgICAgIGZyaWVuZCBzdHJ1Y3QgREZHOjpPU1JFeGl0Ow0K
ICAgICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsNCiAgICBwdWJsaWM6DQogICAgICAgIEp1
bXAoKQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNTk1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGFzc2VtYmxlclxcQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDYyMiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaCINCiAgICAgICAgSnVtcChBc3NlbWJsZXJMYWJlbCBqbXApICAgIA0K
ICAgICAgICAgICAgOiBtX2xhYmVsKGptcCkNCiAgICAgICAgew0KICAgICAgICB9DQojbGluZSA2
MjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNz
ZW1ibGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiDQogICAgICAgIA0KICAgICAgICBMYWJl
bCBsYWJlbCgpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIExhYmVsIHJlc3VsdDsNCiAg
ICAgICAgICAgIHJlc3VsdC5tX2xhYmVsID0gbV9sYWJlbDsNCiAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIGxpbmsoQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlclR5cGUqIG1hc20pIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIG1hc20tPmludmFs
aWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7DQoNCg0KDQojbGluZSA2NDIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgiDQoNCg0KDQojbGluZSA2NDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgiDQoNCg0KDQoNCg0KDQojbGluZSA2NTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgiDQogICAgICAgICAgICBtYXNtLT5tX2Fzc2VtYmxlci5saW5rSnVtcChtX2xhYmVsLCBtYXNt
LT5tX2Fzc2VtYmxlci5sYWJlbCgpKTsNCiNsaW5lIDY1NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCINCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdm9pZCBsaW5rVG8oTGFiZWwg
bGFiZWwsIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNtKSBjb25zdA0KICAgICAgICB7
DQoNCg0KI2xpbmUgNjYyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGFzc2VtYmxlclxcQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KDQoNCg0KI2xp
bmUgNjY2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGFzc2VtYmxlclxcQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KDQoNCg0KDQoNCg0KI2xpbmUg
NjczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFz
c2VtYmxlclxcQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KICAgICAgICAgICAgbWFzbS0+bV9h
c3NlbWJsZXIubGlua0p1bXAobV9sYWJlbCwgbGFiZWwubV9sYWJlbCk7DQojbGluZSA2NzUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVy
XFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiDQogICAgICAgIH0NCg0KICAgICAgICBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbC5pc1NldCgpOyB9DQoNCiAgICBwcml2YXRlOg0K
ICAgICAgICBBc3NlbWJsZXJMYWJlbCBtX2xhYmVsOw0KDQoNCg0KI2xpbmUgNjg1ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KDQoNCg0KDQoNCiNsaW5lIDY5MSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaCINCiAgICB9Ow0KDQogICAgc3RydWN0IFBhdGNoYWJsZUp1bXAgew0K
ICAgICAgICBQYXRjaGFibGVKdW1wKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAg
ZXhwbGljaXQgUGF0Y2hhYmxlSnVtcChKdW1wIGp1bXApDQogICAgICAgICAgICA6IG1fanVtcChq
dW1wKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICBvcGVyYXRvciBKdW1wJigpIHsg
cmV0dXJuIG1fanVtcDsgfQ0KDQogICAgICAgIEp1bXAgbV9qdW1wOw0KICAgIH07DQoNCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICBjbGFzcyBKdW1wTGlzdCB7DQogICAgcHVibGljOg0KICAg
ICAgICB0eXBlZGVmIFZlY3RvcjxKdW1wLCAyPiBKdW1wVmVjdG9yOw0KICAgICAgICANCiAgICAg
ICAgSnVtcExpc3QoKSB7IH0NCiAgICAgICAgDQogICAgICAgIEp1bXBMaXN0KEp1bXAganVtcCkN
CiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGp1bXAuaXNTZXQoKSkNCiAgICAgICAgICAgICAg
ICBhcHBlbmQoanVtcCk7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIGxpbmsoQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlclR5cGUqIG1hc20pIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHNp
emVfdCBzaXplID0gbV9qdW1wcy5zaXplKCk7DQogICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkNCiAgICAgICAgICAgICAgICBtX2p1bXBzW2ldLmxpbmsobWFzbSk7
DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHZvaWQgbGlua1RvKExhYmVsIGxhYmVsLCBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZSogbWFzbSkgY29uc3QNCiAgICAgICAgew0KICAgICAg
ICAgICAgc2l6ZV90IHNpemUgPSBtX2p1bXBzLnNpemUoKTsNCiAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQ0KICAgICAgICAgICAgICAgIG1fanVtcHNbaV0ubGlu
a1RvKGxhYmVsLCBtYXNtKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdm9pZCBhcHBl
bmQoSnVtcCBqdW1wKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoanVtcC5pc1NldCgpKQ0K
ICAgICAgICAgICAgICAgIG1fanVtcHMuYXBwZW5kKGp1bXApOw0KICAgICAgICB9DQogICAgICAg
IA0KICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBKdW1wTGlzdCYgb3RoZXIpDQogICAgICAgIHsN
CiAgICAgICAgICAgIG1fanVtcHMuYXBwZW5kKG90aGVyLm1fanVtcHMuYmVnaW4oKSwgb3RoZXIu
bV9qdW1wcy5zaXplKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0
DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAhbV9qdW1wcy5zaXplKCk7DQogICAgICAg
IH0NCiAgICAgICAgDQogICAgICAgIHZvaWQgY2xlYXIoKQ0KICAgICAgICB7DQogICAgICAgICAg
ICBtX2p1bXBzLmNsZWFyKCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGNvbnN0IEp1
bXBWZWN0b3ImIGp1bXBzKCkgY29uc3QgeyByZXR1cm4gbV9qdW1wczsgfQ0KDQogICAgcHJpdmF0
ZToNCiAgICAgICAgSnVtcFZlY3RvciBtX2p1bXBzOw0KICAgIH07DQoNCg0KICAgIA0KDQogICAg
TGFiZWwgbGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkNCiAgICB7DQogICAgICAgIExhYmVsIHJl
c3VsdDsNCiAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMoKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQoNCg0KDQoNCg0K
I2xpbmUgNzgwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGFzc2VtYmxlclxcQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KICAgIA0KICAgIExhYmVs
IGxhYmVsKCkNCiAgICB7DQogICAgICAgIHJldHVybiBMYWJlbCh0aGlzKTsNCiAgICB9DQogICAg
DQogICAgdm9pZCBwYWRCZWZvcmVQYXRjaCgpDQogICAgew0KICAgICAgICANCiAgICAgICAgKHZv
aWQpbGFiZWwoKTsNCiAgICB9DQogICAgDQogICAgTGFiZWwgd2F0Y2hwb2ludExhYmVsKCkNCiAg
ICB7DQogICAgICAgIExhYmVsIHJlc3VsdDsNCiAgICAgICAgcmVzdWx0Lm1fbGFiZWwgPSBtX2Fz
c2VtYmxlci5sYWJlbEZvcldhdGNocG9pbnQoKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAg
ICB9DQogICAgDQogICAgTGFiZWwgYWxpZ24oKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIu
YWxpZ24oMTYpOw0KICAgICAgICByZXR1cm4gTGFiZWwodGhpcyk7DQogICAgfQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA4NDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiDQoNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KICAgIHN0YXRpYyBwdHJkaWZmX3QgZGlm
ZmVyZW5jZUJldHdlZW4oVCBmcm9tLCBVIHRvKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIEFzc2Vt
YmxlclR5cGU6OmdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGZyb20ubV9sYWJlbCwgdG8ubV9s
YWJlbCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIGFUYWcsIFB0clRhZyBiVGFnPg0K
ICAgIHN0YXRpYyBwdHJkaWZmX3QgZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxhVGFnPiYgYSwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPGJU
YWc+JiBiKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGIudGVtcGxhdGUgZGF0YUxvY2F0aW9uPHB0
cmRpZmZfdD4oKSAtIGEudGVtcGxhdGUgZGF0YUxvY2F0aW9uPHB0cmRpZmZfdD4oKTsNCiAgICB9
DQoNCiAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYXNzZW1ibGVyLmRlYnVn
T2Zmc2V0KCk7IH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2
b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIEFzc2VtYmxlclR5cGU6OmNh
Y2hlRmx1c2goY29kZSwgc2l6ZSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4N
CiAgICBzdGF0aWMgdm9pZCBsaW5rSnVtcCh2b2lkKiBjb2RlLCBKdW1wIGp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsPHRhZz4gdGFyZ2V0KQ0KICAgIHsNCiAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlu
a0p1bXAoY29kZSwganVtcC5tX2xhYmVsLCB0YXJnZXQuZGF0YUxvY2F0aW9uKCkpOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVs
IGxhYmVsLCB2b2lkKiB2YWx1ZSkNCiAgICB7DQogICAgICAgIEFzc2VtYmxlclR5cGU6OmxpbmtQ
b2ludGVyKGNvZGUsIGxhYmVsLCB2YWx1ZSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFn
IHRhZz4NCiAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBjb2RlLCBBc3NlbWJsZXJM
YWJlbCBsYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4gdmFsdWUpDQogICAgew0KICAg
ICAgICBBc3NlbWJsZXJUeXBlOjpsaW5rUG9pbnRlcihjb2RlLCBsYWJlbCwgdmFsdWUuZXhlY3V0
YWJsZUFkZHJlc3MoKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBz
dGF0aWMgdm9pZCogZ2V0TGlua2VyQWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBs
YWJlbCkNCiAgICB7DQogICAgICAgIHJldHVybiB0YWdDb2RlUHRyKEFzc2VtYmxlclR5cGU6Omdl
dFJlbG9jYXRlZEFkZHJlc3MoY29kZSwgbGFiZWwpLCB0YWcpOw0KICAgIH0NCg0KICAgIHN0YXRp
YyB1bnNpZ25lZCBnZXRMaW5rZXJDYWxsUmV0dXJuT2Zmc2V0KENhbGwgY2FsbCkNCiAgICB7DQog
ICAgICAgIHJldHVybiBBc3NlbWJsZXJUeXBlOjpnZXRDYWxsUmV0dXJuT2Zmc2V0KGNhbGwubV9s
YWJlbCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIGp1bXBUYWcsIFB0clRhZyBkZXN0
VGFnPg0KICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hKdW1wKENvZGVMb2NhdGlvbkp1bXA8anVtcFRh
Zz4ganVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24pDQogICAgew0K
ICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZWxpbmtKdW1wKGp1bXAuZGF0YUxvY2F0aW9uKCksIGRl
c3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8UHRy
VGFnIGp1bXBUYWc+DQogICAgc3RhdGljIHZvaWQgcmVwYXRjaEp1bXBUb05vcChDb2RlTG9jYXRp
b25KdW1wPGp1bXBUYWc+IGp1bXApDQogICAgew0KICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZWxp
bmtKdW1wVG9Ob3AoanVtcC5kYXRhTG9jYXRpb24oKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8
UHRyVGFnIGNhbGxUYWcsIFB0clRhZyBkZXN0VGFnPg0KICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hO
ZWFyQ2FsbChDb2RlTG9jYXRpb25OZWFyQ2FsbDxjYWxsVGFnPiBuZWFyQ2FsbCwgQ29kZUxvY2F0
aW9uTGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24pDQogICAgew0KICAgICAgICBzd2l0Y2ggKG5l
YXJDYWxsLmNhbGxNb2RlKCkpIHsNCiAgICAgICAgY2FzZSBOZWFyQ2FsbE1vZGU6OlRhaWw6DQog
ICAgICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZWxpbmtKdW1wKG5lYXJDYWxsLmRhdGFMb2NhdGlv
bigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7DQogICAgICAgICAgICByZXR1cm47DQog
ICAgICAgIGNhc2UgTmVhckNhbGxNb2RlOjpSZWd1bGFyOg0KICAgICAgICAgICAgQXNzZW1ibGVy
VHlwZTo6cmVsaW5rQ2FsbChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24udW50
YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAg
fQ0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJG
ZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oOTEzLCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaCIsICBfX0ZVTkNUSU9OX18gICwgMzAgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPFB0clRhZyBjYWxsVGFnLCBQdHJUYWcgZGVzdFRhZz4NCiAgICBz
dGF0aWMgQ29kZUxvY2F0aW9uTGFiZWw8ZGVzdFRhZz4gcHJlcGFyZUZvckF0b21pY1JlcGF0Y2hO
ZWFyQ2FsbENvbmN1cnJlbnRseShDb2RlTG9jYXRpb25OZWFyQ2FsbDxjYWxsVGFnPiBuZWFyQ2Fs
bCwgQ29kZUxvY2F0aW9uTGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24pDQogICAgew0KDQoNCg0K
DQoNCg0KDQojbGluZSA5MjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiDQogICAgICAg
ICh2b2lkKW5lYXJDYWxsOw0KICAgICAgICByZXR1cm4gZGVzdGluYXRpb247DQojbGluZSA5MzAg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1i
bGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgiDQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRy
VGFnIHRhZz4NCiAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdChDb2RlTG9jYXRpb25EYXRh
TGFiZWxDb21wYWN0PHRhZz4gZGF0YUxhYmVsQ29tcGFjdCwgaW50MzJfdCB2YWx1ZSkNCiAgICB7
DQogICAgICAgIEFzc2VtYmxlclR5cGU6OnJlcGF0Y2hDb21wYWN0KGRhdGFMYWJlbENvbXBhY3Qu
dGVtcGxhdGUgZGF0YUxvY2F0aW9uKCksIHZhbHVlKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQ
dHJUYWcgdGFnPg0KICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMihDb2RlTG9jYXRpb25EYXRh
TGFiZWwzMjx0YWc+IGRhdGFMYWJlbDMyLCBpbnQzMl90IHZhbHVlKQ0KICAgIHsNCiAgICAgICAg
QXNzZW1ibGVyVHlwZTo6cmVwYXRjaEludDMyKGRhdGFMYWJlbDMyLmRhdGFMb2NhdGlvbigpLCB2
YWx1ZSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBzdGF0aWMgdm9p
ZCByZXBhdGNoUG9pbnRlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHI8dGFnPiBkYXRhTGFiZWxQ
dHIsIHZvaWQqIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwYXRjaFBv
aW50ZXIoZGF0YUxhYmVsUHRyLmRhdGFMb2NhdGlvbigpLCB2YWx1ZSk7DQogICAgfQ0KDQogICAg
dGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBzdGF0aWMgdm9pZCogcmVhZFBvaW50ZXIoQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsUHRyPHRhZz4gZGF0YUxhYmVsUHRyKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIEFzc2VtYmxlclR5cGU6OnJlYWRQb2ludGVyKGRhdGFMYWJlbFB0ci5kYXRhTG9jYXRpb24o
KSk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+DQogICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhMb2FkKENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZDx0YWc+IGxhYmVs
KQ0KICAgIHsNCiAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhMb2FkKGxhYmVsLmRh
dGFMb2NhdGlvbigpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KICAgIHN0
YXRpYyB2b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKENvZGVMb2NhdGlvbkNvbnZl
cnRpYmxlTG9hZDx0YWc+IGxhYmVsKQ0KICAgIHsNCiAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVw
bGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24obGFiZWwuZGF0YUxvY2F0aW9uKCkpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+DQogICAgdm9pZCBhZGRMaW5rVGFzayhj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQ0KICAgIHsNCiAgICAgICAgbV9saW5rVGFza3MuYXBwZW5k
KGNyZWF0ZVNoYXJlZFRhc2s8dm9pZChMaW5rQnVmZmVyJik+KGZ1bmN0b3IpKTsNCiAgICB9DQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDk4MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCINCg0K
ICAgIHZvaWQgZW1pdE5vcHMoc2l6ZV90IG1lbW9yeVRvRmlsbFdpdGhOb3BzSW5CeXRlcykNCiAg
ICB7DQoNCg0KDQoNCiNsaW5lIDk4OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCINCiAg
ICAgICAgQXNzZW1ibGVyQnVmZmVyJiBidWZmZXIgPSBtX2Fzc2VtYmxlci5idWZmZXIoKTsNCiAg
ICAgICAgc2l6ZV90IHN0YXJ0Q29kZVNpemUgPSBidWZmZXIuY29kZVNpemUoKTsNCiAgICAgICAg
c2l6ZV90IHRhcmdldENvZGVTaXplID0gc3RhcnRDb2RlU2l6ZSArIG1lbW9yeVRvRmlsbFdpdGhO
b3BzSW5CeXRlczsNCiAgICAgICAgYnVmZmVyLmVuc3VyZVNwYWNlKG1lbW9yeVRvRmlsbFdpdGhO
b3BzSW5CeXRlcyk7DQogICAgICAgIEFzc2VtYmxlclR5cGU6OnRlbXBsYXRlIGZpbGxOb3BzPG1l
bWNweT4oc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpICsgc3RhcnRDb2RlU2l6ZSwg
bWVtb3J5VG9GaWxsV2l0aE5vcHNJbkJ5dGVzKTsNCiAgICAgICAgYnVmZmVyLnNldENvZGVTaXpl
KHRhcmdldENvZGVTaXplKTsNCiNsaW5lIDk5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aCINCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgdGFnUmV0dXJuQWRkcmVzcygpIHsg
fQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCB1bnRhZ1JldHVybkFkZHJlc3MoKSB7IH0NCg0KICAg
IF9fZm9yY2VpbmxpbmUgdm9pZCB0YWdQdHIoUHRyVGFnLCBSZWdpc3RlcklEKSB7IH0NCiAgICBf
X2ZvcmNlaW5saW5lIHZvaWQgdGFnUHRyKFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpIHsgfQ0KICAg
IF9fZm9yY2VpbmxpbmUgdm9pZCB1bnRhZ1B0cihQdHJUYWcsIFJlZ2lzdGVySUQpIHsgfQ0KICAg
IF9fZm9yY2VpbmxpbmUgdm9pZCB1bnRhZ1B0cihSZWdpc3RlcklELCBSZWdpc3RlcklEKSB7IH0N
CiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgcmVtb3ZlUHRyVGFnKFJlZ2lzdGVySUQpIHsgfQ0KDQpw
cm90ZWN0ZWQ6DQogICAgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcigpDQogICAgICAgIDogbV9yYW5k
b21Tb3VyY2UoMCkNCiAgICAgICAgLCBtX2Fzc2VtYmxlcigpDQogICAgew0KICAgICAgICBpbnZh
bGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOw0KICAgIH0NCg0KICAgIHVpbnQzMl90IHJhbmRvbSgp
DQogICAgew0KICAgICAgICBpZiAoIW1fcmFuZG9tU291cmNlSXNJbml0aWFsaXplZCkgew0KICAg
ICAgICAgICAgbV9yYW5kb21Tb3VyY2VJc0luaXRpYWxpemVkID0gdHJ1ZTsNCiAgICAgICAgICAg
IG1fcmFuZG9tU291cmNlLnNldFNlZWQoY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSk7
DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIG1fcmFuZG9tU291cmNlLmdldFVpbnQzMigpOw0K
ICAgIH0NCg0KICAgIGJvb2wgbV9yYW5kb21Tb3VyY2VJc0luaXRpYWxpemVkIHsgZmFsc2UgfTsN
CiAgICBXZWFrUmFuZG9tIG1fcmFuZG9tU291cmNlOw0KcHVibGljOg0KICAgIEFzc2VtYmxlclR5
cGUgbV9hc3NlbWJsZXI7DQpwcm90ZWN0ZWQ6DQoNCg0KDQojbGluZSAxMDMzICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oIg0KDQogICAgc3RhdGljIGJvb2wgaGF2ZVNjcmF0Y2hSZWdpc3Rl
ckZvckJsaW5kaW5nKCkNCiAgICB7DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAg
c3RhdGljIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKQ0KICAgIHsNCiAg
ICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VG
b3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDEwNDAsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oIiwgIF9fRlVOQ1RJT05fXyAgLCAzMSApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAg
IHJldHVybiBmaXJzdFJlZ2lzdGVyKCk7DQogICAgfQ0KICAgIHN0YXRpYyBib29sIGNhbkJsaW5k
KCkgeyByZXR1cm4gZmFsc2U7IH0NCiAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNp
ZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4gZmFsc2U7IH0NCiAgICBzdGF0aWMgYm9vbCBzaG91
bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50NjRfdCkgeyByZXR1cm4gZmFsc2U7IH0NCg0KICAg
IGNsYXNzIENhY2hlZFRlbXBSZWdpc3RlciB7DQogICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFi
ZWxQdHI7DQogICAgICAgIGZyaWVuZCBjbGFzcyBEYXRhTGFiZWwzMjsNCiAgICAgICAgZnJpZW5k
IGNsYXNzIERhdGFMYWJlbENvbXBhY3Q7DQogICAgICAgIGZyaWVuZCBjbGFzcyBKdW1wOw0KICAg
ICAgICBmcmllbmQgY2xhc3MgTGFiZWw7DQoNCiAgICBwdWJsaWM6DQogICAgICAgIENhY2hlZFRl
bXBSZWdpc3RlcihBYnN0cmFjdE1hY3JvQXNzZW1ibGVyVHlwZSogbWFzbSwgUmVnaXN0ZXJJRCBy
ZWdpc3RlcklEKQ0KICAgICAgICAgICAgOiBtX21hc20obWFzbSkNCiAgICAgICAgICAgICwgbV9y
ZWdpc3RlcklEKHJlZ2lzdGVySUQpDQogICAgICAgICAgICAsIG1fdmFsdWUoMCkNCiAgICAgICAg
ICAgICwgbV92YWxpZEJpdCgxIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWdpc3RlcklEKSkN
CiAgICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICB9DQoNCiAgICAgICAg
X19mb3JjZWlubGluZSBSZWdpc3RlcklEIHJlZ2lzdGVySURJbnZhbGlkYXRlKCkgeyBpbnZhbGlk
YXRlKCk7IHJldHVybiBtX3JlZ2lzdGVySUQ7IH0NCg0KICAgICAgICBfX2ZvcmNlaW5saW5lIFJl
Z2lzdGVySUQgcmVnaXN0ZXJJRE5vSW52YWxpZGF0ZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJJRDsg
fQ0KDQogICAgICAgIGJvb2wgdmFsdWUoaW50cHRyX3QmIHZhbHVlKQ0KICAgICAgICB7DQogICAg
ICAgICAgICB2YWx1ZSA9IG1fdmFsdWU7DQogICAgICAgICAgICByZXR1cm4gbV9tYXNtLT5pc1Rl
bXBSZWdpc3RlclZhbGlkKG1fdmFsaWRCaXQpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBz
ZXRWYWx1ZShpbnRwdHJfdCB2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgbV92YWx1ZSA9
IHZhbHVlOw0KICAgICAgICAgICAgbV9tYXNtLT5zZXRUZW1wUmVnaXN0ZXJWYWxpZChtX3ZhbGlk
Qml0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBpbnZhbGlkYXRl
KCkgeyBtX21hc20tPmNsZWFyVGVtcFJlZ2lzdGVyVmFsaWQobV92YWxpZEJpdCk7IH0NCg0KICAg
IHByaXZhdGU6DQogICAgICAgIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXJUeXBlKiBtX21hc207DQog
ICAgICAgIFJlZ2lzdGVySUQgbV9yZWdpc3RlcklEOw0KICAgICAgICBpbnRwdHJfdCBtX3ZhbHVl
Ow0KICAgICAgICB1bnNpZ25lZCBtX3ZhbGlkQml0Ow0KICAgIH07DQoNCiAgICBfX2ZvcmNlaW5s
aW5lIHZvaWQgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKQ0KICAgIHsNCiAgICAgICAgbV90
ZW1wUmVnaXN0ZXJzVmFsaWRCaXRzID0gMDsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIGJv
b2wgaXNUZW1wUmVnaXN0ZXJWYWxpZCh1bnNpZ25lZCByZWdpc3Rlck1hc2spDQogICAgew0KICAg
ICAgICByZXR1cm4gKG1fdGVtcFJlZ2lzdGVyc1ZhbGlkQml0cyAmIHJlZ2lzdGVyTWFzayk7DQog
ICAgfQ0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIGNsZWFyVGVtcFJlZ2lzdGVyVmFsaWQodW5z
aWduZWQgcmVnaXN0ZXJNYXNrKQ0KICAgIHsNCiAgICAgICAgbV90ZW1wUmVnaXN0ZXJzVmFsaWRC
aXRzICY9ICB+cmVnaXN0ZXJNYXNrOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBz
ZXRUZW1wUmVnaXN0ZXJWYWxpZCh1bnNpZ25lZCByZWdpc3Rlck1hc2spDQogICAgew0KICAgICAg
ICBtX3RlbXBSZWdpc3RlcnNWYWxpZEJpdHMgfD0gcmVnaXN0ZXJNYXNrOw0KICAgIH0NCg0KICAg
IGZyaWVuZCBjbGFzcyBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7DQogICAgZnJpZW5k
IGNsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmOw0KICAgIGZyaWVuZCBjbGFz
cyBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U7DQogICAgdW5zaWduZWQgbV90ZW1w
UmVnaXN0ZXJzVmFsaWRCaXRzOw0KICAgIGJvb2wgbV9hbGxvd1NjcmF0Y2hSZWdpc3RlciB7IHRy
dWUgfTsNCg0KICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKExpbmtCdWZmZXImKT4+
PiBtX2xpbmtUYXNrczsNCg0KICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOw0KfTsgDQoNCnRl
bXBsYXRlIDxjbGFzcyBBc3NlbWJsZXJUeXBlPg0KaW5saW5lIHR5cGVuYW1lIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZT46OkJhc2VJbmRleA0KQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXJUeXBlPjo6QWRkcmVzczo6aW5kZXhlZEJ5KA0KICAgIHR5cGVuYW1lIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyVHlwZT46OlJlZ2lzdGVySUQgaW5kZXgsDQog
ICAgdHlwZW5hbWUgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXJUeXBlPjo6U2NhbGUg
c2NhbGUpIGNvbnN0DQp7DQogICAgcmV0dXJuIEJhc2VJbmRleChiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCk7DQp9DQoNCiNsaW5lIDExMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgi
DQoNCn0gDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07DQoNCnZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXJCYXNlOjpTdGF0dXNDb25kaXRpb24pOw0KDQp9IA0KDQojbGluZSAxMTQ0ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oIg0KDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgiDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdXNpbmcgQXNzZW1ibGVyID0gWDg2
QXNzZW1ibGVyOw0KDQpjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gew0KcHVibGljOg0KDQogICAgDQogICAgc3Rh
dGljIGNvbnN0ZXhwciBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgc19zY3JhdGNoUmVnaXN0ZXIg
PSBYODZSZWdpc3RlcnM6OnIxMTsNCg0KICAgIA0KICAgIA0KICAgIFg4NlJlZ2lzdGVyczo6UmVn
aXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIoKQ0KICAgIHsNCiAgICAgICAgZG8geyBpZiAoKCEobV9h
bGxvd1NjcmF0Y2hSZWdpc3RlcikpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUo
KTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDksICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaCIsICBfX0ZVTkNUSU9OX18gICwgMzIgKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgcmV0dXJuIHNfc2NyYXRjaFJlZ2lzdGVyOw0K
ICAgIH0NCiNsaW5lIDUzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCINCiAgICANCnBy
b3RlY3RlZDoNCiAgICBzdGF0aWMgY29uc3RleHByIGludCBEb3VibGVDb25kaXRpb25CaXRJbnZl
cnQgPSAweDEwOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IERvdWJsZUNvbmRpdGlvbkJpdFNw
ZWNpYWwgPSAweDIwOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IERvdWJsZUNvbmRpdGlvbkJp
dHMgPSBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQgfCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFs
Ow0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBYODZBc3NlbWJsZXI6OlhNTVJlZ2lzdGVySUQgWE1N
UmVnaXN0ZXJJRDsNCiAgICANCiAgICBzdGF0aWMgYm9vbCBpc0NvbXBhY3RQdHJBbGlnbmVkQWRk
cmVzc09mZnNldChwdHJkaWZmX3QgdmFsdWUpDQogICAgew0KICAgICAgICByZXR1cm4gdmFsdWUg
Pj0gLTEyOCAmJiB2YWx1ZSA8PSAxMjc7DQogICAgfQ0KDQogICAgZW51bSBSZWxhdGlvbmFsQ29u
ZGl0aW9uIHsNCiAgICAgICAgRXF1YWwgPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkUsDQogICAg
ICAgIE5vdEVxdWFsID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORSwNCiAgICAgICAgQWJvdmUg
PSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkEsDQogICAgICAgIEFib3ZlT3JFcXVhbCA9IFg4NkFz
c2VtYmxlcjo6Q29uZGl0aW9uQUUsDQogICAgICAgIEJlbG93ID0gWDg2QXNzZW1ibGVyOjpDb25k
aXRpb25CLA0KICAgICAgICBCZWxvd09yRXF1YWwgPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkJF
LA0KICAgICAgICBHcmVhdGVyVGhhbiA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRywNCiAgICAg
ICAgR3JlYXRlclRoYW5PckVxdWFsID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25HRSwNCiAgICAg
ICAgTGVzc1RoYW4gPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkwsDQogICAgICAgIExlc3NUaGFu
T3JFcXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uTEUNCiAgICB9Ow0KDQogICAgZW51bSBS
ZXN1bHRDb25kaXRpb24gew0KICAgICAgICBPdmVyZmxvdyA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0
aW9uTywNCiAgICAgICAgU2lnbmVkID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25TLA0KICAgICAg
ICBQb3NpdGl2ZU9yWmVybyA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uTlMsDQogICAgICAgIFpl
cm8gPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkUsDQogICAgICAgIE5vblplcm8gPSBYODZBc3Nl
bWJsZXI6OkNvbmRpdGlvbk5FDQogICAgfTsNCg0KICAgIA0KICAgIGVudW0gRG91YmxlQ29uZGl0
aW9uIHsNCiAgICAgICAgDQogICAgICAgIERvdWJsZUVxdWFsQW5kT3JkZXJlZCA9IFg4NkFzc2Vt
Ymxlcjo6Q29uZGl0aW9uRSB8IERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwsDQogICAgICAgIERv
dWJsZU5vdEVxdWFsQW5kT3JkZXJlZCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uTkUsDQogICAg
ICAgIERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9u
QSwNCiAgICAgICAgRG91YmxlR3JlYXRlclRoYW5PckVxdWFsQW5kT3JkZXJlZCA9IFg4NkFzc2Vt
Ymxlcjo6Q29uZGl0aW9uQUUsDQogICAgICAgIERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZCA9IFg4
NkFzc2VtYmxlcjo6Q29uZGl0aW9uQSB8IERvdWJsZUNvbmRpdGlvbkJpdEludmVydCwNCiAgICAg
ICAgRG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0
aW9uQUUgfCBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQsDQogICAgICAgIA0KICAgICAgICBEb3Vi
bGVFcXVhbE9yVW5vcmRlcmVkID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25FLA0KICAgICAgICBE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkID0gWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORSB8IERv
dWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwsDQogICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JVbm9y
ZGVyZWQgPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkIgfCBEb3VibGVDb25kaXRpb25CaXRJbnZl
cnQsDQogICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gWDg2QXNz
ZW1ibGVyOjpDb25kaXRpb25CRSB8IERvdWJsZUNvbmRpdGlvbkJpdEludmVydCwNCiAgICAgICAg
RG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uQiwNCiAg
ICAgICAgRG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQgPSBYODZBc3NlbWJsZXI6OkNv
bmRpdGlvbkJFLA0KICAgIH07DQogICAgc3RhdGljX2Fzc2VydCgoISgoWDg2QXNzZW1ibGVyOjpD
b25kaXRpb25FIHwgWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORSB8IFg4NkFzc2VtYmxlcjo6Q29u
ZGl0aW9uQSB8IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uQUUgfCBYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbkIgfCBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkJFKSAmIERvdWJsZUNvbmRpdGlvbkJpdHMp
KSwgIkRvdWJsZUNvbmRpdGlvbkJpdHNfc2hvdWxkX25vdF9pbnRlcmZlcmVfd2l0aF9YODZBc3Nl
bWJsZXJfQ29uZGl0aW9uX2NvZGVzIik7DQojbGluZSAxMDggIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oIg0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIHN0YWNrUG9pbnRl
clJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc3A7DQogICAgc3RhdGljIGNvbnN0ZXhwciBSZWdp
c3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7DQogICAgDQog
ICAgc3RhdGljIGJvb2wgY2FuQmxpbmQoKSB7IHJldHVybiB0cnVlOyB9DQogICAgc3RhdGljIGJv
b2wgc2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludDMyX3QgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlID49IDB4MDBmZmZmZmY7IH0NCiAgICBzdGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNp
ZmljQXJjaCh1aW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPj0gMHgwMGZmZmZmZjsgfQ0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICB2b2lkIGFkZDMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRsX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhZGQzMihUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5hZGRs
X2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQoN
CiAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAg
IHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYWRkbF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgfQ0K
DQogICAgdm9pZCBhZGQ4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7
DQogICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFs
dWUpKTsNCiAgICAgICAgbV9hc3NlbWJsZXIuYWRkYl9pbShpbW04Lm1fdmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkOChUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIFRydXN0ZWRJbW0zMiBp
bW04KHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpKTsNCiAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkYl9pbShpbW04Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkMTYoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkd19pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7DQog
ICAgfQ0KDQogICAgdm9pZCBhZGQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVz
cykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmFkZHdfaW0oaW1tLm1fdmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0K
ICAgIH0NCg0KICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQ0KICAgIHsNCiAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpDQogICAgICAgICAgICBtX2Fz
c2VtYmxlci5pbmNfcihkZXN0KTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkbF9pcihpbW0ubV92YWx1ZSwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYWRk
MzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLmFkZGxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZv
aWQgYWRkMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIuYWRkbF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMu
c2NhbGUsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfcm0oc3JjLCBkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfcm0o
c3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAg
ICB9DQoNCiAgICB2b2lkIGFkZDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkNCiAgICB7
DQogICAgICAgIG1fYXNzZW1ibGVyLmFkZGJfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZDgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYWRkYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRk
MTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLmFkZHdfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsNCiAgICB9DQoNCiAgICB2
b2lkIGFkZDE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLmFkZHdfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0Lmlu
ZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAo
IWltbS5tX3ZhbHVlKSB7DQogICAgICAgICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQoc3JjLCBkZXN0
KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChzcmMgPT0g
ZGVzdCkgew0KICAgICAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsNCiAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KDQogICAgICAgIG1fYXNzZW1ibGVyLmxlYWxfbXIoaW1tLm1fdmFsdWUs
IHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIGEsIFJlZ2lz
dGVySUQgYiwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgeDg2TGVhMzIoQmFzZUlu
ZGV4KGEsIGIsIFRpbWVzT25lKSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB4ODZMZWEzMihC
YXNlSW5kZXggaW5kZXgsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmICghaW5k
ZXguc2NhbGUgJiYgIWluZGV4Lm9mZnNldCkgew0KICAgICAgICAgICAgaWYgKGluZGV4LmJhc2Ug
PT0gZGVzdCkgew0KICAgICAgICAgICAgICAgIGFkZDMyKGluZGV4LmluZGV4LCBkZXN0KTsNCiAg
ICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoaW5k
ZXguaW5kZXggPT0gZGVzdCkgew0KICAgICAgICAgICAgICAgIGFkZDMyKGluZGV4LmJhc2UsIGRl
c3QpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgICAgICBtX2Fzc2VtYmxlci5sZWFsX21yKGluZGV4Lm9mZnNldCwgaW5kZXguYmFzZSwgaW5k
ZXguaW5kZXgsIGluZGV4LnNjYWxlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZDMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRsX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5hbmRs
X2lyKGltbS5tX3ZhbHVlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZDMyKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5hbmRsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQzMihS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5z
Y2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgYW5kMTYoUmVnaXN0ZXJJRCBzcmMsIEJh
c2VJbmRleCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0K
ICAgIHZvaWQgYW5kOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAg
IH0NCg0KICAgIHZvaWQgYW5kOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5hbmRiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQzMihBZGRy
ZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5k
bF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQz
MihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwg
ZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQxNihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kd19tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQxNihCYXNlSW5kZXggc3JjLCBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7DQogICAgfQ0KDQogICAg
dm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kbF9pbShpbW0u
bV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBB
ZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5hbmR3X2ltKHN0YXRp
Y19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmFuZHdfaW0oc3RhdGljX2Nhc3Q8
aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZDgoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIu
YW5kYl9pbShzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQ4KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kYl9pbShz
dGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBh
bmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkNCiAg
ICB7DQogICAgICAgIGlmIChvcDEgPT0gb3AyKQ0KICAgICAgICAgICAgemVyb0V4dGVuZDMyVG9X
b3JkKG9wMSwgZGVzdCk7DQogICAgICAgIGVsc2UgaWYgKG9wMSA9PSBkZXN0KQ0KICAgICAgICAg
ICAgYW5kMzIob3AyLCBkZXN0KTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBtb3ZlMzJJ
Zk5lZWRlZChvcDIsIGRlc3QpOw0KICAgICAgICAgICAgYW5kMzIob3AxLCBkZXN0KTsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgYW5kMzIoQWRkcmVzcyBvcDEsIFJlZ2lzdGVySUQgb3Ay
LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAob3AyID09IGRlc3QpDQogICAg
ICAgICAgICBhbmQzMihvcDEsIGRlc3QpOw0KICAgICAgICBlbHNlIGlmIChvcDEuYmFzZSA9PSBk
ZXN0KSB7DQogICAgICAgICAgICBsb2FkMzIob3AxLCBkZXN0KTsNCiAgICAgICAgICAgIGFuZDMy
KG9wMiwgZGVzdCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB6ZXJvRXh0ZW5kMzJU
b1dvcmQob3AyLCBkZXN0KTsNCiAgICAgICAgICAgIGFuZDMyKG9wMSwgZGVzdCk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgYW5kMzIob3AyLCBvcDEsIGRlc3QpOw0K
ICAgIH0NCg0KICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1vdmUzMklmTmVlZGVkKHNyYywgZGVz
dCk7DQogICAgICAgIGFuZDMyKGltbSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBjb3VudExl
YWRpbmdaZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAg
ICAgIGlmIChzdXBwb3J0c0xaQ05UKCkpIHsNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx6Y250
X3JyKHNyYywgZHN0KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBt
X2Fzc2VtYmxlci5ic3JfcnIoc3JjLCBkc3QpOw0KICAgICAgICBjbHozMkFmdGVyQnNyKGRzdCk7
DQogICAgfQ0KDQogICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczMyKEFkZHJlc3Mgc3JjLCBSZWdp
c3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGlmIChzdXBwb3J0c0xaQ05UKCkpIHsNCiAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmx6Y250X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3QpOw0K
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIG1fYXNzZW1ibGVyLmJzcl9t
cihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0KTsNCiAgICAgICAgY2x6MzJBZnRlckJzcihkc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgY291bnRUcmFpbGluZ1plcm9zMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHN1cHBvcnRzQk1JMSgpKSB7DQog
ICAgICAgICAgICBtX2Fzc2VtYmxlci50emNudF9ycihzcmMsIGRzdCk7DQogICAgICAgICAgICBy
ZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgbV9hc3NlbWJsZXIuYnNmX3JyKHNyYywgZHN0KTsN
CiAgICAgICAgY3R6QWZ0ZXJCc2Y8MzI+KGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBjb3VudFBv
cHVsYXRpb24zMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgIG1fYXNzZW1ibGVyLnBvcGNudF9tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGNvdW50UG9wdWxhdGlvbjMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgbV9hc3NlbWJsZXIucG9wY250X3JyKHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGJ5
dGVTd2FwMzIoUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5ic3dh
cGxfcihkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYnl0ZVN3YXAxNihSZWdpc3RlcklEIGRzdCkN
CiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnJvbHdfaThyKDgsIGRzdCk7DQogICAgICAgIHpl
cm9FeHRlbmQxNlRvMzIoZHN0LCBkc3QpOw0KICAgIH0NCg0KDQogICAgdm9pZCBieXRlU3dhcDY0
KFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYnN3YXBxX3IoZHN0
KTsNCiAgICB9DQojbGluZSA0MjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIg0KDQog
ICAgDQogICAgdm9pZCBpbGxlZ2FsSW5zdHJ1Y3Rpb24oKQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIuaWxsZWdhbEluc3RydWN0aW9uKCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgbHNoaWZ0
MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAg
ICAgIGlmIChzaGlmdF9hbW91bnQgPT0gWDg2UmVnaXN0ZXJzOjplY3gpDQogICAgICAgICAgICBt
X2Fzc2VtYmxlci5zaGxsX0NMcihkZXN0KTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICBzd2FwKHNoaWZ0X2Ftb3VudCwgWDg2UmVnaXN0ZXJzOjplY3gpOw0KICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc2hsbF9DTHIoZGVzdCA9PSBYODZSZWdpc3RlcnM6OmVjeCA/IHNoaWZ0
X2Ftb3VudCA6IGRlc3QpOw0KICAgICAgICAgICAgc3dhcChzaGlmdF9hbW91bnQsIFg4NlJlZ2lz
dGVyczo6ZWN4KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgbW92ZTMySWZOZWVkZWQoc3JjLCBkZXN0
KTsNCiAgICAgICAgbHNoaWZ0MzIoc2hpZnRfYW1vdW50LCBkZXN0KTsNCiAgICB9DQoNCiAgICB2
b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLnNobGxfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsNCiAgICB9DQog
ICAgDQogICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZTMySWZOZWVkZWQoc3JjLCBkZXN0
KTsNCiAgICAgICAgbHNoaWZ0MzIoaW1tLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBt
dWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9h
c3NlbWJsZXIuaW11bGxfcnIoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG11bDMyKFJl
Z2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0K
ICAgICAgICBpZiAoc3JjMiA9PSBkZXN0KSB7DQogICAgICAgICAgICBtX2Fzc2VtYmxlci5pbXVs
bF9ycihzcmMxLCBkZXN0KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAg
ICBtb3ZlMzJJZk5lZWRlZChzcmMxLCBkZXN0KTsNCiAgICAgICAgbV9hc3NlbWJsZXIuaW11bGxf
cnIoc3JjMiwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtdWwzMihBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuaW11bGxfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbXVsMzIoQWRkcmVzcyBv
cDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAo
b3AyID09IGRlc3QpDQogICAgICAgICAgICBtdWwzMihvcDEsIGRlc3QpOw0KICAgICAgICBlbHNl
IGlmIChvcDEuYmFzZSA9PSBkZXN0KSB7DQogICAgICAgICAgICBsb2FkMzIob3AxLCBkZXN0KTsN
CiAgICAgICAgICAgIG11bDMyKG9wMiwgZGVzdCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQob3AyLCBkZXN0KTsNCiAgICAgICAgICAgIG11bDMyKG9w
MSwgZGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQg
c3JjMSwgQWRkcmVzcyBzcmMyLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtdWwz
MihzcmMyLCBzcmMxLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBtdWwzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIuaW11bGxfaTMycihzcmMsIGltbS5tX3ZhbHVlLCBkZXN0KTsNCiAgICB9
DQoNCiAgICB2b2lkIHg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMigpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci5jZHEoKTsNCiAgICB9DQoNCiAgICB2b2lkIHg4NkNvbnZlcnRUb0RvdWJsZVdv
cmQzMihSZWdpc3RlcklEIGVheCwgUmVnaXN0ZXJJRCBlZHgpDQogICAgew0KICAgICAgICAoKHZv
aWQpZWF4KTsNCiAgICAgICAgKCh2b2lkKWVkeCk7DQogICAgICAgIHg4NkNvbnZlcnRUb0RvdWJs
ZVdvcmQzMigpOw0KICAgIH0NCg0KICAgIHZvaWQgeDg2RGl2MzIoUmVnaXN0ZXJJRCBkZW5vbWlu
YXRvcikNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmlkaXZsX3IoZGVub21pbmF0b3IpOw0K
ICAgIH0NCg0KICAgIHZvaWQgeDg2RGl2MzIoUmVnaXN0ZXJJRCBlYXgsIFJlZ2lzdGVySUQgZWR4
LCBSZWdpc3RlcklEIGRlbm9taW5hdG9yKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKWVheCk7DQog
ICAgICAgICgodm9pZCllZHgpOw0KICAgICAgICB4ODZEaXYzMihkZW5vbWluYXRvcik7DQogICAg
fQ0KDQogICAgdm9pZCB4ODZVRGl2MzIoUmVnaXN0ZXJJRCBkZW5vbWluYXRvcikNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLmRpdmxfcihkZW5vbWluYXRvcik7DQogICAgfQ0KDQogICAgdm9p
ZCB4ODZVRGl2MzIoUmVnaXN0ZXJJRCBlYXgsIFJlZ2lzdGVySUQgZWR4LCBSZWdpc3RlcklEIGRl
bm9taW5hdG9yKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKWVheCk7DQogICAgICAgICgodm9pZCll
ZHgpOw0KICAgICAgICB4ODZVRGl2MzIoZGVub21pbmF0b3IpOw0KICAgIH0NCg0KICAgIHZvaWQg
bmVnMzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubmVn
bF9yKHNyY0Rlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbmVnMzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1vdmUzMklmTmVlZGVkKHNyYywgZGVzdCk7
DQogICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xfcihkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG5l
ZzMyKEFkZHJlc3Mgc3JjRGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm5lZ2xfbShz
cmNEZXN0Lm9mZnNldCwgc3JjRGVzdC5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIG5lZzMyKEJh
c2VJbmRleCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rl
c3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UsIHNyY0Rlc3QuaW5kZXgsIHNyY0Rlc3Quc2NhbGUpOw0K
ICAgIH0NCg0KICAgIHZvaWQgbmVnMTYoQWRkcmVzcyBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIubmVnd19tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOw0KICAgIH0N
Cg0KICAgIHZvaWQgbmVnMTYoQmFzZUluZGV4IHNyY0Rlc3QpDQogICAgew0KICAgICAgICBtX2Fz
c2VtYmxlci5uZWd3X20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3QuYmFzZSwgc3JjRGVzdC5pbmRl
eCwgc3JjRGVzdC5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBuZWc4KEFkZHJlc3Mgc3JjRGVz
dCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm5lZ2JfbShzcmNEZXN0Lm9mZnNldCwgc3Jj
RGVzdC5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIG5lZzgoQmFzZUluZGV4IHNyY0Rlc3QpDQog
ICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5uZWdiX20oc3JjRGVzdC5vZmZzZXQsIHNyY0Rlc3Qu
YmFzZSwgc3JjRGVzdC5pbmRleCwgc3JjRGVzdC5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBv
cjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fz
c2VtYmxlci5vcmxfcnIoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG9yMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIu
b3JsX2lyKGltbS5tX3ZhbHVlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG9yMzIoUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm9ybF9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgb3IzMihS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5vcmxfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNj
YWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVz
dCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm9yd19ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgb3IxNihSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5vcndfcm0oc3JjLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2
b2lkIG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9h
c3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQog
ICAgdm9pZCBvcjgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIub3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5p
bmRleCwgZGVzdC5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBvcjMyKEFkZHJlc3Mgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5vcmxfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgb3IzMihCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5vcmxfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBkZXN0KTsNCiAgICB9
DQoNCiAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAg
IHsNCiAgICAgICAgbV9hc3NlbWJsZXIub3JsX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5vcmxfaW0o
aW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5vcndfaW0oc3Rh
dGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5vcndfaW0oc3RhdGljX2Nhc3Q8
aW50MTZfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yOChUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5v
cmJfaW0oc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEJh
c2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIub3JiX2ltKHN0YXRp
Y19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yMzIo
UmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0K
ICAgICAgICBpZiAob3AxID09IG9wMikNCiAgICAgICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChv
cDEsIGRlc3QpOw0KICAgICAgICBlbHNlIGlmIChvcDEgPT0gZGVzdCkNCiAgICAgICAgICAgIG9y
MzIob3AyLCBkZXN0KTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBtb3ZlMzJJZk5lZWRl
ZChvcDIsIGRlc3QpOw0KICAgICAgICAgICAgb3IzMihvcDEsIGRlc3QpOw0KICAgICAgICB9DQog
ICAgfQ0KDQogICAgdm9pZCBvcjMyKEFkZHJlc3Mgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0
ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKG9wMiA9PSBkZXN0KQ0KICAgICAgICAgICAg
b3IzMihvcDEsIGRlc3QpOw0KICAgICAgICBlbHNlIGlmIChvcDEuYmFzZSA9PSBkZXN0KSB7DQog
ICAgICAgICAgICBsb2FkMzIob3AxLCBkZXN0KTsNCiAgICAgICAgICAgIG9yMzIob3AyLCBkZXN0
KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChvcDIs
IGRlc3QpOw0KICAgICAgICAgICAgb3IzMihvcDEsIGRlc3QpOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgb3IzMihvcDIsIG9wMSwgZGVzdCk7DQogICAgfQ0KDQogICAg
dm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBtb3ZlMzJJZk5lZWRlZChzcmMsIGRlc3QpOw0KICAgICAgICBv
cjMyKGltbSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNo
aWZ0X2Ftb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNoaWZ0X2Ft
b3VudCA9PSBYODZSZWdpc3RlcnM6OmVjeCkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNhcmxf
Q0xyKGRlc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAg
ICAgICAgc3dhcChzaGlmdF9hbW91bnQsIFg4NlJlZ2lzdGVyczo6ZWN4KTsNCiAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnNhcmxfQ0xyKGRlc3QgPT0gWDg2UmVnaXN0ZXJzOjplY3ggPyBzaGlmdF9h
bW91bnQgOiBkZXN0KTsNCiAgICAgICAgICAgIHN3YXAoc2hpZnRfYW1vdW50LCBYODZSZWdpc3Rl
cnM6OmVjeCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0X2Ftb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAgIG1vdmUzMklmTmVlZGVkKHNyYywgZGVzdCk7
DQogICAgICAgIHJzaGlmdDMyKHNoaWZ0X2Ftb3VudCwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAg
ICAgICBtX2Fzc2VtYmxlci5zYXJsX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1vdmUzMklmTmVlZGVkKHNyYywgZGVzdCk7
DQogICAgICAgIHJzaGlmdDMyKGltbSwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgdXJz
aGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0K
ICAgICAgICBpZiAoc2hpZnRfYW1vdW50ID09IFg4NlJlZ2lzdGVyczo6ZWN4KQ0KICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc2hybF9DTHIoZGVzdCk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICANCiAgICAgICAgICAgIHN3YXAoc2hpZnRfYW1vdW50LCBYODZSZWdpc3RlcnM6OmVj
eCk7DQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zaHJsX0NMcihkZXN0ID09IFg4NlJlZ2lzdGVy
czo6ZWN4ID8gc2hpZnRfYW1vdW50IDogZGVzdCk7DQogICAgICAgICAgICBzd2FwKHNoaWZ0X2Ft
b3VudCwgWDg2UmVnaXN0ZXJzOjplY3gpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCB1
cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3Rl
cklEIGRlc3QpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgbW92ZTMySWZO
ZWVkZWQoc3JjLCBkZXN0KTsNCiAgICAgICAgdXJzaGlmdDMyKHNoaWZ0X2Ftb3VudCwgZGVzdCk7
DQogICAgfQ0KDQogICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc2hybF9pOHIoaW1tLm1fdmFsdWUs
IGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywg
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZTMy
SWZOZWVkZWQoc3JjLCBkZXN0KTsNCiAgICAgICAgdXJzaGlmdDMyKGltbSwgZGVzdCk7DQogICAg
fQ0KDQogICAgdm9pZCByb3RhdGVSaWdodDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnJvcmxfaThyKGltbS5tX3ZhbHVlLCBk
ZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHJvdGF0ZVJpZ2h0MzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMgPT0gWDg2UmVnaXN0ZXJzOjpl
Y3gpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5yb3JsX0NMcihkZXN0KTsNCiAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAg
c3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWN4KTsNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnJv
cmxfQ0xyKGRlc3QgPT0gWDg2UmVnaXN0ZXJzOjplY3ggPyBzcmMgOiBkZXN0KTsNCiAgICAgICAg
ICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICB2b2lkIHJvdGF0ZUxlZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpDQog
ICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5yb2xsX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCByb3RhdGVMZWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMgPT0gWDg2UmVnaXN0ZXJzOjplY3gpDQogICAg
ICAgICAgICBtX2Fzc2VtYmxlci5yb2xsX0NMcihkZXN0KTsNCiAgICAgICAgZWxzZSB7DQogICAg
ICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgc3dhcChzcmMs
IFg4NlJlZ2lzdGVyczo6ZWN4KTsNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnJvbGxfQ0xyKGRl
c3QgPT0gWDg2UmVnaXN0ZXJzOjplY3ggPyBzcmMgOiBkZXN0KTsNCiAgICAgICAgICAgIHN3YXAo
c3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHN1
YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fz
c2VtYmxlci5zdWJsX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzdWIzMihSZWdp
c3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQog
ICAgICAgIGlmIChkZXN0ID09IHJpZ2h0KSB7DQogICAgICAgICAgICBuZWczMihkZXN0KTsNCiAg
ICAgICAgICAgIGFkZDMyKGxlZnQsIGRlc3QpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICB9DQogICAgICAgIG1vdmUobGVmdCwgZGVzdCk7DQogICAgICAgIHN1YjMyKHJpZ2h0LCBkZXN0
KTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQ0KICAgICAgICAgICAg
bV9hc3NlbWJsZXIuZGVjX3IoZGVzdCk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YmxfaXIoaW1tLm1fdmFsdWUsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLnN1YmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgc3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19pbShzdGF0aWNfY2Fz
dDxpbnQxNl90PihpbW0ubV92YWx1ZSksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0K
ICAgIH0NCg0KICAgIHZvaWQgc3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3Mp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRpY19jYXN0PGludDhfdD4o
aW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQoNCiAg
ICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9pbShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgfQ0KDQog
ICAgdm9pZCBzdWIxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7
DQogICAgICAgIG1fYXNzZW1ibGVyLnN1YndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1tLm1f
dmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YjgoVHJ1c3RlZEltbTMyIGltbSwgQmFz
ZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5zdWJiX2ltKHN0YXRp
Y19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YjMy
KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJsX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IHN1YjMyKEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1f
YXNzZW1ibGVyLnN1YmxfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNj
YWxlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX3JtKHNyYywgZGVzdC5v
ZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBzdWIxNihSZWdpc3RlcklEIHNy
YywgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgc3ViOChSZWdpc3Rl
cklEIHNyYywgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc3ViYl9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgc3ViMzIo
UmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Qu
c2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgc3ViMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc3Vid19ybShzcmMsIGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0KICAgIHZv
aWQgc3ViOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci5zdWJiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRl
eCwgZGVzdC5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMs
IGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQ0KICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgICAgICBl
bHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9m
ZnNldCwgZGVzdC5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0
LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjE2KFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIGltbS5tX3ZhbHVlID0gc3RhdGlj
X2Nhc3Q8aW50MTZfdD4oaW1tLm1fdmFsdWUpOw0KICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0g
LTEpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3R3X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcndfaW0oaW1tLm1f
dmFsdWUsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yMTYo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpDQogICAgew0KICAgICAgICBpbW0ubV92
YWx1ZSA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKTsNCiAgICAgICAgaWYgKGlt
bS5tX3ZhbHVlID09IC0xKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgICAgICBlbHNlDQog
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3J3X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHhv
cjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgaW1tLm1f
dmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKTsNCiAgICAgICAgaWYgKGlt
bS5tX3ZhbHVlID09IC0xKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JiX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsNCiAgICB9DQoNCiAg
ICB2b2lkIHhvcjgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpDQogICAgew0KICAg
ICAgICBpbW0ubV92YWx1ZSA9IHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpOw0KICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3Ri
X20oZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7DQogICAg
ICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmJfaW0oaW1tLm1fdmFsdWUsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0K
ICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bm90bF9yKGRlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Js
X2lyKGltbS5tX3ZhbHVlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjMyKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54b3JsX3Jt
KHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCB4b3IzMihS
ZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci54b3JsX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5z
Y2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCB4b3IxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRlc3Qub2Zmc2V0
LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yMTYoUmVnaXN0ZXJJRCBzcmMsIEJh
c2VJbmRleCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueG9yd19ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0K
ICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIueG9yYl9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAg
IH0NCg0KICAgIHZvaWQgeG9yOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci54b3JiX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCB4b3IzMihBZGRy
ZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueG9y
bF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
eG9yMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9h
c3NlbWJsZXIueG9ybF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2Nh
bGUsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKG9wMSA9
PSBvcDIpDQogICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgZGVzdCk7DQogICAgICAg
IGVsc2UgaWYgKG9wMSA9PSBkZXN0KQ0KICAgICAgICAgICAgeG9yMzIob3AyLCBkZXN0KTsNCiAg
ICAgICAgZWxzZSB7DQogICAgICAgICAgICBtb3ZlMzJJZk5lZWRlZChvcDIsIGRlc3QpOw0KICAg
ICAgICAgICAgeG9yMzIob3AxLCBkZXN0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQg
eG9yMzIoQWRkcmVzcyBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICBpZiAob3AyID09IGRlc3QpDQogICAgICAgICAgICB4b3IzMihvcDEsIGRlc3Qp
Ow0KICAgICAgICBlbHNlIGlmIChvcDEuYmFzZSA9PSBkZXN0KSB7DQogICAgICAgICAgICBsb2Fk
MzIob3AxLCBkZXN0KTsNCiAgICAgICAgICAgIHhvcjMyKG9wMiwgZGVzdCk7DQogICAgICAgIH0g
ZWxzZSB7DQogICAgICAgICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQob3AyLCBkZXN0KTsNCiAgICAg
ICAgICAgIHhvcjMyKG9wMSwgZGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHhv
cjMyKFJlZ2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgeG9yMzIob3AyLCBvcDEsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yMzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7
DQogICAgICAgIG1vdmUzMklmTmVlZGVkKHNyYywgZGVzdCk7DQogICAgICAgIHhvcjMyKGltbSwg
ZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBub3QzMihSZWdpc3RlcklEIHNyY0Rlc3QpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX3Ioc3JjRGVzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCBub3QzMihBZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5ub3RsX20o
ZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBub3QzMihCYXNlSW5k
ZXggZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm5vdGxfbShkZXN0Lm9mZnNldCwg
ZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIG5v
dDE2KEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm5vdHdfbShkZXN0
Lm9mZnNldCwgZGVzdC5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIG5vdDE2KEJhc2VJbmRleCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubm90d19tKGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgbm90OChB
ZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5ub3RiX20oZGVzdC5vZmZz
ZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBub3Q4KEJhc2VJbmRleCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubm90Yl9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Us
IGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgc3FydERvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIuc3FydHNkX3JyKHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHNxcnREb3VibGUo
QWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5zcXJ0c2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCBzcXJ0RmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLnNxcnRzc19ycihzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCBzcXJ0RmxvYXQoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5zcXJ0c3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBhYnNEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRz
dCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgbmVnYXRpdmVaZXJvQ29uc3RhbnQgPSAtMC4wOw0KICAgICAgICBsb2FkRG91YmxlKFRy
dXN0ZWRJbW1QdHIoJm5lZ2F0aXZlWmVyb0NvbnN0YW50KSwgZHN0KTsNCiAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kbnBkX3JyKHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG5lZ2F0ZURvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBuZWdhdGl2ZVplcm9Db25z
dGFudCA9IC0wLjA7DQogICAgICAgIGxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmbmVnYXRpdmVa
ZXJvQ29uc3RhbnQpLCBkc3QpOw0KICAgICAgICBtX2Fzc2VtYmxlci54b3JwZF9ycihzcmMsIGRz
dCk7DQogICAgfQ0KDQogICAgdm9pZCBjZWlsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5yb3VuZHNkX3JyKHNyYywg
ZHN0LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkSW5maW5pdGkpOw0KICAgIH0N
Cg0KICAgIHZvaWQgY2VpbERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAg
ICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2Us
IGRzdCwgWDg2QXNzZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZEluZmluaXRpKTsNCiAgICB9
DQoNCiAgICB2b2lkIGNlaWxGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19ycihzcmMsIGRzdCwgWDg2QXNz
ZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZEluZmluaXRpKTsNCiAgICB9DQoNCiAgICB2b2lk
IGNlaWxGbG9hdChBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLnJvdW5kc3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRzdCwgWDg2QXNz
ZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZEluZmluaXRpKTsNCiAgICB9DQoNCiAgICB2b2lk
IGZsb29yRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpDQogICAgew0K
ICAgICAgICBtX2Fzc2VtYmxlci5yb3VuZHNkX3JyKHNyYywgZHN0LCBYODZBc3NlbWJsZXI6OlJv
dW5kaW5nVHlwZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0aSk7DQogICAgfQ0KDQogICAgdm9pZCBm
bG9vckRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLnJvdW5kc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRzdCwgWDg2QXNz
ZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdGkpOw0KICAgIH0NCg0K
ICAgIHZvaWQgZmxvb3JGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQ0K
ICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19ycihzcmMsIGRzdCwgWDg2QXNzZW1i
bGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdGkpOw0KICAgIH0NCg0KICAg
IHZvaWQgZmxvb3JGbG9hdChBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRzdCwg
WDg2QXNzZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZE5lZ2F0aXZlSW5maW5pdGkpOw0KICAg
IH0NCg0KICAgIHZvaWQgcm91bmRUb3dhcmROZWFyZXN0SW50RG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5yb3VuZHNk
X3JyKHNyYywgZHN0LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG9OZWFyZXN0V2l0aFRp
ZXNUb0V2ZW4pOw0KICAgIH0NCg0KICAgIHZvaWQgcm91bmRUb3dhcmROZWFyZXN0SW50RmxvYXQo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fYXNz
ZW1ibGVyLnJvdW5kc3NfcnIoc3JjLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91bmRpbmdUeXBlOjpU
b05lYXJlc3RXaXRoVGllc1RvRXZlbik7DQogICAgfQ0KDQogICAgdm9pZCByb3VuZFRvd2FyZFpl
cm9Eb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLnJvdW5kc2RfcnIoc3JjLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91bmRp
bmdUeXBlOjpUb3dhcmRaZXJvKTsNCiAgICB9DQoNCiAgICB2b2lkIHJvdW5kVG93YXJkWmVyb0Rv
dWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fYXNz
ZW1ibGVyLnJvdW5kc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRzdCwgWDg2QXNzZW1ibGVy
OjpSb3VuZGluZ1R5cGU6OlRvd2FyZFplcm8pOw0KICAgIH0NCg0KICAgIHZvaWQgcm91bmRUb3dh
cmRaZXJvRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc3NfcnIoc3JjLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91
bmRpbmdUeXBlOjpUb3dhcmRaZXJvKTsNCiAgICB9DQoNCiAgICB2b2lkIHJvdW5kVG93YXJkWmVy
b0Zsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9h
c3NlbWJsZXIucm91bmRzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBYODZBc3NlbWJs
ZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkWmVybyk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQoNCiAgICB2b2lkIGxvYWQzMihJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92bF9t
cihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IGxvYWQzMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIubW92bF9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGxvYWQz
MldpdGhVbmFsaWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2
b2lkIGxvYWQxNlVuYWxpZ25lZChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbG9hZDE2KGFkZHJlc3MsIGRlc3QpOw0KICAgIH0NCg0KICAg
IHZvaWQgbG9hZDE2VW5hbGlnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBsb2FkMTYoYWRkcmVzcywgZGVzdCk7DQogICAgfQ0KDQogICAgRGF0
YUxhYmVsMzIgbG9hZDMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7DQogICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxfbXJfZGlzcDMyKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGRlc3QpOw0KICAgICAgICByZXR1cm4gRGF0YUxhYmVsMzIodGhpcyk7DQogICAgfQ0KICAgIA0K
ICAgIERhdGFMYWJlbENvbXBhY3QgbG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2go
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBwYWRCZWZv
cmVQYXRjaCgpOw0KICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX21yX2Rpc3A4KGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOw0KICAgICAgICByZXR1cm4gRGF0YUxhYmVsQ29tcGFj
dCh0aGlzKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KICAgIHN0YXRpYyB2
b2lkIHJlcGF0Y2hDb21wYWN0KENvZGVMb2NhdGlvbkRhdGFMYWJlbENvbXBhY3Q8dGFnPiBkYXRh
TGFiZWxDb21wYWN0LCBpbnQzMl90IHZhbHVlKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICBBc3NlbWJsZXJUeXBlX1Q6OnJlcGF0Y2hDb21wYWN0KGRhdGFMYWJlbENvbXBhY3Qu
ZGF0YUxvY2F0aW9uKCksIHZhbHVlKTsNCiAgICB9DQogICAgDQogICAgRGF0YUxhYmVsQ29tcGFj
dCBsb2FkQ29tcGFjdFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOw0KICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZsX21yX2Rpc3A4KGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRl
c3QpOw0KICAgICAgICByZXR1cm4gRGF0YUxhYmVsQ29tcGFjdCh0aGlzKTsNCiAgICB9DQoNCiAg
ICB2b2lkIGxvYWQ4KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0K
ICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCBsb2FkOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIubW92emJsX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIubW92c2JsX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbG9hZDhTaWduZWRF
eHRlbmRUbzMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzYmxfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB6ZXJvRXh0ZW5kOFRvMzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnpi
bF9ycihzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHNpZ25FeHRlbmQ4VG8zMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIubW92c2JsX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgbG9hZDE2KElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z6d2xfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7
DQogICAgfQ0KDQogICAgdm9pZCBsb2FkMTYoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnp3bF9tcihhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlLCBkZXN0KTsNCiAg
ICB9DQogICAgDQogICAgdm9pZCBsb2FkMTYoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6d2xfbXIoYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBsb2FkMTZTaWduZWRFeHRl
bmRUbzMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5tb3Zzd2xfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
bG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkN
CiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnN3bF9tcihhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHplcm9FeHRlbmQxNlRvMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnp3bF9ycihzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHNpZ25FeHRlbmQx
NlRvMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1f
YXNzZW1ibGVyLm1vdnN3bF9ycihzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICBEYXRhTGFi
ZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsNCiAgICAgICAgbV9h
c3NlbWJsZXIubW92bF9ybV9kaXNwMzIoc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
KTsNCiAgICAgICAgcmV0dXJuIERhdGFMYWJlbDMyKHRoaXMpOw0KICAgIH0NCg0KICAgIHZvaWQg
c3RvcmUzMihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpDQogICAgew0K
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfcm0oc3JjLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsN
CiAgICB9DQoNCiAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMm0oaW1tLm1f
dmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0K
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAgIH0NCg0K
ICAgIHZvaWQgc3RvcmVaZXJvMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgdm9p
ZCBzdG9yZVplcm8zMihCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKDApLCBhZGRyZXNzKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlWmVybzE2
KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgc3RvcmUxNihUcnVzdGVk
SW1tMzIoMCksIGFkZHJlc3MpOw0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmVaZXJvMTYoQmFzZUlu
ZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBzdG9yZTE2KFRydXN0ZWRJbW0zMigwKSwgYWRk
cmVzcyk7DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8
aW50OF90PihpbW0ubV92YWx1ZSkpOw0KICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX2k4bShpbW04
Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCg0KICAgIHZv
aWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkp
Ow0KICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX2k4bShpbW04Lm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyBfX2ZvcmNlaW5saW5lIFJlZ2lzdGVySUQgZ2V0VW51c2VkUmVnaXN0ZXIo
QmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBpZiAoYWRkcmVzcy5iYXNlICE9IFg4
NlJlZ2lzdGVyczo6ZWF4ICYmIGFkZHJlc3MuaW5kZXggIT0gWDg2UmVnaXN0ZXJzOjplYXgpDQog
ICAgICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplYXg7DQoNCiAgICAgICAgaWYgKGFkZHJl
c3MuYmFzZSAhPSBYODZSZWdpc3RlcnM6OmVieCAmJiBhZGRyZXNzLmluZGV4ICE9IFg4NlJlZ2lz
dGVyczo6ZWJ4KQ0KICAgICAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWJ4Ow0KDQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWN4Ow0KICAgIH0N
Cg0KICAgIHN0YXRpYyBfX2ZvcmNlaW5saW5lIFJlZ2lzdGVySUQgZ2V0VW51c2VkUmVnaXN0ZXIo
QWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSAhPSBYODZS
ZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVheDsNCg0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVkeDsNCiAg
ICB9DQoNCiAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3Mp
DQogICAgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNDEwICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaCINCiAgICAgICAgbV9hc3NlbWJsZXIubW92Yl9ybShzcmMsIGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
Ow0KICAgIH0NCiAgICANCiAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBh
ZGRyZXNzKQ0KICAgIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTQyOSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJc
XE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiDQogICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0o
c3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0
b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIubW92d19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmUxNihS
ZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIubW92d19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCg0K
ICAgIHZvaWQgc3RvcmUxNihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykNCiAg
ICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdndfaW0oc3RhdGljX2Nhc3Q8aW50MTZfdD4oaW1t
Lm1fdmFsdWUpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlMTYoVHJ1c3RlZEltbTMyIGlt
bSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5t
b3Z3X2ltKHN0YXRpY19jYXN0PGludDE2X3Q+KGltbS5tX3ZhbHVlKSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgdm9pZCBtb3ZlRG91Ymxl
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYg
KHNyYyAhPSBkZXN0KQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92YXBzX3JyKHNyYywgZGVz
dCk7DQogICAgfQ0KDQogICAgdm9pZCBsb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIgYWRkcmVzcywg
RlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KDQoNCiNsaW5lIDE0NjUgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oIg0KICAgICAgICBtb3ZlKGFkZHJlc3MsIHNjcmF0Y2hSZWdpc3Rlcigp
KTsNCiAgICAgICAgbG9hZERvdWJsZShzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7DQojbGluZSAx
NDY4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFz
c2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCINCiAgICB9DQoNCiAgICB2b2lkIGxv
YWREb3VibGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAg
IHsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92c2RfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBsb2FkRG91YmxlKEJhc2VJbmRleCBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnNk
X21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbG9hZEZsb2F0KFRydXN0ZWRJbW1QdHIg
YWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KDQoNCiNsaW5lIDE0ODUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIg0KICAgICAgICBtb3ZlKGFkZHJlc3MsIHNjcmF0Y2hS
ZWdpc3RlcigpKTsNCiAgICAgICAgbG9hZEZsb2F0KHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsN
CiNsaW5lIDE0ODggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIg0KICAgIH0NCg0KICAg
IHZvaWQgbG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnNzX21yKGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbG9hZEZsb2F0KEJhc2VJbmRl
eCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnNzX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZzZF9ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92c2Rfcm0oc3JjLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsN
CiAgICB9DQoNCiAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5tb3Zzc19ybShzcmMs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmVG
bG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLm1vdnNzX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgY29u
dmVydERvdWJsZVRvRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAg
ICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmN2dHNkMnNzX3JyKHNyYywgZHN0KTsNCiAgICB9DQoN
CiAgICB2b2lkIGNvbnZlcnREb3VibGVUb0Zsb2F0KEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3Rl
cklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmN2dHNkMnNzX21yKGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBjb252ZXJ0Rmxv
YXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIuY3Z0c3Myc2RfcnIoc3JjLCBkc3QpOw0KICAgIH0NCg0KICAgIHZv
aWQgY29udmVydEZsb2F0VG9Eb3VibGUoQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c3Myc2RfbXIoYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGFkZERvdWJsZShz
cmMsIGRlc3QsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJ
RCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgaWYgKHN1cHBvcnRzQVZYKCkpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci52YWRkc2RfcnIo
b3AxLCBvcDIsIGRlc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGlmIChvcDEgPT0g
ZGVzdCkNCiAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRzZF9ycihvcDIsIGRlc3QpOw0K
ICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgbW92ZURvdWJsZShvcDIsIGRlc3Qp
Ow0KICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHNkX3JyKG9wMSwgZGVzdCk7DQogICAg
ICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIGFkZERvdWJsZShBZGRyZXNz
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBhZGREb3VibGUoc3JjLCBk
ZXN0LCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZERvdWJsZShBZGRyZXNzIG9wMSwgRlBS
ZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3Vw
cG9ydHNBVlgoKSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZhZGRzZF9tcihvcDEub2Zmc2V0
LCBvcDEuYmFzZSwgb3AyLCBkZXN0KTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBpZiAo
b3AyID09IGRlc3QpIHsNCiAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRzZF9tcihvcDEu
b2Zmc2V0LCBvcDEuYmFzZSwgZGVzdCk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICAgICAgfQ0KDQogICAgICAgICAgICBsb2FkRG91YmxlKG9wMSwgZGVzdCk7DQogICAgICAgICAg
ICBhZGREb3VibGUob3AyLCBkZXN0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgYWRk
RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEFkZHJlc3Mgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkN
CiAgICB7DQogICAgICAgIGFkZERvdWJsZShvcDIsIG9wMSwgZGVzdCk7DQogICAgfQ0KDQogICAg
dm9pZCBhZGREb3VibGUoQmFzZUluZGV4IG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3Rl
cklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3VwcG9ydHNBVlgoKSkNCiAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnZhZGRzZF9tcihvcDEub2Zmc2V0LCBvcDEuYmFzZSwgb3AxLmluZGV4LCBv
cDEuc2NhbGUsIG9wMiwgZGVzdCk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgaWYgKG9w
MiA9PSBkZXN0KSB7DQogICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIob3AxLm9m
ZnNldCwgb3AxLmJhc2UsIG9wMS5pbmRleCwgb3AxLnNjYWxlLCBkZXN0KTsNCiAgICAgICAgICAg
ICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICBsb2FkRG91YmxlKG9wMSwg
ZGVzdCk7DQogICAgICAgICAgICBhZGREb3VibGUob3AyLCBkZXN0KTsNCiAgICAgICAgfQ0KICAg
IH0NCg0KICAgIHZvaWQgYWRkRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBhZGRGbG9hdChzcmMsIGRlc3QsIGRlc3QpOw0KICAgIH0NCg0K
ICAgIHZvaWQgYWRkRmxvYXQoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgYWRkRmxvYXQoc3JjLCBkZXN0LCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFk
ZEZsb2F0KEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHN1cHBvcnRzQVZYKCkpDQogICAgICAgICAgICBtX2Fz
c2VtYmxlci52YWRkc3NfcnIob3AxLCBvcDIsIGRlc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICAgIGlmIChvcDEgPT0gZGVzdCkNCiAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRz
c19ycihvcDIsIGRlc3QpOw0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgbW92
ZURvdWJsZShvcDIsIGRlc3QpOw0KICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHNzX3Jy
KG9wMSwgZGVzdCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lk
IGFkZEZsb2F0KEFkZHJlc3Mgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIGlmIChzdXBwb3J0c0FWWCgpKQ0KICAgICAgICAgICAgbV9hc3Nl
bWJsZXIudmFkZHNzX21yKG9wMS5vZmZzZXQsIG9wMS5iYXNlLCBvcDIsIGRlc3QpOw0KICAgICAg
ICBlbHNlIHsNCiAgICAgICAgICAgIGlmIChvcDIgPT0gZGVzdCkgew0KICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHNzX21yKG9wMS5vZmZzZXQsIG9wMS5iYXNlLCBkZXN0KTsNCiAgICAg
ICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGxvYWRGbG9h
dChvcDEsIGRlc3QpOw0KICAgICAgICAgICAgYWRkRmxvYXQob3AyLCBkZXN0KTsNCiAgICAgICAg
fQ0KICAgIH0NCg0KICAgIHZvaWQgYWRkRmxvYXQoRlBSZWdpc3RlcklEIG9wMSwgQWRkcmVzcyBv
cDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgYWRkRmxvYXQob3AyLCBvcDEs
IGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkRmxvYXQoQmFzZUluZGV4IG9wMSwgRlBSZWdp
c3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3VwcG9y
dHNBVlgoKSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZhZGRzc19tcihvcDEub2Zmc2V0LCBv
cDEuYmFzZSwgb3AxLmluZGV4LCBvcDEuc2NhbGUsIG9wMiwgZGVzdCk7DQogICAgICAgIGVsc2Ug
ew0KICAgICAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7DQogICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkc3NfbXIob3AxLm9mZnNldCwgb3AxLmJhc2UsIG9wMS5pbmRleCwgb3AxLnNjYWxl
LCBkZXN0KTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICBsb2FkRmxvYXQob3AxLCBkZXN0KTsNCiAgICAgICAgICAgIGFkZEZsb2F0KG9wMiwgZGVz
dCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmRpdnNk
X3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklE
IG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAg
ICANCiAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAgIG1vdmVEb3VibGUob3AxLCBkZXN0KTsN
CiAgICAgICAgZGl2RG91YmxlKG9wMiwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBkaXZEb3Vi
bGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIuZGl2c2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAg
IHZvaWQgZGl2RmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5kaXZzc19ycihzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAg
IHZvaWQgZGl2RmxvYXQoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIuZGl2c3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOw0K
ICAgIH0NCg0KICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQ0KICAgIHsNCiAgICAgICAgc3ViRG91YmxlKGRlc3QsIHNyYywgZGVzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9w
MiwgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3VwcG9ydHNBVlgoKSkN
CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZzdWJzZF9ycihvcDEsIG9wMiwgZGVzdCk7DQogICAg
ICAgIGVsc2Ugew0KICAgICAgICAgICAgDQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
ICAgICBtb3ZlRG91YmxlKG9wMSwgZGVzdCk7DQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJz
ZF9ycihvcDIsIGRlc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBzdWJEb3VibGUo
RlBSZWdpc3RlcklEIG9wMSwgQWRkcmVzcyBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgaWYgKHN1cHBvcnRzQVZYKCkpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci52c3Vi
c2RfbXIob3AxLCBvcDIub2Zmc2V0LCBvcDIuYmFzZSwgZGVzdCk7DQogICAgICAgIGVsc2Ugew0K
ICAgICAgICAgICAgbW92ZURvdWJsZShvcDEsIGRlc3QpOw0KICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3Vic2RfbXIob3AyLm9mZnNldCwgb3AyLmJhc2UsIGRlc3QpOw0KICAgICAgICB9DQogICAg
fQ0KDQogICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgQmFzZUluZGV4IG9wMiwg
RlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3VwcG9ydHNBVlgoKSkNCiAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnZzdWJzZF9tcihvcDEsIG9wMi5vZmZzZXQsIG9wMi5iYXNl
LCBvcDIuaW5kZXgsIG9wMi5zY2FsZSwgZGVzdCk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAg
ICAgbW92ZURvdWJsZShvcDEsIGRlc3QpOw0KICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Vic2Rf
bXIob3AyLm9mZnNldCwgb3AyLmJhc2UsIG9wMi5pbmRleCwgb3AyLnNjYWxlLCBkZXN0KTsNCiAg
ICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgc3ViRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHN1YkRvdWJsZShkZXN0LCBzcmMsIGRlc3QpOw0K
ICAgIH0NCg0KICAgIHZvaWQgc3ViRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklE
IGRlc3QpDQogICAgew0KICAgICAgICBzdWJGbG9hdChkZXN0LCBzcmMsIGRlc3QpOw0KICAgIH0N
Cg0KICAgIHZvaWQgc3ViRmxvYXQoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwg
RlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3VwcG9ydHNBVlgoKSkNCiAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnZzdWJzc19ycihvcDEsIG9wMiwgZGVzdCk7DQogICAgICAg
IGVsc2Ugew0KICAgICAgICAgICAgDQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAg
ICBtb3ZlRG91YmxlKG9wMSwgZGVzdCk7DQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJzc19y
cihvcDIsIGRlc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBzdWJGbG9hdChGUFJl
Z2lzdGVySUQgb3AxLCBBZGRyZXNzIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAg
ICAgICBpZiAoc3VwcG9ydHNBVlgoKSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZzdWJzc19t
cihvcDEsIG9wMi5vZmZzZXQsIG9wMi5iYXNlLCBkZXN0KTsNCiAgICAgICAgZWxzZSB7DQogICAg
ICAgICAgICBtb3ZlRG91YmxlKG9wMSwgZGVzdCk7DQogICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dWJzc19tcihvcDIub2Zmc2V0LCBvcDIuYmFzZSwgZGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoN
CiAgICB2b2lkIHN1YkZsb2F0KEZQUmVnaXN0ZXJJRCBvcDEsIEJhc2VJbmRleCBvcDIsIEZQUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHN1cHBvcnRzQVZYKCkpDQogICAgICAg
ICAgICBtX2Fzc2VtYmxlci52c3Vic3NfbXIob3AxLCBvcDIub2Zmc2V0LCBvcDIuYmFzZSwgb3Ay
LmluZGV4LCBvcDIuc2NhbGUsIGRlc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIG1v
dmVEb3VibGUob3AxLCBkZXN0KTsNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnNzX21yKG9w
Mi5vZmZzZXQsIG9wMi5iYXNlLCBvcDIuaW5kZXgsIG9wMi5zY2FsZSwgZGVzdCk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICB2b2lkIHN1YkZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkNCiAgICB7DQogICAgICAgIHN1YkZsb2F0KGRlc3QsIHNyYywgZGVzdCk7DQogICAgfQ0K
DQogICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBtdWxEb3VibGUoc3JjLCBkZXN0LCBkZXN0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzdXBwb3J0c0FWWCgpKQ0KICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudm11bHNkX3JyKG9wMSwgb3AyLCBkZXN0KTsNCiAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgICBpZiAob3AxID09IGRlc3QpDQogICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubXVsc2RfcnIob3AyLCBkZXN0KTsNCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAg
ICAgICAgIG1vdmVEb3VibGUob3AyLCBkZXN0KTsNCiAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5tdWxzZF9ycihvcDEsIGRlc3QpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0K
DQogICAgdm9pZCBtdWxEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAg
IHsNCiAgICAgICAgbXVsRG91YmxlKHNyYywgZGVzdCwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCBtdWxEb3VibGUoQWRkcmVzcyBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHN1cHBvcnRzQVZYKCkpDQogICAgICAgICAgICBtX2Fz
c2VtYmxlci52bXVsc2RfbXIob3AxLm9mZnNldCwgb3AxLmJhc2UsIG9wMiwgZGVzdCk7DQogICAg
ICAgIGVsc2Ugew0KICAgICAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7DQogICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubXVsc2RfbXIob3AxLm9mZnNldCwgb3AxLmJhc2UsIGRlc3QpOw0KICAg
ICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGxvYWREb3Vi
bGUob3AxLCBkZXN0KTsNCiAgICAgICAgICAgIG11bERvdWJsZShvcDIsIGRlc3QpOw0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgQWRkcmVz
cyBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG11bERvdWJs
ZShvcDIsIG9wMSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtdWxEb3VibGUoQmFzZUluZGV4
IG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAg
ICBpZiAoc3VwcG9ydHNBVlgoKSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZtdWxzZF9tcihv
cDEub2Zmc2V0LCBvcDEuYmFzZSwgb3AxLmluZGV4LCBvcDEuc2NhbGUsIG9wMiwgZGVzdCk7DQog
ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7DQogICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubXVsc2RfbXIob3AxLm9mZnNldCwgb3AxLmJhc2UsIG9wMS5pbmRl
eCwgb3AxLnNjYWxlLCBkZXN0KTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAg
ICB9DQogICAgICAgICAgICBsb2FkRG91YmxlKG9wMSwgZGVzdCk7DQogICAgICAgICAgICBtdWxE
b3VibGUob3AyLCBkZXN0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgbXVsRmxvYXQo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtdWxG
bG9hdChzcmMsIGRlc3QsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbXVsRmxvYXQoQWRkcmVz
cyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbXVsRmxvYXQoc3JjLCBk
ZXN0LCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG11bEZsb2F0KEZQUmVnaXN0ZXJJRCBvcDEs
IEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYg
KHN1cHBvcnRzQVZYKCkpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci52bXVsc3NfcnIob3AxLCBv
cDIsIGRlc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGlmIChvcDEgPT0gZGVzdCkN
CiAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdWxzc19ycihvcDIsIGRlc3QpOw0KICAgICAg
ICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgbW92ZURvdWJsZShvcDIsIGRlc3QpOw0KICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHNzX3JyKG9wMSwgZGVzdCk7DQogICAgICAgICAg
ICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIG11bEZsb2F0KEFkZHJlc3Mgb3AxLCBG
UFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChz
dXBwb3J0c0FWWCgpKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudm11bHNzX21yKG9wMS5vZmZz
ZXQsIG9wMS5iYXNlLCBvcDIsIGRlc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGlm
IChvcDIgPT0gZGVzdCkgew0KICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHNzX21yKG9w
MS5vZmZzZXQsIG9wMS5iYXNlLCBkZXN0KTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICBsb2FkRmxvYXQob3AxLCBkZXN0KTsNCiAgICAgICAgICAg
IG11bEZsb2F0KG9wMiwgZGVzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIG11bEZs
b2F0KEZQUmVnaXN0ZXJJRCBvcDEsIEFkZHJlc3Mgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAg
ICB7DQogICAgICAgIG11bEZsb2F0KG9wMiwgb3AxLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IG11bEZsb2F0KEJhc2VJbmRleCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHN1cHBvcnRzQVZYKCkpDQogICAgICAgICAgICBtX2Fz
c2VtYmxlci52bXVsc3NfbXIob3AxLm9mZnNldCwgb3AxLmJhc2UsIG9wMS5pbmRleCwgb3AxLnNj
YWxlLCBvcDIsIGRlc3QpOw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGlmIChvcDIgPT0g
ZGVzdCkgew0KICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHNzX21yKG9wMS5vZmZzZXQs
IG9wMS5iYXNlLCBvcDEuaW5kZXgsIG9wMS5zY2FsZSwgZGVzdCk7DQogICAgICAgICAgICAgICAg
cmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgbG9hZEZsb2F0KG9wMSwgZGVzdCk7
DQogICAgICAgICAgICBtdWxGbG9hdChvcDIsIGRlc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQog
ICAgdm9pZCBhbmREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkNCiAg
ICB7DQogICAgICAgIA0KICAgICAgICBtX2Fzc2VtYmxlci5hbmRwc19ycihzcmMsIGRzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCBhbmREb3VibGUoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJ
RCBzcmMyLCBGUFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNyYzEgPT0gZHN0
KQ0KICAgICAgICAgICAgYW5kRG91YmxlKHNyYzIsIGRzdCk7DQogICAgICAgIGVsc2Ugew0KICAg
ICAgICAgICAgbW92ZURvdWJsZShzcmMyLCBkc3QpOw0KICAgICAgICAgICAgYW5kRG91YmxlKHNy
YzEsIGRzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIGFuZEZsb2F0KEZQUmVnaXN0
ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5h
bmRwc19ycihzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmRGbG9hdChGUFJlZ2lzdGVy
SUQgc3JjMSwgRlBSZWdpc3RlcklEIHNyYzIsIEZQUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBpZiAoc3JjMSA9PSBkc3QpDQogICAgICAgICAgICBhbmRGbG9hdChzcmMyLCBkc3QpOw0K
ICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIG1vdmVEb3VibGUoc3JjMiwgZHN0KTsNCiAgICAg
ICAgICAgIGFuZEZsb2F0KHNyYzEsIGRzdCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lk
IG9yRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAg
ICAgICBtX2Fzc2VtYmxlci5vcnBzX3JyKHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG9y
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3JjMiwgRlBSZWdpc3RlcklE
IGRzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMxID09IGRzdCkNCiAgICAgICAgICAgIG9yRG91
YmxlKHNyYzIsIGRzdCk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgbW92ZURvdWJsZShz
cmMyLCBkc3QpOw0KICAgICAgICAgICAgb3JEb3VibGUoc3JjMSwgZHN0KTsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIHZvaWQgb3JGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZHN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIub3Jwc19ycihzcmMsIGRzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBvckZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMxLCBGUFJlZ2lzdGVySUQgc3Jj
MiwgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMxID09IGRzdCkNCiAg
ICAgICAgICAgIG9yRmxvYXQoc3JjMiwgZHN0KTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAg
ICBtb3ZlRG91YmxlKHNyYzIsIGRzdCk7DQogICAgICAgICAgICBvckZsb2F0KHNyYzEsIGRzdCk7
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHhvckRvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueG9ycHNfcnIo
c3JjLCBkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMx
LCBGUFJlZ2lzdGVySUQgc3JjMiwgRlBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGlm
IChzcmMxID09IGRzdCkNCiAgICAgICAgICAgIHhvckRvdWJsZShzcmMyLCBkc3QpOw0KICAgICAg
ICBlbHNlIHsNCiAgICAgICAgICAgIG1vdmVEb3VibGUoc3JjMiwgZHN0KTsNCiAgICAgICAgICAg
IHhvckRvdWJsZShzcmMxLCBkc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCB4b3JG
bG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIueG9ycHNfcnIoc3JjLCBkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yRmxv
YXQoRlBSZWdpc3RlcklEIHNyYzEsIEZQUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZHN0
KQ0KICAgIHsNCiAgICAgICAgaWYgKHNyYzEgPT0gZHN0KQ0KICAgICAgICAgICAgeG9yRmxvYXQo
c3JjMiwgZHN0KTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBtb3ZlRG91YmxlKHNyYzIs
IGRzdCk7DQogICAgICAgICAgICB4b3JGbG9hdChzcmMxLCBkc3QpOw0KICAgICAgICB9DQogICAg
fQ0KDQogICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jdnRzaTJzZF9ycihzcmMs
IGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoQWRkcmVzcyBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2ky
c2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgY29u
dmVydEludDMyVG9GbG9hdChSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5jdnRzaTJzc19ycihzcmMsIGRlc3QpOw0KICAgIH0NCg0K
ICAgIHZvaWQgY29udmVydEludDMyVG9GbG9hdChBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jdnRzaTJzc19tcihzcmMub2Zmc2V0LCBz
cmMuYmFzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hEb3VibGUoRG91YmxlQ29u
ZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQpDQogICAg
ew0KICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJpdEludmVydCkNCiAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIobGVmdCwgcmlnaHQpOw0KICAgICAgICBlbHNlDQog
ICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKHJpZ2h0LCBsZWZ0KTsNCiAgICAgICAg
cmV0dXJuIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKGNvbmQsIGxlZnQsIHJpZ2h0KTsN
CiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEZsb2F0KERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJl
Z2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0KQ0KICAgIHsNCiAgICAgICAgaWYgKGNv
bmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci51
Y29taXNzX3JyKGxlZnQsIHJpZ2h0KTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9hc3Nl
bWJsZXIudWNvbWlzc19ycihyaWdodCwgbGVmdCk7DQogICAgICAgIHJldHVybiBqdW1wQWZ0ZXJG
bG9hdGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCk7DQogICAgfQ0KDQogICAgdm9p
ZCBjb21wYXJlRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwg
RlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBmbG9h
dGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCwgZGVzdCwgW3RoaXNdIChGUFJlZ2lz
dGVySUQgYXJnMSwgRlBSZWdpc3RlcklEIGFyZzIpIHsNCiAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnVjb21pc2RfcnIoYXJnMSwgYXJnMik7DQogICAgICAgIH0pOw0KICAgIH0NCg0KICAgIHZvaWQg
Y29tcGFyZUZsb2F0KERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBS
ZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBmbG9hdGlu
Z1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCwgZGVzdCwgW3RoaXNdIChGUFJlZ2lzdGVy
SUQgYXJnMSwgRlBSZWdpc3RlcklEIGFyZzIpIHsNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVj
b21pc3NfcnIoYXJnMSwgYXJnMik7DQogICAgICAgIH0pOw0KICAgIH0NCg0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0
ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsNCiAgICBKdW1wIGJyYW5jaFRy
dW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJy
YW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkNCiAg
ICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzZDJzaV9ycihzcmMsIGRlc3QpOw0KICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA/IE5vdEVxdWFsIDogRXF1YWwsIGRlc3QsIFRy
dXN0ZWRJbW0zMigweDgwMDAwMDAwKSk7DQogICAgfQ0KDQogICAgdm9pZCB0cnVuY2F0ZURvdWJs
ZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIuY3Z0dHNkMnNpX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCB0cnVuY2F0ZUZsb2F0VG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jdnR0c3Myc2lfcnIoc3JjLCBkZXN0KTsNCiAg
ICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICB2b2lkIGJyYW5jaENvbnZlcnREb3Vi
bGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZh
aWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0cnVl
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNkMnNpX3JyKHNyYywgZGVzdCk7DQoN
CiAgICAgICAgDQoNCiAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykgew0KICAgICAgICAgICAgSnVt
cCB2YWx1ZUlzTm9uWmVybyA9IGJyYW5jaFRlc3QzMihOb25aZXJvLCBkZXN0KTsNCiAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdm1za3BkX3JyKHNyYywgc2NyYXRjaFJlZ2lzdGVyKCkpOw0KICAg
ICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgc2NyYXRj
aFJlZ2lzdGVyKCksIFRydXN0ZWRJbW0zMigxKSkpOw0KICAgICAgICAgICAgdmFsdWVJc05vblpl
cm8ubGluayh0aGlzKTsNCiAgICAgICAgfQ0KDQoNCg0KI2xpbmUgMjA2NyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgiDQoNCiAgICAgICAgDQogICAgICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlKGRlc3QsIGZwVGVtcCk7DQogICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIoZnBUZW1w
LCBzcmMpOw0KICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmpwKCkpOw0K
ICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmpuZSgpKTsNCiAgICB9DQoN
CiAgICB2b2lkIG1vdmVaZXJvVG9Eb3VibGUoRlBSZWdpc3RlcklEIHJlZykNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLnhvcnBzX3JyKHJlZywgcmVnKTsNCiAgICB9DQoNCiAgICBKdW1wIGJy
YW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54b3JwZF9ycihzY3JhdGNoLCBzY3JhdGNoKTsN
CiAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQsIHJl
Zywgc2NyYXRjaCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBS
ZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpDQogICAgew0KICAgICAgICBtX2Fz
c2VtYmxlci54b3JwZF9ycihzY3JhdGNoLCBzY3JhdGNoKTsNCiAgICAgICAgcmV0dXJuIGJyYW5j
aERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCByZWcsIHNjcmF0Y2gpOw0KICAgIH0NCg0K
ICAgIHZvaWQgbHNoaWZ0UGFja2VkKFRydXN0ZWRJbW0zMiBpbW0sIFhNTVJlZ2lzdGVySUQgcmVn
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIucHNsbHFfaThyKGltbS5tX3ZhbHVlLCByZWcp
Ow0KICAgIH0NCg0KICAgIHZvaWQgcnNoaWZ0UGFja2VkKFRydXN0ZWRJbW0zMiBpbW0sIFhNTVJl
Z2lzdGVySUQgcmVnKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIucHNybHFfaThyKGltbS5t
X3ZhbHVlLCByZWcpOw0KICAgIH0NCg0KICAgIHZvaWQgb3JQYWNrZWQoWE1NUmVnaXN0ZXJJRCBz
cmMsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIucG9yX3Jy
KHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmUzMlRvRmxvYXQoUmVnaXN0ZXJJRCBz
cmMsIFhNTVJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92ZF9y
cihzcmMsIGRzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZlRmxvYXRUbzMyKFhNTVJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdmRf
cnIoc3JjLCBkc3QpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLnBvcF9yKGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgcHVzaChSZWdp
c3RlcklEIHNyYykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnB1c2hfcihzcmMpOw0KICAg
IH0NCg0KICAgIHZvaWQgcHVzaChBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fz
c2VtYmxlci5wdXNoX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7DQogICAgfQ0KDQog
ICAgdm9pZCBwdXNoKFRydXN0ZWRJbW0zMiBpbW0pDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5wdXNoX2kzMihpbW0ubV92YWx1ZSk7DQogICAgfQ0KDQogICAgdm9pZCBwb3BQYWlyKFJlZ2lz
dGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpDQogICAgew0KICAgICAgICBwb3AoZGVzdDIp
Ow0KICAgICAgICBwb3AoZGVzdDEpOw0KICAgIH0NCg0KICAgIHZvaWQgcHVzaFBhaXIoUmVnaXN0
ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIpDQogICAgew0KICAgICAgICBwdXNoKHNyYzEpOw0K
ICAgICAgICBwdXNoKHNyYzIpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KDQogICAgdm9p
ZCBtb3ZlKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkNCiAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmxfcnIoZGVzdCwgZGVzdCk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmxfaTMycihpbW0ubV92YWx1ZSwgZGVzdCk7DQogICAgfQ0KDQoNCiAgICB2
b2lkIG1vdmUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQ0KICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92cV9ycihzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92ZShUcnVzdGVk
SW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKCFpbW0ubV92
YWx1ZSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcnIoZGVzdCwgZGVzdCk7DQogICAg
ICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbW0uYXNJbnRwdHIo
KSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW02NCBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmICghaW1tLm1fdmFsdWUpDQogICAgICAgICAg
ICBtX2Fzc2VtYmxlci54b3JxX3JyKGRlc3QsIGRlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIoaW1tLm1fdmFsdWUsIGRlc3QpOw0KICAgIH0NCg0K
ICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlEb3VibGUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQ
UmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJp
dEludmVydCkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2RfcnIobGVmdCwgcmlnaHQp
Ow0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKHJpZ2h0
LCBsZWZ0KTsNCiAgICAgICAgbW92ZUNvbmRpdGlvbmFsbHlBZnRlckZsb2F0aW5nUG9pbnRDb21w
YXJlKGNvbmQsIGxlZnQsIHJpZ2h0LCBzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92
ZUNvbmRpdGlvbmFsbHlEb3VibGUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBs
ZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQg
ZWxzZUNhc2UsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmICh0aGVuQ2FzZSAh
PSBkZXN0ICYmIGVsc2VDYXNlICE9IGRlc3QpIHsNCiAgICAgICAgICAgIG1vdmUoZWxzZUNhc2Us
IGRlc3QpOw0KICAgICAgICAgICAgZWxzZUNhc2UgPSBkZXN0Ow0KICAgICAgICB9DQoNCiAgICAg
ICAgUmVnaXN0ZXJJRCBzcmM7DQogICAgICAgIGlmIChlbHNlQ2FzZSA9PSBkZXN0KQ0KICAgICAg
ICAgICAgc3JjID0gdGhlbkNhc2U7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgY29uZCA9
IGludmVydChjb25kKTsNCiAgICAgICAgICAgIHNyYyA9IGVsc2VDYXNlOw0KICAgICAgICB9DQoN
CiAgICAgICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpDQogICAgICAgICAg
ICBtX2Fzc2VtYmxlci51Y29taXNkX3JyKGxlZnQsIHJpZ2h0KTsNCiAgICAgICAgZWxzZQ0KICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7DQogICAgICAgIG1v
dmVDb25kaXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdo
dCwgc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5RmxvYXQo
RG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmln
aHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAo
Y29uZCAmIERvdWJsZUNvbmRpdGlvbkJpdEludmVydCkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnVjb21pc3NfcnIobGVmdCwgcmlnaHQpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fz
c2VtYmxlci51Y29taXNzX3JyKHJpZ2h0LCBsZWZ0KTsNCiAgICAgICAgbW92ZUNvbmRpdGlvbmFs
bHlBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKGNvbmQsIGxlZnQsIHJpZ2h0LCBzcmMsIGRlc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlGbG9hdChEb3VibGVDb25kaXRp
b24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJ
RCB0aGVuQ2FzZSwgUmVnaXN0ZXJJRCBlbHNlQ2FzZSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgaWYgKHRoZW5DYXNlICE9IGRlc3QgJiYgZWxzZUNhc2UgIT0gZGVzdCkgew0KICAg
ICAgICAgICAgbW92ZShlbHNlQ2FzZSwgZGVzdCk7DQogICAgICAgICAgICBlbHNlQ2FzZSA9IGRl
c3Q7DQogICAgICAgIH0NCg0KICAgICAgICBSZWdpc3RlcklEIHNyYzsNCiAgICAgICAgaWYgKGVs
c2VDYXNlID09IGRlc3QpDQogICAgICAgICAgICBzcmMgPSB0aGVuQ2FzZTsNCiAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgICBjb25kID0gaW52ZXJ0KGNvbmQpOw0KICAgICAgICAgICAgc3JjID0g
ZWxzZUNhc2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlv
bkJpdEludmVydCkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc3NfcnIobGVmdCwgcmln
aHQpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNzX3JyKHJp
Z2h0LCBsZWZ0KTsNCiAgICAgICAgbW92ZUNvbmRpdGlvbmFsbHlBZnRlckZsb2F0aW5nUG9pbnRD
b21wYXJlKGNvbmQsIGxlZnQsIHJpZ2h0LCBzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIpDQogICAgew0KICAgICAg
ICBpZiAocmVnMSAhPSByZWcyKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3FfcnIocmVn
MSwgcmVnMik7DQogICAgfQ0KDQogICAgdm9pZCBzd2FwKEZQUmVnaXN0ZXJJRCByZWcxLCBGUFJl
Z2lzdGVySUQgcmVnMikNCiAgICB7DQogICAgICAgIGlmIChyZWcxID09IHJlZzIpDQogICAgICAg
ICAgICByZXR1cm47DQoNCiAgICAgICAgDQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICBtb3ZlRG91YmxlKHJlZzEsIEZQUmVnaXN0ZXJJRDo6eG1tNyk7DQog
ICAgICAgIG1vdmVEb3VibGUocmVnMiwgcmVnMSk7DQogICAgICAgIG1vdmVEb3VibGUoRlBSZWdp
c3RlcklEOjp4bW03LCByZWcyKTsNCiAgICB9DQoNCiAgICB2b2lkIHNpZ25FeHRlbmQzMlRvUHRy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmICgh
aW1tLm1fdmFsdWUpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JxX3JyKGRlc3QsIGRlc3Qp
Ow0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfaTMycihpbW0ubV92
YWx1ZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0cihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92
c3hkX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB6ZXJvRXh0ZW5kMzJUb1dvcmQo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLm1vdmxfcnIoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHplcm9FeHRlbmQzMlRv
V29yZChUcnVzdGVkSW1tMzIgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZsX2kzMnIoc3JjLm1fdmFsdWUsIGRlc3QpOw0KICAgIH0NCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMzgzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxl
clxcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCINCg0KICAgIHZvaWQgc3dhcDMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54Y2hn
bF9ycihzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgc3dhcDMyKFJlZ2lzdGVySUQgc3Jj
LCBBZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShzcmMs
IGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92ZUNvbmRpdGlv
bmFsbHkzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0
ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGxfcnIocmlnaHQsIGxlZnQpOw0KICAgICAgICBjbW92KHg4NkNv
bmRpdGlvbihjb25kKSwgc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmVDb25kaXRp
b25hbGx5MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQgZWxzZUNhc2UsIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfcnIocmlnaHQs
IGxlZnQpOw0KDQogICAgICAgIGlmICh0aGVuQ2FzZSAhPSBkZXN0ICYmIGVsc2VDYXNlICE9IGRl
c3QpIHsNCiAgICAgICAgICAgIG1vdmUoZWxzZUNhc2UsIGRlc3QpOw0KICAgICAgICAgICAgZWxz
ZUNhc2UgPSBkZXN0Ow0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGVsc2VDYXNlID09IGRlc3Qp
DQogICAgICAgICAgICBjbW92KHg4NkNvbmRpdGlvbihjb25kKSwgdGhlbkNhc2UsIGRlc3QpOw0K
ICAgICAgICBlbHNlDQogICAgICAgICAgICBjbW92KHg4NkNvbmRpdGlvbihpbnZlcnQoY29uZCkp
LCBlbHNlQ2FzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseTMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQsIFJlZ2lzdGVySUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVy
SUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmICghcmlnaHQubV92YWx1ZSkgew0KICAgICAgICAg
ICAgaWYgKGF1dG8gcmVzdWx0Q29uZGl0aW9uID0gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVz
dChjb25kKSkgew0KICAgICAgICAgICAgICAgIG1vdmVDb25kaXRpb25hbGx5VGVzdDMyKCpyZXN1
bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIHRoZW5DYXNlLCBlbHNlQ2FzZSwgZGVzdCk7DQogICAg
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAg
bV9hc3NlbWJsZXIuY21wbF9pcihyaWdodC5tX3ZhbHVlLCBsZWZ0KTsNCg0KICAgICAgICBpZiAo
dGhlbkNhc2UgIT0gZGVzdCAmJiBlbHNlQ2FzZSAhPSBkZXN0KSB7DQogICAgICAgICAgICBtb3Zl
KGVsc2VDYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIGVsc2VDYXNlID0gZGVzdDsNCiAgICAgICAg
fQ0KDQogICAgICAgIGlmIChlbHNlQ2FzZSA9PSBkZXN0KQ0KICAgICAgICAgICAgY21vdih4ODZD
b25kaXRpb24oY29uZCksIHRoZW5DYXNlLCBkZXN0KTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgY21vdih4ODZDb25kaXRpb24oaW52ZXJ0KGNvbmQpKSwgZWxzZUNhc2UsIGRlc3QpOw0KICAg
IH0NCg0KICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgdGVzdFJlZywgUmVnaXN0ZXJJRCBtYXNrLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIudGVzdGxfcnIodGVz
dFJlZywgbWFzayk7DQogICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGNvbmQpLCBzcmMsIGRlc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCB0
aGVuQ2FzZSwgUmVnaXN0ZXJJRCBlbHNlQ2FzZSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgbV9hc3NlbWJs
ZXIudGVzdGxfcnIocmlnaHQsIGxlZnQpOw0KDQogICAgICAgIGlmICh0aGVuQ2FzZSAhPSBkZXN0
ICYmIGVsc2VDYXNlICE9IGRlc3QpIHsNCiAgICAgICAgICAgIG1vdmUoZWxzZUNhc2UsIGRlc3Qp
Ow0KICAgICAgICAgICAgZWxzZUNhc2UgPSBkZXN0Ow0KICAgICAgICB9DQoNCiAgICAgICAgaWYg
KGVsc2VDYXNlID09IGRlc3QpDQogICAgICAgICAgICBjbW92KHg4NkNvbmRpdGlvbihjb25kKSwg
dGhlbkNhc2UsIGRlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBjbW92KHg4NkNvbmRp
dGlvbihpbnZlcnQoY29uZCkpLCBlbHNlQ2FzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBt
b3ZlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCB0
ZXN0UmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIHRlc3QzMih0ZXN0UmVnLCBtYXNrKTsNCiAgICAgICAgY21vdih4
ODZDb25kaXRpb24oY29uZCksIHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZlQ29u
ZGl0aW9uYWxseVRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCB0ZXN0UmVn
LCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCB0aGVuQ2FzZSwgUmVnaXN0ZXJJRCBlbHNl
Q2FzZSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICAoKHZvaWQpMCk7DQoNCiAgICAgICAgdGVzdDMyKHRlc3RSZWcsIG1hc2spOw0KDQogICAgICAg
IGlmICh0aGVuQ2FzZSAhPSBkZXN0ICYmIGVsc2VDYXNlICE9IGRlc3QpIHsNCiAgICAgICAgICAg
IG1vdmUoZWxzZUNhc2UsIGRlc3QpOw0KICAgICAgICAgICAgZWxzZUNhc2UgPSBkZXN0Ow0KICAg
ICAgICB9DQoNCiAgICAgICAgaWYgKGVsc2VDYXNlID09IGRlc3QpDQogICAgICAgICAgICBjbW92
KHg4NkNvbmRpdGlvbihjb25kKSwgdGhlbkNhc2UsIGRlc3QpOw0KICAgICAgICBlbHNlDQogICAg
ICAgICAgICBjbW92KHg4NkNvbmRpdGlvbihpbnZlcnQoY29uZCkpLCBlbHNlQ2FzZSwgZGVzdCk7
DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgTGVmdFR5cGUsIHR5cGVuYW1lIFJpZ2h0
VHlwZT4NCiAgICB2b2lkIG1vdmVEb3VibGVDb25kaXRpb25hbGx5MzIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBMZWZ0VHlwZSBsZWZ0LCBSaWdodFR5cGUgcmlnaHQsIEZQUmVnaXN0ZXJJRCB0
aGVuQ2FzZSwgRlBSZWdpc3RlcklEIGVsc2VDYXNlLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7
DQogICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTxMZWZ0VHlwZSwgRlBSZWdpc3Rl
cklEPjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2FtZTxSaWdodFR5cGUsIEZQUmVnaXN0ZXJJRD46OnZh
bHVlLCAiT25lIG9mIHRoZSB0ZXN0ZWQgYXJndW1lbnQgY291bGQgYmUgYWxpYXNlZCBvbiBkZXN0
LiBVc2UgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUoKS4iKTsNCg0KICAgICAgICBpZiAo
dGhlbkNhc2UgIT0gZGVzdCAmJiBlbHNlQ2FzZSAhPSBkZXN0KSB7DQogICAgICAgICAgICBtb3Zl
RG91YmxlKGVsc2VDYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIGVsc2VDYXNlID0gZGVzdDsNCiAg
ICAgICAgfQ0KDQogICAgICAgIGlmIChlbHNlQ2FzZSA9PSBkZXN0KSB7DQogICAgICAgICAgICBK
dW1wIGZhbHNlQ2FzZSA9IGJyYW5jaDMyKGludmVydChjb25kKSwgbGVmdCwgcmlnaHQpOw0KICAg
ICAgICAgICAgbW92ZURvdWJsZSh0aGVuQ2FzZSwgZGVzdCk7DQogICAgICAgICAgICBmYWxzZUNh
c2UubGluayh0aGlzKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIEp1bXAgdHJ1ZUNh
c2UgPSBicmFuY2gzMihjb25kLCBsZWZ0LCByaWdodCk7DQogICAgICAgICAgICBtb3ZlRG91Ymxl
KGVsc2VDYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIHRydWVDYXNlLmxpbmsodGhpcyk7DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXN0VHlwZSwgdHlwZW5hbWUg
TWFza1R5cGU+DQogICAgdm9pZCBtb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3QzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgVGVzdFR5cGUgdGVzdCwgTWFza1R5cGUgbWFzaywgRlBSZWdpc3RlcklE
IHRoZW5DYXNlLCBGUFJlZ2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAg
IHsNCiAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19zYW1lPFRlc3RUeXBlLCBGUFJlZ2lz
dGVySUQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19zYW1lPE1hc2tUeXBlLCBGUFJlZ2lzdGVySUQ+Ojp2
YWx1ZSwgIk9uZSBvZiB0aGUgdGVzdGVkIGFyZ3VtZW50IGNvdWxkIGJlIGFsaWFzZWQgb24gZGVz
dC4gVXNlIG1vdmVEb3VibGVDb25kaXRpb25hbGx5RG91YmxlKCkuIik7DQoNCiAgICAgICAgaWYg
KGVsc2VDYXNlID09IGRlc3QgJiYgaXNJbnZlcnRpYmxlKGNvbmQpKSB7DQogICAgICAgICAgICBK
dW1wIGZhbHNlQ2FzZSA9IGJyYW5jaFRlc3QzMihpbnZlcnQoY29uZCksIHRlc3QsIG1hc2spOw0K
ICAgICAgICAgICAgbW92ZURvdWJsZSh0aGVuQ2FzZSwgZGVzdCk7DQogICAgICAgICAgICBmYWxz
ZUNhc2UubGluayh0aGlzKTsNCiAgICAgICAgfSBlbHNlIGlmICh0aGVuQ2FzZSA9PSBkZXN0KSB7
DQogICAgICAgICAgICBKdW1wIHRydWVDYXNlID0gYnJhbmNoVGVzdDMyKGNvbmQsIHRlc3QsIG1h
c2spOw0KICAgICAgICAgICAgbW92ZURvdWJsZShlbHNlQ2FzZSwgZGVzdCk7DQogICAgICAgICAg
ICB0cnVlQ2FzZS5saW5rKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSnVtcCB0cnVlQ2Fz
ZSA9IGJyYW5jaFRlc3QzMihjb25kLCB0ZXN0LCBtYXNrKTsNCiAgICAgICAgbW92ZURvdWJsZShl
bHNlQ2FzZSwgZGVzdCk7DQogICAgICAgIEp1bXAgZmFsc2VDYXNlID0ganVtcCgpOw0KICAgICAg
ICB0cnVlQ2FzZS5saW5rKHRoaXMpOw0KICAgICAgICBtb3ZlRG91YmxlKHRoZW5DYXNlLCBkZXN0
KTsNCiAgICAgICAgZmFsc2VDYXNlLmxpbmsodGhpcyk7DQogICAgfQ0KDQogICAgdm9pZCBtb3Zl
RG91YmxlQ29uZGl0aW9uYWxseURvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3Rl
cklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBGUFJl
Z2lzdGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYg
KGVsc2VDYXNlID09IGRlc3QpIHsNCiAgICAgICAgICAgIEp1bXAgZmFsc2VDYXNlID0gYnJhbmNo
RG91YmxlKGludmVydChjb25kKSwgbGVmdCwgcmlnaHQpOw0KICAgICAgICAgICAgbW92ZURvdWJs
ZSh0aGVuQ2FzZSwgZGVzdCk7DQogICAgICAgICAgICBmYWxzZUNhc2UubGluayh0aGlzKTsNCiAg
ICAgICAgfSBlbHNlIGlmICh0aGVuQ2FzZSA9PSBkZXN0KSB7DQogICAgICAgICAgICBKdW1wIHRy
dWVDYXNlID0gYnJhbmNoRG91YmxlKGNvbmQsIGxlZnQsIHJpZ2h0KTsNCiAgICAgICAgICAgIG1v
dmVEb3VibGUoZWxzZUNhc2UsIGRlc3QpOw0KICAgICAgICAgICAgdHJ1ZUNhc2UubGluayh0aGlz
KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIEp1bXAgdHJ1ZUNhc2UgPSBicmFuY2hE
b3VibGUoY29uZCwgbGVmdCwgcmlnaHQpOw0KICAgICAgICAgICAgbW92ZURvdWJsZShlbHNlQ2Fz
ZSwgZGVzdCk7DQogICAgICAgICAgICBKdW1wIGZhbHNlQ2FzZSA9IGp1bXAoKTsNCiAgICAgICAg
ICAgIHRydWVDYXNlLmxpbmsodGhpcyk7DQogICAgICAgICAgICBtb3ZlRG91YmxlKHRoZW5DYXNl
LCBkZXN0KTsNCiAgICAgICAgICAgIGZhbHNlQ2FzZS5saW5rKHRoaXMpOw0KICAgICAgICB9DQog
ICAgfQ0KDQogICAgdm9pZCBtb3ZlRG91YmxlQ29uZGl0aW9uYWxseUZsb2F0KERvdWJsZUNvbmRp
dGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBGUFJlZ2lz
dGVySUQgdGhlbkNhc2UsIEZQUmVnaXN0ZXJJRCBlbHNlQ2FzZSwgRlBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBpZiAoZWxzZUNhc2UgPT0gZGVzdCkgew0KICAgICAgICAgICAgSnVt
cCBmYWxzZUNhc2UgPSBicmFuY2hGbG9hdChpbnZlcnQoY29uZCksIGxlZnQsIHJpZ2h0KTsNCiAg
ICAgICAgICAgIG1vdmVEb3VibGUodGhlbkNhc2UsIGRlc3QpOw0KICAgICAgICAgICAgZmFsc2VD
YXNlLmxpbmsodGhpcyk7DQogICAgICAgIH0gZWxzZSBpZiAodGhlbkNhc2UgPT0gZGVzdCkgew0K
ICAgICAgICAgICAgSnVtcCB0cnVlQ2FzZSA9IGJyYW5jaEZsb2F0KGNvbmQsIGxlZnQsIHJpZ2h0
KTsNCiAgICAgICAgICAgIG1vdmVEb3VibGUoZWxzZUNhc2UsIGRlc3QpOw0KICAgICAgICAgICAg
dHJ1ZUNhc2UubGluayh0aGlzKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIEp1bXAg
dHJ1ZUNhc2UgPSBicmFuY2hGbG9hdChjb25kLCBsZWZ0LCByaWdodCk7DQogICAgICAgICAgICBt
b3ZlRG91YmxlKGVsc2VDYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIEp1bXAgZmFsc2VDYXNlID0g
anVtcCgpOw0KICAgICAgICAgICAgdHJ1ZUNhc2UubGluayh0aGlzKTsNCiAgICAgICAgICAgIG1v
dmVEb3VibGUodGhlbkNhc2UsIGRlc3QpOw0KICAgICAgICAgICAgZmFsc2VDYXNlLmxpbmsodGhp
cyk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCg0KcHVibGljOg0KICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQ0KICAgIHsNCiAgICAg
ICAgVHJ1c3RlZEltbTMyIHJpZ2h0OChzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJpZ2h0Lm1fdmFsdWUp
KTsNCiAgICAgICAgbV9hc3NlbWJsZXIuY21wYl9pbShyaWdodDgubV92YWx1ZSwgbGVmdC5vZmZz
ZXQsIGxlZnQuYmFzZSk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9ycihyaWdodCwgbGVmdCk7DQogICAgICAgIHJldHVy
biBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBUcnVzdGVkSW1tMzIgcmlnaHQpDQogICAgew0KICAgICAgICBpZiAoIXJpZ2h0Lm1fdmFsdWUp
IHsNCiAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNvbW11dGVDb21wYXJl
VG9aZXJvSW50b1Rlc3QoY29uZCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Qz
MigqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIG1f
YXNzZW1ibGVyLmNtcGxfaXIocmlnaHQubV92YWx1ZSwgbGVmdCk7DQogICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQogICAgDQog
ICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVm
dCwgQWRkcmVzcyByaWdodCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfbXIocmln
aHQub2Zmc2V0LCByaWdodC5iYXNlLCBsZWZ0KTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCiAgICANCiAgICBKdW1wIGJy
YW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9ybShyaWdodCwgbGVmdC5v
ZmZzZXQsIGxlZnQuYmFzZSk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4
ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2ltKHJpZ2h0Lm1fdmFsdWUsIGxlZnQub2Zmc2V0
LCBsZWZ0LmJhc2UpOw0KICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29u
ZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpDQogICAgew0K
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2ltKHJpZ2h0Lm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBs
ZWZ0LmJhc2UsIGxlZnQuaW5kZXgsIGxlZnQuc2NhbGUpOw0KICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAgSnVtcCBi
cmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBC
YXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGxlZnQsIHJpZ2h0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFRl
c3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFz
aykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsX3JyKHJlZywgbWFzayk7DQogICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAg
ICB9DQoNCiAgICBKdW1wIGJyYW5jaFRlc3RCaXQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBiaXQpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5idF9pcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0Lm1fdmFsdWUpICUgMzIsIHJlZyk7DQog
ICAgICAgIGlmIChjb25kID09IE5vblplcm8pDQogICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qYigpKTsNCiAgICAgICAgaWYgKGNvbmQgPT0gWmVybykNCiAgICAgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmphZSgpKTsNCiAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdy
YWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJ
bmZvKDI2NTQsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCIsICBfX0ZVTkNUSU9OX18g
ICwgMzMgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoVGVzdEJp
dDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIHRlc3RWYWx1ZSwgVHJ1c3RlZEltbTMy
IGJpdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmJ0X2ltKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihiaXQubV92YWx1ZSkgJSAzMiwgdGVzdFZhbHVlLm9mZnNldCwgdGVzdFZhbHVlLmJhc2Up
Ow0KICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKQ0KICAgICAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuamIoKSk7DQogICAgICAgIGlmIChjb25kID09IFplcm8pDQogICAgICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qYWUoKSk7DQogICAgICAgIGRvIHsgV1RGOjppc0lu
dGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hX
aXRoSW5mbygyNjY0LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiLCAgX19GVU5DVElP
Tl9fICAsIDM0ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFRl
c3RCaXQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQg
Yml0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYnRfaXIoYml0LCByZWcpOw0KICAgICAg
ICBpZiAoY29uZCA9PSBOb25aZXJvKQ0KICAgICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuamIoKSk7DQogICAgICAgIGlmIChjb25kID09IFplcm8pDQogICAgICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qYWUoKSk7DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygy
Njc0LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxh
c3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiLCAgX19GVU5DVElPTl9fICAsIDM1
ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9DQoNCiAgICB2b2lkIHRlc3QzMihSZWdpc3RlcklE
IHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQ0KICAgIHsNCiAgICAg
ICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Rs
X3JyKHJlZywgcmVnKTsNCiAgICAgICAgZWxzZSBpZiAoIShtYXNrLm1fdmFsdWUgJiB+MHhmZikg
JiYgcmVnIDwgWDg2UmVnaXN0ZXJzOjplc3ApIHsgDQogICAgICAgICAgICBpZiAobWFzay5tX3Zh
bHVlID09IDB4ZmYpDQogICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfcnIocmVnLCBy
ZWcpOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Ri
X2k4cihtYXNrLm1fdmFsdWUsIHJlZyk7DQogICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgbV9h
c3NlbWJsZXIudGVzdGxfaTMycihtYXNrLm1fdmFsdWUsIHJlZyk7DQogICAgfQ0KDQogICAgSnVt
cCBicmFuY2goUmVzdWx0Q29uZGl0aW9uIGNvbmQpDQogICAgew0KICAgICAgICByZXR1cm4gSnVt
cChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAgSnVt
cCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpDQogICAgew0KICAgICAgICB0ZXN0MzIo
cmVnLCBtYXNrKTsNCiAgICAgICAgcmV0dXJuIGJyYW5jaChjb25kKTsNCiAgICB9DQoNCiAgICBK
dW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBU
cnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpDQogICAgew0KICAgICAgICBnZW5l
cmF0ZVRlc3QzMihhZGRyZXNzLCBtYXNrKTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoVGVz
dDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMy
IG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQ0KICAgIHsNCiAgICAgICAgaWYgKG1hc2subV92YWx1
ZSA9PSAtMSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW0oMCwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgICAg
IGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsX2kzMm0obWFzay5tX3ZhbHVlLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25k
KSkpOw0KICAgIH0NCiAgICANCiAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkNCiAgICB7DQogICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOChzdGF0aWNfY2FzdDxpbnQ4X3Q+
KG1hc2subV92YWx1ZSkpOw0KICAgICAgICBpZiAobWFzazgubV92YWx1ZSA9PSAtMSkNCiAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0oMCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2ltKG1hc2s4
Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KICAgIA0K
ICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRy
ZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpDQogICAgew0KICAgICAg
ICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUpKTsN
CiAgICAgICAgaWYgKG1hc2s4Lm1fdmFsdWUgPT0gLTEpDQogICAgICAgICAgICBtX2Fzc2VtYmxl
ci5jbXBiX2ltKDAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci50
ZXN0Yl9pbShtYXNrOC5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoOChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpDQogICAgew0KICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4KHN0YXRpY19jYXN0PGludDhf
dD4ocmlnaHQubV92YWx1ZSkpOw0KICAgICAgICBtX2Fzc2VtYmxlci5jbXBiX2ltKHJpZ2h0OC5t
X3ZhbHVlLCBsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlLCBsZWZ0LmluZGV4LCBsZWZ0LnNjYWxlKTsN
CiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkp
Ow0KICAgIH0NCg0KICAgIEp1bXAganVtcCgpDQogICAgew0KICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qbXAoKSk7DQogICAgfQ0KDQogICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQg
dGFyZ2V0LCBQdHJUYWcpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5qbXBfcih0YXJnZXQp
Ow0KICAgIH0NCg0KICAgIA0KICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRh
ZykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmptcF9tKGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOw0KICAgIH0NCg0KICAgIA0KICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRk
cmVzcywgUHRyVGFnKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuam1wX20oYWRkcmVzcy5v
ZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAg
fQ0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJl
Z2lzdGVySUQganVtcFRhZykgeyAodm9pZClqdW1wVGFnLCBmYXJKdW1wKHRhcmdldCwgTm9QdHJU
YWcpOyB9DQogICAgX19mb3JjZWlubGluZSB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGp1bXBUYWcpIHsgKHZvaWQpanVtcFRhZywgZmFySnVtcChhZGRyZXNzLCBOb1B0
clRhZyk7IH0NCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7ICh2b2lkKWp1bXBUYWcsIGZhckp1bXAoYWRkcmVzcywg
Tm9QdHJUYWcpOyB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgYWRk
MzIoc3JjLCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNv
bmRpdGlvbihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQog
ICAgICAgIGFkZDMyKGltbSwgZGVzdCk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVy
LmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQogICAgDQogICAgSnVtcCBicmFuY2hB
ZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIHNyYywgQWRkcmVzcyBkZXN0
KQ0KICAgIHsNCiAgICAgICAgYWRkMzIoc3JjLCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1bXAg
YnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNz
IGRlc3QpDQogICAgew0KICAgICAgICBhZGQzMihzcmMsIGRlc3QpOw0KICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGFkZDMyKHNyYywgZGVzdCk7DQogICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoN
CiAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYg
KHNyYzEgPT0gZGVzdCkNCiAgICAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBzcmMy
LCBkZXN0KTsNCiAgICAgICAgbW92ZTMySWZOZWVkZWQoc3JjMiwgZGVzdCk7DQogICAgICAgIHJl
dHVybiBicmFuY2hBZGQzMihjb25kLCBzcmMxLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJy
YW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChvcDIgPT0gZGVzdCkNCiAg
ICAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBvcDEsIGRlc3QpOw0KICAgICAgICBp
ZiAob3AxLmJhc2UgPT0gZGVzdCkgew0KICAgICAgICAgICAgbG9hZDMyKG9wMSwgZGVzdCk7DQog
ICAgICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgb3AyLCBkZXN0KTsNCiAgICAgICAg
fQ0KICAgICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQob3AyLCBkZXN0KTsNCiAgICAgICAgcmV0dXJu
IGJyYW5jaEFkZDMyKGNvbmQsIG9wMSwgZGVzdCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hB
ZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBBZGRyZXNzIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25k
LCBzcmMyLCBzcmMxLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZTMySWZOZWVkZWQoc3JjLCBkZXN0KTsNCiAg
ICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGltbSwgZGVzdCk7DQogICAgfQ0KDQogICAg
SnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG11bDMyKHNyYywgZGVzdCk7DQogICAgICAg
IGlmIChjb25kICE9IE92ZXJmbG93KQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGxfcnIo
ZGVzdCwgZGVzdCk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25k
aXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAg
bXVsMzIoc3JjLCBkZXN0KTsNCiAgICAgICAgaWYgKGNvbmQgIT0gT3ZlcmZsb3cpDQogICAgICAg
ICAgICBtX2Fzc2VtYmxlci50ZXN0bF9ycihkZXN0LCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIEp1
bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCiAgICANCiAg
ICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywg
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbXVsMzIo
aW1tLCBzcmMsIGRlc3QpOw0KICAgICAgICBpZiAoY29uZCAhPSBPdmVyZmxvdykNCiAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnRlc3RsX3JyKGRlc3QsIGRlc3QpOw0KICAgICAgICByZXR1cm4gSnVt
cChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KICAgIA0KICAg
IEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3Jj
MSA9PSBkZXN0KQ0KICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYzIsIGRl
c3QpOw0KICAgICAgICBtb3ZlMzJJZk5lZWRlZChzcmMyLCBkZXN0KTsNCiAgICAgICAgcmV0dXJu
IGJyYW5jaE11bDMyKGNvbmQsIHNyYzEsIGRlc3QpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNo
U3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBzdWIzMihzcmMsIGRlc3QpOw0KICAgICAgICByZXR1cm4gSnVt
cChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KICAgIA0KICAg
IEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHN1YjMyKGltbSwgZGVzdCk7DQogICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAg
ICB9DQoNCiAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVk
SW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBzdWIzMihpbW0sIGRlc3Qp
Ow0KICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQp
KSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIHN1YjMyKHNyYywg
ZGVzdCk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24o
Y29uZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgc3ViMzIo
c3JjLCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRp
dGlvbihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICANCiAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAgIG1vdmUz
MklmTmVlZGVkKHNyYzEsIGRlc3QpOw0KICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwg
c3JjMiwgZGVzdCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBUcnVzdGVkSW1tMzIgc3JjMiwgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZTMySWZOZWVkZWQoc3JjMSwgZGVzdCk7DQogICAgICAg
IHJldHVybiBicmFuY2hTdWIzMihjb25kLCBzcmMyLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1w
IGJyYW5jaE5lZzMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpDQog
ICAgew0KICAgICAgICBuZWczMihzcmNEZXN0KTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNo
T3IzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIG9yMzIoc3JjLCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCg0KDQogICAgDQoN
CiAgICB2b2lkIGJyZWFrcG9pbnQoKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuaW50Mygp
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBib29sIGlzQnJlYWtwb2ludCh2b2lkKiBhZGRyZXNzKSB7
IHJldHVybiBYODZBc3NlbWJsZXI6OmlzSW50MyhhZGRyZXNzKTsgfQ0KDQogICAgQ2FsbCBuZWFy
VGFpbENhbGwoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuam1wKCks
IENhbGw6OkxpbmthYmxlTmVhclRhaWwpOw0KICAgIH0NCg0KICAgIENhbGwgbmVhckNhbGwoKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuY2FsbCgpLCBDYWxsOjpMaW5r
YWJsZU5lYXIpOw0KICAgIH0NCg0KICAgIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldCwgUHRy
VGFnKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuY2FsbCh0YXJnZXQp
LCBDYWxsOjpOb25lKTsNCiAgICB9DQoNCiAgICB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQ
dHJUYWcpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jYWxsX20oYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSk7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBDYWxsIGNhbGwoUmVn
aXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQgY2FsbFRhZykgeyByZXR1cm4gKHZvaWQpY2FsbFRh
ZywgY2FsbCh0YXJnZXQsIE5vUHRyVGFnKTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBjYWxs
KEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBjYWxsVGFnKSB7ICh2b2lkKWNhbGxUYWcsIGNh
bGwoYWRkcmVzcywgTm9QdHJUYWcpOyB9DQoNCiAgICB2b2lkIHJldCgpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5yZXQoKTsNCiAgICB9DQoNCiAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDgoc3RhdGljX2Nh
c3Q8aW50OF90PihyaWdodC5tX3ZhbHVlKSk7DQogICAgICAgIG1fYXNzZW1ibGVyLmNtcGJfaW0o
cmlnaHQ4Lm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOw0KICAgICAgICBzZXQzMih4
ODZDb25kaXRpb24oY29uZCksIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNvbXBhcmUz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCBy
aWdodCwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9y
cihyaWdodCwgbGVmdCk7DQogICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7
DQogICAgfQ0KDQogICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAg
IHsNCiAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7DQogICAgICAgICAgICBpZiAoYXV0byBy
ZXN1bHRDb25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7DQog
ICAgICAgICAgICAgICAgdGVzdDMyKCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIGRlc3Qp
Ow0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQog
ICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaXIocmlnaHQubV92YWx1ZSwgbGVmdCk7DQogICAgICAg
IHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7DQogICAgfQ0KDQogICAgDQogICAgDQog
ICAgDQogICAgDQoNCiAgICB2b2lkIHRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAg
ICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFsdWUp
KTsNCiAgICAgICAgaWYgKG1hc2s4Lm1fdmFsdWUgPT0gLTEpDQogICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbXBiX2ltKDAsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgICAgICBl
bHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0Yl9pbShtYXNrOC5tX3ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNv
bmQpLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgZ2VuZXJhdGVUZXN0MzIoYWRkcmVzcywgbWFzayk7DQogICAgICAgIHNl
dDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB0ZXN0MzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2ssIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnRlc3RsX3JyKHJlZywg
bWFzayk7DQogICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7DQogICAgfQ0K
DQogICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBU
cnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgdGVzdDMy
KHJlZywgbWFzayk7DQogICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCBzZXRDYXJyeShSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAg
ICBzZXQzMihYODZBc3NlbWJsZXI6OkNvbmRpdGlvbkMsIGRlc3QpOw0KICAgIH0NCg0KICAgIA0K
ICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQpDQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRp
dGlvbj4oY29uZCBeIDEpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBEb3VibGVDb25kaXRpb24gaW52
ZXJ0KERvdWJsZUNvbmRpdGlvbiBjb25kKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChjb25kKSB7
DQogICAgICAgIGNhc2UgRG91YmxlRXF1YWxBbmRPcmRlcmVkOg0KICAgICAgICAgICAgcmV0dXJu
IERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQ7DQogICAgICAgIGNhc2UgRG91YmxlTm90RXF1YWxB
bmRPcmRlcmVkOg0KICAgICAgICAgICAgcmV0dXJuIERvdWJsZUVxdWFsT3JVbm9yZGVyZWQ7DQog
ICAgICAgIGNhc2UgRG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkOg0KICAgICAgICAgICAgcmV0
dXJuIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkOw0KICAgICAgICBjYXNlIERvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQ6DQogICAgICAgICAgICByZXR1cm4gRG91Ymxl
TGVzc1RoYW5PclVub3JkZXJlZDsNCiAgICAgICAgY2FzZSBEb3VibGVMZXNzVGhhbkFuZE9yZGVy
ZWQ6DQogICAgICAgICAgICByZXR1cm4gRG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVy
ZWQ7DQogICAgICAgIGNhc2UgRG91YmxlTGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZDoNCiAgICAg
ICAgICAgIHJldHVybiBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkOw0KICAgICAgICBjYXNl
IERvdWJsZUVxdWFsT3JVbm9yZGVyZWQ6DQogICAgICAgICAgICByZXR1cm4gRG91YmxlTm90RXF1
YWxBbmRPcmRlcmVkOw0KICAgICAgICBjYXNlIERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQ6DQog
ICAgICAgICAgICByZXR1cm4gRG91YmxlRXF1YWxBbmRPcmRlcmVkOw0KICAgICAgICBjYXNlIERv
dWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQ6DQogICAgICAgICAgICByZXR1cm4gRG91YmxlTGVz
c1RoYW5PckVxdWFsQW5kT3JkZXJlZDsNCiAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9y
RXF1YWxPclVub3JkZXJlZDoNCiAgICAgICAgICAgIHJldHVybiBEb3VibGVMZXNzVGhhbkFuZE9y
ZGVyZWQ7DQogICAgICAgIGNhc2UgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZDoNCiAgICAgICAg
ICAgIHJldHVybiBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRlcmVkOw0KICAgICAgICBj
YXNlIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkOg0KICAgICAgICAgICAgcmV0dXJu
IERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZDsNCiAgICAgICAgfQ0KICAgICAgICBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oMzA2NSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIiwgIF9f
RlVOQ1RJT05fXyAgLCAzNiApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHJldHVybiBEb3Vi
bGVFcXVhbEFuZE9yZGVyZWQ7IA0KICAgIH0NCg0KICAgIHN0YXRpYyBib29sIGlzSW52ZXJ0aWJs
ZShSZXN1bHRDb25kaXRpb24gY29uZCkNCiAgICB7DQogICAgICAgIHN3aXRjaCAoY29uZCkgew0K
ICAgICAgICBjYXNlIFplcm86DQogICAgICAgIGNhc2UgTm9uWmVybzoNCiAgICAgICAgY2FzZSBT
aWduZWQ6DQogICAgICAgIGNhc2UgUG9zaXRpdmVPclplcm86DQogICAgICAgICAgICByZXR1cm4g
dHJ1ZTsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIHN0YXRpYyBSZXN1bHRDb25kaXRpb24gaW52ZXJ0KFJlc3VsdENv
bmRpdGlvbiBjb25kKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChjb25kKSB7DQogICAgICAgIGNh
c2UgWmVybzoNCiAgICAgICAgICAgIHJldHVybiBOb25aZXJvOw0KICAgICAgICBjYXNlIE5vblpl
cm86DQogICAgICAgICAgICByZXR1cm4gWmVybzsNCiAgICAgICAgY2FzZSBTaWduZWQ6DQogICAg
ICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87DQogICAgICAgIGNhc2UgUG9zaXRpdmVPclpl
cm86DQogICAgICAgICAgICByZXR1cm4gU2lnbmVkOw0KICAgICAgICBkZWZhdWx0Og0KICAgICAg
ICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VG
b3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDMwOTQsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaCIsICBfX0ZVTkNUSU9OX18gICwgMzcgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAg
ICAgICAgcmV0dXJuIFplcm87IA0KICAgICAgICB9DQogICAgfQ0KDQogICAgc3RhdGljIE9wdGlv
bmFsPFJlc3VsdENvbmRpdGlvbj4gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQpDQogICAgew0KICAgICAgICBzd2l0Y2ggKGNvbmQpIHsNCiAgICAg
ICAgY2FzZSBFcXVhbDoNCiAgICAgICAgICAgIHJldHVybiBaZXJvOw0KICAgICAgICBjYXNlIE5v
dEVxdWFsOg0KICAgICAgICAgICAgcmV0dXJuIE5vblplcm87DQogICAgICAgIGNhc2UgTGVzc1Ro
YW46DQogICAgICAgICAgICByZXR1cm4gU2lnbmVkOw0KICAgICAgICBjYXNlIEdyZWF0ZXJUaGFu
T3JFcXVhbDoNCiAgICAgICAgICAgIHJldHVybiBQb3NpdGl2ZU9yWmVybzsNCiAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgbm9wKCkNCiAgICB7DQogICAgICAgIG1f
YXNzZW1ibGVyLm5vcCgpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHhjaGc4KFJlZ2lzdGVySUQg
cmVnLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54Y2hnYl9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIHhjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
eGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0K
ICAgIH0NCiAgICANCiAgICB2b2lkIHhjaGcxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFk
ZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIHhjaGczMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNz
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCB4Y2hnMzIoUmVnaXN0ZXJJ
RCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueGNo
Z2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsNCiAgICB9DQogICAgDQogICAgDQogICAgdm9pZCBtZW1vcnlGZW5jZSgp
DQogICAgew0KICAgICAgICANCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfaW0oMCwgMCwgWDg2UmVnaXN0ZXJzOjplc3ApOw0KICAgIH0NCiAgICAN
CiAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCByZXN1bHQpDQogICAgew0KICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29u
ZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIu
Y21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsN
CiAgICB9DQoNCiAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJ
bmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkNCiAgICB7DQogICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBhZGRyZXNzLCBbJl0geyBt
X2Fzc2VtYmxlci5jbXB4Y2hnYl9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOw0KICAgIH0NCg0KICAgIHZv
aWQgYXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCByZXN1bHQpDQogICAgew0KICAgICAgICBhdG9taWNTdHJvbmdDQVMoY29uZCwgZXhw
ZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNo
Z3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsNCiAgICB9
DQoNCiAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXgg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpDQogICAgew0KICAgICAgICBhdG9taWNTdHJvbmdD
QVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1bHQsIHJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9hc3Nl
bWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsNCiAgICB9DQoNCiAgICB2b2lkIGF0
b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVk
QW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVk
QW5kUmVzdWx0LCByZXN1bHQsIGFkZHJlc3MsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdsX3Jt
KG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7DQogICAgfQ0KDQog
ICAgdm9pZCBhdG9taWNTdHJvbmdDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJl
c3MsIFJlZ2lzdGVySUQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGNv
bmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIGFkZHJlc3MsIFsmXSB7IG1fYXNzZW1ibGVy
LmNtcHhjaGdsX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNT
dHJvbmdDQVM4KFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFs
dWUsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBl
Y3RlZEFuZFJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3
VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsNCiAgICB9DQoNCiAgICB2
b2lkIGF0b21pY1N0cm9uZ0NBUzgoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBhdG9taWNT
dHJvbmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIGFkZHJlc3MsIFsmXSB7IG1fYXNzZW1ibGVyLmNt
cHhjaGdiX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNTdHJv
bmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVl
LCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBhdG9taWNTdHJvbmdDQVMoZXhwZWN0
ZWRBbmRSZXN1bHQsIGFkZHJlc3MsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGd3X3JtKG5ld1Zh
bHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7DQogICAgfQ0KDQogICAgdm9p
ZCBhdG9taWNTdHJvbmdDQVMxNihSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3Rl
cklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIGF0b21pY1N0
cm9uZ0NBUyhleHBlY3RlZEFuZFJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21w
eGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsNCiAgICB9DQoNCiAgICB2b2lkIGF0b21pY1N0cm9u
Z0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIGF0b21pY1N0cm9uZ0NBUyhleHBlY3Rl
ZEFuZFJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0obmV3VmFs
dWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsNCiAgICB9DQoNCiAgICB2b2lk
IGF0b21pY1N0cm9uZ0NBUzMyKFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVy
SUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ry
b25nQ0FTKGV4cGVjdGVkQW5kUmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hnbF9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
YWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRS
ZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3Vs
dCwgYWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2Jfcm0obmV3VmFsdWUsIGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9
KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzE2KFN0YXR1c0NvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1Zh
bHVlLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWlj
U3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2Vt
Ymxlci5jbXB4Y2hnd19ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
IH0pOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaEF0
b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9h
c3NlbWJsZXIuY21weGNoZ3dfcm0obmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOyB9KTsNCiAgICB9DQoNCiAgICBKdW1w
IGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3Mp
DQogICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVj
dGVkQW5kUmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hnbF9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOw0KICAgIH0NCg0KICAgIEp1
bXAgYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgYWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ2xfcm0o
bmV3VmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUpOyB9KTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICB2b2lkIGF0
b21pY1dlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7DQogICAgfQ0KDQogICAg
dm9pZCBhdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVySUQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25nQ0FTOChjb25k
LCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7DQogICAg
fQ0KDQogICAgdm9pZCBhdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpDQogICAgew0KICAgICAgICBhdG9taWNTdHJvbmdD
QVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3Vs
dCk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkNCiAgICB7DQogICAgICAgIGF0
b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRk
cmVzcywgcmVzdWx0KTsNCiAgICB9DQoNCiAgICB2b2lkIGF0b21pY1dlYWtDQVMzMihTdGF0dXND
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkNCiAgICB7DQog
ICAgICAgIGF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdW
YWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsNCiAgICB9DQoNCiAgICB2b2lkIGF0b21pY1dlYWtDQVMz
MihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwg
UmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0
KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJh
bmNoQXRvbWljV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykNCiAg
ICB7DQogICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVjdGVk
QW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgSnVtcCBicmFu
Y2hBdG9taWNXZWFrQ0FTOChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpDQog
ICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTOChjb25kLCBleHBlY3Rl
ZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJh
bmNoQXRvbWljV2Vha0NBUzE2KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpDQog
ICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsNCiAgICB9DQoNCiAgICBKdW1wIGJy
YW5jaEF0b21pY1dlYWtDQVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBl
Y3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3Mp
DQogICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMTYoY29uZCwgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsNCiAgICB9DQoNCiAgICBKdW1w
IGJyYW5jaEF0b21pY1dlYWtDQVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBl
eHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQsIGV4
cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgSnVt
cCBicmFuY2hBdG9taWNXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
ZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRy
ZXNzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzMyKGNvbmQs
IGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM4KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25n
Q0FTOChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3Vs
dCk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3
VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkNCiAgICB7DQogICAg
ICAgIGF0b21pY1N0cm9uZ0NBUzgoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVl
LCBhZGRyZXNzLCByZXN1bHQpOw0KICAgIH0NCg0KICAgIHZvaWQgYXRvbWljUmVsYXhlZFdlYWtD
QVMxNihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3Vs
dCkNCiAgICB7DQogICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsNCiAgICB9DQoNCiAgICB2b2lkIGF0
b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkNCiAgICB7DQogICAgICAgIGF0b21pY1N0cm9uZ0NBUzE2KGNv
bmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsNCiAg
ICB9DQoNCiAgICB2b2lkIGF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpDQogICAgew0KICAgICAgICBhdG9t
aWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MsIHJlc3VsdCk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNSZWxheGVkV2Vha0NBUzMyKFN0
YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBSZWdp
c3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpDQog
ICAgew0KICAgICAgICBhdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MsIHJlc3VsdCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hB
dG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykN
CiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM4KGNvbmQsIGV4cGVj
dGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgSnVtcCBi
cmFuY2hBdG9taWNSZWxheGVkV2Vha0NBUzgoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBh
ZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzgoY29u
ZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsNCiAgICB9DQoNCiAg
ICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMTYoU3RhdHVzQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEFk
ZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdD
QVMxNihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJlc3MpOw0KICAg
IH0NCg0KICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVMxNihTdGF0dXNDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdW
YWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoQXRv
bWljU3Ryb25nQ0FTMTYoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRy
ZXNzKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEF0b21pY1JlbGF4ZWRXZWFrQ0FTMzIoU3Rh
dHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lz
dGVySUQgbmV3VmFsdWUsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIHJldHVybiBi
cmFuY2hBdG9taWNTdHJvbmdDQVMzMihjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFs
dWUsIGFkZHJlc3MpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtD
QVMzMihTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAg
ICByZXR1cm4gYnJhbmNoQXRvbWljU3Ryb25nQ0FTMzIoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVy
ZWQsIG5ld1ZhbHVlLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNBZGQ4
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsNCiAgICAgICAgYWRkOChpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICAN
CiAgICB2b2lkIGF0b21pY0FkZDgoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIGFkZDgoaW1tLCBh
ZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNBZGQ4KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQog
ICAgICAgIGFkZDgocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNB
ZGQ4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1f
YXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgYWRkOChyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAg
ICANCiAgICB2b2lkIGF0b21pY0FkZDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVz
cykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgYWRkMTYoaW1t
LCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNBZGQxNihUcnVzdGVkSW1t
MzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsNCiAgICAgICAgYWRkMTYoaW1tLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9p
ZCBhdG9taWNBZGQxNihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBhZGQxNihyZWcsIGFkZHJlc3MpOw0K
ICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY0FkZDE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5k
ZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAg
YWRkMTYocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNBZGQzMihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7DQogICAgICAgIGFkZDMyKGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgYXRvbWljQWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIGFkZDMyKGltbSwg
YWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljQWRkMzIoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsN
CiAgICAgICAgYWRkMzIocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9t
aWNBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIGFkZDMyKHJlZywgYWRkcmVzcyk7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgYXRvbWljU3ViOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHN1Yjgo
aW1tLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNTdWI4KFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOw0KICAgICAgICBzdWI4KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZv
aWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBzdWI4KHJlZywgYWRkcmVzcyk7DQog
ICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljU3ViOChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4
IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHN1
YjgocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNTdWIxNihUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxl
ci5sb2NrKCk7DQogICAgICAgIHN1YjE2KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgYXRvbWljU3ViMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpDQog
ICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHN1YjE2KGltbSwgYWRk
cmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljU3ViMTYoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAg
ICAgICAgc3ViMTYocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNT
dWIxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHN1YjE2KHJlZywgYWRkcmVzcyk7DQogICAgfQ0K
ICAgIA0KICAgIHZvaWQgYXRvbWljU3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBzdWIzMihp
bW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY1N1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIu
bG9jaygpOw0KICAgICAgICBzdWIzMihpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIGF0b21pY1N1YjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0K
ICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHN1YjMyKHJlZywgYWRkcmVzcyk7
DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljU3ViMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJ
bmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAg
ICBzdWIzMihyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY0FuZDgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOw0KICAgICAgICBhbmQ4KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgYXRvbWljQW5kOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykN
CiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgYW5kOChpbW0sIGFk
ZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY0FuZDgoUmVnaXN0ZXJJRCByZWcs
IEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAg
ICAgICAgYW5kOChyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY0Fu
ZDgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9h
c3NlbWJsZXIubG9jaygpOw0KICAgICAgICBhbmQ4KHJlZywgYWRkcmVzcyk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgYXRvbWljQW5kMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNz
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBhbmQxNihpbW0s
IGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY0FuZDE2KFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9j
aygpOw0KICAgICAgICBhbmQxNihpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IGF0b21pY0FuZDE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIGFuZDE2KHJlZywgYWRkcmVzcyk7DQog
ICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljQW5kMTYoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRl
eCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBh
bmQxNihyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY0FuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsNCiAgICAgICAgYW5kMzIoaW1tLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQog
ICAgdm9pZCBhdG9taWNBbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykN
CiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgYW5kMzIoaW1tLCBh
ZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNBbmQzMihSZWdpc3RlcklEIHJl
ZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0K
ICAgICAgICBhbmQzMihyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21p
Y0FuZDMyKFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgYW5kMzIocmVnLCBhZGRyZXNzKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBvcjgoaW1t
LCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNPcjgoVHJ1c3RlZEltbTMy
IGltbSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2Nr
KCk7DQogICAgICAgIG9yOChpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0
b21pY09yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBvcjgocmVnLCBhZGRyZXNzKTsNCiAgICB9DQog
ICAgDQogICAgdm9pZCBhdG9taWNPcjgoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNz
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBvcjgocmVnLCBh
ZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNPcjE2KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsN
CiAgICAgICAgb3IxNihpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21p
Y09yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIG9yMTYoaW1tLCBhZGRyZXNzKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIG9yMTYocmVn
LCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNPcjE2KFJlZ2lzdGVySUQg
cmVnLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsNCiAgICAgICAgb3IxNihyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0
b21pY09yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBvcjMyKGltbSwgYWRkcmVzcyk7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgYXRvbWljT3IzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgb3Iz
MihpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY09yMzIoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsNCiAgICAgICAgb3IzMihyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IGF0b21pY09yMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBvcjMyKHJlZywgYWRkcmVzcyk7DQog
ICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHhv
cjgoaW1tLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYb3I4KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOw0KICAgICAgICB4b3I4KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICB4b3I4KHJlZywgYWRkcmVzcyk7
DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWG9yOChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAg
IHhvcjgocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYb3IxNihU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7DQogICAgICAgIHhvcjE2KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgYXRvbWljWG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHhvcjE2KGltbSwg
YWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWG9yMTYoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsN
CiAgICAgICAgeG9yMTYocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9t
aWNYb3IxNihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHhvcjE2KHJlZywgYWRkcmVzcyk7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICB4b3Iz
MihpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY1hvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOw0KICAgICAgICB4b3IzMihpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAg
ICB2b2lkIGF0b21pY1hvcjMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHhvcjMyKHJlZywgYWRkcmVz
cyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWG9yMzIoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAg
ICAgICB4b3IzMihyZWcsIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY05l
ZzgoQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0K
ICAgICAgICBuZWc4KGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY05lZzgo
QmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQog
ICAgICAgIG5lZzgoYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljTmVnMTYo
QWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAg
ICAgICBuZWcxNihhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNOZWcxNihC
YXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAg
ICAgICAgbmVnMTYoYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljTmVnMzIo
QWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAg
ICAgICBuZWczMihhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNOZWczMihC
YXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAg
ICAgICAgbmVnMzIoYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljTm90OChB
ZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAg
ICAgIG5vdDgoYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljTm90OChCYXNl
SW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAg
ICAgbm90OChhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNOb3QxNihBZGRy
ZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAg
IG5vdDE2KGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY05vdDE2KEJhc2VJ
bmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAg
ICBub3QxNihhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNOb3QzMihBZGRy
ZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAg
IG5vdDMyKGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY05vdDMyKEJhc2VJ
bmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAg
ICBub3QzMihhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYY2hnQWRkOChS
ZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOw0KICAgICAgICBtX2Fzc2VtYmxlci54YWRkYl9ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY1hjaGdBZGQ4
KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNz
ZW1ibGVyLmxvY2soKTsNCiAgICAgICAgbV9hc3NlbWJsZXIueGFkZGJfcm0ocmVnLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAg
ICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAg
bV9hc3NlbWJsZXIueGFkZHdfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsN
CiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYY2hnQWRkMTYoUmVnaXN0ZXJJRCByZWcsIEJh
c2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAg
ICAgICBtX2Fzc2VtYmxlci54YWRkd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBtX2Fzc2VtYmxlci54YWRkbF9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIGF0b21pY1hjaGdBZGQzMihSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpDQog
ICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIG1fYXNzZW1ibGVyLnhh
ZGRsX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWGNoZzgoUmVnaXN0
ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxv
Y2soKTsNCiAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYY2hnOChSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5s
b2NrKCk7DQogICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3Mp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIG1fYXNzZW1ibGVy
LnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgYXRvbWljWGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVz
cykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgbV9hc3NlbWJs
ZXIueGNoZ3dfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLmxvY2soKTsNCiAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYY2hnMzIo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIubG9jaygpOw0KICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAg
IH0NCiAgICANCiAgICANCiAgICB2b2lkIHN0b3JlRmVuY2UoKQ0KICAgIHsNCiAgICB9DQoNCiAg
ICANCiAgICB2b2lkIGxvYWRGZW5jZSgpDQogICAgew0KICAgIH0NCiAgICANCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzOTEwICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaCINCg0KICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+DQogICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhWTUhhbHQoQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiBpbnN0cnVj
dGlvblN0YXJ0KQ0KICAgIHsNCiAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEhsdChp
bnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPFB0clRhZyBzdGFydFRhZywgUHRyVGFnIGRlc3RUYWc+DQogICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsPHN0YXJ0VGFnPiBpbnN0cnVjdGlvblN0YXJ0
LCBDb2RlTG9jYXRpb25MYWJlbDxkZXN0VGFnPiBkZXN0aW5hdGlvbikNCiAgICB7DQogICAgICAg
IFg4NkFzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7DQogICAgfQ0KICAg
IA0KICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpDQogICAgew0K
ICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7DQog
ICAgfQ0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpDQogICAgew0K
ICAgICAgICByZXR1cm4gWDg2QXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkNCiAgICB7
DQogICAgICAgIGlmIChzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RD
aGVja2VkKQ0KICAgICAgICAgICAgY29sbGVjdENQVUZlYXR1cmVzKCk7DQogICAgICAgIHJldHVy
biBzX3NzZTRfMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7DQogICAgfQ0KDQog
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb3VudFBvcHVsYXRpb24oKQ0KICAgIHsNCiAgICAgICAg
aWYgKHNfcG9wY250Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6Ok5vdENoZWNrZWQpDQog
ICAgICAgICAgICBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsNCiAgICAgICAgcmV0dXJuIHNfcG9wY250
Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNrU3RhdGU6OlNldDsNCiAgICB9DQoNCiAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0c0FWWCgpDQogICAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgIH0NCg0KICAgIHZvaWQgbGZlbmNlKCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVy
LmxmZW5jZSgpOw0KICAgIH0NCg0KICAgIHZvaWQgbWZlbmNlKCkNCiAgICB7DQogICAgICAgIG1f
YXNzZW1ibGVyLm1mZW5jZSgpOw0KICAgIH0NCg0KICAgIHZvaWQgc2ZlbmNlKCkNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLnNmZW5jZSgpOw0KICAgIH0NCg0KICAgIHZvaWQgcmR0c2MoKQ0K
ICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIucmR0c2MoKTsNCiAgICB9DQoNCiAgICB2b2lkIHBh
dXNlKCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnBhdXNlKCk7DQogICAgfQ0KDQogICAg
dm9pZCBjcHVpZCgpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jcHVpZCgpOw0KICAgIH0N
Cg0KcHJvdGVjdGVkOg0KICAgIFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpDQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8WDg2QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOw0KICAgIH0NCg0KICAgIFg4NkFzc2Vt
Ymxlcjo6Q29uZGl0aW9uIHg4NkNvbmRpdGlvbihSZXN1bHRDb25kaXRpb24gY29uZCkNCiAgICB7
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29u
ZCk7DQogICAgfQ0KDQogICAgWDg2QXNzZW1ibGVyOjpDb25kaXRpb24geDg2Q29uZGl0aW9uKFN0
YXR1c0NvbmRpdGlvbiBjb25kKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChjb25kKSB7DQogICAg
ICAgIGNhc2UgU3VjY2VzczoNCiAgICAgICAgICAgIHJldHVybiBYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbkU7DQogICAgICAgIGNhc2UgRmFpbHVyZToNCiAgICAgICAgICAgIHJldHVybiBYODZBc3Nl
bWJsZXI6OkNvbmRpdGlvbk5FOw0KICAgICAgICB9DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVn
cmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRo
SW5mbyg0MDAyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiLCAgX19GVU5DVElPTl9f
ICAsIDM4ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuIFg4NkFzc2VtYmxlcjo6
Q29uZGl0aW9uRTsNCiAgICB9DQoNCiAgICB2b2lkIHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDQwMTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIg0KICAgICAgICBtX2Fzc2Vt
Ymxlci5zZXRDQ19yKGNvbmQsIGRlc3QpOw0KICAgICAgICBtX2Fzc2VtYmxlci5tb3Z6YmxfcnIo
ZGVzdCwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBjbW92KFg4NkFzc2VtYmxlcjo6Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KDQogICAg
ICAgIG1fYXNzZW1ibGVyLmNtb3ZxX3JyKGNvbmQsIHNyYywgZGVzdCk7DQoNCg0KI2xpbmUgNDAz
MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiDQogICAgfQ0KDQogICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNMWkNOVCgpDQogICAgew0KICAgICAgICBpZiAoc19semNudENoZWNrU3RhdGUg
PT0gQ1BVSURDaGVja1N0YXRlOjpOb3RDaGVja2VkKQ0KICAgICAgICAgICAgY29sbGVjdENQVUZl
YXR1cmVzKCk7DQogICAgICAgIHJldHVybiBzX2x6Y250Q2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNr
U3RhdGU6OlNldDsNCiAgICB9DQoNCiAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0JNSTEoKQ0KICAg
IHsNCiAgICAgICAgaWYgKHNfYm1pMUNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpOb3RD
aGVja2VkKQ0KICAgICAgICAgICAgY29sbGVjdENQVUZlYXR1cmVzKCk7DQogICAgICAgIHJldHVy
biBzX2JtaTFDaGVja1N0YXRlID09IENQVUlEQ2hlY2tTdGF0ZTo6U2V0Ow0KICAgIH0NCg0KICAg
IHRlbXBsYXRlPGludCBzaXplT2ZSZWdpc3Rlcj4NCiAgICB2b2lkIGN0ekFmdGVyQnNmKFJlZ2lz
dGVySUQgZHN0KQ0KICAgIHsNCiAgICAgICAgSnVtcCBzcmNJc05vblplcm8gPSBtX2Fzc2VtYmxl
ci5qQ0MoeDg2Q29uZGl0aW9uKE5vblplcm8pKTsNCiAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIo
c2l6ZU9mUmVnaXN0ZXIpLCBkc3QpOw0KICAgICAgICBzcmNJc05vblplcm8ubGluayh0aGlzKTsN
CiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQWRkcmVzc1R5cGUsIHR5cGVuYW1l
IEZ1bmM+DQogICAgdm9pZCBhdG9taWNTdHJvbmdDQVMoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgZXhwZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgcmVzdWx0LCBBZGRyZXNzVHlw
ZSYgYWRkcmVzcywgY29uc3QgRnVuYyYgZnVuYykNCiAgICB7DQogICAgICAgIGFkZHJlc3MgPSBh
ZGRyZXNzLndpdGhTd2FwcGVkUmVnaXN0ZXIoWDg2UmVnaXN0ZXJzOjplYXgsIGV4cGVjdGVkQW5k
UmVzdWx0KTsNCiAgICAgICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjpl
YXgpOw0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIGZ1bmMoKTsNCiAgICAg
ICAgc3dhcChleHBlY3RlZEFuZFJlc3VsdCwgWDg2UmVnaXN0ZXJzOjplYXgpOw0KICAgICAgICBz
ZXQzMih4ODZDb25kaXRpb24oY29uZCksIHJlc3VsdCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgQWRkcmVzc1R5cGUsIHR5cGVuYW1lIEZ1bmM+DQogICAgdm9pZCBhdG9taWNTdHJv
bmdDQVMoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgQWRkcmVzc1R5cGUmIGFkZHJlc3Ms
IGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0KICAgICAgICBhZGRyZXNzID0gYWRkcmVzcy53aXRo
U3dhcHBlZFJlZ2lzdGVyKFg4NlJlZ2lzdGVyczo6ZWF4LCBleHBlY3RlZEFuZFJlc3VsdCk7DQog
ICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsNCiAgICAg
ICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBmdW5jKCk7DQogICAgICAgIHN3YXAoZXhw
ZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGRyZXNzVHlwZSwgdHlwZW5hbWUgRnVuYz4NCiAgICBKdW1wIGJyYW5jaEF0
b21pY1N0cm9uZ0NBUyhTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFu
ZFJlc3VsdCwgQWRkcmVzc1R5cGUmIGFkZHJlc3MsIGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0K
ICAgICAgICBhZGRyZXNzID0gYWRkcmVzcy53aXRoU3dhcHBlZFJlZ2lzdGVyKFg4NlJlZ2lzdGVy
czo6ZWF4LCBleHBlY3RlZEFuZFJlc3VsdCk7DQogICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1
bHQsIFg4NlJlZ2lzdGVyczo6ZWF4KTsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAg
ICAgICBmdW5jKCk7DQogICAgICAgIHN3YXAoZXhwZWN0ZWRBbmRSZXN1bHQsIFg4NlJlZ2lzdGVy
czo6ZWF4KTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlv
bihjb25kKSkpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICANCiAgICANCiAgICBmcmllbmQgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJYODY7DQoNCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgZ2VuZXJhdGVU
ZXN0MzIoQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpDQogICAgew0KICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQ0KICAgICAgICAgICAg
bV9hc3NlbWJsZXIuY21wbF9pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAg
ICAgICAgZWxzZSBpZiAoIShtYXNrLm1fdmFsdWUgJiB+MHhmZikpDQogICAgICAgICAgICBtX2Fz
c2VtYmxlci50ZXN0Yl9pbShtYXNrLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UpOw0KICAgICAgICBlbHNlIGlmICghKG1hc2subV92YWx1ZSAmIH4weGZmMDApKQ0KICAgICAg
ICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFzay5tX3ZhbHVlID4+IDgsIGFkZHJlc3Mub2Zm
c2V0ICsgMSwgYWRkcmVzcy5iYXNlKTsNCiAgICAgICAgZWxzZSBpZiAoIShtYXNrLm1fdmFsdWUg
JiB+MHhmZjAwMDApKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaW0obWFzay5tX3Zh
bHVlID4+IDE2LCBhZGRyZXNzLm9mZnNldCArIDIsIGFkZHJlc3MuYmFzZSk7DQogICAgICAgIGVs
c2UgaWYgKCEobWFzay5tX3ZhbHVlICYgfjB4ZmYwMDAwMDApKQ0KICAgICAgICAgICAgbV9hc3Nl
bWJsZXIudGVzdGJfaW0obWFzay5tX3ZhbHVlID4+IDI0LCBhZGRyZXNzLm9mZnNldCArIDMsIGFk
ZHJlc3MuYmFzZSk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Rs
X2kzMm0obWFzay5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9
DQoNCiAgICANCiAgICANCiAgICB2b2lkIGNsejMyQWZ0ZXJCc3IoUmVnaXN0ZXJJRCBkc3QpDQog
ICAgew0KICAgICAgICBKdW1wIHNyY0lzTm9uWmVybyA9IG1fYXNzZW1ibGVyLmpDQyh4ODZDb25k
aXRpb24oTm9uWmVybykpOw0KICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigzMiksIGRzdCk7DQoN
CiAgICAgICAgSnVtcCBza2lwTm9uWmVyb0Nhc2UgPSBqdW1wKCk7DQogICAgICAgIHNyY0lzTm9u
WmVyby5saW5rKHRoaXMpOw0KICAgICAgICB4b3IzMihUcnVzdGVkSW1tMzIoMHgxZiksIGRzdCk7
DQogICAgICAgIHNraXBOb25aZXJvQ2FzZS5saW5rKHRoaXMpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uPg0KICAgIHZvaWQgZmxvYXRpbmdQb2ludENvbXBhcmUoRG91
YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQs
IFJlZ2lzdGVySUQgZGVzdCwgRnVuY3Rpb24gY29tcGFyZSkNCiAgICB7DQogICAgICAgIGlmIChj
b25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkgew0KICAgICAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWxBbmRPcmRlcmVkKSB7DQogICAg
ICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgY29t
cGFyZShyaWdodCwgbGVmdCk7DQogICAgICAgICAgICAgICAgICAgIHNldDMyKFg4NkFzc2VtYmxl
cjo6Q29uZGl0aW9uTlAsIGRlc3QpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAg
ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIGRl
c3QpOw0KICAgICAgICAgICAgICAgIGNvbXBhcmUocmlnaHQsIGxlZnQpOw0KICAgICAgICAgICAg
ICAgIEp1bXAgaXNVbm9yZGVyZWQgPSBtX2Fzc2VtYmxlci5qcCgpOw0KICAgICAgICAgICAgICAg
IHNldDMyKFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRSwgZGVzdCk7DQogICAgICAgICAgICAgICAg
aXNVbm9yZGVyZWQubGluayh0aGlzKTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAg
ICAgICB9DQogICAgICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVk
KSB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsNCiAgICAgICAgICAgICAg
ICAgICAgY29tcGFyZShyaWdodCwgbGVmdCk7DQogICAgICAgICAgICAgICAgICAgIHNldDMyKFg4
NkFzc2VtYmxlcjo6Q29uZGl0aW9uUCwgZGVzdCk7DQogICAgICAgICAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigxKSwgZGVzdCk7DQogICAgICAgICAgICAgICAgY29tcGFyZShyaWdodCwgbGVmdCk7DQogICAg
ICAgICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZCA9IG1fYXNzZW1ibGVyLmpwKCk7DQogICAgICAg
ICAgICAgICAgc2V0MzIoWDg2QXNzZW1ibGVyOjpDb25kaXRpb25ORSwgZGVzdCk7DQogICAgICAg
ICAgICAgICAgaXNVbm9yZGVyZWQubGluayh0aGlzKTsNCiAgICAgICAgICAgICAgICByZXR1cm47
DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2lu
dGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg0MTU0
LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgiLCAgX19GVU5DVElPTl9fICAsIDM5ICk7
IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGlmIChjb25kICYgRG91YmxlQ29uZGl0aW9uQml0SW52ZXJ0KQ0KICAgICAgICAgICAgY29t
cGFyZShsZWZ0LCByaWdodCk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGNvbXBhcmUocmln
aHQsIGxlZnQpOw0KICAgICAgICBzZXQzMihzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwgZGVzdCk7DQogICAgfQ0KDQogICAg
SnVtcCBqdW1wQWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShEb3VibGVDb25kaXRpb24gY29uZCwg
RlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCkNCiAgICB7DQogICAgICAgIGlm
IChjb25kID09IERvdWJsZUVxdWFsQW5kT3JkZXJlZCkgew0KICAgICAgICAgICAgaWYgKGxlZnQg
PT0gcmlnaHQpDQogICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam5wKCkp
Ow0KICAgICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsNCiAgICAg
ICAgICAgIEp1bXAgcmVzdWx0ID0gSnVtcChtX2Fzc2VtYmxlci5qZSgpKTsNCiAgICAgICAgICAg
IGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7DQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAg
ICAgICB9DQogICAgICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpIHsN
CiAgICAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQ0KICAgICAgICAgICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmpwKCkpOw0KICAgICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZChtX2Fz
c2VtYmxlci5qcCgpKTsNCiAgICAgICAgICAgIEp1bXAgaXNFcXVhbChtX2Fzc2VtYmxlci5qZSgp
KTsNCiAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7DQogICAgICAgICAgICBKdW1w
IHJlc3VsdCA9IGp1bXAoKTsNCiAgICAgICAgICAgIGlzRXF1YWwubGluayh0aGlzKTsNCiAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICAoKHZvaWQpMCk7DQog
ICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyhzdGF0aWNfY2FzdDxYODZBc3NlbWJs
ZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSkpOw0KICAgIH0NCg0K
ICAgIA0KICAgIA0KICAgIHZvaWQgbW92ZTMySWZOZWVkZWQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMgPT0gZGVzdCkNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92bF9ycihzcmMsIGRlc3QpOw0KICAgIH0N
Cg0KDQogICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQb2ludENvbXBhcmUo
RG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmln
aHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAo
Y29uZCA9PSBEb3VibGVFcXVhbEFuZE9yZGVyZWQpIHsNCiAgICAgICAgICAgIGlmIChsZWZ0ID09
IHJpZ2h0KSB7DQogICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21vdm5wcV9ycihzcmMsIGRl
c3QpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg
ICAgSnVtcCBpc1Vub3JkZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsNCiAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmNtb3ZlcV9ycihzcmMsIGRlc3QpOw0KICAgICAgICAgICAgaXNVbm9yZGVyZWQubGlu
ayh0aGlzKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChj
b25kID09IERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpIHsNCiAgICAgICAgICAgIGlmIChsZWZ0
ID09IHJpZ2h0KSB7DQogICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21vdnBxX3JyKHNyYywg
ZGVzdCk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KDQogICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbW92cHFfcnIoc3JjLCBkZXN0KTsNCiAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmNtb3ZuZXFfcnIoc3JjLCBkZXN0KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgfQ0KDQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgY21vdihzdGF0aWNfY2FzdDxYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwgc3JjLCBk
ZXN0KTsNCiAgICB9DQojbGluZSA0MjI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCIN
Cg0KICAgIHVzaW5nIENQVUlEID0gc3RkOjphcnJheTx1bnNpZ25lZCwgND47DQogICAgc3RhdGlj
IENQVUlEIGdldENQVUlEKHVuc2lnbmVkIGxldmVsKTsNCiAgICBzdGF0aWMgQ1BVSUQgZ2V0Q1BV
SURFeCh1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgY291bnQpOw0KICAgIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBzdGF0aWMgdm9pZCBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsNCg0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBzdGF0aWMgQ1BVSURDaGVja1N0YXRlIHNfc3NlNF8xQ2hlY2tTdGF0ZTsN
CiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIENQVUlEQ2hlY2tTdGF0ZSBzX3NzZTRf
MkNoZWNrU3RhdGU7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBDUFVJRENoZWNr
U3RhdGUgc19hdnhDaGVja1N0YXRlOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMg
Q1BVSURDaGVja1N0YXRlIHNfbHpjbnRDaGVja1N0YXRlOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBzdGF0aWMgQ1BVSURDaGVja1N0YXRlIHNfYm1pMUNoZWNrU3RhdGU7DQogICAgX19kZWNs
c3BlYyhkbGxleHBvcnQpIHN0YXRpYyBDUFVJRENoZWNrU3RhdGUgc19wb3BjbnRDaGVja1N0YXRl
Ow0KfTsNCg0KfSANCg0KI2xpbmUgNDI0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgi
DQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgiDQoNCg0KDQppbmxpbmUgYm9v
bCBDQU5fU0lHTl9FWFRFTkRfMzJfNjQoaW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0g
KGludDY0X3QpKGludDMyX3QpdmFsdWU7IH0NCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsNCnB1
YmxpYzoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUdQUnMgPSAxNjsNCiAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bUZQUnMgPSAxNjsNCiAgICANCiAgICBzdGF0aWMg
Y29uc3RleHByIFJlZ2lzdGVySUQgSW52YWxpZEdQUlJlZyA9IFg4NlJlZ2lzdGVyczo6SW52YWxp
ZEdQUlJlZzsNCg0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjphZGQzMjsNCiAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kMzI7DQogICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmJyYW5jaDMyOw0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpicmFuY2hBZGQzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
b3IzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3IxNjsNCiAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6b3I4Ow0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpzdWIzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9h
ZDg7DQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQzMjsNCiAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmUzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6c3RvcmU4Ow0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjpjYWxsOw0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpqdW1wOw0KICAgIHVz
aW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpmYXJKdW1wOw0KICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjphZGREb3VibGU7DQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmxvYWREb3VibGU7DQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNv
bnZlcnRJbnQzMlRvRG91YmxlOw0KDQogICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOw0KICAgICAgICBhZGQzMihpbW0s
IEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhbmQz
MihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkp
Ow0KICAgICAgICBhbmQzMihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBhZGQzMihBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIp
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIGFkZDMyKEFkZHJlc3Moc2NyYXRjaFJlZ2lz
dGVyKCkpLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIG9yMzIo
aW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7DQogICAgfQ0KDQogICAgdm9pZCBvcjMy
KFJlZ2lzdGVySUQgcmVnLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOw0K
ICAgICAgICBvcjMyKHJlZywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOw0KICAgIH0NCg0K
ICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykN
CiAgICB7DQogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRj
aFJlZ2lzdGVyKCkpOw0KICAgICAgICBvcjE2KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIo
KSkpOw0KICAgIH0NCg0KICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRk
cmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mu
bV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIG9yOChpbW0sIEFkZHJlc3Moc2Ny
YXRjaFJlZ2lzdGVyKCkpKTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIHN1YjMy
KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IGxvYWQ4KGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgZGVzdCk7DQogICAgICAgIGxvYWQ4KGRl
c3QsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbG9hZDE2KEV4dGVuZGVkQWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBUcnVzdGVkSW1tUHRyIGFkZHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVzcy5vZmZzZXQpKTsNCiAgICAgICAgTWFjcm9B
c3NlbWJsZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKCkpOw0KICAgICAg
ICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDE2KEJhc2VJbmRleChzY3JhdGNoUmVnaXN0
ZXIoKSwgYWRkcmVzcy5iYXNlLCBUaW1lc1R3byksIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQg
bG9hZDE2KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAg
ICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZDE2KGFkZHJlc3MsIGRlc3QpOw0KICAgIH0N
Cg0KICAgIHZvaWQgbG9hZDE2KEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAg
IHsNCiAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWQxNihhZGRyZXNzLCBkZXN0
KTsNCiAgICB9DQoNCiAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoZGVzdCA9PSBYODZSZWdpc3RlcnM6OmVheCkN
CiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbUVBWChhZGRyZXNzKTsNCiAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGRlc3QpOw0KICAg
ICAgICAgICAgbG9hZDMyKGRlc3QsIGRlc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9p
ZCBhZGREb3VibGUoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNo
UmVnaXN0ZXIoKSk7DQogICAgICAgIG1fYXNzZW1ibGVyLmFkZHNkX21yKDAsIHNjcmF0Y2hSZWdp
c3RlcigpLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFRy
dXN0ZWRJbW0zMiBpbW0sIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZShp
bW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2kyc2RfcnIo
c2NyYXRjaFJlZ2lzdGVyKCksIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmUzMihUcnVz
dGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIHN0b3JlMzIoaW1t
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVy
SUQgc291cmNlLCB2b2lkKiBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgaWYgKHNvdXJjZSA9PSBY
ODZSZWdpc3RlcnM6OmVheCkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfRUFYbShhZGRy
ZXNzKTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcyksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgICAgIHN0b3JlMzIoc291cmNlLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgdm9pZCBzdG9y
ZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykNCiAgICB7DQogICAgICAgIFRydXN0
ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpKTsNCiAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAg
IHN0b3JlOChpbW04LCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7DQogICAgfQ0KDQogICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCByZWcsIHZvaWQqIGFkZHJlc3MpDQogICAgew0KICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAg
ICAgc3RvcmU4KHJlZywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOw0KICAgIH0NCg0KDQog
ICAgQ2FsbCBjYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShQdHJUYWcpDQogICAgew0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBzdG9yZTY0KFg4
NlJlZ2lzdGVyczo6ZWJwLCBBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZXNwLCAtMTYpKTsNCg0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBzdWI2NChUcnVzdGVkSW1tMzIoOCAq
IHNpemVvZihpbnQ2NF90KSksIFg4NlJlZ2lzdGVyczo6ZXNwKTsNCg0KICAgICAgICANCiAgICAg
ICAgbW92ZShYODZSZWdpc3RlcnM6OmVzcCwgWDg2UmVnaXN0ZXJzOjplY3gpOw0KICAgICAgICBh
ZGQ2NChUcnVzdGVkSW1tMzIoNCAqIHNpemVvZihpbnQ2NF90KSksIFg4NlJlZ2lzdGVyczo6ZWN4
KTsNCg0KICAgICAgICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgQ2FsbCByZXN1bHQg
PSBDYWxsKG1fYXNzZW1ibGVyLmNhbGwoc2NyYXRjaFJlZ2lzdGVyKCkpLCBDYWxsOjpMaW5rYWJs
ZSk7DQoNCiAgICAgICAgYWRkNjQoVHJ1c3RlZEltbTMyKDggKiBzaXplb2YoaW50NjRfdCkpLCBY
ODZSZWdpc3RlcnM6OmVzcCk7DQoNCiAgICAgICAgDQogICAgICAgIGxvYWQ2NChBZGRyZXNzKFg4
NlJlZ2lzdGVyczo6ZWF4LCBzaXplb2YoaW50NjRfdCkpLCBYODZSZWdpc3RlcnM6OmVkeCk7DQog
ICAgICAgIGxvYWQ2NChBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWF4KSwgWDg2UmVnaXN0ZXJzOjpl
YXgpOw0KDQogICAgICAgICgodm9pZClsYWJlbCk7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQog
ICAgfQ0KI2xpbmUgMjI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCINCg0KICAgIENhbGwg
Y2FsbChQdHJUYWcpDQogICAgew0KDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIHN0b3JlNjQoWDg2UmVnaXN0ZXJzOjplYnAsIEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplc3As
IC0xNikpOw0KDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICANCiAgICAgICAgbG9hZDY0
KEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplc3AsIDQgKiBzaXplb2YoaW50NjRfdCkpLCBzY3JhdGNo
UmVnaXN0ZXIoKSk7DQogICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyKCksIEFkZHJlc3Mo
WDg2UmVnaXN0ZXJzOjplc3AsIC00ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludDY0
X3QpKSkpOw0KDQogICAgICAgIA0KICAgICAgICBsb2FkNjQoQWRkcmVzcyhYODZSZWdpc3RlcnM6
OmVzcCwgNSAqIHNpemVvZihpbnQ2NF90KSksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAg
c3RvcmU2NChzY3JhdGNoUmVnaXN0ZXIoKSwgQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVzcCwgLTMg
KiBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50NjRfdCkpKSk7DQoNCiAgICAgICAgDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgc3ViNjQoVHJ1c3RlZEltbTMyKDggKiBzaXplb2Yo
aW50NjRfdCkpLCBYODZSZWdpc3RlcnM6OmVzcCk7DQojbGluZSAyNDkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oIg0KICAgICAgICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNo
KFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgQ2Fs
bCByZXN1bHQgPSBDYWxsKG1fYXNzZW1ibGVyLmNhbGwoc2NyYXRjaFJlZ2lzdGVyKCkpLCBDYWxs
OjpMaW5rYWJsZSk7DQoNCiAgICAgICAgYWRkNjQoVHJ1c3RlZEltbTMyKDggKiBzaXplb2YoaW50
NjRfdCkpLCBYODZSZWdpc3RlcnM6OmVzcCk7DQojbGluZSAyNTQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxl
clg4Nl82NC5oIg0KICAgICAgICAoKHZvaWQpbGFiZWwpOw0KICAgICAgICByZXR1cm4gcmVzdWx0
Ow0KICAgIH0NCg0KICAgIHZvaWQgY2FsbE9wZXJhdGlvbihjb25zdCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IG9wZXJhdGlvbikNCiAgICB7DQogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihvcGVyYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAg
ICAgICAgbV9hc3NlbWJsZXIuY2FsbChzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgfQ0KDQogICAg
X19mb3JjZWlubGluZSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCBjYWxsVGFnKSB7IHJldHVybiAodm9p
ZCljYWxsVGFnLCBjYWxsKE5vUHRyVGFnKTsgfQ0KDQogICAgDQogICAgdm9pZCBmYXJKdW1wKEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQ0KICAgIHsNCiAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAg
IGZhckp1bXAoQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIHRhZyk7DQogICAgfQ0KDQogICAg
X19mb3JjZWlubGluZSB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQganVtcFRhZykgeyAodm9pZClqdW1wVGFnLCBmYXJKdW1wKGFkZHJlc3MsIE5vUHRyVGFn
KTsgfQ0KDQogICAgQ2FsbCB0aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwoKQ0KICAgIHsNCiAg
ICAgICAgY29uc3Qgc2l6ZV90IG5lYXJDYWxsT3Bjb2RlU2l6ZSA9IDE7DQogICAgICAgIGNvbnN0
IHNpemVfdCBuZWFyQ2FsbFJlbGF0aXZlTG9jYXRpb25TaXplID0gc2l6ZW9mKGludDMyX3QpOw0K
ICAgICAgICANCiAgICAgICAgc2l6ZV90IGNvZGVTaXplID0gbV9hc3NlbWJsZXIuY29kZVNpemUo
KTsNCiAgICAgICAgc2l6ZV90IGFsaWduZWRTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PG5lYXJDYWxsUmVsYXRpdmVMb2NhdGlvblNpemU+KGNvZGVTaXplICsgbmVhckNhbGxPcGNvZGVT
aXplKTsNCiAgICAgICAgZW1pdE5vcHMoYWxpZ25lZFNpemUgLSAoY29kZVNpemUgKyBuZWFyQ2Fs
bE9wY29kZVNpemUpKTsNCiAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gRGF0YUxhYmVsUHRy
KHRoaXMpOw0KICAgICAgICBDYWxsIHJlc3VsdCA9IG5lYXJDYWxsKCk7DQogICAgICAgICgodm9p
ZClsYWJlbCk7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIHNyYywgQWJzb2x1dGVB
ZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0
ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgYWRkMzIoc3JjLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcigpKSk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5hZGRxX3JyKHNy
YywgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYWRkNjQoQWRkcmVzcyBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfbXIoc3JjLm9mZnNl
dCwgc3JjLmJhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkNjQoQmFzZUluZGV4IHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9tcihz
cmMub2Zmc2V0LCBzcmMuYmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOw0KICAgIH0N
Cg0KICAgIHZvaWQgYWRkNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsN
CiAgICB9DQoNCiAgICB2b2lkIGFkZDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkN
CiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZDY0
KEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAg
IGFkZDY0KEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2
b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkNCiAgICB7DQog
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5j
cV9yKHNyY0Rlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRx
X2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZDY0KFRydXN0
ZWRJbW02NCBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChpbW0ubV92
YWx1ZSA9PSAxKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIuaW5jcV9yKGRlc3QpOw0KICAgICAg
ICBlbHNlIHsNCiAgICAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAg
ICAgICAgICBhZGQ2NChzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7DQogICAgICAgIH0NCiAgICB9
DQoNCiAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sZWFxX21yKGltbS5tX3Zh
bHVlLCBzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGlt
bSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEp
DQogICAgICAgICAgICBtX2Fzc2VtYmxlci5pbmNxX20oYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHFfaW0oaW1t
Lm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOw0KICAgIH0NCg0KICAgIHZv
aWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gMSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmluY3Ff
bShhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcV9pbShpbW0u
bV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOw0KICAgICAgICBhZGQ2NChpbW0s
IEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZDY0KFJl
Z2lzdGVySUQgYSwgUmVnaXN0ZXJJRCBiLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAg
ICB4ODZMZWE2NChCYXNlSW5kZXgoYSwgYiwgVGltZXNPbmUpLCBkZXN0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIHg4NkxlYTY0KEJhc2VJbmRleCBpbmRleCwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgaWYgKCFpbmRleC5zY2FsZSAmJiAhaW5kZXgub2Zmc2V0KSB7DQogICAgICAgICAg
ICBpZiAoaW5kZXguYmFzZSA9PSBkZXN0KSB7DQogICAgICAgICAgICAgICAgYWRkNjQoaW5kZXgu
aW5kZXgsIGRlc3QpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIGlmIChpbmRleC5pbmRleCA9PSBkZXN0KSB7DQogICAgICAgICAgICAgICAgYWRk
NjQoaW5kZXguYmFzZSwgZGVzdCk7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAg
ICAgfQ0KICAgICAgICB9DQogICAgICAgIG1fYXNzZW1ibGVyLmxlYXFfbXIoaW5kZXgub2Zmc2V0
LCBpbmRleC5iYXNlLCBpbmRleC5pbmRleCwgaW5kZXguc2NhbGUsIGRlc3QpOw0KICAgIH0NCg0K
ICAgIHZvaWQgZ2V0RWZmZWN0aXZlQWRkcmVzcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHg4NkxlYTY0KGFkZHJlc3MsIGRlc3QpOw0K
ICAgIH0NCg0KICAgIHZvaWQgYWRkUHRyTm9GbGFncyhUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIHNyY0Rlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sZWFxX21yKGltbS5tX3Zh
bHVlLCBzcmNEZXN0LCBzcmNEZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZDY0KFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5hbmRx
X3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9ybShzcmMsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJ
RCBzcmMsIEJhc2VJbmRleCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9y
bShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0K
ICAgIH0NCg0KICAgIHZvaWQgYW5kNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAg
ICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRl
c3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYW5kNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgc3JjLmluZGV4LCBzcmMuc2NhbGUsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYW5k
NjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIuYW5kcV9pcihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7DQogICAgfQ0KDQogICAg
dm9pZCBhbmQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
KTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pbShpbW0ubV92YWx1ZSwgZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7DQogICAgfQ0KDQog
ICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAg
IHsNCiAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2Yodm9pZCopID09IHNpemVvZihpbnQ2NF90
KSk7DQogICAgICAgIGFuZDY0KFRydXN0ZWRJbW02NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oaW1t
Lm1fdmFsdWUpKSwgc3JjRGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1t
NjQgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpDQogICAgew0KICAgICAgICBpbnQ2NF90IGludFZh
bHVlID0gaW1tLm1fdmFsdWU7DQogICAgICAgIGlmIChpbnRWYWx1ZSA8PSBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKQ0KICAgICAgICAgICAgJiYgaW50VmFsdWUgPj0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpIHsNCiAgICAgICAgICAgIGFuZDY0KFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihpbnRWYWx1ZSkpLCBzcmNEZXN0KTsNCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOw0KICAgICAgICBhbmQ2NChzY3JhdGNoUmVnaXN0ZXIoKSwgc3JjRGVzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChvcDEgPT0gb3AyICYmIG9wMSAhPSBkZXN0
ICYmIG9wMiAhPSBkZXN0KQ0KICAgICAgICAgICAgbW92ZShvcDEsIGRlc3QpOw0KICAgICAgICBl
bHNlIGlmIChvcDEgPT0gZGVzdCkNCiAgICAgICAgICAgIGFuZDY0KG9wMiwgZGVzdCk7DQogICAg
ICAgIGVsc2Ugew0KICAgICAgICAgICAgbW92ZShvcDIsIGRlc3QpOw0KICAgICAgICAgICAgYW5k
NjQob3AxLCBkZXN0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgY291bnRMZWFkaW5n
WmVyb3M2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBp
ZiAoc3VwcG9ydHNMWkNOVCgpKSB7DQogICAgICAgICAgICBtX2Fzc2VtYmxlci5semNudHFfcnIo
c3JjLCBkc3QpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIG1fYXNz
ZW1ibGVyLmJzcnFfcnIoc3JjLCBkc3QpOw0KICAgICAgICBjbHo2NEFmdGVyQnNyKGRzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczY0KEFkZHJlc3Mgc3JjLCBSZWdpc3Rl
cklEIGRzdCkNCiAgICB7DQogICAgICAgIGlmIChzdXBwb3J0c0xaQ05UKCkpIHsNCiAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmx6Y250cV9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0KTsNCiAg
ICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBtX2Fzc2VtYmxlci5ic3JxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3QpOw0KICAgICAgICBjbHo2NEFmdGVyQnNyKGRzdCk7
DQogICAgfQ0KDQogICAgdm9pZCBjb3VudFRyYWlsaW5nWmVyb3M2NChSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBpZiAoc3VwcG9ydHNCTUkxKCkpIHsNCiAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnR6Y250cV9ycihzcmMsIGRzdCk7DQogICAgICAgICAgICBy
ZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgbV9hc3NlbWJsZXIuYnNmcV9ycihzcmMsIGRzdCk7
DQogICAgICAgIGN0ekFmdGVyQnNmPDY0Pihkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgY291bnRU
cmFpbGluZ1plcm9zNjRXaXRob3V0TnVsbENoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRzdCkNCiAgICB7DQoNCg0KDQoNCiNsaW5lIDUwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2XzY0
LmgiDQogICAgICAgIGlmIChzdXBwb3J0c0JNSTEoKSkgew0KICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudHpjbnRxX3JyKHNyYywgZHN0KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0K
ICAgICAgICBtX2Fzc2VtYmxlci5ic2ZxX3JyKHNyYywgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IGNsZWFyQml0NjQoUmVnaXN0ZXJJRCBiaXRUb0NsZWFyLCBSZWdpc3RlcklEIGRzdCwgUmVnaXN0
ZXJJRCA9IEludmFsaWRHUFJSZWcpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5idHJxX3Jy
KGRzdCwgYml0VG9DbGVhcik7DQogICAgfQ0KDQogICAgZW51bSBjbGFzcyBDbGVhckJpdHNBdHRy
aWJ1dGVzIHsNCiAgICAgICAgT0tUb0Nsb2JiZXJNYXNrLA0KICAgICAgICBNdXN0UHJlc2VydmVN
YXNrDQogICAgfTsNCg0KICAgIHZvaWQgY2xlYXJCaXRzNjRXaXRoTWFzayhSZWdpc3RlcklEIG1h
c2ssIFJlZ2lzdGVySUQgZGVzdCwgQ2xlYXJCaXRzQXR0cmlidXRlcyBtYXNrUHJlc2VydmF0aW9u
ID0gQ2xlYXJCaXRzQXR0cmlidXRlczo6T0tUb0Nsb2JiZXJNYXNrKQ0KICAgIHsNCiAgICAgICAg
bm90NjQobWFzayk7DQogICAgICAgIG1fYXNzZW1ibGVyLmFuZHFfcnIobWFzaywgZGVzdCk7DQog
ICAgICAgIGlmIChtYXNrUHJlc2VydmF0aW9uID09IENsZWFyQml0c0F0dHJpYnV0ZXM6Ok11c3RQ
cmVzZXJ2ZU1hc2spDQogICAgICAgICAgICBub3Q2NChtYXNrKTsNCiAgICB9DQoNCiAgICB2b2lk
IGNsZWFyQml0czY0V2l0aE1hc2soUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgbWFzaywgUmVn
aXN0ZXJJRCBkZXN0LCBDbGVhckJpdHNBdHRyaWJ1dGVzIG1hc2tQcmVzZXJ2YXRpb24gPSBDbGVh
ckJpdHNBdHRyaWJ1dGVzOjpPS1RvQ2xvYmJlck1hc2spDQogICAgew0KICAgICAgICBtb3ZlKHNy
YywgZGVzdCk7DQogICAgICAgIGNsZWFyQml0czY0V2l0aE1hc2sobWFzaywgZGVzdCwgbWFza1By
ZXNlcnZhdGlvbik7DQogICAgfQ0KDQogICAgdm9pZCBjb3VudFBvcHVsYXRpb242NChSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIG1fYXNzZW1ibGVyLnBvcGNudHFfcnIoc3JjLCBkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQg
Y291bnRQb3B1bGF0aW9uNjQoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZHN0KQ0KICAgIHsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX2Fzc2VtYmxlci5wb3BjbnRxX21yKHNyYy5vZmZz
ZXQsIHNyYy5iYXNlLCBkc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbHNoaWZ0NjQoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc2hs
cV9pOHIoaW1tLm1fdmFsdWUsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGxzaGlmdDY0
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc3Jj
ID09IFg4NlJlZ2lzdGVyczo6ZWN4KQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2hscV9DTHIo
ZGVzdCk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAg
ICAgICANCiAgICAgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7DQogICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zaGxxX0NMcihkZXN0ID09IFg4NlJlZ2lzdGVyczo6ZWN4ID8gc3Jj
IDogZGVzdCk7DQogICAgICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gpOw0KICAg
ICAgICB9DQogICAgfQ0KICAgIA0KICAgIHZvaWQgcnNoaWZ0NjQoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc2FycV9pOHIoaW1t
Lm1fdmFsdWUsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgcnNoaWZ0NjQoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMgPT0gWDg2UmVnaXN0
ZXJzOjplY3gpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zYXJxX0NMcihkZXN0KTsNCiAgICAg
ICAgZWxzZSB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICANCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWN4KTsNCiAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNhcnFfQ0xyKGRlc3QgPT0gWDg2UmVnaXN0ZXJzOjplY3ggPyBzcmMg
OiBkZXN0KTsNCiAgICAgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7DQogICAg
ICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIHVyc2hpZnQ2NChUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5zaHJxX2k4cihpbW0ubV92
YWx1ZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB1cnNoaWZ0NjQoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMgPT0gWDg2UmVnaXN0ZXJz
OjplY3gpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zaHJxX0NMcihkZXN0KTsNCiAgICAgICAg
ZWxzZSB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICANCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWN4KTsNCiAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnNocnFfQ0xyKGRlc3QgPT0gWDg2UmVnaXN0ZXJzOjplY3ggPyBzcmMgOiBk
ZXN0KTsNCiAgICAgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICB2b2lkIHJvdGF0ZVJpZ2h0NjQoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIucm9ycV9pOHIoaW1tLm1f
dmFsdWUsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgcm90YXRlUmlnaHQ2NChSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNyYyA9PSBYODZSZWdp
c3RlcnM6OmVjeCkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnJvcnFfQ0xyKGRlc3QpOw0KICAg
ICAgICBlbHNlIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICAgICAgDQogICAg
ICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gpOw0KICAgICAgICAgICAgbV9hc3Nl
bWJsZXIucm9ycV9DTHIoZGVzdCA9PSBYODZSZWdpc3RlcnM6OmVjeCA/IHNyYyA6IGRlc3QpOw0K
ICAgICAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWN4KTsNCiAgICAgICAgfQ0KICAg
IH0NCg0KICAgIHZvaWQgcm90YXRlTGVmdDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnJvbHFfaThyKGltbS5tX3ZhbHVlLCBk
ZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHJvdGF0ZUxlZnQ2NChSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNyYyA9PSBYODZSZWdpc3RlcnM6OmVj
eCkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnJvbHFfQ0xyKGRlc3QpOw0KICAgICAgICBlbHNl
IHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBz
d2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gpOw0KICAgICAgICAgICAgbV9hc3NlbWJsZXIucm9s
cV9DTHIoZGVzdCA9PSBYODZSZWdpc3RlcnM6OmVjeCA/IHNyYyA6IGRlc3QpOw0KICAgICAgICAg
ICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWN4KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAg
IHZvaWQgbXVsNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLmltdWxxX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBt
dWw2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgaWYgKHNyYzIgPT0gZGVzdCkgew0KICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuaW11bHFfcnIoc3JjMSwgZGVzdCk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0N
CiAgICAgICAgbW92ZShzcmMxLCBkZXN0KTsNCiAgICAgICAgbV9hc3NlbWJsZXIuaW11bHFfcnIo
c3JjMiwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgeDg2Q29udmVydFRvUXVhZFdvcmQ2
NCgpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jcW8oKTsNCiAgICB9DQoNCiAgICB2b2lk
IHg4NkNvbnZlcnRUb1F1YWRXb3JkNjQoUmVnaXN0ZXJJRCByYXgsIFJlZ2lzdGVySUQgcmR4KQ0K
ICAgIHsNCiAgICAgICAgKCh2b2lkKXJheCk7DQogICAgICAgICgodm9pZClyZHgpOw0KICAgICAg
ICB4ODZDb252ZXJ0VG9RdWFkV29yZDY0KCk7DQogICAgfQ0KDQogICAgdm9pZCB4ODZEaXY2NChS
ZWdpc3RlcklEIGRlbm9taW5hdG9yKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuaWRpdnFf
cihkZW5vbWluYXRvcik7DQogICAgfQ0KDQogICAgdm9pZCB4ODZEaXY2NChSZWdpc3RlcklEIHJh
eCwgUmVnaXN0ZXJJRCByZHgsIFJlZ2lzdGVySUQgZGVub21pbmF0b3IpDQogICAgew0KICAgICAg
ICAoKHZvaWQpcmF4KTsNCiAgICAgICAgKCh2b2lkKXJkeCk7DQogICAgICAgIHg4NkRpdjY0KGRl
bm9taW5hdG9yKTsNCiAgICB9DQoNCiAgICB2b2lkIHg4NlVEaXY2NChSZWdpc3RlcklEIGRlbm9t
aW5hdG9yKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuZGl2cV9yKGRlbm9taW5hdG9yKTsN
CiAgICB9DQoNCiAgICB2b2lkIHg4NlVEaXY2NChSZWdpc3RlcklEIHJheCwgUmVnaXN0ZXJJRCBy
ZHgsIFJlZ2lzdGVySUQgZGVub21pbmF0b3IpDQogICAgew0KICAgICAgICAoKHZvaWQpcmF4KTsN
CiAgICAgICAgKCh2b2lkKXJkeCk7DQogICAgICAgIHg4NlVEaXY2NChkZW5vbWluYXRvcik7DQog
ICAgfQ0KDQogICAgdm9pZCBuZWc2NChSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci5uZWdxX3IoZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBuZWc2NChSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZShzcmMsIGRlc3Qp
Ow0KICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX3IoZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBu
ZWc2NChBZGRyZXNzIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5uZWdxX20oZGVz
dC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBuZWc2NChCYXNlSW5kZXgg
ZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm5lZ3FfbShkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yNjQo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLm9ycV9ycihzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgb3I2NChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JtKHNy
YywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQogICAgdm9pZCBvcjY0KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm9y
cV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUp
Ow0KICAgIH0NCg0KICAgIHZvaWQgb3I2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBk
ZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG9yNjQoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIub3JxX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBvcjY0
KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLm9ycV9pbShpbW0ubV92YWx1ZSwgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0K
DQogICAgdm9pZCBvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIub3JxX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIG9yNjQo
VHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAgaWYg
KGltbS5tX3ZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpDQogICAg
ICAgICAgICAmJiBpbW0ubV92YWx1ZSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKSkgew0KICAgICAgICAgICAgb3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oaW1tLm1fdmFsdWUpKSwgc3JjRGVzdCk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAg
IH0NCiAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgb3I2NChz
Y3JhdGNoUmVnaXN0ZXIoKSwgc3JjRGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBvcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVy
Lm9ycV9pcihpbW0ubV92YWx1ZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBvcjY0KFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgaWYgKG9wMSA9PSBvcDIpDQogICAgICAgICAgICBtb3ZlKG9wMSwgZGVzdCk7DQogICAgICAg
IGVsc2UgaWYgKG9wMSA9PSBkZXN0KQ0KICAgICAgICAgICAgb3I2NChvcDIsIGRlc3QpOw0KICAg
ICAgICBlbHNlIHsNCiAgICAgICAgICAgIG1vdmUob3AyLCBkZXN0KTsNCiAgICAgICAgICAgIG9y
NjQob3AxLCBkZXN0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgb3I2NChUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgbW92ZShzcmMsIGRlc3QpOw0KICAgICAgICBvcjY0KGltbSwgZGVzdCk7DQogICAgfQ0KDQog
ICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIuc3VicV9ycihzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGVjcV9y
KGRlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2lyKGlt
bS5tX3ZhbHVlLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBzdWI2NChUcnVzdGVkSW1t
NjQgaW1tLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoaW1tLm1fdmFsdWUg
PT0gMSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLmRlY3FfcihkZXN0KTsNCiAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZ2lzdGVyKCkpOw0KICAgICAgICAg
ICAgc3ViNjQoc2NyYXRjaFJlZ2lzdGVyKCksIGRlc3QpOw0KICAgICAgICB9DQogICAgfQ0KDQog
ICAgdm9pZCBzdWI2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0K
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX2ltKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0s
IEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9pbShp
bW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBzdWI2NChBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9tcihzcmMub2Zm
c2V0LCBzcmMuYmFzZSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzdWI2NChCYXNlSW5kZXgg
c3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5zdWJxX21y
KHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBzcmMuaW5kZXgsIHNyYy5zY2FsZSwgZGVzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBzdWI2NChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBkZXN0KQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2Up
Ow0KICAgIH0NCg0KICAgIHZvaWQgc3ViNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuc3VicV9ybShzcmMsIGRlc3Qub2Zmc2V0LCBk
ZXN0LmJhc2UsIGRlc3QuaW5kZXgsIGRlc3Quc2NhbGUpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9y
NjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNz
ZW1ibGVyLnhvcnFfcnIoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjY0KFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgaWYgKG9wMSA9PSBvcDIpDQogICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgZGVz
dCk7DQogICAgICAgIGVsc2UgaWYgKG9wMSA9PSBkZXN0KQ0KICAgICAgICAgICAgeG9yNjQob3Ay
LCBkZXN0KTsNCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICBtb3ZlKG9wMiwgZGVzdCk7DQog
ICAgICAgICAgICB4b3I2NChvcDEsIGRlc3QpOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgeG9yNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsNCiAgICB9
DQoNCiAgICB2b2lkIHhvcjY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkNCiAgICB7
DQogICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfcm0oc3JjLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNl
LCBkZXN0LmluZGV4LCBkZXN0LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjY0KEFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54b3Jx
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjY0
KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLnhvcnFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIHNyYy5pbmRleCwgc3JjLnNjYWxlLCBk
ZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
ZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaW0oaW1tLm1fdmFsdWUsIGRl
c3Qub2Zmc2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yNjQoVHJ1c3RlZElt
bTMyIGltbSwgQmFzZUluZGV4IGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci54b3Jx
X2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlLCBkZXN0LmluZGV4LCBkZXN0
LnNjYWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHhvcjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgc3JjRGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnhvcnFfaXIoaW1tLm1f
dmFsdWUsIHNyY0Rlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgeG9yNjQoVHJ1c3RlZEltbTY0IGlt
bSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hS
ZWdpc3RlcigpKTsNCiAgICAgICAgeG9yNjQoc2NyYXRjaFJlZ2lzdGVyKCksIHNyY0Rlc3QpOw0K
ICAgIH0NCg0KICAgIHZvaWQgbm90NjQoUmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAg
ICAgbV9hc3NlbWJsZXIubm90cV9yKHNyY0Rlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbm90NjQo
QWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubm90cV9tKGRlc3Qub2Zm
c2V0LCBkZXN0LmJhc2UpOw0KICAgIH0NCg0KICAgIHZvaWQgbm90NjQoQmFzZUluZGV4IGRlc3Qp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5ub3RxX20oZGVzdC5vZmZzZXQsIGRlc3QuYmFz
ZSwgZGVzdC5pbmRleCwgZGVzdC5zY2FsZSk7DQogICAgfQ0KDQogICAgdm9pZCBsb2FkNjQoSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1f
YXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7DQog
ICAgfQ0KDQogICAgdm9pZCBsb2FkNjQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSwgZGVzdCk7DQogICAgfQ0K
DQogICAgdm9pZCBsb2FkNjQoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgaWYgKGRlc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpDQogICAgICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZxX21FQVgoYWRkcmVzcyk7DQogICAgICAgIGVsc2Ugew0KICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBkZXN0KTsNCiAgICAgICAgICAgIGxv
YWQ2NChkZXN0LCBkZXN0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIERhdGFMYWJlbDMyIGxv
YWQ2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOw0KICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZxX21yX2Rpc3AzMihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkZXN0KTsNCiAg
ICAgICAgcmV0dXJuIERhdGFMYWJlbDMyKHRoaXMpOw0KICAgIH0NCiAgICANCiAgICBEYXRhTGFi
ZWxDb21wYWN0IGxvYWQ2NFdpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsN
CiAgICAgICAgbV9hc3NlbWJsZXIubW92cV9tcl9kaXNwOChhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIERhdGFMYWJlbENvbXBhY3QodGhpcyk7DQog
ICAgfQ0KDQogICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfcm0oc3JjLCBhZGRyZXNz
Lm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlNjQoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIu
bW92cV9ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHN0b3JlNjQoUmVnaXN0ZXJJ
RCBzcmMsIHZvaWQqIGFkZHJlc3MpDQogICAgew0KICAgICAgICBpZiAoc3JjID09IFg4NlJlZ2lz
dGVyczo6ZWF4KQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9FQVhtKGFkZHJlc3MpOw0K
ICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwg
c2NyYXRjaFJlZ2lzdGVyKCkpOw0KICAgICAgICAgICAgc3RvcmU2NChzcmMsIHNjcmF0Y2hSZWdp
c3RlcigpKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1t
MzIgaW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7
DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVl
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgdm9pZCog
YWRkcmVzcykNCiAgICB7DQogICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfMzJfNjQoaW1tLm1f
dmFsdWUpKSB7DQogICAgICAgICAgICBhdXRvIGFkZHJlc3NSZWcgPSBzY3JhdGNoUmVnaXN0ZXIo
KTsNCiAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1JlZyk7
DQogICAgICAgICAgICBzdG9yZTY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pihp
bW0ubV92YWx1ZSkpLCBhZGRyZXNzUmVnKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAg
fQ0KDQogICAgICAgIGF1dG8gc3JjID0gc2NyYXRjaFJlZ2lzdGVyKCk7DQogICAgICAgIG1vdmUo
aW1tLCBzcmMpOw0KICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplYXgpOw0KICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZxX0VBWG0oYWRkcmVzcyk7DQogICAgICAgIHN3YXAoc3JjLCBYODZS
ZWdpc3RlcnM6OmVheCk7DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBp
bW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgaWYgKENBTl9TSUdO
X0VYVEVORF8zMl82NChpbW0ubV92YWx1ZSkpIHsNCiAgICAgICAgICAgIHN0b3JlNjQoVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KGltbS5tX3ZhbHVlKSksIGFkZHJlc3MpOw0KICAg
ICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hS
ZWdpc3RlcigpKTsNCiAgICAgICAgc3RvcmU2NChzY3JhdGNoUmVnaXN0ZXIoKSwgYWRkcmVzcyk7
DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAg
ICAgICAgbV9hc3NlbWJsZXIubW92cV9ybShzY3JhdGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7DQogICAgfQ0K
ICAgIA0KICAgIHZvaWQgc3RvcmVaZXJvNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpDQogICAg
ew0KICAgICAgICBzdG9yZTY0KFRydXN0ZWRJbW0zMigwKSwgYWRkcmVzcyk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgc3RvcmVaZXJvNjQoQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAg
ICBzdG9yZTY0KFRydXN0ZWRJbW0zMigwKSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIERh
dGFMYWJlbDMyIHN0b3JlNjRXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOw0KICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZxX3JtX2Rpc3AzMihzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOw0KICAgICAgICByZXR1cm4gRGF0YUxhYmVsMzIodGhpcyk7DQogICAgfQ0KDQogICAg
dm9pZCBzd2FwNjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLnhjaGdxX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBz
d2FwNjQoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNz
ZW1ibGVyLnhjaGdxX3JtKHNyYywgZGVzdC5vZmZzZXQsIGRlc3QuYmFzZSk7DQogICAgfQ0KDQog
ICAgdm9pZCBtb3ZlNjRUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JyKHNyYywgZGVzdCk7DQogICAgfQ0K
DQogICAgdm9pZCBtb3ZlRG91YmxlVG82NChGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JyKHNyYywgZGVzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBjb21wYXJlNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAg
ICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKSB7DQogICAgICAgICAgICBpZiAoYXV0byByZXN1bHRD
b25kaXRpb24gPSBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KGNvbmQpKSB7DQogICAgICAg
ICAgICAgICAgdGVzdDY0KCpyZXN1bHRDb25kaXRpb24sIGxlZnQsIGxlZnQsIGRlc3QpOw0KICAg
ICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAg
IG1fYXNzZW1ibGVyLmNtcHFfaXIocmlnaHQubV92YWx1ZSwgbGVmdCk7DQogICAgICAgIHNldDMy
KHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgY29tcGFy
ZTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklE
IHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jbXBx
X3JyKHJpZ2h0LCBsZWZ0KTsNCiAgICAgICAgc2V0MzIoeDg2Q29uZGl0aW9uKGNvbmQpLCBkZXN0
KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIuY21wcV9ycihyaWdodCwgbGVmdCk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1i
bGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaDY0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpDQogICAgew0KICAgICAgICBpZiAoIXJpZ2h0Lm1fdmFsdWUpIHsNCiAgICAgICAgICAg
IGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3Qo
Y29uZCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCgqcmVzdWx0Q29uZGl0
aW9uLCBsZWZ0LCBsZWZ0KTsNCiAgICAgICAgfQ0KICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX2ly
KHJpZ2h0Lm1fdmFsdWUsIGxlZnQpOw0KICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
Q0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2g2NChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTY0IHJpZ2h0
KQ0KICAgIHsNCiAgICAgICAgaWYgKCgoY29uZCA9PSBFcXVhbCkgfHwgKGNvbmQgPT0gTm90RXF1
YWwpKSAmJiAhcmlnaHQubV92YWx1ZSkgew0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFf
cnIobGVmdCwgbGVmdCk7DQogICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgICAgIH0NCiAgICAgICAgbW92ZShyaWdodCwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOw0KICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpDQogICAgew0KICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBxX21yKHJpZ2h0Lm9mZnNldCwgcmlnaHQuYmFzZSwgbGVmdCk7
DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpDQogICAgew0KICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAg
ICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCByaWdo
dCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1i
bGVyLmNtcHFfcm0ocmlnaHQsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOw0KICAgICAgICByZXR1
cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQog
ICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuY21wcV9pbShy
aWdodC5tX3ZhbHVlLCBsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlKTsNCiAgICAgICAgcmV0dXJuIEp1
bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1
bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0
ZWRJbW02NCByaWdodCkNCiAgICB7DQogICAgICAgIG1vdmUocmlnaHQsIHNjcmF0Y2hSZWdpc3Rl
cigpKTsNCiAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rl
cigpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmlnaHQpDQogICAgew0KICAgICAgICBt
X2Fzc2VtYmxlci5jbXBxX3JtKHJpZ2h0LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOw0KICAgIH0NCiAgICANCiAgICBKdW1wIGJy
YW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJl
Z2lzdGVySUQgcmlnaHQpDQogICAgew0KICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgc2NyYXRj
aFJlZ2lzdGVyKCkpOw0KICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgc2NyYXRjaFJlZ2lz
dGVyKCksIHJpZ2h0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0KTsNCiAgICB9DQoNCiAgICBK
dW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBU
cnVzdGVkSW1tUHRyIHJpZ2h0KQ0KICAgIHsNCiAgICAgICAgbW92ZShyaWdodCwgc2NyYXRjaFJl
Z2lzdGVyKCkpOw0KICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIHNjcmF0Y2hS
ZWdpc3RlcigpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFRlc3Q2NChSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLnRlc3RxX3JyKHJlZywgbWFzayk7DQogICAgICAgIHJldHVybiBKdW1wKG1f
YXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQogICAgDQogICAgSnVt
cCBicmFuY2hUZXN0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpDQogICAgew0KICAgICAgICANCiAgICAg
ICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Rx
X3JyKHJlZywgcmVnKTsNCiAgICAgICAgZWxzZSBpZiAoKG1hc2subV92YWx1ZSAmIH4weDdmKSA9
PSAwKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaThyKG1hc2subV92YWx1ZSwgcmVn
KTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdHFfaTMycihtYXNr
Lm1fdmFsdWUsIHJlZyk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFRlc3Q2NChSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW02NCBtYXNrKQ0KICAgIHsN
CiAgICAgICAgbW92ZShtYXNrLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIHJldHVybiBi
cmFuY2hUZXN0NjQoY29uZCwgcmVnLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgfQ0KDQogICAg
SnVtcCBicmFuY2hUZXN0Qml0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgdGVz
dFZhbHVlLCBUcnVzdGVkSW1tMzIgYml0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYnR3
X2lyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihiaXQubV92YWx1ZSkgJSA2NCwgdGVzdFZhbHVlKTsN
CiAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykNCiAgICAgICAgICAgIHJldHVybiBKdW1wKG1f
YXNzZW1ibGVyLmpiKCkpOw0KICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQ0KICAgICAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuamFlKCkpOw0KICAgICAgICBkbyB7IFdURjo6aXNJbnRl
Z3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0
aEluZm8oMTE3NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIiwgIF9fRlVOQ1RJT05fXyAg
LCA0MCApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hUZXN0Qml0
NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgdGVzdFZhbHVlLCBUcnVzdGVkSW1tMzIg
Yml0KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYnR3X2ltKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihiaXQubV92YWx1ZSkgJSA2NCwgdGVzdFZhbHVlLm9mZnNldCwgdGVzdFZhbHVlLmJhc2Up
Ow0KICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKQ0KICAgICAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuamIoKSk7DQogICAgICAgIGlmIChjb25kID09IFplcm8pDQogICAgICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qYWUoKSk7DQogICAgICAgIGRvIHsgV1RGOjppc0lu
dGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hX
aXRoSW5mbygxMTg3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyWDg2XzY0LmgiLCAgX19GVU5DVElPTl9f
ICAsIDQxICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFRlc3RC
aXQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgYml0
KQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIuYnR3X2lyKGJpdCwgcmVnKTsNCiAgICAgICAg
aWYgKGNvbmQgPT0gTm9uWmVybykNCiAgICAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVy
LmpiKCkpOw0KICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQ0KICAgICAgICAgICAgcmV0dXJuIEp1
bXAobV9hc3NlbWJsZXIuamFlKCkpOw0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9p
bnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTE5
NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNz
ZW1ibGVyXFxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIiwgIF9fRlVOQ1RJT05fXyAgLCA0MiApOyB9
IHdoaWxlIChmYWxzZSk7DQogICAgfQ0KDQogICAgdm9pZCB0ZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0
KQ0KICAgIHsNCiAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkNCiAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnRlc3RxX3JyKHJlZywgcmVnKTsNCiAgICAgICAgZWxzZSBpZiAoKG1hc2subV92
YWx1ZSAmIH4weDdmKSA9PSAwKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaThyKG1h
c2subV92YWx1ZSwgcmVnKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIu
dGVzdHFfaTMycihtYXNrLm1fdmFsdWUsIHJlZyk7DQogICAgICAgIHNldDMyKHg4NkNvbmRpdGlv
bihjb25kKSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB0ZXN0NjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkN
CiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKHJlZywgbWFzayk7DQogICAgICAg
IHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFu
Y2hUZXN0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBU
cnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpDQogICAgew0KICAgICAgICBsb2Fk
NjQoYWRkcmVzcy5tX3B0ciwgc2NyYXRjaFJlZ2lzdGVyKCkpOw0KICAgICAgICByZXR1cm4gYnJh
bmNoVGVzdDY0KGNvbmQsIHNjcmF0Y2hSZWdpc3RlcigpLCBtYXNrKTsNCiAgICB9DQoNCiAgICBK
dW1wIGJyYW5jaFRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBU
cnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpDQogICAgew0KICAgICAgICBpZiAo
bWFzay5tX3ZhbHVlID09IC0xKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcV9pbSgwLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAg
bV9hc3NlbWJsZXIudGVzdHFfaTMybShtYXNrLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRy
ZXNzLmJhc2UpOw0KICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0
aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hUZXN0NjQoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZWcpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci50ZXN0cV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
Ow0KICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQp
KSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hUZXN0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
DQogICAgew0KICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQ0KICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21wcV9pbSgwLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9hc3Nl
bWJsZXIudGVzdHFfaTMybShtYXNrLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOw0KICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQoNCiAgICBKdW1w
IGJyYW5jaEFkZDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBhZGQ2NChpbW0sIGRlc3QpOw0KICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0K
DQogICAgSnVtcCBicmFuY2hBZGQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlm
IChzcmMxID09IGRlc3QpDQogICAgICAgICAgICByZXR1cm4gYnJhbmNoQWRkNjQoY29uZCwgc3Jj
MiwgZGVzdCk7DQogICAgICAgIG1vdmUoc3JjMiwgZGVzdCk7DQogICAgICAgIHJldHVybiBicmFu
Y2hBZGQ2NChjb25kLCBzcmMxLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEFkZDY0
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChvcDIgPT0gZGVzdCkNCiAgICAgICAgICAg
IHJldHVybiBicmFuY2hBZGQ2NChjb25kLCBvcDEsIGRlc3QpOw0KICAgICAgICBpZiAob3AxLmJh
c2UgPT0gZGVzdCkgew0KICAgICAgICAgICAgbG9hZDMyKG9wMSwgZGVzdCk7DQogICAgICAgICAg
ICByZXR1cm4gYnJhbmNoQWRkNjQoY29uZCwgb3AyLCBkZXN0KTsNCiAgICAgICAgfQ0KICAgICAg
ICBtb3ZlKG9wMiwgZGVzdCk7DQogICAgICAgIHJldHVybiBicmFuY2hBZGQ2NChjb25kLCBvcDEs
IGRlc3QpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoQWRkNjQoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjMSwgQWRkcmVzcyBzcmMyLCBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICByZXR1cm4gYnJhbmNoQWRkNjQoY29uZCwgc3JjMiwgc3JjMSwgZGVzdCk7DQog
ICAgfQ0KDQogICAgSnVtcCBicmFuY2hBZGQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGFkZDY0KHNyYywgZGVz
dCk7DQogICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29u
ZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEFkZDY0KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgYWRkNjQoc3Jj
LCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlv
bihjb25kKSkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoTXVsNjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBt
dWw2NChzcmMsIGRlc3QpOw0KICAgICAgICBpZiAoY29uZCAhPSBPdmVyZmxvdykNCiAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKGRlc3QsIGRlc3QpOw0KICAgICAgICByZXR1cm4gSnVt
cChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAgSnVt
cCBicmFuY2hNdWw2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdp
c3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMxID09
IGRlc3QpDQogICAgICAgICAgICByZXR1cm4gYnJhbmNoTXVsNjQoY29uZCwgc3JjMiwgZGVzdCk7
DQogICAgICAgIG1vdmUoc3JjMiwgZGVzdCk7DQogICAgICAgIHJldHVybiBicmFuY2hNdWw2NChj
b25kLCBzcmMxLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFN1YjY0KFJlc3VsdENv
bmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0K
ICAgICAgICBzdWI2NChpbW0sIGRlc3QpOw0KICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hTdWI2
NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkN
CiAgICB7DQogICAgICAgIHN1YjY0KHNyYywgZGVzdCk7DQogICAgICAgIHJldHVybiBKdW1wKG1f
YXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAgICBKdW1wIGJy
YW5jaFN1YjY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFRydXN0ZWRJ
bW0zMiBzcmMyLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtb3ZlKHNyYzEsIGRl
c3QpOw0KICAgICAgICByZXR1cm4gYnJhbmNoU3ViNjQoY29uZCwgc3JjMiwgZGVzdCk7DQogICAg
fQ0KDQogICAgSnVtcCBicmFuY2hOZWc2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAgbmVnNjQoc3JjRGVzdCk7DQogICAgICAgIHJldHVy
biBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsNCiAgICB9DQoNCiAg
ICB2b2lkIG1vdmVDb25kaXRpb25hbGx5NjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX3JyKHJpZ2h0LCBsZWZ0KTsN
CiAgICAgICAgY21vdih4ODZDb25kaXRpb24oY29uZCksIHNyYywgZGVzdCk7DQogICAgfQ0KDQog
ICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseTY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIHRoZW5DYXNlLCBSZWdp
c3RlcklEIGVsc2VDYXNlLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2Vt
Ymxlci5jbXBxX3JyKHJpZ2h0LCBsZWZ0KTsNCg0KICAgICAgICBpZiAodGhlbkNhc2UgIT0gZGVz
dCAmJiBlbHNlQ2FzZSAhPSBkZXN0KSB7DQogICAgICAgICAgICBtb3ZlKGVsc2VDYXNlLCBkZXN0
KTsNCiAgICAgICAgICAgIGVsc2VDYXNlID0gZGVzdDsNCiAgICAgICAgfQ0KDQogICAgICAgIGlm
IChlbHNlQ2FzZSA9PSBkZXN0KQ0KICAgICAgICAgICAgY21vdih4ODZDb25kaXRpb24oY29uZCks
IHRoZW5DYXNlLCBkZXN0KTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgY21vdih4ODZDb25k
aXRpb24oaW52ZXJ0KGNvbmQpKSwgZWxzZUNhc2UsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQg
bW92ZUNvbmRpdGlvbmFsbHk2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
bGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIHRoZW5DYXNlLCBSZWdpc3RlcklE
IGVsc2VDYXNlLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoIXJpZ2h0Lm1f
dmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChhdXRvIHJlc3VsdENvbmRpdGlvbiA9IGNvbW11dGVD
b21wYXJlVG9aZXJvSW50b1Rlc3QoY29uZCkpIHsNCiAgICAgICAgICAgICAgICBtb3ZlQ29uZGl0
aW9uYWxseVRlc3Q2NCgqcmVzdWx0Q29uZGl0aW9uLCBsZWZ0LCBsZWZ0LCB0aGVuQ2FzZSwgZWxz
ZUNhc2UsIGRlc3QpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfQ0KDQogICAgICAgIG1fYXNzZW1ibGVyLmNtcHFfaXIocmlnaHQubV92YWx1ZSwgbGVm
dCk7DQoNCiAgICAgICAgaWYgKHRoZW5DYXNlICE9IGRlc3QgJiYgZWxzZUNhc2UgIT0gZGVzdCkg
ew0KICAgICAgICAgICAgbW92ZShlbHNlQ2FzZSwgZGVzdCk7DQogICAgICAgICAgICBlbHNlQ2Fz
ZSA9IGRlc3Q7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZWxzZUNhc2UgPT0gZGVzdCkNCiAg
ICAgICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGNvbmQpLCB0aGVuQ2FzZSwgZGVzdCk7DQogICAg
ICAgIGVsc2UNCiAgICAgICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGludmVydChjb25kKSksIGVs
c2VDYXNlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5VGVzdDY0
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHRlc3RSZWcsIFJlZ2lzdGVySUQgbWFz
aywgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNz
ZW1ibGVyLnRlc3RxX3JyKHRlc3RSZWcsIG1hc2spOw0KICAgICAgICBjbW92KHg4NkNvbmRpdGlv
bihjb25kKSwgc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5
VGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQsIFJlZ2lzdGVySUQgdGhlbkNhc2UsIFJlZ2lzdGVySUQgZWxzZUNhc2UsIFJlZ2lzdGVy
SUQgZGVzdCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0K
DQogICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKHJpZ2h0LCBsZWZ0KTsNCg0KICAgICAgICBp
ZiAodGhlbkNhc2UgIT0gZGVzdCAmJiBlbHNlQ2FzZSAhPSBkZXN0KSB7DQogICAgICAgICAgICBt
b3ZlKGVsc2VDYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIGVsc2VDYXNlID0gZGVzdDsNCiAgICAg
ICAgfQ0KDQogICAgICAgIGlmIChlbHNlQ2FzZSA9PSBkZXN0KQ0KICAgICAgICAgICAgY21vdih4
ODZDb25kaXRpb24oY29uZCksIHRoZW5DYXNlLCBkZXN0KTsNCiAgICAgICAgZWxzZQ0KICAgICAg
ICAgICAgY21vdih4ODZDb25kaXRpb24oaW52ZXJ0KGNvbmQpKSwgZWxzZUNhc2UsIGRlc3QpOw0K
ICAgIH0NCiAgICANCiAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5VGVzdDY0KFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIHRlc3RSZWcsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIGlmICht
YXNrLm1fdmFsdWUgPT0gLTEpDQogICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycih0ZXN0
UmVnLCB0ZXN0UmVnKTsNCiAgICAgICAgZWxzZSBpZiAoKG1hc2subV92YWx1ZSAmIH4weDdmKSA9
PSAwKQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIudGVzdGJfaThyKG1hc2subV92YWx1ZSwgdGVz
dFJlZyk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX2kzMnIo
bWFzay5tX3ZhbHVlLCB0ZXN0UmVnKTsNCiAgICAgICAgY21vdih4ODZDb25kaXRpb24oY29uZCks
IHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3ZlQ29uZGl0aW9uYWxseVRlc3Q2NChS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCB0ZXN0UmVnLCBUcnVzdGVkSW1tMzIgbWFz
aywgUmVnaXN0ZXJJRCB0aGVuQ2FzZSwgUmVnaXN0ZXJJRCBlbHNlQ2FzZSwgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAg
ICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRl
c3RxX3JyKHRlc3RSZWcsIHRlc3RSZWcpOw0KICAgICAgICBlbHNlIGlmICghKG1hc2subV92YWx1
ZSAmIH4weDdmKSkNCiAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RiX2k4cihtYXNrLm1fdmFs
dWUsIHRlc3RSZWcpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0
cV9pMzJyKG1hc2subV92YWx1ZSwgdGVzdFJlZyk7DQoNCiAgICAgICAgaWYgKHRoZW5DYXNlICE9
IGRlc3QgJiYgZWxzZUNhc2UgIT0gZGVzdCkgew0KICAgICAgICAgICAgbW92ZShlbHNlQ2FzZSwg
ZGVzdCk7DQogICAgICAgICAgICBlbHNlQ2FzZSA9IGRlc3Q7DQogICAgICAgIH0NCg0KICAgICAg
ICBpZiAoZWxzZUNhc2UgPT0gZGVzdCkNCiAgICAgICAgICAgIGNtb3YoeDg2Q29uZGl0aW9uKGNv
bmQpLCB0aGVuQ2FzZSwgZGVzdCk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGNtb3YoeDg2
Q29uZGl0aW9uKGludmVydChjb25kKSksIGVsc2VDYXNlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBMZWZ0VHlwZSwgdHlwZW5hbWUgUmlnaHRUeXBlPg0KICAgIHZvaWQg
bW92ZURvdWJsZUNvbmRpdGlvbmFsbHk2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIExlZnRU
eXBlIGxlZnQsIFJpZ2h0VHlwZSByaWdodCwgRlBSZWdpc3RlcklEIHRoZW5DYXNlLCBGUFJlZ2lz
dGVySUQgZWxzZUNhc2UsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgc3RhdGlj
X2Fzc2VydCghc3RkOjppc19zYW1lPExlZnRUeXBlLCBGUFJlZ2lzdGVySUQ+Ojp2YWx1ZSAmJiAh
c3RkOjppc19zYW1lPFJpZ2h0VHlwZSwgRlBSZWdpc3RlcklEPjo6dmFsdWUsICJPbmUgb2YgdGhl
IHRlc3RlZCBhcmd1bWVudCBjb3VsZCBiZSBhbGlhc2VkIG9uIGRlc3QuIFVzZSBtb3ZlRG91Ymxl
Q29uZGl0aW9uYWxseURvdWJsZSgpLiIpOw0KDQogICAgICAgIGlmICh0aGVuQ2FzZSAhPSBkZXN0
ICYmIGVsc2VDYXNlICE9IGRlc3QpIHsNCiAgICAgICAgICAgIG1vdmVEb3VibGUoZWxzZUNhc2Us
IGRlc3QpOw0KICAgICAgICAgICAgZWxzZUNhc2UgPSBkZXN0Ow0KICAgICAgICB9DQoNCiAgICAg
ICAgaWYgKGVsc2VDYXNlID09IGRlc3QpIHsNCiAgICAgICAgICAgIEp1bXAgZmFsc2VDYXNlID0g
YnJhbmNoNjQoaW52ZXJ0KGNvbmQpLCBsZWZ0LCByaWdodCk7DQogICAgICAgICAgICBtb3ZlRG91
YmxlKHRoZW5DYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIGZhbHNlQ2FzZS5saW5rKHRoaXMpOw0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgSnVtcCB0cnVlQ2FzZSA9IGJyYW5jaDY0KGNv
bmQsIGxlZnQsIHJpZ2h0KTsNCiAgICAgICAgICAgIG1vdmVEb3VibGUoZWxzZUNhc2UsIGRlc3Qp
Ow0KICAgICAgICAgICAgdHJ1ZUNhc2UubGluayh0aGlzKTsNCiAgICAgICAgfQ0KICAgIH0NCg0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlc3RUeXBlLCB0eXBlbmFtZSBNYXNrVHlwZT4NCiAgICB2
b2lkIG1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBU
ZXN0VHlwZSB0ZXN0LCBNYXNrVHlwZSBtYXNrLCBGUFJlZ2lzdGVySUQgdGhlbkNhc2UsIEZQUmVn
aXN0ZXJJRCBlbHNlQ2FzZSwgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWU8VGVzdFR5cGUsIEZQUmVnaXN0ZXJJRD46OnZhbHVlICYm
ICFzdGQ6OmlzX3NhbWU8TWFza1R5cGUsIEZQUmVnaXN0ZXJJRD46OnZhbHVlLCAiT25lIG9mIHRo
ZSB0ZXN0ZWQgYXJndW1lbnQgY291bGQgYmUgYWxpYXNlZCBvbiBkZXN0LiBVc2UgbW92ZURvdWJs
ZUNvbmRpdGlvbmFsbHlEb3VibGUoKS4iKTsNCg0KICAgICAgICBpZiAoZWxzZUNhc2UgPT0gZGVz
dCAmJiBpc0ludmVydGlibGUoY29uZCkpIHsNCiAgICAgICAgICAgIEp1bXAgZmFsc2VDYXNlID0g
YnJhbmNoVGVzdDY0KGludmVydChjb25kKSwgdGVzdCwgbWFzayk7DQogICAgICAgICAgICBtb3Zl
RG91YmxlKHRoZW5DYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIGZhbHNlQ2FzZS5saW5rKHRoaXMp
Ow0KICAgICAgICB9IGVsc2UgaWYgKHRoZW5DYXNlID09IGRlc3QpIHsNCiAgICAgICAgICAgIEp1
bXAgdHJ1ZUNhc2UgPSBicmFuY2hUZXN0NjQoY29uZCwgdGVzdCwgbWFzayk7DQogICAgICAgICAg
ICBtb3ZlRG91YmxlKGVsc2VDYXNlLCBkZXN0KTsNCiAgICAgICAgICAgIHRydWVDYXNlLmxpbmso
dGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBKdW1wIHRydWVDYXNlID0gYnJhbmNoVGVzdDY0
KGNvbmQsIHRlc3QsIG1hc2spOw0KICAgICAgICBtb3ZlRG91YmxlKGVsc2VDYXNlLCBkZXN0KTsN
CiAgICAgICAgSnVtcCBmYWxzZUNhc2UgPSBqdW1wKCk7DQogICAgICAgIHRydWVDYXNlLmxpbmso
dGhpcyk7DQogICAgICAgIG1vdmVEb3VibGUodGhlbkNhc2UsIGRlc3QpOw0KICAgICAgICBmYWxz
ZUNhc2UubGluayh0aGlzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhYm9ydFdpdGhSZWFzb24o
QWJvcnRSZWFzb24gcmVhc29uKQ0KICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVh
c29uKSwgWDg2UmVnaXN0ZXJzOjpyMTEpOw0KICAgICAgICBicmVha3BvaW50KCk7DQogICAgfQ0K
DQogICAgdm9pZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uLCBpbnRwdHJfdCBt
aXNjKQ0KICAgIHsNCiAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQobWlzYyksIFg4NlJlZ2lzdGVy
czo6cjEwKTsNCiAgICAgICAgYWJvcnRXaXRoUmVhc29uKHJlYXNvbik7DQogICAgfQ0KDQogICAg
Q29udmVydGlibGVMb2FkTGFiZWwgY29udmVydGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVz
dWx0ID0gQ29udmVydGlibGVMb2FkTGFiZWwodGhpcyk7DQogICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZGVzdCk7DQogICAgICAgIHJldHVy
biByZXN1bHQ7DQogICAgfQ0KDQogICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3Rl
ZEltbVB0ciBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHBh
ZEJlZm9yZVBhdGNoKCk7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbml0aWFsVmFs
dWUuYXNJbnRwdHIoKSwgZGVzdCk7DQogICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7
DQogICAgfQ0KDQogICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyIGlu
aXRpYWxWYWx1ZSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgcGFkQmVmb3JlUGF0
Y2goKTsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pNjRyKGluaXRpYWxWYWx1ZS5tX3ZhbHVl
LCBkZXN0KTsNCiAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsNCiAgICB9DQoNCiAg
ICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlh
bFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKQ0KICAgIHsNCiAgICAgICAgZGF0
YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVy
KCkpOw0KICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVy
KCkpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3Rl
ZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cikpDQogICAg
ew0KICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFM
YWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQ0K
ICAgIHsNCiAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsNCiAgICAgICAgbV9hc3NlbWJsZXIubW92
bF9pMzJyKGluaXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAg
ICAgICAgZGF0YUxhYmVsID0gRGF0YUxhYmVsMzIodGhpcyk7DQogICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgfQ0KDQogICAgRGF0YUxh
YmVsUHRyIHN0b3JlUHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW5pdGlhbFZhbHVlLCBJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9
IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAg
IHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyKCksIGFkZHJlc3MpOw0KICAgICAgICByZXR1cm4gbGFi
ZWw7DQogICAgfQ0KDQogICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2g2NChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tNjQgaW1tKQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoNjQoY29uZCwgcmVnLCBpbW0p
KTsNCiAgICB9DQoNCiAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDY0KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoNjQoY29uZCwgbGVmdCwgcmln
aHQpKTsNCiAgICB9DQogICAgDQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJy
YW5jaDg7DQogICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1
dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkNCiAgICB7DQogICAgICAgIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIHNjcmF0
Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpi
cmFuY2g4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCByaWdodCk7DQogICAgfQ0K
ICAgIA0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0ODsNCiAg
ICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBFeHRlbmRlZEFkZHJlc3Mg
YWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQ0KICAgIHsNCiAg
ICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVl
KSk7DQogICAgICAgIFRydXN0ZWRJbW1QdHIgYWRkcihyZWludGVycHJldF9jYXN0PHZvaWQqPihh
ZGRyZXNzLm9mZnNldCkpOw0KICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShh
ZGRyLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQmFzZUluZGV4KHNjcmF0Y2hSZWdpc3RlcigpLCBh
ZGRyZXNzLmJhc2UsIFRpbWVzT25lKSwgbWFzazgpOw0KICAgIH0NCiAgICANCiAgICBKdW1wIGJy
YW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQ0KICAgIHsNCiAgICAgICAgVHJ1
c3RlZEltbTMyIG1hc2s4KHN0YXRpY19jYXN0PGludDhfdD4obWFzay5tX3ZhbHVlKSk7DQogICAg
ICAgIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjptb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5t
X3B0ciksIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwg
bWFzazgpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHhjaGc2NChSZWdpc3RlcklEIHJlZywgQWRk
cmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCB4Y2hn
NjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9h
c3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNT
dHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHJl
c3VsdCkNCiAgICB7DQogICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJl
c3VsdCwgcmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdW
YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOw0KICAgIH0NCg0KICAgIHZv
aWQgYXRvbWljU3Ryb25nQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhw
ZWN0ZWRBbmRSZXN1bHQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBS
ZWdpc3RlcklEIHJlc3VsdCkNCiAgICB7DQogICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25kLCBl
eHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4
Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7IH0pOw0KICAgIH0NCg0KICAgIHZvaWQgYXRvbWljU3Ryb25n
Q0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwg
QWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25nQ0FTKGV4cGVjdGVk
QW5kUmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2VtYmxlci5jbXB4Y2hncV9ybShuZXdWYWx1
ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOw0KICAgIH0NCg0KICAgIHZvaWQg
YXRvbWljU3Ryb25nQ0FTNjQoUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJ
RCBuZXdWYWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBhdG9taWNTdHJv
bmdDQVMoZXhwZWN0ZWRBbmRSZXN1bHQsIGFkZHJlc3MsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhj
aGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlKTsgfSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hBdG9taWNT
dHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZFJl
c3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUyhjb25kLCBleHBlY3RlZEFuZFJlc3VsdCwg
YWRkcmVzcywgWyZdIHsgbV9hc3NlbWJsZXIuY21weGNoZ3Ffcm0obmV3VmFsdWUsIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UpOyB9KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEF0b21p
Y1N0cm9uZ0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
UmVzdWx0LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQog
ICAgICAgIHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVMoY29uZCwgZXhwZWN0ZWRBbmRSZXN1
bHQsIGFkZHJlc3MsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRy
ZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsg
fSk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUs
IEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCByZXN1bHQpDQogICAgew0KICAgICAgICBhdG9t
aWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJlZCwgbmV3VmFsdWUsIGFkZHJl
c3MsIHJlc3VsdCk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNXZWFrQ0FTNjQoU3RhdHVzQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIFJlZ2lzdGVySUQg
bmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdCkNCiAgICB7DQog
ICAgICAgIGF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdW
YWx1ZSwgYWRkcmVzcywgcmVzdWx0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEF0b21pY1dl
YWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2Ji
ZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJl
cmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hBdG9taWNX
ZWFrQ0FTNjQoU3RhdHVzQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgZXhwZWN0ZWRBbmRDbG9i
YmVyZWQsIFJlZ2lzdGVySUQgbmV3VmFsdWUsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIGJyYW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xv
YmJlcmVkLCBuZXdWYWx1ZSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgdm9pZCBhdG9taWNSZWxh
eGVkV2Vha0NBUzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5k
Q2xvYmJlcmVkLCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVy
SUQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25nQ0FTNjQoY29uZCwgZXhwZWN0
ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1bHQpOw0KICAgIH0NCg0KICAg
IHZvaWQgYXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgYXRvbWljU3Ryb25n
Q0FTNjQoY29uZCwgZXhwZWN0ZWRBbmRDbG9iYmVyZWQsIG5ld1ZhbHVlLCBhZGRyZXNzLCByZXN1
bHQpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoQXRvbWljUmVsYXhlZFdlYWtDQVM2NChTdGF0
dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBleHBlY3RlZEFuZENsb2JiZXJlZCwgUmVnaXN0
ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJy
YW5jaEF0b21pY1N0cm9uZ0NBUzY0KGNvbmQsIGV4cGVjdGVkQW5kQ2xvYmJlcmVkLCBuZXdWYWx1
ZSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hBdG9taWNSZWxheGVkV2Vha0NB
UzY0KFN0YXR1c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kQ2xvYmJlcmVk
LCBSZWdpc3RlcklEIG5ld1ZhbHVlLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAg
IHJldHVybiBicmFuY2hBdG9taWNTdHJvbmdDQVM2NChjb25kLCBleHBlY3RlZEFuZENsb2JiZXJl
ZCwgbmV3VmFsdWUsIGFkZHJlc3MpOw0KICAgIH0NCg0KICAgIHZvaWQgYXRvbWljQWRkNjQoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOw0KICAgICAgICBhZGQ2NChpbW0sIGFkZHJlc3MpOw0KICAgIH0NCiAgICANCiAg
ICB2b2lkIGF0b21pY0FkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0K
ICAgIHsNCiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBhZGQ2NChpbW0sIGFk
ZHJlc3MpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY0FkZDY0KFJlZ2lzdGVySUQgcmVn
LCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQog
ICAgICAgIGFkZDY0KHJlZywgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWlj
QWRkNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBhZGQ2NChyZWcsIGFkZHJlc3MpOw0KICAgIH0N
CiAgICANCiAgICB2b2lkIGF0b21pY1N1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRk
cmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgc3ViNjQo
aW1tLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNTdWI2NChUcnVzdGVk
SW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVy
LmxvY2soKTsNCiAgICAgICAgc3ViNjQoaW1tLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAg
dm9pZCBhdG9taWNTdWI2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBzdWI2NChyZWcsIGFkZHJlc3Mp
Ow0KICAgIH0NCiAgICANCiAgICB2b2lkIGF0b21pY1N1YjY0KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAg
ICAgc3ViNjQocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNBbmQ2
NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fz
c2VtYmxlci5sb2NrKCk7DQogICAgICAgIGFuZDY0KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgYXRvbWljQW5kNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJl
c3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIGFuZDY0KGlt
bSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljQW5kNjQoUmVnaXN0ZXJJ
RCByZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2so
KTsNCiAgICAgICAgYW5kNjQocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBh
dG9taWNBbmQ2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAg
ICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIGFuZDY0KHJlZywgYWRkcmVzcyk7DQog
ICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljT3I2NChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIG9y
NjQoaW1tLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNPcjY0KFRydXN0
ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgbV9hc3NlbWJs
ZXIubG9jaygpOw0KICAgICAgICBvcjY0KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsN
CiAgICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBvcjY0KHJlZywgYWRkcmVzcyk7
DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljT3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUlu
ZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAg
IG9yNjQocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9taWNYb3I2NChU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2NrKCk7DQogICAgICAgIHhvcjY0KGltbSwgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgYXRvbWljWG9yNjQoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHhvcjY0KGltbSwg
YWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWG9yNjQoUmVnaXN0ZXJJRCBy
ZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsN
CiAgICAgICAgeG9yNjQocmVnLCBhZGRyZXNzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhdG9t
aWNYb3I2NChSZWdpc3RlcklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAgICAg
ICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIHhvcjY0KHJlZywgYWRkcmVzcyk7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgYXRvbWljTmVnNjQoQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBuZWc2NChhZGRyZXNzKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBhdG9taWNOZWc2NChCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgbmVnNjQoYWRkcmVzcyk7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgYXRvbWljTm90NjQoQWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBub3Q2NChhZGRyZXNzKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBhdG9taWNOb3Q2NChCYXNlSW5kZXggYWRkcmVzcykNCiAgICB7DQog
ICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgbm90NjQoYWRkcmVzcyk7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNz
IGFkZHJlc3MpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5sb2NrKCk7DQogICAgICAgIG1f
YXNzZW1ibGVyLnhhZGRxX3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7DQog
ICAgfQ0KICAgIA0KICAgIHZvaWQgYXRvbWljWGNoZ0FkZDY0KFJlZ2lzdGVySUQgcmVnLCBCYXNl
SW5kZXggYWRkcmVzcykNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAg
ICAgbV9hc3NlbWJsZXIueGFkZHFfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBh
dG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAg
ICAgIG1fYXNzZW1ibGVyLmxvY2soKTsNCiAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVn
LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBh
dG9taWNYY2hnNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAg
ICAgICAgbV9hc3NlbWJsZXIubG9jaygpOw0KICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShy
ZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Mu
c2NhbGUpOw0KICAgIH0NCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE4MzEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1i
bGVyXFxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIg0KDQogICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRv
VWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAg
IG1fYXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IHRydW5jYXRlRG91YmxlVG9JbnQ2NChGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7DQog
ICAgfQ0KDQogICAgDQogICAgDQogICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDY0KEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEIHNjcmF0Y2gsIEZQUmVn
aXN0ZXJJRCBpbnQ2NE1pbikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCg0KICAgICAgICBKdW1wIGxhcmdlID0gYnJh
bmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIHNyYywgaW50NjRN
aW4pOw0KICAgICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7DQogICAg
ICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsNCiAgICAgICAgbGFyZ2UubGluayh0aGlzKTsNCiAgICAg
ICAgbW92ZURvdWJsZShzcmMsIHNjcmF0Y2gpOw0KICAgICAgICBtX2Fzc2VtYmxlci5zdWJzZF9y
cihpbnQ2NE1pbiwgc2NyYXRjaCk7DQogICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cigweDgw
MDAwMDAwMDAwMDAwMDAsIHNjcmF0Y2hSZWdpc3RlcigpKTsNCiAgICAgICAgbV9hc3NlbWJsZXIu
Y3Z0dHNkMnNpcV9ycihzY3JhdGNoLCBkZXN0KTsNCiAgICAgICAgbV9hc3NlbWJsZXIub3JxX3Jy
KHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsNCiAgICAgICAgZG9uZS5saW5rKHRoaXMpOw0KICAg
IH0NCg0KICAgIHZvaWQgdHJ1bmNhdGVGbG9hdFRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVyLmN2dHRzczJzaXFfcnIo
c3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHRydW5jYXRlRmxvYXRUb0ludDY0KEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1fYXNzZW1ibGVy
LmN2dHRzczJzaXFfcnIoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICB2b2lk
IHRydW5jYXRlRmxvYXRUb1VpbnQ2NChGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qs
IEZQUmVnaXN0ZXJJRCBzY3JhdGNoLCBGUFJlZ2lzdGVySUQgaW50NjRNaW4pDQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAg
DQoNCiAgICAgICAgSnVtcCBsYXJnZSA9IGJyYW5jaEZsb2F0KERvdWJsZUdyZWF0ZXJUaGFuT3JF
cXVhbEFuZE9yZGVyZWQsIHNyYywgaW50NjRNaW4pOw0KICAgICAgICBtX2Fzc2VtYmxlci5jdnR0
c3Myc2lxX3JyKHNyYywgZGVzdCk7DQogICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsNCiAgICAg
ICAgbGFyZ2UubGluayh0aGlzKTsNCiAgICAgICAgbW92ZURvdWJsZShzcmMsIHNjcmF0Y2gpOw0K
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJzc19ycihpbnQ2NE1pbiwgc2NyYXRjaCk7DQogICAgICAg
IG1fYXNzZW1ibGVyLm1vdnFfaTY0cigweDgwMDAwMDAwMDAwMDAwMDAsIHNjcmF0Y2hSZWdpc3Rl
cigpKTsNCiAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNzMnNpcV9ycihzY3JhdGNoLCBkZXN0KTsN
CiAgICAgICAgbV9hc3NlbWJsZXIub3JxX3JyKHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsNCiAg
ICAgICAgZG9uZS5saW5rKHRoaXMpOw0KICAgIH0NCg0KICAgIHZvaWQgY29udmVydEludDY0VG9E
b3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAg
bV9hc3NlbWJsZXIuY3Z0c2kyc2RxX3JyKHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBj
b252ZXJ0SW50NjRUb0RvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICBtX2Fzc2VtYmxlci5jdnRzaTJzZHFfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2Us
IGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgY29udmVydEludDY0VG9GbG9hdChSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtX2Fzc2VtYmxlci5jdnRz
aTJzc3FfcnIoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGNvbnZlcnRJbnQ2NFRvRmxv
YXQoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbV9hc3Nl
bWJsZXIuY3Z0c2kyc3NxX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsNCiAgICB9DQoN
CiAgICANCiAgICB2b2lkIGNvbnZlcnRVSW50NjRUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkNCiAgICB7DQogICAgICAgIFJlZ2lz
dGVySUQgc2NyYXRjaDIgPSBzY3JhdGNoUmVnaXN0ZXIoKTsNCg0KICAgICAgICBtX2Fzc2VtYmxl
ci50ZXN0cV9ycihzcmMsIHNyYyk7DQogICAgICAgIEFzc2VtYmxlckxhYmVsIHNpZ25CaXRTZXQg
PSBtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKFNpZ25lZCkpOw0KICAgICAgICBtX2Fzc2Vt
Ymxlci5jdnRzaTJzZHFfcnIoc3JjLCBkZXN0KTsNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgZG9u
ZSA9IG1fYXNzZW1ibGVyLmptcCgpOw0KICAgICAgICBtX2Fzc2VtYmxlci5saW5rSnVtcChzaWdu
Qml0U2V0LCBtX2Fzc2VtYmxlci5sYWJlbCgpKTsNCiAgICAgICAgaWYgKHNjcmF0Y2ggIT0gc3Jj
KQ0KICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9ycihzcmMsIHNjcmF0Y2gpOw0KICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZxX3JyKHNyYywgc2NyYXRjaDIpOw0KICAgICAgICBtX2Fzc2VtYmxl
ci5zaHJxX2k4cigxLCBzY3JhdGNoKTsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcigxLCBz
Y3JhdGNoMik7DQogICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzY3JhdGNoLCBzY3JhdGNoMik7
DQogICAgICAgIG1fYXNzZW1ibGVyLmN2dHNpMnNkcV9ycihzY3JhdGNoMiwgZGVzdCk7DQogICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHNkX3JyKGRlc3QsIGRlc3QpOw0KICAgICAgICBtX2Fzc2VtYmxl
ci5saW5rSnVtcChkb25lLCBtX2Fzc2VtYmxlci5sYWJlbCgpKTsNCiAgICB9DQoNCiAgICANCiAg
ICB2b2lkIGNvbnZlcnRVSW50NjRUb0Zsb2F0KFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQ0KICAgIHsNCiAgICAgICAgUmVnaXN0ZXJJRCBzY3Jh
dGNoMiA9IHNjcmF0Y2hSZWdpc3RlcigpOw0KICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihz
cmMsIHNyYyk7DQogICAgICAgIEFzc2VtYmxlckxhYmVsIHNpZ25CaXRTZXQgPSBtX2Fzc2VtYmxl
ci5qQ0MoeDg2Q29uZGl0aW9uKFNpZ25lZCkpOw0KICAgICAgICBtX2Fzc2VtYmxlci5jdnRzaTJz
c3FfcnIoc3JjLCBkZXN0KTsNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwgZG9uZSA9IG1fYXNzZW1i
bGVyLmptcCgpOw0KICAgICAgICBtX2Fzc2VtYmxlci5saW5rSnVtcChzaWduQml0U2V0LCBtX2Fz
c2VtYmxlci5sYWJlbCgpKTsNCiAgICAgICAgaWYgKHNjcmF0Y2ggIT0gc3JjKQ0KICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubW92cV9ycihzcmMsIHNjcmF0Y2gpOw0KICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZxX3JyKHNyYywgc2NyYXRjaDIpOw0KICAgICAgICBtX2Fzc2VtYmxlci5zaHJxX2k4cigx
LCBzY3JhdGNoKTsNCiAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcigxLCBzY3JhdGNoMik7DQog
ICAgICAgIG1fYXNzZW1ibGVyLm9ycV9ycihzY3JhdGNoLCBzY3JhdGNoMik7DQogICAgICAgIG1f
YXNzZW1ibGVyLmN2dHNpMnNzcV9ycihzY3JhdGNoMiwgZGVzdCk7DQogICAgICAgIG1fYXNzZW1i
bGVyLmFkZHNzX3JyKGRlc3QsIGRlc3QpOw0KICAgICAgICBtX2Fzc2VtYmxlci5saW5rSnVtcChk
b25lLCBtX2Fzc2VtYmxlci5sYWJlbCgpKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c0Zsb2F0aW5nUG9pbnQoKSB7IHJldHVybiB0cnVlOyB9DQogICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0cnVlOyB9DQogICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpIHsgcmV0dXJuIHRydWU7IH0NCiAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSB7IHJldHVybiB0cnVlOyB9DQog
ICAgDQogICAgdGVtcGxhdGU8UHRyVGFnIHJlc3VsdFRhZywgUHRyVGFnIGxvY2F0aW9uVGFnPg0K
ICAgIHN0YXRpYyBGdW5jdGlvblB0cjxyZXN1bHRUYWc+IHJlYWRDYWxsVGFyZ2V0KENvZGVMb2Nh
dGlvbkNhbGw8bG9jYXRpb25UYWc+IGNhbGwpDQogICAgew0KICAgICAgICByZXR1cm4gRnVuY3Rp
b25QdHI8cmVzdWx0VGFnPihYODZBc3NlbWJsZXI6OnJlYWRQb2ludGVyKGNhbGwuZGF0YUxhYmVs
UHRyQXRPZmZzZXQoLTMpLmRhdGFMb2NhdGlvbigpKSk7DQogICAgfQ0KDQogICAgYm9vbCBoYXZl
U2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBtX2FsbG93U2NyYXRjaFJlZ2lz
dGVyOyB9DQogICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpIHsgcmV0
dXJuIHNjcmF0Y2hSZWdpc3RlcigpOyB9DQoNCiAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFj
ZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0NCiAgICBzdGF0
aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1
cm4gdHJ1ZTsgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBzdGF0aWMgQ29kZUxv
Y2F0aW9uTGFiZWw8dGFnPiBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2Rl
TG9jYXRpb25EYXRhTGFiZWxQdHI8dGFnPiBsYWJlbCkNCiAgICB7DQogICAgICAgIGNvbnN0IGlu
dCByZXhCeXRlcyA9IDE7DQogICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7DQogICAg
ICAgIGNvbnN0IGludCBpbW1lZGlhdGVCeXRlcyA9IDg7DQogICAgICAgIGNvbnN0IGludCB0b3Rh
bEJ5dGVzID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOw0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5
dGVzKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KICAgIHN0YXRpYyBDb2Rl
TG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsMzI8dGFnPiBsYWJlbCkNCiAgICB7DQogICAgICAgIGNvbnN0IGlu
dCByZXhCeXRlcyA9IDE7DQogICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7DQogICAg
ICAgIGNvbnN0IGludCBpbW1lZGlhdGVCeXRlcyA9IDQ7DQogICAgICAgIGNvbnN0IGludCB0b3Rh
bEJ5dGVzID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOw0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5
dGVzKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KICAgIHN0YXRpYyBDb2Rl
TG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFk
ZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPHRhZz4gbGFiZWwpDQogICAgew0KICAgICAg
ICByZXR1cm4gc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+DQogICAgc3RhdGljIENvZGVMb2NhdGlvbkxh
YmVsPHRhZz4gc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVM
b2NhdGlvbkRhdGFMYWJlbDMyPHRhZz4gbGFiZWwpDQogICAgew0KICAgICAgICByZXR1cm4gc3Rh
cnRPZkJyYW5jaDMyV2l0aFBhdGNoT25SZWdpc3RlcihsYWJlbCk7DQogICAgfQ0KDQogICAgdGVt
cGxhdGU8UHRyVGFnIHRhZz4NCiAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRU
b1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbDx0YWc+IGluc3Ry
dWN0aW9uU3RhcnQsIEFkZHJlc3MsIHZvaWQqIGluaXRpYWxWYWx1ZSkNCiAgICB7DQogICAgICAg
IFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4
ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1
ZSksIHNfc2NyYXRjaFJlZ2lzdGVyKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFn
Pg0KICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNo
MzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiBpbnN0cnVjdGlvblN0YXJ0LCBBZGRy
ZXNzLCBpbnQzMl90IGluaXRpYWxWYWx1ZSkNCiAgICB7DQogICAgICAgIFg4NkFzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFRvX21vdmxfaTMycihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
KCksIGluaXRpYWxWYWx1ZSwgc19zY3JhdGNoUmVnaXN0ZXIpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPFB0clRhZyB0YWc+DQogICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9C
cmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiBpbnN0cnVjdGlvblN0YXJ0
LCBSZWdpc3RlcklELCB2b2lkKiBpbml0aWFsVmFsdWUpDQogICAgew0KICAgICAgICBYODZBc3Nl
bWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxl
QWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzX3Nj
cmF0Y2hSZWdpc3Rlcik7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIGNhbGxUYWcsIFB0
clRhZyBkZXN0VGFnPg0KICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNh
bGw8Y2FsbFRhZz4gY2FsbCwgQ29kZUxvY2F0aW9uTGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24p
DQogICAgew0KICAgICAgICBYODZBc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKGNhbGwuZGF0YUxh
YmVsUHRyQXRPZmZzZXQoLTMpLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFn
IGRlc3RUYWc+DQogICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxj
YWxsVGFnPiBjYWxsLCBGdW5jdGlvblB0cjxkZXN0VGFnPiBkZXN0aW5hdGlvbikNCiAgICB7DQog
ICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRhTGFiZWxQdHJBdE9m
ZnNldCgtMykuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkp
Ow0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICANCiAgICANCiAgICB2b2lkIGNsejY0QWZ0ZXJCc3Io
UmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAgICBKdW1wIHNyY0lzTm9uWmVybyA9IG1fYXNz
ZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oTm9uWmVybykpOw0KICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMig2NCksIGRzdCk7DQoNCiAgICAgICAgSnVtcCBza2lwTm9uWmVyb0Nhc2UgPSBqdW1wKCk7
DQogICAgICAgIHNyY0lzTm9uWmVyby5saW5rKHRoaXMpOw0KICAgICAgICB4b3I2NChUcnVzdGVk
SW1tMzIoMHgzZiksIGRzdCk7DQogICAgICAgIHNraXBOb25aZXJvQ2FzZS5saW5rKHRoaXMpOw0K
ICAgIH0NCg0KICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOw0KDQogICAgdGVtcGxhdGU8UHRy
VGFnIHRhZz4NCiAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBDYWxsIGNhbGws
IEZ1bmN0aW9uUHRyPHRhZz4gZnVuY3Rpb24pDQogICAgew0KICAgICAgICBpZiAoIWNhbGwuaXNG
bGFnU2V0KENhbGw6Ok5lYXIpKQ0KICAgICAgICAgICAgWDg2QXNzZW1ibGVyOjpsaW5rUG9pbnRl
cihjb2RlLCBjYWxsLm1fbGFiZWwubGFiZWxBdE9mZnNldCgtMyksIGZ1bmN0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOw0KICAgICAgICBlbHNlIGlmIChjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWls
KSkNCiAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6bGlua0p1bXAoY29kZSwgY2FsbC5tX2xhYmVs
LCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgWDg2QXNzZW1ibGVyOjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOw0KICAgIH0NCn07DQoNCn0gDQoNCiNsaW5lIDIwNzEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxN
YWNyb0Fzc2VtYmxlclg4Nl82NC5oIg0KI2xpbmUgNjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlci5oIg0K
DQoNCg0KI2xpbmUgNjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlci5oIg0KDQoNCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4NCmNsYXNzIFNjb3BlZExhbWJk
YTsNCg0KfSANCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KbmFtZXNwYWNlIFByb2JlIHsNCg0KY2xh
c3MgQ29udGV4dDsNCnR5cGVkZWYgdm9pZCAoKkZ1bmN0aW9uKShDb250ZXh0Jik7DQoNCn0gDQoj
bGluZSA4NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyLmgiDQoNCm5hbWVzcGFjZSBQcmludGVyIHsNCg0K
c3RydWN0IFByaW50UmVjb3JkOw0KdHlwZWRlZiBWZWN0b3I8UHJpbnRSZWNvcmQ+IFByaW50UmVj
b3JkTGlzdDsNCg0KfSANCg0KdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlID0gTWFjcm9Bc3NlbWJs
ZXJYODZfNjQ7DQoNCmNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVy
QmFzZSB7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IE1hY3JvQXNzZW1ibGVyQmFzZTsNCg0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBuZXh0UmVnaXN0ZXIoUmVnaXN0ZXJJRCBy
ZWcpDQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4ocmVnICsg
MSk7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIG5leHRG
UFJlZ2lzdGVyKEZQUmVnaXN0ZXJJRCByZWcpDQogICAgew0KICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RlBSZWdpc3RlcklEPihyZWcgKyAxKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCByZWdpc3RlckluZGV4KFJlZ2lzdGVySUQgcmVnKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIHJlZyAtIGZpcnN0UmVnaXN0ZXIoKTsNCiAgICB9DQogICAgDQogICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmcFJlZ2lzdGVySW5kZXgoRlBSZWdpc3RlcklEIHJlZykN
CiAgICB7DQogICAgICAgIHJldHVybiByZWcgLSBmaXJzdEZQUmVnaXN0ZXIoKTsNCiAgICB9DQog
ICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCByZWdpc3RlckluZGV4KEZQUmVnaXN0
ZXJJRCByZWcpDQogICAgew0KICAgICAgICByZXR1cm4gZnBSZWdpc3RlckluZGV4KHJlZykgKyBu
dW1iZXJPZlJlZ2lzdGVycygpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIHRvdGFsTnVtYmVyT2ZSZWdpc3RlcnMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG51
bWJlck9mUmVnaXN0ZXJzKCkgKyBudW1iZXJPZkZQUmVnaXN0ZXJzKCk7DQogICAgfQ0KDQogICAg
dXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpwb3A7DQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpqdW1wOw0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6ZmFySnVtcDsNCiAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDMyOw0KICAgIHVzaW5nIE1hY3JvQXNzZW1i
bGVyQmFzZTo6Y29tcGFyZTMyOw0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bW92ZTsN
CiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Om1vdmVEb3VibGU7DQogICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjphZGQzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Om11
bDMyOw0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YW5kMzI7DQogICAgdXNpbmcgTWFj
cm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hBZGQzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OmJyYW5jaE11bDMyOw0KDQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hQ
dHI7DQojbGluZSAxNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlci5oIg0KICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7DQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjps
c2hpZnQzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Om9yMzI7DQogICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJCYXNlOjpyc2hpZnQzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OnN0b3JlMzI7DQogICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpzdWIzMjsNCiAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnVyc2hpZnQzMjsNCiAgICB1c2luZyBNYWNyb0Fzc2Vt
YmxlckJhc2U6OnhvcjMyOw0KDQoNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmFuZDY0
Ow0KICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6Y29udmVydEludDMyVG9Eb3VibGU7DQog
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpzdG9yZTY0Ow0KI2xpbmUgMTU5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFj
cm9Bc3NlbWJsZXIuaCINCg0KICAgIHN0YXRpYyBib29sIGlzUHRyQWxpZ25lZEFkZHJlc3NPZmZz
ZXQocHRyZGlmZl90IHZhbHVlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHZhbHVlID09IHN0YXRp
Y19jYXN0PGludDMyX3Q+KHZhbHVlKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHR3b1RvVGhlMzI7IA0KDQogICAgDQogICAgdXNpbmcgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlckJh
c2U6OmludmVydDsNCiAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmludmVydDsNCiAgICAN
CiAgICBzdGF0aWMgRG91YmxlQ29uZGl0aW9uIGludmVydChEb3VibGVDb25kaXRpb24gY29uZCkN
CiAgICB7DQogICAgICAgIHN3aXRjaCAoY29uZCkgew0KICAgICAgICBjYXNlIERvdWJsZUVxdWFs
QW5kT3JkZXJlZDoNCiAgICAgICAgICAgIHJldHVybiBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVk
Ow0KICAgICAgICBjYXNlIERvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZDoNCiAgICAgICAgICAgIHJl
dHVybiBEb3VibGVFcXVhbE9yVW5vcmRlcmVkOw0KICAgICAgICBjYXNlIERvdWJsZUdyZWF0ZXJU
aGFuQW5kT3JkZXJlZDoNCiAgICAgICAgICAgIHJldHVybiBEb3VibGVMZXNzVGhhbk9yRXF1YWxP
clVub3JkZXJlZDsNCiAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxBbmRPcmRl
cmVkOg0KICAgICAgICAgICAgcmV0dXJuIERvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQ7DQogICAg
ICAgIGNhc2UgRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkOg0KICAgICAgICAgICAgcmV0dXJuIERv
dWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkOw0KICAgICAgICBjYXNlIERvdWJsZUxl
c3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQ6DQogICAgICAgICAgICByZXR1cm4gRG91YmxlR3JlYXRl
clRoYW5PclVub3JkZXJlZDsNCiAgICAgICAgY2FzZSBEb3VibGVFcXVhbE9yVW5vcmRlcmVkOg0K
ICAgICAgICAgICAgcmV0dXJuIERvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZDsNCiAgICAgICAgY2Fz
ZSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkOg0KICAgICAgICAgICAgcmV0dXJuIERvdWJsZUVx
dWFsQW5kT3JkZXJlZDsNCiAgICAgICAgY2FzZSBEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVk
Og0KICAgICAgICAgICAgcmV0dXJuIERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQ7DQog
ICAgICAgIGNhc2UgRG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVyZWQ6DQogICAgICAg
ICAgICByZXR1cm4gRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkOw0KICAgICAgICBjYXNlIERvdWJs
ZUxlc3NUaGFuT3JVbm9yZGVyZWQ6DQogICAgICAgICAgICByZXR1cm4gRG91YmxlR3JlYXRlclRo
YW5PckVxdWFsQW5kT3JkZXJlZDsNCiAgICAgICAgY2FzZSBEb3VibGVMZXNzVGhhbk9yRXF1YWxP
clVub3JkZXJlZDoNCiAgICAgICAgICAgIHJldHVybiBEb3VibGVHcmVhdGVyVGhhbkFuZE9yZGVy
ZWQ7DQogICAgICAgIH0NCiAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBl
KCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE5OSwgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxN
YWNyb0Fzc2VtYmxlci5oIiwgIF9fRlVOQ1RJT05fXyAgLCA0MyApOyB9IHdoaWxlIChmYWxzZSk7
DQogICAgICAgIHJldHVybiBEb3VibGVFcXVhbEFuZE9yZGVyZWQ7IA0KICAgIH0NCiAgICANCiAg
ICBzdGF0aWMgYm9vbCBpc0ludmVydGlibGUoUmVzdWx0Q29uZGl0aW9uIGNvbmQpDQogICAgew0K
ICAgICAgICBzd2l0Y2ggKGNvbmQpIHsNCiAgICAgICAgY2FzZSBaZXJvOg0KICAgICAgICBjYXNl
IE5vblplcm86DQogICAgICAgIGNhc2UgU2lnbmVkOg0KICAgICAgICBjYXNlIFBvc2l0aXZlT3Ja
ZXJvOg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgc3RhdGljIFJl
c3VsdENvbmRpdGlvbiBpbnZlcnQoUmVzdWx0Q29uZGl0aW9uIGNvbmQpDQogICAgew0KICAgICAg
ICBzd2l0Y2ggKGNvbmQpIHsNCiAgICAgICAgY2FzZSBaZXJvOg0KICAgICAgICAgICAgcmV0dXJu
IE5vblplcm87DQogICAgICAgIGNhc2UgTm9uWmVybzoNCiAgICAgICAgICAgIHJldHVybiBaZXJv
Ow0KICAgICAgICBjYXNlIFNpZ25lZDoNCiAgICAgICAgICAgIHJldHVybiBQb3NpdGl2ZU9yWmVy
bzsNCiAgICAgICAgY2FzZSBQb3NpdGl2ZU9yWmVybzoNCiAgICAgICAgICAgIHJldHVybiBTaWdu
ZWQ7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9y
UG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8o
MjI4LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxh
c3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyLmgiLCAgX19GVU5DVElPTl9fICAsIDQ0ICk7IH0gd2hp
bGUgKGZhbHNlKTsNCiAgICAgICAgICAgIHJldHVybiBaZXJvOyANCiAgICAgICAgfQ0KICAgIH0N
Cg0KICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGZsaXAoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChjb25kKSB7DQogICAgICAgIGNhc2UgRXF1
YWw6DQogICAgICAgIGNhc2UgTm90RXF1YWw6DQogICAgICAgICAgICByZXR1cm4gY29uZDsNCiAg
ICAgICAgY2FzZSBBYm92ZToNCiAgICAgICAgICAgIHJldHVybiBCZWxvdzsNCiAgICAgICAgY2Fz
ZSBBYm92ZU9yRXF1YWw6DQogICAgICAgICAgICByZXR1cm4gQmVsb3dPckVxdWFsOw0KICAgICAg
ICBjYXNlIEJlbG93Og0KICAgICAgICAgICAgcmV0dXJuIEFib3ZlOw0KICAgICAgICBjYXNlIEJl
bG93T3JFcXVhbDoNCiAgICAgICAgICAgIHJldHVybiBBYm92ZU9yRXF1YWw7DQogICAgICAgIGNh
c2UgR3JlYXRlclRoYW46DQogICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47DQogICAgICAgIGNh
c2UgR3JlYXRlclRoYW5PckVxdWFsOg0KICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuT3JFcXVh
bDsNCiAgICAgICAgY2FzZSBMZXNzVGhhbjoNCiAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhh
bjsNCiAgICAgICAgY2FzZSBMZXNzVGhhbk9yRXF1YWw6DQogICAgICAgICAgICByZXR1cm4gR3Jl
YXRlclRoYW5PckVxdWFsOw0KICAgICAgICB9DQoNCiAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdy
YWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJ
bmZvKDI1NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlci5oIiwgIF9fRlVOQ1RJT05fXyAgLCA0NSApOyB9
IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHJldHVybiBFcXVhbDsNCiAgICB9DQoNCiAgICBzdGF0
aWMgYm9vbCBpc1NpZ25lZChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpDQogICAgew0KICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjppc1NpZ25lZDxNYWNyb0Fzc2VtYmxlcj4o
Y29uZCk7DQogICAgfQ0KDQogICAgc3RhdGljIGJvb2wgaXNVbnNpZ25lZChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQpDQogICAgew0KICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojppc1Vuc2lnbmVkPE1hY3JvQXNzZW1ibGVyPihjb25kKTsNCiAgICB9DQoNCiAgICBzdGF0aWMg
Ym9vbCBpc1NpZ25lZChSZXN1bHRDb25kaXRpb24gY29uZCkNCiAgICB7DQogICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmlzU2lnbmVkPE1hY3JvQXNzZW1ibGVyPihjb25kKTsN
CiAgICB9DQoNCiAgICBzdGF0aWMgYm9vbCBpc1Vuc2lnbmVkKFJlc3VsdENvbmRpdGlvbiBjb25k
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVySGVscGVyczo6aXNVbnNpZ25l
ZDxNYWNyb0Fzc2VtYmxlcj4oY29uZCk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgdm9pZCBw
b3AoKQ0KICAgIHsNCiAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2Yodm9pZCopKSwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHBlZWsoUmVnaXN0
ZXJJRCBkZXN0LCBpbnQgaW5kZXggPSAwKQ0KICAgIHsNCiAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoaW5kZXggKiBzaXplb2Yodm9pZCopKSksIGRlc3QpOw0K
ICAgIH0NCg0KICAgIEFkZHJlc3MgYWRkcmVzc0ZvclBva2UoaW50IGluZGV4KQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIChpbmRleCAqIHNpemVv
Zih2b2lkKikpKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBwb2tlKFJlZ2lzdGVySUQgc3JjLCBp
bnQgaW5kZXggPSAwKQ0KICAgIHsNCiAgICAgICAgc3RvcmVQdHIoc3JjLCBhZGRyZXNzRm9yUG9r
ZShpbmRleCkpOw0KICAgIH0NCg0KICAgIHZvaWQgcG9rZShUcnVzdGVkSW1tMzIgdmFsdWUsIGlu
dCBpbmRleCA9IDApDQogICAgew0KICAgICAgICBzdG9yZTMyKHZhbHVlLCBhZGRyZXNzRm9yUG9r
ZShpbmRleCkpOw0KICAgIH0NCg0KICAgIHZvaWQgcG9rZShUcnVzdGVkSW1tUHRyIGltbSwgaW50
IGluZGV4ID0gMCkNCiAgICB7DQogICAgICAgIHN0b3JlUHRyKGltbSwgYWRkcmVzc0ZvclBva2Uo
aW5kZXgpKTsNCiAgICB9DQoNCiAgICB2b2lkIHBva2UoRlBSZWdpc3RlcklEIHNyYywgaW50IGlu
ZGV4ID0gMCkNCiAgICB7DQogICAgICAgIHN0b3JlRG91YmxlKHNyYywgYWRkcmVzc0ZvclBva2Uo
aW5kZXgpKTsNCiAgICB9DQoNCg0KICAgIHZvaWQgcHVzaFRvU2F2ZShSZWdpc3RlcklEIHNyYykN
CiAgICB7DQogICAgICAgIHB1c2goc3JjKTsNCiAgICB9DQogICAgdm9pZCBwdXNoVG9TYXZlSW1t
ZWRpYXRlV2l0aG91dFRvdWNoaW5nUmVnaXN0ZXJzKFRydXN0ZWRJbW0zMiBpbW0pDQogICAgew0K
ICAgICAgICBwdXNoKGltbSk7DQogICAgfQ0KICAgIHZvaWQgcG9wVG9SZXN0b3JlKFJlZ2lzdGVy
SUQgZGVzdCkNCiAgICB7DQogICAgICAgIHBvcChkZXN0KTsNCiAgICB9DQogICAgdm9pZCBwdXNo
VG9TYXZlKEZQUmVnaXN0ZXJJRCBzcmMpDQogICAgew0KICAgICAgICBzdWJQdHIoVHJ1c3RlZElt
bTMyKHNpemVvZihkb3VibGUpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOw0KICAgICAgICBzdG9y
ZURvdWJsZShzcmMsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsNCiAgICB9DQogICAgdm9pZCBwb3BU
b1Jlc3RvcmUoRlBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBsb2FkRG91YmxlKHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBkZXN0KTsNCiAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihz
aXplb2YoZG91YmxlKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsNCiAgICB9DQogICAgDQogICAg
c3RhdGljIHB0cmRpZmZfdCBwdXNoVG9TYXZlQnl0ZU9mZnNldCgpIHsgcmV0dXJuIHNpemVvZih2
b2lkKik7IH0NCiNsaW5lIDM0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXE1hY3JvQXNzZW1ibGVyLmgiDQoNCg0KICAgIHZvaWQg
cGVlazY0KFJlZ2lzdGVySUQgZGVzdCwgaW50IGluZGV4ID0gMCkNCiAgICB7DQogICAgICAgIGxv
YWQ2NChBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAoaW5kZXggKiBzaXplb2Yodm9pZCop
KSksIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgcG9rZShUcnVzdGVkSW1tNjQgdmFsdWUsIGlu
dCBpbmRleCA9IDApDQogICAgew0KICAgICAgICBzdG9yZTY0KHZhbHVlLCBhZGRyZXNzRm9yUG9r
ZShpbmRleCkpOw0KICAgIH0NCg0KICAgIHZvaWQgcG9rZTY0KFJlZ2lzdGVySUQgc3JjLCBpbnQg
aW5kZXggPSAwKQ0KICAgIHsNCiAgICAgICAgc3RvcmU2NChzcmMsIGFkZHJlc3NGb3JQb2tlKGlu
ZGV4KSk7DQogICAgfQ0KI2xpbmUgMzYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0KICAgIA0K
ICAgIA0KICAgIFRydXN0ZWRJbW0zMiB0cnVzdGVkSW1tMzJGb3JTaGlmdChJbW0zMiBpbW0pDQog
ICAgew0KICAgICAgICByZXR1cm4gVHJ1c3RlZEltbTMyKGltbS5hc1RydXN0ZWRJbW0zMigpLm1f
dmFsdWUgJiAzMSk7DQogICAgfQ0KDQogICAgDQogICAgdm9pZCBicmFuY2hQdHIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbVB0ciBpbW0sIExhYmVs
IHRhcmdldCkNCiAgICB7DQogICAgICAgIGJyYW5jaFB0cihjb25kLCBvcDEsIGltbSkubGlua1Rv
KHRhcmdldCwgdGhpcyk7DQogICAgfQ0KICAgIHZvaWQgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIEltbVB0ciBpbW0sIExhYmVsIHRhcmdldCkNCiAg
ICB7DQogICAgICAgIGJyYW5jaFB0cihjb25kLCBvcDEsIGltbSkubGlua1RvKHRhcmdldCwgdGhp
cyk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgbGVmdCwgQWJzb2x1dGVBZGRyZXNzIHJpZ2h0KQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGZsaXAoY29uZCksIHJpZ2h0LCBsZWZ0KTsNCiAgICB9DQoNCiAgICB2
b2lkIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJl
Z2lzdGVySUQgb3AyLCBMYWJlbCB0YXJnZXQpDQogICAgew0KICAgICAgICBicmFuY2gzMihjb25k
LCBvcDEsIG9wMikubGlua1RvKHRhcmdldCwgdGhpcyk7DQogICAgfQ0KDQogICAgdm9pZCBicmFu
Y2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1t
MzIgaW1tLCBMYWJlbCB0YXJnZXQpDQogICAgew0KICAgICAgICBicmFuY2gzMihjb25kLCBvcDEs
IGltbSkubGlua1RvKHRhcmdldCwgdGhpcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYnJhbmNo
MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgSW1tMzIgaW1tLCBM
YWJlbCB0YXJnZXQpDQogICAgew0KICAgICAgICBicmFuY2gzMihjb25kLCBvcDEsIGltbSkubGlu
a1RvKHRhcmdldCwgdGhpcyk7DQogICAgfQ0KDQogICAgdm9pZCBicmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCwgTGFiZWwgdGFy
Z2V0KQ0KICAgIHsNCiAgICAgICAgYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQpLmxpbmtUbyh0
YXJnZXQsIHRoaXMpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkNCiAgICB7DQog
ICAgICAgIHJldHVybiBicmFuY2gzMihjb21tdXRlKGNvbmQpLCByaWdodCwgbGVmdCk7DQogICAg
fQ0KDQogICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEltbTMyIGxl
ZnQsIFJlZ2lzdGVySUQgcmlnaHQpDQogICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29t
bXV0ZShjb25kKSwgcmlnaHQsIGxlZnQpOw0KICAgIH0NCg0KICAgIHZvaWQgY29tcGFyZTMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgSW1tMzIgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgY29tcGFyZTMyKGNvbW11dGUoY29uZCksIHJp
Z2h0LCBsZWZ0LCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGJyYW5jaFRlc3RQdHIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBMYWJlbCB0YXJnZXQpDQogICAgew0KICAg
ICAgICBicmFuY2hUZXN0UHRyKGNvbmQsIHJlZykubGlua1RvKHRhcmdldCwgdGhpcyk7DQogICAg
fQ0KDQoNCiAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaFB0cihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCA9IFRydXN0ZWRJ
bW1QdHIobnVsbHB0cikpDQogICAgew0KICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFu
Y2hQdHIoY29uZCwgbGVmdCwgcmlnaHQpKTsNCiAgICB9DQogICAgDQogICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRp
YWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cihudWxscHRyKSkNCiAgICB7DQogICAgICAgIHJl
dHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaFB0cldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFi
ZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7DQogICAgfQ0KDQogICAgUGF0Y2hhYmxlSnVtcCBwYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
bGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZh
bHVlID0gVHJ1c3RlZEltbTMyKDApKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1
bXAoYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRW
YWx1ZSkpOw0KICAgIH0NCg0KICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpDQogICAg
ew0KICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChqdW1wKCkpOw0KICAgIH0NCg0KICAgIFBh
dGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoVGVzdDMyKGNvbmQsIHJlZywg
bWFzaykpOw0KICAgIH0NCg0KICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIGltbSkN
CiAgICB7DQogICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJlZywg
aW1tKSk7DQogICAgfQ0KDQogICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2g4KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1tKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoOChjb25kLCBhZGRyZXNz
LCBpbW0pKTsNCiAgICB9DQoNCiAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1t
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoMzIoY29uZCwgYWRk
cmVzcywgaW1tKSk7DQogICAgfQ0KI2xpbmUgNDY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0K
ICAgIHZvaWQganVtcChMYWJlbCB0YXJnZXQpDQogICAgew0KICAgICAgICBqdW1wKCkubGlua1Rv
KHRhcmdldCwgdGhpcyk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgc3RhdGljIFJlbGF0aW9u
YWxDb25kaXRpb24gY29tbXV0ZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikNCiAgICB7
DQogICAgICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7DQogICAgICAgIGNhc2UgQWJvdmU6DQogICAg
ICAgICAgICByZXR1cm4gQmVsb3c7DQogICAgICAgIGNhc2UgQWJvdmVPckVxdWFsOg0KICAgICAg
ICAgICAgcmV0dXJuIEJlbG93T3JFcXVhbDsNCiAgICAgICAgY2FzZSBCZWxvdzoNCiAgICAgICAg
ICAgIHJldHVybiBBYm92ZTsNCiAgICAgICAgY2FzZSBCZWxvd09yRXF1YWw6DQogICAgICAgICAg
ICByZXR1cm4gQWJvdmVPckVxdWFsOw0KICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOg0KICAgICAg
ICAgICAgcmV0dXJuIExlc3NUaGFuOw0KICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuT3JFcXVhbDoN
CiAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbk9yRXF1YWw7DQogICAgICAgIGNhc2UgTGVzc1Ro
YW46DQogICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47DQogICAgICAgIGNhc2UgTGVzc1Ro
YW5PckVxdWFsOg0KICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuT3JFcXVhbDsNCiAgICAg
ICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICByZXR1cm4gY29uZGl0aW9uOw0KICAgIH0NCg0KICAgIHZvaWQgb29w
cygpDQogICAgew0KICAgICAgICBhYm9ydFdpdGhSZWFzb24oQjNPb3BzKTsNCiAgICB9DQoNCiAg
ICANCiAgICANCiAgICB2b2lkIHJldFZvaWQoKSB7IHJldCgpOyB9DQogICAgdm9pZCByZXQzMihS
ZWdpc3RlcklEKSB7IHJldCgpOyB9DQogICAgdm9pZCByZXQ2NChSZWdpc3RlcklEKSB7IHJldCgp
OyB9DQogICAgdm9pZCByZXRGbG9hdChGUFJlZ2lzdGVySUQpIHsgcmV0KCk7IH0NCiAgICB2b2lk
IHJldERvdWJsZShGUFJlZ2lzdGVySUQpIHsgcmV0KCk7IH0NCg0KICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgQmxpbmRpbmdNb2R1bHVzID0gNjQ7DQogICAgYm9vbCBzaG91bGRDb25zaWRl
ckJsaW5kaW5nKCkNCiAgICB7DQogICAgICAgIHJldHVybiAhKHJhbmRvbSgpICYgKEJsaW5kaW5n
TW9kdWx1cyAtIDEpKTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmUoQWRkcmVzcyBzcmMsIEFkZHJl
c3MgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQ0KICAgIHsNCiAgICAgICAgbG9hZFB0cihzcmMs
IHNjcmF0Y2gpOw0KICAgICAgICBzdG9yZVB0cihzY3JhdGNoLCBkZXN0KTsNCiAgICB9DQogICAg
DQogICAgdm9pZCBtb3ZlMzIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQ0KICAgIHsNCiAgICAgICAgbG9hZDMyKHNyYywgc2NyYXRjaCk7DQogICAgICAgIHN0
b3JlMzIoc2NyYXRjaCwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgbW92ZUZsb2F0KEFk
ZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQ0KICAgIHsNCiAg
ICAgICAgbG9hZEZsb2F0KHNyYywgc2NyYXRjaCk7DQogICAgICAgIHN0b3JlRmxvYXQoc2NyYXRj
aCwgZGVzdCk7DQogICAgfQ0KDQogICAgDQogICAgdm9pZCBtb3ZlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZURvdWJsZShzcmMsIGRlc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgbW92ZURvdWJsZShBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0
LCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkNCiAgICB7DQogICAgICAgIGxvYWREb3VibGUoc3JjLCBz
Y3JhdGNoKTsNCiAgICAgICAgc3RvcmVEb3VibGUoc2NyYXRjaCwgZGVzdCk7DQogICAgfQ0KDQog
ICAgDQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDg4MyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJs
ZXJcXE1hY3JvQXNzZW1ibGVyLmgiDQoNCiAgICB2b2lkIGFkZFB0cihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgYWRkNjQoc3JjLCBkZXN0KTsNCiAgICB9
DQoNCiAgICB2b2lkIGFkZFB0cihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGFkZDY0KGxlZnQsIHJpZ2h0LCBkZXN0KTsN
CiAgICB9DQogICAgDQogICAgdm9pZCBhZGRQdHIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIGFkZDY0KHNyYywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBh
ZGRQdHIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAg
ICAgYWRkNjQoaW1tLCBzcmNEZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFkZFB0cihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAg
ICAgYWRkNjQoaW1tLCBzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkUHRyKFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykNCiAgICB7DQogICAgICAgIGFkZDY0KGltbSwg
YWRkcmVzcyk7DQogICAgfQ0KDQogICAgdm9pZCBhZGRQdHIoQWJzb2x1dGVBZGRyZXNzIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgYWRkNjQoc3JjLCBkZXN0KTsNCiAgICB9
DQoNCiAgICB2b2lkIGFkZFB0cihUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgYWRkNjQoVHJ1c3RlZEltbTY0KGltbSksIGRlc3QpOw0KICAgIH0NCg0K
ICAgIHZvaWQgYWRkUHRyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
KQ0KICAgIHsNCiAgICAgICAgYWRkNjQoaW1tLCBhZGRyZXNzKTsNCiAgICB9DQoNCiAgICB2b2lk
IGFuZFB0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAg
YW5kNjQoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZFB0cihUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpDQogICAgew0KICAgICAgICBhbmQ2NChpbW0sIHNyY0Rl
c3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGFuZFB0cihUcnVzdGVkSW1tUHRyIGltbSwgUmVn
aXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAgYW5kNjQoaW1tLCBzcmNEZXN0KTsNCiAg
ICB9DQogICAgDQogICAgdm9pZCBsc2hpZnRQdHIoSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rl
c3QpDQogICAgew0KICAgICAgICBsc2hpZnQ2NCh0cnVzdGVkSW1tMzJGb3JTaGlmdChpbW0pLCBz
cmNEZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGxzaGlmdFB0cihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyY0Rlc3QpDQogICAgew0KICAgICAgICBsc2hpZnQ2NChpbW0sIHNyY0Rlc3Qp
Ow0KICAgIH0NCg0KICAgIHZvaWQgcnNoaWZ0UHRyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNE
ZXN0KQ0KICAgIHsNCiAgICAgICAgcnNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoaW1tKSwg
c3JjRGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCByc2hpZnRQdHIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBzcmNEZXN0KQ0KICAgIHsNCiAgICAgICAgcnNoaWZ0NjQoaW1tLCBzcmNEZXN0
KTsNCiAgICB9DQoNCiAgICB2b2lkIHVyc2hpZnRQdHIoSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
Y0Rlc3QpDQogICAgew0KICAgICAgICB1cnNoaWZ0NjQodHJ1c3RlZEltbTMyRm9yU2hpZnQoaW1t
KSwgc3JjRGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB1cnNoaWZ0UHRyKFJlZ2lzdGVySUQgc2hp
ZnRBbW1vdW50LCBSZWdpc3RlcklEIHNyY0Rlc3QpDQogICAgew0KICAgICAgICB1cnNoaWZ0NjQo
c2hpZnRBbW1vdW50LCBzcmNEZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG5lZ1B0cihSZWdpc3Rl
cklEIGRlc3QpDQogICAgew0KICAgICAgICBuZWc2NChkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IG5lZ1B0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAg
bmVnNjQoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG9yUHRyKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBvcjY0KHNyYywgZGVzdCk7DQogICAg
fQ0KDQogICAgdm9pZCBvclB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpDQog
ICAgew0KICAgICAgICBvcjY0KGltbSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBvclB0cihU
cnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgb3I2NChU
cnVzdGVkSW1tNjQoaW1tKSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBvclB0cihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAg
IG9yNjQob3AxLCBvcDIsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgb3JQdHIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAg
IG9yNjQoaW1tLCBzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHJvdGF0ZVJpZ2h0
UHRyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRHN0KQ0KICAgIHsNCiAgICAgICAg
cm90YXRlUmlnaHQ2NChpbW0sIHNyY0RzdCk7DQogICAgfQ0KDQogICAgdm9pZCBzdWJQdHIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHN1YjY0KHNyYywg
ZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHN1YjY0KGltbSwgZGVzdCk7DQogICAgfQ0K
ICAgIA0KICAgIHZvaWQgc3ViUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBzdWI2NChUcnVzdGVkSW1tNjQoaW1tKSwgZGVzdCk7DQogICAgfQ0K
DQogICAgdm9pZCB4b3JQdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7
DQogICAgICAgIHhvcjY0KHNyYywgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgeG9yUHRy
KEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICB4b3I2NChzcmMs
IGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHhvclB0cihSZWdpc3RlcklEIHNyYywgQWRk
cmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgeG9yNjQoc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAg
ICB2b2lkIHhvclB0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpDQogICAg
ew0KICAgICAgICB4b3I2NChpbW0sIHNyY0Rlc3QpOw0KICAgIH0NCg0KICAgIA0KICAgIHZvaWQg
eG9yUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpDQogICAgew0KICAg
ICAgICB4b3I2NChUcnVzdGVkSW1tNjQoaW1tKSwgc3JjRGVzdCk7DQogICAgfQ0KDQogICAgdm9p
ZCBsb2FkUHRyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAg
ew0KICAgICAgICBsb2FkNjQoYWRkcmVzcywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBsb2Fk
UHRyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KDQoNCiNsaW5l
IDEwNjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
YXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlci5oIg0KICAgICAgICBsb2FkNjQoYWRkcmVzcywgZGVz
dCk7DQogICAgfQ0KDQogICAgdm9pZCBsb2FkUHRyKGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGxvYWQ2NChhZGRyZXNzLCBkZXN0KTsNCiAgICB9
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwODMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2VtYmxlci5oIg0K
DQogICAgRGF0YUxhYmVsMzIgbG9hZFB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICByZXR1cm4gbG9hZDY0V2l0
aEFkZHJlc3NPZmZzZXRQYXRjaChhZGRyZXNzLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgRGF0
YUxhYmVsQ29tcGFjdCBsb2FkUHRyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICByZXR1cm4gbG9hZDY0
V2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goYWRkcmVzcywgZGVzdCk7DQogICAgfQ0KDQog
ICAgdm9pZCBzdG9yZVB0cihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Mp
DQogICAgew0KICAgICAgICBzdG9yZTY0KHNyYywgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgdm9p
ZCBzdG9yZVB0cihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0KICAg
ICAgICBzdG9yZTY0KHNyYywgYWRkcmVzcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgc3RvcmVQ
dHIoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpDQogICAgew0KICAgICAgICBzdG9yZTY0
KHNyYywgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZVB0cihUcnVzdGVkSW1tUHRy
IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KICAgICAgICBzdG9yZTY0KFRy
dXN0ZWRJbW02NChpbW0pLCBhZGRyZXNzKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlUHRyKFRy
dXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAg
c3RvcmU2NChpbW0sIGFkZHJlc3MpOw0KICAgIH0NCg0KICAgIHZvaWQgc3RvcmVQdHIoVHJ1c3Rl
ZEltbVB0ciBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCiAgICAgICAgc3RvcmU2NChU
cnVzdGVkSW1tNjQoaW1tKSwgYWRkcmVzcyk7DQogICAgfQ0KDQogICAgRGF0YUxhYmVsMzIgc3Rv
cmVQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJl
c3MpDQogICAgew0KICAgICAgICByZXR1cm4gc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2go
c3JjLCBhZGRyZXNzKTsNCiAgICB9DQoNCiAgICB2b2lkIGNvbXBhcmVQdHIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0
ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgY29tcGFyZTY0KGNvbmQsIGxlZnQsIHJpZ2h0LCBk
ZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBjb21wYXJlUHRyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpDQogICAgew0KICAgICAgICBjb21wYXJlNjQoY29uZCwgbGVmdCwgcmlnaHQsIGRlc3QpOw0K
ICAgIH0NCiAgICANCiAgICB2b2lkIHRlc3RQdHIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAg
ICAgICAgdGVzdDY0KGNvbmQsIHJlZywgbWFzaywgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCB0
ZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBt
YXNrLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICB0ZXN0NjQoY29uZCwgcmVnLCBt
YXNrLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkNCiAgICB7DQogICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7DQogICAgfQ0KDQogICAgSnVt
cCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRy
dXN0ZWRJbW1QdHIgcmlnaHQpDQogICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwg
bGVmdCwgVHJ1c3RlZEltbTY0KHJpZ2h0KSk7DQogICAgfQ0KICAgIA0KICAgIEp1bXAgYnJhbmNo
UHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBBZGRyZXNzIHJp
Z2h0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0KTsN
CiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkNCiAgICB7DQogICAgICAgIHJldHVybiBicmFu
Y2g2NChjb25kLCBsZWZ0LCByaWdodCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hQdHIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCBy
aWdodCkNCiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7
DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQpDQogICAgew0KICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTY0KHJpZ2h0KSk7DQogICAgfQ0KDQogICAg
SnVtcCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywg
UmVnaXN0ZXJJRCBtYXNrKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChjb25k
LCByZWcsIG1hc2spOw0KICAgIH0NCiAgICANCiAgICBKdW1wIGJyYW5jaFRlc3RQdHIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0
ZWRJbW0zMigtMSkpDQogICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KGNvbmQsIHJl
ZywgbWFzayk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkNCiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoY29uZCwgYWRkcmVzcywg
bWFzayk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVnKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChjb25kLCBhZGRyZXNzLCByZWcpOw0KICAgIH0NCg0KICAgIEp1bXAg
YnJhbmNoVGVzdFB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkNCiAgICB7DQogICAgICAgIHJldHVy
biBicmFuY2hUZXN0NjQoY29uZCwgYWRkcmVzcywgbWFzayk7DQogICAgfQ0KDQogICAgSnVtcCBi
cmFuY2hUZXN0UHRyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVz
cywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3Q2NChjb25kLCBhZGRyZXNzLCBtYXNrKTsNCiAgICB9DQoNCiAgICBK
dW1wIGJyYW5jaEFkZFB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDY0KGNvbmQs
IGltbSwgZGVzdCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hBZGRQdHIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAg
ICByZXR1cm4gYnJhbmNoQWRkNjQoY29uZCwgc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1w
IGJyYW5jaFN1YlB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjY0KGNvbmQsIGlt
bSwgZGVzdCk7DQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hTdWJQdHIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBy
ZXR1cm4gYnJhbmNoU3ViNjQoY29uZCwgc3JjLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJy
YW5jaFN1YlB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBUcnVzdGVk
SW1tMzIgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5j
aFN1YjY0KGNvbmQsIHNyYzEsIHNyYzIsIGRlc3QpOw0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNo
UHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBJbW1QdHIgcmln
aHQpDQogICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpICYmIGhhdmVTY3JhdGNo
UmVnaXN0ZXJGb3JCbGluZGluZygpKSB7DQogICAgICAgICAgICBSZWdpc3RlcklEIHNjcmF0Y2hS
ZWdpc3RlciA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7DQogICAgICAgICAgICBsb2Fk
Um90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRpb25CbGluZENvbnN0YW50KHJpZ2h0KSwgc2Ny
YXRjaFJlZ2lzdGVyKTsNCiAgICAgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwg
c2NyYXRjaFJlZ2lzdGVyKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNv
bmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbVB0cigpKTsNCiAgICB9DQoNCiAgICB2b2lkIHN0
b3JlUHRyKEltbVB0ciBpbW0sIEFkZHJlc3MgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzaG91
bGRCbGluZChpbW0pICYmIGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7DQogICAg
ICAgICAgICBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlciA9IHNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKCk7DQogICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRp
b25CbGluZENvbnN0YW50KGltbSksIHNjcmF0Y2hSZWdpc3Rlcik7DQogICAgICAgICAgICBzdG9y
ZVB0cihzY3JhdGNoUmVnaXN0ZXIsIGRlc3QpOw0KICAgICAgICB9IGVsc2UNCiAgICAgICAgICAg
IHN0b3JlUHRyKGltbS5hc1RydXN0ZWRJbW1QdHIoKSwgZGVzdCk7DQogICAgfQ0KDQojbGluZSAx
MjU1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFz
c2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0KDQogICAgYm9vbCBzaG91bGRCbGluZERvdWJs
ZShkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAgICANCiAgICAgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKHZhbHVlKSkNCiAgICAgICAgICAgIHJldHVybiBzaG91bGRDb25zaWRlckJsaW5kaW5nKCk7
DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpZiAoYml0d2lzZV9jYXN0PHVpbnQ2NF90
Pih2YWx1ZSAqIDEuMCkgIT0gYml0d2lzZV9jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpDQogICAgICAg
ICAgICByZXR1cm4gc2hvdWxkQ29uc2lkZXJCbGluZGluZygpOw0KDQogICAgICAgIHZhbHVlID0g
ZmFicyh2YWx1ZSk7DQogICAgICAgIA0KICAgICAgICBkb3VibGUgc2NhbGVkVmFsdWUgPSB2YWx1
ZSAqIDg7DQogICAgICAgIGlmIChzY2FsZWRWYWx1ZSAvIDggIT0gdmFsdWUpDQogICAgICAgICAg
ICByZXR1cm4gc2hvdWxkQ29uc2lkZXJCbGluZGluZygpOw0KICAgICAgICBkb3VibGUgZnJhYyA9
IHNjYWxlZFZhbHVlIC0gZmxvb3Ioc2NhbGVkVmFsdWUpOw0KICAgICAgICBpZiAoZnJhYyAhPSAw
LjApDQogICAgICAgICAgICByZXR1cm4gc2hvdWxkQ29uc2lkZXJCbGluZGluZygpOw0KDQogICAg
ICAgIHJldHVybiB2YWx1ZSA+IDB4ZmY7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgc2hvdWxkQmxp
bmRQb2ludGVyRm9yU3BlY2lmaWNBcmNoKHVpbnRwdHJfdCB2YWx1ZSkNCiAgICB7DQogICAgICAg
IGlmIChzaXplb2Yodm9pZCopID09IDQpDQogICAgICAgICAgICByZXR1cm4gc2hvdWxkQmxpbmRG
b3JTcGVjaWZpY0FyY2goc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSk7DQogICAgICAgIHJl
dHVybiBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaChzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFs
dWUpKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBzaG91bGRCbGluZChJbW1QdHIgaW1tKQ0KICAg
IHsNCiAgICAgICAgaWYgKCFjYW5CbGluZCgpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgICAgICANCg0KDQoNCg0KDQojbGluZSAxMjk4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIHVpbnQ2NF90IHZhbHVlID0gaW1tLmFzVHJ1c3Rl
ZEltbVB0cigpLmFzSW50cHRyKCk7DQogICAgICAgIHN3aXRjaCAodmFsdWUpIHsNCiAgICAgICAg
Y2FzZSAweGZmZmY6DQogICAgICAgIGNhc2UgMHhmZmZmZmY6DQogICAgICAgIGNhc2UgMHhmZmZm
ZmZmZkw6DQogICAgICAgIGNhc2UgMHhmZmZmZmZmZmZmTDoNCiAgICAgICAgY2FzZSAweGZmZmZm
ZmZmZmZmZkw6DQogICAgICAgIGNhc2UgMHhmZmZmZmZmZmZmZmZmZkw6DQogICAgICAgIGNhc2Ug
MHhmZmZmZmZmZmZmZmZmZmZmTDoNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAg
ZGVmYXVsdDogew0KICAgICAgICAgICAgaWYgKHZhbHVlIDw9IDB4ZmYpDQogICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgaWYgKH52YWx1ZSA8PSAweGZmKQ0KICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAg
aWYgKCFzaG91bGRDb25zaWRlckJsaW5kaW5nKCkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
DQoNCiAgICAgICAgcmV0dXJuIHNob3VsZEJsaW5kUG9pbnRlckZvclNwZWNpZmljQXJjaChzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSk7DQogICAgfQ0KDQogICAgdWludDhfdCBnZW5lcmF0
ZVJvdGF0aW9uU2VlZChzaXplX3Qgd2lkdGhJbkJpdHMpDQogICAgew0KICAgICAgICANCiAgICAg
ICAgDQogICAgICAgIHJldHVybiAocmFuZG9tKCkgJSAod2lkdGhJbkJpdHMgLSAxKSkgKyAxOw0K
ICAgIH0NCiAgICANCiAgICBzdHJ1Y3QgUm90YXRlZEltbVB0ciB7DQogICAgICAgIFJvdGF0ZWRJ
bW1QdHIodWludHB0cl90IHYxLCB1aW50OF90IHYyKQ0KICAgICAgICAgICAgOiB2YWx1ZSh2MSkN
CiAgICAgICAgICAgICwgcm90YXRpb24odjIpDQogICAgICAgIHsNCiAgICAgICAgfQ0KICAgICAg
ICBUcnVzdGVkSW1tUHRyIHZhbHVlOw0KICAgICAgICBUcnVzdGVkSW1tMzIgcm90YXRpb247DQog
ICAgfTsNCiAgICANCiAgICBSb3RhdGVkSW1tUHRyIHJvdGF0aW9uQmxpbmRDb25zdGFudChJbW1Q
dHIgaW1tKQ0KICAgIHsNCiAgICAgICAgdWludDhfdCByb3RhdGlvbiA9IGdlbmVyYXRlUm90YXRp
b25TZWVkKHNpemVvZih2b2lkKikgKiA4KTsNCiAgICAgICAgdWludHB0cl90IHZhbHVlID0gaW1t
LmFzVHJ1c3RlZEltbVB0cigpLmFzSW50cHRyKCk7DQogICAgICAgIHZhbHVlID0gKHZhbHVlIDw8
IHJvdGF0aW9uKSB8ICh2YWx1ZSA+PiAoc2l6ZW9mKHZvaWQqKSAqIDggLSByb3RhdGlvbikpOw0K
ICAgICAgICByZXR1cm4gUm90YXRlZEltbVB0cih2YWx1ZSwgcm90YXRpb24pOw0KICAgIH0NCiAg
ICANCiAgICB2b2lkIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChSb3RhdGVkSW1tUHRyIGNv
bnN0YW50LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBtb3ZlKGNvbnN0YW50LnZh
bHVlLCBkZXN0KTsNCiAgICAgICAgcm90YXRlUmlnaHRQdHIoY29uc3RhbnQucm90YXRpb24sIGRl
c3QpOw0KICAgIH0NCg0KICAgIGJvb2wgc2hvdWxkQmxpbmQoSW1tNjQgaW1tKQ0KICAgIHsNCg0K
DQoNCg0KDQojbGluZSAxMzY0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0KICAgICAgICANCiAg
ICAgICAgDQogICAgICAgIHVpbnQ2NF90IHZhbHVlID0gaW1tLmFzVHJ1c3RlZEltbTY0KCkubV92
YWx1ZTsNCiAgICAgICAgc3dpdGNoICh2YWx1ZSkgew0KICAgICAgICBjYXNlIDB4ZmZmZjoNCiAg
ICAgICAgY2FzZSAweGZmZmZmZjoNCiAgICAgICAgY2FzZSAweGZmZmZmZmZmTDoNCiAgICAgICAg
Y2FzZSAweGZmZmZmZmZmZmZMOg0KICAgICAgICBjYXNlIDB4ZmZmZmZmZmZmZmZmTDoNCiAgICAg
ICAgY2FzZSAweGZmZmZmZmZmZmZmZmZmTDoNCiAgICAgICAgY2FzZSAweGZmZmZmZmZmZmZmZmZm
ZmZMOg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBkZWZhdWx0OiB7DQogICAg
ICAgICAgICBpZiAodmFsdWUgPD0gMHhmZikNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgICAgICAgICBpZiAofnZhbHVlIDw9IDB4ZmYpDQogICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOw0KDQogICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dmFsdWUpOw0KICAgICAgICAgICAgaWYgKGpzVmFsdWUuaXNJbnQzMigpKQ0KICAgICAgICAgICAg
ICAgIHJldHVybiBzaG91bGRCbGluZChJbW0zMihqc1ZhbHVlLmFzSW50MzIoKSkpOw0KICAgICAg
ICAgICAgaWYgKGpzVmFsdWUuaXNEb3VibGUoKSAmJiAhc2hvdWxkQmxpbmREb3VibGUoanNWYWx1
ZS5hc0RvdWJsZSgpKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAg
ICAgIGlmICghc2hvdWxkQmxpbmREb3VibGUoYml0d2lzZV9jYXN0PGRvdWJsZT4odmFsdWUpKSkN
CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgfQ0KDQog
ICAgICAgIGlmICghc2hvdWxkQ29uc2lkZXJCbGluZGluZygpKQ0KICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOw0KDQogICAgICAgIHJldHVybiBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh2YWx1
ZSk7DQogICAgfQ0KICAgIA0KICAgIHN0cnVjdCBSb3RhdGVkSW1tNjQgew0KICAgICAgICBSb3Rh
dGVkSW1tNjQodWludDY0X3QgdjEsIHVpbnQ4X3QgdjIpDQogICAgICAgICAgICA6IHZhbHVlKHYx
KQ0KICAgICAgICAgICAgLCByb3RhdGlvbih2MikNCiAgICAgICAgew0KICAgICAgICB9DQogICAg
ICAgIFRydXN0ZWRJbW02NCB2YWx1ZTsNCiAgICAgICAgVHJ1c3RlZEltbTMyIHJvdGF0aW9uOw0K
ICAgIH07DQogICAgDQogICAgUm90YXRlZEltbTY0IHJvdGF0aW9uQmxpbmRDb25zdGFudChJbW02
NCBpbW0pDQogICAgew0KICAgICAgICB1aW50OF90IHJvdGF0aW9uID0gZ2VuZXJhdGVSb3RhdGlv
blNlZWQoc2l6ZW9mKGludDY0X3QpICogOCk7DQogICAgICAgIHVpbnQ2NF90IHZhbHVlID0gaW1t
LmFzVHJ1c3RlZEltbTY0KCkubV92YWx1ZTsNCiAgICAgICAgdmFsdWUgPSAodmFsdWUgPDwgcm90
YXRpb24pIHwgKHZhbHVlID4+IChzaXplb2YoaW50NjRfdCkgKiA4IC0gcm90YXRpb24pKTsNCiAg
ICAgICAgcmV0dXJuIFJvdGF0ZWRJbW02NCh2YWx1ZSwgcm90YXRpb24pOw0KICAgIH0NCiAgICAN
CiAgICB2b2lkIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChSb3RhdGVkSW1tNjQgY29uc3Rh
bnQsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1vdmUoY29uc3RhbnQudmFsdWUs
IGRlc3QpOw0KICAgICAgICByb3RhdGVSaWdodDY0KGNvbnN0YW50LnJvdGF0aW9uLCBkZXN0KTsN
CiAgICB9DQoNCiAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKEltbTMyIGltbSwgRlBSZWdp
c3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSAmJiBoYXZl
U2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgew0KICAgICAgICAgICAgUmVnaXN0ZXJJRCBz
Y3JhdGNoUmVnaXN0ZXIgPSBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpOw0KICAgICAgICAg
ICAgbG9hZFhvckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KGltbSksIHNjcmF0Y2hS
ZWdpc3Rlcik7DQogICAgICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShzY3JhdGNoUmVnaXN0
ZXIsIGRlc3QpOw0KICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlKGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmUo
SW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNob3VsZEJs
aW5kKGltbSkpDQogICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRp
b25CbGluZENvbnN0YW50KGltbSksIGRlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBt
b3ZlKGltbS5hc1RydXN0ZWRJbW1QdHIoKSwgZGVzdCk7DQogICAgfQ0KDQogICAgdm9pZCBtb3Zl
KEltbTY0IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNob3VsZEJs
aW5kKGltbSkpDQogICAgICAgICAgICBsb2FkUm90YXRpb25CbGluZGVkQ29uc3RhbnQocm90YXRp
b25CbGluZENvbnN0YW50KGltbSksIGRlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBt
b3ZlKGltbS5hc1RydXN0ZWRJbW02NCgpLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG1vdmVE
b3VibGUoSW1tNjQgaW1tLCBGUFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIG1vdmUo
aW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7DQogICAgICAgIG1vdmU2NFRvRG91YmxlKHNjcmF0Y2hS
ZWdpc3RlcigpLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIGFuZDY0KEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsNCiAg
ICAgICAgICAgIEJsaW5kZWRJbW0zMiBrZXkgPSBhbmRCbGluZGVkQ29uc3RhbnQoaW1tKTsNCiAg
ICAgICAgICAgIGFuZDY0KGtleS52YWx1ZTEsIGRlc3QpOw0KICAgICAgICAgICAgYW5kNjQoa2V5
LnZhbHVlMiwgZGVzdCk7DQogICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgYW5kNjQoaW1tLmFz
VHJ1c3RlZEltbTMyKCksIGRlc3QpOw0KICAgIH0NCiNsaW5lIDE0NjYgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2Vt
Ymxlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE0NzggIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2Vt
Ymxlci5oIg0KDQogICAgdm9pZCBsZWEzMihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkNCiAgICB7DQogICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGFk
ZHJlc3MuYmFzZSwgZGVzdCk7DQogICAgfQ0KDQoNCiAgICB2b2lkIGxlYTY0KEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgYWRkNjQoVHJ1c3RlZEltbTMy
KGFkZHJlc3Mub2Zmc2V0KSwgYWRkcmVzcy5iYXNlLCBkZXN0KTsNCiAgICB9DQojbGluZSAxNDkw
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2Vt
YmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0KICAgIGJvb2wgc2hvdWxkQmxpbmQoSW1tMzIgaW1t
KQ0KICAgIHsNCg0KDQoNCg0KDQojbGluZSAxNDk5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCINCg0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIHVpbnQzMl90IHZhbHVlID0gaW1tLmFzVHJ1c3Rl
ZEltbTMyKCkubV92YWx1ZTsNCiAgICAgICAgc3dpdGNoICh2YWx1ZSkgew0KICAgICAgICBjYXNl
IDB4ZmZmZjoNCiAgICAgICAgY2FzZSAweGZmZmZmZjoNCiAgICAgICAgY2FzZSAweGZmZmZmZmZm
Og0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAg
ICAgaWYgKHZhbHVlIDw9IDB4ZmYpDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICAgICAgaWYgKH52YWx1ZSA8PSAweGZmKQ0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghc2hvdWxkQ29uc2lkZXJCbGluZGluZygpKQ0K
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgIHJldHVybiBzaG91bGRCbGluZEZv
clNwZWNpZmljQXJjaCh2YWx1ZSk7DQojbGluZSAxNTIwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIuaCIN
CiAgICB9DQoNCiAgICBzdHJ1Y3QgQmxpbmRlZEltbTMyIHsNCiAgICAgICAgQmxpbmRlZEltbTMy
KGludDMyX3QgdjEsIGludDMyX3QgdjIpDQogICAgICAgICAgICA6IHZhbHVlMSh2MSkNCiAgICAg
ICAgICAgICwgdmFsdWUyKHYyKQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICAgICAgVHJ1c3Rl
ZEltbTMyIHZhbHVlMTsNCiAgICAgICAgVHJ1c3RlZEltbTMyIHZhbHVlMjsNCiAgICB9Ow0KDQog
ICAgdWludDMyX3Qga2V5Rm9yQ29uc3RhbnQodWludDMyX3QgdmFsdWUsIHVpbnQzMl90JiBtYXNr
KQ0KICAgIHsNCiAgICAgICAgdWludDMyX3Qga2V5ID0gcmFuZG9tKCk7DQogICAgICAgIGlmICh2
YWx1ZSA8PSAweGZmKQ0KICAgICAgICAgICAgbWFzayA9IDB4ZmY7DQogICAgICAgIGVsc2UgaWYg
KHZhbHVlIDw9IDB4ZmZmZikNCiAgICAgICAgICAgIG1hc2sgPSAweGZmZmY7DQogICAgICAgIGVs
c2UgaWYgKHZhbHVlIDw9IDB4ZmZmZmZmKQ0KICAgICAgICAgICAgbWFzayA9IDB4ZmZmZmZmOw0K
ICAgICAgICBlbHNlDQogICAgICAgICAgICBtYXNrID0gMHhmZmZmZmZmZjsNCiAgICAgICAgcmV0
dXJuIGtleSAmIG1hc2s7DQogICAgfQ0KDQogICAgdWludDMyX3Qga2V5Rm9yQ29uc3RhbnQodWlu
dDMyX3QgdmFsdWUpDQogICAgew0KICAgICAgICB1aW50MzJfdCBtYXNrID0gMDsNCiAgICAgICAg
cmV0dXJuIGtleUZvckNvbnN0YW50KHZhbHVlLCBtYXNrKTsNCiAgICB9DQoNCiAgICBCbGluZGVk
SW1tMzIgeG9yQmxpbmRDb25zdGFudChJbW0zMiBpbW0pDQogICAgew0KICAgICAgICB1aW50MzJf
dCBiYXNlVmFsdWUgPSBpbW0uYXNUcnVzdGVkSW1tMzIoKS5tX3ZhbHVlOw0KICAgICAgICB1aW50
MzJfdCBrZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFsdWUpOw0KICAgICAgICByZXR1cm4gQmxp
bmRlZEltbTMyKGJhc2VWYWx1ZSBeIGtleSwga2V5KTsNCiAgICB9DQoNCiAgICBCbGluZGVkSW1t
MzIgYWRkaXRpb25CbGluZGVkQ29uc3RhbnQoSW1tMzIgaW1tKQ0KICAgIHsNCiAgICAgICAgDQog
ICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYXNrVGFibGVbNF0gPSB7IDB4ZmZmZmZmZmMs
IDB4ZmZmZmZmZmYsIDB4ZmZmZmZmZmUsIDB4ZmZmZmZmZmYgfTsNCg0KICAgICAgICB1aW50MzJf
dCBiYXNlVmFsdWUgPSBpbW0uYXNUcnVzdGVkSW1tMzIoKS5tX3ZhbHVlOw0KICAgICAgICB1aW50
MzJfdCBrZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFsdWUpICYgbWFza1RhYmxlW2Jhc2VWYWx1
ZSAmIDNdOw0KICAgICAgICBpZiAoa2V5ID4gYmFzZVZhbHVlKQ0KICAgICAgICAgICAga2V5ID0g
a2V5IC0gYmFzZVZhbHVlOw0KICAgICAgICByZXR1cm4gQmxpbmRlZEltbTMyKGJhc2VWYWx1ZSAt
IGtleSwga2V5KTsNCiAgICB9DQogICAgDQogICAgQmxpbmRlZEltbTMyIGFuZEJsaW5kZWRDb25z
dGFudChJbW0zMiBpbW0pDQogICAgew0KICAgICAgICB1aW50MzJfdCBiYXNlVmFsdWUgPSBpbW0u
YXNUcnVzdGVkSW1tMzIoKS5tX3ZhbHVlOw0KICAgICAgICB1aW50MzJfdCBtYXNrID0gMDsNCiAg
ICAgICAgdWludDMyX3Qga2V5ID0ga2V5Rm9yQ29uc3RhbnQoYmFzZVZhbHVlLCBtYXNrKTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gQmxpbmRlZEltbTMyKCgoYmFzZVZhbHVl
ICYga2V5KSB8IH5rZXkpICYgbWFzaywgKChiYXNlVmFsdWUgJiB+a2V5KSB8IGtleSkgJiBtYXNr
KTsNCiAgICB9DQogICAgDQogICAgQmxpbmRlZEltbTMyIG9yQmxpbmRlZENvbnN0YW50KEltbTMy
IGltbSkNCiAgICB7DQogICAgICAgIHVpbnQzMl90IGJhc2VWYWx1ZSA9IGltbS5hc1RydXN0ZWRJ
bW0zMigpLm1fdmFsdWU7DQogICAgICAgIHVpbnQzMl90IG1hc2sgPSAwOw0KICAgICAgICB1aW50
MzJfdCBrZXkgPSBrZXlGb3JDb25zdGFudChiYXNlVmFsdWUsIG1hc2spOw0KICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgIHJldHVybiBCbGluZGVkSW1tMzIoKGJhc2VWYWx1ZSAmIGtleSkgJiBt
YXNrLCAoYmFzZVZhbHVlICYgfmtleSkgJiBtYXNrKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBs
b2FkWG9yQmxpbmRlZENvbnN0YW50KEJsaW5kZWRJbW0zMiBjb25zdGFudCwgUmVnaXN0ZXJJRCBk
ZXN0KQ0KICAgIHsNCiAgICAgICAgbW92ZShjb25zdGFudC52YWx1ZTEsIGRlc3QpOw0KICAgICAg
ICB4b3IzMihjb25zdGFudC52YWx1ZTIsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGFk
ZDMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNob3Vs
ZEJsaW5kKGltbSkpIHsNCiAgICAgICAgICAgIEJsaW5kZWRJbW0zMiBrZXkgPSBhZGRpdGlvbkJs
aW5kZWRDb25zdGFudChpbW0pOw0KICAgICAgICAgICAgYWRkMzIoa2V5LnZhbHVlMSwgZGVzdCk7
DQogICAgICAgICAgICBhZGQzMihrZXkudmFsdWUyLCBkZXN0KTsNCiAgICAgICAgfSBlbHNlDQog
ICAgICAgICAgICBhZGQzMihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7DQogICAgfQ0KDQog
ICAgdm9pZCBhZGQzMihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgew0KICAgICAgICAgICAgQmxp
bmRlZEltbTMyIGtleSA9IGFkZGl0aW9uQmxpbmRlZENvbnN0YW50KGltbSk7DQogICAgICAgICAg
ICBhZGQzMihrZXkudmFsdWUxLCBzcmMsIGRlc3QpOw0KICAgICAgICAgICAgYWRkMzIoa2V5LnZh
bHVlMiwgZGVzdCk7DQogICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgYWRkMzIoaW1tLmFzVHJ1
c3RlZEltbTMyKCksIHNyYywgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYWRkUHRyKElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNob3VsZEJsaW5k
KGltbSkpIHsNCiAgICAgICAgICAgIEJsaW5kZWRJbW0zMiBrZXkgPSBhZGRpdGlvbkJsaW5kZWRD
b25zdGFudChpbW0pOw0KICAgICAgICAgICAgYWRkUHRyKGtleS52YWx1ZTEsIGRlc3QpOw0KICAg
ICAgICAgICAgYWRkUHRyKGtleS52YWx1ZTIsIGRlc3QpOw0KICAgICAgICB9IGVsc2UNCiAgICAg
ICAgICAgIGFkZFB0cihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7DQogICAgfQ0KDQogICAg
dm9pZCBtdWwzMihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQog
ICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgew0KICAgICAgICAgICAgaWYgKHNy
YyAhPSBkZXN0IHx8IGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7DQogICAgICAg
ICAgICAgICAgaWYgKHNyYyA9PSBkZXN0KSB7DQogICAgICAgICAgICAgICAgICAgIG1vdmUoc3Jj
LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsNCiAgICAgICAgICAgICAgICAgICAgc3Jj
ID0gc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKTsNCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgbG9hZFhvckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KGltbSks
IGRlc3QpOw0KICAgICAgICAgICAgICAgIG11bDMyKHNyYywgZGVzdCk7DQogICAgICAgICAgICAg
ICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAg
ICAgICAgICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOw0KICAgICAgICAgICAg
d2hpbGUgKG5vcENvdW50LS0pDQogICAgICAgICAgICAgICAgbm9wKCk7DQogICAgICAgIH0NCiAg
ICAgICAgbXVsMzIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIHNyYywgZGVzdCk7DQogICAgfQ0KDQog
ICAgdm9pZCBhbmQzMihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAg
IGlmIChzaG91bGRCbGluZChpbW0pKSB7DQogICAgICAgICAgICBCbGluZGVkSW1tMzIga2V5ID0g
YW5kQmxpbmRlZENvbnN0YW50KGltbSk7DQogICAgICAgICAgICBhbmQzMihrZXkudmFsdWUxLCBk
ZXN0KTsNCiAgICAgICAgICAgIGFuZDMyKGtleS52YWx1ZTIsIGRlc3QpOw0KICAgICAgICB9IGVs
c2UNCiAgICAgICAgICAgIGFuZDMyKGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsNCiAgICB9
DQoNCiAgICB2b2lkIGFuZFB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQog
ICAgICAgIGlmIChzaG91bGRCbGluZChpbW0pKSB7DQogICAgICAgICAgICBCbGluZGVkSW1tMzIg
a2V5ID0gYW5kQmxpbmRlZENvbnN0YW50KGltbSk7DQogICAgICAgICAgICBhbmRQdHIoa2V5LnZh
bHVlMSwgZGVzdCk7DQogICAgICAgICAgICBhbmRQdHIoa2V5LnZhbHVlMiwgZGVzdCk7DQogICAg
ICAgIH0gZWxzZQ0KICAgICAgICAgICAgYW5kUHRyKGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0
KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhbmQzMihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkg
ew0KICAgICAgICAgICAgaWYgKHNyYyA9PSBkZXN0KQ0KICAgICAgICAgICAgICAgIHJldHVybiBh
bmQzMihpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7DQogICAgICAgICAgICBsb2FkWG9yQmxp
bmRlZENvbnN0YW50KHhvckJsaW5kQ29uc3RhbnQoaW1tKSwgZGVzdCk7DQogICAgICAgICAgICBh
bmQzMihzcmMsIGRlc3QpOw0KICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgIGFuZDMyKGltbS5h
c1RydXN0ZWRJbW0zMigpLCBzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIHZvaWQgbW92ZShJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzaG91bGRCbGluZChp
bW0pKQ0KICAgICAgICAgICAgbG9hZFhvckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50
KGltbSksIGRlc3QpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtb3ZlKGltbS5hc1RydXN0
ZWRJbW0zMigpLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBvcjMyKEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzaG91
bGRCbGluZChpbW0pKSB7DQogICAgICAgICAgICBpZiAoc3JjID09IGRlc3QpDQogICAgICAgICAg
ICAgICAgcmV0dXJuIG9yMzIoaW1tLCBkZXN0KTsNCiAgICAgICAgICAgIGxvYWRYb3JCbGluZGVk
Q29uc3RhbnQoeG9yQmxpbmRDb25zdGFudChpbW0pLCBkZXN0KTsNCiAgICAgICAgICAgIG9yMzIo
c3JjLCBkZXN0KTsNCiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBvcjMyKGltbS5hc1RydXN0
ZWRJbW0zMigpLCBzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIG9yMzIoSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1t
KSkgew0KICAgICAgICAgICAgQmxpbmRlZEltbTMyIGtleSA9IG9yQmxpbmRlZENvbnN0YW50KGlt
bSk7DQogICAgICAgICAgICBvcjMyKGtleS52YWx1ZTEsIGRlc3QpOw0KICAgICAgICAgICAgb3Iz
MihrZXkudmFsdWUyLCBkZXN0KTsNCiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBvcjMyKGlt
bS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBwb2tlKElt
bTMyIHZhbHVlLCBpbnQgaW5kZXggPSAwKQ0KICAgIHsNCiAgICAgICAgc3RvcmUzMih2YWx1ZSwg
YWRkcmVzc0ZvclBva2UoaW5kZXgpKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBwb2tlKEltbVB0
ciB2YWx1ZSwgaW50IGluZGV4ID0gMCkNCiAgICB7DQogICAgICAgIHN0b3JlUHRyKHZhbHVlLCBh
ZGRyZXNzRm9yUG9rZShpbmRleCkpOw0KICAgIH0NCiAgICANCg0KICAgIHZvaWQgcG9rZShJbW02
NCB2YWx1ZSwgaW50IGluZGV4ID0gMCkNCiAgICB7DQogICAgICAgIHN0b3JlNjQodmFsdWUsIGFk
ZHJlc3NGb3JQb2tlKGluZGV4KSk7DQogICAgfQ0KDQogICAgdm9pZCBzdG9yZTY0KEltbTY0IGlt
bSwgQWRkcmVzcyBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkgJiYg
aGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpIHsNCiAgICAgICAgICAgIFJlZ2lzdGVy
SUQgc2NyYXRjaFJlZ2lzdGVyID0gc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKTsNCiAgICAg
ICAgICAgIGxvYWRSb3RhdGlvbkJsaW5kZWRDb25zdGFudChyb3RhdGlvbkJsaW5kQ29uc3RhbnQo
aW1tKSwgc2NyYXRjaFJlZ2lzdGVyKTsNCiAgICAgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lz
dGVyLCBkZXN0KTsNCiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBzdG9yZTY0KGltbS5hc1Ry
dXN0ZWRJbW02NCgpLCBkZXN0KTsNCiAgICB9DQoNCiNsaW5lIDE3MzMgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxNYWNyb0Fzc2Vt
Ymxlci5oIg0KICAgIA0KICAgIHZvaWQgc3RvcmUzMihJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkN
CiAgICB7DQogICAgICAgIGlmIChzaG91bGRCbGluZChpbW0pKSB7DQoNCiAgICAgICAgICAgIEJs
aW5kZWRJbW0zMiBibGluZCA9IHhvckJsaW5kQ29uc3RhbnQoaW1tKTsNCiAgICAgICAgICAgIHN0
b3JlMzIoYmxpbmQudmFsdWUxLCBkZXN0KTsNCiAgICAgICAgICAgIHhvcjMyKGJsaW5kLnZhbHVl
MiwgZGVzdCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNzU0ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9B
c3NlbWJsZXIuaCINCiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBzdG9yZTMyKGltbS5hc1Ry
dXN0ZWRJbW0zMigpLCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBzdWIzMihJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzaG91bGRCbGluZChpbW0p
KSB7DQogICAgICAgICAgICBCbGluZGVkSW1tMzIga2V5ID0gYWRkaXRpb25CbGluZGVkQ29uc3Rh
bnQoaW1tKTsNCiAgICAgICAgICAgIHN1YjMyKGtleS52YWx1ZTEsIGRlc3QpOw0KICAgICAgICAg
ICAgc3ViMzIoa2V5LnZhbHVlMiwgZGVzdCk7DQogICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAg
c3ViMzIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IHN1YlB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChz
aG91bGRCbGluZChpbW0pKSB7DQogICAgICAgICAgICBCbGluZGVkSW1tMzIga2V5ID0gYWRkaXRp
b25CbGluZGVkQ29uc3RhbnQoaW1tKTsNCiAgICAgICAgICAgIHN1YlB0cihrZXkudmFsdWUxLCBk
ZXN0KTsNCiAgICAgICAgICAgIHN1YlB0cihrZXkudmFsdWUyLCBkZXN0KTsNCiAgICAgICAgfSBl
bHNlDQogICAgICAgICAgICBzdWJQdHIoaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3QpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIHhvcjMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIGlmIChzaG91bGRCbGluZChpbW0pKSB7DQogICAg
ICAgICAgICBCbGluZGVkSW1tMzIgYmxpbmQgPSB4b3JCbGluZENvbnN0YW50KGltbSk7DQogICAg
ICAgICAgICB4b3IzMihibGluZC52YWx1ZTEsIHNyYywgZGVzdCk7DQogICAgICAgICAgICB4b3Iz
MihibGluZC52YWx1ZTIsIGRlc3QpOw0KICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgIHhvcjMy
KGltbS5hc1RydXN0ZWRJbW0zMigpLCBzcmMsIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lk
IHhvcjMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgaWYgKHNo
b3VsZEJsaW5kKGltbSkpIHsNCiAgICAgICAgICAgIEJsaW5kZWRJbW0zMiBibGluZCA9IHhvckJs
aW5kQ29uc3RhbnQoaW1tKTsNCiAgICAgICAgICAgIHhvcjMyKGJsaW5kLnZhbHVlMSwgZGVzdCk7
DQogICAgICAgICAgICB4b3IzMihibGluZC52YWx1ZTIsIGRlc3QpOw0KICAgICAgICB9IGVsc2UN
CiAgICAgICAgICAgIHhvcjMyKGltbS5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsNCiAgICB9DQoN
CiAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBJbW0zMiByaWdodCkNCiAgICB7DQogICAgICAgIGlmIChzaG91bGRCbGluZChyaWdodCkp
IHsNCiAgICAgICAgICAgIGlmIChoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSkgew0K
ICAgICAgICAgICAgICAgIGxvYWRYb3JCbGluZGVkQ29uc3RhbnQoeG9yQmxpbmRDb25zdGFudChy
aWdodCksIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkpOw0KICAgICAgICAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICB1
aW50MzJfdCBub3BDb3VudCA9IHJhbmRvbSgpICYgMzsNCiAgICAgICAgICAgIHdoaWxlIChub3BD
b3VudC0tKQ0KICAgICAgICAgICAgICAgIG5vcCgpOw0KICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKGNvbmQsIGxlZnQsIHJpZ2h0LmFzVHJ1c3RlZEltbTMyKCkpOw0KICAgICAgICB9DQogICAg
ICAgIA0KICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgcmlnaHQuYXNUcnVzdGVk
SW1tMzIoKSk7DQogICAgfQ0KDQogICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpDQog
ICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQocmlnaHQpKSB7DQogICAgICAgICAgICBpZiAo
bGVmdCAhPSBkZXN0IHx8IGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7DQogICAg
ICAgICAgICAgICAgUmVnaXN0ZXJJRCBibGluZGVkQ29uc3RhbnRSZWcgPSBkZXN0Ow0KICAgICAg
ICAgICAgICAgIGlmIChsZWZ0ID09IGRlc3QpDQogICAgICAgICAgICAgICAgICAgIGJsaW5kZWRD
b25zdGFudFJlZyA9IHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCk7DQogICAgICAgICAgICAg
ICAgbG9hZFhvckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KHJpZ2h0KSwgYmxpbmRl
ZENvbnN0YW50UmVnKTsNCiAgICAgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgYmxp
bmRlZENvbnN0YW50UmVnLCBkZXN0KTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAg
ICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgdWludDMyX3Qg
bm9wQ291bnQgPSByYW5kb20oKSAmIDM7DQogICAgICAgICAgICB3aGlsZSAobm9wQ291bnQtLSkN
CiAgICAgICAgICAgICAgICBub3AoKTsNCiAgICAgICAgICAgIGNvbXBhcmUzMihjb25kLCBsZWZ0
LCByaWdodC5hc1RydXN0ZWRJbW0zMigpLCBkZXN0KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAg
ICAgICAgfQ0KDQogICAgICAgIGNvbXBhcmUzMihjb25kLCBsZWZ0LCByaWdodC5hc1RydXN0ZWRJ
bW0zMigpLCBkZXN0KTsNCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpDQog
ICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgew0KICAgICAgICAgICAgaWYgKHNy
YyAhPSBkZXN0IHx8IGhhdmVTY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKSB7DQogICAgICAg
ICAgICAgICAgaWYgKHNyYyA9PSBkZXN0KSB7DQogICAgICAgICAgICAgICAgICAgIG1vdmUoc3Jj
LCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpKTsNCiAgICAgICAgICAgICAgICAgICAgc3Jj
ID0gc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKTsNCiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgbG9hZFhvckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KGltbSks
IGRlc3QpOw0KICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBzcmMsIGRl
c3QpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAg
ICAgIHVpbnQzMl90IG5vcENvdW50ID0gcmFuZG9tKCkgJiAzOw0KICAgICAgICAgICAgd2hpbGUg
KG5vcENvdW50LS0pDQogICAgICAgICAgICAgICAgbm9wKCk7DQogICAgICAgIH0NCiAgICAgICAg
cmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIHNyYywgaW1tLmFzVHJ1c3RlZEltbTMyKCksIGRlc3Qp
OyAgICAgICAgICAgIA0KICAgIH0NCiAgICANCiAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
DQogICAgew0KICAgICAgICBpZiAoc3JjID09IGRlc3QpDQogICAgICAgICAgICAoKHZvaWQpMCk7
DQoNCiAgICAgICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsNCiAgICAgICAgICAgIGlmIChzcmMg
PT0gZGVzdCkgew0KICAgICAgICAgICAgICAgIG1vdmUoc3JjLCBzY3JhdGNoUmVnaXN0ZXJGb3JC
bGluZGluZygpKTsNCiAgICAgICAgICAgICAgICBzcmMgPSBzY3JhdGNoUmVnaXN0ZXJGb3JCbGlu
ZGluZygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgbG9hZFhvckJsaW5kZWRDb25zdGFu
dCh4b3JCbGluZENvbnN0YW50KGltbSksIGRlc3QpOw0KICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE11bDMyKGNvbmQsIHNyYywgZGVzdCk7ICANCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gYnJh
bmNoTXVsMzIoY29uZCwgc3JjLCBpbW0uYXNUcnVzdGVkSW1tMzIoKSwgZGVzdCk7DQogICAgfQ0K
DQogICAgDQogICAgDQogICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmMsIEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNj
cmF0Y2gpDQogICAgew0KICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgew0KICAgICAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgbG9hZFhv
ckJsaW5kZWRDb25zdGFudCh4b3JCbGluZENvbnN0YW50KGltbSksIHNjcmF0Y2gpOw0KICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYywgc2NyYXRjaCwgZGVzdCk7DQogICAg
ICAgIH0NCiAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYywgaW1tLmFzVHJ1c3Rl
ZEltbTMyKCksIGRlc3QpOyAgICAgICAgICAgIA0KICAgIH0NCiAgICANCiAgICB2b2lkIGxzaGlm
dDMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsNCiAgICAgICAgbHNoaWZ0MzIo
dHJ1c3RlZEltbTMyRm9yU2hpZnQoaW1tKSwgZGVzdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
bHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIEltbTMyIGFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQ0K
ICAgIHsNCiAgICAgICAgbHNoaWZ0MzIoc3JjLCB0cnVzdGVkSW1tMzJGb3JTaGlmdChhbW91bnQp
LCBkZXN0KTsNCiAgICB9DQogICAgDQogICAgdm9pZCByc2hpZnQzMihJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHJzaGlmdDMyKHRydXN0ZWRJbW0zMkZvclNoaWZ0
KGltbSksIGRlc3QpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQg
c3JjLCBJbW0zMiBhbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkNCiAgICB7DQogICAgICAgIHJzaGlm
dDMyKHNyYywgdHJ1c3RlZEltbTMyRm9yU2hpZnQoYW1vdW50KSwgZGVzdCk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgdXJzaGlmdDMyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQ0KICAgIHsN
CiAgICAgICAgdXJzaGlmdDMyKHRydXN0ZWRJbW0zMkZvclNoaWZ0KGltbSksIGRlc3QpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgSW1tMzIgYW1vdW50
LCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0KICAgICAgICB1cnNoaWZ0MzIoc3JjLCB0cnVzdGVk
SW1tMzJGb3JTaGlmdChhbW91bnQpLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lkIG11bDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpDQogICAgew0K
ICAgICAgICBpZiAoaGFzT25lQml0U2V0KGltbS5tX3ZhbHVlKSkgew0KICAgICAgICAgICAgbHNo
aWZ0MzIoc3JjLCBUcnVzdGVkSW1tMzIoZ2V0TFNCU2V0KGltbS5tX3ZhbHVlKSksIGRlc3QpOw0K
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6bXVsMzIoaW1tLCBzcmMsIGRlc3QpOw0KICAgIH0NCg0KICAgIA0KICAgIHZvaWQgaml0QXNz
ZXJ0KGNvbnN0IFdURjo6U2NvcGVkTGFtYmRhPEp1bXAodm9pZCk+Jik7DQoNCg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1bmN0aW9uLCB2b2lkKiBhcmcpOw0KDQogICAgX19kZWNs
c3BlYyhkbGxleHBvcnQpIHZvaWQgcHJvYmUoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
Pik7DQoNCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+DQog
ICAgdm9pZCBwcmludChBcmd1bWVudHMmJi4uLiBhcmdzKTsNCg0KICAgIHZvaWQgcHJpbnQoUHJp
bnRlcjo6UHJpbnRSZWNvcmRMaXN0Kik7DQojbGluZSAxOTkxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTWFjcm9Bc3NlbWJsZXIu
aCINCn07DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCg0K
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVs
YXRpb25hbENvbmRpdGlvbik7DQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24pOw0Kdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsNCg0KfSAN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDI1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxc
TWFjcm9Bc3NlbWJsZXIuaCINCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEJhc2ljQmxvY2tMb2NhdGlvbi5oIg0KDQoN
Cm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDQ2FsbEhlbHBlcnM7DQpjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7DQoNCmNsYXNzIEJhc2ljQmxvY2tMb2NhdGlvbiB7DQogICAgcHVibGljOiB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0
aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxs
b2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25B
ZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIHN0ZDo6cGFpcjxpbnQs
IGludD4gR2FwOw0KDQogICAgQmFzaWNCbG9ja0xvY2F0aW9uKGludCBzdGFydE9mZnNldCA9IC0x
LCBpbnQgZW5kT2Zmc2V0ID0gLTEpOw0KDQogICAgaW50IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydE9mZnNldDsgfQ0KICAgIGludCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2VuZE9mZnNldDsgfQ0KICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50IHN0YXJ0T2Zmc2V0
KSB7IG1fc3RhcnRPZmZzZXQgPSBzdGFydE9mZnNldDsgfQ0KICAgIHZvaWQgc2V0RW5kT2Zmc2V0
KGludCBlbmRPZmZzZXQpIHsgbV9lbmRPZmZzZXQgPSBlbmRPZmZzZXQ7IH0NCiAgICBib29sIGhh
c0V4ZWN1dGVkKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRpb25Db3VudCA+IDA7IH0NCiAgICBz
aXplX3QgZXhlY3V0aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGlvbkNvdW50OyB9
DQogICAgdm9pZCBpbnNlcnRHYXAoaW50LCBpbnQpOw0KICAgIFZlY3RvcjxHYXA+IGdldEV4ZWN1
dGVkUmFuZ2VzKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgZHVtcERh
dGEoKSBjb25zdDsNCg0KDQogICAgdm9pZCBlbWl0RXhlY3V0ZUNvZGUoQ0NhbGxIZWxwZXJzJikg
Y29uc3Q7DQoNCg0KI2xpbmUgNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcQmFzaWNCbG9ja0xvY2F0aW9uLmgiDQojbGluZSA2MSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxCYXNpY0Jsb2NrTG9jYXRpb24uaCINCg0KcHJpdmF0ZToNCiAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOw0KDQogICAgaW50IG1fc3RhcnRPZmZzZXQ7DQogICAgaW50IG1f
ZW5kT2Zmc2V0Ow0KICAgIFZlY3RvcjxHYXA+IG1fZ2FwczsNCiAgICBVQ1BVUmVnaXN0ZXIgbV9l
eGVjdXRpb25Db3VudDsNCn07DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDb250cm9sRmxvd1Byb2ZpbGVy
LmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFZNOw0KDQpzdHJ1Y3QgQmFzaWNCbG9j
a0tleSB7DQogICAgQmFzaWNCbG9ja0tleSgpDQogICAgICAgIDogbV9zdGFydE9mZnNldCgtMykN
CiAgICAgICAgLCBtX2VuZE9mZnNldCgtMykNCiAgICB7IH0NCg0KICAgIEJhc2ljQmxvY2tLZXko
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQ0KICAgICAgICA6IG1fc3RhcnRPZmZzZXQo
c3RhcnRPZmZzZXQpDQogICAgICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQ0KICAgIHsgfQ0K
DQogICAgQmFzaWNCbG9ja0tleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpDQogICAg
ICAgIDogbV9zdGFydE9mZnNldCgtMikNCiAgICAgICAgLCBtX2VuZE9mZnNldCgtMikNCiAgICB7
IH0NCg0KICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0T2Zmc2V0ID09IC0yICYmIG1fZW5kT2Zmc2V0ID09IC0yOyB9DQogICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJhc2ljQmxvY2tLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQgJiYgbV9lbmRPZmZzZXQgPT0gb3RoZXIubV9l
bmRPZmZzZXQ7IH0NCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9m
ZnNldCArIG1fZW5kT2Zmc2V0ICsgMTsgfQ0KDQogICAgaW50IG1fc3RhcnRPZmZzZXQ7DQogICAg
aW50IG1fZW5kT2Zmc2V0Ow0KfTsNCg0Kc3RydWN0IEJhc2ljQmxvY2tLZXlIYXNoIHsNCiAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBCYXNpY0Jsb2NrS2V5JiBrZXkpIHsgcmV0dXJuIGtl
eS5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBCYXNpY0Jsb2NrS2V5JiBh
LCBjb25zdCBCYXNpY0Jsb2NrS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0NCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOw0KfTsN
Cg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBE
ZWZhdWx0SGFzaDsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6QmFzaWNCbG9j
a0tleT4gOiBKU0M6OkJhc2ljQmxvY2tLZXlIYXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHM7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6
QmFzaWNCbG9ja0tleT4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpCYXNpY0Jsb2NrS2V5
PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsN
Cn07DQoNCn0gDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpzdHJ1Y3QgQmFzaWNCbG9ja1JhbmdlIHsN
CiAgICBpbnQgbV9zdGFydE9mZnNldDsNCiAgICBpbnQgbV9lbmRPZmZzZXQ7DQogICAgYm9vbCBt
X2hhc0V4ZWN1dGVkOw0KICAgIHNpemVfdCBtX2V4ZWN1dGlvbkNvdW50Ow0KfTsNCg0KY2xhc3Mg
Q29udHJvbEZsb3dQcm9maWxlciB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0
dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTog
dXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsN
CnB1YmxpYzoNCiAgICBDb250cm9sRmxvd1Byb2ZpbGVyKCk7DQogICAgfkNvbnRyb2xGbG93UHJv
ZmlsZXIoKTsNCiAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGdldEJhc2ljQmxvY2tMb2NhdGlvbihp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBkdW1wRGF0YSgpIGNvbnN0Ow0KICAgIFZlY3RvcjxC
YXNpY0Jsb2NrUmFuZ2U+IGdldEJhc2ljQmxvY2tzRm9yU291cmNlSUQoaW50cHRyX3Qgc291cmNl
SUQsIFZNJikgY29uc3Q7DQogICAgQmFzaWNCbG9ja0xvY2F0aW9uKiBkdW1teUJhc2ljQmxvY2so
KSB7IHJldHVybiAmbV9kdW1teUJhc2ljQmxvY2s7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgYm9vbCBoYXNCYXNpY0Jsb2NrQXRUZXh0T2Zmc2V0QmVlbkV4ZWN1dGVkKGludCwgaW50cHRy
X3QsIFZNJik7ICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc2l6ZV90IGJhc2ljQmxvY2tF
eGVjdXRpb25Db3VudEF0VGV4dE9mZnNldChpbnQsIGludHB0cl90LCBWTSYpOyANCg0KcHJpdmF0
ZToNCiAgICB0eXBlZGVmIEhhc2hNYXA8QmFzaWNCbG9ja0tleSwgQmFzaWNCbG9ja0xvY2F0aW9u
Kj4gQmxvY2tMb2NhdGlvbkNhY2hlOw0KICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgQmxv
Y2tMb2NhdGlvbkNhY2hlPiBTb3VyY2VJREJ1Y2tldHM7DQoNCiAgICBTb3VyY2VJREJ1Y2tldHMg
bV9zb3VyY2VJREJ1Y2tldHM7DQogICAgQmFzaWNCbG9ja0xvY2F0aW9uIG1fZHVtbXlCYXNpY0Js
b2NrOw0KfTsNCg0KfSANCiNsaW5lIDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXERhdGVJbnN0YW5j
ZUNhY2hlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvR3JlZ29yaWFuRGF0ZVRpbWUuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvRGF0ZU1hdGguaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJDOlxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcV2luZG93
cyBLaXRzXFwxMFxcaW5jbHVkZVxcMTAuMC4xOTA0MS4wXFx1Y3J0XFxtYXRoLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRGF0ZU1hdGguaCINCg0KDQoNCg0KDQoN
Cm5hbWVzcGFjZSBXVEYgew0KDQplbnVtIFRpbWVUeXBlIHsNCiAgICBVVENUaW1lID0gMCwNCiAg
ICBMb2NhbFRpbWUNCn07DQoNCnN0cnVjdCBMb2NhbFRpbWVPZmZzZXQgew0KICAgIHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsg
KCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0g
aW50OyB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0g
aW50Ow0KDQogICAgTG9jYWxUaW1lT2Zmc2V0KCkNCiAgICAgICAgOiBpc0RTVChmYWxzZSkNCiAg
ICAgICAgLCBvZmZzZXQoMCkNCiAgICB7DQogICAgfQ0KDQogICAgTG9jYWxUaW1lT2Zmc2V0KGJv
b2wgaXNEU1QsIGludCBvZmZzZXQpDQogICAgICAgIDogaXNEU1QoaXNEU1QpDQogICAgICAgICwg
b2Zmc2V0KG9mZnNldCkNCiAgICB7DQogICAgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IExvY2FsVGltZU9mZnNldCYgb3RoZXIpDQogICAgew0KICAgICAgICByZXR1cm4gaXNEU1QgPT0g
b3RoZXIuaXNEU1QgJiYgb2Zmc2V0ID09IG90aGVyLm9mZnNldDsNCiAgICB9DQoNCiAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgTG9jYWxUaW1lT2Zmc2V0JiBvdGhlcikNCiAgICB7DQogICAgICAg
IHJldHVybiBpc0RTVCAhPSBvdGhlci5pc0RTVCB8fCBvZmZzZXQgIT0gb3RoZXIub2Zmc2V0Ow0K
ICAgIH0NCg0KICAgIGJvb2wgaXNEU1Q7DQogICAgaW50IG9mZnNldDsNCn07DQoNCnZvaWQgaW5p
dGlhbGl6ZURhdGVzKCk7DQppbnQgZXF1aXZhbGVudFllYXJGb3JEU1QoaW50IHllYXIpOw0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBpc0xvY2FsVGltZSk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRl
ZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hh
ciogZGF0ZVN0cmluZywgYm9vbCYgaXNMb2NhbFRpbWUpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgU3RyaW5nIG1ha2VSRkMyODIyRGF0ZVN0cmluZyh1bnNpZ25lZCBkYXlPZldlZWssIHVuc2ln
bmVkIGRheSwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIHllYXIsIHVuc2lnbmVkIGhvdXJzLCB1
bnNpZ25lZCBtaW51dGVzLCB1bnNpZ25lZCBzZWNvbmRzLCBpbnQgdXRjT2Zmc2V0KTsNCg0KaW5s
aW5lIGRvdWJsZSBqc0N1cnJlbnRUaW1lKCkNCnsNCiAgICANCiAgICByZXR1cm4gZmxvb3IoV2Fs
bFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpOw0KfQ0KDQpl
eHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IGNoYXIqIGNvbnN0IHdlZWtkYXlOYW1l
WzddOw0KZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBjaGFyKiBjb25zdCBtb250
aE5hbWVbMTJdOw0KZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBjaGFyKiBjb25z
dCBtb250aEZ1bGxOYW1lWzEyXTsNCmV4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3Qg
aW50IGZpcnN0RGF5T2ZNb250aFsyXVsxMl07DQoNCnN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGhv
dXJzUGVyRGF5ID0gMjQuMDsNCnN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1pbnV0ZXNQZXJIb3Vy
ID0gNjAuMDsNCnN0YXRpYyBjb25zdGV4cHIgZG91YmxlIHNlY29uZHNQZXJNaW51dGUgPSA2MC4w
Ow0Kc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbXNQZXJTZWNvbmQgPSAxMDAwLjA7DQpzdGF0aWMg
Y29uc3RleHByIGRvdWJsZSBtc1Blck1vbnRoID0gMjU5MjAwMDAwMC4wOw0Kc3RhdGljIGNvbnN0
ZXhwciBkb3VibGUgc2Vjb25kc1BlckhvdXIgPSBzZWNvbmRzUGVyTWludXRlICogbWludXRlc1Bl
ckhvdXI7DQpzdGF0aWMgY29uc3RleHByIGRvdWJsZSBzZWNvbmRzUGVyRGF5ID0gc2Vjb25kc1Bl
ckhvdXIgKiBob3Vyc1BlckRheTsNCnN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1zUGVyTWludXRl
ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyTWludXRlOw0Kc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgbXNQZXJIb3VyID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVySG91cjsNCnN0YXRpYyBjb25z
dGV4cHIgZG91YmxlIG1zUGVyRGF5ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyRGF5Ow0KDQpz
dGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhVbml4VGltZSA9IDIxNDU4NTkyMDAuMDsgDQoNCg0K
DQpzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtYXhFQ01BU2NyaXB0VGltZSA9IDguNjRFMTU7DQoN
CmNsYXNzIFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHMgew0KcHVibGljOg0KICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBob3Vyc1BlckRheSA9IDI0Ow0KICAgIHN0YXRpYyBjb25z
dGV4cHIgaW50NjRfdCBtaW51dGVzUGVySG91ciA9IDYwOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50NjRfdCBzZWNvbmRzUGVyTWludXRlID0gNjA7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2
NF90IG1zUGVyU2Vjb25kID0gMTAwMDsNCiAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbXNQ
ZXJNb250aCA9IDI1OTIwMDAwMDA7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IHNlY29u
ZHNQZXJIb3VyID0gc2Vjb25kc1Blck1pbnV0ZSAqIG1pbnV0ZXNQZXJIb3VyOw0KICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50NjRfdCBzZWNvbmRzUGVyRGF5ID0gc2Vjb25kc1BlckhvdXIgKiBob3Vy
c1BlckRheTsNCiAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbXNQZXJNaW51dGUgPSBtc1Bl
clNlY29uZCAqIHNlY29uZHNQZXJNaW51dGU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90
IG1zUGVySG91ciA9IG1zUGVyU2Vjb25kICogc2Vjb25kc1BlckhvdXI7DQogICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQ2NF90IG1zUGVyRGF5ID0gbXNQZXJTZWNvbmQgKiBzZWNvbmRzUGVyRGF5Ow0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBtYXhFQ01BU2NyaXB0VGltZSA9IDguNjRFMTU7
DQoNCiAgICBleHBsaWNpdCBUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzKGludDY0X3Qg
dmFsdWUpDQogICAgICAgIDogbV92YWx1ZSh2YWx1ZSkNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICB9DQoNCiAgICBpbnQ2NF90IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQ0KICAgIGRvdWJsZSBhc0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4obV92YWx1ZSk7IH0NCnByaXZhdGU6DQogICAgaW50NjRfdCBtX3ZhbHVlOw0KfTsNCg0KaW5s
aW5lIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUgdCkNCnsNCiAgICBpZiAoc3RkOjphYnModCkgPiBt
YXhFQ01BU2NyaXB0VGltZSkNCiAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6cXVpZXRfTmFOKCk7DQogICAgcmV0dXJuIHN0ZDo6dHJ1bmModCkgKyAwLjA7DQp9DQoN
CmlubGluZSBkb3VibGUgZGF5c0Zyb20xOTcwVG9ZZWFyKGludCB5ZWFyKQ0Kew0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERheXNCZWZvcmUx
OTcxQnk0UnVsZSA9IDE5NzAgLyA0Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGV4Y2x1ZGVk
TGVhcERheXNCZWZvcmUxOTcxQnkxMDBSdWxlID0gMTk3MCAvIDEwMDsNCiAgICBzdGF0aWMgY29u
c3RleHByIGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGUgPSAxOTcwIC8gNDAwOw0KDQog
ICAgY29uc3QgZG91YmxlIHllYXJNaW51c09uZSA9IHllYXIgLSAxOw0KICAgIGNvbnN0IGRvdWJs
ZSB5ZWFyc1RvQWRkQnk0UnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDQuMCkgLSBsZWFwRGF5
c0JlZm9yZTE5NzFCeTRSdWxlOw0KICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvRXhjbHVkZUJ5MTAw
UnVsZSA9IGZsb29yKHllYXJNaW51c09uZSAvIDEwMC4wKSAtIGV4Y2x1ZGVkTGVhcERheXNCZWZv
cmUxOTcxQnkxMDBSdWxlOw0KICAgIGNvbnN0IGRvdWJsZSB5ZWFyc1RvQWRkQnk0MDBSdWxlID0g
Zmxvb3IoeWVhck1pbnVzT25lIC8gNDAwLjApIC0gbGVhcERheXNCZWZvcmUxOTcxQnk0MDBSdWxl
Ow0KDQogICAgcmV0dXJuIDM2NS4wICogKHllYXIgLSAxOTcwLjApICsgeWVhcnNUb0FkZEJ5NFJ1
bGUgLSB5ZWFyc1RvRXhjbHVkZUJ5MTAwUnVsZSArIHllYXJzVG9BZGRCeTQwMFJ1bGU7DQp9DQoN
CmlubGluZSBpbnQ2NF90IGRheXNGcm9tMTk3MFRvWWVhclRpbWVDbGlwcGVkUG9zaXRpdmUoaW50
IHllYXIpDQp7DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgbGVhcERheXNCZWZvcmUxOTcxQnk0
UnVsZSA9IDE5NzAgLyA0Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGV4Y2x1ZGVkTGVhcERh
eXNCZWZvcmUxOTcxQnkxMDBSdWxlID0gMTk3MCAvIDEwMDsNCiAgICBzdGF0aWMgY29uc3RleHBy
IGludCBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGUgPSAxOTcwIC8gNDAwOw0KDQogICAgKCh2
b2lkKTApOw0KICAgIGNvbnN0IGludDY0X3QgeWVhck1pbnVzT25lID0geWVhciAtIDE7DQogICAg
Y29uc3QgaW50NjRfdCB5ZWFyc1RvQWRkQnk0UnVsZSA9IHllYXJNaW51c09uZSAvIDQuMCAtIGxl
YXBEYXlzQmVmb3JlMTk3MUJ5NFJ1bGU7DQogICAgY29uc3QgaW50NjRfdCB5ZWFyc1RvRXhjbHVk
ZUJ5MTAwUnVsZSA9IHllYXJNaW51c09uZSAvIDEwMC4wIC0gZXhjbHVkZWRMZWFwRGF5c0JlZm9y
ZTE5NzFCeTEwMFJ1bGU7DQogICAgY29uc3QgaW50NjRfdCB5ZWFyc1RvQWRkQnk0MDBSdWxlID0g
eWVhck1pbnVzT25lIC8gNDAwLjAgLSBsZWFwRGF5c0JlZm9yZTE5NzFCeTQwMFJ1bGU7DQoNCiAg
ICByZXR1cm4gMzY1ICogKHllYXIgLSAxOTcwKSArIHllYXJzVG9BZGRCeTRSdWxlIC0geWVhcnNU
b0V4Y2x1ZGVCeTEwMFJ1bGUgKyB5ZWFyc1RvQWRkQnk0MDBSdWxlOw0KfQ0KDQppbmxpbmUgYm9v
bCBpc0xlYXBZZWFyKGludCB5ZWFyKQ0Kew0KICAgIGlmICh5ZWFyICUgNCAhPSAwKQ0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgaWYgKHllYXIgJSA0MDAgPT0gMCkNCiAgICAgICAgcmV0dXJu
IHRydWU7DQogICAgaWYgKHllYXIgJSAxMDAgPT0gMCkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgIHJldHVybiB0cnVlOw0KfQ0KDQppbmxpbmUgaW50IGRheXNJblllYXIoaW50IHllYXIpDQp7
DQogICAgcmV0dXJuIDM2NSArIGlzTGVhcFllYXIoeWVhcik7DQp9DQoNCmlubGluZSBkb3VibGUg
bXNUb0RheXMoZG91YmxlIG1zKQ0Kew0KICAgIHJldHVybiBmbG9vcihtcyAvIG1zUGVyRGF5KTsN
Cn0NCg0KaW5saW5lIGludDY0X3QgbXNUb0RheXMoVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vj
b25kcyBtcykNCnsNCiAgICByZXR1cm4gbXMudmFsdWUoKSAvIFRpbWVDbGlwcGVkUG9zaXRpdmVN
aWxsaXNlY29uZHM6Om1zUGVyRGF5Ow0KfQ0KDQppbmxpbmUgaW50IGRheUluWWVhcihpbnQgeWVh
ciwgaW50IG1vbnRoLCBpbnQgZGF5KQ0Kew0KICAgIHJldHVybiBmaXJzdERheU9mTW9udGhbaXNM
ZWFwWWVhcih5ZWFyKV1bbW9udGhdICsgZGF5IC0gMTsNCn0NCg0KaW5saW5lIGludCBkYXlJblll
YXIoZG91YmxlIG1zLCBpbnQgeWVhcikNCnsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Piht
c1RvRGF5cyhtcykgLSBkYXlzRnJvbTE5NzBUb1llYXIoeWVhcikpOw0KfQ0KDQppbmxpbmUgaW50
IGRheUluWWVhcihUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzIG1zLCBpbnQgeWVhcikN
CnsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihtc1RvRGF5cyhtcykgLSBkYXlzRnJvbTE5
NzBUb1llYXJUaW1lQ2xpcHBlZFBvc2l0aXZlKHllYXIpKTsNCn0NCg0KDQppbmxpbmUgZG91Ymxl
IGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KQ0Kew0KICAg
IHllYXIgKz0gbW9udGggLyAxMjsNCg0KICAgIG1vbnRoICU9IDEyOw0KICAgIGlmIChtb250aCA8
IDApIHsNCiAgICAgICAgbW9udGggKz0gMTI7DQogICAgICAgIC0teWVhcjsNCiAgICB9DQoNCiAg
ICBkb3VibGUgeWVhcmRheSA9IGZsb29yKGRheXNGcm9tMTk3MFRvWWVhcih5ZWFyKSk7DQogICAg
KCh2b2lkKTApOw0KICAgIHJldHVybiB5ZWFyZGF5ICsgZGF5SW5ZZWFyKHllYXIsIG1vbnRoLCBk
YXkpOw0KfQ0KDQppbmxpbmUgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcykNCnsNCiAgICBpbnQgYXBw
cm94WWVhciA9IHN0YXRpY19jYXN0PGludD4oZmxvb3IobXMgLyAobXNQZXJEYXkgKiAzNjUuMjQy
NSkpICsgMTk3MCk7DQogICAgZG91YmxlIG1zRnJvbUFwcHJveFllYXJUbzE5NzAgPSBtc1BlckRh
eSAqIGRheXNGcm9tMTk3MFRvWWVhcihhcHByb3hZZWFyKTsNCiAgICBpZiAobXNGcm9tQXBwcm94
WWVhclRvMTk3MCA+IG1zKQ0KICAgICAgICByZXR1cm4gYXBwcm94WWVhciAtIDE7DQogICAgaWYg
KG1zRnJvbUFwcHJveFllYXJUbzE5NzAgKyBtc1BlckRheSAqIGRheXNJblllYXIoYXBwcm94WWVh
cikgPD0gbXMpDQogICAgICAgIHJldHVybiBhcHByb3hZZWFyICsgMTsNCiAgICByZXR1cm4gYXBw
cm94WWVhcjsNCn0NCg0KaW5saW5lIGludCBtc1RvTWludXRlcyhkb3VibGUgbXMpDQp7DQogICAg
ZG91YmxlIHJlc3VsdCA9IGZtb2QoZmxvb3IobXMgLyBtc1Blck1pbnV0ZSksIG1pbnV0ZXNQZXJI
b3VyKTsNCiAgICBpZiAocmVzdWx0IDwgMCkNCiAgICAgICAgcmVzdWx0ICs9IG1pbnV0ZXNQZXJI
b3VyOw0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7DQp9DQoNCmlubGluZSBp
bnQgbXNUb01pbnV0ZXMoVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyBtcykNCnsNCiAg
ICBpbnQ2NF90IHJlc3VsdCA9IChtcy52YWx1ZSgpIC8gVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxp
c2Vjb25kczo6bXNQZXJNaW51dGUpICUgVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kczo6
bWludXRlc1BlckhvdXI7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJlc3VsdCk7DQp9DQoNCmlubGluZSBpbnQgbXNUb0hvdXJzKGRvdWJsZSBtcykNCnsNCiAg
ICBkb3VibGUgcmVzdWx0ID0gZm1vZChmbG9vcihtcyAvIG1zUGVySG91ciksIGhvdXJzUGVyRGF5
KTsNCiAgICBpZiAocmVzdWx0IDwgMCkNCiAgICAgICAgcmVzdWx0ICs9IGhvdXJzUGVyRGF5Ow0K
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7DQp9DQoNCmlubGluZSBpbnQgbXNU
b0hvdXJzKFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHMgbXMpDQp7DQogICAgaW50NjRf
dCByZXN1bHQgPSAobXMudmFsdWUoKSAvIFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHM6
Om1zUGVySG91cikgJSBUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjpob3Vyc1BlckRh
eTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsN
Cn0NCg0KaW5saW5lIGludCBtc1RvU2Vjb25kcyhkb3VibGUgbXMpDQp7DQogICAgZG91YmxlIHJl
c3VsdCA9IGZtb2QoZmxvb3IobXMgLyBtc1BlclNlY29uZCksIHNlY29uZHNQZXJNaW51dGUpOw0K
ICAgIGlmIChyZXN1bHQgPCAwKQ0KICAgICAgICByZXN1bHQgKz0gc2Vjb25kc1Blck1pbnV0ZTsN
CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpOw0KfQ0KDQppbmxpbmUgaW50IG1z
VG9TZWNvbmRzKFRpbWVDbGlwcGVkUG9zaXRpdmVNaWxsaXNlY29uZHMgbXMpDQp7DQogICAgaW50
NjRfdCByZXN1bHQgPSBtcy52YWx1ZSgpIC8gVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25k
czo6bXNQZXJTZWNvbmQgJSBUaW1lQ2xpcHBlZFBvc2l0aXZlTWlsbGlzZWNvbmRzOjpzZWNvbmRz
UGVyTWludXRlOw0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihy
ZXN1bHQpOw0KfQ0KDQoNCmlubGluZSBpbnQgbXNUb1dlZWtEYXkoZG91YmxlIG1zKQ0Kew0KICAg
IGludCB3ZCA9IChzdGF0aWNfY2FzdDxpbnQ+KG1zVG9EYXlzKG1zKSkgKyA0KSAlIDc7DQogICAg
aWYgKHdkIDwgMCkNCiAgICAgICAgd2QgKz0gNzsNCiAgICByZXR1cm4gd2Q7DQp9DQoNCmlubGlu
ZSBpbnQgbXNUb1dlZWtEYXkoVGltZUNsaXBwZWRQb3NpdGl2ZU1pbGxpc2Vjb25kcyBtcykNCnsN
CiAgICBpbnQgcmVzdWx0ID0gKHN0YXRpY19jYXN0PGludD4obXNUb0RheXMobXMpKSArIDQpICUg
NzsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KaW5saW5lIGludCBt
b250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcikNCnsNCiAgICBj
b25zdCBpbnQgZCA9IGRheUluWWVhcjsNCiAgICBpbnQgc3RlcDsNCg0KICAgIGlmIChkIDwgKHN0
ZXAgPSAzMSkpDQogICAgICAgIHJldHVybiAwOw0KICAgIHN0ZXAgKz0gKGxlYXBZZWFyID8gMjkg
OiAyOCk7DQogICAgaWYgKGQgPCBzdGVwKQ0KICAgICAgICByZXR1cm4gMTsNCiAgICBpZiAoZCA8
IChzdGVwICs9IDMxKSkNCiAgICAgICAgcmV0dXJuIDI7DQogICAgaWYgKGQgPCAoc3RlcCArPSAz
MCkpDQogICAgICAgIHJldHVybiAzOw0KICAgIGlmIChkIDwgKHN0ZXAgKz0gMzEpKQ0KICAgICAg
ICByZXR1cm4gNDsNCiAgICBpZiAoZCA8IChzdGVwICs9IDMwKSkNCiAgICAgICAgcmV0dXJuIDU7
DQogICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpDQogICAgICAgIHJldHVybiA2Ow0KICAgIGlmIChk
IDwgKHN0ZXAgKz0gMzEpKQ0KICAgICAgICByZXR1cm4gNzsNCiAgICBpZiAoZCA8IChzdGVwICs9
IDMwKSkNCiAgICAgICAgcmV0dXJuIDg7DQogICAgaWYgKGQgPCAoc3RlcCArPSAzMSkpDQogICAg
ICAgIHJldHVybiA5Ow0KICAgIGlmIChkIDwgc3RlcCArIDMwKQ0KICAgICAgICByZXR1cm4gMTA7
DQogICAgcmV0dXJuIDExOw0KfQ0KDQppbmxpbmUgaW50IGRheUluTW9udGhGcm9tRGF5SW5ZZWFy
KGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpDQp7DQogICAgYXV0byBjaGVja01vbnRoID0g
W10gKGludCBkYXlJblllYXIsIGludCYgc3RhcnREYXlPZlRoaXNNb250aCwgaW50JiBzdGFydERh
eU9mTmV4dE1vbnRoLCBpbnQgZGF5c0luVGhpc01vbnRoKSAtPiBib29sIHsNCiAgICAgICAgc3Rh
cnREYXlPZlRoaXNNb250aCA9IHN0YXJ0RGF5T2ZOZXh0TW9udGg7DQogICAgICAgIHN0YXJ0RGF5
T2ZOZXh0TW9udGggKz0gZGF5c0luVGhpc01vbnRoOw0KICAgICAgICByZXR1cm4gKGRheUluWWVh
ciA8PSBzdGFydERheU9mTmV4dE1vbnRoKTsNCiAgICB9Ow0KDQogICAgY29uc3QgaW50IGQgPSBk
YXlJblllYXI7DQogICAgaW50IHN0ZXA7DQogICAgaW50IG5leHQgPSAzMDsNCg0KICAgIGlmIChk
IDw9IG5leHQpDQogICAgICAgIHJldHVybiBkICsgMTsNCiAgICBjb25zdCBpbnQgZGF5c0luRmVi
ID0gKGxlYXBZZWFyID8gMjkgOiAyOCk7DQogICAgaWYgKGNoZWNrTW9udGgoZCwgc3RlcCwgbmV4
dCwgZGF5c0luRmViKSkNCiAgICAgICAgcmV0dXJuIGQgLSBzdGVwOw0KICAgIGlmIChjaGVja01v
bnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkNCiAgICAgICAgcmV0dXJuIGQgLSBzdGVwOw0KICAgIGlm
IChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkNCiAgICAgICAgcmV0dXJuIGQgLSBzdGVw
Ow0KICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkNCiAgICAgICAgcmV0dXJu
IGQgLSBzdGVwOw0KICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkNCiAgICAg
ICAgcmV0dXJuIGQgLSBzdGVwOw0KICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMx
KSkNCiAgICAgICAgcmV0dXJuIGQgLSBzdGVwOw0KICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAs
IG5leHQsIDMxKSkNCiAgICAgICAgcmV0dXJuIGQgLSBzdGVwOw0KICAgIGlmIChjaGVja01vbnRo
KGQsIHN0ZXAsIG5leHQsIDMwKSkNCiAgICAgICAgcmV0dXJuIGQgLSBzdGVwOw0KICAgIGlmIChj
aGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMxKSkNCiAgICAgICAgcmV0dXJuIGQgLSBzdGVwOw0K
ICAgIGlmIChjaGVja01vbnRoKGQsIHN0ZXAsIG5leHQsIDMwKSkNCiAgICAgICAgcmV0dXJuIGQg
LSBzdGVwOw0KICAgIHN0ZXAgPSBuZXh0Ow0KICAgIHJldHVybiBkIC0gc3RlcDsNCn0NCg0KDQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9m
ZnNldChkb3VibGUgdXRjSW5NaWxsaXNlY29uZHMsIFRpbWVUeXBlID0gVVRDVGltZSk7DQoNCn0g
DQoNCnVzaW5nIFdURjo6aXNMZWFwWWVhcjsNCnVzaW5nIFdURjo6ZGF0ZVRvRGF5c0Zyb20xOTcw
Ow0KdXNpbmcgV1RGOjpkYXlJbk1vbnRoRnJvbURheUluWWVhcjsNCnVzaW5nIFdURjo6ZGF5SW5Z
ZWFyOw0KdXNpbmcgV1RGOjptaW51dGVzUGVySG91cjsNCnVzaW5nIFdURjo6bW9udGhGcm9tRGF5
SW5ZZWFyOw0KdXNpbmcgV1RGOjptc1BlckRheTsNCnVzaW5nIFdURjo6bXNQZXJIb3VyOw0KdXNp
bmcgV1RGOjptc1Blck1pbnV0ZTsNCnVzaW5nIFdURjo6bXNQZXJTZWNvbmQ7DQp1c2luZyBXVEY6
Om1zVG9ZZWFyOw0KdXNpbmcgV1RGOjptc1RvRGF5czsNCnVzaW5nIFdURjo6bXNUb01pbnV0ZXM7
DQp1c2luZyBXVEY6Om1zVG9Ib3VyczsNCnVzaW5nIFdURjo6c2Vjb25kc1BlckRheTsNCnVzaW5n
IFdURjo6c2Vjb25kc1Blck1pbnV0ZTsNCnVzaW5nIFdURjo6cGFyc2VEYXRlRnJvbU51bGxUZXJt
aW5hdGVkQ2hhcmFjdGVyczsNCnVzaW5nIFdURjo6bWFrZVJGQzI4MjJEYXRlU3RyaW5nOw0KdXNp
bmcgV1RGOjpMb2NhbFRpbWVPZmZzZXQ7DQp1c2luZyBXVEY6OmNhbGN1bGF0ZUxvY2FsVGltZU9m
ZnNldDsNCnVzaW5nIFdURjo6dGltZUNsaXA7DQp1c2luZyBXVEY6OmpzQ3VycmVudFRpbWU7DQoj
bGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvR3JlZ29yaWFuRGF0ZVRpbWUuaCINCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpj
bGFzcyBHcmVnb3JpYW5EYXRlVGltZSBmaW5hbCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9p
ZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsg
cHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
byA9IGludDsNCnB1YmxpYzoNCiAgICBHcmVnb3JpYW5EYXRlVGltZSgpID0gZGVmYXVsdDsNCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZXhwbGljaXQgR3JlZ29yaWFuRGF0ZVRpbWUoZG91Ymxl
IG1zLCBMb2NhbFRpbWVPZmZzZXQpOw0KDQogICAgaW5saW5lIGludCB5ZWFyKCkgY29uc3QgeyBy
ZXR1cm4gbV95ZWFyOyB9DQogICAgaW5saW5lIGludCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9udGg7IH0NCiAgICBpbmxpbmUgaW50IHllYXJEYXkoKSBjb25zdCB7IHJldHVybiBtX3llYXJE
YXk7IH0NCiAgICBpbmxpbmUgaW50IG1vbnRoRGF5KCkgY29uc3QgeyByZXR1cm4gbV9tb250aERh
eTsgfQ0KICAgIGlubGluZSBpbnQgd2Vla0RheSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vla0RheTsg
fQ0KICAgIGlubGluZSBpbnQgaG91cigpIGNvbnN0IHsgcmV0dXJuIG1faG91cjsgfQ0KICAgIGlu
bGluZSBpbnQgbWludXRlKCkgY29uc3QgeyByZXR1cm4gbV9taW51dGU7IH0NCiAgICBpbmxpbmUg
aW50IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9DQogICAgaW5saW5lIGludCB1
dGNPZmZzZXRJbk1pbnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXRjT2Zmc2V0SW5NaW51dGU7IH0N
CiAgICBpbmxpbmUgaW50IGlzRFNUKCkgY29uc3QgeyByZXR1cm4gbV9pc0RTVDsgfQ0KDQogICAg
aW5saW5lIHZvaWQgc2V0WWVhcihpbnQgeWVhcikgeyBtX3llYXIgPSB5ZWFyOyB9DQogICAgaW5s
aW5lIHZvaWQgc2V0TW9udGgoaW50IG1vbnRoKSB7IG1fbW9udGggPSBtb250aDsgfQ0KICAgIGlu
bGluZSB2b2lkIHNldFllYXJEYXkoaW50IHllYXJEYXkpIHsgbV95ZWFyRGF5ID0geWVhckRheTsg
fQ0KICAgIGlubGluZSB2b2lkIHNldE1vbnRoRGF5KGludCBtb250aERheSkgeyBtX21vbnRoRGF5
ID0gbW9udGhEYXk7IH0NCiAgICBpbmxpbmUgdm9pZCBzZXRXZWVrRGF5KGludCB3ZWVrRGF5KSB7
IG1fd2Vla0RheSA9IHdlZWtEYXk7IH0NCiAgICBpbmxpbmUgdm9pZCBzZXRIb3VyKGludCBob3Vy
KSB7IG1faG91ciA9IGhvdXI7IH0NCiAgICBpbmxpbmUgdm9pZCBzZXRNaW51dGUoaW50IG1pbnV0
ZSkgeyBtX21pbnV0ZSA9IG1pbnV0ZTsgfQ0KICAgIGlubGluZSB2b2lkIHNldFNlY29uZChpbnQg
c2Vjb25kKSB7IG1fc2Vjb25kID0gc2Vjb25kOyB9DQogICAgaW5saW5lIHZvaWQgc2V0VVRDT2Zm
c2V0SW5NaW51dGUoaW50IHV0Y09mZnNldEluTWludXRlKSB7IG1fdXRjT2Zmc2V0SW5NaW51dGUg
PSB1dGNPZmZzZXRJbk1pbnV0ZTsgfQ0KICAgIGlubGluZSB2b2lkIHNldElzRFNUKGludCBpc0RT
VCkgeyBtX2lzRFNUID0gaXNEU1Q7IH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZZ
ZWFyKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0
X2Nhc3Q8R3JlZ29yaWFuRGF0ZVRpbWUqPigweDQwMDApLT5tX3llYXIpKSAtIDB4NDAwMCk7IH0N
CiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTW9udGgoKSB7IHJldHVybiAocmVpbnRlcnBy
ZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxHcmVnb3JpYW5EYXRlVGltZSo+
KDB4NDAwMCktPm1fbW9udGgpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mWWVhckRheSgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihy
ZWludGVycHJldF9jYXN0PEdyZWdvcmlhbkRhdGVUaW1lKj4oMHg0MDAwKS0+bV95ZWFyRGF5KSkg
LSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1vbnRoRGF5KCkgeyBy
ZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8R3Jl
Z29yaWFuRGF0ZVRpbWUqPigweDQwMDApLT5tX21vbnRoRGF5KSkgLSAweDQwMDApOyB9DQogICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZldlZWtEYXkoKSB7IHJldHVybiAocmVpbnRlcnByZXRf
Y2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxHcmVnb3JpYW5EYXRlVGltZSo+KDB4
NDAwMCktPm1fd2Vla0RheSkpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZIb3VyKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50
ZXJwcmV0X2Nhc3Q8R3JlZ29yaWFuRGF0ZVRpbWUqPigweDQwMDApLT5tX2hvdXIpKSAtIDB4NDAw
MCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWludXRlKCkgeyByZXR1cm4gKHJl
aW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8R3JlZ29yaWFuRGF0
ZVRpbWUqPigweDQwMDApLT5tX21pbnV0ZSkpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZTZWNvbmQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KCYocmVpbnRlcnByZXRfY2FzdDxHcmVnb3JpYW5EYXRlVGltZSo+KDB4NDAwMCktPm1fc2Vj
b25kKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlVUQ09mZnNl
dEluTWludXRlKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50
ZXJwcmV0X2Nhc3Q8R3JlZ29yaWFuRGF0ZVRpbWUqPigweDQwMDApLT5tX3V0Y09mZnNldEluTWlu
dXRlKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZklzRFNUKCkg
eyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8
R3JlZ29yaWFuRGF0ZVRpbWUqPigweDQwMDApLT5tX2lzRFNUKSkgLSAweDQwMDApOyB9DQoNCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzZXRUb0N1cnJlbnRMb2NhbFRpbWUoKTsNCg0K
ICAgIG9wZXJhdG9yIHRtKCkgY29uc3QNCiAgICB7DQogICAgICAgIHRtIHJldDsNCiAgICAgICAg
bWVtc2V0KCZyZXQsIDAsIHNpemVvZihyZXQpKTsNCg0KICAgICAgICByZXQudG1feWVhciA9IG1f
eWVhciAtIDE5MDA7DQogICAgICAgIHJldC50bV9tb24gPSBtX21vbnRoOw0KICAgICAgICByZXQu
dG1feWRheSA9IG1feWVhckRheTsNCiAgICAgICAgcmV0LnRtX21kYXkgPSBtX21vbnRoRGF5Ow0K
ICAgICAgICByZXQudG1fd2RheSA9IG1fd2Vla0RheTsNCiAgICAgICAgcmV0LnRtX2hvdXIgPSBt
X2hvdXI7DQogICAgICAgIHJldC50bV9taW4gPSBtX21pbnV0ZTsNCiAgICAgICAgcmV0LnRtX3Nl
YyA9IG1fc2Vjb25kOw0KICAgICAgICByZXQudG1faXNkc3QgPSBtX2lzRFNUOw0KDQoNCg0KI2xp
bmUgOTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL0dyZWdvcmlhbkRhdGVUaW1lLmgiDQoNCiAgICAgICAgcmV0dXJuIHJldDsNCiAgICB9
DQoNCnByaXZhdGU6DQogICAgaW50IG1feWVhciB7IDAgfTsNCiAgICBpbnQgbV9tb250aCB7IDAg
fTsNCiAgICBpbnQgbV95ZWFyRGF5IHsgMCB9Ow0KICAgIGludCBtX21vbnRoRGF5IHsgMCB9Ow0K
ICAgIGludCBtX3dlZWtEYXkgeyAwIH07DQogICAgaW50IG1faG91ciB7IDAgfTsNCiAgICBpbnQg
bV9taW51dGUgeyAwIH07DQogICAgaW50IG1fc2Vjb25kIHsgMCB9Ow0KICAgIGludCBtX3V0Y09m
ZnNldEluTWludXRlIHsgMCB9Ow0KICAgIGludCBtX2lzRFNUIHsgMCB9Ow0KfTsNCg0KfSANCg0K
dXNpbmcgV1RGOjpHcmVnb3JpYW5EYXRlVGltZTsNCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXERhdGVJbnN0YW5jZUNh
Y2hlLmgiDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgRGF0ZUluc3RhbmNlRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPERhdGVJbnN0YW5jZURhdGE+IHsNCnB1YmxpYzoNCiAgICBzdGF0
aWMgUmVmPERhdGVJbnN0YW5jZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0ZUluc3RhbmNlRGF0YSk7IH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHcmVn
b3JpYW5EYXRlVGltZUNhY2hlZEZvck1TKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RGF0ZUluc3RhbmNlRGF0YSo+KDB4NDAwMCktPm1f
Z3JlZ29yaWFuRGF0ZVRpbWVDYWNoZWRGb3JNUykpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRHcmVnb3JpYW5EYXRlVGltZSgpIHsgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PERhdGVJbnN0YW5jZURh
dGEqPigweDQwMDApLT5tX2NhY2hlZEdyZWdvcmlhbkRhdGVUaW1lKSkgLSAweDQwMDApOyB9DQog
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdyZWdvcmlhbkRhdGVUaW1lVVRDQ2FjaGVkRm9y
TVMoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxEYXRlSW5zdGFuY2VEYXRhKj4oMHg0MDAwKS0+bV9ncmVnb3JpYW5EYXRlVGltZVVUQ0Nh
Y2hlZEZvck1TKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNh
Y2hlZEdyZWdvcmlhbkRhdGVUaW1lVVRDKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RGF0ZUluc3RhbmNlRGF0YSo+KDB4NDAwMCktPm1f
Y2FjaGVkR3JlZ29yaWFuRGF0ZVRpbWVVVEMpKSAtIDB4NDAwMCk7IH0NCg0KICAgIGRvdWJsZSBt
X2dyZWdvcmlhbkRhdGVUaW1lQ2FjaGVkRm9yTVMgeyAocHVyZU5hTigpKSB9Ow0KICAgIEdyZWdv
cmlhbkRhdGVUaW1lIG1fY2FjaGVkR3JlZ29yaWFuRGF0ZVRpbWU7DQogICAgZG91YmxlIG1fZ3Jl
Z29yaWFuRGF0ZVRpbWVVVENDYWNoZWRGb3JNUyB7IChwdXJlTmFOKCkpIH07DQogICAgR3JlZ29y
aWFuRGF0ZVRpbWUgbV9jYWNoZWRHcmVnb3JpYW5EYXRlVGltZVVUQzsNCg0KcHJpdmF0ZToNCiAg
ICBEYXRlSW5zdGFuY2VEYXRhKCkgPSBkZWZhdWx0Ow0KfTsNCg0KY2xhc3MgRGF0ZUluc3RhbmNl
Q2FjaGUgew0KcHVibGljOg0KICAgIERhdGVJbnN0YW5jZUNhY2hlKCkNCiAgICB7DQogICAgICAg
IHJlc2V0KCk7DQogICAgfQ0KDQogICAgdm9pZCByZXNldCgpDQogICAgew0KICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNhY2hlU2l6ZTsgKytpKQ0KICAgICAgICAgICAgbV9jYWNoZVtp
XS5rZXkgPSAocHVyZU5hTigpKTsNCiAgICB9DQoNCiAgICBEYXRlSW5zdGFuY2VEYXRhKiBhZGQo
ZG91YmxlIGQpDQogICAgew0KICAgICAgICBDYWNoZUVudHJ5JiBlbnRyeSA9IGxvb2t1cChkKTsN
CiAgICAgICAgaWYgKGQgPT0gZW50cnkua2V5KQ0KICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnZh
bHVlLmdldCgpOw0KDQogICAgICAgIGVudHJ5LmtleSA9IGQ7DQogICAgICAgIGVudHJ5LnZhbHVl
ID0gRGF0ZUluc3RhbmNlRGF0YTo6Y3JlYXRlKCk7DQogICAgICAgIHJldHVybiBlbnRyeS52YWx1
ZS5nZXQoKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgc3RhdGljIGNvbnN0IHNpemVfdCBjYWNo
ZVNpemUgPSAxNjsNCg0KICAgIHN0cnVjdCBDYWNoZUVudHJ5IHsNCiAgICAgICAgZG91YmxlIGtl
eTsNCiAgICAgICAgUmVmUHRyPERhdGVJbnN0YW5jZURhdGE+IHZhbHVlOw0KICAgIH07DQoNCiAg
ICBDYWNoZUVudHJ5JiBsb29rdXAoZG91YmxlIGQpIHsgcmV0dXJuIG1fY2FjaGVbV1RGOjpGbG9h
dEhhc2g8ZG91YmxlPjo6aGFzaChkKSAmIChjYWNoZVNpemUgLSAxKV07IH0NCg0KICAgIHN0ZDo6
YXJyYXk8Q2FjaGVFbnRyeSwgY2FjaGVTaXplPiBtX2NhY2hlOw0KfTsNCg0KfSANCiNsaW5lIDM3
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXFZNLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcRGlzYWxsb3dWTUVudHJ5LmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFZNOw0KDQoNCg0KDQoNCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVk1UeXBlID0gVk0+DQpjbGFzcyBEaXNhbGxvd1ZNRW50cnlJbXBsIHsNCiAgICBwcml2YXRl
OiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRl
OyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
PSBkZWxldGU7IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzRm9yYmlkSGVhcEFsbG9jYXRpb25NYWNybzsNCnB1YmxpYzoNCiAgICBEaXNhbGxvd1ZNRW50
cnlJbXBsKFZNVHlwZSYgdm0pDQogICAgICAgIDogbV92bSgmdm0pDQogICAgew0KICAgICAgICBt
X3ZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCsrOw0KICAgIH0NCg0KICAgIERpc2FsbG93Vk1FbnRy
eUltcGwoY29uc3QgRGlzYWxsb3dWTUVudHJ5SW1wbCYgb3RoZXIpDQogICAgICAgIDogbV92bShv
dGhlci5tX3ZtKQ0KICAgIHsNCiAgICAgICAgbV92bS0+ZGlzYWxsb3dWTUVudHJ5Q291bnQrKzsN
CiAgICB9DQoNCiAgICB+RGlzYWxsb3dWTUVudHJ5SW1wbCgpDQogICAgew0KICAgICAgICBkbyB7
IGlmICgoIShtX3ZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCkpKSBkbyB7IFdURjo6aXNJbnRlZ3Jh
bE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aElu
Zm8oNTcsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXERpc2FsbG93Vk1FbnRyeS5oIiwgIF9fRlVOQ1RJT05fXyAgLCA0NiApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBtX3ZtLT5kaXNhbGxvd1ZNRW50cnlD
b3VudC0tOw0KICAgICAgICBtX3ZtID0gbnVsbHB0cjsNCiAgICB9DQoNCiAgICBEaXNhbGxvd1ZN
RW50cnlJbXBsJiBvcGVyYXRvcj0oY29uc3QgRGlzYWxsb3dWTUVudHJ5SW1wbCYgb3RoZXIpDQog
ICAgew0KICAgICAgICBkbyB7IGlmICgoIShtX3ZtICYmIG1fdm0gPT0gb3RoZXIubV92bSkpKSBk
byB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNo
KCk7IFdURkNyYXNoV2l0aEluZm8oNjQsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXERpc2FsbG93Vk1FbnRyeS5oIiwgIF9fRlVOQ1RJ
T05fXyAgLCA0NyApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBkbyB7
IGlmICgoIShtX3ZtLT5kaXNhbGxvd1ZNRW50cnlDb3VudCkpKSBkbyB7IFdURjo6aXNJbnRlZ3Jh
bE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aElu
Zm8oNjUsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXERpc2FsbG93Vk1FbnRyeS5oIiwgIF9fRlVOQ1RJT05fXyAgLCA0OCApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCnByaXZh
dGU6DQogICAgVk1UeXBlKiBtX3ZtOw0KfTsNCg0KdXNpbmcgRGlzYWxsb3dWTUVudHJ5ID0gRGlz
YWxsb3dWTUVudHJ5SW1wbDxWTT47DQoNCn0gDQojbGluZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxFeGNlcHRpb25FdmVudExvY2F0aW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0K
c3RydWN0IEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24gew0KICAgIEV4Y2VwdGlvbkV2ZW50TG9jYXRp
b24oKSB7IH0NCiAgICBFeGNlcHRpb25FdmVudExvY2F0aW9uKHZvaWQqIHN0YWNrUG9zaXRpb24s
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZmlsZSwgdW5zaWduZWQgbGlu
ZSkNCiAgICAgICAgOiBzdGFja1Bvc2l0aW9uKHN0YWNrUG9zaXRpb24pDQogICAgICAgICwgZnVu
Y3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkNCiAgICAgICAgLCBmaWxlKGZpbGUpDQogICAgICAgICwg
bGluZShsaW5lKQ0KICAgIHsgfQ0KICAgIA0KICAgIHZvaWQqIHN0YWNrUG9zaXRpb24geyBudWxs
cHRyIH07IA0KICAgIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSB7IG51bGxwdHIgfTsNCiAgICBj
b25zdCBjaGFyKiBmaWxlIHsgbnVsbHB0ciB9Ow0KICAgIHVuc2lnbmVkIGxpbmUgeyAwIH07DQp9
Ow0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCiAgICANCmNsYXNzIFByaW50U3RyZWFtOw0KDQp2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRp
b24pOw0KICAgIA0KfSANCiNsaW5lIDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRnVuY3Rpb25I
YXNFeGVjdXRlZENhY2hlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9IYXNoTWV0aG9kLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3Qg
SGFzaE1ldGhvZCB7DQogICAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgVCYgdmFsdWUpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gdmFsdWUuaGFzaCgpOw0KICAgIH0NCn07DQoNCn0gDQoN
CnVzaW5nIFdURjo6SGFzaE1ldGhvZDsNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEZ1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvU3RkVW5vcmRlcmVkTWFwLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1l
c3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgSGFzaCA9IHN0ZDo6aGFzaDxLZXk+LCB0eXBlbmFtZSBQcmVkaWNhdGUgPSBzdGQ6OmVx
dWFsX3RvPEtleT4sIHR5cGVuYW1lIEFsbG9jYXRvciA9IEZhc3RBbGxvY2F0b3I8c3RkOjpwYWly
PGNvbnN0IEtleSwgVmFsdWU+Pj4NCnVzaW5nIFN0ZFVub3JkZXJlZE1hcCA9IHN0ZDo6dW5vcmRl
cmVkX21hcDxLZXksIFZhbHVlLCBIYXNoLCBQcmVkaWNhdGUsIEFsbG9jYXRvcj47DQoNCn0gDQoN
CnVzaW5nIFdURjo6U3RkVW5vcmRlcmVkTWFwOw0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEZ1bmN0aW9uSGFzRXhl
Y3V0ZWRDYWNoZSB7DQpwdWJsaWM6DQogICAgc3RydWN0IEZ1bmN0aW9uUmFuZ2Ugew0KICAgICAg
ICBGdW5jdGlvblJhbmdlKCkge30NCiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZ1bmN0
aW9uUmFuZ2UmIG90aGVyKSBjb25zdCANCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG1f
c3RhcnQgPT0gb3RoZXIubV9zdGFydCAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsNCiAgICAgICAg
fQ0KICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAg
cmV0dXJuIG1fc3RhcnQgKiBtX2VuZDsNCiAgICAgICAgfQ0KDQogICAgICAgIHVuc2lnbmVkIG1f
c3RhcnQ7DQogICAgICAgIHVuc2lnbmVkIG1fZW5kOw0KICAgIH07DQoNCiAgICBib29sIGhhc0V4
ZWN1dGVkQXRPZmZzZXQoaW50cHRyX3QgaWQsIHVuc2lnbmVkIG9mZnNldCk7DQogICAgdm9pZCBp
bnNlcnRVbmV4ZWN1dGVkUmFuZ2UoaW50cHRyX3QgaWQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBlbmQpOw0KICAgIHZvaWQgcmVtb3ZlVW5leGVjdXRlZFJhbmdlKGludHB0cl90IGlkLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgZW5kKTsNCiAgICBWZWN0b3I8c3RkOjp0dXBsZTxib29sLCB1
bnNpZ25lZCwgdW5zaWduZWQ+PiBnZXRGdW5jdGlvblJhbmdlcyhpbnRwdHJfdCBpZCk7DQoNCnBy
aXZhdGU6DQogICAgdXNpbmcgUmFuZ2VNYXAgPSBTdGRVbm9yZGVyZWRNYXA8RnVuY3Rpb25SYW5n
ZSwgYm9vbCwgSGFzaE1ldGhvZDxGdW5jdGlvblJhbmdlPj47DQogICAgdXNpbmcgU291cmNlSURU
b1JhbmdlTWFwID0gU3RkVW5vcmRlcmVkTWFwPGludHB0cl90LCBSYW5nZU1hcD47DQogICAgU291
cmNlSURUb1JhbmdlTWFwIG1fcmFuZ2VNYXA7DQp9Ow0KDQp9IA0KI2xpbmUgNDIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCIN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcRnV6emVyQWdlbnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVPcmln
aW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3Mg
Q29kZUJsb2NrOw0Kc3RydWN0IER1bXBDb250ZXh0Ow0Kc3RydWN0IElubGluZUNhbGxGcmFtZTsN
Cg0KY2xhc3MgQ29kZU9yaWdpbiB7DQpwdWJsaWM6DQogICAgQ29kZU9yaWdpbigpDQoNCiAgICAg
ICAgOiBtX2NvbXBvc2l0ZVZhbHVlKGJ1aWxkQ29tcG9zaXRlVmFsdWUobnVsbHB0ciwgQnl0ZWNv
ZGVJbmRleCgpKSkNCg0KDQojbGluZSA1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZU9yaWdpbi5oIg0KICAgIHsNCiAgICB9
DQoNCiAgICBDb2RlT3JpZ2luKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkNCg0KICAg
ICAgICA6IG1fY29tcG9zaXRlVmFsdWUoYnVpbGRDb21wb3NpdGVWYWx1ZShkZWxldGVkTWFya2Vy
KCksIEJ5dGVjb2RlSW5kZXgoKSkpDQoNCg0KDQojbGluZSA2MCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZU9yaWdpbi5oIg0K
ICAgIHsNCiAgICB9DQogICAgDQogICAgZXhwbGljaXQgQ29kZU9yaWdpbihCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbnVsbHB0
cikNCg0KICAgICAgICA6IG1fY29tcG9zaXRlVmFsdWUoYnVpbGRDb21wb3NpdGVWYWx1ZShpbmxp
bmVDYWxsRnJhbWUsIGJ5dGVjb2RlSW5kZXgpKQ0KDQoNCg0KI2xpbmUgNzAgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVPcmln
aW4uaCINCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICAoKHZvaWQpMCk7DQoj
bGluZSA3NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxieXRlY29kZVxcQ29kZU9yaWdpbi5oIg0KICAgIH0NCiAgICANCg0KICAgIENvZGVPcmlnaW4m
IG9wZXJhdG9yPShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikNCiAgICB7DQogICAgICAgIGlmICh0
aGlzICE9ICZvdGhlcikgew0KICAgICAgICAgICAgaWYgKChpc091dE9mTGluZSgpKSkNCiAgICAg
ICAgICAgICAgICBkZWxldGUgb3V0T2ZMaW5lQ29kZU9yaWdpbigpOw0KICAgICAgICAgICAgDQog
ICAgICAgICAgICBpZiAoKG90aGVyLmlzT3V0T2ZMaW5lKCkpKQ0KICAgICAgICAgICAgICAgIG1f
Y29tcG9zaXRlVmFsdWUgPSBidWlsZENvbXBvc2l0ZVZhbHVlKG90aGVyLmlubGluZUNhbGxGcmFt
ZSgpLCBvdGhlci5ieXRlY29kZUluZGV4KCkpOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgICAgIG1fY29tcG9zaXRlVmFsdWUgPSBvdGhlci5tX2NvbXBvc2l0ZVZhbHVlOw0KICAgICAg
ICB9DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQogICAgQ29kZU9yaWdpbiYgb3BlcmF0
b3I9KENvZGVPcmlnaW4mJiBvdGhlcikNCiAgICB7DQogICAgICAgIGlmICh0aGlzICE9ICZvdGhl
cikgew0KICAgICAgICAgICAgaWYgKChpc091dE9mTGluZSgpKSkNCiAgICAgICAgICAgICAgICBk
ZWxldGUgb3V0T2ZMaW5lQ29kZU9yaWdpbigpOw0KDQogICAgICAgICAgICBtX2NvbXBvc2l0ZVZh
bHVlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2NvbXBvc2l0ZVZhbHVlLCAwKTsNCiAgICAgICAg
fQ0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgQ29kZU9yaWdpbihjb25zdCBD
b2RlT3JpZ2luJiBvdGhlcikNCiAgICB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYg
KChvdGhlci5pc091dE9mTGluZSgpKSkNCiAgICAgICAgICAgIG1fY29tcG9zaXRlVmFsdWUgPSBi
dWlsZENvbXBvc2l0ZVZhbHVlKG90aGVyLmlubGluZUNhbGxGcmFtZSgpLCBvdGhlci5ieXRlY29k
ZUluZGV4KCkpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2NvbXBvc2l0ZVZhbHVlID0g
b3RoZXIubV9jb21wb3NpdGVWYWx1ZTsNCiAgICB9DQogICAgQ29kZU9yaWdpbihDb2RlT3JpZ2lu
JiYgb3RoZXIpDQogICAgICAgIDogbV9jb21wb3NpdGVWYWx1ZShzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fY29tcG9zaXRlVmFsdWUsIDApKQ0KICAgIHsNCiAgICB9DQoNCiAgICB+Q29kZU9yaWdpbigp
DQogICAgew0KICAgICAgICBpZiAoKGlzT3V0T2ZMaW5lKCkpKQ0KICAgICAgICAgICAgZGVsZXRl
IG91dE9mTGluZUNvZGVPcmlnaW4oKTsNCiAgICB9DQojbGluZSAxMjIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVPcmlnaW4u
aCINCiAgICANCiAgICBib29sIGlzU2V0KCkgY29uc3QNCiAgICB7DQoNCiAgICAgICAgcmV0dXJu
ICEobV9jb21wb3NpdGVWYWx1ZSAmIHNfbWFza0lzQnl0ZWNvZGVJbmRleEludmFsaWQpOw0KDQoN
CiNsaW5lIDEzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxieXRlY29kZVxcQ29kZU9yaWdpbi5oIg0KICAgIH0NCiAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQ0KICAgIA0KICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdA0KICAgIHsNCg0KICAgICAgICByZXR1cm4gIWlzU2V0
KCkgJiYgKG1fY29tcG9zaXRlVmFsdWUgJiBzX21hc2tDb21wb3NpdGVWYWx1ZUZvclBvaW50ZXIp
Ow0KDQoNCiNsaW5lIDE0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZU9yaWdpbi5oIg0KICAgIH0NCiAgICANCiAgICANCiAg
ICANCiAgICB1bnNpZ25lZCBpbmxpbmVEZXB0aCgpIGNvbnN0Ow0KICAgIA0KICAgIA0KICAgIA0K
ICAgIENvZGVCbG9jayogY29kZU9yaWdpbk93bmVyKCkgY29uc3Q7DQogICAgDQogICAgaW50IHN0
YWNrT2Zmc2V0KCkgY29uc3Q7DQogICAgDQogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ow0KICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7DQogICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIGJvb2wgaXNBcHByb3hpbWF0
ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlciwgSW5saW5lQ2FsbEZyYW1lKiB0ZXJt
aW5hbCA9IG51bGxwdHIpIGNvbnN0Ow0KICAgIA0KICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFz
aChJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7DQoNCiAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+DQogICAgdm9pZCB3YWxrVXBJbmxpbmVTdGFjayhjb25z
dCBGdW5jdGlvbiYpIGNvbnN0Ow0KDQogICAgaW5saW5lIGJvb2wgaW5saW5lU3RhY2tDb250YWlu
c0FjdGl2ZUNoZWNrcG9pbnQoKSBjb25zdDsNCiAgICANCiAgICANCiAgICBWZWN0b3I8Q29kZU9y
aWdpbj4gaW5saW5lU3RhY2soKSBjb25zdDsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7DQogICAgdm9pZCBkdW1wSW5Db250ZXh0
KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsNCg0KICAgIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCgpIGNvbnN0DQogICAgew0KDQogICAgICAgIGlmICghaXNTZXQoKSkNCiAg
ICAgICAgICAgIHJldHVybiBCeXRlY29kZUluZGV4KCk7DQogICAgICAgIGlmICgoaXNPdXRPZkxp
bmUoKSkpDQogICAgICAgICAgICByZXR1cm4gb3V0T2ZMaW5lQ29kZU9yaWdpbigpLT5ieXRlY29k
ZUluZGV4Ow0KICAgICAgICByZXR1cm4gQnl0ZWNvZGVJbmRleDo6ZnJvbUJpdHMobV9jb21wb3Np
dGVWYWx1ZSA+PiAoNjQgLSBzX2ZyZWVCaXRzQXRUb3ApKTsNCg0KDQojbGluZSAxODQgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENv
ZGVPcmlnaW4uaCINCiAgICB9DQoNCiAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSgpIGNvbnN0DQogICAgew0KDQogICAgICAgIGlmICgoaXNPdXRPZkxpbmUoKSkpDQogICAgICAg
ICAgICByZXR1cm4gb3V0T2ZMaW5lQ29kZU9yaWdpbigpLT5pbmxpbmVDYWxsRnJhbWU7DQogICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5saW5lQ2FsbEZyYW1lKj4obV9jb21wb3NpdGVWYWx1
ZSAmIHNfbWFza0NvbXBvc2l0ZVZhbHVlRm9yUG9pbnRlcik7DQoNCg0KI2xpbmUgMTk1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxD
b2RlT3JpZ2luLmgiDQogICAgfQ0KDQpwcml2YXRlOg0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50cHRyX3Qgc19tYXNrSXNPdXRPZkxpbmUgPSAxOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dHB0cl90IHNfbWFza0lzQnl0ZWNvZGVJbmRleEludmFsaWQgPSAyOw0KDQogICAgc3RydWN0IE91
dE9mTGluZUNvZGVPcmlnaW4gew0KICAgICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUo
dm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0
b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyBy
ZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRl
OiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50
Ow0KICAgIHB1YmxpYzoNCiAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWU7
DQogICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsNCiAgICAgICAgDQogICAgICAg
IE91dE9mTGluZUNvZGVPcmlnaW4oSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkNCiAgICAgICAgICAgIDogaW5saW5lQ2FsbEZyYW1l
KGlubGluZUNhbGxGcmFtZSkNCiAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUlu
ZGV4KQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAgIGJvb2wgaXNPdXRP
ZkxpbmUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fY29tcG9zaXRlVmFsdWUgJiBz
X21hc2tJc091dE9mTGluZTsNCiAgICB9DQogICAgT3V0T2ZMaW5lQ29kZU9yaWdpbiogb3V0T2ZM
aW5lQ29kZU9yaWdpbigpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8T3V0T2ZMaW5lQ29kZU9yaWdpbio+KG1fY29tcG9zaXRlVmFs
dWUgJiBzX21hc2tDb21wb3NpdGVWYWx1ZUZvclBvaW50ZXIpOw0KICAgIH0NCiNsaW5lIDIyNSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29k
ZVxcQ29kZU9yaWdpbi5oIg0KDQogICAgc3RhdGljIElubGluZUNhbGxGcmFtZSogZGVsZXRlZE1h
cmtlcigpDQogICAgew0KICAgICAgICBhdXRvIHZhbHVlID0gc3RhdGljX2Nhc3Q8dWludHB0cl90
PigxIDw8IDMpOw0KDQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KI2xp
bmUgMjMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGJ5dGVjb2RlXFxDb2RlT3JpZ2luLmgiDQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5s
aW5lQ2FsbEZyYW1lKj4odmFsdWUpOw0KICAgIH0NCg0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBzX2ZyZWVCaXRzQXRUb3AgPSA2NCAtICg0OCk7DQogICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50cHRyX3Qgc19tYXNrQ29tcG9zaXRlVmFsdWVGb3JQb2ludGVyID0gKCgxVUxMIDw8ICg0
OCkpIC0gMSkgJiB+KDhVTEwgLSAxKTsNCiAgICBzdGF0aWMgdWludHB0cl90IGJ1aWxkQ29tcG9z
aXRlVmFsdWUoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCkNCiAgICB7DQogICAgICAgIGlmICghYnl0ZWNvZGVJbmRleCkNCiAgICAg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbmxpbmVDYWxsRnJhbWUpIHwg
c19tYXNrSXNCeXRlY29kZUluZGV4SW52YWxpZDsNCg0KICAgICAgICBpZiAoKGJ5dGVjb2RlSW5k
ZXguYXNCaXRzKCkgPj0gMSA8PCBzX2ZyZWVCaXRzQXRUb3ApKSB7DQogICAgICAgICAgICBhdXRv
KiBvdXRPZkxpbmUgPSBuZXcgT3V0T2ZMaW5lQ29kZU9yaWdpbihpbmxpbmVDYWxsRnJhbWUsIGJ5
dGVjb2RlSW5kZXgpOw0KICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KG91dE9mTGluZSkgfCBzX21hc2tJc091dE9mTGluZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHVp
bnRwdHJfdCBlbmNvZGVkQnl0ZWNvZGVJbmRleCA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oYnl0
ZWNvZGVJbmRleC5hc0JpdHMoKSkgPDwgKDY0IC0gc19mcmVlQml0c0F0VG9wKTsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gZW5jb2RlZEJ5dGVjb2RlSW5kZXggfCBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihpbmxpbmVDYWxsRnJhbWUpOw0KICAgIH0NCg0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHVpbnRwdHJfdCBtX2NvbXBvc2l0ZVZhbHVlOw0K
DQoNCg0KI2xpbmUgMjY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlT3JpZ2luLmgiDQp9Ow0KDQppbmxpbmUgdW5zaWduZWQg
Q29kZU9yaWdpbjo6aGFzaCgpIGNvbnN0DQp7DQogICAgcmV0dXJuIFdURjo6SW50SGFzaDx1bnNp
Z25lZD46Omhhc2goYnl0ZWNvZGVJbmRleCgpLmFzQml0cygpKSArDQogICAgICAgIFdURjo6UHRy
SGFzaDxJbmxpbmVDYWxsRnJhbWUqPjo6aGFzaChpbmxpbmVDYWxsRnJhbWUoKSk7DQp9DQoNCmlu
bGluZSBib29sIENvZGVPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIp
IGNvbnN0DQp7DQoNCiAgICBpZiAobV9jb21wb3NpdGVWYWx1ZSA9PSBvdGhlci5tX2NvbXBvc2l0
ZVZhbHVlKQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiNsaW5lIDI3OSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZU9yaWdpbi5o
Ig0KICAgIHJldHVybiBieXRlY29kZUluZGV4KCkgPT0gb3RoZXIuYnl0ZWNvZGVJbmRleCgpDQog
ICAgICAgICYmIGlubGluZUNhbGxGcmFtZSgpID09IG90aGVyLmlubGluZUNhbGxGcmFtZSgpOw0K
fQ0KDQpzdHJ1Y3QgQ29kZU9yaWdpbkhhc2ggew0KICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IENvZGVPcmlnaW4mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQ0KICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IENvZGVPcmlnaW4mIGEsIGNvbnN0IENvZGVPcmlnaW4mIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IHRydWU7DQp9Ow0KDQpzdHJ1Y3QgQ29kZU9yaWdpbkFwcHJveGltYXRl
SGFzaCB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ29kZU9yaWdpbiYga2V5KSB7
IHJldHVybiBrZXkuYXBwcm94aW1hdGVIYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBDb2RlT3JpZ2luJiBhLCBjb25zdCBDb2RlT3JpZ2luJiBiKSB7IHJldHVybiBhLmlzQXBw
cm94aW1hdGVseUVxdWFsVG8oYik7IH0NCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOw0KfTsNCg0KfSANCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsNCnRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6Q29kZU9yaWdpbj4gOiBKU0M6OkNvZGVPcmlnaW5I
YXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7DQp0ZW1w
bGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q29kZU9yaWdpbj4gOiBTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8SlNDOjpDb2RlT3JpZ2luPiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGVt
cHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCn07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxGdXp6ZXJBZ2Vu
dC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxieXRlY29kZVxcU3BlY3VsYXRlZFR5cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFR5cGVkQXJyYXlUeXBlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTVHlwZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51bSBKU1R5cGUgOiB1aW50OF90IHsNCiAgICANCiAgICBD
ZWxsVHlwZSwNCiAgICBTdHJpbmdUeXBlLA0KICAgIEhlYXBCaWdJbnRUeXBlLA0KICAgIExhc3RN
YXliZUZhbHN5Q2VsbFByaW1pdGl2ZSA9IEhlYXBCaWdJbnRUeXBlLA0KICAgIFN5bWJvbFR5cGUs
DQoNCiAgICBHZXR0ZXJTZXR0ZXJUeXBlLA0KICAgIEN1c3RvbUdldHRlclNldHRlclR5cGUsDQog
ICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwNCg0KICAgIE5hdGl2ZUV4ZWN1dGFibGVUeXBlLA0KDQog
ICAgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlLA0KICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlw
ZSwNCiAgICBFdmFsRXhlY3V0YWJsZVR5cGUsDQogICAgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwN
Cg0KICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwNCg0KICAgIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1R5cGUsDQogICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrVHlw
ZSwNCiAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2tUeXBlLA0KICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tUeXBlLA0KICAgICAgICANCiAgICBDb2RlQmxvY2tUeXBlLA0KDQogICAgSlNJbW11
dGFibGVCdXR0ZXJmbHlUeXBlLA0KICAgIEpTU291cmNlQ29kZVR5cGUsDQogICAgSlNTY3JpcHRG
ZXRjaGVyVHlwZSwNCiAgICBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1R5cGUsDQoNCiAgICANCiAg
ICBPYmplY3RUeXBlLA0KICAgIEZpbmFsT2JqZWN0VHlwZSwNCiAgICBKU0NhbGxlZVR5cGUsDQog
ICAgSlNGdW5jdGlvblR5cGUsDQogICAgSW50ZXJuYWxGdW5jdGlvblR5cGUsDQogICAgTnVsbFNl
dHRlckZ1bmN0aW9uVHlwZSwNCiAgICBOdW1iZXJPYmplY3RUeXBlLA0KICAgIEVycm9ySW5zdGFu
Y2VUeXBlLA0KICAgIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlLA0KICAgIEltcHVyZVByb3h5VHlw
ZSwNCiAgICBEaXJlY3RBcmd1bWVudHNUeXBlLA0KICAgIFNjb3BlZEFyZ3VtZW50c1R5cGUsDQog
ICAgQ2xvbmVkQXJndW1lbnRzVHlwZSwNCg0KICAgIA0KICAgIEFycmF5VHlwZSwNCiAgICBEZXJp
dmVkQXJyYXlUeXBlLA0KICAgIA0KDQogICAgQXJyYXlCdWZmZXJUeXBlLA0KDQogICAgDQogICAg
SW50OEFycmF5VHlwZSwNCiAgICBVaW50OEFycmF5VHlwZSwNCiAgICBVaW50OENsYW1wZWRBcnJh
eVR5cGUsDQogICAgSW50MTZBcnJheVR5cGUsDQogICAgVWludDE2QXJyYXlUeXBlLA0KICAgIElu
dDMyQXJyYXlUeXBlLA0KICAgIFVpbnQzMkFycmF5VHlwZSwNCiAgICBGbG9hdDMyQXJyYXlUeXBl
LA0KICAgIEZsb2F0NjRBcnJheVR5cGUsDQogICAgRGF0YVZpZXdUeXBlLA0KICAgIA0KDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgR2xvYmFsT2JqZWN0VHlw
ZSwNCiAgICBHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRUeXBlLA0KICAgIExleGljYWxFbnZpcm9u
bWVudFR5cGUsDQogICAgTW9kdWxlRW52aXJvbm1lbnRUeXBlLA0KICAgIFN0cmljdEV2YWxBY3Rp
dmF0aW9uVHlwZSwNCiAgICANCiAgICBXaXRoU2NvcGVUeXBlLA0KICAgIA0KDQogICAgTW9kdWxl
TmFtZXNwYWNlT2JqZWN0VHlwZSwNCiAgICBSZWdFeHBPYmplY3RUeXBlLA0KICAgIEpTRGF0ZVR5
cGUsDQogICAgUHJveHlPYmplY3RUeXBlLA0KICAgIEpTR2VuZXJhdG9yVHlwZSwNCiAgICBKU0Fz
eW5jR2VuZXJhdG9yVHlwZSwNCiAgICBKU0FycmF5SXRlcmF0b3JUeXBlLA0KICAgIEpTTWFwSXRl
cmF0b3JUeXBlLA0KICAgIEpTU2V0SXRlcmF0b3JUeXBlLA0KICAgIEpTU3RyaW5nSXRlcmF0b3JU
eXBlLA0KICAgIEpTUHJvbWlzZVR5cGUsDQogICAgSlNNYXBUeXBlLA0KICAgIEpTU2V0VHlwZSwN
CiAgICBKU1dlYWtNYXBUeXBlLA0KICAgIEpTV2Vha1NldFR5cGUsDQogICAgV2ViQXNzZW1ibHlN
b2R1bGVUeXBlLA0KICAgIA0KICAgIFN0cmluZ09iamVjdFR5cGUsDQogICAgRGVyaXZlZFN0cmlu
Z09iamVjdFR5cGUsDQogICAgDQoNCiAgICBMYXN0SlNDT2JqZWN0VHlwZSA9IERlcml2ZWRTdHJp
bmdPYmplY3RUeXBlLCANCiAgICBNYXhKU1R5cGUgPSAwYjExMTExMTExLA0KfTsNCg0Kc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBGaXJzdFR5cGVkQXJyYXlUeXBlID0gSW50OEFycmF5VHlwZTsN
CnN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgTGFzdFR5cGVkQXJyYXlUeXBlID0gRGF0YVZpZXdU
eXBlOw0Kc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBMYXN0VHlwZWRBcnJheVR5cGVFeGNsdWRp
bmdEYXRhVmlldyA9IExhc3RUeXBlZEFycmF5VHlwZSAtIDE7DQoNCg0Kc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBGaXJzdE9iamVjdFR5cGUgPSBPYmplY3RUeXBlOw0Kc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBMYXN0T2JqZWN0VHlwZSA9IE1heEpTVHlwZTsNCg0Kc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlcyA9IExhc3RUeXBlZEFycmF5VHlwZSAt
IEZpcnN0VHlwZWRBcnJheVR5cGUgKyAxOw0Kc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBOdW1i
ZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3ID0gTnVtYmVyT2ZUeXBlZEFycmF5
VHlwZXMgLSAxOw0KDQpzdGF0aWNfYXNzZXJ0KHNpemVvZihKU1R5cGUpID09IHNpemVvZih1aW50
OF90KSwgInNpemVvZihKU1R5cGUpIGlzIG9uZSBieXRlLiIpOw0Kc3RhdGljX2Fzc2VydChMYXN0
SlNDT2JqZWN0VHlwZSA8IDBiMTExMDAwMDAsICJFbWJlZGRlciBjYW4gdXNlIDBiMTExMDAwMDAg
b3IgdXBwZXIuIik7DQoNCmlubGluZSBjb25zdGV4cHIgYm9vbCBpc1R5cGVkQXJyYXlUeXBlKEpT
VHlwZSB0eXBlKQ0Kew0KICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpIC0g
Rmlyc3RUeXBlZEFycmF5VHlwZSkgPCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0Rh
dGFWaWV3Ow0KfQ0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07
DQoNCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SlNUeXBlKTsNCg0KfSAN
CiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXFR5cGVkQXJyYXlUeXBlLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnN0
cnVjdCBDbGFzc0luZm87DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZW51bSBU
eXBlZEFycmF5VHlwZSB7DQogICAgTm90VHlwZWRBcnJheSwNCg0KICAgIFR5cGVJbnQ4LCBUeXBl
VWludDgsIFR5cGVVaW50OENsYW1wZWQsIFR5cGVJbnQxNiwgVHlwZVVpbnQxNiwgVHlwZUludDMy
LCBUeXBlVWludDMyLCBUeXBlRmxvYXQzMiwgVHlwZUZsb2F0NjQsIFR5cGVEYXRhVmlldywNCg0K
fTsNCg0KDQoNCiAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlSW50
OCkgPT0gKHN0YXRpY19jYXN0PHVpbnQzMl90PihJbnQ4QXJyYXlUeXBlKSAtIEZpcnN0VHlwZWRB
cnJheVR5cGUgKyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUludDgpKSwgIiIpOyBzdGF0aWNf
YXNzZXJ0KHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlVWludDgpID09IChzdGF0aWNfY2FzdDx1
aW50MzJfdD4oVWludDhBcnJheVR5cGUpIC0gRmlyc3RUeXBlZEFycmF5VHlwZSArIHN0YXRpY19j
YXN0PHVpbnQzMl90PihUeXBlSW50OCkpLCAiIik7IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KFR5cGVVaW50OENsYW1wZWQpID09IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oVWlu
dDhDbGFtcGVkQXJyYXlUeXBlKSAtIEZpcnN0VHlwZWRBcnJheVR5cGUgKyBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oVHlwZUludDgpKSwgIiIpOyBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVpbnQz
Ml90PihUeXBlSW50MTYpID09IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oSW50MTZBcnJheVR5cGUp
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSArIHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlSW50OCkp
LCAiIik7IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFR5cGVVaW50MTYpID09
IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oVWludDE2QXJyYXlUeXBlKSAtIEZpcnN0VHlwZWRBcnJh
eVR5cGUgKyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUludDgpKSwgIiIpOyBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlSW50MzIpID09IChzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSW50MzJBcnJheVR5cGUpIC0gRmlyc3RUeXBlZEFycmF5VHlwZSArIHN0YXRpY19jYXN0
PHVpbnQzMl90PihUeXBlSW50OCkpLCAiIik7IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KFR5cGVVaW50MzIpID09IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oVWludDMyQXJyYXlU
eXBlKSAtIEZpcnN0VHlwZWRBcnJheVR5cGUgKyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUlu
dDgpKSwgIiIpOyBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlRmxvYXQz
MikgPT0gKHN0YXRpY19jYXN0PHVpbnQzMl90PihGbG9hdDMyQXJyYXlUeXBlKSAtIEZpcnN0VHlw
ZWRBcnJheVR5cGUgKyBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUludDgpKSwgIiIpOyBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlRmxvYXQ2NCkgPT0gKHN0YXRpY19j
YXN0PHVpbnQzMl90PihGbG9hdDY0QXJyYXlUeXBlKSAtIEZpcnN0VHlwZWRBcnJheVR5cGUgKyBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUludDgpKSwgIiIpOw0KDQoNCnN0YXRpY19hc3NlcnQo
VHlwZURhdGFWaWV3ID09IChEYXRhVmlld1R5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlICsgVHlw
ZUludDgpLCAiIik7DQoNCmlubGluZSB1bnNpZ25lZCB0b0luZGV4KFR5cGVkQXJyYXlUeXBlIHR5
cGUpDQp7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSAtIDE7DQp9DQoN
CmlubGluZSBUeXBlZEFycmF5VHlwZSBpbmRleFRvVHlwZWRBcnJheVR5cGUodW5zaWduZWQgaW5k
ZXgpDQp7DQogICAgVHlwZWRBcnJheVR5cGUgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZWRBcnJh
eVR5cGU+KGluZGV4ICsgMSk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiByZXN1bHQ7DQp9
DQoNCmlubGluZSBib29sIGlzVHlwZWRWaWV3KFR5cGVkQXJyYXlUeXBlIHR5cGUpDQp7DQogICAg
c3dpdGNoICh0eXBlKSB7DQogICAgY2FzZSBOb3RUeXBlZEFycmF5Og0KICAgIGNhc2UgVHlwZURh
dGFWaWV3Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgZGVmYXVsdDoNCiAgICAgICAgcmV0
dXJuIHRydWU7DQogICAgfQ0KfQ0KDQppbmxpbmUgdW5zaWduZWQgbG9nRWxlbWVudFNpemUoVHlw
ZWRBcnJheVR5cGUgdHlwZSkNCnsNCiAgICBzd2l0Y2ggKHR5cGUpIHsNCiAgICBjYXNlIE5vdFR5
cGVkQXJyYXk6DQogICAgICAgIGJyZWFrOw0KICAgIGNhc2UgVHlwZUludDg6DQogICAgY2FzZSBU
eXBlVWludDg6DQogICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOg0KICAgIGNhc2UgVHlwZURhdGFW
aWV3Og0KICAgICAgICByZXR1cm4gMDsNCiAgICBjYXNlIFR5cGVJbnQxNjoNCiAgICBjYXNlIFR5
cGVVaW50MTY6DQogICAgICAgIHJldHVybiAxOw0KICAgIGNhc2UgVHlwZUludDMyOg0KICAgIGNh
c2UgVHlwZVVpbnQzMjoNCiAgICBjYXNlIFR5cGVGbG9hdDMyOg0KICAgICAgICByZXR1cm4gMjsN
CiAgICBjYXNlIFR5cGVGbG9hdDY0Og0KICAgICAgICByZXR1cm4gMzsNCiAgICB9DQogICAgZG8g
eyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgp
OyBXVEZDcmFzaFdpdGhJbmZvKDEwOCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVHlwZWRBcnJheVR5cGUuaCIsICBfX0ZVTkNUSU9O
X18gICwgNDkgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJldHVybiAwOw0KfQ0KDQppbmxpbmUg
c2l6ZV90IGVsZW1lbnRTaXplKFR5cGVkQXJyYXlUeXBlIHR5cGUpDQp7DQogICAgcmV0dXJuIHN0
YXRpY19jYXN0PHNpemVfdD4oMSkgPDwgbG9nRWxlbWVudFNpemUodHlwZSk7DQp9DQoNCmNvbnN0
IENsYXNzSW5mbyogY29uc3RydWN0b3JDbGFzc0luZm9Gb3JUeXBlKFR5cGVkQXJyYXlUeXBlKTsN
Cg0KaW5saW5lIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRm9yVHlwZShKU1R5cGUgdHlw
ZSkNCnsNCiAgICBpZiAodHlwZSA+PSBGaXJzdFR5cGVkQXJyYXlUeXBlICYmIHR5cGUgPD0gTGFz
dFR5cGVkQXJyYXlUeXBlKQ0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZWRBcnJheVR5
cGU+KHR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlICsgVHlwZUludDgpOw0KICAgIHJldHVybiBO
b3RUeXBlZEFycmF5Ow0KfQ0KDQppbmxpbmUgSlNUeXBlIHR5cGVGb3JUeXBlZEFycmF5VHlwZShU
eXBlZEFycmF5VHlwZSB0eXBlKQ0Kew0KICAgIGlmICh0eXBlID49IFR5cGVJbnQ4ICYmIHR5cGUg
PD0gVHlwZURhdGFWaWV3KQ0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPih0eXBl
IC0gVHlwZUludDggKyBGaXJzdFR5cGVkQXJyYXlUeXBlKTsNCg0KICAgIGRvIHsgV1RGOjppc0lu
dGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hX
aXRoSW5mbygxMzEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXFR5cGVkQXJyYXlUeXBlLmgiLCAgX19GVU5DVElPTl9fICAsIDUwICk7
IH0gd2hpbGUgKGZhbHNlKTsNCiAgICByZXR1cm4gSW50OEFycmF5VHlwZTsNCn0NCg0KaW5saW5l
IGJvb2wgaXNJbnQoVHlwZWRBcnJheVR5cGUgdHlwZSkNCnsNCiAgICBzd2l0Y2ggKHR5cGUpIHsN
CiAgICBjYXNlIFR5cGVJbnQ4Og0KICAgIGNhc2UgVHlwZVVpbnQ4Og0KICAgIGNhc2UgVHlwZVVp
bnQ4Q2xhbXBlZDoNCiAgICBjYXNlIFR5cGVJbnQxNjoNCiAgICBjYXNlIFR5cGVVaW50MTY6DQog
ICAgY2FzZSBUeXBlSW50MzI6DQogICAgY2FzZSBUeXBlVWludDMyOg0KICAgICAgICByZXR1cm4g
dHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQpp
bmxpbmUgYm9vbCBpc0Zsb2F0KFR5cGVkQXJyYXlUeXBlIHR5cGUpDQp7DQogICAgc3dpdGNoICh0
eXBlKSB7DQogICAgY2FzZSBUeXBlRmxvYXQzMjoNCiAgICBjYXNlIFR5cGVGbG9hdDY0Og0KICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgfQ0KfQ0KDQppbmxpbmUgYm9vbCBpc1NpZ25lZChUeXBlZEFycmF5VHlwZSB0eXBlKQ0Kew0K
ICAgIHN3aXRjaCAodHlwZSkgew0KICAgIGNhc2UgVHlwZUludDg6DQogICAgY2FzZSBUeXBlSW50
MTY6DQogICAgY2FzZSBUeXBlSW50MzI6DQogICAgY2FzZSBUeXBlRmxvYXQzMjoNCiAgICBjYXNl
IFR5cGVGbG9hdDY0Og0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQppbmxpbmUgYm9vbCBpc0NsYW1wZWQoVHlwZWRB
cnJheVR5cGUgdHlwZSkNCnsNCiAgICByZXR1cm4gdHlwZSA9PSBUeXBlVWludDhDbGFtcGVkOw0K
fQ0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgSlNDOjpUeXBlZEFycmF5VHlwZSk7DQoNCn0gDQojbGluZSAzNCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcU3BlY3VsYXRl
ZFR5cGUuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgU3RydWN0dXJlOw0KDQp0eXBl
ZGVmIHVpbnQ2NF90IFNwZWN1bGF0ZWRUeXBlOw0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsgDQpzdGF0aWMg
Y29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGaW5hbE9iamVjdCAgICAgICAgICAgICAgICAg
ICAgICAgPSAxdWxsIDw8IDA7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
QXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAxOyANCnN0YXRpYyBj
b25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5j
ZSAgICA9IDF1bGwgPDwgMjsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNG
dW5jdGlvbldpdGhOb25EZWZhdWx0SGFzSW5zdGFuY2UgPSAxdWxsIDw8IDM7IA0Kc3RhdGljIGNv
bnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAg
ICAgID0gU3BlY0Z1bmN0aW9uV2l0aERlZmF1bHRIYXNJbnN0YW5jZSB8IFNwZWNGdW5jdGlvbldp
dGhOb25EZWZhdWx0SGFzSW5zdGFuY2U7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjSW50OEFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCA0OyANCnN0
YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDE2QXJyYXkgICAgICAgICAgICAg
ICAgICAgICAgICA9IDF1bGwgPDwgNTsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDY7IA0Kc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDhBcnJheSAgICAgICAgICAgICAg
ICAgICAgICAgID0gMXVsbCA8PCA3OyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY1VpbnQ4Q2xhbXBlZEFycmF5ICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgODsgDQpzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNVaW50MTZBcnJheSAgICAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8IDk7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBT
cGVjVWludDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAxMDsgDQpzdGF0
aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNGbG9hdDMyQXJyYXkgICAgICAgICAgICAg
ICAgICAgICAgPSAxdWxsIDw8IDExOyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUg
U3BlY0Zsb2F0NjRBcnJheSAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMTI7IA0Kc3Rh
dGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjVHlwZWRBcnJheVZpZXcgICAgICAgICAg
ICAgICAgICAgID0gU3BlY0ludDhBcnJheSB8IFNwZWNJbnQxNkFycmF5IHwgU3BlY0ludDMyQXJy
YXkgfCBTcGVjVWludDhBcnJheSB8IFNwZWNVaW50OENsYW1wZWRBcnJheSB8IFNwZWNVaW50MTZB
cnJheSB8IFNwZWNVaW50MzJBcnJheSB8IFNwZWNGbG9hdDMyQXJyYXkgfCBTcGVjRmxvYXQ2NEFy
cmF5Ow0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjRGlyZWN0QXJndW1lbnRz
ICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAxMzsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNTY29wZWRBcmd1bWVudHMgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDE0OyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ09iamVjdCAg
ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMTU7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjUmVnRXhwT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCAxNjsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNEYXRlT2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDE3OyANCnN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY1Byb21pc2VPYmplY3QgICAgICAgICAgICAgICAgICAgICA9IDF1bGwg
PDwgMTg7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjTWFwT2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAxOTsgDQpzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNTZXRPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxs
IDw8IDIwOyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1dlYWtNYXBPYmpl
Y3QgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjE7IA0Kc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjV2Vha1NldE9iamVjdCAgICAgICAgICAgICAgICAgICAgID0gMXVs
bCA8PCAyMjsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcm94eU9iamVj
dCAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDIzOyANCnN0YXRpYyBjb25zdGV4cHIg
U3BlY3VsYXRlZFR5cGUgU3BlY0Rlcml2ZWRBcnJheSAgICAgICAgICAgICAgICAgICAgICA9IDF1
bGwgPDwgMjQ7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjT2JqZWN0T3Ro
ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAyNTsgDQpzdGF0aWMgY29uc3RleHBy
IFNwZWN1bGF0ZWRUeXBlIFNwZWNTdHJpbmdJZGVudCAgICAgICAgICAgICAgICAgICAgICAgPSAx
dWxsIDw8IDI2OyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZ1Zh
ciAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjc7IA0Kc3RhdGljIGNvbnN0ZXhw
ciBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
U3BlY1N0cmluZ0lkZW50IHwgU3BlY1N0cmluZ1ZhcjsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNTeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8
IDI4OyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMjk7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjQm9vbEludDMyICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCAzMDsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25Cb29sSW50MzIg
ICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDMxOyANCnN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0ludDMyT25seSAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNC
b29sSW50MzIgfCBTcGVjTm9uQm9vbEludDMyOyANCg0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxh
dGVkVHlwZSBTcGVjSW50MzJBc0ludDUyICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAz
MjsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25JbnQzMkFzSW50NTIg
ICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDMzOyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3Vs
YXRlZFR5cGUgU3BlY0ludDUyQW55ICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNJbnQz
MkFzSW50NTIgfCBTcGVjTm9uSW50MzJBc0ludDUyOyANCg0Kc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjQW55SW50QXNEb3VibGUgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCAzNDsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNOb25JbnRBc0RvdWJs
ZSAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM1OyANCnN0YXRpYyBjb25zdGV4cHIgU3Bl
Y3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNO
b25JbnRBc0RvdWJsZSB8IFNwZWNBbnlJbnRBc0RvdWJsZTsgDQpzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVQdXJlTmFOICAgICAgICAgICAgICAgICAgICAgPSAxdWxs
IDw8IDM2OyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZUltcHVy
ZU5hTiAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgMzc7IA0Kc3RhdGljIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlTmFOICAgICAgICAgICAgICAgICAgICAgICAgID0gU3Bl
Y0RvdWJsZVB1cmVOYU4gfCBTcGVjRG91YmxlSW1wdXJlTmFOOyANCnN0YXRpYyBjb25zdGV4cHIg
U3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlRG91YmxlICAgICAgICAgICAgICAgICAgICA9IFNw
ZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZVB1cmVOYU47IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjRnVsbERvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0Rv
dWJsZVJlYWwgfCBTcGVjRG91YmxlTmFOOyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0J5dGVjb2RlUmVhbE51bWJlciAgICAgICAgICAgICAgICA9IFNwZWNJbnQzMk9ubHkg
fCBTcGVjRG91YmxlUmVhbDsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNG
dWxsUmVhbE51bWJlciAgICAgICAgICAgICAgICAgICAgPSBTcGVjSW50MzJPbmx5IHwgU3BlY0lu
dDUyQW55IHwgU3BlY0RvdWJsZVJlYWw7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlw
ZSBTcGVjQnl0ZWNvZGVOdW1iZXIgICAgICAgICAgICAgICAgICAgID0gU3BlY0ludDMyT25seSB8
IFNwZWNCeXRlY29kZURvdWJsZTsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNJbnRBbnlGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSW50NTJBbnkgfCBTcGVj
SW50MzJPbmx5IHwgU3BlY0FueUludEFzRG91YmxlOw0KDQpzdGF0aWMgY29uc3RleHByIFNwZWN1
bGF0ZWRUeXBlIFNwZWNGdWxsTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVjSW50
QW55Rm9ybWF0IHwgU3BlY0Z1bGxEb3VibGU7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVk
VHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8PCAzODsg
DQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAxdWxsIDw8IDM5OyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRl
ZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNCb29sZWFu
IHwgU3BlY090aGVyOyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDF1bGwgPDwgNDA7IA0Kc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcEJpZ0ludCAgICAgICAgICAgICAgICAgICAgICAg
ID0gMXVsbCA8PCA0MTsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNCaWdJ
bnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxdWxsIDw8IDQyOyANCg0KDQojbGluZSAx
MDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0
ZWNvZGVcXFNwZWN1bGF0ZWRUeXBlLmgiDQoNCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5
cGUgU3BlY0JpZ0ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNIZWFwQmlnSW50
Ow0KI2xpbmUgMTA5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxTcGVjdWxhdGVkVHlwZS5oIg0Kc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjRGF0YVZpZXdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gMXVsbCA8
PCA0MzsgDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCB8IFNwZWNCeXRl
Y29kZU51bWJlciB8IFNwZWNNaXNjIHwgU3BlY0JpZ0ludDsgDQpzdGF0aWMgY29uc3RleHByIFNw
ZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTcGVj
RmluYWxPYmplY3QgfCBTcGVjQXJyYXkgfCBTcGVjRnVuY3Rpb24gfCBTcGVjVHlwZWRBcnJheVZp
ZXcgfCBTcGVjRGlyZWN0QXJndW1lbnRzIHwgU3BlY1Njb3BlZEFyZ3VtZW50cyB8IFNwZWNTdHJp
bmdPYmplY3QgfCBTcGVjUmVnRXhwT2JqZWN0IHwgU3BlY0RhdGVPYmplY3QgfCBTcGVjUHJvbWlz
ZU9iamVjdCB8IFNwZWNNYXBPYmplY3QgfCBTcGVjU2V0T2JqZWN0IHwgU3BlY1dlYWtNYXBPYmpl
Y3QgfCBTcGVjV2Vha1NldE9iamVjdCB8IFNwZWNQcm94eU9iamVjdCB8IFNwZWNEZXJpdmVkQXJy
YXkgfCBTcGVjT2JqZWN0T3RoZXIgfCBTcGVjRGF0YVZpZXdPYmplY3Q7IA0Kc3RhdGljIGNvbnN0
ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3BlY0NlbGxPdGhlciB8
IFNwZWNIZWFwQmlnSW50OyANCnN0YXRpYyBjb25zdGV4cHIgU3BlY3VsYXRlZFR5cGUgU3BlY0hl
YXBUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0JpZ0ludDMy
IHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVj
dWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0hl
YXBUb3AgfCBTcGVjRW1wdHk7IA0Kc3RhdGljIGNvbnN0ZXhwciBTcGVjdWxhdGVkVHlwZSBTcGVj
RnVsbFRvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3Bl
Y0Z1bGxOdW1iZXI7IA0KDQoNCg0KDQpzdGF0aWMgY29uc3RleHByIFNwZWN1bGF0ZWRUeXBlIFNw
ZWNDZWxsQ2hlY2sgICAgICAgICAgPSBpczY0Qml0KCkgPyAoU3BlY0NlbGwgfCBTcGVjRW1wdHkp
IDogU3BlY0NlbGw7DQoNCnR5cGVkZWYgYm9vbCAoKlNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikoU3Bl
Y3VsYXRlZFR5cGUpOw0KDQoNCmlubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUpDQp7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCmlubGluZSBib29sIGlzU3VidHlwZVNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSBjYXRlZ29yeSkN
CnsNCiAgICByZXR1cm4gISh2YWx1ZSAmIH5jYXRlZ29yeSkgJiYgdmFsdWU7DQp9DQoNCmlubGlu
ZSBib29sIHNwZWN1bGF0aW9uQ29udGFpbnMoU3BlY3VsYXRlZFR5cGUgdmFsdWUsIFNwZWN1bGF0
ZWRUeXBlIGNhdGVnb3J5KQ0Kew0KICAgIHJldHVybiAhISh2YWx1ZSAmIGNhdGVnb3J5KSAmJiB2
YWx1ZTsNCn0NCg0KaW5saW5lIGJvb2wgaXNDZWxsU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpDQp7DQogICAgcmV0dXJuICEhKHZhbHVlICYgU3BlY0NlbGwpICYmICEodmFsdWUgJiB+
U3BlY0NlbGwpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0NlbGxPck90aGVyU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuICEhdmFsdWUgJiYgISh2YWx1ZSAmIH4o
U3BlY0NlbGwgfCBTcGVjT3RoZXIpKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNOb3RDZWxsU3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuICEodmFsdWUgJiBTcGVj
Q2VsbENoZWNrKSAmJiB2YWx1ZTsNCn0NCg0KaW5saW5lIGJvb2wgaXNOb3RDZWxsTm9yQmlnSW50
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuICEodmFsdWUg
JiAoU3BlY0NlbGxDaGVjayB8IFNwZWNCaWdJbnQpKSAmJiB2YWx1ZTsNCn0NCg0KaW5saW5lIGJv
b2wgaXNPYmplY3RTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1
cm4gISEodmFsdWUgJiBTcGVjT2JqZWN0KSAmJiAhKHZhbHVlICYgflNwZWNPYmplY3QpOw0KfQ0K
DQppbmxpbmUgYm9vbCBpc09iamVjdE9yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkNCnsNCiAgICByZXR1cm4gISEodmFsdWUgJiAoU3BlY09iamVjdCB8IFNwZWNPdGhlcikp
ICYmICEodmFsdWUgJiB+KFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpKTsNCn0NCg0KaW5saW5lIGJv
b2wgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjRmluYWxPYmplY3Q7DQp9DQoNCmlubGluZSBib29sIGlzRmlu
YWxPYmplY3RPck90aGVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAg
cmV0dXJuICEhKHZhbHVlICYgKFNwZWNGaW5hbE9iamVjdCB8IFNwZWNPdGhlcikpICYmICEodmFs
dWUgJiB+KFNwZWNGaW5hbE9iamVjdCB8IFNwZWNPdGhlcikpOw0KfQ0KDQppbmxpbmUgYm9vbCBp
c1N0cmluZ0lkZW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0
dXJuIHZhbHVlID09IFNwZWNTdHJpbmdJZGVudDsNCn0NCg0KaW5saW5lIGJvb2wgaXNOb3RTdHJp
bmdWYXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISh2
YWx1ZSAmIFNwZWNTdHJpbmdWYXIpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc1N0cmluZ1NwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1
ZSAmIFNwZWNTdHJpbmcpID09IHZhbHVlOw0KfQ0KDQppbmxpbmUgYm9vbCBpc05vdFN0cmluZ1Nw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSAmJiAh
KHZhbHVlICYgU3BlY1N0cmluZyk7DQp9DQoNCmlubGluZSBib29sIGlzU3RyaW5nT3JPdGhlclNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiAhIXZhbHVlICYm
ICh2YWx1ZSAmIChTcGVjU3RyaW5nIHwgU3BlY090aGVyKSkgPT0gdmFsdWU7DQp9DQoNCmlubGlu
ZSBib29sIGlzU3ltYm9sU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAg
cmV0dXJuIHZhbHVlID09IFNwZWNTeW1ib2w7DQp9DQoNCmlubGluZSBib29sIGlzQmlnSW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gdmFsdWUgPT0g
U3BlY0JpZ0ludDMyOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0hlYXBCaWdJbnRTcGVjdWxhdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0hlYXBCaWdJ
bnQ7DQp9DQoNCmlubGluZSBib29sIGlzQmlnSW50U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpDQp7DQogICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0g
dmFsdWU7DQp9DQoNCmlubGluZSBib29sIGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0FycmF5Ow0KfQ0KDQppbmxpbmUg
Ym9vbCBpc0Z1bmN0aW9uU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAg
cmV0dXJuIHZhbHVlID09IFNwZWNGdW5jdGlvbjsNCn0NCg0KaW5saW5lIGJvb2wgaXNQcm94eU9i
amVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1
ZSA9PSBTcGVjUHJveHlPYmplY3Q7DQp9DQoNCmlubGluZSBib29sIGlzRGVyaXZlZEFycmF5U3Bl
Y3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNw
ZWNEZXJpdmVkQXJyYXk7DQp9DQoNCmlubGluZSBib29sIGlzSW50OEFycmF5U3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNwZWNJbnQ4QXJy
YXk7DQp9DQoNCmlubGluZSBib29sIGlzSW50MTZBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSW50MTZBcnJheTsNCn0NCg0K
aW5saW5lIGJvb2wgaXNJbnQzMkFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
DQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNwZWNJbnQzMkFycmF5Ow0KfQ0KDQppbmxpbmUgYm9v
bCBpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICBy
ZXR1cm4gdmFsdWUgPT0gU3BlY1VpbnQ4QXJyYXk7DQp9DQoNCmlubGluZSBib29sIGlzVWludDhD
bGFtcGVkQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1
cm4gdmFsdWUgPT0gU3BlY1VpbnQ4Q2xhbXBlZEFycmF5Ow0KfQ0KDQppbmxpbmUgYm9vbCBpc1Vp
bnQxNkFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJu
IHZhbHVlID09IFNwZWNVaW50MTZBcnJheTsNCn0NCg0KaW5saW5lIGJvb2wgaXNVaW50MzJBcnJh
eVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjVWludDMyQXJyYXk7DQp9DQoNCmlubGluZSBib29sIGlzRmxvYXQzMkFycmF5U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNwZWNG
bG9hdDMyQXJyYXk7DQp9DQoNCmlubGluZSBib29sIGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNwZWNGbG9hdDY0
QXJyYXk7DQp9DQoNCmlubGluZSBib29sIGlzRGlyZWN0QXJndW1lbnRzU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNwZWNEaXJlY3RBcmd1
bWVudHM7DQp9DQoNCmlubGluZSBib29sIGlzU2NvcGVkQXJndW1lbnRzU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNwZWNTY29wZWRBcmd1
bWVudHM7DQp9DQoNCmlubGluZSBib29sIGlzQWN0aW9uYWJsZUludE11dGFibGVBcnJheVNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiBpc0ludDhBcnJheVNw
ZWN1bGF0aW9uKHZhbHVlKQ0KICAgICAgICB8fCBpc0ludDE2QXJyYXlTcGVjdWxhdGlvbih2YWx1
ZSkNCiAgICAgICAgfHwgaXNJbnQzMkFycmF5U3BlY3VsYXRpb24odmFsdWUpDQogICAgICAgIHx8
IGlzVWludDhBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQ0KICAgICAgICB8fCBpc1VpbnQ4Q2xhbXBl
ZEFycmF5U3BlY3VsYXRpb24odmFsdWUpDQogICAgICAgIHx8IGlzVWludDE2QXJyYXlTcGVjdWxh
dGlvbih2YWx1ZSkNCiAgICAgICAgfHwgaXNVaW50MzJBcnJheVNwZWN1bGF0aW9uKHZhbHVlKTsN
Cn0NCg0KaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gaXNGbG9hdDMyQXJyYXlTcGVj
dWxhdGlvbih2YWx1ZSkNCiAgICAgICAgfHwgaXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbih2YWx1
ZSk7DQp9DQoNCmlubGluZSBib29sIGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFycmF5U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIGlzQWN0aW9uYWJsZUlu
dE11dGFibGVBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQ0KICAgICAgICB8fCBpc0FjdGlvbmFibGVG
bG9hdE11dGFibGVBcnJheVNwZWN1bGF0aW9uKHZhbHVlKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNB
Y3Rpb25hYmxlTXV0YWJsZUFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7
DQogICAgcmV0dXJuIGlzQXJyYXlTcGVjdWxhdGlvbih2YWx1ZSkNCiAgICAgICAgfHwgaXNBY3Rp
b25hYmxlVHlwZWRNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbih2YWx1ZSk7DQp9DQoNCmlubGluZSBi
b29sIGlzQWN0aW9uYWJsZUFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7
DQogICAgcmV0dXJuIGlzU3RyaW5nU3BlY3VsYXRpb24odmFsdWUpDQogICAgICAgIHx8IGlzRGly
ZWN0QXJndW1lbnRzU3BlY3VsYXRpb24odmFsdWUpDQogICAgICAgIHx8IGlzU2NvcGVkQXJndW1l
bnRzU3BlY3VsYXRpb24odmFsdWUpDQogICAgICAgIHx8IGlzQWN0aW9uYWJsZU11dGFibGVBcnJh
eVNwZWN1bGF0aW9uKHZhbHVlKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNBcnJheU9yT3RoZXJTcGVj
dWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISEodmFsdWUgJiAo
U3BlY0FycmF5IHwgU3BlY090aGVyKSkgJiYgISh2YWx1ZSAmIH4oU3BlY0FycmF5IHwgU3BlY090
aGVyKSk7DQp9DQoNCmlubGluZSBib29sIGlzU3RyaW5nT2JqZWN0U3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlID09IFNwZWNTdHJpbmdPYmplY3Q7
DQp9DQoNCmlubGluZSBib29sIGlzU3RyaW5nT3JTdHJpbmdPYmplY3RTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISF2YWx1ZSAmJiAhKHZhbHVlICYgfihT
cGVjU3RyaW5nIHwgU3BlY1N0cmluZ09iamVjdCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc1JlZ0V4
cE9iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjUmVnRXhwT2JqZWN0Ow0KfQ0KDQppbmxpbmUgYm9vbCBpc0Jvb2xJbnQzMlNw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA9PSBT
cGVjQm9vbEludDMyOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0ludDMyU3BlY3VsYXRpb24oU3BlY3Vs
YXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+U3BlY0lu
dDMyT25seSk7DQp9DQoNCmlubGluZSBib29sIGlzTm90SW50MzJTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIFNwZWNJbnQz
Mk9ubHkpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+KFNw
ZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0ludDMyU3Bl
Y3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVy
biAhKHZhbHVlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY05vbkludDMyQXNJbnQ1MiB8IFNwZWNC
aWdJbnQpKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uRm9y
QXJpdGhtZXRpYyhTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISh2YWx1ZSAm
IChTcGVjRnVsbERvdWJsZSB8IFNwZWNOb25JbnQzMkFzSW50NTIgfCBTcGVjQmlnSW50KSk7DQp9
DQoNCmlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmlu
ZWQoU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuIGlzSW50MzJPckJvb2xlYW5T
cGVjdWxhdGlvbih2YWx1ZSAmIH5TcGVjT3RoZXIpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0FueUlu
dDUyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuICEhdmFs
dWUgJiYgKHZhbHVlICYgU3BlY0ludDUyQW55KSA9PSB2YWx1ZTsNCn0NCg0KaW5saW5lIGJvb2wg
aXNJbnQzMk9ySW50NTJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICBy
ZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiAoU3BlY0ludDMyT25seSB8IFNwZWNJbnQ1MkFueSkp
ID09IHZhbHVlOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0ludEFueUZvcm1hdChTcGVjdWxhdGVkVHlw
ZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjSW50QW55Rm9y
bWF0KSA9PSB2YWx1ZTsNCn0NCg0KaW5saW5lIGJvb2wgaXNBbnlJbnRBc0RvdWJsZVNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQW55
SW50QXNEb3VibGU7DQp9DQoNCmlubGluZSBib29sIGlzRG91YmxlUmVhbFNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFNw
ZWNEb3VibGVSZWFsKSA9PSB2YWx1ZTsNCn0NCg0KaW5saW5lIGJvb2wgaXNEb3VibGVTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFs
dWUgJiBTcGVjRnVsbERvdWJsZSkgPT0gdmFsdWU7DQp9DQoNCmlubGluZSBib29sIGlzRG91Ymxl
U3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJl
dHVybiAhISh2YWx1ZSAmIFNwZWNGdWxsRG91YmxlKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNCeXRl
Y29kZVJlYWxOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICBy
ZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYgflNw
ZWNCeXRlY29kZVJlYWxOdW1iZXIpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0Z1bGxSZWFsTnVtYmVy
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuICEhKHZhbHVl
ICYgU3BlY0Z1bGxSZWFsTnVtYmVyKSAmJiAhKHZhbHVlICYgflNwZWNGdWxsUmVhbE51bWJlcik7
DQp9DQoNCmlubGluZSBib29sIGlzQnl0ZWNvZGVOdW1iZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIp
ICYmICEodmFsdWUgJiB+U3BlY0J5dGVjb2RlTnVtYmVyKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNG
dWxsTnVtYmVyU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJu
ICEhKHZhbHVlICYgU3BlY0Z1bGxOdW1iZXIpICYmICEodmFsdWUgJiB+U3BlY0Z1bGxOdW1iZXIp
Ow0KfQ0KDQppbmxpbmUgYm9vbCBpc0Z1bGxOdW1iZXJPckJvb2xlYW5TcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1ZSAmIH4oU3Bl
Y0Z1bGxOdW1iZXIgfCBTcGVjQm9vbGVhbikpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0Z1bGxOdW1i
ZXJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQoU3BlY3VsYXRlZFR5cGUgdmFs
dWUpDQp7DQogICAgcmV0dXJuIGlzRnVsbE51bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uKHZhbHVl
ICYgflNwZWNPdGhlcik7DQp9DQoNCmlubGluZSBib29sIGlzQm9vbGVhblNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVhbjsN
Cn0NCg0KaW5saW5lIGJvb2wgaXNOb3RCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpDQp7DQogICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiBTcGVjQm9vbGVhbik7DQp9
DQoNCmlubGluZSBib29sIGlzT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkN
CnsNCiAgICByZXR1cm4gdmFsdWUgPT0gU3BlY090aGVyOw0KfQ0KDQppbmxpbmUgYm9vbCBpc01p
c2NTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISF2YWx1
ZSAmJiAhKHZhbHVlICYgflNwZWNNaXNjKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNPdGhlck9yRW1w
dHlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gIXZhbHVl
IHx8IHZhbHVlID09IFNwZWNPdGhlcjsNCn0NCg0KaW5saW5lIGJvb2wgaXNFbXB0eVNwZWN1bGF0
aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjRW1w
dHk7DQp9DQoNCmlubGluZSBib29sIGlzVW50eXBlZFNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gISEodmFsdWUgJiB+KFNwZWNGdWxs
TnVtYmVyIHwgU3BlY0Jvb2xlYW4pKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNVbnR5cGVkU3BlY3Vs
YXRpb25Gb3JCaXRPcHMoU3BlY3VsYXRlZFR5cGUgdmFsdWUpDQp7DQogICAgcmV0dXJuICEhKHZh
bHVlICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNCb29sZWFuIHwgU3BlY090aGVyKSk7DQp9DQoN
CnZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiwgU3BlY3VsYXRlZFR5cGUpOw0Kdm9p
ZCBkdW1wU3BlY3VsYXRpb25BYmJyZXZpYXRlZChQcmludFN0cmVhbSYsIFNwZWN1bGF0ZWRUeXBl
KTsNCg0KY2xhc3MgU3BlY3VsYXRpb25EdW1wIHsgcHVibGljOiBTcGVjdWxhdGlvbkR1bXAoU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9IHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdCB7IGR1bXBTcGVjdWxhdGlvbihvdXQsIG1fdmFsdWUpOyB9IHByaXZh
dGU6IFNwZWN1bGF0ZWRUeXBlIG1fdmFsdWU7IH07DQpjbGFzcyBBYmJyZXZpYXRlZFNwZWN1bGF0
aW9uRHVtcCB7IHB1YmxpYzogQWJicmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAoU3BlY3VsYXRlZFR5
cGUgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdCB7IGR1bXBTcGVjdWxhdGlvbkFiYnJldmlhdGVkKG91dCwgbV92YWx1ZSk7IH0gcHJp
dmF0ZTogU3BlY3VsYXRlZFR5cGUgbV92YWx1ZTsgfTsNCg0KDQoNCg0KDQppbmxpbmUgU3BlY3Vs
YXRlZFR5cGUgbWVyZ2VTcGVjdWxhdGlvbnMoU3BlY3VsYXRlZFR5cGUgbGVmdCwgU3BlY3VsYXRl
ZFR5cGUgcmlnaHQpDQp7DQogICAgcmV0dXJuIGxlZnQgfCByaWdodDsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVD4NCmlubGluZSBib29sIG1lcmdlU3BlY3VsYXRpb24oVCYgbGVmdCwgU3BlY3Vs
YXRlZFR5cGUgcmlnaHQpDQp7DQogICAgU3BlY3VsYXRlZFR5cGUgbmV3U3BlY3VsYXRpb24gPSBz
dGF0aWNfY2FzdDxUPihtZXJnZVNwZWN1bGF0aW9ucyhzdGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlw
ZT4obGVmdCksIHJpZ2h0KSk7DQogICAgYm9vbCByZXN1bHQgPSBuZXdTcGVjdWxhdGlvbiAhPSBz
dGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlwZT4obGVmdCk7DQogICAgbGVmdCA9IG5ld1NwZWN1bGF0
aW9uOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCmlubGluZSBib29sIHNwZWN1bGF0aW9uQ2hl
Y2tlZChTcGVjdWxhdGVkVHlwZSBhY3R1YWwsIFNwZWN1bGF0ZWRUeXBlIGRlc2lyZWQpDQp7DQog
ICAgcmV0dXJuIChhY3R1YWwgfCBkZXNpcmVkKSA9PSBkZXNpcmVkOw0KfQ0KDQoNCg0KU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvSW5oZXJpdGFuY2UoY29uc3QgQ2xhc3NJ
bmZvKik7DQoNClNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1
cmUqKTsNClNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNlbGwoSlNDZWxsKik7DQpfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNW
YWx1ZSk7DQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIFNwZWN1bGF0ZWRUeXBlIGludDUyQXdh
cmVTcGVjdWxhdGlvbkZyb21WYWx1ZShKU1ZhbHVlKTsNCk9wdGlvbmFsPFNwZWN1bGF0ZWRUeXBl
PiBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsNCg0KU3BlY3VsYXRlZFR5cGUgc3BlY3Vs
YXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyANClR5cGVkQXJyYXlUeXBl
IHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlKTsNCg0KU3BlY3Vs
YXRlZFR5cGUgbGVhc3RVcHBlckJvdW5kT2ZTdHJpY3RseUVxdWl2YWxlbnRTcGVjdWxhdGlvbnMo
U3BlY3VsYXRlZFR5cGUpOw0KDQpib29sIHZhbHVlc0NvdWxkQmVFcXVhbChTcGVjdWxhdGVkVHlw
ZSwgU3BlY3VsYXRlZFR5cGUpOw0KDQoNCg0KDQpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVT
dW0oU3BlY3VsYXRlZFR5cGUsIFNwZWN1bGF0ZWRUeXBlKTsNClNwZWN1bGF0ZWRUeXBlIHR5cGVP
ZkRvdWJsZURpZmZlcmVuY2UoU3BlY3VsYXRlZFR5cGUsIFNwZWN1bGF0ZWRUeXBlKTsNClNwZWN1
bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZUluY09yRGVjKFNwZWN1bGF0ZWRUeXBlKTsNClNwZWN1bGF0
ZWRUeXBlIHR5cGVPZkRvdWJsZVByb2R1Y3QoU3BlY3VsYXRlZFR5cGUsIFNwZWN1bGF0ZWRUeXBl
KTsNClNwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZVF1b3RpZW50KFNwZWN1bGF0ZWRUeXBlLCBT
cGVjdWxhdGVkVHlwZSk7DQpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVNaW5NYXgoU3BlY3Vs
YXRlZFR5cGUsIFNwZWN1bGF0ZWRUeXBlKTsNClNwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZU5l
Z2F0aW9uKFNwZWN1bGF0ZWRUeXBlKTsNClNwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZUFicyhT
cGVjdWxhdGVkVHlwZSk7DQpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVSb3VuZGluZyhTcGVj
dWxhdGVkVHlwZSk7DQpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVQb3coU3BlY3VsYXRlZFR5
cGUsIFNwZWN1bGF0ZWRUeXBlKTsNCg0KDQpTcGVjdWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVCaW5h
cnlPcChTcGVjdWxhdGVkVHlwZSwgU3BlY3VsYXRlZFR5cGUpOw0KU3BlY3VsYXRlZFR5cGUgdHlw
ZU9mRG91YmxlVW5hcnlPcChTcGVjdWxhdGVkVHlwZSk7DQoNCg0KU3BlY3VsYXRlZFR5cGUgc3Bl
Y3VsYXRpb25Gcm9tU3RyaW5nKGNvbnN0IGNoYXIqKTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEZ1enpl
ckFnZW50LmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDb2RlQmxvY2s7DQoNCmNsYXNz
IEZ1enplckFnZW50IHsNCnB1YmxpYzoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdmlydHVh
bCB+RnV6emVyQWdlbnQoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2aXJ0dWFsIFNw
ZWN1bGF0ZWRUeXBlIGdldFByZWRpY3Rpb24oQ29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdpbiYs
IFNwZWN1bGF0ZWRUeXBlKTsNCn07DQoNCn0gDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHRvb2xz
XFxJbnRlZ3JpdHkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xh
c3MgSlNDZWxsOw0KY2xhc3MgVk07DQoNCm5hbWVzcGFjZSBJbnRlZ3JpdHkgew0KDQplbnVtIGNs
YXNzIEF1ZGl0TGV2ZWwgew0KICAgIE5vbmUsDQogICAgTWluaW1hbCwNCiAgICBGdWxsLA0KICAg
IFJhbmRvbSwNCn07DQoNCg0Kc3RhdGljIGNvbnN0ZXhwciBBdWRpdExldmVsIERlZmF1bHRBdWRp
dExldmVsID0gQXVkaXRMZXZlbDo6Tm9uZTsNCg0KDQojbGluZSA1MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFx0b29sc1xcSW50ZWdyaXR5LmgiDQoN
CmNsYXNzIFJhbmRvbSB7DQpwdWJsaWM6DQogICAgUmFuZG9tKFZNJik7DQoNCiAgICBfX2ZvcmNl
aW5saW5lIGJvb2wgc2hvdWxkQXVkaXQoVk0mKTsNCg0KcHJpdmF0ZToNCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgYm9vbCByZWxvYWRBbmRDaGVja1Nob3VsZEF1ZGl0U2xvdyhWTSYpOw0KDQog
ICAgdWludDY0X3QgbV90cmlnZ2VyQml0czsNCiAgICBMb2NrIG1fbG9jazsNCg0KICAgIA0KICAg
IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG51bWJlck9mVHJpZ2dlckJpdHMgPSAoc2l6ZW9m
KG1fdHJpZ2dlckJpdHMpICogOCkgLSAxOw0KfTsNCg0KX19mb3JjZWlubGluZSB2b2lkIGF1ZGl0
Q2VsbFJhbmRvbWx5KFZNJiwgSlNDZWxsKik7DQpfX2ZvcmNlaW5saW5lIHZvaWQgYXVkaXRDZWxs
TWluaW1hbGx5KFZNJiwgSlNDZWxsKik7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBhdWRp
dENlbGxNaW5pbWFsbHlTbG93KFZNJiwgSlNDZWxsKik7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
dm9pZCBhdWRpdENlbGxGdWxseShWTSYsIEpTQ2VsbCopOw0KDQp0ZW1wbGF0ZTxBdWRpdExldmVs
ID0gQXVkaXRMZXZlbDo6UmFuZG9tLCB0eXBlbmFtZSBUPg0KX19mb3JjZWlubGluZSB2b2lkIGF1
ZGl0Q2VsbChWTSYsIFQpIHsgfQ0KDQp0ZW1wbGF0ZTxBdWRpdExldmVsIGF1ZGl0TGV2ZWwgPSBE
ZWZhdWx0QXVkaXRMZXZlbD4NCl9fZm9yY2VpbmxpbmUgdm9pZCBhdWRpdENlbGwoVk0mIHZtLCBK
U0NlbGwqIGNlbGwpDQp7DQogICAgc3dpdGNoIChhdWRpdExldmVsKSB7DQogICAgY2FzZSBBdWRp
dExldmVsOjpOb25lOg0KICAgICAgICByZXR1cm47DQogICAgY2FzZSBBdWRpdExldmVsOjpNaW5p
bWFsOg0KICAgICAgICByZXR1cm4gYXVkaXRDZWxsTWluaW1hbGx5KHZtLCBjZWxsKTsNCiAgICBj
YXNlIEF1ZGl0TGV2ZWw6OkZ1bGw6DQogICAgICAgIHJldHVybiBhdWRpdENlbGxGdWxseSh2bSwg
Y2VsbCk7DQogICAgY2FzZSBBdWRpdExldmVsOjpSYW5kb206DQogICAgICAgIHJldHVybiBhdWRp
dENlbGxSYW5kb21seSh2bSwgY2VsbCk7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZTxBdWRpdExldmVs
IGF1ZGl0TGV2ZWwgPSBEZWZhdWx0QXVkaXRMZXZlbD4NCl9fZm9yY2VpbmxpbmUgdm9pZCBhdWRp
dENlbGwoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgIGlmIChhdWRpdExldmVsID09IEF1
ZGl0TGV2ZWw6Ok5vbmUpDQogICAgICAgIHJldHVybjsNCg0KICAgIGlmICh2YWx1ZS5pc0NlbGwo
KSkNCiAgICAgICAgYXVkaXRDZWxsPGF1ZGl0TGV2ZWw+KHZtLCB2YWx1ZS5hc0NlbGwoKSk7DQp9
DQoNCl9fZm9yY2VpbmxpbmUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEVGFibGUm
LCBTdHJ1Y3R1cmVJRCk7DQpfX2ZvcmNlaW5saW5lIHZvaWQgYXVkaXRTdHJ1Y3R1cmVJRChWTSYs
IFN0cnVjdHVyZUlEKTsNCg0KfSANCg0KfSANCiNsaW5lIDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEludHJpbnNpYy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxJdGVyYXRpb25LaW5kLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCiAgICANCmVudW0gY2xhc3MgSXRlcmF0aW9uS2luZCA6IHVp
bnQzMl90IHsNCiAgICBLZXlzLA0KICAgIFZhbHVlcywNCiAgICBFbnRyaWVzLA0KfTsNCg0KDQp9
IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcSW50cmluc2ljLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0g
SW50cmluc2ljIDogdWludDhfdCB7DQogICAgDQogICAgTm9JbnRyaW5zaWMsDQogICAgQWJzSW50
cmluc2ljLA0KICAgIEFDb3NJbnRyaW5zaWMsDQogICAgQVNpbkludHJpbnNpYywNCiAgICBBVGFu
SW50cmluc2ljLA0KICAgIEFDb3NoSW50cmluc2ljLA0KICAgIEFTaW5oSW50cmluc2ljLA0KICAg
IEFUYW5oSW50cmluc2ljLA0KICAgIE1pbkludHJpbnNpYywNCiAgICBNYXhJbnRyaW5zaWMsDQog
ICAgU3FydEludHJpbnNpYywNCiAgICBTaW5JbnRyaW5zaWMsDQogICAgQ2JydEludHJpbnNpYywN
CiAgICBDbHozMkludHJpbnNpYywNCiAgICBDb3NJbnRyaW5zaWMsDQogICAgVGFuSW50cmluc2lj
LA0KICAgIENvc2hJbnRyaW5zaWMsDQogICAgU2luaEludHJpbnNpYywNCiAgICBUYW5oSW50cmlu
c2ljLA0KICAgIEFycmF5UHVzaEludHJpbnNpYywNCiAgICBBcnJheVBvcEludHJpbnNpYywNCiAg
ICBBcnJheVNsaWNlSW50cmluc2ljLA0KICAgIEFycmF5SW5kZXhPZkludHJpbnNpYywNCiAgICBB
cnJheVZhbHVlc0ludHJpbnNpYywNCiAgICBBcnJheUtleXNJbnRyaW5zaWMsDQogICAgQXJyYXlF
bnRyaWVzSW50cmluc2ljLA0KICAgIENoYXJDb2RlQXRJbnRyaW5zaWMsDQogICAgQ2hhckF0SW50
cmluc2ljLA0KICAgIERhdGVQcm90b3R5cGVHZXRUaW1lSW50cmluc2ljLA0KICAgIERhdGVQcm90
b3R5cGVHZXRGdWxsWWVhckludHJpbnNpYywNCiAgICBEYXRlUHJvdG90eXBlR2V0VVRDRnVsbFll
YXJJbnRyaW5zaWMsDQogICAgRGF0ZVByb3RvdHlwZUdldE1vbnRoSW50cmluc2ljLA0KICAgIERh
dGVQcm90b3R5cGVHZXRVVENNb250aEludHJpbnNpYywNCiAgICBEYXRlUHJvdG90eXBlR2V0RGF0
ZUludHJpbnNpYywNCiAgICBEYXRlUHJvdG90eXBlR2V0VVRDRGF0ZUludHJpbnNpYywNCiAgICBE
YXRlUHJvdG90eXBlR2V0RGF5SW50cmluc2ljLA0KICAgIERhdGVQcm90b3R5cGVHZXRVVENEYXlJ
bnRyaW5zaWMsDQogICAgRGF0ZVByb3RvdHlwZUdldEhvdXJzSW50cmluc2ljLA0KICAgIERhdGVQ
cm90b3R5cGVHZXRVVENIb3Vyc0ludHJpbnNpYywNCiAgICBEYXRlUHJvdG90eXBlR2V0TWludXRl
c0ludHJpbnNpYywNCiAgICBEYXRlUHJvdG90eXBlR2V0VVRDTWludXRlc0ludHJpbnNpYywNCiAg
ICBEYXRlUHJvdG90eXBlR2V0U2Vjb25kc0ludHJpbnNpYywNCiAgICBEYXRlUHJvdG90eXBlR2V0
VVRDU2Vjb25kc0ludHJpbnNpYywNCiAgICBEYXRlUHJvdG90eXBlR2V0TWlsbGlzZWNvbmRzSW50
cmluc2ljLA0KICAgIERhdGVQcm90b3R5cGVHZXRVVENNaWxsaXNlY29uZHNJbnRyaW5zaWMsDQog
ICAgRGF0ZVByb3RvdHlwZUdldFRpbWV6b25lT2Zmc2V0SW50cmluc2ljLA0KICAgIERhdGVQcm90
b3R5cGVHZXRZZWFySW50cmluc2ljLA0KICAgIEZyb21DaGFyQ29kZUludHJpbnNpYywNCiAgICBQ
b3dJbnRyaW5zaWMsDQogICAgRmxvb3JJbnRyaW5zaWMsDQogICAgQ2VpbEludHJpbnNpYywNCiAg
ICBSb3VuZEludHJpbnNpYywNCiAgICBFeHBJbnRyaW5zaWMsDQogICAgRXhwbTFJbnRyaW5zaWMs
DQogICAgTG9nSW50cmluc2ljLA0KICAgIExvZzEwSW50cmluc2ljLA0KICAgIExvZzFwSW50cmlu
c2ljLA0KICAgIExvZzJJbnRyaW5zaWMsDQogICAgUmVnRXhwRXhlY0ludHJpbnNpYywNCiAgICBS
ZWdFeHBUZXN0SW50cmluc2ljLA0KICAgIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljLA0KICAgIFJl
Z0V4cE1hdGNoRmFzdEludHJpbnNpYywNCiAgICBPYmplY3RDcmVhdGVJbnRyaW5zaWMsDQogICAg
T2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsDQogICAgT2JqZWN0SXNJbnRyaW5zaWMsDQog
ICAgT2JqZWN0S2V5c0ludHJpbnNpYywNCiAgICBSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5z
aWMsDQogICAgU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRJbnRyaW5zaWMsDQogICAgU3RyaW5n
UHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywNCiAgICBTdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50
cmluc2ljLA0KICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VSZWdFeHBJbnRyaW5zaWMsDQogICAg
U3RyaW5nUHJvdG90eXBlU2xpY2VJbnRyaW5zaWMsDQogICAgU3RyaW5nUHJvdG90eXBlVG9Mb3dl
ckNhc2VJbnRyaW5zaWMsDQogICAgTnVtYmVyUHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMsDQog
ICAgTnVtYmVySXNJbnRlZ2VySW50cmluc2ljLA0KICAgIElNdWxJbnRyaW5zaWMsDQogICAgUmFu
ZG9tSW50cmluc2ljLA0KICAgIEZSb3VuZEludHJpbnNpYywNCiAgICBUcnVuY0ludHJpbnNpYywN
CiAgICBUeXBlZEFycmF5VmFsdWVzSW50cmluc2ljLA0KICAgIFR5cGVkQXJyYXlLZXlzSW50cmlu
c2ljLA0KICAgIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljLA0KICAgIElzVHlwZWRBcnJheVZp
ZXdJbnRyaW5zaWMsDQogICAgQm91bmRGdW5jdGlvbkNhbGxJbnRyaW5zaWMsDQogICAgSlNNYXBH
ZXRJbnRyaW5zaWMsDQogICAgSlNNYXBIYXNJbnRyaW5zaWMsDQogICAgSlNNYXBTZXRJbnRyaW5z
aWMsDQogICAgSlNNYXBWYWx1ZXNJbnRyaW5zaWMsDQogICAgSlNNYXBLZXlzSW50cmluc2ljLA0K
ICAgIEpTTWFwRW50cmllc0ludHJpbnNpYywNCiAgICBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMs
DQogICAgSlNNYXBCdWNrZXROZXh0SW50cmluc2ljLA0KICAgIEpTTWFwQnVja2V0S2V5SW50cmlu
c2ljLA0KICAgIEpTTWFwQnVja2V0VmFsdWVJbnRyaW5zaWMsDQogICAgSlNTZXRIYXNJbnRyaW5z
aWMsDQogICAgSlNTZXRBZGRJbnRyaW5zaWMsDQogICAgSlNTZXRWYWx1ZXNJbnRyaW5zaWMsDQog
ICAgSlNTZXRFbnRyaWVzSW50cmluc2ljLA0KICAgIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYywN
CiAgICBKU1NldEJ1Y2tldE5leHRJbnRyaW5zaWMsDQogICAgSlNTZXRCdWNrZXRLZXlJbnRyaW5z
aWMsDQogICAgSlNXZWFrTWFwR2V0SW50cmluc2ljLA0KICAgIEpTV2Vha01hcEhhc0ludHJpbnNp
YywNCiAgICBKU1dlYWtNYXBTZXRJbnRyaW5zaWMsDQogICAgSlNXZWFrU2V0SGFzSW50cmluc2lj
LA0KICAgIEpTV2Vha1NldEFkZEludHJpbnNpYywNCiAgICBIYXNPd25Qcm9wZXJ0eUludHJpbnNp
YywNCiAgICBBdG9taWNzQWRkSW50cmluc2ljLA0KICAgIEF0b21pY3NBbmRJbnRyaW5zaWMsDQog
ICAgQXRvbWljc0NvbXBhcmVFeGNoYW5nZUludHJpbnNpYywNCiAgICBBdG9taWNzRXhjaGFuZ2VJ
bnRyaW5zaWMsDQogICAgQXRvbWljc0lzTG9ja0ZyZWVJbnRyaW5zaWMsDQogICAgQXRvbWljc0xv
YWRJbnRyaW5zaWMsDQogICAgQXRvbWljc09ySW50cmluc2ljLA0KICAgIEF0b21pY3NTdG9yZUlu
dHJpbnNpYywNCiAgICBBdG9taWNzU3ViSW50cmluc2ljLA0KICAgIEF0b21pY3NXYWl0SW50cmlu
c2ljLA0KICAgIEF0b21pY3NXYWtlSW50cmluc2ljLA0KICAgIEF0b21pY3NYb3JJbnRyaW5zaWMs
DQogICAgUGFyc2VJbnRJbnRyaW5zaWMsDQoNCiAgICANCiAgICBUeXBlZEFycmF5TGVuZ3RoSW50
cmluc2ljLA0KICAgIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljLA0KICAgIFR5cGVkQXJy
YXlCeXRlT2Zmc2V0SW50cmluc2ljLA0KICAgIFVuZGVyc2NvcmVQcm90b0ludHJpbnNpYywNCg0K
ICAgIA0KICAgIA0KICAgIERGR1RydWVJbnRyaW5zaWMsDQogICAgRlRMVHJ1ZUludHJpbnNpYywN
CiAgICBPU1JFeGl0SW50cmluc2ljLA0KICAgIElzRmluYWxUaWVySW50cmluc2ljLA0KICAgIFNl
dEludDMySGVhcFByZWRpY3Rpb25JbnRyaW5zaWMsDQogICAgQ2hlY2tJbnQzMkludHJpbnNpYywN
CiAgICBGaWF0SW50NTJJbnRyaW5zaWMsDQoNCiAgICANCiAgICBDUFVNZmVuY2VJbnRyaW5zaWMs
DQogICAgQ1BVUmR0c2NJbnRyaW5zaWMsDQogICAgQ1BVQ3B1aWRJbnRyaW5zaWMsDQogICAgQ1BV
UGF1c2VJbnRyaW5zaWMsDQoNCiAgICBEYXRhVmlld0dldEludDgsDQogICAgRGF0YVZpZXdHZXRV
aW50OCwNCiAgICBEYXRhVmlld0dldEludDE2LA0KICAgIERhdGFWaWV3R2V0VWludDE2LA0KICAg
IERhdGFWaWV3R2V0SW50MzIsDQogICAgRGF0YVZpZXdHZXRVaW50MzIsDQogICAgRGF0YVZpZXdH
ZXRGbG9hdDMyLA0KICAgIERhdGFWaWV3R2V0RmxvYXQ2NCwNCiAgICBEYXRhVmlld1NldEludDgs
DQogICAgRGF0YVZpZXdTZXRVaW50OCwNCiAgICBEYXRhVmlld1NldEludDE2LA0KICAgIERhdGFW
aWV3U2V0VWludDE2LA0KICAgIERhdGFWaWV3U2V0SW50MzIsDQogICAgRGF0YVZpZXdTZXRVaW50
MzIsDQogICAgRGF0YVZpZXdTZXRGbG9hdDMyLA0KICAgIERhdGFWaWV3U2V0RmxvYXQ2NCwNCn07
DQoNCk9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmluc2ljKElu
dHJpbnNpYyk7DQoNCmNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljKTsNCg0KfSAN
Cg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIFByaW50U3RyZWFtOw0KDQp2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkludHJpbnNpYyk7DQoNCn0gDQoNCg0KI2xpbmUgNDYg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcVk0uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcSXNvQ2VsbFNldC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Nv
bmN1cnJlbnRWZWN0b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0NvbmN1cnJlbnRCdWZm
ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCnVzaW5nIENv
bmN1cnJlbnRCdWZmZXJNYWxsb2MgPSBGYXN0TWFsbG9jOw0KDQoNCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4NCmNsYXNzIENvbmN1cnJlbnRCdWZmZXIgZmluYWwgew0KICAgIENvbmN1cnJlbnRCdWZm
ZXIoY29uc3QgQ29uY3VycmVudEJ1ZmZlciYpID0gZGVsZXRlOyBDb25jdXJyZW50QnVmZmVyJiBv
cGVyYXRvcj0oY29uc3QgQ29uY3VycmVudEJ1ZmZlciYpID0gZGVsZXRlOzsNCiAgICBwdWJsaWM6
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9j
KHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZy
ZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9j
YXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1h
bGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIA0KICAgIENvbmN1cnJlbnRCdWZm
ZXIoKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgfkNvbmN1cnJlbnRCdWZmZXIoKQ0KICAgIHsN
CiAgICAgICAgaWYgKEFycmF5KiBhcnJheSA9IG1fYXJyYXkpIHsNCiAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPnNpemU7ICsraSkNCiAgICAgICAgICAgICAgICBhcnJh
eS0+ZGF0YVtpXS5+VCgpOw0KICAgICAgICB9DQogICAgICAgIGZvciAoQXJyYXkqIGFycmF5IDog
bV9hbGxBcnJheXMpDQogICAgICAgICAgICBDb25jdXJyZW50QnVmZmVyTWFsbG9jOjpmcmVlKGFy
cmF5KTsNCiAgICB9DQoNCiAgICANCiAgICB2b2lkIGdyb3dFeGFjdChzaXplX3QgbmV3U2l6ZSkN
CiAgICB7DQogICAgICAgIEFycmF5KiBhcnJheSA9IG1fYXJyYXk7DQogICAgICAgIGlmIChhcnJh
eSAmJiBuZXdTaXplIDw9IGFycmF5LT5zaXplKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICBBcnJheSogbmV3QXJyYXkgPSBjcmVhdGVBcnJheShuZXdTaXplKTsNCiAgICAgICAgDQogICAg
ICAgIA0KICAgICAgICBpZiAoYXJyYXkpDQogICAgICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8
dm9pZCo+KG5ld0FycmF5LT5kYXRhKSwgYXJyYXktPmRhdGEsIHNpemVvZihUKSAqIGFycmF5LT5z
aXplKTsNCiAgICAgICAgZm9yIChzaXplX3QgaSA9IGFycmF5ID8gYXJyYXktPnNpemUgOiAwOyBp
IDwgbmV3U2l6ZTsgKytpKQ0KICAgICAgICAgICAgbmV3IChuZXdBcnJheS0+ZGF0YSArIGkpIFQo
KTsNCiAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsNCiAgICAgICAgbV9hcnJheSA9IG5l
d0FycmF5Ow0KICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOw0KICAgICAgICBtX2FsbEFy
cmF5cy5hcHBlbmQobmV3QXJyYXkpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGdyb3coc2l6ZV90
IG5ld1NpemUpDQogICAgew0KICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fYXJyYXkgPyBtX2FycmF5
LT5zaXplIDogMDsNCiAgICAgICAgaWYgKG5ld1NpemUgPD0gc2l6ZSkNCiAgICAgICAgICAgIHJl
dHVybjsNCiAgICAgICAgZ3Jvd0V4YWN0KHN0ZDo6bWF4KG5ld1NpemUsIHNpemUgKiAyKSk7DQog
ICAgfQ0KICAgIA0KICAgIHN0cnVjdCBBcnJheSB7DQogICAgICAgIHNpemVfdCBzaXplOyANCiAg
ICAgICAgVCBkYXRhWzFdOw0KICAgIH07DQogICAgDQogICAgQXJyYXkqIGFycmF5KCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJheTsgfQ0KICAgIA0KICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KSB7IHJldHVybiBtX2FycmF5LT5kYXRhW2luZGV4XTsgfQ0KICAgIGNvbnN0IFQmIG9wZXJhdG9y
W10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2FycmF5LT5kYXRhW2luZGV4XTsgfQ0K
ICAgIA0KcHJpdmF0ZToNCiAgICBBcnJheSogY3JlYXRlQXJyYXkoc2l6ZV90IHNpemUpDQogICAg
ew0KICAgICAgICBDaGVja2VkPHNpemVfdD4gb2JqZWN0U2l6ZSA9IHNpemVvZihUKTsNCiAgICAg
ICAgb2JqZWN0U2l6ZSAqPSBzaXplOw0KICAgICAgICBvYmplY3RTaXplICs9IHN0YXRpY19jYXN0
PHNpemVfdD4oKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8
QXJyYXkqPigweDQwMDApLT5kYXRhKSkgLSAweDQwMDApKTsNCiAgICAgICAgQXJyYXkqIHJlc3Vs
dCA9IHN0YXRpY19jYXN0PEFycmF5Kj4oQ29uY3VycmVudEJ1ZmZlck1hbGxvYzo6bWFsbG9jKG9i
amVjdFNpemUudW5zYWZlR2V0KCkpKTsNCiAgICAgICAgcmVzdWx0LT5zaXplID0gc2l6ZTsNCiAg
ICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgDQogICAgQXJyYXkqIG1fYXJyYXkgeyBu
dWxscHRyIH07DQogICAgVmVjdG9yPEFycmF5Kj4gbV9hbGxBcnJheXM7DQp9Ow0KDQp9IA0KDQoj
bGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFk
ZXJzXFx3dGYvQ29uY3VycmVudFZlY3Rvci5oIg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCnRl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4PiBjbGFzcyBDb25jdXJy
ZW50VmVjdG9yOw0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZSA9IDg+
IGNsYXNzIENvbmN1cnJlbnRWZWN0b3JJdGVyYXRvciB7DQogICAgcHVibGljOiB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0
b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2
b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgo
dm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGlu
dDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNN
YWNybyA9IGludDsNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIENvbmN1cnJlbnRWZWN0b3I8
VCwgU2VnbWVudFNpemU+Ow0KcHVibGljOg0KICAgIHR5cGVkZWYgQ29uY3VycmVudFZlY3Rvckl0
ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsNCg0KICAgIH5Db25jdXJyZW50VmVjdG9y
SXRlcmF0b3IoKSB7IH0NCg0KICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdmVj
dG9yLmF0KG1faW5kZXgpOyB9DQogICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZt
X3ZlY3Rvci5hdChtX2luZGV4KTsgfQ0KDQogICAgDQogICAgSXRlcmF0b3ImIG9wZXJhdG9yKyso
KQ0KICAgIHsNCiAgICAgICAgbV9pbmRleCsrOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAg
fQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXggJiYgJm1fdmVjdG9y
ID09ICZvdGhlci5tX3ZlY3RvcjsNCiAgICB9DQoNCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SXRlcmF0b3ImIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1faW5kZXggIT0g
b3RoZXIubV9pbmRleCB8fCAmbV92ZWN0b3IgIT0gJm90aGVyLm1fdmVjdG9yOw0KICAgIH0NCg0K
ICAgIENvbmN1cnJlbnRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IENvbmN1cnJlbnRW
ZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4mIG90aGVyKQ0KICAgIHsNCiAgICAgICAgbV92
ZWN0b3IgPSBvdGhlci5tX3ZlY3RvcjsNCiAgICAgICAgbV9pbmRleCA9IG90aGVyLm1faW5kZXg7
DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgQ29uY3VycmVu
dFZlY3Rvckl0ZXJhdG9yKENvbmN1cnJlbnRWZWN0b3I8VCwgU2VnbWVudFNpemU+JiB2ZWN0b3Is
IHNpemVfdCBpbmRleCkNCiAgICAgICAgOiBtX3ZlY3Rvcih2ZWN0b3IpDQogICAgICAgICwgbV9p
bmRleChpbmRleCkNCiAgICB7DQogICAgfQ0KDQogICAgQ29uY3VycmVudFZlY3RvcjxULCBTZWdt
ZW50U2l6ZT4mIG1fdmVjdG9yOw0KICAgIHNpemVfdCBtX2luZGV4Ow0KfTsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4N
CmNsYXNzIENvbmN1cnJlbnRWZWN0b3IgZmluYWwgew0KICAgIGZyaWVuZCBjbGFzcyBDb25jdXJy
ZW50VmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+Ow0KICAgIENvbmN1cnJlbnRWZWN0b3Io
Y29uc3QgQ29uY3VycmVudFZlY3RvciYpID0gZGVsZXRlOyBDb25jdXJyZW50VmVjdG9yJiBvcGVy
YXRvcj0oY29uc3QgQ29uY3VycmVudFZlY3RvciYpID0gZGVsZXRlOzsNCiAgICBwdWJsaWM6IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9p
ZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRp
b24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxv
Y2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFm
dGVyVGhpc01hY3JvID0gaW50Ow0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBDb25jdXJyZW50VmVj
dG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+IEl0ZXJhdG9yOw0KDQogICAgQ29uY3VycmVudFZl
Y3RvcigpID0gZGVmYXVsdDsNCg0KICAgIH5Db25jdXJyZW50VmVjdG9yKCkNCiAgICB7DQogICAg
fQ0KDQogICAgDQogICAgDQogICAgDQogICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0NCg0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0N
Cg0KICAgIFQmIGF0KHNpemVfdCBpbmRleCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgcmV0dXJuIHNlZ21lbnRGb3IoaW5kZXgpLT5lbnRyaWVzW3N1YnNjcmlwdEZvcihpbmRl
eCldOw0KICAgIH0NCg0KICAgIGNvbnN0IFQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PENvbmN1cnJlbnRWZWN0b3I8VCwgU2VnbWVudFNp
emU+Kj4odGhpcyktPmF0KGluZGV4KTsNCiAgICB9DQoNCiAgICBUJiBvcGVyYXRvcltdKHNpemVf
dCBpbmRleCkNCiAgICB7DQogICAgICAgIHJldHVybiBhdChpbmRleCk7DQogICAgfQ0KDQogICAg
Y29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0DQogICAgew0KICAgICAgICBy
ZXR1cm4gYXQoaW5kZXgpOw0KICAgIH0NCg0KICAgIFQmIGZpcnN0KCkNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGF0KDApOw0KICAgIH0NCiAgICBjb25zdCBUJiBm
aXJzdCgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBh
dCgwKTsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgVCYgbGFzdCgpDQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBhdChzaXplKCkgLSAxKTsNCiAgICB9DQog
ICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIHJldHVybiBhdChzaXplKCkgLSAxKTsNCiAgICB9DQoNCiAgICBUIHRha2VMYXN0KCkNCiAg
ICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgVCByZXN1bHQgPSBzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KGxhc3QoKSk7DQogICAgICAgIC0tbV9zaXplOw0KICAgICAg
ICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+
DQogICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpDQogICAgew0KICAgICAgICArK21fc2l6
ZTsNCiAgICAgICAgaWYgKCFzZWdtZW50RXhpc3RzRm9yKG1fc2l6ZSAtIDEpKQ0KICAgICAgICAg
ICAgYWxsb2NhdGVTZWdtZW50KCk7DQogICAgICAgIG5ldyAoTm90TnVsbCwgJmxhc3QoKSkgVChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3M+DQogICAgVCYgYWxsb2MoQXJncyYmLi4uIGFyZ3MpDQogICAgew0KICAgICAg
ICBhcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsNCiAgICAgICAgcmV0dXJuIGxh
c3QoKTsNCiAgICB9DQoNCiAgICB2b2lkIHJlbW92ZUxhc3QoKQ0KICAgIHsNCiAgICAgICAgbGFz
dCgpLn5UKCk7DQogICAgICAgIC0tbV9zaXplOw0KICAgIH0NCg0KICAgIHZvaWQgZ3JvdyhzaXpl
X3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIGlmIChzaXplID09IG1fc2l6ZSkNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBlbnN1cmVTZWdtZW50c0Zvcihz
aXplKTsNCiAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBtX3NpemU7DQogICAgICAgIG1fc2l6ZSA9
IHNpemU7DQogICAgICAgIGZvciAoc2l6ZV90IGkgPSBvbGRTaXplOyBpIDwgbV9zaXplOyArK2kp
DQogICAgICAgICAgICBuZXcgKE5vdE51bGwsICZhdChpKSkgVCgpOw0KICAgIH0NCg0KICAgIEl0
ZXJhdG9yIGJlZ2luKCkNCiAgICB7DQogICAgICAgIHJldHVybiBJdGVyYXRvcigqdGhpcywgMCk7
DQogICAgfQ0KDQogICAgSXRlcmF0b3IgZW5kKCkNCiAgICB7DQogICAgICAgIHJldHVybiBJdGVy
YXRvcigqdGhpcywgbV9zaXplKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgc3RydWN0IFNlZ21l
bnQgew0KICAgICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsg
OjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxU
YWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5n
IHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1p
Y29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICAgICAgICAgIA0KICAgICAgICBUIGVudHJp
ZXNbU2VnbWVudFNpemVdOw0KICAgIH07DQoNCiAgICBib29sIHNlZ21lbnRFeGlzdHNGb3Ioc2l6
ZV90IGluZGV4KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGluZGV4IC8gU2VnbWVudFNpemUgPCBt
X251bVNlZ21lbnRzOw0KICAgIH0NCg0KICAgIFNlZ21lbnQqIHNlZ21lbnRGb3Ioc2l6ZV90IGlu
ZGV4KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fc2VnbWVudHNbaW5kZXggLyBTZWdtZW50U2l6
ZV0uZ2V0KCk7DQogICAgfQ0KDQogICAgc2l6ZV90IHN1YnNjcmlwdEZvcihzaXplX3QgaW5kZXgp
DQogICAgew0KICAgICAgICByZXR1cm4gaW5kZXggJSBTZWdtZW50U2l6ZTsNCiAgICB9DQoNCiAg
ICB2b2lkIGVuc3VyZVNlZ21lbnRzRm9yKHNpemVfdCBzaXplKQ0KICAgIHsNCiAgICAgICAgc2l6
ZV90IHNlZ21lbnRDb3VudCA9IChtX3NpemUgKyBTZWdtZW50U2l6ZSAtIDEpIC8gU2VnbWVudFNp
emU7DQogICAgICAgIHNpemVfdCBuZWVkZWRTZWdtZW50Q291bnQgPSAoc2l6ZSArIFNlZ21lbnRT
aXplIC0gMSkgLyBTZWdtZW50U2l6ZTsNCg0KICAgICAgICBmb3IgKHNpemVfdCBpID0gc2VnbWVu
dENvdW50ID8gc2VnbWVudENvdW50IC0gMSA6IDA7IGkgPCBuZWVkZWRTZWdtZW50Q291bnQ7ICsr
aSkNCiAgICAgICAgICAgIGVuc3VyZVNlZ21lbnQoaSk7DQogICAgfQ0KDQogICAgdm9pZCBlbnN1
cmVTZWdtZW50KHNpemVfdCBzZWdtZW50SW5kZXgpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgIGlmIChzZWdtZW50SW5kZXggPT0gbV9udW1TZWdtZW50cykNCiAgICAgICAgICAg
IGFsbG9jYXRlU2VnbWVudCgpOw0KICAgIH0NCg0KICAgIHZvaWQgYWxsb2NhdGVTZWdtZW50KCkN
CiAgICB7DQogICAgICAgIG1fc2VnbWVudHMuZ3JvdyhtX251bVNlZ21lbnRzICsgMSk7DQogICAg
ICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IG1ha2VVbmlxdWU8U2VnbWVudD4oKTsN
CiAgICB9DQoNCiAgICBzaXplX3QgbV9zaXplIHsgMCB9Ow0KICAgIENvbmN1cnJlbnRCdWZmZXI8
c3RkOjp1bmlxdWVfcHRyPFNlZ21lbnQ+PiBtX3NlZ21lbnRzOw0KICAgIHNpemVfdCBtX251bVNl
Z21lbnRzIHsgMCB9Ow0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpDb25jdXJyZW50VmVjdG9yOw0K
I2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcaGVhcFxcSXNvQ2VsbFNldC5oIg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3Mg
SGVhcENlbGw7DQpjbGFzcyBJc29TdWJzcGFjZTsNCg0KDQoNCg0KY2xhc3MgSXNvQ2VsbFNldCA6
IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4gew0KcHVibGljOg0KICAg
IElzb0NlbGxTZXQoSXNvU3Vic3BhY2UmIHN1YnNwYWNlKTsNCiAgICB+SXNvQ2VsbFNldCgpOw0K
ICAgIA0KICAgIGJvb2wgYWRkKEhlYXBDZWxsKiBjZWxsKTsgDQogICAgDQogICAgYm9vbCByZW1v
dmUoSGVhcENlbGwqIGNlbGwpOyANCiAgICANCiAgICBib29sIGNvbnRhaW5zKEhlYXBDZWxsKiBj
ZWxsKSBjb25zdDsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgUmVmPFNoYXJlZFRh
c2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IHBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSgpOw0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQog
ICAgdm9pZCBmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJik7DQoNCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPg0KICAgIFJlZjxTaGFyZWRUYXNrPHZvaWQoU2xvdFZpc2l0b3ImKT4+IGZv
ckVhY2hNYXJrZWRDZWxsSW5QYXJhbGxlbChjb25zdCBGdW5jJik7DQogICAgDQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4NCiAgICB2b2lkIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jJik7
DQogICAgDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBJc29TdWJzcGFjZTsNCiAgICANCiAg
ICBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+KiBhZGRTbG93KHVuc2lnbmVkIGJs
b2NrSW5kZXgpOw0KICAgIA0KICAgIHZvaWQgZGlkUmVzaXplQml0cyh1bnNpZ25lZCBuZXdTaXpl
KTsNCiAgICB2b2lkIGRpZFJlbW92ZUJsb2NrKHVuc2lnbmVkIGJsb2NrSW5kZXgpOw0KICAgIHZv
aWQgc3dlZXBUb0ZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsNCiAgICB2b2lkIGNsZWFy
TG93ZXJUaWVyQ2VsbCh1bnNpZ25lZCk7DQogICAgDQogICAgQml0bWFwPE1hcmtlZEJsb2NrOjpt
YXhOdW1iZXJPZkxvd2VyVGllckNlbGxzPiBtX2xvd2VyVGllckJpdHM7DQoNCiAgICBJc29TdWJz
cGFjZSYgbV9zdWJzcGFjZTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBGYXN0
Qml0VmVjdG9yIG1fYmxvY2tzV2l0aEJpdHM7DQogICAgQ29uY3VycmVudFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4+IG1fYml0czsNCn07
DQoNCn0gDQoNCiNsaW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXElzb1N1YnNwYWNlLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxTdWJzcGFjZUFjY2Vzcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCmVudW0gY2xhc3MgU3Vic3BhY2VBY2Nlc3Mgew0KICAgIE9uTWFpblRocmVhZCwN
CiAgICBDb25jdXJyZW50bHksDQp9Ow0KDQp9DQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxJc29TdWJzcGFjZS5oIg0KDQoN
Cm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOw0KY2xh
c3MgSXNvQ2VsbFNldDsNCg0KY2xhc3MgSXNvU3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2Ugew0K
cHVibGljOg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZShDU3RyaW5nIG5h
bWUsIEhlYXAmLCBIZWFwQ2VsbFR5cGUqLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJPZkxv
d2VyVGllckNlbGxzKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgfklzb1N1YnNwYWNlKCkg
b3ZlcnJpZGU7DQoNCiAgICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2RpcmVjdG9yeS5j
ZWxsU2l6ZSgpOyB9DQoNCiAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yKHNpemVfdCwgQWxsb2Nh
dG9yRm9yTW9kZSkgb3ZlcnJpZGU7DQogICAgQWxsb2NhdG9yIGFsbG9jYXRvckZvck5vblZpcnR1
YWwoc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKTsNCg0KICAgIHZvaWQqIGFsbG9jYXRlKFZNJiwg
c2l6ZV90LCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSkgb3ZlcnJp
ZGU7DQogICAgdm9pZCogYWxsb2NhdGVOb25WaXJ0dWFsKFZNJiwgc2l6ZV90LCBHQ0RlZmVycmFs
Q29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7DQoNCiAgICB2b2lkIHN3ZWVwTG93ZXJU
aWVyQ2VsbChQcmVjaXNlQWxsb2NhdGlvbiopOw0KICAgIHZvaWQgY2xlYXJJc29DZWxsU2V0Qml0
KFByZWNpc2VBbGxvY2F0aW9uKik7DQoNCiAgICB2b2lkKiB0cnlBbGxvY2F0ZUZyb21Mb3dlclRp
ZXIoKTsNCiAgICB2b2lkIGRlc3Ryb3lMb3dlclRpZXJGcmVlTGlzdCgpOw0KDQogICAgdm9pZCBz
d2VlcCgpOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4gdm9pZCBmb3JFYWNoTG93ZXJU
aWVyRnJlZUxpc3RlZFByZWNpc2VBbGxvY2F0aW9uKGNvbnN0IEZ1bmMmKTsNCg0KcHJpdmF0ZToN
CiAgICBmcmllbmQgY2xhc3MgSXNvQ2VsbFNldDsNCiAgICANCiAgICB2b2lkIGRpZFJlc2l6ZUJp
dHModW5zaWduZWQgbmV3U2l6ZSkgb3ZlcnJpZGU7DQogICAgdm9pZCBkaWRSZW1vdmVCbG9jayh1
bnNpZ25lZCBibG9ja0luZGV4KSBvdmVycmlkZTsNCiAgICB2b2lkIGRpZEJlZ2luU3dlZXBpbmdU
b0ZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKSBvdmVycmlkZTsNCiAgICANCiAgICBCbG9j
a0RpcmVjdG9yeSBtX2RpcmVjdG9yeTsNCiAgICBMb2NhbEFsbG9jYXRvciBtX2xvY2FsQWxsb2Nh
dG9yOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBtX2lz
b0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7DQogICAgU2VudGluZWxMaW5rZWRMaXN0PFByZWNpc2VB
bGxvY2F0aW9uLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8UHJlY2lzZUFsbG9jYXRpb24+PiBtX2xv
d2VyVGllckZyZWVMaXN0Ow0KICAgIFNlbnRpbmVsTGlua2VkTGlzdDxJc29DZWxsU2V0LCBQYWNr
ZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4+IG1fY2VsbFNldHM7DQp9Ow0KDQpfX2ZvcmNl
aW5saW5lIEFsbG9jYXRvciBJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXpl
X3Qgc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZSkNCnsNCiAgICBkbyB7IGlmICgoIShXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgp
KSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9y
Q3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg3NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSXNvU3Vic3BhY2UuaCIsICBfX0ZVTkNUSU9O
X18gICwgNTEgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICByZXR1cm4gQWxs
b2NhdG9yKCZtX2xvY2FsQWxsb2NhdG9yKTsNCn0NCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+
DQpzdHJ1Y3QgaXNBbGxvY2F0ZWRGcm9tSXNvU3Vic3BhY2Ugew0KICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB2YWx1ZSA9IHN0ZDo6aXNfc2FtZTxzdGQ6OnJlc3VsdF9vZl90PGRlY2x0eXBlKFQ6
OnRlbXBsYXRlIHN1YnNwYWNlRm9yPFQsIFN1YnNwYWNlQWNjZXNzOjpPbk1haW5UaHJlYWQ+KSYo
Vk0mKT4sIElzb1N1YnNwYWNlKj46OnZhbHVlOw0KfTsNCg0KfSANCg0KI2xpbmUgNDggIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0u
aCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcaml0XFxKSVRUaHVua3MuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcVGh1bmtH
ZW5lcmF0b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQpjbGFzcyBWTTsN
CnRlbXBsYXRlPFB0clRhZz4gY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOw0KDQp1c2luZyBU
aHVua0dlbmVyYXRvciA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gKCop
KFZNJik7DQoNCn0gDQoNCiNsaW5lIDQxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcVGh1bmtHZW5lcmF0b3IuaCINCiNsaW5lIDM0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUVGh1
bmtzLmgiDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KbmFtZXNwYWNlIERPTUpJVCB7
DQpjbGFzcyBTaWduYXR1cmU7DQp9DQoNCmNsYXNzIFZNOw0KY2xhc3MgTmF0aXZlRXhlY3V0YWJs
ZTsNCg0KY2xhc3MgSklUVGh1bmtzIGZpbmFsIDogcHJpdmF0ZSBXZWFrSGFuZGxlT3duZXIgew0K
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3
ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9y
Y2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgSklUVGh1bmtz
KCk7DQogICAgfkpJVFRodW5rcygpIGZpbmFsOw0KDQogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpJVFRodW5rUHRyVGFnPiBjdGlOYXRpdmVDYWxsKFZNJik7DQogICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpJVFRodW5rUHRyVGFnPiBjdGlOYXRpdmVDb25zdHJ1Y3QoVk0mKTsNCiAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+IGN0aU5hdGl2ZVRhaWxDYWxsKFZNJik7
DQogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBjdGlOYXRpdmVUYWls
Q2FsbFdpdGhvdXRTYXZlZFRhZ3MoVk0mKTsNCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklU
VGh1bmtQdHJUYWc+IGN0aUludGVybmFsRnVuY3Rpb25DYWxsKFZNJik7DQogICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBjdGlJbnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0
KFZNJik7DQoNCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGN0aVN0
dWIoVk0mLCBUaHVua0dlbmVyYXRvcik7DQogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBleGlzdGluZ0NUSVN0dWIoVGh1bmtHZW5lcmF0b3IpOw0KDQogICAgTmF0aXZl
RXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBU
YWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKTsNCiAg
ICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVua0dlbmVyYXRvciwg
SW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7
DQogICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYsIFRhZ2dlZE5hdGl2
ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBTdHJpbmcmIG5hbWUp
Ow0KDQpwcml2YXRlOg0KICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBj
b250ZXh0KSBmaW5hbDsNCiAgICANCiAgICB0eXBlZGVmIEhhc2hNYXA8VGh1bmtHZW5lcmF0b3Is
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4+IENUSVN0dWJNYXA7DQogICAg
Q1RJU3R1Yk1hcCBtX2N0aVN0dWJNYXA7DQoNCiAgICB1c2luZyBIb3N0RnVuY3Rpb25LZXkgPSBz
dGQ6OnR1cGxlPFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgU3Ry
aW5nPjsNCg0KICAgIHN0cnVjdCBXZWFrTmF0aXZlRXhlY3V0YWJsZUhhc2ggew0KICAgICAgICBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGhhc2goY29uc3QgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYp
Ow0KICAgICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGhhc2goTmF0aXZlRXhlY3V0YWJsZSop
Ow0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBIb3N0RnVuY3Rpb25LZXkmIGtl
eSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGhhc2goc3RkOjpnZXQ8MD4oa2V5KSwg
c3RkOjpnZXQ8MT4oa2V5KSwgc3RkOjpnZXQ8Mj4oa2V5KSk7DQogICAgICAgIH0NCg0KICAgICAg
ICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgV2VhazxOYXRpdmVFeGVjdXRhYmxlPiYs
IGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mKTsNCiAgICAgICAgc3RhdGljIGlubGluZSBi
b29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4mLCBjb25zdCBIb3N0RnVuY3Rp
b25LZXkmKTsNCiAgICAgICAgc3RhdGljIGlubGluZSBib29sIGVxdWFsKGNvbnN0IFdlYWs8TmF0
aXZlRXhlY3V0YWJsZT4mLCBOYXRpdmVFeGVjdXRhYmxlKik7DQogICAgICAgIHN0YXRpYyBpbmxp
bmUgYm9vbCBlcXVhbChOYXRpdmVFeGVjdXRhYmxlJiwgTmF0aXZlRXhlY3V0YWJsZSYpOw0KICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsNCg0KICAgIHByaXZhdGU6DQogICAgICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
aGFzaFBvaW50ZXIoVGFnZ2VkTmF0aXZlRnVuY3Rpb24gcCkNCiAgICAgICAgew0KICAgICAgICAg
ICAgcmV0dXJuIERlZmF1bHRIYXNoPFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uPjo6aGFzaChwKTsNCiAg
ICAgICAgfQ0KDQogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFRhZ2dlZE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgY29uc3QgU3Ry
aW5nJiBuYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAg
ICAgICAgdW5zaWduZWQgaGFzaCA9IFdURjo6cGFpckludEhhc2goaGFzaFBvaW50ZXIoZnVuY3Rp
b24pLCBoYXNoUG9pbnRlcihjb25zdHJ1Y3RvcikpOw0KICAgICAgICAgICAgaWYgKCFuYW1lLmlz
TnVsbCgpKQ0KICAgICAgICAgICAgICAgIGhhc2ggPSBXVEY6OnBhaXJJbnRIYXNoKGhhc2gsIERl
ZmF1bHRIYXNoPFN0cmluZz46Omhhc2gobmFtZSkpOw0KICAgICAgICAgICAgcmV0dXJuIGhhc2g7
DQogICAgICAgIH0NCiAgICB9Ow0KICAgIHN0cnVjdCBIb3N0S2V5U2VhcmNoZXI7DQogICAgc3Ry
dWN0IE5hdGl2ZUV4ZWN1dGFibGVUcmFuc2xhdG9yOw0KDQogICAgdXNpbmcgV2Vha05hdGl2ZUV4
ZWN1dGFibGVTZXQgPSBIYXNoU2V0PFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4sIFdlYWtOYXRpdmVF
eGVjdXRhYmxlSGFzaD47DQogICAgV2Vha05hdGl2ZUV4ZWN1dGFibGVTZXQgbV9uYXRpdmVFeGVj
dXRhYmxlU2V0Ow0KICAgIExvY2sgbV9sb2NrOw0KfTsNCg0KfSANCg0KI2xpbmUgMTE4ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUVGh1
bmtzLmgiDQojbGluZSA0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTTG9jay5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpjbGFzcyBDYWxsRnJhbWU7DQpjbGFzcyBWTTsNCmNsYXNzIEpTR2xvYmFsT2Jq
ZWN0Ow0KY2xhc3MgSlNMb2NrOw0KDQoNCg0KY2xhc3MgR2xvYmFsSlNMb2NrIHsNCiAgICBHbG9i
YWxKU0xvY2soY29uc3QgR2xvYmFsSlNMb2NrJikgPSBkZWxldGU7IEdsb2JhbEpTTG9jayYgb3Bl
cmF0b3I9KGNvbnN0IEdsb2JhbEpTTG9jayYpID0gZGVsZXRlOzsNCnB1YmxpYzoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgR2xvYmFsSlNMb2NrKCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIH5HbG9iYWxKU0xvY2soKTsNCnByaXZhdGU6DQogICAgc3RhdGljIExvY2sgc19zaGFyZWRJ
bnN0YW5jZU11dGV4Ow0KfTsNCg0KY2xhc3MgSlNMb2NrSG9sZGVyIHsNCnB1YmxpYzoNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNMb2NrSG9sZGVyKFZNKik7DQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIEpTTG9ja0hvbGRlcihWTSYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBK
U0xvY2tIb2xkZXIoSlNHbG9iYWxPYmplY3QqKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSB+SlNMb2NrSG9sZGVyKCk7DQoNCnByaXZhdGU6DQogICAgUmVmUHRyPFZNPiBtX3ZtOw0KfTsN
Cg0KY2xhc3MgSlNMb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpTTG9jaz4gew0K
ICAgIEpTTG9jayhjb25zdCBKU0xvY2smKSA9IGRlbGV0ZTsgSlNMb2NrJiBvcGVyYXRvcj0oY29u
c3QgSlNMb2NrJikgPSBkZWxldGU7Ow0KcHVibGljOg0KICAgIEpTTG9jayhWTSopOw0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSB+SlNMb2NrKCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgdm9pZCBsb2NrKCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgdW5sb2NrKCk7
DQoNCiAgICBzdGF0aWMgdm9pZCBsb2NrKEpTR2xvYmFsT2JqZWN0Kik7DQogICAgc3RhdGljIHZv
aWQgdW5sb2NrKEpTR2xvYmFsT2JqZWN0Kik7DQogICAgc3RhdGljIHZvaWQgbG9jayhWTSYpOw0K
ICAgIHN0YXRpYyB2b2lkIHVubG9jayhWTSYpOw0KDQogICAgVk0qIHZtKCkgeyByZXR1cm4gbV92
bTsgfQ0KDQogICAgT3B0aW9uYWw8UmVmUHRyPFRocmVhZD4+IG93bmVyVGhyZWFkKCkgY29uc3QN
CiAgICB7DQogICAgICAgIGlmIChtX2hhc093bmVyVGhyZWFkKQ0KICAgICAgICAgICAgcmV0dXJu
IG1fb3duZXJUaHJlYWQ7DQogICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7DQogICAgfQ0KICAg
IGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB7IHJldHVybiBtX2hhc093bmVyVGhy
ZWFkICYmIG1fb3duZXJUaHJlYWQuZ2V0KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpOyB9DQoNCiAg
ICB2b2lkIHdpbGxEZXN0cm95Vk0oVk0qKTsNCg0KICAgIGNsYXNzIERyb3BBbGxMb2NrcyB7DQog
ICAgICAgIERyb3BBbGxMb2Nrcyhjb25zdCBEcm9wQWxsTG9ja3MmKSA9IGRlbGV0ZTsgRHJvcEFs
bExvY2tzJiBvcGVyYXRvcj0oY29uc3QgRHJvcEFsbExvY2tzJikgPSBkZWxldGU7Ow0KICAgIHB1
YmxpYzoNCiAgICAgICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIERyb3BBbGxMb2NrcyhKU0dsb2Jh
bE9iamVjdCopOw0KICAgICAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgRHJvcEFsbExvY2tzKFZN
Kik7DQogICAgICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBEcm9wQWxsTG9ja3MoVk0mKTsNCiAg
ICAgICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIH5Ecm9wQWxsTG9ja3MoKTsNCg0KICAgICAgICB2
b2lkIHNldERyb3BEZXB0aCh1bnNpZ25lZCBkZXB0aCkgeyBtX2Ryb3BEZXB0aCA9IGRlcHRoOyB9
DQogICAgICAgIHVuc2lnbmVkIGRyb3BEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcERlcHRo
OyB9DQoNCiAgICBwcml2YXRlOg0KICAgICAgICBpbnRwdHJfdCBtX2Ryb3BwZWRMb2NrQ291bnQ7
DQogICAgICAgIFJlZlB0cjxWTT4gbV92bTsNCiAgICAgICAgdW5zaWduZWQgbV9kcm9wRGVwdGg7
DQogICAgfTsNCg0KICAgIHZvaWQgbWFrZVdlYlRocmVhZEF3YXJlKCkNCiAgICB7DQogICAgICAg
IG1faXNXZWJUaHJlYWRBd2FyZSA9IHRydWU7DQogICAgfQ0KDQogICAgYm9vbCBpc1dlYlRocmVh
ZEF3YXJlKCkgY29uc3QgeyByZXR1cm4gbV9pc1dlYlRocmVhZEF3YXJlOyB9DQoNCnByaXZhdGU6
DQogICAgdm9pZCBsb2NrKGludHB0cl90IGxvY2tDb3VudCk7DQogICAgdm9pZCB1bmxvY2soaW50
cHRyX3QgdW5sb2NrQ291bnQpOw0KDQogICAgdm9pZCBkaWRBY3F1aXJlTG9jaygpOw0KICAgIHZv
aWQgd2lsbFJlbGVhc2VMb2NrKCk7DQoNCiAgICB1bnNpZ25lZCBkcm9wQWxsTG9ja3MoRHJvcEFs
bExvY2tzKik7DQogICAgdm9pZCBncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiwgdW5zaWduZWQg
bG9ja0NvdW50KTsNCg0KICAgIExvY2sgbV9sb2NrOw0KICAgIGJvb2wgbV9pc1dlYlRocmVhZEF3
YXJlIHsgZmFsc2UgfTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBib29sIG1faGFzT3du
ZXJUaHJlYWQgeyBmYWxzZSB9Ow0KICAgIFJlZlB0cjxUaHJlYWQ+IG1fb3duZXJUaHJlYWQ7DQog
ICAgaW50cHRyX3QgbV9sb2NrQ291bnQ7DQogICAgdW5zaWduZWQgbV9sb2NrRHJvcERlcHRoOw0K
ICAgIGJvb2wgbV9zaG91bGRSZWxlYXNlSGVhcEFjY2VzczsNCiAgICBWTSogbV92bTsNCiAgICBB
dG9tU3RyaW5nVGFibGUqIG1fZW50cnlBdG9tU3RyaW5nVGFibGU7IA0KfTsNCg0KfSANCiNsaW5l
IDUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXFZNLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWljcm90YXNrLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENhbGxGcmFtZTsNCg0KY2xhc3MgTWljcm90YXNrIDogcHVi
bGljIFJlZkNvdW50ZWQ8TWljcm90YXNrPiB7DQpwdWJsaWM6DQogICAgdmlydHVhbCB+TWljcm90
YXNrKCkNCiAgICB7DQogICAgfQ0KDQogICAgdmlydHVhbCB2b2lkIHJ1bihKU0dsb2JhbE9iamVj
dCopID0gMDsNCn07DQoNCn0gDQojbGluZSA1MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxOdW1lcmlj
U3RyaW5ncy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgTnVt
ZXJpY1N0cmluZ3Mgew0KcHVibGljOg0KICAgIF9fZm9yY2VpbmxpbmUgY29uc3QgU3RyaW5nJiBh
ZGQoZG91YmxlIGQpDQogICAgew0KICAgICAgICBDYWNoZUVudHJ5PGRvdWJsZT4mIGVudHJ5ID0g
bG9va3VwKGQpOw0KICAgICAgICBpZiAoZCA9PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlz
TnVsbCgpKQ0KICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlOw0KICAgICAgICBlbnRyeS5r
ZXkgPSBkOw0KICAgICAgICBlbnRyeS52YWx1ZSA9IFN0cmluZzo6bnVtYmVyKGQpOw0KICAgICAg
ICByZXR1cm4gZW50cnkudmFsdWU7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBjb25zdCBT
dHJpbmcmIGFkZChpbnQgaSkNCiAgICB7DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaSkgPCBjYWNoZVNpemUpDQogICAgICAgICAgICByZXR1cm4gbG9va3VwU21hbGxTdHJpbmco
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpKTsNCiAgICAgICAgQ2FjaGVFbnRyeTxpbnQ+JiBlbnRy
eSA9IGxvb2t1cChpKTsNCiAgICAgICAgaWYgKGkgPT0gZW50cnkua2V5ICYmICFlbnRyeS52YWx1
ZS5pc051bGwoKSkNCiAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsNCiAgICAgICAgZW50
cnkua2V5ID0gaTsNCiAgICAgICAgZW50cnkudmFsdWUgPSBTdHJpbmc6Om51bWJlcihpKTsNCiAg
ICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgY29u
c3QgU3RyaW5nJiBhZGQodW5zaWduZWQgaSkNCiAgICB7DQogICAgICAgIGlmIChpIDwgY2FjaGVT
aXplKQ0KICAgICAgICAgICAgcmV0dXJuIGxvb2t1cFNtYWxsU3RyaW5nKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpKSk7DQogICAgICAgIENhY2hlRW50cnk8dW5zaWduZWQ+JiBlbnRyeSA9IGxvb2t1
cChpKTsNCiAgICAgICAgaWYgKGkgPT0gZW50cnkua2V5ICYmICFlbnRyeS52YWx1ZS5pc051bGwo
KSkNCiAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsNCiAgICAgICAgZW50cnkua2V5ID0g
aTsNCiAgICAgICAgZW50cnkudmFsdWUgPSBTdHJpbmc6Om51bWJlcihpKTsNCiAgICAgICAgcmV0
dXJuIGVudHJ5LnZhbHVlOw0KICAgIH0NCnByaXZhdGU6DQogICAgc3RhdGljIGNvbnN0IHNpemVf
dCBjYWNoZVNpemUgPSA2NDsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+DQogICAgc3RydWN0
IENhY2hlRW50cnkgew0KICAgICAgICBUIGtleTsNCiAgICAgICAgU3RyaW5nIHZhbHVlOw0KICAg
IH07DQoNCiAgICBDYWNoZUVudHJ5PGRvdWJsZT4mIGxvb2t1cChkb3VibGUgZCkgeyByZXR1cm4g
ZG91YmxlQ2FjaGVbV1RGOjpGbG9hdEhhc2g8ZG91YmxlPjo6aGFzaChkKSAmIChjYWNoZVNpemUg
LSAxKV07IH0NCiAgICBDYWNoZUVudHJ5PGludD4mIGxvb2t1cChpbnQgaSkgeyByZXR1cm4gaW50
Q2FjaGVbV1RGOjpJbnRIYXNoPGludD46Omhhc2goaSkgJiAoY2FjaGVTaXplIC0gMSldOyB9DQog
ICAgQ2FjaGVFbnRyeTx1bnNpZ25lZD4mIGxvb2t1cCh1bnNpZ25lZCBpKSB7IHJldHVybiB1bnNp
Z25lZENhY2hlW1dURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goaSkgJiAoY2FjaGVTaXplIC0g
MSldOyB9DQogICAgX19mb3JjZWlubGluZSBjb25zdCBTdHJpbmcmIGxvb2t1cFNtYWxsU3RyaW5n
KHVuc2lnbmVkIGkpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmIChzbWFs
bEludENhY2hlW2ldLmlzTnVsbCgpKQ0KICAgICAgICAgICAgc21hbGxJbnRDYWNoZVtpXSA9IFN0
cmluZzo6bnVtYmVyKGkpOw0KICAgICAgICByZXR1cm4gc21hbGxJbnRDYWNoZVtpXTsNCiAgICB9
DQoNCiAgICBzdGQ6OmFycmF5PENhY2hlRW50cnk8ZG91YmxlPiwgY2FjaGVTaXplPiBkb3VibGVD
YWNoZTsNCiAgICBzdGQ6OmFycmF5PENhY2hlRW50cnk8aW50PiwgY2FjaGVTaXplPiBpbnRDYWNo
ZTsNCiAgICBzdGQ6OmFycmF5PENhY2hlRW50cnk8dW5zaWduZWQ+LCBjYWNoZVNpemU+IHVuc2ln
bmVkQ2FjaGU7DQogICAgc3RkOjphcnJheTxTdHJpbmcsIGNhY2hlU2l6ZT4gc21hbGxJbnRDYWNo
ZTsNCn07DQoNCn0gDQojbGluZSA1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTbWFsbFN0cmluZ3Mu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxUeXBlb2ZUeXBlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xhc3MgVHlwZW9mVHlwZSB7DQogICAgVW5kZWZpbmVkLA0K
ICAgIEJpZ0ludCwNCiAgICBCb29sZWFuLA0KICAgIE51bWJlciwNCiAgICBTdHJpbmcsDQogICAg
U3ltYm9sLA0KICAgIE9iamVjdCwNCiAgICBGdW5jdGlvbiAgICANCn07DQoNCn0gDQoNCm5hbWVz
cGFjZSBXVEYgew0KDQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpU
eXBlb2ZUeXBlKTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFNtYWxsU3RyaW5ncy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCmNsYXNzIFN0cmluZ0ltcGw7
DQp9DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBWTTsNCmNsYXNzIEpTU3RyaW5nOw0KY2xh
c3MgU2xvdFZpc2l0b3I7DQoNCnN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2luZ2xlQ2hh
cmFjdGVyU3RyaW5nID0gMHhGRjsNCg0KY2xhc3MgU21hbGxTdHJpbmdzIHsNCiAgICBTbWFsbFN0
cmluZ3MoY29uc3QgU21hbGxTdHJpbmdzJikgPSBkZWxldGU7IFNtYWxsU3RyaW5ncyYgb3BlcmF0
b3I9KGNvbnN0IFNtYWxsU3RyaW5ncyYpID0gZGVsZXRlOzsNCnB1YmxpYzoNCiAgICBTbWFsbFN0
cmluZ3MoKTsNCiAgICB+U21hbGxTdHJpbmdzKCk7DQoNCiAgICBKU1N0cmluZyogZW1wdHlTdHJp
bmcoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fZW1wdHlTdHJpbmc7DQogICAgfQ0KDQogICAg
SlNTdHJpbmcqIHNpbmdsZUNoYXJhY3RlclN0cmluZyh1bnNpZ25lZCBjaGFyIGNoYXJhY3RlcikN
CiAgICB7DQogICAgICAgIHJldHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVy
XTsNCiAgICB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgUmVmPFN0cmluZ0ltcGw+IHNp
bmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7DQoNCiAgICB2
b2lkIHNldElzSW5pdGlhbGl6ZWQoYm9vbCBpc0luaXRpYWxpemVkKSB7IG1faXNJbml0aWFsaXpl
ZCA9IGlzSW5pdGlhbGl6ZWQ7IH0NCg0KICAgIEpTU3RyaW5nKiogc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5ncygpIHsgcmV0dXJuICZtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbMF07IH0NCg0KICAgIHZv
aWQgaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoVk0mKTsNCiAgICB2b2lkIHZpc2l0U3Ryb25nUmVm
ZXJlbmNlcyhTbG90VmlzaXRvciYpOw0KDQoNCg0KDQoNCg0KICAgIEpTU3RyaW5nKiBkZWZhdWx0
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0OyB9IEpTU3RyaW5nKiBib29sZWFuU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ib29sZWFuOyB9IEpTU3RyaW5nKiBmYWxzZVN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fZmFsc2U7IH0gSlNTdHJpbmcqIGZ1bmN0aW9uU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfSBKU1N0cmluZyogbnVtYmVyU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9udW1iZXI7IH0gSlNTdHJpbmcqIG51bGxTdHJpbmcoKSBjb25zdCB7IHJldHVy
biBtX251bGw7IH0gSlNTdHJpbmcqIG9iamVjdFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fb2Jq
ZWN0OyB9IEpTU3RyaW5nKiB1bmRlZmluZWRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3VuZGVm
aW5lZDsgfSBKU1N0cmluZyogc3RyaW5nU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7
IH0gSlNTdHJpbmcqIHN5bWJvbFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sOyB9IEpT
U3RyaW5nKiBiaWdpbnRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2JpZ2ludDsgfSBKU1N0cmlu
ZyogdHJ1ZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdHJ1ZTsgfQ0KDQogICAgDQogICAgSlNT
dHJpbmcqIHR5cGVTdHJpbmcoVHlwZW9mVHlwZSB0eXBlKSBjb25zdA0KICAgIHsNCiAgICAgICAg
c3dpdGNoICh0eXBlKSB7DQogICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6VW5kZWZpbmVkOg0KICAg
ICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFN0cmluZygpOw0KICAgICAgICBjYXNlIFR5cGVvZlR5
cGU6OkJvb2xlYW46DQogICAgICAgICAgICByZXR1cm4gYm9vbGVhblN0cmluZygpOw0KICAgICAg
ICBjYXNlIFR5cGVvZlR5cGU6Ok51bWJlcjoNCiAgICAgICAgICAgIHJldHVybiBudW1iZXJTdHJp
bmcoKTsNCiAgICAgICAgY2FzZSBUeXBlb2ZUeXBlOjpTdHJpbmc6DQogICAgICAgICAgICByZXR1
cm4gc3RyaW5nU3RyaW5nKCk7DQogICAgICAgIGNhc2UgVHlwZW9mVHlwZTo6U3ltYm9sOg0KICAg
ICAgICAgICAgcmV0dXJuIHN5bWJvbFN0cmluZygpOw0KICAgICAgICBjYXNlIFR5cGVvZlR5cGU6
Ok9iamVjdDoNCiAgICAgICAgICAgIHJldHVybiBvYmplY3RTdHJpbmcoKTsNCiAgICAgICAgY2Fz
ZSBUeXBlb2ZUeXBlOjpGdW5jdGlvbjoNCiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvblN0cmlu
ZygpOw0KICAgICAgICBjYXNlIFR5cGVvZlR5cGU6OkJpZ0ludDoNCiAgICAgICAgICAgIHJldHVy
biBiaWdpbnRTdHJpbmcoKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgZG8geyBXVEY6
OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZD
cmFzaFdpdGhJbmZvKDExMiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcU21hbGxTdHJpbmdzLmgiLCAgX19GVU5DVElPTl9fICAsIDUy
ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0KDQog
ICAgSlNTdHJpbmcqIG9iamVjdFN0cmluZ1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RT
dHJpbmdTdGFydDsgfQ0KICAgIEpTU3RyaW5nKiBudWxsT2JqZWN0U3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9udWxsT2JqZWN0U3RyaW5nOyB9DQogICAgSlNTdHJpbmcqIHVuZGVmaW5lZE9iamVj
dFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZWZpbmVkT2JqZWN0U3RyaW5nOyB9DQogICAg
SlNTdHJpbmcqIGJvdW5kUHJlZml4U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZFByZWZp
eFN0cmluZzsgfQ0KDQogICAgYm9vbCBuZWVkc1RvQmVWaXNpdGVkKENvbGxlY3Rpb25TY29wZSBz
Y29wZSkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChzY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6
OkZ1bGwpDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgcmV0dXJuIG1fbmVlZHNU
b0JlVmlzaXRlZDsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudCA9IG1heFNpbmdsZUNoYXJhY3RlclN0cmlu
ZyArIDE7DQoNCiAgICB2b2lkIGluaXRpYWxpemUoVk0qLCBKU1N0cmluZyomLCBjb25zdCBjaGFy
KiB2YWx1ZSk7DQoNCiAgICBKU1N0cmluZyogbV9lbXB0eVN0cmluZyB7IG51bGxwdHIgfTsNCg0K
ICAgIEpTU3RyaW5nKiBtX2RlZmF1bHQgeyBudWxscHRyIH07IEpTU3RyaW5nKiBtX2Jvb2xlYW4g
eyBudWxscHRyIH07IEpTU3RyaW5nKiBtX2ZhbHNlIHsgbnVsbHB0ciB9OyBKU1N0cmluZyogbV9m
dW5jdGlvbiB7IG51bGxwdHIgfTsgSlNTdHJpbmcqIG1fbnVtYmVyIHsgbnVsbHB0ciB9OyBKU1N0
cmluZyogbV9udWxsIHsgbnVsbHB0ciB9OyBKU1N0cmluZyogbV9vYmplY3QgeyBudWxscHRyIH07
IEpTU3RyaW5nKiBtX3VuZGVmaW5lZCB7IG51bGxwdHIgfTsgSlNTdHJpbmcqIG1fc3RyaW5nIHsg
bnVsbHB0ciB9OyBKU1N0cmluZyogbV9zeW1ib2wgeyBudWxscHRyIH07IEpTU3RyaW5nKiBtX2Jp
Z2ludCB7IG51bGxwdHIgfTsgSlNTdHJpbmcqIG1fdHJ1ZSB7IG51bGxwdHIgfTsNCg0KICAgIEpT
U3RyaW5nKiBtX29iamVjdFN0cmluZ1N0YXJ0IHsgbnVsbHB0ciB9Ow0KICAgIEpTU3RyaW5nKiBt
X251bGxPYmplY3RTdHJpbmcgeyBudWxscHRyIH07DQogICAgSlNTdHJpbmcqIG1fdW5kZWZpbmVk
T2JqZWN0U3RyaW5nIHsgbnVsbHB0ciB9Ow0KICAgIEpTU3RyaW5nKiBtX2JvdW5kUHJlZml4U3Ry
aW5nIHsgbnVsbHB0ciB9Ow0KICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Nb
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnRdIHsgbnVsbHB0ciB9Ow0KICAgIGJvb2wgbV9uZWVk
c1RvQmVWaXNpdGVkIHsgdHJ1ZSB9Ow0KICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2Ug
fTsNCn07DQoNCn0gDQojbGluZSA1NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxTdHJvbmcuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgVk07DQoNCg0KdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayBzaG91bGRTdHJvbmdE
ZXN0cnVjdG9yR3JhYkxvY2sgPSBTaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s6Ok5vPiBj
bGFzcyBTdHJvbmcgOiBwdWJsaWMgSGFuZGxlPFQ+IHsNCiAgICB1c2luZyBIYW5kbGU8VD46OnNs
b3Q7DQogICAgdXNpbmcgSGFuZGxlPFQ+OjpzZXRTbG90Ow0KICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVLCBTaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+IGZyaWVuZCBjbGFzcyBTdHJvbmc7
DQoNCnB1YmxpYzoNCiAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxUeXBl
IEV4dGVybmFsVHlwZTsNCiAgICANCiAgICBTdHJvbmcoKQ0KICAgICAgICA6IEhhbmRsZTxUPigp
DQogICAgew0KICAgIH0NCiAgICANCiAgICBTdHJvbmcoVk0mLCBFeHRlcm5hbFR5cGUgPSBFeHRl
cm5hbFR5cGUoKSk7DQoNCiAgICBTdHJvbmcoVk0mLCBIYW5kbGU8VD4pOw0KICAgIA0KICAgIFN0
cm9uZyhjb25zdCBTdHJvbmcmIG90aGVyKQ0KICAgICAgICA6IEhhbmRsZTxUPigpDQogICAgew0K
ICAgICAgICBpZiAoIW90aGVyLnNsb3QoKSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAg
c2V0U2xvdChIYW5kbGVTZXQ6OmhlYXBGb3Iob3RoZXIuc2xvdCgpKS0+YWxsb2NhdGUoKSk7DQog
ICAgICAgIHNldChvdGhlci5nZXQoKSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+IFN0cm9uZyhjb25zdCBTdHJvbmc8VT4mIG90aGVyKQ0KICAgICAgICA6IEhhbmRsZTxUPigp
DQogICAgew0KICAgICAgICBpZiAoIW90aGVyLnNsb3QoKSkNCiAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgc2V0U2xvdChIYW5kbGVTZXQ6OmhlYXBGb3Iob3RoZXIuc2xvdCgpKS0+YWxsb2Nh
dGUoKSk7DQogICAgICAgIHNldChvdGhlci5nZXQoKSk7DQogICAgfQ0KICAgIA0KICAgIGVudW0g
SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07DQogICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHNsb3QoKSA9PSBo
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQ0KICAgIFN0cm9uZyhIYXNoVGFibGVEZWxldGVkVmFs
dWVUYWcpDQogICAgICAgIDogSGFuZGxlPFQ+KGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQ0KICAg
IHsNCiAgICB9DQoNCiAgICB+U3Ryb25nKCkNCiAgICB7DQogICAgICAgIGNsZWFyKCk7DQogICAg
fQ0KDQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhc2xvdCgpIHx8ICEqc2xv
dCgpOyB9DQoNCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISEq
dGhpczsgfQ0KDQogICAgdm9pZCBzd2FwKFN0cm9uZyYgb3RoZXIpDQogICAgew0KICAgICAgICBI
YW5kbGU8VD46OnN3YXAob3RoZXIpOw0KICAgIH0NCg0KICAgIEV4dGVybmFsVHlwZSBnZXQoKSBj
b25zdCB7IHJldHVybiBIYW5kbGVUeXBlczxUPjo6Z2V0RnJvbVNsb3QodGhpcy0+c2xvdCgpKTsg
fQ0KDQogICAgdm9pZCBzZXQoVk0mLCBFeHRlcm5hbFR5cGUpOw0KDQogICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IFN0cm9uZyYgb3BlcmF0b3I9KGNvbnN0IFN0cm9uZzxVPiYgb3RoZXIpDQogICAg
ew0KICAgICAgICBpZiAoIW90aGVyLnNsb3QoKSkgew0KICAgICAgICAgICAgY2xlYXIoKTsNCiAg
ICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIHNldCgqSGFuZGxl
U2V0OjpoZWFwRm9yKG90aGVyLnNsb3QoKSktPnZtKCksIG90aGVyLmdldCgpKTsNCiAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgIH0NCiAgICANCiAgICBTdHJvbmcmIG9wZXJhdG9yPShjb25zdCBT
dHJvbmcmIG90aGVyKQ0KICAgIHsNCiAgICAgICAgaWYgKCFvdGhlci5zbG90KCkpIHsNCiAgICAg
ICAgICAgIGNsZWFyKCk7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0K
ICAgICAgICBzZXQoSGFuZGxlU2V0OjpoZWFwRm9yKG90aGVyLnNsb3QoKSktPnZtKCksIG90aGVy
LmdldCgpKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIHZvaWQgY2xlYXIo
KQ0KICAgIHsNCiAgICAgICAgaWYgKCFzbG90KCkpDQogICAgICAgICAgICByZXR1cm47DQoNCiAg
ICAgICAgYXV0byogaGVhcCA9IEhhbmRsZVNldDo6aGVhcEZvcihzbG90KCkpOw0KICAgICAgICBp
ZiAoc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrID09IFNob3VsZFN0cm9uZ0Rlc3RydWN0
b3JHcmFiTG9jazo6WWVzKSB7DQogICAgICAgICAgICBKU0xvY2tIb2xkZXIgaG9sZGVyKGhlYXAt
PnZtKCkpOw0KICAgICAgICAgICAgaGVhcC0+ZGVhbGxvY2F0ZShzbG90KCkpOw0KICAgICAgICAg
ICAgc2V0U2xvdChudWxscHRyKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGhlYXAt
PmRlYWxsb2NhdGUoc2xvdCgpKTsNCiAgICAgICAgICAgIHNldFNsb3QobnVsbHB0cik7DQogICAg
ICAgIH0NCiAgICB9DQoNCnByaXZhdGU6DQogICAgc3RhdGljIEhhbmRsZVNsb3QgaGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PigtMSk7
IH0NCg0KICAgIHZvaWQgc2V0KEV4dGVybmFsVHlwZSBleHRlcm5hbFR5cGUpDQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIEpTVmFsdWUgdmFsdWUgPSBIYW5kbGVUeXBlczxUPjo6
dG9KU1ZhbHVlKGV4dGVybmFsVHlwZSk7DQogICAgICAgIEhhbmRsZVNldDo6aGVhcEZvcihzbG90
KCkpLT53cml0ZUJhcnJpZXIoc2xvdCgpLCB2YWx1ZSk7DQogICAgICAgICpzbG90KCkgPSB2YWx1
ZTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFN0cm9u
ZzxUPiYgYSwgU3Ryb25nPFQ+JiBiKQ0Kew0KICAgIGEuc3dhcChiKTsNCn0NCg0KfSANCg0KbmFt
ZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8
SlNDOjpTdHJvbmc8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgew0KICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBjYW5Db21wYXJlV2l0aE1lbWNtcCA9IGZhbHNlOw0KfTsNCg0KdGVtcGxh
dGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpTdHJvbmc8UD4+IDogU2ltcGxl
Q2xhc3NIYXNoVHJhaXRzPEpTQzo6U3Ryb25nPFA+PiB7IH07DQoNCn0gDQojbGluZSA1NiAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxW
TS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmVDYWNoZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxJ
bmRleGluZ1R5cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHVp
bnQ4X3QgSW5kZXhpbmdUeXBlOw0KDQoNCnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgSXNBcnJh
eSAgICAgICAgICAgICAgICAgID0gMHgwMTsNCg0KDQpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBl
IE5vSW5kZXhpbmdTaGFwZSAgICAgICAgICAgICAgICAgPSAweDAwOw0Kc3RhdGljIGNvbnN0IElu
ZGV4aW5nVHlwZSBVbmRlY2lkZWRTaGFwZSAgICAgICAgICAgICAgICAgID0gMHgwMjsgDQpzdGF0
aWMgY29uc3QgSW5kZXhpbmdUeXBlIEludDMyU2hhcGUgICAgICAgICAgICAgICAgICAgICAgPSAw
eDA0Ow0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBEb3VibGVTaGFwZSAgICAgICAgICAgICAg
ICAgICAgID0gMHgwNjsNCnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQ29udGlndW91c1NoYXBl
ICAgICAgICAgICAgICAgICA9IDB4MDg7DQpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIEFycmF5
U3RvcmFnZVNoYXBlICAgICAgICAgICAgICAgPSAweDBBOw0Kc3RhdGljIGNvbnN0IEluZGV4aW5n
VHlwZSBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgICAgICAgID0gMHgwQzsNCg0Kc3RhdGljIGNv
bnN0IEluZGV4aW5nVHlwZSBJbmRleGluZ1NoYXBlTWFzayAgICAgICAgICAgICAgID0gMHgwRTsN
CnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgSW5kZXhpbmdTaGFwZVNoaWZ0ICAgICAgICAgICAg
ICA9IDE7DQpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIE51bWJlck9mSW5kZXhpbmdTaGFwZXMg
ICAgICAgICAgPSA3Ow0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBJbmRleGluZ1R5cGVNYXNr
ICAgICAgICAgICAgICAgID0gSW5kZXhpbmdTaGFwZU1hc2sgfCBJc0FycmF5Ow0KDQoNCnN0YXRp
YyBjb25zdCBJbmRleGluZ1R5cGUgQ29weU9uV3JpdGUgICAgICAgICAgICAgICAgICAgICAgPSAw
eDEwOw0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBJbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxp
dHlNYXNrICA9IENvcHlPbldyaXRlIHwgSW5kZXhpbmdTaGFwZU1hc2s7DQpzdGF0aWMgY29uc3Qg
SW5kZXhpbmdUeXBlIEluZGV4aW5nTW9kZU1hc2sgICAgICAgICAgICAgICAgID0gQ29weU9uV3Jp
dGUgfCBJbmRleGluZ1R5cGVNYXNrOw0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOdW1iZXJP
ZkNvcHlPbldyaXRlSW5kZXhpbmdNb2RlcyA9IDM7IA0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlw
ZSBOdW1iZXJPZkFycmF5SW5kZXhpbmdNb2RlcyAgICAgICA9IE51bWJlck9mSW5kZXhpbmdTaGFw
ZXMgKyBOdW1iZXJPZkNvcHlPbldyaXRlSW5kZXhpbmdNb2RlczsNCg0KDQoNCg0KDQpzdGF0aWMg
Y29uc3QgSW5kZXhpbmdUeXBlIE1heUhhdmVJbmRleGVkQWNjZXNzb3JzICAgICAgICAgPSAweDIw
Ow0KDQoNCg0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBJbmRleGluZ1R5cGVMb2NrSXNIZWxk
ICAgICAgICAgID0gMHg0MDsNCnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgSW5kZXhpbmdUeXBl
TG9ja0hhc1BhcmtlZCAgICAgICA9IDB4ODA7DQoNCg0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlw
ZSBOb25BcnJheSAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwOw0Kc3RhdGljIGNvbnN0IElu
ZGV4aW5nVHlwZSBOb25BcnJheVdpdGhJbnQzMiAgICAgICAgICAgICAgID0gSW50MzJTaGFwZTsN
CnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgTm9uQXJyYXlXaXRoRG91YmxlICAgICAgICAgICAg
ICA9IERvdWJsZVNoYXBlOw0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBOb25BcnJheVdpdGhD
b250aWd1b3VzICAgICAgICAgID0gQ29udGlndW91c1NoYXBlOw0Kc3RhdGljIGNvbnN0IEluZGV4
aW5nVHlwZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UgICAgICAgID0gQXJyYXlTdG9yYWdlU2hh
cGU7DQpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0
b3JhZ2UgPSBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7DQpzdGF0aWMgY29uc3QgSW5kZXhpbmdU
eXBlIEFycmF5Q2xhc3MgICAgICAgICAgICAgICAgICAgICAgPSBJc0FycmF5OyANCnN0YXRpYyBj
b25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRoVW5kZWNpZGVkICAgICAgICAgICAgICA9IElzQXJy
YXkgfCBVbmRlY2lkZWRTaGFwZTsNCnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRo
SW50MzIgICAgICAgICAgICAgICAgICA9IElzQXJyYXkgfCBJbnQzMlNoYXBlOw0Kc3RhdGljIGNv
bnN0IEluZGV4aW5nVHlwZSBBcnJheVdpdGhEb3VibGUgICAgICAgICAgICAgICAgID0gSXNBcnJh
eSB8IERvdWJsZVNoYXBlOw0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBcnJheVdpdGhDb250
aWd1b3VzICAgICAgICAgICAgID0gSXNBcnJheSB8IENvbnRpZ3VvdXNTaGFwZTsNCnN0YXRpYyBj
b25zdCBJbmRleGluZ1R5cGUgQXJyYXlXaXRoQXJyYXlTdG9yYWdlICAgICAgICAgICA9IElzQXJy
YXkgfCBBcnJheVN0b3JhZ2VTaGFwZTsNCnN0YXRpYyBjb25zdCBJbmRleGluZ1R5cGUgQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZSAgICA9IElzQXJyYXkgfCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGU7DQpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBlIENvcHlPbldyaXRlQXJyYXlXaXRoSW50
MzIgICAgICAgPSBJc0FycmF5IHwgSW50MzJTaGFwZSB8IENvcHlPbldyaXRlOw0Kc3RhdGljIGNv
bnN0IEluZGV4aW5nVHlwZSBDb3B5T25Xcml0ZUFycmF5V2l0aERvdWJsZSAgICAgID0gSXNBcnJh
eSB8IERvdWJsZVNoYXBlIHwgQ29weU9uV3JpdGU7DQpzdGF0aWMgY29uc3QgSW5kZXhpbmdUeXBl
IENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cyAgPSBJc0FycmF5IHwgQ29udGlndW91c1No
YXBlIHwgQ29weU9uV3JpdGU7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KICAgIA0KDQoNCg0KDQoNCmlubGluZSBi
b29sIGhhc0luZGV4ZWRQcm9wZXJ0aWVzKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpDQp7DQog
ICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiBJbmRleGluZ1NoYXBlTWFzaykgIT0gTm9JbmRleGlu
Z1NoYXBlOw0KfQ0KDQppbmxpbmUgYm9vbCBoYXNVbmRlY2lkZWQoSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSkNCnsNCiAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hhcGVNYXNr
KSA9PSBVbmRlY2lkZWRTaGFwZTsNCn0NCg0KaW5saW5lIGJvb2wgaGFzSW50MzIoSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZSkNCnsNCiAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIEluZGV4aW5n
U2hhcGVNYXNrKSA9PSBJbnQzMlNoYXBlOw0KfQ0KDQppbmxpbmUgYm9vbCBoYXNEb3VibGUoSW5k
ZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkNCnsNCiAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIElu
ZGV4aW5nU2hhcGVNYXNrKSA9PSBEb3VibGVTaGFwZTsNCn0NCg0KaW5saW5lIGJvb2wgaGFzQ29u
dGlndW91cyhJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQ0Kew0KICAgIHJldHVybiAoaW5kZXhp
bmdUeXBlICYgSW5kZXhpbmdTaGFwZU1hc2spID09IENvbnRpZ3VvdXNTaGFwZTsNCn0NCg0KaW5s
aW5lIGJvb2wgaGFzQXJyYXlTdG9yYWdlKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpDQp7DQog
ICAgcmV0dXJuIChpbmRleGluZ1R5cGUgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gQXJyYXlTdG9y
YWdlU2hhcGU7DQp9DQoNCmlubGluZSBib29sIGhhc0FueUFycmF5U3RvcmFnZShJbmRleGluZ1R5
cGUgaW5kZXhpbmdUeXBlKQ0Kew0KICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihpbmRl
eGluZ1R5cGUgJiBJbmRleGluZ1NoYXBlTWFzaykgPj0gQXJyYXlTdG9yYWdlU2hhcGU7DQp9DQoN
CmlubGluZSBib29sIGhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UoSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSkNCnsNCiAgICByZXR1cm4gKGluZGV4aW5nVHlwZSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9
PSBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGU7DQp9DQoNCmlubGluZSBib29sIHNob3VsZFVzZVNs
b3dQdXQoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkNCnsNCiAgICByZXR1cm4gaGFzU2xvd1B1
dEFycmF5U3RvcmFnZShpbmRleGluZ1R5cGUpOw0KfQ0KDQpjb25zdGV4cHIgYm9vbCBpc0NvcHlP
bldyaXRlKEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGUpDQp7DQogICAgcmV0dXJuIGluZGV4aW5n
TW9kZSAmIENvcHlPbldyaXRlOw0KfQ0KDQppbmxpbmUgdW5zaWduZWQgYXJyYXlJbmRleEZyb21J
bmRleGluZ1R5cGUoSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkNCnsNCiAgICBpZiAoaXNDb3B5
T25Xcml0ZShpbmRleGluZ1R5cGUpKQ0KICAgICAgICByZXR1cm4gKChpbmRleGluZ1R5cGUgJiBJ
bmRleGluZ1NoYXBlTWFzaykgLSBVbmRlY2lkZWRTaGFwZSArIFNsb3dQdXRBcnJheVN0b3JhZ2VT
aGFwZSkgPj4gSW5kZXhpbmdTaGFwZVNoaWZ0Ow0KICAgIHJldHVybiAoaW5kZXhpbmdUeXBlICYg
SW5kZXhpbmdTaGFwZU1hc2spID4+IEluZGV4aW5nU2hhcGVTaGlmdDsNCn0NCg0KaW5saW5lIElu
ZGV4aW5nVHlwZSBpbmRleGluZ1R5cGVGb3JWYWx1ZShKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpDQogICAgICAgIHJldHVybiBJbnQzMlNoYXBlOw0KDQogICAgaWYg
KHZhbHVlLmlzTnVtYmVyKCkgJiYgdmFsdWUuYXNOdW1iZXIoKSA9PSB2YWx1ZS5hc051bWJlcigp
KQ0KICAgICAgICByZXR1cm4gRG91YmxlU2hhcGU7DQoNCiAgICByZXR1cm4gQ29udGlndW91c1No
YXBlOw0KfQ0KDQoNCkluZGV4aW5nVHlwZSBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHlwZXMo
SW5kZXhpbmdUeXBlLCBJbmRleGluZ1R5cGUpOw0KDQpJbmRleGluZ1R5cGUgbGVhc3RVcHBlckJv
dW5kT2ZJbmRleGluZ1R5cGVBbmRUeXBlKEluZGV4aW5nVHlwZSwgU3BlY3VsYXRlZFR5cGUpOw0K
SW5kZXhpbmdUeXBlIGxlYXN0VXBwZXJCb3VuZE9mSW5kZXhpbmdUeXBlQW5kVmFsdWUoSW5kZXhp
bmdUeXBlLCBKU1ZhbHVlKTsNCg0Kdm9pZCBkdW1wSW5kZXhpbmdUeXBlKFByaW50U3RyZWFtJiwg
SW5kZXhpbmdUeXBlKTsNCmNsYXNzIEluZGV4aW5nVHlwZUR1bXAgeyBwdWJsaWM6IEluZGV4aW5n
VHlwZUR1bXAoSW5kZXhpbmdUeXBlIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfSB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgeyBkdW1wSW5kZXhpbmdUeXBlKG91dCwgbV92YWx1
ZSk7IH0gcHJpdmF0ZTogSW5kZXhpbmdUeXBlIG1fdmFsdWU7IH07DQoNCnN0YXRpYyBjb25zdCBJ
bmRleGluZ1R5cGUgQWxsV3JpdGFibGVBcnJheVR5cGVzICAgID0gSW5kZXhpbmdTaGFwZU1hc2sg
fCBJc0FycmF5Ow0Kc3RhdGljIGNvbnN0IEluZGV4aW5nVHlwZSBBbGxBcnJheVR5cGVzICAgICAg
ICAgICAgPSBBbGxXcml0YWJsZUFycmF5VHlwZXMgfCBDb3B5T25Xcml0ZTsNCnN0YXRpYyBjb25z
dCBJbmRleGluZ1R5cGUgQWxsV3JpdGFibGVBcnJheVR5cGVzQW5kSGlzdG9yeSA9IEFsbFdyaXRh
YmxlQXJyYXlUeXBlcyB8IE1heUhhdmVJbmRleGVkQWNjZXNzb3JzOw0Kc3RhdGljIGNvbnN0IElu
ZGV4aW5nVHlwZSBBbGxBcnJheVR5cGVzQW5kSGlzdG9yeSAgPSBBbGxBcnJheVR5cGVzIHwgTWF5
SGF2ZUluZGV4ZWRBY2Nlc3NvcnM7DQoNCnR5cGVkZWYgTG9ja0FsZ29yaXRobTxJbmRleGluZ1R5
cGUsIEluZGV4aW5nVHlwZUxvY2tJc0hlbGQsIEluZGV4aW5nVHlwZUxvY2tIYXNQYXJrZWQ+IElu
ZGV4aW5nVHlwZUxvY2tBbGdvcml0aG07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmVDYWNo
ZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxKU1R5cGVJbmZvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQpuYW1l
c3BhY2UgSlNDIHsNCg0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KDQoNCg0Kc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgDQpzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSAxIDw8IDE7
DQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldENhbGxEYXRhID0gMSA8PCAy
OyANCnN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
ID0gMSA8PCAzOw0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNUb1RoaXMgPSAx
IDw8IDQ7IA0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
ID0gMSA8PCA1Ow0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBUeXBlSW5mb1BlckNlbGxCaXQg
PSAxIDw8IDc7IA0KDQoNCg0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UgPSAxIDw8IDg7DQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgPSAxIDw8IDk7DQoNCg0KDQoNCg0Kc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzID0gMSA8PCAxMDsNCnN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0gMSA8PCAxMTsN
CnN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgR2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUgPSAx
IDw8IDEyOw0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVz
V2F0Y2hwb2ludHMgPSAxIDw8IDEzOw0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCA9IDEgPDwgMTQ7DQpzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlID0gMSA8
PCAxNTsNCnN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyA9IDEgPDwgMTY7DQpzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8IDE3Ow0Kc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sgPSAxIDw8IDE4Ow0K
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRQcm90b3R5cGUgPSAxIDw8IDE5
Ow0KDQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mSW5saW5lQml0cyA9IDg7DQpz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldFByb3RvdHlwZU91dE9mTGluZSA9
IE92ZXJyaWRlc0dldFByb3RvdHlwZSA+PiBudW1iZXJPZklubGluZUJpdHM7DQoNCmNsYXNzIFR5
cGVJbmZvIHsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIHVpbnQ4X3QgSW5saW5lVHlwZUZsYWdzOw0K
ICAgIHR5cGVkZWYgdWludDE2X3QgT3V0T2ZMaW5lVHlwZUZsYWdzOw0KDQogICAgVHlwZUluZm8o
SlNUeXBlIHR5cGUsIHVuc2lnbmVkIGZsYWdzKQ0KICAgICAgICA6IFR5cGVJbmZvKHR5cGUsIGZs
YWdzICYgMHhmZiwgZmxhZ3MgPj4gbnVtYmVyT2ZJbmxpbmVCaXRzKQ0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgIH0NCg0KICAgIFR5cGVJbmZvKEpTVHlwZSB0eXBlLCBJbmxpbmVUeXBl
RmxhZ3MgaW5saW5lVHlwZUZsYWdzLCBPdXRPZkxpbmVUeXBlRmxhZ3Mgb3V0T2ZMaW5lVHlwZUZs
YWdzKQ0KICAgICAgICA6IG1fdHlwZSh0eXBlKQ0KICAgICAgICAsIG1fZmxhZ3MoaW5saW5lVHlw
ZUZsYWdzKQ0KICAgICAgICAsIG1fZmxhZ3MyKG91dE9mTGluZVR5cGVGbGFncykNCiAgICB7DQog
ICAgfQ0KDQogICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU1R5
cGU+KG1fdHlwZSk7IH0NCiAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gaXNPYmpl
Y3QodHlwZSgpKTsgfQ0KICAgIHN0YXRpYyBib29sIGlzT2JqZWN0KEpTVHlwZSB0eXBlKSB7IHJl
dHVybiB0eXBlID49IE9iamVjdFR5cGU7IH0NCiAgICBib29sIGlzRmluYWxPYmplY3QoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlOyB9DQogICAgYm9vbCBpc051bWJl
ck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBOdW1iZXJPYmplY3RUeXBlOyB9DQoN
CiAgICB1bnNpZ25lZCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9mbGFnczIpIDw8IG51bWJlck9mSW5saW5lQml0cykgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9mbGFncyk7IH0NCiAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MxPE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCk7IH0NCiAgICBi
b29sIGltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8
SW1wbGVtZW50c0hhc0luc3RhbmNlPigpOyB9DQogICAgYm9vbCBpbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlPigpOyB9DQogICAgYm9vbCBvdmVycmlkZXNHZXRDYWxsRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8T3ZlcnJpZGVzR2V0Q2FsbERhdGE+KCk7IH0NCiAgICBi
b29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJuIG92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdChpbmxpbmVUeXBlRmxhZ3MoKSk7IH0NCiAgICBzdGF0aWMgYm9v
bCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoSW5saW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJl
dHVybiBmbGFncyAmIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsgfQ0KICAgIHN0YXRpYyBi
b29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUoSW5saW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJldHVy
biBmbGFncyAmIEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7IH0NCiAgICBzdGF0aWMgYm9vbCBwZXJD
ZWxsQml0KElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBUeXBlSW5mb1Bl
ckNlbGxCaXQ7IH0NCiAgICBib29sIG92ZXJyaWRlc1RvVGhpcygpIGNvbnN0IHsgcmV0dXJuIGlz
U2V0T25GbGFnczE8T3ZlcnJpZGVzVG9UaGlzPigpOyB9DQogICAgYm9vbCBzdHJ1Y3R1cmVJc0lt
bW9ydGFsKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxTdHJ1Y3R1cmVJc0ltbW9ydGFs
PigpOyB9DQogICAgYm9vbCBvdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMjxPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzPigpOyB9DQogICAgYm9v
bCBvdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNT
ZXRPbkZsYWdzMjxPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzPigpOyB9DQogICAg
Ym9vbCBvdmVycmlkZXNHZXRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3My
PE92ZXJyaWRlc0dldFByb3RvdHlwZT4oKTsgfQ0KICAgIGJvb2wgcHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxQcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmc+KCk7IH0NCiAgICBib29sIGdldE93blByb3BlcnR5U2xvdElzSW1wdXJlKCkgY29uc3Qg
eyByZXR1cm4gaXNTZXRPbkZsYWdzMjxHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZT4oKTsgfQ0K
ICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UoKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9y
UHJvcGVydHlBYnNlbmNlPigpOyB9DQogICAgYm9vbCBoYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hl
Y2soKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPEhhc1B1dFByb3BlcnR5U2VjdXJpdHlD
aGVjaz4oKTsgfQ0KICAgIGJvb2wgbmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzKCkg
Y29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hw
b2ludHM+KCk7IH0NCiAgICBib29sIGlzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdD4oKTsgfQ0KICAgIGJvb2wgaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybz4o
KTsgfQ0KDQogICAgc3RhdGljIGJvb2wgaXNBcmd1bWVudHNUeXBlKEpTVHlwZSB0eXBlKQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuIHR5cGUgPT0gRGlyZWN0QXJndW1lbnRzVHlwZQ0KICAgICAgICAg
ICAgfHwgdHlwZSA9PSBTY29wZWRBcmd1bWVudHNUeXBlDQogICAgICAgICAgICB8fCB0eXBlID09
IENsb25lZEFyZ3VtZW50c1R5cGU7DQogICAgfQ0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBmbGFn
c09mZnNldCgpDQogICAgew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlm
Zl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8VHlwZUluZm8qPigweDQwMDApLT5tX2ZsYWdzKSkgLSAw
eDQwMDApOw0KICAgIH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZU9mZnNldCgpDQogICAg
ew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJw
cmV0X2Nhc3Q8VHlwZUluZm8qPigweDQwMDApLT5tX3R5cGUpKSAtIDB4NDAwMCk7DQogICAgfQ0K
DQogICAgDQogICAgc3RhdGljIElubGluZVR5cGVGbGFncyBtZXJnZUlubGluZVR5cGVGbGFncyhJ
bmxpbmVUeXBlRmxhZ3Mgc3RydWN0dXJlRmxhZ3MsIElubGluZVR5cGVGbGFncyBvbGRDZWxsRmxh
Z3MpDQogICAgew0KICAgICAgICByZXR1cm4gc3RydWN0dXJlRmxhZ3MgfCAob2xkQ2VsbEZsYWdz
ICYgc3RhdGljX2Nhc3Q8SW5saW5lVHlwZUZsYWdzPihUeXBlSW5mb1BlckNlbGxCaXQpKTsNCiAg
ICB9DQoNCiAgICBJbmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZsYWdzKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFnczsgfQ0KICAgIE91dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxhZ3Mo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzMjsgfQ0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBmbGFnPg0K
ICAgIGJvb2wgaXNTZXRPbkZsYWdzMSgpIGNvbnN0DQogICAgew0KICAgICAgICBzdGF0aWNfYXNz
ZXJ0KGZsYWcgPD0gKDEgPDwgNykpOw0KICAgICAgICByZXR1cm4gbV9mbGFncyAmIGZsYWc7DQog
ICAgfQ0KDQogICAgdGVtcGxhdGU8dW5zaWduZWQgZmxhZz4NCiAgICBib29sIGlzU2V0T25GbGFn
czIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgc3RhdGljX2Fzc2VydChmbGFnID49ICgxIDw8IG51
bWJlck9mSW5saW5lQml0cykgJiYgZmxhZyA8PSAoMSA8PCAyNCkpOw0KICAgICAgICByZXR1cm4g
bV9mbGFnczIgJiAoZmxhZyA+PiBudW1iZXJPZklubGluZUJpdHMpOw0KICAgIH0NCg0KICAgIEpT
VHlwZSBtX3R5cGU7DQogICAgdWludDhfdCBtX2ZsYWdzOw0KICAgIHVpbnQxNl90IG1fZmxhZ3My
Ow0KfTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN0cnVjdHVyZUNhY2hlLmgiDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFBy
b3RvdHlwZUtleS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7DQpjbGFzcyBKU0dsb2JhbE9iamVjdDsNCmNsYXNzIEpTT2JqZWN0Ow0K
DQpjbGFzcyBQcm90b3R5cGVLZXkgew0KcHVibGljOg0KICAgIFByb3RvdHlwZUtleSgpIHsgfQ0K
ICAgIA0KICAgIFByb3RvdHlwZUtleShKU09iamVjdCogcHJvdG90eXBlLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5LCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkNCiAgICAgICAgOiBt
X3Byb3RvdHlwZShwcm90b3R5cGUpDQogICAgICAgICwgbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUp
DQogICAgICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkNCiAgICAgICAgLCBt
X2NsYXNzSW5mbyhjbGFzc0luZm8pDQogICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2Jq
ZWN0KQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgUHJvdG90eXBlS2V5KFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkNCiAgICAgICAgOiBtX2lubGluZUNhcGFjaXR5KDEpDQogICAgew0K
ICAgIH0NCiAgICANCiAgICBKU09iamVjdCogcHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9w
cm90b3R5cGU7IH0NCiAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUoKSBjb25zdCB7
IHJldHVybiBtX2V4ZWN1dGFibGU7IH0NCiAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lQ2FwYWNpdHk7IH0NCiAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9DQogICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9DQogICAg
DQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RvdHlwZUtleSYgb3RoZXIpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gbV9wcm90b3R5cGUgPT0gb3RoZXIubV9wcm90b3R5cGUNCiAg
ICAgICAgICAgICYmIG1fZXhlY3V0YWJsZSA9PSBvdGhlci5tX2V4ZWN1dGFibGUNCiAgICAgICAg
ICAgICYmIG1faW5saW5lQ2FwYWNpdHkgPT0gb3RoZXIubV9pbmxpbmVDYXBhY2l0eQ0KICAgICAg
ICAgICAgJiYgbV9jbGFzc0luZm8gPT0gb3RoZXIubV9jbGFzc0luZm8NCiAgICAgICAgICAgICYm
IG1fZ2xvYmFsT2JqZWN0ID09IG90aGVyLm1fZ2xvYmFsT2JqZWN0Ow0KICAgIH0NCiAgICANCiAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdG90eXBlS2V5JiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0NCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gKnRoaXMgIT0gUHJvdG90eXBlS2V5KCk7IH0NCiAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgPT0gUHJvdG90eXBlS2V5KFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGhhc2goKSBj
b25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIFdURjo6SW50SGFzaDx1aW50cHRyX3Q+OjpoYXNo
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG1fcHJvdG90eXBlKSBeIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KG1fZXhlY3V0YWJsZSkgXiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihtX2NsYXNzSW5m
bykgXiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihtX2dsb2JhbE9iamVjdCkpICsgbV9pbmxpbmVD
YXBhY2l0eTsNCiAgICB9DQogICAgDQpwcml2YXRlOg0KICAgIA0KICAgIA0KICAgIEpTT2JqZWN0
KiBtX3Byb3RvdHlwZSB7IG51bGxwdHIgfTsgDQogICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBtX2V4
ZWN1dGFibGUgeyBudWxscHRyIH07IA0KICAgIHVuc2lnbmVkIG1faW5saW5lQ2FwYWNpdHkgeyAw
IH07DQogICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbyB7IG51bGxwdHIgfTsNCiAgICBK
U0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3QgeyBudWxscHRyIH07DQp9Ow0KDQpzdHJ1Y3Qg
UHJvdG90eXBlS2V5SGFzaCB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUHJvdG90
eXBlS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBQcm90b3R5cGVLZXkmIGEsIGNvbnN0IFByb3RvdHlwZUtleSYgYikgeyByZXR1cm4g
YSA9PSBiOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gdHJ1ZTsNCn07DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8SlNDOjpQcm90b3R5cGVLZXk+IDogSlNDOjpQcm90b3R5cGVLZXlIYXNoIHsgfTsNCg0K
dGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoVHJhaXRzOw0KdGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxKU0M6OlByb3RvdHlwZUtleT4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlND
OjpQcm90b3R5cGVLZXk+IHsgfTsNCg0KfSANCg0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlQ2FjaGUu
aCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcV2Vha0dDTWFwLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KDQoNCmNsYXNzIFdlYWtHQ01hcEJhc2Ugew0KcHVibGljOg0KICAgIHZpcnR1YWwgfldl
YWtHQ01hcEJhc2UoKSB7IH0NCiAgICB2aXJ0dWFsIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXMoKSA9
IDA7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0
eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8S2V5QXJnPiwNCiAgICB0eXBlbmFtZSBLZXlU
cmFpdHNBcmcgPSBIYXNoVHJhaXRzPEtleUFyZz4+DQpjbGFzcyBXZWFrR0NNYXAgZmluYWwgOiBw
dWJsaWMgV2Vha0dDTWFwQmFzZSB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0
dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTog
dXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsN
CiAgICB0eXBlZGVmIFdlYWs8VmFsdWVBcmc+IFZhbHVlVHlwZTsNCiAgICB0eXBlZGVmIEhhc2hN
YXA8S2V5QXJnLCBWYWx1ZVR5cGUsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz4gSGFzaE1hcFR5cGU7
DQoNCnB1YmxpYzoNCiAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpLZXlUeXBlIEtl
eVR5cGU7DQogICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoTWFwVHlwZTo6QWRkUmVzdWx0IEFkZFJl
c3VsdDsNCiAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjppdGVyYXRvciBpdGVyYXRv
cjsNCiAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBjb25z
dF9pdGVyYXRvcjsNCg0KICAgIGV4cGxpY2l0IFdlYWtHQ01hcChWTSYpOw0KICAgIH5XZWFrR0NN
YXAoKSBmaW5hbDsNCg0KICAgIFZhbHVlQXJnKiBnZXQoY29uc3QgS2V5VHlwZSYga2V5KSBjb25z
dA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fbWFwLmdldChrZXkpOw0KICAgIH0NCg0KICAgIEFk
ZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBWYWx1ZVR5cGUgdmFsdWUpDQogICAgew0K
ICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFy
YW1ldGVyPih2YWx1ZSkpOw0KICAgIH0NCg0KICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEtleVR5cGUm
IGtleSkNCiAgICB7DQogICAgICAgIHJldHVybiBtX21hcC5yZW1vdmUoa2V5KTsNCiAgICB9DQoN
CiAgICB2b2lkIGNsZWFyKCkNCiAgICB7DQogICAgICAgIG1fbWFwLmNsZWFyKCk7DQogICAgfQ0K
DQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QNCiAgICB7DQogICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9tYXAuYmVnaW4oKTsNCiAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kID0gbV9tYXAu
ZW5kKCk7DQogICAgICAgIHdoaWxlIChpdCAhPSBlbmQpIHsNCiAgICAgICAgICAgIGlmIChpdC0+
dmFsdWUpDQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIGlubGluZSBpdGVyYXRvciBmaW5kKGNvbnN0IEtl
eVR5cGUmIGtleSk7DQoNCiAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBLZXlU
eXBlJiBrZXkpIGNvbnN0Ow0KDQogICAgaW5saW5lIGJvb2wgY29udGFpbnMoY29uc3QgS2V5VHlw
ZSYga2V5KSBjb25zdDsNCg0KICAgIHZvaWQgcHJ1bmVTdGFsZUVudHJpZXMoKSBmaW5hbDsNCg0K
cHJpdmF0ZToNCiAgICBIYXNoTWFwVHlwZSBtX21hcDsNCiAgICBWTSYgbV92bTsNCn07DQoNCn0g
DQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxTdHJ1Y3R1cmVDYWNoZS5oIg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoN
CmNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsNCmNsYXNzIEpTR2xvYmFsT2JqZWN0Ow0KY2xhc3Mg
SlNPYmplY3Q7DQpjbGFzcyBTdHJ1Y3R1cmU7DQpjbGFzcyBWTTsNCg0KDQpjbGFzcyBTdHJ1Y3R1
cmVDYWNoZSB7DQpwdWJsaWM6DQogICAgZXhwbGljaXQgU3RydWN0dXJlQ2FjaGUoVk0mIHZtKQ0K
ICAgICAgICA6IG1fc3RydWN0dXJlcyh2bSkNCiAgICB7DQogICAgfQ0KDQogICAgdm9pZCBjbGVh
cigpIHsgbV9zdHJ1Y3R1cmVzLmNsZWFyKCk7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBTdHJ1Y3R1cmUqIGVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSwgYm9vbCBtYWtlUG9seVBy
b3RvU3RydWN0dXJlID0gZmFsc2UsIEZ1bmN0aW9uRXhlY3V0YWJsZSogPSBudWxscHRyKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU3RydWN0dXJlKiBlbXB0eVN0cnVjdHVyZUZvclByb3Rv
dHlwZUZyb21CYXNlU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0
cnVjdHVyZUNvbmN1cnJlbnRseShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwcm90b3R5cGUs
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsNCg0KcHJpdmF0ZToNCiAgICBTdHJ1Y3R1cmUqIGNy
ZWF0ZUVtcHR5U3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHByb3RvdHlwZSwg
Y29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5LCBib29sIG1ha2VQb2x5UHJvdG9TdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSopOw0KDQogICAgdXNpbmcgU3RydWN0dXJlTWFwID0gV2Vha0dDTWFwPFByb3RvdHlw
ZUtleSwgU3RydWN0dXJlPjsNCiAgICBTdHJ1Y3R1cmVNYXAgbV9zdHJ1Y3R1cmVzOw0KICAgIExv
Y2sgbV9sb2NrOw0KfTsNCg0KfSANCiNsaW5lIDU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQoNCiNsaW5lIDEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk1U
cmFwcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNs
YXNzIENhbGxGcmFtZTsNCmNsYXNzIEpTR2xvYmFsT2JqZWN0Ow0KY2xhc3MgVk07DQoNCmNsYXNz
IFZNVHJhcHMgew0KICAgIHR5cGVkZWYgdWludDhfdCBCaXRGaWVsZDsNCnB1YmxpYzoNCiAgICBl
bnVtIGNsYXNzIEVycm9yIHsNCiAgICAgICAgTm9uZSwNCiAgICAgICAgTG9ja1VuYXZhaWxhYmxl
LA0KICAgICAgICBOb3RKSVRDb2RlDQogICAgfTsNCg0KICAgIGVudW0gRXZlbnRUeXBlIHsNCiAg
ICAgICAgDQogICAgICAgIE5lZWREZWJ1Z2dlckJyZWFrLA0KICAgICAgICBOZWVkU2hlbGxUaW1l
b3V0Q2hlY2ssDQogICAgICAgIE5lZWRUZXJtaW5hdGlvbiwNCiAgICAgICAgTmVlZFdhdGNoZG9n
Q2hlY2ssDQogICAgICAgIE51bWJlck9mRXZlbnRUeXBlcywgDQogICAgICAgIEludmFsaWQNCiAg
ICB9Ow0KDQogICAgY2xhc3MgTWFzayB7DQogICAgcHVibGljOg0KICAgICAgICBlbnVtIEFsbEV2
ZW50VHlwZXMgeyBBbGxFdmVudFR5cGVzVGFnIH07DQogICAgICAgIGNvbnN0ZXhwciBNYXNrKEFs
bEV2ZW50VHlwZXMpDQogICAgICAgICAgICA6IG1fbWFzayhzdGQ6Om51bWVyaWNfbGltaXRzPEJp
dEZpZWxkPjo6bWF4KCkpDQogICAgICAgIHsgfQ0KICAgICAgICBzdGF0aWMgY29uc3RleHByIE1h
c2sgYWxsRXZlbnRUeXBlcygpIHsgcmV0dXJuIE1hc2soQWxsRXZlbnRUeXBlc1RhZyk7IH0NCg0K
ICAgICAgICBjb25zdGV4cHIgTWFzayhjb25zdCBNYXNrJikgPSBkZWZhdWx0Ow0KICAgICAgICBj
b25zdGV4cHIgTWFzayhNYXNrJiYpID0gZGVmYXVsdDsNCg0KICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+DQogICAgICAgIGNvbnN0ZXhwciBNYXNrKEFyZ3VtZW50cy4uLiBh
cmdzKQ0KICAgICAgICAgICAgOiBtX21hc2soMCkNCiAgICAgICAgew0KICAgICAgICAgICAgaW5p
dChhcmdzLi4uKTsNCiAgICAgICAgfQ0KDQogICAgICAgIEJpdEZpZWxkIGJpdHMoKSBjb25zdCB7
IHJldHVybiBtX21hc2s7IH0NCg0KICAgIHByaXZhdGU6DQogICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4NCiAgICAgICAgY29uc3RleHByIHZvaWQgaW5pdChFdmVudFR5cGUg
ZXZlbnRUeXBlLCBBcmd1bWVudHMuLi4gYXJncykNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICAgICAgbV9tYXNrIHw9ICgxIDw8IGV2ZW50VHlwZSk7DQogICAgICAg
ICAgICBpbml0KGFyZ3MuLi4pOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3RleHByIHZvaWQg
aW5pdCgpIHsgfQ0KDQogICAgICAgIEJpdEZpZWxkIG1fbWFzazsNCiAgICB9Ow0KDQogICAgc3Rh
dGljIGNvbnN0ZXhwciBNYXNrIGludGVycnVwdGluZ1RyYXBzKCkgeyByZXR1cm4gTWFzayhOZWVk
U2hlbGxUaW1lb3V0Q2hlY2ssIE5lZWRUZXJtaW5hdGlvbiwgTmVlZFdhdGNoZG9nQ2hlY2spOyB9
DQoNCiAgICB+Vk1UcmFwcygpOw0KICAgIFZNVHJhcHMoKTsNCg0KICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVTaWduYWxzKCk7DQoNCiAgICB2b2lkIHdpbGxEZXN0cm95Vk0oKTsNCg0KICAgIGJv
b2wgbmVlZFRyYXBIYW5kbGluZygpIHsgcmV0dXJuIG1fbmVlZFRyYXBIYW5kbGluZzsgfQ0KICAg
IGJvb2wgbmVlZFRyYXBIYW5kbGluZyhNYXNrIG1hc2spIHsgcmV0dXJuIG1fbmVlZFRyYXBIYW5k
bGluZyAmIG1hc2suYml0cygpOyB9DQogICAgdm9pZCogbmVlZFRyYXBIYW5kbGluZ0FkZHJlc3Mo
KSB7IHJldHVybiAmbV9uZWVkVHJhcEhhbmRsaW5nOyB9DQoNCiAgICB2b2lkIG5vdGlmeUdyYWJB
bGxMb2NrcygpDQogICAgew0KICAgICAgICBpZiAobmVlZFRyYXBIYW5kbGluZygpKQ0KICAgICAg
ICAgICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKCk7DQogICAgfQ0KDQogICAgX19kZWNs
c3BlYyhkbGxleHBvcnQpIHZvaWQgZmlyZVRyYXAoRXZlbnRUeXBlKTsNCg0KICAgIHZvaWQgaGFu
ZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBWTVRyYXBzOjpNYXNrKTsNCg0K
ICAgIHZvaWQgdHJ5SW5zdGFsbFRyYXBCcmVha3BvaW50cyhzdHJ1Y3QgU2lnbmFsQ29udGV4dCYs
IFN0YWNrQm91bmRzKTsNCg0KcHJpdmF0ZToNCiAgICBWTSYgdm0oKSBjb25zdDsNCg0KICAgIGJv
b2wgaGFzVHJhcEZvckV2ZW50KExvY2tlcjxMb2NrPiYsIEV2ZW50VHlwZSBldmVudFR5cGUsIE1h
c2sgbWFzaykNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIChtX3Ry
YXBzQml0RmllbGQgJiBtYXNrLmJpdHMoKSAmICgxIDw8IGV2ZW50VHlwZSkpOw0KICAgIH0NCiAg
ICB2b2lkIHNldFRyYXBGb3JFdmVudChMb2NrZXI8TG9jaz4mLCBFdmVudFR5cGUgZXZlbnRUeXBl
KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX3RyYXBzQml0RmllbGQgfD0g
KDEgPDwgZXZlbnRUeXBlKTsNCiAgICB9DQogICAgdm9pZCBjbGVhclRyYXBGb3JFdmVudChMb2Nr
ZXI8TG9jaz4mLCBFdmVudFR5cGUgZXZlbnRUeXBlKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICBtX3RyYXBzQml0RmllbGQgJj0gfigxIDw8IGV2ZW50VHlwZSk7DQogICAgfQ0K
DQogICAgRXZlbnRUeXBlIHRha2VUb3BQcmlvcml0eVRyYXAoTWFzayk7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMTUzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNVHJhcHMuaCINCiAgICB2b2lkIGludmFsaWRhdGVDb2Rl
QmxvY2tzT25TdGFjaygpIHsgfQ0KICAgIHZvaWQgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNr
KENhbGxGcmFtZSopIHsgfQ0KI2xpbmUgMTU2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNVHJhcHMuaCINCg0KICAgIEJveDxMb2Nr
PiBtX2xvY2s7DQogICAgUmVmPEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbj4gbV9jb25kaXRpb247
DQogICAgdW5pb24gew0KICAgICAgICBCaXRGaWVsZCBtX25lZWRUcmFwSGFuZGxpbmcgeyAwIH07
DQogICAgICAgIEJpdEZpZWxkIG1fdHJhcHNCaXRGaWVsZDsNCiAgICB9Ow0KICAgIGJvb2wgbV9u
ZWVkVG9JbnZhbGlkYXRlZENvZGVCbG9ja3MgeyBmYWxzZSB9Ow0KICAgIGJvb2wgbV9pc1NodXR0
aW5nRG93biB7IGZhbHNlIH07DQoNCg0KDQojbGluZSAxNjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk1UcmFwcy5oIg0KDQogICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCiAgICBmcmllbmQgY2xhc3MgU2ln
bmFsU2VuZGVyOw0KfTsNCg0KfSANCiNsaW5lIDU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHdhc21cXFdhc21Db250
ZXh0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjQgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcd2FzbVxcV2FzbUNvbnRleHQuaCINCiNs
aW5lIDYwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFZNLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BhZ2VBbGxvY2F0aW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL09T
QWxsb2NhdG9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1ZNVGFncy5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WTVRhZ3MuaCINCiNsaW5lIDMwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9PU0FsbG9j
YXRvci5oIg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgT1NBbGxvY2F0b3Igew0KICAgIHB1
YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRG
YXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgZW51bSBVc2FnZSB7DQog
ICAgICAgIFVua25vd25Vc2FnZSA9IC0xLA0KICAgICAgICBGYXN0TWFsbG9jUGFnZXMgPSAtMSwN
CiAgICAgICAgSlNKSVRDb2RlUGFnZXMgPSAtMSwNCiAgICB9Ow0KDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5j
b21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRy
dWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZh
bHNlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIHZvaWQgcmVsZWFzZURlY29t
bWl0dGVkKHZvaWQqLCBzaXplX3QpOw0KDQogICAgDQogICAgDQogICAgDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHN0YXRpYyB2b2lkIGNvbW1pdCh2b2lkKiwgc2l6ZV90LCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMg
dm9pZCBkZWNvbW1pdCh2b2lkKiwgc2l6ZV90KTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3Qs
IFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRh
YmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOw0KICAgIHN0YXRp
YyB2b2lkIGRlY29tbWl0QW5kUmVsZWFzZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSk7DQoNCiAg
ICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIHZvaWQqIHJl
c2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNh
Z2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSk7DQoNCiAgICANCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0K
ICAgIHN0YXRpYyBUKiByZWFsbG9jYXRlQ29tbWl0dGVkKFQqLCBzaXplX3Qgb2xkU2l6ZSwgc2l6
ZV90IG5ld1NpemUsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UpOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIHN0YXRpYyB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKHZvaWQqLCBzaXplX3QpOw0K
fTsNCg0KaW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBy
ZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxl
LCBib29sIGV4ZWN1dGFibGUpDQp7DQogICAgdm9pZCogYmFzZSA9IHJlc2VydmVVbmNvbW1pdHRl
ZChyZXNlcnZlU2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsNCiAgICBjb21taXQo
YmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOw0KICAgIHJldHVybiBiYXNl
Ow0KfQ0KDQppbmxpbmUgdm9pZCBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHZvaWQq
IHJlbGVhc2VCYXNlLCBzaXplX3QgcmVsZWFzZVNpemUpDQp7DQogICAgcmVsZWFzZURlY29tbWl0
dGVkKHJlbGVhc2VCYXNlLCByZWxlYXNlU2l6ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+
DQppbmxpbmUgVCogT1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQoVCogb2xkQmFzZSwg
c2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJs
ZSwgYm9vbCBleGVjdXRhYmxlKQ0Kew0KICAgIHZvaWQqIG5ld0Jhc2UgPSByZXNlcnZlQW5kQ29t
bWl0KG5ld1NpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7DQogICAgbWVtY3B5KG5l
d0Jhc2UsIG9sZEJhc2UsIHN0ZDo6bWluKG9sZFNpemUsIG5ld1NpemUpKTsNCiAgICBkZWNvbW1p
dEFuZFJlbGVhc2Uob2xkQmFzZSwgb2xkU2l6ZSk7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQq
PihuZXdCYXNlKTsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjpPU0FsbG9jYXRvcjsNCiNsaW5lIDMw
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9QYWdlQWxsb2NhdGlvbi5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMzcgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BhZ2VBbGxvY2F0aW9u
LmgiDQoNCg0KDQoNCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QYWdlQWxsb2NhdGlvbi5oIg0KDQoNCg0KI2xpbmUgNDYg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1BhZ2VBbGxvY2F0aW9uLmgiDQoNCg0KDQoNCiNsaW5lIDUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QYWdlQWxsb2NhdGlvbi5oIg0K
DQpuYW1lc3BhY2UgV1RGIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFz
cyBQYWdlQWxsb2NhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsNCnB1YmxpYzoNCiAgICB1c2lu
ZyBQYWdlQmxvY2s6OlBhZ2VCbG9jazsNCiAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7DQogICAg
dXNpbmcgUGFnZUJsb2NrOjpiYXNlOw0KDQoNCiAgICB1c2luZyBQYWdlQmxvY2s6Om9wZXJhdG9y
IGJvb2w7DQoNCg0KDQoNCiNsaW5lIDgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9QYWdlQWxsb2NhdGlvbi5oIg0KDQogICAgc3RhdGlj
IFBhZ2VBbGxvY2F0aW9uIGFsbG9jYXRlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2Ug
dXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIHJldHVybiBQYWdlQWxsb2NhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChz
aXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpLCBzaXplKTsNCiAgICB9DQoNCiAgICB2
b2lkIGRlYWxsb2NhdGUoKQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBQYWdl
QWxsb2NhdGlvbiB0bXA7DQogICAgICAgIHN0ZDo6c3dhcCh0bXAsICp0aGlzKTsNCg0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICBPU0FsbG9jYXRvcjo6
ZGVjb21taXRBbmRSZWxlYXNlKHRtcC5iYXNlKCksIHRtcC5zaXplKCkpOw0KICAgIH0NCg0KcHJp
dmF0ZToNCiAgICBQYWdlQWxsb2NhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkNCiAgICAg
ICAgOiBQYWdlQmxvY2soYmFzZSwgc2l6ZSwgZmFsc2UpDQogICAgew0KICAgIH0NCn07DQoNCn0g
DQoNCnVzaW5nIFdURjo6UGFnZUFsbG9jYXRpb247DQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQnVtcFBvaW50ZXJBbGxv
Y2F0b3IuaCINCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KDQoNCmNsYXNzIEJ1bXBQb2ludGVyUG9v
bCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0
TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51
bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVz
aW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJl
VG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBCdW1wUG9pbnRlclBv
b2wqIGVuc3VyZUNhcGFjaXR5KHNpemVfdCBzaXplKQ0KICAgIHsNCiAgICAgICAgdm9pZCogYWxs
b2NhdGlvbkVuZCA9IHN0YXRpY19jYXN0PGNoYXIqPihtX2N1cnJlbnQpICsgc2l6ZTsNCiAgICAg
ICAgKCh2b2lkKTApOyANCiAgICAgICAgaWYgKGFsbG9jYXRpb25FbmQgPD0gc3RhdGljX2Nhc3Q8
dm9pZCo+KHRoaXMpKQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICAgIHJldHVybiBl
bnN1cmVDYXBhY2l0eUNyb3NzUG9vbCh0aGlzLCBzaXplKTsNCiAgICB9DQoNCiAgICANCiAgICAN
CiAgICB2b2lkKiBhbGxvYyhzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIHZvaWQqIGN1cnJl
bnQgPSBtX2N1cnJlbnQ7DQogICAgICAgIHZvaWQqIGFsbG9jYXRpb25FbmQgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4oY3VycmVudCkgKyBzaXplOw0KICAgICAgICAoKHZvaWQpMCk7IA0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgIG1fY3VycmVudCA9IGFsbG9jYXRpb25FbmQ7DQogICAgICAgIHJl
dHVybiBjdXJyZW50Ow0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIEJ1bXBQb2lu
dGVyUG9vbCogZGVhbGxvYyh2b2lkKiBwb3NpdGlvbikNCiAgICB7DQogICAgICAgIGlmICgocG9z
aXRpb24gPj0gbV9zdGFydCkgJiYgKHBvc2l0aW9uIDw9IHN0YXRpY19jYXN0PHZvaWQqPih0aGlz
KSkpIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIG1fY3VycmVudCA9IHBv
c2l0aW9uOw0KICAgICAgICAgICAgcmV0dXJuIHRoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0
dXJuIGRlYWxsb2NDcm9zc1Bvb2wodGhpcywgcG9zaXRpb24pOw0KICAgIH0NCg0KcHJpdmF0ZToN
CiAgICANCiAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIGNvbnN0IFBhZ2VBbGxv
Y2F0aW9uJiBhbGxvY2F0aW9uKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
YWxsb2NhdGlvbi5iYXNlKCkpICsgYWxsb2NhdGlvbi5zaXplKCkpIC0gc2l6ZTsNCiAgICB9DQoN
CiAgICBCdW1wUG9pbnRlclBvb2woY29uc3QgUGFnZUFsbG9jYXRpb24mIGFsbG9jYXRpb24pDQog
ICAgICAgIDogbV9jdXJyZW50KGFsbG9jYXRpb24uYmFzZSgpKQ0KICAgICAgICAsIG1fc3RhcnQo
YWxsb2NhdGlvbi5iYXNlKCkpDQogICAgICAgICwgbV9uZXh0KG51bGxwdHIpDQogICAgICAgICwg
bV9wcmV2aW91cyhudWxscHRyKQ0KICAgICAgICAsIG1fYWxsb2NhdGlvbihhbGxvY2F0aW9uKQ0K
ICAgIHsNCiAgICB9DQoNCiAgICBzdGF0aWMgQnVtcFBvaW50ZXJQb29sKiBjcmVhdGUoc2l6ZV90
IG1pbmltdW1DYXBhY2l0eSA9IDApDQogICAgew0KICAgICAgICANCiAgICAgICAgbWluaW11bUNh
cGFjaXR5ICs9IHNpemVvZihCdW1wUG9pbnRlclBvb2wpOw0KICAgICAgICBpZiAobWluaW11bUNh
cGFjaXR5IDwgc2l6ZW9mKEJ1bXBQb2ludGVyUG9vbCkpDQogICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsNCg0KICAgICAgICBzaXplX3QgcG9vbFNpemUgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxz
aXplX3Q+KDB4MTAwMCksIFdURjo6cGFnZVNpemUoKSk7DQogICAgICAgIHdoaWxlIChwb29sU2l6
ZSA8IG1pbmltdW1DYXBhY2l0eSkgew0KICAgICAgICAgICAgcG9vbFNpemUgPDw9IDE7DQogICAg
ICAgICAgICANCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIGlmICghcG9vbFNp
emUpDQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAgIH0NCg0KICAgICAg
ICBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb246OmFsbG9jYXRlKHBv
b2xTaXplKTsNCiAgICAgICAgaWYgKCEhYWxsb2NhdGlvbikNCiAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRpb24pIEJ1bXBQb2ludGVyUG9vbChhbGxvY2F0aW9uKTsNCiAgICAgICAgcmV0
dXJuIG51bGxwdHI7DQogICAgfQ0KDQogICAgdm9pZCBzaHJpbmsoKQ0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICBtX2N1cnJlbnQgPSBtX3N0YXJ0Ow0KICAgICAgICB3aGlsZSAo
bV9uZXh0KSB7DQogICAgICAgICAgICBCdW1wUG9pbnRlclBvb2wqIG5leHROZXh0ID0gbV9uZXh0
LT5tX25leHQ7DQogICAgICAgICAgICBtX25leHQtPmRlc3Ryb3koKTsNCiAgICAgICAgICAgIG1f
bmV4dCA9IG5leHROZXh0Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBkZXN0cm95KCkN
CiAgICB7DQogICAgICAgIG1fYWxsb2NhdGlvbi5kZWFsbG9jYXRlKCk7DQogICAgfQ0KDQogICAg
c3RhdGljIEJ1bXBQb2ludGVyUG9vbCogZW5zdXJlQ2FwYWNpdHlDcm9zc1Bvb2woQnVtcFBvaW50
ZXJQb29sKiBwcmV2aW91c1Bvb2wsIHNpemVfdCBzaXplKQ0KICAgIHsNCiAgICAgICAgDQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOyANCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICBCdW1wUG9pbnRlclBvb2wqIHBvb2wgPSBwcmV2aW91c1Bvb2wtPm1fbmV4dDsNCg0K
ICAgICAgICB3aGlsZSAodHJ1ZSkgew0KICAgICAgICAgICAgaWYgKCFwb29sKSB7DQogICAgICAg
ICAgICAgICAgDQogICAgICAgICAgICAgICAgcG9vbCA9IEJ1bXBQb2ludGVyUG9vbDo6Y3JlYXRl
KHNpemUpOw0KICAgICAgICAgICAgICAgIHByZXZpb3VzUG9vbC0+bV9uZXh0ID0gcG9vbDsNCiAg
ICAgICAgICAgICAgICBwb29sLT5tX3ByZXZpb3VzID0gcHJldmlvdXNQb29sOw0KICAgICAgICAg
ICAgICAgIHJldHVybiBwb29sOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICANCiAgICAg
ICAgICAgIHZvaWQqIGN1cnJlbnQgPSBwb29sLT5tX2N1cnJlbnQ7DQogICAgICAgICAgICB2b2lk
KiBhbGxvY2F0aW9uRW5kID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGN1cnJlbnQpICsgc2l6ZTsNCiAg
ICAgICAgICAgICgodm9pZCkwKTsgDQogICAgICAgICAgICBpZiAoYWxsb2NhdGlvbkVuZCA8PSBz
dGF0aWNfY2FzdDx2b2lkKj4ocG9vbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHBvb2w7DQoN
CiAgICAgICAgICAgIHByZXZpb3VzUG9vbCA9IHBvb2w7DQogICAgICAgICAgICBwb29sID0gcG9v
bC0+bV9uZXh0Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgc3RhdGljIEJ1bXBQb2ludGVyUG9v
bCogZGVhbGxvY0Nyb3NzUG9vbChCdW1wUG9pbnRlclBvb2wqIHBvb2wsIHZvaWQqIHBvc2l0aW9u
KQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICB3aGlsZSAo
dHJ1ZSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBwb29sLT5tX2N1cnJlbnQgPSBwb29s
LT5tX3N0YXJ0Ow0KICAgICAgICAgICAgcG9vbCA9IHBvb2wtPm1fcHJldmlvdXM7DQoNCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgaWYgKCFwb29sKQ0KICAgICAgICAgICAgICAgIFdURkNyYXNo
KCk7DQoNCiAgICAgICAgICAgIGlmICgocG9zaXRpb24gPj0gcG9vbC0+bV9zdGFydCkgJiYgKHBv
c2l0aW9uIDw9IHN0YXRpY19jYXN0PHZvaWQqPihwb29sKSkpIHsNCiAgICAgICAgICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgICAgICAgICAgcG9vbC0+bV9jdXJyZW50ID0gcG9zaXRpb247DQog
ICAgICAgICAgICAgICAgcmV0dXJuIHBvb2w7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICB9DQoNCiAgICB2b2lkKiBtX2N1cnJlbnQ7DQogICAgdm9pZCogbV9zdGFydDsNCiAgICBCdW1w
UG9pbnRlclBvb2wqIG1fbmV4dDsNCiAgICBCdW1wUG9pbnRlclBvb2wqIG1fcHJldmlvdXM7DQog
ICAgUGFnZUFsbG9jYXRpb24gbV9hbGxvY2F0aW9uOw0KDQogICAgZnJpZW5kIGNsYXNzIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yOw0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KY2xh
c3MgQnVtcFBvaW50ZXJBbGxvY2F0b3Igew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7
IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZh
dGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBp
bnQ7DQpwdWJsaWM6DQogICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IoKQ0KICAgICAgICA6IG1faGVh
ZChudWxscHRyKQ0KICAgIHsNCiAgICB9DQoNCiAgICB+QnVtcFBvaW50ZXJBbGxvY2F0b3IoKQ0K
ICAgIHsNCiAgICAgICAgaWYgKG1faGVhZCkNCiAgICAgICAgICAgIG1faGVhZC0+ZGVzdHJveSgp
Ow0KICAgIH0NCg0KICAgIEJ1bXBQb2ludGVyUG9vbCogc3RhcnRBbGxvY2F0b3IoKQ0KICAgIHsN
CiAgICAgICAgaWYgKCFtX2hlYWQpDQogICAgICAgICAgICBtX2hlYWQgPSBCdW1wUG9pbnRlclBv
b2w6OmNyZWF0ZSgpOw0KICAgICAgICByZXR1cm4gbV9oZWFkOw0KICAgIH0NCg0KICAgIHZvaWQg
c3RvcEFsbG9jYXRvcigpDQogICAgew0KICAgICAgICBpZiAobV9oZWFkKQ0KICAgICAgICAgICAg
bV9oZWFkLT5zaHJpbmsoKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgQnVtcFBvaW50ZXJQb29s
KiBtX2hlYWQ7DQp9Ow0KDQp9DQoNCnVzaW5nIFdURjo6QnVtcFBvaW50ZXJBbGxvY2F0b3I7DQoj
bGluZSA2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxWTS5oIg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1NldEZvclNjb3BlLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KY2xhc3MgU2V0Rm9yU2NvcGUgew0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgU2V0Rm9yU2NvcGUoY29uc3QgU2V0Rm9yU2NvcGUmKSA9
IGRlbGV0ZTsgU2V0Rm9yU2NvcGUmIG9wZXJhdG9yPShjb25zdCBTZXRGb3JTY29wZSYpID0gZGVs
ZXRlOzsNCnB1YmxpYzoNCiAgICBTZXRGb3JTY29wZShUJiBzY29wZWRWYXJpYWJsZSkNCiAgICAg
ICAgOiBtX3Njb3BlZFZhcmlhYmxlKHNjb3BlZFZhcmlhYmxlKQ0KICAgICAgICAsIG1fb3JpZ2lu
YWxWYWx1ZShzY29wZWRWYXJpYWJsZSkNCiAgICB7DQogICAgfQ0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+DQogICAgU2V0Rm9yU2NvcGUoVCYgc2NvcGVkVmFyaWFibGUsIFUmJiBuZXdWYWx1ZSkN
CiAgICAgICAgOiBTZXRGb3JTY29wZShzY29wZWRWYXJpYWJsZSkNCiAgICB7DQogICAgICAgIG1f
c2NvcGVkVmFyaWFibGUgPSBzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpOw0KICAgIH0NCg0KICAg
IH5TZXRGb3JTY29wZSgpDQogICAgew0KICAgICAgICBtX3Njb3BlZFZhcmlhYmxlID0gc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihtX29yaWdpbmFsVmFsdWUpOw0KICAgIH0NCg0K
cHJpdmF0ZToNCiAgICBUJiBtX3Njb3BlZFZhcmlhYmxlOw0KICAgIFQgbV9vcmlnaW5hbFZhbHVl
Ow0KfTsNCg0KfQ0KDQp1c2luZyBXVEY6OlNldEZvclNjb3BlOw0KI2xpbmUgNzEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCIN
Cg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9TdG9wd2F0Y2guaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCmNsYXNzIFN0b3B3YXRjaCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3B3YXRjaD4gew0K
cHVibGljOg0KICAgIHN0YXRpYyBSZWY8U3RvcHdhdGNoPiBjcmVhdGUoKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcHdhdGNoKCkpOw0KICAgIH0NCg0KICAgIHZvaWQg
cmVzZXQoKTsNCiAgICB2b2lkIHN0YXJ0KCk7DQogICAgdm9pZCBzdG9wKCk7DQoNCiAgICBTZWNv
bmRzIGVsYXBzZWRUaW1lKCkgY29uc3Q7DQogICAgU2Vjb25kcyBlbGFwc2VkVGltZVNpbmNlKE1v
bm90b25pY1RpbWUpIGNvbnN0Ow0KDQogICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
ICFzdGQ6OmlzbmFuKG1fbGFzdFN0YXJ0VGltZSk7IH0NCnByaXZhdGU6DQogICAgU3RvcHdhdGNo
KCkgeyByZXNldCgpOyB9DQoNCiAgICBTZWNvbmRzIG1fZWxhcHNlZFRpbWU7DQogICAgTW9ub3Rv
bmljVGltZSBtX2xhc3RTdGFydFRpbWU7DQp9Ow0KDQppbmxpbmUgdm9pZCBTdG9wd2F0Y2g6OnJl
c2V0KCkNCnsNCiAgICBtX2VsYXBzZWRUaW1lID0gMF9zOw0KICAgIG1fbGFzdFN0YXJ0VGltZSA9
IE1vbm90b25pY1RpbWU6Om5hbigpOw0KfQ0KDQppbmxpbmUgdm9pZCBTdG9wd2F0Y2g6OnN0YXJ0
KCkNCnsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBtX2xhc3RTdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsNCn0NCg0KaW5saW5lIHZvaWQgU3RvcHdhdGNoOjpzdG9wKCkNCnsNCiAgICAo
KHZvaWQpMCk7DQoNCiAgICBtX2VsYXBzZWRUaW1lICs9IE1vbm90b25pY1RpbWU6Om5vdygpIC0g
bV9sYXN0U3RhcnRUaW1lOw0KICAgIG1fbGFzdFN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5h
bigpOw0KfQ0KDQppbmxpbmUgU2Vjb25kcyBTdG9wd2F0Y2g6OmVsYXBzZWRUaW1lKCkgY29uc3QN
CnsNCiAgICBpZiAoIWlzQWN0aXZlKCkpDQogICAgICAgIHJldHVybiBtX2VsYXBzZWRUaW1lOw0K
DQogICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xh
c3RTdGFydFRpbWUpOw0KfQ0KDQppbmxpbmUgU2Vjb25kcyBTdG9wd2F0Y2g6OmVsYXBzZWRUaW1l
U2luY2UoTW9ub3RvbmljVGltZSB0aW1lU3RhbXApIGNvbnN0DQp7DQogICAgaWYgKCFpc0FjdGl2
ZSgpKQ0KICAgICAgICByZXR1cm4gbV9lbGFwc2VkVGltZTsNCg0KICAgIHJldHVybiBtX2VsYXBz
ZWRUaW1lICsgKHRpbWVTdGFtcCAtIG1fbGFzdFN0YXJ0VGltZSk7DQp9DQoNCn0gDQoNCnVzaW5n
IFdURjo6U3RvcHdhdGNoOw0KI2xpbmUgNzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCg0KDQoNCiNsaW5lIDEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQv
U3ltYm9sUmVnaXN0cnkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3ltYm9sSW1w
bC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBSZWdpc3RlcmVkU3lt
Ym9sSW1wbDsNCg0KDQoNCmNsYXNzIFN5bWJvbEltcGwgOiBwdWJsaWMgVW5pcXVlZFN0cmluZ0lt
cGwgew0KcHVibGljOg0KICAgIHVzaW5nIEZsYWdzID0gdW5zaWduZWQ7DQogICAgc3RhdGljIGNv
bnN0ZXhwciBGbGFncyBzX2ZsYWdEZWZhdWx0ID0gMHU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBG
bGFncyBzX2ZsYWdJc051bGxTeW1ib2wgPSAwYjAwMXU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBG
bGFncyBzX2ZsYWdJc1JlZ2lzdGVyZWQgPSAwYjAxMHU7DQogICAgc3RhdGljIGNvbnN0ZXhwciBG
bGFncyBzX2ZsYWdJc1ByaXZhdGUgPSAwYjEwMHU7DQoNCiAgICB1bnNpZ25lZCBoYXNoRm9yU3lt
Ym9sKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoRm9yU3ltYm9sU2hpZnRlZFdpdGhGbGFnQ291bnQg
Pj4gc19mbGFnQ291bnQ7IH0NCiAgICBib29sIGlzTnVsbFN5bWJvbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3MgJiBzX2ZsYWdJc051bGxTeW1ib2w7IH0NCiAgICBib29sIGlzUmVnaXN0ZXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJc1JlZ2lzdGVyZWQ7IH0NCiAgICBib29s
IGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJc1ByaXZhdGU7IH0N
Cg0KICAgIFN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSgpIGNvbnN0Ow0KDQogICAgUmVn
aXN0ZXJlZFN5bWJvbEltcGwqIGFzUmVnaXN0ZXJlZFN5bWJvbEltcGwoKTsNCg0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgUmVmPFN5bWJvbEltcGw+IGNyZWF0ZU51bGxTeW1ib2wo
KTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZjxTeW1ib2xJbXBsPiBjcmVh
dGUoU3RyaW5nSW1wbCYgcmVwKTsNCg0KICAgIGNsYXNzIFN0YXRpY1N5bWJvbEltcGwgZmluYWwg
OiBwcml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7DQogICAgICAgIFN0YXRpY1N5bWJvbEltcGwoY29u
c3QgU3RhdGljU3ltYm9sSW1wbCYpID0gZGVsZXRlOyBTdGF0aWNTeW1ib2xJbXBsJiBvcGVyYXRv
cj0oY29uc3QgU3RhdGljU3ltYm9sSW1wbCYpID0gZGVsZXRlOzsNCiAgICBwdWJsaWM6DQogICAg
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50Pg0KICAgICAgICBjb25zdGV4cHIg
U3RhdGljU3ltYm9sSW1wbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRd
LCBGbGFncyBmbGFncyA9IHNfZmxhZ0RlZmF1bHQpDQogICAgICAgICAgICA6IFN0cmluZ0ltcGxT
aGFwZShzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBjaGFyYWN0ZXJDb3VudCAtIDEsIGNo
YXJhY3RlcnMsDQogICAgICAgICAgICAgICAgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hhc2hG
bGFnRGlkUmVwb3J0Q29zdCB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8
IHNfZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhwcikNCiAgICAgICAgICAgICwgbV9o
YXNoRm9yU3ltYm9sU2hpZnRlZFdpdGhGbGFnQ291bnQoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0
ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpDQogICAg
ICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50Pg0KICAgICAgICBjb25zdGV4cHIgU3Rh
dGljU3ltYm9sSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50
XSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdEZWZhdWx0KQ0KICAgICAgICAgICAgOiBTdHJpbmdJbXBs
U2hhcGUoc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBj
aGFyYWN0ZXJzLA0KICAgICAgICAgICAgICAgIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwgU3Ry
aW5nU3ltYm9sIHwgQnVmZmVySW50ZXJuYWwgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJh
bEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpLCBDb25zdHJ1
Y3RXaXRoQ29uc3RFeHByKQ0KICAgICAgICAgICAgLCBtX2hhc2hGb3JTeW1ib2xTaGlmdGVkV2l0
aEZsYWdDb3VudChTdHJpbmdIYXNoZXI6OmNvbXB1dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0
cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCkNCiAgICAgICAgICAgICwgbV9mbGFncyhmbGFn
cykNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgb3BlcmF0b3IgU3ltYm9sSW1wbCYo
KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8U3ltYm9s
SW1wbCo+KHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgU3RyaW5nSW1wbCogbV9vd25lciB7
IG51bGxwdHIgfTsgDQogICAgICAgIHVuc2lnbmVkIG1faGFzaEZvclN5bWJvbFNoaWZ0ZWRXaXRo
RmxhZ0NvdW50Ow0KICAgICAgICBGbGFncyBtX2ZsYWdzOw0KICAgIH07DQoNCnByb3RlY3RlZDoN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIHVuc2lnbmVkIG5leHRIYXNoRm9yU3lt
Ym9sKCk7DQoNCiAgICBmcmllbmQgY2xhc3MgU3RyaW5nSW1wbDsNCg0KICAgIFN5bWJvbEltcGwo
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+
JiYgYmFzZSwgRmxhZ3MgZmxhZ3MgPSBzX2ZsYWdEZWZhdWx0KQ0KICAgICAgICA6IFVuaXF1ZWRT
dHJpbmdJbXBsKENyZWF0ZVN5bWJvbCwgY2hhcmFjdGVycywgbGVuZ3RoKQ0KICAgICAgICAsIG1f
b3duZXIoJmJhc2UubGVha1JlZigpKQ0KICAgICAgICAsIG1faGFzaEZvclN5bWJvbFNoaWZ0ZWRX
aXRoRmxhZ0NvdW50KG5leHRIYXNoRm9yU3ltYm9sKCkpDQogICAgICAgICwgbV9mbGFncyhmbGFn
cykNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQoNCiAgICBTeW1ib2xJbXBsKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYm
IGJhc2UsIEZsYWdzIGZsYWdzID0gc19mbGFnRGVmYXVsdCkNCiAgICAgICAgOiBVbmlxdWVkU3Ry
aW5nSW1wbChDcmVhdGVTeW1ib2wsIGNoYXJhY3RlcnMsIGxlbmd0aCkNCiAgICAgICAgLCBtX293
bmVyKCZiYXNlLmxlYWtSZWYoKSkNCiAgICAgICAgLCBtX2hhc2hGb3JTeW1ib2xTaGlmdGVkV2l0
aEZsYWdDb3VudChuZXh0SGFzaEZvclN5bWJvbCgpKQ0KICAgICAgICAsIG1fZmxhZ3MoZmxhZ3Mp
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgU3ltYm9sSW1wbChGbGFn
cyBmbGFncyA9IHNfZmxhZ0RlZmF1bHQpDQogICAgICAgIDogVW5pcXVlZFN0cmluZ0ltcGwoQ3Jl
YXRlU3ltYm9sKQ0KICAgICAgICAsIG1fb3duZXIoU3RyaW5nSW1wbDo6ZW1wdHkoKSkNCiAgICAg
ICAgLCBtX2hhc2hGb3JTeW1ib2xTaGlmdGVkV2l0aEZsYWdDb3VudChuZXh0SGFzaEZvclN5bWJv
bCgpKQ0KICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MgfCBzX2ZsYWdJc051bGxTeW1ib2wpDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgU3RyaW5nSW1w
bCogbV9vd25lcjsNCiAgICB1bnNpZ25lZCBtX2hhc2hGb3JTeW1ib2xTaGlmdGVkV2l0aEZsYWdD
b3VudDsNCiAgICBGbGFncyBtX2ZsYWdzIHsgc19mbGFnRGVmYXVsdCB9Ow0KfTsNCnN0YXRpY19h
c3NlcnQoc2l6ZW9mKFN5bWJvbEltcGwpID09IHNpemVvZihTeW1ib2xJbXBsOjpTdGF0aWNTeW1i
b2xJbXBsKSwgIiIpOw0KDQpjbGFzcyBQcml2YXRlU3ltYm9sSW1wbCBmaW5hbCA6IHB1YmxpYyBT
eW1ib2xJbXBsIHsNCnB1YmxpYzoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFJl
ZjxQcml2YXRlU3ltYm9sSW1wbD4gY3JlYXRlTnVsbFN5bWJvbCgpOw0KICAgIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KSBzdGF0aWMgUmVmPFByaXZhdGVTeW1ib2xJbXBsPiBjcmVhdGUoU3RyaW5nSW1w
bCYgcmVwKTsNCg0KcHJpdmF0ZToNCiAgICBQcml2YXRlU3ltYm9sSW1wbChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBSZWY8U3RyaW5nSW1wbD4mJiBiYXNlKQ0KICAg
ICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGQ6Om1vdmU8V1RGOjpDaGVj
a01vdmVQYXJhbWV0ZXI+KGJhc2UpLCBzX2ZsYWdJc1ByaXZhdGUpDQogICAgew0KICAgIH0NCg0K
ICAgIFByaXZhdGVTeW1ib2xJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UpDQogICAgICAgIDogU3ltYm9sSW1wbChjaGFy
YWN0ZXJzLCBsZW5ndGgsIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oYmFzZSks
IHNfZmxhZ0lzUHJpdmF0ZSkNCiAgICB7DQogICAgfQ0KDQogICAgUHJpdmF0ZVN5bWJvbEltcGwo
KQ0KICAgICAgICA6IFN5bWJvbEltcGwoc19mbGFnSXNQcml2YXRlKQ0KICAgIHsNCiAgICB9DQp9
Ow0KDQpjbGFzcyBSZWdpc3RlcmVkU3ltYm9sSW1wbCBmaW5hbCA6IHB1YmxpYyBTeW1ib2xJbXBs
IHsNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIFN0cmluZ0ltcGw7DQogICAgZnJpZW5kIGNs
YXNzIFN5bWJvbEltcGw7DQogICAgZnJpZW5kIGNsYXNzIFN5bWJvbFJlZ2lzdHJ5Ow0KDQogICAg
U3ltYm9sUmVnaXN0cnkqIHN5bWJvbFJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xS
ZWdpc3RyeTsgfQ0KICAgIHZvaWQgY2xlYXJTeW1ib2xSZWdpc3RyeSgpIHsgbV9zeW1ib2xSZWdp
c3RyeSA9IG51bGxwdHI7IH0NCg0KICAgIHN0YXRpYyBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+
IGNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5Jik7DQoNCiAgICBSZWdpc3Rl
cmVkU3ltYm9sSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBS
ZWY8U3RyaW5nSW1wbD4mJiBiYXNlLCBTeW1ib2xSZWdpc3RyeSYgcmVnaXN0cnkpDQogICAgICAg
IDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4oYmFzZSksIHNfZmxhZ0lzUmVnaXN0ZXJlZCkNCiAgICAgICAgLCBtX3N5bWJv
bFJlZ2lzdHJ5KCZyZWdpc3RyeSkNCiAgICB7DQogICAgfQ0KDQogICAgUmVnaXN0ZXJlZFN5bWJv
bEltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmlu
Z0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJlZ2lzdHJ5KQ0KICAgICAgICA6IFN5bWJv
bEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0
ZXI+KGJhc2UpLCBzX2ZsYWdJc1JlZ2lzdGVyZWQpDQogICAgICAgICwgbV9zeW1ib2xSZWdpc3Ry
eSgmcmVnaXN0cnkpDQogICAgew0KICAgIH0NCg0KICAgIFN5bWJvbFJlZ2lzdHJ5KiBtX3N5bWJv
bFJlZ2lzdHJ5Ow0KfTsNCg0KaW5saW5lIHVuc2lnbmVkIFN0cmluZ0ltcGw6OnN5bWJvbEF3YXJl
SGFzaCgpIGNvbnN0DQp7DQogICAgaWYgKGlzU3ltYm9sKCkpDQogICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBTeW1ib2xJbXBsKj4odGhpcyktPmhhc2hGb3JTeW1ib2woKTsNCiAgICBy
ZXR1cm4gaGFzaCgpOw0KfQ0KDQppbmxpbmUgdW5zaWduZWQgU3RyaW5nSW1wbDo6ZXhpc3RpbmdT
eW1ib2xBd2FyZUhhc2goKSBjb25zdA0Kew0KICAgIGlmIChpc1N5bWJvbCgpKQ0KICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU3ltYm9sSW1wbCo+KHRoaXMpLT5oYXNoRm9yU3ltYm9s
KCk7DQogICAgcmV0dXJuIGV4aXN0aW5nSGFzaCgpOw0KfQ0KDQppbmxpbmUgU3ltYm9sUmVnaXN0
cnkqIFN5bWJvbEltcGw6OnN5bWJvbFJlZ2lzdHJ5KCkgY29uc3QNCnsNCiAgICBpZiAoaXNSZWdp
c3RlcmVkKCkpDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZWdpc3RlcmVkU3lt
Ym9sSW1wbCo+KHRoaXMpLT5zeW1ib2xSZWdpc3RyeSgpOw0KICAgIHJldHVybiBudWxscHRyOw0K
fQ0KDQppbmxpbmUgUmVnaXN0ZXJlZFN5bWJvbEltcGwqIFN5bWJvbEltcGw6OmFzUmVnaXN0ZXJl
ZFN5bWJvbEltcGwoKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
UmVnaXN0ZXJlZFN5bWJvbEltcGwqPih0aGlzKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgMjE4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N5bWJvbEltcGwuaCINCg0KfSANCg0KdXNpbmcgV1RG
OjpTeW1ib2xJbXBsOw0KdXNpbmcgV1RGOjpQcml2YXRlU3ltYm9sSW1wbDsNCnVzaW5nIFdURjo6
UmVnaXN0ZXJlZFN5bWJvbEltcGw7DQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oIg0K
DQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCg0KDQpjbGFzcyBTeW1ib2xSZWdpc3RyeUtleSB7DQpw
dWJsaWM6DQogICAgU3ltYm9sUmVnaXN0cnlLZXkoKSA9IGRlZmF1bHQ7DQogICAgZXhwbGljaXQg
U3ltYm9sUmVnaXN0cnlLZXkoU3RyaW5nSW1wbCogdWlkKTsNCiAgICBTeW1ib2xSZWdpc3RyeUtl
eShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOw0KDQogICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQ0KICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7
IHJldHVybiBtX2ltcGw7IH0NCg0KICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2ltcGwgPT0gaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0NCg0KcHJp
dmF0ZToNCiAgICBzdGF0aWMgU3RyaW5nSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oLTEpOyB9DQoNCiAgICBTdHJpbmdJ
bXBsKiBtX2ltcGwgeyBudWxscHRyIH07DQogICAgdW5zaWduZWQgbV9oYXNoIHsgMCB9Ow0KfTsN
Cg0KdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEZWZhdWx0SGFzaDsNCnRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFN5bWJvbFJlZ2lzdHJ5S2V5PiA6IFN0cmluZ0hhc2ggew0KICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFN5bWJvbFJlZ2lzdHJ5S2V5JiBrZXkpDQogICAgew0K
ICAgICAgICByZXR1cm4ga2V5Lmhhc2goKTsNCiAgICB9DQogICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgU3ltYm9sUmVnaXN0cnlLZXkmIGEsIGNvbnN0IFN5bWJvbFJlZ2lzdHJ5S2V5JiBiKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEuaW1wbCgpLCBiLmltcGwo
KSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxTeW1ib2xSZWdp
c3RyeUtleT4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U3ltYm9sUmVnaXN0cnlLZXk+IHsNCiAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOw0K
ICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBTeW1ib2xSZWdpc3RyeUtleSYga2V5
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGtleS5pbXBsKCkgPT0gbnVsbHB0cjsNCiAgICB9DQp9
Ow0KDQpjbGFzcyBTeW1ib2xSZWdpc3RyeSB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNp
emUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVs
ZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkw
KTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJp
dmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9
IGludDsNCiAgICBTeW1ib2xSZWdpc3RyeShjb25zdCBTeW1ib2xSZWdpc3RyeSYpID0gZGVsZXRl
OyBTeW1ib2xSZWdpc3RyeSYgb3BlcmF0b3I9KGNvbnN0IFN5bWJvbFJlZ2lzdHJ5JikgPSBkZWxl
dGU7Ow0KcHVibGljOg0KICAgIFN5bWJvbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0Ow0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSB+U3ltYm9sUmVnaXN0cnkoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBSZWY8UmVnaXN0ZXJlZFN5bWJvbEltcGw+IHN5bWJvbEZvcktleShjb25zdCBTdHJp
bmcmKTsNCg0KICAgIHZvaWQgcmVtb3ZlKFJlZ2lzdGVyZWRTeW1ib2xJbXBsJik7DQoNCnByaXZh
dGU6DQogICAgSGFzaFNldDxTeW1ib2xSZWdpc3RyeUtleT4gbV90YWJsZTsNCn07DQoNCmlubGlu
ZSBTeW1ib2xSZWdpc3RyeUtleTo6U3ltYm9sUmVnaXN0cnlLZXkoU3RyaW5nSW1wbCogdWlkKQ0K
ICAgIDogbV9pbXBsKHVpZCkNCnsNCiAgICBpZiAodWlkLT5pc1N5bWJvbCgpKSB7DQogICAgICAg
IGlmICh1aWQtPmlzOEJpdCgpKQ0KICAgICAgICAgICAgbV9oYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyh1aWQtPmNoYXJhY3RlcnM4KCksIHVpZC0+bGVuZ3Ro
KCkpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBtX2hhc2ggPSBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVpZC0+Y2hhcmFjdGVyczE2KCksIHVpZC0+bGVuZ3Ro
KCkpOw0KICAgIH0gZWxzZQ0KICAgICAgICBtX2hhc2ggPSB1aWQtPmhhc2goKTsNCn0NCg0KaW5s
aW5lIFN5bWJvbFJlZ2lzdHJ5S2V5OjpTeW1ib2xSZWdpc3RyeUtleShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpDQogICAgOiBtX2ltcGwoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpDQp7
DQp9DQoNCn0NCiNsaW5lIDc4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQoNCg0KDQojbGluZSA4MiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KDQoN
Cg0KI2xpbmUgODYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcVk0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDk2ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgi
DQoNCm5hbWVzcGFjZSBXVEYgew0KY2xhc3MgUnVuTG9vcDsNCmNsYXNzIFNpbXBsZVN0YXRzOw0K
fSANCnVzaW5nIFdURjo6U2ltcGxlU3RhdHM7DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBC
dWlsdGluRXhlY3V0YWJsZXM7DQpjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ow0KY2xh
c3MgQ2FsbEZyYW1lOw0Kc3RydWN0IENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlOw0KY2xhc3Mg
Q29kZUJsb2NrOw0KY2xhc3MgQ29kZUNhY2hlOw0KY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7DQpj
bGFzcyBDb21wYWN0VmFyaWFibGVNYXA7DQpjbGFzcyBDb25zZXJ2YXRpdmVSb290czsNCmNsYXNz
IEN1c3RvbUdldHRlclNldHRlcjsNCmNsYXNzIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcjsNCmNs
YXNzIERhdGVJbnN0YW5jZTsNCmNsYXNzIEVycm9ySW5zdGFuY2U7DQpjbGFzcyBFeGNlcHRpb247
DQpjbGFzcyBFeGNlcHRpb25TY29wZTsNCmNsYXNzIEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yOw0KY2xhc3MgR2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOw0KY2xhc3MgSGFu
ZGxlU3RhY2s7DQpjbGFzcyBUeXBlUHJvZmlsZXI7DQpjbGFzcyBUeXBlUHJvZmlsZXJMb2c7DQpj
bGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlOw0KY2xhc3MgSGVhcFByb2ZpbGVyOw0KY2xhc3MgSWRl
bnRpZmllcjsNCmNsYXNzIEludGVycHJldGVyOw0KY2xhc3MgSW50bENvbGxhdG9yOw0KY2xhc3Mg
SW50bERhdGVUaW1lRm9ybWF0Ow0KY2xhc3MgSW50bERpc3BsYXlOYW1lczsNCmNsYXNzIEludGxM
b2NhbGU7DQpjbGFzcyBJbnRsTnVtYmVyRm9ybWF0Ow0KY2xhc3MgSW50bFBsdXJhbFJ1bGVzOw0K
Y2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsNCmNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0Ow0K
Y2xhc3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0Ow0KY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0
Ow0KY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbjsNCmNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjsNCmNsYXNzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb247DQpjbGFzcyBKU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsNCmNsYXNzIEpTR2xvYmFsT2JqZWN0Ow0KY2xhc3MgSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ7DQpjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsN
CmNsYXNzIEpTTW9kdWxlUmVjb3JkOw0KY2xhc3MgSlNOYXRpdmVTdGRGdW5jdGlvbjsNCmNsYXNz
IEpTTm9uRmluYWxPYmplY3Q7DQpjbGFzcyBKU09iamVjdDsNCmNsYXNzIEpTUHJvbWlzZTsNCmNs
YXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsNCmNsYXNzIEpTUnVuTG9vcFRpbWVyOw0KY2xh
c3MgSlNXZWFrTWFwOw0KY2xhc3MgSlNXZWFrU2V0Ow0KY2xhc3MgSlNXZWJBc3NlbWJseUNvZGVC
bG9jazsNCmNsYXNzIEpTV2ViQXNzZW1ibHlHbG9iYWw7DQpjbGFzcyBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U7DQpjbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5Ow0KY2xhc3MgSlNXZWJBc3NlbWJseU1v
ZHVsZTsNCmNsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZTsNCmNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsNCmNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7DQpjbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlv
bjsNCmNsYXNzIERlZmVycmVkV29ya1RpbWVyOw0KY2xhc3MgUmVnRXhwOw0KY2xhc3MgUmVnRXhw
Q2FjaGU7DQpjbGFzcyBSZWdpc3RlcjsNCmNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0Ow0KDQpj
bGFzcyBTYW1wbGluZ1Byb2ZpbGVyOw0KI2xpbmUgMTcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQpjbGFzcyBTaGFkb3dD
aGlja2VuOw0KY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsNCmNsYXNzIFNvdXJjZVByb3ZpZGVyOw0K
Y2xhc3MgU291cmNlUHJvdmlkZXJDYWNoZTsNCmNsYXNzIFN0YWNrRnJhbWU7DQpjbGFzcyBTdHJ1
Y3R1cmU7DQoNCg0KI2xpbmUgMTgxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQpjbGFzcyBTeW1ib2w7DQpjbGFzcyBUeXBl
ZEFycmF5Q29udHJvbGxlcjsNCmNsYXNzIFVubGlua2VkQ29kZUJsb2NrOw0KY2xhc3MgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrOw0KY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7DQpjbGFz
cyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7DQpjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2s7DQpjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7DQpjbGFzcyBWTUVudHJ5U2NvcGU7DQpj
bGFzcyBUb3BMZXZlbEdsb2JhbE9iamVjdFNjb3BlOw0KY2xhc3MgV2F0Y2hkb2c7DQpjbGFzcyBX
YXRjaHBvaW50Ow0KY2xhc3MgV2F0Y2hwb2ludFNldDsNCmNsYXNzIFdlYkFzc2VtYmx5RnVuY3Rp
b247DQpjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDsNCg0KY2xhc3MgSXNvSGVhcENlbGxU
eXBlOw0KdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGU+IGNsYXNzIElzb0lubGluZWRIZWFwQ2Vs
bFR5cGU7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBQYXJlbnQ+IGNsYXNzIEpTQ2FsbGJhY2tPYmplY3Q7
DQoNCg0KDQoNCg0KI2xpbmUgMjA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQpuYW1lc3BhY2UgUHJvZmlsZXIgew0KY2xh
c3MgRGF0YWJhc2U7DQp9DQpuYW1lc3BhY2UgRE9NSklUIHsNCmNsYXNzIFNpZ25hdHVyZTsNCn0N
Cg0Kc3RydWN0IEVudHJ5RnJhbWU7DQpzdHJ1Y3QgSGFzaFRhYmxlOw0Kc3RydWN0IEluc3RydWN0
aW9uOw0Kc3RydWN0IFZhbHVlUHJvZmlsZTsNCg0Kc3RydWN0IExvY2FsVGltZU9mZnNldENhY2hl
IHsNCiAgICBMb2NhbFRpbWVPZmZzZXRDYWNoZSgpDQogICAgICAgIDogc3RhcnQoMC4wKQ0KICAg
ICAgICAsIGVuZCgtMS4wKQ0KICAgICAgICAsIGluY3JlbWVudCgwLjApDQogICAgew0KICAgIH0N
Cg0KICAgIHZvaWQgcmVzZXQoKQ0KICAgIHsNCiAgICAgICAgb2Zmc2V0ID0gTG9jYWxUaW1lT2Zm
c2V0KCk7DQogICAgICAgIHN0YXJ0ID0gMC4wOw0KICAgICAgICBlbmQgPSAtMS4wOw0KICAgICAg
ICBpbmNyZW1lbnQgPSAwLjA7DQogICAgfQ0KDQogICAgTG9jYWxUaW1lT2Zmc2V0IG9mZnNldDsN
CiAgICBkb3VibGUgc3RhcnQ7DQogICAgZG91YmxlIGVuZDsNCiAgICBkb3VibGUgaW5jcmVtZW50
Ow0KfTsNCg0KY2xhc3MgUXVldWVkVGFzayB7DQogICAgUXVldWVkVGFzayhjb25zdCBRdWV1ZWRU
YXNrJikgPSBkZWxldGU7IFF1ZXVlZFRhc2smIG9wZXJhdG9yPShjb25zdCBRdWV1ZWRUYXNrJikg
PSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlv
bjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhp
c0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQog
ICAgdm9pZCBydW4oKTsNCg0KICAgIFF1ZXVlZFRhc2soVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIG1pY3JvdGFzaykNCiAgICAgICAgOiBtX2ds
b2JhbE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0KQ0KICAgICAgICAsIG1fbWljcm90YXNrKHN0ZDo6
bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obWljcm90YXNrKSkNCiAgICB7DQogICAgfQ0K
DQpwcml2YXRlOg0KICAgIFN0cm9uZzxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7DQog
ICAgUmVmPE1pY3JvdGFzaz4gbV9taWNyb3Rhc2s7DQp9Ow0KDQpjbGFzcyBDb25zZXJ2YXRpdmVS
b290czsNCg0KdXNpbmcgVk1NYWxsb2MgPSBGYXN0TWFsbG9jOw0KDQoNCiNwcmFnbWEgd2Fybmlu
ZyhwdXNoKQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQyMDApIA0KI2xpbmUgMjY1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZN
LmgiDQpzdHJ1Y3QgU2NyYXRjaEJ1ZmZlciB7DQogICAgU2NyYXRjaEJ1ZmZlcigpDQogICAgew0K
ICAgICAgICB1Lm1fYWN0aXZlTGVuZ3RoID0gMDsNCiAgICB9DQoNCiAgICBzdGF0aWMgU2NyYXRj
aEJ1ZmZlciogY3JlYXRlKHNpemVfdCBzaXplKQ0KICAgIHsNCiAgICAgICAgU2NyYXRjaEJ1ZmZl
ciogcmVzdWx0ID0gbmV3IChWTU1hbGxvYzo6bWFsbG9jKFNjcmF0Y2hCdWZmZXI6OmFsbG9jYXRp
b25TaXplKHNpemUpKSkgU2NyYXRjaEJ1ZmZlcjsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAg
ICB9DQoNCiAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBi
dWZmZXJTaXplKSB7IHJldHVybiAoc2l6ZW9mKFNjcmF0Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZSku
dW5zYWZlR2V0KCk7IH0NCiAgICB2b2lkIHNldEFjdGl2ZUxlbmd0aChzaXplX3QgYWN0aXZlTGVu
Z3RoKSB7IHUubV9hY3RpdmVMZW5ndGggPSBhY3RpdmVMZW5ndGg7IH0NCiAgICBzaXplX3QgYWN0
aXZlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdS5tX2FjdGl2ZUxlbmd0aDsgfTsNCiAgICBzaXpl
X3QqIGFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpIHsgcmV0dXJuICZ1Lm1fYWN0aXZlTGVuZ3RoOyB9
Ow0KICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQ0KDQogICAgdW5p
b24gew0KICAgICAgICBzaXplX3QgbV9hY3RpdmVMZW5ndGg7DQogICAgICAgIGRvdWJsZSBwYWQ7
IA0KICAgIH0gdTsNCg0KDQojbGluZSAyOTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCiAgICB2b2lkKiBtX2J1ZmZlclsw
XTsNCiNsaW5lIDI5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxWTS5oIg0KfTsNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5l
IDI5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxWTS5oIg0KDQpjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxW
TT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gew0KcHVibGljOg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIGVudW0gVk1UeXBlIHsg
RGVmYXVsdCwgQVBJQ29udGV4dEdyb3VwLCBBUElTaGFyZWQgfTsNCg0KICAgIHN0cnVjdCBDbGll
bnREYXRhIHsNCiAgICAgICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZpcnR1YWwgfkNsaWVudERh
dGEoKSA9IDA7DQogICAgfTsNCg0KICAgIGJvb2wgaXNTaGFyZWRJbnN0YW5jZSgpIHsgcmV0dXJu
IHZtVHlwZSA9PSBBUElTaGFyZWQ7IH0NCiAgICBib29sIHVzaW5nQVBJKCkgeyByZXR1cm4gdm1U
eXBlICE9IERlZmF1bHQ7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wg
c2hhcmVkSW5zdGFuY2VFeGlzdHMoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGlj
IFZNJiBzaGFyZWRJbnN0YW5jZSgpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRp
YyBSZWY8Vk0+IGNyZWF0ZShIZWFwVHlwZSA9IFNtYWxsSGVhcCwgV1RGOjpSdW5Mb29wKiA9IG51
bGxwdHIpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgUmVmUHRyPFZNPiB0cnlD
cmVhdGUoSGVhcFR5cGUgPSBTbWFsbEhlYXAsIFdURjo6UnVuTG9vcCogPSBudWxscHRyKTsNCiAg
ICBzdGF0aWMgUmVmPFZNPiBjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgPSBTbWFsbEhlYXAp
Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB+Vk0oKTsNCg0KICAgIFdhdGNoZG9nJiBlbnN1
cmVXYXRjaGRvZygpOw0KICAgIFdhdGNoZG9nKiB3YXRjaGRvZygpIHsgcmV0dXJuIG1fd2F0Y2hk
b2cuZ2V0KCk7IH0NCg0KICAgIEhlYXBQcm9maWxlciogaGVhcFByb2ZpbGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWFwUHJvZmlsZXIuZ2V0KCk7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
SGVhcFByb2ZpbGVyJiBlbnN1cmVIZWFwUHJvZmlsZXIoKTsNCg0KDQogICAgU2FtcGxpbmdQcm9m
aWxlciogc2FtcGxpbmdQcm9maWxlcigpIHsgcmV0dXJuIG1fc2FtcGxpbmdQcm9maWxlci5nZXQo
KTsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBTYW1wbGluZ1Byb2ZpbGVyJiBlbnN1cmVT
YW1wbGluZ1Byb2ZpbGVyKFJlZjxTdG9wd2F0Y2g+JiYpOw0KI2xpbmUgMzMzICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQoN
CiAgICBGdXp6ZXJBZ2VudCogZnV6emVyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2Z1enplckFn
ZW50LmdldCgpOyB9DQogICAgdm9pZCBzZXRGdXp6ZXJBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8RnV6
emVyQWdlbnQ+JiYgZnV6emVyQWdlbnQpDQogICAgew0KICAgICAgICBkbyB7IGlmICgoISghbV9m
dXp6ZXJBZ2VudCkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGls
ZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMzM3LCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIiwgIF9fRlVO
Q1RJT05fXyAgLCA1MyApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBt
X2Z1enplckFnZW50ID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihmdXp6ZXJB
Z2VudCk7DQogICAgfQ0KDQogICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mSURzKCkgeyByZXR1
cm4gc19udW1iZXJPZklEcy5sb2FkKCk7IH0NCiAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0NCiAgICBib29sIGlzRW50ZXJlZCgpIGNvbnN0IHsgcmV0dXJuICEhZW50cnlT
Y29wZTsgfQ0KDQogICAgaW5saW5lIENhbGxGcmFtZSogdG9wSlNDYWxsRnJhbWUoKSBjb25zdDsN
Cg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU0dsb2JhbE9iamVjdCogZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCg0KICAgIFdl
YWtSYW5kb20mIHJhbmRvbSgpIHsgcmV0dXJuIG1fcmFuZG9tOyB9DQogICAgSW50ZWdyaXR5OjpS
YW5kb20mIGludGVncml0eVJhbmRvbSgpIHsgcmV0dXJuIG1faW50ZWdyaXR5UmFuZG9tOyB9DQoN
CnByaXZhdGU6DQogICAgdW5zaWduZWQgbmV4dElEKCk7DQoNCiAgICBzdGF0aWMgQXRvbWljPHVu
c2lnbmVkPiBzX251bWJlck9mSURzOw0KDQogICAgdW5zaWduZWQgbV9pZDsNCiAgICBSZWZQdHI8
SlNMb2NrPiBtX2FwaUxvY2s7DQogICAgUmVmPFdURjo6UnVuTG9vcD4gbV9ydW5Mb29wOw0KDQog
ICAgV2Vha1JhbmRvbSBtX3JhbmRvbTsNCiAgICBJbnRlZ3JpdHk6OlJhbmRvbSBtX2ludGVncml0
eVJhbmRvbTsNCg0KcHVibGljOg0KICAgIEhlYXAgaGVhcDsNCiAgICANCiAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IGZhc3RNYWxsb2NBbGxvY2F0
b3I7DQogICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4g
cHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3I7DQogICAgc3RkOjp1bmlxdWVfcHRyPEdpZ2FjYWdl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4ganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yOw0KDQogICAg
c3RkOjp1bmlxdWVfcHRyPEhlYXBDZWxsVHlwZT4gYXV4aWxpYXJ5SGVhcENlbGxUeXBlOw0KICAg
IHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxs
VHlwZTsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcENlbGxUeXBlPiBjZWxsSGVhcENlbGxUeXBl
Ow0KICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGU7DQogICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gYXBpR2xvYmFs
T2JqZWN0SGVhcENlbGxUeXBlOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGNhbGxiYWNrQ29uc3RydWN0b3JIZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1bmlxdWVfcHRyPElz
b0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tHbG9iYWxPYmplY3RIZWFwQ2VsbFR5cGU7DQogICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gY2FsbGJhY2tPYmplY3RIZWFwQ2VsbFR5cGU7
DQogICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZGF0ZUluc3RhbmNlSGVhcENl
bGxUeXBlOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGVycm9ySW5zdGFu
Y2VIZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZmlu
YWxpemF0aW9uUmVnaXN0cnlDZWxsVHlwZTsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRIZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gZ2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlOw0KICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGluamVjdGVkU2NyaXB0SG9zdFNwYWNl
SGVhcENlbGxUeXBlOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGphdmFT
Y3JpcHRDYWxsRnJhbWVIZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4ganNNb2R1bGVSZWNvcmRIZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gbW9kdWxlTmFtZXNwYWNlT2JqZWN0SGVhcENlbGxUeXBlOw0KICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IG5hdGl2ZVN0ZEZ1bmN0aW9uSGVhcENl
bGxUeXBlOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29JbmxpbmVkSGVhcENlbGxUeXBlPEpTU3Ry
aW5nPj4gc3RyaW5nSGVhcENlbGxUeXBlOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IHdlYWtNYXBIZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBD
ZWxsVHlwZT4gd2Vha1NldEhlYXBDZWxsVHlwZTsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlw
ZTsNCg0KDQoNCiNsaW5lIDM5OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KDQoNCg0KDQoNCiAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBl
Ow0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxEaXNwbGF5TmFtZXNI
ZWFwQ2VsbFR5cGU7DQogICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExv
Y2FsZUhlYXBDZWxsVHlwZTsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBp
bnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFw
Q2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsNCiAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOw0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDIwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQogICAgDQogICAgQ29tcGxldGVT
dWJzcGFjZSBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyANCiAgICBDb21wbGV0ZVN1
YnNwYWNlIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyANCiAgICBDb21wbGV0ZVN1YnNw
YWNlIGltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOyANCg0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUgQ29t
cGxldGVTdWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5k
KQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChraW5kKSB7DQogICAgICAgIGNhc2UgR2lnYWNhZ2U6
OlByaW1pdGl2ZToNCiAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFy
eVNwYWNlOw0KICAgICAgICBjYXNlIEdpZ2FjYWdlOjpKU1ZhbHVlOg0KICAgICAgICAgICAgcmV0
dXJuIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOw0KICAgICAgICBjYXNlIEdpZ2FjYWdl
OjpOdW1iZXJPZktpbmRzOg0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAg
ZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFz
aCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQ0MSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCIsICBfX0ZVTkNUSU9OX18gICwgNTQg
KTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZTsNCiAgICB9DQogICAgDQogICAgDQogICAgQ29tcGxldGVTdWJzcGFjZSBjZWxs
U3BhY2U7DQogICAgQ29tcGxldGVTdWJzcGFjZSB2YXJpYWJsZVNpemVkQ2VsbFNwYWNlOyANCiAg
ICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZU9iamVjdFNwYWNlOw0KICAgIA0KICAgIElz
b1N1YnNwYWNlIGFycmF5U3BhY2U7DQogICAgSXNvU3Vic3BhY2UgYmlnSW50U3BhY2U7DQogICAg
SXNvU3Vic3BhY2UgY2FsbGVlU3BhY2U7DQogICAgSXNvU3Vic3BhY2UgY2xvbmVkQXJndW1lbnRz
U3BhY2U7DQogICAgSXNvU3Vic3BhY2UgY3VzdG9tR2V0dGVyU2V0dGVyU3BhY2U7DQogICAgSXNv
U3Vic3BhY2UgZGF0ZUluc3RhbmNlU3BhY2U7DQogICAgSXNvU3Vic3BhY2UgZG9tQXR0cmlidXRl
R2V0dGVyU2V0dGVyU3BhY2U7DQogICAgSXNvU3Vic3BhY2UgZXhjZXB0aW9uU3BhY2U7DQogICAg
SXNvU3Vic3BhY2UgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOw0KICAgIElzb1N1YnNw
YWNlIGZ1bmN0aW9uU3BhY2U7DQogICAgSXNvU3Vic3BhY2UgZ2V0dGVyU2V0dGVyU3BhY2U7DQog
ICAgSXNvU3Vic3BhY2UgZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50U3BhY2U7DQogICAgSXNvU3Vi
c3BhY2UgaW50ZXJuYWxGdW5jdGlvblNwYWNlOw0KICAgIElzb1N1YnNwYWNlIGpzUHJveHlTcGFj
ZTsNCiAgICBJc29TdWJzcGFjZSBuYXRpdmVFeGVjdXRhYmxlU3BhY2U7DQogICAgSXNvU3Vic3Bh
Y2UgbnVtYmVyT2JqZWN0U3BhY2U7DQogICAgSXNvU3Vic3BhY2UgcGxhaW5PYmplY3RTcGFjZTsN
CiAgICBJc29TdWJzcGFjZSBwcm9taXNlU3BhY2U7DQogICAgSXNvU3Vic3BhY2UgcHJvcGVydHlO
YW1lRW51bWVyYXRvclNwYWNlOw0KICAgIElzb1N1YnNwYWNlIHByb3BlcnR5VGFibGVTcGFjZTsN
CiAgICBJc29TdWJzcGFjZSByZWdFeHBTcGFjZTsNCiAgICBJc29TdWJzcGFjZSByZWdFeHBPYmpl
Y3RTcGFjZTsNCiAgICBJc29TdWJzcGFjZSByb3BlU3RyaW5nU3BhY2U7DQogICAgSXNvU3Vic3Bh
Y2Ugc2NvcGVkQXJndW1lbnRzU3BhY2U7DQogICAgSXNvU3Vic3BhY2Ugc3BhcnNlQXJyYXlWYWx1
ZU1hcFNwYWNlOw0KICAgIElzb1N1YnNwYWNlIHN0cmluZ1NwYWNlOw0KICAgIElzb1N1YnNwYWNl
IHN0cmluZ09iamVjdFNwYWNlOw0KICAgIElzb1N1YnNwYWNlIHN0cnVjdHVyZUNoYWluU3BhY2U7
DQogICAgSXNvU3Vic3BhY2Ugc3RydWN0dXJlUmFyZURhdGFTcGFjZTsNCiAgICBJc29TdWJzcGFj
ZSBzdHJ1Y3R1cmVTcGFjZTsNCiAgICBJc29TdWJzcGFjZSBzeW1ib2xUYWJsZVNwYWNlOw0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0OTggIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCg0KDQoNCg0K
DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIGFwaUdsb2Jh
bE9iamVjdFNwYWNlKCkgeyBpZiAobV9hcGlHbG9iYWxPYmplY3RTcGFjZSB8fCBtb2RlID09IFN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX2FwaUdsb2JhbE9iamVjdFNwYWNl
LmdldCgpOyByZXR1cm4gYXBpR2xvYmFsT2JqZWN0U3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhk
bGxleHBvcnQpIElzb1N1YnNwYWNlKiBhcGlHbG9iYWxPYmplY3RTcGFjZVNsb3coKTsgc3RkOjp1
bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2FwaUdsb2JhbE9iamVjdFNwYWNlOw0KICAgIHRlbXBs
YXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBhcGlWYWx1ZVdyYXBwZXJTcGFj
ZSgpIHsgaWYgKG1fYXBpVmFsdWVXcmFwcGVyU3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9hcGlWYWx1ZVdyYXBwZXJTcGFjZS5nZXQoKTsgcmV0
dXJuIGFwaVZhbHVlV3JhcHBlclNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJ
c29TdWJzcGFjZSogYXBpVmFsdWVXcmFwcGVyU3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJ
c29TdWJzcGFjZT4gbV9hcGlWYWx1ZVdyYXBwZXJTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogYXJyYXlCdWZmZXJTcGFjZSgpIHsgaWYgKG1fYXJy
YXlCdWZmZXJTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJl
dHVybiBtX2FycmF5QnVmZmVyU3BhY2UuZ2V0KCk7IHJldHVybiBhcnJheUJ1ZmZlclNwYWNlU2xv
dygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogYXJyYXlCdWZmZXJTcGFj
ZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2FycmF5QnVmZmVyU3BhY2U7
DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIGFycmF5SXRl
cmF0b3JTcGFjZSgpIHsgaWYgKG1fYXJyYXlJdGVyYXRvclNwYWNlIHx8IG1vZGUgPT0gU3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclNwYWNlLmdldCgp
OyByZXR1cm4gYXJyYXlJdGVyYXRvclNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBJc29TdWJzcGFjZSogYXJyYXlJdGVyYXRvclNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8
SXNvU3Vic3BhY2U+IG1fYXJyYXlJdGVyYXRvclNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNl
QWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBhc3luY0dlbmVyYXRvclNwYWNlKCkgeyBpZiAobV9h
c3luY0dlbmVyYXRvclNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRs
eSkgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JTcGFjZS5nZXQoKTsgcmV0dXJuIGFzeW5jR2VuZXJh
dG9yU3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBhc3lu
Y0dlbmVyYXRvclNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fYXN5
bmNHZW5lcmF0b3JTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29T
dWJzcGFjZSogYmlnSW50T2JqZWN0U3BhY2UoKSB7IGlmIChtX2JpZ0ludE9iamVjdFNwYWNlIHx8
IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fYmlnSW50T2Jq
ZWN0U3BhY2UuZ2V0KCk7IHJldHVybiBiaWdJbnRPYmplY3RTcGFjZVNsb3coKTsgfSBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIGJpZ0ludE9iamVjdFNwYWNlU2xvdygpOyBzdGQ6
OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fYmlnSW50T2JqZWN0U3BhY2U7DQogICAgdGVtcGxh
dGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIGJvb2xlYW5PYmplY3RTcGFjZSgp
IHsgaWYgKG1fYm9vbGVhbk9iamVjdFNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkgcmV0dXJuIG1fYm9vbGVhbk9iamVjdFNwYWNlLmdldCgpOyByZXR1cm4gYm9v
bGVhbk9iamVjdFNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFj
ZSogYm9vbGVhbk9iamVjdFNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+
IG1fYm9vbGVhbk9iamVjdFNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+
IElzb1N1YnNwYWNlKiBib3VuZEZ1bmN0aW9uU3BhY2UoKSB7IGlmIChtX2JvdW5kRnVuY3Rpb25T
cGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX2Jv
dW5kRnVuY3Rpb25TcGFjZS5nZXQoKTsgcmV0dXJuIGJvdW5kRnVuY3Rpb25TcGFjZVNsb3coKTsg
fSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIGJvdW5kRnVuY3Rpb25TcGFjZVNs
b3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2JvdW5kRnVuY3Rpb25TcGFjZTsN
CiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogY2FsbGJhY2tD
b25zdHJ1Y3RvclNwYWNlKCkgeyBpZiAobV9jYWxsYmFja0NvbnN0cnVjdG9yU3BhY2UgfHwgbW9k
ZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9jYWxsYmFja0NvbnN0
cnVjdG9yU3BhY2UuZ2V0KCk7IHJldHVybiBjYWxsYmFja0NvbnN0cnVjdG9yU3BhY2VTbG93KCk7
IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBjYWxsYmFja0NvbnN0cnVjdG9y
U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9jYWxsYmFja0NvbnN0
cnVjdG9yU3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3Bh
Y2UqIGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UoKSB7IGlmIChtX2NhbGxiYWNrR2xvYmFsT2Jq
ZWN0U3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4g
bV9jYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlLmdldCgpOyByZXR1cm4gY2FsbGJhY2tHbG9iYWxP
YmplY3RTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIGNh
bGxiYWNrR2xvYmFsT2JqZWN0U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFj
ZT4gbV9jYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNj
ZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBjYWxsYmFja0Z1bmN0aW9uU3BhY2UoKSB7IGlmIChtX2Nh
bGxiYWNrRnVuY3Rpb25TcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpIHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TcGFjZS5nZXQoKTsgcmV0dXJuIGNhbGxiYWNr
RnVuY3Rpb25TcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2Uq
IGNhbGxiYWNrRnVuY3Rpb25TcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNl
PiBtX2NhbGxiYWNrRnVuY3Rpb25TcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBt
b2RlPiBJc29TdWJzcGFjZSogY2FsbGJhY2tPYmplY3RTcGFjZSgpIHsgaWYgKG1fY2FsbGJhY2tP
YmplY3RTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVy
biBtX2NhbGxiYWNrT2JqZWN0U3BhY2UuZ2V0KCk7IHJldHVybiBjYWxsYmFja09iamVjdFNwYWNl
U2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogY2FsbGJhY2tPYmpl
Y3RTcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2NhbGxiYWNrT2Jq
ZWN0U3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2Uq
IGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2UoKSB7IGlmIChtX2N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uU3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5
KSByZXR1cm4gbV9jdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlLmdldCgpOyByZXR1cm4g
Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgSXNvU3Vic3BhY2UqIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2VTbG93KCk7
IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9jdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
blNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBk
YXRhVmlld1NwYWNlKCkgeyBpZiAobV9kYXRhVmlld1NwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VB
Y2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fZGF0YVZpZXdTcGFjZS5nZXQoKTsgcmV0dXJu
IGRhdGFWaWV3U3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNl
KiBkYXRhVmlld1NwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fZGF0
YVZpZXdTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFj
ZSogZGVidWdnZXJTY29wZVNwYWNlKCkgeyBpZiAobV9kZWJ1Z2dlclNjb3BlU3BhY2UgfHwgbW9k
ZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9kZWJ1Z2dlclNjb3Bl
U3BhY2UuZ2V0KCk7IHJldHVybiBkZWJ1Z2dlclNjb3BlU3BhY2VTbG93KCk7IH0gX19kZWNsc3Bl
YyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBkZWJ1Z2dlclNjb3BlU3BhY2VTbG93KCk7IHN0ZDo6
dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9kZWJ1Z2dlclNjb3BlU3BhY2U7DQogICAgdGVtcGxh
dGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIGVycm9ySW5zdGFuY2VTcGFjZSgp
IHsgaWYgKG1fZXJyb3JJbnN0YW5jZVNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkgcmV0dXJuIG1fZXJyb3JJbnN0YW5jZVNwYWNlLmdldCgpOyByZXR1cm4gZXJy
b3JJbnN0YW5jZVNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFj
ZSogZXJyb3JJbnN0YW5jZVNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+
IG1fZXJyb3JJbnN0YW5jZVNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+
IElzb1N1YnNwYWNlKiBmbG9hdDMyQXJyYXlTcGFjZSgpIHsgaWYgKG1fZmxvYXQzMkFycmF5U3Bh
Y2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9mbG9h
dDMyQXJyYXlTcGFjZS5nZXQoKTsgcmV0dXJuIGZsb2F0MzJBcnJheVNwYWNlU2xvdygpOyB9IF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogZmxvYXQzMkFycmF5U3BhY2VTbG93KCk7
IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9mbG9hdDMyQXJyYXlTcGFjZTsNCiAgICB0
ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogZmxvYXQ2NEFycmF5U3Bh
Y2UoKSB7IGlmIChtX2Zsb2F0NjRBcnJheVNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fZmxvYXQ2NEFycmF5U3BhY2UuZ2V0KCk7IHJldHVybiBm
bG9hdDY0QXJyYXlTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3Bh
Y2UqIGZsb2F0NjRBcnJheVNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+
IG1fZmxvYXQ2NEFycmF5U3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
SXNvU3Vic3BhY2UqIGZ1bmN0aW9uUmFyZURhdGFTcGFjZSgpIHsgaWYgKG1fZnVuY3Rpb25SYXJl
RGF0YVNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJu
IG1fZnVuY3Rpb25SYXJlRGF0YVNwYWNlLmdldCgpOyByZXR1cm4gZnVuY3Rpb25SYXJlRGF0YVNw
YWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogZnVuY3Rpb25S
YXJlRGF0YVNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fZnVuY3Rp
b25SYXJlRGF0YVNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1
YnNwYWNlKiBnZW5lcmF0b3JTcGFjZSgpIHsgaWYgKG1fZ2VuZXJhdG9yU3BhY2UgfHwgbW9kZSA9
PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9nZW5lcmF0b3JTcGFjZS5n
ZXQoKTsgcmV0dXJuIGdlbmVyYXRvclNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBJc29TdWJzcGFjZSogZ2VuZXJhdG9yU3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29T
dWJzcGFjZT4gbV9nZW5lcmF0b3JTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBt
b2RlPiBJc29TdWJzcGFjZSogZ2xvYmFsT2JqZWN0U3BhY2UoKSB7IGlmIChtX2dsb2JhbE9iamVj
dFNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1f
Z2xvYmFsT2JqZWN0U3BhY2UuZ2V0KCk7IHJldHVybiBnbG9iYWxPYmplY3RTcGFjZVNsb3coKTsg
fSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIGdsb2JhbE9iamVjdFNwYWNlU2xv
dygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fZ2xvYmFsT2JqZWN0U3BhY2U7DQog
ICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIGluamVjdGVkU2Ny
aXB0SG9zdFNwYWNlKCkgeyBpZiAobV9pbmplY3RlZFNjcmlwdEhvc3RTcGFjZSB8fCBtb2RlID09
IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX2luamVjdGVkU2NyaXB0SG9z
dFNwYWNlLmdldCgpOyByZXR1cm4gaW5qZWN0ZWRTY3JpcHRIb3N0U3BhY2VTbG93KCk7IH0gX19k
ZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBpbmplY3RlZFNjcmlwdEhvc3RTcGFjZVNs
b3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2luamVjdGVkU2NyaXB0SG9zdFNw
YWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBpbnQ4
QXJyYXlTcGFjZSgpIHsgaWYgKG1faW50OEFycmF5U3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9pbnQ4QXJyYXlTcGFjZS5nZXQoKTsgcmV0dXJu
IGludDhBcnJheVNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFj
ZSogaW50OEFycmF5U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9p
bnQ4QXJyYXlTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJz
cGFjZSogaW50MTZBcnJheVNwYWNlKCkgeyBpZiAobV9pbnQxNkFycmF5U3BhY2UgfHwgbW9kZSA9
PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9pbnQxNkFycmF5U3BhY2Uu
Z2V0KCk7IHJldHVybiBpbnQxNkFycmF5U3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBv
cnQpIElzb1N1YnNwYWNlKiBpbnQxNkFycmF5U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJ
c29TdWJzcGFjZT4gbV9pbnQxNkFycmF5U3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nl
c3MgbW9kZT4gSXNvU3Vic3BhY2UqIGludDMyQXJyYXlTcGFjZSgpIHsgaWYgKG1faW50MzJBcnJh
eVNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1f
aW50MzJBcnJheVNwYWNlLmdldCgpOyByZXR1cm4gaW50MzJBcnJheVNwYWNlU2xvdygpOyB9IF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogaW50MzJBcnJheVNwYWNlU2xvdygpOyBz
dGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1faW50MzJBcnJheVNwYWNlOw0KICAgIHRlbXBs
YXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBqYXZhU2NyaXB0Q2FsbEZyYW1l
U3BhY2UoKSB7IGlmIChtX2phdmFTY3JpcHRDYWxsRnJhbWVTcGFjZSB8fCBtb2RlID09IFN1YnNw
YWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX2phdmFTY3JpcHRDYWxsRnJhbWVTcGFj
ZS5nZXQoKTsgcmV0dXJuIGphdmFTY3JpcHRDYWxsRnJhbWVTcGFjZVNsb3coKTsgfSBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIGphdmFTY3JpcHRDYWxsRnJhbWVTcGFjZVNsb3co
KTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2phdmFTY3JpcHRDYWxsRnJhbWVTcGFj
ZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSoganNNb2R1
bGVSZWNvcmRTcGFjZSgpIHsgaWYgKG1fanNNb2R1bGVSZWNvcmRTcGFjZSB8fCBtb2RlID09IFN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX2pzTW9kdWxlUmVjb3JkU3BhY2Uu
Z2V0KCk7IHJldHVybiBqc01vZHVsZVJlY29yZFNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBJc29TdWJzcGFjZSoganNNb2R1bGVSZWNvcmRTcGFjZVNsb3coKTsgc3RkOjp1bmlx
dWVfcHRyPElzb1N1YnNwYWNlPiBtX2pzTW9kdWxlUmVjb3JkU3BhY2U7DQogICAgdGVtcGxhdGU8
U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIG1hcEJ1Y2tldFNwYWNlKCkgeyBpZiAo
bV9tYXBCdWNrZXRTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
IHJldHVybiBtX21hcEJ1Y2tldFNwYWNlLmdldCgpOyByZXR1cm4gbWFwQnVja2V0U3BhY2VTbG93
KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBtYXBCdWNrZXRTcGFjZVNs
b3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX21hcEJ1Y2tldFNwYWNlOw0KICAg
IHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBtYXBJdGVyYXRvclNw
YWNlKCkgeyBpZiAobV9tYXBJdGVyYXRvclNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fbWFwSXRlcmF0b3JTcGFjZS5nZXQoKTsgcmV0dXJuIG1h
cEl0ZXJhdG9yU3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNl
KiBtYXBJdGVyYXRvclNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1f
bWFwSXRlcmF0b3JTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29T
dWJzcGFjZSogbWFwU3BhY2UoKSB7IGlmIChtX21hcFNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VB
Y2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fbWFwU3BhY2UuZ2V0KCk7IHJldHVybiBtYXBT
cGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIG1hcFNwYWNl
U2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fbWFwU3BhY2U7DQogICAgdGVt
cGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIG1vZHVsZU5hbWVzcGFjZU9i
amVjdFNwYWNlKCkgeyBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTcGFjZSB8fCBtb2RlID09
IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9i
amVjdFNwYWNlLmdldCgpOyByZXR1cm4gbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3BhY2VTbG93KCk7
IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX21vZHVsZU5hbWVz
cGFjZU9iamVjdFNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1
YnNwYWNlKiBuYXRpdmVTdGRGdW5jdGlvblNwYWNlKCkgeyBpZiAobV9uYXRpdmVTdGRGdW5jdGlv
blNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1f
bmF0aXZlU3RkRnVuY3Rpb25TcGFjZS5nZXQoKTsgcmV0dXJuIG5hdGl2ZVN0ZEZ1bmN0aW9uU3Bh
Y2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBuYXRpdmVTdGRG
dW5jdGlvblNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fbmF0aXZl
U3RkRnVuY3Rpb25TcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29T
dWJzcGFjZSogcHJveHlPYmplY3RTcGFjZSgpIHsgaWYgKG1fcHJveHlPYmplY3RTcGFjZSB8fCBt
b2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX3Byb3h5T2JqZWN0
U3BhY2UuZ2V0KCk7IHJldHVybiBwcm94eU9iamVjdFNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogcHJveHlPYmplY3RTcGFjZVNsb3coKTsgc3RkOjp1bmlx
dWVfcHRyPElzb1N1YnNwYWNlPiBtX3Byb3h5T2JqZWN0U3BhY2U7DQogICAgdGVtcGxhdGU8U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIHByb3h5UmV2b2tlU3BhY2UoKSB7IGlmICht
X3Byb3h5UmV2b2tlU3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5
KSByZXR1cm4gbV9wcm94eVJldm9rZVNwYWNlLmdldCgpOyByZXR1cm4gcHJveHlSZXZva2VTcGFj
ZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIHByb3h5UmV2b2tl
U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9wcm94eVJldm9rZVNw
YWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBzY29w
ZWRBcmd1bWVudHNUYWJsZVNwYWNlKCkgeyBpZiAobV9zY29wZWRBcmd1bWVudHNUYWJsZVNwYWNl
IHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fc2NvcGVk
QXJndW1lbnRzVGFibGVTcGFjZS5nZXQoKTsgcmV0dXJuIHNjb3BlZEFyZ3VtZW50c1RhYmxlU3Bh
Y2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBzY29wZWRBcmd1
bWVudHNUYWJsZVNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fc2Nv
cGVkQXJndW1lbnRzVGFibGVTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBJc29TdWJzcGFjZSogc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UoKSB7IGlmIChtX3Njcmlw
dEZldGNoUGFyYW1ldGVyc1NwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkgcmV0dXJuIG1fc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2UuZ2V0KCk7IHJldHVybiBz
Y3JpcHRGZXRjaFBhcmFtZXRlcnNTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
SXNvU3Vic3BhY2UqIHNjcmlwdEZldGNoUGFyYW1ldGVyc1NwYWNlU2xvdygpOyBzdGQ6OnVuaXF1
ZV9wdHI8SXNvU3Vic3BhY2U+IG1fc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3BhY2U7DQogICAgdGVt
cGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIHNjcmlwdEZldGNoZXJTcGFj
ZSgpIHsgaWYgKG1fc2NyaXB0RmV0Y2hlclNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fc2NyaXB0RmV0Y2hlclNwYWNlLmdldCgpOyByZXR1cm4g
c2NyaXB0RmV0Y2hlclNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJz
cGFjZSogc2NyaXB0RmV0Y2hlclNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3Bh
Y2U+IG1fc2NyaXB0RmV0Y2hlclNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1v
ZGU+IElzb1N1YnNwYWNlKiBzZXRCdWNrZXRTcGFjZSgpIHsgaWYgKG1fc2V0QnVja2V0U3BhY2Ug
fHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9zZXRCdWNr
ZXRTcGFjZS5nZXQoKTsgcmV0dXJuIHNldEJ1Y2tldFNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogc2V0QnVja2V0U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVl
X3B0cjxJc29TdWJzcGFjZT4gbV9zZXRCdWNrZXRTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFj
ZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogc2V0SXRlcmF0b3JTcGFjZSgpIHsgaWYgKG1fc2V0
SXRlcmF0b3JTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJl
dHVybiBtX3NldEl0ZXJhdG9yU3BhY2UuZ2V0KCk7IHJldHVybiBzZXRJdGVyYXRvclNwYWNlU2xv
dygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogc2V0SXRlcmF0b3JTcGFj
ZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX3NldEl0ZXJhdG9yU3BhY2U7
DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIHNldFNwYWNl
KCkgeyBpZiAobV9zZXRTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpIHJldHVybiBtX3NldFNwYWNlLmdldCgpOyByZXR1cm4gc2V0U3BhY2VTbG93KCk7IH0gX19k
ZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBzZXRTcGFjZVNsb3coKTsgc3RkOjp1bmlx
dWVfcHRyPElzb1N1YnNwYWNlPiBtX3NldFNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNj
ZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlKCkgeyBpZiAo
bV9zdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNv
bmN1cnJlbnRseSkgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZS5nZXQoKTsgcmV0
dXJuIHN0cmljdEV2YWxBY3RpdmF0aW9uU3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBv
cnQpIElzb1N1YnNwYWNlKiBzdHJpY3RFdmFsQWN0aXZhdGlvblNwYWNlU2xvdygpOyBzdGQ6OnVu
aXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TcGFjZTsNCiAgICB0
ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogc3RyaW5nSXRlcmF0b3JT
cGFjZSgpIHsgaWYgKG1fc3RyaW5nSXRlcmF0b3JTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNj
ZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX3N0cmluZ0l0ZXJhdG9yU3BhY2UuZ2V0KCk7IHJl
dHVybiBzdHJpbmdJdGVyYXRvclNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJ
c29TdWJzcGFjZSogc3RyaW5nSXRlcmF0b3JTcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElz
b1N1YnNwYWNlPiBtX3N0cmluZ0l0ZXJhdG9yU3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VB
Y2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIHNvdXJjZUNvZGVTcGFjZSgpIHsgaWYgKG1fc291cmNl
Q29kZVNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJu
IG1fc291cmNlQ29kZVNwYWNlLmdldCgpOyByZXR1cm4gc291cmNlQ29kZVNwYWNlU2xvdygpOyB9
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogc291cmNlQ29kZVNwYWNlU2xvdygp
OyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fc291cmNlQ29kZVNwYWNlOw0KICAgIHRl
bXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBzeW1ib2xTcGFjZSgpIHsg
aWYgKG1fc3ltYm9sU3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5
KSByZXR1cm4gbV9zeW1ib2xTcGFjZS5nZXQoKTsgcmV0dXJuIHN5bWJvbFNwYWNlU2xvdygpOyB9
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogc3ltYm9sU3BhY2VTbG93KCk7IHN0
ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9zeW1ib2xTcGFjZTsNCiAgICB0ZW1wbGF0ZTxT
dWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogc3ltYm9sT2JqZWN0U3BhY2UoKSB7IGlm
IChtX3N5bWJvbE9iamVjdFNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3BhY2UuZ2V0KCk7IHJldHVybiBzeW1ib2xPYmpl
Y3RTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIHN5bWJv
bE9iamVjdFNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fc3ltYm9s
T2JqZWN0U3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3Bh
Y2UqIHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKCkgeyBpZiAobV90ZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3JTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
IHJldHVybiBtX3RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLmdldCgpOyByZXR1cm4gdGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQp
IElzb1N1YnNwYWNlKiB0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZVNsb3coKTsgc3RkOjp1
bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX3RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlOw0K
ICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiB1aW50OEFycmF5
U3BhY2UoKSB7IGlmIChtX3VpbnQ4QXJyYXlTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpIHJldHVybiBtX3VpbnQ4QXJyYXlTcGFjZS5nZXQoKTsgcmV0dXJuIHVp
bnQ4QXJyYXlTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2Uq
IHVpbnQ4QXJyYXlTcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX3Vp
bnQ4QXJyYXlTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJz
cGFjZSogdWludDhDbGFtcGVkQXJyYXlTcGFjZSgpIHsgaWYgKG1fdWludDhDbGFtcGVkQXJyYXlT
cGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX3Vp
bnQ4Q2xhbXBlZEFycmF5U3BhY2UuZ2V0KCk7IHJldHVybiB1aW50OENsYW1wZWRBcnJheVNwYWNl
U2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogdWludDhDbGFtcGVk
QXJyYXlTcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX3VpbnQ4Q2xh
bXBlZEFycmF5U3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vi
c3BhY2UqIHVpbnQxNkFycmF5U3BhY2UoKSB7IGlmIChtX3VpbnQxNkFycmF5U3BhY2UgfHwgbW9k
ZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV91aW50MTZBcnJheVNw
YWNlLmdldCgpOyByZXR1cm4gdWludDE2QXJyYXlTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgSXNvU3Vic3BhY2UqIHVpbnQxNkFycmF5U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVl
X3B0cjxJc29TdWJzcGFjZT4gbV91aW50MTZBcnJheVNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNw
YWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiB1aW50MzJBcnJheVNwYWNlKCkgeyBpZiAobV91
aW50MzJBcnJheVNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkg
cmV0dXJuIG1fdWludDMyQXJyYXlTcGFjZS5nZXQoKTsgcmV0dXJuIHVpbnQzMkFycmF5U3BhY2VT
bG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiB1aW50MzJBcnJheVNw
YWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fdWludDMyQXJyYXlTcGFj
ZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogdW5saW5r
ZWRFdmFsQ29kZUJsb2NrU3BhY2UoKSB7IGlmIChtX3VubGlua2VkRXZhbENvZGVCbG9ja1NwYWNl
IHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrU3BhY2UuZ2V0KCk7IHJldHVybiB1bmxpbmtlZEV2YWxDb2RlQmxvY2tT
cGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIHVubGlua2Vk
RXZhbENvZGVCbG9ja1NwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrU3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gSXNvU3Vic3BhY2UqIHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTcGFjZSgpIHsgaWYg
KG1fdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nl
c3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNl
LmdldCgpOyByZXR1cm4gdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9ja1NwYWNlU2xvdygpOyB9IF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogdW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
a1NwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fdW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9ja1NwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElz
b1N1YnNwYWNlKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZSgpIHsgaWYgKG1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2tTcGFjZS5nZXQoKTsgcmV0dXJuIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1NwYWNl
U2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrU3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFj
ZT4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTcGFjZTsNCiAgICB0ZW1wbGF0ZTxT
dWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogdW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
U3BhY2UoKSB7IGlmIChtX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1NwYWNlIHx8IG1vZGUgPT0g
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fdW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrU3BhY2UuZ2V0KCk7IHJldHVybiB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTcGFjZVNs
b3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIHVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9ja1NwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1fdW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrU3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gSXNvU3Vic3BhY2UqIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UoKSB7IGlmIChtX2Zp
bmFsaXphdGlvblJlZ2lzdHJ5U3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3Vy
cmVudGx5KSByZXR1cm4gbV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlLmdldCgpOyByZXR1cm4g
ZmluYWxpemF0aW9uUmVnaXN0cnlTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
SXNvU3Vic3BhY2UqIGZpbmFsaXphdGlvblJlZ2lzdHJ5U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVl
X3B0cjxJc29TdWJzcGFjZT4gbV9maW5hbGl6YXRpb25SZWdpc3RyeVNwYWNlOw0KICAgIHRlbXBs
YXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiB3ZWFrT2JqZWN0UmVmU3BhY2Uo
KSB7IGlmIChtX3dlYWtPYmplY3RSZWZTcGFjZSB8fCBtb2RlID09IFN1YnNwYWNlQWNjZXNzOjpD
b25jdXJyZW50bHkpIHJldHVybiBtX3dlYWtPYmplY3RSZWZTcGFjZS5nZXQoKTsgcmV0dXJuIHdl
YWtPYmplY3RSZWZTcGFjZVNsb3coKTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3Bh
Y2UqIHdlYWtPYmplY3RSZWZTcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNl
PiBtX3dlYWtPYmplY3RSZWZTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBJc29TdWJzcGFjZSogd2Vha1NldFNwYWNlKCkgeyBpZiAobV93ZWFrU2V0U3BhY2UgfHwgbW9k
ZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV93ZWFrU2V0U3BhY2Uu
Z2V0KCk7IHJldHVybiB3ZWFrU2V0U3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQp
IElzb1N1YnNwYWNlKiB3ZWFrU2V0U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJz
cGFjZT4gbV93ZWFrU2V0U3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
SXNvU3Vic3BhY2UqIHdlYWtNYXBTcGFjZSgpIHsgaWYgKG1fd2Vha01hcFNwYWNlIHx8IG1vZGUg
PT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1fd2Vha01hcFNwYWNlLmdl
dCgpOyByZXR1cm4gd2Vha01hcFNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJ
c29TdWJzcGFjZSogd2Vha01hcFNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3Bh
Y2U+IG1fd2Vha01hcFNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElz
b1N1YnNwYWNlKiB3aXRoU2NvcGVTcGFjZSgpIHsgaWYgKG1fd2l0aFNjb3BlU3BhY2UgfHwgbW9k
ZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV93aXRoU2NvcGVTcGFj
ZS5nZXQoKTsgcmV0dXJuIHdpdGhTY29wZVNwYWNlU2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBJc29TdWJzcGFjZSogd2l0aFNjb3BlU3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJ
c29TdWJzcGFjZT4gbV93aXRoU2NvcGVTcGFjZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBJc29TdWJzcGFjZSogaW50bENvbGxhdG9yU3BhY2UoKSB7IGlmIChtX2ludGxDb2xs
YXRvclNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJu
IG1faW50bENvbGxhdG9yU3BhY2UuZ2V0KCk7IHJldHVybiBpbnRsQ29sbGF0b3JTcGFjZVNsb3co
KTsgfSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIGludGxDb2xsYXRvclNwYWNl
U2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1faW50bENvbGxhdG9yU3BhY2U7
DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIGludGxEYXRl
VGltZUZvcm1hdFNwYWNlKCkgeyBpZiAobV9pbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSB8fCBtb2Rl
ID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX2ludGxEYXRlVGltZUZv
cm1hdFNwYWNlLmdldCgpOyByZXR1cm4gaW50bERhdGVUaW1lRm9ybWF0U3BhY2VTbG93KCk7IH0g
X19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBpbnRsRGF0ZVRpbWVGb3JtYXRTcGFj
ZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2ludGxEYXRlVGltZUZvcm1h
dFNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNwYWNlKiBp
bnRsRGlzcGxheU5hbWVzU3BhY2UoKSB7IGlmIChtX2ludGxEaXNwbGF5TmFtZXNTcGFjZSB8fCBt
b2RlID09IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBtX2ludGxEaXNwbGF5
TmFtZXNTcGFjZS5nZXQoKTsgcmV0dXJuIGludGxEaXNwbGF5TmFtZXNTcGFjZVNsb3coKTsgfSBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgSXNvU3Vic3BhY2UqIGludGxEaXNwbGF5TmFtZXNTcGFjZVNs
b3coKTsgc3RkOjp1bmlxdWVfcHRyPElzb1N1YnNwYWNlPiBtX2ludGxEaXNwbGF5TmFtZXNTcGFj
ZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogaW50bExv
Y2FsZVNwYWNlKCkgeyBpZiAobV9pbnRsTG9jYWxlU3BhY2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9pbnRsTG9jYWxlU3BhY2UuZ2V0KCk7IHJldHVy
biBpbnRsTG9jYWxlU3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNw
YWNlKiBpbnRsTG9jYWxlU3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4g
bV9pbnRsTG9jYWxlU3BhY2U7DQogICAgdGVtcGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNv
U3Vic3BhY2UqIGludGxOdW1iZXJGb3JtYXRTcGFjZSgpIHsgaWYgKG1faW50bE51bWJlckZvcm1h
dFNwYWNlIHx8IG1vZGUgPT0gU3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkgcmV0dXJuIG1f
aW50bE51bWJlckZvcm1hdFNwYWNlLmdldCgpOyByZXR1cm4gaW50bE51bWJlckZvcm1hdFNwYWNl
U2xvdygpOyB9IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogaW50bE51bWJlckZv
cm1hdFNwYWNlU2xvdygpOyBzdGQ6OnVuaXF1ZV9wdHI8SXNvU3Vic3BhY2U+IG1faW50bE51bWJl
ckZvcm1hdFNwYWNlOw0KICAgIHRlbXBsYXRlPFN1YnNwYWNlQWNjZXNzIG1vZGU+IElzb1N1YnNw
YWNlKiBpbnRsUGx1cmFsUnVsZXNTcGFjZSgpIHsgaWYgKG1faW50bFBsdXJhbFJ1bGVzU3BhY2Ug
fHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9pbnRsUGx1
cmFsUnVsZXNTcGFjZS5nZXQoKTsgcmV0dXJuIGludGxQbHVyYWxSdWxlc1NwYWNlU2xvdygpOyB9
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJc29TdWJzcGFjZSogaW50bFBsdXJhbFJ1bGVzU3BhY2VT
bG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFjZT4gbV9pbnRsUGx1cmFsUnVsZXNTcGFj
ZTsNCiAgICB0ZW1wbGF0ZTxTdWJzcGFjZUFjY2VzcyBtb2RlPiBJc29TdWJzcGFjZSogaW50bFJl
bGF0aXZlVGltZUZvcm1hdFNwYWNlKCkgeyBpZiAobV9pbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3Bh
Y2UgfHwgbW9kZSA9PSBTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KSByZXR1cm4gbV9pbnRs
UmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UuZ2V0KCk7IHJldHVybiBpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0U3BhY2VTbG93KCk7IH0gX19kZWNsc3BlYyhkbGxleHBvcnQpIElzb1N1YnNwYWNlKiBpbnRs
UmVsYXRpdmVUaW1lRm9ybWF0U3BhY2VTbG93KCk7IHN0ZDo6dW5pcXVlX3B0cjxJc29TdWJzcGFj
ZT4gbV9pbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2U7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNTgxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXFZNLmgiDQoNCg0KICAgIA0KICAgIElzb0NlbGxTZXQgZXhlY3V0YWJsZVRv
Q29kZUJsb2NrRWRnZXNXaXRoQ29uc3RyYWludHM7DQogICAgSXNvQ2VsbFNldCBleGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQogICAgDQogICAgc3RydWN0IFNwYWNlQW5kU2V0IHsNCiAgICAgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQp
MCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHVz
aW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQoN
CiAgICAgICAgSXNvU3Vic3BhY2Ugc3BhY2U7DQogICAgICAgIElzb0NlbGxTZXQgc2V0Ow0KICAg
ICAgICANCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPg0KICAgICAgICBT
cGFjZUFuZFNldChBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpDQogICAgICAgICAgICA6IHNwYWNl
KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pDQogICAgICAgICAgICAsIHNl
dChzcGFjZSkNCiAgICAgICAgew0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBzdGF0aWMg
SXNvQ2VsbFNldCYgc2V0Rm9yKFN1YnNwYWNlJiBzcGFjZSkNCiAgICAgICAgew0KICAgICAgICAg
ICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SXNvQ2VsbFNldCo+KA0KICAgICAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDxjaGFyKj4oJnNwYWNlKSAtDQogICAgICAgICAgICAgICAgKHJlaW50ZXJwcmV0
X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3BhY2VBbmRTZXQqPigweDQwMDAp
LT5zcGFjZSkpIC0gMHg0MDAwKSArDQogICAgICAgICAgICAgICAgKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3BhY2VBbmRTZXQqPigweDQwMDApLT5zZXQp
KSAtIDB4NDAwMCkpOw0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICBTcGFjZUFuZFNldCBj
b2RlQmxvY2tTcGFjZTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQogICAgdm9pZCBm
b3JFYWNoQ29kZUJsb2NrU3BhY2UoY29uc3QgRnVuYyYgZnVuYykNCiAgICB7DQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgZnVuYyhjb2RlQmxvY2tTcGFjZSk7DQogICAgfQ0KDQogICAgdGVt
cGxhdGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIGV2YWxFeGVjdXRhYmxlU3Bh
Y2UoKSB7IGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1fZXZhbEV4ZWN1dGFibGVTcGFjZS5nZXQo
KSkgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IGlmIChtb2RlID09IFN1YnNwYWNlQWNjZXNz
OjpDb25jdXJyZW50bHkpIHJldHVybiBudWxscHRyOyByZXR1cm4gZXZhbEV4ZWN1dGFibGVTcGFj
ZVNsb3coKTsgfSBJc29TdWJzcGFjZSogZXZhbEV4ZWN1dGFibGVTcGFjZVNsb3coKTsgc3RkOjp1
bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBtX2V2YWxFeGVjdXRhYmxlU3BhY2U7DQogICAgdGVtcGxh
dGU8U3Vic3BhY2VBY2Nlc3MgbW9kZT4gSXNvU3Vic3BhY2UqIG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3BhY2UoKSB7IGlmIChhdXRvKiBzcGFjZUFuZFNldCA9IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTcGFjZS5nZXQoKSkgcmV0dXJuICZzcGFjZUFuZFNldC0+c3BhY2U7IGlmIChtb2RlID09
IFN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpIHJldHVybiBudWxscHRyOyByZXR1cm4gbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZVNsb3coKTsgfSBJc29TdWJzcGFjZSogbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVTcGFjZVNsb3coKTsgc3RkOjp1bmlxdWVfcHRyPFNwYWNlQW5kU2V0PiBt
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2U7DQogICAgU3BhY2VBbmRTZXQgZnVuY3Rpb25F
eGVjdXRhYmxlU3BhY2U7DQogICAgU3BhY2VBbmRTZXQgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTsN
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQogICAgdm9pZCBmb3JFYWNoU2NyaXB0RXhl
Y3V0YWJsZVNwYWNlKGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0KICAgICAgICBpZiAobV9ldmFs
RXhlY3V0YWJsZVNwYWNlKQ0KICAgICAgICAgICAgZnVuYygqbV9ldmFsRXhlY3V0YWJsZVNwYWNl
KTsNCiAgICAgICAgZnVuYyhmdW5jdGlvbkV4ZWN1dGFibGVTcGFjZSk7DQogICAgICAgIGlmICht
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpDQogICAgICAgICAgICBmdW5jKCptX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UpOw0KICAgICAgICBmdW5jKHByb2dyYW1FeGVjdXRhYmxl
U3BhY2UpOw0KICAgIH0NCg0KICAgIFNwYWNlQW5kU2V0IHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3BhY2U7DQoNCg0KDQogICAgVk1UeXBlIHZtVHlwZTsNCiAgICBDbGllbnREYXRhKiBjbGll
bnREYXRhOw0KICAgIEVudHJ5RnJhbWUqIHRvcEVudHJ5RnJhbWUgeyBudWxscHRyIH07DQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUgeyBudWxscHRy
IH07DQoNCg0KI2xpbmUgNjYzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQogICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0
dXJlU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVJhcmVEYXRhU3Ry
dWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0
cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7DQogICAgU3Ry
b25nPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVjdHVyZTsNCiAgICBTdHJv
bmc8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVy
ZT4gY3VzdG9tR2V0dGVyU2V0dGVyU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGRv
bUF0dHJpYnV0ZUdldHRlclNldHRlclN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiBz
Y29wZWRBcmd1bWVudHNUYWJsZVN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiBhcGlX
cmFwcGVyU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG5hdGl2ZUV4ZWN1dGFibGVT
dHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVyZT4gZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmU7
DQogICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7DQogICAg
U3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlOw0KDQoNCiNsaW5l
IDY4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxWTS5oIg0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsNCiAg
ICBTdHJvbmc8U3RydWN0dXJlPiBzeW1ib2xTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVy
ZT4gc3ltYm9sVGFibGVTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVyZT4gaW1tdXRhYmxl
QnV0dGVyZmx5U3RydWN0dXJlc1tOdW1iZXJPZkNvcHlPbldyaXRlSW5kZXhpbmdNb2Rlc107DQog
ICAgU3Ryb25nPFN0cnVjdHVyZT4gc291cmNlQ29kZVN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBzY3JpcHRGZXRjaGVyU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNj
cmlwdEZldGNoUGFyYW1ldGVyc1N0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiBzdHJ1
Y3R1cmVDaGFpblN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VBcnJheVZh
bHVlTWFwU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvclN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2tTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRFdmFs
Q29kZUJsb2NrU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2tTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb3Bl
cnR5VGFibGVTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0
YVN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7DQog
ICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsNCiAgICBTdHJv
bmc8U3RydWN0dXJlPiBtb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlOw0KICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVy
ZT4gZnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmU7DQogICAgU3Ryb25nPFN0cnVjdHVyZT4gaGFz
aE1hcEJ1Y2tldFNldFN0cnVjdHVyZTsNCiAgICBTdHJvbmc8U3RydWN0dXJlPiBoYXNoTWFwQnVj
a2V0TWFwU3RydWN0dXJlOw0KICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsN
CiAgICBTdHJvbmc8U3RydWN0dXJlPiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJl
Ow0KDQogICAgU3Ryb25nPEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcj4gbV9lbXB0eVByb3BlcnR5
TmFtZUVudW1lcmF0b3I7DQoNCiAgICBTdHJvbmc8SlNDZWxsPiBtX3NlbnRpbmVsU2V0QnVja2V0
Ow0KICAgIFN0cm9uZzxKU0NlbGw+IG1fc2VudGluZWxNYXBCdWNrZXQ7DQoNCiAgICBXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+IG1fZmFzdEJvdW5kRXhlY3V0YWJsZTsNCiAgICBXZWFrPE5hdGl2ZUV4
ZWN1dGFibGU+IG1fZmFzdENhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsNCiAgICBXZWFrPE5h
dGl2ZUV4ZWN1dGFibGU+IG1fc2xvd0JvdW5kRXhlY3V0YWJsZTsNCiAgICBXZWFrPE5hdGl2ZUV4
ZWN1dGFibGU+IG1fc2xvd0NhbkNvbnN0cnVjdEJvdW5kRXhlY3V0YWJsZTsNCg0KICAgIFJlZjxE
ZWZlcnJlZFdvcmtUaW1lcj4gZGVmZXJyZWRXb3JrVGltZXI7DQoNCiAgICBKU0NlbGwqIGN1cnJl
bnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3Q7DQogICAgY29uc3QgQ2xhc3NJbmZvKiBjdXJy
ZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZvIHsgbnVsbHB0ciB9Ow0KDQog
ICAgQXRvbVN0cmluZ1RhYmxlKiBtX2F0b21TdHJpbmdUYWJsZTsNCiAgICBXVEY6OlN5bWJvbFJl
Z2lzdHJ5IG1fc3ltYm9sUmVnaXN0cnk7DQogICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5
TmFtZXM7DQogICAgY29uc3QgQXJnTGlzdCogZW1wdHlMaXN0Ow0KICAgIFNtYWxsU3RyaW5ncyBz
bWFsbFN0cmluZ3M7DQogICAgTnVtZXJpY1N0cmluZ3MgbnVtZXJpY1N0cmluZ3M7DQogICAgc3Rk
Ojp1bmlxdWVfcHRyPFNpbXBsZVN0YXRzPiBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3Jk
Rm9yQmFzZWxpbmVKSVQ7DQogICAgV2Vha0dDTWFwPHN0ZDo6cGFpcjxDdXN0b21HZXR0ZXJTZXR0
ZXIqLCBpbnQ+LCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uPiBjdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbk1hcDsNCiAgICBXZWFrR0NNYXA8U3RyaW5nSW1wbCosIEpTU3RyaW5nLCBQdHJI
YXNoPFN0cmluZ0ltcGwqPj4gc3RyaW5nQ2FjaGU7DQogICAgU3Ryb25nPEpTU3RyaW5nPiBsYXN0
Q2FjaGVkU3RyaW5nOw0KDQogICAgQXRvbVN0cmluZ1RhYmxlKiBhdG9tU3RyaW5nVGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2F0b21TdHJpbmdUYWJsZTsgfQ0KICAgIFdURjo6U3ltYm9sUmVnaXN0
cnkmIHN5bWJvbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9zeW1ib2xSZWdpc3RyeTsgfQ0KDQogICAg
U3Ryb25nPEpTQmlnSW50PiBoZWFwQmlnSW50Q29uc3RhbnRPbmU7DQoNCiAgICBKU0NlbGwqIHNl
bnRpbmVsU2V0QnVja2V0KCkNCiAgICB7DQogICAgICAgIGlmICgobV9zZW50aW5lbFNldEJ1Y2tl
dCkpDQogICAgICAgICAgICByZXR1cm4gbV9zZW50aW5lbFNldEJ1Y2tldC5nZXQoKTsNCiAgICAg
ICAgcmV0dXJuIHNlbnRpbmVsU2V0QnVja2V0U2xvdygpOw0KICAgIH0NCg0KICAgIEpTQ2VsbCog
c2VudGluZWxNYXBCdWNrZXQoKQ0KICAgIHsNCiAgICAgICAgaWYgKChtX3NlbnRpbmVsTWFwQnVj
a2V0KSkNCiAgICAgICAgICAgIHJldHVybiBtX3NlbnRpbmVsTWFwQnVja2V0LmdldCgpOw0KICAg
ICAgICByZXR1cm4gc2VudGluZWxNYXBCdWNrZXRTbG93KCk7DQogICAgfQ0KDQogICAgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKQ0KICAgIHsN
CiAgICAgICAgaWYgKChtX2VtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcikpDQogICAgICAgICAg
ICByZXR1cm4gbV9lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IuZ2V0KCk7DQogICAgICAgIHJl
dHVybiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3JTbG93KCk7DQogICAgfQ0KDQogICAgV2Vh
a0dDTWFwPFN5bWJvbEltcGwqLCBTeW1ib2wsIFB0ckhhc2g8U3ltYm9sSW1wbCo+PiBzeW1ib2xJ
bXBsVG9TeW1ib2xNYXA7DQoNCiAgICBlbnVtIGNsYXNzIERlbGV0ZVByb3BlcnR5TW9kZSB7DQog
ICAgICAgIA0KICAgICAgICBEZWZhdWx0LA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIEln
bm9yZUNvbmZpZ3VyYWJsZQ0KICAgIH07DQoNCiAgICBEZWxldGVQcm9wZXJ0eU1vZGUgZGVsZXRl
UHJvcGVydHlNb2RlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX2RlbGV0ZVByb3BlcnR5TW9k
ZTsNCiAgICB9DQoNCiAgICBjbGFzcyBEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSB7DQogICAgcHVi
bGljOg0KICAgICAgICBEZWxldGVQcm9wZXJ0eU1vZGVTY29wZShWTSYgdm0sIERlbGV0ZVByb3Bl
cnR5TW9kZSBtb2RlKQ0KICAgICAgICAgICAgOiBtX3ZtKHZtKQ0KICAgICAgICAgICAgLCBtX3By
ZXZpb3VzTW9kZSh2bS5tX2RlbGV0ZVByb3BlcnR5TW9kZSkNCiAgICAgICAgew0KICAgICAgICAg
ICAgbV92bS5tX2RlbGV0ZVByb3BlcnR5TW9kZSA9IG1vZGU7DQogICAgICAgIH0NCg0KICAgICAg
ICB+RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUoKQ0KICAgICAgICB7DQogICAgICAgICAgICBtX3Zt
Lm1fZGVsZXRlUHJvcGVydHlNb2RlID0gbV9wcmV2aW91c01vZGU7DQogICAgICAgIH0NCg0KICAg
IHByaXZhdGU6DQogICAgICAgIFZNJiBtX3ZtOw0KICAgICAgICBEZWxldGVQcm9wZXJ0eU1vZGUg
bV9wcmV2aW91c01vZGU7DQogICAgfTsNCg0KICAgIHN0YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgYm9vbCBjYW5Vc2VBc3NlbWJsZXIoKTsNCiAgICBzdGF0aWMgYm9vbCBpc0luTWluaU1vZGUo
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICFPcHRpb25zOjp1c2VKSVQoKSB8fCBPcHRpb25zOjpm
b3JjZU1pbmlWTU1vZGUoKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgYm9vbCB1c2VVbmxpbmtlZENv
ZGVCbG9ja0pldHRpc29uaW5nKCkNCiAgICB7DQogICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VV
bmxpbmtlZENvZGVCbG9ja0pldHRpc29uaW5nKCkgfHwgaXNJbk1pbmlNb2RlKCk7DQogICAgfQ0K
DQogICAgc3RhdGljIHZvaWQgY29tcHV0ZUNhblVzZUpJVCgpOw0KDQogICAgU291cmNlUHJvdmlk
ZXJDYWNoZSogYWRkU291cmNlUHJvdmlkZXJDYWNoZShTb3VyY2VQcm92aWRlciopOw0KICAgIHZv
aWQgY2xlYXJTb3VyY2VQcm92aWRlckNhY2hlcygpOw0KDQogICAgU3RydWN0dXJlQ2FjaGUgc3Ry
dWN0dXJlQ2FjaGU7DQoNCiAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFNvdXJjZVByb3ZpZGVy
PiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+PiBTb3VyY2VQcm92aWRlckNhY2hlTWFwOw0K
ICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGVNYXAgc291cmNlUHJvdmlkZXJDYWNoZU1hcDsNCiAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXI7DQoNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SklUVGh1bmtz
PiBqaXRTdHViczsNCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdl
dENUSVN0dWIoVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IGppdFN0dWJzLT5jdGlTdHViKCp0aGlzLCBnZW5lcmF0b3IpOw0KICAgIH0NCg0KI2xpbmUgODIz
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXFZNLmgiDQoNCg0KI2xpbmUgODI2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQogICAgTmF0aXZlRXhlY3V0YWJsZSog
Z2V0SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rv
ciwgY29uc3QgU3RyaW5nJiBuYW1lKTsNCiAgICBOYXRpdmVFeGVjdXRhYmxlKiBnZXRIb3N0RnVu
Y3Rpb24oTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0
b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsNCg0KICAg
IE5hdGl2ZUV4ZWN1dGFibGUqIGdldEJvdW5kRnVuY3Rpb24oYm9vbCBpc0pTRnVuY3Rpb24sIGJv
b2wgY2FuQ29uc3RydWN0KTsNCg0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kKTsNCg0KICAgIHN0YXRpYyBwdHJkaWZmX3QgZXhjZXB0aW9uT2Zmc2V0KCkNCiAgICB7
DQogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnBy
ZXRfY2FzdDxWTSo+KDB4NDAwMCktPm1fZXhjZXB0aW9uKSkgLSAweDQwMDApOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBwdHJkaWZmX3QgY2FsbEZyYW1lRm9yQ2F0Y2hPZmZzZXQoKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9j
YXN0PFZNKj4oMHg0MDAwKS0+Y2FsbEZyYW1lRm9yQ2F0Y2gpKSAtIDB4NDAwMCk7DQogICAgfQ0K
DQogICAgc3RhdGljIHB0cmRpZmZfdCB0b3BFbnRyeUZyYW1lT2Zmc2V0KCkNCiAgICB7DQogICAg
ICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2Fz
dDxWTSo+KDB4NDAwMCktPnRvcEVudHJ5RnJhbWUpKSAtIDB4NDAwMCk7DQogICAgfQ0KDQogICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkhlYXBCYXJyaWVyVGhyZXNob2xkKCkNCiAgICB7DQog
ICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxWTSo+KDB4NDAwMCktPmhlYXApKSAtIDB4NDAwMCkgKyAocmVpbnRlcnByZXRfY2FzdDxw
dHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxIZWFwKj4oMHg0MDAwKS0+bV9iYXJyaWVyVGhy
ZXNob2xkKSkgLSAweDQwMDApOw0KICAgIH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZIZWFwTXV0YXRvclNob3VsZEJlRmVuY2VkKCkNCiAgICB7DQogICAgICAgIHJldHVybiAocmVp
bnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxWTSo+KDB4NDAwMCkt
PmhlYXApKSAtIDB4NDAwMCkgKyAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRl
cnByZXRfY2FzdDxIZWFwKj4oMHg0MDAwKS0+bV9tdXRhdG9yU2hvdWxkQmVGZW5jZWQpKSAtIDB4
NDAwMCk7DQogICAgfQ0KDQogICAgdm9pZCByZXN0b3JlUHJldmlvdXNFeGNlcHRpb24oRXhjZXB0
aW9uKiBleGNlcHRpb24pIHsgc2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7IH0NCg0KICAgIHZvaWQg
Y2xlYXJMYXN0RXhjZXB0aW9uKCkgeyBtX2xhc3RFeGNlcHRpb24gPSBudWxscHRyOyB9DQoNCiAg
ICBDYWxsRnJhbWUqKiBhZGRyZXNzT2ZDYWxsRnJhbWVGb3JDYXRjaCgpIHsgcmV0dXJuICZjYWxs
RnJhbWVGb3JDYXRjaDsgfQ0KDQogICAgSlNDZWxsKiogYWRkcmVzc09mRXhjZXB0aW9uKCkgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJm1fZXhjZXB0aW9uKTsgfQ0KDQogICAg
RXhjZXB0aW9uKiBsYXN0RXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RXhjZXB0aW9u
OyB9DQogICAgSlNDZWxsKiogYWRkcmVzc09mTGFzdEV4Y2VwdGlvbigpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDZWxsKio+KCZtX2xhc3RFeGNlcHRpb24pOyB9DQoNCiAgICANCiAgICAN
CiAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbkZvckluc3BlY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2V4Y2VwdGlvbjsgfQ0KDQogICAgdm9pZCBzZXRGYWlsTmV4dE5ld0NvZGVCbG9jaygpIHsgbV9m
YWlsTmV4dE5ld0NvZGVCbG9jayA9IHRydWU7IH0NCiAgICBib29sIGdldEFuZENsZWFyRmFpbE5l
eHROZXdDb2RlQmxvY2soKQ0KICAgIHsNCiAgICAgICAgYm9vbCByZXN1bHQgPSBtX2ZhaWxOZXh0
TmV3Q29kZUJsb2NrOw0KICAgICAgICBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrID0gZmFsc2U7DQog
ICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUgU3Ry
dWN0dXJlKiBnZXRTdHJ1Y3R1cmUoU3RydWN0dXJlSUQgaWQpDQogICAgew0KICAgICAgICByZXR1
cm4gaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KGRlY29udGFtaW5hdGUoaWQpKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCogc3RhY2tQb2ludGVyQXRWTUVudHJ5KCkgY29uc3QgeyByZXR1cm4g
bV9zdGFja1BvaW50ZXJBdFZNRW50cnk7IH0NCiAgICB2b2lkIHNldFN0YWNrUG9pbnRlckF0Vk1F
bnRyeSh2b2lkKik7DQoNCiAgICBzaXplX3Qgc29mdFJlc2VydmVkWm9uZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRTb2Z0UmVzZXJ2ZWRab25lU2l6ZTsgfQ0KICAgIHNpemVfdCB1cGRh
dGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShzaXplX3Qgc29mdFJlc2VydmVkWm9uZVNpemUpOw0KICAg
IA0KICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKTsNCiAgICBpbmxp
bmUgYm9vbCBlbnN1cmVTdGFja0NhcGFjaXR5Rm9yKFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsN
Cg0KICAgIHZvaWQqIHN0YWNrTGltaXQoKSB7IHJldHVybiBtX3N0YWNrTGltaXQ7IH0NCiAgICB2
b2lkKiBzb2Z0U3RhY2tMaW1pdCgpIHsgcmV0dXJuIG1fc29mdFN0YWNrTGltaXQ7IH0NCiAgICB2
b2lkKiogYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSB7IHJldHVybiAmbV9zb2Z0U3RhY2tMaW1p
dDsgfQ0KDQoNCg0KDQojbGluZSA5MDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCg0KICAgIGlubGluZSBib29sIGlzU2Fm
ZVRvUmVjdXJzZVNvZnQoKSBjb25zdDsNCiAgICBib29sIGlzU2FmZVRvUmVjdXJzZSgpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gaXNTYWZlVG9SZWN1cnNlKG1fc3RhY2tMaW1pdCk7DQog
ICAgfQ0KDQogICAgdm9pZCoqIGFkZHJlc3NPZkxhc3RTdGFja1RvcCgpIHsgcmV0dXJuICZtX2xh
c3RTdGFja1RvcDsgfQ0KICAgIHZvaWQqIGxhc3RTdGFja1RvcCgpIHsgcmV0dXJuIG1fbGFzdFN0
YWNrVG9wOyB9DQogICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Aodm9pZCopOw0KICAgIA0KICAgIHZv
aWQgZmlyZVByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZElmTmVjZXNzYXJ5KCkNCiAgICB7DQogICAg
ICAgIGlmIChtX25lZWRUb0ZpcmVQcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQpIHsNCiAgICAgICAg
ICAgIG1fbmVlZFRvRmlyZVByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZCA9IGZhbHNlOw0KICAgICAg
ICAgICAgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQuZmlyZUFsbCgqdGhpcywgIlByaW1pdGl2
ZSBnaWdhY2FnZSBkaXNhYmxlZCBhc3luY2hyb25vdXNseSIpOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOw0KICAgIHVuc2lnbmVkIHZhcmFyZ3NM
ZW5ndGg7DQogICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsNCiAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZUZvckNhdGNoOw0KICAgIHZvaWQqIHRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93Ow0KICAgIGNvbnN0IEluc3RydWN0aW9uKiB0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3c7
DQogICAgdWludDMyX3Qgb3NyRXhpdEluZGV4Ow0KICAgIHZvaWQqIG9zckV4aXRKdW1wRGVzdGlu
YXRpb247DQogICAgYm9vbCBpc0V4ZWN1dGluZ0luUmVnRXhwSklUIHsgZmFsc2UgfTsNCg0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXJGb3JT
aXplKHNpemVfdCBzaXplKTsNCiAgICB2b2lkIGNsZWFyU2NyYXRjaEJ1ZmZlcnMoKTsNCg0KICAg
IEVuY29kZWRKU1ZhbHVlKiBleGNlcHRpb25GdXp6aW5nQnVmZmVyKHNpemVfdCBzaXplKQ0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoIW1fZXhjZXB0aW9uRnV6ekJ1ZmZl
cikNCiAgICAgICAgICAgIG1fZXhjZXB0aW9uRnV6ekJ1ZmZlciA9IE1hbGxvY1B0cjxFbmNvZGVk
SlNWYWx1ZSwgVk1NYWxsb2M+OjptYWxsb2Moc2l6ZSk7DQogICAgICAgIHJldHVybiBtX2V4Y2Vw
dGlvbkZ1enpCdWZmZXIuZ2V0KCk7DQogICAgfQ0KDQogICAgdm9pZCBnYXRoZXJTY3JhdGNoQnVm
ZmVyUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsNCg0KICAgIHZvaWQgYWRkQ2hlY2twb2ludE9T
UlNpZGVTdGF0ZShDYWxsRnJhbWUqLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRT
aWRlU3RhdGU+JiYpOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVT
dGF0ZT4gZmluZENoZWNrcG9pbnRPU1JTaWRlU3RhdGUoQ2FsbEZyYW1lKik7DQogICAgYm9vbCBo
YXNDaGVja3BvaW50T1NSU2lkZVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja3BvaW50U2lk
ZVN0YXRlLnNpemUoKTsgfQ0KICAgIHZvaWQgc2NhblNpZGVTdGF0ZShDb25zZXJ2YXRpdmVSb290
cyYpIGNvbnN0Ow0KDQogICAgdW5zaWduZWQgZGlzYWxsb3dWTUVudHJ5Q291bnQgeyAwIH07DQog
ICAgVk1FbnRyeVNjb3BlKiBlbnRyeVNjb3BlOw0KDQogICAgSlNPYmplY3QqIHN0cmluZ1JlY3Vy
c2lvbkNoZWNrRmlyc3RPYmplY3QgeyBudWxscHRyIH07DQogICAgSGFzaFNldDxKU09iamVjdCo+
IHN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVjdHM7DQoNCiAgICBzdHJ1Y3QgRGF0ZUNh
Y2hlIHsNCiAgICAgICAgRGF0ZUluc3RhbmNlQ2FjaGUgZGF0ZUluc3RhbmNlQ2FjaGU7DQogICAg
ICAgIExvY2FsVGltZU9mZnNldENhY2hlIHV0Y1RpbWVPZmZzZXRDYWNoZTsNCiAgICAgICAgTG9j
YWxUaW1lT2Zmc2V0Q2FjaGUgbG9jYWxUaW1lT2Zmc2V0Q2FjaGU7DQoNCiAgICAgICAgU3RyaW5n
IGNhY2hlZERhdGVTdHJpbmc7DQogICAgICAgIGRvdWJsZSBjYWNoZWREYXRlU3RyaW5nVmFsdWU7
DQogICAgfTsNCiAgICBEYXRlQ2FjaGUgZGF0ZUNhY2hlOw0KDQogICAgc3RkOjp1bmlxdWVfcHRy
PFByb2ZpbGVyOjpEYXRhYmFzZT4gbV9wZXJCeXRlY29kZVByb2ZpbGVyOw0KICAgIFJlZlB0cjxU
eXBlZEFycmF5Q29udHJvbGxlcj4gbV90eXBlZEFycmF5Q29udHJvbGxlcjsNCiAgICBSZWdFeHBD
YWNoZSogbV9yZWdFeHBDYWNoZTsNCiAgICBCdW1wUG9pbnRlckFsbG9jYXRvciBtX3JlZ0V4cEFs
bG9jYXRvcjsNCiAgICBDb25jdXJyZW50SlNMb2NrIG1fcmVnRXhwQWxsb2NhdG9yTG9jazsNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgOTgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgcGF0dGVybkNvbnRleHRCdWZmZXJTaXplID0gMDsgDQojbGluZSA5ODUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCg0K
ICAgIFJlZjxDb21wYWN0VmFyaWFibGVNYXA+IG1fY29tcGFjdFZhcmlhYmxlTWFwOw0KDQogICAg
c3RkOjp1bmlxdWVfcHRyPEhhc093blByb3BlcnR5Q2FjaGU+IG1faGFzT3duUHJvcGVydHlDYWNo
ZTsNCiAgICBfX2ZvcmNlaW5saW5lIEhhc093blByb3BlcnR5Q2FjaGUqIGhhc093blByb3BlcnR5
Q2FjaGUoKSB7IHJldHVybiBtX2hhc093blByb3BlcnR5Q2FjaGUuZ2V0KCk7IH0NCiAgICBIYXNP
d25Qcm9wZXJ0eUNhY2hlKiBlbnN1cmVIYXNPd25Qcm9wZXJ0eUNhY2hlKCk7DQoNCg0KDQoNCiNs
aW5lIDk5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxWTS5oIg0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVzZXRE
YXRlQ2FjaGUoKTsNCg0KICAgIFJlZ0V4cENhY2hlKiByZWdFeHBDYWNoZSgpIHsgcmV0dXJuIG1f
cmVnRXhwQ2FjaGU7IH0NCg0KDQojbGluZSAxMDAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIHZvaWQgZHVtcFJlZ0V4cFRyYWNlKCk7DQoNCiAgICBib29sIGlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpIHsgcmV0dXJuIGhlYXAuaXNDdXJyZW50VGhyZWFkQnVzeSgp
OyB9DQoNCg0KDQoNCiNsaW5lIDEwMTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCg0KICAgIGJvb2wgY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSBjb25zdCB7IHJldHVybiBtX2FwaUxvY2stPmN1cnJlbnRUaHJl
YWRJc0hvbGRpbmdMb2NrKCk7IH0NCg0KICAgIEpTTG9jayYgYXBpTG9jaygpIHsgcmV0dXJuICpt
X2FwaUxvY2s7IH0NCiAgICBDb2RlQ2FjaGUqIGNvZGVDYWNoZSgpIHsgcmV0dXJuIG1fY29kZUNh
Y2hlLmdldCgpOyB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCB3aGVuSWRsZShG
dW5jdGlvbjx2b2lkKCk+JiYpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgZGVs
ZXRlQWxsQ29kZShEZWxldGVBbGxDb2RlRWZmb3J0KTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgdm9pZCBkZWxldGVBbGxMaW5rZWRDb2RlKERlbGV0ZUFsbENvZGVFZmZvcnQpOw0KDQogICAg
dm9pZCBzaHJpbmtGb290cHJpbnRXaGVuSWRsZSgpOw0KDQogICAgV2F0Y2hwb2ludFNldCogZW5z
dXJlV2F0Y2hwb2ludFNldEZvckltcHVyZVByb3BlcnR5KFVuaXF1ZWRTdHJpbmdJbXBsKik7DQog
ICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgYWRkSW1wdXJlUHJvcGVy
dHkoVW5pcXVlZFN0cmluZ0ltcGwqKTsNCiAgICANCiAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBw
cmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoKSB7IHJldHVybiBtX3ByaW1pdGl2ZUdpZ2FjYWdlRW5h
YmxlZDsgfQ0KDQogICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7
IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQ0KDQogICAgYm9vbCBlbmFibGVU
eXBlUHJvZmlsZXIoKTsNCiAgICBib29sIGRpc2FibGVUeXBlUHJvZmlsZXIoKTsNCiAgICBUeXBl
UHJvZmlsZXJMb2cqIHR5cGVQcm9maWxlckxvZygpIHsgcmV0dXJuIG1fdHlwZVByb2ZpbGVyTG9n
LmdldCgpOyB9DQogICAgVHlwZVByb2ZpbGVyKiB0eXBlUHJvZmlsZXIoKSB7IHJldHVybiBtX3R5
cGVQcm9maWxlci5nZXQoKTsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGR1bXBU
eXBlUHJvZmlsZXJEYXRhKCk7DQoNCiAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUqIGZ1bmN0
aW9uSGFzRXhlY3V0ZWRDYWNoZSgpIHsgcmV0dXJuICZtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZTsgfQ0KDQogICAgQ29udHJvbEZsb3dQcm9maWxlciogY29udHJvbEZsb3dQcm9maWxlcigpIHsg
cmV0dXJuIG1fY29udHJvbEZsb3dQcm9maWxlci5nZXQoKTsgfQ0KICAgIGJvb2wgZW5hYmxlQ29u
dHJvbEZsb3dQcm9maWxlcigpOw0KICAgIGJvb2wgZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIo
KTsNCg0KICAgIHZvaWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QmLCBSZWY8TWljcm90
YXNrPiYmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBkcmFpbk1pY3JvdGFza3Mo
KTsNCiAgICB2b2lkIHNldE9uRWFjaE1pY3JvdGFza1RpY2soV1RGOjpGdW5jdGlvbjx2b2lkKFZN
Jik+JiYgZnVuYykgeyBtX29uRWFjaE1pY3JvdGFza1RpY2sgPSBzdGQ6Om1vdmU8V1RGOjpDaGVj
a01vdmVQYXJhbWV0ZXI+KGZ1bmMpOyB9DQogICAgdm9pZCBmaW5hbGl6ZVN5bmNocm9ub3VzSlNF
eGVjdXRpb24oKSB7ICgodm9pZCkwKTsgbV9jdXJyZW50V2Vha1JlZlZlcnNpb24rKzsgfQ0KICAg
IHVpbnRwdHJfdCBjdXJyZW50V2Vha1JlZlZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRXZWFrUmVmVmVyc2lvbjsgfQ0KDQogICAgdm9pZCBzZXRHbG9iYWxDb25zdFJlZGVjbGFyYXRp
b25TaG91bGRUaHJvdyhib29sIGdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblRocm93KSB7IG1fZ2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3cgPSBnbG9iYWxDb25zdFJlZGVjbGFyYXRp
b25UaHJvdzsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCBnbG9iYWxDb25zdFJlZGVjbGFyYXRp
b25TaG91bGRUaHJvdygpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9u
U2hvdWxkVGhyb3c7IH0NCg0KICAgIHZvaWQgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1h
cHBpbmcoKSB7IG1fc2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcgPSB0cnVlOyB9DQog
ICAgYm9vbCBzaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRCdWlsZFBDVG9Db2RlT3JpZ2luTWFwcGluZzsgfQ0KDQogICAgQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeSYgYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgpIHsgcmV0dXJuICpt
X2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7IH0NCiAgICANCiAgICBTaGFkb3dDaGlja2VuKiBz
aGFkb3dDaGlja2VuKCkgeyByZXR1cm4gbV9zaGFkb3dDaGlja2VuLmdldCgpOyB9DQogICAgdm9p
ZCBlbnN1cmVTaGFkb3dDaGlja2VuKCk7DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4NCiAgICB2b2lkIGxvZ0V2ZW50KENvZGVCbG9jayosIGNvbnN0IGNoYXIqIHN1bW1hcnksIGNv
bnN0IEZ1bmMmIGZ1bmMpOw0KDQogICAgT3B0aW9uYWw8UmVmUHRyPFRocmVhZD4+IG93bmVyVGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hcGlMb2NrLT5vd25lclRocmVhZCgpOyB9DQoNCiAgICBW
TVRyYXBzJiB0cmFwcygpIHsgcmV0dXJuIG1fdHJhcHM7IH0NCg0KICAgIHZvaWQgaGFuZGxlVHJh
cHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZN
VHJhcHM6Ok1hc2sgbWFzayA9IFZNVHJhcHM6Ok1hc2s6OmFsbEV2ZW50VHlwZXMoKSkgeyBtX3Ry
YXBzLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBtYXNrKTsgfQ0KDQogICAg
Ym9vbCBuZWVkVHJhcEhhbmRsaW5nKCkgeyByZXR1cm4gbV90cmFwcy5uZWVkVHJhcEhhbmRsaW5n
KCk7IH0NCiAgICBib29sIG5lZWRUcmFwSGFuZGxpbmcoVk1UcmFwczo6TWFzayBtYXNrKSB7IHJl
dHVybiBtX3RyYXBzLm5lZWRUcmFwSGFuZGxpbmcobWFzayk7IH0NCiAgICB2b2lkKiBuZWVkVHJh
cEhhbmRsaW5nQWRkcmVzcygpIHsgcmV0dXJuIG1fdHJhcHMubmVlZFRyYXBIYW5kbGluZ0FkZHJl
c3MoKTsgfQ0KDQogICAgdm9pZCBub3RpZnlOZWVkRGVidWdnZXJCcmVhaygpIHsgbV90cmFwcy5m
aXJlVHJhcChWTVRyYXBzOjpOZWVkRGVidWdnZXJCcmVhayk7IH0NCiAgICB2b2lkIG5vdGlmeU5l
ZWRTaGVsbFRpbWVvdXRDaGVjaygpIHsgbV90cmFwcy5maXJlVHJhcChWTVRyYXBzOjpOZWVkU2hl
bGxUaW1lb3V0Q2hlY2spOyB9DQogICAgdm9pZCBub3RpZnlOZWVkVGVybWluYXRpb24oKSB7IG1f
dHJhcHMuZmlyZVRyYXAoVk1UcmFwczo6TmVlZFRlcm1pbmF0aW9uKTsgfQ0KICAgIHZvaWQgbm90
aWZ5TmVlZFdhdGNoZG9nQ2hlY2soKSB7IG1fdHJhcHMuZmlyZVRyYXAoVk1UcmFwczo6TmVlZFdh
dGNoZG9nQ2hlY2spOyB9DQoNCiAgICB2b2lkIHByb21pc2VSZWplY3RlZChKU1Byb21pc2UqKTsN
Cg0KDQoNCg0KDQojbGluZSAxMDg3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQoNCiAgICBXVEY6OlJ1bkxvb3AmIHJ1bkxv
b3AoKSBjb25zdCB7IHJldHVybiBtX3J1bkxvb3A7IH0NCg0KICAgIHN0YXRpYyB2b2lkIHNldENy
YXNoT25WTUNyZWF0aW9uKGJvb2wpOw0KDQogICAgY2xhc3MgRGVmZXJFeGNlcHRpb25TY29wZSB7
DQogICAgcHVibGljOg0KICAgICAgICBEZWZlckV4Y2VwdGlvblNjb3BlKFZNJiB2bSkNCiAgICAg
ICAgICAgIDogbV9zYXZlZEV4Y2VwdGlvbih2bS5tX2V4Y2VwdGlvbiwgbnVsbHB0cikNCiAgICAg
ICAgICAgICwgbV9zYXZlZExhc3RFeGNlcHRpb24odm0ubV9sYXN0RXhjZXB0aW9uLCBudWxscHRy
KQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgIHByaXZhdGU6DQogICAgICAgIFNldEZvclNj
b3BlPEV4Y2VwdGlvbio+IG1fc2F2ZWRFeGNlcHRpb247DQogICAgICAgIFNldEZvclNjb3BlPEV4
Y2VwdGlvbio+IG1fc2F2ZWRMYXN0RXhjZXB0aW9uOw0KICAgIH07DQoNCiAgICB2b2lkIGFkZExv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgIHVpbnQ2NF90
KiBnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICB2
b2lkIHJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOw0K
DQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCiAg
ICBWTShWTVR5cGUsIEhlYXBUeXBlLCBXVEY6OlJ1bkxvb3AqID0gbnVsbHB0ciwgYm9vbCogc3Vj
Y2VzcyA9IG51bGxwdHIpOw0KICAgIHN0YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwo
KTsNCiAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgSlNDZWxsKiBzZW50aW5lbFNldEJ1Y2tldFNsb3coKTsNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgSlNDZWxsKiBzZW50aW5lbE1hcEJ1Y2tldFNsb3coKTsNCiAgICBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqIGVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvclNsb3coKTsNCg0KICAg
IHZvaWQgdXBkYXRlU3RhY2tMaW1pdHMoKTsNCg0KICAgIGJvb2wgaXNTYWZlVG9SZWN1cnNlKHZv
aWQqIHN0YWNrTGltaXQpIGNvbnN0DQogICAgew0KICAgICAgICB2b2lkKiBjdXJyID0gY3VycmVu
dFN0YWNrUG9pbnRlcigpOw0KICAgICAgICByZXR1cm4gY3VyciA+PSBzdGFja0xpbWl0Ow0KICAg
IH0NCg0KICAgIHZvaWQgc2V0RXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKQ0KICAgIHsN
CiAgICAgICAgbV9leGNlcHRpb24gPSBleGNlcHRpb247DQogICAgICAgIG1fbGFzdEV4Y2VwdGlv
biA9IGV4Y2VwdGlvbjsNCiAgICB9DQogICAgRXhjZXB0aW9uKiBleGNlcHRpb24oKSBjb25zdA0K
ICAgIHsNCg0KDQojbGluZSAxMTM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQogICAgICAgIHJldHVybiBtX2V4Y2VwdGlv
bjsNCiAgICB9DQogICAgdm9pZCBjbGVhckV4Y2VwdGlvbigpDQogICAgew0KDQoNCg0KDQojbGlu
ZSAxMTQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFZNLmgiDQogICAgICAgIG1fZXhjZXB0aW9uID0gbnVsbHB0cjsNCiAgICB9DQoN
Cg0KDQoNCiNsaW5lIDExNTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBF
eGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7DQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEV4Y2VwdGlvbiogdGhyb3dFeGNlcHRpb24oSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgRXhjZXB0aW9u
KiB0aHJvd0V4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7DQoNCg0KDQojbGlu
ZSAxMTYyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFZNLmgiDQogICAgDQogICAgc3RhdGljIHZvaWQgcHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZENhbGxiYWNrKHZvaWQqKTsNCiAgICB2b2lkIHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJs
ZWQoKTsNCg0KICAgIHZvaWQgY2FsbFByb21pc2VSZWplY3Rpb25DYWxsYmFjayhTdHJvbmc8SlNQ
cm9taXNlPiYpOw0KICAgIHZvaWQgZGlkRXhoYXVzdE1pY3JvdGFza1F1ZXVlKCk7DQoNCg0KDQoj
bGluZSAxMTcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXFZNLmgiDQoNCiAgICB2b2lkKiBtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeTsN
CiAgICBzaXplX3QgbV9jdXJyZW50U29mdFJlc2VydmVkWm9uZVNpemU7DQogICAgdm9pZCogbV9z
dGFja0xpbWl0IHsgbnVsbHB0ciB9Ow0KICAgIHZvaWQqIG1fc29mdFN0YWNrTGltaXQgeyBudWxs
cHRyIH07DQoNCg0KI2xpbmUgMTE4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTS5oIg0KICAgIHZvaWQqIG1fbGFzdFN0YWNrVG9w
IHsgbnVsbHB0ciB9Ow0KDQogICAgRXhjZXB0aW9uKiBtX2V4Y2VwdGlvbiB7IG51bGxwdHIgfTsN
CiAgICBFeGNlcHRpb24qIG1fbGFzdEV4Y2VwdGlvbiB7IG51bGxwdHIgfTsNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxMTkzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFZNLmgiDQoNCnB1YmxpYzoNCiAgICBib29sIGRpZEVudGVyVk0g
eyBmYWxzZSB9Ow0KcHJpdmF0ZToNCiAgICBib29sIG1fZmFpbE5leHROZXdDb2RlQmxvY2sgeyBm
YWxzZSB9Ow0KICAgIERlbGV0ZVByb3BlcnR5TW9kZSBtX2RlbGV0ZVByb3BlcnR5TW9kZSB7IERl
bGV0ZVByb3BlcnR5TW9kZTo6RGVmYXVsdCB9Ow0KICAgIGJvb2wgbV9nbG9iYWxDb25zdFJlZGVj
bGFyYXRpb25TaG91bGRUaHJvdyB7IHRydWUgfTsNCiAgICBib29sIG1fc2hvdWxkQnVpbGRQQ1Rv
Q29kZU9yaWdpbk1hcHBpbmcgeyBmYWxzZSB9Ow0KICAgIHN0ZDo6dW5pcXVlX3B0cjxDb2RlQ2Fj
aGU+IG1fY29kZUNhY2hlOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxCdWlsdGluRXhlY3V0YWJsZXM+
IG1fYnVpbHRpbkV4ZWN1dGFibGVzOw0KICAgIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNl
dHM7DQogICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVQcm9maWxlcj4gbV90eXBlUHJvZmlsZXI7DQog
ICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVQcm9maWxlckxvZz4gbV90eXBlUHJvZmlsZXJMb2c7DQog
ICAgdW5zaWduZWQgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQ7DQogICAgYm9vbCBtX25lZWRU
b0ZpcmVQcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQgeyBmYWxzZSB9Ow0KICAgIExvY2sgbV9zY3Jh
dGNoQnVmZmVyTG9jazsNCiAgICBWZWN0b3I8U2NyYXRjaEJ1ZmZlcio+IG1fc2NyYXRjaEJ1ZmZl
cnM7DQogICAgc2l6ZV90IG1fc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIgeyAwIH07DQogICAgSGFz
aE1hcDxDYWxsRnJhbWUqLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3Rh
dGU+PiBtX2NoZWNrcG9pbnRTaWRlU3RhdGU7DQogICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX3By
aW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZDsNCiAgICBGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUgbV9m
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU7DQogICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xGbG93
UHJvZmlsZXI+IG1fY29udHJvbEZsb3dQcm9maWxlcjsNCiAgICB1bnNpZ25lZCBtX2NvbnRyb2xG
bG93UHJvZmlsZXJFbmFibGVkQ291bnQ7DQogICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFF1ZXVl
ZFRhc2s+PiBtX21pY3JvdGFza1F1ZXVlOw0KICAgIE1hbGxvY1B0cjxFbmNvZGVkSlNWYWx1ZSwg
Vk1NYWxsb2M+IG1fZXhjZXB0aW9uRnV6ekJ1ZmZlcjsNCiAgICBWTVRyYXBzIG1fdHJhcHM7DQog
ICAgUmVmUHRyPFdhdGNoZG9nPiBtX3dhdGNoZG9nOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFw
UHJvZmlsZXI+IG1faGVhcFByb2ZpbGVyOw0KDQogICAgUmVmUHRyPFNhbXBsaW5nUHJvZmlsZXI+
IG1fc2FtcGxpbmdQcm9maWxlcjsNCiNsaW5lIDEyMjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCiAgICBzdGQ6OnVuaXF1
ZV9wdHI8RnV6emVyQWdlbnQ+IG1fZnV6emVyQWdlbnQ7DQogICAgc3RkOjp1bmlxdWVfcHRyPFNo
YWRvd0NoaWNrZW4+IG1fc2hhZG93Q2hpY2tlbjsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeT4gbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ow0KDQogICAg
DQogICAgVmVjdG9yPFN0cm9uZzxKU1Byb21pc2U+PiBtX2Fib3V0VG9CZU5vdGlmaWVkUmVqZWN0
ZWRQcm9taXNlczsNCg0KICAgIFdURjo6RnVuY3Rpb248dm9pZChWTSYpPiBtX29uRWFjaE1pY3Jv
dGFza1RpY2s7DQogICAgdWludHB0cl90IG1fY3VycmVudFdlYWtSZWZWZXJzaW9uIHsgMCB9Ow0K
DQogICAgTG9jayBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrOw0KICAgIEhhc2hNYXA8Y29u
c3QgSW5zdHJ1Y3Rpb24qLCBzdGQ6OnBhaXI8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjx1aW50
NjRfdD4+PiBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzOw0KDQogICAgVk0qIG1fcHJldjsgDQog
ICAgVk0qIG1fbmV4dDsgDQoNCiAgICANCiAgICBmcmllbmQgY2xhc3MgSGVhcDsNCiAgICBmcmll
bmQgY2xhc3MgQ2F0Y2hTY29wZTsNCiAgICBmcmllbmQgY2xhc3MgRXhjZXB0aW9uU2NvcGU7DQog
ICAgZnJpZW5kIGNsYXNzIEpTRG9sbGFyVk1IZWxwZXI7DQogICAgZnJpZW5kIGNsYXNzIFRocm93
U2NvcGU7DQogICAgZnJpZW5kIGNsYXNzIFZNVHJhcHM7DQogICAgZnJpZW5kIGNsYXNzIFdURjo6
RG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+Ow0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAxMjYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFZNLmgiDQoNCmlubGluZSBIZWFwKiBXZWFrU2V0OjpoZWFwKCkgY29uc3QNCnsN
CiAgICByZXR1cm4gJm1fdm0tPmhlYXA7DQp9DQoNCg0KZXh0ZXJuICJDIiB2b2lkIHNhbml0aXpl
U3RhY2tGb3JWTUltcGwoVk0qKTsNCiNsaW5lIDEyNzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk0uaCINCg0KX19kZWNsc3BlYyhk
bGxleHBvcnQpIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNJik7DQp2b2lkIGxvZ1Nhbml0aXpl
U3RhY2soVk0mKTsNCg0KfSANCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJldGVyXFxDYWxsRnJhbWUuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJw
cmV0ZXJcXFZNRW50cnlSZWNvcmQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJbmZvLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQplbnVtIE5vUmVzdWx0VGFnIHsgTm9SZXN1
bHQgfTsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgR1BS
UmVnOw0Kc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgSW52YWxpZEdQUlJlZyB7IEdQUlJlZzo6SW52
YWxpZEdQUlJlZyB9Ow0KDQoNCg0KDQpjbGFzcyBKU1ZhbHVlUmVncyB7DQpwdWJsaWM6DQogICAg
Y29uc3RleHByIEpTVmFsdWVSZWdzKCkNCiAgICAgICAgOiBtX2dwcihJbnZhbGlkR1BSUmVnKQ0K
ICAgIHsNCiAgICB9DQogICAgDQogICAgY29uc3RleHByIGV4cGxpY2l0IEpTVmFsdWVSZWdzKEdQ
UlJlZyBncHIpDQogICAgICAgIDogbV9ncHIoZ3ByKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAg
c3RhdGljIEpTVmFsdWVSZWdzIHBheWxvYWRPbmx5KEdQUlJlZyBncHIpDQogICAgew0KICAgICAg
ICByZXR1cm4gSlNWYWx1ZVJlZ3MoZ3ByKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIEpTVmFs
dWVSZWdzIHdpdGhUd29BdmFpbGFibGVSZWdzKEdQUlJlZyBncHIsIEdQUlJlZykNCiAgICB7DQog
ICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhncHIpOw0KICAgIH0NCiAgICANCiAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IEludmFsaWRHUFJSZWc7IH0NCiAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9ncHIgIT0gSW52YWxpZEdQ
UlJlZzsgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSB7IHJldHVy
biBtX2dwciA9PSBvdGhlci5tX2dwcjsgfQ0KICAgIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVn
cyBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0NCiAgICANCiAgICBHUFJSZWcg
Z3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0NCiAgICBHUFJSZWcgdGFnR1BSKCkgY29uc3Qg
eyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQ0KICAgIEdQUlJlZyBwYXlsb2FkR1BSKCkgY29uc3Qg
eyByZXR1cm4gbV9ncHI7IH0NCiAgICANCiAgICBib29sIHVzZXMoR1BSUmVnIGdwcikgY29uc3Qg
eyByZXR1cm4gbV9ncHIgPT0gZ3ByOyB9DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7DQogICAgDQpwcml2YXRlOg0KICAgIEdQUlJlZyBtX2dwcjsNCn07DQoNCmNsYXNz
IEpTVmFsdWVTb3VyY2Ugew0KcHVibGljOg0KICAgIEpTVmFsdWVTb3VyY2UoKQ0KICAgICAgICA6
IG1fb2Zmc2V0KG5vdEFkZHJlc3MoKSkNCiAgICAgICAgLCBtX2Jhc2UoSW52YWxpZEdQUlJlZykN
CiAgICB7DQogICAgfQ0KICAgIA0KICAgIEpTVmFsdWVTb3VyY2UoSlNWYWx1ZVJlZ3MgcmVncykN
CiAgICAgICAgOiBtX29mZnNldChub3RBZGRyZXNzKCkpDQogICAgICAgICwgbV9iYXNlKHJlZ3Mu
Z3ByKCkpDQogICAgew0KICAgIH0NCiAgICANCiAgICBleHBsaWNpdCBKU1ZhbHVlU291cmNlKEdQ
UlJlZyBncHIpDQogICAgICAgIDogbV9vZmZzZXQobm90QWRkcmVzcygpKQ0KICAgICAgICAsIG1f
YmFzZShncHIpDQogICAgew0KICAgIH0NCiAgICANCiAgICBKU1ZhbHVlU291cmNlKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3MpDQogICAgICAgIDogbV9vZmZzZXQoYWRkcmVzcy5vZmZz
ZXQpDQogICAgICAgICwgbV9iYXNlKGFkZHJlc3MuYmFzZSkNCiAgICB7DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgSlNWYWx1
ZVNvdXJjZSB1bmJveGVkQ2VsbChHUFJSZWcgcGF5bG9hZEdQUikNCiAgICB7DQogICAgICAgIHJl
dHVybiBKU1ZhbHVlU291cmNlKHBheWxvYWRHUFIpOw0KICAgIH0NCiAgICANCiAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZSA9PSBJbnZhbGlkR1BSUmVnOyB9DQogICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZSAhPSBJbnZhbGlk
R1BSUmVnOyB9DQogICAgDQogICAgYm9vbCBpc0FkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldCAhPSBub3RBZGRyZXNzKCk7IH0NCiAgICANCiAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX29mZnNldDsNCiAg
ICB9DQogICAgDQogICAgR1BSUmVnIGJhc2UoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICByZXR1cm4gbV9iYXNlOw0KICAgIH0NCiAgICANCiAgICBHUFJSZWcgZ3By
KCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1fYmFz
ZTsNCiAgICB9DQoNCiAgICBHUFJSZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsgcmV0dXJuIGdwcigp
OyB9DQoNCiAgICBKU1ZhbHVlUmVncyByZWdzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVy
biBKU1ZhbHVlUmVncyhncHIoKSk7DQogICAgfQ0KICAgIA0KICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzIGFzQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2UoKSwgb2Zmc2V0KCkpOyB9DQogICAgDQpwcml2YXRlOg0KICAgIHN0YXRpYyBpbmxpbmUg
aW50MzJfdCBub3RBZGRyZXNzKCkgeyByZXR1cm4gMHg4MDAwMDAwMDsgfSAgICAgDQogICAgICAg
ICAgDQogICAgaW50MzJfdCBtX29mZnNldDsNCiAgICBHUFJSZWcgbV9iYXNlOw0KfTsNCiNsaW5l
IDE1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxq
aXRcXEdQUkluZm8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcR1BSSW5mby5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcR1BS
SW5mby5oIg0KDQoNCg0KDQoNCiNsaW5lIDM5OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8uaCINCg0KDQojbGluZSA0MDIgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJ
bmZvLmgiDQoNCmNsYXNzIEdQUkluZm8gew0KcHVibGljOg0KICAgIHR5cGVkZWYgR1BSUmVnIFJl
Z2lzdGVyVHlwZTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0
ZXJzID0gMTE7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50
UmVnaXN0ZXJzID0gNHU7DQoNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxs
RnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIG51bWJlclRhZ1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTQ7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1
Ow0KDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDAgPSBYODZSZWdpc3Rl
cnM6OmVheDsNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJbmZvLmgiDQogICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsNCiAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdUMiA9IFg4NlJlZ2lzdGVyczo6cjg7DQogICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnVDMgPSBYODZSZWdpc3RlcnM6OnI5Ow0KICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjpyMTA7DQogICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnVDUgPSBYODZSZWdpc3RlcnM6OmVjeDsNCiNsaW5lIDQzMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8u
aCINCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMCA9IFg4NlJlZ2lzdGVyczo6
ZWJ4Ow0KDQoNCg0KDQoNCg0KI2xpbmUgNDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcR1BSSW5mby5oIg0KICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTMSA9IFg4NlJlZ2lzdGVyczo6ZXNpOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTMiA9IFg4NlJlZ2lzdGVyczo6ZWRpOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTMyA9IFg4NlJlZ2lzdGVyczo6cjEyOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNCA9IFg4NlJlZ2lzdGVyczo6cjEzOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNSA9IFg4NlJlZ2lzdGVyczo6cjE0Ow0KICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNiA9IFg4NlJlZ2lzdGVyczo6cjE1Ow0KI2xpbmUgNDQ3ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcR1BSSW5mby5o
Ig0KDQogICAgDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ1NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8uaCINCiAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OmVjeDsgDQogICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFIxID0gWDg2UmVnaXN0ZXJzOjplZHg7
IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IFg4NlJlZ2lzdGVy
czo6cjg7IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IFg4NlJl
Z2lzdGVyczo6cjk7IA0KI2xpbmUgNDYyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcR1BSSW5mby5oIg0KICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIG5vbkFyZ0dQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgDQogICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSBYODZSZWdpc3RlcnM6OmVheDsgDQogICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7
IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9
IFg4NlJlZ2lzdGVyczo6cjEwOyANCiAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25Bcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsgDQogICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIxID0gWDg2UmVnaXN0ZXJz
OjplYXg7DQoNCiAgICANCiAgICANCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBw
YXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OnNfc2NyYXRjaFJlZ2lz
dGVyOw0KDQogICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQ0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KDQoNCiNsaW5lIDQ4MCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8uaCINCiAgICAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9
IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnQ1MwLCByZWdD
UzEsIHJlZ0NTMiwgcmVnQ1MzLCByZWdDUzQgfTsNCiNsaW5lIDQ4MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8uaCINCiAgICAg
ICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOw0KICAgIH0NCiAgICANCiAgICBzdGF0
aWMgR1BSUmVnIHRvQXJndW1lbnRSZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCg0KDQojbGluZSA0OTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJbmZvLmgiDQogICAgICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzXSA9
IHsgYXJndW1lbnRHUFIwLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMiwgYXJndW1lbnRHUFIz
IH07DQojbGluZSA0OTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaml0XFxHUFJJbmZvLmgiDQogICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4
W2luZGV4XTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVn
IHJlZykNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KDQoN
CiNsaW5lIDUwMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEdQUkluZm8uaCINCiAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4
Rm9yUmVnaXN0ZXJbMTZdID0geyAwLCA1LCAxLCA2LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgNywgOCwgMiwgMywgNCwgSW52YWxpZEluZGV4LCA5LCAxMCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXggfTsNCiNsaW5lIDUwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8uaCINCiAgICAgICAgcmV0dXJuIGluZGV4Rm9y
UmVnaXN0ZXJbcmVnXTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1l
KEdQUlJlZyByZWcpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlcjo6Z3ByTmFtZShyZWcpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdCBz
dGQ6OmFycmF5PEdQUlJlZywgMz4mIHJlc2VydmVkUmVnaXN0ZXJzKCkNCiAgICB7DQogICAgICAg
IHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PEdQUlJlZywgMz4gcmVzZXJ2ZWRSZWdpc3RlcnMgeyB7
DQogICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIsDQogICAgICAg
ICAgICBudW1iZXJUYWdSZWdpc3RlciwNCiAgICAgICAgICAgIG5vdENlbGxNYXNrUmVnaXN0ZXIs
DQogICAgICAgIH0gfTsNCiAgICAgICAgcmV0dXJuIHJlc2VydmVkUmVnaXN0ZXJzOw0KICAgIH0N
CiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZm
ZmZmZmY7DQp9Ow0KDQojbGluZSA1MjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJbmZvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU5NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxqaXRcXEdQUkluZm8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcxNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8uaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3OTIgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJbmZvLmgiDQoNCg0KDQoN
CnN0YXRpY19hc3NlcnQoKEdQUkluZm86OnJlZ1QwID09IEdQUkluZm86OnJldHVyblZhbHVlR1BS
KSwgInJlZ1QwX211c3RfZXF1YWxfcmV0dXJuVmFsdWVHUFIiKTsNCg0KDQojbGluZSA4MDAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJ
bmZvLmgiDQoNCmlubGluZSBHUFJSZWcgZXh0cmFjdFJlc3VsdChHUFJSZWcgcmVzdWx0KSB7IHJl
dHVybiByZXN1bHQ7IH0NCg0KaW5saW5lIEdQUlJlZyBleHRyYWN0UmVzdWx0KEpTVmFsdWVSZWdz
IHJlc3VsdCkgeyByZXR1cm4gcmVzdWx0LmdwcigpOyB9DQoNCg0KI2xpbmUgODA3ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcR1BSSW5mby5o
Ig0KaW5saW5lIE5vUmVzdWx0VGFnIGV4dHJhY3RSZXN1bHQoTm9SZXN1bHRUYWcpIHsgcmV0dXJu
IE5vUmVzdWx0OyB9DQoNCg0KY29uc3RleHByIEdQUkluZm8gdG9JbmZvRnJvbVJlZyhHUFJSZWcp
IHsgcmV0dXJuIEdQUkluZm8oKTsgfQ0KDQojbGluZSA4MTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHUFJJbmZvLmgiDQoNCn0gDQoNCm5h
bWVzcGFjZSBXVEYgew0KDQppbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6R1BSUmVnIHJlZykNCnsNCg0KICAgIG91dC5wcmludCgiJSIsIEpTQzo6R1BSSW5m
bzo6ZGVidWdOYW1lKHJlZykpOw0KDQoNCiNsaW5lIDgyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdQUkluZm8uaCINCn0NCg0KfSANCiNs
aW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGludGVycHJldGVyXFxWTUVudHJ5UmVjb3JkLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpzdHJ1
Y3QgRW50cnlGcmFtZTsNCmNsYXNzIENhbGxGcmFtZTsNCmNsYXNzIEpTR2xvYmFsT2JqZWN0Ow0K
Y2xhc3MgSlNPYmplY3Q7DQpjbGFzcyBWTTsNCg0Kc3RydWN0IFZNRW50cnlSZWNvcmQgew0KICAg
IA0KDQoNCg0KICAgIFZNKiBtX3ZtOw0KICAgIENhbGxGcmFtZSogbV9wcmV2VG9wQ2FsbEZyYW1l
Ow0KICAgIEVudHJ5RnJhbWUqIG1fcHJldlRvcEVudHJ5RnJhbWU7DQogICAgSlNPYmplY3QqIG1f
Y2FsbGVlOw0KDQogICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVl
OyB9DQoNCg0KICAgIENQVVJlZ2lzdGVyIGNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJbN3VdOw0K
DQoNCiNsaW5lIDU1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGludGVycHJldGVyXFxWTUVudHJ5UmVjb3JkLmgiDQoNCiAgICBDYWxsRnJhbWUqIHBy
ZXZUb3BDYWxsRnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BDYWxsRnJhbWU7IH0NCiAgICAgQ2Fs
bEZyYW1lKiB1bnNhZmVQcmV2VG9wQ2FsbEZyYW1lKCkgeyByZXR1cm4gbV9wcmV2VG9wQ2FsbEZy
YW1lOyB9DQoNCiAgICBFbnRyeUZyYW1lKiBwcmV2VG9wRW50cnlGcmFtZSgpIHsgcmV0dXJuIG1f
cHJldlRvcEVudHJ5RnJhbWU7IH0NCiAgICAgRW50cnlGcmFtZSogdW5zYWZlUHJldlRvcEVudHJ5
RnJhbWUoKSB7IHJldHVybiBtX3ByZXZUb3BFbnRyeUZyYW1lOyB9DQp9Ow0KDQpleHRlcm4gIkMi
IFZNRW50cnlSZWNvcmQqIHZtRW50cnlSZWNvcmQoRW50cnlGcmFtZSopOw0KDQp9IA0KI2xpbmUg
MzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50
ZXJwcmV0ZXJcXENhbGxGcmFtZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRW51bUNsYXNzT3BlcmF0b3JPdmVybG9h
ZHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENh
bGxGcmFtZS5oIg0KDQpuYW1lc3BhY2UgSlNDICB7DQoNCiAgICBjbGFzcyBBcmd1bWVudHM7DQog
ICAgY2xhc3MgQ2FsbEZyYW1lOw0KICAgIGNsYXNzIEludGVycHJldGVyOw0KICAgIGNsYXNzIEpT
Q2FsbGVlOw0KICAgIGNsYXNzIEpTU2NvcGU7DQogICAgY2xhc3MgU291cmNlT3JpZ2luOw0KDQog
ICAgc3RydWN0IEluc3RydWN0aW9uOw0KDQogICAgY2xhc3MgQ2FsbFNpdGVJbmRleCB7DQogICAg
cHVibGljOg0KICAgICAgICBDYWxsU2l0ZUluZGV4KCkgPSBkZWZhdWx0Ow0KICAgICAgICANCiAg
ICAgICAgZXhwbGljaXQgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgp
DQogICAgICAgICAgICA6IG1fYml0cyhieXRlY29kZUluZGV4Lm9mZnNldCgpKQ0KICAgICAgICB7
IA0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICB9DQogICAgICAgIGV4cGxpY2l0IENh
bGxTaXRlSW5kZXgodWludDMyX3QgYml0cykNCiAgICAgICAgICAgIDogbV9iaXRzKGJpdHMpDQog
ICAgICAgIHsgfQ0KDQogICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fYml0czsgfQ0KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsbFNpdGVJ
bmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyA9PSBvdGhlci5tX2JpdHM7IH0NCg0K
ICAgICAgICB1aW50MzJfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9DQogICAgICAg
IHN0YXRpYyBDYWxsU2l0ZUluZGV4IGZyb21CaXRzKHVpbnQzMl90IGJpdHMpIHsgcmV0dXJuIENh
bGxTaXRlSW5kZXgoYml0cyk7IH0NCg0KICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBCeXRlY29kZUluZGV4KGJpdHMoKSk7IH0NCg0KICAgIHByaXZh
dGU6DQogICAgICAgIHVpbnQzMl90IG1fYml0cyB7IEJ5dGVjb2RlSW5kZXgoKS5vZmZzZXQoKSB9
Ow0KICAgIH07DQoNCiAgICBjbGFzcyBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCA6IHB1YmxpYyBD
YWxsU2l0ZUluZGV4IHsNCiAgICBwdWJsaWM6DQogICAgICAgIERpc3Bvc2FibGVDYWxsU2l0ZUlu
ZGV4KCkgPSBkZWZhdWx0Ow0KDQogICAgICAgIGV4cGxpY2l0IERpc3Bvc2FibGVDYWxsU2l0ZUlu
ZGV4KHVpbnQzMl90IGJpdHMpDQogICAgICAgICAgICA6IENhbGxTaXRlSW5kZXgoYml0cykNCiAg
ICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIERpc3Bvc2FibGVDYWxsU2l0ZUlu
ZGV4IGZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCkNCiAgICAg
ICAgew0KICAgICAgICAgICAgcmV0dXJuIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4KGNhbGxTaXRl
SW5kZXguYml0cygpKTsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICANCiAgICBzdHJ1Y3QgQ2Fs
bGVyRnJhbWVBbmRQQyB7DQogICAgICAgIGFsaWduYXMoQ1BVUmVnaXN0ZXIpIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWU7DQogICAgICAgIGFsaWduYXMoQ1BVUmVnaXN0ZXIpIHZvaWQqIHJldHVyblBD
Ow0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBzaXplSW5SZWdpc3RlcnMgPSAyICogc2l6
ZW9mKENQVVJlZ2lzdGVyKSAvIHNpemVvZihSZWdpc3Rlcik7DQogICAgfTsNCiAgICBzdGF0aWNf
YXNzZXJ0KENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVycyA9PSBzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykgLyBzaXplb2YoUmVnaXN0ZXIpLCAiQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUlu
UmVnaXN0ZXJzIGlzIGluY29ycmVjdC4iKTsNCg0KICAgIGVudW0gY2xhc3MgQ2FsbEZyYW1lU2xv
dCA6IGludCB7DQogICAgICAgIGNvZGVCbG9jayA9IENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJl
Z2lzdGVycywNCiAgICAgICAgY2FsbGVlID0gY29kZUJsb2NrICsgMSwNCiAgICAgICAgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsZWUgKyAxLA0KICAgICAgICB0aGlzQXJndW1lbnQg
PSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIDEsDQogICAgICAgIGZpcnN0QXJndW1lbnQg
PSB0aGlzQXJndW1lbnQgKyAxLA0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
b25zdGV4cHIgYXV0byBvcGVyYXRvciArKENhbGxGcmFtZVNsb3QgZW51bUVudHJ5LCBUIHZhbHVl
KSAtPiBzdGQ6OmVuYWJsZV9pZl90PChzdGQ6OmlzX2ludGVncmFsX3Y8VD4pLCBUPiB7IHJldHVy
biBzdGF0aWNfY2FzdDxUPihlbnVtRW50cnkpICsgdmFsdWU7IH0gdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY29uc3RleHByIGF1dG8gb3BlcmF0b3IgKyhUIHZhbHVlLCBDYWxsRnJhbWVTbG90IGVudW1F
bnRyeSkgLT4gc3RkOjplbmFibGVfaWZfdDwoc3RkOjppc19pbnRlZ3JhbF92PFQ+KSwgVD4geyBy
ZXR1cm4gdmFsdWUgKyBzdGF0aWNfY2FzdDxUPihlbnVtRW50cnkpOyB9IHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yIC0oQ2FsbEZyYW1lU2xvdCBlbnVtRW50cnks
IFQgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8KHN0ZDo6aXNfaW50ZWdyYWxfdjxUPiksIFQ+
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGVudW1FbnRyeSkgLSB2YWx1ZTsgfSB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjb25zdGV4cHIgYXV0byBvcGVyYXRvciAtKFQgdmFsdWUsIENhbGxGcmFtZVNs
b3QgZW51bUVudHJ5KSAtPiBzdGQ6OmVuYWJsZV9pZl90PChzdGQ6OmlzX2ludGVncmFsX3Y8VD4p
LCBUPiB7IHJldHVybiB2YWx1ZSAtIHN0YXRpY19jYXN0PFQ+KGVudW1FbnRyeSk7IH0gdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGF1dG8gb3BlcmF0b3IgKihDYWxsRnJhbWVTbG90IGVu
dW1FbnRyeSwgVCB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwoc3RkOjppc19pbnRlZ3JhbF92
PFQ+KSwgVD4geyByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oZW51bUVudHJ5KSAqIHZhbHVlOyB9IHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yICooVCB2YWx1ZSwgQ2Fs
bEZyYW1lU2xvdCBlbnVtRW50cnkpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8KHN0ZDo6aXNfaW50ZWdy
YWxfdjxUPiksIFQ+IHsgcmV0dXJuIHZhbHVlICogc3RhdGljX2Nhc3Q8VD4oZW51bUVudHJ5KTsg
fSB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYXV0byBvcGVyYXRvciAvKENhbGxGcmFt
ZVNsb3QgZW51bUVudHJ5LCBUIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PChzdGQ6OmlzX2lu
dGVncmFsX3Y8VD4pLCBUPiB7IHJldHVybiBzdGF0aWNfY2FzdDxUPihlbnVtRW50cnkpIC8gdmFs
dWU7IH0gdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGF1dG8gb3BlcmF0b3IgLyhUIHZh
bHVlLCBDYWxsRnJhbWVTbG90IGVudW1FbnRyeSkgLT4gc3RkOjplbmFibGVfaWZfdDwoc3RkOjpp
c19pbnRlZ3JhbF92PFQ+KSwgVD4geyByZXR1cm4gdmFsdWUgLyBzdGF0aWNfY2FzdDxUPihlbnVt
RW50cnkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yICUo
Q2FsbEZyYW1lU2xvdCBlbnVtRW50cnksIFQgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8KHN0
ZDo6aXNfaW50ZWdyYWxfdjxUPiksIFQ+IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGVudW1FbnRy
eSkgJSB2YWx1ZTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYXV0byBvcGVyYXRv
ciAlKFQgdmFsdWUsIENhbGxGcmFtZVNsb3QgZW51bUVudHJ5KSAtPiBzdGQ6OmVuYWJsZV9pZl90
PChzdGQ6OmlzX2ludGVncmFsX3Y8VD4pLCBUPiB7IHJldHVybiB2YWx1ZSAlIHN0YXRpY19jYXN0
PFQ+KGVudW1FbnRyeSk7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYXV0
byBvcGVyYXRvciA9PShDYWxsRnJhbWVTbG90IGVudW1FbnRyeSwgVCB2YWx1ZSkgLT4gc3RkOjpl
bmFibGVfaWZfdDwoc3RkOjppc19pbnRlZ3JhbF92PFQ+KSwgVD4geyByZXR1cm4gc3RhdGljX2Nh
c3Q8VD4oZW51bUVudHJ5KSA9PSB2YWx1ZTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4
cHIgYXV0byBvcGVyYXRvciA9PShUIHZhbHVlLCBDYWxsRnJhbWVTbG90IGVudW1FbnRyeSkgLT4g
c3RkOjplbmFibGVfaWZfdDwoc3RkOjppc19pbnRlZ3JhbF92PFQ+KSwgVD4geyByZXR1cm4gdmFs
dWUgPT0gc3RhdGljX2Nhc3Q8VD4oZW51bUVudHJ5KTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
b25zdGV4cHIgYXV0byBvcGVyYXRvciAhPShDYWxsRnJhbWVTbG90IGVudW1FbnRyeSwgVCB2YWx1
ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwoc3RkOjppc19pbnRlZ3JhbF92PFQ+KSwgVD4geyByZXR1
cm4gc3RhdGljX2Nhc3Q8VD4oZW51bUVudHJ5KSAhPSB2YWx1ZTsgfSB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjb25zdGV4cHIgYXV0byBvcGVyYXRvciAhPShUIHZhbHVlLCBDYWxsRnJhbWVTbG90IGVu
dW1FbnRyeSkgLT4gc3RkOjplbmFibGVfaWZfdDwoc3RkOjppc19pbnRlZ3JhbF92PFQ+KSwgVD4g
eyByZXR1cm4gdmFsdWUgIT0gc3RhdGljX2Nhc3Q8VD4oZW51bUVudHJ5KTsgfSB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjb25zdGV4cHIgYXV0byBvcGVyYXRvciA8KENhbGxGcmFtZVNsb3QgZW51bUVu
dHJ5LCBUIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PChzdGQ6OmlzX2ludGVncmFsX3Y8VD4p
LCBUPiB7IHJldHVybiBzdGF0aWNfY2FzdDxUPihlbnVtRW50cnkpIDwgdmFsdWU7IH0gdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGF1dG8gb3BlcmF0b3IgPChUIHZhbHVlLCBDYWxsRnJh
bWVTbG90IGVudW1FbnRyeSkgLT4gc3RkOjplbmFibGVfaWZfdDwoc3RkOjppc19pbnRlZ3JhbF92
PFQ+KSwgVD4geyByZXR1cm4gdmFsdWUgPCBzdGF0aWNfY2FzdDxUPihlbnVtRW50cnkpOyB9IHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yIDw9KENhbGxGcmFtZVNs
b3QgZW51bUVudHJ5LCBUIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PChzdGQ6OmlzX2ludGVn
cmFsX3Y8VD4pLCBUPiB7IHJldHVybiBzdGF0aWNfY2FzdDxUPihlbnVtRW50cnkpIDw9IHZhbHVl
OyB9IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yIDw9KFQgdmFs
dWUsIENhbGxGcmFtZVNsb3QgZW51bUVudHJ5KSAtPiBzdGQ6OmVuYWJsZV9pZl90PChzdGQ6Omlz
X2ludGVncmFsX3Y8VD4pLCBUPiB7IHJldHVybiB2YWx1ZSA8PSBzdGF0aWNfY2FzdDxUPihlbnVt
RW50cnkpOyB9IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yID4o
Q2FsbEZyYW1lU2xvdCBlbnVtRW50cnksIFQgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8KHN0
ZDo6aXNfaW50ZWdyYWxfdjxUPiksIFQ+IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGVudW1FbnRy
eSkgPiB2YWx1ZTsgfSB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYXV0byBvcGVyYXRv
ciA+KFQgdmFsdWUsIENhbGxGcmFtZVNsb3QgZW51bUVudHJ5KSAtPiBzdGQ6OmVuYWJsZV9pZl90
PChzdGQ6OmlzX2ludGVncmFsX3Y8VD4pLCBUPiB7IHJldHVybiB2YWx1ZSA+IHN0YXRpY19jYXN0
PFQ+KGVudW1FbnRyeSk7IH0gdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGF1dG8gb3Bl
cmF0b3IgPj0oQ2FsbEZyYW1lU2xvdCBlbnVtRW50cnksIFQgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxl
X2lmX3Q8KHN0ZDo6aXNfaW50ZWdyYWxfdjxUPiksIFQ+IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+
KGVudW1FbnRyeSkgPj0gdmFsdWU7IH0gdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGF1
dG8gb3BlcmF0b3IgPj0oVCB2YWx1ZSwgQ2FsbEZyYW1lU2xvdCBlbnVtRW50cnkpIC0+IHN0ZDo6
ZW5hYmxlX2lmX3Q8KHN0ZDo6aXNfaW50ZWdyYWxfdjxUPiksIFQ+IHsgcmV0dXJuIHZhbHVlID49
IHN0YXRpY19jYXN0PFQ+KGVudW1FbnRyeSk7IH0NCg0KICAgIA0KICAgIA0KICAgIGNsYXNzIENh
bGxGcmFtZSA6IHByaXZhdGUgUmVnaXN0ZXIgew0KICAgIHB1YmxpYzoNCiAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgaGVhZGVyU2l6ZUluUmVnaXN0ZXJzID0gc3RhdGljX2Nhc3Q8aW50PihD
YWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgKyAxOw0KDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIA0KICAgICAgICBpbmxpbmUgSlNWYWx1ZSBndWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSgpIGNv
bnN0Ow0KICAgICAgICBpbmxpbmUgSlNPYmplY3QqIGpzQ2FsbGVlKCkgY29uc3Q7DQogICAgICAg
IENhbGxlZUJpdHMgY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gQ2FsbGVlQml0cyh0aGlzW3N0YXRp
Y19jYXN0PGludD4oQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKV0ucG9pbnRlcigpKTsgfQ0KICAgICAg
ICAgQ2FsbGVlQml0cyB1bnNhZmVDYWxsZWUoKSBjb25zdCB7IHJldHVybiBDYWxsZWVCaXRzKHRo
aXNbc3RhdGljX2Nhc3Q8aW50PihDYWxsRnJhbWVTbG90OjpjYWxsZWUpXS5hc2FuVW5zYWZlUG9p
bnRlcigpKTsgfQ0KICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0Ow0KICAgICAg
ICBDb2RlQmxvY2sqKiBhZGRyZXNzT2ZDb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8Q29kZUJsb2NrKio+KHRoaXMgKyBzdGF0aWNfY2FzdDxpbnQ+KENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jaykpOyB9DQogICAgICAgIGlubGluZSAgQ29kZUJsb2NrKiB1bnNhZmVDb2RlQmxv
Y2soKSBjb25zdDsNCiAgICAgICAgaW5saW5lIEpTU2NvcGUqIHNjb3BlKGludCBzY29wZVJlZ2lz
dGVyT2Zmc2V0KSBjb25zdDsNCg0KICAgICAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBp
c0FueVdhc21DYWxsZWUoKTsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KFZNJikgY29uc3Q7DQoNCiAgICAgICAgDQogICAg
ICAgIA0KICAgICAgICBWTSYgZGVwcmVjYXRlZFZNKCkgY29uc3Q7DQoNCiAgICAgICAgc3RhdGlj
IENhbGxGcmFtZSogY3JlYXRlKFJlZ2lzdGVyKiBjYWxsRnJhbWVCYXNlKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxDYWxsRnJhbWUqPihjYWxsRnJhbWVCYXNlKTsgfQ0KICAgICAgICBSZWdpc3Rlciog
cmVnaXN0ZXJzKCkgeyByZXR1cm4gdGhpczsgfQ0KICAgICAgICBjb25zdCBSZWdpc3RlciogcmVn
aXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQ0KDQogICAgICAgIENhbGxGcmFtZSYgb3Bl
cmF0b3I9KGNvbnN0IFJlZ2lzdGVyJiByKSB7ICpzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMp
ID0gcjsgcmV0dXJuICp0aGlzOyB9DQoNCiAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxGcmFtZSo+KGNhbGxlckZyYW1lT3JFbnRy
eUZyYW1lKCkpOyB9DQogICAgICAgIHZvaWQqIGNhbGxlckZyYW1lT3JFbnRyeUZyYW1lKCkgY29u
c3QgeyByZXR1cm4gY2FsbGVyRnJhbWVBbmRQQygpLmNhbGxlckZyYW1lOyB9DQogICAgICAgICB2
b2lkKiB1bnNhZmVDYWxsZXJGcmFtZU9yRW50cnlGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHVuc2Fm
ZUNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZTsgfQ0KDQogICAgICAgIENhbGxGcmFtZSog
dW5zYWZlQ2FsbGVyRnJhbWUoRW50cnlGcmFtZSomKSBjb25zdDsNCiAgICAgICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIENhbGxGcmFtZSogY2FsbGVyRnJhbWUoRW50cnlGcmFtZSomKSBjb25zdDsN
Cg0KICAgICAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU291cmNlT3JpZ2luIGNhbGxlclNvdXJj
ZU9yaWdpbihWTSYpOw0KDQogICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgY2FsbGVyRnJhbWVPZmZz
ZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxDYWxsZXJGcmFtZUFuZFBDKj4oMHg0MDAwKS0+Y2FsbGVyRnJhbWUpKSAtIDB4NDAwMCk7
IH0NCg0KICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDKCkgY29uc3QgeyByZXR1cm4g
UmV0dXJuQWRkcmVzc1B0cihjYWxsZXJGcmFtZUFuZFBDKCkucmV0dXJuUEMpOyB9DQogICAgICAg
IGJvb2wgaGFzUmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiAhIWNhbGxlckZyYW1lQW5kUEMoKS5y
ZXR1cm5QQzsgfQ0KICAgICAgICB2b2lkIGNsZWFyUmV0dXJuUEMoKSB7IGNhbGxlckZyYW1lQW5k
UEMoKS5yZXR1cm5QQyA9IG51bGxwdHI7IH0NCiAgICAgICAgc3RhdGljIHB0cmRpZmZfdCByZXR1
cm5QQ09mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWlu
dGVycHJldF9jYXN0PENhbGxlckZyYW1lQW5kUEMqPigweDQwMDApLT5yZXR1cm5QQykpIC0gMHg0
MDAwKTsgfQ0KICAgICAgICBBYnN0cmFjdFBDIGFic3RyYWN0UmV0dXJuUEMoVk0mIHZtKSB7IHJl
dHVybiBBYnN0cmFjdFBDKHZtLCB0aGlzKTsgfQ0KDQogICAgICAgIGJvb2wgY2FsbFNpdGVCaXRz
QXJlQnl0ZWNvZGVPZmZzZXQoKSBjb25zdDsNCiAgICAgICAgYm9vbCBjYWxsU2l0ZUJpdHNBcmVD
b2RlT3JpZ2luSW5kZXgoKSBjb25zdDsNCg0KICAgICAgICB1bnNpZ25lZCBjYWxsU2l0ZUFzUmF3
Qml0cygpIGNvbnN0Ow0KICAgICAgICB1bnNpZ25lZCB1bnNhZmVDYWxsU2l0ZUFzUmF3Qml0cygp
IGNvbnN0Ow0KICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgoKSBjb25zdDsNCiAg
ICAgICAgQ2FsbFNpdGVJbmRleCB1bnNhZmVDYWxsU2l0ZUluZGV4KCkgY29uc3Q7DQogICAgcHJp
dmF0ZToNCiAgICAgICAgdW5zaWduZWQgY2FsbFNpdGVCaXRzQXNCeXRlY29kZU9mZnNldCgpIGNv
bnN0Ow0KDQoNCiNsaW5lIDE3MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxpbnRlcnByZXRlclxcQ2FsbEZyYW1lLmgiDQogICAgcHVibGljOg0KDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KCk7DQogICAgICAgIA0KICAgICAgICANCiAgICAg
ICAgDQogICAgICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBDb2RlT3JpZ2luIGNvZGVPcmlnaW4o
KTsNCg0KICAgICAgICBpbmxpbmUgUmVnaXN0ZXIqIHRvcE9mRnJhbWUoKTsNCiAgICANCiAgICAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdDsgDQogICAgICAgIHZvaWQg
c2V0Q3VycmVudFZQQyhjb25zdCBJbnN0cnVjdGlvbiopOw0KDQogICAgICAgIHZvaWQgc2V0Q2Fs
bGVyRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSkgeyBjYWxsZXJGcmFtZUFuZFBDKCkuY2FsbGVyRnJh
bWUgPSBmcmFtZTsgfQ0KICAgICAgICBpbmxpbmUgdm9pZCBzZXRTY29wZShpbnQgc2NvcGVSZWdp
c3Rlck9mZnNldCwgSlNTY29wZSopOw0KDQogICAgICAgIHN0YXRpYyB2b2lkIGluaXREZXByZWNh
dGVkQ2FsbEZyYW1lRm9yRGVidWdnZXIoQ2FsbEZyYW1lKiBnbG9iYWxFeGVjLCBKU0NhbGxlZSog
Z2xvYmFsQ2FsbGVlKTsNCg0KICAgICAgICANCiAgICAgICAgUmVnaXN0ZXImIHIoVmlydHVhbFJl
Z2lzdGVyKTsNCiAgICAgICAgDQogICAgICAgIFJlZ2lzdGVyJiB1bmNoZWNrZWRSKFZpcnR1YWxS
ZWdpc3Rlcik7DQoNCiAgICAgICAgDQogICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50KCkgY29u
c3QgeyByZXR1cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0NCiAgICAgICAg
c2l6ZV90IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgY29uc3QgeyByZXR1cm4gdGhpc1tz
dGF0aWNfY2FzdDxpbnQ+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KV0ucGF5bG9hZCgpOyB9DQogICAgICAgIHN0YXRpYyBpbnQgYXJndW1lbnRPZmZzZXQoaW50IGFy
Z3VtZW50KSB7IHJldHVybiAoQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudCArIGFyZ3VtZW50
KTsgfQ0KICAgICAgICBzdGF0aWMgaW50IGFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcyhpbnQg
YXJndW1lbnQpIHsgcmV0dXJuIChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKyBhcmd1bWVu
dCk7IH0NCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQoNCiAgICAgICAgSlNWYWx1ZSogYWRkcmVz
c09mQXJndW1lbnRzU3RhcnQoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+
KHRoaXMgKyBhcmd1bWVudE9mZnNldCgwKSk7IH0NCiAgICAgICAgSlNWYWx1ZSBhcmd1bWVudChz
aXplX3QgYXJndW1lbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChhcmd1bWVudCA+PSBh
cmd1bWVudENvdW50KCkpDQogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOw0K
ICAgICAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50VW5zYWZlKGFyZ3VtZW50KTsNCiAgICAgICAg
fQ0KICAgICAgICBKU1ZhbHVlIHVuY2hlY2tlZEFyZ3VtZW50KHNpemVfdCBhcmd1bWVudCkNCiAg
ICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIGdldEFy
Z3VtZW50VW5zYWZlKGFyZ3VtZW50KTsNCiAgICAgICAgfQ0KICAgICAgICB2b2lkIHNldEFyZ3Vt
ZW50KHNpemVfdCBhcmd1bWVudCwgSlNWYWx1ZSB2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAg
ICAgdGhpc1thcmd1bWVudE9mZnNldChhcmd1bWVudCldID0gdmFsdWU7DQogICAgICAgIH0NCg0K
ICAgICAgICBKU1ZhbHVlIGdldEFyZ3VtZW50VW5zYWZlKHNpemVfdCBhcmdJbmRleCkNCiAgICAg
ICAgew0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgDQogICAgICAgICAgICByZXR1cm4gdGhpc1thcmd1bWVudE9mZnNldChhcmdJbmRleCldLmpz
VmFsdWUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHN0YXRpYyBpbnQgdGhpc0FyZ3VtZW50T2Zm
c2V0KCkgeyByZXR1cm4gYXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApOyB9DQogICAgICAg
IEpTVmFsdWUgdGhpc1ZhbHVlKCkgeyByZXR1cm4gdGhpc1t0aGlzQXJndW1lbnRPZmZzZXQoKV0u
anNWYWx1ZSgpOyB9DQogICAgICAgIHZvaWQgc2V0VGhpc1ZhbHVlKEpTVmFsdWUgdmFsdWUpIHsg
dGhpc1t0aGlzQXJndW1lbnRPZmZzZXQoKV0gPSB2YWx1ZTsgfQ0KDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgSlNWYWx1ZSBuZXdUYXJnZXQoKSB7IHJldHVybiB0aGlzVmFsdWUoKTsgfQ0K
DQogICAgICAgIEpTVmFsdWUgYXJndW1lbnRBZnRlckNhcHR1cmUoc2l6ZV90IGFyZ3VtZW50KTsN
Cg0KICAgICAgICBzdGF0aWMgaW50IG9mZnNldEZvcihzaXplX3QgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpIHsgcmV0dXJuIENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCArIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIC0gMTsgfQ0KDQogICAgICAgIHN0YXRpYyBDYWxsRnJhbWUqIG5v
Q2FsbGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQ0KICAgICAgICBib29sIGlzRGVwcmVjYXRlZENh
bGxGcmFtZUZvckRlYnVnZ2VyKCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJu
IGNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJGcmFtZSA9PSBub0NhbGxlcigpICYmIGNhbGxlckZy
YW1lQW5kUEMoKS5yZXR1cm5QQyA9PSBudWxscHRyOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9p
ZCBjb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoVk0mLCBDb2RlQmxvY2sqIGNvZGVCbG9ja1Rv
S2VlcEFsaXZlVW50aWxGcmFtZUlzVW53b3VuZCk7DQogICAgICAgIGJvb2wgaXNTdGFja092ZXJm
bG93RnJhbWUoKSBjb25zdDsNCiAgICAgICAgYm9vbCBpc1dhc21GcmFtZSgpIGNvbnN0Ow0KDQog
ICAgICAgIHZvaWQgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoaW50IGNvdW50KSB7IHN0
YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbc3RhdGljX2Nhc3Q8aW50PihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyldLnBheWxvYWQoKSA9IGNvdW50OyB9DQogICAg
ICAgIGlubGluZSB2b2lkIHNldENhbGxlZShKU09iamVjdCopOw0KICAgICAgICBpbmxpbmUgdm9p
ZCBzZXRDb2RlQmxvY2soQ29kZUJsb2NrKik7DQogICAgICAgIHZvaWQgc2V0UmV0dXJuUEModm9p
ZCogdmFsdWUpIHsgY2FsbGVyRnJhbWVBbmRQQygpLnJldHVyblBDID0gdmFsdWU7IH0NCg0KICAg
ICAgICBTdHJpbmcgZnJpZW5kbHlGdW5jdGlvbk5hbWUoKTsNCg0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHRlbXBsYXRlIDxTdGFja1Zp
c2l0b3I6OkVtcHR5RW50cnlGcmFtZUFjdGlvbiBhY3Rpb24gPSBTdGFja1Zpc2l0b3I6OkNvbnRp
bnVlSWZUb3BFbnRyeUZyYW1lSXNFbXB0eSwgdHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRl
KFZNJiB2bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikNCiAgICAgICAgew0KICAgICAgICAgICAg
dm9pZCogcmF3VGhpcyA9IHRoaXM7DQogICAgICAgICAgICBpZiAoISFyYXdUaGlzKQ0KICAgICAg
ICAgICAgICAgIGRvIHsgaWYgKCghKGNhbGxlZSgpLmlzQ2VsbCgpKSkpIGRvIHsgV1RGOjppc0lu
dGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hX
aXRoSW5mbygyNzgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGludGVycHJldGVyXFxDYWxsRnJhbWUuaCIsICBfX0ZVTkNUSU9OX18gICwgNTUgKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgICAgIFN0YWNrVmlzaXRvcjo6
dmlzaXQ8YWN0aW9uLCBGdW5jdG9yPih0aGlzLCB2bSwgZnVuY3Rvcik7DQogICAgICAgIH0NCg0K
ICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKTsNCg0KICAgICAgICANCiAgICAgICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IGNoYXIqIGRlc2NyaWJlRnJhbWUoKTsNCg0KICAgIHBy
aXZhdGU6DQoNCiAgICAgICAgQ2FsbEZyYW1lKCk7DQogICAgICAgIH5DYWxsRnJhbWUoKTsNCg0K
ICAgICAgICBSZWdpc3RlciogdG9wT2ZGcmFtZUludGVybmFsKCk7DQoNCiAgICAgICAgDQogICAg
ICAgIA0KDQogICAgICAgIHNpemVfdCBhcmdJbmRleEZvclJlZ2lzdGVyKFJlZ2lzdGVyKiByZWcp
DQogICAgICAgIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcmVnIC0g
dGhpcy0+cmVnaXN0ZXJzKCk7DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAg
ICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgc2l6ZV90IGFyZ0luZGV4ID0gb2Zmc2V0
IC0gQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudDsNCiAgICAgICAgICAgIHJldHVybiBhcmdJ
bmRleDsNCiAgICAgICAgfQ0KDQogICAgICAgIENhbGxlckZyYW1lQW5kUEMmIGNhbGxlckZyYW1l
QW5kUEMoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxDYWxsZXJGcmFtZUFuZFBDKj4odGhp
cyk7IH0NCiAgICAgICAgY29uc3QgQ2FsbGVyRnJhbWVBbmRQQyYgY2FsbGVyRnJhbWVBbmRQQygp
IGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IENhbGxlckZyYW1lQW5kUEMq
Pih0aGlzKTsgfQ0KICAgICAgICAgY29uc3QgQ2FsbGVyRnJhbWVBbmRQQyYgdW5zYWZlQ2FsbGVy
RnJhbWVBbmRQQygpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IENhbGxl
ckZyYW1lQW5kUEMqPih0aGlzKTsgfQ0KICAgIH07DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBi
b29sIGlzRnJvbUpTQ29kZSh2b2lkKiByZXR1cm5BZGRyZXNzKTsNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgMzI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGludGVycHJldGVyXFxDYWxsRnJhbWUuaCINCg0KI2xpbmUgMzMwICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGludGVycHJldGVyXFxDYWxsRnJhbWUu
aCINCg0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcU2FtcGxpbmdQcm9maWxlci5oIg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxc
Q29kZUJsb2NrSGFzaC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjbGFzcyBTb3VyY2VDb2RlOw0KDQpjbGFzcyBDb2RlQmxvY2tIYXNoIHsNCnB1
YmxpYzoNCiAgICBDb2RlQmxvY2tIYXNoKCkNCiAgICAgICAgOiBtX2hhc2goMCkNCiAgICB7DQog
ICAgfQ0KICAgIA0KICAgIGV4cGxpY2l0IENvZGVCbG9ja0hhc2godW5zaWduZWQgaGFzaCkNCiAg
ICAgICAgOiBtX2hhc2goaGFzaCkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIENvZGVCbG9ja0hh
c2goY29uc3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOw0KICAgIA0KICAg
IGV4cGxpY2l0IENvZGVCbG9ja0hhc2goY29uc3QgY2hhciopOw0KDQogICAgYm9vbCBpc1NldCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9oYXNoOyB9DQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhaXNTZXQoKTsgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJl
dHVybiBtX2hhc2g7IH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsN
CiAgICANCiAgICANCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA9PSBvdGhlci5oYXNoKCk7IH0NCiAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2go
KSAhPSBvdGhlci5oYXNoKCk7IH0NCiAgICBib29sIG9wZXJhdG9yPChjb25zdCBDb2RlQmxvY2tI
YXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpIDwgb3RoZXIuaGFzaCgpOyB9DQogICAg
Ym9vbCBvcGVyYXRvcj4oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IGhhc2goKSA+IG90aGVyLmhhc2goKTsgfQ0KICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBDb2Rl
QmxvY2tIYXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpIDw9IG90aGVyLmhhc2goKTsg
fQ0KICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDb2RlQmxvY2tIYXNoJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gaGFzaCgpID49IG90aGVyLmhhc2goKTsgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICB1
bnNpZ25lZCBtX2hhc2g7DQp9Ow0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU2FtcGxpbmdQcm9maWxlci5o
Ig0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEpJVENvZGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQXJpdHlDaGVja01vZGUu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQplbnVtIEFyaXR5Q2hlY2tNb2RlIHsNCiAg
ICBBcml0eUNoZWNrTm90UmVxdWlyZWQsDQogICAgTXVzdENoZWNrQXJpdHkNCn07DQoNCn0gDQoj
bGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxqaXRcXEpJVENvZGUuaCINCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXFJlZ2lzdGVyU2V0LmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaml0XFxSZWcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBSZWcgew0KcHVibGlj
Og0KICAgIFJlZygpDQogICAgICAgIDogbV9pbmRleChpbnZhbGlkKCkpDQogICAgew0KICAgIH0N
Cg0KICAgIFJlZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpDQogICAgICAgIDogbV9p
bmRleChkZWxldGVkKCkpDQogICAgew0KICAgIH0NCiAgICANCiAgICBSZWcoTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgcmVnKQ0KICAgICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJl
Z2lzdGVySW5kZXgocmVnKSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIFJlZyhNYWNyb0Fzc2Vt
Ymxlcjo6RlBSZWdpc3RlcklEIHJlZykNCiAgICAgICAgOiBtX2luZGV4KE1hY3JvQXNzZW1ibGVy
OjpyZWdpc3RlckluZGV4KHJlZykpDQogICAgew0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgUmVn
IGZyb21JbmRleCh1bnNpZ25lZCBpbmRleCkNCiAgICB7DQogICAgICAgIFJlZyByZXN1bHQ7DQog
ICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5kZXg7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQog
ICAgfQ0KICAgIA0KICAgIHN0YXRpYyBSZWcgZmlyc3QoKQ0KICAgIHsNCiAgICAgICAgUmVnIHJl
c3VsdDsNCiAgICAgICAgcmVzdWx0Lm1faW5kZXggPSAwOw0KICAgICAgICByZXR1cm4gcmVzdWx0
Ow0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgUmVnIGxhc3QoKQ0KICAgIHsNCiAgICAgICAgUmVn
IHJlc3VsdDsNCiAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVy
T2ZSZWdpc3RlcnMoKSArIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCkgLSAx
Ow0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCiAgICBSZWcgbmV4dCgpIGNv
bnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmICgqdGhpcyA9PSBsYXN0
KCkpDQogICAgICAgICAgICByZXR1cm4gUmVnKCk7DQogICAgICAgIFJlZyByZXN1bHQ7DQogICAg
ICAgIHJlc3VsdC5tX2luZGV4ID0gbV9pbmRleCArIDE7DQogICAgICAgIHJldHVybiByZXN1bHQ7
DQogICAgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRl
eDsgfQ0KDQogICAgc3RhdGljIHVuc2lnbmVkIG1heEluZGV4KCkNCiAgICB7DQogICAgICAgIHJl
dHVybiBsYXN0KCkuaW5kZXgoKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBpc1NldCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXggIT0gaW52YWxpZCgpOyB9DQogICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0KCk7IH0NCg0KICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IGRlbGV0ZWQoKTsgfQ0KICAg
IA0KICAgIGJvb2wgaXNHUFIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1faW5kZXgg
PCBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKTsNCiAgICB9DQogICAgDQogICAg
Ym9vbCBpc0ZQUigpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gKG1faW5kZXggLSBNYWNy
b0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSkgPCBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVy
T2ZGUFJlZ2lzdGVycygpOw0KICAgIH0NCiAgICANCiAgICBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBncHIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KE1hY3JvQXNzZW1ibGVy
OjpmaXJzdFJlZ2lzdGVyKCkgKyBtX2luZGV4KTsNCiAgICB9DQogICAgDQogICAgTWFjcm9Bc3Nl
bWJsZXI6OkZQUmVnaXN0ZXJJRCBmcHIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJ
RD4oDQogICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkgKyAobV9p
bmRleCAtIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSk7DQogICAgfQ0KICAg
IA0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWcmIG90aGVyKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsNCiAgICB9DQogICAgDQogICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICBy
ZXR1cm4gbV9pbmRleCAhPSBvdGhlci5tX2luZGV4Ow0KICAgIH0NCiAgICANCiAgICBib29sIG9w
ZXJhdG9yPChjb25zdCBSZWcmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1f
aW5kZXggPCBvdGhlci5tX2luZGV4Ow0KICAgIH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yPihj
b25zdCBSZWcmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1faW5kZXggPiBv
dGhlci5tX2luZGV4Ow0KICAgIH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUmVn
JiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2luZGV4IDw9IG90aGVyLm1f
aW5kZXg7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBSZWcmIG90aGVy
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1faW5kZXggPj0gb3RoZXIubV9pbmRleDsN
CiAgICB9DQogICAgDQogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0DQogICAgew0KICAgICAgICBy
ZXR1cm4gbV9pbmRleDsNCiAgICB9DQogICAgDQogICAgY29uc3QgY2hhciogZGVidWdOYW1lKCkg
Y29uc3Q7DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7DQoNCiAgICBj
bGFzcyBBbGxSZWdzSXRlcmFibGUgew0KICAgIHB1YmxpYzoNCg0KICAgICAgICBjbGFzcyBpdGVy
YXRvciB7DQogICAgICAgIHB1YmxpYzoNCiAgICAgICAgICAgIGl0ZXJhdG9yKCkgeyB9DQoNCiAg
ICAgICAgICAgIGV4cGxpY2l0IGl0ZXJhdG9yKFJlZyByZWcpDQogICAgICAgICAgICAgICAgOiBt
X3JlZ0luZGV4KHJlZy5pbmRleCgpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQog
ICAgICAgICAgICBSZWcgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gUmVnOjpmcm9tSW5kZXgo
bV9yZWdJbmRleCk7IH0NCg0KICAgICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQ0KICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgIG1fcmVnSW5kZXggPSBSZWc6OmZyb21JbmRleCht
X3JlZ0luZGV4KS5uZXh0KCkuaW5kZXgoKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7
DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVy
YXRvciYgb3RoZXIpIGNvbnN0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJu
IG1fcmVnSW5kZXggPT0gb3RoZXIubV9yZWdJbmRleDsNCiAgICAgICAgICAgIH0NCg0KICAgICAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAgICAg
ICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7DQogICAg
ICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZToNCiAgICAgICAgICAgIHVuc2lnbmVkIG1fcmVn
SW5kZXg7DQogICAgICAgIH07DQoNCiAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBpdGVyYXRvcihSZWc6OmZpcnN0KCkpOyB9DQogICAgICAgIGl0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIGl0ZXJhdG9yKFJlZygpKTsgfQ0KICAgIH07DQoNCiAgICBzdGF0aWMgQWxs
UmVnc0l0ZXJhYmxlIGFsbCgpIHsgcmV0dXJuIEFsbFJlZ3NJdGVyYWJsZSgpOyB9DQoNCnByaXZh
dGU6DQogICAgc3RhdGljIHVpbnQ4X3QgaW52YWxpZCgpIHsgcmV0dXJuIDB4ZmY7IH0NCg0KICAg
IHN0YXRpYyB1aW50OF90IGRlbGV0ZWQoKSB7IHJldHVybiAweGZlOyB9DQogICAgDQogICAgdWlu
dDhfdCBtX2luZGV4Ow0KfTsNCg0Kc3RydWN0IFJlZ0hhc2ggew0KICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFJlZyYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9DQogICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgUmVnJiBhLCBjb25zdCBSZWcmIGIpIHsgcmV0dXJuIGEgPT0gYjsg
fQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IHRydWU7DQp9Ow0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
SlNDOjpSZWc+IDogSlNDOjpSZWdIYXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEhhc2hUcmFpdHM7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UmVnPiA6
IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlJlZz4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7DQogfTsNCg0KfSANCg0KI2xpbmUgMjQ3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcUmVn
LmgiDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxqaXRcXFJlZ2lzdGVyU2V0LmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcVGVtcFJlZ2lzdGVyU2V0LmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxqaXRcXEZQUkluZm8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBK
U0Mgew0KDQp0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgRlBSUmVnOw0Kc3Rh
dGljIGNvbnN0ZXhwciBGUFJSZWcgSW52YWxpZEZQUlJlZyB7IEZQUlJlZzo6SW52YWxpZEZQUlJl
ZyB9Ow0KDQoNCg0KDQoNCmNsYXNzIEZQUkluZm8gew0KcHVibGljOg0KICAgIHR5cGVkZWYgRlBS
UmVnIFJlZ2lzdGVyVHlwZTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9m
UmVnaXN0ZXJzID0gNjsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnMgPSBpczY0Qml0KCkgPyA4IDogMDsNCg0KICAgIA0KICAgIHN0YXRpYyBj
b25zdGV4cHIgRlBSUmVnIGZwUmVnVDAgPSBYODZSZWdpc3RlcnM6OnhtbTA7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBGUFJSZWcgZnBSZWdUMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsNCiAgICBzdGF0
aWMgY29uc3RleHByIEZQUlJlZyBmcFJlZ1QyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOw0KICAgIHN0
YXRpYyBjb25zdGV4cHIgRlBSUmVnIGZwUmVnVDMgPSBYODZSZWdpc3RlcnM6OnhtbTM7DQogICAg
c3RhdGljIGNvbnN0ZXhwciBGUFJSZWcgZnBSZWdUNCA9IFg4NlJlZ2lzdGVyczo6eG1tNDsNCiAg
ICBzdGF0aWMgY29uc3RleHByIEZQUlJlZyBmcFJlZ1Q1ID0gWDg2UmVnaXN0ZXJzOjp4bW01Ow0K
DQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciBGUFJSZWcgYXJndW1lbnRGUFIwID0gWDg2UmVn
aXN0ZXJzOjp4bW0wOyANCiAgICBzdGF0aWMgY29uc3RleHByIEZQUlJlZyBhcmd1bWVudEZQUjEg
PSBYODZSZWdpc3RlcnM6OnhtbTE7IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSUmVnIGFyZ3Vt
ZW50RlBSMiA9IFg4NlJlZ2lzdGVyczo6eG1tMjsgDQogICAgc3RhdGljIGNvbnN0ZXhwciBGUFJS
ZWcgYXJndW1lbnRGUFIzID0gWDg2UmVnaXN0ZXJzOjp4bW0zOyANCiAgICBzdGF0aWMgY29uc3Rl
eHByIEZQUlJlZyBhcmd1bWVudEZQUjQgPSBYODZSZWdpc3RlcnM6OnhtbTQ7IA0KICAgIHN0YXRp
YyBjb25zdGV4cHIgRlBSUmVnIGFyZ3VtZW50RlBSNSA9IFg4NlJlZ2lzdGVyczo6eG1tNTsgDQog
ICAgc3RhdGljIGNvbnN0ZXhwciBGUFJSZWcgYXJndW1lbnRGUFI2ID0gWDg2UmVnaXN0ZXJzOjp4
bW02Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSUmVnIGFyZ3VtZW50RlBSNyA9IFg4NlJlZ2lz
dGVyczo6eG1tNzsNCiNsaW5lIDY0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcRlBSSW5mby5oIg0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBj
b25zdGV4cHIgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gWDg2UmVnaXN0ZXJzOjp4bW0wOyANCg0K
ICAgIA0KICAgIA0KICAgIHN0YXRpY19hc3NlcnQoKFg4NlJlZ2lzdGVyczo6eG1tMCA9PSAwKSwg
InhtbTBfaXNfMCIpOw0KICAgIHN0YXRpY19hc3NlcnQoKFg4NlJlZ2lzdGVyczo6eG1tMSA9PSAx
KSwgInhtbTFfaXNfMSIpOw0KICAgIHN0YXRpY19hc3NlcnQoKFg4NlJlZ2lzdGVyczo6eG1tMiA9
PSAyKSwgInhtbTJfaXNfMiIpOw0KICAgIHN0YXRpY19hc3NlcnQoKFg4NlJlZ2lzdGVyczo6eG1t
MyA9PSAzKSwgInhtbTNfaXNfMyIpOw0KICAgIHN0YXRpY19hc3NlcnQoKFg4NlJlZ2lzdGVyczo6
eG1tNCA9PSA0KSwgInhtbTRfaXNfNCIpOw0KICAgIHN0YXRpY19hc3NlcnQoKFg4NlJlZ2lzdGVy
czo6eG1tNSA9PSA1KSwgInhtbTVfaXNfNSIpOw0KICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rl
cih1bnNpZ25lZCBpbmRleCkNCiAgICB7DQogICAgICAgIHJldHVybiAoRlBSUmVnKWluZGV4Ow0K
ICAgIH0NCiAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQ0KICAgIHsNCiAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gKHVuc2lnbmVkKXJlZzsNCiAgICAgICAgaWYgKHJlc3Vs
dCA+PSBudW1iZXJPZlJlZ2lzdGVycykNCiAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW5kZXg7
DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBGUFJSZWcg
dG9Bcmd1bWVudFJlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IChGUFJSZWcpaW5kZXg7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFt
ZShGUFJSZWcgcmVnKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXI6OmZwck5hbWUocmVnKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7DQp9Ow0KDQojbGluZSAxMDMg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxG
UFJJbmZvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNzAgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxGUFJJbmZvLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDI2NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxqaXRcXEZQUkluZm8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMzEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxG
UFJJbmZvLmgiDQoNCg0KY29uc3RleHByIEZQUkluZm8gdG9JbmZvRnJvbVJlZyhGUFJSZWcpIHsg
cmV0dXJuIEZQUkluZm8oKTsgfQ0KDQojbGluZSAzMzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxGUFJJbmZvLmgiDQoNCn0gDQoNCm5hbWVz
cGFjZSBXVEYgew0KDQppbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IEpTQzo6RlBSUmVnIHJlZykNCnsNCg0KICAgIG91dC5wcmludCgiJSIsIEpTQzo6RlBSSW5mbzo6
ZGVidWdOYW1lKHJlZykpOw0KDQoNCiNsaW5lIDM0OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEZQUkluZm8uaCINCn0NCg0KfSANCiNsaW5l
IDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcVGVtcFJlZ2lzdGVyU2V0LmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFJlZ2lz
dGVyU2V0Ow0KDQpjbGFzcyBUZW1wUmVnaXN0ZXJTZXQgew0KcHVibGljOg0KICAgIFRlbXBSZWdp
c3RlclNldCgpDQogICAgew0KICAgICAgICBjbGVhckFsbCgpOw0KICAgIH0NCiAgICANCiAgICBU
ZW1wUmVnaXN0ZXJTZXQoY29uc3QgUmVnaXN0ZXJTZXQmKTsNCiAgICANCiAgICB2b2lkIHNldChH
UFJSZWcgcmVnKQ0KICAgIHsNCiAgICAgICAgc2V0Qml0KEdQUkluZm86OnRvSW5kZXgocmVnKSk7
DQogICAgfQ0KICAgIA0KICAgIHZvaWQgc2V0KEpTVmFsdWVSZWdzIHJlZ3MpDQogICAgew0KICAg
ICAgICBpZiAocmVncy50YWdHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQ0KICAgICAgICAgICAgc2V0
KHJlZ3MudGFnR1BSKCkpOw0KICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCkpOw0KICAgIH0N
CiAgICANCiAgICB2b2lkIHNldEdQUkJ5SW5kZXgodW5zaWduZWQgaW5kZXgpDQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIHNldEJpdChpbmRleCk7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgY2xlYXIoR1BSUmVnIHJlZykNCiAgICB7DQogICAgICAgIGNsZWFyQml0KEdQUkluZm86
OnRvSW5kZXgocmVnKSk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgZ2V0KEdQUlJlZyByZWcpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gZ2V0Qml0KEdQUkluZm86OnRvSW5kZXgocmVnKSk7
DQogICAgfQ0KICAgIA0KICAgIGJvb2wgZ2V0R1BSQnlJbmRleCh1bnNpZ25lZCBpbmRleCkgY29u
c3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGdldEJpdChpbmRl
eCk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIEdQUlJlZyBnZXRGcmVlR1BSKHVuc2lnbmVkIGlu
ZGV4ID0gMCkgY29uc3QNCiAgICB7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7DQogICAgICAgICAgICBpZiAoIWdldEdQUkJ5SW5k
ZXgoaSkgJiYgIWluZGV4LS0pDQogICAgICAgICAgICAgICAgcmV0dXJuIEdQUkluZm86OnRvUmVn
aXN0ZXIoaSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIEludmFsaWRHUFJSZWc7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgc2V0KEZQUlJlZyByZWcpDQogICAgew0KICAgICAgICBzZXRCaXQo
R1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjp0b0luZGV4KHJlZykpOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIHNldEZQUkJ5SW5kZXgodW5zaWduZWQgaW5kZXgpDQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHNldEJpdChHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycyArIGluZGV4KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBjbGVhcihGUFJSZWcgcmVnKQ0K
ICAgIHsNCiAgICAgICAgY2xlYXJCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJ
bmZvOjp0b0luZGV4KHJlZykpOw0KICAgIH0NCiAgICANCiAgICBib29sIGdldChGUFJSZWcgcmVn
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGdldEJpdChHUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVycyArIEZQUkluZm86OnRvSW5kZXgocmVnKSk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wg
Z2V0RlBSQnlJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgcmV0dXJuIGdldEJpdChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyAr
IGluZGV4KTsNCiAgICB9DQogICAgDQogICAgDQogICAgRlBSUmVnIGdldEZyZWVGUFIodW5zaWdu
ZWQgaW5kZXggPSAwKSBjb25zdA0KICAgIHsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gRlBS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsNCiAgICAgICAgICAgIGlmICghZ2V0RlBS
QnlJbmRleChpKSAmJiAhaW5kZXgtLSkNCiAgICAgICAgICAgICAgICByZXR1cm4gRlBSSW5mbzo6
dG9SZWdpc3RlcihpKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4NCiAgICB2b2lkIHNldEJ5
SW5kZXgodW5zaWduZWQgaW5kZXgpDQogICAgew0KICAgICAgICBzZXQoQmFua0luZm86OnRvUmVn
aXN0ZXIoaW5kZXgpKTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFua0lu
Zm8+DQogICAgYm9vbCBnZXRCeUluZGV4KHVuc2lnbmVkIGluZGV4KQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGdldChCYW5rSW5mbzo6dG9SZWdpc3RlcihpbmRleCkpOw0KICAgIH0NCiAgICANCiAg
ICB1bnNpZ25lZCBudW1iZXJPZlNldEdQUnMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gMDsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7IGktLTspIHsNCiAgICAgICAgICAgIGlmICghZ2V0Qml0KGkpKQ0KICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgcmVzdWx0Kys7DQogICAgICAgIH0NCiAg
ICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgDQogICAgdW5zaWduZWQgbnVtYmVyT2ZT
ZXRGUFJzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7DQogICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7
DQogICAgICAgICAgICBpZiAoIWdldEJpdChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkp
KQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgcmVzdWx0Kys7DQogICAg
ICAgIH0NCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgDQogICAgdW5zaWduZWQg
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgcmVz
dWx0ID0gMDsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdG90YWxOdW1iZXJPZlJlZ2lzdGVy
czsgaS0tOykgew0KICAgICAgICAgICAgaWYgKCFnZXRCaXQoaSkpDQogICAgICAgICAgICAgICAg
Y29udGludWU7DQogICAgICAgICAgICByZXN1bHQrKzsNCiAgICAgICAgfQ0KICAgICAgICByZXR1
cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgdm9pZCBjbGVhckFsbCgpDQog
ICAgew0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkJ5dGVzSW5UZW1wUmVnaXN0
ZXJTZXQ7IGktLTspDQogICAgICAgICAgICBtX3NldFtpXSA9IDA7DQogICAgfQ0KDQogICAgdm9p
ZCBzZXRCaXQodW5zaWduZWQgaSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
bV9zZXRbaSA+PiAzXSB8PSAoMSA8PCAoaSAmIDcpKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBj
bGVhckJpdCh1bnNpZ25lZCBpKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBt
X3NldFtpID4+IDNdICY9IH4oMSA8PCAoaSAmIDcpKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBn
ZXRCaXQodW5zaWduZWQgaSkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuICEhKG1fc2V0W2kgPj4gM10gJiAoMSA8PCAoaSAmIDcpKSk7DQogICAgfQ0KICAg
IA0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdG90YWxOdW1iZXJPZlJlZ2lzdGVycyA9
DQogICAgICAgIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7DQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkJ5
dGVzSW5UZW1wUmVnaXN0ZXJTZXQgPQ0KICAgICAgICAodG90YWxOdW1iZXJPZlJlZ2lzdGVycyAr
IDcpID4+IDM7DQoNCiAgICB1aW50OF90IG1fc2V0W251bWJlck9mQnl0ZXNJblRlbXBSZWdpc3Rl
clNldF07DQp9Ow0KDQp9IA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjIwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcVGVtcFJl
Z2lzdGVyU2V0LmgiDQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxqaXRcXFJlZ2lzdGVyU2V0LmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7
DQoNCnR5cGVkZWYgQml0bWFwPE1hY3JvQXNzZW1ibGVyOjpudW1HUFJzICsgTWFjcm9Bc3NlbWJs
ZXI6Om51bUZQUnMgKyAxPiBSZWdpc3RlckJpdG1hcDsNCmNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRM
aXN0Ow0KDQpjbGFzcyBSZWdpc3RlclNldCB7DQpwdWJsaWM6DQogICAgY29uc3RleHByIFJlZ2lz
dGVyU2V0KCkgeyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBSZWdzPg0KICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBSZWdpc3RlclNldChSZWdzLi4uIHJlZ3MpDQogICAgew0KICAgICAgICBz
ZXRNYW55KHJlZ3MuLi4pOw0KICAgIH0NCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
c3RhdGljIFJlZ2lzdGVyU2V0IHN0YWNrUmVnaXN0ZXJzKCk7DQogICAgX19kZWNsc3BlYyhkbGxl
eHBvcnQpIHN0YXRpYyBSZWdpc3RlclNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCk7DQog
ICAgc3RhdGljIFJlZ2lzdGVyU2V0IHJ1bnRpbWVUYWdSZWdpc3RlcnMoKTsNCiAgICBzdGF0aWMg
UmVnaXN0ZXJTZXQgc3BlY2lhbFJlZ2lzdGVycygpOyANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgc3RhdGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsNCiAgICBzdGF0aWMg
UmVnaXN0ZXJTZXQgdm1DYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IA0KICAgIHN0YXRpYyBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCogdm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7DQogICAgc3RhdGlj
IFJlZ2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IA0KICAgIHN0
YXRpYyBSZWdpc3RlclNldCBkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IA0KICAgIHN0YXRpYyBS
ZWdpc3RlclNldCBmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IA0KDQoNCiNsaW5lIDY0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcUmVnaXN0
ZXJTZXQuaCINCiAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgdm9sYXRpbGVSZWdpc3RlcnNGb3JKU0Nh
bGwoKTsNCiAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgc3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7
IA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgUmVnaXN0ZXJTZXQgbWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBSZWdpc3Rl
clNldCBhbGxHUFJzKCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBSZWdpc3Rl
clNldCBhbGxGUFJzKCk7DQogICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOw0K
ICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgUmVnaXN0ZXJTZXQgYXJndW1lbnRHUFJT
KCk7DQoNCiAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Ob3RTYXZlRm9ySlNDYWxs
KCk7DQogICAgc3RhdGljIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvTm90U2F2ZUZvckNDYWxsKCk7
DQogICAgDQogICAgdm9pZCBzZXQoUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpDQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fYml0cy5zZXQocmVnLmluZGV4KCksIHZhbHVl
KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBzZXQoSlNWYWx1ZVJlZ3MgcmVncywgYm9vbCB2YWx1
ZSA9IHRydWUpDQogICAgew0KICAgICAgICBpZiAocmVncy50YWdHUFIoKSAhPSBJbnZhbGlkR1BS
UmVnKQ0KICAgICAgICAgICAgc2V0KHJlZ3MudGFnR1BSKCksIHZhbHVlKTsNCiAgICAgICAgc2V0
KHJlZ3MucGF5bG9hZEdQUigpLCB2YWx1ZSk7DQogICAgfQ0KDQogICAgdm9pZCBzZXQoY29uc3Qg
UmVnaXN0ZXJTZXQmIG90aGVyLCBib29sIHZhbHVlID0gdHJ1ZSkgeyB2YWx1ZSA/IG1lcmdlKG90
aGVyKSA6IGV4Y2x1ZGUob3RoZXIpOyB9DQoNCiAgICB2b2lkIGNsZWFyKFJlZyByZWcpDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHNldChyZWcsIGZhbHNlKTsNCiAgICB9DQog
ICAgDQogICAgYm9vbCBnZXQoUmVnIHJlZykgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgcmV0dXJuIG1fYml0cy5nZXQocmVnLmluZGV4KCkpOw0KICAgIH0NCiAgICAN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYWJsZT4NCiAgICB2b2lkIHNldEFsbChjb25zdCBJ
dGVyYWJsZSYgaXRlcmFibGUpDQogICAgew0KICAgICAgICBmb3IgKFJlZyByZWcgOiBpdGVyYWJs
ZSkNCiAgICAgICAgICAgIHNldChyZWcpOw0KICAgIH0NCiAgICANCiAgICANCiAgICBib29sIGFk
ZChSZWcgcmVnKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gIW1f
Yml0cy50ZXN0QW5kU2V0KHJlZy5pbmRleCgpKTsNCiAgICB9DQogICAgYm9vbCByZW1vdmUoUmVn
IHJlZykNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1fYml0cy50
ZXN0QW5kQ2xlYXIocmVnLmluZGV4KCkpOw0KICAgIH0NCiAgICBib29sIGNvbnRhaW5zKFJlZyBy
ZWcpIGNvbnN0IHsgcmV0dXJuIGdldChyZWcpOyB9DQogICAgDQogICAgdm9pZCBtZXJnZShjb25z
dCBSZWdpc3RlclNldCYgb3RoZXIpIHsgbV9iaXRzLm1lcmdlKG90aGVyLm1fYml0cyk7IH0NCiAg
ICB2b2lkIGZpbHRlcihjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIHsgbV9iaXRzLmZpbHRlcihv
dGhlci5tX2JpdHMpOyB9DQogICAgdm9pZCBleGNsdWRlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhl
cikgeyBtX2JpdHMuZXhjbHVkZShvdGhlci5tX2JpdHMpOyB9DQogICAgDQogICAgYm9vbCBzdWJz
dW1lcyhjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5zdWJz
dW1lcyhvdGhlci5tX2JpdHMpOyB9DQogICAgDQogICAgc2l6ZV90IG51bWJlck9mU2V0R1BScygp
IGNvbnN0Ow0KICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsNCiAgICBzaXplX3Qg
bnVtYmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQ0K
ICAgIA0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5pc0VtcHR5KCk7
IH0NCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7DQogICAgDQogICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9Ow0K
ICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07DQogICAgDQogICAgUmVn
aXN0ZXJTZXQoRW1wdHlWYWx1ZVRhZykNCiAgICB7DQogICAgICAgIG1fYml0cy5zZXQoaGFzaFNw
ZWNpYWxCaXRJbmRleCk7DQogICAgfQ0KICAgIA0KICAgIFJlZ2lzdGVyU2V0KERlbGV0ZWRWYWx1
ZVRhZykNCiAgICB7DQogICAgICAgIG1fYml0cy5zZXQoaGFzaFNwZWNpYWxCaXRJbmRleCk7DQog
ICAgICAgIG1fYml0cy5zZXQoZGVsZXRlZEJpdEluZGV4KTsNCiAgICB9DQogICAgDQogICAgYm9v
bCBpc0VtcHR5VmFsdWUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYml0cy5nZXQo
aGFzaFNwZWNpYWxCaXRJbmRleCkgJiYgIW1fYml0cy5nZXQoZGVsZXRlZEJpdEluZGV4KTsNCiAg
ICB9DQogICAgDQogICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gbV9iaXRzLmdldChoYXNoU3BlY2lhbEJpdEluZGV4KSAmJiBtX2JpdHMuZ2V0KGRl
bGV0ZWRCaXRJbmRleCk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBS
ZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyA9PSBvdGhlci5tX2JpdHM7
IH0NCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgIT0gb3RoZXIubV9iaXRzOyB9DQogICAgDQogICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5oYXNoKCk7IH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPg0KICAgIHZvaWQgZm9yRWFjaChjb25zdCBGdW5jJiBmdW5jKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgbV9iaXRzLmZvckVhY2hTZXRCaXQoDQogICAgICAgICAgICBbJl0gKHNp
emVfdCBpbmRleCkgew0KICAgICAgICAgICAgICAgIGZ1bmMoUmVnOjpmcm9tSW5kZXgoaW5kZXgp
KTsNCiAgICAgICAgICAgIH0pOw0KICAgIH0NCiAgICANCiAgICBjbGFzcyBpdGVyYXRvciB7DQog
ICAgcHVibGljOg0KICAgICAgICBpdGVyYXRvcigpDQogICAgICAgIHsNCiAgICAgICAgfQ0KICAg
ICAgICANCiAgICAgICAgaXRlcmF0b3IoY29uc3QgUmVnaXN0ZXJCaXRtYXA6Oml0ZXJhdG9yJiBp
dGVyKQ0KICAgICAgICAgICAgOiBtX2l0ZXIoaXRlcikNCiAgICAgICAgew0KICAgICAgICB9DQog
ICAgICAgIA0KICAgICAgICBSZWcgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gUmVnOjpmcm9t
SW5kZXgoKm1faXRlcik7IH0NCiAgICAgICAgDQogICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisr
KCkNCiAgICAgICAgew0KICAgICAgICAgICAgKyttX2l0ZXI7DQogICAgICAgICAgICByZXR1cm4g
KnRoaXM7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBpdGVyYXRvciYgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBtX2l0ZXIg
PT0gb3RoZXIubV9pdGVyOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgcHJpdmF0ZToN
CiAgICAgICAgUmVnaXN0ZXJCaXRtYXA6Oml0ZXJhdG9yIG1faXRlcjsNCiAgICB9Ow0KICAgIA0K
ICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9iaXRzLmJlZ2lu
KCkpOyB9DQogICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9iaXRz
LmVuZCgpKTsgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICB2b2lkIHNldEFueShSZWcgcmVnKSB7IHNl
dChyZWcpOyB9DQogICAgdm9pZCBzZXRBbnkoSlNWYWx1ZVJlZ3MgcmVncykgeyBzZXQocmVncyk7
IH0NCiAgICB2b2lkIHNldEFueShjb25zdCBSZWdpc3RlclNldCYgc2V0KSB7IG1lcmdlKHNldCk7
IH0NCiAgICB2b2lkIHNldE1hbnkoKSB7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBl
LCB0eXBlbmFtZS4uLiBSZWdzPg0KICAgIHZvaWQgc2V0TWFueShSZWdUeXBlIHJlZywgUmVncy4u
LiByZWdzKQ0KICAgIHsNCiAgICAgICAgc2V0QW55KHJlZyk7DQogICAgICAgIHNldE1hbnkocmVn
cy4uLik7DQogICAgfQ0KDQogICAgDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBncHJP
ZmZzZXQgPSAwOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZnByT2Zmc2V0ID0gZ3By
T2Zmc2V0ICsgTWFjcm9Bc3NlbWJsZXI6Om51bUdQUnM7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBoYXNoU3BlY2lhbEJpdEluZGV4ID0gZnByT2Zmc2V0ICsgTWFjcm9Bc3NlbWJsZXI6
Om51bUZQUnM7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBkZWxldGVkQml0SW5kZXgg
PSAwOw0KICAgIA0KICAgIFJlZ2lzdGVyQml0bWFwIG1fYml0czsNCn07DQoNCnN0cnVjdCBSZWdp
c3RlclNldEhhc2ggew0KICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlZ2lzdGVyU2V0
JiBzZXQpIHsgcmV0dXJuIHNldC5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBSZWdpc3RlclNldCYgYSwgY29uc3QgUmVnaXN0ZXJTZXQmIGIpIHsgcmV0dXJuIGEgPT0gYjsg
fQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IGZhbHNlOw0KfTsNCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PEpTQzo6UmVnaXN0ZXJTZXQ+IDogSlNDOjpSZWdpc3RlclNldEhhc2ggeyB9Ow0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8SlNDOjpSZWdpc3RlclNldD4gOiBwdWJsaWMgQ3VzdG9tSGFzaFRyYWl0czxKU0M6OlJl
Z2lzdGVyU2V0PiB7IH07DQoNCn0gDQoNCiNsaW5lIDI1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXFJlZ2lzdGVyU2V0LmgiDQojbGluZSAz
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRc
XEpJVENvZGUuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KbmFtZXNwYWNlIERGRyB7DQpjbGFz
cyBDb21tb25EYXRhOw0KY2xhc3MgSklUQ29kZTsNCn0NCm5hbWVzcGFjZSBGVEwgew0KY2xhc3Mg
Rm9yT1NSRW50cnlKSVRDb2RlOw0KY2xhc3MgSklUQ29kZTsNCn0NCm5hbWVzcGFjZSBET01KSVQg
ew0KY2xhc3MgU2lnbmF0dXJlOw0KfQ0KDQpzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7DQpjbGFzcyBU
cmFja2VkUmVmZXJlbmNlczsNCmNsYXNzIFZNOw0KDQplbnVtIGNsYXNzIEpJVFR5cGUgOiB1aW50
OF90IHsNCiAgICBOb25lLA0KICAgIEhvc3RDYWxsVGh1bmssDQogICAgSW50ZXJwcmV0ZXJUaHVu
aywNCiAgICBCYXNlbGluZUpJVCwNCiAgICBERkdKSVQsDQogICAgRlRMSklUDQp9Ow0KDQpjbGFz
cyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsNCnB1Ymxp
YzoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPiB1c2luZyBDb2RlUHRyID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPHRhZz47DQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4gdXNpbmcgQ29kZVJlZiA9
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+Ow0KDQogICAgc3RhdGljIGNvbnN0IGNoYXIqIHR5
cGVOYW1lKEpJVFR5cGUpOw0KDQogICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpDQog
ICAgew0KICAgICAgICByZXR1cm4gSklUVHlwZTo6QmFzZWxpbmVKSVQ7DQogICAgfQ0KICAgIA0K
ICAgIHN0YXRpYyBKSVRUeXBlIHRvcFRpZXJKSVQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIEpJ
VFR5cGU6OkZUTEpJVDsNCiAgICB9DQogICAgDQogICAgc3RhdGljIEpJVFR5cGUgbmV4dFRpZXJK
SVQoSklUVHlwZSBqaXRUeXBlKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChqaXRUeXBlKSB7DQog
ICAgICAgIGNhc2UgSklUVHlwZTo6QmFzZWxpbmVKSVQ6DQogICAgICAgICAgICByZXR1cm4gSklU
VHlwZTo6REZHSklUOw0KICAgICAgICBjYXNlIEpJVFR5cGU6OkRGR0pJVDoNCiAgICAgICAgICAg
IHJldHVybiBKSVRUeXBlOjpGVExKSVQ7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBk
byB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNo
KCk7IFdURkNyYXNoV2l0aEluZm8oODgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUQ29kZS5oIiwgIF9fRlVOQ1RJT05fXyAgLCA1NiAp
OyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICByZXR1cm4gSklUVHlwZTo6Tm9uZTsNCiAg
ICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCBpc0V4ZWN1dGFibGVTY3JpcHQo
SklUVHlwZSBqaXRUeXBlKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChqaXRUeXBlKSB7DQogICAg
ICAgIGNhc2UgSklUVHlwZTo6Tm9uZToNCiAgICAgICAgY2FzZSBKSVRUeXBlOjpIb3N0Q2FsbFRo
dW5rOg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBkZWZhdWx0Og0KICAgICAg
ICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgc3RhdGljIGJv
b2wgY291bGRCZUludGVycHJldGVkKEpJVFR5cGUgaml0VHlwZSkNCiAgICB7DQogICAgICAgIHN3
aXRjaCAoaml0VHlwZSkgew0KICAgICAgICBjYXNlIEpJVFR5cGU6OkludGVycHJldGVyVGh1bms6
DQogICAgICAgIGNhc2UgSklUVHlwZTo6QmFzZWxpbmVKSVQ6DQogICAgICAgICAgICByZXR1cm4g
dHJ1ZTsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAg
ICAgfQ0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCBpc0pJVChKSVRUeXBlIGppdFR5cGUp
DQogICAgew0KICAgICAgICBzd2l0Y2ggKGppdFR5cGUpIHsNCiAgICAgICAgY2FzZSBKSVRUeXBl
OjpCYXNlbGluZUpJVDoNCiAgICAgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6DQogICAgICAgIGNh
c2UgSklUVHlwZTo6RlRMSklUOg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGRl
ZmF1bHQ6DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICBzdGF0aWMgYm9vbCBpc0xvd2VyVGllcihKSVRUeXBlIGV4cGVjdGVkTG93ZXIsIEpJVFR5cGUg
ZXhwZWN0ZWRIaWdoZXIpDQogICAgew0KICAgICAgICBkbyB7IGlmICgoIShpc0V4ZWN1dGFibGVT
Y3JpcHQoZXhwZWN0ZWRMb3dlcikpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBl
KCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDEyOSwgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRDb2Rl
LmgiLCAgX19GVU5DVElPTl9fICAsIDU3ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
DQogICAgICAgIGRvIHsgaWYgKCghKGlzRXhlY3V0YWJsZVNjcmlwdChleHBlY3RlZEhpZ2hlcikp
KSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JD
cmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDEzMCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRDb2RlLmgiLCAgX19GVU5DVElPTl9fICAs
IDU4ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIHJldHVybiBleHBl
Y3RlZExvd2VyIDwgZXhwZWN0ZWRIaWdoZXI7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBib29s
IGlzSGlnaGVyVGllcihKSVRUeXBlIGV4cGVjdGVkSGlnaGVyLCBKSVRUeXBlIGV4cGVjdGVkTG93
ZXIpDQogICAgew0KICAgICAgICByZXR1cm4gaXNMb3dlclRpZXIoZXhwZWN0ZWRMb3dlciwgZXhw
ZWN0ZWRIaWdoZXIpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCBpc0xvd2VyT3JTYW1l
VGllcihKSVRUeXBlIGV4cGVjdGVkTG93ZXIsIEpJVFR5cGUgZXhwZWN0ZWRIaWdoZXIpDQogICAg
ew0KICAgICAgICByZXR1cm4gIWlzSGlnaGVyVGllcihleHBlY3RlZExvd2VyLCBleHBlY3RlZEhp
Z2hlcik7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBib29sIGlzSGlnaGVyT3JTYW1lVGllcihK
SVRUeXBlIGV4cGVjdGVkSGlnaGVyLCBKSVRUeXBlIGV4cGVjdGVkTG93ZXIpDQogICAgew0KICAg
ICAgICByZXR1cm4gaXNMb3dlck9yU2FtZVRpZXIoZXhwZWN0ZWRMb3dlciwgZXhwZWN0ZWRIaWdo
ZXIpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlw
ZSBqaXRUeXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSklUVHlwZTo6REZH
SklUIHx8IGppdFR5cGUgPT0gSklUVHlwZTo6RlRMSklUOw0KICAgIH0NCiAgICANCiAgICBzdGF0
aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpDQogICAgew0KICAgICAgICBy
ZXR1cm4gaml0VHlwZSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0g
SklUVHlwZTo6QmFzZWxpbmVKSVQ7DQogICAgfQ0KDQogICAgdmlydHVhbCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQ0KICAgIA0K
ICAgIGVudW0gY2xhc3MgU2hhcmVBdHRyaWJ1dGUgOiB1aW50OF90IHsNCiAgICAgICAgTm90U2hh
cmVkLA0KICAgICAgICBTaGFyZWQNCiAgICB9Ow0KDQpwcm90ZWN0ZWQ6DQogICAgSklUQ29kZShK
SVRUeXBlLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZSA9IEpJVENvZGU6OlNoYXJlQXR0cmlidXRl
OjpOb3RTaGFyZWQpOw0KICAgIA0KcHVibGljOg0KICAgIHZpcnR1YWwgfkpJVENvZGUoKTsNCiAg
ICANCiAgICBKSVRUeXBlIGppdFR5cGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1f
aml0VHlwZTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgUG9pbnRlclR5cGU+
DQogICAgc3RhdGljIEpJVFR5cGUgaml0VHlwZUZvcihQb2ludGVyVHlwZSBqaXRDb2RlKQ0KICAg
IHsNCiAgICAgICAgaWYgKCFqaXRDb2RlKQ0KICAgICAgICAgICAgcmV0dXJuIEpJVFR5cGU6Ok5v
bmU7DQogICAgICAgIHJldHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7DQogICAgfQ0KICAgIA0KICAg
IHZpcnR1YWwgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNr
TW9kZSkgPSAwOw0KICAgIHZpcnR1YWwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KSA9IDA7DQogICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSB7IHJldHVy
biBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApOyB9DQogICAgdmlydHVhbCB2b2lkKiBkYXRh
QWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0gMDsNCiAgICB2aXJ0dWFsIHVuc2lnbmVk
IG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgPSAwOw0KICAgIA0KICAgIHZpcnR1YWwg
REZHOjpDb21tb25EYXRhKiBkZmdDb21tb24oKTsNCiAgICB2aXJ0dWFsIERGRzo6SklUQ29kZSog
ZGZnKCk7DQogICAgdmlydHVhbCBGVEw6OkpJVENvZGUqIGZ0bCgpOw0KICAgIHZpcnR1YWwgRlRM
OjpGb3JPU1JFbnRyeUpJVENvZGUqIGZ0bEZvck9TUkVudHJ5KCk7DQogICAgdmlydHVhbCB2b2lk
IHNocmlua1RvRml0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOw0KICAgIA0KICAgIHZpcnR1
YWwgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKTsNCiAg
ICANCiAgICBKU1ZhbHVlIGV4ZWN1dGUoVk0qLCBQcm90b0NhbGxGcmFtZSopOw0KICAgIA0KICAg
IHZvaWQqIHN0YXJ0KCkgeyByZXR1cm4gZGF0YUFkZHJlc3NBdE9mZnNldCgwKTsgfQ0KICAgIHZp
cnR1YWwgc2l6ZV90IHNpemUoKSA9IDA7DQogICAgdm9pZCogZW5kKCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0YXJ0KCkpICsg
c2l6ZSgpKTsgfQ0KICAgIA0KICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyh2b2lkKikgPSAwOw0K
DQoNCiAgICB2aXJ0dWFsIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNl
cHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9jayosIENhbGxTaXRlSW5kZXgpOw0KICAgIHZp
cnR1YWwgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSB7
ICh2b2lkKXBjOyByZXR1cm4gV1RGOjpudWxsb3B0OyB9DQojbGluZSAyMTEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRDb2RlLmgiDQoN
CiAgICBJbnRyaW5zaWMgaW50cmluc2ljKCkgeyByZXR1cm4gbV9pbnRyaW5zaWM7IH0NCg0KICAg
IGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlQXR0cmlidXRlID09IFNoYXJl
QXR0cmlidXRlOjpTaGFyZWQ7IH0NCg0KcHJpdmF0ZToNCiAgICBKSVRUeXBlIG1faml0VHlwZTsN
CiAgICBTaGFyZUF0dHJpYnV0ZSBtX3NoYXJlQXR0cmlidXRlOw0KcHJvdGVjdGVkOg0KICAgIElu
dHJpbnNpYyBtX2ludHJpbnNpYyB7IE5vSW50cmluc2ljIH07IA0KfTsNCg0KY2xhc3MgSklUQ29k
ZVdpdGhDb2RlUmVmIDogcHVibGljIEpJVENvZGUgew0KcHJvdGVjdGVkOg0KICAgIEpJVENvZGVX
aXRoQ29kZVJlZihKSVRUeXBlKTsNCiAgICBKSVRDb2RlV2l0aENvZGVSZWYoQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiwgSklUVHlwZSwgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGUpOw0KDQpwdWJsaWM6
DQogICAgfkpJVENvZGVXaXRoQ29kZVJlZigpIG92ZXJyaWRlOw0KDQogICAgdm9pZCogZXhlY3V0
YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsNCiAgICB2b2lkKiBk
YXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOw0KICAgIHVuc2lnbmVk
IG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgb3ZlcnJpZGU7DQogICAgc2l6ZV90IHNp
emUoKSBvdmVycmlkZTsNCiAgICBib29sIGNvbnRhaW5zKHZvaWQqKSBvdmVycmlkZTsNCg0KcHJv
dGVjdGVkOg0KICAgIENvZGVSZWY8SlNFbnRyeVB0clRhZz4gbV9yZWY7DQp9Ow0KDQp1c2luZyBE
aXJlY3RKSVRDb2RlTWFsbG9jID0gRmFzdE1hbGxvYzsNCmNsYXNzIERpcmVjdEpJVENvZGUgOiBw
dWJsaWMgSklUQ29kZVdpdGhDb2RlUmVmIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3Bl
cmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTAp
OyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyB1c2lu
ZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVi
bGljOg0KICAgIERpcmVjdEpJVENvZGUoSklUVHlwZSk7DQogICAgRGlyZWN0SklUQ29kZShDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+LCBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNr
LCBKSVRUeXBlLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZSA9IEpJVENvZGU6OlNoYXJlQXR0cmli
dXRlOjpOb3RTaGFyZWQpOw0KICAgIERpcmVjdEpJVENvZGUoQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiwgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjaywgSklUVHlwZSwgSW50cmlu
c2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZSA9IEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpO
b3RTaGFyZWQpOyANCiAgICB+RGlyZWN0SklUQ29kZSgpIG92ZXJyaWRlOw0KICAgIA0KICAgIENv
ZGVQdHI8SlNFbnRyeVB0clRhZz4gYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJy
aWRlOw0KDQpwcm90ZWN0ZWQ6DQogICAgdm9pZCBpbml0aWFsaXplQ29kZVJlZkZvckRGRyhDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+LCBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNr
KTsNCg0KcHJpdmF0ZToNCiAgICBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fd2l0aEFyaXR5Q2hl
Y2s7DQp9Ow0KDQpjbGFzcyBOYXRpdmVKSVRDb2RlIDogcHVibGljIEpJVENvZGVXaXRoQ29kZVJl
ZiB7DQpwdWJsaWM6DQogICAgTmF0aXZlSklUQ29kZShKSVRUeXBlKTsNCiAgICBOYXRpdmVKSVRD
b2RlKENvZGVSZWY8SlNFbnRyeVB0clRhZz4sIEpJVFR5cGUsIEludHJpbnNpYywgSklUQ29kZTo6
U2hhcmVBdHRyaWJ1dGUgPSBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6Tm90U2hhcmVkKTsNCiAg
ICB+TmF0aXZlSklUQ29kZSgpIG92ZXJyaWRlOw0KDQogICAgQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7DQp9Ow0KDQpjbGFzcyBO
YXRpdmVET01KSVRDb2RlIGZpbmFsIDogcHVibGljIE5hdGl2ZUpJVENvZGUgew0KcHVibGljOg0K
ICAgIE5hdGl2ZURPTUpJVENvZGUoQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiwgSklUVHlwZSwgSW50
cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSopOw0KICAgIH5OYXRpdmVET01KSVRDb2Rl
KCkgZmluYWwgPSBkZWZhdWx0Ow0KDQogICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2lnbmF0dXJlOyB9DQoNCnByaXZhdGU6DQog
ICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIG1fc2lnbmF0dXJlOw0KfTsNCg0KfSANCg0KbmFt
ZXNwYWNlIFdURiB7DQoNCmNsYXNzIFByaW50U3RyZWFtOw0Kdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpKSVRUeXBlKTsNCg0KfSANCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFNhbXBsaW5nUHJv
ZmlsZXIuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcTWFjaGluZVN0YWNrTWFya2VyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxSZWdpc3Rl
clN0YXRlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSAxNTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcUmVnaXN0ZXJTdGF0ZS5oIg0KDQoNCg0KdXNpbmcgUmVnaXN0ZXJT
dGF0ZSA9IGptcF9idWY7DQoNCg0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOiA0NjExKQ0KI2xpbmUgMTY4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFJlZ2lzdGVyU3RhdGUuaCINCg0KDQoNCg0K
DQojcHJhZ21hIHdhcm5pbmcocG9wKQ0KI2xpbmUgMTc1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFJlZ2lzdGVyU3RhdGUuaCINCiNsaW5l
IDE3NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxo
ZWFwXFxSZWdpc3RlclN0YXRlLmgiDQoNCn0gDQoNCiNsaW5lIDI1ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hY2hpbmVTdGFja01hcmtl
ci5oIg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZEdyb3VwLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0xp
c3RIYXNoU2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCg0KDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTGlzdEhhc2hTZXQuaCINCg0KbmFtZXNw
YWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+IGNsYXNzIExpc3RIYXNoU2V0Ow0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRJdGVy
YXRvcjsNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFz
cyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
PiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBz
dHJ1Y3QgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczsNCnRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hBcmc+IHN0cnVjdCBMaXN0SGFzaFNldFRyYW5zbGF0b3I7DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gRGVmYXVsdEhhc2g8VmFsdWVBcmc+PiBjbGFz
cyBMaXN0SGFzaFNldCBmaW5hbA0KDQoNCiNsaW5lIDU2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9MaXN0SGFzaFNldC5oIg0Kew0KICAg
IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJr
aXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwcml2YXRlOg0KICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXROb2RlPFZhbHVlQXJnPiBOb2RlOw0KDQogICAgdHlwZWRlZiBIYXNoVHJhaXRzPE5v
ZGUqPiBOb2RlVHJhaXRzOw0KICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9u
czxIYXNoQXJnPiBOb2RlSGFzaDsNCiAgICB0eXBlZGVmIExpc3RIYXNoU2V0VHJhbnNsYXRvcjxI
YXNoQXJnPiBCYXNlVHJhbnNsYXRvcjsNCg0KICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVuY3Rp
b25zOw0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBWYWx1ZUFyZyBWYWx1ZVR5cGU7DQoNCiAgICB0
eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnPiBpdGVyYXRvcjsN
CiAgICB0eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+
IGNvbnN0X2l0ZXJhdG9yOw0KICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0
b3I8VmFsdWVUeXBlLCBIYXNoQXJnPjsNCg0KICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJh
dG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOw0KICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNl
X2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOw0KDQogICAg
dHlwZWRlZiBIYXNoVGFibGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsNCg0KICAgIExp
c3RIYXNoU2V0KCkgPSBkZWZhdWx0Ow0KICAgIExpc3RIYXNoU2V0KHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxWYWx1ZVR5cGU+KTsNCiAgICBMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldCYpOw0K
ICAgIExpc3RIYXNoU2V0KExpc3RIYXNoU2V0JiYpOw0KICAgIExpc3RIYXNoU2V0JiBvcGVyYXRv
cj0oY29uc3QgTGlzdEhhc2hTZXQmKTsNCiAgICBMaXN0SGFzaFNldCYgb3BlcmF0b3I9KExpc3RI
YXNoU2V0JiYpOw0KICAgIH5MaXN0SGFzaFNldCgpOw0KDQogICAgdm9pZCBzd2FwKExpc3RIYXNo
U2V0Jik7DQoNCiAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7DQogICAgdW5zaWduZWQgY2FwYWNp
dHkoKSBjb25zdDsNCiAgICBib29sIGlzRW1wdHkoKSBjb25zdDsNCg0KICAgIGl0ZXJhdG9yIGJl
Z2luKCkgeyByZXR1cm4gbWFrZUl0ZXJhdG9yKG1faGVhZCk7IH0NCiAgICBpdGVyYXRvciBlbmQo
KSB7IHJldHVybiBtYWtlSXRlcmF0b3IobnVsbHB0cik7IH0NCiAgICBjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1ha2VDb25zdEl0ZXJhdG9yKG1faGVhZCk7IH0NCiAgICBj
b25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtYWtlQ29uc3RJdGVyYXRvcihudWxs
cHRyKTsgfQ0KDQogICAgaXRlcmF0b3IgcmFuZG9tKCkgeyByZXR1cm4gbWFrZUl0ZXJhdG9yKG1f
aW1wbC5yYW5kb20oKSk7IH0NCiAgICBjb25zdF9pdGVyYXRvciByYW5kb20oKSBjb25zdCB7IHJl
dHVybiBtYWtlSXRlcmF0b3IobV9pbXBsLnJhbmRvbSgpKTsgfQ0KDQogICAgcmV2ZXJzZV9pdGVy
YXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQ0KICAgIHJl
dmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7
IH0NCiAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9DQogICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRv
ciByZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsg
fQ0KDQogICAgVmFsdWVUeXBlJiBmaXJzdCgpOw0KICAgIGNvbnN0IFZhbHVlVHlwZSYgZmlyc3Qo
KSBjb25zdDsNCiAgICB2b2lkIHJlbW92ZUZpcnN0KCk7DQogICAgVmFsdWVUeXBlIHRha2VGaXJz
dCgpOw0KDQogICAgVmFsdWVUeXBlJiBsYXN0KCk7DQogICAgY29uc3QgVmFsdWVUeXBlJiBsYXN0
KCkgY29uc3Q7DQogICAgdm9pZCByZW1vdmVMYXN0KCk7DQogICAgVmFsdWVUeXBlIHRha2VMYXN0
KCk7DQoNCiAgICBpdGVyYXRvciBmaW5kKGNvbnN0IFZhbHVlVHlwZSYpOw0KICAgIGNvbnN0X2l0
ZXJhdG9yIGZpbmQoY29uc3QgVmFsdWVUeXBlJikgY29uc3Q7DQogICAgYm9vbCBjb250YWlucyhj
b25zdCBWYWx1ZVR5cGUmKSBjb25zdDsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBpdGVyYXRvciBmaW5kKGNvbnN0
IFQmKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4g
Y29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBUJikgY29uc3Q7DQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IGJvb2wgY29udGFpbnMoY29uc3QgVCYpIGNv
bnN0Ow0KDQogICAgDQogICAgDQogICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmKTsN
CiAgICBBZGRSZXN1bHQgYWRkKFZhbHVlVHlwZSYmKTsNCg0KICAgIA0KICAgIA0KICAgIEFkZFJl
c3VsdCBhcHBlbmRPck1vdmVUb0xhc3QoY29uc3QgVmFsdWVUeXBlJik7DQogICAgQWRkUmVzdWx0
IGFwcGVuZE9yTW92ZVRvTGFzdChWYWx1ZVR5cGUmJik7DQoNCiAgICANCiAgICANCiAgICBBZGRS
ZXN1bHQgcHJlcGVuZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBlJik7DQogICAgQWRkUmVz
dWx0IHByZXBlbmRPck1vdmVUb0ZpcnN0KFZhbHVlVHlwZSYmKTsNCg0KICAgIEFkZFJlc3VsdCBp
bnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgY29uc3QgVmFsdWVUeXBl
JiBuZXdWYWx1ZSk7DQogICAgQWRkUmVzdWx0IGluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUm
IGJlZm9yZVZhbHVlLCBWYWx1ZVR5cGUmJiBuZXdWYWx1ZSk7DQogICAgQWRkUmVzdWx0IGluc2Vy
dEJlZm9yZShpdGVyYXRvciwgY29uc3QgVmFsdWVUeXBlJik7DQogICAgQWRkUmVzdWx0IGluc2Vy
dEJlZm9yZShpdGVyYXRvciwgVmFsdWVUeXBlJiYpOw0KDQogICAgYm9vbCByZW1vdmUoY29uc3Qg
VmFsdWVUeXBlJik7DQogICAgYm9vbCByZW1vdmUoaXRlcmF0b3IpOw0KICAgIHZvaWQgY2xlYXIo
KTsNCg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUgZmlu
ZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOw0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46
OnZhbHVlLCBjb25zdF9pdGVyYXRvcj46OnR5cGUgZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Vj46OlB0clR5cGUpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBib29sPjo6dHlw
ZSBjb250YWlucyh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpIGNvbnN0Ow0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PElzU21hcnRQdHI8Vj46OnZhbHVlLCBBZGRSZXN1bHQ+Ojp0eXBlIGluc2VydEJlZm9yZSh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUsIGNvbnN0IFZhbHVlVHlwZSYpOw0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElz
U21hcnRQdHI8Vj46OnZhbHVlLCBBZGRSZXN1bHQ+Ojp0eXBlIGluc2VydEJlZm9yZSh0eXBlbmFt
ZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUsIFZhbHVlVHlwZSYmKTsNCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRy
PFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgcmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6
UHRyVHlwZSk7DQoNCnByaXZhdGU6DQogICAgdm9pZCB1bmxpbmsoTm9kZSopOw0KICAgIHZvaWQg
dW5saW5rQW5kRGVsZXRlKE5vZGUqKTsNCiAgICB2b2lkIGFwcGVuZE5vZGUoTm9kZSopOw0KICAg
IHZvaWQgcHJlcGVuZE5vZGUoTm9kZSopOw0KICAgIHZvaWQgaW5zZXJ0Tm9kZUJlZm9yZShOb2Rl
KiBiZWZvcmVOb2RlLCBOb2RlKiBuZXdOb2RlKTsNCiAgICB2b2lkIGRlbGV0ZUFsbE5vZGVzKCk7
DQogICAgDQogICAgaXRlcmF0b3IgbWFrZUl0ZXJhdG9yKE5vZGUqKTsNCiAgICBjb25zdF9pdGVy
YXRvciBtYWtlQ29uc3RJdGVyYXRvcihOb2RlKikgY29uc3Q7DQoNCiAgICBIYXNoVGFibGU8Tm9k
ZSosIE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvciwgTm9kZUhhc2gsIE5vZGVUcmFpdHMsIE5vZGVU
cmFpdHM+IG1faW1wbDsNCiAgICBOb2RlKiBtX2hlYWQgeyBudWxscHRyIH07DQogICAgTm9kZSog
bV90YWlsIHsgbnVsbHB0ciB9Ow0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmc+IHN0
cnVjdCBMaXN0SGFzaFNldE5vZGUNCg0KDQojbGluZSAxNzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0xpc3RIYXNoU2V0LmgiDQp7DQog
ICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBs
b2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0
TWFsbG9jZWQgPSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzTWFjcm8gPSBpbnQ7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaXN0SGFzaFNldE5v
ZGUoVCYmIHZhbHVlKQ0KICAgICAgICA6IG1fdmFsdWUoc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkN
CiAgICB7DQogICAgfQ0KDQogICAgVmFsdWVBcmcgbV92YWx1ZTsNCiAgICBMaXN0SGFzaFNldE5v
ZGUqIG1fcHJldiB7IG51bGxwdHIgfTsNCiAgICBMaXN0SGFzaFNldE5vZGUqIG1fbmV4dCB7IG51
bGxwdHIgfTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEhhc2hBcmc+IHN0cnVjdCBMaXN0SGFz
aFNldE5vZGVIYXNoRnVuY3Rpb25zIHsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIEhhc2hBcmc6Omhhc2goa2V5LT5t
X3ZhbHVlKTsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFQmIGEsIGNvbnN0IFQmIGIpIHsgcmV0dXJuIEhhc2hBcmc6OmVxdWFsKGEtPm1fdmFsdWUs
IGItPm1fdmFsdWUpOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gZmFsc2U7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
ZywgdHlwZW5hbWUgSGFzaEFyZz4gY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvciB7DQogICAgcHVi
bGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQq
IGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZh
c3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1p
Y29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnByaXZhdGU6DQogICAgdHlwZWRlZiBMaXN0SGFz
aFNldDxWYWx1ZUFyZywgSGFzaEFyZz4gTGlzdEhhc2hTZXRUeXBlOw0KICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZz4gaXRlcmF0b3I7DQogICAgdHlwZWRl
ZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGNvbnN0X2l0ZXJh
dG9yOw0KICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBOb2RlOw0KICAgIHR5
cGVkZWYgVmFsdWVBcmcgVmFsdWVUeXBlOw0KDQogICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0
PFZhbHVlQXJnLCBIYXNoQXJnPjsNCg0KICAgIExpc3RIYXNoU2V0SXRlcmF0b3IoY29uc3QgTGlz
dEhhc2hTZXRUeXBlKiBzZXQsIE5vZGUqIHBvc2l0aW9uKSA6IG1faXRlcmF0b3Ioc2V0LCBwb3Np
dGlvbikgeyB9DQoNCnB1YmxpYzoNCiAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5
cGU7DQogICAgdHlwZWRlZiBWYWx1ZVR5cGUgdmFsdWVfdHlwZTsNCiAgICB0eXBlZGVmIFZhbHVl
VHlwZSogcG9pbnRlcjsNCiAgICB0eXBlZGVmIFZhbHVlVHlwZSYgcmVmZXJlbmNlOw0KICAgIHR5
cGVkZWYgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsN
Cg0KICAgIExpc3RIYXNoU2V0SXRlcmF0b3IoKSB7IH0NCg0KICAgIA0KDQogICAgVmFsdWVUeXBl
KiBnZXQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFZhbHVlVHlwZSo+KG1faXRlcmF0b3Iu
Z2V0KCkpOyB9DQogICAgVmFsdWVUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0
KCk7IH0NCiAgICBWYWx1ZVR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQoKTsg
fQ0KDQogICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7ICsrbV9pdGVyYXRvcjsgcmV0dXJuICp0
aGlzOyB9DQoNCiAgICANCg0KICAgIGl0ZXJhdG9yJiBvcGVyYXRvci0tKCkgeyAtLW1faXRlcmF0
b3I7IHJldHVybiAqdGhpczsgfQ0KDQogICAgDQoNCiAgICANCiAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yID09IG90aGVy
Lm1faXRlcmF0b3I7IH0NCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVyLm1faXRlcmF0b3I7IH0NCg0KICAg
IG9wZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQ0K
DQpwcml2YXRlOg0KICAgIE5vZGUqIG5vZGUoKSB7IHJldHVybiBtX2l0ZXJhdG9yLm5vZGUoKTsg
fQ0KDQogICAgY29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvcjsNCn07DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRl
cmF0b3Igew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBO
b3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsg
fSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lz
SGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwcml2YXRlOg0KICAg
IHR5cGVkZWYgTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmc+IExpc3RIYXNoU2V0VHlwZTsN
CiAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGl0ZXJh
dG9yOw0KICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNo
QXJnPiBjb25zdF9pdGVyYXRvcjsNCiAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFy
Zz4gTm9kZTsNCiAgICB0eXBlZGVmIFZhbHVlQXJnIFZhbHVlVHlwZTsNCg0KICAgIGZyaWVuZCBj
bGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz47DQogICAgZnJpZW5kIGNsYXNzIExp
c3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+Ow0KDQogICAgTGlzdEhhc2hTZXRD
b25zdEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNoU2V0VHlwZSogc2V0LCBOb2RlKiBwb3NpdGlvbikN
CiAgICAgICAgOiBtX3NldChzZXQpDQogICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikNCg0K
DQoNCiNsaW5lIDI2NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvTGlzdEhhc2hTZXQuaCINCiAgICB7DQogICAgfQ0KDQpwdWJsaWM6DQog
ICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOw0KICAgIHR5cGVkZWYgY29uc3Qg
VmFsdWVUeXBlIHZhbHVlX3R5cGU7DQogICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUqIHBvaW50
ZXI7DQogICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUmIHJlZmVyZW5jZTsNCiAgICB0eXBlZGVm
IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7DQoNCiAg
ICBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3IoKQ0KICAgIHsNCiAgICB9DQoNCiAgICBjb25zdCBW
YWx1ZVR5cGUqIGdldCgpIGNvbnN0DQogICAgew0KDQoNCiNsaW5lIDI4NCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvTGlzdEhhc2hTZXQu
aCINCiAgICAgICAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKG1fcG9zaXRpb24tPm1fdmFsdWUpOw0K
ICAgIH0NCg0KICAgIGNvbnN0IFZhbHVlVHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KmdldCgpOyB9DQogICAgY29uc3QgVmFsdWVUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gZ2V0KCk7IH0NCg0KICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkNCiAgICB7DQoN
Cg0KI2xpbmUgMjk1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9MaXN0SGFzaFNldC5oIg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IG1fcG9zaXRpb24gPSBtX3Bvc2l0aW9uLT5tX25leHQ7DQoNCg0KI2xpbmUgMzAwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9MaXN0SGFz
aFNldC5oIg0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgDQoNCiAgICBjb25z
dF9pdGVyYXRvciYgb3BlcmF0b3ItLSgpDQogICAgew0KDQoNCg0KI2xpbmUgMzExICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9MaXN0SGFz
aFNldC5oIg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmICghbV9wb3NpdGlvbikNCiAg
ICAgICAgICAgIG1fcG9zaXRpb24gPSBtX3NldC0+bV90YWlsOw0KICAgICAgICBlbHNlDQogICAg
ICAgICAgICBtX3Bvc2l0aW9uID0gbV9wb3NpdGlvbi0+bV9wcmV2Ow0KDQoNCiNsaW5lIDMxOSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYv
TGlzdEhhc2hTZXQuaCINCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIA0KDQog
ICAgDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29u
c3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRpb247
DQogICAgfQ0KICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgb3RoZXIp
IGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0
aW9uOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBOb2RlKiBub2RlKCkgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQ0KDQogICAgY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBtX3NldCB7IG51bGxwdHIgfTsN
CiAgICBOb2RlKiBtX3Bvc2l0aW9uIHsgbnVsbHB0ciB9Ow0KDQoNCg0KI2xpbmUgMzQzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9MaXN0
SGFzaFNldC5oIg0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4NCnN0cnVj
dCBMaXN0SGFzaFNldFRyYW5zbGF0b3Igew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFz
aChrZXkpOyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6
ZXF1YWwoYS0+bV92YWx1ZSwgYik7IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVComIGxvY2F0aW9uLCBVJiYg
a2V5LCBWJiYpDQogICAgew0KICAgICAgICBsb2NhdGlvbiA9IG5ldyBUKHN0ZDo6Zm9yd2FyZDxV
PihrZXkpKTsNCiAgICB9DQp9Ow0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
DQppbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxpc3RIYXNoU2V0KHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxUPiBpbml0aWFsaXplckxpc3QpDQp7DQogICAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6
IGluaXRpYWxpemVyTGlzdCkNCiAgICAgICAgYWRkKHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4NCmlubGluZSBMaXN0SGFzaFNldDxULCBVPjo6TGlzdEhhc2hT
ZXQoY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQ0Kew0KICAgIGZvciAoYXV0byBpdCA9IG90aGVy
LmJlZ2luKCksIGVuZCA9IG90aGVyLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpDQogICAgICAgIGFk
ZCgqaXQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIExp
c3RIYXNoU2V0PFQsIFU+JiBMaXN0SGFzaFNldDxULCBVPjo6b3BlcmF0b3I9KGNvbnN0IExpc3RI
YXNoU2V0JiBvdGhlcikNCnsNCiAgICBMaXN0SGFzaFNldCB0bXAob3RoZXIpOw0KICAgIHN3YXAo
dG1wKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+DQppbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxpc3RIYXNoU2V0KExpc3RIYXNoU2V0
JiYgb3RoZXIpDQogICAgOiBtX2ltcGwoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVy
PihvdGhlci5tX2ltcGwpKQ0KICAgICwgbV9oZWFkKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9oZWFk
LCBudWxscHRyKSkNCiAgICAsIG1fdGFpbChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fdGFpbCwgbnVs
bHB0cikpDQp7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUg
TGlzdEhhc2hTZXQ8VCwgVT4mIExpc3RIYXNoU2V0PFQsIFU+OjpvcGVyYXRvcj0oTGlzdEhhc2hT
ZXQmJiBvdGhlcikNCnsNCiAgICBMaXN0SGFzaFNldCBtb3ZlZFNldChzdGQ6Om1vdmU8V1RGOjpD
aGVja01vdmVQYXJhbWV0ZXI+KG90aGVyKSk7DQogICAgc3dhcChtb3ZlZFNldCk7DQogICAgcmV0
dXJuICp0aGlzOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5l
IHZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OnN3YXAoTGlzdEhhc2hTZXQmIG90aGVyKQ0Kew0KICAg
IG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7DQogICAgc3RkOjpzd2FwKG1faGVhZCwgb3RoZXIu
bV9oZWFkKTsNCiAgICBzdGQ6OnN3YXAobV90YWlsLCBvdGhlci5tX3RhaWwpOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIExpc3RIYXNoU2V0PFQsIFU+Ojp+
TGlzdEhhc2hTZXQoKQ0Kew0KICAgIGRlbGV0ZUFsbE5vZGVzKCk7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUgdW5zaWduZWQgTGlzdEhhc2hTZXQ8VCwgVT46
OnNpemUoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2ltcGwuc2l6ZSgpOyANCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCmlubGluZSB1bnNpZ25lZCBMaXN0SGFzaFNldDxU
LCBVPjo6Y2FwYWNpdHkoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsg
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUgYm9vbCBMaXN0
SGFzaFNldDxULCBVPjo6aXNFbXB0eSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1faW1wbC5pc0Vt
cHR5KCk7IA0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIFQm
IExpc3RIYXNoU2V0PFQsIFU+OjpmaXJzdCgpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVy
biBtX2hlYWQtPm1fdmFsdWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
DQppbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlRmlyc3QoKQ0Kew0KICAgIHRh
a2VGaXJzdCgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5l
IFQgTGlzdEhhc2hTZXQ8VCwgVT46OnRha2VGaXJzdCgpDQp7DQogICAgKCh2b2lkKTApOw0KICAg
IGF1dG8gaXQgPSBtX2ltcGwuZmluZChtX2hlYWQpOw0KDQogICAgVCByZXN1bHQgPSBzdGQ6Om1v
dmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KCgqaXQpLT5tX3ZhbHVlKTsNCiAgICBtX2ltcGwu
cmVtb3ZlKGl0KTsNCiAgICB1bmxpbmtBbmREZWxldGUobV9oZWFkKTsNCg0KICAgIHJldHVybiBy
ZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUgY29u
c3QgVCYgTGlzdEhhc2hTZXQ8VCwgVT46OmZpcnN0KCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7
DQogICAgcmV0dXJuIG1faGVhZC0+bV92YWx1ZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4NCmlubGluZSBUJiBMaXN0SGFzaFNldDxULCBVPjo6bGFzdCgpDQp7DQogICAg
KCh2b2lkKTApOw0KICAgIHJldHVybiBtX3RhaWwtPm1fdmFsdWU7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUgY29uc3QgVCYgTGlzdEhhc2hTZXQ8VCwgVT46
Omxhc3QoKSBjb25zdA0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gbV90YWlsLT5tX3Zh
bHVlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIHZvaWQg
TGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZUxhc3QoKQ0Kew0KICAgIHRha2VMYXN0KCk7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUgVCBMaXN0SGFzaFNldDxU
LCBVPjo6dGFrZUxhc3QoKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICBhdXRvIGl0ID0gbV9pbXBs
LmZpbmQobV90YWlsKTsNCg0KICAgIFQgcmVzdWx0ID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3Zl
UGFyYW1ldGVyPigoKml0KS0+bV92YWx1ZSk7DQogICAgbV9pbXBsLnJlbW92ZShpdCk7DQogICAg
dW5saW5rQW5kRGVsZXRlKG1fdGFpbCk7DQoNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwg
VT46OmZpbmQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gaXRlcmF0b3INCnsNCiAgICBhdXRv
IGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsNCiAgICBp
ZiAoaXQgPT0gbV9pbXBsLmVuZCgpKQ0KICAgICAgICByZXR1cm4gZW5kKCk7DQogICAgcmV0dXJu
IG1ha2VJdGVyYXRvcigqaXQpOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4NCmlubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpmaW5kKGNvbnN0IFZhbHVlVHlwZSYg
dmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yDQp7DQogICAgYXV0byBpdCA9IG1faW1wbC50
ZW1wbGF0ZSBmaW5kPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSk7DQogICAgaWYgKGl0ID09IG1faW1w
bC5lbmQoKSkNCiAgICAgICAgcmV0dXJuIGVuZCgpOw0KICAgIHJldHVybiBtYWtlQ29uc3RJdGVy
YXRvcigqaXQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2xhdG9yPg0Kc3RydWN0IExp
c3RIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXIgew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gVHJhbnNsYXRvcjo6aGFz
aChrZXkpOyB9DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gVHJhbnNsYXRvcjo6ZXF1
YWwoYS0+bV92YWx1ZSwgYik7IH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwg
dHlwZW5hbWUgVT4NCnRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
Pg0KaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6ZmluZChjb25zdCBUJiB2
YWx1ZSkgLT4gaXRlcmF0b3INCnsNCiAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8
TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsNCiAg
ICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgpKQ0KICAgICAgICByZXR1cm4gZW5kKCk7DQogICAgcmV0
dXJuIG1ha2VJdGVyYXRvcigqaXQpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUs
IHR5cGVuYW1lIFU+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4NCmlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmZpbmQoY29uc3QgVCYg
dmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yDQp7DQogICAgYXV0byBpdCA9IG1faW1wbC50
ZW1wbGF0ZSBmaW5kPExpc3RIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+
Pih2YWx1ZSk7DQogICAgaWYgKGl0ID09IG1faW1wbC5lbmQoKSkNCiAgICAgICAgcmV0dXJuIGVu
ZCgpOw0KICAgIHJldHVybiBtYWtlQ29uc3RJdGVyYXRvcigqaXQpOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVD4NCmlubGluZSBib29sIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwg
VT46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgY29udGFpbnM8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNs
YXRvcj4+KHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCmlu
bGluZSBib29sIExpc3RIYXNoU2V0PFQsIFU+Ojpjb250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZh
bHVlKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8QmFzZVRy
YW5zbGF0b3I+KHZhbHVlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4N
CmF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBB
ZGRSZXN1bHQNCnsNCiAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRy
YW5zbGF0b3I+KHZhbHVlLCBudWxscHRyKTsNCiAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpDQog
ICAgICAgIGFwcGVuZE5vZGUoKnJlc3VsdC5pdGVyYXRvcik7DQogICAgcmV0dXJuIEFkZFJlc3Vs
dChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0VudHJ5KTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCmF1dG8gTGlzdEhhc2hTZXQ8VCwg
VT46OmFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0DQp7DQogICAgYXV0byByZXN1
bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPihzdGQ6Om1vdmU8V1RGOjpD
aGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKSwgbnVsbHB0cik7DQogICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQ0KICAgICAgICBhcHBlbmROb2RlKCpyZXN1bHQuaXRlcmF0b3IpOw0KICAgIHJldHVy
biBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdF
bnRyeSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQphdXRvIExpc3RI
YXNoU2V0PFQsIFU+OjphcHBlbmRPck1vdmVUb0xhc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
LT4gQWRkUmVzdWx0DQp7DQogICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJh
c2VUcmFuc2xhdG9yPih2YWx1ZSwgbnVsbHB0cik7DQogICAgTm9kZSogbm9kZSA9ICpyZXN1bHQu
aXRlcmF0b3I7DQogICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkNCiAgICAgICAgdW5saW5rKG5v
ZGUpOw0KICAgIGFwcGVuZE5vZGUobm9kZSk7DQoNCiAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJ
dGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YXBw
ZW5kT3JNb3ZlVG9MYXN0KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQNCnsNCiAgICBh
dXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpLCBudWxscHRyKTsNCiAgICBOb2RlKiBu
b2RlID0gKnJlc3VsdC5pdGVyYXRvcjsNCiAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQ0KICAg
ICAgICB1bmxpbmsobm9kZSk7DQogICAgYXBwZW5kTm9kZShub2RlKTsNCg0KICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRy
eSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQphdXRvIExpc3RIYXNo
U2V0PFQsIFU+OjpwcmVwZW5kT3JNb3ZlVG9GaXJzdChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAt
PiBBZGRSZXN1bHQNCnsNCiAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFz
ZVRyYW5zbGF0b3I+KHZhbHVlLCBudWxscHRyKTsNCiAgICBOb2RlKiBub2RlID0gKnJlc3VsdC5p
dGVyYXRvcjsNCiAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQ0KICAgICAgICB1bmxpbmsobm9k
ZSk7DQogICAgcHJlcGVuZE5vZGUobm9kZSk7DQoNCiAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJ
dGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KYXV0byBMaXN0SGFzaFNldDxULCBVPjo6cHJl
cGVuZE9yTW92ZVRvRmlyc3QoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3VsdA0Kew0KICAg
IGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSksIG51bGxwdHIpOw0KICAgIE5vZGUq
IG5vZGUgPSAqcmVzdWx0Lml0ZXJhdG9yOw0KICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpDQog
ICAgICAgIHVubGluayhub2RlKTsNCiAgICBwcmVwZW5kTm9kZShub2RlKTsNCg0KICAgIHJldHVy
biBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdF
bnRyeSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQphdXRvIExpc3RI
YXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwg
Y29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0DQp7DQogICAgcmV0dXJuIGlu
c2VydEJlZm9yZShmaW5kKGJlZm9yZVZhbHVlKSwgbmV3VmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KYXV0byBMaXN0SGFzaFNldDxULCBVPjo6aW5zZXJ0QmVm
b3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAt
PiBBZGRSZXN1bHQNCnsNCiAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQoYmVmb3JlVmFsdWUp
LCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG5ld1ZhbHVlKSk7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQphdXRvIExpc3RIYXNoU2V0PFQsIFU+Ojpp
bnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpIC0+IEFk
ZFJlc3VsdA0Kew0KICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJh
bnNsYXRvcj4obmV3VmFsdWUsIG51bGxwdHIpOw0KICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkN
CiAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShpdC5ub2RlKCksICpyZXN1bHQuaXRlcmF0b3IpOw0K
ICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1
bHQuaXNOZXdFbnRyeSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQph
dXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3IgaXQsIFZhbHVlVHlw
ZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQNCnsNCiAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50
ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFt
ZXRlcj4obmV3VmFsdWUpLCBudWxscHRyKTsNCiAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpDQog
ICAgICAgIGluc2VydE5vZGVCZWZvcmUoaXQubm9kZSgpLCAqcmVzdWx0Lml0ZXJhdG9yKTsNCiAg
ICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0
LmlzTmV3RW50cnkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5s
aW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZShpdGVyYXRvciBpdCkNCnsNCiAgICBp
ZiAoaXQgPT0gZW5kKCkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICBtX2ltcGwucmVtb3Zl
KGl0Lm5vZGUoKSk7DQogICAgdW5saW5rQW5kRGVsZXRlKGl0Lm5vZGUoKSk7DQogICAgcmV0dXJu
IHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQppbmxpbmUgYm9v
bCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpDQp7DQog
ICAgcmV0dXJuIHJlbW92ZShmaW5kKHZhbHVlKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+DQppbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6Y2xlYXIoKQ0Kew0K
ICAgIGRlbGV0ZUFsbE5vZGVzKCk7DQogICAgbV9pbXBsLmNsZWFyKCk7IA0KICAgIG1faGVhZCA9
IG51bGxwdHI7DQogICAgbV90YWlsID0gbnVsbHB0cjsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4NCnRlbXBsYXRlPHR5cGVuYW1lIFY+DQppbmxpbmUgYXV0byBMaXN0SGFz
aFNldDxULCBVPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUp
IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBpdGVyYXRv
cj46OnR5cGUNCnsNCiAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8QmFzZVRyYW5z
bGF0b3I+KHZhbHVlKTsNCiAgICBpZiAoaXQgPT0gbV9pbXBsLmVuZCgpKQ0KICAgICAgICByZXR1
cm4gZW5kKCk7DQogICAgcmV0dXJuIG1ha2VJdGVyYXRvcigqaXQpOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KdGVtcGxhdGU8dHlwZW5hbWUgVj4NCmlubGluZSBhdXRv
IExpc3RIYXNoU2V0PFQsIFU+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlw
ZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6
dmFsdWUsIGNvbnN0X2l0ZXJhdG9yPjo6dHlwZQ0Kew0KICAgIGF1dG8gaXQgPSBtX2ltcGwudGVt
cGxhdGUgZmluZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUpOw0KICAgIGlmIChpdCA9PSBtX2ltcGwu
ZW5kKCkpDQogICAgICAgIHJldHVybiBlbmQoKTsNCiAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0
b3IoKml0KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCnRlbXBsYXRl
PHR5cGVuYW1lIFY+DQppbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBVPjo6Y29udGFpbnModHlw
ZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUNCnsNCiAgICBy
ZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSk7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBW
Pg0KaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZSh0eXBlbmFtZSBH
ZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgYmVmb3JlVmFsdWUsIGNvbnN0IFZhbHVlVHlwZSYgbmV3
VmFsdWUpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBB
ZGRSZXN1bHQ+Ojp0eXBlDQp7DQogICAgcmV0dXJuIGluc2VydEJlZm9yZShmaW5kKGJlZm9yZVZh
bHVlKSwgbmV3VmFsdWUpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0K
dGVtcGxhdGU8dHlwZW5hbWUgVj4NCmlubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNl
cnRCZWZvcmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIGJlZm9yZVZhbHVlLCBW
YWx1ZVR5cGUmJiBuZXdWYWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0
cjxWPjo6dmFsdWUsIEFkZFJlc3VsdD46OnR5cGUNCnsNCiAgICByZXR1cm4gaW5zZXJ0QmVmb3Jl
KGZpbmQoYmVmb3JlVmFsdWUpLCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG5l
d1ZhbHVlKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQp0ZW1wbGF0
ZTx0eXBlbmFtZSBWPg0KaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZSh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBib29sPjo6dHlwZQ0Kew0KICAgIHJldHVybiBy
ZW1vdmUoZmluZCh2YWx1ZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
Pg0Kdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6dW5saW5rKE5vZGUqIG5vZGUpDQp7DQogICAgaWYg
KCFub2RlLT5tX3ByZXYpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX2hlYWQgPSBu
b2RlLT5tX25leHQ7DQogICAgfSBlbHNlIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBu
b2RlLT5tX3ByZXYtPm1fbmV4dCA9IG5vZGUtPm1fbmV4dDsNCiAgICB9DQoNCiAgICBpZiAoIW5v
ZGUtPm1fbmV4dCkgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fdGFpbCA9IG5vZGUt
Pm1fcHJldjsNCiAgICB9IGVsc2Ugew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG5vZGUt
Pm1fbmV4dC0+bV9wcmV2ID0gbm9kZS0+bV9wcmV2Ow0KICAgIH0NCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4NCnZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OnVubGlua0FuZERl
bGV0ZShOb2RlKiBub2RlKQ0Kew0KICAgIHVubGluayhub2RlKTsNCiAgICBkZWxldGUgbm9kZTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4NCnZvaWQgTGlzdEhhc2hTZXQ8
VCwgVT46OmFwcGVuZE5vZGUoTm9kZSogbm9kZSkNCnsNCiAgICBub2RlLT5tX3ByZXYgPSBtX3Rh
aWw7DQogICAgbm9kZS0+bV9uZXh0ID0gbnVsbHB0cjsNCg0KICAgIGlmIChtX3RhaWwpIHsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX3RhaWwtPm1fbmV4dCA9IG5vZGU7DQogICAgfSBl
bHNlIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX2hlYWQgPSBub2RlOw0KICAgIH0N
Cg0KICAgIG1fdGFpbCA9IG5vZGU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+DQp2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kTm9kZShOb2RlKiBub2RlKQ0Kew0K
ICAgIG5vZGUtPm1fcHJldiA9IG51bGxwdHI7DQogICAgbm9kZS0+bV9uZXh0ID0gbV9oZWFkOw0K
DQogICAgaWYgKG1faGVhZCkNCiAgICAgICAgbV9oZWFkLT5tX3ByZXYgPSBub2RlOw0KICAgIGVs
c2UNCiAgICAgICAgbV90YWlsID0gbm9kZTsNCg0KICAgIG1faGVhZCA9IG5vZGU7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+DQp2b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojpp
bnNlcnROb2RlQmVmb3JlKE5vZGUqIGJlZm9yZU5vZGUsIE5vZGUqIG5ld05vZGUpDQp7DQogICAg
aWYgKCFiZWZvcmVOb2RlKQ0KICAgICAgICByZXR1cm4gYXBwZW5kTm9kZShuZXdOb2RlKTsNCiAg
ICANCiAgICBuZXdOb2RlLT5tX25leHQgPSBiZWZvcmVOb2RlOw0KICAgIG5ld05vZGUtPm1fcHJl
diA9IGJlZm9yZU5vZGUtPm1fcHJldjsNCiAgICBpZiAoYmVmb3JlTm9kZS0+bV9wcmV2KQ0KICAg
ICAgICBiZWZvcmVOb2RlLT5tX3ByZXYtPm1fbmV4dCA9IG5ld05vZGU7DQogICAgYmVmb3JlTm9k
ZS0+bV9wcmV2ID0gbmV3Tm9kZTsNCg0KICAgIGlmICghbmV3Tm9kZS0+bV9wcmV2KQ0KICAgICAg
ICBtX2hlYWQgPSBuZXdOb2RlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
Pg0Kdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6ZGVsZXRlQWxsTm9kZXMoKQ0Kew0KICAgIGlmICgh
bV9oZWFkKQ0KICAgICAgICByZXR1cm47DQoNCiAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2hlYWQs
ICpuZXh0ID0gbV9oZWFkLT5tX25leHQ7IG5vZGU7IG5vZGUgPSBuZXh0LCBuZXh0ID0gbm9kZSA/
IG5vZGUtPm1fbmV4dCA6IG51bGxwdHIpDQogICAgICAgIGRlbGV0ZSBub2RlOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPg0KaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwg
VT46Om1ha2VJdGVyYXRvcihOb2RlKiBwb3NpdGlvbikgLT4gaXRlcmF0b3INCnsNCiAgICByZXR1
cm4gaXRlcmF0b3IodGhpcywgcG9zaXRpb24pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPg0KaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Om1ha2VDb25zdEl0ZXJh
dG9yKE5vZGUqIHBvc2l0aW9uKSBjb25zdCAtPiBjb25zdF9pdGVyYXRvcg0KeyANCiAgICByZXR1
cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9zaXRpb24pOw0KfQ0KDQp9IA0KDQp1c2luZyBXVEY6
Okxpc3RIYXNoU2V0Ow0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1RocmVhZEdyb3VwLmgiDQoNCg0KDQpuYW1lc3BhY2Ug
V1RGIHsNCg0KZW51bSBjbGFzcyBUaHJlYWRHcm91cEFkZFJlc3VsdCB7IE5ld2x5QWRkZWQsIEFs
cmVhZHlBZGRlZCwgTm90QWRkZWQgfTsNCg0KY2xhc3MgVGhyZWFkR3JvdXAgZmluYWwgOiBwdWJs
aWMgc3RkOjplbmFibGVfc2hhcmVkX2Zyb21fdGhpczxUaHJlYWRHcm91cD4gew0KICAgIHB1Ymxp
Yzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBs
b2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0
TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgVGhyZWFkR3JvdXAoY29uc3QgVGhyZWFkR3Jv
dXAmKSA9IGRlbGV0ZTsgVGhyZWFkR3JvdXAmIG9wZXJhdG9yPShjb25zdCBUaHJlYWRHcm91cCYp
ID0gZGVsZXRlOzsNCnB1YmxpYzoNCiAgICBmcmllbmQgY2xhc3MgVGhyZWFkOw0KDQogICAgc3Rh
dGljIHN0ZDo6c2hhcmVkX3B0cjxUaHJlYWRHcm91cD4gY3JlYXRlKCkNCiAgICB7DQogICAgICAg
IHJldHVybiBzdGQ6OmFsbG9jYXRlX3NoYXJlZDxUaHJlYWRHcm91cD4oRmFzdEFsbG9jYXRvcjxU
aHJlYWRHcm91cD4oKSk7DQogICAgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFRocmVh
ZEdyb3VwQWRkUmVzdWx0IGFkZChUaHJlYWQmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
VGhyZWFkR3JvdXBBZGRSZXN1bHQgYWRkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgVGhyZWFkJik7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFRocmVhZEdyb3VwQWRkUmVzdWx0IGFkZEN1cnJl
bnRUaHJlYWQoKTsNCg0KICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZjxUaHJlYWQ+PiYgdGhyZWFk
cyhjb25zdCBBYnN0cmFjdExvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkczsgfQ0KDQog
ICAgV29yZExvY2smIGdldExvY2soKSB7IHJldHVybiBtX2xvY2s7IH0NCg0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSB+VGhyZWFkR3JvdXAoKTsNCg0KICAgIFRocmVhZEdyb3VwKCkgPSBkZWZh
dWx0Ow0KDQpwcml2YXRlOg0KICAgIHN0ZDo6d2Vha19wdHI8VGhyZWFkR3JvdXA+IHdlYWtGcm9t
VGhpcygpDQogICAgew0KICAgICAgICByZXR1cm4gc2hhcmVkX2Zyb21fdGhpcygpOw0KICAgIH0N
Cg0KICAgIA0KICAgIFdvcmRMb2NrIG1fbG9jazsNCiAgICBMaXN0SGFzaFNldDxSZWY8VGhyZWFk
Pj4gbV90aHJlYWRzOw0KfTsNCg0KfQ0KDQp1c2luZyBXVEY6OlRocmVhZEdyb3VwOw0KdXNpbmcg
V1RGOjpUaHJlYWRHcm91cEFkZFJlc3VsdDsNCiNsaW5lIDI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hY2hpbmVTdGFja01hcmtlci5o
Ig0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQ29kZUJsb2NrU2V0Ow0KY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7DQpjbGFzcyBIZWFwOw0KY2xhc3MgSklUU3R1YlJvdXRpbmVTZXQ7DQoNCnN0
cnVjdCBDdXJyZW50VGhyZWFkU3RhdGUgew0KICAgIHZvaWQqIHN0YWNrT3JpZ2luIHsgbnVsbHB0
ciB9Ow0KICAgIHZvaWQqIHN0YWNrVG9wIHsgbnVsbHB0ciB9Ow0KICAgIFJlZ2lzdGVyU3RhdGUq
IHJlZ2lzdGVyU3RhdGUgeyBudWxscHRyIH07DQp9Ow0KICAgIA0KY2xhc3MgTWFjaGluZVRocmVh
ZHMgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJu
IHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFz
dE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3RO
dWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1
c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVy
ZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgTWFjaGluZVRocmVh
ZHMoY29uc3QgTWFjaGluZVRocmVhZHMmKSA9IGRlbGV0ZTsgTWFjaGluZVRocmVhZHMmIG9wZXJh
dG9yPShjb25zdCBNYWNoaW5lVGhyZWFkcyYpID0gZGVsZXRlOzsNCnB1YmxpYzoNCiAgICBNYWNo
aW5lVGhyZWFkcygpOw0KDQogICAgdm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2
YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5lU2V0JiwgQ29kZUJsb2NrU2V0JiwgQ3VycmVudFRo
cmVhZFN0YXRlKiwgVGhyZWFkKik7DQoNCiAgICANCiAgICBib29sIGFkZEN1cnJlbnRUaHJlYWQo
KSB7IHJldHVybiBtX3RocmVhZEdyb3VwLT5hZGRDdXJyZW50VGhyZWFkKCkgPT0gVGhyZWFkR3Jv
dXBBZGRSZXN1bHQ6Ok5ld2x5QWRkZWQ7IH0NCg0KICAgIFdvcmRMb2NrJiBnZXRMb2NrKCkgeyBy
ZXR1cm4gbV90aHJlYWRHcm91cC0+Z2V0TG9jaygpOyB9DQogICAgY29uc3QgTGlzdEhhc2hTZXQ8
UmVmPFRocmVhZD4+JiB0aHJlYWRzKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpIGNvbnN0
IHsgcmV0dXJuIG1fdGhyZWFkR3JvdXAtPnRocmVhZHMobG9ja2VyKTsgfQ0KDQpwcml2YXRlOg0K
ICAgIHZvaWQgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoQ29uc2VydmF0aXZlUm9vdHMmLCBKSVRT
dHViUm91dGluZVNldCYsIENvZGVCbG9ja1NldCYsIEN1cnJlbnRUaHJlYWRTdGF0ZSYpOw0KDQog
ICAgdm9pZCB0cnlDb3B5T3RoZXJUaHJlYWRTdGFjayhUaHJlYWQmLCB2b2lkKiwgc2l6ZV90IGNh
cGFjaXR5LCBzaXplX3QqKTsNCiAgICBib29sIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25z
dCBBYnN0cmFjdExvY2tlciYsIHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCosIFRocmVh
ZCYpOw0KDQogICAgc3RkOjpzaGFyZWRfcHRyPFRocmVhZEdyb3VwPiBtX3RocmVhZEdyb3VwOw0K
fTsNCg0KDQoNCg0KDQoNCg0KDQoNCmludCBjYWxsV2l0aEN1cnJlbnRUaHJlYWRTdGF0ZShjb25z
dCBTY29wZWRMYW1iZGE8dm9pZChDdXJyZW50VGhyZWFkU3RhdGUmKT4mKTsNCg0KfSANCg0KI2xp
bmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcU2FtcGxpbmdQcm9maWxlci5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFx3YXNtXFxXYXNtQ29tcGlsYXRpb25Nb2Rl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gew0KDQplbnVtIGNs
YXNzIENvbXBpbGF0aW9uTW9kZSA6IHVpbnQ4X3Qgew0KICAgIExMSW50TW9kZSwNCiAgICBCQlFN
b2RlLA0KICAgIE9NR01vZGUsDQogICAgT01HRm9yT1NSRW50cnlNb2RlLA0KICAgIEVtYmVkZGVy
RW50cnlwb2ludE1vZGUsDQp9Ow0KDQpjb25zdCBjaGFyKiBtYWtlU3RyaW5nKENvbXBpbGF0aW9u
TW9kZSk7DQpib29sIHdhc21GdW5jdGlvblNpemVDYW5CZU9NR0NvbXBpbGVkKHNpemVfdCk7DQoN
Cn0gfSANCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFNhbXBsaW5nUHJvZmlsZXIuaCINCg0KDQoNCg0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFZNOw0KY2xhc3MgRXhlY3V0YWJsZUJhc2U7DQoNCmNsYXNz
IFNhbXBsaW5nUHJvZmlsZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2FtcGxpbmdQ
cm9maWxlcj4gew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlv
bjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhp
c0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQoN
CiAgICBzdHJ1Y3QgVW5wcm9jZXNzZWRTdGFja0ZyYW1lIHsNCiAgICAgICAgVW5wcm9jZXNzZWRT
dGFja0ZyYW1lKENvZGVCbG9jayogY29kZUJsb2NrLCBDYWxsZWVCaXRzIGNhbGxlZSwgQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4KQ0KICAgICAgICAgICAgOiB1bnZlcmlmaWVkQ2FsbGVlKGNh
bGxlZSkNCiAgICAgICAgICAgICwgdmVyaWZpZWRDb2RlQmxvY2soY29kZUJsb2NrKQ0KICAgICAg
ICAgICAgLCBjYWxsU2l0ZUluZGV4KGNhbGxTaXRlSW5kZXgpDQogICAgICAgIHsgfQ0KDQogICAg
ICAgIFVucHJvY2Vzc2VkU3RhY2tGcmFtZShjb25zdCB2b2lkKiBwYykNCiAgICAgICAgICAgIDog
Y0NvZGVQQyhwYykNCiAgICAgICAgeyB9DQoNCiAgICAgICAgVW5wcm9jZXNzZWRTdGFja0ZyYW1l
KCkgPSBkZWZhdWx0Ow0KDQogICAgICAgIGNvbnN0IHZvaWQqIGNDb2RlUEMgeyBudWxscHRyIH07
DQogICAgICAgIENhbGxlZUJpdHMgdW52ZXJpZmllZENhbGxlZTsNCiAgICAgICAgQ29kZUJsb2Nr
KiB2ZXJpZmllZENvZGVCbG9jayB7IG51bGxwdHIgfTsNCiAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZUluZGV4Ow0KDQoNCiNsaW5lIDcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFNhbXBsaW5nUHJvZmlsZXIuaCINCiAgICAg
ICAgT3B0aW9uYWw8V2FzbTo6Q29tcGlsYXRpb25Nb2RlPiB3YXNtQ29tcGlsYXRpb25Nb2RlOw0K
ICAgIH07DQoNCiAgICBlbnVtIGNsYXNzIEZyYW1lVHlwZSB7IA0KICAgICAgICBFeGVjdXRhYmxl
LA0KICAgICAgICBXYXNtLA0KICAgICAgICBIb3N0LA0KICAgICAgICBDLA0KICAgICAgICBVbmtu
b3duLA0KICAgIH07DQoNCiAgICBzdHJ1Y3QgU3RhY2tGcmFtZSB7DQogICAgICAgIFN0YWNrRnJh
bWUoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpDQogICAgICAgICAgICA6IGZyYW1lVHlwZShG
cmFtZVR5cGU6OkV4ZWN1dGFibGUpDQogICAgICAgICAgICAsIGV4ZWN1dGFibGUoZXhlY3V0YWJs
ZSkNCiAgICAgICAgeyB9DQoNCiAgICAgICAgU3RhY2tGcmFtZSgpDQogICAgICAgIHsgfQ0KDQog
ICAgICAgIEZyYW1lVHlwZSBmcmFtZVR5cGUgeyBGcmFtZVR5cGU6OlVua25vd24gfTsNCiAgICAg
ICAgY29uc3Qgdm9pZCogY0NvZGVQQyB7IG51bGxwdHIgfTsNCiAgICAgICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUgeyBudWxscHRyIH07DQogICAgICAgIEpTT2JqZWN0KiBjYWxsZWUgeyBu
dWxscHRyIH07DQoNCg0KI2xpbmUgOTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU2FtcGxpbmdQcm9maWxlci5oIg0KICAgICAgICBP
cHRpb25hbDxXYXNtOjpDb21waWxhdGlvbk1vZGU+IHdhc21Db21waWxhdGlvbk1vZGU7DQoNCiAg
ICAgICAgc3RydWN0IENvZGVMb2NhdGlvbiB7DQogICAgICAgICAgICBib29sIGhhc0NvZGVCbG9j
a0hhc2goKSBjb25zdA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBjb2Rl
QmxvY2tIYXNoLmlzU2V0KCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGJvb2wgaGFz
Qnl0ZWNvZGVJbmRleCgpIGNvbnN0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0
dXJuICEhYnl0ZWNvZGVJbmRleDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgYm9vbCBo
YXNFeHByZXNzaW9uSW5mbygpIGNvbnN0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
cmV0dXJuIGxpbmVOdW1iZXIgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
DQogICAgICAgICAgICAgICAgICAgICYmIGNvbHVtbk51bWJlciAhPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgdW5zaWduZWQgbGluZU51bWJlciB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSB9Ow0KICAgICAgICAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyIHsgc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07DQogICAgICAgICAgICBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXg7DQogICAgICAgICAgICBDb2RlQmxvY2tIYXNoIGNvZGVCbG9ja0hh
c2g7DQogICAgICAgICAgICBKSVRUeXBlIGppdFR5cGUgeyBKSVRUeXBlOjpOb25lIH07DQogICAg
ICAgIH07DQoNCiAgICAgICAgQ29kZUxvY2F0aW9uIHNlbWFudGljTG9jYXRpb247DQogICAgICAg
IE9wdGlvbmFsPHN0ZDo6cGFpcjxDb2RlTG9jYXRpb24sIENvZGVCbG9jayo+PiBtYWNoaW5lTG9j
YXRpb247IA0KDQogICAgICAgIGJvb2wgaGFzRXhwcmVzc2lvbkluZm8oKSBjb25zdCB7IHJldHVy
biBzZW1hbnRpY0xvY2F0aW9uLmhhc0V4cHJlc3Npb25JbmZvKCk7IH0NCiAgICAgICAgdW5zaWdu
ZWQgbGluZU51bWJlcigpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgICAgIHJldHVybiBzZW1hbnRpY0xvY2F0aW9uLmxpbmVOdW1iZXI7DQogICAgICAg
IH0NCiAgICAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyKCkgY29uc3QNCiAgICAgICAgew0KICAg
ICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljTG9jYXRpb24u
Y29sdW1uTnVtYmVyOw0KICAgICAgICB9DQoNCiAgICAgICAgDQogICAgICAgIFN0cmluZyBuYW1l
RnJvbUNhbGxlZShWTSYpOw0KICAgICAgICBTdHJpbmcgZGlzcGxheU5hbWUoVk0mKTsNCiAgICAg
ICAgU3RyaW5nIGRpc3BsYXlOYW1lRm9ySlNPTlRlc3RzKFZNJik7IA0KICAgICAgICBpbnQgZnVu
Y3Rpb25TdGFydExpbmUoKTsNCiAgICAgICAgdW5zaWduZWQgZnVuY3Rpb25TdGFydENvbHVtbigp
Ow0KICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpOw0KICAgICAgICBTdHJpbmcgdXJsKCk7DQog
ICAgfTsNCg0KICAgIHN0cnVjdCBVbnByb2Nlc3NlZFN0YWNrVHJhY2Ugew0KICAgICAgICBTZWNv
bmRzIHRpbWVzdGFtcDsNCiAgICAgICAgdm9pZCogdG9wUEM7DQogICAgICAgIGJvb2wgdG9wRnJh
bWVJc0xMSW50Ow0KICAgICAgICB2b2lkKiBsbGludFBDOw0KICAgICAgICBWZWN0b3I8VW5wcm9j
ZXNzZWRTdGFja0ZyYW1lPiBmcmFtZXM7DQogICAgfTsNCg0KICAgIHN0cnVjdCBTdGFja1RyYWNl
IHsNCiAgICAgICAgU2Vjb25kcyB0aW1lc3RhbXA7DQogICAgICAgIFZlY3RvcjxTdGFja0ZyYW1l
PiBmcmFtZXM7DQogICAgICAgIFN0YWNrVHJhY2UoKQ0KICAgICAgICB7IH0NCiAgICAgICAgU3Rh
Y2tUcmFjZShTdGFja1RyYWNlJiYgb3RoZXIpDQogICAgICAgICAgICA6IHRpbWVzdGFtcChvdGhl
ci50aW1lc3RhbXApDQogICAgICAgICAgICAsIGZyYW1lcyhzdGQ6Om1vdmU8V1RGOjpDaGVja01v
dmVQYXJhbWV0ZXI+KG90aGVyLmZyYW1lcykpDQogICAgICAgIHsgfQ0KICAgIH07DQoNCiAgICBT
YW1wbGluZ1Byb2ZpbGVyKFZNJiwgUmVmPFN0b3B3YXRjaD4mJik7DQogICAgflNhbXBsaW5nUHJv
ZmlsZXIoKTsNCiAgICB2b2lkIG5vdGljZUpTTG9ja0FjcXVpc2l0aW9uKCk7DQogICAgdm9pZCBu
b3RpY2VWTUVudHJ5KCk7DQogICAgdm9pZCBzaHV0ZG93bigpOw0KICAgIHZvaWQgdmlzaXQoU2xv
dFZpc2l0b3ImKTsNCiAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9DQogICAg
dm9pZCBzZXRUaW1pbmdJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKSB7IG1fdGltaW5nSW50ZXJ2
YWwgPSBpbnRlcnZhbDsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHN0YXJ0KCk7
DQogICAgdm9pZCBzdGFydChjb25zdCBBYnN0cmFjdExvY2tlciYpOw0KICAgIFZlY3RvcjxTdGFj
a1RyYWNlPiByZWxlYXNlU3RhY2tUcmFjZXMoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgU3RyaW5nIHN0YWNrVHJhY2VzQXNKU09OKCk7DQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgbm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9u
VGhyZWFkKCk7DQogICAgdm9pZCBub3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRpb25UaHJl
YWQoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsNCiAgICB2b2lkIHByb2Nlc3NVbnZlcmlmaWVkU3Rh
Y2tUcmFjZXMoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsNCiAgICB2b2lkIHNldFN0b3BXYXRjaChj
b25zdCBBYnN0cmFjdExvY2tlciYsIFJlZjxTdG9wd2F0Y2g+JiYgc3RvcHdhdGNoKSB7IG1fc3Rv
cHdhdGNoID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihzdG9wd2F0Y2gpOyB9
DQogICAgdm9pZCBwYXVzZShjb25zdCBBYnN0cmFjdExvY2tlciYpOw0KICAgIHZvaWQgY2xlYXJE
YXRhKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7DQoNCiAgICANCiAgICB2b2lkIHJlZ2lzdGVyRm9y
UmVwb3J0QXRFeGl0KCk7DQogICAgdm9pZCByZXBvcnREYXRhVG9PcHRpb25GaWxlKCk7DQogICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVwb3J0VG9wRnVuY3Rpb25zKCk7DQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVwb3J0VG9wRnVuY3Rpb25zKFByaW50U3RyZWFtJik7
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVwb3J0VG9wQnl0ZWNvZGVzKCk7DQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVwb3J0VG9wQnl0ZWNvZGVzKFByaW50U3Ry
ZWFtJik7DQoNCg0KDQojbGluZSAxOTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU2FtcGxpbmdQcm9maWxlci5oIg0KDQpwcml2YXRl
Og0KICAgIHZvaWQgY3JlYXRlVGhyZWFkSWZOZWNlc3NhcnkoY29uc3QgQWJzdHJhY3RMb2NrZXIm
KTsNCiAgICB2b2lkIHRpbWVyTG9vcCgpOw0KICAgIHZvaWQgdGFrZVNhbXBsZShjb25zdCBBYnN0
cmFjdExvY2tlciYsIFNlY29uZHMmIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGltZSk7DQoNCiAgICBM
b2NrIG1fbG9jazsNCiAgICBib29sIG1faXNQYXVzZWQ7DQogICAgYm9vbCBtX2lzU2h1dERvd247
DQogICAgYm9vbCBtX25lZWRzUmVwb3J0QXRFeGl0IHsgZmFsc2UgfTsNCiAgICBWTSYgbV92bTsN
CiAgICBXZWFrUmFuZG9tIG1fd2Vha1JhbmRvbTsNCiAgICBSZWY8U3RvcHdhdGNoPiBtX3N0b3B3
YXRjaDsNCiAgICBWZWN0b3I8U3RhY2tUcmFjZT4gbV9zdGFja1RyYWNlczsNCiAgICBWZWN0b3I8
VW5wcm9jZXNzZWRTdGFja1RyYWNlPiBtX3VucHJvY2Vzc2VkU3RhY2tUcmFjZXM7DQogICAgU2Vj
b25kcyBtX3RpbWluZ0ludGVydmFsOw0KICAgIFNlY29uZHMgbV9sYXN0VGltZTsNCiAgICBSZWZQ
dHI8VGhyZWFkPiBtX3RocmVhZDsNCiAgICBSZWZQdHI8VGhyZWFkPiBtX2pzY0V4ZWN1dGlvblRo
cmVhZDsNCiAgICBIYXNoU2V0PEpTQ2VsbCo+IG1fbGl2ZUNlbGxQb2ludGVyczsNCiAgICBWZWN0
b3I8VW5wcm9jZXNzZWRTdGFja0ZyYW1lPiBtX2N1cnJlbnRGcmFtZXM7DQp9Ow0KDQp9IA0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpT
YW1wbGluZ1Byb2ZpbGVyOjpGcmFtZVR5cGUpOw0KDQp9IA0KDQojbGluZSAyMzEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU2FtcGxp
bmdQcm9maWxlci5oIg0KI2xpbmUgMjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCINCg0KDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
Ynl0ZWNvZGVcXENvZGVCbG9jay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxBcnJh
eVByb2ZpbGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmUuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcQ2xhc3NJbmZvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXENvbnN0cnVjdERhdGEuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSlNPYmplY3Q7DQoN
Cg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2JqZWN0KiBjb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgY2hhciog
ZXJyb3JNZXNzYWdlKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdCogY29uc3RydWN0
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNWYWx1ZSBuZXdUYXJn
ZXQsIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpOw0KDQpfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgSlNPYmplY3QqIGNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgY29uc3RydWN0b3IsIGNvbnN0IENhbGxEYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUg
bmV3VGFyZ2V0KTsNCg0KX19mb3JjZWlubGluZSBKU09iamVjdCogY29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0IENh
bGxEYXRhJiBjYWxsRGF0YSwgY29uc3QgQXJnTGlzdCYgYXJncykNCnsNCiAgICByZXR1cm4gY29u
c3RydWN0KGdsb2JhbE9iamVjdCwgY29uc3RydWN0b3JPYmplY3QsIGNhbGxEYXRhLCBhcmdzLCBj
b25zdHJ1Y3Rvck9iamVjdCk7DQp9DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdCog
cHJvZmlsZWRDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBQcm9maWxpbmdSZWFzb24sIEpTVmFs
dWUgY29uc3RydWN0b3IsIGNvbnN0IENhbGxEYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUg
bmV3VGFyZ2V0KTsNCg0KX19mb3JjZWlubGluZSBKU09iamVjdCogcHJvZmlsZWRDb25zdHJ1Y3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNW
YWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQ0Kew0KICAgIHJldHVybiBwcm9maWxlZENvbnN0cnVjdChnbG9iYWxPYmpl
Y3QsIHJlYXNvbiwgY29uc3RydWN0b3JPYmplY3QsIGNhbGxEYXRhLCBhcmdzLCBjb25zdHJ1Y3Rv
ck9iamVjdCk7DQp9DQoNCn0gDQojbGluZSAyNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDbGFzc0luZm8uaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
SlNDYXN0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ2VsbC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxFbnVtZXJhdGlvbk1vZGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQplbnVt
IGNsYXNzIFByb3BlcnR5TmFtZU1vZGUgew0KICAgIFN5bWJvbHMgPSAxIDw8IDAsDQogICAgU3Ry
aW5ncyA9IDEgPDwgMSwNCiAgICBTdHJpbmdzQW5kU3ltYm9scyA9IFN5bWJvbHMgfCBTdHJpbmdz
LA0KfTsNCg0KZW51bSBjbGFzcyBQcml2YXRlU3ltYm9sTW9kZSB7DQogICAgSW5jbHVkZSwNCiAg
ICBFeGNsdWRlDQp9Ow0KDQplbnVtIGNsYXNzIERvbnRFbnVtUHJvcGVydGllc01vZGUgew0KICAg
IEluY2x1ZGUsDQogICAgRXhjbHVkZQ0KfTsNCg0KZW51bSBjbGFzcyBKU09iamVjdFByb3BlcnRp
ZXNNb2RlIHsNCiAgICBJbmNsdWRlLA0KICAgIEV4Y2x1ZGUNCn07DQoNCmNsYXNzIEVudW1lcmF0
aW9uTW9kZSB7DQpwdWJsaWM6DQogICAgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGll
c01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSA9IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4
Y2x1ZGUsIEpTT2JqZWN0UHJvcGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSA9IEpT
T2JqZWN0UHJvcGVydGllc01vZGU6OkluY2x1ZGUpDQogICAgICAgIDogbV9kb250RW51bVByb3Bl
cnRpZXNNb2RlKGRvbnRFbnVtUHJvcGVydGllc01vZGUpDQogICAgICAgICwgbV9qc09iamVjdFBy
b3BlcnRpZXNNb2RlKGpzT2JqZWN0UHJvcGVydGllc01vZGUpDQogICAgew0KICAgIH0NCg0KICAg
IEVudW1lcmF0aW9uTW9kZShjb25zdCBFbnVtZXJhdGlvbk1vZGUmIG1vZGUsIEpTT2JqZWN0UHJv
cGVydGllc01vZGUganNPYmplY3RQcm9wZXJ0aWVzTW9kZSkNCiAgICAgICAgOiBtX2RvbnRFbnVt
UHJvcGVydGllc01vZGUobW9kZS5tX2RvbnRFbnVtUHJvcGVydGllc01vZGUpDQogICAgICAgICwg
bV9qc09iamVjdFByb3BlcnRpZXNNb2RlKGpzT2JqZWN0UHJvcGVydGllc01vZGUpDQogICAgew0K
ICAgIH0NCg0KICAgIA0KDQogICAgYm9vbCBpbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX2RvbnRFbnVtUHJvcGVydGllc01vZGUgPT0gRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTo6SW5jbHVkZTsNCiAgICB9DQoNCiAgICBib29sIGluY2x1ZGVKU09iamVj
dFByb3BlcnRpZXMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fanNPYmplY3RQcm9wZXJ0aWVz
TW9kZSA9PSBKU09iamVjdFByb3BlcnRpZXNNb2RlOjpJbmNsdWRlOw0KICAgIH0NCg0KcHJpdmF0
ZToNCiAgICBEb250RW51bVByb3BlcnRpZXNNb2RlIG1fZG9udEVudW1Qcm9wZXJ0aWVzTW9kZTsN
CiAgICBKU09iamVjdFByb3BlcnRpZXNNb2RlIG1fanNPYmplY3RQcm9wZXJ0aWVzTW9kZTsNCn07
DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxKU0NlbGwuaCINCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFNsb3RWaXNp
dG9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxNYXJrU3RhY2suaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVh
cFxcR0NTZWdtZW50ZWRBcnJheS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQp1c2luZyBHQ1NlZ21lbnRlZEFycmF5TWFsbG9jID0gRmFzdE1hbGxvYzsNCg0KdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+DQpjbGFzcyBHQ0FycmF5U2VnbWVudCA6IHB1YmxpYyBEb3VibHlMaW5r
ZWRMaXN0Tm9kZTxHQ0FycmF5U2VnbWVudDxUPj4gew0KICAgIGZyaWVuZCBjbGFzcyBXVEY6OkRv
dWJseUxpbmtlZExpc3ROb2RlPEdDQXJyYXlTZWdtZW50PFQ+PjsNCnB1YmxpYzoNCiAgICBHQ0Fy
cmF5U2VnbWVudCgpDQogICAgICAgIDogRG91Ymx5TGlua2VkTGlzdE5vZGU8R0NBcnJheVNlZ21l
bnQ8VD4+KCkNCg0KDQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxoZWFwXFxHQ1NlZ21lbnRlZEFycmF5LmgiDQogICAgew0KICAgIH0N
Cg0KICAgIHN0YXRpYyBHQ0FycmF5U2VnbWVudCogY3JlYXRlKCk7DQogICAgc3RhdGljIHZvaWQg
ZGVzdHJveShHQ0FycmF5U2VnbWVudCopOw0KDQogICAgVCogZGF0YSgpDQogICAgew0KICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih0aGlzICsgMSk7DQogICAgfQ0KDQogICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgYmxvY2tTaXplID0gNCAqIEtCOw0KDQogICAgR0NBcnJheVNlZ21l
bnQqIG1fcHJldjsNCiAgICBHQ0FycmF5U2VnbWVudCogbV9uZXh0Ow0KDQoNCiNsaW5lIDY0ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEdD
U2VnbWVudGVkQXJyYXkuaCINCn07DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHQ1Nl
Z21lbnRlZEFycmF5SXRlcmF0b3I7DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBUPg0KY2xhc3MgR0NT
ZWdtZW50ZWRBcnJheSB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCog
cCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJu
IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXpl
KSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0
ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxv
Y2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcg
X190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICBH
Q1NlZ21lbnRlZEFycmF5KGNvbnN0IEdDU2VnbWVudGVkQXJyYXkmKSA9IGRlbGV0ZTsgR0NTZWdt
ZW50ZWRBcnJheSYgb3BlcmF0b3I9KGNvbnN0IEdDU2VnbWVudGVkQXJyYXkmKSA9IGRlbGV0ZTs7
DQogICAgZnJpZW5kIGNsYXNzIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxUPjsNCiAgICBmcmll
bmQgY2xhc3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yPGNvbnN0IFQ+Ow0KcHVibGljOg0KICAg
IEdDU2VnbWVudGVkQXJyYXkoKTsNCiAgICB+R0NTZWdtZW50ZWRBcnJheSgpOw0KDQogICAgdm9p
ZCBhcHBlbmQoVCk7DQoNCiAgICBib29sIGNhblJlbW92ZUxhc3QoKTsNCiAgICBjb25zdCBUIHJl
bW92ZUxhc3QoKTsNCiAgICBib29sIHJlZmlsbCgpOw0KICAgIA0KICAgIHNpemVfdCBzaXplKCk7
DQogICAgYm9vbCBpc0VtcHR5KCk7DQoNCiAgICB2b2lkIGZpbGxWZWN0b3IoVmVjdG9yPFQ+Jik7
DQogICAgdm9pZCBjbGVhcigpOw0KDQogICAgdHlwZWRlZiBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0
b3I8VD4gaXRlcmF0b3I7DQogICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBHQ1Nl
Z21lbnRlZEFycmF5SXRlcmF0b3I8VD4obV9zZWdtZW50cy5oZWFkKCksIG1fdG9wKTsgfQ0KICAg
IGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvcjxU
PigpOyB9DQoNCnByb3RlY3RlZDoNCiAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IHN0cnVjdCBD
YXBhY2l0eUZyb21TaXplIHsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgdmFsdWUg
PSAoc2l6ZSAtIHNpemVvZihHQ0FycmF5U2VnbWVudDxUPikpIC8gc2l6ZW9mKFQpOw0KICAgIH07
DQoNCiAgICB2b2lkIGV4cGFuZCgpOw0KICAgIA0KICAgIHNpemVfdCBwb3N0SW5jVG9wKCk7DQog
ICAgc2l6ZV90IHByZURlY1RvcCgpOw0KICAgIHZvaWQgc2V0VG9wRm9yRnVsbFNlZ21lbnQoKTsN
CiAgICB2b2lkIHNldFRvcEZvckVtcHR5U2VnbWVudCgpOw0KICAgIHNpemVfdCB0b3AoKTsNCiAg
ICANCiAgICB2b2lkIHZhbGlkYXRlUHJldmlvdXMoKTsNCg0KICAgIERvdWJseUxpbmtlZExpc3Q8
R0NBcnJheVNlZ21lbnQ8VD4+IG1fc2VnbWVudHM7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgc3RhdGljIGNvbnN0IHNpemVfdCBzX3NlZ21lbnRDYXBhY2l0eSA9IENhcGFjaXR5RnJvbVNp
emU8R0NBcnJheVNlZ21lbnQ8VD46OmJsb2NrU2l6ZT46OnZhbHVlOw0KICAgIHNpemVfdCBtX3Rv
cDsNCiAgICBzaXplX3QgbV9udW1iZXJPZlNlZ21lbnRzOw0KfTsNCg0KdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+DQpjbGFzcyBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3Igew0KICAgIGZyaWVuZCBjbGFz
cyBHQ1NlZ21lbnRlZEFycmF5PFQ+Ow0KcHVibGljOg0KICAgIEdDU2VnbWVudGVkQXJyYXlJdGVy
YXRvcigpDQogICAgICAgIDogbV9jdXJyZW50U2VnbWVudChudWxscHRyKQ0KICAgICAgICAsIG1f
Y3VycmVudE9mZnNldCgwKQ0KICAgIHsNCiAgICB9DQoNCiAgICBUJiBnZXQoKSB7IHJldHVybiBt
X2N1cnJlbnRTZWdtZW50LT5kYXRhKClbbV9jdXJyZW50T2Zmc2V0XTsgfQ0KICAgIFQmIG9wZXJh
dG9yKigpIHsgcmV0dXJuIGdldCgpOyB9DQogICAgVCYgb3BlcmF0b3ItPigpIHsgcmV0dXJuIGdl
dCgpOyB9DQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR0NTZWdtZW50ZWRBcnJheUl0ZXJh
dG9yJiBvdGhlcikNCiAgICB7DQogICAgICAgIHJldHVybiBtX2N1cnJlbnRTZWdtZW50ID09IG90
aGVyLm1fY3VycmVudFNlZ21lbnQgJiYgbV9jdXJyZW50T2Zmc2V0ID09IG90aGVyLm1fY3VycmVu
dE9mZnNldDsNCiAgICB9DQoNCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR0NTZWdtZW50ZWRB
cnJheUl0ZXJhdG9yJiBvdGhlcikNCiAgICB7DQogICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsNCiAgICB9DQoNCiAgICBHQ1NlZ21lbnRlZEFycmF5SXRlcmF0b3ImIG9wZXJhdG9yKyso
KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAgIG1fY3VycmVudE9mZnNldCsr
Ow0KDQogICAgICAgIGlmIChtX2N1cnJlbnRPZmZzZXQgPj0gbV9vZmZzZXRMaW1pdCkgew0KICAg
ICAgICAgICAgbV9jdXJyZW50U2VnbWVudCA9IG1fY3VycmVudFNlZ21lbnQtPm5leHQoKTsNCiAg
ICAgICAgICAgIG1fY3VycmVudE9mZnNldCA9IDA7DQogICAgICAgICAgICBtX29mZnNldExpbWl0
ID0gR0NTZWdtZW50ZWRBcnJheTxUPjo6c19zZWdtZW50Q2FwYWNpdHk7DQogICAgICAgIH0NCg0K
ICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIEdDU2VnbWVudGVk
QXJyYXlJdGVyYXRvcihHQ0FycmF5U2VnbWVudDxUPiogc3RhcnQsIHNpemVfdCB0b3ApDQogICAg
ICAgIDogbV9jdXJyZW50U2VnbWVudChzdGFydCkNCiAgICAgICAgLCBtX2N1cnJlbnRPZmZzZXQo
MCkNCiAgICAgICAgLCBtX29mZnNldExpbWl0KHRvcCkNCiAgICB7DQogICAgICAgIGlmICghbV9v
ZmZzZXRMaW1pdCkNCiAgICAgICAgICAgIG1fY3VycmVudFNlZ21lbnQgPSBudWxscHRyOw0KICAg
IH0NCg0KICAgIEdDQXJyYXlTZWdtZW50PFQ+KiBtX2N1cnJlbnRTZWdtZW50Ow0KICAgIHNpemVf
dCBtX2N1cnJlbnRPZmZzZXQ7DQogICAgc2l6ZV90IG1fb2Zmc2V0TGltaXQ7DQp9Ow0KDQp9IA0K
DQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxoZWFwXFxNYXJrU3RhY2suaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpTQ2Vs
bDsNCg0KY2xhc3MgTWFya1N0YWNrQXJyYXkgOiBwdWJsaWMgR0NTZWdtZW50ZWRBcnJheTxjb25z
dCBKU0NlbGwqPiB7DQpwdWJsaWM6DQogICAgTWFya1N0YWNrQXJyYXkoKTsNCg0KICAgIHZvaWQg
dHJhbnNmZXJUbyhNYXJrU3RhY2tBcnJheSYpOw0KICAgIHNpemVfdCB0cmFuc2ZlclRvKE1hcmtT
dGFja0FycmF5Jiwgc2l6ZV90IGxpbWl0KTsgDQogICAgdm9pZCBkb25hdGVTb21lQ2VsbHNUbyhN
YXJrU3RhY2tBcnJheSYpOw0KICAgIHZvaWQgc3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFja0Fy
cmF5Jiwgc2l6ZV90IGlkbGVUaHJlYWRDb3VudCk7DQp9Ow0KDQp9IA0KI2xpbmUgMzEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcU2xvdFZp
c2l0b3IuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcVmlzaXRSYWNlS2V5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0KY2xhc3MgSlNDZWxsOw0KDQpjbGFzcyBWaXNpdFJhY2VLZXkgew0KcHVibGlj
Og0KICAgIFZpc2l0UmFjZUtleSgpIHsgfQ0KICAgIA0KICAgIFZpc2l0UmFjZUtleShKU0NlbGwq
IGNlbGwsIGNvbnN0IGNoYXIqIHJhY2VOYW1lKQ0KICAgICAgICA6IG1fY2VsbChjZWxsKQ0KICAg
ICAgICAsIG1fcmFjZU5hbWUocmFjZU5hbWUpDQogICAgew0KICAgIH0NCiAgICANCiAgICBWaXNp
dFJhY2VLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQ0KICAgICAgICA6IG1fcmFj
ZU5hbWUobV9kZWxldGVkVmFsdWVSYWNlTmFtZSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBWaXNpdFJhY2VLZXkmIG90aGVyKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIG1fY2VsbCA9PSBvdGhlci5tX2NlbGwNCiAgICAgICAgICAgICYmIG1fcmFj
ZU5hbWUgPT0gb3RoZXIubV9yYWNlTmFtZTsNCiAgICB9DQogICAgDQogICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFZpc2l0UmFjZUtleSYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7DQogICAgfQ0KICAgIA0KICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICp0aGlzICE9IFZpc2l0UmFjZUtl
eSgpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7
DQogICAgDQogICAgSlNDZWxsKiBjZWxsKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsOyB9DQogICAg
Y29uc3QgY2hhciogcmFjZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3JhY2VOYW1lOyB9DQogICAg
DQogICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gKnRoaXMgPT0gVmlzaXRSYWNlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
KTsNCiAgICB9DQogICAgDQogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKG1fY2VsbCkgXiBXVEY6OlB0ckhh
c2g8Y29uc3QgY2hhcio+OjpoYXNoKG1fcmFjZU5hbWUpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbV9kZWxldGVkVmFsdWVSYWNlTmFtZTsNCiAgICAN
CiAgICBKU0NlbGwqIG1fY2VsbCB7IG51bGxwdHIgfTsNCiAgICBjb25zdCBjaGFyKiBtX3JhY2VO
YW1lIHsgbnVsbHB0ciB9Ow0KfTsNCg0Kc3RydWN0IFZpc2l0UmFjZUtleUhhc2ggew0KICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFZpc2l0UmFjZUtleSYga2V5KSB7IHJldHVybiBrZXku
aGFzaCgpOyB9DQogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVmlzaXRSYWNlS2V5JiBhLCBj
b25zdCBWaXNpdFJhY2VLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7DQp9Ow0KDQp9
IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1
bHRIYXNoOw0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpWaXNpdFJhY2VLZXk+
IDogSlNDOjpWaXNpdFJhY2VLZXlIYXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IEhhc2hUcmFpdHM7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6VmlzaXRS
YWNlS2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlZpc2l0UmFjZUtleT4geyB9Ow0K
DQp9IA0KDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxoZWFwXFxTbG90VmlzaXRvci5oIg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQpjbGFzcyBDb25zZXJ2YXRpdmVSb290czsNCmNsYXNzIEdDVGhyZWFkU2hhcmVkRGF0YTsN
CmNsYXNzIEhlYXA7DQpjbGFzcyBIZWFwQ2VsbDsNCmNsYXNzIEhlYXBBbmFseXplcjsNCmNsYXNz
IE1hcmtlZEJsb2NrOw0KY2xhc3MgTWFya2luZ0NvbnN0cmFpbnQ7DQpjbGFzcyBNYXJraW5nQ29u
c3RyYWludFNvbHZlcjsNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7DQp0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7DQoN
CnR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247DQoNCmNsYXNzIFNsb3RWaXNpdG9yIHsNCiAg
ICBTbG90VmlzaXRvcihjb25zdCBTbG90VmlzaXRvciYpID0gZGVsZXRlOyBTbG90VmlzaXRvciYg
b3BlcmF0b3I9KGNvbnN0IFNsb3RWaXNpdG9yJikgPSBkZWxldGU7Ow0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQoNCiAgICBmcmllbmQgY2xhc3MgU2V0Q3VycmVudENlbGxTY29w
ZTsNCiAgICBmcmllbmQgY2xhc3MgSGVhcDsNCg0KcHVibGljOg0KICAgIGVudW0gUm9vdE1hcmtS
ZWFzb24gew0KICAgICAgICBOb25lLA0KICAgICAgICBDb25zZXJ2YXRpdmVTY2FuLA0KICAgICAg
ICBTdHJvbmdSZWZlcmVuY2VzLA0KICAgICAgICBQcm90ZWN0ZWRWYWx1ZXMsDQogICAgICAgIE1h
cmtMaXN0U2V0LA0KICAgICAgICBWTUV4Y2VwdGlvbnMsDQogICAgICAgIFN0cm9uZ0hhbmRsZXMs
DQogICAgICAgIERlYnVnZ2VyLA0KICAgICAgICBKSVRTdHViUm91dGluZXMsDQogICAgICAgIFdl
YWtTZXRzLA0KICAgICAgICBPdXRwdXQsDQogICAgICAgIERGR1dvcmtMaXN0cywNCiAgICAgICAg
Q29kZUJsb2NrcywNCiAgICAgICAgRE9NR0NPdXRwdXQsDQogICAgfTsNCg0KICAgIFNsb3RWaXNp
dG9yKEhlYXAmLCBDU3RyaW5nIGNvZGVOYW1lKTsNCiAgICB+U2xvdFZpc2l0b3IoKTsNCg0KICAg
IE1hcmtTdGFja0FycmF5JiBjb2xsZWN0b3JNYXJrU3RhY2soKSB7IHJldHVybiBtX2NvbGxlY3Rv
clN0YWNrOyB9DQogICAgTWFya1N0YWNrQXJyYXkmIG11dGF0b3JNYXJrU3RhY2soKSB7IHJldHVy
biBtX211dGF0b3JTdGFjazsgfQ0KICAgIGNvbnN0IE1hcmtTdGFja0FycmF5JiBjb2xsZWN0b3JN
YXJrU3RhY2soKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3RvclN0YWNrOyB9DQogICAgY29uc3Qg
TWFya1N0YWNrQXJyYXkmIG11dGF0b3JNYXJrU3RhY2soKSBjb25zdCB7IHJldHVybiBtX211dGF0
b3JTdGFjazsgfQ0KICAgIA0KICAgIFZNJiB2bSgpOw0KICAgIGNvbnN0IFZNJiB2bSgpIGNvbnN0
Ow0KICAgIEhlYXAqIGhlYXAoKSBjb25zdDsNCg0KICAgIHZvaWQgYXBwZW5kKGNvbnN0IENvbnNl
cnZhdGl2ZVJvb3RzJik7DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VHJhaXRzPiB2b2lkIGFwcGVuZChjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4mKTsN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IHZvaWQgYXBwZW5kSGlk
ZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VCwgVHJhaXRzPiYpOw0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEl0ZXJhdG9yPiB2b2lkIGFwcGVuZChJdGVyYXRvciBiZWdpbiAsIEl0ZXJhdG9yIGVu
ZCk7DQogICAgdm9pZCBhcHBlbmRWYWx1ZXMoY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
LCBEdW1iVmFsdWVUcmFpdHM8VW5rbm93bj4+Kiwgc2l6ZV90IGNvdW50KTsNCiAgICB2b2lkIGFw
cGVuZFZhbHVlc0hpZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24sIER1bWJWYWx1
ZVRyYWl0czxVbmtub3duPj4qLCBzaXplX3QgY291bnQpOw0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZvaWQgYXBwZW5kVW5i
YXJyaWVyZWQoSlNWYWx1ZSk7DQogICAgdm9pZCBhcHBlbmRVbmJhcnJpZXJlZChKU1ZhbHVlKiwg
c2l6ZV90KTsNCiAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVkKEpTQ2VsbCopOw0KICAgIA0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+DQogICAgdm9pZCBhcHBlbmQoY29uc3QgV2VhazxUPiYgd2Vh
ayk7DQogICAgDQogICAgdm9pZCBhcHBlbmRIaWRkZW5VbmJhcnJpZXJlZChKU1ZhbHVlKTsNCiAg
ICB2b2lkIGFwcGVuZEhpZGRlblVuYmFycmllcmVkKEpTQ2VsbCopOw0KDQogICAgYm9vbCBhZGRP
cGFxdWVSb290KHZvaWQqKTsgDQogICAgDQogICAgYm9vbCBjb250YWluc09wYXF1ZVJvb3Qodm9p
ZCopIGNvbnN0Ow0KDQogICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9jb2xsZWN0b3JTdGFj
ay5pc0VtcHR5KCkgJiYgbV9tdXRhdG9yU3RhY2suaXNFbXB0eSgpOyB9DQoNCiAgICBib29sIGlz
Rmlyc3RWaXNpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGaXJzdFZpc2l0OyB9DQoNCiAgICB2b2lk
IGRpZFN0YXJ0TWFya2luZygpOw0KICAgIHZvaWQgcmVzZXQoKTsNCiAgICB2b2lkIGNsZWFyTWFy
a1N0YWNrcygpOw0KDQogICAgc2l6ZV90IGJ5dGVzVmlzaXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZXNWaXNpdGVkOyB9DQogICAgc2l6ZV90IHZpc2l0Q291bnQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc2l0Q291bnQ7IH0NCiAgICANCiAgICB2b2lkIGFkZFRvVmlzaXRDb3VudChzaXplX3QgdmFs
dWUpIHsgbV92aXNpdENvdW50ICs9IHZhbHVlOyB9DQoNCiAgICB2b2lkIGRvbmF0ZSgpOw0KICAg
IHZvaWQgZHJhaW4oTW9ub3RvbmljVGltZSB0aW1lb3V0ID0gTW9ub3RvbmljVGltZTo6aW5maW5p
dHkoKSk7DQogICAgdm9pZCBkb25hdGVBbmREcmFpbihNb25vdG9uaWNUaW1lIHRpbWVvdXQgPSBN
b25vdG9uaWNUaW1lOjppbmZpbml0eSgpKTsNCiAgICANCiAgICBlbnVtIFNoYXJlZERyYWluTW9k
ZSB7IEhlbHBlckRyYWluLCBNYWluRHJhaW4gfTsNCiAgICBlbnVtIGNsYXNzIFNoYXJlZERyYWlu
UmVzdWx0IHsgRG9uZSwgVGltZWRPdXQgfTsNCiAgICBTaGFyZWREcmFpblJlc3VsdCBkcmFpbkZy
b21TaGFyZWQoU2hhcmVkRHJhaW5Nb2RlLCBNb25vdG9uaWNUaW1lIHRpbWVvdXQgPSBNb25vdG9u
aWNUaW1lOjppbmZpbml0eSgpKTsNCg0KICAgIFNoYXJlZERyYWluUmVzdWx0IGRyYWluSW5QYXJh
bGxlbChNb25vdG9uaWNUaW1lIHRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjppbmZpbml0eSgpKTsN
CiAgICBTaGFyZWREcmFpblJlc3VsdCBkcmFpbkluUGFyYWxsZWxQYXNzaXZlbHkoTW9ub3Rvbmlj
VGltZSB0aW1lb3V0ID0gTW9ub3RvbmljVGltZTo6aW5maW5pdHkoKSk7DQogICAgDQogICAgU2hh
cmVkRHJhaW5SZXN1bHQgd2FpdEZvclRlcm1pbmF0aW9uKE1vbm90b25pY1RpbWUgdGltZW91dCA9
IE1vbm90b25pY1RpbWU6OmluZmluaXR5KCkpOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgc2l6ZV90IHBlcmZvcm1JbmNyZW1lbnRPZkRyYWluaW5nKHNpemVfdCBieXRlcyk7DQogICAg
DQogICAgDQogICAgDQogICAgdm9pZCBtYXJrQXV4aWxpYXJ5KGNvbnN0IHZvaWQqIGJhc2UpOw0K
DQogICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQoc2l6ZV90KTsNCg0KICAgIHZvaWQg
cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVkKHNpemVfdCk7DQojbGluZSAxNjAgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcU2xvdFZpc2l0
b3IuaCINCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCg0KICAgIGJv
b2wgaXNBbmFseXppbmdIZWFwKCkgY29uc3QgeyByZXR1cm4gISFtX2hlYXBBbmFseXplcjsgfQ0K
ICAgIEhlYXBBbmFseXplciogaGVhcEFuYWx5emVyKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwQW5h
bHl6ZXI7IH0NCiAgICANCiAgICBSb290TWFya1JlYXNvbiByb290TWFya1JlYXNvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdE1hcmtSZWFzb247IH0NCiAgICB2b2lkIHNldFJvb3RNYXJrUmVhc29u
KFJvb3RNYXJrUmVhc29uIHJlYXNvbikgeyBtX3Jvb3RNYXJrUmVhc29uID0gcmVhc29uOyB9DQoN
CiAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2lu
Z1ZlcnNpb247IH0NCg0KICAgIGJvb2wgbXV0YXRvcklzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbXV0YXRvcklzU3RvcHBlZDsgfQ0KICAgIA0KICAgIExvY2smIHJpZ2h0VG9SdW4oKSB7IHJl
dHVybiBtX3JpZ2h0VG9SdW47IH0NCiAgICANCiAgICB2b2lkIHVwZGF0ZU11dGF0b3JJc1N0b3Bw
ZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsNCiAgICB2b2lkIHVwZGF0ZU11dGF0b3JJc1N0b3Bw
ZWQoKTsNCiAgICANCiAgICBib29sIGhhc0Fja25vd2xlZGdlZFRoYXRUaGVNdXRhdG9ySXNSZXN1
bWVkKCkgY29uc3Q7DQogICAgYm9vbCBtdXRhdG9ySXNTdG9wcGVkSXNVcFRvRGF0ZSgpIGNvbnN0
Ow0KICAgIA0KICAgIHZvaWQgb3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOw0KICAgIA0KICAg
IHZvaWQgZGlkUmFjZShjb25zdCBWaXNpdFJhY2VLZXkmKTsNCiAgICB2b2lkIGRpZFJhY2UoSlND
ZWxsKiBjZWxsLCBjb25zdCBjaGFyKiByZWFzb24pIHsgZGlkUmFjZShWaXNpdFJhY2VLZXkoY2Vs
bCwgcmVhc29uKSk7IH0NCiAgICANCiAgICB2b2lkIHZpc2l0QXNDb25zdHJhaW50KGNvbnN0IEpT
Q2VsbCopOw0KICAgIA0KICAgIGJvb2wgZGlkUmVhY2hUZXJtaW5hdGlvbigpOw0KICAgIA0KICAg
IHZvaWQgc2V0SWdub3JlTmV3T3BhcXVlUm9vdHMoYm9vbCB2YWx1ZSkgeyBtX2lnbm9yZU5ld09w
YXF1ZVJvb3RzID0gdmFsdWU7IH0NCg0KICAgIHZvaWQgZG9uYXRlQWxsKCk7DQogICAgDQogICAg
Y29uc3QgY2hhciogY29kZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVOYW1lLmRhdGEoKTsg
fQ0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGFkZFBhcmFsbGVsQ29uc3Ry
YWludFRhc2soUmVmUHRyPFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPj4pOw0KDQpwcml2
YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBQYXJhbGxlbE1vZGVFbmFibGVyOw0KICAgIGZyaWVuZCBj
bGFzcyBNYXJraW5nQ29uc3RyYWludFNvbHZlcjsNCiAgICANCiAgICB2b2lkIGFwcGVuZEpTQ2Vs
bE9yQXV4aWxpYXJ5KEhlYXBDZWxsKik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9p
ZCBhcHBlbmRTbG93KEpTQ2VsbCosIERlcGVuZGVuY3kpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSB2b2lkIGFwcGVuZEhpZGRlblNsb3coSlNDZWxsKiwgRGVwZW5kZW5jeSk7DQogICAgdm9p
ZCBhcHBlbmRIaWRkZW5TbG93SW1wbChKU0NlbGwqLCBEZXBlbmRlbmN5KTsNCiAgICANCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXJUeXBlPg0KICAgIHZvaWQgc2V0TWFya2VkQW5kQXBw
ZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYsIEpTQ2VsbCosIERlcGVuZGVuY3kpOw0KICAg
IA0KICAgIHZvaWQgYXBwZW5kVG9NYXJrU3RhY2soSlNDZWxsKik7DQogICAgDQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4NCiAgICB2b2lkIGFwcGVuZFRvTWFya1N0YWNrKENv
bnRhaW5lclR5cGUmLCBKU0NlbGwqKTsNCiAgICANCiAgICB2b2lkIG5vdGVMaXZlQXV4aWxpYXJ5
Q2VsbChIZWFwQ2VsbCopOw0KICAgIA0KICAgIHZvaWQgdmlzaXRDaGlsZHJlbihjb25zdCBKU0Nl
bGwqKTsNCg0KICAgIHZvaWQgcHJvcGFnYXRlRXh0ZXJuYWxNZW1vcnlWaXNpdGVkSWZOZWNlc3Nh
cnkoKTsNCiAgICANCiAgICB2b2lkIGRvbmF0ZUtub3duUGFyYWxsZWwoKTsNCiAgICB2b2lkIGRv
bmF0ZUtub3duUGFyYWxsZWwoTWFya1N0YWNrQXJyYXkmIGZyb20sIE1hcmtTdGFja0FycmF5JiB0
byk7DQoNCiAgICB2b2lkIGRvbmF0ZUFsbChjb25zdCBBYnN0cmFjdExvY2tlciYpOw0KDQogICAg
Ym9vbCBoYXNXb3JrKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7DQogICAgYm9vbCBkaWRSZWFjaFRl
cm1pbmF0aW9uKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPg0KICAgIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTWFya1N0YWNrKGNvbnN0IEZ1bmMm
KTsNCg0KICAgIE1hcmtTdGFja0FycmF5JiBjb3JyZXNwb25kaW5nR2xvYmFsU3RhY2soTWFya1N0
YWNrQXJyYXkmKTsNCg0KICAgIE1hcmtTdGFja0FycmF5IG1fY29sbGVjdG9yU3RhY2s7DQogICAg
TWFya1N0YWNrQXJyYXkgbV9tdXRhdG9yU3RhY2s7DQogICAgDQogICAgc2l6ZV90IG1fYnl0ZXNW
aXNpdGVkOw0KICAgIHNpemVfdCBtX3Zpc2l0Q291bnQ7DQogICAgc2l6ZV90IG1fbm9uQ2VsbFZp
c2l0Q291bnQgeyAwIH07IA0KICAgIENoZWNrZWRTaXplIG1fZXh0cmFNZW1vcnlTaXplIHsgMCB9
Ow0KICAgIGJvb2wgbV9pc0luUGFyYWxsZWxNb2RlOw0KICAgIGJvb2wgbV9pZ25vcmVOZXdPcGFx
dWVSb290cyB7IGZhbHNlIH07IA0KDQogICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lvbjsN
CiAgICANCiAgICBIZWFwJiBtX2hlYXA7DQoNCiAgICBIZWFwQW5hbHl6ZXIqIG1faGVhcEFuYWx5
emVyIHsgbnVsbHB0ciB9Ow0KICAgIEpTQ2VsbCogbV9jdXJyZW50Q2VsbCB7IG51bGxwdHIgfTsN
CiAgICBSb290TWFya1JlYXNvbiBtX3Jvb3RNYXJrUmVhc29uIHsgUm9vdE1hcmtSZWFzb246Ok5v
bmUgfTsNCiAgICBib29sIG1faXNGaXJzdFZpc2l0IHsgZmFsc2UgfTsNCiAgICBib29sIG1fbXV0
YXRvcklzU3RvcHBlZCB7IGZhbHNlIH07DQogICAgYm9vbCBtX2Nhbk9wdGltaXplRm9yU3RvcHBl
ZE11dGF0b3IgeyBmYWxzZSB9Ow0KICAgIExvY2sgbV9yaWdodFRvUnVuOw0KICAgIA0KICAgIENT
dHJpbmcgbV9jb2RlTmFtZTsNCiAgICANCiAgICBNYXJraW5nQ29uc3RyYWludCogbV9jdXJyZW50
Q29uc3RyYWludCB7IG51bGxwdHIgfTsNCiAgICBNYXJraW5nQ29uc3RyYWludFNvbHZlciogbV9j
dXJyZW50U29sdmVyIHsgbnVsbHB0ciB9Ow0KICAgIA0KICAgIA0KICAgIGNoYXIgcGFkZGluZ1s2
NF07DQpwdWJsaWM6DQoNCg0KDQojbGluZSAyNjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcU2xvdFZpc2l0b3IuaCINCn07DQoNCmNsYXNz
IFBhcmFsbGVsTW9kZUVuYWJsZXIgew0KcHVibGljOg0KICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIo
U2xvdFZpc2l0b3ImIHN0YWNrKQ0KICAgICAgICA6IG1fc3RhY2soc3RhY2spDQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fc3RhY2subV9pc0luUGFyYWxsZWxNb2RlID0gdHJ1
ZTsNCiAgICB9DQogICAgDQogICAgflBhcmFsbGVsTW9kZUVuYWJsZXIoKQ0KICAgIHsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICBtX3N0YWNrLm1faXNJblBhcmFsbGVsTW9kZSA9IGZhbHNl
Ow0KICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgU2xvdFZpc2l0b3ImIG1fc3RhY2s7DQp9Ow0K
DQpjbGFzcyBTZXRSb290TWFya1JlYXNvblNjb3BlIHsNCnB1YmxpYzoNCiAgICBTZXRSb290TWFy
a1JlYXNvblNjb3BlKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBTbG90VmlzaXRvcjo6Um9vdE1hcmtS
ZWFzb24gcmVhc29uKQ0KICAgICAgICA6IG1fdmlzaXRvcih2aXNpdG9yKQ0KICAgICAgICAsIG1f
cHJldmlvdXNSZWFzb24odmlzaXRvci5yb290TWFya1JlYXNvbigpKQ0KICAgIHsNCiAgICAgICAg
bV92aXNpdG9yLnNldFJvb3RNYXJrUmVhc29uKHJlYXNvbik7DQogICAgfQ0KDQogICAgflNldFJv
b3RNYXJrUmVhc29uU2NvcGUoKQ0KICAgIHsNCiAgICAgICAgbV92aXNpdG9yLnNldFJvb3RNYXJr
UmVhc29uKG1fcHJldmlvdXNSZWFzb24pOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBTbG90Vmlz
aXRvciYgbV92aXNpdG9yOw0KICAgIFNsb3RWaXNpdG9yOjpSb290TWFya1JlYXNvbiBtX3ByZXZp
b3VzUmVhc29uOw0KfTsNCg0KfSANCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ2VsbC5oIg0KDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcV3JpdGVCYXJyaWVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEdDQXNzZXJ0aW9ucy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxoZWFwXFxHQ0Fzc2VydGlvbnMuaCINCg0KDQoNCg0KI2xpbmUgNTkgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcR0NBc3NlcnRpb25zLmgi
DQoNCg0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcV3JpdGVCYXJyaWVyLmgiDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9EdW1iVmFs
dWVUcmFpdHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPg0Kc3RydWN0IER1bWJWYWx1ZVRyYWl0cyB7DQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdXNpbmcgUmViaW5kVHJhaXRzID0gRHVtYlZhbHVlVHJhaXRzPFU+Ow0KDQogICAgdXNp
bmcgU3RvcmFnZVR5cGUgPSBUOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4NCiAgICBzdGF0
aWMgX19mb3JjZWlubGluZSBUIGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiB2YWwsIFUmJiBuZXdWYWx1
ZSkgeyByZXR1cm4gc3RkOjpleGNoYW5nZSh2YWwsIG5ld1ZhbHVlKTsgfQ0KDQogICAgc3RhdGlj
IF9fZm9yY2VpbmxpbmUgdm9pZCBzd2FwKFN0b3JhZ2VUeXBlJiBhLCBTdG9yYWdlVHlwZSYgYikg
eyBzdGQ6OnN3YXAoYSwgYik7IH0NCiAgICBzdGF0aWMgX19mb3JjZWlubGluZSBUIHVud3JhcChj
b25zdCBTdG9yYWdlVHlwZSYgdmFsKSB7IHJldHVybiB2YWw7IH0NCn07DQoNCn0gDQoNCnVzaW5n
IFdURjo6RHVtYlZhbHVlVHJhaXRzOw0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcV3JpdGVCYXJyaWVyLmgiDQoNCm5h
bWVzcGFjZSBKU0Mgew0KDQpuYW1lc3BhY2UgREZHIHsNCmNsYXNzIERlc2lyZWRXcml0ZUJhcnJp
ZXI7DQp9DQoNCmNsYXNzIEpTQ2VsbDsNCmNsYXNzIFZNOw0KY2xhc3MgSlNHbG9iYWxPYmplY3Q7
DQoNCnRlbXBsYXRlPGNsYXNzIFQ+DQp1c2luZyBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0
eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtub3duPjo6dmFsdWUs
DQogICAgRHVtYlZhbHVlVHJhaXRzPFQ+LCBEdW1iUHRyVHJhaXRzPFQ+DQo+Ojp0eXBlOw0KDQp0
ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBXcml0ZUJhcnJpZXJUcmFpdHNTZWxl
Y3Q8VD4+IGNsYXNzIFdyaXRlQmFycmllckJhc2U7DQp0ZW1wbGF0ZTw+IGNsYXNzIFdyaXRlQmFy
cmllckJhc2U8SlNWYWx1ZT47DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHNsb3dWYWxp
ZGF0ZUNlbGwoSlNDZWxsKik7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBzbG93VmFsaWRh
dGVDZWxsKEpTR2xvYmFsT2JqZWN0Kik7DQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSA3MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxXcml0ZUJhcnJpZXIuaCINCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB2b2lkIHZhbGlkYXRlQ2VsbChUKQ0Kew0KfQ0KI2xpbmUgNzUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcV3JpdGVCYXJyaWVyLmgi
DQoNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4gY2xhc3MgV3JpdGVC
YXJyaWVyQmFzZSB7DQogICAgdXNpbmcgU3RvcmFnZVR5cGUgPSB0eXBlbmFtZSBUcmFpdHM6OlN0
b3JhZ2VUeXBlOw0KDQpwdWJsaWM6DQogICAgdm9pZCBzZXQoVk0mLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBUKiB2YWx1ZSk7DQogICAgDQogICAgDQogICAgDQogICAgdm9pZCBjb3B5RnJvbShjb25z
dCBXcml0ZUJhcnJpZXJCYXNlJiBvdGhlcikNCiAgICB7DQogICAgICAgIA0KICAgICAgICBUcmFp
dHM6OmV4Y2hhbmdlKG1fY2VsbCwgb3RoZXIubV9jZWxsKTsNCiAgICB9DQoNCiAgICB2b2lkIHNl
dE1heUJlTnVsbChWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKTsNCg0KICAgIA0K
ICAgIA0KICAgIHZvaWQgc2V0RWFybHlWYWx1ZShWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIFQq
IHZhbHVlKTsNCiAgICANCiAgICBUKiBnZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgDQogICAg
ICAgIFN0b3JhZ2VUeXBlIGNlbGwgPSBtX2NlbGw7DQogICAgICAgIGlmIChjZWxsKQ0KICAgICAg
ICAgICAgdmFsaWRhdGVDZWxsKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8
dm9pZCo+KFRyYWl0czo6dW53cmFwKGNlbGwpKSkpOw0KICAgICAgICByZXR1cm4gVHJhaXRzOjp1
bndyYXAoY2VsbCk7DQogICAgfQ0KDQogICAgVCogb3BlcmF0b3IqKCkgY29uc3QNCiAgICB7DQog
ICAgICAgIFN0b3JhZ2VUeXBlIGNlbGwgPSBtX2NlbGw7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgYXV0byB1bndyYXBwZWQgPSBUcmFpdHM6OnVud3JhcChjZWxsKTsNCiAgICAgICAgdmFs
aWRhdGVDZWxsPFQ+KHVud3JhcHBlZCk7DQogICAgICAgIHJldHVybiBUcmFpdHM6OnVud3JhcCh1
bndyYXBwZWQpOw0KICAgIH0NCg0KICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgU3RvcmFnZVR5cGUgY2VsbCA9IG1fY2VsbDsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICBhdXRvIHVud3JhcHBlZCA9IFRyYWl0czo6dW53cmFwKGNlbGwpOw0KICAgICAgICB2YWxp
ZGF0ZUNlbGwodW53cmFwcGVkKTsNCiAgICAgICAgcmV0dXJuIHVud3JhcHBlZDsNCiAgICB9DQoN
CiAgICB2b2lkIGNsZWFyKCkgeyBUcmFpdHM6OmV4Y2hhbmdlKG1fY2VsbCwgbnVsbHB0cik7IH0N
Cg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhcnJpZXJULCB0eXBlbmFtZSBCYXJyaWVy
VHJhaXRzLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxCYXJyaWVyVHJhaXRzLCBEdW1i
UHRyVHJhaXRzPEJhcnJpZXJUPj46OnZhbHVlLCB2b2lkKj4gPSBudWxscHRyPg0KICAgIHN0cnVj
dCBTbG90SGVscGVyIHsNCiAgICAgICAgc3RhdGljIEJhcnJpZXJUKiogcmVpbnRlcnByZXQodHlw
ZW5hbWUgQmFycmllclRyYWl0czo6U3RvcmFnZVR5cGUqIGNlbGwpIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VCoqPihjZWxsKTsgfQ0KICAgIH07DQoNCiAgICBUKiogc2xvdCgpDQogICAgew0K
ICAgICAgICByZXR1cm4gU2xvdEhlbHBlcjxULCBUcmFpdHM+OjpyZWludGVycHJldCgmbV9jZWxs
KTsNCiAgICB9DQogICAgDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9jZWxsOyB9DQogICAgDQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9jZWxsOyB9DQoNCiAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoVCogdmFsdWUp
DQogICAgew0KDQoNCiNsaW5lIDE0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxXcml0ZUJhcnJpZXIuaCINCiAgICAgICAgVHJhaXRz
OjpleGNoYW5nZSh0aGlzLT5tX2NlbGwsIHZhbHVlKTsNCiAgICB9DQoNCiAgICBUKiB1bnZhbGlk
YXRlZEdldCgpIGNvbnN0IHsgcmV0dXJuIFRyYWl0czo6dW53cmFwKG1fY2VsbCk7IH0NCg0KcHJp
dmF0ZToNCiAgICBTdG9yYWdlVHlwZSBtX2NlbGw7DQp9Ow0KDQp0ZW1wbGF0ZSA8PiBjbGFzcyBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24sIER1bWJWYWx1ZVRyYWl0czxVbmtub3duPj4gew0KcHVi
bGljOg0KICAgIHZvaWQgc2V0KFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSk7DQog
ICAgdm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTVmFsdWUgdmFsdWUpDQogICAgew0KICAg
ICAgICBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsNCiAgICB9DQoNCiAgICBKU1Zh
bHVlIGdldCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1f
dmFsdWUpOw0KICAgIH0NCiAgICB2b2lkIGNsZWFyKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7IH0NCiAgICB2b2lkIHNldFVuZGVmaW5lZCgpIHsgbV92YWx1ZSA9IEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQ0KICAgIHZvaWQgc2V0U3RhcnRpbmdWYWx1
ZShKU1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyB9DQog
ICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGdldCgpLmlzTnVtYmVyKCk7IH0NCiAg
ICBib29sIGlzSW50MzIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc0ludDMyKCk7IH0NCiAgICBi
b29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNPYmplY3QoKTsgfQ0KICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNOdWxsKCk7IH0NCiAgICBib29sIGlz
R2V0dGVyU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNHZXR0ZXJTZXR0ZXIoKTsgfQ0K
ICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc0N1
c3RvbUdldHRlclNldHRlcigpOyB9DQogICAgDQogICAgSlNWYWx1ZSogc2xvdCgpIGNvbnN0DQog
ICAgeyANCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJm1fdmFsdWUpOw0K
ICAgIH0NCiAgICANCiAgICBpbnQzMl90KiB0YWdQb2ludGVyKCkgeyByZXR1cm4gJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oJm1fdmFsdWUpLT5hc0JpdHMudGFnOyB9DQog
ICAgaW50MzJfdCogcGF5bG9hZFBvaW50ZXIoKSB7IHJldHVybiAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPigmbV92YWx1ZSktPmFzQml0cy5wYXlsb2FkOyB9DQogICAgDQog
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhZ2V0KCk7IH0NCiAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFnZXQoKTsgfSANCiAgICANCnByaXZh
dGU6DQogICAgRW5jb2RlZEpTVmFsdWUgbV92YWx1ZTsNCn07DQoNCnRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBUcmFpdHMgPSBXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3Q8VD4+DQpjbGFz
cyBXcml0ZUJhcnJpZXIgOiBwdWJsaWMgV3JpdGVCYXJyaWVyQmFzZTxULCBUcmFpdHM+IHsNCiAg
ICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywg
dm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Vi
a2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNl
QVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIFdyaXRlQmFycmll
cigpDQogICAgew0KICAgICAgICB0aGlzLT5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKG51bGxwdHIp
Ow0KICAgIH0NCg0KICAgIFdyaXRlQmFycmllcihWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIs
IFQqIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgdGhpcy0+c2V0KHZtLCBvd25lciwgdmFsdWUpOw0K
ICAgIH0NCg0KICAgIFdyaXRlQmFycmllcihERkc6OkRlc2lyZWRXcml0ZUJhcnJpZXImLCBUKiB2
YWx1ZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgdGhpcy0+c2V0V2l0aG91
dFdyaXRlQmFycmllcih2YWx1ZSk7DQogICAgfQ0KDQogICAgZW51bSBNYXlCZU51bGxUYWcgeyBN
YXlCZU51bGwgfTsNCiAgICBXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVy
LCBUKiB2YWx1ZSwgTWF5QmVOdWxsVGFnKQ0KICAgIHsNCiAgICAgICAgdGhpcy0+c2V0TWF5QmVO
dWxsKHZtLCBvd25lciwgdmFsdWUpOw0KICAgIH0NCn07DQoNCmVudW0gVW5kZWZpbmVkV3JpdGVC
YXJyaWVyVGFnVHlwZSB7IFVuZGVmaW5lZFdyaXRlQmFycmllclRhZyB9Ow0KdGVtcGxhdGUgPD4N
CmNsYXNzIFdyaXRlQmFycmllcjxVbmtub3duLCBEdW1iVmFsdWVUcmFpdHM8VW5rbm93bj4+IDog
cHVibGljIFdyaXRlQmFycmllckJhc2U8VW5rbm93biwgRHVtYlZhbHVlVHJhaXRzPFVua25vd24+
PiB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0
TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51
bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVz
aW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJl
VG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBXcml0
ZUJhcnJpZXIoKQ0KICAgIHsNCiAgICAgICAgdGhpcy0+c2V0V2l0aG91dFdyaXRlQmFycmllcihK
U1ZhbHVlKCkpOw0KICAgIH0NCiAgICBXcml0ZUJhcnJpZXIoVW5kZWZpbmVkV3JpdGVCYXJyaWVy
VGFnVHlwZSkNCiAgICB7DQogICAgICAgIHRoaXMtPnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNV
bmRlZmluZWQoKSk7DQogICAgfQ0KDQogICAgV3JpdGVCYXJyaWVyKFZNJiB2bSwgY29uc3QgSlND
ZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIHRoaXMtPnNldCh2bSwg
b3duZXIsIHZhbHVlKTsNCiAgICB9DQoNCiAgICBXcml0ZUJhcnJpZXIoREZHOjpEZXNpcmVkV3Jp
dGVCYXJyaWVyJiwgSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgdGhpcy0+c2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7DQogICAgfQ0KfTsNCg0K
dGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFRyYWl0c1UsIHR5cGVu
YW1lIFRyYWl0c1Y+DQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdyaXRlQmFycmllckJh
c2U8VSwgVHJhaXRzVT4mIGxocywgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxWLCBUcmFpdHNWPiYg
cmhzKQ0Kew0KICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOw0KfQ0KDQp9IA0KI2xp
bmUgMzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcSlNDZWxsLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDYWxsRnJhbWU7
DQpjbGFzcyBDb21wbGV0ZVN1YnNwYWNlOw0KY2xhc3MgQ29weVZpc2l0b3I7DQpjbGFzcyBHQ0Rl
ZmVycmFsQ29udGV4dDsNCmNsYXNzIElkZW50aWZpZXI7DQpjbGFzcyBKU0FycmF5QnVmZmVyVmll
dzsNCmNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Ow0KY2xhc3MgSlNHbG9iYWxPYmplY3Q7DQpj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQpjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7DQpj
bGFzcyBQcm9wZXJ0eU5hbWU7DQpjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsNCmNsYXNzIFN0cnVj
dHVyZTsNCmNsYXNzIEpTQ2VsbExvY2s7DQoNCmVudW0gY2xhc3MgR0NEZWZlcnJhbENvbnRleHRB
cmdQcmVzZW5zZSB7DQogICAgSGFzQXJnLA0KICAgIERvZXNOb3RIYXZlQXJnDQp9Ow0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNpemVfdCA9IHNpemVv
ZihUKSk7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiB0cnlBbGxvY2F0ZUNlbGwoSGVhcCYs
IHNpemVfdCA9IHNpemVvZihUKSk7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0
ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90ID0gc2l6ZW9mKFQpKTsNCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJh
bENvbnRleHQqLCBzaXplX3QgPSBzaXplb2YoVCkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgew0KICAgIGZyaWVuZCBjbGFzcyBKU1Zh
bHVlOw0KICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPg0KICAgIGZyaWVuZCB2b2lkKiB0cnlBbGxvY2F0ZUNlbGxIZWxwZXIoSGVhcCYsIHNpemVf
dCwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOw0KDQpwdWJsaWM6
DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7DQoNCiAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOw0KDQogICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMgPSA4Ow0KDQog
ICAgc3RhdGljIEpTQ2VsbCogc2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpIHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxKU0NlbGwqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQ0KDQogICAg
ZW51bSBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyB7IENyZWF0aW5nRWFybHlDZWxsIH07DQogICAgSlND
ZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsNCg0KcHJvdGVjdGVkOg0KICAgIEpTQ2Vs
bChWTSYsIFN0cnVjdHVyZSopOw0KDQpwdWJsaWM6DQogICAgDQogICAgYm9vbCBpc1N0cmluZygp
IGNvbnN0Ow0KICAgIGJvb2wgaXNIZWFwQmlnSW50KCkgY29uc3Q7DQogICAgYm9vbCBpc1N5bWJv
bCgpIGNvbnN0Ow0KICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdDsNCiAgICBib29sIGlzR2V0dGVy
U2V0dGVyKCkgY29uc3Q7DQogICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0Ow0K
ICAgIGJvb2wgaXNQcm94eSgpIGNvbnN0Ow0KICAgIGJvb2wgaXNDYWxsYWJsZShWTSYpOw0KICAg
IGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYpOw0KICAgIGJvb2wgaW5oZXJpdHMoVk0mLCBjb25zdCBD
bGFzc0luZm8qKSBjb25zdDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+IGJvb2wgaW5o
ZXJpdHMoVk0mKSBjb25zdDsNCiAgICBib29sIGlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3Q7DQog
ICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICBKU0NlbGxMb2Nr
JiBjZWxsTG9jaygpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEpTQ2VsbExvY2sqPih0aGlz
KTsgfQ0KICAgIA0KICAgIEpTVHlwZSB0eXBlKCkgY29uc3Q7DQogICAgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZUFuZE1pc2MoKSBjb25zdDsNCiAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2Rl
KCkgY29uc3Q7DQogICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSgpIGNvbnN0Ow0KICAgIFN0
cnVjdHVyZUlEIHN0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRDsgfQ0K
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7DQogICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUoVk0mKSBjb25zdDsNCiAgICB2b2lkIHNldFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSopOw0K
ICAgIHZvaWQgc2V0U3RydWN0dXJlSUREaXJlY3RseShTdHJ1Y3R1cmVJRCBpZCkgeyBtX3N0cnVj
dHVyZUlEID0gaWQ7IH0NCiAgICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZUlE
ID0gMDsgfQ0KDQogICAgVHlwZUluZm86OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3Mo
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9DQogICAgDQogICAgY29uc3QgY2hhciogY2xhc3NO
YW1lKFZNJikgY29uc3Q7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBn
ZXRTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBTdHJpbmcmKSBjb25zdDsNCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgU3RyaW5nIGdldFN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OyANCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3QqIGdldE9iamVjdCgpOyANCiAgICBjb25z
dCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IA0KICAgICAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIENh
bGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBz
dGF0aWMgQ2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsNCg0KICAgIA0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlIHRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0Kiwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7DQogICAgYm9vbCBnZXRQcmltaXRpdmVOdW1i
ZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0Ow0KICAg
IGJvb2wgdG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQogICAgVHJpU3RhdGUgcHVy
ZVRvQm9vbGVhbigpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBkb3VibGUgdG9O
dW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICBKU09iamVjdCogdG9PYmplY3QoSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsNCg0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBkdW1wVG9TdHJlYW0oY29u
c3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsNCg0KICAgIHNpemVfdCBlc3RpbWF0ZWRTaXplSW5C
eXRlcyhWTSYpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgc2l6ZV90
IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsNCg0KICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCiAgICBzdGF0aWMgdm9pZCB2aXNpdE91dHB1
dENvbnN0cmFpbnRzKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7DQoNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSGVhcEFuYWx5emVyJik7
DQoNCiAgICANCiAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyhWTSYpIGNvbnN0Ow0KICAg
IGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZShWTSYpIGNvbnN0Ow0KICAgIHN0YXRpYyBi
b29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7DQogICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBK
U0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7DQogICAgYm9vbCBwdXRJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KICAgICAgICANCiAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
RGVsZXRlUHJvcGVydHlTbG90Jik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBi
b29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KTsNCiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOw0KDQogICAgc3RhdGljIEpTVmFsdWUg
dG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOw0KDQogICAgc3RhdGlj
IGJvb2wgY2FuVXNlRmFzdEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYpOw0KICAgIEpT
VmFsdWUgZmFzdEdldE93blByb3BlcnR5KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlOYW1lKTsN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIENlbGxTdGF0ZSBjZWxsU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2NlbGxTdGF0ZTsgfQ0KICAgIA0KICAgIHZvaWQgc2V0Q2VsbFN0YXRlKENlbGxTdGF0
ZSBkYXRhKSBjb25zdCB7IGNvbnN0X2Nhc3Q8SlNDZWxsKj4odGhpcyktPm1fY2VsbFN0YXRlID0g
ZGF0YTsgfQ0KICAgIA0KICAgIGJvb2wgYXRvbWljQ29tcGFyZUV4Y2hhbmdlQ2VsbFN0YXRlV2Vh
a1JlbGF4ZWQoQ2VsbFN0YXRlIG9sZFN0YXRlLCBDZWxsU3RhdGUgbmV3U3RhdGUpDQogICAgew0K
ICAgICAgICByZXR1cm4gV1RGOjphdG9taWNDb21wYXJlRXhjaGFuZ2VXZWFrUmVsYXhlZCgmbV9j
ZWxsU3RhdGUsIG9sZFN0YXRlLCBuZXdTdGF0ZSk7DQogICAgfQ0KDQogICAgQ2VsbFN0YXRlIGF0
b21pY0NvbXBhcmVFeGNoYW5nZUNlbGxTdGF0ZVN0cm9uZyhDZWxsU3RhdGUgb2xkU3RhdGUsIENl
bGxTdGF0ZSBuZXdTdGF0ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBXVEY6OmF0b21pY0NvbXBh
cmVFeGNoYW5nZVN0cm9uZygmbV9jZWxsU3RhdGUsIG9sZFN0YXRlLCBuZXdTdGF0ZSk7DQogICAg
fQ0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpDQogICAgew0KICAg
ICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nh
c3Q8SlNDZWxsKj4oMHg0MDAwKS0+bV9zdHJ1Y3R1cmVJRCkpIC0gMHg0MDAwKTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgcHRyZGlmZl90IHR5cGVJbmZvRmxhZ3NPZmZzZXQoKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0
PEpTQ2VsbCo+KDB4NDAwMCktPm1fZmxhZ3MpKSAtIDB4NDAwMCk7DQogICAgfQ0KDQogICAgc3Rh
dGljIHB0cmRpZmZfdCB0eXBlSW5mb1R5cGVPZmZzZXQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+
KDB4NDAwMCktPm1fdHlwZSkpIC0gMHg0MDAwKTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICAN
CiAgICBzdGF0aWMgcHRyZGlmZl90IGluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJl
dF9jYXN0PEpTQ2VsbCo+KDB4NDAwMCktPm1faW5kZXhpbmdUeXBlQW5kTWlzYykpIC0gMHg0MDAw
KTsNCiAgICB9DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IGNlbGxTdGF0ZU9mZnNldCgpDQogICAg
ew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJw
cmV0X2Nhc3Q8SlNDZWxsKj4oMHg0MDAwKS0+bV9jZWxsU3RhdGUpKSAtIDB4NDAwMCk7DQogICAg
fQ0KICAgIA0KICAgIHN0YXRpYyBjb25zdCBUeXBlZEFycmF5VHlwZSBUeXBlZEFycmF5U3RvcmFn
ZVR5cGUgPSBOb3RUeXBlZEFycmF5Ow0KDQogICAgdm9pZCBzZXRQZXJDZWxsQml0KGJvb2wpOw0K
ICAgIGJvb2wgcGVyQ2VsbEJpdCgpIGNvbnN0Ow0KcHJvdGVjdGVkOg0KDQogICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOw0KICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUq
LCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7DQoNCiAgICANCiAgICBzdGF0aWMgSlNWYWx1ZSBkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUpOw0KICAgIHN0YXRpYyBfX2RlY2xzcGVjKG5vcmV0dXJuKSB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsNCiAgICBzdGF0aWMgX19kZWNsc3BlYyhub3JldHVybikgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsNCiAgICBzdGF0aWMgX19kZWNs
c3BlYyhub3JldHVybikgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQoNCiAgICBzdGF0
aWMgdWludDMyX3QgZ2V0RW51bWVyYWJsZUxlbmd0aChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
Kik7DQogICAgc3RhdGljIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgZ2V0U3RydWN0dXJlUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOw0KICAgIHN0YXRpYyBfX2RlY2xzcGVjKG5vcmV0dXJuKSB2b2lk
IGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQogICAgc3RhdGljIF9fZGVjbHNwZWMo
bm9yZXR1cm4pIGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCopOw0KICAgIHN0YXRpYyBfX2RlY2xzcGVjKG5vcmV0dXJuKSBib29sIGlzRXh0ZW5zaWJsZShK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7DQogICAgc3RhdGljIF9fZGVjbHNwZWMobm9yZXR1
cm4pIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
LCBib29sKTsNCiAgICBzdGF0aWMgX19kZWNsc3BlYyhub3JldHVybikgSlNWYWx1ZSBnZXRQcm90
b3R5cGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOw0KDQogICAgc3RhdGljIFN0cmluZyBj
bGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOw0KICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJp
bmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsNCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOw0KICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOw0KICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsNCiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOw0KICAgIHN0YXRpYyBfX2RlY2xzcGVjKG5vcmV0dXJuKSB2b2lkIGRvUHV0UHJvcGVy
dHlTZWN1cml0eUNoZWNrKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IFB1dFByb3BlcnR5U2xvdCYpOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7DQogICAgZnJpZW5kIGNsYXNzIEpTQ2VsbExvY2s7DQoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3QqIHRvT2JqZWN0U2xvdyhKU0dsb2JhbE9iamVjdCop
IGNvbnN0Ow0KDQogICAgU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsNCiAgICBJbmRleGluZ1R5
cGUgbV9pbmRleGluZ1R5cGVBbmRNaXNjOyANCiAgICBKU1R5cGUgbV90eXBlOw0KICAgIFR5cGVJ
bmZvOjpJbmxpbmVUeXBlRmxhZ3MgbV9mbGFnczsNCiAgICBDZWxsU3RhdGUgbV9jZWxsU3RhdGU7
DQp9Ow0KDQpjbGFzcyBKU0NlbGxMb2NrIDogcHVibGljIEpTQ2VsbCB7DQpwdWJsaWM6DQogICAg
dm9pZCBsb2NrKCk7DQogICAgYm9vbCB0cnlMb2NrKCk7DQogICAgdm9pZCB1bmxvY2soKTsNCiAg
ICBib29sIGlzTG9ja2VkKCkgY29uc3Q7DQpwcml2YXRlOg0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSB2b2lkIGxvY2tTbG93KCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgdW5s
b2NrU2xvdygpOw0KfTsNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+DQppbmxpbmUgYXV0
byBzdWJzcGFjZUZvcihWTSYgdm0pDQp7DQogICAgcmV0dXJuIFR5cGU6OnRlbXBsYXRlIHN1YnNw
YWNlRm9yPFR5cGUsIFN1YnNwYWNlQWNjZXNzOjpPbk1haW5UaHJlYWQ+KHZtKTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVHlwZT4NCmlubGluZSBhdXRvIHN1YnNwYWNlRm9yQ29uY3VycmVudGx5
KFZNJiB2bSkNCnsNCiAgICByZXR1cm4gVHlwZTo6dGVtcGxhdGUgc3Vic3BhY2VGb3I8VHlwZSwg
U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseT4odm0pOw0KfQ0KDQoNCl9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBfX2RlY2xzcGVjKG5vaW5saW5lKSBfX2RlY2xzcGVjKG5vcmV0dXJuKSAgdm9pZCBy
ZXBvcnRaYXBwZWRDZWxsQW5kQ3Jhc2goSGVhcCYsIGNvbnN0IEpTQ2VsbCopOw0KI2xpbmUgMzA3
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXEpTQ2VsbC5oIg0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDYXN0LmgiDQoNCm5hbWVzcGFjZSBK
U0Mgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4NCmlubGluZSBUbyBq
c0Nhc3QoRnJvbSogZnJvbSkNCnsNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxK
U0NlbGwsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VG8+Ojp0eXBlPjo6dmFsdWUgJiYg
c3RkOjppc19iYXNlX29mPEpTQ2VsbCwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGcm9t
Pjo6dHlwZT46OnZhbHVlLCAiSlMgY2FzdGluZyBleHBlY3RzIHRoYXQgdGhlIHR5cGVzIHlvdSBh
cmUgY2FzdGluZyB0by9mcm9tIGFyZSBzdWJjbGFzc2VzIG9mIEpTQ2VsbCIpOw0KDQoNCg0KI2xp
bmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcSlNDYXN0LmgiDQogICAgKCh2b2lkKTApOw0KI2xpbmUgNDIgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDYXN0Lmgi
DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPihmcm9tKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVG8+DQppbmxpbmUgVG8ganNDYXN0KEpTVmFsdWUgZnJvbSkNCnsNCiAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfYmFzZV9vZjxKU0NlbGwsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8
VG8+Ojp0eXBlPjo6dmFsdWUsICJKUyBjYXN0aW5nIGV4cGVjdHMgdGhhdCB0aGUgdHlwZXMgeW91
IGFyZSBjYXN0aW5nIHRvIGlzIGEgc3ViY2xhc3Mgb2YgSlNDZWxsIik7DQoNCg0KDQoNCg0KI2xp
bmUgNTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcSlNDYXN0LmgiDQogICAgKCh2b2lkKTApOw0KI2xpbmUgNTcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDYXN0Lmgi
DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPihmcm9tLmFzQ2VsbCgpKTsNCn0NCg0KDQpzdHJ1
Y3QgSlNUeXBlUmFuZ2Ugew0KICAgIGJvb2wgY29udGFpbnMoSlNUeXBlIHR5cGUpIGNvbnN0IHsg
cmV0dXJuIGZpcnN0IDw9IHR5cGUgJiYgdHlwZSA8PSBsYXN0OyB9DQoNCiAgICBKU1R5cGUgZmly
c3Q7DQogICAgSlNUeXBlIGxhc3Q7DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNsYXNzIEpTSW1t
dXRhYmxlQnV0dGVyZmx5OyBjbGFzcyBKU1N0cmluZ0l0ZXJhdG9yOyBjbGFzcyBKU09iamVjdDsg
Y2xhc3MgSlNGaW5hbE9iamVjdDsgY2xhc3MgSlNGdW5jdGlvbjsgY2xhc3MgSW50ZXJuYWxGdW5j
dGlvbjsgY2xhc3MgTnVsbFNldHRlckZ1bmN0aW9uOyBjbGFzcyBKU0FycmF5OyBjbGFzcyBKU0Fy
cmF5SXRlcmF0b3I7IGNsYXNzIEpTQXJyYXlCdWZmZXI7IGNsYXNzIEpTQXJyYXlCdWZmZXJWaWV3
OyBjbGFzcyBKU1Byb21pc2U7IGNsYXNzIEpTU2V0OyBjbGFzcyBKU01hcDsgY2xhc3MgSlNXZWFr
U2V0OyBjbGFzcyBKU1dlYWtNYXA7IGNsYXNzIE51bWJlck9iamVjdDsgY2xhc3MgUHJveHlPYmpl
Y3Q7IGNsYXNzIFJlZ0V4cE9iamVjdDsgY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsgY2xhc3Mg
RGlyZWN0QXJndW1lbnRzOyBjbGFzcyBTY29wZWRBcmd1bWVudHM7IGNsYXNzIENsb25lZEFyZ3Vt
ZW50czsgY2xhc3MgSlNHbG9iYWxPYmplY3Q7IGNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50OyBjbGFzcyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OyBjbGFzcyBKU01vZHVsZUVudmly
b25tZW50OyBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudDsgY2xhc3MgSlNTeW1ib2xUYWJsZU9i
amVjdDsgY2xhc3MgSlNTY29wZTsgY2xhc3MgU3RyaW5nT2JqZWN0Ow0KDQoNCm5hbWVzcGFjZSBK
U0Nhc3RpbmdIZWxwZXJzIHsNCg0KdGVtcGxhdGU8Ym9vbCBpc0ZpbmFsPg0Kc3RydWN0IEZpbmFs
VHlwZURpc3BhdGNoZXIgew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
RnJvbT4NCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHNHZW5lcmljKFZNJiB2bSwgRnJv
bSogZnJvbSkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTxKU09i
amVjdCosIFRhcmdldCo+Ojp2YWx1ZSwgIlRoaXMgZW5zdXJlcyBvdXIgb3ZlcmxvYWRzIHdvcmsi
KTsNCiAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8SlNDZWxsLCBUYXJnZXQ+
Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Jhc2Vfb2Y8SlNDZWxsLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9w
b2ludGVyPEZyb20+Ojp0eXBlPjo6dmFsdWUsICJKUyBjYXN0aW5nIGV4cGVjdHMgdGhhdCB0aGUg
dHlwZXMgeW91IGFyZSBjYXN0aW5nIHRvL2Zyb20gYXJlIHN1YmNsYXNzZXMgb2YgSlNDZWxsIik7
DQogICAgICAgIA0KICAgICAgICByZXR1cm4gZnJvbS0+SlNDZWxsOjppbmhlcml0cyh2bSwgVGFy
Z2V0OjppbmZvKCkpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBGaW5hbFR5cGVE
aXNwYXRjaGVyPCB0cnVlPiB7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFt
ZSBGcm9tPg0KICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0c0dlbmVyaWMoVk0mIHZtLCBG
cm9tKiBmcm9tKQ0KICAgIHsNCiAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19zYW1lPEpT
T2JqZWN0KiwgVGFyZ2V0Kj46OnZhbHVlLCAiVGhpcyBlbnN1cmVzIG91ciBvdmVybG9hZHMgd29y
ayIpOw0KICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxKU0NlbGwsIFRhcmdl
dD46OnZhbHVlICYmIHN0ZDo6aXNfYmFzZV9vZjxKU0NlbGwsIHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3BvaW50ZXI8RnJvbT46OnR5cGU+Ojp2YWx1ZSwgIkpTIGNhc3RpbmcgZXhwZWN0cyB0aGF0IHRo
ZSB0eXBlcyB5b3UgYXJlIGNhc3RpbmcgdG8vZnJvbSBhcmUgc3ViY2xhc3NlcyBvZiBKU0NlbGwi
KTsNCiAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsPFRhcmdldD46OnZhbHVlLCAi
VGFyZ2V0IGlzIGEgZmluYWwgdHlwZSIpOw0KICAgICAgICBib29sIGNhbkNhc3QgPSBmcm9tLT5K
U0NlbGw6OmNsYXNzSW5mbyh2bSkgPT0gVGFyZ2V0OjppbmZvKCk7DQogICAgICAgIA0KICAgICAg
ICAoKHZvaWQpdm0pOw0KICAgICAgICByZXR1cm4gY2FuQ2FzdDsNCiAgICB9DQp9Ow0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIEZyb20+DQppbmxpbmUgYm9vbCBpbmhlcml0
c0pTVHlwZUltcGwoVk0mIHZtLCBGcm9tKiBmcm9tLCBKU1R5cGVSYW5nZSByYW5nZSkNCnsNCiAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxKU0NlbGwsIFRhcmdldD46OnZhbHVlICYm
IHN0ZDo6aXNfYmFzZV9vZjxKU0NlbGwsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnJv
bT46OnR5cGU+Ojp2YWx1ZSwgIkpTIGNhc3RpbmcgZXhwZWN0cyB0aGF0IHRoZSB0eXBlcyB5b3Ug
YXJlIGNhc3RpbmcgdG8vZnJvbSBhcmUgc3ViY2xhc3NlcyBvZiBKU0NlbGwiKTsNCiAgICBib29s
IGNhbkNhc3QgPSByYW5nZS5jb250YWlucyhmcm9tLT50eXBlKCkpOw0KICAgIA0KICAgICgodm9p
ZCl2bSk7DQogICAgcmV0dXJuIGNhbkNhc3Q7DQp9DQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
YXJnZXQ+DQpzdHJ1Y3QgSW5oZXJpdHNUcmFpdHMgew0KICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0
aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IFdURjo6bnVsbG9wdCB9Ow0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZyb20+DQogICAgc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2
bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gRmluYWxUeXBlRGlzcGF0Y2hlcjxzdGQ6OmlzX2ZpbmFs
PFRhcmdldD46OnZhbHVlPjo6dGVtcGxhdGUgaW5oZXJpdHNHZW5lcmljPFRhcmdldD4odm0sIGZy
b20pOyB9DQp9Ow0KDQoNCg0KDQoNCg0KDQoNCg0KdGVtcGxhdGU8PiBzdHJ1Y3QgSW5oZXJpdHNU
cmFpdHM8SlNJbW11dGFibGVCdXR0ZXJmbHk+IHsgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxK
U1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6SlNJ
bW11dGFibGVCdXR0ZXJmbHlUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkpTSW1t
dXRhYmxlQnV0dGVyZmx5VHlwZSkgfSB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPiBzdGF0aWMg
aW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBpbmhlcml0
c0pTVHlwZUltcGw8SlNJbW11dGFibGVCdXR0ZXJmbHksIEZyb20+KHZtLCBmcm9tLCAqdHlwZVJh
bmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0czxKU1N0cmluZ0l0ZXJh
dG9yPiB7IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7
IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBlKSwgc3Rh
dGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkpTU3RyaW5nSXRlcmF0b3JUeXBlKSB9IH07IHRlbXBs
YXRlPHR5cGVuYW1lIEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0sIEZy
b20qIGZyb20pIHsgcmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxKU1N0cmluZ0l0ZXJhdG9yLCBG
cm9tPih2bSwgZnJvbSwgKnR5cGVSYW5nZSk7IH0gfTsgdGVtcGxhdGU8PiBzdHJ1Y3QgSW5oZXJp
dHNUcmFpdHM8SlNPYmplY3Q+IHsgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5n
ZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEZpcnN0T2JqZWN0VHlwZSksIHN0
YXRpY19jYXN0PEpTVHlwZT4oTGFzdE9iamVjdFR5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUg
RnJvbT4gc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyBy
ZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPEpTT2JqZWN0LCBGcm9tPih2bSwgZnJvbSwgKnR5cGVS
YW5nZSk7IH0gfTsgdGVtcGxhdGU8PiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8SlNGaW5hbE9iamVj
dD4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7
IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpGaW5hbE9iamVjdFR5cGUpLCBzdGF0aWNfY2Fz
dDxKU1R5cGU+KEpTVHlwZTo6RmluYWxPYmplY3RUeXBlKSB9IH07IHRlbXBsYXRlPHR5cGVuYW1l
IEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0sIEZyb20qIGZyb20pIHsg
cmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxKU0ZpbmFsT2JqZWN0LCBGcm9tPih2bSwgZnJvbSwg
KnR5cGVSYW5nZSk7IH0gfTsgdGVtcGxhdGU8PiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8SlNGdW5j
dGlvbj4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2Ug
eyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSksIHN0YXRpY19j
YXN0PEpTVHlwZT4oSlNUeXBlOjpKU0Z1bmN0aW9uVHlwZSkgfSB9OyB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGcm9tPiBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7
IHJldHVybiBpbmhlcml0c0pTVHlwZUltcGw8SlNGdW5jdGlvbiwgRnJvbT4odm0sIGZyb20sICp0
eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVyaXRzVHJhaXRzPEludGVybmFs
RnVuY3Rpb24+IHsgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJh
bmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6SW50ZXJuYWxGdW5jdGlvblR5cGUp
LCBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6TnVsbFNldHRlckZ1bmN0aW9uVHlwZSkgfSB9
OyB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPiBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0m
IHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBpbmhlcml0c0pTVHlwZUltcGw8SW50ZXJuYWxGdW5j
dGlvbiwgRnJvbT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0
IEluaGVyaXRzVHJhaXRzPE51bGxTZXR0ZXJGdW5jdGlvbj4geyBzdGF0aWMgY29uc3RleHByIE9w
dGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNU
eXBlOjpOdWxsU2V0dGVyRnVuY3Rpb25UeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6
Ok51bGxTZXR0ZXJGdW5jdGlvblR5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3Rh
dGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5o
ZXJpdHNKU1R5cGVJbXBsPE51bGxTZXR0ZXJGdW5jdGlvbiwgRnJvbT4odm0sIGZyb20sICp0eXBl
UmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVyaXRzVHJhaXRzPEpTQXJyYXk+IHsg
c3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0
aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6QXJyYXlUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihK
U1R5cGU6OkRlcml2ZWRBcnJheVR5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3Rh
dGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5o
ZXJpdHNKU1R5cGVJbXBsPEpTQXJyYXksIEZyb20+KHZtLCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9
OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0czxKU0FycmF5SXRlcmF0b3I+IHsgc3Rh
dGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNf
Y2FzdDxKU1R5cGU+KEpTVHlwZTo6SlNBcnJheUl0ZXJhdG9yVHlwZSksIHN0YXRpY19jYXN0PEpT
VHlwZT4oSlNUeXBlOjpKU0FycmF5SXRlcmF0b3JUeXBlKSB9IH07IHRlbXBsYXRlPHR5cGVuYW1l
IEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0sIEZyb20qIGZyb20pIHsg
cmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxKU0FycmF5SXRlcmF0b3IsIEZyb20+KHZtLCBmcm9t
LCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0czxKU0Fy
cmF5QnVmZmVyPiB7IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVS
YW5nZSB7IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkFycmF5QnVmZmVyVHlwZSksIHN0
YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpBcnJheUJ1ZmZlclR5cGUpIH0gfTsgdGVtcGxhdGU8
dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSog
ZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPEpTQXJyYXlCdWZmZXIsIEZyb20+KHZt
LCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0
czxKU0FycmF5QnVmZmVyVmlldz4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJh
bmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oRmlyc3RUeXBlZEFycmF5VHlw
ZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oTGFzdFR5cGVkQXJyYXlUeXBlKSB9IH07IHRlbXBsYXRl
PHR5cGVuYW1lIEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0sIEZyb20q
IGZyb20pIHsgcmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxKU0FycmF5QnVmZmVyVmlldywgRnJv
bT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVyaXRz
VHJhaXRzPEpTUHJvbWlzZT4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdl
PiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpKU1Byb21pc2VUeXBl
KSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkpTUHJvbWlzZVR5cGUpIH0gfTsgdGVtcGxh
dGU8dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJv
bSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPEpTUHJvbWlzZSwgRnJvbT4odm0s
IGZyb20sICp0eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVyaXRzVHJhaXRz
PEpTU2V0PiB7IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5n
ZSB7IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkpTU2V0VHlwZSksIHN0YXRpY19jYXN0
PEpTVHlwZT4oSlNUeXBlOjpKU1NldFR5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4g
c3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4g
aW5oZXJpdHNKU1R5cGVJbXBsPEpTU2V0LCBGcm9tPih2bSwgZnJvbSwgKnR5cGVSYW5nZSk7IH0g
fTsgdGVtcGxhdGU8PiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8SlNNYXA+IHsgc3RhdGljIGNvbnN0
ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5
cGU+KEpTVHlwZTo6SlNNYXBUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkpTTWFw
VHlwZSkgfSB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPiBzdGF0aWMgaW5saW5lIGJvb2wgaW5o
ZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBpbmhlcml0c0pTVHlwZUltcGw8SlNN
YXAsIEZyb20+KHZtLCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJ
bmhlcml0c1RyYWl0czxKU1dlYWtTZXQ+IHsgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5
cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6SlNXZWFr
U2V0VHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpKU1dlYWtTZXRUeXBlKSB9IH07
IHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYg
dm0sIEZyb20qIGZyb20pIHsgcmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxKU1dlYWtTZXQsIEZy
b20+KHZtLCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0
c1RyYWl0czxKU1dlYWtNYXA+IHsgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5n
ZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6SlNXZWFrTWFwVHlw
ZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpKU1dlYWtNYXBUeXBlKSB9IH07IHRlbXBs
YXRlPHR5cGVuYW1lIEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0sIEZy
b20qIGZyb20pIHsgcmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxKU1dlYWtNYXAsIEZyb20+KHZt
LCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0
czxOdW1iZXJPYmplY3Q+IHsgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4g
dHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6TnVtYmVyT2JqZWN0VHlw
ZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpOdW1iZXJPYmplY3RUeXBlKSB9IH07IHRl
bXBsYXRlPHR5cGVuYW1lIEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0s
IEZyb20qIGZyb20pIHsgcmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxOdW1iZXJPYmplY3QsIEZy
b20+KHZtLCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0
c1RyYWl0czxQcm94eU9iamVjdD4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJh
bmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpQcm94eU9iamVj
dFR5cGUpLCBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6UHJveHlPYmplY3RUeXBlKSB9IH07
IHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYg
dm0sIEZyb20qIGZyb20pIHsgcmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxQcm94eU9iamVjdCwg
RnJvbT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVy
aXRzVHJhaXRzPFJlZ0V4cE9iamVjdD4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlw
ZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpSZWdFeHBP
YmplY3RUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OlJlZ0V4cE9iamVjdFR5cGUp
IH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBib29sIGluaGVyaXRz
KFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPFJlZ0V4cE9i
amVjdCwgRnJvbT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0
IEluaGVyaXRzVHJhaXRzPEpTV2ViQXNzZW1ibHlNb2R1bGU+IHsgc3RhdGljIGNvbnN0ZXhwciBP
cHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEpT
VHlwZTo6V2ViQXNzZW1ibHlNb2R1bGVUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6
OldlYkFzc2VtYmx5TW9kdWxlVHlwZSkgfSB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPiBzdGF0
aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBpbmhl
cml0c0pTVHlwZUltcGw8SlNXZWJBc3NlbWJseU1vZHVsZSwgRnJvbT4odm0sIGZyb20sICp0eXBl
UmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVyaXRzVHJhaXRzPERpcmVjdEFyZ3Vt
ZW50cz4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2Ug
eyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpEaXJlY3RBcmd1bWVudHNUeXBlKSwgc3Rh
dGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OkRpcmVjdEFyZ3VtZW50c1R5cGUpIH0gfTsgdGVtcGxh
dGU8dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJv
bSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPERpcmVjdEFyZ3VtZW50cywgRnJv
bT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVyaXRz
VHJhaXRzPFNjb3BlZEFyZ3VtZW50cz4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlw
ZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpTY29wZWRB
cmd1bWVudHNUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OlNjb3BlZEFyZ3VtZW50
c1R5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBib29sIGlu
aGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPFNj
b3BlZEFyZ3VtZW50cywgRnJvbT4odm0sIGZyb20sICp0eXBlUmFuZ2UpOyB9IH07IHRlbXBsYXRl
PD4gc3RydWN0IEluaGVyaXRzVHJhaXRzPENsb25lZEFyZ3VtZW50cz4geyBzdGF0aWMgY29uc3Rl
eHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlw
ZT4oSlNUeXBlOjpDbG9uZWRBcmd1bWVudHNUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5
cGU6OkNsb25lZEFyZ3VtZW50c1R5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3Rh
dGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5o
ZXJpdHNKU1R5cGVJbXBsPENsb25lZEFyZ3VtZW50cywgRnJvbT4odm0sIGZyb20sICp0eXBlUmFu
Z2UpOyB9IH07IHRlbXBsYXRlPD4gc3RydWN0IEluaGVyaXRzVHJhaXRzPEpTR2xvYmFsT2JqZWN0
PiB7IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7IHsg
c3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUpLCBzdGF0aWNfY2Fz
dDxKU1R5cGU+KEpTVHlwZTo6R2xvYmFsT2JqZWN0VHlwZSkgfSB9OyB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGcm9tPiBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7
IHJldHVybiBpbmhlcml0c0pTVHlwZUltcGw8SlNHbG9iYWxPYmplY3QsIEZyb20+KHZtLCBmcm9t
LCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0czxKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudD4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlw
ZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnRUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6Okdsb2Jh
bExleGljYWxFbnZpcm9ubWVudFR5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3Rh
dGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5o
ZXJpdHNKU1R5cGVJbXBsPEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBGcm9tPih2bSwgZnJv
bSwgKnR5cGVSYW5nZSk7IH0gfTsgdGVtcGxhdGU8PiBzdHJ1Y3QgSW5oZXJpdHNUcmFpdHM8SlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdD4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlw
ZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpHbG9iYWxP
YmplY3RUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6Okdsb2JhbExleGljYWxFbnZp
cm9ubWVudFR5cGUpIH0gfTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBi
b29sIGluaGVyaXRzKFZNJiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJ
bXBsPEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QsIEZyb20+KHZtLCBmcm9tLCAqdHlwZVJhbmdl
KTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0czxKU01vZHVsZUVudmlyb25t
ZW50PiB7IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVSYW5nZSB7
IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6Ok1vZHVsZUVudmlyb25tZW50VHlwZSksIHN0
YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpNb2R1bGVFbnZpcm9ubWVudFR5cGUpIH0gfTsgdGVt
cGxhdGU8dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZNJiB2bSwg
RnJvbSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPEpTTW9kdWxlRW52aXJvbm1l
bnQsIEZyb20+KHZtLCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJ
bmhlcml0c1RyYWl0czxKU0xleGljYWxFbnZpcm9ubWVudD4geyBzdGF0aWMgY29uc3RleHByIE9w
dGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNU
eXBlOjpMZXhpY2FsRW52aXJvbm1lbnRUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6
Ok1vZHVsZUVudmlyb25tZW50VHlwZSkgfSB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPiBzdGF0
aWMgaW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBpbmhl
cml0c0pTVHlwZUltcGw8SlNMZXhpY2FsRW52aXJvbm1lbnQsIEZyb20+KHZtLCBmcm9tLCAqdHlw
ZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0c1RyYWl0czxKU1N5bWJvbFRh
YmxlT2JqZWN0PiB7IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uYWw8SlNUeXBlUmFuZ2U+IHR5cGVS
YW5nZSB7IHsgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6Okdsb2JhbE9iamVjdFR5cGUpLCBz
dGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6TW9kdWxlRW52aXJvbm1lbnRUeXBlKSB9IH07IHRl
bXBsYXRlPHR5cGVuYW1lIEZyb20+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0cyhWTSYgdm0s
IEZyb20qIGZyb20pIHsgcmV0dXJuIGluaGVyaXRzSlNUeXBlSW1wbDxKU1N5bWJvbFRhYmxlT2Jq
ZWN0LCBGcm9tPih2bSwgZnJvbSwgKnR5cGVSYW5nZSk7IH0gfTsgdGVtcGxhdGU8PiBzdHJ1Y3Qg
SW5oZXJpdHNUcmFpdHM8SlNTY29wZT4geyBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlw
ZVJhbmdlPiB0eXBlUmFuZ2UgeyB7IHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpHbG9iYWxP
YmplY3RUeXBlKSwgc3RhdGljX2Nhc3Q8SlNUeXBlPihKU1R5cGU6OldpdGhTY29wZVR5cGUpIH0g
fTsgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gc3RhdGljIGlubGluZSBib29sIGluaGVyaXRzKFZN
JiB2bSwgRnJvbSogZnJvbSkgeyByZXR1cm4gaW5oZXJpdHNKU1R5cGVJbXBsPEpTU2NvcGUsIEZy
b20+KHZtLCBmcm9tLCAqdHlwZVJhbmdlKTsgfSB9OyB0ZW1wbGF0ZTw+IHN0cnVjdCBJbmhlcml0
c1RyYWl0czxTdHJpbmdPYmplY3Q+IHsgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVS
YW5nZT4gdHlwZVJhbmdlIHsgeyBzdGF0aWNfY2FzdDxKU1R5cGU+KEpTVHlwZTo6U3RyaW5nT2Jq
ZWN0VHlwZSksIHN0YXRpY19jYXN0PEpTVHlwZT4oSlNUeXBlOjpEZXJpdmVkU3RyaW5nT2JqZWN0
VHlwZSkgfSB9OyB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPiBzdGF0aWMgaW5saW5lIGJvb2wgaW5o
ZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBpbmhlcml0c0pTVHlwZUltcGw8U3Ry
aW5nT2JqZWN0LCBGcm9tPih2bSwgZnJvbSwgKnR5cGVSYW5nZSk7IH0gfTsNCg0KDQoNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBGcm9tPg0KYm9vbCBpbmhlcml0cyhWTSYg
dm0sIEZyb20qIGZyb20pDQp7DQogICAgdXNpbmcgRGlzcGF0Y2hlciA9IEluaGVyaXRzVHJhaXRz
PFRhcmdldD47DQogICAgcmV0dXJuIERpc3BhdGNoZXI6OnRlbXBsYXRlIGluaGVyaXRzKHZtLCBm
cm9tKTsNCn0NCg0KfSANCg0KdGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+DQpU
byBqc0R5bmFtaWNDYXN0KFZNJiB2bSwgRnJvbSogZnJvbSkNCnsNCiAgICB1c2luZyBEaXNwYXRj
aGVyID0gSlNDYXN0aW5nSGVscGVyczo6SW5oZXJpdHNUcmFpdHM8dHlwZW5hbWUgc3RkOjpyZW1v
dmVfY3Y8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUbz46OnR5cGU+Ojp0eXBlPjsNCiAg
ICBpZiAoKERpc3BhdGNoZXI6OnRlbXBsYXRlIGluaGVyaXRzKHZtLCBmcm9tKSkpDQogICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUbz4oZnJvbSk7DQogICAgcmV0dXJuIG51bGxwdHI7DQp9DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIFRvPg0KVG8ganNEeW5hbWljQ2FzdChWTSYgdm0sIEpTVmFsdWUg
ZnJvbSkNCnsNCiAgICBpZiAoKCFmcm9tLmlzQ2VsbCgpKSkNCiAgICAgICAgcmV0dXJuIG51bGxw
dHI7DQogICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8VG8+KHZtLCBmcm9tLmFzQ2VsbCgpKTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+DQpUbyBqc1NlY3VyZUNhc3Qo
Vk0mIHZtLCBGcm9tIGZyb20pDQp7DQogICAgYXV0byogcmVzdWx0ID0ganNEeW5hbWljQ2FzdDxU
bz4odm0sIGZyb20pOw0KICAgIGRvIHsgaWYgKCghKHJlc3VsdCkpKSBkbyB7IFdURjo6aXNJbnRl
Z3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0
aEluZm8oMTk5LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxKU0Nhc3QuaCIsICBfX0ZVTkNUSU9OX18gICwgNTkgKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQp9DQojbGluZSAy
NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxDbGFzc0luZm8uaCINCg0KDQpuYW1lc3BhY2UgV1RGIHsNCmNsYXNzIFByaW50U3RyZWFt
Ow0KfTsNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEhlYXBBbmFseXplcjsNCmNsYXNzIEpT
QXJyYXlCdWZmZXJWaWV3Ow0KY2xhc3MgU25pcHBldDsNCnN0cnVjdCBIYXNoVGFibGU7DQoNCg0K
DQoNCnN0cnVjdCBNZXRob2RUYWJsZSB7DQogICAgdXNpbmcgRGVzdHJveUZ1bmN0aW9uUHRyID0g
dm9pZCAoKikoSlNDZWxsKik7DQogICAgRGVzdHJveUZ1bmN0aW9uUHRyICBkZXN0cm95Ow0KDQog
ICAgdXNpbmcgVmlzaXRDaGlsZHJlbkZ1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsNCiAgICBWaXNpdENoaWxkcmVuRnVuY3Rpb25QdHIgIHZpc2l0Q2hpbGRyZW47
DQoNCiAgICB1c2luZyBHZXRDYWxsRGF0YUZ1bmN0aW9uUHRyID0gQ2FsbERhdGEgKCopKEpTQ2Vs
bCopOw0KICAgIEdldENhbGxEYXRhRnVuY3Rpb25QdHIgIGdldENhbGxEYXRhOw0KDQogICAgdXNp
bmcgR2V0Q29uc3RydWN0RGF0YUZ1bmN0aW9uUHRyID0gQ2FsbERhdGEgKCopKEpTQ2VsbCopOw0K
ICAgIEdldENvbnN0cnVjdERhdGFGdW5jdGlvblB0ciAgZ2V0Q29uc3RydWN0RGF0YTsNCg0KICAg
IHVzaW5nIFB1dEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsN
CiAgICBQdXRGdW5jdGlvblB0ciAgcHV0Ow0KDQogICAgdXNpbmcgUHV0QnlJbmRleEZ1bmN0aW9u
UHRyID0gYm9vbCAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOw0KICAgIFB1dEJ5SW5kZXhGdW5jdGlv
blB0ciAgcHV0QnlJbmRleDsNCg0KICAgIHVzaW5nIERlbGV0ZVByb3BlcnR5RnVuY3Rpb25QdHIg
PSBib29sICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRl
UHJvcGVydHlTbG90Jik7DQogICAgRGVsZXRlUHJvcGVydHlGdW5jdGlvblB0ciAgZGVsZXRlUHJv
cGVydHk7DQoNCiAgICB1c2luZyBEZWxldGVQcm9wZXJ0eUJ5SW5kZXhGdW5jdGlvblB0ciA9IGJv
b2wgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOw0KICAgIERlbGV0ZVBy
b3BlcnR5QnlJbmRleEZ1bmN0aW9uUHRyICBkZWxldGVQcm9wZXJ0eUJ5SW5kZXg7DQoNCiAgICB1
c2luZyBHZXRPd25Qcm9wZXJ0eVNsb3RGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOw0KICAgIEdldE93
blByb3BlcnR5U2xvdEZ1bmN0aW9uUHRyICBnZXRPd25Qcm9wZXJ0eVNsb3Q7DQoNCiAgICB1c2lu
ZyBHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOw0KICAgIEdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhGdW5jdGlvblB0ciAgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eDsNCg0KICAgIHVzaW5nIERvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrRnVuY3Rpb25QdHIgPSB2
b2lkICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsNCiAgICBEb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVja0Z1bmN0aW9uUHRyICBk
b1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjazsNCg0KICAgIHVzaW5nIFRvVGhpc0Z1bmN0aW9uUHRy
ID0gSlNWYWx1ZSAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7DQogICAg
VG9UaGlzRnVuY3Rpb25QdHIgIHRvVGhpczsNCg0KICAgIHVzaW5nIERlZmF1bHRWYWx1ZUZ1bmN0
aW9uUHRyID0gSlNWYWx1ZSAoKikoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUpOw0KICAgIERlZmF1bHRWYWx1ZUZ1bmN0aW9uUHRyICBkZWZh
dWx0VmFsdWU7DQoNCiAgICB1c2luZyBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgPSB2
b2lkICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOw0KICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciAgZ2V0
T3duUHJvcGVydHlOYW1lczsNCg0KICAgIHVzaW5nIEdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
c0Z1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsNCiAgICBHZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXNGdW5jdGlvblB0ciAgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzOw0KDQogICAg
dXNpbmcgR2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsNCiAg
ICBHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgIGdldFByb3BlcnR5TmFtZXM7DQoNCiAgICB1
c2luZyBHZXRFbnVtZXJhYmxlTGVuZ3RoRnVuY3Rpb25QdHIgPSB1aW50MzJfdCAoKikoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCopOw0KICAgIEdldEVudW1lcmFibGVMZW5ndGhGdW5jdGlvblB0
ciAgZ2V0RW51bWVyYWJsZUxlbmd0aDsNCg0KICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0
ciAgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lczsNCiAgICBHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rp
b25QdHIgIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzOw0KDQogICAgdXNpbmcgQ2xhc3NOYW1lRnVu
Y3Rpb25QdHIgPSBTdHJpbmcgKCopKGNvbnN0IEpTT2JqZWN0KiwgVk0mKTsNCiAgICBDbGFzc05h
bWVGdW5jdGlvblB0ciAgY2xhc3NOYW1lOw0KDQogICAgdXNpbmcgVG9TdHJpbmdOYW1lRnVuY3Rp
b25QdHIgPSBTdHJpbmcgKCopKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsNCiAg
ICBUb1N0cmluZ05hbWVGdW5jdGlvblB0ciAgdG9TdHJpbmdOYW1lOw0KDQogICAgdXNpbmcgQ3Vz
dG9tSGFzSW5zdGFuY2VGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsNCiAgICBDdXN0b21IYXNJbnN0YW5jZUZ1bmN0aW9uUHRyICBjdXN0
b21IYXNJbnN0YW5jZTsNCg0KICAgIHVzaW5nIERlZmluZU93blByb3BlcnR5RnVuY3Rpb25QdHIg
PSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sKTsNCiAgICBEZWZpbmVPd25Qcm9wZXJ0eUZ1bmN0
aW9uUHRyICBkZWZpbmVPd25Qcm9wZXJ0eTsNCg0KICAgIHVzaW5nIFByZXZlbnRFeHRlbnNpb25z
RnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0Kik7DQogICAg
UHJldmVudEV4dGVuc2lvbnNGdW5jdGlvblB0ciAgcHJldmVudEV4dGVuc2lvbnM7DQoNCiAgICB1
c2luZyBJc0V4dGVuc2libGVGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqKTsNCiAgICBJc0V4dGVuc2libGVGdW5jdGlvblB0ciAgaXNFeHRlbnNpYmxlOw0K
DQogICAgdXNpbmcgU2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCk7DQog
ICAgU2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgIHNldFByb3RvdHlwZTsNCg0KICAgIHVzaW5nIEdl
dFByb3RvdHlwZUZ1bmN0aW9uUHRyID0gSlNWYWx1ZSAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCopOw0KICAgIEdldFByb3RvdHlwZUZ1bmN0aW9uUHRyICBnZXRQcm90b3R5cGU7DQoNCiAg
ICB1c2luZyBEdW1wVG9TdHJlYW1GdW5jdGlvblB0ciA9IHZvaWQgKCopKGNvbnN0IEpTQ2VsbCos
IFByaW50U3RyZWFtJik7DQogICAgRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIgIGR1bXBUb1N0cmVh
bTsNCg0KICAgIHVzaW5nIEFuYWx5emVIZWFwRnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU0NlbGwq
LCBIZWFwQW5hbHl6ZXImKTsNCiAgICBBbmFseXplSGVhcEZ1bmN0aW9uUHRyICBhbmFseXplSGVh
cDsNCg0KICAgIHVzaW5nIEVzdGltYXRlZFNpemVGdW5jdGlvblB0ciA9IHNpemVfdCAoKikoSlND
ZWxsKiwgVk0mKTsNCiAgICBFc3RpbWF0ZWRTaXplRnVuY3Rpb25QdHIgIGVzdGltYXRlZFNpemU7
DQoNCiAgICB1c2luZyBWaXNpdE91dHB1dENvbnN0cmFpbnRzUHRyID0gdm9pZCAoKikoSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsNCiAgICBWaXNpdE91dHB1dENvbnN0cmFpbnRzUHRyICB2aXNpdE91
dHB1dENvbnN0cmFpbnRzOw0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0Kc3RydWN0IENsYXNzSW5mbyB7DQogICAgdXNpbmcgQ2hl
Y2tKU0Nhc3RTbmlwcGV0RnVuY3Rpb25QdHIgPSBSZWY8U25pcHBldD4gKCopKHZvaWQpOw0KDQog
ICAgDQogICAgY29uc3QgY2hhciogY2xhc3NOYW1lOw0KICAgIA0KICAgIA0KICAgIGNvbnN0IENs
YXNzSW5mbyogcGFyZW50Q2xhc3M7DQogICAgY29uc3QgSGFzaFRhYmxlKiBzdGF0aWNQcm9wSGFz
aFRhYmxlOw0KICAgIENoZWNrSlNDYXN0U25pcHBldEZ1bmN0aW9uUHRyIGNoZWNrU3ViQ2xhc3NT
bmlwcGV0Ow0KICAgIGNvbnN0IE9wdGlvbmFsPEpTVHlwZVJhbmdlPiBpbmhlcml0c0pTVHlwZVJh
bmdlOyANCiAgICBNZXRob2RUYWJsZSBtZXRob2RUYWJsZTsNCiAgICBjb25zdCBUeXBlZEFycmF5
VHlwZSB0eXBlZEFycmF5U3RvcmFnZVR5cGU7DQogICAgY29uc3QgdW5zaWduZWQgc3RhdGljQ2xh
c3NTaXplOw0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlBhcmVudENsYXNzKCkNCiAg
ICB7DQogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRl
cnByZXRfY2FzdDxDbGFzc0luZm8qPigweDQwMDApLT5wYXJlbnRDbGFzcykpIC0gMHg0MDAwKTsN
CiAgICB9DQoNCiAgICBib29sIGlzU3ViQ2xhc3NPZihjb25zdCBDbGFzc0luZm8qIG90aGVyKSBj
b25zdA0KICAgIHsNCiAgICAgICAgZm9yIChjb25zdCBDbGFzc0luZm8qIGNpID0gdGhpczsgY2k7
IGNpID0gY2ktPnBhcmVudENsYXNzKSB7DQogICAgICAgICAgICBpZiAoY2kgPT0gb3RoZXIpDQog
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGZh
bHNlOw0KICAgIH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIGhhc1N0YXRp
Y1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKCkgY29uc3Q7DQp9Ow0KDQp9IA0KI2xpbmUgMjkg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcU3RydWN0dXJlLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRGVsZXRlUHJvcGVydHlTbG90LmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXFByb3BlcnR5T2Zmc2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCnR5cGVkZWYgaW50IFByb3BlcnR5T2Zmc2V0Ow0KDQpzdGF0aWMgY29uc3RleHBy
IFByb3BlcnR5T2Zmc2V0IGludmFsaWRPZmZzZXQgPSAtMTsNCnN0YXRpYyBjb25zdGV4cHIgUHJv
cGVydHlPZmZzZXQgZmlyc3RPdXRPZkxpbmVPZmZzZXQgPSAxMDA7DQpzdGF0aWMgY29uc3RleHBy
IFByb3BlcnR5T2Zmc2V0IGtub3duUG9seVByb3RvT2Zmc2V0ID0gMDsNCnN0YXRpY19hc3NlcnQo
a25vd25Qb2x5UHJvdG9PZmZzZXQgPCBmaXJzdE91dE9mTGluZU9mZnNldCwgIldlIGFzc3VtZSBp
biBhbGwgdGhlIEpJVHMgdGhhdCB0aGUgcG9seSBwcm90byBvZmZzZXQgaXMgYW4gaW5saW5lIG9m
ZnNldCIpOw0KDQoNCmlubGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsNCmlu
bGluZSB2b2lkIGNoZWNrT2Zmc2V0KFByb3BlcnR5T2Zmc2V0LCBpbnQgaW5saW5lQ2FwYWNpdHkp
Ow0KaW5saW5lIHZvaWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQpOw0KaW5saW5lIHZv
aWQgdmFsaWRhdGVPZmZzZXQoUHJvcGVydHlPZmZzZXQsIGludCBpbmxpbmVDYXBhY2l0eSk7DQpp
bmxpbmUgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsNCmlubGluZSBib29sIGlz
SW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0KTsNCmlubGluZSBib29sIGlzT3V0T2ZMaW5lT2Zm
c2V0KFByb3BlcnR5T2Zmc2V0KTsNCmlubGluZSBzaXplX3Qgb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KFByb3BlcnR5T2Zmc2V0KTsNCmlubGluZSBzaXplX3Qgb2Zmc2V0SW5PdXRPZkxpbmVTdG9yYWdl
KFByb3BlcnR5T2Zmc2V0KTsNCmlubGluZSBzaXplX3Qgb2Zmc2V0SW5SZXNwZWN0aXZlU3RvcmFn
ZShQcm9wZXJ0eU9mZnNldCk7DQppbmxpbmUgc2l6ZV90IG51bWJlck9mT3V0T2ZMaW5lU2xvdHNG
b3JNYXhPZmZzZXQoUHJvcGVydHlPZmZzZXQpOw0KaW5saW5lIHNpemVfdCBudW1iZXJPZlNsb3Rz
Rm9yTWF4T2Zmc2V0KFByb3BlcnR5T2Zmc2V0LCBpbnQgaW5saW5lQ2FwYWNpdHkpOw0KDQppbmxp
bmUgdm9pZCBjaGVja09mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpDQp7DQogICAgKHZvaWQp
b2Zmc2V0Ow0KICAgICgodm9pZCkwKTsNCn0NCg0KaW5saW5lIHZvaWQgY2hlY2tPZmZzZXQoUHJv
cGVydHlPZmZzZXQgb2Zmc2V0LCBpbnQgaW5saW5lQ2FwYWNpdHkpDQp7DQogICAgKHZvaWQpb2Zm
c2V0Ow0KICAgICh2b2lkKWlubGluZUNhcGFjaXR5Ow0KICAgICgodm9pZCkwKTsNCiAgICAoKHZv
aWQpMCk7DQojbGluZSA2NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxQcm9wZXJ0eU9mZnNldC5oIg0KfQ0KDQppbmxpbmUgdm9pZCB2
YWxpZGF0ZU9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpDQp7DQogICAgY2hlY2tPZmZzZXQo
b2Zmc2V0KTsNCiAgICAoKHZvaWQpMCk7DQp9DQoNCmlubGluZSB2b2lkIHZhbGlkYXRlT2Zmc2V0
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgaW50IGlubGluZUNhcGFjaXR5KQ0Kew0KICAgIGNoZWNr
T2Zmc2V0KG9mZnNldCwgaW5saW5lQ2FwYWNpdHkpOw0KICAgICgodm9pZCkwKTsNCn0NCg0KaW5s
aW5lIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpDQp7DQogICAgY2hl
Y2tPZmZzZXQob2Zmc2V0KTsNCiAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQ7DQp9
DQoNCmlubGluZSBib29sIGlzSW5saW5lT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkNCnsN
CiAgICBjaGVja09mZnNldChvZmZzZXQpOw0KICAgIHJldHVybiBvZmZzZXQgPCBmaXJzdE91dE9m
TGluZU9mZnNldDsNCn0NCg0KaW5saW5lIGJvb2wgaXNPdXRPZkxpbmVPZmZzZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQ0Kew0KICAgIGNoZWNrT2Zmc2V0KG9mZnNldCk7DQogICAgcmV0dXJuICFp
c0lubGluZU9mZnNldChvZmZzZXQpOw0KfQ0KDQppbmxpbmUgc2l6ZV90IG9mZnNldEluSW5saW5l
U3RvcmFnZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpDQp7DQogICAgdmFsaWRhdGVPZmZzZXQob2Zm
c2V0KTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIG9mZnNldDsNCn0NCg0KaW5saW5lIHNp
emVfdCBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0Kew0K
ICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiAt
c3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXQgLSBmaXJzdE91dE9mTGluZU9mZnNldCkgLSAx
Ow0KfQ0KDQppbmxpbmUgc2l6ZV90IG9mZnNldEluUmVzcGVjdGl2ZVN0b3JhZ2UoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQ0Kew0KICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQ0KICAgICAg
ICByZXR1cm4gb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCk7DQogICAgcmV0dXJuIG9mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpOw0KfQ0KDQppbmxpbmUgc2l6ZV90IG51bWJlck9m
T3V0T2ZMaW5lU2xvdHNGb3JNYXhPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0Kew0KICAg
IGNoZWNrT2Zmc2V0KG9mZnNldCk7DQogICAgaWYgKG9mZnNldCA8IGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0KQ0KICAgICAgICByZXR1cm4gMDsNCiAgICByZXR1cm4gb2Zmc2V0IC0gZmlyc3RPdXRPZkxp
bmVPZmZzZXQgKyAxOw0KfQ0KDQppbmxpbmUgc2l6ZV90IG51bWJlck9mU2xvdHNGb3JNYXhPZmZz
ZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBpbnQgaW5saW5lQ2FwYWNpdHkpDQp7DQogICAgY2hl
Y2tPZmZzZXQob2Zmc2V0LCBpbmxpbmVDYXBhY2l0eSk7DQogICAgaWYgKG9mZnNldCA8IGlubGlu
ZUNhcGFjaXR5KQ0KICAgICAgICByZXR1cm4gb2Zmc2V0ICsgMTsNCiAgICByZXR1cm4gaW5saW5l
Q2FwYWNpdHkgKyBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTWF4T2Zmc2V0KG9mZnNldCk7DQp9
DQoNCmlubGluZSBQcm9wZXJ0eU9mZnNldCBvZmZzZXRGb3JQcm9wZXJ0eU51bWJlcihpbnQgcHJv
cGVydHlOdW1iZXIsIGludCBpbmxpbmVDYXBhY2l0eSkNCnsNCiAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBwcm9wZXJ0eU51bWJlcjsNCiAgICBpZiAob2Zmc2V0ID49IGlubGluZUNhcGFjaXR5
KSB7DQogICAgICAgIG9mZnNldCArPSBmaXJzdE91dE9mTGluZU9mZnNldDsNCiAgICAgICAgb2Zm
c2V0IC09IGlubGluZUNhcGFjaXR5Ow0KICAgIH0NCiAgICByZXR1cm4gb2Zmc2V0Ow0KfQ0KDQp9
IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcRGVsZXRlUHJvcGVydHlTbG90LmgiDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFByb3BlcnR5
U2xvdC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXERPTUFubm90YXRpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0Kc3RydWN0IENsYXNzSW5mbzsNCg0KbmFtZXNwYWNlIERPTUpJVCB7DQpjbGFz
cyBHZXR0ZXJTZXR0ZXI7DQp9DQoNCnN0cnVjdCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsNCiAg
ICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywg
dm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Vi
a2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNl
QVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvOw0KICAgIGNvbnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQ7
DQp9Ow0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERPTUF0dHJpYnV0ZUFubm90YXRp
b24mIGxlZnQsIGNvbnN0IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIHJpZ2h0KQ0Kew0KICAgIHJl
dHVybiBsZWZ0LmNsYXNzSW5mbyA9PSByaWdodC5jbGFzc0luZm8gJiYgbGVmdC5kb21KSVQgPT0g
cmlnaHQuZG9tSklUOw0KfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERPTUF0dHJp
YnV0ZUFubm90YXRpb24mIGxlZnQsIGNvbnN0IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIHJpZ2h0
KQ0Kew0KICAgIHJldHVybiAhKGxlZnQgPT0gcmlnaHQpOw0KfQ0KDQp9IA0KI2xpbmUgMjQgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
UHJvcGVydHlTbG90LmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcR2V0Vk0uaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjbGFzcyBKU0dsb2JhbE9iamVjdDsNCmNsYXNzIFZNOw0KDQoNClZNJiBnZXRW
TShKU0dsb2JhbE9iamVjdCopOw0KDQp9IA0KI2xpbmUgMjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUHJvcGVydHlTbG90LmgiDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcUHJvcGVydHlOYW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXElkZW50aWZp
ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxQcml2YXRlTmFtZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCmNsYXNzIFByaXZhdGVOYW1lIHsNCnB1YmxpYzoNCiAgICBQcml2YXRlTmFtZSgp
DQogICAgICAgIDogbV91aWQoU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpKQ0KICAgIHsN
CiAgICB9DQoNCiAgICBleHBsaWNpdCBQcml2YXRlTmFtZShTeW1ib2xJbXBsJiB1aWQpDQogICAg
ICAgIDogbV91aWQodWlkKQ0KICAgIHsNCiAgICB9DQoNCiAgICBlbnVtIERlc2NyaXB0aW9uVGFn
IHsgRGVzY3JpcHRpb24gfTsNCiAgICBleHBsaWNpdCBQcml2YXRlTmFtZShEZXNjcmlwdGlvblRh
ZywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikNCiAgICAgICAgOiBtX3VpZChTeW1ib2xJbXBs
OjpjcmVhdGUoKmRlc2NyaXB0aW9uLmltcGwoKSkpDQogICAgew0KICAgIH0NCg0KICAgIGVudW0g
UHJpdmF0ZVN5bWJvbFRhZyB7IFByaXZhdGVTeW1ib2wgfTsNCiAgICBleHBsaWNpdCBQcml2YXRl
TmFtZShQcml2YXRlU3ltYm9sVGFnLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKQ0KICAgICAg
ICA6IG1fdWlkKFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGUoKmRlc2NyaXB0aW9uLmltcGwoKSkp
DQogICAgew0KICAgIH0NCg0KICAgIFByaXZhdGVOYW1lKGNvbnN0IFByaXZhdGVOYW1lJiBwcml2
YXRlTmFtZSkNCiAgICAgICAgOiBtX3VpZChwcml2YXRlTmFtZS5tX3VpZC5jb3B5UmVmKCkpDQog
ICAgew0KICAgIH0NCg0KICAgIFByaXZhdGVOYW1lKFByaXZhdGVOYW1lJiYpID0gZGVmYXVsdDsN
Cg0KICAgIFN5bWJvbEltcGwmIHVpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdWlkOyB9DQoNCiAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVybiAm
dWlkKCkgPT0gJm90aGVyLnVpZCgpOyB9DQogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByaXZh
dGVOYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gJnVpZCgpICE9ICZvdGhlci51aWQoKTsgfQ0K
DQpwcml2YXRlOg0KICAgIFJlZjxTeW1ib2xJbXBsPiBtX3VpZDsNCn07DQoNCn0gDQojbGluZSAy
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxJZGVudGlmaWVyLmgiDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3Mg
Q2FsbEZyYW1lOw0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgaXNJbmRleCh1aW50MzJfdCBpbmRleCkN
CnsNCiAgICByZXR1cm4gaW5kZXggIT0gMHhGRkZGRkZGRlU7DQp9DQoNCnRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4NCl9fZm9yY2VpbmxpbmUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5k
ZXgoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAgICAN
CiAgICBpZiAoIWxlbmd0aCkNCiAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCg0KICAgIA0K
ICAgIHVpbnQzMl90IHZhbHVlID0gY2hhcmFjdGVyc1swXSAtICcwJzsNCiAgICBpZiAodmFsdWUg
PiA5KQ0KICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KDQogICAgDQogICAgDQogICAgaWYg
KCF2YWx1ZSAmJiBsZW5ndGggPiAxKQ0KICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KDQog
ICAgd2hpbGUgKC0tbGVuZ3RoKSB7DQogICAgICAgIA0KICAgICAgICBpZiAodmFsdWUgPiAweEZG
RkZGRkZGVSAvIDEwKQ0KICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCiAgICAgICAg
dmFsdWUgKj0gMTA7DQoNCiAgICAgICAgDQogICAgICAgIHVpbnQzMl90IG5ld1ZhbHVlID0gKigr
K2NoYXJhY3RlcnMpIC0gJzAnOw0KICAgICAgICBpZiAobmV3VmFsdWUgPiA5KQ0KICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCg0KICAgICAgICANCiAgICAgICAgbmV3VmFsdWUgKz0g
dmFsdWU7DQogICAgICAgIGlmIChuZXdWYWx1ZSA8IHZhbHVlKQ0KICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsNCiAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsNCiAgICB9DQoNCiAgICBp
ZiAoIWlzSW5kZXgodmFsdWUpKQ0KICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KICAgIHJl
dHVybiB2YWx1ZTsNCn0NCg0KX19mb3JjZWlubGluZSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJ
bmRleChTdHJpbmdJbXBsJiBpbXBsKQ0Kew0KICAgIGlmIChpbXBsLmlzOEJpdCgpKQ0KICAgICAg
ICByZXR1cm4gcGFyc2VJbmRleChpbXBsLmNoYXJhY3RlcnM4KCksIGltcGwubGVuZ3RoKCkpOw0K
ICAgIHJldHVybiBwYXJzZUluZGV4KGltcGwuY2hhcmFjdGVyczE2KCksIGltcGwubGVuZ3RoKCkp
Ow0KfQ0KDQpjbGFzcyBJZGVudGlmaWVyIHsNCiAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlOw0K
cHVibGljOg0KICAgIElkZW50aWZpZXIoKSB7IH0NCiAgICBlbnVtIEVtcHR5SWRlbnRpZmllckZs
YWcgeyBFbXB0eUlkZW50aWZpZXIgfTsNCiAgICBJZGVudGlmaWVyKEVtcHR5SWRlbnRpZmllckZs
YWcpIDogbV9zdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkgeyAoKHZvaWQpMCk7IH0NCg0KICAg
IGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0NCiAgICBV
bmlxdWVkU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXF1
ZWRTdHJpbmdJbXBsKj4obV9zdHJpbmcuaW1wbCgpKTsgfQ0KDQogICAgaW50IGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9DQoNCiAgICBDU3RyaW5nIGFzY2lpKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuYXNjaWkoKTsgfQ0KICAgIENTdHJpbmcgdXRmOCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLnV0ZjgoKTsgfQ0KDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+DQogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0
cmluZyhWTSYsIGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKTsNCiAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgQVNDSUlMaXRlcmFsKTsNCiAgICBz
dGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3Ro
KTsNCiAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgVUNoYXIqLCBp
bnQgbGVuZ3RoKTsNCiAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3Qg
U3RyaW5nJik7DQogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEF0b21TdHJp
bmdJbXBsKik7DQogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIGNvbnN0IEF0
b21TdHJpbmcmKTsNCiAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgU3lt
Ym9sSW1wbCopOw0KICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBj
aGFyKik7DQogICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIGNvbnN0IFZl
Y3RvcjxMQ2hhcj4mIGNoYXJhY3RlcnMpIHsgcmV0dXJuIGZyb21TdHJpbmcodm0sIGNoYXJhY3Rl
cnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUoKSk7IH0NCg0KICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb21VaWQoVk0mLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsNCiAgICBzdGF0aWMgSWRlbnRp
ZmllciBmcm9tVWlkKGNvbnN0IFByaXZhdGVOYW1lJik7DQogICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbVVpZChTeW1ib2xJbXBsJik7DQoNCiAgICBzdGF0aWMgSWRlbnRpZmllciBjcmVhdGVMQ2hh
ckZyb21VQ2hhcihWTSYgdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IHJldHVybiBJ
ZGVudGlmaWVyKHZtLCBhZGQ4KHZtLCBzLCBsZW5ndGgpKTsgfQ0KDQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oVk0mLCB1bnNpZ25lZCB5KTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIElkZW50aWZpZXIgZnJvbShWTSYsIGludCB5KTsN
CiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIElkZW50aWZpZXIgZnJvbShWTSYsIGRv
dWJsZSB5KTsNCiAgICBfX2ZvcmNlaW5saW5lIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oVk0mIHZt
LCB1aW50NjRfdCB5KQ0KICAgIHsNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90Pih5
KSA9PSB5KQ0KICAgICAgICAgICAgcmV0dXJuIGZyb20odm0sIHN0YXRpY19jYXN0PHVpbnQzMl90
Pih5KSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGZyb20odm0sIHN0YXRp
Y19jYXN0PGRvdWJsZT4oeSkpOw0KICAgIH0NCg0KICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0NCiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0NCiAgICBib29sIGlzU3ltYm9sKCkgY29uc3QgeyBy
ZXR1cm4gIWlzTnVsbCgpICYmIGltcGwoKS0+aXNTeW1ib2woKTsgfQ0KICAgIGJvb2wgaXNQcml2
YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3ltYm9sKCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3Qg
U3ltYm9sSW1wbCo+KGltcGwoKSktPmlzUHJpdmF0ZSgpOyB9DQoNCiAgICBmcmllbmQgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7DQogICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYp
Ow0KDQogICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
TENoYXIqKTsNCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBjaGFyKik7DQogICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgTENoYXIqKTsNCiAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBjaGFyKik7DQoNCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJp
bmdJbXBsKiwgY29uc3QgTENoYXIqKTsNCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29u
c3QgU3RyaW5nSW1wbCphLCBjb25zdCBjaGFyKmIpIHsgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFs
KGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH07DQogICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3Ro
KTsNCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIq
LCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0lt
cGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIDo6ZXF1YWwoYSwgYik7IH0NCg0K
ICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFk
ZChWTSYsIGNvbnN0IGNoYXIqKTsNCg0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
Ow0KDQpwcml2YXRlOg0KICAgIFN0cmluZyBtX3N0cmluZzsNCg0KICAgIA0KICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4NCiAgICBJZGVudGlmaWVyKFZNJiB2bSwgY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRkKHZtLCBj
aGFyYWN0ZXJzKSkgeyAoKHZvaWQpMCk7IH0NCg0KICAgIElkZW50aWZpZXIoVk0mIHZtLCBjb25z
dCBMQ2hhciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQodm0sIHMsIGxlbmd0aCkpIHsg
KCh2b2lkKTApOyB9DQogICAgSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQg
bGVuZ3RoKSA6IG1fc3RyaW5nKGFkZCh2bSwgcywgbGVuZ3RoKSkgeyAoKHZvaWQpMCk7IH0NCiAg
ICBJZGVudGlmaWVyKFZNJiwgQXRvbVN0cmluZ0ltcGwqKTsNCiAgICBJZGVudGlmaWVyKFZNJiwg
Y29uc3QgQXRvbVN0cmluZyYpOw0KICAgIElkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBTdHJpbmcm
IHN0cmluZykgOiBtX3N0cmluZyhhZGQodm0sIHN0cmluZy5pbXBsKCkpKSB7ICgodm9pZCkwKTsg
fQ0KICAgIElkZW50aWZpZXIoVk0mIHZtLCBTdHJpbmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRk
KHZtLCByZXApKSB7ICgodm9pZCkwKTsgfQ0KDQogICAgSWRlbnRpZmllcihTeW1ib2xJbXBsJiB1
aWQpDQogICAgICAgIDogbV9zdHJpbmcoJnVpZCkNCiAgICB7DQogICAgfQ0KDQogICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJUeXBlPg0KICAgIF9fZm9yY2VpbmxpbmUgc3RhdGljIHVpbnQzMl90
IHRvVUludDMyRnJvbUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgYm9vbCYgb2spOw0KDQogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgSWRl
bnRpZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYgYikgeyByZXR1cm4gYS5tX3N0cmluZy5pbXBs
KCkgPT0gYi5tX3N0cmluZy5pbXBsKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBJ
ZGVudGlmaWVyJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5tX3N0cmluZy5p
bXBsKCksIGIpOyB9DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBhZGQoVk0mLCBjb25zdCBUKiwgaW50IGxlbmd0aCk7DQogICAgc3RhdGljIFJlZjxT
dHJpbmdJbXBsPiBhZGQ4KFZNJiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsNCiAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gX19mb3JjZWlubGluZSBzdGF0aWMgYm9vbCBjYW5Vc2VTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoVCk7DQoNCiAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkZChWTSYs
IFN0cmluZ0ltcGwqKTsNCg0KDQoNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBfX2RlY2xz
cGVjKG5vcmV0dXJuKSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRBdG9tU3RyaW5nVGFibGUoVk0m
KTsNCiNsaW5lIDIwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxJZGVudGlmaWVyLmgiDQp9Ow0KDQp0ZW1wbGF0ZSA8PiBfX2ZvcmNl
aW5saW5lIGJvb2wgSWRlbnRpZmllcjo6Y2FuVXNlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKExDaGFy
KQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KdGVtcGxhdGUgPD4g
X19mb3JjZWlubGluZSBib29sIElkZW50aWZpZXI6OmNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhVQ2hhciBjKQ0Kew0KICAgIHJldHVybiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcp
Ow0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NClJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVy
OjphZGQoVk0mIHZtLCBjb25zdCBUKiBzLCBpbnQgbGVuZ3RoKQ0Kew0KICAgIGlmIChsZW5ndGgg
PT0gMSkgew0KICAgICAgICBUIGMgPSBzWzBdOw0KICAgICAgICBpZiAoY2FuVXNlU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGMpKQ0KICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5n
bGVDaGFyYWN0ZXJTdHJpbmdSZXAoYyk7DQogICAgfQ0KICAgIGlmICghbGVuZ3RoKQ0KICAgICAg
ICByZXR1cm4gKlN0cmluZ0ltcGw6OmVtcHR5KCk7DQoNCiAgICByZXR1cm4gKkF0b21TdHJpbmdJ
bXBsOjphZGQocywgbGVuZ3RoKTsNCn0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
ZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQ0Kew0KICAgIHJldHVybiBJZGVudGlm
aWVyOjplcXVhbChhLCBiKTsNCn0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVu
dGlmaWVyJiBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQ0Kew0KICAgIHJldHVybiAhSWRlbnRpZmll
cjo6ZXF1YWwoYSwgYik7DQp9DQoNCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRp
ZmllciYgYSwgY29uc3QgTENoYXIqIGIpDQp7DQogICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFs
KGEsIGIpOw0KfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEs
IGNvbnN0IGNoYXIqIGIpDQp7DQogICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7DQp9DQoNCmlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgTENoYXIqIGIpDQp7DQogICAgcmV0dXJuICFJ
ZGVudGlmaWVyOjplcXVhbChhLCBiKTsNCn0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJZGVudGlmaWVyJiBhLCBjb25zdCBjaGFyKiBiKQ0Kew0KICAgIHJldHVybiAhSWRlbnRpZmll
cjo6ZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsNCn0NCg0KaW5s
aW5lIGJvb2wgSWRlbnRpZmllcjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwgY29uc3QgTENo
YXIqIHMpDQp7DQogICAgcmV0dXJuIFdURjo6ZXF1YWwociwgcyk7DQp9DQoNCmlubGluZSBib29s
IElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIHIsIGNvbnN0IExDaGFyKiBzLCB1
bnNpZ25lZCBsZW5ndGgpDQp7DQogICAgcmV0dXJuIFdURjo6ZXF1YWwociwgcywgbGVuZ3RoKTsN
Cn0NCg0KaW5saW5lIGJvb2wgSWRlbnRpZmllcjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwg
Y29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAgICByZXR1cm4gV1RGOjplcXVh
bChyLCBzLCBsZW5ndGgpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIE9wdGlvbmFsPHVpbnQzMl90PiBw
YXJzZUluZGV4KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpDQp7DQogICAgYXV0byB1aWQg
PSBpZGVudGlmaWVyLmltcGwoKTsNCiAgICBpZiAoIXVpZCkNCiAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsNCiAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQ0KICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0Ow0KICAgIHJldHVybiBwYXJzZUluZGV4KCp1aWQpOw0KfQ0KDQpKU1ZhbHVlIGlkZW50
aWZpZXJUb0pTVmFsdWUoVk0mLCBjb25zdCBJZGVudGlmaWVyJik7DQoNCg0KSlNWYWx1ZSBpZGVu
dGlmaWVyVG9TYWZlUHVibGljSlNWYWx1ZShWTSYsIGNvbnN0IElkZW50aWZpZXImKTsNCg0KDQoN
Cg0KDQpzdHJ1Y3QgSWRlbnRpZmllclJlcEhhc2ggOiBQdHJIYXNoPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4+IHsNCiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBrZXkpIHsgcmV0dXJuIGtleS0+ZXhpc3RpbmdTeW1ib2xBd2FyZUhhc2go
KTsgfQ0KICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpIHsg
cmV0dXJuIGtleS0+ZXhpc3RpbmdTeW1ib2xBd2FyZUhhc2goKTsgfQ0KfTsNCg0Kc3RydWN0IElk
ZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPGludD4gew0KICAgIHN0YXRp
YyBpbnQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCk7IH0NCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZhbHNl
Ow0KfTsNCg0KdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50
aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0Ow0KdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50
aWZpZXJNYXA7DQp0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQsIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsKj4sIElkZW50aWZpZXJN
YXBJbmRleEhhc2hUcmFpdHM+IEJvcnJvd2VkSWRlbnRpZmllck1hcDsNCg0KfSANCg0KbmFtZXNw
YWNlIFdURiB7DQoNCnRlbXBsYXRlIDw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpJZGVudGlm
aWVyPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsNCg0KfSANCiNsaW5lIDI5ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFBy
b3BlcnR5TmFtZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQXJnTGlzdDsNCmNsYXNzIENhbGxGcmFt
ZTsNCmNsYXNzIEpTT2JqZWN0Ow0KDQoNCg0KDQpleHRlcm4gY29uc3QgQVNDSUlMaXRlcmFsIE9i
amVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvcjsNCg0KRW5jb2RlZEpTVmFsdWUg
IGdsb2JhbEZ1bmNFdmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQpFbmNvZGVkSlNW
YWx1ZSAgZ2xvYmFsRnVuY1BhcnNlSW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQpF
bmNvZGVkSlNWYWx1ZSAgZ2xvYmFsRnVuY1BhcnNlRmxvYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsNCkVuY29kZWRKU1ZhbHVlICBnbG9iYWxGdW5jRGVjb2RlVVJJKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7DQpFbmNvZGVkSlNWYWx1ZSAgZ2xvYmFsRnVuY0RlY29kZVVSSUNv
bXBvbmVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFsdWUgIGds
b2JhbEZ1bmNFbmNvZGVVUkkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCkVuY29kZWRK
U1ZhbHVlICBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7DQpFbmNvZGVkSlNWYWx1ZSAgZ2xvYmFsRnVuY0VzY2FwZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFsdWUgIGdsb2JhbEZ1bmNVbmVzY2FwZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFsdWUgIGdsb2JhbEZ1bmNUaHJv
d1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFsdWUg
IGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFsdWUgIGdsb2JhbEZ1bmNNYWtlVHlw
ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQpFbmNvZGVkSlNWYWx1ZSAgZ2xv
YmFsRnVuY1Byb3RvR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQpFbmNvZGVk
SlNWYWx1ZSAgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7DQpFbmNvZGVkSlNWYWx1ZSAgZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tl
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFsdWUgIGdsb2JhbEZ1
bmNCdWlsdGluTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQpFbmNvZGVkSlNWYWx1
ZSAgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Ow0KRW5jb2RlZEpTVmFsdWUgIGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsNCkVuY29kZWRKU1ZhbHVlICBnbG9iYWxGdW5jUHJvcGVydHlJc0VudW1l
cmFibGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCkVuY29kZWRKU1ZhbHVlICBnbG9i
YWxGdW5jT3duS2V5cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFs
dWUgIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Ow0KDQpkb3VibGUganNUb051bWJlcihTdHJpbmdWaWV3KTsNCg0KfSANCiNsaW5lIDMwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFBy
b3BlcnR5TmFtZS5oIg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL2R0b2EuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL2R0b2EvZG91
YmxlLWNvbnZlcnNpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL2R0b2EvdXRpbHMuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9kdG9hL3V0aWxzLmgiDQoNCg0KDQoNCg0KI2xpbmUgNDQgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL2R0b2EvdXRp
bHMuaCINCiNsaW5lIDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9kdG9hL3V0aWxzLmgiDQoNCg0Kdm9pZCBfX2RlY2xzcGVjKG5vcmV0
dXJuKSBhYm9ydF9ub3JldHVybigpOw0KaW5saW5lIHZvaWQgYWJvcnRfbm9yZXR1cm4oKSB7IGFi
b3J0KCk7IH0NCg0KDQoNCiNsaW5lIDUzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9kdG9hL3V0aWxzLmgiDQojbGluZSA1NCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvZHRvYS91
dGlscy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTA5ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9kdG9hL3V0aWxz
LmgiDQoNCg0KDQp0eXBlZGVmIHNpZ25lZCBjaGFyIGludDhfdDsNCnR5cGVkZWYgdW5zaWduZWQg
Y2hhciB1aW50OF90Ow0KdHlwZWRlZiBzaG9ydCBpbnQxNl90OyAgDQp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IHVpbnQxNl90OyAgDQp0eXBlZGVmIGludCBpbnQzMl90Ow0KdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdWludDMyX3Q7DQp0eXBlZGVmIF9faW50NjQgaW50NjRfdDsNCnR5cGVkZWYgdW5zaWdu
ZWQgX19pbnQ2NCB1aW50NjRfdDsNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvZHRvYS91dGlscy5o
Ig0KDQp0eXBlZGVmIHVpbnQxNl90IHVjMTY7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojbGluZSAxNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxc
SGVhZGVyc1xcd3RmL2R0b2EvdXRpbHMuaCINCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTUzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9kdG9h
L3V0aWxzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTY1ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9kdG9hL3V0aWxzLmgi
DQoNCm5hbWVzcGFjZSBXVEYgew0KbmFtZXNwYWNlIGRvdWJsZV9jb252ZXJzaW9uIHsNCg0Kc3Rh
dGljIGNvbnN0IGludCBrQ2hhclNpemUgPSBzaXplb2YoY2hhcik7DQoNCg0KdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+DQpzdGF0aWMgVCBNYXgoVCBhLCBUIGIpIHsNCiAgcmV0dXJuIGEgPCBiID8gYiA6
IGE7DQp9DQoNCg0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCnN0YXRpYyBUIE1pbihUIGEsIFQg
Yikgew0KICByZXR1cm4gYSA8IGIgPyBhIDogYjsNCn0NCg0KDQppbmxpbmUgaW50IFN0ckxlbmd0
aChjb25zdCBjaGFyKiBzdHJpbmcpIHsNCiAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihzdHJpbmcp
Ow0KICAoKHZvaWQpMCk7DQogIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCk7DQp9DQoN
Cg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+DQpjbGFzcyBCdWZmZXJSZWZlcmVuY2Ugew0KIHB1Ymxp
YzoNCiAgQnVmZmVyUmVmZXJlbmNlKCkgOiBzdGFydF8obnVsbHB0ciksIGxlbmd0aF8oMCkge30N
CiAgQnVmZmVyUmVmZXJlbmNlKFQqIGRhdGEsIGludCBsZW4pIDogc3RhcnRfKGRhdGEpLCBsZW5n
dGhfKGxlbikgew0KICAgICgodm9pZCkwKTsNCiAgfQ0KDQogIA0KICANCiAgQnVmZmVyUmVmZXJl
bmNlPFQ+IFN1YkJ1ZmZlclJlZmVyZW5jZShpbnQgZnJvbSwgaW50IHRvKSB7DQogICAgKCh2b2lk
KTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIEJ1ZmZlclJl
ZmVyZW5jZTxUPihzdGFydCgpICsgZnJvbSwgdG8gLSBmcm9tKTsNCiAgfQ0KDQogIA0KICBpbnQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQ0KDQogIA0KICBib29sIGlzX2VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXyA9PSAwOyB9DQoNCiAgDQogIFQqIHN0YXJ0KCkgY29u
c3QgeyByZXR1cm4gc3RhcnRfOyB9DQoNCiAgDQogIFQmIG9wZXJhdG9yW10oaW50IGluZGV4KSBj
b25zdCB7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBzdGFydF9baW5kZXhdOw0KICB9DQoN
CiAgVCYgZmlyc3QoKSB7IHJldHVybiBzdGFydF9bMF07IH0NCg0KICBUJiBsYXN0KCkgeyByZXR1
cm4gc3RhcnRfW2xlbmd0aF8gLSAxXTsgfQ0KDQogcHJpdmF0ZToNCiAgVCogc3RhcnRfOw0KICBp
bnQgbGVuZ3RoXzsNCn07DQoNCg0KDQoNCg0KY2xhc3MgU3RyaW5nQnVpbGRlciB7DQogcHVibGlj
Og0KICBTdHJpbmdCdWlsZGVyKGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmZlcl9zaXplKQ0KICAgICAg
OiBidWZmZXJfKGJ1ZmZlciwgYnVmZmVyX3NpemUpLCBwb3NpdGlvbl8oMCkgeyB9DQoNCiAgflN0
cmluZ0J1aWxkZXIoKSB7IGlmICghaXNfZmluYWxpemVkKCkpIEZpbmFsaXplKCk7IH0NCg0KICBp
bnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlcl8ubGVuZ3RoKCk7IH0NCg0KICANCiAgaW50
IHBvc2l0aW9uKCkgY29uc3Qgew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gcG9zaXRpb25f
Ow0KICB9DQoNCiAgDQogIHZvaWQgUmVzZXQoKSB7IHBvc2l0aW9uXyA9IDA7IH0NCg0KICANCiAg
DQogIA0KICB2b2lkIEFkZENoYXJhY3RlcihjaGFyIGMpIHsNCiAgICAoKHZvaWQpMCk7DQogICAg
KCh2b2lkKTApOw0KICAgIGJ1ZmZlcl9bcG9zaXRpb25fKytdID0gYzsNCiAgfQ0KDQogIA0KICAN
CiAgdm9pZCBBZGRTdHJpbmcoY29uc3QgY2hhciogcykgew0KICAgIEFkZFN1YnN0cmluZyhzLCBT
dHJMZW5ndGgocykpOw0KICB9DQoNCiAgDQogIA0KICB2b2lkIEFkZFN1YnN0cmluZyhjb25zdCBj
aGFyKiBzLCBpbnQgbikgew0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgbWVt
bW92ZSgmYnVmZmVyX1twb3NpdGlvbl9dLCBzLCBuICoga0NoYXJTaXplKTsNCiAgICBwb3NpdGlv
bl8gKz0gbjsNCiAgfQ0KDQoNCiAgDQogIA0KICB2b2lkIEFkZFBhZGRpbmcoY2hhciBjLCBpbnQg
Y291bnQpIHsNCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsNCiAgICAgIEFk
ZENoYXJhY3RlcihjKTsNCiAgICB9DQogIH0NCg0KICB2b2lkIFJlbW92ZUNoYXJhY3RlcnMoaW50
IHN0YXJ0LCBpbnQgZW5kKSB7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAo
KHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIHN0ZDo6bWVtbW92ZSgmYnVmZmVyX1tzdGFy
dF0sICZidWZmZXJfW2VuZF0sIHBvc2l0aW9uXyAtIGVuZCk7DQogICAgcG9zaXRpb25fIC09IGVu
ZCAtIHN0YXJ0Ow0KICB9DQoNCiAgDQogIGNoYXIqIEZpbmFsaXplKCkgew0KICAgICgodm9pZCkw
KTsNCiAgICBidWZmZXJfW3Bvc2l0aW9uX10gPSAnXDAnOw0KICAgIA0KICAgIA0KICAgICgodm9p
ZCkwKTsNCiAgICBwb3NpdGlvbl8gPSAtMTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIGJ1
ZmZlcl8uc3RhcnQoKTsNCiAgfQ0KDQogcHJpdmF0ZToNCiAgQnVmZmVyUmVmZXJlbmNlPGNoYXI+
IGJ1ZmZlcl87DQogIGludCBwb3NpdGlvbl87DQoNCiAgYm9vbCBpc19maW5hbGl6ZWQoKSBjb25z
dCB7IHJldHVybiBwb3NpdGlvbl8gPCAwOyB9DQoNCiAgU3RyaW5nQnVpbGRlcigpOyBTdHJpbmdC
dWlsZGVyKGNvbnN0IFN0cmluZ0J1aWxkZXImKTsgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3RyaW5n
QnVpbGRlciYpOw0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdGVtcGxhdGUgPGNsYXNzIERlc3QsIGNsYXNzIFNvdXJjZT4NCmlubGluZSBEZXN0
IEJpdENhc3QoY29uc3QgU291cmNlJiBzb3VyY2UpIHsNCiAgDQogIA0KDQoNCg0KI2xpbmUgMzUw
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9kdG9hL3V0aWxzLmgiDQogIHR5cGVkZWYgY2hhciBWZXJpZnlTaXplc0FyZUVxdWFsW3NpemVv
ZihEZXN0KSA9PSBzaXplb2YoU291cmNlKSA/IDEgOiAtMV07DQojbGluZSAzNTIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL2R0b2EvdXRp
bHMuaCINCg0KICBEZXN0IGRlc3Q7DQogIG1lbW1vdmUoJmRlc3QsICZzb3VyY2UsIHNpemVvZihk
ZXN0KSk7DQogIHJldHVybiBkZXN0Ow0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgRGVzdCwgY2xhc3Mg
U291cmNlPg0KaW5saW5lIERlc3QgQml0Q2FzdChTb3VyY2UqIHNvdXJjZSkgew0KICByZXR1cm4g
Qml0Q2FzdDxEZXN0PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc291cmNlKSk7DQp9DQoN
Cn0gIA0KfSAgDQoNCiNsaW5lIDM2NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvZHRvYS91dGlscy5oIg0KI2xpbmUgMzIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL2R0b2EvZG91
YmxlLWNvbnZlcnNpb24uaCINCg0KbmFtZXNwYWNlIFdURiB7DQpuYW1lc3BhY2UgZG91YmxlX2Nv
bnZlcnNpb24gew0KDQpjbGFzcyBEb3VibGVUb1N0cmluZ0NvbnZlcnRlciB7DQogcHVibGljOg0K
ICANCiAgDQogIA0KICBzdGF0aWMgY29uc3QgaW50IGtNYXhGaXhlZERpZ2l0c0JlZm9yZVBvaW50
ID0gMjE7DQogIHN0YXRpYyBjb25zdCBpbnQga01heEZpeGVkRGlnaXRzQWZ0ZXJQb2ludCA9IDEw
MDsNCg0KICANCiAgDQogIHN0YXRpYyBjb25zdCBpbnQga01heEV4cG9uZW50aWFsRGlnaXRzID0g
MTAwOw0KDQogIA0KICANCiAgDQogIHN0YXRpYyBjb25zdCBpbnQga01pblByZWNpc2lvbkRpZ2l0
cyA9IDE7DQogIHN0YXRpYyBjb25zdCBpbnQga01heFByZWNpc2lvbkRpZ2l0cyA9IDEwMDsNCg0K
ICBlbnVtIEZsYWdzIHsNCiAgICBOT19GTEFHUyA9IDAsDQogICAgRU1JVF9QT1NJVElWRV9FWFBP
TkVOVF9TSUdOID0gMSwNCiAgICBFTUlUX1RSQUlMSU5HX0RFQ0lNQUxfUE9JTlQgPSAyLA0KICAg
IEVNSVRfVFJBSUxJTkdfWkVST19BRlRFUl9QT0lOVCA9IDQsDQogICAgVU5JUVVFX1pFUk8gPSA4
DQogIH07DQoNCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICAN
CiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0K
ICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQog
IA0KICANCiAgDQogIA0KICANCiAgDQogIERvdWJsZVRvU3RyaW5nQ29udmVydGVyKGludCBmbGFn
cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogaW5maW5pdHlfc3ltYm9s
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW5fc3ltYm9sLA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGV4cG9uZW50X2NoYXJhY3RlciwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGRlY2ltYWxfaW5fc2hvcnRlc3RfbG93LA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZGVjaW1hbF9pbl9zaG9ydGVzdF9oaWdoLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbWF4X2xlYWRpbmdfcGFkZGluZ196ZXJvZXNfaW5fcHJlY2lz
aW9uX21vZGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhfdHJhaWxpbmdfcGFk
ZGluZ196ZXJvZXNfaW5fcHJlY2lzaW9uX21vZGUpDQogICAgICA6IGZsYWdzXyhmbGFncyksDQog
ICAgICAgIGluZmluaXR5X3N5bWJvbF8oaW5maW5pdHlfc3ltYm9sKSwNCiAgICAgICAgbmFuX3N5
bWJvbF8obmFuX3N5bWJvbCksDQogICAgICAgIGV4cG9uZW50X2NoYXJhY3Rlcl8oZXhwb25lbnRf
Y2hhcmFjdGVyKSwNCiAgICAgICAgZGVjaW1hbF9pbl9zaG9ydGVzdF9sb3dfKGRlY2ltYWxfaW5f
c2hvcnRlc3RfbG93KSwNCiAgICAgICAgZGVjaW1hbF9pbl9zaG9ydGVzdF9oaWdoXyhkZWNpbWFs
X2luX3Nob3J0ZXN0X2hpZ2gpLA0KICAgICAgICBtYXhfbGVhZGluZ19wYWRkaW5nX3plcm9lc19p
bl9wcmVjaXNpb25fbW9kZV8oDQogICAgICAgICAgICBtYXhfbGVhZGluZ19wYWRkaW5nX3plcm9l
c19pbl9wcmVjaXNpb25fbW9kZSksDQogICAgICAgIG1heF90cmFpbGluZ19wYWRkaW5nX3plcm9l
c19pbl9wcmVjaXNpb25fbW9kZV8oDQogICAgICAgICAgICBtYXhfdHJhaWxpbmdfcGFkZGluZ196
ZXJvZXNfaW5fcHJlY2lzaW9uX21vZGUpIHsNCiAgICANCiAgICANCiAgICAoKHZvaWQpMCk7DQoj
bGluZSAxMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVh
ZGVyc1xcd3RmL2R0b2EvZG91YmxlLWNvbnZlcnNpb24uaCINCiAgfQ0KDQogIA0KICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgc3RhdGljIGNvbnN0IERvdWJsZVRvU3RyaW5nQ29udmVydGVyJiBFY21h
U2NyaXB0Q29udmVydGVyKCk7DQoNCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICAN
CiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0K
ICBib29sIFRvU2hvcnRlc3QoZG91YmxlIHZhbHVlLCBTdHJpbmdCdWlsZGVyKiByZXN1bHRfYnVp
bGRlcikgY29uc3Qgew0KICAgIHJldHVybiBUb1Nob3J0ZXN0SWVlZU51bWJlcih2YWx1ZSwgcmVz
dWx0X2J1aWxkZXIsIFNIT1JURVNUKTsNCiAgfQ0KDQogIA0KICBib29sIFRvU2hvcnRlc3RTaW5n
bGUoZmxvYXQgdmFsdWUsIFN0cmluZ0J1aWxkZXIqIHJlc3VsdF9idWlsZGVyKSBjb25zdCB7DQog
ICAgcmV0dXJuIFRvU2hvcnRlc3RJZWVlTnVtYmVyKHZhbHVlLCByZXN1bHRfYnVpbGRlciwgU0hP
UlRFU1RfU0lOR0xFKTsNCiAgfQ0KDQoNCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0K
ICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQog
IA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgYm9vbCBUb0ZpeGVk
KGRvdWJsZSB2YWx1ZSwNCiAgICAgICAgICAgICAgIGludCByZXF1ZXN0ZWRfZGlnaXRzLA0KICAg
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciogcmVzdWx0X2J1aWxkZXIpIGNvbnN0Ow0KDQogIA0K
ICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQog
IA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgYm9vbCBUb0V4cG9uZW50aWFsKGRvdWJsZSB2YWx1ZSwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVxdWVzdGVkX2RpZ2l0cywN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyKiBy
ZXN1bHRfYnVpbGRlcikgY29uc3Q7DQoNCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0K
ICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQog
IA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIGJvb2wgVG9Q
cmVjaXNpb24oZG91YmxlIHZhbHVlLA0KICAgICAgICAgICAgICAgICAgIGludCBwcmVjaXNpb24s
DQogICAgICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciogcmVzdWx0X2J1aWxkZXIpIGNvbnN0
Ow0KDQogIGVudW0gRHRvYU1vZGUgew0KICAgIA0KICAgIA0KICAgIA0KICAgIFNIT1JURVNULA0K
ICAgIA0KICAgIFNIT1JURVNUX1NJTkdMRSwNCiAgICANCiAgICANCiAgICANCiAgICBGSVhFRCwN
CiAgICANCiAgICBQUkVDSVNJT04NCiAgfTsNCg0KICANCiAgDQogIA0KICANCiAgDQogIA0KICBz
dGF0aWMgY29uc3QgaW50IGtCYXNlMTBNYXhpbWFsTGVuZ3RoID0gMTc7DQoNCiAgDQogIA0KICAN
CiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0K
ICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQog
IA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQogIHN0YXRpYyB2
b2lkIERvdWJsZVRvQXNjaWkoZG91YmxlIHYsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
RHRvYU1vZGUgbW9kZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVxdWVzdGVk
X2RpZ2l0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBidWZmZXIsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmZlcl9sZW5ndGgsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCogc2lnbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQqIGxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHBvaW50KTsNCg0K
IHByaXZhdGU6DQogIA0KICBib29sIFRvU2hvcnRlc3RJZWVlTnVtYmVyKGRvdWJsZSB2YWx1ZSwN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyKiByZXN1bHRfYnVpbGRl
ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdG9hTW9kZSBtb2RlKSBjb25zdDsNCg0K
ICANCiAgDQogIA0KICANCiAgYm9vbCBIYW5kbGVTcGVjaWFsVmFsdWVzKGRvdWJsZSB2YWx1ZSwg
U3RyaW5nQnVpbGRlciogcmVzdWx0X2J1aWxkZXIpIGNvbnN0Ow0KICANCiAgDQogIHZvaWQgQ3Jl
YXRlRXhwb25lbnRpYWxSZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBkZWNpbWFsX2RpZ2l0cywN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwb25lbnQsDQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyKiByZXN1bHRfYnVp
bGRlcikgY29uc3Q7DQogIA0KICB2b2lkIENyZWF0ZURlY2ltYWxSZXByZXNlbnRhdGlvbihjb25z
dCBjaGFyKiBkZWNpbWFsX2RpZ2l0cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRl
Y2ltYWxfcG9pbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaWdp
dHNfYWZ0ZXJfcG9pbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIqIHJlc3VsdF9idWlsZGVyKSBjb25zdDsNCg0KICBjb25zdCBpbnQgZmxhZ3NfOw0K
ICBjb25zdCBjaGFyKiBjb25zdCBpbmZpbml0eV9zeW1ib2xfOw0KICBjb25zdCBjaGFyKiBjb25z
dCBuYW5fc3ltYm9sXzsNCiAgY29uc3QgY2hhciBleHBvbmVudF9jaGFyYWN0ZXJfOw0KICBjb25z
dCBpbnQgZGVjaW1hbF9pbl9zaG9ydGVzdF9sb3dfOw0KICBjb25zdCBpbnQgZGVjaW1hbF9pbl9z
aG9ydGVzdF9oaWdoXzsNCiAgY29uc3QgaW50IG1heF9sZWFkaW5nX3BhZGRpbmdfemVyb2VzX2lu
X3ByZWNpc2lvbl9tb2RlXzsNCiAgY29uc3QgaW50IG1heF90cmFpbGluZ19wYWRkaW5nX3plcm9l
c19pbl9wcmVjaXNpb25fbW9kZV87DQoNCiAgRG91YmxlVG9TdHJpbmdDb252ZXJ0ZXIoKTsgRG91
YmxlVG9TdHJpbmdDb252ZXJ0ZXIoY29uc3QgRG91YmxlVG9TdHJpbmdDb252ZXJ0ZXImKTsgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgRG91YmxlVG9TdHJpbmdDb252ZXJ0ZXImKTsNCn07DQoNCg0KY2xh
c3MgU3RyaW5nVG9Eb3VibGVDb252ZXJ0ZXIgew0KIHB1YmxpYzoNCiAgDQogIA0KICANCiAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBkb3VibGUgU3RyaW5nVG9Eb3VibGUoY29uc3QgY2hh
ciogYnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QqIHByb2Nlc3NlZF9jaGFyYWN0ZXJzX2NvdW50KTsNCg0KICAN
CiAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBkb3VibGUgU3RyaW5nVG9Eb3VibGUoY29u
c3QgdWMxNiogYnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGVuZ3RoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QqIHByb2Nlc3NlZF9jaGFyYWN0ZXJzX2NvdW50KTsN
Cg0KICANCiAgDQogIA0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIGZsb2F0IFN0cmlu
Z1RvRmxvYXQoY29uc3QgY2hhciogYnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogcHJvY2Vzc2VkX2NoYXJhY3RlcnNf
Y291bnQpOw0KDQogIA0KICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIGZsb2F0IFN0cmlu
Z1RvRmxvYXQoY29uc3QgdWMxNiogYnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCogcHJvY2Vzc2VkX2NoYXJhY3RlcnNf
Y291bnQpOw0KDQogcHJpdmF0ZToNCiAgU3RyaW5nVG9Eb3VibGVDb252ZXJ0ZXIoKTsgU3RyaW5n
VG9Eb3VibGVDb252ZXJ0ZXIoY29uc3QgU3RyaW5nVG9Eb3VibGVDb252ZXJ0ZXImKTsgdm9pZCBv
cGVyYXRvcj0oY29uc3QgU3RyaW5nVG9Eb3VibGVDb252ZXJ0ZXImKTsNCn07DQoNCn0gIA0KfSAg
DQoNCiNsaW5lIDQyMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvZHRvYS9kb3VibGUtY29udmVyc2lvbi5oIg0KI2xpbmUgMjYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL2R0b2Eu
aCINCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdXNpbmcgTnVtYmVyVG9TdHJpbmdCdWZmZXIgPSBz
dGQ6OmFycmF5PGNoYXIsIDEyMz47DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25zdCBjaGFy
KiBudW1iZXJUb1N0cmluZyhmbG9hdCwgTnVtYmVyVG9TdHJpbmdCdWZmZXImKTsNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBjb25zdCBjaGFyKiBudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKGZs
b2F0LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIE51bWJlclRvU3RyaW5nQnVmZmVyJiwg
Ym9vbCB0cnVuY2F0ZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKGZsb2F0LCB1bnNpZ25lZCBk
ZWNpbWFsUGxhY2VzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciYpOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgY29uc3QgY2hhciogbnVtYmVyVG9TdHJpbmcoZG91YmxlLCBOdW1iZXJUb1N0cmluZ0J1
ZmZlciYpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNvbnN0IGNoYXIqIG51bWJlclRvRml4ZWRQ
cmVjaXNpb25TdHJpbmcoZG91YmxlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIE51bWJl
clRvU3RyaW5nQnVmZmVyJiwgYm9vbCB0cnVuY2F0ZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5n
KGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcywgTnVtYmVyVG9TdHJpbmdCdWZmZXImKTsN
Cg0KZG91YmxlIHBhcnNlRG91YmxlKGNvbnN0IExDaGFyKiBzdHJpbmcsIHNpemVfdCBsZW5ndGgs
IHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsNCmRvdWJsZSBwYXJzZURvdWJsZShjb25zdCBVQ2hhciog
c3RyaW5nLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QmIHBhcnNlZExlbmd0aCk7DQpkb3VibGUgcGFy
c2VEb3VibGUoU3RyaW5nVmlldywgc2l6ZV90JiBwYXJzZWRMZW5ndGgpOw0KDQpuYW1lc3BhY2Ug
SW50ZXJuYWwgew0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkb3VibGUgcGFyc2VEb3VibGVG
cm9tTG9uZ1N0cmluZyhjb25zdCBVQ2hhciogc3RyaW5nLCBzaXplX3QgbGVuZ3RoLCBzaXplX3Qm
IHBhcnNlZExlbmd0aCk7DQp9DQoNCmlubGluZSBkb3VibGUgcGFyc2VEb3VibGUoY29uc3QgTENo
YXIqIHN0cmluZywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90JiBwYXJzZWRMZW5ndGgpDQp7DQogICAg
cmV0dXJuIGRvdWJsZV9jb252ZXJzaW9uOjpTdHJpbmdUb0RvdWJsZUNvbnZlcnRlcjo6U3RyaW5n
VG9Eb3VibGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nKSwgbGVuZ3RoLCAm
cGFyc2VkTGVuZ3RoKTsNCn0NCg0KaW5saW5lIGRvdWJsZSBwYXJzZURvdWJsZShjb25zdCBVQ2hh
ciogc3RyaW5nLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QmIHBhcnNlZExlbmd0aCkNCnsNCiAgICBj
b25zdCBzaXplX3QgY29udmVyc2lvbkJ1ZmZlclNpemUgPSA2NDsNCiAgICBpZiAobGVuZ3RoID4g
Y29udmVyc2lvbkJ1ZmZlclNpemUpDQogICAgICAgIHJldHVybiBJbnRlcm5hbDo6cGFyc2VEb3Vi
bGVGcm9tTG9uZ1N0cmluZyhzdHJpbmcsIGxlbmd0aCwgcGFyc2VkTGVuZ3RoKTsNCiAgICBMQ2hh
ciBjb252ZXJzaW9uQnVmZmVyW2NvbnZlcnNpb25CdWZmZXJTaXplXTsNCiAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKTsgKytpKQ0KICAgICAgICBjb252ZXJz
aW9uQnVmZmVyW2ldID0gaXNBU0NJSShzdHJpbmdbaV0pID8gc3RyaW5nW2ldIDogMDsNCiAgICBy
ZXR1cm4gcGFyc2VEb3VibGUoY29udmVyc2lvbkJ1ZmZlciwgbGVuZ3RoLCBwYXJzZWRMZW5ndGgp
Ow0KfQ0KDQppbmxpbmUgZG91YmxlIHBhcnNlRG91YmxlKFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXpl
X3QmIHBhcnNlZExlbmd0aCkNCnsNCiAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQ0KICAgICAgICBy
ZXR1cm4gcGFyc2VEb3VibGUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwg
cGFyc2VkTGVuZ3RoKTsNCiAgICByZXR1cm4gcGFyc2VEb3VibGUoc3RyaW5nLmNoYXJhY3RlcnMx
NigpLCBzdHJpbmcubGVuZ3RoKCksIHBhcnNlZExlbmd0aCk7DQp9DQoNCn0gDQoNCnVzaW5nIFdU
Rjo6TnVtYmVyVG9TdHJpbmdCdWZmZXI7DQp1c2luZyBXVEY6Om51bWJlclRvU3RyaW5nOw0KdXNp
bmcgV1RGOjpudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nOw0KdXNpbmcgV1RGOjpudW1iZXJU
b0ZpeGVkV2lkdGhTdHJpbmc7DQp1c2luZyBXVEY6OnBhcnNlRG91YmxlOw0KI2xpbmUgMzMgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
UHJvcGVydHlOYW1lLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBQcm9wZXJ0eU5hbWUg
ew0KcHVibGljOg0KICAgIFByb3BlcnR5TmFtZShVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHlO
YW1lKQ0KICAgICAgICA6IG1faW1wbChwcm9wZXJ0eU5hbWUpDQogICAgew0KICAgIH0NCg0KICAg
IFByb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpDQogICAgICAgIDog
UHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZS5pbXBsKCkpDQogICAgew0KICAgIH0NCg0KICAgIFBy
b3BlcnR5TmFtZShjb25zdCBQcml2YXRlTmFtZSYgcHJvcGVydHlOYW1lKQ0KICAgICAgICA6IG1f
aW1wbCgmcHJvcGVydHlOYW1lLnVpZCgpKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9pbXBsOyB9DQoNCiAgICBib29sIGlzU3ltYm9sKCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiBtX2ltcGwgJiYgbV9pbXBsLT5pc1N5bWJvbCgpOw0KICAgIH0NCg0KICAgIGJvb2wg
aXNQcml2YXRlTmFtZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gaXNTeW1ib2woKSAm
JiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2xJbXBsKj4obV9pbXBsKS0+aXNQcml2YXRlKCk7DQog
ICAgfQ0KDQogICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gbV9pbXBsOw0KICAgIH0NCg0KICAgIEF0b21TdHJpbmdJbXBsKiBwdWJsaWNOYW1l
KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAoIW1faW1wbCB8fCBtX2ltcGwtPmlzU3lt
Ym9sKCkpID8gbnVsbHB0ciA6IHN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4obV9pbXBsKTsN
CiAgICB9DQoNCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QNCiAgICB7DQog
ICAgICAgIGlmIChtX2ltcGwpDQogICAgICAgICAgICBvdXQucHJpbnQobV9pbXBsKTsNCiAgICAg
ICAgZWxzZQ0KICAgICAgICAgICAgb3V0LnByaW50KCI8bnVsbCBwcm9wZXJ0eSBuYW1lPiIpOw0K
ICAgIH0NCg0KcHJpdmF0ZToNCiAgICBVbmlxdWVkU3RyaW5nSW1wbCogbV9pbXBsOw0KfTsNCnN0
YXRpY19hc3NlcnQoc2l6ZW9mKFByb3BlcnR5TmFtZSkgPT0gc2l6ZW9mKFVuaXF1ZWRTdHJpbmdJ
bXBsKiksICJVbmlxdWVkU3RyaW5nSW1wbCogYW5kIFByb3BlcnR5TmFtZSBzaG91bGQgYmUgY29t
cGF0aWJsZSB0byBpbnZva2UgZWFzaWx5IGZyb20gSklUIGNvZGUuIik7DQoNCmlubGluZSBib29s
IG9wZXJhdG9yPT0oUHJvcGVydHlOYW1lIGEsIGNvbnN0IElkZW50aWZpZXImIGIpDQp7DQogICAg
cmV0dXJuIGEudWlkKCkgPT0gYi5pbXBsKCk7DQp9DQoNCmlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSWRlbnRpZmllciYgYSwgUHJvcGVydHlOYW1lIGIpDQp7DQogICAgcmV0dXJuIGEuaW1w
bCgpID09IGIudWlkKCk7DQp9DQoNCmlubGluZSBib29sIG9wZXJhdG9yPT0oUHJvcGVydHlOYW1l
IGEsIFByb3BlcnR5TmFtZSBiKQ0Kew0KICAgIHJldHVybiBhLnVpZCgpID09IGIudWlkKCk7DQp9
DQoNCmlubGluZSBib29sIG9wZXJhdG9yPT0oUHJvcGVydHlOYW1lIGEsIGNvbnN0IGNoYXIqIGIp
DQp7DQogICAgcmV0dXJuIGVxdWFsKGEudWlkKCksIGIpOw0KfQ0KDQppbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVudGlmaWVyJiBiKQ0Kew0KICAgIHJldHVy
biBhLnVpZCgpICE9IGIuaW1wbCgpOw0KfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IElkZW50aWZpZXImIGEsIFByb3BlcnR5TmFtZSBiKQ0Kew0KICAgIHJldHVybiBhLmltcGwoKSAh
PSBiLnVpZCgpOw0KfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KFByb3BlcnR5TmFtZSBhLCBQ
cm9wZXJ0eU5hbWUgYikNCnsNCiAgICByZXR1cm4gYS51aWQoKSAhPSBiLnVpZCgpOw0KfQ0KDQpf
X2ZvcmNlaW5saW5lIE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpDQp7DQogICAgYXV0byB1aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7DQogICAg
aWYgKCF1aWQpDQogICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7DQogICAgaWYgKHVpZC0+aXNT
eW1ib2woKSkNCiAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCiAgICByZXR1cm4gcGFyc2VJ
bmRleCgqdWlkKTsNCn0NCg0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgaXNDYW5vbmljYWxOdW1lcmlj
SW5kZXhTdHJpbmcoY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpDQp7DQogICAgU3Ry
aW5nSW1wbCogcHJvcGVydHkgPSBwcm9wZXJ0eU5hbWUudWlkKCk7DQogICAgaWYgKCFwcm9wZXJ0
eSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIGlmIChwcm9wZXJ0eS0+aXNTeW1ib2woKSkN
CiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIGlmIChlcXVhbChwcm9wZXJ0eSwgIi0wIikpDQog
ICAgICAgIHJldHVybiB0cnVlOw0KICAgIGRvdWJsZSBpbmRleCA9IGpzVG9OdW1iZXIocHJvcGVy
dHkpOw0KICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsNCiAgICBjb25zdCBjaGFyKiBp
bmRleFN0cmluZyA9IFdURjo6bnVtYmVyVG9TdHJpbmcoaW5kZXgsIGJ1ZmZlcik7DQogICAgaWYg
KCFlcXVhbChwcm9wZXJ0eSwgaW5kZXhTdHJpbmcpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgcmV0dXJuIHRydWU7DQp9DQoNCn0gDQojbGluZSAyOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxQcm9wZXJ0eVNsb3QuaCINCg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxTY29wZU9mZnNldC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxHZW5lcmljT2Zm
c2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBUPg0KY2xhc3MgR2VuZXJpY09mZnNldCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9p
ZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsg
cHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
byA9IGludDsNCnB1YmxpYzoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludmFsaWRP
ZmZzZXQgPSAweGZmZmZmZmZmOw0KICAgIA0KICAgIEdlbmVyaWNPZmZzZXQoKQ0KICAgICAgICA6
IG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpDQogICAgew0KICAgIH0NCiAgICANCiAgICBleHBsaWNp
dCBHZW5lcmljT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkNCiAgICAgICAgOiBtX29mZnNldChvZmZz
ZXQpDQogICAgew0KICAgIH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuIG1fb2Zmc2V0ID09IGludmFsaWRPZmZzZXQ7IH0NCiAgICANCiAgICB1bnNpZ25lZCBvZmZz
ZXRVbmNoZWNrZWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fb2Zmc2V0Ow0KICAg
IH0NCiAgICANCiAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICByZXR1cm4gbV9vZmZzZXQ7DQogICAgfQ0KICAgIA0KICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBt
X29mZnNldCA9PSBvdGhlci5vZmZzZXRVbmNoZWNrZWQoKTsNCiAgICB9DQogICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFQmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fb2Zm
c2V0ICE9IG90aGVyLm9mZnNldFVuY2hlY2tlZCgpOw0KICAgIH0NCiAgICBib29sIG9wZXJhdG9y
PChjb25zdCBUJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX29mZnNldCA8
IG90aGVyLm9mZnNldFVuY2hlY2tlZCgpOw0KICAgIH0NCiAgICBib29sIG9wZXJhdG9yPihjb25z
dCBUJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX29mZnNldCA+IG90aGVy
Lm9mZnNldFVuY2hlY2tlZCgpOw0KICAgIH0NCiAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYg
b3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9vZmZzZXQgPD0gb3RoZXIub2Zm
c2V0VW5jaGVja2VkKCk7DQogICAgfQ0KICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiBvdGhl
cikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX29mZnNldCA+PSBvdGhlci5vZmZzZXRV
bmNoZWNrZWQoKTsNCiAgICB9DQogICAgDQogICAgVCBvcGVyYXRvcisoaW50IHZhbHVlKSBjb25z
dA0KICAgIHsNCiAgICAgICAgcmV0dXJuIFQob2Zmc2V0KCkgKyB2YWx1ZSk7DQogICAgfQ0KICAg
IFQgb3BlcmF0b3ItKGludCB2YWx1ZSkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBUKG9m
ZnNldCgpIC0gdmFsdWUpOw0KICAgIH0NCiAgICBUJiBvcGVyYXRvcis9KGludCB2YWx1ZSkNCiAg
ICB7DQogICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8VCo+KHRoaXMpID0gKnRoaXMgKyB2YWx1
ZTsNCiAgICB9DQogICAgVCYgb3BlcmF0b3ItPShpbnQgdmFsdWUpDQogICAgew0KICAgICAgICBy
ZXR1cm4gKnN0YXRpY19jYXN0PFQqPih0aGlzKSA9ICp0aGlzIC0gdmFsdWU7DQogICAgfQ0KICAg
IA0KcHJpdmF0ZToNCiAgICB1bnNpZ25lZCBtX29mZnNldDsNCn07DQoNCn0gDQojbGluZSAyOSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxTY29wZU9mZnNldC5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KY2xhc3MgU2NvcGVP
ZmZzZXQgOiBwdWJsaWMgR2VuZXJpY09mZnNldDxTY29wZU9mZnNldD4gew0KcHVibGljOg0KICAg
IFNjb3BlT2Zmc2V0KCkgeyB9DQogICAgDQogICAgZXhwbGljaXQgU2NvcGVPZmZzZXQodW5zaWdu
ZWQgb2Zmc2V0KQ0KICAgICAgICA6IEdlbmVyaWNPZmZzZXQob2Zmc2V0KQ0KICAgIHsNCiAgICB9
DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7DQp9Ow0KDQp9IA0KI2xp
bmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcUHJvcGVydHlTbG90LmgiDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCmNsYXNzIEdl
dHRlclNldHRlcjsNCmNsYXNzIEpTT2JqZWN0Ow0KY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsN
Cg0KDQoNCmVudW0gY2xhc3MgUHJvcGVydHlBdHRyaWJ1dGUgOiB1bnNpZ25lZCB7DQogICAgTm9u
ZSAgICAgICAgICAgICAgPSAwLA0KICAgIFJlYWRPbmx5ICAgICAgICAgID0gMSA8PCAxLCAgDQog
ICAgRG9udEVudW0gICAgICAgICAgPSAxIDw8IDIsICANCiAgICBEb250RGVsZXRlICAgICAgICA9
IDEgPDwgMywgIA0KICAgIEFjY2Vzc29yICAgICAgICAgID0gMSA8PCA0LCAgDQogICAgQ3VzdG9t
QWNjZXNzb3IgICAgPSAxIDw8IDUsDQogICAgQ3VzdG9tVmFsdWUgICAgICAgPSAxIDw8IDYsDQog
ICAgQ3VzdG9tQWNjZXNzb3JPclZhbHVlID0gQ3VzdG9tQWNjZXNzb3IgfCBDdXN0b21WYWx1ZSwN
CiAgICBBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVlID0gQWNjZXNzb3IgfCBDdXN0b21B
Y2Nlc3NvciB8IEN1c3RvbVZhbHVlLA0KDQogICAgDQogICAgRnVuY3Rpb24gICAgICAgICAgPSAx
IDw8IDgsICANCiAgICBCdWlsdGluICAgICAgICAgICA9IDEgPDwgOSwgIA0KICAgIENvbnN0YW50
SW50ZWdlciAgID0gMSA8PCAxMCwgDQogICAgQ2VsbFByb3BlcnR5ICAgICAgPSAxIDw8IDExLCAN
CiAgICBDbGFzc1N0cnVjdHVyZSAgICA9IDEgPDwgMTIsIA0KICAgIFByb3BlcnR5Q2FsbGJhY2sg
ID0gMSA8PCAxMywgDQogICAgRE9NQXR0cmlidXRlICAgICAgPSAxIDw8IDE0LCANCiAgICBET01K
SVRBdHRyaWJ1dGUgICA9IDEgPDwgMTUsIA0KICAgIERPTUpJVEZ1bmN0aW9uICAgID0gMSA8PCAx
NiwgDQogICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIA0KICAgIEJ1
aWx0aW5PckZ1bmN0aW9uT3JMYXp5UHJvcGVydHkgPSBCdWlsdGluIHwgRnVuY3Rpb24gfCBDZWxs
UHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2FsbGJhY2ssIA0KICAgIEJ1aWx0
aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5ID0gQnVpbHRpbiB8IEZ1bmN0aW9u
IHwgQWNjZXNzb3IgfCBDZWxsUHJvcGVydHkgfCBDbGFzc1N0cnVjdHVyZSB8IFByb3BlcnR5Q2Fs
bGJhY2ssIA0KICAgIEJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nvck9yTGF6eVByb3BlcnR5T3JD
b25zdGFudCA9IEJ1aWx0aW4gfCBGdW5jdGlvbiB8IEFjY2Vzc29yIHwgQ2VsbFByb3BlcnR5IHwg
Q2xhc3NTdHJ1Y3R1cmUgfCBQcm9wZXJ0eUNhbGxiYWNrIHwgQ29uc3RhbnRJbnRlZ2VyIA0KfTsN
Cg0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRvcnwgKFByb3BlcnR5QXR0cmlidXRl
IGEsIFByb3BlcnR5QXR0cmlidXRlIGIpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihiKTsgfQ0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBvcGVyYXRvcnwgKHVuc2lnbmVkIGEsIFByb3BlcnR5QXR0cmlidXRlIGIpIHsgcmV0dXJuIGEg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYik7IH0NCnN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
b3BlcmF0b3J8IChQcm9wZXJ0eUF0dHJpYnV0ZSBhLCB1bnNpZ25lZCBiKSB7IHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYSkgfCBiOyB9DQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG9w
ZXJhdG9yJih1bnNpZ25lZCBhLCBQcm9wZXJ0eUF0dHJpYnV0ZSBiKSB7IHJldHVybiBhICYgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGIpOyB9DQpzdGF0aWMgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KFByb3BlcnR5QXR0cmlidXRlIGEsIFByb3BlcnR5QXR0cmlidXRlIGIpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihhKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihiKTsgfQ0Kc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRvcn4oUHJvcGVydHlBdHRyaWJ1dGUgYSkgeyByZXR1
cm4gfnN0YXRpY19jYXN0PHVuc2lnbmVkPihhKTsgfQ0Kc3RhdGljIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPChQcm9wZXJ0eUF0dHJpYnV0ZSBhLCB1bnNpZ25lZCBiKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYSkgPCBiOyB9DQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkJiBvcGVyYXRv
cnw9KHVuc2lnbmVkJiBhLCBQcm9wZXJ0eUF0dHJpYnV0ZSBiKSB7IHJldHVybiBhIHw9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihiKTsgfQ0KDQplbnVtIENhY2hlYWJpbGl0eVR5cGUgOiB1aW50OF90
IHsNCiAgICBDYWNoaW5nRGlzYWxsb3dlZCwNCiAgICBDYWNoaW5nQWxsb3dlZA0KfTsNCg0KaW5s
aW5lIHVuc2lnbmVkIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodW5zaWduZWQgYXR0cmlidXRlcykN
CnsNCiAgICANCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oYXR0cmlidXRlcyk7DQp9
DQoNCmNsYXNzIFByb3BlcnR5U2xvdCB7DQoNCiAgICANCiAgICANCiAgICANCiAgICBwcml2YXRl
OiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRl
OyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
PSBkZWxldGU7IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzRm9yYmlkSGVhcEFsbG9jYXRpb25NYWNybzsNCg0KICAgIGVudW0gUHJvcGVydHlUeXBlIDog
dWludDhfdCB7DQogICAgICAgIFR5cGVVbnNldCwNCiAgICAgICAgVHlwZVZhbHVlLA0KICAgICAg
ICBUeXBlR2V0dGVyLA0KICAgICAgICBUeXBlQ3VzdG9tLA0KICAgICAgICBUeXBlQ3VzdG9tQWNj
ZXNzb3IsDQogICAgfTsNCg0KcHVibGljOg0KICAgIGVudW0gY2xhc3MgSW50ZXJuYWxNZXRob2RU
eXBlIDogdWludDhfdCB7DQogICAgICAgIEdldCwgDQogICAgICAgIEhhc1Byb3BlcnR5LCANCiAg
ICAgICAgR2V0T3duUHJvcGVydHksIA0KICAgICAgICBWTUlucXVpcnksIA0KICAgIH07DQoNCiAg
ICBlbnVtIGNsYXNzIEFkZGl0aW9uYWxEYXRhVHlwZSA6IHVpbnQ4X3Qgew0KICAgICAgICBOb25l
LA0KICAgICAgICBET01BdHRyaWJ1dGUsIA0KICAgICAgICBNb2R1bGVOYW1lc3BhY2UsIA0KICAg
IH07DQoNCiAgICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSB0aGlzVmFsdWUs
IEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUsIFZNKiB2bUZvcklucXVpcnkg
PSBudWxscHRyKQ0KICAgICAgICA6IG1fdGhpc1ZhbHVlKHRoaXNWYWx1ZSkNCiAgICAgICAgLCBt
X2ludGVybmFsTWV0aG9kVHlwZShpbnRlcm5hbE1ldGhvZFR5cGUpDQogICAgew0KICAgICAgICBp
ZiAoaXNWTUlucXVpcnkoKSkNCiAgICAgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5lbXBsYWNlKCp2
bUZvcklucXVpcnkpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOw0KDQogICAgSlNWYWx1ZSBnZXRWYWx1ZShKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7DQogICAgSlNWYWx1ZSBnZXRWYWx1ZShKU0dsb2Jh
bE9iamVjdCosIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3Q7DQogICAgSlNWYWx1ZSBnZXRQ
dXJlUmVzdWx0KCkgY29uc3Q7DQoNCiAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3QgeyByZXR1
cm4gaXNVbnNldCgpIHx8IG1fY2FjaGVhYmlsaXR5ID09IENhY2hpbmdBbGxvd2VkOyB9DQogICAg
Ym9vbCBpc1Vuc2V0KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVVuc2V0
OyB9DQogICAgYm9vbCBpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0g
VHlwZVZhbHVlOyB9DQogICAgYm9vbCBpc0FjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9wcm9w
ZXJ0eVR5cGUgPT0gVHlwZUdldHRlcjsgfQ0KICAgIGJvb2wgaXNDdXN0b20oKSBjb25zdCB7IHJl
dHVybiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tOyB9DQogICAgYm9vbCBpc0N1c3RvbUFj
Y2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUN1c3RvbUFjY2Vz
c29yOyB9DQogICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNo
ZWFibGUoKSAmJiBpc1ZhbHVlKCk7IH0NCiAgICBib29sIGlzQ2FjaGVhYmxlR2V0dGVyKCkgY29u
c3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBpc0FjY2Vzc29yKCk7IH0NCiAgICBib29sIGlz
Q2FjaGVhYmxlQ3VzdG9tKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBpc0N1c3Rv
bSgpOyB9DQogICAgdm9pZCBzZXRJc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpIHsgbV9pc1RhaW50
ZWRCeU9wYXF1ZU9iamVjdCA9IHRydWU7IH0NCiAgICBib29sIGlzVGFpbnRlZEJ5T3BhcXVlT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdDsgfQ0KDQogICAg
SW50ZXJuYWxNZXRob2RUeXBlIGludGVybmFsTWV0aG9kVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJuYWxNZXRob2RUeXBlOyB9DQogICAgYm9vbCBpc1ZNSW5xdWlyeSgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZXJuYWxNZXRob2RUeXBlID09IEludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
OyB9DQoNCiAgICB2b2lkIGRpc2FibGVDYWNoaW5nKCkNCiAgICB7DQogICAgICAgIG1fY2FjaGVh
YmlsaXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7DQogICAgfQ0KDQogICAgdW5zaWduZWQgYXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQ0KDQogICAgUHJvcGVydHlPZmZz
ZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuIG1fb2Zmc2V0Ow0KICAgIH0NCg0KICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyKCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1f
ZGF0YS5nZXR0ZXIuZ2V0dGVyU2V0dGVyOw0KICAgIH0NCg0KICAgIEdldFZhbHVlRnVuYyBjdXN0
b21HZXR0ZXIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gbV9kYXRhLmN1c3RvbS5nZXRWYWx1ZTsNCiAgICB9DQoNCiAgICBDdXN0b21HZXR0ZXJTZXR0
ZXIqIGN1c3RvbUdldHRlclNldHRlcigpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgIHJldHVybiBtX2RhdGEuY3VzdG9tQWNjZXNzb3IuZ2V0dGVyU2V0dGVyOw0KICAg
IH0NCg0KICAgIEpTT2JqZWN0KiBzbG90QmFzZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1
cm4gbV9zbG90QmFzZTsNCiAgICB9DQoNCiAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0
KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3dhdGNocG9pbnRTZXQ7DQogICAgfQ0K
DQogICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKCkgY29u
c3QNCiAgICB7DQogICAgICAgIGlmIChtX2FkZGl0aW9uYWxEYXRhVHlwZSA9PSBBZGRpdGlvbmFs
RGF0YVR5cGU6OkRPTUF0dHJpYnV0ZSkNCiAgICAgICAgICAgIHJldHVybiBtX2FkZGl0aW9uYWxE
YXRhLmRvbUF0dHJpYnV0ZTsNCiAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCiAgICB9DQoN
CiAgICBzdHJ1Y3QgTW9kdWxlTmFtZXNwYWNlU2xvdCB7DQogICAgICAgIEpTTW9kdWxlRW52aXJv
bm1lbnQqIGVudmlyb25tZW50Ow0KICAgICAgICB1bnNpZ25lZCBzY29wZU9mZnNldDsNCiAgICB9
Ow0KDQogICAgT3B0aW9uYWw8TW9kdWxlTmFtZXNwYWNlU2xvdD4gbW9kdWxlTmFtZXNwYWNlU2xv
dCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAobV9hZGRpdGlvbmFsRGF0YVR5cGUgPT0gQWRk
aXRpb25hbERhdGFUeXBlOjpNb2R1bGVOYW1lc3BhY2UpDQogICAgICAgICAgICByZXR1cm4gbV9h
ZGRpdGlvbmFsRGF0YS5tb2R1bGVOYW1lc3BhY2VTbG90Ow0KICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0Ow0KICAgIH0NCg0KICAgIHZvaWQgc2V0VmFsdWUoSlNPYmplY3QqIHNsb3RCYXNlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU1ZhbHVlIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICANCiAgICAgICAgbV9kYXRhLnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsNCiAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsNCg0KICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsNCiAgICAgICAgbV9wcm9wZXJ0
eVR5cGUgPSBUeXBlVmFsdWU7DQoNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCiAgICANCiAg
ICB2b2lkIHNldFZhbHVlKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICANCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX2RhdGEudmFs
dWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOw0KICAgICAgICBtX2F0dHJpYnV0ZXMgPSBhdHRy
aWJ1dGVzOw0KDQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RC
YXNlOw0KICAgICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVWYWx1ZTsNCiAgICAgICAgbV9vZmZz
ZXQgPSBvZmZzZXQ7DQoNCiAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nQWxsb3dlZDsN
CiAgICB9DQoNCiAgICB2b2lkIHNldFZhbHVlKEpTU3RyaW5nKiwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgDQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbV9kYXRhLnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsNCiAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsNCg0KICAgICAgICBt
X3Nsb3RCYXNlID0gbnVsbHB0cjsNCiAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBUeXBlVmFsdWU7
DQoNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0VmFsdWVNb2R1bGVO
YW1lc3BhY2UoSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU1ZhbHVl
IHZhbHVlLCBKU01vZHVsZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCwgU2NvcGVPZmZzZXQgc2Nv
cGVPZmZzZXQpDQogICAgew0KICAgICAgICBzZXRWYWx1ZShzbG90QmFzZSwgYXR0cmlidXRlcywg
dmFsdWUpOw0KICAgICAgICBtX2FkZGl0aW9uYWxEYXRhVHlwZSA9IEFkZGl0aW9uYWxEYXRhVHlw
ZTo6TW9kdWxlTmFtZXNwYWNlOw0KICAgICAgICBtX2FkZGl0aW9uYWxEYXRhLm1vZHVsZU5hbWVz
cGFjZVNsb3QuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDsNCiAgICAgICAgbV9hZGRpdGlvbmFs
RGF0YS5tb2R1bGVOYW1lc3BhY2VTbG90LnNjb3BlT2Zmc2V0ID0gc2NvcGVPZmZzZXQub2Zmc2V0
KCk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRDdXN0b20oSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUpDQogICAgew0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgIA0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGFzc2VydElz
Q0Z1bmN0aW9uUHRyKGdldFZhbHVlKTsNCiAgICAgICAgbV9kYXRhLmN1c3RvbS5nZXRWYWx1ZSA9
IGdldFZhbHVlOw0KICAgICAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOw0KDQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOw0KICAgICAgICBtX3By
b3BlcnR5VHlwZSA9IFR5cGVDdXN0b207DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQoNCiAg
ICB2b2lkIHNldEN1c3RvbShKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEdldFZhbHVlRnVuYyBnZXRWYWx1ZSwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiBkb21BdHRyaWJ1
dGUpDQogICAgew0KICAgICAgICBzZXRDdXN0b20oc2xvdEJhc2UsIGF0dHJpYnV0ZXMsIGdldFZh
bHVlKTsNCiAgICAgICAgbV9hZGRpdGlvbmFsRGF0YVR5cGUgPSBBZGRpdGlvbmFsRGF0YVR5cGU6
OkRPTUF0dHJpYnV0ZTsNCiAgICAgICAgbV9hZGRpdGlvbmFsRGF0YS5kb21BdHRyaWJ1dGUgPSBk
b21BdHRyaWJ1dGU7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgc2V0Q2FjaGVhYmxlQ3VzdG9tKEpT
T2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRlcywgR2V0VmFsdWVGdW5jIGdldFZh
bHVlKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICANCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICBhc3NlcnRJc0NGdW5jdGlvblB0cihnZXRWYWx1ZSk7DQogICAgICAgIG1f
ZGF0YS5jdXN0b20uZ2V0VmFsdWUgPSBnZXRWYWx1ZTsNCiAgICAgICAgbV9hdHRyaWJ1dGVzID0g
YXR0cmlidXRlczsNCg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fc2xvdEJhc2UgPSBz
bG90QmFzZTsNCiAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBUeXBlQ3VzdG9tOw0KDQogICAgICAg
IG1fY2FjaGVhYmlsaXR5ID0gQ2FjaGluZ0FsbG93ZWQ7DQogICAgfQ0KDQogICAgdm9pZCBzZXRD
YWNoZWFibGVDdXN0b20oSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBH
ZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRl
KQ0KICAgIHsNCiAgICAgICAgc2V0Q2FjaGVhYmxlQ3VzdG9tKHNsb3RCYXNlLCBhdHRyaWJ1dGVz
LCBnZXRWYWx1ZSk7DQogICAgICAgIG1fYWRkaXRpb25hbERhdGFUeXBlID0gQWRkaXRpb25hbERh
dGFUeXBlOjpET01BdHRyaWJ1dGU7DQogICAgICAgIG1fYWRkaXRpb25hbERhdGEuZG9tQXR0cmli
dXRlID0gZG9tQXR0cmlidXRlOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0Q3VzdG9tR2V0dGVyU2V0
dGVyKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRlcywgQ3VzdG9tR2V0dGVy
U2V0dGVyKiBnZXR0ZXJTZXR0ZXIpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
ICgodm9pZCkwKTsNCg0KICAgICAgICBkaXNhYmxlQ2FjaGluZygpOw0KDQogICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgbV9kYXRhLmN1c3RvbUFjY2Vzc29yLmdldHRlclNldHRlciA9IGdldHRl
clNldHRlcjsNCiAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsNCg0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsNCiAgICAgICAgbV9wcm9w
ZXJ0eVR5cGUgPSBUeXBlQ3VzdG9tQWNjZXNzb3I7DQoNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
IH0NCg0KICAgIHZvaWQgc2V0R2V0dGVyU2xvdChKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyKQ0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICANCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX2RhdGEu
Z2V0dGVyLmdldHRlclNldHRlciA9IGdldHRlclNldHRlcjsNCiAgICAgICAgbV9hdHRyaWJ1dGVz
ID0gYXR0cmlidXRlczsNCg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fc2xvdEJhc2Ug
PSBzbG90QmFzZTsNCiAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBUeXBlR2V0dGVyOw0KDQogICAg
ICAgICgodm9pZCkwKTsNCiAgICB9DQoNCiAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3Qo
SlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBHZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICANCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX2RhdGEuZ2V0dGVy
LmdldHRlclNldHRlciA9IGdldHRlclNldHRlcjsNCiAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0
cmlidXRlczsNCg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fc2xvdEJhc2UgPSBzbG90
QmFzZTsNCiAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBUeXBlR2V0dGVyOw0KICAgICAgICBtX29m
ZnNldCA9IG9mZnNldDsNCg0KICAgICAgICBtX2NhY2hlYWJpbGl0eSA9IENhY2hpbmdBbGxvd2Vk
Ow0KICAgIH0NCg0KICAgIEpTVmFsdWUgdGhpc1ZhbHVlKCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiBtX3RoaXNWYWx1ZTsNCiAgICB9DQoNCiAgICB2b2lkIHNldFRoaXNWYWx1ZShKU1Zh
bHVlIHRoaXNWYWx1ZSkNCiAgICB7DQogICAgICAgIG1fdGhpc1ZhbHVlID0gdGhpc1ZhbHVlOw0K
ICAgIH0NCg0KICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkNCiAgICB7DQogICAgICAgIG1fZGF0YS52
YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsNCiAgICAgICAgbV9hdHRyaWJ1
dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW07DQoNCiAgICAgICAgbV9zbG90
QmFzZSA9IG51bGxwdHI7DQogICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZVZhbHVlOw0KICAg
IH0NCg0KICAgIHZvaWQgc2V0V2F0Y2hwb2ludFNldChXYXRjaHBvaW50U2V0JiBzZXQpDQogICAg
ew0KICAgICAgICBtX3dhdGNocG9pbnRTZXQgPSAmc2V0Ow0KICAgIH0NCg0KcHJpdmF0ZToNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihKU0dsb2JhbE9i
amVjdCopIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlIGN1c3RvbUdl
dHRlcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7DQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIEpTVmFsdWUgY3VzdG9tQWNjZXNzb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KDQogICAgdW5pb24gew0KICAgICAgICBFbmNvZGVkSlNW
YWx1ZSB2YWx1ZTsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyOw0KICAgICAgICB9IGdldHRlcjsNCiAgICAgICAgc3RydWN0IHsNCiAgICAg
ICAgICAgIEdldFZhbHVlRnVuYyBnZXRWYWx1ZTsNCiAgICAgICAgfSBjdXN0b207DQogICAgICAg
IHN0cnVjdCB7DQogICAgICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlcjsN
CiAgICAgICAgfSBjdXN0b21BY2Nlc3NvcjsNCiAgICB9IG1fZGF0YTsNCg0KICAgIHVuc2lnbmVk
IG1fYXR0cmlidXRlcyB7IDAgfTsNCiAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldCB7IGludmFs
aWRPZmZzZXQgfTsNCiAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOw0KICAgIEpTT2JqZWN0KiBtX3Ns
b3RCYXNlIHsgbnVsbHB0ciB9Ow0KICAgIFdhdGNocG9pbnRTZXQqIG1fd2F0Y2hwb2ludFNldCB7
IG51bGxwdHIgfTsNCiAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5IHsgQ2FjaGlu
Z0Rpc2FsbG93ZWQgfTsNCiAgICBQcm9wZXJ0eVR5cGUgbV9wcm9wZXJ0eVR5cGUgeyBUeXBlVW5z
ZXQgfTsNCiAgICBJbnRlcm5hbE1ldGhvZFR5cGUgbV9pbnRlcm5hbE1ldGhvZFR5cGU7DQogICAg
QWRkaXRpb25hbERhdGFUeXBlIG1fYWRkaXRpb25hbERhdGFUeXBlIHsgQWRkaXRpb25hbERhdGFU
eXBlOjpOb25lIH07DQogICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0IHsgZmFsc2Ug
fTsNCnB1YmxpYzoNCiAgICBPcHRpb25hbDxEaXNhbGxvd1ZNRW50cnk+IGRpc2FsbG93Vk1FbnRy
eTsNCnByaXZhdGU6DQogICAgdW5pb24gew0KICAgICAgICBET01BdHRyaWJ1dGVBbm5vdGF0aW9u
IGRvbUF0dHJpYnV0ZTsNCiAgICAgICAgTW9kdWxlTmFtZXNwYWNlU2xvdCBtb2R1bGVOYW1lc3Bh
Y2VTbG90Ow0KICAgIH0gbV9hZGRpdGlvbmFsRGF0YSB7IHsgbnVsbHB0ciwgbnVsbHB0ciB9IH07
DQp9Ow0KDQpfX2ZvcmNlaW5saW5lIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWYWx1ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25z
dA0Kew0KICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlVmFsdWUpDQogICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsNCiAgICBpZiAobV9wcm9wZXJ0eVR5cGUg
PT0gVHlwZUdldHRlcikNCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGdsb2JhbE9iamVj
dCk7DQogICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVDdXN0b21BY2Nlc3NvcikNCiAgICAg
ICAgcmV0dXJuIGN1c3RvbUFjY2Vzc29yR2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsNCiAgICByZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsN
Cn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VmFsdWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdA0Kew0K
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgaWYgKG1fcHJvcGVydHlUeXBl
ID09IFR5cGVWYWx1ZSkNCiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEudmFs
dWUpOw0KICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlR2V0dGVyKQ0KICAgICAgICByZXR1
cm4gZnVuY3Rpb25HZXR0ZXIoZ2xvYmFsT2JqZWN0KTsNCiAgICBpZiAobV9wcm9wZXJ0eVR5cGUg
PT0gVHlwZUN1c3RvbUFjY2Vzc29yKQ0KICAgICAgICByZXR1cm4gY3VzdG9tQWNjZXNzb3JHZXR0
ZXIoZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsNCiAg
ICByZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwg
cHJvcGVydHlOYW1lKSk7DQp9DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxEZWxldGVQcm9wZXJ0eVNsb3Qu
aCINCg0KbmFtZXNwYWNlIEpTQyB7DQogICAgDQpjbGFzcyBEZWxldGVQcm9wZXJ0eVNsb3Qgew0K
cHVibGljOg0KICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hlYWJsZSwgRGVsZXRlSGl0
LCBDb25maWd1cmFibGVEZWxldGVNaXNzLCBOb25jb25maWd1cmFibGUgfTsNCg0KICAgIERlbGV0
ZVByb3BlcnR5U2xvdCgpDQogICAgICAgIDogbV9vZmZzZXQoaW52YWxpZE9mZnNldCkNCiAgICAg
ICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5nQWxsb3dlZCkNCiAgICAgICAgLCBtX3R5cGUoVW5j
YWNoZWFibGUpDQogICAgew0KICAgIH0NCg0KICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlTWlzcygp
DQogICAgew0KICAgICAgICBtX3R5cGUgPSBDb25maWd1cmFibGVEZWxldGVNaXNzOw0KICAgIH0N
Cg0KICAgIHZvaWQgc2V0Tm9uY29uZmlndXJhYmxlKCkNCiAgICB7DQogICAgICAgIG1fdHlwZSA9
IE5vbmNvbmZpZ3VyYWJsZTsNCiAgICB9DQoNCiAgICB2b2lkIHNldEhpdChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpDQogICAgew0KICAgICAgICBtX3R5cGUgPSBEZWxldGVIaXQ7DQogICAgICAgIG1f
b2Zmc2V0ID0gb2Zmc2V0Ow0KICAgIH0NCg0KICAgIGJvb2wgaXNDYWNoZWFibGVEZWxldGUoKSBj
b25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSAhPSBVbmNhY2hlYWJsZTsgfQ0K
ICAgIGJvb2wgaXNEZWxldGVIaXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRGVsZXRlSGl0
OyB9DQogICAgYm9vbCBpc0NvbmZpZ3VyYWJsZURlbGV0ZU1pc3MoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gQ29uZmlndXJhYmxlRGVsZXRlTWlzczsgfQ0KICAgIGJvb2wgaXNOb25jb25maWd1
cmFibGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTm9uY29uZmlndXJhYmxlOyB9DQoNCiAg
ICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1fb2Zmc2V0Ow0KICAgIH0NCg0KICAgIHZvaWQgZGlzYWJsZUNhY2hpbmcoKQ0KICAgIHsN
CiAgICAgICAgbV9jYWNoZWFiaWxpdHkgPSBDYWNoaW5nRGlzYWxsb3dlZDsNCiAgICB9DQoNCnBy
aXZhdGU6DQogICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVhYmls
aXR5ID09IENhY2hpbmdBbGxvd2VkOyB9DQoNCiAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsN
CiAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5Ow0KICAgIFR5cGUgbV90eXBlOw0K
fTsNCg0KfSANCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN0cnVjdHVyZS5oIg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxQcm9wZXJ0eU5hbWVBcnJheS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCmNsYXNz
IFByb3BlcnR5TmFtZUFycmF5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFByb3BlcnR5TmFtZUFy
cmF5RGF0YT4gew0KcHVibGljOg0KICAgIHR5cGVkZWYgVmVjdG9yPElkZW50aWZpZXIsIDIwPiBQ
cm9wZXJ0eU5hbWVWZWN0b3I7DQoNCiAgICBzdGF0aWMgUmVmPFByb3BlcnR5TmFtZUFycmF5RGF0
YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9wZXJ0eU5hbWVBcnJheURhdGEp
OyB9DQoNCiAgICBQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvcigpIHsgcmV0
dXJuIG1fcHJvcGVydHlOYW1lVmVjdG9yOyB9DQoNCnByaXZhdGU6DQogICAgUHJvcGVydHlOYW1l
QXJyYXlEYXRhKCkNCiAgICB7DQogICAgfQ0KDQogICAgUHJvcGVydHlOYW1lVmVjdG9yIG1fcHJv
cGVydHlOYW1lVmVjdG9yOw0KfTsNCg0KDQpjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheSB7DQpwdWJs
aWM6DQogICAgUHJvcGVydHlOYW1lQXJyYXkoVk0mIHZtLCBQcm9wZXJ0eU5hbWVNb2RlIHByb3Bl
cnR5TmFtZU1vZGUsIFByaXZhdGVTeW1ib2xNb2RlIHByaXZhdGVTeW1ib2xNb2RlKQ0KICAgICAg
ICA6IG1fZGF0YShQcm9wZXJ0eU5hbWVBcnJheURhdGE6OmNyZWF0ZSgpKQ0KICAgICAgICAsIG1f
dm0odm0pDQogICAgICAgICwgbV9wcm9wZXJ0eU5hbWVNb2RlKHByb3BlcnR5TmFtZU1vZGUpDQog
ICAgICAgICwgbV9wcml2YXRlU3ltYm9sTW9kZShwcml2YXRlU3ltYm9sTW9kZSkNCiAgICB7DQog
ICAgfQ0KDQogICAgVk0mIHZtKCkgeyByZXR1cm4gbV92bTsgfQ0KDQogICAgdm9pZCBhZGQodWlu
dDMyX3QgaW5kZXgpDQogICAgew0KICAgICAgICBhZGQoSWRlbnRpZmllcjo6ZnJvbShtX3ZtLCBp
bmRleCkpOw0KICAgIH0NCg0KICAgIHZvaWQgYWRkKGNvbnN0IElkZW50aWZpZXImKTsNCiAgICB2
b2lkIGFkZChVbmlxdWVkU3RyaW5nSW1wbCopOw0KICAgIHZvaWQgYWRkVW5jaGVja2VkKFVuaXF1
ZWRTdHJpbmdJbXBsKik7DQoNCiAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkp
IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0NCiAgICBjb25zdCBJ
ZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+
cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0NCg0KICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YSog
ZGF0YSgpIHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQ0KICAgIFJlZlB0cjxQcm9wZXJ0eU5hbWVB
cnJheURhdGE+IHJlbGVhc2VEYXRhKCkgeyByZXR1cm4gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3Zl
UGFyYW1ldGVyPihtX2RhdGEpOyB9DQoNCiAgICANCiAgICBib29sIGNhbkFkZEtub3duVW5pcXVl
Rm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3Io
KS5pc0VtcHR5KCk7IH0NCiAgICB0eXBlZGVmIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJvcGVy
dHlOYW1lVmVjdG9yOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsNCiAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCkuc2l6ZSgp
OyB9DQogICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPnBy
b3BlcnR5TmFtZVZlY3RvcigpLmJlZ2luKCk7IH0NCiAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmVuZCgpOyB9DQoNCiAg
ICBib29sIGluY2x1ZGVTeW1ib2xQcm9wZXJ0aWVzKCkgY29uc3Q7DQogICAgYm9vbCBpbmNsdWRl
U3RyaW5nUHJvcGVydGllcygpIGNvbnN0Ow0KDQogICAgUHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0
eU5hbWVNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVNb2RlOyB9DQogICAgUHJp
dmF0ZVN5bWJvbE1vZGUgcHJpdmF0ZVN5bWJvbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVTeW1ib2xNb2RlOyB9DQoNCnByaXZhdGU6DQogICAgdm9pZCBhZGRVbmNoZWNrZWRJbnRlcm5h
bChVbmlxdWVkU3RyaW5nSW1wbCopOw0KICAgIGJvb2wgaXNVaWRNYXRjaGVkVG9UeXBlTW9kZShV
bmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcik7DQoNCiAgICBSZWZQdHI8UHJvcGVydHlOYW1l
QXJyYXlEYXRhPiBtX2RhdGE7DQogICAgSGFzaFNldDxVbmlxdWVkU3RyaW5nSW1wbCo+IG1fc2V0
Ow0KICAgIFZNJiBtX3ZtOw0KICAgIFByb3BlcnR5TmFtZU1vZGUgbV9wcm9wZXJ0eU5hbWVNb2Rl
Ow0KICAgIFByaXZhdGVTeW1ib2xNb2RlIG1fcHJpdmF0ZVN5bWJvbE1vZGU7DQp9Ow0KDQpfX2Zv
cmNlaW5saW5lIHZvaWQgUHJvcGVydHlOYW1lQXJyYXk6OmFkZChjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKQ0Kew0KICAgIGFkZChpZGVudGlmaWVyLmltcGwoKSk7DQp9DQoNCl9fZm9yY2Vp
bmxpbmUgdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkVW5jaGVja2VkSW50ZXJuYWwoVW5pcXVl
ZFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpDQp7DQogICAgbV9kYXRhLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKS5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBpZGVudGlmaWVyKSk7DQp9DQoN
Cl9fZm9yY2VpbmxpbmUgdm9pZCBQcm9wZXJ0eU5hbWVBcnJheTo6YWRkVW5jaGVja2VkKFVuaXF1
ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKQ0Kew0KICAgIGlmICghaXNVaWRNYXRjaGVkVG9UeXBl
TW9kZShpZGVudGlmaWVyKSkNCiAgICAgICAgcmV0dXJuOw0KICAgIGFkZFVuY2hlY2tlZEludGVy
bmFsKGlkZW50aWZpZXIpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHZvaWQgUHJvcGVydHlOYW1lQXJy
YXk6OmFkZChVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnRpZmllcikNCnsNCiAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHNldFRocmVzaG9sZCA9IDIwOw0KDQogICAgKCh2b2lkKTApOw0KDQog
ICAgaWYgKCFpc1VpZE1hdGNoZWRUb1R5cGVNb2RlKGlkZW50aWZpZXIpKQ0KICAgICAgICByZXR1
cm47DQoNCiAgICBpZiAoc2l6ZSgpIDwgc2V0VGhyZXNob2xkKSB7DQogICAgICAgIGlmIChtX2Rh
dGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmNvbnRhaW5zKGlkZW50aWZpZXIpKQ0KICAgICAgICAg
ICAgcmV0dXJuOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGlmIChtX3NldC5pc0VtcHR5KCkpIHsN
CiAgICAgICAgICAgIGZvciAoSWRlbnRpZmllciYgbmFtZSA6IG1fZGF0YS0+cHJvcGVydHlOYW1l
VmVjdG9yKCkpDQogICAgICAgICAgICAgICAgbV9zZXQuYWRkKG5hbWUuaW1wbCgpKTsNCiAgICAg
ICAgfQ0KICAgICAgICBpZiAoIW1fc2V0LmFkZChpZGVudGlmaWVyKS5pc05ld0VudHJ5KQ0KICAg
ICAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIGFkZFVuY2hlY2tlZEludGVybmFsKGlkZW50
aWZpZXIpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgUHJvcGVydHlOYW1lQXJyYXk6OmlzVWlk
TWF0Y2hlZFRvVHlwZU1vZGUoVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpDQp7DQogICAg
aWYgKGlkZW50aWZpZXItPmlzU3ltYm9sKCkpIHsNCiAgICAgICAgaWYgKCFpbmNsdWRlU3ltYm9s
UHJvcGVydGllcygpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBpZiAoKG1f
cHJpdmF0ZVN5bWJvbE1vZGUgPT0gUHJpdmF0ZVN5bWJvbE1vZGU6OkluY2x1ZGUpKQ0KICAgICAg
ICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIHJldHVybiAhc3RhdGljX2Nhc3Q8U3ltYm9sSW1w
bCo+KGlkZW50aWZpZXIpLT5pc1ByaXZhdGUoKTsNCiAgICB9DQogICAgcmV0dXJuIGluY2x1ZGVT
dHJpbmdQcm9wZXJ0aWVzKCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBQcm9wZXJ0eU5hbWVB
cnJheTo6aW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSBjb25zdA0Kew0KICAgIHJldHVybiBzdGF0
aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxQcm9wZXJ0eU5hbWVNb2RlPjo6dHlwZT4obV9w
cm9wZXJ0eU5hbWVNb2RlKSAmIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFByb3Bl
cnR5TmFtZU1vZGU+Ojp0eXBlPihQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzKTsNCn0NCg0KX19m
b3JjZWlubGluZSBib29sIFByb3BlcnR5TmFtZUFycmF5OjppbmNsdWRlU3RyaW5nUHJvcGVydGll
cygpIGNvbnN0DQp7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBl
PFByb3BlcnR5TmFtZU1vZGU+Ojp0eXBlPihtX3Byb3BlcnR5TmFtZU1vZGUpICYgc3RhdGljX2Nh
c3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UHJvcGVydHlOYW1lTW9kZT46OnR5cGU+KFByb3BlcnR5
TmFtZU1vZGU6OlN0cmluZ3MpOw0KfQ0KDQp9IA0KI2xpbmUgMzggIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlLmgiDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcUHV0UHJvcGVydHlTbG90LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KICAgIA0KY2xhc3MgSlNPYmplY3Q7DQpjbGFzcyBKU0Z1bmN0aW9uOw0KICAgIA0K
Y2xhc3MgUHV0UHJvcGVydHlTbG90IHsNCnB1YmxpYzoNCiAgICBlbnVtIFR5cGUgOiB1aW50OF90
IHsgVW5jYWNoYWJsZSwgRXhpc3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVydHksIFNldHRlclByb3Bl
cnR5LCBDdXN0b21WYWx1ZSwgQ3VzdG9tQWNjZXNzb3IgfTsNCiAgICBlbnVtIENvbnRleHQgeyBV
bmtub3duQ29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwgfTsNCiAgICB0eXBlZGVmIGJvb2wg
KCpQdXRWYWx1ZUZ1bmMpKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpOw0KDQogICAgUHV0UHJvcGVydHlTbG90KEpTVmFsdWUg
dGhpc1ZhbHVlLCBib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlLCBDb250ZXh0IGNvbnRleHQgPSBV
bmtub3duQ29udGV4dCwgYm9vbCBpc0luaXRpYWxpemF0aW9uID0gZmFsc2UpDQogICAgICAgIDog
bV9iYXNlKG51bGxwdHIpDQogICAgICAgICwgbV90aGlzVmFsdWUodGhpc1ZhbHVlKQ0KICAgICAg
ICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpDQogICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNT
dHJpY3RNb2RlKQ0KICAgICAgICAsIG1faXNJbml0aWFsaXphdGlvbihpc0luaXRpYWxpemF0aW9u
KQ0KICAgICAgICAsIG1fdHlwZShVbmNhY2hhYmxlKQ0KICAgICAgICAsIG1fY29udGV4dChjb250
ZXh0KQ0KICAgICAgICAsIG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQ0KICAgIHsNCiAg
ICB9DQoNCiAgICB2b2lkIHNldEV4aXN0aW5nUHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkNCiAgICB7DQogICAgICAgIG1fdHlwZSA9IEV4aXN0aW5nUHJvcGVy
dHk7DQogICAgICAgIG1fYmFzZSA9IGJhc2U7DQogICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0Ow0K
ICAgIH0NCg0KICAgIHZvaWQgc2V0TmV3UHJvcGVydHkoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkNCiAgICB7DQogICAgICAgIG1fdHlwZSA9IE5ld1Byb3BlcnR5Ow0KICAg
ICAgICBtX2Jhc2UgPSBiYXNlOw0KICAgICAgICBtX29mZnNldCA9IG9mZnNldDsNCiAgICB9DQoN
CiAgICB2b2lkIHNldEN1c3RvbVZhbHVlKEpTT2JqZWN0KiBiYXNlLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+IGZ1bmN0aW9uKQ0KICAgIHsNCiAgICAgICAgbV90eXBlID0gQ3VzdG9tVmFs
dWU7DQogICAgICAgIG1fYmFzZSA9IGJhc2U7DQogICAgICAgIG1fcHV0RnVuY3Rpb24gPSBmdW5j
dGlvbjsNCiAgICB9DQoNCiAgICB2b2lkIHNldEN1c3RvbUFjY2Vzc29yKEpTT2JqZWN0KiBiYXNl
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGZ1bmN0aW9uKQ0KICAgIHsNCiAgICAgICAg
bV90eXBlID0gQ3VzdG9tQWNjZXNzb3I7DQogICAgICAgIG1fYmFzZSA9IGJhc2U7DQogICAgICAg
IG1fcHV0RnVuY3Rpb24gPSBmdW5jdGlvbjsNCiAgICB9DQoNCiAgICB2b2lkIHNldENhY2hlYWJs
ZVNldHRlcihKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0KICAgIHsNCiAg
ICAgICAgbV90eXBlID0gU2V0dGVyUHJvcGVydHk7DQogICAgICAgIG1fYmFzZSA9IGJhc2U7DQog
ICAgICAgIG1fb2Zmc2V0ID0gb2Zmc2V0Ow0KICAgIH0NCg0KICAgIHZvaWQgc2V0VGhpc1ZhbHVl
KEpTVmFsdWUgdGhpc1ZhbHVlKQ0KICAgIHsNCiAgICAgICAgbV90aGlzVmFsdWUgPSB0aGlzVmFs
dWU7DQogICAgfQ0KDQogICAgdm9pZCBzZXRTdHJpY3RNb2RlKGJvb2wgdmFsdWUpDQogICAgew0K
ICAgICAgICBtX2lzU3RyaWN0TW9kZSA9IHZhbHVlOw0KICAgIH0NCg0KICAgIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4gY3VzdG9tU2V0dGVyKCkgY29uc3QNCiAgICB7DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1fcHV0RnVuY3Rpb247DQogICAgfQ0KDQogICAgQ29u
dGV4dCBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGV4dD4obV9jb250
ZXh0KTsgfQ0KDQogICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9DQogICAg
SlNPYmplY3QqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0NCiAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpc1ZhbHVlOyB9DQoNCiAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9DQogICAgYm9vbCBpc0Nh
Y2hlYWJsZVB1dCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgKG1fdHlwZSA9PSBO
ZXdQcm9wZXJ0eSB8fCBtX3R5cGUgPT0gRXhpc3RpbmdQcm9wZXJ0eSk7IH0NCiAgICBib29sIGlz
Q2FjaGVhYmxlU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBtX3R5cGUg
PT0gU2V0dGVyUHJvcGVydHk7IH0NCiAgICBib29sIGlzQ2FjaGVhYmxlQ3VzdG9tKCkgY29uc3Qg
eyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiAobV90eXBlID09IEN1c3RvbVZhbHVlIHx8IG1fdHlw
ZSA9PSBDdXN0b21BY2Nlc3Nvcik7IH0NCiAgICBib29sIGlzQ3VzdG9tQWNjZXNzb3IoKSBjb25z
dCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1fdHlwZSA9PSBDdXN0b21BY2Nlc3NvcjsgfQ0K
ICAgIGJvb2wgaXNJbml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXph
dGlvbjsgfQ0KDQogICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBtX29mZnNldDsNCiAgICB9DQoNCiAgICB2b2lkIGRpc2FibGVDYWNo
aW5nKCkNCiAgICB7DQogICAgICAgIG1fY2FjaGVhYmlsaXR5ID0gQ2FjaGluZ0Rpc2FsbG93ZWQ7
DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nQWxsb3dlZDsgfQ0KDQogICAgSlNPYmplY3QqIG1f
YmFzZTsNCiAgICBKU1ZhbHVlIG1fdGhpc1ZhbHVlOw0KICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zm
c2V0Ow0KICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOw0KICAgIGJvb2wgbV9pc0luaXRpYWxp
emF0aW9uIDogMTsNCiAgICBUeXBlIG1fdHlwZTsNCiAgICB1aW50OF90IG1fY29udGV4dDsNCiAg
ICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5Ow0KICAgIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4gbV9wdXRGdW5jdGlvbjsNCn07DQoNCn0gDQojbGluZSA0MCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1
cmUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlSURCbG9iLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFN0cnVjdHVyZUlEQmxvYiB7DQogICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCnB1YmxpYzoNCiAgICBTdHJ1Y3R1cmVJREJsb2Io
KQ0KICAgIHsNCiAgICAgICAgdS5kb3VibGVXb3JkID0gMHhiYmFkYmVlZjsNCiAgICB9DQoNCiAg
ICBTdHJ1Y3R1cmVJREJsb2IoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQsIEluZGV4aW5nVHlwZSBp
bmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8pDQog
ICAgew0KICAgICAgICB1LmZpZWxkcy5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZUlEOw0KICAgICAg
ICB1LmZpZWxkcy5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5ID0gaW5kZXhpbmdNb2RlSW5j
bHVkaW5nSGlzdG9yeTsNCiAgICAgICAgdS5maWVsZHMudHlwZSA9IHR5cGVJbmZvLnR5cGUoKTsN
CiAgICAgICAgdS5maWVsZHMuaW5saW5lVHlwZUZsYWdzID0gdHlwZUluZm8uaW5saW5lVHlwZUZs
YWdzKCk7DQogICAgICAgIHUuZmllbGRzLmRlZmF1bHRDZWxsU3RhdGUgPSBDZWxsU3RhdGU6OkRl
ZmluaXRlbHlXaGl0ZTsNCiAgICB9DQoNCiAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1
cmVJREJsb2ImIG90aGVyKSB7IHUuZG91YmxlV29yZCA9IG90aGVyLnUuZG91YmxlV29yZDsgfQ0K
ICAgIA0KICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gdS5maWVs
ZHMuc3RydWN0dXJlSUQ7IH0NCiAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHUuZmllbGRzLmluZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3Rvcnk7IH0NCiAgICB2b2lkIHNldEluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoSW5kZXhp
bmdUeXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpIHsgdS5maWVsZHMuaW5kZXhpbmdN
b2RlSW5jbHVkaW5nSGlzdG9yeSA9IGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnk7IH0NCiAg
ICBKU1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHUuZmllbGRzLnR5cGU7IH0NCiAgICBUeXBl
SW5mbzo6SW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIHUu
ZmllbGRzLmlubGluZVR5cGVGbGFnczsgfQ0KICAgIA0KICAgIFR5cGVJbmZvIHR5cGVJbmZvKFR5
cGVJbmZvOjpPdXRPZkxpbmVUeXBlRmxhZ3Mgb3V0T2ZMaW5lVHlwZUZsYWdzKSBjb25zdCB7IHJl
dHVybiBUeXBlSW5mbyh0eXBlKCksIGlubGluZVR5cGVGbGFncygpLCBvdXRPZkxpbmVUeXBlRmxh
Z3MpOyB9DQogICAgDQogICAgaW50MzJfdCBibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKSBjb25z
dCB7IHJldHVybiB1LndvcmRzLndvcmQyOyB9DQogICAgaW50NjRfdCBibG9iKCkgY29uc3QgeyBy
ZXR1cm4gdS5kb3VibGVXb3JkOyB9DQogICAgDQogICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1
cmVJRE9mZnNldCgpDQogICAgew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlSURCbG9iKj4oMHg0MDAwKS0+dS5m
aWVsZHMuc3RydWN0dXJlSUQpKSAtIDB4NDAwMCk7DQogICAgfQ0KDQogICAgc3RhdGljIHB0cmRp
ZmZfdCBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkNCiAgICB7DQogICAgICAg
IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxT
dHJ1Y3R1cmVJREJsb2IqPigweDQwMDApLT51LmZpZWxkcy5pbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5KSkgLSAweDQwMDApOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB1bmlvbiB7DQogICAg
ICAgIHN0cnVjdCB7DQogICAgICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsNCiAgICAg
ICAgICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5Ow0KICAgICAg
ICAgICAgSlNUeXBlIHR5cGU7DQogICAgICAgICAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdz
IGlubGluZVR5cGVGbGFnczsNCiAgICAgICAgICAgIENlbGxTdGF0ZSBkZWZhdWx0Q2VsbFN0YXRl
Ow0KICAgICAgICB9IGZpZWxkczsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIGludDMy
X3Qgd29yZDE7DQogICAgICAgICAgICBpbnQzMl90IHdvcmQyOw0KICAgICAgICB9IHdvcmRzOw0K
ICAgICAgICBpbnQ2NF90IGRvdWJsZVdvcmQ7DQogICAgfSB1Ow0KfTsNCg0KfSANCiNsaW5lIDQx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXFN0cnVjdHVyZS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmVSYXJlRGF0YS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjsNCmNsYXNzIFN0cnVjdHVyZTsNCmNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50Ow0KY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFw
dGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ7DQoNCmNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsNCiAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVSYXJlRGF0
YVNwYWNlOw0KICAgIH0NCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmVSYXJlRGF0YSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKik7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7DQogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsNCg0KICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0KICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUpOw0KDQogICAgU3RydWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX3ByZXZpb3VzLmdldCgpOw0KICAgIH0NCiAgICB2b2lkIHNl
dFByZXZpb3VzSUQoVk0mLCBTdHJ1Y3R1cmUqKTsNCiAgICB2b2lkIGNsZWFyUHJldmlvdXNJRCgp
Ow0KDQogICAgSlNTdHJpbmcqIG9iamVjdFRvU3RyaW5nVmFsdWUoKSBjb25zdDsNCiAgICB2b2lk
IHNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cnVjdHVyZSog
YmFzZVN0cnVjdHVyZSwgSlNTdHJpbmcqIHZhbHVlLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHRvU3Ry
aW5nVGFnU3ltYm9sU2xvdCk7DQogICAgdm9pZCBnaXZlVXBPbk9iamVjdFRvU3RyaW5nVmFsdWVD
YWNoZSgpIHsgbV9vYmplY3RUb1N0cmluZ1ZhbHVlLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIob2Jq
ZWN0VG9TdHJpbmdDYWNoZUdpdmVVcE1hcmtlcigpKTsgfQ0KICAgIGJvb2wgY2FuQ2FjaGVPYmpl
Y3RUb1N0cmluZ1ZhbHVlKCkgeyByZXR1cm4gbV9vYmplY3RUb1N0cmluZ1ZhbHVlLnVudmFsaWRh
dGVkR2V0KCkgPT0gb2JqZWN0VG9TdHJpbmdDYWNoZUdpdmVVcE1hcmtlcigpOyB9DQogICAgc3Rh
dGljIEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ0NhY2hlR2l2ZVVwTWFya2VyKCkgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PEpTU3RyaW5nKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0NCg0K
ICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRv
cigpIGNvbnN0Ow0KICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopOw0KDQogICAgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IGNhY2hlZE93bktleXMoKSBjb25zdDsNCiAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVk
T3duS2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25zdDsNCiAgICBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogY2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpIGNvbnN0Ow0KICAgIHZvaWQgc2V0Q2FjaGVk
T3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7DQoNCiAgICBCb3g8SW5saW5lV2F0
Y2hwb2ludFNldD4gY29weVNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVy
biBtX3BvbHlQcm90b1dhdGNocG9pbnQ7IH0NCiAgICBjb25zdCBCb3g8SW5saW5lV2F0Y2hwb2lu
dFNldD4mIHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBtX3BvbHlQ
cm90b1dhdGNocG9pbnQ7IH0NCiAgICB2b2lkIHNldFNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQo
Qm94PElubGluZVdhdGNocG9pbnRTZXQ+JiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCkgeyBt
X3BvbHlQcm90b1dhdGNocG9pbnQgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+
KHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQpOyB9DQogICAgYm9vbCBoYXNTaGFyZWRQb2x5UHJv
dG9XYXRjaHBvaW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wb2x5UHJv
dG9XYXRjaHBvaW50KTsgfQ0KDQogICAgc3RhdGljIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNo
ZWRPd25LZXlzU2VudGluZWwoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNJbW11dGFibGVCdXR0
ZXJmbHkqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQ0KDQogICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkNhY2hlZE93bktleXMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN0cnVjdHVyZVJhcmVE
YXRhKj4oMHg0MDAwKS0+bV9jYWNoZWRPd25LZXlzKSkgLSAweDQwMDApOw0KICAgIH0NCg0KICAg
IHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgdm9pZCBmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseShWTSYpOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1
cmU7DQogICAgZnJpZW5kIGNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50Ow0KICAgIGZyaWVuZCBjbGFzcyBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDsNCg0KICAgIHZvaWQgY2xlYXJPYmplY3RUb1N0cmluZ1Zh
bHVlKCk7DQoNCiAgICBTdHJ1Y3R1cmVSYXJlRGF0YShWTSYsIFN0cnVjdHVyZSopOw0KDQogICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcmV2aW91czsNCiAgICBXcml0ZUJhcnJpZXI8SlNT
dHJpbmc+IG1fb2JqZWN0VG9TdHJpbmdWYWx1ZTsNCiAgICANCiAgICANCiAgICBXcml0ZUJhcnJp
ZXI8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0
b3I7DQogICAgV3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZE93bktl
eXM7DQoNCiAgICB0eXBlZGVmIEhhc2hNYXA8UHJvcGVydHlPZmZzZXQsIFJlZlB0cjxXYXRjaHBv
aW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3BlcnR5T2Zmc2V0PiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9mZnNldD4+IFByb3BlcnR5V2F0Y2hwb2ludE1hcDsN
CiAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvcGVydHlXYXRjaHBvaW50TWFwPiBtX3JlcGxhY2VtZW50
V2F0Y2hwb2ludFNldHM7DQogICAgQmFnPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50PiBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0Ow0KICAgIHN0
ZDo6dW5pcXVlX3B0cjxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludD4gbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9p
bnQ7DQogICAgQm94PElubGluZVdhdGNocG9pbnRTZXQ+IG1fcG9seVByb3RvV2F0Y2hwb2ludDsN
Cg0KICAgIFByb3BlcnR5T2Zmc2V0IG1fbWF4T2Zmc2V0Ow0KICAgIFByb3BlcnR5T2Zmc2V0IG1f
dHJhbnNpdGlvbk9mZnNldDsNCn07DQoNCn0gDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmUuaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpTQ2VsbDsNCmNsYXNzIFN0cnVjdHVyZTsNCg0Kc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBGaXJzdEludGVybmFsQXR0cmlidXRlID0gMSA8PCA2OyAN
Cg0KDQoNCmVudW0gY2xhc3MgTm9uUHJvcGVydHlUcmFuc2l0aW9uIDogdW5zaWduZWQgew0KICAg
IEFsbG9jYXRlVW5kZWNpZGVkLA0KICAgIEFsbG9jYXRlSW50MzIsDQogICAgQWxsb2NhdGVEb3Vi
bGUsDQogICAgQWxsb2NhdGVDb250aWd1b3VzLA0KICAgIEFsbG9jYXRlQXJyYXlTdG9yYWdlLA0K
ICAgIEFsbG9jYXRlU2xvd1B1dEFycmF5U3RvcmFnZSwNCiAgICBTd2l0Y2hUb1Nsb3dQdXRBcnJh
eVN0b3JhZ2UsDQogICAgQWRkSW5kZXhlZEFjY2Vzc29ycywNCiAgICBQcmV2ZW50RXh0ZW5zaW9u
cywNCiAgICBTZWFsLA0KICAgIEZyZWV6ZQ0KfTsNCnVzaW5nIFRyYW5zaXRpb25Qcm9wZXJ0eUF0
dHJpYnV0ZXMgPSB1aW50MTZfdDsNCg0KaW5saW5lIHVuc2lnbmVkIHRvQXR0cmlidXRlcyhOb25Q
cm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbikNCnsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHRyYW5zaXRpb24pICsgRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZTsNCn0NCg0KaW5s
aW5lIGJvb2wgY2hhbmdlc0luZGV4aW5nVHlwZShOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNp
dGlvbikNCnsNCiAgICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsNCiAgICBjYXNlIE5vblByb3BlcnR5
VHJhbnNpdGlvbjo6QWxsb2NhdGVVbmRlY2lkZWQ6DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5z
aXRpb246OkFsbG9jYXRlSW50MzI6DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFs
bG9jYXRlRG91YmxlOg0KICAgIGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZUNv
bnRpZ3VvdXM6DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlQXJyYXlT
dG9yYWdlOg0KICAgIGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVNsb3dQdXRB
cnJheVN0b3JhZ2U6DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OlN3aXRjaFRvU2xv
d1B1dEFycmF5U3RvcmFnZToNCiAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWRkSW5k
ZXhlZEFjY2Vzc29yczoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoNCiAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KaW5saW5lIEluZGV4aW5nVHlwZSBuZXdJbmRl
eGluZ1R5cGUoSW5kZXhpbmdUeXBlIG9sZFR5cGUsIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFu
c2l0aW9uKQ0Kew0KICAgIHN3aXRjaCAodHJhbnNpdGlvbikgew0KICAgIGNhc2UgTm9uUHJvcGVy
dHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVVuZGVjaWRlZDoNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICByZXR1cm4gb2xkVHlwZSB8IFVuZGVjaWRlZFNoYXBlOw0KICAgIGNhc2UgTm9uUHJvcGVy
dHlUcmFuc2l0aW9uOjpBbGxvY2F0ZUludDMyOg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IHJldHVybiAob2xkVHlwZSAmIH5JbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8IElu
dDMyU2hhcGU7DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlRG91Ymxl
Og0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiAob2xkVHlwZSAmIH5JbmRleGlu
Z1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8IERvdWJsZVNoYXBlOw0KICAgIGNhc2UgTm9uUHJv
cGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZUNvbnRpZ3VvdXM6DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgcmV0dXJuIChvbGRUeXBlICYgfkluZGV4aW5nU2hhcGVBbmRXcml0YWJpbGl0eU1h
c2spIHwgQ29udGlndW91c1NoYXBlOw0KICAgIGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpB
bGxvY2F0ZUFycmF5U3RvcmFnZToNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4g
KG9sZFR5cGUgJiB+SW5kZXhpbmdTaGFwZUFuZFdyaXRhYmlsaXR5TWFzaykgfCBBcnJheVN0b3Jh
Z2VTaGFwZTsNCiAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVTbG93UHV0
QXJyYXlTdG9yYWdlOg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiAob2xkVHlw
ZSAmIH5JbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8IFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZTsNCiAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6U3dpdGNoVG9TbG93UHV0
QXJyYXlTdG9yYWdlOg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiAob2xkVHlw
ZSAmIH5JbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8IFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZTsNCiAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWRkSW5kZXhlZEFjY2Vz
c29yczoNCiAgICAgICAgcmV0dXJuIG9sZFR5cGUgfCBNYXlIYXZlSW5kZXhlZEFjY2Vzc29yczsN
CiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gb2xkVHlwZTsNCiAgICB9DQp9DQoNCmlubGlu
ZSBib29sIHByZXZlbnRzRXh0ZW5zaW9ucyhOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlv
bikNCnsNCiAgICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsNCiAgICBjYXNlIE5vblByb3BlcnR5VHJh
bnNpdGlvbjo6UHJldmVudEV4dGVuc2lvbnM6DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRp
b246OlNlYWw6DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkZyZWV6ZToNCiAgICAg
ICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
IH0NCn0NCg0KaW5saW5lIGJvb2wgc2V0c0RvbnREZWxldGVPbkFsbFByb3BlcnRpZXMoTm9uUHJv
cGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24pDQp7DQogICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7
DQogICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OlNlYWw6DQogICAgY2FzZSBOb25Qcm9w
ZXJ0eVRyYW5zaXRpb246OkZyZWV6ZToNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVs
dDoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KaW5saW5lIGJvb2wgc2V0c1Jl
YWRPbmx5T25Ob25BY2Nlc3NvclByb3BlcnRpZXMoTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5z
aXRpb24pDQp7DQogICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7DQogICAgY2FzZSBOb25Qcm9wZXJ0
eVRyYW5zaXRpb246OkZyZWV6ZToNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoN
CiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KY2xhc3MgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlIHsNCiAgICBzdGF0aWMgY29uc3RleHByIGludHB0cl90IFVzaW5nU2luZ2xlU2xv
dEZsYWcgPSAxOw0KDQogICAgDQoNCiAgICBzdHJ1Y3QgSGFzaCB7DQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgc3RydWN0IEtleSB7DQogICAgICAgICAgICBmcmllbmQgc3RydWN0IEhhc2g7
DQogICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KDQ4IDw9IDQ4KTsNCiAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludHB0cl90IGlzQWRkaXRpb25NYXNrID0gMVVMTDsNCiAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHN0cmluZ01hc2sgPSAoKDFVTEwgPDwgNDgpIC0g
MSkgJiAofmlzQWRkaXRpb25NYXNrKTsNCiAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgYXR0cmlidXRlc1NoaWZ0ID0gNDg7DQogICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnRwdHJfdCBoYXNoVGFibGVEZWxldGVkVmFsdWUgPSAweDI7DQogICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKSAqIDggPD0gMTYp
Ow0KICAgICAgICAgICAgc3RhdGljX2Fzc2VydChoYXNoVGFibGVEZWxldGVkVmFsdWUgPCBhbGln
bm9mKFVuaXF1ZWRTdHJpbmdJbXBsKSk7DQoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQog
ICAgICAgICAgICANCiAgICAgICAgICAgIEtleShVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5z
aWduZWQgYXR0cmlidXRlcywgYm9vbCBpc0FkZGl0aW9uKQ0KICAgICAgICAgICAgICAgIDogbV9l
bmNvZGVkRGF0YShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbXBsKSB8IChzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KGF0dHJpYnV0ZXMpIDw8IGF0dHJpYnV0ZXNTaGlmdCkgfCAoc3RhdGljX2Nhc3Q8
dWludHB0cl90Pihpc0FkZGl0aW9uKSAmIGlzQWRkaXRpb25NYXNrKSkNCiAgICAgICAgICAgIHsN
CiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAg
S2V5KCkgPSBkZWZhdWx0Ow0KDQogICAgICAgICAgICBLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWVUeXBlKQ0KICAgICAgICAgICAgICAgIDogbV9lbmNvZGVkRGF0YShoYXNoVGFibGVEZWxl
dGVkVmFsdWUpDQogICAgICAgICAgICB7IH0NCg0KICAgICAgICAgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZERhdGEgPT0gaGFzaFRhYmxl
RGVsZXRlZFZhbHVlOyB9DQoNCiAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKj4obV9lbmNvZGVk
RGF0YSAmIHN0cmluZ01hc2spOyB9DQogICAgICAgICAgICBib29sIGlzQWRkaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2VuY29kZWREYXRhICYgaXNBZGRpdGlvbk1hc2s7IH0NCiAgICAgICAgICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhID4+IGF0
dHJpYnV0ZXNTaGlmdDsgfQ0KDQogICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEtleSYgYSwgY29uc3QgS2V5JiBiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
IHJldHVybiBhLm1fZW5jb2RlZERhdGEgPT0gYi5tX2VuY29kZWREYXRhOw0KICAgICAgICAgICAg
fQ0KDQogICAgICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleSYgYSwgY29u
c3QgS2V5JiBiKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBhLm1fZW5j
b2RlZERhdGEgIT0gYi5tX2VuY29kZWREYXRhOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgIHBy
aXZhdGU6DQogICAgICAgICAgICB1aW50cHRyX3QgbV9lbmNvZGVkRGF0YSB7IDAgfTsNCiAgICAg
ICAgfTsNCiAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEtl
eT47DQoNCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQ0KICAgICAg
ICB7DQogICAgICAgICAgICByZXR1cm4gSW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKHAubV9lbmNv
ZGVkRGF0YSk7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBL
ZXkmIGEsIGNvbnN0IEtleSYgYikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGEgPT0g
YjsNCiAgICAgICAgfQ0KDQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7DQogICAgfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAyMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiDQoN
CiAgICB0eXBlZGVmIFdlYWtHQ01hcDxIYXNoOjpLZXksIFN0cnVjdHVyZSwgSGFzaCwgSGFzaDo6
S2V5VHJhaXRzPiBUcmFuc2l0aW9uTWFwOw0KDQpwdWJsaWM6DQogICAgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlKCkNCiAgICAgICAgOiBtX2RhdGEoVXNpbmdTaW5nbGVTbG90RmxhZykNCiAgICB7
DQogICAgfQ0KDQogICAgflN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSgpDQogICAgew0KICAgICAg
ICBpZiAoIWlzVXNpbmdTaW5nbGVTbG90KCkpIHsNCiAgICAgICAgICAgIGRlbGV0ZSBtYXAoKTsN
CiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIFdlYWtJbXBsKiBpbXBs
ID0gdGhpcy0+d2Vha0ltcGwoKTsNCiAgICAgICAgaWYgKCFpbXBsKQ0KICAgICAgICAgICAgcmV0
dXJuOw0KICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKGltcGwpOw0KICAgIH0NCg0KICAgIHZv
aWQgYWRkKFZNJiwgU3RydWN0dXJlKik7DQogICAgYm9vbCBjb250YWlucyhVbmlxdWVkU3RyaW5n
SW1wbCosIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgaXNBZGRpdGlvbikgY29uc3Q7DQogICAg
U3RydWN0dXJlKiBnZXQoVW5pcXVlZFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBi
b29sIGlzQWRkaXRpb24pIGNvbnN0Ow0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBTaW5n
bGVTbG90VHJhbnNpdGlvbldlYWtPd25lcjsNCg0KICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3Qo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fZGF0YSAmIFVzaW5nU2luZ2xlU2xvdEZs
YWc7DQogICAgfQ0KDQogICAgVHJhbnNpdGlvbk1hcCogbWFwKCkgY29uc3QNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUcmFuc2l0aW9uTWFw
Kj4obV9kYXRhKTsNCiAgICB9DQoNCiAgICBXZWFrSW1wbCogd2Vha0ltcGwoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdlYWtJ
bXBsKj4obV9kYXRhICYgflVzaW5nU2luZ2xlU2xvdEZsYWcpOw0KICAgIH0NCg0KICAgIHZvaWQg
c2V0TWFwKFRyYW5zaXRpb25NYXAqIG1hcCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgDQogICAgICAgIGlmIChXZWFrSW1wbCogaW1wbCA9IHRoaXMtPndlYWtJbXBsKCkpDQog
ICAgICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKGltcGwpOw0KDQogICAgICAgIA0KICAgICAg
ICBtX2RhdGEgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG1hcCk7DQoNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgIH0NCg0KICAgIFN0cnVjdHVyZSogc2luZ2xlVHJhbnNpdGlvbigpIGNvbnN0Ow0K
ICAgIHZvaWQgc2V0U2luZ2xlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsNCg0KICAgIGludHB0cl90
IG1fZGF0YTsNCn07DQoNCn0gDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmUuaCINCg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXFdyaXRlQmFycmllcklubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPg0KaW5saW5lIHZvaWQg
V3JpdGVCYXJyaWVyQmFzZTxULCBUcmFpdHM+OjpzZXQoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBUKiB2YWx1ZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIHZh
bGlkYXRlQ2VsbCh2YWx1ZSk7DQogICAgc2V0RWFybHlWYWx1ZSh2bSwgb3duZXIsIHZhbHVlKTsN
Cn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4NCmlubGluZSB2b2lk
IFdyaXRlQmFycmllckJhc2U8VCwgVHJhaXRzPjo6c2V0TWF5QmVOdWxsKFZNJiB2bSwgY29uc3Qg
SlNDZWxsKiBvd25lciwgVCogdmFsdWUpDQp7DQogICAgaWYgKHZhbHVlKQ0KICAgICAgICB2YWxp
ZGF0ZUNlbGwodmFsdWUpOw0KICAgIHNldEVhcmx5VmFsdWUodm0sIG93bmVyLCB2YWx1ZSk7DQp9
DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+DQppbmxpbmUgdm9pZCBX
cml0ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz46OnNldEVhcmx5VmFsdWUoVk0mIHZtLCBjb25zdCBK
U0NlbGwqIG93bmVyLCBUKiB2YWx1ZSkNCnsNCiAgICBUcmFpdHM6OmV4Y2hhbmdlKHRoaXMtPm1f
Y2VsbCwgdmFsdWUpOw0KICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyLCBzdGF0aWNfY2Fz
dDxKU0NlbGwqPih2YWx1ZSkpOw0KfQ0KDQppbmxpbmUgdm9pZCBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24sIER1bWJWYWx1ZVRyYWl0czxVbmtub3duPj46OnNldChWTSYgdm0sIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIEpTVmFsdWUgdmFsdWUpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIG1fdmFsdWUg
PSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOw0KICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVy
LCB2YWx1ZSk7DQp9DQoNCn0gDQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmUuaCINCg0KDQpuYW1lc3Bh
Y2UgV1RGIHsNCg0KY2xhc3MgVW5pcXVlZFN0cmluZ0ltcGw7DQoNCn0gDQoNCm5hbWVzcGFjZSBK
U0Mgew0KDQpjbGFzcyBEZWZlckdDOw0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KY2xh
c3MgUHJvcGVydHlOYW1lQXJyYXk7DQpjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7DQpjbGFz
cyBQcm9wZXJ0eVRhYmxlOw0KY2xhc3MgU3RydWN0dXJlQ2hhaW47DQpjbGFzcyBTdHJ1Y3R1cmVT
aGFwZTsNCmNsYXNzIFNsb3RWaXNpdG9yOw0KY2xhc3MgSlNTdHJpbmc7DQpzdHJ1Y3QgRHVtcENv
bnRleHQ7DQpzdHJ1Y3QgSGFzaFRhYmxlOw0Kc3RydWN0IEhhc2hUYWJsZVZhbHVlOw0KDQoNCg0K
DQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSA9IDQ7
DQoNCg0KDQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG91dE9mTGluZUdyb3d0aEZhY3RvciA9
IDI7DQoNCnN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsNCiAgICBVbmlxdWVkU3RyaW5nSW1wbCog
a2V5Ow0KICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsNCiAgICB1aW50OF90IGF0dHJpYnV0ZXM7
DQoNCiAgICBQcm9wZXJ0eU1hcEVudHJ5KCkNCiAgICAgICAgOiBrZXkobnVsbHB0cikNCiAgICAg
ICAgLCBvZmZzZXQoaW52YWxpZE9mZnNldCkNCiAgICAgICAgLCBhdHRyaWJ1dGVzKDApDQogICAg
ew0KICAgIH0NCiAgICANCiAgICBQcm9wZXJ0eU1hcEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBr
ZXksIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcykNCiAgICAgICAg
OiBrZXkoa2V5KQ0KICAgICAgICAsIG9mZnNldChvZmZzZXQpDQogICAgICAgICwgYXR0cmlidXRl
cyhhdHRyaWJ1dGVzKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCn07DQoNCmNs
YXNzIFN0cnVjdHVyZUZpcmVEZXRhaWwgZmluYWwgOiBwdWJsaWMgRmlyZURldGFpbCB7DQpwdWJs
aWM6DQogICAgU3RydWN0dXJlRmlyZURldGFpbChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkN
CiAgICAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpDQogICAgew0KICAgIH0NCiAgICANCiAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgZmluYWw7DQoNCnByaXZhdGU6DQog
ICAgY29uc3QgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsNCn07DQoNCmNsYXNzIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGZpbmFsIDogcHVibGljIERlZmVycmVkV2F0
Y2hwb2ludEZpcmUgew0KICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKGNvbnN0IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJikgPSBk
ZWxldGU7IERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlJiBvcGVyYXRv
cj0oY29uc3QgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKSA9IGRl
bGV0ZTs7DQpwdWJsaWM6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKFZNJiwgU3RydWN0dXJlKik7DQogICAgX19kZWNs
c3BlYyhkbGxleHBvcnQpIH5EZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Rmly
ZSgpIGZpbmFsOw0KICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCBm
aW5hbDsNCg0KICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJ1Y3R1cmU7IH0NCg0KcHJpdmF0ZToNCiAgICBjb25zdCBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOw0KfTsNCg0KY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7DQogICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBzaG9ydEludmFsaWRPZmZzZXQgPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkgLSAxOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDE2X3QgdXNlUmFyZURhdGFGbGFnID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1h
eCgpOw0KcHVibGljOg0KICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU7
DQoNCiAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7DQogICAgDQogICAgZW51bSBQb2x5UHJvdG9UYWcgeyBQb2x5UHJvdG8gfTsNCiAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5nVHlwZSA9
IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDApOw0KICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZShQb2x5UHJvdG9UYWcsIFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCogcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4aW5n
VHlwZSA9IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDApOw0KDQogICAgflN0
cnVjdHVyZSgpOw0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFj
ZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAg
ICB7DQogICAgICAgIHJldHVybiAmdm0uc3RydWN0dXJlU3BhY2U7DQogICAgfQ0KDQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBib29sIGlzVmFsaWRQcm90b3R5cGUoSlNWYWx1ZSk7
DQoNCnByaXZhdGU6DQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pDQogICAgew0KICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9
DQoNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RydWN0dXJlKiBwcmV2
aW91cykNCiAgICB7DQogICAgICAgIHRoaXMtPmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICAgICAg
aWYgKHByZXZpb3VzLT5oYXNSYXJlRGF0YSgpKSB7DQogICAgICAgICAgICBjb25zdCBTdHJ1Y3R1
cmVSYXJlRGF0YSogcHJldmlvdXNSYXJlRGF0YSA9IHByZXZpb3VzLT5yYXJlRGF0YSgpOw0KICAg
ICAgICAgICAgaWYgKHByZXZpb3VzUmFyZURhdGEtPmhhc1NoYXJlZFBvbHlQcm90b1dhdGNocG9p
bnQoKSkgew0KICAgICAgICAgICAgICAgIGVuc3VyZVJhcmVEYXRhKHZtKTsNCiAgICAgICAgICAg
ICAgICByYXJlRGF0YSgpLT5zZXRTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KHByZXZpb3VzUmFy
ZURhdGEtPmNvcHlTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENyZWF0
aW5nRWFybHlDZWxsVGFnKQ0KICAgIHsNCiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IHRoaXMsIENyZWF0aW5nRWFybHlDZWxsKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQoNCiAgICB2b2lkIHZhbGlkYXRl
RmxhZ3MoKTsNCg0KcHVibGljOg0KICAgIFN0cnVjdHVyZUlEIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9ibG9iLnN0cnVjdHVyZUlEKCk7IH0NCiAgICBpbnQzMl90IG9iamVjdEluaXRpYWxpemF0aW9u
QmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5ibG9iRXhjbHVkaW5nU3RydWN0dXJlSUQoKTsg
fQ0KICAgIGludDY0X3QgaWRCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2IoKTsgfQ0K
DQogICAgYm9vbCBpc1Byb3h5KCkgY29uc3QNCiAgICB7DQogICAgICAgIEpTVHlwZSB0eXBlID0g
bV9ibG9iLnR5cGUoKTsNCiAgICAgICAgcmV0dXJuIHR5cGUgPT0gSW1wdXJlUHJveHlUeXBlIHx8
IHR5cGUgPT0gUHVyZUZvcndhcmRpbmdQcm94eVR5cGUgfHwgdHlwZSA9PSBQcm94eU9iamVjdFR5
cGU7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsNCg0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRp
b24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFBy
b3BlcnR5T2Zmc2V0Jik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBTdHJ1Y3R1
cmUqIGFkZE5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmLCBQdXRQcm9wZXJ0eVNsb3Q6
OkNvbnRleHQgPSBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsNCiAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVu
dGx5KFN0cnVjdHVyZSosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIFByb3BlcnR5T2Zmc2V0Jik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBT
dHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0
dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYp
Ow0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYs
IFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsNCiAgICBzdGF0aWMgU3Ry
dWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqID0gbnVsbHB0cik7DQogICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlPZmZzZXQmKTsNCiAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOw0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNo
YW5nZVByb3RvdHlwZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlw
ZSwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKTsNCiAgICBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNp
dGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxl
RGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsNCiAgICBzdGF0aWMgU3RydWN0dXJl
KiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBEZWZl
cnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oVk0m
LCBTdHJ1Y3R1cmUqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIFN0cnVjdHVy
ZSogZnJlZXplVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSopOw0KICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSopOw0KICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIE5v
blByb3BlcnR5VHJhbnNpdGlvbik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBT
dHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvblNsb3coVk0mLCBTdHJ1Y3R1cmUqLCBOb25Q
cm9wZXJ0eVRyYW5zaXRpb24pOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgaXNT
ZWFsZWQoVk0mKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBpc0Zyb3plbihWTSYp
Ow0KICAgIGJvb2wgaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIWRpZFBy
ZXZlbnRFeHRlbnNpb25zKCk7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBTdHJ1Y3R1
cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKFZNJiwgSlNPYmplY3QqKTsNCg0KICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsNCiAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOw0KDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4NCiAgICBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBGdW5j
Jik7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCiAgICBQcm9wZXJ0eU9mZnNldCByZW1v
dmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBjb25zdCBGdW5j
Jik7DQogICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTVmFsdWUg
cHJvdG90eXBlKTsNCiAgICAgICAgDQogICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJl
dHVybiBkaWN0aW9uYXJ5S2luZCgpICE9IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQ0KICAgIGJvb2wg
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBkaWN0aW9uYXJ5S2luZCgp
ID09IFVuY2FjaGVkRGljdGlvbmFyeUtpbmQ7IH0NCiAgDQogICAgYm9vbCBwcm90b3R5cGVRdWVy
aWVzQXJlQ2FjaGVhYmxlKCkNCiAgICB7DQogICAgICAgIHJldHVybiAhdHlwZUluZm8oKS5wcm9o
aWJpdHNQcm9wZXJ0eUNhY2hpbmcoKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBwcm9wZXJ0eUFj
Y2Vzc2VzQXJlQ2FjaGVhYmxlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBkaWN0aW9uYXJ5S2lu
ZCgpICE9IFVuY2FjaGVkRGljdGlvbmFyeUtpbmQNCiAgICAgICAgICAgICYmIHByb3RvdHlwZVF1
ZXJpZXNBcmVDYWNoZWFibGUoKQ0KICAgICAgICAgICAgJiYgISh0eXBlSW5mbygpLmdldE93blBy
b3BlcnR5U2xvdElzSW1wdXJlKCkgJiYgIXR5cGVJbmZvKCkubmV3SW1wdXJlUHJvcGVydHlGaXJl
c1dhdGNocG9pbnRzKCkpOw0KICAgIH0NCg0KICAgIGJvb2wgcHJvcGVydHlBY2Nlc3Nlc0FyZUNh
Y2hlYWJsZUZvckFic2VuY2UoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICF0eXBlSW5mbygpLmdl
dE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlKCk7DQogICAgfQ0KDQog
ICAgYm9vbCBuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkNCiAgICB7DQogICAgICAgIHJl
dHVybiBwcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkNCiAgICAgICAgICAgICYmIHR5cGVJ
bmZvKCkuZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUoKQ0KICAgICAgICAgICAgJiYgdHlwZUlu
Zm8oKS5uZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKTsNCiAgICB9DQoNCiAgICBi
b29sIGlzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0KCkNCiAgICB7DQogICAgICAgIHJl
dHVybiB0eXBlSW5mbygpLmlzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0KCk7DQogICAg
fQ0KDQogICAgDQogICAgDQogICAgYm9vbCB0YWtlc1Nsb3dQYXRoSW5ERkdGb3JJbXB1cmVQcm9w
ZXJ0eSgpDQogICAgew0KICAgICAgICByZXR1cm4gdHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNs
b3RJc0ltcHVyZSgpOw0KICAgIH0NCiAgICANCiAgICANCiAgICBUeXBlSW5mbyB0eXBlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIG1fYmxvYi50eXBlSW5mbyhtX291dE9mTGluZVR5cGVGbGFncyk7IH0N
CiAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZUluZm8oKS5pc09iamVjdCgp
OyB9DQoNCiAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9iLmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSAmIEFsbFdyaXRhYmxlQXJyYXlUeXBl
czsgfQ0KICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGUoKSBjb25zdCAgeyByZXR1cm4gbV9i
bG9iLmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSAmIEFsbEFycmF5VHlwZXM7IH0NCiAg
ICBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvYi5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCk7IH0NCiAgICAgICAgDQog
ICAgaW5saW5lIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkgY29uc3Q7DQogICAg
DQogICAgYm9vbCBob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUoVk0mLCBKU09iamVjdCopIGNv
bnN0Ow0KICAgICAgICANCiAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0NCg0KICAgIA0KICAgIA0KICAgIHZvaWQg
c2V0R2xvYmFsT2JqZWN0KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsNCg0KICAgIF9fZm9yY2Vpbmxp
bmUgYm9vbCBoYXNNb25vUHJvdG8oKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICFtX3By
b3RvdHlwZS5nZXQoKS5pc0VtcHR5KCk7DQogICAgfQ0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCBo
YXNQb2x5UHJvdG8oKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICFoYXNNb25vUHJvdG8o
KTsNCiAgICB9DQogICAgX19mb3JjZWlubGluZSBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNv
bnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX3Byb3RvdHlw
ZS5nZXQoKTsNCiAgICB9DQogICAgSlNWYWx1ZSBzdG9yZWRQcm90b3R5cGUoY29uc3QgSlNPYmpl
Y3QqKSBjb25zdDsNCiAgICBKU09iamVjdCogc3RvcmVkUHJvdG90eXBlT2JqZWN0KGNvbnN0IEpT
T2JqZWN0KikgY29uc3Q7DQogICAgU3RydWN0dXJlKiBzdG9yZWRQcm90b3R5cGVTdHJ1Y3R1cmUo
Y29uc3QgSlNPYmplY3QqKSBjb25zdDsNCg0KICAgIEpTT2JqZWN0KiBzdG9yZWRQcm90b3R5cGVP
YmplY3QoKSBjb25zdDsNCiAgICBTdHJ1Y3R1cmUqIHN0b3JlZFByb3RvdHlwZVN0cnVjdHVyZSgp
IGNvbnN0Ow0KICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7DQogICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIGJhc2UpIGNvbnN0Ow0KICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGJhc2UpIGNvbnN0Ow0KICAgIFN0cnVjdHVy
ZUNoYWluKiBwcm90b3R5cGVDaGFpbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBiYXNlKSBj
b25zdDsNCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgYm9vbCBp
c0NoZWFwRHVyaW5nR0MoVk0mKTsNCiAgICANCiAgICANCiAgICBib29sIG1hcmtJZkNoZWFwKFNs
b3RWaXNpdG9yJik7DQogICAgDQogICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gaXNSYXJlRGF0YShtX3ByZXZpb3VzT3JSYXJlRGF0YS5nZXQoKSk7DQog
ICAgfQ0KDQogICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhKCkNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZVJhcmVEYXRh
Kj4obV9wcmV2aW91c09yUmFyZURhdGEuZ2V0KCkpOw0KICAgIH0NCg0KICAgIGNvbnN0IFN0cnVj
dHVyZVJhcmVEYXRhKiByYXJlRGF0YSgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmVSYXJlRGF0YSo+KG1f
cHJldmlvdXNPclJhcmVEYXRhLmdldCgpKTsNCiAgICB9DQoNCiAgICBjb25zdCBTdHJ1Y3R1cmVS
YXJlRGF0YSogcmFyZURhdGFDb25jdXJyZW50bHkoKSBjb25zdA0KICAgIHsNCiAgICAgICAgSlND
ZWxsKiBjZWxsID0gbV9wcmV2aW91c09yUmFyZURhdGEuZ2V0KCk7DQogICAgICAgIGlmIChpc1Jh
cmVEYXRhKGNlbGwpKQ0KICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZVJh
cmVEYXRhKj4oY2VsbCk7DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KICAgIFN0
cnVjdHVyZVJhcmVEYXRhKiBlbnN1cmVSYXJlRGF0YShWTSYgdm0pDQogICAgew0KICAgICAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpDQogICAgICAgICAgICBhbGxvY2F0ZVJhcmVEYXRhKHZtKTsNCiAg
ICAgICAgcmV0dXJuIHJhcmVEYXRhKCk7DQogICAgfQ0KICAgIA0KICAgIFN0cnVjdHVyZSogcHJl
dmlvdXNJRCgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgSlNDZWxsKiBjZWxsID0gbV9wcmV2aW91c09yUmFyZURhdGEuZ2V0KCk7
DQogICAgICAgIGlmIChpc1JhcmVEYXRhKGNlbGwpKQ0KICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFN0cnVjdHVyZVJhcmVEYXRhKj4oY2VsbCktPnByZXZpb3VzSUQoKTsNCiAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KGNlbGwpOw0KICAgIH0NCiAgICBib29sIHRy
YW5zaXRpdmVseVRyYW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBzdHJ1Y3R1cmVUb0ZpbmQpOw0K
DQogICAgUHJvcGVydHlPZmZzZXQgbWF4T2Zmc2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgIHVp
bnQxNl90IG1heE9mZnNldCA9IG1fbWF4T2Zmc2V0Ow0KICAgICAgICBpZiAobWF4T2Zmc2V0ID09
IHNob3J0SW52YWxpZE9mZnNldCkNCiAgICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0Ow0K
ICAgICAgICBpZiAobWF4T2Zmc2V0ID09IHVzZVJhcmVEYXRhRmxhZykNCiAgICAgICAgICAgIHJl
dHVybiByYXJlRGF0YSgpLT5tX21heE9mZnNldDsNCiAgICAgICAgcmV0dXJuIG1heE9mZnNldDsN
CiAgICB9DQoNCiAgICB2b2lkIHNldE1heE9mZnNldChWTSYgdm0sIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkNCiAgICB7DQogICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkNCiAgICAg
ICAgICAgIG1fbWF4T2Zmc2V0ID0gc2hvcnRJbnZhbGlkT2Zmc2V0Ow0KICAgICAgICBlbHNlIGlm
IChvZmZzZXQgPCB1c2VSYXJlRGF0YUZsYWcgJiYgb2Zmc2V0IDwgc2hvcnRJbnZhbGlkT2Zmc2V0
KQ0KICAgICAgICAgICAgbV9tYXhPZmZzZXQgPSBvZmZzZXQ7DQogICAgICAgIGVsc2UgaWYgKG1f
bWF4T2Zmc2V0ID09IHVzZVJhcmVEYXRhRmxhZykNCiAgICAgICAgICAgIHJhcmVEYXRhKCktPm1f
bWF4T2Zmc2V0ID0gb2Zmc2V0Ow0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGVuc3VyZVJh
cmVEYXRhKHZtKS0+bV9tYXhPZmZzZXQgPSBvZmZzZXQ7DQogICAgICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOw0KICAgICAgICAgICAgbV9tYXhPZmZzZXQgPSB1c2VSYXJlRGF0YUZsYWc7
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBQcm9wZXJ0eU9mZnNldCB0cmFuc2l0aW9uT2Zmc2V0
KCkgY29uc3QNCiAgICB7DQogICAgICAgIHVpbnQxNl90IHRyYW5zaXRpb25PZmZzZXQgPSBtX3Ry
YW5zaXRpb25PZmZzZXQ7DQogICAgICAgIGlmICh0cmFuc2l0aW9uT2Zmc2V0ID09IHNob3J0SW52
YWxpZE9mZnNldCkNCiAgICAgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0Ow0KICAgICAgICBp
ZiAodHJhbnNpdGlvbk9mZnNldCA9PSB1c2VSYXJlRGF0YUZsYWcpDQogICAgICAgICAgICByZXR1
cm4gcmFyZURhdGEoKS0+bV90cmFuc2l0aW9uT2Zmc2V0Ow0KICAgICAgICByZXR1cm4gdHJhbnNp
dGlvbk9mZnNldDsNCiAgICB9DQoNCiAgICB2b2lkIHNldFRyYW5zaXRpb25PZmZzZXQoVk0mIHZt
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpDQogICAgew0KICAgICAgICBpZiAob2Zmc2V0ID09IGlu
dmFsaWRPZmZzZXQpDQogICAgICAgICAgICBtX3RyYW5zaXRpb25PZmZzZXQgPSBzaG9ydEludmFs
aWRPZmZzZXQ7DQogICAgICAgIGVsc2UgaWYgKG9mZnNldCA8IHVzZVJhcmVEYXRhRmxhZyAmJiBv
ZmZzZXQgPCBzaG9ydEludmFsaWRPZmZzZXQpDQogICAgICAgICAgICBtX3RyYW5zaXRpb25PZmZz
ZXQgPSBvZmZzZXQ7DQogICAgICAgIGVsc2UgaWYgKG1fdHJhbnNpdGlvbk9mZnNldCA9PSB1c2VS
YXJlRGF0YUZsYWcpDQogICAgICAgICAgICByYXJlRGF0YSgpLT5tX3RyYW5zaXRpb25PZmZzZXQg
PSBvZmZzZXQ7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZW5zdXJlUmFyZURhdGEodm0p
LT5tX3RyYW5zaXRpb25PZmZzZXQgPSBvZmZzZXQ7DQogICAgICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOw0KICAgICAgICAgICAgbV90cmFuc2l0aW9uT2Zmc2V0ID0gdXNlUmFyZURhdGFG
bGFnOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgc3RhdGljIHVuc2lnbmVkIG91dE9mTGluZUNh
cGFjaXR5KFByb3BlcnR5T2Zmc2V0IG1heE9mZnNldCkNCiAgICB7DQogICAgICAgIHVuc2lnbmVk
IG91dE9mTGluZVNpemUgPSBTdHJ1Y3R1cmU6Om91dE9mTGluZVNpemUobWF4T2Zmc2V0KTsNCg0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IGlmICghb3V0T2ZMaW5lU2l6ZSkNCiAgICAgICAgICAgIHJldHVybiAwOw0KDQogICAgICAgIGlm
IChvdXRPZkxpbmVTaXplIDw9IGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSkNCiAgICAgICAgICAg
IHJldHVybiBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHk7DQoNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICBzdGF0aWNfYXNzZXJ0KChvdXRPZkxpbmVHcm93dGhGYWN0b3IgPT0gMiksICJvdXRP
ZkxpbmVHcm93dGhGYWN0b3JfaXNfdHdvIik7DQogICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBU
b1Bvd2VyT2ZUd28ob3V0T2ZMaW5lU2l6ZSk7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyB1bnNp
Z25lZCBvdXRPZkxpbmVTaXplKFByb3BlcnR5T2Zmc2V0IG1heE9mZnNldCkNCiAgICB7DQogICAg
ICAgIHJldHVybiBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTWF4T2Zmc2V0KG1heE9mZnNldCk7
DQogICAgfQ0KDQogICAgdW5zaWduZWQgb3V0T2ZMaW5lQ2FwYWNpdHkoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgcmV0dXJuIG91dE9mTGluZUNhcGFjaXR5KG1heE9mZnNldCgpKTsNCiAgICB9DQog
ICAgdW5zaWduZWQgb3V0T2ZMaW5lU2l6ZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4g
b3V0T2ZMaW5lU2l6ZShtYXhPZmZzZXQoKSk7DQogICAgfQ0KICAgIGJvb2wgaGFzSW5saW5lU3Rv
cmFnZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gISFtX2lubGluZUNhcGFjaXR5Ow0K
ICAgIH0NCiAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gbV9pbmxpbmVDYXBhY2l0eTsNCiAgICB9DQogICAgdW5zaWduZWQgaW5saW5lU2l6
ZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KG1heE9m
ZnNldCgpICsgMSwgbV9pbmxpbmVDYXBhY2l0eSk7DQogICAgfQ0KICAgIHVuc2lnbmVkIHRvdGFs
U3RvcmFnZUNhcGFjaXR5KCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuIG91dE9mTGluZUNhcGFjaXR5KCkgKyBpbmxpbmVDYXBhY2l0eSgpOw0KICAgIH0N
Cg0KICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gSlNDOjppc1ZhbGlkT2Zmc2V0KG9mZnNldCkNCiAgICAgICAg
ICAgICYmIG9mZnNldCA8PSBtYXhPZmZzZXQoKQ0KICAgICAgICAgICAgJiYgKG9mZnNldCA8IG1f
aW5saW5lQ2FwYWNpdHkgfHwgb2Zmc2V0ID49IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KTsNCiAgICB9
DQoNCiAgICBib29sIGhpamFja3NJbmRleGluZ0hlYWRlcigpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gaXNUeXBlZFZpZXcobV9jbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7
DQogICAgfQ0KICAgIA0KICAgIGJvb2wgY291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgp
KQ0KICAgICAgICAgICAgfHwgaGlqYWNrc0luZGV4aW5nSGVhZGVyKCk7DQogICAgfQ0KICAgIA0K
ICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7ICAgIA0KICAg
IGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCk7DQoNCiAgICBQcm9wZXJ0eU9mZnNldCBnZXQoVk0mLCBQcm9wZXJ0eU5hbWUpOw0K
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMpOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4NCiAgICB2b2lkIGZvckVhY2hQcm9wZXJ0eUNvbmN1cnJlbnRseShjb25zdCBGdW5j
dG9yJik7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0KICAgIHZvaWQgZm9yRWFj
aFByb3BlcnR5KFZNJiwgY29uc3QgRnVuY3RvciYpOw0KICAgIA0KICAgIFByb3BlcnR5T2Zmc2V0
IGdldENvbmN1cnJlbnRseShVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsNCiAgICBQcm9wZXJ0eU9m
ZnNldCBnZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMpOw0KICAgIA0KICAgIFZlY3RvcjxQcm9wZXJ0eU1hcEVudHJ5PiBnZXRQcm9wZXJ0
aWVzQ29uY3VycmVudGx5KCk7DQogICAgDQogICAgdm9pZCBzZXRIYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzV2l0aFByb3RvQ2hlY2soYm9vbCBpc19fcHJvdG9fXykNCiAgICB7DQogICAgICAgIHNl
dEhhc0dldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7DQogICAgICAgIGlmICghaXNfX3Byb3Rv
X18pDQogICAgICAgICAgICBzZXRIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4
Y2x1ZGluZ1Byb3RvKHRydWUpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHNldENvbnRhaW5zUmVh
ZE9ubHlQcm9wZXJ0aWVzKCkgeyBzZXRIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGll
c0V4Y2x1ZGluZ1Byb3RvKHRydWUpOyB9DQogICAgDQogICAgdm9pZCBzZXRIYXNDdXN0b21HZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzV2l0aFByb3RvQ2hlY2soYm9vbCBpc19fcHJvdG9fXykNCiAgICB7
DQogICAgICAgIHNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7DQogICAg
ICAgIGlmICghaXNfX3Byb3RvX18pDQogICAgICAgICAgICBzZXRIYXNSZWFkT25seU9yR2V0dGVy
U2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKHRydWUpOw0KICAgIH0NCg0KICAgIHZvaWQg
c2V0Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYsIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvciopOw0KICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2FjaGVkUHJvcGVydHlOYW1l
RW51bWVyYXRvcigpIGNvbnN0Ow0KICAgIGJvb2wgY2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKFZNJikgY29uc3Q7DQogICAgYm9vbCBjYW5BY2Nlc3NQcm9wZXJ0aWVzUXVpY2tseUZvckVu
dW1lcmF0aW9uKCkgY29uc3Q7DQoNCiAgICB2b2lkIHNldENhY2hlZE93bktleXMoVk0mLCBKU0lt
bXV0YWJsZUJ1dHRlcmZseSopOw0KICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25L
ZXlzKCkgY29uc3Q7DQogICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXNJZ25v
cmluZ1NlbnRpbmVsKCkgY29uc3Q7DQogICAgYm9vbCBjYW5DYWNoZU93bktleXMoKSBjb25zdDsN
Cg0KICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9wZXJ0eU5h
bWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQoNCiAgICBKU1N0cmluZyogb2JqZWN0VG9TdHJp
bmdWYWx1ZSgpDQogICAgew0KICAgICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpDQogICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgcmV0dXJuIHJhcmVEYXRhKCktPm9iamVjdFRvU3Ry
aW5nVmFsdWUoKTsNCiAgICB9DQoNCiAgICB2b2lkIHNldE9iamVjdFRvU3RyaW5nVmFsdWUoSlNH
bG9iYWxPYmplY3QqLCBWTSYsIEpTU3RyaW5nKiB2YWx1ZSwgY29uc3QgUHJvcGVydHlTbG90JiB0
b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOw0KDQogICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8o
KSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQ0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBz
dHJ1Y3R1cmVJRE9mZnNldCgpDQogICAgew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nh
c3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMHg0MDAwKS0+bV9i
bG9iKSkgLSAweDQwMDApICsgU3RydWN0dXJlSURCbG9iOjpzdHJ1Y3R1cmVJRE9mZnNldCgpOw0K
ICAgIH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJvdG90eXBlT2Zmc2V0KCkNCiAgICB7DQog
ICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxTdHJ1Y3R1cmUqPigweDQwMDApLT5tX3Byb3RvdHlwZSkpIC0gMHg0MDAwKTsNCiAgICB9
DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IGdsb2JhbE9iamVjdE9mZnNldCgpDQogICAgew0KICAg
ICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nh
c3Q8U3RydWN0dXJlKj4oMHg0MDAwKS0+bV9nbG9iYWxPYmplY3QpKSAtIDB4NDAwMCk7DQogICAg
fQ0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBjbGFzc0luZm9PZmZzZXQoKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0
PFN0cnVjdHVyZSo+KDB4NDAwMCktPm1fY2xhc3NJbmZvKSkgLSAweDQwMDApOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb3V0T2ZMaW5lVHlwZUZsYWdzT2Zmc2V0KCkNCiAgICB7DQog
ICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxTdHJ1Y3R1cmUqPigweDQwMDApLT5tX291dE9mTGluZVR5cGVGbGFncykpIC0gMHg0MDAw
KTsNCiAgICB9DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IGluZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnlPZmZzZXQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0
cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KDB4NDAwMCktPm1fYmxvYikp
IC0gMHg0MDAwKSArIFN0cnVjdHVyZUlEQmxvYjo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9y
eU9mZnNldCgpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgcHRyZGlmZl90IHByb3BlcnR5VGFi
bGVVbnNhZmVPZmZzZXQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KDB4NDAwMCktPm1fcHJv
cGVydHlUYWJsZVVuc2FmZSkpIC0gMHg0MDAwKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgcHRyZGlm
Zl90IGlubGluZUNhcGFjaXR5T2Zmc2V0KCkNCiAgICB7DQogICAgICAgIHJldHVybiAocmVpbnRl
cnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPigweDQw
MDApLT5tX2lubGluZUNhcGFjaXR5KSkgLSAweDQwMDApOw0KICAgIH0NCg0KICAgIHN0YXRpYyBw
dHJkaWZmX3QgcHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkNCiAgICB7DQogICAgICAgIHJldHVy
biAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1
cmUqPigweDQwMDApLT5tX3ByZXZpb3VzT3JSYXJlRGF0YSkpIC0gMHg0MDAwKTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsNCiAgICAgICAgDQog
ICAgYm9vbCB0cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldC5oYXNCZWVu
SW52YWxpZGF0ZWQoKTsNCiAgICB9DQogICAgICAgIA0KICAgIGJvb2wgdHJhbnNpdGlvbldhdGNo
cG9pbnRTZXRJc1N0aWxsVmFsaWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fdHJh
bnNpdGlvbldhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCk7DQogICAgfQ0KICAgIA0KICAgIGJv
b2wgZGZnU2hvdWxkV2F0Y2hJZlBvc3NpYmxlKCkgY29uc3QNCiAgICB7DQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIGlmICh0cmFuc2l0aW9uV2F0Y2hwb2ludElzTGlr
ZWx5VG9CZUZpcmVkKCkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAgDQog
ICAgICAgIGlmIChoYXNCZWVuRGljdGlvbmFyeSgpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIA0KICAgIGJvb2wg
ZGZnU2hvdWxkV2F0Y2goKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGRmZ1Nob3VsZFdh
dGNoSWZQb3NzaWJsZSgpICYmIHRyYW5zaXRpb25XYXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCk7
DQogICAgfQ0KICAgICAgICANCiAgICB2b2lkIGFkZFRyYW5zaXRpb25XYXRjaHBvaW50KFdhdGNo
cG9pbnQqIHdhdGNocG9pbnQpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQuYWRkKHdhdGNocG9pbnQpOw0KICAgIH0NCiAg
ICANCiAgICB2b2lkIGRpZFRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVyZShEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKSBjb25zdDsNCiAgICANCiAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiB0cmFuc2l0aW9uV2F0Y2hwb2ludFNldCgpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldDsNCiAgICB9DQog
ICAgDQogICAgV2F0Y2hwb2ludFNldCogZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9p
bnRTZXQoVk0mLCBQcm9wZXJ0eU9mZnNldCk7DQogICAgdm9pZCBzdGFydFdhdGNoaW5nUHJvcGVy
dHlGb3JSZXBsYWNlbWVudHMoVk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpDQogICAgew0K
ICAgICAgICBlbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCh2bSwgb2Zmc2V0
KTsNCiAgICB9DQogICAgdm9pZCBzdGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHMo
Vk0mLCBQcm9wZXJ0eU5hbWUpOw0KICAgIFdhdGNocG9pbnRTZXQqIHByb3BlcnR5UmVwbGFjZW1l
bnRXYXRjaHBvaW50U2V0KFByb3BlcnR5T2Zmc2V0KTsNCiAgICB2b2lkIGRpZFJlcGxhY2VQcm9w
ZXJ0eShQcm9wZXJ0eU9mZnNldCk7DQogICAgdm9pZCBkaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1l
bnQoVk0mLCBQcm9wZXJ0eU9mZnNldCk7DQogICAgDQogICAgdm9pZCBzdGFydFdhdGNoaW5nSW50
ZXJuYWxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgaWYgKChk
aWRXYXRjaEludGVybmFsUHJvcGVydGllcygpKSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgc3RhcnRXYXRjaGluZ0ludGVybmFsUHJvcGVydGllcyh2bSk7DQogICAgfQ0KICAgIA0KICAg
IFJlZjxTdHJ1Y3R1cmVTaGFwZT4gdG9TdHJ1Y3R1cmVTaGFwZShKU1ZhbHVlLCBib29sJiBzYXdQ
b2x5UHJvdG9TdHJ1Y3R1cmUpOw0KICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0Ow0KICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0Kikg
Y29uc3Q7DQogICAgdm9pZCBkdW1wQnJpZWYoUHJpbnRTdHJlYW0mLCBjb25zdCBDU3RyaW5nJikg
Y29uc3Q7DQogICAgDQogICAgc3RhdGljIHZvaWQgZHVtcENvbnRleHRIZWFkZXIoUHJpbnRTdHJl
YW0mKTsNCiAgICANCiAgICBDb25jdXJyZW50SlNMb2NrJiBsb2NrKCkgeyByZXR1cm4gbV9sb2Nr
OyB9DQoNCiAgICB1bnNpZ25lZCBwcm9wZXJ0eUhhc2goKSBjb25zdCB7IHJldHVybiBtX3Byb3Bl
cnR5SGFzaDsgfQ0KDQogICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udmVydFRvUG9seVByb3RvKGNv
bnN0IFN0cnVjdHVyZSogYSwgY29uc3QgU3RydWN0dXJlKiBiKTsNCg0KICAgIHN0cnVjdCBQcm9w
ZXJ0eUhhc2hFbnRyeSB7DQogICAgICAgIGNvbnN0IEhhc2hUYWJsZSogdGFibGU7DQogICAgICAg
IGNvbnN0IEhhc2hUYWJsZVZhbHVlKiB2YWx1ZTsNCiAgICB9Ow0KICAgIE9wdGlvbmFsPFByb3Bl
cnR5SGFzaEVudHJ5PiBmaW5kUHJvcGVydHlIYXNoRW50cnkoUHJvcGVydHlOYW1lKSBjb25zdDsN
CiAgICANCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6
OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KcHJpdmF0ZToN
CiAgICB0eXBlZGVmIGVudW0geyANCiAgICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwNCiAg
ICAgICAgQ2FjaGVkRGljdGlvbmFyeUtpbmQgPSAxLA0KICAgICAgICBVbmNhY2hlZERpY3Rpb25h
cnlLaW5kID0gMg0KICAgIH0gRGljdGlvbmFyeUtpbmQ7DQoNCnB1YmxpYzoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2RpY3Rpb25hcnlLaW5k
U2hpZnQgPSAwOyBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfZGljdGlvbmFyeUtpbmRNYXNr
ID0gKCgxIDw8ICgyIC0gMSkpIHwgKCgxIDw8ICgyIC0gMSkpIC0gMSkpOyBzdGF0aWMgY29uc3Rl
eHByIHVpbnQzMl90IHNfYml0V2lkdGhPZkRpY3Rpb25hcnlLaW5kID0gMjsgRGljdGlvbmFyeUtp
bmQgZGljdGlvbmFyeUtpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEaWN0aW9uYXJ5
S2luZD4oKG1fYml0RmllbGQgPj4gMCkgJiBzX2RpY3Rpb25hcnlLaW5kTWFzayk7IH0gdm9pZCBz
ZXREaWN0aW9uYXJ5S2luZChEaWN0aW9uYXJ5S2luZCBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9
IH4oc19kaWN0aW9uYXJ5S2luZE1hc2sgPDwgMCk7IG1fYml0RmllbGQgfD0gKG5ld1ZhbHVlICYg
c19kaWN0aW9uYXJ5S2luZE1hc2spIDw8IDA7IH07DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBzX2lzUGlubmVkUHJvcGVydHlUYWJsZVNoaWZ0ID0gMjsgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBzX2lzUGlubmVkUHJvcGVydHlUYWJsZU1hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAo
KDEgPDwgKDEgLSAxKSkgLSAxKSk7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19iaXRXaWR0
aE9mSXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gMTsgYm9vbCBpc1Bpbm5lZFByb3BlcnR5VGFibGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigobV9iaXRGaWVsZCA+PiAyKSAmIHNf
aXNQaW5uZWRQcm9wZXJ0eVRhYmxlTWFzayk7IH0gdm9pZCBzZXRJc1Bpbm5lZFByb3BlcnR5VGFi
bGUoYm9vbCBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9IH4oc19pc1Bpbm5lZFByb3BlcnR5VGFi
bGVNYXNrIDw8IDIpOyBtX2JpdEZpZWxkIHw9IChuZXdWYWx1ZSAmIHNfaXNQaW5uZWRQcm9wZXJ0
eVRhYmxlTWFzaykgPDwgMjsgfTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllc1NoaWZ0ID0gMzsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBzX2hhc0dldHRlclNldHRlclByb3BlcnRpZXNNYXNrID0gKCgxIDw8ICgxIC0gMSkpIHwgKCgx
IDw8ICgxIC0gMSkpIC0gMSkpOyBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfYml0V2lkdGhP
Zkhhc0dldHRlclNldHRlclByb3BlcnRpZXMgPSAxOyBib29sIGhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigobV9iaXRGaWVsZCA+PiAz
KSAmIHNfaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc01hc2spOyB9IHZvaWQgc2V0SGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcyhib29sIG5ld1ZhbHVlKSB7IG1fYml0RmllbGQgJj0gfihzX2hhc0dl
dHRlclNldHRlclByb3BlcnRpZXNNYXNrIDw8IDMpOyBtX2JpdEZpZWxkIHw9IChuZXdWYWx1ZSAm
IHNfaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc01hc2spIDw8IDM7IH07DQogICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBzX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG9TaGlmdCA9IDQ7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19oYXNSZWFk
T25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvTWFzayA9ICgoMSA8PCAo
MSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBzX2JpdFdpZHRoT2ZIYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGlu
Z1Byb3RvID0gMTsgYm9vbCBoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1
ZGluZ1Byb3RvKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQg
Pj4gNCkgJiBzX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJv
dG9NYXNrKTsgfSB2b2lkIHNldEhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8oYm9vbCBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9IH4oc19oYXNSZWFkT25s
eU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvTWFzayA8PCA0KTsgbV9iaXRG
aWVsZCB8PSAobmV3VmFsdWUgJiBzX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG9NYXNrKSA8PCA0OyB9Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc19pc1F1aWNrUHJvcGVydHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb25TaGlmdCA9IDU7
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19pc1F1aWNrUHJvcGVydHlBY2Nlc3NBbGxvd2Vk
Rm9yRW51bWVyYXRpb25NYXNrID0gKCgxIDw8ICgxIC0gMSkpIHwgKCgxIDw8ICgxIC0gMSkpIC0g
MSkpOyBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfYml0V2lkdGhPZklzUXVpY2tQcm9wZXJ0
eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbiA9IDE7IGJvb2wgaXNRdWlja1Byb3BlcnR5QWNj
ZXNzQWxsb3dlZEZvckVudW1lcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9v
bD4oKG1fYml0RmllbGQgPj4gNSkgJiBzX2lzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JF
bnVtZXJhdGlvbk1hc2spOyB9IHZvaWQgc2V0SXNRdWlja1Byb3BlcnR5QWNjZXNzQWxsb3dlZEZv
ckVudW1lcmF0aW9uKGJvb2wgbmV3VmFsdWUpIHsgbV9iaXRGaWVsZCAmPSB+KHNfaXNRdWlja1By
b3BlcnR5QWNjZXNzQWxsb3dlZEZvckVudW1lcmF0aW9uTWFzayA8PCA1KTsgbV9iaXRGaWVsZCB8
PSAobmV3VmFsdWUgJiBzX2lzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlv
bk1hc2spIDw8IDU7IH07DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX3RyYW5zaXRp
b25Qcm9wZXJ0eUF0dHJpYnV0ZXNTaGlmdCA9IDY7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
c190cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzTWFzayA9ICgoMSA8PCAoMTQgLSAxKSkgfCAo
KDEgPDwgKDE0IC0gMSkpIC0gMSkpOyBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfYml0V2lk
dGhPZlRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMgPSAxNDsgdW5zaWduZWQgdHJhbnNpdGlv
blByb3BlcnR5QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
PigobV9iaXRGaWVsZCA+PiA2KSAmIHNfdHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlc01hc2sp
OyB9IHZvaWQgc2V0VHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcyh1bnNpZ25lZCBuZXdWYWx1
ZSkgeyBtX2JpdEZpZWxkICY9IH4oc190cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzTWFzayA8
PCA2KTsgbV9iaXRGaWVsZCB8PSAobmV3VmFsdWUgJiBzX3RyYW5zaXRpb25Qcm9wZXJ0eUF0dHJp
YnV0ZXNNYXNrKSA8PCA2OyB9Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19kaWRQ
cmV2ZW50RXh0ZW5zaW9uc1NoaWZ0ID0gMjA7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19k
aWRQcmV2ZW50RXh0ZW5zaW9uc01hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAx
KSkgLSAxKSk7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19iaXRXaWR0aE9mRGlkUHJldmVu
dEV4dGVuc2lvbnMgPSAxOyBib29sIGRpZFByZXZlbnRFeHRlbnNpb25zKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4gMjApICYgc19kaWRQcmV2ZW50RXh0
ZW5zaW9uc01hc2spOyB9IHZvaWQgc2V0RGlkUHJldmVudEV4dGVuc2lvbnMoYm9vbCBuZXdWYWx1
ZSkgeyBtX2JpdEZpZWxkICY9IH4oc19kaWRQcmV2ZW50RXh0ZW5zaW9uc01hc2sgPDwgMjApOyBt
X2JpdEZpZWxkIHw9IChuZXdWYWx1ZSAmIHNfZGlkUHJldmVudEV4dGVuc2lvbnNNYXNrKSA8PCAy
MDsgfTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfZGlkVHJhbnNpdGlvblNoaWZ0
ID0gMjE7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19kaWRUcmFuc2l0aW9uTWFzayA9ICgo
MSA8PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBzX2JpdFdpZHRoT2ZEaWRUcmFuc2l0aW9uID0gMTsgYm9vbCBkaWRUcmFuc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4gMjEpICYg
c19kaWRUcmFuc2l0aW9uTWFzayk7IH0gdm9pZCBzZXREaWRUcmFuc2l0aW9uKGJvb2wgbmV3VmFs
dWUpIHsgbV9iaXRGaWVsZCAmPSB+KHNfZGlkVHJhbnNpdGlvbk1hc2sgPDwgMjEpOyBtX2JpdEZp
ZWxkIHw9IChuZXdWYWx1ZSAmIHNfZGlkVHJhbnNpdGlvbk1hc2spIDw8IDIxOyB9Ow0KICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZFNoaWZ0ID0g
MjI7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZE1h
c2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkgLSAxKSk7IHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3Qgc19iaXRXaWR0aE9mU3RhdGljUHJvcGVydGllc1JlaWZpZWQgPSAxOyBi
b29sIHN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Ym9vbD4oKG1fYml0RmllbGQgPj4gMjIpICYgc19zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZE1hc2sp
OyB9IHZvaWQgc2V0U3RhdGljUHJvcGVydGllc1JlaWZpZWQoYm9vbCBuZXdWYWx1ZSkgeyBtX2Jp
dEZpZWxkICY9IH4oc19zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZE1hc2sgPDwgMjIpOyBtX2JpdEZp
ZWxkIHw9IChuZXdWYWx1ZSAmIHNfc3RhdGljUHJvcGVydGllc1JlaWZpZWRNYXNrKSA8PCAyMjsg
fTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfaGFzQmVlbkZsYXR0ZW5lZEJlZm9y
ZVNoaWZ0ID0gMjM7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19oYXNCZWVuRmxhdHRlbmVk
QmVmb3JlTWFzayA9ICgoMSA8PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2JpdFdpZHRoT2ZIYXNCZWVuRmxhdHRlbmVkQmVmb3Jl
ID0gMTsgYm9vbCBoYXNCZWVuRmxhdHRlbmVkQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4gMjMpICYgc19oYXNCZWVuRmxhdHRlbmVkQmVmb3Jl
TWFzayk7IH0gdm9pZCBzZXRIYXNCZWVuRmxhdHRlbmVkQmVmb3JlKGJvb2wgbmV3VmFsdWUpIHsg
bV9iaXRGaWVsZCAmPSB+KHNfaGFzQmVlbkZsYXR0ZW5lZEJlZm9yZU1hc2sgPDwgMjMpOyBtX2Jp
dEZpZWxkIHw9IChuZXdWYWx1ZSAmIHNfaGFzQmVlbkZsYXR0ZW5lZEJlZm9yZU1hc2spIDw8IDIz
OyB9Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc19oYXNDdXN0b21HZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzU2hpZnQgPSAyNDsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2hhc0N1
c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNNYXNrID0gKCgxIDw8ICgxIC0gMSkpIHwgKCgxIDw8
ICgxIC0gMSkpIC0gMSkpOyBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfYml0V2lkdGhPZkhh
c0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMgPSAxOyBib29sIGhhc0N1c3RvbUdldHRlclNl
dHRlclByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigobV9iaXRG
aWVsZCA+PiAyNCkgJiBzX2hhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNNYXNrKTsgfSB2
b2lkIHNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoYm9vbCBuZXdWYWx1ZSkgeyBt
X2JpdEZpZWxkICY9IH4oc19oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzTWFzayA8PCAy
NCk7IG1fYml0RmllbGQgfD0gKG5ld1ZhbHVlICYgc19oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzTWFzaykgPDwgMjQ7IH07DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2Rp
ZFdhdGNoSW50ZXJuYWxQcm9wZXJ0aWVzU2hpZnQgPSAyNTsgc3RhdGljIGNvbnN0ZXhwciB1aW50
MzJfdCBzX2RpZFdhdGNoSW50ZXJuYWxQcm9wZXJ0aWVzTWFzayA9ICgoMSA8PCAoMSAtIDEpKSB8
ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2JpdFdp
ZHRoT2ZEaWRXYXRjaEludGVybmFsUHJvcGVydGllcyA9IDE7IGJvb2wgZGlkV2F0Y2hJbnRlcm5h
bFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigobV9iaXRGaWVs
ZCA+PiAyNSkgJiBzX2RpZFdhdGNoSW50ZXJuYWxQcm9wZXJ0aWVzTWFzayk7IH0gdm9pZCBzZXRE
aWRXYXRjaEludGVybmFsUHJvcGVydGllcyhib29sIG5ld1ZhbHVlKSB7IG1fYml0RmllbGQgJj0g
fihzX2RpZFdhdGNoSW50ZXJuYWxQcm9wZXJ0aWVzTWFzayA8PCAyNSk7IG1fYml0RmllbGQgfD0g
KG5ld1ZhbHVlICYgc19kaWRXYXRjaEludGVybmFsUHJvcGVydGllc01hc2spIDw8IDI1OyB9Ow0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc190cmFuc2l0aW9uV2F0Y2hwb2ludElzTGlr
ZWx5VG9CZUZpcmVkU2hpZnQgPSAyNjsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX3RyYW5z
aXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmlyZWRNYXNrID0gKCgxIDw8ICgxIC0gMSkpIHwg
KCgxIDw8ICgxIC0gMSkpIC0gMSkpOyBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfYml0V2lk
dGhPZlRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmlyZWQgPSAxOyBib29sIHRyYW5z
aXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmlyZWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxib29sPigobV9iaXRGaWVsZCA+PiAyNikgJiBzX3RyYW5zaXRpb25XYXRjaHBvaW50SXNM
aWtlbHlUb0JlRmlyZWRNYXNrKTsgfSB2b2lkIHNldFRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtl
bHlUb0JlRmlyZWQoYm9vbCBuZXdWYWx1ZSkgeyBtX2JpdEZpZWxkICY9IH4oc190cmFuc2l0aW9u
V2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkTWFzayA8PCAyNik7IG1fYml0RmllbGQgfD0gKG5l
d1ZhbHVlICYgc190cmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkTWFzaykgPDwg
MjY7IH07DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2hhc0JlZW5EaWN0aW9uYXJ5
U2hpZnQgPSAyNzsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2hhc0JlZW5EaWN0aW9uYXJ5
TWFzayA9ICgoMSA8PCAoMSAtIDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBzX2JpdFdpZHRoT2ZIYXNCZWVuRGljdGlvbmFyeSA9IDE7IGJvb2wg
aGFzQmVlbkRpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigobV9i
aXRGaWVsZCA+PiAyNykgJiBzX2hhc0JlZW5EaWN0aW9uYXJ5TWFzayk7IH0gdm9pZCBzZXRIYXNC
ZWVuRGljdGlvbmFyeShib29sIG5ld1ZhbHVlKSB7IG1fYml0RmllbGQgJj0gfihzX2hhc0JlZW5E
aWN0aW9uYXJ5TWFzayA8PCAyNyk7IG1fYml0RmllbGQgfD0gKG5ld1ZhbHVlICYgc19oYXNCZWVu
RGljdGlvbmFyeU1hc2spIDw8IDI3OyB9Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
c19wcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZ1NoaWZ0ID0gMjg7IHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3Qgc19wcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlv
bmluZ01hc2sgPSAoKDEgPDwgKDEgLSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkgLSAxKSk7IHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3Qgc19iaXRXaWR0aE9mUHJvdGVjdFByb3BlcnR5VGFibGVXaGls
ZVRyYW5zaXRpb25pbmcgPSAxOyBib29sIHByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0
aW9uaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKG1fYml0RmllbGQgPj4g
MjgpICYgc19wcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZ01hc2spOyB9IHZv
aWQgc2V0UHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcoYm9vbCBuZXdWYWx1
ZSkgeyBtX2JpdEZpZWxkICY9IH4oc19wcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlv
bmluZ01hc2sgPDwgMjgpOyBtX2JpdEZpZWxkIHw9IChuZXdWYWx1ZSAmIHNfcHJvdGVjdFByb3Bl
cnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmdNYXNrKSA8PCAyODsgfTsNCiAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IHNfaGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmln
aW5hbFByb3RvU2hpZnQgPSAyOTsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzX2hhc1VuZGVy
c2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90b01hc2sgPSAoKDEgPDwgKDEg
LSAxKSkgfCAoKDEgPDwgKDEgLSAxKSkgLSAxKSk7IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
c19iaXRXaWR0aE9mSGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFBy
b3RvID0gMTsgYm9vbCBoYXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFs
UHJvdG8oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPigobV9iaXRGaWVsZCA+PiAy
OSkgJiBzX2hhc1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90b01h
c2spOyB9IHZvaWQgc2V0SGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5h
bFByb3RvKGJvb2wgbmV3VmFsdWUpIHsgbV9iaXRGaWVsZCAmPSB+KHNfaGFzVW5kZXJzY29yZVBy
b3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvTWFzayA8PCAyOSk7IG1fYml0RmllbGQg
fD0gKG5ld1ZhbHVlICYgc19oYXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdp
bmFsUHJvdG9NYXNrKSA8PCAyOTsgfTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNf
aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvblNoaWZ0ID0gMzA7IHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3Qgc19pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uTWFzayA9ICgoMSA8PCAoMSAt
IDEpKSB8ICgoMSA8PCAoMSAtIDEpKSAtIDEpKTsgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBz
X2JpdFdpZHRoT2ZJc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uID0gMTsgYm9vbCBpc1Byb3Bl
cnR5RGVsZXRpb25UcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
KG1fYml0RmllbGQgPj4gMzApICYgc19pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uTWFzayk7
IH0gdm9pZCBzZXRJc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKGJvb2wgbmV3VmFsdWUpIHsg
bV9iaXRGaWVsZCAmPSB+KHNfaXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbk1hc2sgPDwgMzAp
OyBtX2JpdEZpZWxkIHw9IChuZXdWYWx1ZSAmIHNfaXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlv
bk1hc2spIDw8IDMwOyB9Ow0KDQogICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0
aW9uUHJvcGVydHlBdHRyaWJ1dGVzIDw9IHNpemVvZihUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1
dGVzKSAqIDgpOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFz
c0luZm8qLCBJbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsNCiAgICBTdHJ1
Y3R1cmUoVk0mKTsNCiAgICBTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSopOw0KDQogICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqID0gbnVsbHB0cik7DQogICAgDQogICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsN
CiAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3Rp
bmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmKTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZv
aWQgZmluZFN0cnVjdHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oVmVjdG9yPFN0cnVjdHVy
ZSosIDg+JiBzdHJ1Y3R1cmVzLCBTdHJ1Y3R1cmUqJiwgUHJvcGVydHlUYWJsZSomKTsNCiAgICAN
CiAgICBzdGF0aWMgU3RydWN0dXJlKiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0
dXJlKiwgRGljdGlvbmFyeUtpbmQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOw0KDQogICAgZW51bSBjbGFzcyBTaG91bGRQaW4geyBObywgWWVz
IH07DQogICAgdGVtcGxhdGU8U2hvdWxkUGluLCB0eXBlbmFtZSBGdW5jPg0KICAgIFByb3BlcnR5
T2Zmc2V0IGFkZChWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3Qg
RnVuYyYpOw0KICAgIFByb3BlcnR5T2Zmc2V0IGFkZChWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7DQogICAgdGVtcGxhdGU8U2hvdWxkUGluLCB0eXBlbmFtZSBGdW5jPg0K
ICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZShWTSYsIFByb3BlcnR5TmFtZSwgY29uc3QgRnVuYyYp
Ow0KICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZShWTSYsIFByb3BlcnR5TmFtZSk7DQoNCiAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsNCg0KICAgIA0KICAgIFByb3BlcnR5VGFibGUqIGVuc3Vy
ZVByb3BlcnR5VGFibGVJZk5vdEVtcHR5KFZNJiB2bSkNCiAgICB7DQogICAgICAgIGlmIChQcm9w
ZXJ0eVRhYmxlKiByZXN1bHQgPSBtX3Byb3BlcnR5VGFibGVVbnNhZmUuZ2V0KCkpDQogICAgICAg
ICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICBpZiAoIXByZXZpb3VzSUQoKSkNCiAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOw0KICAgICAgICByZXR1cm4gbWF0ZXJpYWxpemVQcm9wZXJ0eVRh
YmxlKHZtKTsNCiAgICB9DQogICAgDQogICAgDQogICAgUHJvcGVydHlUYWJsZSogZW5zdXJlUHJv
cGVydHlUYWJsZShWTSYgdm0pDQogICAgew0KICAgICAgICBpZiAoUHJvcGVydHlUYWJsZSogcmVz
dWx0ID0gbV9wcm9wZXJ0eVRhYmxlVW5zYWZlLmdldCgpKQ0KICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsNCiAgICAgICAgcmV0dXJuIG1hdGVyaWFsaXplUHJvcGVydHlUYWJsZSh2bSk7DQogICAg
fQ0KICAgIA0KICAgIFByb3BlcnR5VGFibGUqIHByb3BlcnR5VGFibGVPck51bGwoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZVVuc2FmZS5nZXQoKTsNCiAgICB9
DQogICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFByb3BlcnR5VGFibGUqIG1h
dGVyaWFsaXplUHJvcGVydHlUYWJsZShWTSYsIGJvb2wgc2V0UHJvcGVydHlUYWJsZSA9IHRydWUp
Ow0KICAgIA0KICAgIHZvaWQgc2V0UHJvcGVydHlUYWJsZShWTSYgdm0sIFByb3BlcnR5VGFibGUq
IHRhYmxlKTsNCiAgICANCiAgICBQcm9wZXJ0eVRhYmxlKiB0YWtlUHJvcGVydHlUYWJsZU9yQ2xv
bmVJZlBpbm5lZChWTSYpOw0KICAgIFByb3BlcnR5VGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlRm9y
UGlubmluZyhWTSYpOw0KDQogICAgdm9pZCBzZXRQcmV2aW91c0lEKFZNJiwgU3RydWN0dXJlKik7
DQoNCiAgICB2b2lkIGNsZWFyUHJldmlvdXNJRCgpDQogICAgew0KICAgICAgICBpZiAoaGFzUmFy
ZURhdGEoKSkNCiAgICAgICAgICAgIHJhcmVEYXRhKCktPmNsZWFyUHJldmlvdXNJRCgpOw0KICAg
ICAgICBlbHNlDQogICAgICAgICAgICBtX3ByZXZpb3VzT3JSYXJlRGF0YS5jbGVhcigpOw0KICAg
IH0NCg0KICAgIGludCB0cmFuc2l0aW9uQ291bnRFc3RpbWF0ZSgpIGNvbnN0DQogICAgew0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIHJldHVybiBudW1iZXJPZlNsb3RzRm9yTWF4T2Zmc2V0
KG1heE9mZnNldCgpLCBtX2lubGluZUNhcGFjaXR5KTsNCiAgICB9DQoNCiAgICBib29sIGlzVmFs
aWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4s
IEpTT2JqZWN0KiBiYXNlKSBjb25zdDsNCg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSB2b2lkIHBpbihjb25zdCBBYnN0cmFjdExvY2tlciYsIFZNJiwgUHJvcGVydHlUYWJsZSopOw0K
ICAgIHZvaWQgcGluRm9yQ2FjaGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYsIFZNJiwgUHJvcGVy
dHlUYWJsZSopOw0KICAgIA0KICAgIGJvb2wgaXNSYXJlRGF0YShKU0NlbGwqIGNlbGwpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gY2VsbCAmJiBjZWxsLT5zdHJ1Y3R1cmVJRCgpICE9IHN0
cnVjdHVyZUlEKCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV0YWlsc0Z1bmM+
DQogICAgYm9vbCBjaGVja09mZnNldENvbnNpc3RlbmN5KFByb3BlcnR5VGFibGUqLCBjb25zdCBE
ZXRhaWxzRnVuYyYpIGNvbnN0Ow0KICAgIGJvb2wgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpIGNv
bnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgYWxsb2NhdGVSYXJlRGF0YShW
TSYpOw0KICAgIA0KICAgIHZvaWQgc3RhcnRXYXRjaGluZ0ludGVybmFsUHJvcGVydGllcyhWTSYp
Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoID0gNjQ7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoRm9yTm9uRXZh
bFB1dEJ5SWQgPSA1MTI7DQoNCiAgICANCiAgICANCiAgICBTdHJ1Y3R1cmVJREJsb2IgbV9ibG9i
Ow0KICAgIFR5cGVJbmZvOjpPdXRPZkxpbmVUeXBlRmxhZ3MgbV9vdXRPZkxpbmVUeXBlRmxhZ3M7
DQoNCiAgICB1aW50OF90IG1faW5saW5lQ2FwYWNpdHk7DQoNCiAgICBDb25jdXJyZW50SlNMb2Nr
IG1fbG9jazsNCg0KICAgIHVpbnQzMl90IG1fYml0RmllbGQ7DQoNCiAgICBXcml0ZUJhcnJpZXI8
SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Ow0KICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiBtX3Byb3RvdHlwZTsNCiAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsNCg0KICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IG1fcHJl
dmlvdXNPclJhcmVEYXRhOw0KDQogICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBtX3RyYW5z
aXRpb25Qcm9wZXJ0eU5hbWU7DQoNCiAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOw0K
DQogICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIG1fdHJhbnNpdGlvblRhYmxlOw0KDQogICAg
DQogICAgDQogICAgV3JpdGVCYXJyaWVyPFByb3BlcnR5VGFibGU+IG1fcHJvcGVydHlUYWJsZVVu
c2FmZTsNCg0KICAgIG11dGFibGUgSW5saW5lV2F0Y2hwb2ludFNldCBtX3RyYW5zaXRpb25XYXRj
aHBvaW50U2V0Ow0KDQogICAgc3RhdGljX2Fzc2VydCgoZmlyc3RPdXRPZkxpbmVPZmZzZXQgPCAy
NTYpLCAiZmlyc3RPdXRPZkxpbmVPZmZzZXRfZml0cyIpOw0KDQogICAgdWludDE2X3QgbV90cmFu
c2l0aW9uT2Zmc2V0Ow0KICAgIHVpbnQxNl90IG1fbWF4T2Zmc2V0Ow0KDQogICAgdWludDMyX3Qg
bV9wcm9wZXJ0eUhhc2g7DQogICAgVGlueUJsb29tRmlsdGVyIG1fc2VlblByb3BlcnRpZXM7DQoN
CiAgICBmcmllbmQgY2xhc3MgVk1JbnNwZWN0b3I7DQogICAgZnJpZW5kIGNsYXNzIEpTRG9sbGFy
Vk1IZWxwZXI7DQp9Ow0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEFycmF5UHJvZmlsZS5oIg0KDQpuYW1l
c3BhY2UgSlNDIHsNCg0KY2xhc3MgQ29kZUJsb2NrOw0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOw0KDQoNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIEFycmF5TW9kZXM7DQoNCg0KDQpzdGF0aWNf
YXNzZXJ0KENvcHlPbldyaXRlQXJyYXlXaXRoSW50MzIgPT0gMjEsICIiKTsNCnN0YXRpY19hc3Nl
cnQoQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGUgPT0gMjMsICIiKTsNCnN0YXRpY19hc3NlcnQo
Q29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzID09IDI1LCAiIik7DQpjb25zdCBBcnJheU1v
ZGVzIENvcHlPbldyaXRlQXJyYXlXaXRoSW50MzJBcnJheU1vZGUgPSAxIDw8IENvcHlPbldyaXRl
QXJyYXlXaXRoSW50MzI7DQpjb25zdCBBcnJheU1vZGVzIENvcHlPbldyaXRlQXJyYXlXaXRoRG91
YmxlQXJyYXlNb2RlID0gMSA8PCBDb3B5T25Xcml0ZUFycmF5V2l0aERvdWJsZTsNCmNvbnN0IEFy
cmF5TW9kZXMgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzQXJyYXlNb2RlID0gMSA8PCBD
b3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXM7DQoNCmNvbnN0IEFycmF5TW9kZXMgSW50OEFy
cmF5TW9kZSA9IDEgPDwgMTY7DQpjb25zdCBBcnJheU1vZGVzIEludDE2QXJyYXlNb2RlID0gMSA8
PCAxNzsNCmNvbnN0IEFycmF5TW9kZXMgSW50MzJBcnJheU1vZGUgPSAxIDw8IDE4Ow0KY29uc3Qg
QXJyYXlNb2RlcyBVaW50OEFycmF5TW9kZSA9IDEgPDwgMTk7DQpjb25zdCBBcnJheU1vZGVzIFVp
bnQ4Q2xhbXBlZEFycmF5TW9kZSA9IDEgPDwgMjA7IA0KY29uc3QgQXJyYXlNb2RlcyBVaW50MTZB
cnJheU1vZGUgPSAxIDw8IDI2Ow0KY29uc3QgQXJyYXlNb2RlcyBVaW50MzJBcnJheU1vZGUgPSAx
IDw8IDI3Ow0KY29uc3QgQXJyYXlNb2RlcyBGbG9hdDMyQXJyYXlNb2RlID0gMSA8PCAyODsNCmNv
bnN0IEFycmF5TW9kZXMgRmxvYXQ2NEFycmF5TW9kZSA9IDEgPDwgMjk7DQoNCl9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBleHRlcm4gY29uc3QgQXJyYXlNb2RlcyB0eXBlZEFycmF5TW9kZXNbTnVtYmVy
T2ZUeXBlZEFycmF5VHlwZXNFeGNsdWRpbmdEYXRhVmlld107DQoNCmNvbnN0ZXhwciBBcnJheU1v
ZGVzIGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoSW5kZXhpbmdUeXBlIGluZGV4aW5n
TW9kZSkNCnsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpIDw8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbmRleGluZ01vZGUpOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KaW5saW5lIEFycmF5TW9kZXMgYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpDQp7DQogICAgSlNUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlw
ZSgpOw0KICAgIGlmIChpc1R5cGVkQXJyYXlUeXBlKHR5cGUpKQ0KICAgICAgICByZXR1cm4gdHlw
ZWRBcnJheU1vZGVzW3R5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlXTsNCiAgICByZXR1cm4gYXNB
cnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZSgpKTsN
Cn0NCg0Kdm9pZCBkdW1wQXJyYXlNb2RlcyhQcmludFN0cmVhbSYsIEFycmF5TW9kZXMpOw0KY2xh
c3MgQXJyYXlNb2Rlc0R1bXAgeyBwdWJsaWM6IEFycmF5TW9kZXNEdW1wKEFycmF5TW9kZXMgdmFs
dWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dCB7IGR1bXBBcnJheU1vZGVzKG91dCwgbV92YWx1ZSk7IH0gcHJpdmF0ZTogQXJyYXlNb2RlcyBt
X3ZhbHVlOyB9Ow0KDQppbmxpbmUgYm9vbCBtZXJnZUFycmF5TW9kZXMoQXJyYXlNb2RlcyYgbGVm
dCwgQXJyYXlNb2RlcyByaWdodCkNCnsNCiAgICBBcnJheU1vZGVzIG5ld01vZGVzID0gbGVmdCB8
IHJpZ2h0Ow0KICAgIGlmIChuZXdNb2RlcyA9PSBsZWZ0KQ0KICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgbGVmdCA9IG5ld01vZGVzOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQppbmxpbmUgYm9v
bCBhcnJheU1vZGVzQXJlQ2xlYXJPclRvcChBcnJheU1vZGVzIG1vZGVzKQ0Kew0KICAgIHJldHVy
biAhbW9kZXMgfHwgbW9kZXMgPT0gKChhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5v
bkFycmF5KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoSW50
MzIpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhEb3VibGUp
IHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhDb250aWd1b3Vz
KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1
dEFycmF5U3RvcmFnZSkgfCAoSW50OEFycmF5TW9kZSB8IEludDE2QXJyYXlNb2RlIHwgSW50MzJB
cnJheU1vZGUgfCBVaW50OEFycmF5TW9kZSB8IFVpbnQ4Q2xhbXBlZEFycmF5TW9kZSB8IFVpbnQx
NkFycmF5TW9kZSB8IFVpbnQzMkFycmF5TW9kZSB8IEZsb2F0MzJBcnJheU1vZGUgfCBGbG9hdDY0
QXJyYXlNb2RlICkpIHwgKChhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5Q2xh
c3MpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhVbmRlY2lkZWQp
IHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhJbnQzMikgfCBhc0Fy
cmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aERvdWJsZSkgfCBhc0FycmF5TW9k
ZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aENvbnRpZ3VvdXMpIHwgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSkgfCAoQ29w
eU9uV3JpdGVBcnJheVdpdGhJbnQzMkFycmF5TW9kZSB8IENvcHlPbldyaXRlQXJyYXlXaXRoRG91
YmxlQXJyYXlNb2RlIHwgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzQXJyYXlNb2RlKSkp
Ow0KfQ0KDQoNCmlubGluZSBib29sIGFycmF5TW9kZXNBbHJlYWR5Q2hlY2tlZChBcnJheU1vZGVz
IHByb3ZlbiwgQXJyYXlNb2RlcyBleHBlY3RlZCkNCnsNCiAgICByZXR1cm4gKGV4cGVjdGVkIHwg
cHJvdmVuKSA9PSBleHBlY3RlZDsNCn0NCg0KaW5saW5lIGJvb2wgYXJyYXlNb2Rlc0luY2x1ZGVJ
Z25vcmluZ1R5cGVkQXJyYXlzKEFycmF5TW9kZXMgYXJyYXlNb2RlcywgSW5kZXhpbmdUeXBlIHNo
YXBlKQ0Kew0KICAgIEFycmF5TW9kZXMgbW9kZXMgPSBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVk
QXJyYXlzKE5vbkFycmF5IHwgc2hhcGUpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhBcnJheUNsYXNzIHwgc2hhcGUpOw0KICAgIGlmIChoYXNJbnQzMihzaGFwZSkgfHwgaGFzRG91
YmxlKHNoYXBlKSB8fCBoYXNDb250aWd1b3VzKHNoYXBlKSkNCiAgICAgICAgbW9kZXMgfD0gYXNB
cnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheUNsYXNzIHwgc2hhcGUgfCBDb3B5T25X
cml0ZSk7DQogICAgcmV0dXJuICEhKGFycmF5TW9kZXMgJiBtb2Rlcyk7DQp9DQoNCmlubGluZSBi
b29sIHNob3VsZFVzZVNsb3dQdXRBcnJheVN0b3JhZ2UoQXJyYXlNb2RlcyBhcnJheU1vZGVzKQ0K
ew0KICAgIHJldHVybiBhcnJheU1vZGVzSW5jbHVkZUlnbm9yaW5nVHlwZWRBcnJheXMoYXJyYXlN
b2RlcywgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlKTsNCn0NCg0KaW5saW5lIGJvb2wgc2hvdWxk
VXNlRmFzdEFycmF5U3RvcmFnZShBcnJheU1vZGVzIGFycmF5TW9kZXMpDQp7DQogICAgcmV0dXJu
IGFycmF5TW9kZXNJbmNsdWRlSWdub3JpbmdUeXBlZEFycmF5cyhhcnJheU1vZGVzLCBBcnJheVN0
b3JhZ2VTaGFwZSk7DQp9DQoNCmlubGluZSBib29sIHNob3VsZFVzZUNvbnRpZ3VvdXMoQXJyYXlN
b2RlcyBhcnJheU1vZGVzKQ0Kew0KICAgIHJldHVybiBhcnJheU1vZGVzSW5jbHVkZUlnbm9yaW5n
VHlwZWRBcnJheXMoYXJyYXlNb2RlcywgQ29udGlndW91c1NoYXBlKTsNCn0NCg0KaW5saW5lIGJv
b2wgc2hvdWxkVXNlRG91YmxlKEFycmF5TW9kZXMgYXJyYXlNb2RlcykNCnsNCiAgICByZXR1cm4g
YXJyYXlNb2Rlc0luY2x1ZGVJZ25vcmluZ1R5cGVkQXJyYXlzKGFycmF5TW9kZXMsIERvdWJsZVNo
YXBlKTsNCn0NCg0KaW5saW5lIGJvb2wgc2hvdWxkVXNlSW50MzIoQXJyYXlNb2RlcyBhcnJheU1v
ZGVzKQ0Kew0KICAgIHJldHVybiBhcnJheU1vZGVzSW5jbHVkZUlnbm9yaW5nVHlwZWRBcnJheXMo
YXJyYXlNb2RlcywgSW50MzJTaGFwZSk7DQp9DQoNCmlubGluZSBib29sIGhhc1NlZW5BcnJheShB
cnJheU1vZGVzIGFycmF5TW9kZXMpDQp7DQogICAgcmV0dXJuIGFycmF5TW9kZXMgJiAoKGFzQXJy
YXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlDbGFzcykgfCBhc0FycmF5TW9kZXNJZ25v
cmluZ1R5cGVkQXJyYXlzKEFycmF5V2l0aFVuZGVjaWRlZCkgfCBhc0FycmF5TW9kZXNJZ25vcmlu
Z1R5cGVkQXJyYXlzKEFycmF5V2l0aEludDMyKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRB
cnJheXMoQXJyYXlXaXRoRG91YmxlKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMo
QXJyYXlXaXRoQ29udGlndW91cykgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFy
cmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKEFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKSB8IChDb3B5T25Xcml0ZUFycmF5V2l0aEludDMy
QXJyYXlNb2RlIHwgQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGVBcnJheU1vZGUgfCBDb3B5T25X
cml0ZUFycmF5V2l0aENvbnRpZ3VvdXNBcnJheU1vZGUpKTsNCn0NCg0KaW5saW5lIGJvb2wgaGFz
U2Vlbk5vbkFycmF5KEFycmF5TW9kZXMgYXJyYXlNb2RlcykNCnsNCiAgICByZXR1cm4gYXJyYXlN
b2RlcyAmIChhc0FycmF5TW9kZXNJZ25vcmluZ1R5cGVkQXJyYXlzKE5vbkFycmF5KSB8IGFzQXJy
YXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoSW50MzIpIHwgYXNBcnJheU1v
ZGVzSWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhEb3VibGUpIHwgYXNBcnJheU1vZGVz
SWdub3JpbmdUeXBlZEFycmF5cyhOb25BcnJheVdpdGhDb250aWd1b3VzKSB8IGFzQXJyYXlNb2Rl
c0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlN
b2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkg
fCAoSW50OEFycmF5TW9kZSB8IEludDE2QXJyYXlNb2RlIHwgSW50MzJBcnJheU1vZGUgfCBVaW50
OEFycmF5TW9kZSB8IFVpbnQ4Q2xhbXBlZEFycmF5TW9kZSB8IFVpbnQxNkFycmF5TW9kZSB8IFVp
bnQzMkFycmF5TW9kZSB8IEZsb2F0MzJBcnJheU1vZGUgfCBGbG9hdDY0QXJyYXlNb2RlICkpOw0K
fQ0KDQppbmxpbmUgYm9vbCBoYXNTZWVuV3JpdGFibGVBcnJheShBcnJheU1vZGVzIGFycmF5TW9k
ZXMpDQp7DQogICAgcmV0dXJuIGFycmF5TW9kZXMgJiAoYXNBcnJheU1vZGVzSWdub3JpbmdUeXBl
ZEFycmF5cyhBcnJheUNsYXNzKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJy
YXlXaXRoVW5kZWNpZGVkKSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlX
aXRoSW50MzIpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhEb3Vi
bGUpIHwgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5cyhBcnJheVdpdGhDb250aWd1b3Vz
KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSB8IGFzQXJyYXlNb2Rlc0lnbm9yaW5nVHlwZWRBcnJheXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSkpOw0KfQ0KDQppbmxpbmUgYm9vbCBoYXNTZWVuQ29weU9uV3JpdGVBcnJheShBcnJh
eU1vZGVzIGFycmF5TW9kZXMpDQp7DQogICAgcmV0dXJuIGFycmF5TW9kZXMgJiAoQ29weU9uV3Jp
dGVBcnJheVdpdGhJbnQzMkFycmF5TW9kZSB8IENvcHlPbldyaXRlQXJyYXlXaXRoRG91YmxlQXJy
YXlNb2RlIHwgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzQXJyYXlNb2RlKTsNCn0NCg0K
Y2xhc3MgQXJyYXlQcm9maWxlIHsNCiAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOw0KDQpwdWJs
aWM6DQogICAgZXhwbGljaXQgQXJyYXlQcm9maWxlKCkNCiAgICAgICAgOiBtX21heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkNCiAgICAgICAgLCBtX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyh0cnVlKQ0KICAgICAgICAsIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyhmYWxz
ZSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQ0KICAgIEFy
cmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5
TW9kZXM7IH0NCiAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZt
X21heVN0b3JlVG9Ib2xlOyB9DQoNCiAgICB2b2lkIHNldE91dE9mQm91bmRzKCkgeyBtX291dE9m
Qm91bmRzID0gdHJ1ZTsgfQ0KICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyByZXR1
cm4gJm1fb3V0T2ZCb3VuZHM7IH0NCiAgICANCiAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmVJRChT
dHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkgeyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1
cmVJRDsgfQ0KICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
eyBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7IH0NCg0KICAgIHZvaWQg
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
bG9jayopOw0KICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUpOw0K
ICAgIA0KICAgIHZvaWQgb2JzZXJ2ZUFycmF5TW9kZShBcnJheU1vZGVzIG1vZGUpIHsgbV9vYnNl
cnZlZEFycmF5TW9kZXMgfD0gbW9kZTsgfQ0KICAgIHZvaWQgb2JzZXJ2ZUluZGV4ZWRSZWFkKFZN
JiwgSlNDZWxsKiwgdW5zaWduZWQgaW5kZXgpOw0KDQogICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFy
cmF5TW9kZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9vYnNl
cnZlZEFycmF5TW9kZXM7IH0NCiAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyhj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3NlczsgfQ0KICAgIA0KICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlTdG9yZVRvSG9sZTsgfQ0KICAg
IGJvb2wgb3V0T2ZCb3VuZHMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QgeyByZXR1
cm4gbV9vdXRPZkJvdW5kczsgfQ0KICAgIA0KICAgIGJvb2wgdXNlc09yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmVzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc09y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVzOyB9DQoNCiAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24o
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7DQogICAgQ1N0cmluZyBicmll
ZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOw0K
ICAgIA0KcHJpdmF0ZToNCiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0K
ICAgIA0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9
DQogICAgDQogICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9Ow0KICAg
IGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IA0KICAgIGJvb2wgbV9vdXRPZkJvdW5k
cyB7IGZhbHNlIH07DQogICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7
DQogICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA6IDE7DQogICAgYm9vbCBt
X2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgOiAxOw0KICAgIEFycmF5TW9kZXMgbV9vYnNlcnZl
ZEFycmF5TW9kZXMgeyAwIH07DQp9Ow0Kc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxl
KSA9PSAxMik7DQoNCn0gDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxC
eXRlY29kZUNvbnZlbnRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCnN0YXRpYyBjb25zdGV4cHIg
aW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsNCg0Kc3RhdGljIGNv
bnN0ZXhwciBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg4ID0gMTY7DQpzdGF0aWMgY29u
c3RleHByIGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDE2ID0gNjQ7DQpzdGF0aWMgY29u
c3RleHByIGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDMyID0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXg7DQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDYWxs
TGlua0luZm8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENhbGxNb2RlLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xhc3MgQ2FsbE1vZGUgeyBSZWd1bGFyLCBUYWls
LCBDb25zdHJ1Y3QgfTsNCg0KZW51bSBGcmFtZUFjdGlvbiB7IEtlZXBUaGVGcmFtZSA9IDAsIFJl
dXNlVGhlRnJhbWUgfTsNCg0KaW5saW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6
YXRpb25LaW5kRm9yKENhbGxNb2RlIGNhbGxNb2RlKQ0Kew0KICAgIGlmIChjYWxsTW9kZSA9PSBD
YWxsTW9kZTo6Q29uc3RydWN0KQ0KICAgICAgICByZXR1cm4gQ29kZUZvckNvbnN0cnVjdDsNCg0K
ICAgIHJldHVybiBDb2RlRm9yQ2FsbDsNCn0NCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNs
YXNzIFByaW50U3RyZWFtOw0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpD
YWxsTW9kZSk7DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ2FsbExpbmtJbmZvLmgiDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRc
XFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxc
Q2FsbEVkZ2UuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENhbGxWYXJpYW50LmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxFeGVjdXRhYmxlQmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9i
YWxPYmplY3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcSlNBcnJheS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEFyZ0xpc3QuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDogcHVi
bGljIFJlY29yZE92ZXJmbG93IHsNCiAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlcihjb25zdCBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciYpID0gZGVsZXRlOyBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgb3BlcmF0
b3I9KGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyJikgPSBkZWxldGU7Ow0KICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyKE1hcmtlZEFyZ3VtZW50QnVmZmVyJiYpID0gZGVsZXRlOyBNYXJrZWRBcmd1
bWVudEJ1ZmZlciYgb3BlcmF0b3I9KE1hcmtlZEFyZ3VtZW50QnVmZmVyJiYpID0gZGVsZXRlOzsN
CiAgICBwcml2YXRlOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxldGU7
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVy
YXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNp
emUpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgPSBkZWxldGU7IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVhcEFsbG9jYXRpb25NYWNybzsNCiAgICBmcmllbmQgY2xh
c3MgVk07DQogICAgZnJpZW5kIGNsYXNzIEFyZ0xpc3Q7DQoNCnB1YmxpYzoNCiAgICB1c2luZyBC
YXNlID0gUmVjb3JkT3ZlcmZsb3c7DQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaW5saW5l
Q2FwYWNpdHkgPSA4Ow0KICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+
IExpc3RTZXQ7DQoNCiAgICANCiAgICANCiAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlcigpDQogICAg
ICAgIDogbV9zaXplKDApDQogICAgICAgICwgbV9jYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkNCiAg
ICAgICAgLCBtX2J1ZmZlcihtX2lubGluZUJ1ZmZlcikNCiAgICAgICAgLCBtX21hcmtTZXQobnVs
bHB0cikNCiAgICB7DQogICAgfQ0KDQogICAgfk1hcmtlZEFyZ3VtZW50QnVmZmVyKCkNCiAgICB7
DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgaWYgKG1fbWFya1NldCkNCiAgICAgICAgICAg
IG1fbWFya1NldC0+cmVtb3ZlKHRoaXMpOw0KDQogICAgICAgIGlmIChFbmNvZGVkSlNWYWx1ZSog
YmFzZSA9IG1hbGxvY0Jhc2UoKSkNCiAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdl
OjpKU1ZhbHVlLCBiYXNlKTsNCiAgICB9DQoNCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQ0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7
IH0NCg0KICAgIEpTVmFsdWUgYXQoaW50IGkpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoaSA+
PSBtX3NpemUpDQogICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsNCg0KICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHNsb3RGb3IoaSkpOw0KICAgIH0NCg0KICAgIHZvaWQgY2xl
YXIoKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBjbGVhck92ZXJmbG93KCk7
DQogICAgICAgIG1fc2l6ZSA9IDA7DQogICAgfQ0KDQogICAgZW51bSBPdmVyZmxvd0NoZWNrQWN0
aW9uIHsNCiAgICAgICAgQ3Jhc2hPbk92ZXJmbG93LA0KICAgICAgICBXaWxsQ2hlY2tMYXRlcg0K
ICAgIH07DQogICAgdGVtcGxhdGU8T3ZlcmZsb3dDaGVja0FjdGlvbiBhY3Rpb24+DQogICAgdm9p
ZCBhcHBlbmRXaXRoQWN0aW9uKEpTVmFsdWUgdikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgaWYgKG1fc2l6ZSA9PSBtX2NhcGFjaXR5IHx8IG1hbGxvY0Jhc2UoKSkgew0KICAg
ICAgICAgICAgc2xvd0FwcGVuZCh2KTsNCiAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gQ3Jhc2hP
bk92ZXJmbG93KQ0KICAgICAgICAgICAgICAgIGRvIHsgaWYgKCghKCFoYXNPdmVyZmxvd2VkKCkp
KSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JD
cmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDkyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxBcmdMaXN0LmgiLCAgX19GVU5DVElPTl9f
ICAsIDYwICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgICAgICByZXR1
cm47DQogICAgICAgIH0NCg0KICAgICAgICBzbG90Rm9yKG1fc2l6ZSkgPSBKU1ZhbHVlOjplbmNv
ZGUodik7DQogICAgICAgICsrbV9zaXplOw0KICAgIH0NCiAgICB2b2lkIGFwcGVuZChKU1ZhbHVl
IHYpIHsgYXBwZW5kV2l0aEFjdGlvbjxXaWxsQ2hlY2tMYXRlcj4odik7IH0NCiAgICB2b2lkIGFw
cGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coSlNWYWx1ZSB2KSB7IGFwcGVuZFdpdGhBY3Rpb248Q3Jh
c2hPbk92ZXJmbG93Pih2KTsgfQ0KDQogICAgdm9pZCByZW1vdmVMYXN0KCkNCiAgICB7IA0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fc2l6ZS0tOw0KICAgIH0NCg0KICAgIEpTVmFsdWUg
bGFzdCgpIA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZGVjb2RlKHNsb3RGb3IobV9zaXplIC0gMSkpOw0KICAgIH0NCg0KICAgIEpTVmFsdWUgdGFr
ZUxhc3QoKQ0KICAgIHsNCiAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBsYXN0KCk7DQogICAgICAg
IHJlbW92ZUxhc3QoKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgICAgIA0K
ICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhTbG90VmlzaXRvciYsIExpc3RTZXQmKTsNCg0KICAg
IHZvaWQgZW5zdXJlQ2FwYWNpdHkoc2l6ZV90IHJlcXVlc3RlZENhcGFjaXR5KQ0KICAgIHsNCiAg
ICAgICAgaWYgKHJlcXVlc3RlZENhcGFjaXR5ID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2NhcGFj
aXR5KSkNCiAgICAgICAgICAgIHNsb3dFbnN1cmVDYXBhY2l0eShyZXF1ZXN0ZWRDYXBhY2l0eSk7
DQogICAgfQ0KDQogICAgYm9vbCBoYXNPdmVyZmxvd2VkKCkNCiAgICB7DQogICAgICAgIGNsZWFy
TmVlZHNPdmVyZmxvd0NoZWNrKCk7DQogICAgICAgIHJldHVybiBCYXNlOjpoYXNPdmVyZmxvd2Vk
KCk7DQogICAgfQ0KDQogICAgdm9pZCBvdmVyZmxvd0NoZWNrTm90TmVlZGVkKCkgeyBjbGVhck5l
ZWRzT3ZlcmZsb3dDaGVjaygpOyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0K
ICAgIHZvaWQgZmlsbChzaXplX3QgY291bnQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmMpDQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGVuc3VyZUNhcGFjaXR5KGNvdW50KTsNCiAgICAg
ICAgaWYgKEJhc2U6Omhhc092ZXJmbG93ZWQoKSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgbV9zaXplID0gY291bnQ7DQogICAgICAgIGZ1bmMocmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4oJnNsb3RGb3IoMCkpKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdm9pZCBleHBhbmRDYXBh
Y2l0eSgpOw0KICAgIHZvaWQgZXhwYW5kQ2FwYWNpdHkoaW50IG5ld0NhcGFjaXR5KTsNCiAgICB2
b2lkIHNsb3dFbnN1cmVDYXBhY2l0eShzaXplX3QgcmVxdWVzdGVkQ2FwYWNpdHkpOw0KDQogICAg
dm9pZCBhZGRNYXJrU2V0KEpTVmFsdWUpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZv
aWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsNCg0KICAgIEVuY29kZWRKU1ZhbHVlJiBzbG90Rm9yKGlu
dCBpdGVtKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYnVmZmVyW2l0ZW1dOw0KICAg
IH0NCiAgICAgICAgDQogICAgRW5jb2RlZEpTVmFsdWUqIG1hbGxvY0Jhc2UoKQ0KICAgIHsNCiAg
ICAgICAgaWYgKG1fYnVmZmVyID09IG1faW5saW5lQnVmZmVyKQ0KICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7DQogICAgICAgIHJldHVybiAmc2xvdEZvcigwKTsNCiAgICB9DQoNCg0KDQoNCg0K
DQojbGluZSAxNzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcQXJnTGlzdC5oIg0KICAgIHZvaWQgc2V0TmVlZHNPdmVyZmxvd0NoZWNr
KCkgeyB9DQogICAgdm9pZCBjbGVhck5lZWRzT3ZlcmZsb3dDaGVjaygpIHsgfQ0KI2xpbmUgMTc4
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXEFyZ0xpc3QuaCINCiAgICBpbnQgbV9zaXplOw0KICAgIGludCBtX2NhcGFjaXR5Ow0KICAg
IEVuY29kZWRKU1ZhbHVlIG1faW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5XTsNCiAgICBFbmNv
ZGVkSlNWYWx1ZSogbV9idWZmZXI7DQogICAgTGlzdFNldCogbV9tYXJrU2V0Ow0KfTsNCg0KY2xh
c3MgQXJnTGlzdCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsg
OjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0
aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190
aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICBmcmll
bmQgY2xhc3MgSW50ZXJwcmV0ZXI7DQogICAgZnJpZW5kIGNsYXNzIEpJVDsNCnB1YmxpYzoNCiAg
ICBBcmdMaXN0KCkNCiAgICAgICAgOiBtX2FyZ3MobnVsbHB0cikNCiAgICAgICAgLCBtX2FyZ0Nv
dW50KDApDQogICAgew0KICAgIH0NCg0KICAgIEFyZ0xpc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
DQogICAgICAgIDogbV9hcmdzKHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KCZjYWxsRnJhbWVb
Q2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKV0pKQ0KICAgICAgICAsIG1fYXJnQ291bnQoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkpDQogICAgew0KICAgIH0NCg0KICAgIEFyZ0xpc3QoY29u
c3QgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MpDQogICAgICAgIDogbV9hcmdzKHJlaW50ZXJw
cmV0X2Nhc3Q8SlNWYWx1ZSo+KGFyZ3MubV9idWZmZXIpKQ0KICAgICAgICAsIG1fYXJnQ291bnQo
YXJncy5zaXplKCkpDQogICAgew0KICAgIH0NCg0KICAgIEpTVmFsdWUgYXQoaW50IGkpIGNvbnN0
DQogICAgew0KICAgICAgICBpZiAoaSA+PSBtX2FyZ0NvdW50KQ0KICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7DQogICAgICAgIHJldHVybiBtX2FyZ3NbaV07DQogICAgfQ0KDQogICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYXJnQ291bnQ7IH0NCiAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJnQ291bnQ7IH0NCiAgICAgICAgDQogICAgX19kZWNs
c3BlYyhkbGxleHBvcnQpIHZvaWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJl
c3VsdCkgY29uc3Q7DQoNCnByaXZhdGU6DQogICAgSlNWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXJnczsgfQ0KDQogICAgSlNWYWx1ZSogbV9hcmdzOw0KICAgIGludCBtX2FyZ0NvdW50
Ow0KfTsNCg0KfSANCiNsaW5lIDI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQXJyYXkuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQXJyYXlDb252
ZW50aW9ucy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEluZGV4aW5nSGVhZGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXFByb3BlcnR5U3RvcmFnZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp0
eXBlZGVmIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIFByb3BlcnR5U3RvcmFnZTsNCnR5cGVk
ZWYgY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogQ29uc3RQcm9wZXJ0eVN0b3JhZ2U7
DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxJbmRleGluZ0hlYWRlci5oIg0KDQpuYW1lc3BhY2UgSlNDIHsN
Cg0KY2xhc3MgQXJyYXlCdWZmZXI7DQpjbGFzcyBCdXR0ZXJmbHk7DQpjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7DQpjbGFzcyBTdHJ1Y3R1cmU7DQpzdHJ1Y3QgQXJyYXlTdG9yYWdlOw0KDQpj
bGFzcyBJbmRleGluZ0hlYWRlciB7DQpwdWJsaWM6DQogICAgDQogICAgDQogICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtTGVuZ3RoID0gMHgxMDAwMDAwMDsNCiAgICANCiAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW5kZXhpbmdIZWFkZXIoKSB7IHJldHVybiAtc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKTsgfQ0KICAgIA0KICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZBcnJheUJ1ZmZlcigpIHsgcmV0dXJuIChyZWludGVycHJl
dF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEluZGV4aW5nSGVhZGVyKj4oMHg0
MDAwKS0+dS50eXBlZEFycmF5LmJ1ZmZlcikpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxw
dHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxJbmRleGluZ0hlYWRlcio+KDB4NDAwMCktPnUu
bGVuZ3Rocy5wdWJsaWNMZW5ndGgpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mVmVjdG9yTGVuZ3RoKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlm
Zl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SW5kZXhpbmdIZWFkZXIqPigweDQwMDApLT51Lmxlbmd0
aHMudmVjdG9yTGVuZ3RoKSkgLSAweDQwMDApOyB9DQogICAgDQogICAgSW5kZXhpbmdIZWFkZXIo
KQ0KICAgIHsNCiAgICAgICAgdS5sZW5ndGhzLnB1YmxpY0xlbmd0aCA9IDA7DQogICAgICAgIHUu
bGVuZ3Rocy52ZWN0b3JMZW5ndGggPSAwOw0KICAgIH0NCiAgICANCiAgICB1aW50MzJfdCB2ZWN0
b3JMZW5ndGgoKSBjb25zdCB7IHJldHVybiB1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoOyB9DQogICAg
DQogICAgdm9pZCBzZXRWZWN0b3JMZW5ndGgodWludDMyX3QgbGVuZ3RoKQ0KICAgIHsNCiAgICAg
ICAgZG8geyBpZiAoKCEobGVuZ3RoIDw9IG1heGltdW1MZW5ndGgpKSkgZG8geyBXVEY6OmlzSW50
ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdp
dGhJbmZvKDYwLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxJbmRleGluZ0hlYWRlci5oIiwgIF9fRlVOQ1RJT05fXyAgLCA2MSApOyB9
IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICB1Lmxlbmd0aHMudmVjdG9yTGVu
Z3RoID0gbGVuZ3RoOw0KICAgIH0NCiAgICANCiAgICB1aW50MzJfdCBwdWJsaWNMZW5ndGgoKSBj
b25zdCB7IHJldHVybiB1Lmxlbmd0aHMucHVibGljTGVuZ3RoOyB9DQogICAgdm9pZCBzZXRQdWJs
aWNMZW5ndGgodWludDMyX3QgYXV4V29yZCkgeyB1Lmxlbmd0aHMucHVibGljTGVuZ3RoID0gYXV4
V29yZDsgfQ0KICAgIA0KICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcigpIHsgcmV0dXJuIHUu
dHlwZWRBcnJheS5idWZmZXI7IH0NCiAgICB2b2lkIHNldEFycmF5QnVmZmVyKEFycmF5QnVmZmVy
KiBidWZmZXIpIHsgdS50eXBlZEFycmF5LmJ1ZmZlciA9IGJ1ZmZlcjsgfQ0KICAgIA0KICAgIHN0
YXRpYyBJbmRleGluZ0hlYWRlciogZnJvbShCdXR0ZXJmbHkqIGJ1dHRlcmZseSkNCiAgICB7DQog
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEluZGV4aW5nSGVhZGVyKj4oYnV0dGVyZmx5
KSAtIDE7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBjb25zdCBJbmRleGluZ0hlYWRlciogZnJv
bShjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkNCiAgICB7DQogICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEluZGV4aW5nSGVhZGVyKj4oYnV0dGVyZmx5KSAtIDE7DQogICAg
fQ0KICAgIA0KICAgIHN0YXRpYyBJbmRleGluZ0hlYWRlciogZnJvbShBcnJheVN0b3JhZ2UqIGFy
cmF5U3RvcmFnZSkNCiAgICB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PEluZGV4aW5nSGVh
ZGVyKj4oZnJvbShjb25zdF9jYXN0PGNvbnN0IEFycmF5U3RvcmFnZSo+KGFycmF5U3RvcmFnZSkp
KTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGNvbnN0IEluZGV4aW5nSGVhZGVyKiBmcm9tKGNv
bnN0IEFycmF5U3RvcmFnZSogYXJyYXlTdG9yYWdlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5kZXhpbmdIZWFkZXIqPihhcnJheVN0b3JhZ2UpIC0gMTsN
CiAgICB9DQogICAgDQogICAgc3RhdGljIEluZGV4aW5nSGVhZGVyKiBmcm9tRW5kT2YoUHJvcGVy
dHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSkNCiAgICB7DQogICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEluZGV4aW5nSGVhZGVyKj4ocHJvcGVydHlTdG9yYWdlKTsNCiAgICB9DQogICAg
DQogICAgUHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpDQogICAgew0KICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQcm9wZXJ0eVN0b3JhZ2U+KHRoaXMpOw0KICAgIH0NCiAg
ICANCiAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29uc3RQcm9wZXJ0eVN0b3JhZ2U+
KHRoaXMpOw0KICAgIH0NCiAgICANCiAgICBBcnJheVN0b3JhZ2UqIGFycmF5U3RvcmFnZSgpDQog
ICAgew0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBcnJheVN0b3JhZ2UqPih0aGlz
ICsgMSk7DQogICAgfQ0KICAgIA0KICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkNCiAgICB7DQog
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJ1dHRlcmZseSo+KHRoaXMgKyAxKTsNCiAg
ICB9DQogICAgDQogICAgDQogICAgDQogICAgc2l6ZV90IHByZUNhcGFjaXR5KFN0cnVjdHVyZSop
Ow0KICAgIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyhTdHJ1Y3R1cmUqKTsNCiAg
ICANCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCg0K
ICAgIHVuaW9uIHsNCiAgICAgICAgc3RydWN0IHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAg
DQogICAgICAgICAgICANCiAgICAgICAgICAgIHVpbnQzMl90IHB1YmxpY0xlbmd0aDsgDQogICAg
ICAgICAgICB1aW50MzJfdCB2ZWN0b3JMZW5ndGg7IA0KICAgICAgICB9IGxlbmd0aHM7DQogICAg
ICAgIA0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlcjsN
CiAgICAgICAgfSB0eXBlZEFycmF5Ow0KICAgIH0gdTsNCn07DQoNCn0gDQojbGluZSAyNCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxB
cnJheUNvbnZlbnRpb25zLmgiDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCnN0YXRpY19hc3NlcnQoMTAwMDAwVSA8PSAoSW5kZXhpbmdIZWFk
ZXI6Om1heGltdW1MZW5ndGggLSAxKSwgIk1JTl9TUEFSU0VfQVJSQVlfSU5ERVggbXVzdCBiZSBs
ZXNzIHRoYW4gb3IgZXF1YWwgdG8gTUFYX1NUT1JBR0VfVkVDVE9SX0lOREVYIik7DQpzdGF0aWNf
YXNzZXJ0KChJbmRleGluZ0hlYWRlcjo6bWF4aW11bUxlbmd0aCAtIDEpIDw9IDB4RkZGRkZGRkVV
LCAiTUFYX1NUT1JBR0VfVkVDVE9SX0lOREVYIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRv
IE1BWF9BUlJBWV9JTkRFWCIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1pbkRlbnNpdHlNdWx0aXBsaWVyID0gODsNCg0K
aW5saW5lIGJvb2wgaXNEZW5zZUVub3VnaEZvclZlY3Rvcih1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkIG51bVZhbHVlcykNCnsNCiAgICByZXR1cm4gbGVuZ3RoIC8gbWluRGVuc2l0eU11bHRpcGxp
ZXIgPD0gbnVtVmFsdWVzOw0KfQ0KDQppbmxpbmUgYm9vbCBpbmRleElzU3VmZmljaWVudGx5QmV5
b25kTGVuZ3RoRm9yU3BhcnNlTWFwKHVuc2lnbmVkIGksIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAg
ICByZXR1cm4gaSA+PSAxMDAwICYmIGkgPiBsZW5ndGg7DQp9DQoNCmlubGluZSBJbmRleGluZ0hl
YWRlciBpbmRleGluZ0hlYWRlckZvckFycmF5U3RvcmFnZSh1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkIHZlY3Rvckxlbmd0aCkNCnsNCiAgICBJbmRleGluZ0hlYWRlciByZXN1bHQ7DQogICAgcmVz
dWx0LnNldFB1YmxpY0xlbmd0aChsZW5ndGgpOw0KICAgIHJlc3VsdC5zZXRWZWN0b3JMZW5ndGgo
dmVjdG9yTGVuZ3RoKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQppbmxpbmUgSW5kZXhpbmdI
ZWFkZXIgYmFzZUluZGV4aW5nSGVhZGVyRm9yQXJyYXlTdG9yYWdlKHVuc2lnbmVkIGxlbmd0aCkN
CnsNCiAgICByZXR1cm4gaW5kZXhpbmdIZWFkZXJGb3JBcnJheVN0b3JhZ2UobGVuZ3RoLCA0VSk7
DQp9DQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgY2xlYXJBcnJheU1lbXNldChXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIGJhc2UsIHVuc2lnbmVkIGNvdW50KTsNCl9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSB2b2lkIGNsZWFyQXJyYXlNZW1zZXQoZG91YmxlKiBiYXNlLCB1bnNpZ25lZCBjb3Vu
dCk7DQojbGluZSAxMjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcQXJyYXlDb252ZW50aW9ucy5oIg0KDQpfX2ZvcmNlaW5saW5lIHZv
aWQgY2xlYXJBcnJheShXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGJhc2UsIHVuc2lnbmVkIGNvdW50
KQ0Kew0KDQogICAgY29uc3QgdW5zaWduZWQgbWluQ291bnRGb3JNZW1zZXQgPSAxMDA7DQogICAg
aWYgKGNvdW50ID49IG1pbkNvdW50Rm9yTWVtc2V0KSB7DQogICAgICAgIGNsZWFyQXJyYXlNZW1z
ZXQoYmFzZSwgY291bnQpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KI2xpbmUgMTMzICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEFy
cmF5Q29udmVudGlvbnMuaCINCiAgICANCiAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb3VudDsgaS0t
OykNCiAgICAgICAgYmFzZVtpXS5jbGVhcigpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHZvaWQgY2xl
YXJBcnJheShkb3VibGUqIGJhc2UsIHVuc2lnbmVkIGNvdW50KQ0Kew0KDQogICAgY29uc3QgdW5z
aWduZWQgbWluQ291bnRGb3JNZW1zZXQgPSAxMDA7DQogICAgaWYgKGNvdW50ID49IG1pbkNvdW50
Rm9yTWVtc2V0KSB7DQogICAgICAgIGNsZWFyQXJyYXlNZW1zZXQoYmFzZSwgY291bnQpOw0KICAg
ICAgICByZXR1cm47DQogICAgfQ0KI2xpbmUgMTQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEFycmF5Q29udmVudGlvbnMuaCINCiAg
ICANCiAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb3VudDsgaS0tOykNCiAgICAgICAgYmFzZVtpXSA9
IChwdXJlTmFOKCkpOw0KfQ0KDQp9IA0KI2xpbmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNBcnJheS5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxCdXR0ZXJmbHkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpj
bGFzcyBWTTsNCmNsYXNzIENvcHlWaXNpdG9yOw0KY2xhc3MgR0NEZWZlcnJhbENvbnRleHQ7DQpz
dHJ1Y3QgQXJyYXlTdG9yYWdlOw0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCnN0cnVjdCBDb250
aWd1b3VzRGF0YSB7DQogICAgQ29udGlndW91c0RhdGEoKSA9IGRlZmF1bHQ7DQogICAgQ29udGln
dW91c0RhdGEoVCogZGF0YSwgc2l6ZV90IGxlbmd0aCkNCiAgICAgICAgOiBtX2RhdGEoZGF0YSkN
Cg0KDQojbGluZSA0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxCdXR0ZXJmbHkuaCINCiAgICB7DQogICAgICAgICh2b2lkKWxlbmd0
aDsNCiAgICB9DQoNCiAgICBzdHJ1Y3QgRGF0YSB7DQogICAgICAgIERhdGEoVCYgbG9jYXRpb24s
IEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGUpDQogICAgICAgICAgICA6IG1fZGF0YShsb2NhdGlv
bikNCg0KDQojbGluZSA1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxCdXR0ZXJmbHkuaCINCiAgICAgICAgew0KICAgICAgICAgICAg
KHZvaWQpaW5kZXhpbmdNb2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kYXRhLmdldCgpOyB9DQoNCiAgICAgICAgY29u
c3QgVCYgb3BlcmF0b3I9KGNvbnN0IFQmIHZhbHVlKQ0KICAgICAgICB7DQogICAgICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgICAgICBtX2RhdGEgPSB2YWx1ZTsNCiAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIG9wZXJhdG9yIGNvbnN0IFQmKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhOyB9DQoNCiAgICAgICAgDQoNCiAgICAgICAgdm9pZCBzZXQoVk0mIHZt
LCBjb25zdCBKU0NlbGwqIG93bmVyLCBjb25zdCBKU1ZhbHVlJiB2YWx1ZSkNCiAgICAgICAgew0K
ICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgbV9kYXRhLnNldCh2bSwgb3duZXIs
IHZhbHVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmll
cihjb25zdCBKU1ZhbHVlJiB2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICAgICAgbV9kYXRhLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWUpOw0KICAg
ICAgICB9DQoNCiAgICAgICAgdm9pZCBzZXRTdGFydGluZ1ZhbHVlKEpTVmFsdWUgdmFsdWUpDQog
ICAgICAgIHsNCiAgICAgICAgICAgIG1fZGF0YS5zZXRTdGFydGluZ1ZhbHVlKHZhbHVlKTsNCiAg
ICAgICAgfQ0KDQogICAgICAgIHZvaWQgY2xlYXIoKQ0KICAgICAgICB7DQogICAgICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgICAgICBtX2RhdGEuY2xlYXIoKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIEpTVmFsdWUgZ2V0KCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG1f
ZGF0YS5nZXQoKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgVCYgbV9kYXRhOw0KDQoNCiNsaW5l
IDEwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxCdXR0ZXJmbHkuaCINCiAgICB9Ow0KDQogICAgY29uc3QgRGF0YSBhdChjb25zdCBK
U0NlbGwqIG93bmVyLCBzaXplX3QgaW5kZXgpIGNvbnN0Ow0KICAgIERhdGEgYXQoY29uc3QgSlND
ZWxsKiBvd25lciwgc2l6ZV90IGluZGV4KTsNCg0KICAgIFQmIGF0VW5zYWZlKHNpemVfdCBpbmRl
eCkgeyAoKHZvaWQpMCk7IHJldHVybiBtX2RhdGFbaW5kZXhdOyB9DQoNCiAgICBUKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9DQoNCg0KI2xpbmUgMTIwICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEJ1dHRlcmZseS5oIg0K
DQpwcml2YXRlOg0KICAgIFQqIG1fZGF0YSB7IG51bGxwdHIgfTsNCg0KDQojbGluZSAxMjYgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
QnV0dGVyZmx5LmgiDQp9Ow0KDQp1c2luZyBDb250aWd1b3VzRG91YmxlcyA9IENvbnRpZ3VvdXNE
YXRhPGRvdWJsZT47DQp1c2luZyBDb250aWd1b3VzSlNWYWx1ZXMgPSBDb250aWd1b3VzRGF0YTxX
cml0ZUJhcnJpZXI8VW5rbm93bj4+Ow0KdXNpbmcgQ29uc3RDb250aWd1b3VzRG91YmxlcyA9IENv
bnRpZ3VvdXNEYXRhPGNvbnN0IGRvdWJsZT47DQp1c2luZyBDb25zdENvbnRpZ3VvdXNKU1ZhbHVl
cyA9IENvbnRpZ3VvdXNEYXRhPGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPj47DQoNCmNsYXNz
IEJ1dHRlcmZseSB7DQogICAgQnV0dGVyZmx5KGNvbnN0IEJ1dHRlcmZseSYpID0gZGVsZXRlOyBC
dXR0ZXJmbHkmIG9wZXJhdG9yPShjb25zdCBCdXR0ZXJmbHkmKSA9IGRlbGV0ZTs7DQpwcml2YXRl
Og0KICAgIEJ1dHRlcmZseSgpIHsgfSANCnB1YmxpYzoNCiAgICANCiAgICBzdGF0aWMgc2l6ZV90
IHRvdGFsU2l6ZShzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBi
b29sIGhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
cmV0dXJuIChwcmVDYXBhY2l0eSArIHByb3BlcnR5Q2FwYWNpdHkpICogc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSArIChoYXNJbmRleGluZ0hlYWRlciA/IHNpemVvZihJbmRleGluZ0hlYWRlcikgOiAw
KSArIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzOw0KICAgIH0NCg0KICAgIHN0YXRpYyBCdXR0
ZXJmbHkqIGZyb21CYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHBy
b3BlcnR5Q2FwYWNpdHkpDQogICAgew0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxC
dXR0ZXJmbHkqPihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJhc2UpICsgcHJlQ2FwYWNp
dHkgKyBwcm9wZXJ0eUNhcGFjaXR5ICsgMSk7DQogICAgfQ0KICAgIA0KICAgIF9fZm9yY2Vpbmxp
bmUgc3RhdGljIHVuc2lnbmVkIGF2YWlsYWJsZUNvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc2l6ZV90
IHByb3BlcnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7DQogICAgc3RhdGljIHVu
c2lnbmVkIGF2YWlsYWJsZUNvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoU3RydWN0dXJlKiwgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoKTsNCiAgICANCiAgICBfX2ZvcmNlaW5saW5lIHN0YXRpYyB1bnNpZ25l
ZCBvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwg
dW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsNCiAgICBzdGF0aWMgdW5zaWduZWQgb3B0aW1hbENvbnRp
Z3VvdXNWZWN0b3JMZW5ndGgoU3RydWN0dXJlKiwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsNCiAg
ICANCiAgICANCiAgICANCiAgICBzdGF0aWMgQnV0dGVyZmx5KiBmcm9tUG9pbnRlcihjaGFyKiBw
dHIpDQogICAgew0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdXR0ZXJmbHkqPihw
dHIpOw0KICAgIH0NCiAgICANCiAgICBjaGFyKiBwb2ludGVyKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4odGhpcyk7IH0NCiAgICANCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mSW5kZXhpbmdIZWFkZXIoKSB7IHJldHVybiBJbmRleGluZ0hlYWRlcjo6b2Zmc2V0T2ZJbmRl
eGluZ0hlYWRlcigpOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFycmF5QnVmZmVy
KCkgeyByZXR1cm4gb2Zmc2V0T2ZJbmRleGluZ0hlYWRlcigpICsgSW5kZXhpbmdIZWFkZXI6Om9m
ZnNldE9mQXJyYXlCdWZmZXIoKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQdWJs
aWNMZW5ndGgoKSB7IHJldHVybiBvZmZzZXRPZkluZGV4aW5nSGVhZGVyKCkgKyBJbmRleGluZ0hl
YWRlcjo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZWZWN0b3JMZW5ndGgoKSB7IHJldHVybiBvZmZzZXRPZkluZGV4aW5nSGVhZGVyKCkgKyBJ
bmRleGluZ0hlYWRlcjo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKTsgfQ0KDQogICAgc3RhdGljIEJ1
dHRlcmZseSogdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChWTSYsIEpTT2JqZWN0KiBpbnRlbmRlZE93
bmVyLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhh
c0luZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIEdDRGVm
ZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOw0KICAgIHN0YXRpYyBCdXR0ZXJmbHkqIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQoVk0mLCBKU09iamVjdCogaW50ZW5kZWRPd25lciwgc2l6ZV90IHByZUNhcGFj
aXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6
ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsNCg0KICAgIHN0YXRpYyBCdXR0ZXJmbHkq
IHRyeUNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3Qg
cHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhpbmdI
ZWFkZXImIGluZGV4aW5nSGVhZGVyLCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
Ow0KICAgIHN0YXRpYyBCdXR0ZXJmbHkqIGNyZWF0ZShWTSYsIEpTT2JqZWN0KiBpbnRlbmRlZE93
bmVyLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhh
c0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGluZ0hlYWRlciYsIHNpemVfdCBpbmRleGluZ1Bh
eWxvYWRTaXplSW5CeXRlcyk7DQogICAgc3RhdGljIEJ1dHRlcmZseSogY3JlYXRlKFZNJiwgSlNP
YmplY3QqIGludGVuZGVkT3duZXIsIFN0cnVjdHVyZSopOw0KICAgIA0KICAgIEluZGV4aW5nSGVh
ZGVyKiBpbmRleGluZ0hlYWRlcigpIHsgcmV0dXJuIEluZGV4aW5nSGVhZGVyOjpmcm9tKHRoaXMp
OyB9DQogICAgY29uc3QgSW5kZXhpbmdIZWFkZXIqIGluZGV4aW5nSGVhZGVyKCkgY29uc3QgeyBy
ZXR1cm4gSW5kZXhpbmdIZWFkZXI6OmZyb20odGhpcyk7IH0NCiAgICBQcm9wZXJ0eVN0b3JhZ2Ug
cHJvcGVydHlTdG9yYWdlKCkgeyByZXR1cm4gaW5kZXhpbmdIZWFkZXIoKS0+cHJvcGVydHlTdG9y
YWdlKCk7IH0NCiAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSBjb25z
dCB7IHJldHVybiBpbmRleGluZ0hlYWRlcigpLT5wcm9wZXJ0eVN0b3JhZ2UoKTsgfQ0KICAgIA0K
ICAgIHVpbnQzMl90IHB1YmxpY0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGluZGV4aW5nSGVhZGVy
KCktPnB1YmxpY0xlbmd0aCgpOyB9DQogICAgdWludDMyX3QgdmVjdG9yTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gaW5kZXhpbmdIZWFkZXIoKS0+dmVjdG9yTGVuZ3RoKCk7IH0NCiAgICB2b2lkIHNl
dFB1YmxpY0xlbmd0aCh1aW50MzJfdCB2YWx1ZSkgeyBpbmRleGluZ0hlYWRlcigpLT5zZXRQdWJs
aWNMZW5ndGgodmFsdWUpOyB9DQogICAgdm9pZCBzZXRWZWN0b3JMZW5ndGgodWludDMyX3QgdmFs
dWUpIHsgaW5kZXhpbmdIZWFkZXIoKS0+c2V0VmVjdG9yTGVuZ3RoKHZhbHVlKTsgfQ0KDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4NCiAgICBUKiBpbmRleGluZ1BheWxvYWQoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQqPih0aGlzKTsgfQ0KICAgIEFycmF5U3RvcmFnZSogYXJyYXlTdG9y
YWdlKCkgeyByZXR1cm4gaW5kZXhpbmdQYXlsb2FkPEFycmF5U3RvcmFnZT4oKTsgfQ0KICAgIENv
bnRpZ3VvdXNKU1ZhbHVlcyBjb250aWd1b3VzSW50MzIoKSB7IHJldHVybiBDb250aWd1b3VzSlNW
YWx1ZXMoaW5kZXhpbmdQYXlsb2FkPFdyaXRlQmFycmllcjxVbmtub3duPj4oKSwgdmVjdG9yTGVu
Z3RoKCkpOyB9DQogICAgQ29udGlndW91c0RvdWJsZXMgY29udGlndW91c0RvdWJsZSgpIHsgcmV0
dXJuIENvbnRpZ3VvdXNEb3VibGVzKGluZGV4aW5nUGF5bG9hZDxkb3VibGU+KCksIHZlY3Rvckxl
bmd0aCgpKTsgfQ0KICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjb250aWd1b3VzKCkgeyByZXR1cm4g
Q29udGlndW91c0pTVmFsdWVzKGluZGV4aW5nUGF5bG9hZDxXcml0ZUJhcnJpZXI8VW5rbm93bj4+
KCksIHZlY3Rvckxlbmd0aCgpKTsgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4NCiAgICBj
b25zdCBUKiBpbmRleGluZ1BheWxvYWQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPih0aGlzKTsgfQ0KICAgIGNvbnN0IEFycmF5U3RvcmFnZSogYXJyYXlTdG9yYWdl
KCkgY29uc3QgeyByZXR1cm4gaW5kZXhpbmdQYXlsb2FkPEFycmF5U3RvcmFnZT4oKTsgfQ0KICAg
IENvbnN0Q29udGlndW91c0pTVmFsdWVzIGNvbnRpZ3VvdXNJbnQzMigpIGNvbnN0IHsgcmV0dXJu
IENvbnN0Q29udGlndW91c0pTVmFsdWVzKGluZGV4aW5nUGF5bG9hZDxXcml0ZUJhcnJpZXI8VW5r
bm93bj4+KCksIHZlY3Rvckxlbmd0aCgpKTsgfQ0KICAgIENvbnN0Q29udGlndW91c0RvdWJsZXMg
Y29udGlndW91c0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIENvbnN0Q29udGlndW91c0RvdWJsZXMo
aW5kZXhpbmdQYXlsb2FkPGRvdWJsZT4oKSwgdmVjdG9yTGVuZ3RoKCkpOyB9DQogICAgQ29uc3RD
b250aWd1b3VzSlNWYWx1ZXMgY29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIENvbnN0Q29udGln
dW91c0pTVmFsdWVzKGluZGV4aW5nUGF5bG9hZDxXcml0ZUJhcnJpZXI8VW5rbm93bj4+KCksIHZl
Y3Rvckxlbmd0aCgpKTsgfQ0KICAgIA0KICAgIHN0YXRpYyBCdXR0ZXJmbHkqIGZyb21Db250aWd1
b3VzKFdyaXRlQmFycmllcjxVbmtub3duPiogY29udGlndW91cykNCiAgICB7DQogICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEJ1dHRlcmZseSo+KGNvbnRpZ3VvdXMpOw0KICAgIH0NCiAg
ICBzdGF0aWMgQnV0dGVyZmx5KiBmcm9tQ29udGlndW91cyhkb3VibGUqIGNvbnRpZ3VvdXMpDQog
ICAgew0KICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCdXR0ZXJmbHkqPihjb250aWd1
b3VzKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlByb3BlcnR5
U3RvcmFnZSgpIHsgcmV0dXJuIC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihJbmRleGlu
Z0hlYWRlcikpOyB9DQogICAgc3RhdGljIGludCBpbmRleE9mUHJvcGVydHlTdG9yYWdlKCkNCiAg
ICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIC0xOw0KICAgIH0NCg0KICAg
IHZvaWQqIGJhc2Uoc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSkg
eyByZXR1cm4gcHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eUNhcGFjaXR5IC0gcHJlQ2FwYWNp
dHk7IH0NCiAgICB2b2lkKiBiYXNlKFN0cnVjdHVyZSopOw0KDQogICAgc3RhdGljIEJ1dHRlcmZs
eSogY3JlYXRlT3JHcm93QXJyYXlSaWdodCgNCiAgICAgICAgQnV0dGVyZmx5KiwgVk0mLCBKU09i
amVjdCogaW50ZW5kZWRPd25lciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsDQogICAgICAgIHNp
emVfdCBwcm9wZXJ0eUNhcGFjaXR5LCBib29sIGhhZEluZGV4aW5nSGVhZGVyLA0KICAgICAgICBz
aXplX3Qgb2xkSW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIHNpemVfdCBuZXdJbmRleGluZ1Bh
eWxvYWRTaXplSW5CeXRlcyk7IA0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
c3RhdGljIEJ1dHRlcmZseSogY3JlYXRlT3JHcm93UHJvcGVydHlTdG9yYWdlKEJ1dHRlcmZseSos
IFZNJiwgSlNPYmplY3QqIGludGVuZGVkT3duZXIsIFN0cnVjdHVyZSosIHNpemVfdCBvbGRQcm9w
ZXJ0eUNhcGFjaXR5LCBzaXplX3QgbmV3UHJvcGVydHlDYXBhY2l0eSk7DQogICAgQnV0dGVyZmx5
KiBncm93QXJyYXlSaWdodChWTSYsIEpTT2JqZWN0KiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFkSW5kZXhpbmdI
ZWFkZXIsIHNpemVfdCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywgc2l6ZV90IG5ld0lu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsgDQogICAgQnV0dGVyZmx5KiBncm93QXJyYXlSaWdo
dChWTSYsIEpTT2JqZWN0KiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbmV3SW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOw0KDQogICAgQnV0dGVyZmx5KiByZWFsbG9jQXJyYXlS
aWdodElmUG9zc2libGUoVk0mLCBHQ0RlZmVycmFsQ29udGV4dCYsIEpTT2JqZWN0KiBpbnRlbmRl
ZE93bmVyLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHks
IGJvb2wgaGFkSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5C
eXRlcywgc2l6ZV90IG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsgDQoNCiAgICBCdXR0
ZXJmbHkqIHJlc2l6ZUFycmF5KFZNJiwgSlNPYmplY3QqIGludGVuZGVkT3duZXIsIHNpemVfdCBw
cm9wZXJ0eUNhcGFjaXR5LCBib29sIG9sZEhhc0luZGV4aW5nSGVhZGVyLCBzaXplX3Qgb2xkSW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMsIHNpemVfdCBuZXdQcmVDYXBhY2l0eSwgYm9vbCBuZXdI
YXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsN
CiAgICBCdXR0ZXJmbHkqIHJlc2l6ZUFycmF5KFZNJiwgSlNPYmplY3QqIGludGVuZGVkT3duZXIs
IFN0cnVjdHVyZSosIHNpemVfdCBuZXdQcmVDYXBhY2l0eSwgc2l6ZV90IG5ld0luZGV4aW5nUGF5
bG9hZFNpemVJbkJ5dGVzKTsgDQogICAgQnV0dGVyZmx5KiB1bnNoaWZ0KFN0cnVjdHVyZSosIHNp
emVfdCBudW1iZXJPZlNsb3RzKTsNCiAgICBCdXR0ZXJmbHkqIHNoaWZ0KFN0cnVjdHVyZSosIHNp
emVfdCBudW1iZXJPZlNsb3RzKTsNCn07DQoNCn0gDQojbGluZSAyNiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0FycmF5LmgiDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNPYmplY3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxBcnJheVN0b3JhZ2UuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTcGFyc2VBcnJheVZhbHVlTWFwLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxQcm9wZXJ0eURlc2NyaXB0b3IuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0KY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsNCnB1YmxpYzoNCiAg
ICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6RmFsc2UpLCAi
VHJpU3RhdGU6OkZhbHNlIGlzIDAuIik7DQogICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1
aW50OF90PihUcmlTdGF0ZTo6VHJ1ZSkgPT0gMSwgIlRyaVN0YXRlOjpUcnVlIGlzIDEuIik7DQog
ICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6SW5kZXRlcm1p
bmF0ZSkgPT0gMiwgIlRyaVN0YXRlOjpJbmRldGVybWluYXRlIGlzIDIuIik7DQoNCiAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIENvbmZpZ3VyYWJsZVNoaWZ0ID0gMDsNCiAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIEVudW1lcmFibGVTaGlmdCA9IDI7DQogICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBXcml0YWJsZVNoaWZ0ID0gNDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFZhbHVlU2hpZnQgPSA2Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgR2V0
U2hpZnQgPSA3Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU2V0U2hpZnQgPSA4Ow0K
DQogICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKCkNCiAgICAgICAgOiBtX2F0dHJpYnV0ZXMo
DQogICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGUpIDw8IENvbmZpZ3VyYWJsZVNoaWZ0KQ0KICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIDw8IEVudW1lcmFibGVTaGlmdCkNCiAgICAg
ICAgICAgIHwgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSA8
PCBXcml0YWJsZVNoaWZ0KQ0KICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJp
U3RhdGU6OkZhbHNlKSA8PCBWYWx1ZVNoaWZ0KQ0KICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8
dWludDhfdD4oVHJpU3RhdGU6OkZhbHNlKSA8PCBHZXRTaGlmdCkNCiAgICAgICAgICAgIHwgKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KFRyaVN0YXRlOjpGYWxzZSkgPDwgU2V0U2hpZnQpKQ0KICAgIHsN
CiAgICB9DQoNCiAgICBleHBsaWNpdCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXModW5zaWduZWQg
YXR0cmlidXRlcykNCiAgICAgICAgOiBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykNCiAgICB7DQog
ICAgfQ0KDQogICAgdW5zaWduZWQgcmF3UmVwcmVzZW50YXRpb24oKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsNCiAgICB9DQoNCiAgICBib29sIGhhc1ZhbHVlKCkg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFZhbHVl
U2hpZnQpOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0VmFsdWUoKQ0KICAgIHsNCiAgICAgICAgbV9h
dHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBWYWx1ZVNoaWZ0KTsNCiAgICB9DQoN
CiAgICBib29sIGhhc0dldCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9hdHRyaWJ1
dGVzICYgKDBiMSA8PCBHZXRTaGlmdCk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRHZXQoKQ0KICAg
IHsNCiAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBHZXRTaGlm
dCk7DQogICAgfQ0KDQogICAgYm9vbCBoYXNTZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgU2V0U2hpZnQpOw0KICAgIH0NCg0KICAgIHZvaWQg
c2V0U2V0KCkNCiAgICB7DQogICAgICAgIG1fYXR0cmlidXRlcyA9IG1fYXR0cmlidXRlcyB8ICgw
YjEgPDwgU2V0U2hpZnQpOw0KICAgIH0NCg0KICAgIGJvb2wgaGFzV3JpdGFibGUoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsNCiAgICB9DQoNCiAgICBPcHRpb25hbDxib29sPiB3cml0
YWJsZSgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoIWhhc1dyaXRhYmxlKCkpDQogICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRl
KFdyaXRhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOw0KICAgIH0NCg0KICAgIGJvb2wgaGFz
Q29uZmlndXJhYmxlKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBleHRyYWN0VHJpU3Rh
dGUoQ29uZmlndXJhYmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOw0KICAgIH0N
Cg0KICAgIE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0DQogICAgew0KICAgICAg
ICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgpKQ0KICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsNCiAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgPT0g
VHJpU3RhdGU6OlRydWU7DQogICAgfQ0KDQogICAgYm9vbCBoYXNFbnVtZXJhYmxlKCkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAh
PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsNCiAgICB9DQoNCiAgICBPcHRpb25hbDxib29sPiBl
bnVtZXJhYmxlKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICghaGFzRW51bWVyYWJsZSgpKQ0K
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCiAgICAgICAgcmV0dXJuIGV4dHJhY3RU
cmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOw0KICAgIH0NCg0KICAg
IHZvaWQgc2V0V3JpdGFibGUoYm9vbCB2YWx1ZSkNCiAgICB7DQogICAgICAgIGZpbGxXaXRoVHJp
U3RhdGUodmFsdWUgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZSwgV3JpdGFibGVT
aGlmdCk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRDb25maWd1cmFibGUoYm9vbCB2YWx1ZSkNCiAg
ICB7DQogICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRy
aVN0YXRlOjpGYWxzZSwgQ29uZmlndXJhYmxlU2hpZnQpOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0
RW51bWVyYWJsZShib29sIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2
YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBFbnVtZXJhYmxlU2hpZnQp
Ow0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB2b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUg
c3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQ0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgbWFzayA9IDBi
MTEgPDwgc2hpZnQ7DQogICAgICAgIG1fYXR0cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFz
aykgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGUpIDw8IHNoaWZ0KTsNCiAgICB9DQoNCiAg
ICBUcmlTdGF0ZSBleHRyYWN0VHJpU3RhdGUodW5zaWduZWQgc2hpZnQpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHJpU3RhdGU+KChtX2F0dHJpYnV0ZXMgPj4gc2hp
ZnQpICYgMGIxMSk7DQogICAgfQ0KDQogICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOw0KfTsNCg0K
DQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcUHJvcGVydHlEZXNjcmlwdG9yLmgiDQoNCg0KDQpuYW1lc3BhY2Ug
SlNDIHsNCg0KY2xhc3MgR2V0dGVyU2V0dGVyOw0KDQpjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3Ig
ew0KcHVibGljOg0KICAgIFByb3BlcnR5RGVzY3JpcHRvcigpDQogICAgICAgIDogbV9hdHRyaWJ1
dGVzKGRlZmF1bHRBdHRyaWJ1dGVzKQ0KICAgICAgICAsIG1fc2VlbkF0dHJpYnV0ZXMoMCkNCiAg
ICB7DQogICAgfQ0KICAgIFByb3BlcnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQ0KICAgICAgICA6IG1fdmFsdWUodmFsdWUpDQogICAgICAgICwgbV9hdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpDQogICAgICAgICwgbV9zZWVuQXR0cmlidXRlcyhFbnVtZXJhYmxl
UHJlc2VudCB8IENvbmZpZ3VyYWJsZVByZXNlbnQgfCBXcml0YWJsZVByZXNlbnQpDQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgIH0NCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCB3cml0YWJsZSgpIGNvbnN0
Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIGVudW1lcmFibGUoKSBjb25zdDsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBjb25maWd1cmFibGUoKSBjb25zdDsNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBpc0RhdGFEZXNjcmlwdG9yKCkgY29uc3Q7DQogICAg
Ym9vbCBpc0dlbmVyaWNEZXNjcmlwdG9yKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIGJvb2wgaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSBjb25zdDsNCiAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9DQogICAgSlNWYWx1ZSB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0NCiAgICBHZXR0ZXJTZXR0ZXIqIHNsb3dHZXR0
ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsgDQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIEpTVmFsdWUgZ2V0dGVyKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEpT
VmFsdWUgc2V0dGVyKCkgY29uc3Q7DQogICAgSlNPYmplY3QqIGdldHRlck9iamVjdCgpIGNvbnN0
Ow0KICAgIEpTT2JqZWN0KiBzZXR0ZXJPYmplY3QoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgdm9pZCBzZXRVbmRlZmluZWQoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
dm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHNldEN1c3RvbURlc2NyaXB0b3IodW5zaWduZWQgYXR0
cmlidXRlcyk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgc2V0QWNjZXNzb3JEZXNj
cmlwdG9yKEdldHRlclNldHRlciogYWNjZXNzb3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOw0KICAgIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7DQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHZvaWQgc2V0Q29uZmlndXJhYmxlKGJvb2wpOw0KICAgIHZvaWQgc2V0VmFs
dWUoSlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0NCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgdm9pZCBzZXRTZXR0ZXIoSlNWYWx1ZSk7DQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIHZvaWQgc2V0R2V0dGVyKEpTVmFsdWUpOw0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICEobV92YWx1ZSB8fCBtX2dldHRlciB8fCBtX3NldHRlciB8fCBtX3NlZW5BdHRyaWJ1
dGVzKTsgfQ0KICAgIGJvb2wgd3JpdGFibGVQcmVzZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWVu
QXR0cmlidXRlcyAmIFdyaXRhYmxlUHJlc2VudDsgfQ0KICAgIGJvb2wgZW51bWVyYWJsZVByZXNl
bnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1dGVzICYgRW51bWVyYWJsZVByZXNlbnQ7
IH0NCiAgICBib29sIGNvbmZpZ3VyYWJsZVByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5B
dHRyaWJ1dGVzICYgQ29uZmlndXJhYmxlUHJlc2VudDsgfQ0KICAgIGJvb2wgc2V0dGVyUHJlc2Vu
dCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXR0ZXI7IH0NCiAgICBib29sIGdldHRlclByZXNlbnQo
KSBjb25zdCB7IHJldHVybiAhIW1fZ2V0dGVyOyB9DQogICAgYm9vbCBlcXVhbFRvKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBvdGhlcikgY29uc3Q7DQogICAgYm9v
bCBhdHRyaWJ1dGVzRXF1YWwoY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBvdGhlcikgY29uc3Q7
DQogICAgdW5zaWduZWQgYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYgY3VycmVudCkgY29uc3Q7DQoNCnByaXZhdGU6DQogICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBkZWZhdWx0QXR0cmlidXRlcyA9IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5Ow0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYpIHsgcmV0dXJuIGZhbHNlOyB9DQogICAgZW51bSB7IFdyaXRhYmxlUHJlc2VudCA9IDEsIEVu
dW1lcmFibGVQcmVzZW50ID0gMiwgQ29uZmlndXJhYmxlUHJlc2VudCA9IDR9Ow0KICAgIA0KICAg
IEpTVmFsdWUgbV92YWx1ZTsNCiAgICBKU1ZhbHVlIG1fZ2V0dGVyOw0KICAgIEpTVmFsdWUgbV9z
ZXR0ZXI7DQogICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOw0KICAgIHVuc2lnbmVkIG1fc2VlbkF0
dHJpYnV0ZXM7DQp9Ow0KDQppbmxpbmUgUHJvcGVydHlEZXNjcmlwdG9yIHRvUHJvcGVydHlEZXNj
cmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRlciwgRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpDQp7DQogICAgDQogICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2M7DQoNCiAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gZW51bWVyYWJsZSA9IGF0
dHJpYnV0ZXMuZW51bWVyYWJsZSgpKQ0KICAgICAgICBkZXNjLnNldEVudW1lcmFibGUoZW51bWVy
YWJsZS52YWx1ZSgpKTsNCg0KICAgIGlmIChPcHRpb25hbDxib29sPiBjb25maWd1cmFibGUgPSBh
dHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpKQ0KICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShj
b25maWd1cmFibGUudmFsdWUoKSk7DQoNCiAgICBpZiAoYXR0cmlidXRlcy5oYXNWYWx1ZSgpKQ0K
ICAgICAgICBkZXNjLnNldFZhbHVlKHZhbHVlKTsNCg0KICAgIGlmIChPcHRpb25hbDxib29sPiB3
cml0YWJsZSA9IGF0dHJpYnV0ZXMud3JpdGFibGUoKSkNCiAgICAgICAgZGVzYy5zZXRXcml0YWJs
ZSh3cml0YWJsZS52YWx1ZSgpKTsNCg0KICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQ0KICAg
ICAgICBkZXNjLnNldEdldHRlcihnZXR0ZXIpOw0KDQogICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0
KCkpDQogICAgICAgIGRlc2Muc2V0U2V0dGVyKHNldHRlcik7DQoNCiAgICByZXR1cm4gZGVzYzsN
Cn0NCg0KfQ0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxQ
dXREaXJlY3RJbmRleE1vZGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQplbnVtIFB1
dERpcmVjdEluZGV4TW9kZSB7IFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCwgUHV0RGlyZWN0
SW5kZXhTaG91bGROb3RUaHJvdywgUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyB9Ow0KDQp9IA0K
I2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIg0KDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KY2xhc3MgU3BhcnNlQXJyYXlWYWx1ZU1hcDsNCg0KY2xhc3MgU3BhcnNlQXJyYXlFbnRy
eSA6IHByaXZhdGUgV3JpdGVCYXJyaWVyPFVua25vd24+IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsg
KCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0g
aW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhp
c01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBXcml0ZUJhcnJpZXI8VW5r
bm93bj47DQoNCiAgICBTcGFyc2VBcnJheUVudHJ5KCkNCiAgICB7DQogICAgICAgIEJhc2U6OnNl
dFdpdGhvdXRXcml0ZUJhcnJpZXIoanNVbmRlZmluZWQoKSk7DQogICAgfQ0KDQogICAgdm9pZCBn
ZXQoSlNPYmplY3QqLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsNCiAgICB2b2lkIGdldChQcm9wZXJ0
eURlc2NyaXB0b3ImKSBjb25zdDsNCiAgICBib29sIHB1dChKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRU
aHJvdyk7DQogICAgSlNWYWx1ZSBnZXROb25TcGFyc2VNb2RlKCkgY29uc3Q7DQogICAgSlNWYWx1
ZSBnZXRDb25jdXJyZW50bHkoKSBjb25zdDsNCg0KICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0NCg0KICAgIHZvaWQgZm9yY2VTZXQodW5zaWdu
ZWQgYXR0cmlidXRlcykNCiAgICB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIGlmIChpc1g4NigpKQ0KICAgICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsNCiAg
ICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsNCiAgICB9DQoNCiAgICB2b2lkIGZvcmNl
U2V0KFZNJiB2bSwgSlNDZWxsKiBtYXAsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpDQogICAgew0KICAgICAgICBCYXNlOjpzZXQodm0sIG1hcCwgdmFsdWUpOw0KICAgICAgICBm
b3JjZVNldChhdHRyaWJ1dGVzKTsNCiAgICB9DQoNCiAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4m
IGFzVmFsdWUoKSB7IHJldHVybiAqdGhpczsgfQ0KDQpwcml2YXRlOg0KICAgIHVuc2lnbmVkIG1f
YXR0cmlidXRlcyB7IDAgfTsNCn07DQoNCmNsYXNzIFNwYXJzZUFycmF5VmFsdWVNYXAgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOw0KICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQogICAgDQpwcml2YXRlOg0KICAgIHR5cGVk
ZWYgSGFzaE1hcDx1aW50NjRfdCwgU3BhcnNlQXJyYXlFbnRyeSwgV1RGOjpJbnRIYXNoPHVpbnQ2
NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IE1hcDsN
Cg0KICAgIGVudW0gRmxhZ3Mgew0KICAgICAgICBOb3JtYWwgPSAwLA0KICAgICAgICBTcGFyc2VN
b2RlID0gMSwNCiAgICAgICAgTGVuZ3RoSXNSZWFkT25seSA9IDIsDQogICAgfTsNCg0KICAgIFNw
YXJzZUFycmF5VmFsdWVNYXAoVk0mKTsNCiAgICANCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7DQoNCnB1YmxpYzoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCiAg
ICANCiAgICB0eXBlZGVmIE1hcDo6aXRlcmF0b3IgaXRlcmF0b3I7DQogICAgdHlwZWRlZiBNYXA6
OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOw0KICAgIHR5cGVkZWYgTWFwOjpBZGRSZXN1
bHQgQWRkUmVzdWx0Ow0KDQogICAgc3RhdGljIFNwYXJzZUFycmF5VmFsdWVNYXAqIGNyZWF0ZShW
TSYpOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsNCiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOw0KDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICZ2bS5zcGFyc2VB
cnJheVZhbHVlTWFwU3BhY2U7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOw0K
DQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0K
DQogICAgYm9vbCBzcGFyc2VNb2RlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX2ZsYWdzICYg
U3BhcnNlTW9kZTsNCiAgICB9DQoNCiAgICB2b2lkIHNldFNwYXJzZU1vZGUoKQ0KICAgIHsNCiAg
ICAgICAgbV9mbGFncyA9IHN0YXRpY19jYXN0PEZsYWdzPihtX2ZsYWdzIHwgU3BhcnNlTW9kZSk7
DQogICAgfQ0KDQogICAgYm9vbCBsZW5ndGhJc1JlYWRPbmx5KCkNCiAgICB7DQogICAgICAgIHJl
dHVybiBtX2ZsYWdzICYgTGVuZ3RoSXNSZWFkT25seTsNCiAgICB9DQoNCiAgICB2b2lkIHNldExl
bmd0aElzUmVhZE9ubHkoKQ0KICAgIHsNCiAgICAgICAgbV9mbGFncyA9IHN0YXRpY19jYXN0PEZs
YWdzPihtX2ZsYWdzIHwgTGVuZ3RoSXNSZWFkT25seSk7DQogICAgfQ0KDQogICAgDQogICAgYm9v
bCBwdXRFbnRyeShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgdW5zaWduZWQsIEpTVmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpOw0KICAgIGJvb2wgcHV0RGlyZWN0KEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqLCB1bnNpZ25lZCwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0RGly
ZWN0SW5kZXhNb2RlKTsNCiAgICBBZGRSZXN1bHQgYWRkKEpTT2JqZWN0KiwgdW5zaWduZWQpOw0K
ICAgIGl0ZXJhdG9yIGZpbmQodW5zaWduZWQgaSkgeyByZXR1cm4gbV9tYXAuZmluZChpKTsgfQ0K
ICAgIA0KICAgIHZvaWQgcmVtb3ZlKGl0ZXJhdG9yIGl0KTsNCiAgICB2b2lkIHJlbW92ZSh1bnNp
Z25lZCBpKTsNCg0KICAgIEpTVmFsdWUgZ2V0Q29uY3VycmVudGx5KHVuc2lnbmVkIGluZGV4KTsN
Cg0KICAgIA0KICAgIGl0ZXJhdG9yIG5vdEZvdW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0N
CiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX21hcC5pc0VtcHR5KCk7IH0NCiAg
ICBib29sIGNvbnRhaW5zKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5z
KGkpOyB9DQogICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0N
CiAgICANCiAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmJl
Z2luKCk7IH0NCiAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5l
bmQoKTsgfQ0KDQpwcml2YXRlOg0KICAgIE1hcCBtX21hcDsNCiAgICBGbGFncyBtX2ZsYWdzIHsg
Tm9ybWFsIH07DQogICAgc2l6ZV90IG1fcmVwb3J0ZWRDYXBhY2l0eSB7IDAgfTsNCn07DQoNCn0g
DQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxBcnJheVN0b3JhZ2UuaCINCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoN
Cg0KDQoNCg0KDQoNCg0Kc3RydWN0IEFycmF5U3RvcmFnZSB7DQogICAgQXJyYXlTdG9yYWdlKGNv
bnN0IEFycmF5U3RvcmFnZSYpID0gZGVsZXRlOyBBcnJheVN0b3JhZ2UmIG9wZXJhdG9yPShjb25z
dCBBcnJheVN0b3JhZ2UmKSA9IGRlbGV0ZTs7DQpwcml2YXRlOg0KICAgIEFycmF5U3RvcmFnZSgp
IHsgfSANCnB1YmxpYzoNCiAgICANCiAgICBzdGF0aWMgQXJyYXlTdG9yYWdlKiBmcm9tKEJ1dHRl
cmZseSogYnV0dGVyZmx5KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEFycmF5U3RvcmFnZSo+
KGJ1dHRlcmZseSk7IH0NCiAgICBzdGF0aWMgQXJyYXlTdG9yYWdlKiBmcm9tKEluZGV4aW5nSGVh
ZGVyKiBpbmRleGluZ0hlYWRlcikgeyByZXR1cm4gaW5kZXhpbmdIZWFkZXItPmFycmF5U3RvcmFn
ZSgpOyB9DQogICAgDQogICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PEJ1dHRlcmZseSo+KHRoaXMpOyB9DQogICAgSW5kZXhpbmdIZWFkZXIqIGluZGV4
aW5nSGVhZGVyKCkgeyByZXR1cm4gSW5kZXhpbmdIZWFkZXI6OmZyb20odGhpcyk7IH0NCiAgICBj
b25zdCBJbmRleGluZ0hlYWRlciogaW5kZXhpbmdIZWFkZXIoKSBjb25zdCB7IHJldHVybiBJbmRl
eGluZ0hlYWRlcjo6ZnJvbSh0aGlzKTsgfQ0KICAgIA0KICAgIA0KICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIGluZGV4aW5nSGVhZGVyKCktPnB1YmxpY0xlbmd0aCgpOyB9DQog
ICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQgbGVuZ3RoKSB7IGluZGV4aW5nSGVhZGVyKCktPnNl
dFB1YmxpY0xlbmd0aChsZW5ndGgpOyB9DQogICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gaW5kZXhpbmdIZWFkZXIoKS0+dmVjdG9yTGVuZ3RoKCk7IH0NCiAgICB2b2lk
IHNldFZlY3Rvckxlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIHsgaW5kZXhpbmdIZWFkZXIoKS0+c2V0
VmVjdG9yTGVuZ3RoKGxlbmd0aCk7IH0NCiAgICANCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgY29w
eUhlYWRlckZyb21EdXJpbmdHQyhjb25zdCBBcnJheVN0b3JhZ2UmIG90aGVyKQ0KICAgIHsNCiAg
ICAgICAgbV9zcGFyc2VNYXAuY29weUZyb20ob3RoZXIubV9zcGFyc2VNYXApOw0KICAgICAgICBt
X2luZGV4QmlhcyA9IG90aGVyLm1faW5kZXhCaWFzOw0KICAgICAgICBtX251bVZhbHVlc0luVmVj
dG9yID0gb3RoZXIubV9udW1WYWx1ZXNJblZlY3RvcjsNCiAgICB9DQogICAgDQogICAgYm9vbCBo
YXNIb2xlcygpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9udW1WYWx1ZXNJblZlY3Rv
ciAhPSBsZW5ndGgoKTsNCiAgICB9ICAgDQoNCiAgICBib29sIGluU3BhcnNlTW9kZSgpDQogICAg
ew0KICAgICAgICByZXR1cm4gbV9zcGFyc2VNYXAgJiYgbV9zcGFyc2VNYXAtPnNwYXJzZU1vZGUo
KTsNCiAgICB9DQoNCiAgICBDb250aWd1b3VzSlNWYWx1ZXMgdmVjdG9yKCkgeyByZXR1cm4gQ29u
dGlndW91c0pTVmFsdWVzKG1fdmVjdG9yLCB2ZWN0b3JMZW5ndGgoKSk7IH0NCg0KICAgIHN0YXRp
YyBwdHJkaWZmX3QgbGVuZ3RoT2Zmc2V0KCkgeyByZXR1cm4gQnV0dGVyZmx5OjpvZmZzZXRPZlB1
YmxpY0xlbmd0aCgpOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCB2ZWN0b3JMZW5ndGhPZmZzZXQo
KSB7IHJldHVybiBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCk7IH0NCiAgICBzdGF0
aWMgcHRyZGlmZl90IG51bVZhbHVlc0luVmVjdG9yT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJw
cmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8QXJyYXlTdG9yYWdlKj4oMHg0
MDAwKS0+bV9udW1WYWx1ZXNJblZlY3RvcikpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJk
aWZmX3QgdmVjdG9yT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90
PigmKHJlaW50ZXJwcmV0X2Nhc3Q8QXJyYXlTdG9yYWdlKj4oMHg0MDAwKS0+bV92ZWN0b3IpKSAt
IDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IGluZGV4Qmlhc09mZnNldCgpIHsgcmV0
dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEFycmF5
U3RvcmFnZSo+KDB4NDAwMCktPm1faW5kZXhCaWFzKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGlj
IHB0cmRpZmZfdCBzcGFyc2VNYXBPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxw
dHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxBcnJheVN0b3JhZ2UqPigweDQwMDApLT5tX3Nw
YXJzZU1hcCkpIC0gMHg0MDAwKTsgfQ0KDQogICAgc3RhdGljIHNpemVfdCBzaXplRm9yKHVuc2ln
bmVkIHZlY3Rvckxlbmd0aCkNCiAgICB7DQogICAgICAgIHJldHVybiBBcnJheVN0b3JhZ2U6OnZl
Y3Rvck9mZnNldCgpICsgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
Pik7DQogICAgfQ0KDQogICAgc3RhdGljIHNpemVfdCB0b3RhbFNpemVGb3IodW5zaWduZWQgaW5k
ZXhCaWFzLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIEJ1dHRlcmZseTo6dG90YWxTaXplKGluZGV4QmlhcywgcHJv
cGVydHlDYXBhY2l0eSwgdHJ1ZSwgc2l6ZUZvcih2ZWN0b3JMZW5ndGgpKTsNCiAgICB9DQoNCiAg
ICBzaXplX3QgdG90YWxTaXplKHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5KSBjb25zdA0KICAgIHsN
CiAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZUZvcihtX2luZGV4QmlhcywgcHJvcGVydHlDYXBhY2l0
eSwgdmVjdG9yTGVuZ3RoKCkpOw0KICAgIH0NCg0KICAgIGlubGluZSBzaXplX3QgdG90YWxTaXpl
KFN0cnVjdHVyZSopIGNvbnN0Ow0KDQogICAgc3RhdGljIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rv
ckxlbmd0aCh1bnNpZ25lZCBpbmRleEJpYXMsIHNpemVfdCBwcm9wZXJ0eUNhcGFjaXR5LCB1bnNp
Z25lZCB2ZWN0b3JMZW5ndGgpDQogICAgew0KICAgICAgICBzaXplX3QgY2VsbFNpemUgPSBNYXJr
ZWRTcGFjZTo6b3B0aW1hbFNpemVGb3IodG90YWxTaXplRm9yKGluZGV4QmlhcywgcHJvcGVydHlD
YXBhY2l0eSwgdmVjdG9yTGVuZ3RoKSk7DQoNCiAgICAgICAgdmVjdG9yTGVuZ3RoID0gKGNlbGxT
aXplIC0gdG90YWxTaXplRm9yKGluZGV4QmlhcywgcHJvcGVydHlDYXBhY2l0eSwgMCkpIC8gc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7DQoNCiAgICAgICAgcmV0dXJuIHZlY3Rvckxlbmd0
aDsNCiAgICB9DQoNCiAgICBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxl
bmd0aCh1bnNpZ25lZCBpbmRleEJpYXMsIFN0cnVjdHVyZSosIHVuc2lnbmVkIHZlY3Rvckxlbmd0
aCk7DQoNCiAgICBpbmxpbmUgdW5zaWduZWQgYXZhaWxhYmxlVmVjdG9yTGVuZ3RoKHNpemVfdCBw
cm9wZXJ0eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOw0KDQogICAgaW5saW5lIHVu
c2lnbmVkIGF2YWlsYWJsZVZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqLCB1bnNpZ25lZCB2ZWN0b3JM
ZW5ndGgpOw0KDQogICAgaW5saW5lIHN0YXRpYyB1bnNpZ25lZCBvcHRpbWFsVmVjdG9yTGVuZ3Ro
KHVuc2lnbmVkIGluZGV4Qmlhcywgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCk7DQoNCiAgICBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIG9wdGltYWxWZWN0b3JM
ZW5ndGgodW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCB2ZWN0b3JMZW5n
dGgpOw0KDQogICAgaW5saW5lIHVuc2lnbmVkIG9wdGltYWxWZWN0b3JMZW5ndGgoc2l6ZV90IHBy
b3BlcnR5Q2FwYWNpdHksIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7DQoNCiAgICBpbmxpbmUgdW5z
aWduZWQgb3B0aW1hbFZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUqLCB1bnNpZ25lZCB2ZWN0b3JMZW5n
dGgpOw0KDQogICAgV3JpdGVCYXJyaWVyPFNwYXJzZUFycmF5VmFsdWVNYXA+IG1fc3BhcnNlTWFw
Ow0KICAgIHVuc2lnbmVkIG1faW5kZXhCaWFzOw0KICAgIHVuc2lnbmVkIG1fbnVtVmFsdWVzSW5W
ZWN0b3I7DQoNCg0KI2xpbmUgMTM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEFycmF5U3RvcmFnZS5oIg0KICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiBtX3ZlY3RvclsxXTsNCn07DQoNCn0gDQojbGluZSAyNyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5o
Ig0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcQ2FnZWRCYXJyaWVyUHRyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEF1eGlsaWFyeUJhcnJpZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBK
U0NlbGw7DQpjbGFzcyBWTTsNCg0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmNsYXNzIEF1
eGlsaWFyeUJhcnJpZXIgew0KcHVibGljOg0KICAgIHR5cGVkZWYgVCBUeXBlOw0KICAgIA0KICAg
IEF1eGlsaWFyeUJhcnJpZXIoKTogbV92YWx1ZSgpIHsgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+DQogICAgQXV4aWxpYXJ5QmFycmllcihWTSYsIEpTQ2VsbCosIFUmJik7DQogICAg
DQogICAgdm9pZCBjbGVhcigpIHsgbV92YWx1ZSA9IFQoKTsgfQ0KICAgIA0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+DQogICAgdm9pZCBzZXQoVk0mLCBKU0NlbGwqLCBVJiYpOw0KICAgIA0KICAg
IGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0NCiAgICANCiAgICBUKiBz
bG90KCkgeyByZXR1cm4gJm1fdmFsdWU7IH0NCiAgICANCiAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX3ZhbHVlOyB9DQogICAgDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4NCiAgICB2b2lkIHNldFdpdGhvdXRCYXJyaWVyKFUmJiB2YWx1ZSkgeyBtX3ZhbHVl
ID0gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQ0KDQogICAgVCBvcGVyYXRvci0+KCkgY29uc3Qg
eyByZXR1cm4gZ2V0KCk7IH0NCiAgICANCnByaXZhdGU6DQogICAgVCBtX3ZhbHVlOw0KfTsNCg0K
fSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXENhZ2VkQmFycmllclB0ci5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0K
DQpjbGFzcyBKU0NlbGw7DQpjbGFzcyBWTTsNCg0KDQoNCnRlbXBsYXRlPEdpZ2FjYWdlOjpLaW5k
IHBhc3NlZEtpbmQsIHR5cGVuYW1lIFQsIGJvb2wgc2hvdWxkVGFnID0gZmFsc2U+DQpjbGFzcyBD
YWdlZEJhcnJpZXJQdHIgew0KcHVibGljOg0KICAgIHN0YXRpYyBjb25zdGV4cHIgR2lnYWNhZ2U6
OktpbmQga2luZCA9IHBhc3NlZEtpbmQ7DQogICAgdXNpbmcgVHlwZSA9IFQ7DQogICAgdXNpbmcg
Q2FnZWRUeXBlID0gQ2FnZWRQdHI8a2luZCwgVHlwZSwgc2hvdWxkVGFnPjsNCiAgICANCiAgICBD
YWdlZEJhcnJpZXJQdHIoKSA9IGRlZmF1bHQ7DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4NCiAgICBDYWdlZEJhcnJpZXJQdHIoVk0mIHZtLCBKU0NlbGwqIGNlbGwsIFUmJiB2YWx1ZSwg
dW5zaWduZWQgc2l6ZSkNCiAgICB7DQogICAgICAgIG1fYmFycmllci5zZXQodm0sIGNlbGwsIENh
Z2VkVHlwZShzdGQ6OmZvcndhcmQ8VT4odmFsdWUpLCBzaXplKSk7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgY2xlYXIoKSB7IG1fYmFycmllci5jbGVhcigpOyB9DQogICAgDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4NCiAgICB2b2lkIHNldChWTSYgdm0sIEpTQ2VsbCogY2VsbCwgVSYmIHZhbHVl
LCB1bnNpZ25lZCBzaXplKQ0KICAgIHsNCiAgICAgICAgbV9iYXJyaWVyLnNldCh2bSwgY2VsbCwg
Q2FnZWRUeXBlKHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSksIHNpemUpKTsNCiAgICB9DQogICAgDQog
ICAgVCogZ2V0KHVuc2lnbmVkIHNpemUpIGNvbnN0IHsgcmV0dXJuIG1fYmFycmllci5nZXQoKS5n
ZXQoc2l6ZSk7IH0NCiAgICBUKiBnZXRNYXlCZU51bGwodW5zaWduZWQgc2l6ZSkgY29uc3QgeyBy
ZXR1cm4gbV9iYXJyaWVyLmdldCgpLmdldE1heUJlTnVsbChzaXplKTsgfQ0KICAgIFQqIGdldFVu
c2FmZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFycmllci5nZXQoKS5nZXRVbnNhZmUoKTsgfQ0KDQog
ICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+DQogICAgdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8IXN0ZDo6aXNfc2FtZTx2b2lkLCBVPjo6dmFsdWUsIFQ+Ojp0eXBlJg0KICAgICBhdCh1
bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc2l6ZSkgY29uc3QgeyByZXR1cm4gZ2V0KHNpemUpW2lu
ZGV4XTsgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhZ2VkQmFycmllclB0ciYgb3Ro
ZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9iYXJyaWVyLmdldCgpID09IG90aGVy
Lm1fYmFycmllci5nZXQoKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IENhZ2VkQmFycmllclB0ciYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7DQogICAgfQ0KICAgIA0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICEhbV9iYXJyaWVyLmdldCgpOw0KICAgIH0N
CiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0KICAgIHZvaWQgc2V0V2l0aG91dEJhcnJp
ZXIoVSYmIHZhbHVlLCB1bnNpZ25lZCBzaXplKSB7IG1fYmFycmllci5zZXRXaXRob3V0QmFycmll
cihDYWdlZFR5cGUoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSwgc2l6ZSkpOyB9DQoNCiAgICBUKiBy
YXdCaXRzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2JhcnJpZXIuZ2V0KCkucmF3
Qml0cygpOw0KICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgQXV4aWxpYXJ5QmFycmllcjxDYWdl
ZFR5cGU+IG1fYmFycmllcjsNCn07DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5oIg0KDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcQ3VzdG9tR2V0dGVyU2V0dGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEN1c3RvbUdldHRlclNldHRlciA6IHB1YmxpYyBKU0NlbGwg
ew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7DQogICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0
dXJlSXNJbW1vcnRhbDsNCg0KICAgIHVzaW5nIEN1c3RvbUdldHRlciA9IFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jOw0KICAgIHVzaW5nIEN1c3RvbVNldHRlciA9IFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuICZ2bS5jdXN0b21HZXR0ZXJTZXR0ZXJTcGFjZTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjcmVhdGUoVk0mIHZtLCBDdXN0b21HZXR0
ZXIgY3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIgY3VzdG9tU2V0dGVyKQ0KICAgIHsNCiAgICAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxDdXN0b21HZXR0ZXJTZXR0ZXI+KHZtLmhlYXApKSBDdXN0b21HZXR0ZXJT
ZXR0ZXIodm0sIHZtLmN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSwgY3VzdG9tR2V0
dGVyLCBjdXN0b21TZXR0ZXIpOw0KICAgICAgICBjdXN0b21HZXR0ZXJTZXR0ZXItPmZpbmlzaENy
ZWF0aW9uKHZtKTsNCiAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlcjsNCiAgICB9DQoN
CiAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlciBnZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2dldHRlcjsgfQ0KICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNl
dHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9DQoNCiAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEN1c3RvbUdldHRlclNldHRl
clR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQogICAgICAgIA0KICAgIHBy
b3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJ
bmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0lu
Zm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQpwcm90ZWN0ZWQ6DQogICAgQ3VzdG9t
R2V0dGVyU2V0dGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEN1c3RvbUdldHRlciBn
ZXR0ZXIsIEN1c3RvbVNldHRlciBzZXR0ZXIpDQogICAgICAgIDogSlNDZWxsKHZtLCBzdHJ1Y3R1
cmUpDQogICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQ0KICAgICAgICAsIG1fc2V0dGVyKHNldHRl
cikNCiAgICB7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIEN1c3RvbUdldHRlciBtX2dldHRlcjsN
CiAgICBDdXN0b21TZXR0ZXIgbV9zZXR0ZXI7DQp9Ow0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
Ym9vbCBjYWxsQ3VzdG9tU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ3VzdG9tR2V0dGVyU2V0dGVy
OjpDdXN0b21TZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgY2FsbEN1c3RvbVNldHRlcihKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgY3VzdG9tR2V0dGVyU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpT
T2JqZWN0KiBzbG90QmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUpOw0KDQp9IA0KI2xp
bmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcSlNPYmplY3QuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVy
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCm5hbWVzcGFjZSBET01KSVQgew0K
DQpjbGFzcyBHZXR0ZXJTZXR0ZXI7DQoNCn0NCg0KY2xhc3MgRE9NQXR0cmlidXRlR2V0dGVyU2V0
dGVyIGZpbmFsIDogcHVibGljIEN1c3RvbUdldHRlclNldHRlciB7DQpwdWJsaWM6DQogICAgdXNp
bmcgQmFzZSA9IEN1c3RvbUdldHRlclNldHRlcjsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0uZG9tQXR0cmlidXRlR2V0dGVy
U2V0dGVyU3BhY2U7DQogICAgfQ0KDQogICAgc3RhdGljIERPTUF0dHJpYnV0ZUdldHRlclNldHRl
ciogY3JlYXRlKFZNJiB2bSwgQ3VzdG9tR2V0dGVyIGN1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVy
IGN1c3RvbVNldHRlciwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiBkb21BdHRyaWJ1dGUpDQogICAg
ew0KICAgICAgICBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUF0dHJpYnV0ZUdldHRlclNldHRlcj4odm0u
aGVhcCkpIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcih2bSwgY3VzdG9tR2V0dGVyLCBjdXN0b21T
ZXR0ZXIsIGRvbUF0dHJpYnV0ZSk7DQogICAgICAgIGN1c3RvbUdldHRlclNldHRlci0+ZmluaXNo
Q3JlYXRpb24odm0pOw0KICAgICAgICByZXR1cm4gY3VzdG9tR2V0dGVyU2V0dGVyOw0KICAgIH0N
Cg0KICAgIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1
cm4gbV9kb21BdHRyaWJ1dGU7IH0NCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBz
dGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9Ow0KDQpwcml2YXRlOg0KICAgIERPTUF0dHJpYnV0ZUdldHRlclNldHRlcihWTSYg
dm0sIEN1c3RvbUdldHRlciBnZXR0ZXIsIEN1c3RvbVNldHRlciBzZXR0ZXIsIERPTUF0dHJpYnV0
ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQ0KICAgICAgICA6IEJhc2Uodm0sIHZtLmRvbUF0dHJp
YnV0ZUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSwgZ2V0dGVyLCBzZXR0ZXIpDQogICAgICAg
ICwgbV9kb21BdHRyaWJ1dGUoZG9tQXR0cmlidXRlKQ0KICAgIHsNCiAgICB9DQoNCiAgICBET01B
dHRyaWJ1dGVBbm5vdGF0aW9uIG1fZG9tQXR0cmlidXRlOw0KfTsNCg0KfSANCiNsaW5lIDM0ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEpTT2JqZWN0LmgiDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxJbmRleGluZ0hlYWRlcklubGluZXMuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmlubGluZSBzaXplX3QgSW5kZXhpbmdI
ZWFkZXI6OnByZUNhcGFjaXR5KFN0cnVjdHVyZSogc3RydWN0dXJlKQ0Kew0KICAgIGlmICgoIWhh
c0FueUFycmF5U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkpDQogICAgICAgIHJl
dHVybiAwOw0KICAgIA0KICAgIHJldHVybiBhcnJheVN0b3JhZ2UoKS0+bV9pbmRleEJpYXM7DQp9
DQoNCmlubGluZSBzaXplX3QgSW5kZXhpbmdIZWFkZXI6OmluZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzKFN0cnVjdHVyZSogc3RydWN0dXJlKQ0Kew0KICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSkgew0KICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOg0KICAgIGNhc2UgTm9u
QXJyYXlXaXRoSW50MzI6IGNhc2UgQXJyYXlXaXRoSW50MzI6IGNhc2UgQ29weU9uV3JpdGVBcnJh
eVdpdGhJbnQzMjoNCiAgICBjYXNlIE5vbkFycmF5V2l0aERvdWJsZTogY2FzZSBBcnJheVdpdGhE
b3VibGU6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGU6DQogICAgY2FzZSBOb25BcnJh
eVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQ29weU9uV3Jp
dGVBcnJheVdpdGhDb250aWd1b3VzOg0KICAgICAgICByZXR1cm4gdmVjdG9yTGVuZ3RoKCkgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOw0KICAgICAgICANCiAgICBjYXNlIE5vbkFycmF5V2l0aEFy
cmF5U3RvcmFnZTogY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFy
cmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOg0K
ICAgICAgICByZXR1cm4gQXJyYXlTdG9yYWdlOjpzaXplRm9yKGFycmF5U3RvcmFnZSgpLT52ZWN0
b3JMZW5ndGgoKSk7DQogICAgICAgIA0KICAgIGRlZmF1bHQ6DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KfQ0KDQp9IA0KI2xpbmUgMzcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmplY3Qu
aCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxNYXRoQ29tbW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjb25zdCBpbnQzMl90IG1heEV4cG9uZW50Rm9ySW50ZWdlck1hdGhQb3cgPSAx
MDAwOw0KZG91YmxlICBvcGVyYXRpb25NYXRoUG93KGRvdWJsZSB4LCBkb3VibGUgeSkgOw0KVUNQ
VVN0cmljdEludDMyICBvcGVyYXRpb25Ub0ludDMyKGRvdWJsZSkgOw0KVUNQVVN0cmljdEludDMy
ICBvcGVyYXRpb25Ub0ludDMyU2Vuc2libGVTbG93KGRvdWJsZSkgOw0KDQpjb25zdGV4cHIgZG91
YmxlIG1heFNhZmVJbnRlZ2VyKCkNCnsNCiAgICANCiAgICByZXR1cm4gOTAwNzE5OTI1NDc0MDk5
MS4wOw0KfQ0KDQpjb25zdGV4cHIgZG91YmxlIG1pblNhZmVJbnRlZ2VyKCkNCnsNCiAgICANCiAg
ICByZXR1cm4gLTkwMDcxOTkyNTQ3NDA5OTEuMDsNCn0NCg0KaW5saW5lIGJvb2wgaXNJbnRlZ2Vy
KGRvdWJsZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gc3RkOjppc2Zpbml0ZSh2YWx1ZSkgJiYgc3Rk
Ojp0cnVuYyh2YWx1ZSkgPT0gdmFsdWU7DQp9DQoNCmlubGluZSBib29sIGlzSW50ZWdlcihmbG9h
dCB2YWx1ZSkNCnsNCiAgICByZXR1cm4gc3RkOjppc2Zpbml0ZSh2YWx1ZSkgJiYgc3RkOjp0cnVu
Yyh2YWx1ZSkgPT0gdmFsdWU7DQp9DQoNCmlubGluZSBib29sIGlzU2FmZUludGVnZXIoZG91Ymxl
IHZhbHVlKQ0Kew0KICAgIHJldHVybiBzdGQ6OnRydW5jKHZhbHVlKSA9PSB2YWx1ZSAmJiBzdGQ6
OmFicyh2YWx1ZSkgPD0gbWF4U2FmZUludGVnZXIoKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQplbnVt
IFRvSW50MzJNb2RlIHsNCiAgICBHZW5lcmljLA0KICAgIEFmdGVyU2Vuc2libGVDb252ZXJzaW9u
QXR0ZW1wdCwNCn07DQp0ZW1wbGF0ZTxUb0ludDMyTW9kZSBNb2RlPg0KX19mb3JjZWlubGluZSBp
bnQzMl90IHRvSW50MzJJbnRlcm5hbChkb3VibGUgbnVtYmVyKQ0Kew0KICAgIHVpbnQ2NF90IGJp
dHMgPSBXVEY6OmJpdHdpc2VfY2FzdDx1aW50NjRfdD4obnVtYmVyKTsNCiAgICBpbnQzMl90IGV4
cCA9IChzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRzID4+IDUyKSAmIDB4N2ZmKSAtIDB4M2ZmOw0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGV4cCkgPiA4M3UpDQog
ICAgICAgIHJldHVybiAwOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgdWludDMyX3QgcmVzdWx0ID0gKGV4cCA+IDUyKQ0KICAgICAgICA/IHN0YXRpY19jYXN0PHVp
bnQzMl90PihiaXRzIDw8IChleHAgLSA1MikpDQogICAgICAgIDogc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGJpdHMgPj4gKDUyIC0gZXhwKSk7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICBpZiAoTW9kZSA9PSBUb0ludDMyTW9kZTo6QWZ0ZXJTZW5zaWJsZUNvbnZlcnNp
b25BdHRlbXB0KSB7DQogICAgICAgIGlmIChleHAgPT0gMzEpIHsNCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAg
ICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAg
ICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAg
ICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICBjb25zdCBjb25zdGV4cHIgdWludDMyX3Qg
bWlzc2luZ09uZSA9IDFVIDw8IDMxOw0KICAgICAgICAgICAgcmVzdWx0ICY9IG1pc3NpbmdPbmUg
LSAxOw0KICAgICAgICAgICAgcmVzdWx0ICs9IG1pc3NpbmdPbmU7DQogICAgICAgIH0NCiAgICB9
IGVsc2Ugew0KICAgICAgICBpZiAoZXhwIDwgMzIpIHsNCiAgICAgICAgICAgIGNvbnN0IHVpbnQz
Ml90IG1pc3NpbmdPbmUgPSAxVSA8PCBleHA7DQogICAgICAgICAgICByZXN1bHQgJj0gbWlzc2lu
Z09uZSAtIDE7DQogICAgICAgICAgICByZXN1bHQgKz0gbWlzc2luZ09uZTsNCiAgICAgICAgfQ0K
ICAgIH0NCg0KICAgIA0KICAgIA0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihiaXRz
KSA8IDAgPyAtc3RhdGljX2Nhc3Q8aW50MzJfdD4ocmVzdWx0KSA6IHN0YXRpY19jYXN0PGludDMy
X3Q+KHJlc3VsdCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSBu
dW1iZXIpDQp7DQoNCg0KDQoNCiNsaW5lIDE2MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYXRoQ29tbW9uLmgiDQogICAgcmV0dXJu
IHRvSW50MzJJbnRlcm5hbDxUb0ludDMyTW9kZTo6R2VuZXJpYz4obnVtYmVyKTsNCiNsaW5lIDE2
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxNYXRoQ29tbW9uLmgiDQp9DQoNCg0KaW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJs
ZSBudW1iZXIpDQp7DQogICAgDQogICAgDQogICAgcmV0dXJuIHRvSW50MzIobnVtYmVyKTsNCn0N
Cg0KX19mb3JjZWlubGluZSBjb25zdGV4cHIgVUNQVVN0cmljdEludDMyIHRvVUNQVVN0cmljdElu
dDMyKGludDMyX3QgdmFsdWUpDQp7DQogICAgDQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFVDUFVT
dHJpY3RJbnQzMj4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSk7DQp9DQoNCmlubGluZSBP
cHRpb25hbDxkb3VibGU+IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25zdChkb3VibGUgY29uc3Rh
bnQpDQp7DQogICAgDQogICAgaWYgKCFjb25zdGFudCB8fCAhc3RkOjppc25vcm1hbChjb25zdGFu
dCkpDQogICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7DQoNCiAgICBpbnQgZXhwb25lbnQ7DQog
ICAgaWYgKHN0ZDo6ZnJleHAoY29uc3RhbnQsICZleHBvbmVudCkgIT0gMC41KQ0KICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0Ow0KDQogICAgDQogICAgDQogICAgZXhwb25lbnQgLT0gMTsNCg0K
ICAgIA0KICAgIA0KICAgIGlmIChleHBvbmVudCA9PSAxMDIzKQ0KICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0Ow0KDQogICAgZG91YmxlIHJlY2lwcm9jYWwgPSBzdGQ6OmxkZXhwKDEsIC1leHBv
bmVudCk7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQog
ICAgKCh2b2lkKTApOw0KDQogICAgcmV0dXJuIHJlY2lwcm9jYWw7DQp9DQoNCl9fZm9yY2Vpbmxp
bmUgYm9vbCBjYW5CZVN0cmljdEludDMyKGRvdWJsZSB2YWx1ZSkNCnsNCiAgICANCiAgICBjb25z
dCBpbnQzMl90IGFzSW50MzIgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7DQogICAgcmV0
dXJuICEoYXNJbnQzMiAhPSB2YWx1ZSB8fCAoIWFzSW50MzIgJiYgc3RkOjpzaWduYml0KHZhbHVl
KSkpOyANCn0NCg0KX19mb3JjZWlubGluZSBib29sIGNhbkJlSW50MzIoZG91YmxlIHZhbHVlKQ0K
ew0KICAgIA0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkgPT0gdmFsdWU7
DQp9DQoNCmV4dGVybiAiQyIgew0KZG91YmxlICBqc1JvdW5kKGRvdWJsZSB2YWx1ZSkgIDsNCg0K
DQoNCg0KDQojbGluZSAyMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcTWF0aENvbW1vbi5oIg0KDQojbGluZSAyMzIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWF0aENv
bW1vbi5oIg0KfQ0KDQpuYW1lc3BhY2UgTWF0aCB7DQoNCnVzaW5nIHN0ZDo6c2luOw0KdXNpbmcg
c3RkOjpzaW5oOw0KdXNpbmcgc3RkOjpjb3M7DQp1c2luZyBzdGQ6OmNvc2g7DQp1c2luZyBzdGQ6
OnRhbjsNCnVzaW5nIHN0ZDo6dGFuaDsNCnVzaW5nIHN0ZDo6YXNpbjsNCnVzaW5nIHN0ZDo6YXNp
bmg7DQp1c2luZyBzdGQ6OmFjb3M7DQp1c2luZyBzdGQ6OmFjb3NoOw0KdXNpbmcgc3RkOjphdGFu
Ow0KdXNpbmcgc3RkOjphdGFuaDsNCnVzaW5nIHN0ZDo6bG9nOw0KdXNpbmcgc3RkOjpsb2cxMDsN
CnVzaW5nIHN0ZDo6bG9nMjsNCnVzaW5nIHN0ZDo6Y2JydDsNCnVzaW5nIHN0ZDo6ZXhwOw0KdXNp
bmcgc3RkOjpleHBtMTsNCg0KZG91YmxlICBsb2cxcChkb3VibGUpIDsNCg0KfSANCn0gDQojbGlu
ZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxKU09iamVjdC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFZNOw0KY2xh
c3MgSlNPYmplY3Q7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgiDQoNCmNsYXNzIE9iamVjdElu
aXRpYWxpemF0aW9uU2NvcGUgew0KcHVibGljOg0KICAgIF9fZm9yY2VpbmxpbmUgT2JqZWN0SW5p
dGlhbGl6YXRpb25TY29wZShWTSYgdm0pDQogICAgICAgIDogbV92bSh2bSkNCiAgICB7IH0NCiAg
ICBfX2ZvcmNlaW5saW5lIH5PYmplY3RJbml0aWFsaXphdGlvblNjb3BlKCkNCiAgICB7DQogICAg
ICAgIG1fdm0uaGVhcC5tdXRhdG9yRmVuY2UoKTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5l
IFZNJiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0NCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQg
bm90aWZ5QWxsb2NhdGVkKEpTT2JqZWN0KikgeyB9DQogICAgX19mb3JjZWlubGluZSB2b2lkIG5v
dGlmeUluaXRpYWxpemVkKEpTT2JqZWN0KikgeyB9DQoNCnByaXZhdGU6DQogICAgVk0mIG1fdm07
DQp9Ow0KDQojbGluZSA3OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxPYmplY3RJbml0aWFsaXphdGlvblNjb3BlLmgiDQoNCn0gDQoj
bGluZSA0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxKU09iamVjdC5oIg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU3RyaW5n
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxDb21tb25JZGVudGlmaWVycy5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQogICAgDQogICAgY2xhc3MgQnVpbHRpbk5hbWVz
Ow0KICAgIA0KICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzIHsNCiAgICAgICAgQ29tbW9uSWRl
bnRpZmllcnMoY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmKSA9IGRlbGV0ZTsgQ29tbW9uSWRlbnRp
ZmllcnMmIG9wZXJhdG9yPShjb25zdCBDb21tb25JZGVudGlmaWVycyYpID0gZGVsZXRlOzsgcHVi
bGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1h
bGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQq
IGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZh
c3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1p
Y29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICBwcml2YXRlOg0KICAgICAgICBDb21tb25J
ZGVudGlmaWVycyhWTSYpOw0KICAgICAgICB+Q29tbW9uSWRlbnRpZmllcnMoKTsNCiAgICAgICAg
ZnJpZW5kIGNsYXNzIFZNOw0KICAgICAgICANCiAgICBwdWJsaWM6DQogICAgICAgIGNvbnN0IEJ1
aWx0aW5OYW1lcyYgYnVpbHRpbk5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fYnVpbHRpbk5hbWVz
OyB9DQogICAgICAgIGNvbnN0IElkZW50aWZpZXIgbnVsbElkZW50aWZpZXI7DQogICAgICAgIGNv
bnN0IElkZW50aWZpZXIgZW1wdHlJZGVudGlmaWVyOw0KICAgICAgICBjb25zdCBJZGVudGlmaWVy
IHVuZGVyc2NvcmVQcm90bzsNCiAgICAgICAgY29uc3QgSWRlbnRpZmllciB1c2VTdHJpY3RJZGVu
dGlmaWVyOw0KICAgICAgICBjb25zdCBJZGVudGlmaWVyIHRpbWVzSWRlbnRpZmllcjsNCiAgICBw
cml2YXRlOg0KICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QnVpbHRpbk5hbWVzPiBtX2J1aWx0aW5O
YW1lczsNCg0KICAgIHB1YmxpYzoNCg0KDQogICAgICAgIGNvbnN0IElkZW50aWZpZXIgZ2VuZXJh
dG9yUHJpdmF0ZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZTsgY29uc3QgSWRlbnRpZmllciBnZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lOyBjb25zdCBJZGVu
dGlmaWVyIGdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZTsgY29uc3QgSWRlbnRpZmllciBn
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlmaWVyIG1ldGFQcml2YXRlTmFt
ZTsgY29uc3QgSWRlbnRpZmllciBzdGFyRGVmYXVsdFByaXZhdGVOYW1lOyBjb25zdCBJZGVudGlm
aWVyIHVuZGVmaW5lZFByaXZhdGVOYW1lOw0KDQogICAgICAgIA0KDQogICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgYXdhaXRLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGJyZWFrS2V5d29yZDsgY29u
c3QgSWRlbnRpZmllciBjYXNlS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBjYXRjaEtleXdvcmQ7
IGNvbnN0IElkZW50aWZpZXIgY2xhc3NLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGNvbnN0S2V5
d29yZDsgY29uc3QgSWRlbnRpZmllciBjb250aW51ZUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIg
ZGVidWdnZXJLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGRlZmF1bHRLZXl3b3JkOyBjb25zdCBJ
ZGVudGlmaWVyIGRlbGV0ZUtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZG9LZXl3b3JkOyBjb25z
dCBJZGVudGlmaWVyIGVsc2VLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGVudW1LZXl3b3JkOyBj
b25zdCBJZGVudGlmaWVyIGV4cG9ydEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZXh0ZW5kc0tl
eXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgZmFsc2VLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGZp
bmFsbHlLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGZvcktleXdvcmQ7IGNvbnN0IElkZW50aWZp
ZXIgZnVuY3Rpb25LZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIGlmS2V5d29yZDsgY29uc3QgSWRl
bnRpZmllciBpbXBsZW1lbnRzS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBpbXBvcnRLZXl3b3Jk
OyBjb25zdCBJZGVudGlmaWVyIGluS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBpbnN0YW5jZW9m
S2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBpbnRlcmZhY2VLZXl3b3JkOyBjb25zdCBJZGVudGlm
aWVyIGxldEtleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgbmV3S2V5d29yZDsgY29uc3QgSWRlbnRp
ZmllciBudWxsS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBwYWNrYWdlS2V5d29yZDsgY29uc3Qg
SWRlbnRpZmllciBwcml2YXRlS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBwcm90ZWN0ZWRLZXl3
b3JkOyBjb25zdCBJZGVudGlmaWVyIHB1YmxpY0tleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgcmV0
dXJuS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBzdGF0aWNLZXl3b3JkOyBjb25zdCBJZGVudGlm
aWVyIHN1cGVyS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciBzd2l0Y2hLZXl3b3JkOyBjb25zdCBJ
ZGVudGlmaWVyIHRoaXNLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHRocm93S2V5d29yZDsgY29u
c3QgSWRlbnRpZmllciB0cnVlS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciB0cnlLZXl3b3JkOyBj
b25zdCBJZGVudGlmaWVyIHR5cGVvZktleXdvcmQ7IGNvbnN0IElkZW50aWZpZXIgdW5kZWZpbmVk
S2V5d29yZDsgY29uc3QgSWRlbnRpZmllciB2YXJLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHZv
aWRLZXl3b3JkOyBjb25zdCBJZGVudGlmaWVyIHdoaWxlS2V5d29yZDsgY29uc3QgSWRlbnRpZmll
ciB3aXRoS2V5d29yZDsgY29uc3QgSWRlbnRpZmllciB5aWVsZEtleXdvcmQ7DQoNCiAgICAgICAg
DQoNCiAgICAgICAgY29uc3QgSWRlbnRpZmllciBBcnJheTsgY29uc3QgSWRlbnRpZmllciBBcnJh
eUJ1ZmZlcjsgY29uc3QgSWRlbnRpZmllciBCWVRFU19QRVJfRUxFTUVOVDsgY29uc3QgSWRlbnRp
ZmllciBCaWdJbnQ7IGNvbnN0IElkZW50aWZpZXIgQm9vbGVhbjsgY29uc3QgSWRlbnRpZmllciBD
b2xsYXRvcjsgY29uc3QgSWRlbnRpZmllciBEYXRlOyBjb25zdCBJZGVudGlmaWVyIERhdGVUaW1l
Rm9ybWF0OyBjb25zdCBJZGVudGlmaWVyIERpc3BsYXlOYW1lczsgY29uc3QgSWRlbnRpZmllciBF
cnJvcjsgY29uc3QgSWRlbnRpZmllciBFdmFsRXJyb3I7IGNvbnN0IElkZW50aWZpZXIgRmluYWxp
emF0aW9uUmVnaXN0cnk7IGNvbnN0IElkZW50aWZpZXIgRnVuY3Rpb247IGNvbnN0IElkZW50aWZp
ZXIgSW5maW5pdHk7IGNvbnN0IElkZW50aWZpZXIgSW50bDsgY29uc3QgSWRlbnRpZmllciBMb2Fk
ZXI7IGNvbnN0IElkZW50aWZpZXIgTG9jYWxlOyBjb25zdCBJZGVudGlmaWVyIE1hcDsgY29uc3Qg
SWRlbnRpZmllciBOYU47IGNvbnN0IElkZW50aWZpZXIgTnVtYmVyOyBjb25zdCBJZGVudGlmaWVy
IE51bWJlckZvcm1hdDsgY29uc3QgSWRlbnRpZmllciBPYmplY3Q7IGNvbnN0IElkZW50aWZpZXIg
UGx1cmFsUnVsZXM7IGNvbnN0IElkZW50aWZpZXIgUHJvbWlzZTsgY29uc3QgSWRlbnRpZmllciBS
ZWZsZWN0OyBjb25zdCBJZGVudGlmaWVyIFJlZ0V4cDsgY29uc3QgSWRlbnRpZmllciBSZWxhdGl2
ZVRpbWVGb3JtYXQ7IGNvbnN0IElkZW50aWZpZXIgUmVtb3RlUGxheWJhY2s7IGNvbnN0IElkZW50
aWZpZXIgU2V0OyBjb25zdCBJZGVudGlmaWVyIFNoYXJlZEFycmF5QnVmZmVyOyBjb25zdCBJZGVu
dGlmaWVyIFN0cmluZzsgY29uc3QgSWRlbnRpZmllciBTeW1ib2w7IGNvbnN0IElkZW50aWZpZXIg
V2Vha1JlZjsgY29uc3QgSWRlbnRpZmllciBfX2RlZmluZUdldHRlcl9fOyBjb25zdCBJZGVudGlm
aWVyIF9fZGVmaW5lU2V0dGVyX187IGNvbnN0IElkZW50aWZpZXIgX19sb29rdXBHZXR0ZXJfXzsg
Y29uc3QgSWRlbnRpZmllciBfX2xvb2t1cFNldHRlcl9fOyBjb25zdCBJZGVudGlmaWVyIGFkZDsg
Y29uc3QgSWRlbnRpZmllciBhZGRpdGlvbmFsSmV0dGlzb25SZWFzb247IGNvbnN0IElkZW50aWZp
ZXIgYW5vbnltb3VzOyBjb25zdCBJZGVudGlmaWVyIGFyZ3VtZW50czsgY29uc3QgSWRlbnRpZmll
ciBhczsgY29uc3QgSWRlbnRpZmllciBhc3luYzsgY29uc3QgSWRlbnRpZmllciBiYWNrOyBjb25z
dCBJZGVudGlmaWVyIGJpbmQ7IGNvbnN0IElkZW50aWZpZXIgYnl0ZUxlbmd0aDsgY29uc3QgSWRl
bnRpZmllciBieXRlT2Zmc2V0OyBjb25zdCBJZGVudGlmaWVyIGJ5dGVjb2RlOyBjb25zdCBJZGVu
dGlmaWVyIGJ5dGVjb2RlSW5kZXg7IGNvbnN0IElkZW50aWZpZXIgYnl0ZWNvZGVzOyBjb25zdCBJ
ZGVudGlmaWVyIGJ5dGVjb2Rlc0lEOyBjb25zdCBJZGVudGlmaWVyIGNhbGVuZGFyOyBjb25zdCBJ
ZGVudGlmaWVyIGNhbGxlZTsgY29uc3QgSWRlbnRpZmllciBjYWxsZXI7IGNvbnN0IElkZW50aWZp
ZXIgY2FzZUZpcnN0OyBjb25zdCBJZGVudGlmaWVyIGNsZWFyOyBjb25zdCBJZGVudGlmaWVyIGNv
bGxhdGlvbjsgY29uc3QgSWRlbnRpZmllciBjb2x1bW47IGNvbnN0IElkZW50aWZpZXIgY29tcGls
YXRpb25LaW5kOyBjb25zdCBJZGVudGlmaWVyIGNvbXBpbGF0aW9uVUlEOyBjb25zdCBJZGVudGlm
aWVyIGNvbXBpbGF0aW9uczsgY29uc3QgSWRlbnRpZmllciBjb21waWxlOyBjb25zdCBJZGVudGlm
aWVyIGNvbmZpZ3VyYWJsZTsgY29uc3QgSWRlbnRpZmllciBjb25zdHJ1Y3RvcjsgY29uc3QgSWRl
bnRpZmllciBjb3VudDsgY29uc3QgSWRlbnRpZmllciBjb3VudGVyczsgY29uc3QgSWRlbnRpZmll
ciBkYXk7IGNvbnN0IElkZW50aWZpZXIgZGVmaW5lUHJvcGVydHk7IGNvbnN0IElkZW50aWZpZXIg
ZGVyZWY7IGNvbnN0IElkZW50aWZpZXIgZGVzY3JpcHRpb247IGNvbnN0IElkZW50aWZpZXIgZGVz
Y3JpcHRpb25zOyBjb25zdCBJZGVudGlmaWVyIGRldGFpbDsgY29uc3QgSWRlbnRpZmllciBkaXNw
bGF5TmFtZTsgY29uc3QgSWRlbnRpZmllciBkb25lOyBjb25zdCBJZGVudGlmaWVyIGRvdEFsbDsg
Y29uc3QgSWRlbnRpZmllciBlbnVtZXJhYmxlOyBjb25zdCBJZGVudGlmaWVyIGVyYTsgY29uc3Qg
SWRlbnRpZmllciBlcnJvcnM7IGNvbnN0IElkZW50aWZpZXIgZXZhbDsgY29uc3QgSWRlbnRpZmll
ciBldmVudHM7IGNvbnN0IElkZW50aWZpZXIgZXhlYzsgY29uc3QgSWRlbnRpZmllciBleGVjdXRp
b25Db3VudDsgY29uc3QgSWRlbnRpZmllciBleGl0S2luZDsgY29uc3QgSWRlbnRpZmllciBmbGFn
czsgY29uc3QgSWRlbnRpZmllciBmb3JFYWNoOyBjb25zdCBJZGVudGlmaWVyIGZvcm1hdE1hdGNo
ZXI7IGNvbnN0IElkZW50aWZpZXIgZm9ybWF0VG9QYXJ0czsgY29uc3QgSWRlbnRpZmllciBmb3J3
YXJkOyBjb25zdCBJZGVudGlmaWVyIGZyb207IGNvbnN0IElkZW50aWZpZXIgZnJvbUNoYXJDb2Rl
OyBjb25zdCBJZGVudGlmaWVyIGdldDsgY29uc3QgSWRlbnRpZmllciBnbG9iYWw7IGNvbnN0IElk
ZW50aWZpZXIgZ287IGNvbnN0IElkZW50aWZpZXIgZ3JvdXBzOyBjb25zdCBJZGVudGlmaWVyIGhh
czsgY29uc3QgSWRlbnRpZmllciBoYXNPd25Qcm9wZXJ0eTsgY29uc3QgSWRlbnRpZmllciBoYXNo
OyBjb25zdCBJZGVudGlmaWVyIGhlYWRlcjsgY29uc3QgSWRlbnRpZmllciBob3VyOyBjb25zdCBJ
ZGVudGlmaWVyIGhvdXJDeWNsZTsgY29uc3QgSWRlbnRpZmllciBob3VyMTI7IGNvbnN0IElkZW50
aWZpZXIgaWQ7IGNvbnN0IElkZW50aWZpZXIgaWdub3JlQ2FzZTsgY29uc3QgSWRlbnRpZmllciBp
Z25vcmVQdW5jdHVhdGlvbjsgY29uc3QgSWRlbnRpZmllciBpbmRleDsgY29uc3QgSWRlbnRpZmll
ciBpbmZlcnJlZE5hbWU7IGNvbnN0IElkZW50aWZpZXIgaW5wdXQ7IGNvbnN0IElkZW50aWZpZXIg
aW5zdHJ1Y3Rpb25Db3VudDsgY29uc3QgSWRlbnRpZmllciBpc0FycmF5OyBjb25zdCBJZGVudGlm
aWVyIGlzRW5hYmxlZDsgY29uc3QgSWRlbnRpZmllciBpc1Byb3RvdHlwZU9mOyBjb25zdCBJZGVu
dGlmaWVyIGlzVmlldzsgY29uc3QgSWRlbnRpZmllciBpc1dhdGNocG9pbnQ7IGNvbnN0IElkZW50
aWZpZXIgamV0dGlzb25SZWFzb247IGNvbnN0IElkZW50aWZpZXIgam9pbjsgY29uc3QgSWRlbnRp
ZmllciBsYW5ndWFnZTsgY29uc3QgSWRlbnRpZmllciBsYXN0SW5kZXg7IGNvbnN0IElkZW50aWZp
ZXIgbGVuZ3RoOyBjb25zdCBJZGVudGlmaWVyIGxpbmU7IGNvbnN0IElkZW50aWZpZXIgbG9jYWxl
OyBjb25zdCBJZGVudGlmaWVyIGxvY2FsZU1hdGNoZXI7IGNvbnN0IElkZW50aWZpZXIgbWVzc2Fn
ZTsgY29uc3QgSWRlbnRpZmllciBtaW51dGU7IGNvbnN0IElkZW50aWZpZXIgbW9udGg7IGNvbnN0
IElkZW50aWZpZXIgbXVsdGlsaW5lOyBjb25zdCBJZGVudGlmaWVyIG5hbWU7IGNvbnN0IElkZW50
aWZpZXIgbmV4dDsgY29uc3QgSWRlbnRpZmllciBub3c7IGNvbnN0IElkZW50aWZpZXIgbnVtSW5s
aW5lZENhbGxzOyBjb25zdCBJZGVudGlmaWVyIG51bUlubGluZWRHZXRCeUlkczsgY29uc3QgSWRl
bnRpZmllciBudW1JbmxpbmVkUHV0QnlJZHM7IGNvbnN0IElkZW50aWZpZXIgbnVtYmVyaW5nU3lz
dGVtOyBjb25zdCBJZGVudGlmaWVyIG51bWVyaWM7IGNvbnN0IElkZW50aWZpZXIgb2Y7IGNvbnN0
IElkZW50aWZpZXIgb3Bjb2RlOyBjb25zdCBJZGVudGlmaWVyIG9yaWdpbjsgY29uc3QgSWRlbnRp
ZmllciBvc3JFeGl0U2l0ZXM7IGNvbnN0IElkZW50aWZpZXIgb3NyRXhpdHM7IGNvbnN0IElkZW50
aWZpZXIgcGFyc2U7IGNvbnN0IElkZW50aWZpZXIgcGFyc2VJbnQ7IGNvbnN0IElkZW50aWZpZXIg
cGFyc2VGbG9hdDsgY29uc3QgSWRlbnRpZmllciBwcm9maWxlZEJ5dGVjb2RlczsgY29uc3QgSWRl
bnRpZmllciBwcm9wZXJ0eUlzRW51bWVyYWJsZTsgY29uc3QgSWRlbnRpZmllciBwcm90b3R5cGU7
IGNvbnN0IElkZW50aWZpZXIgcmF3OyBjb25zdCBJZGVudGlmaWVyIHJlZ2lvbjsgY29uc3QgSWRl
bnRpZmllciByZXBsYWNlOyBjb25zdCBJZGVudGlmaWVyIHJlc29sdmU7IGNvbnN0IElkZW50aWZp
ZXIgc2NyaXB0OyBjb25zdCBJZGVudGlmaWVyIHNlY29uZDsgY29uc3QgSWRlbnRpZmllciBzZW5z
aXRpdml0eTsgY29uc3QgSWRlbnRpZmllciBzZXQ7IGNvbnN0IElkZW50aWZpZXIgc2l6ZTsgY29u
c3QgSWRlbnRpZmllciBzbGljZTsgY29uc3QgSWRlbnRpZmllciBzb3VyY2U7IGNvbnN0IElkZW50
aWZpZXIgc291cmNlQ29kZTsgY29uc3QgSWRlbnRpZmllciBzb3VyY2VVUkw7IGNvbnN0IElkZW50
aWZpZXIgc3RhY2s7IGNvbnN0IElkZW50aWZpZXIgc3RhY2tUcmFjZUxpbWl0OyBjb25zdCBJZGVu
dGlmaWVyIHN0aWNreTsgY29uc3QgSWRlbnRpZmllciBzdHlsZTsgY29uc3QgSWRlbnRpZmllciBz
dWJhcnJheTsgY29uc3QgSWRlbnRpZmllciBzdW1tYXJ5OyBjb25zdCBJZGVudGlmaWVyIHRhcmdl
dDsgY29uc3QgSWRlbnRpZmllciB0ZXN0OyBjb25zdCBJZGVudGlmaWVyIHRoZW47IGNvbnN0IElk
ZW50aWZpZXIgdGltZTsgY29uc3QgSWRlbnRpZmllciB0aW1lWm9uZTsgY29uc3QgSWRlbnRpZmll
ciB0aW1lWm9uZU5hbWU7IGNvbnN0IElkZW50aWZpZXIgdG9FeHBvbmVudGlhbDsgY29uc3QgSWRl
bnRpZmllciB0b0ZpeGVkOyBjb25zdCBJZGVudGlmaWVyIHRvSVNPU3RyaW5nOyBjb25zdCBJZGVu
dGlmaWVyIHRvSlNPTjsgY29uc3QgSWRlbnRpZmllciB0b0xvY2FsZVN0cmluZzsgY29uc3QgSWRl
bnRpZmllciB0b1ByZWNpc2lvbjsgY29uc3QgSWRlbnRpZmllciB0b1N0cmluZzsgY29uc3QgSWRl
bnRpZmllciB0eXBlOyBjb25zdCBJZGVudGlmaWVyIHVpZDsgY29uc3QgSWRlbnRpZmllciB1bmlj
b2RlOyBjb25zdCBJZGVudGlmaWVyIHVzYWdlOyBjb25zdCBJZGVudGlmaWVyIHZhbHVlOyBjb25z
dCBJZGVudGlmaWVyIHZhbHVlT2Y7IGNvbnN0IElkZW50aWZpZXIgd2Vla2RheTsgY29uc3QgSWRl
bnRpZmllciB3cml0YWJsZTsgY29uc3QgSWRlbnRpZmllciB5ZWFyOw0KDQoNCg0KICAgICAgICBj
b25zdCBJZGVudGlmaWVyIGhhc0luc3RhbmNlU3ltYm9sOyBjb25zdCBJZGVudGlmaWVyIGlzQ29u
Y2F0U3ByZWFkYWJsZVN5bWJvbDsgY29uc3QgSWRlbnRpZmllciBhc3luY0l0ZXJhdG9yU3ltYm9s
OyBjb25zdCBJZGVudGlmaWVyIGl0ZXJhdG9yU3ltYm9sOyBjb25zdCBJZGVudGlmaWVyIG1hdGNo
U3ltYm9sOyBjb25zdCBJZGVudGlmaWVyIG1hdGNoQWxsU3ltYm9sOyBjb25zdCBJZGVudGlmaWVy
IHJlcGxhY2VTeW1ib2w7IGNvbnN0IElkZW50aWZpZXIgc2VhcmNoU3ltYm9sOyBjb25zdCBJZGVu
dGlmaWVyIHNwZWNpZXNTeW1ib2w7IGNvbnN0IElkZW50aWZpZXIgc3BsaXRTeW1ib2w7IGNvbnN0
IElkZW50aWZpZXIgdG9QcmltaXRpdmVTeW1ib2w7IGNvbnN0IElkZW50aWZpZXIgdG9TdHJpbmdU
YWdTeW1ib2w7IGNvbnN0IElkZW50aWZpZXIgdW5zY29wYWJsZXNTeW1ib2w7DQoNCg0KDQogICAg
ICAgIGNvbnN0IElkZW50aWZpZXIgY29uc3RydWN0b3JQcml2YXRlRmllbGQ7DQoNCg0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGFwcGVuZEV4
dGVybmFsTmFtZShjb25zdCBJZGVudGlmaWVyJiBwdWJsaWNOYW1lLCBjb25zdCBJZGVudGlmaWVy
JiBwcml2YXRlTmFtZSk7DQogICAgfTsNCg0KfSANCiNsaW5lIDI4ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU3RyaW5nLmgiDQoN
Cg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxUaHJvd1Njb3BlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEV4
Y2VwdGlvblNjb3BlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCiAgICANCmNs
YXNzIEV4Y2VwdGlvbjsNCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
NzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcRXhjZXB0aW9uU2NvcGUuaCINCiAgICANCg0KDQoNCg0KY2xhc3MgRXhjZXB0aW9uU2Nv
cGUgew0KcHVibGljOg0KICAgIF9fZm9yY2VpbmxpbmUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4g
bV92bTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgRXhjZXB0aW9uKiBleGNlcHRpb24oKSB7IHJldHVy
biBtX3ZtLmV4Y2VwdGlvbigpOyB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgYXNzZXJ0Tm9F
eGNlcHRpb24oKSB7ICgodm9pZCkwKTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCByZWxlYXNl
QXNzZXJ0Tm9FeGNlcHRpb24oKSB7IGRvIHsgaWYgKCghKCFleGNlcHRpb24oKSkpKSBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oOTAsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEV4Y2VwdGlvblNjb3BlLmgiLCAgX19GVU5DVElPTl9fICAs
IDYyICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IH0NCg0KcHJvdGVjdGVkOg0KICAg
IF9fZm9yY2VpbmxpbmUgRXhjZXB0aW9uU2NvcGUoVk0mIHZtKQ0KICAgICAgICA6IG1fdm0odm0p
DQogICAgeyB9DQogICAgRXhjZXB0aW9uU2NvcGUoY29uc3QgRXhjZXB0aW9uU2NvcGUmKSA9IGRl
bGV0ZTsNCiAgICBFeGNlcHRpb25TY29wZShFeGNlcHRpb25TY29wZSYmKSA9IGRlZmF1bHQ7DQoN
CiAgICBfX2ZvcmNlaW5saW5lIENTdHJpbmcgdW5leHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKSB7
IHJldHVybiB7IH07IH0NCg0KICAgIFZNJiBtX3ZtOw0KfTsNCg0KI2xpbmUgMTA1ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEV4Y2Vw
dGlvblNjb3BlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFRocm93
U2NvcGUuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENhbGxGcmFtZTsNCmNsYXNzIEpT
T2JqZWN0Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDcwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFRocm93U2NvcGUuaCINCg0KY2xhc3Mg
VGhyb3dTY29wZSA6IHB1YmxpYyBFeGNlcHRpb25TY29wZSB7DQpwdWJsaWM6DQogICAgX19mb3Jj
ZWlubGluZSBUaHJvd1Njb3BlKFZNJiB2bSkNCiAgICAgICAgOiBFeGNlcHRpb25TY29wZSh2bSkN
CiAgICB7IH0NCiAgICBUaHJvd1Njb3BlKGNvbnN0IFRocm93U2NvcGUmKSA9IGRlbGV0ZTsNCiAg
ICBUaHJvd1Njb3BlKFRocm93U2NvcGUmJikgPSBkZWZhdWx0Ow0KDQogICAgX19mb3JjZWlubGlu
ZSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgZXhjZXB0aW9uKTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgRXhjZXB0aW9uKiB0aHJv
d0V4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSB7
IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdmFsdWUpOyB9DQoNCiAg
ICBfX2ZvcmNlaW5saW5lIHZvaWQgcmVsZWFzZSgpIHsgfQ0KfTsNCg0KDQoNCg0KI2xpbmUgODkg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcVGhyb3dTY29wZS5oIg0KDQpfX2ZvcmNlaW5saW5lIEV4Y2VwdGlvbiogdGhyb3dFeGNlcHRp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2Vw
dGlvbiogZXhjZXB0aW9uKQ0Kew0KICAgIHJldHVybiBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIGV4Y2VwdGlvbik7DQp9DQoNCl9fZm9yY2VpbmxpbmUgRXhjZXB0aW9uKiB0aHJv
d0V4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29w
ZSwgSlNWYWx1ZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gc2NvcGUudGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCB2YWx1ZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhy
b3dWTUV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBz
Y29wZSwgRXhjZXB0aW9uKiBleGNlcHRpb24pDQp7DQogICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXhjZXB0aW9uKTsNCiAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsN
Cn0NCg0KX19mb3JjZWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXhjZXB0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIHZhbHVl
KQ0Kew0KICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIHZhbHVlKTsNCiAg
ICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsNCn0NCg0KfSANCiNsaW5lIDM0ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU3RyaW5n
LmgiDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpTU3RyaW5nOw0KY2xhc3Mg
SlNSb3BlU3RyaW5nOw0KY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KDQpKU1N0cmluZyog
anNFbXB0eVN0cmluZyhWTSYpOw0KSlNTdHJpbmcqIGpzU3RyaW5nKFZNJiwgY29uc3QgU3RyaW5n
Jik7IA0KDQpKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVk0mLCBVQ2hhcik7DQpK
U1N0cmluZyoganNTdWJzdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7DQoNCg0KDQpKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKFZN
JiwgY29uc3QgU3RyaW5nJik7DQpKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKFZNJiwgU3Ry
aW5nJiYpOw0KDQoNCg0KDQpKU1N0cmluZyoganNPd25lZFN0cmluZyhWTSYsIGNvbnN0IFN0cmlu
ZyYpOw0KDQpib29sIGlzSlNTdHJpbmcoSlNDZWxsKik7DQpib29sIGlzSlNTdHJpbmcoSlNWYWx1
ZSk7DQpKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsNCnB1YmxpYzoNCiAg
ICBmcmllbmQgY2xhc3MgSklUOw0KICAgIGZyaWVuZCBjbGFzcyBWTTsNCiAgICBmcmllbmQgY2xh
c3MgU3BlY2lhbGl6ZWRUaHVua0pJVDsNCiAgICBmcmllbmQgY2xhc3MgSlNSb3BlU3RyaW5nOw0K
ICAgIGZyaWVuZCBjbGFzcyBNYXJrU3RhY2s7DQogICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9y
Ow0KICAgIGZyaWVuZCBjbGFzcyBTbWFsbFN0cmluZ3M7DQoNCiAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOw0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlz
Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0K
ICAgIHN0YXRpYyBfX2ZvcmNlaW5saW5lIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpDQogICAg
ew0KICAgICAgICBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGNlbGwpLT5KU1N0cmluZzo6fkpTU3Ry
aW5nKCk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBT
dWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0uc3RyaW5nU3BhY2U7DQogICAgfQ0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWF4TGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7DQogICAgc3RhdGljX2Fzc2Vy
dChNYXhMZW5ndGggPT0gU3RyaW5nOjpNYXhMZW5ndGgsICIiKTsNCg0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludHB0cl90IGlzUm9wZUluUG9pbnRlciA9IDB4MTsNCg0KcHJpdmF0ZToNCiAgICBT
dHJpbmcmIHVuaW5pdGlhbGl6ZWRWYWx1ZUludGVybmFsKCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiAqYml0d2lzZV9jYXN0PFN0cmluZyo+KCZtX2ZpYmVyKTsNCiAgICB9DQoNCiAgICBT
dHJpbmcmIHZhbHVlSW50ZXJuYWwoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICByZXR1cm4gdW5pbml0aWFsaXplZFZhbHVlSW50ZXJuYWwoKTsNCiAgICB9DQoNCiAg
ICBKU1N0cmluZyhWTSYgdm0sIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQ0KICAgICAgICA6IEpT
Q2VsbCh2bSwgdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKQ0KICAgIHsNCiAgICAgICAgbmV3ICgm
dW5pbml0aWFsaXplZFZhbHVlSW50ZXJuYWwoKSkgU3RyaW5nKHN0ZDo6bW92ZTxXVEY6OkNoZWNr
TW92ZVBhcmFtZXRlcj4odmFsdWUpKTsNCiAgICB9DQoNCiAgICBKU1N0cmluZyhWTSYgdm0pDQog
ICAgICAgIDogSlNDZWxsKHZtLCB2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpDQogICAgICAgICwg
bV9maWJlcihpc1JvcGVJblBvaW50ZXIpDQogICAgew0KICAgIH0NCg0KICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpDQogICAgew0KICAgICAgICAoKHZvaWQp
bGVuZ3RoKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7DQogICAgfQ0KDQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIHVuc2lnbmVk
IGxlbmd0aCwgc2l6ZV90IGNvc3QpDQogICAgew0KICAgICAgICAoKHZvaWQpbGVuZ3RoKTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7DQogICAg
ICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoY29zdCk7DQogICAgfQ0KDQog
ICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVFbXB0eVN0cmluZyhWTSYpOw0KDQogICAgc3RhdGlj
IEpTU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBSZWY8U3RyaW5nSW1wbD4mJiB2YWx1ZSkNCiAgICB7
DQogICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICBzaXplX3QgY29zdCA9IHZhbHVlLT5jb3N0KCk7DQogICAgICAgIEpT
U3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4o
dm0uaGVhcCkpIEpTU3RyaW5nKHZtLCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+
KHZhbHVlKSk7DQogICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0sIGxlbmd0aCwg
Y29zdCk7DQogICAgICAgIHJldHVybiBuZXdTdHJpbmc7DQogICAgfQ0KICAgIHN0YXRpYyBKU1N0
cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihWTSYgdm0sIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVl
KQ0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdmFsdWUtPmxlbmd0aCgpOw0KICAg
ICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNT
dHJpbmc+KHZtLmhlYXApKSBKU1N0cmluZyh2bSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFy
YW1ldGVyPih2YWx1ZSkpOw0KICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBs
ZW5ndGgpOw0KICAgICAgICByZXR1cm4gbmV3U3RyaW5nOw0KICAgIH0NCg0KcHJvdGVjdGVkOg0K
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOw0KICAgIH0NCg0KcHVibGljOg0KICAgIH5KU1N0cmluZygpOw0KDQog
ICAgSWRlbnRpZmllciB0b0lkZW50aWZpZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICBB
dG9tU3RyaW5nIHRvQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIFJlZlB0
cjxBdG9tU3RyaW5nSW1wbD4gdG9FeGlzdGluZ0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBj
b25zdDsNCg0KICAgIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyB2aWV3V2l0aFVuZGVy
bHlpbmdTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCg0KICAgIGlubGluZSBib29sIGVx
dWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqIG90aGVyKSBjb25zdDsNCiAgICBjb25zdCBT
dHJpbmcmIHZhbHVlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQogICAgaW5saW5lIGNvbnN0IFN0
cmluZyYgdHJ5R2V0VmFsdWUoYm9vbCBhbGxvY2F0aW9uQWxsb3dlZCA9IHRydWUpIGNvbnN0Ow0K
ICAgIGNvbnN0IFN0cmluZ0ltcGwqIGdldFZhbHVlSW1wbCgpIGNvbnN0Ow0KICAgIGNvbnN0IFN0
cmluZ0ltcGwqIHRyeUdldFZhbHVlSW1wbCgpIGNvbnN0Ow0KICAgIF9fZm9yY2VpbmxpbmUgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3Q7DQoNCiAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEpTR2xvYmFs
T2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7DQogICAgYm9vbCB0b0Jvb2xl
YW4oKSBjb25zdCB7IHJldHVybiAhIWxlbmd0aCgpOyB9DQogICAgYm9vbCBnZXRQcmltaXRpdmVO
dW1iZXIoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0Ow0K
ICAgIEpTT2JqZWN0KiB0b09iamVjdChKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIGRvdWJs
ZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KDQogICAgYm9vbCBnZXRTdHJpbmdQ
cm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
Ow0KICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBib29sIGdldFN0cmluZ1Byb3Bl
cnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJik7DQoNCiAgICBib29sIGNhbkdldEluZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkg
PCBsZW5ndGgoKTsgfQ0KICAgIEpTU3RyaW5nKiBnZXRJbmRleChKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkKTsNCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
VmFsdWUoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnBy
ZXRfY2FzdDxKU1N0cmluZyo+KDB4NDAwMCktPm1fZmliZXIpKSAtIDB4NDAwMCk7IH0NCg0KICAg
IHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgc3RhdGljIHZvaWQgZHVt
cFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCosIFByaW50U3RyZWFtJik7DQogICAgc3RhdGljIHNpemVf
dCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZNJik7DQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KDQogICAgX19mb3JjZWlubGluZSBib29sIGlz
Um9wZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9maWJlciAmIGlzUm9wZUluUG9p
bnRlcjsNCiAgICB9DQoNCiAgICBib29sIGlzOEJpdCgpIGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6DQog
ICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9v
bCBlcXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqIG90aGVyKSBjb25zdDsN
CiAgICBib29sIGlzU3Vic3RyaW5nKCkgY29uc3Q7DQoNCiAgICBtdXRhYmxlIHVpbnRwdHJfdCBt
X2ZpYmVyOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7DQoNCiAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBFQ01BTW9kZSk7DQoNCiAgICBTdHJpbmdWaWV3IHVuc2FmZVZpZXcoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsNCg0KICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJpbmcoVk0mLCBjb25zdCBTdHJp
bmcmKTsNCiAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNT
dHJpbmcqLCBKU1N0cmluZyopOw0KICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmLCBKU1N0cmluZyopOw0KICAgIGZyaWVuZCBKU1N0cmlu
ZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIGNvbnN0IFN0cmluZyYpOw0K
ICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsNCiAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBKU1N0cmluZyosIEpTU3RyaW5nKik7DQogICAgZnJpZW5k
IEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOw0KICAgIGZyaWVuZCBKU1N0cmluZyoganNTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoVk0mLCBVQ2hhcik7DQogICAgZnJpZW5kIEpTU3RyaW5nKiBqc05vbnRy
aXZpYWxTdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmKTsNCiAgICBmcmllbmQgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhWTSYsIFN0cmluZyYmKTsNCiAgICBmcmllbmQgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkKTsNCiAgICBm
cmllbmQgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmlu
ZyosIHVuc2lnbmVkLCB1bnNpZ25lZCk7DQogICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N1YnN0cmlu
Z09mUmVzb2x2ZWQoVk0mLCBHQ0RlZmVycmFsQ29udGV4dCosIEpTU3RyaW5nKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsNCiAgICBmcmllbmQgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoVk0mLCBjb25z
dCBTdHJpbmcmKTsNCn07DQoNCg0KDQpjbGFzcyBKU1JvcGVTdHJpbmcgZmluYWwgOiBwdWJsaWMg
SlNTdHJpbmcgew0KICAgIGZyaWVuZCBjbGFzcyBKU1N0cmluZzsNCnB1YmxpYzoNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gJnZtLnJvcGVTdHJpbmdT
cGFjZTsNCiAgICB9DQoNCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBpczhC
aXRJblBvaW50ZXIgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFN0cmluZ0ltcGw6OmZsYWdJczhC
aXQoKSk7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgaXNTdWJzdHJpbmdJblBvaW50
ZXIgPSAweDI7DQogICAgc3RhdGljX2Fzc2VydChpczhCaXRJblBvaW50ZXIgPT0gMGIxMDAsICIi
KTsNCiAgICBzdGF0aWNfYXNzZXJ0KGlzU3Vic3RyaW5nSW5Qb2ludGVyID09IDBiMDEwLCAiIik7
DQogICAgc3RhdGljX2Fzc2VydChpc1JvcGVJblBvaW50ZXIgPT0gMGIwMDEsICIiKTsNCiAgICBz
dGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBzdHJpbmdNYXNrID0gfihpc1JvcGVJblBvaW50ZXIg
fCBpczhCaXRJblBvaW50ZXIgfCBpc1N1YnN0cmluZ0luUG9pbnRlcik7DQoNCiAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZih1aW50cHRyX3QpID09IHNpemVvZih1aW50NjRfdCksICIiKTsNCiAgICBj
bGFzcyBDb21wYWN0RmliZXJzIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludHB0cl90IGFkZHJlc3NNYXNrID0gKDFVTEwgPDwgKDQ4KSkgLSAxOw0KICAgICAgICBK
U1N0cmluZyogZmliZXIxKCkgY29uc3QNCiAgICAgICAgew0KDQogICAgICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PEpTU3RyaW5nKj4oV1RGOjp1bmFsaWduZWRMb2FkPHVpbnRwdHJfdD4oJm1f
ZmliZXIxTG93ZXIpICYgYWRkcmVzc01hc2spOw0KDQoNCiNsaW5lIDI5MSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1N0cmluZy5o
Ig0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBpbml0aWFsaXplRmliZXIxKEpTU3RyaW5nKiBm
aWJlcikNCiAgICAgICAgew0KICAgICAgICAgICAgdWludHB0cl90IHBvaW50ZXIgPSBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihmaWJlcik7DQogICAgICAgICAgICBtX2ZpYmVyMUxvd2VyID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHBvaW50ZXIpOw0KICAgICAgICAgICAgbV9maWJlcjFVcHBlciA9
IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb2ludGVyID4+IDMyKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIEpTU3RyaW5nKiBmaWJlcjIoKSBjb25zdA0KICAgICAgICB7DQoNCiAgICAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8SlNTdHJpbmcqPihXVEY6OnVuYWxpZ25lZExvYWQ8dWludHB0cl90
PigmbV9maWJlcjFVcHBlcikgPj4gMTYpOw0KDQoNCiNsaW5lIDMwNyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1N0cmluZy5oIg0K
ICAgICAgICB9DQogICAgICAgIHZvaWQgaW5pdGlhbGl6ZUZpYmVyMihKU1N0cmluZyogZmliZXIp
DQogICAgICAgIHsNCiAgICAgICAgICAgIHVpbnRwdHJfdCBwb2ludGVyID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oZmliZXIpOw0KICAgICAgICAgICAgbV9maWJlcjJMb3dlciA9IHN0YXRpY19j
YXN0PHVpbnQxNl90Pihwb2ludGVyKTsNCiAgICAgICAgICAgIG1fZmliZXIyVXBwZXIgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4ocG9pbnRlciA+PiAxNik7DQogICAgICAgIH0NCg0KICAgICAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQ0KICAgICAgICB2b2lk
IGluaXRpYWxpemVMZW5ndGgodW5zaWduZWQgbGVuZ3RoKQ0KICAgICAgICB7DQogICAgICAgICAg
ICBtX2xlbmd0aCA9IGxlbmd0aDsNCiAgICAgICAgfQ0KDQogICAgICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+
KCYocmVpbnRlcnByZXRfY2FzdDxDb21wYWN0RmliZXJzKj4oMHg0MDAwKS0+bV9sZW5ndGgpKSAt
IDB4NDAwMCk7IH0NCiAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkZpYmVyMSgpIHsg
cmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PENv
bXBhY3RGaWJlcnMqPigweDQwMDApLT5tX2xlbmd0aCkpIC0gMHg0MDAwKTsgfQ0KICAgICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIyKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nh
c3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Q29tcGFjdEZpYmVycyo+KDB4NDAwMCkt
Pm1fZmliZXIxVXBwZXIpKSAtIDB4NDAwMCk7IH0NCg0KICAgIHByaXZhdGU6DQogICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCiAgICAgICAgdWludDMyX3QgbV9s
ZW5ndGggeyAwIH07DQogICAgICAgIHVpbnQzMl90IG1fZmliZXIxTG93ZXIgeyAwIH07DQogICAg
ICAgIHVpbnQxNl90IG1fZmliZXIxVXBwZXIgeyAwIH07DQogICAgICAgIHVpbnQxNl90IG1fZmli
ZXIyTG93ZXIgeyAwIH07DQogICAgICAgIHVpbnQzMl90IG1fZmliZXIyVXBwZXIgeyAwIH07DQog
ICAgfTsNCiAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDb21wYWN0RmliZXJzKSA9PSBzaXplb2Yo
dm9pZCopICogMiwgIiIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM3NCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1N0cmlu
Zy5oIg0KDQogICAgdGVtcGxhdGUgPGNsYXNzIE92ZXJmbG93SGFuZGxlciA9IENyYXNoT25PdmVy
Zmxvdz4NCiAgICBjbGFzcyBSb3BlQnVpbGRlciA6IHB1YmxpYyBPdmVyZmxvd0hhbmRsZXIgew0K
ICAgICAgICBwcml2YXRlOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKikgPSBkZWxl
dGU7IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90KSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHNpemUpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgPSBkZWxldGU7IHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzRm9yYmlkSGVhcEFsbG9jYXRpb25NYWNybzsNCiAgICBwdWJsaWM6
DQogICAgICAgIFJvcGVCdWlsZGVyKFZNJiB2bSkNCiAgICAgICAgICAgIDogbV92bSh2bSkNCiAg
ICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBhcHBlbmQoSlNTdHJpbmcqIGpzU3Ry
aW5nKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoKHRoaXMtPmhhc092ZXJmbG93ZWQoKSkp
DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgaWYgKCFqc1N0cmlu
Zy0+bGVuZ3RoKCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICBp
ZiAobV9zdHJpbmdzLnNpemUoKSA9PSBKU1JvcGVTdHJpbmc6OnNfbWF4SW50ZXJuYWxSb3BlTGVu
Z3RoKQ0KICAgICAgICAgICAgICAgIGV4cGFuZCgpOw0KDQogICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KEpTU3RyaW5nOjpNYXhMZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCksICIiKTsNCiAgICAgICAgICAgIGF1dG8gc3VtID0gY2hlY2tlZFN1bTxpbnQzMl90Piht
X2xlbmd0aCwganNTdHJpbmctPmxlbmd0aCgpKTsNCiAgICAgICAgICAgIGlmIChzdW0uaGFzT3Zl
cmZsb3dlZCgpKSB7DQogICAgICAgICAgICAgICAgdGhpcy0+b3ZlcmZsb3dlZCgpOw0KICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgICAgIG1fc3RyaW5ncy5hcHBlbmQoanNTdHJpbmcpOw0KICAgICAgICAg
ICAgbV9sZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VtLnVuc2FmZUdldCgpKTsNCiAg
ICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgSlNTdHJpbmcqIHJl
bGVhc2UoKQ0KICAgICAgICB7DQogICAgICAgICAgICBkbyB7IGlmICgoISghdGhpcy0+aGFzT3Zl
cmZsb3dlZCgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxl
ckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg0MDcsICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU3RyaW5nLmgiLCAg
X19GVU5DVElPTl9fICAsIDYzICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAg
ICAgICAgICBKU1N0cmluZyogcmVzdWx0ID0gbnVsbHB0cjsNCiAgICAgICAgICAgIHN3aXRjaCAo
bV9zdHJpbmdzLnNpemUoKSkgew0KICAgICAgICAgICAgY2FzZSAwOiB7DQogICAgICAgICAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzRW1wdHlTdHJpbmcobV92
bSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBj
YXNlIDE6IHsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSBhc1N0cmluZyhtX3N0cmluZ3MuYXQo
MCkpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
Y2FzZSAyOiB7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gSlNSb3BlU3RyaW5nOjpjcmVhdGUo
bV92bSwgYXNTdHJpbmcobV9zdHJpbmdzLmF0KDApKSwgYXNTdHJpbmcobV9zdHJpbmdzLmF0KDEp
KSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBj
YXNlIDM6IHsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSBKU1JvcGVTdHJpbmc6OmNyZWF0ZSht
X3ZtLCBhc1N0cmluZyhtX3N0cmluZ3MuYXQoMCkpLCBhc1N0cmluZyhtX3N0cmluZ3MuYXQoMSkp
LCBhc1N0cmluZyhtX3N0cmluZ3MuYXQoMikpKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICAgICAgbV9zdHJpbmdzLmNsZWFyKCk7DQogICAgICAgICAgICBt
X2xlbmd0aCA9IDA7DQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQoNCiAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOw0KICAgICAgICB9DQoNCiAgICBw
cml2YXRlOg0KICAgICAgICB2b2lkIGV4cGFuZCgpOw0KDQogICAgICAgIFZNJiBtX3ZtOw0KICAg
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBtX3N0cmluZ3M7DQogICAgICAgIHVuc2lnbmVkIG1f
bGVuZ3RoIHsgMCB9Ow0KICAgIH07DQoNCiAgICBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2NvbXBhY3RGaWJlcnMubGVuZ3RoKCk7DQogICAg
fQ0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoN
CiAgICB2b2lkIGNvbnZlcnRUb05vblJvcGUoU3RyaW5nJiYpIGNvbnN0Ow0KDQogICAgdm9pZCBp
bml0aWFsaXplSXM4Qml0KGJvb2wgZmxhZykgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChmbGFn
KQ0KICAgICAgICAgICAgbV9maWJlciB8PSBpczhCaXRJblBvaW50ZXI7DQogICAgICAgIGVsc2UN
CiAgICAgICAgICAgIG1fZmliZXIgJj0gfmlzOEJpdEluUG9pbnRlcjsNCiAgICB9DQoNCiAgICB2
b2lkIGluaXRpYWxpemVJc1N1YnN0cmluZyhib29sIGZsYWcpIGNvbnN0DQogICAgew0KICAgICAg
ICBpZiAoZmxhZykNCiAgICAgICAgICAgIG1fZmliZXIgfD0gaXNTdWJzdHJpbmdJblBvaW50ZXI7
DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fZmliZXIgJj0gfmlzU3Vic3RyaW5nSW5Qb2lu
dGVyOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBpbml0aWFsaXplTGVuZ3RoKHVu
c2lnbmVkIGxlbmd0aCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbV9jb21w
YWN0RmliZXJzLmluaXRpYWxpemVMZW5ndGgobGVuZ3RoKTsNCiAgICB9DQoNCiAgICBKU1JvcGVT
dHJpbmcoVk0mIHZtKQ0KICAgICAgICA6IEpTU3RyaW5nKHZtKQ0KICAgIHsNCiAgICAgICAgaW5p
dGlhbGl6ZUlzU3Vic3RyaW5nKGZhbHNlKTsNCiAgICAgICAgaW5pdGlhbGl6ZUxlbmd0aCgwKTsN
CiAgICAgICAgaW5pdGlhbGl6ZUlzOEJpdCh0cnVlKTsNCiAgICAgICAgaW5pdGlhbGl6ZUZpYmVy
MChudWxscHRyKTsNCiAgICAgICAgaW5pdGlhbGl6ZUZpYmVyMShudWxscHRyKTsNCiAgICAgICAg
aW5pdGlhbGl6ZUZpYmVyMihudWxscHRyKTsNCiAgICB9DQoNCiAgICBKU1JvcGVTdHJpbmcoVk0m
IHZtLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikNCiAgICAgICAgOiBKU1N0cmluZyh2bSkN
CiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgaW5pdGlhbGl6ZUlzU3Vic3RyaW5n
KGZhbHNlKTsNCiAgICAgICAgaW5pdGlhbGl6ZUxlbmd0aChzMS0+bGVuZ3RoKCkgKyBzMi0+bGVu
Z3RoKCkpOw0KICAgICAgICBpbml0aWFsaXplSXM4Qml0KHMxLT5pczhCaXQoKSAmJiBzMi0+aXM4
Qml0KCkpOw0KICAgICAgICBpbml0aWFsaXplRmliZXIwKHMxKTsNCiAgICAgICAgaW5pdGlhbGl6
ZUZpYmVyMShzMik7DQogICAgICAgIGluaXRpYWxpemVGaWJlcjIobnVsbHB0cik7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICB9DQoNCiAgICBKU1JvcGVTdHJpbmcoVk0mIHZtLCBKU1N0cmluZyog
czEsIEpTU3RyaW5nKiBzMiwgSlNTdHJpbmcqIHMzKQ0KICAgICAgICA6IEpTU3RyaW5nKHZtKQ0K
ICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpbml0aWFsaXplSXNTdWJzdHJpbmco
ZmFsc2UpOw0KICAgICAgICBpbml0aWFsaXplTGVuZ3RoKHMxLT5sZW5ndGgoKSArIHMyLT5sZW5n
dGgoKSArIHMzLT5sZW5ndGgoKSk7DQogICAgICAgIGluaXRpYWxpemVJczhCaXQoczEtPmlzOEJp
dCgpICYmIHMyLT5pczhCaXQoKSAmJiAgczMtPmlzOEJpdCgpKTsNCiAgICAgICAgaW5pdGlhbGl6
ZUZpYmVyMChzMSk7DQogICAgICAgIGluaXRpYWxpemVGaWJlcjEoczIpOw0KICAgICAgICBpbml0
aWFsaXplRmliZXIyKHMzKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIEpTUm9w
ZVN0cmluZyhWTSYgdm0sIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkNCiAgICAgICAgOiBKU1N0cmluZyh2bSkNCiAgICB7DQogICAgICAgIGRvIHsgaWYg
KCghKCFzdW1PdmVyZmxvd3M8aW50MzJfdD4ob2Zmc2V0LCBsZW5ndGgpKSkpIGRvIHsgV1RGOjpp
c0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jh
c2hXaXRoSW5mbyg1MjMsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEpTU3RyaW5nLmgiLCAgX19GVU5DVElPTl9fICAsIDY0ICk7IH0g
d2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIGRvIHsgaWYgKCghKG9mZnNldCAr
IGxlbmd0aCA8PSBiYXNlLT5sZW5ndGgoKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRl
clR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNTI0LCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxKU1N0cmluZy5oIiwgIF9fRlVOQ1RJT05fXyAgLCA2NSApOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOw0KICAgICAgICBpbml0aWFsaXplSXNTdWJzdHJpbmcodHJ1ZSk7DQogICAgICAg
IGluaXRpYWxpemVMZW5ndGgobGVuZ3RoKTsNCiAgICAgICAgaW5pdGlhbGl6ZUlzOEJpdChiYXNl
LT5pczhCaXQoKSk7DQogICAgICAgIGluaXRpYWxpemVTdWJzdHJpbmdCYXNlKGJhc2UpOw0KICAg
ICAgICBpbml0aWFsaXplU3Vic3RyaW5nT2Zmc2V0KG9mZnNldCk7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBm
aW5pc2hDcmVhdGlvblN1YnN0cmluZ09mUmVzb2x2ZWQoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOw0KICAgIH0NCg0KcHVibGljOg0KICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJk
aWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1JvcGVTdHJpbmcqPigweDQwMDApLT5tX2NvbXBh
Y3RGaWJlcnMpKSAtIDB4NDAwMCkgKyBDb21wYWN0RmliZXJzOjpvZmZzZXRPZkxlbmd0aCgpOyB9
IA0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGbGFncygpIHsgcmV0dXJuIG9mZnNldE9m
VmFsdWUoKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZGaWJlcjAoKSB7IHJldHVy
biBvZmZzZXRPZlZhbHVlKCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRmliZXIx
KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nh
c3Q8SlNSb3BlU3RyaW5nKj4oMHg0MDAwKS0+bV9jb21wYWN0RmliZXJzKSkgLSAweDQwMDApICsg
Q29tcGFjdEZpYmVyczo6b2Zmc2V0T2ZGaWJlcjEoKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZGaWJlcjIoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxKU1JvcGVTdHJpbmcqPigweDQwMDApLT5tX2NvbXBhY3RGaWJlcnMp
KSAtIDB4NDAwMCkgKyBDb21wYWN0RmliZXJzOjpvZmZzZXRPZkZpYmVyMigpOyB9DQoNCiAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID0gMzsNCg0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBKU1JvcGVTdHJp
bmcqIGNyZWF0ZU51bGxGb3JUZXN0aW5nKFZNJiB2bSkNCiAgICB7DQogICAgICAgIEpTUm9wZVN0
cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNSb3BlU3RyaW5n
Pih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtKTsNCiAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hD
cmVhdGlvbih2bSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBuZXdTdHJpbmc7DQogICAgfQ0KDQpwcml2
YXRlOg0KICAgIHN0YXRpYyBKU1JvcGVTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEpTU3RyaW5nKiBz
MSwgSlNTdHJpbmcqIHMyKQ0KICAgIHsNCiAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1Jv
cGVTdHJpbmcodm0sIHMxLCBzMik7DQogICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24o
dm0pOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0
dXJuIG5ld1N0cmluZzsNCiAgICB9DQogICAgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRlKFZN
JiB2bSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykNCiAgICB7DQog
ICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNSb3BlU3RyaW5nPih2bS5oZWFwKSkgSlNSb3BlU3RyaW5nKHZtLCBzMSwgczIsIHMzKTsN
CiAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSk7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gbmV3U3RyaW5nOw0KICAgIH0N
Cg0KICAgIF9fZm9yY2VpbmxpbmUgc3RhdGljIEpTUm9wZVN0cmluZyogY3JlYXRlU3Vic3RyaW5n
T2ZSZXNvbHZlZChWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEpT
U3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7DQog
ICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNSb3BlU3RyaW5nPih2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQpKSBKU1JvcGVTdHJpbmco
dm0sIGJhc2UsIG9mZnNldCwgbGVuZ3RoKTsNCiAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVh
dGlvblN1YnN0cmluZ09mUmVzb2x2ZWQodm0pOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsNCiAgICB9DQoNCiAgICBmcmll
bmQgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEpTR2xvYmFsT2JqZWN0KiwgUmVn
aXN0ZXIqLCB1bnNpZ25lZCk7DQoNCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgY29uc3QgU3RyaW5nJiByZXNvbHZlUm9wZShKU0dsb2JhbE9iamVjdCogbnVsbE9yR2xvYmFs
T2JqZWN0Rm9yT09NKSBjb25zdDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gY29u
c3QgU3RyaW5nJiByZXNvbHZlUm9wZVdpdGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogbnVsbE9y
R2xvYmFsT2JqZWN0Rm9yT09NLCBGdW5jdGlvbiYmKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgQXRvbVN0cmluZyByZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhKU0dsb2JhbE9iamVj
dCopIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBSZWZQdHI8QXRvbVN0cmluZ0lt
cGw+IHJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25z
dDsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBfX2RlY2xzcGVjKG5vaW5s
aW5lKSB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoQ2hhcmFjdGVyVHlwZSopIGNvbnN0Ow0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcmVzb2x2ZVJvcGVJbnRlcm5h
bE5vU3Vic3RyaW5nKENoYXJhY3RlclR5cGUqKSBjb25zdDsNCiAgICB2b2lkIG91dE9mTWVtb3J5
KEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3RGb3JPT00pIGNvbnN0Ow0KICAgIHZv
aWQgcmVzb2x2ZVJvcGVJbnRlcm5hbDgoTENoYXIqKSBjb25zdDsNCiAgICB2b2lkIHJlc29sdmVS
b3BlSW50ZXJuYWwxNihVQ2hhciopIGNvbnN0Ow0KICAgIFN0cmluZ1ZpZXcgdW5zYWZlVmlldyhK
U0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyB2aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCg0KICAg
IEpTU3RyaW5nKiBmaWJlcjAoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxKU1N0cmluZyo+KG1fZmliZXIgJiBzdHJpbmdNYXNrKTsNCiAgICB9DQoNCiAgICBKU1N0
cmluZyogZmliZXIxKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2NvbXBhY3RGaWJl
cnMuZmliZXIxKCk7DQogICAgfQ0KDQogICAgSlNTdHJpbmcqIGZpYmVyMigpIGNvbnN0DQogICAg
ew0KICAgICAgICByZXR1cm4gbV9jb21wYWN0RmliZXJzLmZpYmVyMigpOw0KICAgIH0NCg0KICAg
IEpTU3RyaW5nKiBmaWJlcih1bnNpZ25lZCBpKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHN3aXRjaCAoaSkgew0KICAgICAgICBj
YXNlIDA6DQogICAgICAgICAgICByZXR1cm4gZmliZXIwKCk7DQogICAgICAgIGNhc2UgMToNCiAg
ICAgICAgICAgIHJldHVybiBmaWJlcjEoKTsNCiAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAg
cmV0dXJuIGZpYmVyMigpOw0KICAgICAgICB9DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
cmV0dXJuIG51bGxwdHI7DQogICAgfQ0KDQogICAgdm9pZCBpbml0aWFsaXplRmliZXIwKEpTU3Ry
aW5nKiBmaWJlcikNCiAgICB7DQogICAgICAgIHVpbnRwdHJfdCBwb2ludGVyID0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oZmliZXIpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIG1fZmli
ZXIgPSAocG9pbnRlciB8IChtX2ZpYmVyICYgfnN0cmluZ01hc2spKTsNCiAgICB9DQoNCiAgICB2
b2lkIGluaXRpYWxpemVGaWJlcjEoSlNTdHJpbmcqIGZpYmVyKQ0KICAgIHsNCiAgICAgICAgbV9j
b21wYWN0RmliZXJzLmluaXRpYWxpemVGaWJlcjEoZmliZXIpOw0KICAgIH0NCg0KICAgIHZvaWQg
aW5pdGlhbGl6ZUZpYmVyMihKU1N0cmluZyogZmliZXIpDQogICAgew0KICAgICAgICBtX2NvbXBh
Y3RGaWJlcnMuaW5pdGlhbGl6ZUZpYmVyMihmaWJlcik7DQogICAgfQ0KDQogICAgdm9pZCBpbml0
aWFsaXplU3Vic3RyaW5nQmFzZShKU1N0cmluZyogZmliZXIpDQogICAgew0KICAgICAgICBpbml0
aWFsaXplRmliZXIxKGZpYmVyKTsNCiAgICB9DQoNCiAgICBKU1N0cmluZyogc3Vic3RyaW5nQmFz
ZSgpIGNvbnN0IHsgcmV0dXJuIGZpYmVyMSgpOyB9DQoNCiAgICB2b2lkIGluaXRpYWxpemVTdWJz
dHJpbmdPZmZzZXQodW5zaWduZWQgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgbV9jb21wYWN0Rmli
ZXJzLmluaXRpYWxpemVGaWJlcjIoYml0d2lzZV9jYXN0PEpTU3RyaW5nKj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PihvZmZzZXQpKSk7DQogICAgfQ0KDQogICAgdW5zaWduZWQgc3Vic3RyaW5nT2Zm
c2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZmliZXIyKCkpKTsNCiAgICB9DQoNCiAgICBzdGF0aWNf
YXNzZXJ0KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoID49IDIsICIiKTsNCiAgICBtdXRhYmxlIENv
bXBhY3RGaWJlcnMgbV9jb21wYWN0RmliZXJzOw0KDQogICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0
cmluZyhKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsNCiAgICBmcmllbmQg
SlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgSlNTdHJp
bmcqKTsNCiAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNT
dHJpbmcqLCBjb25zdCBTdHJpbmcmKTsNCiAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7DQogICAgZnJpZW5k
IEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcq
LCBKU1N0cmluZyopOw0KICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsNCiAgICBm
cmllbmQgSlNTdHJpbmcqIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZChWTSYsIEdDRGVmZXJyYWxDb250
ZXh0KiwgSlNTdHJpbmcqLCB1bnNpZ25lZCwgdW5zaWduZWQpOw0KICAgIGZyaWVuZCBKU1N0cmlu
ZyoganNTdWJzdHJpbmcoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsNCn07DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1N0cmluZyoganNTdHJp
bmdXaXRoQ2FjaGVTbG93Q2FzZShWTSYsIFN0cmluZ0ltcGwmKTsNCg0KDQoNCl9fZm9yY2Vpbmxp
bmUgYm9vbCBKU1N0cmluZzo6aXM4Qml0KCkgY29uc3QNCnsNCiAgICB1aW50cHRyX3QgcG9pbnRl
ciA9IG1fZmliZXI7DQogICAgaWYgKHBvaW50ZXIgJiBpc1JvcGVJblBvaW50ZXIpIHsNCiAgICAg
ICAgDQogICAgICAgIA0KICAgICAgICByZXR1cm4gcG9pbnRlciAmIEpTUm9wZVN0cmluZzo6aXM4
Qml0SW5Qb2ludGVyOw0KICAgIH0NCiAgICByZXR1cm4gYml0d2lzZV9jYXN0PFN0cmluZ0ltcGwq
Pihwb2ludGVyKS0+aXM4Qml0KCk7DQp9DQoNCg0KDQoNCl9fZm9yY2VpbmxpbmUgdW5zaWduZWQg
SlNTdHJpbmc6Omxlbmd0aCgpIGNvbnN0DQp7DQogICAgdWludHB0cl90IHBvaW50ZXIgPSBtX2Zp
YmVyOw0KICAgIGlmIChwb2ludGVyICYgaXNSb3BlSW5Qb2ludGVyKQ0KICAgICAgICByZXR1cm4g
anNDYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5sZW5ndGgoKTsNCiAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFN0cmluZ0ltcGwqPihwb2ludGVyKS0+bGVuZ3RoKCk7DQp9DQoNCmlubGlu
ZSBjb25zdCBTdHJpbmdJbXBsKiBKU1N0cmluZzo6Z2V0VmFsdWVJbXBsKCkgY29uc3QNCnsNCiAg
ICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxTdHJpbmdJbXBsKj4obV9maWJl
cik7DQp9DQoNCmlubGluZSBjb25zdCBTdHJpbmdJbXBsKiBKU1N0cmluZzo6dHJ5R2V0VmFsdWVJ
bXBsKCkgY29uc3QNCnsNCiAgICB1aW50cHRyX3QgcG9pbnRlciA9IG1fZmliZXI7DQogICAgaWYg
KHBvaW50ZXIgJiBpc1JvcGVJblBvaW50ZXIpDQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8U3RyaW5nSW1wbCo+KHBvaW50ZXIpOw0KfQ0KDQppbmxpbmUg
SlNTdHJpbmcqIGFzU3RyaW5nKEpTVmFsdWUgdmFsdWUpDQp7DQogICAgKCh2b2lkKTApOw0KICAg
IHJldHVybiBqc0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZS5hc0NlbGwoKSk7DQp9DQoNCg0KaW5saW5l
IEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKFZNJiB2bSkNCnsNCiAgICByZXR1cm4gdm0uc21hbGxT
dHJpbmdzLmVtcHR5U3RyaW5nKCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNTdHJpbmcqIGpzU2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKFZNJiB2bSwgVUNoYXIgYykNCnsNCiAgICBpZiBjb25zdGV4cHIg
KHZhbGlkYXRlREZHRG9lc0dDKQ0KICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7DQogICAg
aWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQ0KICAgICAgICByZXR1cm4gdm0uc21h
bGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsNCiAgICByZXR1cm4gSlNTdHJpbmc6
OmNyZWF0ZSh2bSwgU3RyaW5nSW1wbDo6Y3JlYXRlKCZjLCAxKSk7DQp9DQoNCmlubGluZSBKU1N0
cmluZyoganNOb250cml2aWFsU3RyaW5nKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzKQ0Kew0KICAg
ICgodm9pZCkwKTsNCiAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgKnMuaW1wbCgpKTsN
Cn0NCg0KaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoVk0mIHZtLCBTdHJpbmcm
JiBzKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwg
cy5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIElk
ZW50aWZpZXIgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdA0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0
byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICBBdG9tU3RyaW5nIGF0b21TdHJp
bmcgPSB0b0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5l
eGNlcHRpb24oKSkpIHJldHVybiB7IH07IH0gd2hpbGUgKGZhbHNlKTsNCiAgICByZXR1cm4gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgYXRvbVN0cmluZyk7DQp9DQoNCl9fZm9yY2VpbmxpbmUg
QXRvbVN0cmluZyBKU1N0cmluZzo6dG9BdG9tU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0DQp7DQogICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykNCiAg
ICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7DQogICAgaWYgKGlzUm9wZSgpKQ0KICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVS
b3BlVG9BdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7DQogICAgcmV0dXJuIEF0b21TdHJpbmcodmFs
dWVJbnRlcm5hbCgpKTsNCn0NCg0KX19mb3JjZWlubGluZSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+
IEpTU3RyaW5nOjp0b0V4aXN0aW5nQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdA0Kew0KICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpDQogICAg
ICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOw0KICAgIGlmIChpc1JvcGUoKSkNCiAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9w
ZVRvRXhpc3RpbmdBdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7DQogICAgaWYgKHZhbHVlSW50ZXJu
YWwoKS5pbXBsKCktPmlzQXRvbSgpKQ0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbVN0
cmluZ0ltcGwqPih2YWx1ZUludGVybmFsKCkuaW1wbCgpKTsNCiAgICByZXR1cm4gQXRvbVN0cmlu
Z0ltcGw6Omxvb2tVcCh2YWx1ZUludGVybmFsKCkuaW1wbCgpKTsNCn0NCg0KaW5saW5lIGNvbnN0
IFN0cmluZyYgSlNTdHJpbmc6OnZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0DQp7DQogICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykNCiAgICAgICAgdm0o
KS5oZWFwLnZlcmlmeUNhbkdDKCk7DQogICAgaWYgKGlzUm9wZSgpKQ0KICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlKGdsb2Jh
bE9iamVjdCk7DQogICAgcmV0dXJuIHZhbHVlSW50ZXJuYWwoKTsNCn0NCg0KaW5saW5lIGNvbnN0
IFN0cmluZyYgSlNTdHJpbmc6OnRyeUdldFZhbHVlKGJvb2wgYWxsb2NhdGlvbkFsbG93ZWQpIGNv
bnN0DQp7DQogICAgaWYgKGFsbG9jYXRpb25BbGxvd2VkKSB7DQogICAgICAgIGlmIGNvbnN0ZXhw
ciAodmFsaWRhdGVERkdEb2VzR0MpDQogICAgICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0Mo
KTsNCiAgICAgICAgaWYgKGlzUm9wZSgpKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUo
bnVsbHB0cik7DQogICAgICAgIH0NCiAgICB9IGVsc2UNCiAgICAgICAgZG8geyBpZiAoKCEoIWlz
Um9wZSgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZl
bmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg4MDYsICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU3RyaW5nLmgiLCAgX19G
VU5DVElPTl9fICAsIDY2ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgcmV0
dXJuIHZhbHVlSW50ZXJuYWwoKTsNCn0NCg0KaW5saW5lIEpTU3RyaW5nKiBKU1N0cmluZzo6Z2V0
SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSkNCnsNCiAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93
U2NvcGUoKHZtKSk7DQogICAgKCh2b2lkKTApOw0KICAgIFN0cmluZ1ZpZXcgdmlldyA9IHVuc2Fm
ZVZpZXcoZ2xvYmFsT2JqZWN0KTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkp
IHJldHVybiBudWxscHRyOyB9IHdoaWxlIChmYWxzZSk7DQogICAgcmV0dXJuIGpzU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKHZtLCB2aWV3W2ldKTsNCn0NCg0KaW5saW5lIEpTU3RyaW5nKiBqc1N0cmlu
ZyhWTSYgdm0sIGNvbnN0IFN0cmluZyYgcykNCnsNCiAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7
DQogICAgaWYgKCFzaXplKQ0KICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmVtcHR5U3Ry
aW5nKCk7DQogICAgaWYgKHNpemUgPT0gMSkgew0KICAgICAgICBVQ2hhciBjID0gcy5jaGFyYWN0
ZXJBdCgwKTsNCiAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQ0KICAg
ICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7
DQogICAgfQ0KICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKHZtLCAqcy5pbXBsKCkpOw0KfQ0K
DQppbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQ0Kew0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICAo
KHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICBpZiAoIWxlbmd0
aCkNCiAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpOw0KICAgIGlm
ICghb2Zmc2V0ICYmIGxlbmd0aCA9PSBiYXNlLT5sZW5ndGgoKSkNCiAgICAgICAgcmV0dXJuIGJh
c2U7DQoNCiAgICANCiAgICANCiAgICANCiAgICBpZiAoYmFzZS0+aXNTdWJzdHJpbmcoKSkgew0K
ICAgICAgICBKU1JvcGVTdHJpbmcqIGJhc2VSb3BlID0ganNDYXN0PEpTUm9wZVN0cmluZyo+KGJh
c2UpOw0KICAgICAgICBiYXNlID0gYmFzZVJvcGUtPnN1YnN0cmluZ0Jhc2UoKTsNCiAgICAgICAg
b2Zmc2V0ID0gYmFzZVJvcGUtPnN1YnN0cmluZ09mZnNldCgpICsgb2Zmc2V0Ow0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgfSBlbHNlIGlmIChiYXNlLT5pc1JvcGUoKSkgew0KICAgICAgICBqc0Nh
c3Q8SlNSb3BlU3RyaW5nKj4oYmFzZSktPnJlc29sdmVSb3BlKGdsb2JhbE9iamVjdCk7DQogICAg
ICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIG51bGxwdHI7IH0gd2hp
bGUgKGZhbHNlKTsNCiAgICB9DQogICAgcmV0dXJuIGpzU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwg
bnVsbHB0ciwgYmFzZSwgb2Zmc2V0LCBsZW5ndGgpOw0KfQ0KDQppbmxpbmUgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nT2ZSZXNvbHZlZChWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENv
bnRleHQsIEpTU3RyaW5nKiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkNCnsN
CiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZv
aWQpMCk7DQogICAgaWYgKCFsZW5ndGgpDQogICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mu
ZW1wdHlTdHJpbmcoKTsNCiAgICBpZiAoIW9mZnNldCAmJiBsZW5ndGggPT0gcy0+bGVuZ3RoKCkp
DQogICAgICAgIHJldHVybiBzOw0KICAgIGlmIChsZW5ndGggPT0gMSkgew0KICAgICAgICBhdXRv
JiBiYXNlID0gcy0+dmFsdWVJbnRlcm5hbCgpOw0KICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBi
YXNlLmNoYXJhY3RlckF0KG9mZnNldCk7DQogICAgICAgIGlmIChjaGFyYWN0ZXIgPD0gbWF4U2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKQ0KICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5z
aW5nbGVDaGFyYWN0ZXJTdHJpbmcoY2hhcmFjdGVyKTsNCiAgICB9DQogICAgcmV0dXJuIEpTUm9w
ZVN0cmluZzo6Y3JlYXRlU3Vic3RyaW5nT2ZSZXNvbHZlZCh2bSwgZGVmZXJyYWxDb250ZXh0LCBz
LCBvZmZzZXQsIGxlbmd0aCk7DQp9DQoNCmlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmdPZlJl
c29sdmVkKFZNJiB2bSwgSlNTdHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQ0Kew0KICAgIHJldHVybiBqc1N1YnN0cmluZ09mUmVzb2x2ZWQodm0sIG51bGxwdHIsIHMs
IG9mZnNldCwgbGVuZ3RoKTsNCn0NCg0KaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpDQp7DQogICAgcmV0dXJuIGpzU3Vic3RyaW5nKGdldFZNKGdsb2JhbE9i
amVjdCksIGdsb2JhbE9iamVjdCwgcywgb2Zmc2V0LCBsZW5ndGgpOw0KfQ0KDQppbmxpbmUgSlNT
dHJpbmcqIGpzU3Vic3RyaW5nKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0K
ICAgICgodm9pZCkwKTsNCiAgICBpZiAoIWxlbmd0aCkNCiAgICAgICAgcmV0dXJuIHZtLnNtYWxs
U3RyaW5ncy5lbXB0eVN0cmluZygpOw0KICAgIGlmIChsZW5ndGggPT0gMSkgew0KICAgICAgICBV
Q2hhciBjID0gcy5jaGFyYWN0ZXJBdChvZmZzZXQpOw0KICAgICAgICBpZiAoYyA8PSBtYXhTaW5n
bGVDaGFyYWN0ZXJTdHJpbmcpDQogICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZyhjKTsNCiAgICB9DQogICAgYXV0byBpbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoKnMuaW1wbCgpLCBvZmZzZXQsIGxlbmd0aCk7
DQogICAgaWYgKGltcGwtPmlzU3ViU3RyaW5nKCkpDQogICAgICAgIHJldHVybiBKU1N0cmluZzo6
Y3JlYXRlSGFzT3RoZXJPd25lcih2bSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVy
PihpbXBsKSk7DQogICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0sIHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4oaW1wbCkpOw0KfQ0KDQppbmxpbmUgSlNTdHJpbmcqIGpzT3du
ZWRTdHJpbmcoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMpDQp7DQogICAgaW50IHNpemUgPSBzLmxl
bmd0aCgpOw0KICAgIGlmICghc2l6ZSkNCiAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5l
bXB0eVN0cmluZygpOw0KICAgIGlmIChzaXplID09IDEpIHsNCiAgICAgICAgVUNoYXIgYyA9IHMu
Y2hhcmFjdGVyQXQoMCk7DQogICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmlu
ZykNCiAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGMpOw0KICAgIH0NCiAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIo
dm0sICpzLmltcGwoKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0
aENhY2hlKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzKQ0Kew0KICAgIFN0cmluZ0ltcGwqIHN0cmlu
Z0ltcGwgPSBzLmltcGwoKTsNCiAgICBpZiAoIXN0cmluZ0ltcGwgfHwgIXN0cmluZ0ltcGwtPmxl
bmd0aCgpKQ0KICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyh2bSk7DQoNCiAgICBpZiAoc3Ry
aW5nSW1wbC0+bGVuZ3RoKCkgPT0gMSkgew0KICAgICAgICBVQ2hhciBzaW5nbGVDaGFyYWN0ZXIg
PSAoKnN0cmluZ0ltcGwpWzB1XTsNCiAgICAgICAgaWYgKHNpbmdsZUNoYXJhY3RlciA8PSBtYXhT
aW5nbGVDaGFyYWN0ZXJTdHJpbmcpDQogICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LnNpbmdsZUNoYXJhY3RlclN0cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaW5nbGVD
aGFyYWN0ZXIpKTsNCiAgICB9DQoNCiAgICBpZiAoSlNTdHJpbmcqIGxhc3RDYWNoZWRTdHJpbmcg
PSB2bS5sYXN0Q2FjaGVkU3RyaW5nLmdldCgpKSB7DQogICAgICAgIGlmIChsYXN0Q2FjaGVkU3Ry
aW5nLT50cnlHZXRWYWx1ZUltcGwoKSA9PSBzdHJpbmdJbXBsKQ0KICAgICAgICAgICAgcmV0dXJu
IGxhc3RDYWNoZWRTdHJpbmc7DQogICAgfQ0KDQogICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hl
U2xvd0Nhc2Uodm0sICpzdHJpbmdJbXBsKTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIEpTU3Ry
aW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQ0Kew0KICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dT
Y29wZSgodm0pKTsNCg0KICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoKSB7DQogICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHksIGpzTnVtYmVyKGxlbmd0aCgpKSk7DQogICAgICAgIHJldHVybiB0cnVl
Ow0KICAgIH0NCg0KICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKTsNCiAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IGxlbmd0aCgpKSB7
DQogICAgICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZh
bHVlKCkpOw0KICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBm
YWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5LCB2
YWx1ZSk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIHJldHVybiBmYWxzZTsN
Cn0NCg0KX19mb3JjZWlubGluZSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpDQp7DQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAg
ICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgaWYgKHByb3BlcnR5
TmFtZSA8IGxlbmd0aCgpKSB7DQogICAgICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRJbmRleChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7DQogICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2Vw
dGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpcywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHksIHZhbHVlKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQog
ICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTQ2VsbCogY2Vs
bCkNCnsNCiAgICByZXR1cm4gY2VsbC0+dHlwZSgpID09IFN0cmluZ1R5cGU7DQp9DQoNCmlubGlu
ZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KQ0Kew0KICAgIHJldHVybiB2LmlzQ2VsbCgpICYm
IGlzSlNTdHJpbmcodi5hc0NlbGwoKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgU3RyaW5nVmlldyBK
U1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QNCnsNCiAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQ0KICAgICAgICB2bSgp
LmhlYXAudmVyaWZ5Q2FuR0MoKTsNCiAgICBpZiAoaXNTdWJzdHJpbmcoKSkgew0KICAgICAgICBh
dXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFsKCk7DQogICAgICAgIGlm
IChiYXNlLmlzOEJpdCgpKQ0KICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcoYmFzZS5jaGFy
YWN0ZXJzOCgpICsgc3Vic3RyaW5nT2Zmc2V0KCksIGxlbmd0aCgpKTsNCiAgICAgICAgcmV0dXJu
IFN0cmluZ1ZpZXcoYmFzZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ09mZnNldCgpLCBsZW5n
dGgoKSk7DQogICAgfQ0KICAgIHJldHVybiByZXNvbHZlUm9wZShnbG9iYWxPYmplY3QpOw0KfQ0K
DQpfX2ZvcmNlaW5saW5lIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBKU1JvcGVTdHJp
bmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjb25zdA0Kew0KICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpDQogICAgICAg
IHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOw0KICAgIGlmIChpc1N1YnN0cmluZygpKSB7DQogICAg
ICAgIGF1dG8mIGJhc2UgPSBzdWJzdHJpbmdCYXNlKCktPnZhbHVlSW50ZXJuYWwoKTsNCiAgICAg
ICAgaWYgKGJhc2UuaXM4Qml0KCkpDQogICAgICAgICAgICByZXR1cm4geyB7IGJhc2UuY2hhcmFj
dGVyczgoKSArIHN1YnN0cmluZ09mZnNldCgpLCBsZW5ndGgoKSB9LCBiYXNlIH07DQogICAgICAg
IHJldHVybiB7IHsgYmFzZS5jaGFyYWN0ZXJzMTYoKSArIHN1YnN0cmluZ09mZnNldCgpLCBsZW5n
dGgoKSB9LCBiYXNlIH07DQogICAgfQ0KICAgIGF1dG8mIHN0cmluZyA9IHJlc29sdmVSb3BlKGds
b2JhbE9iamVjdCk7DQogICAgcmV0dXJuIHsgc3RyaW5nLCBzdHJpbmcgfTsNCn0NCg0KX19mb3Jj
ZWlubGluZSBTdHJpbmdWaWV3IEpTU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0DQp7DQogICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNH
QykNCiAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7DQogICAgaWYgKGlzUm9wZSgpKQ0K
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnVu
c2FmZVZpZXcoZ2xvYmFsT2JqZWN0KTsNCiAgICByZXR1cm4gdmFsdWVJbnRlcm5hbCgpOw0KfQ0K
DQpfX2ZvcmNlaW5saW5lIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBKU1N0cmluZzo6
dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0DQp7DQogICAgaWYgKGlzUm9wZSgpKQ0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNSb3BlU3RyaW5nJj4oKnRoaXMpLnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhnbG9iYWxP
YmplY3QpOw0KICAgIHJldHVybiB7IHZhbHVlSW50ZXJuYWwoKSwgdmFsdWVJbnRlcm5hbCgpIH07
DQp9DQoNCmlubGluZSBib29sIEpTU3RyaW5nOjppc1N1YnN0cmluZygpIGNvbnN0DQp7DQogICAg
cmV0dXJuIG1fZmliZXIgJiBKU1JvcGVTdHJpbmc6OmlzU3Vic3RyaW5nSW5Qb2ludGVyOw0KfQ0K
DQoNCg0KaW5saW5lIGJvb2wgSlNWYWx1ZTo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0DQp7DQogICAgaWYgKGlzSW50MzIoKSkNCiAgICAgICAgcmV0dXJuIGFz
SW50MzIoKTsNCiAgICBpZiAoaXNEb3VibGUoKSkNCiAgICAgICAgcmV0dXJuIGFzRG91YmxlKCkg
PiAwLjAgfHwgYXNEb3VibGUoKSA8IDAuMDsgDQogICAgaWYgKGlzQ2VsbCgpKQ0KICAgICAgICBy
ZXR1cm4gYXNDZWxsKCktPnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOw0KDQoNCg0KI2xpbmUgMTA0
OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxKU1N0cmluZy5oIg0KICAgIHJldHVybiBpc1RydWUoKTsgDQp9DQoNCmlubGluZSBKU1N0
cmluZyogSlNWYWx1ZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QNCnsNCiAgICBpZiAoaXNTdHJpbmcoKSkNCiAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGFzQ2Vs
bCgpKTsNCiAgICBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvciA9IHRydWU7DQogICAgcmV0
dXJuIHRvU3RyaW5nU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0LCByZXR1cm5FbXB0eVN0cmluZ09uRXJy
b3IpOw0KfQ0KDQppbmxpbmUgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nT3JOdWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0DQp7DQogICAgaWYgKGlzU3RyaW5nKCkpDQog
ICAgICAgIHJldHVybiBhc1N0cmluZyhhc0NlbGwoKSk7DQogICAgYm9vbCByZXR1cm5FbXB0eVN0
cmluZ09uRXJyb3IgPSBmYWxzZTsNCiAgICByZXR1cm4gdG9TdHJpbmdTbG93Q2FzZShnbG9iYWxP
YmplY3QsIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcik7DQp9DQoNCmlubGluZSBTdHJpbmcgSlNW
YWx1ZTo6dG9XVEZTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QNCnsN
CiAgICBpZiAoaXNTdHJpbmcoKSkNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5n
Kj4oYXNDZWxsKCkpLT52YWx1ZShnbG9iYWxPYmplY3QpOw0KICAgIHJldHVybiB0b1dURlN0cmlu
Z1Nsb3dDYXNlKGdsb2JhbE9iamVjdCk7DQp9DQoNCn0gDQojbGluZSA0OCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5o
Ig0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQpuYW1lc3BhY2UgRE9NSklUIHsNCmNsYXNzIFNpZ25h
dHVyZTsNCn0NCg0KaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQ0K
ew0KICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBK
U0Z1bmN0aW9uVHlwZSkpDQogICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKTsNCiAgICByZXR1
cm4gbnVsbHB0cjsNCn0NCg0KY2xhc3MgRXhjZXB0aW9uOw0KY2xhc3MgR2V0dGVyU2V0dGVyOw0K
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsNCmNsYXNzIEpTRnVuY3Rpb247DQpjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7DQpjbGFzcyBNYXJrZWRCbG9jazsNCmNsYXNzIFByb3BlcnR5RGVzY3Jp
cHRvcjsNCmNsYXNzIFByb3BlcnR5TmFtZUFycmF5Ow0KY2xhc3MgU3RydWN0dXJlOw0KY2xhc3Mg
VGhyb3dTY29wZTsNCnN0cnVjdCBIYXNoVGFibGU7DQpzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7DQoN
Cl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihWTSYsIEV4Y2VwdGlvbiopOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEV4Y2VwdGlvbiogdGhy
b3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJik7
DQpleHRlcm4gX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IEFTQ0lJTGl0ZXJhbCBOb25FeHRl
bnNpYmxlT2JqZWN0UHJvcGVydHlEZWZpbmVFcnJvcjsNCmV4dGVybiBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgY29uc3QgQVNDSUlMaXRlcmFsIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOw0KZXh0
ZXJuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCBBU0NJSUxpdGVyYWwgUmVhZG9ubHlQcm9w
ZXJ0eUNoYW5nZUVycm9yOw0KZXh0ZXJuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCBBU0NJ
SUxpdGVyYWwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yOw0KZXh0ZXJuIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBjb25zdCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5n
ZUFjY2Vzc01lY2hhbmlzbUVycm9yOw0KZXh0ZXJuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25z
dCBBU0NJSUxpdGVyYWwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3VyYWJpbGl0
eUVycm9yOw0KZXh0ZXJuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCBBU0NJSUxpdGVyYWwg
VW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVudW1lcmFiaWxpdHlFcnJvcjsNCmV4dGVybiBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJv
cGVydHlDaGFuZ2VXcml0YWJpbGl0eUVycm9yOw0KDQpzdGF0aWNfYXNzZXJ0KChQcm9wZXJ0eUF0
dHJpYnV0ZTo6Tm9uZSA8IEZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUpLCAiTm9uZV9pc19iZWxvd19G
aXJzdEludGVybmFsQXR0cmlidXRlIik7DQpzdGF0aWNfYXNzZXJ0KChQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgPCBGaXJzdEludGVybmFsQXR0cmlidXRlKSwgIlJlYWRPbmx5X2lzX2JlbG93
X0ZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUiKTsNCnN0YXRpY19hc3NlcnQoKFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSA8IEZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUpLCAiRG9udEVudW1faXNfYmVs
b3dfRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSIpOw0Kc3RhdGljX2Fzc2VydCgoUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgPCBGaXJzdEludGVybmFsQXR0cmlidXRlKSwgIkRvbnREZWxldGVf
aXNfYmVsb3dfRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSIpOw0Kc3RhdGljX2Fzc2VydCgoUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yIDwgRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSksICJBY2Nlc3Nv
cl9pc19iZWxvd19GaXJzdEludGVybmFsQXR0cmlidXRlIik7DQoNCmNsYXNzIEpTRmluYWxPYmpl
Y3Q7DQoNCg0KDQojbGluZSA5OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5oIg0KDQojbGluZSAxMDAgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmpl
Y3QuaCINCg0KY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsNCiAgICBmcmllbmQgY2xh
c3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7DQogICAgZnJpZW5kIGNsYXNzIEpJVDsNCiAg
ICBmcmllbmQgY2xhc3MgSlNDZWxsOw0KICAgIGZyaWVuZCBjbGFzcyBKU0ZpbmFsT2JqZWN0Ow0K
ICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
ZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBIYXNoVGFibGVW
YWx1ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCg0KICAgIGVu
dW0gUHV0TW9kZSB7DQogICAgICAgIFB1dE1vZGVQdXQsDQogICAgICAgIFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eSwNCiAgICB9Ow0KDQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsN
Cg0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUmF3T2JqZWN0KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogPSBudWxscHRyKTsNCg0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwg
Vk0mKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBIZWFwQW5hbHl6ZXImKTsNCg0KICAgIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCos
IFZNJik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBTdHJpbmcgY2FsY3VsYXRl
ZENsYXNzTmFtZShKU09iamVjdCopOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1lKGNvbnN0IEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIEpTVmFsdWUg
Z2V0UHJvdG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgc3RhdGljIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmpl
Y3QqKTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBKU1ZhbHVlIGdl
dFByb3RvdHlwZURpcmVjdChWTSYpIGNvbnN0Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgc2V0UHJvdG90
eXBlRGlyZWN0KFZNJiwgSlNWYWx1ZSBwcm90b3R5cGUpOw0KcHJpdmF0ZToNCiAgICANCiAgICAN
CiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
ayhWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhy
b3dJZkNhbnRTZXQpOw0KcHVibGljOg0KICAgIA0KICAgIA0KICAgIA0KICAgIGJvb2wgc2V0UHJv
dG90eXBlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91
bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3Rh
dGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCk7DQogICAgICAgIA0KICAgIGlu
bGluZSBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhWTSYpOw0KDQogICAgSlNWYWx1
ZSBnZXQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KICAgIEpTVmFsdWUg
Z2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsNCiAgICBK
U1ZhbHVlIGdldChKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3Q7
DQoNCiAgICB0ZW1wbGF0ZTxib29sIGNoZWNrTnVsbFN0cnVjdHVyZSA9IGZhbHNlPg0KICAgIGJv
b2wgZ2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsNCiAgICBib29sIGdldFByb3BlcnR5U2xvdChKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgYm9vbCBnZXRQcm9wZXJ0eVNs
b3QoSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPiB0eXBlbmFt
ZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNs
b3QmKT46OnR5cGUgZ2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbikgY29uc3Q7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24+IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPENhbGxiYWNr
V2hlbk5vRXhjZXB0aW9uKGJvb2wsIFByb3BlcnR5U2xvdCYpPjo6dHlwZSBnZXRQcm9wZXJ0eVNs
b3QoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYsIENhbGxiYWNr
V2hlbk5vRXhjZXB0aW9uKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RJbXBsKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOw0KcHVibGljOg0KICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBib29sIGdldE93blByb3BlcnR5U2xv
dElubGluZShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQog
ICAgIHN0YXRpYyB2b2lkIGRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KDQogICAgDQog
ICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsNCg0KICAgIHN0YXRpYyBib29sIGdldFByaXZhdGVGaWVsZFNsb3QoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgaW5saW5l
IGJvb2wgZ2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsNCiAgICBpbmxpbmUgdm9pZCBwdXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KICAgIGlubGlu
ZSB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7DQoNCiAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0
aCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4
aW5nVHlwZSgpKSkNCiAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICByZXR1cm4gbV9idXR0
ZXJmbHktPnB1YmxpY0xlbmd0aCgpOw0KICAgIH0NCiAgICAgICAgDQogICAgdW5zaWduZWQgZ2V0
VmVjdG9yTGVuZ3RoKCkNCiAgICB7DQogICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMo
aW5kZXhpbmdUeXBlKCkpKQ0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIHJldHVybiBt
X2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBib29s
IHB1dElubGluZUZvckpTT2JqZWN0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsNCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7DQog
ICAgICAgIA0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykNCiAgICB7DQogICAgICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7DQogICAgICAgIGlmIChjYW5TZXRJbmRleFF1aWNrbHkocHJvcGVydHlO
YW1lLCB2YWx1ZSkpIHsNCiAgICAgICAgICAgIHNldEluZGV4UXVpY2tseSh2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAg
ICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXMsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOw0KICAgIH0NCg0KICAgIF9fZm9yY2Vp
bmxpbmUgYm9vbCBwdXRCeUluZGV4SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHVpbnQ2NF90IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykN
CiAgICB7DQogICAgICAgIGlmICgocHJvcGVydHlOYW1lIDw9IDB4RkZGRkZGRkVVKSkNCiAgICAg
ICAgICAgIHJldHVybiBwdXRCeUluZGV4SW5saW5lKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHByb3BlcnR5TmFtZSksIHZhbHVlLCBzaG91bGRUaHJvdyk7DQoNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBzaG91bGRUaHJv
dyk7DQogICAgICAgIHJldHVybiBwdXRJbmxpbmVGb3JKU09iamVjdCh0aGlzLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb20oZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgcHJvcGVydHlOYW1lKSwg
dmFsdWUsIHNsb3QpOw0KICAgIH0NCiAgICAgICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgYm9vbCBwdXREaXJlY3RJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSBtb2RlKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICBhdXRvIGNhblNldEluZGV4UXVpY2tseUZvclB1dERpcmVjdCA9IFsmXSAo
KSAtPiBib29sIHsNCiAgICAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdNb2RlKCkpIHsNCiAgICAg
ICAgICAgIGNhc2UgTm9uQXJyYXk6IGNhc2UgQXJyYXlDbGFzczoNCiAgICAgICAgICAgIGNhc2Ug
QXJyYXlXaXRoVW5kZWNpZGVkOg0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAg
ICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoSW50MzI6IGNhc2UgQXJyYXlXaXRoSW50MzI6DQogICAg
ICAgICAgICBjYXNlIE5vbkFycmF5V2l0aERvdWJsZTogY2FzZSBBcnJheVdpdGhEb3VibGU6DQog
ICAgICAgICAgICBjYXNlIE5vbkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQXJyYXlXaXRoQ29u
dGlndW91czoNCiAgICAgICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNl
IE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9y
YWdlOiBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6DQogICAgICAgICAgICAgICAg
cmV0dXJuIHByb3BlcnR5TmFtZSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsNCiAgICAg
ICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoaW5kZXhp
bmdNb2RlKCkpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAg
ICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VG
b3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI2MSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmplY3QuaCIsICBfX0ZVTkNU
SU9OX18gICwgNjcgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsNCiAgICAgICAgDQogICAgICAgIGlmICgh
YXR0cmlidXRlcyAmJiBjYW5TZXRJbmRleFF1aWNrbHlGb3JQdXREaXJlY3QoKSkgew0KICAgICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5KGdldFZNKGdsb2JhbE9iamVjdCksIHByb3BlcnR5TmFtZSwg
dmFsdWUpOw0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgcmV0
dXJuIHB1dERpcmVjdEluZGV4U2xvd09yQmV5b25kVmVjdG9yTGVuZ3RoKGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSk7DQogICAgfQ0KICAgIA0KICAg
IGJvb2wgcHV0RGlyZWN0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHB1
dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgUHV0RGly
ZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wg
cHV0RGlyZWN0SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJ
bmRleE1vZGUgbW9kZSkNCiAgICB7DQogICAgICAgIGlmICgocHJvcGVydHlOYW1lIDw9IDB4RkZG
RkZGRkVVKSkNCiAgICAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgYXR0cmlidXRlcywg
bW9kZSk7DQogICAgICAgIHJldHVybiBwdXREaXJlY3QoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgSWRl
bnRpZmllcjo6ZnJvbShnZXRWTShnbG9iYWxPYmplY3QpLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwg
YXR0cmlidXRlcyk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgcHV0RGlyZWN0TWF5QmVJbmRleChKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7DQogICAgICAgIA0KICAgIGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIoVk0mIHZtKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHN0
cnVjdHVyZSh2bSktPmhhc0luZGV4aW5nSGVhZGVyKHRoaXMpOw0KICAgIH0NCg0KICAgIGJvb2wg
Y2FuR2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNpZ25lZCkgY29uc3Q7DQogICAgSlNW
YWx1ZSBnZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkKSBjb25zdDsNCiAgICAN
CiAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsNCiAg
ICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgew0KICAgICAgICBjYXNlIE5vbkFycmF5OiBj
YXNlIEFycmF5Q2xhc3M6DQogICAgICAgICAgICByZXR1cm4gY2FuR2V0SW5kZXhRdWlja2x5Rm9y
VHlwZWRBcnJheShpKTsNCiAgICAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6DQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoSW50MzI6IGNhc2Ug
QXJyYXlXaXRoSW50MzI6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhJbnQzMjoNCiAgICAgICAg
Y2FzZSBOb25BcnJheVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IGNh
c2UgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzOg0KICAgICAgICAgICAgcmV0dXJuIGkg
PCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpICYmIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0
KHRoaXMsIGkpOw0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aERvdWJsZTogY2FzZSBBcnJheVdp
dGhEb3VibGU6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGU6IHsNCiAgICAgICAgICAg
IGlmIChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpDQogICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKCkuYXQodGhpcywgaSk7DQogICAgICAgICAgICBpZiAodmFsdWUgIT0gdmFsdWUp
DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgcmV0dXJuIHRydWU7
DQogICAgICAgIH0NCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6IGNhc2Ug
Tm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhBcnJheVN0b3Jh
Z2U6IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToNCiAgICAgICAgICAgIHJldHVy
biBpIDwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgJiYgYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3JbaV07DQogICAgICAgIGRlZmF1bHQ6DQogICAg
ICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5j
ZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMzIzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5oIiwgIF9fRlVO
Q1RJT05fXyAgLCA2OCApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1aW50
NjRfdCBpKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoKGkg
PD0gMHhGRkZGRkZGRVUpKQ0KICAgICAgICAgICAgcmV0dXJuIGNhbkdldEluZGV4UXVpY2tseShz
dGF0aWNfY2FzdDx1aW50MzJfdD4oaSkpOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0K
ICAgICAgICANCiAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJm
bHkoKTsNCiAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgew0KICAgICAgICBjYXNlIE5v
bkFycmF5V2l0aEludDMyOiBjYXNlIEFycmF5V2l0aEludDMyOiBjYXNlIENvcHlPbldyaXRlQXJy
YXlXaXRoSW50MzI6DQogICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoYnV0dGVyZmx5LT5jb250
aWd1b3VzKCkuYXQodGhpcywgaSkuZ2V0KCkuYXNJbnQzMigpKTsNCiAgICAgICAgY2FzZSBOb25B
cnJheVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQ29weU9u
V3JpdGVBcnJheVdpdGhDb250aWd1b3VzOg0KICAgICAgICAgICAgcmV0dXJuIGJ1dHRlcmZseS0+
Y29udGlndW91cygpLmF0KHRoaXMsIGkpLmdldCgpOw0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0
aERvdWJsZTogY2FzZSBBcnJheVdpdGhEb3VibGU6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhE
b3VibGU6DQogICAgICAgICAgICByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJs
ZSwgYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkpOw0KICAgICAgICBj
YXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOg0KICAgICAgICAgICAgcmV0dXJuIGJ1dHRlcmZseS0+YXJyYXlTdG9y
YWdlKCktPm1fdmVjdG9yW2ldLmdldCgpOw0KICAgICAgICBjYXNlIE5vbkFycmF5OiBjYXNlIEFy
cmF5Q2xhc3M6DQogICAgICAgICAgICByZXR1cm4gZ2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJh
eShpKTsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFs
T3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5m
bygzNTEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXEpTT2JqZWN0LmgiLCAgX19GVU5DVElPTl9fICAsIDY5ICk7IH0gd2hpbGUgKGZh
bHNlKTsNCiAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7DQogICAgICAgIH0NCiAgICB9DQog
ICAgICAgIA0KICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0
DQogICAgew0KICAgICAgICBjb25zdCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXMtPmJ1dHRl
cmZseSgpOw0KICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7DQogICAgICAgIGNhc2Ug
Tm9uQXJyYXk6IGNhc2UgQXJyYXlDbGFzczoNCiAgICAgICAgICAgIGlmIChjYW5HZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KGkpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmRleFF1
aWNrbHlGb3JUeXBlZEFycmF5KGkpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2Ug
QXJyYXlXaXRoVW5kZWNpZGVkOg0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgTm9u
QXJyYXlXaXRoSW50MzI6IGNhc2UgQXJyYXlXaXRoSW50MzI6IGNhc2UgQ29weU9uV3JpdGVBcnJh
eVdpdGhJbnQzMjoNCiAgICAgICAgICAgIGlmIChpIDwgYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KSkgew0KICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gYnV0dGVyZmx5LT5jb250aWd1
b3VzKCkuYXQodGhpcywgaSkuZ2V0KCk7DQogICAgICAgICAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0
aENvbnRpZ3VvdXM6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzOg0KICAgICAg
ICAgICAgaWYgKGkgPCBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKQ0KICAgICAgICAgICAgICAg
IHJldHVybiBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5nZXQoKTsNCiAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aERvdWJsZTogY2FzZSBBcnJh
eVdpdGhEb3VibGU6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGU6IHsNCiAgICAgICAg
ICAgIGlmIChpID49IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpDQogICAgICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gYnV0dGVyZmx5LT5jb250aWd1b3Vz
RG91YmxlKCkuYXQodGhpcywgaSk7DQogICAgICAgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdCkN
CiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFs
dWU6OkVuY29kZUFzRG91YmxlLCByZXN1bHQpOw0KICAgICAgICB9DQogICAgICAgIGNhc2UgTm9u
QXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6IGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6DQogICAgICAgICAgICBpZiAoaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCkt
PnZlY3Rvckxlbmd0aCgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBidXR0ZXJmbHktPmFycmF5
U3RvcmFnZSgpLT5tX3ZlY3RvcltpXS5nZXQoKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAg
ICBkZWZhdWx0Og0KICAgICAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBl
KCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDM5MCwgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNP
YmplY3QuaCIsICBfX0ZVTkNUSU9OX18gICwgNzAgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAg
ICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsNCiAgICB9
DQoNCiAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1aW50NjRfdCBpKSBjb25zdA0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoKGkgPD0gMHhGRkZGRkZGRVUpKQ0K
ICAgICAgICAgICAgcmV0dXJuIHRyeUdldEluZGV4UXVpY2tseShzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaSkpOw0KICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOw0KICAgIH0NCiAgICAgICAgDQogICAg
SlNWYWx1ZSBnZXREaXJlY3RJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpKQ0KICAgIHsNCiAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gdHJ5R2V0SW5kZXhR
dWlja2x5KGkpKQ0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7DQog
ICAgICAgIGlmIChtZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmplY3QpKS0+Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIGksIHNsb3QpKQ0KICAgICAgICAgICAg
cmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBpKTsNCiAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsNCiAgICB9DQogICAgICAgIA0KICAgIEpTVmFsdWUgZ2V0SW5kZXgoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaSkgY29uc3QNCiAgICB7DQogICAgICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IHRyeUdldEluZGV4UXVpY2tseShpKSkNCiAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7DQogICAgICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBpKTsNCiAgICB9
DQoNCiAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQsIEpT
VmFsdWUpIGNvbnN0Ow0KICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5Rm9yVHlwZWRBcnJheSh1bnNp
Z25lZCwgSlNWYWx1ZSk7DQogICAgICAgIA0KICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpDQogICAgew0KICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IHRoaXMtPmJ1dHRlcmZseSgpOw0KICAgICAgICBzd2l0Y2ggKGluZGV4aW5nTW9kZSgp
KSB7DQogICAgICAgIGNhc2UgTm9uQXJyYXk6IGNhc2UgQXJyYXlDbGFzczoNCiAgICAgICAgICAg
IHJldHVybiBjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KGksIHZhbHVlKTsNCiAgICAg
ICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoSW50MzI6IGNhc2UgQXJyYXlXaXRoSW50MzI6DQogICAg
ICAgIGNhc2UgTm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0aERvdWJsZToNCiAgICAg
ICAgY2FzZSBOb25BcnJheVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6
DQogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOg0KICAgICAgICBjYXNlIEFy
cmF5V2l0aEFycmF5U3RvcmFnZToNCiAgICAgICAgICAgIHJldHVybiBpIDwgYnV0dGVyZmx5LT52
ZWN0b3JMZW5ndGgoKTsNCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9y
YWdlOg0KICAgICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6DQogICAgICAg
ICAgICByZXR1cm4gaSA8IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgp
DQogICAgICAgICAgICAgICAgJiYgISFidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3Rv
cltpXTsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGlmIChpc0NvcHlPbldyaXRlKGlu
ZGV4aW5nTW9kZSgpKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAg
ICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNy
YXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDQ1LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5oIiwgIF9fRlVOQ1RJT05f
XyAgLCA3MSApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgICAgIH0NCiAgICB9DQogICAgICAgIA0KICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2
bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQ0KICAgIHsNCiAgICAgICAgQnV0dGVyZmx5KiBidXR0
ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7DQogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoSW50MzI6
IGNhc2UgQXJyYXlXaXRoSW50MzI6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhJbnQzMjogew0K
ICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgew0K
ICAgICAgICAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlT3JDb250aWd1b3VzV2hpbGVQZXJm
b3JtaW5nU2V0SW5kZXgodm0sIGksIHYpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIFtbZmFsbHRocm91Z2hdXTsNCiAgICAgICAgfQ0KICAgICAg
ICBjYXNlIE5vbkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQXJyYXlXaXRoQ29udGlndW91czog
Y2FzZSBDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXM6IHsNCiAgICAgICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0KHRoaXMsIGkpLnNl
dFdpdGhvdXRXcml0ZUJhcnJpZXIodik7DQogICAgICAgICAgICBpZiAoaSA+PSBidXR0ZXJmbHkt
PnB1YmxpY0xlbmd0aCgpKQ0KICAgICAgICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVu
Z3RoKGkgKyAxKTsNCiAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHYpOw0K
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhE
b3VibGU6IGNhc2UgQXJyYXlXaXRoRG91YmxlOiBjYXNlIENvcHlPbldyaXRlQXJyYXlXaXRoRG91
YmxlOiB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICBpZiAoIXYuaXNOdW1i
ZXIoKSkgew0KICAgICAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXNXaGlsZVBl
cmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOw0KICAg
ICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7DQogICAgICAgICAgICAgICAgY29udmVydERv
dWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldEluZGV4KHZtLCBpLCB2KTsNCiAgICAg
ICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICBidXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZhbHVlOw0KICAgICAgICAgICAgaWYg
KGkgPj0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkNCiAgICAgICAgICAgICAgICBidXR0ZXJm
bHktPnNldFB1YmxpY0xlbmd0aChpICsgMSk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAg
fQ0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBOb25BcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBB
cnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiB7DQogICAgICAgICAgICBBcnJheVN0b3JhZ2Uq
IHN0b3JhZ2UgPSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOw0KICAgICAgICAgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+JiB4ID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07DQogICAgICAgICAgICBK
U1ZhbHVlIG9sZCA9IHguZ2V0KCk7DQogICAgICAgICAgICB4LnNldCh2bSwgdGhpcywgdik7DQog
ICAgICAgICAgICBpZiAoIW9sZCkgew0KICAgICAgICAgICAgICAgICsrc3RvcmFnZS0+bV9udW1W
YWx1ZXNJblZlY3RvcjsNCiAgICAgICAgICAgICAgICBpZiAoaSA+PSBzdG9yYWdlLT5sZW5ndGgo
KSkNCiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGkgKyAxKTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgIGNhc2UgTm9u
QXJyYXk6IGNhc2UgQXJyYXlDbGFzczoNCiAgICAgICAgICAgIHNldEluZGV4UXVpY2tseUZvclR5
cGVkQXJyYXkoaSwgdik7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAg
ICAgICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZl
bmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg1MDMsICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0LmgiLCAgX19G
VU5DVElPTl9fICAsIDcyICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgfQ0KICAgIH0NCg0K
ICAgIHZvaWQgaW5pdGlhbGl6ZUluZGV4KE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUmIHNjb3Bl
LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpDQogICAgew0KICAgICAgICBpbml0aWFsaXplSW5kZXgo
c2NvcGUsIGksIHYsIGluZGV4aW5nVHlwZSgpKTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICBf
X2ZvcmNlaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUluZGV4KE9iamVjdEluaXRpYWxpemF0aW9uU2Nv
cGUmIHNjb3BlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5
cGUpDQogICAgew0KICAgICAgICBWTSYgdm0gPSBzY29wZS52bSgpOw0KICAgICAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOw0KICAgICAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSkgew0KICAgICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDogew0KICAgICAgICAg
ICAgc2V0SW5kZXhRdWlja2x5VG9VbmRlY2lkZWQodm0sIGksIHYpOw0KICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgIH0NCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhJbnQzMjogY2FzZSBBcnJh
eVdpdGhJbnQzMjogY2FzZSBDb3B5T25Xcml0ZUFycmF5V2l0aEludDMyOiB7DQogICAgICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICBpZiAoIXYu
aXNJbnQzMigpKSB7DQogICAgICAgICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRp
Z3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7DQogICAgICAgICAgICAgICAg
YnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBbW2ZhbGx0aHJvdWdoXV07DQogICAg
ICAgIH0NCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0
aENvbnRpZ3VvdXM6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzOiB7DQogICAg
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICBi
dXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5zZXQodm0sIHRoaXMsIHYpOw0KICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhEb3Vi
bGU6IGNhc2UgQXJyYXlXaXRoRG91YmxlOiBjYXNlIENvcHlPbldyaXRlQXJyYXlXaXRoRG91Ymxl
OiB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgICAgICBpZiAoIXYuaXNOdW1iZXIoKSkgew0KICAgICAgICAgICAgICAgIGNvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXNXaGlsZVBlcmZvcm1pbmdTZXRJbmRleCh2bSwgaSwgdik7DQogICAgICAg
ICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZG91YmxlIHZhbHVl
ID0gdi5hc051bWJlcigpOw0KICAgICAgICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSB7DQogICAg
ICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91c1doaWxlUGVyZm9ybWluZ1NldElu
ZGV4KHZtLCBpLCB2KTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IHZh
bHVlOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAgY2FzZSBOb25BcnJh
eVdpdGhBcnJheVN0b3JhZ2U6IGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTog
Y2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZTogew0KICAgICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gYnV0dGVyZmx5LT5h
cnJheVN0b3JhZ2UoKTsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldCh2bSwgdGhpcywgdik7
DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBkZWZhdWx0Og0KICAgICAg
ICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VG
b3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDU2MSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmplY3QuaCIsICBfX0ZVTkNU
SU9OX18gICwgNzMgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICB9DQogICAgfQ0KICAgICAg
ICANCiAgICB2b2lkIGluaXRpYWxpemVJbmRleFdpdGhvdXRCYXJyaWVyKE9iamVjdEluaXRpYWxp
emF0aW9uU2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpDQogICAgew0KICAgICAg
ICBpbml0aWFsaXplSW5kZXhXaXRob3V0QmFycmllcihzY29wZSwgaSwgdiwgaW5kZXhpbmdUeXBl
KCkpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBpbml0aWFs
aXplSW5kZXhXaXRob3V0QmFycmllcihPYmplY3RJbml0aWFsaXphdGlvblNjb3BlJiwgdW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQ0KICAgIHsNCiAgICAg
ICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsNCiAgICAgICAgc3dp
dGNoIChpbmRleGluZ1R5cGUpIHsNCiAgICAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6IHsN
CiAgICAgICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxl
ckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg1NzcsICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0LmgiLCAg
X19GVU5DVElPTl9fICAsIDc0ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICB9DQogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoSW50MzI6IGNhc2UgQXJyYXlX
aXRoSW50MzI6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhJbnQzMjogew0KICAgICAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgZG8geyBpZiAo
KCEodi5pc0ludDMyKCkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNv
bXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDU4MywgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmplY3Qu
aCIsICBfX0ZVTkNUSU9OX18gICwgNzUgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsN
CiAgICAgICAgICAgIFtbZmFsbHRocm91Z2hdXTsNCiAgICAgICAgfQ0KICAgICAgICBjYXNlIE5v
bkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQXJyYXlXaXRoQ29udGlndW91czogY2FzZSBDb3B5
T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXM6IHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygp
LmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7DQogICAgICAgICAgICBicmVh
azsNCiAgICAgICAgfQ0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aERvdWJsZTogY2FzZSBBcnJh
eVdpdGhEb3VibGU6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGU6IHsNCiAgICAgICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIGRvIHsg
aWYgKCghKHYuaXNOdW1iZXIoKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUo
KTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNTk1LCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09i
amVjdC5oIiwgIF9fRlVOQ1RJT05fXyAgLCA3NiApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOw0KICAgICAgICAgICAgZG91YmxlIHZhbHVlID0gdi5hc051bWJlcigpOw0KICAgICAgICAg
ICAgZG8geyBpZiAoKCEodmFsdWUgPT0gdmFsdWUpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDU5
NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcSlNPYmplY3QuaCIsICBfX0ZVTkNUSU9OX18gICwgNzcgKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsNCiAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
LmF0KHRoaXMsIGkpID0gdmFsdWU7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAg
ICAgICBjYXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBOb25BcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlOiB7DQogICAgICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3Jh
Z2UgPSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0u
c2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9
DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9p
bnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNjA5
LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxKU09iamVjdC5oIiwgIF9fRlVOQ1RJT05fXyAgLCA3OCApOyB9IHdoaWxlIChmYWxzZSk7
DQogICAgICAgIH0NCiAgICB9DQogICAgICAgIA0KICAgIGJvb2wgaGFzU3BhcnNlTWFwKCkNCiAg
ICB7DQogICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsNCiAgICAgICAgY2FzZSBOb25B
cnJheTogY2FzZSBBcnJheUNsYXNzOg0KICAgICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoN
CiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhJbnQzMjogY2FzZSBBcnJheVdpdGhJbnQzMjogY2Fz
ZSBDb3B5T25Xcml0ZUFycmF5V2l0aEludDMyOg0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aERv
dWJsZTogY2FzZSBBcnJheVdpdGhEb3VibGU6IGNhc2UgQ29weU9uV3JpdGVBcnJheVdpdGhEb3Vi
bGU6DQogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoQ29udGlndW91czogY2FzZSBBcnJheVdpdGhD
b250aWd1b3VzOiBjYXNlIENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91czoNCiAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6
IGNhc2UgTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhBcnJh
eVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToNCiAgICAgICAgICAg
IHJldHVybiAhIW1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXA7DQogICAg
ICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5
cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNjI1LCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxK
U09iamVjdC5oIiwgIF9fRlVOQ1RJT05fXyAgLCA3OSApOyB9IHdoaWxlIChmYWxzZSk7DQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQogICAgICAgIA0KICAgIGJv
b2wgaW5TcGFyc2VJbmRleGluZ01vZGUoKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgew0KICAgICAgICBjYXNlIE5vbkFycmF5OiBjYXNlIEFycmF5Q2xhc3M6DQogICAg
ICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOg0KICAgICAgICBjYXNlIE5vbkFycmF5V2l0aElu
dDMyOiBjYXNlIEFycmF5V2l0aEludDMyOiBjYXNlIENvcHlPbldyaXRlQXJyYXlXaXRoSW50MzI6
DQogICAgICAgIGNhc2UgTm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0aERvdWJsZTog
Y2FzZSBDb3B5T25Xcml0ZUFycmF5V2l0aERvdWJsZToNCiAgICAgICAgY2FzZSBOb25BcnJheVdp
dGhDb250aWd1b3VzOiBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2UgQ29weU9uV3JpdGVB
cnJheVdpdGhDb250aWd1b3VzOg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBj
YXNlIE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBOb25BcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTogY2FzZSBBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOg0KICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0
b3JhZ2UoKS0+aW5TcGFyc2VNb2RlKCk7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBk
byB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNo
KCk7IFdURkNyYXNoV2l0aEluZm8oNjQyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5oIiwgIF9fRlVOQ1RJT05fXyAg
LCA4MCApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
ICAgIH0NCiAgICB9DQogICAgICAgIA0KICAgIHZvaWQgZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdN
b2RlKFZNJik7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBib29sIHB1dERp
cmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDAp
Ow0KICAgIGJvb2wgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKTsNCiAgICB2b2lkIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7DQogICAgYm9vbCBw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiwgUHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIq
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsNCiAgICB2b2lkIHB1dERpcmVjdE5vbkluZGV4QWNjZXNz
b3JXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiwgdW5z
aWduZWQgYXR0cmlidXRlcyk7DQogICAgYm9vbCBwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Io
Vk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOw0KDQogICAg
Ym9vbCBwdXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAgIGJvb2wgcHV0U2V0dGVyKEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsNCg0KICAgIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBib29sIGhhc1Byb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBoYXNQcm9wZXJ0
eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7DQogICAgYm9v
bCBoYXNQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29u
c3Q7DQogICAgYm9vbCBoYXNQcm9wZXJ0eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlKSBjb25zdDsNCiAgICBib29s
IGhhc1Byb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGUpIGNvbnN0Ow0KICAgIGJvb2wgaGFz
T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
IGNvbnN0Ow0KICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUpIGNvbnN0Ow0KICAgIGJvb2wgaGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCkgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERl
bGV0ZVByb3BlcnR5U2xvdCYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUpOw0KICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUpOw0KICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
LCB1aW50MzJfdCBwcm9wZXJ0eU5hbWUpOw0KICAgIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNHbG9i
YWxPYmplY3QqLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpOw0KDQogICAgX19kZWNsc3BlYyhkbGxl
eHBvcnQpIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7DQogICAgSlNWYWx1ZSBvcmRpbmFy
eVRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29u
c3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBoYXNJbnN0YW5jZShKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSk7DQogICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgaGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsNCiAgICBzdGF0aWMgYm9vbCBkZWZhdWx0SGFzSW5zdGFuY2UoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsNCg0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBn
ZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3Rh
dGljIHVpbnQzMl90IGdldEVudW1lcmFibGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCopOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBnZXRTdHJ1Y3R1cmVQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2
b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQoNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgSlNWYWx1ZSB0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNvbnN0Ow0KICAgIGJvb2wgZ2V0UHJpbWl0aXZl
TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKSBjb25zdDsN
CiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTU3RyaW5nKiB0b1N0cmluZyhK
U0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRp
YyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsNCg0K
ICAgIA0KICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3QNCiAgICB7DQogICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKHZtKTsNCiAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQodm0sIHByb3BlcnR5TmFtZSk7DQogICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3Ry
dWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsNCiAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZh
bGlkT2Zmc2V0ID8gZ2V0RGlyZWN0KG9mZnNldCkgOiBKU1ZhbHVlKCk7DQogICAgfQ0KICAgIA0K
ICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0DQogICAgew0KICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7DQogICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOw0KICAg
ICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7DQog
ICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQp
IDogSlNWYWx1ZSgpOw0KICAgIH0NCg0KICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNl
dChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpDQogICAgew0KICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7DQogICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOw0KICAgICAg
ICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7DQogICAg
ICAgIHJldHVybiBvZmZzZXQ7DQogICAgfQ0KDQogICAgUHJvcGVydHlPZmZzZXQgZ2V0RGlyZWN0
T2Zmc2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMpDQogICAgew0KICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVj
dHVyZSh2bSk7DQogICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOw0KICAgICAgICBjaGVja09mZnNldChvZmZz
ZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7DQogICAgICAgIHJldHVybiBvZmZzZXQ7
DQogICAgfQ0KDQogICAgYm9vbCBoYXNJbmxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3Ry
dWN0dXJlKCktPmhhc0lubGluZVN0b3JhZ2UoKTsgfQ0KICAgIENvbnN0UHJvcGVydHlTdG9yYWdl
IGlubGluZVN0b3JhZ2VVbnNhZmUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxDb25zdFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEpOw0KICAgIH0NCiAgICBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZVVuc2FmZSgpDQogICAgew0KICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFByb3BlcnR5U3RvcmFnZT4odGhpcyArIDEpOw0KICAgIH0NCiAgICBDb25z
dFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKCkgY29uc3QNCiAgICB7DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGlubGluZVN0b3JhZ2VVbnNhZmUoKTsNCiAgICB9DQog
ICAgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UoKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICByZXR1cm4gaW5saW5lU3RvcmFnZVVuc2FmZSgpOw0KICAgIH0NCiAgICAg
ICAgDQogICAgY29uc3QgQnV0dGVyZmx5KiBidXR0ZXJmbHkoKSBjb25zdCB7IHJldHVybiBtX2J1
dHRlcmZseS5nZXQoKTsgfQ0KICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgeyByZXR1cm4gbV9i
dXR0ZXJmbHkuZ2V0KCk7IH0NCiAgICANCiAgICBDb25zdFByb3BlcnR5U3RvcmFnZSBvdXRPZkxp
bmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgp
OyB9DQogICAgUHJvcGVydHlTdG9yYWdlIG91dE9mTGluZVN0b3JhZ2UoKSB7IHJldHVybiBtX2J1
dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCk7IH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgY29uc3Qg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZzZXQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG9mZnNl
dCkpDQogICAgICAgICAgICByZXR1cm4gJmlubGluZVN0b3JhZ2UoKVtvZmZzZXRJbklubGluZVN0
b3JhZ2Uob2Zmc2V0KV07DQogICAgICAgIHJldHVybiAmb3V0T2ZMaW5lU3RvcmFnZSgpW29mZnNl
dEluT3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpXTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5l
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkNCiAgICB7DQogICAgICAgIGlmIChpc0lubGluZU9mZnNldChvZmZzZXQpKQ0K
ICAgICAgICAgICAgcmV0dXJuICZpbmxpbmVTdG9yYWdlKClbb2Zmc2V0SW5JbmxpbmVTdG9yYWdl
KG9mZnNldCldOw0KICAgICAgICByZXR1cm4gJm91dE9mTGluZVN0b3JhZ2UoKVtvZmZzZXRJbk91
dE9mTGluZVN0b3JhZ2Uob2Zmc2V0KV07DQogICAgfQ0KDQogICAgdm9pZCB0cmFuc2l0aW9uVG8o
Vk0mLCBTdHJ1Y3R1cmUqKTsNCg0KICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcyhWTSYgdm0p
IHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmRpZFRyYW5zaXRpb24oKTsgfQ0KICAgIGJvb2wgaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyhWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgfQ0KICAgIGJvb2wgaGFzQ3VzdG9tR2V0dGVyU2V0
dGVyUHJvcGVydGllcyhWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmhhc0N1c3RvbUdl
dHRlclNldHRlclByb3BlcnRpZXMoKTsgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgYm9vbCBwdXRPd25EYXRhUHJvcGVydHkoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOw0KICAgIGJvb2wgcHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRl
eChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7DQpwcml2YXRlOg0KICAgIHZvaWQgdmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUpOw0KcHVibGljOg0KDQogICAgDQogICAgX19mb3JjZWlubGlu
ZSBKU1ZhbHVlIGdldERpcmVjdChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJu
IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOyB9DQogICAgSlNWYWx1ZSBnZXREaXJl
Y3RDb25jdXJyZW50bHkoU3RydWN0dXJlKiBleHBlY3RlZFN0cnVjdHVyZSwgUHJvcGVydHlPZmZz
ZXQpIGNvbnN0Ow0KICAgIHZvaWQgcHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0LCBKU1ZhbHVlIHZhbHVlKSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldCh2bSwg
dGhpcywgdmFsdWUpOyB9DQogICAgdm9pZCBwdXREaXJlY3RXaXRob3V0QmFycmllcihQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KS0+c2V0V2l0aG91dFdyaXRlQmFycmllcih2YWx1ZSk7IH0NCiAgICB2b2lkIHB1dERpcmVjdFVu
ZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0
KS0+c2V0VW5kZWZpbmVkKCk7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIHB1
dERpcmVjdE5hdGl2ZUludHJpbnNpY0dldHRlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSWRlbnRp
ZmllciwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7DQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcHV0RGlyZWN0TmF0aXZlSW50cmluc2ljR2V0
dGVyV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIElkZW50aWZpZXIsIE5h
dGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAgIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBib29sIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwg
TmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7DQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3Ro
LCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsNCg0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAgIEpTRnVuY3Rpb24qIHB1dERpcmVjdEJ1aWx0aW5GdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0
eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsNCg0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsNCg0KICAgIGJvb2wgaXNFbnZpcm9ubWVudCgpIGNv
bnN0Ow0KICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsNCiAgICBib29sIGlzSlNMZXhp
Y2FsRW52aXJvbm1lbnQoKSBjb25zdDsNCiAgICBib29sIGlzR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KCkgY29uc3Q7DQogICAgYm9vbCBpc1N0cmljdEV2YWxBY3RpdmF0aW9uKCkgY29uc3Q7DQog
ICAgYm9vbCBpc1dpdGhTY29wZSgpIGNvbnN0Ow0KDQogICAgYm9vbCBpc0Vycm9ySW5zdGFuY2Uo
KSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHNlYWwoVk0mKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBmcmVlemUoVk0mKTsNCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCopOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgYm9vbCBpc0V4
dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOw0KICAgIGJvb2wgaXNTZWFsZWQo
Vk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5pc1NlYWxlZCh2bSk7IH0NCiAgICBib29s
IGlzRnJvemVuKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNGcm96ZW4odm0pOyB9
DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBhbnlPYmplY3RJbkNoYWluTWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKFZNJikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIGJvb2wgcHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKFZNJiwgUHJvcGVydHlO
YW1lKTsNCiAgICBib29sIG5lZWRzU2xvd1B1dEluZGV4aW5nKFZNJikgY29uc3Q7DQoNCnByaXZh
dGU6DQogICAgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5z
aXRpb24oVk0mKSBjb25zdDsNCnB1YmxpYzoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKFZNJiB2bSkgeyBy
ZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCk7IH0NCiAgICANCiAg
ICANCiAgICANCiAgICBib29sIGlzRXh0ZW5zaWJsZShKU0dsb2JhbE9iamVjdCopOw0KICAgIGJv
b2wgaW5kZXhpbmdTaG91bGRCZVNwYXJzZShWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4g
IWlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkNCiAgICAgICAgICAgIHx8IHN0cnVjdHVyZSh2bSkt
PnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybygpOw0KICAgIH0NCg0KICAgIGJvb2wgc3RhdGljUHJvcGVydGllc1JlaWZp
ZWQoVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmll
ZCgpOyB9DQogICAgdm9pZCByZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNHbG9iYWxPYmplY3Qq
KTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBCdXR0ZXJmbHkqIGFsbG9jYXRlTW9yZU91
dE9mTGluZVN0b3JhZ2UoVk0mLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOw0KDQog
ICAgDQogICAgdm9pZCBzZXRCdXR0ZXJmbHkoVk0mLCBCdXR0ZXJmbHkqKTsNCiAgICANCiAgICAN
CiAgICANCiAgICB2b2lkIG51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkoVk0mLCBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCwgQnV0dGVyZmx5Kik7DQoNCiAgICB2b2lkIHNldFN0cnVjdHVy
ZShWTSYsIFN0cnVjdHVyZSopOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgY29u
dmVydFRvRGljdGlvbmFyeShWTSYpOw0KDQogICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVj
dChWTSYgdm0pDQogICAgew0KICAgICAgICBzdHJ1Y3R1cmUodm0pLT5mbGF0dGVuRGljdGlvbmFy
eVN0cnVjdHVyZSh2bSwgdGhpcyk7DQogICAgfQ0KICAgIHZvaWQgc2hpZnRCdXR0ZXJmbHlBZnRl
ckZsYXR0ZW5pbmcoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG91dE9mTGluZUNhcGFjaXR5QWZ0ZXIpOw0KDQogICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT5nbG9i
YWxPYmplY3QoKTsNCiAgICB9DQogICAgICAgIA0KICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QoVk0mIHZtKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5nbG9iYWxPYmplY3QoKTsN
CiAgICB9DQogICAgICAgIA0KICAgIHZvaWQgc3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKFZN
Jik7DQogICAgICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIGJvb2wgYXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCk7DQogICAgICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyB0cnlNYWtlV3Jp
dGFibGVJbnQzMihWTSYgdm0pDQogICAgew0KICAgICAgICBpZiAoKGhhc0ludDMyKGluZGV4aW5n
VHlwZSgpKSAmJiAhaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUoKSkpKQ0KICAgICAgICAgICAg
cmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKTsNCiAgICAgICAgICAgIA0KICAg
ICAgICByZXR1cm4gdHJ5TWFrZVdyaXRhYmxlSW50MzJTbG93KHZtKTsNCiAgICB9DQogICAgICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIENvbnRpZ3VvdXNEb3VibGVzIHRyeU1ha2VX
cml0YWJsZURvdWJsZShWTSYgdm0pDQogICAgew0KICAgICAgICBpZiAoKGhhc0RvdWJsZShpbmRl
eGluZ1R5cGUoKSkgJiYgIWlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKSkNCiAgICAgICAg
ICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpOw0KICAgICAgICAgICAg
DQogICAgICAgIHJldHVybiB0cnlNYWtlV3JpdGFibGVEb3VibGVTbG93KHZtKTsNCiAgICB9DQog
ICAgICAgIA0KICAgIA0KICAgIA0KICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyB0cnlNYWtlV3JpdGFi
bGVDb250aWd1b3VzKFZNJiB2bSkNCiAgICB7DQogICAgICAgIGlmICgoaGFzQ29udGlndW91cyhp
bmRleGluZ1R5cGUoKSkgJiYgIWlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKSkNCiAgICAg
ICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOw0KICAgICAgICAgICAgDQog
ICAgICAgIHJldHVybiB0cnlNYWtlV3JpdGFibGVDb250aWd1b3VzU2xvdyh2bSk7DQogICAgfQ0K
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgQXJyYXlTdG9yYWdlKiBlbnN1cmVBcnJheVN0
b3JhZ2UoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgaWYgKChoYXNBbnlBcnJheVN0b3JhZ2UoaW5k
ZXhpbmdUeXBlKCkpKSkNCiAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJyYXlTdG9y
YWdlKCk7DQoNCiAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3RvcmFnZVNsb3codm0pOw0KICAg
IH0NCg0KICAgIHZvaWQgZW5zdXJlV3JpdGFibGUoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgaWYg
KGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKQ0KICAgICAgICAgICAgY29udmVydEZyb21D
b3B5T25Xcml0ZSh2bSk7DQogICAgfQ0KICAgICAgICANCiAgICBzdGF0aWMgc2l6ZV90IG9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpOw0KICAgICAgICANCiAgICBzdGF0aWMgcHRyZGlmZl90IGJ1dHRl
cmZseU9mZnNldCgpDQogICAgew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNPYmplY3QqPigweDQwMDApLT5tX2J1dHRlcmZs
eSkpIC0gMHg0MDAwKTsNCiAgICB9DQogICAgdm9pZCogYnV0dGVyZmx5QWRkcmVzcygpDQogICAg
ew0KICAgICAgICByZXR1cm4gJm1fYnV0dGVyZmx5Ow0KICAgIH0NCg0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBKU1ZhbHVlIGdldE1ldGhvZChKU0dsb2JhbE9iamVjdCosIENhbGxEYXRhJiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsNCg0KICAgIGJv
b2wgY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoVk0mLCBQcm9wZXJ0eU5hbWUpOw0KICAgIGJvb2wg
Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYpOw0KDQogICAgYm9vbCBt
YXlCZVByb3RvdHlwZSgpIGNvbnN0Ow0KICAgIHZvaWQgZGlkQmVjb21lUHJvdG90eXBlKCk7DQoN
CiAgICBPcHRpb25hbDxTdHJ1Y3R1cmU6OlByb3BlcnR5SGFzaEVudHJ5PiBmaW5kUHJvcGVydHlI
YXNoRW50cnkoVk0mLCBQcm9wZXJ0eU5hbWUpIGNvbnN0Ow0KDQogICAgcHJvdGVjdGVkOiBzdGF0
aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBw
dWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsg
cmV0dXJuICZzX2luZm87IH07DQoNCnByb3RlY3RlZDoNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiB2bSkNCiAgICB7DQogICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIEpTT2JqZWN0KFZNJiwgU3RydWN0
dXJlKiwgQnV0dGVyZmx5KiA9IG51bGxwdHIpOw0KICAgIA0KICAgIA0KICAgIFN0cnVjdHVyZSog
dmlzaXRCdXR0ZXJmbHkoU2xvdFZpc2l0b3ImKTsNCiAgICANCiAgICBTdHJ1Y3R1cmUqIHZpc2l0
QnV0dGVyZmx5SW1wbChTbG90VmlzaXRvciYpOw0KICAgIA0KICAgIHZvaWQgbWFya0F1eGlsaWFy
eUFuZFZpc2l0T3V0T2ZMaW5lUHJvcGVydGllcyhTbG90VmlzaXRvciYsIEJ1dHRlcmZseSosIFN0
cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IG1heE9mZnNldCk7DQoNCiAgICANCiAgICANCiAgICBB
cnJheVN0b3JhZ2UqIGFycmF5U3RvcmFnZSgpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQog
ICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7DQogICAgfQ0KICAgICAg
ICANCiAgICANCiAgICANCiAgICBBcnJheVN0b3JhZ2UqIGFycmF5U3RvcmFnZU9yTnVsbCgpDQog
ICAgew0KICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7DQogICAgICAgIGNhc2UgTm9u
QXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3Jh
Z2U6IGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6DQogICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
Ow0KICAgICAgICAgICAgICAgIA0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7DQogICAgICAgIH0NCiAgICB9DQogICAgICAgIA0KICAgIHNpemVfdCBidXR0ZXJm
bHlUb3RhbFNpemUoKTsNCiAgICBzaXplX3QgYnV0dGVyZmx5UHJlQ2FwYWNpdHkoKTsNCg0KICAg
IEJ1dHRlcmZseSogY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChWTSYsIHVuc2lnbmVkIGxlbmd0aCk7
DQogICAgQ29udGlndW91c0pTVmFsdWVzIGNyZWF0ZUluaXRpYWxJbnQzMihWTSYsIHVuc2lnbmVk
IGxlbmd0aCk7DQogICAgQ29udGlndW91c0RvdWJsZXMgY3JlYXRlSW5pdGlhbERvdWJsZShWTSYs
IHVuc2lnbmVkIGxlbmd0aCk7DQogICAgQ29udGlndW91c0pTVmFsdWVzIGNyZWF0ZUluaXRpYWxD
b250aWd1b3VzKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsNCg0KICAgIHZvaWQgY29udmVydFVuZGVj
aWRlZEZvclZhbHVlKFZNJiwgSlNWYWx1ZSk7DQogICAgdm9pZCBjcmVhdGVJbml0aWFsRm9yVmFs
dWVBbmRTZXQoVk0mLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSk7DQogICAgdm9pZCBjb252ZXJ0
SW50MzJGb3JWYWx1ZShWTSYsIEpTVmFsdWUpOw0KICAgIHZvaWQgY29udmVydERvdWJsZUZvclZh
bHVlKFZNJiwgSlNWYWx1ZSk7DQogICAgdm9pZCBjb252ZXJ0RnJvbUNvcHlPbldyaXRlKFZNJik7
DQoNCiAgICBzdGF0aWMgQnV0dGVyZmx5KiBjcmVhdGVBcnJheVN0b3JhZ2VCdXR0ZXJmbHkoVk0m
LCBKU09iamVjdCogaW50ZW5kZWRPd25lciwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCB2ZWN0b3JMZW5ndGgsIEJ1dHRlcmZseSogb2xkQnV0dGVyZmx5ID0gbnVsbHB0cik7
DQogICAgQXJyYXlTdG9yYWdlKiBjcmVhdGVBcnJheVN0b3JhZ2UoVk0mLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7DQogICAgQXJyYXlTdG9yYWdlKiBjcmVhdGVJbml0
aWFsQXJyYXlTdG9yYWdlKFZNJik7DQogICAgICAgIA0KICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBj
b252ZXJ0VW5kZWNpZGVkVG9JbnQzMihWTSYpOw0KICAgIENvbnRpZ3VvdXNEb3VibGVzIGNvbnZl
cnRVbmRlY2lkZWRUb0RvdWJsZShWTSYpOw0KICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjb252ZXJ0
VW5kZWNpZGVkVG9Db250aWd1b3VzKFZNJik7DQogICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0VW5k
ZWNpZGVkVG9BcnJheVN0b3JhZ2UoVk0mLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24pOw0KICAgIEFy
cmF5U3RvcmFnZSogY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJik7DQogICAgICAg
IA0KICAgIENvbnRpZ3VvdXNEb3VibGVzIGNvbnZlcnRJbnQzMlRvRG91YmxlKFZNJik7DQogICAg
Q29udGlndW91c0pTVmFsdWVzIGNvbnZlcnRJbnQzMlRvQ29udGlndW91cyhWTSYpOw0KICAgIEFy
cmF5U3RvcmFnZSogY29udmVydEludDMyVG9BcnJheVN0b3JhZ2UoVk0mLCBOb25Qcm9wZXJ0eVRy
YW5zaXRpb24pOw0KICAgIEFycmF5U3RvcmFnZSogY29udmVydEludDMyVG9BcnJheVN0b3JhZ2Uo
Vk0mKTsNCg0KICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjb252ZXJ0RG91YmxlVG9Db250aWd1b3Vz
KFZNJik7DQogICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0m
LCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24pOw0KICAgIEFycmF5U3RvcmFnZSogY29udmVydERvdWJs
ZVRvQXJyYXlTdG9yYWdlKFZNJik7DQogICAgICAgIA0KICAgIEFycmF5U3RvcmFnZSogY29udmVy
dENvbnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYsIE5vblByb3BlcnR5VHJhbnNpdGlvbik7DQog
ICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKFZNJik7DQoN
CiAgICAgICAgDQogICAgQXJyYXlTdG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRF
bnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUoVk0mKTsNCiAgICAgICAgDQogICAgYm9vbCBkZWZp
bmVPd25Ob25JbmRleFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsNCg0KICAgIHRlbXBs
YXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPg0KICAgIGJvb2wgcHV0QnlJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsNCiAgICBib29sIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqKTsNCg0KICAgIGJv
b2wgaW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mLCB1bnNpZ25lZCBuZXdMZW5ndGgpOw0KICAgIHZv
aWQgZGVhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKCk7DQogICAgYm9vbCBkZWZpbmVPd25JbmRleGVk
UHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7DQogICAgU3BhcnNlQXJyYXlWYWx1ZU1hcCogYWxs
b2NhdGVTcGFyc2VJbmRleE1hcChWTSYpOw0KICAgICAgICANCiAgICB2b2lkIG5vdGlmeVByZXNl
bmNlT2ZJbmRleGVkQWNjZXNzb3JzKFZNJik7DQogICAgICAgIA0KICAgIGJvb2wgYXR0ZW1wdFRv
SW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpOw0KICAgICAgICAN
CiAgICANCiAgICANCiAgICBib29sICBlbnN1cmVMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBsZW5n
dGgpDQogICAgew0KICAgICAgICBkbyB7IGlmICgoIShsZW5ndGggPD0gSW5kZXhpbmdIZWFkZXI6
Om1heGltdW1MZW5ndGgpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNv
bXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDEwNzYsICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0
LmgiLCAgX19GVU5DVElPTl9fICAsIDgxICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICBpZiAobV9idXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpIDwgbGVuZ3RoIHx8IGlzQ29weU9uV3JpdGUoaW5kZXhpbmdNb2RlKCkpKSB7DQogICAg
ICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aFNsb3codm0sIGxlbmd0aCkpDQogICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgaWYgKG1f
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSA8IGxlbmd0aCkNCiAgICAgICAgICAgIG1fYnV0dGVy
Zmx5LT5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAg
fQ0KICAgICAgICANCiAgICANCiAgICANCiAgICB2b2lkIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0
ZXJmbHkoVk0mLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIA0KICAgIHRlbXBsYXRlPEluZGV4aW5n
VHlwZSBpbmRleGluZ1NoYXBlPg0KICAgIHVuc2lnbmVkIGNvdW50RWxlbWVudHMoQnV0dGVyZmx5
Kik7DQogICAgICAgIA0KICAgIA0KICAgIHVuc2lnbmVkIGNvdW50RWxlbWVudHMoKTsNCg0KcHJp
dmF0ZToNCiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KICAgIGZyaWVu
ZCBjbGFzcyBWTUluc3BlY3RvcjsNCg0KICAgIA0KICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1
ZVdyYXBwZXI7DQogICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsNCiAgICB2b2lkIGdl
dE9iamVjdCgpOw0KICAgIHZvaWQgZ2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpOw0KICAgIHZvaWQgaXNPYmplY3QoKTsNCiAgICB2b2lkIGlzU3RyaW5nKCk7DQogICAgICAg
IA0KICAgIEJ1dHRlcmZseSogY3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKFZNJiwgdW5zaWdu
ZWQgbGVuZ3RoKTsNCiAgICAgICAgDQogICAgQXJyYXlTdG9yYWdlKiBlbnRlckRpY3Rpb25hcnlJ
bmRleGluZ01vZGVXaGVuQXJyYXlTdG9yYWdlQWxyZWFkeUV4aXN0cyhWTSYsIEFycmF5U3RvcmFn
ZSopOw0KICAgICAgICANCiAgICB0ZW1wbGF0ZTxQdXRNb2RlPg0KICAgIGJvb2wgcHV0RGlyZWN0
SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIsIFB1dFBy
b3BlcnR5U2xvdCYpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIF9fZGVjbHNwZWMobm9p
bmxpbmUpIGJvb2wgcHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7DQoNCiAgICBib29sIGdldE5vbkluZGV4UHJvcGVy
dHlTbG90KEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAg
ICBib29sIGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KFZNJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBm
aWxsR2V0dGVyUHJvcGVydHlTbG90KFZNJiwgUHJvcGVydHlTbG90JiwgSlNDZWxsKiwgdW5zaWdu
ZWQsIFByb3BlcnR5T2Zmc2V0KTsNCiAgICB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNs
b3QoVk0mLCBQcm9wZXJ0eVNsb3QmLCBDdXN0b21HZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCwgU3Ry
dWN0dXJlKik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBnZXRPd25TdGF0aWNQ
cm9wZXJ0eVNsb3QoVk0mLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOw0KICAgICAgICAN
CiAgICBib29sIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOw0KICAgIGJv
b2wgcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEpTR2xv
YmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUsIEFycmF5U3RvcmFnZSopOw0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBib29sIHB1dERpcmVjdEluZGV4U2xvd09yQmV5b25kVmVjdG9yTGVuZ3Ro
KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUpOw0KICAgICAgICANCiAgICB1bnNpZ25l
ZCBnZXROZXdWZWN0b3JMZW5ndGgoVk0mLCB1bnNpZ25lZCBpbmRleEJpYXMsIHVuc2lnbmVkIGN1
cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2ly
ZWRMZW5ndGgpOw0KICAgIHVuc2lnbmVkIGdldE5ld1ZlY3Rvckxlbmd0aChWTSYsIHVuc2lnbmVk
IGRlc2lyZWRMZW5ndGgpOw0KDQogICAgQXJyYXlTdG9yYWdlKiBjb25zdHJ1Y3RDb252ZXJ0ZWRB
cnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKFZNJiwgdW5zaWduZWQgbmVlZGVkTGVu
Z3RoKTsNCiAgICAgICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgc2V0SW5kZXhR
dWlja2x5VG9VbmRlY2lkZWQoVk0mLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSk7DQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgY29udmVydEludDMyVG9Eb3VibGVPckNvbnRpZ3VvdXNX
aGlsZVBlcmZvcm1pbmdTZXRJbmRleChWTSYsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBjb252ZXJ0RG91YmxlVG9Db250aWd1b3VzV2hp
bGVQZXJmb3JtaW5nU2V0SW5kZXgoVk0mLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSk7DQogICAg
ICAgIA0KICAgIGJvb2wgZW5zdXJlTGVuZ3RoU2xvdyhWTSYsIHVuc2lnbmVkIGxlbmd0aCk7DQog
ICAgICAgIA0KICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyB0cnlNYWtlV3JpdGFibGVJbnQzMlNsb3co
Vk0mKTsNCiAgICBDb250aWd1b3VzRG91YmxlcyB0cnlNYWtlV3JpdGFibGVEb3VibGVTbG93KFZN
Jik7DQogICAgQ29udGlndW91c0pTVmFsdWVzIHRyeU1ha2VXcml0YWJsZUNvbnRpZ3VvdXNTbG93
KFZNJik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEFycmF5U3RvcmFnZSogZW5zdXJlQXJy
YXlTdG9yYWdlU2xvdyhWTSYpOw0KDQogICAgUHJvcGVydHlPZmZzZXQgcHJlcGFyZVRvUHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIFN0cnVjdHVyZUlELCBTdHJ1Y3R1cmUqKTsNCg0KICAgIEF1eGlsaWFyeUJhcnJpZXI8QnV0
dGVyZmx5Kj4gbV9idXR0ZXJmbHk7DQoNCg0KI2xpbmUgMTE1MyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdC5oIg0KfTsN
Cg0KDQoNCg0KY2xhc3MgSlNOb25GaW5hbE9iamVjdCA6IHB1YmxpYyBKU09iamVjdCB7DQogICAg
ZnJpZW5kIGNsYXNzIEpTT2JqZWN0Ow0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBKU09iamVjdCBC
YXNlOw0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0K
DQpwcm90ZWN0ZWQ6DQogICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG51bGxwdHIpDQogICAgICAg
IDogSlNPYmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KQ0KICAgIHsNCiAgICB9DQoNCiAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkNCiAgICB7DQogICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQog
ICAgfQ0KfTsNCg0KY2xhc3MgSlNGaW5hbE9iamVjdDsNCg0KDQoNCmNsYXNzIEpTRmluYWxPYmpl
Y3QgZmluYWwgOiBwdWJsaWMgSlNPYmplY3Qgew0KICAgIGZyaWVuZCBjbGFzcyBKU09iamVjdDsN
CnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNPYmplY3Q7DQogICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOw0KDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBD
b21wbGV0ZVN1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYpOw0KDQogICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpDQogICAgew0KICAg
ICAgICByZXR1cm4gKHNpemVvZihKU09iamVjdCkgKyBpbmxpbmVDYXBhY2l0eSAqIHNpemVvZihX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KSkudW5zYWZlR2V0KCk7DQogICAgfQ0KDQogICAgc3Rh
dGljIGlubGluZSBjb25zdCBUeXBlSW5mbyB0eXBlSW5mbygpIHsgcmV0dXJuIFR5cGVJbmZvKEZp
bmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBJ
bmRleGluZ1R5cGUgZGVmYXVsdEluZGV4aW5nVHlwZSA9IE5vbkFycmF5Ow0KICAgICAgICANCiAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGRlZmF1bHRTaXplID0gNjQ7DQogICAgc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIChkZWZhdWx0U2l6ZSAtIGFsbG9jYXRpb25TaXplKDApKSAvIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pOw0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bWF4U2l6ZSA9IDUxMjsNCiAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG1heElubGluZUNhcGFj
aXR5KCkNCiAgICB7DQogICAgICAgIHJldHVybiAobWF4U2l6ZSAtIGFsbG9jYXRpb25TaXplKDAp
KSAvIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOw0KICAgIH0NCg0KICAgIHN0YXRpYyBK
U0ZpbmFsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBCdXR0ZXJmbHkqID0gbnVsbHB0
cik7DQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIHVuc2lnbmVkIGlubGlu
ZUNhcGFjaXR5KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgdHlwZUluZm8oKSwgaW5mbygpLCBkZWZhdWx0SW5kZXhp
bmdUeXBlLCBpbmxpbmVDYXBhY2l0eSk7DQogICAgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0K
ICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpD
bGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQpwcml2YXRlOg0KICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCiAgICB2b2lkIHZpc2l0Q2hpbGRy
ZW5Db21tb24oU2xvdFZpc2l0b3ImKTsNCg0KICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBudWxscHRy
KQ0KICAgICAgICA6IEpTT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSkNCiAgICB7DQog
ICAgICAgIGdjU2FmZVplcm9NZW1vcnkoaW5saW5lU3RvcmFnZVVuc2FmZSgpLCBzdHJ1Y3R1cmUt
PmlubGluZUNhcGFjaXR5KCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsNCiAgICB9DQoNCiAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkNCiAgICB7DQogICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQog
ICAgfQ0KfTsNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEVuY29kZWRKU1ZhbHVlICBvYmplY3RQ
cml2YXRlRnVuY0luc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCg0KaW5s
aW5lIEpTT2JqZWN0KiBKU09iamVjdDo6Y3JlYXRlUmF3T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQ0Kew0KICAgIEpTT2JqZWN0KiBmaW5h
bE9iamVjdCA9IG5ldyAoDQogICAgICAgIE5vdE51bGwsIA0KICAgICAgICBhbGxvY2F0ZUNlbGw8
SlNGaW5hbE9iamVjdD4oDQogICAgICAgICAgICB2bS5oZWFwLA0KICAgICAgICAgICAgSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKQ0KICAg
ICAgICApDQogICAgKSBKU09iamVjdCh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOw0KICAgIGZp
bmFsT2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7DQogICAgcmV0dXJuIGZpbmFsT2JqZWN0Ow0K
fQ0KDQppbmxpbmUgSlNGaW5hbE9iamVjdCogSlNGaW5hbE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQ0Kew0KICAgIEpTRmlu
YWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3ICgNCiAgICAgICAgTm90TnVsbCwgDQogICAgICAg
IGFsbG9jYXRlQ2VsbDxKU0ZpbmFsT2JqZWN0PigNCiAgICAgICAgICAgIHZtLmhlYXAsDQogICAg
ICAgICAgICBhbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpDQogICAg
ICAgICkNCiAgICApIEpTRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsNCiAg
ICBmaW5hbE9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOw0KICAgIHJldHVybiBmaW5hbE9iamVj
dDsNCn0NCg0KaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkN
CnsNCiAgICByZXR1cm4gc2l6ZW9mKEpTT2JqZWN0KTsNCn0NCg0KaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OmlzR2xvYmFsT2JqZWN0KCkgY29uc3QNCnsNCiAgICByZXR1cm4gdHlwZSgpID09IEdsb2Jh
bE9iamVjdFR5cGU7DQp9DQoNCmlubGluZSBib29sIEpTT2JqZWN0Ojppc0pTTGV4aWNhbEVudmly
b25tZW50KCkgY29uc3QNCnsNCiAgICByZXR1cm4gdHlwZSgpID09IExleGljYWxFbnZpcm9ubWVu
dFR5cGUgfHwgdHlwZSgpID09IE1vZHVsZUVudmlyb25tZW50VHlwZTsNCn0NCg0KaW5saW5lIGJv
b2wgSlNPYmplY3Q6OmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgY29uc3QNCnsNCiAgICBy
ZXR1cm4gdHlwZSgpID09IEdsb2JhbExleGljYWxFbnZpcm9ubWVudFR5cGU7DQp9DQoNCmlubGlu
ZSBib29sIEpTT2JqZWN0Ojppc1N0cmljdEV2YWxBY3RpdmF0aW9uKCkgY29uc3QNCnsNCiAgICBy
ZXR1cm4gdHlwZSgpID09IFN0cmljdEV2YWxBY3RpdmF0aW9uVHlwZTsNCn0NCg0KaW5saW5lIGJv
b2wgSlNPYmplY3Q6OmlzRW52aXJvbm1lbnQoKSBjb25zdA0Kew0KICAgIGJvb2wgcmVzdWx0ID0g
R2xvYmFsT2JqZWN0VHlwZSA8PSB0eXBlKCkgJiYgdHlwZSgpIDw9IFN0cmljdEV2YWxBY3RpdmF0
aW9uVHlwZTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KaW5saW5l
IGJvb2wgSlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIHR5
cGUoKSA9PSBFcnJvckluc3RhbmNlVHlwZTsNCn0NCg0KaW5saW5lIGJvb2wgSlNPYmplY3Q6Omlz
V2l0aFNjb3BlKCkgY29uc3QNCnsNCiAgICByZXR1cm4gdHlwZSgpID09IFdpdGhTY29wZVR5cGU7
DQp9DQoNCmlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIEpT
Q2VsbDo6c2V0U3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpOw0KfQ0KDQppbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0QnV0dGVyZmx5KFZNJiB2bSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpDQp7DQogICAg
aWYgKGlzWDg2KCkgfHwgdm0uaGVhcC5tdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkgew0KICAgICAg
ICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOw0KICAgICAgICBtX2J1dHRlcmZseS5zZXQodm0sIHRo
aXMsIGJ1dHRlcmZseSk7DQogICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7DQogICAgICAg
IHJldHVybjsNCiAgICB9DQoNCiAgICBtX2J1dHRlcmZseS5zZXQodm0sIHRoaXMsIGJ1dHRlcmZs
eSk7DQp9DQoNCmlubGluZSB2b2lkIEpTT2JqZWN0OjpudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVy
Zmx5KFZNJiB2bSwgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQsIEJ1dHRlcmZseSogYnV0dGVy
Zmx5KQ0Kew0KICAgIGlmIChpc1g4NigpIHx8IHZtLmhlYXAubXV0YXRvclNob3VsZEJlRmVuY2Vk
KCkpIHsNCiAgICAgICAgc2V0U3RydWN0dXJlSUREaXJlY3RseShudWtlKG9sZFN0cnVjdHVyZUlE
KSk7DQogICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7DQogICAgICAgIG1fYnV0dGVyZmx5
LnNldCh2bSwgdGhpcywgYnV0dGVyZmx5KTsNCiAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2Uo
KTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIG1fYnV0dGVyZmx5LnNldCh2bSwgdGhp
cywgYnV0dGVyZmx5KTsNCn0NCg0KaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU0NlbGwqIGNl
bGwpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4ganNDYXN0
PEpTT2JqZWN0Kj4oY2VsbCk7DQp9DQoNCmlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1
ZSB2YWx1ZSkNCnsNCiAgICByZXR1cm4gYXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOw0KfQ0KDQpp
bmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1
dHRlcmZseSogYnV0dGVyZmx5KQ0KICAgIDogSlNDZWxsKHZtLCBzdHJ1Y3R1cmUpDQogICAgLCBt
X2J1dHRlcmZseSh2bSwgdGhpcywgYnV0dGVyZmx5KQ0Kew0KfQ0KDQppbmxpbmUgSlNWYWx1ZSBK
U09iamVjdDo6Z2V0UHJvdG90eXBlRGlyZWN0KFZNJiB2bSkgY29uc3QNCnsNCiAgICByZXR1cm4g
c3RydWN0dXJlKHZtKS0+c3RvcmVkUHJvdG90eXBlKHRoaXMpOw0KfQ0KDQppbmxpbmUgSlNWYWx1
ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkNCnsNCiAgICBpZiAoKCFzdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLm92ZXJyaWRlc0dl
dFByb3RvdHlwZSgpKSkNCiAgICAgICAgcmV0dXJuIGdldFByb3RvdHlwZURpcmVjdCh2bSk7DQog
ICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvdG90eXBlKHRoaXMsIGdsb2JhbE9iamVj
dCk7DQp9DQoNCg0KDQoNCg0KaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldERpcmVjdENvbmN1
cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSBjb25z
dA0Kew0KICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5sb2NrKCkpOw0K
ICAgIGlmICghc3RydWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpDQogICAgICAgIHJldHVy
biB7IH07DQogICAgcmV0dXJuIGdldERpcmVjdChvZmZzZXQpOw0KfQ0KDQoNCg0KX19mb3JjZWlu
bGluZSBib29sIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpDQp7DQogICAgdW5zaWduZWQgYXR0cmlidXRlczsNCiAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsN
CiAgICBpZiAoIWlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgew0KICAgICAgICBpZiAoIVR5cGVJbmZv
OjpoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKGlubGluZVR5cGVGbGFncygpKSkNCiAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICAgICAgcmV0dXJuIGdldE93blN0YXRpY1Byb3BlcnR5U2xvdCh2
bSwgcHJvcGVydHlOYW1lLCBzbG90KTsNCiAgICB9DQogICAgDQogICAgDQogICAgKCh2b2lkKTAp
Ow0KDQogICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERpcmVjdChvZmZzZXQpOw0KICAgIGlmICh2YWx1
ZS5pc0NlbGwoKSkgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIEpTQ2VsbCogY2VsbCA9
IHZhbHVlLmFzQ2VsbCgpOw0KICAgICAgICBKU1R5cGUgdHlwZSA9IGNlbGwtPnR5cGUoKTsNCiAg
ICAgICAgc3dpdGNoICh0eXBlKSB7DQogICAgICAgIGNhc2UgR2V0dGVyU2V0dGVyVHlwZToNCiAg
ICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qodm0sIHNsb3QsIGNlbGwsIGF0dHJpYnV0
ZXMsIG9mZnNldCk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgY2FzZSBDdXN0
b21HZXR0ZXJTZXR0ZXJUeXBlOg0KICAgICAgICAgICAgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5
U2xvdCh2bSwgc2xvdCwganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGNlbGwpLCBhdHRyaWJ1
dGVzLCBzdHJ1Y3R1cmUpOw0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGRlZmF1
bHQ6DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBzbG90
LnNldFZhbHVlKHRoaXMsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOw0KICAgIHJldHVybiB0
cnVlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHZvaWQgSlNPYmplY3Q6OmZpbGxDdXN0b21HZXR0ZXJQ
cm9wZXJ0eVNsb3QoVk0mIHZtLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIEN1c3RvbUdldHRlclNldHRl
ciogY3VzdG9tR2V0dGVyU2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKGN1c3RvbUdldHRlclNldHRlci0+
aW5oZXJpdHM8RE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyPih2bSkpIHsNCiAgICAgICAgYXV0byog
ZG9tQXR0cmlidXRlID0ganNDYXN0PERPTUF0dHJpYnV0ZUdldHRlclNldHRlcio+KGN1c3RvbUdl
dHRlclNldHRlcik7DQogICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkpDQogICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBkb21B
dHRyaWJ1dGUtPmdldHRlcigpLCBkb21BdHRyaWJ1dGUtPmRvbUF0dHJpYnV0ZSgpKTsNCiAgICAg
ICAgZWxzZQ0KICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpcywgYXR0cmli
dXRlcywgZG9tQXR0cmlidXRlLT5nZXR0ZXIoKSwgZG9tQXR0cmlidXRlLT5kb21BdHRyaWJ1dGUo
KSk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2Fj
aGVhYmxlRGljdGlvbmFyeSgpKQ0KICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1
dGVzLCBjdXN0b21HZXR0ZXJTZXR0ZXItPmdldHRlcigpKTsNCiAgICBlbHNlDQogICAgICAgIHNs
b3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGN1c3RvbUdldHRlclNldHRl
ci0+Z2V0dGVyKCkpOw0KfQ0KDQoNCg0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdEltcGwoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQ0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7DQogICAgaWYgKG9iamVjdC0+Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkN
CiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkNCiAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHNsb3QpOw0K
ICAgIHJldHVybiBmYWxzZTsNCn0NCg0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7
DQogICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEltcGwob2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgdm9pZCBKU09iamVjdDo6
ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgUHV0UHJvcGVydHlTbG90JikNCnsNCn0NCiNsaW5lIDE0NjcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmpl
Y3QuaCINCg0KDQoNCnRlbXBsYXRlPGJvb2wgY2hlY2tOdWxsU3RydWN0dXJlPg0KX19mb3JjZWlu
bGluZSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQ0K
ew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0byYgc3RydWN0dXJl
SURUYWJsZSA9IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpOw0KICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB0aGlzOw0KICAgIHdoaWxlICh0cnVlKSB7DQogICAgICAgIGlmICgoVHlwZUluZm86Om92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChvYmplY3QtPmlubGluZVR5cGVGbGFncygpKSkpIHsN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgaW5kZXgudmFsdWUoKSwgc2xvdCk7DQogICAgICAgICAgICANCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOw0KICAgICAgICB9DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVJRFRhYmxlLmdl
dChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOw0KDQogICAgICAgIGlmIChjaGVja051bGxTdHJ1Y3R1
cmUgJiYgKCFzdHJ1Y3R1cmUpKQ0KICAgICAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKG9iamVjdC0+dHlwZSgpLCBvYmplY3QtPnN0cnVjdHVyZUlEKCksIHN0cnVjdHVy
ZUlEVGFibGUuc2l6ZSgpKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aElu
Zm8oMTQ5MiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNPYmplY3QuaCIsICBfX0ZVTkNUSU9OX18gICwgODIsb2JqZWN0LT50eXBl
KCksIG9iamVjdC0+c3RydWN0dXJlSUQoKSwgc3RydWN0dXJlSURUYWJsZS5zaXplKCkpOyB9IHdo
aWxlIChmYWxzZSk7DQojbGluZSAxNDk0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0LmgiDQogICAgICAgIGlmIChvYmpl
Y3QtPmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKG9i
amVjdCk7DQogICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpDQogICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsNCiAgICB9DQoNCiAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KQ0KICAgICAgICByZXR1cm4gZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaW5kZXgudmFs
dWUoKSwgc2xvdCk7DQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQppbmxpbmUgSlNWYWx1ZSBKU09i
amVjdDo6Z2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIGNvbnN0DQp7DQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAg
ICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOw0KICAgIGJv
b2wgaGFzUHJvcGVydHkgPSBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5
U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7DQoNCiAgICAoKHZvaWQpMCk7
DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4ganNVbmRlZmluZWQo
KTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgaWYgKGhhc1Byb3BlcnR5KQ0KICAgICAgICBkbyB7
IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUpOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICByZXR1cm4ganNVbmRlZmluZWQoKTsN
Cn0NCg0KaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0DQp7DQogICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkp
Ow0KICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpHZXQpOw0KICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjb25zdF9jYXN0PEpTT2JqZWN0
Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7DQoNCiAgICAoKHZvaWQpMCk7DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkp
KSByZXR1cm4ganNVbmRlZmluZWQoKTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgaWYgKGhhc1By
b3BlcnR5KQ0KICAgICAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIHNsb3QuZ2V0VmFs
dWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsNCn0NCg0KaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsNCiAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlcywgc2xvdCk7DQp9DQoNCmlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4g
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgMCwgc2xvdCk7DQp9DQoNCmlubGluZSBzaXplX3Qgb2Zmc2V0SW5CdXR0ZXJm
bHkoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0Kew0KICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGlu
ZVN0b3JhZ2Uob2Zmc2V0KSArIEJ1dHRlcmZseTo6aW5kZXhPZlByb3BlcnR5U3RvcmFnZSgpOw0K
fQ0KDQppbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpidXR0ZXJmbHlQcmVDYXBhY2l0eSgpDQp7DQog
ICAgVk0mIHZtID0gdGhpcy0+dm0oKTsNCiAgICBpZiAoKGhhc0luZGV4aW5nSGVhZGVyKHZtKSkp
DQogICAgICAgIHJldHVybiBidXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIoKS0+cHJlQ2FwYWNp
dHkoc3RydWN0dXJlKHZtKSk7DQogICAgcmV0dXJuIDA7DQp9DQoNCmlubGluZSBzaXplX3QgSlNP
YmplY3Q6OmJ1dHRlcmZseVRvdGFsU2l6ZSgpDQp7DQogICAgVk0mIHZtID0gdGhpcy0+dm0oKTsN
CiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7DQogICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzLT5idXR0ZXJmbHkoKTsNCiAgICBzaXplX3QgcHJlQ2Fw
YWNpdHk7DQogICAgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzOw0KICAgIGJvb2wg
aGFzSW5kZXhpbmdIZWFkZXIgPSB0aGlzLT5oYXNJbmRleGluZ0hlYWRlcih2bSk7DQoNCiAgICBp
ZiAoKGhhc0luZGV4aW5nSGVhZGVyKSkgew0KICAgICAgICBwcmVDYXBhY2l0eSA9IGJ1dHRlcmZs
eS0+aW5kZXhpbmdIZWFkZXIoKS0+cHJlQ2FwYWNpdHkoc3RydWN0dXJlKTsNCiAgICAgICAgaW5k
ZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMgPSBidXR0ZXJmbHktPmluZGV4aW5nSGVhZGVyKCktPmlu
ZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKHN0cnVjdHVyZSk7DQogICAgfSBlbHNlIHsNCiAgICAg
ICAgcHJlQ2FwYWNpdHkgPSAwOw0KICAgICAgICBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyA9
IDA7DQogICAgfQ0KDQogICAgcmV0dXJuIEJ1dHRlcmZseTo6dG90YWxTaXplKHByZUNhcGFjaXR5
LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRl
eGluZ1BheWxvYWRTaXplSW5CeXRlcyk7DQp9DQoNCmlubGluZSBpbnQgaW5kZXhSZWxhdGl2ZVRv
QmFzZShQcm9wZXJ0eU9mZnNldCBvZmZzZXQpDQp7DQogICAgaWYgKGlzT3V0T2ZMaW5lT2Zmc2V0
KG9mZnNldCkpDQogICAgICAgIHJldHVybiBvZmZzZXRJbk91dE9mTGluZVN0b3JhZ2Uob2Zmc2V0
KSArIEJ1dHRlcmZseTo6aW5kZXhPZlByb3BlcnR5U3RvcmFnZSgpOw0KICAgICgodm9pZCkwKTsN
CiAgICByZXR1cm4gSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShvZmZzZXQpOw0KfQ0KDQppbmxp
bmUgaW50IG9mZnNldFJlbGF0aXZlVG9CYXNlKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkNCnsNCiAg
ICBpZiAoaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSkNCiAgICAgICAgcmV0dXJuIG9mZnNldElu
T3V0T2ZMaW5lU3RvcmFnZShvZmZzZXQpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSArIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKTsNCiAgICByZXR1cm4gSlNPYmplY3Q6Om9m
ZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKG9mZnNldCkgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpOw0KfQ0KDQoNCmlubGluZSBzaXplX3QgbWF4T2Zmc2V0UmVs
YXRpdmVUb0Jhc2UoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0Kew0KICAgIHB0cmRpZmZfdCBhZGRy
ZXNzT2Zmc2V0ID0gb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KTsNCg0KDQoNCiNsaW5lIDE2
MTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcSlNPYmplY3QuaCINCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihhZGRyZXNz
T2Zmc2V0KTsNCn0NCg0Kc3RhdGljX2Fzc2VydCgoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9m
KFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKSksICJKU09iamVjdF9pbmxpbmVfc3RvcmFnZV9o
YXNfY29ycmVjdF9hbGlnbm1lbnQiKTsNCg0KdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0Nv
dW50Pg0KX19mb3JjZWlubGluZSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKFZNJiB2bSwgY29u
c3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pDQp7DQogICAgcmV0dXJuIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIGNoYXJhY3RlcnMpOw0KfQ0KDQpfX2ZvcmNlaW5saW5l
IElkZW50aWZpZXIgbWFrZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBjaGFyKiBuYW1lKQ0Kew0K
ICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBuYW1lKTsNCn0NCg0KX19mb3Jj
ZWlubGluZSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSkNCnsNCiAgICByZXR1cm4gbmFtZTsNCn0NCg0KYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IGJvb2wgaXNFeHRlbnNpYmxlLA0KICAgIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGN1
cnJlbnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pOw0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgX19k
ZWNsc3BlYyhub2lubGluZSkgYm9vbCBvcmRpbmFyeVNldFNsb3coSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgSlNWYWx1ZSByZWNlaXZlciwgYm9vbCBz
aG91bGRUaHJvdyk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KfSANCiNsaW5lIDI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQXJyYXkuaCINCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCmNsYXNzIEpTQXJyYXk7DQpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoN
CmV4dGVybiBjb25zdCBBU0NJSUxpdGVyYWwgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlM
ZW5ndGhFcnJvcjsNCg0KY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsN
CiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KICAgIGZyaWVuZCBjbGFz
cyBXYWxrZXI7DQogICAgZnJpZW5kIGNsYXNzIEpJVDsNCg0KcHVibGljOg0KICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXM7DQoNCiAgICBzdGF0
aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkN
CiAgICB7DQogICAgICAgICgodm9pZClpbmxpbmVDYXBhY2l0eSk7DQogICAgICAgIHJldHVybiBz
aXplb2YoSlNBcnJheSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICZ2bS5hcnJheVNwYWNlOw0KICAgIH0NCiAgICAg
ICAgDQpwcm90ZWN0ZWQ6DQogICAgZXhwbGljaXQgSlNBcnJheShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkNCiAgICAgICAgOiBKU05vbkZpbmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSkNCiAgICB7DQogICAgfQ0KDQpwdWJsaWM6DQog
ICAgc3RhdGljIEpTQXJyYXkqIHRyeUNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGlu
aXRpYWxMZW5ndGggPSAwKTsNCiAgICBzdGF0aWMgSlNBcnJheSogdHJ5Q3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoSGlu
dCk7DQogICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVuc2lnbmVk
IGluaXRpYWxMZW5ndGggPSAwKTsNCiAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlV2l0aEJ1dHRl
cmZseShWTSYsIEdDRGVmZXJyYWxDb250ZXh0KiwgU3RydWN0dXJlKiwgQnV0dGVyZmx5Kik7DQoN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3Rh
dGljIEpTQXJyYXkqIHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUmLCBHQ0RlZmVycmFsQ29udGV4dCosIFN0cnVjdHVyZSosIHVuc2lnbmVk
IGluaXRpYWxMZW5ndGgpOw0KICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxp
emVkUmVzdHJpY3RlZChPYmplY3RJbml0aWFsaXphdGlvblNjb3BlJiBzY29wZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpDQogICAgew0KICAgICAgICByZXR1
cm4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoc2NvcGUsIG51bGxwdHIsIHN0cnVj
dHVyZSwgaW5pdGlhbExlbmd0aCk7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgZWFnZXJseUlu
aXRpYWxpemVCdXR0ZXJmbHkoT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSYsIEpTQXJyYXkqLCB1
bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9u
KTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7DQoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25z
dCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIA0K
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGdldEFycmF5TGVuZ3RoKCk7IH0N
Cg0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIHNldExlbmd0aChKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkLCBib29sIHRocm93RXhjZXB0aW9uID0gZmFsc2UpOw0KDQogICAg
dm9pZCBwdXNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7DQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHZvaWQgcHVzaChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOw0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlIHBvcChKU0dsb2JhbE9iamVjdCopOw0KDQogICAg
SlNBcnJheSogZmFzdFNsaWNlKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgc3RhcnRJbmRleCwg
dW5zaWduZWQgY291bnQpOw0KDQogICAgYm9vbCBjYW5GYXN0Q29weShWTSYsIEpTQXJyYXkqIG90
aGVyQXJyYXkpOw0KICAgIGJvb2wgY2FuRG9GYXN0SW5kZXhlZEFjY2VzcyhWTSYpOw0KICAgIA0K
ICAgIEluZGV4aW5nVHlwZSBtZXJnZUluZGV4aW5nVHlwZUZvckNvcHlpbmcoSW5kZXhpbmdUeXBl
IG90aGVyKTsNCiAgICBib29sIGFwcGVuZE1lbWNweShKU0dsb2JhbE9iamVjdCosIFZNJiwgdW5z
aWduZWQgc3RhcnRJbmRleCwgSlNBcnJheSogb3RoZXJBcnJheSk7DQoNCiAgICBlbnVtIFNoaWZ0
Q291bnRNb2RlIHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBTaGlmdENvdW50Rm9yU2hp
ZnQsDQogICAgICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAg
U2hpZnRDb3VudEZvclNwbGljZQ0KICAgIH07DQoNCiAgICBib29sIHNoaWZ0Q291bnRGb3JTaGlm
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNp
Z25lZCBjb3VudCkNCiAgICB7DQogICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
DQogICAgICAgIHJldHVybiBzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZSh2bSwgc3RhcnRJbmRl
eCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOw0KICAgIH0NCiAgICBib29sIHNoaWZ0
Q291bnRGb3JTcGxpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQmIHN0
YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHNoaWZ0Q291
bnRXaXRoQW55SW5kZXhpbmdUeXBlKGdsb2JhbE9iamVjdCwgc3RhcnRJbmRleCwgY291bnQpOw0K
ICAgIH0NCiAgICB0ZW1wbGF0ZTxTaGlmdENvdW50TW9kZSBzaGlmdENvdW50TW9kZT4NCiAgICBi
b29sIHNoaWZ0Q291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQmIHN0
YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChzaGlmdENv
dW50TW9kZSkgew0KICAgICAgICBjYXNlIFNoaWZ0Q291bnRGb3JTaGlmdDoNCiAgICAgICAgICAg
IHJldHVybiBzaGlmdENvdW50Rm9yU2hpZnQoZ2xvYmFsT2JqZWN0LCBzdGFydEluZGV4LCBjb3Vu
dCk7DQogICAgICAgIGNhc2UgU2hpZnRDb3VudEZvclNwbGljZToNCiAgICAgICAgICAgIHJldHVy
biBzaGlmdENvdW50Rm9yU3BsaWNlKGdsb2JhbE9iamVjdCwgc3RhcnRJbmRleCwgY291bnQpOw0K
ICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgV1RGQ3Jhc2goKTsNCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAgICAgDQogICAgYm9vbCB1bnNoaWZ0
Q291bnRGb3JTaGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBzdGFy
dEluZGV4LCB1bnNpZ25lZCBjb3VudCkNCiAgICB7DQogICAgICAgIHJldHVybiB1bnNoaWZ0Q291
bnRXaXRoQXJyYXlTdG9yYWdlKGdsb2JhbE9iamVjdCwgc3RhcnRJbmRleCwgY291bnQsIGVuc3Vy
ZUFycmF5U3RvcmFnZShnZXRWTShnbG9iYWxPYmplY3QpKSk7DQogICAgfQ0KICAgIGJvb2wgdW5z
aGlmdENvdW50Rm9yU3BsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVk
IHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHVuc2hp
ZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoZ2xvYmFsT2JqZWN0LCBzdGFydEluZGV4LCBjb3Vu
dCk7DQogICAgfQ0KICAgIHRlbXBsYXRlPFNoaWZ0Q291bnRNb2RlIHNoaWZ0Q291bnRNb2RlPg0K
ICAgIGJvb2wgdW5zaGlmdENvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2ln
bmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChz
aGlmdENvdW50TW9kZSkgew0KICAgICAgICBjYXNlIFNoaWZ0Q291bnRGb3JTaGlmdDoNCiAgICAg
ICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRGb3JTaGlmdChnbG9iYWxPYmplY3QsIHN0YXJ0SW5k
ZXgsIGNvdW50KTsNCiAgICAgICAgY2FzZSBTaGlmdENvdW50Rm9yU3BsaWNlOg0KICAgICAgICAg
ICAgcmV0dXJuIHVuc2hpZnRDb3VudEZvclNwbGljZShnbG9iYWxPYmplY3QsIHN0YXJ0SW5kZXgs
IGNvdW50KTsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIFdURkNyYXNoKCk7DQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgdm9pZCBmaWxsQXJnTGlzdChKU0dsb2JhbE9iamVjdCosIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyJik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgY29weVRvQXJndW1l
bnRzKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSogZmlyc3RFbGVtZW50RGVzdCwgdW5zaWduZWQg
b2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJv
b2wgaXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsNCg0KICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQXJyYXlUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwg
aW5kZXhpbmdUeXBlKTsNCiAgICB9DQogICAgICAgIA0KcHJvdGVjdGVkOg0KICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQoNCiAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KDQogICAgc3RhdGljIGJvb2wgZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3Bl
cnR5U2xvdCYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsNCg0KcHJpdmF0ZToNCiAgICBib29sIGlzTGVu
Z3RoV3JpdGFibGUoKQ0KICAgIHsNCiAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gYXJy
YXlTdG9yYWdlT3JOdWxsKCk7DQogICAgICAgIGlmICghc3RvcmFnZSkNCiAgICAgICAgICAgIHJl
dHVybiB0cnVlOw0KICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdlLT5t
X3NwYXJzZU1hcC5nZXQoKTsNCiAgICAgICAgcmV0dXJuICFtYXAgfHwgIW1hcC0+bGVuZ3RoSXNS
ZWFkT25seSgpOw0KICAgIH0NCiAgICAgICAgDQogICAgYm9vbCBzaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkJiBzdGFydEluZGV4LCB1bnNpZ25l
ZCBjb3VudCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhZ2UoVk0mLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCwgQXJy
YXlTdG9yYWdlKik7DQoNCiAgICBib29sIHVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUo
SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCk7DQog
ICAgYm9vbCB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSopOw0KICAgIGJv
b2wgdW5zaGlmdENvdW50U2xvd0Nhc2UoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBWTSYsIERlZmVy
R0MmLCBib29sLCB1bnNpZ25lZCk7DQoNCiAgICBib29sIHNldExlbmd0aFdpdGhBcnJheVN0b3Jh
Z2UoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRp
b24sIEFycmF5U3RvcmFnZSopOw0KICAgIHZvaWQgc2V0TGVuZ3RoV3JpdGFibGUoSlNHbG9iYWxP
YmplY3QqLCBib29sIHdyaXRhYmxlKTsNCn07DQoNCmlubGluZSBCdXR0ZXJmbHkqIHRyeUNyZWF0
ZUFycmF5QnV0dGVyZmx5KFZNJiB2bSwgSlNPYmplY3QqIGludGVuZGVkT3duZXIsIHVuc2lnbmVk
IGluaXRpYWxMZW5ndGgpDQp7DQogICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6
OnRyeUNyZWF0ZSgNCiAgICAgICAgdm0sIGludGVuZGVkT3duZXIsIDAsIDAsIHRydWUsIGJhc2VJ
bmRleGluZ0hlYWRlckZvckFycmF5U3RvcmFnZShpbml0aWFsTGVuZ3RoKSwNCiAgICAgICAgQXJy
YXlTdG9yYWdlOjpzaXplRm9yKDRVKSk7DQogICAgaWYgKCFidXR0ZXJmbHkpDQogICAgICAgIHJl
dHVybiBudWxscHRyOw0KICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCk7DQogICAgc3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsNCiAgICBzdG9y
YWdlLT5tX2luZGV4QmlhcyA9IDA7DQogICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9
IDA7DQogICAgcmV0dXJuIGJ1dHRlcmZseTsNCn0NCg0KaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6
OnRyeUNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFs
TGVuZ3RoLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGhIaW50KQ0Kew0KICAgICgodm9pZCkwKTsNCiAg
ICB1bnNpZ25lZCBvdXRPZkxpbmVTdG9yYWdlID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpOw0KDQogICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7DQogICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7DQogICAgaWYgKCghaGFzQW55QXJy
YXlTdG9yYWdlKGluZGV4aW5nVHlwZSkpKSB7DQogICAgICAgICgodm9pZCkwKTsNCiNsaW5lIDI0
MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxKU0FycmF5LmgiDQoNCiAgICAgICAgaWYgKCh2ZWN0b3JMZW5ndGhIaW50ID4gSW5kZXhp
bmdIZWFkZXI6Om1heGltdW1MZW5ndGgpKQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQoN
CiAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGln
dW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aEhpbnQpOw0KICAgICAgICB2
b2lkKiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25W
aXJ0dWFsKA0KICAgICAgICAgICAgdm0sDQogICAgICAgICAgICBCdXR0ZXJmbHk6OnRvdGFsU2l6
ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwNCiAgICAgICAgICAgIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
UmV0dXJuTnVsbCk7DQogICAgICAgIGlmICghdGVtcCkNCiAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOw0KICAgICAgICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmZyb21CYXNlKHRlbXAsIDAsIG91
dE9mTGluZVN0b3JhZ2UpOw0KICAgICAgICBidXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0aCh2ZWN0
b3JMZW5ndGgpOw0KICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChpbml0aWFsTGVu
Z3RoKTsNCiAgICAgICAgaWYgKGhhc0RvdWJsZShpbmRleGluZ1R5cGUpKQ0KICAgICAgICAgICAg
Y2xlYXJBcnJheShidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRhKCksIHZlY3Rvckxl
bmd0aCk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGNsZWFyQXJyYXkoYnV0dGVyZmx5LT5j
b250aWd1b3VzKCkuZGF0YSgpLCB2ZWN0b3JMZW5ndGgpOw0KICAgIH0gZWxzZSB7DQogICAgICAg
ICgodm9pZCkwKTsNCiNsaW5lIDI2NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0FycmF5LmgiDQogICAgICAgIGJ1dHRlcmZseSA9
IHRyeUNyZWF0ZUFycmF5QnV0dGVyZmx5KHZtLCBudWxscHRyLCBpbml0aWFsTGVuZ3RoKTsNCiAg
ICAgICAgaWYgKCFidXR0ZXJmbHkpDQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDRVOyArK2kpDQogICAgICAgICAgICBidXR0ZXJm
bHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3RvcltpXS5jbGVhcigpOw0KICAgIH0NCg0KICAgIHJl
dHVybiBjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxscHRyLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZs
eSk7DQp9DQoNCmlubGluZSBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCkNCnsNCiAgICByZXR1cm4g
dHJ5Q3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgsIGluaXRpYWxMZW5ndGgpOw0K
fQ0KDQppbmxpbmUgSlNBcnJheSogSlNBcnJheTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpDQp7DQogICAgSlNBcnJheSogcmVzdWx0
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOw0KICAg
IGRvIHsgaWYgKCghKHJlc3VsdCkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUo
KTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMjgyLCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0Fy
cmF5LmgiLCAgX19GVU5DVElPTl9fICAsIDgzICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7DQoNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQppbmxpbmUgSlNBcnJheSogSlNBcnJheTo6
Y3JlYXRlV2l0aEJ1dHRlcmZseShWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENv
bnRleHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkNCnsNCiAg
ICBKU0FycmF5KiBhcnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KHZt
LmhlYXAsIGRlZmVycmFsQ29udGV4dCkpIEpTQXJyYXkodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5
KTsNCiAgICBhcnJheS0+ZmluaXNoQ3JlYXRpb24odm0pOw0KICAgIHJldHVybiBhcnJheTsNCn0N
Cg0KSlNBcnJheSogYXNBcnJheShKU1ZhbHVlKTsNCg0KaW5saW5lIEpTQXJyYXkqIGFzQXJyYXko
SlNDZWxsKiBjZWxsKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4ganNDYXN0PEpTQXJy
YXkqPihjZWxsKTsNCn0NCg0KaW5saW5lIEpTQXJyYXkqIGFzQXJyYXkoSlNWYWx1ZSB2YWx1ZSkN
CnsNCiAgICByZXR1cm4gYXNBcnJheSh2YWx1ZS5hc0NlbGwoKSk7DQp9DQoNCmlubGluZSBib29s
IGlzSlNBcnJheShKU0NlbGwqIGNlbGwpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBj
ZWxsLT50eXBlKCkgPT0gQXJyYXlUeXBlOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNW
YWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIGlzSlNBcnJheSh2LmFzQ2VsbCgpKTsgfQ0K
DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNBcnJheSogY29uc3RydWN0QXJyYXkoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMpOw0KX19kZWNsc3BlYyhk
bGxleHBvcnQpIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgpOw0KX19kZWNsc3Bl
YyhkbGxleHBvcnQpIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBs
ZW5ndGgpOw0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCINCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEFycmF5QWxsb2NhdGlvblByb2ZpbGUgew0KcHVibGlj
Og0KICAgIEFycmF5QWxsb2NhdGlvblByb2ZpbGUoKSA9IGRlZmF1bHQ7DQoNCiAgICBBcnJheUFs
bG9jYXRpb25Qcm9maWxlKEluZGV4aW5nVHlwZSByZWNvbW1lbmRlZEluZGV4aW5nTW9kZSkNCiAg
ICB7DQogICAgICAgIGluaXRpYWxpemVJbmRleGluZ01vZGUocmVjb21tZW5kZWRJbmRleGluZ01v
ZGUpOw0KICAgIH0NCg0KICAgIEluZGV4aW5nVHlwZSBzZWxlY3RJbmRleGluZ1R5cGVDb25jdXJy
ZW50bHkoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fY3VycmVudEluZGV4aW5nVHlwZTsNCiAg
ICB9DQoNCiAgICBJbmRleGluZ1R5cGUgc2VsZWN0SW5kZXhpbmdUeXBlKCkNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgSlNBcnJheSogbGFzdEFycmF5ID0gbV9sYXN0QXJyYXk7
DQogICAgICAgIGlmIChsYXN0QXJyYXkgJiYgKGxhc3RBcnJheS0+aW5kZXhpbmdUeXBlKCkgIT0g
bV9jdXJyZW50SW5kZXhpbmdUeXBlKSkNCiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGUoKTsNCiAg
ICAgICAgcmV0dXJuIG1fY3VycmVudEluZGV4aW5nVHlwZTsNCiAgICB9DQoNCiAgICANCiAgICB1
bnNpZ25lZCB2ZWN0b3JMZW5ndGhIaW50Q29uY3VycmVudGx5KCkNCiAgICB7DQogICAgICAgIHJl
dHVybiBtX2xhcmdlc3RTZWVuVmVjdG9yTGVuZ3RoOw0KICAgIH0NCg0KICAgIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aEhpbnQoKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBKU0Fy
cmF5KiBsYXN0QXJyYXkgPSBtX2xhc3RBcnJheTsNCiAgICAgICAgaWYgKGxhc3RBcnJheSAmJiAo
bV9sYXJnZXN0U2VlblZlY3Rvckxlbmd0aCAhPSAyNVUpICYmIChsYXN0QXJyYXktPmdldFZlY3Rv
ckxlbmd0aCgpID4gbV9sYXJnZXN0U2VlblZlY3Rvckxlbmd0aCkpDQogICAgICAgICAgICB1cGRh
dGVQcm9maWxlKCk7DQogICAgICAgIHJldHVybiBtX2xhcmdlc3RTZWVuVmVjdG9yTGVuZ3RoOw0K
ICAgIH0NCiAgICANCiAgICBKU0FycmF5KiB1cGRhdGVMYXN0QWxsb2NhdGlvbihKU0FycmF5KiBs
YXN0QXJyYXkpDQogICAgew0KICAgICAgICBtX2xhc3RBcnJheSA9IGxhc3RBcnJheTsNCiAgICAg
ICAgcmV0dXJuIGxhc3RBcnJheTsNCiAgICB9DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIHZvaWQgdXBkYXRlUHJvZmlsZSgpOw0KDQogICAgc3RhdGljIEluZGV4aW5nVHlwZSBzZWxl
Y3RJbmRleGluZ1R5cGVGb3IoQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSkNCiAgICB7
DQogICAgICAgIGlmICghcHJvZmlsZSkNCiAgICAgICAgICAgIHJldHVybiBBcnJheVdpdGhVbmRl
Y2lkZWQ7DQogICAgICAgIHJldHVybiBwcm9maWxlLT5zZWxlY3RJbmRleGluZ1R5cGUoKTsNCiAg
ICB9DQogICAgDQogICAgc3RhdGljIEpTQXJyYXkqIHVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTQXJyYXkqIGxhc3RBcnJheSkNCiAgICB7
DQogICAgICAgIGlmIChwcm9maWxlKQ0KICAgICAgICAgICAgcHJvZmlsZS0+dXBkYXRlTGFzdEFs
bG9jYXRpb24obGFzdEFycmF5KTsNCiAgICAgICAgcmV0dXJuIGxhc3RBcnJheTsNCiAgICB9DQoN
CiAgICB2b2lkIGluaXRpYWxpemVJbmRleGluZ01vZGUoSW5kZXhpbmdUeXBlIHJlY29tbWVuZGVk
SW5kZXhpbmdNb2RlKSB7IG1fY3VycmVudEluZGV4aW5nVHlwZSA9IHJlY29tbWVuZGVkSW5kZXhp
bmdNb2RlOyB9DQoNCnByaXZhdGU6DQogICAgDQogICAgSW5kZXhpbmdUeXBlIG1fY3VycmVudElu
ZGV4aW5nVHlwZSB7IEFycmF5V2l0aFVuZGVjaWRlZCB9Ow0KICAgIHVuc2lnbmVkIG1fbGFyZ2Vz
dFNlZW5WZWN0b3JMZW5ndGggeyAwIH07DQogICAgSlNBcnJheSogbV9sYXN0QXJyYXkgeyBudWxs
cHRyIH07DQp9Ow0KDQp9IA0KI2xpbmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxCaWdJbnRQcm90b3R5cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0K
DQpjbGFzcyBCaWdJbnRQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJpZ0ludFByb3Rv
dHlwZSkgPT0gc2l6ZW9mKEJhc2UpKTsgc3RhdGljX2Fzc2VydChCaWdJbnRQcm90b3R5cGU6OmRl
c3Ryb3kgPT0gQmFzZTo6ZGVzdHJveSk7Ow0KICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0
U3BhY2U7DQogICAgfQ0KDQogICAgc3RhdGljIEJpZ0ludFByb3RvdHlwZSogY3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQog
ICAgew0KICAgICAgICBCaWdJbnRQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEJpZ0ludFByb3RvdHlwZT4odm0uaGVhcCkpIEJpZ0ludFByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsNCiAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsNCiAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsNCiAgICB9DQoNCiAgICBwcm90
ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0
aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19p
bmZvOyB9Ow0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0K
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAg
fQ0KDQpwcml2YXRlOg0KICAgIEJpZ0ludFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOw0KICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOw0KfTsNCg0KfSANCg0K
I2xpbmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQm9vbGVhblByb3RvdHlw
ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEJvb2xlYW5PYmplY3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1dyYXBwZXJPYmpl
Y3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQp0ZW1wbGF0ZTx1bnNpZ25lZCBwYXNzZWROdW1iZXJP
ZkludGVybmFsRmllbGRzID0gMT4NCmNsYXNzIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7DQpwdWJsaWM6DQogICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsNCg0KICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Ow0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9IHBh
c3NlZE51bWJlck9mSW50ZXJuYWxGaWVsZHM7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIHZvaWQgc3Vic3BhY2VGb3IoVk0mKQ0K
ICAgIHsNCiAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBp
bGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQ0LCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsLmgiLCAgX19GVU5DVElPTl9fICAsIDg0ICk7IH0gd2hpbGUgKGZhbHNlKTsN
CiAgICB9DQoNCiAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90
PiBpbmxpbmVDYXBhY2l0eSkNCiAgICB7DQogICAgICAgICgodm9pZClpbmxpbmVDYXBhY2l0eSk7
DQogICAgICAgIHJldHVybiBzaXplb2YoSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCk7DQogICAg
fQ0KDQogICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKHVuc2ln
bmVkIGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gbV9pbnRlcm5hbEZpZWxkc1tpbmRleF07DQogICAgfQ0KDQogICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+JiBpbnRlcm5hbEZpZWxkKHVuc2lnbmVkIGluZGV4KQ0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICByZXR1cm4gbV9pbnRlcm5hbEZpZWxkc1tpbmRleF07DQogICAgfQ0K
DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkludGVybmFsRmllbGRzKCkgeyByZXR1cm4g
KHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbCo+KDB4NDAwMCktPm1faW50ZXJuYWxGaWVsZHMpKSAtIDB4NDAwMCk7
IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSW50ZXJuYWxGaWVsZCh1bnNpZ25lZCBp
bmRleCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0
X2Nhc3Q8SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCo+KDB4NDAwMCktPm1faW50ZXJuYWxGaWVs
ZHMpKSAtIDB4NDAwMCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOyB9
DQoNCnByb3RlY3RlZDoNCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7DQoNCiAgICBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQ0KICAgIHsN
CiAgICB9DQoNCiAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9pbnRlcm5hbEZpZWxkc1tudW1i
ZXJPZkludGVybmFsRmllbGRzXSB7IH07DQp9Ow0KDQp9IA0KI2xpbmUgMjUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNXcmFwcGVy
T2JqZWN0LmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KY2xhc3MgSlNXcmFwcGVyT2JqZWN0
IDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8MT4gew0KcHVibGljOg0KICAgIHVz
aW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDE+Ow0KDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyB2b2lkIHN1YnNwYWNlRm9yKFZN
JikNCiAgICB7DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBj
b21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygzNywgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNXcmFwcGVy
T2JqZWN0LmgiLCAgX19GVU5DVElPTl9fICAsIDg1ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9
DQoNCiAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxp
bmVDYXBhY2l0eSkNCiAgICB7DQogICAgICAgICgodm9pZClpbmxpbmVDYXBhY2l0eSk7DQogICAg
ICAgIHJldHVybiBzaXplb2YoSlNXcmFwcGVyT2JqZWN0KTsNCiAgICB9DQoNCiAgICBlbnVtIGNs
YXNzIEZpZWxkIDogdWludDMyX3Qgew0KICAgICAgICBXcmFwcGVkVmFsdWUgPSAwLA0KICAgIH07
DQogICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVybmFsRmllbGRzID09IDEpOw0KDQogICAg
SlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3Q7DQogICAgdm9pZCBzZXRJbnRlcm5hbFZhbHVl
KFZNJiwgSlNWYWx1ZSk7DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IGludGVybmFsVmFsdWVPZmZz
ZXQoKSB7IHJldHVybiBvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEZpZWxkOjpXcmFwcGVkVmFsdWUpKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3QgaW50ZXJuYWxW
YWx1ZUNlbGxPZmZzZXQoKQ0KICAgIHsNCg0KICAgICAgICByZXR1cm4gaW50ZXJuYWxWYWx1ZU9m
ZnNldCgpOw0KDQoNCiNsaW5lIDYyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTV3JhcHBlck9iamVjdC5oIg0KICAgIH0NCg0KcHJv
dGVjdGVkOg0KICAgIGV4cGxpY2l0IEpTV3JhcHBlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOw0K
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsNCn07DQoNCmlubGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3Jh
cHBlck9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQ0KICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQ0Kew0KfQ0KDQppbmxpbmUgSlNWYWx1ZSBKU1dyYXBwZXJPYmplY3Q6OmludGVy
bmFsVmFsdWUoKSBjb25zdA0Kew0KICAgIHJldHVybiBpbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihGaWVsZDo6V3JhcHBlZFZhbHVlKSkuZ2V0KCk7DQp9DQoNCmlubGluZSB2b2lk
IEpTV3JhcHBlck9iamVjdDo6c2V0SW50ZXJuYWxWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUp
DQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICBpbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihGaWVsZDo6V3JhcHBlZFZhbHVlKSkuc2V0KHZtLCB0aGlzLCB2
YWx1ZSk7DQp9DQoNCn0gDQojbGluZSAyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxCb29sZWFuT2JqZWN0LmgiDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjbGFzcyBCb29sZWFuT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7
DQpwcm90ZWN0ZWQ6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEJvb2xlYW5PYmplY3QoVk0m
LCBTdHJ1Y3R1cmUqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOw0KDQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTV3JhcHBlck9iamVjdDsN
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPg0KICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHZtLmJvb2xlYW5PYmplY3RTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBCb29s
ZWFuT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICB7DQog
ICAgICAgIEJvb2xlYW5PYmplY3QqIGJvb2xlYW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxCb29sZWFuT2JqZWN0Pih2bS5oZWFwKSkgQm9vbGVhbk9iamVjdCh2bSwgc3RydWN0dXJlKTsN
CiAgICAgICAgYm9vbGVhbi0+ZmluaXNoQ3JlYXRpb24odm0pOw0KICAgICAgICByZXR1cm4gYm9v
bGVhbjsNCiAgICB9DQogICAgICAgIA0KICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZv
OyB9Ow0KICAgICAgICANCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkNCiAg
ICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsN
CiAgICB9DQoNCiAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0Kik7DQp9Ow0Kc3RhdGljX2Fzc2VydChzaXplb2YoQm9vbGVhbk9iamVj
dCkgPT0gc2l6ZW9mKEpTV3JhcHBlck9iamVjdCkpOw0KDQp9IA0KI2xpbmUgMjQgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQm9vbGVh
blByb3RvdHlwZS5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQm9vbGVhblByb3RvdHlw
ZSBmaW5hbCA6IHB1YmxpYyBCb29sZWFuT2JqZWN0IHsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNl
ID0gQm9vbGVhbk9iamVjdDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOw0K
DQogICAgc3RhdGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQ0KICAgIHsNCiAgICAgICAg
Qm9vbGVhblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
Qm9vbGVhblByb3RvdHlwZT4odm0uaGVhcCkpIEJvb2xlYW5Qcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7DQogICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
DQogICAgICAgIHJldHVybiBwcm90b3R5cGU7DQogICAgfQ0KICAgICAgICANCiAgICBwcm90ZWN0
ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZv
OyB9Ow0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0K
DQpwcml2YXRlOg0KICAgIEJvb2xlYW5Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsNCiAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsNCn07DQpzdGF0aWNfYXNz
ZXJ0KHNpemVvZihCb29sZWFuUHJvdG90eXBlKSA9PSBzaXplb2YoQm9vbGVhbk9iamVjdCkpOyBz
dGF0aWNfYXNzZXJ0KEJvb2xlYW5Qcm90b3R5cGU6OmRlc3Ryb3kgPT0gQm9vbGVhbk9iamVjdDo6
ZGVzdHJveSk7Ow0KDQp9IA0KI2xpbmUgMjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcRXJyb3JUeXBlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQplbnVtIGNsYXNzIEVycm9yVHlwZSA6IHVpbnQ4X3Qgew0KDQog
ICAgRXJyb3IsIEV2YWxFcnJvciwgUmFuZ2VFcnJvciwgUmVmZXJlbmNlRXJyb3IsIFN5bnRheEVy
cm9yLCBUeXBlRXJyb3IsIFVSSUVycm9yLCBBZ2dyZWdhdGVFcnJvciwNCg0KfTsNCg0KDQpzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIE51bWJlck9mRXJyb3JUeXBlIHsNCiAgICAxICsgMSArIDEg
KyAxICsgMSArIDEgKyAxICsgMSArIDANCn07DQoNCg0KZW51bSBjbGFzcyBFcnJvclR5cGVXaXRo
RXh0ZW5zaW9uIDogdWludDhfdCB7DQoNCiAgICBFcnJvciwgRXZhbEVycm9yLCBSYW5nZUVycm9y
LCBSZWZlcmVuY2VFcnJvciwgU3ludGF4RXJyb3IsIFR5cGVFcnJvciwgVVJJRXJyb3IsIEFnZ3Jl
Z2F0ZUVycm9yLCBPdXRPZk1lbW9yeUVycm9yLA0KDQp9Ow0KDQpBU0NJSUxpdGVyYWwgZXJyb3JU
eXBlTmFtZShFcnJvclR5cGUpOw0KQVNDSUlMaXRlcmFsIGVycm9yVHlwZU5hbWUoRXJyb3JUeXBl
V2l0aEV4dGVuc2lvbik7DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0
cmVhbTsNCg0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpFcnJvclR5cGUp
Ow0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpFcnJvclR5cGVXaXRoRXh0
ZW5zaW9uKTsNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEV4Y2VwdGlvbkhlbHBlcnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRXJyb3JJbnN0
YW5jZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcUnVudGltZVR5cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmVudW0gUnVudGltZVR5cGUgOiB1aW50MTZfdCB7DQogICAgVHlwZU5v
dGhpbmcgICAgICAgICAgICA9IDB4MCwNCiAgICBUeXBlRnVuY3Rpb24gICAgICAgICAgID0gMHgx
LA0KICAgIFR5cGVVbmRlZmluZWQgICAgICAgICAgPSAweDIsDQogICAgVHlwZU51bGwgICAgICAg
ICAgICAgICA9IDB4NCwNCiAgICBUeXBlQm9vbGVhbiAgICAgICAgICAgID0gMHg4LA0KICAgIFR5
cGVBbnlJbnQgICAgICAgICAgICAgPSAweDEwLA0KICAgIFR5cGVOdW1iZXIgICAgICAgICAgICAg
PSAweDIwLA0KICAgIFR5cGVTdHJpbmcgICAgICAgICAgICAgPSAweDQwLA0KICAgIFR5cGVPYmpl
Y3QgICAgICAgICAgICAgPSAweDgwLA0KICAgIFR5cGVTeW1ib2wgICAgICAgICAgICAgPSAweDEw
MCwNCiAgICBUeXBlQmlnSW50ICAgICAgICAgICAgID0gMHgyMDAsDQp9Ow0KDQp0eXBlZGVmIHVp
bnQxNl90IFJ1bnRpbWVUeXBlTWFzazsNCg0Kc3RhdGljIGNvbnN0IFJ1bnRpbWVUeXBlTWFzayBS
dW50aW1lVHlwZU1hc2tBbGxUeXBlcyA9IFR5cGVGdW5jdGlvbiB8IFR5cGVVbmRlZmluZWQgfCBU
eXBlTnVsbCB8IFR5cGVCb29sZWFuIHwgVHlwZUFueUludCB8IFR5cGVOdW1iZXIgfCBUeXBlU3Ry
aW5nIHwgVHlwZU9iamVjdCB8IFR5cGVTeW1ib2wgfCBUeXBlQmlnSW50Ow0KDQpjbGFzcyBKU1Zh
bHVlOw0KUnVudGltZVR5cGUgcnVudGltZVR5cGVGb3JWYWx1ZShWTSYsIEpTVmFsdWUpOw0KU3Ry
aW5nIHJ1bnRpbWVUeXBlQXNTdHJpbmcoUnVudGltZVR5cGUpOw0KDQpfX2ZvcmNlaW5saW5lIGJv
b2wgcnVudGltZVR5cGVJc1ByaW1pdGl2ZShSdW50aW1lVHlwZU1hc2sgdHlwZSkNCnsNCiAgICBy
ZXR1cm4gdHlwZSAmIH4oVHlwZUZ1bmN0aW9uIHwgVHlwZU9iamVjdCk7DQp9DQoNCn0gDQojbGlu
ZSAyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxFcnJvckluc3RhbmNlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN0YWNrRnJhbWUuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDb2RlQmxvY2s7DQpjbGFz
cyBKU09iamVjdDsNCmNsYXNzIFNsb3RWaXNpdG9yOw0KDQpjbGFzcyBTdGFja0ZyYW1lIHsNCnB1
YmxpYzoNCiAgICBTdGFja0ZyYW1lKFZNJiwgSlNDZWxsKiBvd25lciwgSlNDZWxsKiBjYWxsZWUp
Ow0KICAgIFN0YWNrRnJhbWUoVk0mLCBKU0NlbGwqIG93bmVyLCBKU0NlbGwqIGNhbGxlZSwgQ29k
ZUJsb2NrKiwgQnl0ZWNvZGVJbmRleCk7DQogICAgU3RhY2tGcmFtZShXYXNtOjpJbmRleE9yTmFt
ZSk7DQoNCiAgICBib29sIGhhc0xpbmVBbmRDb2x1bW5JbmZvKCkgY29uc3QgeyByZXR1cm4gISFt
X2NvZGVCbG9jazsgfQ0KICAgIA0KICAgIHZvaWQgY29tcHV0ZUxpbmVBbmRDb2x1bW4odW5zaWdu
ZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0Ow0KICAgIFN0cmluZyBmdW5jdGlvbk5h
bWUoVk0mKSBjb25zdDsNCiAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0Ow0KICAgIFN0cmlu
ZyBzb3VyY2VVUkwoKSBjb25zdDsNCiAgICBTdHJpbmcgdG9TdHJpbmcoVk0mKSBjb25zdDsNCg0K
ICAgIGJvb2wgaGFzQnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRl
eCAmJiAhbV9pc1dhc21GcmFtZTsgfQ0KICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCgp
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX2J5dGVjb2RlSW5k
ZXg7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOw0K
ICAgIGJvb2wgaXNNYXJrZWQoVk0mIHZtKSBjb25zdCB7IHJldHVybiAoIW1fY2FsbGVlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobV9jYWxsZWUuZ2V0KCkpKSAmJiAoIW1fY29kZUJsb2NrIHx8IHZtLmhl
YXAuaXNNYXJrZWQobV9jb2RlQmxvY2suZ2V0KCkpKTsgfQ0KDQpwcml2YXRlOg0KICAgIFdyaXRl
QmFycmllcjxKU0NlbGw+IG1fY2FsbGVlIHsgfTsNCiAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2Nr
PiBtX2NvZGVCbG9jayB7IH07DQogICAgV2FzbTo6SW5kZXhPck5hbWUgbV93YXNtRnVuY3Rpb25J
bmRleE9yTmFtZTsNCiAgICBCeXRlY29kZUluZGV4IG1fYnl0ZWNvZGVJbmRleDsNCiAgICBib29s
IG1faXNXYXNtRnJhbWUgeyBmYWxzZSB9Ow0KfTsNCg0KfSANCg0KI2xpbmUgMjYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRXJyb3JJ
bnN0YW5jZS5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgRXJyb3JJbnN0YW5jZSA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNOb25G
aW5hbE9iamVjdDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBP
dmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsNCg0KICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQ0KICAgIHsNCiAgICAgICAgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+
KGNlbGwpLT5FcnJvckluc3RhbmNlOjp+RXJyb3JJbnN0YW5jZSgpOw0KICAgIH0NCg0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPg0KICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHZtLmVycm9ySW5zdGFuY2VTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIGVudW0gU291cmNl
VGV4dFdoZXJlRXJyb3JPY2N1cnJlZCB7IEZvdW5kRXhhY3RTb3VyY2UsIEZvdW5kQXBwcm94aW1h
dGVTb3VyY2UgfTsNCiAgICB0eXBlZGVmIFN0cmluZyAoKlNvdXJjZUFwcGVuZGVyKSAoY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGlt
ZVR5cGUsIFNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQpOw0KDQogICAgcHJvdGVjdGVkOiBz
dGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZv
OyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygp
IHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEVycm9ySW5zdGFuY2VUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7DQogICAgfQ0KDQogICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gbnVs
bHB0ciwgUnVudGltZVR5cGUgdHlwZSA9IFR5cGVOb3RoaW5nLCBib29sIHVzZUN1cnJlbnRGcmFt
ZSA9IHRydWUpDQogICAgew0KICAgICAgICBFcnJvckluc3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KHZtLmhlYXApKSBFcnJvckluc3Rh
bmNlKHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCwgbWVzc2FnZSwgYXBwZW5kZXIsIHR5cGUsIHVzZUN1cnJlbnRGcmFtZSk7
DQogICAgICAgIHJldHVybiBpbnN0YW5jZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgRXJyb3JJbnN0
YW5jZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBtZXNzYWdl
LCBTb3VyY2VBcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBlID0gVHlwZU5vdGhpbmcsIGJv
b2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZSk7DQoNCiAgICBib29sIGhhc1NvdXJjZUFwcGVuZGVy
KCkgY29uc3QgeyByZXR1cm4gISFtX3NvdXJjZUFwcGVuZGVyOyB9DQogICAgU291cmNlQXBwZW5k
ZXIgc291cmNlQXBwZW5kZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUFwcGVuZGVyOyB9DQog
ICAgdm9pZCBzZXRTb3VyY2VBcHBlbmRlcihTb3VyY2VBcHBlbmRlciBhcHBlbmRlcikgeyBtX3Nv
dXJjZUFwcGVuZGVyID0gYXBwZW5kZXI7IH0NCiAgICB2b2lkIGNsZWFyU291cmNlQXBwZW5kZXIo
KSB7IG1fc291cmNlQXBwZW5kZXIgPSBudWxscHRyOyB9DQogICAgdm9pZCBzZXRSdW50aW1lVHlw
ZUZvckNhdXNlKFJ1bnRpbWVUeXBlIHR5cGUpIHsgbV9ydW50aW1lVHlwZUZvckNhdXNlID0gdHlw
ZTsgfQ0KICAgIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlRm9yQ2F1c2UoKSBjb25zdCB7IHJldHVy
biBtX3J1bnRpbWVUeXBlRm9yQ2F1c2U7IH0NCiAgICB2b2lkIGNsZWFyUnVudGltZVR5cGVGb3JD
YXVzZSgpIHsgbV9ydW50aW1lVHlwZUZvckNhdXNlID0gVHlwZU5vdGhpbmc7IH0NCg0KICAgIHZv
aWQgc2V0U3RhY2tPdmVyZmxvd0Vycm9yKCkgeyBtX3N0YWNrT3ZlcmZsb3dFcnJvciA9IHRydWU7
IH0NCiAgICBib29sIGlzU3RhY2tPdmVyZmxvd0Vycm9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGFj
a092ZXJmbG93RXJyb3I7IH0NCiAgICB2b2lkIHNldE91dE9mTWVtb3J5RXJyb3IoKSB7IG1fb3V0
T2ZNZW1vcnlFcnJvciA9IHRydWU7IH0NCiAgICBib29sIGlzT3V0T2ZNZW1vcnlFcnJvcigpIGNv
bnN0IHsgcmV0dXJuIG1fb3V0T2ZNZW1vcnlFcnJvcjsgfQ0KDQogICAgdm9pZCBzZXROYXRpdmVH
ZXR0ZXJUeXBlRXJyb3IoKSB7IG1fbmF0aXZlR2V0dGVyVHlwZUVycm9yID0gdHJ1ZTsgfQ0KICAg
IGJvb2wgaXNOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUdl
dHRlclR5cGVFcnJvcjsgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFN0cmluZyBzYW5p
dGl6ZWRUb1N0cmluZyhKU0dsb2JhbE9iamVjdCopOw0KICAgIA0KICAgIFZlY3RvcjxTdGFja0Zy
YW1lPiogc3RhY2tUcmFjZSgpIHsgcmV0dXJuIG1fc3RhY2tUcmFjZS5nZXQoKTsgfQ0KDQogICAg
Ym9vbCBtYXRlcmlhbGl6ZUVycm9ySW5mb0lmTmVlZGVkKFZNJik7DQogICAgYm9vbCBtYXRlcmlh
bGl6ZUVycm9ySW5mb0lmTmVlZGVkKFZNJiwgUHJvcGVydHlOYW1lKTsNCg0KICAgIHZvaWQgZmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsNCg0KcHJvdGVjdGVkOg0KICAgIGV4cGxpY2l0IEVy
cm9ySW5zdGFuY2UoVk0mLCBTdHJ1Y3R1cmUqKTsNCg0KICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGVuZGVyID0gbnVs
bHB0ciwgUnVudGltZVR5cGUgPSBUeXBlTm90aGluZywgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSB0
cnVlKTsNCg0KICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBzdGF0aWMg
dm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsNCiAgICBzdGF0aWMgdm9p
ZCBnZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQogICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7DQogICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsNCiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7
DQogICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCopOw0KDQogICAgdm9pZCBjb21wdXRlRXJyb3JJbmZvKFZNJik7DQoNCiAgICBTb3Vy
Y2VBcHBlbmRlciBtX3NvdXJjZUFwcGVuZGVyIHsgbnVsbHB0ciB9Ow0KICAgIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IG1fc3RhY2tUcmFjZTsNCiAgICB1bnNpZ25lZCBtX2xp
bmU7DQogICAgdW5zaWduZWQgbV9jb2x1bW47DQogICAgU3RyaW5nIG1fc291cmNlVVJMOw0KICAg
IFN0cmluZyBtX3N0YWNrU3RyaW5nOw0KICAgIFJ1bnRpbWVUeXBlIG1fcnVudGltZVR5cGVGb3JD
YXVzZSB7IFR5cGVOb3RoaW5nIH07DQogICAgYm9vbCBtX3N0YWNrT3ZlcmZsb3dFcnJvciB7IGZh
bHNlIH07DQogICAgYm9vbCBtX291dE9mTWVtb3J5RXJyb3IgeyBmYWxzZSB9Ow0KICAgIGJvb2wg
bV9lcnJvckluZm9NYXRlcmlhbGl6ZWQgeyBmYWxzZSB9Ow0KICAgIGJvb2wgbV9uYXRpdmVHZXR0
ZXJUeXBlRXJyb3IgeyBmYWxzZSB9Ow0KfTsNCg0KfSANCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEV4Y2VwdGlvbkhl
bHBlcnMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcRXhjZXB0aW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnN0
cnVjdCBDbGFzc0luZm87DQoNCmNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3Qgew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2Jq
ZWN0Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVl
Ow0KICAgIA0KICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc0luZm87IH0NCg0KcHJvdGVjdGVkOg0KICAgIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbnVsbHB0
cikNCiAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSkN
CiAgICAgICAgLCBtX2NsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKQ0KICAgIHsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBjb25zdCBDbGFzc0luZm8q
IG1fY2xhc3NJbmZvOw0KfTsNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEV4Y2VwdGlvbi5oIg0KDQoNCg0K
bmFtZXNwYWNlIEpTQyB7DQogICAgDQpjbGFzcyBFeGNlcHRpb24gZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNDZWxsOw0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0
cnVjdHVyZUlzSW1tb3J0YWw7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzIG1vZGU+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
DQogICAgew0KICAgICAgICByZXR1cm4gJnZtLmV4Y2VwdGlvblNwYWNlOw0KICAgIH0NCg0KICAg
IGVudW0gU3RhY2tDYXB0dXJlQWN0aW9uIHsNCiAgICAgICAgQ2FwdHVyZVN0YWNrLA0KICAgICAg
ICBEb05vdENhcHR1cmVTdGFjaw0KICAgIH07DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0
YXRpYyBFeGNlcHRpb24qIGNyZWF0ZShWTSYsIEpTVmFsdWUgdGhyb3duVmFsdWUsIFN0YWNrQ2Fw
dHVyZUFjdGlvbiA9IENhcHR1cmVTdGFjayk7DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsNCg0K
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0K
ICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpD
bGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgc3RhdGljIHB0cmRp
ZmZfdCB2YWx1ZU9mZnNldCgpDQogICAgew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nh
c3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RXhjZXB0aW9uKj4oMHg0MDAwKS0+bV92
YWx1ZSkpIC0gMHg0MDAwKTsNCiAgICB9DQoNCiAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQ0KICAgIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3Rh
Y2soKSBjb25zdCB7IHJldHVybiBtX3N0YWNrOyB9DQoNCiAgICBib29sIGRpZE5vdGlmeUluc3Bl
Y3Rvck9mVGhyb3coKSBjb25zdCB7IHJldHVybiBtX2RpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3c7
IH0NCiAgICB2b2lkIHNldERpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3coKSB7IG1fZGlkTm90aWZ5
SW5zcGVjdG9yT2ZUaHJvdyA9IHRydWU7IH0NCg0KICAgIH5FeGNlcHRpb24oKTsNCg0KcHJpdmF0
ZToNCiAgICBFeGNlcHRpb24oVk0mKTsNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNW
YWx1ZSB0aHJvd25WYWx1ZSwgU3RhY2tDYXB0dXJlQWN0aW9uKTsNCiAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOw0KDQogICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fdmFsdWU7DQog
ICAgVmVjdG9yPFN0YWNrRnJhbWU+IG1fc3RhY2s7DQogICAgYm9vbCBtX2RpZE5vdGlmeUluc3Bl
Y3Rvck9mVGhyb3cgeyBmYWxzZSB9Ow0KDQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsNCn07DQoNCn0gDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxFeGNlcHRpb25IZWxwZXJzLmgiDQoNCg0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KdHlwZWRlZiBKU09iamVjdCogKCpFcnJvckZhY3RvcnkpKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5k
ZXIpOw0KDQpTdHJpbmcgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJv
ck9jY3VycmVkKTsNCg0KSlNPYmplY3QqIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24oVk0qKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIGlzVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihWTSYsIEV4Y2VwdGlvbiopOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2Jq
ZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIGNvbnN0IFN0cmluZyYs
IEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBK
U09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7DQpKU09i
amVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0
IElkZW50aWZpZXImKTsNCkpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCop
Ow0KSlNPYmplY3QqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsNCkpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9y
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7DQpKU09iamVjdCogY3JlYXRlSW52YWxpZEluUGFy
YW1ldGVyRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsNCkpTT2JqZWN0KiBjcmVhdGVJ
bnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsNCkpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVy
cm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
DQpKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsNCkpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOw0KSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2ln
bm1lbnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsNCkpTT2JqZWN0KiBjcmVhdGVJ
bnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOw0KSlNPYmplY3QqIGNyZWF0
ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsNClN0cmluZyBlcnJv
ckRlc2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsNCg0KX19kZWNs
c3BlYyhkbGxleHBvcnQpIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFs
T2JqZWN0KiwgVGhyb3dTY29wZSYpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEV4Y2VwdGlvbiog
dGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNvbnN0
IFN0cmluZyYpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEV4Y2VwdGlvbiogdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7DQpfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgRXhjZXB0aW9uKiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNH
bG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7DQoNCg0KY2xhc3MgVGVybWluYXRlZEV4ZWN1dGlv
bkVycm9yIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgew0KcHVibGljOg0KICAgIHVz
aW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1t
b3J0YWw7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IpID09IHNp
emVvZihCYXNlKSk7IHN0YXRpY19hc3NlcnQoVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpkZXN0
cm95ID09IEJhc2U6OmRlc3Ryb3kpOzsNCiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOw0KICAgIH0NCg0KICAgIHN0YXRpYyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGNyZWF0
ZShWTSYgdm0pDQogICAgew0KICAgICAgICBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPih2
bS5oZWFwKSkgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKHZtKTsNCiAgICAgICAgZXJyb3ItPmZp
bmlzaENyZWF0aW9uKHZtKTsNCiAgICAgICAgcmV0dXJuIGVycm9yOw0KICAgIH0NCg0KICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHByb3RlY3Rl
ZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNf
aW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGlu
Zm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQpwcml2YXRlOg0KICAgIGV4cGxpY2l0IFRlcm1p
bmF0ZWRFeGVjdXRpb25FcnJvcihWTSYgdm0pDQogICAgICAgIDogSlNOb25GaW5hbE9iamVjdCh2
bSwgdm0udGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLmdldCgpKQ0KICAgIHsNCiAg
ICB9DQoNCiAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOw0KDQp9Ow0KDQp9IA0KI2xp
bmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxJbnRlcm5hbEZ1bmN0aW9u
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsNCg0KY2xhc3MgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsN
CiAgICBmcmllbmQgY2xhc3MgSklUOw0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7DQogICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSB8IE92ZXJyaWRlc0dldENhbGxEYXRhOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2VsbFR5cGUp
ID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSwgIkludGVybmFsRnVuY3Rpb24gc3ViY2xhc3Nl
cyB0aGF0IGFkZCBmaWVsZHMgbmVlZCB0byBvdmVycmlkZSBzdWJzcGFjZUZvcjw+KCkiKTsNCiAg
ICAgICAgcmV0dXJuICZ2bS5pbnRlcm5hbEZ1bmN0aW9uU3BhY2U7DQogICAgfQ0KDQogICAgcHJv
dGVjdGVkOiBzdGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0lu
Zm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5m
byogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KDQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IFN0cmluZyYgbmFtZSgpOw0KICAgIGNvbnN0
IFN0cmluZyBkaXNwbGF5TmFtZShWTSYpOw0KICAgIGNvbnN0IFN0cmluZyBjYWxjdWxhdGVkRGlz
cGxheU5hbWUoVk0mKTsNCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pDQogICAg
eyANCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOyANCiAgICB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogbmV3
VGFyZ2V0LCBTdHJ1Y3R1cmUqKTsNCg0KICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1
bmN0aW9uRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkNCiAgICB7DQogICAgICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKQ0KICAgICAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25Gb3JD
YWxsOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX2Z1bmN0aW9uRm9yQ29u
c3RydWN0Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOYXRpdmVGdW5j
dGlvbkZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpDQogICAgew0KICAgICAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkNCiAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oMHg0MDAw
KS0+bV9mdW5jdGlvbkZvckNhbGwpKSAtIDB4NDAwMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9j
YXN0PEludGVybmFsRnVuY3Rpb24qPigweDQwMDApLT5tX2Z1bmN0aW9uRm9yQ29uc3RydWN0KSkg
LSAweDQwMDApOw0KICAgIH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZf
dD4oJihyZWludGVycHJldF9jYXN0PEludGVybmFsRnVuY3Rpb24qPigweDQwMDApLT5tX2dsb2Jh
bE9iamVjdCkpIC0gMHg0MDAwKTsNCiAgICB9DQoNCiAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0NCg0KcHJvdGVj
dGVkOg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBJbnRlcm5hbEZ1bmN0aW9uKFZNJiwgU3Ry
dWN0dXJlKiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25Gb3JDYWxsLCBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbkZvckNvbnN0cnVjdCk7DQoNCiAgICBlbnVtIGNsYXNzIE5hbWVBZGRpdGlvbk1vZGUg
eyBXaXRoU3RydWN0dXJlVHJhbnNpdGlvbiwgV2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24gfTsN
CiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgTmFtZUFkZGl0aW9uTW9kZSA9IE5hbWVBZGRpdGlvbk1vZGU6OldpdGhT
dHJ1Y3R1cmVUcmFuc2l0aW9uKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMg
Q2FsbERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgc3RhdGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOw0KDQogICAgVGFnZ2Vk
TmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNhbGw7DQogICAgVGFnZ2VkTmF0aXZlRnVuY3Rp
b24gbV9mdW5jdGlvbkZvckNvbnN0cnVjdDsNCiAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1f
b3JpZ2luYWxOYW1lOw0KICAgIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxP
YmplY3Q7DQp9Ow0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNHbG9iYWxPYmplY3QqIGdldEZ1
bmN0aW9uUmVhbG0oVk0mLCBKU09iamVjdCopOw0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxP
YmplY3QuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9
IEpTTm9uRmluYWxPYmplY3Q7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
DQogICAgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihKU0FycmF5QnVmZmVyUHJvdG90
eXBlKSA9PSBzaXplb2YoQmFzZSkpOyBzdGF0aWNfYXNzZXJ0KEpTQXJyYXlCdWZmZXJQcm90b3R5
cGU6OmRlc3Ryb3kgPT0gQmFzZTo6ZGVzdHJveSk7Ow0KICAgICAgICByZXR1cm4gJnZtLnBsYWlu
T2JqZWN0U3BhY2U7DQogICAgfQ0KDQogICAgc3RhdGljIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlCdWZmZXJTaGFy
aW5nTW9kZSA9IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpOw0KICAgIA0KICAgIHBy
b3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZz
X2luZm87IH07DQogICAgDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7DQoNCnByaXZhdGU6DQogICAg
SlNBcnJheUJ1ZmZlclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOw0KICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOw0K
fTsNCg0KfSANCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXEFQSVxcSlNDbGFzc1Jl
Zi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXEFQSVxcT3BhcXVlSlNTdHJpbmcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCiAg
ICBjbGFzcyBJZGVudGlmaWVyOw0KICAgIGNsYXNzIFZNOw0KfQ0KDQpzdHJ1Y3QgT3BhcXVlSlNT
dHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsNCiAg
ICBzdGF0aWMgUmVmPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUoKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNTdHJpbmcpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBS
ZWY8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZShjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNT
dHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7DQogICAgfQ0KDQogICAgc3RhdGljIFJlZjxPcGFx
dWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpDQogICAgew0KICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPcGFxdWVKU1N0cmluZyhj
aGFyYWN0ZXJzLCBsZW5ndGgpKTsNCiAgICB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
c3RhdGljIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gdHJ5Q3JlYXRlKGNvbnN0IFN0cmluZyYpOw0K
ICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiB0
cnlDcmVhdGUoU3RyaW5nJiYpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIH5PcGFxdWVK
U1N0cmluZygpOw0KDQogICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiBtX3N0cmluZy5pczhCaXQo
KTsgfQ0KICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIHsgcmV0dXJuIG1fc3RyaW5nLmNo
YXJhY3RlcnM4KCk7IH0NCiAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgeyByZXR1cm4g
bV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7IH0NCiAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVy
biBtX3N0cmluZy5sZW5ndGgoKTsgfQ0KDQogICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKTsN
Cg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBTdHJpbmcgc3RyaW5nKCkgY29uc3Q7DQogICAg
SlNDOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoSlNDOjpWTSopIGNvbnN0Ow0KDQogICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgT3BhcXVlSlNTdHJpbmcqLCBjb25zdCBPcGFxdWVKU1N0cmluZyop
Ow0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVk
PE9wYXF1ZUpTU3RyaW5nPjsNCg0KICAgIE9wYXF1ZUpTU3RyaW5nKCkNCiAgICAgICAgOiBtX2No
YXJhY3RlcnMobnVsbHB0cikNCiAgICB7DQogICAgfQ0KDQogICAgT3BhcXVlSlNTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpDQogICAgICAgIDogbV9zdHJpbmcoc3RyaW5nLmlzb2xhdGVkQ29w
eSgpKQ0KICAgICAgICAsIG1fY2hhcmFjdGVycyhtX3N0cmluZy5pbXBsKCkgJiYgbV9zdHJpbmcu
aXM4Qml0KCkgPyBudWxscHRyIDogY29uc3RfY2FzdDxVQ2hhcio+KG1fc3RyaW5nLmNoYXJhY3Rl
cnMxNigpKSkNCiAgICB7DQogICAgfQ0KDQogICAgZXhwbGljaXQgT3BhcXVlSlNTdHJpbmcoU3Ry
aW5nJiYgc3RyaW5nKQ0KICAgICAgICA6IG1fc3RyaW5nKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4oc3RyaW5nKSkNCiAgICAgICAgLCBtX2NoYXJhY3RlcnMobV9zdHJpbmcuaW1w
bCgpICYmIG1fc3RyaW5nLmlzOEJpdCgpID8gbnVsbHB0ciA6IGNvbnN0X2Nhc3Q8VUNoYXIqPiht
X3N0cmluZy5jaGFyYWN0ZXJzMTYoKSkpDQogICAgew0KICAgIH0NCg0KICAgIE9wYXF1ZUpTU3Ry
aW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpDQogICAgICAgIDog
bV9zdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKQ0KICAgICAgICAsIG1fY2hhcmFjdGVycyhudWxs
cHRyKQ0KICAgIHsNCiAgICB9DQoNCiAgICBPcGFxdWVKU1N0cmluZyhjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQ0KICAgICAgICA6IG1fc3RyaW5nKGNoYXJhY3RlcnMs
IGxlbmd0aCkNCiAgICAgICAgLCBtX2NoYXJhY3RlcnMobV9zdHJpbmcuaW1wbCgpICYmIG1fc3Ry
aW5nLmlzOEJpdCgpID8gbnVsbHB0ciA6IGNvbnN0X2Nhc3Q8VUNoYXIqPihtX3N0cmluZy5jaGFy
YWN0ZXJzMTYoKSkpDQogICAgew0KICAgIH0NCg0KICAgIFN0cmluZyBtX3N0cmluZzsNCg0KICAg
IA0KICAgIHN0ZDo6YXRvbWljPFVDaGFyKj4gbV9jaGFyYWN0ZXJzOw0KfTsNCg0KI2xpbmUgMTEw
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXEFQSVxc
T3BhcXVlSlNTdHJpbmcuaCINCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXEFQSVxcSlNDbGFzc1JlZi5oIg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxQcm90
ZWN0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQppbmxpbmUgdm9pZCBnY1Byb3RlY3QoSlND
ZWxsKiB2YWwpIA0Kew0KICAgIEhlYXA6OmhlYXAodmFsKS0+cHJvdGVjdCh2YWwpOw0KfQ0KDQpp
bmxpbmUgdm9pZCBnY1VucHJvdGVjdChKU0NlbGwqIHZhbCkNCnsNCiAgICBIZWFwOjpoZWFwKHZh
bCktPnVucHJvdGVjdCh2YWwpOw0KfQ0KDQppbmxpbmUgdm9pZCBnY1Byb3RlY3ROdWxsVG9sZXJh
bnQoSlNDZWxsKiB2YWwpIA0Kew0KICAgIGlmICh2YWwpIA0KICAgICAgICBnY1Byb3RlY3QodmFs
KTsNCn0NCg0KaW5saW5lIHZvaWQgZ2NVbnByb3RlY3ROdWxsVG9sZXJhbnQoSlNDZWxsKiB2YWwp
IA0Kew0KICAgIGlmICh2YWwpIA0KICAgICAgICBnY1VucHJvdGVjdCh2YWwpOw0KfQ0KDQppbmxp
bmUgdm9pZCBnY1Byb3RlY3QoSlNWYWx1ZSB2YWx1ZSkNCnsNCiAgICBpZiAodmFsdWUgJiYgdmFs
dWUuaXNDZWxsKCkpDQogICAgICAgIGdjUHJvdGVjdCh2YWx1ZS5hc0NlbGwoKSk7DQp9DQoNCmlu
bGluZSB2b2lkIGdjVW5wcm90ZWN0KEpTVmFsdWUgdmFsdWUpDQp7DQogICAgaWYgKHZhbHVlICYm
IHZhbHVlLmlzQ2VsbCgpKQ0KICAgICAgICBnY1VucHJvdGVjdCh2YWx1ZS5hc0NlbGwoKSk7DQp9
DQoNCn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxBUElcXEpTQ2xhc3NSZWYuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3Jp
cHRDb3JlL0pTT2JqZWN0UmVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxKYXZhU2NyaXB0Q29yZVxcSGVhZGVyc1xcSmF2YVNjcmlwdENvcmUv
SlNWYWx1ZVJlZi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXEphdmFTY3JpcHRDb3JlXFxIZWFkZXJzXFxKYXZhU2NyaXB0Q29yZS9XZWJLaXRBdmFp
bGFiaWxpdHkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3Jp
cHRDb3JlL1dlYktpdEF2YWlsYWJpbGl0eS5oIg0KDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3Jp
cHRDb3JlL1dlYktpdEF2YWlsYWJpbGl0eS5oIg0KDQojbGluZSA0NCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3Jp
cHRDb3JlL1dlYktpdEF2YWlsYWJpbGl0eS5oIg0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXEphdmFTY3JpcHRDb3JlXFxIZWFkZXJzXFxKYXZhU2NyaXB0
Q29yZS9KU1ZhbHVlUmVmLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVk
ZWYgZW51bSB7DQogICAga0pTVHlwZVVuZGVmaW5lZCwNCiAgICBrSlNUeXBlTnVsbCwNCiAgICBr
SlNUeXBlQm9vbGVhbiwNCiAgICBrSlNUeXBlTnVtYmVyLA0KICAgIGtKU1R5cGVTdHJpbmcsDQog
ICAga0pTVHlwZU9iamVjdCwNCiAgICBrSlNUeXBlU3ltYm9sIA0KfSBKU1R5cGU7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBlbnVtIHsNCiAgICBrSlNUeXBlZEFy
cmF5VHlwZUludDhBcnJheSwNCiAgICBrSlNUeXBlZEFycmF5VHlwZUludDE2QXJyYXksDQogICAg
a0pTVHlwZWRBcnJheVR5cGVJbnQzMkFycmF5LA0KICAgIGtKU1R5cGVkQXJyYXlUeXBlVWludDhB
cnJheSwNCiAgICBrSlNUeXBlZEFycmF5VHlwZVVpbnQ4Q2xhbXBlZEFycmF5LA0KICAgIGtKU1R5
cGVkQXJyYXlUeXBlVWludDE2QXJyYXksDQogICAga0pTVHlwZWRBcnJheVR5cGVVaW50MzJBcnJh
eSwNCiAgICBrSlNUeXBlZEFycmF5VHlwZUZsb2F0MzJBcnJheSwNCiAgICBrSlNUeXBlZEFycmF5
VHlwZUZsb2F0NjRBcnJheSwNCiAgICBrSlNUeXBlZEFycmF5VHlwZUFycmF5QnVmZmVyLA0KICAg
IGtKU1R5cGVkQXJyYXlUeXBlTm9uZSwNCn0gSlNUeXBlZEFycmF5VHlwZSA7DQoNCg0KZXh0ZXJu
ICJDIiB7DQojbGluZSA5MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
SmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaCINCg0K
DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNUeXBlIEpTVmFsdWVHZXRUeXBl
KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCl9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIEpTVmFsdWVJc1VuZGVmaW5lZChKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgYm9vbCBKU1ZhbHVlSXNOdWxsKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFs
dWUpOw0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIEpTVmFsdWVJ
c0Jvb2xlYW4oSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSk7DQoNCg0KDQoNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgSlNWYWx1ZUlzTnVtYmVyKEpTQ29udGV4
dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOw0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBib29sIEpTVmFsdWVJc1N0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBK
U1ZhbHVlSXNTeW1ib2woSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSkgOw0KDQoN
Cg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIEpTVmFsdWVJc09iamVjdChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
X19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRl
eHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU0NsYXNzUmVmIGpzQ2xhc3MpOw0KDQoNCg0K
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIEpTVmFsdWVJc0FycmF5KEpTQ29u
dGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpIDsNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgYm9vbCBKU1ZhbHVlSXNEYXRlKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFs
dWVSZWYgdmFsdWUpIDsNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBK
U1R5cGVkQXJyYXlUeXBlIEpTVmFsdWVHZXRUeXBlZEFycmF5VHlwZShKU0NvbnRleHRSZWYgY3R4
LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIDsNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIEpTVmFsdWVJc0VxdWFsKEpT
Q29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgYSwgSlNWYWx1ZVJlZiBiLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pOw0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wg
SlNWYWx1ZUlzU3RyaWN0RXF1YWwoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhLCBKU1Zh
bHVlUmVmIGIpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9v
bCBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1
ZVJlZiB2YWx1ZSwgSlNPYmplY3RSZWYgY29uc3RydWN0b3IsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bik7DQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZVJlZiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChKU0NvbnRleHRSZWYgY3R4KTsNCg0KDQoNCg0KDQoNCg0KX19k
ZWNsc3BlYyhkbGxleHBvcnQpIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdWxsKEpTQ29udGV4dFJl
ZiBjdHgpOw0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlUmVm
IEpTVmFsdWVNYWtlQm9vbGVhbihKU0NvbnRleHRSZWYgY3R4LCBib29sIGJvb2xlYW4pOw0KDQoN
Cg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
TnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIGRvdWJsZSBudW1iZXIpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlND
b250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKTsNCg0KDQoNCg0KDQoNCg0KDQpfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN5bWJvbChKU0NvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbikgOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5n
KEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykgOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05T
dHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgdW5zaWduZWQgaW5kZW50
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxleHBvcnQpIGJvb2wgSlNWYWx1ZVRvQm9vbGVhbihKU0NvbnRleHRSZWYgY3R4LCBKU1Zh
bHVlUmVmIHZhbHVlKTsNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBk
b3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7DQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgSlNTdHJpbmdSZWYgSlNWYWx1ZVRvU3RyaW5nQ29weShKU0NvbnRleHRSZWYgY3R4
LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOw0KDQoNCg0KDQoNCg0K
DQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChK
U0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIEpTVmFs
dWVQcm90ZWN0KEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgdmFsdWUpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgSlNWYWx1ZVVucHJvdGVjdChKU0Nv
bnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlKTsNCg0KDQp9DQojbGluZSAzNzkgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXEphdmFTY3JpcHRDb3JlXFxIZWFkZXJz
XFxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmgiDQoNCiNsaW5lIDM4MSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNcXEphdmFT
Y3JpcHRDb3JlL0pTVmFsdWVSZWYuaCINCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxKYXZhU2NyaXB0Q29yZVxcSGVhZGVyc1xcSmF2YVNjcmlwdENvcmUv
SlNPYmplY3RSZWYuaCINCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gIkMiIHsNCiNsaW5lIDQyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxKYXZhU2NyaXB0Q29yZVxcSGVh
ZGVyc1xcSmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaCINCg0KDQoNCg0KDQoNCg0KDQplbnVt
IHsgDQogICAga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lICAgICAgICAgPSAwLA0KICAgIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgICAgID0gMSA8PCAxLA0KICAgIGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udEVudW0gICAgID0gMSA8PCAyLA0KICAgIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSAgID0gMSA8PCAzDQp9Ow0KDQoNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgSlNQcm9w
ZXJ0eUF0dHJpYnV0ZXM7DQoNCg0KDQoNCg0KDQplbnVtIHsgDQogICAga0pTQ2xhc3NBdHRyaWJ1
dGVOb25lID0gMCwNCiAgICBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJvdG90eXBlID0g
MSA8PCAxDQp9Ow0KDQoNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgSlNDbGFzc0F0dHJpYnV0ZXM7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdm9pZA0KKCpKU09iamVjdEluaXRp
YWxpemVDYWxsYmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCk7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgdm9pZCAgICAgICAgICAgIA0K
KCpKU09iamVjdEZpbmFsaXplQ2FsbGJhY2spIChKU09iamVjdFJlZiBvYmplY3QpOw0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBib29sDQooKkpTT2JqZWN0SGFz
UHJvcGVydHlDYWxsYmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwg
SlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CnR5cGVkZWYgSlNWYWx1ZVJlZg0KKCpKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2spIChKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KdHlwZWRlZiBib29sDQooKkpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjaykgKEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBib29sDQooKkpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxs
YmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KdHlwZWRlZiB2b2lkDQooKkpTT2JqZWN0R2V0UHJvcGVydHlOYW1lc0NhbGxi
YWNrKSAoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1Byb3BlcnR5TmFt
ZUFjY3VtdWxhdG9yUmVmIHByb3BlcnR5TmFtZXMpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQp0eXBlZGVmIEpTVmFsdWVSZWYgDQooKkpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b25DYWxsYmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgSlNPYmplY3RSZWYgDQooKkpTT2JqZWN0Q2FsbEFz
Q29uc3RydWN0b3JDYWxsYmFjaykgKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGNvbnN0
cnVjdG9yLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KdHlwZWRlZiBib29sIA0KKCpKU09iamVjdEhhc0luc3RhbmNlQ2FsbGJhY2spICAo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgY29uc3RydWN0b3IsIEpTVmFsdWVSZWYgcG9z
c2libGVJbnN0YW5jZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIEpTVmFsdWVSZWYNCigqSlNPYmplY3RDb252ZXJ0VG9U
eXBlQ2FsbGJhY2spIChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTVHlw
ZSB0eXBlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOw0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRl
ZiBzdHJ1Y3Qgew0KICAgIGNvbnN0IGNoYXIqIG5hbWU7DQogICAgSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIGdldFByb3BlcnR5Ow0KICAgIEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eTsNCiAgICBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzOw0KfSBKU1N0
YXRpY1ZhbHVlOw0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0IHsNCiAgICBjb25zdCBj
aGFyKiBuYW1lOw0KICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5j
dGlvbjsNCiAgICBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzOw0KfSBKU1N0YXRpY0Z1
bmN0aW9uOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdCB7DQogICAgaW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsgDQogICAgSlNDbGFzc0F0dHJpYnV0ZXMgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlczsNCg0KICAgIGNvbnN0IGNoYXIqICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsYXNzTmFtZTsNCiAgICBKU0NsYXNzUmVmICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJlbnRDbGFzczsNCiAgICAgICAgDQogICAgY29uc3QgSlNTdGF0aWNWYWx1ZSog
ICAgICAgICAgICAgICAgc3RhdGljVmFsdWVzOw0KICAgIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24q
ICAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9uczsNCiAgICANCiAgICBKU09iamVjdEluaXRpYWxp
emVDYWxsYmFjayAgICAgICAgICBpbml0aWFsaXplOw0KICAgIEpTT2JqZWN0RmluYWxpemVDYWxs
YmFjayAgICAgICAgICAgIGZpbmFsaXplOw0KICAgIEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFj
ayAgICAgICAgIGhhc1Byb3BlcnR5Ow0KICAgIEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayAg
ICAgICAgIGdldFByb3BlcnR5Ow0KICAgIEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayAgICAg
ICAgIHNldFByb3BlcnR5Ow0KICAgIEpTT2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayAgICAg
IGRlbGV0ZVByb3BlcnR5Ow0KICAgIEpTT2JqZWN0R2V0UHJvcGVydHlOYW1lc0NhbGxiYWNrICAg
IGdldFByb3BlcnR5TmFtZXM7DQogICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrICAg
ICAgY2FsbEFzRnVuY3Rpb247DQogICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNr
ICAgY2FsbEFzQ29uc3RydWN0b3I7DQogICAgSlNPYmplY3RIYXNJbnN0YW5jZUNhbGxiYWNrICAg
ICAgICAgaGFzSW5zdGFuY2U7DQogICAgSlNPYmplY3RDb252ZXJ0VG9UeXBlQ2FsbGJhY2sgICAg
ICAgY29udmVydFRvVHlwZTsNCn0gSlNDbGFzc0RlZmluaXRpb247DQoNCg0KDQoNCg0KDQoNCg0K
DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgZXh0ZXJuIGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uIGtK
U0NsYXNzRGVmaW5pdGlvbkVtcHR5Ow0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgSlNDbGFzc1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZp
bml0aW9uKTsNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTQ2xhc3NSZWYg
SlNDbGFzc1JldGFpbihKU0NsYXNzUmVmIGpzQ2xhc3MpOw0KDQoNCg0KDQoNCg0KX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHZvaWQgSlNDbGFzc1JlbGVhc2UoSlNDbGFzc1JlZiBqc0NsYXNzKTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdFJlZiBK
U09iamVjdE1ha2UoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBk
YXRhKTsNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdFJl
ZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBuYW1lLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rp
b24pOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBq
c0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0
b3IpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2Jq
ZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3RSZWYg
SlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIDsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZURlZmVycmVkUHJvbWlzZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiogcmVz
b2x2ZSwgSlNPYmplY3RSZWYqIHJlamVjdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSA7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFt
ZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIGNvbnN0IEpTU3RyaW5nUmVmIHBhcmFtZXRlck5h
bWVzW10sIEpTU3RyaW5nUmVmIGJvZHksIEpTU3RyaW5nUmVmIHNvdXJjZVVSTCwgaW50IHN0YXJ0
aW5nTGluZU51bWJlciwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQpf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByb3RvdHlwZShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QpOw0KDQoNCg0KDQoNCg0KDQoNCl9fZGVj
bHNwZWMoZGxsZXhwb3J0KSB2b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiB2YWx1ZSk7DQoNCg0KDQoNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eShKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSk7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1ZhbHVlUmVmIEpT
T2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgSlNPYmplY3RTZXRQcm9w
ZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmli
dXRlcywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNs
c3BlYyhkbGxleHBvcnQpIGJvb2wgSlNPYmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYg
Y3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBv
cnQpIGJvb2wgSlNPYmplY3RIYXNQcm9wZXJ0eUZvcktleShKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiBvYmplY3QsIEpTVmFsdWVSZWYgcHJvcGVydHlLZXksIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikgOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1Zh
bHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlGb3JLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pIDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lk
IEpTT2JqZWN0U2V0UHJvcGVydHlGb3JLZXkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0LCBKU1ZhbHVlUmVmIHByb3BlcnR5S2V5LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Byb3Bl
cnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIDsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBKU09iamVjdERlbGV0
ZVByb3BlcnR5Rm9yS2V5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNW
YWx1ZVJlZiBwcm9wZXJ0eUtleSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSA7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cm9wZXJ0eUF0SW5kZXgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNp
Z25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHlB
dEluZGV4KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgdW5zaWduZWQgcHJv
cGVydHlJbmRleCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsNCg0K
DQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0
ZShKU09iamVjdFJlZiBvYmplY3QpOw0KDQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxl
eHBvcnQpIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamVjdCwgdm9pZCog
ZGF0YSk7DQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgSlNPYmpl
Y3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCk7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZVJlZiBKU09i
amVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7DQoNCg0KDQoNCg0KDQoN
Cg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgSlNPYmplY3RJc0NvbnN0cnVjdG9yKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCk7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
X19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2JqZWN0UmVmIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0
b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsNCg0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNQcm9wZXJ0eU5hbWVB
cnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCk7DQoNCg0KDQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU1By
b3BlcnR5TmFtZUFycmF5UmVmIEpTUHJvcGVydHlOYW1lQXJyYXlSZXRhaW4oSlNQcm9wZXJ0eU5h
bWVBcnJheVJlZiBhcnJheSk7DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9p
ZCBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShKU1Byb3BlcnR5TmFtZUFycmF5UmVmIGFycmF5
KTsNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHNpemVfdCBKU1Byb3BlcnR5
TmFtZUFycmF5R2V0Q291bnQoSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBhcnJheSk7DQoNCg0KDQoN
Cg0KDQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTU3RyaW5nUmVmIEpTUHJvcGVydHlOYW1l
QXJyYXlHZXROYW1lQXRJbmRleChKU1Byb3BlcnR5TmFtZUFycmF5UmVmIGFycmF5LCBzaXplX3Qg
aW5kZXgpOw0KDQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBKU1Byb3Bl
cnR5TmFtZUFjY3VtdWxhdG9yQWRkTmFtZShKU1Byb3BlcnR5TmFtZUFjY3VtdWxhdG9yUmVmIGFj
Y3VtdWxhdG9yLCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpOw0KDQoNCn0NCiNsaW5lIDc1MiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhl
YWRlcnNcXEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmgiDQoNCiNsaW5lIDc1NCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVcXEhlYWRlcnNc
XEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmgiDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxBUElcXEpTQ2xhc3NSZWYuaCINCg0K
DQoNCnN0cnVjdCBTdGF0aWNWYWx1ZUVudHJ5IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lk
KTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBw
cml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3Jv
ID0gaW50Ow0KcHVibGljOg0KICAgIFN0YXRpY1ZhbHVlRW50cnkoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIF9nZXRQcm9wZXJ0eSwgSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIF9zZXRQ
cm9wZXJ0eSwgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgX2F0dHJpYnV0ZXMsIFN0cmluZyYgcHJvcGVy
dHlOYW1lKQ0KICAgICAgICA6IGdldFByb3BlcnR5KF9nZXRQcm9wZXJ0eSkNCiAgICAgICAgLCBz
ZXRQcm9wZXJ0eShfc2V0UHJvcGVydHkpDQogICAgICAgICwgYXR0cmlidXRlcyhfYXR0cmlidXRl
cykNCiAgICAgICAgLCBwcm9wZXJ0eU5hbWVSZWYoT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShw
cm9wZXJ0eU5hbWUpKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIGdldFByb3BlcnR5Ow0KICAgIEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eTsNCiAgICBKU1Byb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzOw0KICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOw0KfTsNCg0Kc3RydWN0IFN0YXRp
Y0Z1bmN0aW9uRW50cnkgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQq
IHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVy
biA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBw
KSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBs
b2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5n
IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJs
aWM6DQogICAgU3RhdGljRnVuY3Rpb25FbnRyeShKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2sgX2NhbGxBc0Z1bmN0aW9uLCBKU1Byb3BlcnR5QXR0cmlidXRlcyBfYXR0cmlidXRlcykNCiAg
ICAgICAgOiBjYWxsQXNGdW5jdGlvbihfY2FsbEFzRnVuY3Rpb24pLCBhdHRyaWJ1dGVzKF9hdHRy
aWJ1dGVzKQ0KICAgIHsNCiAgICB9DQoNCiAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2sgY2FsbEFzRnVuY3Rpb247DQogICAgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsN
Cn07DQoNCnR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIHN0ZDo6dW5pcXVlX3B0
cjxTdGF0aWNWYWx1ZUVudHJ5Pj4gT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOw0KdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgc3RkOjp1bmlxdWVfcHRyPFN0YXRpY0Z1
bmN0aW9uRW50cnk+PiBPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU7DQoNCnN0cnVj
dCBPcGFxdWVKU0NsYXNzOw0KDQoNCg0Kc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSB7
DQogICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKGNvbnN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YSYpID0gZGVsZXRlOyBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIG9wZXJhdG9yPShjb25z
dCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmKSA9IGRlbGV0ZTs7IHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6
Vk0mLCBPcGFxdWVKU0NsYXNzKik7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICBSZWZQdHI8T3BhcXVlSlNDbGFzcz4gbV9jbGFzczsNCg0KICAgIHN0ZDo6dW5pcXVl
X3B0cjxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+IHN0YXRpY1ZhbHVlczsNCiAgICBz
dGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPiBzdGF0aWNG
dW5jdGlvbnM7DQogICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IGNhY2hlZFByb3RvdHlwZTsN
Cn07DQoNCnN0cnVjdCBPcGFxdWVKU0NsYXNzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PE9wYXF1ZUpTQ2xhc3M+IHsNCiAgICBzdGF0aWMgUmVmPE9wYXF1ZUpTQ2xhc3M+IGNyZWF0ZShj
b25zdCBKU0NsYXNzRGVmaW5pdGlvbiopOw0KICAgIHN0YXRpYyBSZWY8T3BhcXVlSlNDbGFzcz4g
Y3JlYXRlTm9BdXRvbWF0aWNQcm90b3R5cGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgfk9wYXF1ZUpTQ2xhc3MoKTsNCiAgICANCiAgICBTdHJp
bmcgY2xhc3NOYW1lKCk7DQogICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0
aWNWYWx1ZXMoSlNDOjpKU0dsb2JhbE9iamVjdCopOw0KICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNG
dW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsNCiAg
ICBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOw0KDQogICAg
T3BhcXVlSlNDbGFzcyogcGFyZW50Q2xhc3M7DQogICAgT3BhcXVlSlNDbGFzcyogcHJvdG90eXBl
Q2xhc3M7DQogICAgDQogICAgSlNPYmplY3RJbml0aWFsaXplQ2FsbGJhY2sgaW5pdGlhbGl6ZTsN
CiAgICBKU09iamVjdEZpbmFsaXplQ2FsbGJhY2sgZmluYWxpemU7DQogICAgSlNPYmplY3RIYXNQ
cm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5Ow0KICAgIEpTT2JqZWN0R2V0UHJvcGVydHlDYWxs
YmFjayBnZXRQcm9wZXJ0eTsNCiAgICBKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJv
cGVydHk7DQogICAgSlNPYmplY3REZWxldGVQcm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5
Ow0KICAgIEpTT2JqZWN0R2V0UHJvcGVydHlOYW1lc0NhbGxiYWNrIGdldFByb3BlcnR5TmFtZXM7
DQogICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uOw0KICAg
IEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsQXNDb25zdHJ1Y3RvcjsNCiAg
ICBKU09iamVjdEhhc0luc3RhbmNlQ2FsbGJhY2sgaGFzSW5zdGFuY2U7DQogICAgSlNPYmplY3RD
b252ZXJ0VG9UeXBlQ2FsbGJhY2sgY29udmVydFRvVHlwZTsNCg0KcHJpdmF0ZToNCiAgICBmcmll
bmQgc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTsNCg0KICAgIE9wYXF1ZUpTQ2xhc3Mo
KTsNCiAgICBPcGFxdWVKU0NsYXNzKGNvbnN0IE9wYXF1ZUpTQ2xhc3MmKTsNCiAgICBPcGFxdWVK
U0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiwgT3BhcXVlSlNDbGFzcyogcHJvdG9DbGFz
cyk7DQoNCiAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIGNvbnRleHREYXRhKEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsNCg0KICAgIA0KICAgIFN0cmluZyBtX2NsYXNzTmFtZTsNCiAgICBzdGQ6
OnVuaXF1ZV9wdHI8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPiBtX3N0YXRpY1ZhbHVl
czsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxl
PiBtX3N0YXRpY0Z1bmN0aW9uczsNCn07DQoNCiNsaW5lIDEzMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxBUElcXEpTQ2xhc3NSZWYuaCINCiNsaW5l
IDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU3ltYm9sVGFibGVPYmplY3QuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNTY29wZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxHZXRQdXRJbmZvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3Mg
U3RydWN0dXJlOw0KY2xhc3MgV2F0Y2hwb2ludFNldDsNCmNsYXNzIEpTTGV4aWNhbEVudmlyb25t
ZW50Ow0KDQplbnVtIFJlc29sdmVNb2RlIHsNCiAgICBUaHJvd0lmTm90Rm91bmQsDQogICAgRG9O
b3RUaHJvd0lmTm90Rm91bmQNCn07DQoNCmVudW0gUmVzb2x2ZVR5cGUgOiB1bnNpZ25lZCB7DQog
ICAgDQogICAgR2xvYmFsUHJvcGVydHksDQogICAgR2xvYmFsVmFyLA0KICAgIEdsb2JhbExleGlj
YWxWYXIsDQogICAgQ2xvc3VyZVZhciwNCiAgICBMb2NhbENsb3N1cmVWYXIsDQogICAgTW9kdWxl
VmFyLA0KDQogICAgDQogICAgDQogICAgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLA0KICAgIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsDQogICAgR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsDQogICAgQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MsDQoNCiAgICANCiAgICANCiAgICANCiAgICBVbnJlc29sdmVkUHJvcGVydHks
DQogICAgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywNCg0KICAgIA0K
ICAgIER5bmFtaWMNCn07DQoNCmVudW0gY2xhc3MgSW5pdGlhbGl6YXRpb25Nb2RlIDogdW5zaWdu
ZWQgew0KICAgIEluaXRpYWxpemF0aW9uLCAgICAgIA0KICAgIENvbnN0SW5pdGlhbGl6YXRpb24s
IA0KICAgIE5vdEluaXRpYWxpemF0aW9uICAgIA0KfTsNCg0KX19mb3JjZWlubGluZSBjb25zdCBj
aGFyKiByZXNvbHZlTW9kZU5hbWUoUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUpDQp7DQogICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVzW10gPSB7DQogICAgICAgICJUaHJvd0lmTm90Rm91
bmQiLA0KICAgICAgICAiRG9Ob3RUaHJvd0lmTm90Rm91bmQiDQogICAgfTsNCiAgICByZXR1cm4g
bmFtZXNbcmVzb2x2ZU1vZGVdOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGNvbnN0IGNoYXIqIHJlc29s
dmVUeXBlTmFtZShSZXNvbHZlVHlwZSB0eXBlKQ0Kew0KICAgIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBuYW1lc1tdID0gew0KICAgICAgICAiR2xvYmFsUHJvcGVydHkiLA0KICAgICAgICAiR2xv
YmFsVmFyIiwNCiAgICAgICAgIkdsb2JhbExleGljYWxWYXIiLA0KICAgICAgICAiQ2xvc3VyZVZh
ciIsDQogICAgICAgICJMb2NhbENsb3N1cmVWYXIiLA0KICAgICAgICAiTW9kdWxlVmFyIiwNCiAg
ICAgICAgIkdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyIsDQogICAgICAgICJH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwNCiAgICAgICAgIkdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwNCiAgICAgICAgIkNsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIiwNCiAgICAgICAgIlVucmVzb2x2ZWRQcm9wZXJ0eSIsDQogICAgICAgICJV
bnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwNCiAgICAgICAgIkR5bmFt
aWMiDQogICAgfTsNCiAgICByZXR1cm4gbmFtZXNbdHlwZV07DQp9DQoNCl9fZm9yY2VpbmxpbmUg
Y29uc3QgY2hhciogaW5pdGlhbGl6YXRpb25Nb2RlTmFtZShJbml0aWFsaXphdGlvbk1vZGUgaW5p
dGlhbGl6YXRpb25Nb2RlKQ0Kew0KICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBuYW1lc1td
ID0gew0KICAgICAgICAiSW5pdGlhbGl6YXRpb24iLA0KICAgICAgICAiQ29uc3RJbml0aWFsaXph
dGlvbiIsDQogICAgICAgICJOb3RJbml0aWFsaXphdGlvbiINCiAgICB9Ow0KICAgIHJldHVybiBu
YW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbGl6YXRpb25Nb2RlKV07DQp9DQoNCl9f
Zm9yY2VpbmxpbmUgYm9vbCBpc0luaXRpYWxpemF0aW9uKEluaXRpYWxpemF0aW9uTW9kZSBpbml0
aWFsaXphdGlvbk1vZGUpDQp7DQogICAgc3dpdGNoIChpbml0aWFsaXphdGlvbk1vZGUpIHsNCiAg
ICBjYXNlIEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlhbGl6YXRpb246DQogICAgY2FzZSBJbml0
aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb246DQogICAgICAgIHJldHVybiB0cnVl
Ow0KICAgIGNhc2UgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbjoNCiAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIGZhbHNl
Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lIFJlc29sdmVUeXBlIG1ha2VUeXBlKFJlc29sdmVUeXBlIHR5
cGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpDQp7DQogICAgaWYgKCFuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcykNCiAgICAgICAgcmV0dXJuIHR5cGU7DQoNCiAgICBzd2l0Y2ggKHR5cGUp
IHsNCiAgICBjYXNlIEdsb2JhbFByb3BlcnR5Og0KICAgICAgICByZXR1cm4gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOw0KICAgIGNhc2UgR2xvYmFsVmFyOg0KICAgICAgICBy
ZXR1cm4gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsNCiAgICBjYXNlIEdsb2JhbExl
eGljYWxWYXI6DQogICAgICAgIHJldHVybiBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczsNCiAgICBjYXNlIENsb3N1cmVWYXI6DQogICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6
DQogICAgICAgIHJldHVybiBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsNCiAgICBj
YXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToNCiAgICAgICAgcmV0dXJuIFVucmVzb2x2ZWRQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3M7DQogICAgY2FzZSBNb2R1bGVWYXI6DQogICAgY2FzZSBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6DQogICAgY2FzZSBHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOg0KICAgIGNhc2UgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6DQogICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
czoNCiAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6DQog
ICAgY2FzZSBEeW5hbWljOg0KICAgICAgICByZXR1cm4gdHlwZTsNCiAgICB9DQoNCiAgICBkbyB7
IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7
IFdURkNyYXNoV2l0aEluZm8oMTUzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxHZXRQdXRJbmZvLmgiLCAgX19GVU5DVElPTl9fICAs
IDg2ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICByZXR1cm4gdHlwZTsNCn0NCg0KX19mb3JjZWlu
bGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpDQp7DQog
ICAgc3dpdGNoICh0eXBlKSB7DQogICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToNCiAgICBjYXNlIEds
b2JhbFZhcjoNCiAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6DQogICAgY2FzZSBDbG9zdXJlVmFy
Og0KICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOg0KICAgIGNhc2UgTW9kdWxlVmFyOg0KICAgIGNh
c2UgVW5yZXNvbHZlZFByb3BlcnR5Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgY2FzZSBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6DQogICAgY2FzZSBHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOg0KICAgIGNhc2UgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6DQogICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
czoNCiAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6DQog
ICAgY2FzZSBEeW5hbWljOg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAg
ICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZv
ckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTc2LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxHZXRQdXRJbmZvLmgiLCAgX19GVU5D
VElPTl9fICAsIDg3ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQog
ICAgfQ0KfQ0KDQpzdHJ1Y3QgUmVzb2x2ZU9wIHsNCiAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUg
dHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJv
bm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwg
dWludHB0cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBvcnRlZE5hbWUgPSBudWxs
cHRyKQ0KICAgICAgICA6IHR5cGUodHlwZSkNCiAgICAgICAgLCBkZXB0aChkZXB0aCkNCiAgICAg
ICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQ0KICAgICAgICAsIGxleGljYWxFbnZpcm9ubWVudChs
ZXhpY2FsRW52aXJvbm1lbnQpDQogICAgICAgICwgd2F0Y2hwb2ludFNldCh3YXRjaHBvaW50U2V0
KQ0KICAgICAgICAsIG9wZXJhbmQob3BlcmFuZCkNCiAgICAgICAgLCBpbXBvcnRlZE5hbWUoaW1w
b3J0ZWROYW1lKQ0KICAgIHsNCiAgICB9DQoNCiAgICBSZXNvbHZlVHlwZSB0eXBlOw0KICAgIHNp
emVfdCBkZXB0aDsNCiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsNCiAgICBKU0xleGljYWxFbnZp
cm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50Ow0KICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9p
bnRTZXQ7DQogICAgdWludHB0cl90IG9wZXJhbmQ7DQogICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiBpbXBvcnRlZE5hbWU7DQp9Ow0KDQpjbGFzcyBHZXRQdXRJbmZvIHsNCiAgICB0eXBlZGVm
IHVuc2lnbmVkIE9wZXJhbmQ7DQpwdWJsaWM6DQogICAgDQogICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoT3BlcmFuZCkgKiA4ID4gMzEsICJOb3QgZW5vdWdoIGJpdHMgZm9yIEdldFB1dEluZm8iKTsN
CiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGlzU3RyaWN0U2hpZnQgPSAzMDsNCiAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1vZGVTaGlmdCA9IDIwOw0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgaW5pdGlhbGl6YXRpb25TaGlmdCA9IDEwOw0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgdHlwZUJpdHMgPSAoMSA8PCBpbml0aWFsaXphdGlvblNoaWZ0KSAtIDE7
DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbml0aWFsaXphdGlvbkJpdHMgPSAoKDEg
PDwgbW9kZVNoaWZ0KSAtIDEpICYgfnR5cGVCaXRzOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbW9kZUJpdHMgPSAoKDEgPDwgMzApIC0gMSkgJiB+aW5pdGlhbGl6YXRpb25CaXRzICYg
fnR5cGVCaXRzOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaXNTdHJpY3RCaXQgPSAx
IDw8IDMwOw0KICAgIHN0YXRpY19hc3NlcnQoKG1vZGVCaXRzICYgaW5pdGlhbGl6YXRpb25CaXRz
ICYgdHlwZUJpdHMgJiBpc1N0cmljdEJpdCkgPT0gMHgwLCAiVGhlcmUgc2hvdWxkIGJlIG5vIGlu
dGVyc2VjdGlvbiBiZXR3ZWVuIFJlc29sdmVNb2RlIFJlc29sdmVUeXBlIGFuZCBJbml0aWFsaXph
dGlvbk1vZGUiKTsNCg0KICAgIEdldFB1dEluZm8oKSA9IGRlZmF1bHQ7DQoNCiAgICBHZXRQdXRJ
bmZvKFJlc29sdmVNb2RlIHJlc29sdmVNb2RlLCBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSwgSW5p
dGlhbGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSwgRUNNQU1vZGUgZWNtYU1vZGUpDQog
ICAgICAgIDogbV9vcGVyYW5kKChlY21hTW9kZS5pc1N0cmljdCgpIDw8IGlzU3RyaWN0U2hpZnQp
IHwgKHJlc29sdmVNb2RlIDw8IG1vZGVTaGlmdCkgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
aXRpYWxpemF0aW9uTW9kZSkgPDwgaW5pdGlhbGl6YXRpb25TaGlmdCkgfCByZXNvbHZlVHlwZSkN
CiAgICB7DQogICAgfQ0KDQogICAgZXhwbGljaXQgR2V0UHV0SW5mbyh1bnNpZ25lZCBvcGVyYW5k
KQ0KICAgICAgICA6IG1fb3BlcmFuZChvcGVyYW5kKQ0KICAgIHsNCiAgICB9DQoNCiAgICBSZXNv
bHZlVHlwZSByZXNvbHZlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc29sdmVU
eXBlPihtX29wZXJhbmQgJiB0eXBlQml0cyk7IH0NCiAgICBJbml0aWFsaXphdGlvbk1vZGUgaW5p
dGlhbGl6YXRpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRp
b25Nb2RlPigobV9vcGVyYW5kICYgaW5pdGlhbGl6YXRpb25CaXRzKSA+PiBpbml0aWFsaXphdGlv
blNoaWZ0KTsgfQ0KICAgIFJlc29sdmVNb2RlIHJlc29sdmVNb2RlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVzb2x2ZU1vZGU+KChtX29wZXJhbmQgJiBtb2RlQml0cykgPj4gbW9kZVNo
aWZ0KTsgfQ0KICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYW5k
ICYgaXNTdHJpY3RCaXQgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7
IH0NCiAgICB1bnNpZ25lZCBvcGVyYW5kKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYW5kOyB9DQoN
CiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICBPcGVy
YW5kIG1fb3BlcmFuZCB7IDAgfTsNCg0KICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0
c0V4dHJhY3RvcjsNCn07DQoNCmVudW0gR2V0T3JQdXQgeyBHZXQsIFB1dCB9Ow0KDQp9IA0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07DQoNCnZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6UmVzb2x2ZU1vZGUpOw0Kdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpSZXNvbHZlVHlwZSk7DQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OkluaXRpYWxpemF0aW9uTW9kZSk7DQoNCn0gDQojbGluZSAyOSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1Nj
b3BlLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsN
CmNsYXNzIFN5bWJvbFRhYmxlOw0KY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudDsNCmNsYXNzIFdh
dGNocG9pbnRTZXQ7DQoNCmNsYXNzIEpTU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzVG9UaGlzOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNj
ZXNzPg0KICAgIHN0YXRpYyB2b2lkIHN1YnNwYWNlRm9yKFZNJikNCiAgICB7DQogICAgICAgIGRv
IHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2go
KTsgV1RGQ3Jhc2hXaXRoSW5mbyg0NiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNTY29wZS5oIiwgIF9fRlVOQ1RJT05fXyAgLCA4
OCApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgfQ0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJu
ICZzX2luZm87IH07DQoNCiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0K
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZOZXh0KCk7DQoNCiAgICBzdGF0aWMgSlNPYmplY3Qq
IG9iamVjdEF0U2NvcGUoSlNTY29wZSopOw0KDQogICAgc3RhdGljIEpTT2JqZWN0KiByZXNvbHZl
KEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZpZXImKTsNCiAgICBzdGF0
aWMgSlNWYWx1ZSByZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKEpTR2xvYmFs
T2JqZWN0KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZpZXImKTsNCiAgICBzdGF0aWMgUmVzb2x2
ZU9wIGFic3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIHNpemVfdCBkZXB0aE9mZnNldCwg
SlNTY29wZSosIGNvbnN0IElkZW50aWZpZXImLCBHZXRPclB1dCwgUmVzb2x2ZVR5cGUsIEluaXRp
YWxpemF0aW9uTW9kZSk7DQoNCiAgICBzdGF0aWMgYm9vbCBoYXNDb25zdGFudFNjb3BlKFJlc29s
dmVUeXBlKTsNCiAgICBzdGF0aWMgSlNTY29wZSogY29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhS
ZXNvbHZlVHlwZSwgQ29kZUJsb2NrKik7DQoNCiAgICBzdGF0aWMgdm9pZCBjb2xsZWN0Q2xvc3Vy
ZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqLCBWYXJpYWJsZUVudmlyb25tZW50JiByZXN1bHQp
Ow0KDQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
Ow0KDQogICAgYm9vbCBpc1ZhclNjb3BlKCk7DQogICAgYm9vbCBpc0xleGljYWxTY29wZSgpOw0K
ICAgIGJvb2wgaXNNb2R1bGVTY29wZSgpOw0KICAgIGJvb2wgaXNDYXRjaFNjb3BlKCk7DQogICAg
Ym9vbCBpc0Z1bmN0aW9uTmFtZVNjb3BlT2JqZWN0KCk7DQoNCiAgICBib29sIGlzTmVzdGVkTGV4
aWNhbFNjb3BlKCk7DQoNCiAgICBTY29wZUNoYWluSXRlcmF0b3IgYmVnaW4oKTsNCiAgICBTY29w
ZUNoYWluSXRlcmF0b3IgZW5kKCk7DQogICAgSlNTY29wZSogbmV4dCgpOw0KDQogICAgSlNPYmpl
Y3QqIGdsb2JhbFRoaXMoKTsNCg0KICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZShWTSYpOw0K
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsNCg0KcHJvdGVjdGVkOg0KICAgIEpTU2NvcGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiBuZXh0KTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFJldHVyblByZWRpY2F0ZUZ1bmN0b3IsIHR5cGVuYW1lIFNraXBQcmVkaWNhdGVGdW5jdG9yPg0K
ICAgIHN0YXRpYyBKU09iamVjdCogcmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpTU2NvcGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUmV0dXJuUHJlZGljYXRlRnVuY3RvciwgU2tpcFByZWRpY2F0ZUZ1
bmN0b3IpOw0KDQpwcml2YXRlOg0KICAgIFdyaXRlQmFycmllcjxKU1Njb3BlPiBtX25leHQ7DQp9
Ow0KDQppbmxpbmUgSlNTY29wZTo6SlNTY29wZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1Njb3BlKiBuZXh0KQ0KICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQ0KICAgICwgbV9uZXh0
KHZtLCB0aGlzLCBuZXh0LCBXcml0ZUJhcnJpZXI8SlNTY29wZT46Ok1heUJlTnVsbCkNCnsNCn0N
Cg0KY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yIHsNCnB1YmxpYzoNCiAgICBTY29wZUNoYWluSXRl
cmF0b3IoSlNTY29wZSogbm9kZSkNCiAgICAgICAgOiBtX25vZGUobm9kZSkNCiAgICB7DQogICAg
fQ0KDQogICAgSlNPYmplY3QqIGdldCgpIGNvbnN0IHsgcmV0dXJuIEpTU2NvcGU6Om9iamVjdEF0
U2NvcGUobV9ub2RlKTsgfQ0KICAgIEpTT2JqZWN0KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gSlNTY29wZTo6b2JqZWN0QXRTY29wZShtX25vZGUpOyB9DQogICAgSlNTY29wZSogc2NvcGUo
KSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0NCg0KICAgIFNjb3BlQ2hhaW5JdGVyYXRvciYgb3Bl
cmF0b3IrKygpIHsgbV9ub2RlID0gbV9ub2RlLT5uZXh0KCk7IHJldHVybiAqdGhpczsgfQ0KDQog
ICAgDQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NvcGVDaGFpbkl0ZXJhdG9yJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsgfQ0KICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTY29wZUNoYWluSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X25vZGUgIT0gb3RoZXIubV9ub2RlOyB9DQoNCnByaXZhdGU6DQogICAgSlNTY29wZSogbV9ub2Rl
Ow0KfTsNCg0KaW5saW5lIFNjb3BlQ2hhaW5JdGVyYXRvciBKU1Njb3BlOjpiZWdpbigpDQp7DQog
ICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVyYXRvcih0aGlzKTsgDQp9DQoNCmlubGluZSBTY29wZUNo
YWluSXRlcmF0b3IgSlNTY29wZTo6ZW5kKCkNCnsgDQogICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVy
YXRvcihudWxscHRyKTsgDQp9DQoNCmlubGluZSBKU1Njb3BlKiBKU1Njb3BlOjpuZXh0KCkNCnsg
DQogICAgcmV0dXJuIG1fbmV4dC5nZXQoKTsNCn0NCg0KaW5saW5lIHNpemVfdCBKU1Njb3BlOjpv
ZmZzZXRPZk5leHQoKQ0Kew0KICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+
KCYocmVpbnRlcnByZXRfY2FzdDxKU1Njb3BlKj4oMHg0MDAwKS0+bV9uZXh0KSkgLSAweDQwMDAp
Ow0KfQ0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNTeW1ib2xUYWJsZU9iamVjdC5oIg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXFN5bWJvbFRhYmxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQ29uc3RhbnRN
b2RlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gQ29uc3RhbnRNb2Rl
IHsgSXNDb25zdGFudCwgSXNWYXJpYWJsZSB9Ow0KDQppbmxpbmUgQ29uc3RhbnRNb2RlIG1vZGVG
b3JJc0NvbnN0YW50KGJvb2wgaXNDb25zdGFudCkNCnsNCiAgICByZXR1cm4gaXNDb25zdGFudCA/
IElzQ29uc3RhbnQgOiBJc1ZhcmlhYmxlOw0KfQ0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0K
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpDb25zdGFudE1vZGUpOw0KDQp9
IA0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcU3ltYm9sVGFibGUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSW5mZXJyZWRWYWx1ZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEpT
Q2VsbFR5cGU+DQpjbGFzcyBJbmZlcnJlZFZhbHVlIHsNCiAgICBJbmZlcnJlZFZhbHVlKGNvbnN0
IEluZmVycmVkVmFsdWUmKSA9IGRlbGV0ZTsgSW5mZXJyZWRWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0
IEluZmVycmVkVmFsdWUmKSA9IGRlbGV0ZTs7DQogICAgSW5mZXJyZWRWYWx1ZShJbmZlcnJlZFZh
bHVlJiYpID0gZGVsZXRlOyBJbmZlcnJlZFZhbHVlJiBvcGVyYXRvcj0oSW5mZXJyZWRWYWx1ZSYm
KSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgSlNDZWxsVHlwZSogaW5mZXJyZWRW
YWx1ZSgpDQogICAgew0KICAgICAgICB1aW50cHRyX3QgZGF0YSA9IG1fZGF0YTsNCiAgICAgICAg
aWYgKGlzRmF0KGRhdGEpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhdChkYXRhKS0+aW5mZXJyZWRW
YWx1ZSgpOw0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbFR5cGUqPihkYXRhICYg
VmFsdWVNYXNrKTsNCiAgICB9DQoNCiAgICBleHBsaWNpdCBJbmZlcnJlZFZhbHVlKCkNCiAgICAg
ICAgOiBtX2RhdGEoZW5jb2RlU3RhdGUoQ2xlYXJXYXRjaHBvaW50KSkNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICB9DQoNCiAgICB+SW5mZXJyZWRWYWx1ZSgpDQogICAgew0KICAgICAg
ICBpZiAoaXNUaGluKCkpDQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIGZyZWVGYXQoKTsN
CiAgICB9DQoNCiAgICANCiAgICBXYXRjaHBvaW50U3RhdGUgc3RhdGVPbkpTVGhyZWFkKCkgY29u
c3QNCiAgICB7DQogICAgICAgIHVpbnRwdHJfdCBkYXRhID0gbV9kYXRhOw0KICAgICAgICBpZiAo
aXNGYXQoZGF0YSkpDQogICAgICAgICAgICByZXR1cm4gZmF0KGRhdGEpLT5zdGF0ZU9uSlNUaHJl
YWQoKTsNCiAgICAgICAgcmV0dXJuIGRlY29kZVN0YXRlKGRhdGEpOw0KICAgIH0NCg0KICAgIA0K
ICAgIA0KICAgIA0KICAgIFdhdGNocG9pbnRTdGF0ZSBzdGF0ZSgpIGNvbnN0DQogICAgew0KICAg
ICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsNCiAgICAgICAgdWludHB0cl90IGRhdGEgPSBtX2Rh
dGE7DQogICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOw0KICAgICAgICBpZiAoaXNGYXQoZGF0
YSkpDQogICAgICAgICAgICByZXR1cm4gZmF0KGRhdGEpLT5zdGF0ZSgpOw0KICAgICAgICByZXR1
cm4gZGVjb2RlU3RhdGUoZGF0YSk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgYm9v
bCBoYXNCZWVuSW52YWxpZGF0ZWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHN0YXRl
KCkgPT0gSXNJbnZhbGlkYXRlZDsNCiAgICB9DQogICAgDQogICAgDQogICAgYm9vbCBpc1N0aWxs
VmFsaWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICFoYXNCZWVuSW52YWxpZGF0ZWQo
KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBhZGQoV2F0Y2hwb2ludCopOw0KICAgIA0KICAgIHZv
aWQgaW52YWxpZGF0ZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkNCiAgICB7DQog
ICAgICAgIGlmIChpc0ZhdCgpKQ0KICAgICAgICAgICAgZmF0KCktPmludmFsaWRhdGUodm0sIGRl
dGFpbCk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIG1fZGF0YSA9IGVuY29kZVN0YXRlKElz
SW52YWxpZGF0ZWQpOw0KICAgIH0NCiAgICANCiAgICBib29sIGlzQmVpbmdXYXRjaGVkKCkgY29u
c3QNCiAgICB7DQogICAgICAgIGlmIChpc0ZhdCgpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhdCgp
LT5pc0JlaW5nV2F0Y2hlZCgpOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAg
dm9pZCBub3RpZnlXcml0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTQ2VsbFR5cGUqIHZhbHVl
LCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpDQogICAgew0KICAgICAgICBpZiAoKHN0YXRlT25K
U1RocmVhZCgpID09IElzSW52YWxpZGF0ZWQpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICBub3RpZnlXcml0ZVNsb3codm0sIG93bmVyLCB2YWx1ZSwgZGV0YWlsKTsNCiAgICB9DQogICAg
DQogICAgdm9pZCBub3RpZnlXcml0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTQ2VsbFR5cGUq
IHZhbHVlLCBjb25zdCBjaGFyKiByZWFzb24pDQogICAgew0KICAgICAgICBpZiAoKHN0YXRlT25K
U1RocmVhZCgpID09IElzSW52YWxpZGF0ZWQpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICBub3RpZnlXcml0ZVNsb3codm0sIG93bmVyLCB2YWx1ZSwgcmVhc29uKTsNCiAgICB9DQogICAg
DQogICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOw0KDQpwcml2YXRlOg0KICAg
IGNsYXNzIEluZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0IGZpbmFsIDogcHVibGljIFdhdGNocG9p
bnRTZXQgew0KICAgIHB1YmxpYzoNCiAgICAgICAgSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnRTZXQo
V2F0Y2hwb2ludFN0YXRlIHN0YXRlLCBKU0NlbGxUeXBlKiB2YWx1ZSkNCiAgICAgICAgICAgIDog
V2F0Y2hwb2ludFNldChzdGF0ZSkNCiAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkNCiAgICAg
ICAgew0KICAgICAgICB9DQoNCiAgICAgICAgSlNDZWxsVHlwZSogaW5mZXJyZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0NCg0KICAgICAgICB2b2lkIGludmFsaWRhdGUoVk0mIHZt
LCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpDQogICAgICAgIHsNCiAgICAgICAgICAgIG1fdmFs
dWUgPSBudWxscHRyOw0KICAgICAgICAgICAgV2F0Y2hwb2ludFNldDo6aW52YWxpZGF0ZSh2bSwg
ZGV0YWlsKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KFZNJiwg
SlNDZWxsKiBvd25lciwgSlNDZWxsVHlwZSosIGNvbnN0IEZpcmVEZXRhaWwmKTsNCg0KICAgIHBy
aXZhdGU6DQogICAgICAgIEpTQ2VsbFR5cGUqIG1fdmFsdWU7DQogICAgfTsNCg0KICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludHB0cl90IElzVGhpbkZsYWcgICAgICAgID0gMTsNCiAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnRwdHJfdCBTdGF0ZU1hc2sgICAgICAgICA9IDY7DQogICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50cHRyX3QgU3RhdGVTaGlmdCAgICAgICAgPSAxOw0KICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludHB0cl90IFZhbHVlTWFzayAgICAgICAgID0gfnN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oSXNUaGluRmxhZyB8IFN0YXRlTWFzayk7DQogICAgDQogICAgc3RhdGljIGJvb2wgaXNUaGlu
KHVpbnRwdHJfdCBkYXRhKSB7IHJldHVybiBkYXRhICYgSXNUaGluRmxhZzsgfQ0KICAgIHN0YXRp
YyBib29sIGlzRmF0KHVpbnRwdHJfdCBkYXRhKSB7IHJldHVybiAhaXNUaGluKGRhdGEpOyB9DQog
ICAgDQogICAgc3RhdGljIFdhdGNocG9pbnRTdGF0ZSBkZWNvZGVTdGF0ZSh1aW50cHRyX3QgZGF0
YSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdhdGNocG9pbnRTdGF0ZT4oKGRhdGEgJiBTdGF0ZU1hc2spID4+IFN0YXRlU2hpZnQpOw0KICAg
IH0NCiAgICANCiAgICBzdGF0aWMgdWludHB0cl90IGVuY29kZVN0YXRlKFdhdGNocG9pbnRTdGF0
ZSBzdGF0ZSkNCiAgICB7DQogICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludHB0cl90Pihz
dGF0ZSkgPDwgU3RhdGVTaGlmdCkgfCBJc1RoaW5GbGFnOw0KICAgIH0NCiAgICANCiAgICBib29s
IGlzVGhpbigpIGNvbnN0IHsgcmV0dXJuIGlzVGhpbihtX2RhdGEpOyB9DQogICAgYm9vbCBpc0Zh
dCgpIGNvbnN0IHsgcmV0dXJuIGlzRmF0KG1fZGF0YSk7IH07DQogICAgDQogICAgc3RhdGljIElu
ZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0KiBmYXQodWludHB0cl90IGRhdGEpDQogICAgew0KICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEluZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0Kj4oZGF0
YSk7DQogICAgfQ0KICAgIA0KICAgIEluZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0KiBmYXQoKQ0K
ICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gZmF0KG1fZGF0YSk7DQog
ICAgfQ0KICAgIA0KICAgIGNvbnN0IEluZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0KiBmYXQoKSBj
b25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gZmF0KG1fZGF0
YSk7DQogICAgfQ0KICAgIA0KICAgIEluZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0KiBpbmZsYXRl
KCkNCiAgICB7DQogICAgICAgIGlmICgoaXNGYXQoKSkpDQogICAgICAgICAgICByZXR1cm4gZmF0
KCk7DQogICAgICAgIHJldHVybiBpbmZsYXRlU2xvdygpOw0KICAgIH0NCg0KICAgIEluZmVycmVk
VmFsdWVXYXRjaHBvaW50U2V0KiBpbmZsYXRlU2xvdygpOw0KICAgIHZvaWQgZnJlZUZhdCgpOw0K
DQogICAgdm9pZCBub3RpZnlXcml0ZVNsb3coVk0mLCBKU0NlbGwqIG93bmVyLCBKU0NlbGxUeXBl
KiwgY29uc3QgRmlyZURldGFpbCYpOw0KICAgIHZvaWQgbm90aWZ5V3JpdGVTbG93KFZNJiwgSlND
ZWxsKiBvd25lciwgSlNDZWxsVHlwZSosIGNvbnN0IGNoYXIqIHJlYXNvbik7DQogICAgDQogICAg
dWludHB0cl90IG1fZGF0YTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEpTQ2VsbFR5cGU+DQp2
b2lkIEluZmVycmVkVmFsdWU8SlNDZWxsVHlwZT46OkluZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0
Ojpub3RpZnlXcml0ZVNsb3coVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU0NlbGxUeXBlKiB2YWx1
ZSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQ0Kew0KICAgIHN3aXRjaCAoc3RhdGUoKSkgew0K
ICAgIGNhc2UgQ2xlYXJXYXRjaHBvaW50Og0KICAgICAgICBtX3ZhbHVlID0gdmFsdWU7DQogICAg
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyLCB2YWx1ZSk7DQogICAgICAgIHN0YXJ0V2F0
Y2hpbmcoKTsNCiAgICAgICAgcmV0dXJuOw0KDQogICAgY2FzZSBJc1dhdGNoZWQ6DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgaWYgKG1fdmFsdWUgPT0gdmFsdWUpDQogICAgICAgICAgICBy
ZXR1cm47DQogICAgICAgIGludmFsaWRhdGUodm0sIGRldGFpbCk7DQogICAgICAgIHJldHVybjsN
Cg0KICAgIGNhc2UgSXNJbnZhbGlkYXRlZDoNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBy
ZXR1cm47DQogICAgfQ0KDQogICAgKCh2b2lkKTApOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBK
U0NlbGxUeXBlPg0Kdm9pZCBJbmZlcnJlZFZhbHVlPEpTQ2VsbFR5cGU+Ojpub3RpZnlXcml0ZVNs
b3coVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU0NlbGxUeXBlKiB2YWx1ZSwgY29uc3QgRmlyZURl
dGFpbCYgZGV0YWlsKQ0Kew0KICAgIHVpbnRwdHJfdCBkYXRhID0gbV9kYXRhOw0KICAgIGlmIChp
c0ZhdChkYXRhKSkgew0KICAgICAgICBmYXQoZGF0YSktPm5vdGlmeVdyaXRlU2xvdyh2bSwgb3du
ZXIsIHZhbHVlLCBkZXRhaWwpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KDQogICAgc3dpdGNo
IChzdGF0ZSgpKSB7DQogICAgY2FzZSBDbGVhcldhdGNocG9pbnQ6DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgbV9kYXRhID0gKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIFZh
bHVlTWFzaykgfCBlbmNvZGVTdGF0ZShJc1dhdGNoZWQpOw0KICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihvd25lciwgdmFsdWUpOw0KICAgICAgICByZXR1cm47DQoNCiAgICBjYXNlIElzV2F0
Y2hlZDoNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoaW5mZXJyZWRWYWx1ZSgpID09
IHZhbHVlKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBpbnZhbGlkYXRlKHZtLCBkZXRh
aWwpOw0KICAgICAgICByZXR1cm47DQoNCiAgICBjYXNlIElzSW52YWxpZGF0ZWQ6DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgICgodm9pZCkwKTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgSlNDZWxsVHlwZT4NCnZvaWQgSW5mZXJyZWRWYWx1ZTxKU0Nl
bGxUeXBlPjo6bm90aWZ5V3JpdGVTbG93KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNDZWxsVHlw
ZSogdmFsdWUsIGNvbnN0IGNoYXIqIHJlYXNvbikNCnsNCiAgICBub3RpZnlXcml0ZVNsb3codm0s
IG93bmVyLCB2YWx1ZSwgU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgSlNDZWxsVHlwZT4NCnZvaWQgSW5mZXJyZWRWYWx1ZTxKU0NlbGxUeXBlPjo6YWRk
KFdhdGNocG9pbnQqIHdhdGNocG9pbnQpDQp7DQogICAgaW5mbGF0ZSgpLT5hZGQod2F0Y2hwb2lu
dCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEpTQ2VsbFR5cGU+DQphdXRvIEluZmVycmVkVmFs
dWU8SlNDZWxsVHlwZT46OmluZmxhdGVTbG93KCkgLT4gSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnRT
ZXQqDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICB1aW50cHRyX3QgZGF0
YSA9IG1fZGF0YTsNCiAgICBJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludFNldCogZmF0ID0gYWRvcHRS
ZWYobmV3IEluZmVycmVkVmFsdWVXYXRjaHBvaW50U2V0KGRlY29kZVN0YXRlKG1fZGF0YSksIGJp
dHdpc2VfY2FzdDxKU0NlbGxUeXBlKj4oZGF0YSAmIFZhbHVlTWFzaykpKS5sZWFrUmVmKCk7DQog
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsNCiAgICBtX2RhdGEgPSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihmYXQpOw0KICAgIHJldHVybiBmYXQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEpT
Q2VsbFR5cGU+DQp2b2lkIEluZmVycmVkVmFsdWU8SlNDZWxsVHlwZT46OmZyZWVGYXQoKQ0Kew0K
ICAgICgodm9pZCkwKTsNCiAgICBmYXQoKS0+ZGVyZWYoKTsNCn0NCg0KfSANCiNsaW5lIDM0ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XFN5bWJvbFRhYmxlLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU2NvcGVkQXJndW1lbnRzVGFibGUuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvQ2FnZWRVbmlxdWVQdHIuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8R2lnYWNhZ2U6OktpbmQga2luZCwgdHlwZW5hbWUg
VCwgYm9vbCBzaG91bGRUYWcgPSBmYWxzZT4NCmNsYXNzIENhZ2VkVW5pcXVlUHRyIDogcHVibGlj
IENhZ2VkUHRyPGtpbmQsIFQsIHNob3VsZFRhZz4gew0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIldlIGV4cGVjdCB0aGUgY29udGVu
dHMgb2YgYSBjYWdlZCBwb2ludGVyIHRvIGJlIHRyaXZpYWxseSBkZXN0cnVjdGFibGUuIik7DQpw
dWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IENhZ2VkUHRyPGtpbmQsIFQsIHNob3VsZFRhZz47DQog
ICAgQ2FnZWRVbmlxdWVQdHIoKSA9IGRlZmF1bHQ7DQoNCiAgICBDYWdlZFVuaXF1ZVB0cihUKiBw
dHIsIHVuc2lnbmVkIHNpemUpDQogICAgICAgIDogQmFzZShwdHIsIHNpemUpDQogICAgeyB9DQoN
CiAgICBDYWdlZFVuaXF1ZVB0cihDYWdlZFVuaXF1ZVB0ciYmIHB0cikNCiAgICAgICAgOiBCYXNl
KHN0ZDo6Zm9yd2FyZDxDYWdlZFVuaXF1ZVB0ciYmPihwdHIpKQ0KICAgIHsgfQ0KICAgIA0KICAg
IENhZ2VkVW5pcXVlUHRyKGNvbnN0IENhZ2VkVW5pcXVlUHRyJikgPSBkZWxldGU7DQogICAgDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPg0KICAgIHN0YXRpYyBDYWdlZFVuaXF1
ZVB0ciBjcmVhdGUodW5zaWduZWQgbGVuZ3RoLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpDQog
ICAgew0KICAgICAgICBUKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxUKj4oR2lnYWNhZ2U6Om1hbGxv
YyhraW5kLCBzaXplb2YoVCkgKiBsZW5ndGgpKTsNCiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKQ0K
ICAgICAgICAgICAgbmV3IChyZXN1bHQgKyBsZW5ndGgpIFQoYXJndW1lbnRzLi4uKTsNCiAgICAg
ICAgcmV0dXJuIENhZ2VkVW5pcXVlUHRyKHJlc3VsdCwgbGVuZ3RoKTsNCiAgICB9DQoNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+DQogICAgc3RhdGljIENhZ2VkVW5pcXVlUHRy
IHRyeUNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykNCiAg
ICB7DQogICAgICAgIFQqIHJlc3VsdCA9IHN0YXRpY19jYXN0PFQqPihHaWdhY2FnZTo6dHJ5TWFs
bG9jKGtpbmQsIHNpemVvZihUKSAqIGxlbmd0aCkpOw0KICAgICAgICBpZiAoIXJlc3VsdCkNCiAg
ICAgICAgICAgIHJldHVybiB7IH07DQogICAgICAgIHdoaWxlIChsZW5ndGgtLSkNCiAgICAgICAg
ICAgIG5ldyAocmVzdWx0ICsgbGVuZ3RoKSBUKGFyZ3VtZW50cy4uLik7DQogICAgICAgIHJldHVy
biBDYWdlZFVuaXF1ZVB0cihyZXN1bHQsIGxlbmd0aCk7DQogICAgfQ0KDQogICAgQ2FnZWRVbmlx
dWVQdHImIG9wZXJhdG9yPShDYWdlZFVuaXF1ZVB0ciYmIHB0cikNCiAgICB7DQogICAgICAgIGRl
c3Ryb3koKTsNCiAgICAgICAgdGhpcy0+bV9wdHIgPSBwdHIubV9wdHI7DQogICAgICAgIHB0ci5t
X3B0ciA9IG51bGxwdHI7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQogICAgDQogICAg
Q2FnZWRVbmlxdWVQdHImIG9wZXJhdG9yPShjb25zdCBDYWdlZFVuaXF1ZVB0ciYpID0gZGVsZXRl
Ow0KICAgIA0KICAgIH5DYWdlZFVuaXF1ZVB0cigpDQogICAgew0KICAgICAgICBkZXN0cm95KCk7
DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIHZvaWQgZGVzdHJveSgpDQogICAgew0KICAgICAgICBU
KiBwdHIgPSBCYXNlOjpnZXRVbnNhZmUoKTsNCiAgICAgICAgaWYgKCFwdHIpDQogICAgICAgICAg
ICByZXR1cm47DQogICAgICAgIHB0ci0+flQoKTsNCiAgICAgICAgR2lnYWNhZ2U6OmZyZWUoa2lu
ZCwgcHRyKTsNCiAgICB9DQp9Ow0KDQp9IA0KDQp1c2luZyBXVEY6OkNhZ2VkVW5pcXVlUHRyOw0K
DQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxTY29wZWRBcmd1bWVudHNUYWJsZS5oIg0KDQpuYW1lc3BhY2UgSlNDIHsN
Cg0KDQoNCg0KDQoNCg0KY2xhc3MgU2NvcGVkQXJndW1lbnRzVGFibGUgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsNCiAgICBmcmllbmQgY2xhc3MgQ2FjaGVkU2NvcGVkQXJndW1lbnRzVGFibGU7DQoN
CnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNDZWxsOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWw7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
IG1vZGU+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAg
ew0KICAgICAgICByZXR1cm4gdm0uc2NvcGVkQXJndW1lbnRzVGFibGVTcGFjZTxtb2RlPigpOw0K
ICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgU2NvcGVkQXJndW1lbnRzVGFibGUoVk0mKTsNCiAg
ICB+U2NvcGVkQXJndW1lbnRzVGFibGUoKTsNCg0KcHVibGljOg0KICAgIHN0YXRpYyBTY29wZWRB
cmd1bWVudHNUYWJsZSogY3JlYXRlKFZNJik7DQogICAgc3RhdGljIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlKiB0cnlDcmVhdGUoVk0mLCB1aW50MzJfdCBsZW5ndGgpOw0KDQogICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsNCg0KICAgIHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoOyB9DQogICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHRyeVNldExlbmd0aChWTSYs
IHVpbnQzMl90IG5ld0xlbmd0aCk7DQogICAgDQogICAgU2NvcGVPZmZzZXQgZ2V0KHVpbnQzMl90
IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9DQogICAgDQogICAgdm9pZCBsb2NrKCkNCiAgICB7
DQogICAgICAgIG1fbG9ja2VkID0gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgU2NvcGVkQXJndW1l
bnRzVGFibGUqIHRyeVNldChWTSYsIHVpbnQzMl90IGluZGV4LCBTY29wZU9mZnNldCk7DQogICAg
DQogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1
YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyBy
ZXR1cm4gJnNfaW5mbzsgfTsNCiAgICANCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsNCg0KICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxTY29wZWRBcmd1bWVudHNUYWJsZSo+KDB4
NDAwMCktPm1fbGVuZ3RoKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkFyZ3VtZW50cygpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihy
ZWludGVycHJldF9jYXN0PFNjb3BlZEFyZ3VtZW50c1RhYmxlKj4oMHg0MDAwKS0+bV9hcmd1bWVu
dHMpKSAtIDB4NDAwMCk7IH0NCg0KICAgIHR5cGVkZWYgQ2FnZWRVbmlxdWVQdHI8R2lnYWNhZ2U6
OlByaW1pdGl2ZSwgU2NvcGVPZmZzZXQ+IEFyZ3VtZW50c1B0cjsNCg0KcHJpdmF0ZToNCiAgICBT
Y29wZWRBcmd1bWVudHNUYWJsZSogdHJ5Q2xvbmUoVk0mKTsNCg0KICAgIFNjb3BlT2Zmc2V0JiBh
dCh1aW50MzJfdCBpKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHMuZ2V0KGxlbmd0aCgpKVtpXTsNCiAgICB9DQogICAgDQogICAgdWlu
dDMyX3QgbV9sZW5ndGg7DQogICAgYm9vbCBtX2xvY2tlZDsgDQogICAgQXJndW1lbnRzUHRyIG1f
YXJndW1lbnRzOw0KfTsNCg0KfSANCiNsaW5lIDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN5bWJvbFRhYmxlLmgiDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVj
b2RlXFxUeXBlTG9jYXRpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVHlwZVNldC5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFN0cnVjdHVyZVNldC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxEdW1wQ29udGV4dC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1N0cmluZ0hhc2hEdW1wQ29u
dGV4dC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1
aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TaXhDaGFyYWN0ZXJIYXNoLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB1bnNp
Z25lZCBzaXhDaGFyYWN0ZXJIYXNoU3RyaW5nVG9JbnRlZ2VyKGNvbnN0IGNoYXIqKTsNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGQ6OmFycmF5PGNoYXIsIDc+IGludGVnZXJUb1NpeENo
YXJhY3Rlckhhc2hTdHJpbmcodW5zaWduZWQpOw0KDQp9IA0KDQp1c2luZyBXVEY6OnNpeENoYXJh
Y3Rlckhhc2hTdHJpbmdUb0ludGVnZXI7DQp1c2luZyBXVEY6OmludGVnZXJUb1NpeENoYXJhY3Rl
ckhhc2hTdHJpbmc7DQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU3RyaW5nSGFzaER1bXBDb250ZXh0LmgiDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL1N0cmluZ1ByaW50U3RyZWFtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBXVEYg
ew0KDQpjbGFzcyBTdHJpbmdQcmludFN0cmVhbSBmaW5hbCA6IHB1YmxpYyBQcmludFN0cmVhbSB7
DQpwdWJsaWM6DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZ1ByaW50U3RyZWFtKCk7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIH5TdHJpbmdQcmludFN0cmVhbSgpIGZpbmFsOw0K
ICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHZwcmludGYoY29uc3QgY2hhciog
Zm9ybWF0LCB2YV9saXN0KSBmaW5hbCA7DQoNCiAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZXh0OyB9DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIENTdHJpbmcg
dG9DU3RyaW5nKCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIEV4cGVjdGVkPFN0cmluZywg
VVRGOENvbnZlcnNpb25FcnJvcj4gdHJ5VG9TdHJpbmcoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgU3RyaW5nIHRvU3RyaW5nKCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmlu
ZyB0b1N0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB2b2lkIHJlc2V0KCk7DQogICAgDQpwcml2YXRlOg0KICAgIHZvaWQgaW5jcmVhc2VTaXplKHNp
emVfdCk7DQogICAgDQogICAgY2hhciogbV9idWZmZXI7DQogICAgc2l6ZV90IG1fbmV4dDsNCiAg
ICBzaXplX3QgbV9zaXplOw0KICAgIGNoYXIgbV9pbmxpbmVCdWZmZXJbMTI4XTsNCn07DQoNCg0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4NCkNTdHJpbmcgdG9DU3RyaW5nKGNvbnN0IFR5
cGVzJi4uLiB2YWx1ZXMpDQp7DQogICAgU3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOw0KICAgIHN0
cmVhbS5wcmludCh2YWx1ZXMuLi4pOw0KICAgIHJldHVybiBzdHJlYW0udG9DU3RyaW5nKCk7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPg0KU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFR5
cGVzJi4uLiB2YWx1ZXMpDQp7DQogICAgU3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOw0KICAgIHN0
cmVhbS5wcmludCh2YWx1ZXMuLi4pOw0KICAgIHJldHVybiBzdHJlYW0udG9TdHJpbmcoKTsNCn0N
Cg0KfSANCg0KdXNpbmcgV1RGOjpTdHJpbmdQcmludFN0cmVhbTsNCnVzaW5nIFdURjo6dG9DU3Ry
aW5nOw0KdXNpbmcgV1RGOjp0b1N0cmluZzsNCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdHJpbmdIYXNoRHVtcENvbnRl
eHQuaCINCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmNsYXNz
IFN0cmluZ0hhc2hEdW1wQ29udGV4dCB7DQpwdWJsaWM6DQogICAgU3RyaW5nSGFzaER1bXBDb250
ZXh0KCkgeyB9DQogICAgDQogICAgQ1N0cmluZyBnZXRJRChjb25zdCBUKiB2YWx1ZSkNCiAgICB7
DQogICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8Y29uc3QgVCosIENTdHJpbmc+OjppdGVyYXRvciBp
dGVyID0gbV9mb3J3YXJkTWFwLmZpbmQodmFsdWUpOw0KICAgICAgICBpZiAoaXRlciAhPSBtX2Zv
cndhcmRNYXAuZW5kKCkpDQogICAgICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7DQogICAgICAg
IA0KICAgICAgICBmb3IgKHVuc2lnbmVkIGhhc2hWYWx1ZSA9IHRvQ1N0cmluZygqdmFsdWUpLmhh
c2goKTsgOyBoYXNoVmFsdWUrKykgew0KICAgICAgICAgICAgQ1N0cmluZyBmdWxsSGFzaCA9IGlu
dGVnZXJUb1NpeENoYXJhY3Rlckhhc2hTdHJpbmcoaGFzaFZhbHVlKS5kYXRhKCk7DQogICAgICAg
ICAgICANCiAgICAgICAgICAgIGZvciAodW5zaWduZWQgbGVuZ3RoID0gMjsgbGVuZ3RoIDwgNjsg
KytsZW5ndGgpIHsNCiAgICAgICAgICAgICAgICBDU3RyaW5nIHNob3J0SGFzaCA9IENTdHJpbmco
ZnVsbEhhc2guZGF0YSgpLCBsZW5ndGgpOw0KICAgICAgICAgICAgICAgIGlmICghbV9iYWNrd2Fy
ZE1hcC5jb250YWlucyhzaG9ydEhhc2gpKSB7DQogICAgICAgICAgICAgICAgICAgIG1fZm9yd2Fy
ZE1hcC5hZGQodmFsdWUsIHNob3J0SGFzaCk7DQogICAgICAgICAgICAgICAgICAgIG1fYmFja3dh
cmRNYXAuYWRkKHNob3J0SGFzaCwgdmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c2hvcnRIYXNoOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0K
ICAgIH0NCiAgICANCiAgICB2b2lkIGR1bXBCcmllZihjb25zdCBUKiB2YWx1ZSwgUHJpbnRTdHJl
YW0mIG91dCkNCiAgICB7DQogICAgICAgIHZhbHVlLT5kdW1wQnJpZWYob3V0LCBnZXRJRCh2YWx1
ZSkpOw0KICAgIH0NCiAgICANCiAgICBDU3RyaW5nIGJyaWVmKGNvbnN0IFQqIHZhbHVlKQ0KICAg
IHsNCiAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0Ow0KICAgICAgICBkdW1wQnJpZWYodmFs
dWUsIG91dCk7DQogICAgICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7DQogICAgfQ0KICAgIA0K
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yd2FyZE1hcC5pc0VtcHR5KCk7
IH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJl
Zml4ID0gIiIpIGNvbnN0DQogICAgew0KICAgICAgICBvdXQucHJpbnQocHJlZml4KTsNCiAgICAg
ICAgVDo6ZHVtcENvbnRleHRIZWFkZXIob3V0KTsNCiAgICAgICAgb3V0LnByaW50KCJcbiIpOw0K
ICAgICAgICANCiAgICAgICAgVmVjdG9yPENTdHJpbmc+IGtleXM7DQogICAgICAgIHVuc2lnbmVk
IG1heEtleVNpemUgPSAwOw0KICAgICAgICBmb3IgKA0KICAgICAgICAgICAgdHlwZW5hbWUgSGFz
aE1hcDxDU3RyaW5nLCBjb25zdCBUKj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX2JhY2t3YXJk
TWFwLmJlZ2luKCk7DQogICAgICAgICAgICBpdGVyICE9IG1fYmFja3dhcmRNYXAuZW5kKCk7DQog
ICAgICAgICAgICArK2l0ZXIpIHsNCiAgICAgICAgICAgIGtleXMuYXBwZW5kKGl0ZXItPmtleSk7
DQogICAgICAgICAgICBtYXhLZXlTaXplID0gc3RkOjptYXgobWF4S2V5U2l6ZSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJyaWVmKGl0ZXItPnZhbHVlLCBpdGVyLT5rZXkpLmxlbmd0aCgpKSk7DQog
ICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0ZDo6c29ydChrZXlzLmJlZ2luKCksIGtleXMu
ZW5kKCkpOw0KICAgICAgICANCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleXMu
c2l6ZSgpOyArK2kpIHsNCiAgICAgICAgICAgIGNvbnN0IFQqIHZhbHVlID0gbV9iYWNrd2FyZE1h
cC5nZXQoa2V5c1tpXSk7DQogICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICAgICIpOw0K
ICAgICAgICAgICAgQ1N0cmluZyBicmllZlN0cmluZyA9IGJyaWVmKHZhbHVlLCBrZXlzW2ldKTsN
CiAgICAgICAgICAgIG91dC5wcmludChicmllZlN0cmluZyk7DQogICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIG4gPSBicmllZlN0cmluZy5sZW5ndGgoKTsgbiA8IG1heEtleVNpemU7ICsrbikNCiAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiKTsNCiAgICAgICAgICAgIG91dC5wcmludCgiID0g
IiwgKnZhbHVlLCAiXG4iKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCnB1YmxpYzoNCiAgICBz
dGF0aWMgQ1N0cmluZyBicmllZihjb25zdCBUKiB2YWx1ZSwgY29uc3QgQ1N0cmluZyYgc3RyaW5n
KQ0KICAgIHsNCiAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0Ow0KICAgICAgICB2YWx1ZS0+
ZHVtcEJyaWVmKG91dCwgc3RyaW5nKTsNCiAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsN
CiAgICB9DQogICAgDQogICAgSGFzaE1hcDxjb25zdCBUKiwgQ1N0cmluZz4gbV9mb3J3YXJkTWFw
Ow0KICAgIEhhc2hNYXA8Q1N0cmluZywgY29uc3QgVCo+IG1fYmFja3dhcmRNYXA7DQp9Ow0KDQp9
IA0KDQp1c2luZyBXVEY6OlN0cmluZ0hhc2hEdW1wQ29udGV4dDsNCiNsaW5lIDMxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXER1bXBD
b250ZXh0LmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpuYW1lc3BhY2UgREZHIHsgY2xhc3MgR3Jh
cGg7IH0NCg0Kc3RydWN0IER1bXBDb250ZXh0IHsNCiAgICBEdW1wQ29udGV4dCgpOw0KICAgIH5E
dW1wQ29udGV4dCgpOw0KICAgIA0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ow0KICAgIA0KICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYsIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIiKSBjb25zdDsN
CiAgICANCiAgICBTdHJpbmdIYXNoRHVtcENvbnRleHQ8U3RydWN0dXJlPiBzdHJ1Y3R1cmVzOw0K
ICAgIERGRzo6R3JhcGgqIGdyYXBoOw0KfTsNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxTdHJ1Y3R1cmVT
ZXQuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvVGlueVB0clNldC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgew0KY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTsNCn0g
fSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+
DQpjbGFzcyBUaW55UHRyU2V0IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9p
ZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1
cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1
c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0K
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNpemVvZih2b2lkKiksICJJdCdzIGluIHRo
ZSB0aXRsZSBvZiB0aGUgY2xhc3MuIik7DQpwdWJsaWM6DQogICAgVGlueVB0clNldCgpDQogICAg
ICAgIDogbV9wb2ludGVyKDApDQogICAgew0KICAgICAgICBzZXRFbXB0eSgpOw0KICAgIH0NCiAg
ICANCiAgICBUaW55UHRyU2V0KFQgZWxlbWVudCkNCiAgICAgICAgOiBtX3BvaW50ZXIoMCkNCiAg
ICB7DQogICAgICAgIHNldChlbGVtZW50KTsNCiAgICB9DQogICAgDQogICAgX19mb3JjZWlubGlu
ZSBUaW55UHRyU2V0KGNvbnN0IFRpbnlQdHJTZXQmIG90aGVyKQ0KICAgICAgICA6IG1fcG9pbnRl
cigwKQ0KICAgIHsNCiAgICAgICAgY29weUZyb20ob3RoZXIpOw0KICAgIH0NCiAgICANCiAgICBf
X2ZvcmNlaW5saW5lIFRpbnlQdHJTZXQmIG9wZXJhdG9yPShjb25zdCBUaW55UHRyU2V0JiBvdGhl
cikNCiAgICB7DQogICAgICAgIGlmICh0aGlzID09ICZvdGhlcikNCiAgICAgICAgICAgIHJldHVy
biAqdGhpczsNCiAgICAgICAgZGVsZXRlTGlzdElmTmVjZXNzYXJ5KCk7DQogICAgICAgIGNvcHlG
cm9tKG90aGVyKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCiAgICANCiAgICB+VGlu
eVB0clNldCgpDQogICAgew0KICAgICAgICBkZWxldGVMaXN0SWZOZWNlc3NhcnkoKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBjbGVhcigpDQogICAgew0KICAgICAgICBkZWxldGVMaXN0SWZOZWNl
c3NhcnkoKTsNCiAgICAgICAgc2V0RW1wdHkoKTsNCiAgICB9DQogICAgDQogICAgDQogICAgVCBv
bmx5RW50cnkoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzVGhpbigpKQ0KICAgICAgICAg
ICAgcmV0dXJuIHNpbmdsZUVudHJ5KCk7DQogICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSB0
aGlzLT5saXN0KCk7DQogICAgICAgIGlmIChsaXN0LT5tX2xlbmd0aCAhPSAxKQ0KICAgICAgICAg
ICAgcmV0dXJuIFQoKTsNCiAgICAgICAgcmV0dXJuIGxpc3QtPmxpc3QoKVswXTsNCiAgICB9DQog
ICAgDQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QNCiAgICB7DQogICAgICAgIGJvb2wgcmVzdWx0
ID0gaXNUaGluKCkgJiYgIXNpbmdsZUVudHJ5KCk7DQogICAgICAgIGlmIChyZXN1bHQpDQogICAg
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0K
ICAgIA0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCBhZGQoVCB2YWx1ZSkNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgaWYgKGlzVGhpbigpKSB7DQogICAgICAgICAgICBpZiAoc2lu
Z2xlRW50cnkoKSA9PSB2YWx1ZSkNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
ICAgICAgICBpZiAoIXNpbmdsZUVudHJ5KCkpIHsNCiAgICAgICAgICAgICAgICBzZXQodmFsdWUp
Ow0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgDQogICAgICAgICAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gT3V0T2ZMaW5lTGlzdDo6Y3Jl
YXRlKGRlZmF1bHRTdGFydGluZ1NpemUpOw0KICAgICAgICAgICAgbGlzdC0+bV9sZW5ndGggPSAy
Ow0KICAgICAgICAgICAgbGlzdC0+bGlzdCgpWzBdID0gc2luZ2xlRW50cnkoKTsNCiAgICAgICAg
ICAgIGxpc3QtPmxpc3QoKVsxXSA9IHZhbHVlOw0KICAgICAgICAgICAgc2V0KGxpc3QpOw0KICAg
ICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVy
biBhZGRPdXRPZkxpbmUodmFsdWUpOw0KICAgIH0NCiAgICANCiAgICBib29sIHJlbW92ZShUIHZh
bHVlKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzVGhpbigpKSB7DQogICAgICAgICAgICBpZiAoc2lu
Z2xlRW50cnkoKSA9PSB2YWx1ZSkgew0KICAgICAgICAgICAgICAgIHNldEVtcHR5KCk7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIE91dE9mTGluZUxpc3QqIGxp
c3QgPSB0aGlzLT5saXN0KCk7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0
LT5tX2xlbmd0aDsgKytpKSB7DQogICAgICAgICAgICBpZiAobGlzdC0+bGlzdCgpW2ldICE9IHZh
bHVlKQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgbGlzdC0+bGlzdCgp
W2ldID0gbGlzdC0+bGlzdCgpWy0tbGlzdC0+bV9sZW5ndGhdOw0KICAgICAgICAgICAgaWYgKCFs
aXN0LT5tX2xlbmd0aCkgew0KICAgICAgICAgICAgICAgIE91dE9mTGluZUxpc3Q6OmRlc3Ryb3ko
bGlzdCk7DQogICAgICAgICAgICAgICAgc2V0RW1wdHkoKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICB9DQogICAgDQogICAgYm9vbCBjb250YWlucyhUIHZhbHVlKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgaWYgKGlzVGhpbigpKQ0KICAgICAgICAgICAgcmV0dXJuIHNpbmdsZUVudHJ5KCkgPT0gdmFs
dWU7DQogICAgICAgIHJldHVybiBjb250YWluc091dE9mTGluZSh2YWx1ZSk7DQogICAgfQ0KICAg
IA0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCBtZXJnZShjb25zdCBUaW55UHRyU2V0JiBvdGhlcikN
CiAgICB7DQogICAgICAgIGlmIChvdGhlci5pc1RoaW4oKSkgew0KICAgICAgICAgICAgaWYgKG90
aGVyLnNpbmdsZUVudHJ5KCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGFkZChvdGhlci5zaW5n
bGVFbnRyeSgpKTsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAg
ICANCiAgICAgICAgcmV0dXJuIG1lcmdlT3RoZXJPdXRPZkxpbmUob3RoZXIpOw0KICAgIH0NCiAg
ICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0KICAgIHZvaWQgZm9yRWFjaChjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzVGhpbigpKSB7
DQogICAgICAgICAgICBpZiAoIXNpbmdsZUVudHJ5KCkpDQogICAgICAgICAgICAgICAgcmV0dXJu
Ow0KICAgICAgICAgICAgZnVuY3RvcihzaW5nbGVFbnRyeSgpKTsNCiAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHRo
aXMtPmxpc3QoKTsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPm1fbGVu
Z3RoOyArK2kpDQogICAgICAgICAgICBmdW5jdG9yKGxpc3QtPmxpc3QoKVtpXSk7DQogICAgfQ0K
ICAgICAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0KICAgIHZvaWQgZ2VuZXJp
Y0ZpbHRlcihjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzVGhp
bigpKSB7DQogICAgICAgICAgICBpZiAoIXNpbmdsZUVudHJ5KCkpDQogICAgICAgICAgICAgICAg
cmV0dXJuOw0KICAgICAgICAgICAgaWYgKGZ1bmN0b3Ioc2luZ2xlRW50cnkoKSkpDQogICAgICAg
ICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgY2xlYXIoKTsNCiAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHRo
aXMtPmxpc3QoKTsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPm1fbGVu
Z3RoOyArK2kpIHsNCiAgICAgICAgICAgIGlmIChmdW5jdG9yKGxpc3QtPmxpc3QoKVtpXSkpDQog
ICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICBsaXN0LT5saXN0KClbaS0tXSA9
IGxpc3QtPmxpc3QoKVstLWxpc3QtPm1fbGVuZ3RoXTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAo
IWxpc3QtPm1fbGVuZ3RoKQ0KICAgICAgICAgICAgY2xlYXIoKTsNCiAgICB9DQogICAgICAgIA0K
ICAgIHZvaWQgZmlsdGVyKGNvbnN0IFRpbnlQdHJTZXQmIG90aGVyKQ0KICAgIHsNCiAgICAgICAg
aWYgKG90aGVyLmlzVGhpbigpKSB7DQogICAgICAgICAgICBpZiAoIW90aGVyLnNpbmdsZUVudHJ5
KCkgfHwgIWNvbnRhaW5zKG90aGVyLnNpbmdsZUVudHJ5KCkpKQ0KICAgICAgICAgICAgICAgIGNs
ZWFyKCk7DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBjbGVhcigpOw0KICAg
ICAgICAgICAgICAgIHNldChvdGhlci5zaW5nbGVFbnRyeSgpKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgZ2VuZXJpY0Zp
bHRlcihbJl0gKFQgdmFsdWUpIHsgcmV0dXJuIG90aGVyLmNvbnRhaW5zT3V0T2ZMaW5lKHZhbHVl
KTsgfSk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgZXhjbHVkZShjb25zdCBUaW55UHRyU2V0JiBv
dGhlcikNCiAgICB7DQogICAgICAgIGlmIChvdGhlci5pc1RoaW4oKSkgew0KICAgICAgICAgICAg
aWYgKG90aGVyLnNpbmdsZUVudHJ5KCkpDQogICAgICAgICAgICAgICAgcmVtb3ZlKG90aGVyLnNp
bmdsZUVudHJ5KCkpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIA0K
ICAgICAgICBnZW5lcmljRmlsdGVyKFsmXSAoVCB2YWx1ZSkgeyByZXR1cm4gIW90aGVyLmNvbnRh
aW5zT3V0T2ZMaW5lKHZhbHVlKTsgfSk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgaXNTdWJzZXRP
Zihjb25zdCBUaW55UHRyU2V0JiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChpc1Ro
aW4oKSkgew0KICAgICAgICAgICAgaWYgKCFzaW5nbGVFbnRyeSgpKQ0KICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOw0KICAgICAgICAgICAgcmV0dXJuIG90aGVyLmNvbnRhaW5zKHNpbmdsZUVu
dHJ5KCkpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZiAob3RoZXIuaXNUaGluKCkp
IHsNCiAgICAgICAgICAgIGlmICghb3RoZXIuc2luZ2xlRW50cnkoKSkNCiAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICBPdXRPZkxpbmVMaXN0KiBsaXN0ID0gdGhpcy0+
bGlzdCgpOw0KICAgICAgICAgICAgaWYgKGxpc3QtPm1fbGVuZ3RoID49IDIpDQogICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgaWYgKGxpc3QtPmxpc3QoKVswXSA9PSBv
dGhlci5zaW5nbGVFbnRyeSgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBPdXRPZkxp
bmVMaXN0KiBsaXN0ID0gdGhpcy0+bGlzdCgpOw0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGlzdC0+bV9sZW5ndGg7ICsraSkgew0KICAgICAgICAgICAgaWYgKCFvdGhlci5jb250
YWluc091dE9mTGluZShsaXN0LT5saXN0KClbaV0pKQ0KICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgDQogICAg
Ym9vbCBpc1N1cGVyc2V0T2YoY29uc3QgVGlueVB0clNldCYgb3RoZXIpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gb3RoZXIuaXNTdWJzZXRPZigqdGhpcyk7DQogICAgfQ0KICAgIA0KICAg
IGJvb2wgb3ZlcmxhcHMoY29uc3QgVGlueVB0clNldCYgb3RoZXIpIGNvbnN0DQogICAgew0KICAg
ICAgICBpZiAoaXNUaGluKCkpIHsNCiAgICAgICAgICAgIGlmICghc2luZ2xlRW50cnkoKSkNCiAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICByZXR1cm4gb3RoZXIuY29u
dGFpbnMoc2luZ2xlRW50cnkoKSk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmIChv
dGhlci5pc1RoaW4oKSkgew0KICAgICAgICAgICAgaWYgKCFvdGhlci5zaW5nbGVFbnRyeSgpKQ0K
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIHJldHVybiBjb250YWlu
c091dE9mTGluZShvdGhlci5zaW5nbGVFbnRyeSgpKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCA9IHRoaXMtPmxpc3QoKTsNCiAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPm1fbGVuZ3RoOyArK2kpIHsNCiAgICAgICAgICAgIGlm
IChvdGhlci5jb250YWluc091dE9mTGluZShsaXN0LT5saXN0KClbaV0pKQ0KICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9
DQogICAgDQogICAgc2l6ZV90IHNpemUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzVGhp
bigpKQ0KICAgICAgICAgICAgcmV0dXJuICEhc2luZ2xlRW50cnkoKTsNCiAgICAgICAgcmV0dXJu
IGxpc3QoKS0+bV9sZW5ndGg7DQogICAgfQ0KICAgIA0KICAgIFQgYXQoc2l6ZV90IGkpIGNvbnN0
DQogICAgew0KICAgICAgICBpZiAoaXNUaGluKCkpIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIHJldHVybiBzaW5nbGVFbnRyeSgp
Ow0KICAgICAgICB9DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGxpc3QoKS0+
bGlzdCgpW2ldOw0KICAgIH0NCiAgICANCiAgICBUIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0
IHsgcmV0dXJuIGF0KGkpOyB9DQogICAgDQogICAgVCBsYXN0KCkgY29uc3QNCiAgICB7DQogICAg
ICAgIGlmIChpc1RoaW4oKSkgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAg
cmV0dXJuIHNpbmdsZUVudHJ5KCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGxpc3QoKS0+
bGlzdCgpW2xpc3QoKS0+bV9sZW5ndGggLSAxXTsNCiAgICB9DQogICAgDQogICAgY2xhc3MgaXRl
cmF0b3Igew0KICAgIHB1YmxpYzoNCiAgICAgICAgaXRlcmF0b3IoKQ0KICAgICAgICAgICAgOiBt
X3NldChudWxscHRyKQ0KICAgICAgICAgICAgLCBtX2luZGV4KDApDQogICAgICAgIHsNCiAgICAg
ICAgfQ0KICAgICAgICANCiAgICAgICAgaXRlcmF0b3IoY29uc3QgVGlueVB0clNldCogc2V0LCBz
aXplX3QgaW5kZXgpDQogICAgICAgICAgICA6IG1fc2V0KHNldCkNCiAgICAgICAgICAgICwgbV9p
bmRleChpbmRleCkNCiAgICAgICAgew0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBUIG9w
ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0LT5hdChtX2luZGV4KTsgfQ0KICAgICAgICBp
dGVyYXRvciYgb3BlcmF0b3IrKygpDQogICAgICAgIHsNCiAgICAgICAgICAgIG1faW5kZXgrKzsN
CiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IG90
aGVyLm1faW5kZXg7IH0NCiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0NCiAgICAgICAgDQogICAg
cHJpdmF0ZToNCiAgICAgICAgY29uc3QgVGlueVB0clNldCogbV9zZXQ7DQogICAgICAgIHNpemVf
dCBtX2luZGV4Ow0KICAgIH07DQogICAgDQogICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBpdGVyYXRvcih0aGlzLCAwKTsgfQ0KICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIGl0ZXJhdG9yKHRoaXMsIHNpemUoKSk7IH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGlueVB0clNldCYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoc2l6ZSgp
ICE9IG90aGVyLnNpemUoKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgcmV0
dXJuIGlzU3Vic2V0T2Yob3RoZXIpOw0KICAgIH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVGlueVB0clNldCYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7DQogICAgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICBmcmllbmQgY2xhc3Mg
SlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU7DQoNCiAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnRwdHJfdCBmYXRGbGFnID0gMTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBy
ZXNlcnZlZEZsYWcgPSAyOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGZsYWdzID0g
ZmF0RmxhZyB8IHJlc2VydmVkRmxhZzsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBy
ZXNlcnZlZFZhbHVlID0gNDsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZGVmYXVs
dFN0YXJ0aW5nU2l6ZSA9IDQ7DQogICAgDQogICAgX19kZWNsc3BlYyhub2lubGluZSkgYm9vbCBh
ZGRPdXRPZkxpbmUoVCB2YWx1ZSkNCiAgICB7DQogICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3Qg
PSB0aGlzLT5saXN0KCk7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5t
X2xlbmd0aDsgKytpKSB7DQogICAgICAgICAgICBpZiAobGlzdC0+bGlzdCgpW2ldID09IHZhbHVl
KQ0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgaWYgKGxpc3QtPm1fbGVuZ3RoIDwgbGlzdC0+bV9jYXBhY2l0eSkgew0KICAgICAgICAg
ICAgbGlzdC0+bGlzdCgpW2xpc3QtPm1fbGVuZ3RoKytdID0gdmFsdWU7DQogICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgT3V0T2ZMaW5lTGlzdCog
bmV3TGlzdCA9IE91dE9mTGluZUxpc3Q6OmNyZWF0ZShsaXN0LT5tX2NhcGFjaXR5ICogMik7DQog
ICAgICAgIG5ld0xpc3QtPm1fbGVuZ3RoID0gbGlzdC0+bV9sZW5ndGggKyAxOw0KICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBsaXN0LT5tX2xlbmd0aDsgaS0tOykNCiAgICAgICAgICAgIG5ld0xp
c3QtPmxpc3QoKVtpXSA9IGxpc3QtPmxpc3QoKVtpXTsNCiAgICAgICAgbmV3TGlzdC0+bGlzdCgp
W2xpc3QtPm1fbGVuZ3RoXSA9IHZhbHVlOw0KICAgICAgICBPdXRPZkxpbmVMaXN0OjpkZXN0cm95
KGxpc3QpOw0KICAgICAgICBzZXQobmV3TGlzdCk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAg
IH0NCiAgICANCiAgICBfX2RlY2xzcGVjKG5vaW5saW5lKSBib29sIG1lcmdlT3RoZXJPdXRPZkxp
bmUoY29uc3QgVGlueVB0clNldCYgb3RoZXIpDQogICAgew0KICAgICAgICBPdXRPZkxpbmVMaXN0
KiBsaXN0ID0gb3RoZXIubGlzdCgpOw0KICAgICAgICBpZiAobGlzdC0+bV9sZW5ndGggPj0gMikg
ew0KICAgICAgICAgICAgaWYgKGlzVGhpbigpKSB7DQogICAgICAgICAgICAgICAgT3V0T2ZMaW5l
TGlzdCogbXlOZXdMaXN0ID0gT3V0T2ZMaW5lTGlzdDo6Y3JlYXRlKA0KICAgICAgICAgICAgICAg
ICAgICBsaXN0LT5tX2xlbmd0aCArICEhc2luZ2xlRW50cnkoKSk7DQogICAgICAgICAgICAgICAg
aWYgKHNpbmdsZUVudHJ5KCkpIHsNCiAgICAgICAgICAgICAgICAgICAgbXlOZXdMaXN0LT5tX2xl
bmd0aCA9IDE7DQogICAgICAgICAgICAgICAgICAgIG15TmV3TGlzdC0+bGlzdCgpWzBdID0gc2lu
Z2xlRW50cnkoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc2V0KG15TmV3
TGlzdCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsN
CiAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytp
KQ0KICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gYWRkT3V0T2ZMaW5lKGxpc3QtPmxpc3QoKVtp
XSk7DQogICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gYWRkKGxpc3QtPmxpc3QoKVswXSk7DQog
ICAgfQ0KICAgIA0KICAgIGJvb2wgY29udGFpbnNPdXRPZkxpbmUoVCB2YWx1ZSkgY29uc3QNCiAg
ICB7DQogICAgICAgIE91dE9mTGluZUxpc3QqIGxpc3QgPSB0aGlzLT5saXN0KCk7DQogICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5tX2xlbmd0aDsgKytpKSB7DQogICAgICAg
ICAgICBpZiAobGlzdC0+bGlzdCgpW2ldID09IHZhbHVlKQ0KICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQog
ICAgX19mb3JjZWlubGluZSB2b2lkIGNvcHlGcm9tKGNvbnN0IFRpbnlQdHJTZXQmIG90aGVyKQ0K
ICAgIHsNCiAgICAgICAgaWYgKG90aGVyLmlzVGhpbigpIHx8IG90aGVyLm1fcG9pbnRlciA9PSBy
ZXNlcnZlZFZhbHVlKSB7DQogICAgICAgICAgICBib29sIHZhbHVlID0gZ2V0UmVzZXJ2ZWRGbGFn
KCk7DQogICAgICAgICAgICBtX3BvaW50ZXIgPSBvdGhlci5tX3BvaW50ZXI7DQogICAgICAgICAg
ICBzZXRSZXNlcnZlZEZsYWcodmFsdWUpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9
DQogICAgICAgIGNvcHlGcm9tT3V0T2ZMaW5lKG90aGVyKTsNCiAgICB9DQogICAgDQogICAgX19k
ZWNsc3BlYyhub2lubGluZSkgdm9pZCBjb3B5RnJvbU91dE9mTGluZShjb25zdCBUaW55UHRyU2V0
JiBvdGhlcikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgT3V0T2ZMaW5lTGlz
dCogb3RoZXJMaXN0ID0gb3RoZXIubGlzdCgpOw0KICAgICAgICBPdXRPZkxpbmVMaXN0KiBteUxp
c3QgPSBPdXRPZkxpbmVMaXN0OjpjcmVhdGUob3RoZXJMaXN0LT5tX2xlbmd0aCk7DQogICAgICAg
IG15TGlzdC0+bV9sZW5ndGggPSBvdGhlckxpc3QtPm1fbGVuZ3RoOw0KICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBvdGhlckxpc3QtPm1fbGVuZ3RoOyBpLS07KQ0KICAgICAgICAgICAgbXlMaXN0
LT5saXN0KClbaV0gPSBvdGhlckxpc3QtPmxpc3QoKVtpXTsNCiAgICAgICAgc2V0KG15TGlzdCk7
DQogICAgfQ0KICAgIA0KICAgIGNsYXNzIE91dE9mTGluZUxpc3Qgew0KICAgIHB1YmxpYzoNCiAg
ICAgICAgc3RhdGljIE91dE9mTGluZUxpc3QqIGNyZWF0ZSh1bnNpZ25lZCBjYXBhY2l0eSkNCiAg
ICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhzaXpl
b2YoT3V0T2ZMaW5lTGlzdCkgKyBjYXBhY2l0eSAqIHNpemVvZihUKSkpIE91dE9mTGluZUxpc3Qo
MCwgY2FwYWNpdHkpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KE91dE9mTGluZUxpc3QqIGxpc3QpDQogICAgICAgIHsNCiAgICAgICAgICAgIGZhc3RG
cmVlKGxpc3QpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBUKiBsaXN0KCkgeyByZXR1
cm4gYml0d2lzZV9jYXN0PFQqPih0aGlzICsgMSk7IH0NCiAgICAgICAgDQogICAgICAgIE91dE9m
TGluZUxpc3QodW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBjYXBhY2l0eSkNCiAgICAgICAgICAg
IDogbV9sZW5ndGgobGVuZ3RoKQ0KICAgICAgICAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQ0K
ICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICB1bnNpZ25lZCBtX2xlbmd0aDsNCiAgICAg
ICAgdW5zaWduZWQgbV9jYXBhY2l0eTsNCiAgICB9Ow0KICAgIA0KICAgIF9fZm9yY2VpbmxpbmUg
dm9pZCBkZWxldGVMaXN0SWZOZWNlc3NhcnkoKQ0KICAgIHsNCiAgICAgICAgaWYgKCFpc1RoaW4o
KSkgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgT3V0T2ZMaW5lTGlzdDo6
ZGVzdHJveShsaXN0KCkpOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIGJvb2wgaXNUaGlu
KCkgY29uc3QgeyByZXR1cm4gIShtX3BvaW50ZXIgJiBmYXRGbGFnKTsgfQ0KICAgIA0KICAgIHZv
aWQqIHBvaW50ZXIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2
b2lkKj4obV9wb2ludGVyICYgfmZsYWdzKTsNCiAgICB9DQogICAgDQogICAgVCBzaW5nbGVFbnRy
eSgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8VD4ocG9pbnRlcigpKTsNCiAgICB9DQogICAgDQogICAgT3V0T2ZMaW5lTGlzdCog
bGlzdCgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxPdXRPZkxpbmVMaXN0Kj4ocG9pbnRlcigpKTsNCiAgICB9DQogICAgDQogICAg
dm9pZCBzZXQoVCB2YWx1ZSkNCiAgICB7DQogICAgICAgIHNldChiaXR3aXNlX2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSksIHRydWUpOw0KICAgIH0NCiAgICB2b2lkIHNldChPdXRPZkxpbmVMaXN0KiBs
aXN0KQ0KICAgIHsNCiAgICAgICAgc2V0KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpc3QpLCBm
YWxzZSk7DQogICAgfQ0KICAgIHZvaWQgc2V0RW1wdHkoKQ0KICAgIHsNCiAgICAgICAgc2V0KDAs
IHRydWUpOw0KICAgIH0NCiAgICB2b2lkIHNldCh1aW50cHRyX3QgcG9pbnRlciwgYm9vbCBzaW5n
bGVFbnRyeSkNCiAgICB7DQogICAgICAgIG1fcG9pbnRlciA9IHBvaW50ZXIgfCAoc2luZ2xlRW50
cnkgPyAwIDogZmF0RmxhZykgfCAobV9wb2ludGVyICYgcmVzZXJ2ZWRGbGFnKTsNCiAgICB9DQog
ICAgYm9vbCBnZXRSZXNlcnZlZEZsYWcoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXIgJiByZXNl
cnZlZEZsYWc7IH0NCiAgICB2b2lkIHNldFJlc2VydmVkRmxhZyhib29sIHZhbHVlKQ0KICAgIHsN
CiAgICAgICAgaWYgKHZhbHVlKQ0KICAgICAgICAgICAgbV9wb2ludGVyIHw9IHJlc2VydmVkRmxh
ZzsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgbV9wb2ludGVyICY9IH5yZXNlcnZlZEZsYWc7
DQogICAgfQ0KICAgIA0KICAgIHVpbnRwdHJfdCBtX3BvaW50ZXI7DQp9Ow0KDQp9IA0KDQp1c2lu
ZyBXVEY6OlRpbnlQdHJTZXQ7DQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcU3RydWN0dXJlU2V0LmgiDQoNCm5hbWVz
cGFjZSBKU0Mgew0KDQpjbGFzcyBUcmFja2VkUmVmZXJlbmNlczsNCg0KY2xhc3MgU3RydWN0dXJl
U2V0IDogcHVibGljIFRpbnlQdHJTZXQ8U3RydWN0dXJlKj4gew0KcHVibGljOg0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIFN0cnVjdHVyZVNldCgpDQogICAgew0KICAgIH0NCiAg
ICANCiAgICBTdHJ1Y3R1cmVTZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgICAgIDogVGlu
eVB0clNldChzdHJ1Y3R1cmUpDQogICAgew0KICAgIH0NCiAgICANCiAgICBTdHJ1Y3R1cmUqIG9u
bHlTdHJ1Y3R1cmUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOw0K
ICAgIH0NCg0KICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsNCiAgICBi
b29sIGlzU3RpbGxBbGl2ZShWTSYpIGNvbnN0Ow0KICAgIA0KICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7DQogICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7DQp9Ow0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVHlwZVNldC5oIg0KDQoNCg0K
DQoNCg0KDQpuYW1lc3BhY2UgSW5zcGVjdG9yIHsNCm5hbWVzcGFjZSBQcm90b2NvbCAgew0KDQpu
YW1lc3BhY2UgUnVudGltZSB7DQpjbGFzcyBTdHJ1Y3R1cmVEZXNjcmlwdGlvbjsNCmNsYXNzIFR5
cGVTZXQ7DQp9DQoNCn0NCn0NCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFN0cnVjdHVyZVNo
YXBlIDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlU2hhcGU+IHsNCiAgICBmcmllbmQgY2xh
c3MgVHlwZVNldDsNCg0KcHVibGljOg0KICAgIFN0cnVjdHVyZVNoYXBlKCk7DQoNCiAgICBzdGF0
aWMgUmVmPFN0cnVjdHVyZVNoYXBlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0
cnVjdHVyZVNoYXBlKTsgfQ0KICAgIFN0cmluZyBwcm9wZXJ0eUhhc2goKTsNCiAgICB2b2lkIG1h
cmtBc0ZpbmFsKCk7DQogICAgdm9pZCBhZGRQcm9wZXJ0eShVbmlxdWVkU3RyaW5nSW1wbCYpOw0K
ICAgIFN0cmluZyBzdHJpbmdSZXByZXNlbnRhdGlvbigpOw0KICAgIFN0cmluZyB0b0pTT05TdHJp
bmcoKSBjb25zdDsNCiAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0
dXJlRGVzY3JpcHRpb24+IGluc3BlY3RvclJlcHJlc2VudGF0aW9uKCk7DQogICAgdm9pZCBzZXRD
b25zdHJ1Y3Rvck5hbWUoU3RyaW5nIG5hbWUpIHsgbV9jb25zdHJ1Y3Rvck5hbWUgPSAobmFtZS5p
c0VtcHR5KCkgPyAiT2JqZWN0Il9zIDogbmFtZSk7IH0NCiAgICBTdHJpbmcgY29uc3RydWN0b3JO
YW1lKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5hbWU7IH0NCiAgICB2b2lkIHNldFByb3RvKFJl
ZjxTdHJ1Y3R1cmVTaGFwZT4mJiBzaGFwZSkgeyBtX3Byb3RvID0gc3RkOjptb3ZlPFdURjo6Q2hl
Y2tNb3ZlUGFyYW1ldGVyPihzaGFwZSk7IH0NCiAgICB2b2lkIGVudGVyRGljdGlvbmFyeU1vZGUo
KTsNCg0KcHJpdmF0ZToNCiAgICBzdGF0aWMgU3RyaW5nIGxlYXN0Q29tbW9uQW5jZXN0b3IoY29u
c3QgVmVjdG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+Jik7DQogICAgc3RhdGljIFJlZjxTdHJ1Y3R1
cmVTaGFwZT4gbWVyZ2UoUmVmPFN0cnVjdHVyZVNoYXBlPiYmLCBSZWY8U3RydWN0dXJlU2hhcGU+
JiYpOw0KICAgIGJvb2wgaGFzU2FtZVByb3RvdHlwZUNoYWluKGNvbnN0IFN0cnVjdHVyZVNoYXBl
Jik7DQoNCiAgICBib29sIG1fZmluYWw7DQogICAgYm9vbCBtX2lzSW5EaWN0aW9uYXJ5TW9kZTsN
CiAgICBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNo
PiBtX2ZpZWxkczsNCiAgICBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50
aWZpZXJSZXBIYXNoPiBtX29wdGlvbmFsRmllbGRzOw0KICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFw
ZT4gbV9wcm90bzsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RyaW5nPiBtX3Byb3BlcnR5SGFzaDsN
CiAgICBTdHJpbmcgbV9jb25zdHJ1Y3Rvck5hbWU7DQp9Ow0KDQpjbGFzcyBUeXBlU2V0IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFR5cGVTZXQ+IHsNCg0KcHVibGljOg0KICAgIHN0YXRp
YyBSZWY8VHlwZVNldD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBlU2V0KTsg
fQ0KICAgIFR5cGVTZXQoKTsNCiAgICB2b2lkIGFkZFR5cGVJbmZvcm1hdGlvbihSdW50aW1lVHlw
ZSwgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiYmLCBTdHJ1Y3R1cmUqLCBib29sIHNhd1BvbHlQcm90
b1N0cnVjdHVyZSk7DQogICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoVk0mKTsNCiAgICBTdHJpbmcg
ZHVtcFR5cGVzKCkgY29uc3Q7DQogICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3Q7DQogICAg
UmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJl
RGVzY3JpcHRpb24+PiBhbGxTdHJ1Y3R1cmVSZXByZXNlbnRhdGlvbnMoKSBjb25zdDsNCiAgICBT
dHJpbmcgdG9KU09OU3RyaW5nKCkgY29uc3Q7DQogICAgYm9vbCBpc092ZXJmbG93bigpIGNvbnN0
IHsgcmV0dXJuIG1faXNPdmVyZmxvd247IH0NCiAgICBTdHJpbmcgbGVhc3RDb21tb25BbmNlc3Rv
cigpIGNvbnN0Ow0KICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlU2V0
PiBpbnNwZWN0b3JUeXBlU2V0KCkgY29uc3Q7DQogICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWVuVHlwZXMgPT0gVHlwZU5vdGhpbmc7IH0NCiAgICBib29sIGRvZXNUeXBlQ29u
Zm9ybVRvKFJ1bnRpbWVUeXBlTWFzayB0ZXN0KSBjb25zdDsNCiAgICBSdW50aW1lVHlwZU1hc2sg
c2VlblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZWVuVHlwZXM7IH0NCiAgICBTdHJ1Y3R1cmVT
ZXQgc3RydWN0dXJlU2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpIGNvbnN0IHsgcmV0dXJu
IG1fc3RydWN0dXJlU2V0OyB9DQoNCiAgICBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsNCnByaXZh
dGU6DQogICAgYm9vbCBtX2lzT3ZlcmZsb3duOw0KICAgIFJ1bnRpbWVUeXBlTWFzayBtX3NlZW5U
eXBlczsNCiAgICBWZWN0b3I8UmVmPFN0cnVjdHVyZVNoYXBlPj4gbV9zdHJ1Y3R1cmVIaXN0b3J5
Ow0KICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsNCn07DQoNCn0gDQojbGluZSAyOSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29k
ZVxcVHlwZUxvY2F0aW9uLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQplbnVtIFR5cGVQcm9maWxl
ckdsb2JhbElERmxhZ3Mgew0KICAgIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9u
ID0gLTEsDQogICAgVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0cyA9IC0yLA0KICAgIFR5cGVQ
cm9maWxlclJldHVyblN0YXRlbWVudCA9IC0zDQp9Ow0KDQp0eXBlZGVmIGludHB0cl90IEdsb2Jh
bFZhcmlhYmxlSUQ7DQoNCmNsYXNzIFR5cGVMb2NhdGlvbiB7DQpwdWJsaWM6DQogICAgVHlwZUxv
Y2F0aW9uKCkNCiAgICAgICAgOiBtX2luc3RydWN0aW9uVHlwZVNldChUeXBlU2V0OjpjcmVhdGUo
KSkNCiAgICAgICAgLCBtX2dsb2JhbFR5cGVTZXQobnVsbHB0cikNCiAgICAgICAgLCBtX2Rpdm90
Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVyblN0YXRlbWVudCgweGZmZmZmZmZmKQ0KICAgICAgICAs
IG1fbGFzdFNlZW5UeXBlKFR5cGVOb3RoaW5nKQ0KICAgIHsNCiAgICB9DQoNCiAgICBHbG9iYWxW
YXJpYWJsZUlEIG1fZ2xvYmFsVmFyaWFibGVJRDsNCiAgICBSZWZQdHI8VHlwZVNldD4gbV9pbnN0
cnVjdGlvblR5cGVTZXQ7DQogICAgUmVmUHRyPFR5cGVTZXQ+IG1fZ2xvYmFsVHlwZVNldDsNCiAg
ICBpbnRwdHJfdCBtX3NvdXJjZUlEOw0KICAgIHVuc2lnbmVkIG1fZGl2b3RTdGFydDsNCiAgICB1
bnNpZ25lZCBtX2Rpdm90RW5kOw0KICAgIHVuc2lnbmVkIG1fZGl2b3RGb3JGdW5jdGlvbk9mZnNl
dElmUmV0dXJuU3RhdGVtZW50Ow0KICAgIFJ1bnRpbWVUeXBlIG1fbGFzdFNlZW5UeXBlOw0KfTsN
Cg0KfSANCiNsaW5lIDM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFN5bWJvbFRhYmxlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZhck9mZnNldC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxEaXJlY3RBcmd1bWVudHNPZmZzZXQuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KDQoNCmNsYXNzIERpcmVjdEFyZ3VtZW50c09m
ZnNldCA6IHB1YmxpYyBHZW5lcmljT2Zmc2V0PERpcmVjdEFyZ3VtZW50c09mZnNldD4gew0KcHVi
bGljOg0KICAgIERpcmVjdEFyZ3VtZW50c09mZnNldCgpIHsgfQ0KICAgIA0KICAgIGV4cGxpY2l0
IERpcmVjdEFyZ3VtZW50c09mZnNldCh1bnNpZ25lZCBvZmZzZXQpDQogICAgICAgIDogR2VuZXJp
Y09mZnNldChvZmZzZXQpDQogICAgew0KICAgIH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsNCn07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWYXJPZmZzZXQuaCINCg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxi
eXRlY29kZVxcVmlydHVhbFJlZ2lzdGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBK
U0Mgew0KDQppbmxpbmUgYm9vbCB2aXJ0dWFsUmVnaXN0ZXJJc0xvY2FsKGludCBvcGVyYW5kKQ0K
ew0KICAgIHJldHVybiBvcGVyYW5kIDwgMDsNCn0NCg0KaW5saW5lIGJvb2wgdmlydHVhbFJlZ2lz
dGVySXNBcmd1bWVudChpbnQgb3BlcmFuZCkNCnsNCiAgICByZXR1cm4gb3BlcmFuZCA+PSAwOw0K
fQ0KDQoNCmNsYXNzIFJlZ2lzdGVySUQ7DQoNCmNsYXNzIFZpcnR1YWxSZWdpc3RlciB7DQpwdWJs
aWM6DQogICAgZnJpZW5kIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
bnQpOw0KICAgIGZyaWVuZCBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnRJbmNsdWRpbmdUaGlzKGludCwgaW50KTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGlu
dmFsaWRWaXJ0dWFsUmVnaXN0ZXIgPSAweDNmZmZmZmZmOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IGZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXg7DQoNCiAgICBWaXJ0dWFsUmVnaXN0ZXIoUmVnaXN0ZXJJRCopOw0KICAgIFZpcnR1YWxSZWdp
c3RlcihSZWZQdHI8UmVnaXN0ZXJJRD4pOw0KDQogICAgVmlydHVhbFJlZ2lzdGVyKCkNCiAgICAg
ICAgOiBtX3ZpcnR1YWxSZWdpc3RlcihpbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQ0KICAgIHsgfQ0K
DQogICAgZXhwbGljaXQgVmlydHVhbFJlZ2lzdGVyKGludCB2aXJ0dWFsUmVnaXN0ZXIpDQogICAg
ICAgIDogbV92aXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKQ0KICAgIHsgfQ0KDQogICAg
VmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Qgc2xvdCkNCiAgICAgICAgOiBtX3ZpcnR1YWxS
ZWdpc3RlcihzdGF0aWNfY2FzdDxpbnQ+KHNsb3QpKQ0KICAgIHsgfQ0KDQogICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gKG1fdmlydHVhbFJlZ2lzdGVyICE9IGludmFsaWRWaXJ0dWFs
UmVnaXN0ZXIpOyB9DQogICAgYm9vbCBpc0xvY2FsKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbFJl
Z2lzdGVySXNMb2NhbChtX3ZpcnR1YWxSZWdpc3Rlcik7IH0NCiAgICBib29sIGlzQXJndW1lbnQo
KSBjb25zdCB7IHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJJc0FyZ3VtZW50KG1fdmlydHVhbFJlZ2lz
dGVyKTsgfQ0KICAgIGJvb2wgaXNIZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdp
c3RlciA+PSAwICYmIG1fdmlydHVhbFJlZ2lzdGVyIDwgQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3Vt
ZW50OyB9DQogICAgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVn
aXN0ZXIgPj0gZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0NCiAgICBpbnQgdG9Mb2NhbCgp
IGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gb3BlcmFuZFRvTG9jYWwobV92aXJ0dWFsUmVnaXN0
ZXIpOyB9DQogICAgaW50IHRvQXJndW1lbnQoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG9w
ZXJhbmRUb0FyZ3VtZW50KG1fdmlydHVhbFJlZ2lzdGVyKTsgfQ0KICAgIGludCB0b0NvbnN0YW50
SW5kZXgoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyIC0gZmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0NCiAgICBpbnQgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV92aXJ0dWFsUmVnaXN0ZXI7IH0NCiAgICBpbnQgb2Zmc2V0SW5CeXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKTsgfQ0KDQogICAgYm9v
bCBvcGVyYXRvcj09KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0
dWFsUmVnaXN0ZXIgPT0gb3RoZXIubV92aXJ0dWFsUmVnaXN0ZXI7IH0NCiAgICBib29sIG9wZXJh
dG9yIT0oVmlydHVhbFJlZ2lzdGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdp
c3RlciAhPSBvdGhlci5tX3ZpcnR1YWxSZWdpc3RlcjsgfQ0KICAgIGJvb2wgb3BlcmF0b3I8KFZp
cnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPCBv
dGhlci5tX3ZpcnR1YWxSZWdpc3RlcjsgfQ0KICAgIGJvb2wgb3BlcmF0b3I+KFZpcnR1YWxSZWdp
c3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPiBvdGhlci5tX3Zp
cnR1YWxSZWdpc3RlcjsgfQ0KICAgIGJvb2wgb3BlcmF0b3I8PShWaXJ0dWFsUmVnaXN0ZXIgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyIDw9IG90aGVyLm1fdmlydHVhbFJl
Z2lzdGVyOyB9DQogICAgYm9vbCBvcGVyYXRvcj49KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPj0gb3RoZXIubV92aXJ0dWFsUmVnaXN0ZXI7
IH0NCiAgICANCiAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmF0b3IrKGludCB2YWx1ZSkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIob2Zmc2V0KCkgKyB2YWx1ZSk7
DQogICAgfQ0KICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYXRvci0oaW50IHZhbHVlKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihvZmZzZXQoKSAtIHZhbHVlKTsN
CiAgICB9DQogICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhdG9yKyhWaXJ0dWFsUmVnaXN0ZXIgdmFs
dWUpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG9mZnNldCgp
ICsgdmFsdWUub2Zmc2V0KCkpOw0KICAgIH0NCiAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmF0b3It
KFZpcnR1YWxSZWdpc3RlciB2YWx1ZSkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBWaXJ0
dWFsUmVnaXN0ZXIob2Zmc2V0KCkgLSB2YWx1ZS5vZmZzZXQoKSk7DQogICAgfQ0KICAgIFZpcnR1
YWxSZWdpc3RlciYgb3BlcmF0b3IrPShpbnQgdmFsdWUpDQogICAgew0KICAgICAgICByZXR1cm4g
KnRoaXMgPSAqdGhpcyArIHZhbHVlOw0KICAgIH0NCiAgICBWaXJ0dWFsUmVnaXN0ZXImIG9wZXJh
dG9yLT0oaW50IHZhbHVlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgLSB2
YWx1ZTsNCiAgICB9DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Ow0KDQpwcml2YXRlOg0KICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7
IHJldHVybiAtMSAtIGxvY2FsOyB9DQogICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQg
b3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9DQogICAgc3RhdGljIGludCBvcGVyYW5k
VG9Bcmd1bWVudChpbnQgb3BlcmFuZCkgeyByZXR1cm4gb3BlcmFuZCAtIENhbGxGcmFtZTo6dGhp
c0FyZ3VtZW50T2Zmc2V0KCk7IH0NCiAgICBzdGF0aWMgaW50IGFyZ3VtZW50VG9PcGVyYW5kKGlu
dCBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9m
ZnNldCgpOyB9DQoNCiAgICBpbnQgbV92aXJ0dWFsUmVnaXN0ZXI7DQp9Ow0KDQpzdGF0aWNfYXNz
ZXJ0KChzaXplb2YoVmlydHVhbFJlZ2lzdGVyKSA9PSBzaXplb2YoaW50KSksICJWaXJ0dWFsUmVn
aXN0ZXJfaXNfMzJiaXQiKTsNCg0KaW5saW5lIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpbnQgbG9jYWwpDQp7DQogICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXI6OmxvY2FsVG9PcGVyYW5kKGxvY2FsKSk7DQp9DQoNCmlubGluZSBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKGludCBhcmd1
bWVudCwgaW50IG9mZnNldCA9IDApDQp7DQogICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXI6OmFyZ3VtZW50VG9PcGVyYW5kKGFyZ3VtZW50KSArIG9mZnNldCk7DQp9DQoN
Cn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxWYXJPZmZzZXQuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51
bSBjbGFzcyBWYXJLaW5kIDogdWludDhfdCB7DQogICAgSW52YWxpZCwNCiAgICBTY29wZSwNCiAg
ICBTdGFjaywNCiAgICBEaXJlY3RBcmd1bWVudA0KfTsNCg0KY2xhc3MgVmFyT2Zmc2V0IHsNCnB1
YmxpYzoNCiAgICBWYXJPZmZzZXQoKQ0KICAgICAgICA6IG1fa2luZChWYXJLaW5kOjpJbnZhbGlk
KQ0KICAgICAgICAsIG1fb2Zmc2V0KDB4ZmZmZmZmZmYpDQogICAgew0KICAgIH0NCiAgICANCiAg
ICBWYXJPZmZzZXQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQ0KICAgICAgICA6IG1f
a2luZChWYXJLaW5kOjpJbnZhbGlkKQ0KICAgICAgICAsIG1fb2Zmc2V0KDApDQogICAgew0KICAg
IH0NCiAgICANCiAgICBleHBsaWNpdCBWYXJPZmZzZXQoVmlydHVhbFJlZ2lzdGVyIHN0YWNrT2Zm
c2V0KQ0KICAgIHsNCiAgICAgICAgaWYgKCFzdGFja09mZnNldC5pc1ZhbGlkKCkpIHsNCiAgICAg
ICAgICAgIG1fa2luZCA9IFZhcktpbmQ6OkludmFsaWQ7DQogICAgICAgICAgICBtX29mZnNldCA9
IDB4ZmZmZmZmZmY7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtX2tpbmQgPSBWYXJL
aW5kOjpTdGFjazsNCiAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3RhY2tPZmZzZXQub2Zmc2V0KCk7
DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgZXhwbGljaXQgVmFyT2Zmc2V0KFNjb3BlT2Zm
c2V0IHNjb3BlT2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgaWYgKCFzY29wZU9mZnNldCkgew0KICAg
ICAgICAgICAgbV9raW5kID0gVmFyS2luZDo6SW52YWxpZDsNCiAgICAgICAgICAgIG1fb2Zmc2V0
ID0gMHhmZmZmZmZmZjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1fa2luZCA9IFZh
cktpbmQ6OlNjb3BlOw0KICAgICAgICAgICAgbV9vZmZzZXQgPSBzY29wZU9mZnNldC5vZmZzZXQo
KTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBleHBsaWNpdCBWYXJPZmZzZXQoRGlyZWN0
QXJndW1lbnRzT2Zmc2V0IGNhcHR1cmVkQXJndW1lbnRzT2Zmc2V0KQ0KICAgIHsNCiAgICAgICAg
aWYgKCFjYXB0dXJlZEFyZ3VtZW50c09mZnNldCkgew0KICAgICAgICAgICAgbV9raW5kID0gVmFy
S2luZDo6SW52YWxpZDsNCiAgICAgICAgICAgIG1fb2Zmc2V0ID0gMHhmZmZmZmZmZjsNCiAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG1fa2luZCA9IFZhcktpbmQ6OkRpcmVjdEFyZ3VtZW50
Ow0KICAgICAgICAgICAgbV9vZmZzZXQgPSBjYXB0dXJlZEFyZ3VtZW50c09mZnNldC5vZmZzZXQo
KTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgVmFyT2Zmc2V0IGFzc2VtYmxl
KFZhcktpbmQga2luZCwgdW5zaWduZWQgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgVmFyT2Zmc2V0
IHJlc3VsdDsNCiAgICAgICAgcmVzdWx0Lm1fa2luZCA9IGtpbmQ7DQogICAgICAgIHJlc3VsdC5t
X29mZnNldCA9IG9mZnNldDsNCiAgICAgICAgcmVzdWx0LmNoZWNrU2FuaXR5KCk7DQogICAgICAg
IHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gbV9raW5kICE9IFZhcktpbmQ6OkludmFsaWQ7DQogICAgfQ0K
ICAgIA0KICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAh
aXNWYWxpZCgpOw0KICAgIH0NCiAgICANCiAgICBWYXJLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVy
biBtX2tpbmQ7IH0NCiAgICANCiAgICBib29sIGlzU3RhY2soKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIG1fa2luZCA9PSBWYXJLaW5kOjpTdGFjazsNCiAgICB9DQogICAgDQogICAgYm9v
bCBpc1Njb3BlKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2tpbmQgPT0gVmFyS2lu
ZDo6U2NvcGU7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgaXNEaXJlY3RBcmd1bWVudCgpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gbV9raW5kID09IFZhcktpbmQ6OkRpcmVjdEFyZ3VtZW50
Ow0KICAgIH0NCiAgICANCiAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhY2tPZmZzZXRVbmNoZWNrZWQo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFpc1N0YWNrKCkpDQogICAgICAgICAgICByZXR1
cm4gVmlydHVhbFJlZ2lzdGVyKCk7DQogICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIobV9v
ZmZzZXQpOw0KICAgIH0NCiAgICANCiAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldFVuY2hlY2tl
ZCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoIWlzU2NvcGUoKSkNCiAgICAgICAgICAgIHJl
dHVybiBTY29wZU9mZnNldCgpOw0KICAgICAgICByZXR1cm4gU2NvcGVPZmZzZXQobV9vZmZzZXQp
Ow0KICAgIH0NCiAgICANCiAgICBEaXJlY3RBcmd1bWVudHNPZmZzZXQgY2FwdHVyZWRBcmd1bWVu
dHNPZmZzZXRVbmNoZWNrZWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFpc0RpcmVjdEFy
Z3VtZW50KCkpDQogICAgICAgICAgICByZXR1cm4gRGlyZWN0QXJndW1lbnRzT2Zmc2V0KCk7DQog
ICAgICAgIHJldHVybiBEaXJlY3RBcmd1bWVudHNPZmZzZXQobV9vZmZzZXQpOw0KICAgIH0NCiAg
ICANCiAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhY2tPZmZzZXQoKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG1fb2Zmc2V0KTsN
CiAgICB9DQogICAgDQogICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gU2NvcGVPZmZzZXQobV9vZmZzZXQp
Ow0KICAgIH0NCiAgICANCiAgICBEaXJlY3RBcmd1bWVudHNPZmZzZXQgY2FwdHVyZWRBcmd1bWVu
dHNPZmZzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gRGlyZWN0QXJndW1lbnRzT2Zmc2V0KG1fb2Zmc2V0KTsNCiAgICB9DQogICAgDQogICAgdW5z
aWduZWQgcmF3T2Zmc2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuIG1fb2Zmc2V0Ow0KICAgIH0NCiAgICANCiAgICB2b2lkIGNoZWNrU2FuaXR5KCkg
Y29uc3QNCiAgICB7DQogICAgICAgIGlmICghMCkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgDQogICAgICAgIHN3aXRjaCAobV9raW5kKSB7DQogICAgICAgIGNhc2UgVmFyS2luZDo6SW52
YWxpZDoNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgY2FzZSBWYXJLaW5kOjpTY29wZToNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
ICAgIHJldHVybjsNCiAgICAgICAgY2FzZSBWYXJLaW5kOjpTdGFjazoNCiAgICAgICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgY2FzZSBWYXJLaW5kOjpEaXJl
Y3RBcmd1bWVudDoNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCiAgICANCiAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmFyT2Zmc2V0JiBvdGhlcikgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5kDQogICAgICAgICAgICAmJiBtX29m
ZnNldCA9PSBvdGhlci5tX29mZnNldDsNCiAgICB9DQogICAgDQogICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFZhck9mZnNldCYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7DQogICAgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2tpbmQpIDw8IDIwKSArIG1fb2Zmc2V0KTsNCiAgICB9DQogICAg
DQogICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gbV9raW5kID09IFZhcktpbmQ6OkludmFsaWQgJiYgIW1fb2Zmc2V0Ow0KICAgIH0N
CiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCiAgICANCnByaXZhdGU6
DQogICAgVmFyS2luZCBtX2tpbmQ7DQogICAgdW5zaWduZWQgbV9vZmZzZXQ7DQp9Ow0KDQpzdHJ1
Y3QgVmFyT2Zmc2V0SGFzaCB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVmFyT2Zm
c2V0JiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBWYXJPZmZzZXQmIGEsIGNvbnN0IFZhck9mZnNldCYgYikgeyByZXR1cm4gYSA9PSBiOyB9
DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVk
ID0gdHJ1ZTsNCn07DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mLCBKU0M6OlZhcktpbmQpOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgRGVmYXVsdEhhc2g7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlZh
ck9mZnNldD4gOiBKU0M6OlZhck9mZnNldEhhc2ggeyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czsNCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpW
YXJPZmZzZXQ+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6VmFyT2Zmc2V0PiB7DQogICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsNCn07DQoNCn0g
DQojbGluZSAzOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxTeW1ib2xUYWJsZS5oIg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0K
DQpjbGFzcyBTeW1ib2xUYWJsZTsNCg0KdXNpbmcgU3ltYm9sVGFibGVFbnRyeUZhdEVudHJ5TWFs
bG9jID0gRmFzdE1hbGxvYzsNCg0Kc3RhdGljIF9fZm9yY2VpbmxpbmUgaW50IG1pc3NpbmdTeW1i
b2xNYXJrZXIoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpzdHJ1
Y3QgU3ltYm9sVGFibGVFbnRyeSB7DQogICAgZnJpZW5kIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxl
RW50cnk7DQoNCnByaXZhdGU6DQogICAgc3RhdGljIFZhck9mZnNldCB2YXJPZmZzZXRGcm9tQml0
cyhpbnRwdHJfdCBiaXRzKQ0KICAgIHsNCiAgICAgICAgVmFyS2luZCBraW5kOw0KICAgICAgICBp
bnRwdHJfdCBraW5kQml0cyA9IGJpdHMgJiBLaW5kQml0c01hc2s7DQogICAgICAgIGlmIChraW5k
Qml0cyA8PSBVbndhdGNoYWJsZVNjb3BlS2luZEJpdHMpDQogICAgICAgICAgICBraW5kID0gVmFy
S2luZDo6U2NvcGU7DQogICAgICAgIGVsc2UgaWYgKGtpbmRCaXRzID09IFN0YWNrS2luZEJpdHMp
DQogICAgICAgICAgICBraW5kID0gVmFyS2luZDo6U3RhY2s7DQogICAgICAgIGVsc2UNCiAgICAg
ICAgICAgIGtpbmQgPSBWYXJLaW5kOjpEaXJlY3RBcmd1bWVudDsNCiAgICAgICAgcmV0dXJuIFZh
ck9mZnNldDo6YXNzZW1ibGUoa2luZCwgc3RhdGljX2Nhc3Q8aW50PihiaXRzID4+IEZsYWdCaXRz
KSk7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBTY29wZU9mZnNldCBzY29wZU9mZnNldEZyb21C
aXRzKGludHB0cl90IGJpdHMpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJl
dHVybiBTY29wZU9mZnNldChzdGF0aWNfY2FzdDxpbnQ+KGJpdHMgPj4gRmxhZ0JpdHMpKTsNCiAg
ICB9DQoNCnB1YmxpYzoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBjbGFzcyBG
YXN0IHsNCiAgICBwdWJsaWM6DQogICAgICAgIEZhc3QoKQ0KICAgICAgICAgICAgOiBtX2JpdHMo
U2xpbUZsYWcpDQogICAgICAgIHsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgX19mb3Jj
ZWlubGluZSBGYXN0KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQ0KICAgICAgICAgICAg
OiBtX2JpdHMoZW50cnkuYml0cygpKQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICANCiAgICAg
ICAgYm9vbCBpc051bGwoKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gISht
X2JpdHMgJiB+U2xpbUZsYWcpOw0KICAgICAgICB9DQoNCiAgICAgICAgVmFyT2Zmc2V0IHZhck9m
ZnNldCgpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiB2YXJPZmZzZXRGcm9t
Qml0cyhtX2JpdHMpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQog
ICAgICAgIA0KICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0DQogICAgICAg
IHsNCiAgICAgICAgICAgIHJldHVybiBzY29wZU9mZnNldEZyb21CaXRzKG1fYml0cyk7DQogICAg
ICAgIH0NCiAgICAgICAgDQogICAgICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0DQogICAgICAg
IHsNCiAgICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBSZWFkT25seUZsYWc7DQogICAgICAgIH0N
CiAgICAgICAgDQogICAgICAgIGJvb2wgaXNEb250RW51bSgpIGNvbnN0DQogICAgICAgIHsNCiAg
ICAgICAgICAgIHJldHVybiBtX2JpdHMgJiBEb250RW51bUZsYWc7DQogICAgICAgIH0NCiAgICAg
ICAgDQogICAgICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdA0KICAgICAgICB7DQog
ICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsNCiAgICAgICAgICAgIGlmIChpc1Jl
YWRPbmx5KCkpDQogICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHk7DQogICAgICAgICAgICBpZiAoaXNEb250RW51bSgpKQ0KICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtOw0KICAgICAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXM7DQogICAgICAgIH0NCg0KICAgICAgICBib29sIGlzRmF0KCkg
Y29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuICEobV9iaXRzICYgU2xpbUZsYWcp
Ow0KICAgICAgICB9DQogICAgICAgIA0KICAgIHByaXZhdGU6DQogICAgICAgIGZyaWVuZCBzdHJ1
Y3QgU3ltYm9sVGFibGVFbnRyeTsNCiAgICAgICAgaW50cHRyX3QgbV9iaXRzOw0KICAgIH07DQoN
CiAgICBTeW1ib2xUYWJsZUVudHJ5KCkNCiAgICAgICAgOiBtX2JpdHMoU2xpbUZsYWcpDQogICAg
ew0KICAgIH0NCg0KICAgIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0IG9mZnNldCkNCiAgICAg
ICAgOiBtX2JpdHMoU2xpbUZsYWcpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IHBhY2sob2Zmc2V0LCB0cnVlLCBmYWxzZSwgZmFsc2UpOw0KICAgIH0NCg0KICAgIFN5bWJvbFRh
YmxlRW50cnkoVmFyT2Zmc2V0IG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcykNCiAgICAgICAg
OiBtX2JpdHMoU2xpbUZsYWcpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHBh
Y2sob2Zmc2V0LCB0cnVlLCBhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
LCBhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsNCiAgICB9DQogICAg
DQogICAgflN5bWJvbFRhYmxlRW50cnkoKQ0KICAgIHsNCiAgICAgICAgZnJlZUZhdEVudHJ5KCk7
DQogICAgfQ0KICAgIA0KICAgIFN5bWJvbFRhYmxlRW50cnkoY29uc3QgU3ltYm9sVGFibGVFbnRy
eSYgb3RoZXIpDQogICAgICAgIDogbV9iaXRzKFNsaW1GbGFnKQ0KICAgIHsNCiAgICAgICAgKnRo
aXMgPSBvdGhlcjsNCiAgICB9DQogICAgDQogICAgU3ltYm9sVGFibGVFbnRyeSYgb3BlcmF0b3I9
KGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIG90aGVyKQ0KICAgIHsNCiAgICAgICAgaWYgKChvdGhl
ci5pc0ZhdCgpKSkNCiAgICAgICAgICAgIHJldHVybiBjb3B5U2xvdyhvdGhlcik7DQogICAgICAg
IGZyZWVGYXRFbnRyeSgpOw0KICAgICAgICBtX2JpdHMgPSBvdGhlci5tX2JpdHM7DQogICAgICAg
IHJldHVybiAqdGhpczsNCiAgICB9DQogICAgDQogICAgU3ltYm9sVGFibGVFbnRyeShTeW1ib2xU
YWJsZUVudHJ5JiYgb3RoZXIpDQogICAgICAgIDogbV9iaXRzKFNsaW1GbGFnKQ0KICAgIHsNCiAg
ICAgICAgc3dhcChvdGhlcik7DQogICAgfQ0KDQogICAgU3ltYm9sVGFibGVFbnRyeSYgb3BlcmF0
b3I9KFN5bWJvbFRhYmxlRW50cnkmJiBvdGhlcikNCiAgICB7DQogICAgICAgIHN3YXAob3RoZXIp
Ow0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgdm9pZCBzd2FwKFN5bWJvbFRh
YmxlRW50cnkmIG90aGVyKQ0KICAgIHsNCiAgICAgICAgc3RkOjpzd2FwKG1fYml0cywgb3RoZXIu
bV9iaXRzKTsNCiAgICB9DQoNCiAgICBib29sIGlzTnVsbCgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gIShiaXRzKCkgJiB+U2xpbUZsYWcpOw0KICAgIH0NCg0KICAgIFZhck9mZnNldCB2
YXJPZmZzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHZhck9mZnNldEZyb21CaXRz
KGJpdHMoKSk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgaXNXYXRjaGFibGUoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBLaW5kQml0c01hc2spID09IFNjb3BlS2luZEJp
dHMgJiYgT3B0aW9uczo6dXNlSklUKCk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVy
biBzY29wZU9mZnNldEZyb21CaXRzKGJpdHMoKSk7DQogICAgfQ0KICAgIA0KICAgIF9fZm9yY2Vp
bmxpbmUgRmFzdCBnZXRGYXN0KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBGYXN0KCp0
aGlzKTsNCiAgICB9DQogICAgDQogICAgX19mb3JjZWlubGluZSBGYXN0IGdldEZhc3QoYm9vbCYg
d2FzRmF0KSBjb25zdA0KICAgIHsNCiAgICAgICAgRmFzdCByZXN1bHQ7DQogICAgICAgIHdhc0Zh
dCA9IGlzRmF0KCk7DQogICAgICAgIGlmICh3YXNGYXQpDQogICAgICAgICAgICByZXN1bHQubV9i
aXRzID0gZmF0RW50cnkoKS0+bV9iaXRzIHwgU2xpbUZsYWc7DQogICAgICAgIGVsc2UNCiAgICAg
ICAgICAgIHJlc3VsdC5tX2JpdHMgPSBtX2JpdHM7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQog
ICAgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGdldEF0dHJpYnV0ZXMoKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIGdldEZhc3QoKS5nZXRBdHRyaWJ1dGVzKCk7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgc2V0QXR0cmlidXRlcyh1bnNpZ25lZCBhdHRyaWJ1dGVzKQ0KICAgIHsNCiAgICAgICAg
cGFjayh2YXJPZmZzZXQoKSwgaXNXYXRjaGFibGUoKSwgYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSwgYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7DQogICAgfQ0KDQogICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiBiaXRzKCkgJiBSZWFkT25seUZsYWc7DQogICAgfQ0KICAgIA0KICAgIENvbnN0YW50
TW9kZSBjb25zdGFudE1vZGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1vZGVGb3JJ
c0NvbnN0YW50KGlzUmVhZE9ubHkoKSk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgaXNEb250RW51
bSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gYml0cygpICYgRG9udEVudW1GbGFnOw0K
ICAgIH0NCiAgICANCiAgICB2b2lkIGRpc2FibGVXYXRjaGluZyhWTSYgdm0pDQogICAgew0KICAg
ICAgICBpZiAoV2F0Y2hwb2ludFNldCogc2V0ID0gd2F0Y2hwb2ludFNldCgpKQ0KICAgICAgICAg
ICAgc2V0LT5pbnZhbGlkYXRlKHZtLCAiRGlzYWJsaW5nIHdhdGNoaW5nIGluIHN5bWJvbCB0YWJs
ZSIpOw0KICAgICAgICBpZiAodmFyT2Zmc2V0KCkuaXNTY29wZSgpKQ0KICAgICAgICAgICAgcGFj
ayh2YXJPZmZzZXQoKSwgZmFsc2UsIGlzUmVhZE9ubHkoKSwgaXNEb250RW51bSgpKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBwcmVwYXJlVG9XYXRjaCgpOw0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQoKQ0KICAgIHsNCiAgICAgICAgaWYgKCFpc0Zh
dCgpKQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAgIHJldHVybiBmYXRFbnRy
eSgpLT5tX3dhdGNocG9pbnRzLmdldCgpOw0KICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgc3Rh
dGljIGNvbnN0IGludHB0cl90IFNsaW1GbGFnID0gMHgxOw0KICAgIHN0YXRpYyBjb25zdCBpbnRw
dHJfdCBSZWFkT25seUZsYWcgPSAweDI7DQogICAgc3RhdGljIGNvbnN0IGludHB0cl90IERvbnRF
bnVtRmxhZyA9IDB4NDsNCiAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgTm90TnVsbEZsYWcgPSAw
eDg7DQogICAgc3RhdGljIGNvbnN0IGludHB0cl90IEtpbmRCaXRzTWFzayA9IDB4MzA7DQogICAg
c3RhdGljIGNvbnN0IGludHB0cl90IFNjb3BlS2luZEJpdHMgPSAweDAwOw0KICAgIHN0YXRpYyBj
b25zdCBpbnRwdHJfdCBVbndhdGNoYWJsZVNjb3BlS2luZEJpdHMgPSAweDEwOw0KICAgIHN0YXRp
YyBjb25zdCBpbnRwdHJfdCBTdGFja0tpbmRCaXRzID0gMHgyMDsNCiAgICBzdGF0aWMgY29uc3Qg
aW50cHRyX3QgRGlyZWN0QXJndW1lbnRLaW5kQml0cyA9IDB4MzA7DQogICAgc3RhdGljIGNvbnN0
IGludHB0cl90IEZsYWdCaXRzID0gNjsNCiAgICANCiAgICBjbGFzcyBGYXRFbnRyeSB7DQogICAg
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3
ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgcHVibGljOg0KICAgICAgICBGYXRFbnRyeShp
bnRwdHJfdCBiaXRzKQ0KICAgICAgICAgICAgOiBtX2JpdHMoYml0cyAmIH5TbGltRmxhZykNCiAg
ICAgICAgew0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpbnRwdHJfdCBtX2JpdHM7IA0K
ICAgICAgICANCiAgICAgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fd2F0Y2hwb2ludHM7DQog
ICAgfTsNCiAgICANCiAgICBTeW1ib2xUYWJsZUVudHJ5JiBjb3B5U2xvdyhjb25zdCBTeW1ib2xU
YWJsZUVudHJ5Jik7DQogICAgDQogICAgYm9vbCBpc0ZhdCgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gIShtX2JpdHMgJiBTbGltRmxhZyk7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0IEZh
dEVudHJ5KiBmYXRFbnRyeSgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgRmF0RW50cnkqPihtX2JpdHMpOw0KICAgIH0N
CiAgICANCiAgICBGYXRFbnRyeSogZmF0RW50cnkoKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZhdEVudHJ5Kj4obV9iaXRzKTsNCiAgICB9
DQogICAgDQogICAgRmF0RW50cnkqIGluZmxhdGUoKQ0KICAgIHsNCiAgICAgICAgaWYgKChpc0Zh
dCgpKSkNCiAgICAgICAgICAgIHJldHVybiBmYXRFbnRyeSgpOw0KICAgICAgICByZXR1cm4gaW5m
bGF0ZVNsb3coKTsNCiAgICB9DQogICAgDQogICAgRmF0RW50cnkqIGluZmxhdGVTbG93KCk7DQog
ICAgDQogICAgX19mb3JjZWlubGluZSBpbnRwdHJfdCBiaXRzKCkgY29uc3QNCiAgICB7DQogICAg
ICAgIGlmIChpc0ZhdCgpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhdEVudHJ5KCktPm1fYml0czsN
CiAgICAgICAgcmV0dXJuIG1fYml0czsNCiAgICB9DQogICAgDQogICAgX19mb3JjZWlubGluZSBp
bnRwdHJfdCYgYml0cygpDQogICAgew0KICAgICAgICBpZiAoaXNGYXQoKSkNCiAgICAgICAgICAg
IHJldHVybiBmYXRFbnRyeSgpLT5tX2JpdHM7DQogICAgICAgIHJldHVybiBtX2JpdHM7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgZnJlZUZhdEVudHJ5KCkNCiAgICB7DQogICAgICAgIGlmICgoIWlz
RmF0KCkpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBmcmVlRmF0RW50cnlTbG93KCk7
DQogICAgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgZnJlZUZhdEVudHJ5U2xv
dygpOw0KDQogICAgdm9pZCBwYWNrKFZhck9mZnNldCBvZmZzZXQsIGJvb2wgaXNXYXRjaGFibGUs
IGJvb2wgcmVhZE9ubHksIGJvb2wgZG9udEVudW0pDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgIGludHB0cl90JiBiaXRzUmVmID0gYml0cygpOw0KICAgICAgICBiaXRzUmVmID0N
CiAgICAgICAgICAgIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0LnJhd09mZnNldCgpKSA8
PCBGbGFnQml0cykgfCBOb3ROdWxsRmxhZyB8IFNsaW1GbGFnOw0KICAgICAgICBpZiAocmVhZE9u
bHkpDQogICAgICAgICAgICBiaXRzUmVmIHw9IFJlYWRPbmx5RmxhZzsNCiAgICAgICAgaWYgKGRv
bnRFbnVtKQ0KICAgICAgICAgICAgYml0c1JlZiB8PSBEb250RW51bUZsYWc7DQogICAgICAgIHN3
aXRjaCAob2Zmc2V0LmtpbmQoKSkgew0KICAgICAgICBjYXNlIFZhcktpbmQ6OlNjb3BlOg0KICAg
ICAgICAgICAgaWYgKGlzV2F0Y2hhYmxlKQ0KICAgICAgICAgICAgICAgIGJpdHNSZWYgfD0gU2Nv
cGVLaW5kQml0czsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBiaXRzUmVmIHw9
IFVud2F0Y2hhYmxlU2NvcGVLaW5kQml0czsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBj
YXNlIFZhcktpbmQ6OlN0YWNrOg0KICAgICAgICAgICAgYml0c1JlZiB8PSBTdGFja0tpbmRCaXRz
Ow0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgVmFyS2luZDo6RGlyZWN0QXJndW1l
bnQ6DQogICAgICAgICAgICBiaXRzUmVmIHw9IERpcmVjdEFyZ3VtZW50S2luZEJpdHM7DQogICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGRvIHsgV1RGOjpp
c0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jh
c2hXaXRoSW5mbyg0MjQsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFN5bWJvbFRhYmxlLmgiLCAgX19GVU5DVElPTl9fICAsIDg5ICk7
IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0K
ICAgIA0KICAgIHN0YXRpYyBib29sIGlzVmFsaWRWYXJPZmZzZXQoVmFyT2Zmc2V0IG9mZnNldCkN
CiAgICB7DQogICAgICAgIHJldHVybiAoKHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQucmF3
T2Zmc2V0KCkpIDw8IEZsYWdCaXRzKSA+PiBGbGFnQml0cykgPT0gc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KG9mZnNldC5yYXdPZmZzZXQoKSk7DQogICAgfQ0KDQogICAgaW50cHRyX3QgbV9iaXRzOw0K
fTsNCg0Kc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxTeW1i
b2xUYWJsZUVudHJ5PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rp
b24gPSB0cnVlOw0KfTsNCg0KY2xhc3MgU3ltYm9sVGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsNCiAgICBmcmllbmQgY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGU7DQoNCnB1YmxpYzoNCiAgICB0
eXBlZGVmIEpTQ2VsbCBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoN
CiAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgU3ltYm9sVGFi
bGVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPj4sIFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzPiBNYXA7DQogICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEdsb2JhbFZhcmlhYmxlSUQsIElkZW50
aWZpZXJSZXBIYXNoPiBVbmlxdWVJRE1hcDsNCiAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4gVW5p
cXVlVHlwZVNldE1hcDsNCiAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOw0KICAgIHR5cGVkZWYgVmVjdG9y
PFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7DQogICAgdHlwZWRlZiBIYXNoU2V0
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlTmFt
ZVNldDsNCiAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFt
ZVNldDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsNCg0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0uc3ltYm9s
VGFibGVTcGFjZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgU3ltYm9sVGFibGUqIGNyZWF0ZShWTSYg
dm0pDQogICAgew0KICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTeW1ib2xUYWJsZT4odm0uaGVhcCkpIFN5bWJvbFRhYmxlKHZtKTsN
CiAgICAgICAgc3ltYm9sVGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICAgICAgcmV0dXJu
IHN5bWJvbFRhYmxlOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IHRydWU7DQogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsN
Cg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCiAgICAN
CiAgICBNYXA6Oml0ZXJhdG9yIGZpbmQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIGtleSkNCiAgICB7DQogICAgICAgIHJldHVybiBtX21hcC5maW5kKGtleSk7
DQogICAgfQ0KICAgIA0KICAgIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1fbWFwLmZpbmQoa2V5KTsNCiAgICB9DQogICAgDQogICAgU3ltYm9sVGFibGVFbnRyeSBn
ZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsNCiAgICB9DQogICAgDQogICAgU3lt
Ym9sVGFibGVFbnRyeSBnZXQoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkNCiAgICB7DQogICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsNCiAgICAgICAgcmV0dXJuIGdldChs
b2NrZXIsIGtleSk7DQogICAgfQ0KICAgIA0KICAgIFN5bWJvbFRhYmxlRW50cnkgaW5saW5lR2V0
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpDQogICAg
ew0KICAgICAgICByZXR1cm4gbV9tYXAuaW5saW5lR2V0KGtleSk7DQogICAgfQ0KICAgIA0KICAg
IFN5bWJvbFRhYmxlRW50cnkgaW5saW5lR2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpDQogICAg
ew0KICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7DQogICAgICAgIHJl
dHVybiBpbmxpbmVHZXQobG9ja2VyLCBrZXkpOw0KICAgIH0NCiAgICANCiAgICBNYXA6Oml0ZXJh
dG9yIGJlZ2luKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpDQogICAgew0KICAgICAgICByZXR1
cm4gbV9tYXAuYmVnaW4oKTsNCiAgICB9DQogICAgDQogICAgTWFwOjppdGVyYXRvciBlbmQoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJikNCiAgICB7DQogICAgICAgIHJldHVybiBtX21hcC5lbmQo
KTsNCiAgICB9DQogICAgDQogICAgTWFwOjppdGVyYXRvciBlbmQoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJikNCiAgICB7DQogICAgICAgIHJldHVybiBtX21hcC5lbmQoKTsNCiAgICB9
DQogICAgDQogICAgc2l6ZV90IHNpemUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBtX21hcC5zaXplKCk7DQogICAgfQ0KICAgIA0KICAgIHNp
emVfdCBzaXplKCkgY29uc3QNCiAgICB7DQogICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9sb2NrKTsNCiAgICAgICAgcmV0dXJuIHNpemUobG9ja2VyKTsNCiAgICB9DQogICAgDQog
ICAgU2NvcGVPZmZzZXQgbWF4U2NvcGVPZmZzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1fbWF4U2NvcGVPZmZzZXQ7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgZGlkVXNlU2NvcGVP
ZmZzZXQoU2NvcGVPZmZzZXQgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgaWYgKCFtX21heFNjb3Bl
T2Zmc2V0IHx8IG1fbWF4U2NvcGVPZmZzZXQgPCBvZmZzZXQpDQogICAgICAgICAgICBtX21heFNj
b3BlT2Zmc2V0ID0gb2Zmc2V0Ow0KICAgIH0NCiAgICANCiAgICB2b2lkIGRpZFVzZVZhck9mZnNl
dChWYXJPZmZzZXQgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkp
DQogICAgICAgICAgICBkaWRVc2VTY29wZU9mZnNldChvZmZzZXQuc2NvcGVPZmZzZXQoKSk7DQog
ICAgfQ0KICAgIA0KICAgIHVuc2lnbmVkIHNjb3BlU2l6ZSgpIGNvbnN0DQogICAgew0KICAgICAg
ICBTY29wZU9mZnNldCBtYXhTY29wZU9mZnNldCA9IHRoaXMtPm1heFNjb3BlT2Zmc2V0KCk7DQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgdW5zaWduZWQgZmFzdFJlc3VsdCA9IG1heFNjb3Bl
T2Zmc2V0Lm9mZnNldFVuY2hlY2tlZCgpICsgMTsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgIA0KICAgICAgICByZXR1cm4gZmFzdFJlc3VsdDsNCiAgICB9
DQogICAgDQogICAgU2NvcGVPZmZzZXQgbmV4dFNjb3BlT2Zmc2V0KCkgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBTY29wZU9mZnNldChzY29wZVNpemUoKSk7DQogICAgfQ0KICAgIA0KICAg
IFNjb3BlT2Zmc2V0IHRha2VOZXh0U2NvcGVPZmZzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JikNCiAgICB7DQogICAgICAgIFNjb3BlT2Zmc2V0IHJlc3VsdCA9IG5leHRTY29wZU9mZnNldCgp
Ow0KICAgICAgICBtX21heFNjb3BlT2Zmc2V0ID0gcmVzdWx0Ow0KICAgICAgICByZXR1cm4gcmVz
dWx0Ow0KICAgIH0NCiAgICANCiAgICBTY29wZU9mZnNldCB0YWtlTmV4dFNjb3BlT2Zmc2V0KCkN
CiAgICB7DQogICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsNCiAgICAg
ICAgcmV0dXJuIHRha2VOZXh0U2NvcGVPZmZzZXQobG9ja2VyKTsNCiAgICB9DQogICAgDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+DQogICAgdm9pZCBhZGQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwgRW50cnkmJiBlbnRyeSkNCiAgICB7DQog
ICAgICAgIGRvIHsgaWYgKCghKCFtX2xvY2FsVG9FbnRyeSkpKSBkbyB7IFdURjo6aXNJbnRlZ3Jh
bE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aElu
Zm8oNTg3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxTeW1ib2xUYWJsZS5oIiwgIF9fRlVOQ1RJT05fXyAgLCA5MCApOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBkaWRVc2VWYXJPZmZzZXQoZW50cnkudmFy
T2Zmc2V0KCkpOw0KICAgICAgICBNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5
LCBzdGQ6OmZvcndhcmQ8RW50cnk+KGVudHJ5KSk7DQogICAgICAgICgodm9pZClyZXN1bHQpOw0K
ICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4NCiAgICB2b2lkIGFkZChV
bmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRyeSYmIGVudHJ5KQ0KICAgIHsNCiAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOw0KICAgICAgICBhZGQobG9ja2VyLCBrZXks
IHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsNCiAgICB9DQoNCiAgICBib29sIGhhc1ByaXZh
dGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuc2l6ZSgpOyB9DQogICAgX19mb3JjZWlubGluZSBQcml2YXRlTmFtZUl0ZXJhdG9y
UmFuZ2UgcHJpdmF0ZU5hbWVzKCkNCiAgICB7DQogICAgICAgIA0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7DQogICAgfQ0K
DQogICAgdm9pZCBhZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQ0KICAgIHsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoIW1fcmFyZURhdGEpDQogICAgICAgICAg
ICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7DQoN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5h
ZGQoa2V5KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4NCiAgICB2b2lk
IHNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBF
bnRyeSYmIGVudHJ5KQ0KICAgIHsNCiAgICAgICAgZG8geyBpZiAoKCEoIW1fbG9jYWxUb0VudHJ5
KSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9y
Q3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg2MjEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN5bWJvbFRhYmxlLmgiLCAgX19GVU5D
VElPTl9fICAsIDkxICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIGRp
ZFVzZVZhck9mZnNldChlbnRyeS52YXJPZmZzZXQoKSk7DQogICAgICAgIG1fbWFwLnNldChrZXks
IHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW50cnk+DQogICAgdm9pZCBzZXQoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwgRW50
cnkmJiBlbnRyeSkNCiAgICB7DQogICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsNCiAgICAgICAgc2V0KGxvY2tlciwga2V5LCBzdGQ6OmZvcndhcmQ8RW50cnk+KGVudHJ5
KSk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgY29udGFpbnMoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkNCiAgICB7DQogICAgICAgIHJldHVybiBtX21h
cC5jb250YWlucyhrZXkpOw0KICAgIH0NCiAgICANCiAgICBib29sIGNvbnRhaW5zKFVuaXF1ZWRT
dHJpbmdJbXBsKiBrZXkpDQogICAgew0KICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7DQogICAgICAgIHJldHVybiBjb250YWlucyhsb2NrZXIsIGtleSk7DQogICAgfQ0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHVpbnQz
Ml90IGFyZ3VtZW50c0xlbmd0aCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoIW1fYXJndW1l
bnRzKQ0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIHJldHVybiBtX2FyZ3VtZW50cy0+
bGVuZ3RoKCk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgdHJ5U2V0QXJndW1lbnRzTGVuZ3RoKFZN
JiB2bSwgdWludDMyX3QgbGVuZ3RoKQ0KICAgIHsNCiAgICAgICAgaWYgKCghbV9hcmd1bWVudHMp
KSB7DQogICAgICAgICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogdGFibGUgPSBTY29wZWRBcmd1
bWVudHNUYWJsZTo6dHJ5Q3JlYXRlKHZtLCBsZW5ndGgpOw0KICAgICAgICAgICAgaWYgKCghdGFi
bGUpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIG1fYXJndW1l
bnRzLnNldCh2bSwgdGhpcywgdGFibGUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
U2NvcGVkQXJndW1lbnRzVGFibGUqIHRhYmxlID0gbV9hcmd1bWVudHMtPnRyeVNldExlbmd0aCh2
bSwgbGVuZ3RoKTsNCiAgICAgICAgICAgIGlmICgoIXRhYmxlKSkNCiAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgICAgICAgICBtX2FyZ3VtZW50cy5zZXQodm0sIHRoaXMsIHRhYmxl
KTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICBTY29wZU9m
ZnNldCBhcmd1bWVudE9mZnNldCh1aW50MzJfdCBpKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICByZXR1cm4gbV9hcmd1bWVudHMtPmdldChpKTsNCiAgICB9DQogICAg
DQogICAgYm9vbCB0cnlTZXRBcmd1bWVudE9mZnNldChWTSYgdm0sIHVpbnQzMl90IGksIFNjb3Bl
T2Zmc2V0IG9mZnNldCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgYXV0byog
bWF5YmVDbG9uZWQgPSBtX2FyZ3VtZW50cy0+dHJ5U2V0KHZtLCBpLCBvZmZzZXQpOw0KICAgICAg
ICBpZiAoIW1heWJlQ2xvbmVkKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBt
X2FyZ3VtZW50cy5zZXQodm0sIHRoaXMsIG1heWJlQ2xvbmVkKTsNCiAgICAgICAgcmV0dXJuIHRy
dWU7DQogICAgfQ0KICAgIA0KICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBhcmd1bWVudHMoKSBj
b25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFtX2FyZ3VtZW50cykNCiAgICAgICAgICAgIHJldHVy
biBudWxscHRyOw0KICAgICAgICBtX2FyZ3VtZW50cy0+bG9jaygpOw0KICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHMuZ2V0KCk7DQogICAgfQ0KICAgIA0KICAgIGNvbnN0IExvY2FsVG9FbnRyeVZl
YyYgbG9jYWxUb0VudHJ5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOw0KICAgIFN5bWJvbFRh
YmxlRW50cnkqIGVudHJ5Rm9yKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNjb3BlT2Zmc2V0
KTsNCiAgICANCiAgICBHbG9iYWxWYXJpYWJsZUlEIHVuaXF1ZUlERm9yVmFyaWFibGUoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwgVk0mKTsNCiAgICBH
bG9iYWxWYXJpYWJsZUlEIHVuaXF1ZUlERm9yT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIFZhck9mZnNldCwgVk0mKTsNCiAgICBSZWZQdHI8VHlwZVNldD4gZ2xvYmFsVHlwZVNldEZv
ck9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWYXJPZmZzZXQsIFZNJik7DQogICAg
UmVmUHRyPFR5cGVTZXQ+IGdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBWTSYpOw0KDQogICAgYm9vbCB1c2Vz
Tm9uU3RyaWN0RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc05vblN0cmljdEV2YWw7IH0NCiAg
ICB2b2lkIHNldFVzZXNOb25TdHJpY3RFdmFsKGJvb2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91
c2VzTm9uU3RyaWN0RXZhbCA9IHVzZXNOb25TdHJpY3RFdmFsOyB9DQoNCiAgICBib29sIGlzTmVz
dGVkTGV4aWNhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9uZXN0ZWRMZXhpY2FsU2NvcGU7IH0N
CiAgICB2b2lkIG1hcmtJc05lc3RlZExleGljYWxTY29wZSgpIHsgKCh2b2lkKTApOyBtX25lc3Rl
ZExleGljYWxTY29wZSA9IHRydWU7IH0NCg0KICAgIGVudW0gU2NvcGVUeXBlIHsNCiAgICAgICAg
VmFyU2NvcGUsDQogICAgICAgIEdsb2JhbExleGljYWxTY29wZSwNCiAgICAgICAgTGV4aWNhbFNj
b3BlLA0KICAgICAgICBDYXRjaFNjb3BlLA0KICAgICAgICBGdW5jdGlvbk5hbWVTY29wZQ0KICAg
IH07DQogICAgdm9pZCBzZXRTY29wZVR5cGUoU2NvcGVUeXBlIHR5cGUpIHsgbV9zY29wZVR5cGUg
PSB0eXBlOyB9DQogICAgU2NvcGVUeXBlIHNjb3BlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFNjb3BlVHlwZT4obV9zY29wZVR5cGUpOyB9DQoNCiAgICBTeW1ib2xUYWJsZSogY2xv
bmVTY29wZVBhcnQoVk0mKTsNCg0KICAgIHZvaWQgcHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJik7DQoNCiAgICBDb2RlQmxvY2sqIHJhcmVEYXRhQ29kZUJs
b2NrKCk7DQogICAgdm9pZCBzZXRSYXJlRGF0YUNvZGVCbG9jayhDb2RlQmxvY2sqKTsNCiAgICAN
CiAgICBJbmZlcnJlZFZhbHVlPEpTU2NvcGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBtX3Npbmds
ZXRvbjsgfQ0KDQogICAgdm9pZCBub3RpZnlDcmVhdGlvbihWTSYgdm0sIEpTU2NvcGUqIHNjb3Bl
LCBjb25zdCBjaGFyKiByZWFzb24pDQogICAgew0KICAgICAgICBtX3NpbmdsZXRvbi5ub3RpZnlX
cml0ZSh2bSwgdGhpcywgc2NvcGUsIHJlYXNvbik7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KDQogICAgcHJvdGVjdGVkOiBz
dGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZv
OyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygp
IHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
KFZNJik7DQoNCnByaXZhdGU6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFN5bWJvbFRhYmxl
KFZNJik7DQogICAgflN5bWJvbFRhYmxlKCk7DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsNCg0KICAgIE1hcCBtX21hcDsNCiAgICBTY29w
ZU9mZnNldCBtX21heFNjb3BlT2Zmc2V0Ow0KcHVibGljOg0KICAgIG11dGFibGUgQ29uY3VycmVu
dEpTTG9jayBtX2xvY2s7DQoNCiAgICBzdHJ1Y3QgU3ltYm9sVGFibGVSYXJlRGF0YSB7DQogICAg
ICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCog
bG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFz
dE1hbGxvY2VkID0gaW50OyB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVy
VGhpc01hY3JvID0gaW50Ow0KICAgICAgICBVbmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFwOw0KICAg
ICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsNCiAgICAgICAg
VW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7DQogICAgICAgIFdyaXRlQmFycmll
cjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOw0KICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZh
dGVOYW1lczsNCiAgICB9Ow0KDQpwcml2YXRlOg0KICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmlj
dEV2YWwgOiAxOw0KICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgDQogICAg
dW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyANCg0KICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW1ib2xU
YWJsZVJhcmVEYXRhPiBtX3JhcmVEYXRhOw0KDQogICAgV3JpdGVCYXJyaWVyPFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlPiBtX2FyZ3VtZW50czsNCiAgICBJbmZlcnJlZFZhbHVlPEpTU2NvcGU+IG1fc2lu
Z2xldG9uOw0KICAgIA0KICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFRvRW50cnlWZWM+IG1fbG9j
YWxUb0VudHJ5Ow0KfTsNCg0KfSANCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTU3ltYm9sVGFibGVPYmplY3QuaCIN
Cg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxieXRlY29kZVxcVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpu
YW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSlNPYmplY3Q7DQpjbGFzcyBQcm9wZXJ0eU5hbWU7DQoN
CmNsYXNzIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsIGZpbmFsIDogcHVibGljIEZpcmVEZXRhaWwg
ew0KcHVibGljOg0KICAgIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsKEpTT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFByb3BlcnR5TmFtZSYgbmFtZSkNCiAgICAgICAgOiBtX29iamVjdChvYmplY3QpDQog
ICAgICAgICwgbV9uYW1lKG5hbWUpDQogICAgew0KICAgIH0NCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgZmluYWw7DQogICAgDQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIHRvdWNoKFZNJiwgV2F0Y2hwb2lu
dFNldCosIEpTT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJik7DQoNCnByaXZhdGU6DQogICAg
SlNPYmplY3QqIG1fb2JqZWN0Ow0KICAgIGNvbnN0IFByb3BlcnR5TmFtZSYgbV9uYW1lOw0KfTsN
Cg0KfSANCiNsaW5lIDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEpTU3ltYm9sVGFibGVPYmplY3QuaCINCg0KbmFtZXNwYWNlIEpT
QyB7DQoNCmNsYXNzIEpTU3ltYm9sVGFibGVPYmplY3QgOiBwdWJsaWMgSlNTY29wZSB7DQpwdWJs
aWM6DQogICAgdXNpbmcgQmFzZSA9IEpTU2NvcGU7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzQW55
Rm9ybU9mR2V0UHJvcGVydHlOYW1lczsNCg0KICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0NCiAgICANCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xvdCYpOw0KICAgIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsNCiAgICANCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3ltYm9sVGFibGUo
KSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2Fz
dDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4oMHg0MDAwKS0+bV9zeW1ib2xUYWJsZSkpIC0gMHg0MDAw
KTsgfQ0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0
IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCnByb3RlY3Rl
ZDoNCiAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTU2NvcGUqIHNjb3BlKQ0KICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgc2NvcGUpDQog
ICAgew0KICAgIH0NCiAgICANCiAgICBKU1N5bWJvbFRhYmxlT2JqZWN0KFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUp
DQogICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBzY29wZSkNCiAgICB7DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgc2V0U3ltYm9sVGFibGUodm0sIHN5bWJvbFRhYmxlKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBzZXRTeW1ib2xUYWJsZShWTSYgdm0sIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgc3ltYm9sVGFibGUt
Pm5vdGlmeUNyZWF0aW9uKHZtLCB0aGlzLCAiQWxsb2NhdGVkIGEgc2NvcGUiKTsNCiAgICAgICAg
bV9zeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIHN5bWJvbFRhYmxlKTsNCiAgICB9DQogICAgDQog
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KICAg
IA0KcHJpdmF0ZToNCiAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGU7
DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+DQppbmxpbmUg
Ym9vbCBzeW1ib2xUYWJsZUdldCgNCiAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQ0Kew0KICAgIFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7DQogICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOw0KICAgIFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVy
dHlOYW1lLnVpZCgpKTsNCiAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkN
CiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkg
PSBpdGVyLT52YWx1ZTsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBTY29wZU9mZnNldCBvZmZzZXQg
PSBlbnRyeS5zY29wZU9mZnNldCgpOw0KICAgIA0KICAgIGlmICghb2JqZWN0LT5pc1ZhbGlkU2Nv
cGVPZmZzZXQob2Zmc2V0KSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgc2xvdC5zZXRW
YWx1ZShvYmplY3QsIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlLCBvYmplY3QtPnZhcmlhYmxlQXQob2Zmc2V0KS5nZXQoKSk7DQogICAgcmV0dXJu
IHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4NCmlu
bGluZSBib29sIHN5bWJvbFRhYmxlR2V0KA0KICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpDQp7DQogICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9s
VGFibGUoKTsNCiAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9j
ayk7DQogICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZp
bmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOw0KICAgIGlmIChpdGVyID09IHN5bWJvbFRh
YmxlLmVuZChsb2NrZXIpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgU3ltYm9sVGFibGVF
bnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOw0KICAgICgodm9pZCkwKTsNCg0KICAgIFNj
b3BlT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnNjb3BlT2Zmc2V0KCk7DQogICAgDQogICAgaWYgKCFv
YmplY3QtPmlzVmFsaWRTY29wZU9mZnNldChvZmZzZXQpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7
DQoNCiAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Iob2JqZWN0LT52YXJpYWJsZUF0KG9mZnNl
dCkuZ2V0KCksIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlKTsNCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9s
VGFibGVPYmplY3RUeXBlPg0KaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoDQogICAgU3ltYm9s
VGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCwNCiAgICBib29sJiBzbG90SXNXcml0ZWFibGUpDQp7DQogICAgU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsNCiAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7DQogICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUudWlkKCkpOw0KICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQ0KICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0
ZXItPnZhbHVlOw0KICAgICgodm9pZCkwKTsNCg0KICAgIFNjb3BlT2Zmc2V0IG9mZnNldCA9IGVu
dHJ5LnNjb3BlT2Zmc2V0KCk7DQogICAgDQogICAgaWYgKCFvYmplY3QtPmlzVmFsaWRTY29wZU9m
ZnNldChvZmZzZXQpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICBzbG90LnNldFZhbHVl
KG9iamVjdCwgZW50cnkuZ2V0QXR0cmlidXRlcygpIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUsIG9iamVjdC0+dmFyaWFibGVBdChvZmZzZXQpLmdldCgpKTsNCiAgICBzbG90SXNXcml0
ZWFibGUgPSAhZW50cnkuaXNSZWFkT25seSgpOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+DQpfX2ZvcmNlaW5saW5lIHZvaWQg
c3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoVk0mIHZtLCBTeW1ib2xUYWJsZU9iamVj
dFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVnLCBXYXRjaHBvaW50U2V0KiBzZXQpDQp7DQog
ICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOw0KICAgIGlmIChzZXQpDQogICAgICAgIFZh
cmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaCh2bSwgc2V0LCBvYmplY3QsIHByb3BlcnR5TmFt
ZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4NCl9fZm9y
Y2VpbmxpbmUgdm9pZCBzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KFZNJiB2
bSwgU3ltYm9sVGFibGVPYmplY3RUeXBlKiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZywgV2F0Y2hw
b2ludFNldCogc2V0KQ0Kew0KICAgIHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsNCiAgICBp
ZiAoc2V0KQ0KICAgICAgICBzZXQtPmludmFsaWRhdGUodm0sIFZhcmlhYmxlV3JpdGVGaXJlRGV0
YWlsKG9iamVjdCwgcHJvcGVydHlOYW1lKSk7IA0KfQ0KDQplbnVtIGNsYXNzIFN5bWJvbFRhYmxl
UHV0TW9kZSB7DQogICAgVG91Y2gsDQogICAgSW52YWxpZGF0ZQ0KfTsNCg0KdGVtcGxhdGU8U3lt
Ym9sVGFibGVQdXRNb2RlIHN5bWJvbFRhYmxlUHV0TW9kZSwgdHlwZW5hbWUgU3ltYm9sVGFibGVP
YmplY3RUeXBlPg0KaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoU3ltYm9sVGFibGVPYmplY3RU
eXBlKiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
LCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQpDQp7DQogICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Nj
b3BlKCh2bSkpOw0KDQogICAgV2F0Y2hwb2ludFNldCogc2V0ID0gbnVsbHB0cjsNCiAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7DQogICAgew0KICAgICAgICBTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOw0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9s
b2NrLCB2bS5oZWFwKTsNCiAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9
IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOw0KICAgICAgICBp
ZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkNCiAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgYm9vbCB3YXNGYXQ7DQogICAgICAgIFN5bWJvbFRhYmxlRW50cnk6OkZh
c3QgZmFzdEVudHJ5ID0gaXRlci0+dmFsdWUuZ2V0RmFzdCh3YXNGYXQpOw0KICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgIGlmIChmYXN0RW50cnkuaXNSZWFkT25seSgpICYmICFpZ25vcmVSZWFk
T25seUVycm9ycykgew0KICAgICAgICAgICAgaWYgKHNob3VsZFRocm93UmVhZE9ubHlFcnJvcikN
CiAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7DQogICAgICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsN
CiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgU2NvcGVPZmZz
ZXQgb2Zmc2V0ID0gZmFzdEVudHJ5LnNjb3BlT2Zmc2V0KCk7DQoNCiAgICAgICAgDQogICAgICAg
IGlmICghb2JqZWN0LT5pc1ZhbGlkU2NvcGVPZmZzZXQob2Zmc2V0KSkNCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsNCg0KICAgICAgICBzZXQgPSBpdGVyLT52YWx1ZS53YXRjaHBvaW50U2V0KCk7
DQogICAgICAgIHJlZyA9ICZvYmplY3QtPnZhcmlhYmxlQXQob2Zmc2V0KTsNCiAgICB9DQogICAg
DQogICAgDQogICAgDQogICAgaWYgKHN5bWJvbFRhYmxlUHV0TW9kZSA9PSBTeW1ib2xUYWJsZVB1
dE1vZGU6OkludmFsaWRhdGUpDQogICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNo
cG9pbnRTZXQodm0sIG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOw0KICAg
IGVsc2UNCiAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodm0sIG9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOw0KICAgIHB1dFJlc3VsdCA9IHRydWU7
DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2Jq
ZWN0VHlwZT4NCmlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KA0K
ICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLA0KICAgIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBi
b29sJiBwdXRSZXN1bHQpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBzeW1ib2xUYWJs
ZVB1dDxTeW1ib2xUYWJsZVB1dE1vZGU6OlRvdWNoPihvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25s
eUVycm9ycywgcHV0UmVzdWx0KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgU3ltYm9sVGFibGVP
YmplY3RUeXBlPg0KaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2lu
dFNldCgNCiAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwN
CiAgICBib29sIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgYm9vbCBpZ25vcmVSZWFkT25seUVy
cm9ycywgYm9vbCYgcHV0UmVzdWx0KQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gc3lt
Ym9sVGFibGVQdXQ8U3ltYm9sVGFibGVQdXRNb2RlOjpJbnZhbGlkYXRlPihvYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBp
Z25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KTsNCn0NCg0KfSANCiNsaW5lIDM0ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU2VnbWVudGVkVmVjdG9yLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KICAgIHVzaW5nIFNlZ21l
bnRlZFZlY3Rvck1hbGxvYyA9IEZhc3RNYWxsb2M7DQoNCiAgICANCiAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IFNlZ21lbnRTaXplID0gOD4gY2xhc3MgU2VnbWVudGVkVmVjdG9yOw0K
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgU2VnbWVudFNpemUgPSA4PiBjbGFzcyBT
ZWdtZW50ZWRWZWN0b3JJdGVyYXRvciB7DQogICAgICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
aXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQp
MCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHBy
aXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8g
PSBpbnQ7DQogICAgcHJpdmF0ZToNCiAgICAgICAgZnJpZW5kIGNsYXNzIFNlZ21lbnRlZFZlY3Rv
cjxULCBTZWdtZW50U2l6ZT47DQogICAgcHVibGljOg0KICAgICAgICB0eXBlZGVmIFNlZ21lbnRl
ZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiBJdGVyYXRvcjsNCg0KICAgICAgICB+U2Vn
bWVudGVkVmVjdG9ySXRlcmF0b3IoKSB7IH0NCg0KICAgICAgICBUJiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiBtX3ZlY3Rvci5hdChtX2luZGV4KTsgfQ0KICAgICAgICBUKiBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gJm1fdmVjdG9yLmF0KG1faW5kZXgpOyB9DQoNCiAgICAgICAgDQog
ICAgICAgIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9p
bmRleCsrOw0KICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAgICAgICAgew0K
ICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleCAmJiAmbV92ZWN0b3Ig
PT0gJm90aGVyLm1fdmVjdG9yOw0KICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0
dXJuIG1faW5kZXggIT0gb3RoZXIubV9pbmRleCB8fCAmbV92ZWN0b3IgIT0gJm90aGVyLm1fdmVj
dG9yOw0KICAgICAgICB9DQoNCiAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxULCBTZWdtZW50U2l6ZT4mIG90aGVy
KQ0KICAgICAgICB7DQogICAgICAgICAgICBtX3ZlY3RvciA9IG90aGVyLm1fdmVjdG9yOw0KICAg
ICAgICAgICAgbV9pbmRleCA9IG90aGVyLm1faW5kZXg7DQogICAgICAgICAgICByZXR1cm4gKnRo
aXM7DQogICAgICAgIH0NCg0KICAgIHByaXZhdGU6DQogICAgICAgIFNlZ21lbnRlZFZlY3Rvckl0
ZXJhdG9yKFNlZ21lbnRlZFZlY3RvcjxULCBTZWdtZW50U2l6ZT4mIHZlY3Rvciwgc2l6ZV90IGlu
ZGV4KQ0KICAgICAgICAgICAgOiBtX3ZlY3Rvcih2ZWN0b3IpDQogICAgICAgICAgICAsIG1faW5k
ZXgoaW5kZXgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIFNlZ21lbnRlZFZlY3Rv
cjxULCBTZWdtZW50U2l6ZT4mIG1fdmVjdG9yOw0KICAgICAgICBzaXplX3QgbV9pbmRleDsNCiAg
ICB9Ow0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHNpemVfdCBTZWdtZW50U2l6ZT4NCiAgICBjbGFzcyBTZWdtZW50ZWRWZWN0b3IgZmlu
YWwgew0KICAgICAgICBmcmllbmQgY2xhc3MgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3I8VCwgU2Vn
bWVudFNpemU+Ow0KICAgICAgICBTZWdtZW50ZWRWZWN0b3IoY29uc3QgU2VnbWVudGVkVmVjdG9y
JikgPSBkZWxldGU7IFNlZ21lbnRlZFZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IFNlZ21lbnRlZFZl
Y3RvciYpID0gZGVsZXRlOzsNCiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0
dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTog
dXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsN
Cg0KICAgIHB1YmxpYzoNCiAgICAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcjxU
LCBTZWdtZW50U2l6ZT4gSXRlcmF0b3I7DQoNCiAgICAgICAgU2VnbWVudGVkVmVjdG9yKCkgPSBk
ZWZhdWx0Ow0KDQogICAgICAgIH5TZWdtZW50ZWRWZWN0b3IoKQ0KICAgICAgICB7DQogICAgICAg
ICAgICBkZWxldGVBbGxTZWdtZW50cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0NCiAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQ0KDQogICAgICAgIFQmIGF0KHNpemVfdCBpbmRleCkNCiAg
ICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIHNlZ21l
bnRGb3IoaW5kZXgpLT5lbnRyaWVzW3N1YnNjcmlwdEZvcihpbmRleCldOw0KICAgICAgICB9DQoN
CiAgICAgICAgY29uc3QgVCYgYXQoc2l6ZV90IGluZGV4KSBjb25zdA0KICAgICAgICB7DQogICAg
ICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxTZWdtZW50ZWRWZWN0b3I8VCwgU2VnbWVudFNpemU+
Kj4odGhpcyktPmF0KGluZGV4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIFQmIG9wZXJhdG9yW10o
c2l6ZV90IGluZGV4KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gYXQoaW5kZXgpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNv
bnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBhdChpbmRleCk7DQogICAgICAgIH0N
Cg0KICAgICAgICBUJiBmaXJzdCgpDQogICAgICAgIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgICAgIHJldHVybiBhdCgwKTsNCiAgICAgICAgfQ0KICAgICAgICBjb25zdCBUJiBm
aXJzdCgpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
ICAgIHJldHVybiBhdCgwKTsNCiAgICAgICAgfQ0KICAgICAgICBUJiBsYXN0KCkNCiAgICAgICAg
ew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIGF0KHNpemUoKSAt
IDEpOw0KICAgICAgICB9DQogICAgICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdA0KICAgICAgICB7
DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICByZXR1cm4gYXQoc2l6ZSgpIC0g
MSk7DQogICAgICAgIH0NCg0KICAgICAgICBUIHRha2VMYXN0KCkNCiAgICAgICAgew0KICAgICAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgVCByZXN1bHQgPSBzdGQ6Om1vdmU8V1RGOjpD
aGVja01vdmVQYXJhbWV0ZXI+KGxhc3QoKSk7DQogICAgICAgICAgICAtLW1fc2l6ZTsNCiAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmdzPg0KICAgICAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykNCiAgICAg
ICAgew0KICAgICAgICAgICAgKyttX3NpemU7DQogICAgICAgICAgICBpZiAoIXNlZ21lbnRFeGlz
dHNGb3IobV9zaXplIC0gMSkpDQogICAgICAgICAgICAgICAgYWxsb2NhdGVTZWdtZW50KCk7DQog
ICAgICAgICAgICBuZXcgKE5vdE51bGwsICZsYXN0KCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+
DQogICAgICAgIFQmIGFsbG9jKEFyZ3MmJi4uLiBhcmdzKQ0KICAgICAgICB7DQogICAgICAgICAg
ICBhcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsNCiAgICAgICAgICAgIHJldHVy
biBsYXN0KCk7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIHJlbW92ZUxhc3QoKQ0KICAgICAg
ICB7DQogICAgICAgICAgICBsYXN0KCkuflQoKTsNCiAgICAgICAgICAgIC0tbV9zaXplOw0KICAg
ICAgICB9DQoNCiAgICAgICAgdm9pZCBncm93KHNpemVfdCBzaXplKQ0KICAgICAgICB7DQogICAg
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICBlbnN1cmVTZWdtZW50c0ZvcihzaXplKTsN
CiAgICAgICAgICAgIHNpemVfdCBvbGRTaXplID0gbV9zaXplOw0KICAgICAgICAgICAgbV9zaXpl
ID0gc2l6ZTsNCiAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBvbGRTaXplOyBpIDwgbV9zaXpl
OyArK2kpDQogICAgICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmYXQoaSkpIFQoKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIHZvaWQgY2xlYXIoKQ0KICAgICAgICB7DQogICAgICAgICAgICBkZWxl
dGVBbGxTZWdtZW50cygpOw0KICAgICAgICAgICAgbV9zZWdtZW50cy5jbGVhcigpOw0KICAgICAg
ICAgICAgbV9zaXplID0gMDsNCiAgICAgICAgfQ0KDQogICAgICAgIEl0ZXJhdG9yIGJlZ2luKCkN
CiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzLCAwKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIEl0ZXJhdG9yIGVuZCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRvcigqdGhpcywgbV9zaXplKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAg
ICAgdm9pZCBzaHJpbmtUb0ZpdCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIG1fc2VnbWVudHMu
c2hyaW5rVG9GaXQoKTsNCiAgICAgICAgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAgc3RydWN0
IFNlZ21lbnQgew0KDQojcHJhZ21hIHdhcm5pbmcocHVzaCkNCiNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0MjAwKQ0KI2xpbmUgMjIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2Ft
ZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TZWdtZW50ZWRWZWN0b3IuaCINCiAgICAgICAgICAgIFQg
ZW50cmllc1swXTsNCg0KI3ByYWdtYSB3YXJuaW5nKHBvcCkNCiNsaW5lIDIyNSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU2VnbWVudGVk
VmVjdG9yLmgiDQogICAgICAgIH07DQoNCiAgICAgICAgdm9pZCBkZWxldGVBbGxTZWdtZW50cygp
DQogICAgICAgIHsNCiAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyAr
K2kpDQogICAgICAgICAgICAgICAgYXQoaSkuflQoKTsNCiAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkNCiAgICAgICAgICAgICAgICBTZWdt
ZW50ZWRWZWN0b3JNYWxsb2M6OmZyZWUobV9zZWdtZW50c1tpXSk7DQogICAgICAgIH0NCg0KICAg
ICAgICBib29sIHNlZ21lbnRFeGlzdHNGb3Ioc2l6ZV90IGluZGV4KQ0KICAgICAgICB7DQogICAg
ICAgICAgICByZXR1cm4gaW5kZXggLyBTZWdtZW50U2l6ZSA8IG1fc2VnbWVudHMuc2l6ZSgpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgU2VnbWVudCogc2VnbWVudEZvcihzaXplX3QgaW5kZXgpDQog
ICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBtX3NlZ21lbnRzW2luZGV4IC8gU2VnbWVudFNp
emVdOw0KICAgICAgICB9DQoNCiAgICAgICAgc2l6ZV90IHN1YnNjcmlwdEZvcihzaXplX3QgaW5k
ZXgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBpbmRleCAlIFNlZ21lbnRTaXplOw0K
ICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBlbnN1cmVTZWdtZW50c0ZvcihzaXplX3Qgc2l6ZSkN
CiAgICAgICAgew0KICAgICAgICAgICAgc2l6ZV90IHNlZ21lbnRDb3VudCA9IChtX3NpemUgKyBT
ZWdtZW50U2l6ZSAtIDEpIC8gU2VnbWVudFNpemU7DQogICAgICAgICAgICBzaXplX3QgbmVlZGVk
U2VnbWVudENvdW50ID0gKHNpemUgKyBTZWdtZW50U2l6ZSAtIDEpIC8gU2VnbWVudFNpemU7DQoN
CiAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBzZWdtZW50Q291bnQgPyBzZWdtZW50Q291bnQg
LSAxIDogMDsgaSA8IG5lZWRlZFNlZ21lbnRDb3VudDsgKytpKQ0KICAgICAgICAgICAgICAgIGVu
c3VyZVNlZ21lbnQoaSk7DQogICAgICAgIH0NCg0KICAgICAgICB2b2lkIGVuc3VyZVNlZ21lbnQo
c2l6ZV90IHNlZ21lbnRJbmRleCkNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICAgICAgaWYgKHNlZ21lbnRJbmRleCA9PSBtX3NlZ21lbnRzLnNpemUoKSkNCiAgICAg
ICAgICAgICAgICBhbGxvY2F0ZVNlZ21lbnQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZvaWQg
YWxsb2NhdGVTZWdtZW50KCkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9zZWdtZW50cy5hcHBl
bmQoc3RhdGljX2Nhc3Q8U2VnbWVudCo+KFNlZ21lbnRlZFZlY3Rvck1hbGxvYzo6bWFsbG9jKHNp
emVvZihUKSAqIFNlZ21lbnRTaXplKSkpOw0KICAgICAgICB9DQoNCiAgICAgICAgc2l6ZV90IG1f
c2l6ZSB7IDAgfTsNCiAgICAgICAgVmVjdG9yPFNlZ21lbnQqPiBtX3NlZ21lbnRzOw0KICAgIH07
DQoNCn0gDQoNCnVzaW5nIFdURjo6U2VnbWVudGVkVmVjdG9yOw0KI2xpbmUgMzYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IDogcHVibGljIEpTU3ltYm9sVGFibGVPYmplY3Qgew0KICAgIGZyaWVuZCBj
bGFzcyBKSVQ7DQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCnB1Ymxp
YzoNCiAgICB1c2luZyBCYXNlID0gSlNTeW1ib2xUYWJsZU9iamVjdDsNCg0KICAgIHByb3RlY3Rl
ZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87
IH07DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0
YXRpYyB2b2lkIHN1YnNwYWNlRm9yKFZNJikgeyBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRl
clR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNjAsICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCIsICBfX0ZVTkNUSU9OX18gICwgOTIgKTsgfSB3
aGlsZSAoZmFsc2UpOyB9DQoNCiAgICBib29sIGlzVmFsaWRTY29wZU9mZnNldChTY29wZU9mZnNl
dCBvZmZzZXQpDQogICAgew0KICAgICAgICByZXR1cm4gISFvZmZzZXQgJiYgb2Zmc2V0Lm9mZnNl
dCgpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdmFyaWFibGVBdChTY29wZU9mZnNldCBvZmZz
ZXQpIHsgcmV0dXJuIG1fdmFyaWFibGVzW29mZnNldC5vZmZzZXQoKV07IH0NCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU2NvcGVPZmZzZXQgZmluZFZh
cmlhYmxlSW5kZXgodm9pZCopOw0KICAgIA0KICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogYXNz
ZXJ0VmFyaWFibGVJc0luVGhpc09iamVjdChXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZhcmlhYmxl
UG9pbnRlcikNCiAgICB7DQogICAgICAgIGlmICgwKQ0KICAgICAgICAgICAgZmluZFZhcmlhYmxl
SW5kZXgodmFyaWFibGVQb2ludGVyKTsNCiAgICAgICAgcmV0dXJuIHZhcmlhYmxlUG9pbnRlcjsN
CiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFNjb3Bl
T2Zmc2V0IGFkZFZhcmlhYmxlcyh1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlc1RvQWRkLCBKU1Zh
bHVlKTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBIZWFwQW5hbHl6ZXImKTsNCiAgICAN
CnByb3RlY3RlZDoNCiAgICBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0KFZNJiwgU3RydWN0dXJl
KiwgSlNTY29wZSopOw0KICAgIA0KICAgIH5KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0KCk7DQoN
CiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7DQogICAgDQpwcml2YXRlOg0KICAgIFNlZ21l
bnRlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4sIDE2PiBtX3ZhcmlhYmxlczsNCg0KDQoN
Cn07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIg0KDQpu
YW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgZmluYWwg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7DQpwdWJsaWM6DQogICAgdXNpbmcg
QmFzZSA9IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q7DQoNCiAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3MgbW9kZT4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0uZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50U3BhY2U7DQogICAgfQ0KDQogICAgc3RhdGljIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogcGFyZW50U2Nv
cGUpDQogICAgew0KICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogcmVzdWx0ID0N
CiAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50Pih2bS5oZWFwKSkgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQodm0sIHN0cnVj
dHVyZSwgcGFyZW50U2NvcGUpOw0KICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsN
CiAgICAgICAgcmVzdWx0LT5zeW1ib2xUYWJsZSgpLT5zZXRTY29wZVR5cGUoU3ltYm9sVGFibGU6
OlNjb3BlVHlwZTo6R2xvYmFsTGV4aWNhbFNjb3BlKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsN
CiAgICB9DQoNCiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgc3RhdGlj
IGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsNCg0KICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KDQog
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXN5bWJvbFRhYmxlKCktPnNpemUoKTsg
fQ0KICAgIGJvb2wgaXNDb25zdFZhcmlhYmxlKFVuaXF1ZWRTdHJpbmdJbXBsKik7DQoNCiAgICBw
cm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBz
dGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9Ow0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkNCiAgICB7DQogICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAg
IH0NCg0KcHJpdmF0ZToNCiAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudChWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSkNCiAgICAgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUsIHNjb3BlKQ0KICAgIHsNCiAgICB9DQp9Ow0KDQp9IA0KI2xpbmUgMzYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNH
bG9iYWxPYmplY3QuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNQcm9taXNlLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOw0KY2xhc3MgSlNQcm9t
aXNlIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Mj4gew0KcHVibGljOg0KICAg
IHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDI+Ow0KDQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+DQogICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gJnZt
LnByb21pc2VTcGFjZTsNCiAgICB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGlj
IEpTUHJvbWlzZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7DQogICAgc3RhdGljIEpTUHJvbWlz
ZSogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsNCiAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
Ow0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpK
U0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBlbnVtIGNs
YXNzIFN0YXR1cyA6IHVuc2lnbmVkIHsNCiAgICAgICAgUGVuZGluZyA9IDAsIA0KICAgICAgICBG
dWxmaWxsZWQgPSAxLA0KICAgICAgICBSZWplY3RlZCA9IDIsDQogICAgfTsNCiAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IGlzSGFuZGxlZEZsYWcgPSA0Ow0KICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDMyX3QgaXNGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbGVkRmxhZyA9IDg7DQogICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzdGF0ZU1hc2sgPSAwYjExOw0KDQogICAgZW51bSBj
bGFzcyBGaWVsZCA6IHVuc2lnbmVkIHsNCiAgICAgICAgRmxhZ3MgPSAwLA0KICAgICAgICBSZWFj
dGlvbnNPclJlc3VsdCA9IDEsDQogICAgfTsNCiAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50
ZXJuYWxGaWVsZHMgPT0gMik7DQoNCiAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1i
ZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkNCiAgICB7DQogICAgICAgIHJldHVy
biB7IHsNCiAgICAgICAgICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihTdGF0dXM6
OlBlbmRpbmcpKSwNCiAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksDQogICAgICAgIH0gfTsNCiAg
ICB9DQoNCiAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmll
bGQgZmllbGQpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZpZWxkKSk7IH0NCiAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFs
RmllbGQoRmllbGQgZmllbGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBTdGF0
dXMgc3RhdHVzKFZNJikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTVmFsdWUg
cmVzdWx0KFZNJikgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgaXNIYW5k
bGVkKFZNJikgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIEpTUHJv
bWlzZSogcmVzb2x2ZWRQcm9taXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7DQoNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCByZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVqZWN0KEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcmVqZWN0QXNIYW5k
bGVkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQp
IHZvaWQgcmVqZWN0KEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7DQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHZvaWQgcmVqZWN0QXNIYW5kbGVkKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0
aW9uKik7DQoNCiAgICBzdHJ1Y3QgRGVmZXJyZWREYXRhIHsNCiAgICAgICAgcHJpdmF0ZTogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqKSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkg
PSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pID0gZGVs
ZXRlOyB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc0Zv
cmJpZEhlYXBBbGxvY2F0aW9uTWFjcm87DQogICAgcHVibGljOg0KICAgICAgICBKU1Byb21pc2Uq
IHByb21pc2UgeyBudWxscHRyIH07DQogICAgICAgIEpTRnVuY3Rpb24qIHJlc29sdmUgeyBudWxs
cHRyIH07DQogICAgICAgIEpTRnVuY3Rpb24qIHJlamVjdCB7IG51bGxwdHIgfTsNCiAgICB9Ow0K
ICAgIHN0YXRpYyBEZWZlcnJlZERhdGEgY3JlYXRlRGVmZXJyZWREYXRhKEpTR2xvYmFsT2JqZWN0
KiwgSlNQcm9taXNlQ29uc3RydWN0b3IqKTsNCg0KICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0KcHJvdGVjdGVkOg0KICAgIEpTUHJvbWlzZShW
TSYsIFN0cnVjdHVyZSopOw0KICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsNCg0KICAgIHVp
bnQzMl90IGZsYWdzKCkgY29uc3Q7DQp9Ow0KDQp9IA0KI2xpbmUgMzcgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmpl
Y3QuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxBUElcXEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCm5hbWVz
cGFjZSBKU0Mgew0KDQpjbGFzcyBKU09iamVjdDsNCg0KfQ0KDQp0eXBlZGVmIHZvaWQgKCpKU1dl
YWtNYXBEZXN0cm95ZWRDYWxsYmFjaykoc3RydWN0IE9wYXF1ZUpTV2Vha09iamVjdE1hcCosIHZv
aWQqKTsNCg0KdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lkKiwgSlNDOjpKU09iamVjdD4gV2Vh
a01hcFR5cGU7DQoNCnN0cnVjdCBPcGFxdWVKU1dlYWtPYmplY3RNYXAgOiBwdWJsaWMgUmVmQ291
bnRlZDxPcGFxdWVKU1dlYWtPYmplY3RNYXA+IHsNCnB1YmxpYzoNCiAgICBzdGF0aWMgUmVmPE9w
YXF1ZUpTV2Vha09iamVjdE1hcD4gY3JlYXRlKEpTQzo6Vk0mIHZtLCB2b2lkKiBkYXRhLCBKU1dl
YWtNYXBEZXN0cm95ZWRDYWxsYmFjayBjYWxsYmFjaykNCiAgICB7DQogICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9wYXF1ZUpTV2Vha09iamVjdE1hcCh2bSwgZGF0YSwgY2FsbGJhY2spKTsN
CiAgICB9DQoNCiAgICBXZWFrTWFwVHlwZSYgbWFwKCkgeyByZXR1cm4gbV9tYXA7IH0NCiAgICAN
CiAgICB+T3BhcXVlSlNXZWFrT2JqZWN0TWFwKCkNCiAgICB7DQogICAgICAgIG1fY2FsbGJhY2so
dGhpcywgbV9kYXRhKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgT3BhcXVlSlNXZWFrT2JqZWN0
TWFwKEpTQzo6Vk0mIHZtLCB2b2lkKiBkYXRhLCBKU1dlYWtNYXBEZXN0cm95ZWRDYWxsYmFjayBj
YWxsYmFjaykNCiAgICAgICAgOiBtX21hcCh2bSkNCiAgICAgICAgLCBtX2RhdGEoZGF0YSkNCiAg
ICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQ0KICAgIHsNCiAgICB9DQogICAgV2Vha01hcFR5
cGUgbV9tYXA7DQogICAgdm9pZCogbV9kYXRhOw0KICAgIEpTV2Vha01hcERlc3Ryb3llZENhbGxi
YWNrIG1fY2FsbGJhY2s7DQp9Ow0KDQoNCiNsaW5lIDcwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXEFQSVxcSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJu
YWwuaCINCiNsaW5lIDM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXExhenlQcm9w
ZXJ0eS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBKU0NlbGw7DQpj
bGFzcyBTbG90VmlzaXRvcjsNCmNsYXNzIFZNOw0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgT3du
ZXJUeXBlLCB0eXBlbmFtZSBFbGVtZW50VHlwZT4NCmNsYXNzIExhenlQcm9wZXJ0eSB7DQpwdWJs
aWM6DQogICAgc3RydWN0IEluaXRpYWxpemVyIHsNCiAgICAgICAgSW5pdGlhbGl6ZXIoT3duZXJU
eXBlKiBvd25lciwgTGF6eVByb3BlcnR5JiBwcm9wZXJ0eSkNCiAgICAgICAgICAgIDogdm0oSGVh
cDo6aGVhcChvd25lciktPnZtKCkpDQogICAgICAgICAgICAsIG93bmVyKG93bmVyKQ0KICAgICAg
ICAgICAgLCBwcm9wZXJ0eShwcm9wZXJ0eSkNCiAgICAgICAgew0KICAgICAgICB9DQogICAgICAg
IA0KICAgICAgICB2b2lkIHNldChFbGVtZW50VHlwZSogdmFsdWUpIGNvbnN0Ow0KDQogICAgICAg
IFZNJiB2bTsNCiAgICAgICAgT3duZXJUeXBlKiBvd25lcjsNCiAgICAgICAgTGF6eVByb3BlcnR5
JiBwcm9wZXJ0eTsNCiAgICB9Ow0KDQpwcml2YXRlOg0KICAgIHR5cGVkZWYgRWxlbWVudFR5cGUq
ICgqRnVuY1R5cGUpKGNvbnN0IEluaXRpYWxpemVyJik7DQoNCnB1YmxpYzoNCiAgICBMYXp5UHJv
cGVydHkoKQ0KICAgIHsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0K
ICAgIHZvaWQgaW5pdExhdGVyKGNvbnN0IEZ1bmMmKTsNCg0KICAgIA0KICAgIA0KICAgIEVsZW1l
bnRUeXBlKiBnZXQoY29uc3QgT3duZXJUeXBlKiBvd25lcikgY29uc3QNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGdldEluaXRpYWxpemVkT25NYWluVGhyZWFkKG93
bmVyKTsNCiAgICB9DQogICAgDQogICAgRWxlbWVudFR5cGUqIGdldENvbmN1cnJlbnRseSgpIGNv
bnN0DQogICAgew0KICAgICAgICB1aW50cHRyX3QgcG9pbnRlciA9IG1fcG9pbnRlcjsNCiAgICAg
ICAgaWYgKHBvaW50ZXIgJiBsYXp5VGFnKQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQog
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RWxlbWVudFR5cGUqPihwb2ludGVyKTsNCiAgICB9
DQoNCiAgICBFbGVtZW50VHlwZSogZ2V0SW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQoY29uc3QgT3du
ZXJUeXBlKiBvd25lcikgY29uc3QNCiAgICB7DQogICAgICAgIGlmICgobV9wb2ludGVyICYgbGF6
eVRhZykpIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIEZ1bmNUeXBlIGZ1
bmMgPSAqYml0d2lzZV9jYXN0PEZ1bmNUeXBlKj4obV9wb2ludGVyICYgfihsYXp5VGFnIHwgaW5p
dGlhbGl6aW5nVGFnKSk7DQogICAgICAgICAgICByZXR1cm4gZnVuYyhJbml0aWFsaXplcihjb25z
dF9jYXN0PE93bmVyVHlwZSo+KG93bmVyKSwgKmNvbnN0X2Nhc3Q8TGF6eVByb3BlcnR5Kj4odGhp
cykpKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEVsZW1lbnRUeXBl
Kj4obV9wb2ludGVyKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBzZXRNYXlCZU51bGwoVk0mLCBj
b25zdCBPd25lclR5cGUqIG93bmVyLCBFbGVtZW50VHlwZSopOw0KICAgIHZvaWQgc2V0KFZNJiwg
Y29uc3QgT3duZXJUeXBlKiBvd25lciwgRWxlbWVudFR5cGUqKTsNCiAgICANCiAgICB2b2lkIHZp
c2l0KFNsb3RWaXNpdG9yJik7DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7DQogICAgDQpwcml2YXRlOg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQogICAgc3Rh
dGljIEVsZW1lbnRUeXBlKiBjYWxsRnVuYyhjb25zdCBJbml0aWFsaXplciYpOw0KICAgIA0KICAg
IHN0YXRpYyBjb25zdCB1aW50cHRyX3QgbGF6eVRhZyA9IDE7DQogICAgc3RhdGljIGNvbnN0IHVp
bnRwdHJfdCBpbml0aWFsaXppbmdUYWcgPSAyOw0KICAgIA0KICAgIHVpbnRwdHJfdCBtX3BvaW50
ZXIgeyAwIH07DQp9Ow0KDQoNCg0KdHlwZWRlZiBMYXp5UHJvcGVydHk8SlNDZWxsLCBKU0NlbGw+
IExhenlDZWxsUHJvcGVydHk7DQoNCn0gDQojbGluZSA0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxMYXp5Q2xhc3NTdHJ1Y3R1cmUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjbGFzcyBKU0dsb2JhbE9iamVjdDsNCmNsYXNzIFZNOw0KDQpjbGFzcyBMYXp5
Q2xhc3NTdHJ1Y3R1cmUgew0KICAgIHR5cGVkZWYgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+OjpJbml0aWFsaXplciBTdHJ1Y3R1cmVJbml0aWFsaXplcjsNCiAgICANCnB1
YmxpYzoNCiAgICBzdHJ1Y3QgSW5pdGlhbGl6ZXIgew0KICAgICAgICBJbml0aWFsaXplcihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgTGF6eUNsYXNzU3RydWN0dXJlJiwgY29uc3QgU3RydWN0dXJlSW5p
dGlhbGl6ZXImKTsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICB2b2lkIHNldFByb3RvdHlw
ZShKU09iamVjdCogcHJvdG90eXBlKTsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAg
ICAgICAgdm9pZCBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlKik7DQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIHZvaWQgc2V0Q29uc3RydWN0b3IoSlNPYmplY3QqIGNvbnN0cnVj
dG9yKTsNCiAgICAgICAgDQogICAgICAgIFZNJiB2bTsNCiAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbDsNCiAgICAgICAgTGF6eUNsYXNzU3RydWN0dXJlJiBjbGFzc1N0cnVjdHVyZTsNCiAg
ICAgICAgY29uc3QgU3RydWN0dXJlSW5pdGlhbGl6ZXImIHN0cnVjdHVyZUluaXQ7DQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSB7IG51bGxwdHIgfTsNCiAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgeyBudWxscHRyIH07DQogICAgICAgIEpTT2JqZWN0
KiBjb25zdHJ1Y3RvciB7IG51bGxwdHIgfTsNCiAgICB9Ow0KICAgIA0KICAgIExhenlDbGFzc1N0
cnVjdHVyZSgpDQogICAgew0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxs
YmFjaz4NCiAgICB2b2lkIGluaXRMYXRlcihjb25zdCBDYWxsYmFjayYpOw0KICAgIA0KICAgIFN0
cnVjdHVyZSogZ2V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwpIGNvbnN0DQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoZ2xvYmFs
KTsNCiAgICB9DQogICAgDQogICAgSlNPYmplY3QqIHByb3RvdHlwZShjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBy
ZXR1cm4gZ2V0KGdsb2JhbCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpOw0KICAgIH0NCg0KICAg
IA0KICAgIA0KICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3Rvcihjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX3N0cnVj
dHVyZS5nZXQoZ2xvYmFsKTsNCiAgICAgICAgcmV0dXJuIG1fY29uc3RydWN0b3IuZ2V0KCk7DQog
ICAgfQ0KICAgIA0KICAgIFN0cnVjdHVyZSogZ2V0Q29uY3VycmVudGx5KCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXRDb25jdXJyZW50bHkoKTsNCiAgICB9DQog
ICAgDQogICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yQ29uY3VycmVudGx5KCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOw0KICAgIH0NCg0KICAgIA0KICAg
IFN0cnVjdHVyZSogZ2V0SW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQoY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXRJ
bml0aWFsaXplZE9uTWFpblRocmVhZChnbG9iYWwpOw0KICAgIH0NCg0KICAgIEpTT2JqZWN0KiBw
cm90b3R5cGVJbml0aWFsaXplZE9uTWFpblRocmVhZChjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGdldEluaXRpYWxpemVkT25NYWluVGhy
ZWFkKGdsb2JhbCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpOw0KICAgIH0NCg0KICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvckluaXRpYWxpemVkT25NYWluVGhyZWFkKGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWwpIGNvbnN0DQogICAgew0KICAgICAgICBtX3N0cnVjdHVyZS5nZXRJbml0aWFs
aXplZE9uTWFpblRocmVhZChnbG9iYWwpOw0KICAgICAgICByZXR1cm4gbV9jb25zdHJ1Y3Rvci5n
ZXQoKTsNCiAgICB9DQogICAgDQogICAgdm9pZCB2aXNpdChTbG90VmlzaXRvciYpOw0KICAgIA0K
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Ow0KDQpwcml2YXRlOg0KICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3N0cnVjdHVyZTsNCiAgICBXcml0
ZUJhcnJpZXI8SlNPYmplY3Q+IG1fY29uc3RydWN0b3I7DQp9Ow0KDQp9IA0KI2xpbmUgNDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
SlNHbG9iYWxPYmplY3QuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTnVtYmVyUHJvdG90eXBlLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcTnVtYmVyT2JqZWN0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgTnVtYmVyT2Jq
ZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7DQpwcm90ZWN0ZWQ6DQogICAgTnVtYmVyT2Jq
ZWN0KFZNJiwgU3RydWN0dXJlKik7DQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOw0KDQpw
dWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTV3JhcHBlck9iamVjdDsNCg0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lLCBTdWJzcGFjZUFjY2VzcyBtb2RlPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICZ2bS5udW1iZXJPYmpl
Y3RTcGFjZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICB7DQogICAgICAgIE51bWJlck9iamVjdCogbnVt
YmVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyT2JqZWN0Pih2bS5oZWFwKSkg
TnVtYmVyT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBudW1iZXItPmZpbmlzaENyZWF0
aW9uKHZtKTsNCiAgICAgICAgcmV0dXJuIG51bWJlcjsNCiAgICB9DQoNCiAgICBwcm90ZWN0ZWQ6
IHN0YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZv
KCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oTnVtYmVyT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdOYW1l
KGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsNCn07DQpzdGF0aWNfYXNzZXJ0KHNp
emVvZihOdW1iZXJPYmplY3QpID09IHNpemVvZihKU1dyYXBwZXJPYmplY3QpKTsNCg0KX19kZWNs
c3BlYyhkbGxleHBvcnQpIE51bWJlck9iamVjdCogY29uc3RydWN0TnVtYmVyKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7DQoNCn0gDQojbGluZSAyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxOdW1iZXJQcm90b3R5cGUuaCINCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIE51bWJlclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBO
dW1iZXJPYmplY3Qgew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBOdW1iZXJPYmplY3Q7DQog
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsNCg0KICAgIHN0YXRpYyBOdW1iZXJQ
cm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQ0KICAgIHsNCiAgICAgICAgTnVtYmVyUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOdW1iZXJQcm90b3R5cGU+KHZtLmhl
YXApKSBOdW1iZXJQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7DQogICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7DQogICAgICAgIHJldHVybiBwcm90b3R5
cGU7DQogICAgfQ0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5m
byBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
KiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oTnVtYmVyT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBOdW1iZXJQcm90
b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqKTsNCn07DQpzdGF0aWNfYXNzZXJ0KHNpemVvZihOdW1iZXJQcm90b3R5cGUp
ID09IHNpemVvZihOdW1iZXJPYmplY3QpKTsgc3RhdGljX2Fzc2VydChOdW1iZXJQcm90b3R5cGU6
OmRlc3Ryb3kgPT0gTnVtYmVyT2JqZWN0OjpkZXN0cm95KTs7DQoNCkVuY29kZWRKU1ZhbHVlICBu
dW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQpFbmNv
ZGVkSlNWYWx1ZSAgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsNCkpTU3RyaW5nKiBpbnQzMlRvU3RyaW5nKFZNJiwgaW50MzJfdCB2YWx1ZSwgaW50
MzJfdCByYWRpeCk7DQpKU1N0cmluZyogaW50NTJUb1N0cmluZyhWTSYsIGludDY0X3QgdmFsdWUs
IGludDMyX3QgcmFkaXgpOw0KSlNTdHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiwgZG91YmxlIHZh
bHVlLCBpbnQzMl90IHJhZGl4KTsNClN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChkb3VibGUgZG91
YmxlVmFsdWUsIGludDMyX3QgcmFkaXgpOw0KaW50MzJfdCBleHRyYWN0VG9TdHJpbmdSYWRpeEFy
Z3VtZW50KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSByYWRpeFZhbHVlLCBUaHJvd1Njb3BlJik7
DQoNCn0gDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxwYXJzZXJcXFBhcnNlck1v
ZGVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXENvbnN0cnVjdEFiaWxpdHkuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cm5hbWVzcGFjZSBKU0Mgew0KDQplbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1aW50OF90
IHsNCiAgICBDYW5Db25zdHJ1Y3QsDQogICAgQ2Fubm90Q29uc3RydWN0LA0KfTsNCg0KfSANCiNs
aW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHBhcnNlclxcUGFyc2VyTW9kZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQ29uc3RydWN0b3JLaW5kLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQgOiB1
aW50OF90IHsNCiAgICBOb25lLA0KICAgIEJhc2UsDQogICAgRXh0ZW5kcywNCiAgICBOYWtlZCwg
DQp9Ow0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccGFyc2VyXFxQYXJzZXJNb2Rlcy5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQplbnVtIGNsYXNzIEpTUGFyc2VyU3RyaWN0TW9kZSB7IE5vdFN0cmljdCwgU3RyaWN0IH07
DQplbnVtIGNsYXNzIEpTUGFyc2VyQnVpbHRpbk1vZGUgeyBOb3RCdWlsdGluLCBCdWlsdGluIH07
DQplbnVtIGNsYXNzIEpTUGFyc2VyU2NyaXB0TW9kZSB7IENsYXNzaWMsIE1vZHVsZSB9Ow0KDQpl
bnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07DQoNCmVudW0gY2xh
c3MgQ29kZUdlbmVyYXRpb25Nb2RlIDogdWludDhfdCB7DQogICAgRGVidWdnZXIgPSAxIDw8IDAs
DQogICAgVHlwZVByb2ZpbGVyID0gMSA8PCAxLA0KICAgIENvbnRyb2xGbG93UHJvZmlsZXIgPSAx
IDw8IDIsDQp9Ow0KDQplbnVtIGNsYXNzIEZ1bmN0aW9uTW9kZSB7IEZ1bmN0aW9uRXhwcmVzc2lv
biwgRnVuY3Rpb25EZWNsYXJhdGlvbiwgTWV0aG9kRGVmaW5pdGlvbiB9Ow0KDQoNCmVudW0gY2xh
c3MgU291cmNlUGFyc2VNb2RlIDogdWludDhfdCB7DQogICAgTm9ybWFsRnVuY3Rpb25Nb2RlICAg
ICAgICAgICAgICAgID0gMCwNCiAgICBHZW5lcmF0b3JCb2R5TW9kZSAgICAgICAgICAgICAgICAg
PSAxLA0KICAgIEdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgICAgICA9IDIsDQogICAgR2V0
dGVyTW9kZSAgICAgICAgICAgICAgICAgICAgICAgID0gMywNCiAgICBTZXR0ZXJNb2RlICAgICAg
ICAgICAgICAgICAgICAgICAgPSA0LA0KICAgIE1ldGhvZE1vZGUgICAgICAgICAgICAgICAgICAg
ICAgICA9IDUsDQogICAgQXJyb3dGdW5jdGlvbk1vZGUgICAgICAgICAgICAgICAgID0gNiwNCiAg
ICBBc3luY0Z1bmN0aW9uQm9keU1vZGUgICAgICAgICAgICAgPSA3LA0KICAgIEFzeW5jQXJyb3dG
dW5jdGlvbkJvZHlNb2RlICAgICAgICA9IDgsDQogICAgQXN5bmNGdW5jdGlvbk1vZGUgICAgICAg
ICAgICAgICAgID0gOSwNCiAgICBBc3luY01ldGhvZE1vZGUgICAgICAgICAgICAgICAgICAgPSAx
MCwNCiAgICBBc3luY0Fycm93RnVuY3Rpb25Nb2RlICAgICAgICAgICAgPSAxMSwNCiAgICBQcm9n
cmFtTW9kZSAgICAgICAgICAgICAgICAgICAgICAgPSAxMiwNCiAgICBNb2R1bGVBbmFseXplTW9k
ZSAgICAgICAgICAgICAgICAgPSAxMywNCiAgICBNb2R1bGVFdmFsdWF0ZU1vZGUgICAgICAgICAg
ICAgICAgPSAxNCwNCiAgICBBc3luY0dlbmVyYXRvckJvZHlNb2RlICAgICAgICAgICAgPSAxNSwN
CiAgICBBc3luY0dlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgPSAxNiwNCiAgICBBc3luY0dl
bmVyYXRvcldyYXBwZXJNZXRob2RNb2RlICAgPSAxNywNCiAgICBHZW5lcmF0b3JXcmFwcGVyTWV0
aG9kTW9kZSAgICAgICAgPSAxOCwNCiAgICBJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJNb2RlICAg
ICAgPSAxOSwNCn07DQoNCmNsYXNzIFNvdXJjZVBhcnNlTW9kZVNldCB7IA0KcHVibGljOiANCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBNb2Rlcz4gDQogICAgY29uc3RleHByIFNvdXJjZVBhcnNl
TW9kZVNldChNb2Rlcy4uLiBhcmdzKQ0KICAgICAgICA6IG1fbWFzayhtZXJnZVNvdXJjZVBhcnNl
TW9kZXMoYXJncy4uLikpIA0KICAgIHsgDQogICAgfSANCg0KICAgIF9fZm9yY2VpbmxpbmUgY29u
c3RleHByIGJvb2wgY29udGFpbnMoU291cmNlUGFyc2VNb2RlIG1vZGUpDQogICAgeyANCiAgICAg
ICAgcmV0dXJuICgxVSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9kZSkpICYgbV9tYXNrOw0K
ICAgIH0gDQoNCnByaXZhdGU6IA0KICAgIF9fZm9yY2VpbmxpbmUgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBtZXJnZVNvdXJjZVBhcnNlTW9kZXMoU291cmNlUGFyc2VNb2RlIG1vZGUpDQogICAg
eyANCiAgICAgICAgcmV0dXJuICgxVSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9kZSkpOw0K
ICAgIH0gDQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBSZXN0PiANCiAgICBfX2ZvcmNlaW5s
aW5lIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWVyZ2VTb3VyY2VQYXJzZU1vZGVzKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlLCBSZXN0Li4uIHJlc3QpDQogICAgeyANCiAgICAgICAgcmV0dXJuICgx
VSA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9kZSkpIHwgbWVyZ2VTb3VyY2VQYXJzZU1vZGVz
KHJlc3QuLi4pOw0KICAgIH0gDQoNCiAgICBjb25zdCB1bnNpZ25lZCBtX21hc2s7IA0KfTsgDQoN
Cl9fZm9yY2VpbmxpbmUgYm9vbCBpc0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUpIA0KeyANCiAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KCANCiAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUsIA0KICAgICAgICBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlLCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JXcmFwcGVyTWV0aG9kTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlLCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCANCiAgICAgICAgU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlLCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZSwgDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJv
ZHlNb2RlLCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSwgDQog
ICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlLCANCiAgICAgICAgU291cmNl
UGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLCANCiAgICAgICAgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0dlbmVyYXRvckJvZHlNb2RlLA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpB
c3luY0dlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlLA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6
Okluc3RhbmNlRmllbGRJbml0aWFsaXplck1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7DQp9IA0K
DQpfX2ZvcmNlaW5saW5lIGJvb2wgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpIA0KeyANCiAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KA0KICAg
ICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSwN
CiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlLA0KICAgICAg
ICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGUsDQogICAg
ICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlLCANCiAgICAgICAgU291
cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSwgDQogICAgICAgIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNNZXRob2RNb2RlLCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93
RnVuY3Rpb25Nb2RlLCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsgDQp9IA0KDQpfX2ZvcmNlaW5saW5lIGJv
b2wgaXNBc3luY0Fycm93RnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkgDQp7IA0KICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoIA0KICAgICAgICBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUsDQogICAgICAgIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7IA0KfSAN
Cg0KX19mb3JjZWlubGluZSBib29sIGlzQXN5bmNHZW5lcmF0b3JQYXJzZU1vZGUoU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSkNCnsNCiAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KA0KICAg
ICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSwN
CiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJNZXRob2RNb2Rl
LA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGUpLmNvbnRh
aW5zKHBhcnNlTW9kZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBpc0FzeW5jR2VuZXJhdG9y
V3JhcHBlclBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQ0Kew0KICAgIHJldHVy
biBTb3VyY2VQYXJzZU1vZGVTZXQoDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlLA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7DQp9DQoNCl9f
Zm9yY2VpbmxpbmUgYm9vbCBpc0FzeW5jRnVuY3Rpb25PckFzeW5jR2VuZXJhdG9yV3JhcHBlclBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQ0Kew0KICAgIHJldHVybiBTb3VyY2VQ
YXJzZU1vZGVTZXQoDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
TW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSwNCiAgICAg
ICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUsDQog
ICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZSwN
CiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNl
TW9kZSk7DQogICAgfQ0KICAgIA0KX19mb3JjZWlubGluZSBib29sIGlzQXN5bmNGdW5jdGlvbldy
YXBwZXJQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkgDQp7IA0KICAgIHJldHVy
biBTb3VyY2VQYXJzZU1vZGVTZXQoIA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGUsIA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25N
b2RlLA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMo
cGFyc2VNb2RlKTsgDQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBpc0FzeW5jRnVuY3Rpb25Cb2R5
UGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpIA0KeyANCiAgICByZXR1cm4gU291
cmNlUGFyc2VNb2RlU2V0KCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9u
Qm9keU1vZGUsDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9k
ZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSku
Y29udGFpbnMocGFyc2VNb2RlKTsgDQp9DQogICAgDQpfX2ZvcmNlaW5saW5lIGJvb2wgaXNHZW5l
cmF0b3JNZXRob2RQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkNCnsNCiAgICBy
ZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KA0KICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvcldyYXBwZXJNZXRob2RNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOw0KfQ0KDQpfX2ZvcmNl
aW5saW5lIGJvb2wgaXNBc3luY01ldGhvZFBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKQ0Kew0KICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpB
c3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7DQp9DQogICAgDQpfX2ZvcmNlaW5s
aW5lIGJvb2wgaXNBc3luY0dlbmVyYXRvck1ldGhvZFBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKQ0Kew0KICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VN
b2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlKS5jb250YWlucyhwYXJzZU1vZGUp
Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgaXNNZXRob2RQYXJzZU1vZGUoU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSkNCnsNCiAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KA0KICAgICAg
ICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlLA0KICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUsDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6U2V0
dGVyTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlLA0KICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0dlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOw0K
fQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFy
c2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpDQp7DQogICAgcmV0dXJuIFNvdXJjZVBh
cnNlTW9kZVNldCgNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwN
CiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGUsDQogICAgICAg
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSwNCiAgICAgICAgU291cmNl
UGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2Rl
KTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3Jh
cHBlclBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQ0Kew0KICAgIHJldHVybiBT
b3VyY2VQYXJzZU1vZGVTZXQoDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3Jh
cHBlckZ1bmN0aW9uTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFw
cGVyTWV0aG9kTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9k
ZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLA0KICAg
ICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSwN
CiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUsDQogICAgICAgIFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIGlzR2VuZXJhdG9yUGFyc2VNb2RlKFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpDQp7DQogICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNl
dCgNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwNCiAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlLA0KICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlKS5jb250YWlucyhwYXJz
ZU1vZGUpOyAgICANCn0NCg0KX19mb3JjZWlubGluZSBib29sIGlzR2VuZXJhdG9yV3JhcHBlclBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQ0Kew0KICAgIHJldHVybiBTb3VyY2VQ
YXJzZU1vZGVTZXQoDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0
aG9kTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIGlz
QXJyb3dGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQ0Kew0KICAg
IHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGUsDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0
aW9uTW9kZSwNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5
TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIGlzTW9k
dWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpIA0KeyANCiAgICByZXR1cm4g
U291cmNlUGFyc2VNb2RlU2V0KCANCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFs
eXplTW9kZSwgDQogICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKS5j
b250YWlucyhwYXJzZU1vZGUpOyANCn0NCg0KX19mb3JjZWlubGluZSBib29sIGlzUHJvZ3JhbVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKSANCnsgDQogICAgcmV0dXJuIFNvdXJj
ZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlKS5jb250YWlucyhwYXJz
ZU1vZGUpOyANCn0NCg0KX19mb3JjZWlubGluZSBib29sIGlzUHJvZ3JhbU9yTW9kdWxlUGFyc2VN
b2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpDQp7DQogICAgcmV0dXJuIFNvdXJjZVBhcnNl
TW9kZVNldCgNCiAgICAgICAgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgDQogICAgICAg
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIA0KICAgICAgICBTb3VyY2VQYXJz
ZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsgDQp9DQoNCl9f
Zm9yY2VpbmxpbmUgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2Rl
KFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpIA0KeyANCiAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlKSANCiAgICAgICAgcmV0dXJuIENvbnN0
cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsNCg0KICAgIHJldHVybiBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7DQp9DQoNCmlubGluZSBib29sIGZ1bmN0aW9uTmFtZUlzSW5TY29w
ZShjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQ0Kew0K
ICAgIGlmIChuYW1lLmlzTnVsbCgpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICBpZiAo
ZnVuY3Rpb25Nb2RlICE9IEZ1bmN0aW9uTW9kZTo6RnVuY3Rpb25FeHByZXNzaW9uKQ0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQoNCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KaW5saW5lIGJvb2wgZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUp
DQp7DQogICAgDQogICAgDQoNCiAgICBpZiAoIXVzZXNFdmFsKQ0KICAgICAgICByZXR1cm4gZmFs
c2U7DQoNCiAgICBpZiAoaXNTdHJpY3RNb2RlKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAg
ICByZXR1cm4gdHJ1ZTsNCn0NCg0KdHlwZWRlZiB1aW50MTZfdCBDb2RlRmVhdHVyZXM7DQoNCmNv
bnN0IENvZGVGZWF0dXJlcyBOb0ZlYXR1cmVzID0gICAgICAgICAgICAgICAgICAgICAgIDA7DQpj
b25zdCBDb2RlRmVhdHVyZXMgRXZhbEZlYXR1cmUgPSAgICAgICAgICAgICAgICAgMSA8PCAwOw0K
Y29uc3QgQ29kZUZlYXR1cmVzIEFyZ3VtZW50c0ZlYXR1cmUgPSAgICAgICAgICAgIDEgPDwgMTsN
CmNvbnN0IENvZGVGZWF0dXJlcyBXaXRoRmVhdHVyZSA9ICAgICAgICAgICAgICAgICAxIDw8IDI7
DQpjb25zdCBDb2RlRmVhdHVyZXMgVGhpc0ZlYXR1cmUgPSAgICAgICAgICAgICAgICAgMSA8PCAz
Ow0KY29uc3QgQ29kZUZlYXR1cmVzIFN0cmljdE1vZGVGZWF0dXJlID0gICAgICAgICAgIDEgPDwg
NDsNCmNvbnN0IENvZGVGZWF0dXJlcyBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZSA9ICAgICAxIDw8
IDU7DQpjb25zdCBDb2RlRmVhdHVyZXMgQXJyb3dGdW5jdGlvbkZlYXR1cmUgPSAgICAgICAgMSA8
PCA2Ow0KY29uc3QgQ29kZUZlYXR1cmVzIEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSA9IDEg
PDwgNzsNCmNvbnN0IENvZGVGZWF0dXJlcyBTdXBlckNhbGxGZWF0dXJlID0gICAgICAgICAgICAx
IDw8IDg7DQpjb25zdCBDb2RlRmVhdHVyZXMgU3VwZXJQcm9wZXJ0eUZlYXR1cmUgPSAgICAgICAg
MSA8PCA5Ow0KY29uc3QgQ29kZUZlYXR1cmVzIE5ld1RhcmdldEZlYXR1cmUgPSAgICAgICAgICAg
IDEgPDwgMTA7DQpjb25zdCBDb2RlRmVhdHVyZXMgTm9FdmFsQ2FjaGVGZWF0dXJlID0gICAgICAg
ICAgMSA8PCAxMTsNCg0KY29uc3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1cmVzID0gRXZhbEZlYXR1
cmUgfCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBUaGlzRmVhdHVyZSB8IFN0cmlj
dE1vZGVGZWF0dXJlIHwgU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9uRmVh
dHVyZSB8IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSB8DQogICAgU3VwZXJDYWxsRmVhdHVy
ZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVyZSB8IE5vRXZhbENhY2hl
RmVhdHVyZTsNCg0KdHlwZWRlZiB1aW50OF90IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJl
czsNCiAgICANCmNvbnN0IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBOb0lubmVyQXJy
b3dGdW5jdGlvbkZlYXR1cmVzID0gICAgICAgICAgICAgICAgMDsNCmNvbnN0IElubmVyQXJyb3dG
dW5jdGlvbkNvZGVGZWF0dXJlcyBFdmFsSW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZSA9ICAgICAg
ICAgIDEgPDwgMDsNCmNvbnN0IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBBcmd1bWVu
dHNJbm5lckFycm93RnVuY3Rpb25GZWF0dXJlID0gICAgIDEgPDwgMTsNCmNvbnN0IElubmVyQXJy
b3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBUaGlzSW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZSA9ICAg
ICAgICAgIDEgPDwgMjsNCmNvbnN0IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBTdXBl
ckNhbGxJbm5lckFycm93RnVuY3Rpb25GZWF0dXJlID0gICAgIDEgPDwgMzsNCmNvbnN0IElubmVy
QXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBTdXBlclByb3BlcnR5SW5uZXJBcnJvd0Z1bmN0aW9u
RmVhdHVyZSA9IDEgPDwgNDsNCmNvbnN0IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBO
ZXdUYXJnZXRJbm5lckFycm93RnVuY3Rpb25GZWF0dXJlID0gICAgIDEgPDwgNTsNCiAgICANCmNv
bnN0IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBBbGxJbm5lckFycm93RnVuY3Rpb25D
b2RlRmVhdHVyZXMgPSBFdmFsSW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8IEFyZ3VtZW50c0lu
bmVyQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBUaGlzSW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8
IFN1cGVyQ2FsbElubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBTdXBlclByb3BlcnR5SW5uZXJB
cnJvd0Z1bmN0aW9uRmVhdHVyZSB8IE5ld1RhcmdldElubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmU7
DQpzdGF0aWNfYXNzZXJ0KEFsbElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyA8PSAwYjEx
MTExMSwgIklubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBtdXN0IGJlIDZiaXRzIik7DQp9
IA0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUmVnRXhwR2xvYmFs
RGF0YS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxSZWdFeHBDYWNoZWRSZXN1bHQuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFJlZ0V4cC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYXRjaFJlc3VsdC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnN0cnVjdCBNYXRjaFJlc3VsdDsN
Cg0KDQojbGluZSAzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxNYXRjaFJlc3VsdC5oIg0KdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0
ID0gTWF0Y2hSZXN1bHQ7DQojbGluZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYXRjaFJlc3VsdC5oIg0KDQpzdHJ1Y3QgTWF0
Y2hSZXN1bHQgew0KICAgIE1hdGNoUmVzdWx0KCkNCiAgICAgICAgOiBzdGFydChXVEY6Om5vdEZv
dW5kKQ0KICAgICAgICAsIGVuZCgwKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgX19mb3JjZWlu
bGluZSBNYXRjaFJlc3VsdChzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQpDQogICAgICAgIDogc3Rh
cnQoc3RhcnQpDQogICAgICAgICwgZW5kKGVuZCkNCiAgICB7DQogICAgfQ0KDQoNCg0KDQoNCg0K
DQojbGluZSA2MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxNYXRjaFJlc3VsdC5oIg0KDQogICAgX19mb3JjZWlubGluZSBzdGF0aWMg
TWF0Y2hSZXN1bHQgZmFpbGVkKCkNCiAgICB7DQogICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCgp
Ow0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gc3RhcnQgIT0gV1RGOjpub3RGb3VuZDsNCiAgICB9
DQoNCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgZW1wdHkoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHN0YXJ0ID09IGVuZDsNCiAgICB9DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7DQoNCiAgICBzaXplX3Qgc3RhcnQ7DQogICAgc2l6ZV90IGVuZDsNCn07DQoNCnN0YXRp
Y19hc3NlcnQoc2l6ZW9mKEVuY29kZWRNYXRjaFJlc3VsdCkgPT0gMiAqIHNpemVvZihzaXplX3Qp
LCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUxOCNjMTEiKTsN
CnN0YXRpY19hc3NlcnQoc2l6ZW9mKE1hdGNoUmVzdWx0KSA9PSBzaXplb2YoRW5jb2RlZE1hdGNo
UmVzdWx0KSwgIk1hdGNoIHJlc3VsdCBhbmQgRW5jb2RlZE1hdGNoUmVzdWx0IHNob3VsZCBiZSB0
aGUgc2FtZSBzaXplIik7DQoNCn0gDQojbGluZSAyNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxSZWdFeHAuaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
UmVnRXhwS2V5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHlhcnJcXFlhcnJGbGFncy5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7DQoNCmVudW0gY2xhc3MgRmxh
Z3MgOiB1aW50OF90IHsNCiAgICBHbG9iYWwgPSAxIDw8IDAsDQogICAgSWdub3JlQ2FzZSA9IDEg
PDwgMSwNCiAgICBNdWx0aWxpbmUgPSAxIDw8IDIsDQogICAgU3RpY2t5ID0gMSA8PCAzLA0KICAg
IFVuaWNvZGUgPSAxIDw8IDQsDQogICAgRG90QWxsID0gMSA8PCA1LA0KICAgIERlbGV0ZWRWYWx1
ZSA9IDEgPDwgNg0KfTsNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIE9wdGlvbmFsPE9wdGlvblNl
dDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyk7DQoNCn0gfSANCiNsaW5lIDMyICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFJl
Z0V4cEtleS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvT3B0aW9uU2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xc
d3RmL0VudW1UcmFpdHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBFbnVtVHJhaXRzOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBF
Li4uPiBzdHJ1Y3QgRW51bVZhbHVlczsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
RT4gc3RydWN0IEVudW1WYWx1ZUNoZWNrZXI7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEUsIEUgZSwgRS4uLiBlcz4NCnN0cnVjdCBFbnVtVmFsdWVDaGVja2VyPFQsIEVudW1WYWx1
ZXM8RSwgZSwgZXMuLi4+PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzVmFsaWRFbnVt
KFQgdCkNCiAgICB7DQogICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8VD4oZSkgPT0gdCkgPyB0
cnVlIDogRW51bVZhbHVlQ2hlY2tlcjxULCBFbnVtVmFsdWVzPEUsIGVzLi4uPj46OmlzVmFsaWRF
bnVtKHQpOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+DQpz
dHJ1Y3QgRW51bVZhbHVlQ2hlY2tlcjxULCBFbnVtVmFsdWVzPEU+PiB7DQogICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzVmFsaWRFbnVtKFQpDQogICAgew0KICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVT4gY2xhc3MgSGFzQ3VzdG9tSXNWYWxp
ZEVudW0gOiBwdWJsaWMgc3RkOjpmYWxzZV90eXBlIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
RSwgdHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYm
ICFzdGQ6OmlzX3NhbWU8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgYm9vbD46OnZhbHVlICYm
ICFIYXNDdXN0b21Jc1ZhbGlkRW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+DQpjb25zdGV4cHIg
Ym9vbCBpc1ZhbGlkRW51bShUIHQpDQp7DQogICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPj0g
c2l6ZW9mKHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4pLCAiSW50ZWdyYWwgdHlwZSBtdXN0IGJl
IGF0IGxlYXN0IHRoZSBzaXplIG9mIHRoZSB1bmRlcmx5aW5nIGVudW0gdHlwZSIpOw0KDQogICAg
cmV0dXJuIEVudW1WYWx1ZUNoZWNrZXI8VCwgdHlwZW5hbWUgRW51bVRyYWl0czxFPjo6dmFsdWVz
Pjo6aXNWYWxpZEVudW0odCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQs
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4s
IGJvb2w+Ojp2YWx1ZT4qID0gbnVsbHB0cj4NCmNvbnN0ZXhwciBib29sIGlzVmFsaWRFbnVtKFQg
dCkNCnsNCiAgICByZXR1cm4gIXQgfHwgdCA9PSAxOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBF
Pg0KY29uc3RleHByIGF1dG8gZW51bVRvVW5kZXJseWluZ1R5cGUoRSBlKQ0Kew0KICAgIHJldHVy
biBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+PihlKTsNCn0NCg0KfQ0KDQp1
c2luZyBXVEY6OmlzVmFsaWRFbnVtOw0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL09wdGlvblNldC5oIg0KDQoNCg0KDQpu
YW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgRT4gY2xhc3MgT3B0aW9uU2V0Ow0K
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+IHN0cnVjdCBPcHRpb25TZXRWYWx1
ZUNoZWNrZXI7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEUsIEUgZSwgRS4uLiBl
cz4NCnN0cnVjdCBPcHRpb25TZXRWYWx1ZUNoZWNrZXI8VCwgRW51bVZhbHVlczxFLCBlLCBlcy4u
Lj4+IHsNCiAgICBzdGF0aWMgY29uc3RleHByIFQgYWxsVmFsaWRCaXRzKCkNCiAgICB7DQogICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihlKSB8IE9wdGlvblNldFZhbHVlQ2hlY2tlcjxULCBF
bnVtVmFsdWVzPEUsIGVzLi4uPj46OmFsbFZhbGlkQml0cygpOw0KICAgIH0NCg0KICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc1ZhbGlkT3B0aW9uU2V0RW51bShUIHQpDQogICAgew0KICAgICAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PFQ+KGUpID09IHQpID8gdHJ1ZSA6IE9wdGlvblNldFZhbHVl
Q2hlY2tlcjxULCBFbnVtVmFsdWVzPEUsIGVzLi4uPj46OmlzVmFsaWRPcHRpb25TZXRFbnVtKHQp
Ow0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+DQpzdHJ1Y3Qg
T3B0aW9uU2V0VmFsdWVDaGVja2VyPFQsIEVudW1WYWx1ZXM8RT4+IHsNCiAgICBzdGF0aWMgY29u
c3RleHByIFQgYWxsVmFsaWRCaXRzKCkNCiAgICB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1ZhbGlkT3B0aW9uU2V0RW51bShUKQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGU8dHlwZW5h
bWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlICYmIElzVHlwZUNv
bXBsZXRlPEVudW1UcmFpdHM8RT4+PiogPSBudWxscHRyPg0KY29uc3RleHByIGJvb2wgaXNWYWxp
ZE9wdGlvblNldEVudW0oRSBlKQ0Kew0KICAgIHJldHVybiBPcHRpb25TZXRWYWx1ZUNoZWNrZXI8
c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgdHlwZW5hbWUgRW51bVRyYWl0czxFPjo6dmFsdWVz
Pjo6aXNWYWxpZE9wdGlvblNldEVudW0oc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVf
dDxFPj4oZSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWUgJiYgIUlzVHlwZUNvbXBsZXRlPEVudW1UcmFpdHM8RT4+Piog
PSBudWxscHRyPg0KY29uc3RleHByIGJvb2wgaXNWYWxpZE9wdGlvblNldEVudW0oRSBlKQ0Kew0K
ICAgIA0KICAgIHJldHVybiBoYXNPbmVCaXRTZXQoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgT3B0aW9u
U2V0PEU+OjpTdG9yYWdlVHlwZT4oZSkpOw0KfQ0KDQoNCnRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiBJc1R5cGVDb21wbGV0ZTxF
bnVtVHJhaXRzPEU+Pj4qID0gbnVsbHB0cj4NCmNvbnN0ZXhwciB0eXBlbmFtZSBPcHRpb25TZXQ8
RT46OlN0b3JhZ2VUeXBlIG1hc2tSYXdWYWx1ZSh0eXBlbmFtZSBPcHRpb25TZXQ8RT46OlN0b3Jh
Z2VUeXBlIHJhd1ZhbHVlKQ0Kew0KICAgIGF1dG8gYWxsVmFsaWRCaXRzVmFsdWUgPSBPcHRpb25T
ZXRWYWx1ZUNoZWNrZXI8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgdHlwZW5hbWUgRW51bVRy
YWl0czxFPjo6dmFsdWVzPjo6YWxsVmFsaWRCaXRzKCk7DQogICAgcmV0dXJuIHJhd1ZhbHVlICYg
YWxsVmFsaWRCaXRzVmFsdWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSAmJiAhSXNUeXBlQ29tcGxldGU8RW51bVRyYWl0
czxFPj4+KiA9IG51bGxwdHI+DQpjb25zdGV4cHIgdHlwZW5hbWUgT3B0aW9uU2V0PEU+OjpTdG9y
YWdlVHlwZSBtYXNrUmF3VmFsdWUodHlwZW5hbWUgT3B0aW9uU2V0PEU+OjpTdG9yYWdlVHlwZSBy
YXdWYWx1ZSkNCnsNCiAgICANCiAgICByZXR1cm4gcmF3VmFsdWU7DQp9DQoNCg0KDQoNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgRT4gY2xhc3MgT3B0aW9uU2V0IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsg
KCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0g
aW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhp
c01hY3JvID0gaW50Ow0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwg
IlQgaXMgbm90IGFuIGVudW0gdHlwZSIpOw0KDQpwdWJsaWM6DQogICAgdXNpbmcgU3RvcmFnZVR5
cGUgPSBzdGQ6Om1ha2VfdW5zaWduZWRfdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+PjsNCg0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VUeXBlPiBjbGFzcyBJdGVyYXRvciB7DQogICAg
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3
ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9y
Y2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgcHVibGljOg0KICAgICAgICAN
CiAgICAgICAgRSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFPihtX3Zh
bHVlICYgLW1fdmFsdWUpOyB9DQoNCiAgICAgICAgDQogICAgICAgIEl0ZXJhdG9yJiBvcGVyYXRv
cisrKCkNCiAgICAgICAgew0KICAgICAgICAgICAgbV92YWx1ZSAmPSBtX3ZhbHVlIC0gMTsNCiAg
ICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgICAgIEl0ZXJhdG9yJiBv
cGVyYXRvcisrKGludCkgPSBkZWxldGU7DQoNCiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVl
OyB9DQogICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1ZTsgfQ0KDQogICAgcHJpdmF0ZToNCiAg
ICAgICAgSXRlcmF0b3IoU3RvcmFnZVR5cGUgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9DQog
ICAgICAgIGZyaWVuZCBPcHRpb25TZXQ7DQoNCiAgICAgICAgU3RvcmFnZVR5cGUgbV92YWx1ZTsN
CiAgICB9Ow0KICAgIHVzaW5nIGl0ZXJhdG9yID0gSXRlcmF0b3I8U3RvcmFnZVR5cGU+Ow0KDQog
ICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQgZnJvbVJhdyhTdG9yYWdlVHlwZSByYXdWYWx1
ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBPcHRpb25TZXQoc3RhdGljX2Nhc3Q8RT4obWFza1Jh
d1ZhbHVlPEU+KHJhd1ZhbHVlKSksIEZyb21SYXdWYWx1ZSk7DQogICAgfQ0KDQogICAgY29uc3Rl
eHByIE9wdGlvblNldCgpID0gZGVmYXVsdDsNCg0KICAgIGNvbnN0ZXhwciBPcHRpb25TZXQoRSBl
KQ0KICAgICAgICA6IG1fc3RvcmFnZShzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4oZSkpDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgY29uc3RleHByIE9wdGlvblNldChz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8RT4gaW5pdGlhbGl6ZXJMaXN0KQ0KICAgIHsNCiAgICAgICAg
Zm9yIChhdXRvJiBvcHRpb24gOiBpbml0aWFsaXplckxpc3QpIHsNCiAgICAgICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgICAgIG1fc3RvcmFnZSB8PSBzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4o
b3B0aW9uKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBPcHRpb25TZXQoT3B0
aW9uYWw8RT4gb3B0aW9uYWwpDQogICAgICAgIDogbV9zdG9yYWdlKG9wdGlvbmFsID8gc3RhdGlj
X2Nhc3Q8U3RvcmFnZVR5cGU+KCpvcHRpb25hbCkgOiAwKQ0KICAgIHsNCiAgICB9DQoNCiAgICBj
b25zdGV4cHIgU3RvcmFnZVR5cGUgdG9SYXcoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2U7IH0N
Cg0KICAgIGNvbnN0ZXhwciBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zdG9yYWdl
OyB9DQoNCiAgICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3N0
b3JhZ2U7IH0NCiAgICBjb25zdGV4cHIgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gMDsg
fQ0KDQogICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAhaXNF
bXB0eSgpOyB9DQoNCiAgICBjb25zdGV4cHIgYm9vbCBjb250YWlucyhFIG9wdGlvbikgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBjb250YWluc0FueShvcHRpb24pOw0KICAgIH0NCg0KICAg
IGNvbnN0ZXhwciBib29sIGNvbnRhaW5zQW55KE9wdGlvblNldCBvcHRpb25TZXQpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gISEoKnRoaXMgJiBvcHRpb25TZXQpOw0KICAgIH0NCg0KICAg
IGNvbnN0ZXhwciBib29sIGNvbnRhaW5zQWxsKE9wdGlvblNldCBvcHRpb25TZXQpIGNvbnN0DQog
ICAgew0KICAgICAgICByZXR1cm4gKCp0aGlzICYgb3B0aW9uU2V0KSA9PSBvcHRpb25TZXQ7DQog
ICAgfQ0KDQogICAgY29uc3RleHByIHZvaWQgYWRkKE9wdGlvblNldCBvcHRpb25TZXQpDQogICAg
ew0KICAgICAgICBtX3N0b3JhZ2UgfD0gb3B0aW9uU2V0Lm1fc3RvcmFnZTsNCiAgICB9DQoNCiAg
ICBjb25zdGV4cHIgdm9pZCByZW1vdmUoT3B0aW9uU2V0IG9wdGlvblNldCkNCiAgICB7DQogICAg
ICAgIG1fc3RvcmFnZSAmPSB+b3B0aW9uU2V0Lm1fc3RvcmFnZTsNCiAgICB9DQoNCiAgICBjb25z
dGV4cHIgYm9vbCBoYXNFeGFjdGx5T25lQml0U2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJl
dHVybiBtX3N0b3JhZ2UgJiYgIShtX3N0b3JhZ2UgJiAobV9zdG9yYWdlIC0gMSkpOw0KICAgIH0N
Cg0KICAgIGNvbnN0ZXhwciBPcHRpb25hbDxFPiB0b1NpbmdsZVZhbHVlKCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBoYXNFeGFjdGx5T25lQml0U2V0KCkgPyBPcHRpb25hbDxFPihzdGF0
aWNfY2FzdDxFPihtX3N0b3JhZ2UpKSA6IFdURjo6bnVsbG9wdDsNCiAgICB9DQoNCiAgICBjb25z
dGV4cHIgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhz
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsN
CiAgICB9DQoNCiAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShPcHRpb25TZXQg
bGhzLCBPcHRpb25TZXQgcmhzKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2Ug
IT0gcmhzLm1fc3RvcmFnZTsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgZnJpZW5kIE9wdGlvblNl
dCBvcGVyYXRvcnwoT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykNCiAgICB7DQogICAgICAg
IHJldHVybiBmcm9tUmF3KGxocy5tX3N0b3JhZ2UgfCByaHMubV9zdG9yYWdlKTsNCiAgICB9DQoN
CiAgICBjb25zdGV4cHIgZnJpZW5kIE9wdGlvblNldCBvcGVyYXRvciYoT3B0aW9uU2V0IGxocywg
T3B0aW9uU2V0IHJocykNCiAgICB7DQogICAgICAgIHJldHVybiBmcm9tUmF3KGxocy5tX3N0b3Jh
Z2UgJiByaHMubV9zdG9yYWdlKTsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgZnJpZW5kIE9wdGlv
blNldCBvcGVyYXRvci0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykNCiAgICB7DQogICAg
ICAgIHJldHVybiBmcm9tUmF3KGxocy5tX3N0b3JhZ2UgJiB+cmhzLm1fc3RvcmFnZSk7DQogICAg
fQ0KDQogICAgY29uc3RleHByIGZyaWVuZCBPcHRpb25TZXQgb3BlcmF0b3JeKE9wdGlvblNldCBs
aHMsIE9wdGlvblNldCByaHMpDQogICAgew0KICAgICAgICByZXR1cm4gZnJvbVJhdyhsaHMubV9z
dG9yYWdlIF4gcmhzLm1fc3RvcmFnZSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIGVudW0gSW5p
dGlhbGl6YXRpb25UYWcgeyBGcm9tUmF3VmFsdWUgfTsNCiAgICBjb25zdGV4cHIgT3B0aW9uU2V0
KEUgZSwgSW5pdGlhbGl6YXRpb25UYWcpDQogICAgICAgIDogbV9zdG9yYWdlKHN0YXRpY19jYXN0
PFN0b3JhZ2VUeXBlPihlKSkNCiAgICB7DQogICAgfQ0KICAgIFN0b3JhZ2VUeXBlIG1fc3RvcmFn
ZSB7IDAgfTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEU+DQogY29uc3RleHByIGJvb2wgaXNW
YWxpZE9wdGlvblNldChPcHRpb25TZXQ8RT4gb3B0aW9uU2V0KQ0Kew0KICAgIGF1dG8gYWxsVmFs
aWRCaXRzVmFsdWUgPSBPcHRpb25TZXRWYWx1ZUNoZWNrZXI8c3RkOjptYWtlX3Vuc2lnbmVkX3Q8
c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPj4sIHR5cGVuYW1lIEVudW1UcmFpdHM8RT46OnZhbHVl
cz46OmFsbFZhbGlkQml0cygpOw0KICAgIHJldHVybiAob3B0aW9uU2V0LnRvUmF3KCkgfCBhbGxW
YWxpZEJpdHNWYWx1ZSkgPT0gYWxsVmFsaWRCaXRzVmFsdWU7DQp9DQoNCn0gDQoNCnVzaW5nIFdU
Rjo6T3B0aW9uU2V0Ow0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUmVnRXhwS2V5LmgiDQoNCg0KbmFtZXNwYWNlIEpT
QyB7DQoNCnN0cnVjdCBSZWdFeHBLZXkgew0KICAgIE9wdGlvblNldDxZYXJyOjpGbGFncz4gZmxh
Z3NWYWx1ZTsNCiAgICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gcGF0dGVybjsNCg0KICAgIFJl
Z0V4cEtleSgpDQogICAgew0KICAgIH0NCg0KICAgIFJlZ0V4cEtleShPcHRpb25TZXQ8WWFycjo6
RmxhZ3M+IGZsYWdzKQ0KICAgICAgICA6IGZsYWdzVmFsdWUoZmxhZ3MpDQogICAgew0KICAgIH0N
Cg0KICAgIFJlZ0V4cEtleShPcHRpb25TZXQ8WWFycjo6RmxhZ3M+IGZsYWdzLCBjb25zdCBTdHJp
bmcmIHBhdHRlcm4pDQogICAgICAgIDogZmxhZ3NWYWx1ZShmbGFncykNCiAgICAgICAgLCBwYXR0
ZXJuKHBhdHRlcm4uaW1wbCgpKQ0KICAgIHsNCiAgICB9DQoNCiAgICBSZWdFeHBLZXkoT3B0aW9u
U2V0PFlhcnI6OkZsYWdzPiBmbGFncywgUmVmUHRyPFN0cmluZ0ltcGw+JiYgcGF0dGVybikNCiAg
ICAgICAgOiBmbGFnc1ZhbHVlKGZsYWdzKQ0KICAgICAgICAsIHBhdHRlcm4oc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihwYXR0ZXJuKSkNCiAgICB7DQogICAgfQ0KDQogICAgUmVn
RXhwS2V5KE9wdGlvblNldDxZYXJyOjpGbGFncz4gZmxhZ3MsIGNvbnN0IFJlZlB0cjxTdHJpbmdJ
bXBsPiYgcGF0dGVybikNCiAgICAgICAgOiBmbGFnc1ZhbHVlKGZsYWdzKQ0KICAgICAgICAsIHBh
dHRlcm4ocGF0dGVybikNCiAgICB7DQogICAgfQ0KDQogICAgZnJpZW5kIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVnRXhwS2V5JiBhLCBjb25zdCBSZWdFeHBLZXkmIGIpOw0KDQogICAg
c3RydWN0IEhhc2ggew0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWdFeHBL
ZXkmIGtleSkgeyByZXR1cm4ga2V5LnBhdHRlcm4tPmhhc2goKTsgfQ0KICAgICAgICBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBSZWdFeHBLZXkmIGEsIGNvbnN0IFJlZ0V4cEtleSYgYikgeyByZXR1
cm4gYSA9PSBiOyB9DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJl
VG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOw0KICAgIH07DQp9Ow0KDQppbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFJlZ0V4cEtleSYgYSwgY29uc3QgUmVnRXhwS2V5JiBiKQ0Kew0KICAgIGlm
IChhLmZsYWdzVmFsdWUgIT0gYi5mbGFnc1ZhbHVlKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgaWYgKCFhLnBhdHRlcm4pDQogICAgICAgIHJldHVybiAhYi5wYXR0ZXJuOw0KICAgIGlmICgh
Yi5wYXR0ZXJuKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgcmV0dXJuIGVxdWFsKGEucGF0
dGVybi5nZXQoKSwgYi5wYXR0ZXJuLmdldCgpKTsNCn0NCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7
DQp0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOw0KDQp0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlJlZ0V4cEtleT4gOiBKU0M6OlJlZ0V4cEtleTo6SGFzaCB7
IH07DQoNCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpSZWdFeHBLZXk+IDogR2Vu
ZXJpY0hhc2hUcmFpdHM8SlNDOjpSZWdFeHBLZXk+IHsNCiAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKEpTQzo6UmVnRXhwS2V5JiBzbG90KSB7IHNsb3QuZmxhZ3NWYWx1ZSA9IEpTQzo6
WWFycjo6RmxhZ3M6OkRlbGV0ZWRWYWx1ZTsgfQ0KICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IEpTQzo6UmVnRXhwS2V5JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZmxhZ3NWYWx1
ZSA9PSBKU0M6OllhcnI6OkZsYWdzOjpEZWxldGVkVmFsdWU7IH0NCn07DQp9IA0KI2xpbmUgMjcg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcUmVnRXhwLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxceWFyclxcWWFyci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFx5YXJyXFxZ
YXJyRXJyb3JDb2RlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQ2FsbEZy
YW1lOw0KY2xhc3MgSlNHbG9iYWxPYmplY3Q7DQpjbGFzcyBKU09iamVjdDsNCg0KbmFtZXNwYWNl
IFlhcnIgew0KDQplbnVtIGNsYXNzIEVycm9yQ29kZSA6IHVpbnQ4X3Qgew0KICAgIE5vRXJyb3Ig
PSAwLA0KICAgIFBhdHRlcm5Ub29MYXJnZSwNCiAgICBRdWFudGlmaWVyT3V0T2ZPcmRlciwNCiAg
ICBRdWFudGlmaWVyV2l0aG91dEF0b20sDQogICAgUXVhbnRpZmllclRvb0xhcmdlLA0KICAgIFF1
YW50aWZpZXJJbmNvbXBsZXRlLA0KICAgIE1pc3NpbmdQYXJlbnRoZXNlcywNCiAgICBCcmFja2V0
VW5tYXRjaGVkLA0KICAgIFBhcmVudGhlc2VzVW5tYXRjaGVkLA0KICAgIFBhcmVudGhlc2VzVHlw
ZUludmFsaWQsDQogICAgSW52YWxpZEdyb3VwTmFtZSwNCiAgICBEdXBsaWNhdGVHcm91cE5hbWUs
DQogICAgQ2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQsDQogICAgQ2hhcmFjdGVyQ2xhc3NSYW5nZU91
dE9mT3JkZXIsDQogICAgQ2hhcmFjdGVyQ2xhc3NSYW5nZUludmFsaWQsDQogICAgRXNjYXBlVW50
ZXJtaW5hdGVkLA0KICAgIEludmFsaWRVbmljb2RlRXNjYXBlLA0KICAgIEludmFsaWRVbmljb2Rl
Q29kZVBvaW50RXNjYXBlLA0KICAgIEludmFsaWRCYWNrcmVmZXJlbmNlLA0KICAgIEludmFsaWRO
YW1lZEJhY2tSZWZlcmVuY2UsDQogICAgSW52YWxpZElkZW50aXR5RXNjYXBlLA0KICAgIEludmFs
aWRPY3RhbEVzY2FwZSwNCiAgICBJbnZhbGlkQ29udHJvbExldHRlckVzY2FwZSwNCiAgICBJbnZh
bGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbiwNCiAgICBUb29NYW55RGlzanVuY3Rpb25zLA0K
ICAgIE9mZnNldFRvb0xhcmdlLA0KICAgIEludmFsaWRSZWd1bGFyRXhwcmVzc2lvbkZsYWdzLA0K
fTsNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZShFcnJv
ckNvZGUpOw0KaW5saW5lIGJvb2wgaGFzRXJyb3IoRXJyb3JDb2RlIGVycm9yQ29kZSkNCnsNCiAg
ICByZXR1cm4gZXJyb3JDb2RlICE9IEVycm9yQ29kZTo6Tm9FcnJvcjsNCn0NCg0KaW5saW5lIGJv
b2wgaGFzSGFyZEVycm9yKEVycm9yQ29kZSBlcnJvckNvZGUpDQp7DQogICAgDQogICAgDQogICAg
cmV0dXJuIGhhc0Vycm9yKGVycm9yQ29kZSkgJiYgZXJyb3JDb2RlICE9IEVycm9yQ29kZTo6VG9v
TWFueURpc2p1bmN0aW9uczsNCn0NCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdCogZXJy
b3JUb1Rocm93KEpTR2xvYmFsT2JqZWN0KiwgRXJyb3JDb2RlKTsNCg0KfSB9IA0KI2xpbmUgMzIg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxceWFyclxc
WWFyci5oIg0KDQpuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgew0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCnN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgcXVhbnRpZnlJbmZpbml0ZSA9IDB4
ZmZmZmZmZmY7DQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG9mZnNldE5vTWF0Y2ggPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7DQoNCg0KDQpzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1hdGNoTGltaXQgPSAxMDAwMDAwOw0KDQplbnVtIE1hdGNoRnJvbSB7IFZNVGhy
ZWFkLCBDb21waWxlclRocmVhZCB9Ow0KDQplbnVtIEpTUmVnRXhwUmVzdWx0IHsNCiAgICBKU1Jl
Z0V4cE1hdGNoID0gMSwNCiAgICBKU1JlZ0V4cE5vTWF0Y2ggPSAwLA0KICAgIEpTUmVnRXhwRXJy
b3JOb01hdGNoID0gLTEsDQogICAgSlNSZWdFeHBKSVRDb2RlRmFpbHVyZSA9IC0yLA0KICAgIEpT
UmVnRXhwRXJyb3JIaXRMaW1pdCA9IC0zLA0KICAgIEpTUmVnRXhwRXJyb3JOb01lbW9yeSA9IC00
LA0KICAgIEpTUmVnRXhwRXJyb3JJbnRlcm5hbCA9IC01LA0KfTsNCg0KZW51bSBZYXJyQ2hhclNp
emUgew0KICAgIENoYXI4LA0KICAgIENoYXIxNg0KfTsNCg0KZW51bSBjbGFzcyBCdWlsdEluQ2hh
cmFjdGVyQ2xhc3NJRCA6IHVuc2lnbmVkIHsNCiAgICBEaWdpdENsYXNzSUQsDQogICAgU3BhY2VD
bGFzc0lELA0KICAgIFdvcmRDbGFzc0lELA0KICAgIERvdENsYXNzSUQsDQogICAgQmFzZVVuaWNv
ZGVQcm9wZXJ0eUlEDQp9Ow0KDQpzdHJ1Y3QgQnl0ZWNvZGVQYXR0ZXJuOw0KDQp9IH0gDQojbGlu
ZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxSZWdFeHAuaCINCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFx5YXJyXFxZYXJySklULmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHlhcnJcXFlhcnJQYXR0ZXJuLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHlhcnJc
XFlhcnJVbmljb2RlUHJvcGVydGllcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBZYXJyIHsNCg0Kc3RydWN0IENoYXJhY3RlckNsYXNzOw0KDQpfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRj
aFByb3BlcnR5VmFsdWUoV1RGOjpTdHJpbmcsIFdURjo6U3RyaW5nKTsNCl9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBPcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNoUHJv
cGVydHkoV1RGOjpTdHJpbmcpOw0KDQpzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGNy
ZWF0ZVVuaWNvZGVDaGFyYWN0ZXJDbGFzc0ZvcihCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCk7DQoN
Cn0gfSANCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHlhcnJcXFlhcnJQYXR0ZXJuLmgiDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgWWFyciB7DQoNCnN0cnVjdCBZYXJyUGF0dGVybjsNCnN0cnVjdCBQYXR0
ZXJuRGlzanVuY3Rpb247DQoNCnN0cnVjdCBDaGFyYWN0ZXJSYW5nZSB7DQogICAgVUNoYXIzMiBi
ZWdpbiB7IDAgfTsNCiAgICBVQ2hhcjMyIGVuZCB7IDB4MTBmZmZmIH07DQoNCiAgICBDaGFyYWN0
ZXJSYW5nZShVQ2hhcjMyIGJlZ2luLCBVQ2hhcjMyIGVuZCkNCiAgICAgICAgOiBiZWdpbihiZWdp
bikNCiAgICAgICAgLCBlbmQoZW5kKQ0KICAgIHsNCiAgICB9DQp9Ow0KDQplbnVtIHN0cnVjdCBD
aGFyYWN0ZXJDbGFzc1dpZHRocyA6IHVuc2lnbmVkIGNoYXIgew0KICAgIFVua25vd24gPSAweDAs
DQogICAgSGFzQk1QQ2hhcnMgPSAweDEsDQogICAgSGFzTm9uQk1QQ2hhcnMgPSAweDIsDQogICAg
SGFzQm90aEJNUEFuZE5vbkJNUCA9IEhhc0JNUENoYXJzIHwgSGFzTm9uQk1QQ2hhcnMNCn07DQoN
CmlubGluZSBDaGFyYWN0ZXJDbGFzc1dpZHRocyBvcGVyYXRvcnwoQ2hhcmFjdGVyQ2xhc3NXaWR0
aHMgbGhzLCBDaGFyYWN0ZXJDbGFzc1dpZHRocyByaHMpDQp7DQogICAgcmV0dXJuIHN0YXRpY19j
YXN0PENoYXJhY3RlckNsYXNzV2lkdGhzPihzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGhzKSB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyaHMpKTsNCn0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3ImKENo
YXJhY3RlckNsYXNzV2lkdGhzIGxocywgQ2hhcmFjdGVyQ2xhc3NXaWR0aHMgcmhzKQ0Kew0KICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGhzKSAmIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyaHMpOw0KfQ0KDQppbmxpbmUgQ2hhcmFjdGVyQ2xhc3NXaWR0aHMmIG9wZXJhdG9yfD0oQ2hh
cmFjdGVyQ2xhc3NXaWR0aHMmIGxocywgQ2hhcmFjdGVyQ2xhc3NXaWR0aHMgcmhzKQ0Kew0KICAg
IGxocyA9IGxocyB8IHJoczsNCiAgICByZXR1cm4gbGhzOw0KfQ0KDQpzdHJ1Y3QgQ2hhcmFjdGVy
Q2xhc3Mgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBO
b3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsg
fSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lz
SGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAg
DQogICAgDQogICAgDQogICAgQ2hhcmFjdGVyQ2xhc3MoKQ0KICAgICAgICA6IG1fdGFibGUobnVs
bHB0cikNCiAgICAgICAgLCBtX2NoYXJhY3RlcldpZHRocyhDaGFyYWN0ZXJDbGFzc1dpZHRoczo6
VW5rbm93bikNCiAgICAgICAgLCBtX2FueUNoYXJhY3RlcihmYWxzZSkNCiAgICB7DQogICAgfQ0K
ICAgIENoYXJhY3RlckNsYXNzKGNvbnN0IGNoYXIqIHRhYmxlLCBib29sIGludmVydGVkKQ0KICAg
ICAgICA6IG1fdGFibGUodGFibGUpDQogICAgICAgICwgbV9jaGFyYWN0ZXJXaWR0aHMoQ2hhcmFj
dGVyQ2xhc3NXaWR0aHM6OlVua25vd24pDQogICAgICAgICwgbV90YWJsZUludmVydGVkKGludmVy
dGVkKQ0KICAgICAgICAsIG1fYW55Q2hhcmFjdGVyKGZhbHNlKQ0KICAgIHsNCiAgICB9DQogICAg
Q2hhcmFjdGVyQ2xhc3Moc3RkOjppbml0aWFsaXplcl9saXN0PFVDaGFyMzI+IG1hdGNoZXMsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2VzLCBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VUNoYXIzMj4gbWF0Y2hlc1VuaWNvZGUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxD
aGFyYWN0ZXJSYW5nZT4gcmFuZ2VzVW5pY29kZSwgQ2hhcmFjdGVyQ2xhc3NXaWR0aHMgd2lkdGhz
KQ0KICAgICAgICA6IG1fbWF0Y2hlcyhtYXRjaGVzKQ0KICAgICAgICAsIG1fcmFuZ2VzKHJhbmdl
cykNCiAgICAgICAgLCBtX21hdGNoZXNVbmljb2RlKG1hdGNoZXNVbmljb2RlKQ0KICAgICAgICAs
IG1fcmFuZ2VzVW5pY29kZShyYW5nZXNVbmljb2RlKQ0KICAgICAgICAsIG1fdGFibGUobnVsbHB0
cikNCiAgICAgICAgLCBtX2NoYXJhY3RlcldpZHRocyh3aWR0aHMpDQogICAgICAgICwgbV90YWJs
ZUludmVydGVkKGZhbHNlKQ0KICAgICAgICAsIG1fYW55Q2hhcmFjdGVyKGZhbHNlKQ0KICAgIHsN
CiAgICB9DQoNCiAgICBib29sIGhhc05vbkJNUENoYXJhY3RlcnMoKSB7IHJldHVybiBtX2NoYXJh
Y3RlcldpZHRocyAmIENoYXJhY3RlckNsYXNzV2lkdGhzOjpIYXNOb25CTVBDaGFyczsgfQ0KDQog
ICAgYm9vbCBoYXNPbmVDaGFyYWN0ZXJTaXplKCkgeyByZXR1cm4gbV9jaGFyYWN0ZXJXaWR0aHMg
PT0gQ2hhcmFjdGVyQ2xhc3NXaWR0aHM6Okhhc0JNUENoYXJzIHx8IG1fY2hhcmFjdGVyV2lkdGhz
ID09IENoYXJhY3RlckNsYXNzV2lkdGhzOjpIYXNOb25CTVBDaGFyczsgfQ0KICAgIGJvb2wgaGFz
T25seU5vbkJNUENoYXJhY3RlcnMoKSB7IHJldHVybiBtX2NoYXJhY3RlcldpZHRocyA9PSBDaGFy
YWN0ZXJDbGFzc1dpZHRoczo6SGFzTm9uQk1QQ2hhcnM7IH0NCiAgICANCiAgICBWZWN0b3I8VUNo
YXIzMj4gbV9tYXRjaGVzOw0KICAgIFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4gbV9yYW5nZXM7DQog
ICAgVmVjdG9yPFVDaGFyMzI+IG1fbWF0Y2hlc1VuaWNvZGU7DQogICAgVmVjdG9yPENoYXJhY3Rl
clJhbmdlPiBtX3Jhbmdlc1VuaWNvZGU7DQoNCiAgICBjb25zdCBjaGFyKiBtX3RhYmxlOw0KICAg
IENoYXJhY3RlckNsYXNzV2lkdGhzIG1fY2hhcmFjdGVyV2lkdGhzOw0KICAgIGJvb2wgbV90YWJs
ZUludmVydGVkIDogMTsNCiAgICBib29sIG1fYW55Q2hhcmFjdGVyIDogMTsNCn07DQoNCmVudW0g
UXVhbnRpZmllclR5cGUgOiB1aW50OF90IHsNCiAgICBRdWFudGlmaWVyRml4ZWRDb3VudCwNCiAg
ICBRdWFudGlmaWVyR3JlZWR5LA0KICAgIFF1YW50aWZpZXJOb25HcmVlZHksDQp9Ow0KDQpzdHJ1
Y3QgUGF0dGVyblRlcm0gew0KICAgIGVudW0gVHlwZSA6IHVpbnQ4X3Qgew0KICAgICAgICBUeXBl
QXNzZXJ0aW9uQk9MLA0KICAgICAgICBUeXBlQXNzZXJ0aW9uRU9MLA0KICAgICAgICBUeXBlQXNz
ZXJ0aW9uV29yZEJvdW5kYXJ5LA0KICAgICAgICBUeXBlUGF0dGVybkNoYXJhY3RlciwNCiAgICAg
ICAgVHlwZUNoYXJhY3RlckNsYXNzLA0KICAgICAgICBUeXBlQmFja1JlZmVyZW5jZSwNCiAgICAg
ICAgVHlwZUZvcndhcmRSZWZlcmVuY2UsDQogICAgICAgIFR5cGVQYXJlbnRoZXNlc1N1YnBhdHRl
cm4sDQogICAgICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLA0KICAgICAgICBUeXBlRG90
U3RhckVuY2xvc3VyZSwNCiAgICB9IHR5cGU7DQogICAgYm9vbCBtX2NhcHR1cmUgOjE7DQogICAg
Ym9vbCBtX2ludmVydCA6MTsNCiAgICBRdWFudGlmaWVyVHlwZSBxdWFudGl0eVR5cGU7DQogICAg
Q2hlY2tlZDx1bnNpZ25lZD4gcXVhbnRpdHlNaW5Db3VudDsNCiAgICBDaGVja2VkPHVuc2lnbmVk
PiBxdWFudGl0eU1heENvdW50Ow0KICAgIHVuaW9uIHsNCiAgICAgICAgVUNoYXIzMiBwYXR0ZXJu
Q2hhcmFjdGVyOw0KICAgICAgICBDaGFyYWN0ZXJDbGFzcyogY2hhcmFjdGVyQ2xhc3M7DQogICAg
ICAgIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VTdWJwYXR0ZXJuSWQ7DQogICAgICAgIHN0cnVjdCB7
DQogICAgICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uOw0KICAgICAgICAg
ICAgdW5zaWduZWQgc3VicGF0dGVybklkOw0KICAgICAgICAgICAgdW5zaWduZWQgbGFzdFN1YnBh
dHRlcm5JZDsNCiAgICAgICAgICAgIGJvb2wgaXNDb3B5Ow0KICAgICAgICAgICAgYm9vbCBpc1Rl
cm1pbmFsOw0KICAgICAgICB9IHBhcmVudGhlc2VzOw0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAg
ICAgICAgYm9vbCBib2xBbmNob3IgOiAxOw0KICAgICAgICAgICAgYm9vbCBlb2xBbmNob3IgOiAx
Ow0KICAgICAgICB9IGFuY2hvcnM7DQogICAgfTsNCiAgICB1bnNpZ25lZCBpbnB1dFBvc2l0aW9u
Ow0KICAgIHVuc2lnbmVkIGZyYW1lTG9jYXRpb247DQoNCiAgICBQYXR0ZXJuVGVybShVQ2hhcjMy
IGNoKQ0KICAgICAgICA6IHR5cGUoUGF0dGVyblRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyKQ0K
ICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkNCiAgICAgICAgLCBtX2ludmVydChmYWxzZSkNCiAg
ICB7DQogICAgICAgIHBhdHRlcm5DaGFyYWN0ZXIgPSBjaDsNCiAgICAgICAgcXVhbnRpdHlUeXBl
ID0gUXVhbnRpZmllckZpeGVkQ291bnQ7DQogICAgICAgIHF1YW50aXR5TWluQ291bnQgPSBxdWFu
dGl0eU1heENvdW50ID0gMTsNCiAgICB9DQoNCiAgICBQYXR0ZXJuVGVybShDaGFyYWN0ZXJDbGFz
cyogY2hhckNsYXNzLCBib29sIGludmVydCkNCiAgICAgICAgOiB0eXBlKFBhdHRlcm5UZXJtOjpU
eXBlQ2hhcmFjdGVyQ2xhc3MpDQogICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQ0KICAgICAgICAs
IG1faW52ZXJ0KGludmVydCkNCiAgICB7DQogICAgICAgIGNoYXJhY3RlckNsYXNzID0gY2hhckNs
YXNzOw0KICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsNCiAgICAg
ICAgcXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWF4Q291bnQgPSAxOw0KICAgIH0NCg0KICAg
IFBhdHRlcm5UZXJtKFR5cGUgdHlwZSwgdW5zaWduZWQgc3VicGF0dGVybklkLCBQYXR0ZXJuRGlz
anVuY3Rpb24qIGRpc2p1bmN0aW9uLCBib29sIGNhcHR1cmUgPSBmYWxzZSwgYm9vbCBpbnZlcnQg
PSBmYWxzZSkNCiAgICAgICAgOiB0eXBlKHR5cGUpDQogICAgICAgICwgbV9jYXB0dXJlKGNhcHR1
cmUpDQogICAgICAgICwgbV9pbnZlcnQoaW52ZXJ0KQ0KICAgIHsNCiAgICAgICAgcGFyZW50aGVz
ZXMuZGlzanVuY3Rpb24gPSBkaXNqdW5jdGlvbjsNCiAgICAgICAgcGFyZW50aGVzZXMuc3VicGF0
dGVybklkID0gc3VicGF0dGVybklkOw0KICAgICAgICBwYXJlbnRoZXNlcy5pc0NvcHkgPSBmYWxz
ZTsNCiAgICAgICAgcGFyZW50aGVzZXMuaXNUZXJtaW5hbCA9IGZhbHNlOw0KICAgICAgICBxdWFu
dGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsNCiAgICAgICAgcXVhbnRpdHlNaW5Db3Vu
dCA9IHF1YW50aXR5TWF4Q291bnQgPSAxOw0KICAgIH0NCiAgICANCiAgICBQYXR0ZXJuVGVybShU
eXBlIHR5cGUsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpDQogICAgICAgIDogdHlwZSh0eXBlKQ0KICAg
ICAgICAsIG1fY2FwdHVyZShmYWxzZSkNCiAgICAgICAgLCBtX2ludmVydChpbnZlcnQpDQogICAg
ew0KICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsNCiAgICAgICAg
cXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWF4Q291bnQgPSAxOw0KICAgIH0NCg0KICAgIFBh
dHRlcm5UZXJtKHVuc2lnbmVkIHNwYXR0ZXJuSWQpDQogICAgICAgIDogdHlwZShUeXBlQmFja1Jl
ZmVyZW5jZSkNCiAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpDQogICAgICAgICwgbV9pbnZlcnQo
ZmFsc2UpDQogICAgew0KICAgICAgICBiYWNrUmVmZXJlbmNlU3VicGF0dGVybklkID0gc3BhdHRl
cm5JZDsNCiAgICAgICAgcXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7DQogICAg
ICAgIHF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eU1heENvdW50ID0gMTsNCiAgICB9DQoNCiAg
ICBQYXR0ZXJuVGVybShib29sIGJvbEFuY2hvciwgYm9vbCBlb2xBbmNob3IpDQogICAgICAgIDog
dHlwZShUeXBlRG90U3RhckVuY2xvc3VyZSkNCiAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpDQog
ICAgICAgICwgbV9pbnZlcnQoZmFsc2UpDQogICAgew0KICAgICAgICBhbmNob3JzLmJvbEFuY2hv
ciA9IGJvbEFuY2hvcjsNCiAgICAgICAgYW5jaG9ycy5lb2xBbmNob3IgPSBlb2xBbmNob3I7DQog
ICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50Ow0KICAgICAgICBxdWFu
dGl0eU1pbkNvdW50ID0gcXVhbnRpdHlNYXhDb3VudCA9IDE7DQogICAgfQ0KICAgIA0KICAgIHN0
YXRpYyBQYXR0ZXJuVGVybSBGb3J3YXJkUmVmZXJlbmNlKCkNCiAgICB7DQogICAgICAgIHJldHVy
biBQYXR0ZXJuVGVybShUeXBlRm9yd2FyZFJlZmVyZW5jZSk7DQogICAgfQ0KDQogICAgc3RhdGlj
IFBhdHRlcm5UZXJtIEJPTCgpDQogICAgew0KICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlw
ZUFzc2VydGlvbkJPTCk7DQogICAgfQ0KDQogICAgc3RhdGljIFBhdHRlcm5UZXJtIEVPTCgpDQog
ICAgew0KICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZUFzc2VydGlvbkVPTCk7DQogICAg
fQ0KDQogICAgc3RhdGljIFBhdHRlcm5UZXJtIFdvcmRCb3VuZGFyeShib29sIGludmVydCkNCiAg
ICB7DQogICAgICAgIHJldHVybiBQYXR0ZXJuVGVybShUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5
LCBpbnZlcnQpOw0KICAgIH0NCiAgICANCiAgICBib29sIGludmVydCgpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gbV9pbnZlcnQ7DQogICAgfQ0KDQogICAgYm9vbCBjYXB0dXJlKCkNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX2NhcHR1cmU7DQogICAgfQ0KDQogICAgYm9vbCBpc0ZpeGVk
V2lkdGhDaGFyYWN0ZXJDbGFzcygpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gdHlwZSA9
PSBUeXBlQ2hhcmFjdGVyQ2xhc3MgJiYgY2hhcmFjdGVyQ2xhc3MtPmhhc09uZUNoYXJhY3RlclNp
emUoKSAmJiAhaW52ZXJ0KCk7DQogICAgfQ0KDQogICAgYm9vbCBjb250YWluc0FueUNhcHR1cmVz
KCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHBhcmVudGhlc2Vz
Lmxhc3RTdWJwYXR0ZXJuSWQgPj0gcGFyZW50aGVzZXMuc3VicGF0dGVybklkOw0KICAgIH0NCg0K
ICAgIHZvaWQgcXVhbnRpZnkodW5zaWduZWQgY291bnQsIFF1YW50aWZpZXJUeXBlIHR5cGUpDQog
ICAgew0KICAgICAgICBxdWFudGl0eU1pbkNvdW50ID0gMDsNCiAgICAgICAgcXVhbnRpdHlNYXhD
b3VudCA9IGNvdW50Ow0KICAgICAgICBxdWFudGl0eVR5cGUgPSB0eXBlOw0KICAgIH0NCg0KICAg
IHZvaWQgcXVhbnRpZnkodW5zaWduZWQgbWluQ291bnQsIHVuc2lnbmVkIG1heENvdW50LCBRdWFu
dGlmaWVyVHlwZSB0eXBlKQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICBxdWFudGl0eU1pbkNvdW50ID0gbWluQ291bnQ7DQog
ICAgICAgIHF1YW50aXR5TWF4Q291bnQgPSBtYXhDb3VudDsNCiAgICAgICAgcXVhbnRpdHlUeXBl
ID0gdHlwZTsNCiAgICB9DQoNCiAgICB2b2lkIGR1bXBRdWFudGlmaWVyKFByaW50U3RyZWFtJik7
DQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiwgWWFyclBhdHRlcm4qLCB1bnNpZ25lZCk7DQp9
Ow0KDQpzdHJ1Y3QgUGF0dGVybkFsdGVybmF0aXZlIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50
OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvID0gaW50Ow0KcHVibGljOg0KICAgIFBhdHRlcm5BbHRlcm5hdGl2ZShQYXR0ZXJuRGlzanVu
Y3Rpb24qIGRpc2p1bmN0aW9uKQ0KICAgICAgICA6IG1fcGFyZW50KGRpc2p1bmN0aW9uKQ0KICAg
ICAgICAsIG1fb25jZVRocm91Z2goZmFsc2UpDQogICAgICAgICwgbV9oYXNGaXhlZFNpemUoZmFs
c2UpDQogICAgICAgICwgbV9zdGFydHNXaXRoQk9MKGZhbHNlKQ0KICAgICAgICAsIG1fY29udGFp
bnNCT0woZmFsc2UpDQogICAgew0KICAgIH0NCg0KICAgIFBhdHRlcm5UZXJtJiBsYXN0VGVybSgp
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX3Rlcm1zW21fdGVy
bXMuc2l6ZSgpIC0gMV07DQogICAgfQ0KICAgIA0KICAgIHZvaWQgcmVtb3ZlTGFzdFRlcm0oKQ0K
ICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX3Rlcm1zLnNocmluayhtX3Rlcm1z
LnNpemUoKSAtIDEpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHNldE9uY2VUaHJvdWdoKCkNCiAg
ICB7DQogICAgICAgIG1fb25jZVRocm91Z2ggPSB0cnVlOw0KICAgIH0NCiAgICANCiAgICBib29s
IG9uY2VUaHJvdWdoKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX29uY2VUaHJvdWdoOw0KICAg
IH0NCg0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIFlhcnJQYXR0ZXJuKiwgdW5zaWduZWQp
Ow0KDQogICAgVmVjdG9yPFBhdHRlcm5UZXJtPiBtX3Rlcm1zOw0KICAgIFBhdHRlcm5EaXNqdW5j
dGlvbiogbV9wYXJlbnQ7DQogICAgdW5zaWduZWQgbV9taW5pbXVtU2l6ZTsNCiAgICBib29sIG1f
b25jZVRocm91Z2ggOiAxOw0KICAgIGJvb2wgbV9oYXNGaXhlZFNpemUgOiAxOw0KICAgIGJvb2wg
bV9zdGFydHNXaXRoQk9MIDogMTsNCiAgICBib29sIG1fY29udGFpbnNCT0wgOiAxOw0KfTsNCg0K
c3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNp
emUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVs
ZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkw
KTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJp
dmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9
IGludDsNCnB1YmxpYzoNCiAgICBQYXR0ZXJuRGlzanVuY3Rpb24oUGF0dGVybkFsdGVybmF0aXZl
KiBwYXJlbnQgPSBudWxscHRyKQ0KICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkNCiAgICAgICAg
LCBtX2hhc0ZpeGVkU2l6ZShmYWxzZSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRpdmUoKQ0KICAgIHsNCiAgICAgICAgbV9hbHRlcm5h
dGl2ZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGF0dGVybkFsdGVybmF0aXZlPih0aGlzKSk7DQogICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXR0ZXJuQWx0ZXJuYXRpdmUqPihtX2FsdGVybmF0aXZl
cy5sYXN0KCkuZ2V0KCkpOw0KICAgIH0NCg0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYsIFlh
cnJQYXR0ZXJuKiwgdW5zaWduZWQpOw0KDQogICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQYXR0
ZXJuQWx0ZXJuYXRpdmU+PiBtX2FsdGVybmF0aXZlczsNCiAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUq
IG1fcGFyZW50Ow0KICAgIHVuc2lnbmVkIG1fbWluaW11bVNpemU7DQogICAgdW5zaWduZWQgbV9j
YWxsRnJhbWVTaXplOw0KICAgIGJvb2wgbV9oYXNGaXhlZFNpemU7DQp9Ow0KDQoNCg0KDQoNCg0K
c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiBhbnljaGFyQ3JlYXRlKCk7DQpzdGQ6OnVu
aXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IG5ld2xpbmVDcmVhdGUoKTsNCnN0ZDo6dW5pcXVlX3B0
cjxDaGFyYWN0ZXJDbGFzcz4gZGlnaXRzQ3JlYXRlKCk7DQpzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFj
dGVyQ2xhc3M+IHNwYWNlc0NyZWF0ZSgpOw0Kc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNz
PiB3b3JkY2hhckNyZWF0ZSgpOw0Kc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB3b3Jk
VW5pY29kZUlnbm9yZUNhc2VDaGFyQ3JlYXRlKCk7DQpzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVy
Q2xhc3M+IG5vbmRpZ2l0c0NyZWF0ZSgpOw0Kc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNz
PiBub25zcGFjZXNDcmVhdGUoKTsNCnN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4gbm9u
d29yZGNoYXJDcmVhdGUoKTsNCnN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4gbm9ud29y
ZFVuaWNvZGVJZ25vcmVDYXNlQ2hhckNyZWF0ZSgpOw0KDQpzdHJ1Y3QgVGVybUNoYWluIHsNCiAg
ICBUZXJtQ2hhaW4oUGF0dGVyblRlcm0gdGVybSkNCiAgICAgICAgOiB0ZXJtKHRlcm0pDQogICAg
e30NCg0KICAgIFBhdHRlcm5UZXJtIHRlcm07DQogICAgVmVjdG9yPFRlcm1DaGFpbj4gaG90VGVy
bXM7DQp9Ow0KDQoNCnN0cnVjdCBZYXJyUGF0dGVybiB7DQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIFlhcnJQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgT3B0aW9uU2V0PEZsYWdzPiwg
RXJyb3JDb2RlJik7DQoNCiAgICB2b2lkIHJlc2V0Rm9yUmVwYXJzaW5nKCkNCiAgICB7DQogICAg
ICAgIG1fbnVtU3VicGF0dGVybnMgPSAwOw0KICAgICAgICBtX2luaXRpYWxTdGFydFZhbHVlRnJh
bWVMb2NhdGlvbiA9IDA7DQoNCiAgICAgICAgbV9jb250YWluc0JhY2tyZWZlcmVuY2VzID0gZmFs
c2U7DQogICAgICAgIG1fY29udGFpbnNCT0wgPSBmYWxzZTsNCiAgICAgICAgbV9jb250YWluc1Vu
c2lnbmVkTGVuZ3RoUGF0dGVybiA9IGZhbHNlOw0KICAgICAgICBtX2hhc0NvcGllZFBhcmVuU3Vi
ZXhwcmVzc2lvbnMgPSBmYWxzZTsNCiAgICAgICAgbV9zYXZlSW5pdGlhbFN0YXJ0VmFsdWUgPSBm
YWxzZTsNCg0KICAgICAgICBhbnljaGFyQ2FjaGVkID0gbnVsbHB0cjsNCiAgICAgICAgbmV3bGlu
ZUNhY2hlZCA9IG51bGxwdHI7DQogICAgICAgIGRpZ2l0c0NhY2hlZCA9IG51bGxwdHI7DQogICAg
ICAgIHNwYWNlc0NhY2hlZCA9IG51bGxwdHI7DQogICAgICAgIHdvcmRjaGFyQ2FjaGVkID0gbnVs
bHB0cjsNCiAgICAgICAgd29yZFVuaWNvZGVJZ25vcmVDYXNlQ2hhckNhY2hlZCA9IG51bGxwdHI7
DQogICAgICAgIG5vbmRpZ2l0c0NhY2hlZCA9IG51bGxwdHI7DQogICAgICAgIG5vbnNwYWNlc0Nh
Y2hlZCA9IG51bGxwdHI7DQogICAgICAgIG5vbndvcmRjaGFyQ2FjaGVkID0gbnVsbHB0cjsNCiAg
ICAgICAgbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZCA9IG51bGxwdHI7DQogICAg
ICAgIHVuaWNvZGVQcm9wZXJ0aWVzQ2FjaGVkLmNsZWFyKCk7DQoNCiAgICAgICAgbV9kaXNqdW5j
dGlvbnMuY2xlYXIoKTsNCiAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5jbGVhcigpOw0K
ICAgICAgICBtX2NhcHR1cmVHcm91cE5hbWVzLnNocmluaygwKTsNCiAgICB9DQoNCiAgICBib29s
IGNvbnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0ZXJuKCkNCiAgICB7DQogICAgICAgIHJldHVybiBt
X2NvbnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0ZXJuOw0KICAgIH0NCg0KICAgIENoYXJhY3RlckNs
YXNzKiBhbnlDaGFyYWN0ZXJDbGFzcygpDQogICAgew0KICAgICAgICBpZiAoIWFueWNoYXJDYWNo
ZWQpIHsNCiAgICAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMuYXBwZW5kKGFueWNoYXJD
cmVhdGUoKSk7DQogICAgICAgICAgICBhbnljaGFyQ2FjaGVkID0gbV91c2VyQ2hhcmFjdGVyQ2xh
c3Nlcy5sYXN0KCkuZ2V0KCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGFueWNoYXJDYWNo
ZWQ7DQogICAgfQ0KICAgIENoYXJhY3RlckNsYXNzKiBuZXdsaW5lQ2hhcmFjdGVyQ2xhc3MoKQ0K
ICAgIHsNCiAgICAgICAgaWYgKCFuZXdsaW5lQ2FjaGVkKSB7DQogICAgICAgICAgICBtX3VzZXJD
aGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChuZXdsaW5lQ3JlYXRlKCkpOw0KICAgICAgICAgICAgbmV3
bGluZUNhY2hlZCA9IG1fdXNlckNoYXJhY3RlckNsYXNzZXMubGFzdCgpLmdldCgpOw0KICAgICAg
ICB9DQogICAgICAgIHJldHVybiBuZXdsaW5lQ2FjaGVkOw0KICAgIH0NCiAgICBDaGFyYWN0ZXJD
bGFzcyogZGlnaXRzQ2hhcmFjdGVyQ2xhc3MoKQ0KICAgIHsNCiAgICAgICAgaWYgKCFkaWdpdHND
YWNoZWQpIHsNCiAgICAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMuYXBwZW5kKGRpZ2l0
c0NyZWF0ZSgpKTsNCiAgICAgICAgICAgIGRpZ2l0c0NhY2hlZCA9IG1fdXNlckNoYXJhY3RlckNs
YXNzZXMubGFzdCgpLmdldCgpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBkaWdpdHNDYWNo
ZWQ7DQogICAgfQ0KICAgIENoYXJhY3RlckNsYXNzKiBzcGFjZXNDaGFyYWN0ZXJDbGFzcygpDQog
ICAgew0KICAgICAgICBpZiAoIXNwYWNlc0NhY2hlZCkgew0KICAgICAgICAgICAgbV91c2VyQ2hh
cmFjdGVyQ2xhc3Nlcy5hcHBlbmQoc3BhY2VzQ3JlYXRlKCkpOw0KICAgICAgICAgICAgc3BhY2Vz
Q2FjaGVkID0gbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5sYXN0KCkuZ2V0KCk7DQogICAgICAgIH0N
CiAgICAgICAgcmV0dXJuIHNwYWNlc0NhY2hlZDsNCiAgICB9DQogICAgQ2hhcmFjdGVyQ2xhc3Mq
IHdvcmRjaGFyQ2hhcmFjdGVyQ2xhc3MoKQ0KICAgIHsNCiAgICAgICAgaWYgKCF3b3JkY2hhckNh
Y2hlZCkgew0KICAgICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQod29yZGNo
YXJDcmVhdGUoKSk7DQogICAgICAgICAgICB3b3JkY2hhckNhY2hlZCA9IG1fdXNlckNoYXJhY3Rl
ckNsYXNzZXMubGFzdCgpLmdldCgpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB3b3JkY2hh
ckNhY2hlZDsNCiAgICB9DQogICAgQ2hhcmFjdGVyQ2xhc3MqIHdvcmRVbmljb2RlSWdub3JlQ2Fz
ZUNoYXJDaGFyYWN0ZXJDbGFzcygpDQogICAgew0KICAgICAgICBpZiAoIXdvcmRVbmljb2RlSWdu
b3JlQ2FzZUNoYXJDYWNoZWQpIHsNCiAgICAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMu
YXBwZW5kKHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDcmVhdGUoKSk7DQogICAgICAgICAgICB3
b3JkVW5pY29kZUlnbm9yZUNhc2VDaGFyQ2FjaGVkID0gbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5s
YXN0KCkuZ2V0KCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHdvcmRVbmljb2RlSWdub3Jl
Q2FzZUNoYXJDYWNoZWQ7DQogICAgfQ0KICAgIENoYXJhY3RlckNsYXNzKiBub25kaWdpdHNDaGFy
YWN0ZXJDbGFzcygpDQogICAgew0KICAgICAgICBpZiAoIW5vbmRpZ2l0c0NhY2hlZCkgew0KICAg
ICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQobm9uZGlnaXRzQ3JlYXRlKCkp
Ow0KICAgICAgICAgICAgbm9uZGlnaXRzQ2FjaGVkID0gbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5s
YXN0KCkuZ2V0KCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIG5vbmRpZ2l0c0NhY2hlZDsN
CiAgICB9DQogICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbnNwYWNlc0NoYXJhY3RlckNsYXNzKCkNCiAg
ICB7DQogICAgICAgIGlmICghbm9uc3BhY2VzQ2FjaGVkKSB7DQogICAgICAgICAgICBtX3VzZXJD
aGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChub25zcGFjZXNDcmVhdGUoKSk7DQogICAgICAgICAgICBu
b25zcGFjZXNDYWNoZWQgPSBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmxhc3QoKS5nZXQoKTsNCiAg
ICAgICAgfQ0KICAgICAgICByZXR1cm4gbm9uc3BhY2VzQ2FjaGVkOw0KICAgIH0NCiAgICBDaGFy
YWN0ZXJDbGFzcyogbm9ud29yZGNoYXJDaGFyYWN0ZXJDbGFzcygpDQogICAgew0KICAgICAgICBp
ZiAoIW5vbndvcmRjaGFyQ2FjaGVkKSB7DQogICAgICAgICAgICBtX3VzZXJDaGFyYWN0ZXJDbGFz
c2VzLmFwcGVuZChub253b3JkY2hhckNyZWF0ZSgpKTsNCiAgICAgICAgICAgIG5vbndvcmRjaGFy
Q2FjaGVkID0gbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5sYXN0KCkuZ2V0KCk7DQogICAgICAgIH0N
CiAgICAgICAgcmV0dXJuIG5vbndvcmRjaGFyQ2FjaGVkOw0KICAgIH0NCiAgICBDaGFyYWN0ZXJD
bGFzcyogbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlQ2hhckNoYXJhY3RlckNsYXNzKCkNCiAgICB7
DQogICAgICAgIGlmICghbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZCkgew0KICAg
ICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQobm9ud29yZFVuaWNvZGVJZ25v
cmVDYXNlQ2hhckNyZWF0ZSgpKTsNCiAgICAgICAgICAgIG5vbndvcmRVbmljb2RlSWdub3JlQ2Fz
ZWNoYXJDYWNoZWQgPSBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmxhc3QoKS5nZXQoKTsNCiAgICAg
ICAgfQ0KICAgICAgICByZXR1cm4gbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZDsN
CiAgICB9DQogICAgQ2hhcmFjdGVyQ2xhc3MqIHVuaWNvZGVDaGFyYWN0ZXJDbGFzc0ZvcihCdWls
dEluQ2hhcmFjdGVyQ2xhc3NJRCB1bmljb2RlQ2xhc3NJRCkNCiAgICB7DQogICAgICAgICgodm9p
ZCkwKTsNCg0KICAgICAgICB1bnNpZ25lZCBjbGFzc0lEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHVuaWNvZGVDbGFzc0lEKTsNCg0KICAgICAgICBpZiAodW5pY29kZVByb3BlcnRpZXNDYWNoZWQu
ZmluZChjbGFzc0lEKSA9PSB1bmljb2RlUHJvcGVydGllc0NhY2hlZC5lbmQoKSkgew0KICAgICAg
ICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQoY3JlYXRlVW5pY29kZUNoYXJhY3Rl
ckNsYXNzRm9yKHVuaWNvZGVDbGFzc0lEKSk7DQogICAgICAgICAgICBDaGFyYWN0ZXJDbGFzcyog
cmVzdWx0ID0gbV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5sYXN0KCkuZ2V0KCk7DQogICAgICAgICAg
ICB1bmljb2RlUHJvcGVydGllc0NhY2hlZC5hZGQoY2xhc3NJRCwgcmVzdWx0KTsNCiAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdW5pY29kZVBy
b3BlcnRpZXNDYWNoZWQuZ2V0KGNsYXNzSUQpOw0KICAgIH0NCg0KICAgIHZvaWQgZHVtcFBhdHRl
cm5TdHJpbmcoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKTsN
CiAgICB2b2lkIGR1bXBQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybik7DQogICAgdm9pZCBk
dW1wUGF0dGVybihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pOw0KDQog
ICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpH
bG9iYWwpOyB9DQogICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5j
b250YWlucyhGbGFnczo6SWdub3JlQ2FzZSk7IH0NCiAgICBib29sIG11bHRpbGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6Ok11bHRpbGluZSk7IH0NCiAgICBib29s
IHN0aWNreSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6OlN0aWNreSk7
IH0NCiAgICBib29sIHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZs
YWdzOjpVbmljb2RlKTsgfQ0KICAgIGJvb2wgZG90QWxsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFn
cy5jb250YWlucyhGbGFnczo6RG90QWxsKTsgfQ0KDQogICAgYm9vbCBtX2NvbnRhaW5zQmFja3Jl
ZmVyZW5jZXMgOiAxOw0KICAgIGJvb2wgbV9jb250YWluc0JPTCA6IDE7DQogICAgYm9vbCBtX2Nv
bnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0ZXJuIDogMTsNCiAgICBib29sIG1faGFzQ29waWVkUGFy
ZW5TdWJleHByZXNzaW9ucyA6IDE7DQogICAgYm9vbCBtX3NhdmVJbml0aWFsU3RhcnRWYWx1ZSA6
IDE7DQogICAgT3B0aW9uU2V0PEZsYWdzPiBtX2ZsYWdzOw0KICAgIHVuc2lnbmVkIG1fbnVtU3Vi
cGF0dGVybnMgeyAwIH07DQogICAgdW5zaWduZWQgbV9pbml0aWFsU3RhcnRWYWx1ZUZyYW1lTG9j
YXRpb24geyAwIH07DQogICAgUGF0dGVybkRpc2p1bmN0aW9uKiBtX2JvZHk7DQogICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxQYXR0ZXJuRGlzanVuY3Rpb24+LCA0PiBtX2Rpc2p1bmN0aW9uczsN
CiAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPj4gbV91c2VyQ2hhcmFj
dGVyQ2xhc3NlczsNCiAgICBWZWN0b3I8U3RyaW5nPiBtX2NhcHR1cmVHcm91cE5hbWVzOw0KICAg
IEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4Ow0KDQpw
cml2YXRlOg0KICAgIEVycm9yQ29kZSBjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmlu
Zyk7DQoNCiAgICBDaGFyYWN0ZXJDbGFzcyogYW55Y2hhckNhY2hlZCB7IG51bGxwdHIgfTsNCiAg
ICBDaGFyYWN0ZXJDbGFzcyogbmV3bGluZUNhY2hlZCB7IG51bGxwdHIgfTsNCiAgICBDaGFyYWN0
ZXJDbGFzcyogZGlnaXRzQ2FjaGVkIHsgbnVsbHB0ciB9Ow0KICAgIENoYXJhY3RlckNsYXNzKiBz
cGFjZXNDYWNoZWQgeyBudWxscHRyIH07DQogICAgQ2hhcmFjdGVyQ2xhc3MqIHdvcmRjaGFyQ2Fj
aGVkIHsgbnVsbHB0ciB9Ow0KICAgIENoYXJhY3RlckNsYXNzKiB3b3JkVW5pY29kZUlnbm9yZUNh
c2VDaGFyQ2FjaGVkIHsgbnVsbHB0ciB9Ow0KICAgIENoYXJhY3RlckNsYXNzKiBub25kaWdpdHND
YWNoZWQgeyBudWxscHRyIH07DQogICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbnNwYWNlc0NhY2hlZCB7
IG51bGxwdHIgfTsNCiAgICBDaGFyYWN0ZXJDbGFzcyogbm9ud29yZGNoYXJDYWNoZWQgeyBudWxs
cHRyIH07DQogICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRVbmljb2RlSWdub3JlQ2FzZWNoYXJD
YWNoZWQgeyBudWxscHRyIH07DQogICAgSGFzaE1hcDx1bnNpZ25lZCwgQ2hhcmFjdGVyQ2xhc3Mq
PiB1bmljb2RlUHJvcGVydGllc0NhY2hlZDsNCn07DQoNCiAgICB2b2lkIGluZGVudEZvck5lc3Rp
bmdMZXZlbChQcmludFN0cmVhbSYsIHVuc2lnbmVkKTsNCiAgICB2b2lkIGR1bXBVQ2hhcjMyKFBy
aW50U3RyZWFtJiwgVUNoYXIzMik7DQogICAgdm9pZCBkdW1wQ2hhcmFjdGVyQ2xhc3MoUHJpbnRT
dHJlYW0mLCBZYXJyUGF0dGVybiosIENoYXJhY3RlckNsYXNzKik7DQoNCiAgICBzdHJ1Y3QgQmFj
a1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIgew0KICAgICAgICB1aW50cHRyX3QgYmVnaW47IA0K
ICAgICAgICB1aW50cHRyX3QgbWF0Y2hBbW91bnQ7DQoNCiAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGJlZ2luSW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5fb2Zmc2V0b2YoQmFja1RyYWNrSW5mb1Bh
dHRlcm5DaGFyYWN0ZXIsYmVnaW4pIC8gc2l6ZW9mKHVpbnRwdHJfdCk7IH0NCiAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIG1hdGNoQW1vdW50SW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5fb2Zmc2V0
b2YoQmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIsbWF0Y2hBbW91bnQpIC8gc2l6ZW9mKHVp
bnRwdHJfdCk7IH0NCiAgICB9Ow0KDQogICAgc3RydWN0IEJhY2tUcmFja0luZm9DaGFyYWN0ZXJD
bGFzcyB7DQogICAgICAgIHVpbnRwdHJfdCBiZWdpbjsgDQogICAgICAgIHVpbnRwdHJfdCBtYXRj
aEFtb3VudDsNCg0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgYmVnaW5JbmRleCgpIHsgcmV0dXJu
IF9fYnVpbHRpbl9vZmZzZXRvZihCYWNrVHJhY2tJbmZvQ2hhcmFjdGVyQ2xhc3MsYmVnaW4pIC8g
c2l6ZW9mKHVpbnRwdHJfdCk7IH0NCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1hdGNoQW1vdW50
SW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5fb2Zmc2V0b2YoQmFja1RyYWNrSW5mb0NoYXJhY3Rl
ckNsYXNzLG1hdGNoQW1vdW50KSAvIHNpemVvZih1aW50cHRyX3QpOyB9DQogICAgfTsNCg0KICAg
IHN0cnVjdCBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZSB7DQogICAgICAgIHVpbnRwdHJfdCBi
ZWdpbjsgDQogICAgICAgIHVpbnRwdHJfdCBtYXRjaEFtb3VudDsgDQoNCiAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGJlZ2luSW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5fb2Zmc2V0b2YoQmFja1Ry
YWNrSW5mb0JhY2tSZWZlcmVuY2UsYmVnaW4pIC8gc2l6ZW9mKHVpbnRwdHJfdCk7IH0NCiAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIG1hdGNoQW1vdW50SW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5f
b2Zmc2V0b2YoQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2UsbWF0Y2hBbW91bnQpIC8gc2l6ZW9m
KHVpbnRwdHJfdCk7IH0NCiAgICB9Ow0KDQogICAgc3RydWN0IEJhY2tUcmFja0luZm9BbHRlcm5h
dGl2ZSB7DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgIHVpbnRwdHJfdCBvZmZzZXQ7DQog
ICAgICAgIH07DQogICAgfTsNCg0KICAgIHN0cnVjdCBCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNh
bEFzc2VydGlvbiB7DQogICAgICAgIHVpbnRwdHJfdCBiZWdpbjsNCg0KICAgICAgICBzdGF0aWMg
dW5zaWduZWQgYmVnaW5JbmRleCgpIHsgcmV0dXJuIF9fYnVpbHRpbl9vZmZzZXRvZihCYWNrVHJh
Y2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbixiZWdpbikgLyBzaXplb2YodWludHB0cl90KTsg
fQ0KICAgIH07DQoNCiAgICBzdHJ1Y3QgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZSB7DQog
ICAgICAgIHVpbnRwdHJfdCBiZWdpbjsNCiAgICAgICAgdWludHB0cl90IHJldHVybkFkZHJlc3M7
DQoNCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGJlZ2luSW5kZXgoKSB7IHJldHVybiBfX2J1aWx0
aW5fb2Zmc2V0b2YoQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZSxiZWdpbikgLyBzaXplb2Yo
dWludHB0cl90KTsgfQ0KICAgICAgICBzdGF0aWMgdW5zaWduZWQgcmV0dXJuQWRkcmVzc0luZGV4
KCkgeyByZXR1cm4gX19idWlsdGluX29mZnNldG9mKEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09u
Y2UscmV0dXJuQWRkcmVzcykgLyBzaXplb2YodWludHB0cl90KTsgfQ0KICAgIH07DQoNCiAgICBz
dHJ1Y3QgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzVGVybWluYWwgew0KICAgICAgICB1aW50cHRy
X3QgYmVnaW47DQoNCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIGJlZ2luSW5kZXgoKSB7IHJldHVy
biBfX2J1aWx0aW5fb2Zmc2V0b2YoQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzVGVybWluYWwsYmVn
aW4pIC8gc2l6ZW9mKHVpbnRwdHJfdCk7IH0NCiAgICB9Ow0KDQogICAgc3RydWN0IEJhY2tUcmFj
a0luZm9QYXJlbnRoZXNlcyB7DQogICAgICAgIHVpbnRwdHJfdCBiZWdpbjsNCiAgICAgICAgdWlu
dHB0cl90IHJldHVybkFkZHJlc3M7DQogICAgICAgIHVpbnRwdHJfdCBtYXRjaEFtb3VudDsNCiAg
ICAgICAgdWludHB0cl90IHBhcmVuQ29udGV4dEhlYWQ7DQoNCiAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGJlZ2luSW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5fb2Zmc2V0b2YoQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzLGJlZ2luKSAvIHNpemVvZih1aW50cHRyX3QpOyB9DQogICAgICAgIHN0YXRp
YyB1bnNpZ25lZCByZXR1cm5BZGRyZXNzSW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5fb2Zmc2V0
b2YoQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzLHJldHVybkFkZHJlc3MpIC8gc2l6ZW9mKHVpbnRw
dHJfdCk7IH0NCiAgICAgICAgc3RhdGljIHVuc2lnbmVkIG1hdGNoQW1vdW50SW5kZXgoKSB7IHJl
dHVybiBfX2J1aWx0aW5fb2Zmc2V0b2YoQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzLG1hdGNoQW1v
dW50KSAvIHNpemVvZih1aW50cHRyX3QpOyB9DQogICAgICAgIHN0YXRpYyB1bnNpZ25lZCBwYXJl
bkNvbnRleHRIZWFkSW5kZXgoKSB7IHJldHVybiBfX2J1aWx0aW5fb2Zmc2V0b2YoQmFja1RyYWNr
SW5mb1BhcmVudGhlc2VzLHBhcmVuQ29udGV4dEhlYWQpIC8gc2l6ZW9mKHVpbnRwdHJfdCk7IH0N
CiAgICB9Ow0KDQp9IH0gDQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFx5YXJyXFxZYXJySklULmgiDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KY2xhc3MgVk07DQpjbGFzcyBFeGVjdXRhYmxlUG9vbDsNCg0KbmFtZXNwYWNlIFlhcnIg
ew0KDQpjbGFzcyBZYXJyQ29kZUJsb2NrOw0KDQplbnVtIGNsYXNzIEpJVEZhaWx1cmVSZWFzb24g
OiB1aW50OF90IHsNCiAgICBEZWNvZGVTdXJyb2dhdGVQYWlyLA0KICAgIEJhY2tSZWZlcmVuY2Us
DQogICAgRm9yd2FyZFJlZmVyZW5jZSwNCiAgICBWYXJpYWJsZUNvdW50ZWRQYXJlbnRoZXNpc1dp
dGhOb25aZXJvTWluaW11bSwNCiAgICBQYXJlbnRoZXNpemVkU3VicGF0dGVybiwNCiAgICBGaXhl
ZENvdW50UGFyZW50aGVzaXplZFN1YnBhdHRlcm4sDQogICAgUGFyZW50aGVzaXNOZXN0ZWRUb29E
ZWVwLA0KICAgIEV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSwNCn07DQoNCmNsYXNz
IE1hdGNoaW5nQ29udGV4dEhvbGRlciB7DQogICAgcHJpdmF0ZTogdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgdm9pZCopID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZv
aWQqKSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgPSBkZWxldGU7IHZvaWQq
IG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pID0gZGVsZXRlOyB0eXBlZGVmIGlu
dCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc0ZvcmJpZEhlYXBBbGxvY2F0
aW9uTWFjcm87DQpwdWJsaWM6DQogICAgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKFZNJiwgWWFyckNv
ZGVCbG9jayosIE1hdGNoRnJvbSBtYXRjaEZyb20gPSBNYXRjaEZyb206OlZNVGhyZWFkKTsNCiAg
ICB+TWF0Y2hpbmdDb250ZXh0SG9sZGVyKCk7DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mU3RhY2tMaW1pdCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihy
ZWludGVycHJldF9jYXN0PE1hdGNoaW5nQ29udGV4dEhvbGRlcio+KDB4NDAwMCktPm1fc3RhY2tM
aW1pdCkpIC0gMHg0MDAwKTsgfQ0KDQoNCg0KI2xpbmUgNjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxceWFyclxcWWFyckpJVC5oIg0KDQpwcml2YXRl
Og0KICAgIFZNJiBtX3ZtOw0KICAgIHZvaWQqIG1fc3RhY2tMaW1pdDsNCg0KDQoNCiNsaW5lIDc3
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHlhcnJc
XFlhcnJKSVQuaCINCn07DQoNCmNsYXNzIFlhcnJDb2RlQmxvY2sgew0KICAgIHB1YmxpYzogdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6
ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlv
bikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9j
ZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgWWFyckNvZGVCbG9jayhjb25zdCBZYXJyQ29kZUJsb2Nr
JikgPSBkZWxldGU7IFlhcnJDb2RlQmxvY2smIG9wZXJhdG9yPShjb25zdCBZYXJyQ29kZUJsb2Nr
JikgPSBkZWxldGU7Ow0KDQogICAgdXNpbmcgWWFyckpJVENvZGU4ID0gRW5jb2RlZE1hdGNoUmVz
dWx0ICgqKShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkg
Ow0KICAgIHVzaW5nIFlhcnJKSVRDb2RlMTYgPSBFbmNvZGVkTWF0Y2hSZXN1bHQgKCopKGNvbnN0
IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRw
dXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KSA7DQogICAgdXNpbmcg
WWFyckpJVENvZGVNYXRjaE9ubHk4ID0gRW5jb2RlZE1hdGNoUmVzdWx0ICgqKShjb25zdCBMQ2hh
ciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqLCBNYXRjaGlu
Z0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkgOw0KICAgIHVzaW5nIFlhcnJKSVRDb2Rl
TWF0Y2hPbmx5MTYgPSBFbmNvZGVkTWF0Y2hSZXN1bHQgKCopKGNvbnN0IFVDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgdm9pZCosIE1hdGNoaW5nQ29udGV4dEhv
bGRlciYgbWF0Y2hpbmdDb250ZXh0KSA7DQoNCnB1YmxpYzoNCiAgICBZYXJyQ29kZUJsb2NrKCkg
PSBkZWZhdWx0Ow0KDQogICAgdm9pZCBzZXRGYWxsQmFja1dpdGhGYWlsdXJlUmVhc29uKEpJVEZh
aWx1cmVSZWFzb24gZmFpbHVyZVJlYXNvbikgeyBtX2ZhaWx1cmVSZWFzb24gPSBmYWlsdXJlUmVh
c29uOyB9DQogICAgT3B0aW9uYWw8SklURmFpbHVyZVJlYXNvbj4gZmFpbHVyZVJlYXNvbigpIHsg
cmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsgfQ0KDQogICAgYm9vbCBoYXM4Qml0Q29kZSgpIHsgcmV0
dXJuIG1fcmVmOC5zaXplKCk7IH0NCiAgICBib29sIGhhczE2Qml0Q29kZSgpIHsgcmV0dXJuIG1f
cmVmMTYuc2l6ZSgpOyB9DQogICAgdm9pZCBzZXQ4Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8WWFycjhCaXRQdHJUYWc+IHJlZikgeyBtX3JlZjggPSByZWY7IH0NCiAgICB2b2lkIHNldDE2
Qml0Q29kZShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFycjE2Qml0UHRyVGFnPiByZWYpIHsgbV9y
ZWYxNiA9IHJlZjsgfQ0KDQogICAgYm9vbCBoYXM4Qml0Q29kZU1hdGNoT25seSgpIHsgcmV0dXJu
IG1fbWF0Y2hPbmx5OC5zaXplKCk7IH0NCiAgICBib29sIGhhczE2Qml0Q29kZU1hdGNoT25seSgp
IHsgcmV0dXJuIG1fbWF0Y2hPbmx5MTYuc2l6ZSgpOyB9DQogICAgdm9pZCBzZXQ4Qml0Q29kZU1h
dGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+IG1h
dGNoT25seSkgeyBtX21hdGNoT25seTggPSBtYXRjaE9ubHk7IH0NCiAgICB2b2lkIHNldDE2Qml0
Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2Qml0UHRy
VGFnPiBtYXRjaE9ubHkpIHsgbV9tYXRjaE9ubHkxNiA9IG1hdGNoT25seTsgfQ0KDQogICAgYm9v
bCB1c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSB7IHJldHVybiBtX3VzZXNQYXR0ZXJuQ29udGV4
dEJ1ZmZlcjsgfQ0KDQoNCiNsaW5lIDEwOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFx5YXJyXFxZYXJySklULmgiDQoNCiAgICBNYXRjaFJlc3VsdCBl
eGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0
aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQ0K
ICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50
YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGU4LCBZYXJyOEJpdFB0clRhZz4obV9yZWY4LmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRj
aGluZ0NvbnRleHQpKTsNCiAgICB9DQoNCiAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVD
aGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQs
IE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQ0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8
WWFyckpJVENvZGUxNiwgWWFycjE2Qml0UHRyVGFnPihtX3JlZjE2LmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRjaGluZ0NvbnRleHQp
KTsNCiAgICB9DQoNCiAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBt
YXRjaGluZ0NvbnRleHQpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVy
biBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZU1hdGNoT25seTgsIFlh
cnJNYXRjaE9ubHk4Qml0UHRyVGFnPihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCBtYXRjaGluZ0NvbnRleHQpKTsN
CiAgICB9DQoNCiAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRj
aGluZ0NvbnRleHQpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZU1hdGNoT25seTE2LCBZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWc+KG1fbWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCBtYXRjaGluZ0NvbnRleHQpKTsN
CiAgICB9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxceWFyclxcWWFyckpJVC5oIg0KDQogICAgc2l6ZV90IHNpemUo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fcmVmOC5zaXplKCkgKyBtX3JlZjE2LnNp
emUoKSArIG1fbWF0Y2hPbmx5OC5zaXplKCkgKyBtX21hdGNoT25seTE2LnNpemUoKTsNCiAgICB9
DQoNCiAgICB2b2lkIGNsZWFyKCkNCiAgICB7DQogICAgICAgIG1fcmVmOCA9IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxZYXJyOEJpdFB0clRhZz4oKTsNCiAgICAgICAgbV9yZWYxNiA9IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+KCk7DQogICAgICAgIG1fbWF0Y2hPbmx5OCA9
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4oKTsNCiAgICAg
ICAgbV9tYXRjaE9ubHkxNiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZC
aXRQdHJUYWc+KCk7DQogICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IFdURjo6bnVsbG9wdDsNCiAg
ICB9DQoNCnByaXZhdGU6DQogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnI4Qml0UHRyVGFn
PiBtX3JlZjg7DQogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4gbV9y
ZWYxNjsNCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seThCaXRQdHJUYWc+
IG1fbWF0Y2hPbmx5ODsNCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8WWFyck1hdGNoT25seTE2
Qml0UHRyVGFnPiBtX21hdGNoT25seTE2Ow0KICAgIGJvb2wgbV91c2VzUGF0dGVybkNvbnRleHRC
dWZmZXIgeyBmYWxzZSB9Ow0KICAgIE9wdGlvbmFsPEpJVEZhaWx1cmVSZWFzb24+IG1fZmFpbHVy
ZVJlYXNvbjsNCn07DQoNCmVudW0gWWFyckpJVENvbXBpbGVNb2RlIHsNCiAgICBNYXRjaE9ubHks
DQogICAgSW5jbHVkZVN1YnBhdHRlcm5zDQp9Ow0Kdm9pZCBqaXRDb21waWxlKFlhcnJQYXR0ZXJu
JiwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJyQ2hhclNpemUsIFZNKiwgWWFyckNvZGVCbG9j
ayYgaml0T2JqZWN0LCBZYXJySklUQ29tcGlsZU1vZGUgPSBJbmNsdWRlU3VicGF0dGVybnMpOw0K
DQp9IH0gDQoNCiNsaW5lIDE5OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFx5YXJyXFxZYXJySklULmgiDQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxSZWdFeHAuaCINCiNs
aW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFJlZ0V4cC5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0Kc3RydWN0IFJlZ0V4cFJl
cHJlc2VudGF0aW9uOw0KY2xhc3MgVk07DQoNCmNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgew0KICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRSZWdFeHA7DQoNCnB1YmxpYzoNCiAgICB1
c2luZyBCYXNlID0gSlNDZWxsOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+DQogICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1
cm4gJnZtLnJlZ0V4cFNwYWNlOw0KICAgIH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBz
dGF0aWMgUmVnRXhwKiBjcmVhdGUoVk0mLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIE9wdGlvblNl
dDxZYXJyOjpGbGFncz4pOw0KICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7DQogICAg
c3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZNJik7DQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHN0YXRpYyB2b2lkIGR1bXBUb1N0cmVhbShjb25zdCBKU0NlbGwqLCBQcmlu
dFN0cmVhbSYpOw0KDQogICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNv
bnRhaW5zKFlhcnI6OkZsYWdzOjpHbG9iYWwpOyB9DQogICAgYm9vbCBpZ25vcmVDYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhZYXJyOjpGbGFnczo6SWdub3JlQ2FzZSk7IH0N
CiAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoWWFy
cjo6RmxhZ3M6Ok11bHRpbGluZSk7IH0NCiAgICBib29sIHN0aWNreSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3MuY29udGFpbnMoWWFycjo6RmxhZ3M6OlN0aWNreSk7IH0NCiAgICBib29sIGdsb2Jh
bE9yU3RpY2t5KCkgY29uc3QgeyByZXR1cm4gZ2xvYmFsKCkgfHwgc3RpY2t5KCk7IH0NCiAgICBi
b29sIHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFlhcnI6OkZsYWdz
OjpVbmljb2RlKTsgfQ0KICAgIGJvb2wgZG90QWxsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5j
b250YWlucyhZYXJyOjpGbGFnczo6RG90QWxsKTsgfQ0KDQogICAgY29uc3QgU3RyaW5nJiBwYXR0
ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9DQoNCiAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiAhWWFycjo6aGFzRXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvckNv
ZGUpOyB9DQogICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gWWFy
cjo6ZXJyb3JNZXNzYWdlKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKTsgfQ0KICAgIEpTT2JqZWN0
KiBlcnJvclRvVGhyb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgeyByZXR1cm4gWWFy
cjo6ZXJyb3JUb1Rocm93KGdsb2JhbE9iamVjdCwgbV9jb25zdHJ1Y3Rpb25FcnJvckNvZGUpOyB9
DQogICAgdm9pZCByZXNldCgpDQogICAgew0KICAgICAgICBtX3N0YXRlID0gTm90Q29tcGlsZWQ7
DQogICAgICAgIG1fY29uc3RydWN0aW9uRXJyb3JDb2RlID0gWWFycjo6RXJyb3JDb2RlOjpOb0Vy
cm9yOw0KICAgIH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgbWF0Y2goSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGlu
dD4mIG92ZWN0b3IpOw0KDQogICAgDQogICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShWTSYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQmIHBvc2l0aW9uLCBWZWN0b3I8
aW50PiYgb3ZlY3Rvcik7DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIE1hdGNoUmVz
dWx0IG1hdGNoKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQpOw0KDQogICAgYm9vbCBtYXRjaENvbmN1cnJlbnRseShWTSYsIGNvbnN0IFN0cmluZyYs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYpOw0KDQogICAgDQogICAgdGVtcGxh
dGU8dHlwZW5hbWUgVmVjdG9yVHlwZSwgWWFycjo6TWF0Y2hGcm9tIHRocmVhZCA9IFlhcnI6Ok1h
dGNoRnJvbTo6Vk1UaHJlYWQ+DQogICAgaW50IG1hdGNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBu
dWxsT3JHbG9iYWxPYmplY3QsIFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIFZlY3RvclR5cGUmIG92ZWN0b3IpOw0KICAgIHRlbXBsYXRlPFlhcnI6Ok1hdGNoRnJvbSB0
aHJlYWQgPSBZYXJyOjpNYXRjaEZyb206OlZNVGhyZWFkPg0KICAgIE1hdGNoUmVzdWx0IG1hdGNo
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3QsIFZNJiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpOw0KICAgIA0KICAgIHVuc2lnbmVkIG51bVN1YnBh
dHRlcm5zKCkgY29uc3QgeyByZXR1cm4gbV9udW1TdWJwYXR0ZXJuczsgfQ0KDQogICAgYm9vbCBo
YXNOYW1lZENhcHR1cmVzKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX3JhcmVEYXRhICYmICFt
X3JhcmVEYXRhLT5tX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKTsNCiAgICB9DQoNCiAgICBT
dHJpbmcgZ2V0Q2FwdHVyZUdyb3VwTmFtZSh1bnNpZ25lZCBpKQ0KICAgIHsNCiAgICAgICAgaWYg
KCFpIHx8ICFtX3JhcmVEYXRhIHx8IG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFtZXMuc2l6
ZSgpIDw9IGkpDQogICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFtZXNbaV07DQog
ICAgfQ0KDQogICAgdW5zaWduZWQgc3VicGF0dGVybkZvck5hbWUoU3RyaW5nIGdyb3VwTmFtZSkN
CiAgICB7DQogICAgICAgIGlmICghbV9yYXJlRGF0YSkNCiAgICAgICAgICAgIHJldHVybiAwOw0K
ICAgICAgICBhdXRvIGl0ID0gbV9yYXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LmZp
bmQoZ3JvdXBOYW1lKTsNCiAgICAgICAgaWYgKGl0ID09IG1fcmFyZURhdGEtPm1fbmFtZWRHcm91
cFRvUGFyZW5JbmRleC5lbmQoKSkNCiAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICByZXR1
cm4gaXQtPnZhbHVlOw0KICAgIH0NCg0KICAgIGJvb2wgaGFzQ29kZSgpDQogICAgew0KICAgICAg
ICByZXR1cm4gbV9zdGF0ZSA9PSBKSVRDb2RlIHx8IG1fc3RhdGUgPT0gQnl0ZUNvZGU7DQogICAg
fQ0KDQogICAgYm9vbCBoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7DQogICAgYm9vbCBo
YXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7DQoNCiAgICB2b2lkIGRlbGV0
ZUNvZGUoKTsNCg0KDQoNCiNsaW5lIDEzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxSZWdFeHAuaCINCg0KICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNv
bnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAg
UmVnRXhwS2V5IGtleSgpIHsgcmV0dXJuIFJlZ0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5TdHJp
bmcpOyB9DQoNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIFJlZ0V4cENhY2hlOw0KICAgIFJl
Z0V4cChWTSYsIGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxZYXJyOjpGbGFncz4pOw0KICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsNCg0KICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZVdpdGhv
dXRDYWNoaW5nKFZNJiwgY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PFlhcnI6OkZsYWdzPik7DQoN
CiAgICBlbnVtIFJlZ0V4cFN0YXRlIDogdWludDhfdCB7DQogICAgICAgIFBhcnNlRXJyb3IsDQog
ICAgICAgIEpJVENvZGUsDQogICAgICAgIEJ5dGVDb2RlLA0KICAgICAgICBOb3RDb21waWxlZA0K
ICAgIH07DQoNCiAgICB2b2lkIGJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KFZNKik7DQoNCiAg
ICB2b2lkIGNvbXBpbGUoVk0qLCBZYXJyOjpZYXJyQ2hhclNpemUpOw0KICAgIHZvaWQgY29tcGls
ZUlmTmVjZXNzYXJ5KFZNJiwgWWFycjo6WWFyckNoYXJTaXplKTsNCg0KICAgIHZvaWQgY29tcGls
ZU1hdGNoT25seShWTSosIFlhcnI6OllhcnJDaGFyU2l6ZSk7DQogICAgdm9pZCBjb21waWxlSWZO
ZWNlc3NhcnlNYXRjaE9ubHkoVk0mLCBZYXJyOjpZYXJyQ2hhclNpemUpOw0KDQoNCg0KI2xpbmUg
MTY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXFJlZ0V4cC5oIg0KDQoNCiAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBlbnN1cmVSZWdF
eHBKSVRDb2RlKCkNCiAgICB7DQogICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlKQ0KICAgICAg
ICAgICAgbV9yZWdFeHBKSVRDb2RlID0gbWFrZVVuaXF1ZTxZYXJyOjpZYXJyQ29kZUJsb2NrPigp
Ow0KICAgICAgICByZXR1cm4gKm1fcmVnRXhwSklUQ29kZS5nZXQoKTsNCiAgICB9DQojbGluZSAx
NzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcUmVnRXhwLmgiDQoNCiAgICBzdHJ1Y3QgUmFyZURhdGEgew0KICAgICAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3Bl
cmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJh
dG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7
ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9
IGludDsgdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9
IGludDsNCiAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9jYXB0dXJlR3JvdXBOYW1lczsNCiAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX25hbWVkR3JvdXBUb1BhcmVuSW5kZXg7DQog
ICAgfTsNCg0KICAgIFN0cmluZyBtX3BhdHRlcm5TdHJpbmc7DQogICAgUmVnRXhwU3RhdGUgbV9z
dGF0ZSB7IE5vdENvbXBpbGVkIH07DQogICAgT3B0aW9uU2V0PFlhcnI6OkZsYWdzPiBtX2ZsYWdz
Ow0KICAgIFlhcnI6OkVycm9yQ29kZSBtX2NvbnN0cnVjdGlvbkVycm9yQ29kZSB7IFlhcnI6OkVy
cm9yQ29kZTo6Tm9FcnJvciB9Ow0KICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnMgeyAwIH07
DQogICAgc3RkOjp1bmlxdWVfcHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRl
Y29kZTsNCg0KICAgIHN0ZDo6dW5pcXVlX3B0cjxZYXJyOjpZYXJyQ29kZUJsb2NrPiBtX3JlZ0V4
cEpJVENvZGU7DQojbGluZSAxOTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcUmVnRXhwLmgiDQogICAgc3RkOjp1bmlxdWVfcHRyPFJh
cmVEYXRhPiBtX3JhcmVEYXRhOw0KDQoNCg0KDQoNCg0KDQojbGluZSAyMDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUmVnRXhwLmgi
DQp9Ow0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcUmVnRXhwQ2FjaGVkUmVzdWx0LmgiDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjbGFzcyBKU0FycmF5Ow0KY2xhc3MgSlNTdHJpbmc7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCmNsYXNzIFJlZ0V4cENhY2hlZFJlc3VsdCB7DQpwdWJsaWM6DQogICAgX19mb3JjZWlu
bGluZSB2b2lkIHJlY29yZChWTSYgdm0sIEpTT2JqZWN0KiBvd25lciwgUmVnRXhwKiByZWdFeHAs
IEpTU3RyaW5nKiBpbnB1dCwgTWF0Y2hSZXN1bHQgcmVzdWx0KQ0KICAgIHsNCiAgICAgICAgbV9s
YXN0UmVnRXhwLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIocmVnRXhwKTsNCiAgICAgICAgbV9sYXN0
SW5wdXQuc2V0V2l0aG91dFdyaXRlQmFycmllcihpbnB1dCk7DQogICAgICAgIG1fcmVzdWx0ID0g
cmVzdWx0Ow0KICAgICAgICBtX3JlaWZpZWQgPSBmYWxzZTsNCiAgICAgICAgdm0uaGVhcC53cml0
ZUJhcnJpZXIob3duZXIpOw0KICAgIH0NCg0KICAgIEpTQXJyYXkqIGxhc3RSZXN1bHQoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogb3duZXIpOw0KICAgIHZvaWQgc2V0SW5wdXQoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogb3duZXIsIEpTU3RyaW5nKik7DQoNCiAgICBKU1N0cmluZyogbGVm
dENvbnRleHQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3duZXIpOw0KICAgIEpTU3RyaW5n
KiByaWdodENvbnRleHQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3duZXIpOw0KDQogICAg
SlNTdHJpbmcqIGlucHV0KCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX3JlaWZpZWQgPyBtX3Jl
aWZpZWRJbnB1dC5nZXQoKSA6IG1fbGFzdElucHV0LmdldCgpOw0KICAgIH0NCg0KICAgIHZvaWQg
dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsNCg0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZMYXN0UmVnRXhwKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8UmVnRXhwQ2FjaGVkUmVzdWx0Kj4oMHg0MDAw
KS0+bV9sYXN0UmVnRXhwKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkxhc3RJbnB1dCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihy
ZWludGVycHJldF9jYXN0PFJlZ0V4cENhY2hlZFJlc3VsdCo+KDB4NDAwMCktPm1fbGFzdElucHV0
KSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlc3VsdCgpIHsg
cmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFJl
Z0V4cENhY2hlZFJlc3VsdCo+KDB4NDAwMCktPm1fcmVzdWx0KSkgLSAweDQwMDApOyB9DQogICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlaWZpZWQoKSB7IHJldHVybiAocmVpbnRlcnByZXRf
Y2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxSZWdFeHBDYWNoZWRSZXN1bHQqPigw
eDQwMDApLT5tX3JlaWZpZWQpKSAtIDB4NDAwMCk7IH0NCg0KcHJpdmF0ZToNCiAgICBNYXRjaFJl
c3VsdCBtX3Jlc3VsdCB7IDAsIDAgfTsNCiAgICBib29sIG1fcmVpZmllZCB7IGZhbHNlIH07DQog
ICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX2xhc3RJbnB1dDsNCiAgICBXcml0ZUJhcnJpZXI8
UmVnRXhwPiBtX2xhc3RSZWdFeHA7DQogICAgV3JpdGVCYXJyaWVyPEpTQXJyYXk+IG1fcmVpZmll
ZFJlc3VsdDsNCiAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fcmVpZmllZElucHV0Ow0KICAg
IFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9yZWlmaWVkTGVmdENvbnRleHQ7DQogICAgV3JpdGVC
YXJyaWVyPEpTU3RyaW5nPiBtX3JlaWZpZWRSaWdodENvbnRleHQ7DQp9Ow0KDQp9IA0KI2xpbmUg
MjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcUmVnRXhwR2xvYmFsRGF0YS5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSlNH
bG9iYWxPYmplY3Q7DQoNCmNsYXNzIFJlZ0V4cEdsb2JhbERhdGEgew0KcHVibGljOg0KICAgIFJl
Z0V4cENhY2hlZFJlc3VsdCYgY2FjaGVkUmVzdWx0KCkgeyByZXR1cm4gbV9jYWNoZWRSZXN1bHQ7
IH0NCg0KICAgIHZvaWQgc2V0TXVsdGlsaW5lKGJvb2wgbXVsdGlsaW5lKSB7IG1fbXVsdGlsaW5l
ID0gbXVsdGlsaW5lOyB9DQogICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX211
bHRpbGluZTsgfQ0KDQogICAgdm9pZCBzZXRJbnB1dChKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5n
Kik7DQogICAgSlNTdHJpbmcqIGlucHV0KCkgeyByZXR1cm4gbV9jYWNoZWRSZXN1bHQuaW5wdXQo
KTsgfQ0KDQogICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOw0KDQogICAgSlNW
YWx1ZSBnZXRCYWNrcmVmKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQpOw0KICAgIEpTVmFsdWUg
Z2V0TGFzdFBhcmVuKEpTR2xvYmFsT2JqZWN0Kik7DQogICAgSlNWYWx1ZSBnZXRMZWZ0Q29udGV4
dChKU0dsb2JhbE9iamVjdCopOw0KICAgIEpTVmFsdWUgZ2V0UmlnaHRDb250ZXh0KEpTR2xvYmFs
T2JqZWN0Kik7DQoNCiAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2goSlNHbG9iYWxPYmplY3Qq
LCBSZWdFeHAqLCBKU1N0cmluZyosIGNvbnN0IFN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50
Kiogb3ZlY3Rvcik7DQogICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsT2JqZWN0
KiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQpOw0K
ICAgIHZvaWQgcmVjb3JkTWF0Y2goVk0mLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cCosIEpTU3Ry
aW5nKiwgY29uc3QgTWF0Y2hSZXN1bHQmKTsNCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZDYWNoZWRSZXN1bHQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxSZWdFeHBHbG9iYWxEYXRhKj4oMHg0MDAwKS0+bV9jYWNoZWRSZXN1
bHQpKSAtIDB4NDAwMCk7IH0NCg0KcHJpdmF0ZToNCiAgICBSZWdFeHBDYWNoZWRSZXN1bHQgbV9j
YWNoZWRSZXN1bHQ7DQogICAgYm9vbCBtX211bHRpbGluZSB7IGZhbHNlIH07DQogICAgVmVjdG9y
PGludD4gbV9vdmVjdG9yOw0KfTsNCg0KfQ0KI2xpbmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCIN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcUnVudGltZUZsYWdzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KDQoNCg0KY2xhc3MgUnVudGltZUZsYWdzIHsNCnByaXZhdGU6DQogICAgZW51bSBSdW50
aW1lRmxhZ1NoaWZ0VmFsdWUgOiB1bnNpZ25lZCB7DQoNCiAgICAgICAgDQoNCiAgICB9Ow0KDQpw
dWJsaWM6DQogICAgZW51bSBSdW50aW1lRmxhZyA6IHVuc2lnbmVkIHsNCg0KICAgICAgICANCg0K
ICAgIH07DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAgICANCg0KDQogICAgUnVudGltZUZs
YWdzKCkNCiAgICAgICAgOiBSdW50aW1lRmxhZ3MoMHUpDQogICAgew0KICAgIH0NCg0KICAgIFJ1
bnRpbWVGbGFncyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UnVudGltZUZsYWc+IGluaXRpYWxpemVy
TGlzdCkNCiAgICAgICAgOiBSdW50aW1lRmxhZ3MoKQ0KICAgIHsNCiAgICAgICAgZm9yIChSdW50
aW1lRmxhZyBmbGFnIDogaW5pdGlhbGl6ZXJMaXN0KQ0KICAgICAgICAgICAgbV9mbGFncyB8PSBm
bGFnOw0KICAgIH0NCg0KICAgIGV4cGxpY2l0IFJ1bnRpbWVGbGFncyh1bnNpZ25lZCBmbGFncykN
CiAgICAgICAgOiBtX2ZsYWdzKGZsYWdzKQ0KICAgIHsNCiAgICB9DQoNCiAgICBzdGF0aWMgUnVu
dGltZUZsYWdzIGNyZWF0ZUFsbEVuYWJsZWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFJ1bnRp
bWVGbGFncygNCg0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIDB1DQogICAgICAgICk7DQog
ICAgfQ0KDQpwcml2YXRlOg0KICAgIHVuc2lnbmVkIG1fZmxhZ3M7DQp9Ow0KDQp9IA0KI2xpbmUg
NDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcSlNHbG9iYWxPYmplY3QuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU3RyaW5nUHJvdG90eXBlLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aml0XFxKSVRPcGVyYXRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVE1hdGhJQ0Zvcndh
cmRzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3I+IGNsYXNzIEpJVEJpbmFyeU1hdGhJQzsNCnRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3I+IGNsYXNzIEpJVFVuYXJ5TWF0aElDOw0KY2xhc3MgSklUQWRkR2VuZXJhdG9yOw0K
Y2xhc3MgSklUTXVsR2VuZXJhdG9yOw0KY2xhc3MgSklUTmVnR2VuZXJhdG9yOw0KY2xhc3MgSklU
U3ViR2VuZXJhdG9yOw0KDQp0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRBZGRHZW5lcmF0b3I+
IEpJVEFkZElDOw0KdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUTXVsR2VuZXJhdG9yPiBKSVRN
dWxJQzsNCnR5cGVkZWYgSklUVW5hcnlNYXRoSUM8SklUTmVnR2VuZXJhdG9yPiBKSVROZWdJQzsN
CnR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVFN1YkdlbmVyYXRvcj4gSklUU3ViSUM7DQoNCn0g
DQoNCiNsaW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGppdFxcSklUTWF0aElDRm9yd2FyZHMuaCINCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUT3BlcmF0aW9ucy5o
Ig0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxTbG93UGF0aFJldHVyblR5cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVz
cGFjZSBKU0Mgew0KDQoNCg0KDQoNCnN0cnVjdCBTbG93UGF0aFJldHVyblR5cGUgew0KICAgIENQ
VVJlZ2lzdGVyIGE7DQogICAgQ1BVUmVnaXN0ZXIgYjsNCn07DQpzdGF0aWNfYXNzZXJ0KHNpemVv
ZihTbG93UGF0aFJldHVyblR5cGUpID49IHNpemVvZih2b2lkKikgKiAyLCAiU2xvd1BhdGhSZXR1
cm5UeXBlIHNob3VsZCBmaXQgaW4gdHdvIG1hY2hpbmUgcmVnaXN0ZXJzIik7DQoNCmlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgZW5jb2RlUmVzdWx0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQq
IGIpDQp7DQogICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdDsNCiAgICByZXN1bHQuYSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Q1BVUmVnaXN0ZXI+KGEpOw0KICAgIHJlc3VsdC5iID0gcmVpbnRlcnBy
ZXRfY2FzdDxDUFVSZWdpc3Rlcj4oYik7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KaW5saW5l
IHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIGNvbnN0IHZvaWQq
JiBhLCBjb25zdCB2b2lkKiYgYikNCnsNCiAgICBhID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVzdWx0LmEpOw0KICAgIGIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZXN1bHQuYik7DQp9
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA4NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxTbG93UGF0aFJldHVyblR5cGUuaCINCg0KfSANCiNsaW5lIDMyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUT3BlcmF0
aW9ucy5oIg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnR5cGVkZWYgaW50NjRfdCBFbmNvZGVk
SlNWYWx1ZTsNCiAgICANCmNsYXNzIEFycmF5QWxsb2NhdGlvblByb2ZpbGU7DQpjbGFzcyBBcnJh
eVByb2ZpbGU7DQpjbGFzcyBVbmFyeUFyaXRoUHJvZmlsZTsNCmNsYXNzIEJpbmFyeUFyaXRoUHJv
ZmlsZTsNCmNsYXNzIEJ1dHRlcmZseTsNCmNsYXNzIENhbGxGcmFtZTsNCmNsYXNzIENhbGxMaW5r
SW5mbzsNCmNsYXNzIENvZGVCbG9jazsNCmNsYXNzIEpTQXJyYXk7DQpjbGFzcyBKU0NlbGw7DQpj
bGFzcyBKU0Z1bmN0aW9uOw0KY2xhc3MgSlNHbG9iYWxPYmplY3Q7DQpjbGFzcyBKU0xleGljYWxF
bnZpcm9ubWVudDsNCmNsYXNzIEpTT2JqZWN0Ow0KY2xhc3MgSlNTY29wZTsNCmNsYXNzIEpTU3Ry
aW5nOw0KY2xhc3MgSlNWYWx1ZTsNCmNsYXNzIFJlZ0V4cDsNCmNsYXNzIFJlZ0V4cE9iamVjdDsN
CmNsYXNzIFJlZ2lzdGVyOw0KY2xhc3MgU3RydWN0dXJlOw0KY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm87DQpjbGFzcyBTeW1ib2w7DQpjbGFzcyBTeW1ib2xUYWJsZTsNCmNsYXNzIFZNOw0KY2xhc3Mg
V2F0Y2hwb2ludFNldDsNCg0Kc3RydWN0IEJ5VmFsSW5mbzsNCnN0cnVjdCBFQ01BTW9kZTsNCnN0
cnVjdCBJbmxpbmVDYWxsRnJhbWU7DQpzdHJ1Y3QgSW5zdHJ1Y3Rpb247DQoNCmV4dGVybiAiQyIg
ew0KDQp0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCnVzaW5nIEpfSklUT3BlcmF0aW9uX0dKTWljID0gRW5jb2RlZEpTVmFsdWUo
ICopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsNCnVzaW5nIEpfSklU
T3BlcmF0aW9uX0dQID0gRW5jb2RlZEpTVmFsdWUoICopKEpTR2xvYmFsT2JqZWN0Kiwgdm9pZCop
Ow0KdXNpbmcgSl9KSVRPcGVyYXRpb25fR1BQID0gRW5jb2RlZEpTVmFsdWUoICopKEpTR2xvYmFs
T2JqZWN0Kiwgdm9pZCosIHZvaWQqKTsNCnVzaW5nIEpfSklUT3BlcmF0aW9uX0dQUFAgPSBFbmNv
ZGVkSlNWYWx1ZSggKikoSlNHbG9iYWxPYmplY3QqLCB2b2lkKiwgdm9pZCosIHZvaWQqKTsNCnVz
aW5nIEpfSklUT3BlcmF0aW9uX0dKSiA9IEVuY29kZWRKU1ZhbHVlKCAqKShKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7DQp1c2luZyBKX0pJVE9wZXJhdGlv
bl9HSkpNaWMgPSBFbmNvZGVkSlNWYWx1ZSggKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsNCnVzaW5nIFpfSklUT3BlcmF0aW9uX0dKWlog
PSBpbnQzMl90KCAqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBp
bnQzMl90KTsNCnVzaW5nIEZfSklUT3BlcmF0aW9uX0dGSlpaID0gQ2FsbEZyYW1lKiggKikoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJf
dCk7DQp1c2luZyBTcHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSA9IFNsb3dQYXRoUmV0dXJuVHlwZSgg
KikoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0luZm8qKTsNCnVzaW5nIFZf
SklUT3BlcmF0aW9uX0NiID0gdm9pZCggKikoQ29kZUJsb2NrKik7DQp1c2luZyBaX0pJVE9wZXJh
dGlvbl9HID0gaW50MzJfdCAoICopKEpTR2xvYmFsT2JqZWN0Kik7DQp1c2luZyBQX0pJVE9wZXJh
dGlvbl9WbVN0WkIgPSBjaGFyKiggKikoVk0qLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJm
bHkqKTsNCnVzaW5nIFBfSklUT3BlcmF0aW9uX0dTdFpCID0gY2hhciooICopKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgQnV0dGVyZmx5Kik7DQp1c2luZyBKX0pJVE9wZXJh
dGlvbl9HSiA9IEVuY29kZWRKU1ZhbHVlKCAqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlKTsNCnVzaW5nIEpfSklUT3BlcmF0aW9uX0dKSSA9IEVuY29kZWRKU1ZhbHVlKCAqKShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOw0KdXNpbmcg
Vl9KSVRPcGVyYXRpb25fR1NzaUpKQyA9IHZvaWQoICopKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCk7
DQp1c2luZyBDX0pJVE9wZXJhdGlvbl9UVCA9IHVpbnRwdHJfdCggKikoU3RyaW5nSW1wbCosIFN0
cmluZ0ltcGwqKTsNCnVzaW5nIENfSklUT3BlcmF0aW9uX0JfR0pzc0pzcyA9IHVpbnRwdHJfdCgg
KikoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIEpTU3RyaW5nKik7DQp1c2luZyBTX0pJVE9w
ZXJhdGlvbl9HSkogPSBzaXplX3QoICopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKTsNCnVzaW5nIFZfSklUT3BlcmF0aW9uX0dKSkogPSB2b2lkKCAqKShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpOw0KdXNpbmcgSl9KSVRPcGVyYXRpb25fR1NzaUpKID0gRW5jb2RlZEpTVmFsdWUoICop
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpOw0KdXNpbmcgSl9KSVRPcGVyYXRpb25fR1NzaUpKSSA9IEVuY29kZWRKU1Zh
bHVlKCAqKShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOw0KdXNpbmcgVl9KSVRPcGVy
YXRpb25fR0NDSiA9IHZvaWQoICopKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgSlNDZWxsKiwg
RW5jb2RlZEpTVmFsdWUpOw0KdXNpbmcgSl9KSVRPcGVyYXRpb25fR1NzaUpJID0gRW5jb2RlZEpT
VmFsdWUoICopKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsNCnVzaW5nIFpfSklUT3BlcmF0aW9uX0dKWlogPSBp
bnQzMl90KCAqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBpbnQz
Ml90KTsNCnVzaW5nIEZfSklUT3BlcmF0aW9uX0dGSlpaID0gQ2FsbEZyYW1lKiggKikoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCk7
DQp1c2luZyBEX0pJVE9wZXJhdGlvbl9ERCA9IGRvdWJsZSggKikoZG91YmxlLCBkb3VibGUpOw0K
dXNpbmcgRF9KSVRPcGVyYXRpb25fRCA9IGRvdWJsZSggKikoZG91YmxlKTsNCg0KDQoNCg0Kdm9p
ZCAgb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcihWTSopIDsNCnZvaWQgIG9wZXJhdGlv
bkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSA7DQp2b2lkICBvcGVy
YXRpb25WTUhhbmRsZUV4Y2VwdGlvbihWTSopIDsNCnZvaWQgIG9wZXJhdGlvblRocm93U3RhY2tP
dmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0KikgOw0Kdm9pZCAgb3BlcmF0aW9u
VGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0KEpTR2xvYmFsT2JqZWN0KikgOw0KDQp2b2lk
ICBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDb2RlQmxvY2sqKSA7DQppbnQzMl90
ICBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCopIDsNCmludDMyX3QgIG9w
ZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqKSA7DQoNCkVuY29kZWRK
U1ZhbHVlICBvcGVyYXRpb25UcnlHZXRCeUlkKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3Bl
cmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
dWludHB0cl90KSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWlu
dHB0cl90KSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uR2V0QnlJZChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkgOw0KRW5j
b2RlZEpTVmFsdWUgIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIHVpbnRwdHJfdCkgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpcyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25H
ZXRCeUlkV2l0aFRoaXNHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXNPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpIDsNCkVuY29kZWRKU1Zh
bHVlICBvcGVyYXRpb25HZXRCeUlkRGlyZWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3Bl
cmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgdWludHB0cl90KSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9w
dGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSwgdWludHB0cl90KSA7DQoNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25JbkJ5SWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3Qp
IDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlv
bkluQnlJZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgdWludHB0cl90KSA7DQoNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25JbkJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIDsNCg0Kdm9pZCAg
b3BlcmF0aW9uUHV0QnlJZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSA7DQp2b2lkICBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIDsNCnZvaWQgIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCkgOw0Kdm9pZCAgb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSA7DQp2b2lkICBvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCkgOw0Kdm9pZCAgb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIDsNCnZv
aWQgIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSA7DQp2b2lkICBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgOw0Kdm9pZCAgb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVs
ZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSA7
DQp2b2lkICBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgOw0Kdm9pZCAg
b3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSA7DQp2b2lkICBvcGVyYXRpb25QdXRCeUlkUHV0
UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCkgOw0KDQp2b2lkICBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIDsNCnZvaWQgIG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgOw0Kdm9pZCAgb3BlcmF0
aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIDsNCnZvaWQg
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFN
b2RlKSA7DQoNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25DYWxsRXZhbChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSosIEVDTUFNb2RlKSA7DQpTbG93UGF0aFJldHVyblR5cGUgIG9wZXJhdGlv
bkxpbmtDYWxsKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgOw0K
U2xvd1BhdGhSZXR1cm5UeXBlICBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKENhbGxGcmFt
ZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikgOw0KU2xvd1BhdGhSZXR1cm5UeXBl
ICBvcGVyYXRpb25WaXJ0dWFsQ2FsbChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxM
aW5rSW5mbyopIDsNCg0Kc2l6ZV90ICBvcGVyYXRpb25Db21wYXJlTGVzcyhKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgOw0Kc2l6ZV90ICBvcGVyYXRpb25D
b21wYXJlTGVzc0VxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSA7DQpzaXplX3QgIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSA7DQpzaXplX3QgIG9wZXJhdGlvbkNvbXBh
cmVHcmVhdGVyRXEoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpIDsNCnNpemVfdCAgb3BlcmF0aW9uQ29tcGFyZUVxKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSA7DQpzaXplX3QgIG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgOw0K
DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSA7DQpzaXplX3QgIG9wZXJhdGlvbkNvbXBh
cmVFcUhlYXBCaWdJbnRUb0ludDMyKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBoZWFwQmlnSW50
LCBpbnQzMl90IHNtYWxsSW50KSA7DQoNCg0KI2xpbmUgMjE4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUT3BlcmF0aW9ucy5oIg0KRW5j
b2RlZEpTVmFsdWUgIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoSlNHbG9iYWxPYmplY3Qq
LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQzMl90
IHNpemUpIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJv
ZmlsZShKU0dsb2JhbE9iamVjdCosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNW
YWx1ZSBzaXplKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uTmV3RnVuY3Rpb24oVk0qLCBK
U1Njb3BlKiwgSlNDZWxsKikgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
V2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSosIEpTU2NvcGUqLCBKU0Nl
bGwqKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oVk0q
LCBKU1Njb3BlKiwgSlNDZWxsKikgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbk5ld0dlbmVy
YXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSosIEpT
U2NvcGUqLCBKU0NlbGwqKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uTmV3QXN5bmNGdW5j
dGlvbihWTSosIEpTU2NvcGUqLCBKU0NlbGwqKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9u
TmV3QXN5bmNGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0q
LCBKU1Njb3BlKiwgSlNDZWxsKikgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbk5ld0FzeW5j
R2VuZXJhdG9yRnVuY3Rpb24oVk0qLCBKU1Njb3BlKiwgSlNDZWxsKikgOw0KRW5jb2RlZEpTVmFs
dWUgIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KFZNKiwgSlNTY29wZSosIEpTQ2VsbCopIDsNCnZvaWQgIG9wZXJh
dGlvblNldEZ1bmN0aW9uTmFtZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSA7DQpKU0NlbGwqICBvcGVyYXRpb25OZXdPYmplY3QoVk0qLCBTdHJ1Y3R1cmUqKSA7DQpK
U0NlbGwqICBvcGVyYXRpb25OZXdQcm9taXNlKFZNKiwgU3RydWN0dXJlKikgOw0KSlNDZWxsKiAg
b3BlcmF0aW9uTmV3SW50ZXJuYWxQcm9taXNlKFZNKiwgU3RydWN0dXJlKikgOw0KSlNDZWxsKiAg
b3BlcmF0aW9uTmV3R2VuZXJhdG9yKFZNKiwgU3RydWN0dXJlKikgOw0KSlNDZWxsKiAgb3BlcmF0
aW9uTmV3QXN5bmNHZW5lcmF0b3IoVk0qLCBTdHJ1Y3R1cmUqKSA7DQpKU0NlbGwqICBvcGVyYXRp
b25OZXdSZWdleHAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKSA7DQpVbnVzZWRQdHIgIG9wZXJh
dGlvbkhhbmRsZVRyYXBzKEpTR2xvYmFsT2JqZWN0KikgOw0Kdm9pZCAgb3BlcmF0aW9uVGhyb3co
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgOw0Kdm9pZCAgb3BlcmF0aW9uRGVidWco
Vk0qLCBpbnQzMl90KSA7DQoNClNsb3dQYXRoUmV0dXJuVHlwZSAgb3BlcmF0aW9uT3B0aW1pemUo
Vk0qLCB1aW50MzJfdCkgOw0KY2hhciogIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChWTSos
IHVpbnQzMl90KSA7DQpjaGFyKiAgb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQ
cm9maWxlKFZNKiwgdWludDMyX3QpIDsNCiNsaW5lIDI0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVE9wZXJhdGlvbnMuaCINCnZvaWQg
IG9wZXJhdGlvblB1dEJ5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCwgRW5jb2RlZEpTVmFsdWUpOw0Kdm9pZCAgb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25z
LCBKU0NlbGwqKSA7DQp2b2lkICBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCop
IDsNCnZvaWQgIG9wZXJhdGlvblB1dEdldHRlckJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QgYXR0cmlidXRlLCBKU0NlbGwqKSA7DQp2b2lkICBv
cGVyYXRpb25QdXRTZXR0ZXJCeVZhbChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRK
U1ZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZSwgSlNDZWxsKikgOw0KDQp2b2lkICBvcGVyYXRpb25Q
dXRHZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1w
bCosIGludDMyX3QgYXR0cmlidXRlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIDsN
Cg0KDQojbGluZSAyNTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaml0XFxKSVRPcGVyYXRpb25zLmgiDQp2b2lkICBvcGVyYXRpb25QdXNoRnVuY3Rp
b25OYW1lU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBpbnQzMl90LCBTeW1ib2xUYWJsZSosIEVuY29k
ZWRKU1ZhbHVlKSA7DQp2b2lkICBvcGVyYXRpb25Qb3BTY29wZShKU0dsb2JhbE9iamVjdCosIGlu
dDMyX3QpIDsNCg0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KSA7DQpF
bmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkgOw0KRW5jb2RlZEpTVmFsdWUg
IG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkgOw0KRW5jb2RlZEpTVmFsdWUg
IG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
QnlWYWxJbmZvKikgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eUdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgQnlWYWxJbmZvKikgOw0Kc2l6ZV90ICBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCwgRUNNQU1vZGUpIDsNCnNpemVfdCAg
b3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCwgRUNNQU1vZGUpIDsNCnNpemVf
dCAgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgdGFyZ2V0LCBF
Q01BTW9kZSkgOw0Kc2l6ZV90ICBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRhcmdldCwgRUNNQU1vZGUpIDsNCkpTQ2VsbCogIG9wZXJhdGlvblB1c2hXaXRoU2Nv
cGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEVuY29kZWRKU1Zh
bHVlIG9iamVjdCkgOw0KSlNDZWxsKiAgb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1cnJlbnRTY29wZUNlbGwsIEpTT2Jq
ZWN0KiBvYmplY3QpIDsNCkpTQ2VsbCogIG9wZXJhdGlvbkdldFBOYW1lcyhKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KikgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkluc3RhbmNlT2YoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8p
IDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIEVuY29kZWRK
U1ZhbHVlIHByb3RvKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pIDsNCmludDMyX3QgIG9wZXJhdGlvblNpemVGcmFt
ZUZvckZvcndhcmRBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1
bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZz
ZXQpIDsNCmludDMyX3QgIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMs
IGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpIDsNCkNhbGxGcmFtZSogIG9wZXJhdGlvblNldHVw
Rm9yd2FyZEFyZ3VtZW50c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QgbGVuZ3RoKSA7DQpDYWxsRnJhbWUqICBvcGVyYXRp
b25TZXR1cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVuY29kZWRK
U1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgaW50MzJfdCBsZW5n
dGgpIDsNCg0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEZpZWxkTmFtZSkgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
RmllbGROYW1lKSA7DQoNCmNoYXIqICBvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlU
eXBlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRl
eCkgOw0KY2hhciogIG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZShWTSosIEVu
Y29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIDsNCmNoYXIqICBvcGVyYXRpb25T
d2l0Y2hTdHJpbmdXaXRoVW5rbm93bktleVR5cGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9u
R2V0RnJvbVNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2Rl
UEMpIDsNCnZvaWQgIG9wZXJhdGlvblB1dFRvU2NvcGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBJ
bnN0cnVjdGlvbiogYnl0ZWNvZGVQQykgOw0KDQpjaGFyKiAgb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1
dHRlcmZseVRvSGF2ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoVk0qLCBKU09i
amVjdCopIDsNCmNoYXIqICBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVy
dHlTdG9yYWdlKFZNKiwgSlNPYmplY3QqLCBzaXplX3QgbmV3U2l6ZSkgOw0KDQp2b2lkICBvcGVy
YXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aChWTSosIEpTQ2VsbCopOw0Kdm9pZCAgb3BlcmF0aW9u
T1NSV3JpdGVCYXJyaWVyKFZNKiwgSlNDZWxsKik7DQoNCnZvaWQgIG9wZXJhdGlvbkV4Y2VwdGlv
bkZ1enooSlNHbG9iYWxPYmplY3QqKTsNCnZvaWQgIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enpXaXRo
Q2FsbEZyYW1lKFZNKik7DQoNCmludDMyX3QgIG9wZXJhdGlvbkNoZWNrSWZFeGNlcHRpb25Jc1Vu
Y2F0Y2hhYmxlQW5kTm90aWZ5UHJvZmlsZXIoVk0qKTsNCnNpemVfdCAgb3BlcmF0aW9uSW5zdGFu
Y2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNPYmplY3QqIGNvbnN0cnVjdG9yLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSGFzSW5zdGFuY2Up
IDsNCg0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvblZhbHVlQWRkKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgOw0K
RW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBC
aW5hcnlBcml0aFByb2ZpbGUqKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uVmFsdWVBZGRQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSA7DQpFbmNvZGVkSlNWYWx1
ZSAgb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRB
ZGRJQyopIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMiwgSklUQWRkSUMqKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9uVmFsdWVBZGRO
b09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUQWRkSUMqKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3Bl
cmF0aW9uVmFsdWVNdWwoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSA7DQpFbmNvZGVkSlNWYWx1ZSAgb3BlcmF0aW9u
VmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikgOw0KRW5jb2RlZEpTVmFs
dWUgIG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVE11bElDKikg
Ow0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIsIEpJVE11bElDKikgOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvblZhbHVlTXVs
UHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUTXVsSUMqKSA7DQpFbmNvZGVkSlNW
YWx1ZSAgb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEJpbmFyeUFyaXRo
UHJvZmlsZSopIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25Bcml0aE5lZ2F0ZShKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIG9wZXJhbmQpOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJh
dGlvbkFyaXRoTmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBv
cGVyYW5kLCBVbmFyeUFyaXRoUHJvZmlsZSopOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkFy
aXRoTmVnYXRlUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcGVyYW5kLCBKSVROZWdJQyopOw0KRW5jb2RlZEpTVmFsdWUgIG9wZXJhdGlvbkFy
aXRoTmVnYXRlT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3BlcmFuZCwgSklUTmVnSUMqKTsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25WYWx1ZVN1YihK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVk
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgQmluYXJ5QXJpdGhQcm9maWxlKikgOw0KRW5jb2RlZEpTVmFsdWUgIG9w
ZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIDsNCkVuY29k
ZWRKU1ZhbHVlICBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRT
dWJJQyopIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIDsNCkVuY29kZWRKU1ZhbHVlICBvcGVyYXRpb25W
YWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKikgOw0KDQp2
b2lkICBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nKFZNKikgOw0Kdm9pZCAgb3BlcmF0
aW9uUHJvY2Vzc1NoYWRvd0NoaWNrZW5Mb2coVk0qKSA7DQoNCn0gDQoNCn0gDQoNCiNsaW5lIDMy
OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRc
XEpJVE9wZXJhdGlvbnMuaCINCiNsaW5lIDI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN0cmluZ1Byb3RvdHlwZS5oIg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxTdHJpbmdPYmplY3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFN0cmlu
Z09iamVjdCA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3Qgew0KcHVibGljOg0KICAgIHVzaW5nIEJh
c2UgPSBKU1dyYXBwZXJPYmplY3Q7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybyB8IE92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5TmFtZXM7DQoNCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4NCiAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0uc3Ry
aW5nT2JqZWN0U3BhY2U7DQogICAgfQ0KDQogICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgew0KICAgICAgICBKU1N0cmluZyog
c3RyaW5nID0ganNFbXB0eVN0cmluZyh2bSk7DQogICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pih2bS5oZWFwKSkgU3Ry
aW5nT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9u
KHZtLCBzdHJpbmcpOw0KICAgICAgICByZXR1cm4gb2JqZWN0Ow0KICAgIH0NCiAgICBzdGF0aWMg
U3RyaW5nT2JqZWN0KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJp
bmcqIHN0cmluZykNCiAgICB7DQogICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0Pih2bS5oZWFwKSkgU3RyaW5nT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJp
bmcpOw0KICAgICAgICByZXR1cm4gb2JqZWN0Ow0KICAgIH0NCiAgICBzdGF0aWMgU3RyaW5nT2Jq
ZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7DQoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOw0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBib29sIHB1dChK
U0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBib29sIHB1dEJ5SW5k
ZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGlj
IHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7DQogICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05h
bWUoY29uc3QgSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOw0KDQogICAgcHJvdGVjdGVkOiBz
dGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZv
OyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygp
IHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBKU1N0cmluZyogaW50ZXJuYWxWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIGFzU3RyaW5nKEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpKTsg
fQ0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhTdHJpbmdPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAg
fQ0KDQpwcm90ZWN0ZWQ6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU1N0cmluZyopOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBTdHJpbmdP
YmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsNCn07DQpzdGF0aWNfYXNzZXJ0KHNpemVvZihTdHJpbmdP
YmplY3QpID09IHNpemVvZihKU1dyYXBwZXJPYmplY3QpKTsNCg0KX19kZWNsc3BlYyhkbGxleHBv
cnQpIFN0cmluZ09iamVjdCogY29uc3RydWN0U3RyaW5nKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsNCg0KDQoNCg0KDQoNCg0Kc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdX
aXRoUmV1c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcmlnaW5hbFZh
bHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZykNCnsNCiAgICBpZiAob3JpZ2luYWxWYWx1ZS5pc1N0
cmluZygpKSB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGFzU3RyaW5nKG9y
aWdpbmFsVmFsdWUpOw0KICAgIH0NCiAgICByZXR1cm4ganNTdHJpbmcoZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KSwgc3RyaW5nKTsNCn0NCg0KDQoNCg0KDQoNCnN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3JpZ2luYWxW
YWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKQ0Kew0KICAgIGlmIChvcmlnaW5hbFZhbHVlLmlzU3RyaW5nKCkpIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZ2xvYmFsT2JqZWN0LCBhc1N0cmlu
ZyhvcmlnaW5hbFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpOw0KICAgIH0NCiAgICByZXR1cm4ganNT
dWJzdHJpbmcoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCk7DQp9
DQoNCn0gDQojbGluZSAyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxTdHJpbmdQcm90b3R5cGUuaCINCg0KbmFtZXNwYWNlIEpTQyB7
DQoNCmNsYXNzIE9iamVjdFByb3RvdHlwZTsNCmNsYXNzIFJlZ0V4cDsNCmNsYXNzIFJlZ0V4cE9i
amVjdDsNCg0KY2xhc3MgU3RyaW5nUHJvdG90eXBlIGZpbmFsIDogcHVibGljIFN0cmluZ09iamVj
dCB7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IFN0cmluZ09iamVjdDsNCiAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOw0KDQogICAgc3RhdGljIFN0cmluZ1Byb3RvdHlwZSog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsNCg0KICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRGVyaXZlZFN0
cmluZ09iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCiAgICBw
cm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBz
dGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9Ow0KDQpwcml2YXRlOg0KICAgIFN0cmluZ1Byb3RvdHlwZShWTSYsIFN0cnVjdHVy
ZSopOw0KICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTU3Ry
aW5nKik7DQp9Ow0Kc3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nUHJvdG90eXBlKSA9PSBzaXpl
b2YoU3RyaW5nT2JqZWN0KSk7IHN0YXRpY19hc3NlcnQoU3RyaW5nUHJvdG90eXBlOjpkZXN0cm95
ID09IFN0cmluZ09iamVjdDo6ZGVzdHJveSk7Ow0KDQpKU0NlbGwqICBvcGVyYXRpb25TdHJpbmdQ
cm90b0Z1bmNSZXBsYWNlR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgc2VhcmNoVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHJlcGxh
Y2VWYWx1ZSk7DQpKU0NlbGwqICBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhw
RW1wdHlTdHIoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyogdGhpc1ZhbHVlLCBSZWdFeHBPYmpl
Y3QqIHNlYXJjaFZhbHVlKTsNCkpTQ2VsbCogIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VSZWdFeHBTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyogdGhpc1ZhbHVlLCBSZWdF
eHBPYmplY3QqIHNlYXJjaFZhbHVlLCBKU1N0cmluZyogcmVwbGFjZVZhbHVlKTsNCg0Kdm9pZCBz
dWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBS
ZWdFeHAqKTsNCg0KRW5jb2RlZEpTVmFsdWUgIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3Rl
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpTVmFsdWUgIHN0cmluZ1By
b3RvRnVuY1NwbGl0RmFzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KDQpFbmNvZGVk
SlNWYWx1ZSAgYnVpbHRpblN0cmluZ1N1YnN0cmluZ0ludGVybmFsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7DQpFbmNvZGVkSlNWYWx1ZSAgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJu
YWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCkVuY29kZWRKU1ZhbHVlICBidWlsdGlu
U3RyaW5nSW5kZXhPZkludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQoNCn0g
DQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTeW1ib2xQcm90b3R5
cGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN5bWJvbC5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgU3ltYm9sIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
DQpwdWJsaWM6DQogICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsNCiAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlzOw0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMg
X19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJs
aWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0
dXJuICZzX2luZm87IH07DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3MgbW9kZT4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkN
CiAgICB7DQogICAgICAgIHJldHVybiB2bS5zeW1ib2xTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oU3ltYm9sVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHN0
YXRpYyBTeW1ib2wqIGNyZWF0ZShWTSYpOw0KICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZVdpdGhE
ZXNjcmlwdGlvbihWTSYsIGNvbnN0IFN0cmluZyYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBzdGF0aWMgU3ltYm9sKiBjcmVhdGUoVk0mLCBTeW1ib2xJbXBsJiB1aWQpOw0KDQogICAgU3lt
Ym9sSW1wbCYgdWlkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZS51aWQoKTsgfQ0KICAg
IFByaXZhdGVOYW1lIHByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlTmFtZTsg
fQ0KICAgIFN0cmluZyBkZXNjcmlwdGl2ZVN0cmluZygpIGNvbnN0Ow0KICAgIFN0cmluZyBkZXNj
cmlwdGlvbigpIGNvbnN0Ow0KDQogICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVj
dCosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Ow0KICAgIGJvb2wgZ2V0UHJpbWl0aXZl
TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKSBjb25zdDsN
CiAgICBKU09iamVjdCogdG9PYmplY3QoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICBkb3Vi
bGUgdG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCg0KICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZTeW1ib2xJbXBsKCkNCiAgICB7DQogICAgICAgIA0KICAgICAgICByZXR1cm4g
KHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8U3ltYm9sKj4o
MHg0MDAwKS0+bV9wcml2YXRlTmFtZSkpIC0gMHg0MDAwKTsNCiAgICB9DQoNCnByaXZhdGU6DQog
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsNCg0KICAgIFN5bWJvbChWTSYpOw0KICAg
IFN5bWJvbChWTSYsIGNvbnN0IFN0cmluZyYpOw0KICAgIFN5bWJvbChWTSYsIFN5bWJvbEltcGwm
IHVpZCk7DQoNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7DQoNCiAgICBQcml2YXRlTmFt
ZSBtX3ByaXZhdGVOYW1lOw0KfTsNCg0KU3ltYm9sKiBhc1N5bWJvbChKU1ZhbHVlKTsNCg0KaW5s
aW5lIFN5bWJvbCogYXNTeW1ib2woSlNWYWx1ZSB2YWx1ZSkNCnsNCiAgICAoKHZvaWQpMCk7DQog
ICAgcmV0dXJuIGpzQ2FzdDxTeW1ib2wqPih2YWx1ZS5hc0NlbGwoKSk7DQp9DQoNCn0gDQojbGlu
ZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxTeW1ib2xQcm90b3R5cGUuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KY2xhc3Mg
U3ltYm9sUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgew0KcHVibGlj
Og0KICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Ow0KICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
DQogICAgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTeW1ib2xQcm90b3R5cGUpID09
IHNpemVvZihCYXNlKSk7IHN0YXRpY19hc3NlcnQoU3ltYm9sUHJvdG90eXBlOjpkZXN0cm95ID09
IEJhc2U6OmRlc3Ryb3kpOzsNCiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOw0K
ICAgIH0NCg0KICAgIHN0YXRpYyBTeW1ib2xQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQ0KICAgIHsNCiAg
ICAgICAgU3ltYm9sUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTeW1ib2xQcm90b3R5cGU+KHZtLmhlYXApKSBTeW1ib2xQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7DQogICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCk7DQogICAgICAgIHJldHVybiBwcm90b3R5cGU7DQogICAgfQ0KDQogICAgcHJvdGVjdGVkOiBz
dGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0
ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsN
Cg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KcHJp
dmF0ZToNCiAgICBTeW1ib2xQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsNCiAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsNCn07DQpzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxTeW1ib2xQcm90b3R5cGU+Ojp2YWx1ZSwgIlN5
bWJvbFByb3RvdHlwZSIgIiBtdXN0IGhhdmUgYSB0cml2aWFsIGRlc3RydWN0b3IiKTsNCg0KfSAN
CiNsaW5lIDQ3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQoNCg0KDQoNCg0KDQoNCnN0cnVjdCBPcGFx
dWVKU0NsYXNzOw0Kc3RydWN0IE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTsNCmNsYXNzIEpTV3Jh
cHBlck1hcDsNCg0KbmFtZXNwYWNlIEluc3BlY3RvciB7DQpjbGFzcyBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI7DQp9DQoNCm5hbWVzcGFjZSBKU0Mgew0KY2xhc3MgQXJyYXlDb25z
dHJ1Y3RvcjsNCmNsYXNzIEFycmF5UHJvdG90eXBlOw0KY2xhc3MgQXJyYXlJdGVyYXRvclByb3Rv
dHlwZTsNCmNsYXNzIEFzeW5jSXRlcmF0b3JQcm90b3R5cGU7DQpjbGFzcyBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlOw0KY2xhc3MgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGU7DQpjbGFzcyBBc3luY0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOw0KY2xhc3MgQm9vbGVhblByb3RvdHlwZTsNCmNsYXNz
IENvbnNvbGVDbGllbnQ7DQpjbGFzcyBEZWJ1Z2dlcjsNCmNsYXNzIEVycm9yQ29uc3RydWN0b3I7
DQpjbGFzcyBFcnJvclByb3RvdHlwZTsNCmNsYXNzIEV2YWxDb2RlQmxvY2s7DQpjbGFzcyBFdmFs
RXhlY3V0YWJsZTsNCmNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3I7DQpjbGFzcyBGdW5jdGlvblBy
b3RvdHlwZTsNCmNsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsNCmNsYXNzIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlOw0KY2xhc3MgR2V0dGVyU2V0dGVyOw0KY2xhc3MgR2xvYmFsQ29kZUJsb2Nr
Ow0KY2xhc3MgSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTsNCmNsYXNzIElucHV0Q3Vyc29yOw0KY2xh
c3MgSW50bE9iamVjdDsNCmNsYXNzIEludGxDb2xsYXRvcjsNCmNsYXNzIEpTQXJyYXlCdWZmZXI7
DQpjbGFzcyBKU0FycmF5QnVmZmVyUHJvdG90eXBlOw0KY2xhc3MgSlNDYWxsZWU7DQpjbGFzcyBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU7DQpjbGFzcyBKU0ludGVybmFsUHJvbWlzZTsNCmNsYXNz
IEpTTW9kdWxlTG9hZGVyOw0KY2xhc3MgSlNNb2R1bGVSZWNvcmQ7DQpjbGFzcyBKU1Byb21pc2U7
DQpjbGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvcjsNCmNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsN
CmNsYXNzIEpTU2hhcmVkQXJyYXlCdWZmZXI7DQpjbGFzcyBKU1NoYXJlZEFycmF5QnVmZmVyUHJv
dG90eXBlOw0KY2xhc3MgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOw0KY2xhc3MgSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZTsNCmNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlOw0KY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KY2xhc3MgTWFwSXRlcmF0b3JQcm90b3R5cGU7DQpjbGFz
cyBNYXBQcm90b3R5cGU7DQpjbGFzcyBNaWNyb3Rhc2s7DQpjbGFzcyBNb2R1bGVMb2FkZXI7DQpj
bGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsNCmNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3JCYXNlOw0KY2xhc3MgTnVsbEdldHRlckZ1bmN0aW9uOw0KY2xhc3MgTnVsbFNldHRlckZ1bmN0
aW9uOw0KY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7DQpjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOw0K
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7DQpjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsNCmNsYXNz
IFJlZ0V4cFByb3RvdHlwZTsNCmNsYXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlOw0KY2xhc3MgU2V0
UHJvdG90eXBlOw0KY2xhc3MgU291cmNlQ29kZTsNCmNsYXNzIFNvdXJjZU9yaWdpbjsNCmNsYXNz
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsNCmNsYXNzIFZhcmlhYmxlRW52aXJvbm1l
bnQ7DQpzdHJ1Y3QgQWN0aXZhdGlvblN0YWNrTm9kZTsNCnN0cnVjdCBIYXNoVGFibGU7DQplbnVt
IGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90Ow0KDQoNCg0KDQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFdhdGNocG9pbnQ+IGNsYXNzIE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50Ow0KDQpjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9IHRydWU7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDE3NyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5o
Ig0KDQojbGluZSAxNzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCg0KDQoNCg0KDQoNCmNsYXNzIEl0
ZXJhdG9yUHJvdG90eXBlOw0KY2xhc3MgSlNTdHJpbmc7IGNsYXNzIFN0cmluZ1Byb3RvdHlwZTsg
Y2xhc3MgU3RyaW5nQ29uc3RydWN0b3I7IGNsYXNzIEpTSlNQcm9taXNlOyBjbGFzcyBKU1Byb21p
c2VQcm90b3R5cGU7IGNsYXNzIEpTUHJvbWlzZUNvbnN0cnVjdG9yOyBjbGFzcyBKU0JpZ0ludDsg
Y2xhc3MgQmlnSW50UHJvdG90eXBlOyBjbGFzcyBCaWdJbnRDb25zdHJ1Y3RvcjsgY2xhc3MgSlNX
ZWFrT2JqZWN0UmVmOyBjbGFzcyBXZWFrT2JqZWN0UmVmUHJvdG90eXBlOyBjbGFzcyBXZWFrT2Jq
ZWN0UmVmQ29uc3RydWN0b3I7IGNsYXNzIEpTRmluYWxpemF0aW9uUmVnaXN0cnk7IGNsYXNzIEZp
bmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOyBjbGFzcyBGaW5hbGl6YXRpb25SZWdpc3RyeUNv
bnN0cnVjdG9yOyBjbGFzcyBKU0pTSW50ZXJuYWxQcm9taXNlOyBjbGFzcyBKU0ludGVybmFsUHJv
bWlzZVByb3RvdHlwZTsgY2xhc3MgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcjsNCmNsYXNz
IEpTQm9vbGVhbjsgY2xhc3MgQm9vbGVhblByb3RvdHlwZTsgY2xhc3MgQm9vbGVhbkNvbnN0cnVj
dG9yOyBjbGFzcyBKU0RhdGU7IGNsYXNzIERhdGVQcm90b3R5cGU7IGNsYXNzIERhdGVDb25zdHJ1
Y3RvcjsgY2xhc3MgSlNFcnJvcjsgY2xhc3MgRXJyb3JQcm90b3R5cGU7IGNsYXNzIEVycm9yQ29u
c3RydWN0b3I7IGNsYXNzIEpTTWFwOyBjbGFzcyBNYXBQcm90b3R5cGU7IGNsYXNzIE1hcENvbnN0
cnVjdG9yOyBjbGFzcyBKU051bWJlcjsgY2xhc3MgTnVtYmVyUHJvdG90eXBlOyBjbGFzcyBOdW1i
ZXJDb25zdHJ1Y3RvcjsgY2xhc3MgSlNTZXQ7IGNsYXNzIFNldFByb3RvdHlwZTsgY2xhc3MgU2V0
Q29uc3RydWN0b3I7IGNsYXNzIEpTU3ltYm9sOyBjbGFzcyBTeW1ib2xQcm90b3R5cGU7IGNsYXNz
IFN5bWJvbENvbnN0cnVjdG9yOyBjbGFzcyBKU1dlYWtNYXA7IGNsYXNzIFdlYWtNYXBQcm90b3R5
cGU7IGNsYXNzIFdlYWtNYXBDb25zdHJ1Y3RvcjsgY2xhc3MgSlNXZWFrU2V0OyBjbGFzcyBXZWFr
U2V0UHJvdG90eXBlOyBjbGFzcyBXZWFrU2V0Q29uc3RydWN0b3I7DQpjbGFzcyBKU1N0cmluZ0l0
ZXJhdG9yOyBjbGFzcyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTsgY2xhc3MgU3RyaW5nSXRlcmF0
b3JDb25zdHJ1Y3RvcjsNCg0KDQoNCg0KZW51bSBjbGFzcyBKU1Byb21pc2VSZWplY3Rpb25PcGVy
YXRpb24gOiB1bnNpZ25lZCB7DQogICAgUmVqZWN0LCANCiAgICBIYW5kbGUsIA0KfTsNCg0Kc3Ry
dWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsNCiAgICB0eXBlZGVmIGJvb2wgKCpTdXBwb3J0
c1JpY2hTb3VyY2VJbmZvRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7DQogICAg
U3VwcG9ydHNSaWNoU291cmNlSW5mb0Z1bmN0aW9uUHRyIHN1cHBvcnRzUmljaFNvdXJjZUluZm87
DQoNCiAgICB0eXBlZGVmIGJvb2wgKCpTaG91bGRJbnRlcnJ1cHRTY3JpcHRGdW5jdGlvblB0ciko
Y29uc3QgSlNHbG9iYWxPYmplY3QqKTsNCiAgICBTaG91bGRJbnRlcnJ1cHRTY3JpcHRGdW5jdGlv
blB0ciBzaG91bGRJbnRlcnJ1cHRTY3JpcHQ7DQoNCiAgICB0eXBlZGVmIFJ1bnRpbWVGbGFncyAo
KkphdmFTY3JpcHRSdW50aW1lRmxhZ3NGdW5jdGlvblB0cikoY29uc3QgSlNHbG9iYWxPYmplY3Qq
KTsNCiAgICBKYXZhU2NyaXB0UnVudGltZUZsYWdzRnVuY3Rpb25QdHIgamF2YVNjcmlwdFJ1bnRp
bWVGbGFnczsNCg0KICAgIHR5cGVkZWYgdm9pZCAoKlF1ZXVlVGFza1RvRXZlbnRMb29wRnVuY3Rp
b25QdHIpKEpTR2xvYmFsT2JqZWN0JiwgUmVmPE1pY3JvdGFzaz4mJik7DQogICAgUXVldWVUYXNr
VG9FdmVudExvb3BGdW5jdGlvblB0ciBxdWV1ZVRhc2tUb0V2ZW50TG9vcDsNCg0KICAgIHR5cGVk
ZWYgYm9vbCAoKlNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXRQdHIpKGNvbnN0IEpT
R2xvYmFsT2JqZWN0Kik7DQogICAgU2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dFB0
ciBzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0Ow0KDQogICAgdHlwZWRlZiBKU0lu
dGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGVQdHIpKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyosIEpTVmFsdWUsIGNvbnN0IFNvdXJjZU9y
aWdpbiYpOw0KICAgIE1vZHVsZUxvYWRlckltcG9ydE1vZHVsZVB0ciBtb2R1bGVMb2FkZXJJbXBv
cnRNb2R1bGU7DQoNCiAgICB0eXBlZGVmIElkZW50aWZpZXIgKCpNb2R1bGVMb2FkZXJSZXNvbHZl
UHRyKShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwg
SlNWYWx1ZSk7DQogICAgTW9kdWxlTG9hZGVyUmVzb2x2ZVB0ciBtb2R1bGVMb2FkZXJSZXNvbHZl
Ow0KDQogICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJGZXRjaFB0
cikoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpT
VmFsdWUpOw0KICAgIE1vZHVsZUxvYWRlckZldGNoUHRyIG1vZHVsZUxvYWRlckZldGNoOw0KDQog
ICAgdHlwZWRlZiBKU09iamVjdCogKCpNb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVy
dGllc1B0cikoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTTW9k
dWxlUmVjb3JkKiwgSlNWYWx1ZSk7DQogICAgTW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVBy
b3BlcnRpZXNQdHIgbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXM7DQoNCiAg
ICB0eXBlZGVmIEpTVmFsdWUgKCpNb2R1bGVMb2FkZXJFdmFsdWF0ZVB0cikoSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOw0KICAgIE1v
ZHVsZUxvYWRlckV2YWx1YXRlUHRyIG1vZHVsZUxvYWRlckV2YWx1YXRlOw0KDQogICAgdHlwZWRl
ZiB2b2lkICgqUHJvbWlzZVJlamVjdGlvblRyYWNrZXJQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNQ
cm9taXNlKiwgSlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uKTsNCiAgICBQcm9taXNlUmVqZWN0
aW9uVHJhY2tlclB0ciBwcm9taXNlUmVqZWN0aW9uVHJhY2tlcjsNCg0KICAgIHR5cGVkZWYgdm9p
ZCAoKlJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uQXRFdmVudExvb3BQdHIpKEpTR2xvYmFsT2JqZWN0
KiwgRXhjZXB0aW9uKik7DQogICAgUmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2ZW50TG9vcFB0
ciByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wOw0KDQogICAgdHlwZWRlZiBTdHJp
bmcgKCpEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0cikoKTsNCiAgICBEZWZhdWx0TGFuZ3VhZ2VG
dW5jdGlvblB0ciBkZWZhdWx0TGFuZ3VhZ2U7DQoNCiAgICB0eXBlZGVmIHZvaWQgKCpDb21waWxl
U3RyZWFtaW5nUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZSosIEpTVmFsdWUpOw0KICAg
IENvbXBpbGVTdHJlYW1pbmdQdHIgY29tcGlsZVN0cmVhbWluZzsNCg0KICAgIHR5cGVkZWYgdm9p
ZCAoKkluc3RhbnRpYXRlU3RyZWFtaW5nUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZSos
IEpTVmFsdWUsIEpTT2JqZWN0Kik7DQogICAgSW5zdGFudGlhdGVTdHJlYW1pbmdQdHIgaW5zdGFu
dGlhdGVTdHJlYW1pbmc7DQp9Ow0KDQpjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsNCnByaXZhdGU6DQogICAgdHlwZWRlZiBIYXNoU2V0PFJl
ZlB0cjxPcGFxdWVKU1dlYWtPYmplY3RNYXA+PiBXZWFrTWFwU2V0Ow0KICAgIHR5cGVkZWYgSGFz
aE1hcDxPcGFxdWVKU0NsYXNzKiwgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YT4+IE9wYXF1ZUpTQ2xhc3NEYXRhTWFwOw0KDQogICAgc3RydWN0IEpTR2xvYmFsT2JqZWN0
UmFyZURhdGEgew0KICAgICAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9j
YXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHB1
YmxpYzoNCiAgICAgICAgSlNHbG9iYWxPYmplY3RSYXJlRGF0YSgpDQogICAgICAgICAgICA6IHBy
b2ZpbGVHcm91cCgwKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICBXZWFrTWFwU2V0
IHdlYWtNYXBzOw0KICAgICAgICB1bnNpZ25lZCBwcm9maWxlR3JvdXA7DQogICAgICAgIA0KICAg
ICAgICBPcGFxdWVKU0NsYXNzRGF0YU1hcCBvcGFxdWVKU0NsYXNzRGF0YTsNCiAgICB9Ow0KDQog
ICAgDQogICAgDQogICAgVk0qIG1fdm07DQoNCg0KDQpwdWJsaWM6DQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdXNpbmcgSW5pdGlhbGl6ZXIgPSB0eXBlbmFtZSBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFQ+OjpJbml0aWFsaXplcjsNCg0KICAgIFJlZ2lzdGVyIG1fZGVwcmVjYXRlZENh
bGxGcmFtZUZvckRlYnVnZ2VyW0NhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzXTsNCiAg
ICANCiAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fZ2xvYmFsVGhpczsNCg0KICAgIFdyaXRl
QmFycmllcjxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudD4gbV9nbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQ7DQogICAgV3JpdGVCYXJyaWVyPEpTU2NvcGU+IG1fZ2xvYmFsU2NvcGVFeHRlbnNpb247
DQogICAgV3JpdGVCYXJyaWVyPEpTQ2FsbGVlPiBtX2dsb2JhbENhbGxlZTsNCiAgICBXcml0ZUJh
cnJpZXI8SlNDYWxsZWU+IG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlOw0KDQogICAgTGF6eUNs
YXNzU3RydWN0dXJlIG1fZXZhbEVycm9yU3RydWN0dXJlOw0KICAgIExhenlDbGFzc1N0cnVjdHVy
ZSBtX3JhbmdlRXJyb3JTdHJ1Y3R1cmU7DQogICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fcmVmZXJl
bmNlRXJyb3JTdHJ1Y3R1cmU7DQogICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fc3ludGF4RXJyb3JT
dHJ1Y3R1cmU7DQogICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fdHlwZUVycm9yU3RydWN0dXJlOw0K
ICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX1VSSUVycm9yU3RydWN0dXJlOw0KICAgIExhenlDbGFz
c1N0cnVjdHVyZSBtX2FnZ3JlZ2F0ZUVycm9yU3RydWN0dXJlOw0KDQogICAgV3JpdGVCYXJyaWVy
PE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOw0KICAgIFdyaXRlQmFycmll
cjxBcnJheUNvbnN0cnVjdG9yPiBtX2FycmF5Q29uc3RydWN0b3I7DQogICAgV3JpdGVCYXJyaWVy
PFJlZ0V4cENvbnN0cnVjdG9yPiBtX3JlZ0V4cENvbnN0cnVjdG9yOw0KICAgIFdyaXRlQmFycmll
cjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7DQogICAgV3JpdGVC
YXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsNCiAgICBX
cml0ZUJhcnJpZXI8SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcj4gbV9pbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3RvcjsNCg0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSW50bENv
bGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsNCiAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsNCiAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kaXNwbGF5TmFtZXNTdHJ1
Y3R1cmU7DQogICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbG9j
YWxlU3RydWN0dXJlOw0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsNCiAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7
DQoNCiAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5j
dGlvbjsNCiAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJG
dW5jdGlvbjsNCiAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0
ZXJTdHJpY3RGdW5jdGlvbjsNCg0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNG
dW5jdGlvbj4gbV9wYXJzZUludEZ1bmN0aW9uOw0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9wYXJzZUZsb2F0RnVuY3Rpb247DQoNCiAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rp
b247DQogICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbjsNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpT
RnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOw0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb247DQogICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb247
DQogICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX251bWJlclBy
b3RvVG9TdHJpbmdGdW5jdGlvbjsNCiAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmpl
Y3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsNCiAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9m
dW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbjsNCiAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRl
cjsNCiAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNl
Ow0KICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVu
dHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXI7DQoNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEpTTW9kdWxlTG9hZGVyPiBtX21vZHVsZUxvYWRlcjsNCg0KICAgIFdyaXRlQmFy
cmllcjxPYmplY3RQcm90b3R5cGU+IG1fb2JqZWN0UHJvdG90eXBlOw0KICAgIFdyaXRlQmFycmll
cjxGdW5jdGlvblByb3RvdHlwZT4gbV9mdW5jdGlvblByb3RvdHlwZTsNCiAgICBXcml0ZUJhcnJp
ZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJyYXlQcm90b3R5cGU7DQogICAgV3JpdGVCYXJyaWVyPFJl
Z0V4cFByb3RvdHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7DQogICAgV3JpdGVCYXJyaWVyPEl0ZXJh
dG9yUHJvdG90eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOw0KICAgIFdyaXRlQmFycmllcjxBc3lu
Y0l0ZXJhdG9yUHJvdG90eXBlPiBtX2FzeW5jSXRlcmF0b3JQcm90b3R5cGU7DQogICAgV3JpdGVC
YXJyaWVyPEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlPiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlOw0KICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9y
UHJvdG90eXBlOw0KICAgIFdyaXRlQmFycmllcjxBc3luY0dlbmVyYXRvclByb3RvdHlwZT4gbV9h
c3luY0dlbmVyYXRvclByb3RvdHlwZTsNCiAgICBXcml0ZUJhcnJpZXI8QXJyYXlJdGVyYXRvclBy
b3RvdHlwZT4gbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlOw0KICAgIFdyaXRlQmFycmllcjxNYXBJ
dGVyYXRvclByb3RvdHlwZT4gbV9tYXBJdGVyYXRvclByb3RvdHlwZTsNCiAgICBXcml0ZUJhcnJp
ZXI8U2V0SXRlcmF0b3JQcm90b3R5cGU+IG1fc2V0SXRlcmF0b3JQcm90b3R5cGU7DQoNCiAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3Ry
dWN0dXJlOw0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3dp
dGhTY29wZVN0cnVjdHVyZTsNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsNCiAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsNCiAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVy
ZTsNCiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVy
ZTsNCiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVy
ZTsNCiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Nsb25lZEFyZ3VtZW50c1N0cnVjdHVy
ZTsNCg0KICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqZWN0U3RydWN0dXJlRm9yT2Jq
ZWN0Q29uc3RydWN0b3I7DQogICAgICAgIA0KICAgIA0KICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbTnVtYmVyT2ZBcnJh
eUluZGV4aW5nTW9kZXNdOw0KICAgIA0KICAgIA0KICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltOdW1iZXJP
ZkFycmF5SW5kZXhpbmdNb2Rlc107DQoNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlOw0KICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmU7DQogICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsbGJh
Y2tPYmplY3RTdHJ1Y3R1cmU7DQoNCg0KDQojbGluZSAzNjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCIN
Cg0KDQoNCg0KICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVsbFByb3RvdHlwZU9iamVj
dFN0cnVjdHVyZTsNCiAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxlZVN0cnVjdHVy
ZTsNCg0KICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faG9zdEZ1bmN0aW9uU3RydWN0dXJl
Ow0KDQogICAgc3RydWN0IEZ1bmN0aW9uU3RydWN0dXJlcyB7DQogICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IGFycm93RnVuY3Rpb25TdHJ1Y3R1cmU7DQogICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IHNsb3BweUZ1bmN0aW9uU3RydWN0dXJlOw0KICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBzdHJpY3RGdW5jdGlvblN0cnVjdHVyZTsNCiAgICB9Ow0KICAgIEZ1bmN0
aW9uU3RydWN0dXJlcyBtX2J1aWx0aW5GdW5jdGlvbnM7DQogICAgRnVuY3Rpb25TdHJ1Y3R1cmVz
IG1fb3JkaW5hcnlGdW5jdGlvbnM7DQoNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOw0KICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3Ry
dWN0dXJlOw0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX25h
dGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlOw0KICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rpb25O
YW1lT2Zmc2V0Ow0KICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJl
Ow0KICAgIFdyaXRlQmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPiBtX2FzeW5jRnVuY3Rp
b25Qcm90b3R5cGU7DQogICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsNCiAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7DQogICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOw0KICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7DQogICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7DQogICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZTsNCiAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmU7DQogICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9tYXBJdGVyYXRvclN0cnVjdHVyZTsNCiAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3NldEl0ZXJhdG9yU3RydWN0dXJlOw0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOw0KICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOw0K
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZVJlY29y
ZFN0cnVjdHVyZTsNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7DQogICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlPYmplY3RTdHJ1Y3R1cmU7DQogICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsbGFibGVQcm94eU9iamVjdFN0
cnVjdHVyZTsNCiAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9w
cm94eVJldm9rZVN0cnVjdHVyZTsNCg0KDQoNCiNsaW5lIDQwNyAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCiAgICBXcml0ZUJhcnJpZXI8U3RyaW5nUHJvdG90eXBlPiBtX3N0
cmluZ1Byb3RvdHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpbmdPYmplY3RTdHJ1
Y3R1cmU7IFdyaXRlQmFycmllcjxKU1Byb21pc2VQcm90b3R5cGU+IG1fcHJvbWlzZVByb3RvdHlw
ZTsgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9taXNlU3RydWN0dXJlOyBXcml0ZUJhcnJp
ZXI8QmlnSW50UHJvdG90eXBlPiBtX2JpZ0ludFByb3RvdHlwZTsgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9iaWdJbnRPYmplY3RTdHJ1Y3R1cmU7IFdyaXRlQmFycmllcjxXZWFrT2JqZWN0UmVm
UHJvdG90eXBlPiBtX3dlYWtPYmplY3RSZWZQcm90b3R5cGU7IFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fd2Vha09iamVjdFJlZlN0cnVjdHVyZTsgV3JpdGVCYXJyaWVyPEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlPiBtX2ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOyBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlOyBXcml0ZUJh
cnJpZXI8SlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGU+IG1faW50ZXJuYWxQcm9taXNlUHJvdG90
eXBlOyBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsUHJvbWlzZVN0cnVjdHVyZTsN
CiAgICBXcml0ZUJhcnJpZXI8U3RyaW5nSXRlcmF0b3JQcm90b3R5cGU+IG1fc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGU7IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaW5nSXRlcmF0b3JTdHJ1
Y3R1cmU7DQogICAgDQoNCg0KDQoNCg0KDQojbGluZSA0MjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCIN
Cg0KICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmU7IExhenlD
bGFzc1N0cnVjdHVyZSBtX2RhdGVTdHJ1Y3R1cmU7IExhenlDbGFzc1N0cnVjdHVyZSBtX2Vycm9y
U3RydWN0dXJlOyBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9tYXBTdHJ1Y3R1cmU7IExhenlDbGFzc1N0
cnVjdHVyZSBtX251bWJlck9iamVjdFN0cnVjdHVyZTsgTGF6eUNsYXNzU3RydWN0dXJlIG1fc2V0
U3RydWN0dXJlOyBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmU7IExh
enlDbGFzc1N0cnVjdHVyZSBtX3dlYWtNYXBTdHJ1Y3R1cmU7IExhenlDbGFzc1N0cnVjdHVyZSBt
X3dlYWtTZXRTdHJ1Y3R1cmU7IExhenlDbGFzc1N0cnVjdHVyZSBtX2FycmF5QnVmZmVyU3RydWN0
dXJlOw0KDQoNCg0KDQogICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV9zcGVjaWVzR2V0
dGVyU2V0dGVyOw0KICAgIA0KICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZT4gbV90eXBlZEFycmF5UHJvdG87DQogICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I+IG1fdHlwZWRBcnJh
eVN1cGVyQ29uc3RydWN0b3I7DQogICAgDQoNCiAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV90eXBl
ZEFycmF5SW50ODsgTGF6eUNsYXNzU3RydWN0dXJlIG1fdHlwZWRBcnJheVVpbnQ4OyBMYXp5Q2xh
c3NTdHJ1Y3R1cmUgbV90eXBlZEFycmF5VWludDhDbGFtcGVkOyBMYXp5Q2xhc3NTdHJ1Y3R1cmUg
bV90eXBlZEFycmF5SW50MTY7IExhenlDbGFzc1N0cnVjdHVyZSBtX3R5cGVkQXJyYXlVaW50MTY7
IExhenlDbGFzc1N0cnVjdHVyZSBtX3R5cGVkQXJyYXlJbnQzMjsgTGF6eUNsYXNzU3RydWN0dXJl
IG1fdHlwZWRBcnJheVVpbnQzMjsgTGF6eUNsYXNzU3RydWN0dXJlIG1fdHlwZWRBcnJheUZsb2F0
MzI7IExhenlDbGFzc1N0cnVjdHVyZSBtX3R5cGVkQXJyYXlGbG9hdDY0OyBMYXp5Q2xhc3NTdHJ1
Y3R1cmUgbV90eXBlZEFycmF5RGF0YVZpZXc7DQoNCg0KICAgIFZlY3RvcjxMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTQ2VsbD4+IG1fbGlua1RpbWVDb25zdGFudHM7DQoNCiAgICBTdHJp
bmcgbV9uYW1lOw0KDQogICAgU3Ryb25nPEpTT2JqZWN0PiBtX3VuaGFuZGxlZFJlamVjdGlvbkNh
bGxiYWNrOw0KDQogICAgRGVidWdnZXIqIG1fZGVidWdnZXI7DQoNCg0KICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4gbV9pbnNw
ZWN0b3JDb250cm9sbGVyOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0dsb2JhbE9iamVjdERlYnVn
Z2FibGU+IG1faW5zcGVjdG9yRGVidWdnYWJsZTsNCiNsaW5lIDQ1MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVj
dC5oIg0KDQogICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fbWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQ7DQogICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1faGF2aW5nQUJhZFRpbWVX
YXRjaHBvaW50Ow0KICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3ZhckluamVjdGlvbldhdGNo
cG9pbnQ7DQoNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4gbV9y
YXJlRGF0YTsNCg0KICAgIFdlYWtSYW5kb20gbV93ZWFrUmFuZG9tOw0KICAgIFJlZ0V4cEdsb2Jh
bERhdGEgbV9yZWdFeHBHbG9iYWxEYXRhOw0KDQogICAgDQogICAgDQogICAgSW5saW5lV2F0Y2hw
b2ludFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7DQogICAgSW5saW5l
V2F0Y2hwb2ludFNldCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0Ow0KICAgIElu
bGluZVdhdGNocG9pbnRTZXQgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsNCiAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQ7DQogICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX21hcFNldFdhdGNocG9pbnRTZXQ7DQogICAg
SW5saW5lV2F0Y2hwb2ludFNldCBtX3NldEFkZFdhdGNocG9pbnRTZXQ7DQogICAgSW5saW5lV2F0
Y2hwb2ludFNldCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQ7DQogICAgSW5saW5lV2F0Y2hw
b2ludFNldCBtX2FycmF5Sm9pbldhdGNocG9pbnRTZXQ7DQogICAgSW5saW5lV2F0Y2hwb2ludFNl
dCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
IG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50Ow0KICAgIHN0ZDo6dW5pcXVlX3B0
cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4gbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludDsNCiAgICBzdGQ6OnVu
aXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+IG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQ7DQog
ICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX2FycmF5UHJvdG90eXBlSm9pbldhdGNocG9pbnQ7DQog
ICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0Ow0KICAg
IHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQ7DQogICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdh
dGNocG9pbnQ7DQogICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludDsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0SXRlcmF0b3JQ
cm90b3R5cGVOZXh0V2F0Y2hwb2ludDsNCiAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc3RyaW5n
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50Ow0KICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4gbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50Ow0KICAgIHN0ZDo6dW5p
cXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4gbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50Ow0KICAgIHN0ZDo6dW5pcXVl
X3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4gbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50Ow0KICAgIHN0ZDo6dW5pcXVlX3B0
cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4gbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQ7DQoNCnB1YmxpYzoNCiAg
ICBKU0NhbGxlZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGFja092ZXJmbG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0NCg0KICAgIElubGluZVdhdGNocG9pbnRT
ZXQmIGFycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0NCiAgICBJbmxpbmVXYXRjaHBvaW50U2V0
JiBtYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fbWFwSXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQ7IH0NCiAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQ7IH0NCiAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzdHJpbmdJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc3RyaW5nSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQ7IH0NCiAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBTZXRXYXRj
aHBvaW50U2V0KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRjaHBvaW50U2V0OyB9DQogICAgSW5saW5l
V2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0
Y2hwb2ludFNldDsgfQ0KICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5U3BlY2llc1dhdGNo
cG9pbnRTZXQoKSB7IHJldHVybiBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQ7IH0NCiAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0JiBhcnJheUpvaW5XYXRjaHBvaW50U2V0KCkgeyByZXR1cm4gbV9h
cnJheUpvaW5XYXRjaHBvaW50U2V0OyB9DQogICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50U2V0KCkNCiAgICB7DQogICAgICAgIGRvIHsgaWYgKCghKE9wdGlv
bnM6OnVzZUpJVCgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21w
aWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg1MDEsICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2Jq
ZWN0LmgiLCAgX19GVU5DVElPTl9fICAsIDkzICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7DQogICAgICAgIHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsNCiAgICB9
DQoNCiAgICBib29sIGlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9i
c2VydmFibGUoKTsNCiAgICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RB
bmROb25PYnNlcnZhYmxlKCk7DQogICAgYm9vbCBpc1NldFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9j
b2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOw0KICAgIGJvb2wgaXNTdHJpbmdQcm90b3R5cGVJdGVy
YXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsNCiAgICBib29sIGlzTWFwUHJvdG90
eXBlU2V0RmFzdEFuZE5vbk9ic2VydmFibGUoKTsNCiAgICBib29sIGlzU2V0UHJvdG90eXBlQWRk
RmFzdEFuZE5vbk9ic2VydmFibGUoKTsNCg0KDQogICAgdXNpbmcgUmVmZXJlbmNlZEdsb2JhbFBy
b3BlcnR5V2F0Y2hwb2ludFNldHMgPSBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IFJlZjxXYXRjaHBvaW50U2V0PiwgSWRlbnRpZmllclJlcEhhc2g+Ow0KICAgIFJlZmVyZW5jZWRH
bG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0
Y2hwb2ludFNldHM7DQogICAgQ29uY3VycmVudEpTTG9jayBtX3JlZmVyZW5jZWRHbG9iYWxQcm9w
ZXJ0eVdhdGNocG9pbnRTZXRzTG9jazsNCiNsaW5lIDUxNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIg0K
DQogICAgYm9vbCBtX2V2YWxFbmFibGVkIHsgdHJ1ZSB9Ow0KICAgIGJvb2wgbV93ZWJBc3NlbWJs
eUVuYWJsZWQgeyB0cnVlIH07DQogICAgdW5zaWduZWQgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoIHsgMSB9Ow0KICAgIFN0cmluZyBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsNCiAgICBT
dHJpbmcgbV93ZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlOw0KICAgIFJ1bnRpbWVGbGFn
cyBtX3J1bnRpbWVGbGFnczsNCiAgICBDb25zb2xlQ2xpZW50KiBtX2NvbnNvbGVDbGllbnQgeyBu
dWxscHRyIH07DQogICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0Ow0KDQoN
Cg0KI2xpbmUgNTMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQoNCiAgICBzdGF0aWMgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGU7DQogICAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1fZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGU7DQoNCiAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWVkZWQoKQ0K
ICAgIHsNCiAgICAgICAgaWYgKG1fcmFyZURhdGEpDQogICAgICAgICAgICByZXR1cm47DQogICAg
ICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0UmFyZURhdGE+KCk7DQog
ICAgfQ0KICAgICAgICANCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdDsNCiAgICANCiAgICANCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRh
YmxlIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0
UHJvcGVydHlOYW1lcyB8IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0Ow0KDQogICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPg0KICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHZt
Lmdsb2JhbE9iamVjdFNwYWNlPG1vZGU+KCk7DQogICAgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxl
eHBvcnQpIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7DQoN
CiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgOjpKU0M6
OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIGJvb2wgaGFzRGVi
dWdnZXIoKSBjb25zdDsNCiAgICBib29sIGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSBjb25zdDsN
CiAgICBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1f
cnVudGltZUZsYWdzOyB9DQoNCg0KICAgIFdhdGNocG9pbnRTZXQqIGdldFJlZmVyZW5jZWRQcm9w
ZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqKTsNCiAgICBXYXRjaHBvaW50U2V0
JiBlbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBs
Kik7DQojbGluZSA1NjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCg0KICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBzdGFja1RyYWNlTGltaXQoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrVHJhY2VMaW1pdDsg
fQ0KICAgIHZvaWQgc2V0U3RhY2tUcmFjZUxpbWl0KE9wdGlvbmFsPHVuc2lnbmVkPiB2YWx1ZSkg
eyBtX3N0YWNrVHJhY2VMaW1pdCA9IHZhbHVlOyB9DQoNCnByb3RlY3RlZDoNCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogPSBudWxscHRyKTsNCg0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7DQoNCiAgICBfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTT2JqZWN0Kik7DQoNCiAgICB2
b2lkIGFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJik7DQoNCnB1YmxpYzoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgfkpTR2xvYmFsT2JqZWN0KCk7DQogICAgX19kZWNsc3BlYyhkbGxl
eHBvcnQpIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7DQoNCiAgICBfX2RlY2xzcGVjKGRs
bGV4cG9ydCkgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
Ow0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0ZXIo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRl
ckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBz
dGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOw0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsNCg0KICAgIHZvaWQgYWRkVmFyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkNCiAgICB7
DQogICAgICAgIGlmICghaGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
KQ0KICAgICAgICAgICAgYWRkR2xvYmFsVmFyKHByb3BlcnR5TmFtZSk7DQogICAgfQ0KICAgIHZv
aWQgYWRkRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJik7DQoNCiAg
ICBKU1Njb3BlKiBnbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LmdldCgpOyB9DQogICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGlj
YWxFbnZpcm9ubWVudCgpIHsgcmV0dXJuIG1fZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmdldCgp
OyB9DQoNCiAgICBKU1Njb3BlKiBnbG9iYWxTY29wZUV4dGVuc2lvbigpIHsgcmV0dXJuIG1fZ2xv
YmFsU2NvcGVFeHRlbnNpb24uZ2V0KCk7IH0NCiAgICB2b2lkIHNldEdsb2JhbFNjb3BlRXh0ZW5z
aW9uKEpTU2NvcGUqKTsNCiAgICB2b2lkIGNsZWFyR2xvYmFsU2NvcGVFeHRlbnNpb24oKTsNCg0K
ICAgIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUoKSB7IHJldHVybiBtX2dsb2JhbENhbGxlZS5nZXQo
KTsgfQ0KDQogICAgDQogICAgDQoNCiAgICBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNHZXR0ZXJTZXR0
ZXIoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCk7IH0NCg0KICAg
IEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Fy
cmF5Q29uc3RydWN0b3IuZ2V0KCk7IH0NCiAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9DQog
ICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQ0KICAgIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGZ1
bmN0aW9uQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uQ29uc3RydWN0b3Iu
Z2V0KCk7IH0NCiAgICBKU1Byb21pc2VDb25zdHJ1Y3RvciogcHJvbWlzZUNvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0NCiAgICBKU0ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yKiBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuZ2V0KCk7IH0NCg0KICAgIElu
dGxDb2xsYXRvciogZGVmYXVsdENvbGxhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0Q29s
bGF0b3IuZ2V0KHRoaXMpOyB9DQoNCiAgICBOdWxsR2V0dGVyRnVuY3Rpb24qIG51bGxHZXR0ZXJG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbEdldHRlckZ1bmN0aW9uLmdldCgpOyB9DQog
ICAgTnVsbFNldHRlckZ1bmN0aW9uKiBudWxsU2V0dGVyRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX251bGxTZXR0ZXJGdW5jdGlvbi5nZXQoKTsgfQ0KICAgIE51bGxTZXR0ZXJGdW5jdGlvbiog
bnVsbFNldHRlclN0cmljdEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udWxsU2V0dGVyU3Ry
aWN0RnVuY3Rpb24uZ2V0KCk7IH0NCg0KICAgIEpTRnVuY3Rpb24qIHBhcnNlSW50RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlSW50RnVuY3Rpb24uZ2V0KHRoaXMpOyB9DQogICAgSlNG
dW5jdGlvbiogcGFyc2VGbG9hdEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZUZsb2F0
RnVuY3Rpb24uZ2V0KHRoaXMpOyB9DQoNCiAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQodGhpcyk7IH0NCiAgICBKU0Z1bmN0aW9u
KiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3Q7DQogICAgSlNGdW5jdGlvbiogYXJyYXlQ
cm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uLmdldCh0aGlzKTsgfQ0KICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0
aGlzKTsgfQ0KICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbkNvbmN1cnJl
bnRseSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldENvbmN1
cnJlbnRseSgpOyB9DQogICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMpOyB9DQog
ICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0Ow0KICAg
IEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3By
b21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9DQogICAgSlNGdW5jdGlvbiogcmVzb2x2
ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0Ow0KICAgIEpTRnVuY3Rpb24qIHJlamVjdFByb21pc2VG
dW5jdGlvbigpIGNvbnN0Ow0KICAgIEpTRnVuY3Rpb24qIHByb21pc2VQcm90b1RoZW5GdW5jdGlv
bigpIGNvbnN0Ow0KICAgIEpTRnVuY3Rpb24qIG9iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbi5nZXQoKTsgfQ0KICAg
IEpTRnVuY3Rpb24qIG51bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldEluaXRpYWxpemVkT25NYWluVGhyZWFk
KHRoaXMpOyB9DQogICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9s
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uLmdldCgpOyB9DQogICAgSlNGdW5jdGlvbiogcmVnRXhwUHJvdG9FeGVjRnVuY3Rp
b24oKSBjb25zdDsNCiAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZS5nZXQoKTsgfQ0K
ICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIoKSBjb25zdDsNCiAgICBH
ZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcigpIGNvbnN0Ow0KICAgIEdldHRl
clNldHRlciogdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0
ZXIoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxs
ZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIuZ2V0KCk7DQogICAgfQ0KICAgIA0KICAgIEpTTW9kdWxl
TG9hZGVyKiBtb2R1bGVMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUxvYWRlci5nZXQo
dGhpcyk7IH0NCg0KICAgIE9iamVjdFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7IH0NCiAgICBGdW5jdGlvblByb3RvdHlw
ZSogZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpOyB9DQogICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcnJheVByb3RvdHlwZS5nZXQoKTsgfQ0KICAgIEpTT2JqZWN0KiBib29sZWFuUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlLnByb3RvdHlw
ZUluaXRpYWxpemVkT25NYWluVGhyZWFkKHRoaXMpOyB9DQogICAgU3RyaW5nUHJvdG90eXBlKiBz
dHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKTsg
fQ0KICAgIEpTT2JqZWN0KiBudW1iZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX251bWJl
ck9iamVjdFN0cnVjdHVyZS5wcm90b3R5cGVJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsg
fQ0KICAgIEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9iaWdJbnRQcm90b3R5cGUuZ2V0KCk7IH0NCiAgICBKU09iamVjdCogZGF0ZVByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0NCiAgICBK
U09iamVjdCogc3ltYm9sUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RT
dHJ1Y3R1cmUucHJvdG90eXBlSW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0NCiAgICBS
ZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
UHJvdG90eXBlLmdldCgpOyB9DQogICAgSlNPYmplY3QqIGVycm9yUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0NCiAgICBJdGVyYXRv
clByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpOyB9DQogICAgQXN5bmNJdGVyYXRvclByb3RvdHlwZSogYXN5bmNJdGVy
YXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNJdGVyYXRvclByb3RvdHlwZS5n
ZXQoKTsgfQ0KICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCk7IH0NCiAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRvclByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9DQogICAgQXN5bmNGdW5j
dGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmNGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQ0KICAgIEFycmF5SXRlcmF0b3JQcm90b3R5
cGUqIGFycmF5SXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5SXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCk7IH0NCiAgICBNYXBJdGVyYXRvclByb3RvdHlwZSogbWFwSXRlcmF0
b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX21hcEl0ZXJhdG9yUHJvdG90eXBlLmdldCgp
OyB9DQogICAgU2V0SXRlcmF0b3JQcm90b3R5cGUqIHNldEl0ZXJhdG9yUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9zZXRJdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQ0KICAgIEpTT2JqZWN0
KiBtYXBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5wcm90b3R5cGUo
dGhpcyk7IH0NCiAgICANCiAgICBKU09iamVjdCoganNTZXRQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3NldFN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0NCiAgICBKU1Byb21pc2VQcm90
b3R5cGUqIHByb21pc2VQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VQcm90b3R5
cGUuZ2V0KCk7IH0NCiAgICBBc3luY0dlbmVyYXRvclByb3RvdHlwZSogYXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmdldCgp
OyB9DQogICAgQXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogYXN5bmNHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5nZXQoKTsgfQ0KDQogICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsg
fQ0KICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93
aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiBzdHJpY3RFdmFs
QWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2YXRp
b25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiBhY3RpdmF0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7
IH0NCiAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQodGhpcyk7IH0NCiAgICBTdHJ1
Y3R1cmUqIGRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0
QXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9DQogICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVu
dHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5n
ZXQoKTsgfQ0KICAgIFN0cnVjdHVyZSogY2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0NCiAgICBTdHJ1Y3R1
cmUqIG9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQ0KICAgIFN0cnVj
dHVyZSogb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUg
aW5kZXhpbmdUeXBlKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBy
ZXR1cm4gbV9vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZVthcnJheUluZGV4
RnJvbUluZGV4aW5nVHlwZShpbmRleGluZ1R5cGUpXS5nZXQoKTsNCiAgICB9DQogICAgU3RydWN0
dXJlKiBhcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oSW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZSkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgcmV0dXJuIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2Nh
dGlvblthcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShpbmRleGluZ1R5cGUpXS5nZXQoKTsNCiAg
ICB9DQogICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSwgSlNWYWx1ZSBuZXdUYXJnZXQpIGNvbnN0Ow0KICAgIFN0cnVjdHVyZSogYXJyYXlT
dHJ1Y3R1cmVGb3JQcm9maWxlRHVyaW5nQWxsb2NhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBKU1ZhbHVlIG5ld1Rhcmdl
dCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBhcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Qcm9maWxl
OjpzZWxlY3RJbmRleGluZ1R5cGVGb3IocHJvZmlsZSksIG5ld1RhcmdldCk7DQogICAgfQ0KICAg
ICAgICANCiAgICBib29sIGlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkNCiAgICB7DQogICAgICAgIHJldHVybiBvcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkgfCBJc0FycmF5KSA9PSBzdHJ1Y3R1
cmU7DQogICAgfQ0KICAgICAgICANCiAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
DQogICAgU3RydWN0dXJlKiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQ0KICAgIFN0
cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0NCiAgICBTdHJ1Y3R1cmUqIGNhbGxi
YWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVj
dHVyZS5nZXQodGhpcyk7IH0NCg0KDQoNCiNsaW5lIDcxOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIg0K
DQoNCg0KDQogICAgU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRlU3RydWN0dXJlLmdldCh0aGlzKTsgfQ0KICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9DQogICAgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9DQogICAgU3Ry
dWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShFcnJvclR5cGUgZXJy
b3JUeXBlKSBjb25zdA0KICAgIHsNCiAgICAgICAgc3dpdGNoIChlcnJvclR5cGUpIHsNCiAgICAg
ICAgY2FzZSBFcnJvclR5cGU6OkVycm9yOg0KICAgICAgICAgICAgcmV0dXJuIGVycm9yU3RydWN0
dXJlKCk7DQogICAgICAgIGNhc2UgRXJyb3JUeXBlOjpFdmFsRXJyb3I6DQogICAgICAgICAgICBy
ZXR1cm4gbV9ldmFsRXJyb3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOw0KICAgICAgICBjYXNlIEVycm9y
VHlwZTo6UmFuZ2VFcnJvcjoNCiAgICAgICAgICAgIHJldHVybiBtX3JhbmdlRXJyb3JTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOw0KICAgICAgICBjYXNlIEVycm9yVHlwZTo6UmVmZXJlbmNlRXJyb3I6DQog
ICAgICAgICAgICByZXR1cm4gbV9yZWZlcmVuY2VFcnJvclN0cnVjdHVyZS5nZXQodGhpcyk7DQog
ICAgICAgIGNhc2UgRXJyb3JUeXBlOjpTeW50YXhFcnJvcjoNCiAgICAgICAgICAgIHJldHVybiBt
X3N5bnRheEVycm9yU3RydWN0dXJlLmdldCh0aGlzKTsNCiAgICAgICAgY2FzZSBFcnJvclR5cGU6
OlR5cGVFcnJvcjoNCiAgICAgICAgICAgIHJldHVybiBtX3R5cGVFcnJvclN0cnVjdHVyZS5nZXQo
dGhpcyk7DQogICAgICAgIGNhc2UgRXJyb3JUeXBlOjpVUklFcnJvcjoNCiAgICAgICAgICAgIHJl
dHVybiBtX1VSSUVycm9yU3RydWN0dXJlLmdldCh0aGlzKTsNCiAgICAgICAgY2FzZSBFcnJvclR5
cGU6OkFnZ3JlZ2F0ZUVycm9yOg0KICAgICAgICAgICAgcmV0dXJuIG1fYWdncmVnYXRlRXJyb3JT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOw0KICAgICAgICB9DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0KICAgIFN0cnVjdHVyZSogY2FsbGVlU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWVTdHJ1Y3R1cmUuZ2V0KCk7IH0NCiAgICBTdHJ1Y3R1
cmUqIGhvc3RGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdEZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9DQoNCiAgICBTdHJ1Y3R1cmUqIGFycm93RnVuY3Rpb25TdHJ1Y3R1
cmUoYm9vbCBpc0J1aWx0aW4pIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoaXNCdWlsdGluKQ0K
ICAgICAgICAgICAgcmV0dXJuIG1fYnVpbHRpbkZ1bmN0aW9ucy5hcnJvd0Z1bmN0aW9uU3RydWN0
dXJlLmdldCgpOw0KICAgICAgICByZXR1cm4gbV9vcmRpbmFyeUZ1bmN0aW9ucy5hcnJvd0Z1bmN0
aW9uU3RydWN0dXJlLmdldCgpOw0KICAgIH0NCiAgICBTdHJ1Y3R1cmUqIHNsb3BweUZ1bmN0aW9u
U3RydWN0dXJlKGJvb2wgaXNCdWlsdGluKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzQnVp
bHRpbikNCiAgICAgICAgICAgIHJldHVybiBtX2J1aWx0aW5GdW5jdGlvbnMuc2xvcHB5RnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7DQogICAgICAgIHJldHVybiBtX29yZGluYXJ5RnVuY3Rpb25zLnNs
b3BweUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOw0KICAgIH0NCiAgICBTdHJ1Y3R1cmUqIHN0cmlj
dEZ1bmN0aW9uU3RydWN0dXJlKGJvb2wgaXNCdWlsdGluKSBjb25zdA0KICAgIHsNCiAgICAgICAg
aWYgKGlzQnVpbHRpbikNCiAgICAgICAgICAgIHJldHVybiBtX2J1aWx0aW5GdW5jdGlvbnMuc3Ry
aWN0RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7DQogICAgICAgIHJldHVybiBtX29yZGluYXJ5RnVu
Y3Rpb25zLnN0cmljdEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOw0KICAgIH0NCg0KICAgIFN0cnVj
dHVyZSogYm91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5j
dGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0NCiAgICBTdHJ1Y3R1cmUqIGN1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0NCiAgICBTdHJ1Y3R1cmUqIG5hdGl2ZVN0
ZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVTdGRGdW5jdGlvblN0
cnVjdHVyZS5nZXQodGhpcyk7IH0NCiAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQ0KICAgIFN0cnVjdHVy
ZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQ0KICAgIFN0cnVjdHVyZSog
Z2VuZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmUu
Z2V0KCk7IH0NCiAgICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQ0KICAgIFN0cnVjdHVy
ZSogZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9DQogICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmdldCgp
OyB9DQogICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9DQog
ICAgU3RydWN0dXJlKiBhcnJheUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9ICAgIA0KICAgIFN0cnVjdHVyZSogbWFwSXRl
cmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLmdl
dCgpOyB9DQogICAgU3RydWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0NCiAgICBTdHJ1Y3R1cmUqIHN0cmlu
Z09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9DQogICAgU3RydWN0dXJlKiBpdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9DQogICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQ0KICAgIFN0cnVj
dHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiBtb2R1bGVOYW1lc3BhY2VP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0
cnVjdHVyZS5nZXQodGhpcyk7IH0NCiAgICBTdHJ1Y3R1cmUqIHByb3h5T2JqZWN0U3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcm94eU9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0NCiAg
ICBTdHJ1Y3R1cmUqIGNhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0
dXJlKiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlSZXZva2VT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiByZXN0UGFyYW1ldGVyU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9DQogICAgU3RydWN0dXJlKiBvcmlnaW5h
bFJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBvcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpOyB9DQoNCg0KDQoNCg0K
I2xpbmUgODAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQogICAgU3RydWN0dXJlKiBjb2xsYXRvclN0
cnVjdHVyZSgpIHsgcmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAg
U3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiBkaXNwbGF5TmFtZXNT
dHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Rpc3BsYXlOYW1lc1N0cnVjdHVyZS5nZXQodGhpcyk7IH0N
CiAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVtYmVy
Rm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQ0KICAgIFN0cnVjdHVyZSogbG9jYWxlU3RydWN0
dXJlKCkgeyByZXR1cm4gbV9sb2NhbGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0
dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9DQogICAgU3RydWN0dXJlKiByZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0N
Cg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJs
ZWQoYm9vbCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgcmVtb3RlRGVidWdnaW5n
RW5hYmxlZCgpIGNvbnN0Ow0KDQogICAgdm9pZCBzZXRJc0lUTUwoKTsNCg0KICAgIFJlZ0V4cEds
b2JhbERhdGEmIHJlZ0V4cEdsb2JhbERhdGEoKSB7IHJldHVybiBtX3JlZ0V4cEdsb2JhbERhdGE7
IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IHJlZ0V4cEdsb2JhbERhdGFPZmZzZXQoKSB7IHJldHVy
biAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU0dsb2Jh
bE9iamVjdCo+KDB4NDAwMCktPm1fcmVnRXhwR2xvYmFsRGF0YSkpIC0gMHg0MDAwKTsgfQ0KDQoN
CiAgICBJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVj
dG9yQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2luc3BlY3RvckNvbnRyb2xsZXIuZ2V0
KCk7IH0NCiAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUmIGluc3BlY3RvckRlYnVnZ2FibGUo
KSB7IHJldHVybiAqbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLmdldCgpOyB9DQojbGluZSA4MjEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
SlNHbG9iYWxPYmplY3QuaCINCg0KICAgIHZvaWQgYnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2goVk0mKTsNCiAgICB1bnNpZ25lZCBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoOyB9DQogICAgc3RhdGljIHB0cmRp
ZmZfdCBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJw
cmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNHbG9iYWxPYmplY3QqPigw
eDQwMDApLT5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gpKSAtIDB4NDAwMCk7IH0NCiAgICB1
bnNpZ25lZCogYWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpIHsgcmV0dXJuICZt
X2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0NCg0KICAgIHZvaWQgc2V0Q29uc29sZUNsaWVu
dChDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xpZW50KSB7IG1fY29uc29sZUNsaWVudCA9IGNvbnNv
bGVDbGllbnQ7IH0NCiAgICBDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25zb2xlQ2xpZW50OyB9DQoNCiAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5n
Jik7DQogICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9DQoN
CiAgICB2b2lkIHNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKFZNJiB2bSwgSlNPYmplY3Qq
IGZ1bmN0aW9uKSB7IG1fdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2suc2V0KHZtLCBmdW5jdGlv
bik7IH0NCiAgICBKU09iamVjdCogdW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soKSBjb25zdCB7
IHJldHVybiBtX3VuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrLmdldCgpOyB9DQoNCiAgICBzdGF0
aWMgdm9pZCByZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0
KiwgRXhjZXB0aW9uKik7DQoNCiAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7
IH0NCg0KICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlIHNoYXJpbmdNb2RlKSBjb25zdA0KICAgIHsNCiAgICAgICAgc3dpdGNoIChzaGFyaW5n
TW9kZSkgew0KICAgICAgICBjYXNlIEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6DQog
ICAgICAgICAgICByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7
DQoNCg0KDQojbGluZSA4NDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3QuaCINCiAgICAgICAgZGVmYXVsdDoN
CiAgICAgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLnByb3RvdHlwZSh0aGlz
KTsNCiNsaW5lIDg1MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIg0KICAgICAgICB9DQogICAgfQ0KICAg
IFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBz
aGFyaW5nTW9kZSkgY29uc3QNCiAgICB7DQogICAgICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsN
CiAgICAgICAgY2FzZSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0Og0KICAgICAgICAg
ICAgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOw0KDQoNCg0KI2xpbmUg
ODYzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBy
ZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5nZXQodGhpcyk7DQojbGluZSA4NjYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNH
bG9iYWxPYmplY3QuaCINCiAgICAgICAgfQ0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9y
UG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8o
ODY3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIiwgIF9fRlVOQ1RJT05fXyAgLCA5NCApOyB9IHdoaWxl
IChmYWxzZSk7DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KDQoNCg0KICAgIFN0
cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJlKiBwcm9taXNlU3RydWN0dXJlKCkgeyByZXR1cm4g
bV9wcm9taXNlU3RydWN0dXJlLmdldCgpOyB9IFN0cnVjdHVyZSogYmlnSW50T2JqZWN0U3RydWN0
dXJlKCkgeyByZXR1cm4gbV9iaWdJbnRPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0gU3RydWN0dXJl
KiB3ZWFrT2JqZWN0UmVmU3RydWN0dXJlKCkgeyByZXR1cm4gbV93ZWFrT2JqZWN0UmVmU3RydWN0
dXJlLmdldCgpOyB9IFN0cnVjdHVyZSogZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX2ZpbmFsaXphdGlvblJlZ2lzdHJ5U3RydWN0dXJlLmdldCgpOyB9IFN0cnVjdHVy
ZSogaW50ZXJuYWxQcm9taXNlU3RydWN0dXJlKCkgeyByZXR1cm4gbV9pbnRlcm5hbFByb21pc2VT
dHJ1Y3R1cmUuZ2V0KCk7IH0NCiAgICBTdHJ1Y3R1cmUqIHN0cmluZ0l0ZXJhdG9yU3RydWN0dXJl
KCkgeyByZXR1cm4gbV9zdHJpbmdJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQ0KDQoNCg0KDQoN
Cg0KDQogICAgU3RydWN0dXJlKiBib29sZWFuT2JqZWN0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9i
b29sZWFuT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfSBKU09iamVjdCogYm9vbGVhbk9iamVj
dENvbnN0cnVjdG9yKCkgeyByZXR1cm4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlLmNvbnN0cnVj
dG9yKHRoaXMpOyB9IFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVN0
cnVjdHVyZS5nZXQodGhpcyk7IH0gSlNPYmplY3QqIGRhdGVDb25zdHJ1Y3RvcigpIHsgcmV0dXJu
IG1fZGF0ZVN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfSBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQodGhpcyk7IH0gSlNPYmplY3Qq
IGVycm9yQ29uc3RydWN0b3IoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmNvbnN0cnVjdG9y
KHRoaXMpOyB9IFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9IEpTT2JqZWN0KiBtYXBDb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbWFw
U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9IFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9IEpT
T2JqZWN0KiBudW1iZXJPYmplY3RDb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0
U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9IFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkg
eyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9IEpTT2JqZWN0KiBzZXRDb25zdHJ1
Y3RvcigpIHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9IFN0cnVj
dHVyZSogc3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9IEpTT2JqZWN0KiBzeW1ib2xPYmplY3RDb25zdHJ1Y3RvcigpIHsg
cmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9IFN0cnVj
dHVyZSogd2Vha01hcFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fd2Vha01hcFN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0gSlNPYmplY3QqIHdlYWtNYXBDb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fd2Vha01h
cFN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfSBTdHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX3dlYWtTZXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9IEpTT2JqZWN0KiB3
ZWFrU2V0Q29uc3RydWN0b3IoKSB7IHJldHVybiBtX3dlYWtTZXRTdHJ1Y3R1cmUuY29uc3RydWN0
b3IodGhpcyk7IH0gU3RydWN0dXJlKiBhcnJheUJ1ZmZlclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
YXJyYXlCdWZmZXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9IEpTT2JqZWN0KiBhcnJheUJ1ZmZlckNv
bnN0cnVjdG9yKCkgeyByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0
aGlzKTsgfQ0KICAgIA0KDQoNCg0KICAgIExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eVR5cGVkQXJy
YXlTdHJ1Y3R1cmUoVHlwZWRBcnJheVR5cGUgdHlwZSkNCiAgICB7DQogICAgICAgIHN3aXRjaCAo
dHlwZSkgew0KICAgICAgICBjYXNlIE5vdFR5cGVkQXJyYXk6DQogICAgICAgICAgICBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oODkyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0dsb2JhbE9iamVjdC5oIiwgIF9fRlVOQ1RJT05fXyAg
LCA5NSApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICByZXR1cm4gbV90eXBlZEFycmF5
SW50ODsNCg0KICAgICAgICAgICAgY2FzZSBUeXBlSW50ODogcmV0dXJuIG1fdHlwZWRBcnJheUlu
dDg7IGNhc2UgVHlwZVVpbnQ4OiByZXR1cm4gbV90eXBlZEFycmF5VWludDg7IGNhc2UgVHlwZVVp
bnQ4Q2xhbXBlZDogcmV0dXJuIG1fdHlwZWRBcnJheVVpbnQ4Q2xhbXBlZDsgY2FzZSBUeXBlSW50
MTY6IHJldHVybiBtX3R5cGVkQXJyYXlJbnQxNjsgY2FzZSBUeXBlVWludDE2OiByZXR1cm4gbV90
eXBlZEFycmF5VWludDE2OyBjYXNlIFR5cGVJbnQzMjogcmV0dXJuIG1fdHlwZWRBcnJheUludDMy
OyBjYXNlIFR5cGVVaW50MzI6IHJldHVybiBtX3R5cGVkQXJyYXlVaW50MzI7IGNhc2UgVHlwZUZs
b2F0MzI6IHJldHVybiBtX3R5cGVkQXJyYXlGbG9hdDMyOyBjYXNlIFR5cGVGbG9hdDY0OiByZXR1
cm4gbV90eXBlZEFycmF5RmxvYXQ2NDsgY2FzZSBUeXBlRGF0YVZpZXc6IHJldHVybiBtX3R5cGVk
QXJyYXlEYXRhVmlldzsNCg0KICAgICAgICB9DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFs
T3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5m
byg4OTgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiLCAgX19GVU5DVElPTl9fICAsIDk2ICk7IH0gd2hp
bGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuIG1fdHlwZWRBcnJheUludDg7DQogICAgfQ0KICAg
IGNvbnN0IExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eVR5cGVkQXJyYXlTdHJ1Y3R1cmUoVHlwZWRB
cnJheVR5cGUgdHlwZSkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBjb25zdF9jYXN0PGNv
bnN0IExhenlDbGFzc1N0cnVjdHVyZSY+KGNvbnN0X2Nhc3Q8SlNHbG9iYWxPYmplY3QqPih0aGlz
KS0+bGF6eVR5cGVkQXJyYXlTdHJ1Y3R1cmUodHlwZSkpOw0KICAgIH0NCiAgICANCiAgICBTdHJ1
Y3R1cmUqIHR5cGVkQXJyYXlTdHJ1Y3R1cmUoVHlwZWRBcnJheVR5cGUgdHlwZSkgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiBsYXp5VHlwZWRBcnJheVN0cnVjdHVyZSh0eXBlKS5nZXQodGhp
cyk7DQogICAgfQ0KICAgIFN0cnVjdHVyZSogdHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRs
eShUeXBlZEFycmF5VHlwZSB0eXBlKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGxhenlU
eXBlZEFycmF5U3RydWN0dXJlKHR5cGUpLmdldENvbmN1cnJlbnRseSgpOw0KICAgIH0NCiAgICBi
b29sIGlzT3JpZ2luYWxUeXBlZEFycmF5U3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQ0K
ICAgIHsNCiAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZTsNCiAgICAgICAgaWYgKHR5cGUgPT0gTm90VHlwZWRB
cnJheSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgcmV0dXJuIHR5cGVkQXJy
YXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkgPT0gc3RydWN0dXJlOw0KICAgIH0NCg0KICAg
IEpTT2JqZWN0KiB0eXBlZEFycmF5Q29uc3RydWN0b3IoVHlwZWRBcnJheVR5cGUgdHlwZSkgY29u
c3QNCiAgICB7DQogICAgICAgIHJldHVybiBsYXp5VHlwZWRBcnJheVN0cnVjdHVyZSh0eXBlKS5j
b25zdHJ1Y3Rvcih0aGlzKTsNCiAgICB9DQoNCiAgICBKU0NlbGwqIGxpbmtUaW1lQ29uc3RhbnQo
TGlua1RpbWVDb25zdGFudCB2YWx1ZSkgY29uc3QNCiAgICB7DQogICAgICAgIEpTQ2VsbCogcmVz
dWx0ID0gbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUpXS5n
ZXRJbml0aWFsaXplZE9uTWFpblRocmVhZCh0aGlzKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIFdhdGNocG9pbnRTZXQqIG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludC5nZXQoKTsgfQ0KICAgIFdhdGNocG9pbnRTZXQqIGhhdmluZ0FCYWRUaW1l
V2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50LmdldCgpOyB9
DQogICAgV2F0Y2hwb2ludFNldCogdmFySW5qZWN0aW9uV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1f
dmFySW5qZWN0aW9uV2F0Y2hwb2ludC5nZXQoKTsgfQ0KICAgICAgICANCiAgICBib29sIGlzSGF2
aW5nQUJhZFRpbWUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1faGF2aW5nQUJhZFRp
bWVXYXRjaHBvaW50LT5oYXNCZWVuSW52YWxpZGF0ZWQoKTsNCiAgICB9DQogICAgICAgIA0KICAg
IHZvaWQgaGF2ZUFCYWRUaW1lKFZNJik7DQogICAgICAgIA0KICAgIGJvb2wgb2JqZWN0UHJvdG90
eXBlSXNTYW5lKCk7DQogICAgYm9vbCBhcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCk7DQogICAg
Ym9vbCBzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpOw0KDQogICAgdm9pZCBzZXRQcm9maWxl
R3JvdXAodW5zaWduZWQgdmFsdWUpIHsgY3JlYXRlUmFyZURhdGFJZk5lZWRlZCgpOyBtX3JhcmVE
YXRhLT5wcm9maWxlR3JvdXAgPSB2YWx1ZTsgfQ0KICAgIHVuc2lnbmVkIHByb2ZpbGVHcm91cCgp
IGNvbnN0DQogICAgeyANCiAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQ0KICAgICAgICAgICAgcmV0
dXJuIDA7DQogICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5wcm9maWxlR3JvdXA7DQogICAgfQ0K
DQogICAgRGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQ0K
ICAgIHZvaWQgc2V0RGVidWdnZXIoRGVidWdnZXIqKTsNCg0KICAgIGNvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGU7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBD
YWxsRnJhbWUqIGRlcHJlY2F0ZWRDYWxsRnJhbWVGb3JEZWJ1Z2dlcigpOw0KDQogICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCopIHsgcmV0
dXJuIHRydWU7IH0NCg0KICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25z
dCBKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIHRydWU7IH0NCiAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgeyBy
ZXR1cm4gZmFsc2U7IH0NCiAgICBzdGF0aWMgUnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MoY29uc3QgSlNHbG9iYWxPYmplY3QqKSB7IHJldHVybiBSdW50aW1lRmxhZ3MoKTsgfQ0K
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgcXVldWVNaWNyb3Rhc2soUmVmPE1pY3Jv
dGFzaz4mJik7DQoNCiAgICBib29sIGV2YWxFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9ldmFs
RW5hYmxlZDsgfQ0KICAgIGJvb2wgd2ViQXNzZW1ibHlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJBc3NlbWJseUVuYWJsZWQ7IH0NCiAgICBjb25zdCBTdHJpbmcmIGV2YWxEaXNhYmxlZEVy
cm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOyB9
DQogICAgY29uc3QgU3RyaW5nJiB3ZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlOyB9DQogICAgdm9p
ZCBzZXRFdmFsRW5hYmxlZChib29sIGVuYWJsZWQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
ID0gU3RyaW5nKCkpDQogICAgew0KICAgICAgICBtX2V2YWxFbmFibGVkID0gZW5hYmxlZDsNCiAg
ICAgICAgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7DQogICAgfQ0K
ICAgIHZvaWQgc2V0V2ViQXNzZW1ibHlFbmFibGVkKGJvb2wgZW5hYmxlZCwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoKSkNCiAgICB7DQogICAgICAgIG1fd2ViQXNzZW1ibHlF
bmFibGVkID0gZW5hYmxlZDsNCiAgICAgICAgbV93ZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNz
YWdlID0gZXJyb3JNZXNzYWdlOw0KICAgIH0NCg0KDQoNCg0KI2xpbmUgOTkxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFs
T2JqZWN0LmgiDQoNCiAgICB2b2lkIHJlc2V0UHJvdG90eXBlKFZNJiwgSlNWYWx1ZSBwcm90b3R5
cGUpOw0KDQogICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gKm1fdm07IH0NCiAgICBKU09iamVj
dCogZ2xvYmFsVGhpcygpIGNvbnN0Ow0KICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4qIGFkZHJl
c3NPZkdsb2JhbFRoaXMoKSB7IHJldHVybiAmbV9nbG9iYWxUaGlzOyB9DQogICAgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gZGVmYXVsdENvZGVHZW5lcmF0aW9uTW9kZSgpIGNvbnN0Ow0K
DQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNWYWx1ZSBw
cm90b3R5cGUpDQogICAgew0KICAgICAgICBTdHJ1Y3R1cmUqIHJlc3VsdCA9IFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBudWxscHRyLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2JhbE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICAgICAgcmVzdWx0LT5zZXRUcmFuc2l0aW9u
V2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKHRydWUpOw0KICAgICAgICByZXR1cm4gcmVzdWx0
Ow0KICAgIH0NCg0KICAgIHZvaWQgcmVnaXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1h
cCogbWFwKQ0KICAgIHsNCiAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lZWRlZCgpOw0KICAgICAg
ICBtX3JhcmVEYXRhLT53ZWFrTWFwcy5hZGQobWFwKTsNCiAgICB9DQoNCiAgICB2b2lkIHVucmVn
aXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1hcCogbWFwKQ0KICAgIHsNCiAgICAgICAg
aWYgKG1fcmFyZURhdGEpDQogICAgICAgICAgICBtX3JhcmVEYXRhLT53ZWFrTWFwcy5yZW1vdmUo
bWFwKTsNCiAgICB9DQoNCiAgICBPcGFxdWVKU0NsYXNzRGF0YU1hcCYgb3BhcXVlSlNDbGFzc0Rh
dGEoKQ0KICAgIHsNCiAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lZWRlZCgpOw0KICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+b3BhcXVlSlNDbGFzc0RhdGE7DQogICAgfQ0KDQogICAgc3RhdGlj
IHB0cmRpZmZfdCB3ZWFrUmFuZG9tT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SlNHbG9iYWxPYmplY3QqPigweDQwMDApLT5t
X3dlYWtSYW5kb20pKSAtIDB4NDAwMCk7IH0NCiAgICBkb3VibGUgd2Vha1JhbmRvbU51bWJlcigp
IHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXQoKTsgfQ0KICAgIHVuc2lnbmVkIHdlYWtSYW5kb21J
bnRlZ2VyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpOyB9DQogICAgV2Vha1Jh
bmRvbSYgd2Vha1JhbmRvbSgpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbTsgfQ0KDQogICAgYm9vbCBu
ZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTaXRlU3BlY2lm
aWNRdWlya3M7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBleHBvc2VEb2xsYXJW
TShWTSYpOw0KDQoNCg0KDQojbGluZSAxMDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQoNCg0KDQoN
Cg0KICAgIHZvaWQgdHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoKTsNCiAgICB2b2lk
IGluc3RhbGxOdW1iZXJQcm90b3R5cGVXYXRjaHBvaW50KE51bWJlclByb3RvdHlwZSopOw0KICAg
IHZvaWQgaW5zdGFsbE1hcFByb3RvdHlwZVdhdGNocG9pbnQoTWFwUHJvdG90eXBlKik7DQogICAg
dm9pZCBpbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludChTZXRQcm90b3R5cGUqKTsNCg0KcHJv
dGVjdGVkOg0KICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gew0KICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8oY29uc3QgSWRlbnRpZmllciYgaSwgSlNWYWx1ZSB2LCB1bnNpZ25lZCBhKQ0K
ICAgICAgICAgICAgOiBpZGVudGlmaWVyKGkpDQogICAgICAgICAgICAsIHZhbHVlKHYpDQogICAg
ICAgICAgICAsIGF0dHJpYnV0ZXMoYSkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAg
Y29uc3QgSWRlbnRpZmllciBpZGVudGlmaWVyOw0KICAgICAgICBKU1ZhbHVlIHZhbHVlOw0KICAg
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOw0KICAgIH07DQogICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQp
Ow0KDQogICAgdm9pZCBzZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhib29sIG5lZWRRdWlya3Mp
IHsgbV9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyA9IG5lZWRRdWlya3M7IH0NCg0KcHJpdmF0ZToN
CiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KDQogICAgdm9pZCBmaXJl
V2F0Y2hwb2ludEFuZE1ha2VBbGxBcnJheVN0cnVjdHVyZXNTbG93UHV0KFZNJik7DQogICAgdm9p
ZCBzZXRHbG9iYWxUaGlzKFZNJiwgSlNPYmplY3QqIGdsb2JhbFRoaXMpOw0KDQogICAgdGVtcGxh
dGU8RXJyb3JUeXBlIGVycm9yVHlwZT4NCiAgICB2b2lkIGluaXRpYWxpemVFcnJvckNvbnN0cnVj
dG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImKTsNCg0KICAgIHZvaWQgaW5pdGlh
bGl6ZUFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFs
aXplciYpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgaW5pdChWTSYpOw0KICAg
IHZvaWQgZml4dXBQcm90b3R5cGVDaGFpbldpdGhPYmplY3RQcm90b3R5cGUoVk0mKTsNCg0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCBjbGVhclJhcmVEYXRhKEpTQ2VsbCop
Ow0KDQogICAgYm9vbCBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzIHsgZmFsc2UgfTsNCg0KDQoj
bGluZSAxMDgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0LmgiDQoNCg0KDQp9Ow0KDQppbmxpbmUgSlNBcnJh
eSogY29uc3RydWN0RW1wdHlBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCwg
SlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkpDQp7DQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQog
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7DQogICAgaWYgKGluaXRpYWxMZW5ndGggPj0gKDEwMjQg
KiAxMDI0ICogMTAyNCAvIDgpKQ0KICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihnbG9iYWxPYmplY3Qs
IEFycmF5V2l0aEFycmF5U3RvcmFnZSwgbmV3VGFyZ2V0KTsNCiAgICBlbHNlDQogICAgICAgIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9maWxlRHVyaW5nQWxs
b2NhdGlvbihnbG9iYWxPYmplY3QsIHByb2ZpbGUsIG5ld1RhcmdldCk7DQogICAgZG8geyBpZiAo
KChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gbnVsbHB0cjsgfSB3aGlsZSAoZmFsc2UpOw0K
DQogICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBzdHJ1Y3R1cmUs
IGluaXRpYWxMZW5ndGgpOw0KICAgIGlmICgoIXJlc3VsdCkpIHsNCiAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOw0KICAgICAgICByZXR1cm4gbnVsbHB0
cjsNCiAgICB9DQogICAgcmV0dXJuIEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RB
bGxvY2F0aW9uRm9yKHByb2ZpbGUsIHJlc3VsdCk7DQp9DQoNCmlubGluZSBKU0FycmF5KiBjb25z
dHJ1Y3RBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Q
cm9maWxlKiBwcm9maWxlLCBjb25zdCBBcmdMaXN0JiB2YWx1ZXMsIEpTVmFsdWUgbmV3VGFyZ2V0
ID0gSlNWYWx1ZSgpKQ0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAg
YXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9maWxlRHVyaW5nQWxsb2Nh
dGlvbihnbG9iYWxPYmplY3QsIHByb2ZpbGUsIG5ld1RhcmdldCk7DQogICAgZG8geyBpZiAoKChz
Y29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gbnVsbHB0cjsgfSB3aGlsZSAoZmFsc2UpOw0KICAg
IHJldHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxlOjp1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihw
cm9maWxlLCBjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdmFsdWVzKSk7
DQp9DQoNCmlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1ZhbHVl
KiB2YWx1ZXMsIHVuc2lnbmVkIGxlbmd0aCwgSlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkp
DQp7DQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0g
SlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvclByb2ZpbGVEdXJpbmdBbGxvY2F0aW9uKGdsb2JhbE9i
amVjdCwgcHJvZmlsZSwgbmV3VGFyZ2V0KTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRp
b24oKSkpIHJldHVybiBudWxscHRyOyB9IHdoaWxlIChmYWxzZSk7DQogICAgcmV0dXJuIEFycmF5
QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIGNvbnN0
cnVjdEFycmF5KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB2YWx1ZXMsIGxlbmd0aCkpOw0KfQ0K
DQppbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgY29u
c3QgSlNWYWx1ZSogdmFsdWVzLCB1bnNpZ25lZCBsZW5ndGgsIEpTVmFsdWUgbmV3VGFyZ2V0ID0g
SlNWYWx1ZSgpKQ0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0
byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9maWxlRHVyaW5nQWxsb2NhdGlv
bihnbG9iYWxPYmplY3QsIHByb2ZpbGUsIG5ld1RhcmdldCk7DQogICAgZG8geyBpZiAoKChzY29w
ZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gbnVsbHB0cjsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJl
dHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxlOjp1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihwcm9m
aWxlLCBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgdmFsdWVzLCBsZW5ndGgpKTsNCn0NCg0KaW5saW5lIEpTT2JqZWN0KiBKU1Njb3BlOjpnbG9i
YWxUaGlzKCkNCnsgDQogICAgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7DQp9
DQoNCmlubGluZSBKU09iamVjdCogSlNHbG9iYWxPYmplY3Q6Omdsb2JhbFRoaXMoKSBjb25zdA0K
eyANCiAgICByZXR1cm4gbV9nbG9iYWxUaGlzLmdldCgpOw0KfQ0KDQppbmxpbmUgT3B0aW9uU2V0
PENvZGVHZW5lcmF0aW9uTW9kZT4gSlNHbG9iYWxPYmplY3Q6OmRlZmF1bHRDb2RlR2VuZXJhdGlv
bk1vZGUoKSBjb25zdA0Kew0KICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZTsNCiAgICBpZiAoaGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpIHx8IE9wdGlv
bnM6OmZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKSkNCiAgICAgICAgY29kZUdlbmVy
YXRpb25Nb2RlLmFkZChDb2RlR2VuZXJhdGlvbk1vZGU6OkRlYnVnZ2VyKTsNCiAgICBpZiAodm0o
KS50eXBlUHJvZmlsZXIoKSkNCiAgICAgICAgY29kZUdlbmVyYXRpb25Nb2RlLmFkZChDb2RlR2Vu
ZXJhdGlvbk1vZGU6OlR5cGVQcm9maWxlcik7DQogICAgaWYgKHZtKCkuY29udHJvbEZsb3dQcm9m
aWxlcigpKQ0KICAgICAgICBjb2RlR2VuZXJhdGlvbk1vZGUuYWRkKENvZGVHZW5lcmF0aW9uTW9k
ZTo6Q29udHJvbEZsb3dQcm9maWxlcik7DQogICAgcmV0dXJuIGNvZGVHZW5lcmF0aW9uTW9kZTsN
Cn0NCg0KfSANCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEV4ZWN1dGFibGVCYXNlLmgiDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxVbmxp
bmtlZENvZGVCbG9jay5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlVHlwZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gQ29kZVR5cGUgOiB1aW50OF90IHsgR2xvYmFs
Q29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSwgTW9kdWxlQ29kZSB9Ow0KDQp9IA0KDQpuYW1l
c3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRTdHJlYW07DQp2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mLCBKU0M6OkNvZGVUeXBlKTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxVbmxpbmtlZENv
ZGVCbG9jay5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxieXRlY29kZVxcREZHRXhpdFByb2ZpbGUuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYnl0ZWNvZGVcXEV4aXRLaW5kLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51
bSBFeGl0S2luZCA6IHVpbnQ4X3Qgew0KICAgIEV4aXRLaW5kVW5zZXQsDQogICAgQmFkVHlwZSwg
DQogICAgQmFkQ29uc3RhbnRWYWx1ZSwgDQogICAgQmFkSWRlbnQsIA0KICAgIEJhZEV4ZWN1dGFi
bGUsIA0KICAgIEJhZENhY2hlLCANCiAgICBCYWRDb25zdGFudENhY2hlLCANCiAgICBCYWRJbmRl
eGluZ1R5cGUsIA0KICAgIEJhZFR5cGVJbmZvRmxhZ3MsIA0KICAgIE92ZXJmbG93LCANCiAgICBO
ZWdhdGl2ZVplcm8sIA0KICAgIEludDUyT3ZlcmZsb3csIA0KICAgIFN0b3JlVG9Ib2xlLCANCiAg
ICBMb2FkRnJvbUhvbGUsIA0KICAgIE91dE9mQm91bmRzLCANCiAgICBJbmFkZXF1YXRlQ292ZXJh
Z2UsIA0KICAgIEFyZ3VtZW50c0VzY2FwZWQsIA0KICAgIEV4b3RpY09iamVjdE1vZGUsIA0KICAg
IFZhcmFyZ3NPdmVyZmxvdywgDQogICAgVERaRmFpbHVyZSwgDQogICAgSG9pc3RpbmdGYWlsZWQs
IA0KICAgIFVuY291bnRhYmxlLCANCiAgICBVbmNvdW50YWJsZUludmFsaWRhdGlvbiwgDQogICAg
V2F0Y2hkb2dUaW1lckZpcmVkLCANCiAgICBEZWJ1Z2dlckV2ZW50LCANCiAgICBFeGNlcHRpb25D
aGVjaywgDQogICAgR2VuZXJpY1Vud2luZCwgDQogICAgQmlnSW50MzJPdmVyZmxvdywgDQp9Ow0K
DQpjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kKTsNCmJvb2wgZXhpdEtpbmRN
YXlKZXR0aXNvbihFeGl0S2luZCk7DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQ
cmludFN0cmVhbTsNCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdEtp
bmQpOw0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXERGR0V4aXRQcm9maWxlLmgiDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxF
eGl0aW5nSW5saW5lS2luZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gRXhp
dGluZ0lubGluZUtpbmQgOiB1aW50OF90IHsNCiAgICBFeGl0RnJvbUFueUlubGluZUtpbmQsDQog
ICAgRXhpdEZyb21Ob3RJbmxpbmVkLA0KICAgIEV4aXRGcm9tSW5saW5lZCwNCn07DQoNCn0gDQoN
Cm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsNCnZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGluZ0lubGluZUtpbmQpOw0KDQp9IA0KDQoNCg0KI2xp
bmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
Ynl0ZWNvZGVcXERGR0V4aXRQcm9maWxlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxFeGl0aW5nSklUVHlwZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQplbnVtIEV4aXRpbmdKSVRUeXBlIDog
dWludDhfdCB7DQogICAgRXhpdEZyb21Bbnl0aGluZywNCiAgICBFeGl0RnJvbURGRywNCiAgICBF
eGl0RnJvbUZUTA0KfTsNCg0KaW5saW5lIEV4aXRpbmdKSVRUeXBlIGV4aXRpbmdKSVRUeXBlRm9y
KEpJVFR5cGUgdHlwZSkNCnsNCiAgICBzd2l0Y2ggKHR5cGUpIHsNCiAgICBjYXNlIEpJVFR5cGU6
OkRGR0pJVDoNCiAgICAgICAgcmV0dXJuIEV4aXRGcm9tREZHOw0KICAgIGNhc2UgSklUVHlwZTo6
RlRMSklUOg0KICAgICAgICByZXR1cm4gRXhpdEZyb21GVEw7DQogICAgZGVmYXVsdDoNCiAgICAg
ICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JD
cmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQ2LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcRXhpdGluZ0pJVFR5cGUuaCIsICBfX0ZV
TkNUSU9OX18gICwgOTcgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1cm4gRXhpdEZy
b21Bbnl0aGluZzsNCiAgICB9DQp9DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQ
cmludFN0cmVhbTsNCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGlu
Z0pJVFR5cGUpOw0KDQp9IA0KI2xpbmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXERGR0V4aXRQcm9maWxlLmgiDQoNCg0KDQpu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7DQoNCmNsYXNzIEZyZXF1ZW50RXhpdFNpdGUg
ew0KcHVibGljOg0KICAgIEZyZXF1ZW50RXhpdFNpdGUoKQ0KICAgICAgICA6IG1fYnl0ZWNvZGVJ
bmRleChCeXRlY29kZUluZGV4KDApKQ0KICAgICAgICAsIG1fa2luZChFeGl0S2luZFVuc2V0KQ0K
ICAgICAgICAsIG1faml0VHlwZShFeGl0RnJvbUFueXRoaW5nKQ0KICAgICAgICAsIG1faW5saW5l
S2luZChFeGl0RnJvbUFueUlubGluZUtpbmQpDQogICAgew0KICAgIH0NCiAgICANCiAgICBGcmVx
dWVudEV4aXRTaXRlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkNCiAgICAgICAgOiBt
X2J5dGVjb2RlSW5kZXgoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpDQogICAgICAgICwgbV9r
aW5kKEV4aXRLaW5kVW5zZXQpDQogICAgICAgICwgbV9qaXRUeXBlKEV4aXRGcm9tQW55dGhpbmcp
DQogICAgICAgICwgbV9pbmxpbmVLaW5kKEV4aXRGcm9tQW55SW5saW5lS2luZCkNCiAgICB7DQog
ICAgfQ0KICAgIA0KICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4LCBFeGl0S2luZCBraW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhp
dEZyb21Bbnl0aGluZywgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCA9IEV4aXRGcm9tQW55
SW5saW5lS2luZCkNCiAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkNCiAg
ICAgICAgLCBtX2tpbmQoa2luZCkNCiAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkNCiAgICAg
ICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkNCiAgICB7DQogICAgICAgIGlmIChtX2tpbmQg
PT0gQXJndW1lbnRzRXNjYXBlZCkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAg
ICAgICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgoMCk7DQogICAgICAgIH0NCiAg
ICB9DQogICAgDQogICAgDQogICAgDQogICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZShFeGl0
S2luZCBraW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZywgRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZCA9IEV4aXRGcm9tQW55SW5saW5lS2luZCkNCiAgICAg
ICAgOiBtX2J5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCgwKSkNCiAgICAgICAgLCBtX2tpbmQo
a2luZCkNCiAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkNCiAgICAgICAgLCBtX2lubGluZUtp
bmQoaW5saW5lS2luZCkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldDsNCiAg
ICB9DQogICAgDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIG90
aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleCA9PSBvdGhl
ci5tX2J5dGVjb2RlSW5kZXgNCiAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQN
CiAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGUNCiAgICAgICAgICAg
ICYmIG1faW5saW5lS2luZCA9PSBvdGhlci5tX2lubGluZUtpbmQ7DQogICAgfQ0KICAgIA0KICAg
IGJvb2wgc3Vic3VtZXMoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgb3RoZXIpIGNvbnN0DQogICAg
ew0KICAgICAgICBpZiAobV9ieXRlY29kZUluZGV4ICE9IG90aGVyLm1fYnl0ZWNvZGVJbmRleCkN
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5t
X2tpbmQpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIGlmIChtX2ppdFR5cGUg
IT0gRXhpdEZyb21Bbnl0aGluZw0KICAgICAgICAgICAgJiYgbV9qaXRUeXBlICE9IG90aGVyLm1f
aml0VHlwZSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgaWYgKG1faW5saW5l
S2luZCAhPSBFeGl0RnJvbUFueUlubGluZUtpbmQNCiAgICAgICAgICAgICYmIG1faW5saW5lS2lu
ZCAhPSBvdGhlci5tX2lubGluZUtpbmQpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
ICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgICANCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBtX2J5dGVjb2RlSW5kZXguaGFzaCgpICsgbV9raW5kICsg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faml0VHlwZSkgKiA3ICsgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1faW5saW5lS2luZCkgKiAxMTsNCiAgICB9DQogICAgDQogICAgQnl0ZWNvZGVJbmRleCBi
eXRlY29kZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZUluZGV4OyB9DQogICAgRXhp
dEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQ0KICAgIEV4aXRpbmdKSVRUeXBl
IGppdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2ppdFR5cGU7IH0NCiAgICBFeGl0aW5nSW5saW5l
S2luZCBpbmxpbmVLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVLaW5kOyB9DQogICAgDQog
ICAgRnJlcXVlbnRFeGl0U2l0ZSB3aXRoSklUVHlwZShFeGl0aW5nSklUVHlwZSBqaXRUeXBlKSBj
b25zdA0KICAgIHsNCiAgICAgICAgRnJlcXVlbnRFeGl0U2l0ZSByZXN1bHQgPSAqdGhpczsNCiAg
ICAgICAgcmVzdWx0Lm1faml0VHlwZSA9IGppdFR5cGU7DQogICAgICAgIHJldHVybiByZXN1bHQ7
DQogICAgfQ0KDQogICAgRnJlcXVlbnRFeGl0U2l0ZSB3aXRoSW5saW5lS2luZChFeGl0aW5nSW5s
aW5lS2luZCBpbmxpbmVLaW5kKSBjb25zdA0KICAgIHsNCiAgICAgICAgRnJlcXVlbnRFeGl0U2l0
ZSByZXN1bHQgPSAqdGhpczsNCiAgICAgICAgcmVzdWx0Lm1faW5saW5lS2luZCA9IGlubGluZUtp
bmQ7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9raW5kID09IEV4
aXRLaW5kVW5zZXQgJiYgbV9ieXRlY29kZUluZGV4LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
DQogICAgfQ0KICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsNCg0K
cHJpdmF0ZToNCiAgICBCeXRlY29kZUluZGV4IG1fYnl0ZWNvZGVJbmRleDsNCiAgICBFeGl0S2lu
ZCBtX2tpbmQ7DQogICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOw0KICAgIEV4aXRpbmdJbmxp
bmVLaW5kIG1faW5saW5lS2luZDsNCn07DQoNCnN0cnVjdCBGcmVxdWVudEV4aXRTaXRlSGFzaCB7
DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9DQogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRnJlcXVl
bnRFeGl0U2l0ZSYgYSwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgYikgeyByZXR1cm4gYSA9PSBi
OyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxl
dGVkID0gdHJ1ZTsNCn07DQoNCn0gfSANCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOw0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8SlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU+IDogSlNDOjpERkc6OkZyZXF1ZW50RXhp
dFNpdGVIYXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7
DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6REZHOjpGcmVxdWVudEV4aXRTaXRl
PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZT4geyB9
Ow0KDQp9IA0KDQpuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7DQoNCmNsYXNzIFF1ZXJ5
YWJsZUV4aXRQcm9maWxlOw0KDQpjbGFzcyBFeGl0UHJvZmlsZSB7DQpwdWJsaWM6DQogICAgRXhp
dFByb2ZpbGUoKTsNCiAgICB+RXhpdFByb2ZpbGUoKTsNCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICBzdGF0aWMgYm9vbCBhZGQoQ29kZUJsb2NrKiwgY29uc3Qg
RnJlcXVlbnRFeGl0U2l0ZSYpOw0KICAgIA0KICAgIA0KICAgIA0KICAgIFZlY3RvcjxGcmVxdWVu
dEV4aXRTaXRlPiBleGl0U2l0ZXNGb3IoQnl0ZWNvZGVJbmRleCk7DQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgYm9vbCBoYXNFeGl0U2l0ZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJikgY29uc3Q7DQogICAgYm9vbCBoYXNFeGl0U2l0
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgRXhpdEtpbmQga2luZCkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShsb2NrZXIsIEZyZXF1ZW50RXhpdFNp
dGUoa2luZCkpOw0KICAgIH0NCiAgICANCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIFF1ZXJ5
YWJsZUV4aXRQcm9maWxlOw0KICAgIA0KICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RnJlcXVl
bnRFeGl0U2l0ZT4+IG1fZnJlcXVlbnRFeGl0U2l0ZXM7DQp9Ow0KDQpjbGFzcyBRdWVyeWFibGVF
eGl0UHJvZmlsZSB7DQpwdWJsaWM6DQogICAgUXVlcnlhYmxlRXhpdFByb2ZpbGUoKTsNCiAgICB+
UXVlcnlhYmxlRXhpdFByb2ZpbGUoKTsNCiAgICANCiAgICB2b2lkIGluaXRpYWxpemUoVW5saW5r
ZWRDb2RlQmxvY2sqKTsNCg0KICAgIGJvb2wgaGFzRXhpdFNpdGUoY29uc3QgRnJlcXVlbnRFeGl0
U2l0ZSYgc2l0ZSkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChzaXRlLmppdFR5cGUoKSA9PSBF
eGl0RnJvbUFueXRoaW5nKSB7DQogICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3Bl
Y2lmaWNKSVRUeXBlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQ0KICAgICAgICAgICAg
ICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4
aXRGcm9tRlRMKSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlV2l0aFNw
ZWNpZmljSklUVHlwZShzaXRlKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBoYXNFeGl0U2l0ZShF
eGl0S2luZCBraW5kKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZy
ZXF1ZW50RXhpdFNpdGUoa2luZCkpOw0KICAgIH0NCiAgICANCiAgICBib29sIGhhc0V4aXRTaXRl
KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEtpbmQga2luZCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5k
ZXgsIGtpbmQpKTsNCiAgICB9DQpwcml2YXRlOg0KICAgIGJvb2wgaGFzRXhpdFNpdGVXaXRoU3Bl
Y2lmaWNKSVRUeXBlKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0DQogICAgew0K
ICAgICAgICBpZiAoc2l0ZS5pbmxpbmVLaW5kKCkgPT0gRXhpdEZyb21BbnlJbmxpbmVLaW5kKSB7
DQogICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKHNp
dGUud2l0aElubGluZUtpbmQoRXhpdEZyb21Ob3RJbmxpbmVkKSkNCiAgICAgICAgICAgICAgICB8
fCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRoSW5saW5lS2luZChF
eGl0RnJvbUlubGluZWQpKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVX
aXRoU3BlY2lmaWNJbmxpbmVLaW5kKHNpdGUpOw0KICAgIH0NCiAgICANCiAgICBib29sIGhhc0V4
aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRl
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChz
aXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOw0KICAgIH0NCiAgICANCiAgICBIYXNo
U2V0PEZyZXF1ZW50RXhpdFNpdGU+IG1fZnJlcXVlbnRFeGl0U2l0ZXM7DQp9Ow0KDQp9IH0gDQoN
CiNsaW5lIDI0OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxieXRlY29kZVxcREZHRXhpdFByb2ZpbGUuaCINCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxVbmxpbmtlZENv
ZGVCbG9jay5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxieXRlY29kZVxcRXhwcmVzc2lvblJhbmdlSW5mby5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpzdHJ1Y3QgRXhwcmVzc2lvblJhbmdlSW5mbyB7DQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQoNCiAgICBlbnVtIHsNCiAgICAgICAgRmF0TGluZU1vZGUsDQogICAgICAgIEZhdENvbHVt
bk1vZGUsDQogICAgICAgIEZhdExpbmVBbmRDb2x1bW5Nb2RlDQogICAgfTsNCg0KICAgIHN0cnVj
dCBGYXRQb3NpdGlvbiB7DQogICAgICAgIHVpbnQzMl90IGxpbmU7DQogICAgICAgIHVpbnQzMl90
IGNvbHVtbjsNCiAgICB9Ow0KDQogICAgZW51bSB7DQogICAgICAgIEZhdExpbmVNb2RlTGluZVNo
aWZ0ID0gOCwNCiAgICAgICAgRmF0TGluZU1vZGVMaW5lTWFzayA9ICgxIDw8IDIyKSAtIDEsDQog
ICAgICAgIEZhdExpbmVNb2RlQ29sdW1uTWFzayA9ICgxIDw8IDgpIC0gMSwNCiAgICAgICAgRmF0
Q29sdW1uTW9kZUxpbmVTaGlmdCA9IDIyLA0KICAgICAgICBGYXRDb2x1bW5Nb2RlTGluZU1hc2sg
PSAoMSA8PCA4KSAtIDEsDQogICAgICAgIEZhdENvbHVtbk1vZGVDb2x1bW5NYXNrID0gKDEgPDwg
MjIpIC0gMQ0KICAgIH07DQoNCiAgICBlbnVtIHsNCiAgICAgICAgTWF4T2Zmc2V0ID0gKDEgPDwg
NykgLSAxLCANCiAgICAgICAgTWF4RGl2b3QgPSAoMSA8PCAyNSkgLSAxLA0KICAgICAgICBNYXhG
YXRMaW5lTW9kZUxpbmUgPSAoMSA8PCAyMikgLSAxLA0KICAgICAgICBNYXhGYXRMaW5lTW9kZUNv
bHVtbiA9ICgxIDw8IDgpIC0gMSwNCiAgICAgICAgTWF4RmF0Q29sdW1uTW9kZUxpbmUgPSAoMSA8
PCA4KSAtIDEsDQogICAgICAgIE1heEZhdENvbHVtbk1vZGVDb2x1bW4gPSAoMSA8PCAyMikgLSAx
DQogICAgfTsNCg0KICAgIHZvaWQgZW5jb2RlRmF0TGluZU1vZGUodW5zaWduZWQgbGluZSwgdW5z
aWduZWQgY29sdW1uKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIHBvc2l0aW9uID0gKChsaW5lICYgRmF0TGluZU1vZGVMaW5lTWFzaykgPDwg
RmF0TGluZU1vZGVMaW5lU2hpZnQgfCAoY29sdW1uICYgRmF0TGluZU1vZGVDb2x1bW5NYXNrKSk7
DQogICAgfQ0KDQogICAgdm9pZCBlbmNvZGVGYXRDb2x1bW5Nb2RlKHVuc2lnbmVkIGxpbmUsIHVu
c2lnbmVkIGNvbHVtbikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICBwb3NpdGlvbiA9ICgobGluZSAmIEZhdENvbHVtbk1vZGVMaW5lTWFzaykg
PDwgRmF0Q29sdW1uTW9kZUxpbmVTaGlmdCB8IChjb2x1bW4gJiBGYXRDb2x1bW5Nb2RlQ29sdW1u
TWFzaykpOw0KICAgIH0NCg0KICAgIHZvaWQgZGVjb2RlRmF0TGluZU1vZGUodW5zaWduZWQmIGxp
bmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0DQogICAgew0KICAgICAgICBsaW5lID0gKHBvc2l0
aW9uID4+IEZhdExpbmVNb2RlTGluZVNoaWZ0KSAmIEZhdExpbmVNb2RlTGluZU1hc2s7DQogICAg
ICAgIGNvbHVtbiA9IHBvc2l0aW9uICYgRmF0TGluZU1vZGVDb2x1bW5NYXNrOw0KICAgIH0NCg0K
ICAgIHZvaWQgZGVjb2RlRmF0Q29sdW1uTW9kZSh1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNv
bHVtbikgY29uc3QNCiAgICB7DQogICAgICAgIGxpbmUgPSAocG9zaXRpb24gPj4gRmF0Q29sdW1u
TW9kZUxpbmVTaGlmdCkgJiBGYXRDb2x1bW5Nb2RlTGluZU1hc2s7DQogICAgICAgIGNvbHVtbiA9
IHBvc2l0aW9uICYgRmF0Q29sdW1uTW9kZUNvbHVtbk1hc2s7DQogICAgfQ0KDQogICAgdWludDMy
X3QgaW5zdHJ1Y3Rpb25PZmZzZXQgOiAyNTsNCiAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7
DQogICAgdWludDMyX3QgZGl2b3RQb2ludCA6IDI1Ow0KICAgIHVpbnQzMl90IGVuZE9mZnNldCA6
IDc7DQogICAgdWludDMyX3QgbW9kZSA6IDI7DQogICAgdWludDMyX3QgcG9zaXRpb24gOiAzMDsN
Cn07DQoNCn0gDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVW5saW5rZWRDb2RlQmxvY2suaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVc
XEhhbmRsZXJJbmZvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51bSBj
bGFzcyBIYW5kbGVyVHlwZSB7DQogICAgQ2F0Y2ggPSAwLA0KICAgIEZpbmFsbHkgPSAxLA0KICAg
IFN5bnRoZXNpemVkQ2F0Y2ggPSAyLA0KICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMNCn07DQoN
CmVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsNCiAgICBDYXRjaEhhbmRsZXIsDQogICAgQW55
SGFuZGxlcg0KfTsNCg0Kc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7DQogICAgSGFuZGxlclR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7
IH0NCiAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQ0KDQogICAgY29uc3QgY2hhciogdHlwZU5hbWUoKSBj
b25zdA0KICAgIHsNCiAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsNCiAgICAgICAgY2FzZSBIYW5k
bGVyVHlwZTo6Q2F0Y2g6DQogICAgICAgICAgICByZXR1cm4gImNhdGNoIjsNCiAgICAgICAgY2Fz
ZSBIYW5kbGVyVHlwZTo6RmluYWxseToNCiAgICAgICAgICAgIHJldHVybiAiZmluYWxseSI7DQog
ICAgICAgIGNhc2UgSGFuZGxlclR5cGU6OlN5bnRoZXNpemVkQ2F0Y2g6DQogICAgICAgICAgICBy
ZXR1cm4gInN5bnRoZXNpemVkIGNhdGNoIjsNCiAgICAgICAgY2FzZSBIYW5kbGVyVHlwZTo6U3lu
dGhlc2l6ZWRGaW5hbGx5Og0KICAgICAgICAgICAgcmV0dXJuICJzeW50aGVzaXplZCBmaW5hbGx5
IjsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgfQ0K
ICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQoNCiAgICBib29sIGlzQ2F0Y2hIYW5kbGVy
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQ0KDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlciwgdHlwZW5hbWUgQ29udGFpbmVyPg0KICAgIHN0YXRp
YyBIYW5kbGVyKiBoYW5kbGVyRm9ySW5kZXgoQ29udGFpbmVyJiBleGVwdGlvbkhhbmRsZXJzLCB1
bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikNCiAgICB7DQog
ICAgICAgIGZvciAoYXV0byYgaGFuZGxlciA6IGV4ZXB0aW9uSGFuZGxlcnMpIHsNCiAgICAgICAg
ICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVy
KSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ow0KDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAg
ICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQ0KICAg
ICAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVy
biBudWxscHRyOw0KICAgIH0NCg0KICAgIHVpbnQzMl90IHN0YXJ0Ow0KICAgIHVpbnQzMl90IGVu
ZDsNCiAgICB1aW50MzJfdCB0YXJnZXQ7DQogICAgdWludDMyX3QgdHlwZUJpdHMgOiAyOyANCn07
DQoNCnN0cnVjdCBVbmxpbmtlZEhhbmRsZXJJbmZvIDogcHVibGljIEhhbmRsZXJJbmZvQmFzZSB7
DQogICAgVW5saW5rZWRIYW5kbGVySW5mbygpDQogICAgew0KICAgIH0NCg0KICAgIFVubGlua2Vk
SGFuZGxlckluZm8odWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGVuZCwgdWludDMyX3QgdGFyZ2V0
LCBIYW5kbGVyVHlwZSBoYW5kbGVyVHlwZSkNCiAgICB7DQogICAgICAgIHRoaXMtPnN0YXJ0ID0g
c3RhcnQ7DQogICAgICAgIHRoaXMtPmVuZCA9IGVuZDsNCiAgICAgICAgdGhpcy0+dGFyZ2V0ID0g
dGFyZ2V0Ow0KICAgICAgICBzZXRUeXBlKGhhbmRsZXJUeXBlKTsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgIH0NCn07DQoNCnN0cnVjdCBIYW5kbGVySW5mbyA6IHB1YmxpYyBIYW5kbGVySW5mb0Jh
c2Ugew0KICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxp
bmtlZEluZm8pDQogICAgew0KICAgICAgICBzdGFydCA9IHVubGlua2VkSW5mby5zdGFydDsNCiAg
ICAgICAgZW5kID0gdW5saW5rZWRJbmZvLmVuZDsNCiAgICAgICAgdGFyZ2V0ID0gdW5saW5rZWRJ
bmZvLnRhcmdldDsNCiAgICAgICAgdHlwZUJpdHMgPSB1bmxpbmtlZEluZm8udHlwZUJpdHM7DQog
ICAgfQ0KDQoNCiAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgVW5saW5rZWRIYW5kbGVySW5mbyYg
dW5saW5rZWRJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBs
YWJlbCkNCiAgICB7DQogICAgICAgIGluaXRpYWxpemUodW5saW5rZWRJbmZvKTsNCiAgICAgICAg
bmF0aXZlQ29kZSA9IGxhYmVsOw0KICAgIH0NCg0KICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWc+IG5hdGl2ZUNvZGU7DQojbGluZSAxMjQgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEhhbmRsZXJJbmZv
LmgiDQp9Ow0KDQp9IA0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFVubGlua2VkQ29kZUJsb2NrLmgiDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0
ZWNvZGVcXEluc3RydWN0aW9uU3RyZWFtLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcSW5z
dHJ1Y3Rpb24uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXE9wY29kZS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxKYXZh
U2NyaXB0Q29yZVxcRGVyaXZlZFNvdXJjZXNcXEJ5dGVjb2Rlcy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0Kc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBieXRlY29kZUNoZWNrcG9pbnRDb3VudFRhYmxlW10gPSB7DQogICAgMywNCiAg
ICAyLA0KICAgIDIsDQogICAgMiwNCiAgICAyLA0KICAgIDAsIA0KfTsNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3YXNt
Q2hlY2twb2ludENvdW50VGFibGVbXSA9IHsNCiAgICAwLCANCn07DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAz
MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRl
Y29kZVxcT3Bjb2RlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGxsaW50XFxMTEludE9wY29kZS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0K
DQoNCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGxsaW50XFxMTEludE9wY29kZS5oIg0KDQoNCg0KDQojbGluZSAzOSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxsbGludFxcTExJbnRPcGNv
ZGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxPcGNvZGUuaCINCg0KDQoNCg0K
DQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYnl0ZWNvZGVcXE9wY29kZS5oIg0KY29uc3QgaW50IG51bU9wY29kZUlEcyA9IDE4OSArIDMw
Ow0KI2xpbmUgNjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcYnl0ZWNvZGVcXE9wY29kZS5oIg0KDQpjb25zdGV4cHIgaW50IG51bVdhc21PcGNvZGVJ
RHMgPSAxNzEgKyAzMDsNCg0KDQogICAgZW51bSBPcGNvZGVJRCA6IHVuc2lnbmVkIHsgb3BfaXRl
cmF0b3JfbmV4dCwgb3BfaXRlcmF0b3Jfb3Blbiwgb3BfY2FsbF92YXJhcmdzLCBvcF90YWlsX2Nh
bGxfdmFyYXJncywgb3BfY29uc3RydWN0X3ZhcmFyZ3MsIG9wX2NhdGNoLCBvcF9nZXRfZnJvbV9h
cmd1bWVudHMsIG9wX2NyZWF0ZV90aGlzLCBvcF9jcmVhdGVfcHJvbWlzZSwgb3BfcHV0X3RvX3Nj
b3BlLCBvcF9nZXRfZnJvbV9zY29wZSwgb3BfY3JlYXRlX2dlbmVyYXRvciwgb3BfcHJvZmlsZV90
eXBlLCBvcF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yLCBvcF9nZXRfYXJndW1lbnQsIG9wX3Jlc29s
dmVfc2NvcGUsIG9wX3RvX3RoaXMsIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93LCBvcF9uZXdfb2Jq
ZWN0LCBvcF9uZXdfYXJyYXksIG9wX25ld19hcnJheV93aXRoX3NpemUsIG9wX25ld19hcnJheV9i
dWZmZXIsIG9wX2NvbnN0cnVjdCwgb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBvcF9o
YXNfaW5kZXhlZF9wcm9wZXJ0eSwgb3BfZ2V0X2RpcmVjdF9wbmFtZSwgb3BfY2FsbF9ldmFsLCBv
cF90YWlsX2NhbGwsIG9wX2NhbGwsIG9wX2puZXFfcHRyLCBvcF9wdXRfYnlfdmFsX2RpcmVjdCwg
b3BfcHV0X2J5X3ZhbCwgb3BfZ2V0X3ByaXZhdGVfbmFtZSwgb3BfZ2V0X2J5X3ZhbCwgb3BfcHV0
X2J5X2lkLCBvcF90cnlfZ2V0X2J5X2lkLCBvcF9nZXRfcHJvdG90eXBlX29mLCBvcF9nZXRfYnlf
aWRfZGlyZWN0LCBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcywgb3BfYWRkLCBvcF9tdWwsIG9wX2Rp
diwgb3Bfc3ViLCBvcF9iaXRhbmQsIG9wX2JpdG9yLCBvcF9iaXR4b3IsIG9wX2xzaGlmdCwgb3Bf
cnNoaWZ0LCBvcF9iaXRub3QsIG9wX2dldF9ieV9pZF93aXRoX3RoaXMsIG9wX2dldF9ieV9pZCwg
b3BfaW5fYnlfdmFsLCBvcF9uZWdhdGUsIG9wX3RvX251bWVyaWMsIG9wX3RvX251bWJlciwgb3Bf
dG9fb2JqZWN0LCBvcF9kZWMsIG9wX2luYywgb3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBvcF9pc19v
YmplY3QsIG9wX2lzX29iamVjdF9vcl9udWxsLCBvcF9pc19mdW5jdGlvbiwgb3BfaXNfY29uc3Ry
dWN0b3IsIG9wX2lzX251bWJlciwgb3BfaXNfYm9vbGVhbiwgb3BfaXNfdW5kZWZpbmVkX29yX251
bGwsIG9wX3R5cGVvZl9pc191bmRlZmluZWQsIG9wX2lzX2VtcHR5LCBvcF91bnNpZ25lZCwgb3Bf
bm90LCBvcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUsIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2Us
IG9wX2luc3RhbmNlb2YsIG9wX2luc3RhbmNlb2ZfY3VzdG9tLCBvcF90eXBlb2YsIG9wX2lzX2Nl
bGxfd2l0aF90eXBlLCBvcF90b19zdHJpbmcsIG9wX2luX2J5X2lkLCBvcF9uZXFfbnVsbCwgb3Bf
ZXFfbnVsbCwgb3BfdXJzaGlmdCwgb3BfcG93LCBvcF9tb2QsIG9wX2JlbG93ZXEsIG9wX2JlbG93
LCBvcF9wdXRfYnlfaWRfd2l0aF90aGlzLCBvcF9kZWxfYnlfaWQsIG9wX2dyZWF0ZXJlcSwgb3Bf
Z3JlYXRlciwgb3BfbGVzc2VxLCBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcywgb3BfbGVzcywgb3Bf
ZGVsX2J5X3ZhbCwgb3BfcHV0X2dldHRlcl9ieV9pZCwgb3BfcHV0X3NldHRlcl9ieV9pZCwgb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQsIG9wX3B1dF9nZXR0ZXJfYnlfdmFsLCBvcF9wdXRfc2V0
dGVyX2J5X3ZhbCwgb3BfZGVmaW5lX2RhdGFfcHJvcGVydHksIG9wX2RlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSwgb3Bfam1wLCBvcF9qdHJ1ZSwgb3BfamZhbHNlLCBvcF9qZXFfbnVsbCwgb3Bfam5l
cV9udWxsLCBvcF9qdW5kZWZpbmVkX29yX251bGwsIG9wX2pudW5kZWZpbmVkX29yX251bGwsIG9w
X25zdHJpY3RlcSwgb3BfamVxLCBvcF9qc3RyaWN0ZXEsIG9wX2puZXEsIG9wX2puc3RyaWN0ZXEs
IG9wX2psZXNzLCBvcF9qbGVzc2VxLCBvcF9qZ3JlYXRlciwgb3BfamdyZWF0ZXJlcSwgb3Bfam5s
ZXNzLCBvcF9qbmxlc3NlcSwgb3Bfam5ncmVhdGVyLCBvcF9qbmdyZWF0ZXJlcSwgb3BfamJlbG93
LCBvcF9qYmVsb3dlcSwgb3BfbG9vcF9oaW50LCBvcF9zd2l0Y2hfaW1tLCBvcF9zd2l0Y2hfY2hh
ciwgb3Bfc3dpdGNoX3N0cmluZywgb3BfbmV3X2Z1bmMsIG9wX25ld19mdW5jX2V4cCwgb3BfbmV3
X2dlbmVyYXRvcl9mdW5jLCBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwLCBvcF9uZXdfYXN5bmNf
ZnVuYywgb3BfbmV3X2FzeW5jX2Z1bmNfZXhwLCBvcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMs
IG9wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19leHAsIG9wX3NldF9mdW5jdGlvbl9uYW1lLCBv
cF9zdHJpY3RlcSwgb3BfbmVxLCBvcF9lcSwgb3BfbW92LCBvcF9uZXdfcmVnZXhwLCBvcF9zcHJl
YWQsIG9wX25ld19hcnJheV93aXRoX3NwcmVhZCwgb3BfY2hlY2tfdGR6LCBvcF9yZXQsIG9wX3N0
cmNhdCwgb3BfdG9fcHJpbWl0aXZlLCBvcF90b19wcm9wZXJ0eV9rZXksIG9wX2FyZ3VtZW50X2Nv
dW50LCBvcF9uZXdfZ2VuZXJhdG9yLCBvcF9uZXdfcHJvbWlzZSwgb3BfY3JlYXRlX2FyZ3VtZW50
c19idXR0ZXJmbHksIG9wX3B1dF90b19hcmd1bWVudHMsIG9wX3B1c2hfd2l0aF9zY29wZSwgb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQsIG9wX2NyZWF0ZV9nZW5lcmF0b3JfZnJhbWVfZW52
aXJvbm1lbnQsIG9wX2dldF9wYXJlbnRfc2NvcGUsIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRz
LCBvcF90aHJvdywgb3BfdGhyb3dfc3RhdGljX2Vycm9yLCBvcF9kZWJ1Zywgb3BfZW5kLCBvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50cywgb3BfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMsIG9wX2dl
dF9lbnVtZXJhYmxlX2xlbmd0aCwgb3BfZ2V0X3Njb3BlLCBvcF9oYXNfc3RydWN0dXJlX3Byb3Bl
cnR5LCBvcF9oYXNfb3duX3N0cnVjdHVyZV9wcm9wZXJ0eSwgb3BfaW5fc3RydWN0dXJlX3Byb3Bl
cnR5LCBvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSwgb3BfZW50ZXIsIG9wX2dldF9wcm9wZXJ0eV9l
bnVtZXJhdG9yLCBvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSwgb3BfZW51bWVyYXRvcl9n
ZW5lcmljX3BuYW1lLCBvcF90b19pbmRleF9zdHJpbmcsIG9wX3VucmVhY2hhYmxlLCBvcF9jcmVh
dGVfcmVzdCwgb3BfZ2V0X3Jlc3RfbGVuZ3RoLCBvcF93aWRlMzIsIG9wX2lzX2JpZ19pbnQsIG9w
X3lpZWxkLCBvcF9jaGVja190cmFwcywgb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlLCBv
cF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCwgb3BfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3Rpbmdf
ZnVuY19kZWNsX2luX2V2YWwsIG9wX3dpZGUxNiwgb3BfcHV0X2ludGVybmFsX2ZpZWxkLCBvcF9u
b3AsIG9wX3N1cGVyX3NhbXBsZXJfYmVnaW4sIG9wX3N1cGVyX3NhbXBsZXJfZW5kLCAgbGxpbnRf
cHJvZ3JhbV9wcm9sb2d1ZSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSwgbGxpbnRfbW9kdWxlX3Byb2dy
YW1fcHJvbG9ndWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCBsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaywgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbGxpbnRf
Z2VuZXJpY19yZXR1cm5fcG9pbnQsIGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xp
bmUsIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUsIGxsaW50X25hdGl2ZV9jYWxs
X3RyYW1wb2xpbmUsIGxsaW50X25hdGl2ZV9jb25zdHJ1Y3RfdHJhbXBvbGluZSwgbGxpbnRfaW50
ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9j
b25zdHJ1Y3RfdHJhbXBvbGluZSwgY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2Fs
bF90cmFtcG9saW5lLCBjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsIGZ1enplcl9yZXR1
cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uLCBvcF9jYWxs
X3JldHVybl9sb2NhdGlvbiwgb3BfY29uc3RydWN0X3JldHVybl9sb2NhdGlvbiwgb3BfY2FsbF92
YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uLCBvcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93X3Jl
dHVybl9sb2NhdGlvbiwgb3BfZ2V0X2J5X2lkX3JldHVybl9sb2NhdGlvbiwgb3BfZ2V0X2J5X3Zh
bF9yZXR1cm5fbG9jYXRpb24sIG9wX3B1dF9ieV9pZF9yZXR1cm5fbG9jYXRpb24sIG9wX3B1dF9i
eV92YWxfcmV0dXJuX2xvY2F0aW9uLCBvcF9pdGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbiwg
b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb24sIHdhc21fZnVuY3Rpb25fcHJvbG9ndWUs
IHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCB9Ow0KICAgIGVudW0gV2FzbU9wY29kZUlE
IDogdW5zaWduZWQgeyB3YXNtX2kzMl9hZGQsIHdhc21faTMyX3N1Yiwgd2FzbV9pMzJfbXVsLCB3
YXNtX2kzMl9kaXZfcywgd2FzbV9pMzJfZGl2X3UsIHdhc21faTMyX3JlbV9zLCB3YXNtX2kzMl9y
ZW1fdSwgd2FzbV9pMzJfYW5kLCB3YXNtX2kzMl9vciwgd2FzbV9pMzJfeG9yLCB3YXNtX2kzMl9z
aGwsIHdhc21faTMyX3Nocl91LCB3YXNtX2kzMl9zaHJfcywgd2FzbV9pMzJfcm90ciwgd2FzbV9p
MzJfcm90bCwgd2FzbV9pMzJfZXEsIHdhc21faTMyX25lLCB3YXNtX2kzMl9sdF9zLCB3YXNtX2kz
Ml9sZV9zLCB3YXNtX2kzMl9sdF91LCB3YXNtX2kzMl9sZV91LCB3YXNtX2kzMl9ndF9zLCB3YXNt
X2kzMl9nZV9zLCB3YXNtX2kzMl9ndF91LCB3YXNtX2kzMl9nZV91LCB3YXNtX2kzMl9jbHosIHdh
c21faTMyX2N0eiwgd2FzbV9pMzJfcG9wY250LCB3YXNtX2kzMl9lcXosIHdhc21faTY0X2FkZCwg
d2FzbV9pNjRfc3ViLCB3YXNtX2k2NF9tdWwsIHdhc21faTY0X2Rpdl9zLCB3YXNtX2k2NF9kaXZf
dSwgd2FzbV9pNjRfcmVtX3MsIHdhc21faTY0X3JlbV91LCB3YXNtX2k2NF9hbmQsIHdhc21faTY0
X29yLCB3YXNtX2k2NF94b3IsIHdhc21faTY0X3NobCwgd2FzbV9pNjRfc2hyX3UsIHdhc21faTY0
X3Nocl9zLCB3YXNtX2k2NF9yb3RyLCB3YXNtX2k2NF9yb3RsLCB3YXNtX2k2NF9lcSwgd2FzbV9p
NjRfbmUsIHdhc21faTY0X2x0X3MsIHdhc21faTY0X2xlX3MsIHdhc21faTY0X2x0X3UsIHdhc21f
aTY0X2xlX3UsIHdhc21faTY0X2d0X3MsIHdhc21faTY0X2dlX3MsIHdhc21faTY0X2d0X3UsIHdh
c21faTY0X2dlX3UsIHdhc21faTY0X2Nseiwgd2FzbV9pNjRfY3R6LCB3YXNtX2k2NF9wb3BjbnQs
IHdhc21faTY0X2Vxeiwgd2FzbV9mMzJfYWRkLCB3YXNtX2YzMl9zdWIsIHdhc21fZjMyX211bCwg
d2FzbV9mMzJfZGl2LCB3YXNtX2YzMl9taW4sIHdhc21fZjMyX21heCwgd2FzbV9mMzJfYWJzLCB3
YXNtX2YzMl9uZWcsIHdhc21fZjMyX2NvcHlzaWduLCB3YXNtX2YzMl9jZWlsLCB3YXNtX2YzMl9m
bG9vciwgd2FzbV9mMzJfdHJ1bmMsIHdhc21fZjMyX25lYXJlc3QsIHdhc21fZjMyX3NxcnQsIHdh
c21fZjMyX2VxLCB3YXNtX2YzMl9uZSwgd2FzbV9mMzJfbHQsIHdhc21fZjMyX2xlLCB3YXNtX2Yz
Ml9ndCwgd2FzbV9mMzJfZ2UsIHdhc21fZjY0X2FkZCwgd2FzbV9mNjRfc3ViLCB3YXNtX2Y2NF9t
dWwsIHdhc21fZjY0X2Rpdiwgd2FzbV9mNjRfbWluLCB3YXNtX2Y2NF9tYXgsIHdhc21fZjY0X2Fi
cywgd2FzbV9mNjRfbmVnLCB3YXNtX2Y2NF9jb3B5c2lnbiwgd2FzbV9mNjRfY2VpbCwgd2FzbV9m
NjRfZmxvb3IsIHdhc21fZjY0X3RydW5jLCB3YXNtX2Y2NF9uZWFyZXN0LCB3YXNtX2Y2NF9zcXJ0
LCB3YXNtX2Y2NF9lcSwgd2FzbV9mNjRfbmUsIHdhc21fZjY0X2x0LCB3YXNtX2Y2NF9sZSwgd2Fz
bV9mNjRfZ3QsIHdhc21fZjY0X2dlLCB3YXNtX2kzMl90cnVuY19zX2YzMiwgd2FzbV9pMzJfdHJ1
bmNfc19mNjQsIHdhc21faTMyX3RydW5jX3VfZjMyLCB3YXNtX2kzMl90cnVuY191X2Y2NCwgd2Fz
bV9pMzJfd3JhcF9pNjQsIHdhc21faTY0X3RydW5jX3NfZjMyLCB3YXNtX2k2NF90cnVuY19zX2Y2
NCwgd2FzbV9pNjRfdHJ1bmNfdV9mMzIsIHdhc21faTY0X3RydW5jX3VfZjY0LCB3YXNtX2k2NF9l
eHRlbmRfc19pMzIsIHdhc21faTY0X2V4dGVuZF91X2kzMiwgd2FzbV9mMzJfY29udmVydF9zX2kz
Miwgd2FzbV9mMzJfY29udmVydF91X2kzMiwgd2FzbV9mMzJfY29udmVydF9zX2k2NCwgd2FzbV9m
MzJfY29udmVydF91X2k2NCwgd2FzbV9mMzJfZGVtb3RlX2Y2NCwgd2FzbV9mMzJfcmVpbnRlcnBy
ZXRfaTMyLCB3YXNtX2Y2NF9jb252ZXJ0X3NfaTMyLCB3YXNtX2Y2NF9jb252ZXJ0X3VfaTMyLCB3
YXNtX2Y2NF9jb252ZXJ0X3NfaTY0LCB3YXNtX2Y2NF9jb252ZXJ0X3VfaTY0LCB3YXNtX2Y2NF9w
cm9tb3RlX2YzMiwgd2FzbV9mNjRfcmVpbnRlcnByZXRfaTY0LCB3YXNtX2kzMl9yZWludGVycHJl
dF9mMzIsIHdhc21faTY0X3JlaW50ZXJwcmV0X2Y2NCwgd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0
aF90cmFtcG9saW5lLCB3YXNtX3dpZGUxNiwgd2FzbV93aWRlMzIsIHdhc21fZW50ZXIsIHdhc21f
bm9wLCB3YXNtX2xvb3BfaGludCwgd2FzbV9tb3YsIHdhc21fanRydWUsIHdhc21famZhbHNlLCB3
YXNtX2ptcCwgd2FzbV9yZXQsIHdhc21fc3dpdGNoLCB3YXNtX3VucmVhY2hhYmxlLCB3YXNtX3Jl
dF92b2lkLCB3YXNtX2Ryb3Bfa2VlcCwgd2FzbV9yZWZfaXNfbnVsbCwgd2FzbV9yZWZfZnVuYywg
d2FzbV9nZXRfZ2xvYmFsLCB3YXNtX3NldF9nbG9iYWwsIHdhc21fc2V0X2dsb2JhbF9yZWYsIHdh
c21fZ2V0X2dsb2JhbF9wb3J0YWJsZV9iaW5kaW5nLCB3YXNtX3NldF9nbG9iYWxfcG9ydGFibGVf
YmluZGluZywgd2FzbV9zZXRfZ2xvYmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5nLCB3YXNtX3RhYmxl
X2dldCwgd2FzbV90YWJsZV9zZXQsIHdhc21fdGFibGVfc2l6ZSwgd2FzbV90YWJsZV9ncm93LCB3
YXNtX3RhYmxlX2ZpbGwsIHdhc21fY2FsbCwgd2FzbV9jYWxsX25vX3Rscywgd2FzbV9jYWxsX2lu
ZGlyZWN0LCB3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCB3YXNtX2N1cnJlbnRfbWVtb3J5LCB3
YXNtX2dyb3dfbWVtb3J5LCB3YXNtX3NlbGVjdCwgd2FzbV9sb2FkOF91LCB3YXNtX2xvYWQxNl91
LCB3YXNtX2xvYWQzMl91LCB3YXNtX2xvYWQ2NF91LCB3YXNtX2kzMl9sb2FkOF9zLCB3YXNtX2k2
NF9sb2FkOF9zLCB3YXNtX2kzMl9sb2FkMTZfcywgd2FzbV9pNjRfbG9hZDE2X3MsIHdhc21faTY0
X2xvYWQzMl9zLCB3YXNtX3N0b3JlOCwgd2FzbV9zdG9yZTE2LCB3YXNtX3N0b3JlMzIsIHdhc21f
c3RvcmU2NCwgfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXE9wY29k
ZS5oIg0KDQpleHRlcm4gY29uc3QgdW5zaWduZWQgb3Bjb2RlTGVuZ3Roc1tdOw0KZXh0ZXJuIGNv
bnN0IHVuc2lnbmVkIHdhc21PcGNvZGVMZW5ndGhzW107DQoNCg0KICAgIGNvbnN0IGludCBvcF9p
dGVyYXRvcl9uZXh0X2xlbmd0aCA9IDg7IGNvbnN0IGludCBvcF9pdGVyYXRvcl9vcGVuX2xlbmd0
aCA9IDc7IGNvbnN0IGludCBvcF9jYWxsX3ZhcmFyZ3NfbGVuZ3RoID0gODsgY29uc3QgaW50IG9w
X3RhaWxfY2FsbF92YXJhcmdzX2xlbmd0aCA9IDg7IGNvbnN0IGludCBvcF9jb25zdHJ1Y3RfdmFy
YXJnc19sZW5ndGggPSA4OyBjb25zdCBpbnQgb3BfY2F0Y2hfbGVuZ3RoID0gNDsgY29uc3QgaW50
IG9wX2dldF9mcm9tX2FyZ3VtZW50c19sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfY3JlYXRlX3Ro
aXNfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2NyZWF0ZV9wcm9taXNlX2xlbmd0aCA9IDU7IGNv
bnN0IGludCBvcF9wdXRfdG9fc2NvcGVfbGVuZ3RoID0gODsgY29uc3QgaW50IG9wX2dldF9mcm9t
X3Njb3BlX2xlbmd0aCA9IDg7IGNvbnN0IGludCBvcF9jcmVhdGVfZ2VuZXJhdG9yX2xlbmd0aCA9
IDQ7IGNvbnN0IGludCBvcF9wcm9maWxlX3R5cGVfbGVuZ3RoID0gNzsgY29uc3QgaW50IG9wX2Ny
ZWF0ZV9hc3luY19nZW5lcmF0b3JfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2dldF9hcmd1bWVu
dF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfcmVzb2x2ZV9zY29wZV9sZW5ndGggPSA3OyBjb25z
dCBpbnQgb3BfdG9fdGhpc19sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3dfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX25ld19vYmplY3RfbGVuZ3RoID0gNDsgY29u
c3QgaW50IG9wX25ld19hcnJheV9sZW5ndGggPSA2OyBjb25zdCBpbnQgb3BfbmV3X2FycmF5X3dp
dGhfc2l6ZV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfbmV3X2FycmF5X2J1ZmZlcl9sZW5ndGgg
PSA1OyBjb25zdCBpbnQgb3BfY29uc3RydWN0X2xlbmd0aCA9IDY7IGNvbnN0IGludCBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfbGVuZ3RoID0gODsgY29uc3QgaW50IG9wX2hhc19pbmRl
eGVkX3Byb3BlcnR5X2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9nZXRfZGlyZWN0X3BuYW1lX2xl
bmd0aCA9IDc7IGNvbnN0IGludCBvcF9jYWxsX2V2YWxfbGVuZ3RoID0gNzsgY29uc3QgaW50IG9w
X3RhaWxfY2FsbF9sZW5ndGggPSA2OyBjb25zdCBpbnQgb3BfY2FsbF9sZW5ndGggPSA2OyBjb25z
dCBpbnQgb3Bfam5lcV9wdHJfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX3B1dF9ieV92YWxfZGly
ZWN0X2xlbmd0aCA9IDY7IGNvbnN0IGludCBvcF9wdXRfYnlfdmFsX2xlbmd0aCA9IDY7IGNvbnN0
IGludCBvcF9nZXRfcHJpdmF0ZV9uYW1lX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9nZXRfYnlf
dmFsX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9wdXRfYnlfaWRfbGVuZ3RoID0gNjsgY29uc3Qg
aW50IG9wX3RyeV9nZXRfYnlfaWRfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2dldF9wcm90b3R5
cGVfb2ZfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2dldF9ieV9pZF9kaXJlY3RfbGVuZ3RoID0g
NTsgY29uc3QgaW50IG9wX2dldF9ieV92YWxfd2l0aF90aGlzX2xlbmd0aCA9IDY7IGNvbnN0IGlu
dCBvcF9hZGRfbGVuZ3RoID0gNjsgY29uc3QgaW50IG9wX211bF9sZW5ndGggPSA2OyBjb25zdCBp
bnQgb3BfZGl2X2xlbmd0aCA9IDY7IGNvbnN0IGludCBvcF9zdWJfbGVuZ3RoID0gNjsgY29uc3Qg
aW50IG9wX2JpdGFuZF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfYml0b3JfbGVuZ3RoID0gNTsg
Y29uc3QgaW50IG9wX2JpdHhvcl9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfbHNoaWZ0X2xlbmd0
aCA9IDU7IGNvbnN0IGludCBvcF9yc2hpZnRfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2JpdG5v
dF9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19sZW5ndGggPSA2
OyBjb25zdCBpbnQgb3BfZ2V0X2J5X2lkX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9pbl9ieV92
YWxfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX25lZ2F0ZV9sZW5ndGggPSA1OyBjb25zdCBpbnQg
b3BfdG9fbnVtZXJpY19sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfdG9fbnVtYmVyX2xlbmd0aCA9
IDQ7IGNvbnN0IGludCBvcF90b19vYmplY3RfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2RlY19s
ZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaW5jX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9nZXRf
aW50ZXJuYWxfZmllbGRfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX2lzX29iamVjdF9sZW5ndGgg
PSAzOyBjb25zdCBpbnQgb3BfaXNfb2JqZWN0X29yX251bGxfbGVuZ3RoID0gMzsgY29uc3QgaW50
IG9wX2lzX2Z1bmN0aW9uX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9pc19jb25zdHJ1Y3Rvcl9s
ZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaXNfbnVtYmVyX2xlbmd0aCA9IDM7IGNvbnN0IGludCBv
cF9pc19ib29sZWFuX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9pc191bmRlZmluZWRfb3JfbnVs
bF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfdHlwZW9mX2lzX3VuZGVmaW5lZF9sZW5ndGggPSAz
OyBjb25zdCBpbnQgb3BfaXNfZW1wdHlfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX3Vuc2lnbmVk
X2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9ub3RfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2lk
ZW50aXR5X3dpdGhfcHJvZmlsZV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3Bfb3ZlcnJpZGVzX2hh
c19pbnN0YW5jZV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfaW5zdGFuY2VvZl9sZW5ndGggPSA0
OyBjb25zdCBpbnQgb3BfaW5zdGFuY2VvZl9jdXN0b21fbGVuZ3RoID0gNTsgY29uc3QgaW50IG9w
X3R5cGVvZl9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaXNfY2VsbF93aXRoX3R5cGVfbGVuZ3Ro
ID0gNDsgY29uc3QgaW50IG9wX3RvX3N0cmluZ19sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfaW5f
YnlfaWRfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25lcV9udWxsX2xlbmd0aCA9IDM7IGNvbnN0
IGludCBvcF9lcV9udWxsX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF91cnNoaWZ0X2xlbmd0aCA9
IDQ7IGNvbnN0IGludCBvcF9wb3dfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX21vZF9sZW5ndGgg
PSA0OyBjb25zdCBpbnQgb3BfYmVsb3dlcV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfYmVsb3df
bGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3B1dF9ieV9pZF93aXRoX3RoaXNfbGVuZ3RoID0gNjsg
Y29uc3QgaW50IG9wX2RlbF9ieV9pZF9sZW5ndGggPSA1OyBjb25zdCBpbnQgb3BfZ3JlYXRlcmVx
X2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9ncmVhdGVyX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBv
cF9sZXNzZXFfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3B1dF9ieV92YWxfd2l0aF90aGlzX2xl
bmd0aCA9IDY7IGNvbnN0IGludCBvcF9sZXNzX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9kZWxf
YnlfdmFsX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9wdXRfZ2V0dGVyX2J5X2lkX2xlbmd0aCA9
IDU7IGNvbnN0IGludCBvcF9wdXRfc2V0dGVyX2J5X2lkX2xlbmd0aCA9IDU7IGNvbnN0IGludCBv
cF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZF9sZW5ndGggPSA2OyBjb25zdCBpbnQgb3BfcHV0X2dl
dHRlcl9ieV92YWxfbGVuZ3RoID0gNTsgY29uc3QgaW50IG9wX3B1dF9zZXR0ZXJfYnlfdmFsX2xl
bmd0aCA9IDU7IGNvbnN0IGludCBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eV9sZW5ndGggPSA1OyBj
b25zdCBpbnQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5X2xlbmd0aCA9IDY7IGNvbnN0IGlu
dCBvcF9qbXBfbGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX2p0cnVlX2xlbmd0aCA9IDM7IGNvbnN0
IGludCBvcF9qZmFsc2VfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2plcV9udWxsX2xlbmd0aCA9
IDM7IGNvbnN0IGludCBvcF9qbmVxX251bGxfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX2p1bmRl
ZmluZWRfb3JfbnVsbF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3Bfam51bmRlZmluZWRfb3JfbnVs
bF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfbnN0cmljdGVxX2xlbmd0aCA9IDQ7IGNvbnN0IGlu
dCBvcF9qZXFfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2pzdHJpY3RlcV9sZW5ndGggPSA0OyBj
b25zdCBpbnQgb3Bfam5lcV9sZW5ndGggPSA0OyBjb25zdCBpbnQgb3Bfam5zdHJpY3RlcV9sZW5n
dGggPSA0OyBjb25zdCBpbnQgb3Bfamxlc3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2psZXNz
ZXFfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2pncmVhdGVyX2xlbmd0aCA9IDQ7IGNvbnN0IGlu
dCBvcF9qZ3JlYXRlcmVxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9qbmxlc3NfbGVuZ3RoID0g
NDsgY29uc3QgaW50IG9wX2pubGVzc2VxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9qbmdyZWF0
ZXJfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2puZ3JlYXRlcmVxX2xlbmd0aCA9IDQ7IGNvbnN0
IGludCBvcF9qYmVsb3dfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2piZWxvd2VxX2xlbmd0aCA9
IDQ7IGNvbnN0IGludCBvcF9sb29wX2hpbnRfbGVuZ3RoID0gMTsgY29uc3QgaW50IG9wX3N3aXRj
aF9pbW1fbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX3N3aXRjaF9jaGFyX2xlbmd0aCA9IDQ7IGNv
bnN0IGludCBvcF9zd2l0Y2hfc3RyaW5nX2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9uZXdfZnVu
Y19sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfbmV3X2Z1bmNfZXhwX2xlbmd0aCA9IDQ7IGNvbnN0
IGludCBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25ld19n
ZW5lcmF0b3JfZnVuY19leHBfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25ld19hc3luY19mdW5j
X2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9uZXdfYXN5bmNfZnVuY19leHBfbGVuZ3RoID0gNDsg
Y29uc3QgaW50IG9wX25ld19hc3luY19nZW5lcmF0b3JfZnVuY19sZW5ndGggPSA0OyBjb25zdCBp
bnQgb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jX2V4cF9sZW5ndGggPSA0OyBjb25zdCBpbnQg
b3Bfc2V0X2Z1bmN0aW9uX25hbWVfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX3N0cmljdGVxX2xl
bmd0aCA9IDQ7IGNvbnN0IGludCBvcF9uZXFfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2VxX2xl
bmd0aCA9IDQ7IGNvbnN0IGludCBvcF9tb3ZfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX25ld19y
ZWdleHBfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX3NwcmVhZF9sZW5ndGggPSAzOyBjb25zdCBp
bnQgb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkX2xlbmd0aCA9IDU7IGNvbnN0IGludCBvcF9jaGVj
a190ZHpfbGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX3JldF9sZW5ndGggPSAyOyBjb25zdCBpbnQg
b3Bfc3RyY2F0X2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF90b19wcmltaXRpdmVfbGVuZ3RoID0g
MzsgY29uc3QgaW50IG9wX3RvX3Byb3BlcnR5X2tleV9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3Bf
YXJndW1lbnRfY291bnRfbGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX25ld19nZW5lcmF0b3JfbGVu
Z3RoID0gMjsgY29uc3QgaW50IG9wX25ld19wcm9taXNlX2xlbmd0aCA9IDM7IGNvbnN0IGludCBv
cF9jcmVhdGVfYXJndW1lbnRzX2J1dHRlcmZseV9sZW5ndGggPSAyOyBjb25zdCBpbnQgb3BfcHV0
X3RvX2FyZ3VtZW50c19sZW5ndGggPSA0OyBjb25zdCBpbnQgb3BfcHVzaF93aXRoX3Njb3BlX2xl
bmd0aCA9IDQ7IGNvbnN0IGludCBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudF9sZW5ndGgg
PSA1OyBjb25zdCBpbnQgb3BfY3JlYXRlX2dlbmVyYXRvcl9mcmFtZV9lbnZpcm9ubWVudF9sZW5n
dGggPSA1OyBjb25zdCBpbnQgb3BfZ2V0X3BhcmVudF9zY29wZV9sZW5ndGggPSAzOyBjb25zdCBp
bnQgb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHNfbGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX3Ro
cm93X2xlbmd0aCA9IDI7IGNvbnN0IGludCBvcF90aHJvd19zdGF0aWNfZXJyb3JfbGVuZ3RoID0g
MzsgY29uc3QgaW50IG9wX2RlYnVnX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9lbmRfbGVuZ3Ro
ID0gMjsgY29uc3QgaW50IG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzX2xlbmd0aCA9IDM7IGNv
bnN0IGludCBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50c19sZW5ndGggPSAyOyBjb25zdCBpbnQg
b3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9nZXRfc2Nv
cGVfbGVuZ3RoID0gMjsgY29uc3QgaW50IG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHlfbGVuZ3Ro
ID0gNTsgY29uc3QgaW50IG9wX2hhc19vd25fc3RydWN0dXJlX3Byb3BlcnR5X2xlbmd0aCA9IDU7
IGNvbnN0IGludCBvcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHlfbGVuZ3RoID0gNTsgY29uc3QgaW50
IG9wX2hhc19nZW5lcmljX3Byb3BlcnR5X2xlbmd0aCA9IDQ7IGNvbnN0IGludCBvcF9lbnRlcl9s
ZW5ndGggPSAxOyBjb25zdCBpbnQgb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3JfbGVuZ3RoID0g
MzsgY29uc3QgaW50IG9wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lX2xlbmd0aCA9IDQ7IGNv
bnN0IGludCBvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWVfbGVuZ3RoID0gNDsgY29uc3QgaW50
IG9wX3RvX2luZGV4X3N0cmluZ19sZW5ndGggPSAzOyBjb25zdCBpbnQgb3BfdW5yZWFjaGFibGVf
bGVuZ3RoID0gMTsgY29uc3QgaW50IG9wX2NyZWF0ZV9yZXN0X2xlbmd0aCA9IDQ7IGNvbnN0IGlu
dCBvcF9nZXRfcmVzdF9sZW5ndGhfbGVuZ3RoID0gMzsgY29uc3QgaW50IG9wX3dpZGUzMl9sZW5n
dGggPSAxOyBjb25zdCBpbnQgb3BfaXNfYmlnX2ludF9sZW5ndGggPSAzOyBjb25zdCBpbnQgb3Bf
eWllbGRfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX2NoZWNrX3RyYXBzX2xlbmd0aCA9IDE7IGNv
bnN0IGludCBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWVfbGVuZ3RoID0gMjsgY29uc3Qg
aW50IG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsX2xlbmd0aCA9IDM7IGNvbnN0IGludCBvcF9y
ZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbF9sZW5ndGggPSA0OyBj
b25zdCBpbnQgb3Bfd2lkZTE2X2xlbmd0aCA9IDE7IGNvbnN0IGludCBvcF9wdXRfaW50ZXJuYWxf
ZmllbGRfbGVuZ3RoID0gNDsgY29uc3QgaW50IG9wX25vcF9sZW5ndGggPSAxOyBjb25zdCBpbnQg
b3Bfc3VwZXJfc2FtcGxlcl9iZWdpbl9sZW5ndGggPSAxOyBjb25zdCBpbnQgb3Bfc3VwZXJfc2Ft
cGxlcl9lbmRfbGVuZ3RoID0gMTsgIGNvbnN0IGludCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlX2xl
bmd0aCA9IDE7IGNvbnN0IGludCBsbGludF9ldmFsX3Byb2xvZ3VlX2xlbmd0aCA9IDE7IGNvbnN0
IGludCBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZV9sZW5ndGggPSAxOyBjb25zdCBpbnQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWVfbGVuZ3RoID0gMTsgY29uc3QgaW50IGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWVfbGVuZ3RoID0gMTsgY29uc3QgaW50
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX2xlbmd0aCA9IDE7IGNvbnN0IGlu
dCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX2xlbmd0aCA9IDE7IGNv
bnN0IGludCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludF9sZW5ndGggPSAxOyBjb25zdCBpbnQg
bGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZV9sZW5ndGggPSAxOyBjb25zdCBp
bnQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZV9sZW5ndGggPSAxOyBjb25zdCBp
bnQgbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZV9sZW5ndGggPSAxOyBjb25zdCBpbnQgbGxp
bnRfbmF0aXZlX2NvbnN0cnVjdF90cmFtcG9saW5lX2xlbmd0aCA9IDE7IGNvbnN0IGludCBsbGlu
dF9pbnRlcm5hbF9mdW5jdGlvbl9jYWxsX3RyYW1wb2xpbmVfbGVuZ3RoID0gMTsgY29uc3QgaW50
IGxsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lX2xlbmd0aCA9IDE7
IGNvbnN0IGludCBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xp
bmVfbGVuZ3RoID0gMTsgY29uc3QgaW50IGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZV9s
ZW5ndGggPSAxOyBjb25zdCBpbnQgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludF9s
ZW5ndGggPSAxOyBjb25zdCBpbnQgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25fbGVuZ3RoID0gMTsg
Y29uc3QgaW50IG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uX2xlbmd0aCA9IDE7IGNvbnN0IGludCBv
cF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uX2xlbmd0aCA9IDE7IGNvbnN0IGludCBvcF9jYWxs
X3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb25fbGVuZ3RoID0gMTsgY29uc3QgaW50IG9wX2Nv
bnN0cnVjdF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uX2xlbmd0aCA9IDE7IGNvbnN0IGlu
dCBvcF9nZXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uX2xlbmd0aCA9IDE7IGNvbnN0IGludCBvcF9n
ZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbl9sZW5ndGggPSAxOyBjb25zdCBpbnQgb3BfcHV0X2J5
X2lkX3JldHVybl9sb2NhdGlvbl9sZW5ndGggPSAxOyBjb25zdCBpbnQgb3BfcHV0X2J5X3ZhbF9y
ZXR1cm5fbG9jYXRpb25fbGVuZ3RoID0gMTsgY29uc3QgaW50IG9wX2l0ZXJhdG9yX29wZW5fcmV0
dXJuX2xvY2F0aW9uX2xlbmd0aCA9IDE7IGNvbnN0IGludCBvcF9pdGVyYXRvcl9uZXh0X3JldHVy
bl9sb2NhdGlvbl9sZW5ndGggPSAxOyBjb25zdCBpbnQgd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9s
ZW5ndGggPSAxOyBjb25zdCBpbnQgd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHNfbGVuZ3Ro
ID0gMTs7DQogICAgY29uc3QgaW50IHdhc21faTMyX2FkZF9sZW5ndGggPSA0OyBjb25zdCBpbnQg
d2FzbV9pMzJfc3ViX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2kzMl9tdWxfbGVuZ3RoID0g
NDsgY29uc3QgaW50IHdhc21faTMyX2Rpdl9zX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2kz
Ml9kaXZfdV9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pMzJfcmVtX3NfbGVuZ3RoID0gNDsg
Y29uc3QgaW50IHdhc21faTMyX3JlbV91X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2kzMl9h
bmRfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX29yX2xlbmd0aCA9IDQ7IGNvbnN0IGlu
dCB3YXNtX2kzMl94b3JfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX3NobF9sZW5ndGgg
PSA0OyBjb25zdCBpbnQgd2FzbV9pMzJfc2hyX3VfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21f
aTMyX3Nocl9zX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2kzMl9yb3RyX2xlbmd0aCA9IDQ7
IGNvbnN0IGludCB3YXNtX2kzMl9yb3RsX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2kzMl9l
cV9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pMzJfbmVfbGVuZ3RoID0gNDsgY29uc3QgaW50
IHdhc21faTMyX2x0X3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX2xlX3NfbGVuZ3Ro
ID0gNDsgY29uc3QgaW50IHdhc21faTMyX2x0X3VfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21f
aTMyX2xlX3VfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX2d0X3NfbGVuZ3RoID0gNDsg
Y29uc3QgaW50IHdhc21faTMyX2dlX3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX2d0
X3VfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX2dlX3VfbGVuZ3RoID0gNDsgY29uc3Qg
aW50IHdhc21faTMyX2Nsel9sZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9pMzJfY3R6X2xlbmd0
aCA9IDM7IGNvbnN0IGludCB3YXNtX2kzMl9wb3BjbnRfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdh
c21faTMyX2Vxel9sZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9pNjRfYWRkX2xlbmd0aCA9IDQ7
IGNvbnN0IGludCB3YXNtX2k2NF9zdWJfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTY0X211
bF9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfZGl2X3NfbGVuZ3RoID0gNDsgY29uc3Qg
aW50IHdhc21faTY0X2Rpdl91X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2k2NF9yZW1fc19s
ZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfcmVtX3VfbGVuZ3RoID0gNDsgY29uc3QgaW50
IHdhc21faTY0X2FuZF9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfb3JfbGVuZ3RoID0g
NDsgY29uc3QgaW50IHdhc21faTY0X3hvcl9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRf
c2hsX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2k2NF9zaHJfdV9sZW5ndGggPSA0OyBjb25z
dCBpbnQgd2FzbV9pNjRfc2hyX3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTY0X3JvdHJf
bGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTY0X3JvdGxfbGVuZ3RoID0gNDsgY29uc3QgaW50
IHdhc21faTY0X2VxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2k2NF9uZV9sZW5ndGggPSA0
OyBjb25zdCBpbnQgd2FzbV9pNjRfbHRfc19sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRf
bGVfc19sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfbHRfdV9sZW5ndGggPSA0OyBjb25z
dCBpbnQgd2FzbV9pNjRfbGVfdV9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfZ3Rfc19s
ZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfZ2Vfc19sZW5ndGggPSA0OyBjb25zdCBpbnQg
d2FzbV9pNjRfZ3RfdV9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfZ2VfdV9sZW5ndGgg
PSA0OyBjb25zdCBpbnQgd2FzbV9pNjRfY2x6X2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2k2
NF9jdHpfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21faTY0X3BvcGNudF9sZW5ndGggPSAzOyBj
b25zdCBpbnQgd2FzbV9pNjRfZXF6X2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2YzMl9hZGRf
bGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21fZjMyX3N1Yl9sZW5ndGggPSA0OyBjb25zdCBpbnQg
d2FzbV9mMzJfbXVsX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2YzMl9kaXZfbGVuZ3RoID0g
NDsgY29uc3QgaW50IHdhc21fZjMyX21pbl9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9mMzJf
bWF4X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2YzMl9hYnNfbGVuZ3RoID0gMzsgY29uc3Qg
aW50IHdhc21fZjMyX25lZ19sZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9mMzJfY29weXNpZ25f
bGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21fZjMyX2NlaWxfbGVuZ3RoID0gMzsgY29uc3QgaW50
IHdhc21fZjMyX2Zsb29yX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2YzMl90cnVuY19sZW5n
dGggPSAzOyBjb25zdCBpbnQgd2FzbV9mMzJfbmVhcmVzdF9sZW5ndGggPSAzOyBjb25zdCBpbnQg
d2FzbV9mMzJfc3FydF9sZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9mMzJfZXFfbGVuZ3RoID0g
NDsgY29uc3QgaW50IHdhc21fZjMyX25lX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2YzMl9s
dF9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9mMzJfbGVfbGVuZ3RoID0gNDsgY29uc3QgaW50
IHdhc21fZjMyX2d0X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2YzMl9nZV9sZW5ndGggPSA0
OyBjb25zdCBpbnQgd2FzbV9mNjRfYWRkX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2Y2NF9z
dWJfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21fZjY0X211bF9sZW5ndGggPSA0OyBjb25zdCBp
bnQgd2FzbV9mNjRfZGl2X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2Y2NF9taW5fbGVuZ3Ro
ID0gNDsgY29uc3QgaW50IHdhc21fZjY0X21heF9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9m
NjRfYWJzX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2Y2NF9uZWdfbGVuZ3RoID0gMzsgY29u
c3QgaW50IHdhc21fZjY0X2NvcHlzaWduX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2Y2NF9j
ZWlsX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2Y2NF9mbG9vcl9sZW5ndGggPSAzOyBjb25z
dCBpbnQgd2FzbV9mNjRfdHJ1bmNfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fZjY0X25lYXJl
c3RfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fZjY0X3NxcnRfbGVuZ3RoID0gMzsgY29uc3Qg
aW50IHdhc21fZjY0X2VxX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2Y2NF9uZV9sZW5ndGgg
PSA0OyBjb25zdCBpbnQgd2FzbV9mNjRfbHRfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21fZjY0
X2xlX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2Y2NF9ndF9sZW5ndGggPSA0OyBjb25zdCBp
bnQgd2FzbV9mNjRfZ2VfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX3RydW5jX3NfZjMy
X2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2kzMl90cnVuY19zX2Y2NF9sZW5ndGggPSAzOyBj
b25zdCBpbnQgd2FzbV9pMzJfdHJ1bmNfdV9mMzJfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21f
aTMyX3RydW5jX3VfZjY0X2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2kzMl93cmFwX2k2NF9s
ZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9pNjRfdHJ1bmNfc19mMzJfbGVuZ3RoID0gMzsgY29u
c3QgaW50IHdhc21faTY0X3RydW5jX3NfZjY0X2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2k2
NF90cnVuY191X2YzMl9sZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9pNjRfdHJ1bmNfdV9mNjRf
bGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21faTY0X2V4dGVuZF9zX2kzMl9sZW5ndGggPSAzOyBj
b25zdCBpbnQgd2FzbV9pNjRfZXh0ZW5kX3VfaTMyX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNt
X2YzMl9jb252ZXJ0X3NfaTMyX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2YzMl9jb252ZXJ0
X3VfaTMyX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2YzMl9jb252ZXJ0X3NfaTY0X2xlbmd0
aCA9IDM7IGNvbnN0IGludCB3YXNtX2YzMl9jb252ZXJ0X3VfaTY0X2xlbmd0aCA9IDM7IGNvbnN0
IGludCB3YXNtX2YzMl9kZW1vdGVfZjY0X2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2YzMl9y
ZWludGVycHJldF9pMzJfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fZjY0X2NvbnZlcnRfc19p
MzJfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fZjY0X2NvbnZlcnRfdV9pMzJfbGVuZ3RoID0g
MzsgY29uc3QgaW50IHdhc21fZjY0X2NvbnZlcnRfc19pNjRfbGVuZ3RoID0gMzsgY29uc3QgaW50
IHdhc21fZjY0X2NvbnZlcnRfdV9pNjRfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fZjY0X3By
b21vdGVfZjMyX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2Y2NF9yZWludGVycHJldF9pNjRf
bGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21faTMyX3JlaW50ZXJwcmV0X2YzMl9sZW5ndGggPSAz
OyBjb25zdCBpbnQgd2FzbV9pNjRfcmVpbnRlcnByZXRfZjY0X2xlbmd0aCA9IDM7IGNvbnN0IGlu
dCB3YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmVfbGVuZ3RoID0gMTsgY29uc3Qg
aW50IHdhc21fd2lkZTE2X2xlbmd0aCA9IDE7IGNvbnN0IGludCB3YXNtX3dpZGUzMl9sZW5ndGgg
PSAxOyBjb25zdCBpbnQgd2FzbV9lbnRlcl9sZW5ndGggPSAxOyBjb25zdCBpbnQgd2FzbV9ub3Bf
bGVuZ3RoID0gMTsgY29uc3QgaW50IHdhc21fbG9vcF9oaW50X2xlbmd0aCA9IDE7IGNvbnN0IGlu
dCB3YXNtX21vdl9sZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9qdHJ1ZV9sZW5ndGggPSAzOyBj
b25zdCBpbnQgd2FzbV9qZmFsc2VfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fam1wX2xlbmd0
aCA9IDI7IGNvbnN0IGludCB3YXNtX3JldF9sZW5ndGggPSAxOyBjb25zdCBpbnQgd2FzbV9zd2l0
Y2hfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fdW5yZWFjaGFibGVfbGVuZ3RoID0gMTsgY29u
c3QgaW50IHdhc21fcmV0X3ZvaWRfbGVuZ3RoID0gMTsgY29uc3QgaW50IHdhc21fZHJvcF9rZWVw
X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX3JlZl9pc19udWxsX2xlbmd0aCA9IDM7IGNvbnN0
IGludCB3YXNtX3JlZl9mdW5jX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX2dldF9nbG9iYWxf
bGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fc2V0X2dsb2JhbF9sZW5ndGggPSAzOyBjb25zdCBp
bnQgd2FzbV9zZXRfZ2xvYmFsX3JlZl9sZW5ndGggPSAzOyBjb25zdCBpbnQgd2FzbV9nZXRfZ2xv
YmFsX3BvcnRhYmxlX2JpbmRpbmdfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fc2V0X2dsb2Jh
bF9wb3J0YWJsZV9iaW5kaW5nX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX3NldF9nbG9iYWxf
cmVmX3BvcnRhYmxlX2JpbmRpbmdfbGVuZ3RoID0gMzsgY29uc3QgaW50IHdhc21fdGFibGVfZ2V0
X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX3RhYmxlX3NldF9sZW5ndGggPSA0OyBjb25zdCBp
bnQgd2FzbV90YWJsZV9zaXplX2xlbmd0aCA9IDM7IGNvbnN0IGludCB3YXNtX3RhYmxlX2dyb3df
bGVuZ3RoID0gNTsgY29uc3QgaW50IHdhc21fdGFibGVfZmlsbF9sZW5ndGggPSA1OyBjb25zdCBp
bnQgd2FzbV9jYWxsX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2NhbGxfbm9fdGxzX2xlbmd0
aCA9IDQ7IGNvbnN0IGludCB3YXNtX2NhbGxfaW5kaXJlY3RfbGVuZ3RoID0gNjsgY29uc3QgaW50
IHdhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfbGVuZ3RoID0gNjsgY29uc3QgaW50IHdhc21fY3Vy
cmVudF9tZW1vcnlfbGVuZ3RoID0gMjsgY29uc3QgaW50IHdhc21fZ3Jvd19tZW1vcnlfbGVuZ3Ro
ID0gMzsgY29uc3QgaW50IHdhc21fc2VsZWN0X2xlbmd0aCA9IDU7IGNvbnN0IGludCB3YXNtX2xv
YWQ4X3VfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21fbG9hZDE2X3VfbGVuZ3RoID0gNDsgY29u
c3QgaW50IHdhc21fbG9hZDMyX3VfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21fbG9hZDY0X3Vf
bGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX2xvYWQ4X3NfbGVuZ3RoID0gNDsgY29uc3Qg
aW50IHdhc21faTY0X2xvYWQ4X3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21faTMyX2xvYWQx
Nl9zX2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX2k2NF9sb2FkMTZfc19sZW5ndGggPSA0OyBj
b25zdCBpbnQgd2FzbV9pNjRfbG9hZDMyX3NfbGVuZ3RoID0gNDsgY29uc3QgaW50IHdhc21fc3Rv
cmU4X2xlbmd0aCA9IDQ7IGNvbnN0IGludCB3YXNtX3N0b3JlMTZfbGVuZ3RoID0gNDsgY29uc3Qg
aW50IHdhc21fc3RvcmUzMl9sZW5ndGggPSA0OyBjb25zdCBpbnQgd2FzbV9zdG9yZTY0X2xlbmd0
aCA9IDQ7Ow0KDQoNCnN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4SlNPcGNvZGVMZW5ndGgg
PSAgMSArICAxICsgICg4IC0gMSkgKiA0Ow0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhX
YXNtT3Bjb2RlTGVuZ3RoID0gIDEgKyAgMSArICAoNiAtIDEpICogNDsNCnN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWF4T3Bjb2RlTGVuZ3RoID0gc3RkOjptYXgobWF4SlNPcGNvZGVMZW5ndGgs
IG1heFdhc21PcGNvZGVMZW5ndGgpOw0Kc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0
aEZvck1heE9wY29kZUxlbmd0aCA9IFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKG1heE9wY29kZUxl
bmd0aCkgKyAxOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogICAgc3RhdGljX2Fzc2VydCgob3BfaXRlcmF0b3Jf
bmV4dCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaXRlcmF0b3Jfb3BlbiA8PSBudW1PcGNvZGVJRHMpLCAi
QVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bf
Y2FsbF92YXJhcmdzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURT
X0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF90YWlsX2NhbGxfdmFyYXJncyA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgob3BfY29uc3RydWN0X3ZhcmFyZ3MgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2NhdGNoIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChvcF9nZXRfZnJvbV9hcmd1bWVudHMgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2Ny
ZWF0ZV90aGlzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jcmVhdGVfcHJvbWlzZSA8PSBudW1PcGNvZGVJ
RHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2Vy
dCgob3BfcHV0X3RvX3Njb3BlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfZnJvbV9zY29wZSA8PSBu
dW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3Rh
dGljX2Fzc2VydCgob3BfY3JlYXRlX2dlbmVyYXRvciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHJvZmls
ZV90eXBlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yIDw9IG51bU9w
Y29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNf
YXNzZXJ0KChvcF9nZXRfYXJndW1lbnQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pT
X09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3Jlc29sdmVfc2NvcGUg
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX3RvX3RoaXMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3Byb2ZpbGVfY29u
dHJvbF9mbG93IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZXdfb2JqZWN0IDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9uZXdfYXJyYXkgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX25ld19hcnJheV93aXRoX3NpemUgPD0gbnVt
T3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRp
Y19hc3NlcnQoKG9wX25ld19hcnJheV9idWZmZXIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2NvbnN0cnVj
dCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzIDw9IG51bU9w
Y29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNf
YXNzZXJ0KChvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X2Rp
cmVjdF9wbmFtZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfY2FsbF9ldmFsIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF90YWlsX2NhbGwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2NhbGwgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2pu
ZXFfcHRyIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9wdXRfYnlfdmFsX2RpcmVjdCA8PSBudW1PcGNvZGVJ
RHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2Vy
dCgob3BfcHV0X2J5X3ZhbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X3ByaXZhdGVfbmFtZSA8PSBu
dW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3Rh
dGljX2Fzc2VydCgob3BfZ2V0X2J5X3ZhbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHV0X2J5X2lkIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChvcF90cnlfZ2V0X2J5X2lkIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfcHJv
dG90eXBlX29mIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9nZXRfYnlfaWRfZGlyZWN0IDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfYWRkIDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9tdWwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2RpdiA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3Bfc3ViIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9iaXRhbmQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2JpdG9y
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9iaXR4b3IgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2xzaGlmdCA8PSBu
dW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3Rh
dGljX2Fzc2VydCgob3BfcnNoaWZ0IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9iaXRub3QgPD0gbnVtT3Bj
b2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19h
c3NlcnQoKG9wX2dldF9ieV9pZF93aXRoX3RoaXMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2dldF9ieV9p
ZCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfaW5fYnlfdmFsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZWdhdGUg
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX3RvX251bWVyaWMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3RvX251bWJl
ciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfdG9fb2JqZWN0IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9kZWMgPD0g
bnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0
YXRpY19hc3NlcnQoKG9wX2luYyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BD
T0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X2ludGVybmFsX2ZpZWxk
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9pc19vYmplY3QgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9U
SEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2lzX29iamVj
dF9vcl9udWxsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pc19mdW5jdGlvbiA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfaXNfY29uc3RydWN0b3IgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2lzX251bWJlciA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfaXNfYm9vbGVhbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BD
T0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaXNfdW5kZWZpbmVkX29yX251
bGwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX3R5cGVvZl9pc191bmRlZmluZWQgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX2lzX2VtcHR5IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURT
X0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF91bnNpZ25lZCA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3Bfbm90IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUgPD0gbnVtT3Bj
b2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19h
c3NlcnQoKG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2luc3Rh
bmNlb2YgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZB
TElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2luc3RhbmNlb2ZfY3VzdG9tIDw9IG51bU9wY29kZUlE
cyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0
KChvcF90eXBlb2YgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2lzX2NlbGxfd2l0aF90eXBlIDw9IG51bU9w
Y29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNf
YXNzZXJ0KChvcF90b19zdHJpbmcgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2luX2J5X2lkIDw9IG51bU9w
Y29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNf
YXNzZXJ0KChvcF9uZXFfbnVsbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BD
T0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZXFfbnVsbCA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfdXJzaGlmdCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcG93IDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9tb2QgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZB
TElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2JlbG93ZXEgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2JlbG93
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9wdXRfYnlfaWRfd2l0aF90aGlzIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF9kZWxfYnlfaWQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2dyZWF0ZXJlcSA8PSBudW1PcGNvZGVJRHMp
LCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgo
b3BfZ3JlYXRlciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbGVzc2VxIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9w
dXRfYnlfdmFsX3dpdGhfdGhpcyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BD
T0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbGVzcyA8PSBudW1PcGNvZGVJ
RHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2Vy
dCgob3BfZGVsX2J5X3ZhbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RF
X0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHV0X2dldHRlcl9ieV9pZCA8PSBu
dW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3Rh
dGljX2Fzc2VydCgob3BfcHV0X3NldHRlcl9ieV9pZCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcHV0X2dl
dHRlcl9zZXR0ZXJfYnlfaWQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1dF9nZXR0ZXJfYnlfdmFsIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChvcF9wdXRfc2V0dGVyX2J5X3ZhbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9w
ZXJ0eSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfam1wIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qdHJ1ZSA8PSBu
dW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3Rh
dGljX2Fzc2VydCgob3BfamZhbHNlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qZXFfbnVsbCA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgob3Bfam5lcV9udWxsIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qdW5kZWZpbmVkX29yX251
bGwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX2pudW5kZWZpbmVkX29yX251bGwgPD0gbnVtT3Bjb2RlSURz
KSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQo
KG9wX25zdHJpY3RlcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lE
U19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfamVxIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9q
c3RyaWN0ZXEgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJF
X1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2puZXEgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2puc3Ry
aWN0ZXEgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZB
TElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2psZXNzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qbGVzc2Vx
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9qZ3JlYXRlciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfamdyZWF0ZXJl
cSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3Bfam5sZXNzIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qbmxlc3NlcSA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3Bfam5ncmVhdGVyIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qbmdyZWF0ZXJl
cSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQi
KTsgc3RhdGljX2Fzc2VydCgob3BfamJlbG93IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9qYmVsb3dlcSA8
PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsg
c3RhdGljX2Fzc2VydCgob3BfbG9vcF9oaW50IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9zd2l0Y2hfaW1t
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9zd2l0Y2hfY2hhciA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bfc3dpdGNo
X3N0cmluZyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmV3X2Z1bmMgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX25l
d19mdW5jX2V4cCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmV3X2dlbmVyYXRvcl9mdW5jIDw9IG51bU9w
Y29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNf
YXNzZXJ0KChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIDw9IG51bU9wY29kZUlEcyksICJBU1NF
UlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZXdf
YXN5bmNfZnVuYyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmV3X2FzeW5jX2Z1bmNfZXhwIDw9IG51bU9w
Y29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNf
YXNzZXJ0KChvcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmMgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX25l
d19hc3luY19nZW5lcmF0b3JfZnVuY19leHAgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3NldF9mdW5jdGlv
bl9uYW1lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9zdHJpY3RlcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbmVx
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9lcSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfbW92IDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9uZXdfcmVnZXhwIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9zcHJlYWQgPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKG9wX25ld19hcnJheV93aXRoX3NwcmVhZCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfY2hlY2tfdGR6
IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIp
OyBzdGF0aWNfYXNzZXJ0KChvcF9yZXQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pT
X09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3N0cmNhdCA8PSBudW1P
cGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGlj
X2Fzc2VydCgob3BfdG9fcHJpbWl0aXZlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9K
U19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF90b19wcm9wZXJ0eV9r
ZXkgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX2FyZ3VtZW50X2NvdW50IDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9u
ZXdfZ2VuZXJhdG9yIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURT
X0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9uZXdfcHJvbWlzZSA8PSBudW1PcGNvZGVJ
RHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2Vy
dCgob3BfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1dF90
b19hcmd1bWVudHMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3B1c2hfd2l0aF9zY29wZSA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQgPD0gbnVtT3Bjb2RlSURzKSwgIkFT
U0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2Ny
ZWF0ZV9nZW5lcmF0b3JfZnJhbWVfZW52aXJvbm1lbnQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2dldF9w
YXJlbnRfc2NvcGUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNf
QVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChvcF90aHJvdyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfdGhyb3dfc3RhdGljX2Vy
cm9yIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJ
RCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9kZWJ1ZyA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RI
QVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZW5kIDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50cyA8PSBudW1PcGNvZGVJRHMpLCAi
QVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bf
Y3JlYXRlX2RpcmVjdF9hcmd1bWVudHMgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pT
X09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2dldF9lbnVtZXJhYmxl
X2xlbmd0aCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVf
VkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X3Njb3BlIDw9IG51bU9wY29kZUlEcyksICJB
U1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9o
YXNfc3RydWN0dXJlX3Byb3BlcnR5IDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9oYXNfb3duX3N0cnVjdHVy
ZV9wcm9wZXJ0eSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaW5fc3RydWN0dXJlX3Byb3BlcnR5IDw9IG51
bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0
aWNfYXNzZXJ0KChvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZW50
ZXIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElE
Iik7IHN0YXRpY19hc3NlcnQoKG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNz
ZXJ0KChvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNT
RVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZW51
bWVyYXRvcl9nZW5lcmljX3BuYW1lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF90b19pbmRleF9zdHJpbmcg
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX3VucmVhY2hhYmxlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jcmVhdGVf
cmVzdCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X3Jlc3RfbGVuZ3RoIDw9IG51bU9wY29kZUlEcyks
ICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChv
cF93aWRlMzIgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJF
X1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX2lzX2JpZ19pbnQgPD0gbnVtT3Bjb2RlSURzKSwg
IkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9w
X3lpZWxkIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9W
QUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jaGVja190cmFwcyA8PSBudW1PcGNvZGVJRHMpLCAi
QVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bf
bG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9sb2dfc2hhZG93
X2NoaWNrZW5fdGFpbCA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lE
U19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3Rp
bmdfZnVuY19kZWNsX2luX2V2YWwgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3dpZGUxNiA8PSBudW1PcGNv
ZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fz
c2VydCgob3BfcHV0X2ludGVybmFsX2ZpZWxkIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhB
VF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9ub3AgPD0gbnVt
T3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRp
Y19hc3NlcnQoKG9wX3N1cGVyX3NhbXBsZXJfYmVnaW4gPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VS
VF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKG9wX3N1cGVy
X3NhbXBsZXJfZW5kIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURT
X0FSRV9WQUxJRCIpOyAgc3RhdGljX2Fzc2VydCgobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSA8PSBu
dW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3Rh
dGljX2Fzc2VydCgobGxpbnRfZXZhbF9wcm9sb2d1ZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJU
X1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX3Byb2xvZ3VlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURT
X0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X3Byb2xvZ3VlIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FS
RV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVjayA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVjayA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFM
SUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQgPD0gbnVtT3Bj
b2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19h
c3NlcnQoKGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUgPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUgPD0gbnVtT3Bjb2RlSURzKSwg
IkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGxs
aW50X25hdGl2ZV9jYWxsX3RyYW1wb2xpbmUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFU
X0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGxsaW50X25hdGl2ZV9j
b25zdHJ1Y3RfdHJhbXBvbGluZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BD
T0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgobGxpbnRfaW50ZXJuYWxfZnVuY3Rp
b25fY2FsbF90cmFtcG9saW5lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENP
REVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChsbGludF9pbnRlcm5hbF9mdW5jdGlv
bl9jb25zdHJ1Y3RfdHJhbXBvbGluZSA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgoY2hlY2twb2ludF9vc3JfZXhp
dF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRf
VEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChjaGVja3BvaW50
X29zcl9leGl0X3RyYW1wb2xpbmUgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09Q
Q09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGZ1enplcl9yZXR1cm5fZWFybHlf
ZnJvbV9sb29wX2hpbnQgPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9J
RFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uIDw9
IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBz
dGF0aWNfYXNzZXJ0KChvcF9jYWxsX3JldHVybl9sb2NhdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAi
QVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3Bf
Y29uc3RydWN0X3JldHVybl9sb2NhdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfY2FsbF92YXJhcmdz
X3Nsb3dfcmV0dXJuX2xvY2F0aW9uIDw9IG51bU9wY29kZUlEcyksICJBU1NFUlRfVEhBVF9KU19P
UENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9jb25zdHJ1Y3RfdmFyYXJn
c19zbG93X3JldHVybl9sb2NhdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNf
T1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X2J5X2lkX3JldHVy
bl9sb2NhdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRfSlNfT1BDT0RFX0lEU19B
UkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb24g
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKG9wX3B1dF9ieV9pZF9yZXR1cm5fbG9jYXRpb24gPD0gbnVtT3Bjb2Rl
SURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3Nl
cnQoKG9wX3B1dF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uIDw9IG51bU9wY29kZUlEcyksICJBU1NF
UlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOyBzdGF0aWNfYXNzZXJ0KChvcF9pdGVy
YXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbiA8PSBudW1PcGNvZGVJRHMpLCAiQVNTRVJUX1RIQVRf
SlNfT1BDT0RFX0lEU19BUkVfVkFMSUQiKTsgc3RhdGljX2Fzc2VydCgob3BfaXRlcmF0b3JfbmV4
dF9yZXR1cm5fbG9jYXRpb24gPD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09E
RV9JRFNfQVJFX1ZBTElEIik7IHN0YXRpY19hc3NlcnQoKHdhc21fZnVuY3Rpb25fcHJvbG9ndWUg
PD0gbnVtT3Bjb2RlSURzKSwgIkFTU0VSVF9USEFUX0pTX09QQ09ERV9JRFNfQVJFX1ZBTElEIik7
IHN0YXRpY19hc3NlcnQoKHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzIDw9IG51bU9wY29k
ZUlEcyksICJBU1NFUlRfVEhBVF9KU19PUENPREVfSURTX0FSRV9WQUxJRCIpOzsNCg0KDQoNCg0K
DQp0eXBlZGVmIHZvaWQqIE9wY29kZTsNCg0KDQojbGluZSAxNjkgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXE9wY29kZS5oIg0KDQpl
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgb3Bjb2RlTmFtZXNbXTsNCmV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCB3YXNtT3Bjb2RlTmFtZXNbXTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxODcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYnl0ZWNvZGVcXE9wY29kZS5oIg0KDQppbmxpbmUgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBv
cGNvZGVJRCkNCnsNCiAgICBzd2l0Y2ggKG9wY29kZUlEKSB7DQogICAgY2FzZSBvcF9qbXA6DQog
ICAgY2FzZSBvcF9qdHJ1ZToNCiAgICBjYXNlIG9wX2pmYWxzZToNCiAgICBjYXNlIG9wX2plcV9u
dWxsOg0KICAgIGNhc2Ugb3Bfam5lcV9udWxsOg0KICAgIGNhc2Ugb3BfanVuZGVmaW5lZF9vcl9u
dWxsOg0KICAgIGNhc2Ugb3Bfam51bmRlZmluZWRfb3JfbnVsbDoNCiAgICBjYXNlIG9wX2puZXFf
cHRyOg0KICAgIGNhc2Ugb3Bfamxlc3M6DQogICAgY2FzZSBvcF9qbGVzc2VxOg0KICAgIGNhc2Ug
b3BfamdyZWF0ZXI6DQogICAgY2FzZSBvcF9qZ3JlYXRlcmVxOg0KICAgIGNhc2Ugb3Bfam5sZXNz
Og0KICAgIGNhc2Ugb3Bfam5sZXNzZXE6DQogICAgY2FzZSBvcF9qbmdyZWF0ZXI6DQogICAgY2Fz
ZSBvcF9qbmdyZWF0ZXJlcToNCiAgICBjYXNlIG9wX2plcToNCiAgICBjYXNlIG9wX2puZXE6DQog
ICAgY2FzZSBvcF9qc3RyaWN0ZXE6DQogICAgY2FzZSBvcF9qbnN0cmljdGVxOg0KICAgIGNhc2Ug
b3BfamJlbG93Og0KICAgIGNhc2Ugb3BfamJlbG93ZXE6DQogICAgY2FzZSBvcF9zd2l0Y2hfaW1t
Og0KICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6DQogICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOg0K
ICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgfQ0KfQ0KDQppbmxpbmUgYm9vbCBpc1VuY29uZGl0aW9uYWxCcmFuY2goT3Bjb2RlSUQg
b3Bjb2RlSUQpDQp7DQogICAgc3dpdGNoIChvcGNvZGVJRCkgew0KICAgIGNhc2Ugb3Bfam1wOg0K
ICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgfQ0KfQ0KDQppbmxpbmUgYm9vbCBpc1Rlcm1pbmFsKE9wY29kZUlEIG9wY29kZUlEKQ0K
ew0KICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsNCiAgICBjYXNlIG9wX3JldDoNCiAgICBjYXNlIG9w
X2VuZDoNCiAgICBjYXNlIG9wX3VucmVhY2hhYmxlOg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAg
ICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQppbmxpbmUgYm9v
bCBpc1Rocm93KE9wY29kZUlEIG9wY29kZUlEKQ0Kew0KICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsN
CiAgICBjYXNlIG9wX3Rocm93Og0KICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOg0KICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgfQ0KfQ0KDQp1bnNpZ25lZCBtZXRhZGF0YVNpemUoT3Bjb2RlSUQpOw0KdW5zaWduZWQgbWV0
YWRhdGFBbGlnbm1lbnQoT3Bjb2RlSUQpOw0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xh
c3MgUHJpbnRTdHJlYW07DQoNCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
T3Bjb2RlSUQpOw0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEluc3RydWN0aW9uLmgiDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2Rl
XFxPcGNvZGVTaXplLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51bSBPcGNvZGVT
aXplIHsNCiAgICBOYXJyb3cgPSAxLA0KICAgIFdpZGUxNiA9IDIsDQogICAgV2lkZTMyID0gNCwN
Cn07DQoNCnRlbXBsYXRlPE9wY29kZVNpemU+DQpzdHJ1Y3QgVHlwZUJ5U2l6ZTsNCg0KdGVtcGxh
dGU8Pg0Kc3RydWN0IFR5cGVCeVNpemU8T3Bjb2RlU2l6ZTo6TmFycm93PiB7DQogICAgdXNpbmcg
c2lnbmVkVHlwZSA9IGludDhfdDsNCiAgICB1c2luZyB1bnNpZ25lZFR5cGUgPSB1aW50OF90Ow0K
fTsNCg0KdGVtcGxhdGU8Pg0Kc3RydWN0IFR5cGVCeVNpemU8T3Bjb2RlU2l6ZTo6V2lkZTE2PiB7
DQogICAgdXNpbmcgc2lnbmVkVHlwZSA9IGludDE2X3Q7DQogICAgdXNpbmcgdW5zaWduZWRUeXBl
ID0gdWludDE2X3Q7DQp9Ow0KDQp0ZW1wbGF0ZTw+DQpzdHJ1Y3QgVHlwZUJ5U2l6ZTxPcGNvZGVT
aXplOjpXaWRlMzI+IHsNCiAgICB1c2luZyBzaWduZWRUeXBlID0gaW50MzJfdDsNCiAgICB1c2lu
ZyB1bnNpZ25lZFR5cGUgPSB1aW50MzJfdDsNCn07DQoNCnRlbXBsYXRlPE9wY29kZVNpemU+DQpz
dHJ1Y3QgUGFkZGluZ0J5U2l6ZTsNCg0KdGVtcGxhdGU8Pg0Kc3RydWN0IFBhZGRpbmdCeVNpemU8
T3Bjb2RlU2l6ZTo6TmFycm93PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IHZhbHVl
ID0gMDsNCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBQYWRkaW5nQnlTaXplPE9wY29kZVNpemU6
OldpZGUxNj4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB2YWx1ZSA9IDE7DQp9Ow0K
DQp0ZW1wbGF0ZTw+DQpzdHJ1Y3QgUGFkZGluZ0J5U2l6ZTxPcGNvZGVTaXplOjpXaWRlMzI+IHsN
CiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdmFsdWUgPSAxOw0KfTsNCg0KfSANCiNsaW5l
IDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5
dGVjb2RlXFxJbnN0cnVjdGlvbi5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0Kc3RydWN0IEpTT3Bj
b2RlVHJhaXRzIHsNCiAgICB1c2luZyBPcGNvZGVJRCA9IDo6SlNDOjpPcGNvZGVJRDsNCiAgICBz
dGF0aWMgY29uc3RleHByIE9wY29kZUlEIG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRz
ID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KDUpOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2Rl
SUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxPcGNvZGVJRD4o
NTkpOw0KICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMg
PD0gbnVtYmVyT2ZCeXRlY29kZXNXaXRoTWV0YWRhdGEpOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
T3Bjb2RlSUQgd2lkZTE2ID0gb3Bfd2lkZTE2Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2Rl
SUQgd2lkZTMyID0gb3Bfd2lkZTMyOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWdu
ZWQqIG9wY29kZUxlbmd0aHMgPSA6OkpTQzo6b3Bjb2RlTGVuZ3RoczsNCiAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGNoYXIqIGNvbnN0KiBvcGNvZGVOYW1lcyA9IDo6SlNDOjpvcGNvZGVOYW1l
czsNCiAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2hlY2twb2ludENvdW50VGFibGUgPSBieXRl
Y29kZUNoZWNrcG9pbnRDb3VudFRhYmxlOw0KfTsNCg0Kc3RydWN0IFdhc21PcGNvZGVUcmFpdHMg
ew0KICAgIHVzaW5nIE9wY29kZUlEID0gV2FzbU9wY29kZUlEOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgT3Bjb2RlSUQgbnVtYmVyT2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHMgPSBzdGF0aWNfY2Fz
dDxPcGNvZGVJRD4oMCk7DQogICAgc3RhdGljIGNvbnN0ZXhwciBPcGNvZGVJRCBudW1iZXJPZkJ5
dGVjb2Rlc1dpdGhNZXRhZGF0YSA9IHN0YXRpY19jYXN0PE9wY29kZUlEPigwKTsNCiAgICBzdGF0
aWNfYXNzZXJ0KG51bWJlck9mQnl0ZWNvZGVzV2l0aENoZWNrcG9pbnRzIDw9IG51bWJlck9mQnl0
ZWNvZGVzV2l0aE1ldGFkYXRhKTsNCiAgICBzdGF0aWMgY29uc3RleHByIE9wY29kZUlEIHdpZGUx
NiA9IHdhc21fd2lkZTE2Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgT3Bjb2RlSUQgd2lkZTMyID0g
d2FzbV93aWRlMzI7DQogICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCogb3Bjb2Rl
TGVuZ3RocyA9IHdhc21PcGNvZGVMZW5ndGhzOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
Y2hhciogY29uc3QqIG9wY29kZU5hbWVzID0gd2FzbU9wY29kZU5hbWVzOw0KICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjaGVja3BvaW50Q291bnRUYWJsZSA9IHdhc21DaGVja3BvaW50Q291bnRU
YWJsZTsNCn07DQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgT3Bjb2RlPg0Kc3RydWN0IEJhc2VJbnN0
cnVjdGlvbiB7DQoNCiAgICBzdHJ1Y3QgTWV0YWRhdGEgeyB9Ow0KDQpwcm90ZWN0ZWQ6DQogICAg
QmFzZUluc3RydWN0aW9uKCkNCiAgICB7IH0NCg0KcHJpdmF0ZToNCiAgICB0ZW1wbGF0ZTxPcGNv
ZGVTaXplIFdpZHRoPg0KICAgIGNsYXNzIEltcGwgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+DQogICAgICAgIHR5cGVuYW1l
IFRyYWl0czo6T3Bjb2RlSUQgb3Bjb2RlSUQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx0
eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEPihtX29wY29kZSk7IH0NCg0KICAgIHByaXZhdGU6DQog
ICAgICAgIHR5cGVuYW1lIFR5cGVCeVNpemU8T3Bjb2RlU2l6ZTo6TmFycm93Pjo6dW5zaWduZWRU
eXBlIG1fb3Bjb2RlOw0KICAgIH07DQoNCnB1YmxpYzoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
cmFpdHMgPSBKU09wY29kZVRyYWl0cz4NCiAgICB0eXBlbmFtZSBUcmFpdHM6Ok9wY29kZUlEIG9w
Y29kZUlEKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChpc1dpZGUzMjxUcmFpdHM+KCkpDQog
ICAgICAgICAgICByZXR1cm4gd2lkZTMyPFRyYWl0cz4oKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJh
aXRzPigpOw0KICAgICAgICBpZiAoaXNXaWRlMTY8VHJhaXRzPigpKQ0KICAgICAgICAgICAgcmV0
dXJuIHdpZGUxNjxUcmFpdHM+KCktPnRlbXBsYXRlIG9wY29kZUlEPFRyYWl0cz4oKTsNCiAgICAg
ICAgcmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCk7DQogICAgfQ0K
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+DQogICAgY29u
c3QgY2hhciogbmFtZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gVHJhaXRzOjpvcGNv
ZGVOYW1lc1tvcGNvZGVJRCgpXTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFp
dHMgPSBKU09wY29kZVRyYWl0cz4NCiAgICBib29sIGlzV2lkZTE2KCkgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBuYXJyb3coKS0+dGVtcGxhdGUgb3Bjb2RlSUQ8VHJhaXRzPigpID09IFRy
YWl0czo6d2lkZTE2Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPg0KICAgIGJvb2wgaXNXaWRlMzIoKSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIG5hcnJvdygpLT50ZW1wbGF0ZSBvcGNvZGVJRDxUcmFpdHM+KCkgPT0gVHJhaXRzOjp3
aWRlMzI7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzID0gSlNPcGNvZGVU
cmFpdHM+DQogICAgT3Bjb2RlU2l6ZSB3aWR0aCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAo
aXNXaWRlMzI8VHJhaXRzPigpKQ0KICAgICAgICAgICAgcmV0dXJuIE9wY29kZVNpemU6OldpZGUz
MjsNCiAgICAgICAgcmV0dXJuIGlzV2lkZTE2PFRyYWl0cz4oKSA/IE9wY29kZVNpemU6OldpZGUx
NiA6IE9wY29kZVNpemU6Ok5hcnJvdzsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
cmFpdHMgPSBKU09wY29kZVRyYWl0cz4NCiAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiBvcGNvZGVJRDxUcmFpdHM+KCkgPCBUcmFpdHM6Om51bWJlck9m
Qnl0ZWNvZGVzV2l0aE1ldGFkYXRhOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRy
YWl0cyA9IEpTT3Bjb2RlVHJhaXRzPg0KICAgIGJvb2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIG9wY29kZUlEPFRyYWl0cz4oKSA8IFRyYWl0czo6bnVtYmVy
T2ZCeXRlY29kZXNXaXRoQ2hlY2twb2ludHM7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgVHJhaXRzID0gSlNPcGNvZGVUcmFpdHM+DQogICAgdW5zaWduZWQgbnVtYmVyT2ZDaGVja3Bv
aW50cygpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoIWhhc0NoZWNrcG9pbnRzPFRyYWl0cz4o
KSkNCiAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICByZXR1cm4gVHJhaXRzOjpjaGVja3Bv
aW50Q291bnRUYWJsZVtvcGNvZGVJRDxUcmFpdHM+KCldOw0KICAgIH0NCg0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPg0KICAgIGludCBzaXplU2hpZnRBbW91
bnQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzV2lkZTMyPFRyYWl0cz4oKSkNCiAgICAg
ICAgICAgIHJldHVybiAyOw0KICAgICAgICBpZiAoaXNXaWRlMTY8VHJhaXRzPigpKQ0KICAgICAg
ICAgICAgcmV0dXJuIDE7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPg0KICAgIHNpemVfdCBzaXplKCkgY29u
c3QNCiAgICB7DQogICAgICAgIGF1dG8gc2l6ZVNoaWZ0QW1vdW50ID0gdGhpcy0+c2l6ZVNoaWZ0
QW1vdW50PFRyYWl0cz4oKTsNCiAgICAgICAgc2l6ZV90IHByZWZpeFNpemUgPSBzaXplU2hpZnRB
bW91bnQgPyAxIDogMDsNCiAgICAgICAgc2l6ZV90IG9wZXJhbmRTaXplID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PigxKSA8PCBzaXplU2hpZnRBbW91bnQ7DQogICAgICAgIHNpemVfdCBzaXplT2ZCeXRl
Y29kZSA9IDE7DQogICAgICAgIHJldHVybiBzaXplT2ZCeXRlY29kZSArIChUcmFpdHM6Om9wY29k
ZUxlbmd0aHNbb3Bjb2RlSUQ8VHJhaXRzPigpXSAtIDEpICogb3BlcmFuZFNpemUgKyBwcmVmaXhT
aXplOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPGNsYXNzIFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpT
T3Bjb2RlVHJhaXRzPg0KICAgIGJvb2wgaXMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IG9wY29kZUlEPFRyYWl0cz4oKSA9PSBUOjpvcGNvZGVJRDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0
ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBKU09wY29kZVRyYWl0cz4NCiAgICBUIGFzKCkg
Y29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIFQ6OmRlY29k
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSk7DQogICAgfQ0KDQogICAg
dGVtcGxhdGU8Y2xhc3MgVCwgT3Bjb2RlU2l6ZSB3aWR0aCwgdHlwZW5hbWUgVHJhaXRzID0gSlNP
cGNvZGVUcmFpdHM+DQogICAgVCBhc0tub3duV2lkdGgoKSBjb25zdA0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gVChyZWludGVycHJldF9jYXN0PGNvbnN0IHR5cGVu
YW1lIFR5cGVCeVNpemU8d2lkdGg+Ojp1bnNpZ25lZFR5cGUqPih0aGlzICsgKHdpZHRoID09IE9w
Y29kZVNpemU6Ok5hcnJvdyA/IDEgOiAyKSkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPGNsYXNz
IFQsIHR5cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPg0KICAgIFQqIGNhc3QoKQ0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFQqPih0
aGlzKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxjbGFzcyBULCB0eXBlbmFtZSBUcmFpdHMgPSBK
U09wY29kZVRyYWl0cz4NCiAgICBjb25zdCBUKiBjYXN0KCkgY29uc3QNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHRo
aXMpOw0KICAgIH0NCg0KICAgIGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6TmFycm93PiogbmFycm93
KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IElt
cGw8T3Bjb2RlU2l6ZTo6TmFycm93Pio+KHRoaXMpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFRyYWl0cyA9IEpTT3Bjb2RlVHJhaXRzPg0KICAgIGNvbnN0IEltcGw8T3Bjb2RlU2l6
ZTo6V2lkZTE2Piogd2lkZTE2KCkgY29uc3QNCiAgICB7DQoNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBJbXBsPE9wY29kZVNpemU6Oldp
ZGUxNj4qPih0aGlzICsgMSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRz
ID0gSlNPcGNvZGVUcmFpdHM+DQogICAgY29uc3QgSW1wbDxPcGNvZGVTaXplOjpXaWRlMzI+KiB3
aWRlMzIoKSBjb25zdA0KICAgIHsNCg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IEltcGw8T3Bjb2RlU2l6ZTo6V2lkZTMyPio+KHRoaXMg
KyAxKTsNCiAgICB9DQp9Ow0KDQpzdHJ1Y3QgSW5zdHJ1Y3Rpb24gOiBwdWJsaWMgQmFzZUluc3Ry
dWN0aW9uPE9wY29kZUlEPiB7DQp9Ow0Kc3RhdGljX2Fzc2VydChzaXplb2YoSW5zdHJ1Y3Rpb24p
ID09IDEsICJTbyBwb2ludGVyIG1hdGggaXMgdGhlIHNhbWUgYXMgYnl0ZSBtYXRoIik7DQoNCnN0
cnVjdCBXYXNtSW5zdGFuY2UgOiBwdWJsaWMgQmFzZUluc3RydWN0aW9uPFdhc21PcGNvZGVJRD4g
ew0KfTsNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKFdhc21JbnN0YW5jZSkgPT0gMSwgIlNvIHBvaW50
ZXIgbWF0aCBpcyB0aGUgc2FtZSBhcyBieXRlIG1hdGgiKTsNCg0KfSANCiNsaW5lIDMxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxJ
bnN0cnVjdGlvblN0cmVhbS5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp1c2luZyBJbnN0cnVj
dGlvblN0cmVhbU1hbGxvYyA9IEZhc3RNYWxsb2M7DQoNCmNsYXNzIEluc3RydWN0aW9uU3RyZWFt
IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0
dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFz
dEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVs
bFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNp
bmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KDQogICAgZnJpZW5kIGNsYXNz
IEluc3RydWN0aW9uU3RyZWFtV3JpdGVyOw0KICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRJbnN0cnVj
dGlvblN0cmVhbTsNCnB1YmxpYzoNCiAgICB1c2luZyBJbnN0cnVjdGlvbkJ1ZmZlciA9IFZlY3Rv
cjx1aW50OF90LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdywgMTYsIEluc3RydWN0aW9uU3RyZWFt
TWFsbG9jPjsNCg0KICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0Ow0KDQogICAgdXNpbmcg
T2Zmc2V0ID0gdW5zaWduZWQ7DQoNCnByaXZhdGU6DQogICAgdGVtcGxhdGU8Y2xhc3MgSW5zdHJ1
Y3Rpb25CdWZmZXI+DQogICAgY2xhc3MgQmFzZVJlZiB7DQogICAgICAgIHB1YmxpYzogdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
eyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQg
PSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzTWFjcm8gPSBpbnQ7DQoNCiAgICAgICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uU3RyZWFt
Ow0KDQogICAgcHVibGljOg0KICAgICAgICBCYXNlUmVmKGNvbnN0IEJhc2VSZWY8SW5zdHJ1Y3Rp
b25CdWZmZXI+JiBvdGhlcikNCiAgICAgICAgICAgIDogbV9pbnN0cnVjdGlvbnMob3RoZXIubV9p
bnN0cnVjdGlvbnMpDQogICAgICAgICAgICAsICBtX2luZGV4KG90aGVyLm1faW5kZXgpDQogICAg
ICAgIHsgfQ0KDQogICAgICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEJhc2VSZWY8SW5zdHJ1Y3Rp
b25CdWZmZXI+JiBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnMg
PSBvdGhlci5tX2luc3RydWN0aW9uczsNCiAgICAgICAgICAgIG1faW5kZXggPSBvdGhlci5tX2lu
ZGV4Ow0KICAgICAgICB9DQoNCiAgICAgICAgaW5saW5lIGNvbnN0IEluc3RydWN0aW9uKiBvcGVy
YXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0NCiAgICAgICAgaW5saW5lIGNvbnN0
IEluc3RydWN0aW9uKiBwdHIoKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQ0KDQogICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiYgb3RoZXIp
IGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAmbV9pbnN0cnVjdGlvbnMgIT0g
Jm90aGVyLm1faW5zdHJ1Y3Rpb25zIHx8IG1faW5kZXggIT0gb3RoZXIubV9pbmRleDsNCiAgICAg
ICAgfQ0KDQogICAgICAgIEJhc2VSZWYgbmV4dCgpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAg
ICAgIHJldHVybiBCYXNlUmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1faW5kZXggKyBwdHIoKS0+c2l6
ZSgpIH07DQogICAgICAgIH0NCg0KICAgICAgICBpbmxpbmUgT2Zmc2V0IG9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0NCiAgICAgICAgaW5saW5lIEJ5dGVjb2RlSW5kZXggaW5kZXgo
KSBjb25zdCB7IHJldHVybiBCeXRlY29kZUluZGV4KG9mZnNldCgpKTsgfQ0KDQogICAgICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBtX2luZGV4
IDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOw0KICAgICAgICB9DQoNCiAgICBwcml2YXRlOg0KICAg
ICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIHVud3JhcCgpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRl
eF0pOyB9DQoNCiAgICBwcm90ZWN0ZWQ6DQogICAgICAgIEJhc2VSZWYoSW5zdHJ1Y3Rpb25CdWZm
ZXImIGluc3RydWN0aW9ucywgc2l6ZV90IGluZGV4KQ0KICAgICAgICAgICAgOiBtX2luc3RydWN0
aW9ucyhpbnN0cnVjdGlvbnMpDQogICAgICAgICAgICAsIG1faW5kZXgoaW5kZXgpDQogICAgICAg
IHsgfQ0KDQogICAgICAgIEluc3RydWN0aW9uQnVmZmVyJiBtX2luc3RydWN0aW9uczsNCiAgICAg
ICAgT2Zmc2V0IG1faW5kZXg7DQogICAgfTsNCg0KcHVibGljOg0KICAgIHVzaW5nIFJlZiA9IEJh
c2VSZWY8Y29uc3QgSW5zdHJ1Y3Rpb25CdWZmZXI+Ow0KDQogICAgY2xhc3MgTXV0YWJsZVJlZiA6
IHB1YmxpYyBCYXNlUmVmPEluc3RydWN0aW9uQnVmZmVyPiB7DQogICAgICAgIGZyaWVuZCBjbGFz
cyBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcjsNCg0KICAgIHByb3RlY3RlZDoNCiAgICAgICAgdXNp
bmcgQmFzZVJlZjxJbnN0cnVjdGlvbkJ1ZmZlcj46OkJhc2VSZWY7DQoNCiAgICBwdWJsaWM6DQog
ICAgICAgIFJlZiBmcmVlemUoKSBjb25zdCAgeyByZXR1cm4gUmVmIHsgbV9pbnN0cnVjdGlvbnMs
IG1faW5kZXggfTsgfQ0KICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIG9wZXJhdG9yLT4oKSB7
IHJldHVybiB1bndyYXAoKTsgfQ0KICAgICAgICBpbmxpbmUgY29uc3QgSW5zdHJ1Y3Rpb24qIG9w
ZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bndyYXAoKTsgfQ0KICAgICAgICBpbmxpbmUgSW5z
dHJ1Y3Rpb24qIHB0cigpIHsgcmV0dXJuIHVud3JhcCgpOyB9DQogICAgICAgIGlubGluZSBjb25z
dCBJbnN0cnVjdGlvbiogcHRyKCkgY29uc3QgeyByZXR1cm4gdW53cmFwKCk7IH0NCiAgICAgICAg
aW5saW5lIG9wZXJhdG9yIFJlZigpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBSZWYg
eyBtX2luc3RydWN0aW9ucywgbV9pbmRleCB9Ow0KICAgICAgICB9DQoNCiAgICBwcml2YXRlOg0K
ICAgICAgICBpbmxpbmUgSW5zdHJ1Y3Rpb24qIHVud3JhcCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbV9pbnN0cnVjdGlvbnNbbV9pbmRleF0pOyB9DQogICAgICAg
IGlubGluZSBjb25zdCBJbnN0cnVjdGlvbiogdW53cmFwKCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBJbnN0cnVjdGlvbio+KCZtX2luc3RydWN0aW9uc1ttX2luZGV4XSk7
IH0NCiAgICB9Ow0KDQpwcml2YXRlOg0KICAgIGNsYXNzIGl0ZXJhdG9yIDogcHVibGljIFJlZiB7
DQogICAgICAgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvblN0cmVhbTsNCg0KICAgIHB1YmxpYzoN
CiAgICAgICAgdXNpbmcgUmVmOjpSZWY7DQoNCiAgICAgICAgUmVmJiBvcGVyYXRvciooKQ0KICAg
ICAgICB7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0KICAgICAgICBp
dGVyYXRvciYgb3BlcmF0b3IrPShzaXplX3Qgc2l6ZSkNCiAgICAgICAgew0KICAgICAgICAgICAg
bV9pbmRleCArPSBzaXplOw0KICAgICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAgICB9DQoN
CiAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQ0KICAgICAgICB7DQogICAgICAgICAgICBy
ZXR1cm4gKnRoaXMgKz0gcHRyKCktPnNpemUoKTsNCiAgICAgICAgfQ0KICAgIH07DQoNCnB1Ymxp
YzoNCiAgICBpbmxpbmUgaXRlcmF0b3IgYmVnaW4oKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIGl0ZXJhdG9yIHsgbV9pbnN0cnVjdGlvbnMsIDAgfTsNCiAgICB9DQoNCiAgICBpbmxpbmUg
aXRlcmF0b3IgZW5kKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBpdGVyYXRvciB7IG1f
aW5zdHJ1Y3Rpb25zLCBtX2luc3RydWN0aW9ucy5zaXplKCkgfTsNCiAgICB9DQoNCiAgICBpbmxp
bmUgY29uc3QgUmVmIGF0KEJ5dGVjb2RlSW5kZXggaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGlu
ZGV4Lm9mZnNldCgpKTsgfQ0KICAgIGlubGluZSBjb25zdCBSZWYgYXQoT2Zmc2V0IG9mZnNldCkg
Y29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIFJlZiB7IG1f
aW5zdHJ1Y3Rpb25zLCBvZmZzZXQgfTsNCiAgICB9DQoNCiAgICBpbmxpbmUgc2l6ZV90IHNpemUo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsNCiAg
ICB9DQoNCiAgICBjb25zdCB2b2lkKiByYXdQb2ludGVyKCkgY29uc3QNCiAgICB7DQogICAgICAg
IHJldHVybiBtX2luc3RydWN0aW9ucy5kYXRhKCk7DQogICAgfQ0KDQogICAgYm9vbCBjb250YWlu
cyhJbnN0cnVjdGlvbiopIGNvbnN0Ow0KDQpwcm90ZWN0ZWQ6DQogICAgZXhwbGljaXQgSW5zdHJ1
Y3Rpb25TdHJlYW0oSW5zdHJ1Y3Rpb25CdWZmZXImJik7DQoNCiAgICBJbnN0cnVjdGlvbkJ1ZmZl
ciBtX2luc3RydWN0aW9uczsNCn07DQoNCmNsYXNzIEluc3RydWN0aW9uU3RyZWFtV3JpdGVyIDog
cHVibGljIEluc3RydWN0aW9uU3RyZWFtIHsNCiAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVSZXdy
aXRlcjsNCnB1YmxpYzoNCiAgICBJbnN0cnVjdGlvblN0cmVhbVdyaXRlcigpDQogICAgICAgIDog
SW5zdHJ1Y3Rpb25TdHJlYW0oeyB9KQ0KICAgIHsgfQ0KDQogICAgdm9pZCBzZXRJbnN0cnVjdGlv
bkJ1ZmZlcihJbnN0cnVjdGlvbkJ1ZmZlciYmIGJ1ZmZlcikNCiAgICB7DQogICAgICAgIGRvIHsg
aWYgKCghKCFtX2luc3RydWN0aW9ucy5zaXplKCkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE5
NiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0
ZWNvZGVcXEluc3RydWN0aW9uU3RyZWFtLmgiLCAgX19GVU5DVElPTl9fICAsIDk4ICk7IH0gd2hp
bGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIGRvIHsgaWYgKCghKCFidWZmZXIuc2l6
ZSgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNl
Rm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygxOTcsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxJbnN0cnVjdGlvblN0cmVhbS5o
IiwgIF9fRlVOQ1RJT05fXyAgLCA5OSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0K
ICAgICAgICBtX2luc3RydWN0aW9ucyA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRl
cj4oYnVmZmVyKTsNCiAgICB9DQoNCiAgICBpbmxpbmUgTXV0YWJsZVJlZiByZWYoT2Zmc2V0IG9m
ZnNldCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIE11dGFibGVS
ZWYgeyBtX2luc3RydWN0aW9ucywgb2Zmc2V0IH07DQogICAgfQ0KDQogICAgdm9pZCBzZWVrKHVu
c2lnbmVkIHBvc2l0aW9uKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBtX3Bv
c2l0aW9uID0gcG9zaXRpb247DQogICAgfQ0KDQogICAgdW5zaWduZWQgcG9zaXRpb24oKQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuIG1fcG9zaXRpb247DQogICAgfQ0KDQogICAgdm9pZCB3cml0ZSh1
aW50OF90IGJ5dGUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmIChtX3Bv
c2l0aW9uIDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpKQ0KICAgICAgICAgICAgbV9pbnN0cnVjdGlv
bnNbbV9wb3NpdGlvbisrXSA9IGJ5dGU7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgbV9p
bnN0cnVjdGlvbnMuYXBwZW5kKGJ5dGUpOw0KICAgICAgICAgICAgbV9wb3NpdGlvbisrOw0KICAg
ICAgICB9DQogICAgfQ0KDQogICAgdm9pZCB3cml0ZSh1aW50MTZfdCBoKQ0KICAgIHsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICB1aW50OF90IGJ5dGVzWzJdOw0KICAgICAgICBzdGQ6Om1l
bWNweShieXRlcywgJmgsIHNpemVvZihoKSk7DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgd3JpdGUoYnl0ZXNbMF0pOw0KICAgICAgICB3cml0ZShieXRlc1sxXSk7DQog
ICAgfQ0KDQogICAgdm9pZCB3cml0ZSh1aW50MzJfdCBpKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICB1aW50OF90IGJ5dGVzWzRdOw0KICAgICAgICBzdGQ6Om1lbWNweShieXRl
cywgJmksIHNpemVvZihpKSk7DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAg
ICAgd3JpdGUoYnl0ZXNbMF0pOw0KICAgICAgICB3cml0ZShieXRlc1sxXSk7DQogICAgICAgIHdy
aXRlKGJ5dGVzWzJdKTsNCiAgICAgICAgd3JpdGUoYnl0ZXNbM10pOw0KICAgIH0NCg0KICAgIHZv
aWQgcmV3aW5kKE11dGFibGVSZWYmIHJlZikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgbV9pbnN0cnVjdGlvbnMuc2hyaW5rKHJlZi5vZmZzZXQoKSk7DQogICAgICAgIG1fcG9z
aXRpb24gPSByZWYub2Zmc2V0KCk7DQogICAgfQ0KDQogICAgc3RkOjp1bmlxdWVfcHRyPEluc3Ry
dWN0aW9uU3RyZWFtPiBmaW5hbGl6ZSgpDQogICAgew0KICAgICAgICBtX2ZpbmFsaXplZCA9IHRy
dWU7DQogICAgICAgIG1faW5zdHJ1Y3Rpb25zLnNocmlua1RvRml0KCk7DQogICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IHsgbmV3IEluc3RydWN0aW9uU3Ry
ZWFtKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obV9pbnN0cnVjdGlvbnMpKSB9
Ow0KICAgIH0NCg0KICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4gZmluYWxp
emUoSW5zdHJ1Y3Rpb25CdWZmZXImIHVzZWRCdWZmZXIpDQogICAgew0KICAgICAgICBtX2ZpbmFs
aXplZCA9IHRydWU7DQoNCiAgICAgICAgSW5zdHJ1Y3Rpb25CdWZmZXIgcmVzdWx0QnVmZmVyKG1f
aW5zdHJ1Y3Rpb25zLnNpemUoKSk7DQogICAgICAgIGRvIHsgaWYgKCghKG1faW5zdHJ1Y3Rpb25z
LnNpemVJbkJ5dGVzKCkgPT0gcmVzdWx0QnVmZmVyLnNpemVJbkJ5dGVzKCkpKSkgZG8geyBXVEY6
OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZD
cmFzaFdpdGhJbmZvKDI3NiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEluc3RydWN0aW9uU3RyZWFtLmgiLCAgX19GVU5DVElPTl9f
ICAsIDEwMCApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBtZW1jcHko
cmVzdWx0QnVmZmVyLmRhdGEoKSwgbV9pbnN0cnVjdGlvbnMuZGF0YSgpLCBtX2luc3RydWN0aW9u
cy5zaXplSW5CeXRlcygpKTsNCg0KICAgICAgICB1c2VkQnVmZmVyID0gc3RkOjptb3ZlPFdURjo6
Q2hlY2tNb3ZlUGFyYW1ldGVyPihtX2luc3RydWN0aW9ucyk7DQoNCiAgICAgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvblN0cmVhbT4geyBuZXcgSW5zdHJ1Y3Rpb25TdHJlYW0o
c3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihyZXN1bHRCdWZmZXIpKSB9Ow0KICAg
IH0NCg0KICAgIE11dGFibGVSZWYgcmVmKCkNCiAgICB7DQogICAgICAgIHJldHVybiBNdXRhYmxl
UmVmIHsgbV9pbnN0cnVjdGlvbnMsIG1fcG9zaXRpb24gfTsNCiAgICB9DQoNCiAgICB2b2lkIHN3
YXAoSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG90aGVyKQ0KICAgIHsNCiAgICAgICAgc3RkOjpz
d2FwKG1fZmluYWxpemVkLCBvdGhlci5tX2ZpbmFsaXplZCk7DQogICAgICAgIHN0ZDo6c3dhcCht
X3Bvc2l0aW9uLCBvdGhlci5tX3Bvc2l0aW9uKTsNCiAgICAgICAgbV9pbnN0cnVjdGlvbnMuc3dh
cChvdGhlci5tX2luc3RydWN0aW9ucyk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIGNsYXNzIGl0
ZXJhdG9yIDogcHVibGljIE11dGFibGVSZWYgew0KICAgICAgICBmcmllbmQgY2xhc3MgSW5zdHJ1
Y3Rpb25TdHJlYW1Xcml0ZXI7DQoNCiAgICBwcm90ZWN0ZWQ6DQogICAgICAgIHVzaW5nIE11dGFi
bGVSZWY6Ok11dGFibGVSZWY7DQoNCiAgICBwdWJsaWM6DQogICAgICAgIE11dGFibGVSZWYmIG9w
ZXJhdG9yKigpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAg
fQ0KDQogICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcis9KHNpemVfdCBzaXplKQ0KICAgICAgICB7
DQogICAgICAgICAgICBtX2luZGV4ICs9IHNpemU7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7
DQogICAgICAgIH0NCg0KICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpDQogICAgICAgIHsN
CiAgICAgICAgICAgIHJldHVybiAqdGhpcyArPSBwdHIoKS0+c2l6ZSgpOw0KICAgICAgICB9DQog
ICAgfTsNCg0KcHVibGljOg0KICAgIGl0ZXJhdG9yIGJlZ2luKCkNCiAgICB7DQogICAgICAgIHJl
dHVybiBpdGVyYXRvciB7IG1faW5zdHJ1Y3Rpb25zLCAwIH07DQogICAgfQ0KDQogICAgaXRlcmF0
b3IgZW5kKCkNCiAgICB7DQogICAgICAgIHJldHVybiBpdGVyYXRvciB7IG1faW5zdHJ1Y3Rpb25z
LCBtX2luc3RydWN0aW9ucy5zaXplKCkgfTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdW5zaWdu
ZWQgbV9wb3NpdGlvbiB7IDAgfTsNCiAgICBib29sIG1fZmluYWxpemVkIHsgZmFsc2UgfTsNCn07
DQoNCg0KfSANCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxVbmxpbmtlZENvZGVCbG9jay5oIg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXExv
Y2tEdXJpbmdNYXJraW5nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoN
CnRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPg0KYXV0byBsb2NrRHVyaW5nTWFya2luZyhIZWFw
JiBoZWFwLCBMb2NrVHlwZSYgcGFzc2VkTG9jaykNCnsNCiAgICByZXR1cm4gaG9sZExvY2tJZihw
YXNzZWRMb2NrLCBoZWFwLm11dGF0b3JTaG91bGRCZUZlbmNlZCgpKTsNCn0NCg0KfSANCg0KI2xp
bmUgMzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
Ynl0ZWNvZGVcXFVubGlua2VkQ29kZUJsb2NrLmgiDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcRXhlY3V0
YWJsZUluZm8uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCiAgICANCmVudW0gY2xh
c3MgRGVyaXZlZENvbnRleHRUeXBlIDogdWludDhfdCB7IE5vbmUsIERlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQsIERlcml2ZWRNZXRob2RDb250ZXh0IH07DQplbnVtIGNsYXNzIEV2YWxDb250ZXh0
VHlwZSAgICA6IHVpbnQ4X3QgeyBOb25lLCBGdW5jdGlvbkV2YWxDb250ZXh0LCBJbnN0YW5jZUZp
ZWxkRXZhbENvbnRleHQgfTsNCmVudW0gY2xhc3MgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIg
OiB1aW50OF90IHsgTm8sIFllcyB9Ow0KDQoNCg0Kc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsNCiAg
ICBFeGVjdXRhYmxlSW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0LCBFdmFs
Q29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQ0KICAgICAgICA6IG1fdXNlc0V2YWwodXNlc0V2
YWwpDQogICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpDQogICAgICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikNCiAgICAgICAgLCBtX2NvbnN0
cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkNCiAgICAg
ICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkN
CiAgICAgICAgLCBtX3NjcmlwdE1vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUp
KQ0KICAgICAgICAsIG1fcGFyc2VNb2RlKHBhcnNlTW9kZSkNCiAgICAgICAgLCBtX2Rlcml2ZWRD
b250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkNCiAg
ICAgICAgLCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcikpDQogICAgICAgICwgbV9pc0Fycm93RnVuY3Rp
b25Db250ZXh0KGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpDQogICAgICAgICwgbV9pc0NsYXNzQ29u
dGV4dChpc0NsYXNzQ29udGV4dCkNCiAgICAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZXZhbENvbnRleHRUeXBlKSkNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAg
Ym9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0NCiAgICBib29sIGlz
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0NCiAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsg
fQ0KICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQ0KICAgIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTdXBl
ckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQ0KICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3Jp
cHRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNQYXJzZXJTY3JpcHRNb2RlPiht
X3NjcmlwdE1vZGUpOyB9DQogICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyc2VNb2RlOyB9DQogICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4o
bV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9DQogICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFs
Q29udGV4dFR5cGUpOyB9DQogICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9DQogICAgYm9vbCBpc0NsYXNzQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0NCiAgICBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NG
aWVsZEluaXRpYWxpemVyKTsgfQ0KDQpwcml2YXRlOg0KICAgIHVuc2lnbmVkIG1fdXNlc0V2YWwg
OiAxOw0KICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7DQogICAgdW5zaWduZWQgbV9p
c0J1aWx0aW5GdW5jdGlvbiA6IDE7DQogICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
Ow0KICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsNCiAgICB1bnNpZ25lZCBtX3Njcmlw
dE1vZGU6IDE7DQogICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOw0KICAgIHVuc2lnbmVk
IG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsNCiAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVs
ZEluaXRpYWxpemVyIDogMTsNCiAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQg
OiAxOw0KICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOw0KICAgIHVuc2lnbmVkIG1f
ZXZhbENvbnRleHRUeXBlIDogMjsNCn07DQoNCn0gDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaCINCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHBhcnNlclxcUGFyc2VyVG9rZW5zLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSWRlbnRpZmllcjsNCg0KZW51
bSB7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgVW5hcnlPcFRva2VuRmxhZyA9IDEgPDwgOCwNCiAgICBLZXl3b3JkVG9rZW5G
bGFnID0gMSA8PCA5LA0KICAgIEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgPSAxMCwNCiAg
ICBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0ID0gNCwNCiAg
ICBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZU1hc2sgPSAxNSA8PCBCaW5hcnlPcFRva2VuUHJlY2Vk
ZW5jZVNoaWZ0LA0KICAgIEVycm9yVG9rZW5GbGFnID0gMSA8PCAoQmluYXJ5T3BUb2tlbkFsbG93
c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlmdCArIEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hp
ZnQgKyA2KSwNCiAgICBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZyA9IEVycm9yVG9rZW5GbGFn
IDw8IDEsDQogICAgUmlnaHRBc3NvY2lhdGl2ZUJpbmFyeU9wVG9rZW5GbGFnID0gVW50ZXJtaW5h
dGVkRXJyb3JUb2tlbkZsYWcgPDwgMQ0KfTsNCg0KDQoNCg0KZW51bSBKU1Rva2VuVHlwZSB7DQog
ICAgTlVMTFRPS0VOID0gS2V5d29yZFRva2VuRmxhZywNCiAgICBUUlVFVE9LRU4sDQogICAgRkFM
U0VUT0tFTiwNCiAgICBCUkVBSywNCiAgICBDQVNFLA0KICAgIERFRkFVTFQsDQogICAgRk9SLA0K
ICAgIE5FVywNCiAgICBWQVIsDQogICAgQ09OU1RUT0tFTiwNCiAgICBDT05USU5VRSwNCiAgICBG
VU5DVElPTiwNCiAgICBSRVRVUk4sDQogICAgSUYsDQogICAgVEhJU1RPS0VOLA0KICAgIERPLA0K
ICAgIFdISUxFLA0KICAgIFNXSVRDSCwNCiAgICBXSVRILA0KICAgIFJFU0VSVkVELA0KICAgIFJF
U0VSVkVEX0lGX1NUUklDVCwNCiAgICBUSFJPVywNCiAgICBUUlksDQogICAgQ0FUQ0gsDQogICAg
RklOQUxMWSwNCiAgICBERUJVR0dFUiwNCiAgICBFTFNFLA0KICAgIElNUE9SVCwNCiAgICBFWFBP
UlRfLA0KICAgIENMQVNTVE9LRU4sDQogICAgRVhURU5EUywNCiAgICBTVVBFUiwNCg0KICAgIA0K
ICAgIA0KICAgIExFVCwNCiAgICBZSUVMRCwNCiAgICBBV0FJVCwNCg0KICAgIEZpcnN0Q29udGV4
dHVhbEtleXdvcmRUb2tlbiA9IExFVCwNCiAgICBMYXN0Q29udGV4dHVhbEtleXdvcmRUb2tlbiA9
IEFXQUlULA0KICAgIEZpcnN0U2FmZUNvbnRleHR1YWxLZXl3b3JkVG9rZW4gPSBBV0FJVCwNCiAg
ICBMYXN0U2FmZUNvbnRleHR1YWxLZXl3b3JkVG9rZW4gPSBMYXN0Q29udGV4dHVhbEtleXdvcmRU
b2tlbiwNCg0KICAgIE9QRU5CUkFDRSA9IDAsDQogICAgQ0xPU0VCUkFDRSwNCiAgICBPUEVOUEFS
RU4sDQogICAgQ0xPU0VQQVJFTiwNCiAgICBPUEVOQlJBQ0tFVCwNCiAgICBDTE9TRUJSQUNLRVQs
DQogICAgQ09NTUEsDQogICAgUVVFU1RJT04sDQogICAgQkFDS1FVT1RFLA0KICAgIElOVEVHRVIs
DQogICAgRE9VQkxFLA0KICAgIEJJR0lOVCwNCiAgICBJREVOVCwNCiAgICBQUklWQVRFTkFNRSwN
CiAgICBTVFJJTkcsDQogICAgVEVNUExBVEUsDQogICAgUkVHRVhQLA0KICAgIFNFTUlDT0xPTiwN
CiAgICBDT0xPTiwNCiAgICBET1QsDQogICAgRU9GVE9LLA0KICAgIEVRVUFMLA0KICAgIFBMVVNF
UVVBTCwNCiAgICBNSU5VU0VRVUFMLA0KICAgIE1VTFRFUVVBTCwNCiAgICBESVZFUVVBTCwNCiAg
ICBMU0hJRlRFUVVBTCwNCiAgICBSU0hJRlRFUVVBTCwNCiAgICBVUlNISUZURVFVQUwsDQogICAg
TU9ERVFVQUwsDQogICAgUE9XRVFVQUwsDQogICAgQklUQU5ERVFVQUwsDQogICAgQklUWE9SRVFV
QUwsDQogICAgQklUT1JFUVVBTCwNCiAgICBDT0FMRVNDRUVRVUFMLA0KICAgIE9SRVFVQUwsDQog
ICAgQU5ERVFVQUwsDQogICAgRE9URE9URE9ULA0KICAgIEFSUk9XRlVOQ1RJT04sDQogICAgUVVF
U1RJT05ET1QsDQogICAgTGFzdFVudGFnZ2VkVG9rZW4sDQoNCiAgICANCiAgICBQTFVTUExVUyA9
IDAgfCBVbmFyeU9wVG9rZW5GbGFnLA0KICAgIE1JTlVTTUlOVVMgPSAxIHwgVW5hcnlPcFRva2Vu
RmxhZywNCiAgICBBVVRPUExVU1BMVVMgPSAyIHwgVW5hcnlPcFRva2VuRmxhZywNCiAgICBBVVRP
TUlOVVNNSU5VUyA9IDMgfCBVbmFyeU9wVG9rZW5GbGFnLA0KICAgIEVYQ0xBTUFUSU9OID0gNCB8
IFVuYXJ5T3BUb2tlbkZsYWcsDQogICAgVElMREUgPSA1IHwgVW5hcnlPcFRva2VuRmxhZywNCiAg
ICBUWVBFT0YgPSA2IHwgVW5hcnlPcFRva2VuRmxhZyB8IEtleXdvcmRUb2tlbkZsYWcsDQogICAg
Vk9JRFRPS0VOID0gNyB8IFVuYXJ5T3BUb2tlbkZsYWcgfCBLZXl3b3JkVG9rZW5GbGFnLA0KICAg
IERFTEVURVRPS0VOID0gOCB8IFVuYXJ5T3BUb2tlbkZsYWcgfCBLZXl3b3JkVG9rZW5GbGFnLA0K
ICAgIENPQUxFU0NFID0gMCB8ICgoKDEpIDw8IEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQp
IHwgKCgxKSA8PCAoQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5B
bGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQpKSksDQogICAgT1IgPSAwIHwgKCgoMikg
PDwgQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCkgfCAoKDIpIDw8IChCaW5hcnlPcFRva2Vu
UHJlY2VkZW5jZVNoaWZ0ICsgQmluYXJ5T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFkZGl0aW9u
YWxTaGlmdCkpKSwNCiAgICBBTkQgPSAwIHwgKCgoMykgPDwgQmluYXJ5T3BUb2tlblByZWNlZGVu
Y2VTaGlmdCkgfCAoKDMpIDw8IChCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0ICsgQmluYXJ5
T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlmdCkpKSwNCiAgICBCSVRPUiA9
IDAgfCAoKCg0KSA8PCBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgoNCkgPDwgKEJp
bmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRl
bmNlQWRkaXRpb25hbFNoaWZ0KSkpLA0KICAgIEJJVFhPUiA9IDAgfCAoKCg1KSA8PCBCaW5hcnlP
cFRva2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgoNSkgPDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNl
U2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkp
LA0KICAgIEJJVEFORCA9IDAgfCAoKCg2KSA8PCBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0
KSB8ICgoNikgPDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2Vu
QWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkpLA0KICAgIEVRRVEgPSAwIHwgKCgo
NykgPDwgQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCkgfCAoKDcpIDw8IChCaW5hcnlPcFRv
a2VuUHJlY2VkZW5jZVNoaWZ0ICsgQmluYXJ5T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFkZGl0
aW9uYWxTaGlmdCkpKSwNCiAgICBORSA9IDEgfCAoKCg3KSA8PCBCaW5hcnlPcFRva2VuUHJlY2Vk
ZW5jZVNoaWZ0KSB8ICgoNykgPDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgKyBCaW5h
cnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkpLA0KICAgIFNUUkVR
ID0gMiB8ICgoKDcpIDw8IEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQpIHwgKCg3KSA8PCAo
QmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNl
ZGVuY2VBZGRpdGlvbmFsU2hpZnQpKSksDQogICAgU1RSTkVRID0gMyB8ICgoKDcpIDw8IEJpbmFy
eU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQpIHwgKCg3KSA8PCAoQmluYXJ5T3BUb2tlblByZWNlZGVu
Y2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQp
KSksDQogICAgTFQgPSAwIHwgKCgoOCkgPDwgQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCkg
fCAoKDgpIDw8IChCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0ICsgQmluYXJ5T3BUb2tlbkFs
bG93c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlmdCkpKSwNCiAgICBHVCA9IDEgfCAoKCg4KSA8
PCBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgoOCkgPDwgKEJpbmFyeU9wVG9rZW5Q
cmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25h
bFNoaWZ0KSkpLA0KICAgIExFID0gMiB8ICgoKDgpIDw8IEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNl
U2hpZnQpIHwgKCg4KSA8PCAoQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9w
VG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQpKSksDQogICAgR0UgPSAzIHwg
KCgoOCkgPDwgQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCkgfCAoKDgpIDw8IChCaW5hcnlP
cFRva2VuUHJlY2VkZW5jZVNoaWZ0ICsgQmluYXJ5T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFk
ZGl0aW9uYWxTaGlmdCkpKSwNCiAgICBJTlNUQU5DRU9GID0gNCB8ICgoKDgpIDw8IEJpbmFyeU9w
VG9rZW5QcmVjZWRlbmNlU2hpZnQpIHwgKCg4KSA8PCAoQmluYXJ5T3BUb2tlblByZWNlZGVuY2VT
aGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQpKSkg
fCBLZXl3b3JkVG9rZW5GbGFnLA0KICAgIElOVE9LRU4gPSA1IHwgKCg4KSA8PCAoQmluYXJ5T3BU
b2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRp
dGlvbmFsU2hpZnQpKSB8IEtleXdvcmRUb2tlbkZsYWcsDQogICAgTFNISUZUID0gMCB8ICgoKDkp
IDw8IEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQpIHwgKCg5KSA8PCAoQmluYXJ5T3BUb2tl
blByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlv
bmFsU2hpZnQpKSksDQogICAgUlNISUZUID0gMSB8ICgoKDkpIDw8IEJpbmFyeU9wVG9rZW5QcmVj
ZWRlbmNlU2hpZnQpIHwgKCg5KSA8PCAoQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJp
bmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hpZnQpKSksDQogICAgVVJT
SElGVCA9IDIgfCAoKCg5KSA8PCBCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgoOSkg
PDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5Q
cmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkpLA0KICAgIFBMVVMgPSAwIHwgKCgoMTApIDw8IEJp
bmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQpIHwgKCgxMCkgPDwgKEJpbmFyeU9wVG9rZW5QcmVj
ZWRlbmNlU2hpZnQgKyBCaW5hcnlPcFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNo
aWZ0KSkpIHwgVW5hcnlPcFRva2VuRmxhZywNCiAgICBNSU5VUyA9IDEgfCAoKCgxMCkgPDwgQmlu
YXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCkgfCAoKDEwKSA8PCAoQmluYXJ5T3BUb2tlblByZWNl
ZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVuY2VBZGRpdGlvbmFsU2hp
ZnQpKSkgfCBVbmFyeU9wVG9rZW5GbGFnLA0KICAgIFRJTUVTID0gMCB8ICgoKDExKSA8PCBCaW5h
cnlPcFRva2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgoMTEpIDw8IChCaW5hcnlPcFRva2VuUHJlY2Vk
ZW5jZVNoaWZ0ICsgQmluYXJ5T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlm
dCkpKSwNCiAgICBESVZJREUgPSAxIHwgKCgoMTEpIDw8IEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNl
U2hpZnQpIHwgKCgxMSkgPDwgKEJpbmFyeU9wVG9rZW5QcmVjZWRlbmNlU2hpZnQgKyBCaW5hcnlP
cFRva2VuQWxsb3dzSW5QcmVjZWRlbmNlQWRkaXRpb25hbFNoaWZ0KSkpLA0KICAgIE1PRCA9IDIg
fCAoKCgxMSkgPDwgQmluYXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCkgfCAoKDExKSA8PCAoQmlu
YXJ5T3BUb2tlblByZWNlZGVuY2VTaGlmdCArIEJpbmFyeU9wVG9rZW5BbGxvd3NJblByZWNlZGVu
Y2VBZGRpdGlvbmFsU2hpZnQpKSksDQogICAgUE9XID0gMCB8ICgoKDEyKSA8PCBCaW5hcnlPcFRv
a2VuUHJlY2VkZW5jZVNoaWZ0KSB8ICgoMTIpIDw8IChCaW5hcnlPcFRva2VuUHJlY2VkZW5jZVNo
aWZ0ICsgQmluYXJ5T3BUb2tlbkFsbG93c0luUHJlY2VkZW5jZUFkZGl0aW9uYWxTaGlmdCkpKSB8
IFJpZ2h0QXNzb2NpYXRpdmVCaW5hcnlPcFRva2VuRmxhZywgDQogICAgRVJST1JUT0sgPSAwIHwg
RXJyb3JUb2tlbkZsYWcsDQogICAgVU5URVJNSU5BVEVEX0lERU5USUZJRVJfRVNDQVBFX0VSUk9S
VE9LID0gMCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsDQog
ICAgSU5WQUxJRF9JREVOVElGSUVSX0VTQ0FQRV9FUlJPUlRPSyA9IDEgfCBFcnJvclRva2VuRmxh
ZywNCiAgICBVTlRFUk1JTkFURURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSyA9
IDIgfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLA0KICAgIElO
VkFMSURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSyA9IDMgfCBFcnJvclRva2Vu
RmxhZywNCiAgICBVTlRFUk1JTkFURURfTVVMVElMSU5FX0NPTU1FTlRfRVJST1JUT0sgPSA0IHwg
RXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywNCiAgICBVTlRFUk1J
TkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNSB8IEVycm9yVG9rZW5GbGFnIHwgVW50
ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsDQogICAgVU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9F
UlJPUlRPSyA9IDYgfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFn
LA0KICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVycm9yVG9rZW5G
bGFnLA0KICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDggfCBFcnJv
clRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLA0KICAgIElOVkFMSURfU1RS
SU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsDQogICAgSU5WQUxJRF9Q
UklWQVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnLA0KICAgIFVOVEVSTUlO
QVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LID0gMTEgfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWlu
YXRlZEVycm9yVG9rZW5GbGFnLA0KICAgIFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9S
VE9LID0gMTIgfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLA0K
ICAgIFVOVEVSTUlOQVRFRF9URU1QTEFURV9MSVRFUkFMX0VSUk9SVE9LID0gMTMgfCBFcnJvclRv
a2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLA0KICAgIFVOVEVSTUlOQVRFRF9S
RUdFWFBfTElURVJBTF9FUlJPUlRPSyA9IDE0IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0
ZWRFcnJvclRva2VuRmxhZywNCiAgICBJTlZBTElEX1RFTVBMQVRFX0xJVEVSQUxfRVJST1JUT0sg
PSAxNSB8IEVycm9yVG9rZW5GbGFnLA0KICAgIFVORVhQRUNURURfRVNDQVBFX0VSUk9SVE9LID0g
MTYgfCBFcnJvclRva2VuRmxhZywNCiAgICBJTlZBTElEX1VOSUNPREVfRU5DT0RJTkdfRVJST1JU
T0sgPSAxNyB8IEVycm9yVG9rZW5GbGFnLA0KICAgIElOVkFMSURfSURFTlRJRklFUl9VTklDT0RF
X0VSUk9SVE9LID0gMTggfCBFcnJvclRva2VuRmxhZywNCn07DQpzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQT1cpIDw9IDB4MDBmZmZmZmZVLCAiSlNUb2tlblR5cGUgbXVzdCBi
ZSAyNGJpdHMuIik7DQoNCnN0cnVjdCBKU1RleHRQb3NpdGlvbiB7DQogICAgSlNUZXh0UG9zaXRp
b24oKSA9IGRlZmF1bHQ7DQogICAgSlNUZXh0UG9zaXRpb24oaW50IF9saW5lLCBpbnQgX29mZnNl
dCwgaW50IF9saW5lU3RhcnRPZmZzZXQpIA0KICAgICAgICA6IGxpbmUoX2xpbmUpDQogICAgICAg
ICwgb2Zmc2V0KF9vZmZzZXQpDQogICAgICAgICwgbGluZVN0YXJ0T2Zmc2V0KF9saW5lU3RhcnRP
ZmZzZXQpDQogICAgeyANCiAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOw0KICAgIH0NCg0KICAg
IEpTVGV4dFBvc2l0aW9uIG9wZXJhdG9yKyhpbnQgYWRqdXN0bWVudCkgY29uc3QgeyByZXR1cm4g
SlNUZXh0UG9zaXRpb24obGluZSwgb2Zmc2V0ICsgYWRqdXN0bWVudCwgbGluZVN0YXJ0T2Zmc2V0
KTsgfQ0KICAgIEpTVGV4dFBvc2l0aW9uIG9wZXJhdG9yKyh1bnNpZ25lZCBhZGp1c3RtZW50KSBj
b25zdCB7IHJldHVybiAqdGhpcyArIHN0YXRpY19jYXN0PGludD4oYWRqdXN0bWVudCk7IH0NCiAg
ICBKU1RleHRQb3NpdGlvbiBvcGVyYXRvci0oaW50IGFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJu
ICp0aGlzICsgKC0gYWRqdXN0bWVudCk7IH0NCiAgICBKU1RleHRQb3NpdGlvbiBvcGVyYXRvci0o
dW5zaWduZWQgYWRqdXN0bWVudCkgY29uc3QgeyByZXR1cm4gKnRoaXMgKyAoLSBzdGF0aWNfY2Fz
dDxpbnQ+KGFkanVzdG1lbnQpKTsgfQ0KDQogICAgb3BlcmF0b3IgaW50KCkgY29uc3QgeyByZXR1
cm4gb2Zmc2V0OyB9DQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNUZXh0UG9zaXRpb24m
IG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGxpbmUgPT0gb3RoZXIubGluZQ0K
ICAgICAgICAgICAgJiYgb2Zmc2V0ID09IG90aGVyLm9mZnNldA0KICAgICAgICAgICAgJiYgbGlu
ZVN0YXJ0T2Zmc2V0ID09IG90aGVyLmxpbmVTdGFydE9mZnNldDsNCiAgICB9DQogICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsNCiAgICB9DQoNCiAgICBpbnQgY29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gb2Zmc2V0IC0gbGluZVN0YXJ0T2Zmc2V0OyB9DQogICAgdm9pZCBjaGVj
a0NvbnNpc3RlbmN5KCkNCiAgICB7DQogICAgICAgIA0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIA0KICAgIGlu
dCBsaW5lIHsgLTEgfTsNCiAgICBpbnQgb2Zmc2V0IHsgLTEgfTsNCiAgICBpbnQgbGluZVN0YXJ0
T2Zmc2V0IHsgLTEgfTsNCn07DQoNCnVuaW9uIEpTVG9rZW5EYXRhIHsNCiAgICBzdHJ1Y3Qgew0K
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBjb29rZWQ7DQogICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIHJhdzsNCiAgICAgICAgYm9vbCBpc1RhaWw7DQogICAgfTsNCiAgICBzdHJ1Y3Qgew0KICAg
ICAgICB1aW50MzJfdCBsaW5lOw0KICAgICAgICB1aW50MzJfdCBvZmZzZXQ7DQogICAgICAgIHVp
bnQzMl90IGxpbmVTdGFydE9mZnNldDsNCiAgICB9Ow0KICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsN
CiAgICBzdHJ1Y3Qgew0KICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudDsNCiAgICAgICAg
Ym9vbCBlc2NhcGVkOw0KICAgIH07DQogICAgc3RydWN0IHsNCiAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogYmlnSW50U3RyaW5nOw0KICAgICAgICB1aW50OF90IHJhZGl4Ow0KICAgIH07DQogICAg
c3RydWN0IHsNCiAgICAgICAgY29uc3QgSWRlbnRpZmllciogcGF0dGVybjsNCiAgICAgICAgY29u
c3QgSWRlbnRpZmllciogZmxhZ3M7DQogICAgfTsNCn07DQoNCnN0cnVjdCBKU1Rva2VuTG9jYXRp
b24gew0KICAgIEpTVG9rZW5Mb2NhdGlvbigpID0gZGVmYXVsdDsNCg0KICAgIGludCBsaW5lIHsg
MCB9Ow0KICAgIHVuc2lnbmVkIGxpbmVTdGFydE9mZnNldCB7IDAgfTsNCiAgICB1bnNpZ25lZCBz
dGFydE9mZnNldCB7IDAgfTsNCiAgICB1bnNpZ25lZCBlbmRPZmZzZXQgeyAwIH07DQp9Ow0KDQpz
dHJ1Y3QgSlNUb2tlbiB7DQogICAgSlNUb2tlblR5cGUgbV90eXBlIHsgRVJST1JUT0sgfTsNCiAg
ICBKU1Rva2VuRGF0YSBtX2RhdGEgeyB7IG51bGxwdHIsIG51bGxwdHIsIGZhbHNlIH0gfTsNCiAg
ICBKU1Rva2VuTG9jYXRpb24gbV9sb2NhdGlvbjsNCiAgICBKU1RleHRQb3NpdGlvbiBtX3N0YXJ0
UG9zaXRpb247DQogICAgSlNUZXh0UG9zaXRpb24gbV9lbmRQb3NpdGlvbjsNCn07DQoNCl9fZm9y
Y2VpbmxpbmUgYm9vbCBpc1VwZGF0ZU9wKEpTVG9rZW5UeXBlIHRva2VuKQ0Kew0KICAgIHJldHVy
biB0b2tlbiA+PSBQTFVTUExVUyAmJiB0b2tlbiA8PSBBVVRPTUlOVVNNSU5VUzsNCn0NCg0KX19m
b3JjZWlubGluZSBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikNCnsNCiAgICByZXR1
cm4gdG9rZW4gJiBVbmFyeU9wVG9rZW5GbGFnOw0KfQ0KDQp9IA0KI2xpbmUgMzggIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccGFyc2VyXFxTb3VyY2VDb2RlLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHBhcnNlclxcVW5saW5rZWRTb3VyY2VDb2RlLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHBhcnNlclxcU291cmNlUHJvdmlkZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
Q2FjaGVkQnl0ZWNvZGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQ2FjaGVVcGRhdGUuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcQ2FjaGVQYXlsb2FkLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Zp
bGVTeXN0ZW0uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9GaWxlU3lzdGVtLmgiDQoNCg0KdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENG
RGF0YVJlZjsNCiNsaW5lIDQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9GaWxlU3lzdGVtLmgiDQoNCmNsYXNzIE5TU3RyaW5nOw0KDQoN
CnR5cGVkZWYgdm9pZCAqSEFORExFOw0KI2xpbmUgNTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0ZpbGVTeXN0ZW0uaCINCg0KDQoNCiNs
aW5lIDU4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9GaWxlU3lzdGVtLmgiDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpzdHJ1Y3QgRmlsZU1l
dGFkYXRhOw0KDQpuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwgew0KDQoNCg0KDQoNCiNsaW5lIDcw
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9GaWxlU3lzdGVtLmgiDQp0eXBlZGVmIEhBTkRMRSBQbGF0Zm9ybUZpbGVIYW5kbGU7DQoNCg0K
Y29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSByZWlu
dGVycHJldF9jYXN0PEhBTkRMRT4oLTEpOw0KDQoNCg0KI2xpbmUgNzggIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0ZpbGVTeXN0ZW0uaCIN
Cg0KZW51bSBjbGFzcyBGaWxlT3Blbk1vZGUgew0KICAgIFJlYWQsDQogICAgV3JpdGUsDQogICAg
UmVhZFdyaXRlLA0KDQoNCiNsaW5lIDg2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9GaWxlU3lzdGVtLmgiDQp9Ow0KDQplbnVtIGNsYXNz
IEZpbGVBY2Nlc3NQZXJtaXNzaW9uIDogYm9vbCB7DQogICAgVXNlciwNCiAgICBBbGwNCn07DQoN
CmVudW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4gew0KICAgIEJlZ2lubmluZywNCiAgICBDdXJyZW50
LA0KICAgIEVuZCwNCn07DQoNCmVudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsNCiAgICBTaGFyZWQg
PSAxIDw8IDAsDQogICAgRXhjbHVzaXZlID0gMSA8PCAxLA0KICAgIE5vbmJsb2NraW5nID0gMSA8
PCAyLA0KfTsNCg0KZW51bSBjbGFzcyBNYXBwZWRGaWxlTW9kZSB7DQogICAgU2hhcmVkLA0KICAg
IFByaXZhdGUsDQp9Ow0KDQplbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgeyBO
bywgWWVzIH07DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGZpbGVFeGlzdHMoY29uc3Qg
U3RyaW5nJik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0
cmluZyYpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBtb3ZlRmlsZShjb25z
dCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCk7DQpfX2RlY2xzcGVjKGRs
bGltcG9ydCkgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJlc3Vs
dCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBPcHRpb25h
bDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7DQpfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgT3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJik7IA0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIE9wdGlvbmFsPEZpbGVNZXRh
ZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgT3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyhjb25zdCBTdHJpbmcmIHBhdGgpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgZmlsZUlz
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7DQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBj
b25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpOw0KX19kZWNsc3BlYyhkbGxpbXBv
cnQpIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0
IFN0cmluZyYgcGF0aCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBtYWtlQWxsRGlyZWN0
b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcg
aG9tZURpcmVjdG9yeVBhdGgoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcgcGF0aEdl
dEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZyBk
aXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wg
Z2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90Jik7DQpfX2RlY2xzcGVj
KGRsbGltcG9ydCkgT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJp
bmcmKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25z
dCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCk7DQpf
X2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzZXRN
ZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyID0geyB9KTsNCg0KYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1
cCgpOyANCmJvb2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IA0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIENT
dHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYpOw0KX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IGNoYXIqKTsNCg0KaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGU7IH0NCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJp
bmcmIHN1ZmZpeCA9IHsgfSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlLCBGaWxlQWNjZXNz
UGVybWlzc2lvbiA9IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwsIGJvb2wgZmFpbElmRmlsZUV4
aXN0cyA9IGZhbHNlKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGNsb3NlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUmKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGxvbmcgbG9uZyBzZWVr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2lu
KTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW50IHdy
aXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVP
cGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gPSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2
ZSk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlKTsNCg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGFwcGVuZEZp
bGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBoYXJkTGluayhjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7DQoNCl9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvbik7DQoNCg0KDQoNCiNsaW5lIDE3NCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRmlsZVN5c3RlbS5o
Ig0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcgZW5jb2RlRm9yRmlsZU5hbWUoY29u
c3QgU3RyaW5nJik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIGRlY29kZUZyb21GaWxl
bmFtZShjb25zdCBTdHJpbmcmKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgZmlsZXNI
YXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsNCg0KDQpfX2RlY2xz
cGVjKGRsbGltcG9ydCkgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3RyaW5n
Jik7DQojbGluZSAxODQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL0ZpbGVTeXN0ZW0uaCINCg0KDQoNCiNsaW5lIDE4OCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRmlsZVN5c3Rl
bS5oIg0KDQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIHJvYW1pbmdV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3Ry
aW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJv
b2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7DQojbGluZSAxOTUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0Zp
bGVTeXN0ZW0uaCINCg0KDQoNCg0KI2xpbmUgMjAwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9GaWxlU3lzdGVtLmgiDQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7DQoNCl9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSBib29sIGlzU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChjb25zdCBTdHJp
bmcmKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIG1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBG
b3JQYXRoKGNvbnN0IFN0cmluZyYpOw0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCB1bm1h
cFZpZXdPZkZpbGUodm9pZCogYnVmZmVyLCBzaXplX3QpOw0KDQpjbGFzcyBNYXBwZWRGaWxlRGF0
YSB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJl
dHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0
TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZh
c3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6
OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHAp
IHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51
bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVz
aW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJl
VG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAgICBNYXBw
ZWRGaWxlRGF0YSgpIHsgfQ0KICAgIE1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYpOw0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBNYXBwZWRGaWxlTW9kZSwgYm9vbCYgc3VjY2Vzcyk7DQogICAgX19kZWNsc3BlYyhk
bGxpbXBvcnQpIE1hcHBlZEZpbGVEYXRhKFBsYXRmb3JtRmlsZUhhbmRsZSwgTWFwcGVkRmlsZU1v
ZGUsIGJvb2wmIHN1Y2Nlc3MpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBNYXBwZWRGaWxl
RGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUsIEZpbGVPcGVuTW9kZSwgTWFwcGVkRmlsZU1vZGUsIGJv
b2wmIHN1Y2Nlc3MpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB+TWFwcGVkRmlsZURhdGEo
KTsNCiAgICBNYXBwZWRGaWxlRGF0YSYgb3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYpOw0KDQog
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9maWxlRGF0YTsg
fQ0KICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9DQog
ICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0NCg0KICAgIHZv
aWQqIGxlYWtIYW5kbGUoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZmlsZURhdGEsIG51bGxw
dHIpOyB9DQoNCnByaXZhdGU6DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgbWFwRmls
ZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIEZpbGVPcGVuTW9kZSwgTWFwcGVkRmlsZU1vZGUp
Ow0KDQogICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsNCiAgICB1bnNpZ25lZCBtX2Zp
bGVTaXplIHsgMCB9Ow0KfTsNCg0KaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0
YShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtYXBNb2RlLCBib29s
JiBzdWNjZXNzKQ0Kew0KICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGhhbmRsZSwgRmlsZU9w
ZW5Nb2RlOjpSZWFkLCBtYXBNb2RlKTsNCn0NCg0KaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBw
ZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBGaWxlT3Blbk1vZGUgb3Blbk1v
ZGUsIE1hcHBlZEZpbGVNb2RlIG1hcE1vZGUsIGJvb2wmIHN1Y2Nlc3MpDQp7DQogICAgc3VjY2Vz
cyA9IG1hcEZpbGVIYW5kbGUoaGFuZGxlLCBvcGVuTW9kZSwgbWFwTW9kZSk7DQp9DQoNCmlubGlu
ZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJiBvdGhlcikN
CiAgICA6IG1fZmlsZURhdGEoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRy
KSkNCiAgICAsIG1fZmlsZVNpemUoc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKSkN
CnsNCn0NCg0KaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6b3BlcmF0b3I9
KE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpDQp7DQogICAgbV9maWxlRGF0YSA9IHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cik7DQogICAgbV9maWxlU2l6ZSA9IHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCk7DQogICAgcmV0dXJuICp0aGlzOw0KfQ0KDQp9IA0K
fSANCg0KbmFtZXNwYWNlIEZpbGVTeXN0ZW0gPSBXVEY6OkZpbGVTeXN0ZW1JbXBsOw0KI2xpbmUg
MzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcQ2FjaGVQYXlsb2FkLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENhY2hl
UGF5bG9hZCB7DQpwdWJsaWM6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBDYWNo
ZVBheWxvYWQgbWFrZU1hcHBlZFBheWxvYWQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBDYWNoZVBheWxvYWQgbWFrZU1hbGxv
Y1BheWxvYWQoTWFsbG9jUHRyPHVpbnQ4X3QsIFZNTWFsbG9jPiYmLCBzaXplX3QpOw0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgQ2FjaGVQYXlsb2FkIG1ha2VFbXB0eVBheWxvYWQo
KTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBDYWNoZVBheWxvYWQoQ2FjaGVQYXlsb2Fk
JiYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB+Q2FjaGVQYXlsb2FkKCk7DQogICAgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIENhY2hlUGF5bG9hZCYgb3BlcmF0b3I9KENhY2hlUGF5bG9hZCYm
IG90aGVyKTsNCg0KICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0NCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQ0KDQpwcml2
YXRlOg0KICAgIENhY2hlUGF5bG9hZChib29sIG1hcHBlZCwgdm9pZCogZGF0YSwgc2l6ZV90IHNp
emUpDQogICAgICAgIDogbV9tYXBwZWQobWFwcGVkKQ0KICAgICAgICAsIG1fc2l6ZShzaXplKQ0K
ICAgICAgICAsIG1fZGF0YShzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YSkpDQogICAgew0KICAg
IH0NCg0KICAgIHZvaWQgZnJlZURhdGEoKTsNCg0KICAgIGJvb2wgbV9tYXBwZWQ7DQogICAgc2l6
ZV90IG1fc2l6ZTsNCiAgICB1aW50OF90KiBtX2RhdGE7DQp9Ow0KDQp9IA0KI2xpbmUgMjkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
Q2FjaGVVcGRhdGUuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQ2FjaGVkVHlwZXMuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHBhcnNlclxcVmFyaWFibGVFbnZpcm9ubWVudC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCm5hbWVz
cGFjZSBKU0Mgew0KDQpzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsNCnB1YmxpYzoN
CiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgaXNDYXB0dXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0
cyAmIElzQ2FwdHVyZWQ7IH0NCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgaXNDb25zdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0cyAmIElzQ29uc3Q7IH0NCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgaXNW
YXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ZhcjsgfQ0KICAgIF9fZm9yY2VpbmxpbmUg
Ym9vbCBpc0xldCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTGV0OyB9DQogICAgX19mb3Jj
ZWlubGluZSBib29sIGlzRXhwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0V4cG9y
dGVkOyB9DQogICAgX19mb3JjZWlubGluZSBib29sIGlzSW1wb3J0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc0ltcG9ydGVkOyB9DQogICAgX19mb3JjZWlubGluZSBib29sIGlzSW1wb3J0
ZWROYW1lc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0ltcG9ydGVkTmFtZXNwYWNl
OyB9DQogICAgX19mb3JjZWlubGluZSBib29sIGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc0Z1bmN0aW9uOyB9DQogICAgX19mb3JjZWlubGluZSBib29sIGlzUGFyYW1ldGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQYXJhbWV0ZXI7IH0NCiAgICBfX2ZvcmNlaW5s
aW5lIGJvb2wgaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQ0KICAgIF9fZm9yY2Vpbmxp
bmUgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRl
TmFtZTsgfQ0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0
cyB8PSBJc0NhcHR1cmVkOyB9DQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldElzQ29uc3QoKSB7
IG1fYml0cyB8PSBJc0NvbnN0OyB9DQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldElzVmFyKCkg
eyBtX2JpdHMgfD0gSXNWYXI7IH0NCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgc2V0SXNMZXQoKSB7
IG1fYml0cyB8PSBJc0xldDsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXRJc0V4cG9ydGVk
KCkgeyBtX2JpdHMgfD0gSXNFeHBvcnRlZDsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXRJ
c0ltcG9ydGVkKCkgeyBtX2JpdHMgfD0gSXNJbXBvcnRlZDsgfQ0KICAgIF9fZm9yY2VpbmxpbmUg
dm9pZCBzZXRJc0ltcG9ydGVkTmFtZXNwYWNlKCkgeyBtX2JpdHMgfD0gSXNJbXBvcnRlZE5hbWVz
cGFjZTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMg
fD0gSXNGdW5jdGlvbjsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXRJc1BhcmFtZXRlcigp
IHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9DQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldElz
U2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGU7IH0NCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgc2V0SXNQcml2YXRlTmFt
ZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9p
ZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9DQoNCiAgICB1aW50MTZfdCBiaXRz
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9DQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJl
dHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBlbnVt
IFRyYWl0cyA6IHVpbnQxNl90IHsNCiAgICAgICAgSXNDYXB0dXJlZCA9IDEgPDwgMCwNCiAgICAg
ICAgSXNDb25zdCA9IDEgPDwgMSwNCiAgICAgICAgSXNWYXIgPSAxIDw8IDIsDQogICAgICAgIElz
TGV0ID0gMSA8PCAzLA0KICAgICAgICBJc0V4cG9ydGVkID0gMSA8PCA0LA0KICAgICAgICBJc0lt
cG9ydGVkID0gMSA8PCA1LA0KICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2LA0K
ICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LA0KICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwg
OCwNCiAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksDQogICAg
ICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLA0KICAgIH07DQogICAgdWludDE2X3QgbV9iaXRz
IHsgMCB9Ow0KfTsNCg0Kc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMg
OiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4gew0KICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7DQp9Ow0KDQpzdHJ1Y3QgUHJpdmF0
ZU5hbWVFbnRyeSB7DQpwdWJsaWM6DQogICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZfdCB0cmFp
dHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQ0KDQogICAgX19mb3JjZWlubGluZSBib29sIGlz
VXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQ0KICAgIF9fZm9yY2Vpbmxp
bmUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsg
fQ0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNl
ZDsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0g
SXNEZWNsYXJlZDsgfQ0KDQogICAgdWludDE2X3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0
czsgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lRW50cnkmIG90aGVy
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYml0cyA9PSBvdGhlci5tX2JpdHM7DQog
ICAgfQ0KDQogICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7DQogICAgICAgIElzVXNlZCA9IDEg
PDwgMCwNCiAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwNCiAgICB9Ow0KDQpwcml2YXRlOg0K
ICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsNCn07DQoNCnN0cnVjdCBQcml2YXRlTmFtZUVudHJ5
SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4gew0KICAgIHN0YXRpYyBj
b25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsNCn07DQoNCmNsYXNzIFZhcmlhYmxl
RW52aXJvbm1lbnQgew0KcHJpdmF0ZToNCiAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gTWFwOw0KICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNr
ZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5h
bWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lczsNCnB1YmxpYzoNCiAgICBWYXJpYWJsZUVu
dmlyb25tZW50KCkgeyB9DQogICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25t
ZW50JiYgb3RoZXIpDQogICAgICAgIDogbV9tYXAoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFy
YW1ldGVyPihvdGhlci5tX21hcCkpDQogICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChv
dGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQ0KICAgICAgICAsIG1fcmFyZURhdGEoc3RkOjpt
b3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihvdGhlci5tX3JhcmVEYXRhKSkNCiAgICB7DQog
ICAgfQ0KICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
b3RoZXIpDQogICAgICAgIDogbV9tYXAob3RoZXIubV9tYXApDQogICAgICAgICwgbV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQ0KICAgICAgICAsIG1f
cmFyZURhdGEob3RoZXIubV9yYXJlRGF0YSA/IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpIDogbnVsbHB0cikNCiAgICB7DQog
ICAgfQ0KICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBvdGhlcik7DQoNCiAgICBfX2ZvcmNlaW5saW5lIE1hcDo6aXRlcmF0b3IgYmVn
aW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9DQogICAgX19mb3JjZWlubGluZSBNYXA6Oml0
ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9DQogICAgX19mb3JjZWlubGluZSBN
YXA6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsg
fQ0KICAgIF9fZm9yY2VpbmxpbmUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJl
dHVybiBtX21hcC5lbmQoKTsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgTWFwOjpBZGRSZXN1bHQgYWRk
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1f
bWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0NCiAgICBf
X2ZvcmNlaW5saW5lIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9DQogICAgX19mb3JjZWlubGlu
ZSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5h
bWVzU2l6ZSgpOyB9DQogICAgX19mb3JjZWlubGluZSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9DQogICAgX19mb3JjZWlubGluZSBib29sIGNvbnRhaW5z
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9DQogICAgX19mb3JjZWlubGluZSBib29s
IHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJl
dHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0NCiAgICBfX2ZvcmNlaW5saW5lIE1hcDo6
aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9DQogICAgX19mb3JjZWlubGluZSBN
YXA6OmNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQ0KICAg
IHZvaWQgc3dhcChWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcik7DQogICAgdm9pZCBtYXJrVmFy
aWFibGVBc0NhcHR1cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpOw0KICAgIHZvaWQgbWFya1ZhcmlhYmxlQXNDYXB0dXJlZChjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsNCiAgICB2b2lkIG1hcmtBbGxWYXJp
YWJsZXNBc0NhcHR1cmVkKCk7DQogICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0
Ow0KICAgIGJvb2wgY2FwdHVyZXMoVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpIGNvbnN0
Ow0KICAgIHZvaWQgbWFya1ZhcmlhYmxlQXNJbXBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsNCiAgICB2b2lkIG1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7DQoNCiAgICBib29s
IGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZDsgfQ0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21hcC5zaXplKCk7
IH0NCg0KICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFBy
aXZhdGVOYW1lczo6aXRlcmF0b3I+Ow0KDQogICAgX19mb3JjZWlubGluZSBNYXA6OkFkZFJlc3Vs
dCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1
cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQ0KICAgIF9fZm9yY2Vp
bmxpbmUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQ0KDQogICAgTWFwOjpBZGRSZXN1
bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpDQogICAgew0KICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFt
ZShpZGVudGlmaWVyLmdldCgpKTsNCiAgICAgICAgbWV0YS5zZXRJc0RlY2xhcmVkKCk7DQogICAg
ICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsNCiAgICAgICAgZW50
cnkuc2V0SXNQcml2YXRlTmFtZSgpOw0KICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7DQogICAg
ICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsNCiAgICAgICAgcmV0dXJuIG1fbWFwLmFkZChpZGVu
dGlmaWVyLCBlbnRyeSk7DQogICAgfQ0KICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikNCiAgICB7DQogICAgICAgIGF1dG8m
IG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOw0KICAgICAgICBt
ZXRhLnNldElzVXNlZCgpOw0KICAgICAgICBpZiAobWV0YS5pc0RlY2xhcmVkKCkpDQogICAgICAg
ICAgICBmaW5kKGlkZW50aWZpZXIpLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7DQogICAgfQ0KDQog
ICAgX19mb3JjZWlubGluZSBQcml2YXRlTmFtZXNSYW5nZSBwcml2YXRlTmFtZXMoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgDQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1ha2VJ
dGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIHVu
c2lnbmVkIHByaXZhdGVOYW1lc1NpemUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhKQ0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBib29s
IGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpDQogICAgew0KICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
IHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhpZGVudGlmaWVyLmlt
cGwoKSk7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIGNvcHlQcml2YXRlTmFtZXNU
byhWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIGlmICgh
bV9yYXJlRGF0YSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgaWYgKCFvdGhlci5tX3Jh
cmVEYXRhKQ0KICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxW
YXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsNCiAgICAgICAgaWYgKHByaXZhdGVOYW1l
c1NpemUoKSA+IDApIHsNCiAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1l
cygpKSB7DQogICAgICAgICAgICAgICAgaWYgKCEoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgZW50
cnkudmFsdWUuaXNEZWNsYXJlZCgpKSkNCiAgICAgICAgICAgICAgICAgICAgb3RoZXIubV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIGNvcHlV
bmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8oVmFyaWFibGVFbnZpcm9ubWVudCYgb3V0ZXIpIGNvbnN0
IHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYgKHByaXZhdGVOYW1l
c1NpemUoKSA+IDApIHsNCiAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1l
cygpKSB7DQogICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRy
eS52YWx1ZS5pc0RlY2xhcmVkKCkpDQogICAgICAgICAgICAgICAgICAgIG91dGVyLmdldE9yQWRk
UHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKS5zZXRJc1VzZWQoKTsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHN0cnVjdCBSYXJlRGF0YSB7DQogICAgICAgIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBv
cGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUp
OyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7
IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24p
IHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2Vk
ID0gaW50OyB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3Jv
ID0gaW50Ow0KDQogICAgICAgIFJhcmVEYXRhKCkgeyB9DQogICAgICAgIFJhcmVEYXRhKFJhcmVE
YXRhJiYgb3RoZXIpDQogICAgICAgICAgICA6IG1fcHJpdmF0ZU5hbWVzKHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4ob3RoZXIubV9wcml2YXRlTmFtZXMpKQ0KICAgICAgICB7DQog
ICAgICAgIH0NCiAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7DQog
ICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7DQog
ICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsNCiAgICB9Ow0KDQpwcml2YXRlOg0K
ICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50Ow0KDQogICAgTWFwIG1f
bWFwOw0KICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCB7IGZhbHNlIH07DQoNCiAgICBQ
cml2YXRlTmFtZUVudHJ5JiBnZXRPckFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bXBsKQ0KICAgIHsNCiAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQ0KICAgICAgICAgICAgbV9yYXJl
RGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsN
Cg0KICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGltcGwsIFBy
aXZhdGVOYW1lRW50cnkoKSkuaXRlcmF0b3ItPnZhbHVlOw0KICAgIH0NCg0KICAgIHN0ZDo6dW5p
cXVlX3B0cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsNCn07DQoN
CmNsYXNzIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVy
YXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsg
KCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0g
aW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhp
c01hY3JvID0gaW50Ow0KICAgIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IENvbXBh
Y3RWYXJpYWJsZUVudmlyb25tZW50JikgPSBkZWxldGU7IENvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50JiBvcGVyYXRvcj0oY29uc3QgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQmKSA9IGRlbGV0
ZTs7DQoNCiAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ7
DQoNCnB1YmxpYzoNCiAgICBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50Jik7DQogICAgVmFyaWFibGVFbnZpcm9ubWVudCB0b1ZhcmlhYmxlRW52aXJv
bm1lbnQoKSBjb25zdDsNCg0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21wYWN0VmFyaWFi
bGVFbnZpcm9ubWVudCYpIGNvbnN0Ow0KICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBtX2hhc2g7IH0NCg0KcHJpdmF0ZToNCiAgICBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCgp
ID0gZGVmYXVsdDsNCg0KICAgIFZlY3RvcjxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiBtX3ZhcmlhYmxlczsNCiAgICBWZWN0b3I8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PiBtX3Zh
cmlhYmxlTWV0YWRhdGE7DQogICAgdW5zaWduZWQgbV9oYXNoOw0KICAgIGJvb2wgbV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZDsNCn07DQoNCnN0cnVjdCBDb21wYWN0VmFyaWFibGVNYXBLZXkgew0KICAg
IENvbXBhY3RWYXJpYWJsZU1hcEtleSgpDQogICAgICAgIDogbV9lbnZpcm9ubWVudChudWxscHRy
KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIENvbXBhY3RWYXJpYWJs
ZU1hcEtleShDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpDQogICAgICAg
IDogbV9lbnZpcm9ubWVudCgmZW52aXJvbm1lbnQpDQogICAgeyB9DQoNCiAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBDb21wYWN0VmFyaWFibGVNYXBLZXkmIGtleSkgeyByZXR1cm4ga2V5
Lm1fZW52aXJvbm1lbnQtPmhhc2goKTsgfQ0KICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENv
bXBhY3RWYXJpYWJsZU1hcEtleSYgYSwgY29uc3QgQ29tcGFjdFZhcmlhYmxlTWFwS2V5JiBiKSB7
IHJldHVybiAqYS5tX2Vudmlyb25tZW50ID09ICpiLm1fZW52aXJvbm1lbnQ7IH0NCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsN
CiAgICBzdGF0aWMgdm9pZCBtYWtlRGVsZXRlZFZhbHVlKENvbXBhY3RWYXJpYWJsZU1hcEtleSYg
a2V5KQ0KICAgIHsNCiAgICAgICAga2V5Lm1fZW52aXJvbm1lbnQgPSByZWludGVycHJldF9jYXN0
PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50Kj4oMSk7DQogICAgfQ0KICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fZW52aXJv
bm1lbnQgPT0gcmVpbnRlcnByZXRfY2FzdDxDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCo+KDEp
Ow0KICAgIH0NCiAgICBib29sIGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpIGNvbnN0DQogICAgew0K
ICAgICAgICByZXR1cm4gIW1fZW52aXJvbm1lbnQ7DQogICAgfQ0KDQogICAgQ29tcGFjdFZhcmlh
YmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50KCkNCiAgICB7DQogICAgICAgIGRvIHsgaWYgKCgh
KCFpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2lu
dGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygzMTYs
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHBhcnNl
clxcVmFyaWFibGVFbnZpcm9ubWVudC5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMDEgKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgZG8geyBpZiAoKCEoIWlzSGFzaFRhYmxl
RW1wdHlWYWx1ZSgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21w
aWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygzMTcsICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHBhcnNlclxcVmFyaWFibGVFbnZp
cm9ubWVudC5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMDIgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdo
aWxlICgwKTsNCiAgICAgICAgcmV0dXJuICptX2Vudmlyb25tZW50Ow0KICAgIH0NCg0KcHJpdmF0
ZToNCiAgICBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCogbV9lbnZpcm9ubWVudDsNCn07DQoN
Cn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNvbXBhY3RWYXJp
YWJsZU1hcEtleT4gOiBKU0M6OkNvbXBhY3RWYXJpYWJsZU1hcEtleSB7IH07DQoNCnRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDb21wYWN0VmFyaWFibGVNYXBLZXk+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8SlNDOjpDb21wYWN0VmFyaWFibGVNYXBLZXk+IHsNCiAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7DQogICAgc3RhdGljIEpTQzo6Q29t
cGFjdFZhcmlhYmxlTWFwS2V5IGVtcHR5VmFsdWUoKSB7IHJldHVybiBKU0M6OkNvbXBhY3RWYXJp
YWJsZU1hcEtleSgpOyB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNFbXB0eVZh
bHVlRnVuY3Rpb24gPSB0cnVlOw0KICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShKU0M6OkNv
bXBhY3RWYXJpYWJsZU1hcEtleSBrZXkpIHsgcmV0dXJuIGtleS5pc0hhc2hUYWJsZUVtcHR5VmFs
dWUoKTsgfQ0KDQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEpTQzo6Q29t
cGFjdFZhcmlhYmxlTWFwS2V5JiBrZXkpIHsgSlNDOjpDb21wYWN0VmFyaWFibGVNYXBLZXk6Om1h
a2VEZWxldGVkVmFsdWUoa2V5KTsgfQ0KICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKEpT
Qzo6Q29tcGFjdFZhcmlhYmxlTWFwS2V5IGtleSkgeyByZXR1cm4ga2V5LmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0NCn07DQoNCn0gDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDb21w
YWN0VmFyaWFibGVNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxDb21wYWN0VmFyaWFibGVNYXA+IHsN
CnB1YmxpYzoNCiAgICBjbGFzcyBIYW5kbGUgew0KICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVk
Q29tcGFjdFZhcmlhYmxlTWFwSGFuZGxlOw0KDQogICAgcHVibGljOg0KICAgICAgICBIYW5kbGUo
KSA9IGRlZmF1bHQ7DQoNCiAgICAgICAgSGFuZGxlKENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
JiwgQ29tcGFjdFZhcmlhYmxlTWFwJik7DQoNCiAgICAgICAgSGFuZGxlKEhhbmRsZSYmIG90aGVy
KQ0KICAgICAgICB7DQogICAgICAgICAgICBzd2FwKG90aGVyKTsNCiAgICAgICAgfQ0KICAgICAg
ICBIYW5kbGUmIG9wZXJhdG9yPShIYW5kbGUmJiBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAg
ICAgSGFuZGxlIGhhbmRsZShzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG90aGVy
KSk7DQogICAgICAgICAgICBzd2FwKGhhbmRsZSk7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7
DQogICAgICAgIH0NCg0KICAgICAgICBIYW5kbGUoY29uc3QgSGFuZGxlJik7DQogICAgICAgIEhh
bmRsZSYgb3BlcmF0b3I9KGNvbnN0IEhhbmRsZSYgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIEhhbmRsZSBoYW5kbGUob3RoZXIpOw0KICAgICAgICAgICAgc3dhcChoYW5kbGUpOw0KICAg
ICAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAgfkhhbmRsZSgpOw0K
DQogICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fbWFw
OyB9DQoNCiAgICAgICAgY29uc3QgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25t
ZW50KCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuICptX2Vudmlyb25tZW50
Ow0KICAgICAgICB9DQoNCiAgICBwcml2YXRlOg0KICAgICAgICB2b2lkIHN3YXAoSGFuZGxlJiBv
dGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgc3RkOjpzd2FwKG90aGVyLm1fZW52aXJvbm1l
bnQsIG1fZW52aXJvbm1lbnQpOw0KICAgICAgICAgICAgc3RkOjpzd2FwKG90aGVyLm1fbWFwLCBt
X21hcCk7DQogICAgICAgIH0NCg0KICAgICAgICBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCog
bV9lbnZpcm9ubWVudCB7IG51bGxwdHIgfTsNCiAgICAgICAgUmVmUHRyPENvbXBhY3RWYXJpYWJs
ZU1hcD4gbV9tYXA7DQogICAgfTsNCg0KICAgIEhhbmRsZSBnZXQoY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYpOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBIYW5kbGU7DQogICAgZnJp
ZW5kIGNsYXNzIENhY2hlZENvbXBhY3RWYXJpYWJsZU1hcEhhbmRsZTsNCg0KICAgIEhhbmRsZSBn
ZXQoQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQqLCBib29sJiBpc05ld0VudHJ5KTsNCg0KICAg
IEhhc2hNYXA8Q29tcGFjdFZhcmlhYmxlTWFwS2V5LCB1bnNpZ25lZD4gbV9tYXA7DQp9Ow0KDQp9
IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcQ2FjaGVkVHlwZXMuaCINCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoN
CmNsYXNzIEJ5dGVjb2RlQ2FjaGVFcnJvcjsNCmNsYXNzIENhY2hlZEJ5dGVjb2RlOw0KY2xhc3Mg
U291cmNlQ29kZUtleTsNCmNsYXNzIFVubGlua2VkQ29kZUJsb2NrOw0KY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazsNCg0KZW51bSBjbGFzcyBTb3VyY2VDb2RlVHlwZTsNCg0KDQoNCnN0
cnVjdCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVNZXRhZGF0YSB7DQogICAgQ29kZUZlYXR1cmVz
IG1fZmVhdHVyZXM7DQogICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzOw0KfTsNCg0Kc3Ry
dWN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZU9mZnNldHMgew0KICAgIHN0YXRpYyBwdHJkaWZm
X3QgY29kZUJsb2NrRm9yQ2FsbE9mZnNldCgpOw0KICAgIHN0YXRpYyBwdHJkaWZmX3QgY29kZUJs
b2NrRm9yQ29uc3RydWN0T2Zmc2V0KCk7DQogICAgc3RhdGljIHB0cmRpZmZfdCBtZXRhZGF0YU9m
ZnNldCgpOw0KfTsNCg0Kc3RydWN0IENhY2hlZFdyaXRlQmFycmllck9mZnNldHMgew0KICAgIHN0
YXRpYyBwdHJkaWZmX3QgcHRyT2Zmc2V0KCk7DQp9Ow0KDQpzdHJ1Y3QgQ2FjaGVkUHRyT2Zmc2V0
cyB7DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZmZzZXQoKTsNCn07DQoNCmNsYXNzIFZh
cmlhYmxlTGVuZ3RoT2JqZWN0QmFzZSB7DQogICAgZnJpZW5kIGNsYXNzIENhY2hlZEJ5dGVjb2Rl
Ow0KDQpwcm90ZWN0ZWQ6DQogICAgVmFyaWFibGVMZW5ndGhPYmplY3RCYXNlKHB0cmRpZmZfdCBv
ZmZzZXQpDQogICAgICAgIDogbV9vZmZzZXQob2Zmc2V0KQ0KICAgIHsNCiAgICB9DQoNCiAgICBw
dHJkaWZmX3QgbV9vZmZzZXQ7DQp9Ow0KDQpjbGFzcyBEZWNvZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8RGVjb2Rlcj4gew0KICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0gZGVsZXRlOyBEZWNv
ZGVyJiBvcGVyYXRvcj0oY29uc3QgRGVjb2RlciYpID0gZGVsZXRlOzsNCg0KcHVibGljOg0KICAg
IHN0YXRpYyBSZWY8RGVjb2Rlcj4gY3JlYXRlKFZNJiwgUmVmPENhY2hlZEJ5dGVjb2RlPiwgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiA9IG51bGxwdHIpOw0KDQogICAgfkRlY29kZXIoKTsNCg0KICAg
IFZNJiB2bSgpIHsgcmV0dXJuIG1fdm07IH0NCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0Ow0KDQog
ICAgcHRyZGlmZl90IG9mZnNldE9mKGNvbnN0IHZvaWQqKTsNCiAgICB2b2lkIGNhY2hlT2Zmc2V0
KHB0cmRpZmZfdCwgdm9pZCopOw0KICAgIFdURjo6T3B0aW9uYWw8dm9pZCo+IGNhY2hlZFB0ckZv
ck9mZnNldChwdHJkaWZmX3QpOw0KICAgIGNvbnN0IHZvaWQqIHB0ckZvck9mZnNldEZyb21CYXNl
KHB0cmRpZmZfdCk7DQogICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgaGFuZGxlRm9yRW52
aXJvbm1lbnQoQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQqKSBjb25zdDsNCiAgICB2b2lkIHNl
dEhhbmRsZUZvckVudmlyb25tZW50KENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KiwgY29uc3Qg
Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUmKTsNCiAgICB2b2lkIGFkZExlYWZFeGVjdXRhYmxl
KGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90KTsNCiAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHByb3ZpZGVyKCkgY29uc3Q7DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPg0KICAgIHZvaWQgYWRkRmluYWxpemVyKGNvbnN0IEZ1bmN0b3ImKTsNCg0K
cHJpdmF0ZToNCiAgICBEZWNvZGVyKFZNJiwgUmVmPENhY2hlZEJ5dGVjb2RlPiwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPik7DQoNCiAgICBWTSYgbV92bTsNCiAgICBSZWY8Q2FjaGVkQnl0ZWNvZGU+
IG1fY2FjaGVkQnl0ZWNvZGU7DQogICAgSGFzaE1hcDxwdHJkaWZmX3QsIHZvaWQqPiBtX29mZnNl
dFRvUHRyTWFwOw0KICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fZmluYWxpemVy
czsNCiAgICBIYXNoTWFwPENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KiwgQ29tcGFjdFZhcmlh
YmxlTWFwOjpIYW5kbGU+IG1fZW52aXJvbm1lbnRUb0hhbmRsZU1hcDsNCiAgICBSZWZQdHI8U291
cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7DQp9Ow0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgUmVm
UHRyPENhY2hlZEJ5dGVjb2RlPiBlbmNvZGVDb2RlQmxvY2soVk0mLCBjb25zdCBTb3VyY2VDb2Rl
S2V5JiwgY29uc3QgVW5saW5rZWRDb2RlQmxvY2sqKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBS
ZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGVuY29kZUNvZGVCbG9jayhWTSYsIGNvbnN0IFNvdXJjZUNv
ZGVLZXkmLCBjb25zdCBVbmxpbmtlZENvZGVCbG9jayosIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmZCwgQnl0ZWNvZGVDYWNoZUVycm9yJik7DQoNClVubGlua2VkQ29kZUJsb2NrKiBk
ZWNvZGVDb2RlQmxvY2tJbXBsKFZNJiwgY29uc3QgU291cmNlQ29kZUtleSYsIFJlZjxDYWNoZWRC
eXRlY29kZT4pOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBVbmxpbmtlZENvZGVCbG9ja1R5cGU+DQpV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIGRlY29kZUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGVLZXkmIGtleSwgUmVmPENhY2hlZEJ5dGVjb2RlPiBjYWNoZWRCeXRlY29kZSkNCnsNCiAg
ICByZXR1cm4ganNDYXN0PFVubGlua2VkQ29kZUJsb2NrVHlwZSo+KGRlY29kZUNvZGVCbG9ja0lt
cGwodm0sIGtleSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihjYWNoZWRCeXRl
Y29kZSkpKTsNCn0NCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIFJlZlB0cjxDYWNoZWRCeXRlY29k
ZT4gZW5jb2RlRnVuY3Rpb25Db2RlQmxvY2soVk0mLCBjb25zdCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiwgQnl0ZWNvZGVDYWNoZUVycm9yJik7DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2
b2lkIGRlY29kZUZ1bmN0aW9uQ29kZUJsb2NrKERlY29kZXImLCBpbnQzMl90IGNhY2hlZEZ1bmN0
aW9uQ29kZUJsb2NrT2Zmc2V0LCBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
az4mLCBjb25zdCBKU0NlbGwqKTsNCg0KYm9vbCBpc0NhY2hlZEJ5dGVjb2RlU3RpbGxWYWxpZChW
TSYsIFJlZjxDYWNoZWRCeXRlY29kZT4sIGNvbnN0IFNvdXJjZUNvZGVLZXkmLCBTb3VyY2VDb2Rl
VHlwZSk7DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDYWNoZVVwZGF0ZS5oIg0KDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WYXJp
YW50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSB3YXJuaW5nKHB1c2gpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTo0MjQ1KQ0KI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUyMSkNCiNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOjQ1MjIpDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0ODE0KQ0KI2xpbmUgNjAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1Zh
cmlhbnQuaCINCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0KDQoNCg0KDQoNCiNsaW5lIDcwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9WYXJp
YW50LmgiDQoNCg0KDQojbGluZSA3NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVmFyaWFudC5oIg0KDQpzdHJ1Y3QgX19pbl9wbGFjZV9w
cml2YXRlew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lPg0KICAgIHN0cnVjdCBfX3R5cGVfaG9sZGVy
Ow0KDQogICAgdGVtcGxhdGU8c2l6ZV90Pg0KICAgIHN0cnVjdCBfX3ZhbHVlX2hvbGRlcjsNCn07
DQoNCg0Kc3RydWN0IGluX3BsYWNlX3RhZyB7DQogICAgaW5fcGxhY2VfdGFnKCkgPSBkZWxldGU7
DQp9Ow0KDQp1c2luZyBpbl9wbGFjZV90ID0gaW5fcGxhY2VfdGFnKCYpKF9faW5fcGxhY2VfcHJp
dmF0ZSYpOw0KDQp0ZW1wbGF0ZSA8Y2xhc3MgX1R5cGU+DQp1c2luZyBpbl9wbGFjZV90eXBlX3Qg
PSBpbl9wbGFjZV90YWcoJikoX19pbl9wbGFjZV9wcml2YXRlOjpfX3R5cGVfaG9sZGVyPF9UeXBl
PiYpOw0KDQp0ZW1wbGF0ZSA8c2l6ZV90IF9JbmRleD4NCnVzaW5nIGluX3BsYWNlX2luZGV4X3Qg
PSBpbl9wbGFjZV90YWcoJikoX19pbl9wbGFjZV9wcml2YXRlOjpfX3ZhbHVlX2hvbGRlcjxfSW5k
ZXg+Jik7DQoNCmluX3BsYWNlX3RhZyBpbl9wbGFjZShfX2luX3BsYWNlX3ByaXZhdGUmKTsNCg0K
dGVtcGxhdGUgPGNsYXNzIF9UeXBlPg0KaW5fcGxhY2VfdGFnIGluX3BsYWNlKF9faW5fcGxhY2Vf
cHJpdmF0ZTo6X190eXBlX2hvbGRlcjxfVHlwZT4gJikgew0KICAgIGRvIHsgKHZvaWQpX19pbl9w
bGFjZV9wcml2YXRlKCk7IFdURkNyYXNoKCk7IH0gd2hpbGUgKDApOzsNCn0NCg0KdGVtcGxhdGUg
PHNpemVfdCBfSW5kZXg+DQppbl9wbGFjZV90YWcgaW5fcGxhY2UoX19pbl9wbGFjZV9wcml2YXRl
OjpfX3ZhbHVlX2hvbGRlcjxfSW5kZXg+ICYpIHsNCiAgICBkbyB7ICh2b2lkKV9faW5fcGxhY2Vf
cHJpdmF0ZSgpOyBXVEZDcmFzaCgpOyB9IHdoaWxlICgwKTs7DQp9DQoNCmNsYXNzIGJhZF92YXJp
YW50X2FjY2VzczogcHVibGljIHN0ZDo6bG9naWNfZXJyb3J7DQpwdWJsaWM6DQogICAgZXhwbGlj
aXQgYmFkX3ZhcmlhbnRfYWNjZXNzKGNvbnN0IHN0ZDo6c3RyaW5nJiB3aGF0X2FyZyk6DQogICAg
ICAgIHN0ZDo6bG9naWNfZXJyb3Iod2hhdF9hcmcpDQogICAge30NCiAgICBleHBsaWNpdCBiYWRf
dmFyaWFudF9hY2Nlc3MoY29uc3QgY2hhciogd2hhdF9hcmcpOg0KICAgICAgICBzdGQ6OmxvZ2lj
X2Vycm9yKHdoYXRfYXJnKQ0KICAgIHt9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KX19k
ZWNsc3BlYyhub3JldHVybikgaW5saW5lIFQgX190aHJvd19iYWRfdmFyaWFudF9hY2Nlc3MoY29u
c3QgY2hhciogd2hhdF9hcmcpew0KICAgIGRvIHsgKHZvaWQpYmFkX3ZhcmlhbnRfYWNjZXNzKHdo
YXRfYXJnKTsgV1RGQ3Jhc2goKTsgfSB3aGlsZSAoMCk7DQp9DQoNCnRlbXBsYXRlPHB0cmRpZmZf
dCBfT2Zmc2V0LHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX190
eXBlX2luZGV4X2hlbHBlcjsNCg0KdGVtcGxhdGU8cHRyZGlmZl90IF9PZmZzZXQsdHlwZW5hbWUg
X1R5cGUsdHlwZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9fdHlwZV9p
bmRleF9oZWxwZXI8X09mZnNldCxfVHlwZSxfSGVhZCxfUmVzdC4uLj57DQogICAgc3RhdGljIGNv
bnN0ZXhwciBwdHJkaWZmX3QgX192YWx1ZT0NCiAgICAgICAgX190eXBlX2luZGV4X2hlbHBlcjxf
T2Zmc2V0KzEsX1R5cGUsX1Jlc3QuLi4+OjpfX3ZhbHVlOw0KfTsNCg0KdGVtcGxhdGU8cHRyZGlm
Zl90IF9PZmZzZXQsdHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9f
dHlwZV9pbmRleF9oZWxwZXI8X09mZnNldCxfVHlwZSxfVHlwZSxfUmVzdC4uLj57DQogICAgc3Rh
dGljIGNvbnN0ZXhwciBwdHJkaWZmX3QgX192YWx1ZT1fT2Zmc2V0Ow0KfTsNCg0KdGVtcGxhdGU8
dHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX3R5cGVfaW5kZXh7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBwdHJkaWZmX3QgX192YWx1ZT0NCiAgICAgICAgX190eXBl
X2luZGV4X2hlbHBlcjwwLF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWU7DQp9Ow0KDQp0ZW1wbGF0
ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX19pbmRleGVk
X3R5cGU7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9IZWFkLHR5cGVuYW1lIC4uLiBfUmVzdD4NCnN0
cnVjdCBfX2luZGV4ZWRfdHlwZTwwLF9IZWFkLF9SZXN0Li4uPnsNCiAgICB0eXBlZGVmIF9IZWFk
IF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9IZWFkLHR5cGVuYW1lIC4uLiBfUmVz
dD4NCnN0cnVjdCBfX2luZGV4ZWRfdHlwZTwtMSxfSGVhZCxfUmVzdC4uLj57DQogICAgdHlwZWRl
ZiB2b2lkIF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUg
X0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9faW5kZXhlZF90eXBlPF9JbmRleCxf
SGVhZCxfUmVzdC4uLj57DQogICAgdHlwZWRlZiB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5k
ZXgtMSxfUmVzdC4uLj46Ol9fdHlwZSBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTxwdHJkaWZmX3Qg
X0luZGV4LHR5cGVuYW1lIC4uLl9UeXBlcz4NCnN0cnVjdCBfX25leHRfaW5kZXh7DQogICAgc3Rh
dGljIGNvbnN0ZXhwciBwdHJkaWZmX3QgX192YWx1ZT0NCiAgICAgICAgKF9JbmRleD49cHRyZGlm
Zl90KHNpemVvZi4uLihfVHlwZXMpLTEpKT8tMTpfSW5kZXgrMTsNCn07DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIC4uLiBfVHlwZXM+DQpjbGFzcyBWYXJpYW50Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZT4N
CnN0cnVjdCB2YXJpYW50X3NpemU7DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBfVHlwZT4NCnN0cnVj
dCB2YXJpYW50X3NpemU8Y29uc3QgX1R5cGU+IDogdmFyaWFudF9zaXplPF9UeXBlPiB7fTsNCg0K
dGVtcGxhdGUgPHR5cGVuYW1lIF9UeXBlPg0Kc3RydWN0IHZhcmlhbnRfc2l6ZTx2b2xhdGlsZSBf
VHlwZT4gOiB2YXJpYW50X3NpemU8X1R5cGU+IHt9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5
cGU+DQpzdHJ1Y3QgdmFyaWFudF9zaXplPGNvbnN0IHZvbGF0aWxlIF9UeXBlPiA6IHZhcmlhbnRf
c2l6ZTxfVHlwZT4ge307DQoNCnRlbXBsYXRlIDx0eXBlbmFtZS4uLiBfVHlwZXM+DQpzdHJ1Y3Qg
dmFyaWFudF9zaXplPFZhcmlhbnQ8X1R5cGVzLi4uPj4NCiAgICA6IHN0ZDo6aW50ZWdyYWxfY29u
c3RhbnQ8c2l6ZV90LCBzaXplb2YuLi4oX1R5cGVzKT4ge307DQoNCnRlbXBsYXRlPHNpemVfdCBf
SW5kZXgsdHlwZW5hbWUgX1R5cGU+DQpzdHJ1Y3QgdmFyaWFudF9hbHRlcm5hdGl2ZTsNCg0KdGVt
cGxhdGU8c2l6ZV90IF9JbmRleCx0eXBlbmFtZSBfVHlwZT4NCnVzaW5nIHZhcmlhbnRfYWx0ZXJu
YXRpdmVfdD10eXBlbmFtZSB2YXJpYW50X2FsdGVybmF0aXZlPF9JbmRleCxfVHlwZT46OnR5cGU7
DQoNCnRlbXBsYXRlIDxzaXplX3QgX0luZGV4LCB0eXBlbmFtZSBfVHlwZT4NCnN0cnVjdCB2YXJp
YW50X2FsdGVybmF0aXZlPF9JbmRleCwgY29uc3QgX1R5cGU+ew0KICAgIHVzaW5nIHR5cGU9c3Rk
OjphZGRfY29uc3RfdDx2YXJpYW50X2FsdGVybmF0aXZlX3Q8X0luZGV4LF9UeXBlPj47DQp9Ow0K
DQp0ZW1wbGF0ZSA8c2l6ZV90IF9JbmRleCwgdHlwZW5hbWUgX1R5cGU+DQpzdHJ1Y3QgdmFyaWFu
dF9hbHRlcm5hdGl2ZTxfSW5kZXgsIHZvbGF0aWxlIF9UeXBlPnsNCiAgICB1c2luZyB0eXBlPXN0
ZDo6YWRkX3ZvbGF0aWxlX3Q8dmFyaWFudF9hbHRlcm5hdGl2ZV90PF9JbmRleCxfVHlwZT4+Ow0K
fTsNCg0KdGVtcGxhdGUgPHNpemVfdCBfSW5kZXgsIHR5cGVuYW1lIF9UeXBlPg0Kc3RydWN0IHZh
cmlhbnRfYWx0ZXJuYXRpdmU8X0luZGV4LCB2b2xhdGlsZSBjb25zdCBfVHlwZT57DQogICAgdXNp
bmcgdHlwZT1zdGQ6OmFkZF92b2xhdGlsZV90PHN0ZDo6YWRkX2NvbnN0X3Q8dmFyaWFudF9hbHRl
cm5hdGl2ZV90PF9JbmRleCxfVHlwZT4+PjsNCn07DQoNCnRlbXBsYXRlPHNpemVfdCBfSW5kZXgs
dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCB2YXJpYW50X2FsdGVybmF0aXZlPF9JbmRleCxW
YXJpYW50PF9UeXBlcy4uLj4+ew0KICAgIHVzaW5nIHR5cGU9dHlwZW5hbWUgX19pbmRleGVkX3R5
cGU8X0luZGV4LF9UeXBlcy4uLj46Ol9fdHlwZTsNCn07DQoNCmNvbnN0ZXhwciBzaXplX3QgdmFy
aWFudF9ucG9zPS0xOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5
cGVzPg0KY29uc3RleHByIF9UeXBlJiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+Jik7DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgX1R5cGUg
Y29uc3QmIGdldChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmKTsNCg0KdGVtcGxhdGU8dHlwZW5h
bWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNvbnN0ZXhwciBfVHlwZSYmIGdldChWYXJp
YW50PF9UeXBlcy4uLj4mJik7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4u
LiBfVHlwZXM+DQpjb25zdGV4cHIgY29uc3QgX1R5cGUmJiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+
IGNvbnN0JiYpOw0KDQp0ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlw
ZXM+DQpjb25zdGV4cHIgdHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LF9UeXBlcy4uLj46
Ol9fdHlwZSYgZ2V0KFZhcmlhbnQ8X1R5cGVzLi4uPiYpOw0KDQp0ZW1wbGF0ZTxwdHJkaWZmX3Qg
X0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgdHlwZW5hbWUgX19pbmRleGVk
X3R5cGU8X0luZGV4LF9UeXBlcy4uLj46Ol9fdHlwZSYmIGdldChWYXJpYW50PF9UeXBlcy4uLj4m
Jik7DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNv
bnN0ZXhwciB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBl
IGNvbnN0JiBnZXQoDQogICAgVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Jik7DQoNCnRlbXBsYXRl
IDxwdHJkaWZmX3QgX0luZGV4LCB0eXBlbmFtZS4uLiBfVHlwZXM+DQpjb25zdGV4cHIgY29uc3Qg
dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGUgJiYNCmdl
dChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QgJiYpOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlw
ZSx0eXBlbmFtZSAuLi4gX1R5cGVzPg0KY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlw
ZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiYpOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlw
ZSx0eXBlbmFtZSAuLi4gX1R5cGVzPg0KY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDxfVHlw
ZSBjb25zdD4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYpOw0KDQp0ZW1wbGF0ZTxw
dHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgc3RkOjphZGRf
cG9pbnRlcl90PHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5
cGU+IGdldF9pZihWYXJpYW50PF9UeXBlcy4uLj4mKTsNCg0KdGVtcGxhdGU8cHRyZGlmZl90IF9J
bmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPg0KY29uc3RleHByIHN0ZDo6YWRkX3BvaW50ZXJfdDx0
eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlIGNvbnN0PiBn
ZXRfaWYoDQogICAgVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0Jik7DQoNCnRlbXBsYXRlPHB0cmRp
ZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX3ZhcmlhbnRfYWNjZXNz
b3I7DQoNCnRlbXBsYXRlPHNpemVfdCBfX2NvdW50LA0KICAgICAgICAgYm9vbCBfX2xhcmdlcl90
aGFuX2NoYXI9KF9fY291bnQ+MTI3KSwNCiAgICBib29sIF9fbGFyZ2VyX3RoYW5fc2hvcnQ9KF9f
Y291bnQ+MzI3NjcpLA0KICAgIGJvb2wgX19sYXJnZXJfdGhhbl9pbnQ9KF9fY291bnQ+MjE0NzQ4
MzY0Nyk+DQpzdHJ1Y3QgX19kaXNjcmltaW5hdG9yX3R5cGV7DQogICAgdHlwZWRlZiBzaWduZWQg
Y2hhciBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTxzaXplX3QgX19jb3VudD4NCnN0cnVjdCBfX2Rp
c2NyaW1pbmF0b3JfdHlwZTxfX2NvdW50LHRydWUsZmFsc2UsZmFsc2U+ew0KICAgIHR5cGVkZWYg
c2lnbmVkIHNob3J0IF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHNpemVfdCBfX2NvdW50Pg0Kc3Ry
dWN0IF9fZGlzY3JpbWluYXRvcl90eXBlPF9fY291bnQsdHJ1ZSx0cnVlLGZhbHNlPnsNCiAgICB0
eXBlZGVmIGludCBfX3R5cGU7DQp9Ow0KdGVtcGxhdGU8c2l6ZV90IF9fY291bnQ+DQpzdHJ1Y3Qg
X19kaXNjcmltaW5hdG9yX3R5cGU8X19jb3VudCx0cnVlLHRydWUsdHJ1ZT57DQogICAgdHlwZWRl
ZiBzaWduZWQgbG9uZyBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZT4NCnN0
cnVjdCBfX3N0b3JlZF90eXBlew0KICAgIHR5cGVkZWYgX1R5cGUgX190eXBlOw0KfTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgX1R5cGU+DQpzdHJ1Y3QgX19zdG9yZWRfdHlwZTxfVHlwZSY+ew0KICAg
IHR5cGVkZWYgX1R5cGUqIF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIC4uLiBfVHlw
ZXM+DQpzdHJ1Y3QgX19hbGxfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTsNCg0KdGVtcGxhdGU8Pg0K
c3RydWN0IF9fYWxsX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8PiB7DQogICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIF9fdmFsdWU9dHJ1ZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlPg0K
c3RydWN0IF9fYWxsX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8X1R5cGU+IHsNCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgX192YWx1ZT0NCiAgICAgICAgc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPHR5cGVuYW1lIF9fc3RvcmVkX3R5cGU8X1R5cGU+OjpfX3R5cGU+Ojp2YWx1ZTsNCn07
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9IZWFkLHR5cGVuYW1lIC4uLiBfUmVzdD4NCnN0cnVjdCBf
X2FsbF90cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPF9IZWFkLF9SZXN0Li4uPiB7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIF9fdmFsdWU9DQogICAgICAgIF9fYWxsX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8X0hlYWQ+OjpfX3ZhbHVlICYmDQogICAgICAgIF9fYWxsX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8X1Jlc3QuLi4+OjpfX3ZhbHVlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1Rhcmdl
dCx0eXBlbmFtZSAuLi4gX0FyZ3M+DQpzdHJ1Y3QgX19zdG9yYWdlX25vdGhyb3dfY29uc3RydWN0
aWJsZXsNCiAgICBzdGF0aWMgY29uc3QgYm9vbCBfX3ZhbHVlPQ0KICAgICAgICBzdGQ6OmlzX25v
dGhyb3dfY29uc3RydWN0aWJsZTxfVGFyZ2V0LCBfQXJncy4uLj46OnZhbHVlOw0KfTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX3N0b3JhZ2Vfbm90aHJvd19tb3Zl
X2NvbnN0cnVjdGlibGU7DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBfX3N0b3JhZ2Vfbm90aHJvd19t
b3ZlX2NvbnN0cnVjdGlibGU8PiB7DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9fdmFsdWU9
dHJ1ZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlPg0Kc3RydWN0IF9fc3RvcmFnZV9u
b3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxfVHlwZT4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBfX3ZhbHVlPQ0KICAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxl
PA0KICAgICAgICB0eXBlbmFtZSBfX3N0b3JlZF90eXBlPF9UeXBlPjo6X190eXBlPjo6dmFsdWU7
DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfSGVhZCx0eXBlbmFtZSAuLi4gX1Jlc3Q+DQpzdHJ1
Y3QgX19zdG9yYWdlX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPF9IZWFkLF9SZXN0Li4uPiB7
DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9fdmFsdWU9DQogICAgICAgIF9fc3RvcmFnZV9u
b3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxfSGVhZD46Ol9fdmFsdWUgJiYNCiAgICAgICAgX19z
dG9yYWdlX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPF9SZXN0Li4uPjo6X192YWx1ZTsNCn07
DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVj
dCBfX290aGVyX3N0b3JhZ2Vfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU7DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIF9IZWFkLHR5cGVuYW1lIC4uLiBfUmVzdD4NCnN0cnVjdCBfX290aGVyX3N0b3Jh
Z2Vfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8MCxfSGVhZCxfUmVzdC4uLj57DQogICAgc3Rh
dGljIGNvbnN0IGJvb2wgX192YWx1ZT1fX3N0b3JhZ2Vfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGli
bGU8X1Jlc3QuLi4+OjpfX3ZhbHVlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX0hlYWQsdHlw
ZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9fb3RoZXJfc3RvcmFnZV9ub3Rocm93X21vdmVfY29u
c3RydWN0aWJsZTwtMSxfSGVhZCxfUmVzdC4uLj57DQogICAgc3RhdGljIGNvbnN0IGJvb2wgX192
YWx1ZT0NCiAgICAgICAgX19zdG9yYWdlX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPF9IZWFk
LF9SZXN0Li4uPjo6X192YWx1ZTsNCn07DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlw
ZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9fb3RoZXJfc3RvcmFnZV9u
b3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxfSW5kZXgsX0hlYWQsX1Jlc3QuLi4+ew0KICAgIHN0
YXRpYyBjb25zdCBib29sIF9fdmFsdWU9DQogICAgICAgIF9fc3RvcmFnZV9ub3Rocm93X21vdmVf
Y29uc3RydWN0aWJsZTxfSGVhZD46Ol9fdmFsdWUgJiYNCiAgICAgICAgX19vdGhlcl9zdG9yYWdl
X25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPF9JbmRleC0xLF9SZXN0Li4uPjo6X192YWx1ZTsN
Cn07DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0
cnVjdCBfX2JhY2t1cF9zdG9yYWdlX3JlcXVpcmVkew0KICAgIHN0YXRpYyBjb25zdCBib29sIF9f
dmFsdWU9DQogICAgICAgICFfX3N0b3JhZ2Vfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8DQog
ICAgICAgIHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGU+
OjpfX3ZhbHVlICYmDQogICAgICAgICFfX290aGVyX3N0b3JhZ2Vfbm90aHJvd19tb3ZlX2NvbnN0
cnVjdGlibGU8X0luZGV4LF9UeXBlcy4uLj46Ol9fdmFsdWU7DQp9Ow0KDQp0ZW1wbGF0ZTxwdHJk
aWZmX3QgX0luZGV4LHB0cmRpZmZfdCBfQ291bnQsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVj
dCBfX2FueV9iYWNrdXBfc3RvcmFnZV9yZXF1aXJlZF9pbXBsew0KICAgIHN0YXRpYyBjb25zdCBi
b29sIF9fdmFsdWU9DQogICAgICAgIF9fYmFja3VwX3N0b3JhZ2VfcmVxdWlyZWQ8X0luZGV4LF9U
eXBlcy4uLj46Ol9fdmFsdWUgfHwNCiAgICAgICAgX19hbnlfYmFja3VwX3N0b3JhZ2VfcmVxdWly
ZWRfaW1wbDxfSW5kZXgrMSxfQ291bnQtMSxfVHlwZXMuLi4+OjpfX3ZhbHVlOw0KfTsNCg0KdGVt
cGxhdGU8cHRyZGlmZl90IF9JbmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPg0Kc3RydWN0IF9fYW55
X2JhY2t1cF9zdG9yYWdlX3JlcXVpcmVkX2ltcGw8X0luZGV4LDAsX1R5cGVzLi4uPnsNCiAgICBz
dGF0aWMgY29uc3QgYm9vbCBfX3ZhbHVlPWZhbHNlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
X1ZhcmlhbnQ+DQpzdHJ1Y3QgX19hbnlfYmFja3VwX3N0b3JhZ2VfcmVxdWlyZWQ7DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX19hbnlfYmFja3VwX3N0b3JhZ2VfcmVx
dWlyZWQ8VmFyaWFudDxfVHlwZXMuLi4+ID57DQogICAgc3RhdGljIGNvbnN0IGJvb2wgX192YWx1
ZT0NCiAgICAgICAgX19hbnlfYmFja3VwX3N0b3JhZ2VfcmVxdWlyZWRfaW1wbDwwLHNpemVvZi4u
LihfVHlwZXMpLF9UeXBlcy4uLj46Ol9fdmFsdWU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSAu
Li4gX1R5cGVzPg0KdW5pb24gX192YXJpYW50X2RhdGE7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9U
eXBlLGJvb2w9c3RkOjppc19saXRlcmFsX3R5cGU8X1R5cGU+Ojp2YWx1ZT4NCnN0cnVjdCBfX3Zh
cmlhbnRfc3RvcmFnZXsNCiAgICB0eXBlZGVmIF9UeXBlIF9fdHlwZTsNCg0KICAgIHN0YXRpYyBj
b25zdGV4cHIgX1R5cGUmIF9fZ2V0KF9fdHlwZSYgX192YWwpew0KICAgICAgICByZXR1cm4gX192
YWw7DQogICAgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgX1R5cGUmJiBfX2dldF9ycmVmKF9fdHlw
ZSYgX192YWwpew0KICAgICAgICByZXR1cm4gc3RkOjptb3ZlKF9fdmFsKTsNCiAgICB9DQogICAg
c3RhdGljIGNvbnN0ZXhwciBjb25zdCBfVHlwZSYgX19nZXQoX190eXBlIGNvbnN0JiBfX3ZhbCl7
DQogICAgICAgIHJldHVybiBfX3ZhbDsNCiAgICB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBfVHlwZSYmIF9fZ2V0X3JyZWYoX190eXBlIGNvbnN0JiBfX3ZhbCl7DQogICAgICAgIHJldHVy
biBzdGQ6Om1vdmUoX192YWwpOw0KICAgIH0NCiAgICBzdGF0aWMgdm9pZCBfX2Rlc3Ryb3koX190
eXBlJil7fQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGU+DQpzdHJ1Y3QgX19zdG9yYWdl
X3dyYXBwZXJ7DQogICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKF9UeXBl
KSxhbGlnbm9mKF9UeXBlKT46OnR5cGUgX19zdG9yYWdlOw0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgLi4uIF9BcmdzPg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdm9pZCBfX2NvbnN0cnVjdCh2b2lk
KiBfX3AsX0FyZ3MmJiAuLi4gX19hcmdzKXsNCiAgICAgICAgbmV3IChfX3ApIF9UeXBlKHN0ZDo6
Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIF9EdW1teSA9IF9UeXBlPg0KICAgIF9fc3RvcmFnZV93cmFwcGVyKA0KICAgICAgICB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxfRHVtbXk+
Ojp2YWx1ZSwNCiAgICAgICAgdm9pZCAoX19zdG9yYWdlX3dyYXBwZXI6OiopKCk+Ojp0eXBlID0g
bnVsbHB0cikgew0KICAgICAgX19jb25zdHJ1Y3QoJl9fc3RvcmFnZSk7DQogICAgfQ0KDQogICAg
dGVtcGxhdGUgPHR5cGVuYW1lIF9EdW1teSA9IF9UeXBlPg0KICAgIF9fc3RvcmFnZV93cmFwcGVy
KA0KICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19kZWZhdWx0X2NvbnN0
cnVjdGlibGU8X0R1bW15Pjo6dmFsdWUsDQogICAgICAgIHZvaWQgKF9fc3RvcmFnZV93cmFwcGVy
OjoqKSgpPjo6dHlwZSA9IG51bGxwdHIpIHsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0ZpcnN0LHR5cGVuYW1lIC4uLiBfQXJncz4NCiAgICBfX3N0b3JhZ2Vfd3JhcHBlcihf
Rmlyc3QmJiBfX2ZpcnN0LF9BcmdzJiYgLi4uIF9fYXJncyl7DQogICAgICAgIF9fY29uc3RydWN0
KCZfX3N0b3JhZ2Usc3RkOjpmb3J3YXJkPF9GaXJzdD4oX19maXJzdCksc3RkOjpmb3J3YXJkPF9B
cmdzPihfX2FyZ3MpLi4uKTsNCiAgICB9DQoNCiAgICBfVHlwZSYgX19nZXQoKXsNCiAgICAgICAg
cmV0dXJuICpzdGF0aWNfY2FzdDxfVHlwZSo+KHN0YXRpY19jYXN0PHZvaWQqPigmX19zdG9yYWdl
KSk7DQogICAgfQ0KICAgIGNvbnN0ZXhwciBfVHlwZSBjb25zdCYgX19nZXQoKSBjb25zdHsNCiAg
ICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxfVHlwZSBjb25zdCo+KHN0YXRpY19jYXN0PHZvaWQg
Y29uc3QqPigmX19zdG9yYWdlKSk7DQogICAgfQ0KICAgIHZvaWQgX19kZXN0cm95KCl7DQogICAg
ICAgIF9fZ2V0KCkufl9UeXBlKCk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1R5
cGU+DQpzdHJ1Y3QgX19zdG9yYWdlX3dyYXBwZXI8X1R5cGUmPnsNCiAgICBfVHlwZSogX19zdG9y
YWdlOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZz4NCiAgICBjb25zdGV4cHIgX19zdG9y
YWdlX3dyYXBwZXIoX0FyZyYgX19hcmcpOg0KICAgICAgICBfX3N0b3JhZ2UoJl9fYXJnKXt9DQoN
CiAgICBfVHlwZSYgX19nZXQoKXsNCiAgICAgICAgcmV0dXJuICpfX3N0b3JhZ2U7DQogICAgfQ0K
ICAgIGNvbnN0ZXhwciBfVHlwZSBjb25zdCYgX19nZXQoKSBjb25zdHsNCiAgICAgICAgcmV0dXJu
ICpfX3N0b3JhZ2U7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGU+DQpzdHJ1
Y3QgX192YXJpYW50X3N0b3JhZ2U8X1R5cGUsZmFsc2U+ew0KICAgIHR5cGVkZWYgX19zdG9yYWdl
X3dyYXBwZXI8X1R5cGU+IF9fdHlwZTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgX1R5cGUmIF9f
Z2V0KF9fdHlwZSYgX192YWwpew0KICAgICAgICByZXR1cm4gX192YWwuX19nZXQoKTsNCiAgICB9
DQogICAgc3RhdGljIGNvbnN0ZXhwciBfVHlwZSYmIF9fZ2V0X3JyZWYoX190eXBlJiBfX3ZhbCl7
DQogICAgICAgIHJldHVybiBzdGQ6Om1vdmUoX192YWwuX19nZXQoKSk7DQogICAgfQ0KICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgX1R5cGUmIF9fZ2V0KF9fdHlwZSBjb25zdCYgX192YWwpew0K
ICAgICAgICByZXR1cm4gX192YWwuX19nZXQoKTsNCiAgICB9DQogICAgc3RhdGljIGNvbnN0ZXhw
ciBjb25zdCBfVHlwZSYmIF9fZ2V0X3JyZWYoX190eXBlIGNvbnN0JiBfX3ZhbCl7DQogICAgICAg
IHJldHVybiBzdGQ6Om1vdmUoX192YWwuX19nZXQoKSk7DQogICAgfQ0KICAgIHN0YXRpYyB2b2lk
IF9fZGVzdHJveShfX3R5cGUmIF9fdmFsKXsNCiAgICAgICAgX192YWwuX19kZXN0cm95KCk7DQog
ICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGUsYm9vbCBfX2I+DQpzdHJ1Y3QgX192
YXJpYW50X3N0b3JhZ2U8X1R5cGUmLF9fYj57DQogICAgdHlwZWRlZiBfVHlwZSogX190eXBlOw0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciBfVHlwZSYgX19nZXQoX190eXBlJiBfX3ZhbCl7DQogICAg
ICAgIHJldHVybiAqX192YWw7DQogICAgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgX1R5cGUmIF9f
Z2V0X3JyZWYoX190eXBlJiBfX3ZhbCl7DQogICAgICAgIHJldHVybiAqX192YWw7DQogICAgfQ0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgX1R5cGUmIF9fZ2V0KF9fdHlwZSBjb25zdCYgX192YWwpew0K
ICAgICAgICByZXR1cm4gKl9fdmFsOw0KICAgIH0NCiAgICBzdGF0aWMgY29uc3RleHByIF9UeXBl
JiBfX2dldF9ycmVmKF9fdHlwZSBjb25zdCYgX192YWwpew0KICAgICAgICByZXR1cm4gKl9fdmFs
Ow0KICAgIH0NCiAgICBzdGF0aWMgdm9pZCBfX2Rlc3Ryb3koX190eXBlJil7fQ0KfTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgX1R5cGUsYm9vbCBfX2I+DQpzdHJ1Y3QgX192YXJpYW50X3N0b3JhZ2U8
X1R5cGUmJixfX2I+ew0KICAgIHR5cGVkZWYgX1R5cGUqIF9fdHlwZTsNCg0KICAgIHN0YXRpYyBj
b25zdGV4cHIgX1R5cGUmJiBfX2dldChfX3R5cGUmIF9fdmFsKXsNCiAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PF9UeXBlJiY+KCpfX3ZhbCk7DQogICAgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIg
X1R5cGUmJiBfX2dldF9ycmVmKF9fdHlwZSYgX192YWwpew0KICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8X1R5cGUmJj4oKl9fdmFsKTsNCiAgICB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBfVHlw
ZSYmIF9fZ2V0KF9fdHlwZSBjb25zdCYgX192YWwpew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8X1R5cGUmJj4oKl9fdmFsKTsNCiAgICB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBfVHlwZSYm
IF9fZ2V0X3JyZWYoX190eXBlIGNvbnN0JiBfX3ZhbCl7DQogICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxfVHlwZSYmPigqX192YWwpOw0KICAgIH0NCiAgICBzdGF0aWMgdm9pZCBfX2Rlc3Ryb3ko
X190eXBlJil7fQ0KfTsNCg0KdGVtcGxhdGU8Pg0KdW5pb24gX192YXJpYW50X2RhdGE8PnsNCiAg
ICBjb25zdGV4cHIgX192YXJpYW50X2RhdGEoKXt9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHlwZT4NCnVuaW9uIF9fdmFyaWFudF9kYXRhPF9UeXBlPnsNCiAgICB0eXBlbmFtZSBfX3Zhcmlh
bnRfc3RvcmFnZTxfVHlwZT46Ol9fdHlwZSBfX3ZhbDsNCiAgICBzdHJ1Y3QgX19kdW1teV90eXBl
e30gX19kdW1teTsNCg0KICAgIGNvbnN0ZXhwciBfX3ZhcmlhbnRfZGF0YSgpOl9fZHVtbXkoKXt9
DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX0FyZ3M+DQogICAgY29uc3RleHByIF9fdmFy
aWFudF9kYXRhKGluX3BsYWNlX2luZGV4X3Q8MD4sX0FyZ3MmJiAuLi4gX19hcmdzKToNCiAgICAg
ICAgX192YWwoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKXt9DQoNCiAgICBfVHlwZSYg
X19nZXQoaW5fcGxhY2VfaW5kZXhfdDwwPil7DQogICAgICAgIHJldHVybiBfX3ZhcmlhbnRfc3Rv
cmFnZTxfVHlwZT46Ol9fZ2V0KF9fdmFsKTsNCiAgICB9DQogICAgIF9UeXBlJiYgX19nZXRfcnJl
Zihpbl9wbGFjZV9pbmRleF90PDA+KXsNCiAgICAgICAgcmV0dXJuIF9fdmFyaWFudF9zdG9yYWdl
PF9UeXBlPjo6X19nZXRfcnJlZihfX3ZhbCk7DQogICAgfQ0KICAgIGNvbnN0ZXhwciBjb25zdCBf
VHlwZSYgX19nZXQoaW5fcGxhY2VfaW5kZXhfdDwwPikgY29uc3R7DQogICAgICAgIHJldHVybiBf
X3ZhcmlhbnRfc3RvcmFnZTxfVHlwZT46Ol9fZ2V0KF9fdmFsKTsNCiAgICB9DQogICAgY29uc3Rl
eHByIGNvbnN0IF9UeXBlJiYgX19nZXRfcnJlZihpbl9wbGFjZV9pbmRleF90PDA+KSBjb25zdHsN
CiAgICAgICAgcmV0dXJuIF9fdmFyaWFudF9zdG9yYWdlPF9UeXBlPjo6X19nZXRfcnJlZihfX3Zh
bCk7DQogICAgfQ0KICAgIHZvaWQgX19kZXN0cm95KGluX3BsYWNlX2luZGV4X3Q8MD4pew0KICAg
ICAgICBfX3ZhcmlhbnRfc3RvcmFnZTxfVHlwZT46Ol9fZGVzdHJveShfX3ZhbCk7DQogICAgfQ0K
fTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGU+DQp1bmlvbiBfX3ZhcmlhbnRfZGF0YTxfVHlw
ZSY+ew0KICAgIHR5cGVuYW1lIF9fdmFyaWFudF9zdG9yYWdlPF9UeXBlJj46Ol9fdHlwZSBfX3Zh
bDsNCiAgICBzdHJ1Y3QgX19kdW1teV90eXBle30gX19kdW1teTsNCg0KICAgIGNvbnN0ZXhwciBf
X3ZhcmlhbnRfZGF0YSgpOl9fZHVtbXkoKXt9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4g
X0FyZ3M+DQogICAgY29uc3RleHByIF9fdmFyaWFudF9kYXRhKGluX3BsYWNlX2luZGV4X3Q8MD4s
X0FyZ3MmJiAuLi4gX19hcmdzKToNCiAgICAgICAgX192YWwoJnN0ZDo6Zm9yd2FyZDxfQXJncz4o
X19hcmdzKS4uLil7fQ0KDQogICAgX1R5cGUmIF9fZ2V0KGluX3BsYWNlX2luZGV4X3Q8MD4pew0K
ICAgICAgICByZXR1cm4gX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmPjo6X19nZXQoX192YWwpOw0K
ICAgIH0NCiAgICBjb25zdGV4cHIgX1R5cGUmIF9fZ2V0KGluX3BsYWNlX2luZGV4X3Q8MD4pIGNv
bnN0ew0KICAgICAgICByZXR1cm4gX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmPjo6X19nZXQoX192
YWwpOw0KICAgIH0NCg0KICAgIF9UeXBlJiBfX2dldF9ycmVmKGluX3BsYWNlX2luZGV4X3Q8MD4p
ew0KICAgICAgICByZXR1cm4gX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmPjo6X19nZXRfcnJlZihf
X3ZhbCk7DQogICAgfQ0KICAgIGNvbnN0ZXhwciBfVHlwZSYgX19nZXRfcnJlZihpbl9wbGFjZV9p
bmRleF90PDA+KSBjb25zdHsNCiAgICAgICAgcmV0dXJuIF9fdmFyaWFudF9zdG9yYWdlPF9UeXBl
Jj46Ol9fZ2V0X3JyZWYoX192YWwpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIF9fZGVzdHJveShp
bl9wbGFjZV9pbmRleF90PDA+KXsNCiAgICAgICAgX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmPjo6
X19kZXN0cm95KF9fdmFsKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZT4N
CnVuaW9uIF9fdmFyaWFudF9kYXRhPF9UeXBlJiY+ew0KICAgIHR5cGVuYW1lIF9fdmFyaWFudF9z
dG9yYWdlPF9UeXBlJiY+OjpfX3R5cGUgX192YWw7DQogICAgc3RydWN0IF9fZHVtbXlfdHlwZXt9
IF9fZHVtbXk7DQoNCiAgICBjb25zdGV4cHIgX192YXJpYW50X2RhdGEoKTpfX2R1bW15KCl7fQ0K
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZz4NCiAgICBfX3ZhcmlhbnRfZGF0YShpbl9wbGFj
ZV9pbmRleF90PDA+LF9BcmcmJiBfX2FyZyk6DQogICAgICAgIF9fdmFsKCZfX2FyZyl7fQ0KDQog
ICAgX1R5cGUmJiBfX2dldChpbl9wbGFjZV9pbmRleF90PDA+KXsNCiAgICAgICAgcmV0dXJuIF9f
dmFyaWFudF9zdG9yYWdlPF9UeXBlJiY+OjpfX2dldChfX3ZhbCk7DQogICAgfQ0KICAgIGNvbnN0
ZXhwciBfVHlwZSYmIF9fZ2V0KGluX3BsYWNlX2luZGV4X3Q8MD4pIGNvbnN0ew0KICAgICAgICBy
ZXR1cm4gX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmJj46Ol9fZ2V0KF9fdmFsKTsNCiAgICB9DQog
ICAgX1R5cGUmJiBfX2dldF9ycmVmKGluX3BsYWNlX2luZGV4X3Q8MD4pew0KICAgICAgICByZXR1
cm4gX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmJj46Ol9fZ2V0X3JyZWYoX192YWwpOw0KICAgIH0N
CiAgICBjb25zdGV4cHIgX1R5cGUmJiBfX2dldF9ycmVmKGluX3BsYWNlX2luZGV4X3Q8MD4pIGNv
bnN0ew0KICAgICAgICByZXR1cm4gX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmJj46Ol9fZ2V0X3Jy
ZWYoX192YWwpOw0KICAgIH0NCiAgICB2b2lkIF9fZGVzdHJveShpbl9wbGFjZV9pbmRleF90PDA+
KXsNCiAgICAgICAgX192YXJpYW50X3N0b3JhZ2U8X1R5cGUmJj46Ol9fZGVzdHJveShfX3ZhbCk7
DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0
Pg0KdW5pb24gX192YXJpYW50X2RhdGE8X0hlYWQsX1Jlc3QuLi4+ew0KICAgIF9fdmFyaWFudF9k
YXRhPF9IZWFkPiBfX2hlYWQ7DQogICAgX192YXJpYW50X2RhdGE8X1Jlc3QuLi4+IF9fcmVzdDsN
Cg0KICAgIGNvbnN0ZXhwciBfX3ZhcmlhbnRfZGF0YSgpOg0KICAgICAgICBfX2hlYWQoKXt9DQoN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX0FyZ3M+DQogICAgY29uc3RleHByIF9fdmFyaWFu
dF9kYXRhKGluX3BsYWNlX2luZGV4X3Q8MD4sX0FyZ3MmJiAuLi4gX19hcmdzKToNCiAgICAgICAg
X19oZWFkKGluX3BsYWNlPDA+LHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLil7fQ0KICAg
IHRlbXBsYXRlPHNpemVfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9BcmdzPg0KICAgIGNvbnN0ZXhw
ciBfX3ZhcmlhbnRfZGF0YShpbl9wbGFjZV9pbmRleF90PF9JbmRleD4sX0FyZ3MmJiAuLi4gX19h
cmdzKToNCiAgICAgICAgX19yZXN0KGluX3BsYWNlPF9JbmRleC0xPixzdGQ6OmZvcndhcmQ8X0Fy
Z3M+KF9fYXJncykuLi4pe30NCg0KICAgIF9IZWFkJiBfX2dldChpbl9wbGFjZV9pbmRleF90PDA+
KXsNCiAgICAgICAgcmV0dXJuIF9faGVhZC5fX2dldChpbl9wbGFjZTwwPik7DQogICAgfQ0KDQog
ICAgIF9IZWFkJiYgX19nZXRfcnJlZihpbl9wbGFjZV9pbmRleF90PDA+KXsNCiAgICAgICAgcmV0
dXJuIF9faGVhZC5fX2dldF9ycmVmKGluX3BsYWNlPDA+KTsNCiAgICB9DQogICAgDQogICAgY29u
c3RleHByIGNvbnN0IF9IZWFkJiBfX2dldChpbl9wbGFjZV9pbmRleF90PDA+KSBjb25zdHsNCiAg
ICAgICAgcmV0dXJuIF9faGVhZC5fX2dldChpbl9wbGFjZTwwPik7DQogICAgfQ0KDQogICAgY29u
c3RleHByIGNvbnN0IF9IZWFkJiYgX19nZXRfcnJlZihpbl9wbGFjZV9pbmRleF90PDA+KSBjb25z
dHsNCiAgICAgICAgcmV0dXJuIF9faGVhZC5fX2dldF9ycmVmKGluX3BsYWNlPDA+KTsNCiAgICB9
DQogICAgDQogICAgdGVtcGxhdGU8c2l6ZV90IF9JbmRleD4NCiAgICB0eXBlbmFtZSBfX2luZGV4
ZWRfdHlwZTxfSW5kZXgtMSxfUmVzdC4uLj46Ol9fdHlwZSYgX19nZXQoDQogICAgICAgIGluX3Bs
YWNlX2luZGV4X3Q8X0luZGV4Pil7DQogICAgICAgIHJldHVybiBfX3Jlc3QuX19nZXQoaW5fcGxh
Y2U8X0luZGV4LTE+KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxzaXplX3QgX0luZGV4Pg0KICAg
ICB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgtMSxfUmVzdC4uLj46Ol9fdHlwZSYmIF9f
Z2V0X3JyZWYoDQogICAgICAgIGluX3BsYWNlX2luZGV4X3Q8X0luZGV4Pil7DQogICAgICAgIHJl
dHVybiBfX3Jlc3QuX19nZXRfcnJlZihpbl9wbGFjZTxfSW5kZXgtMT4pOw0KICAgIH0NCiAgICAN
CiAgICB0ZW1wbGF0ZTxzaXplX3QgX0luZGV4Pg0KICAgIGNvbnN0ZXhwciBjb25zdCB0eXBlbmFt
ZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgtMSxfUmVzdC4uLj46Ol9fdHlwZSYgX19nZXQoDQogICAg
ICAgIGluX3BsYWNlX2luZGV4X3Q8X0luZGV4PikgY29uc3R7DQogICAgICAgIHJldHVybiBfX3Jl
c3QuX19nZXQoaW5fcGxhY2U8X0luZGV4LTE+KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxzaXpl
X3QgX0luZGV4Pg0KICAgIGNvbnN0ZXhwciBjb25zdCB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxf
SW5kZXgtMSxfUmVzdC4uLj46Ol9fdHlwZSYmIF9fZ2V0X3JyZWYoDQogICAgICAgIGluX3BsYWNl
X2luZGV4X3Q8X0luZGV4PikgY29uc3R7DQogICAgICAgIHJldHVybiBfX3Jlc3QuX19nZXRfcnJl
Zihpbl9wbGFjZTxfSW5kZXgtMT4pOw0KICAgIH0NCiAgICANCiAgICANCiAgICB2b2lkIF9fZGVz
dHJveShpbl9wbGFjZV9pbmRleF90PDA+KXsNCiAgICAgICAgX19oZWFkLl9fZGVzdHJveShpbl9w
bGFjZTwwPik7DQogICAgfQ0KICAgIHRlbXBsYXRlPHNpemVfdCBfSW5kZXg+DQogICAgdm9pZCBf
X2Rlc3Ryb3koaW5fcGxhY2VfaW5kZXhfdDxfSW5kZXg+KXsNCiAgICAgICAgX19yZXN0Ll9fZGVz
dHJveShpbl9wbGFjZTxfSW5kZXgtMT4pOw0KICAgIH0NCn07DQoNCg0KdGVtcGxhdGU8cHRyZGlm
Zl90Li4uIF9JbmRpY2VzPg0Kc3RydWN0IF9faW5kZXhfc2VxdWVuY2V7DQogICAgdHlwZWRlZiBf
X2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uLHNpemVvZi4uLihfSW5kaWNlcyk+IF9fbmV4dDsN
CiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBfX2xlbmd0aD1zaXplb2YuLi4oX0luZGljZXMp
Ow0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX3R5cGVfaW5k
aWNlczsNCg0KdGVtcGxhdGU8Pg0Kc3RydWN0IF9fdHlwZV9pbmRpY2VzPD57DQogICAgdHlwZWRl
ZiBfX2luZGV4X3NlcXVlbmNlPD4gX190eXBlOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1R5
cGU+DQpzdHJ1Y3QgX190eXBlX2luZGljZXM8X1R5cGU+ew0KICAgIHR5cGVkZWYgX19pbmRleF9z
ZXF1ZW5jZTwwPiBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFt
ZSAuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX190eXBlX2luZGljZXM8X1R5cGUsX1Jlc3QuLi4+ew0KICAg
IHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX2luZGljZXM8X1Jlc3QuLi4+OjpfX3R5cGU6Ol9fbmV4
dCBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudD4NCnN0cnVjdCBfX3Zh
cmlhbnRfaW5kaWNlczsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBf
X3ZhcmlhbnRfaW5kaWNlczxWYXJpYW50PF9UeXBlcy4uLj4+ew0KICAgIHR5cGVkZWYgdHlwZW5h
bWUgX190eXBlX2luZGljZXM8X1R5cGVzLi4uPjo6X190eXBlIF9fdHlwZTsNCn07DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIF9WYXJpYW50LA0KICAgICAgICAgdHlwZW5hbWUgX0luZGljZXM9dHlwZW5h
bWUgX192YXJpYW50X2luZGljZXM8X1ZhcmlhbnQ+OjpfX3R5cGU+DQpzdHJ1Y3QgX19tb3ZlX2Nv
bnN0cnVjdF9vcF90YWJsZTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1ZhcmlhbnQscHRyZGlmZl90
IC4uLiBfSW5kaWNlcz4NCnN0cnVjdCBfX21vdmVfY29uc3RydWN0X29wX3RhYmxlPF9WYXJpYW50
LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+PnsNCiAgICB0eXBlZGVmIHZvaWQoKiBjb25z
dCBfX2Z1bmNfdHlwZSkoX1ZhcmlhbnQqLF9WYXJpYW50Jik7DQogICAgDQogICAgdGVtcGxhdGU8
cHRyZGlmZl90IF9JbmRleD4NCiAgICBzdGF0aWMgdm9pZCBfX21vdmVfY29uc3RydWN0X2Z1bmMo
DQogICAgICAgIF9WYXJpYW50ICogX19saHMsX1ZhcmlhbnQmIF9fcmhzKXsNCiAgICAgICAgX19s
aHMtPnRlbXBsYXRlIF9fZW1wbGFjZV9jb25zdHJ1Y3Q8X0luZGV4PigNCiAgICAgICAgICAgIHN0
ZDo6bW92ZShnZXQ8X0luZGV4PihfX3JocykpKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3Qg
X19mdW5jX3R5cGUgX19hcHBseVtzaXplb2YuLi4oX0luZGljZXMpXTsNCn07DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIF9WYXJpYW50LHB0cmRpZmZfdCAuLi4gX0luZGljZXM+DQpjb25zdCB0eXBlbmFt
ZSBfX21vdmVfY29uc3RydWN0X29wX3RhYmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0lu
ZGljZXMuLi4+Pjo6DQpfX2Z1bmNfdHlwZQ0KX19tb3ZlX2NvbnN0cnVjdF9vcF90YWJsZTxfVmFy
aWFudCxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPj46Ol9fYXBwbHlbDQogICAgc2l6ZW9m
Li4uKF9JbmRpY2VzKV09ew0KICAgICAgICAmX19tb3ZlX2NvbnN0cnVjdF9mdW5jPF9JbmRpY2Vz
Pi4uLg0KICAgIH07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WYXJpYW50LA0KICAgICAgICAgdHlw
ZW5hbWUgX0luZGljZXM9dHlwZW5hbWUgX192YXJpYW50X2luZGljZXM8X1ZhcmlhbnQ+OjpfX3R5
cGU+DQpzdHJ1Y3QgX19tb3ZlX2Fzc2lnbl9vcF90YWJsZTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
X1ZhcmlhbnQscHRyZGlmZl90IC4uLiBfSW5kaWNlcz4NCnN0cnVjdCBfX21vdmVfYXNzaWduX29w
X3RhYmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+PnsNCiAgICB0eXBl
ZGVmIHZvaWQoKiBjb25zdCBfX2Z1bmNfdHlwZSkoX1ZhcmlhbnQqLF9WYXJpYW50Jik7DQogICAg
DQogICAgdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleD4NCiAgICBzdGF0aWMgdm9pZCBfX21vdmVf
YXNzaWduX2Z1bmMoDQogICAgICAgIF9WYXJpYW50ICogX19saHMsX1ZhcmlhbnQmIF9fcmhzKXsN
CiAgICAgICAgZ2V0PF9JbmRleD4oKl9fbGhzKT1zdGQ6Om1vdmUoZ2V0PF9JbmRleD4oX19yaHMp
KTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3QgX19mdW5jX3R5cGUgX19hcHBseVtzaXplb2Yu
Li4oX0luZGljZXMpXTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WYXJpYW50LHB0cmRpZmZf
dCAuLi4gX0luZGljZXM+DQpjb25zdCB0eXBlbmFtZSBfX21vdmVfYXNzaWduX29wX3RhYmxlPF9W
YXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+Pjo6DQpfX2Z1bmNfdHlwZQ0KX19t
b3ZlX2Fzc2lnbl9vcF90YWJsZTxfVmFyaWFudCxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4u
Pj46Ol9fYXBwbHlbDQogICAgc2l6ZW9mLi4uKF9JbmRpY2VzKV09ew0KICAgICAgICAmX19tb3Zl
X2Fzc2lnbl9mdW5jPF9JbmRpY2VzPi4uLg0KICAgIH07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9W
YXJpYW50LA0KICAgICAgICAgdHlwZW5hbWUgX0luZGljZXM9dHlwZW5hbWUgX192YXJpYW50X2lu
ZGljZXM8X1ZhcmlhbnQ+OjpfX3R5cGU+DQpzdHJ1Y3QgX19jb3B5X2NvbnN0cnVjdF9vcF90YWJs
ZTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1ZhcmlhbnQscHRyZGlmZl90IC4uLiBfSW5kaWNlcz4N
CnN0cnVjdCBfX2NvcHlfY29uc3RydWN0X29wX3RhYmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVu
Y2U8X0luZGljZXMuLi4+PnsNCiAgICB0eXBlZGVmIHZvaWQoKiBjb25zdCBfX2Z1bmNfdHlwZSko
X1ZhcmlhbnQqLF9WYXJpYW50IGNvbnN0Jik7DQogICAgDQogICAgdGVtcGxhdGU8cHRyZGlmZl90
IF9JbmRleD4NCiAgICBzdGF0aWMgdm9pZCBfX2NvcHlfY29uc3RydWN0X2Z1bmMoDQogICAgICAg
IF9WYXJpYW50ICogX19saHMsX1ZhcmlhbnQgY29uc3QmIF9fcmhzKXsNCiAgICAgICAgX19saHMt
PnRlbXBsYXRlIF9fZW1wbGFjZV9jb25zdHJ1Y3Q8X0luZGV4PigNCiAgICAgICAgICAgIGdldDxf
SW5kZXg+KF9fcmhzKSk7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0IF9fZnVuY190eXBlIF9f
YXBwbHlbc2l6ZW9mLi4uKF9JbmRpY2VzKV07DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFy
aWFudCxwdHJkaWZmX3QgLi4uIF9JbmRpY2VzPg0KY29uc3QgdHlwZW5hbWUgX19jb3B5X2NvbnN0
cnVjdF9vcF90YWJsZTxfVmFyaWFudCxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPj46Og0K
X19mdW5jX3R5cGUNCl9fY29weV9jb25zdHJ1Y3Rfb3BfdGFibGU8X1ZhcmlhbnQsX19pbmRleF9z
ZXF1ZW5jZTxfSW5kaWNlcy4uLj4+OjpfX2FwcGx5Ww0KICAgIHNpemVvZi4uLihfSW5kaWNlcyld
PXsNCiAgICAgICAgJl9fY29weV9jb25zdHJ1Y3RfZnVuYzxfSW5kaWNlcz4uLi4NCiAgICB9Ow0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudCwNCiAgICAgICAgIHR5cGVuYW1lIF9JbmRpY2Vz
PXR5cGVuYW1lIF9fdmFyaWFudF9pbmRpY2VzPF9WYXJpYW50Pjo6X190eXBlPg0Kc3RydWN0IF9f
Y29weV9hc3NpZ25fb3BfdGFibGU7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WYXJpYW50LHB0cmRp
ZmZfdCAuLi4gX0luZGljZXM+DQpzdHJ1Y3QgX19jb3B5X2Fzc2lnbl9vcF90YWJsZTxfVmFyaWFu
dCxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPj57DQogICAgdHlwZWRlZiB2b2lkKCogY29u
c3QgX19mdW5jX3R5cGUpKF9WYXJpYW50KixfVmFyaWFudCBjb25zdCYpOw0KICAgIA0KICAgIHRl
bXBsYXRlPHB0cmRpZmZfdCBfSW5kZXg+DQogICAgc3RhdGljIHZvaWQgX19jb3B5X2Fzc2lnbl9m
dW5jKA0KICAgICAgICBfVmFyaWFudCAqIF9fbGhzLF9WYXJpYW50IGNvbnN0JiBfX3Jocyl7DQog
ICAgICAgIGdldDxfSW5kZXg+KCpfX2xocyk9Z2V0PF9JbmRleD4oX19yaHMpOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBjb25zdCBfX2Z1bmNfdHlwZSBfX2FwcGx5W3NpemVvZi4uLihfSW5kaWNlcyld
Ow0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1ZhcmlhbnQscHRyZGlmZl90IC4uLiBfSW5kaWNl
cz4NCmNvbnN0IHR5cGVuYW1lIF9fY29weV9hc3NpZ25fb3BfdGFibGU8X1ZhcmlhbnQsX19pbmRl
eF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4+OjoNCl9fZnVuY190eXBlDQpfX2NvcHlfYXNzaWduX29w
X3RhYmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+Pjo6X19hcHBseVsN
CiAgICBzaXplb2YuLi4oX0luZGljZXMpXT17DQogICAgICAgICZfX2NvcHlfYXNzaWduX2Z1bmM8
X0luZGljZXM+Li4uDQogICAgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1ZhcmlhbnQsDQogICAg
ICAgICB0eXBlbmFtZSBfSW5kaWNlcz10eXBlbmFtZSBfX3ZhcmlhbnRfaW5kaWNlczxfVmFyaWFu
dD46Ol9fdHlwZT4NCnN0cnVjdCBfX2Rlc3Ryb3lfb3BfdGFibGU7DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIF9WYXJpYW50LHB0cmRpZmZfdCAuLi4gX0luZGljZXM+DQpzdHJ1Y3QgX19kZXN0cm95X29w
X3RhYmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+PnsNCiAgICB0eXBl
ZGVmIHZvaWQoKiBjb25zdCBfX2Z1bmNfdHlwZSkoX1ZhcmlhbnQqKTsNCiAgICANCiAgICB0ZW1w
bGF0ZTxwdHJkaWZmX3QgX0luZGV4Pg0KICAgIHN0YXRpYyB2b2lkIF9fZGVzdHJveV9mdW5jKA0K
ICAgICAgICBfVmFyaWFudCAqIF9fc2VsZil7DQogICAgICAgIGlmKF9fc2VsZi0+X19pbmRleD49
MCl7DQogICAgICAgICAgICBfX3NlbGYtPl9fc3RvcmFnZS5fX2Rlc3Ryb3koaW5fcGxhY2U8X0lu
ZGV4Pik7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3QgX19mdW5jX3R5cGUg
X19hcHBseVtzaXplb2YuLi4oX0luZGljZXMpXTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9W
YXJpYW50LHB0cmRpZmZfdCAuLi4gX0luZGljZXM+DQpjb25zdCB0eXBlbmFtZSBfX2Rlc3Ryb3lf
b3BfdGFibGU8X1ZhcmlhbnQsX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4+OjoNCl9fZnVu
Y190eXBlDQpfX2Rlc3Ryb3lfb3BfdGFibGU8X1ZhcmlhbnQsX19pbmRleF9zZXF1ZW5jZTxfSW5k
aWNlcy4uLj4+OjpfX2FwcGx5Ww0KICAgIHNpemVvZi4uLihfSW5kaWNlcyldPXsNCiAgICAgICAg
Jl9fZGVzdHJveV9mdW5jPF9JbmRpY2VzPi4uLg0KICAgIH07DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IF9WYXJpYW50LA0KICAgICAgICAgdHlwZW5hbWUgX0luZGljZXM9dHlwZW5hbWUgX192YXJpYW50
X2luZGljZXM8X1ZhcmlhbnQ+OjpfX3R5cGU+DQpzdHJ1Y3QgX19zd2FwX29wX3RhYmxlOw0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudCxwdHJkaWZmX3QgLi4uIF9JbmRpY2VzPg0Kc3RydWN0
IF9fc3dhcF9vcF90YWJsZTxfVmFyaWFudCxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPj57
DQogICAgdHlwZWRlZiB2b2lkKCogY29uc3QgX19mdW5jX3R5cGUpKF9WYXJpYW50JixfVmFyaWFu
dCYpOw0KICAgIA0KICAgIHRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXg+DQogICAgc3RhdGljIHZv
aWQgX19zd2FwX2Z1bmMoDQogICAgICAgIF9WYXJpYW50ICYgX19saHMsX1ZhcmlhbnQgJiBfX3Jo
cyl7DQogICAgICAgIHN3YXAoZ2V0PF9JbmRleD4oX19saHMpLGdldDxfSW5kZXg+KF9fcmhzKSk7
DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0IF9fZnVuY190eXBlIF9fYXBwbHlbc2l6ZW9mLi4u
KF9JbmRpY2VzKV07DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudCxwdHJkaWZmX3Qg
Li4uIF9JbmRpY2VzPg0KY29uc3QgdHlwZW5hbWUgX19zd2FwX29wX3RhYmxlPF9WYXJpYW50LF9f
aW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+Pjo6DQpfX2Z1bmNfdHlwZQ0KX19zd2FwX29wX3Rh
YmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+Pjo6X19hcHBseVsNCiAg
ICBzaXplb2YuLi4oX0luZGljZXMpXT17DQogICAgICAgICZfX3N3YXBfZnVuYzxfSW5kaWNlcz4u
Li4NCiAgICB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudCwNCiAgICAgICAgIHR5cGVu
YW1lIF9JbmRpY2VzPXR5cGVuYW1lIF9fdmFyaWFudF9pbmRpY2VzPF9WYXJpYW50Pjo6X190eXBl
Pg0Kc3RydWN0IF9fZXF1YWxpdHlfb3BfdGFibGU7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WYXJp
YW50LHB0cmRpZmZfdCAuLi4gX0luZGljZXM+DQpzdHJ1Y3QgX19lcXVhbGl0eV9vcF90YWJsZTxf
VmFyaWFudCxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPj57DQogICAgdHlwZWRlZiBib29s
KCogY29uc3QgX19jb21wYXJlX2Z1bmNfdHlwZSkoX1ZhcmlhbnQgY29uc3QmLF9WYXJpYW50IGNv
bnN0Jik7DQogICAgDQogICAgdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleD4NCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgX19lcXVhbGl0eV9jb21wYXJlX2Z1bmMoDQogICAgICAgIF9WYXJpYW50
IGNvbnN0JiBfX2xocyxfVmFyaWFudCBjb25zdCYgX19yaHMpew0KICAgICAgICByZXR1cm4gZ2V0
PF9JbmRleD4oX19saHMpPT1nZXQ8X0luZGV4PihfX3Jocyk7DQogICAgfQ0KDQogICAgc3RhdGlj
IGNvbnN0ZXhwciBfX2NvbXBhcmVfZnVuY190eXBlIF9fZXF1YWxpdHlfY29tcGFyZVtzaXplb2Yu
Li4oX0luZGljZXMpXT17DQogICAgICAgICZfX2VxdWFsaXR5X2NvbXBhcmVfZnVuYzxfSW5kaWNl
cz4uLi4NCiAgICB9Ow0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1ZhcmlhbnQscHRyZGlmZl90
IC4uLiBfSW5kaWNlcz4NCmNvbnN0ZXhwciB0eXBlbmFtZSBfX2VxdWFsaXR5X29wX3RhYmxlPF9W
YXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+Pjo6DQpfX2NvbXBhcmVfZnVuY190
eXBlDQpfX2VxdWFsaXR5X29wX3RhYmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGlj
ZXMuLi4+Pjo6X19lcXVhbGl0eV9jb21wYXJlWw0KICAgIHNpemVvZi4uLihfSW5kaWNlcyldOw0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudCwNCiAgICAgICAgIHR5cGVuYW1lIF9JbmRpY2Vz
PXR5cGVuYW1lIF9fdmFyaWFudF9pbmRpY2VzPF9WYXJpYW50Pjo6X190eXBlPg0Kc3RydWN0IF9f
bGVzc190aGFuX29wX3RhYmxlOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudCxwdHJkaWZm
X3QgLi4uIF9JbmRpY2VzPg0Kc3RydWN0IF9fbGVzc190aGFuX29wX3RhYmxlPF9WYXJpYW50LF9f
aW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+PnsNCiAgICB0eXBlZGVmIGJvb2woKiBjb25zdCBf
X2NvbXBhcmVfZnVuY190eXBlKShfVmFyaWFudCBjb25zdCYsX1ZhcmlhbnQgY29uc3QmKTsNCiAg
ICANCiAgICB0ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4Pg0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBfX2xlc3NfdGhhbl9jb21wYXJlX2Z1bmMoDQogICAgICAgIF9WYXJpYW50IGNvbnN0JiBf
X2xocyxfVmFyaWFudCBjb25zdCYgX19yaHMpew0KICAgICAgICByZXR1cm4gZ2V0PF9JbmRleD4o
X19saHMpPGdldDxfSW5kZXg+KF9fcmhzKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHBy
IF9fY29tcGFyZV9mdW5jX3R5cGUgX19sZXNzX3RoYW5fY29tcGFyZVtzaXplb2YuLi4oX0luZGlj
ZXMpXT17DQogICAgICAgICZfX2xlc3NfdGhhbl9jb21wYXJlX2Z1bmM8X0luZGljZXM+Li4uDQog
ICAgfTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WYXJpYW50LHB0cmRpZmZfdCAuLi4gX0lu
ZGljZXM+DQpjb25zdGV4cHIgdHlwZW5hbWUgX19sZXNzX3RoYW5fb3BfdGFibGU8X1ZhcmlhbnQs
X19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4+OjoNCl9fY29tcGFyZV9mdW5jX3R5cGUNCl9f
bGVzc190aGFuX29wX3RhYmxlPF9WYXJpYW50LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+
Pjo6X19sZXNzX3RoYW5fY29tcGFyZVsNCiAgICBzaXplb2YuLi4oX0luZGljZXMpXTsNCg0KdGVt
cGxhdGU8dHlwZW5hbWUgX1ZhcmlhbnQ+DQpzdHJ1Y3QgX192YXJpYW50X3N0b3JhZ2VfdHlwZTsN
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgX0Rlcml2ZWQsYm9vbCBfX3RyaXZpYWxfZGVzdHJ1Y3Rvcj4N
CnN0cnVjdCBfX3ZhcmlhbnRfYmFzZQ0Kew0KICAgIH5fX3ZhcmlhbnRfYmFzZSgpew0KICAgICAg
ICBzdGF0aWNfY2FzdDxfRGVyaXZlZCo+KHRoaXMpLT5fX2Rlc3Ryb3lfc2VsZigpOw0KICAgIH0N
Cn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9EZXJpdmVkPg0Kc3RydWN0IF9fdmFyaWFudF9iYXNl
PF9EZXJpdmVkLHRydWU+ew0KfTsNCg0KDQp0ZW1wbGF0ZTxwdHJkaWZmX3QgX09mZnNldCx0eXBl
bmFtZSBfQ3VycmVudFNlcXVlbmNlLA0KICAgICAgICAgdHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUg
Li4uIF9UeXBlcz4NCnN0cnVjdCBfX2FsbF9pbmRpY2VzX2hlbHBlcjsNCg0KdGVtcGxhdGU8cHRy
ZGlmZl90IF9PZmZzZXQscHRyZGlmZl90IC4uLiBfSW5kaWNlcywNCiAgICAgICAgIHR5cGVuYW1l
IF9UeXBlLHR5cGVuYW1lIC4uLiBfUmVzdD4NCnN0cnVjdCBfX2FsbF9pbmRpY2VzX2hlbHBlcjwN
CiAgICBfT2Zmc2V0LF9faW5kZXhfc2VxdWVuY2U8X0luZGljZXMuLi4+LA0KICAgIF9UeXBlLF9U
eXBlLF9SZXN0Li4uPnsNCiAgICB0eXBlZGVmIHR5cGVuYW1lIF9fYWxsX2luZGljZXNfaGVscGVy
PA0KICAgICAgICBfT2Zmc2V0KzEsX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLixfT2Zmc2V0
PixfVHlwZSxfUmVzdC4uLj46Ol9fdHlwZQ0KICAgICAgICBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0
ZTxwdHJkaWZmX3QgX09mZnNldCx0eXBlbmFtZSBfQ3VycmVudFNlcXVlbmNlLA0KICAgICAgICAg
dHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0
IF9fYWxsX2luZGljZXNfaGVscGVyPF9PZmZzZXQsX0N1cnJlbnRTZXF1ZW5jZSxfVHlwZSxfSGVh
ZCxfUmVzdC4uLj57DQogICAgdHlwZWRlZiB0eXBlbmFtZSBfX2FsbF9pbmRpY2VzX2hlbHBlcjwN
CiAgICAgICAgX09mZnNldCsxLF9DdXJyZW50U2VxdWVuY2UsX1R5cGUsX1Jlc3QuLi4+OjpfX3R5
cGUgX190eXBlOw0KfTsNCg0KdGVtcGxhdGU8cHRyZGlmZl90IF9PZmZzZXQsdHlwZW5hbWUgX0N1
cnJlbnRTZXF1ZW5jZSx0eXBlbmFtZSBfVHlwZT4NCnN0cnVjdCBfX2FsbF9pbmRpY2VzX2hlbHBl
cjxfT2Zmc2V0LF9DdXJyZW50U2VxdWVuY2UsX1R5cGU+ew0KICAgIHR5cGVkZWYgX0N1cnJlbnRT
ZXF1ZW5jZSBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAu
Li4gX1R5cGVzPg0Kc3RydWN0IF9fYWxsX2luZGljZXN7DQogICAgdHlwZWRlZiB0eXBlbmFtZSBf
X2FsbF9pbmRpY2VzX2hlbHBlcjwNCiAgICAgICAgMCxfX2luZGV4X3NlcXVlbmNlPD4sX1R5cGUs
X1R5cGVzLi4uPjo6X190eXBlIF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIC4uLiBf
U2VxdWVuY2VzPg0Kc3RydWN0IF9fY29tYmluZV9zZXF1ZW5jZXM7DQoNCnRlbXBsYXRlPHB0cmRp
ZmZfdCAuLi4gX0luZGljZXMxLHB0cmRpZmZfdCAuLi4gX0luZGljZXMyPg0Kc3RydWN0IF9fY29t
YmluZV9zZXF1ZW5jZXM8DQogICAgX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlczEuLi4+LF9faW5k
ZXhfc2VxdWVuY2U8X0luZGljZXMyLi4uPj57DQogICAgdHlwZWRlZiBfX2luZGV4X3NlcXVlbmNl
PF9JbmRpY2VzMS4uLixfSW5kaWNlczIuLi4+IF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIF9TZXF1ZW5jZSx0eXBlbmFtZSAuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX19jb21iaW5lX3NlcXVl
bmNlczxfU2VxdWVuY2UsX1Jlc3QuLi4+ew0KICAgIHR5cGVkZWYgdHlwZW5hbWUgX19jb21iaW5l
X3NlcXVlbmNlczwNCiAgICAgICAgX1NlcXVlbmNlLA0KICAgICAgICB0eXBlbmFtZSBfX2NvbWJp
bmVfc2VxdWVuY2VzPF9SZXN0Li4uPjo6X190eXBlPjo6X190eXBlIF9fdHlwZTsNCn07DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIF9JbmRpY2VzPg0Kc3RydWN0IF9fZmlyc3RfaW5kZXg7DQoNCnRlbXBs
YXRlPHB0cmRpZmZfdCBfRmlyc3RJbmRleCxwdHJkaWZmX3QgLi4uIF9SZXN0Pg0Kc3RydWN0IF9f
Zmlyc3RfaW5kZXg8X19pbmRleF9zZXF1ZW5jZTxfRmlyc3RJbmRleCxfUmVzdC4uLj4+ew0KICAg
IHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IF9fdmFsdWU9X0ZpcnN0SW5kZXg7DQp9Ow0KDQp0
ZW1wbGF0ZTxwdHJkaWZmX3QgX09mZnNldCx0eXBlbmFtZSBfQ3VycmVudFNlcXVlbmNlLA0KICAg
ICAgICAgdHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX2NvbnN0
cnVjdGlibGVfbWF0Y2hlc19oZWxwZXI7DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfT2Zmc2V0LHR5
cGVuYW1lIF9TZXF1ZW5jZSx0eXBlbmFtZSBfVHlwZT4NCnN0cnVjdCBfX2NvbnN0cnVjdGlibGVf
bWF0Y2hlc19oZWxwZXI8DQogICAgX09mZnNldCxfU2VxdWVuY2UsX1R5cGU+ew0KICAgIHR5cGVk
ZWYgX1NlcXVlbmNlIF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPGJvb2wgX0FjY2VwdCxwdHJkaWZm
X3QgX0VudHJ5Pg0Kc3RydWN0IF9fc2VxdWVuY2Vfb3JfZW1wdHl7DQogICAgdHlwZWRlZiBfX2lu
ZGV4X3NlcXVlbmNlPD4gX190eXBlOw0KfTsNCg0KdGVtcGxhdGU8cHRyZGlmZl90IF9FbnRyeT4N
CnN0cnVjdCBfX3NlcXVlbmNlX29yX2VtcHR5PHRydWUsX0VudHJ5PnsNCiAgICB0eXBlZGVmIF9f
aW5kZXhfc2VxdWVuY2U8X0VudHJ5PiBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0ZTxwdHJkaWZmX3Qg
X09mZnNldCx0eXBlbmFtZSBfQ3VycmVudFNlcXVlbmNlLA0KICAgICAgICAgdHlwZW5hbWUgX1R5
cGUsdHlwZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9fY29uc3RydWN0
aWJsZV9tYXRjaGVzX2hlbHBlcjwNCiAgICBfT2Zmc2V0LF9DdXJyZW50U2VxdWVuY2UsX1R5cGUs
X0hlYWQsX1Jlc3QuLi4+ew0KICAgIHR5cGVkZWYNCiAgICB0eXBlbmFtZSBfX2NvbnN0cnVjdGli
bGVfbWF0Y2hlc19oZWxwZXI8DQogICAgICAgIF9PZmZzZXQrMSwNCiAgICAgICAgdHlwZW5hbWUg
X19jb21iaW5lX3NlcXVlbmNlczwNCiAgICAgICAgICAgIF9DdXJyZW50U2VxdWVuY2UsDQogICAg
ICAgICAgICB0eXBlbmFtZSBfX3NlcXVlbmNlX29yX2VtcHR5PA0KICAgICAgICAgICAgICAgIHN0
ZDo6aXNfY29uc3RydWN0aWJsZTxfSGVhZCxfVHlwZT46OnZhbHVlLA0KICAgICAgICAgICAgICAg
IF9PZmZzZXQ+OjpfX3R5cGU+OjpfX3R5cGUsDQogICAgICAgIF9UeXBlLF9SZXN0Li4uPjo6X190
eXBlIF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBf
VHlwZXM+DQpzdHJ1Y3QgX19jb25zdHJ1Y3RpYmxlX21hdGNoZXN7DQogICAgdHlwZWRlZiB0eXBl
bmFtZSBfX2NvbnN0cnVjdGlibGVfbWF0Y2hlc19oZWxwZXI8DQogICAgICAgIDAsX19pbmRleF9z
ZXF1ZW5jZTw+LF9UeXBlLF9UeXBlcy4uLj46Ol9fdHlwZSBfX3R5cGU7DQp9Ow0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPg0Kc3RydWN0IF9fdHlwZV9pbmRl
eF90b19jb25zdHJ1Y3R7DQogICAgdHlwZWRlZiB0eXBlbmFtZSBfX2FsbF9pbmRpY2VzPF9UeXBl
LF9UeXBlcy4uLj46Ol9fdHlwZSBfX2RpcmVjdF9tYXRjaGVzOw0KICAgIHR5cGVkZWYgdHlwZW5h
bWUgX19hbGxfaW5kaWNlczwNCiAgICAgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8DQog
ICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8X1R5cGU+Ojp0eXBlDQog
ICAgICAgICAgICA+Ojp0eXBlLF9UeXBlcy4uLj46Ol9fdHlwZSBfX3ZhbHVlX21hdGNoZXM7DQog
ICAgdHlwZWRlZiB0eXBlbmFtZSBfX2FsbF9pbmRpY2VzPA0KICAgICAgICBfVHlwZSwNCiAgICAg
ICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8DQogICAgICAgICAgICB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8X1R5cGVzPjo6dHlwZQ0KICAgICAgICAgICAgPjo6dHlwZS4uLj46
Ol9fdHlwZSBfX3JyZWZfbWF0Y2hlczsNCg0KICAgIHR5cGVkZWYgdHlwZW5hbWUgX19jb25zdHJ1
Y3RpYmxlX21hdGNoZXM8X1R5cGUsX1R5cGVzLi4uPjo6X190eXBlDQogICAgX19jb25zdHJ1Y3Rp
YmxlczsNCg0KICAgIHN0YXRpY19hc3NlcnQoDQogICAgICAgIChfX2RpcmVjdF9tYXRjaGVzOjpf
X2xlbmd0aD4wKSB8fA0KICAgICAgICAoX192YWx1ZV9tYXRjaGVzOjpfX2xlbmd0aD4wKSB8fA0K
ICAgICAgICAoX19ycmVmX21hdGNoZXM6Ol9fbGVuZ3RoPjApIHx8DQogICAgICAgIChfX2NvbnN0
cnVjdGlibGVzOjpfX2xlbmd0aD09MSksDQogICAgICAgICJGb3IgY29udmVyc2lvbiBjb25zdHJ1
Y3Rpb24gb2YgdmFyaWFudHMsIGV4YWN0bHkgb25lIHR5cGUgbXVzdCBiZSBjb25zdHJ1Y3RpYmxl
Iik7DQogICAgDQogICAgdHlwZWRlZiB0eXBlbmFtZSBfX2NvbWJpbmVfc2VxdWVuY2VzPA0KICAg
ICAgICBfX2RpcmVjdF9tYXRjaGVzLF9fdmFsdWVfbWF0Y2hlcyxfX3JyZWZfbWF0Y2hlcywNCiAg
ICAgICAgX19jb25zdHJ1Y3RpYmxlcz46Ol9fdHlwZSBfX2FsbF9tYXRjaGVzOw0KICAgIA0KICAg
IHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IF9fdmFsdWU9X19maXJzdF9pbmRleDxfX2FsbF9t
YXRjaGVzPjo6X192YWx1ZTsNCn07DQoNCnN0cnVjdCBfX3JlcGxhY2VfY29uc3RydWN0X2hlbHBl
cnsNCiAgICB0ZW1wbGF0ZTwNCiAgICAgICAgcHRyZGlmZl90IF9JbmRleCwNCiAgICAgICAgYm9v
bCBfX2NvbnN0cnVjdF9kaXJlY3RseSwNCiAgICAgICAgYm9vbCBfX2luZGV4ZWRfdHlwZV9oYXNf
bm90aHJvd19tb3ZlLA0KICAgICAgICBib29sIF9fb3RoZXJfdHlwZXNfaGF2ZV9ub3Rocm93X21v
dmU+DQogICAgc3RydWN0IF9faGVscGVyOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Zhcmlh
bnQsDQogICAgICAgICAgICAgdHlwZW5hbWUgX0luZGljZXM9dHlwZW5hbWUgX192YXJpYW50X2lu
ZGljZXM8X1ZhcmlhbnQ+OjpfX3R5cGU+DQogICAgc3RydWN0IF9fb3BfdGFibGU7DQp9Ow0KDQp0
ZW1wbGF0ZTwNCiAgICBwdHJkaWZmX3QgX0luZGV4LA0KICAgIGJvb2wgX19vdGhlcl90eXBlc19o
YXZlX25vdGhyb3dfbW92ZT4NCnN0cnVjdCBfX3JlcGxhY2VfY29uc3RydWN0X2hlbHBlcjo6X19o
ZWxwZXI8DQogICAgX0luZGV4LGZhbHNlLHRydWUsX19vdGhlcl90eXBlc19oYXZlX25vdGhyb3df
bW92ZT57DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFyaWFudCx0eXBlbmFtZSAuLi4gX0Fy
Z3M+DQogICAgc3RhdGljIHZvaWQgX190cmFtcG9saW5lKF9WYXJpYW50JiBfX3YsX0FyZ3MmJiAu
Li4gX19hcmdzKXsNCiAgICAgICAgX192LnRlbXBsYXRlIF9fdHdvX3N0YWdlX3JlcGxhY2U8X0lu
ZGV4PihfX2FyZ3MuLi4pOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPA0KICAgIHB0cmRpZmZfdCBf
SW5kZXgsDQogICAgYm9vbCBfX2luZGV4ZWRfdHlwZV9oYXNfbm90aHJvd19tb3ZlLA0KICAgIGJv
b2wgX19vdGhlcl90eXBlc19oYXZlX25vdGhyb3dfbW92ZT4NCnN0cnVjdCBfX3JlcGxhY2VfY29u
c3RydWN0X2hlbHBlcjo6X19oZWxwZXI8DQogICAgX0luZGV4LHRydWUsX19pbmRleGVkX3R5cGVf
aGFzX25vdGhyb3dfbW92ZSwNCiAgICBfX290aGVyX3R5cGVzX2hhdmVfbm90aHJvd19tb3ZlPnsN
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYXJpYW50LHR5cGVuYW1lIC4uLiBfQXJncz4NCiAg
ICBzdGF0aWMgdm9pZCBfX3RyYW1wb2xpbmUoX1ZhcmlhbnQmIF9fdixfQXJncyYmIC4uLiBfX2Fy
Z3Mpew0KICAgICAgICBfX3YudGVtcGxhdGUgX19kaXJlY3RfcmVwbGFjZTxfSW5kZXg+KHN0ZDo6
Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7DQogICAgfQ0KfTsNCg0KDQp0ZW1wbGF0ZTwNCiAg
ICBwdHJkaWZmX3QgX0luZGV4Pg0Kc3RydWN0IF9fcmVwbGFjZV9jb25zdHJ1Y3RfaGVscGVyOjpf
X2hlbHBlcjwNCiAgICBfSW5kZXgsZmFsc2UsZmFsc2UsdHJ1ZT57DQoNCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVmFyaWFudCx0eXBlbmFtZSAuLi4gX0FyZ3M+DQogICAgc3RhdGljIHZvaWQgX190
cmFtcG9saW5lKF9WYXJpYW50JiBfX3YsX0FyZ3MmJiAuLi4gX19hcmdzKXsNCiAgICAgICAgX192
LnRlbXBsYXRlIF9fbG9jYWxfYmFja3VwX3JlcGxhY2U8X0luZGV4PihzdGQ6OmZvcndhcmQ8X0Fy
Z3M+KF9fYXJncykuLi4pOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPA0KICAgIHB0cmRpZmZfdCBf
SW5kZXg+DQpzdHJ1Y3QgX19yZXBsYWNlX2NvbnN0cnVjdF9oZWxwZXI6Ol9faGVscGVyPA0KICAg
IF9JbmRleCxmYWxzZSxmYWxzZSxmYWxzZT57DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFy
aWFudCx0eXBlbmFtZSAuLi4gX0FyZ3M+DQogICAgc3RhdGljIHZvaWQgX190cmFtcG9saW5lKF9W
YXJpYW50JiBfX3YsX0FyZ3MmJiAuLi4gX19hcmdzKXsNCiAgICAgICAgX192LnRlbXBsYXRlIF9f
ZGlyZWN0X3JlcGxhY2U8X0luZGV4PihzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOw0K
ICAgIH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WYXJpYW50LHB0cmRpZmZfdCAuLi4gX0lu
ZGljZXM+DQpzdHJ1Y3QgX19yZXBsYWNlX2NvbnN0cnVjdF9oZWxwZXI6Ol9fb3BfdGFibGU8X1Zh
cmlhbnQsX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4+ew0KICAgIHR5cGVkZWYgdm9pZCgq
IGNvbnN0IF9fbW92ZV9mdW5jX3R5cGUpKF9WYXJpYW50KixfVmFyaWFudCYpOw0KICAgIHR5cGVk
ZWYgdm9pZCgqIGNvbnN0IF9fY29weV9mdW5jX3R5cGUpKF9WYXJpYW50KixfVmFyaWFudCBjb25z
dCYpOw0KICAgIA0KICAgIHRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXg+DQogICAgc3RhdGljIHZv
aWQgX19tb3ZlX2Fzc2lnbl9mdW5jKA0KICAgICAgICBfVmFyaWFudCAqIF9fbGhzLF9WYXJpYW50
JiBfX3Jocyl7DQogICAgICAgIF9fbGhzLT50ZW1wbGF0ZSBfX3JlcGxhY2VfY29uc3RydWN0PF9J
bmRleD4oc3RkOjptb3ZlKGdldDxfSW5kZXg+KF9fcmhzKSkpOw0KICAgICAgICBfX3Jocy5fX2Rl
c3Ryb3lfc2VsZigpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXg+DQog
ICAgc3RhdGljIHZvaWQgX19jb3B5X2Fzc2lnbl9mdW5jKA0KICAgICAgICBfVmFyaWFudCAqIF9f
bGhzLF9WYXJpYW50IGNvbnN0JiBfX3Jocyl7DQogICAgICAgIF9fbGhzLT50ZW1wbGF0ZSBfX3Jl
cGxhY2VfY29uc3RydWN0PF9JbmRleD4oZ2V0PF9JbmRleD4oX19yaHMpKTsNCiAgICB9DQogICAg
DQogICAgc3RhdGljIGNvbnN0IF9fbW92ZV9mdW5jX3R5cGUgX19tb3ZlX2Fzc2lnbltzaXplb2Yu
Li4oX0luZGljZXMpXTsNCiAgICBzdGF0aWMgY29uc3QgX19jb3B5X2Z1bmNfdHlwZSBfX2NvcHlf
YXNzaWduW3NpemVvZi4uLihfSW5kaWNlcyldOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1Zh
cmlhbnQscHRyZGlmZl90IC4uLiBfSW5kaWNlcz4NCmNvbnN0IHR5cGVuYW1lIF9fcmVwbGFjZV9j
b25zdHJ1Y3RfaGVscGVyOjpfX29wX3RhYmxlPA0KICAgIF9WYXJpYW50LF9faW5kZXhfc2VxdWVu
Y2U8X0luZGljZXMuLi4+Pjo6X19tb3ZlX2Z1bmNfdHlwZQ0KX19yZXBsYWNlX2NvbnN0cnVjdF9o
ZWxwZXI6Ol9fb3BfdGFibGU8DQogICAgX1ZhcmlhbnQsX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNl
cy4uLj4+OjpfX21vdmVfYXNzaWduWw0KICAgIHNpemVvZi4uLihfSW5kaWNlcyldPXsNCiAgICAg
ICAgJl9fbW92ZV9hc3NpZ25fZnVuYzxfSW5kaWNlcz4uLi4NCiAgICB9Ow0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBfVmFyaWFudCxwdHJkaWZmX3QgLi4uIF9JbmRpY2VzPg0KY29uc3QgdHlwZW5hbWUg
X19yZXBsYWNlX2NvbnN0cnVjdF9oZWxwZXI6Ol9fb3BfdGFibGU8DQogICAgX1ZhcmlhbnQsX19p
bmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4+OjpfX2NvcHlfZnVuY190eXBlDQpfX3JlcGxhY2Vf
Y29uc3RydWN0X2hlbHBlcjo6X19vcF90YWJsZTwNCiAgICBfVmFyaWFudCxfX2luZGV4X3NlcXVl
bmNlPF9JbmRpY2VzLi4uPj46Ol9fY29weV9hc3NpZ25bDQogICAgc2l6ZW9mLi4uKF9JbmRpY2Vz
KV09ew0KICAgICAgICAmX19jb3B5X2Fzc2lnbl9mdW5jPF9JbmRpY2VzPi4uLg0KICAgIH07DQoN
CnRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgscHRyZGlmZl90IF9NYXNrSW5kZXgsdHlwZW5hbWUg
X1N0b3JhZ2U+DQpzdHJ1Y3QgX19iYWNrdXBfc3RvcmFnZV9vcHN7DQogICAgc3RhdGljIHZvaWQg
X19tb3ZlX2NvbnN0cnVjdF9mdW5jKA0KICAgICAgICBfU3RvcmFnZSAqIF9fZGVzdCxfU3RvcmFn
ZSYgX19zb3VyY2Upew0KICAgICAgICBuZXcoX19kZXN0KSBfU3RvcmFnZSgNCiAgICAgICAgICAg
IGluX3BsYWNlPF9JbmRleD4sDQogICAgICAgICAgICBzdGQ6Om1vdmUoX19zb3VyY2UuX19nZXQo
aW5fcGxhY2U8X0luZGV4PikpKTsNCiAgICB9DQogICAgc3RhdGljIHZvaWQgX19kZXN0cm95X2Z1
bmMoX1N0b3JhZ2UgKiBfX29iail7DQogICAgICAgIF9fb2JqLT5fX2Rlc3Ryb3koaW5fcGxhY2U8
X0luZGV4Pik7DQogICAgfTsNCn07DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5h
bWUgX1N0b3JhZ2U+DQpzdHJ1Y3QgX19iYWNrdXBfc3RvcmFnZV9vcHM8X0luZGV4LF9JbmRleCxf
U3RvcmFnZT57DQogICAgc3RhdGljIHZvaWQgX19tb3ZlX2NvbnN0cnVjdF9mdW5jKF9TdG9yYWdl
ICosX1N0b3JhZ2UmKXsNCiAgICAgICAgZG8geyAodm9pZClzdGQ6OmJhZF9hbGxvYygpOyBXVEZD
cmFzaCgpOyB9IHdoaWxlICgwKTs7DQogICAgfTsNCiAgICBzdGF0aWMgdm9pZCBfX2Rlc3Ryb3lf
ZnVuYyhfU3RvcmFnZSAqKXsNCiAgICAgICAgZG8geyAodm9pZClzdGQ6OmJhZF9hbGxvYygpOyBX
VEZDcmFzaCgpOyB9IHdoaWxlICgwKTs7DQogICAgfTsNCn07DQoNCnRlbXBsYXRlPHB0cmRpZmZf
dCBfTWFza0luZGV4LHR5cGVuYW1lIF9TdG9yYWdlLHR5cGVuYW1lIF9JbmRpY2VzPg0Kc3RydWN0
IF9fYmFja3VwX3N0b3JhZ2Vfb3BfdGFibGU7DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBfTWFza0lu
ZGV4LHR5cGVuYW1lIF9TdG9yYWdlLHB0cmRpZmZfdCAuLi4gX0luZGljZXM+DQpzdHJ1Y3QgX19i
YWNrdXBfc3RvcmFnZV9vcF90YWJsZTwNCiAgICBfTWFza0luZGV4LF9TdG9yYWdlLF9faW5kZXhf
c2VxdWVuY2U8X0luZGljZXMuLi4+ID4NCnsNCiAgICB0eXBlZGVmIHZvaWQgKCpfX21vdmVfZnVu
Y190eXBlKShfU3RvcmFnZSAqIF9fZGVzdCxfU3RvcmFnZSYgX19zb3VyY2UpOw0KICAgIHR5cGVk
ZWYgdm9pZCAoKl9fZGVzdHJveV9mdW5jX3R5cGUpKF9TdG9yYWdlICogX19vYmopOw0KICAgIA0K
ICAgIHRlbXBsYXRlPHNpemVfdCBfSW5kZXg+DQogICAgc3RydWN0IF9faGVscGVyew0KICAgICAg
ICB0eXBlZGVmIF9fYmFja3VwX3N0b3JhZ2Vfb3BzPF9JbmRleCxfTWFza0luZGV4LF9TdG9yYWdl
PiBfX29wczsNCiAgICB9Ow0KDQogICAgc3RhdGljIGNvbnN0IF9fbW92ZV9mdW5jX3R5cGUgX19t
b3ZlX29wc1tzaXplb2YuLi4oX0luZGljZXMpXTsNCiAgICBzdGF0aWMgY29uc3QgX19kZXN0cm95
X2Z1bmNfdHlwZSBfX2Rlc3Ryb3lfb3BzW3NpemVvZi4uLihfSW5kaWNlcyldOw0KfTsNCg0KdGVt
cGxhdGU8cHRyZGlmZl90IF9NYXNrSW5kZXgsdHlwZW5hbWUgX1N0b3JhZ2UscHRyZGlmZl90IC4u
LiBfSW5kaWNlcz4NCmNvbnN0IHR5cGVuYW1lIF9fYmFja3VwX3N0b3JhZ2Vfb3BfdGFibGU8DQog
ICAgX01hc2tJbmRleCxfU3RvcmFnZSxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPiA+Ojpf
X21vdmVfZnVuY190eXBlDQpfX2JhY2t1cF9zdG9yYWdlX29wX3RhYmxlPA0KICAgIF9NYXNrSW5k
ZXgsX1N0b3JhZ2UsX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4gPjo6X19tb3ZlX29wc1sN
CiAgICAgICAgc2l6ZW9mLi4uKF9JbmRpY2VzKV09ew0KICAgICAgICAmX19oZWxwZXI8X0luZGlj
ZXM+OjpfX29wczo6X19tb3ZlX2NvbnN0cnVjdF9mdW5jLi4uDQogICAgfTsNCg0KdGVtcGxhdGU8
cHRyZGlmZl90IF9NYXNrSW5kZXgsdHlwZW5hbWUgX1N0b3JhZ2UscHRyZGlmZl90IC4uLiBfSW5k
aWNlcz4NCmNvbnN0IHR5cGVuYW1lIF9fYmFja3VwX3N0b3JhZ2Vfb3BfdGFibGU8DQogICAgX01h
c2tJbmRleCxfU3RvcmFnZSxfX2luZGV4X3NlcXVlbmNlPF9JbmRpY2VzLi4uPiA+OjpfX2Rlc3Ry
b3lfZnVuY190eXBlDQpfX2JhY2t1cF9zdG9yYWdlX29wX3RhYmxlPA0KICAgIF9NYXNrSW5kZXgs
X1N0b3JhZ2UsX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4gPjo6X19kZXN0cm95X29wc1sN
CiAgICBzaXplb2YuLi4oX0luZGljZXMpXT17DQogICAgICAgICZfX2hlbHBlcjxfSW5kaWNlcz46
Ol9fb3BzOjpfX2Rlc3Ryb3lfZnVuYy4uLg0KICAgIH07DQoNCnRlbXBsYXRlPHB0cmRpZmZfdCBf
SW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX2JhY2t1cF9zdG9yYWdlew0KICAg
IHR5cGVkZWYgX192YXJpYW50X2RhdGE8X1R5cGVzLi4uPiBfX3N0b3JhZ2VfdHlwZTsNCg0KICAg
IHR5cGVkZWYgX19iYWNrdXBfc3RvcmFnZV9vcF90YWJsZTwNCiAgICAgICAgX0luZGV4LF9fc3Rv
cmFnZV90eXBlLHR5cGVuYW1lIF9fdHlwZV9pbmRpY2VzPF9UeXBlcy4uLj46Ol9fdHlwZT4NCiAg
ICBfX29wX3RhYmxlX3R5cGU7DQoNCiAgICBwdHJkaWZmX3QgX19iYWNrdXBfaW5kZXg7DQogICAg
X19zdG9yYWdlX3R5cGUmIF9fbGl2ZV9zdG9yYWdlOw0KICAgIF9fc3RvcmFnZV90eXBlIF9fYmFj
a3VwOw0KDQogICAgX19iYWNrdXBfc3RvcmFnZShwdHJkaWZmX3QgX19saXZlX2luZGV4XyxfX3N0
b3JhZ2VfdHlwZSYgX19saXZlX3N0b3JhZ2VfKToNCiAgICAgICAgX19iYWNrdXBfaW5kZXgoX19s
aXZlX2luZGV4XyksX19saXZlX3N0b3JhZ2UoX19saXZlX3N0b3JhZ2VfKXsNCiAgICAgICAgaWYo
X19iYWNrdXBfaW5kZXg+PTApew0KICAgICAgICAgICAgX19vcF90YWJsZV90eXBlOjpfX21vdmVf
b3BzW19fYmFja3VwX2luZGV4XSgNCiAgICAgICAgICAgICAgICAmX19iYWNrdXAsX19saXZlX3N0
b3JhZ2UpOw0KICAgICAgICAgICAgX19vcF90YWJsZV90eXBlOjpfX2Rlc3Ryb3lfb3BzW19fYmFj
a3VwX2luZGV4XSgNCiAgICAgICAgICAgICAgICAmX19saXZlX3N0b3JhZ2UpOw0KICAgICAgICB9
DQogICAgfQ0KICAgIHZvaWQgX19kZXN0cm95KCl7DQogICAgICAgIGlmKF9fYmFja3VwX2luZGV4
Pj0wKQ0KICAgICAgICAgICAgX19vcF90YWJsZV90eXBlOjpfX2Rlc3Ryb3lfb3BzW19fYmFja3Vw
X2luZGV4XSgNCiAgICAgICAgICAgICAgICAmX19iYWNrdXApOw0KICAgICAgICBfX2JhY2t1cF9p
bmRleD0tMTsNCiAgICB9DQogICAgDQogICAgfl9fYmFja3VwX3N0b3JhZ2UoKXsNCiAgICAgICAg
aWYoX19iYWNrdXBfaW5kZXg+PTApew0KICAgICAgICAgICAgX19vcF90YWJsZV90eXBlOjpfX21v
dmVfb3BzW19fYmFja3VwX2luZGV4XSgNCiAgICAgICAgICAgICAgICAmX19saXZlX3N0b3JhZ2Us
X19iYWNrdXApOw0KICAgICAgICAgICAgX19kZXN0cm95KCk7DQogICAgICAgIH0NCiAgICB9DQp9
Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX1R5cGVzPg0Kc3RydWN0IF9fYWxsX21vdmVfY29u
c3RydWN0aWJsZTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0
Pg0Kc3RydWN0IF9fYWxsX21vdmVfY29uc3RydWN0aWJsZTxfSGVhZCxfUmVzdC4uLj4NCnsNCiAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWU9c3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8
X0hlYWQ+Ojp2YWx1ZSAmJiBfX2FsbF9tb3ZlX2NvbnN0cnVjdGlibGU8X1Jlc3QuLi4+Ojp2YWx1
ZTsNCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBfX2FsbF9tb3ZlX2NvbnN0cnVjdGlibGU8PjoN
CiAgICBzdGQ6OnRydWVfdHlwZXt9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX1R5cGVzPg0K
c3RydWN0IF9fYWxsX21vdmVfYXNzaWduYWJsZTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX0hlYWQs
dHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9fYWxsX21vdmVfYXNzaWduYWJsZTxfSGVhZCxf
UmVzdC4uLj4NCnsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWU9c3RkOjppc19tb3Zl
X2Fzc2lnbmFibGU8X0hlYWQ+Ojp2YWx1ZSAmJiBfX2FsbF9tb3ZlX2Fzc2lnbmFibGU8X1Jlc3Qu
Li4+Ojp2YWx1ZTsNCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBfX2FsbF9tb3ZlX2Fzc2lnbmFi
bGU8PjoNCiAgICBzdGQ6OnRydWVfdHlwZXt9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX1R5
cGVzPg0Kc3RydWN0IF9fYWxsX2NvcHlfYXNzaWduYWJsZTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUg
X0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9fYWxsX2NvcHlfYXNzaWduYWJsZTxf
SGVhZCxfUmVzdC4uLj4NCnsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWU9c3RkOjpp
c19jb3B5X2Fzc2lnbmFibGU8X0hlYWQ+Ojp2YWx1ZSAmJiBfX2FsbF9jb3B5X2Fzc2lnbmFibGU8
X1Jlc3QuLi4+Ojp2YWx1ZTsNCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBfX2FsbF9jb3B5X2Fz
c2lnbmFibGU8PjoNCiAgICBzdGQ6OnRydWVfdHlwZXt9Ow0KDQpuYW1lc3BhY2UgX19zd2FwX3Rl
c3RfZGV0YWlsew0KdXNpbmcgc3RkOjpzd2FwOw0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfT3RoZXI+
DQpzdHJ1Y3QgX19zd2FwX3Jlc3VsdHt9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZT4NCnN0YXRpYyBj
aGFyIF9fdGVzdCguLi4pOw0KdGVtcGxhdGUgPHR5cGVuYW1lIF9PdGhlcj4NCnN0YXRpYyBzdGQ6
OnBhaXI8Y2hhciwgc3RkOjpwYWlyPGNoYXIsIF9fc3dhcF9yZXN1bHQ8ZGVjbHR5cGUoDQogICAg
c3dhcChzdGQ6OmRlY2x2YWw8X090aGVyICY+KCksc3RkOjpkZWNsdmFsPF9PdGhlciAmPigpKSk+
Pj4NCl9fdGVzdChfT3RoZXIgKik7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBfVHlwZT4gc3Ry
dWN0IF9faXNfc3dhcHBhYmxlIHsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPQ0K
ICAgICAgICBzaXplb2YoX19zd2FwX3Rlc3RfZGV0YWlsOjpfX3Rlc3Q8X1R5cGU+KG51bGxwdHIp
KSAhPSAxOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX2Fs
bF9zd2FwcGFibGU7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9IZWFkLHR5cGVuYW1lIC4uLiBfUmVz
dD4NCnN0cnVjdCBfX2FsbF9zd2FwcGFibGU8X0hlYWQsX1Jlc3QuLi4+DQp7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHZhbHVlPV9faXNfc3dhcHBhYmxlPF9IZWFkPjo6dmFsdWUgJiYgX19h
bGxfc3dhcHBhYmxlPF9SZXN0Li4uPjo6dmFsdWU7DQp9Ow0KDQp0ZW1wbGF0ZTw+DQpzdHJ1Y3Qg
X19hbGxfc3dhcHBhYmxlPD46DQogICAgc3RkOjp0cnVlX3R5cGV7fTsNCg0KdGVtcGxhdGU8Ym9v
bCBfTW92ZUNvbnN0cnVjdGlibGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX25vZXhj
ZXB0X3ZhcmlhbnRfbW92ZV9jb25zdHJ1Y3RfaW1wbHt9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBf
SGVhZCx0eXBlbmFtZSAuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X21vdmVf
Y29uc3RydWN0X2ltcGw8dHJ1ZSxfSGVhZCxfUmVzdC4uLj57DQogICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZhbHVlPW5vZXhjZXB0KF9IZWFkKHN0ZDo6ZGVjbHZhbDxfSGVhZCYmPigpKSkgJiYg
X19ub2V4Y2VwdF92YXJpYW50X21vdmVfY29uc3RydWN0X2ltcGw8dHJ1ZSxfUmVzdC4uLj46OnZh
bHVlOw0KfTsNCg0KdGVtcGxhdGU8Pg0Kc3RydWN0IF9fbm9leGNlcHRfdmFyaWFudF9tb3ZlX2Nv
bnN0cnVjdF9pbXBsPHRydWU+ew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZT10cnVl
Ow0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX25vZXhjZXB0
X3ZhcmlhbnRfbW92ZV9jb25zdHJ1Y3Q6DQpfX25vZXhjZXB0X3ZhcmlhbnRfbW92ZV9jb25zdHJ1
Y3RfaW1wbDxfX2FsbF9tb3ZlX2NvbnN0cnVjdGlibGU8X1R5cGVzLi4uPjo6dmFsdWUsX1R5cGVz
Li4uPg0Ke307DQoNCnRlbXBsYXRlPGJvb2wgX01vdmVBc3NpZ25hYmxlLHR5cGVuYW1lIC4uLiBf
VHlwZXM+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X21vdmVfYXNzaWduX2ltcGx7fTsNCg0K
dGVtcGxhdGUgPHR5cGVuYW1lIF9IZWFkLCB0eXBlbmFtZS4uLiBfUmVzdD4NCnN0cnVjdCBfX25v
ZXhjZXB0X3ZhcmlhbnRfbW92ZV9hc3NpZ25faW1wbDx0cnVlLCBfSGVhZCwgX1Jlc3QuLi4+IHsN
CiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPQ0KICAgICAgICBzdGQ6OmlzX25vdGhy
b3dfbW92ZV9hc3NpZ25hYmxlPF9IZWFkPjo6dmFsdWUgJiYNCiAgICAgICAgc3RkOjppc19ub3Ro
cm93X21vdmVfY29uc3RydWN0aWJsZTxfSGVhZD46OnZhbHVlICYmDQogICAgICAgIF9fbm9leGNl
cHRfdmFyaWFudF9tb3ZlX2Fzc2lnbl9pbXBsPHRydWUsIF9SZXN0Li4uPjo6dmFsdWU7DQp9Ow0K
DQp0ZW1wbGF0ZTw+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X21vdmVfYXNzaWduX2ltcGw8
dHJ1ZT57DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlPXRydWU7DQp9Ow0KDQp0ZW1w
bGF0ZSA8dHlwZW5hbWUuLi4gX1R5cGVzPg0Kc3RydWN0IF9fbm9leGNlcHRfdmFyaWFudF9tb3Zl
X2Fzc2lnbg0KICAgIDogX19ub2V4Y2VwdF92YXJpYW50X21vdmVfYXNzaWduX2ltcGw8DQogICAg
ICAgICAgX19hbGxfbW92ZV9hc3NpZ25hYmxlPF9UeXBlcy4uLj46OnZhbHVlICYmDQogICAgICAg
ICAgICAgIF9fYWxsX21vdmVfY29uc3RydWN0aWJsZTxfVHlwZXMuLi4+Ojp2YWx1ZSwNCiAgICAg
ICAgICBfVHlwZXMuLi4+IHt9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX1R5cGVzPg0Kc3Ry
dWN0IF9fYWxsX2NvcHlfY29uc3RydWN0aWJsZTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX0hlYWQs
dHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9fYWxsX2NvcHlfY29uc3RydWN0aWJsZTxfSGVh
ZCxfUmVzdC4uLj4NCnsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWU9c3RkOjppc19j
b3B5X2NvbnN0cnVjdGlibGU8X0hlYWQ+Ojp2YWx1ZSAmJiBfX2FsbF9jb3B5X2NvbnN0cnVjdGli
bGU8X1Jlc3QuLi4+Ojp2YWx1ZTsNCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBfX2FsbF9jb3B5
X2NvbnN0cnVjdGlibGU8PjoNCiAgICBzdGQ6OnRydWVfdHlwZXt9Ow0KDQp0ZW1wbGF0ZTxib29s
IF9Db3B5Q29uc3RydWN0aWJsZSx0eXBlbmFtZSAuLi4gX1R5cGVzPg0Kc3RydWN0IF9fbm9leGNl
cHRfdmFyaWFudF9jb25zdF9jb3B5X2NvbnN0cnVjdF9pbXBse307DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIF9IZWFkLHR5cGVuYW1lIC4uLiBfUmVzdD4NCnN0cnVjdCBfX25vZXhjZXB0X3ZhcmlhbnRf
Y29uc3RfY29weV9jb25zdHJ1Y3RfaW1wbDx0cnVlLF9IZWFkLF9SZXN0Li4uPnsNCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgdmFsdWU9bm9leGNlcHQoX0hlYWQoc3RkOjpkZWNsdmFsPF9IZWFk
IGNvbnN0Jj4oKSkpICYmIF9fbm9leGNlcHRfdmFyaWFudF9jb25zdF9jb3B5X2NvbnN0cnVjdF9p
bXBsPHRydWUsX1Jlc3QuLi4+Ojp2YWx1ZTsNCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBfX25v
ZXhjZXB0X3ZhcmlhbnRfY29uc3RfY29weV9jb25zdHJ1Y3RfaW1wbDx0cnVlPnsNCiAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgdmFsdWU9dHJ1ZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIC4u
LiBfVHlwZXM+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X2NvbnN0X2NvcHlfY29uc3RydWN0
Og0KX19ub2V4Y2VwdF92YXJpYW50X2NvbnN0X2NvcHlfY29uc3RydWN0X2ltcGw8X19hbGxfY29w
eV9jb25zdHJ1Y3RpYmxlPF9UeXBlcy4uLj46OnZhbHVlLF9UeXBlcy4uLj4NCnt9Ow0KDQp0ZW1w
bGF0ZTxib29sIF9Db3B5Tm9uX0NvbnN0cnVjdGlibGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0
cnVjdCBfX25vZXhjZXB0X3ZhcmlhbnRfbm9uX2NvbnN0X2NvcHlfY29uc3RydWN0X2ltcGx7fTsN
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9f
bm9leGNlcHRfdmFyaWFudF9ub25fY29uc3RfY29weV9jb25zdHJ1Y3RfaW1wbDx0cnVlLF9IZWFk
LF9SZXN0Li4uPnsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWU9bm9leGNlcHQoX0hl
YWQoc3RkOjpkZWNsdmFsPF9IZWFkJj4oKSkpICYmIF9fbm9leGNlcHRfdmFyaWFudF9ub25fY29u
c3RfY29weV9jb25zdHJ1Y3RfaW1wbDx0cnVlLF9SZXN0Li4uPjo6dmFsdWU7DQp9Ow0KDQp0ZW1w
bGF0ZTw+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X25vbl9jb25zdF9jb3B5X2NvbnN0cnVj
dF9pbXBsPHRydWU+ew0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZT10cnVlOw0KfTsN
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX25vZXhjZXB0X3Zhcmlh
bnRfbm9uX2NvbnN0X2NvcHlfY29uc3RydWN0Og0KX19ub2V4Y2VwdF92YXJpYW50X25vbl9jb25z
dF9jb3B5X2NvbnN0cnVjdF9pbXBsPF9fYWxsX2NvcHlfY29uc3RydWN0aWJsZTxfVHlwZXMuLi4+
Ojp2YWx1ZSxfVHlwZXMuLi4+DQp7fTsNCg0KdGVtcGxhdGU8Ym9vbCBfU3dhcHBhYmxlLHR5cGVu
YW1lIC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X3N3YXBfaW1wbHt9Ow0K
DQp0ZW1wbGF0ZSA8dHlwZW5hbWUgX0hlYWQsIHR5cGVuYW1lLi4uIF9SZXN0Pg0Kc3RydWN0IF9f
bm9leGNlcHRfdmFyaWFudF9zd2FwX2ltcGw8dHJ1ZSwgX0hlYWQsIF9SZXN0Li4uPiB7DQogICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0NCiAgICAgICAgbm9leGNlcHQoc3dhcChzdGQ6
OmRlY2x2YWw8X0hlYWQmPigpLHN0ZDo6ZGVjbHZhbDxfSGVhZCY+KCkpKSAmJg0KICAgICAgICBf
X25vZXhjZXB0X3ZhcmlhbnRfc3dhcF9pbXBsPHRydWUsIF9SZXN0Li4uPjo6dmFsdWU7DQp9Ow0K
DQp0ZW1wbGF0ZTw+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X3N3YXBfaW1wbDx0cnVlPnsN
CiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWU9dHJ1ZTsNCn07DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX19ub2V4Y2VwdF92YXJpYW50X3N3YXA6DQpfX25v
ZXhjZXB0X3ZhcmlhbnRfc3dhcF9pbXBsPF9fYWxsX3N3YXBwYWJsZTxfVHlwZXMuLi4+Ojp2YWx1
ZSxfVHlwZXMuLi4+DQp7fTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNsYXNz
IFZhcmlhbnQ6DQogICAgICAgIHByaXZhdGUgX192YXJpYW50X2Jhc2U8DQogICAgVmFyaWFudDxf
VHlwZXMuLi4+LF9fYWxsX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8X1R5cGVzLi4uPjo6X192YWx1
ZT4NCnsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6
ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJu
IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCog
cCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90
TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0g
dXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hl
cmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIHR5cGVkZWYgX192
YXJpYW50X2Jhc2U8VmFyaWFudDxfVHlwZXMuLi4+LF9fYWxsX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8X1R5cGVzLi4uPjo6X192YWx1ZT4gX19iYXNlX3R5cGU7DQogICAgZnJpZW5kIF9fYmFzZV90
eXBlOw0KICAgIGZyaWVuZCBzdHJ1Y3QgX19jb3B5X2NvbnN0cnVjdF9vcF90YWJsZTxWYXJpYW50
PjsNCiAgICBmcmllbmQgc3RydWN0IF9fY29weV9hc3NpZ25fb3BfdGFibGU8VmFyaWFudD47DQog
ICAgZnJpZW5kIHN0cnVjdCBfX21vdmVfY29uc3RydWN0X29wX3RhYmxlPFZhcmlhbnQ+Ow0KICAg
IGZyaWVuZCBzdHJ1Y3QgX19tb3ZlX2Fzc2lnbl9vcF90YWJsZTxWYXJpYW50PjsNCiAgICBmcmll
bmQgc3RydWN0IF9fZGVzdHJveV9vcF90YWJsZTxWYXJpYW50PjsNCiAgICANCiAgICB0ZW1wbGF0
ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXMyPg0KICAgIGZyaWVuZCBzdHJ1
Y3QgX192YXJpYW50X2FjY2Vzc29yOw0KDQogICAgZnJpZW5kIHN0cnVjdCBfX3JlcGxhY2VfY29u
c3RydWN0X2hlbHBlcjsNCg0KICAgIHR5cGVkZWYgX192YXJpYW50X2RhdGE8X1R5cGVzLi4uPiBf
X3N0b3JhZ2VfdHlwZTsNCiAgICBfX3N0b3JhZ2VfdHlwZSBfX3N0b3JhZ2U7DQogICAgdHlwZW5h
bWUgX19kaXNjcmltaW5hdG9yX3R5cGU8c2l6ZW9mIC4uLiAoX1R5cGVzKT46Ol9fdHlwZSBfX2lu
ZGV4Ow0KDQogICAgdGVtcGxhdGU8c2l6ZV90IF9JbmRleCx0eXBlbmFtZSAuLi4gX0FyZ3M+DQog
ICAgc2l6ZV90IF9fZW1wbGFjZV9jb25zdHJ1Y3QoX0FyZ3MmJiAuLi4gX19hcmdzKXsNCiAgICAg
ICAgbmV3KCZfX3N0b3JhZ2UpIF9fc3RvcmFnZV90eXBlKA0KICAgICAgICAgICAgaW5fcGxhY2U8
X0luZGV4PixzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOw0KICAgICAgICByZXR1cm4g
IF9JbmRleDsNCiAgICB9DQogICAgDQogICAgdm9pZCBfX2Rlc3Ryb3lfc2VsZigpew0KICAgICAg
ICBpZih2YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkpDQogICAgICAgICAgICByZXR1cm47DQogICAg
ICAgIF9fZGVzdHJveV9vcF90YWJsZTxWYXJpYW50Pjo6X19hcHBseVtpbmRleCgpXSh0aGlzKTsN
CiAgICAgICAgX19pbmRleD0tMTsNCiAgICB9DQogICAgDQogICAgcHRyZGlmZl90IF9fbW92ZV9j
b25zdHJ1Y3QoVmFyaWFudCYgX19vdGhlcil7DQogICAgICAgIHB0cmRpZmZfdCBjb25zdCBfX290
aGVyX2luZGV4PV9fb3RoZXIuaW5kZXgoKTsNCiAgICAgICAgaWYoX19vdGhlcl9pbmRleD09LTEp
DQogICAgICAgICAgICByZXR1cm4gLTE7DQogICAgICAgIF9fbW92ZV9jb25zdHJ1Y3Rfb3BfdGFi
bGU8VmFyaWFudD46Ol9fYXBwbHlbX19vdGhlcl9pbmRleF0odGhpcyxfX290aGVyKTsNCiAgICAg
ICAgX19vdGhlci5fX2Rlc3Ryb3lfc2VsZigpOw0KICAgICAgICByZXR1cm4gX19vdGhlcl9pbmRl
eDsNCiAgICB9DQoNCiAgICBwdHJkaWZmX3QgX19jb3B5X2NvbnN0cnVjdChWYXJpYW50IGNvbnN0
JiBfX290aGVyKXsNCiAgICAgICAgcHRyZGlmZl90IGNvbnN0IF9fb3RoZXJfaW5kZXg9X19vdGhl
ci5pbmRleCgpOw0KICAgICAgICBpZihfX290aGVyX2luZGV4PT0tMSkNCiAgICAgICAgICAgIHJl
dHVybiAtMTsNCiAgICAgICAgX19jb3B5X2NvbnN0cnVjdF9vcF90YWJsZTxWYXJpYW50Pjo6X19h
cHBseVtfX290aGVyX2luZGV4XSh0aGlzLF9fb3RoZXIpOw0KICAgICAgICByZXR1cm4gX19vdGhl
cl9pbmRleDsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxzaXplX3QgX0luZGV4LHR5cGVuYW1lIC4u
LiBfQXJncz4NCiAgICB2b2lkIF9fcmVwbGFjZV9jb25zdHJ1Y3QoX0FyZ3MmJiAuLi4gX19hcmdz
KXsNCiAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVz
Li4uPjo6X190eXBlIF9fdGhpc190eXBlOw0KICAgICAgICBfX3JlcGxhY2VfY29uc3RydWN0X2hl
bHBlcjo6X19oZWxwZXI8DQogICAgICAgICAgICBfSW5kZXgsDQogICAgICAgICAgICBfX3N0b3Jh
Z2Vfbm90aHJvd19jb25zdHJ1Y3RpYmxlPF9fdGhpc190eXBlLF9BcmdzLi4uPjo6X192YWx1ZSB8
fA0KICAgICAgICAgICAgKHNpemVvZi4uLihfVHlwZXMpPT0xKSwNCiAgICAgICAgICAgIF9fc3Rv
cmFnZV9ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxfX3RoaXNfdHlwZT46Ol9fdmFsdWUsDQog
ICAgICAgICAgICBfX290aGVyX3N0b3JhZ2Vfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8DQog
ICAgICAgICAgICAgICAgX0luZGV4LF9UeXBlcy4uLj46Ol9fdmFsdWUNCiAgICAgICAgICAgID46
Ol9fdHJhbXBvbGluZSgqdGhpcyxzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPHNpemVfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9BcmdzPg0KICAg
IHZvaWQgX190d29fc3RhZ2VfcmVwbGFjZShfQXJncyYmIC4uLiBfX2FyZ3Mpew0KICAgICAgICB0
eXBlZGVmIHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGUg
X190eXBlOw0KICAgICAgICBfX3ZhcmlhbnRfZGF0YTxfX3R5cGU+IF9fbG9jYWwoDQogICAgICAg
ICAgICBpbl9wbGFjZTwwPixzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOw0KICAgICAg
ICBfX2Rlc3Ryb3lfc2VsZigpOw0KICAgICAgICBfX2VtcGxhY2VfY29uc3RydWN0PF9JbmRleD4o
DQogICAgICAgICAgICBzdGQ6Om1vdmUoX19sb2NhbC5fX2dldChpbl9wbGFjZTwwPikpKTsNCiAg
ICAgICAgX19pbmRleD1fSW5kZXg7DQogICAgICAgIF9fbG9jYWwuX19kZXN0cm95KGluX3BsYWNl
PDA+KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxzaXplX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBf
QXJncz4NCiAgICB2b2lkIF9fbG9jYWxfYmFja3VwX3JlcGxhY2UoX0FyZ3MmJiAuLi4gX19hcmdz
KXsNCiAgICAgICAgX19iYWNrdXBfc3RvcmFnZTxfSW5kZXgsX1R5cGVzLi4uPiBfX2JhY2t1cChf
X2luZGV4LF9fc3RvcmFnZSk7DQogICAgICAgIF9fZW1wbGFjZV9jb25zdHJ1Y3Q8X0luZGV4Pihz
dGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOw0KICAgICAgICBfX2luZGV4PV9JbmRleDsN
CiAgICAgICAgX19iYWNrdXAuX19kZXN0cm95KCk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRl
PHNpemVfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9BcmdzPg0KICAgIHZvaWQgX19kaXJlY3RfcmVw
bGFjZShfQXJncyYmIC4uLiBfX2FyZ3MpIHsNCiAgICAgICAgX19kZXN0cm95X3NlbGYoKTsNCiAg
ICAgICAgX19lbXBsYWNlX2NvbnN0cnVjdDxfSW5kZXg+KHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19h
cmdzKS4uLik7DQogICAgICAgIF9faW5kZXg9X0luZGV4Ow0KICAgIH0NCg0KICAgIHN0cnVjdCBf
X3ByaXZhdGVfdHlwZXt9Ow0KDQpwdWJsaWM6DQogICAgY29uc3RleHByIFZhcmlhbnQoKQ0KICAg
ICAgICA6DQogICAgICAgIF9fc3RvcmFnZShpbl9wbGFjZTwwPiksDQogICAgICAgIF9faW5kZXgo
MCkNCiAgICB7fQ0KDQogICAgY29uc3RleHByIFZhcmlhbnQodHlwZW5hbWUgc3RkOjpjb25kaXRp
b25hbDxfX2FsbF9tb3ZlX2NvbnN0cnVjdGlibGU8X1R5cGVzLi4uPjo6dmFsdWUsVmFyaWFudCxf
X3ByaXZhdGVfdHlwZT46OnR5cGUmJiBfX290aGVyKQ0KICAgIDoNCiAgICAgICAgX19pbmRleChf
X21vdmVfY29uc3RydWN0KF9fb3RoZXIpKQ0KICAgIHt9DQoNCiAgICBjb25zdGV4cHIgVmFyaWFu
dCh0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPCFfX2FsbF9tb3ZlX2NvbnN0cnVjdGlibGU8X1R5
cGVzLi4uPjo6dmFsdWUsVmFyaWFudCxfX3ByaXZhdGVfdHlwZT46OnR5cGUmJiBfX290aGVyKT1k
ZWxldGU7DQogICAgDQogICAgY29uc3RleHByIFZhcmlhbnQodHlwZW5hbWUgc3RkOjpjb25kaXRp
b25hbDxfX2FsbF9jb3B5X2NvbnN0cnVjdGlibGU8X1R5cGVzLi4uPjo6dmFsdWUsVmFyaWFudCxf
X3ByaXZhdGVfdHlwZT46OnR5cGUmIF9fb3RoZXIpDQogICAgOg0KICAgICAgICBfX2luZGV4KF9f
Y29weV9jb25zdHJ1Y3QoX19vdGhlcikpDQogICAge30NCg0KICAgIGNvbnN0ZXhwciBWYXJpYW50
KHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8IV9fYWxsX2NvcHlfY29uc3RydWN0aWJsZTxfVHlw
ZXMuLi4+Ojp2YWx1ZSxWYXJpYW50LF9fcHJpdmF0ZV90eXBlPjo6dHlwZSYgX19vdGhlcik9ZGVs
ZXRlOw0KDQogICAgY29uc3RleHByIFZhcmlhbnQodHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxf
X2FsbF9jb3B5X2NvbnN0cnVjdGlibGU8X1R5cGVzLi4uPjo6dmFsdWUsVmFyaWFudCxfX3ByaXZh
dGVfdHlwZT46OnR5cGUgY29uc3QmIF9fb3RoZXIpDQogICAgOg0KICAgICAgICBfX2luZGV4KF9f
Y29weV9jb25zdHJ1Y3QoX19vdGhlcikpDQogICAge30NCg0KICAgIGNvbnN0ZXhwciBWYXJpYW50
KHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8IV9fYWxsX2NvcHlfY29uc3RydWN0aWJsZTxfVHlw
ZXMuLi4+Ojp2YWx1ZSxWYXJpYW50LF9fcHJpdmF0ZV90eXBlPjo6dHlwZSBjb25zdCYgX19vdGhl
cik9ZGVsZXRlOw0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4u
LiBfQXJncz4NCiAgICBleHBsaWNpdCBjb25zdGV4cHIgVmFyaWFudChpbl9wbGFjZV90eXBlX3Q8
X1R5cGU+LF9BcmdzJiYgLi4uIF9fYXJncyk6DQogICAgICAgIF9fc3RvcmFnZSgNCiAgICAgICAg
ICAgIGluX3BsYWNlPF9fdHlwZV9pbmRleDxfVHlwZSxfVHlwZXMuLi4+OjpfX3ZhbHVlPiwNCiAg
ICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLiksDQogICAgICAgIF9faW5k
ZXgoX190eXBlX2luZGV4PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWUpDQogICAgew0KICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29uc3RydWN0aWJsZTxfVHlwZSxfQXJncy4uLj46OnZh
bHVlLCJUeXBlIG11c3QgYmUgY29uc3RydWN0aWJsZSBmcm9tIGFyZ3MiKTsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZTxzaXplX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfQXJncz4NCiAgICBleHBsaWNp
dCBjb25zdGV4cHIgVmFyaWFudChpbl9wbGFjZV9pbmRleF90PF9JbmRleD4sX0FyZ3MmJiAuLi4g
X19hcmdzKToNCiAgICAgICAgX19zdG9yYWdlKGluX3BsYWNlPF9JbmRleD4sc3RkOjpmb3J3YXJk
PF9BcmdzPihfX2FyZ3MpLi4uKSwNCiAgICAgICAgX19pbmRleChfSW5kZXgpDQogICAgew0KICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29uc3RydWN0aWJsZTx0eXBlbmFtZSBfX2luZGV4
ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlLF9BcmdzLi4uPjo6dmFsdWUsIlR5cGUg
bXVzdCBiZSBjb25zdHJ1Y3RpYmxlIGZyb20gYXJncyIpOw0KICAgIH0NCiAgICANCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHlwZT4NCiAgICBjb25zdGV4cHIgVmFyaWFudChfVHlwZSYmIF9feCk6
DQogICAgICAgIF9fc3RvcmFnZSgNCiAgICAgICAgICAgIGluX3BsYWNlPA0KICAgICAgICAgICAg
X190eXBlX2luZGV4X3RvX2NvbnN0cnVjdDxfVHlwZSxfVHlwZXMuLi4+OjpfX3ZhbHVlPiwNCiAg
ICAgICAgICAgIHN0ZDo6Zm9yd2FyZDxfVHlwZT4oX194KSksDQogICAgICAgIF9faW5kZXgoX190
eXBlX2luZGV4X3RvX2NvbnN0cnVjdDxfVHlwZSxfVHlwZXMuLi4+OjpfX3ZhbHVlKQ0KICAgIHt9
DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSwNCiAgICAgICAgICAgICB0eXBlbmFtZSBf
RW5hYmxlPQ0KICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPA0KICAgICAgICAg
ICAgICAgICAoX19jb25zdHJ1Y3RpYmxlX21hdGNoZXM8c3RkOjppbml0aWFsaXplcl9saXN0PF9U
eXBlPixfVHlwZXMuLi4+OjpfX3R5cGU6Ol9fbGVuZ3RoPjApDQogICAgICAgICAgICAgPjo6dHlw
ZT4NCiAgICBjb25zdGV4cHIgVmFyaWFudChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1R5cGU+IF9f
eCk6DQogICAgICAgIF9fc3RvcmFnZSgNCiAgICAgICAgICAgIGluX3BsYWNlPA0KICAgICAgICAg
ICAgX190eXBlX2luZGV4X3RvX2NvbnN0cnVjdDxzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1R5cGU+
LF9UeXBlcy4uLj46Ol9fdmFsdWU+LA0KICAgICAgICAgICAgX194KSwNCiAgICAgICAgX19pbmRl
eChfX3R5cGVfaW5kZXhfdG9fY29uc3RydWN0PHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxfVHlwZT4s
X1R5cGVzLi4uPjo6X192YWx1ZSkNCiAgICB7fQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IF9UeXBlPg0KICAgIFZhcmlhbnQmIG9wZXJhdG9yPShfVHlwZSYmIF9feCl7DQogICAgICAgIGNv
bnN0ZXhwciBzaXplX3QgX0luZGV4PQ0KICAgICAgICAgICAgX190eXBlX2luZGV4X3RvX2NvbnN0
cnVjdDxfVHlwZSxfVHlwZXMuLi4+OjpfX3ZhbHVlOw0KICAgICAgICBpZihfSW5kZXg9PV9faW5k
ZXgpew0KICAgICAgICAgICAgZ2V0PF9JbmRleD4oKnRoaXMpPXN0ZDo6Zm9yd2FyZDxfVHlwZT4o
X194KTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlew0KICAgICAgICAgICAgX19yZXBsYWNlX2Nv
bnN0cnVjdDxfSW5kZXg+KHN0ZDo6Zm9yd2FyZDxfVHlwZT4oX194KSk7DQogICAgICAgIH0NCiAg
ICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCg0KICAgIFZhcmlhbnQgJm9wZXJhdG9yPSgNCiAg
ICAgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwNCiAgICAgICAgICAgICEoX19hbGxfY29w
eV9jb25zdHJ1Y3RpYmxlPF9UeXBlcy4uLj46OnZhbHVlICYmDQogICAgICAgICAgICAgIF9fYWxs
X21vdmVfY29uc3RydWN0aWJsZTxfVHlwZXMuLi4+Ojp2YWx1ZSAmJg0KICAgICAgICAgICAgICBf
X2FsbF9jb3B5X2Fzc2lnbmFibGU8X1R5cGVzLi4uPjo6dmFsdWUpLA0KICAgICAgICAgICAgVmFy
aWFudCwgX19wcml2YXRlX3R5cGU+Ojp0eXBlIGNvbnN0ICZfX290aGVyKSA9IGRlbGV0ZTsNCg0K
ICAgIFZhcmlhbnQgJm9wZXJhdG9yPSgNCiAgICAgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25h
bDwNCiAgICAgICAgICAgIF9fYWxsX2NvcHlfY29uc3RydWN0aWJsZTxfVHlwZXMuLi4+Ojp2YWx1
ZSAmJg0KICAgICAgICAgICAgICAgIF9fYWxsX21vdmVfY29uc3RydWN0aWJsZTxfVHlwZXMuLi4+
Ojp2YWx1ZSAmJg0KICAgICAgICAgICAgICAgIF9fYWxsX2NvcHlfYXNzaWduYWJsZTxfVHlwZXMu
Li4+Ojp2YWx1ZSwNCiAgICAgICAgICAgIFZhcmlhbnQsIF9fcHJpdmF0ZV90eXBlPjo6dHlwZSBj
b25zdCAmX19vdGhlcikgew0KICAgICAgICBpZiAoX19vdGhlci52YWx1ZWxlc3NfYnlfZXhjZXB0
aW9uKCkpIHsNCiAgICAgICAgICAgIF9fZGVzdHJveV9zZWxmKCk7DQogICAgICAgIH0NCiAgICAg
ICAgZWxzZSBpZihfX290aGVyLmluZGV4KCk9PWluZGV4KCkpew0KICAgICAgICAgICAgX19jb3B5
X2Fzc2lnbl9vcF90YWJsZTxWYXJpYW50Pjo6X19hcHBseVtpbmRleCgpXSh0aGlzLF9fb3RoZXIp
Ow0KICAgICAgICB9DQogICAgICAgIGVsc2V7DQogICAgICAgICAgICBfX3JlcGxhY2VfY29uc3Ry
dWN0X2hlbHBlcjo6X19vcF90YWJsZTxWYXJpYW50Pjo6X19jb3B5X2Fzc2lnblsNCiAgICAgICAg
ICAgICAgICBfX290aGVyLmluZGV4KCldKHRoaXMsX19vdGhlcik7DQogICAgICAgIH0NCiAgICAg
ICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCiAgICBWYXJpYW50ICZvcGVyYXRvcj0oDQogICAgICAg
IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8DQogICAgICAgICAgICAhKF9fYWxsX2NvcHlfY29u
c3RydWN0aWJsZTxfVHlwZXMuLi4+Ojp2YWx1ZSAmJg0KICAgICAgICAgICAgICBfX2FsbF9tb3Zl
X2NvbnN0cnVjdGlibGU8X1R5cGVzLi4uPjo6dmFsdWUgJiYNCiAgICAgICAgICAgICAgX19hbGxf
Y29weV9hc3NpZ25hYmxlPF9UeXBlcy4uLj46OnZhbHVlKSwNCiAgICAgICAgICAgIFZhcmlhbnQs
IF9fcHJpdmF0ZV90eXBlPjo6dHlwZSAmX19vdGhlcikgPSBkZWxldGU7DQoNCiAgICBWYXJpYW50
ICZvcGVyYXRvcj0oDQogICAgICAgIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8DQogICAgICAg
ICAgICBfX2FsbF9jb3B5X2NvbnN0cnVjdGlibGU8X1R5cGVzLi4uPjo6dmFsdWUgJiYNCiAgICAg
ICAgICAgICAgICBfX2FsbF9tb3ZlX2NvbnN0cnVjdGlibGU8X1R5cGVzLi4uPjo6dmFsdWUgJiYN
CiAgICAgICAgICAgICAgICBfX2FsbF9jb3B5X2Fzc2lnbmFibGU8X1R5cGVzLi4uPjo6dmFsdWUs
DQogICAgICAgICAgICBWYXJpYW50LCBfX3ByaXZhdGVfdHlwZT46OnR5cGUgJl9fb3RoZXIpIHsN
CiAgICAgICAgaWYoX19vdGhlci52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkpew0KICAgICAgICAg
ICAgX19kZXN0cm95X3NlbGYoKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmKF9fb3RoZXIu
aW5kZXgoKT09aW5kZXgoKSl7DQogICAgICAgICAgICBfX2NvcHlfYXNzaWduX29wX3RhYmxlPFZh
cmlhbnQ+OjpfX2FwcGx5W2luZGV4KCldKHRoaXMsX19vdGhlcik7DQogICAgICAgIH0NCiAgICAg
ICAgZWxzZXsNCiAgICAgICAgICAgIF9fcmVwbGFjZV9jb25zdHJ1Y3RfaGVscGVyOjpfX29wX3Rh
YmxlPFZhcmlhbnQ+OjpfX2NvcHlfYXNzaWduWw0KICAgICAgICAgICAgICAgIF9fb3RoZXIuaW5k
ZXgoKV0odGhpcyxfX290aGVyKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gKnRoaXM7DQog
ICAgfQ0KICAgIFZhcmlhbnQgJm9wZXJhdG9yPSgNCiAgICAgICAgdHlwZW5hbWUgc3RkOjpjb25k
aXRpb25hbDwNCiAgICAgICAgICAgICEoX19hbGxfbW92ZV9jb25zdHJ1Y3RpYmxlPF9UeXBlcy4u
Lj46OnZhbHVlICYmDQogICAgICAgICAgICAgIF9fYWxsX21vdmVfYXNzaWduYWJsZTxfVHlwZXMu
Li4+Ojp2YWx1ZSksDQogICAgICAgICAgICBWYXJpYW50LCBfX3ByaXZhdGVfdHlwZT46OnR5cGUg
JiZfX290aGVyKSA9IGRlbGV0ZTsNCg0KICAgIFZhcmlhbnQgJm9wZXJhdG9yPSgNCiAgICAgICAg
dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxfX2FsbF9tb3ZlX2NvbnN0cnVjdGlibGU8X1R5cGVz
Li4uPjo6dmFsdWUgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19h
bGxfbW92ZV9hc3NpZ25hYmxlPF9UeXBlcy4uLj46OnZhbHVlLA0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhcmlhbnQsIF9fcHJpdmF0ZV90eXBlPjo6dHlwZSAmJg0KICAgICAg
ICAgICAgX19vdGhlcikgIHsNCiAgICAgICAgaWYgKF9fb3RoZXIudmFsdWVsZXNzX2J5X2V4Y2Vw
dGlvbigpKSB7DQogICAgICAgICAgICBfX2Rlc3Ryb3lfc2VsZigpOw0KICAgICAgICB9DQogICAg
ICAgIGVsc2UgaWYoX19vdGhlci5pbmRleCgpPT1pbmRleCgpKXsNCiAgICAgICAgICAgIF9fbW92
ZV9hc3NpZ25fb3BfdGFibGU8VmFyaWFudD46Ol9fYXBwbHlbaW5kZXgoKV0odGhpcyxfX290aGVy
KTsNCiAgICAgICAgICAgIF9fb3RoZXIuX19kZXN0cm95X3NlbGYoKTsNCiAgICAgICAgfQ0KICAg
ICAgICBlbHNlew0KICAgICAgICAgICAgX19yZXBsYWNlX2NvbnN0cnVjdF9oZWxwZXI6Ol9fb3Bf
dGFibGU8VmFyaWFudD46Ol9fbW92ZV9hc3NpZ25bDQogICAgICAgICAgICAgICAgX19vdGhlci5p
bmRleCgpXSh0aGlzLF9fb3RoZXIpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAqdGhpczsN
CiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX0FyZ3M+
DQogICAgdm9pZCBlbXBsYWNlKF9BcmdzJiYgLi4uIF9fYXJncyl7DQogICAgICAgIF9fZGlyZWN0
X3JlcGxhY2U8X190eXBlX2luZGV4PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWU+KA0KICAgICAg
ICAgICAgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsNCiAgICB9DQogICAgDQogICAg
dGVtcGxhdGU8c2l6ZV90IF9JbmRleCx0eXBlbmFtZSAuLi4gX0FyZ3M+DQogICAgdm9pZCBlbXBs
YWNlKF9BcmdzJiYgLi4uIF9fYXJncyl7DQogICAgICAgIF9fZGlyZWN0X3JlcGxhY2U8X0luZGV4
PihzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOw0KICAgIH0NCiAgICANCiAgICBjb25z
dGV4cHIgYm9vbCB2YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkgY29uc3Qgew0KICAgICAgICByZXR1
cm4gX19pbmRleD09LTE7DQogICAgfQ0KICAgIGNvbnN0ZXhwciBwdHJkaWZmX3QgaW5kZXgoKSBj
b25zdCB7DQogICAgICAgIHJldHVybiBfX2luZGV4Ow0KICAgIH0NCg0KICAgIHZvaWQgc3dhcCgN
CiAgICAgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwNCiAgICAgICAgICAgIF9fYWxsX3N3
YXBwYWJsZTxfVHlwZXMuLi4+Ojp2YWx1ZSAmJg0KICAgICAgICAgICAgICAgIF9fYWxsX21vdmVf
Y29uc3RydWN0aWJsZTxfVHlwZXMuLi4+Ojp2YWx1ZSwNCiAgICAgICAgICAgIFZhcmlhbnQsIF9f
cHJpdmF0ZV90eXBlPjo6dHlwZQ0KICAgICAgICAgICAgJl9fb3RoZXIpICB7DQogICAgICAgIGlm
IChfX290aGVyLmluZGV4KCkgPT0gaW5kZXgoKSkgew0KICAgICAgICAgICAgaWYoIXZhbHVlbGVz
c19ieV9leGNlcHRpb24oKSkNCiAgICAgICAgICAgICAgICBfX3N3YXBfb3BfdGFibGU8VmFyaWFu
dD46Ol9fYXBwbHlbaW5kZXgoKV0oKnRoaXMsX19vdGhlcik7DQogICAgICAgIH0NCiAgICAgICAg
ZWxzZXsNCiAgICAgICAgICAgIFZhcmlhbnQgX190ZW1wKHN0ZDo6bW92ZShfX290aGVyKSk7DQog
ICAgICAgICAgICBfX290aGVyLl9faW5kZXg9X19vdGhlci5fX21vdmVfY29uc3RydWN0KCp0aGlz
KTsNCiAgICAgICAgICAgIF9faW5kZXg9X19tb3ZlX2NvbnN0cnVjdChfX3RlbXApOw0KICAgICAg
ICB9DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8Pg0KY2xhc3MgVmFyaWFudDw+ew0KcHVibGljOg0K
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3
ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9y
Y2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgVmFyaWFudCgpPWRlbGV0ZTsN
CiAgICANCiAgICBjb25zdGV4cHIgYm9vbCB2YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkgY29uc3Qg
ew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgY29uc3RleHByIHB0cmRpZmZfdCBp
bmRleCgpIGNvbnN0IHsNCiAgICAgICAgcmV0dXJuIC0xOw0KICAgIH0NCg0KICAgIHZvaWQgc3dh
cChWYXJpYW50Jil7fQ0KfTsNCg0KdGVtcGxhdGUgPHR5cGVuYW1lLi4uIF9UeXBlcz4NCnR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPF9fYWxsX3N3YXBwYWJsZTxfVHlwZXMuLi4+Ojp2YWx1ZSAmJg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYWxsX21vdmVfY29uc3RydWN0aWJsZTxfVHlw
ZXMuLi4+Ojp2YWx1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQ+Ojp0eXBlDQpzd2Fw
KFZhcmlhbnQ8X1R5cGVzLi4uPiAmX19saHMsIFZhcmlhbnQ8X1R5cGVzLi4uPiAmX19yaHMpICB7
DQojbGluZSAxNzQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9WYXJpYW50LmgiDQogICAgX19saHMuc3dhcChfX3Jocyk7DQp9DQoNCnRl
bXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBfX3Zh
cmlhbnRfYWNjZXNzb3J7DQogICAgdHlwZWRlZiB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5k
ZXgsX1R5cGVzLi4uPjo6X190eXBlIF9fdHlwZTsNCiAgICBzdGF0aWMgY29uc3RleHByIF9fdHlw
ZSYgZ2V0KFZhcmlhbnQ8X1R5cGVzLi4uPiYgX192KXsNCiAgICAgICAgcmV0dXJuIF9fdi5fX3N0
b3JhZ2UuX19nZXQoaW5fcGxhY2U8X0luZGV4Pik7DQogICAgfQ0KICAgIHN0YXRpYyBjb25zdGV4
cHIgX190eXBlIGNvbnN0JiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0JiBfX3Ypew0KICAg
ICAgICByZXR1cm4gX192Ll9fc3RvcmFnZS5fX2dldChpbl9wbGFjZTxfSW5kZXg+KTsNCiAgICB9
DQogICAgc3RhdGljIGNvbnN0ZXhwciBfX3R5cGUmJiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+JiYg
X192KXsNCiAgICAgICAgcmV0dXJuIF9fdi5fX3N0b3JhZ2UuX19nZXRfcnJlZihpbl9wbGFjZTxf
SW5kZXg+KTsNCiAgICB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBfX3R5cGUmJiBnZXQo
VmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0JiYgX192KXsNCiAgICAgICAgcmV0dXJuIF9fdi5fX3N0
b3JhZ2UuX19nZXRfcnJlZihpbl9wbGFjZTxfSW5kZXg+KTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPg0KY29uc3RleHByIF9UeXBlJiBn
ZXQoVmFyaWFudDxfVHlwZXMuLi4+JiBfX3Ypew0KICAgIHJldHVybiBnZXQ8X190eXBlX2luZGV4
PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWU+KF9fdik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgX1R5cGUmJiBnZXQoVmFyaWFu
dDxfVHlwZXMuLi4+JiYgX192KXsNCiAgICByZXR1cm4gZ2V0PF9fdHlwZV9pbmRleDxfVHlwZSxf
VHlwZXMuLi4+OjpfX3ZhbHVlPihzdGQ6Om1vdmUoX192KSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgX1R5cGUgY29uc3QmIGdl
dChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmIF9fdil7DQogICAgcmV0dXJuIGdldDxfX3R5cGVf
aW5kZXg8X1R5cGUsX1R5cGVzLi4uPjo6X192YWx1ZT4oX192KTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNvbnN0ZXhwciBjb25zdCBfVHlwZSYm
IGdldChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmJiBfX3Ypew0KICAgIHJldHVybiBnZXQ8X190
eXBlX2luZGV4PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWU+KHN0ZDo6bW92ZShfX3YpKTsNCn0N
Cg0KDQp0ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25z
dGV4cHIgdHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LF9UeXBlcy4uLj46Ol9fdHlwZSBj
b25zdCYgZ2V0KFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX192KXsNCiAgICByZXR1cm4gKigN
CiAgICAgICAgKF9JbmRleCE9X192LmluZGV4KCkpDQogICAgICAgICAgICA/IHN0ZDo6YWRkcmVz
c29mKF9fdGhyb3dfYmFkX3ZhcmlhbnRfYWNjZXNzPHR5cGVuYW1lIF9faW5kZXhlZF90eXBlPF9J
bmRleCxfVHlwZXMuLi4+OjpfX3R5cGUgY29uc3QmPigiQmFkIFZhcmlhbnQgaW5kZXggaW4gZ2V0
IikpDQogICAgICAgICAgICA6IHN0ZDo6YWRkcmVzc29mKF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5k
ZXgsX1R5cGVzLi4uPjo6Z2V0KF9fdikpDQogICAgKTsNCn0NCg0KdGVtcGxhdGU8cHRyZGlmZl90
IF9JbmRleCx0eXBlbmFtZSAuLi4gX1R5cGVzPg0KY29uc3RleHByIHR5cGVuYW1lIF9faW5kZXhl
ZF90eXBlPF9JbmRleCxfVHlwZXMuLi4+OjpfX3R5cGUmIGdldChWYXJpYW50PF9UeXBlcy4uLj4m
IF9fdil7DQogICAgcmV0dXJuICooDQogICAgICAgIChfSW5kZXghPV9fdi5pbmRleCgpKQ0KICAg
ICAgICAgICAgPyBzdGQ6OmFkZHJlc3NvZihfX3Rocm93X2JhZF92YXJpYW50X2FjY2Vzczx0eXBl
bmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlJj4oIkJhZCBWYXJp
YW50IGluZGV4IGluIGdldCIpKQ0KICAgICAgICAgICAgOiBzdGQ6OmFkZHJlc3NvZihfX3Zhcmlh
bnRfYWNjZXNzb3I8X0luZGV4LF9UeXBlcy4uLj46OmdldChfX3YpKQ0KICAgICk7DQp9DQoNCnRl
bXBsYXRlPHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNvbnN0ZXhwciB0
eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlJiYgZ2V0KFZh
cmlhbnQ8X1R5cGVzLi4uPiYmIF9fdil7DQogICAgcmV0dXJuIF9fdmFyaWFudF9hY2Nlc3Nvcjxf
SW5kZXgsX1R5cGVzLi4uPjo6Z2V0KA0KICAgICAgICAoKChfSW5kZXghPV9fdi5pbmRleCgpKSA/
IF9fdGhyb3dfYmFkX3ZhcmlhbnRfYWNjZXNzPGludD4oIkJhZCBWYXJpYW50IGluZGV4IGluIGdl
dCIpIDogMCksIHN0ZDo6bW92ZShfX3YpKQ0KICAgICk7DQp9DQoNCnRlbXBsYXRlPHB0cmRpZmZf
dCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNvbnN0ZXhwciBjb25zdCB0eXBlbmFtZSBf
X2luZGV4ZWRfdHlwZTxfSW5kZXgsX1R5cGVzLi4uPjo6X190eXBlJiYgZ2V0KFZhcmlhbnQ8X1R5
cGVzLi4uPiBjb25zdCYmIF9fdil7DQogICAgcmV0dXJuIF9fdmFyaWFudF9hY2Nlc3NvcjxfSW5k
ZXgsX1R5cGVzLi4uPjo6Z2V0KA0KICAgICAgICAoKChfSW5kZXghPV9fdi5pbmRleCgpKSA/IF9f
dGhyb3dfYmFkX3ZhcmlhbnRfYWNjZXNzPGludD4oIkJhZCBWYXJpYW50IGluZGV4IGluIGdldCIp
IDogMCksIHN0ZDo6bW92ZShfX3YpKQ0KICAgICk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9U
eXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9U
eXBlPiBnZXRfaWYoVmFyaWFudDxfVHlwZXMuLi4+JiBfX3Ypew0KICAgIHJldHVybiAoX190eXBl
X2luZGV4PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWUhPV9fdi5pbmRleCgpKT9udWxscHRyOnN0
ZDo6YWRkcmVzc29mKGdldDxfVHlwZT4oX192KSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9U
eXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgc3RkOjphZGRfcG9pbnRlcl90PF9U
eXBlIGNvbnN0PiBnZXRfaWYoVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0JiBfX3Ypew0KICAgIHJl
dHVybiAoX190eXBlX2luZGV4PF9UeXBlLF9UeXBlcy4uLj46Ol9fdmFsdWUhPV9fdi5pbmRleCgp
KT9udWxscHRyOnN0ZDo6YWRkcmVzc29mKGdldDxfVHlwZT4oX192KSk7DQp9DQoNCnRlbXBsYXRl
PHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNvbnN0ZXhwciBzdGQ6OmFk
ZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LF9UeXBlcy4uLj46Ol9f
dHlwZT4gZ2V0X2lmKFZhcmlhbnQ8X1R5cGVzLi4uPiYgX192KXsNCiAgICByZXR1cm4gKChfSW5k
ZXghPV9fdi5pbmRleCgpKT9udWxscHRyOg0KICAgICAgICBzdGQ6OmFkZHJlc3NvZihfX3Zhcmlh
bnRfYWNjZXNzb3I8X0luZGV4LF9UeXBlcy4uLj46OmdldChfX3YpKSk7DQp9DQoNCnRlbXBsYXRl
PHB0cmRpZmZfdCBfSW5kZXgsdHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNvbnN0ZXhwciBzdGQ6OmFk
ZF9wb2ludGVyX3Q8dHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LF9UeXBlcy4uLj46Ol9f
dHlwZSBjb25zdD4gZ2V0X2lmKA0KICAgIFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX192KXsN
CiAgICByZXR1cm4gKChfSW5kZXghPV9fdi5pbmRleCgpKT9udWxscHRyOg0KICAgICAgICBzdGQ6
OmFkZHJlc3NvZihfX3ZhcmlhbnRfYWNjZXNzb3I8X0luZGV4LF9UeXBlcy4uLj46OmdldChfX3Yp
KSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpj
b25zdGV4cHIgYm9vbCBob2xkc19hbHRlcm5hdGl2ZShWYXJpYW50PF9UeXBlcy4uLj4gY29uc3Qm
IF9fdikgew0KICAgIHJldHVybiBfX3YuaW5kZXgoKT09X190eXBlX2luZGV4PF9UeXBlLF9UeXBl
cy4uLj46Ol9fdmFsdWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WaXNpdG9yLHR5cGVuYW1l
IC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX192aXNpdG9yX3JldHVybl90eXBlOw0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBfVmlzaXRvcj4NCnN0cnVjdCBfX3Zpc2l0b3JfcmV0dXJuX3R5cGU8X1Zpc2l0b3I+
ew0KICAgIHR5cGVkZWYgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPF9WaXNpdG9yJj4oKSgpKSBfX3R5
cGU7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBfVmlzaXRvcix0eXBlbmFtZSBfSGVhZCx0eXBl
bmFtZSAuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX192aXNpdG9yX3JldHVybl90eXBlPF9WaXNpdG9yLF9I
ZWFkLF9SZXN0Li4uPnsNCiAgICB0eXBlZGVmIGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxfVmlzaXRv
ciY+KCkoc3RkOjpkZWNsdmFsPF9IZWFkJj4oKSkpIF9fdHlwZTsNCn07DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIF9WaXNpdG9yLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX192aXNpdG9yX3Rh
Ymxlew0KICAgIHR5cGVkZWYgVmFyaWFudDxfVHlwZXMuLi4+IF9fdmFyaWFudF90eXBlOw0KICAg
IHR5cGVkZWYgdHlwZW5hbWUgX192aXNpdG9yX3JldHVybl90eXBlPF9WaXNpdG9yLF9UeXBlcy4u
Lj46Ol9fdHlwZSBfX3JldHVybl90eXBlOw0KICAgIHR5cGVkZWYgX19yZXR1cm5fdHlwZSAoKl9f
ZnVuY190eXBlKShfVmlzaXRvciYsX192YXJpYW50X3R5cGUmKTsNCg0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIF9UeXBlPg0KICAgIHN0YXRpYyBfX3JldHVybl90eXBlIF9fdHJhbXBvbGluZV9mdW5j
KF9WaXNpdG9yJiBfX3Zpc2l0b3IsX192YXJpYW50X3R5cGUmIF9fdil7DQogICAgICAgIHJldHVy
biBfX3Zpc2l0b3IoZ2V0PF9UeXBlPihfX3YpKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3Qg
X19mdW5jX3R5cGUgX190cmFtcG9saW5lW3NpemVvZi4uLihfVHlwZXMpXTsNCn07DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIF9WaXNpdG9yLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdCB0eXBlbmFt
ZSBfX3Zpc2l0b3JfdGFibGU8X1Zpc2l0b3IsX1R5cGVzLi4uPjo6X19mdW5jX3R5cGUgX192aXNp
dG9yX3RhYmxlPF9WaXNpdG9yLF9UeXBlcy4uLj46Ol9fdHJhbXBvbGluZVtzaXplb2YuLi4oX1R5
cGVzKV09ew0KICAgICAgICAmX190cmFtcG9saW5lX2Z1bmM8X1R5cGVzPi4uLg0KICAgIH07DQoN
CnRlbXBsYXRlPHR5cGVuYW1lIF9WaXNpdG9yLHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25zdGV4
cHIgdHlwZW5hbWUgX192aXNpdG9yX3JldHVybl90eXBlPF9WaXNpdG9yLF9UeXBlcy4uLj46Ol9f
dHlwZQ0KdmlzaXQoX1Zpc2l0b3ImJiBfX3Zpc2l0b3IsVmFyaWFudDxfVHlwZXMuLi4+JiBfX3Yp
ew0KICAgIHJldHVybiAoX192LnZhbHVlbGVzc19ieV9leGNlcHRpb24oKSkNCiAgICAgICAgPyBf
X3Rocm93X2JhZF92YXJpYW50X2FjY2Vzczx0eXBlbmFtZSBfX3Zpc2l0b3JfcmV0dXJuX3R5cGU8
X1Zpc2l0b3IsX1R5cGVzLi4uPjo6X190eXBlPigiVmlzaXRpbmcgb2YgZW1wdHkgVmFyaWFudCIp
DQogICAgICAgIDogX192aXNpdG9yX3RhYmxlPF9WaXNpdG9yLF9UeXBlcy4uLj46Ol9fdHJhbXBv
bGluZVtfX3YuaW5kZXgoKV0oX192aXNpdG9yLF9fdik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IF9WaXNpdG9yLHR5cGVuYW1lIC4uLiBfVmFyaWFudHM+DQpzdHJ1Y3QgX19tdWx0aV92aXNpdG9y
X3JldHVybl90eXBlew0KICAgIHR5cGVkZWYgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPF9WaXNpdG9y
Jj4oKShnZXQ8MD4oc3RkOjpkZWNsdmFsPF9WYXJpYW50cz4oKSkuLi4pKQ0KICAgIF9fdHlwZTsN
Cn07DQoNCnRlbXBsYXRlPHNpemVfdCBfVmFyaWFudEluZGV4LHR5cGVuYW1lIF9JbmRpY2VzPg0K
c3RydWN0IF9fdmlzaXRfaGVscGVyOw0KDQp0ZW1wbGF0ZTxwdHJkaWZmX3QgLi4uIF9JbmRpY2Vz
Pg0Kc3RydWN0IF9fdmlzaXRfaGVscGVyPDAsX19pbmRleF9zZXF1ZW5jZTxfSW5kaWNlcy4uLj4+
ew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WaXNpdG9yLHR5cGVuYW1lIC4uLiBfVmFyaWFudHM+
DQogICAgc3RhdGljIGNvbnN0ZXhwciB0eXBlbmFtZSBfX211bHRpX3Zpc2l0b3JfcmV0dXJuX3R5
cGU8X1Zpc2l0b3IsX1ZhcmlhbnRzLi4uPjo6X190eXBlDQogICAgX192aXNpdChfVmlzaXRvciYg
X192aXNpdG9yLF9WYXJpYW50cyYgLi4uIF9fdil7DQogICAgICAgIHJldHVybiBfX3Zpc2l0b3Io
Z2V0PF9JbmRpY2VzPihfX3YpLi4uKTsNCiAgICB9DQp9Ow0KDQp0ZW1wbGF0ZTxzaXplX3QgX0lu
ZGV4LHR5cGVuYW1lIC4uLiBfQXJncz4NCnN0cnVjdCBfX2FyZ19zZWxlY3Rvcl90Ow0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBfSGVhZCx0eXBlbmFtZSAuLi4gX1Jlc3Q+DQpzdHJ1Y3QgX19hcmdfc2Vs
ZWN0b3JfdDwwLF9IZWFkLF9SZXN0Li4uPnsNCiAgICB0eXBlZGVmIF9IZWFkIF9fdHlwZTsNCg0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgX190eXBlJiBfX3NlbGVjdChfSGVhZCYgX19oZWFkLF9SZXN0
JiAuLi4pew0KICAgICAgICByZXR1cm4gX19oZWFkOw0KICAgIH0NCn07DQoNCnRlbXBsYXRlPHNp
emVfdCBfSW5kZXgsdHlwZW5hbWUgX0hlYWQsdHlwZW5hbWUgLi4uIF9SZXN0Pg0Kc3RydWN0IF9f
YXJnX3NlbGVjdG9yX3Q8X0luZGV4LF9IZWFkLF9SZXN0Li4uPnsNCiAgICB0eXBlZGVmIHR5cGVu
YW1lIF9fYXJnX3NlbGVjdG9yX3Q8X0luZGV4LTEsX1Jlc3QuLi4+OjpfX3R5cGUgX190eXBlOw0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgX190eXBlJiBfX3NlbGVjdChfSGVhZCYsX1Jlc3QmIC4uLiBf
X3Jlc3Qpew0KICAgICAgICByZXR1cm4gX19hcmdfc2VsZWN0b3JfdDxfSW5kZXgtMSxfUmVzdC4u
Lj46Ol9fc2VsZWN0KF9fcmVzdC4uLik7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8c2l6ZV90IF9J
bmRleCx0eXBlbmFtZSAuLi4gX0FyZ3M+DQpjb25zdGV4cHIgdHlwZW5hbWUgX19hcmdfc2VsZWN0
b3JfdDxfSW5kZXgsX0FyZ3MuLi4+OjpfX3R5cGUmJiBfX2FyZ19zZWxlY3RvcihfQXJncyYmIC4u
LiBfX2FyZ3Mpew0KICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgX19hcmdfc2VsZWN0
b3JfdDxfSW5kZXgsX0FyZ3MuLi4+OjpfX3R5cGU+KA0KICAgICAgICBfX2FyZ19zZWxlY3Rvcl90
PF9JbmRleCxfQXJncy4uLj46Ol9fc2VsZWN0KF9fYXJncy4uLikpOw0KfQ0KDQp0ZW1wbGF0ZTxw
dHJkaWZmX3QgX0luZGV4LHNpemVfdCBfVmFyaWFudEluZGV4LHB0cmRpZmZfdCAuLi4gX0luZGlj
ZXM+DQpzdHJ1Y3QgX192aXNpdF9oZWxwZXIyew0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WaXNp
dG9yLHR5cGVuYW1lIC4uLiBfVmFyaWFudHM+DQogICAgc3RhdGljIGNvbnN0ZXhwciB0eXBlbmFt
ZSBfX211bHRpX3Zpc2l0b3JfcmV0dXJuX3R5cGU8X1Zpc2l0b3IsX1ZhcmlhbnRzLi4uPjo6X190
eXBlDQogICAgX192aXNpdChfVmlzaXRvciYgX192aXNpdG9yLF9WYXJpYW50cyYmIC4uLiBfX3Yp
ew0KICAgICAgICByZXR1cm4gKF9fYXJnX3NlbGVjdG9yPF9WYXJpYW50SW5kZXgtMT4oX192Li4u
KS5pbmRleCgpPT1fSW5kZXgpDQogICAgICAgICAgICA/IF9fdmlzaXRfaGVscGVyPF9WYXJpYW50
SW5kZXgtMSxfX2luZGV4X3NlcXVlbmNlPF9JbmRleCxfSW5kaWNlcy4uLj4+OjpfX3Zpc2l0KF9f
dmlzaXRvcixzdGQ6OmZvcndhcmQ8X1ZhcmlhbnRzPihfX3YpLi4uKQ0KICAgICAgICAgICAgOiBf
X3Zpc2l0X2hlbHBlcjI8X0luZGV4LTEsX1ZhcmlhbnRJbmRleCxfSW5kaWNlcy4uLj46Ol9fdmlz
aXQoX192aXNpdG9yLHN0ZDo6Zm9yd2FyZDxfVmFyaWFudHM+KF9fdikuLi4pOw0KICAgIH0NCn07
DQoNCnRlbXBsYXRlPHNpemVfdCBfVmFyaWFudEluZGV4LHB0cmRpZmZfdCAuLi4gX0luZGljZXM+
DQpzdHJ1Y3QgX192aXNpdF9oZWxwZXIyPC0xLF9WYXJpYW50SW5kZXgsX0luZGljZXMuLi4+ew0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WaXNpdG9yLHR5cGVuYW1lIC4uLiBfVmFyaWFudHM+DQog
ICAgc3RhdGljIGNvbnN0ZXhwciB0eXBlbmFtZSBfX211bHRpX3Zpc2l0b3JfcmV0dXJuX3R5cGU8
X1Zpc2l0b3IsX1ZhcmlhbnRzLi4uPjo6X190eXBlDQogICAgX192aXNpdChfVmlzaXRvciYsX1Zh
cmlhbnRzJiYgLi4uKXsNCiAgICAgICAgcmV0dXJuIF9fdGhyb3dfYmFkX3ZhcmlhbnRfYWNjZXNz
PHR5cGVuYW1lIF9fbXVsdGlfdmlzaXRvcl9yZXR1cm5fdHlwZTxfVmlzaXRvcixfVmFyaWFudHMu
Li4+OjpfX3R5cGU+KCJWaXNpdGluZyBvZiBlbXB0eSBWYXJpYW50Iik7DQogICAgfQ0KfTsNCg0K
dGVtcGxhdGU8dHlwZW5hbWUgX1ZhcmlhbnQ+DQpzdHJ1Y3QgX192YXJpYW50X3R5cGVfY291bnQ7
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpzdHJ1Y3QgX192YXJpYW50X3R5cGVf
Y291bnQ8VmFyaWFudDxfVHlwZXMuLi4+PnsNCiAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBf
X3ZhbHVlPXNpemVvZi4uLihfVHlwZXMpOw0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1Zhcmlh
bnQ+DQpzdHJ1Y3QgX192YXJpYW50X3R5cGVfY291bnQ8X1ZhcmlhbnQmPnsNCiAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBfX3ZhbHVlPV9fdmFyaWFudF90eXBlX2NvdW50PF9WYXJpYW50Pjo6
X192YWx1ZTsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIF9WYXJpYW50Pg0Kc3RydWN0IF9fdmFy
aWFudF90eXBlX2NvdW50PF9WYXJpYW50IGNvbnN0Jj57DQogICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgX192YWx1ZT1fX3ZhcmlhbnRfdHlwZV9jb3VudDxfVmFyaWFudD46Ol9fdmFsdWU7DQp9
Ow0KDQp0ZW1wbGF0ZTxzaXplX3QgX1ZhcmlhbnRJbmRleCxwdHJkaWZmX3QgLi4uIF9JbmRpY2Vz
Pg0Kc3RydWN0IF9fdmlzaXRfaGVscGVyPF9WYXJpYW50SW5kZXgsX19pbmRleF9zZXF1ZW5jZTxf
SW5kaWNlcy4uLj4+ew0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Zpc2l0b3IsdHlwZW5hbWUg
Li4uIF9WYXJpYW50cz4NCiAgICBzdGF0aWMgY29uc3RleHByIHR5cGVuYW1lIF9fbXVsdGlfdmlz
aXRvcl9yZXR1cm5fdHlwZTxfVmlzaXRvcixfVmFyaWFudHMuLi4+OjpfX3R5cGUNCiAgICBfX3Zp
c2l0KF9WaXNpdG9yJiBfX3Zpc2l0b3IsX1ZhcmlhbnRzJiYgLi4uIF9fdil7DQogICAgICAgIHJl
dHVybiBfX3Zpc2l0X2hlbHBlcjI8DQogICAgICAgICAgICBfX3ZhcmlhbnRfdHlwZV9jb3VudDwN
CiAgICAgICAgICAgICAgICB0eXBlbmFtZSBfX2FyZ19zZWxlY3Rvcl90PA0KICAgICAgICAgICAg
ICAgICAgICBfVmFyaWFudEluZGV4LTEsX1ZhcmlhbnRzLi4uPjo6X190eXBlPjo6X192YWx1ZS0x
LA0KICAgICAgICAgICAgX1ZhcmlhbnRJbmRleCxfSW5kaWNlcy4uLj46Ol9fdmlzaXQoDQogICAg
ICAgICAgICAgICAgX192aXNpdG9yLHN0ZDo6Zm9yd2FyZDxfVmFyaWFudHMmJj4oX192KS4uLik7
DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgX1Zpc2l0b3IsdHlwZW5hbWUgLi4uIF9W
YXJpYW50cz4NCmNvbnN0ZXhwciB0eXBlbmFtZSBfX211bHRpX3Zpc2l0b3JfcmV0dXJuX3R5cGU8
X1Zpc2l0b3IsX1ZhcmlhbnRzLi4uPjo6X190eXBlDQp2aXNpdChfVmlzaXRvciYmIF9fdmlzaXRv
cixfVmFyaWFudHMmJiAuLi4gX192KXsNCiAgICByZXR1cm4gX192aXNpdF9oZWxwZXI8c2l6ZW9m
Li4uKF9WYXJpYW50cyksX19pbmRleF9zZXF1ZW5jZTw+Pjo6X192aXNpdCgNCiAgICAgICAgX192
aXNpdG9yLHN0ZDo6Zm9yd2FyZDxfVmFyaWFudHM+KF9fdikuLi4pOw0KfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSAuLi4gX1R5cGVzPg0KY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShWYXJpYW50PF9U
eXBlcy4uLj4gY29uc3QmIF9fbGhzLFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX19yaHMpew0K
ICAgIHJldHVybiAoX19saHMuaW5kZXgoKT09X19yaHMuaW5kZXgoKSkgJiYNCiAgICAgICAgKChf
X2xocy5pbmRleCgpPT0tMSkgfHwNCiAgICAgICAgIF9fZXF1YWxpdHlfb3BfdGFibGU8VmFyaWFu
dDxfVHlwZXMuLi4+Pjo6X19lcXVhbGl0eV9jb21wYXJlW19fbGhzLmluZGV4KCldKA0KICAgICAg
ICAgICAgIF9fbGhzLF9fcmhzKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIC4uLiBfVHlwZXM+
DQpjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX19s
aHMsVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0JiBfX3Jocyl7DQogICAgcmV0dXJuICEoX19saHM9
PV9fcmhzKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCmNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmIF9fbGhzLFZhcmlhbnQ8X1R5
cGVzLi4uPiBjb25zdCYgX19yaHMpew0KICAgIHJldHVybiAoX19saHMuaW5kZXgoKTxfX3Jocy5p
bmRleCgpKSB8fA0KICAgICAgICAoKF9fbGhzLmluZGV4KCk9PV9fcmhzLmluZGV4KCkpICYmDQog
ICAgICAgICAoKF9fbGhzLmluZGV4KCkhPS0xKSAmJg0KICAgICAgICAgIF9fbGVzc190aGFuX29w
X3RhYmxlPFZhcmlhbnQ8X1R5cGVzLi4uPj46Og0KICAgICAgICAgIF9fbGVzc190aGFuX2NvbXBh
cmVbX19saHMuaW5kZXgoKV0oX19saHMsX19yaHMpKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IC4uLiBfVHlwZXM+DQpjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oVmFyaWFudDxfVHlwZXMuLi4+
IGNvbnN0JiBfX2xocyxWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmIF9fcmhzKXsNCiAgICByZXR1
cm4gX19yaHM8X19saHM7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIC4uLiBfVHlwZXM+DQpjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj49KFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYgX19saHMsVmFy
aWFudDxfVHlwZXMuLi4+IGNvbnN0JiBfX3Jocyl7DQogICAgcmV0dXJuICEoX19saHM8X19yaHMp
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX1R5cGVzPg0KY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8PShWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmIF9fbGhzLFZhcmlhbnQ8X1R5cGVzLi4u
PiBjb25zdCYgX19yaHMpew0KICAgIHJldHVybiAhKF9fbGhzPl9fcmhzKTsNCn0NCg0Kc3RydWN0
IE1vbm9zdGF0ZXt9Ow0KDQpjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KE1vbm9zdGF0ZSBjb25z
dCYsIE1vbm9zdGF0ZSBjb25zdCYpIHsgcmV0dXJuIHRydWU7IH0NCmNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oTW9ub3N0YXRlIGNvbnN0JiwgTW9ub3N0YXRlIGNvbnN0JikgeyByZXR1cm4gZmFs
c2U7IH0NCmNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oTW9ub3N0YXRlIGNvbnN0JiwgTW9ub3N0
YXRlIGNvbnN0JikgeyByZXR1cm4gdHJ1ZTsgfQ0KY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShN
b25vc3RhdGUgY29uc3QmLCBNb25vc3RhdGUgY29uc3QmKSB7IHJldHVybiB0cnVlOyB9DQpjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj4oTW9ub3N0YXRlIGNvbnN0JiwgTW9ub3N0YXRlIGNvbnN0Jikg
eyByZXR1cm4gZmFsc2U7IH0NCmNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChNb25vc3RhdGUgY29u
c3QmLCBNb25vc3RhdGUgY29uc3QmKSB7IHJldHVybiBmYWxzZTsgfQ0KDQpzdHJ1Y3QgX19oYXNo
X3Zpc2l0b3J7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGU+DQogICAgc2l6ZV90IG9wZXJh
dG9yKCkoX1R5cGUgY29uc3QmIF9feCl7DQogICAgICAgIHJldHVybiBzdGQ6Omhhc2g8X1R5cGU+
KCkoX194KTsNCiAgICB9DQp9Ow0KDQoNCg0KdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MuLi4gRj4N
CmF1dG8gc3dpdGNoT24oViYmIHYsIEYmJi4uLiBmKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KG1h
a2VWaXNpdG9yKHN0ZDo6Zm9yd2FyZDxGPihmKS4uLiksIHN0ZDo6Zm9yd2FyZDxWPih2KSkpDQp7
DQogICAgcmV0dXJuIFdURjo6dmlzaXQobWFrZVZpc2l0b3Ioc3RkOjpmb3J3YXJkPEY+KGYpLi4u
KSwgc3RkOjpmb3J3YXJkPFY+KHYpKTsNCn0NCg0KfSANCg0KbmFtZXNwYWNlIHN0ZCB7DQoNCnRl
bXBsYXRlPD4NCnN0cnVjdCBoYXNoPFdURjo6TW9ub3N0YXRlPnsNCiAgICBzaXplX3Qgb3BlcmF0
b3IoKShXVEY6Ok1vbm9zdGF0ZSkgew0KICAgICAgICByZXR1cm4gNDI7DQogICAgfQ0KfTsNCg0K
dGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4NCnN0cnVjdCBoYXNoPFdURjo6VmFyaWFudDxf
VHlwZXMuLi4+PnsNCiAgICBzaXplX3Qgb3BlcmF0b3IoKShXVEY6OlZhcmlhbnQ8X1R5cGVzLi4u
PiBjb25zdCAmdikgIHsNCiAgICAgICAgcmV0dXJuIHN0ZDo6aGFzaDxwdHJkaWZmX3Q+KCkodi5p
bmRleCgpKSBeIFdURjo6dmlzaXQoV1RGOjpfX2hhc2hfdmlzaXRvcigpLCB2KTsNCiAgICB9DQp9
Ow0KDQp9IA0KDQp1c2luZyBXVEY6Ok1vbm9zdGF0ZTsNCnVzaW5nIFdURjo6VmFyaWFudDsNCg0K
I2xpbmUgMjA3OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxI
ZWFkZXJzXFx3dGYvVmFyaWFudC5oIg0KDQoNCiNwcmFnbWEgd2FybmluZyhwb3ApDQojbGluZSAy
MDgyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi9WYXJpYW50LmgiDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDYWNoZVVwZGF0ZS5oIg0KDQpuYW1lc3BhY2Ug
SlNDIHsNCg0KY2xhc3MgQ2FjaGVVcGRhdGUgew0KcHVibGljOg0KICAgIHN0cnVjdCBHbG9iYWxV
cGRhdGUgew0KICAgICAgICBDYWNoZVBheWxvYWQgbV9wYXlsb2FkOw0KICAgIH07DQoNCiAgICBz
dHJ1Y3QgRnVuY3Rpb25VcGRhdGUgew0KICAgICAgICBwdHJkaWZmX3QgbV9iYXNlOw0KICAgICAg
ICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIG1fa2luZDsNCiAgICAgICAgQ2FjaGVkRnVuY3Rpb25F
eGVjdXRhYmxlTWV0YWRhdGEgbV9tZXRhZGF0YTsNCiAgICAgICAgQ2FjaGVQYXlsb2FkIG1fcGF5
bG9hZDsNCiAgICB9Ow0KDQoNCiAgICBDYWNoZVVwZGF0ZShHbG9iYWxVcGRhdGUmJik7DQogICAg
Q2FjaGVVcGRhdGUoRnVuY3Rpb25VcGRhdGUmJik7DQoNCiAgICBDYWNoZVVwZGF0ZShDYWNoZVVw
ZGF0ZSYmKTsNCiAgICBDYWNoZVVwZGF0ZSYgb3BlcmF0b3I9KENhY2hlVXBkYXRlJiYpOw0KDQog
ICAgYm9vbCBpc0dsb2JhbCgpIGNvbnN0Ow0KICAgIGNvbnN0IEdsb2JhbFVwZGF0ZSYgYXNHbG9i
YWwoKSBjb25zdDsNCiAgICBjb25zdCBGdW5jdGlvblVwZGF0ZSYgYXNGdW5jdGlvbigpIGNvbnN0
Ow0KDQpwcml2YXRlOg0KICAgIFZhcmlhbnQ8R2xvYmFsVXBkYXRlLCBGdW5jdGlvblVwZGF0ZT4g
bV91cGRhdGU7DQp9Ow0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQ2FjaGVkQnl0ZWNvZGUuaCINCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcTGVhZkV4ZWN1dGFibGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0K
Y2xhc3MgTGVhZkV4ZWN1dGFibGU7DQpjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsN
Cg0KdXNpbmcgTGVhZkV4ZWN1dGFibGVNYXAgPSBIYXNoTWFwPGNvbnN0IFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiwgTGVhZkV4ZWN1dGFibGU+Ow0KDQpjbGFzcyBMZWFmRXhlY3V0YWJsZSB7
DQpwdWJsaWM6DQogICAgTGVhZkV4ZWN1dGFibGUoKSA9IGRlZmF1bHQ7DQoNCiAgICBMZWFmRXhl
Y3V0YWJsZShwdHJkaWZmX3Qgb2Zmc2V0KQ0KICAgICAgICA6IG1fYmFzZShvZmZzZXQpDQogICAg
ew0KICAgIH0NCg0KICAgIHB0cmRpZmZfdCBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9
DQogICAgTGVhZkV4ZWN1dGFibGUgb3BlcmF0b3IrKHNpemVfdCkgY29uc3Q7DQoNCnByaXZhdGU6
DQogICAgcHRyZGlmZl90IG1fYmFzZTsNCn07DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDYWNoZWRCeXRl
Y29kZS5oIg0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOw0KDQpjbGFzcyBDYWNoZWRCeXRlY29kZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENhY2hlZEJ5dGVjb2RlPiB7DQogICAgQ2FjaGVkQnl0ZWNvZGUoY29uc3QgQ2FjaGVkQnl0
ZWNvZGUmKSA9IGRlbGV0ZTsgQ2FjaGVkQnl0ZWNvZGUmIG9wZXJhdG9yPShjb25zdCBDYWNoZWRC
eXRlY29kZSYpID0gZGVsZXRlOzsNCg0KcHVibGljOg0KICAgIHN0YXRpYyBSZWY8Q2FjaGVkQnl0
ZWNvZGU+IGNyZWF0ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNo
ZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VFbXB0eVBheWxvYWQoKSkpOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBSZWY8Q2FjaGVkQnl0ZWNvZGU+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEsIExlYWZFeGVjdXRhYmxlTWFwJiYgbGVhZkV4ZWN1dGFibGVzID0geyB9
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVkQnl0ZWNvZGUoQ2Fj
aGVQYXlsb2FkOjptYWtlTWFwcGVkUGF5bG9hZChzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KGRhdGEpKSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihsZWFmRXhl
Y3V0YWJsZXMpKSk7DQogICAgfQ0KDQogICAgc3RhdGljIFJlZjxDYWNoZWRCeXRlY29kZT4gY3Jl
YXRlKE1hbGxvY1B0cjx1aW50OF90LCBWTU1hbGxvYz4mJiBkYXRhLCBzaXplX3Qgc2l6ZSwgTGVh
ZkV4ZWN1dGFibGVNYXAmJiBsZWFmRXhlY3V0YWJsZXMpDQogICAgew0KICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQ6Om1ha2VNYWxsb2NQYXls
b2FkKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oZGF0YSksIHNpemUpLCBzdGQ6
Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGxlYWZFeGVjdXRhYmxlcykpKTsNCiAgICB9
DQoNCiAgICBMZWFmRXhlY3V0YWJsZU1hcCYgbGVhZkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9s
ZWFmRXhlY3V0YWJsZXM7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGFkZEds
b2JhbFVwZGF0ZShSZWY8Q2FjaGVkQnl0ZWNvZGU+KTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgdm9pZCBhZGRGdW5jdGlvblVwZGF0ZShjb25zdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFJlZjxDYWNoZWRCeXRlY29kZT4pOw0KDQogICAg
dXNpbmcgRm9yRWFjaFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChvZmZfdCwgY29uc3Qg
dm9pZCosIHNpemVfdCk+Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGNvbW1pdFVw
ZGF0ZXMoY29uc3QgRm9yRWFjaFVwZGF0ZUNhbGxiYWNrJikgY29uc3Q7DQoNCiAgICBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmRhdGEoKTsgfQ0KICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLnNpemUoKTsgfQ0KICAgIGJvb2wg
aGFzVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0ZXMuaXNFbXB0eSgpOyB9DQogICAg
c2l6ZV90IHNpemVGb3JVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0NCg0KcHJpdmF0
ZToNCiAgICBDYWNoZWRCeXRlY29kZShDYWNoZVBheWxvYWQmJiBwYXlsb2FkLCBMZWFmRXhlY3V0
YWJsZU1hcCYmIGxlYWZFeGVjdXRhYmxlcyA9IHsgfSkNCiAgICAgICAgOiBtX3NpemUocGF5bG9h
ZC5zaXplKCkpDQogICAgICAgICwgbV9wYXlsb2FkKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBh
cmFtZXRlcj4ocGF5bG9hZCkpDQogICAgICAgICwgbV9sZWFmRXhlY3V0YWJsZXMoc3RkOjptb3Zl
PFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihsZWFmRXhlY3V0YWJsZXMpKQ0KICAgIHsNCiAgICB9
DQoNCiAgICB2b2lkIGNvcHlMZWFmRXhlY3V0YWJsZXMoY29uc3QgQ2FjaGVkQnl0ZWNvZGUmKTsN
Cg0KICAgIHNpemVfdCBtX3NpemUgeyAwIH07DQogICAgQ2FjaGVQYXlsb2FkIG1fcGF5bG9hZDsN
CiAgICBMZWFmRXhlY3V0YWJsZU1hcCBtX2xlYWZFeGVjdXRhYmxlczsNCiAgICBWZWN0b3I8Q2Fj
aGVVcGRhdGU+IG1fdXBkYXRlczsNCn07DQoNCg0KfSANCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHBhcnNlclxcU291cmNlUHJvdmlk
ZXIuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxTb3VyY2VPcmlnaW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
U2NyaXB0RmV0Y2hlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBT
Y3JpcHRGZXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0RmV0Y2hlcj4gew0KcHVibGlj
Og0KICAgIHZpcnR1YWwgflNjcmlwdEZldGNoZXIoKSB7IH0NCn07DQoNCn0gDQojbGluZSAyOSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxTb3VyY2VPcmlnaW4uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1VSTC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCnR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOw0KI2xpbmUgMzUgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1VSTC5oIg0K
DQoNCg0KI2xpbmUgMzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1VSTC5oIg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KY2xhc3MgUHJpbnRT
dHJlYW07DQpjbGFzcyBUZXh0U3RyZWFtOw0KDQpjbGFzcyBVUkxUZXh0RW5jb2Rpbmcgew0KcHVi
bGljOg0KICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUZvclVSTFBhcnNpbmcoU3Ry
aW5nVmlldykgY29uc3QgPSAwOw0KcHJvdGVjdGVkOg0KICAgIHZpcnR1YWwgflVSTFRleHRFbmNv
ZGluZygpIHsgfQ0KfTsNCg0KY2xhc3MgVVJMIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lk
KTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBw
cml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3Jv
ID0gaW50Ow0KcHVibGljOg0KICAgIA0KICAgIFVSTCgpIHsgaW52YWxpZGF0ZSgpOyB9DQoNCiAg
ICBleHBsaWNpdCBVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7DQogICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7IH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25z
dCBVUkxUZXh0RW5jb2RpbmcqID0gbnVsbHB0cik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmdWaWV3KTsNCiAgICBf
X2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KFN0cmluZ1ZpZXcpOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZyBzdHJpcHBl
ZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdDsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7DQoNCiAgICBib29sIGlz
TnVsbCgpIGNvbnN0Ow0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ow0KICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0Ow0KDQogICAgDQogICAgDQogICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0ID0gZGVs
ZXRlOw0KDQogICAgDQogICAgDQogICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyBy
ZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQ0KDQogICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNv
bnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgYm9vbCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0Ow0KDQogICAgY29uc3QgU3RyaW5nJiBzdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9
IDEwMjQpIGNvbnN0Ow0KDQogICAgDQogICAgDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
U3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBT
dHJpbmdWaWV3IGVuY29kZWRVc2VyKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQp
IFN0cmluZ1ZpZXcgZW5jb2RlZFBhc3N3b3JkKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIFN0cmluZ1ZpZXcgaG9zdCgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBTdHJpbmdWaWV3IHBhdGgoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
U3RyaW5nVmlldyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KSBTdHJpbmdWaWV3IHF1ZXJ5KCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBv
cnQpIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7DQoNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgU3RyaW5nVmlldyBxdWVyeVdpdGhMZWFkaW5nUXVlc3Rpb25NYXJrKCkg
Y29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVu
dGlmaWVyV2l0aExlYWRpbmdOdW1iZXJTaWduKCkgY29uc3Q7DQogICAgX19kZWNsc3BlYyhkbGxp
bXBvcnQpIFN0cmluZ1ZpZXcgc3RyaW5nV2l0aG91dFF1ZXJ5T3JGcmFnbWVudElkZW50aWZpZXIo
KSBjb25zdDsNCiAgICBTdHJpbmdWaWV3IHN0cmluZ1dpdGhvdXRGcmFnbWVudElkZW50aWZpZXIo
KSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcgcHJvdG9jb2xIb3N0
QW5kUG9ydCgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBTdHJpbmcgaG9zdEFu
ZFBvcnQoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIHVzZXIoKSBj
b25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgpIGNvbnN0
Ow0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVSTCB0cnVuY2F0ZWRGb3JVc2VBc0Jhc2Uo
KSBjb25zdDsNCg0KICAgIGJvb2wgaGFzUXVlcnkoKSBjb25zdDsNCiAgICBib29sIGhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpIGNvbnN0Ow0KICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0Ow0KDQogICAg
Ym9vbCBoYXNDcmVkZW50aWFscygpIGNvbnN0Ow0KDQogICAgDQogICAgDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7DQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3KSBjb25zdDsNCiAg
ICBib29sIHByb3RvY29sSXNCbG9iKCkgY29uc3QgeyByZXR1cm4gcHJvdG9jb2xJcygiYmxvYiIp
OyB9DQogICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMo
ImRhdGEiKTsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIHByb3RvY29sSXNBYm91
dCgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIHByb3RvY29sSXNKYXZh
U2NyaXB0KCkgY29uc3Q7DQogICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3Q7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsNCiAg
ICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nhbm5vdEJlQUJhc2VV
Ukw7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGlzQWJvdXRCbGFuaygpIGNv
bnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGlzQWJvdXRTcmNEb2MoKSBjb25z
dDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGlzTWF0Y2hpbmdEb21haW4oU3Ry
aW5nVmlldykgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBzZXRQcm90
b2NvbChTdHJpbmdWaWV3KTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzZXRIb3N0
KFN0cmluZ1ZpZXcpOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgc2V0UG9ydChP
cHRpb25hbDx1aW50MTZfdD4pOw0KDQogICAgDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZv
aWQgc2V0SG9zdEFuZFBvcnQoU3RyaW5nVmlldyk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgdm9pZCBzZXRVc2VyKFN0cmluZ1ZpZXcpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2
b2lkIHNldFBhc3N3b3JkKFN0cmluZ1ZpZXcpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2
b2lkIHJlbW92ZUNyZWRlbnRpYWxzKCk7DQoNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9y
dCkgdm9pZCBzZXRQYXRoKFN0cmluZ1ZpZXcpOw0KDQogICAgDQogICAgDQogICAgDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgc2V0UXVlcnkoU3RyaW5nVmlldyk7DQoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nVmlldyk7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCByZW1vdmVRdWVyeUFuZEZyYWdt
ZW50SWRlbnRpZmllcigpOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBib29s
IGhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3KTsNCg0KICAgIHVuc2lnbmVkIHBhdGhTdGFydCgp
IGNvbnN0Ow0KICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsNCiAgICB1bnNpZ25lZCBwYXRo
QWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsNCg0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVS
TChDRlVSTFJlZik7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFJldGFpblB0cjxDRlVSTFJl
Zj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsNCiNsaW5lIDE3OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvVVJMLmgiDQoNCg0KDQoNCiNsaW5l
IDE4MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvVVJMLmgiDQoNCg0KDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Ow0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+IHN0YXRpYyAgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFVSTCYpOw0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxVUkw+IGRlY29kZShEZWNvZGVyJik7
DQoNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIFVSTFBhcnNlcjsNCg0KICAgIF9fZGVjbHNw
ZWMoZGxsaW1wb3J0KSB2b2lkIGludmFsaWRhdGUoKTsNCiAgICB1bnNpZ25lZCBob3N0U3RhcnQo
KSBjb25zdDsNCiAgICB1bnNpZ25lZCBjcmVkZW50aWFsc0VuZCgpIGNvbnN0Ow0KICAgIHZvaWQg
cmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIHZvaWQgcGFyc2Uo
Y29uc3QgU3RyaW5nJik7DQoNCiAgICBmcmllbmQgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wg
cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOw0KDQog
ICAgU3RyaW5nIG1fc3RyaW5nOw0KDQogICAgdW5zaWduZWQgbV9pc1ZhbGlkIDogMTsNCiAgICB1
bnNpZ25lZCBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgOiAxOw0KICAgIHVuc2lnbmVkIG1fY2Fu
bm90QmVBQmFzZVVSTCA6IDE7DQoNCiAgICANCiAgICB1bnNpZ25lZCBtX3BvcnRMZW5ndGggOiAz
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4UG9ydExlbmd0aCA9ICgxIDw8IDMp
IC0gMTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4U2NoZW1lTGVuZ3RoID0g
KDEgPDwgMjYpIC0gMTsNCiAgICB1bnNpZ25lZCBtX3NjaGVtZUVuZCA6IDI2Ow0KICAgIHVuc2ln
bmVkIG1fdXNlclN0YXJ0Ow0KICAgIHVuc2lnbmVkIG1fdXNlckVuZDsNCiAgICB1bnNpZ25lZCBt
X3Bhc3N3b3JkRW5kOw0KICAgIHVuc2lnbmVkIG1faG9zdEVuZDsNCiAgICB1bnNpZ25lZCBtX3Bh
dGhBZnRlckxhc3RTbGFzaDsNCiAgICB1bnNpZ25lZCBtX3BhdGhFbmQ7DQogICAgdW5zaWduZWQg
bV9xdWVyeUVuZDsNCn07DQoNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0
cmluZykgKyA4ICogc2l6ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQgc3RheSBzbWFsbCIpOw0K
DQpib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7DQpib29sIG9wZXJhdG9y
PT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7DQpib29sIG9wZXJhdG9yPT0oY29uc3QgU3Ry
aW5nJiwgY29uc3QgVVJMJik7DQpib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7DQpib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7DQpib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7DQoNCl9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29u
c3QgVVJMJik7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7DQoNCl9fZGVjbHNwZWMoZGxsaW1wb3J0
KSBjb25zdCBVUkwmIGFib3V0QmxhbmtVUkwoKTsNCl9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjb25z
dCBVUkwmIGFib3V0U3JjRG9jVVJMKCk7DQoNCg0KDQoNCg0KDQpfX2RlY2xzcGVjKGRsbGltcG9y
dCkgYm9vbCBwcm90b2NvbElzKFN0cmluZ1ZpZXcgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdW
aWV3IHVybCk7DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFt
aWx5KFN0cmluZ1ZpZXcgdXJsKTsNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIE9wdGlvbmFsPHVp
bnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOw0KX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90
IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wg
cG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IA0KDQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBy
ZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xGb3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wpOw0KX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgY2xlYXJE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOw0KDQpfX2RlY2xzcGVjKGRsbGlt
cG9ydCkgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBkYXRhVVJMKTsNCg0K
DQpfX2RlY2xzcGVjKGRsbGltcG9ydCkgU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMoY29uc3QgU3RyaW5nJik7DQoNCg0KDQoNCg0KDQoNCg0KX19kZWNsc3BlYyhkbGxpbXBvcnQp
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFVSTCYpOw0KDQp0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxVUkw+Ow0KdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxVUkw+Ow0KDQoNCg0KdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBVUkw6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdA0Kew0KICAgIGVuY29kZXIgPDwgbV9zdHJpbmc7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IGJvb2wgVVJMOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgVVJMJiB1cmwpDQp7DQogICAgYXV0byBvcHRpb25hbFVSTCA9IGRlY29kZShk
ZWNvZGVyKTsNCiAgICBpZiAoIW9wdGlvbmFsVVJMKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQog
ICAgdXJsID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPigqb3B0aW9uYWxVUkwp
Ow0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRp
b25hbDxVUkw+IFVSTDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpDQp7DQogICAgT3B0aW9uYWw8
U3RyaW5nPiBzdHJpbmc7DQogICAgZGVjb2RlciA+PiBzdHJpbmc7DQogICAgaWYgKCFzdHJpbmcp
DQogICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7DQogICAgcmV0dXJuIFVSTChVUkwoKSwgc3Rk
Ojptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPigqc3RyaW5nKSk7DQp9DQoNCmlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpDQp7DQogICAgcmV0dXJu
IGEuc3RyaW5nKCkgPT0gYi5zdHJpbmcoKTsNCn0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikNCnsNCiAgICByZXR1cm4gYS5zdHJpbmcoKSA9
PSBiOw0KfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3Qg
VVJMJiBiKQ0Kew0KICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7DQp9DQoNCmlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpDQp7DQogICAgcmV0dXJuIGEu
c3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsNCn0NCg0KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikNCnsNCiAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBi
Ow0KfQ0KDQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJM
JiBiKQ0Kew0KICAgIHJldHVybiBhICE9IGIuc3RyaW5nKCk7DQp9DQoNCmlubGluZSBVUkw6OlVS
TChIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQ0KICAgIDogbV9zdHJpbmcoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKQ0Kew0KfQ0KDQppbmxpbmUgYm9vbCBVUkw6OmlzTnVsbCgpIGNvbnN0DQp7DQog
ICAgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOw0KfQ0KDQppbmxpbmUgYm9vbCBVUkw6OmlzRW1w
dHkoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7DQp9DQoNCmlubGlu
ZSBib29sIFVSTDo6aXNWYWxpZCgpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1faXNWYWxpZDsNCn0N
Cg0KaW5saW5lIGJvb2wgVVJMOjpoYXNQYXRoKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9wYXRo
RW5kID4gcGF0aFN0YXJ0KCk7DQp9DQoNCmlubGluZSBib29sIFVSTDo6aGFzQ3JlZGVudGlhbHMo
KSBjb25zdA0Kew0KICAgIHJldHVybiBtX3Bhc3N3b3JkRW5kID4gbV91c2VyU3RhcnQ7DQp9DQoN
CmlubGluZSBib29sIFVSTDo6aGFzUXVlcnkoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX3F1ZXJ5
RW5kID4gbV9wYXRoRW5kOw0KfQ0KDQppbmxpbmUgYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1faXNWYWxpZCAmJiBtX3N0cmluZy5sZW5ndGgo
KSA+IG1fcXVlcnlFbmQ7DQp9DQoNCmlubGluZSBib29sIFVSTDo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsNCn0N
Cg0KaW5saW5lIHVuc2lnbmVkIFVSTDo6cGF0aFN0YXJ0KCkgY29uc3QNCnsNCiAgICByZXR1cm4g
bV9ob3N0RW5kICsgbV9wb3J0TGVuZ3RoOw0KfQ0KDQppbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRo
RW5kKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9wYXRoRW5kOw0KfQ0KDQppbmxpbmUgdW5zaWdu
ZWQgVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdA0Kew0KICAgIHJldHVybiBtX3BhdGhB
ZnRlckxhc3RTbGFzaDsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjphYm91dEJsYW5rVVJMOw0KdXNp
bmcgV1RGOjphYm91dFNyY0RvY1VSTDsNCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFNvdXJjZU9yaWdpbi5oIg0KDQpu
YW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgU291cmNlT3JpZ2luIHsNCnB1YmxpYzoNCiAgICBleHBs
aWNpdCBTb3VyY2VPcmlnaW4oY29uc3QgVVJMJiB1cmwpDQogICAgICAgIDogbV91cmwodXJsKQ0K
ICAgIHsNCiAgICB9DQoNCiAgICBleHBsaWNpdCBTb3VyY2VPcmlnaW4oY29uc3QgVVJMJiB1cmws
IFJlZjxTY3JpcHRGZXRjaGVyPiYmIGZldGNoZXIpDQogICAgICAgIDogbV91cmwodXJsKQ0KICAg
ICAgICAsIG1fZmV0Y2hlcihzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGZldGNo
ZXIpKQ0KICAgIHsNCiAgICB9DQoNCiAgICBTb3VyY2VPcmlnaW4oKSA9IGRlZmF1bHQ7DQoNCiAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9DQogICAgY29uc3QgU3Ry
aW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3VybC5zdHJpbmcoKTsgfQ0KICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gdXJsKCkuaXNOdWxsKCk7IH0NCg0KICAgIFNjcmlwdEZl
dGNoZXIqIGZldGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoZXIuZ2V0KCk7IH0NCg0KcHJp
dmF0ZToNCiAgICBVUkwgbV91cmw7DQogICAgUmVmUHRyPFNjcmlwdEZldGNoZXI+IG1fZmV0Y2hl
cjsNCn07DQoNCn0gDQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxwYXJzZXJcXFNvdXJjZVByb3ZpZGVyLmgiDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3Rl
eHQvVGV4dFBvc2l0aW9uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9PcmRpbmFsTnVtYmVyLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCmNsYXNzIE9yZGluYWxOdW1iZXIgew0K
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3
ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9y
Y2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgc3RhdGljIE9y
ZGluYWxOdW1iZXIgYmVmb3JlRmlyc3QoKSB7IHJldHVybiBPcmRpbmFsTnVtYmVyKC0xKTsgfQ0K
ICAgIHN0YXRpYyBPcmRpbmFsTnVtYmVyIGZyb21aZXJvQmFzZWRJbnQoaW50IHplcm9CYXNlZElu
dCkgeyByZXR1cm4gT3JkaW5hbE51bWJlcih6ZXJvQmFzZWRJbnQpOyB9DQogICAgc3RhdGljIE9y
ZGluYWxOdW1iZXIgZnJvbU9uZUJhc2VkSW50KGludCBvbmVCYXNlZEludCkgeyByZXR1cm4gT3Jk
aW5hbE51bWJlcihvbmVCYXNlZEludCAtIDEpOyB9DQoNCiAgICBPcmRpbmFsTnVtYmVyKCkgOiBt
X3plcm9CYXNlZFZhbHVlKDApIHsgfQ0KDQogICAgaW50IHplcm9CYXNlZEludCgpIGNvbnN0IHsg
cmV0dXJuIG1femVyb0Jhc2VkVmFsdWU7IH0NCiAgICBpbnQgb25lQmFzZWRJbnQoKSBjb25zdCB7
IHJldHVybiBtX3plcm9CYXNlZFZhbHVlICsgMTsgfQ0KDQogICAgYm9vbCBvcGVyYXRvcj09KE9y
ZGluYWxOdW1iZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1femVyb0Jhc2VkVmFsdWUgPT0gb3Ro
ZXIubV96ZXJvQmFzZWRWYWx1ZTsgfQ0KICAgIGJvb2wgb3BlcmF0b3IhPShPcmRpbmFsTnVtYmVy
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCgqdGhpcykgPT0gb3RoZXIpOyB9DQogICAgYm9vbCBv
cGVyYXRvcj4oT3JkaW5hbE51bWJlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV96ZXJvQmFzZWRW
YWx1ZSA+IG90aGVyLm1femVyb0Jhc2VkVmFsdWU7IH0NCg0KcHJpdmF0ZToNCiAgICBPcmRpbmFs
TnVtYmVyKGludCB6ZXJvQmFzZWRJbnQpIDogbV96ZXJvQmFzZWRWYWx1ZSh6ZXJvQmFzZWRJbnQp
IHsgfQ0KICAgIGludCBtX3plcm9CYXNlZFZhbHVlOw0KfTsNCg0KfQ0KDQp1c2luZyBXVEY6Ok9y
ZGluYWxOdW1iZXI7DQojbGluZSAyOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaCINCg0KbmFtZXNwYWNl
IFdURiB7DQoNCg0KDQpjbGFzcyBUZXh0UG9zaXRpb24gew0KICAgIHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXIgbGlu
ZSwgT3JkaW5hbE51bWJlciBjb2x1bW4pDQogICAgICAgIDogbV9saW5lKGxpbmUpDQogICAgICAg
ICwgbV9jb2x1bW4oY29sdW1uKQ0KICAgIHsNCiAgICB9DQoNCiAgICBUZXh0UG9zaXRpb24oKSB7
IH0NCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFBvc2l0aW9uJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9saW5lID09IG90aGVyLm1fbGluZSAmJiBtX2NvbHVtbiA9PSBvdGhlci5tX2Nv
bHVtbjsgfQ0KICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0UG9zaXRpb24mIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQ0KDQogICAgDQogICAgc3RhdGljIFRl
eHRQb3NpdGlvbiBiZWxvd1JhbmdlUG9zaXRpb24oKSB7IHJldHVybiBUZXh0UG9zaXRpb24oT3Jk
aW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSk7
IH0NCg0KICAgIE9yZGluYWxOdW1iZXIgbV9saW5lOw0KICAgIE9yZGluYWxOdW1iZXIgbV9jb2x1
bW47DQp9Ow0KDQp9DQoNCnVzaW5nIFdURjo6VGV4dFBvc2l0aW9uOw0KI2xpbmUgMzYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccGFyc2VyXFxTb3Vy
Y2VQcm92aWRlci5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBTb3VyY2VDb2RlOw0K
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7DQpjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOw0KDQogICAgZW51bSBjbGFzcyBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgOiB1
aW50OF90IHsNCiAgICAgICAgUHJvZ3JhbSwNCiAgICAgICAgTW9kdWxlLA0KICAgICAgICBXZWJB
c3NlbWJseSwNCiAgICB9Ow0KDQogICAgdXNpbmcgQnl0ZWNvZGVDYWNoZUdlbmVyYXRvciA9IEZ1
bmN0aW9uPFJlZlB0cjxDYWNoZWRCeXRlY29kZT4oKT47DQoNCiAgICBjbGFzcyBTb3VyY2VQcm92
aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJjZVByb3ZpZGVyPiB7DQogICAgcHVibGljOg0K
ICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgbnVsbElEID0gMTsNCiAgICAgICAgDQogICAg
ICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBTb3VyY2VQcm92aWRlcihjb25zdCBTb3VyY2VPcmln
aW4mLCBTdHJpbmcmJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlv
biwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlKTsNCg0KICAgICAgICBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgdmlydHVhbCB+U291cmNlUHJvdmlkZXIoKTsNCg0KICAgICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGhhc2goKSBjb25zdCA9IDA7DQogICAgICAgIHZpcnR1YWwgU3RyaW5nVmlldyBzb3VyY2Uo
KSBjb25zdCA9IDA7DQogICAgICAgIHZpcnR1YWwgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBjYWNo
ZWRCeXRlY29kZSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0NCiAgICAgICAgdmlydHVhbCB2
b2lkIGNhY2hlQnl0ZWNvZGUoY29uc3QgQnl0ZWNvZGVDYWNoZUdlbmVyYXRvciYpIGNvbnN0IHsg
fQ0KICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGUoY29uc3QgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwg
Y29uc3QgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayopIGNvbnN0IHsgfQ0KICAgICAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0Q2FjaGVkQnl0ZWNvZGUoKSBjb25zdCB7IH0NCg0KICAgICAgICBTdHJp
bmdWaWV3IGdldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QNCiAgICAgICAgew0KICAg
ICAgICAgICAgcmV0dXJuIHNvdXJjZSgpLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZU9yaWdpbjsgfQ0KDQogICAgICAgIA0KICAgICAgICBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9DQogICAg
ICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMRGlyZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VVUkxEaXJlY3RpdmU7IH0NCiAgICAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VNYXBwaW5n
VVJMRGlyZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZl
OyB9DQoNCiAgICAgICAgVGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0UG9zaXRpb247IH0NCiAgICAgICAgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVR5cGU7IH0NCg0KICAgICAgICBpbnRw
dHJfdCBhc0lEKCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFtX2lkKQ0KICAgICAgICAg
ICAgICAgIGdldElEKCk7DQogICAgICAgICAgICByZXR1cm4gbV9pZDsNCiAgICAgICAgfQ0KDQog
ICAgICAgIHZvaWQgc2V0U291cmNlVVJMRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291cmNlVVJM
RGlyZWN0aXZlKSB7IG1fc291cmNlVVJMRGlyZWN0aXZlID0gc291cmNlVVJMRGlyZWN0aXZlOyB9
DQogICAgICAgIHZvaWQgc2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcm
IHNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUpIHsgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZl
ID0gc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgZ2V0SUQoKTsNCg0KICAgICAgICBTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGUgbV9zb3VyY2VUeXBlOw0KICAgICAgICBTb3VyY2VPcmlnaW4gbV9zb3Vy
Y2VPcmlnaW47DQogICAgICAgIFN0cmluZyBtX3NvdXJjZVVSTDsNCiAgICAgICAgU3RyaW5nIG1f
c291cmNlVVJMRGlyZWN0aXZlOw0KICAgICAgICBTdHJpbmcgbV9zb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlOw0KICAgICAgICBUZXh0UG9zaXRpb24gbV9zdGFydFBvc2l0aW9uOw0KICAgICAgICB1
aW50cHRyX3QgbV9pZCB7IDAgfTsNCiAgICB9Ow0KDQogICAgdXNpbmcgU3RyaW5nU291cmNlUHJv
dmlkZXJNYWxsb2MgPSBGYXN0TWFsbG9jOw0KICAgIGNsYXNzIFN0cmluZ1NvdXJjZVByb3ZpZGVy
IDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsNCiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9p
ZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsg
cHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
byA9IGludDsNCiAgICBwdWJsaWM6DQogICAgICAgIHN0YXRpYyBSZWY8U3RyaW5nU291cmNlUHJv
dmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU291cmNlT3JpZ2luJiBz
b3VyY2VPcmlnaW4sIFN0cmluZyBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQ
b3NpdGlvbiA9IFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNl
VHlwZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkNCiAgICAgICAgew0KICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNl
LCBzb3VyY2VPcmlnaW4sIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oc291cmNl
VVJMKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpOw0KICAgICAgICB9DQogICAgICAgIA0K
ICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qgb3ZlcnJpZGUNCiAgICAgICAgew0KICAgICAg
ICAgICAgcmV0dXJuIG1fc291cmNlLmdldCgpLmhhc2goKTsNCiAgICAgICAgfQ0KDQogICAgICAg
IFN0cmluZ1ZpZXcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUNCiAgICAgICAgew0KICAgICAgICAg
ICAgcmV0dXJuIG1fc291cmNlLmdldCgpOw0KICAgICAgICB9DQoNCiAgICBwcm90ZWN0ZWQ6DQog
ICAgICAgIFN0cmluZ1NvdXJjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBT
b3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgU3RyaW5nJiYgc291cmNlVVJMLCBjb25zdCBUZXh0
UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VU
eXBlKQ0KICAgICAgICAgICAgOiBTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oc291cmNlVVJMKSwgc3RhcnRQb3NpdGlvbiwgc291
cmNlVHlwZSkNCiAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlLmlzTnVsbCgpID8gKlN0cmlu
Z0ltcGw6OmVtcHR5KCkgOiAqc291cmNlLmltcGwoKSkNCiAgICAgICAgew0KICAgICAgICB9DQoN
CiAgICBwcml2YXRlOg0KICAgICAgICBSZWY8U3RyaW5nSW1wbD4gbV9zb3VyY2U7DQogICAgfTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojbGluZSAxNjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccGFyc2VyXFxTb3VyY2VQcm92aWRlci5oIg0KDQp9IA0KI2xpbmUg
MzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccGFy
c2VyXFxVbmxpbmtlZFNvdXJjZUNvZGUuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KICAgIGNs
YXNzIFVubGlua2VkU291cmNlQ29kZSB7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJj
ZVR5cGU+DQogICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRVbmxpbmtlZFNvdXJjZUNvZGVTaGFw
ZTsNCiAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJvdmlkZXI7
DQoNCiAgICBwdWJsaWM6DQogICAgICAgIFVubGlua2VkU291cmNlQ29kZSgpDQogICAgICAgICAg
ICA6IG1fcHJvdmlkZXIobnVsbHB0cikNCiAgICAgICAgICAgICwgbV9zdGFydE9mZnNldCgwKQ0K
ICAgICAgICAgICAgLCBtX2VuZE9mZnNldCgwKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAg
ICAgICBVbmxpbmtlZFNvdXJjZUNvZGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQ0K
ICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQ0KICAg
ICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICBVbmxpbmtlZFNvdXJjZUNvZGUoUmVmPFNvdXJj
ZVByb3ZpZGVyPiYmIHByb3ZpZGVyKQ0KICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4ocHJvdmlkZXIpKQ0KICAgICAgICAgICAgLCBtX3N0
YXJ0T2Zmc2V0KDApDQogICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KG1fcHJvdmlkZXItPnNvdXJj
ZSgpLmxlbmd0aCgpKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICBVbmxpbmtlZFNv
dXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyLCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQpDQogICAgICAgICAgICA6IG1fcHJvdmlkZXIoc3RkOjptb3ZlPFdURjo6
Q2hlY2tNb3ZlUGFyYW1ldGVyPihwcm92aWRlcikpDQogICAgICAgICAgICAsIG1fc3RhcnRPZmZz
ZXQoc3RhcnRPZmZzZXQpDQogICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KGVuZE9mZnNldCkNCiAg
ICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlKFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0
KQ0KICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFt
ZXRlcj4ocHJvdmlkZXIpKQ0KICAgICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0
KQ0KICAgICAgICAgICAgLCBtX2VuZE9mZnNldChlbmRPZmZzZXQpDQogICAgICAgIHsNCiAgICAg
ICAgfQ0KDQogICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3ZpZGVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0NCg0KICAgICAgICBT
b3VyY2VQcm92aWRlciYgcHJvdmlkZXIoKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICBy
ZXR1cm4gKm1fcHJvdmlkZXI7DQogICAgICAgIH0NCg0KICAgICAgICB1bnNpZ25lZCBoYXNoKCkg
Y29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0
dXJuIG1fcHJvdmlkZXItPmhhc2goKTsNCiAgICAgICAgfQ0KDQogICAgICAgIFN0cmluZ1ZpZXcg
dmlldygpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghbV9wcm92aWRlcikNCiAg
ICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOw0KICAgICAgICAgICAgcmV0dXJuIG1f
cHJvdmlkZXItPmdldFJhbmdlKG1fc3RhcnRPZmZzZXQsIG1fZW5kT2Zmc2V0KTsNCiAgICAgICAg
fQ0KICAgICAgICANCiAgICAgICAgQ1N0cmluZyB0b1VURjgoKSBjb25zdDsNCiAgICAgICAgDQog
ICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJvdmlkZXI7IH0NCiAgICAg
ICAgaW50IHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQ0KICAg
ICAgICBpbnQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0NCiAgICAg
ICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0IC0gbV9zdGFydE9mZnNl
dDsgfQ0KDQogICAgcHJvdGVjdGVkOg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsNCiAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7
DQogICAgICAgIGludCBtX2VuZE9mZnNldDsNCiAgICB9Ow0KDQp9IA0KI2xpbmUgMzIgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccGFyc2VyXFxTb3Vy
Y2VDb2RlLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQogICAgY2xhc3MgU291cmNlQ29kZSA6IHB1
YmxpYyBVbmxpbmtlZFNvdXJjZUNvZGUgew0KICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkU291
cmNlQ29kZTsNCiAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFNvdXJjZUNvZGVXaXRob3V0UHJv
dmlkZXI7DQoNCiAgICBwdWJsaWM6DQogICAgICAgIFNvdXJjZUNvZGUoKQ0KICAgICAgICAgICAg
OiBVbmxpbmtlZFNvdXJjZUNvZGUoKQ0KICAgICAgICAgICAgLCBtX2ZpcnN0TGluZShPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpKQ0KICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAg
IFNvdXJjZUNvZGUoUmVmPFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyKQ0KICAgICAgICAgICAg
OiBVbmxpbmtlZFNvdXJjZUNvZGUoc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihw
cm92aWRlcikpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIFNvdXJjZUNvZGUoUmVm
PFNvdXJjZVByb3ZpZGVyPiYmIHByb3ZpZGVyLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1
bW4pDQogICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShzdGQ6Om1vdmU8V1RGOjpDaGVj
a01vdmVQYXJhbWV0ZXI+KHByb3ZpZGVyKSkNCiAgICAgICAgICAgICwgbV9maXJzdExpbmUoT3Jk
aW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpKQ0KICAg
ICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChz
dGQ6Om1heChzdGFydENvbHVtbiwgMSkpKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAg
ICBTb3VyY2VDb2RlKFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBwcm92aWRlciwgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pDQog
ICAgICAgICAgICA6IFVubGlua2VkU291cmNlQ29kZShzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQ
YXJhbWV0ZXI+KHByb3ZpZGVyKSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkNCiAgICAgICAgICAg
ICwgbV9maXJzdExpbmUoT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0ZDo6bWF4KGZp
cnN0TGluZSwgMSkpKQ0KICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKE9yZGluYWxOdW1iZXI6
OmZyb21PbmVCYXNlZEludChzdGQ6Om1heChzdGFydENvbHVtbiwgMSkpKQ0KICAgICAgICB7DQog
ICAgICAgIH0NCg0KICAgICAgICBPcmRpbmFsTnVtYmVyIGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlyc3RMaW5lOyB9DQogICAgICAgIE9yZGluYWxOdW1iZXIgc3RhcnRDb2x1bW4oKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9DQoNCiAgICAgICAgaW50cHRyX3QgcHJvdmlk
ZXJJRCgpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghbV9wcm92aWRlcikNCiAg
ICAgICAgICAgICAgICByZXR1cm4gU291cmNlUHJvdmlkZXI6Om51bGxJRDsNCiAgICAgICAgICAg
IHJldHVybiBtX3Byb3ZpZGVyLT5hc0lEKCk7DQogICAgICAgIH0NCg0KICAgICAgICBTb3VyY2VQ
cm92aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9DQoN
CiAgICAgICAgU291cmNlQ29kZSBzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5z
aWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKSBjb25zdDsN
Cg0KICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlQ29kZSYgb3RoZXIpIGNvbnN0
DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBtX2ZpcnN0TGluZSA9PSBvdGhlci5tX2Zp
cnN0TGluZQ0KICAgICAgICAgICAgICAgICYmIG1fc3RhcnRDb2x1bW4gPT0gb3RoZXIubV9zdGFy
dENvbHVtbg0KICAgICAgICAgICAgICAgICYmIG1fcHJvdmlkZXIgPT0gb3RoZXIubV9wcm92aWRl
cg0KICAgICAgICAgICAgICAgICYmIG1fc3RhcnRPZmZzZXQgPT0gb3RoZXIubV9zdGFydE9mZnNl
dA0KICAgICAgICAgICAgICAgICYmIG1fZW5kT2Zmc2V0ID09IG90aGVyLm1fZW5kT2Zmc2V0Ow0K
ICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvdXJjZUNvZGUmIG90
aGVyKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7DQogICAgICAgIH0NCg0KICAgIHByaXZhdGU6DQogICAgICAgIE9yZGluYWxOdW1iZXIgbV9m
aXJzdExpbmU7DQogICAgICAgIE9yZGluYWxOdW1iZXIgbV9zdGFydENvbHVtbjsNCiAgICB9Ow0K
DQogICAgaW5saW5lIFNvdXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIFN0cmluZyBmaWxlbmFtZSA9IFN0cmlu
ZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb24oKSwg
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBTb3VyY2VQcm92aWRlclNvdXJj
ZVR5cGU6OlByb2dyYW0pDQogICAgew0KICAgICAgICByZXR1cm4gU291cmNlQ29kZShTdHJpbmdT
b3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgc291cmNlT3JpZ2luLCBzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KGZpbGVuYW1lKSwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlw
ZSksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9j
b2x1bW4ub25lQmFzZWRJbnQoKSk7DQogICAgfQ0KICAgIA0KICAgIGlubGluZSBTb3VyY2VDb2Rl
IFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBj
bG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pIGNvbnN0DQogICAgew0K
ICAgICAgICBzdGFydENvbHVtbiArPSAxOyANCiAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiB7IHByb3ZpZGVyKCkgfSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNl
ICsgMSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7DQogICAgfQ0KDQp9IA0KI2xpbmUgNDAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVc
XFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0K
Y2xhc3MgRGVjb2RlcjsNCmNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOw0KY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlOw0KY2xhc3MgUGFyc2VyRXJyb3I7DQpjbGFzcyBTb3VyY2VQcm92aWRlcjsN
CmNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7DQpjbGFzcyBDYWNoZWRGdW5jdGlvbkV4
ZWN1dGFibGU7DQoNCmVudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgew0KICAgIFVubGlua2VkTm9y
bWFsRnVuY3Rpb24sDQogICAgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sDQp9Ow0KDQpjbGFzcyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgew0KcHVibGlj
Og0KICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7DQogICAgZnJpZW5kIGNsYXNzIFZNOw0KICAg
IGZyaWVuZCBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7DQoNCiAgICB0eXBlZGVmIEpT
Q2VsbCBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gJnZtLnVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7DQogICAgfQ0KDQogICAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmls
aXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgT3B0aW9uYWw8Q29tcGFjdFZhcmlh
YmxlTWFwOjpIYW5kbGU+IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciBuZWVkc0Ns
YXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rv
ciA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU+KHZtLmhlYXApKQ0KICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
dm0sIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2Us
IG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2Rl
LCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzKSwgZGVyaXZlZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOw0KICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24odm0pOw0KICAgICAgICByZXR1cm4gaW5zdGFuY2U7DQogICAgfQ0KDQogICAgflVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKCk7DQoNCiAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9DQogICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFOYW1lOyB9DQogICAgdm9pZCBzZXRFY21hTmFtZShj
b25zdCBJZGVudGlmaWVyJiBuYW1lKSB7IG1fZWNtYU5hbWUgPSBuYW1lOyB9DQogICAgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckNvdW50OyB9OyAN
CiAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8U291cmNlUGFyc2VNb2RlPihtX3NvdXJjZVBhcnNlTW9kZSk7IH07DQoNCiAgICBTb3VyY2VD
b2RlIGNsYXNzU291cmNlKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChtX3JhcmVEYXRhKQ0K
ICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY2xhc3NTb3VyY2U7DQogICAgICAgIHJl
dHVybiBTb3VyY2VDb2RlKCk7DQogICAgfQ0KICAgIHZvaWQgc2V0Q2xhc3NTb3VyY2UoY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQ0KICAgIHsNCiAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX2Ns
YXNzU291cmNlID0gc291cmNlOw0KICAgIH0NCg0KICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9DQogICAgRnVuY3Rpb25Nb2Rl
IGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4o
bV9mdW5jdGlvbk1vZGUpOyB9DQogICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3Rv
cktpbmQpOyB9DQogICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9DQoNCiAgICB1bnNp
Z25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQ0KICAgIHVuc2ln
bmVkIGxpbmtlZFN0YXJ0Q29sdW1uKHVuc2lnbmVkIHBhcmVudFN0YXJ0Q29sdW1uKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkQm9keVN0YXJ0Q29sdW1uICsgKCFtX2ZpcnN0TGluZU9mZnNldCA/
IHBhcmVudFN0YXJ0Q29sdW1uIDogMSk7IH0NCiAgICB1bnNpZ25lZCBsaW5rZWRFbmRDb2x1bW4o
dW5zaWduZWQgc3RhcnRDb2x1bW4pIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRCb2R5RW5kQ29s
dW1uICsgKCFtX2xpbmVDb3VudCA/IHN0YXJ0Q29sdW1uIDogMSk7IH0NCg0KICAgIHVuc2lnbmVk
IHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVu
Y3Rpb25OYW1lU3RhcnQ7IH0NCiAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRCb2R5U3RhcnRDb2x1bW47IH0NCiAgICB1bnNpZ25l
ZCB1bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQm9keUVu
ZENvbHVtbjsgfQ0KICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydE9mZnNldDsgfQ0KICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCgpIHsgcmV0dXJuIG1fc291
cmNlTGVuZ3RoOyB9DQogICAgdW5zaWduZWQgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQ7IH0NCiAgICB1bnNpZ25lZCB0eXBlUHJv
ZmlsaW5nU3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3R5cGVQcm9maWxpbmdTdGFydE9m
ZnNldDsgfQ0KICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7IH0NCiAgICB2b2lkIHNldEludmFsaWRUeXBl
UHJvZmlsaW5nT2Zmc2V0cygpOw0KDQogICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2tGb3IoDQogICAgICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+LA0KICAgICAg
ICBQYXJzZXJFcnJvciYsIFNvdXJjZVBhcnNlTW9kZSk7DQoNCiAgICBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKA0KICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNl
cHRpb24sIA0KICAgICAgICBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBPcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOw0KDQogICAgU291cmNlQ29k
ZSBsaW5rZWRTb3VyY2VDb2RlKGNvbnN0IFNvdXJjZUNvZGUmKSBjb25zdDsNCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgU2NyaXB0RXhlY3V0
YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2Us
IE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gV1RGOjpudWxsb3B0LCBJbnRyaW5z
aWMgPSBOb0ludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSk7
DQoNCiAgICB2b2lkIGNsZWFyQ29kZShWTSYgdm0pDQogICAgew0KICAgICAgICBtX3VubGlua2Vk
Q29kZUJsb2NrRm9yQ2FsbC5jbGVhcigpOw0KICAgICAgICBtX3VubGlua2VkQ29kZUJsb2NrRm9y
Q29uc3RydWN0LmNsZWFyKCk7DQogICAgICAgIHZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2Uuc2V0LnJlbW92ZSh0aGlzKTsNCiAgICB9DQoNCiAgICB2b2lkIHJlY29yZFBhcnNlKENv
ZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcykNCiAgICB7DQog
ICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsNCiAgICAgICAgbV9oYXNDYXB0dXJlZFZhcmlh
YmxlcyA9IGhhc0NhcHR1cmVkVmFyaWFibGVzOw0KICAgIH0NCg0KICAgIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXM7IH0NCiAgICBib29sIGhhc0NhcHR1
cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlczsgfQ0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7DQoNCiAgICBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQ0KICAgIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENv
bnN0cnVjdEFiaWxpdHk+KG1fY29uc3RydWN0QWJpbGl0eSk7IH0NCiAgICBKU1BhcnNlclNjcmlw
dE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTUGFyc2VyU2Ny
aXB0TW9kZT4obV9zY3JpcHRNb2RlKTsgfQ0KICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVu
Y3Rpb24oKSBjb25zdA0KICAgIHsNCiAgICAgICAgc3dpdGNoIChjb25zdHJ1Y3RvcktpbmQoKSkg
ew0KICAgICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6Tm9uZToNCiAgICAgICAgY2FzZSBDb25z
dHJ1Y3RvcktpbmQ6Ok5ha2VkOg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBj
YXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToNCiAgICAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6
OkV4dGVuZHM6DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIGJvb2wgaXNDbGFzcygpIGNvbnN0DQogICAgew0KICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAg
IHJldHVybiAhbV9yYXJlRGF0YS0+bV9jbGFzc1NvdXJjZS5pc051bGwoKTsNCiAgICB9DQoNCiAg
ICBWYXJpYWJsZUVudmlyb25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIGlmICghbV9yYXJlRGF0YSB8fCAhbV9yYXJlRGF0YS0+bV9wYXJlbnRTY29w
ZVREWlZhcmlhYmxlcykNCiAgICAgICAgICAgIHJldHVybiBWYXJpYWJsZUVudmlyb25tZW50KCk7
DQogICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3BhcmVudFNjb3BlVERaVmFyaWFibGVzLmVu
dmlyb25tZW50KCkudG9WYXJpYWJsZUVudmlyb25tZW50KCk7DQogICAgfQ0KICAgIA0KICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VN
b2RlKHBhcnNlTW9kZSgpKTsgfQ0KDQogICAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlKCkgY29uc3Qge3JldHVybiBzdGF0aWNfY2FzdDxKU0M6OkRlcml2ZWRDb250
ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9DQoNCiAgICBTdHJpbmcgc291cmNlVVJM
RGlyZWN0aXZlKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChtX3JhcmVEYXRhKQ0KICAgICAg
ICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fc291cmNlVVJMRGlyZWN0aXZlOw0KICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7DQogICAgfQ0KICAgIFN0cmluZyBzb3VyY2VNYXBwaW5nVVJMRGlyZWN0
aXZlKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChtX3JhcmVEYXRhKQ0KICAgICAgICAgICAg
cmV0dXJuIG1fcmFyZURhdGEtPm1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsNCiAgICAgICAg
cmV0dXJuIFN0cmluZygpOw0KICAgIH0NCiAgICB2b2lkIHNldFNvdXJjZVVSTERpcmVjdGl2ZShj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkNCiAgICB7DQogICAgICAgIGVuc3VyZVJhcmVEYXRhKCku
bV9zb3VyY2VVUkxEaXJlY3RpdmUgPSBzb3VyY2VVUkw7DQogICAgfQ0KICAgIHZvaWQgc2V0U291
cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkwpDQog
ICAgew0KICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2
ZSA9IHNvdXJjZU1hcHBpbmdVUkw7DQogICAgfQ0KDQogICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseShWTSYpOw0KDQogICAgc3RydWN0IFJhcmVEYXRhIHsNCiAgICAgICAgdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBp
bnQ7DQoNCiAgICAgICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOw0KICAgICAgICBTdHJpbmcg
bV9zb3VyY2VVUkxEaXJlY3RpdmU7DQogICAgICAgIFN0cmluZyBtX3NvdXJjZU1hcHBpbmdVUkxE
aXJlY3RpdmU7DQogICAgICAgIENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlIG1fcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXM7DQogICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gbV9pbnN0YW5j
ZUZpZWxkTG9jYXRpb25zOw0KICAgIH07DQoNCiAgICBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyPihtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVy
KTsgfQ0KDQogICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9u
cygpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAobV9yYXJlRGF0YSkNCiAgICAgICAgICAgIHJl
dHVybiAmbV9yYXJlRGF0YS0+bV9pbnN0YW5jZUZpZWxkTG9jYXRpb25zOw0KICAgICAgICByZXR1
cm4gbnVsbHB0cjsNCiAgICB9DQoNCiAgICB2b2lkIHNldEluc3RhbmNlRmllbGRMb2NhdGlvbnMo
VmVjdG9yPEpTVGV4dFBvc2l0aW9uPiYmIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpDQogICAgew0K
ICAgICAgICBpZiAoaW5zdGFuY2VGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpDQogICAgICAgICAg
ICByZXR1cm47DQogICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9pbnN0YW5jZUZpZWxkTG9jYXRp
b25zID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihpbnN0YW5jZUZpZWxkTG9j
YXRpb25zKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlLCBPcHRpb25hbDxDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZT4sICBKU0M6OkRlcml2
ZWRDb250ZXh0VHlwZSwgSlNDOjpOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9vbCBpc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7DQogICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoRGVjb2RlciYsIGNvbnN0IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSYpOw0KDQogICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KDQogICAg
dm9pZCBkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJik7DQoNCiAgICBib29sIGNvZGVCbG9ja0Vk
Z2VNYXlCZVdlYWsoKSBjb25zdA0KICAgIHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBy
ZXR1cm4gVk06OnVzZVVubGlua2VkQ29kZUJsb2NrSmV0dGlzb25pbmcoKSAmJiAhbV9pc0dlbmVy
YXRlZEZyb21DYWNoZTsNCiAgICB9DQoNCiAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZU9mZnNldCA6
IDMxOw0KICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOw0KICAgIHVuc2lnbmVk
IG1fbGluZUNvdW50IDogMzE7DQogICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6
IDE7DQogICAgdW5zaWduZWQgbV91bmxpbmtlZEZ1bmN0aW9uTmFtZVN0YXJ0IDogMzE7DQogICAg
dW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7DQogICAgdW5zaWduZWQgbV91bmxpbmtl
ZEJvZHlTdGFydENvbHVtbiA6IDMxOw0KICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRGVmYXVsdENs
YXNzQ29uc3RydWN0b3IgOiAxOw0KICAgIHVuc2lnbmVkIG1fdW5saW5rZWRCb2R5RW5kQ29sdW1u
IDogMzE7DQogICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RBYmlsaXR5OiAxOw0KICAgIHVuc2lnbmVk
IG1fc3RhcnRPZmZzZXQgOiAzMTsNCiAgICB1bnNpZ25lZCBtX3NjcmlwdE1vZGU6IDE7IA0KICAg
IHVuc2lnbmVkIG1fc291cmNlTGVuZ3RoIDogMzE7DQogICAgdW5zaWduZWQgbV9zdXBlckJpbmRp
bmcgOiAxOw0KICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0IDogMzE7DQogICAg
dW5zaWduZWQgbV9pc0NhY2hlZCA6IDE7DQogICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQ7DQogICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0Ow0KICAgIHVu
c2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7DQogICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7DQog
ICAgU291cmNlUGFyc2VNb2RlIG1fc291cmNlUGFyc2VNb2RlOw0KICAgIHVuc2lnbmVkIG1fY29u
c3RydWN0b3JLaW5kIDogMjsNCiAgICB1bnNpZ25lZCBtX2Z1bmN0aW9uTW9kZSA6IDI7IA0KICAg
IHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlOiAyOw0KICAgIHVuc2lnbmVkIG1faXNHZW5l
cmF0ZWRGcm9tQ2FjaGUgOiAxOw0KICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgOiAxOw0KDQogICAgdW5pb24gew0KICAgICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7DQogICAgICAgIFJl
ZlB0cjxEZWNvZGVyPiBtX2RlY29kZXI7DQogICAgfTsNCg0KICAgIHVuaW9uIHsNCiAgICAgICAg
V3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3Q7DQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBpbnQzMl90IG1f
Y2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldDsNCiAgICAgICAgICAgIGludDMyX3QgbV9jYWNo
ZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3RPZmZzZXQ7DQogICAgICAgIH07DQogICAgfTsNCg0KICAg
IElkZW50aWZpZXIgbV9uYW1lOw0KICAgIElkZW50aWZpZXIgbV9lY21hTmFtZTsNCg0KICAgIFJh
cmVEYXRhJiBlbnN1cmVSYXJlRGF0YSgpDQogICAgew0KICAgICAgICBpZiAoKG1fcmFyZURhdGEp
KQ0KICAgICAgICAgICAgcmV0dXJuICptX3JhcmVEYXRhOw0KICAgICAgICByZXR1cm4gZW5zdXJl
UmFyZURhdGFTbG93KCk7DQogICAgfQ0KICAgIFJhcmVEYXRhJiBlbnN1cmVSYXJlRGF0YVNsb3co
KTsNCg0KICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJlRGF0YTsNCg0KcHVibGlj
Og0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pDQogICAgew0KICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0K
ICAgIH0NCg0KICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25z
dCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0
IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KfTsNCg0KfSAN
CiNsaW5lIDQxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGJ5dGVjb2RlXFxVbmxpbmtlZENvZGVCbG9jay5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVW5saW5rZWRN
ZXRhZGF0YVRhYmxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFz
cyBWTTsNCg0KdXNpbmcgTWV0YWRhdGFUYWJsZU1hbGxvYyA9IEZhc3RNYWxsb2M7DQoNCmNsYXNz
IE1ldGFkYXRhVGFibGU7DQoNCmNsYXNzIFVubGlua2VkTWV0YWRhdGFUYWJsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gew0KICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7DQogICAgZnJpZW5kIGNsYXNzIE1ldGFkYXRhVGFibGU7DQogICAg
ZnJpZW5kIGNsYXNzIENhY2hlZE1ldGFkYXRhVGFibGU7DQpwdWJsaWM6DQogICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBzX21heE1ldGFkYXRhQWxpZ25tZW50ID0gODsNCg0KICAgIHN0cnVj
dCBMaW5raW5nRGF0YSB7DQogICAgICAgIFJlZjxVbmxpbmtlZE1ldGFkYXRhVGFibGU+IHVubGlu
a2VkTWV0YWRhdGE7DQogICAgICAgIHVuc2lnbmVkIHJlZkNvdW50Ow0KICAgIH07DQoNCiAgICB+
VW5saW5rZWRNZXRhZGF0YVRhYmxlKCk7DQoNCiAgICB1bnNpZ25lZCBhZGRFbnRyeShPcGNvZGVJ
RCk7DQoNCiAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKTsNCg0KICAgIHZvaWQgZmluYWxpemUoKTsN
Cg0KICAgIFJlZlB0cjxNZXRhZGF0YVRhYmxlPiBsaW5rKCk7DQoNCiAgICBzdGF0aWMgUmVmPFVu
bGlua2VkTWV0YWRhdGFUYWJsZT4gY3JlYXRlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVubGlua2VkTWV0YWRhdGFUYWJsZSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAg
IGVudW0gRW1wdHlUYWcgeyBFbXB0eSB9Ow0KDQogICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlKCk7
DQogICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlKGJvb2wgaXMzMkJpdCk7DQogICAgVW5saW5rZWRN
ZXRhZGF0YVRhYmxlKEVtcHR5VGFnKTsNCg0KICAgIHN0YXRpYyBSZWY8VW5saW5rZWRNZXRhZGF0
YVRhYmxlPiBjcmVhdGUoYm9vbCBpczMyQml0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVW5saW5rZWRNZXRhZGF0YVRhYmxlKGlzMzJCaXQpKTsNCiAgICB9DQoNCiAgICBz
dGF0aWMgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gZW1wdHkoKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5saW5rZWRNZXRhZGF0YVRhYmxlKEVtcHR5KSk7DQogICAg
fQ0KDQogICAgdm9pZCB1bmxpbmsoTWV0YWRhdGFUYWJsZSYpOw0KDQogICAgc2l6ZV90IHNpemVJ
bkJ5dGVzKE1ldGFkYXRhVGFibGUmKTsNCg0KICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSgpIGNvbnN0
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmIChtX2lzMzJCaXQpDQogICAg
ICAgICAgICByZXR1cm4gb2Zmc2V0VGFibGUzMigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV07
DQogICAgICAgIHJldHVybiBvZmZzZXRUYWJsZTE2KClbc19vZmZzZXRUYWJsZUVudHJpZXMgLSAx
XTsNCiAgICB9DQoNCiAgICB1bnNpZ25lZCBvZmZzZXRUYWJsZVNpemUoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAobV9pczMyQml0KQ0KICAgICAgICAgICAg
cmV0dXJuIHNfb2Zmc2V0MTZUYWJsZVNpemUgKyBzX29mZnNldDMyVGFibGVTaXplOw0KICAgICAg
ICByZXR1cm4gc19vZmZzZXQxNlRhYmxlU2l6ZTsNCiAgICB9DQoNCiAgICB1c2luZyBPZmZzZXQz
MiA9IHVpbnQzMl90Ow0KICAgIHVzaW5nIE9mZnNldDE2ID0gdWludDE2X3Q7DQoNCiAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0VGFibGVFbnRyaWVzID0gNTkgKyAxOyANCg0K
ICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19vZmZzZXQxNlRhYmxlU2l6ZSA9
IHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKE9mZnNldDMyKT4oc19vZmZzZXRUYWJsZUVudHJp
ZXMgKiBzaXplb2YoT2Zmc2V0MTYpKTsNCiAgICANCiAgICANCiAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHNfb2Zmc2V0MzJUYWJsZVNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHNfbWF4
TWV0YWRhdGFBbGlnbm1lbnQ+KHNfb2Zmc2V0VGFibGVFbnRyaWVzICogc2l6ZW9mKE9mZnNldDMy
KSk7DQoNCiAgICBPZmZzZXQzMiogcHJlcHJvY2Vzc0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxPZmZzZXQzMio+KG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSk7
IH0NCiAgICB2b2lkKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3Jhd0J1ZmZlciArIHNpemVv
ZihMaW5raW5nRGF0YSk7IH0NCg0KICAgIE9mZnNldDE2KiBvZmZzZXRUYWJsZTE2KCkgY29uc3QN
CiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxP
ZmZzZXQxNio+KG1fcmF3QnVmZmVyICsgc2l6ZW9mKExpbmtpbmdEYXRhKSk7DQogICAgfQ0KICAg
IE9mZnNldDMyKiBvZmZzZXRUYWJsZTMyKCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxPZmZzZXQzMio+KG1fcmF3QnVmZmVyICsg
c2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0MTZUYWJsZVNpemUpOw0KICAgIH0NCg0KICAg
IGJvb2wgbV9oYXNNZXRhZGF0YSA6IDE7DQogICAgYm9vbCBtX2lzRmluYWxpemVkIDogMTsNCiAg
ICBib29sIG1faXNMaW5rZWQgOiAxOw0KICAgIGJvb2wgbV9pczMyQml0IDogMTsNCiAgICB1aW50
OF90KiBtX3Jhd0J1ZmZlcjsNCn07DQoNCn0gDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVW5saW5rZWRDb2RlQmxv
Y2suaCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9CaXRWZWN0b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0K
DQpuYW1lc3BhY2UgSlNDIHsNCmNsYXNzIENhY2hlZEJpdFZlY3RvcjsNCn0NCg0KbmFtZXNwYWNl
IFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmNsYXNz
IEJpdFZlY3RvciBmaW5hbCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9p
ZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0
dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQq
IHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBz
aXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJu
IGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNp
bmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1
YmxpYzogDQogICAgQml0VmVjdG9yKCkNCiAgICAgICAgOiBtX2JpdHNPclBvaW50ZXIobWFrZUlu
bGluZUJpdHMoMCkpDQogICAgew0KICAgIH0NCiAgICANCiAgICBleHBsaWNpdCBCaXRWZWN0b3Io
c2l6ZV90IG51bUJpdHMpDQogICAgICAgIDogbV9iaXRzT3JQb2ludGVyKG1ha2VJbmxpbmVCaXRz
KDApKQ0KICAgIHsNCiAgICAgICAgZW5zdXJlU2l6ZShudW1CaXRzKTsNCiAgICB9DQogICAgDQog
ICAgQml0VmVjdG9yKGNvbnN0IEJpdFZlY3RvciYgb3RoZXIpDQogICAgICAgIDogbV9iaXRzT3JQ
b2ludGVyKG1ha2VJbmxpbmVCaXRzKDApKQ0KICAgIHsNCiAgICAgICAgKCp0aGlzKSA9IG90aGVy
Ow0KICAgIH0NCg0KICAgIA0KICAgIH5CaXRWZWN0b3IoKQ0KICAgIHsNCiAgICAgICAgaWYgKGlz
SW5saW5lKCkpDQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIE91dE9mTGluZUJpdHM6OmRl
c3Ryb3kob3V0T2ZMaW5lQml0cygpKTsNCiAgICB9DQogICAgDQogICAgQml0VmVjdG9yJiBvcGVy
YXRvcj0oY29uc3QgQml0VmVjdG9yJiBvdGhlcikNCiAgICB7DQogICAgICAgIGlmIChpc0lubGlu
ZSgpICYmIG90aGVyLmlzSW5saW5lKCkpDQogICAgICAgICAgICBtX2JpdHNPclBvaW50ZXIgPSBv
dGhlci5tX2JpdHNPclBvaW50ZXI7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHNldFNsb3co
b3RoZXIpOw0KICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgfQ0KDQogICAgc2l6ZV90IHNpemUo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzSW5saW5lKCkpDQogICAgICAgICAgICByZXR1
cm4gbWF4SW5saW5lQml0cygpOw0KICAgICAgICByZXR1cm4gb3V0T2ZMaW5lQml0cygpLT5udW1C
aXRzKCk7DQogICAgfQ0KDQogICAgdm9pZCBlbnN1cmVTaXplKHNpemVfdCBudW1CaXRzKQ0KICAg
IHsNCiAgICAgICAgaWYgKG51bUJpdHMgPD0gc2l6ZSgpKQ0KICAgICAgICAgICAgcmV0dXJuOw0K
ICAgICAgICByZXNpemVPdXRPZkxpbmUobnVtQml0cyk7DQogICAgfQ0KICAgIA0KICAgIA0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHJlc2l6ZShzaXplX3QgbnVtQml0cyk7DQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgY2xlYXJBbGwoKTsNCg0KICAgIGJvb2wg
cXVpY2tHZXQoc2l6ZV90IGJpdCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgcmV0dXJuICEhKGJpdHMoKVtiaXQgLyBiaXRzSW5Qb2ludGVyKCldICYgKHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oMSkgPDwgKGJpdCAmIChiaXRzSW5Qb2ludGVyKCkgLSAxKSkpKTsNCiAg
ICB9DQogICAgDQogICAgYm9vbCBxdWlja1NldChzaXplX3QgYml0KQ0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICB1aW50cHRyX3QmIHdvcmQgPSBiaXRzKClbYml0IC8gYml0c0lu
UG9pbnRlcigpXTsNCiAgICAgICAgdWludHB0cl90IG1hc2sgPSBzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpIDw8IChiaXQgJiAoYml0c0luUG9pbnRlcigpIC0gMSkpOw0KICAgICAgICBib29sIHJl
c3VsdCA9ICEhKHdvcmQgJiBtYXNrKTsNCiAgICAgICAgd29yZCB8PSBtYXNrOw0KICAgICAgICBy
ZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCiAgICBib29sIHF1aWNrQ2xlYXIoc2l6ZV90IGJp
dCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgdWludHB0cl90JiB3b3JkID0g
Yml0cygpW2JpdCAvIGJpdHNJblBvaW50ZXIoKV07DQogICAgICAgIHVpbnRwdHJfdCBtYXNrID0g
c3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCAoYml0ICYgKGJpdHNJblBvaW50ZXIoKSAtIDEp
KTsNCiAgICAgICAgYm9vbCByZXN1bHQgPSAhISh3b3JkICYgbWFzayk7DQogICAgICAgIHdvcmQg
Jj0gfm1hc2s7DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIGJvb2wg
cXVpY2tTZXQoc2l6ZV90IGJpdCwgYm9vbCB2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmICh2YWx1
ZSkNCiAgICAgICAgICAgIHJldHVybiBxdWlja1NldChiaXQpOw0KICAgICAgICByZXR1cm4gcXVp
Y2tDbGVhcihiaXQpOw0KICAgIH0NCiAgICANCiAgICBib29sIGdldChzaXplX3QgYml0KSBjb25z
dA0KICAgIHsNCiAgICAgICAgaWYgKGJpdCA+PSBzaXplKCkpDQogICAgICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgICAgIHJldHVybiBxdWlja0dldChiaXQpOw0KICAgIH0NCg0KICAgIGJvb2wg
Y29udGFpbnMoc2l6ZV90IGJpdCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBnZXQoYml0
KTsNCiAgICB9DQogICAgDQogICAgYm9vbCBzZXQoc2l6ZV90IGJpdCkNCiAgICB7DQogICAgICAg
IGVuc3VyZVNpemUoYml0ICsgMSk7DQogICAgICAgIHJldHVybiBxdWlja1NldChiaXQpOw0KICAg
IH0NCg0KICAgIA0KICAgIA0KICAgIGJvb2wgYWRkKHNpemVfdCBiaXQpDQogICAgew0KICAgICAg
ICByZXR1cm4gIXNldChiaXQpOw0KICAgIH0NCg0KICAgIGJvb2wgZW5zdXJlU2l6ZUFuZFNldChz
aXplX3QgYml0LCBzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIGVuc3VyZVNpemUoc2l6ZSk7
DQogICAgICAgIHJldHVybiBxdWlja1NldChiaXQpOw0KICAgIH0NCg0KICAgIGJvb2wgY2xlYXIo
c2l6ZV90IGJpdCkNCiAgICB7DQogICAgICAgIGlmIChiaXQgPj0gc2l6ZSgpKQ0KICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICByZXR1cm4gcXVpY2tDbGVhcihiaXQpOw0KICAgIH0N
Cg0KICAgIGJvb2wgcmVtb3ZlKHNpemVfdCBiaXQpDQogICAgew0KICAgICAgICByZXR1cm4gY2xl
YXIoYml0KTsNCiAgICB9DQogICAgDQogICAgYm9vbCBzZXQoc2l6ZV90IGJpdCwgYm9vbCB2YWx1
ZSkNCiAgICB7DQogICAgICAgIGlmICh2YWx1ZSkNCiAgICAgICAgICAgIHJldHVybiBzZXQoYml0
KTsNCiAgICAgICAgcmV0dXJuIGNsZWFyKGJpdCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgbWVy
Z2UoY29uc3QgQml0VmVjdG9yJiBvdGhlcikNCiAgICB7DQogICAgICAgIGlmICghaXNJbmxpbmUo
KSB8fCAhb3RoZXIuaXNJbmxpbmUoKSkgew0KICAgICAgICAgICAgbWVyZ2VTbG93KG90aGVyKTsN
CiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBtX2JpdHNPclBvaW50ZXIg
fD0gb3RoZXIubV9iaXRzT3JQb2ludGVyOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgZmlsdGVyKGNvbnN0IEJpdFZlY3RvciYgb3RoZXIpDQogICAgew0KICAgICAg
ICBpZiAoIWlzSW5saW5lKCkgfHwgIW90aGVyLmlzSW5saW5lKCkpIHsNCiAgICAgICAgICAgIGZp
bHRlclNsb3cob3RoZXIpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAg
IG1fYml0c09yUG9pbnRlciAmPSBvdGhlci5tX2JpdHNPclBvaW50ZXI7DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICB9DQogICAgDQogICAgdm9pZCBleGNsdWRlKGNvbnN0IEJpdFZlY3RvciYgb3Ro
ZXIpDQogICAgew0KICAgICAgICBpZiAoIWlzSW5saW5lKCkgfHwgIW90aGVyLmlzSW5saW5lKCkp
IHsNCiAgICAgICAgICAgIGV4Y2x1ZGVTbG93KG90aGVyKTsNCiAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgfQ0KICAgICAgICBtX2JpdHNPclBvaW50ZXIgJj0gfm90aGVyLm1fYml0c09yUG9p
bnRlcjsNCiAgICAgICAgbV9iaXRzT3JQb2ludGVyIHw9IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpIDw8IG1heElubGluZUJpdHMoKSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQogICAg
DQogICAgc2l6ZV90IGJpdENvdW50KCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChpc0lubGlu
ZSgpKQ0KICAgICAgICAgICAgcmV0dXJuIGJpdENvdW50KGNsZWFuc2VJbmxpbmVCaXRzKG1fYml0
c09yUG9pbnRlcikpOw0KICAgICAgICByZXR1cm4gYml0Q291bnRTbG93KCk7DQogICAgfQ0KDQog
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChpc0lubGluZSgpKQ0K
ICAgICAgICAgICAgcmV0dXJuICFjbGVhbnNlSW5saW5lQml0cyhtX2JpdHNPclBvaW50ZXIpOw0K
ICAgICAgICByZXR1cm4gaXNFbXB0eVNsb3coKTsNCiAgICB9DQogICAgDQogICAgc2l6ZV90IGZp
bmRCaXQoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSBjb25zdA0KICAgIHsNCiAgICAgICAgc2l6
ZV90IHJlc3VsdCA9IGZpbmRCaXRGYXN0KGluZGV4LCB2YWx1ZSk7DQogICAgICAgIGlmICgwKSB7
DQogICAgICAgICAgICBzaXplX3QgZXhwZWN0ZWRSZXN1bHQgPSBmaW5kQml0U2ltcGxlKGluZGV4
LCB2YWx1ZSk7DQogICAgICAgICAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkUmVzdWx0KSB7DQog
ICAgICAgICAgICAgICAgZGF0YUxvZygiZmluZEJpdCgiLCBpbmRleCwgIiwgIiwgdmFsdWUsICIp
IG9uICIsICp0aGlzLCAiIHNob3VsZCBoYXZlIGdvdHRlbiAiLCBleHBlY3RlZFJlc3VsdCwgIiBi
dXQgZ290ICIsIHJlc3VsdCwgIlxuIik7DQogICAgICAgICAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAg
IA0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7DQogICAgDQogICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9Ow0KICAg
IGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07DQogICAgDQogICAgQml0VmVj
dG9yKEVtcHR5VmFsdWVUYWcpDQogICAgICAgIDogbV9iaXRzT3JQb2ludGVyKDApDQogICAgew0K
ICAgIH0NCiAgICANCiAgICBCaXRWZWN0b3IoRGVsZXRlZFZhbHVlVGFnKQ0KICAgICAgICA6IG1f
Yml0c09yUG9pbnRlcigxKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgYm9vbCBpc0VtcHR5VmFs
dWUoKSBjb25zdCB7IHJldHVybiAhbV9iaXRzT3JQb2ludGVyOyB9DQogICAgYm9vbCBpc0RlbGV0
ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0c09yUG9pbnRlciA9PSAxOyB9DQogICAgDQog
ICAgYm9vbCBpc0VtcHR5T3JEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHNPclBv
aW50ZXIgPD0gMTsgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRWZWN0b3Im
IG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzSW5saW5lKCkgJiYgb3RoZXIuaXNJ
bmxpbmUoKSkNCiAgICAgICAgICAgIHJldHVybiBtX2JpdHNPclBvaW50ZXIgPT0gb3RoZXIubV9i
aXRzT3JQb2ludGVyOw0KICAgICAgICByZXR1cm4gZXF1YWxzU2xvd0Nhc2Uob3RoZXIpOw0KICAg
IH0NCiAgICANCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QNCiAgICB7DQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIHVpbnRwdHJfdCB2YWx1ZTsNCiAgICAgICAgaWYgKGlz
SW5saW5lKCkpDQogICAgICAgICAgICB2YWx1ZSA9IGNsZWFuc2VJbmxpbmVCaXRzKG1fYml0c09y
UG9pbnRlcik7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHZhbHVlID0gaGFzaFNsb3dDYXNl
KCk7DQogICAgICAgIHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2godmFsdWUpOw0KICAg
IH0NCiAgICANCiAgICBjbGFzcyBpdGVyYXRvciB7DQogICAgICAgIHB1YmxpYzogdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0g
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAo
KHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm8gPSBpbnQ7DQogICAgcHVibGljOg0KICAgICAgICBpdGVyYXRvcigpDQogICAgICAgICAg
ICA6IG1fYml0VmVjdG9yKG51bGxwdHIpDQogICAgICAgICAgICAsIG1faW5kZXgoMCkNCiAgICAg
ICAgew0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpdGVyYXRvcihjb25zdCBCaXRWZWN0
b3ImIGJpdFZlY3Rvciwgc2l6ZV90IGluZGV4KQ0KICAgICAgICAgICAgOiBtX2JpdFZlY3Rvcigm
Yml0VmVjdG9yKQ0KICAgICAgICAgICAgLCBtX2luZGV4KGluZGV4KQ0KICAgICAgICB7DQogICAg
ICAgIH0NCiAgICAgICAgDQogICAgICAgIHNpemVfdCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biBtX2luZGV4OyB9DQogICAgICAgIA0KICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpDQog
ICAgICAgIHsNCiAgICAgICAgICAgIG1faW5kZXggPSBtX2JpdFZlY3Rvci0+ZmluZEJpdChtX2lu
ZGV4ICsgMSwgdHJ1ZSk7DQogICAgICAgICAgICByZXR1cm4gKnRoaXM7DQogICAgICAgIH0NCg0K
ICAgICAgICBpdGVyYXRvciBvcGVyYXRvcisrKGludCkNCiAgICAgICAgew0KICAgICAgICAgICAg
aXRlcmF0b3IgcmVzdWx0ID0gKnRoaXM7DQogICAgICAgICAgICArKygqdGhpcyk7DQogICAgICAg
ICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBpc0F0RW5kKCkg
Y29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPj0gbV9iaXRWZWN0
b3ItPnNpemUoKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0
dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAgICAgICAg
ew0KICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOw0KICAgICAgICB9DQogICAg
cHJpdmF0ZToNCiAgICAgICAgY29uc3QgQml0VmVjdG9yKiBtX2JpdFZlY3RvcjsNCiAgICAgICAg
c2l6ZV90IG1faW5kZXg7DQogICAgfTsNCg0KICAgIA0KICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIGZpbmRCaXQoMCwgdHJ1ZSkpOyB9DQogICAgaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0NCiAg
ICAgICAgDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBKU0M6OkNhY2hlZEJpdFZlY3RvcjsN
Cg0KICAgIHN0YXRpYyB1bnNpZ25lZCBiaXRzSW5Qb2ludGVyKCkNCiAgICB7DQogICAgICAgIHJl
dHVybiBzaXplb2Yodm9pZCopIDw8IDM7DQogICAgfQ0KDQogICAgc3RhdGljIHVuc2lnbmVkIG1h
eElubGluZUJpdHMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJpdHNJblBvaW50ZXIoKSAtIDE7
DQogICAgfQ0KDQogICAgc3RhdGljIHNpemVfdCBieXRlQ291bnQoc2l6ZV90IGJpdENvdW50KQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIChiaXRDb3VudCArIDcpID4+IDM7DQogICAgfQ0KDQogICAg
c3RhdGljIHVpbnRwdHJfdCBtYWtlSW5saW5lQml0cyh1aW50cHRyX3QgYml0cykNCiAgICB7DQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGJpdHMgfCAoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSA8PCBtYXhJbmxpbmVCaXRzKCkpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMg
dWludHB0cl90IGNsZWFuc2VJbmxpbmVCaXRzKHVpbnRwdHJfdCBiaXRzKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIGJpdHMgJiB+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgbWF4SW5saW5l
Qml0cygpKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHNpemVfdCBiaXRDb3VudCh1aW50cHRy
X3QgYml0cykNCiAgICB7DQogICAgICAgIGlmIChzaXplb2YodWludHB0cl90KSA9PSA0KQ0KICAg
ICAgICAgICAgcmV0dXJuIFdURjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHMp
KTsNCiAgICAgICAgcmV0dXJuIFdURjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJp
dHMpKTsNCiAgICB9DQogICAgDQogICAgc2l6ZV90IGZpbmRCaXRGYXN0KHNpemVfdCBzdGFydElu
ZGV4LCBib29sIHZhbHVlKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzSW5saW5lKCkpIHsN
CiAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IHN0YXJ0SW5kZXg7DQogICAgICAgICAgICBmaW5k
Qml0SW5Xb3JkKG1fYml0c09yUG9pbnRlciwgaW5kZXgsIG1heElubGluZUJpdHMoKSwgdmFsdWUp
Ow0KICAgICAgICAgICAgcmV0dXJuIGluZGV4Ow0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICBjb25zdCBPdXRPZkxpbmVCaXRzKiBiaXRzID0gb3V0T2ZMaW5lQml0cygpOw0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICB1aW50cHRyX3Qgc2tpcFZhbHVlID0gLShzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSBeIDEpOw0KICAgICAgICBzaXplX3QgbnVtV29yZHMg
PSBiaXRzLT5udW1Xb3JkcygpOw0KICAgICAgICANCiAgICAgICAgc2l6ZV90IHdvcmRJbmRleCA9
IHN0YXJ0SW5kZXggLyBiaXRzSW5Qb2ludGVyKCk7DQogICAgICAgIHNpemVfdCBzdGFydEluZGV4
SW5Xb3JkID0gc3RhcnRJbmRleCAtIHdvcmRJbmRleCAqIGJpdHNJblBvaW50ZXIoKTsNCiAgICAg
ICAgDQogICAgICAgIHdoaWxlICh3b3JkSW5kZXggPCBudW1Xb3Jkcykgew0KICAgICAgICAgICAg
dWludHB0cl90IHdvcmQgPSBiaXRzLT5iaXRzKClbd29yZEluZGV4XTsNCiAgICAgICAgICAgIGlm
ICh3b3JkICE9IHNraXBWYWx1ZSkgew0KICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IHN0
YXJ0SW5kZXhJbldvcmQ7DQogICAgICAgICAgICAgICAgaWYgKGZpbmRCaXRJbldvcmQod29yZCwg
aW5kZXgsIGJpdHNJblBvaW50ZXIoKSwgdmFsdWUpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1
cm4gd29yZEluZGV4ICogYml0c0luUG9pbnRlcigpICsgaW5kZXg7DQogICAgICAgICAgICB9DQog
ICAgICAgICAgICANCiAgICAgICAgICAgIHdvcmRJbmRleCsrOw0KICAgICAgICAgICAgc3RhcnRJ
bmRleEluV29yZCA9IDA7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBiaXRz
LT5udW1CaXRzKCk7DQogICAgfQ0KICAgIA0KICAgIHNpemVfdCBmaW5kQml0U2ltcGxlKHNpemVf
dCBpbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QNCiAgICB7DQogICAgICAgIHdoaWxlIChpbmRleCA8
IHNpemUoKSkgew0KICAgICAgICAgICAgaWYgKGdldChpbmRleCkgPT0gdmFsdWUpDQogICAgICAg
ICAgICAgICAgcmV0dXJuIGluZGV4Ow0KICAgICAgICAgICAgaW5kZXgrKzsNCiAgICAgICAgfQ0K
ICAgICAgICByZXR1cm4gc2l6ZSgpOw0KICAgIH0NCiAgICANCiAgICBjbGFzcyBPdXRPZkxpbmVC
aXRzIHsNCiAgICBwdWJsaWM6DQogICAgICAgIHNpemVfdCBudW1CaXRzKCkgY29uc3QgeyByZXR1
cm4gbV9udW1CaXRzOyB9DQogICAgICAgIHNpemVfdCBudW1Xb3JkcygpIGNvbnN0IHsgcmV0dXJu
IChtX251bUJpdHMgKyBiaXRzSW5Qb2ludGVyKCkgLSAxKSAvIGJpdHNJblBvaW50ZXIoKTsgfQ0K
ICAgICAgICB1aW50cHRyX3QqIGJpdHMoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
Kj4odGhpcyArIDEpOyB9DQogICAgICAgIGNvbnN0IHVpbnRwdHJfdCogYml0cygpIGNvbnN0IHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCB1aW50cHRyX3QqPih0aGlzICsgMSk7IH0NCiAgICAg
ICAgDQogICAgICAgIHN0YXRpYyBfX2RlY2xzcGVjKGRsbGltcG9ydCkgT3V0T2ZMaW5lQml0cyog
Y3JlYXRlKHNpemVfdCBudW1CaXRzKTsNCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgdm9pZCBkZXN0cm95KE91dE9mTGluZUJpdHMqKTsNCg0KICAgIHByaXZh
dGU6DQogICAgICAgIE91dE9mTGluZUJpdHMoc2l6ZV90IG51bUJpdHMpDQogICAgICAgICAgICA6
IG1fbnVtQml0cyhudW1CaXRzKQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICAgICAgDQogICAg
ICAgIHNpemVfdCBtX251bUJpdHM7DQogICAgfTsNCiAgICANCiAgICBib29sIGlzSW5saW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzT3JQb2ludGVyID4+IG1heElubGluZUJpdHMoKTsgfQ0KICAg
IA0KICAgIGNvbnN0IE91dE9mTGluZUJpdHMqIG91dE9mTGluZUJpdHMoKSBjb25zdCB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8Y29uc3QgT3V0T2ZMaW5lQml0cyo+KG1fYml0c09yUG9pbnRlciA8PCAx
KTsgfQ0KICAgIE91dE9mTGluZUJpdHMqIG91dE9mTGluZUJpdHMoKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8T3V0T2ZMaW5lQml0cyo+KG1fYml0c09yUG9pbnRlciA8PCAxKTsgfQ0KICAgIA0KICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHJlc2l6ZU91dE9mTGluZShzaXplX3QgbnVtQml0
cyk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgc2V0U2xvdyhjb25zdCBCaXRWZWN0
b3ImIG90aGVyKTsNCiAgICANCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBtZXJnZVNs
b3coY29uc3QgQml0VmVjdG9yJiBvdGhlcik7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZv
aWQgZmlsdGVyU2xvdyhjb25zdCBCaXRWZWN0b3ImIG90aGVyKTsNCiAgICBfX2RlY2xzcGVjKGRs
bGltcG9ydCkgdm9pZCBleGNsdWRlU2xvdyhjb25zdCBCaXRWZWN0b3ImIG90aGVyKTsNCiAgICAN
CiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc2l6ZV90IGJpdENvdW50U2xvdygpIGNvbnN0Ow0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGlzRW1wdHlTbG93KCkgY29uc3Q7DQogICAg
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgZXF1YWxzU2xvd0Nhc2UoY29uc3QgQml0
VmVjdG9yJiBvdGhlcikgY29uc3Q7DQogICAgYm9vbCBlcXVhbHNTbG93Q2FzZUZhc3QoY29uc3Qg
Qml0VmVjdG9yJiBvdGhlcikgY29uc3Q7DQogICAgYm9vbCBlcXVhbHNTbG93Q2FzZVNpbXBsZShj
b25zdCBCaXRWZWN0b3ImIG90aGVyKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dWludHB0cl90IGhhc2hTbG93Q2FzZSgpIGNvbnN0Ow0KICAgIA0KICAgIHVpbnRwdHJfdCogYml0
cygpDQogICAgew0KICAgICAgICBpZiAoaXNJbmxpbmUoKSkNCiAgICAgICAgICAgIHJldHVybiAm
bV9iaXRzT3JQb2ludGVyOw0KICAgICAgICByZXR1cm4gb3V0T2ZMaW5lQml0cygpLT5iaXRzKCk7
DQogICAgfQ0KICAgIA0KICAgIGNvbnN0IHVpbnRwdHJfdCogYml0cygpIGNvbnN0DQogICAgew0K
ICAgICAgICBpZiAoaXNJbmxpbmUoKSkNCiAgICAgICAgICAgIHJldHVybiAmbV9iaXRzT3JQb2lu
dGVyOw0KICAgICAgICByZXR1cm4gb3V0T2ZMaW5lQml0cygpLT5iaXRzKCk7DQogICAgfQ0KICAg
IA0KICAgIHVpbnRwdHJfdCBtX2JpdHNPclBvaW50ZXI7DQp9Ow0KDQpzdHJ1Y3QgQml0VmVjdG9y
SGFzaCB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQml0VmVjdG9yJiB2ZWN0b3Ip
IHsgcmV0dXJuIHZlY3Rvci5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBC
aXRWZWN0b3ImIGEsIGNvbnN0IEJpdFZlY3RvciYgYikgeyByZXR1cm4gYSA9PSBiOyB9DQogICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQp0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxCaXRWZWN0b3I+IDogQml0VmVjdG9ySGFzaCB7IH07
DQoNCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8Qml0VmVjdG9yPiA6IHB1YmxpYyBDdXN0
b21IYXNoVHJhaXRzPEJpdFZlY3Rvcj4geyB9Ow0KDQp9IA0KDQp1c2luZyBXVEY6OkJpdFZlY3Rv
cjsNCiNsaW5lIDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxVbmxpbmtlZENvZGVCbG9jay5oIg0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SZWZDb3Vu
dGVkQXJyYXkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KbmFt
ZXNwYWNlIFdURiB7DQoNCnVzaW5nIFJlZkNvdW50ZWRBcnJheU1hbGxvYyA9IEZhc3RNYWxsb2M7
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cyA9IER1bWJQdHJUcmFp
dHM8VD4+DQpjbGFzcyBSZWZDb3VudGVkQXJyYXkgew0KICAgIGVudW0gQ29tbW9uQ29weUNvbnN0
cnVjdG9yVGFnIHsgQ29tbW9uQ29weUNvbnN0cnVjdG9yIH07DQoNCnB1YmxpYzoNCiAgICBSZWZD
b3VudGVkQXJyYXkoKSA9IGRlZmF1bHQ7DQogICAgDQogICAgUmVmQ291bnRlZEFycmF5KGNvbnN0
IFJlZkNvdW50ZWRBcnJheSYgb3RoZXIpDQogICAgICAgIDogUmVmQ291bnRlZEFycmF5KENvbW1v
bkNvcHlDb25zdHJ1Y3Rvciwgb3RoZXIpDQogICAgeyB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlclRyYWl0cz4NCiAgICBSZWZDb3VudGVkQXJyYXkoY29uc3QgUmVmQ291bnRlZEFycmF5
PFQsIE90aGVyVHJhaXRzPiYgb3RoZXIpDQogICAgICAgIDogUmVmQ291bnRlZEFycmF5KENvbW1v
bkNvcHlDb25zdHJ1Y3Rvciwgb3RoZXIpDQogICAgeyB9DQoNCiAgICBleHBsaWNpdCBSZWZDb3Vu
dGVkQXJyYXkoc2l6ZV90IHNpemUpDQogICAgew0KICAgICAgICBpZiAoIXNpemUpIHsNCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgUHRyVHJhaXRzOjpleGNoYW5nZShtX2RhdGEsIG51bGxwdHIp
Ow0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgVCogZGF0YSA9IChz
dGF0aWNfY2FzdDxIZWFkZXIqPihSZWZDb3VudGVkQXJyYXlNYWxsb2M6Om1hbGxvYyhIZWFkZXI6
OnNpemUoKSArIHNpemVvZihUKSAqIHNpemUpKSktPnBheWxvYWQoKTsNCiAgICAgICAgbV9kYXRh
ID0gZGF0YTsNCiAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAx
Ow0KICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPSBzaXplOw0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0aWFs
aXplSWZOb25QT0QoYmVnaW4oKSwgZW5kKCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyVHJhaXRzID0gUHRyVHJhaXRzPg0KICAgIFJlZkNvdW50ZWRBcnJheTxULCBPdGhl
clRyYWl0cz4gY2xvbmUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgUmVmQ291bnRlZEFycmF5PFQs
IE90aGVyVHJhaXRzPiByZXN1bHQoc2l6ZSgpKTsNCiAgICAgICAgY29uc3QgVCogZGF0YSA9IHRo
aXMtPmRhdGEoKTsNCiAgICAgICAgVCogcmVzdWx0RGF0YSA9IHJlc3VsdC5kYXRhKCk7DQogICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHNpemUoKTsgaS0tOykNCiAgICAgICAgICAgIHJlc3VsdERh
dGFbaV0gPSBkYXRhW2ldOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIHRl
bXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPg0K
ICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQ0KICAgIHsNCiAgICAgICAgaWYgKG90aGVyLmlz
RW1wdHkoKSkgew0KICAgICAgICAgICAgUHRyVHJhaXRzOjpleGNoYW5nZShtX2RhdGEsIG51bGxw
dHIpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBU
KiBkYXRhID0gKHN0YXRpY19jYXN0PEhlYWRlcio+KFJlZkNvdW50ZWRBcnJheU1hbGxvYzo6bWFs
bG9jKEhlYWRlcjo6c2l6ZSgpICsgc2l6ZW9mKFQpICogb3RoZXIuc2l6ZSgpKSkpLT5wYXlsb2Fk
KCk7DQogICAgICAgIG1fZGF0YSA9IGRhdGE7DQogICAgICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQo
ZGF0YSktPnJlZkNvdW50ID0gMTsNCiAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+
bGVuZ3RoID0gb3RoZXIuc2l6ZSgpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIFZlY3Rv
clR5cGVPcGVyYXRpb25zPFQ+Ojp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhl
ci5lbmQoKSwgZGF0YSk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVy
VHJhaXRzID0gUHRyVHJhaXRzPg0KICAgIFJlZkNvdW50ZWRBcnJheSYgb3BlcmF0b3I9KGNvbnN0
IFJlZkNvdW50ZWRBcnJheTxULCBPdGhlclRyYWl0cz4mIG90aGVyKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGFzc2lnbjxPdGhlclRyYWl0cz4ob3RoZXIpOw0KICAgIH0NCg0KICAgIFJlZkNvdW50
ZWRBcnJheSYgb3BlcmF0b3I9KGNvbnN0IFJlZkNvdW50ZWRBcnJheSYgb3RoZXIpDQogICAgew0K
ICAgICAgICByZXR1cm4gYXNzaWduPFB0clRyYWl0cz4ob3RoZXIpOw0KICAgIH0NCg0KICAgIHRl
bXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPg0K
ICAgIFJlZkNvdW50ZWRBcnJheSYgb3BlcmF0b3I9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIpDQogICAgew0KICAgICAgICBUKiBvbGREYXRh
ID0gZGF0YSgpOw0KICAgICAgICBpZiAob3RoZXIuaXNFbXB0eSgpKQ0KICAgICAgICAgICAgUHRy
VHJhaXRzOjpleGNoYW5nZShtX2RhdGEsIG51bGxwdHIpOw0KICAgICAgICBlbHNlIHsNCiAgICAg
ICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5TWFs
bG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBzaXplb2YoVCkgKiBvdGhlci5zaXplKCkpKSkt
PnBheWxvYWQoKTsNCiAgICAgICAgICAgIG1fZGF0YSA9IGRhdGE7DQogICAgICAgICAgICBIZWFk
ZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5yZWZDb3VudCA9IDE7DQogICAgICAgICAgICBIZWFkZXI6
OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPSBvdGhlci5zaXplKCk7DQogICAgICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6dW5pbml0aWFs
aXplZENvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIGRhdGEpOw0KICAgICAgICB9DQog
ICAgICAgIGlmICghb2xkRGF0YSkNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAg
aWYgKC0tSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291bnQpDQogICAgICAgICAg
ICByZXR1cm4gKnRoaXM7DQogICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0cnVj
dChvbGREYXRhLCBvbGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVuZ3Ro
KTsNCg0KICAgICAgICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5
bG9hZChvbGREYXRhKSk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICB+UmVm
Q291bnRlZEFycmF5KCkNCiAgICB7DQogICAgICAgIGlmICghbV9kYXRhKQ0KICAgICAgICAgICAg
cmV0dXJuOw0KICAgICAgICBUKiBkYXRhID0gdGhpcy0+ZGF0YSgpOw0KICAgICAgICBpZiAoLS1I
ZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5yZWZDb3VudCkNCiAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OmRlc3RydWN0KGJlZ2luKCksIGVuZCgp
KTsNCiAgICAgICAgUmVmQ291bnRlZEFycmF5TWFsbG9jOjpmcmVlKEhlYWRlcjo6ZnJvbVBheWxv
YWQoZGF0YSkpOw0KICAgIH0NCiAgICANCiAgICB1bnNpZ25lZCByZWZDb3VudCgpIGNvbnN0DQog
ICAgew0KICAgICAgICBpZiAoIW1fZGF0YSkNCiAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAg
ICByZXR1cm4gSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKCkpLT5yZWZDb3VudDsNCiAgICB9DQog
ICAgDQogICAgc2l6ZV90IHNpemUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFtX2RhdGEp
DQogICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgcmV0dXJuIEhlYWRlcjo6ZnJvbVBheWxv
YWQoZGF0YSgpKS0+bGVuZ3RoOw0KICAgIH0NCg0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIHNpemUoKSA9PSAwOyB9DQogICAgDQogICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKFQpOyB9DQogICAgDQogICAgVCogZGF0YSgpIHsgcmV0
dXJuIFB0clRyYWl0czo6dW53cmFwKG1fZGF0YSk7IH0NCiAgICBUKiBiZWdpbigpIHsgcmV0dXJu
IGRhdGEoKTsgfQ0KICAgIFQqIGVuZCgpDQogICAgew0KICAgICAgICBpZiAoIW1fZGF0YSkNCiAg
ICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICBUKiBkYXRhID0gdGhpcy0+ZGF0YSgpOw0KICAg
ICAgICByZXR1cm4gZGF0YSArIEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aDsNCiAg
ICB9DQogICAgDQogICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
UmVmQ291bnRlZEFycmF5Kj4odGhpcyktPmRhdGEoKTsgfQ0KICAgIGNvbnN0IFQqIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWZDb3VudGVkQXJyYXkqPih0aGlzKS0+YmVnaW4o
KTsgfQ0KICAgIGNvbnN0IFQqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVmQ291
bnRlZEFycmF5Kj4odGhpcyktPmVuZCgpOyB9DQogICAgDQogICAgVCYgYXQoc2l6ZV90IGkpDQog
ICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBiZWdpbigpW2ldOw0KICAg
IH0NCiAgICANCiAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3QNCiAgICB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGJlZ2luKClbaV07DQogICAgfQ0KICAgIA0KICAg
IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIGF0KGkpOyB9DQogICAgY29uc3QgVCYg
b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0NCg0KICAgIFQmIGZp
cnN0KCkgeyByZXR1cm4gKCp0aGlzKVswXTsgfQ0KICAgIGNvbnN0IFQmIGZpcnN0KCkgY29uc3Qg
eyByZXR1cm4gKCp0aGlzKVswXTsgfQ0KICAgIFQmIGxhc3QoKSB7IHJldHVybiAoKnRoaXMpW3Np
emUoKSAtIDFdOyB9DQogICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylb
c2l6ZSgpIC0gMV07IH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHJhaXRzID0gUHRy
VHJhaXRzPg0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZDb3VudGVkQXJyYXk8VCwgT3Ro
ZXJUcmFpdHM+JiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIFQqIGRhdGEgPSBjb25zdF9j
YXN0PFQqPih0aGlzLT5kYXRhKCkpOw0KICAgICAgICBUKiBvdGhlckRhdGEgPSBjb25zdF9jYXN0
PFQqPihvdGhlci5kYXRhKCkpOw0KICAgICAgICBpZiAoZGF0YSA9PSBvdGhlckRhdGEpDQogICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgaWYgKCFkYXRhIHx8ICFvdGhlckRhdGEpDQog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IEhlYWRl
cjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aDsNCiAgICAgICAgaWYgKGxlbmd0aCAhPSBIZWFk
ZXI6OmZyb21QYXlsb2FkKG90aGVyRGF0YSktPmxlbmd0aCkNCiAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7DQog
ICAgICAgICAgICBpZiAoZGF0YVtpXSAhPSBvdGhlckRhdGFbaV0pDQogICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0K
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZDb3VudGVkQXJyYXkmIG90aGVyKSBjb25zdCB7
IHJldHVybiB0aGlzLT5vcGVyYXRvcj09PFB0clRyYWl0cz4ob3RoZXIpOyB9DQogICAgDQpwcml2
YXRlOg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHJhaXRzID0gUHRyVHJhaXRzPg0KICAg
IFJlZkNvdW50ZWRBcnJheSYgYXNzaWduKGNvbnN0IFJlZkNvdW50ZWRBcnJheTxULCBPdGhlclRy
YWl0cz4mIG90aGVyKQ0KICAgIHsNCiAgICAgICAgVCogb2xkRGF0YSA9IGRhdGEoKTsNCiAgICAg
ICAgVCogb3RoZXJEYXRhID0gY29uc3RfY2FzdDxUKj4ob3RoZXIuZGF0YSgpKTsNCiAgICAgICAg
aWYgKG90aGVyRGF0YSkNCiAgICAgICAgICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQob3RoZXJEYXRh
KS0+cmVmQ291bnQrKzsNCiAgICAgICAgbV9kYXRhID0gb3RoZXJEYXRhOw0KDQogICAgICAgIGlm
ICghb2xkRGF0YSkNCiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgaWYgKC0tSGVh
ZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291bnQpDQogICAgICAgICAgICByZXR1cm4g
KnRoaXM7DQogICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0cnVjdChvbGREYXRh
LCBvbGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVuZ3RoKTsNCg0KICAg
ICAgICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5bG9hZChvbGRE
YXRhKSk7DQogICAgICAgIHJldHVybiAqdGhpczsNCiAgICB9DQoNCiAgICBzdHJ1Y3QgSGVhZGVy
IHsNCiAgICAgICAgdW5zaWduZWQgcmVmQ291bnQ7DQogICAgICAgIHVuc2lnbmVkIGxlbmd0aDsN
CiAgICAgICAgDQogICAgICAgIHN0YXRpYyBzaXplX3Qgc2l6ZSgpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIHJldHVybiAoc2l6ZW9mKEhlYWRlcikgKyA3KSAmIH43Ow0KICAgICAgICB9DQogICAg
ICAgIA0KICAgICAgICBUKiBwYXlsb2FkKCkNCiAgICAgICAgew0KICAgICAgICAgICAgY2hhciog
cmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBzaXplKCk7DQogICAgICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4o
cmVzdWx0KTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgc3RhdGljIEhlYWRlciogZnJv
bVBheWxvYWQoVCogcGF5bG9hZCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8SGVhZGVyKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocGF5bG9hZCkgLSBz
aXplKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIGNvbnN0IEhlYWRlciogZnJvbVBh
eWxvYWQoY29uc3QgVCogcGF5bG9hZCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGZy
b21QYXlsb2FkKGNvbnN0X2Nhc3Q8VCo+KHBheWxvYWQpKTsNCiAgICAgICAgfQ0KICAgIH07DQoN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclRyYWl0cz4NCiAgICBSZWZDb3VudGVkQXJyYXko
Q29tbW9uQ29weUNvbnN0cnVjdG9yVGFnLCBjb25zdCBSZWZDb3VudGVkQXJyYXk8VCwgT3RoZXJU
cmFpdHM+JiBvdGhlcikNCiAgICAgICAgOiBtX2RhdGEoY29uc3RfY2FzdDxUKj4ob3RoZXIuZGF0
YSgpKSkNCiAgICB7DQogICAgICAgIGlmIChtX2RhdGEpDQogICAgICAgICAgICBIZWFkZXI6OmZy
b21QYXlsb2FkKGRhdGEoKSktPnJlZkNvdW50Kys7DQogICAgfQ0KDQogICAgZnJpZW5kIGNsYXNz
IEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3Rv
cmFnZVR5cGUgbV9kYXRhIHsgbnVsbHB0ciB9Ow0KfTsNCg0KfSANCg0KdXNpbmcgV1RGOjpSZWZD
b3VudGVkQXJyYXk7DQojbGluZSA0NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVW5saW5rZWRDb2RlQmxvY2suaCINCg0KDQoNCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsNCmNsYXNz
IEJ5dGVjb2RlUmV3cml0ZXI7DQpjbGFzcyBDb2RlQmxvY2s7DQpjbGFzcyBEZWJ1Z2dlcjsNCmNs
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsNCmNsYXNzIFBhcnNlckVycm9yOw0KY2xhc3MgU2NyaXB0
RXhlY3V0YWJsZTsNCmNsYXNzIFNvdXJjZUNvZGU7DQpjbGFzcyBTb3VyY2VQcm92aWRlcjsNCmNs
YXNzIFVubGlua2VkQ29kZUJsb2NrOw0KY2xhc3MgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I7
DQpjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOw0KY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7DQpzdHJ1Y3QgRXhlY3V0YWJsZUluZm87DQplbnVtIGNsYXNzIExpbmtUaW1l
Q29uc3RhbnQgOiBpbnQzMl90Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPg0K
Y2xhc3MgQ2FjaGVkQ29kZUJsb2NrOw0KDQp0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkVmFsdWVQ
cm9maWxlOw0KdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5UHJvZmlsZTsNCnR5cGVkZWYg
dW5zaWduZWQgVW5saW5rZWRBcnJheUFsbG9jYXRpb25Qcm9maWxlOw0KdHlwZWRlZiB1bnNpZ25l
ZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOw0KdHlwZWRlZiB1bnNpZ25lZCBVbmxp
bmtlZExMSW50Q2FsbExpbmtJbmZvOw0KdXNpbmcgQ29uc3RhbnRJZGVudGlmaWVyU2V0RW50cnkg
PSBzdGQ6OnBhaXI8SWRlbnRpZmllclNldCwgdW5zaWduZWQ+Ow0KDQpzdHJ1Y3QgVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUgew0KICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7DQogICAgICAgIGlu
dDMyX3QgYnJhbmNoT2Zmc2V0Ow0KICAgIH07DQoNCiAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7DQogICAgU3Ry
aW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7DQoNCiAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRG
b3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQ0KICAgIHsN
CiAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG9mZnNldFRh
YmxlLmVuZCgpOw0KICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9j
ID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7DQogICAgICAgIGlmIChsb2MgPT0gZW5kKQ0KICAg
ICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7DQogICAgICAgIHJldHVybiBsb2MtPnZhbHVl
LmJyYW5jaE9mZnNldDsNCiAgICB9DQoNCn07DQoNCnN0cnVjdCBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSB7DQogICAgUmVmQ291bnRlZEFycmF5PGludDMyX3Q+IGJyYW5jaE9mZnNldHM7DQogICAg
aW50MzJfdCBtaW47DQoNCiAgICBpbnQzMl90IG9mZnNldEZvclZhbHVlKGludDMyX3QgdmFsdWUs
IGludDMyX3QgZGVmYXVsdE9mZnNldCk7DQogICAgdm9pZCBhZGQoaW50MzJfdCBrZXksIGludDMy
X3Qgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgaWYgKCFicmFuY2hPZmZzZXRzW2tleV0pDQogICAg
ICAgICAgICBicmFuY2hPZmZzZXRzW2tleV0gPSBvZmZzZXQ7DQogICAgfQ0KfTsNCg0KY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsNCnB1YmxpYzoNCiAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFj
ZUFjY2Vzcz4NCiAgICBzdGF0aWMgdm9pZCBzdWJzcGFjZUZvcihWTSYpDQogICAgew0KICAgICAg
ICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNy
YXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTIwLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVW5saW5rZWRDb2RlQmxvY2suaCIsICBf
X0ZVTkNUSU9OX18gICwgMTAzICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9DQoNCiAgICBlbnVt
IHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07DQoNCiAgICBib29sIGlzQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0NCiAgICBib29sIHVzZXNFdmFs
KCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQ0KICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQ0KICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9k
ZSgpKTsgfQ0KICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRl
eHRUeXBlKTsgfQ0KICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxFdmFsQ29udGV4dFR5cGU+KG1fZXZhbENvbnRleHRUeXBlKTsg
fQ0KICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cnJvd0Z1bmN0aW9uQ29udGV4dDsgfQ0KICAgIGJvb2wgaXNDbGFzc0NvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9DQogICAgYm9vbCBoYXNUYWlsQ2FsbHMoKSBjb25z
dCB7IHJldHVybiBtX2hhc1RhaWxDYWxsczsgfQ0KICAgIHZvaWQgc2V0SGFzVGFpbENhbGxzKCkg
eyBtX2hhc1RhaWxDYWxscyA9IHRydWU7IH0NCiAgICBib29sIGFsbG93RGlyZWN0RXZhbENhY2hl
KCkgY29uc3QgeyByZXR1cm4gIShtX2ZlYXR1cmVzICYgTm9FdmFsQ2FjaGVGZWF0dXJlKTsgfQ0K
DQogICAgYm9vbCBoYXNFeHByZXNzaW9uSW5mbygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbkluZm8u
c2l6ZSgpOyB9DQogICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEV4cHJlc3Npb25SYW5nZUluZm8+
JiBleHByZXNzaW9uSW5mbygpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbkluZm87IH0NCg0KICAgIGJv
b2wgaGFzQ2hlY2twb2ludHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NoZWNrcG9pbnRzOyB9DQog
ICAgdm9pZCBzZXRIYXNDaGVja3BvaW50cygpIHsgbV9oYXNDaGVja3BvaW50cyA9IHRydWU7IH0N
Cg0KICAgIA0KICAgIHZvaWQgc2V0VGhpc1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB0aGlzUmVn
aXN0ZXIpIHsgbV90aGlzUmVnaXN0ZXIgPSB0aGlzUmVnaXN0ZXI7IH0NCiAgICB2b2lkIHNldFNj
b3BlUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIpIHsgbV9zY29wZVJlZ2lz
dGVyID0gc2NvcGVSZWdpc3RlcjsgfQ0KDQogICAgDQogICAgdm9pZCBzZXROdW1QYXJhbWV0ZXJz
KGludCBuZXdWYWx1ZSkgeyBtX251bVBhcmFtZXRlcnMgPSBuZXdWYWx1ZTsgfQ0KICAgIHVuc2ln
bmVkIG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnM7IH0NCg0K
ICAgIA0KDQogICAgc2l6ZV90IG51bWJlck9mSWRlbnRpZmllcnMoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXJzLnNpemUoKTsgfQ0KICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIo
aW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJzW2luZGV4XTsgfQ0KICAgIGNv
bnN0IFJlZkNvdW50ZWRBcnJheTxJZGVudGlmaWVyPiYgaWRlbnRpZmllcnMoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXJzOyB9DQoNCiAgICBCaXRWZWN0b3ImIGJpdFZlY3RvcihzaXplX3Qg
aSkgeyAoKHZvaWQpMCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2JpdFZlY3RvcnNbaV07IH0NCg0K
ICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFu
dFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnM7IH0NCiAgICBjb25zdCBX
cml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHJl
ZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tyZWcudG9Db25zdGFudEluZGV4
KCldOyB9DQogICAgX19mb3JjZWlubGluZSBKU1ZhbHVlIGdldENvbnN0YW50KFZpcnR1YWxSZWdp
c3RlciByZWcpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbcmVnLnRvQ29uc3Rh
bnRJbmRleCgpXS5nZXQoKTsgfQ0KICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSB7IHJl
dHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsgfQ0KDQogICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDb25zdGFudElkZW50aWZpZXJTZXRzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
RGF0YSA/IG1fcmFyZURhdGEtPm1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5zaXplKCkgOiAwOyB9
DQogICAgY29uc3QgUmVmQ291bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiYg
Y29uc3RhbnRJZGVudGlmaWVyU2V0cygpIHsgKCh2b2lkKTApOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9jb25zdGFudElkZW50aWZpZXJTZXRzOyB9DQoNCiAgICANCiAgICBzaXplX3QgbnVtYmVyT2ZK
dW1wVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMuc2l6ZSgpOyB9DQogICAg
dW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdl
dHNbaW5kZXhdOyB9DQogICAgdW5zaWduZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25zdCB7IHJldHVy
biBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQ0KDQogICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFu
ZGxlckZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCwgUmVxdWlyZWRIYW5kbGVyID0gUmVx
dWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsNCiAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5k
bGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6
QW55SGFuZGxlcik7DQoNCiAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQ0KDQogICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9j
b25zdHJ1Y3RvcktpbmQpOyB9DQogICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9DQog
ICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxKU1BhcnNlclNjcmlwdE1vZGU+KG1fc2NyaXB0TW9kZSk7IH0NCg0KICAgIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdDsNCg0KICAgIGludCBudW1DYWxs
ZWVMb2NhbHMoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZUxvY2FsczsgfQ0KICAgIGludCBu
dW1WYXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1WYXJzOyB9DQoNCiAgICANCg0KICAgIHNpemVf
dCBudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8g
bV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNpemUoKSA6IDA7IH0NCiAgICBVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7ICgodm9p
ZCkwKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsg
fQ0KDQogICAgc2l6ZV90IG51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpIDogMDsgfQ0KICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hK
dW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgKCh2b2lkKTApOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9DQoNCiAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25EZWNsKGludCBpbmRleCkgeyByZXR1cm4gbV9mdW5j
dGlvbkRlY2xzW2luZGV4XS5nZXQoKTsgfQ0KICAgIHNpemVfdCBudW1iZXJPZkZ1bmN0aW9uRGVj
bHMoKSB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyB9DQogICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhwcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZnVuY3Rp
b25FeHByc1tpbmRleF0uZ2V0KCk7IH0NCiAgICBzaXplX3QgbnVtYmVyT2ZGdW5jdGlvbkV4cHJz
KCkgeyByZXR1cm4gbV9mdW5jdGlvbkV4cHJzLnNpemUoKTsgfQ0KDQogICAgDQogICAgc2l6ZV90
IG51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8g
bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycy5zaXplKCkgOiAwOyB9DQogICAgVW5saW5r
ZWRIYW5kbGVySW5mbyYgZXhjZXB0aW9uSGFuZGxlcihpbnQgaW5kZXgpIHsgKCh2b2lkKTApOyBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpbmRleF07IH0NCg0KICAgIENv
ZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29kZVR5cGU+KG1f
Y29kZVR5cGUpOyB9DQoNCiAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV90aGlzUmVnaXN0ZXI7IH0NCiAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdp
c3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsgfQ0KDQogICAgYm9vbCBoYXNS
YXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7IH0NCg0KICAgIGludCBs
aW5lTnVtYmVyRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4KTsNCg0KICAgIHZvaWQgZXhw
cmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4LCBpbnQmIGRpdm90LA0K
ICAgICAgICBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUs
IHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0Ow0KDQogICAgYm9vbCB0eXBlUHJvZmlsZXJFeHByZXNz
aW9uSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25l
ZCYgc3RhcnREaXZvdCwgdW5zaWduZWQmIGVuZERpdm90KTsNCg0KICAgIHZvaWQgcmVjb3JkUGFy
c2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzLCB1bnNp
Z25lZCBsaW5lQ291bnQsIHVuc2lnbmVkIGVuZENvbHVtbikNCiAgICB7DQogICAgICAgIG1fZmVh
dHVyZXMgPSBmZWF0dXJlczsNCiAgICAgICAgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA9IGhhc0Nh
cHR1cmVkVmFyaWFibGVzOw0KICAgICAgICBtX2xpbmVDb3VudCA9IGxpbmVDb3VudDsNCiAgICAg
ICAgDQogICAgICAgIG1fZW5kQ29sdW1uID0gZW5kQ29sdW1uOw0KICAgIH0NCg0KICAgIFN0cmlu
Z0ltcGwqIHNvdXJjZVVSTERpcmVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMRGly
ZWN0aXZlLmdldCgpOyB9DQogICAgU3RyaW5nSW1wbCogc291cmNlTWFwcGluZ1VSTERpcmVjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZS5nZXQoKTsgfQ0K
ICAgIHZvaWQgc2V0U291cmNlVVJMRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSB7
IG1fc291cmNlVVJMRGlyZWN0aXZlID0gc291cmNlVVJMLmltcGwoKTsgfQ0KICAgIHZvaWQgc2V0
U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkwp
IHsgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTC5pbXBsKCk7
IH0NCg0KICAgIENvZGVGZWF0dXJlcyBjb2RlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2Zl
YXR1cmVzOyB9DQogICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXM7IH0NCiAgICB1bnNpZ25lZCBsaW5lQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQ0KICAgIF9fZm9yY2VpbmxpbmUgdW5zaWduZWQgc3Rh
cnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiAwOyB9DQogICAgdW5zaWduZWQgZW5kQ29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0NCg0KICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29k
ZU9mZnNldHMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0czsNCiAg
ICB9DQogICAgYm9vbCBoYXNPcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cygpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9v
cFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5pc0VtcHR5KCk7DQogICAgfQ0KDQog
ICAgdm9pZCBkdW1wRXhwcmVzc2lvblJhbmdlSW5mbygpOyANCg0KICAgIGJvb2wgd2FzQ29tcGls
ZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUdlbmVyYXRpb25N
b2RlLmNvbnRhaW5zKENvZGVHZW5lcmF0aW9uTW9kZTo6RGVidWdnZXIpOyB9DQogICAgYm9vbCB3
YXNDb21waWxlZFdpdGhUeXBlUHJvZmlsZXJPcGNvZGVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
R2VuZXJhdGlvbk1vZGUuY29udGFpbnMoQ29kZUdlbmVyYXRpb25Nb2RlOjpUeXBlUHJvZmlsZXIp
OyB9DQogICAgYm9vbCB3YXNDb21waWxlZFdpdGhDb250cm9sRmxvd1Byb2ZpbGVyT3Bjb2Rlcygp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUdlbmVyYXRpb25Nb2RlLmNvbnRhaW5zKENvZGVHZW5lcmF0
aW9uTW9kZTo6Q29udHJvbEZsb3dQcm9maWxlcik7IH0NCiAgICBPcHRpb25TZXQ8Q29kZUdlbmVy
YXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVHZW5l
cmF0aW9uTW9kZTsgfQ0KDQogICAgVHJpU3RhdGUgZGlkT3B0aW1pemUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4obV9kaWRPcHRpbWl6ZSk7IH0NCiAgICB2b2lkIHNldERp
ZE9wdGltaXplKFRyaVN0YXRlIGRpZE9wdGltaXplKSB7IG1fZGlkT3B0aW1pemUgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGlkT3B0aW1pemUpOyB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG1heEFnZSA9IDc7DQoNCiAgICB1bnNpZ25lZCBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2FnZTsgfQ0KICAgIHZvaWQgcmVzZXRBZ2UoKSB7IG1fYWdlID0gMDsgfQ0KDQogICAgTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgaWYgKG1fcmFyZURhdGEpDQogICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8TmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI+KG1fcmFyZURhdGEtPm1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIpOw0KICAgICAgICByZXR1cm4gTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXI6Ok5vOw0KICAgIH0NCg0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Ow0K
DQogICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9j
ayogY29kZUJsb2NrKQ0KICAgIHsNCiAgICAgICAgaWYgKG1fbGl2ZW5lc3MpDQogICAgICAgICAg
ICByZXR1cm4gKm1fbGl2ZW5lc3M7DQogICAgICAgIHJldHVybiBsaXZlbmVzc0FuYWx5c2lzU2xv
dyhjb2RlQmxvY2spOw0KICAgIH0NCg0KDQogICAgYm9vbCBoYXNFeGl0U2l0ZShjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwgY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRl
KSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bG9ja2VyLCBzaXRlKTsNCiAgICB9DQoNCiAgICBib29sIGhhc0V4aXRTaXRlKGNvbnN0IERGRzo6
RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkNCiAgICB7DQogICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIobV9sb2NrKTsNCiAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKGxvY2tlciwgc2l0
ZSk7DQogICAgfQ0KDQogICAgREZHOjpFeGl0UHJvZmlsZSYgZXhpdFByb2ZpbGUoKSB7IHJldHVy
biBtX2V4aXRQcm9maWxlOyB9DQojbGluZSAyOTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFVubGlua2VkQ29kZUJsb2NrLmgiDQoN
CiAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0
YS5nZXQoKTsgfQ0KDQogICAgc2l6ZV90IG1ldGFkYXRhU2l6ZUluQnl0ZXMoKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIG1fbWV0YWRhdGEtPnNpemVJbkJ5dGVzKCk7DQogICAgfQ0KDQoNCnByb3Rl
Y3RlZDoNCiAgICBVbmxpbmtlZENvZGVCbG9jayhWTSYsIFN0cnVjdHVyZSosIENvZGVUeXBlLCBj
b25zdCBFeGVjdXRhYmxlSW5mbyYsIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+KTsNCg0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+DQogICAgVW5saW5rZWRDb2RlQmxv
Y2soRGVjb2RlciYsIFN0cnVjdHVyZSosIGNvbnN0IENhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tU
eXBlPiYpOw0KDQogICAgflVubGlua2VkQ29kZUJsb2NrKCk7DQoNCiAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkNCiAgICB7DQogICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsN
CiAgICB9DQoNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7DQog
ICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yOw0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFRyYWl0cz4NCiAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JCYXNl
Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4NCiAgICBmcmllbmQgY2xh
c3MgQ2FjaGVkQ29kZUJsb2NrOw0KDQogICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KGNvbnN0IEFic3RyYWN0TG9ja2VyJikNCiAgICB7DQogICAgICAgIGlmICghbV9yYXJlRGF0YSkN
CiAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOw0KICAgIH0N
Cg0KICAgIHZvaWQgZ2V0TGluZUFuZENvbHVtbihjb25zdCBFeHByZXNzaW9uUmFuZ2VJbmZvJiwg
dW5zaWduZWQmIGxpbmUsIHVuc2lnbmVkJiBjb2x1bW4pIGNvbnN0Ow0KICAgIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJsb2NrKik7DQoNCg0KICAg
IFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsNCiAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9z
Y29wZVJlZ2lzdGVyOw0KDQogICAgdW5zaWduZWQgbV91c2VzRXZhbCA6IDE7DQogICAgdW5zaWdu
ZWQgbV9pc0NvbnN0cnVjdG9yIDogMTsNCiAgICB1bnNpZ25lZCBtX2hhc0NhcHR1cmVkVmFyaWFi
bGVzIDogMTsNCiAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsNCiAgICB1bnNp
Z25lZCBtX3N1cGVyQmluZGluZyA6IDE7DQogICAgdW5zaWduZWQgbV9zY3JpcHRNb2RlOiAxOw0K
ICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7DQogICAgdW5zaWduZWQg
bV9pc0NsYXNzQ29udGV4dCA6IDE7DQogICAgdW5zaWduZWQgbV9oYXNUYWlsQ2FsbHMgOiAxOw0K
ICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsNCiAgICB1bnNpZ25lZCBtX2Rlcml2
ZWRDb250ZXh0VHlwZSA6IDI7DQogICAgdW5zaWduZWQgbV9ldmFsQ29udGV4dFR5cGUgOiAyOw0K
ICAgIHVuc2lnbmVkIG1fY29kZVR5cGUgOiAyOw0KICAgIHVuc2lnbmVkIG1fZGlkT3B0aW1pemUg
OiAyOw0KICAgIHVuc2lnbmVkIG1fYWdlIDogMzsNCiAgICBzdGF0aWNfYXNzZXJ0KCgoMVUgPDwg
MykgLSAxKSA+PSBtYXhBZ2UpOw0KICAgIGJvb2wgbV9oYXNDaGVja3BvaW50cyA6IDE7DQpwdWJs
aWM6DQogICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7DQpwcml2YXRlOg0KICAgIENvZGVGZWF0
dXJlcyBtX2ZlYXR1cmVzIHsgMCB9Ow0KICAgIFNvdXJjZVBhcnNlTW9kZSBtX3BhcnNlTW9kZTsN
CiAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBtX2NvZGVHZW5lcmF0aW9uTW9kZTsN
Cg0KICAgIHVuc2lnbmVkIG1fbGluZUNvdW50IHsgMCB9Ow0KICAgIHVuc2lnbmVkIG1fZW5kQ29s
dW1uIHsgMHhmZmZmZmZmZiB9Ow0KDQogICAgaW50IG1fbnVtVmFycyB7IDAgfTsNCiAgICBpbnQg
bV9udW1DYWxsZWVMb2NhbHMgeyAwIH07DQogICAgaW50IG1fbnVtUGFyYW1ldGVycyB7IDAgfTsN
Cg0KICAgIFBhY2tlZFJlZlB0cjxTdHJpbmdJbXBsPiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsNCiAg
ICBQYWNrZWRSZWZQdHI8U3RyaW5nSW1wbD4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOw0K
DQogICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRh
cmdldHM7DQogICAgUmVmPFVubGlua2VkTWV0YWRhdGFUYWJsZT4gbV9tZXRhZGF0YTsNCiAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOw0KICAgIHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3M7DQoNCg0K
DQogICAgREZHOjpFeGl0UHJvZmlsZSBtX2V4aXRQcm9maWxlOw0KI2xpbmUgMzc5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxVbmxp
bmtlZENvZGVCbG9jay5oIg0KDQogICAgDQogICAgUmVmQ291bnRlZEFycmF5PElkZW50aWZpZXI+
IG1faWRlbnRpZmllcnM7DQogICAgUmVmQ291bnRlZEFycmF5PFdyaXRlQmFycmllcjxVbmtub3du
Pj4gbV9jb25zdGFudFJlZ2lzdGVyczsNCiAgICBSZWZDb3VudGVkQXJyYXk8U291cmNlQ29kZVJl
cHJlc2VudGF0aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsNCiAgICB1
c2luZyBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgPSBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJy
aWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPj47DQogICAgRnVuY3Rpb25FeHByZXNzaW9u
VmVjdG9yIG1fZnVuY3Rpb25EZWNsczsNCiAgICBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3IgbV9m
dW5jdGlvbkV4cHJzOw0KDQpwdWJsaWM6DQogICAgc3RydWN0IFJhcmVEYXRhIHsNCiAgICAgICAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2
b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2Nh
dGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFs
bG9jZWQgPSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlz
TWFjcm8gPSBpbnQ7DQoNCiAgICAgICAgUmVmQ291bnRlZEFycmF5PFVubGlua2VkSGFuZGxlcklu
Zm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7DQoNCiAgICAgICAgDQogICAgICAgIFJlZkNvdW50ZWRB
cnJheTxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOw0KICAgICAg
ICBSZWZDb3VudGVkQXJyYXk8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlczsNCg0KICAgICAgICBSZWZDb3VudGVkQXJyYXk8RXhwcmVzc2lvblJhbmdlSW5m
bzo6RmF0UG9zaXRpb24+IG1fZXhwcmVzc2lvbkluZm9GYXRQb3NpdGlvbnM7DQoNCiAgICAgICAg
c3RydWN0IFR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZSB7DQogICAgICAgICAgICB1bnNpZ25l
ZCBtX3N0YXJ0RGl2b3Q7DQogICAgICAgICAgICB1bnNpZ25lZCBtX2VuZERpdm90Ow0KICAgICAg
ICB9Ow0KICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFu
Z2U+IG1fdHlwZVByb2ZpbGVySW5mb01hcDsNCiAgICAgICAgUmVmQ291bnRlZEFycmF5PEluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNl
dHM7DQogICAgICAgIFJlZkNvdW50ZWRBcnJheTxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsNCiAg
ICAgICAgUmVmQ291bnRlZEFycmF5PENvbnN0YW50SWRlbnRpZmllclNldEVudHJ5PiBtX2NvbnN0
YW50SWRlbnRpZmllclNldHM7DQoNCiAgICAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplciA6IDE7DQogICAgfTsNCg0KICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQpOw0KICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNv
bnN0IEluc3RydWN0aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIG91dE9mTGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOw0KICAgIH0N
Cg0KcHJpdmF0ZToNCiAgICB1c2luZyBPdXRPZkxpbmVKdW1wVGFyZ2V0cyA9IEhhc2hNYXA8SW5z
dHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCwgaW50PjsNCg0KICAgIE91dE9mTGluZUp1bXBUYXJnZXRz
IG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7DQogICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBt
X3JhcmVEYXRhOw0KICAgIFJlZkNvdW50ZWRBcnJheTxFeHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4
cHJlc3Npb25JbmZvOw0KDQpwcm90ZWN0ZWQ6DQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6
ZShKU0NlbGwqLCBWTSYpOw0KDQpwdWJsaWM6DQogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6
OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCn07DQoNCn0NCiNs
aW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXEV4ZWN1dGFibGVCYXNlLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNz
IENvZGVCbG9jazsNCmNsYXNzIEV2YWxDb2RlQmxvY2s7DQpjbGFzcyBGdW5jdGlvbkNvZGVCbG9j
azsNCmNsYXNzIEpTU2NvcGU7DQpjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOw0KY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOw0KY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsNCmNsYXNz
IFByb2dyYW1Db2RlQmxvY2s7DQoNCmVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxh
dGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07DQoNCmlubGluZSBib29sIGlzQ2FsbChDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpDQp7DQogICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwp
DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gZmFsc2U7
DQp9DQoNCmNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIEpTQ2VsbCB7DQogICAgZnJpZW5k
IGNsYXNzIEpJVDsNCiAgICBmcmllbmQgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSopOw0KDQpwcm90ZWN0ZWQ6DQogICAg
RXhlY3V0YWJsZUJhc2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICAgICAgOiBK
U0NlbGwodm0sIHN0cnVjdHVyZSkNCiAgICB7DQogICAgfQ0KDQogICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0pDQogICAgew0KICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7DQog
ICAgfQ0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsNCiAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7DQoN
CiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7DQogICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsNCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIHZvaWQgc3Vic3BhY2VGb3IoVk0m
KSB7IH0NCiAgICAgICAgDQogICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXph
dGlvbktpbmQpIGNvbnN0Ow0KDQogICAgYm9vbCBpc0V2YWxFeGVjdXRhYmxlKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiB0eXBlKCkgPT0gRXZhbEV4ZWN1dGFibGVUeXBlOw0KICAgIH0N
CiAgICBib29sIGlzRnVuY3Rpb25FeGVjdXRhYmxlKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJl
dHVybiB0eXBlKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlVHlwZTsNCiAgICB9DQogICAgYm9vbCBp
c1Byb2dyYW1FeGVjdXRhYmxlKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiB0eXBlKCkg
PT0gUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOw0KICAgIH0NCiAgICBib29sIGlzTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVR5cGU7DQogICAgfQ0KICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25z
dA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBOYXRpdmVFeGVjdXRhYmxlVHlwZTsN
CiAgICB9DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ2VsbFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgfQ0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJu
ICZzX2luZm87IH07DQoNCnB1YmxpYzoNCiAgICBSZWY8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gKm1faml0Q29kZUZvckNhbGw7DQogICAgfQ0KDQogICAgUmVmPEpJVENvZGU+IGdlbmVyYXRl
ZEpJVENvZGVGb3JDb25zdHJ1Y3QoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICByZXR1cm4gKm1faml0Q29kZUZvckNvbnN0cnVjdDsNCiAgICB9DQogICAgICAgIA0K
ICAgIFJlZjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQ0K
ICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKTsN
CiAgICB9DQoNCiAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZW50cnlw
b2ludEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5
KQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYgKGFyaXR5
ID09IE11c3RDaGVja0FyaXR5KSB7DQogICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsNCiAgICAg
ICAgICAgIGNhc2UgQ29kZUZvckNhbGw6DQogICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2spDQogICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAg
ICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6DQogICAgICAg
ICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiByZXN1bHQg
PSBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaykNCiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4g
cmVzdWx0ID0gZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHkp
Ow0KICAgICAgICBpZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsNCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7DQogICAgICAgICAgICBjYXNlIENvZGVGb3JDYWxs
Og0KICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IHJlc3Vs
dDsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0
cnVjdDoNCiAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVj
ayA9IHJlc3VsdDsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoDQogICAgICAgIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkNCiAgICB7DQogICAgICAgIHN3aXRjaCAoa2luZCkgew0KICAgICAg
ICBjYXNlIENvZGVGb3JDYWxsOg0KICAgICAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEV4ZWN1dGFibGVCYXNlKj4oMHg0MDAwKS0+
bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKSkgLSAweDQwMDApOw0KICAgICAgICBjYXNl
IENvZGVGb3JDb25zdHJ1Y3Q6DQogICAgICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RXhlY3V0YWJsZUJhc2UqPigweDQwMDApLT5t
X2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaykpIC0gMHg0MDAwKTsNCiAgICAgICAg
fQ0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJG
ZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTczLCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxFeGVjdXRhYmxlQmFzZS5o
IiwgIF9fRlVOQ1RJT05fXyAgLCAxMDQgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1
cm4gMDsNCiAgICB9DQogICAgDQogICAgYm9vbCBoYXNKSVRDb2RlRm9yQ2FsbCgpIGNvbnN0Ow0K
ICAgIGJvb2wgaGFzSklUQ29kZUZvckNvbnN0cnVjdCgpIGNvbnN0Ow0KDQogICAgYm9vbCBoYXNK
SVRDb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QNCiAgICB7DQogICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQ0KICAgICAgICAgICAgcmV0dXJuIGhhc0pJVENv
ZGVGb3JDYWxsKCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGhhc0pJVENv
ZGVGb3JDb25zdHJ1Y3QoKTsNCiAgICB9DQoNCiAgICANCiAgICBJbnRyaW5zaWMgaW50cmluc2lj
KCkgY29uc3Q7DQogICAgICAgIA0KICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzQ2FsbChraW5k
KSkNCiAgICAgICAgICAgIHJldHVybiBpbnRyaW5zaWMoKTsNCiAgICAgICAgcmV0dXJuIE5vSW50
cmluc2ljOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsN
CiAgICAgICAgDQpwcm90ZWN0ZWQ6DQogICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZUZvckNh
bGw7DQogICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZUZvckNvbnN0cnVjdDsNCiAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrOw0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjazsNCn07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxFeGVj
dXRhYmxlQmFzZUlubGluZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTmF0aXZlRXhlY3V0YWJsZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBOYXRpdmVFeGVjdXRhYmxlIGZpbmFs
IDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsNCiAgICBmcmllbmQgY2xhc3MgSklUOw0KICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBF
eGVjdXRhYmxlQmFzZSBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoN
CiAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKFZNJiwgUmVmPEpJVENvZGU+JiYg
Y2FsbFRodW5rLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgUmVmPEpJVENvZGU+JiYgY29uc3RydWN0
VGh1bmssIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBjb25zdCBTdHJpbmcmIG5h
bWUpOw0KDQogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsNCiAgICANCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gJnZtLm5h
dGl2ZUV4ZWN1dGFibGVTcGFjZTsNCiAgICB9DQoNCiAgICBDb2RlQmxvY2tIYXNoIGhhc2hGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7DQoNCiAgICBUYWdnZWROYXRpdmVGdW5jdGlv
biBmdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb247IH0NCiAgICBUYWdnZWROYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0b3I7IH0N
CiAgICAgICAgDQogICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb25Gb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQ0KICAgIHsNCiAgICAgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpDQogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKTsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICByZXR1cm4gY29uc3RydWN0b3IoKTsNCiAgICB9DQogICAgICAgIA0KICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpDQogICAgew0KICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkN
CiAgICAgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRl
cnByZXRfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oMHg0MDAwKS0+bV9mdW5jdGlvbikpIC0gMHg0
MDAwKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nh
c3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KDB4NDAw
MCktPm1fY29uc3RydWN0b3IpKSAtIDB4NDAwMCk7DQogICAgfQ0KDQogICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
KTsNCiAgICAgICAgDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5m
byBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
KiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIGNvbnN0IFN0cmluZyYgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQ0KDQogICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUq
IHNpZ25hdHVyZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsNCiAgICBJbnRyaW5z
aWMgaW50cmluc2ljKCkgY29uc3Q7DQoNCnByaXZhdGU6DQogICAgTmF0aXZlRXhlY3V0YWJsZShW
TSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3Rv
cik7DQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZjxKSVRDb2RlPiYmIGNhbGxUaHVu
aywgUmVmPEpJVENvZGU+JiYgY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYgbmFtZSk7DQoN
CiAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uOw0KICAgIFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIG1fY29uc3RydWN0b3I7DQoNCiAgICBTdHJpbmcgbV9uYW1lOw0KfTsNCg0KfSANCiNs
aW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXEV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTY3JpcHRFeGVj
dXRhYmxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpTQXJyYXk7
DQpjbGFzcyBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjsNCmNsYXNzIElzb0NlbGxTZXQ7DQoN
CmNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2Ugew0KcHVibGlj
Og0KICAgIHR5cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsNCiAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7DQoNCiAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOw0KDQogICAgdXNpbmcgVGVtcGxhdGVPYmplY3RN
YXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBXcml0ZUJhcnJpZXI8SlNBcnJheT4sIFdURjo6SW50SGFz
aDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+
PjsNCiAgICAgICAgDQogICAgQ29kZUJsb2NrSGFzaCBoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQpIGNvbnN0Ow0KDQogICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2U7IH0NCiAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlLnByb3ZpZGVySUQoKTsgfQ0KICAgIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNl
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+c291cmNlT3JpZ2lu
KCk7IH0NCiAgICANCiAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTCgpOyB9DQogICAgaW50IGZpcnN0TGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7IH0NCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IGxhc3RMaW5lKCkgY29uc3Q7DQogICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5zdGFydENvbHVtbigpLm9u
ZUJhc2VkSW50KCk7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdW5zaWduZWQgZW5kQ29s
dW1uKCkgY29uc3Q7DQoNCiAgICBPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlcihWTSYp
IGNvbnN0Ow0KICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdTdGFydE9mZnNldChWTSYpIGNvbnN0
Ow0KICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQoVk0mKSBjb25zdDsNCg0KICAg
IGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgRXZhbEZlYXR1cmU7
IH0NCiAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYg
QXJndW1lbnRzRmVhdHVyZTsgfQ0KICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQ0KICAgIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxE
ZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQ0KICAgIEV2YWxDb250
ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmFs
Q29udGV4dFR5cGU+KG1fZXZhbENvbnRleHRUeXBlKTsgfQ0KICAgIGJvb2wgaXNJblN0cmljdENv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0N
Cg0KICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0g
dmFsdWU7IH0NCiAgICB2b2lkIHNldE5ldmVyT3B0aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25ldmVy
T3B0aW1pemUgPSB2YWx1ZTsgfQ0KICAgIHZvaWQgc2V0TmV2ZXJGVExPcHRpbWl6ZShib29sIHZh
bHVlKSB7IG1fbmV2ZXJGVExPcHRpbWl6ZSA9IHZhbHVlOyB9DQogICAgdm9pZCBzZXREaWRUcnlU
b0VudGVySW5Mb29wKGJvb2wgdmFsdWUpIHsgbV9kaWRUcnlUb0VudGVySW5Mb29wID0gdmFsdWU7
IH0NCiAgICB2b2lkIHNldENhblVzZU9TUkV4aXRGdXp6aW5nKGJvb2wgdmFsdWUpIHsgbV9jYW5V
c2VPU1JFeGl0RnV6emluZyA9IHZhbHVlOyB9DQogICAgYm9vbCBuZXZlcklubGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmV2ZXJJbmxpbmU7IH0NCiAgICBib29sIG5ldmVyT3B0aW1pemUoKSBjb25z
dCB7IHJldHVybiBtX25ldmVyT3B0aW1pemU7IH0NCiAgICBib29sIG5ldmVyRlRMT3B0aW1pemUo
KSBjb25zdCB7IHJldHVybiBtX25ldmVyRlRMT3B0aW1pemU7IH0NCiAgICBib29sIGRpZFRyeVRv
RW50ZXJJbkxvb3AoKSBjb25zdCB7IHJldHVybiBtX2RpZFRyeVRvRW50ZXJJbkxvb3A7IH0NCiAg
ICBib29sIGlzSW5saW5pbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiAhbmV2ZXJJbmxpbmUo
KTsgfQ0KICAgIGJvb2wgaXNPa1RvT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAhbmV2ZXJPcHRp
bWl6ZSgpOyB9DQogICAgYm9vbCBjYW5Vc2VPU1JFeGl0RnV6emluZygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FuVXNlT1NSRXhpdEZ1enppbmc7IH0NCiAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uOyB9DQogICAg
DQogICAgYm9vbCogYWRkcmVzc09mRGlkVHJ5VG9FbnRlckluTG9vcCgpIHsgcmV0dXJuICZtX2Rp
ZFRyeVRvRW50ZXJJbkxvb3A7IH0NCg0KICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcygpIGNvbnN0
IHsgcmV0dXJuIG1fZmVhdHVyZXM7IH0NCiAgICAgICAgDQogICAgcHJvdGVjdGVkOiBzdGF0aWMg
X19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJs
aWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0
dXJuICZzX2luZm87IH07DQoNCiAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcywgYm9v
bCBoYXNDYXB0dXJlZFZhcmlhYmxlcywgaW50IGxhc3RMaW5lLCB1bnNpZ25lZCBlbmRDb2x1bW4p
Ow0KICAgIHZvaWQgaW5zdGFsbENvZGUoQ29kZUJsb2NrKik7DQogICAgdm9pZCBpbnN0YWxsQ29k
ZShWTSYsIENvZGVCbG9jayosIENvZGVUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsNCiAg
ICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKU0Z1
bmN0aW9uKiwgSlNTY29wZSosIEV4Y2VwdGlvbiomKTsNCiAgICBDb2RlQmxvY2sqIG5ld1JlcGxh
Y2VtZW50Q29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpOw0KDQogICAgdm9pZCBj
bGVhckNvZGUoSXNvQ2VsbFNldCYpOw0KDQogICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7DQogICAgfQ0KDQogICAgYm9vbCBo
YXNKSVRDb2RlRm9yQ2FsbCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9qaXRDb2Rl
Rm9yQ2FsbDsNCiAgICB9DQogICAgYm9vbCBoYXNKSVRDb2RlRm9yQ29uc3RydWN0KCkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBtX2ppdENvZGVGb3JDb25zdHJ1Y3Q7DQogICAgfQ0KDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEV4ZWN1dGFibGVUeXBlPg0KICAgIEV4Y2VwdGlvbiogcHJlcGFyZUZvckV4ZWN1dGlvbihWTSYs
IEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2Nr
KiYgcmVzdWx0Q29kZUJsb2NrKTsNCg0KICAgIFNjcmlwdEV4ZWN1dGFibGUqIHRvcExldmVsRXhl
Y3V0YWJsZSgpOw0KICAgIEpTQXJyYXkqIGNyZWF0ZVRlbXBsYXRlT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqKTsNCg0KcHJpdmF0ZToNCiAgICBmcmll
bmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7DQogICAgRXhjZXB0aW9uKiBwcmVwYXJlRm9yRXhlY3V0
aW9uSW1wbChWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgQ29kZUJsb2NrKiYpOw0KDQogICAgYm9vbCBoYXNDbGVhcmFibGVDb2RlKFZNJikgY29uc3Q7
DQoNCiAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsN
Cg0KcHJvdGVjdGVkOg0KICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25z
dCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBl
LCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgSW50cmluc2ljKTsNCg0KICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOw0K
DQoNCg0KDQojbGluZSAxNDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcU2NyaXB0RXhlY3V0YWJsZS5oIg0KICAgIH0NCg0KICAgIHZv
aWQgcmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFy
aWFibGVzKQ0KICAgIHsNCiAgICAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOw0KICAgICAgICBt
X2hhc0NhcHR1cmVkVmFyaWFibGVzID0gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7DQogICAgfQ0KDQog
ICAgc3RhdGljIFRlbXBsYXRlT2JqZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcEltcGwo
c3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWN0TWFwPiYgZGVzdCk7DQoNCiAgICBTb3VyY2VD
b2RlIG1fc291cmNlOw0KICAgIEludHJpbnNpYyBtX2ludHJpbnNpYyB7IE5vSW50cmluc2ljIH07
DQogICAgYm9vbCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AgeyBmYWxzZSB9Ow0KICAgIENvZGVGZWF0
dXJlcyBtX2ZlYXR1cmVzOw0KICAgIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IG1fY29k
ZUdlbmVyYXRpb25Nb2RlRm9yR2VuZXJhdG9yQm9keTsNCiAgICBib29sIG1faGFzQ2FwdHVyZWRW
YXJpYWJsZXMgOiAxOw0KICAgIGJvb2wgbV9uZXZlcklubGluZSA6IDE7DQogICAgYm9vbCBtX25l
dmVyT3B0aW1pemUgOiAxOw0KICAgIGJvb2wgbV9uZXZlckZUTE9wdGltaXplIDogMTsNCiAgICBi
b29sIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7DQogICAgYm9vbCBtX2NhblVzZU9TUkV4
aXRGdXp6aW5nIDogMTsNCiAgICBib29sIG1fY29kZUZvckdlbmVyYXRvckJvZHlXYXNHZW5lcmF0
ZWQgOiAxOw0KICAgIGJvb2wgbV9pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gOiAxOw0KICAgIHVu
c2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsgDQogICAgdW5zaWduZWQgbV9ldmFsQ29u
dGV4dFR5cGUgOiAyOyANCn07DQoNCn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxFeGVjdXRhYmxlQmFzZUlubGlu
ZXMuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmlubGluZSBJbnRyaW5zaWMgRXhlY3V0YWJsZUJh
c2U6OmludHJpbnNpYygpIGNvbnN0DQp7DQogICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpDQogICAg
ICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgTmF0aXZlRXhlY3V0YWJsZSo+KHRoaXMpLT5pbnRyaW5z
aWMoKTsNCiAgICByZXR1cm4ganNDYXN0PGNvbnN0IFNjcmlwdEV4ZWN1dGFibGUqPih0aGlzKS0+
aW50cmluc2ljKCk7DQp9DQoNCmlubGluZSBib29sIEV4ZWN1dGFibGVCYXNlOjpoYXNKSVRDb2Rl
Rm9yQ2FsbCgpIGNvbnN0DQp7DQogICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpDQogICAgICAgIHJl
dHVybiB0cnVlOw0KICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgU2NyaXB0RXhlY3V0YWJsZSo+KHRo
aXMpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpOw0KfQ0KDQppbmxpbmUgYm9vbCBFeGVjdXRhYmxlQmFz
ZTo6aGFzSklUQ29kZUZvckNvbnN0cnVjdCgpIGNvbnN0DQp7DQogICAgaWYgKGlzSG9zdEZ1bmN0
aW9uKCkpDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgU2Ny
aXB0RXhlY3V0YWJsZSo+KHRoaXMpLT5oYXNKSVRDb2RlRm9yQ29uc3RydWN0KCk7DQp9DQoNCn0g
DQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxieXRlY29kZVxcQ2FsbFZhcmlhbnQuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRnVuY3Rpb25FeGVjdXRh
YmxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENvZGVCbG9jazsN
CmNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCg0KY2xhc3MgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgew0KcHVibGljOg0KICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsNCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0uZXhl
Y3V0YWJsZVRvQ29kZUJsb2NrRWRnZVNwYWNlOw0KICAgIH0NCg0KICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5
cGUpOw0KDQogICAgc3RhdGljIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGNyZWF0ZShWTSYs
IENvZGVCbG9jayopOw0KICAgIA0KICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpD
bGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNs
YXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9DQogICAgDQogICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KICAgIHN0
YXRpYyB2b2lkIHZpc2l0T3V0cHV0Q29uc3RyYWludHMoSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsN
CiAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7DQogICAgDQogICAgc3RhdGlj
IENvZGVCbG9jayogdW53cmFwKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2UpDQogICAg
ew0KICAgICAgICBpZiAoIWVkZ2UpDQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAg
ICAgcmV0dXJuIGVkZ2UtPmNvZGVCbG9jaygpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgQ29k
ZUJsb2NrKiBkZWFjdGl2YXRlQW5kVW53cmFwKEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVk
Z2UpOw0KICAgIA0KICAgIHN0YXRpYyBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlKiB3cmFwKENv
ZGVCbG9jayogY29kZUJsb2NrKTsNCiAgICANCiAgICBzdGF0aWMgRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZSogd3JhcEFuZEFjdGl2YXRlKENvZGVCbG9jayogY29kZUJsb2NrKTsNCiAgICANCnBy
aXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCg0KICAgIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UoVk0mLCBDb2RlQmxvY2sqKTsNCg0KICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsNCg0KICAgIHZvaWQgYWN0aXZhdGUoKTsNCiAgICB2b2lkIGRlYWN0
aXZhdGUoKTsNCiAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7DQogICAgDQogICAgdm9pZCBydW5D
b25zdHJhaW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU2xvdFZpc2l0b3ImKTsN
CiAgICANCiAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsNCn07DQoNCn0g
DQoNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEZ1bmN0aW9uRXhlY3V0YWJsZS5oIg0KDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpzdHJ1Y3QgRnVuY3Rpb25PdmVycmlkZUluZm87DQoNCmNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsNCiAgICBmcmllbmQg
Y2xhc3MgSklUOw0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQpwdWJs
aWM6DQogICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7DQogICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkN
CiAgICB7DQogICAgICAgIHJldHVybiAmdm0uZnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7
DQogICAgfQ0KDQogICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIElu
dHJpbnNpYyBpbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKQ0KICAgIHsN
CiAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgaW50cmluc2ljLCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24pOw0KICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSwg
dG9wTGV2ZWxFeGVjdXRhYmxlKTsNCiAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7DQogICAgfQ0K
ICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKA0KICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUm
LCANCiAgICAgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIs
IE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7
DQoNCiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOw0KICAgICAgICANCiAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlKCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS5nZXQoKTsNCiAgICB9DQoNCiAg
ICANCiAgICANCiAgICANCiAgICBGdW5jdGlvbkNvZGVCbG9jayogZWl0aGVyQ29kZUJsb2NrKCkN
CiAgICB7DQogICAgICAgIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UqIGVkZ2U7DQogICAgICAg
IGlmIChtX2NvZGVCbG9ja0ZvckNhbGwpDQogICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxvY2tG
b3JDYWxsLmdldCgpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBlZGdlID0gbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QuZ2V0KCk7DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rp
b25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAoZWRnZSkpOw0K
ICAgIH0NCiAgICAgICAgDQogICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuICEhbV9jb2RlQmxvY2tGb3JDYWxsOw0KICAgIH0NCg0KICAgIEZ1
bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkNCiAgICB7DQogICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tF
ZGdlOjp1bndyYXAobV9jb2RlQmxvY2tGb3JDYWxsLmdldCgpKSk7DQogICAgfQ0KDQogICAgYm9v
bCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4g
ISFtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsNCiAgICB9DQoNCiAgICBGdW5jdGlvbkNvZGVCbG9j
ayogY29kZUJsb2NrRm9yQ29uc3RydWN0KCkNCiAgICB7DQogICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndy
YXAobV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpKTsNCiAgICB9DQogICAgICAgIA0KICAg
IGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQ0KICAgIHsN
CiAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpDQogICAgICAgICAgICByZXR1cm4gaXNH
ZW5lcmF0ZWRGb3JDYWxsKCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGlz
R2VuZXJhdGVkRm9yQ29uc3RydWN0KCk7DQogICAgfQ0KICAgICAgICANCiAgICBGdW5jdGlvbkNv
ZGVCbG9jayogY29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkNCiAgICB7
DQogICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQ0KICAgICAgICAgICAgcmV0dXJuIGNv
ZGVCbG9ja0ZvckNhbGwoKTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gY29k
ZUJsb2NrRm9yQ29uc3RydWN0KCk7DQogICAgfQ0KDQogICAgRnVuY3Rpb25Db2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpOw0KICAgICAgICANCiAg
ICBGdW5jdGlvbkNvZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9y
KGtpbmQpOw0KICAgIH0NCg0KICAgIFJlZlB0cjxUeXBlU2V0PiByZXR1cm5TdGF0ZW1lbnRUeXBl
U2V0KCkgDQogICAgew0KICAgICAgICBSYXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0
YSgpOw0KICAgICAgICBpZiAoIXJhcmVEYXRhLm1fcmV0dXJuU3RhdGVtZW50VHlwZVNldCkNCiAg
ICAgICAgICAgIHJhcmVEYXRhLm1fcmV0dXJuU3RhdGVtZW50VHlwZVNldCA9IFR5cGVTZXQ6OmNy
ZWF0ZSgpOw0KICAgICAgICByZXR1cm4gcmFyZURhdGEubV9yZXR1cm5TdGF0ZW1lbnRUeXBlU2V0
Ow0KICAgIH0NCiAgICAgICAgDQogICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQ0KICAgIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNC
dWlsdGluRnVuY3Rpb24oKTsgfQ0KICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5
KCk7IH0NCiAgICBib29sIGlzQ2xhc3MoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+aXNDbGFzcygpOyB9DQogICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9
DQogICAgYm9vbCBpc0dldHRlcigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2V0dGVyTW9kZTsgfQ0KICAgIGJvb2wgaXNTZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU7IH0NCiAgICBi
b29sIGlzR2VuZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gaXNHZW5lcmF0b3JQYXJzZU1vZGUocGFy
c2VNb2RlKCkpOyB9DQogICAgYm9vbCBpc0FzeW5jR2VuZXJhdG9yKCkgY29uc3QgeyByZXR1cm4g
aXNBc3luY0dlbmVyYXRvclBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0NCiAgICBib29sIGlzTWV0
aG9kKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRo
b2RNb2RlOyB9DQogICAgYm9vbCBoYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkgY29u
c3QNCiAgICB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0
Q29udGV4dCgpICYmIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rp
b25Nb2RlICYmICFpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOw0KICAgIH0NCiAgICBib29s
IGhhc1Byb3RvdHlwZVByb3BlcnR5KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBTb3Vy
Y2VQYXJzZU1vZGVTZXQoDQogICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0
aW9uTW9kZSwNCiAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUs
DQogICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1v
ZGUsDQogICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RN
b2RlLA0KICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJG
dW5jdGlvbk1vZGUsDQogICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9y
V3JhcHBlck1ldGhvZE1vZGUsDQogICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2Vu
ZXJhdG9yQm9keU1vZGUNCiAgICAgICAgKS5jb250YWlucyhwYXJzZU1vZGUoKSkgfHwgaXNDbGFz
cygpOw0KICAgIH0NCiAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgp
OyB9DQogICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9DQog
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5uYW1lKCk7IH0NCiAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1f
dW5saW5rZWRFeGVjdXRhYmxlLT5lY21hTmFtZSgpOyB9DQogICAgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291
bnQoKTsgfSANCiAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV91bmxpbmtlZEV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpOyB9DQogICAgSlNQYXJzZXJTY3JpcHRN
b2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+c2Ny
aXB0TW9kZSgpOyB9DQogICAgU291cmNlQ29kZSBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpOyB9DQoNCiAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7DQogICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90bykNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oRnVuY3Rpb25FeGVjdXRhYmxlVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0T3ZlcnJp
ZGVMaW5lTnVtYmVyKGludCBvdmVycmlkZUxpbmVOdW1iZXIpDQogICAgew0KICAgICAgICBpZiAo
b3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xKSB7DQogICAgICAgICAgICBpZiAoKG1fcmFyZURhdGEp
KQ0KICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3ZlcnJpZGVMaW5lTnVtYmVyID0gV1RG
OjpudWxsb3B0Ow0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIGVuc3Vy
ZVJhcmVEYXRhKCkubV9vdmVycmlkZUxpbmVOdW1iZXIgPSBvdmVycmlkZUxpbmVOdW1iZXI7DQog
ICAgfQ0KDQogICAgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgaWYgKChtX3JhcmVEYXRhKSkNCiAgICAgICAgICAgIHJldHVybiBtX3JhcmVE
YXRhLT5tX292ZXJyaWRlTGluZU51bWJlcjsNCiAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsN
CiAgICB9DQoNCiAgICBpbnQgbGluZUNvdW50KCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICgo
bV9yYXJlRGF0YSkpDQogICAgICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saW5lQ291bnQ7
DQogICAgICAgIHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7DQogICAg
fQ0KDQogICAgaW50IGVuZENvbHVtbigpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoKG1fcmFy
ZURhdGEpKQ0KICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fZW5kQ29sdW1uOw0KICAg
ICAgICByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmtlZEVuZENvbHVtbihtX3NvdXJj
ZS5zdGFydENvbHVtbigpLm9uZUJhc2VkSW50KCkpOw0KICAgIH0NCg0KICAgIGludCBmaXJzdExp
bmUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHNvdXJjZSgpLmZpcnN0TGluZSgpLm9u
ZUJhc2VkSW50KCk7DQogICAgfQ0KDQogICAgaW50IGxhc3RMaW5lKCkgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBmaXJzdExpbmUoKSArIGxpbmVDb3VudCgpOw0KICAgIH0NCg0KICAgIHVu
c2lnbmVkIHR5cGVQcm9maWxpbmdTdGFydE9mZnNldChWTSYpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCk7DQogICAgfQ0KDQogICAgdW5zaWdu
ZWQgdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICgo
bV9yYXJlRGF0YSkpDQogICAgICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV90eXBlUHJvZmls
aW5nU3RhcnRPZmZzZXQ7DQogICAgICAgIHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCk7DQogICAgfQ0KDQogICAgdW5zaWduZWQgdHlwZVByb2Zp
bGluZ0VuZE9mZnNldChWTSYpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gdHlwZVByb2Zp
bGluZ0VuZE9mZnNldCgpOw0KICAgIH0NCg0KICAgIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRP
ZmZzZXQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKChtX3JhcmVEYXRhKSkNCiAgICAgICAg
ICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7DQogICAgICAg
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpOw0K
ICAgIH0NCg0KICAgIHVuc2lnbmVkIHBhcmFtZXRlcnNTdGFydE9mZnNldCgpIGNvbnN0DQogICAg
ew0KICAgICAgICBpZiAoKG1fcmFyZURhdGEpKQ0KICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPm1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0Ow0KICAgICAgICByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpOw0KICAgIH0NCg0KICAgIHZvaWQgb3Zl
cnJpZGVJbmZvKGNvbnN0IEZ1bmN0aW9uT3ZlcnJpZGVJbmZvJik7DQoNCiAgICBwcm90ZWN0ZWQ6
IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29u
c3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9
Ow0KDQogICAgSW5mZXJyZWRWYWx1ZTxKU0Z1bmN0aW9uPiYgc2luZ2xldG9uKCkNCiAgICB7DQog
ICAgICAgIHJldHVybiBtX3NpbmdsZXRvbjsNCiAgICB9DQoNCiAgICB2b2lkIG5vdGlmeUNyZWF0
aW9uKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIHJlYXNvbikNCiAg
ICB7DQogICAgICAgIG1fc2luZ2xldG9uLm5vdGlmeVdyaXRlKHZtLCB0aGlzLCBmdW5jdGlvbiwg
cmVhc29uKTsNCiAgICB9DQoNCiAgICANCiAgICBTdHJ1Y3R1cmUqIGNhY2hlZFBvbHlQcm90b1N0
cnVjdHVyZSgpDQogICAgew0KICAgICAgICBpZiAoKG1fcmFyZURhdGEpKQ0KICAgICAgICAgICAg
cmV0dXJuIG1fcmFyZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlLmdldCgpOw0KICAg
ICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQogICAgdm9pZCBzZXRDYWNoZWRQb2x5UHJvdG9T
dHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICB7DQogICAgICAgIGVu
c3VyZVJhcmVEYXRhKCkubV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBz
dHJ1Y3R1cmUpOw0KICAgIH0NCg0KICAgIElubGluZVdhdGNocG9pbnRTZXQmIGVuc3VyZVBvbHlQ
cm90b1dhdGNocG9pbnQoKQ0KICAgIHsNCiAgICAgICAgaWYgKCFtX3BvbHlQcm90b1dhdGNocG9p
bnQpDQogICAgICAgICAgICBtX3BvbHlQcm90b1dhdGNocG9pbnQgPSBCb3g8SW5saW5lV2F0Y2hw
b2ludFNldD46OmNyZWF0ZShJc1dhdGNoZWQpOw0KICAgICAgICByZXR1cm4gKm1fcG9seVByb3Rv
V2F0Y2hwb2ludDsNCiAgICB9DQoNCiAgICBCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4gc2hhcmVk
UG9seVByb3RvV2F0Y2hwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2lu
dDsgfQ0KDQogICAgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV90b3BMZXZlbEV4ZWN1dGFibGUuZ2V0KCk7IH0NCg0KICAgIFRlbXBsYXRlT2Jq
ZWN0TWFwJiBlbnN1cmVUZW1wbGF0ZU9iamVjdE1hcChWTSYpOw0KDQogICAgdm9pZCBmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseShWTSYpOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsNCiAgICBGdW5jdGlvbkV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2Rl
JiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBJbnRyaW5zaWMsIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKTsNCiAgICANCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2Ny
aXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlKTsNCg0KICAgIGZyaWVuZCBjbGFzcyBT
Y3JpcHRFeGVjdXRhYmxlOw0KDQogICAgc3RydWN0IFJhcmVEYXRhIHsNCiAgICAgICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
eyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQg
PSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8g
PSBpbnQ7DQogICAgICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7
DQogICAgICAgIHVuc2lnbmVkIG1fbGluZUNvdW50Ow0KICAgICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsNCiAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwg
LTE+PiBtX292ZXJyaWRlTGluZU51bWJlcjsNCiAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJz
U3RhcnRPZmZzZXQgeyAwIH07DQogICAgICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0IHsgMHhmZmZmZmZmZiB9Ow0KICAgICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdF
bmRPZmZzZXQgeyAweGZmZmZmZmZmIH07DQogICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0
ZU9iamVjdE1hcD4gbV90ZW1wbGF0ZU9iamVjdE1hcDsNCiAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmU7DQogICAgfTsNCg0KICAgIFJhcmVE
YXRhJiBlbnN1cmVSYXJlRGF0YSgpDQogICAgew0KICAgICAgICBpZiAoKG1fcmFyZURhdGEpKQ0K
ICAgICAgICAgICAgcmV0dXJuICptX3JhcmVEYXRhOw0KICAgICAgICByZXR1cm4gZW5zdXJlUmFy
ZURhdGFTbG93KCk7DQogICAgfQ0KICAgIFJhcmVEYXRhJiBlbnN1cmVSYXJlRGF0YVNsb3coKTsN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJl
RGF0YTsNCiAgICBXcml0ZUJhcnJpZXI8U2NyaXB0RXhlY3V0YWJsZT4gbV90b3BMZXZlbEV4ZWN1
dGFibGU7DQogICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtX3Vu
bGlua2VkRXhlY3V0YWJsZTsNCiAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2Nr
RWRnZT4gbV9jb2RlQmxvY2tGb3JDYWxsOw0KICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsNCiAgICBJbmZlcnJlZFZhbHVl
PEpTRnVuY3Rpb24+IG1fc2luZ2xldG9uOw0KICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBt
X3BvbHlQcm90b1dhdGNocG9pbnQ7DQp9Ow0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENhbGxWYXJpYW50
LmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcSlNGdW5jdGlvbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEZ1bmN0aW9u
UmFyZURhdGEuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEludGVybmFsRnVuY3Rpb25BbGxvY2F0
aW9uUHJvZmlsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3Mg
SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlIHsNCnB1YmxpYzoNCiAgICBzdGF0aWMg
aW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZSgpIHsgcmV0dXJuIChyZWludGVycHJl
dF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZSo+KDB4NDAwMCktPm1fc3RydWN0dXJlKSkgLSAweDQwMDApOyB9DQoNCiAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOyB9DQog
ICAgU3RydWN0dXJlKiBjcmVhdGVBbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2UoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIFN0cnVjdHVy
ZSogYmFzZSk7DQoNCiAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cnVjdHVyZS5jbGVhcigpOyB9DQog
ICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikgeyB2aXNpdG9yLmFw
cGVuZChtX3N0cnVjdHVyZSk7IH0NCg0KcHJpdmF0ZToNCiAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3N0cnVjdHVyZTsNCn07DQoNCmlubGluZSBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rp
b25BbGxvY2F0aW9uUHJvZmlsZTo6Y3JlYXRlQWxsb2NhdGlvblN0cnVjdHVyZUZyb21CYXNlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGJhc2VHbG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIEpT
T2JqZWN0KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkNCnsNCiAgICAoKHZv
aWQpMCk7DQogICAgKCh2b2lkKTApOw0KDQogICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7DQogICAg
DQogICAgDQogICAgaWYgKHByb3RvdHlwZSA9PSBiYXNlU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5
cGUoKSkNCiAgICAgICAgc3RydWN0dXJlID0gYmFzZVN0cnVjdHVyZTsNCiAgICBlbHNlDQogICAg
ICAgIHN0cnVjdHVyZSA9IHZtLnN0cnVjdHVyZUNhY2hlLmVtcHR5U3RydWN0dXJlRm9yUHJvdG90
eXBlRnJvbUJhc2VTdHJ1Y3R1cmUoYmFzZUdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBiYXNlU3Ry
dWN0dXJlKTsNCg0KICAgIA0KICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7DQoNCiAgICBtX3N0
cnVjdHVyZS5zZXQodm0sIG93bmVyLCBzdHJ1Y3R1cmUpOw0KICAgIHJldHVybiBtX3N0cnVjdHVy
ZS5nZXQoKTsNCn0NCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEZ1bmN0aW9uUmFyZURhdGEuaCINCg0KI2xp
bmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxi
eXRlY29kZVxcT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXE9iamVjdFByb3RvdHlwZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIE9iamVj
dFByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsNCnB1YmxpYzoNCiAg
ICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBJc0ltbXV0YWJs
ZVByb3RvdHlwZUV4b3RpY09iamVjdDsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE9iamVjdFByb3RvdHlw
ZSkgPT0gc2l6ZW9mKEJhc2UpKTsgc3RhdGljX2Fzc2VydChPYmplY3RQcm90b3R5cGU6OmRlc3Ry
b3kgPT0gQmFzZTo6ZGVzdHJveSk7Ow0KICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3Bh
Y2U7DQogICAgfQ0KDQogICAgc3RhdGljIE9iamVjdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsNCg0KICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBz
dGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9Ow0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAg
ew0KICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQog
ICAgfQ0KDQpwcml2YXRlOg0KICAgIE9iamVjdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOw0K
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOw0KfTsNCg0KX19k
ZWNsc3BlYyhkbGxleHBvcnQpIEVuY29kZWRKU1ZhbHVlICBvYmplY3RQcm90b0Z1bmNUb1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KYm9vbCBvYmplY3RQcm90b3R5cGVIYXNP
d25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpOw0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
LmgiDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTsNCg0K
dGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4NCmNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
QmFzZSB7DQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCnB1YmxpYzoN
CiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9yKCkgeyByZXR1cm4gKHJlaW50
ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8T2JqZWN0QWxsb2NhdGlv
blByb2ZpbGVCYXNlKj4oMHg0MDAwKS0+bV9hbGxvY2F0b3IpKSAtIDB4NDAwMCk7IH0NCiAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0
X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8T2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVCYXNlKj4oMHg0MDAwKS0+bV9zdHJ1Y3R1cmUpKSAtIDB4NDAwMCk7IH0NCg0KICAgIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlQmFzZSgpID0gZGVmYXVsdDsNCg0KICAgIGJvb2wgaXNOdWxsKCkg
eyByZXR1cm4gIW1fc3RydWN0dXJlOyB9DQoNCiAgICB2b2lkIGluaXRpYWxpemVQcm9maWxlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90eXBlLCB1
bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5LCBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9
IG51bGxwdHIsIEZ1bmN0aW9uUmFyZURhdGEqID0gbnVsbHB0cik7DQoNCiAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSgpDQogICAgew0KICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fc3Ry
dWN0dXJlLmdldCgpOw0KICAgICAgICANCiAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7DQog
ICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgdm9pZCBj
bGVhcigpDQogICAgew0KICAgICAgICBtX2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOw0KICAgICAg
ICBtX3N0cnVjdHVyZS5jbGVhcigpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAg
dm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikNCiAgICB7DQogICAgICAg
IHZpc2l0b3IuYXBwZW5kKG1fc3RydWN0dXJlKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgdW5z
aWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChWTSYsIEpTT2JqZWN0KiBwcm90b3R5
cGUpOw0KDQogICAgQWxsb2NhdG9yIG1fYWxsb2NhdG9yOyANCiAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3N0cnVjdHVyZTsNCn07DQoNCmNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
IDogcHVibGljIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZT4gew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZUJhc2U8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU+Ow0KDQogICAgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKSA9IGRlZmF1bHQ7DQoNCiAgICB1c2luZyBCYXNlOjpjbGVhcjsNCiAgICB1c2luZyBC
YXNlOjp2aXNpdEFnZ3JlZ2F0ZTsNCg0KICAgIHZvaWQgc2V0UHJvdG90eXBlKFZNJiwgSlNDZWxs
KiwgSlNPYmplY3QqKSB7IH0NCn07DQoNCmNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0
aFByb3RvdHlwZSA6IHB1YmxpYyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlPiB7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQ
cm90b3R5cGU+Ow0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlByb3RvdHlwZSgpIHsg
cmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSo+KDB4NDAwMCktPm1fcHJvdG90eXBl
KSkgLSAweDQwMDApOyB9DQoNCiAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5
cGUoKSA9IGRlZmF1bHQ7DQoNCiAgICBKU09iamVjdCogcHJvdG90eXBlKCkNCiAgICB7DQogICAg
ICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBtX3Byb3RvdHlwZS5nZXQoKTsNCiAgICAgICAgV1RG
Ojpsb2FkTG9hZEZlbmNlKCk7DQogICAgICAgIHJldHVybiBwcm90b3R5cGU7DQogICAgfQ0KDQog
ICAgdm9pZCBjbGVhcigpDQogICAgew0KICAgICAgICBCYXNlOjpjbGVhcigpOw0KICAgICAgICBt
X3Byb3RvdHlwZS5jbGVhcigpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgdm9p
ZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikNCiAgICB7DQogICAgICAgIEJh
c2U6OnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOw0KICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3By
b3RvdHlwZSk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRQcm90b3R5cGUoVk0mIHZtLCBKU0NlbGwq
IG93bmVyLCBKU09iamVjdCogb2JqZWN0KQ0KICAgIHsNCiAgICAgICAgbV9wcm90b3R5cGUuc2V0
KHZtLCBvd25lciwgb2JqZWN0KTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgV3JpdGVCYXJyaWVy
PEpTT2JqZWN0PiBtX3Byb3RvdHlwZTsNCn07DQoNCg0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRnVuY3Rp
b25SYXJlRGF0YS5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxoZWFwXFxQYWNrZWRDZWxsUHRyLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
Cg0KbmFtZXNwYWNlIEpTQyB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpjbGFzcyBQYWNrZWRD
ZWxsUHRyIDogcHVibGljIFBhY2tlZEFsaWduZWRQdHI8VCwgOD4gew0KcHVibGljOg0KICAgIHVz
aW5nIEJhc2UgPSBQYWNrZWRBbGlnbmVkUHRyPFQsIDg+Ow0KICAgIFBhY2tlZENlbGxQdHIoVCog
cG9pbnRlcikNCiAgICAgICAgOiBCYXNlKHBvaW50ZXIpDQogICAgew0KICAgIH0NCn07DQoNCn0g
DQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxGdW5jdGlvblJhcmVEYXRhLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoN
CmNsYXNzIEV4ZWN1dGFibGVCYXNlOw0KY2xhc3MgSlNHbG9iYWxPYmplY3Q7DQpjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7DQpuYW1lc3BhY2UgREZHIHsNCmNsYXNzIFNwZWN1bGF0aXZlSklU
Ow0KY2xhc3MgSklUQ29tcGlsZXI7DQp9DQoNCmNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsNCiAgICBmcmllbmQgY2xhc3MgSklUOw0KICAgIGZyaWVuZCBjbGFz
cyBERkc6OlNwZWN1bGF0aXZlSklUOw0KICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVy
Ow0KICAgIGZyaWVuZCBjbGFzcyBWTTsNCiAgICANCnB1YmxpYzoNCiAgICB0eXBlZGVmIEpTQ2Vs
bCBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoNCiAgICBzdGF0aWMg
RnVuY3Rpb25SYXJlRGF0YSogY3JlYXRlKFZNJiwgRXhlY3V0YWJsZUJhc2UqKTsNCg0KICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsNCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPg0KICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHZt
LmZ1bmN0aW9uUmFyZURhdGFTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsNCg0KICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0KICAgIHByb3Rl
Y3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH07DQoNCiAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZk9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJl
aW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25SYXJlRGF0YSo+KDB4NDAwMCktPm1fb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBv
ZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpIHsgcmV0dXJuIChyZWludGVy
cHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEZ1bmN0aW9uUmFyZURhdGEq
PigweDQwMDApLT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCkpIC0gMHg0MDAwKTsg
fQ0KICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90Pigm
KHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25SYXJlRGF0YSo+KDB4NDAwMCktPm1faW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIGlubGlu
ZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZCb3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgeyByZXR1cm4gKHJl
aW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25SYXJl
RGF0YSo+KDB4NDAwMCktPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZSkpIC0gMHg0MDAwKTsgfQ0K
ICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSgpIHsgcmV0dXJu
IChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEZ1bmN0aW9u
UmFyZURhdGEqPigweDQwMDApLT5tX2V4ZWN1dGFibGUpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0
aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRj
aHBvaW50KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJw
cmV0X2Nhc3Q8RnVuY3Rpb25SYXJlRGF0YSo+KDB4NDAwMCktPm1fYWxsb2NhdGlvblByb2ZpbGVD
bGVhcmluZ1dhdGNocG9pbnQpKSAtIDB4NDAwMCk7IH0NCg0KICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuICZtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlOw0KICAgIH0NCg0KICAgIFN0
cnVjdHVyZSogb2JqZWN0QWxsb2NhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fb2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUuc3RydWN0dXJlKCk7IH0NCiAgICBKU09iamVjdCogb2JqZWN0QWxsb2Nh
dGlvblByb3RvdHlwZSgpIHsgcmV0dXJuIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUucHJvdG90
eXBlKCk7IH0NCg0KICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpDQogICAgew0KICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmlsZVdh
dGNocG9pbnRTZXQ7DQogICAgfQ0KDQogICAgdm9pZCBjbGVhcihjb25zdCBjaGFyKiByZWFzb24p
Ow0KDQogICAgdm9pZCBpbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KiBwcm90b3R5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
SlNGdW5jdGlvbiogY29uc3RydWN0b3IpOw0KDQogICAgYm9vbCBpc09iamVjdEFsbG9jYXRpb25Q
cm9maWxlSW5pdGlhbGl6ZWQoKSB7IHJldHVybiAhbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5p
c051bGwoKTsgfQ0KDQogICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblN0
cnVjdHVyZSgpIHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLnN0
cnVjdHVyZSgpOyB9DQogICAgU3RydWN0dXJlKiBjcmVhdGVJbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblN0cnVjdHVyZUZyb21CYXNlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGJhc2VHbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBwcm90b3R5cGUsIFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSkNCiAg
ICB7DQogICAgICAgIGluaXRpYWxpemVBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKTsN
CiAgICAgICAgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmNyZWF0
ZUFsbG9jYXRpb25TdHJ1Y3R1cmVGcm9tQmFzZSh2bSwgYmFzZUdsb2JhbE9iamVjdCwgdGhpcywg
cHJvdG90eXBlLCBiYXNlU3RydWN0dXJlKTsNCiAgICB9DQogICAgdm9pZCBjbGVhckludGVybmFs
RnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZShjb25zdCBjaGFyKiByZWFzb24pDQogICAgew0KICAg
ICAgICBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOw0KICAgICAg
ICBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldC5maXJlQWxsKHZtKCksIHJlYXNvbik7
DQogICAgfQ0KDQogICAgdm9pZCBpbml0aWFsaXplQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
U2V0KCkNCiAgICB7DQogICAgICAgIGlmIChtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNl
dC5pc1N0aWxsVmFsaWQoKSkNCiAgICAgICAgICAgIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50U2V0LnN0YXJ0V2F0Y2hpbmcoKTsNCiAgICB9DQoNCiAgICBTdHJ1Y3R1cmUqIGdldEJvdW5k
RnVuY3Rpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0NCiAgICB2b2lkIHNldEJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgeyBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBz
dHJ1Y3R1cmUpOyB9DQoNCiAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhlY3V0YWJsZS5nZXQoKTsgfQ0KDQogICAgYm9vbCBoYXNSZWlmaWVkTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWlmaWVkTGVuZ3RoOyB9DQogICAgdm9pZCBzZXRIYXNS
ZWlmaWVkTGVuZ3RoKCkgeyBtX2hhc1JlaWZpZWRMZW5ndGggPSB0cnVlOyB9DQogICAgYm9vbCBo
YXNSZWlmaWVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVpZmllZE5hbWU7IH0NCiAgICB2
b2lkIHNldEhhc1JlaWZpZWROYW1lKCkgeyBtX2hhc1JlaWZpZWROYW1lID0gdHJ1ZTsgfQ0KDQog
ICAgYm9vbCBoYXNNb2RpZmllZExlbmd0aEZvck5vbkhvc3RGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzTW9kaWZpZWRMZW5ndGhGb3JOb25Ib3N0RnVuY3Rpb247IH0NCiAgICB2b2lkIHNl
dEhhc01vZGlmaWVkTGVuZ3RoRm9yTm9uSG9zdEZ1bmN0aW9uKCkNCiAgICB7DQogICAgICAgIG1f
aGFzTW9kaWZpZWRMZW5ndGhGb3JOb25Ib3N0RnVuY3Rpb24gPSB0cnVlOw0KICAgIH0NCiAgICBi
b29sIGhhc01vZGlmaWVkTmFtZUZvck5vbkhvc3RGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzTW9kaWZpZWROYW1lRm9yTm9uSG9zdEZ1bmN0aW9uOyB9DQogICAgdm9pZCBzZXRIYXNNb2Rp
ZmllZE5hbWVGb3JOb25Ib3N0RnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICAgbV9oYXNNb2RpZmll
ZE5hbWVGb3JOb25Ib3N0RnVuY3Rpb24gPSB0cnVlOw0KICAgIH0NCg0KICAgIGJvb2wgaGFzQWxs
b2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiAhIW1fYWxs
b2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ7IH0NCiAgICBXYXRjaHBvaW50KiBjcmVh
dGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpOw0KICAgIGNsYXNzIEFsbG9j
YXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Ow0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCiAgICBleHBsaWNpdCBGdW5jdGlvblJhcmVE
YXRhKFZNJiwgRXhlY3V0YWJsZUJhc2UqKTsNCiAgICB+RnVuY3Rpb25SYXJlRGF0YSgpOw0KDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7DQogICAgSW5saW5lV2F0Y2hwb2ludFNldCBt
X2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldDsNCiAgICBJbnRlcm5hbEZ1bmN0aW9uQWxs
b2NhdGlvblByb2ZpbGUgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU7DQogICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOw0KICAgIFdy
aXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOw0KICAgIHN0ZDo6dW5pcXVl
X3B0cjxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4gbV9hbGxvY2F0aW9uUHJv
ZmlsZUNsZWFyaW5nV2F0Y2hwb2ludDsNCiAgICBib29sIG1faGFzUmVpZmllZExlbmd0aCA6IDE7
DQogICAgYm9vbCBtX2hhc1JlaWZpZWROYW1lIDogMTsNCiAgICBib29sIG1faGFzTW9kaWZpZWRM
ZW5ndGhGb3JOb25Ib3N0RnVuY3Rpb24gOiAxOw0KICAgIGJvb2wgbV9oYXNNb2RpZmllZE5hbWVG
b3JOb25Ib3N0RnVuY3Rpb24gOiAxOw0KfTsNCg0KY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxs
b2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2hwb2lu
dCB7DQpwdWJsaWM6DQogICAgQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoRnVu
Y3Rpb25SYXJlRGF0YSogcmFyZURhdGEpDQogICAgICAgIDogV2F0Y2hwb2ludChXYXRjaHBvaW50
OjpUeXBlOjpGdW5jdGlvblJhcmVEYXRhQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZykNCiAgICAg
ICAgLCBtX3JhcmVEYXRhKHJhcmVEYXRhKQ0KICAgIHsgfQ0KDQogICAgdm9pZCBmaXJlSW50ZXJu
YWwoVk0mLCBjb25zdCBGaXJlRGV0YWlsJik7DQoNCnByaXZhdGU6DQogICAgDQogICAgUGFja2Vk
Q2VsbFB0cjxGdW5jdGlvblJhcmVEYXRhPiBtX3JhcmVEYXRhOyBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxQYWNrZWRDZWxsUHRyPEZ1bmN0aW9uUmFyZURhdGE+
Pjo6dmFsdWUsICIiKTs7DQp9Ow0KDQppbmxpbmUgV2F0Y2hwb2ludCogRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKQ0Kew0KICAgIGRv
IHsgaWYgKCghKCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKSkpIGRv
IHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2go
KTsgV1RGQ3Jhc2hXaXRoSW5mbygxODgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEZ1bmN0aW9uUmFyZURhdGEuaCIsICBfX0ZVTkNU
SU9OX18gICwgMTA1ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgbV9hbGxv
Y2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8QWxsb2NhdGlvblBy
b2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOw0KICAgIHJldHVybiBtX2FsbG9jYXRpb25Q
cm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50LmdldCgpOw0KfQ0KDQp9IA0KI2xpbmUgMjcgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNG
dW5jdGlvbi5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ2FsbGVlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5h
bWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBKU0dsb2JhbE9iamVjdDsNCmNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsNCg0KDQpjbGFzcyBKU0NhbGxlZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsNCiAgICBmcmllbmQgY2xhc3MgSklUOw0KDQogICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3Vs
YXRpdmVKSVQ7DQogICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7DQojbGluZSA0NCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxKU0NhbGxlZS5oIg0KICAgIGZyaWVuZCBjbGFzcyBWTTsNCg0KcHVibGljOg0KICAgIHVzaW5n
IEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2U7DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gJnZtLmNhbGxlZVNwYWNl
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUpDQogICAgew0KICAgICAgICBKU0Nh
bGxlZSogY2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsZWU+KHZtLmhl
YXApKSBKU0NhbGxlZSh2bSwgc2NvcGUsIGdsb2JhbE9iamVjdC0+Y2FsbGVlU3RydWN0dXJlKCkp
Ow0KICAgICAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICAgICAgcmV0dXJuIGNh
bGxlZTsNCiAgICB9DQogICAgDQogICAgSlNTY29wZSogc2NvcGUoKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIG1fc2NvcGUuZ2V0KCk7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgSlNTY29wZSogc2NvcGVVbmNoZWNrZWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IG1fc2NvcGUuZ2V0KCk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRTY29wZShWTSYgdm0sIEpTU2Nv
cGUqIHNjb3BlKQ0KICAgIHsNCiAgICAgICAgbV9zY29wZS5zZXQodm0sIHRoaXMsIHNjb3BlKTsN
CiAgICB9DQoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25z
dCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSANCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oSlNDYWxsZWVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
DQogICAgfQ0KDQogICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZUNoYWlu
KCkNCiAgICB7DQogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxKU0NhbGxlZSo+KDB4NDAwMCktPm1fc2NvcGUpKSAtIDB4NDAwMCk7
DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTQ2FsbGVl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsNCiAgICBKU0NhbGxlZShWTSYsIEpT
U2NvcGUqLCBTdHJ1Y3R1cmUqKTsNCg0KICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsNCiAg
ICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsNCg0KICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0KcHJpdmF0ZToNCiAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KDQogICAgV3JpdGVCYXJyaWVyPEpTU2NvcGU+IG1f
c2NvcGU7DQp9Ow0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNGdW5jdGlvbi5oIg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjbGFzcyBFeGVjdXRhYmxlQmFzZTsNCmNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZTsNCmNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOw0KY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQ7
DQpjbGFzcyBKU0dsb2JhbE9iamVjdDsNCmNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCmNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGU7DQpjbGFzcyBTb3VyY2VDb2RlOw0KY2xhc3MgSW50ZXJuYWxG
dW5jdGlvbjsNCm5hbWVzcGFjZSBERkcgew0KY2xhc3MgU3BlY3VsYXRpdmVKSVQ7DQpjbGFzcyBK
SVRDb21waWxlcjsNCn0NCg0KbmFtZXNwYWNlIERPTUpJVCB7DQpjbGFzcyBTaWduYXR1cmU7DQp9
DQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEVuY29kZWRKU1ZhbHVlICBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KDQpfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYsIEpTT2Jq
ZWN0Kik7DQoNCmNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgew0KICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7DQogICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7DQogICAg
ZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7DQogICAgZnJpZW5kIGNsYXNzIFZNOw0KICAg
IGZyaWVuZCBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOw0KDQpwdWJsaWM6DQogICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50cHRyX3QgcmFyZURhdGFUYWcgPSAweDE7DQogICAgDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFj
ZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICZ2bS5mdW5jdGlv
blNwYWNlOw0KICAgIH0NCiAgICANCiAgICB0eXBlZGVmIEpTQ2FsbGVlIEJhc2U7DQogICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0
UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhOw0KDQogICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpDQogICAgew0K
ICAgICAgICAoKHZvaWQpaW5saW5lQ2FwYWNpdHkpOw0KICAgICAgICByZXR1cm4gc2l6ZW9mKEpT
RnVuY3Rpb24pOw0KICAgIH0NCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNlbGVjdFN0cnVjdHVy
ZUZvck5ld0Z1bmNFeHAoSlNHbG9iYWxPYmplY3QqLCBGdW5jdGlvbkV4ZWN1dGFibGUqKTsNCg0K
ICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29u
c3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqID0gbnVsbHB0cik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBK
U0Z1bmN0aW9uKiBjcmVhdGVGdW5jdGlvblRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29u
c3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpT
aWduYXR1cmUqID0gbnVsbHB0cik7DQogICAgDQogICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU1Njb3BlKik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIEpT
RnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsNCiAg
ICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNT
Y29wZSosIFN0cnVjdHVyZSopOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFN0cmluZyBu
YW1lKFZNJik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFN0cmluZyBkaXNwbGF5TmFtZShW
TSYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCBTdHJpbmcgY2FsY3VsYXRlZERp
c3BsYXlOYW1lKFZNJik7DQoNCiAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0
DQogICAgew0KICAgICAgICB1aW50cHRyX3QgZXhlY3V0YWJsZU9yUmFyZURhdGEgPSBtX2V4ZWN1
dGFibGVPclJhcmVEYXRhOw0KICAgICAgICBpZiAoZXhlY3V0YWJsZU9yUmFyZURhdGEgJiByYXJl
RGF0YVRhZykNCiAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RnVuY3Rpb25SYXJlRGF0
YSo+KGV4ZWN1dGFibGVPclJhcmVEYXRhICYgfnJhcmVEYXRhVGFnKS0+ZXhlY3V0YWJsZSgpOw0K
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV4ZWN1dGFibGVCYXNlKj4oZXhlY3V0YWJsZU9y
UmFyZURhdGEpOw0KICAgIH0NCg0KICAgIA0KICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25z
dDsNCiAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0Ow0KICAgIElu
dHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBj
b25zdCBTb3VyY2VDb2RlKiBzb3VyY2VDb2RlKCkgY29uc3Q7DQoNCiAgICBwcm90ZWN0ZWQ6IHN0
YXRpYyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87
IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkg
eyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSANCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlv
blR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgDQogICAgfQ0KDQogICAgVGFnZ2VkTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24oKTsNCiAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBu
YXRpdmVDb25zdHJ1Y3RvcigpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBD
YWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBzdGF0aWMgQ2FsbERhdGEgZ2V0Q2FsbERhdGEoSlNDZWxsKik7DQoNCiAgICBzdGF0aWMg
aW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkNCiAgICB7DQog
ICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRf
Y2FzdDxKU0Z1bmN0aW9uKj4oMHg0MDAwKS0+bV9leGVjdXRhYmxlT3JSYXJlRGF0YSkpIC0gMHg0
MDAwKTsNCiAgICB9DQoNCiAgICBGdW5jdGlvblJhcmVEYXRhKiBlbnN1cmVSYXJlRGF0YShWTSYg
dm0pDQogICAgew0KICAgICAgICB1aW50cHRyX3QgZXhlY3V0YWJsZU9yUmFyZURhdGEgPSBtX2V4
ZWN1dGFibGVPclJhcmVEYXRhOw0KICAgICAgICBpZiAoKCEoZXhlY3V0YWJsZU9yUmFyZURhdGEg
JiByYXJlRGF0YVRhZykpKQ0KICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlUmFyZURhdGEodm0p
Ow0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEZ1bmN0aW9uUmFyZURhdGEqPihleGVjdXRh
YmxlT3JSYXJlRGF0YSAmIH5yYXJlRGF0YVRhZyk7DQogICAgfQ0KDQogICAgRnVuY3Rpb25SYXJl
RGF0YSogZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KTsNCg0KICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVE
YXRhKCkgY29uc3QNCiAgICB7DQogICAgICAgIHVpbnRwdHJfdCBleGVjdXRhYmxlT3JSYXJlRGF0
YSA9IG1fZXhlY3V0YWJsZU9yUmFyZURhdGE7DQogICAgICAgIGlmIChleGVjdXRhYmxlT3JSYXJl
RGF0YSAmIHJhcmVEYXRhVGFnKQ0KICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxGdW5j
dGlvblJhcmVEYXRhKj4oZXhlY3V0YWJsZU9yUmFyZURhdGEgJiB+cmFyZURhdGFUYWcpOw0KICAg
ICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQoNCiAgICBib29sIGlzSG9zdE9yQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3Q7DQogICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0Ow0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29u
c3Q7DQogICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0Ow0KDQogICAg
dm9pZCBzZXRGdW5jdGlvbk5hbWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG5hbWUpOw0KDQog
ICAgDQogICAgSlNPYmplY3QqIHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0Kik7DQoNCiAgICBib29sIGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCk7DQogICAgYm9v
bCBjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZU5vbklubGluZSgpOw0KDQogICAgZW51bSBjbGFzcyBQ
cm9wZXJ0eVN0YXR1cyB7DQogICAgICAgIEVhZ2VyLA0KICAgICAgICBMYXp5LA0KICAgICAgICBS
ZWlmaWVkLA0KICAgIH07DQogICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5UHJvcGVydHlJZk5l
ZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsNCg0KICAgIGJvb2wgY2Fu
QXNzdW1lTmFtZUFuZExlbmd0aEFyZU9yaWdpbmFsKFZNJik7DQoNCnByb3RlY3RlZDoNCiAgICBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNGdW5jdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOw0KICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7DQoNCiAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSk7DQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOw0KDQogICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOw0KICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUgPSBFbnVtZXJhdGlvbk1vZGUoKSk7DQogICAgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7DQoNCiAgICBzdGF0
aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KDQogICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHko
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlbGV0ZVByb3BlcnR5U2xv
dCYpOw0KDQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOw0KDQpwcml2YXRlOg0KICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpDQogICAgew0KICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9u
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOw0KICAgICAgICByZXR1cm4gZnVu
Y3Rpb247DQogICAgfQ0KDQogICAgRnVuY3Rpb25SYXJlRGF0YSogYWxsb2NhdGVSYXJlRGF0YShW
TSYpOw0KICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRh
KEpTR2xvYmFsT2JqZWN0Kiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsNCiAgICBGdW5jdGlvblJh
cmVEYXRhKiBpbml0aWFsaXplUmFyZURhdGEoSlNHbG9iYWxPYmplY3QqLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkpOw0KDQogICAgYm9vbCBoYXNSZWlmaWVkTGVuZ3RoKCkgY29uc3Q7DQogICAgYm9v
bCBoYXNSZWlmaWVkTmFtZSgpIGNvbnN0Ow0KICAgIHZvaWQgcmVpZnlMZW5ndGgoVk0mKTsNCiAg
ICB2b2lkIHJlaWZ5TmFtZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7DQogICAgdm9pZCByZWlmeU5h
bWUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cmluZyBuYW1lKTsNCg0KICAgIHN0YXRpYyBib29s
IGlzTGF6eShQcm9wZXJ0eVN0YXR1cyBwcm9wZXJ0eSkgeyByZXR1cm4gcHJvcGVydHkgPT0gUHJv
cGVydHlTdGF0dXM6OkxhenkgfHwgcHJvcGVydHkgPT0gUHJvcGVydHlTdGF0dXM6OlJlaWZpZWQ7
IH0NCiAgICBzdGF0aWMgYm9vbCBpc1JlaWZpZWQoUHJvcGVydHlTdGF0dXMgcHJvcGVydHkpIHsg
cmV0dXJuIHByb3BlcnR5ID09IFByb3BlcnR5U3RhdHVzOjpSZWlmaWVkOyB9DQoNCiAgICBQcm9w
ZXJ0eVN0YXR1cyByZWlmeUxhenlQcm9wZXJ0eUZvckhvc3RPckJ1aWx0aW5JZk5lZWRlZChWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsNCiAgICBQcm9wZXJ0eVN0YXR1cyByZWlm
eUxhenlMZW5ndGhJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsN
CiAgICBQcm9wZXJ0eVN0YXR1cyByZWlmeUxhenlOYW1lSWZOZWVkZWQoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSk7DQogICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5Qm91bmRO
YW1lSWZOZWVkZWQoVk0mLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7DQoNCg0KDQoj
bGluZSAyMTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNGdW5jdGlvbi5oIg0KICAgIHZvaWQgYXNzZXJ0VHlwZUluZm9GbGFnSW52
YXJpYW50cygpIHsgfQ0KI2xpbmUgMjE4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTRnVuY3Rpb24uaCINCg0KICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCiAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
YXJndW1lbnRzR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7DQogICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdldHRlcihKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOw0KDQogICAgdWludHB0cl90IG1f
ZXhlY3V0YWJsZU9yUmFyZURhdGE7DQp9Ow0KDQpjbGFzcyBKU1N0cmljdEZ1bmN0aW9uIGZpbmFs
IDogcHVibGljIEpTRnVuY3Rpb24gew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBKU0Z1bmN0
aW9uOw0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0
IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsNCiAgICB9DQp9Ow0Kc3RhdGljX2Fzc2VydChzaXplb2YoSlNTdHJpY3RG
dW5jdGlvbikgPT0gc2l6ZW9mKEpTRnVuY3Rpb24pLCAiQWxsb2NhdGVkIGluIEpTRnVuY3Rpb24g
SXNvU3Vic3BhY2UiKTsNCg0KY2xhc3MgSlNTbG9wcHlGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBK
U0Z1bmN0aW9uIHsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNGdW5jdGlvbjsNCg0KICAg
IHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOw0KDQogICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7DQogICAgfQ0KfTsNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTU2xvcHB5RnVuY3Rpb24pID09
IHNpemVvZihKU0Z1bmN0aW9uKSwgIkFsbG9jYXRlZCBpbiBKU0Z1bmN0aW9uIElzb1N1YnNwYWNl
Iik7DQoNCmNsYXNzIEpTQXJyb3dGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsN
CnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNGdW5jdGlvbjsNCg0KICAgIHByb3RlY3RlZDog
c3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5m
bzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8o
KSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOw0KDQogICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0K
fTsNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTQXJyb3dGdW5jdGlvbikgPT0gc2l6ZW9mKEpTRnVu
Y3Rpb24pLCAiQWxsb2NhdGVkIGluIEpTRnVuY3Rpb24gSXNvU3Vic3BhY2UiKTsNCg0KfSANCiNs
aW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGJ5dGVjb2RlXFxDYWxsVmFyaWFudC5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBDYWxs
VmFyaWFudCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyBy
ZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RG
OjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJl
dHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9u
OyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlz
SXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCnB1YmxpYzoNCiAg
ICBleHBsaWNpdCBDYWxsVmFyaWFudChKU0NlbGwqIGNhbGxlZSA9IG51bGxwdHIpDQogICAgICAg
IDogbV9jYWxsZWUoY2FsbGVlKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgQ2FsbFZhcmlhbnQo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQ0KICAgICAgICA6IG1fY2FsbGVlKGRlbGV0
ZWRUb2tlbigpKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsZWU7IH0NCiAgICANCiAgICANCiAgICBfX2ZvcmNl
aW5saW5lIENhbGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgpIGNvbnN0DQogICAgew0KICAg
ICAgICBpZiAobV9jYWxsZWUtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkNCiAgICAgICAgICAg
IHJldHVybiBDYWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlKS0+ZXhlY3V0
YWJsZSgpKTsNCiAgICAgICAgcmV0dXJuICp0aGlzOw0KICAgIH0NCiAgICANCiAgICBKU0NlbGwq
IHJhd0NhbGxlZUNlbGwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQ0KICAgIA0KICAgIElu
dGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlLT52bSgpLCBt
X2NhbGxlZSk7DQogICAgfQ0KICAgIA0KICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKCkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX2NhbGxl
ZS0+dm0oKSwgbV9jYWxsZWUpOw0KICAgIH0NCiAgICANCiAgICBib29sIGlzQ2xvc3VyZUNhbGwo
KSBjb25zdCB7IHJldHVybiAhIWpzRHluYW1pY0Nhc3Q8RXhlY3V0YWJsZUJhc2UqPihtX2NhbGxl
ZS0+dm0oKSwgbV9jYWxsZWUpOyB9DQogICAgDQogICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhp
cy0+ZnVuY3Rpb24oKSkNCiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgp
Ow0KICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVl
LT52bSgpLCBtX2NhbGxlZSk7DQogICAgfQ0KICAgIA0KICAgIEpTQ2VsbCogbm9uRXhlY3V0YWJs
ZUNhbGxlZSgpIGNvbnN0DQogICAgew0KICAgICAgICBkbyB7IGlmICgoISghaXNDbG9zdXJlQ2Fs
bCgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNl
Rm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygxMDksICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDYWxsVmFyaWFudC5oIiwgIF9f
RlVOQ1RJT05fXyAgLCAxMDYgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAg
ICAgcmV0dXJuIG1fY2FsbGVlOw0KICAgIH0NCiAgICANCiAgICBJbnRyaW5zaWMgaW50cmluc2lj
Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QNCiAgICB7DQogICAgICAgIGlm
IChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkNCiAgICAg
ICAgICAgIHJldHVybiBleGVjdXRhYmxlLT5pbnRyaW5zaWNGb3Ioa2luZCk7DQogICAgICAgIHJl
dHVybiBOb0ludHJpbnNpYzsNCiAgICB9DQogICAgDQogICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKEV4ZWN1dGFibGVC
YXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQ0KICAgICAgICAgICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9jYWxsZWUtPnZtKCksIGV4ZWN1
dGFibGUpOw0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQoNCiAgICBOYXRpdmVFeGVj
dXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlKCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmIChFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkNCiAgICAgICAgICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2NhbGxlZS0+dm0oKSwg
ZXhlY3V0YWJsZSk7DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KICAgIGNvbnN0
IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKE5hdGl2ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4
ZWN1dGFibGUgPSB0aGlzLT5uYXRpdmVFeGVjdXRhYmxlKCkpDQogICAgICAgICAgICByZXR1cm4g
bmF0aXZlRXhlY3V0YWJsZS0+c2lnbmF0dXJlRm9yKGtpbmQpOw0KICAgICAgICByZXR1cm4gbnVs
bHB0cjsNCiAgICB9DQogICAgDQogICAgYm9vbCBmaW5hbGl6ZShWTSYpOw0KICAgIA0KICAgIGJv
b2wgbWVyZ2UoY29uc3QgQ2FsbFZhcmlhbnQmKTsNCiAgICANCiAgICB2b2lkIGZpbHRlcihWTSYs
IEpTVmFsdWUpOw0KICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsN
CiAgICANCiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxldGVkVG9rZW4oKTsNCiAgICB9DQogICAgDQog
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBvdGhlci5tX2NhbGxlZTsNCiAgICB9DQogICAg
DQogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsNCiAgICB9DQogICAgDQogICAg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIubV9jYWxsZWU7DQogICAgfQ0KICAgIA0KICAg
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJpYW50JiBvdGhlcikgY29uc3QNCiAgICB7DQog
ICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOw0KICAgIH0NCiAgICANCiAgICBib29sIG9wZXJh
dG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuICEoKnRoaXMgPCBvdGhlcik7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gb3Ro
ZXIgPD0gKnRoaXM7DQogICAgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2NhbGxlZSk7
DQogICAgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICBzdGF0aWMgSlNDZWxsKiBkZWxldGVkVG9rZW4o
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pigx
KSk7IH0NCiAgICANCiAgICBKU0NlbGwqIG1fY2FsbGVlOw0KfTsNCg0Kc3RydWN0IENhbGxWYXJp
YW50SGFzaCB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2FsbFZhcmlhbnQmIGtl
eSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQ0KICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENh
bGxWYXJpYW50JiBhLCBjb25zdCBDYWxsVmFyaWFudCYgYikgeyByZXR1cm4gYSA9PSBiOyB9DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsNCn07DQoNCnR5cGVkZWYgVmVjdG9yPENhbGxWYXJpYW50LCAxPiBDYWxsVmFyaWFudExp
c3Q7DQoNCg0KDQpDYWxsVmFyaWFudExpc3QgdmFyaWFudExpc3RXaXRoVmFyaWFudChjb25zdCBD
YWxsVmFyaWFudExpc3QmLCBDYWxsVmFyaWFudCk7DQoNCg0KQ2FsbFZhcmlhbnRMaXN0IGRlc3Bl
Y2lmaWVkVmFyaWFudExpc3QoY29uc3QgQ2FsbFZhcmlhbnRMaXN0Jik7DQoNCn0gDQoNCm5hbWVz
cGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQp0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkNhbGxWYXJpYW50PiA6IEpTQzo6Q2Fs
bFZhcmlhbnRIYXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFp
dHM7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6Q2FsbFZhcmlhbnQ+IHsgfTsNCg0KfSANCiNsaW5lIDI5
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVj
b2RlXFxDYWxsRWRnZS5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQ2FsbEVkZ2Ugew0K
cHVibGljOg0KICAgIENhbGxFZGdlKCk7DQogICAgQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQsIHVpbnQz
Ml90KTsNCiAgICANCiAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxl
ZTsgfQ0KICAgIA0KICAgIENhbGxWYXJpYW50IGNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bGVlOyB9DQogICAgdWludDMyX3QgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9DQog
ICAgDQogICAgQ2FsbEVkZ2UgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QNCiAgICB7DQogICAg
ICAgIHJldHVybiBDYWxsRWRnZShtX2NhbGxlZS5kZXNwZWNpZmllZENsb3N1cmUoKSwgbV9jb3Vu
dCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Ow0KICAg
IA0KcHJpdmF0ZToNCiAgICBDYWxsVmFyaWFudCBtX2NhbGxlZTsNCiAgICB1aW50MzJfdCBtX2Nv
dW50Ow0KfTsNCg0KaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShDYWxsVmFyaWFudCBjYWxsZWUs
IHVpbnQzMl90IGNvdW50KQ0KICAgIDogbV9jYWxsZWUoY2FsbGVlKQ0KICAgICwgbV9jb3VudChj
b3VudCkNCnsNCn0NCg0KaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZSgpDQogICAgOiBDYWxsRWRn
ZShDYWxsVmFyaWFudCgpLCAwKQ0Kew0KfQ0KDQp0eXBlZGVmIFZlY3RvcjxDYWxsRWRnZSwgMT4g
Q2FsbEVkZ2VMaXN0Ow0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5o
Ig0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGppdFxcR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRc
XEpJVFN0dWJSb3V0aW5lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoN
CmNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0Ow0KY2xhc3MgVk07DQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KY2xhc3MgSklUU3R1YlJvdXRpbmUgew0KICAgIEpJVFN0dWJSb3V0aW5lKGNvbnN0IEpJVFN0
dWJSb3V0aW5lJikgPSBkZWxldGU7IEpJVFN0dWJSb3V0aW5lJiBvcGVyYXRvcj0oY29uc3QgSklU
U3R1YlJvdXRpbmUmKSA9IGRlbGV0ZTs7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXco
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
KHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNp
emVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsg
cmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0
ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGlu
dDsNCnB1YmxpYzoNCiAgICBKSVRTdHViUm91dGluZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlKQ0KICAgICAgICA6IG1fY29kZShjb2RlKQ0K
ICAgICAgICAsIG1fcmVmQ291bnQoMSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0K
ICAgIHN0YXRpYyBSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZVNlbGZNYW5hZ2VkUm91dGluZSgN
CiAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiByYXdD
b2RlUG9pbnRlcikNCiAgICB7DQogICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpJVFN0dWJS
b3V0aW5lKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz46OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZihyYXdDb2RlUG9pbnRlcikpKTsNCiAgICB9DQogICAgDQogICAg
dmlydHVhbCB+SklUU3R1YlJvdXRpbmUoKTsNCiAgICB2aXJ0dWFsIHZvaWQgYWJvdXRUb0RpZSgp
IHsgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7
IH0NCiAgICANCiAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPiBhc0NvZGVQdHIoUmVmPEpJVFN0dWJSb3V0aW5lPiYmIHN0dWJSb3V0aW5lKQ0KICAg
IHsNCiAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBy
ZXN1bHQgPSBzdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKTsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCiAgICB2b2lkIHJlZigpDQogICAg
ew0KICAgICAgICBtX3JlZkNvdW50Kys7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgZGVyZWYoKQ0K
ICAgIHsNCiAgICAgICAgaWYgKC0tbV9yZWZDb3VudCkNCiAgICAgICAgICAgIHJldHVybjsNCiAg
ICAgICAgb2JzZXJ2ZVplcm9SZWZDb3VudCgpOw0KICAgIH0NCiAgICANCiAgICANCiAgICANCiAg
ICB1aW50cHRyX3Qgc3RhcnRBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlLmV4ZWN1dGFi
bGVNZW1vcnkoKS0+c3RhcnRBc0ludGVnZXIoKTsgfQ0KICAgIHVpbnRwdHJfdCBlbmRBZGRyZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlLmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kQXNJbnRlZ2Vy
KCk7IH0NCiAgICBzdGF0aWMgdWludHB0cl90IGFkZHJlc3NTdGVwKCkgeyByZXR1cm4gaml0QWxs
b2NhdGlvbkdyYW51bGU7IH0NCiAgICANCiAgICBzdGF0aWMgYm9vbCBwYXNzZXNGaWx0ZXIodWlu
dHB0cl90IGFkZHJlc3MpDQogICAgew0KICAgICAgICByZXR1cm4gaXNKSVRQQyhiaXR3aXNlX2Nh
c3Q8dm9pZCo+KGFkZHJlc3MpKTsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
dmlydHVhbCBib29sIHZpc2l0V2VhayhWTSYpOw0KDQpwcm90ZWN0ZWQ6DQogICAgdmlydHVhbCB2
b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKTsNCg0KICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRTdHViUm91dGluZVB0clRhZz4gbV9jb2RlOw0KICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7DQp9
Ow0KDQoNCg0KDQoNCn0gDQoNCiNsaW5lIDEyMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVFN0dWJSb3V0aW5lLmgiDQojbGluZSAzMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEdD
QXdhcmVKSVRTdHViUm91dGluZS5oIg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCm5hbWVzcGFj
ZSBERkcgew0KY2xhc3MgQ29kZU9yaWdpblBvb2w7DQp9DQoNCmNsYXNzIENhbGxMaW5rSW5mbzsN
CmNsYXNzIEpJVFN0dWJSb3V0aW5lU2V0Ow0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KY2xhc3Mg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIDogcHVibGljIEpJVFN0dWJSb3V0aW5lIHsNCnB1YmxpYzoN
CiAgICBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJik7DQogICAgfkdDQXdhcmVKSVRTdHViUm91dGluZSgp
IG92ZXJyaWRlOw0KDQogICAgc3RhdGljIFJlZjxKSVRTdHViUm91dGluZT4gY3JlYXRlKGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2
bSkNCiAgICB7DQogICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlLCB2bSkpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIG1hcmtSZXF1aXJlZE9iamVj
dHMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpDQogICAgew0KICAgICAgICBtYXJrUmVxdWlyZWRPYmpl
Y3RzSW50ZXJuYWwodmlzaXRvcik7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgZGVsZXRlRnJvbUdD
KCk7DQogICAgDQpwcm90ZWN0ZWQ6DQogICAgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgb3Zl
cnJpZGU7DQogICAgDQogICAgdmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5h
bChTbG90VmlzaXRvciYpOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViUm91
dGluZVNldDsNCg0KICAgIGJvb2wgbV9tYXlCZUV4ZWN1dGluZyB7IGZhbHNlIH07DQogICAgYm9v
bCBtX2lzSmV0dGlzb25lZCB7IGZhbHNlIH07DQp9Ow0KDQoNCg0KY2xhc3MgTWFya2luZ0dDQXdh
cmVKSVRTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgew0KcHVibGlj
Og0KICAgIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmUoDQogICAgICAgIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2Vs
bCogb3duZXIsIGNvbnN0IFZlY3RvcjxKU0NlbGwqPiYsIEJhZzxDYWxsTGlua0luZm8+JiYpOw0K
ICAgIH5NYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lKCkgb3ZlcnJpZGU7DQogICAgDQpwcm90
ZWN0ZWQ6DQogICAgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3Im
KSBvdmVycmlkZTsNCg0KcHJpdmF0ZToNCiAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+
IG1fY2VsbHM7DQogICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOw0KfTsNCg0K
DQoNCg0KDQpjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0aW9uSGFuZGxlciBm
aW5hbCA6IHB1YmxpYyBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsNCnB1YmxpYzoNCiAg
ICB0eXBlZGVmIEdDQXdhcmVKSVRTdHViUm91dGluZSBCYXNlOw0KDQogICAgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lV2l0aEV4Y2VwdGlvbkhhbmRsZXIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgY29uc3Qg
VmVjdG9yPEpTQ2VsbCo+JiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgQ29kZUJsb2NrKiwgRGlzcG9z
YWJsZUNhbGxTaXRlSW5kZXgpOw0KICAgIH5HQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoRXhjZXB0
aW9uSGFuZGxlcigpIGZpbmFsOw0KDQogICAgdm9pZCBhYm91dFRvRGllKCkgZmluYWw7DQogICAg
dm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCkgZmluYWw7DQoNCnByaXZhdGU6DQogICAgQ29kZUJs
b2NrKiBtX2NvZGVCbG9ja1dpdGhFeGNlcHRpb25IYW5kbGVyOw0KDQogICAgUmVmUHRyPERGRzo6
Q29kZU9yaWdpblBvb2w+IG1fY29kZU9yaWdpblBvb2w7DQojbGluZSAxMTggIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxHQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaCINCiAgICBEaXNwb3NhYmxlQ2FsbFNpdGVJbmRleCBtX2V4Y2VwdGlvbkhhbmRs
ZXJDYWxsU2l0ZUluZGV4Ow0KfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQpSZWY8SklUU3R1YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKA0KICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0
IEpTQ2VsbCogb3duZXIsIGJvb2wgbWFrZXNDYWxscywNCiAgICBjb25zdCBWZWN0b3I8SlNDZWxs
Kj4mLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNhbGxMaW5rSW5mb3MsDQogICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2tGb3JFeGNlcHRpb25IYW5kbGVycywgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggZXhj
ZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KTsNCg0KfSANCg0KI2xpbmUgMTQ4ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmgiDQojbGluZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgiDQoN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDYWxsTGlua0luZm87DQoNCmNsYXNzIFBv
bHltb3JwaGljQ2FsbE5vZGUgOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3Jw
aGljQ2FsbE5vZGU+IHsNCiAgICBQb2x5bW9ycGhpY0NhbGxOb2RlKGNvbnN0IFBvbHltb3JwaGlj
Q2FsbE5vZGUmKSA9IGRlbGV0ZTsgUG9seW1vcnBoaWNDYWxsTm9kZSYgb3BlcmF0b3I9KGNvbnN0
IFBvbHltb3JwaGljQ2FsbE5vZGUmKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgUG9seW1vcnBo
aWNDYWxsTm9kZShDYWxsTGlua0luZm8qIGluZm8pDQogICAgICAgIDogbV9jYWxsTGlua0luZm8o
aW5mbykNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIH5Qb2x5bW9ycGhpY0NhbGxOb2RlKCk7DQog
ICAgDQogICAgdm9pZCB1bmxpbmsoVk0mKTsNCg0KICAgIGJvb2wgaGFzQ2FsbExpbmtJbmZvKENh
bGxMaW5rSW5mbyogaW5mbykgeyByZXR1cm4gbV9jYWxsTGlua0luZm8uZ2V0KCkgPT0gaW5mbzsg
fQ0KICAgIHZvaWQgY2xlYXJDYWxsTGlua0luZm8oKTsNCiAgICANCnByaXZhdGU6DQogICAgUGFj
a2VkUHRyPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm87DQp9Ow0KDQpjbGFzcyBQb2x5bW9y
cGhpY0NhbGxDYXNlIHsNCnB1YmxpYzoNCiAgICBQb2x5bW9ycGhpY0NhbGxDYXNlKCkNCiAgICAg
ICAgOiBtX2NvZGVCbG9jayhudWxscHRyKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgUG9seW1v
cnBoaWNDYWxsQ2FzZShDYWxsVmFyaWFudCB2YXJpYW50LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykN
CiAgICAgICAgOiBtX3ZhcmlhbnQodmFyaWFudCkNCiAgICAgICAgLCBtX2NvZGVCbG9jayhjb2Rl
QmxvY2spDQogICAgew0KICAgIH0NCiAgICANCiAgICBDYWxsVmFyaWFudCB2YXJpYW50KCkgY29u
c3QgeyByZXR1cm4gbV92YXJpYW50OyB9DQogICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jazsgfQ0KICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0Ow0KICAgIA0KcHJpdmF0ZToNCiAgICBDYWxsVmFyaWFudCBtX3ZhcmlhbnQ7DQog
ICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsNCn07DQoNCmNsYXNzIFBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lIGZpbmFsIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7DQpwdWJsaWM6
DQogICAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoDQogICAgICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mLCBWTSYsIGNvbnN0IEpTQ2VsbCog
b3duZXIsDQogICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIENhbGxMaW5rSW5mbyYsIGNv
bnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYsDQogICAgICAgIFVuaXF1ZUFycmF5PHVp
bnQzMl90PiYmIGZhc3RDb3VudHMpOw0KICAgIA0KICAgIH5Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZSgpIGZpbmFsOw0KICAgIA0KICAgIENhbGxWYXJpYW50TGlzdCB2YXJpYW50cygpIGNvbnN0
Ow0KICAgIGJvb2wgaGFzRWRnZXMoKSBjb25zdDsNCiAgICBDYWxsRWRnZUxpc3QgZWRnZXMoKSBj
b25zdDsNCg0KICAgIHZvaWQgY2xlYXJDYWxsTm9kZXNGb3IoQ2FsbExpbmtJbmZvKik7DQogICAg
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4NCiAgICB2b2lkIGZvckVhY2hEZXBlbmRl
bnRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpDQogICAgew0KICAgICAgICBmb3IgKGF1dG8m
IHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQ0KICAgICAgICAgICAgZnVuY3Rvcih2YXJpYW50LmdldCgp
KTsNCiAgICB9DQoNCiAgICBib29sIHZpc2l0V2VhayhWTSYpIGZpbmFsOw0KDQpwcml2YXRlOg0K
ICAgIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJikgZmluYWw7
DQoNCiAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7DQogICAg
VW5pcXVlQXJyYXk8dWludDMyX3Q+IG1fZmFzdENvdW50czsNCiAgICBCYWc8UG9seW1vcnBoaWND
YWxsTm9kZT4gbV9jYWxsTm9kZXM7DQp9Ow0KDQp9IA0KDQojbGluZSAxMTggIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxQb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oIg0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENhbGxMaW5rSW5mby5oIg0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCg0KDQpjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsNCmNsYXNzIEpTRnVu
Y3Rpb247DQplbnVtIE9wY29kZUlEIDogdW5zaWduZWQ7DQpzdHJ1Y3QgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGE7DQoNCmNsYXNzIENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiB7DQpwdWJsaWM6DQogICAgZW51bSBDYWxsVHlwZSB7DQogICAgICAg
IE5vbmUsDQogICAgICAgIENhbGwsDQogICAgICAgIENhbGxWYXJhcmdzLA0KICAgICAgICBDb25z
dHJ1Y3QsDQogICAgICAgIENvbnN0cnVjdFZhcmFyZ3MsDQogICAgICAgIFRhaWxDYWxsLA0KICAg
ICAgICBUYWlsQ2FsbFZhcmFyZ3MsDQogICAgICAgIERpcmVjdENhbGwsDQogICAgICAgIERpcmVj
dENvbnN0cnVjdCwNCiAgICAgICAgRGlyZWN0VGFpbENhbGwNCiAgICB9Ow0KICAgIA0KICAgIHN0
YXRpYyBDYWxsVHlwZSBjYWxsVHlwZUZvcihPcGNvZGVJRCBvcGNvZGVJRCk7DQoNCiAgICBzdGF0
aWMgYm9vbCBpc1ZhcmFyZ3NDYWxsVHlwZShDYWxsVHlwZSBjYWxsVHlwZSkNCiAgICB7DQogICAg
ICAgIHN3aXRjaCAoY2FsbFR5cGUpIHsNCiAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoNCiAgICAg
ICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOg0KICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoN
CiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBDYWxsTGlua0luZm8oKTsN
CiAgICAgICAgDQogICAgfkNhbGxMaW5rSW5mbygpOw0KICAgIA0KICAgIHN0YXRpYyBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZEZvcihDYWxsVHlwZSBjYWxsVHlwZSkN
CiAgICB7DQogICAgICAgIHJldHVybiBzcGVjaWFsaXphdGlvbkZyb21Jc0NvbnN0cnVjdChjYWxs
VHlwZSA9PSBDb25zdHJ1Y3QgfHwgY2FsbFR5cGUgPT0gQ29uc3RydWN0VmFyYXJncyB8fCBjYWxs
VHlwZSA9PSBEaXJlY3RDb25zdHJ1Y3QpOw0KICAgIH0NCiAgICBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHNwZWNpYWxpemF0aW9uS2luZCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gc3Bl
Y2lhbGl6YXRpb25LaW5kRm9yKHN0YXRpY19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKSk7DQog
ICAgfQ0KICAgIA0KICAgIHN0YXRpYyBDYWxsTW9kZSBjYWxsTW9kZUZvcihDYWxsVHlwZSBjYWxs
VHlwZSkNCiAgICB7DQogICAgICAgIHN3aXRjaCAoY2FsbFR5cGUpIHsNCiAgICAgICAgY2FzZSBD
YWxsOg0KICAgICAgICBjYXNlIENhbGxWYXJhcmdzOg0KICAgICAgICBjYXNlIERpcmVjdENhbGw6
DQogICAgICAgICAgICByZXR1cm4gQ2FsbE1vZGU6OlJlZ3VsYXI7DQogICAgICAgIGNhc2UgVGFp
bENhbGw6DQogICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOg0KICAgICAgICBjYXNlIERpcmVj
dFRhaWxDYWxsOg0KICAgICAgICAgICAgcmV0dXJuIENhbGxNb2RlOjpUYWlsOw0KICAgICAgICBj
YXNlIENvbnN0cnVjdDoNCiAgICAgICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOg0KICAgICAgICBj
YXNlIERpcmVjdENvbnN0cnVjdDoNCiAgICAgICAgICAgIHJldHVybiBDYWxsTW9kZTo6Q29uc3Ry
dWN0Ow0KICAgICAgICBjYXNlIE5vbmU6DQogICAgICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3Jh
bE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aElu
Zm8oMTAzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxieXRlY29kZVxcQ2FsbExpbmtJbmZvLmgiLCAgX19GVU5DVElPTl9fICAsIDEwNyApOyB9IHdo
aWxlIChmYWxzZSk7DQogICAgICAgIH0NCg0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9y
UG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8o
MTA2LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxi
eXRlY29kZVxcQ2FsbExpbmtJbmZvLmgiLCAgX19GVU5DVElPTl9fICAsIDEwOCApOyB9IHdoaWxl
IChmYWxzZSk7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBib29sIGlzRGlyZWN0KENhbGxUeXBl
IGNhbGxUeXBlKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChjYWxsVHlwZSkgew0KICAgICAgICBj
YXNlIERpcmVjdENhbGw6DQogICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6DQogICAgICAgIGNh
c2UgRGlyZWN0Q29uc3RydWN0Og0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGNh
c2UgQ2FsbDoNCiAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoNCiAgICAgICAgY2FzZSBUYWlsQ2Fs
bDoNCiAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6DQogICAgICAgIGNhc2UgQ29uc3RydWN0
Og0KICAgICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6DQogICAgICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgICAgIGNhc2UgTm9uZToNCiAgICAgICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFs
T3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5m
bygxMjQsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGJ5dGVjb2RlXFxDYWxsTGlua0luZm8uaCIsICBfX0ZVTkNUSU9OX18gICwgMTA5ICk7IH0gd2hp
bGUgKGZhbHNlKTsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9y
Q3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygxMjgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDYWxsTGlua0luZm8uaCIsICBfX0ZV
TkNUSU9OX18gICwgMTEwICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgIH0NCiAgICANCiAgICBDYWxsTW9kZSBjYWxsTW9kZSgpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gY2FsbE1vZGVGb3Ioc3RhdGljX2Nhc3Q8Q2FsbFR5cGU+KG1fY2FsbFR5cGUp
KTsNCiAgICB9DQoNCiAgICBib29sIGlzRGlyZWN0KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJl
dHVybiBpc0RpcmVjdChzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlwZSkpOw0KICAgIH0N
Cg0KICAgIGJvb2wgaXNUYWlsQ2FsbCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gY2Fs
bE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbDsNCiAgICB9DQogICAgDQogICAgTmVhckNhbGxNb2Rl
IG5lYXJDYWxsTW9kZSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gaXNUYWlsQ2FsbCgp
ID8gTmVhckNhbGxNb2RlOjpUYWlsIDogTmVhckNhbGxNb2RlOjpSZWd1bGFyOw0KICAgIH0NCg0K
ICAgIGJvb2wgaXNWYXJhcmdzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBpc1ZhcmFy
Z3NDYWxsVHlwZShzdGF0aWNfY2FzdDxDYWxsVHlwZT4obV9jYWxsVHlwZSkpOw0KICAgIH0NCg0K
ICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiBtX3N0dWIgfHwgbV9jYWxsZWVPckNv
ZGVCbG9jazsgfQ0KICAgIHZvaWQgdW5saW5rKFZNJik7DQoNCiAgICB2b2lkIHNldFVwQ2FsbChD
YWxsVHlwZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgY2FsbGVlR1BS
KQ0KICAgIHsNCiAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOw0KICAgICAgICBtX2NvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luOw0KICAgICAgICBtX2NhbGxlZUdQUiA9IGNhbGxlZUdQUjsNCiAg
ICB9DQoNCiAgICB2b2lkIHNldENhbGxMb2NhdGlvbnMoDQogICAgICAgIENvZGVMb2NhdGlvbkxh
YmVsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGxSZXR1cm5Mb2NhdGlvbk9yUGF0Y2hhYmxlSnVtcCwN
CiAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gaG90UGF0aEJlZ2lu
T3JTbG93UGF0aFN0YXJ0LA0KICAgICAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbDxKU0ludGVybmFs
UHRyVGFnPiBob3RQYXRoT3RoZXIpDQogICAgew0KICAgICAgICBtX2NhbGxSZXR1cm5Mb2NhdGlv
bk9yUGF0Y2hhYmxlSnVtcCA9IGNhbGxSZXR1cm5Mb2NhdGlvbk9yUGF0Y2hhYmxlSnVtcDsNCiAg
ICAgICAgbV9ob3RQYXRoQmVnaW5PclNsb3dQYXRoU3RhcnQgPSBob3RQYXRoQmVnaW5PclNsb3dQ
YXRoU3RhcnQ7DQogICAgICAgIG1faG90UGF0aE90aGVyID0gaG90UGF0aE90aGVyOw0KICAgIH0N
Cg0KICAgIGJvb2wgYWxsb3dTdHVicygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dTdHViczsgfQ0K
DQogICAgdm9pZCBkaXNhbGxvd1N0dWJzKCkNCiAgICB7DQogICAgICAgIG1fYWxsb3dTdHVicyA9
IGZhbHNlOw0KICAgIH0NCg0KICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJU
YWc+IGNhbGxSZXR1cm5Mb2NhdGlvbigpOw0KICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5h
bFB0clRhZz4gcGF0Y2hhYmxlSnVtcCgpOw0KICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjxK
U0ludGVybmFsUHRyVGFnPiBob3RQYXRoQmVnaW4oKTsNCiAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFN0YXJ0KCk7DQoNCiAgICBDb2RlTG9jYXRpb25OZWFy
Q2FsbDxKU0ludGVybmFsUHRyVGFnPiBob3RQYXRoT3RoZXIoKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1faG90UGF0aE90aGVyOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0Q2FsbGVlKFZNJiwgSlND
ZWxsKiwgSlNPYmplY3QqIGNhbGxlZSk7DQogICAgdm9pZCBjbGVhckNhbGxlZSgpOw0KICAgIEpT
T2JqZWN0KiBjYWxsZWUoKTsNCg0KICAgIHZvaWQgc2V0Q29kZUJsb2NrKFZNJiwgSlNDZWxsKiwg
RnVuY3Rpb25Db2RlQmxvY2sqKTsNCiAgICB2b2lkIGNsZWFyQ29kZUJsb2NrKCk7DQogICAgRnVu
Y3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jaygpOw0KDQogICAgdm9pZCBzZXRMYXN0U2VlbkNhbGxl
ZShWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxsZWUpOw0KICAgIHZvaWQg
Y2xlYXJMYXN0U2VlbkNhbGxlZSgpOw0KICAgIEpTT2JqZWN0KiBsYXN0U2VlbkNhbGxlZSgpIGNv
bnN0Ow0KICAgIGJvb2wgaGF2ZUxhc3RTZWVuQ2FsbGVlKCkgY29uc3Q7DQogICAgDQogICAgdm9p
ZCBzZXRFeGVjdXRhYmxlRHVyaW5nQ29tcGlsYXRpb24oRXhlY3V0YWJsZUJhc2UqKTsNCiAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpOw0KICAgIA0KICAgIHZvaWQgc2V0U3R1YihSZWY8
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+JiYgbmV3U3R1YikNCiAgICB7DQogICAgICAgIGNs
ZWFyU3R1YigpOw0KICAgICAgICBtX3N0dWIgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KG5ld1N0dWIpOw0KICAgIH0NCg0KICAgIHZvaWQgY2xlYXJTdHViKCk7DQoNCiAgICBQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSogc3R1YigpIGNvbnN0DQogICAgew0KICAgICAgICBy
ZXR1cm4gbV9zdHViLmdldCgpOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0U2xvd1N0dWIoUmVmPEpJ
VFN0dWJSb3V0aW5lPiYmIG5ld1Nsb3dTdHViKQ0KICAgIHsNCiAgICAgICAgbV9zbG93U3R1YiA9
IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4obmV3U2xvd1N0dWIpOw0KICAgIH0N
Cg0KICAgIHZvaWQgY2xlYXJTbG93U3R1YigpDQogICAgew0KICAgICAgICBtX3Nsb3dTdHViID0g
bnVsbHB0cjsNCiAgICB9DQoNCiAgICBKSVRTdHViUm91dGluZSogc2xvd1N0dWIoKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIG1fc2xvd1N0dWIuZ2V0KCk7DQogICAgfQ0KDQogICAgYm9vbCBzZWVu
T25jZSgpDQogICAgew0KICAgICAgICByZXR1cm4gbV9oYXNTZWVuU2hvdWxkUmVwYXRjaDsNCiAg
ICB9DQoNCiAgICB2b2lkIGNsZWFyU2VlbigpDQogICAgew0KICAgICAgICBtX2hhc1NlZW5TaG91
bGRSZXBhdGNoID0gZmFsc2U7DQogICAgfQ0KDQogICAgdm9pZCBzZXRTZWVuKCkNCiAgICB7DQog
ICAgICAgIG1faGFzU2VlblNob3VsZFJlcGF0Y2ggPSB0cnVlOw0KICAgIH0NCg0KICAgIGJvb2wg
aGFzU2VlbkNsb3N1cmUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1faGFzU2VlbkNsb3N1cmU7
DQogICAgfQ0KDQogICAgdm9pZCBzZXRIYXNTZWVuQ2xvc3VyZSgpDQogICAgew0KICAgICAgICBt
X2hhc1NlZW5DbG9zdXJlID0gdHJ1ZTsNCiAgICB9DQoNCiAgICBib29sIGNsZWFyZWRCeUdDKCkN
CiAgICB7DQogICAgICAgIHJldHVybiBtX2NsZWFyZWRCeUdDOw0KICAgIH0NCiAgICANCiAgICBi
b29sIGNsZWFyZWRCeVZpcnR1YWwoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fY2xlYXJlZEJ5
VmlydHVhbDsNCiAgICB9DQoNCiAgICBib29sIGNsZWFyZWRCeUpldHRpc29uKCkNCiAgICB7DQog
ICAgICAgIHJldHVybiBtX2NsZWFyZWRCeUpldHRpc29uOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0
Q2xlYXJlZEJ5VmlydHVhbCgpDQogICAgew0KICAgICAgICBtX2NsZWFyZWRCeVZpcnR1YWwgPSB0
cnVlOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0Q2xlYXJlZEJ5SmV0dGlzb24oKQ0KICAgIHsNCiAg
ICAgICAgbV9jbGVhcmVkQnlKZXR0aXNvbiA9IHRydWU7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
c2V0Q2FsbFR5cGUoQ2FsbFR5cGUgY2FsbFR5cGUpDQogICAgew0KICAgICAgICBtX2NhbGxUeXBl
ID0gY2FsbFR5cGU7DQogICAgfQ0KDQogICAgQ2FsbFR5cGUgY2FsbFR5cGUoKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKTsNCiAgICB9DQoN
CiAgICB1aW50MzJfdCogYWRkcmVzc09mTWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuICZtX21heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOw0K
ICAgIH0NCg0KICAgIHVpbnQzMl90IG1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX21heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOw0KICAg
IH0NCiAgICANCiAgICB2b2lkIHNldE1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHVuc2ln
bmVkKTsNCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aENvdW50KCkNCiAg
ICB7DQogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRl
cnByZXRfY2FzdDxDYWxsTGlua0luZm8qPigweDQwMDApLT5tX3Nsb3dQYXRoQ291bnQpKSAtIDB4
NDAwMCk7DQogICAgfQ0KDQogICAgR1BSUmVnIGNhbGxlZUdQUigpDQogICAgew0KICAgICAgICBy
ZXR1cm4gbV9jYWxsZWVHUFI7DQogICAgfQ0KDQogICAgdWludDMyX3Qgc2xvd1BhdGhDb3VudCgp
DQogICAgew0KICAgICAgICByZXR1cm4gbV9zbG93UGF0aENvdW50Ow0KICAgIH0NCg0KICAgIHZv
aWQgc2V0Q29kZU9yaWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pDQogICAgew0KICAgICAgICBt
X2NvZGVPcmlnaW4gPSBjb2RlT3JpZ2luOw0KICAgIH0NCg0KICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbigpDQogICAgew0KICAgICAgICByZXR1cm4gbV9jb2RlT3JpZ2luOw0KICAgIH0NCg0KICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+DQogICAgdm9pZCBmb3JFYWNoRGVwZW5kZW50Q2Vs
bChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzTGlu
a2VkKCkpIHsNCiAgICAgICAgICAgIGlmIChzdHViKCkpDQogICAgICAgICAgICAgICAgc3R1Yigp
LT5mb3JFYWNoRGVwZW5kZW50Q2VsbChmdW5jdG9yKTsNCiAgICAgICAgICAgIGVsc2Ugew0KICAg
ICAgICAgICAgICAgIGZ1bmN0b3IobV9jYWxsZWVPckNvZGVCbG9jay5nZXQoKSk7DQogICAgICAg
ICAgICAgICAgaWYgKGlzRGlyZWN0KCkpDQogICAgICAgICAgICAgICAgICAgIGZ1bmN0b3IobV9s
YXN0U2VlbkNhbGxlZU9yRXhlY3V0YWJsZS5nZXQoKSk7DQogICAgICAgICAgICB9DQogICAgICAg
IH0NCiAgICAgICAgaWYgKCFpc0RpcmVjdCgpICYmIGhhdmVMYXN0U2VlbkNhbGxlZSgpKQ0KICAg
ICAgICAgICAgZnVuY3RvcihsYXN0U2VlbkNhbGxlZSgpKTsNCiAgICB9DQoNCiAgICB2b2lkIHZp
c2l0V2VhayhWTSYpOw0KDQogICAgdm9pZCBzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxG
cmFtZVNodWZmbGVEYXRhJik7DQoNCiAgICBjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSogZnJh
bWVTaHVmZmxlRGF0YSgpDQogICAgew0KICAgICAgICByZXR1cm4gbV9mcmFtZVNodWZmbGVEYXRh
LmdldCgpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB1aW50MzJfdCBtX21heEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIHsgMCB9OyANCiAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFs
UHRyVGFnPiBtX2NhbGxSZXR1cm5Mb2NhdGlvbk9yUGF0Y2hhYmxlSnVtcDsNCiAgICBDb2RlTG9j
YXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2hvdFBhdGhCZWdpbk9yU2xvd1BhdGhTdGFy
dDsNCiAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX2hvdFBhdGhP
dGhlcjsNCiAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBtX2NhbGxlZU9yQ29kZUJsb2NrOw0KICAg
IFdyaXRlQmFycmllcjxKU0NlbGw+IG1fbGFzdFNlZW5DYWxsZWVPckV4ZWN1dGFibGU7DQogICAg
UmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBtX3N0dWI7DQogICAgUmVmUHRyPEpJ
VFN0dWJSb3V0aW5lPiBtX3Nsb3dTdHViOw0KICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRnJhbWVT
aHVmZmxlRGF0YT4gbV9mcmFtZVNodWZmbGVEYXRhOw0KICAgIENvZGVPcmlnaW4gbV9jb2RlT3Jp
Z2luOw0KICAgIGJvb2wgbV9oYXNTZWVuU2hvdWxkUmVwYXRjaCA6IDE7DQogICAgYm9vbCBtX2hh
c1NlZW5DbG9zdXJlIDogMTsNCiAgICBib29sIG1fY2xlYXJlZEJ5R0MgOiAxOw0KICAgIGJvb2wg
bV9jbGVhcmVkQnlWaXJ0dWFsIDogMTsNCiAgICBib29sIG1fYWxsb3dTdHVicyA6IDE7DQogICAg
Ym9vbCBtX2NsZWFyZWRCeUpldHRpc29uIDogMTsNCiAgICB1bnNpZ25lZCBtX2NhbGxUeXBlIDog
NDsgDQogICAgR1BSUmVnIG1fY2FsbGVlR1BSIHsgSW52YWxpZEdQUlJlZyB9Ow0KICAgIHVpbnQz
Ml90IG1fc2xvd1BhdGhDb3VudCB7IDAgfTsNCn07DQoNCmlubGluZSBDb2RlT3JpZ2luIGdldENh
bGxMaW5rSW5mb0NvZGVPcmlnaW4oQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pDQp7DQogICAg
cmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCk7DQp9DQoNCiNsaW5lIDM4OCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ2Fs
bExpbmtJbmZvLmgiDQoNCn0gDQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQoNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXENvbXBpbGF0aW9uUmVzdWx0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7
DQoNCmVudW0gQ29tcGlsYXRpb25SZXN1bHQgew0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IENvbXBpbGF0aW9uRmFpbGVkLA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIENvbXBpbGF0aW9uSW52YWxpZGF0ZWQsDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgQ29tcGlsYXRpb25TdWNjZXNzZnVsLA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIENvbXBpbGF0aW9uRGVmZXJyZWQNCn07DQoNCn0gDQoNCm5hbWVz
cGFjZSBXVEYgew0KDQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkNvbXBp
bGF0aW9uUmVzdWx0KTsNCg0KfSANCiNsaW5lIDM5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCINCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxkZmdc
XERGR0NvZGVPcmlnaW5Qb29sLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgew0KDQpjbGFzcyBDb2RlT3JpZ2luUG9vbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDb2RlT3JpZ2luUG9vbD4gew0KcHVibGljOg0KICAgIHN0YXRpYyBSZWY8
Q29kZU9yaWdpblBvb2w+IGNyZWF0ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDb2RlT3JpZ2luUG9vbCk7DQogICAgfQ0KDQogICAgQ2FsbFNpdGVJbmRleCBhZGRDb2Rl
T3JpZ2luKENvZGVPcmlnaW4pOw0KICAgIENhbGxTaXRlSW5kZXggYWRkVW5pcXVlQ2FsbFNpdGVJ
bmRleChDb2RlT3JpZ2luKTsNCiAgICBDYWxsU2l0ZUluZGV4IGxhc3RDYWxsU2l0ZSgpIGNvbnN0
Ow0KICAgIERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4IGFkZERpc3Bvc2FibGVDYWxsU2l0ZUluZGV4
KENvZGVPcmlnaW4pOw0KICAgIHZvaWQgcmVtb3ZlRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgoRGlz
cG9zYWJsZUNhbGxTaXRlSW5kZXgpOw0KICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsNCg0KICAgIENv
ZGVPcmlnaW4gZ2V0KHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBtX2NvZGVPcmlnaW5zW2luZGV4
XTsgfQ0KICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVPcmlnaW5zLnNp
emUoKTsgfQ0KDQpwcml2YXRlOg0KICAgIFZlY3RvcjxDb2RlT3JpZ2luLCAwLCBVbnNhZmVWZWN0
b3JPdmVyZmxvdz4gbV9jb2RlT3JpZ2luczsNCiAgICBWZWN0b3I8dW5zaWduZWQ+IG1fY2FsbFNp
dGVJbmRleEZyZWVMaXN0Ow0KfTsNCg0KfSB9IA0KDQojbGluZSA2MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxkZmdcXERGR0NvZGVPcmlnaW5Qb29s
LmgiDQojbGluZSA0MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRmZ1xcREZHQ29tbW9uLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGRmZ1xcREZHQ29tcGlsYXRpb25Nb2RlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgew0KDQplbnVtIENvbXBpbGF0aW9uTW9kZSB7DQogICAgSW52
YWxpZENvbXBpbGF0aW9uTW9kZSwNCiAgICBERkdNb2RlLA0KICAgIEZUTE1vZGUsDQogICAgRlRM
Rm9yT1NSRW50cnlNb2RlDQp9Ow0KDQppbmxpbmUgYm9vbCBpc0ZUTChDb21waWxhdGlvbk1vZGUg
bW9kZSkNCnsNCiAgICBzd2l0Y2ggKG1vZGUpIHsNCiAgICBjYXNlIEZUTE1vZGU6DQogICAgY2Fz
ZSBGVExGb3JPU1JFbnRyeU1vZGU6DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIGRlZmF1bHQ6
DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQp9DQoNCn0gfSANCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCnZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpDb21waWxh
dGlvbk1vZGUpOw0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcZGZnXFxERkdDb21tb24uaCINCg0KDQoNCg0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgew0KDQpzdHJ1Y3QgTm9kZTsNCg0KdHlwZWRlZiB1
aW50MzJfdCBCbG9ja0luZGV4Ow0Kc3RhdGljIGNvbnN0ZXhwciBCbG9ja0luZGV4IE5vQmxvY2sg
PSAweGZmZmZmZmZmOw0KDQpleHRlcm4gY29uc3QgY2hhciogY29uc3QgdGllck5hbWU7DQoNCg0K
DQoNCg0KDQplbnVtIFJlZkNoaWxkcmVuTW9kZSB7DQogICAgUmVmQ2hpbGRyZW4sDQogICAgRG9u
dFJlZkNoaWxkcmVuDQp9Ow0KDQoNCg0KZW51bSBSZWZOb2RlTW9kZSB7DQogICAgUmVmTm9kZSwN
CiAgICBEb250UmVmTm9kZQ0KfTsNCg0KZW51bSBTd2l0Y2hLaW5kIHsNCiAgICBTd2l0Y2hJbW0s
DQogICAgU3dpdGNoQ2hhciwNCiAgICBTd2l0Y2hTdHJpbmcsDQogICAgU3dpdGNoQ2VsbA0KfTsN
Cg0KaW5saW5lIGJvb2wgdmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZChDb21waWxhdGlvbk1vZGUg
bW9kZSA9IERGR01vZGUpDQp7DQogICAgcmV0dXJuIE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlv
bigpIHx8IE9wdGlvbnM6OmR1bXBHcmFwaEF0RWFjaFBoYXNlKCkgfHwgKGlzRlRMKG1vZGUpICYm
IE9wdGlvbnM6OnZlcmJvc2VGVExDb21waWxhdGlvbigpKTsNCn0NCg0KaW5saW5lIGJvb2wgbG9n
Q29tcGlsYXRpb25DaGFuZ2VzKENvbXBpbGF0aW9uTW9kZSBtb2RlID0gREZHTW9kZSkNCnsNCiAg
ICByZXR1cm4gdmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZChtb2RlKSB8fCBPcHRpb25zOjpsb2dD
b21waWxhdGlvbkNoYW5nZXMoKTsNCn0NCg0KaW5saW5lIGJvb2wgc2hvdWxkRHVtcEdyYXBoQXRF
YWNoUGhhc2UoQ29tcGlsYXRpb25Nb2RlIG1vZGUpDQp7DQogICAgaWYgKGlzRlRMKG1vZGUpKQ0K
ICAgICAgICByZXR1cm4gT3B0aW9uczo6ZHVtcEdyYXBoQXRFYWNoUGhhc2UoKSB8fCBPcHRpb25z
OjpkdW1wREZHRlRMR3JhcGhBdEVhY2hQaGFzZSgpOw0KICAgIHJldHVybiBPcHRpb25zOjpkdW1w
R3JhcGhBdEVhY2hQaGFzZSgpIHx8IE9wdGlvbnM6OmR1bXBERkdHcmFwaEF0RWFjaFBoYXNlKCk7
DQp9DQoNCmlubGluZSBib29sIHZhbGlkYXRpb25FbmFibGVkKCkNCnsNCg0KDQojbGluZSA5MSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxkZmdcXERG
R0NvbW1vbi5oIg0KICAgIHJldHVybiBPcHRpb25zOjp2YWxpZGF0ZUdyYXBoKCkgfHwgT3B0aW9u
czo6dmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlKCk7DQojbGluZSA5MyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxkZmdcXERGR0NvbW1vbi5oIg0KfQ0K
DQppbmxpbmUgYm9vbCBlbmFibGVJbnQ1MigpDQp7DQoNCiAgICByZXR1cm4gdHJ1ZTsNCg0KDQoj
bGluZSAxMDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcZGZnXFxERkdDb21tb24uaCINCn0NCg0KDQoNCmVudW0gUHJlZGljdGlvblBhc3Mgew0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIFByaW1hcnlQYXNzLA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIFJhcmVDYXNlUGFzcywNCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICBEb3VibGVWb3RpbmdQYXNzLA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIEZpeHVwUGFzcw0KfTsNCg0KZW51bSBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0
ZSB7IEhhdmVOb3RTdGFydGVkUmVnaXN0ZXJpbmcsIEFsbFN0cnVjdHVyZXNBcmVSZWdpc3RlcmVk
IH07DQoNCmVudW0gU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHsgU3RydWN0dXJlUmVnaXN0
ZXJlZE5vcm1hbGx5LCBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCB9Ow0KDQplbnVtIE9w
dGltaXphdGlvbkZpeHBvaW50U3RhdGUgeyBCZWZvcmVGaXhwb2ludCwgRml4cG9pbnROb3RDb252
ZXJnZWQsIEZpeHBvaW50Q29udmVyZ2VkIH07DQoNCg0KZW51bSBHcmFwaEZvcm0gew0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIExvYWRTdG9yZSwNCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICBUaHJlYWRlZENQUywNCiAgICANCiAgICANCiAgICBT
U0ENCn07DQoNCg0KZW51bSBVbmlmaWNhdGlvblN0YXRlIHsNCiAgICANCiAgICBMb2NhbGx5VW5p
ZmllZCwNCiAgICANCiAgICANCiAgICBHbG9iYWxseVVuaWZpZWQNCn07DQoNCg0KZW51bSBSZWZD
b3VudFN0YXRlIHsNCiAgICANCiAgICBFdmVyeXRoaW5nSXNMaXZlLA0KDQogICAgDQogICAgRXhh
Y3RSZWZDb3VudA0KfTsNCg0KZW51bSBPcGVyYW5kU3BlY3VsYXRpb25Nb2RlIHsgQXV0b21hdGlj
T3BlcmFuZFNwZWN1bGF0aW9uLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfTsNCg0KZW51bSBQ
cm9vZlN0YXR1cyB7IE5lZWRzQ2hlY2ssIElzUHJvdmVkIH07DQoNCmlubGluZSBib29sIGlzUHJv
dmVkKFByb29mU3RhdHVzIHByb29mU3RhdHVzKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1
cm4gcHJvb2ZTdGF0dXMgPT0gSXNQcm92ZWQ7DQp9DQoNCmlubGluZSBQcm9vZlN0YXR1cyBwcm9v
ZlN0YXR1c0ZvcklzUHJvdmVkKGJvb2wgaXNQcm92ZWQpDQp7DQogICAgcmV0dXJuIGlzUHJvdmVk
ID8gSXNQcm92ZWQgOiBOZWVkc0NoZWNrOw0KfQ0KDQplbnVtIEtpbGxTdGF0dXMgeyBEb2VzTm90
S2lsbCwgRG9lc0tpbGwgfTsNCg0KaW5saW5lIGJvb2wgZG9lc0tpbGwoS2lsbFN0YXR1cyBraWxs
U3RhdHVzKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4ga2lsbFN0YXR1cyA9PSBEb2Vz
S2lsbDsNCn0NCg0KaW5saW5lIEtpbGxTdGF0dXMga2lsbFN0YXR1c0ZvckRvZXNLaWxsKGJvb2wg
ZG9lc0tpbGwpDQp7DQogICAgcmV0dXJuIGRvZXNLaWxsID8gRG9lc0tpbGwgOiBEb2VzTm90S2ls
bDsNCn0NCg0KZW51bSBjbGFzcyBQbGFuU3RhZ2Ugew0KICAgIEluaXRpYWwsDQogICAgQWZ0ZXJG
aXh1cA0KfTsNCg0KDQoNCg0Kdm9pZCBzdGFydENyYXNoaW5nKCk7DQoNCl9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBib29sIGlzQ3Jhc2hpbmcoKTsNCg0Kc3RydWN0IE5vZGVBbmRJbmRleCB7DQogICAg
Tm9kZUFuZEluZGV4KCkNCiAgICAgICAgOiBub2RlKG51bGxwdHIpDQogICAgICAgICwgaW5kZXgo
MHhmZmZmZmZmZikNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIE5vZGVBbmRJbmRleChOb2RlKiBu
b2RlLCB1bnNpZ25lZCBpbmRleCkNCiAgICAgICAgOiBub2RlKG5vZGUpDQogICAgICAgICwgaW5k
ZXgoaW5kZXgpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KICAgIA0KICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAhbm9kZTsNCiAgICB9
DQogICAgDQogICAgTm9kZSogbm9kZTsNCiAgICB1bnNpZ25lZCBpbmRleDsNCn07DQoNCg0KDQpi
b29sIHN0cmluZ0xlc3NUaGFuKFN0cmluZ0ltcGwmIGEsIFN0cmluZ0ltcGwmIGIpOw0KDQp9IH0g
DQoNCm5hbWVzcGFjZSBXVEYgew0KDQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OkRGRzo6T3B0aW1pemF0aW9uRml4cG9pbnRTdGF0ZSk7DQp2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mLCBKU0M6OkRGRzo6R3JhcGhGb3JtKTsNCnZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYsIEpTQzo6REZHOjpVbmlmaWNhdGlvblN0YXRlKTsNCnZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpSZWZDb3VudFN0YXRlKTsNCnZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpQcm9vZlN0YXR1cyk7DQoNCn0gDQoNCiNs
aW5lIDMwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxkZmdcXERGR0NvbW1vbi5oIg0KDQpuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7DQoN
Cg0KDQplbnVtIENhcGFiaWxpdHlMZXZlbCB7DQogICAgQ2Fubm90Q29tcGlsZSwNCiAgICBDYW5D
b21waWxlLA0KICAgIENhbkNvbXBpbGVBbmRJbmxpbmUsDQogICAgQ2FwYWJpbGl0eUxldmVsTm90
U2V0DQp9Ow0KDQppbmxpbmUgYm9vbCBjYW5Db21waWxlKENhcGFiaWxpdHlMZXZlbCBsZXZlbCkN
CnsNCiAgICBzd2l0Y2ggKGxldmVsKSB7DQogICAgY2FzZSBDYW5Db21waWxlOg0KICAgIGNhc2Ug
Q2FuQ29tcGlsZUFuZElubGluZToNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoN
CiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KaW5saW5lIGJvb2wgY2FuSW5saW5l
KENhcGFiaWxpdHlMZXZlbCBsZXZlbCkNCnsNCiAgICBzd2l0Y2ggKGxldmVsKSB7DQogICAgY2Fz
ZSBDYW5Db21waWxlQW5kSW5saW5lOg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0
Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQppbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGxlYXN0VXBwZXJCb3VuZChDYXBhYmlsaXR5TGV2ZWwgYSwgQ2FwYWJpbGl0eUxldmVsIGIp
DQp7DQogICAgc3dpdGNoIChhKSB7DQogICAgY2FzZSBDYW5ub3RDb21waWxlOg0KICAgICAgICBy
ZXR1cm4gQ2Fubm90Q29tcGlsZTsNCiAgICBjYXNlIENhbkNvbXBpbGU6DQogICAgICAgIHN3aXRj
aCAoYikgew0KICAgICAgICBjYXNlIENhbkNvbXBpbGU6DQogICAgICAgIGNhc2UgQ2FuQ29tcGls
ZUFuZElubGluZToNCiAgICAgICAgICAgIHJldHVybiBDYW5Db21waWxlOw0KICAgICAgICBkZWZh
dWx0Og0KICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7DQogICAgICAgIH0NCiAgICBj
YXNlIENhbkNvbXBpbGVBbmRJbmxpbmU6DQogICAgICAgIHJldHVybiBiOw0KICAgIGNhc2UgQ2Fw
YWJpbGl0eUxldmVsTm90U2V0Og0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBD
YW5ub3RDb21waWxlOw0KICAgIH0NCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIENhbm5vdENv
bXBpbGU7DQp9DQoNCg0KaW5saW5lIGJvb2wgc2hvdWxkRHVtcERpc2Fzc2VtYmx5KENvbXBpbGF0
aW9uTW9kZSBtb2RlID0gREZHTW9kZSkNCnsNCg0KICAgIHJldHVybiBPcHRpb25zOjpkdW1wRGlz
YXNzZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wREZHRGlzYXNzZW1ibHkoKSB8fCAoaXNGVEwobW9k
ZSkgJiYgT3B0aW9uczo6ZHVtcEZUTERpc2Fzc2VtYmx5KCkpOw0KDQoNCg0KI2xpbmUgMzcwICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRmZ1xcREZH
Q29tbW9uLmgiDQp9DQoNCn0gfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpDYXBhYmlsaXR5TGV2ZWwpOw0KDQp9IA0KI2xp
bmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
Ynl0ZWNvZGVcXENvZGVCbG9jay5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcRGlyZWN0RXZhbENvZGVDYWNoZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxFdmFsRXhlY3V0YWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEdsb2JhbEV4ZWN1dGFibGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpj
bGFzcyBHbG9iYWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgew0KcHVibGlj
Og0KICAgIHVzaW5nIEJhc2UgPSBTY3JpcHRFeGVjdXRhYmxlOw0KICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVj
dHVyZUlzSW1tb3J0YWw7DQoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xh
c3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgdW5zaWduZWQgbGFzdExp
bmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9DQogICAgdW5zaWduZWQgZW5kQ29sdW1u
KCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0NCg0KICAgIHZvaWQgcmVjb3JkUGFyc2Uo
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzLCBpbnQgbGFz
dExpbmUsIHVuc2lnbmVkIGVuZENvbHVtbikNCiAgICB7DQogICAgICAgIEJhc2U6OnJlY29yZFBh
cnNlKGZlYXR1cmVzLCBoYXNDYXB0dXJlZFZhcmlhYmxlcyk7DQogICAgICAgIG1fbGFzdExpbmUg
PSBsYXN0TGluZTsNCiAgICAgICAgbV9lbmRDb2x1bW4gPSBlbmRDb2x1bW47DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICB9DQoNCnByb3RlY3RlZDoNCiAgICBHbG9iYWxFeGVjdXRhYmxlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbiwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgSW50cmluc2ljIGludHJp
bnNpYykNCiAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgdm0sIHNvdXJjZUNvZGUsIGlzSW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCwg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUsIGludHJpbnNpYykNCiAg
ICB7DQogICAgfQ0KDQogICAgaW50IG1fbGFzdExpbmUgeyAtMSB9Ow0KICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uIHsgMHhmZmZmZmZmZiB9Ow0KfTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEV2YWxFeGVj
dXRhYmxlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxVbmxpbmtlZEV2YWxDb2RlQmxvY2suaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYnl0ZWNvZGVcXFVubGlua2VkR2xvYmFsQ29kZUJsb2NrLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIDogcHVibGljIFVu
bGlua2VkQ29kZUJsb2NrIHsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIFVubGlua2VkQ29kZUJsb2Nr
IEJhc2U7DQoNCnByb3RlY3RlZDoNCiAgICBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayhWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0YWJs
ZUluZm8mIGluZm8sIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0aW9u
TW9kZSkNCiAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNvZGVUeXBlLCBpbmZvLCBjb2Rl
R2VuZXJhdGlvbk1vZGUpDQogICAgew0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENv
ZGVCbG9ja1R5cGU+DQogICAgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2soRGVjb2RlciYgZGVjb2Rl
ciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IENhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tU
eXBlPiYgY2FjaGVkQ29kZUJsb2NrKQ0KICAgICAgICA6IEJhc2UoZGVjb2Rlciwgc3RydWN0dXJl
LCBjYWNoZWRDb2RlQmxvY2spDQogICAgew0KICAgIH0NCn07DQoNCn0NCiNsaW5lIDI5ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxV
bmxpbmtlZEV2YWxDb2RlQmxvY2suaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENhY2hl
ZEV2YWxDb2RlQmxvY2s7DQoNCmNsYXNzIFVubGlua2VkRXZhbENvZGVCbG9jayBmaW5hbCA6IHB1
YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBVbmxp
bmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9k
ZT4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQog
ICAgICAgIHJldHVybiB2bS51bmxpbmtlZEV2YWxDb2RlQmxvY2tTcGFjZTxtb2RlPigpOw0KICAg
IH0NCg0KICAgIHN0YXRpYyBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIGNv
bnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBj
b2RlR2VuZXJhdGlvbk1vZGUpDQogICAgew0KICAgICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRFdmFsQ29kZUJs
b2NrPih2bS5oZWFwKSkgVW5saW5rZWRFdmFsQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZEV2YWxD
b2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7DQogICAg
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7DQogICAgICAgIHJldHVybiBpbnN0YW5j
ZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOw0KDQogICAgY29u
c3QgSWRlbnRpZmllciYgdmFyaWFibGUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIG1fdmFyaWFi
bGVzW2luZGV4XTsgfQ0KICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdmFy
aWFibGVzLnNpemUoKTsgfQ0KICAgIHZvaWQgYWRvcHRWYXJpYWJsZXMoVmVjdG9yPElkZW50aWZp
ZXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgdmFyaWFibGVzKQ0KICAgIHsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICBtX3ZhcmlhYmxlcy5zd2FwKHZhcmlhYmxlcyk7DQogICAgfQ0K
DQogICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZSh1bnNpZ25l
ZCBpbmRleCkgeyByZXR1cm4gbV9mdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlc1tpbmRleF07IH0N
CiAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1f
ZnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMuc2l6ZSgpOyB9DQogICAgdm9pZCBhZG9wdEZ1bmN0
aW9uSG9pc3RpbmdDYW5kaWRhdGVzKFZlY3RvcjxJZGVudGlmaWVyLCAwLCBVbnNhZmVWZWN0b3JP
dmVyZmxvdz4mJiBmdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcykNCiAgICB7DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgbV9mdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcyA9IHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oZnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMpOw0K
ICAgIH0NCnByaXZhdGU6DQogICAgZnJpZW5kIENhY2hlZEV2YWxDb2RlQmxvY2s7DQoNCiAgICBV
bmxpbmtlZEV2YWxDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
RXhlY3V0YWJsZUluZm8mIGluZm8sIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVH
ZW5lcmF0aW9uTW9kZSkNCiAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIEV2YWxDb2RlLCBp
bmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpDQogICAgew0KICAgIH0NCg0KICAgIFVubGlua2VkRXZh
bENvZGVCbG9jayhEZWNvZGVyJiwgY29uc3QgQ2FjaGVkRXZhbENvZGVCbG9jayYpOw0KDQogICAg
VmVjdG9yPElkZW50aWZpZXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX3ZhcmlhYmxlczsN
CiAgICBWZWN0b3I8SWRlbnRpZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fZnVuY3Rp
b25Ib2lzdGluZ0NhbmRpZGF0ZXM7DQoNCnB1YmxpYzoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZEV2YWxDb2RlQmxvY2tUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCn07DQoN
Cn0NCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEV2YWxFeGVjdXRhYmxlLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpj
bGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBHbG9iYWxFeGVjdXRhYmxlIHsNCiAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KcHVibGljOg0KICAgIHVzaW5nIEJhc2Ug
PSBHbG9iYWxFeGVjdXRhYmxlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoN
CiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOw0KICAgIA0KICAgIEV2YWxDb2RlQmxv
Y2sqIGNvZGVCbG9jaygpDQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEV2YWxD
b2RlQmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9ldmFsQ29kZUJs
b2NrLmdldCgpKSk7DQogICAgfQ0KDQogICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUo
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7DQogICAg
fQ0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykNCiAgICB7DQogICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8o
RXZhbEV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+DQogICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICBy
ZXR1cm4gdm0uZXZhbEV4ZWN1dGFibGVTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIHByb3Rl
Y3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRp
YyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2lu
Zm87IH07DQoNCiAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUo
KSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
LCBmYWxzZSwgZXZhbENvbnRleHRUeXBlKCkpOyB9DQoNCiAgICB1bnNpZ25lZCBudW1WYXJpYWJs
ZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0N
CiAgICB1bnNpZ25lZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9
DQogICAgdW5zaWduZWQgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9DQogICAgYm9vbCBh
bGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJs
b2NrLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpOyB9DQogICAgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcj4obV9uZWVkc0NsYXNzRmllbGRJbml0aWFs
aXplcik7IH0NCiAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAo
Vk0mKTsNCg0KcHJvdGVjdGVkOg0KICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsNCiAg
ICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsNCg0KICAgIHVzaW5nIEJhc2U6OmZpbmlz
aENyZWF0aW9uOw0KICAgIEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291
cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2
YWxDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOw0KDQogICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KDQogICAgdW5zaWdu
ZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7DQoNCiAgICBXcml0ZUJhcnJpZXI8
RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9ldmFsQ29kZUJsb2NrOw0KICAgIFdyaXRlQmFy
cmllcjxVbmxpbmtlZEV2YWxDb2RlQmxvY2s+IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrOw0KICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90ZW1wbGF0ZU9iamVjdE1hcDsN
Cn07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxEaXJlY3RFdmFsRXhlY3V0YWJsZS5oIg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0KY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXZh
bEV4ZWN1dGFibGUgew0KcHVibGljOg0KICAgIHN0YXRpYyBEaXJlY3RFdmFsRXhlY3V0YWJsZSog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRDb250ZXh0
VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCosIEVDTUFNb2RlKTsNCnByaXZhdGU6DQogICAgRGlyZWN0
RXZhbEV4ZWN1dGFibGUoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBp
blN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24sIEV2YWxDb250ZXh0VHlwZSk7DQp9Ow0KDQpzdGF0aWNfYXNzZXJ0KHNpemVvZihE
aXJlY3RFdmFsRXhlY3V0YWJsZSkgPT0gc2l6ZW9mKEV2YWxFeGVjdXRhYmxlKSwgIiIpOw0KDQp9
IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcYnl0ZWNvZGVcXERpcmVjdEV2YWxDb2RlQ2FjaGUuaCINCg0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCiAgICBjbGFzcyBTbG90VmlzaXRvcjsNCg0KICAgIGNsYXNzIERpcmVjdEV2YWxD
b2RlQ2FjaGUgew0KICAgIHB1YmxpYzoNCiAgICAgICAgY2xhc3MgQ2FjaGVLZXkgew0KICAgICAg
ICBwdWJsaWM6DQogICAgICAgICAgICBDYWNoZUtleShjb25zdCBTdHJpbmcmIHNvdXJjZSwgQ2Fs
bFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4KQ0KICAgICAgICAgICAgICAgIDogbV9zb3VyY2Uoc291
cmNlLmltcGwoKSkNCiAgICAgICAgICAgICAgICAsIG1fY2FsbFNpdGVJbmRleChjYWxsU2l0ZUlu
ZGV4KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBDYWNoZUtl
eShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpDQogICAgICAgICAgICAgICAgOiBtX3Nv
dXJjZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgQ2FjaGVLZXkoKSA9IGRlZmF1bHQ7DQoNCiAgICAgICAgICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS0+aGFzaCgpIF4gbV9jYWxs
U2l0ZUluZGV4LmJpdHMoKTsgfQ0KDQogICAgICAgICAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuICFtX3NvdXJjZTsgfQ0KDQogICAgICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ2FjaGVLZXkmIG90aGVyKSBjb25zdA0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIHJldHVybiBtX2NhbGxTaXRlSW5kZXggPT0gb3RoZXIubV9jYWxsU2l0ZUluZGV4ICYmIFdU
Rjo6ZXF1YWwobV9zb3VyY2UuZ2V0KCksIG90aGVyLm1fc291cmNlLmdldCgpKTsNCiAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0NCg0KICAgICAg
ICAgICAgc3RydWN0IEhhc2ggew0KICAgICAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IENhY2hlS2V5JiBrZXkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
ICAgICByZXR1cm4ga2V5Lmhhc2goKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2FjaGVLZXkmIGxocywgY29uc3QgQ2FjaGVLZXkm
IHJocykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBsaHMg
PT0gcmhzOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsNCiAgICAgICAg
ICAgIH07DQoNCiAgICAgICAgICAgIHR5cGVkZWYgU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENhY2hl
S2V5PiBIYXNoVHJhaXRzOw0KDQogICAgICAgIHByaXZhdGU6DQogICAgICAgICAgICBSZWZQdHI8
U3RyaW5nSW1wbD4gbV9zb3VyY2U7DQogICAgICAgICAgICBDYWxsU2l0ZUluZGV4IG1fY2FsbFNp
dGVJbmRleDsNCiAgICAgICAgfTsNCg0KICAgICAgICBEaXJlY3RFdmFsRXhlY3V0YWJsZSogdHJ5
R2V0KGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1hcC5pbmxpbmVHZXQoQ2Fj
aGVLZXkoZXZhbFNvdXJjZSwgY2FsbFNpdGVJbmRleCkpLmdldCgpOw0KICAgICAgICB9DQogICAg
ICAgIA0KICAgICAgICB2b2lkIHNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG93bmVyLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCwgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlKQ0KICAgICAgICB7
DQogICAgICAgICAgICBpZiAobV9jYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNoZUVudHJpZXMpDQog
ICAgICAgICAgICAgICAgc2V0U2xvdyhnbG9iYWxPYmplY3QsIG93bmVyLCBldmFsU291cmNlLCBj
YWxsU2l0ZUluZGV4LCBldmFsRXhlY3V0YWJsZSk7DQogICAgICAgIH0NCg0KICAgICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlTWFwLmlzRW1wdHkoKTsgfQ0KDQogICAg
ICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsNCg0KICAgICAgICB2b2lkIGNs
ZWFyKCk7DQoNCiAgICBwcml2YXRlOg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBtYXhD
YWNoZUVudHJpZXMgPSA2NDsNCg0KICAgICAgICB2b2lkIHNldFNsb3coSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqIG93bmVyLCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIENhbGxTaXRlSW5kZXgs
IERpcmVjdEV2YWxFeGVjdXRhYmxlKik7DQoNCiAgICAgICAgdHlwZWRlZiBIYXNoTWFwPENhY2hl
S2V5LCBXcml0ZUJhcnJpZXI8RGlyZWN0RXZhbEV4ZWN1dGFibGU+LCBDYWNoZUtleTo6SGFzaCwg
Q2FjaGVLZXk6Okhhc2hUcmFpdHM+IEV2YWxDYWNoZU1hcDsNCiAgICAgICAgRXZhbENhY2hlTWFw
IG1fY2FjaGVNYXA7DQogICAgICAgIExvY2sgbV9sb2NrOw0KICAgIH07DQoNCn0gDQojbGluZSA0
MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRl
Y29kZVxcQ29kZUJsb2NrLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEV4ZWN1dGlvbkNvdW50ZXIuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENvZGVCbG9jazsNCg0KZW51
bSBDb3VudGluZ1ZhcmlhbnQgew0KICAgIENvdW50aW5nRm9yQmFzZWxpbmUsDQogICAgQ291bnRp
bmdGb3JVcHBlclRpZXJzDQp9Ow0KDQpkb3VibGUgYXBwbHlNZW1vcnlVc2FnZUhldXJpc3RpY3Mo
aW50MzJfdCB2YWx1ZSwgQ29kZUJsb2NrKik7DQppbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVy
aXN0aWNzQW5kQ29udmVydFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOw0KDQppbmxp
bmUgaW50MzJfdCBmb3JtYXR0ZWRUb3RhbEV4ZWN1dGlvbkNvdW50KGZsb2F0IHZhbHVlKQ0Kew0K
ICAgIHVuaW9uIHsNCiAgICAgICAgaW50MzJfdCBpOw0KICAgICAgICBmbG9hdCBmOw0KICAgIH0g
dTsNCiAgICB1LmYgPSB2YWx1ZTsNCiAgICByZXR1cm4gdS5pOw0KfQ0KDQp0ZW1wbGF0ZTxDb3Vu
dGluZ1ZhcmlhbnQgY291bnRpbmdWYXJpYW50Pg0KY2xhc3MgRXhlY3V0aW9uQ291bnRlciB7DQog
ICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBw
OyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9j
KHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVl
KHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6
ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpX
VEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcs
IHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdl
YmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3Jj
ZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCiAgICBFeGVjdXRpb25Db3VudGVyKEV4
ZWN1dGlvbkNvdW50ZXImJikgPSBkZWxldGU7IEV4ZWN1dGlvbkNvdW50ZXImIG9wZXJhdG9yPShF
eGVjdXRpb25Db3VudGVyJiYpID0gZGVsZXRlOzsNCnB1YmxpYzoNCiAgICBFeGVjdXRpb25Db3Vu
dGVyKCk7DQogICAgdm9pZCBmb3JjZVNsb3dQYXRoQ29uY3VycmVudGx5KCk7IA0KICAgIGJvb2wg
Y2hlY2tJZlRocmVzaG9sZENyb3NzZWRBbmRTZXQoQ29kZUJsb2NrKik7DQogICAgYm9vbCBoYXND
cm9zc2VkVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyID49IDA7IH0NCiAgICB2
b2lkIHNldE5ld1RocmVzaG9sZChpbnQzMl90IHRocmVzaG9sZCwgQ29kZUJsb2NrKik7DQogICAg
dm9pZCBkZWZlckluZGVmaW5pdGVseSgpOw0KICAgIGRvdWJsZSBjb3VudCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90b3RhbENvdW50KSArIG1fY291bnRlcjsgfQ0KICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Ow0KICAgIA0KICAgIHZvaWQgc2V0TmV3VGhy
ZXNob2xkRm9yT1NSRXhpdCh1aW50MzJfdCBhY3RpdmVUaHJlc2hvbGQsIGRvdWJsZSBtZW1vcnlV
c2FnZUFkanVzdGVkVGhyZXNob2xkKQ0KICAgIHsNCiAgICAgICAgbV9hY3RpdmVUaHJlc2hvbGQg
PSBhY3RpdmVUaHJlc2hvbGQ7DQogICAgICAgIG1fY291bnRlciA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KC1tZW1vcnlVc2FnZUFkanVzdGVkVGhyZXNob2xkKTsNCiAgICAgICAgbV90b3RhbENvdW50
ID0gbWVtb3J5VXNhZ2VBZGp1c3RlZFRocmVzaG9sZDsNCiAgICB9DQoNCiAgICBzdGF0aWMgaW50
MzJfdCBtYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzKCkNCiAgICB7DQog
ICAgICAgIHN3aXRjaCAoY291bnRpbmdWYXJpYW50KSB7DQogICAgICAgIGNhc2UgQ291bnRpbmdG
b3JCYXNlbGluZToNCiAgICAgICAgICAgIHJldHVybiBPcHRpb25zOjptYXhpbXVtRXhlY3V0aW9u
Q291bnRzQmV0d2VlbkNoZWNrcG9pbnRzRm9yQmFzZWxpbmUoKTsNCiAgICAgICAgY2FzZSBDb3Vu
dGluZ0ZvclVwcGVyVGllcnM6DQogICAgICAgICAgICByZXR1cm4gT3B0aW9uczo6bWF4aW11bUV4
ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50c0ZvclVwcGVyVGllcnMoKTsNCiAgICAgICAg
ZGVmYXVsdDoNCiAgICAgICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgp
OyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg4MywgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEV4ZWN1
dGlvbkNvdW50ZXIuaCIsICBfX0ZVTkNUSU9OX18gICwgMTExICk7IH0gd2hpbGUgKGZhbHNlKTsN
CiAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+DQogICAgc3RhdGljIFQgY2xpcHBlZFRocmVzaG9sZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUIHRocmVzaG9sZCkNCiAgICB7DQogICAgICAgIGludDMyX3Qg
bWF4VGhyZXNob2xkOw0KICAgICAgICBpZiAoT3B0aW9uczo6cmFuZG9taXplRXhlY3V0aW9uQ291
bnRzQmV0d2VlbkNoZWNrcG9pbnRzKCkgJiYgZ2xvYmFsT2JqZWN0KQ0KICAgICAgICAgICAgbWF4
VGhyZXNob2xkID0gZ2xvYmFsT2JqZWN0LT53ZWFrUmFuZG9tSW50ZWdlcigpICUgbWF4aW11bUV4
ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50cygpOw0KICAgICAgICBlbHNlDQogICAgICAg
ICAgICBtYXhUaHJlc2hvbGQgPSBtYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9p
bnRzKCk7DQogICAgICAgIGlmICh0aHJlc2hvbGQgPiBtYXhUaHJlc2hvbGQpDQogICAgICAgICAg
ICB0aHJlc2hvbGQgPSBtYXhUaHJlc2hvbGQ7DQogICAgICAgIHJldHVybiB0aHJlc2hvbGQ7DQog
ICAgfQ0KDQpwcml2YXRlOg0KICAgIGJvb2wgaGFzQ3Jvc3NlZFRocmVzaG9sZChDb2RlQmxvY2sq
KSBjb25zdDsNCiAgICBib29sIHNldFRocmVzaG9sZChDb2RlQmxvY2sqKTsNCiAgICB2b2lkIHJl
c2V0KCk7DQoNCnB1YmxpYzoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICBpbnQzMl90IG1fY291bnRlcjsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIGZsb2F0
IG1fdG90YWxDb3VudDsNCg0KICAgIA0KICAgIA0KICAgIGludDMyX3QgbV9hY3RpdmVUaHJlc2hv
bGQ7DQp9Ow0KDQp0eXBlZGVmIEV4ZWN1dGlvbkNvdW50ZXI8Q291bnRpbmdGb3JCYXNlbGluZT4g
QmFzZWxpbmVFeGVjdXRpb25Db3VudGVyOw0KdHlwZWRlZiBFeGVjdXRpb25Db3VudGVyPENvdW50
aW5nRm9yVXBwZXJUaWVycz4gVXBwZXJUaWVyRXhlY3V0aW9uQ291bnRlcjsNCg0KfSANCiNsaW5l
IDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5
dGVjb2RlXFxDb2RlQmxvY2suaCINCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXElDU3RhdHVzTWFwLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDYWxsTGlua0luZm87DQpj
bGFzcyBDYWxsTGlua1N0YXR1czsNCmNsYXNzIENvZGVCbG9jazsNCmNsYXNzIEdldEJ5U3RhdHVz
Ow0KY2xhc3MgSW5CeUlkU3RhdHVzOw0KY2xhc3MgUHV0QnlJZFN0YXR1czsNCmNsYXNzIERlbGV0
ZUJ5U3RhdHVzOw0KY2xhc3MgU3RydWN0dXJlU3R1YkluZm87DQpzdHJ1Y3QgQnlWYWxJbmZvOw0K
DQpzdHJ1Y3QgSUNTdGF0dXMgew0KICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51
bGxwdHIgfTsNCiAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsNCiAg
ICBCeVZhbEluZm8qIGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsNCiAgICBDYWxsTGlua1N0YXR1cyog
Y2FsbFN0YXR1cyB7IG51bGxwdHIgfTsNCiAgICBHZXRCeVN0YXR1cyogZ2V0U3RhdHVzIHsgbnVs
bHB0ciB9Ow0KICAgIEluQnlJZFN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07DQogICAgUHV0
QnlJZFN0YXR1cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9Ow0KICAgIERlbGV0ZUJ5U3RhdHVzKiBk
ZWxldGVTdGF0dXMgeyBudWxscHRyIH07DQp9Ow0KDQp0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgSUNTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOw0KDQpz
dHJ1Y3QgSUNTdGF0dXNDb250ZXh0IHsNCiAgICBJQ1N0YXR1cyBnZXQoQ29kZU9yaWdpbikgY29u
c3Q7DQogICAgYm9vbCBpc0lubGluZWQoQ29kZU9yaWdpbikgY29uc3Q7DQogICAgRXhpdGluZ0lu
bGluZUtpbmQgaW5saW5lS2luZChDb2RlT3JpZ2luKSBjb25zdDsNCiAgICANCiAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSB7IG51bGxwdHIgfTsNCiAgICBDb2RlQmxvY2sqIG9w
dGltaXplZENvZGVCbG9jayB7IG51bGxwdHIgfTsNCiAgICBJQ1N0YXR1c01hcCBtYXA7DQp9Ow0K
DQp0eXBlZGVmIFZlY3RvcjxJQ1N0YXR1c0NvbnRleHQqLCA4PiBJQ1N0YXR1c0NvbnRleHRTdGFj
azsNCg0KfSANCg0KI2xpbmUgNDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5oIg0KDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVENv
ZGVNYXAuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBK
SVRDb2RlTWFwIHsNCnB1YmxpYzoNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZV92PEJ5dGVjb2RlSW5kZXg+KTsNCiAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZV92PENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJU
YWc+Pik7DQogICAgc3RhdGljX2Fzc2VydChhbGlnbm9mKENvZGVMb2NhdGlvbkxhYmVsPEpTRW50
cnlQdHJUYWc+KSA+PSBhbGlnbm9mKEJ5dGVjb2RlSW5kZXgpLCAiUHV0dGluZyBDb2RlTG9jYXRp
b25MYWJlbCB2ZWN0b3IgZmlyc3Qgc2luY2Ugd2UgY2FuIGF2b2lkIGFsaWdubWVudCBjb25zaWRl
cmF0aW9uIG9mIEJ5dGVjb2RlSW5kZXggdmVjdG9yIik7DQogICAgSklUQ29kZU1hcCgpID0gZGVm
YXVsdDsNCiAgICBKSVRDb2RlTWFwKFZlY3RvcjxCeXRlY29kZUluZGV4PiYmIGluZGV4ZXMsIFZl
Y3RvcjxDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPj4mJiBjb2RlTG9jYXRpb25zKQ0K
ICAgICAgICA6IG1fc2l6ZShpbmRleGVzLnNpemUoKSkNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgbV9wb2ludGVyID0gTWFsbG9jUHRyPHVpbnQ4X3Q+OjptYWxsb2Moc2l6ZW9m
KENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KSAqIG1fc2l6ZSArIHNpemVvZihCeXRl
Y29kZUluZGV4KSAqIG1fc2l6ZSk7DQogICAgICAgIHN0ZDo6Y29weShjb2RlTG9jYXRpb25zLmJl
Z2luKCksIGNvZGVMb2NhdGlvbnMuZW5kKCksIHRoaXMtPmNvZGVMb2NhdGlvbnMoKSk7DQogICAg
ICAgIHN0ZDo6Y29weShpbmRleGVzLmJlZ2luKCksIGluZGV4ZXMuZW5kKCksIHRoaXMtPmluZGV4
ZXMoKSk7DQogICAgfQ0KDQogICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gZmlu
ZChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpIGNvbnN0DQogICAgew0KICAgICAgICBhdXRv
KiBpbmRleCA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUluZGV4LCBCeXRlY29kZUluZGV4PihpbmRl
eGVzKCksIG1fc2l6ZSwgYnl0ZWNvZGVJbmRleCwgW10gKEJ5dGVjb2RlSW5kZXgqIGluZGV4KSB7
IHJldHVybiAqaW5kZXg7IH0pOw0KICAgICAgICBpZiAoIWluZGV4KQ0KICAgICAgICAgICAgcmV0
dXJuIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+KCk7DQogICAgICAgIHJldHVybiBj
b2RlTG9jYXRpb25zKClbaW5kZXggLSBpbmRleGVzKCldOw0KICAgIH0NCg0KICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0NCg0KcHJpdmF0ZToNCiAg
ICBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiogY29kZUxvY2F0aW9ucygpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENvZGVMb2NhdGlvbkxhYmVsPEpT
RW50cnlQdHJUYWc+Kj4obV9wb2ludGVyLmdldCgpKTsNCiAgICB9DQoNCiAgICBCeXRlY29kZUlu
ZGV4KiBpbmRleGVzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Qnl0ZWNvZGVJbmRleCo+KG1fcG9pbnRlci5nZXQoKSArIHNpemVvZihDb2RlTG9jYXRpb25MYWJl
bDxKU0VudHJ5UHRyVGFnPikgKiBtX3NpemUpOw0KICAgIH0NCg0KICAgIE1hbGxvY1B0cjx1aW50
OF90PiBtX3BvaW50ZXI7DQogICAgdW5zaWduZWQgbV9zaXplIHsgMCB9Ow0KfTsNCg0KY2xhc3Mg
SklUQ29kZU1hcEJ1aWxkZXIgew0KICAgIEpJVENvZGVNYXBCdWlsZGVyKGNvbnN0IEpJVENvZGVN
YXBCdWlsZGVyJikgPSBkZWxldGU7IEpJVENvZGVNYXBCdWlsZGVyJiBvcGVyYXRvcj0oY29uc3Qg
SklUQ29kZU1hcEJ1aWxkZXImKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgSklUQ29kZU1hcEJ1
aWxkZXIoKSA9IGRlZmF1bHQ7DQogICAgdm9pZCBhcHBlbmQoQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4LCBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBjb2RlTG9jYXRpb24pDQog
ICAgew0KICAgICAgICBtX2luZGV4ZXMuYXBwZW5kKGJ5dGVjb2RlSW5kZXgpOw0KICAgICAgICBt
X2NvZGVMb2NhdGlvbnMuYXBwZW5kKGNvZGVMb2NhdGlvbik7DQogICAgfQ0KDQogICAgSklUQ29k
ZU1hcCBmaW5hbGl6ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gSklUQ29kZU1hcChzdGQ6Om1v
dmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KG1faW5kZXhlcyksIHN0ZDo6bW92ZTxXVEY6OkNo
ZWNrTW92ZVBhcmFtZXRlcj4obV9jb2RlTG9jYXRpb25zKSk7DQogICAgfQ0KDQpwcml2YXRlOg0K
ICAgIFZlY3RvcjxCeXRlY29kZUluZGV4PiBtX2luZGV4ZXM7DQogICAgVmVjdG9yPENvZGVMb2Nh
dGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+PiBtX2NvZGVMb2NhdGlvbnM7DQp9Ow0KDQp9IA0KDQoj
bGluZSA5OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxqaXRcXEpJVENvZGVNYXAuaCINCiNsaW5lIDUzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCINCg0KDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
Ynl0ZWNvZGVcXEp1bXBUYWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNw
YWNlIEpTQyB7DQoNCiAgICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24gew0KICAgICAgICBpbnQzMl90
IGJyYW5jaE9mZnNldDsNCg0KICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU1N3aXRjaFB0clRh
Zz4gY3RpT2Zmc2V0Ow0KI2xpbmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEp1bXBUYWJsZS5oIg0KICAgIH07DQoNCiAgICBz
dHJ1Y3QgU3RyaW5nSnVtcFRhYmxlIHsNCiAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
dHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOw0KICAgICAgICBT
dHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsNCg0KICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bDxKU1N3aXRjaFB0clRhZz4gY3RpRGVmYXVsdDsgDQojbGluZSA1MiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcSnVtcFRhYmxlLmgi
DQoNCiAgICAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFs
dWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkNCiAgICAgICAgew0KICAgICAgICAgICAgU3RyaW5n
T2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG9mZnNldFRhYmxlLmVuZCgpOw0KICAg
ICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRh
YmxlLmZpbmQodmFsdWUpOw0KICAgICAgICAgICAgaWYgKGxvYyA9PSBlbmQpDQogICAgICAgICAg
ICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7DQogICAgICAgICAgICByZXR1cm4gbG9jLT52YWx1
ZS5icmFuY2hPZmZzZXQ7DQogICAgICAgIH0NCg0KDQogICAgICAgIGlubGluZSBDb2RlTG9jYXRp
b25MYWJlbDxKU1N3aXRjaFB0clRhZz4gY3RpRm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUpDQog
ICAgICAgIHsNCiAgICAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBvZmZzZXRUYWJsZS5lbmQoKTsNCiAgICAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpj
b25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsNCiAgICAgICAgICAg
IGlmIChsb2MgPT0gZW5kKQ0KICAgICAgICAgICAgICAgIHJldHVybiBjdGlEZWZhdWx0Ow0KICAg
ICAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuY3RpT2Zmc2V0Ow0KICAgICAgICB9DQojbGluZSA3
MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRl
Y29kZVxcSnVtcFRhYmxlLmgiDQogICAgICAgIA0KICAgICAgICB2b2lkIGNsZWFyKCkNCiAgICAg
ICAgew0KICAgICAgICAgICAgb2Zmc2V0VGFibGUuY2xlYXIoKTsNCiAgICAgICAgfQ0KICAgIH07
DQoNCiAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlIHsNCiAgICAgICAgDQogICAgICAgIFZlY3Rv
cjxpbnQzMl90PiBicmFuY2hPZmZzZXRzOw0KICAgICAgICBpbnQzMl90IG1pbiB7ICgtMjE0NzQ4
MzY0N2kzMiAtIDEpIH07DQoNCiAgICAgICAgVmVjdG9yPENvZGVMb2NhdGlvbkxhYmVsPEpTU3dp
dGNoUHRyVGFnPj4gY3RpT2Zmc2V0czsNCiAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNTd2l0
Y2hQdHJUYWc+IGN0aURlZmF1bHQ7DQojbGluZSA4NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcSnVtcFRhYmxlLmgiDQoNCg0KICAg
ICAgICANCiAgICAgICAgU2ltcGxlSnVtcFRhYmxlIGNsb25lTm9uSklUUGFydCgpIGNvbnN0DQog
ICAgICAgIHsNCiAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSByZXN1bHQ7DQogICAgICAgICAg
ICByZXN1bHQuYnJhbmNoT2Zmc2V0cyA9IGJyYW5jaE9mZnNldHM7DQogICAgICAgICAgICByZXN1
bHQubWluID0gbWluOw0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KI2xp
bmUgOTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
Ynl0ZWNvZGVcXEp1bXBUYWJsZS5oIg0KDQogICAgICAgIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUo
aW50MzJfdCB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KTsNCg0KICAgICAgICB2b2lkIGVu
c3VyZUNUSVRhYmxlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICAgICAgY3RpT2Zmc2V0cy5ncm93KGJyYW5jaE9mZnNldHMuc2l6ZSgpKTsNCiAgICAgICAgfQ0K
ICAgICAgICANCiAgICAgICAgaW5saW5lIENvZGVMb2NhdGlvbkxhYmVsPEpTU3dpdGNoUHRyVGFn
PiBjdGlGb3JWYWx1ZShpbnQzMl90IHZhbHVlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAo
dmFsdWUgPj0gbWluICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAtIG1pbikgPCBjdGlP
ZmZzZXRzLnNpemUoKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gY3RpT2Zmc2V0c1t2YWx1ZSAt
IG1pbl07DQogICAgICAgICAgICByZXR1cm4gY3RpRGVmYXVsdDsNCiAgICAgICAgfQ0KI2xpbmUg
MTE0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5
dGVjb2RlXFxKdW1wVGFibGUuaCINCg0KDQogICAgICAgIHZvaWQgY2xlYXIoKQ0KICAgICAgICB7
DQogICAgICAgICAgICBicmFuY2hPZmZzZXRzLmNsZWFyKCk7DQogICAgICAgICAgICBjdGlPZmZz
ZXRzLmNsZWFyKCk7DQogICAgICAgIH0NCiNsaW5lIDEyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcSnVtcFRhYmxlLmgiDQogICAg
fTsNCg0KfSANCiNsaW5lIDU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXExMSW50Q2Fs
bExpbmtJbmZvLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnN0cnVj
dCBJbnN0cnVjdGlvbjsNCg0KY2xhc3MgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2Vk
UmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7DQpwdWJsaWM6DQogICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dHB0cl90IHVubGlua2VkQml0ID0gMHgxOw0KDQogICAgTExJbnRDYWxsTGlua0luZm8oKSA9IGRl
ZmF1bHQ7DQogICAgDQogICAgfkxMSW50Q2FsbExpbmtJbmZvKCkNCiAgICB7DQogICAgICAgIGlm
IChpc09uTGlzdCgpKQ0KICAgICAgICAgICAgcmVtb3ZlKCk7DQogICAgfQ0KICAgIA0KICAgIGJv
b2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiAhKG1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdp
dGhMaW5rQml0ICYgdW5saW5rZWRCaXQpOyB9DQogICAgDQoNCiAgICB2b2lkIGxpbmsoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gY29kZVB0cikNCiAgICB7DQogICAgICAgIGlmIChpc09uTGlzdCgpKQ0K
ICAgICAgICAgICAgcmVtb3ZlKCk7DQogICAgICAgIG1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdp
dGhMaW5rQml0ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY2FsbGVlKTsNCiAgICAgICAgdm0u
aGVhcC53cml0ZUJhcnJpZXIob3duZXIsIGNhbGxlZSk7DQogICAgICAgIG1fbWFjaGluZUNvZGVU
YXJnZXQgPSBjb2RlUHRyOw0KICAgIH0NCg0KICAgIHZvaWQgdW5saW5rKCkNCiAgICB7DQogICAg
ICAgIA0KICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCB8PSB1bmxp
bmtlZEJpdDsNCiAgICAgICAgbV9tYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPigpOw0KICAgICAgICBpZiAoaXNPbkxpc3QoKSkNCiAgICAgICAg
ICAgIHJlbW92ZSgpOw0KICAgIH0NCg0KICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgaWYgKCFpc0xpbmtlZCgpKQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yTGFzdFNl
ZW5DYWxsZWVXaXRoTGlua0JpdCk7DQogICAgfQ0KDQogICAgSlNPYmplY3QqIGxhc3RTZWVuQ2Fs
bGVlKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3Qq
PihtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCAmIH51bmxpbmtlZEJpdCk7DQog
ICAgfQ0KDQogICAgdm9pZCBjbGVhckxhc3RTZWVuQ2FsbGVlKCkNCiAgICB7DQogICAgICAgIG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ID0gdW5saW5rZWRCaXQ7DQogICAgfQ0K
DQogICAgQXJyYXlQcm9maWxlIG1fYXJyYXlQcm9maWxlOw0KDQpwcml2YXRlOg0KICAgIHVpbnRw
dHJfdCBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCB7IHVubGlua2VkQml0IH07
DQogICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fbWFjaGluZUNvZGVU
YXJnZXQ7DQp9Ow0KDQp9IA0KI2xpbmUgNTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5oIg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxc
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcT3BlcmFu
ZHMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgT3BlcmFuZFZhbHVlVHJhaXRzOw0KDQpjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4TnVtQ2hlY2twb2ludFRtcHMgPSA0Ow0KDQoNCmVudW0gY2xhc3MgT3BlcmFuZEtpbmQg
OiB1aW50MzJfdCB7IEFyZ3VtZW50LCBMb2NhbCwgVG1wIH07IA0Kc3RhdGljIGNvbnN0ZXhwciBP
cGVyYW5kS2luZCBsYXN0T3BlcmFuZEtpbmQgPSBPcGVyYW5kS2luZDo6VG1wOw0KDQpjbGFzcyBP
cGVyYW5kIHsNCnB1YmxpYzoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGtpbmRCaXRz
ID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5
cGVfdDxPcGVyYW5kS2luZD4+KGxhc3RPcGVyYW5kS2luZCkpICsgMTsNCiAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG1heEJpdHMgPSAzMiArIGtpbmRCaXRzOw0KICAgIHN0YXRpY19hc3Nl
cnQobWF4Qml0cyA9PSAzNCk7DQoNCiAgICBPcGVyYW5kKCkgPSBkZWZhdWx0Ow0KICAgIE9wZXJh
bmQoY29uc3QgT3BlcmFuZCYpID0gZGVmYXVsdDsNCg0KICAgIE9wZXJhbmQoVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQpDQogICAgICAgIDogT3BlcmFuZChvcGVyYW5kLmlzTG9jYWwoKSA/IE9wZXJh
bmRLaW5kOjpMb2NhbCA6IE9wZXJhbmRLaW5kOjpBcmd1bWVudCwgb3BlcmFuZC5vZmZzZXQoKSkN
CiAgICB7IH0NCg0KICAgIE9wZXJhbmQoT3BlcmFuZEtpbmQga2luZCwgaW50IG9wZXJhbmQpDQoN
CiAgICAgICAgOiBtX29wZXJhbmQob3BlcmFuZCkNCiAgICAgICAgLCBtX2tpbmQoa2luZCkNCg0K
DQoNCiNsaW5lIDY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxPcGVyYW5kcy5oIg0KICAgIHsgDQogICAgICAgICgodm9pZCkwKTsN
CiAgICB9DQogICAgc3RhdGljIE9wZXJhbmQgdG1wKHVpbnQzMl90IGluZGV4KSB7IHJldHVybiBP
cGVyYW5kKE9wZXJhbmRLaW5kOjpUbXAsIGluZGV4KTsgfQ0KDQogICAgT3BlcmFuZEtpbmQga2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQ0KICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb3BlcmFuZDsgfQ0KICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKSBj
b25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gVmlydHVhbFJl
Z2lzdGVyKG1fb3BlcmFuZCk7DQogICAgfQ0KICAgIHVpbnQ2NF90IGFzQml0cygpIGNvbnN0DQog
ICAgew0KICAgICAgICB1aW50NjRfdCBiaXRzID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90PigqdGhp
cyk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGJpdHM7DQogICAgfQ0KICAg
IHN0YXRpYyBPcGVyYW5kIGZyb21CaXRzKHVpbnQ2NF90IHZhbHVlKTsNCg0KICAgIGJvb2wgaXNU
bXAoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gT3BlcmFuZEtpbmQ6OlRtcDsgfQ0KICAgIGJv
b2wgaXNBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBPcGVyYW5kS2luZDo6QXJn
dW1lbnQ7IH0NCiAgICBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gT3Bl
cmFuZEtpbmQ6OkxvY2FsICYmIHZpcnR1YWxSZWdpc3RlcigpLmlzTG9jYWwoKTsgfQ0KICAgIGJv
b2wgaXNIZWFkZXIoKSBjb25zdCB7IHJldHVybiBraW5kKCkgIT0gT3BlcmFuZEtpbmQ6OlRtcCAm
JiB2aXJ0dWFsUmVnaXN0ZXIoKS5pc0hlYWRlcigpOyB9DQogICAgYm9vbCBpc0NvbnN0YW50KCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpICE9IE9wZXJhbmRLaW5kOjpUbXAgJiYgdmlydHVhbFJlZ2lz
dGVyKCkuaXNDb25zdGFudCgpOyB9DQoNCiAgICBpbnQgdG9Bcmd1bWVudCgpIGNvbnN0IHsgKCh2
b2lkKTApOyByZXR1cm4gdmlydHVhbFJlZ2lzdGVyKCkudG9Bcmd1bWVudCgpOyB9DQogICAgaW50
IHRvTG9jYWwoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIHZpcnR1YWxSZWdpc3RlcigpLnRv
TG9jYWwoKTsgfQ0KDQogICAgaW5saW5lIGJvb2wgaXNWYWxpZCgpIGNvbnN0Ow0KDQogICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcGVyYW5kJikgY29uc3Q7DQoNCiAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCg0KcHJpdmF0ZToNCg0KICAgIGludCBtX29wZXJhbmQg
eyBWaXJ0dWFsUmVnaXN0ZXI6OmludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgfTsNCiAgICBPcGVyYW5k
S2luZCBtX2tpbmQgeyBPcGVyYW5kS2luZDo6QXJndW1lbnQgfTsNCg0KDQoNCiNsaW5lIDEwOCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29k
ZVxcT3BlcmFuZHMuaCINCn07DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBPcGVyYW5kOjpvcGVyYXRv
cj09KGNvbnN0IE9wZXJhbmQmIG90aGVyKSBjb25zdA0Kew0KICAgIGlmIChraW5kKCkgIT0gb3Ro
ZXIua2luZCgpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgaWYgKGlzVG1wKCkpDQogICAg
ICAgIHJldHVybiB2YWx1ZSgpID09IG90aGVyLnZhbHVlKCk7DQogICAgcmV0dXJuIHZpcnR1YWxS
ZWdpc3RlcigpID09IG90aGVyLnZpcnR1YWxSZWdpc3RlcigpOw0KfQ0KDQppbmxpbmUgYm9vbCBP
cGVyYW5kOjppc1ZhbGlkKCkgY29uc3QNCnsNCiAgICBpZiAoaXNUbXAoKSkNCiAgICAgICAgcmV0
dXJuIHZhbHVlKCkgPj0gMDsNCiAgICByZXR1cm4gdmlydHVhbFJlZ2lzdGVyKCkuaXNWYWxpZCgp
Ow0KfQ0KDQppbmxpbmUgT3BlcmFuZCBPcGVyYW5kOjpmcm9tQml0cyh1aW50NjRfdCB2YWx1ZSkN
CnsNCiAgICBPcGVyYW5kIHJlc3VsdCA9IGJpdHdpc2VfY2FzdDxPcGVyYW5kPih2YWx1ZSk7DQog
ICAgKCh2b2lkKTApOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnN0YXRpY19hc3NlcnQoc2l6
ZW9mKE9wZXJhbmQpID09IHNpemVvZih1aW50NjRfdCksICJPcGVyYW5kOjphc0JpdHMoKSByZWxp
ZXMgb24gdGhpcy4iKTsNCg0KZW51bSBPcGVyYW5kc0xpa2VUYWcgeyBPcGVyYW5kc0xpa2UgfTsN
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmNsYXNzIE9wZXJhbmRzIHsNCnB1YmxpYzoNCiAgICB1
c2luZyBTdG9yYWdlID0gc3RkOjpjb25kaXRpb25hbF90PHN0ZDo6aXNfc2FtZV92PFQsIGJvb2w+
LCBGYXN0Qml0VmVjdG9yLCBWZWN0b3I8VCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+PjsNCiAg
ICB1c2luZyBSZWZUeXBlID0gc3RkOjpjb25kaXRpb25hbF90PHN0ZDo6aXNfc2FtZV92PFQsIGJv
b2w+LCBGYXN0Qml0UmVmZXJlbmNlLCBUJj47DQogICAgdXNpbmcgQ29uc3RSZWZUeXBlID0gc3Rk
Ojpjb25kaXRpb25hbF90PHN0ZDo6aXNfc2FtZV92PFQsIGJvb2w+LCBib29sLCBjb25zdCBUJj47
DQoNCiAgICBPcGVyYW5kcygpID0gZGVmYXVsdDsNCg0KICAgIGV4cGxpY2l0IE9wZXJhbmRzKHNp
emVfdCBudW1Bcmd1bWVudHMsIHNpemVfdCBudW1Mb2NhbHMsIHNpemVfdCBudW1UbXBzKQ0KICAg
ICAgICA6IG1fbnVtQXJndW1lbnRzKG51bUFyZ3VtZW50cykNCiAgICAgICAgLCBtX251bUxvY2Fs
cyhudW1Mb2NhbHMpDQogICAgew0KICAgICAgICBzaXplX3Qgc2l6ZSA9IG51bUFyZ3VtZW50cyAr
IG51bUxvY2FscyArIG51bVRtcHM7DQogICAgICAgIG1fdmFsdWVzLmdyb3coc2l6ZSk7DQogICAg
ICAgIGlmICghV1RGOjpWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24pDQogICAg
ICAgICAgICBtX3ZhbHVlcy5maWxsKFQoKSk7DQogICAgfQ0KDQogICAgZXhwbGljaXQgT3BlcmFu
ZHMoc2l6ZV90IG51bUFyZ3VtZW50cywgc2l6ZV90IG51bUxvY2Fscywgc2l6ZV90IG51bVRtcHMs
IGNvbnN0IFQmIGluaXRpYWxWYWx1ZSkNCiAgICAgICAgOiBtX251bUFyZ3VtZW50cyhudW1Bcmd1
bWVudHMpDQogICAgICAgICwgbV9udW1Mb2NhbHMobnVtTG9jYWxzKQ0KICAgIHsNCiAgICAgICAg
bV92YWx1ZXMuZ3JvdyhudW1Bcmd1bWVudHMgKyBudW1Mb2NhbHMgKyBudW1UbXBzKTsNCiAgICAg
ICAgbV92YWx1ZXMuZmlsbChpbml0aWFsVmFsdWUpOw0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPg0KICAgIGV4cGxpY2l0IE9wZXJhbmRzKE9wZXJhbmRzTGlrZVRhZywgY29u
c3QgT3BlcmFuZHM8VT4mIG90aGVyLCBjb25zdCBUJiBpbml0aWFsVmFsdWUgPSBUKCkpDQogICAg
ICAgIDogbV9udW1Bcmd1bWVudHMob3RoZXIubnVtYmVyT2ZBcmd1bWVudHMoKSkNCiAgICAgICAg
LCBtX251bUxvY2FscyhvdGhlci5udW1iZXJPZkxvY2FscygpKQ0KICAgIHsNCiAgICAgICAgbV92
YWx1ZXMuZ3JvdyhvdGhlci5zaXplKCkpOw0KICAgICAgICBtX3ZhbHVlcy5maWxsKGluaXRpYWxW
YWx1ZSk7DQogICAgfQ0KDQogICAgc2l6ZV90IG51bWJlck9mQXJndW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1Bcmd1bWVudHM7IH0NCiAgICBzaXplX3QgbnVtYmVyT2ZMb2NhbHMoKSBjb25z
dCB7IHJldHVybiBtX251bUxvY2FsczsgfQ0KICAgIHNpemVfdCBudW1iZXJPZlRtcHMoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlcy5zaXplKCkgLSBudW1iZXJPZkFyZ3VtZW50cygpIC0gbnVtYmVy
T2ZMb2NhbHMoKTsgfQ0KDQogICAgc2l6ZV90IHRtcEluZGV4KHNpemVfdCBpZHgpIGNvbnN0DQog
ICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBpZHggKyBudW1iZXJPZkFy
Z3VtZW50cygpICsgbnVtYmVyT2ZMb2NhbHMoKTsNCiAgICB9DQogICAgc2l6ZV90IGFyZ3VtZW50
SW5kZXgoc2l6ZV90IGlkeCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuIGlkeDsNCiAgICB9DQogICAgDQogICAgc2l6ZV90IGxvY2FsSW5kZXgoc2l6ZV90
IGlkeCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG51
bWJlck9mQXJndW1lbnRzKCkgKyBpZHg7DQogICAgfQ0KDQogICAgUmVmVHlwZSB0bXAoc2l6ZV90
IGlkeCkgeyByZXR1cm4gbV92YWx1ZXNbdG1wSW5kZXgoaWR4KV07IH0NCiAgICBDb25zdFJlZlR5
cGUgdG1wKHNpemVfdCBpZHgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzW3RtcEluZGV4KGlkeCld
OyB9DQogICAgDQogICAgUmVmVHlwZSBhcmd1bWVudChzaXplX3QgaWR4KSB7IHJldHVybiBtX3Zh
bHVlc1thcmd1bWVudEluZGV4KGlkeCldOyB9DQogICAgQ29uc3RSZWZUeXBlIGFyZ3VtZW50KHNp
emVfdCBpZHgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzW2FyZ3VtZW50SW5kZXgoaWR4KV07IH0N
CiAgICANCiAgICBSZWZUeXBlIGxvY2FsKHNpemVfdCBpZHgpIHsgcmV0dXJuIG1fdmFsdWVzW2xv
Y2FsSW5kZXgoaWR4KV07IH0NCiAgICBDb25zdFJlZlR5cGUgbG9jYWwoc2l6ZV90IGlkeCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZXNbbG9jYWxJbmRleChpZHgpXTsgfQ0KICAgIA0KICAgIHRlbXBs
YXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPg0KICAgIHNpemVfdCBzaXplRm9yKCkgY29uc3QN
CiAgICB7DQogICAgICAgIHN3aXRjaCAob3BlcmFuZEtpbmQpIHsNCiAgICAgICAgY2FzZSBPcGVy
YW5kS2luZDo6VG1wOg0KICAgICAgICAgICAgcmV0dXJuIG51bWJlck9mVG1wcygpOw0KICAgICAg
ICBjYXNlIE9wZXJhbmRLaW5kOjpBcmd1bWVudDoNCiAgICAgICAgICAgIHJldHVybiBudW1iZXJP
ZkFyZ3VtZW50cygpOw0KICAgICAgICBjYXNlIE9wZXJhbmRLaW5kOjpMb2NhbDoNCiAgICAgICAg
ICAgIHJldHVybiBudW1iZXJPZkxvY2FscygpOw0KICAgICAgICB9DQogICAgICAgIGRvIHsgV1RG
Ojppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RG
Q3Jhc2hXaXRoSW5mbygyMTQsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxPcGVyYW5kcy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMTIg
KTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAgdGVtcGxh
dGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+DQogICAgUmVmVHlwZSBhdEZvcihzaXplX3QgaWR4
KQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChvcGVyYW5kS2luZCkgew0KICAgICAgICBjYXNlIE9w
ZXJhbmRLaW5kOjpUbXA6DQogICAgICAgICAgICByZXR1cm4gdG1wKGlkeCk7DQogICAgICAgIGNh
c2UgT3BlcmFuZEtpbmQ6OkFyZ3VtZW50Og0KICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50KGlk
eCk7DQogICAgICAgIGNhc2UgT3BlcmFuZEtpbmQ6OkxvY2FsOg0KICAgICAgICAgICAgcmV0dXJu
IGxvY2FsKGlkeCk7DQogICAgICAgIH0NCiAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDIy
OCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0
ZWNvZGVcXE9wZXJhbmRzLmgiLCAgX19GVU5DVElPTl9fICAsIDExMyApOyB9IHdoaWxlIChmYWxz
ZSk7DQogICAgICAgIHJldHVybiB0bXAoMCk7DQogICAgfQ0KICAgIHRlbXBsYXRlPE9wZXJhbmRL
aW5kIG9wZXJhbmRLaW5kPg0KICAgIENvbnN0UmVmVHlwZSBhdEZvcihzaXplX3QgaWR4KSBjb25z
dA0KICAgIHsNCiAgICAgICAgc3dpdGNoIChvcGVyYW5kS2luZCkgew0KICAgICAgICBjYXNlIE9w
ZXJhbmRLaW5kOjpUbXA6DQogICAgICAgICAgICByZXR1cm4gdG1wKGlkeCk7DQogICAgICAgIGNh
c2UgT3BlcmFuZEtpbmQ6OkFyZ3VtZW50Og0KICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50KGlk
eCk7DQogICAgICAgIGNhc2UgT3BlcmFuZEtpbmQ6OkxvY2FsOg0KICAgICAgICAgICAgcmV0dXJu
IGxvY2FsKGlkeCk7DQogICAgICAgIH0NCiAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI0
MiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0
ZWNvZGVcXE9wZXJhbmRzLmgiLCAgX19GVU5DVElPTl9fICAsIDExNCApOyB9IHdoaWxlIChmYWxz
ZSk7DQogICAgICAgIHJldHVybiB0bXAoMCk7DQogICAgfQ0KDQogICAgdm9pZCBlbnN1cmVMb2Nh
bHMoc2l6ZV90IHNpemUsIGNvbnN0IFQmIGVuc3VyZWRWYWx1ZSA9IFQoKSkNCiAgICB7DQogICAg
ICAgIGlmIChzaXplIDw9IG51bWJlck9mTG9jYWxzKCkpDQogICAgICAgICAgICByZXR1cm47DQoN
CiAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBudW1iZXJPZkFyZ3VtZW50cygpICsgbnVtYmVyT2ZU
bXBzKCkgKyBzaXplOw0KICAgICAgICBzaXplX3Qgb2xkTnVtTG9jYWxzID0gbnVtYmVyT2ZMb2Nh
bHMoKTsNCiAgICAgICAgc2l6ZV90IG9sZE51bVRtcHMgPSBudW1iZXJPZlRtcHMoKTsNCiAgICAg
ICAgbV92YWx1ZXMuZ3JvdyhuZXdTaXplKTsNCiAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvbGROdW1UbXBzOyArK2kpDQogICAgICAgICAgICBtX3ZhbHVlc1tuZXdTaXplIC0gMSAtIGld
ID0gbV92YWx1ZXNbdG1wSW5kZXgob2xkTnVtVG1wcyAtIDEgLSBpKV07DQoNCiAgICAgICAgbV9u
dW1Mb2NhbHMgPSBzaXplOw0KICAgICAgICBpZiAoZW5zdXJlZFZhbHVlICE9IFQoKSB8fCAhV1RG
OjpWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24pIHsNCiAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSAtIG9sZE51bUxvY2FsczsgKytpKQ0KICAgICAgICAg
ICAgICAgIG1fdmFsdWVzW2xvY2FsSW5kZXgob2xkTnVtTG9jYWxzICsgaSldID0gZW5zdXJlZFZh
bHVlOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBlbnN1cmVUbXBzKHNpemVfdCBzaXpl
LCBjb25zdCBUJiBlbnN1cmVkVmFsdWUgPSBUKCkpDQogICAgew0KICAgICAgICBpZiAoc2l6ZSA8
PSBudW1iZXJPZlRtcHMoKSkNCiAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICBzaXplX3Qg
b2xkU2l6ZSA9IG1fdmFsdWVzLnNpemUoKTsNCiAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBudW1i
ZXJPZkFyZ3VtZW50cygpICsgbnVtYmVyT2ZMb2NhbHMoKSArIHNpemU7DQogICAgICAgIG1fdmFs
dWVzLmdyb3cobmV3U2l6ZSk7DQoNCiAgICAgICAgaWYgKGVuc3VyZWRWYWx1ZSAhPSBUKCkgfHwg
IVdURjo6VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uKSB7DQogICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gb2xkU2l6ZTsgaSA8IG5ld1NpemU7ICsraSkNCiAgICAgICAgICAg
ICAgICBtX3ZhbHVlc1tpXSA9IGVuc3VyZWRWYWx1ZTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAN
CiAgICB2b2lkIHNldExvY2FsKHNpemVfdCBpZHgsIGNvbnN0IFQmIHZhbHVlKQ0KICAgIHsNCiAg
ICAgICAgZW5zdXJlTG9jYWxzKGlkeCArIDEpOw0KICAgICAgICBsb2NhbChpZHgpID0gdmFsdWU7
DQogICAgfQ0KICAgIA0KICAgIFQgZ2V0TG9jYWwoc2l6ZV90IGlkeCkNCiAgICB7DQogICAgICAg
IHJldHVybiBpZHggPj0gbnVtYmVyT2ZMb2NhbHMoKSA/IFQoKSA6IGxvY2FsKGlkeCk7DQogICAg
fQ0KICAgIA0KICAgIHZvaWQgc2V0QXJndW1lbnRGaXJzdFRpbWUoc2l6ZV90IGlkeCwgY29uc3Qg
VCYgdmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGFyZ3VtZW50KGlk
eCkgPSB2YWx1ZTsNCiAgICB9DQogICAgDQogICAgdm9pZCBzZXRMb2NhbEZpcnN0VGltZShzaXpl
X3QgaWR4LCBjb25zdCBUJiB2YWx1ZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgc2V0TG9jYWwoaWR4LCB2YWx1ZSk7DQogICAgfQ0KDQogICAgUmVmVHlwZSBnZXRGb3JPcGVy
YW5kSW5kZXgoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3ZhbHVlc1tpbmRleF07IH0NCiAgICBD
b25zdFJlZlR5cGUgZ2V0Rm9yT3BlcmFuZEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxPcGVyYW5kcyo+KHRoaXMpLT5nZXRGb3JPcGVyYW5kSW5kZXgoaW5kZXgp
OyB9DQoNCiAgICBzaXplX3Qgb3BlcmFuZEluZGV4KFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBj
b25zdA0KICAgIHsNCiAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQ0KICAgICAgICAg
ICAgcmV0dXJuIGFyZ3VtZW50SW5kZXgob3BlcmFuZC50b0FyZ3VtZW50KCkpOw0KICAgICAgICBy
ZXR1cm4gbG9jYWxJbmRleChvcGVyYW5kLnRvTG9jYWwoKSk7DQogICAgfQ0KICAgIA0KICAgIHNp
emVfdCBvcGVyYW5kSW5kZXgoT3BlcmFuZCBvcCkgY29uc3QNCiAgICB7DQogICAgICAgIGlmICgh
b3AuaXNUbXAoKSkNCiAgICAgICAgICAgIHJldHVybiBvcGVyYW5kSW5kZXgob3AudmlydHVhbFJl
Z2lzdGVyKCkpOw0KICAgICAgICByZXR1cm4gdG1wSW5kZXgob3AudmFsdWUoKSk7DQogICAgfQ0K
ICAgIA0KICAgIFJlZlR5cGUgb3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkNCiAgICB7
DQogICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQoKSkNCiAgICAgICAgICAgIHJldHVybiBh
cmd1bWVudChvcGVyYW5kLnRvQXJndW1lbnQoKSk7DQogICAgICAgIHJldHVybiBsb2NhbChvcGVy
YW5kLnRvTG9jYWwoKSk7DQogICAgfQ0KDQogICAgUmVmVHlwZSBvcGVyYW5kKE9wZXJhbmQgb3Ap
DQogICAgew0KICAgICAgICBpZiAoIW9wLmlzVG1wKCkpDQogICAgICAgICAgICByZXR1cm4gb3Bl
cmFuZChvcC52aXJ0dWFsUmVnaXN0ZXIoKSk7DQogICAgICAgIHJldHVybiB0bXAob3AudmFsdWUo
KSk7DQogICAgfQ0KDQogICAgQ29uc3RSZWZUeXBlIG9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8T3BlcmFuZHMqPih0aGlzKS0+b3BlcmFu
ZChvcGVyYW5kKTsgfQ0KICAgIENvbnN0UmVmVHlwZSBvcGVyYW5kKE9wZXJhbmQgb3BlcmFuZCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxPcGVyYW5kcyo+KHRoaXMpLT5vcGVyYW5kKG9wZXJh
bmQpOyB9DQogICAgDQogICAgYm9vbCBoYXNPcGVyYW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQ0KICAgICAg
ICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG9w
ZXJhbmQudG9Mb2NhbCgpKSA8IG51bWJlck9mTG9jYWxzKCk7DQogICAgfQ0KICAgIGJvb2wgaGFz
T3BlcmFuZChPcGVyYW5kIG9wKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKG9wLmlzVG1wKCkp
IHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG9wLnZhbHVlKCkpIDwgbnVtYmVyT2ZUbXBzKCk7DQogICAgICAgIH0NCiAgICAg
ICAgcmV0dXJuIGhhc09wZXJhbmQob3AudmlydHVhbFJlZ2lzdGVyKCkpOw0KICAgIH0NCiAgICAN
CiAgICB2b2lkIHNldE9wZXJhbmQoT3BlcmFuZCBvcGVyYW5kLCBjb25zdCBUJiB2YWx1ZSkNCiAg
ICB7DQogICAgICAgIHRoaXMtPm9wZXJhbmQob3BlcmFuZCkgPSB2YWx1ZTsNCiAgICB9DQoNCiAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLnNpemUoKTsgfQ0KICAgIENv
bnN0UmVmVHlwZSBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzW2luZGV4
XTsgfQ0KICAgIFJlZlR5cGUgYXQoc2l6ZV90IGluZGV4KSB7IHJldHVybiBtX3ZhbHVlc1tpbmRl
eF07IH0NCiAgICBDb25zdFJlZlR5cGUgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIGF0KGluZGV4KTsgfQ0KICAgIFJlZlR5cGUgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
IHsgcmV0dXJuIGF0KGluZGV4KTsgfQ0KDQogICAgT3BlcmFuZCBvcGVyYW5kRm9ySW5kZXgoc2l6
ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyT2ZBcmd1
bWVudHMoKSkNCiAgICAgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoaW5kZXgpOw0KICAgICAgICBlbHNlIGlmIChpbmRleCA8IG51bWJlck9mTG9j
YWxzKCkgKyBudW1iZXJPZkFyZ3VtZW50cygpKQ0KICAgICAgICAgICAgcmV0dXJuIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGluZGV4IC0gbnVtYmVyT2ZBcmd1bWVudHMoKSk7DQogICAgICAgIHJl
dHVybiBPcGVyYW5kOjp0bXAoaW5kZXggLSAobnVtYmVyT2ZMb2NhbHMoKSArIG51bWJlck9mQXJn
dW1lbnRzKCkpKTsNCiAgICB9DQoNCiAgICB2b2lkIGZpbGwoVCB2YWx1ZSkNCiAgICB7DQogICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpDQogICAgICAg
ICAgICBtX3ZhbHVlc1tpXSA9IHZhbHVlOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGNsZWFyKCkN
CiAgICB7DQogICAgICAgIGZpbGwoVCgpKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE9wZXJhbmRzJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIA0KICAg
ICAgICByZXR1cm4gbV92YWx1ZXMgPT0gb3RoZXIubV92YWx1ZXM7DQogICAgfQ0KICAgIA0KICAg
IHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4
dCkgY29uc3Q7DQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ow0KICAgIA0K
cHJpdmF0ZToNCiAgICANCiAgICBTdG9yYWdlIG1fdmFsdWVzOw0KICAgIHVuc2lnbmVkIG1fbnVt
QXJndW1lbnRzIHsgMCB9Ow0KICAgIHVuc2lnbmVkIG1fbnVtTG9jYWxzIHsgMCB9Ow0KfTsNCg0K
fSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxc
VmFsdWVQcm9maWxlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KdGVtcGxhdGU8dW5zaWduZWQgbnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+DQpzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7DQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJP
ZkJ1Y2tldHMgPSBudW1iZXJPZkJ1Y2tldHNBcmd1bWVudDsNCiAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG51bWJlck9mU3BlY0ZhaWxCdWNrZXRzID0gMTsNCiAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGJ1Y2tldEluZGV4TWFzayA9IG51bWJlck9mQnVja2V0cyAtIDE7DQogICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB0b3RhbE51bWJlck9mQnVja2V0cyA9IG51bWJlck9m
QnVja2V0cyArIG51bWJlck9mU3BlY0ZhaWxCdWNrZXRzOw0KICAgIA0KICAgIFZhbHVlUHJvZmls
ZUJhc2UoKQ0KICAgIHsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVt
YmVyT2ZCdWNrZXRzOyArK2kpDQogICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsNCiAgICB9DQogICAgDQogICAgRW5jb2RlZEpTVmFsdWUqIHNwZWNG
YWlsQnVja2V0KHVuc2lnbmVkIGkpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IHJldHVybiBtX2J1Y2tldHMgKyBudW1iZXJPZkJ1Y2tldHMgKyBpOw0KICAgIH0NCiAgICANCiAg
ICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyh1bnNpZ25lZCBidWNrZXQpIGNvbnN0DQogICAg
ew0KICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tidWNr
ZXRdKTsNCiAgICAgICAgaWYgKCEhdmFsdWUpIHsNCiAgICAgICAgICAgIGlmICghdmFsdWUuaXND
ZWxsKCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAgICAgICByZXR1
cm4gdmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsNCiAgICAgICAgfQ0K
ICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQogICAgDQogICAgdW5zaWduZWQgbnVtYmVy
T2ZTYW1wbGVzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7DQog
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytp
KSB7DQogICAgICAgICAgICBpZiAoISFKU1ZhbHVlOjpkZWNvZGUobV9idWNrZXRzW2ldKSkNCiAg
ICAgICAgICAgICAgICByZXN1bHQrKzsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcmVzdWx0
Ow0KICAgIH0NCiAgICANCiAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mU2FtcGxlcygpIGNvbnN0
DQogICAgew0KICAgICAgICByZXR1cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBpc1NhbXBsZWRCZWZv
cmUoKTsNCiAgICB9DQoNCiAgICBib29sIGlzU2FtcGxlZEJlZm9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlZGljdGlvbiAhPSBTcGVjTm9uZTsgfQ0KICAgIA0KICAgIGJvb2wgaXNMaXZlKCkgY29u
c3QNCiAgICB7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9m
QnVja2V0czsgKytpKSB7DQogICAgICAgICAgICBpZiAoISFKU1ZhbHVlOjpkZWNvZGUobV9idWNr
ZXRzW2ldKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlv
bihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikNCiAgICB7DQogICAgICAgIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOw0KICAgICAgICANCiAgICAgICAgU3RyaW5nUHJp
bnRTdHJlYW0gb3V0Ow0KICAgICAgICBvdXQucHJpbnQoInByZWRpY3RpbmcgIiwgU3BlY3VsYXRp
b25EdW1wKG1fcHJlZGljdGlvbikpOw0KICAgICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOw0K
ICAgIH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkNCiAgICB7DQogICAg
ICAgIG91dC5wcmludCgic2FtcGxlZCBiZWZvcmUgPSAiLCBpc1NhbXBsZWRCZWZvcmUoKSwgIiBs
aXZlIHNhbXBsZXMgPSAiLCBudW1iZXJPZlNhbXBsZXMoKSwgIiBwcmVkaWN0aW9uID0gIiwgU3Bl
Y3VsYXRpb25EdW1wKG1fcHJlZGljdGlvbikpOw0KICAgICAgICBib29sIGZpcnN0ID0gdHJ1ZTsN
CiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyAr
K2kpIHsNCiAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNr
ZXRzW2ldKTsNCiAgICAgICAgICAgIGlmICghIXZhbHVlKSB7DQogICAgICAgICAgICAgICAgaWYg
KGZpcnN0KSB7DQogICAgICAgICAgICAgICAgICAgIG91dC5wcmludGYoIjogIik7DQogICAgICAg
ICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7DQogICAgICAgICAgICAgICAgfSBlbHNlDQogICAg
ICAgICAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7DQogICAgICAgICAgICAgICAgb3V0LnBy
aW50KHZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAN
CiAgICANCiAgICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikNCiAgICB7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7DQogICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7DQogICAgICAgICAgICBpZiAoIXZh
bHVlKQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgDQogICAgICAgICAg
ICBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFs
dWUpKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBt
X3ByZWRpY3Rpb247DQogICAgfQ0KICAgIA0KICAgIEVuY29kZWRKU1ZhbHVlIG1fYnVja2V0c1t0
b3RhbE51bWJlck9mQnVja2V0c107DQoNCiAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24g
eyBTcGVjTm9uZSB9Ow0KfTsNCg0Kc3RydWN0IE1pbmltYWxWYWx1ZVByb2ZpbGUgOiBwdWJsaWMg
VmFsdWVQcm9maWxlQmFzZTwwPiB7DQogICAgTWluaW1hbFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVBy
b2ZpbGVCYXNlPDA+KCkgeyB9DQp9Ow0KDQp0ZW1wbGF0ZTx1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1
Y2tldHNBcmd1bWVudD4NCnN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRz
IDogcHVibGljIFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVu
dD4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbG9nTnVtYmVyT2ZCdWNrZXRzID0g
bG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ7DQogICAgDQogICAgVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0cygpDQogICAgICAgIDogVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051
bWJlck9mQnVja2V0c0FyZ3VtZW50PigpDQogICAgew0KICAgIH0NCn07DQoNCnN0cnVjdCBWYWx1
ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7
DQogICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRz
PDA+KCkgeyB9DQp9Ow0KDQoNCg0Kc3RydWN0IFJhcmVDYXNlUHJvZmlsZSB7DQogICAgUmFyZUNh
c2VQcm9maWxlKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkNCiAgICAgICAgOiBtX2J5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkNCiAgICB7DQogICAgfQ0KICAgIFJhcmVDYXNlUHJvZmls
ZSgpID0gZGVmYXVsdDsNCiAgICANCiAgICBCeXRlY29kZUluZGV4IG1fYnl0ZWNvZGVJbmRleCB7
IH07DQogICAgdWludDMyX3QgbV9jb3VudGVyIHsgMCB9Ow0KfTsNCg0KaW5saW5lIEJ5dGVjb2Rl
SW5kZXggZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVJbmRleChSYXJlQ2FzZVByb2ZpbGUqIHJh
cmVDYXNlUHJvZmlsZSkNCnsNCiAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2Rl
SW5kZXg7DQp9DQoNCnN0cnVjdCBWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXIgOiBwdWJs
aWMgVmFsdWVQcm9maWxlIHsNCiAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9vcGVyYW5kOw0KfTsNCg0K
c3RydWN0IFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlciB7DQogICAgdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
eyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQg
PSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8g
PSBpbnQ7DQoNCiAgICBWYWx1ZVByb2ZpbGVBbmRWaXJ0dWFsUmVnaXN0ZXJCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkNCiAgICAgICAgOiBtX3NpemUoc2l6ZSkNCiAgICB7DQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIG1fYnVmZmVyID0gTWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFu
ZFZpcnR1YWxSZWdpc3RlciwgVk1NYWxsb2M+OjptYWxsb2MobV9zaXplICogc2l6ZW9mKFZhbHVl
UHJvZmlsZUFuZFZpcnR1YWxSZWdpc3RlcikpOw0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zaXplOyArK2kpDQogICAgICAgICAgICBuZXcgKCZtX2J1ZmZlci5nZXQoKVtpXSkg
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyKCk7DQogICAgfQ0KDQogICAgflZhbHVlUHJv
ZmlsZUFuZFZpcnR1YWxSZWdpc3RlckJ1ZmZlcigpDQogICAgew0KICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpDQogICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtp
XS5+VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyKCk7DQogICAgfQ0KDQogICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0aW9uPg0KICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlv
bikNCiAgICB7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkN
CiAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyLmdldCgpW2ldKTsNCiAgICB9DQoNCiAgICB1
bnNpZ25lZCBtX3NpemU7DQogICAgTWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZFZpcnR1YWxSZWdp
c3RlciwgVk1NYWxsb2M+IG1fYnVmZmVyOw0KfTsNCg0KfSANCiNsaW5lIDMxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5oIg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBT
Y3JpcHRFeGVjdXRhYmxlOw0KDQpjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSB7DQpw
dWJsaWM6DQogICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkoKQ0KICAgICAgICA6IG1fb3Bl
cmFuZChWaXJ0dWFsUmVnaXN0ZXIoKSkgDQogICAgew0KICAgIH0NCiAgICANCiAgICBMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpDQogICAg
ICAgIDogbV9ieXRlY29kZUluZGV4KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQ0KICAgICAg
ICAsIG1fb3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoKSkgDQogICAgew0KICAgIH0NCiAgICANCiAg
ICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IE9wZXJhbmQgb3BlcmFuZCkNCiAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRl
eCkNCiAgICAgICAgLCBtX29wZXJhbmQob3BlcmFuZCkNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICB9DQogICAgDQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgcmV0dXJuICFtX29wZXJhbmQuaXNWYWxpZCgpOw0KICAgIH0NCiAgICANCiAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIG90aGVyKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleCA9PSBvdGhlci5tX2J5dGVjb2Rl
SW5kZXgNCiAgICAgICAgICAgICYmIG1fb3BlcmFuZCA9PSBvdGhlci5tX29wZXJhbmQ7DQogICAg
fQ0KICAgIA0KICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IG1fYnl0ZWNvZGVJbmRleC5oYXNoKCkgKyBtX29wZXJhbmQudmFsdWUoKSArIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX29wZXJhbmQua2luZCgpKTsNCiAgICB9DQogICAgDQogICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4KCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsNCiAgICB9DQoNCiAgICBPcGVyYW5kIG9wZXJh
bmQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gbV9v
cGVyYW5kOw0KICAgIH0NCiAgICANCiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAhbV9vcGVyYW5kLmlzVmFsaWQoKSAmJiBtX2J5
dGVjb2RlSW5kZXguaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsNCiAgICB9DQpwcml2YXRlOiAN
CiAgICBCeXRlY29kZUluZGV4IG1fYnl0ZWNvZGVJbmRleDsNCiAgICBPcGVyYW5kIG1fb3BlcmFu
ZDsNCn07DQoNCnN0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhhc2ggew0KICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkp
IHsgcmV0dXJuIGtleS5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbCgNCiAgICAgICAg
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGEsDQogICAgICAgIGNvbnN0IExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0NCiAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOw0KfTsN
Cg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBE
ZWZhdWx0SGFzaDsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVLZXk+IDogSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleUhhc2gg
eyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsNCnRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4gOiBw
dWJsaWMgR2VuZXJpY0hhc2hUcmFpdHM8SlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleT4g
ew0KICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShKU0M6OkxhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIEpTQzo6TGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQ0KICAgIHN0YXRp
YyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVL
ZXkmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9DQp9
Ow0KDQp9IA0KDQpuYW1lc3BhY2UgSlNDIHsNCg0Kc3RydWN0IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlIDogcHVibGljIE1pbmltYWxWYWx1ZVByb2ZpbGUgew0KICAgIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlKCkNCiAgICAgICAgOiBNaW5pbWFsVmFsdWVQcm9maWxlKCkNCiAgICAgICAgLCBtX29w
ZXJhbmQoVmlydHVhbFJlZ2lzdGVyKCkpDQogICAgew0KICAgIH0NCiAgICANCiAgICBleHBsaWNp
dCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZShjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtl
eSYga2V5KQ0KICAgICAgICA6IE1pbmltYWxWYWx1ZVByb2ZpbGUoKQ0KICAgICAgICAsIG1fa2V5
KGtleSkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
IGtleSgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbV9rZXk7DQogICAgfQ0KICAgIA0K
ICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7DQogICAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkgbV9rZXk7DQogICAgDQogICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUsIDg+IExpc3Q7DQp9Ow0KDQpjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZVBhcnNlcjsNCg0KY2xhc3MgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9s
ZGVyIHsNCiAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIoY29uc3Qg
Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJikgPSBkZWxldGU7IENvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciYgb3BlcmF0b3I9KGNvbnN0IENvbXBy
ZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlciYpID0gZGVsZXRlOzsNCnB1YmxpYzoN
CiAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXIoKTsNCiAgICB+Q29t
cHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCk7DQogICAgDQogICAgdm9pZCBj
b21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOw0KICAg
IA0KICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBhZGQoDQogICAgICAgIGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpOw0K
ICAgIA0KcHJpdmF0ZToNCiAgICBmcmllbmQgY2xhc3MgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQ
YXJzZXI7DQogICAgc3RkOjp1bmlxdWVfcHRyPExhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0
PiBtX2RhdGE7DQp9Ow0KDQpjbGFzcyBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciB7DQog
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIoY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVQYXJzZXImKSA9IGRlbGV0ZTsgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXImIG9w
ZXJhdG9yPShjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciYpID0gZGVsZXRlOzsN
CnB1YmxpYzoNCiAgICBleHBsaWNpdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcigpOw0K
ICAgIH5MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcigpOw0KICAgIA0KICAgIHZvaWQgaW5p
dGlhbGl6ZSgNCiAgICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29tcHJlc3NlZExh
enlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpOw0KICAgIA0KICAgIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlKiBnZXRJZlByZXNlbnQoDQogICAgICAgIGNvbnN0IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0Ow0KICAgIA0KICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24oDQogICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlP
cGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0Ow0KcHJpdmF0ZToNCiAgICBIYXNoTWFw
PExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5LCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSo+IG1f
bWFwOw0KfTsNCg0KfSANCiNsaW5lIDU5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCINCiNsaW5lIDEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXE1l
dGFkYXRhVGFibGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xh
c3MgQ29kZUJsb2NrOw0KDQoNCg0KDQoNCmNsYXNzIE1ldGFkYXRhVGFibGUgew0KICAgIHB1Ymxp
Yzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBs
b2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0
TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQogICAgTWV0YWRhdGFUYWJsZShjb25zdCBNZXRhZGF0
YVRhYmxlJikgPSBkZWxldGU7IE1ldGFkYXRhVGFibGUmIG9wZXJhdG9yPShjb25zdCBNZXRhZGF0
YVRhYmxlJikgPSBkZWxldGU7Ow0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7DQogICAgZnJpZW5kIGNsYXNzIFVubGlua2VkTWV0YWRhdGFUYWJsZTsNCnB1YmxpYzoNCiAg
ICB+TWV0YWRhdGFUYWJsZSgpOw0KDQogICAgX19mb3JjZWlubGluZSBJbnN0cnVjdGlvbjo6TWV0
YWRhdGEqIGdldChPcGNvZGVJRCBvcGNvZGVJRCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb246Ok1ldGFkYXRhKj4o
Z2V0SW1wbChvcGNvZGVJRCkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCB0
eXBlbmFtZSBGdW5jdG9yPg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBmb3JFYWNoKGNvbnN0IEZ1
bmN0b3ImIGZ1bmMpDQogICAgew0KICAgICAgICBhdXRvKiBtZXRhZGF0YSA9IGJpdHdpc2VfY2Fz
dDx0eXBlbmFtZSBPcDo6TWV0YWRhdGEqPihnZXQoT3A6Om9wY29kZUlEKSk7DQogICAgICAgIGF1
dG8qIGVuZCA9IGJpdHdpc2VfY2FzdDx0eXBlbmFtZSBPcDo6TWV0YWRhdGEqPihnZXRJbXBsKE9w
OjpvcGNvZGVJRCArIDEpKTsNCiAgICAgICAgZm9yICg7IG1ldGFkYXRhICsgMSA8PSBlbmQ7ICsr
bWV0YWRhdGEpDQogICAgICAgICAgICBmdW5jKCptZXRhZGF0YSk7DQogICAgfQ0KDQogICAgc2l6
ZV90IHNpemVJbkJ5dGVzKCk7DQoNCiAgICB2b2lkIHJlZigpDQogICAgew0KICAgICAgICArK2xp
bmtpbmdEYXRhKCkucmVmQ291bnQ7DQogICAgfQ0KDQogICAgdm9pZCBkZXJlZigpDQogICAgew0K
ICAgICAgICB1bnNpZ25lZCB0ZW1wUmVmQ291bnQgPSBsaW5raW5nRGF0YSgpLnJlZkNvdW50IC0g
MTsNCiAgICAgICAgaWYgKCF0ZW1wUmVmQ291bnQpIHsNCiAgICAgICAgICAgIE1ldGFkYXRhVGFi
bGU6OmRlc3Ryb3kodGhpcyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAg
ICAgbGlua2luZ0RhdGEoKS5yZWZDb3VudCA9IHRlbXBSZWZDb3VudDsNCiAgICB9DQoNCiAgICB1
bnNpZ25lZCByZWZDb3VudCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gbGlua2luZ0Rh
dGEoKS5yZWZDb3VudDsNCiAgICB9DQoNCiAgICB1bnNpZ25lZCBoYXNPbmVSZWYoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIHJlZkNvdW50KCkgPT0gMTsNCiAgICB9DQoNCnByaXZhdGU6
DQogICAgTWV0YWRhdGFUYWJsZShVbmxpbmtlZE1ldGFkYXRhVGFibGUmKTsNCg0KICAgIFVubGlu
a2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0MTYqIG9mZnNldFRhYmxlMTYoKSBjb25zdCB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQxNio+KHRoaXMpOyB9
DQogICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQzMiogb2Zmc2V0VGFibGUzMigpIGNv
bnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldDMy
Kj4oYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6
c19vZmZzZXQxNlRhYmxlU2l6ZSk7IH0NCg0KICAgIHNpemVfdCB0b3RhbFNpemUoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIGdldE9mZnNldChVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNf
b2Zmc2V0VGFibGVFbnRyaWVzIC0gMSk7DQogICAgfQ0KDQogICAgVW5saW5rZWRNZXRhZGF0YVRh
YmxlOjpMaW5raW5nRGF0YSYgbGlua2luZ0RhdGEoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuICpiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSo+KChi
aXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRoaXMpIC0gc2l6ZW9mKFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6TGlua2luZ0RhdGEpKSk7DQogICAgfQ0KDQogICAgdm9pZCogYnVmZmVyKCkgeyByZXR1cm4g
dGhpczsgfQ0KDQogICAgYm9vbCBpczMyQml0KCkgY29uc3QgeyByZXR1cm4gIW9mZnNldFRhYmxl
MTYoKVswXTsgfQ0KDQogICAgX19mb3JjZWlubGluZSB1bnNpZ25lZCBnZXRPZmZzZXQodW5zaWdu
ZWQgaSkgY29uc3QNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IG9mZnNldFRhYmxl
MTYoKVtpXTsNCiAgICAgICAgaWYgKG9mZnNldCkNCiAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7
DQogICAgICAgIHJldHVybiBvZmZzZXRUYWJsZTMyKClbaV07DQogICAgfQ0KDQogICAgX19mb3Jj
ZWlubGluZSB1aW50OF90KiBnZXRJbXBsKHVuc2lnbmVkIGkpDQogICAgew0KICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIGdldE9mZnNldChpKTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KE1ldGFkYXRhVGFibGUqKTsNCn07DQoNCn0gDQojbGlu
ZSA2MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxi
eXRlY29kZVxcQ29kZUJsb2NrLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgR2xvYmFsRXhlY3V0YWJsZSB7DQogICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0g
R2xvYmFsRXhlY3V0YWJsZTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOw0KDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+DQogICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICBy
ZXR1cm4gdm0ubW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU291cmNlQ29kZSYpOw0KDQogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsNCg0KICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jaygpDQogICAgew0KICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPihFeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgp
KSk7DQogICAgfQ0KDQogICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7DQogICAgfQ0KDQogICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0KDQog
ICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1Ymxp
Yzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfTsNCg0KICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8odXNlc0V2YWwoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0NCg0KICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7
IH0NCg0KICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9DQoNCiAgICBUZW1w
bGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAoVk0mKTsNCg0KcHJpdmF0ZToN
CiAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7DQogICAgZnJpZW5kIGNsYXNzIFNjcmlw
dEV4ZWN1dGFibGU7DQoNCiAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFNvdXJjZUNvZGUmKTsNCg0KICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0KICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOw0KICAg
IFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
Ow0KICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX21vZHVsZVBy
b2dyYW1Db2RlQmxvY2s7DQogICAgc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWN0TWFwPiBt
X3RlbXBsYXRlT2JqZWN0TWFwOw0KfTsNCg0KfSANCiNsaW5lIDYxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCIN
Cg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGFzc2VtYmxlclxcUHJpbnRlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KbmFtZXNw
YWNlIEpTQyB7DQoNCm5hbWVzcGFjZSBQcm9iZSB7DQpjbGFzcyBDb250ZXh0Ow0KfSANCg0KbmFt
ZXNwYWNlIFByaW50ZXIgew0KDQpzdHJ1Y3QgQ29udGV4dDsNCg0KdW5pb24gRGF0YSB7DQogICAg
RGF0YSgpDQogICAgew0KICAgICAgICBjb25zdCBpbnRwdHJfdCB1bmluaXRpYWxpemVkID0gMHhk
ZWFkYjBkMDsNCiAgICAgICAgbWVtY3B5KCZidWZmZXIsICZ1bmluaXRpYWxpemVkLCBzaXplb2Yo
dW5pbml0aWFsaXplZCkpOw0KICAgIH0NCiAgICBEYXRhKHVpbnRwdHJfdCB2YWx1ZSkNCiAgICAg
ICAgOiBEYXRhKCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSkNCiAgICB7IH0NCiAgICBEYXRhKGNvbnN0
IHZvaWQqIHBvaW50ZXIpDQogICAgICAgIDogRGF0YSgmcG9pbnRlciwgc2l6ZW9mKHBvaW50ZXIp
KQ0KICAgIHsgfQ0KICAgIERhdGEodm9pZCogc3JjLCBzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAg
ICAgIGRvIHsgaWYgKCghKHNpemUgPD0gc2l6ZW9mKGJ1ZmZlcikpKSkgZG8geyBXVEY6OmlzSW50
ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdp
dGhJbmZvKDU4LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxhc3NlbWJsZXJcXFByaW50ZXIuaCIsICBfX0ZVTkNUSU9OX18gICwgMTE1ICk7IH0gd2hp
bGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIG1lbWNweSgmYnVmZmVyLCBzcmMsIHNp
emUpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWU+Ojp0eXBlPg0KICAg
IFQgYXMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHZhbHVl
KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlPg0KICAgIGNv
bnN0IFQgYXMoaW50ID0gMCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IFQ+KHBvaW50ZXIpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlICYmICFzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4NCiAgICBjb25z
dCBUJiBhcygpIGNvbnN0DQogICAgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA8
PSBzaXplb2YoYnVmZmVyKSwgInNpemUgaXMgbm90IHNhbmUiKTsNCiAgICAgICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IFQqPigmYnVmZmVyKTsNCiAgICB9DQoNCiAgICB1aW50cHRy
X3QgdmFsdWU7DQogICAgY29uc3Qgdm9pZCogcG9pbnRlcjsNCg0KICAgIFVDUFVSZWdpc3RlciBi
dWZmZXJbNF07DQoNCg0KI2xpbmUgODggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxQcmludGVyLmgiDQp9Ow0KDQpzdHJ1Y3QgQ29u
dGV4dCB7DQogICAgQ29udGV4dChQcm9iZTo6Q29udGV4dCYgcHJvYmVDb250ZXh0LCBEYXRhJiBk
YXRhKQ0KICAgICAgICA6IHByb2JlQ29udGV4dChwcm9iZUNvbnRleHQpDQogICAgICAgICwgZGF0
YShkYXRhKQ0KICAgIHsgfQ0KDQogICAgUHJvYmU6OkNvbnRleHQmIHByb2JlQ29udGV4dDsNCiAg
ICBEYXRhJiBkYXRhOw0KfTsNCg0KdHlwZWRlZiB2b2lkICgqQ2FsbGJhY2spKFByaW50U3RyZWFt
JiwgQ29udGV4dCYpOw0KDQpzdHJ1Y3QgUHJpbnRSZWNvcmQgew0KICAgIFByaW50UmVjb3JkKERh
dGEgZGF0YSwgQ2FsbGJhY2sgcHJpbnRlcikNCiAgICAgICAgOiBkYXRhKGRhdGEpDQogICAgICAg
ICwgcHJpbnRlcihwcmludGVyKQ0KICAgIHsgfQ0KDQogICAgUHJpbnRSZWNvcmQoQ2FsbGJhY2sg
cHJpbnRlcikNCiAgICAgICAgOiBwcmludGVyKHByaW50ZXIpDQogICAgeyB9DQoNCiAgICB0ZW1w
bGF0ZTx0ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgUHJpbnRlciwgdHlwZW5hbWUgVD4NCiAgICBQcmlu
dFJlY29yZChjb25zdCBQcmludGVyPFQ+JiBvdGhlcikNCiAgICB7DQogICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19iYXNlX29mPFByaW50UmVjb3JkLCBQcmludGVyPFQ+Pjo6dmFsdWUsICJQ
cmludGVyIHNob3VsZCBleHRlbmQgUHJpbnRSZWNvcmQiKTsNCiAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoUHJpbnRSZWNvcmQpID09IHNpemVvZihQcmludGVyPFQ+KSwgIlByaW50ZXIgc2hv
dWxkIGJlIHRoZSBzYW1lIHNpemUgYXMgUHJpbnRSZWNvcmQiKTsNCiAgICAgICAgZGF0YSA9IG90
aGVyLmRhdGE7DQogICAgICAgIHByaW50ZXIgPSBvdGhlci5wcmludGVyOw0KICAgIH0NCg0KICAg
IERhdGEgZGF0YTsNCiAgICBDYWxsYmFjayBwcmludGVyOw0KDQpwcm90ZWN0ZWQ6DQogICAgUHJp
bnRSZWNvcmQoKSB7IH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQcmludGVy
Ow0KDQp0eXBlZGVmIFZlY3RvcjxQcmludFJlY29yZD4gUHJpbnRSZWNvcmRMaXN0Ow0KDQppbmxp
bmUgdm9pZCBhcHBlbmRQcmludGVyKFByaW50UmVjb3JkTGlzdCYpIHsgfQ0KDQp0ZW1wbGF0ZTx0
eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPg0KaW5saW5lIHZvaWQgYXBwZW5k
UHJpbnRlcihQcmludFJlY29yZExpc3QmIHByaW50UmVjb3JkTGlzdCwgRmlyc3QgZmlyc3QsIEFy
Z3VtZW50cyYmLi4uIG90aGVycykNCnsNCiAgICBwcmludFJlY29yZExpc3QuYXBwZW5kKFByaW50
ZXI8Rmlyc3Q+KGZpcnN0KSk7DQogICAgYXBwZW5kUHJpbnRlcihwcmludFJlY29yZExpc3QsIHN0
ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KG90aGVycykuLi4pOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+DQppbmxpbmUgUHJpbnRSZWNvcmRMaXN0KiBtYWtlUHJpbnRSZWNvcmRM
aXN0KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykNCnsNCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICBhdXRvIHByaW50UmVjb3JkTGlzdCA9IG5ldyBQcmludFJlY29yZExpc3QoKTsNCiAgICBh
cHBlbmRQcmludGVyKCpwcmludFJlY29yZExpc3QsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pOw0KICAgIHJldHVybiBwcmludFJlY29yZExpc3Q7DQp9DQoNCg0KDQp2b2lk
IHByaW50Q29uc3RDaGFyU3RyaW5nKFByaW50U3RyZWFtJiwgQ29udGV4dCYpOw0Kdm9pZCBwcmlu
dEludHB0cihQcmludFN0cmVhbSYsIENvbnRleHQmKTsNCnZvaWQgcHJpbnRVaW50cHRyKFByaW50
U3RyZWFtJiwgQ29udGV4dCYpOw0Kdm9pZCBwcmludFBvaW50ZXIoUHJpbnRTdHJlYW0mLCBDb250
ZXh0Jik7DQoNCnZvaWQgc2V0UHJpbnRlcihQcmludFJlY29yZCYsIENTdHJpbmcmJik7DQoNCg0K
DQp0ZW1wbGF0ZTw+DQpzdHJ1Y3QgUHJpbnRlcjxjb25zdCBjaGFyKj4gOiBwdWJsaWMgUHJpbnRS
ZWNvcmQgew0KICAgIFByaW50ZXIoY29uc3QgY2hhciogc3RyKQ0KICAgICAgICA6IFByaW50UmVj
b3JkKHN0ciwgcHJpbnRDb25zdENoYXJTdHJpbmcpDQogICAgeyB9DQp9Ow0KDQp0ZW1wbGF0ZTw+
DQpzdHJ1Y3QgUHJpbnRlcjxjaGFyKj4gOiBwdWJsaWMgUHJpbnRlcjxjb25zdCBjaGFyKj4gew0K
ICAgIFByaW50ZXIoY2hhciogc3RyKQ0KICAgICAgICA6IFByaW50ZXI8Y29uc3QgY2hhcio+KHN0
cikNCiAgICB7IH0NCn07DQoNCnRlbXBsYXRlPD4NCnN0cnVjdCBQcmludGVyPFJhd1BvaW50ZXI+
IDogcHVibGljIFByaW50UmVjb3JkIHsNCiAgICBQcmludGVyKFJhd1BvaW50ZXIgcmF3UG9pbnRl
cikNCiAgICAgICAgOiBQcmludFJlY29yZChyYXdQb2ludGVyLnZhbHVlKCksIHByaW50UG9pbnRl
cikNCiAgICB7IH0NCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSAmJiBzdGQ6Om51
bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQ+Pg0Kdm9pZCBzZXRQcmludGVyKFByaW50UmVjb3Jk
JiByZWNvcmQsIFQgdmFsdWUsIGludHB0cl90ID0gMCkNCnsNCiAgICByZWNvcmQuZGF0YS52YWx1
ZSA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4odmFsdWUpOw0KICAgIHJlY29yZC5wcmludGVyID0g
cHJpbnRJbnRwdHI7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSAmJiAhc3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkPj4NCnZvaWQgc2V0UHJpbnRlcihQcmludFJlY29y
ZCYgcmVjb3JkLCBUIHZhbHVlLCB1aW50cHRyX3QgPSAwKQ0Kew0KICAgIHJlY29yZC5kYXRhLnZh
bHVlID0gc3RhdGljX2Nhc3Q8dWludHB0cl90Pih2YWx1ZSk7DQogICAgcmVjb3JkLnByaW50ZXIg
PSBwcmludFVpbnRwdHI7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpzdHJ1Y3QgUHJpbnRl
ciA6IHB1YmxpYyBQcmludFJlY29yZCB7DQogICAgUHJpbnRlcihUIHZhbHVlKQ0KICAgIHsNCiAg
ICAgICAgc2V0UHJpbnRlcigqdGhpcywgdmFsdWUpOw0KICAgIH0NCn07DQoNCn0gDQoNCn0gDQoj
bGluZSA2NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2ZpbGVyXFxQcm9maWxlckpldHRpc29uUmVh
c29uLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsNCg0K
ZW51bSBKZXR0aXNvblJlYXNvbiB7DQogICAgTm90SmV0dGlzb25lZCwNCiAgICBKZXR0aXNvbkR1
ZVRvV2Vha1JlZmVyZW5jZSwNCiAgICBKZXR0aXNvbkR1ZVRvRGVidWdnZXJCcmVha3BvaW50LA0K
ICAgIEpldHRpc29uRHVlVG9EZWJ1Z2dlclN0ZXBwaW5nLA0KICAgIEpldHRpc29uRHVlVG9CYXNl
bGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXIsDQogICAgSmV0dGlzb25EdWVUb0Jhc2VsaW5l
TG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlck9uT1NSRW50cnlGYWlsLA0KICAgIEpldHRpc29uRHVl
VG9PU1JFeGl0LA0KICAgIEpldHRpc29uRHVlVG9Qcm9maWxlZFdhdGNocG9pbnQsDQogICAgSmV0
dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50LA0KICAgIEpldHRpc29uRHVlVG9PbGRBZ2Us
DQogICAgSmV0dGlzb25EdWVUb1ZNVHJhcHMNCn07DQoNCn0gfSANCg0KbmFtZXNwYWNlIFdURiB7
DQoNCmNsYXNzIFByaW50U3RyZWFtOw0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpQcm9maWxlcjo6SmV0dGlzb25SZWFzb24pOw0KDQp9IA0KI2xpbmUgNjUgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVC
bG9jay5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxQcm9ncmFtRXhlY3V0YWJsZS5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGlj
IEdsb2JhbEV4ZWN1dGFibGUgew0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEdsb2JhbEV4ZWN1dGFibGU7DQogICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0ucHJvZ3JhbUV4ZWN1dGFibGVTcGFj
ZS5zcGFjZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpDQog
ICAgew0KICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgICAgICBQcm9n
cmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFBy
b2dyYW1FeGVjdXRhYmxlPih2bS5oZWFwKSkgUHJvZ3JhbUV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0
LCBzb3VyY2UpOw0KICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7DQogICAg
ICAgIHJldHVybiBleGVjdXRhYmxlOw0KICAgIH0NCg0KICAgIEpTT2JqZWN0KiBpbml0aWFsaXpl
R2xvYmFsUHJvcGVydGllcyhWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSopOw0KDQogICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsNCg0KICAgIFByb2dyYW1Db2RlQmxvY2sqIGNv
ZGVCbG9jaygpDQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFByb2dyYW1Db2Rl
QmxvY2sqPihFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp1bndyYXAobV9wcm9ncmFtQ29kZUJs
b2NrLmdldCgpKSk7DQogICAgfQ0KDQogICAgUmVmPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUo
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7DQogICAg
fQ0KICAgICAgICANCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBU
eXBlSW5mbyhQcm9ncmFtRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsN
CiAgICB9DQogICAgICAgIA0KICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNz
SW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCks
IGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dy
YW1Nb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6
Ok5vLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUpOyB9DQoNCiAgICBUZW1wbGF0ZU9iamVjdE1hcCYgZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAo
Vk0mKTsNCg0KcHJpdmF0ZToNCiAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7DQogICAg
ZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7DQoNCiAgICBQcm9ncmFtRXhlY3V0YWJsZShK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmKTsNCg0KICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0KICAgIFdyaXRlQmFycmllcjxV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOw0KICAg
IFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX3Byb2dyYW1Db2RlQmxv
Y2s7DQogICAgc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWN0TWFwPiBtX3RlbXBsYXRlT2Jq
ZWN0TWFwOw0KfTsNCg0KfSANCiNsaW5lIDY2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCm5hbWVzcGFjZSBERkcgew0Kc3RydWN0
IE9TUkV4aXRTdGF0ZTsNCn0gDQojbGluZSA4NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQoNCmNsYXNzIFVu
YXJ5QXJpdGhQcm9maWxlOw0KY2xhc3MgQmluYXJ5QXJpdGhQcm9maWxlOw0KY2xhc3MgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOw0KY2xhc3MgQ29kZUJsb2NrU2V0Ow0KY2xhc3MgRXhlY3V0YWJs
ZVRvQ29kZUJsb2NrRWRnZTsNCmNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7DQpjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7DQpjbGFzcyBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ7DQpjbGFzcyBNZXRhZGF0YVRhYmxlOw0KY2xhc3MgUENUb0NvZGVPcmln
aW5NYXA7DQpjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsNCmNsYXNzIFN0cnVjdHVyZVN0dWJJ
bmZvOw0Kc3RydWN0IEJ5VmFsSW5mbzsNCg0KdXNpbmcgQ29kZUJsb2NrUmFyZURhdGFNYWxsb2Mg
PSBGYXN0TWFsbG9jOw0KDQplbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3Q7DQoNCnN0cnVj
dCBPcENhdGNoOw0KDQplbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1p
emF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07DQoNCmNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgew0KICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7DQogICAgZnJpZW5kIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsNCiAgICBmcmllbmQgY2xhc3MgSklUOw0KICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCnB1YmxpYzoNCg0KICAgIGVudW0gQ29w
eVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07DQoNCiAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gdHJ1ZTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4NCiAg
ICBzdGF0aWMgdm9pZCBzdWJzcGFjZUZvcihWTSYpDQogICAgew0KICAgICAgICBkbyB7IFdURjo6
aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNy
YXNoV2l0aEluZm8oMTI0LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiLCAgX19GVU5DVElPTl9fICAsIDExNiAp
OyB9IHdoaWxlIChmYWxzZSk7DQogICAgfQ0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzID0gMDsNCg0KICAgIHByb3RlY3RlZDogc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCnBy
b3RlY3RlZDoNCiAgICBDb2RlQmxvY2soVk0mLCBTdHJ1Y3R1cmUqLCBDb3B5UGFyc2VkQmxvY2tU
YWcsIENvZGVCbG9jayYgb3RoZXIpOw0KICAgIENvZGVCbG9jayhWTSYsIFN0cnVjdHVyZSosIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqLCBKU1Nj
b3BlKik7DQoNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2smIG90aGVyKTsNCiAgICBib29sIGZpbmlzaENyZWF0aW9uKFZNJiwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayosIEpTU2NvcGUq
KTsNCiAgICANCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uQ29tbW9uKFZNJik7DQoNCiAgICBXcml0
ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Ow0KDQpwdWJsaWM6DQogICAg
X19kZWNsc3BlYyhkbGxleHBvcnQpIH5Db2RlQmxvY2soKTsNCg0KICAgIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLmdl
dCgpOyB9DQoNCiAgICBDU3RyaW5nIGluZmVycmVkTmFtZSgpIGNvbnN0Ow0KICAgIENvZGVCbG9j
a0hhc2ggaGFzaCgpIGNvbnN0Ow0KICAgIGJvb2wgaGFzSGFzaCgpIGNvbnN0Ow0KICAgIGJvb2wg
aXNTYWZlVG9Db21wdXRlSGFzaCgpIGNvbnN0Ow0KICAgIENTdHJpbmcgaGFzaEFzU3RyaW5nSWZQ
b3NzaWJsZSgpIGNvbnN0Ow0KICAgIENTdHJpbmcgc291cmNlQ29kZUZvclRvb2xzKCkgY29uc3Q7
IA0KICAgIENTdHJpbmcgc291cmNlQ29kZU9uT25lTGluZSgpIGNvbnN0OyANCiAgICB2b2lkIGR1
bXBBc3N1bWluZ0pJVFR5cGUoUHJpbnRTdHJlYW0mLCBKSVRUeXBlKSBjb25zdDsNCiAgICBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7DQoNCiAgICBN
ZXRhZGF0YVRhYmxlKiBtZXRhZGF0YVRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5n
ZXQoKTsgfQ0KDQogICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX251bVBh
cmFtZXRlcnM7IH0NCiAgICB2b2lkIHNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVlKTsNCg0K
ICAgIGludCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXA7IH0NCg0KICAgIGludCBudW1DYWxsZWVMb2NhbHMoKSBjb25zdCB7
IHJldHVybiBtX251bUNhbGxlZUxvY2FsczsgfQ0KDQogICAgaW50IG51bVZhcnMoKSBjb25zdCB7
IHJldHVybiBtX251bVZhcnM7IH0NCiAgICBpbnQgbnVtVG1wcygpIGNvbnN0IHsgcmV0dXJuIG1f
dW5saW5rZWRDb2RlLT5oYXNDaGVja3BvaW50cygpICogbWF4TnVtQ2hlY2twb2ludFRtcHM7IH0N
Cg0KICAgIGludCogYWRkcmVzc09mTnVtUGFyYW1ldGVycygpIHsgcmV0dXJuICZtX251bVBhcmFt
ZXRlcnM7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtUGFyYW1ldGVycygpIHsg
cmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PENv
ZGVCbG9jayo+KDB4NDAwMCktPm1fbnVtUGFyYW1ldGVycykpIC0gMHg0MDAwKTsgfQ0KDQogICAg
Q29kZUJsb2NrKiBhbHRlcm5hdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvZGVC
bG9jayo+KG1fYWx0ZXJuYXRpdmUuZ2V0KCkpOyB9DQogICAgdm9pZCBzZXRBbHRlcm5hdGl2ZShW
TSYsIENvZGVCbG9jayopOw0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
Zm9yRWFjaFJlbGF0ZWRDb2RlQmxvY2soRnVuY3RvciYmIGZ1bmN0b3IpDQogICAgew0KICAgICAg
ICBGdW5jdG9yIGYoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpKTsNCiAgICAgICAgVmVj
dG9yPENvZGVCbG9jayosIDQ+IGNvZGVCbG9ja3M7DQogICAgICAgIGNvZGVCbG9ja3MuYXBwZW5k
KHRoaXMpOw0KDQogICAgICAgIHdoaWxlICghY29kZUJsb2Nrcy5pc0VtcHR5KCkpIHsNCiAgICAg
ICAgICAgIENvZGVCbG9jayogY3VycmVudENvZGVCbG9jayA9IGNvZGVCbG9ja3MudGFrZUxhc3Qo
KTsNCiAgICAgICAgICAgIGYoY3VycmVudENvZGVCbG9jayk7DQoNCiAgICAgICAgICAgIGlmIChD
b2RlQmxvY2sqIGFsdGVybmF0aXZlID0gY3VycmVudENvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkN
CiAgICAgICAgICAgICAgICBjb2RlQmxvY2tzLmFwcGVuZChhbHRlcm5hdGl2ZSk7DQogICAgICAg
ICAgICBpZiAoQ29kZUJsb2NrKiBvc3JFbnRyeUJsb2NrID0gY3VycmVudENvZGVCbG9jay0+c3Bl
Y2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKSkNCiAgICAgICAgICAgICAgICBjb2RlQmxvY2tzLmFw
cGVuZChvc3JFbnRyeUJsb2NrKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gc3BlY2lhbGl6YXRpb25Gcm9tSXNDb25zdHJ1Y3QoaXNDb25zdHJ1Y3RvcigpKTsN
CiAgICB9DQoNCiAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlRm9ySmV0dGlzb24oKTsgICAgDQog
ICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIENvZGVCbG9jayogYmFzZWxpbmVBbHRlcm5hdGl2ZSgp
Ow0KICAgIA0KICAgIA0KICAgIA0KICAgIENvZGVCbG9jayogYmFzZWxpbmVWZXJzaW9uKCk7DQoN
CiAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsNCiAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7DQogICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsNCiAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0
b3ImKTsNCiAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7DQoNCiAgICB2b2lk
IG5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCk7DQoNCiAgICB2b2lkIGR1bXBTb3VyY2UoKTsN
CiAgICB2b2lkIGR1bXBTb3VyY2UoUHJpbnRTdHJlYW0mKTsNCg0KICAgIHZvaWQgZHVtcEJ5dGVj
b2RlKCk7DQogICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mKTsNCiAgICB2b2lkIGR1
bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVm
JiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7DQogICAgdm9pZCBkdW1w
Qnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0
IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOw0KDQogICAgdm9pZCBkdW1wRXhjZXB0aW9u
SGFuZGxlcnMoUHJpbnRTdHJlYW0mKTsNCiAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0
cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgdm9pZCBwcmludFN0cnVjdHVyZShQcmlu
dFN0cmVhbSYsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJh
bmQpOw0KDQogICAgdm9pZCBkdW1wTWF0aElDU3RhdHMoKTsNCg0KICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5pc0NvbnN0cnVjdG9yKCk7IH0N
CiAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5j
b2RlVHlwZSgpOyB9DQoNCiAgICBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5zY3JpcHRNb2RlKCk7IH0NCg0KICAgIGJvb2wgaGFz
SW5zdGFsbGVkVk1UcmFwQnJlYWtwb2ludHMoKSBjb25zdDsNCiAgICBib29sIGluc3RhbGxWTVRy
YXBCcmVha3BvaW50cygpOw0KDQogICAgaW5saW5lIGJvb2wgaXNLbm93bkNlbGwoVmlydHVhbFJl
Z2lzdGVyIHJlZykNCiAgICB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgaWYgKHJlZy5p
c0NvbnN0YW50KCkpDQogICAgICAgICAgICByZXR1cm4gZ2V0Q29uc3RhbnQocmVnKS5pc0NlbGwo
KTsNCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSBi
b29sIGlzVGVtcG9yYXJ5UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHJlZykNCiAgICB7DQogICAg
ICAgIHJldHVybiByZWcub2Zmc2V0KCkgPj0gbV9udW1WYXJzOw0KICAgIH0NCg0KICAgIEhhbmRs
ZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUluZGV4LCBSZXF1aXJlZEhh
bmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOw0KICAgIEhhbmRsZXJJbmZvKiBo
YW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxl
cjo6QW55SGFuZGxlcik7DQogICAgdm9pZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNp
dGUoRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXgpOw0KICAgIHVuc2lnbmVkIGxpbmVOdW1iZXJGb3JC
eXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOw0KICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlckZv
ckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7DQogICAgdm9pZCBleHByZXNzaW9uUmFuZ2VG
b3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgsIGludCYgZGl2b3QsDQogICAgICAgIGludCYg
c3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNv
bHVtbikgY29uc3Q7DQoNCiAgICBPcHRpb25hbDxCeXRlY29kZUluZGV4PiBieXRlY29kZUluZGV4
RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7DQoNCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICB2b2lkIGdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIElDU3RhdHVzTWFwJiByZXN1bHQpOw0KICAgIHZvaWQgZ2V0SUNTdGF0dXNNYXAoSUNTdGF0
dXNNYXAmIHJlc3VsdCk7DQogICAgDQoNCiAgICBzdHJ1Y3QgSklURGF0YSB7DQogICAgICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9p
ZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNp
emUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRp
b24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxv
Y2VkID0gaW50OyB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvID0gaW50Ow0KDQogICAgICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHViSW5mb3M7
DQogICAgICAgIEJhZzxKSVRBZGRJQz4gbV9hZGRJQ3M7DQogICAgICAgIEJhZzxKSVRNdWxJQz4g
bV9tdWxJQ3M7DQogICAgICAgIEJhZzxKSVROZWdJQz4gbV9uZWdJQ3M7DQogICAgICAgIEJhZzxK
SVRTdWJJQz4gbV9zdWJJQ3M7DQogICAgICAgIEJhZzxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsN
CiAgICAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOw0KICAgICAgICBTZW50
aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExp
bmtJbmZvPj4gbV9pbmNvbWluZ0NhbGxzOw0KICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9s
eW1vcnBoaWNDYWxsTm9kZSwgUGFja2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5v
ZGU+PiBtX2luY29taW5nUG9seW1vcnBoaWNDYWxsczsNCiAgICAgICAgUmVmQ291bnRlZEFycmF5
PFJhcmVDYXNlUHJvZmlsZT4gbV9yYXJlQ2FzZVByb2ZpbGVzOw0KICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UENUb0NvZGVPcmlnaW5NYXA+IG1fcGNUb0NvZGVPcmlnaW5NYXA7DQogICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJz
Ow0KICAgICAgICBKSVRDb2RlTWFwIG1faml0Q29kZU1hcDsNCiAgICB9Ow0KDQogICAgSklURGF0
YSYgZW5zdXJlSklURGF0YShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikNCiAgICB7
DQogICAgICAgIGlmICgobV9qaXREYXRhKSkNCiAgICAgICAgICAgIHJldHVybiAqbV9qaXREYXRh
Ow0KICAgICAgICByZXR1cm4gZW5zdXJlSklURGF0YVNsb3cobG9ja2VyKTsNCiAgICB9DQogICAg
SklURGF0YSYgZW5zdXJlSklURGF0YVNsb3coY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJik7DQoN
CiAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoQmluYXJ5QXJpdGhQcm9maWxlKik7DQogICAgSklU
TXVsSUMqIGFkZEpJVE11bElDKEJpbmFyeUFyaXRoUHJvZmlsZSopOw0KICAgIEpJVE5lZ0lDKiBh
ZGRKSVROZWdJQyhVbmFyeUFyaXRoUHJvZmlsZSopOw0KICAgIEpJVFN1YklDKiBhZGRKSVRTdWJJ
QyhCaW5hcnlBcml0aFByb2ZpbGUqKTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVy
YXRvciwgSklUQWRkR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPg0KICAgIEpJVEFkZElDKiBhZGRN
YXRoSUMoQmluYXJ5QXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVRBZGRJQyhw
cm9maWxlKTsgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRNdWxH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+DQogICAgSklUTXVsSUMqIGFkZE1hdGhJQyhCaW5hcnlB
cml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE11bElDKHByb2ZpbGUpOyB9DQoN
CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE5lZ0dlbmVyYXRvcj46OnZh
bHVlPjo6dHlwZT4NCiAgICBKSVROZWdJQyogYWRkTWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBw
cm9maWxlKSB7IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQ0KDQogICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+DQog
ICAgSklUU3ViSUMqIGFkZE1hdGhJQyhCaW5hcnlBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0
dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9DQoNCiAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRk
U3R1YkluZm8oQWNjZXNzVHlwZSk7DQoNCiAgICANCiAgICBTdHJ1Y3R1cmVTdHViSW5mbyogZmlu
ZFN0dWJJbmZvKENvZGVPcmlnaW4pOw0KICAgIA0KICAgIEJ5VmFsSW5mbyogZmluZEJ5VmFsSW5m
byhDb2RlT3JpZ2luKTsNCg0KICAgIEJ5VmFsSW5mbyogYWRkQnlWYWxJbmZvKCk7DQoNCiAgICBD
YWxsTGlua0luZm8qIGFkZENhbGxMaW5rSW5mbygpOw0KDQogICAgDQogICAgDQogICAgDQogICAg
Q2FsbExpbmtJbmZvKiBnZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5k
ZXgpOw0KICAgIA0KICAgIHZvaWQgc2V0SklUQ29kZU1hcChKSVRDb2RlTWFwJiYgaml0Q29kZU1h
cCkNCiAgICB7DQogICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsNCiAg
ICAgICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1faml0Q29kZU1hcCA9IHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4oaml0Q29kZU1hcCk7DQogICAgfQ0KICAgIGNvbnN0IEpJVENv
ZGVNYXAmIGppdENvZGVNYXAoKQ0KICAgIHsNCiAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOw0KICAgICAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2NrZXIpLm1faml0
Q29kZU1hcDsNCiAgICB9DQoNCiAgICB2b2lkIHNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5p
cXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJik7DQogICAgT3B0aW9uYWw8Q29kZU9yaWdpbj4g
ZmluZFBDKHZvaWQqIHBjKTsNCg0KICAgIHZvaWQgc2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdp
c3RlclNldCk7DQogICAgdm9pZCBzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0
cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4pOw0KDQogICAgdm9pZCBzZXRSYXJlQ2FzZVByb2ZpbGVz
KFJlZkNvdW50ZWRBcnJheTxSYXJlQ2FzZVByb2ZpbGU+JiYpOw0KICAgIFJhcmVDYXNlUHJvZmls
ZSogcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBCeXRlY29kZUluZGV4KTsNCiAgICB1bnNpZ25lZCByYXJlQ2FzZVByb2ZpbGVDb3VudEZv
ckJ5dGVjb2RlSW5kZXgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnl0ZWNvZGVJbmRleCk7
DQoNCiAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCkNCiAgICB7DQogICAgICAgIGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkNCiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOw0KICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUNvdW50
Rm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIGJ5dGVjb2RlSW5kZXgpOw0KICAgICAgICByZXR1cm4g
dmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQoKTsNCiAg
ICB9DQoNCiAgICBib29sIGNvdWxkVGFrZVNsb3dDYXNlKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCkNCiAgICB7DQogICAgICAgIGlmICghaGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkNCiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOw0KICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUNvdW50
Rm9yQnl0ZWNvZGVJbmRleChsb2NrZXIsIGJ5dGVjb2RlSW5kZXgpOw0KICAgICAgICByZXR1cm4g
dmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQoKTsNCiAgICB9
DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICB2b2lkIHJlc2V0SklURGF0YSgp
Ow0KI2xpbmUgMzczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCINCg0KICAgIHZvaWQgdW5saW5rSW5jb21pbmdD
YWxscygpOw0KDQoNCiAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSwgQ2FsbExpbmtJbmZvKik7DQogICAgdm9pZCBsaW5rSW5jb21pbmdQb2x5bW9ycGhpY0Nh
bGwoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwgUG9seW1vcnBoaWNDYWxsTm9kZSopOw0KI2xpbmUg
MzgwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5
dGVjb2RlXFxDb2RlQmxvY2suaCINCg0KICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChDYWxsRnJh
bWUqIGNhbGxlckZyYW1lLCBMTEludENhbGxMaW5rSW5mbyopOw0KDQogICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIG91dE9mTGluZUp1bXBUYXJnZXQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKTsNCiAgICBp
bnQgb3V0T2ZMaW5lSnVtcE9mZnNldChJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IG9mZnNldCkN
CiAgICB7DQogICAgICAgIHJldHVybiBtX3VubGlua2VkQ29kZS0+b3V0T2ZMaW5lSnVtcE9mZnNl
dChvZmZzZXQpOw0KICAgIH0NCiAgICBpbnQgb3V0T2ZMaW5lSnVtcE9mZnNldChjb25zdCBJbnN0
cnVjdGlvbiogcGMpOw0KICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KGNvbnN0IEluc3RydWN0
aW9uU3RyZWFtOjpSZWYmIGluc3RydWN0aW9uKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG91dE9m
TGluZUp1bXBPZmZzZXQoaW5zdHJ1Y3Rpb24ucHRyKCkpOw0KICAgIH0NCg0KICAgIGlubGluZSB1
bnNpZ25lZCBieXRlY29kZU9mZnNldChjb25zdCBJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykN
CiAgICB7DQogICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gaW5zdHJ1Y3Rp
b25zKCkuYXQoMCkucHRyKCk7DQogICAgICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uc0VuZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSW5zdHJ1Y3Rpb24qPihyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oaW5zdHJ1Y3Rpb25zQmVnaW4pICsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsNCiAg
ICAgICAgZG8geyBpZiAoKCEocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnNCZWdpbiAmJiBy
ZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zRW5kKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygz
OTgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5
dGVjb2RlXFxDb2RlQmxvY2suaCIsICBfX0ZVTkNUSU9OX18gICwgMTE3ICk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIHJldHVybiByZXR1cm5BZGRyZXNzIC0gaW5zdHJ1
Y3Rpb25zQmVnaW47DQogICAgfQ0KDQogICAgaW5saW5lIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleChjb25zdCBJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykNCiAgICB7DQogICAgICAgIHJl
dHVybiBCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KHJldHVybkFkZHJlc3MpKTsNCiAgICB9
DQoNCiAgICBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUtPmluc3RydWN0aW9ucygpOyB9DQogICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uQXQoQnl0ZWNvZGVJbmRleCBpbmRleCkgY29uc3QgeyByZXR1cm4g
aW5zdHJ1Y3Rpb25zKCkuYXQoaW5kZXgpLnB0cigpOyB9DQoNCiAgICBzaXplX3QgcHJlZGljdGVk
TWFjaGluZUNvZGVTaXplKCk7DQoNCiAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbnNTaXplKCkgY29u
c3QgeyByZXR1cm4gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyB9DQogICAgdW5zaWduZWQgYnl0ZWNv
ZGVDb3N0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZUNvc3Q7IH0NCg0KICAgIA0KICAgIENv
ZGVCbG9jayogbmV3UmVwbGFjZW1lbnQoKTsNCiAgICANCiAgICB2b2lkIHNldEpJVENvZGUoUmVm
PEpJVENvZGU+JiYgY29kZSkNCiAgICB7DQogICAgICAgIGlmICghY29kZS0+aXNTaGFyZWQoKSkN
CiAgICAgICAgICAgIGhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoY29kZS0+c2l6
ZSgpKTsNCg0KICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7DQogICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IA0KICAgICAgICBtX2ppdENvZGUgPSBzdGQ6Om1v
dmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGNvZGUpOw0KICAgIH0NCg0KICAgIFJlZlB0cjxK
SVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9DQogICAgc3RhdGljIHB0cmRp
ZmZfdCBqaXRDb2RlT2Zmc2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90
PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Q29kZUJsb2NrKj4oMHg0MDAwKS0+bV9qaXRDb2RlKSkgLSAw
eDQwMDApOyB9DQogICAgSklUVHlwZSBqaXRUeXBlKCkgY29uc3QNCiAgICB7DQogICAgICAgIEpJ
VENvZGUqIGppdENvZGUgPSBtX2ppdENvZGUuZ2V0KCk7DQogICAgICAgIFdURjo6bG9hZExvYWRG
ZW5jZSgpOw0KICAgICAgICBKSVRUeXBlIHJlc3VsdCA9IEpJVENvZGU6OmppdFR5cGVGb3Ioaml0
Q29kZSk7DQogICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOyANCiAgICAgICAgcmV0dXJuIHJl
c3VsdDsNCiAgICB9DQoNCiAgICBib29sIGhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkgY29uc3QN
CiAgICB7DQogICAgICAgIHJldHVybiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQ7
DQogICAgfQ0KICAgIA0KDQogICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOw0KDQogICAgREZH
OjpDYXBhYmlsaXR5TGV2ZWwgY29tcHV0ZUNhcGFiaWxpdHlMZXZlbCgpOw0KICAgIERGRzo6Q2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbCgpOw0KICAgIERGRzo6Q2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbFN0YXRlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8REZHOjpDYXBhYmls
aXR5TGV2ZWw+KG1fY2FwYWJpbGl0eUxldmVsU3RhdGUpOyB9DQoNCiAgICBDb2RlQmxvY2sqIG9w
dGltaXplZFJlcGxhY2VtZW50KEpJVFR5cGUgdHlwZVRvUmVwbGFjZSk7DQogICAgQ29kZUJsb2Nr
KiBvcHRpbWl6ZWRSZXBsYWNlbWVudCgpOyANCiAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2Vt
ZW50KEpJVFR5cGUgdHlwZVRvUmVwbGFjZSk7DQogICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNl
bWVudCgpOyANCiNsaW5lIDQ1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQoNCiAgICB2b2lkIGpldHRpc29u
KFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiwgUmVvcHRpbWl6YXRpb25Nb2RlID0gRG9udENvdW50
UmVvcHRpbWl6YXRpb24sIGNvbnN0IEZpcmVEZXRhaWwqID0gbnVsbHB0cik7DQogICAgDQogICAg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25l
ckV4ZWN1dGFibGUuZ2V0KCk7IH0NCiAgICANCiAgICBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdl
KiBvd25lckVkZ2UoKSBjb25zdCB7IHJldHVybiBtX293bmVyRWRnZS5nZXQoKTsgfQ0KDQogICAg
Vk0mIHZtKCkgY29uc3QgeyByZXR1cm4gKm1fdm07IH0NCg0KICAgIFZpcnR1YWxSZWdpc3RlciB0
aGlzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dGhpc1JlZ2lzdGVy
KCk7IH0NCg0KICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29k
ZS0+dXNlc0V2YWwoKTsgfQ0KDQogICAgdm9pZCBzZXRTY29wZVJlZ2lzdGVyKFZpcnR1YWxSZWdp
c3RlciBzY29wZVJlZ2lzdGVyKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBt
X3Njb3BlUmVnaXN0ZXIgPSBzY29wZVJlZ2lzdGVyOw0KICAgIH0NCg0KICAgIFZpcnR1YWxSZWdp
c3RlciBzY29wZVJlZ2lzdGVyKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3Njb3Bl
UmVnaXN0ZXI7DQogICAgfQ0KICAgIA0KICAgIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCBwdXRC
eUlkQ29udGV4dCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoY29kZVR5cGUoKSA9PSBFdmFs
Q29kZSkNCiAgICAgICAgICAgIHJldHVybiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWRFdmFsOw0K
ICAgICAgICByZXR1cm4gUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkOw0KICAgIH0NCg0KICAgIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxl
LT5zb3VyY2UoKTsgfQ0KICAgIHVuc2lnbmVkIHNvdXJjZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKS5zdGFydE9mZnNldCgpOyB9DQogICAgdW5zaWdu
ZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFi
bGUtPnN0YXJ0Q29sdW1uKCk7IH0NCg0KICAgIHNpemVfdCBudW1iZXJPZkp1bXBUYXJnZXRzKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mSnVtcFRhcmdldHMoKTsgfQ0K
ICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+anVtcFRhcmdldChpbmRleCk7IH0NCg0KICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyKTsNCg0KICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRWYWx1
ZVByb2ZpbGVzKCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICByZXR1cm4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXMuc2l6ZSgpOw0KICAgIH0N
Cg0KICAgIFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlRm9yQXJndW1lbnQodW5zaWduZWQgYXJn
dW1lbnRJbmRleCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsgDQogICAgICAgIFZhbHVlUHJv
ZmlsZSYgcmVzdWx0ID0gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXNbYXJndW1lbnRJbmRleF07DQog
ICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgVmFsdWVQcm9maWxlJiB2YWx1ZVBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOw0KICAgIFNwZWN1bGF0ZWRUeXBl
IHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZUluZGV4KGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIEJ5dGVjb2RlSW5kZXgpOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBmb3JFYWNoVmFsdWVQcm9maWxlKGNvbnN0IEZ1bmN0b3ImKTsNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBcnJheVByb2ZpbGUoY29uc3QgRnVuY3Rv
ciYpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFycmF5QWxs
b2NhdGlvblByb2ZpbGUoY29uc3QgRnVuY3RvciYpOw0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1bmN0b3Im
KTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMTEludENhbGxM
aW5rSW5mbyhjb25zdCBGdW5jdG9yJik7DQoNCiAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFy
eUFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlSW5kZXgoQnl0ZWNvZGVJbmRleCk7DQogICAgVW5hcnlB
cml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVJbmRleChCeXRlY29kZUlu
ZGV4KTsNCiAgICBCaW5hcnlBcml0aFByb2ZpbGUqIGJpbmFyeUFyaXRoUHJvZmlsZUZvclBDKGNv
bnN0IEluc3RydWN0aW9uKik7DQogICAgVW5hcnlBcml0aFByb2ZpbGUqIHVuYXJ5QXJpdGhQcm9m
aWxlRm9yUEMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCg0KICAgIGJvb2wgY291bGRUYWtlU3BlY2lh
bEFyaXRoRmFzdENhc2UoQnl0ZWNvZGVJbmRleCBieXRlY29kZU9mZnNldCk7DQoNCiAgICBBcnJh
eVByb2ZpbGUqIGdldEFycmF5UHJvZmlsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeXRl
Y29kZUluZGV4KTsNCiAgICBBcnJheVByb2ZpbGUqIGdldEFycmF5UHJvZmlsZShCeXRlY29kZUlu
ZGV4KTsNCg0KICAgIA0KDQogICAgc2l6ZV90IG51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVEYXRhID8gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVy
cy5zaXplKCkgOiAwOyB9DQogICAgSGFuZGxlckluZm8mIGV4Y2VwdGlvbkhhbmRsZXIoaW50IGlu
ZGV4KSB7IGRvIHsgaWYgKCghKG1fcmFyZURhdGEpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDUz
MiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0
ZWNvZGVcXENvZGVCbG9jay5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMTggKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnNb
aW5kZXhdOyB9DQoNCiAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkgeyByZXR1cm4gbV91bmxp
bmtlZENvZGUtPmhhc0V4cHJlc3Npb25JbmZvKCk7IH0NCg0KDQogICAgREZHOjpDb2RlT3JpZ2lu
UG9vbCYgY29kZU9yaWdpbnMoKTsNCiAgICANCiAgICANCiAgICBib29sIGhhc0NvZGVPcmlnaW5z
KCkNCiAgICB7DQogICAgICAgIHJldHVybiBKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlw
ZSgpKTsNCiAgICB9DQogICAgICAgIA0KICAgIGJvb2wgY2FuR2V0Q29kZU9yaWdpbihDYWxsU2l0
ZUluZGV4IGluZGV4KQ0KICAgIHsNCiAgICAgICAgaWYgKCFoYXNDb2RlT3JpZ2lucygpKQ0KICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICByZXR1cm4gaW5kZXguYml0cygpIDwgY29k
ZU9yaWdpbnMoKS5zaXplKCk7DQogICAgfQ0KDQogICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKENh
bGxTaXRlSW5kZXggaW5kZXgpDQogICAgew0KICAgICAgICByZXR1cm4gY29kZU9yaWdpbnMoKS5n
ZXQoaW5kZXguYml0cygpKTsNCiAgICB9DQoNCiAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXImIGxhenlPcGVyYW5kVmFsdWVQcm9maWxlcyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVzOw0KICAgIH0NCiNsaW5lIDU2MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQoNCiAgICANCg0KICAgIHNp
emVfdCBudW1iZXJPZklkZW50aWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUt
Pm51bWJlck9mSWRlbnRpZmllcnMoKSArIG51bWJlck9mREZHSWRlbnRpZmllcnMoKTsgfQ0KICAg
IHNpemVfdCBudW1iZXJPZkRGR0lkZW50aWZpZXJzKCkgY29uc3Q7DQogICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcihpbnQgaW5kZXgpIGNvbnN0Ow0KDQoNCg0KI2xpbmUgNTcyICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxD
b2RlQmxvY2suaCINCg0KICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+JiBjb25zdGFu
dHMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9DQogICAgVmVjdG9yPFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpIHsg
cmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOyB9DQogICAgdW5zaWdu
ZWQgYWRkQ29uc3RhbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSlNWYWx1ZSB2KQ0KICAg
IHsNCiAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9jb25zdGFudFJlZ2lzdGVycy5zaXplKCk7
DQogICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuYXBwZW5kKFdyaXRlQmFycmllcjxVbmtub3du
PigpKTsNCiAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0KCptX3ZtLCB0aGlz
LCB2KTsNCiAgICAgICAgbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uYXBwZW5k
KFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXIpOw0KICAgICAgICByZXR1cm4gcmVzdWx0
Ow0KICAgIH0NCg0KICAgIHVuc2lnbmVkIGFkZENvbnN0YW50TGF6aWx5KGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpDQogICAgew0KICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX2NvbnN0YW50
UmVnaXN0ZXJzLnNpemUoKTsNCiAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5hcHBlbmQoV3Jp
dGVCYXJyaWVyPFVua25vd24+KCkpOw0KICAgICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhlcik7DQogICAg
ICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmll
cjxVbmtub3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lz
dGVyczsgfQ0KICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXIgcmVnKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZy50b0NvbnN0
YW50SW5kZXgoKV07IH0NCiAgICBfX2ZvcmNlaW5saW5lIEpTVmFsdWUgZ2V0Q29uc3RhbnQoVmly
dHVhbFJlZ2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tyZWcu
dG9Db25zdGFudEluZGV4KCldLmdldCgpOyB9DQogICAgX19mb3JjZWlubGluZSBTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oVmlydHVhbFJl
Z2lzdGVyIHJlZykgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb25bcmVnLnRvQ29uc3RhbnRJbmRleCgpXTsgfQ0KDQogICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkRlY2woaW50IGluZGV4KSB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbHNbaW5kZXhd
LmdldCgpOyB9DQogICAgaW50IG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fZnVu
Y3Rpb25EZWNscy5zaXplKCk7IH0NCiAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhw
cihpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZnVuY3Rpb25FeHByc1tpbmRleF0uZ2V0KCk7IH0NCiAg
ICANCiAgICBjb25zdCBCaXRWZWN0b3ImIGJpdFZlY3RvcihzaXplX3QgaSkgeyByZXR1cm4gbV91
bmxpbmtlZENvZGUtPmJpdFZlY3RvcihpKTsgfQ0KDQogICAgSGVhcCogaGVhcCgpIGNvbnN0IHsg
cmV0dXJuICZtX3ZtLT5oZWFwOyB9DQogICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgp
IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9DQoNCiAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0Rm9yKENvZGVPcmlnaW4pOw0KDQogICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzJiBsaXZlbmVzc0FuYWx5c2lzKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX3VubGlua2Vk
Q29kZS0+bGl2ZW5lc3NBbmFseXNpcyh0aGlzKTsNCiAgICB9DQogICAgDQogICAgdm9pZCB2YWxp
ZGF0ZSgpOw0KDQogICAgDQoNCiAgICBzaXplX3QgbnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
cy5zaXplKCkgOiAwOyB9DQogICAgU2ltcGxlSnVtcFRhYmxlJiBzd2l0Y2hKdW1wVGFibGUoaW50
IHRhYmxlSW5kZXgpIHsgZG8geyBpZiAoKCEobV9yYXJlRGF0YSkpKSBkbyB7IFdURjo6aXNJbnRl
Z3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0
aEluZm8oNjE4LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiLCAgX19GVU5DVElPTl9fICAsIDExOSApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1w
VGFibGVzW3RhYmxlSW5kZXhdOyB9DQogICAgdm9pZCBjbGVhclN3aXRjaEp1bXBUYWJsZXMoKQ0K
ICAgIHsNCiAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAg
ICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuY2xlYXIoKTsNCiAgICB9DQoNCiAg
ICB2b2lkIGFkZFN3aXRjaEp1bXBUYWJsZUZyb21Qcm9maWxlZENvZGVCbG9jayhTaW1wbGVKdW1w
VGFibGUmIHByb2ZpbGVkKQ0KICAgIHsNCiAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOw0KICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKHByb2Zp
bGVkLmNsb25lTm9uSklUUGFydCgpKTsNCiAgICB9DQojbGluZSA2MzIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5o
Ig0KDQogICAgc2l6ZV90IG51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpIDogMDsgfQ0KICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxl
KGludCB0YWJsZUluZGV4KSB7IGRvIHsgaWYgKCghKG1fcmFyZURhdGEpKSkgZG8geyBXVEY6Omlz
SW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFz
aFdpdGhJbmZvKDYzNCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMjAgKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQ0KDQogICAgRGlyZWN0RXZhbENvZGVDYWNo
ZSYgZGlyZWN0RXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9kaXJlY3RFdmFsQ29kZUNhY2hlOyB9DQoNCiAgICBlbnVtIGNs
YXNzIFNocmlua01vZGUgew0KICAgICAgICANCiAgICAgICAgRWFybHlTaHJpbmssDQoNCiAgICAg
ICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgTGF0ZVNocmluaywNCiAgICB9Ow0KICAg
IHZvaWQgc2hyaW5rVG9GaXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2hyaW5rTW9kZSk7
DQoNCiAgICANCiAgICANCg0KICAgIGJvb2wgY2hlY2tJZkpJVFRocmVzaG9sZFJlYWNoZWQoKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRlci5jaGVja0lmVGhyZXNo
b2xkQ3Jvc3NlZEFuZFNldCh0aGlzKTsNCiAgICB9DQoNCiAgICB2b2lkIGRvbnRKSVRBbnl0aW1l
U29vbigpDQogICAgew0KICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIuZGVmZXJJbmRlZmlu
aXRlbHkoKTsNCiAgICB9DQoNCiAgICBpbnQzMl90IHRocmVzaG9sZEZvckpJVChpbnQzMl90IHRo
cmVzaG9sZCk7DQogICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpOw0KICAgIHZvaWQgaml0U29vbigp
Ow0KDQogICAgY29uc3QgQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyJiBsbGludEV4ZWN1dGVDb3Vu
dGVyKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7
DQogICAgfQ0KDQogICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6dHVwbGU8U3RydWN0dXJlSUQsIHVu
c2lnbmVkPiwgVmVjdG9yPExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludD4+IFN0cnVjdHVyZVdhdGNocG9pbnRNYXA7DQogICAgU3RydWN0dXJlV2F0Y2hwb2ludE1h
cCYgbGxpbnRHZXRCeUlkV2F0Y2hwb2ludE1hcCgpIHsgcmV0dXJuIG1fbGxpbnRHZXRCeUlkV2F0
Y2hwb2ludE1hcDsgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
Cg0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB1bnNpZ25lZCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0Ow0KICAgIHZvaWQgY291bnRSZW9wdGlt
aXphdGlvbigpOw0KDQoNCiAgICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2
ZVJlZ2lzdGVycygpIGNvbnN0Ow0KDQogICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mTExJbnRC
YXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKSB7IHJldHVybiBSZWdpc3RlclNldDo6bGxpbnRC
YXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKS5udW1iZXJPZlNldFJlZ2lzdGVycygpOyB9DQog
ICAgc3RhdGljIHNpemVfdCBsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVn
aXN0ZXJzKCk7DQogICAgc2l6ZV90IGNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygp
Ow0KDQoNCg0KDQojbGluZSA3MDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5oIg0KDQoNCiAgICB1bnNpZ25lZCBu
dW1iZXJPZkRGR0NvbXBpbGVzKCk7DQoNCiAgICBpbnQzMl90IGNvZGVUeXBlVGhyZXNob2xkTXVs
dGlwbGllcigpIGNvbnN0Ow0KDQogICAgaW50MzJfdCBhZGp1c3RlZENvdW50ZXJWYWx1ZShpbnQz
Ml90IGRlc2lyZWRUaHJlc2hvbGQpOw0KDQogICAgaW50MzJfdCogYWRkcmVzc09mSklURXhlY3V0
ZUNvdW50ZXIoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICZtX2ppdEV4ZWN1dGVDb3VudGVyLm1f
Y291bnRlcjsNCiAgICB9DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklURXhlY3V0
ZUNvdW50ZXIoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRl
cnByZXRfY2FzdDxDb2RlQmxvY2sqPigweDQwMDApLT5tX2ppdEV4ZWN1dGVDb3VudGVyKSkgLSAw
eDQwMDApICsgKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8
QmFzZWxpbmVFeGVjdXRpb25Db3VudGVyKj4oMHg0MDAwKS0+bV9jb3VudGVyKSkgLSAweDQwMDAp
OyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkpJVEV4ZWN1dGlvbkFjdGl2ZVRocmVz
aG9sZCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJl
dF9jYXN0PENvZGVCbG9jayo+KDB4NDAwMCktPm1faml0RXhlY3V0ZUNvdW50ZXIpKSAtIDB4NDAw
MCkgKyAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxCYXNl
bGluZUV4ZWN1dGlvbkNvdW50ZXIqPigweDQwMDApLT5tX2FjdGl2ZVRocmVzaG9sZCkpIC0gMHg0
MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZKSVRFeGVjdXRpb25Ub3RhbENv
dW50KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0
X2Nhc3Q8Q29kZUJsb2NrKj4oMHg0MDAwKS0+bV9qaXRFeGVjdXRlQ291bnRlcikpIC0gMHg0MDAw
KSArIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEJhc2Vs
aW5lRXhlY3V0aW9uQ291bnRlcio+KDB4NDAwMCktPm1fdG90YWxDb3VudCkpIC0gMHg0MDAwKTsg
fQ0KDQogICAgY29uc3QgQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyJiBqaXRFeGVjdXRlQ291bnRl
cigpIGNvbnN0IHsgcmV0dXJuIG1faml0RXhlY3V0ZUNvdW50ZXI7IH0NCg0KICAgIHVuc2lnbmVk
IG9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW1pemF0aW9u
RGVsYXlDb3VudGVyOyB9DQoNCiAgICANCiAgICANCiAgICANCiAgICBib29sIGNoZWNrSWZPcHRp
bWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCk7DQoNCiAgICANCiAgICANCiAgICANCiAgICB2b2lk
IG9wdGltaXplTmV4dEludm9jYXRpb24oKTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIHZvaWQgZG9udE9wdGltaXplQW55dGltZVNvb24oKTsNCg0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZvaWQgb3B0aW1pemVBZnRlcldhcm1VcCgpOw0KDQog
ICAgDQogICAgDQogICAgdm9pZCBvcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpOw0KDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdm9pZCBvcHRp
bWl6ZVNvb24oKTsNCg0KICAgIHZvaWQgZm9yY2VPcHRpbWl6YXRpb25TbG93UGF0aENvbmN1cnJl
bnRseSgpOw0KDQogICAgdm9pZCBzZXRPcHRpbWl6YXRpb25UaHJlc2hvbGRCYXNlZE9uQ29tcGls
YXRpb25SZXN1bHQoQ29tcGlsYXRpb25SZXN1bHQpOw0KICAgIA0KICAgIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleEZvckV4aXQoQnl0ZWNvZGVJbmRleCkgY29uc3Q7DQogICAgdWludDMyX3Qg
b3NyRXhpdENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX29zckV4aXRDb3VudGVyOyB9DQoNCiAg
ICB2b2lkIGNvdW50T1NSRXhpdCgpIHsgbV9vc3JFeGl0Q291bnRlcisrOyB9DQoNCiAgICBlbnVt
IGNsYXNzIE9wdGltaXplQWN0aW9uIHsgTm9uZSwgUmVvcHRpbWl6ZU5vdyB9Ow0KDQogICAgT3B0
aW1pemVBY3Rpb24gdXBkYXRlT1NSRXhpdENvdW50ZXJBbmRDaGVja0lmTmVlZFRvUmVvcHRpbWl6
ZShERkc6Ok9TUkV4aXRTdGF0ZSYpOw0KI2xpbmUgNzkyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxDb2RlQmxvY2suaCINCg0KICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpIHsgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PENvZGVCbG9jayo+KDB4
NDAwMCktPm1fb3NyRXhpdENvdW50ZXIpKSAtIDB4NDAwMCk7IH0NCg0KICAgIHVpbnQzMl90IGFk
anVzdGVkRXhpdENvdW50VGhyZXNob2xkKHVpbnQzMl90IGRlc2lyZWRUaHJlc2hvbGQpOw0KICAg
IHVpbnQzMl90IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uKCk7DQogICAgdWlu
dDMyX3QgZXhpdENvdW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRpb25Gcm9tTG9vcCgpOw0KICAg
IGJvb2wgc2hvdWxkUmVvcHRpbWl6ZU5vdygpOw0KICAgIGJvb2wgc2hvdWxkUmVvcHRpbWl6ZUZy
b21Mb29wTm93KCk7DQoNCg0KDQoNCiNsaW5lIDgwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQoNCiAgICBi
b29sIHNob3VsZE9wdGltaXplTm93KCk7DQogICAgdm9pZCB1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQ
cmVkaWN0aW9ucygpOw0KICAgIHZvaWQgdXBkYXRlQWxsQXJyYXlQcmVkaWN0aW9ucygpOw0KICAg
IHZvaWQgdXBkYXRlQWxsUHJlZGljdGlvbnMoKTsNCg0KICAgIHVuc2lnbmVkIGZyYW1lUmVnaXN0
ZXJDb3VudCgpOw0KICAgIGludCBzdGFja1BvaW50ZXJPZmZzZXQoKTsNCg0KICAgIGJvb2wgaGFz
T3BEZWJ1Z0ZvckxpbmVBbmRDb2x1bW4odW5zaWduZWQgbGluZSwgT3B0aW9uYWw8dW5zaWduZWQ+
IGNvbHVtbik7DQoNCiAgICBib29sIGhhc0RlYnVnZ2VyUmVxdWVzdHMoKSBjb25zdCB7IHJldHVy
biBtX2RlYnVnZ2VyUmVxdWVzdHM7IH0NCiAgICB2b2lkKiBkZWJ1Z2dlclJlcXVlc3RzQWRkcmVz
cygpIHsgcmV0dXJuICZtX2RlYnVnZ2VyUmVxdWVzdHM7IH0NCg0KICAgIHZvaWQgYWRkQnJlYWtw
b2ludCh1bnNpZ25lZCBudW1CcmVha3BvaW50cyk7DQogICAgdm9pZCByZW1vdmVCcmVha3BvaW50
KHVuc2lnbmVkIG51bUJyZWFrcG9pbnRzKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICBtX251bUJyZWFrcG9pbnRzIC09IG51bUJyZWFrcG9pbnRzOw0KICAgIH0NCg0KICAgIGVu
dW0gU3RlcHBpbmdNb2RlIHsNCiAgICAgICAgU3RlcHBpbmdNb2RlRGlzYWJsZWQsDQogICAgICAg
IFN0ZXBwaW5nTW9kZUVuYWJsZWQNCiAgICB9Ow0KICAgIHZvaWQgc2V0U3RlcHBpbmdNb2RlKFN0
ZXBwaW5nTW9kZSk7DQoNCiAgICB2b2lkIGNsZWFyRGVidWdnZXJSZXF1ZXN0cygpDQogICAgew0K
ICAgICAgICBtX3N0ZXBwaW5nTW9kZSA9IFN0ZXBwaW5nTW9kZURpc2FibGVkOw0KICAgICAgICBt
X251bUJyZWFrcG9pbnRzID0gMDsNCiAgICB9DQoNCiAgICBib29sIHdhc0NvbXBpbGVkV2l0aERl
YnVnZ2luZ09wY29kZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+d2FzQ29tcGls
ZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpOyB9DQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgbXV0YWJsZSBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsNCg0K
ICAgIGJvb2wgbV9zaG91bGRBbHdheXNCZUlubGluZWQ7IA0KDQoNCiAgICB1bnNpZ25lZCBtX2Nh
cGFiaWxpdHlMZXZlbFN0YXRlIDogMjsgDQojbGluZSA4NjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5oIg0KDQog
ICAgYm9vbCBtX2FsbFRyYW5zaXRpb25zSGF2ZUJlZW5NYXJrZWQgOiAxOyANCg0KICAgIGJvb2wg
bV9kaWRGYWlsSklUQ29tcGlsYXRpb24gOiAxOw0KICAgIGJvb2wgbV9kaWRGYWlsRlRMQ29tcGls
YXRpb24gOiAxOw0KICAgIGJvb2wgbV9oYXNCZWVuQ29tcGlsZWRXaXRoRlRMIDogMTsNCg0KICAg
IGJvb2wgbV9oYXNMaW5rZWRPU1JFeGl0IDogMTsNCiAgICBib29sIG1faXNFbGlnaWJsZUZvckxM
SW50RG93bmdyYWRlIDogMTsNCg0KICAgIA0KICAgIA0KICAgIHZvaWQgYmVnaW5WYWxpZGF0aW9u
RGlkRmFpbCgpOw0KICAgIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgZW5kVmFsaWRhdGlvbkRp
ZEZhaWwoKTsNCg0KICAgIHN0cnVjdCBSYXJlRGF0YSB7DQogICAgICAgIHB1YmxpYzogdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7
IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikg
eyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQg
PSBpbnQ7IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8g
PSBpbnQ7DQogICAgcHVibGljOg0KICAgICAgICBWZWN0b3I8SGFuZGxlckluZm8+IG1fZXhjZXB0
aW9uSGFuZGxlcnM7DQoNCiAgICAgICAgDQogICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+
IG1fc3dpdGNoSnVtcFRhYmxlczsNCiAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzOw0KDQogICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
VmFsdWVQcm9maWxlQW5kVmlydHVhbFJlZ2lzdGVyQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOw0K
DQogICAgICAgIERpcmVjdEV2YWxDb2RlQ2FjaGUgbV9kaXJlY3RFdmFsQ29kZUNhY2hlOw0KICAg
IH07DQoNCiAgICB2b2lkIGNsZWFyRXhjZXB0aW9uSGFuZGxlcnMoKQ0KICAgIHsNCiAgICAgICAg
aWYgKG1fcmFyZURhdGEpDQogICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRs
ZXJzLmNsZWFyKCk7DQogICAgfQ0KDQogICAgdm9pZCBhcHBlbmRFeGNlcHRpb25IYW5kbGVyKGNv
bnN0IEhhbmRsZXJJbmZvJiBoYW5kbGVyKQ0KICAgIHsNCiAgICAgICAgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeSgpOyANCiAgICAgICAgbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycy5h
cHBlbmQoaGFuZGxlcik7DQogICAgfQ0KDQogICAgRGlzcG9zYWJsZUNhbGxTaXRlSW5kZXggbmV3
RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggb3JpZ2luYWxDYWxs
U2l0ZSk7DQoNCiAgICB2b2lkIGVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNv
ZGVJbmRleChCeXRlY29kZUluZGV4KTsNCg0KICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmhhc1RhaWxDYWxscygpOyB9DQoNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBNZXRhZGF0YT4NCiAgICBNZXRhZGF0YSYgbWV0YWRhdGEoT3Bjb2RlSUQgb3Bj
b2RlSUQsIHVuc2lnbmVkIG1ldGFkYXRhSUQpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQog
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TWV0YWRhdGEqPihtX21ldGFkYXRhLT5nZXQob3Bj
b2RlSUQpKVttZXRhZGF0YUlEXTsNCiAgICB9DQoNCiAgICBzaXplX3QgbWV0YWRhdGFTaXplSW5C
eXRlcygpDQogICAgew0KICAgICAgICByZXR1cm4gbV91bmxpbmtlZENvZGUtPm1ldGFkYXRhU2l6
ZUluQnl0ZXMoKTsNCiAgICB9DQoNCiAgICBNZXRhZGF0YVRhYmxlKiBtZXRhZGF0YVRhYmxlKCkg
eyByZXR1cm4gbV9tZXRhZGF0YS5nZXQoKTsgfQ0KICAgIGNvbnN0IHZvaWQqIGluc3RydWN0aW9u
c1Jhd1BvaW50ZXIoKSB7IHJldHVybiBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXI7IH0NCg0KICAg
IGJvb2wgbG9vcEhpbnRzQXJlRWxpZ2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4oKQ0KICAgIHsN
CiAgICAgICAgDQogICAgICAgIHJldHVybiAhbV91bmxpbmtlZENvZGUtPmlzQnVpbHRpbkZ1bmN0
aW9uKCk7DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgdm9pZCBmaW5hbGl6ZUxMSW50SW5saW5l
Q2FjaGVzKCk7DQoNCiAgICB2b2lkIGZpbmFsaXplQmFzZWxpbmVKSVRJbmxpbmVDYWNoZXMoKTsN
CiNsaW5lIDkzNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQoNCiAgICB2b2lkIHRhbGx5RnJlcXVlbnRFeGl0
U2l0ZXMoKTsNCg0KDQojbGluZSA5NDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5oIg0KDQpwcml2YXRlOg0KICAg
IGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7DQogICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U7DQoNCiAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNz
QW5hbHlzaXNTbG93KCk7DQogICAgDQogICAgQ29kZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlCbG9j
a09yTnVsbCgpOw0KICAgIA0KICAgIHZvaWQgbm90aWNlSW5jb21pbmdDYWxsKENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUpOw0KICAgIA0KICAgIGRvdWJsZSBvcHRpbWl6YXRpb25UaHJlc2hvbGRTY2Fs
aW5nRmFjdG9yKCk7DQoNCiAgICB2b2lkIHVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyk7DQoNCiAgICB2b2lk
IHNldENvbnN0YW50SWRlbnRpZmllclNldFJlZ2lzdGVycyhWTSYsIGNvbnN0IFJlZkNvdW50ZWRB
cnJheTxDb25zdGFudElkZW50aWZpZXJTZXRFbnRyeT4mIGNvbnN0YW50cyk7DQoNCiAgICB2b2lk
IHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFJlZkNvdW50ZWRBcnJheTxXcml0ZUJhcnJpZXI8
VW5rbm93bj4+JiBjb25zdGFudHMsIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24sIFNjcmlwdEV4
ZWN1dGFibGUqIHRvcExldmVsRXhlY3V0YWJsZSk7DQoNCiAgICB2b2lkIHJlcGxhY2VDb25zdGFu
dChWaXJ0dWFsUmVnaXN0ZXIgcmVnLCBKU1ZhbHVlIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZy50b0NvbnN0YW50SW5kZXgo
KV0uc2V0KCptX3ZtLCB0aGlzLCB2YWx1ZSk7DQogICAgfQ0KDQogICAgYm9vbCBzaG91bGRWaXNp
dFN0cm9uZ2x5KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOw0KICAgIGJvb2wgc2hvdWxkSmV0
dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UoVk0mKTsNCiAgICBib29sIHNob3VsZEpldHRpc29uRHVl
VG9PbGRBZ2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJik7DQogICAgDQogICAgdm9pZCBwcm9w
YWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYp
Ow0KICAgIHZvaWQgZGV0ZXJtaW5lTGl2ZW5lc3MoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
U2xvdFZpc2l0b3ImKTsNCiAgICAgICAgDQogICAgdm9pZCBzdHJvbmdseVZpc2l0U3Ryb25nUmVm
ZXJlbmNlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYpOw0KICAgIHZv
aWQgc3Ryb25nbHlWaXNpdFdlYWtSZWZlcmVuY2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFNsb3RWaXNpdG9yJik7DQogICAgdm9pZCB2aXNpdE9TUkV4aXRUYXJnZXRzKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJik7DQoNCiAgICB1bnNpZ25lZCBudW1iZXJPZk5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcygpIHsgcmV0dXJuIG1fbnVtYmVyT2ZOb25Bcmd1bWVudFZh
bHVlUHJvZmlsZXM7IH0NCiAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygp
IHsgcmV0dXJuIG51bWJlck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCkgKyBudW1iZXJPZk5vbkFy
Z3VtZW50VmFsdWVQcm9maWxlcygpOyB9DQogICAgVmFsdWVQcm9maWxlKiB0cnlHZXRWYWx1ZVBy
b2ZpbGVGb3JCeXRlY29kZUluZGV4KEJ5dGVjb2RlSW5kZXgpOw0KDQogICAgU2Vjb25kcyB0aW1l
U2luY2VDcmVhdGlvbigpDQogICAgew0KICAgICAgICByZXR1cm4gTW9ub3RvbmljVGltZTo6bm93
KCkgLSBtX2NyZWF0aW9uVGltZTsNCiAgICB9DQoNCiAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKQ0KICAgIHsNCiAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7DQogICAgICAgICAg
ICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsNCiAgICAgICAgICAgIFdU
Rjo6c3RvcmVTdG9yZUZlbmNlKCk7IA0KICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4ocmFyZURhdGEpOw0KICAgICAgICB9DQogICAgfQ0K
DQogICAgdm9pZCBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmls
ZXIoKTsNCiAgICB2b2lkIGVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJ
bmRleFNsb3coY29uc3QgT3BDYXRjaCYsIEJ5dGVjb2RlSW5kZXgpOw0KDQogICAgaW50IG1fbnVt
Q2FsbGVlTG9jYWxzOw0KICAgIGludCBtX251bVZhcnM7DQogICAgaW50IG1fbnVtUGFyYW1ldGVy
czsNCiAgICBpbnQgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCB7IDAgfTsNCiAgICB1bnNpZ25l
ZCBtX251bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHsgMCB9Ow0KICAgIHVuaW9uIHsN
CiAgICAgICAgdW5zaWduZWQgbV9kZWJ1Z2dlclJlcXVlc3RzOw0KICAgICAgICBzdHJ1Y3Qgew0K
ICAgICAgICAgICAgdW5zaWduZWQgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudCA6IDE7DQogICAgICAg
ICAgICB1bnNpZ25lZCBtX3N0ZXBwaW5nTW9kZSA6IDE7DQogICAgICAgICAgICB1bnNpZ25lZCBt
X251bUJyZWFrcG9pbnRzIDogMzA7DQogICAgICAgIH07DQogICAgfTsNCiAgICB1bnNpZ25lZCBt
X2J5dGVjb2RlQ29zdCB7IDAgfTsNCiAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVy
Ow0KICAgIG11dGFibGUgQ29kZUJsb2NrSGFzaCBtX2hhc2g7DQoNCiAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRDb2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlOw0KICAgIFdyaXRlQmFycmllcjxTY3Jp
cHRFeGVjdXRhYmxlPiBtX293bmVyRXhlY3V0YWJsZTsNCiAgICBXcml0ZUJhcnJpZXI8RXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9vd25lckVkZ2U7DQogICAgDQogICAgDQogICAgVk0qIG1f
dm07DQoNCiAgICBjb25zdCB2b2lkKiBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIgeyBudWxscHRy
IH07DQogICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdT
ZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+PiBtX2luY29taW5nTExJbnRDYWxsczsNCiAg
ICBTdHJ1Y3R1cmVXYXRjaHBvaW50TWFwIG1fbGxpbnRHZXRCeUlkV2F0Y2hwb2ludE1hcDsNCiAg
ICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOw0KDQogICAgc3RkOjp1bmlxdWVfcHRyPEpJVERh
dGE+IG1faml0RGF0YTsNCiNsaW5lIDEwMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXENvZGVCbG9jay5oIg0KDQogICAgDQogICAg
DQogICAgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyIG1fbGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVzOw0KI2xpbmUgMTAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcQ29kZUJsb2NrLmgiDQogICAgUmVmQ291
bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7DQoNCiAgICAN
CiAgICBzdGF0aWNfYXNzZXJ0KChzaXplb2YoUmVnaXN0ZXIpID09IHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pKSwgIlJlZ2lzdGVyX211c3RfYmVfc2FtZV9zaXplX2FzX1dyaXRlQmFycmll
cl9Vbmtub3duIik7DQogICAgDQogICAgDQogICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3du
Pj4gbV9jb25zdGFudFJlZ2lzdGVyczsNCiAgICBWZWN0b3I8U291cmNlQ29kZVJlcHJlc2VudGF0
aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsNCiAgICBSZWZDb3VudGVk
QXJyYXk8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4+IG1fZnVuY3Rpb25EZWNsczsN
CiAgICBSZWZDb3VudGVkQXJyYXk8V3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4+IG1f
ZnVuY3Rpb25FeHByczsNCg0KICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRp
dmU7DQogICAgDQogICAgQmFzZWxpbmVFeGVjdXRpb25Db3VudGVyIG1fbGxpbnRFeGVjdXRlQ291
bnRlcjsNCg0KICAgIEJhc2VsaW5lRXhlY3V0aW9uQ291bnRlciBtX2ppdEV4ZWN1dGVDb3VudGVy
Ow0KICAgIHVpbnQzMl90IG1fb3NyRXhpdENvdW50ZXI7DQoNCiAgICB1aW50MTZfdCBtX29wdGlt
aXphdGlvbkRlbGF5Q291bnRlcjsNCiAgICB1aW50MTZfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyOw0KDQogICAgUmVmUHRyPE1ldGFkYXRhVGFibGU+IG1fbWV0YWRhdGE7DQoNCiAgICBN
b25vdG9uaWNUaW1lIG1fY3JlYXRpb25UaW1lOw0KICAgIGRvdWJsZSBtX3ByZXZpb3VzQ291bnRl
ciB7IDAgfTsNCg0KICAgIHN0ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJlRGF0YTsNCn07
DQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBFeGVjdXRhYmxlVHlwZT4NCkV4Y2VwdGlvbiogU2NyaXB0
RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbihWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uLCBKU1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBDb2RlQmxv
Y2sqJiByZXN1bHRDb2RlQmxvY2spDQp7DQogICAgaWYgKGhhc0pJVENvZGVGb3Ioa2luZCkpIHsN
CiAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8RXhlY3V0YWJsZVR5cGUsIEV2YWxF
eGVjdXRhYmxlPjo6dmFsdWUpIHsNCiAgICAgICAgICAgIHJlc3VsdENvZGVCbG9jayA9IGpzQ2Fz
dDxDb2RlQmxvY2sqPihqc0Nhc3Q8RXhlY3V0YWJsZVR5cGUqPih0aGlzKS0+Y29kZUJsb2NrKCkp
Ow0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAgIH0NCiAgICAgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX3NhbWU8RXhlY3V0YWJsZVR5cGUsIFByb2dyYW1FeGVjdXRhYmxlPjo6
dmFsdWUpIHsNCiAgICAgICAgICAgIHJlc3VsdENvZGVCbG9jayA9IGpzQ2FzdDxDb2RlQmxvY2sq
Pihqc0Nhc3Q8RXhlY3V0YWJsZVR5cGUqPih0aGlzKS0+Y29kZUJsb2NrKCkpOw0KICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAgIH0NCiAgICAgICAgaWYgY29uc3RleHByIChzdGQ6
OmlzX3NhbWU8RXhlY3V0YWJsZVR5cGUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPjo6dmFsdWUp
IHsNCiAgICAgICAgICAgIHJlc3VsdENvZGVCbG9jayA9IGpzQ2FzdDxDb2RlQmxvY2sqPihqc0Nh
c3Q8RXhlY3V0YWJsZVR5cGUqPih0aGlzKS0+Y29kZUJsb2NrKCkpOw0KICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7DQogICAgICAgIH0NCiAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3Nh
bWU8RXhlY3V0YWJsZVR5cGUsIEZ1bmN0aW9uRXhlY3V0YWJsZT46OnZhbHVlKSB7DQogICAgICAg
ICAgICByZXN1bHRDb2RlQmxvY2sgPSBqc0Nhc3Q8Q29kZUJsb2NrKj4oanNDYXN0PEV4ZWN1dGFi
bGVUeXBlKj4odGhpcyktPmNvZGVCbG9ja0ZvcihraW5kKSk7DQogICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsNCiAgICAgICAgfQ0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRl
clR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTA4Mywg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNv
ZGVcXENvZGVCbG9jay5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMjEgKTsgfSB3aGlsZSAoZmFsc2Up
Ow0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICB9DQogICAgcmV0dXJuIHByZXBhcmVGb3JF
eGVjdXRpb25JbXBsKHZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsIHJlc3VsdENvZGVCbG9jayk7
DQp9DQoNCg0KDQoNCg0KDQoNCg0Kdm9pZCBzZXRQcmludGVyKFByaW50ZXI6OlByaW50UmVjb3Jk
JiwgQ29kZUJsb2NrKik7DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KICAgIA0KX19kZWNsc3Bl
YyhkbGxleHBvcnQpIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6Q29kZUJs
b2NrKik7DQoNCn0gDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxD
b2RlQmxvY2tTZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpj
bGFzcyBDb2RlQmxvY2s7DQpjbGFzcyBIZWFwOw0KY2xhc3MgSlNDZWxsOw0KY2xhc3MgVk07DQoN
Cg0KDQoNCg0KY2xhc3MgQ29kZUJsb2NrU2V0IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBk
ZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQg
b3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lk
KTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBw
cml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3Jv
ID0gaW50Ow0KICAgIENvZGVCbG9ja1NldChjb25zdCBDb2RlQmxvY2tTZXQmKSA9IGRlbGV0ZTsg
Q29kZUJsb2NrU2V0JiBvcGVyYXRvcj0oY29uc3QgQ29kZUJsb2NrU2V0JikgPSBkZWxldGU7Ow0K
cHVibGljOg0KICAgIENvZGVCbG9ja1NldCgpOw0KICAgIH5Db2RlQmxvY2tTZXQoKTsNCg0KICAg
IHZvaWQgbWFyayhjb25zdCBBYnN0cmFjdExvY2tlciYsIENvZGVCbG9jayogY2FuZGlkYXRlQ29k
ZUJsb2NrKTsNCiAgICANCiAgICB2b2lkIGNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7DQoNCiAg
ICBib29sIGNvbnRhaW5zKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgdm9pZCogY2FuZGlkYXRlQ29k
ZUJsb2NrKTsNCiAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4gbV9sb2NrOyB9DQoNCiAgICAN
CiAgICANCiAgICBib29sIGlzQ3VycmVudGx5RXhlY3V0aW5nKENvZGVCbG9jayopOw0KDQogICAg
DQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRl
KGNvbnN0IEZ1bmN0b3ImKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0
ZXJhdGUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jdG9yJik7DQoNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGVWaWFTdWJzcGFjZXMoVk0mLCBjb25z
dCBGdW5jdG9yJik7DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBp
dGVyYXRlQ3VycmVudGx5RXhlY3V0aW5nKGNvbnN0IEZ1bmN0b3ImKTsNCiAgICANCiAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCiAgICANCiAgICB2b2lkIGFkZChDb2RlQmxvY2sq
KTsNCiAgICB2b2lkIHJlbW92ZShDb2RlQmxvY2sqKTsNCg0KcHJpdmF0ZToNCiAgICBIYXNoU2V0
PENvZGVCbG9jayo+IG1fY29kZUJsb2NrczsNCiAgICBIYXNoU2V0PENvZGVCbG9jayo+IG1fY3Vy
cmVudGx5RXhlY3V0aW5nOw0KICAgIExvY2sgbV9sb2NrOw0KfTsNCg0KfSANCiNsaW5lIDMzICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXBJdGVyYXRpb25TY29wZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEhlYXBJdGVyYXRpb25TY29wZSB7
DQogICAgSGVhcEl0ZXJhdGlvblNjb3BlKGNvbnN0IEhlYXBJdGVyYXRpb25TY29wZSYpID0gZGVs
ZXRlOyBIZWFwSXRlcmF0aW9uU2NvcGUmIG9wZXJhdG9yPShjb25zdCBIZWFwSXRlcmF0aW9uU2Nv
cGUmKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgSGVhcEl0ZXJhdGlvblNjb3BlKEhlYXAmKTsN
CiAgICB+SGVhcEl0ZXJhdGlvblNjb3BlKCk7DQoNCnByaXZhdGU6DQogICAgSGVhcCYgbV9oZWFw
Ow0KfTsNCg0KaW5saW5lIEhlYXBJdGVyYXRpb25TY29wZTo6SGVhcEl0ZXJhdGlvblNjb3BlKEhl
YXAmIGhlYXApDQogICAgOiBtX2hlYXAoaGVhcCkNCnsNCiAgICBtX2hlYXAud2lsbFN0YXJ0SXRl
cmF0aW5nKCk7DQp9DQoNCmlubGluZSBIZWFwSXRlcmF0aW9uU2NvcGU6On5IZWFwSXRlcmF0aW9u
U2NvcGUoKQ0Kew0KICAgIG1faGVhcC5kaWRGaW5pc2hJdGVyYXRpbmcoKTsNCn0NCg0KfSANCiNs
aW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXBVdGlsLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBI
ZWFwVXRpbCB7DQpwdWJsaWM6DQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4NCiAgICBzdGF0aWMgdm9pZCBmaW5kR0NPYmplY3RQb2ludGVyc0Zvck1hcmtpbmcoDQogICAg
ICAgIEhlYXAmIGhlYXAsIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBIZWFwVmVyc2lvbiBu
ZXdseUFsbG9jYXRlZFZlcnNpb24sIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIsDQogICAgICAgIHZv
aWQqIHBhc3NlZFBvaW50ZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpDQogICAgew0KICAgICAgICBjb25z
dCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3Mo
KS5zZXQoKTsNCiAgICAgICAgDQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzTWFya2luZyA9IHRydWU7DQogICAgICAgIA0KICAgICAgICBjaGFyKiBw
b2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHBhc3NlZFBvaW50ZXIpOw0KICAgICAgICANCiAg
ICAgICAgDQogICAgICAgIGlmIChoZWFwLm9iamVjdFNwYWNlKCkucHJlY2lzZUFsbG9jYXRpb25z
Rm9yVGhpc0NvbGxlY3Rpb25TaXplKCkpIHsNCiAgICAgICAgICAgIGlmIChoZWFwLm9iamVjdFNw
YWNlKCkucHJlY2lzZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25CZWdpbigpWzBdLT5hYm92
ZUxvd2VyQm91bmQocG9pbnRlcikNCiAgICAgICAgICAgICAgICAmJiBoZWFwLm9iamVjdFNwYWNl
KCkucHJlY2lzZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQoKVstMV0tPmJlbG93VXBw
ZXJCb3VuZChwb2ludGVyKSkgew0KICAgICAgICAgICAgICAgIFByZWNpc2VBbGxvY2F0aW9uKiog
cmVzdWx0ID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8UHJlY2lzZUFsbG9jYXRpb24qPigNCiAg
ICAgICAgICAgICAgICAgICAgaGVhcC5vYmplY3RTcGFjZSgpLnByZWNpc2VBbGxvY2F0aW9uc0Zv
clRoaXNDb2xsZWN0aW9uQmVnaW4oKSwNCiAgICAgICAgICAgICAgICAgICAgaGVhcC5vYmplY3RT
cGFjZSgpLnByZWNpc2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uU2l6ZSgpLA0KICAgICAg
ICAgICAgICAgICAgICBQcmVjaXNlQWxsb2NhdGlvbjo6ZnJvbUNlbGwocG9pbnRlciksDQogICAg
ICAgICAgICAgICAgICAgIFtdIChQcmVjaXNlQWxsb2NhdGlvbioqIHB0cikgLT4gUHJlY2lzZUFs
bG9jYXRpb24qIHsgcmV0dXJuICpwdHI7IH0pOw0KICAgICAgICAgICAgICAgIGlmIChyZXN1bHQp
IHsNCiAgICAgICAgICAgICAgICAgICAgYXV0byBhdHRlbXB0TGFyZ2UgPSBbJl0gKFByZWNpc2VB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxs
b2NhdGlvbi0+Y29udGFpbnMocG9pbnRlcikgJiYgYWxsb2NhdGlvbi0+aGFzVmFsaWRDZWxsKCkp
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhhbGxvY2F0aW9uLT5jZWxsKCksIGFs
bG9jYXRpb24tPmF0dHJpYnV0ZXMoKS5jZWxsS2luZCk7DQogICAgICAgICAgICAgICAgICAgIH07
DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID4g
aGVhcC5vYmplY3RTcGFjZSgpLnByZWNpc2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uQmVn
aW4oKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIGF0dGVtcHRMYXJnZShyZXN1bHRbLTFdKTsN
CiAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdExhcmdlKHJlc3VsdFswXSk7DQogICAgICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQgKyAxIDwgaGVhcC5vYmplY3RTcGFjZSgpLnByZWNpc2VBbGxv
Y2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kKCkpDQogICAgICAgICAgICAgICAgICAgICAgICBh
dHRlbXB0TGFyZ2UocmVzdWx0WzFdKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICANCiAgICAgICAgTWFya2VkQmxvY2sqIGNhbmRpZGF0ZSA9IE1hcmtl
ZEJsb2NrOjpibG9ja0Zvcihwb2ludGVyKTsNCiAgICAgICAgDQogICAgICAgIGlmIChwb2ludGVy
IDw9IGJpdHdpc2VfY2FzdDxjaGFyKj4oY2FuZGlkYXRlKSArIHNpemVvZihJbmRleGluZ0hlYWRl
cikpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgY2hhciogcHJldmlvdXNQb2ludGVyID0g
Yml0d2lzZV9jYXN0PGNoYXIqPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihwb2ludGVyKSAtIHNp
emVvZihJbmRleGluZ0hlYWRlcikgLSAxKTsNCiAgICAgICAgICAgIE1hcmtlZEJsb2NrKiBwcmV2
aW91c0NhbmRpZGF0ZSA9IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihwcmV2aW91c1BvaW50ZXIpOw0K
ICAgICAgICAgICAgaWYgKCFmaWx0ZXIucnVsZU91dChiaXR3aXNlX2Nhc3Q8Qml0cz4ocHJldmlv
dXNDYW5kaWRhdGUpKQ0KICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0Nh
bmRpZGF0ZSkNCiAgICAgICAgICAgICAgICAmJiBtYXlIYXZlSW5kZXhpbmdIZWFkZXIocHJldmlv
dXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkpKSB7DQogICAgICAgICAgICAgICAgcHJl
dmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5k
bGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7DQogICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBuZXds
eUFsbG9jYXRlZFZlcnNpb24sIGlzTWFya2luZywgcHJldmlvdXNQb2ludGVyKSkNCiAgICAgICAg
ICAgICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIsIHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5k
bGUoKS5jZWxsS2luZCgpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIA0KICAgICAg
ICBpZiAoZmlsdGVyLnJ1bGVPdXQoYml0d2lzZV9jYXN0PEJpdHM+KGNhbmRpZGF0ZSkpKSB7DQog
ICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAg
ICANCiAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoY2FuZGlkYXRlKSkNCiAgICAgICAgICAgIHJl
dHVybjsNCg0KICAgICAgICBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCA9IGNhbmRpZGF0ZS0+aGFu
ZGxlKCkuY2VsbEtpbmQoKTsNCiAgICAgICAgDQogICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsm
XSAodm9pZCogcG9pbnRlcikgew0KICAgICAgICAgICAgYm9vbCBpc0xpdmUgPSBjYW5kaWRhdGUt
PmhhbmRsZSgpLmlzTGl2ZUNlbGwobWFya2luZ1ZlcnNpb24sIG5ld2x5QWxsb2NhdGVkVmVyc2lv
biwgaXNNYXJraW5nLCBwb2ludGVyKTsNCiAgICAgICAgICAgIGlmIChpc0xpdmUpDQogICAgICAg
ICAgICAgICAgZnVuYyhwb2ludGVyLCBjZWxsS2luZCk7DQogICAgICAgICAgICANCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gaXNMaXZlICYmICFtYXlIYXZl
SW5kZXhpbmdIZWFkZXIoY2VsbEtpbmQpOw0KICAgICAgICB9Ow0KICAgIA0KICAgICAgICBpZiAo
aXNKU0NlbGxLaW5kKGNlbGxLaW5kKSkgew0KICAgICAgICAgICAgaWYgKChNYXJrZWRCbG9jazo6
aXNBdG9tQWxpZ25lZChwb2ludGVyKSkpIHsNCiAgICAgICAgICAgICAgICBpZiAodHJ5UG9pbnRl
cihwb2ludGVyKSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgDQogICAgICAgIA0KICAgICAgICBjaGFyKiBhbGlnbmVkUG9pbnRlciA9
IHN0YXRpY19jYXN0PGNoYXIqPihjYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxBbGlnbihwb2ludGVy
KSk7DQogICAgICAgIGlmICh0cnlQb2ludGVyKGFsaWduZWRQb2ludGVyKSkNCiAgICAgICAgICAg
IHJldHVybjsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIGlmIChjYW5kaWRhdGUtPmNh
bmRpZGF0ZUF0b21OdW1iZXIoYWxpZ25lZFBvaW50ZXIpID4gMA0KICAgICAgICAgICAgJiYgcG9p
bnRlciA8PSBhbGlnbmVkUG9pbnRlciArIHNpemVvZihJbmRleGluZ0hlYWRlcikpDQogICAgICAg
ICAgICB0cnlQb2ludGVyKGFsaWduZWRQb2ludGVyIC0gY2FuZGlkYXRlLT5jZWxsU2l6ZSgpKTsN
CiAgICB9DQogICAgDQogICAgc3RhdGljIGJvb2wgaXNQb2ludGVyR0NPYmplY3RKU0NlbGwoSGVh
cCYgaGVhcCwgVGlueUJsb29tRmlsdGVyIGZpbHRlciwgSlNDZWxsKiBwb2ludGVyKQ0KICAgIHsN
CiAgICAgICAgDQogICAgICAgIGlmIChwb2ludGVyLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCkpIHsN
CiAgICAgICAgICAgIGF1dG8qIHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5wcmVjaXNlQWxsb2Nh
dGlvblNldCgpOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgaWYgKHNldC0+
aXNFbXB0eSgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIHJl
dHVybiBzZXQtPmNvbnRhaW5zKHBvaW50ZXIpOw0KICAgICAgICB9DQogICAgDQogICAgICAgIGNv
bnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgc2V0ID0gaGVhcC5vYmplY3RTcGFjZSgpLmJsb2Nr
cygpLnNldCgpOw0KICAgICAgICANCiAgICAgICAgTWFya2VkQmxvY2sqIGNhbmRpZGF0ZSA9IE1h
cmtlZEJsb2NrOjpibG9ja0Zvcihwb2ludGVyKTsNCiAgICAgICAgaWYgKGZpbHRlci5ydWxlT3V0
KGJpdHdpc2VfY2FzdDxCaXRzPihjYW5kaWRhdGUpKSkgew0KICAgICAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICBpZiAoIU1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHBvaW50ZXIpKQ0KICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgICAgICANCiAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoY2FuZGlk
YXRlKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgDQogICAgICAgIGlmIChj
YW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgIT0gSGVhcENlbGw6OkpTQ2VsbCkNCiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgDQogICAgICAgIGlmICghY2FuZGlkYXRlLT5o
YW5kbGUoKS5pc0xpdmVDZWxsKHBvaW50ZXIpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgICAgICANCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIHN0
YXRpYyBib29sIGlzVmFsdWVHQ09iamVjdCgNCiAgICAgICAgSGVhcCYgaGVhcCwgVGlueUJsb29t
RmlsdGVyIGZpbHRlciwgSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICAgICAgcmV0dXJuIGlzUG9pbnRlckdDT2JqZWN0SlNDZWxsKGhlYXAsIGZpbHRlciwgdmFs
dWUuYXNDZWxsKCkpOw0KICAgIH0NCn07DQoNCn0gDQoNCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxJbmxpbmVDYWxsRnJhbWUuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYnl0ZWNvZGVcXFZhbHVlUmVjb3ZlcnkuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcZGZnXFxERkdNaW5pZmll
ZElELmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ew0KDQpjbGFzcyBHcmFwaDsNCmNsYXNzIE1pbmlmaWVkTm9kZTsNCmNsYXNzIFZhbHVlU291cmNl
Ow0Kc3RydWN0IE5vZGU7DQoNCmNsYXNzIE1pbmlmaWVkSUQgew0KcHVibGljOg0KICAgIE1pbmlm
aWVkSUQoKSA9IGRlZmF1bHQ7DQogICAgTWluaWZpZWRJRChXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpIDogbV9pbmRleChvdGhlckludmFsaWRJbmRleCgpKSB7IH0NCiAgICBleHBsaWNp
dCBNaW5pZmllZElEKE5vZGUqIG5vZGUpOw0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA9PSBpbnZhbGlkSW5kZXgoKTsgfQ0KICAgIA0KICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9pbmRleC5nZXQoKSA9PSBvdGhlci5tX2luZGV4LmdldCgpOyB9DQogICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE1pbmlmaWVkSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4LmdldCgp
ICE9IG90aGVyLm1faW5kZXguZ2V0KCk7IH0NCiAgICBib29sIG9wZXJhdG9yPChjb25zdCBNaW5p
ZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA8IG90aGVyLm1faW5k
ZXguZ2V0KCk7IH0NCiAgICBib29sIG9wZXJhdG9yPihjb25zdCBNaW5pZmllZElEJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA+IG90aGVyLm1faW5kZXguZ2V0KCk7IH0NCiAg
ICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWluaWZpZWRJRCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1faW5kZXguZ2V0KCkgPD0gb3RoZXIubV9pbmRleC5nZXQoKTsgfQ0KICAgIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQo
KSA+PSBvdGhlci5tX2luZGV4LmdldCgpOyB9DQogICAgDQogICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0IHsgcmV0dXJuIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2gobV9pbmRleC5nZXQoKSk7
IH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QgeyBvdXQucHJp
bnQobV9pbmRleC5nZXQoKSk7IH0NCiAgICANCiAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA9PSBvdGhlckludmFsaWRJbmRleCgp
OyB9DQogICAgDQogICAgc3RhdGljIE1pbmlmaWVkSUQgZnJvbUJpdHModW5zaWduZWQgdmFsdWUp
DQogICAgew0KICAgICAgICBNaW5pZmllZElEIHJlc3VsdDsNCiAgICAgICAgcmVzdWx0Lm1faW5k
ZXggPSB2YWx1ZTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgDQogICAgdW5z
aWduZWQgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXguZ2V0KCk7IH0NCg0KcHJpdmF0ZToN
CiAgICBmcmllbmQgY2xhc3MgTWluaWZpZWROb2RlOw0KICAgIA0KICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgaW52YWxpZEluZGV4KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KC0xKTsgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgb3RoZXJJbnZhbGlkSW5kZXgo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTIpOyB9DQogICAgDQogICAgUGFja2Vk
PHVuc2lnbmVkPiBtX2luZGV4IHsgaW52YWxpZEluZGV4KCkgfTsNCn07DQoNCnN0cnVjdCBNaW5p
ZmllZElESGFzaCB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTWluaWZpZWRJRCYg
a2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9DQogICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
TWluaWZpZWRJRCYgYSwgY29uc3QgTWluaWZpZWRJRCYgYikgeyByZXR1cm4gYSA9PSBiOyB9DQog
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsNCn07DQoNCn0gfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpT
Qzo6REZHOjpNaW5pZmllZElEPiA6IEpTQzo6REZHOjpNaW5pZmllZElESGFzaCB7IH07DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOw0KdGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxKU0M6OkRGRzo6TWluaWZpZWRJRD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8
SlNDOjpERkc6Ok1pbmlmaWVkSUQ+IHsNCiAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IGZhbHNlOw0KfTsNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxWYWx1ZVJlY292ZXJ5
LmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxEYXRhRm9ybWF0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpT
QyB7DQoNCg0KDQoNCg0KDQoNCmVudW0gRGF0YUZvcm1hdCA6IHVpbnQ4X3Qgew0KICAgIERhdGFG
b3JtYXROb25lID0gMCwNCiAgICBEYXRhRm9ybWF0SW50MzIgPSAxLA0KICAgIERhdGFGb3JtYXRJ
bnQ1MiA9IDIsIA0KICAgIERhdGFGb3JtYXRTdHJpY3RJbnQ1MiA9IDMsIA0KICAgIERhdGFGb3Jt
YXREb3VibGUgPSA0LA0KICAgIERhdGFGb3JtYXRCb29sZWFuID0gNSwNCiAgICBEYXRhRm9ybWF0
Q2VsbCA9IDYsDQogICAgRGF0YUZvcm1hdFN0b3JhZ2UgPSA3LA0KICAgIERhdGFGb3JtYXRCaWdJ
bnQzMiA9IDgsIA0KICAgIERhdGFGb3JtYXRKUyA9IDE2LA0KICAgIERhdGFGb3JtYXRKU0ludDMy
ID0gRGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEludDMyLA0KICAgIERhdGFGb3JtYXRKU0RvdWJs
ZSA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXREb3VibGUsDQogICAgRGF0YUZvcm1hdEpTQ2Vs
bCA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRDZWxsLA0KICAgIERhdGFGb3JtYXRKU0Jvb2xl
YW4gPSBEYXRhRm9ybWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbiwNCiAgICBEYXRhRm9ybWF0SlNC
aWdJbnQzMiA9IERhdGFGb3JtYXRKUyB8IERhdGFGb3JtYXRCaWdJbnQzMiwNCg0KICAgIA0KICAg
IERhdGFGb3JtYXRPU1JNYXJrZXIgPSAzMiwgDQogICAgDQogICAgDQogICAgRGF0YUZvcm1hdERl
YWQgPSAzMywgDQp9Ow0KDQppbmxpbmUgY29uc3QgY2hhciogZGF0YUZvcm1hdFRvU3RyaW5nKERh
dGFGb3JtYXQgZGF0YUZvcm1hdCkNCnsNCiAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsNCiAgICBj
YXNlIERhdGFGb3JtYXROb25lOg0KICAgICAgICByZXR1cm4gIk5vbmUiOw0KICAgIGNhc2UgRGF0
YUZvcm1hdEludDMyOg0KICAgICAgICByZXR1cm4gIkludDMyIjsNCiAgICBjYXNlIERhdGFGb3Jt
YXRJbnQ1MjoNCiAgICAgICAgcmV0dXJuICJJbnQ1MiI7DQogICAgY2FzZSBEYXRhRm9ybWF0U3Ry
aWN0SW50NTI6DQogICAgICAgIHJldHVybiAiU3RyaWN0SW50NTIiOw0KICAgIGNhc2UgRGF0YUZv
cm1hdERvdWJsZToNCiAgICAgICAgcmV0dXJuICJEb3VibGUiOw0KICAgIGNhc2UgRGF0YUZvcm1h
dENlbGw6DQogICAgICAgIHJldHVybiAiQ2VsbCI7DQogICAgY2FzZSBEYXRhRm9ybWF0Qm9vbGVh
bjoNCiAgICAgICAgcmV0dXJuICJCb29sZWFuIjsNCiAgICBjYXNlIERhdGFGb3JtYXRTdG9yYWdl
Og0KICAgICAgICByZXR1cm4gIlN0b3JhZ2UiOw0KICAgIGNhc2UgRGF0YUZvcm1hdEJpZ0ludDMy
Og0KICAgICAgICByZXR1cm4gIkJpZ0ludDMyIjsNCiAgICBjYXNlIERhdGFGb3JtYXRKUzoNCiAg
ICAgICAgcmV0dXJuICJKUyI7DQogICAgY2FzZSBEYXRhRm9ybWF0SlNJbnQzMjoNCiAgICAgICAg
cmV0dXJuICJKU0ludDMyIjsNCiAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToNCiAgICAgICAg
cmV0dXJuICJKU0RvdWJsZSI7DQogICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOg0KICAgICAgICBy
ZXR1cm4gIkpTQ2VsbCI7DQogICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOg0KICAgICAgICBy
ZXR1cm4gIkpTQm9vbGVhbiI7DQogICAgY2FzZSBEYXRhRm9ybWF0SlNCaWdJbnQzMjoNCiAgICAg
ICAgcmV0dXJuICJKU0JpZ0ludDMyIjsNCiAgICBjYXNlIERhdGFGb3JtYXREZWFkOg0KICAgICAg
ICByZXR1cm4gIkRlYWQiOw0KICAgIGRlZmF1bHQ6DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVn
cmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRo
SW5mbyg5OCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcYnl0ZWNvZGVcXERhdGFGb3JtYXQuaCIsICBfX0ZVTkNUSU9OX18gICwgMTIyICk7IH0gd2hp
bGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuICJVbmtub3duIjsNCiAgICB9DQp9DQoNCmlubGlu
ZSBib29sIGlzSlNGb3JtYXQoRGF0YUZvcm1hdCBmb3JtYXQsIERhdGFGb3JtYXQgZXhwZWN0ZWRG
b3JtYXQpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiAoZm9ybWF0IHwgRGF0YUZvcm1h
dEpTKSA9PSBleHBlY3RlZEZvcm1hdDsNCn0NCg0KaW5saW5lIGJvb2wgaXNKU0ludDMyKERhdGFG
b3JtYXQgZm9ybWF0KQ0Kew0KICAgIHJldHVybiBpc0pTRm9ybWF0KGZvcm1hdCwgRGF0YUZvcm1h
dEpTSW50MzIpOw0KfQ0KDQppbmxpbmUgYm9vbCBpc0pTRG91YmxlKERhdGFGb3JtYXQgZm9ybWF0
KQ0Kew0KICAgIHJldHVybiBpc0pTRm9ybWF0KGZvcm1hdCwgRGF0YUZvcm1hdEpTRG91YmxlKTsN
Cn0NCg0KaW5saW5lIGJvb2wgaXNKU0NlbGwoRGF0YUZvcm1hdCBmb3JtYXQpDQp7DQogICAgcmV0
dXJuIGlzSlNGb3JtYXQoZm9ybWF0LCBEYXRhRm9ybWF0SlNDZWxsKTsNCn0NCg0KaW5saW5lIGJv
b2wgaXNKU0Jvb2xlYW4oRGF0YUZvcm1hdCBmb3JtYXQpDQp7DQogICAgcmV0dXJuIGlzSlNGb3Jt
YXQoZm9ybWF0LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsNCn0NCg0KfSANCg0KbmFtZXNwYWNlIFdU
RiB7DQoNCmNsYXNzIFByaW50U3RyZWFtOw0Kdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgSlNDOjpEYXRhRm9ybWF0KTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxWYWx1ZVJlY292ZXJ5Lmgi
DQoNCg0KDQoNCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxWYWx1ZVJlY292ZXJ5LmgiDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpzdHJ1Y3QgRHVtcENvbnRleHQ7DQpzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOw0K
DQoNCg0KZW51bSBWYWx1ZVJlY292ZXJ5VGVjaG5pcXVlIDogdWludDhfdCB7DQogICAgDQogICAg
SW5HUFIsDQogICAgVW5ib3hlZEludDMySW5HUFIsDQogICAgVW5ib3hlZEludDUySW5HUFIsDQog
ICAgVW5ib3hlZFN0cmljdEludDUySW5HUFIsDQogICAgVW5ib3hlZEJvb2xlYW5JbkdQUiwNCiAg
ICBVbmJveGVkQ2VsbEluR1BSLA0KDQoNCiNsaW5lIDU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxWYWx1ZVJlY292ZXJ5LmgiDQog
ICAgSW5GUFIsDQogICAgVW5ib3hlZERvdWJsZUluRlBSLA0KICAgIA0KICAgIERpc3BsYWNlZElu
SlNTdGFjaywNCiAgICANCiAgICBJbnQzMkRpc3BsYWNlZEluSlNTdGFjaywNCiAgICBJbnQ1MkRp
c3BsYWNlZEluSlNTdGFjaywNCiAgICBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjaywNCiAg
ICBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2ssDQogICAgQ2VsbERpc3BsYWNlZEluSlNTdGFjaywN
CiAgICBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrLA0KICAgIA0KICAgIERpcmVjdEFyZ3VtZW50
c1RoYXRXZXJlTm90Q3JlYXRlZCwNCiAgICBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0
ZWQsDQogICAgDQogICAgQ29uc3RhbnQsDQogICAgDQogICAgRG9udEtub3cNCn07DQoNCmNsYXNz
IFZhbHVlUmVjb3Zlcnkgew0KcHVibGljOg0KICAgIFZhbHVlUmVjb3ZlcnkoKQ0KICAgICAgICA6
IG1fdGVjaG5pcXVlKERvbnRLbm93KQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVjaG5pcXVlICE9IERvbnRLbm93OyB9DQogICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQ0KDQoNCiAgICBzdGF0aWMgVmFs
dWVSZWNvdmVyeSBpblJlZ2lzdGVyKFJlZyByZWcsIERhdGFGb3JtYXQgZGF0YUZvcm1hdCkNCiAg
ICB7DQogICAgICAgIGlmIChyZWcuaXNHUFIoKSkNCiAgICAgICAgICAgIHJldHVybiBpbkdQUihy
ZWcuZ3ByKCksIGRhdGFGb3JtYXQpOw0KDQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0
dXJuIGluRlBSKHJlZy5mcHIoKSwgZGF0YUZvcm1hdCk7DQogICAgfQ0KI2xpbmUgOTcgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFZh
bHVlUmVjb3ZlcnkuaCINCg0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBpc1NldCgpOyB9DQogICAgDQogICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgaW5HUFIoTWFj
cm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZ3ByLCBEYXRhRm9ybWF0IGRhdGFGb3JtYXQpDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQoNCg0KI2xpbmUgMTA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxWYWx1ZVJlY292ZXJ5Lmgi
DQogICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0Ow0KICAgICAgICBpZiAoZGF0YUZvcm1hdCA9
PSBEYXRhRm9ybWF0SW50MzIpDQogICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJv
eGVkSW50MzJJbkdQUjsNCiAgICAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCA9PSBEYXRhRm9ybWF0
SW50NTIpDQogICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJveGVkSW50NTJJbkdQ
UjsNCiAgICAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCA9PSBEYXRhRm9ybWF0U3RyaWN0SW50NTIp
DQogICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBVbmJveGVkU3RyaWN0SW50NTJJbkdQ
UjsNCiAgICAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCA9PSBEYXRhRm9ybWF0Qm9vbGVhbikNCiAg
ICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IFVuYm94ZWRCb29sZWFuSW5HUFI7DQogICAg
ICAgIGVsc2UgaWYgKGRhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdENlbGwpDQogICAgICAgICAgICBy
ZXN1bHQubV90ZWNobmlxdWUgPSBVbmJveGVkQ2VsbEluR1BSOw0KICAgICAgICBlbHNlDQogICAg
ICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBJbkdQUjsNCiAgICAgICAgVW5pb25UeXBlIHU7
DQogICAgICAgIHUuZ3ByID0gZ3ByOw0KICAgICAgICByZXN1bHQubV9zb3VyY2UgPSBzdGQ6Om1v
dmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHUpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0K
ICAgIH0NCiAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxMzcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFZhbHVlUmVj
b3ZlcnkuaCINCg0KICAgIHN0YXRpYyBWYWx1ZVJlY292ZXJ5IGluRlBSKE1hY3JvQXNzZW1ibGVy
OjpGUFJlZ2lzdGVySUQgZnByLCBEYXRhRm9ybWF0IGRhdGFGb3JtYXQpDQogICAgew0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0Ow0KICAgICAgICBpZiAo
ZGF0YUZvcm1hdCA9PSBEYXRhRm9ybWF0RG91YmxlKQ0KICAgICAgICAgICAgcmVzdWx0Lm1fdGVj
aG5pcXVlID0gVW5ib3hlZERvdWJsZUluRlBSOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBy
ZXN1bHQubV90ZWNobmlxdWUgPSBJbkZQUjsNCiAgICAgICAgVW5pb25UeXBlIHU7DQogICAgICAg
IHUuZnByID0gZnByOw0KICAgICAgICByZXN1bHQubV9zb3VyY2UgPSBzdGQ6Om1vdmU8V1RGOjpD
aGVja01vdmVQYXJhbWV0ZXI+KHUpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAg
ICANCiAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBkaXNwbGFjZWRJbkpTU3RhY2soVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWcsIERhdGFGb3JtYXQgZGF0YUZvcm1hdCkNCiAgICB7DQogICAgICAg
IFZhbHVlUmVjb3ZlcnkgcmVzdWx0Ow0KICAgICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsNCiAg
ICAgICAgY2FzZSBEYXRhRm9ybWF0SW50MzI6DQogICAgICAgICAgICByZXN1bHQubV90ZWNobmlx
dWUgPSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAg
ICAgICAgDQogICAgICAgIGNhc2UgRGF0YUZvcm1hdEludDUyOg0KICAgICAgICAgICAgcmVzdWx0
Lm1fdGVjaG5pcXVlID0gSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s7DQogICAgICAgICAgICBicmVh
azsNCiAgICAgICAgICAgIA0KICAgICAgICBjYXNlIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjoNCiAg
ICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICANCiAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0RG91YmxlOg0KICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0gRG91YmxlRGlz
cGxhY2VkSW5KU1N0YWNrOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgY2FzZSBEYXRh
Rm9ybWF0Q2VsbDoNCiAgICAgICAgICAgIHJlc3VsdC5tX3RlY2huaXF1ZSA9IENlbGxEaXNwbGFj
ZWRJbkpTU3RhY2s7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIA0KICAgICAgICBj
YXNlIERhdGFGb3JtYXRCb29sZWFuOg0KICAgICAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVlID0g
Qm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg
ICAgDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAg
ICByZXN1bHQubV90ZWNobmlxdWUgPSBEaXNwbGFjZWRJbkpTU3RhY2s7DQogICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgfQ0KICAgICAgICBVbmlvblR5cGUgdTsNCiAgICAgICAgdS52aXJ0dWFs
UmVnID0gdmlydHVhbFJlZy5vZmZzZXQoKTsNCiAgICAgICAgcmVzdWx0Lm1fc291cmNlID0gc3Rk
Ojptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih1KTsNCiAgICAgICAgcmV0dXJuIHJlc3Vs
dDsNCiAgICB9DQogICAgDQogICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgY29uc3RhbnQoSlNWYWx1
ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVzdWx0Ow0KICAgICAgICBy
ZXN1bHQubV90ZWNobmlxdWUgPSBDb25zdGFudDsNCiAgICAgICAgVW5pb25UeXBlIHU7DQogICAg
ICAgIHUuY29uc3RhbnQgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOw0KICAgICAgICByZXN1bHQu
bV9zb3VyY2UgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHUpOw0KICAgICAg
ICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBk
aXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQoREZHOjpNaW5pZmllZElEIGlkKQ0KICAg
IHsNCiAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7DQogICAgICAgIHJlc3VsdC5tX3RlY2hu
aXF1ZSA9IERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDsNCiAgICAgICAgVW5pb25U
eXBlIHU7DQogICAgICAgIHUubm9kZUlEID0gaWQuYml0cygpOw0KICAgICAgICByZXN1bHQubV9z
b3VyY2UgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHUpOw0KICAgICAgICBy
ZXR1cm4gcmVzdWx0Ow0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgVmFsdWVSZWNvdmVyeSBjbG9u
ZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQoREZHOjpNaW5pZmllZElEIGlkKQ0KICAgIHsN
CiAgICAgICAgVmFsdWVSZWNvdmVyeSByZXN1bHQ7DQogICAgICAgIHJlc3VsdC5tX3RlY2huaXF1
ZSA9IENsb25lZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDsNCiAgICAgICAgVW5pb25UeXBl
IHU7DQogICAgICAgIHUubm9kZUlEID0gaWQuYml0cygpOw0KICAgICAgICByZXN1bHQubV9zb3Vy
Y2UgPSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHUpOw0KICAgICAgICByZXR1
cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgdGVjaG5pcXVl
KCkgY29uc3QgeyByZXR1cm4gbV90ZWNobmlxdWU7IH0NCiAgICANCiAgICBib29sIGlzQ29uc3Rh
bnQoKSBjb25zdCB7IHJldHVybiBtX3RlY2huaXF1ZSA9PSBDb25zdGFudDsgfQ0KDQogICAgYm9v
bCBpc0luR1BSKCkgY29uc3QNCiAgICB7DQogICAgICAgIHN3aXRjaCAobV90ZWNobmlxdWUpIHsN
CiAgICAgICAgY2FzZSBJbkdQUjoNCiAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoNCiAg
ICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOg0KICAgICAgICBjYXNlIFVuYm94ZWRDZWxs
SW5HUFI6DQogICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6DQogICAgICAgIGNhc2UgVW5i
b3hlZFN0cmljdEludDUySW5HUFI6DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAg
ZGVmYXVsdDoNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0K
ICAgIGJvb2wgaXNJbkZQUigpIGNvbnN0DQogICAgew0KICAgICAgICBzd2l0Y2ggKG1fdGVjaG5p
cXVlKSB7DQogICAgICAgIGNhc2UgSW5GUFI6DQogICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUlu
RlBSOg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBib29sIGlzSW5SZWdp
c3RlcnMoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGlzSW5KU1ZhbHVlUmVncygpIHx8
IGlzSW5HUFIoKSB8fCBpc0luRlBSKCk7DQogICAgfQ0KDQogICAgYm9vbCBpc0luSlNTdGFjaygp
IGNvbnN0DQogICAgew0KICAgICAgICBzd2l0Y2ggKG1fdGVjaG5pcXVlKSB7DQogICAgICAgIGNh
c2UgRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOg0KICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAgICAgICBjYXNl
IFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAgICAgICBjYXNlIERvdWJsZURpc3Bs
YWNlZEluSlNTdGFjazoNCiAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAg
ICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6DQogICAgICAgICAgICByZXR1cm4g
dHJ1ZTsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIERhdGFGb3JtYXQgZGF0YUZvcm1hdCgpIGNvbnN0DQogICAgew0K
ICAgICAgICBzd2l0Y2ggKG1fdGVjaG5pcXVlKSB7DQogICAgICAgIGNhc2UgSW5HUFI6DQogICAg
ICAgIGNhc2UgSW5GUFI6DQogICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAgICAg
ICBjYXNlIENvbnN0YW50Og0KDQoNCiNsaW5lIDI4MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVmFsdWVSZWNvdmVyeS5oIg0KICAg
ICAgICAgICAgcmV0dXJuIERhdGFGb3JtYXRKUzsNCiAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJ
bkdQUjoNCiAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoNCiAgICAgICAgICAg
IHJldHVybiBEYXRhRm9ybWF0SW50MzI7DQogICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6
DQogICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6DQogICAgICAgICAgICByZXR1
cm4gRGF0YUZvcm1hdEludDUyOw0KICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BS
Og0KICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAgICAgICAg
ICAgcmV0dXJuIERhdGFGb3JtYXRTdHJpY3RJbnQ1MjsNCiAgICAgICAgY2FzZSBVbmJveGVkQm9v
bGVhbkluR1BSOg0KICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6DQogICAg
ICAgICAgICByZXR1cm4gRGF0YUZvcm1hdEJvb2xlYW47DQogICAgICAgIGNhc2UgVW5ib3hlZENl
bGxJbkdQUjoNCiAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAgICAgICAg
ICAgcmV0dXJuIERhdGFGb3JtYXRDZWxsOw0KICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQ
UjoNCiAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6DQogICAgICAgICAgICBy
ZXR1cm4gRGF0YUZvcm1hdERvdWJsZTsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIHJl
dHVybiBEYXRhRm9ybWF0Tm9uZTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCkuZ3ByOw0KICAgIH0NCiAgICANCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzM4ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2Rl
XFxWYWx1ZVJlY292ZXJ5LmgiDQogICAgYm9vbCBpc0luSlNWYWx1ZVJlZ3MoKSBjb25zdA0KICAg
IHsNCiAgICAgICAgcmV0dXJuIGlzSW5HUFIoKTsNCiAgICB9DQojbGluZSAzNDMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFZhbHVl
UmVjb3ZlcnkuaCINCiAgICANCiAgICBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigp
IGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX3NvdXJj
ZS5nZXQoKS5mcHI7DQogICAgfQ0KICAgIA0KICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4g
VmlydHVhbFJlZ2lzdGVyKG1fc291cmNlLmdldCgpLnZpcnR1YWxSZWcpOw0KICAgIH0NCiAgICAN
CiAgICBWYWx1ZVJlY292ZXJ5IHdpdGhMb2NhbHNPZmZzZXQoaW50IG9mZnNldCkgY29uc3QNCiAg
ICB7DQogICAgICAgIHN3aXRjaCAobV90ZWNobmlxdWUpIHsNCiAgICAgICAgY2FzZSBEaXNwbGFj
ZWRJbkpTU3RhY2s6DQogICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6DQogICAg
ICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOg0KICAgICAgICBjYXNlIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2s6DQogICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoN
CiAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoNCiAgICAgICAgY2FzZSBTdHJp
Y3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazogew0KICAgICAgICAgICAgVmFsdWVSZWNvdmVyeSBy
ZXN1bHQ7DQogICAgICAgICAgICByZXN1bHQubV90ZWNobmlxdWUgPSBtX3RlY2huaXF1ZTsNCiAg
ICAgICAgICAgIFVuaW9uVHlwZSB1Ow0KICAgICAgICAgICAgdS52aXJ0dWFsUmVnID0gbV9zb3Vy
Y2UuZ2V0KCkudmlydHVhbFJlZyArIG9mZnNldDsNCiAgICAgICAgICAgIHJlc3VsdC5tX3NvdXJj
ZSA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odSk7DQogICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgZGVmYXVsdDoN
CiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBK
U1ZhbHVlIGNvbnN0YW50KCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX3NvdXJjZS5nZXQoKS5jb25zdGFudCk7DQogICAg
fQ0KICAgIA0KICAgIERGRzo6TWluaWZpZWRJRCBub2RlSUQoKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gREZHOjpNaW5pZmllZElEOjpmcm9tQml0cyht
X3NvdXJjZS5nZXQoKS5ub2RlSUQpOw0KICAgIH0NCiAgICANCiAgICBKU1ZhbHVlIHJlY292ZXIo
Q2FsbEZyYW1lKikgY29uc3Q7DQogICAgDQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0K
ICAgIHZvaWQgZm9yRWFjaFJlZyhjb25zdCBGdW5jJiBmdW5jKQ0KICAgIHsNCiAgICAgICAgc3dp
dGNoIChtX3RlY2huaXF1ZSkgew0KICAgICAgICBjYXNlIEluR1BSOg0KICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQzMkluR1BSOg0KICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6DQogICAg
ICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoNCiAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQ
UjoNCiAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoNCiAgICAgICAgICAgIGZ1
bmMoZ3ByKCkpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICBjYXNlIEluRlBSOg0KICAg
ICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoNCiAgICAgICAgICAgIGZ1bmMoZnByKCkpOw0K
ICAgICAgICAgICAgcmV0dXJuOw0KDQoNCg0KDQoNCiNsaW5lIDQxNiAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVmFsdWVSZWNvdmVy
eS5oIg0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQog
ICAgfQ0KICAgIA0KICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1w
Q29udGV4dCogY29udGV4dCkgY29uc3Q7DQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Ow0KI2xpbmUgNDI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxWYWx1ZVJlY292ZXJ5LmgiDQoNCnByaXZhdGU6DQogICAg
VmFsdWVSZWNvdmVyeVRlY2huaXF1ZSBtX3RlY2huaXF1ZTsNCiAgICB1bmlvbiBVbmlvblR5cGUg
ew0KICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHI7DQogICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByOw0KDQoNCg0KDQoNCiNsaW5lIDQzNiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVmFs
dWVSZWNvdmVyeS5oIg0KICAgICAgICBpbnQgdmlydHVhbFJlZzsNCiAgICAgICAgRW5jb2RlZEpT
VmFsdWUgY29uc3RhbnQ7DQogICAgICAgIHVuc2lnbmVkIG5vZGVJRDsNCiAgICB9Ow0KICAgIFBh
Y2tlZDxVbmlvblR5cGU+IG1fc291cmNlOw0KfTsNCnN0YXRpY19hc3NlcnQoYWxpZ25vZihWYWx1
ZVJlY292ZXJ5KSA9PSAxKTsNCg0KfSANCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxJbmxpbmVDYWxsRnJhbWUuaCIN
Cg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0Kc3RydWN0IElubGluZUNhbGxGcmFtZTsNCmNs
YXNzIENhbGxGcmFtZTsNCmNsYXNzIEpTRnVuY3Rpb247DQoNCnN0cnVjdCBJbmxpbmVDYWxsRnJh
bWUgew0KICAgIGVudW0gS2luZCB7DQogICAgICAgIENhbGwsDQogICAgICAgIENvbnN0cnVjdCwN
CiAgICAgICAgVGFpbENhbGwsDQogICAgICAgIENhbGxWYXJhcmdzLA0KICAgICAgICBDb25zdHJ1
Y3RWYXJhcmdzLA0KICAgICAgICBUYWlsQ2FsbFZhcmFyZ3MsDQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIEdldHRlckNhbGwsDQogICAgICAgIFNldHRlckNhbGwNCiAgICB9
Ow0KDQogICAgc3RhdGljIENhbGxNb2RlIGNhbGxNb2RlRm9yKEtpbmQga2luZCkNCiAgICB7DQog
ICAgICAgIHN3aXRjaCAoa2luZCkgew0KICAgICAgICBjYXNlIENhbGw6DQogICAgICAgIGNhc2Ug
Q2FsbFZhcmFyZ3M6DQogICAgICAgIGNhc2UgR2V0dGVyQ2FsbDoNCiAgICAgICAgY2FzZSBTZXR0
ZXJDYWxsOg0KICAgICAgICAgICAgcmV0dXJuIENhbGxNb2RlOjpSZWd1bGFyOw0KICAgICAgICBj
YXNlIFRhaWxDYWxsOg0KICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoNCiAgICAgICAgICAg
IHJldHVybiBDYWxsTW9kZTo6VGFpbDsNCiAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6DQogICAgICAg
IGNhc2UgQ29uc3RydWN0VmFyYXJnczoNCiAgICAgICAgICAgIHJldHVybiBDYWxsTW9kZTo6Q29u
c3RydWN0Ow0KICAgICAgICB9DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVy
VHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg3MywgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVc
XElubGluZUNhbGxGcmFtZS5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMjMgKTsgfSB3aGlsZSAoZmFs
c2UpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBLaW5kIGtpbmRGb3IoQ2FsbE1vZGUgY2FsbE1vZGUp
DQogICAgew0KICAgICAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7DQogICAgICAgIGNhc2UgQ2FsbE1v
ZGU6OlJlZ3VsYXI6DQogICAgICAgICAgICByZXR1cm4gQ2FsbDsNCiAgICAgICAgY2FzZSBDYWxs
TW9kZTo6Q29uc3RydWN0Og0KICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdDsNCiAgICAgICAg
Y2FzZSBDYWxsTW9kZTo6VGFpbDoNCiAgICAgICAgICAgIHJldHVybiBUYWlsQ2FsbDsNCiAgICAg
ICAgfQ0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGls
ZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oODYsICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxJbmxpbmVDYWxsRnJh
bWUuaCIsICBfX0ZVTkNUSU9OX18gICwgMTI0ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9DQog
ICAgDQogICAgc3RhdGljIEtpbmQgdmFyYXJnc0tpbmRGb3IoQ2FsbE1vZGUgY2FsbE1vZGUpDQog
ICAgew0KICAgICAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7DQogICAgICAgIGNhc2UgQ2FsbE1vZGU6
OlJlZ3VsYXI6DQogICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmFyZ3M7DQogICAgICAgIGNhc2Ug
Q2FsbE1vZGU6OkNvbnN0cnVjdDoNCiAgICAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RWYXJhcmdz
Ow0KICAgICAgICBjYXNlIENhbGxNb2RlOjpUYWlsOg0KICAgICAgICAgICAgcmV0dXJuIFRhaWxD
YWxsVmFyYXJnczsNCiAgICAgICAgfQ0KICAgICAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9p
bnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oOTks
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVj
b2RlXFxJbmxpbmVDYWxsRnJhbWUuaCIsICBfX0ZVTkNUSU9OX18gICwgMTI1ICk7IH0gd2hpbGUg
KGZhbHNlKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
c3BlY2lhbGl6YXRpb25LaW5kRm9yKEtpbmQga2luZCkNCiAgICB7DQogICAgICAgIHN3aXRjaCAo
a2luZCkgew0KICAgICAgICBjYXNlIENhbGw6DQogICAgICAgIGNhc2UgQ2FsbFZhcmFyZ3M6DQog
ICAgICAgIGNhc2UgVGFpbENhbGw6DQogICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOg0KICAg
ICAgICBjYXNlIEdldHRlckNhbGw6DQogICAgICAgIGNhc2UgU2V0dGVyQ2FsbDoNCiAgICAgICAg
ICAgIHJldHVybiBDb2RlRm9yQ2FsbDsNCiAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6DQogICAgICAg
IGNhc2UgQ29uc3RydWN0VmFyYXJnczoNCiAgICAgICAgICAgIHJldHVybiBDb2RlRm9yQ29uc3Ry
dWN0Ow0KICAgICAgICB9DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlw
ZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygxMTYsICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxJ
bmxpbmVDYWxsRnJhbWUuaCIsICBfX0ZVTkNUSU9OX18gICwgMTI2ICk7IH0gd2hpbGUgKGZhbHNl
KTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIGJvb2wgaXNWYXJhcmdzKEtpbmQga2luZCkNCiAg
ICB7DQogICAgICAgIHN3aXRjaCAoa2luZCkgew0KICAgICAgICBjYXNlIENhbGxWYXJhcmdzOg0K
ICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoNCiAgICAgICAgY2FzZSBDb25zdHJ1Y3RWYXJh
cmdzOg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBzdGF0aWMgYm9vbCBp
c1RhaWwoS2luZCBraW5kKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoIChraW5kKSB7DQogICAgICAg
IGNhc2UgVGFpbENhbGw6DQogICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOg0KICAgICAgICAg
ICAgcmV0dXJuIHRydWU7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgICAgIH0NCiAgICB9DQogICAgYm9vbCBpc1RhaWwoKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIGlzVGFpbChzdGF0aWNfY2FzdDxLaW5kPihraW5kKSk7DQogICAgfQ0KDQog
ICAgc3RhdGljIENvZGVPcmlnaW4qIGNvbXB1dGVDYWxsZXJTa2lwcGluZ1RhaWxDYWxscyhJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgS2luZCogY2FsbGVyQ2FsbEtpbmQgPSBudWxs
cHRyKQ0KICAgIHsNCiAgICAgICAgQ29kZU9yaWdpbiogY29kZU9yaWdpbjsNCiAgICAgICAgYm9v
bCB0YWlsQ2FsbGVlOw0KICAgICAgICBpbnQgY2FsbEtpbmQ7DQogICAgICAgIGRvIHsNCiAgICAg
ICAgICAgIHRhaWxDYWxsZWUgPSBpbmxpbmVDYWxsRnJhbWUtPmlzVGFpbCgpOw0KICAgICAgICAg
ICAgY2FsbEtpbmQgPSBpbmxpbmVDYWxsRnJhbWUtPmtpbmQ7DQogICAgICAgICAgICBjb2RlT3Jp
Z2luID0gJmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOw0KICAgICAgICAgICAgaW5saW5l
Q2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7DQogICAgICAgIH0gd2hp
bGUgKGlubGluZUNhbGxGcmFtZSAmJiB0YWlsQ2FsbGVlKTsNCg0KICAgICAgICBpZiAodGFpbENh
bGxlZSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KDQogICAgICAgIGlmIChjYWxsZXJD
YWxsS2luZCkNCiAgICAgICAgICAgICpjYWxsZXJDYWxsS2luZCA9IHN0YXRpY19jYXN0PEtpbmQ+
KGNhbGxLaW5kKTsNCg0KICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsNCiAgICB9DQoNCiAgICBD
b2RlT3JpZ2luKiBnZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscyhLaW5kKiBjYWxsZXJDYWxsS2lu
ZCA9IG51bGxwdHIpDQogICAgew0KICAgICAgICByZXR1cm4gY29tcHV0ZUNhbGxlclNraXBwaW5n
VGFpbENhbGxzKHRoaXMsIGNhbGxlckNhbGxLaW5kKTsNCiAgICB9DQoNCiAgICBJbmxpbmVDYWxs
RnJhbWUqIGdldENhbGxlcklubGluZUZyYW1lU2tpcHBpbmdUYWlsQ2FsbHMoKQ0KICAgIHsNCiAg
ICAgICAgQ29kZU9yaWdpbiogY2FsbGVyID0gZ2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMoKTsN
CiAgICAgICAgcmV0dXJuIGNhbGxlciA/IGNhbGxlci0+aW5saW5lQ2FsbEZyYW1lKCkgOiBudWxs
cHRyOw0KICAgIH0NCiAgICANCiAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzV2l0
aEZpeHVwOyANCiAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBiYXNlbGluZUNvZGVCbG9jazsN
CiAgICBDb2RlT3JpZ2luIGRpcmVjdENhbGxlcjsNCg0KICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDogMjI7IA0KICAgIHVuc2lnbmVkIHRtcE9mZnNldCA6IDEwOw0KICAg
IHNpZ25lZCBzdGFja09mZnNldCA6IDI4Ow0KICAgIHVuc2lnbmVkIGtpbmQgOiAzOyANCiAgICBi
b29sIGlzQ2xvc3VyZUNhbGwgOiAxOyANCiAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3Vu
dFJlZ2lzdGVyOyANCg0KICAgIFZhbHVlUmVjb3ZlcnkgY2FsbGVlUmVjb3Zlcnk7DQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgSW5saW5lQ2FsbEZyYW1lKCkNCiAgICAgICAgOiBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygwKQ0KICAgICAgICAsIHRtcE9mZnNldCgwKQ0KICAgICAgICAs
IHN0YWNrT2Zmc2V0KDApDQogICAgICAgICwga2luZChDYWxsKQ0KICAgICAgICAsIGlzQ2xvc3Vy
ZUNhbGwoZmFsc2UpDQogICAgew0KICAgIH0NCiAgICANCiAgICBib29sIGlzVmFyYXJncygpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gaXNWYXJhcmdzKHN0YXRpY19jYXN0PEtpbmQ+KGtp
bmQpKTsNCiAgICB9DQoNCiAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9u
S2luZCgpIGNvbnN0IHsgcmV0dXJuIHNwZWNpYWxpemF0aW9uS2luZEZvcihzdGF0aWNfY2FzdDxL
aW5kPihraW5kKSk7IH0NCg0KICAgIEpTRnVuY3Rpb24qIGNhbGxlZUNvbnN0YW50KCkgY29uc3Q7
DQogICAgDQogICAgDQogICAgSlNGdW5jdGlvbiogY2FsbGVlRm9yQ2FsbEZyYW1lKENhbGxGcmFt
ZSopIGNvbnN0Ow0KICAgIA0KICAgIENTdHJpbmcgaW5mZXJyZWROYW1lKCkgY29uc3Q7DQogICAg
Q29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7DQogICAgQ1N0cmluZyBoYXNoQXNTdHJpbmdJZlBv
c3NpYmxlKCkgY29uc3Q7DQogICAgDQogICAgdm9pZCBzZXRTdGFja09mZnNldChzaWduZWQgb2Zm
c2V0KQ0KICAgIHsNCiAgICAgICAgc3RhY2tPZmZzZXQgPSBvZmZzZXQ7DQogICAgICAgIGRvIHsg
aWYgKCghKHN0YXRpY19jYXN0PHNpZ25lZD4oc3RhY2tPZmZzZXQpID09IG9mZnNldCkpKSBkbyB7
IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7
IFdURkNyYXNoV2l0aEluZm8oMjIyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcSW5saW5lQ2FsbEZyYW1lLmgiLCAgX19GVU5DVElP
Tl9fICAsIDEyNyApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgIH0NCg0KICAg
IHZvaWQgc2V0VG1wT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkNCiAgICB7DQogICAgICAgIHRtcE9m
ZnNldCA9IG9mZnNldDsNCiAgICAgICAgZG8geyBpZiAoKCEoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRtcE9mZnNldCkgPT0gb2Zmc2V0KSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlw
ZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygyMjgsICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxJ
bmxpbmVDYWxsRnJhbWUuaCIsICBfX0ZVTkNUSU9OX18gICwgMTI4ICk7IH0gd2hpbGUgKGZhbHNl
KTsgfSB3aGlsZSAoMCk7DQogICAgfQ0KDQogICAgcHRyZGlmZl90IGNhbGxlckZyYW1lT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gc3RhY2tPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgQ2FsbEZy
YW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpOyB9DQogICAgcHRyZGlmZl90IHJldHVyblBDT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gc3RhY2tPZmZzZXQgKiBzaXplb2YoUmVnaXN0ZXIpICsgQ2FsbEZy
YW1lOjpyZXR1cm5QQ09mZnNldCgpOyB9DQoNCiAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0lu
U3RyaWN0Q29udGV4dCgpOyB9DQoNCiAgICB2b2lkIGR1bXBCcmllZkZ1bmN0aW9uSW5mb3JtYXRp
b24oUHJpbnRTdHJlYW0mKSBjb25zdDsNCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsNCiAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNv
bnN0Ow0KDQogICAgY2xhc3MgRHVtcGVyRm9yX2JyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbiB7IHB1
YmxpYzogRHVtcGVyRm9yX2JyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbihjb25zdCBJbmxpbmVDYWxs
RnJhbWUmIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QgeyBtX3ZhbHVlLmR1bXBCcmllZkZ1bmN0aW9uSW5mb3JtYXRpb24ob3V0KTsg
fSBwcml2YXRlOiBjb25zdCBJbmxpbmVDYWxsRnJhbWUmIG1fdmFsdWU7IH07IER1bXBlckZvcl9i
cmllZkZ1bmN0aW9uSW5mb3JtYXRpb24gYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gRHVtcGVyRm9yX2JyaWVmRnVuY3Rpb25JbmZvcm1hdGlvbigqdGhpcyk7IH07DQoN
Cn07DQoNCmlubGluZSBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZy
YW1lKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQ0Kew0KICAgIGRvIHsgaWYgKCgh
KGlubGluZUNhbGxGcmFtZSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsg
Y29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMjQ2LCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcSW5saW5l
Q2FsbEZyYW1lLmgiLCAgX19GVU5DVElPTl9fICAsIDEyOSApOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOw0KICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2Nr
LmdldCgpOw0KfQ0KDQppbmxpbmUgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdp
bkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2spDQp7DQogICAgKCh2b2lkKTApOw0KICAgIGF1dG8qIGlu
bGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCk7DQogICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkNCiAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5l
Q2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7DQogICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2Nr
Ow0KfQ0KDQoNCnRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4NCmlubGluZSB2b2lkIENvZGVP
cmlnaW46OndhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJiBmdW5jdGlvbikgY29uc3QN
CnsNCiAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSAqdGhpczsNCiAgICB3aGlsZSAodHJ1ZSkg
ew0KICAgICAgICBmdW5jdGlvbihjb2RlT3JpZ2luKTsNCiAgICAgICAgYXV0byogaW5saW5lQ2Fs
bEZyYW1lID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsNCiAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpDQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY29kZU9yaWdpbiA9IGlu
bGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOw0KICAgIH0NCn0NCg0KaW5saW5lIGJvb2wgQ29k
ZU9yaWdpbjo6aW5saW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSBjb25zdA0Kew0K
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7DQogICAgd2Fsa1VwSW5saW5lU3RhY2soWyZdIChDb2Rl
T3JpZ2luIG9yaWdpbikgew0KICAgICAgICBpZiAob3JpZ2luLmJ5dGVjb2RlSW5kZXgoKS5jaGVj
a3BvaW50KCkpDQogICAgICAgICAgICByZXN1bHQgPSB0cnVlOw0KICAgIH0pOw0KICAgIHJldHVy
biByZXN1bHQ7DQp9DQoNCl9fZm9yY2VpbmxpbmUgT3BlcmFuZCByZW1hcE9wZXJhbmQoSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIE9wZXJhbmQgb3BlcmFuZCkNCnsNCiAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lKQ0KICAgICAgICByZXR1cm4gb3BlcmFuZC5pc1RtcCgpID8gT3BlcmFu
ZDo6dG1wKG9wZXJhbmQudmFsdWUoKSArIGlubGluZUNhbGxGcmFtZS0+dG1wT2Zmc2V0KSA6IG9w
ZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0Ow0K
ICAgIHJldHVybiBvcGVyYW5kOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIE9wZXJhbmQgcmVtYXBPcGVy
YW5kKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgcmVn
KQ0Kew0KICAgIHJldHVybiByZW1hcE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLCBPcGVyYW5kKHJl
ZykpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIE9wZXJhbmQgdW5tYXBPcGVyYW5kKElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lLCBPcGVyYW5kIG9wZXJhbmQpDQp7DQogICAgaWYgKGlubGlu
ZUNhbGxGcmFtZSkNCiAgICAgICAgcmV0dXJuIG9wZXJhbmQuaXNUbXAoKSA/IE9wZXJhbmQ6OnRt
cChvcGVyYW5kLnZhbHVlKCkgLSBpbmxpbmVDYWxsRnJhbWUtPnRtcE9mZnNldCkgOiBPcGVyYW5k
KG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkgLSBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
KTsNCiAgICByZXR1cm4gb3BlcmFuZDsNCn0NCg0KX19mb3JjZWlubGluZSBPcGVyYW5kIHVubWFw
T3BlcmFuZChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVy
IHJlZykNCnsNCiAgICByZXR1cm4gdW5tYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwgT3BlcmFu
ZChyZWcpKTsNCn0NCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpLaW5kKTsNCg0KfSANCiNsaW5l
IDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0lubGluZXMuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcR0NJbmNvbWluZ1JlZkNvdW50
ZWRJbmxpbmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVD4NCmJvb2wgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8VD46OmFkZEluY29taW5nUmVm
ZXJlbmNlKEpTQ2VsbCogY2VsbCkNCnsNCiAgICBpZiAoIWhhc0FueUluY29taW5nKCkpIHsNCiAg
ICAgICAgbV9lbmNvZGVkUG9pbnRlciA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNlbGwpIHwg
c2luZ2xldG9uRmxhZygpOw0KICAgICAgICB0aGlzLT5zZXRJc0RlZmVycmVkKHRydWUpOw0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgICANCiAgICAo
KHZvaWQpMCk7DQogICAgDQogICAgaWYgKGhhc1NpbmdsZXRvbigpKSB7DQogICAgICAgIFZlY3Rv
cjxKU0NlbGwqPiogdmVjdG9yID0gbmV3IFZlY3RvcjxKU0NlbGwqPigpOw0KICAgICAgICB2ZWN0
b3ItPmFwcGVuZChzaW5nbGV0b24oKSk7DQogICAgICAgIHZlY3Rvci0+YXBwZW5kKGNlbGwpOw0K
ICAgICAgICBtX2VuY29kZWRQb2ludGVyID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odmVjdG9y
KTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAg
IA0KICAgIHZlY3Rvck9mQ2VsbHMoKS0+YXBwZW5kKGNlbGwpOw0KICAgIHJldHVybiBmYWxzZTsN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlckZ1bmN0
aW9uVHlwZT4NCmJvb2wgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8VD46OmZpbHRlckluY29taW5nUmVm
ZXJlbmNlcyhGaWx0ZXJGdW5jdGlvblR5cGUmJiBmaWx0ZXJGdW5jdGlvbikNCnsNCiAgICBjb25z
dGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7DQogICAgDQogICAgaWYgKHZlcmJvc2UpDQogICAg
ICAgIGRhdGFMb2coIkZpbHRlcmluZyBpbmNvbWluZyByZWZlcmVuY2VzLlxuIik7DQogICAgDQog
ICAgaWYgKCFoYXNBbnlJbmNvbWluZygpKSB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICBpZiAodmVyYm9zZSkNCiAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBIYXMgbm8gaW5jb21pbmcuXG4iKTsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAg
ICANCiAgICAoKHZvaWQpMCk7DQogICAgDQogICAgaWYgKGhhc1NpbmdsZXRvbigpKSB7DQogICAg
ICAgIGlmIChmaWx0ZXJGdW5jdGlvbihzaW5nbGV0b24oKSkpIHsNCiAgICAgICAgICAgIGlmICh2
ZXJib3NlKQ0KICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIFNpbmdsZXRvbiBwYXNzZWQuXG4i
KTsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAg
ICAgaWYgKHZlcmJvc2UpDQogICAgICAgICAgICBkYXRhTG9nKCIgICBSZW1vdmluZyBzaW5nbGV0
b24uXG4iKTsNCiAgICAgICAgbV9lbmNvZGVkUG9pbnRlciA9IDA7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgdGhpcy0+c2V0SXNEZWZlcnJlZChmYWxzZSk7DQogICAgICAgIHJldHVybiB0
cnVlOw0KICAgIH0NCiAgICANCiAgICBpZiAodmVyYm9zZSkNCiAgICAgICAgZGF0YUxvZygiICAg
SGFzICIsIHZlY3Rvck9mQ2VsbHMoKS0+c2l6ZSgpLCAiIGVudHJpZXMuXG4iKTsNCiAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZlY3Rvck9mQ2VsbHMoKS0+c2l6ZSgpOyArK2kpIHsNCiAgICAg
ICAgaWYgKGZpbHRlckZ1bmN0aW9uKHZlY3Rvck9mQ2VsbHMoKS0+YXQoaSkpKQ0KICAgICAgICAg
ICAgY29udGludWU7DQogICAgICAgIHZlY3Rvck9mQ2VsbHMoKS0+YXQoaS0tKSA9IHZlY3Rvck9m
Q2VsbHMoKS0+bGFzdCgpOw0KICAgICAgICB2ZWN0b3JPZkNlbGxzKCktPnJlbW92ZUxhc3QoKTsN
CiAgICB9DQogICAgDQogICAgaWYgKHZlY3Rvck9mQ2VsbHMoKS0+c2l6ZSgpID49IDIpIHsNCiAg
ICAgICAgaWYgKHZlcmJvc2UpDQogICAgICAgICAgICBkYXRhTG9nKCIgICBTdGlsbCBoYXMgIiwg
dmVjdG9yT2ZDZWxscygpLT5zaXplKCksICIgZW50cmllcy5cbiIpOw0KICAgICAgICByZXR1cm4g
ZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIGlmICh2ZWN0b3JPZkNlbGxzKCktPmlzRW1wdHkoKSkg
ew0KICAgICAgICBpZiAodmVyYm9zZSkNCiAgICAgICAgICAgIGRhdGFMb2coIiAgIFJlbW92aW5n
LlxuIik7DQogICAgICAgIGRlbGV0ZSB2ZWN0b3JPZkNlbGxzKCk7DQogICAgICAgIG1fZW5jb2Rl
ZFBvaW50ZXIgPSAwOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHRoaXMtPnNldElzRGVm
ZXJyZWQoZmFsc2UpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgaWYg
KHZlcmJvc2UpDQogICAgICAgIGRhdGFMb2coIiAgIFNocmlua2luZyB0byBzaW5nbGV0b24uXG4i
KTsNCiAgICBKU0NlbGwqIHNpbmdsZXRvbiA9IHZlY3Rvck9mQ2VsbHMoKS0+YXQoMCk7DQogICAg
ZGVsZXRlIHZlY3Rvck9mQ2VsbHMoKTsNCiAgICBtX2VuY29kZWRQb2ludGVyID0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oc2luZ2xldG9uKSB8IHNpbmdsZXRvbkZsYWcoKTsNCiAgICAoKHZvaWQp
MCk7DQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQp9IA0KI2xpbmUgNDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSW5saW5lcy5o
Ig0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxoZWFwXFxIZWFwSW5saW5lcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxHQ0RlZmVycmFsQ29u
dGV4dC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBIZWFwOw0KY2xh
c3MgQmxvY2tEaXJlY3Rvcnk7DQpjbGFzcyBMb2NhbEFsbG9jYXRvcjsNCg0KY2xhc3MgR0NEZWZl
cnJhbENvbnRleHQgew0KICAgIHByaXZhdGU6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqKSA9IGRlbGV0ZTsgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKikgPSBkZWxl
dGU7IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpID0gZGVsZXRlOyB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5v
dE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSA9IGRlbGV0ZTsgdHlwZWRlZiBpbnQgX190aGlzSXNI
ZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNGb3JiaWRIZWFwQWxsb2NhdGlvbk1hY3JvOw0K
DQogICAgZnJpZW5kIGNsYXNzIEhlYXA7DQogICAgZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0b3J5
Ow0KICAgIGZyaWVuZCBjbGFzcyBMb2NhbEFsbG9jYXRvcjsNCnB1YmxpYzoNCiAgICBpbmxpbmUg
R0NEZWZlcnJhbENvbnRleHQoSGVhcCYpOw0KICAgIGlubGluZSB+R0NEZWZlcnJhbENvbnRleHQo
KTsNCg0KcHJpdmF0ZToNCiAgICBIZWFwJiBtX2hlYXA7DQogICAgYm9vbCBtX3Nob3VsZEdDIHsg
ZmFsc2UgfTsNCn07DQoNCn0gDQoNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhlYXBJbmxpbmVzLmgiDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxc
SGVhcENlbGxJbmxpbmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoN
Cl9fZm9yY2VpbmxpbmUgYm9vbCBIZWFwQ2VsbDo6aXNQcmVjaXNlQWxsb2NhdGlvbigpIGNvbnN0
DQp7DQogICAgcmV0dXJuIFByZWNpc2VBbGxvY2F0aW9uOjppc1ByZWNpc2VBbGxvY2F0aW9uKGNv
bnN0X2Nhc3Q8SGVhcENlbGwqPih0aGlzKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgQ2VsbENvbnRh
aW5lciBIZWFwQ2VsbDo6Y2VsbENvbnRhaW5lcigpIGNvbnN0DQp7DQogICAgaWYgKGlzUHJlY2lz
ZUFsbG9jYXRpb24oKSkNCiAgICAgICAgcmV0dXJuIHByZWNpc2VBbGxvY2F0aW9uKCk7DQogICAg
cmV0dXJuIG1hcmtlZEJsb2NrKCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgTWFya2VkQmxvY2smIEhl
YXBDZWxsOjptYXJrZWRCbG9jaygpIGNvbnN0DQp7DQogICAgcmV0dXJuICpNYXJrZWRCbG9jazo6
YmxvY2tGb3IodGhpcyk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgUHJlY2lzZUFsbG9jYXRpb24mIEhl
YXBDZWxsOjpwcmVjaXNlQWxsb2NhdGlvbigpIGNvbnN0DQp7DQogICAgcmV0dXJuICpQcmVjaXNl
QWxsb2NhdGlvbjo6ZnJvbUNlbGwoY29uc3RfY2FzdDxIZWFwQ2VsbCo+KHRoaXMpKTsNCn0NCg0K
X19mb3JjZWlubGluZSBIZWFwKiBIZWFwQ2VsbDo6aGVhcCgpIGNvbnN0DQp7DQogICAgcmV0dXJu
ICZ2bSgpLmhlYXA7DQp9DQoNCl9fZm9yY2VpbmxpbmUgVk0mIEhlYXBDZWxsOjp2bSgpIGNvbnN0
DQp7DQogICAgaWYgKGlzUHJlY2lzZUFsbG9jYXRpb24oKSkNCiAgICAgICAgcmV0dXJuIHByZWNp
c2VBbGxvY2F0aW9uKCkudm0oKTsNCiAgICByZXR1cm4gbWFya2VkQmxvY2soKS52bSgpOw0KfQ0K
ICAgIA0KX19mb3JjZWlubGluZSBzaXplX3QgSGVhcENlbGw6OmNlbGxTaXplKCkgY29uc3QNCnsN
CiAgICBpZiAoaXNQcmVjaXNlQWxsb2NhdGlvbigpKQ0KICAgICAgICByZXR1cm4gcHJlY2lzZUFs
bG9jYXRpb24oKS5jZWxsU2l6ZSgpOw0KICAgIHJldHVybiBtYXJrZWRCbG9jaygpLmNlbGxTaXpl
KCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgQ2VsbEF0dHJpYnV0ZXMgSGVhcENlbGw6OmNlbGxBdHRy
aWJ1dGVzKCkgY29uc3QNCnsNCiAgICBpZiAoaXNQcmVjaXNlQWxsb2NhdGlvbigpKQ0KICAgICAg
ICByZXR1cm4gcHJlY2lzZUFsbG9jYXRpb24oKS5hdHRyaWJ1dGVzKCk7DQogICAgcmV0dXJuIG1h
cmtlZEJsb2NrKCkuYXR0cmlidXRlcygpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIERlc3RydWN0aW9u
TW9kZSBIZWFwQ2VsbDo6ZGVzdHJ1Y3Rpb25Nb2RlKCkgY29uc3QNCnsNCiAgICByZXR1cm4gY2Vs
bEF0dHJpYnV0ZXMoKS5kZXN0cnVjdGlvbjsNCn0NCg0KX19mb3JjZWlubGluZSBIZWFwQ2VsbDo6
S2luZCBIZWFwQ2VsbDo6Y2VsbEtpbmQoKSBjb25zdA0Kew0KICAgIHJldHVybiBjZWxsQXR0cmli
dXRlcygpLmNlbGxLaW5kOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIFN1YnNwYWNlKiBIZWFwQ2VsbDo6
c3Vic3BhY2UoKSBjb25zdA0Kew0KICAgIGlmIChpc1ByZWNpc2VBbGxvY2F0aW9uKCkpDQogICAg
ICAgIHJldHVybiBwcmVjaXNlQWxsb2NhdGlvbigpLnN1YnNwYWNlKCk7DQogICAgcmV0dXJuIG1h
cmtlZEJsb2NrKCkuc3Vic3BhY2UoKTsNCn0NCg0KfSANCg0KI2xpbmUgMzEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSGVhcElubGluZXMu
aCINCg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KX19mb3JjZWlubGluZSBWTSYg
SGVhcDo6dm0oKSBjb25zdA0Kew0KICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFZNKj4oYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgLSAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxWTSo+KDB4NDAwMCktPmhlYXApKSAtIDB4NDAwMCkpOw0KfQ0KDQpf
X2ZvcmNlaW5saW5lIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSGVhcENlbGwqIGNlbGwpDQp7DQog
ICAgaWYgKCFjZWxsKQ0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICByZXR1cm4gY2VsbC0+
aGVhcCgpOw0KfQ0KDQppbmxpbmUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBKU1ZhbHVlIHYpDQp7
DQogICAgaWYgKCF2LmlzQ2VsbCgpKQ0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICByZXR1
cm4gaGVhcCh2LmFzQ2VsbCgpKTsNCn0NCg0KaW5saW5lIGJvb2wgSGVhcDo6aGFzSGVhcEFjY2Vz
cygpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1fd29ybGRTdGF0ZS5sb2FkKCkgJiBoYXNBY2Nlc3NC
aXQ7DQp9DQoNCmlubGluZSBib29sIEhlYXA6OndvcmxkSXNTdG9wcGVkKCkgY29uc3QNCnsNCiAg
ICByZXR1cm4gbV93b3JsZElzU3RvcHBlZDsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIEhlYXA6
OmlzTWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpDQp7DQogICAgSGVhcENlbGwqIGNlbGwgPSBi
aXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsNCiAgICBpZiAoY2VsbC0+aXNQcmVjaXNl
QWxsb2NhdGlvbigpKQ0KICAgICAgICByZXR1cm4gY2VsbC0+cHJlY2lzZUFsbG9jYXRpb24oKS5p
c01hcmtlZCgpOw0KICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7
DQogICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKG1fb2JqZWN0U3BhY2UubWFya2luZ1ZlcnNpb24o
KSwgY2VsbCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBIZWFwOjp0ZXN0QW5kU2V0TWFya2Vk
KEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCB2b2lkKiByYXdDZWxsKQ0Kew0KICAg
IEhlYXBDZWxsKiBjZWxsID0gYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4ocmF3Q2VsbCk7DQogICAg
aWYgKGNlbGwtPmlzUHJlY2lzZUFsbG9jYXRpb24oKSkNCiAgICAgICAgcmV0dXJuIGNlbGwtPnBy
ZWNpc2VBbGxvY2F0aW9uKCkudGVzdEFuZFNldE1hcmtlZCgpOw0KICAgIE1hcmtlZEJsb2NrJiBi
bG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7DQogICAgRGVwZW5kZW5jeSBkZXBlbmRlbmN5ID0g
YmxvY2suYWJvdXRUb01hcmsobWFya2luZ1ZlcnNpb24pOw0KICAgIHJldHVybiBibG9jay50ZXN0
QW5kU2V0TWFya2VkKGNlbGwsIGRlcGVuZGVuY3kpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHNpemVf
dCBIZWFwOjpjZWxsU2l6ZShjb25zdCB2b2lkKiByYXdDZWxsKQ0Kew0KICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKS0+Y2VsbFNpemUoKTsNCn0NCg0KaW5saW5lIHZv
aWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwgSlNWYWx1ZSB0bykNCnsN
Cg0KDQojbGluZSA5OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxoZWFwXFxIZWFwSW5saW5lcy5oIg0KICAgIGlmICghdG8uaXNDZWxsKCkpDQogICAg
ICAgIHJldHVybjsNCiAgICB3cml0ZUJhcnJpZXIoZnJvbSwgdG8uYXNDZWxsKCkpOw0KfQ0KDQpp
bmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU0NlbGwq
IHRvKQ0Kew0KDQoNCiNsaW5lIDEwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxoZWFwXFxIZWFwSW5saW5lcy5oIg0KICAgIGlmICghZnJvbSkNCiAg
ICAgICAgcmV0dXJuOw0KICAgIGlmICghaXNXaXRoaW5UaHJlc2hvbGQoZnJvbS0+Y2VsbFN0YXRl
KCksIGJhcnJpZXJUaHJlc2hvbGQoKSkpDQogICAgICAgIHJldHVybjsNCiAgICBpZiAoKCF0bykp
DQogICAgICAgIHJldHVybjsNCiAgICB3cml0ZUJhcnJpZXJTbG93UGF0aChmcm9tKTsNCn0NCg0K
aW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSkNCnsNCiAg
ICBkbyB7ICh2b2lkKWNvbnN0X2Nhc3Q8SlNDZWxsKj4oZnJvbSk7IH0gd2hpbGUgKDApOw0KICAg
IGlmICghZnJvbSkNCiAgICAgICAgcmV0dXJuOw0KICAgIGlmICgoaXNXaXRoaW5UaHJlc2hvbGQo
ZnJvbS0+Y2VsbFN0YXRlKCksIGJhcnJpZXJUaHJlc2hvbGQoKSkpKQ0KICAgICAgICB3cml0ZUJh
cnJpZXJTbG93UGF0aChmcm9tKTsNCn0NCg0KaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVy
V2l0aG91dEZlbmNlKGNvbnN0IEpTQ2VsbCogZnJvbSkNCnsNCiAgICBkbyB7ICh2b2lkKWNvbnN0
X2Nhc3Q8SlNDZWxsKj4oZnJvbSk7IH0gd2hpbGUgKDApOw0KICAgIGlmICghZnJvbSkNCiAgICAg
ICAgcmV0dXJuOw0KICAgIGlmICgoaXNXaXRoaW5UaHJlc2hvbGQoZnJvbS0+Y2VsbFN0YXRlKCks
IGJsYWNrVGhyZXNob2xkKSkpDQogICAgICAgIGFkZFRvUmVtZW1iZXJlZFNldChmcm9tKTsNCn0N
Cg0KaW5saW5lIHZvaWQgSGVhcDo6bXV0YXRvckZlbmNlKCkNCnsNCiAgICBpZiAoaXNYODYoKSB8
fCAobXV0YXRvclNob3VsZEJlRmVuY2VkKCkpKQ0KICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5j
ZSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpm
b3JFYWNoQ29kZUJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpDQp7DQogICAgZm9yRWFjaENvZGVC
bG9ja0ltcGwoc2NvcGVkTGFtYmRhUmVmPHZvaWQoQ29kZUJsb2NrKik+KGZ1bmMpKTsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVC
bG9ja0lnbm9yaW5nSklUUGxhbnMoY29uc3QgQWJzdHJhY3RMb2NrZXImIGNvZGVCbG9ja1NldExv
Y2tlciwgY29uc3QgRnVuY3RvciYgZnVuYykNCnsNCiAgICBmb3JFYWNoQ29kZUJsb2NrSWdub3Jp
bmdKSVRQbGFuc0ltcGwoY29kZUJsb2NrU2V0TG9ja2VyLCBzY29wZWRMYW1iZGFSZWY8dm9pZChD
b2RlQmxvY2sqKT4oZnVuYykpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdm9pZCBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQ0Kew0KICAgIGZvciAoYXV0byYgcGFpciA6IG1fcHJvdGVjdGVkVmFsdWVzKQ0KICAgICAgICBm
dW5jdG9yKHBhaXIua2V5KTsNCiAgICBtX2hhbmRsZVNldC5mb3JFYWNoU3Ryb25nSGFuZGxlKGZ1
bmN0b3IsIG1fcHJvdGVjdGVkVmFsdWVzKTsNCn0NCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTY2ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEhl
YXBJbmxpbmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KaW5saW5lIHZvaWQgSGVhcDo6aW5jcmVtZW50
RGVmZXJyYWxEZXB0aCgpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIG1fZGVmZXJyYWxEZXB0aCsr
Ow0KfQ0KDQppbmxpbmUgdm9pZCBIZWFwOjpkZWNyZW1lbnREZWZlcnJhbERlcHRoKCkNCnsNCiAg
ICAoKHZvaWQpMCk7DQogICAgbV9kZWZlcnJhbERlcHRoLS07DQp9DQoNCmlubGluZSB2b2lkIEhl
YXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkNCnsNCiAgICAoKHZvaWQp
MCk7DQogICAgbV9kZWZlcnJhbERlcHRoLS07DQogICAgDQogICAgaWYgKChtX2RpZERlZmVyR0NX
b3JrKSB8fCBPcHRpb25zOjpmb3JjZURpZERlZmVyR0NXb3JrKCkpIHsNCiAgICAgICAgZGVjcmVt
ZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWRTbG93KCk7DQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgfQ0KfQ0KDQppbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1
bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlzdFNldCgpDQp7DQogICAgaWYgKCFtX21hcmtMaXN0
U2V0KQ0KICAgICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PE1hcmtlZEFy
Z3VtZW50QnVmZmVyKj4+KCk7DQogICAgcmV0dXJuICptX21hcmtMaXN0U2V0Ow0KfQ0KDQppbmxp
bmUgdm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplX3Qgc2l6ZSkNCnsN
CiAgICBpZiAoc2l6ZSA+IG1pbkV4dHJhTWVtb3J5KSANCiAgICAgICAgcmVwb3J0RXh0cmFNZW1v
cnlBbGxvY2F0ZWRTbG93Q2FzZShzaXplKTsNCn0NCg0KaW5saW5lIHZvaWQgSGVhcDo6ZGVwcmVj
YXRlZFJlcG9ydEV4dHJhTWVtb3J5KHNpemVfdCBzaXplKQ0Kew0KICAgIGlmIChzaXplID4gbWlu
RXh0cmFNZW1vcnkpIA0KICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlTbG93Q2Fz
ZShzaXplKTsNCn0NCg0KaW5saW5lIHZvaWQgSGVhcDo6YWNxdWlyZUFjY2VzcygpDQp7DQogICAg
aWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykNCiAgICAgICAgdmVyaWZ5Q2FuR0MoKTsN
Cg0KICAgIGlmIChtX3dvcmxkU3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhaygwLCBoYXNBY2Nlc3NC
aXQpKQ0KICAgICAgICByZXR1cm47DQogICAgYWNxdWlyZUFjY2Vzc1Nsb3coKTsNCn0NCg0KaW5s
aW5lIGJvb2wgSGVhcDo6aGFzQWNjZXNzKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV93b3JsZFN0
YXRlLmxvYWRSZWxheGVkKCkgJiBoYXNBY2Nlc3NCaXQ7DQp9DQoNCmlubGluZSB2b2lkIEhlYXA6
OnJlbGVhc2VBY2Nlc3MoKQ0Kew0KICAgIGlmIChtX3dvcmxkU3RhdGUuY29tcGFyZUV4Y2hhbmdl
V2VhayhoYXNBY2Nlc3NCaXQsIDApKQ0KICAgICAgICByZXR1cm47DQogICAgcmVsZWFzZUFjY2Vz
c1Nsb3coKTsNCn0NCg0KaW5saW5lIGJvb2wgSGVhcDo6bWF5TmVlZFRvU3RvcCgpDQp7DQogICAg
cmV0dXJuIG1fd29ybGRTdGF0ZS5sb2FkUmVsYXhlZCgpICE9IGhhc0FjY2Vzc0JpdDsNCn0NCg0K
aW5saW5lIHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5KCkNCnsNCiAgICBpZiBjb25zdGV4cHIg
KHZhbGlkYXRlREZHRG9lc0dDKQ0KICAgICAgICB2ZXJpZnlDYW5HQygpOw0KDQogICAgaWYgKG1h
eU5lZWRUb1N0b3AoKSkNCiAgICAgICAgc3RvcElmTmVjZXNzYXJ5U2xvdygpOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPg0Kdm9pZCBIZWFwOjpmb3JFYWNoU2xvdFZpc2l0b3IoY29uc3Qg
RnVuYyYgZnVuYykNCnsNCiAgICBmdW5jKCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsNCiAgICBm
dW5jKCptX211dGF0b3JTbG90VmlzaXRvcik7DQogICAgZm9yIChhdXRvJiBzbG90VmlzaXRvciA6
IG1fcGFyYWxsZWxTbG90VmlzaXRvcnMpDQogICAgICAgIGZ1bmMoKnNsb3RWaXNpdG9yKTsNCn0N
Cg0KfSANCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0lubGluZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSWRlbnRpZmllcklu
bGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyAgew0KDQppbmxpbmUgSWRl
bnRpZmllcjo6SWRlbnRpZmllcihWTSYgdm0sIEF0b21TdHJpbmdJbXBsKiBzdHJpbmcpDQogICAg
OiBtX3N0cmluZyhzdHJpbmcpDQp7DQoNCg0KDQoNCg0KICAgICh2b2lkKXZtOw0KI2xpbmUgNDQg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcSWRlbnRpZmllcklubGluZXMuaCINCn0NCg0KaW5saW5lIElkZW50aWZpZXI6OklkZW50aWZp
ZXIoVk0mIHZtLCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpDQogICAgOiBtX3N0cmluZyhzdHJp
bmcuc3RyaW5nKCkpDQp7DQoNCg0KDQoNCg0KICAgICh2b2lkKXZtOw0KI2xpbmUgNTYgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSWRl
bnRpZmllcklubGluZXMuaCINCn0NCg0KaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBJZGVudGlmaWVy
OjphZGQoVk0mIHZtLCBTdHJpbmdJbXBsKiByKQ0Kew0KDQoNCg0KICAgIHJldHVybiAqQXRvbVN0
cmluZ0ltcGw6OmFkZFdpdGhTdHJpbmdUYWJsZVByb3ZpZGVyKHZtLCByKTsNCn0NCg0KaW5saW5l
IElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVVpZChWTSYgdm0sIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpDQp7DQogICAgaWYgKCF1aWQgfHwgIXVpZC0+aXNTeW1ib2woKSkNCiAgICAgICAgcmV0
dXJuIElkZW50aWZpZXIodm0sIHVpZCk7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFN5bWJvbElt
cGwmPigqdWlkKTsNCn0NCg0KaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVVpZChj
b25zdCBQcml2YXRlTmFtZSYgbmFtZSkNCnsNCiAgICByZXR1cm4gbmFtZS51aWQoKTsNCn0NCg0K
aW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVVpZChTeW1ib2xJbXBsJiBzeW1ib2wp
DQp7DQogICAgcmV0dXJuIHN5bWJvbDsNCn0NCg0KdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVy
c0NvdW50Pg0KaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQ0Kew0KICAgIHJldHVy
biBJZGVudGlmaWVyKCZ2bSwgY2hhcmFjdGVycyk7DQp9DQoNCmlubGluZSBJZGVudGlmaWVyIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcykNCnsNCiAgICByZXR1
cm4gSWRlbnRpZmllcih2bSwgU3RyaW5nKHMpKTsNCn0NCg0KaW5saW5lIElkZW50aWZpZXIgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQ0K
ew0KICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOw0KfQ0KDQppbmxpbmUgSWRl
bnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVUNoYXIqIHMsIGlu
dCBsZW5ndGgpDQp7DQogICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHMsIGxlbmd0aCk7DQp9DQoN
CmlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBjb25zdCBT
dHJpbmcmIHN0cmluZykNCnsNCiAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgc3RyaW5nLmltcGwo
KSk7DQp9DQoNCmlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZt
LCBBdG9tU3RyaW5nSW1wbCogYXRvbVN0cmluZ0ltcGwpDQp7DQogICAgcmV0dXJuIElkZW50aWZp
ZXIodm0sIGF0b21TdHJpbmdJbXBsKTsNCn0NCg0KaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhWTSYgdm0sIGNvbnN0IEF0b21TdHJpbmcmIGF0b21TdHJpbmcpDQp7DQog
ICAgcmV0dXJuIElkZW50aWZpZXIodm0sIGF0b21TdHJpbmcpOw0KfQ0KDQppbmxpbmUgSWRlbnRp
ZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNJiB2bSwgU3ltYm9sSW1wbCogc3ltYm9sSW1w
bCkNCnsNCiAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgc3ltYm9sSW1wbCk7DQp9DQoNCmlubGlu
ZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBjb25zdCBjaGFyKiBz
KQ0Kew0KICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBBdG9tU3RyaW5nKHMpKTsNCn0NCg0KaW5s
aW5lIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpDQp7DQogICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkNCiAgICAgICAg
cmV0dXJuIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50
aWZpZXIuaW1wbCgpKSk7DQogICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBpZGVudGlmaWVyLmltcGwo
KSk7DQp9DQoNCmlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVlKFZN
JiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgDQp7DQogICAgaWYgKGlkZW50aWZp
ZXIuaXNTeW1ib2woKSAmJiAhaWRlbnRpZmllci5pc1ByaXZhdGVOYW1lKCkpDQogICAgICAgIHJl
dHVybiBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlm
aWVyLmltcGwoKSkpOw0KICAgIHJldHVybiBqc1N0cmluZyh2bSwgaWRlbnRpZmllci5pbXBsKCkp
Ow0KfQ0KDQp9IA0KI2xpbmUgNDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSW5saW5lcy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0FycmF5
QnVmZmVyVmlld0lubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcQXJyYXlCdWZmZXJWaWV3
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBKU0Fy
cmF5QnVmZmVyVmlldzsNCmNsYXNzIEpTR2xvYmFsT2JqZWN0Ow0KY2xhc3MgQ2FsbEZyYW1lOw0K
DQpjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZp
ZXc+IHsNCnB1YmxpYzoNCiAgICB2aXJ0dWFsIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25z
dCA9IDA7DQoNCiAgICBib29sIGlzTmV1dGVyZWQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuICFtX2J1ZmZlciB8fCBtX2J1ZmZlci0+aXNOZXV0ZXJlZCgpOw0KICAgIH0NCiAgICANCiAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QNCiAgICB7
DQogICAgICAgIGlmIChpc05ldXRlcmVkKCkpDQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsN
CiAgICAgICAgcmV0dXJuIG1fYnVmZmVyOw0KICAgIH0NCiAgICANCiAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QNCiAgICB7DQogICAgICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gcmVzdWx0ID0gcG9zc2libHlTaGFyZWRCdWZmZXIoKTsNCiAgICAgICAgZG8geyBp
ZiAoKCEoIXJlc3VsdC0+aXNTaGFyZWQoKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRl
clR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNjAsICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEFycmF5QnVmZmVyVmlldy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMzAgKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQogICAgDQog
ICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoaXNOZXV0ZXJlZCgp
KQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICByZXR1cm4gbV9idWZmZXItPmlz
U2hhcmVkKCk7DQogICAgfQ0KDQogICAgdm9pZCogYmFzZUFkZHJlc3MoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgaWYgKGlzTmV1dGVyZWQoKSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0K
ICAgICAgICByZXR1cm4gbV9iYXNlQWRkcmVzcy5nZXRNYXlCZU51bGwoYnl0ZUxlbmd0aCgpKTsN
CiAgICB9DQoNCiAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gYmFzZUFkZHJlc3MoKTsg
fQ0KDQogICAgdW5zaWduZWQgYnl0ZU9mZnNldCgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAo
aXNOZXV0ZXJlZCgpKQ0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIHJldHVybiBtX2J5
dGVPZmZzZXQ7DQogICAgfQ0KDQogICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnl0ZUxlbmd0aDsgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgc2V0
TmV1dGVyYWJsZShib29sIGZsYWcpOw0KICAgIGJvb2wgaXNOZXV0ZXJhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc05ldXRlcmFibGU7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2aXJ0
dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsNCg0KICAgIA0KICAgIHN0YXRpYyBib29sIHZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHNpemUpDQogICAg
ew0KICAgICAgICByZXR1cm4gIShieXRlT2Zmc2V0ICYgKHNpemUgLSAxKSk7DQogICAgfQ0KDQog
ICAgDQogICAgDQogICAgc3RhdGljIGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJy
YXlCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVu
dHMsIHNpemVfdCBzaXplKQ0KICAgIHsNCiAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1
ZmZlci5ieXRlTGVuZ3RoKCk7DQogICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCkN
CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxl
bWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsNCiAgICAgICAgaWYgKG51
bUVsZW1lbnRzID4gcmVtYWluaW5nRWxlbWVudHMpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgICANCiAgICB2aXJ0dWFsIEpTQXJyYXlC
dWZmZXJWaWV3KiB3cmFwKEpTR2xvYmFsT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7DQog
ICAgDQpwcm90ZWN0ZWQ6DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEFycmF5QnVmZmVyVmll
dyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpOw0KDQogICAgaW5saW5lIGJvb2wgc2V0SW1wbChBcnJheUJ1ZmZlclZpZXcqLCB1
bnNpZ25lZCBieXRlT2Zmc2V0KTsNCg0KICAgIGlubGluZSBib29sIHNldFJhbmdlSW1wbChjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
Ow0KICAgIGlubGluZSBib29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsNCg0KICAgIGlubGluZSBib29s
IHplcm9SYW5nZUltcGwodW5zaWduZWQgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0
aCk7DQoNCiAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKA0K
ICAgICAgICBpbnQgc3RhcnQsIGludCBlbmQsIHVuc2lnbmVkIGFycmF5U2l6ZSwNCiAgICAgICAg
dW5zaWduZWQqIG9mZnNldCwgdW5zaWduZWQqIGxlbmd0aCk7DQoNCiAgICANCiAgICANCiAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4NCiAgICBzdGF0aWMgdm9pZCBjbGFtcE9mZnNldEFuZE51bUVs
ZW1lbnRzKA0KICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLA0KICAgICAgICB1bnNp
Z25lZCBhcnJheUJ5dGVPZmZzZXQsDQogICAgICAgIHVuc2lnbmVkICpvZmZzZXQsDQogICAgICAg
IHVuc2lnbmVkICpudW1FbGVtZW50cykNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIG1heE9mZnNl
dCA9ICgweGZmZmZmZmZmIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsNCiAgICAgICAg
aWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsNCiAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIu
Ynl0ZUxlbmd0aCgpOw0KICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsg
Km9mZnNldCAqIHNpemVvZihUKTsNCiAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5i
eXRlTGVuZ3RoKCksICpvZmZzZXQpOw0KICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50
cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNldCkgLyBzaXplb2YoVCk7DQogICAgICAg
ICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmluZ0VsZW1lbnRzLCAqbnVtRWxlbWVudHMp
Ow0KICAgIH0NCg0KICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6IDMxOw0KICAgIGJvb2wgbV9p
c05ldXRlcmFibGUgOiAxOw0KICAgIHVuc2lnbmVkIG1fYnl0ZUxlbmd0aDsNCg0KICAgIHVzaW5n
IEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2Fn
ZWRQdHI+Ow0KICAgIA0KICAgIEJhc2VBZGRyZXNzIG1fYmFzZUFkZHJlc3M7DQoNCnByaXZhdGU6
DQogICAgZnJpZW5kIGNsYXNzIEFycmF5QnVmZmVyOw0KICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bV9idWZmZXI7DQp9Ow0KDQpib29sIEFycmF5QnVmZmVyVmlldzo6c2V0SW1wbChBcnJheUJ1ZmZl
clZpZXcqIGFycmF5LCB1bnNpZ25lZCBieXRlT2Zmc2V0KQ0Kew0KICAgIGlmIChieXRlT2Zmc2V0
ID4gYnl0ZUxlbmd0aCgpDQogICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxlbmd0
aCgpID4gYnl0ZUxlbmd0aCgpDQogICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBhcnJheS0+Ynl0ZUxl
bmd0aCgpIDwgYnl0ZU9mZnNldCkgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgIH0NCiAgICANCiAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJh
c2VBZGRyZXNzKCkpOw0KICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGFycmF5LT5iYXNl
QWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsNCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0K
Ym9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpDQp7DQogICAgaWYgKGJ5dGVP
ZmZzZXQgPiBieXRlTGVuZ3RoKCkNCiAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVu
Z3RoID4gYnl0ZUxlbmd0aCgpDQogICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0
aCA8IGJ5dGVPZmZzZXQpIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9
DQoNCiAgICB1aW50OF90KiBiYXNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJhc2VBZGRyZXNz
KCkpOw0KICAgIG1lbW1vdmUoYmFzZSArIGJ5dGVPZmZzZXQsIGRhdGEsIGRhdGFCeXRlTGVuZ3Ro
KTsNCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdl
SW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0KQ0Kew0KICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpDQogICAgICAg
IHx8IGJ5dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQ0KICAgICAgICB8
fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7DQogICAgICAgIA0K
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgY29uc3QgdWludDhfdCogYmFzZSA9
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiYXNlQWRkcmVzcygpKTsNCiAgICBtZW1tb3Zl
KGRlc3RpbmF0aW9uLCBiYXNlICsgYnl0ZU9mZnNldCwgZGF0YUJ5dGVMZW5ndGgpOw0KICAgIHJl
dHVybiB0cnVlOw0KfQ0KDQpib29sIEFycmF5QnVmZmVyVmlldzo6emVyb1JhbmdlSW1wbCh1bnNp
Z25lZCBieXRlT2Zmc2V0LCBzaXplX3QgcmFuZ2VCeXRlTGVuZ3RoKQ0Kew0KICAgIGlmIChieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCgpDQogICAgICAgIHx8IGJ5dGVPZmZzZXQgKyByYW5nZUJ5dGVM
ZW5ndGggPiBieXRlTGVuZ3RoKCkNCiAgICAgICAgfHwgYnl0ZU9mZnNldCArIHJhbmdlQnl0ZUxl
bmd0aCA8IGJ5dGVPZmZzZXQpIHsNCiAgICAgICAgDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICB9DQogICAgDQogICAgdWludDhfdCogYmFzZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihiYXNl
QWRkcmVzcygpKTsNCiAgICBtZW1zZXQoYmFzZSArIGJ5dGVPZmZzZXQsIDAsIHJhbmdlQnl0ZUxl
bmd0aCk7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCnZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxj
dWxhdGVPZmZzZXRBbmRMZW5ndGgoDQogICAgaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBh
cnJheVNpemUsIHVuc2lnbmVkKiBvZmZzZXQsIHVuc2lnbmVkKiBsZW5ndGgpDQp7DQogICAgaWYg
KHN0YXJ0IDwgMCkNCiAgICAgICAgc3RhcnQgKz0gYXJyYXlTaXplOw0KICAgIGlmIChzdGFydCA8
IDApDQogICAgICAgIHN0YXJ0ID0gMDsNCiAgICBpZiAoZW5kIDwgMCkNCiAgICAgICAgZW5kICs9
IGFycmF5U2l6ZTsNCiAgICBpZiAoZW5kIDwgMCkNCiAgICAgICAgZW5kID0gMDsNCiAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCkgPiBhcnJheVNpemUpDQogICAgICAgIGVuZCA9IGFy
cmF5U2l6ZTsNCiAgICBpZiAoZW5kIDwgc3RhcnQpDQogICAgICAgIGVuZCA9IHN0YXJ0Ow0KICAg
ICpvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnQpOw0KICAgICpsZW5ndGggPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RhcnQpOw0KfQ0KDQp9IA0KDQp1c2luZyBKU0M6
OkFycmF5QnVmZmVyVmlldzsNCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5o
Ig0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxKU0FycmF5QnVmZmVyVmlldy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1RhZ2dlZEFycmF5U3RvcmFnZVB0ci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBXVEYgew0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPg0KY2xhc3MgVGFnZ2VkQXJyYXlTdG9yYWdlUHRy
IHsNCnB1YmxpYzoNCiAgICBUYWdnZWRBcnJheVN0b3JhZ2VQdHIoKQ0KICAgICAgICA6IG1fcHRy
KHRhZ0FycmF5UHRyPFB0clR5cGU+KG51bGxwdHIsIDApKQ0KICAgIHsgfQ0KDQogICAgVGFnZ2Vk
QXJyYXlTdG9yYWdlUHRyKFB0clR5cGUqIHB0ciwgdW5zaWduZWQgbGVuZ3RoKQ0KICAgICAgICA6
IG1fcHRyKHRhZ0FycmF5UHRyKHB0ciwgbGVuZ3RoKSkNCiAgICB7IH0NCg0KICAgIFB0clR5cGUq
IGdldCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHVudGFnQXJyYXlQdHIobV9wdHIs
IGxlbmd0aCk7IH0gDQogICAgUHRyVHlwZSogZ2V0VW5zYWZlKCkgY29uc3QgeyByZXR1cm4gcmVt
b3ZlQXJyYXlQdHJUYWcobV9wdHIpOyB9DQoNCiAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBvbGRM
ZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkNCiAgICB7DQogICAgICAgIG1fcHRyID0gcmV0YWdB
cnJheVB0cihtX3B0ciwgb2xkTGVuZ3RoLCBuZXdMZW5ndGgpOw0KICAgIH0NCiAgICANCiAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFnZXRVbnNhZmUoKTsgfQ0K
DQpwcml2YXRlOg0KICAgIFB0clR5cGUqIG1fcHRyOw0KfTsNCg0KfQ0KDQp1c2luZyBXVEY6OlRh
Z2dlZEFycmF5U3RvcmFnZVB0cjsNCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQXJyYXlCdWZmZXJWaWV3LmgiDQoN
Cm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmVudW0gVHlwZWRBcnJheU1vZGUg
OiB1aW50MzJfdCB7DQogICAgDQogICAgDQogICAgDQogICAgDQoNCiAgICANCiAgICANCiAgICAN
CiAgICBGYXN0VHlwZWRBcnJheSwNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IE92ZXJzaXplVHlwZWRBcnJheSwNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IFdhc3RlZnVsVHlwZWRBcnJheSwNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIERhdGFW
aWV3TW9kZQ0KfTsNCg0KaW5saW5lIGJvb2wgaGFzQXJyYXlCdWZmZXIoVHlwZWRBcnJheU1vZGUg
bW9kZSkNCnsNCiAgICByZXR1cm4gbW9kZSA+PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7DQp9DQoNCg0K
DQoNCg0KDQoNCg0KY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7DQoNCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIHZvaWQgc3Vi
c3BhY2VGb3IoVk0mKQ0KICAgIHsNCiAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50
ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDEwOCwg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcSlNBcnJheUJ1ZmZlclZpZXcuaCIsICBfX0ZVTkNUSU9OX18gICwgMTMxICk7IH0gd2hpbGUg
KGZhbHNlKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZhc3RTaXpl
TGltaXQgPSAxMDAwOw0KICAgIHVzaW5nIFZlY3RvclB0ciA9IENhZ2VkQmFycmllclB0cjxHaWdh
Y2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0YWdDYWdlZFB0cj47DQoNCiAgICBzdGF0aWMgdm9pZCog
bnVsbFZlY3RvclB0cigpDQogICAgew0KICAgICAgICBWZWN0b3JQdHIgbnVsbCB7IH07DQogICAg
ICAgIHJldHVybiBudWxsLnJhd0JpdHMoKTsNCiAgICB9DQogICAgDQogICAgc3RhdGljIHNpemVf
dCBzaXplT2YodWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVtZW50U2l6ZSkNCiAgICB7DQog
ICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogZWxlbWVudFNpemUg
KyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpIC0gMSkNCiAgICAgICAgICAgICYgfihzaXplb2YoRW5j
b2RlZEpTVmFsdWUpIC0gMSk7DQogICAgfQ0KDQogICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkpDQogICAgew0KICAgICAgICAoKHZv
aWQpaW5saW5lQ2FwYWNpdHkpOw0KICAgICAgICByZXR1cm4gc2l6ZW9mKEpTQXJyYXlCdWZmZXJW
aWV3KTsNCiAgICB9DQogICAgICAgIA0KcHJvdGVjdGVkOg0KICAgIGNsYXNzIENvbnN0cnVjdGlv
bkNvbnRleHQgew0KICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KGNvbnN0IENvbnN0cnVjdGlv
bkNvbnRleHQmKSA9IGRlbGV0ZTsgQ29uc3RydWN0aW9uQ29udGV4dCYgb3BlcmF0b3I9KGNvbnN0
IENvbnN0cnVjdGlvbkNvbnRleHQmKSA9IGRlbGV0ZTs7DQogICAgICAgIA0KICAgIHB1YmxpYzoN
CiAgICAgICAgZW51bSBJbml0aWFsaXphdGlvbk1vZGUgeyBaZXJvRmlsbCwgRG9udEluaXRpYWxp
emUgfTsNCiAgICAgICAgDQogICAgICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBDb25zdHJ1Y3Rp
b25Db250ZXh0KFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QgbGVuZ3RoLCB1aW50MzJfdCBlbGVt
ZW50U2l6ZSwgSW5pdGlhbGl6YXRpb25Nb2RlID0gWmVyb0ZpbGwpOw0KICAgICAgICANCiAgICAg
ICAgDQogICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVu
Z3RoLCB2b2lkKiB2ZWN0b3IpOw0KICAgICAgICANCiAgICAgICAgX19kZWNsc3BlYyhkbGxleHBv
cnQpIENvbnN0cnVjdGlvbkNvbnRleHQoDQogICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwNCiAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCk7DQogICAgICAgIA0KICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0
YVZpZXcgfTsNCiAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgNCiAgICAgICAgICAgIFN0cnVj
dHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwNCiAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpOw0KICAgICAgICANCiAgICAgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7IH0NCiAgICAgICAg
DQogICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1
cmU7IH0NCiAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0
TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQ0KICAgICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2xlbmd0aDsgfQ0KICAgICAgICBUeXBlZEFycmF5TW9kZSBtb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RlOyB9DQogICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5KCkgY29uc3Qg
eyByZXR1cm4gbV9idXR0ZXJmbHk7IH0NCiAgICAgICAgDQogICAgcHJpdmF0ZToNCiAgICAgICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsNCiAgICAgICAgdXNpbmcgVmVjdG9yVHlwZSA9IENhZ2Vk
UHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPjsNCiAgICAgICAgVmVj
dG9yVHlwZSBtX3ZlY3RvcjsNCiAgICAgICAgdWludDMyX3QgbV9sZW5ndGg7DQogICAgICAgIFR5
cGVkQXJyYXlNb2RlIG1fbW9kZTsNCiAgICAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsNCiAg
ICB9Ow0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU0FycmF5QnVmZmVyVmlldyhW
TSYsIENvbnN0cnVjdGlvbkNvbnRleHQmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOw0KICAgIA0KICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7DQoNCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7DQogICAgDQpwdWJsaWM6DQogICAgVHlwZWRBcnJheU1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kZTsgfQ0KICAgIGJvb2wgaGFzQXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBK
U0M6Omhhc0FycmF5QnVmZmVyKG1vZGUoKSk7IH0NCiAgICANCiAgICBib29sIGlzU2hhcmVkKCk7
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEFycmF5QnVmZmVyKiB1bnNoYXJlZEJ1ZmZlcigp
Ow0KICAgIGlubGluZSBBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRCdWZmZXIoKTsNCiAgICBK
U0FycmF5QnVmZmVyKiB1bnNoYXJlZEpTQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpOw0KICAgIEpTQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkSlNCdWZmZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCk7DQogICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdW5zaGFy
ZWRJbXBsKCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFJlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+IHBvc3NpYmx5U2hhcmVkSW1wbCgpOw0KICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJu
IGhhc0FycmF5QnVmZmVyKCkgJiYgIWhhc1ZlY3RvcigpOyB9DQogICAgdm9pZCBuZXV0ZXIoKTsN
Cg0KICAgIGJvb2wgaGFzVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gISFtX3ZlY3RvcjsgfQ0KICAg
IHZvaWQqIHZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbChsZW5n
dGgoKSk7IH0NCiAgICANCiAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZU9mZnNldCgpOw0KICAgIGlu
bGluZSBPcHRpb25hbDx1bnNpZ25lZD4gYnl0ZU9mZnNldENvbmN1cnJlbnRseSgpOw0KDQogICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0NCg0KICAgIHByb3Rl
Y3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZv
IHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8q
IGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KICAgIA0KICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZWZWN0b3IoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYo
cmVpbnRlcnByZXRfY2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KDB4NDAwMCktPm1fdmVjdG9yKSkg
LSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0
dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQXJy
YXlCdWZmZXJWaWV3Kj4oMHg0MDAwKS0+bV9sZW5ndGgpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mTW9kZSgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0
cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oMHg0MDAwKS0+
bV9tb2RlKSkgLSAweDQwMDApOyB9DQogICAgDQogICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOw0KDQpwcml2YXRlOg0KICAgIGVudW0gUmVx
dWVzdGVyIHsgTXV0YXRvciwgQ29uY3VycmVudFRocmVhZCB9Ow0KICAgIHRlbXBsYXRlPFJlcXVl
c3RlciwgdHlwZW5hbWUgUmVzdWx0VHlwZT4gUmVzdWx0VHlwZSBieXRlT2Zmc2V0SW1wbCgpOw0K
ICAgIHRlbXBsYXRlPFJlcXVlc3Rlcj4gQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVy
SW1wbCgpOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEFycmF5QnVmZmVyKiBzbG93RG93
bkFuZFdhc3RlTWVtb3J5KCk7DQogICAgc3RhdGljIHZvaWQgZmluYWxpemUoSlNDZWxsKik7DQoN
CnByb3RlY3RlZDoNCiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KDQog
ICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKTsNCg0KICAgIFZlY3Rv
clB0ciBtX3ZlY3RvcjsNCiAgICB1aW50MzJfdCBtX2xlbmd0aDsNCiAgICBUeXBlZEFycmF5TW9k
ZSBtX21vZGU7DQp9Ow0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KX19kZWNsc3BlYyhkbGxl
eHBvcnQpIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6VHlwZWRBcnJheU1v
ZGUpOw0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXEpTRGF0YVZpZXcuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcRGF0YVZpZXcuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvRmxpcEJ5dGVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgV1RGIHsN
Cg0KaW5saW5lIGJvb2wgbmVlZFRvRmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4oYm9vbCBsaXR0bGVF
bmRpYW4pDQp7DQoNCg0KI2xpbmUgMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRf
YW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0ZsaXBCeXRlcy5oIg0KICAgIHJldHVybiAhbGl0dGxl
RW5kaWFuOw0KI2xpbmUgMzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRc
XFdURlxcSGVhZGVyc1xcd3RmL0ZsaXBCeXRlcy5oIg0KfQ0KDQppbmxpbmUgdWludDE2X3QgZmxp
cEJ5dGVzKHVpbnQxNl90IHZhbHVlKQ0Kew0KICAgIHJldHVybiAoKHZhbHVlICYgMHgwMGZmKSA8
PCA4KQ0KICAgICAgICB8ICgodmFsdWUgJiAweGZmMDApID4+IDgpOw0KfQ0KDQppbmxpbmUgdWlu
dDMyX3QgZmxpcEJ5dGVzKHVpbnQzMl90IHZhbHVlKQ0Kew0KICAgIHJldHVybiAoKHZhbHVlICYg
MHgwMDAwMDBmZikgPDwgMjQpDQogICAgICAgIHwgKCh2YWx1ZSAmIDB4MDAwMGZmMDApIDw8IDgp
DQogICAgICAgIHwgKCh2YWx1ZSAmIDB4MDBmZjAwMDApID4+IDgpDQogICAgICAgIHwgKCh2YWx1
ZSAmIDB4ZmYwMDAwMDApID4+IDI0KTsNCn0NCg0KaW5saW5lIHVpbnQ2NF90IGZsaXBCeXRlcyh1
aW50NjRfdCB2YWx1ZSkNCnsNCiAgICByZXR1cm4gKCh2YWx1ZSAmIDB4MDAwMDAwMDAwMDAwMDBm
ZnVsbCkgPDwgNTYpDQogICAgICAgIHwgKCh2YWx1ZSAmIDB4MDAwMDAwMDAwMDAwZmYwMHVsbCkg
PDwgNDApDQogICAgICAgIHwgKCh2YWx1ZSAmIDB4MDAwMDAwMDAwMGZmMDAwMHVsbCkgPDwgMjQp
DQogICAgICAgIHwgKCh2YWx1ZSAmIDB4MDAwMDAwMDBmZjAwMDAwMHVsbCkgPDwgOCkNCiAgICAg
ICAgfCAoKHZhbHVlICYgMHgwMDAwMDBmZjAwMDAwMDAwdWxsKSA+PiA4KQ0KICAgICAgICB8ICgo
dmFsdWUgJiAweDAwMDBmZjAwMDAwMDAwMDB1bGwpID4+IDI0KQ0KICAgICAgICB8ICgodmFsdWUg
JiAweDAwZmYwMDAwMDAwMDAwMDB1bGwpID4+IDQwKQ0KICAgICAgICB8ICgodmFsdWUgJiAweGZm
MDAwMDAwMDAwMDAwMDB1bGwpID4+IDU2KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmlu
bGluZSBUIGZsaXBCeXRlcyhUIHZhbHVlKQ0Kew0KICAgIGlmIChzaXplb2YodmFsdWUpID09IDEp
DQogICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICBpZiAoc2l6ZW9mKHZhbHVlKSA9PSAyKSB7DQog
ICAgICAgIHVuaW9uIHsNCiAgICAgICAgICAgIFQgb3JpZ2luYWw7DQogICAgICAgICAgICB1aW50
MTZfdCB3b3JkOw0KICAgICAgICB9IHU7DQogICAgICAgIHUub3JpZ2luYWwgPSB2YWx1ZTsNCiAg
ICAgICAgdS53b3JkID0gZmxpcEJ5dGVzKHUud29yZCk7DQogICAgICAgIHJldHVybiB1Lm9yaWdp
bmFsOw0KICAgIH0NCiAgICBpZiAoc2l6ZW9mKHZhbHVlKSA9PSA0KSB7DQogICAgICAgIHVuaW9u
IHsNCiAgICAgICAgICAgIFQgb3JpZ2luYWw7DQogICAgICAgICAgICB1aW50MzJfdCB3b3JkOw0K
ICAgICAgICB9IHU7DQogICAgICAgIHUub3JpZ2luYWwgPSB2YWx1ZTsNCiAgICAgICAgdS53b3Jk
ID0gZmxpcEJ5dGVzKHUud29yZCk7DQogICAgICAgIHJldHVybiB1Lm9yaWdpbmFsOw0KICAgIH0N
CiAgICBpZiAoc2l6ZW9mKHZhbHVlKSA9PSA4KSB7DQogICAgICAgIHVuaW9uIHsNCiAgICAgICAg
ICAgIFQgb3JpZ2luYWw7DQogICAgICAgICAgICB1aW50NjRfdCB3b3JkOw0KICAgICAgICB9IHU7
DQogICAgICAgIHUub3JpZ2luYWwgPSB2YWx1ZTsNCiAgICAgICAgdS53b3JkID0gZmxpcEJ5dGVz
KHUud29yZCk7DQogICAgICAgIHJldHVybiB1Lm9yaWdpbmFsOw0KICAgIH0NCiAgICBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oOTcsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0
XFxXVEZcXEhlYWRlcnNcXHd0Zi9GbGlwQnl0ZXMuaCIsICBfX0ZVTkNUSU9OX18gICwgMTMyICk7
IH0gd2hpbGUgKGZhbHNlKTsNCiAgICByZXR1cm4gVCgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPg0KaW5saW5lIFQgZmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4oVCB2YWx1ZSwgYm9vbCBsaXR0
bGVFbmRpYW4pDQp7DQogICAgaWYgKG5lZWRUb0ZsaXBCeXRlc0lmTGl0dGxlRW5kaWFuKGxpdHRs
ZUVuZGlhbikpDQogICAgICAgIHJldHVybiBmbGlwQnl0ZXModmFsdWUpOw0KICAgIHJldHVybiB2
YWx1ZTsNCn0NCg0KfSANCg0KdXNpbmcgV1RGOjpuZWVkVG9GbGlwQnl0ZXNJZkxpdHRsZUVuZGlh
bjsNCnVzaW5nIFdURjo6ZmxpcEJ5dGVzOw0KdXNpbmcgV1RGOjpmbGlwQnl0ZXNJZkxpdHRsZUVu
ZGlhbjsNCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXERhdGFWaWV3LmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFz
cyBEYXRhVmlldyBmaW5hbCA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgew0KcHVibGljOg0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVmUHRy
PEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOw0K
ICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOw0K
ICAgIA0KICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIFR5cGVEYXRhVmlldzsNCiAgICB9DQoNCiAgICBKU0FycmF5QnVmZmVyVmll
dyogd3JhcChKU0dsb2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0KikgZmluYWw7DQogICAgDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4NCiAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wg
bGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQ0KICAgIHsNCiAgICAgICAgaWYg
KHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKG9mZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5n
dGgoKSkgew0KICAgICAgICAgICAgICAgICpzdGF0dXMgPSBmYWxzZTsNCiAgICAgICAgICAgICAg
ICByZXR1cm4gVCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgKnN0YXR1cyA9IHRydWU7
DQogICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgZG8geyBpZiAoKCEob2Zmc2V0ICsgc2l6ZW9m
KFQpIDw9IGJ5dGVMZW5ndGgoKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUo
KTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNTUsICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXERhdGFW
aWV3LmgiLCAgX19GVU5DVElPTl9fICAsIDEzMyApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOw0KICAgICAgICByZXR1cm4gZmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4oDQogICAgICAgICAg
ICAqcmVpbnRlcnByZXRfY2FzdDxUKj4oc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYmFzZUFkZHJl
c3MuZ2V0KGJ5dGVMZW5ndGgoKSkpICsgb2Zmc2V0KSwNCiAgICAgICAgICAgIGxpdHRsZUVuZGlh
bik7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+DQogICAgVCByZWFkKHVu
c2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRy
KQ0KICAgIHsNCiAgICAgICAgVCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0
LCBsaXR0bGVFbmRpYW4sIHN0YXR1cyk7DQogICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMp
DQogICAgICAgICAgICBvZmZzZXQgKz0gc2l6ZW9mKFQpOw0KICAgICAgICByZXR1cm4gcmVzdWx0
Ow0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KICAgIHZvaWQgc2V0KHVu
c2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9
IG51bGxwdHIpDQogICAgew0KICAgICAgICBpZiAoc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAo
b2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0aCgpKSB7DQogICAgICAgICAgICAgICAgKnN0
YXR1cyA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICpzdGF0dXMgPSB0cnVlOw0KICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgIGRv
IHsgaWYgKCghKG9mZnNldCArIHNpemVvZihUKSA8PSBieXRlTGVuZ3RoKCkpKSkgZG8geyBXVEY6
OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZD
cmFzaFdpdGhJbmZvKDgwLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxEYXRhVmlldy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxMzQgKTsg
fSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8
VCo+KHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2Jhc2VBZGRyZXNzLmdldChieXRlTGVuZ3RoKCkp
KSArIG9mZnNldCkgPQ0KICAgICAgICAgICAgZmxpcEJ5dGVzSWZMaXR0bGVFbmRpYW4odmFsdWUs
IGxpdHRsZUVuZGlhbik7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIERhdGFWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7
DQp9Ow0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNEYXRhVmlldy5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQpjbGFzcyBKU0RhdGFWaWV3IGZpbmFsIDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsN
CnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNBcnJheUJ1ZmZlclZpZXc7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJv
cGVydHlOYW1lczsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUg
PSAxOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1v
ZGU+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0K
ICAgICAgICByZXR1cm4gdm0uZGF0YVZpZXdTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKA0KICAgICAgICBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwNCiAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7DQogICAgDQogICAg
DQogICAgDQogICAgc3RhdGljIEpTRGF0YVZpZXcqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIHN0YXRpYyBKU0Rh
dGFWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5n
dGgpOw0KICAgIGJvb2wgc2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0Kiwg
dW5zaWduZWQsIHVuc2lnbmVkIGxlbmd0aCk7DQogICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9i
amVjdCosIHVuc2lnbmVkLCBKU1ZhbHVlKTsNCiAgICANCiAgICBBcnJheUJ1ZmZlciogcG9zc2li
bHlTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQ0KICAgIEFycmF5QnVm
ZmVyKiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0DQogICAgew0KICAgICAgICBkbyB7IGlmICgoISgh
bV9idWZmZXItPmlzU2hhcmVkKCkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBl
KCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDYwLCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0Rh
dGFWaWV3LmgiLCAgX19GVU5DVElPTl9fICAsIDEzNSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOw0KICAgICAgICByZXR1cm4gbV9idWZmZXI7DQogICAgfQ0KICAgIA0KICAgIFJlZlB0
cjxEYXRhVmlldz4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsNCiAgICBSZWZQdHI8RGF0YVZp
ZXc+IHVuc2hhcmVkVHlwZWRJbXBsKCk7DQogICAgDQogICAgc3RhdGljIGNvbnN0IFR5cGVkQXJy
YXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IFR5cGVEYXRhVmlldzsNCg0KICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBwcm90b3R5cGUpOw0KICAgIA0KICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29u
c3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9
Ow0KDQpwcml2YXRlOg0KICAgIEpTRGF0YVZpZXcoVk0mLCBDb25zdHJ1Y3Rpb25Db250ZXh0Jiwg
QXJyYXlCdWZmZXIqKTsNCg0KICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAg
ICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KICAgIHN0YXRpYyBib29sIGRlZmluZU93blBy
b3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOw0KICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxl
dGVQcm9wZXJ0eVNsb3QmKTsNCg0KICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOw0KDQogICAgQXJyYXlCdWZmZXIqIG1fYnVmZmVyOw0KfTsNCg0KfSAN
CiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KaW5saW5lIGJvb2wgSlNBcnJheUJ1ZmZlclZpZXc6OmlzU2hhcmVkKCkNCnsNCiAgICBz
d2l0Y2ggKG1fbW9kZSkgew0KICAgIGNhc2UgV2FzdGVmdWxUeXBlZEFycmF5Og0KICAgICAgICBy
ZXR1cm4gZXhpc3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpLT5pc1NoYXJlZCgpOw0KICAgIGNhc2Ug
RGF0YVZpZXdNb2RlOg0KICAgICAgICByZXR1cm4ganNDYXN0PEpTRGF0YVZpZXcqPih0aGlzKS0+
cG9zc2libHlTaGFyZWRCdWZmZXIoKS0+aXNTaGFyZWQoKTsNCiAgICBkZWZhdWx0Og0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZTxKU0FycmF5QnVmZmVyVmlldzo6
UmVxdWVzdGVyIHJlcXVlc3Rlcj4NCmlubGluZSBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZp
ZXc6OnBvc3NpYmx5U2hhcmVkQnVmZmVySW1wbCgpDQp7DQogICAgaWYgKHJlcXVlc3RlciA9PSBD
b25jdXJyZW50VGhyZWFkKQ0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICBzd2l0Y2ggKG1fbW9k
ZSkgew0KICAgIGNhc2UgV2FzdGVmdWxUeXBlZEFycmF5Og0KICAgICAgICByZXR1cm4gZXhpc3Rp
bmdCdWZmZXJJbkJ1dHRlcmZseSgpOw0KICAgIGNhc2UgRGF0YVZpZXdNb2RlOg0KICAgICAgICBy
ZXR1cm4ganNDYXN0PEpTRGF0YVZpZXcqPih0aGlzKS0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsN
CiAgICBjYXNlIEZhc3RUeXBlZEFycmF5Og0KICAgIGNhc2UgT3ZlcnNpemVUeXBlZEFycmF5Og0K
ICAgICAgICByZXR1cm4gc2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSgpOw0KICAgIH0NCiAgICAoKHZv
aWQpMCk7DQogICAgcmV0dXJuIG51bGxwdHI7DQp9DQoNCmlubGluZSBBcnJheUJ1ZmZlciogSlNB
cnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkQnVmZmVyKCkNCnsNCiAgICByZXR1cm4gcG9z
c2libHlTaGFyZWRCdWZmZXJJbXBsPE11dGF0b3I+KCk7DQp9DQoNCmlubGluZSBBcnJheUJ1ZmZl
ciogSlNBcnJheUJ1ZmZlclZpZXc6OmV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHkoKQ0Kew0KICAg
ICgodm9pZCkwKTsNCiAgICByZXR1cm4gYnV0dGVyZmx5KCktPmluZGV4aW5nSGVhZGVyKCktPmFy
cmF5QnVmZmVyKCk7DQp9DQoNCmlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5
QnVmZmVyVmlldzo6dW5zaGFyZWRJbXBsKCkNCnsNCiAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiByZXN1bHQgPSBwb3NzaWJseVNoYXJlZEltcGwoKTsNCiAgICBkbyB7IGlmICgoISghcmVzdWx0
LT5pc1NoYXJlZCgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21w
aWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg3OSwgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNBcnJheUJ1ZmZl
clZpZXdJbmxpbmVzLmgiLCAgX19GVU5DVElPTl9fICAsIDEzNiApOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPEpTQXJyYXlC
dWZmZXJWaWV3OjpSZXF1ZXN0ZXIgcmVxdWVzdGVyLCB0eXBlbmFtZSBSZXN1bHRUeXBlPg0KaW5s
aW5lIFJlc3VsdFR5cGUgSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkNCnsNCiAg
ICBpZiAoIWhhc0FycmF5QnVmZmVyKCkpDQogICAgICAgIHJldHVybiAwOw0KDQogICAgaWYgKHJl
cXVlc3RlciA9PSBDb25jdXJyZW50VGhyZWFkKQ0KICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2Uo
KTsNCg0KICAgIEFycmF5QnVmZmVyKiBidWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlckltcGw8
cmVxdWVzdGVyPigpOw0KICAgICgodm9pZCkwKTsNCiAgICBpZiAocmVxdWVzdGVyID09IE11dGF0
b3IpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQog
ICAgcHRyZGlmZl90IGRlbHRhID0NCiAgICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih2ZWN0
b3IoKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpOw0KDQogICAgdW5z
aWduZWQgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbHRhKTsNCiAgICBpZiAocmVx
dWVzdGVyID09IE11dGF0b3IpDQogICAgICAgICgodm9pZCkwKTsNCiAgICBlbHNlIHsNCiAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4ocmVzdWx0KSAhPSBkZWx0YSkNCiAgICAgICAg
ICAgIHJldHVybiB7IH07DQogICAgfQ0KDQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KaW5saW5l
IHVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KCkNCnsNCiAgICByZXR1cm4g
Ynl0ZU9mZnNldEltcGw8TXV0YXRvciwgdW5zaWduZWQ+KCk7DQp9DQoNCmlubGluZSBPcHRpb25h
bDx1bnNpZ25lZD4gSlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRDb25jdXJyZW50bHkoKQ0K
ew0KICAgIHJldHVybiBieXRlT2Zmc2V0SW1wbDxDb25jdXJyZW50VGhyZWFkLCBPcHRpb25hbDx1
bnNpZ25lZD4+KCk7DQp9DQoNCmlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5
QnVmZmVyVmlldzo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkNCnsNCiAgICBpZiAo
SlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3
Kj4odm0sIHZhbHVlKSkgew0KICAgICAgICBpZiAoIXZpZXctPmlzU2hhcmVkKCkpDQogICAgICAg
ICAgICByZXR1cm4gdmlldy0+dW5zaGFyZWRJbXBsKCk7DQogICAgfQ0KICAgIHJldHVybiBudWxs
cHRyOw0KfQ0KDQp9IA0KI2xpbmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSW5saW5lcy5oIg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NK
U1ZhbHVlSW5saW5lcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDYXRjaFNjb3BlLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQogICAgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDYXRjaFNjb3BlLmgiDQoNCmNsYXNzIENhdGNo
U2NvcGUgOiBwdWJsaWMgRXhjZXB0aW9uU2NvcGUgew0KcHVibGljOg0KICAgIF9fZm9yY2Vpbmxp
bmUgQ2F0Y2hTY29wZShWTSYgdm0pDQogICAgICAgIDogRXhjZXB0aW9uU2NvcGUodm0pDQogICAg
eyB9DQogICAgQ2F0Y2hTY29wZShjb25zdCBDYXRjaFNjb3BlJikgPSBkZWxldGU7DQogICAgQ2F0
Y2hTY29wZShDYXRjaFNjb3BlJiYpID0gZGVmYXVsdDsNCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9p
ZCBjbGVhckV4Y2VwdGlvbigpIHsgbV92bS5jbGVhckV4Y2VwdGlvbigpOyB9DQp9Ow0KDQoNCg0K
DQojbGluZSA3MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxDYXRjaFNjb3BlLmgiDQoNCg0KDQoNCg0KDQoNCg0KfSANCiNsaW5lIDI5
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXEpTQ0pTVmFsdWVJbmxpbmVzLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEVycm9yLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQ2FsbEZyYW1lOw0KY2xhc3MgVk07
DQpjbGFzcyBKU0dsb2JhbE9iamVjdDsNCmNsYXNzIEpTT2JqZWN0Ow0KY2xhc3MgU291cmNlQ29k
ZTsNCmNsYXNzIFN0cnVjdHVyZTsNCg0KSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIpOw0KSlNP
YmplY3QqIGNyZWF0ZUV2YWxFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIEVy
cm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyKTsNCkpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBw
ZW5kZXIpOw0KSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIpOw0KSlNPYmplY3Qq
IGNyZWF0ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwgRXJyb3JJ
bnN0YW5jZTo6U291cmNlQXBwZW5kZXIpOw0KSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVy
LCBSdW50aW1lVHlwZSk7DQpKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7DQpKU09iamVj
dCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmLCBFcnJvcklu
c3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7DQoNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2Jq
ZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOw0KX19kZWNs
c3BlYyhkbGxleHBvcnQpIEpTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBTdHJpbmcmKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdCogY3JlYXRl
UmFuZ2VFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOw0KX19kZWNsc3BlYyhk
bGxleHBvcnQpIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFN0cmluZyYpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTT2JqZWN0KiBjcmVhdGVT
eW50YXhFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOw0KX19kZWNsc3BlYyhk
bGxleHBvcnQpIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsNCl9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU3RyaW5nJik7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3QqIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7DQpfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJik7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3QqIGNyZWF0ZU91dE9m
TWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU09i
amVjdCogY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYpOw0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiwgRXJyb3JUeXBlLCBjb25zdCBTdHJpbmcmKTsNCl9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBFcnJvclR5cGVXaXRo
RXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmKTsNCg0KSlNPYmplY3QqIGNyZWF0ZUdldHRlclR5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOw0KDQpzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRTdGFja1RyYWNlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBK
U09iamVjdCosIGJvb2wgdXNlQ3VycmVudEZyYW1lKTsNCnZvaWQgZ2V0Qnl0ZWNvZGVJbmRleChW
TSYsIENhbGxGcmFtZSosIFZlY3RvcjxTdGFja0ZyYW1lPiosIENhbGxGcmFtZSomLCBCeXRlY29k
ZUluZGV4Jik7DQpib29sIGdldExpbmVDb2x1bW5BbmRTb3VyY2UoVmVjdG9yPFN0YWNrRnJhbWU+
KiBzdGFja1RyYWNlLCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbiwgU3RyaW5nJiBz
b3VyY2VVUkwpOw0KYm9vbCBhZGRFcnJvckluZm8oVk0mLCBWZWN0b3I8U3RhY2tGcmFtZT4qLCBK
U09iamVjdCopOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgYWRkRXJyb3JJbmZvKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqLCBib29sKTsNCkpTT2JqZWN0KiBhZGRFcnJvckluZm8oVk0m
LCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7DQoNCg0KDQoN
Cl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBFeGNlcHRpb24qIHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwg
Y29uc3QgY2hhciogY29uc3RydWN0b3JOYW1lKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBFeGNl
cHRpb24qIHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOw0KX19k
ZWNsc3BlYyhkbGxleHBvcnQpIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqLCBUaHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7DQpfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRo
cm93U2NvcGUmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7DQpfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dT
Y29wZSYpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIEV4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJv
cihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7DQppbmxpbmUgRXhjZXB0aW9uKiB0aHJvd1JhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSB7IHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSk7IH0NCg0KX19kZWNsc3BlYyhkbGxl
eHBvcnQpIEV4Y2VwdGlvbiogdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBU
aHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOw0KX19kZWNsc3BlYyhkbGxl
eHBvcnQpIEpTVmFsdWUgdGhyb3dET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqLCBUaHJvd1Njb3BlJiwgY29uc3QgQ2xhc3NJbmZvKiwgUHJvcGVydHlOYW1lKTsNCg0K
DQppbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGV4Y2VwdGlvbik7IH0NCmlubGluZSBFbmNvZGVkSlNWYWx1
ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYg
c2NvcGUsIEpTVmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvcikpOyB9DQppbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUm
IHNjb3BlLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxP
YmplY3QsIGVycm9yTWVzc2FnZSkpKTsgfQ0KaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1U
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUp
IHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKSk7IH0NCmlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJy
b3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0NCmlubGluZSBFbmNvZGVkSlNWYWx1ZSB0
aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUm
IHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9
DQppbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVJhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9DQppbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dW
TUdldHRlclR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3Bl
JiBzY29wZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0dldHRlclR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3Nh
Z2UpKTsgfQ0KaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJU
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpKTsgfQ0KDQp9IA0K
I2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNDSlNWYWx1ZUlubGluZXMuaCINCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNCaWdJ
bnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51
bWJlcnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFNpZ25lZEludD4NCmNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFNpZ25lZEludCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludGVncmFsPFNpZ25lZEludD46OnZhbHVl
ICYmIHN0ZDo6aXNfc2lnbmVkPFNpZ25lZEludD46OnZhbHVlPj4gew0KcHVibGljOg0KICAgIFN0
cmluZ1R5cGVBZGFwdGVyKFNpZ25lZEludCBudW1iZXIpDQogICAgICAgIDogbV9udW1iZXIgeyBu
dW1iZXIgfQ0KICAgIHsNCiAgICB9DQoNCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBsZW5ndGhPZk51bWJlckFzU3RyaW5nU2lnbmVkKG1fbnVtYmVyKTsgfQ0KICAgIGJvb2wg
aXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29u
c3QgeyB3cml0ZU51bWJlclRvQnVmZmVyU2lnbmVkKG1fbnVtYmVyLCBkZXN0aW5hdGlvbik7IH0N
Cg0KcHJpdmF0ZToNCiAgICBTaWduZWRJbnQgbV9udW1iZXI7DQp9Ow0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBVbnNpZ25lZEludD4NCmNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFVuc2lnbmVkSW50LCB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdyYWw8VW5zaWduZWRJbnQ+Ojp2
YWx1ZSAmJiAhc3RkOjppc19zaWduZWQ8VW5zaWduZWRJbnQ+Ojp2YWx1ZT4+IHsNCnB1YmxpYzoN
CiAgICBTdHJpbmdUeXBlQWRhcHRlcihVbnNpZ25lZEludCBudW1iZXIpDQogICAgICAgIDogbV9u
dW1iZXIgeyBudW1iZXIgfQ0KICAgIHsNCiAgICB9DQoNCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBsZW5ndGhPZk51bWJlckFzU3RyaW5nVW5zaWduZWQobV9udW1iZXIpOyB9
DQogICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9DQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3Rp
bmF0aW9uKSBjb25zdCB7IHdyaXRlTnVtYmVyVG9CdWZmZXJVbnNpZ25lZChtX251bWJlciwgZGVz
dGluYXRpb24pOyB9DQoNCnByaXZhdGU6DQogICAgVW5zaWduZWRJbnQgbV9udW1iZXI7DQp9Ow0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBGbG9hdGluZ1BvaW50Pg0KY2xhc3MgU3RyaW5nVHlwZUFkYXB0
ZXI8RmxvYXRpbmdQb2ludCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Zsb2F0
aW5nX3BvaW50PEZsb2F0aW5nUG9pbnQ+Ojp2YWx1ZT4+IHsNCnB1YmxpYzoNCiAgICBTdHJpbmdU
eXBlQWRhcHRlcihGbG9hdGluZ1BvaW50IG51bWJlcikNCiAgICB7DQogICAgICAgIG51bWJlclRv
U3RyaW5nKG51bWJlciwgbV9idWZmZXIpOw0KICAgICAgICBtX2xlbmd0aCA9IHN0ZDo6c3RybGVu
KCZtX2J1ZmZlclswXSk7DQogICAgfQ0KDQogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0NCiAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0NCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdyaXRlVG8oQ2hh
cmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0IHsgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3Rl
cnMoZGVzdGluYXRpb24sIGJ1ZmZlcigpLCBtX2xlbmd0aCk7IH0NCg0KcHJpdmF0ZToNCiAgICBj
b25zdCBMQ2hhciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCZtX2J1ZmZlclswXSk7IH0NCg0KICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIG1f
YnVmZmVyOw0KICAgIHVuc2lnbmVkIG1fbGVuZ3RoOw0KfTsNCg0KY2xhc3MgRm9ybWF0dGVkTnVt
YmVyIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsg
cmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6
ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJu
IDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCog
cCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90
TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0g
dXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hl
cmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIHN0
YXRpYyBGb3JtYXR0ZWROdW1iZXIgZml4ZWRQcmVjaXNpb24oZG91YmxlIG51bWJlciwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzID0gNiwgVHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kg
dHJhaWxpbmdaZXJvc1RydW5jYXRpbmdQb2xpY3kgPSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MpDQog
ICAgew0KICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVyOw0KICAgICAgICBu
dW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKG51bWJlciwgc2lnbmlmaWNhbnRGaWd1cmVzLCBu
dW1iZXJGb3JtYXR0ZXIubV9idWZmZXIsIHRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID09
IFRydW5jYXRlVHJhaWxpbmdaZXJvcyk7DQogICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0
aCA9IHN0ZDo6c3RybGVuKCZudW1iZXJGb3JtYXR0ZXIubV9idWZmZXJbMF0pOw0KICAgICAgICBy
ZXR1cm4gbnVtYmVyRm9ybWF0dGVyOw0KICAgIH0NCg0KICAgIHN0YXRpYyBGb3JtYXR0ZWROdW1i
ZXIgZml4ZWRXaWR0aChkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQ0KICAg
IHsNCiAgICAgICAgRm9ybWF0dGVkTnVtYmVyIG51bWJlckZvcm1hdHRlcjsNCiAgICAgICAgbnVt
YmVyVG9GaXhlZFdpZHRoU3RyaW5nKG51bWJlciwgZGVjaW1hbFBsYWNlcywgbnVtYmVyRm9ybWF0
dGVyLm1fYnVmZmVyKTsNCiAgICAgICAgbnVtYmVyRm9ybWF0dGVyLm1fbGVuZ3RoID0gc3RkOjpz
dHJsZW4oJm51bWJlckZvcm1hdHRlci5tX2J1ZmZlclswXSk7DQogICAgICAgIHJldHVybiBudW1i
ZXJGb3JtYXR0ZXI7DQogICAgfQ0KDQogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0NCiAgICBjb25zdCBMQ2hhciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2J1ZmZlclswXSk7IH0NCg0KcHJpdmF0
ZToNCiAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBtX2J1ZmZlcjsNCiAgICB1bnNpZ25lZCBtX2xl
bmd0aDsNCn07DQoNCnRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8Rm9ybWF0dGVk
TnVtYmVyPiB7DQpwdWJsaWM6DQogICAgU3RyaW5nVHlwZUFkYXB0ZXIoY29uc3QgRm9ybWF0dGVk
TnVtYmVyJiBudW1iZXIpDQogICAgICAgIDogbV9udW1iZXIgeyBudW1iZXIgfQ0KICAgIHsNCiAg
ICB9DQoNCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX251bWJlci5sZW5n
dGgoKTsgfQ0KICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQ0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBl
KiBkZXN0aW5hdGlvbikgY29uc3QgeyBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5h
dGlvbiwgbV9udW1iZXIuYnVmZmVyKCksIG1fbnVtYmVyLmxlbmd0aCgpKTsgfQ0KDQpwcml2YXRl
Og0KICAgIGNvbnN0IEZvcm1hdHRlZE51bWJlciYgbV9udW1iZXI7DQp9Ow0KDQp9DQoNCnVzaW5n
IFdURjo6Rm9ybWF0dGVkTnVtYmVyOw0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIg0K
DQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBTdHJp
bmdCdWlsZGVyIHsNCiAgICANCiAgICBTdHJpbmdCdWlsZGVyKGNvbnN0IFN0cmluZ0J1aWxkZXIm
KSA9IGRlbGV0ZTsgU3RyaW5nQnVpbGRlciYgb3BlcmF0b3I9KGNvbnN0IFN0cmluZ0J1aWxkZXIm
KSA9IGRlbGV0ZTs7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lk
KiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkg
eyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6
V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsg
OjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0
aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190
aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsNCg0KcHVibGlj
Og0KICAgIGVudW0gY2xhc3MgT3ZlcmZsb3dIYW5kbGVyIHsNCiAgICAgICAgQ3Jhc2hPbk92ZXJm
bG93LA0KICAgICAgICBSZWNvcmRPdmVyZmxvdw0KICAgIH07DQoNCiAgICBTdHJpbmdCdWlsZGVy
KE92ZXJmbG93SGFuZGxlciBoYW5kbGVyID0gT3ZlcmZsb3dIYW5kbGVyOjpDcmFzaE9uT3ZlcmZs
b3cpDQogICAgICAgIDogbV9idWZmZXJDaGFyYWN0ZXJzOChudWxscHRyKQ0KICAgIHsNCiAgICAg
ICAgbV9sZW5ndGguc2V0U2hvdWxkQ3Jhc2hPbk92ZXJmbG93KGhhbmRsZXIgPT0gT3ZlcmZsb3dI
YW5kbGVyOjpDcmFzaE9uT3ZlcmZsb3cpOw0KICAgIH0NCiAgICBTdHJpbmdCdWlsZGVyKFN0cmlu
Z0J1aWxkZXImJikgPSBkZWZhdWx0Ow0KICAgIFN0cmluZ0J1aWxkZXImIG9wZXJhdG9yPShTdHJp
bmdCdWlsZGVyJiYpID0gZGVmYXVsdDsNCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBkaWRPdmVy
ZmxvdygpIHsgbV9sZW5ndGgub3ZlcmZsb3dlZCgpOyB9DQogICAgX19mb3JjZWlubGluZSBib29s
IGhhc092ZXJmbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aC5oYXNPdmVyZmxvd2VkKCk7
IH0NCiAgICBfX2ZvcmNlaW5saW5lIGJvb2wgY3Jhc2hlc09uT3ZlcmZsb3coKSBjb25zdCB7IHJl
dHVybiBtX2xlbmd0aC5zaG91bGRDcmFzaE9uT3ZlcmZsb3coKTsgfQ0KDQogICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIHZvaWQgYXBwZW5kQ2hhcmFjdGVycyhjb25zdCBVQ2hhciosIHVuc2lnbmVk
KTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhcHBlbmRDaGFyYWN0ZXJzKGNvbnN0
IExDaGFyKiwgdW5zaWduZWQpOw0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIGFwcGVuZENoYXJh
Y3RlcnMoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKSB7IGFwcGVuZENo
YXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5n
dGgpOyB9DQoNCiAgICB2b2lkIGFwcGVuZChjb25zdCBBdG9tU3RyaW5nJiBhdG9tU3RyaW5nKQ0K
ICAgIHsNCiAgICAgICAgYXBwZW5kKGF0b21TdHJpbmcuc3RyaW5nKCkpOw0KICAgIH0NCg0KICAg
IHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQ0KICAgIHsNCiAgICAgICAgaWYgKGhh
c092ZXJmbG93ZWQoKSkNCiAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICBpZiAoIXN0cmlu
Zy5sZW5ndGgoKSkNCiAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICANCiAgICAgICAgDQog
ICAgICAgIGlmICghbV9sZW5ndGggJiYgIW1fYnVmZmVyKSB7DQogICAgICAgICAgICBtX3N0cmlu
ZyA9IHN0cmluZzsNCiAgICAgICAgICAgIG1fbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOw0KICAg
ICAgICAgICAgbV9pczhCaXQgPSBtX3N0cmluZy5pczhCaXQoKTsNCiAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpDQogICAgICAgICAg
ICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkp
Ow0KICAgICAgICBlbHNlDQogICAgICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzKHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsNCiAgICB9DQoNCiAgICB2b2lkIGFwcGVuZChj
b25zdCBTdHJpbmdCdWlsZGVyJiBvdGhlcikNCiAgICB7DQogICAgICAgIGlmIChoYXNPdmVyZmxv
d2VkKCkpDQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIGlmIChvdGhlci5oYXNPdmVyZmxv
d2VkKCkpDQogICAgICAgICAgICByZXR1cm4gZGlkT3ZlcmZsb3coKTsNCg0KICAgICAgICBpZiAo
IW90aGVyLm1fbGVuZ3RoKQ0KICAgICAgICAgICAgcmV0dXJuOw0KDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgaWYgKCFtX2xlbmd0aCAmJiAhbV9idWZmZXIgJiYgIW90aGVyLm1fc3RyaW5n
LmlzTnVsbCgpKSB7DQogICAgICAgICAgICBtX3N0cmluZyA9IG90aGVyLm1fc3RyaW5nOw0KICAg
ICAgICAgICAgbV9sZW5ndGggPSBvdGhlci5tX2xlbmd0aDsNCiAgICAgICAgICAgIG1faXM4Qml0
ID0gb3RoZXIubV9pczhCaXQ7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAg
ICAgICBpZiAob3RoZXIuaXM4Qml0KCkpDQogICAgICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzKG90
aGVyLmNoYXJhY3RlcnM4KCksIG90aGVyLm1fbGVuZ3RoLnVuc2FmZUdldCgpKTsNCiAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhvdGhlci5jaGFyYWN0ZXJzMTYoKSwg
b3RoZXIubV9sZW5ndGgudW5zYWZlR2V0KCkpOw0KICAgIH0NCg0KICAgIHZvaWQgYXBwZW5kKFN0
cmluZ1ZpZXcgc3RyaW5nVmlldykNCiAgICB7DQogICAgICAgIGlmIChzdHJpbmdWaWV3LmlzOEJp
dCgpKQ0KICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmdWaWV3LmNoYXJhY3RlcnM4
KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBhcHBl
bmRDaGFyYWN0ZXJzKHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCksIHN0cmluZ1ZpZXcubGVuZ3Ro
KCkpOw0KICAgIH0NCg0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgYXBwZW5kKENG
U3RyaW5nUmVmKTsNCiNsaW5lIDE0MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgiDQoNCg0KI2xpbmUg
MTQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNc
XHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaCINCiAgICANCiAgICB2b2lkIGFwcGVuZFN1YnN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgg
PSBTdHJpbmc6Ok1heExlbmd0aCkNCiAgICB7DQogICAgICAgIGlmIChvZmZzZXQgPj0gc3RyaW5n
Lmxlbmd0aCgpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KDQogICAgICAgIHVuc2lnbmVkIGNsYW1w
ZWRMZW5ndGggPSBzdGQ6Om1pbihsZW5ndGgsIHN0cmluZy5sZW5ndGgoKSAtIG9mZnNldCk7DQog
ICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpDQogICAgICAgICAgICBhcHBlbmRDaGFyYWN0ZXJz
KHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBjbGFtcGVkTGVuZ3RoKTsNCiAgICAgICAg
ZWxzZQ0KICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczE2KCkg
KyBvZmZzZXQsIGNsYW1wZWRMZW5ndGgpOw0KICAgIH0NCg0KICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMpDQogICAgew0KICAgICAgICBpZiAoY2hhcmFjdGVycykNCiAgICAg
ICAgICAgIGFwcGVuZENoYXJhY3RlcnMoY2hhcmFjdGVycywgc3RybGVuKGNoYXJhY3RlcnMpKTsN
CiAgICB9DQoNCiAgICB2b2lkIGFwcGVuZENoYXJhY3RlcihVQ2hhcikgPSBkZWxldGU7DQogICAg
dm9pZCBhcHBlbmQoVUNoYXIgYykNCiAgICB7DQogICAgICAgIGlmIChoYXNPdmVyZmxvd2VkKCkp
DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fbGVuZ3Ro
LnVuc2FmZUdldDx1bnNpZ25lZD4oKTsNCiAgICAgICAgaWYgKG1fYnVmZmVyICYmIGxlbmd0aCA8
IG1fYnVmZmVyLT5sZW5ndGgoKSAmJiBtX3N0cmluZy5pc051bGwoKSkgew0KICAgICAgICAgICAg
aWYgKCFtX2lzOEJpdCkgew0KICAgICAgICAgICAgICAgIG1fYnVmZmVyQ2hhcmFjdGVyczE2W2xl
bmd0aF0gPSBjOw0KICAgICAgICAgICAgICAgIG1fbGVuZ3RoKys7DQogICAgICAgICAgICAgICAg
cmV0dXJuOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoaXNMYXRpbjEoYykpIHsN
CiAgICAgICAgICAgICAgICBtX2J1ZmZlckNoYXJhY3RlcnM4W2xlbmd0aF0gPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4oYyk7DQogICAgICAgICAgICAgICAgbV9sZW5ndGgrKzsNCiAgICAgICAgICAgICAg
ICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgYXBwZW5kQ2hhcmFj
dGVycygmYywgMSk7DQogICAgfQ0KDQogICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoTENoYXIpID0g
ZGVsZXRlOw0KICAgIHZvaWQgYXBwZW5kKExDaGFyIGMpDQogICAgew0KICAgICAgICBpZiAoaGFz
T3ZlcmZsb3dlZCgpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSBtX2xlbmd0aC51bnNhZmVHZXQ8dW5zaWduZWQ+KCk7DQogICAgICAgIGlmIChtX2J1ZmZl
ciAmJiBsZW5ndGggPCBtX2J1ZmZlci0+bGVuZ3RoKCkgJiYgbV9zdHJpbmcuaXNOdWxsKCkpIHsN
CiAgICAgICAgICAgIGlmIChtX2lzOEJpdCkNCiAgICAgICAgICAgICAgICBtX2J1ZmZlckNoYXJh
Y3RlcnM4W2xlbmd0aF0gPSBjOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIG1f
YnVmZmVyQ2hhcmFjdGVyczE2W2xlbmd0aF0gPSBjOw0KICAgICAgICAgICAgbV9sZW5ndGgrKzsN
CiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzKCZjLCAxKTsNCiAg
ICB9DQoNCiAgICB2b2lkIGFwcGVuZENoYXJhY3RlcihjaGFyKSA9IGRlbGV0ZTsNCiAgICB2b2lk
IGFwcGVuZChjaGFyIGMpDQogICAgew0KICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+
KGMpKTsNCiAgICB9DQoNCiAgICB2b2lkIGFwcGVuZENoYXJhY3RlcihVQ2hhcjMyIGMpDQogICAg
ew0KICAgICAgICBpZiAoKCh1aW50MzJfdCkoYyk8PTB4ZmZmZikpIHsNCiAgICAgICAgICAgIGFw
cGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg
ICB9DQogICAgICAgIGFwcGVuZCgoVUNoYXIpKCgoYyk+PjEwKSsweGQ3YzApKTsNCiAgICAgICAg
YXBwZW5kKChVQ2hhcikoKChjKSYweDNmZil8MHhkYzAwKSk7DQogICAgfQ0KDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHZvaWQgYXBwZW5kUXVvdGVkSlNPTlN0cmluZyhjb25zdCBTdHJpbmcm
KTsNCg0KICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50Pg0KICAgIF9fZm9yY2Vp
bmxpbmUgdm9pZCBhcHBlbmRMaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0
ZXJDb3VudF0pIHsgYXBwZW5kQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJDb3VudCAt
IDEpOyB9DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhcHBlbmROdW1iZXIoaW50
KTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQp
Ow0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGFwcGVuZE51bWJlcihsb25nKTsNCiAg
ICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhcHBlbmROdW1iZXIodW5zaWduZWQgbG9uZyk7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgYXBwZW5kTnVtYmVyKGxvbmcgbG9uZyk7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgYXBwZW5kTnVtYmVyKHVuc2lnbmVkIGxv
bmcgbG9uZyk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgYXBwZW5kTnVtYmVyKGZs
b2F0KTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBhcHBlbmROdW1iZXIoZG91Ymxl
KTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiB2b2lkIGFwcGVuZChT
dHJpbmdUeXBlcy4uLik7DQoNCiAgICBTdHJpbmcgdG9TdHJpbmcoKQ0KICAgIHsNCiAgICAgICAg
aWYgKCFtX3N0cmluZy5pc051bGwoKSkgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIG1fc3RyaW5nOw0KICAgICAgICB9
DQoNCiAgICAgICAgZG8geyBpZiAoKCEoIWhhc092ZXJmbG93ZWQoKSkpKSBkbyB7IFdURjo6aXNJ
bnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNo
V2l0aEluZm8oMjQxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RG
XFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgiLCAgX19GVU5DVElPTl9fICAsIDEz
NyApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBzaHJpbmtUb0ZpdCgp
Ow0KICAgICAgICByZWlmeVN0cmluZygpOw0KICAgICAgICByZXR1cm4gbV9zdHJpbmc7DQogICAg
fQ0KDQogICAgY29uc3QgU3RyaW5nJiB0b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgZG8geyBpZiAoKCEoIWhhc092ZXJmbG93ZWQoKSkpKSBkbyB7IFdURjo6
aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNy
YXNoV2l0aEluZm8oMjQ5LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgiLCAgX19GVU5DVElPTl9fICAs
IDEzOCApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBpZiAobV9zdHJp
bmcuaXNOdWxsKCkpDQogICAgICAgICAgICByZWlmeVN0cmluZygpOw0KICAgICAgICByZXR1cm4g
bV9zdHJpbmc7DQogICAgfQ0KDQogICAgQXRvbVN0cmluZyB0b0F0b21TdHJpbmcoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgZG8geyBpZiAoKCEoIWhhc092ZXJmbG93ZWQoKSkpKSBkbyB7IFdURjo6
aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNy
YXNoV2l0aEluZm8oMjU3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxc
V1RGXFxIZWFkZXJzXFx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgiLCAgX19GVU5DVElPTl9fICAs
IDEzOSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBpZiAoIW1fbGVu
Z3RoKQ0KICAgICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbSgpOw0KDQogICAgICAgIA0KICAgICAg
ICBpZiAoY2FuU2hyaW5rKCkpIHsNCiAgICAgICAgICAgIGlmIChpczhCaXQoKSkNCiAgICAgICAg
ICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJzOCgpLCBsZW5ndGgoKSk7DQogICAg
ICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOyAgICAg
ICAgICAgIA0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFtX3N0cmluZy5pc051bGwoKSkNCiAg
ICAgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKG1fc3RyaW5nKTsNCg0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIHJldHVybiBBdG9tU3RyaW5nKG1fYnVmZmVyLmdldCgpLCAwLCBtX2xlbmd0
aC51bnNhZmVHZXQoKSk7DQogICAgfQ0KDQogICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIGRvIHsgaWYgKCghKCFoYXNPdmVyZmxvd2VkKCkpKSkgZG8geyBXVEY6Omlz
SW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFz
aFdpdGhJbmZvKDI3NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIiwgIF9fRlVOQ1RJT05fXyAgLCAx
NDAgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgcmV0dXJuIG1fbGVu
Z3RoLnVuc2FmZUdldCgpOw0KICAgIH0NCg0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFtX2xlbmd0aDsgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcmVzZXJ2
ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsNCg0KICAgIHVuc2lnbmVkIGNhcGFjaXR5
KCkgY29uc3QNCiAgICB7DQogICAgICAgIGRvIHsgaWYgKCghKCFoYXNPdmVyZmxvd2VkKCkpKSkg
ZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFz
aCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI4NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVp
bGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIiwgIF9fRlVO
Q1RJT05fXyAgLCAxNDEgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmxlbmd0aCgpIDogbV9sZW5ndGgudW5zYWZlR2V0
KCk7DQogICAgfQ0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcmVzaXplKHVuc2ln
bmVkIG5ld1NpemUpOw0KDQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGJvb2wgY2FuU2hyaW5r
KCkgY29uc3Q7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzaHJpbmtUb0ZpdCgp
Ow0KDQogICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdA0KICAgIHsNCiAgICAg
ICAgZG8geyBpZiAoKCEoIWhhc092ZXJmbG93ZWQoKSAmJiBpIDwgbV9sZW5ndGgudW5zYWZlR2V0
PHVuc2lnbmVkPigpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21w
aWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygyOTksICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaCIsICBfX0ZVTkNUSU9OX18gICwgMTQyICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7DQogICAgICAgIGlmIChtX2lzOEJpdCkNCiAgICAgICAgICAgIHJldHVybiBjaGFyYWN0
ZXJzOCgpW2ldOw0KICAgICAgICByZXR1cm4gY2hhcmFjdGVyczE2KClbaV07DQogICAgfQ0KDQog
ICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICAgICAgaWYgKCFtX2xlbmd0aCkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRy
Ow0KICAgICAgICBpZiAoIW1fc3RyaW5nLmlzTnVsbCgpKQ0KICAgICAgICAgICAgcmV0dXJuIG1f
c3RyaW5nLmNoYXJhY3RlcnM4KCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJu
IG1fYnVmZmVyLT5jaGFyYWN0ZXJzOCgpOw0KICAgIH0NCg0KICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzMTYoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAo
IW1fbGVuZ3RoKQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAgIGlmICghbV9z
dHJpbmcuaXNOdWxsKCkpDQogICAgICAgICAgICByZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVyczE2
KCk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1fYnVmZmVyLT5jaGFyYWN0
ZXJzMTYoKTsNCiAgICB9DQogICAgDQogICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBt
X2lzOEJpdDsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBib29sIGlzQWxsQVNDSUkoKSBj
b25zdDsNCg0KICAgIHZvaWQgY2xlYXIoKQ0KICAgIHsNCiAgICAgICAgbV9sZW5ndGggPSAwOw0K
ICAgICAgICBtX3N0cmluZyA9IFN0cmluZygpOw0KICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7
DQogICAgICAgIG1fYnVmZmVyQ2hhcmFjdGVyczggPSBudWxscHRyOw0KICAgICAgICBtX2lzOEJp
dCA9IHRydWU7DQogICAgfQ0KDQogICAgdm9pZCBzd2FwKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIpDQogICAgew0KICAgICAgICBzdGQ6OnN3YXAobV9sZW5ndGgsIHN0cmluZ0J1aWxkZXIu
bV9sZW5ndGgpOw0KICAgICAgICBtX3N0cmluZy5zd2FwKHN0cmluZ0J1aWxkZXIubV9zdHJpbmcp
Ow0KICAgICAgICBtX2J1ZmZlci5zd2FwKHN0cmluZ0J1aWxkZXIubV9idWZmZXIpOw0KICAgICAg
ICBzdGQ6OnN3YXAobV9pczhCaXQsIHN0cmluZ0J1aWxkZXIubV9pczhCaXQpOw0KICAgICAgICBz
dGQ6OnN3YXAobV9idWZmZXJDaGFyYWN0ZXJzOCwgc3RyaW5nQnVpbGRlci5tX2J1ZmZlckNoYXJh
Y3RlcnM4KTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICB2b2lk
IGFsbG9jYXRlQnVmZmVyKGNvbnN0IExDaGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQg
cmVxdWlyZWRMZW5ndGgpOw0KICAgIHZvaWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgVUNoYXIqIGN1
cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7DQogICAgdm9pZCBhbGxv
Y2F0ZUJ1ZmZlclVwQ29udmVydChjb25zdCBMQ2hhciogY3VycmVudENoYXJhY3RlcnMsIHVuc2ln
bmVkIHJlcXVpcmVkTGVuZ3RoKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB2b2lkIHJlYWxsb2NhdGVCdWZmZXIodW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOw0KICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IF9fZm9yY2VpbmxpbmUgQ2hhcmFjdGVyVHlw
ZSogZXh0ZW5kQnVmZmVyRm9yQXBwZW5kaW5nKHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpOw0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IF9fZm9yY2VpbmxpbmUgQ2hhcmFj
dGVyVHlwZSogZXh0ZW5kQnVmZmVyRm9yQXBwZW5kaW5nV2l0aG91dE92ZXJmbG93Q2hlY2soQ2hl
Y2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKTsNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlKiBleHRlbmRCdWZmZXJGb3JBcHBlbmRpbmdTbG93Q2FzZSh1
bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIExDaGFy
KiBleHRlbmRCdWZmZXJGb3JBcHBlbmRpbmc4KENoZWNrZWRJbnQzMiByZXF1aXJlZExlbmd0aCk7
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIFVDaGFyKiBleHRlbmRCdWZmZXJGb3JBcHBlbmRp
bmcxNihDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpOw0KDQogICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gX19mb3JjZWlubGluZSBDaGFyYWN0ZXJUeXBlKiBnZXRCdWZmZXJD
aGFyYWN0ZXJzKCk7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgcmVpZnlTdHJpbmco
KSBjb25zdDsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4g
dm9pZCBhcHBlbmRGcm9tQWRhcHRlcnMoU3RyaW5nVHlwZUFkYXB0ZXJzLi4uKTsNCg0KICAgIG11
dGFibGUgU3RyaW5nIG1fc3RyaW5nOw0KICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2J1ZmZlcjsN
CiAgICB1bmlvbiB7DQogICAgICAgIExDaGFyKiBtX2J1ZmZlckNoYXJhY3RlcnM4Ow0KICAgICAg
ICBVQ2hhciogbV9idWZmZXJDaGFyYWN0ZXJzMTY7DQogICAgfTsNCiAgICBzdGF0aWNfYXNzZXJ0
KFN0cmluZzo6TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
LCAiIik7DQogICAgQ2hlY2tlZDxpbnQzMl90LCBDb25kaXRpb25hbENyYXNoT25PdmVyZmxvdz4g
bV9sZW5ndGg7DQogICAgYm9vbCBtX2lzOEJpdCB7IHRydWUgfTsNCg0KDQojbGluZSAzNzcgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oIg0KfTsNCg0KdGVtcGxhdGU8Pg0KX19mb3JjZWlubGluZSBMQ2hh
ciogU3RyaW5nQnVpbGRlcjo6Z2V0QnVmZmVyQ2hhcmFjdGVyczxMQ2hhcj4oKQ0Kew0KICAgICgo
dm9pZCkwKTsNCiAgICByZXR1cm4gbV9idWZmZXJDaGFyYWN0ZXJzODsNCn0NCg0KdGVtcGxhdGU8
Pg0KX19mb3JjZWlubGluZSBVQ2hhciogU3RyaW5nQnVpbGRlcjo6Z2V0QnVmZmVyQ2hhcmFjdGVy
czxVQ2hhcj4oKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gbV9idWZmZXJDaGFyYWN0
ZXJzMTY7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4NCnZv
aWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmluZ1R5cGVBZGFwdGVycy4u
LiBhZGFwdGVycykNCnsNCiAgICBhdXRvIHJlcXVpcmVkTGVuZ3RoID0gY2hlY2tlZFN1bTxpbnQz
Ml90PihtX2xlbmd0aCwgYWRhcHRlcnMubGVuZ3RoKCkuLi4pOw0KICAgIGlmIChtX2lzOEJpdCAm
JiBhcmU4Qml0KGFkYXB0ZXJzLi4uKSkgew0KICAgICAgICBMQ2hhciogZGVzdGluYXRpb24gPSBl
eHRlbmRCdWZmZXJGb3JBcHBlbmRpbmc4KHJlcXVpcmVkTGVuZ3RoKTsNCiAgICAgICAgaWYgKCFk
ZXN0aW5hdGlvbikgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJu
Ow0KICAgICAgICB9DQogICAgICAgIHN0cmluZ1R5cGVBZGFwdGVyQWNjdW11bGF0b3IoZGVzdGlu
YXRpb24sIGFkYXB0ZXJzLi4uKTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBVQ2hhciogZGVzdGlu
YXRpb24gPSBleHRlbmRCdWZmZXJGb3JBcHBlbmRpbmcxNihyZXF1aXJlZExlbmd0aCk7DQogICAg
ICAgIGlmICghZGVzdGluYXRpb24pIHsNCiAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAg
ICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBzdHJpbmdUeXBlQWRhcHRlckFjY3VtdWxh
dG9yKGRlc3RpbmF0aW9uLCBhZGFwdGVycy4uLik7DQogICAgfQ0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBTdHJpbmdUeXBlcz4NCnZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKFN0cmluZ1R5
cGVzLi4uIHN0cmluZ3MpDQp7DQogICAgYXBwZW5kRnJvbUFkYXB0ZXJzKFN0cmluZ1R5cGVBZGFw
dGVyPFN0cmluZ1R5cGVzPihzdHJpbmdzKS4uLik7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+DQpib29sIGVxdWFsKGNvbnN0IFN0cmluZ0J1aWxkZXImIHMsIGNvbnN0IENo
YXJhY3RlclR5cGUqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQ0Kew0KICAgIGlmIChzLmxlbmd0
aCgpICE9IGxlbmd0aCkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgaWYgKHMuaXM4Qml0
KCkpDQogICAgICAgIHJldHVybiBlcXVhbChzLmNoYXJhY3RlcnM4KCksIGJ1ZmZlciwgbGVuZ3Ro
KTsNCg0KICAgIHJldHVybiBlcXVhbChzLmNoYXJhY3RlcnMxNigpLCBidWZmZXIsIGxlbmd0aCk7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGU+DQpib29sIGVxdWFsKGNvbnN0IFN0
cmluZ0J1aWxkZXImIGEsIGNvbnN0IFN0cmluZ1R5cGUmIGIpDQp7DQogICAgaWYgKGEubGVuZ3Ro
KCkgIT0gYi5sZW5ndGgoKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgaWYgKCFhLmxl
bmd0aCgpKQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgIGlmIChhLmlzOEJpdCgpKSB7DQog
ICAgICAgIGlmIChiLmlzOEJpdCgpKQ0KICAgICAgICAgICAgcmV0dXJuIGVxdWFsKGEuY2hhcmFj
dGVyczgoKSwgYi5jaGFyYWN0ZXJzOCgpLCBhLmxlbmd0aCgpKTsNCiAgICAgICAgcmV0dXJuIGVx
dWFsKGEuY2hhcmFjdGVyczgoKSwgYi5jaGFyYWN0ZXJzMTYoKSwgYS5sZW5ndGgoKSk7DQogICAg
fQ0KDQogICAgaWYgKGIuaXM4Qml0KCkpDQogICAgICAgIHJldHVybiBlcXVhbChhLmNoYXJhY3Rl
cnMxNigpLCBiLmNoYXJhY3RlcnM4KCksIGEubGVuZ3RoKCkpOw0KICAgIHJldHVybiBlcXVhbChh
LmNoYXJhY3RlcnMxNigpLCBiLmNoYXJhY3RlcnMxNigpLCBhLmxlbmd0aCgpKTsNCn0NCg0KaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmdCdWlsZGVyJiBhLCBjb25zdCBTdHJpbmdC
dWlsZGVyJiBiKSB7IHJldHVybiBlcXVhbChhLCBiKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHJpbmdCdWlsZGVyJiBhLCBjb25zdCBTdHJpbmdCdWlsZGVyJiBiKSB7IHJldHVy
biAhZXF1YWwoYSwgYik7IH0NCmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nQnVp
bGRlciYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLCBiKTsgfQ0KaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmdCdWlsZGVyJiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgcmV0dXJuICFlcXVhbChhLCBiKTsgfQ0KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHJpbmcmIGEsIGNvbnN0IFN0cmluZ0J1aWxkZXImIGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9
DQppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nQnVp
bGRlciYgYikgeyByZXR1cm4gIWVxdWFsKGIsIGEpOyB9DQoNCnRlbXBsYXRlPD4gc3RydWN0IElu
dGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxTdHJpbmdCdWlsZGVyPiB7DQogICAgdXNpbmcg
UmV0dXJuVHlwZSA9IHZvaWQ7DQogICAgdXNpbmcgQWRkaXRpb25hbEFyZ3VtZW50VHlwZSA9IFN0
cmluZ0J1aWxkZXI7DQogICAgc3RhdGljIHZvaWQgZmx1c2goTENoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCwgU3RyaW5nQnVpbGRlciogc3RyaW5nQnVpbGRlcikgeyBzdHJpbmdCdWls
ZGVyLT5hcHBlbmRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCk7IH0NCn07DQoNCn0gDQoN
CnVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsNCiNsaW5lIDM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQmlnSW50LmgiDQoNCg0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSW50MzJCaWdJbnRJbXBsOw0KY2xhc3MgSGVhcEJp
Z0ludEltcGw7DQoNCmNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7DQpwdWJs
aWM6DQogICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsNCiAgICB1c2luZyBEaWdpdCA9IFVDUFVSZWdp
c3RlcjsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1Ro
aXM7DQogICAgZnJpZW5kIGNsYXNzIENhY2hlZEJpZ0ludDsNCg0KICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsNCiAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuICZ2bS5iaWdJbnRTcGFjZTsNCiAgICB9DQoNCiAgICBlbnVtIGNsYXNz
IEluaXRpYWxpemF0aW9uVHlwZSB7IE5vbmUsIFdpdGhaZXJvIH07DQogICAgdm9pZCBpbml0aWFs
aXplKEluaXRpYWxpemF0aW9uVHlwZSk7DQoNCiAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNp
emUoSlNDZWxsKiwgVk0mKTsNCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOw0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZVplcm8oSlNHbG9iYWxPYmplY3Qq
KTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIEpTQmlnSW50KiB0cnlDcmVhdGVa
ZXJvKFZNJik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBKU0JpZ0ludCogdHJ5
Q3JlYXRlV2l0aExlbmd0aChWTSYsIHVuc2lnbmVkIGxlbmd0aCk7DQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlV2l0aExlbmd0aChKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGlj
IEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCB2YWx1ZSk7DQog
ICAgc3RhdGljIEpTQmlnSW50KiB0cnlDcmVhdGVGcm9tKFZNJiwgaW50MzJfdCB2YWx1ZSk7DQog
ICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3Qg
dmFsdWUpOw0KICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2JhbE9iamVjdCos
IGludDY0X3QgdmFsdWUpOw0KICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbShKU0dsb2Jh
bE9iamVjdCosIHVpbnQ2NF90IHZhbHVlKTsNCiAgICBzdGF0aWMgSlNCaWdJbnQqIGNyZWF0ZUZy
b20oSlNHbG9iYWxPYmplY3QqLCBib29sIHZhbHVlKTsNCiAgICBzdGF0aWMgSlNCaWdJbnQqIGNy
ZWF0ZUZyb20oSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpOw0KDQogICAgc3RhdGljIEpT
QmlnSW50KiBjcmVhdGVGcm9tKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBpbnQzMl90IHZhbHVlKTsN
Cg0KICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMZW5ndGgoKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQmln
SW50Kj4oMHg0MDAwKS0+bV9sZW5ndGgpKSAtIDB4NDAwMCk7DQogICAgfQ0KDQogICAgcHJvdGVj
dGVkOiBzdGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8g
c19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyog
aW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBKU1ZhbHVlIHRvUHJpbWl0aXZlKEpT
R2xvYmFsT2JqZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7DQoNCiAgICB2b2lk
IHNldFNpZ24oYm9vbCBzaWduKSB7IG1fc2lnbiA9IHNpZ247IH0NCiAgICBib29sIHNpZ24oKSBj
b25zdCB7IHJldHVybiBtX3NpZ247IH0NCg0KICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoOyB9DQoNCiAgICBzdGF0aWMgSlNWYWx1ZSBtYWtlSGVhcEJpZ0ludE9y
QmlnSW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50NjRfdCB2YWx1ZSkNCiAg
ICB7DQoNCg0KDQojbGluZSAxMDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNCaWdJbnQuaCINCiAgICAgICAgcmV0dXJuIEpTQmln
SW50OjpjcmVhdGVGcm9tKGdsb2JhbE9iamVjdCwgdmFsdWUpOw0KICAgIH0NCg0KICAgIHN0YXRp
YyBKU1ZhbHVlIG1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IGlmIChzdGQ6OmFicyh2YWx1ZSkgPD0gbWF4U2FmZUludGVnZXIoKSkNCiAgICAgICAgICAgIHJl
dHVybiBtYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxp
bnQ2NF90Pih2YWx1ZSkpOw0KICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xv
YmFsT2JqZWN0LCB2YWx1ZSk7DQogICAgfQ0KDQogICAgZW51bSBjbGFzcyBFcnJvclBhcnNlTW9k
ZSB7DQogICAgICAgIFRocm93RXhjZXB0aW9ucywNCiAgICAgICAgSWdub3JlRXhjZXB0aW9ucw0K
ICAgIH07DQoNCiAgICBlbnVtIGNsYXNzIFBhcnNlSW50TW9kZSB7IERpc2FsbG93RW1wdHlTdHJp
bmcsIEFsbG93RW1wdHlTdHJpbmcgfTsNCiAgICBlbnVtIGNsYXNzIFBhcnNlSW50U2lnbiB7IFVu
c2lnbmVkLCBTaWduZWQgfTsNCg0KICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFs
T2JqZWN0KiwgVk0mLCBTdHJpbmdWaWV3LCB1aW50OF90IHJhZGl4LCBFcnJvclBhcnNlTW9kZSA9
IEVycm9yUGFyc2VNb2RlOjpUaHJvd0V4Y2VwdGlvbnMsIFBhcnNlSW50U2lnbiA9IFBhcnNlSW50
U2lnbjo6VW5zaWduZWQpOw0KICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNlSW50KEpTR2xvYmFsT2Jq
ZWN0KiwgU3RyaW5nVmlldywgRXJyb3JQYXJzZU1vZGUgPSBFcnJvclBhcnNlTW9kZTo6VGhyb3dF
eGNlcHRpb25zKTsNCiAgICBzdGF0aWMgSlNWYWx1ZSBzdHJpbmdUb0JpZ0ludChKU0dsb2JhbE9i
amVjdCosIFN0cmluZ1ZpZXcpOw0KDQogICAgc3RhdGljIFN0cmluZyB0cnlHZXRTdHJpbmcoVk0m
LCBKU0JpZ0ludCosIHVuc2lnbmVkIHJhZGl4KTsNCg0KICAgIFN0cmluZyB0b1N0cmluZyhKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHJhZGl4KTsNCiAgICANCiAgICBlbnVtIGNsYXNzIENvbXBh
cmlzb25Nb2RlIHsNCiAgICAgICAgTGVzc1RoYW4sDQogICAgICAgIExlc3NUaGFuT3JFcXVhbA0K
ICAgIH07DQoNCiAgICBlbnVtIGNsYXNzIENvbXBhcmlzb25SZXN1bHQgew0KICAgICAgICBFcXVh
bCwNCiAgICAgICAgVW5kZWZpbmVkLA0KICAgICAgICBHcmVhdGVyVGhhbiwNCiAgICAgICAgTGVz
c1RoYW4NCiAgICB9Ow0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBib29sIGVx
dWFscyhKU0JpZ0ludCosIEpTQmlnSW50Kik7DQogICAgYm9vbCBlcXVhbHNUb051bWJlcihKU1Zh
bHVlKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgYm9vbCBlcXVhbHNUb0ludDMyKGludDMy
X3QpOw0KICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNCaWdJbnQqIHgsIEpT
QmlnSW50KiB5KTsNCiAgICBzdGF0aWMgQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlKGludDMyX3Qg
eCwgSlNCaWdJbnQqIHkpOw0KICAgIHN0YXRpYyBDb21wYXJpc29uUmVzdWx0IGNvbXBhcmUoSlNC
aWdJbnQqIHgsIGludDMyX3QgeSk7DQogICAgc3RhdGljIENvbXBhcmlzb25SZXN1bHQgY29tcGFy
ZShpbnQzMl90IHgsIGludDMyX3QgeSkNCiAgICB7DQogICAgICAgIGlmICh4ID09IHkpDQogICAg
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkVxdWFsOw0KICAgICAg
ICBpZiAoeCA8IHkpDQogICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1
bHQ6Okxlc3NUaGFuOw0KICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6
OkdyZWF0ZXJUaGFuOw0KICAgIH0NCg0KICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVtYmVyKEpTR2xv
YmFsT2JqZWN0KiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3Q7DQogICAg
ZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQoNCiAgICBKU09iamVjdCog
dG9PYmplY3QoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICBpbmxpbmUgYm9vbCB0b0Jvb2xl
YW4oKSBjb25zdCB7IHJldHVybiAhaXNaZXJvKCk7IH0NCg0KICAgIENvbXBhcmlzb25SZXN1bHQg
c3RhdGljIGNvbXBhcmVUb0RvdWJsZShKU0JpZ0ludCogeCwgZG91YmxlIHkpOw0KDQogICAgX19m
b3JjZWlubGluZSBzdGF0aWMgSlNWYWx1ZSBhc0ludDMyT3JIZWFwQ2VsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90IHZhbHVlKQ0KICAgIHsNCg0KDQoNCiNsaW5lIDE3MSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxKU0JpZ0ludC5oIg0KICAgICAgICByZXR1cm4gY3JlYXRlRnJvbShnbG9iYWxPYmplY3QsIHZh
bHVlKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgZnJpZW5kIGNsYXNzIEhlYXBCaWdJbnRJbXBs
Ow0KcHVibGljOg0KICAgIHN0cnVjdCBJbXBsUmVzdWx0IHsNCiAgICAgICAgSW1wbFJlc3VsdChI
ZWFwQmlnSW50SW1wbCYpOw0KICAgICAgICBJbXBsUmVzdWx0KEpTQmlnSW50Kik7DQoNCg0KI2xp
bmUgMTgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXEpTQmlnSW50LmgiDQogICAgICAgIEltcGxSZXN1bHQoSlNWYWx1ZSk7DQogICAg
ICAgIEpTVmFsdWUgcGF5bG9hZDsNCiAgICB9Ow0KcHJpdmF0ZToNCiAgICBzdGF0aWMgSlNCaWdJ
bnQqIGNyZWF0ZVdpdGhMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIGxlbmd0
aCk7DQogICAgc3RhdGljIEpTQmlnSW50KiBjcmVhdGVaZXJvKEpTR2xvYmFsT2JqZWN0KiwgVk0m
KTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5hbWUgQmlnSW50
SW1wbDI+DQogICAgc3RhdGljIEltcGxSZXN1bHQgZXhwb25lbnRpYXRlSW1wbChKU0dsb2JhbE9i
amVjdCosIEJpZ0ludEltcGwxIGJhc2UsIEJpZ0ludEltcGwyIGV4cG9uZW50KTsNCg0KICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5hbWUgQmlnSW50SW1wbDI+DQogICAg
c3RhdGljIEltcGxSZXN1bHQgbXVsdGlwbHlJbXBsKEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50SW1w
bDEgeCwgQmlnSW50SW1wbDIgeSk7DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1w
bD4NCiAgICBzdGF0aWMgSW1wbFJlc3VsdCBpbmNJbXBsKEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50
SW1wbCB4KTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPg0KICAgIHN0YXRp
YyBJbXBsUmVzdWx0IGRlY0ltcGwoSlNHbG9iYWxPYmplY3QqLCBCaWdJbnRJbXBsIHgpOw0KDQog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGwxLCB0eXBlbmFtZSBCaWdJbnRJbXBsMj4N
CiAgICBzdGF0aWMgSW1wbFJlc3VsdCBhZGRJbXBsKEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50SW1w
bDEgeCwgQmlnSW50SW1wbDIgeSk7DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1w
bDEsIHR5cGVuYW1lIEJpZ0ludEltcGwyPg0KICAgIHN0YXRpYyBJbXBsUmVzdWx0IHN1YkltcGwo
SlNHbG9iYWxPYmplY3QqLCBCaWdJbnRJbXBsMSB4LCBCaWdJbnRJbXBsMiB5KTsNCg0KICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5hbWUgQmlnSW50SW1wbDI+DQogICAg
c3RhdGljIEltcGxSZXN1bHQgZGl2aWRlSW1wbChKU0dsb2JhbE9iamVjdCosIEJpZ0ludEltcGwx
IHgsIEJpZ0ludEltcGwyIHkpOw0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGwx
LCB0eXBlbmFtZSBCaWdJbnRJbXBsMj4NCiAgICBzdGF0aWMgSW1wbFJlc3VsdCByZW1haW5kZXJJ
bXBsKEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50SW1wbDEgeCwgQmlnSW50SW1wbDIgeSk7DQoNCiAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4NCiAgICBzdGF0aWMgSW1wbFJlc3VsdCB1
bmFyeU1pbnVzSW1wbChKU0dsb2JhbE9iamVjdCosIEJpZ0ludEltcGwgeCk7DQoNCiAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbDEsIHR5cGVuYW1lIEJpZ0ludEltcGwyPg0KICAgIHN0
YXRpYyBJbXBsUmVzdWx0IGJpdHdpc2VBbmRJbXBsKEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50SW1w
bDEgeCwgQmlnSW50SW1wbDIgeSk7DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1w
bDEsIHR5cGVuYW1lIEJpZ0ludEltcGwyPg0KICAgIHN0YXRpYyBJbXBsUmVzdWx0IGJpdHdpc2VP
ckltcGwoSlNHbG9iYWxPYmplY3QqLCBCaWdJbnRJbXBsMSB4LCBCaWdJbnRJbXBsMiB5KTsNCg0K
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5hbWUgQmlnSW50SW1wbDI+
DQogICAgc3RhdGljIEltcGxSZXN1bHQgYml0d2lzZVhvckltcGwoSlNHbG9iYWxPYmplY3QqLCBC
aWdJbnRJbXBsMSB4LCBCaWdJbnRJbXBsMiB5KTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBC
aWdJbnRJbXBsPg0KICAgIHN0YXRpYyBJbXBsUmVzdWx0IGJpdHdpc2VOb3RJbXBsKEpTR2xvYmFs
T2JqZWN0KiwgQmlnSW50SW1wbCB4KTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJ
bXBsMSwgdHlwZW5hbWUgQmlnSW50SW1wbDI+DQogICAgc3RhdGljIEltcGxSZXN1bHQgbGVmdFNo
aWZ0SW1wbChKU0dsb2JhbE9iamVjdCosIEJpZ0ludEltcGwxIHgsIEJpZ0ludEltcGwyIHkpOw0K
DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGwxLCB0eXBlbmFtZSBCaWdJbnRJbXBs
Mj4NCiAgICBzdGF0aWMgSW1wbFJlc3VsdCBzaWduZWRSaWdodFNoaWZ0SW1wbChKU0dsb2JhbE9i
amVjdCosIEJpZ0ludEltcGwxIHgsIEJpZ0ludEltcGwyIHkpOw0KDQogICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEJpZ0ludEltcGwxLCB0eXBlbmFtZSBCaWdJbnRJbXBsMj4NCiAgICBzdGF0aWMgQ29t
cGFyaXNvblJlc3VsdCBjb21wYXJlSW1wbChCaWdJbnRJbXBsMSB4LCBCaWdJbnRJbXBsMiB5KTsN
Cg0KcHVibGljOg0KICAgIHN0YXRpYyBKU1ZhbHVlIGV4cG9uZW50aWF0ZShKU0dsb2JhbE9iamVj
dCosIEpTQmlnSW50KiBiYXNlLCBKU0JpZ0ludCogZXhwb25lbnQpOw0KDQoNCg0KDQojbGluZSAy
NDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcSlNCaWdJbnQuaCINCg0KICAgIHN0YXRpYyBKU1ZhbHVlIG11bHRpcGx5KEpTR2xvYmFs
T2JqZWN0KiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSAyNTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcSlNCaWdJbnQuaCINCiAgICANCiAgICBzdGF0aWMgSlNWYWx1ZSBpbmMoSlNHbG9i
YWxPYmplY3QqLCBKU0JpZ0ludCogeCk7DQoNCg0KDQoNCg0KI2xpbmUgMjY0ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQmlnSW50
LmgiDQoNCiAgICBzdGF0aWMgSlNWYWx1ZSBkZWMoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCog
eCk7DQoNCg0KDQoNCg0KI2xpbmUgMjcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQmlnSW50LmgiDQoNCiAgICBzdGF0aWMgSlNW
YWx1ZSBhZGQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkpOw0KDQoN
Cg0KDQoNCg0KDQojbGluZSAyODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNCaWdJbnQuaCINCg0KICAgIHN0YXRpYyBKU1ZhbHVl
IHN1YihKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7DQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDI5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxKU0JpZ0ludC5oIg0KDQogICAgc3RhdGljIEpTVmFsdWUgZGl2
aWRlKEpTR2xvYmFsT2JqZWN0KiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMwNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0JpZ0ludC5oIg0KDQogICAgc3RhdGljIEpT
VmFsdWUgcmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5
KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDMyMiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0JpZ0ludC5oIg0KDQog
ICAgc3RhdGljIEpTVmFsdWUgdW5hcnlNaW51cyhKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KiB4
KTsNCg0KDQoNCg0KDQojbGluZSAzMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNCaWdJbnQuaCINCg0KICAgIHN0YXRpYyBKU1Zh
bHVlIGJpdHdpc2VBbmQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCogeCwgSlNCaWdJbnQqIHkp
Ow0KDQoNCg0KDQoNCg0KDQojbGluZSAzNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNCaWdJbnQuaCINCg0KICAgIHN0YXRpYyBK
U1ZhbHVlIGJpdHdpc2VPcihKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCog
eSk7DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0JpZ0ludC5oIg0KDQogICAgc3RhdGlj
IEpTVmFsdWUgYml0d2lzZVhvcihKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KiB4LCBKU0JpZ0lu
dCogeSk7DQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM2MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0JpZ0ludC5oIg0KDQogICAgc3Rh
dGljIEpTVmFsdWUgYml0d2lzZU5vdChKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KiB4KTsNCg0K
DQoNCg0KDQojbGluZSAzNjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcSlNCaWdJbnQuaCINCg0KICAgIHN0YXRpYyBKU1ZhbHVlIGxl
ZnRTaGlmdChKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KiB4LCBKU0JpZ0ludCogeSk7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMzkxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQmlnSW50
LmgiDQoNCiAgICBzdGF0aWMgSlNWYWx1ZSBzaWduZWRSaWdodFNoaWZ0KEpTR2xvYmFsT2JqZWN0
KiwgSlNCaWdJbnQqIHgsIEpTQmlnSW50KiB5KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDQwNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxKU0JpZ0ludC5oIg0KDQogICAgc3RhdGljIEpTVmFsdWUgdG9OdW1iZXJIZWFw
KEpTQmlnSW50Kik7DQogICAgc3RhdGljIEpTVmFsdWUgdG9OdW1iZXIoSlNWYWx1ZSBiaWdJbnQp
DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQoNCg0KDQojbGluZSA0MTUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNCaWdJbnQu
aCINCiAgICAgICAgcmV0dXJuIHRvTnVtYmVySGVhcChqc0Nhc3Q8SlNCaWdJbnQqPihiaWdJbnQp
KTsNCiAgICB9DQoNCg0KICAgIHN0YXRpYyBKU1ZhbHVlIGFzSW50TihKU0dsb2JhbE9iamVjdCos
IHVpbnQ2NF90IG51bWJlck9mQml0cywgSlNCaWdJbnQqKTsNCiAgICBzdGF0aWMgSlNWYWx1ZSBh
c1VpbnROKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgbnVtYmVyT2ZCaXRzLCBKU0JpZ0ludCop
Ow0KDQoNCg0KI2xpbmUgNDI1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQmlnSW50LmgiDQoNCiAgICBEaWdpdCBkaWdpdCh1bnNp
Z25lZCk7DQogICAgdm9pZCBzZXREaWdpdCh1bnNpZ25lZCwgRGlnaXQpOyANCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgSlNCaWdJbnQqIHJpZ2h0VHJpbShKU0dsb2JhbE9iamVjdCopOw0KICAg
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU0JpZ0ludCogdHJ5UmlnaHRUcmltKFZNJik7DQoNCnBy
aXZhdGU6DQogICAgSlNCaWdJbnQoVk0mLCBTdHJ1Y3R1cmUqLCBEaWdpdCosIHVuc2lnbmVkIGxl
bmd0aCk7DQoNCiAgICBKU0JpZ0ludCogcmlnaHRUcmltKEpTR2xvYmFsT2JqZWN0KiwgVk0mKTsN
Cg0KICAgIHN0YXRpYyBKU0JpZ0ludCogY3JlYXRlRnJvbUltcGwoSlNHbG9iYWxPYmplY3QqLCB1
aW50NjRfdCB2YWx1ZSwgYm9vbCBzaWduKTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgYml0c1BlckJ5dGUgPSA4Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZGlnaXRC
aXRzID0gc2l6ZW9mKERpZ2l0KSAqIGJpdHNQZXJCeXRlOw0KICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgaGFsZkRpZ2l0Qml0cyA9IGRpZ2l0Qml0cyAvIDI7DQogICAgc3RhdGljIGNvbnN0
ZXhwciBEaWdpdCBoYWxmRGlnaXRNYXNrID0gKDF1bGwgPDwgaGFsZkRpZ2l0Qml0cykgLSAxOw0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heEludCA9IDB4N0ZGRkZGRkY7DQoNCiAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIGRvdWJsZU1hbnRpc3NhU2l6ZSA9IDUzOw0KICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgZG91YmxlUGh5c2ljYWxNYW50aXNzYVNpemUgPSA1MjsgDQog
ICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBkb3VibGVQaHlzaWNhbE1hbnRpc3NhTWFzayA9
ICgxVUxMIDw8IGRvdWJsZVBoeXNpY2FsTWFudGlzc2FTaXplKSAtIDE7DQogICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50NjRfdCBkb3VibGVNYW50aXNzYUhpZGRlbkJpdCA9IDFVTEwgPDwgZG91Ymxl
UGh5c2ljYWxNYW50aXNzYVNpemU7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGhCaXRzID0gMTAyNCAqIDEwMjQ7DQog
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGggPSBtYXhMZW5ndGhCaXRzIC8g
ZGlnaXRCaXRzOw0KICAgIHN0YXRpY19hc3NlcnQobWF4TGVuZ3RoQml0cyAlIGRpZ2l0Qml0cyA9
PSAwKTsNCiAgICANCiAgICBzdGF0aWMgdWludDY0X3QgY2FsY3VsYXRlTWF4aW11bUNoYXJhY3Rl
cnNSZXF1aXJlZCh1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHJhZGl4LCBEaWdpdCBsYXN0RGln
aXQsIGJvb2wgc2lnbik7DQogICAgDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGwx
LCB0eXBlbmFtZSBCaWdJbnRJbXBsMj4NCiAgICBzdGF0aWMgQ29tcGFyaXNvblJlc3VsdCBhYnNv
bHV0ZUNvbXBhcmUoQmlnSW50SW1wbDEgeCwgQmlnSW50SW1wbDIgeSk7DQogICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEJpZ0ludEltcGw+DQogICAgc3RhdGljIGJvb2wgYWJzb2x1dGVEaXZXaXRoRGln
aXREaXZpc29yKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBCaWdJbnRJbXBsIHgsIERpZ2l0IGRpdmlz
b3IsIEpTQmlnSW50KiogcXVvdGllbnQsIERpZ2l0JiByZW1haW5kZXIpOw0KICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBCaWdJbnRJbXBsPg0KICAgIHN0YXRpYyB2b2lkIGludGVybmFsTXVsdGlwbHlB
ZGQoQmlnSW50SW1wbCBzb3VyY2UsIERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCwgdW5zaWdu
ZWQsIEpTQmlnSW50KiByZXN1bHQpOw0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBs
Pg0KICAgIHN0YXRpYyB2b2lkIG11bHRpcGx5QWNjdW11bGF0ZShCaWdJbnRJbXBsIG11bHRpcGxp
Y2FuZCwgRGlnaXQgbXVsdGlwbGllciwgSlNCaWdJbnQqIGFjY3VtdWxhdG9yLCB1bnNpZ25lZCBh
Y2N1bXVsYXRvckluZGV4KTsNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbDE+DQog
ICAgc3RhdGljIHZvaWQgYWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihKU0dsb2JhbE9iamVj
dCosIEJpZ0ludEltcGwxIGRpdmlkZW5kLCBKU0JpZ0ludCogZGl2aXNvciwgSlNCaWdJbnQqKiBx
dW90aWVudCwgSlNCaWdJbnQqKiByZW1haW5kZXIpOw0KICAgIA0KICAgIGVudW0gY2xhc3MgTGVm
dFNoaWZ0TW9kZSB7DQogICAgICAgIFNhbWVTaXplUmVzdWx0LA0KICAgICAgICBBbHdheXNBZGRP
bmVEaWdpdA0KICAgIH07DQogICAgDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+
DQogICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5c0NvcHkoSlNHbG9i
YWxPYmplY3QqLCBCaWdJbnRJbXBsIHgsIHVuc2lnbmVkIHNoaWZ0LCBMZWZ0U2hpZnRNb2RlKTsN
CiAgICBzdGF0aWMgYm9vbCBwcm9kdWN0R3JlYXRlclRoYW4oRGlnaXQgZmFjdG9yMSwgRGlnaXQg
ZmFjdG9yMiwgRGlnaXQgaGlnaCwgRGlnaXQgbG93KTsNCg0KICAgIERpZ2l0IGFic29sdXRlSW5w
bGFjZUFkZChKU0JpZ0ludCogc3VtbWFuZCwgdW5zaWduZWQgc3RhcnRJbmRleCk7DQogICAgRGln
aXQgYWJzb2x1dGVJbnBsYWNlU3ViKEpTQmlnSW50KiBzdWJ0cmFoZW5kLCB1bnNpZ25lZCBzdGFy
dEluZGV4KTsNCiAgICB2b2lkIGlucGxhY2VSaWdodFNoaWZ0KHVuc2lnbmVkIHNoaWZ0KTsNCg0K
ICAgIGVudW0gY2xhc3MgUm91bmRpbmdSZXN1bHQgew0KICAgICAgICBSb3VuZERvd24sDQogICAg
ICAgIFRpZSwNCiAgICAgICAgUm91bmRVcA0KICAgIH07DQoNCiAgICBzdGF0aWMgUm91bmRpbmdS
ZXN1bHQgZGVjaWRlUm91bmRpbmcoSlNCaWdJbnQqLCBpbnQzMl90IG1hbnRpc3NhQml0c1Vuc2V0
LCBpbnQzMl90IGRpZ2l0SW5kZXgsIHVpbnQ2NF90IGN1cnJlbnREaWdpdCk7DQoNCiAgICBlbnVt
IGNsYXNzIEV4dHJhRGlnaXRzSGFuZGxpbmcgew0KICAgICAgICBDb3B5LA0KICAgICAgICBTa2lw
DQogICAgfTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJpZ0ludEltcGwxLCB0eXBlbmFtZSBC
aWdJbnRJbXBsMiwgdHlwZW5hbWUgQml0d2lzZU9wPg0KICAgIHN0YXRpYyBKU0JpZ0ludCogYWJz
b2x1dGVCaXR3aXNlT3AoSlNHbG9iYWxPYmplY3QqLCBCaWdJbnRJbXBsMSB4LCBCaWdJbnRJbXBs
MiB5LCBFeHRyYURpZ2l0c0hhbmRsaW5nLCBCaXR3aXNlT3AmJik7DQoNCiAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQmlnSW50SW1wbDEsIHR5cGVuYW1lIEJpZ0ludEltcGwyPg0KICAgIHN0YXRpYyBK
U0JpZ0ludCogYWJzb2x1dGVBbmQoSlNHbG9iYWxPYmplY3QqLCBCaWdJbnRJbXBsMSB4LCBCaWdJ
bnRJbXBsMiB5KTsNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbDEsIHR5cGVuYW1l
IEJpZ0ludEltcGwyPg0KICAgIHN0YXRpYyBKU0JpZ0ludCogYWJzb2x1dGVPcihKU0dsb2JhbE9i
amVjdCosIEJpZ0ludEltcGwxIHgsIEJpZ0ludEltcGwyIHkpOw0KICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5hbWUgQmlnSW50SW1wbDI+DQogICAgc3RhdGljIEpTQmln
SW50KiBhYnNvbHV0ZUFuZE5vdChKU0dsb2JhbE9iamVjdCosIEJpZ0ludEltcGwxIHgsIEJpZ0lu
dEltcGwyIHkpOw0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5hbWUg
QmlnSW50SW1wbDI+DQogICAgc3RhdGljIEpTQmlnSW50KiBhYnNvbHV0ZVhvcihKU0dsb2JhbE9i
amVjdCosIEJpZ0ludEltcGwxIHgsIEJpZ0ludEltcGwyIHkpOw0KDQogICAgZW51bSBjbGFzcyBT
aWduT3B0aW9uIHsNCiAgICAgICAgU2lnbmVkLA0KICAgICAgICBVbnNpZ25lZA0KICAgIH07DQoN
CiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4NCiAgICBzdGF0aWMgSlNCaWdJbnQq
IGFic29sdXRlQWRkT25lKEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50SW1wbCB4LCBTaWduT3B0aW9u
KTsNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4NCiAgICBzdGF0aWMgSlNCaWdJ
bnQqIGFic29sdXRlU3ViT25lKEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50SW1wbCB4LCB1bnNpZ25l
ZCByZXN1bHRMZW5ndGgpOw0KDQogICAgDQogICAgc3RhdGljIERpZ2l0IGRpZ2l0QWRkKERpZ2l0
IGEsIERpZ2l0IGIsIERpZ2l0JiBjYXJyeSk7DQogICAgc3RhdGljIERpZ2l0IGRpZ2l0U3ViKERp
Z2l0IGEsIERpZ2l0IGIsIERpZ2l0JiBib3Jyb3cpOw0KICAgIHN0YXRpYyBEaWdpdCBkaWdpdE11
bChEaWdpdCBhLCBEaWdpdCBiLCBEaWdpdCYgaGlnaCk7DQogICAgc3RhdGljIERpZ2l0IGRpZ2l0
RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQgZGl2aXNvciwgRGlnaXQmIHJlbWFpbmRl
cik7DQogICAgc3RhdGljIERpZ2l0IGRpZ2l0UG93KERpZ2l0IGJhc2UsIERpZ2l0IGV4cG9uZW50
KTsNCg0KICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdCYXNlUG93ZXJPZlR3byhWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNCaWdJbnQqLCB1bnNpZ25lZCByYWRpeCk7DQogICAgc3RhdGljIFN0cmlu
ZyB0b1N0cmluZ0dlbmVyaWMoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50KiwgdW5zaWdu
ZWQgcmFkaXgpOw0KDQogICAgaW5saW5lIGJvb2wgaXNaZXJvKCkgY29uc3QNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGxlbmd0aCgpID09IDA7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPg0KICAgIHN0YXRpYyBKU1ZhbHVlIHBhcnNl
SW50KEpTR2xvYmFsT2JqZWN0KiwgQ2hhclR5cGUqICBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEVy
cm9yUGFyc2VNb2RlKTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4NCiAgICBz
dGF0aWMgSlNWYWx1ZSBwYXJzZUludChKU0dsb2JhbE9iamVjdCosIFZNJiwgQ2hhclR5cGUqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgcmFkaXgs
IEVycm9yUGFyc2VNb2RlLCBQYXJzZUludFNpZ24gPSBQYXJzZUludFNpZ246OlNpZ25lZCwgUGFy
c2VJbnRNb2RlID0gUGFyc2VJbnRNb2RlOjpBbGxvd0VtcHR5U3RyaW5nKTsNCg0KICAgIHN0YXRp
YyBKU0JpZ0ludCogYWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqLCBWTSYsIHVuc2lnbmVkIHJh
ZGl4LCB1bnNpZ25lZCBjaGFyY291bnQpOw0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0lu
dEltcGw+DQogICAgc3RhdGljIEpTQmlnSW50KiBjb3B5KEpTR2xvYmFsT2JqZWN0KiwgQmlnSW50
SW1wbCB4KTsNCg0KICAgIHZvaWQgaW5wbGFjZU11bHRpcGx5QWRkKERpZ2l0IG11bHRpcGxpZXIs
IERpZ2l0IHBhcnQpOw0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5h
bWUgQmlnSW50SW1wbDI+DQogICAgc3RhdGljIEltcGxSZXN1bHQgYWJzb2x1dGVBZGQoSlNHbG9i
YWxPYmplY3QqLCBCaWdJbnRJbXBsMSB4LCBCaWdJbnRJbXBsMiB5LCBib29sIHJlc3VsdFNpZ24p
Ow0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsMSwgdHlwZW5hbWUgQmlnSW50SW1w
bDI+DQogICAgc3RhdGljIEltcGxSZXN1bHQgYWJzb2x1dGVTdWIoSlNHbG9iYWxPYmplY3QqLCBC
aWdJbnRJbXBsMSB4LCBCaWdJbnRJbXBsMiB5LCBib29sIHJlc3VsdFNpZ24pOw0KDQogICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGwxLCB0eXBlbmFtZSBCaWdJbnRJbXBsMj4NCiAgICBz
dGF0aWMgSW1wbFJlc3VsdCBsZWZ0U2hpZnRCeUFic29sdXRlKEpTR2xvYmFsT2JqZWN0KiwgQmln
SW50SW1wbDEgeCwgQmlnSW50SW1wbDIgeSk7DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0lu
dEltcGwxLCB0eXBlbmFtZSBCaWdJbnRJbXBsMj4NCiAgICBzdGF0aWMgSW1wbFJlc3VsdCByaWdo
dFNoaWZ0QnlBYnNvbHV0ZShKU0dsb2JhbE9iamVjdCosIEJpZ0ludEltcGwxIHgsIEJpZ0ludElt
cGwyIHkpOw0KDQogICAgc3RhdGljIEltcGxSZXN1bHQgcmlnaHRTaGlmdEJ5TWF4aW11bShKU0ds
b2JhbE9iamVjdCosIGJvb2wgc2lnbik7DQoNCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50
SW1wbD4NCiAgICBzdGF0aWMgT3B0aW9uYWw8RGlnaXQ+IHRvU2hpZnRBbW91bnQoQmlnSW50SW1w
bCB4KTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPg0KICAgIHN0YXRpYyBJ
bXBsUmVzdWx0IGFzSW50TkltcGwoSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCwgQmlnSW50SW1w
bCk7DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+DQogICAgc3RhdGljIEltcGxS
ZXN1bHQgYXNVaW50TkltcGwoSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCwgQmlnSW50SW1wbCk7
DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+DQogICAgc3RhdGljIEltcGxSZXN1
bHQgdHJ1bmNhdGVUb05CaXRzKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCwgQmlnSW50SW1wbCk7
DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+DQogICAgc3RhdGljIEltcGxSZXN1
bHQgdHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byhKU0dsb2JhbE9iamVjdCosIGludDMyX3Qs
IEJpZ0ludEltcGwsIGJvb2wgcmVzdWx0U2lnbik7DQoNCiAgICBpbmxpbmUgc3RhdGljIHNpemVf
dCBvZmZzZXRPZkRhdGEoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTQmlnSW50Kj4oMHg0MDAwKS0+bV9kYXRh
KSkgLSAweDQwMDApOw0KICAgIH0NCg0KICAgIGlubGluZSBEaWdpdCogZGF0YVN0b3JhZ2UoKSB7
IHJldHVybiBtX2RhdGEuZ2V0KG1fbGVuZ3RoKTsgfQ0KDQogICAgY29uc3QgdW5zaWduZWQgbV9s
ZW5ndGg7DQogICAgYm9vbCBtX3NpZ24geyBmYWxzZSB9Ow0KICAgIENhZ2VkVW5pcXVlUHRyPEdp
Z2FjYWdlOjpQcmltaXRpdmUsIERpZ2l0PiBtX2RhdGE7DQp9Ow0KDQppbmxpbmUgSlNCaWdJbnQq
IGFzSGVhcEJpZ0ludChKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1
cm4ganNDYXN0PEpTQmlnSW50Kj4odmFsdWUuYXNDZWxsKCkpOw0KfQ0KDQppbmxpbmUgSlNCaWdJ
bnQ6OkRpZ2l0IEpTQmlnSW50OjpkaWdpdCh1bnNpZ25lZCBuKQ0Kew0KICAgICgodm9pZCkwKTsN
CiAgICByZXR1cm4gZGF0YVN0b3JhZ2UoKVtuXTsNCn0NCg0KaW5saW5lIHZvaWQgSlNCaWdJbnQ6
OnNldERpZ2l0KHVuc2lnbmVkIG4sIERpZ2l0IHZhbHVlKQ0Kew0KICAgICgodm9pZCkwKTsNCiAg
ICBkYXRhU3RvcmFnZSgpW25dID0gdmFsdWU7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQgaW52ZXJ0QmlnSW50Q29tcGFyZVJlc3VsdChKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVzdWx0KQ0Kew0KICAgIHN3aXRjaCAoY29tcGFyaXNv
blJlc3VsdCkgew0KICAgIGNhc2UgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJU
aGFuOg0KICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFu
Ow0KICAgIGNhc2UgSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuOg0KICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OkdyZWF0ZXJUaGFuOw0KICAgIGRl
ZmF1bHQ6DQogICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0Ow0KICAgIH0NCn0NCg0KfSAN
CiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWVJbmxpbmVzLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDZWxsSW5s
aW5lcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXEFsbG9jYXRvcklubGluZXMuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpfX2ZvcmNlaW5saW5lIHZvaWQqIEFsbG9jYXRvcjo6
YWxsb2NhdGUoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGNvbnRleHQsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZSBtb2RlKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2xvY2FsQWxsb2NhdG9y
LT5hbGxvY2F0ZShoZWFwLCBjb250ZXh0LCBtb2RlKTsNCn0NCg0KfSANCg0KI2xpbmUgMzAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
SlNDZWxsSW5saW5lcy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxDb21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCl9fZm9yY2VpbmxpbmUgdm9pZCogQ29tcGxl
dGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVm
ZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWls
dXJlTW9kZSkNCnsNCiAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQ0KICAgICAg
ICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7DQoNCiAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9
IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpKQ0KICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRl
ZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOw0KICAgIHJldHVybiBhbGxvY2F0ZVNsb3codm0s
IHNpemUsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOw0KfQ0KDQp9IA0KDQojbGluZSAz
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxKU0NlbGxJbmxpbmVzLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENhbGxGcmFtZUlubGluZXMu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXFJlZ2lzdGVySW5saW5lcy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KX19mb3JjZWlubGluZSBDYWxsRnJhbWUq
IFJlZ2lzdGVyOjpjYWxsRnJhbWUoKSBjb25zdA0Kew0KICAgIHJldHVybiB1LmNhbGxGcmFtZTsN
Cn0NCg0KX19mb3JjZWlubGluZSBDb2RlQmxvY2sqIFJlZ2lzdGVyOjpjb2RlQmxvY2soKSBjb25z
dA0Kew0KICAgIHJldHVybiB1LmNvZGVCbG9jazsNCn0NCg0KIF9fZm9yY2VpbmxpbmUgQ29kZUJs
b2NrKiBSZWdpc3Rlcjo6YXNhblVuc2FmZUNvZGVCbG9jaygpIGNvbnN0DQp7DQogICAgcmV0dXJu
IHUuY29kZUJsb2NrOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTT2JqZWN0KiBSZWdpc3Rlcjo6b2Jq
ZWN0KCkgY29uc3QNCnsNCiAgICByZXR1cm4gYXNPYmplY3QoanNWYWx1ZSgpKTsNCn0NCg0KX19m
b3JjZWlubGluZSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShDYWxsRnJhbWUqIGNhbGxG
cmFtZSkNCnsNCiAgICB1LmNhbGxGcmFtZSA9IGNhbGxGcmFtZTsNCiAgICByZXR1cm4gKnRoaXM7
DQp9DQoNCl9fZm9yY2VpbmxpbmUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0oQ29kZUJs
b2NrKiBjb2RlQmxvY2spDQp7DQogICAgdS5jb2RlQmxvY2sgPSBjb2RlQmxvY2s7DQogICAgcmV0
dXJuICp0aGlzOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIFJlZ2lzdGVyJiBSZWdpc3Rlcjo6b3BlcmF0
b3I9KEpTT2JqZWN0KiBvYmplY3QpDQp7DQogICAgdS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKG9iamVjdCkpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KX19mb3JjZWlubGluZSBS
ZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShKU1Njb3BlKiBzY29wZSkNCnsNCiAgICAqdGhp
cyA9IEpTVmFsdWUoc2NvcGUpOw0KICAgIHJldHVybiAqdGhpczsNCn0NCg0KX19mb3JjZWlubGlu
ZSBSZWdpc3RlciYgUmVnaXN0ZXI6Om9wZXJhdG9yPShFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNW
YWx1ZSkNCnsNCiAgICB1LnZhbHVlID0gZW5jb2RlZEpTVmFsdWU7DQogICAgcmV0dXJuICp0aGlz
Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTU2NvcGUqIFJlZ2lzdGVyOjpzY29wZSgpIGNvbnN0DQp7
DQogICAgcmV0dXJuIGpzQ2FzdDxKU1Njb3BlKj4odW5ib3hlZENlbGwoKSk7DQp9DQoNCn0gDQoj
bGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxpbnRlcnByZXRlclxcQ2FsbEZyYW1lSW5saW5lcy5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0K
aW5saW5lIFJlZ2lzdGVyJiBDYWxsRnJhbWU6OnIoVmlydHVhbFJlZ2lzdGVyIHJlZykNCnsNCiAg
ICBpZiAocmVnLmlzQ29uc3RhbnQoKSkNCiAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PFJlZ2lzdGVyKj4oJnRoaXMtPmNvZGVCbG9jaygpLT5jb25zdGFudFJlZ2lzdGVyKHJlZykpOw0K
ICAgIHJldHVybiB0aGlzW3JlZy5vZmZzZXQoKV07DQp9DQoNCmlubGluZSBSZWdpc3RlciYgQ2Fs
bEZyYW1lOjp1bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlciByZWcpDQp7DQogICAgKCh2b2lkKTAp
Ow0KICAgIHJldHVybiB0aGlzW3JlZy5vZmZzZXQoKV07DQp9DQoNCmlubGluZSBKU1ZhbHVlIENh
bGxGcmFtZTo6Z3VhcmFudGVlZEpTVmFsdWVDYWxsZWUoKSBjb25zdA0Kew0KICAgICgodm9pZCkw
KTsNCiAgICByZXR1cm4gdGhpc1tzdGF0aWNfY2FzdDxpbnQ+KENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSldLmpzVmFsdWUoKTsNCn0NCg0KaW5saW5lIEpTT2JqZWN0KiBDYWxsRnJhbWU6OmpzQ2FsbGVl
KCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIHRoaXNbc3RhdGljX2Nhc3Q8
aW50PihDYWxsRnJhbWVTbG90OjpjYWxsZWUpXS5vYmplY3QoKTsNCn0NCg0KaW5saW5lIENvZGVC
bG9jayogQ2FsbEZyYW1lOjpjb2RlQmxvY2soKSBjb25zdA0Kew0KICAgIHJldHVybiB0aGlzW3N0
YXRpY19jYXN0PGludD4oQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKV0uUmVnaXN0ZXI6OmNvZGVC
bG9jaygpOw0KfQ0KDQppbmxpbmUgIENvZGVCbG9jayogQ2FsbEZyYW1lOjp1bnNhZmVDb2RlQmxv
Y2soKSBjb25zdA0Kew0KICAgIHJldHVybiB0aGlzW3N0YXRpY19jYXN0PGludD4oQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKV0uUmVnaXN0ZXI6OmFzYW5VbnNhZmVDb2RlQmxvY2soKTsNCn0NCg0K
aW5saW5lIEpTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QoVk0m
IHZtKSBjb25zdA0Kew0KICAgICh2b2lkKXZtOw0KDQoNCg0KI2xpbmUgNzcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50ZXJwcmV0ZXJcXENhbGxG
cmFtZUlubGluZXMuaCINCiAgICByZXR1cm4ganNDYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7DQp9
DQoNCmlubGluZSBib29sIENhbGxGcmFtZTo6aXNTdGFja092ZXJmbG93RnJhbWUoKSBjb25zdA0K
ew0KICAgIGlmIChjYWxsZWUoKS5pc1dhc20oKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
IHJldHVybiBqc0NhbGxlZSgpID09IGpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zdGFja092
ZXJmbG93RnJhbWVDYWxsZWUoKTsNCn0NCg0KaW5saW5lIGJvb2wgQ2FsbEZyYW1lOjppc1dhc21G
cmFtZSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIGNhbGxlZSgpLmlzV2FzbSgpOw0KfQ0KDQppbmxp
bmUgdm9pZCBDYWxsRnJhbWU6OnNldENhbGxlZShKU09iamVjdCogY2FsbGVlKQ0Kew0KICAgIHN0
YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbc3RhdGljX2Nhc3Q8aW50PihDYWxsRnJhbWVTbG90
OjpjYWxsZWUpXSA9IGNhbGxlZTsNCn0NCg0KaW5saW5lIHZvaWQgQ2FsbEZyYW1lOjpzZXRDb2Rl
QmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spDQp7DQogICAgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
Pih0aGlzKVtzdGF0aWNfY2FzdDxpbnQ+KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayldID0gY29k
ZUJsb2NrOw0KfQ0KDQppbmxpbmUgdm9pZCBDYWxsRnJhbWU6OnNldFNjb3BlKGludCBzY29wZVJl
Z2lzdGVyT2Zmc2V0LCBKU1Njb3BlKiBzY29wZSkNCnsNCiAgICBzdGF0aWNfY2FzdDxSZWdpc3Rl
cio+KHRoaXMpW3Njb3BlUmVnaXN0ZXJPZmZzZXRdID0gc2NvcGU7DQp9DQoNCmlubGluZSBKU1Nj
b3BlKiBDYWxsRnJhbWU6OnNjb3BlKGludCBzY29wZVJlZ2lzdGVyT2Zmc2V0KSBjb25zdA0Kew0K
ICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gdGhpc1tzY29wZVJlZ2lzdGVyT2Zmc2V0XS5SZWdp
c3Rlcjo6c2NvcGUoKTsNCn0NCg0KaW5saW5lIFJlZ2lzdGVyKiBDYWxsRnJhbWU6OnRvcE9mRnJh
bWUoKQ0Kew0KICAgIGlmICghY29kZUJsb2NrKCkpDQogICAgICAgIHJldHVybiByZWdpc3RlcnMo
KTsNCiAgICByZXR1cm4gdG9wT2ZGcmFtZUludGVybmFsKCk7DQp9DQoNCn0gDQojbGluZSAzMyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxKU0NlbGxJbmxpbmVzLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcRnJlZUxpc3RJbmxpbmVzLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCl9fZm9y
Y2VpbmxpbmUgSGVhcENlbGwqIEZyZWVMaXN0OjphbGxvY2F0ZShjb25zdCBGdW5jJiBzbG93UGF0
aCkNCnsNCiAgICB1bnNpZ25lZCByZW1haW5pbmcgPSBtX3JlbWFpbmluZzsNCiAgICBpZiAocmVt
YWluaW5nKSB7DQogICAgICAgIHVuc2lnbmVkIGNlbGxTaXplID0gbV9jZWxsU2l6ZTsNCiAgICAg
ICAgcmVtYWluaW5nIC09IGNlbGxTaXplOw0KICAgICAgICBtX3JlbWFpbmluZyA9IHJlbWFpbmlu
ZzsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KG1fcGF5bG9hZEVuZCAt
IHJlbWFpbmluZyAtIGNlbGxTaXplKTsNCiAgICB9DQoNCg0KICAgIEF0b21zQml0bWFwOjpXb3Jk
IHJvd0JpdG1hcCA9IG1fY3VycmVudFJvd0JpdG1hcDsNCiAgICBkbyB7DQogICAgICAgIGlmIChy
b3dCaXRtYXApIHsNCiAgICAgICAgICAgIGNvbnN0ZXhwciBBdG9tc0JpdG1hcDo6V29yZCBvbmUg
PSAxOw0KICAgICAgICAgICAgdW5zaWduZWQgYXRvbUluZGV4SW5Sb3cgPSBjdHoocm93Qml0bWFw
KTsNCiAgICAgICAgICAgIGF1dG8qIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPigmbV9j
dXJyZW50TWFya2VkQmxvY2tSb3dBZGRyZXNzW2F0b21JbmRleEluUm93XSk7DQogICAgICAgICAg
ICByb3dCaXRtYXAgJj0gfihvbmUgPDwgYXRvbUluZGV4SW5Sb3cpOw0KICAgICAgICAgICAgbV9j
dXJyZW50Um93Qml0bWFwID0gcm93Qml0bWFwOw0KICAgICAgICAgICAgcmV0dXJuIGNlbGw7DQog
ICAgICAgIH0NCg0KICAgICAgICB1bnNpZ25lZCByb3dJbmRleCA9IG1fY3VycmVudFJvd0luZGV4
Ow0KICAgICAgICBhdXRvKiByb3dBZGRyZXNzID0gbV9jdXJyZW50TWFya2VkQmxvY2tSb3dBZGRy
ZXNzOw0KICAgICAgICB3aGlsZSAocm93SW5kZXgpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIHJvd0JpdG1hcCA9IGJpdG1hcFJvd3NNaW51
c09uZSgpW3Jvd0luZGV4LS1dOw0KICAgICAgICAgICAgcm93QWRkcmVzcyAtPSBhdG9tc1BlclJv
dzsNCiAgICAgICAgICAgIGlmIChyb3dCaXRtYXApDQogICAgICAgICAgICAgICAgYnJlYWs7DQog
ICAgICAgIH0NCiAgICAgICAgbV9jdXJyZW50TWFya2VkQmxvY2tSb3dBZGRyZXNzID0gcm93QWRk
cmVzczsNCiAgICAgICAgbV9jdXJyZW50Um93SW5kZXggPSByb3dJbmRleDsNCiAgICB9IHdoaWxl
IChyb3dCaXRtYXApOw0KDQogICAgbV9jdXJyZW50Um93Qml0bWFwID0gcm93Qml0bWFwOw0KICAg
ICgodm9pZCkwKTsNCiAgICByZXR1cm4gc2xvd1BhdGgoKTsNCg0KDQoNCg0KDQoNCg0KDQojbGlu
ZSA4MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxo
ZWFwXFxGcmVlTGlzdElubGluZXMuaCINCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCnZv
aWQgRnJlZUxpc3Q6OmZvckVhY2goY29uc3QgRnVuYyYgZnVuYykgY29uc3QNCnsNCiAgICBpZiAo
bV9yZW1haW5pbmcpIHsNCiAgICAgICAgZm9yICh1bnNpZ25lZCByZW1haW5pbmcgPSBtX3JlbWFp
bmluZzsgcmVtYWluaW5nOyByZW1haW5pbmcgLT0gbV9jZWxsU2l6ZSkNCiAgICAgICAgICAgIGZ1
bmMoYml0d2lzZV9jYXN0PEhlYXBDZWxsKj4obV9wYXlsb2FkRW5kIC0gcmVtYWluaW5nKSk7DQog
ICAgfSBlbHNlIHsNCg0KICAgICAgICBpZiAoYml0bWFwSXNFbXB0eSgpKQ0KICAgICAgICAgICAg
cmV0dXJuOw0KDQogICAgICAgIEF0b21zQml0bWFwOjpXb3JkIHJvd0JpdG1hcCA9IG1fY3VycmVu
dFJvd0JpdG1hcDsNCiAgICAgICAgdW5zaWduZWQgcm93SW5kZXggPSBtX2N1cnJlbnRSb3dJbmRl
eDsNCiAgICAgICAgQXRvbSogY3VycmVudE1hcmtlZEJsb2NrUm93QWRkcmVzcyA9IG1fY3VycmVu
dE1hcmtlZEJsb2NrUm93QWRkcmVzczsNCiAgICAgICAgZG8gew0KICAgICAgICAgICAgd2hpbGUg
KHJvd0JpdG1hcCkgew0KICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBBdG9tc0JpdG1hcDo6V29y
ZCBvbmUgPSAxOw0KICAgICAgICAgICAgICAgIHVuc2lnbmVkIGF0b21JbmRleEluUm93ID0gY3R6
KHJvd0JpdG1hcCk7DQogICAgICAgICAgICAgICAgYXV0byogY2VsbCA9IGJpdHdpc2VfY2FzdDxI
ZWFwQ2VsbCo+KCZjdXJyZW50TWFya2VkQmxvY2tSb3dBZGRyZXNzW2F0b21JbmRleEluUm93XSk7
DQogICAgICAgICAgICAgICAgcm93Qml0bWFwICY9IH4ob25lIDw8IGF0b21JbmRleEluUm93KTsN
CiAgICAgICAgICAgICAgICBmdW5jKGNlbGwpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAg
ICB3aGlsZSAocm93SW5kZXgpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICByb3dCaXRtYXAgPSBiaXRtYXBSb3dz
TWludXNPbmUoKVtyb3dJbmRleC0tXTsNCiAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VkQmxv
Y2tSb3dBZGRyZXNzIC09IGF0b21zUGVyUm93Ow0KICAgICAgICAgICAgICAgIGlmIChyb3dCaXRt
YXApDQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
IHdoaWxlIChyb3dCaXRtYXApOw0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyNyAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxGcmVlTGlzdElu
bGluZXMuaCINCiAgICB9DQp9DQoNCn0gDQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NlbGxJbmxpbmVzLmgiDQoN
Cg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxoZWFwXFxJc29TdWJzcGFjZUlubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQpfX2ZvcmNlaW5saW5lIHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwo
Vk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQ0Kew0KICAgIGRvIHsgaWYgKCghKFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNl
bGxTaXplKCkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVy
RmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDMyLCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxJc29TdWJzcGFjZUlubGluZXMu
aCIsICBfX0ZVTkNUSU9OX18gICwgMTQzICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
DQogICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwg
QWxsb2NhdG9yRm9yTW9kZTo6TXVzdEFscmVhZHlIYXZlQWxsb2NhdG9yKTsNCiAgICB2b2lkKiBy
ZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWls
dXJlTW9kZSk7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KaW5saW5lIHZvaWQgSXNvU3Vic3Bh
Y2U6OmNsZWFySXNvQ2VsbFNldEJpdChQcmVjaXNlQWxsb2NhdGlvbiogcHJlY2lzZUFsbG9jYXRp
b24pDQp7DQogICAgdW5zaWduZWQgbG93ZXJUaWVySW5kZXggPSBwcmVjaXNlQWxsb2NhdGlvbi0+
bG93ZXJUaWVySW5kZXgoKTsNCiAgICBtX2NlbGxTZXRzLmZvckVhY2goDQogICAgICAgIFsmXShJ
c29DZWxsU2V0KiBzZXQpIHsNCiAgICAgICAgICAgIHNldC0+Y2xlYXJMb3dlclRpZXJDZWxsKGxv
d2VyVGllckluZGV4KTsNCiAgICAgICAgfSk7DQp9DQoNCmlubGluZSB2b2lkIElzb1N1YnNwYWNl
Ojpzd2VlcCgpDQp7DQogICAgU3Vic3BhY2U6OnN3ZWVwQmxvY2tzKCk7DQogICAgDQogICAgDQog
ICAgbV9wcmVjaXNlQWxsb2NhdGlvbnMuZm9yRWFjaChbJl0oUHJlY2lzZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24pIHsNCiAgICAgICAgYWxsb2NhdGlvbi0+c3dlZXAoKTsNCiAgICB9KTsNCn0NCg0K
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4NCnZvaWQgSXNvU3Vic3BhY2U6OmZvckVhY2hMb3dlclRp
ZXJGcmVlTGlzdGVkUHJlY2lzZUFsbG9jYXRpb24oY29uc3QgRnVuYyYgZnVuYykNCnsNCiAgICBt
X2xvd2VyVGllckZyZWVMaXN0LmZvckVhY2goZnVuYyk7DQp9DQoNCn0gDQoNCiNsaW5lIDM4ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEpTQ2VsbElubGluZXMuaCINCg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXExvY2FsQWxsb2NhdG9ySW5saW5l
cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCl9fZm9yY2VpbmxpbmUgdm9p
ZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0
KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkNCnsN
CiAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQ0KICAgICAgICBoZWFwLnZlcmlm
eUNhbkdDKCk7DQogICAgcmV0dXJuIG1fZnJlZUxpc3QuYWxsb2NhdGUoDQogICAgICAgIFsmXSAo
KSAtPiBIZWFwQ2VsbCogew0KICAgICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKGhlYXAudm0o
KSk7DQogICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SGVhcENlbGwqPihhbGxvY2F0ZVNs
b3dDYXNlKGhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpKTsNCiAgICAgICAgfSk7
DQp9DQoNCn0gDQoNCiNsaW5lIDQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ2VsbElubGluZXMuaCINCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxTbG90
VmlzaXRvcklubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFdlYWtJbmxpbmVzLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaGVhcFxcV2Vha1NldElubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcQ2Vs
bENvbnRhaW5lcklubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQppbmxpbmUgVk0mIENlbGxDb250YWluZXI6OnZtKCkgY29uc3QNCnsNCiAgICBpZiAoaXNQ
cmVjaXNlQWxsb2NhdGlvbigpKQ0KICAgICAgICByZXR1cm4gcHJlY2lzZUFsbG9jYXRpb24oKS52
bSgpOw0KICAgIHJldHVybiBtYXJrZWRCbG9jaygpLnZtKCk7DQp9DQoNCmlubGluZSBIZWFwKiBD
ZWxsQ29udGFpbmVyOjpoZWFwKCkgY29uc3QNCnsNCiAgICByZXR1cm4gJnZtKCkuaGVhcDsNCn0N
Cg0KaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQoSGVhcENlbGwqIGNlbGwpIGNv
bnN0DQp7DQogICAgaWYgKGlzUHJlY2lzZUFsbG9jYXRpb24oKSkNCiAgICAgICAgcmV0dXJuIHBy
ZWNpc2VBbGxvY2F0aW9uKCkuaXNNYXJrZWQoKTsNCiAgICByZXR1cm4gbWFya2VkQmxvY2soKS5p
c01hcmtlZChjZWxsKTsNCn0NCg0KaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWQo
SGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIEhlYXBDZWxsKiBjZWxsKSBjb25zdA0Kew0KICAg
IGlmIChpc1ByZWNpc2VBbGxvY2F0aW9uKCkpDQogICAgICAgIHJldHVybiBwcmVjaXNlQWxsb2Nh
dGlvbigpLmlzTWFya2VkKCk7DQogICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuaXNNYXJrZWQobWFy
a2luZ1ZlcnNpb24sIGNlbGwpOw0KfQ0KDQppbmxpbmUgdm9pZCBDZWxsQ29udGFpbmVyOjpub3Rl
TWFya2VkKCkNCnsNCiAgICBpZiAoIWlzUHJlY2lzZUFsbG9jYXRpb24oKSkNCiAgICAgICAgbWFy
a2VkQmxvY2soKS5ub3RlTWFya2VkKCk7DQp9DQoNCmlubGluZSB2b2lkIENlbGxDb250YWluZXI6
OmFzc2VydFZhbGlkQ2VsbChWTSYgdm0sIEhlYXBDZWxsKiBjZWxsKSBjb25zdA0Kew0KICAgIGlm
IChpc1ByZWNpc2VBbGxvY2F0aW9uKCkpDQogICAgICAgIHByZWNpc2VBbGxvY2F0aW9uKCkuYXNz
ZXJ0VmFsaWRDZWxsKHZtLCBjZWxsKTsNCiAgICBlbHNlDQogICAgICAgIG1hcmtlZEJsb2NrKCku
YXNzZXJ0VmFsaWRDZWxsKHZtLCBjZWxsKTsNCn0NCg0KaW5saW5lIHNpemVfdCBDZWxsQ29udGFp
bmVyOjpjZWxsU2l6ZSgpIGNvbnN0DQp7DQogICAgaWYgKGlzUHJlY2lzZUFsbG9jYXRpb24oKSkN
CiAgICAgICAgcmV0dXJuIHByZWNpc2VBbGxvY2F0aW9uKCkuY2VsbFNpemUoKTsNCiAgICByZXR1
cm4gbWFya2VkQmxvY2soKS5jZWxsU2l6ZSgpOw0KfQ0KDQppbmxpbmUgV2Vha1NldCYgQ2VsbENv
bnRhaW5lcjo6d2Vha1NldCgpIGNvbnN0DQp7DQogICAgaWYgKGlzUHJlY2lzZUFsbG9jYXRpb24o
KSkNCiAgICAgICAgcmV0dXJuIHByZWNpc2VBbGxvY2F0aW9uKCkud2Vha1NldCgpOw0KICAgIHJl
dHVybiBtYXJrZWRCbG9jaygpLndlYWtTZXQoKTsNCn0NCg0KaW5saW5lIHZvaWQgQ2VsbENvbnRh
aW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pDQp7DQogICAgaWYg
KCFpc1ByZWNpc2VBbGxvY2F0aW9uKCkpDQogICAgICAgIG1hcmtlZEJsb2NrKCkuYWJvdXRUb01h
cmsobWFya2luZ1ZlcnNpb24pOw0KfQ0KDQppbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjphcmVN
YXJrc1N0YWxlKCkgY29uc3QNCnsNCiAgICBpZiAoaXNQcmVjaXNlQWxsb2NhdGlvbigpKQ0KICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkuYXJlTWFya3NTdGFs
ZSgpOw0KfQ0KDQp9IA0KDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxXZWFrU2V0SW5saW5lcy5oIg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQppbmxpbmUgV2Vha0ltcGwqIFdlYWtTZXQ6OmFsbG9jYXRlKEpTVmFsdWUganNW
YWx1ZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIsIHZvaWQqIGNvbnRleHQpDQp7
DQogICAgQ2VsbENvbnRhaW5lciBjb250YWluZXIgPSBqc1ZhbHVlLmFzQ2VsbCgpLT5jZWxsQ29u
dGFpbmVyKCk7DQogICAgV2Vha1NldCYgd2Vha1NldCA9IGNvbnRhaW5lci53ZWFrU2V0KCk7DQog
ICAgV2Vha0Jsb2NrOjpGcmVlQ2VsbCogYWxsb2NhdG9yID0gd2Vha1NldC5tX2FsbG9jYXRvcjsN
CiAgICBpZiAoKCFhbGxvY2F0b3IpKQ0KICAgICAgICBhbGxvY2F0b3IgPSB3ZWFrU2V0LmZpbmRB
bGxvY2F0b3IoY29udGFpbmVyKTsNCiAgICB3ZWFrU2V0Lm1fYWxsb2NhdG9yID0gYWxsb2NhdG9y
LT5uZXh0Ow0KDQogICAgV2Vha0ltcGwqIHdlYWtJbXBsID0gV2Vha0Jsb2NrOjphc1dlYWtJbXBs
KGFsbG9jYXRvcik7DQogICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgd2Vha0ltcGwpIFdlYWtJbXBs
KGpzVmFsdWUsIHdlYWtIYW5kbGVPd25lciwgY29udGV4dCk7DQp9DQoNCmlubGluZSB2b2lkIFdl
YWtCbG9jazo6ZmluYWxpemUoV2Vha0ltcGwqIHdlYWtJbXBsKQ0Kew0KICAgICgodm9pZCkwKTsN
CiAgICB3ZWFrSW1wbC0+c2V0U3RhdGUoV2Vha0ltcGw6OkZpbmFsaXplZCk7DQogICAgV2Vha0hh
bmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIgPSB3ZWFrSW1wbC0+d2Vha0hhbmRsZU93bmVyKCk7
DQogICAgaWYgKCF3ZWFrSGFuZGxlT3duZXIpDQogICAgICAgIHJldHVybjsNCiAgICB3ZWFrSGFu
ZGxlT3duZXItPmZpbmFsaXplKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3QoJmNvbnN0X2Nhc3Q8
SlNWYWx1ZSY+KHdlYWtJbXBsLT5qc1ZhbHVlKCkpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSk7DQp9
DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxoZWFwXFxXZWFrSW5saW5lcy5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2VhayhUKiBjZWxsLCBXZWFrSGFu
ZGxlT3duZXIqIHdlYWtPd25lciwgdm9pZCogY29udGV4dCkNCiAgICA6IG1faW1wbChjZWxsID8g
V2Vha1NldDo6YWxsb2NhdGUoY2VsbCwgd2Vha093bmVyLCBjb250ZXh0KSA6IG51bGxwdHIpDQp7
DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46OmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9pbXBsID09IGhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxU
Pjo6V2VhayhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpDQogICAgOiBtX2ltcGwoaGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkpDQp7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBXZWFrPFQ+OjpXZWFrKFdlYWsmJiBvdGhlcikNCiAgICA6IG1faW1wbChvdGhlci5sZWFrSW1w
bCgpKQ0Kew0KfQ0KDQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFdlYWs8VD4m
IGEsIFdlYWs8VD4mIGIpDQp7DQogICAgYS5zd2FwKGIpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCBXZWFrPFQ+Ojpzd2FwKFdlYWsmIG90aGVyKQ0Kew0KICAgIHN0ZDo6
c3dhcChtX2ltcGwsIG90aGVyLm1faW1wbCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBhdXRvIFdlYWs8VD46Om9wZXJhdG9yPShXZWFrJiYgb3RoZXIpIC0+IFdlYWsmDQp7DQog
ICAgV2VhayB3ZWFrID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihvdGhlcik7
DQogICAgc3dhcCh3ZWFrKTsNCiAgICByZXR1cm4gKnRoaXM7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpvcGVyYXRvci0+KCkgY29uc3QNCnsNCiAgICAoKHZv
aWQpMCk7DQogICAgDQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUo
KS5hc0NlbGwoKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBXZWFrPFQ+
OjpvcGVyYXRvciooKSBjb25zdA0Kew0KICAgICgodm9pZCkwKTsNCiAgICANCiAgICByZXR1cm4g
KnN0YXRpY19jYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpnZXQoKSBjb25zdA0Kew0KICAgIGlm
ICghbV9pbXBsIHx8IG1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZSkNCiAgICAgICAg
cmV0dXJuIG51bGxwdHI7DQogICAgDQogICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2ltcGwt
PmpzVmFsdWUoKS5hc0NlbGwoKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBi
b29sIFdlYWs8VD46OndhcyhUKiBvdGhlcikgY29uc3QNCnsNCiAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VCo+KG1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKSA9PSBvdGhlcjsNCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QNCnsN
CiAgICByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5zdGF0
ZSgpICE9IFdlYWtJbXBsOjpMaXZlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
V2VhazxUPjo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0DQp7DQogICAgcmV0dXJuICEhKnRoaXM7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrSW1wbCogV2VhazxUPjo6bGVha0lt
cGwoKQ0Kew0KICAgIFdlYWtJbXBsKiBpbXBsID0gbV9pbXBsOw0KICAgIG1faW1wbCA9IG51bGxw
dHI7DQogICAgcmV0dXJuIGltcGw7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBX
ZWFrSW1wbCogV2VhazxUPjo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkNCnsNCiAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXZWFrSW1wbCo+KC0xKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2VhazxUPiYgbGhzLCBjb25zdCBXZWFr
PFQ+JiByaHMpDQp7DQogICAgcmV0dXJuIGxocy5nZXQoKSA9PSByaHMuZ2V0KCk7DQp9DQoNCg0K
DQp0ZW1wbGF0ZTx0eXBlbmFtZSBNYXAsIHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWU+IGlu
bGluZSB2b2lkIHdlYWtBZGQoTWFwJiBtYXAsIGNvbnN0IEtleSYga2V5LCBWYWx1ZSYmIHZhbHVl
KQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICBtYXAuc2V0KGtleSwgc3RkOjpmb3J3YXJkPFZhbHVl
Pih2YWx1ZSkpOyANCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrUmVtb3ZlKE1hcCYgbWFwLCBjb25zdCBLZXkm
IGtleSwgVmFsdWUgdmFsdWUpDQp7DQogICAgdHlwZW5hbWUgTWFwOjppdGVyYXRvciBpdCA9IG1h
cC5maW5kKGtleSk7DQogICAgKCh2b2lkKXZhbHVlKTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2
b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICBtYXAucmVtb3ZlKGl0KTsNCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4mIHdlYWssIFQqIGNl
bGwpDQp7DQogICAgKCh2b2lkKWNlbGwpOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7
DQogICAgd2Vhay5jbGVhcigpOw0KfQ0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcU2xvdFZpc2l0b3JJbmxpbmVz
LmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpfX2ZvcmNlaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6
OmFwcGVuZFVuYmFycmllcmVkKEpTVmFsdWUqIHNsb3QsIHNpemVfdCBjb3VudCkNCnsNCiAgICBm
b3IgKHNpemVfdCBpID0gY291bnQ7IGktLTspDQogICAgICAgIGFwcGVuZFVuYmFycmllcmVkKHNs
b3RbaV0pOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFy
cmllcmVkKEpTQ2VsbCogY2VsbCkNCnsNCiAgICANCiAgICANCiAgICANCiAgICBpZiAoIWNlbGwp
DQogICAgICAgIHJldHVybjsNCiAgICANCiAgICBEZXBlbmRlbmN5IGRlcGVuZGVuY3k7DQogICAg
aWYgKChjZWxsLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCkpKSB7DQogICAgICAgIGlmICgoY2VsbC0+
cHJlY2lzZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpKSkgew0KICAgICAgICAgICAgaWYgKCghbV9o
ZWFwQW5hbHl6ZXIpKQ0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgIH0g
ZWxzZSB7DQogICAgICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7
DQogICAgICAgIGRlcGVuZGVuY3kgPSBibG9jay5hYm91dFRvTWFyayhtX21hcmtpbmdWZXJzaW9u
KTsNCiAgICAgICAgaWYgKChibG9jay5pc01hcmtlZChjZWxsLCBkZXBlbmRlbmN5KSkpIHsNCiAg
ICAgICAgICAgIGlmICgoIW1faGVhcEFuYWx5emVyKSkNCiAgICAgICAgICAgICAgICByZXR1cm47
DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgYXBwZW5kU2xvdyhjZWxsLCBkZXBlbmRlbmN5
KTsNCn0NCg0KX19mb3JjZWlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJl
ZChKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkNCiAgICAgICAgYXBw
ZW5kVW5iYXJyaWVyZWQodmFsdWUuYXNDZWxsKCkpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHZvaWQg
U2xvdFZpc2l0b3I6OmFwcGVuZEhpZGRlblVuYmFycmllcmVkKEpTVmFsdWUgdmFsdWUpDQp7DQog
ICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQ0KICAgICAgICBhcHBlbmRIaWRkZW5VbmJhcnJpZXJlZCh2
YWx1ZS5hc0NlbGwoKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBw
ZW5kSGlkZGVuVW5iYXJyaWVyZWQoSlNDZWxsKiBjZWxsKQ0Kew0KICAgIA0KICAgIA0KICAgIA0K
ICAgIGlmICghY2VsbCkNCiAgICAgICAgcmV0dXJuOw0KICAgIA0KICAgIERlcGVuZGVuY3kgZGVw
ZW5kZW5jeTsNCiAgICBpZiAoKGNlbGwtPmlzUHJlY2lzZUFsbG9jYXRpb24oKSkpIHsNCiAgICAg
ICAgaWYgKChjZWxsLT5wcmVjaXNlQWxsb2NhdGlvbigpLmlzTWFya2VkKCkpKQ0KICAgICAgICAg
ICAgcmV0dXJuOw0KICAgIH0gZWxzZSB7DQogICAgICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNl
bGwtPm1hcmtlZEJsb2NrKCk7DQogICAgICAgIGRlcGVuZGVuY3kgPSBibG9jay5hYm91dFRvTWFy
ayhtX21hcmtpbmdWZXJzaW9uKTsNCiAgICAgICAgaWYgKChibG9jay5pc01hcmtlZChjZWxsLCBk
ZXBlbmRlbmN5KSkpDQogICAgICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIA0KICAgIGFwcGVu
ZEhpZGRlblNsb3coY2VsbCwgZGVwZW5kZW5jeSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+
DQpfX2ZvcmNlaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZChjb25zdCBXZWFrPFQ+JiB3
ZWFrKQ0Kew0KICAgIGFwcGVuZFVuYmFycmllcmVkKHdlYWsuZ2V0KCkpOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+DQpfX2ZvcmNlaW5saW5lIHZvaWQgU2xvdFZp
c2l0b3I6OmFwcGVuZChjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4mIHNsb3QpDQp7
DQogICAgYXBwZW5kVW5iYXJyaWVyZWQoc2xvdC5nZXQoKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4NCl9fZm9yY2VpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6
YXBwZW5kSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VCwgVHJhaXRzPiYgc2xvdCkNCnsN
CiAgICBhcHBlbmRIaWRkZW5VbmJhcnJpZXJlZChzbG90LmdldCgpKTsNCn0NCg0KdGVtcGxhdGU8
dHlwZW5hbWUgSXRlcmF0b3I+DQpfX2ZvcmNlaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVu
ZChJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQ0Kew0KICAgIGZvciAoYXV0byBpdCA9IGJl
Z2luOyBpdCAhPSBlbmQ7ICsraXQpDQogICAgICAgIGFwcGVuZCgqaXQpOw0KfQ0KDQpfX2ZvcmNl
aW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFZhbHVlcyhjb25zdCBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBiYXJyaWVycywgc2l6ZV90IGNvdW50KQ0Kew0KICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCiAgICAgICAgYXBwZW5kKGJhcnJpZXJzW2ldKTsNCn0N
Cg0KX19mb3JjZWlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRWYWx1ZXNIaWRkZW4oY29u
c3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogYmFycmllcnMsIHNpemVfdCBjb3VudCkNCnsN
CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpDQogICAgICAgIGFwcGVuZEhp
ZGRlbihiYXJyaWVyc1tpXSk7DQp9DQoNCmlubGluZSBib29sIFNsb3RWaXNpdG9yOjphZGRPcGFx
dWVSb290KHZvaWQqIHB0cikNCnsNCiAgICBpZiAoIXB0cikNCiAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KICAgIGlmIChtX2lnbm9yZU5ld09wYXF1ZVJvb3RzKQ0KICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgaWYgKCFoZWFwKCktPm1fb3BhcXVlUm9vdHMuYWRkKHB0cikpDQogICAgICAgIHJldHVy
biBmYWxzZTsNCiAgICBtX3Zpc2l0Q291bnQrKzsNCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KaW5s
aW5lIGJvb2wgU2xvdFZpc2l0b3I6OmNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKiBwdHIpIGNvbnN0
DQp7DQogICAgcmV0dXJuIGhlYXAoKS0+bV9vcGFxdWVSb290cy5jb250YWlucyhwdHIpOw0KfQ0K
DQppbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHNpemVf
dCBzaXplKQ0Kew0KICAgIGlmIChtX2lzRmlyc3RWaXNpdCkgew0KICAgICAgICBtX25vbkNlbGxW
aXNpdENvdW50ICs9IHNpemU7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgbV9leHRyYU1l
bW9yeVNpemUgKz0gc2l6ZTsNCiAgICB9DQp9DQoNCg0KaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6
OnJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZChzaXplX3Qgc2l6ZSkNCnsNCiAgICBpZiAobV9p
c0ZpcnN0VmlzaXQpDQogICAgICAgIGhlYXAoKS0+cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVk
KHNpemUpOw0KfQ0KI2xpbmUgMTcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGhlYXBcXFNsb3RWaXNpdG9ySW5saW5lcy5oIg0KDQppbmxpbmUgSGVh
cCogU2xvdFZpc2l0b3I6OmhlYXAoKSBjb25zdA0Kew0KICAgIHJldHVybiAmbV9oZWFwOw0KfQ0K
DQppbmxpbmUgVk0mIFNsb3RWaXNpdG9yOjp2bSgpDQp7DQogICAgcmV0dXJuIG1faGVhcC52bSgp
Ow0KfQ0KDQppbmxpbmUgY29uc3QgVk0mIFNsb3RWaXNpdG9yOjp2bSgpIGNvbnN0DQp7DQogICAg
cmV0dXJuIG1faGVhcC52bSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KSXRlcmF0
aW9uU3RhdHVzIFNsb3RWaXNpdG9yOjpmb3JFYWNoTWFya1N0YWNrKGNvbnN0IEZ1bmMmIGZ1bmMp
DQp7DQogICAgaWYgKGZ1bmMobV9jb2xsZWN0b3JTdGFjaykgPT0gSXRlcmF0aW9uU3RhdHVzOjpE
b25lKQ0KICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOw0KICAgIGlmIChmdW5j
KG1fbXV0YXRvclN0YWNrKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpDQogICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkRvbmU7DQogICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7DQp9DQoNCn0gDQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NlbGxJbmxpbmVzLmgiDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3
dGYvQ29tcGlsYXRpb25UaHJlYWQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0K
Y2xhc3MgQ29tcGlsYXRpb25TY29wZSBmaW5hbCB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1td
KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5l
d1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9p
ZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsg
cHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
byA9IGludDsNCnB1YmxpYzoNCiAgICBDb21waWxhdGlvblNjb3BlKCkNCiAgICAgICAgOiBtX29s
ZFZhbHVlKFRocmVhZDo6ZXhjaGFuZ2VJc0NvbXBpbGF0aW9uVGhyZWFkKHRydWUpKQ0KICAgIHsN
CiAgICB9DQogICAgDQogICAgfkNvbXBpbGF0aW9uU2NvcGUoKQ0KICAgIHsNCiAgICAgICAgVGhy
ZWFkOjpleGNoYW5nZUlzQ29tcGlsYXRpb25UaHJlYWQobV9vbGRWYWx1ZSk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgbGVhdmVFYXJseSgpDQogICAgew0KICAgICAgICBUaHJlYWQ6OmV4Y2hhbmdl
SXNDb21waWxhdGlvblRocmVhZChtX29sZFZhbHVlKTsNCiAgICB9DQpwcml2YXRlOg0KICAgIGJv
b2wgbV9vbGRWYWx1ZTsNCn07DQoNCn0gDQoNCnVzaW5nIFdURjo6Q29tcGlsYXRpb25TY29wZTsN
CiNsaW5lIDQ5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTQ2VsbElubGluZXMuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmlubGlu
ZSBKU0NlbGw6OkpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbFRhZykNCiAgICA6IG1fY2VsbFN0YXRl
KENlbGxTdGF0ZTo6RGVmaW5pdGVseVdoaXRlKQ0Kew0KICAgICgodm9pZCkwKTsNCn0NCg0KaW5s
aW5lIEpTQ2VsbDo6SlNDZWxsKFZNJiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgOiBtX3N0
cnVjdHVyZUlEKHN0cnVjdHVyZS0+aWQoKSkNCiAgICAsIG1faW5kZXhpbmdUeXBlQW5kTWlzYyhz
dHJ1Y3R1cmUtPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSkNCiAgICAsIG1fdHlwZShz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKQ0KICAgICwgbV9mbGFncyhzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpDQogICAgLCBtX2NlbGxTdGF0ZShDZWxsU3RhdGU6
OkRlZmluaXRlbHlXaGl0ZSkNCnsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBlbnN1cmVTdGls
bEFsaXZlSGVyZShzdHJ1Y3R1cmUpOw0KfQ0KDQppbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkNCnsNCiAgICANCiAgICANCiAgICB2bS5oZWFwLm11dGF0b3JGZW5jZSgp
Ow0KDQoNCg0KI2xpbmUgODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcSlNDZWxsSW5saW5lcy5oIg0KICAgICh2b2lkKXZtOw0KI2xp
bmUgOTEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcSlNDZWxsSW5saW5lcy5oIg0KICAgICgodm9pZCkwKTsNCn0NCg0KaW5saW5lIHZv
aWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
cmVhdGluZ0Vhcmx5Q2VsbFRhZykNCnsNCg0KDQoNCg0KI2xpbmUgMTAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ2VsbElubGlu
ZXMuaCINCiAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsNCiAgICAgICAg
bV9pbmRleGluZ1R5cGVBbmRNaXNjID0gc3RydWN0dXJlLT5pbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5KCk7DQogICAgICAgIG1fdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCk7
DQogICAgICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdz
KCk7DQoNCg0KI2xpbmUgMTA4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ2VsbElubGluZXMuaCINCiAgICAodm9pZCl2bTsNCiNs
aW5lIDExMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lXFxKU0NlbGxJbmxpbmVzLmgiDQogICAgDQogICAgKCh2b2lkKTApOw0KfQ0KDQpp
bmxpbmUgSlNUeXBlIEpTQ2VsbDo6dHlwZSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1fdHlwZTsN
Cn0NCg0KaW5saW5lIEluZGV4aW5nVHlwZSBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2MoKSBj
b25zdA0Kew0KICAgIHJldHVybiBtX2luZGV4aW5nVHlwZUFuZE1pc2M7DQp9DQoNCmlubGluZSBJ
bmRleGluZ1R5cGUgSlNDZWxsOjppbmRleGluZ1R5cGUoKSBjb25zdA0Kew0KICAgIHJldHVybiBp
bmRleGluZ1R5cGVBbmRNaXNjKCkgJiBBbGxXcml0YWJsZUFycmF5VHlwZXM7DQp9DQoNCmlubGlu
ZSBJbmRleGluZ1R5cGUgSlNDZWxsOjppbmRleGluZ01vZGUoKSBjb25zdA0Kew0KICAgIHJldHVy
biBpbmRleGluZ1R5cGVBbmRNaXNjKCkgJiBBbGxBcnJheVR5cGVzOw0KfQ0KDQpfX2ZvcmNlaW5s
aW5lIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdA0Kew0KICAgIHJldHVybiBz
dHJ1Y3R1cmUodm0oKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0
cnVjdHVyZShWTSYgdm0pIGNvbnN0DQp7DQogICAgcmV0dXJuIHZtLmdldFN0cnVjdHVyZShtX3N0
cnVjdHVyZUlEKTsNCn0NCg0KaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpDQp7DQogICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChjZWxsLT5zdHJ1Y3R1cmUodmlzaXRvci52bSgpKSk7DQp9DQoNCmlubGluZSB2b2lk
IEpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyhKU0NlbGwqLCBTbG90VmlzaXRvciYpDQp7
DQp9DQoNCl9fZm9yY2VpbmxpbmUgVk0mIENhbGxGcmFtZTo6ZGVwcmVjYXRlZFZNKCkgY29uc3QN
CnsNCiAgICBKU0NlbGwqIGNhbGxlZSA9IHRoaXMtPmNhbGxlZSgpLmFzQ2VsbCgpOw0KICAgICgo
dm9pZCkwKTsNCiAgICByZXR1cm4gY2FsbGVlLT52bSgpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPg0KaW5saW5lIEFsbG9jYXRvciBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVu
dGx5KFZNJiB2bSwgc2l6ZV90IGFsbG9jYXRpb25TaXplLCBBbGxvY2F0b3JGb3JNb2RlIG1vZGUp
DQp7DQogICAgaWYgKGF1dG8qIHN1YnNwYWNlID0gc3Vic3BhY2VGb3JDb25jdXJyZW50bHk8VHlw
ZT4odm0pKQ0KICAgICAgICByZXR1cm4gc3Vic3BhY2UtPmFsbG9jYXRvckZvck5vblZpcnR1YWwo
YWxsb2NhdGlvblNpemUsIG1vZGUpOw0KICAgIHJldHVybiB7IH07DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQ+DQpfX2ZvcmNlaW5saW5lIHZvaWQqIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcihIZWFw
JiBoZWFwLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQ0Kew0KICAgIFZNJiB2bSA9IGhlYXAu
dm0oKTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIEpTQ2VsbCogcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oc3Vic3BhY2VGb3I8VD4odm0pLT5hbGxvY2F0ZU5vblZp
cnR1YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpKTsNCiAgICBpZiAo
ZmFpbHVyZU1vZGUgPT0gQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsICYmICFyZXN1
bHQpDQogICAgICAgIHJldHVybiBudWxscHRyOw0KDQoNCg0KI2xpbmUgMTgxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ2VsbElu
bGluZXMuaCINCiAgICByZXN1bHQtPmNsZWFyU3RydWN0dXJlKCk7DQogICAgcmV0dXJuIHJlc3Vs
dDsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBo
ZWFwLCBzaXplX3Qgc2l6ZSkNCnsNCiAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+
KGhlYXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsNCn0N
Cg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiBoZWFw
LCBzaXplX3Qgc2l6ZSkNCnsNCiAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQ+KGhl
YXAsIHNpemUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQp2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwg
R0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgc2l6ZV90IHNpemUpDQp7DQogICAg
cmV0dXJuIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcjxUPihoZWFwLCBzaXplLCBkZWZlcnJhbENvbnRl
eHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4NCnZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4
dCogZGVmZXJyYWxDb250ZXh0LCBzaXplX3Qgc2l6ZSkNCnsNCiAgICByZXR1cm4gdHJ5QWxsb2Nh
dGVDZWxsSGVscGVyPFQ+KGhlYXAsIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsNCn0NCg0KaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVj
dCgpIGNvbnN0DQp7DQogICAgcmV0dXJuIFR5cGVJbmZvOjppc09iamVjdChtX3R5cGUpOw0KfQ0K
DQppbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV90
eXBlID09IFN0cmluZ1R5cGU7DQp9DQoNCmlubGluZSBib29sIEpTQ2VsbDo6aXNIZWFwQmlnSW50
KCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV90eXBlID09IEhlYXBCaWdJbnRUeXBlOw0KfQ0KDQpp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzU3ltYm9sKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV90eXBl
ID09IFN5bWJvbFR5cGU7DQp9DQoNCmlubGluZSBib29sIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXIo
KSBjb25zdA0Kew0KICAgIHJldHVybiBtX3R5cGUgPT0gR2V0dGVyU2V0dGVyVHlwZTsNCn0NCg0K
aW5saW5lIGJvb2wgSlNDZWxsOjppc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0DQp7DQogICAg
cmV0dXJuIG1fdHlwZSA9PSBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlOw0KfQ0KDQppbmxpbmUgYm9v
bCBKU0NlbGw6OmlzUHJveHkoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX3R5cGUgPT0gSW1wdXJl
UHJveHlUeXBlIHx8IG1fdHlwZSA9PSBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSB8fCBtX3R5cGUg
PT0gUHJveHlPYmplY3RUeXBlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNDZWxsOjppc0Nh
bGxhYmxlKFZNJiB2bSkNCnsNCiAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQ0KICAg
ICAgICByZXR1cm4gdHJ1ZTsNCiAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkgJiBPdmVycmlkZXNH
ZXRDYWxsRGF0YSkNCiAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEo
dGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZTsNCiAgICByZXR1cm4gZmFsc2U7DQp9
DQoNCmlubGluZSBib29sIEpTQ2VsbDo6aXNDb25zdHJ1Y3RvcihWTSYgdm0pDQp7DQogICAgcmV0
dXJuIG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxE
YXRhOjpUeXBlOjpOb25lOw0KfQ0KDQppbmxpbmUgYm9vbCBKU0NlbGw6OmlzQVBJVmFsdWVXcmFw
cGVyKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV90eXBlID09IEFQSVZhbHVlV3JhcHBlclR5cGU7
DQp9DQoNCl9fZm9yY2VpbmxpbmUgdm9pZCBKU0NlbGw6OnNldFN0cnVjdHVyZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQoj
bGluZSAyNjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNDZWxsSW5saW5lcy5oIg0KICAgIG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1
cmUtPmlkKCk7DQogICAgbV9mbGFncyA9IFR5cGVJbmZvOjptZXJnZUlubGluZVR5cGVGbGFncyhz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCksIG1fZmxhZ3MpOw0KICAgIG1f
dHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCk7DQogICAgSW5kZXhpbmdUeXBlIG5l
d0luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgp
Ow0KICAgIGlmIChtX2luZGV4aW5nVHlwZUFuZE1pc2MgIT0gbmV3SW5kZXhpbmdUeXBlKSB7DQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgZm9yICg7Oykgew0KICAgICAgICAgICAgSW5kZXhp
bmdUeXBlIG9sZFZhbHVlID0gbV9pbmRleGluZ1R5cGVBbmRNaXNjOw0KICAgICAgICAgICAgSW5k
ZXhpbmdUeXBlIG5ld1ZhbHVlID0gKG9sZFZhbHVlICYgfkFsbEFycmF5VHlwZXNBbmRIaXN0b3J5
KSB8IHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgpOw0KICAgICAgICAg
ICAgaWYgKFdURjo6YXRvbWljQ29tcGFyZUV4Y2hhbmdlV2Vha1JlbGF4ZWQoJm1faW5kZXhpbmdU
eXBlQW5kTWlzYywgb2xkVmFsdWUsIG5ld1ZhbHVlKSkNCiAgICAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgfQ0KICAgIH0NCiAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCBzdHJ1Y3R1
cmUpOw0KfQ0KDQppbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUo
Vk0mIHZtKSBjb25zdA0Kew0KICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0
dXJlKHZtKTsNCg0KDQoNCiNsaW5lIDI5MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NlbGxJbmxpbmVzLmgiDQogICAgcmV0dXJu
ICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZTsNCn0NCg0KaW5saW5lIGJvb2wg
SlNDZWxsOjppbmhlcml0cyhWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QNCnsN
CiAgICByZXR1cm4gY2xhc3NJbmZvKHZtKS0+aXNTdWJDbGFzc09mKGluZm8pOw0KfQ0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBUYXJnZXQ+DQppbmxpbmUgYm9vbCBKU0NlbGw6OmluaGVyaXRzKFZNJiB2
bSkgY29uc3QNCnsNCiAgICByZXR1cm4gSlNDYXN0aW5nSGVscGVyczo6aW5oZXJpdHM8VGFyZ2V0
Pih2bSwgdGhpcyk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRP
d25Qcm9wZXJ0eShWTSYgdm0sIFN0cnVjdHVyZSYgc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgbmFt
ZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlLmdldCh2bSwgbmFtZSk7DQogICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQ0KICAg
ICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdl
dCgpOw0KICAgIHJldHVybiBKU1ZhbHVlKCk7DQp9DQoNCmlubGluZSBib29sIEpTQ2VsbDo6Y2Fu
VXNlRmFzdEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYgc3RydWN0dXJlKQ0Kew0KICAg
IHJldHVybiAhc3RydWN0dXJlLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSANCiAgICAgICAg
JiYgIXN0cnVjdHVyZS5oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkNCiAgICAgICAg
JiYgIXN0cnVjdHVyZS50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpOw0K
fQ0KDQpfX2ZvcmNlaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZm8oVk0m
IHZtKSBjb25zdA0Kew0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICgodm9pZCkw
KTsNCiAgICByZXR1cm4gc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCk7DQp9DQoNCmlubGluZSBi
b29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
DQp7DQogICAgaWYgKGlzU3RyaW5nKCkpDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU1N0cmluZyo+KHRoaXMpLT50b0Jvb2xlYW4oKTsNCiAgICBpZiAoaXNIZWFwQmlnSW50KCkp
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0JpZ0ludCo+KHRoaXMpLT50b0Jv
b2xlYW4oKTsNCiAgICByZXR1cm4gIXN0cnVjdHVyZShnZXRWTShnbG9iYWxPYmplY3QpKS0+bWFz
cXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpOw0KfQ0KDQppbmxpbmUgVHJpU3RhdGUg
SlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QNCnsNCiAgICBpZiAoaXNTdHJpbmcoKSkNCiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVh
bigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7DQogICAgaWYgKGlzSGVhcEJp
Z0ludCgpKQ0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlz
KS0+dG9Cb29sZWFuKCkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsNCiAgICBp
ZiAoaXNTeW1ib2woKSkNCiAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOw0KICAgIHJldHVy
biBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsNCn0NCg0KaW5saW5lIHZvaWQgSlNDZWxsTG9jazo6
bG9jaygpDQp7DQogICAgQXRvbWljPEluZGV4aW5nVHlwZT4qIGxvY2sgPSBiaXR3aXNlX2Nhc3Q8
QXRvbWljPEluZGV4aW5nVHlwZT4qPigmbV9pbmRleGluZ1R5cGVBbmRNaXNjKTsNCiAgICBpZiAo
KCFJbmRleGluZ1R5cGVMb2NrQWxnb3JpdGhtOjpsb2NrRmFzdCgqbG9jaykpKQ0KICAgICAgICBs
b2NrU2xvdygpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU0NlbGxMb2NrOjp0cnlMb2NrKCkNCnsNCiAg
ICBBdG9taWM8SW5kZXhpbmdUeXBlPiogbG9jayA9IGJpdHdpc2VfY2FzdDxBdG9taWM8SW5kZXhp
bmdUeXBlPio+KCZtX2luZGV4aW5nVHlwZUFuZE1pc2MpOw0KICAgIHJldHVybiBJbmRleGluZ1R5
cGVMb2NrQWxnb3JpdGhtOjp0cnlMb2NrKCpsb2NrKTsNCn0NCg0KaW5saW5lIHZvaWQgSlNDZWxs
TG9jazo6dW5sb2NrKCkNCnsNCiAgICBBdG9taWM8SW5kZXhpbmdUeXBlPiogbG9jayA9IGJpdHdp
c2VfY2FzdDxBdG9taWM8SW5kZXhpbmdUeXBlPio+KCZtX2luZGV4aW5nVHlwZUFuZE1pc2MpOw0K
ICAgIGlmICgoIUluZGV4aW5nVHlwZUxvY2tBbGdvcml0aG06OnVubG9ja0Zhc3QoKmxvY2spKSkN
CiAgICAgICAgdW5sb2NrU2xvdygpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU0NlbGxMb2NrOjppc0xv
Y2tlZCgpIGNvbnN0DQp7DQogICAgQXRvbWljPEluZGV4aW5nVHlwZT4qIGxvY2sgPSBiaXR3aXNl
X2Nhc3Q8QXRvbWljPEluZGV4aW5nVHlwZT4qPigmbV9pbmRleGluZ1R5cGVBbmRNaXNjKTsNCiAg
ICByZXR1cm4gSW5kZXhpbmdUeXBlTG9ja0FsZ29yaXRobTo6aXNMb2NrZWQoKmxvY2spOw0KfQ0K
DQppbmxpbmUgYm9vbCBKU0NlbGw6OnBlckNlbGxCaXQoKSBjb25zdA0Kew0KICAgIHJldHVybiBU
eXBlSW5mbzo6cGVyQ2VsbEJpdChpbmxpbmVUeXBlRmxhZ3MoKSk7DQp9DQoNCmlubGluZSB2b2lk
IEpTQ2VsbDo6c2V0UGVyQ2VsbEJpdChib29sIHZhbHVlKQ0Kew0KICAgIGlmICh2YWx1ZSA9PSBw
ZXJDZWxsQml0KCkpDQogICAgICAgIHJldHVybjsNCg0KICAgIGlmICh2YWx1ZSkNCiAgICAgICAg
bV9mbGFncyB8PSBzdGF0aWNfY2FzdDxUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzPihUeXBlSW5m
b1BlckNlbGxCaXQpOw0KICAgIGVsc2UNCiAgICAgICAgbV9mbGFncyAmPSB+c3RhdGljX2Nhc3Q8
VHlwZUluZm86OklubGluZVR5cGVGbGFncz4oVHlwZUluZm9QZXJDZWxsQml0KTsNCn0NCg0KaW5s
aW5lIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0DQp7DQogICAgaWYgKGlzT2JqZWN0KCkpDQogICAgICAgIHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihjb25zdF9jYXN0PEpTQ2VsbCo+KHRoaXMpKTsNCiAgICByZXR1cm4gdG9PYmpl
Y3RTbG93KGdsb2JhbE9iamVjdCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBKU0NlbGw6OnB1
dElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7DQogICAgYXV0
byBwdXRNZXRob2QgPSBtZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmplY3QpKS0+cHV0Ow0KICAg
IGlmICgocHV0TWV0aG9kID09IEpTT2JqZWN0OjpwdXQpKQ0KICAgICAgICByZXR1cm4gSlNPYmpl
Y3Q6OnB1dElubGluZUZvckpTT2JqZWN0KGFzT2JqZWN0KHRoaXMpLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOw0KICAgIHJldHVybiBwdXRNZXRob2QodGhpcywgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsNCn0NCg0KaW5saW5lIGJvb2wg
aXNXZWJBc3NlbWJseU1vZHVsZShjb25zdCBKU0NlbGwqIGNlbGwpDQp7DQogICAgcmV0dXJuIGNl
bGwtPnR5cGUoKSA9PSBXZWJBc3NlbWJseU1vZHVsZVR5cGU7DQp9DQoNCn0gDQojbGluZSAzNiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxKU0NKU1ZhbHVlSW5saW5lcy5oIg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNQcm94eS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3Qgew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Ow0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJp
ZGVzR2V0UHJvdG90eXBlIHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybzsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENlbGxUeXBlKSA9PSBzaXpl
b2YoSlNQcm94eSkpOw0KICAgICAgICByZXR1cm4gJnZtLmpzUHJveHlTcGFjZTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTT2JqZWN0KiB0YXJnZXQpDQogICAgew0KICAgICAgICBKU1Byb3h5KiBwcm94eSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJveHk+KHZtLmhlYXApKSBKU1Byb3h5KHZtLCBzdHJ1
Y3R1cmUpOw0KICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24odm0sIHRhcmdldCk7DQogICAg
ICAgIHJldHVybiBwcm94eTsNCiAgICB9DQoNCiAgICBzdGF0aWMgSlNQcm94eSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgew0KICAgICAgICBKU1Byb3h5KiBwcm94
eSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJveHk+KHZtLmhlYXApKSBKU1Byb3h5
KHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24odm0pOw0KICAg
ICAgICByZXR1cm4gcHJveHk7DQogICAgfQ0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUsIEpTVHlwZSBwcm94eVR5cGUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQog
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKHByb3h5VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0N
Cg0KICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlND
OjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgSlNPYmplY3Qq
IHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9DQogICAgc3RhdGljIHB0
cmRpZmZfdCB0YXJnZXRPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1Byb3h5Kj4oMHg0MDAwKS0+bV90YXJnZXQpKSAtIDB4
NDAwMCk7IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHNldFRhcmdldChWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7DQoNCnByb3RlY3RlZDoNCiAgICBKU1Byb3h5KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQ0KICAgIHsN
CiAgICB9DQoNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkNCiAgICB7DQogICAgICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICB9DQoNCiAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNPYmplY3QqIHRhcmdldCkNCiAgICB7DQogICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsNCiAgICAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCB0YXJnZXQpOw0K
ICAgIH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
c3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqLCBWTSYpOw0KICAgIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nTmFtZShjb25zdCBKU09iamVj
dCosIEpTR2xvYmFsT2JqZWN0Kik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBz
dGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0
aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IHVuc2lnbmVkKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQp
IHN0YXRpYyB1aW50MzJfdCBnZXRFbnVtZXJhYmxlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIHZvaWQgZ2V0U3RydWN0
dXJlUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0
aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOw0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29s
IHNob3VsZFRocm93KTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgc2V0
UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBib29sIHNob3Vs
ZFRocm93SWZDYW50U2V0KTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIEpTVmFs
dWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsNCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgc3RhdGljIGJvb2wgcHJldmVu
dEV4dGVuc2lvbnMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOw0KDQpwcml2YXRlOg0KICAg
IFdyaXRlQmFycmllcjxKU09iamVjdD4gbV90YXJnZXQ7DQp9Ow0KDQp9IA0KI2xpbmUgMzkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
SlNDSlNWYWx1ZUlubGluZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNTdHJpbmdJbmxpbmVzLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25j
ZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQogICAgDQppbmxpbmUgSlNTdHJpbmc6On5KU1N0cmlu
ZygpDQp7DQogICAgaWYgKGlzUm9wZSgpKQ0KICAgICAgICByZXR1cm47DQogICAgdmFsdWVJbnRl
cm5hbCgpLn5TdHJpbmcoKTsNCn0NCg0KYm9vbCBKU1N0cmluZzo6ZXF1YWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIG90aGVyKSBjb25zdA0Kew0KICAgIGlmIChpc1Jv
cGUoKSB8fCBvdGhlci0+aXNSb3BlKCkpDQogICAgICAgIHJldHVybiBlcXVhbFNsb3dDYXNlKGds
b2JhbE9iamVjdCwgb3RoZXIpOw0KICAgIHJldHVybiBXVEY6OmVxdWFsKCp2YWx1ZUludGVybmFs
KCkuaW1wbCgpLCAqb3RoZXItPnZhbHVlSW50ZXJuYWwoKS5pbXBsKCkpOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPg0KaW5saW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlhbFN0
cmluZyhWTSYgdm0sIFN0cmluZ1R5cGUmJiBzdHJpbmcpDQp7DQogICAgcmV0dXJuIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgc3RkOjpmb3J3YXJkPFN0cmluZ1R5cGU+KHN0cmluZykpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4NCmlu
bGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RyaW5nVHlwZSYmIHN0cmluZywgU3RyaW5nVHlwZXMmJi4uLiBzdHJpbmdzKQ0K
ew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0byBzY29wZSA9IEpT
Qzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICBTdHJpbmcgcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhz
dGQ6OmZvcndhcmQ8U3RyaW5nVHlwZT4oc3RyaW5nKSwgc3RkOjpmb3J3YXJkPFN0cmluZ1R5cGVz
PihzdHJpbmdzKS4uLik7DQogICAgaWYgKCghcmVzdWx0KSkNCiAgICAgICAgcmV0dXJuIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsNCiAgICAoKHZvaWQpMCk7DQog
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3Zl
UGFyYW1ldGVyPihyZXN1bHQpKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+DQppbmxpbmUgSlNTdHJpbmcqIHJlcGVhdENoYXJhY3RlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlciwgdW5zaWduZWQgcmVwZWF0Q291bnQp
DQp7DQogICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOw0KICAgIGF1dG8gc2NvcGUgPSBK
U0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXIgPSBudWxs
cHRyOw0KICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVwZWF0Q291bnQsIGJ1ZmZlcik7DQogICAgaWYgKCFpbXBsKSB7DQogICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsNCiAgICAgICAgcmV0dXJuIG51bGxw
dHI7DQogICAgfQ0KDQogICAgc3RkOjpmaWxsX24oYnVmZmVyLCByZXBlYXRDb3VudCwgY2hhcmFj
dGVyKTsNCg0KICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4ganNTdHJpbmcodm0sIHN0
ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oaW1wbCkpOyB9IHdoaWxlIChmYWxzZSk7
DQp9DQoNCn0gDQojbGluZSA0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NKU1ZhbHVlSW5saW5lcy5oIg0KDQoNCg0KbmFtZXNw
YWNlIEpTQyB7DQoNCl9fZm9yY2VpbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjp0b0ludDMyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0DQp7DQogICAgaWYgKGlzSW50MzIoKSkNCiAg
ICAgICAgcmV0dXJuIGFzSW50MzIoKTsNCg0KICAgIGRvdWJsZSBkID0gdG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KTsNCiAgICByZXR1cm4gSlNDOjp0b0ludDMyKGQpOw0KfQ0KDQppbmxpbmUgdWludDMy
X3QgSlNWYWx1ZTo6dG9VSW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QN
CnsNCiAgICANCiAgICANCiAgICByZXR1cm4gdG9JbnQzMihnbG9iYWxPYmplY3QpOw0KfQ0KDQpp
bmxpbmUgdWludDMyX3QgSlNWYWx1ZTo6dG9JbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0DQp7DQogICAgVk0mIHZtID0gZ2V0Vk0o
Z2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0K
DQogICAgZG91YmxlIGQgPSB0b051bWJlcihnbG9iYWxPYmplY3QpOw0KICAgIGRvIHsgaWYgKCgo
c2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIDA7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICBpZiAo
ZCA8PSAtMSkgew0KICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZyhlcnJvck5hbWUsICIgY2Fu
bm90IGJlIG5lZ2F0aXZlIikpKTsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgfQ0KICAgIGlmIChk
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7DQogICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtYWtlU3RyaW5nKGVycm9yTmFtZSwgIiB0b28gbGFyZ2UiKSkpOw0KICAgICAgICByZXR1
cm4gMDsNCiAgICB9DQoNCiAgICBpZiAoaXNJbnQzMigpKQ0KICAgICAgICByZXR1cm4gYXNJbnQz
MigpOw0KICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gSlNDOjp0b0ludDMyKGQpOyB9
IHdoaWxlIChmYWxzZSk7DQp9DQoNCmlubGluZSBib29sIEpTVmFsdWU6OmlzVUludDMyKCkgY29u
c3QNCnsNCiAgICByZXR1cm4gaXNJbnQzMigpICYmIGFzSW50MzIoKSA+PSAwOw0KfQ0KDQppbmxp
bmUgdWludDMyX3QgSlNWYWx1ZTo6YXNVSW50MzIoKSBjb25zdA0Kew0KICAgICgodm9pZCkwKTsN
CiAgICByZXR1cm4gYXNJbnQzMigpOw0KfQ0KDQppbmxpbmUgZG91YmxlIEpTVmFsdWU6OmFzTnVt
YmVyKCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIGlzSW50MzIoKSA/IGFz
SW50MzIoKSA6IGFzRG91YmxlKCk7DQp9DQoNCmlubGluZSBPcHRpb25hbDx1aW50MzJfdD4gSlNW
YWx1ZTo6dHJ5R2V0QXNVaW50MzJJbmRleCgpDQp7DQogICAgaWYgKGlzVUludDMyKCkpIHsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gYXNVSW50MzIoKTsNCiAgICB9DQogICAg
aWYgKGlzTnVtYmVyKCkpIHsNCiAgICAgICAgZG91YmxlIG51bWJlciA9IGFzTnVtYmVyKCk7DQog
ICAgICAgIHVpbnQzMl90IGFzVWludCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihudW1iZXIpOw0K
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihhc1VpbnQpID09IG51bWJlciAmJiBpc0lu
ZGV4KGFzVWludCkpDQogICAgICAgICAgICByZXR1cm4gYXNVaW50Ow0KICAgIH0NCiAgICByZXR1
cm4gV1RGOjpudWxsb3B0Ow0KfQ0KDQppbmxpbmUgT3B0aW9uYWw8aW50MzJfdD4gSlNWYWx1ZTo6
dHJ5R2V0QXNJbnQzMigpDQp7DQogICAgaWYgKGlzSW50MzIoKSkNCiAgICAgICAgcmV0dXJuIGFz
SW50MzIoKTsNCiAgICBpZiAoaXNOdW1iZXIoKSkgew0KICAgICAgICBkb3VibGUgbnVtYmVyID0g
YXNOdW1iZXIoKTsNCiAgICAgICAgaW50MzJfdCBhc0ludCA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KG51bWJlcik7DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGFzSW50KSA9PSBudW1i
ZXIpDQogICAgICAgICAgICByZXR1cm4gYXNJbnQ7DQogICAgfQ0KICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7DQp9DQoNCmlubGluZSBKU1ZhbHVlIGpzTmFOKCkNCnsNCiAgICByZXR1cm4gSlNWYWx1
ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgKHB1cmVOYU4oKSkpOw0KfQ0KDQppbmxpbmUgSlNW
YWx1ZTo6SlNWYWx1ZShjaGFyIGkpDQp7DQogICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0
PGludDMyX3Q+KGkpKTsNCn0NCg0KaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgY2hh
ciBpKQ0Kew0KICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7DQp9
DQoNCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHNob3J0IGkpDQp7DQogICAgKnRoaXMgPSBKU1Zh
bHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsNCn0NCg0KaW5saW5lIEpTVmFsdWU6OkpTVmFs
dWUodW5zaWduZWQgc2hvcnQgaSkNCnsNCiAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oaSkpOw0KfQ0KDQppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBpKQ0K
ew0KICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihpKSA8IDApIHsNCiAgICAgICAgKnRoaXMg
PSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsNCiAgICAg
ICAgcmV0dXJuOw0KICAgIH0NCiAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oaSkpOw0KfQ0KDQppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGkpDQp7DQogICAgaWYg
KHN0YXRpY19jYXN0PGludDMyX3Q+KGkpICE9IGkpIHsNCiAgICAgICAgKnRoaXMgPSBKU1ZhbHVl
KEVuY29kZUFzRG91YmxlLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsNCiAgICAgICAgcmV0dXJu
Ow0KICAgIH0NCiAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOw0K
fQ0KDQppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGkpDQp7DQogICAgaWYg
KHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAhPSBpKSB7DQogICAgICAgICp0aGlzID0gSlNWYWx1
ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7DQogICAgICAgIHJldHVy
bjsNCiAgICB9DQogICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSk7
DQp9DQoNCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGxvbmcgbG9uZyBpKQ0Kew0KICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQzMl90PihpKSAhPSBpKSB7DQogICAgICAgICp0aGlzID0gSlNWYWx1ZShF
bmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7DQogICAgICAgIHJldHVybjsN
CiAgICB9DQogICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsNCn0N
Cg0KaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nIGkpDQp7DQogICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSAhPSBpKSB7DQogICAgICAgICp0aGlzID0gSlNW
YWx1ZShFbmNvZGVBc0RvdWJsZSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7DQogICAgICAgIHJl
dHVybjsNCiAgICB9DQogICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90Pihp
KSk7DQp9DQoNCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGRvdWJsZSBkKQ0Kew0KICAgIGlmIChj
YW5CZVN0cmljdEludDMyKGQpKSB7DQogICAgICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2Fz
dDxpbnQzMl90PihkKSk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgKnRoaXMgPSBKU1Zh
bHVlKEVuY29kZUFzRG91YmxlLCBkKTsNCn0NCg0KaW5saW5lIEVuY29kZWRKU1ZhbHVlIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgIHJldHVybiB2YWx1ZS51LmFzSW50NjQ7
DQp9DQoNCmlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OmRlY29kZShFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkSlNWYWx1ZSkNCnsNCiAgICBKU1ZhbHVlIHY7DQogICAgdi51LmFzSW50NjQgPSBlbmNvZGVk
SlNWYWx1ZTsNCiAgICByZXR1cm4gdjsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSA0MDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNDSlNWYWx1ZUlubGluZXMuaCINCg0KDQppbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZSgpDQp7DQogICAgdS5hc0ludDY0ID0gVmFsdWVFbXB0eTsNCn0NCg0KDQppbmxpbmUgSlNW
YWx1ZTo6SlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpDQp7DQogICAgdS5hc0ludDY0
ID0gVmFsdWVEZWxldGVkOw0KfQ0KDQppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0NlbGwqIHB0
cikNCnsNCiAgICB1LmFzSW50NjQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKTsN
Cn0NCg0KaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpDQp7DQogICAg
dS5hc0ludDY0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnN0X2Nhc3Q8SlNDZWxs
Kj4ocHRyKSk7DQp9DQoNCmlubGluZSBKU1ZhbHVlOjpvcGVyYXRvciBib29sKCkgY29uc3QNCnsN
CiAgICByZXR1cm4gdS5hc0ludDY0Ow0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRv
cj09KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdA0Kew0KICAgIHJldHVybiB1LmFzSW50NjQg
PT0gb3RoZXIudS5hc0ludDY0Ow0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9
KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdA0Kew0KICAgIHJldHVybiB1LmFzSW50NjQgIT0g
b3RoZXIudS5hc0ludDY0Ow0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0VtcHR5KCkgY29u
c3QNCnsNCiAgICByZXR1cm4gdS5hc0ludDY0ID09IFZhbHVlRW1wdHk7DQp9DQoNCmlubGluZSBi
b29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkKCkgY29uc3QNCnsNCiAgICByZXR1cm4gYXNWYWx1ZSgp
ID09IEpTVmFsdWUoSlNVbmRlZmluZWQpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc051
bGwoKSBjb25zdA0Kew0KICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU051bGwpOw0K
fQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1RydWUoKSBjb25zdA0Kew0KICAgIHJldHVybiBh
c1ZhbHVlKCkgPT0gSlNWYWx1ZShKU1RydWUpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0ZhbHNlKCkgY29uc3QNCnsNCiAgICByZXR1cm4gYXNWYWx1ZSgpID09IEpTVmFsdWUoSlNGYWxz
ZSk7DQp9DQoNCmlubGluZSBib29sIEpTVmFsdWU6OmFzQm9vbGVhbigpIGNvbnN0DQp7DQogICAg
KCh2b2lkKTApOw0KICAgIHJldHVybiBhc1ZhbHVlKCkgPT0gSlNWYWx1ZShKU1RydWUpOw0KfQ0K
DQppbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyKCkgY29uc3QNCnsNCiAgICAoKHZvaWQp
MCk7DQogICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHUuYXNJbnQ2NCk7DQp9DQoNCmlu
bGluZSBib29sIEpTVmFsdWU6OmlzRG91YmxlKCkgY29uc3QNCnsNCiAgICByZXR1cm4gaXNOdW1i
ZXIoKSAmJiAhaXNJbnQzMigpOw0KfQ0KDQppbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU051bGxU
YWcpDQp7DQogICAgdS5hc0ludDY0ID0gVmFsdWVOdWxsOw0KfQ0KICAgIA0KaW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUoSlNVbmRlZmluZWRUYWcpDQp7DQogICAgdS5hc0ludDY0ID0gVmFsdWVVbmRl
ZmluZWQ7DQp9DQoNCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTVHJ1ZVRhZykNCnsNCiAgICB1
LmFzSW50NjQgPSBWYWx1ZVRydWU7DQp9DQoNCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFs
c2VUYWcpDQp7DQogICAgdS5hc0ludDY0ID0gVmFsdWVGYWxzZTsNCn0NCg0KaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNVbmRlZmluZWRPck51bGwoKSBjb25zdA0Kew0KICAgIA0KICAgIHJldHVybiAo
dS5hc0ludDY0ICYgflVuZGVmaW5lZFRhZykgPT0gVmFsdWVOdWxsOw0KfQ0KDQppbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0Jvb2xlYW4oKSBjb25zdA0Kew0KICAgIHJldHVybiAodS5hc0ludDY0ICYg
fjEpID09IFZhbHVlRmFsc2U7DQp9DQoNCmlubGluZSBib29sIEpTVmFsdWU6OmlzQ2VsbCgpIGNv
bnN0DQp7DQogICAgcmV0dXJuICEodS5hc0ludDY0ICYgTm90Q2VsbE1hc2spOw0KfQ0KDQppbmxp
bmUgYm9vbCBKU1ZhbHVlOjppc0ludDMyKCkgY29uc3QNCnsNCiAgICByZXR1cm4gKHUuYXNJbnQ2
NCAmIE51bWJlclRhZykgPT0gTnVtYmVyVGFnOw0KfQ0KDQppbmxpbmUgaW50NjRfdCByZWludGVy
cHJldERvdWJsZVRvSW50NjQoZG91YmxlIHZhbHVlKQ0Kew0KICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8aW50NjRfdD4odmFsdWUpOw0KfQ0KaW5saW5lIGRvdWJsZSByZWludGVycHJldEludDY0VG9E
b3VibGUoaW50NjRfdCB2YWx1ZSkNCnsNCiAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4o
dmFsdWUpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3Vi
bGVUYWcsIGRvdWJsZSBkKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICB1LmFzSW50NjQgPSByZWlu
dGVycHJldERvdWJsZVRvSW50NjQoZCkgKyBKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXQ7DQp9
DQoNCmlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBpKQ0Kew0KICAgIHUuYXNJbnQ2NCA9IEpT
VmFsdWU6Ok51bWJlclRhZyB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKTsNCn0NCg0KaW5saW5l
IGRvdWJsZSBKU1ZhbHVlOjphc0RvdWJsZSgpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0KICAg
IHJldHVybiByZWludGVycHJldEludDY0VG9Eb3VibGUodS5hc0ludDY0IC0gSlNWYWx1ZTo6RG91
YmxlRW5jb2RlT2Zmc2V0KTsNCn0NCg0KaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNOdW1iZXIoKSBj
b25zdA0Kew0KICAgIHJldHVybiB1LmFzSW50NjQgJiBKU1ZhbHVlOjpOdW1iZXJUYWc7DQp9DQoN
Cl9fZm9yY2VpbmxpbmUgSlNDZWxsKiBKU1ZhbHVlOjphc0NlbGwoKSBjb25zdA0Kew0KICAgICgo
dm9pZCkwKTsNCiAgICByZXR1cm4gdS5wdHI7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNCaWdJbnQq
IEpTVmFsdWU6OmFzSGVhcEJpZ0ludCgpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0KICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxKU0JpZ0ludCo+KHUucHRyKTsNCn0NCg0KI2xpbmUgNTY4ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpT
Q0pTVmFsdWVJbmxpbmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTc3ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFs
dWVJbmxpbmVzLmgiDQoNCmlubGluZSBpbnQ2NF90IHRyeUNvbnZlcnRUb0ludDUyKGRvdWJsZSBu
dW1iZXIpDQp7DQogICAgaWYgKG51bWJlciAhPSBudW1iZXIpDQogICAgICAgIHJldHVybiBKU1Zh
bHVlOjpub3RJbnQ1MjsNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1OTEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZUlu
bGluZXMuaCINCiAgICBpbnQ2NF90IGFzSW50NjQgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihudW1i
ZXIpOw0KICAgIGlmIChhc0ludDY0ICE9IG51bWJlcikNCiAgICAgICAgcmV0dXJuIEpTVmFsdWU6
Om5vdEludDUyOw0KICAgIGlmICghYXNJbnQ2NCAmJiBzdGQ6OnNpZ25iaXQobnVtYmVyKSkNCiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6Om5vdEludDUyOw0KICAgIGlmIChhc0ludDY0ID49IChzdGF0
aWNfY2FzdDxpbnQ2NF90PigxKSA8PCAoSlNWYWx1ZTo6bnVtYmVyT2ZJbnQ1MkJpdHMgLSAxKSkp
DQogICAgICAgIHJldHVybiBKU1ZhbHVlOjpub3RJbnQ1MjsNCiAgICBpZiAoYXNJbnQ2NCA8IC0o
c3RhdGljX2Nhc3Q8aW50NjRfdD4oMSkgPDwgKEpTVmFsdWU6Om51bWJlck9mSW50NTJCaXRzIC0g
MSkpKQ0KICAgICAgICByZXR1cm4gSlNWYWx1ZTo6bm90SW50NTI7DQogICAgcmV0dXJuIGFzSW50
NjQ7DQp9DQoNCmlubGluZSBib29sIGlzSW50NTIoZG91YmxlIG51bWJlcikNCnsNCiAgICByZXR1
cm4gdHJ5Q29udmVydFRvSW50NTIobnVtYmVyKSAhPSBKU1ZhbHVlOjpub3RJbnQ1MjsNCn0NCg0K
aW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNBbnlJbnQoKSBjb25zdA0Kew0KICAgIGlmIChpc0ludDMy
KCkpDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIGlmICghaXNOdW1iZXIoKSkNCiAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgIHJldHVybiBpc0ludDUyKGFzRG91YmxlKCkpOw0KfQ0KDQppbmxp
bmUgaW50NjRfdCBKU1ZhbHVlOjphc0FueUludCgpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0K
ICAgIGlmIChpc0ludDMyKCkpDQogICAgICAgIHJldHVybiBhc0ludDMyKCk7DQogICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludDY0X3Q+KGFzRG91YmxlKCkpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0ludDMyQXNBbnlJbnQoKSBjb25zdA0Kew0KICAgIGlmICghaXNBbnlJbnQoKSkNCiAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIGludDY0X3QgdmFsdWUgPSBhc0FueUludCgpOw0KICAg
IHJldHVybiB2YWx1ZSA+PSAoLTIxNDc0ODM2NDdpMzIgLSAxKSAmJiB2YWx1ZSA8PSAyMTQ3NDgz
NjQ3aTMyOw0KfQ0KDQppbmxpbmUgaW50MzJfdCBKU1ZhbHVlOjphc0ludDMyQXNBbnlJbnQoKSBj
b25zdA0Kew0KICAgICgodm9pZCkwKTsNCiAgICBpZiAoaXNJbnQzMigpKQ0KICAgICAgICByZXR1
cm4gYXNJbnQzMigpOw0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pihhc0RvdWJsZSgp
KTsNCn0NCg0KaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVSW50MzJBc0FueUludCgpIGNvbnN0DQp7
DQogICAgaWYgKCFpc0FueUludCgpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgaW50NjRf
dCB2YWx1ZSA9IGFzQW55SW50KCk7DQogICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0g
MHhmZmZmZmZmZnVpMzI7DQp9DQoNCmlubGluZSB1aW50MzJfdCBKU1ZhbHVlOjphc1VJbnQzMkFz
QW55SW50KCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKGlzVUludDMyKCkpDQog
ICAgICAgIHJldHVybiBhc1VJbnQzMigpOw0KICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYXNEb3VibGUoKSk7DQp9DQoNCmlubGluZSBib29sIEpTVmFsdWU6OmlzU3RyaW5nKCkgY29u
c3QNCnsNCiAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzU3RyaW5nKCk7DQp9DQoN
CmlubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50KCkgY29uc3QNCnsNCiAgICByZXR1cm4gaXNC
aWdJbnQzMigpIHx8IGlzSGVhcEJpZ0ludCgpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0hlYXBCaWdJbnQoKSBjb25zdA0Kew0KICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+
aXNIZWFwQmlnSW50KCk7DQp9DQoNCmlubGluZSBib29sIEpTVmFsdWU6OmlzQmlnSW50MzIoKSBj
b25zdA0Kew0KDQoNCiNsaW5lIDY3NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NKU1ZhbHVlSW5saW5lcy5oIg0KICAgIHJldHVy
biBmYWxzZTsNCiNsaW5lIDY3OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NKU1ZhbHVlSW5saW5lcy5oIg0KfQ0KDQoNCg0KDQoN
Cg0KDQojbGluZSA2ODggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZUlubGluZXMuaCINCg0KaW5saW5lIGJvb2wgSlNW
YWx1ZTo6aXNTeW1ib2woKSBjb25zdA0Kew0KICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwo
KS0+aXNTeW1ib2woKTsNCn0NCg0KaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNQcmltaXRpdmUoKSBj
b25zdA0Kew0KICAgIHJldHVybiAhaXNDZWxsKCkgfHwgYXNDZWxsKCktPmlzU3RyaW5nKCkgfHwg
YXNDZWxsKCktPmlzU3ltYm9sKCkgfHwgYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpOw0KfQ0KDQpp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc0dldHRlclNldHRlcigpIGNvbnN0DQp7DQogICAgcmV0dXJu
IGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pc0dldHRlclNldHRlcigpOw0KfQ0KDQppbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0DQp7DQogICAgcmV0dXJuIGlz
Q2VsbCgpICYmIGFzQ2VsbCgpLT5pc0N1c3RvbUdldHRlclNldHRlcigpOw0KfQ0KDQppbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc09iamVjdCgpIGNvbnN0DQp7DQogICAgcmV0dXJuIGlzQ2VsbCgpICYm
IGFzQ2VsbCgpLT5pc09iamVjdCgpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nJiBzKSBjb25zdA0Kew0KICAg
IHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+Z2V0U3RyaW5nKGdsb2JhbE9iamVjdCwgcyk7
DQp9DQoNCmlubGluZSBTdHJpbmcgSlNWYWx1ZTo6Z2V0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0DQp7DQogICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdl
dFN0cmluZyhnbG9iYWxPYmplY3QpIDogU3RyaW5nKCk7DQp9DQoNCnRlbXBsYXRlIDx0eXBlbmFt
ZSBCYXNlPiBTdHJpbmcgSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+OjpnZXRTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QNCnsNCiAgICByZXR1cm4ganNWYWx1
ZSgpLmdldFN0cmluZyhnbG9iYWxPYmplY3QpOw0KfQ0KDQppbmxpbmUgSlNPYmplY3QqIEpTVmFs
dWU6OmdldE9iamVjdCgpIGNvbnN0DQp7DQogICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCkt
PmdldE9iamVjdCgpIDogbnVsbHB0cjsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIEpTVmFsdWU6
OmdldFVJbnQzMih1aW50MzJfdCYgdikgY29uc3QNCnsNCiAgICBpZiAoaXNJbnQzMigpKSB7DQog
ICAgICAgIGludDMyX3QgaSA9IGFzSW50MzIoKTsNCiAgICAgICAgdiA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihpKTsNCiAgICAgICAgcmV0dXJuIGkgPj0gMDsNCiAgICB9DQogICAgaWYgKGlzRG91
YmxlKCkpIHsNCiAgICAgICAgZG91YmxlIGQgPSBhc0RvdWJsZSgpOw0KICAgICAgICB2ID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGQpOw0KICAgICAgICByZXR1cm4gdiA9PSBkOw0KICAgIH0NCiAg
ICByZXR1cm4gZmFsc2U7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSWRlbnRpZmllciBKU1ZhbHVlOjp0
b1Byb3BlcnR5S2V5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0DQp7DQogICAg
Vk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJv
d1Njb3BlKCh2bSkpOw0KDQogICAgaWYgKGlzU3RyaW5nKCkpDQogICAgICAgIGRvIHsgc2NvcGUu
cmVsZWFzZSgpOyByZXR1cm4gYXNTdHJpbmcoKnRoaXMpLT50b0lkZW50aWZpZXIoZ2xvYmFsT2Jq
ZWN0KTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB0b1ByaW1p
dGl2ZShnbG9iYWxPYmplY3QsIFByZWZlclN0cmluZyk7DQogICAgZG8geyBpZiAoKChzY29wZSku
ZXhjZXB0aW9uKCkpKSByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyOyB9
IHdoaWxlIChmYWxzZSk7DQogICAgaWYgKHByaW1pdGl2ZS5pc1N5bWJvbCgpKQ0KICAgICAgICBk
byB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIElkZW50aWZpZXI6OmZyb21VaWQoYXNTeW1ib2wo
cHJpbWl0aXZlKS0+cHJpdmF0ZU5hbWUoKSk7IH0gd2hpbGUgKGZhbHNlKTsNCg0KICAgIGF1dG8g
c3RyaW5nID0gcHJpbWl0aXZlLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7DQogICAgZG8geyBpZiAo
KChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4geyB9OyB9IHdoaWxlIChmYWxzZSk7DQogICAg
ZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9iYWxP
YmplY3QpOyB9IHdoaWxlIChmYWxzZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBKU1Zh
bHVlOjp0b1Byb3BlcnR5S2V5VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgIGF1dG8gc2NvcGUg
PSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICBpZiAoaXNTdHJpbmcoKSB8fCBpc1N5bWJv
bCgpKQ0KICAgICAgICByZXR1cm4gKnRoaXM7DQoNCiAgICBKU1ZhbHVlIHByaW1pdGl2ZSA9IHRv
UHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyU3RyaW5nKTsNCiAgICBkbyB7IGlmICgoKHNj
b3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBKU1ZhbHVlKCk7IH0gd2hpbGUgKGZhbHNlKTsNCiAg
ICBpZiAocHJpbWl0aXZlLmlzU3ltYm9sKCkpDQogICAgICAgIHJldHVybiBwcmltaXRpdmU7DQoN
CiAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIHByaW1pdGl2ZS50b1N0cmluZyhnbG9i
YWxPYmplY3QpOyB9IHdoaWxlIChmYWxzZSk7DQp9DQoNCmlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OnRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QNCnsNCiAgICByZXR1cm4gaXNDZWxsKCkgPyBh
c0NlbGwoKS0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBwcmVmZXJyZWRUeXBlKSA6IGFzVmFs
dWUoKTsNCn0NCg0KaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVmZXJyZWRQcmlt
aXRpdmVUeXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpDQp7
DQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlND
OjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7DQogICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcmltaXRpdmUgaGludCBp
cyBub3QgYSBzdHJpbmcuIl9zKTsNCiAgICAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsNCiAgICB9
DQoNCiAgICBTdHJpbmdJbXBsKiBoaW50U3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShn
bG9iYWxPYmplY3QpLmltcGwoKTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkp
IHJldHVybiBOb1ByZWZlcmVuY2U7IH0gd2hpbGUgKGZhbHNlKTsNCg0KICAgIGlmIChXVEY6OmVx
dWFsKGhpbnRTdHJpbmcsICJkZWZhdWx0IikpDQogICAgICAgIHJldHVybiBOb1ByZWZlcmVuY2U7
DQogICAgaWYgKFdURjo6ZXF1YWwoaGludFN0cmluZywgIm51bWJlciIpKQ0KICAgICAgICByZXR1
cm4gUHJlZmVyTnVtYmVyOw0KICAgIGlmIChXVEY6OmVxdWFsKGhpbnRTdHJpbmcsICJzdHJpbmci
KSkNCiAgICAgICAgcmV0dXJuIFByZWZlclN0cmluZzsNCg0KICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBwcmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUg
b2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmluZycuIl9zKTsNCiAgICByZXR1cm4gTm9QcmVm
ZXJlbmNlOw0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRQcmltaXRpdmVOdW1iZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHZhbHVl
KQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAgICBhdXRvIHNjb3BlID0g
SlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgaWYgKGlzSW50MzIoKSkgew0KICAgICAgICBu
dW1iZXIgPSBhc0ludDMyKCk7DQogICAgICAgIHZhbHVlID0gKnRoaXM7DQogICAgICAgIHJldHVy
biB0cnVlOw0KICAgIH0NCiAgICBpZiAoaXNEb3VibGUoKSkgew0KICAgICAgICBudW1iZXIgPSBh
c0RvdWJsZSgpOw0KICAgICAgICB2YWx1ZSA9ICp0aGlzOw0KICAgICAgICByZXR1cm4gdHJ1ZTsN
CiAgICB9DQogICAgaWYgKGlzQ2VsbCgpKQ0KICAgICAgICByZXR1cm4gYXNDZWxsKCktPmdldFBy
aW1pdGl2ZU51bWJlcihnbG9iYWxPYmplY3QsIG51bWJlciwgdmFsdWUpOw0KICAgIGlmIChpc1Ry
dWUoKSkgew0KICAgICAgICBudW1iZXIgPSAxLjA7DQogICAgICAgIHZhbHVlID0gKnRoaXM7DQog
ICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgICBpZiAoaXNGYWxzZSgpIHx8IGlzTnVsbCgp
KSB7DQogICAgICAgIG51bWJlciA9IDAuMDsNCiAgICAgICAgdmFsdWUgPSAqdGhpczsNCiAgICAg
ICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIGlmIChpc1VuZGVmaW5lZCgpKSB7DQogICAgICAg
IG51bWJlciA9IChwdXJlTmFOKCkpOw0KICAgICAgICB2YWx1ZSA9ICp0aGlzOw0KICAgICAgICBy
ZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAoKHZvaWQpMCk7DQogICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVy
JyBpcyBub3QgYWxsb3dlZC4iX3MpOw0KICAgIG51bWJlciA9IDAuMDsNCiAgICB2YWx1ZSA9ICp0
aGlzOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGRvdWJsZSBKU1ZhbHVl
Ojp0b051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdA0Kew0KICAgIGlm
IChpc0ludDMyKCkpDQogICAgICAgIHJldHVybiBhc0ludDMyKCk7DQogICAgaWYgKGlzRG91Ymxl
KCkpDQogICAgICAgIHJldHVybiBhc0RvdWJsZSgpOw0KICAgIHJldHVybiB0b051bWJlclNsb3dD
YXNlKGdsb2JhbE9iamVjdCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0
b051bWVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QNCnsNCiAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29w
ZSgodm0pKTsNCg0KICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSB8fCBpc0JpZ0ludCgp
KQ0KICAgICAgICByZXR1cm4gKnRoaXM7DQoNCiAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMt
PnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsNCiAgICBkbyB7IGlmICgo
KHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB7IH07IH0gd2hpbGUgKGZhbHNlKTsNCg0KICAg
IGlmIChwcmltVmFsdWUuaXNEb3VibGUoKSB8fCBwcmltVmFsdWUuaXNCaWdJbnQoKSkNCiAgICAg
ICAgcmV0dXJuIHByaW1WYWx1ZTsNCg0KICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1WYWx1ZS50b051
bWJlcihnbG9iYWxPYmplY3QpOw0KICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkg
cmV0dXJuIHsgfTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVl
KTsNCn0NCg0KX19mb3JjZWlubGluZSBPcHRpb25hbDx1aW50MzJfdD4gSlNWYWx1ZTo6dG9VSW50
MzJBZnRlclRvTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdA0Kew0K
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6
VGhyb3dTY29wZSgodm0pKTsNCiAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvQmlnSW50T3JJbnQzMihn
bG9iYWxPYmplY3QpOw0KICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJu
IHsgfTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIGlmICgocmVzdWx0LmlzSW50MzIoKSkpDQogICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0LmFzSW50MzIoKSk7DQogICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OnRvQmlnSW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdA0Kew0K
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6
VGhyb3dTY29wZSgodm0pKTsNCg0KICAgIGlmIChpc0ludDMyKCkgfHwgaXNCaWdJbnQoKSkNCiAg
ICAgICAgcmV0dXJuICp0aGlzOw0KICAgIGlmIChpc0RvdWJsZSgpICYmIGNhbkJlSW50MzIoYXNE
b3VibGUoKSkpDQogICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pihh
c0RvdWJsZSgpKSk7DQoNCiAgICBKU1ZhbHVlIHByaW1WYWx1ZSA9IHRoaXMtPnRvUHJpbWl0aXZl
KGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNl
cHRpb24oKSkpIHJldHVybiB7IH07IH0gd2hpbGUgKGZhbHNlKTsNCg0KICAgIGlmIChwcmltVmFs
dWUuaXNJbnQzMigpIHx8IHByaW1WYWx1ZS5pc0JpZ0ludCgpKQ0KICAgICAgICByZXR1cm4gcHJp
bVZhbHVlOw0KDQogICAgaW50MzJfdCB2YWx1ZSA9IHByaW1WYWx1ZS50b0ludDMyKGdsb2JhbE9i
amVjdCk7DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4geyB9OyB9
IHdoaWxlIChmYWxzZSk7DQogICAgcmV0dXJuIGpzTnVtYmVyKHZhbHVlKTsNCn0NCg0KaW5saW5l
IEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjb25zdA0Kew0KICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50b09iamVjdChnbG9i
YWxPYmplY3QpIDogdG9PYmplY3RTbG93Q2FzZShnbG9iYWxPYmplY3QpOw0KfQ0KDQppbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0NhbGxhYmxlKFZNJiB2bSkgY29uc3QNCnsNCiAgICByZXR1cm4gaXND
ZWxsKCkgJiYgYXNDZWxsKCktPmlzQ2FsbGFibGUodm0pOw0KfQ0KDQppbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0NvbnN0cnVjdG9yKFZNJiB2bSkgY29uc3QNCnsNCiAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzQ29uc3RydWN0b3Iodm0pOw0KfQ0KDQoNCmlubGluZSBib29sIEpTVmFs
dWU6OmluaGVyaXRzKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNvbnN0DQp7
DQogICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2VsbCgpLT5pbmhlcml0cyh2bSwgY2xhc3NJbmZv
KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0Pg0KaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aW5oZXJpdHMoVk0mIHZtKSBjb25zdA0Kew0KICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwo
KS0+aW5oZXJpdHM8VGFyZ2V0Pih2bSk7DQp9DQoNCmlubGluZSBjb25zdCBDbGFzc0luZm8qIEpT
VmFsdWU6OmNsYXNzSW5mb09yTnVsbChWTSYgdm0pIGNvbnN0DQp7DQogICAgcmV0dXJuIGlzQ2Vs
bCgpID8gYXNDZWxsKCktPmNsYXNzSW5mbyh2bSkgOiBudWxscHRyOw0KfQ0KDQppbmxpbmUgSlNW
YWx1ZSBKU1ZhbHVlOjp0b1RoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGUgZWNtYU1vZGUpIGNvbnN0DQp7DQogICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1l
dGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMoYXNDZWxsKCksIGdsb2JhbE9i
amVjdCwgZWNtYU1vZGUpIDogdG9UaGlzU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSk7
DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QNCnsNCiAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChhc1ZhbHVlKCksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpHZXQpOw0KICAgIHJldHVybiBnZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkgY29uc3QNCnsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKChnZXRW
TShnbG9iYWxPYmplY3QpKSk7DQogICAgYm9vbCBoYXNTbG90ID0gZ2V0UHJvcGVydHlTbG90KGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYg
KCFoYXNTbG90KQ0KICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsNCiAgICBkbyB7IHNjb3Bl
LnJlbGVhc2UoKTsgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpOyB9IHdoaWxlIChmYWxzZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hl
bk5vRXhjZXB0aW9uPg0KX19mb3JjZWlubGluZSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxs
YmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgSlNWYWx1ZTo6
Z2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdA0K
ew0KICAgIFByb3BlcnR5U2xvdCBzbG90KGFzVmFsdWUoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldCk7DQogICAgcmV0dXJuIGdldFByb3BlcnR5U2xvdChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCwgY2FsbGJhY2spOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbj4NCl9fZm9yY2VpbmxpbmUgdHlwZW5hbWUgc3RkOjpy
ZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24oYm9vbCwgUHJvcGVydHlTbG90Jik+Ojp0
eXBlIEpTVmFsdWU6OmdldFByb3BlcnR5U2xvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIENhbGxiYWNr
V2hlbk5vRXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdA0Kew0KICAgIGF1dG8gc2NvcGUgPSBKU0M6
OlRocm93U2NvcGUoKGdldFZNKGdsb2JhbE9iamVjdCkpKTsNCiAgICBib29sIGZvdW5kID0gZ2V0
UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsNCiAgICBkbyB7
IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB7IH07IH0gd2hpbGUgKGZhbHNlKTsN
CiAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIGNhbGxiYWNrKGZvdW5kLCBzbG90KTsg
fSB3aGlsZSAoZmFsc2UpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNWYWx1ZTo6Z2V0UHJv
cGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkgY29uc3QNCnsNCiAgICBhdXRvIHNjb3BlID0g
SlNDOjpUaHJvd1Njb3BlKChnZXRWTShnbG9iYWxPYmplY3QpKSk7DQogICAgDQogICAgDQogICAg
SlNPYmplY3QqIG9iamVjdDsNCiAgICBpZiAoKCFpc09iamVjdCgpKSkgew0KICAgICAgICBpZiAo
aXNTdHJpbmcoKSkgew0KICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGFzU3RyaW5nKCp0
aGlzKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsNCiAgICAgICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJu
IGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpDQog
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgb2JqZWN0ID0g
c3ludGhlc2l6ZVByb3RvdHlwZShnbG9iYWxPYmplY3QpOw0KICAgICAgICAoKHZvaWQpMCk7DQog
ICAgICAgIGlmICgoIW9iamVjdCkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfSBl
bHNlDQogICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KGFzQ2VsbCgpKTsNCg0KICAgIGRvIHsgc2Nv
cGUucmVsZWFzZSgpOyByZXR1cm4gb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOyB9IHdoaWxlIChmYWxzZSk7DQp9DQoNCl9fZm9yY2Vpbmxp
bmUgYm9vbCBKU1ZhbHVlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBj
b25zdA0Kew0KICAgIA0KICAgIA0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKGdl
dFZNKGdsb2JhbE9iamVjdCkpKTsNCiAgICBpZiAoKCFpc09iamVjdCgpKSkgew0KICAgICAgICBp
ZiAoaXNTdHJpbmcoKSkNCiAgICAgICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4g
YXNTdHJpbmcoKnRoaXMpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICAgICAgaWYgKGlzVW5kZWZp
bmVkT3JOdWxsKCkpDQogICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGdsb2JhbE9iamVjdCwgKnRoaXMpKTsNCiAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJu
IGFzT2JqZWN0KGFzQ2VsbCgpKS0+Z2V0T3duUHJvcGVydHlTbG90SW5saW5lKGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsgfSB3aGlsZSAoZmFsc2UpOw0KfQ0KDQpfX2ZvcmNlaW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3QNCnsNCiAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1Zh
bHVlKCksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOw0KICAgIHJldHVy
biBnZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOw0KfQ0KDQpfX2ZvcmNlaW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdA0Kew0KICAgIGF1
dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKGdldFZNKGdsb2JhbE9iamVjdCkpKTsNCiAgICAN
CiAgICANCiAgICBKU09iamVjdCogb2JqZWN0Ow0KICAgIGlmICgoIWlzT2JqZWN0KCkpKSB7DQog
ICAgICAgIGlmIChpc1N0cmluZygpKSB7DQogICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0g
YXNTdHJpbmcoKnRoaXMpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOw0KICAgICAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9u
KCkpKSByZXR1cm4geyB9OyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICBpZiAoaGFzUHJv
cGVydHkpDQogICAgICAgICAgICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBzbG90
LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsgfSB3aGlsZSAoZmFsc2UpOw0K
ICAgICAgICB9DQogICAgICAgIG9iamVjdCA9IHN5bnRoZXNpemVQcm90b3R5cGUoZ2xvYmFsT2Jq
ZWN0KTsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoKCFvYmplY3QpKQ0KICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsNCiAgICB9IGVsc2UNCiAgICAgICAgb2JqZWN0ID0gYXNP
YmplY3QoYXNDZWxsKCkpOw0KICAgIA0KICAgIGJvb2wgaGFzU2xvdCA9IG9iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsNCiAgICAoKHZvaWQp
MCk7DQogICAgaWYgKCFoYXNTbG90KQ0KICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsNCiAg
ICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUpOyB9IHdoaWxlIChmYWxzZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNW
YWx1ZSBKU1ZhbHVlOjpnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3Qg
cHJvcGVydHlOYW1lKSBjb25zdA0Kew0KICAgIGlmICgocHJvcGVydHlOYW1lIDw9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpDQogICAgICAgIHJldHVybiBnZXQoZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocHJvcGVydHlOYW1lKSk7DQogICAgcmV0dXJu
IGdldChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20oZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwg
c3RhdGljX2Nhc3Q8ZG91YmxlPihwcm9wZXJ0eU5hbWUpKSk7DQp9DQoNCmlubGluZSBib29sIEpT
VmFsdWU6OnB1dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7DQogICAg
aWYgKCghaXNDZWxsKCkpKQ0KICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsNCg0KICAgIHJldHVybiBhc0NlbGwoKS0+
bWV0aG9kVGFibGUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPnB1dChhc0NlbGwoKSwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsNCn0NCg0KX19mb3JjZWlubGluZSBib29s
IEpTVmFsdWU6OnB1dElubGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
DQp7DQogICAgaWYgKCghaXNDZWxsKCkpKQ0KICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsNCiAgICByZXR1cm4gYXND
ZWxsKCktPnB1dElubGluZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
Ow0KfQ0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjpwdXRCeUluZGV4KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykNCnsNCiAgICBpZiAoKCFpc0NlbGwoKSkpDQogICAgICAgIHJldHVybiBwdXRU
b1ByaW1pdGl2ZUJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRUaHJvdyk7DQoNCiAgICByZXR1cm4gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGdldFZNKGdsb2Jh
bE9iamVjdCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNob3VsZFRocm93KTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OmdldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdA0Kew0K
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgaWYgKGlzT2JqZWN0KCkpDQog
ICAgICAgIHJldHVybiBhc09iamVjdChhc0NlbGwoKSktPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KTsNCiAgICByZXR1cm4gc3ludGhlc2l6ZVByb3RvdHlwZShnbG9iYWxPYmplY3QpOw0K
fQ0KDQppbmxpbmUgU3RydWN0dXJlKiBKU1ZhbHVlOjpzdHJ1Y3R1cmVPck51bGwoKSBjb25zdA0K
ew0KICAgIGlmIChpc0NlbGwoKSkNCiAgICAgICAgcmV0dXJuIGFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KTsNCiAgICByZXR1cm4gbnVsbHB0cjsNCn0NCg0KaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6c3Ry
dWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdA0Kew0KICAgIGlmIChpc0NlbGwoKSkNCiAgICAgICAg
cmV0dXJuIEpTVmFsdWUoYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsNCiAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsNCn0NCg0KDQppbmxpbmUgYm9vbCBKU1ZhbHVlOjplcXVhbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQ0Kew0KICAgIGlmICh2MS5p
c0ludDMyKCkgJiYgdjIuaXNJbnQzMigpKQ0KICAgICAgICByZXR1cm4gdjEgPT0gdjI7DQoNCiAg
ICByZXR1cm4gZXF1YWxTbG93Q2FzZShnbG9iYWxPYmplY3QsIHYxLCB2Mik7DQp9DQoNCl9fZm9y
Y2VpbmxpbmUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpDQp7DQogICAgVk0mIHZtID0g
Z2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2
bSkpOw0KICAgIGRvIHsNCiAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkpIHsNCiAgICAgICAgICAg
IGlmICh2Mi5pc051bWJlcigpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigp
ID09IHYyLmFzTnVtYmVyKCk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHN0ZDo6c3dhcCh2
MSwgdjIpOw0KICAgICAgICB9DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpZiAodjEg
PT0gdjIpDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgICAgICBpZiAodjEuaXNVbmRl
ZmluZWRPck51bGwoKSkgew0KICAgICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkp
DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICBpZiAoIXYyLmlzQ2Vs
bCgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIHJldHVybiB2
Mi5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxP
YmplY3QpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsNCiAgICAgICAgICAgIGlmICghdjEuaXNDZWxsKCkpDQogICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOw0KICAgICAgICAgICAgcmV0dXJuIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCk7DQogICAgICAgIH0NCg0KICAgICAg
ICBpZiAodjEuaXNPYmplY3QoKSkgew0KICAgICAgICAgICAgaWYgKHYyLmlzT2JqZWN0KCkpDQog
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyANCiAgICAgICAgICAgIEpTVmFsdWUgcDEgPSB2
MS50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QpOw0KICAgICAgICAgICAgZG8geyBpZiAoKChzY29w
ZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gZmFsc2U7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAg
ICAgIHYxID0gcDE7DQogICAgICAgICAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIo
KSkNCiAgICAgICAgICAgICAgICByZXR1cm4gdjEgPT0gdjI7DQogICAgICAgICAgICBjb250aW51
ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICh2Mi5pc09iamVjdCgpKSB7DQogICAgICAgICAg
ICBKU1ZhbHVlIHAyID0gdjIudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsNCiAgICAgICAgICAg
IGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChm
YWxzZSk7DQogICAgICAgICAgICB2MiA9IHAyOw0KICAgICAgICAgICAgaWYgKHYxLmlzSW50MzIo
KSAmJiB2Mi5pc0ludDMyKCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHYxID09IHYyOw0KICAg
ICAgICAgICAgY29udGludWU7DQogICAgICAgIH0NCg0KICAgICAgICBib29sIHN5bTEgPSB2MS5p
c1N5bWJvbCgpOw0KICAgICAgICBib29sIHN5bTIgPSB2Mi5pc1N5bWJvbCgpOw0KICAgICAgICBp
ZiAoc3ltMSB8fCBzeW0yKSB7DQogICAgICAgICAgICBpZiAoc3ltMSAmJiBzeW0yKQ0KICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
ICAgIH0NCg0KICAgICAgICBib29sIHMxID0gdjEuaXNTdHJpbmcoKTsNCiAgICAgICAgYm9vbCBz
MiA9IHYyLmlzU3RyaW5nKCk7DQogICAgICAgIGlmIChzMSkgew0KICAgICAgICAgICAgaWYgKHMy
KQ0KICAgICAgICAgICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gYXNTdHJpbmco
djEpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHYyKSk7IH0gd2hpbGUgKGZhbHNlKTsN
CiAgICAgICAgICAgIHN0ZDo6c3dhcCh2MSwgdjIpOw0KICAgICAgICAgICAgDQogICAgICAgIH0N
CiAgICAgICAgaWYgKHMxIHx8IHMyKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICh2
MS5pc0JpZ0ludCgpKSB7DQogICAgICAgICAgICAgICAgU3RyaW5nIHYyU3RyaW5nID0gYXNTdHJp
bmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOw0KICAgICAgICAgICAgICAgIGRvIHsgaWYgKCgo
c2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAg
ICAgICAgICAgICAgdjIgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCB2
MlN0cmluZyk7DQogICAgICAgICAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkp
KSByZXR1cm4gZmFsc2U7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgICAgICBpZiAoIXYy
KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgaWYg
KHYxID09IHYyKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgDQogICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgICAgICAgICBkb3VibGUgZDEgPSB2MS50b051bWJlcihnbG9iYWxPYmplY3QpOw0K
ICAgICAgICAgICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIGZh
bHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICAgICAgZG91YmxlIGQyID0gdjIudG9O
dW1iZXIoZ2xvYmFsT2JqZWN0KTsNCiAgICAgICAgICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5l
eGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICAgICAg
ICAgIHJldHVybiBkMSA9PSBkMjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAg
IGlmICh2MS5pc0Jvb2xlYW4oKSkgew0KICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpDQog
ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odjEuYXNCb29sZWFuKCkp
ID09IHYyLmFzTnVtYmVyKCk7DQogICAgICAgICAgICB2MSA9IEpTVmFsdWUodjEudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KSk7DQogICAgICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24o
KSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICAgICAgDQogICAgICAg
ICAgICANCiAgICAgICAgICAgIHN0ZDo6c3dhcCh2MSwgdjIpOw0KICAgICAgICB9IGVsc2UgaWYg
KHYyLmlzQm9vbGVhbigpKSB7DQogICAgICAgICAgICB2MiA9IEpTVmFsdWUodjIudG9OdW1iZXIo
Z2xvYmFsT2JqZWN0KSk7DQogICAgICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24o
KSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICAgICAgDQogICAgICAg
IH0NCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEyMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNDSlNWYWx1ZUlubGluZXMuaCIN
Cg0KICAgICAgICBpZiAodjEuaXNIZWFwQmlnSW50KCkpIHsNCiAgICAgICAgICAgIGlmICh2Mi5p
c0hlYXBCaWdJbnQoKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmVxdWFscyh2
MS5hc0hlYXBCaWdJbnQoKSwgdjIuYXNIZWFwQmlnSW50KCkpOw0KDQoNCg0KI2xpbmUgMTIzNSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxKU0NKU1ZhbHVlSW5saW5lcy5oIg0KICAgICAgICAgICAgaWYgKHYyLmlzTnVtYmVyKCkpDQog
ICAgICAgICAgICAgICAgcmV0dXJuIHYxLmFzSGVhcEJpZ0ludCgpLT5lcXVhbHNUb051bWJlcih2
Mik7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfSB3aGlsZSAodHJ1
ZSk7DQp9DQoNCg0KX19mb3JjZWlubGluZSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsRm9yQ2Vs
bHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiB2MSwgSlNDZWxsKiB2MikN
CnsNCiAgICBpZiAodjEtPmlzU3RyaW5nKCkgJiYgdjItPmlzU3RyaW5nKCkpDQogICAgICAgIHJl
dHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGdsb2JhbE9iamVjdCwgYXNTdHJpbmcodjIpKTsNCiAg
ICBpZiAodjEtPmlzSGVhcEJpZ0ludCgpICYmIHYyLT5pc0hlYXBCaWdJbnQoKSkNCiAgICAgICAg
cmV0dXJuIEpTQmlnSW50OjplcXVhbHMoc3RhdGljX2Nhc3Q8SlNCaWdJbnQqPih2MSksIHN0YXRp
Y19jYXN0PEpTQmlnSW50Kj4odjIpKTsNCiAgICByZXR1cm4gdjEgPT0gdjI7DQp9DQoNCmlubGlu
ZSBib29sIEpTVmFsdWU6OnN0cmljdEVxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpDQp7DQogICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2Mi5p
c0ludDMyKCkpDQogICAgICAgIHJldHVybiB2MSA9PSB2MjsNCg0KICAgIGlmICh2MS5pc051bWJl
cigpICYmIHYyLmlzTnVtYmVyKCkpDQogICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYy
LmFzTnVtYmVyKCk7DQoNCg0KDQoNCg0KDQojbGluZSAxMjY3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0pTVmFsdWVJbmxpbmVz
LmgiDQoNCiAgICBpZiAodjEuaXNDZWxsKCkgJiYgdjIuaXNDZWxsKCkpDQogICAgICAgIHJldHVy
biBzdHJpY3RFcXVhbEZvckNlbGxzKGdsb2JhbE9iamVjdCwgdjEuYXNDZWxsKCksIHYyLmFzQ2Vs
bCgpKTsNCg0KICAgIHJldHVybiB2MSA9PSB2MjsNCn0NCg0KaW5saW5lIGludDMyX3QgSlNWYWx1
ZTo6YXNJbnQzMkZvckFyaXRobWV0aWMoKSBjb25zdA0Kew0KICAgIGlmIChpc0Jvb2xlYW4oKSkN
CiAgICAgICAgcmV0dXJuIGFzQm9vbGVhbigpOw0KICAgIHJldHVybiBhc0ludDMyKCk7DQp9DQoN
CmlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlU3RyaWN0RXF1YWwoSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikNCnsNCiAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIoKSkNCiAgICAg
ICAgcmV0dXJuIHRyaVN0YXRlKHYxID09IHYyKTsNCg0KICAgIGlmICh2MS5pc051bWJlcigpICYm
IHYyLmlzTnVtYmVyKCkpDQogICAgICAgIHJldHVybiB0cmlTdGF0ZSh2MS5hc051bWJlcigpID09
IHYyLmFzTnVtYmVyKCkpOw0KDQoNCg0KDQoNCg0KI2xpbmUgMTI5NSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NKU1ZhbHVlSW5s
aW5lcy5oIg0KDQogICAgaWYgKHYxLmlzQ2VsbCgpICYmIHYyLmlzQ2VsbCgpKSB7DQogICAgICAg
IGlmICh2MS5hc0NlbGwoKS0+aXNTdHJpbmcoKSAmJiB2Mi5hc0NlbGwoKS0+aXNTdHJpbmcoKSkg
ew0KICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSkt
PnRyeUdldFZhbHVlSW1wbCgpOw0KICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjJTdHJp
bmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1wbCgpOw0KICAgICAgICAgICAgaWYgKCF2
MVN0cmluZyB8fCAhdjJTdHJpbmcpDQogICAgICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOw0KICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYx
U3RyaW5nLCAqdjJTdHJpbmcpKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodjEuYXNDZWxsKCkt
PmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSkNCiAgICAgICAg
ICAgIHJldHVybiB0cmlTdGF0ZShKU0JpZ0ludDo6ZXF1YWxzKHYxLmFzSGVhcEJpZ0ludCgpLCB2
Mi5hc0hlYXBCaWdJbnQoKSkpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gdHJpU3RhdGUodjEg
PT0gdjIpOw0KfQ0KDQppbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpIGNv
bnN0DQp7DQogICAgaWYgKGlzSW50MzIoKSkNCiAgICAgICAgcmV0dXJuIGFzSW50MzIoKSA/IFRy
aVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOw0KICAgIGlmIChpc0RvdWJsZSgpKQ0KICAg
ICAgICByZXR1cm4gaXNOb3RaZXJvQW5kT3JkZXJlZChhc0RvdWJsZSgpKSA/IFRyaVN0YXRlOjpU
cnVlIDogVHJpU3RhdGU6OkZhbHNlOyANCiAgICBpZiAoaXNDZWxsKCkpDQogICAgICAgIHJldHVy
biBhc0NlbGwoKS0+cHVyZVRvQm9vbGVhbigpOw0KDQoNCg0KI2xpbmUgMTMyMyAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NKU1Zh
bHVlSW5saW5lcy5oIg0KICAgIHJldHVybiBpc1RydWUoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJp
U3RhdGU6OkZhbHNlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNWYWx1ZTo6cmVxdWlyZU9i
amVjdENvZXJjaWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdA0Kew0KICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhy
b3dTY29wZSgodm0pKTsNCg0KICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoKSkNCiAgICAgICAg
cmV0dXJuIHRydWU7DQogICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihnbG9iYWxPYmplY3QsICp0aGlzKSk7DQogICAgcmV0dXJuIGZh
bHNlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgaXNUaGlzVmFsdWVBbHRlcmVkKGNvbnN0IFB1
dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNPYmplY3QqIGJhc2VPYmplY3QpDQp7DQogICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzbG90LnRoaXNWYWx1ZSgpOw0KICAgIGlmICgodGhpc1ZhbHVlID09IGJh
c2VPYmplY3QpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7DQogICAgDQogICAgaWYgKHRoaXNPYmplY3QtPnR5cGUo
KSA9PSBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSAmJiBqc0Nhc3Q8SlNQcm94eSo+KHRoaXNPYmpl
Y3QpLT50YXJnZXQoKSA9PSBiYXNlT2JqZWN0KQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
cmV0dXJuIHRydWU7DQp9DQoNCg0KX19mb3JjZWlubGluZSBib29sIHNhbWVWYWx1ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGEsIEpTVmFsdWUgYikNCnsNCiAgICBpZiAo
IWEuaXNOdW1iZXIoKSkNCiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGdsb2Jh
bE9iamVjdCwgYSwgYik7DQogICAgaWYgKCFiLmlzTnVtYmVyKCkpDQogICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICBkb3VibGUgeCA9IGEuYXNOdW1iZXIoKTsNCiAgICBkb3VibGUgeSA9IGIuYXNO
dW1iZXIoKTsNCiAgICBib29sIHhJc05hTiA9IHN0ZDo6aXNuYW4oeCk7DQogICAgYm9vbCB5SXNO
YU4gPSBzdGQ6OmlzbmFuKHkpOw0KICAgIGlmICh4SXNOYU4gfHwgeUlzTmFOKQ0KICAgICAgICBy
ZXR1cm4geElzTmFOICYmIHlJc05hTjsNCiAgICByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnQ2NF90
Pih4KSA9PSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHkpOw0KfQ0KDQp9IA0KI2xpbmUgNDUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
SlNDSW5saW5lcy5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTRnVuY3Rpb25JbmxpbmVzLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQppbmxpbmUgSlNGdW5jdGlvbiogSlNGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCgNCiAgICBWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpDQp7DQog
ICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSwgc2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cChzY29wZS0+Z2xvYmFsT2JqZWN0KHZtKSwg
ZXhlY3V0YWJsZSkpOw0KfQ0KDQppbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQ0KICAgIDogQmFzZSh2bSwgc2NvcGUsIHN0cnVjdHVyZSkNCiAgICAsIG1f
ZXhlY3V0YWJsZU9yUmFyZURhdGEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZXhlY3V0YWJsZSkp
DQp7DQogICAgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOw0KfQ0KDQppbmxpbmUgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdA0Kew0KICAg
ICgodm9pZCkwKTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSgpKTsNCn0NCg0KaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rp
b24oKSBjb25zdA0Kew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gZXhlY3V0YWJsZSgpLT5p
c0hvc3RGdW5jdGlvbigpOw0KfQ0KDQppbmxpbmUgSW50cmluc2ljIEpTRnVuY3Rpb246OmludHJp
bnNpYygpIGNvbnN0DQp7DQogICAgcmV0dXJuIGV4ZWN1dGFibGUoKS0+aW50cmluc2ljKCk7DQp9
DQoNCmlubGluZSBib29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QNCnsN
CiAgICByZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRp
bkZ1bmN0aW9uKCk7DQp9DQoNCmlubGluZSBib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3QNCnsNCiAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1
aWx0aW5GdW5jdGlvbigpOw0KfQ0KDQppbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjppc0NsYXNzQ29u
c3RydWN0b3JGdW5jdGlvbigpIGNvbnN0DQp7DQogICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigp
ICYmIGpzRXhlY3V0YWJsZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOw0KfQ0KDQpp
bmxpbmUgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQ0K
ew0KICAgICgodm9pZCkwKTsNCiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUoKSktPmZ1bmN0aW9uKCk7DQp9DQoNCmlubGluZSBUYWdnZWROYXRpdmVG
dW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3RvcigpDQp7DQogICAgKCh2b2lkKTAp
Ow0KICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSgp
KS0+Y29uc3RydWN0b3IoKTsNCn0NCg0KaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1
ZSB2YWx1ZSwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24pDQp7DQogICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdldEpTRnVuY3Rpb24odmFs
dWUpKTsNCiAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkN
CiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIHJldHVybiBmdW5jdGlvbi0+bmF0aXZlRnVuY3Rp
b24oKSA9PSBuYXRpdmVGdW5jdGlvbjsNCn0NCg0KaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aGFz
UmVpZmllZExlbmd0aCgpIGNvbnN0DQp7DQogICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVE
YXRhID0gdGhpcy0+cmFyZURhdGEoKSkNCiAgICAgICAgcmV0dXJuIHJhcmVEYXRhLT5oYXNSZWlm
aWVkTGVuZ3RoKCk7DQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQppbmxpbmUgYm9vbCBKU0Z1bmN0
aW9uOjpoYXNSZWlmaWVkTmFtZSgpIGNvbnN0DQp7DQogICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEq
IHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKSkNCiAgICAgICAgcmV0dXJuIHJhcmVEYXRhLT5o
YXNSZWlmaWVkTmFtZSgpOw0KICAgIHJldHVybiBmYWxzZTsNCn0NCg0KaW5saW5lIGJvb2wgSlNG
dW5jdGlvbjo6Y2FuQXNzdW1lTmFtZUFuZExlbmd0aEFyZU9yaWdpbmFsKFZNJikNCnsNCiAgICBp
ZiAoaXNIb3N0RnVuY3Rpb24oKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIEZ1bmN0aW9u
UmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKTsNCiAgICBpZiAoIXJhcmVEYXRh
KQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBpZiAocmFyZURhdGEtPmhhc01vZGlmaWVkTmFt
ZUZvck5vbkhvc3RGdW5jdGlvbigpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgaWYgKHJh
cmVEYXRhLT5oYXNNb2RpZmllZExlbmd0aEZvck5vbkhvc3RGdW5jdGlvbigpKQ0KICAgICAgICBy
ZXR1cm4gZmFsc2U7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCmlubGluZSBib29sIEpTRnVuY3Rp
b246OmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkNCnsNCiAgICBpZiAoaXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSkgew0KICAgICAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkNCiAgICAgICAgICAg
IHJldHVybiBmYWxzZTsNCg0KICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QoKS0+dm0oKTsN
CiAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsNCiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSBnZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXR0cmlidXRlcyk7
DQogICAgICAgIGlmICghcHJvdG90eXBlIHx8IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yT3JDdXN0b21BY2Nlc3Nvck9yVmFsdWUpKQ0KICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHJldHVybiBqc0V4
ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKTsNCn0NCg0KaW5saW5lIEZ1bmN0aW9u
UmFyZURhdGEqIEpTRnVuY3Rpb246OmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpDQp7
DQogICAgKCh2b2lkKTApOw0KICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+
cmFyZURhdGEoKTsNCiAgICBpZiAoIXJhcmVEYXRhKQ0KICAgICAgICByZXR1cm4gYWxsb2NhdGVB
bmRJbml0aWFsaXplUmFyZURhdGEoZ2xvYmFsT2JqZWN0LCBpbmxpbmVDYXBhY2l0eSk7DQogICAg
aWYgKCghcmFyZURhdGEtPmlzT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbml0aWFsaXplZCgpKSkN
CiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVSYXJlRGF0YShnbG9iYWxPYmplY3QsIGlubGluZUNh
cGFjaXR5KTsNCiAgICByZXR1cm4gcmFyZURhdGE7DQp9DQoNCn0gDQojbGluZSA0NyAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NJ
bmxpbmVzLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcQXJyYXlDb25zdHJ1Y3Rvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUHJveHlPYmpl
Y3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBQcm94eU9iamVj
dCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsNCnB1YmxpYzoNCiAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVz
R2V0UHJvdG90eXBlIHwgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOw0KDQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+DQogICAgc3RhdGljIElzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gdm0ucHJv
eHlPYmplY3RTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBQcm94eU9iamVjdCog
Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFyZ2V0LCBKU1Zh
bHVlIGhhbmRsZXIpDQogICAgew0KICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
Ow0KICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVG
b3JUYXJnZXQoZ2xvYmFsT2JqZWN0LCB0YXJnZXQpOw0KICAgICAgICBQcm94eU9iamVjdCogcHJv
eHkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm94eU9iamVjdD4odm0uaGVhcCkpIFBy
b3h5T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBwcm94eS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0LCBoYW5kbGVyKTsNCiAgICAgICAgcmV0dXJuIHByb3h5
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIGlz
Q2FsbGFibGUpDQogICAgew0KICAgICAgICB1bnNpZ25lZCBmbGFncyA9IFN0cnVjdHVyZUZsYWdz
Ow0KICAgICAgICBpZiAoaXNDYWxsYWJsZSkNCiAgICAgICAgICAgIGZsYWdzIHw9IChJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKTsNCiAgICAgICAg
U3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0VHlwZSwgZmxhZ3MpLCBpbmZvKCksIE5vbkFy
cmF5IHwgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOw0KICAgICAgICByZXN1bHQtPnNldElzUXVp
Y2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbihmYWxzZSk7DQogICAgICAgIGRv
IHsgaWYgKCghKCFyZXN1bHQtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRp
b24oKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5j
ZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNjEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFByb3h5T2JqZWN0LmgiLCAgX19G
VU5DVElPTl9fICAsIDE0NCApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAg
ICBkbyB7IGlmICgoISghcmVzdWx0LT5jYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3Iodm0p
KSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9y
Q3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg2MiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUHJveHlPYmplY3QuaCIsICBfX0ZVTkNU
SU9OX18gICwgMTQ1ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIHJl
dHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19kZWNsc3BlYyhk
bGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87
IH07DQoNCiAgICBKU09iamVjdCogdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQuZ2V0
KCk7IH0NCiAgICBKU1ZhbHVlIGhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZXIuZ2V0
KCk7IH0NCg0KICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7DQogICAgc3RhdGljIGJvb2wg
cHV0QnlJbmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7DQogICAgYm9vbCBwdXRCeUluZGV4Q29tbW9u
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7DQogICAgSlNWYWx1ZSBwZXJm
b3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0Kik7DQogICAgdm9pZCByZXZva2UoVk0mKTsN
CiAgICBib29sIGlzUmV2b2tlZCgpIGNvbnN0Ow0KDQpwcml2YXRlOg0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBQcm94eU9iamVjdChWTSYsIFN0cnVjdHVyZSopOw0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
c3RhdGljIFN0cnVjdHVyZSogc3RydWN0dXJlRm9yVGFyZ2V0KEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSB0YXJnZXQpOw0KDQogICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOw0KICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2Jh
bE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgc3Rh
dGljIENhbGxEYXRhIGdldENhbGxEYXRhKEpTQ2VsbCopOw0KICAgIHN0YXRpYyBDYWxsRGF0YSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCopOw0KICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNs
b3QmKTsNCiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOw0KICAgIHN0YXRpYyBib29sIHBy
ZXZlbnRFeHRlbnNpb25zKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqKTsNCiAgICBzdGF0aWMg
Ym9vbCBpc0V4dGVuc2libGUoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCopOw0KICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOw0K
ICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsNCiAgICBzdGF0aWMg
dm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQogICAgc3RhdGljIF9fZGVjbHNwZWMobm9y
ZXR1cm4pIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQogICAgc3Rh
dGljIF9fZGVjbHNwZWMobm9yZXR1cm4pIHZvaWQgZ2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOw0KICAgIHN0YXRpYyBfX2RlY2xzcGVjKG5vcmV0dXJuKSB2b2lkIGdldEdlbmVyaWNQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYsIEVudW1lcmF0aW9uTW9kZSk7DQogICAgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2Jq
ZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJv
d0lmQ2FudFNldCk7DQogICAgc3RhdGljIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqKTsNCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7DQoNCiAgICBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgYm9vbCBwZXJm
b3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgYm9vbCBwZXJmb3JtR2V0KEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBib29sIHBlcmZvcm1IYXNQcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAg
dGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbj4NCiAgICBib29sIHBlcmZv
cm1EZWxldGUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIERlZmF1bHREZWxldGVGdW5j
dGlvbik7DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+
DQogICAgYm9vbCBwZXJmb3JtUHV0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwdXRWYWx1ZSwg
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlv
biwgYm9vbCBzaG91bGRUaHJvdyk7DQogICAgYm9vbCBwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMo
SlNHbG9iYWxPYmplY3QqKTsNCiAgICBib29sIHBlcmZvcm1Jc0V4dGVuc2libGUoSlNHbG9iYWxP
YmplY3QqKTsNCiAgICBib29sIHBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRU
aHJvdyk7DQogICAgdm9pZCBwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5Jik7DQogICAgdm9pZCBwZXJmb3JtR2V0T3duRW51bWVyYWJs
ZVByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOw0KICAg
IGJvb2wgcGVyZm9ybVNldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90
eXBlLCBib29sIHNob3VsZFRocm93SWZDYW50U2V0KTsNCg0KICAgIFdyaXRlQmFycmllcjxKU09i
amVjdD4gbV90YXJnZXQ7DQogICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1faGFuZGxlcjsNCiAg
ICBib29sIG1faXNDYWxsYWJsZSA6IDE7DQogICAgYm9vbCBtX2lzQ29uc3RydWN0aWJsZSA6IDE7
DQp9Ow0KDQp9IA0KI2xpbmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcQXJyYXlDb25zdHJ1Y3Rvci5oIg0KDQpuYW1lc3BhY2Ug
SlNDIHsNCg0KY2xhc3MgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsNCmNsYXNzIEFycmF5UHJvdG90
eXBlOw0KY2xhc3MgSlNBcnJheTsNCmNsYXNzIEdldHRlclNldHRlcjsNCg0KY2xhc3MgQXJyYXlD
b25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsNCnB1YmxpYzoNCiAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOw0KDQogICAgc3RhdGljIEFycmF5Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBB
cnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJv
bCkNCiAgICB7DQogICAgICAgIEFycmF5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFycmF5Q29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7DQogICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBhcnJheVByb3RvdHlwZSwgc3BlY2llc1N5bWJvbCk7DQog
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsNCiAgICB9DQoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRp
YyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQog
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0N
Cg0KcHJpdmF0ZToNCiAgICBBcnJheUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7DQogICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQXJyYXlQcm90b3R5cGUq
LCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOw0KfTsNCnN0YXRpY19hc3NlcnQoc2l6ZW9m
KEFycmF5Q29uc3RydWN0b3IpID09IHNpemVvZihJbnRlcm5hbEZ1bmN0aW9uKSk7IHN0YXRpY19h
c3NlcnQoQXJyYXlDb25zdHJ1Y3Rvcjo6ZGVzdHJveSA9PSBJbnRlcm5hbEZ1bmN0aW9uOjpkZXN0
cm95KTs7DQoNCkpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhKU0dsb2JhbE9i
amVjdCosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBw
cm90b3R5cGUgPSBKU1ZhbHVlKCkpOw0KDQpFbmNvZGVkSlNWYWx1ZSAgYXJyYXlDb25zdHJ1Y3Rv
clByaXZhdGVGdW5jSXNBcnJheVNsb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCmJv
b2wgaXNBcnJheVNsb3coSlNHbG9iYWxPYmplY3QqLCBQcm94eU9iamVjdCogYXJndW1lbnQpOw0K
DQoNCg0KaW5saW5lIGJvb2wgaXNBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGFyZ3VtZW50VmFsdWUpDQp7DQogICAgaWYgKCFhcmd1bWVudFZhbHVlLmlzT2JqZWN0
KCkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgIEpTT2JqZWN0KiBhcmd1bWVudCA9IGpz
Q2FzdDxKU09iamVjdCo+KGFyZ3VtZW50VmFsdWUpOw0KICAgIGlmIChhcmd1bWVudC0+dHlwZSgp
ID09IEFycmF5VHlwZSB8fCBhcmd1bWVudC0+dHlwZSgpID09IERlcml2ZWRBcnJheVR5cGUpDQog
ICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgaWYgKGFyZ3VtZW50LT50eXBlKCkgIT0gUHJveHlP
YmplY3RUeXBlKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgcmV0dXJuIGlzQXJyYXlTbG93
KGdsb2JhbE9iamVjdCwganNDYXN0PFByb3h5T2JqZWN0Kj4oYXJndW1lbnQpKTsNCn0NCg0KfSAN
CiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxBcnJheVBy
b3RvdHlwZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEFycmF5UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTQXJyYXkgew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBKU0FycmF5
Ow0KDQogICAgZW51bSBjbGFzcyBTcGVjaWVzV2F0Y2hwb2ludFN0YXR1cyB7DQogICAgICAgIFVu
aW5pdGlhbGl6ZWQsDQogICAgICAgIEluaXRpYWxpemVkLA0KICAgICAgICBGaXJlZA0KICAgIH07
DQoNCiAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7DQogICAgICAgIA0KICAgIHByb3RlY3RlZDogc3RhdGljIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0
aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19p
bmZvOyB9Ow0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0K
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhEZXJpdmVkQXJyYXlUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwg
QXJyYXlDbGFzcyk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIEFycmF5UHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7DQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
Kik7DQp9Ow0Kc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm90b3R5cGUpID09IHNpemVvZihB
cnJheVByb3RvdHlwZTo6QmFzZSkpOyBzdGF0aWNfYXNzZXJ0KEFycmF5UHJvdG90eXBlOjpkZXN0
cm95ID09IEFycmF5UHJvdG90eXBlOjpCYXNlOjpkZXN0cm95KTs7DQoNCkVuY29kZWRKU1ZhbHVl
ICBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsNCkVuY29kZWRKU1ZhbHVlICBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7DQpFbmNvZGVkSlNWYWx1ZSAgYXJyYXlQcm90b0Z1bmNWYWx1ZXMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCkVuY29kZWRKU1ZhbHVlICBhcnJheVByb3RvUHJp
dmF0ZUZ1bmNDb25jYXRNZW1jcHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCkVuY29k
ZWRKU1ZhbHVlICBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsNCg0KfSANCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTR2xvYmFsT2JqZWN0SW5saW5l
cy5oIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGJ5dGVjb2RlXFxMaW5rVGltZUNvbnN0YW50LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxKYXZhU2NyaXB0Q29yZVxc
RGVyaXZlZFNvdXJjZXNcXEpTQ0J1aWx0aW5zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOw0KY2xhc3MgVk07DQoNCmVudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVpbnQ4
X3Q7DQplbnVtIGNsYXNzIENvbnN0cnVjdG9yS2luZCA6IHVpbnQ4X3Q7DQp9DQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpleHRlcm4gY29uc3QgY2hhciBzX0pTQ0NvbWJpbmVkQ29kZVtdOw0KDQpleHRl
cm4gY29uc3QgdW5zaWduZWQgc19KU0NDb21iaW5lZENvZGVMZW5ndGg7DQoNCg0KZXh0ZXJuIGNv
bnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlDb25zdHJ1Y3Rvck9mQ29kZTsNCmV4dGVybiBjb25zdCBp
bnQgc19hcnJheUNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2FycmF5Q29uc3RydWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0K
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXJyYXlDb25zdHJ1Y3Rvck9mQ29k
ZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FycmF5Q29uc3Ry
dWN0b3JGcm9tQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hcnJheUNvbnN0cnVjdG9yRnJvbUNv
ZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJyYXlDb25z
dHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdG9yS2luZCBzX2FycmF5Q29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FycmF5Q29uc3RydWN0b3JJc0FycmF5Q29kZTsNCmV4
dGVybiBjb25zdCBpbnQgc19hcnJheUNvbnN0cnVjdG9ySXNBcnJheUNvZGVMZW5ndGg7DQpleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXlD
b2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBz
X2FycmF5Q29uc3RydWN0b3JJc0FycmF5Q29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0KDQoN
Cg0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHRD
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUxl
bmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hcnJheUl0ZXJhdG9y
UHJvdG90eXBlTmV4dENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0b3JLaW5kIHNfYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHRDb2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlJdGVyYXRvclByb3RvdHlwZUFy
cmF5SXRlcmF0b3JOZXh0SGVscGVyQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hcnJheUl0ZXJh
dG9yUHJvdG90eXBlQXJyYXlJdGVyYXRvck5leHRIZWxwZXJDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2FycmF5SXRlcmF0b3JQcm90b3R5cGVBcnJheUl0
ZXJhdG9yTmV4dEhlbHBlckNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0b3JLaW5kIHNfYXJyYXlJdGVyYXRvclByb3RvdHlwZUFycmF5SXRlcmF0b3JOZXh0
SGVscGVyQ29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBzX2FycmF5UHJvdG90eXBlUmVkdWNlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19h
cnJheVByb3RvdHlwZVJlZHVjZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfYXJyYXlQcm90b3R5cGVSZWR1Y2VDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2FycmF5UHJvdG90eXBlUmVkdWNlQ29k
ZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FycmF5UHJvdG90
eXBlUmVkdWNlUmlnaHRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FycmF5UHJvdG90eXBlUmVk
dWNlUmlnaHRDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2FycmF5UHJvdG90eXBlUmVkdWNlUmlnaHRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2FycmF5UHJvdG90eXBlUmVkdWNlUmlnaHRDb2Rl
Q29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlQcm90b3R5
cGVFdmVyeUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXJyYXlQcm90b3R5cGVFdmVyeUNvZGVM
ZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJyYXlQcm90b3R5
cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
b3JLaW5kIHNfYXJyYXlQcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4g
Y29uc3QgY2hhciogY29uc3Qgc19hcnJheVByb3RvdHlwZUZvckVhY2hDb2RlOw0KZXh0ZXJuIGNv
bnN0IGludCBzX2FycmF5UHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJyYXlQcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVj
dEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hcnJheVByb3Rv
dHlwZUZvckVhY2hDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IHNfYXJyYXlQcm90b3R5cGVGaWx0ZXJDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FycmF5UHJv
dG90eXBlRmlsdGVyQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19hcnJheVByb3RvdHlwZUZpbHRlckNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXJyYXlQcm90b3R5cGVGaWx0ZXJDb2RlQ29uc3Ry
dWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlQcm90b3R5cGVNYXBD
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FycmF5UHJvdG90eXBlTWFwQ29kZUxlbmd0aDsNCmV4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hcnJheVByb3RvdHlwZU1hcENvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXJy
YXlQcm90b3R5cGVNYXBDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IHNfYXJyYXlQcm90b3R5cGVTb21lQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hcnJheVBy
b3RvdHlwZVNvbWVDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2FycmF5UHJvdG90eXBlU29tZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXJyYXlQcm90b3R5cGVTb21lQ29kZUNvbnN0cnVjdG9y
S2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FycmF5UHJvdG90eXBlRmlsbENvZGU7
DQpleHRlcm4gY29uc3QgaW50IHNfYXJyYXlQcm90b3R5cGVGaWxsQ29kZUxlbmd0aDsNCmV4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hcnJheVByb3RvdHlwZUZpbGxDb2RlQ29u
c3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2FycmF5
UHJvdG90eXBlRmlsbENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29u
c3Qgc19hcnJheVByb3RvdHlwZUZpbmRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FycmF5UHJv
dG90eXBlRmluZENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfYXJyYXlQcm90b3R5cGVGaW5kQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hcnJheVByb3RvdHlwZUZpbmRDb2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlQcm90b3R5cGVGaW5kSW5kZXhD
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FycmF5UHJvdG90eXBlRmluZEluZGV4Q29kZUxlbmd0
aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hcnJheVByb3RvdHlwZUZp
bmRJbmRleENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
b3JLaW5kIHNfYXJyYXlQcm90b3R5cGVGaW5kSW5kZXhDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlQcm90b3R5cGVJbmNsdWRlc0NvZGU7DQpleHRl
cm4gY29uc3QgaW50IHNfYXJyYXlQcm90b3R5cGVJbmNsdWRlc0NvZGVMZW5ndGg7DQpleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJyYXlQcm90b3R5cGVJbmNsdWRlc0NvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXJy
YXlQcm90b3R5cGVJbmNsdWRlc0NvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hh
ciogY29uc3Qgc19hcnJheVByb3RvdHlwZVNvcnRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2Fy
cmF5UHJvdG90eXBlU29ydENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfYXJyYXlQcm90b3R5cGVTb3J0Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hcnJheVByb3RvdHlwZVNvcnRDb2RlQ29uc3Ry
dWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlQcm90b3R5cGVDb25j
YXRTbG93UGF0aENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXJyYXlQcm90b3R5cGVDb25jYXRT
bG93UGF0aENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
YXJyYXlQcm90b3R5cGVDb25jYXRTbG93UGF0aENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXJyYXlQcm90b3R5cGVDb25jYXRTbG93UGF0
aENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hcnJheVBy
b3RvdHlwZUNvbmNhdENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXJyYXlQcm90b3R5cGVDb25j
YXRDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2FycmF5
UHJvdG90eXBlQ29uY2F0Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RvcktpbmQgc19hcnJheVByb3RvdHlwZUNvbmNhdENvZGVDb25zdHJ1Y3RvcktpbmQ7
DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hcnJheVByb3RvdHlwZUNvcHlXaXRoaW5Db2Rl
Ow0KZXh0ZXJuIGNvbnN0IGludCBzX2FycmF5UHJvdG90eXBlQ29weVdpdGhpbkNvZGVMZW5ndGg7
DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJyYXlQcm90b3R5cGVDb3B5
V2l0aGluQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3Rv
cktpbmQgc19hcnJheVByb3RvdHlwZUNvcHlXaXRoaW5Db2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXJyYXlQcm90b3R5cGVGbGF0SW50b0FycmF5Q29kZTsN
CmV4dGVybiBjb25zdCBpbnQgc19hcnJheVByb3RvdHlwZUZsYXRJbnRvQXJyYXlDb2RlTGVuZ3Ro
Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2FycmF5UHJvdG90eXBlRmxh
dEludG9BcnJheUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0b3JLaW5kIHNfYXJyYXlQcm90b3R5cGVGbGF0SW50b0FycmF5Q29kZUNvbnN0cnVjdG9yS2lu
ZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FycmF5UHJvdG90eXBlRmxhdENvZGU7DQpl
eHRlcm4gY29uc3QgaW50IHNfYXJyYXlQcm90b3R5cGVGbGF0Q29kZUxlbmd0aDsNCmV4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hcnJheVByb3RvdHlwZUZsYXRDb2RlQ29uc3Ry
dWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2FycmF5UHJv
dG90eXBlRmxhdENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c19hcnJheVByb3RvdHlwZUZsYXRJbnRvQXJyYXlXaXRoQ2FsbGJhY2tDb2RlOw0KZXh0ZXJuIGNv
bnN0IGludCBzX2FycmF5UHJvdG90eXBlRmxhdEludG9BcnJheVdpdGhDYWxsYmFja0NvZGVMZW5n
dGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXJyYXlQcm90b3R5cGVG
bGF0SW50b0FycmF5V2l0aENhbGxiYWNrQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hcnJheVByb3RvdHlwZUZsYXRJbnRvQXJyYXlXaXRo
Q2FsbGJhY2tDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNf
YXJyYXlQcm90b3R5cGVGbGF0TWFwQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hcnJheVByb3Rv
dHlwZUZsYXRNYXBDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2FycmF5UHJvdG90eXBlRmxhdE1hcENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXJyYXlQcm90b3R5cGVGbGF0TWFwQ29kZUNvbnN0
cnVjdG9yS2luZDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5
cGVOZXh0Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGVOZXh0Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19hc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUNvbnN0cnVjdEFiaWxpdHk7
DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hc3luY0Zyb21TeW5jSXRlcmF0
b3JQcm90b3R5cGVOZXh0Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBzX2FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZVJldHVybkNvZGU7DQpleHRlcm4g
Y29uc3QgaW50IHNfYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlUmV0dXJuQ29kZUxlbmd0
aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hc3luY0Zyb21TeW5jSXRl
cmF0b3JQcm90b3R5cGVSZXR1cm5Db2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdG9yS2luZCBzX2FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZVJldHVy
bkNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hc3luY0Zy
b21TeW5jSXRlcmF0b3JQcm90b3R5cGVUaHJvd0NvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXN5
bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlVGhyb3dDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZVRo
cm93Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3Rvcktp
bmQgc19hc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGVUaHJvd0NvZGVDb25zdHJ1Y3Rvcktp
bmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGVDcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3JDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBz
X2FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZUNyZWF0ZUFzeW5jRnJvbVN5bmNJdGVyYXRv
ckNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXN5bmNG
cm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlQ3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29kZUNv
bnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hc3lu
Y0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGVDcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3JDb2Rl
Q29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yUHJvdG90eXBlQXN5bmNGcm9tU3luY0l0ZXJhdG9yQ29uc3RydWN0b3JDb2RlOw0K
ZXh0ZXJuIGNvbnN0IGludCBzX2FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZUFzeW5jRnJv
bVN5bmNJdGVyYXRvckNvbnN0cnVjdG9yQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19hc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGVBc3luY0Zyb21T
eW5jSXRlcmF0b3JDb25zdHJ1Y3RvckNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlQXN5
bmNGcm9tU3luY0l0ZXJhdG9yQ29uc3RydWN0b3JDb2RlQ29uc3RydWN0b3JLaW5kOw0KDQoNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXN5bmNGdW5jdGlvblByb3Rv
dHlwZUFzeW5jRnVuY3Rpb25SZXN1bWVDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGVBc3luY0Z1bmN0aW9uUmVzdW1lQ29kZUxlbmd0aDsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hc3luY0Z1bmN0aW9uUHJvdG90eXBlQXN5bmNGdW5j
dGlvblJlc3VtZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0b3JLaW5kIHNfYXN5bmNGdW5jdGlvblByb3RvdHlwZUFzeW5jRnVuY3Rpb25SZXN1bWVDb2Rl
Q29uc3RydWN0b3JLaW5kOw0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2Fz
eW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHlDb2RlOw0KZXh0
ZXJuIGNvbnN0IGludCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JRdWV1
ZUlzRW1wdHlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHlDb2RlQ29u
c3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2FzeW5j
R2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHlDb2RlQ29uc3RydWN0
b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5
cGVBc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXN5
bmNHZW5lcmF0b3JQcm90b3R5cGVBc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZUNvZGVMZW5ndGg7
DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXN5bmNHZW5lcmF0b3JQcm90
b3R5cGVBc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0
ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVB
c3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9yUXVl
dWVEZXF1ZXVlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hc3luY0dlbmVyYXRvclByb3RvdHlw
ZUFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9y
UXVldWVEZXF1ZXVlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9yUXVldWVE
ZXF1ZXVlQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2Fz
eW5jR2VuZXJhdG9yUHJvdG90eXBlSXNFeGVjdXRpb25TdGF0ZUNvZGU7DQpleHRlcm4gY29uc3Qg
aW50IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVJc0V4ZWN1dGlvblN0YXRlQ29kZUxlbmd0aDsN
CmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hc3luY0dlbmVyYXRvclByb3Rv
dHlwZUlzRXhlY3V0aW9uU3RhdGVDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdG9yS2luZCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlSXNFeGVjdXRpb25T
dGF0ZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hc3lu
Y0dlbmVyYXRvclByb3RvdHlwZUlzU3VzcGVuZFlpZWxkU3RhdGVDb2RlOw0KZXh0ZXJuIGNvbnN0
IGludCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlSXNTdXNwZW5kWWllbGRTdGF0ZUNvZGVMZW5n
dGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGVJc1N1c3BlbmRZaWVsZFN0YXRlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZUlzU3Vz
cGVuZFlpZWxkU3RhdGVDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVBc3luY0dlbmVyYXRvclJlamVjdENvZGU7DQpl
eHRlcm4gY29uc3QgaW50IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVBc3luY0dlbmVyYXRvclJl
amVjdENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXN5
bmNHZW5lcmF0b3JQcm90b3R5cGVBc3luY0dlbmVyYXRvclJlamVjdENvZGVDb25zdHJ1Y3RBYmls
aXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGVBc3luY0dlbmVyYXRvclJlamVjdENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4g
Y29uc3QgY2hhciogY29uc3Qgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9y
UmVzb2x2ZUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVB
c3luY0dlbmVyYXRvclJlc29sdmVDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JSZXNvbHZl
Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQg
c19hc3luY0dlbmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9yUmVzb2x2ZUNvZGVDb25zdHJ1
Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hc3luY0dlbmVyYXRvclByb3Rv
dHlwZUFzeW5jR2VuZXJhdG9yWWllbGRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2FzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JZaWVsZENvZGVMZW5ndGg7DQpleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVBc3luY0dl
bmVyYXRvcllpZWxkQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9yWWllbGRD
b2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfYXN5bmNHZW5l
cmF0b3JQcm90b3R5cGVBd2FpdFZhbHVlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hc3luY0dl
bmVyYXRvclByb3RvdHlwZUF3YWl0VmFsdWVDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXdhaXRWYWx1ZUNvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXN5
bmNHZW5lcmF0b3JQcm90b3R5cGVBd2FpdFZhbHVlQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVy
biBjb25zdCBjaGFyKiBjb25zdCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlRG9Bc3luY0dlbmVy
YXRvckJvZHlDYWxsQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hc3luY0dlbmVyYXRvclByb3Rv
dHlwZURvQXN5bmNHZW5lcmF0b3JCb2R5Q2FsbENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVEb0FzeW5jR2VuZXJh
dG9yQm9keUNhbGxDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdG9yS2luZCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlRG9Bc3luY0dlbmVyYXRvckJvZHlD
YWxsQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FzeW5j
R2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JSZXN1bWVOZXh0Q29kZTsNCmV4dGVybiBj
b25zdCBpbnQgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9yUmVzdW1lTmV4
dENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYXN5bmNH
ZW5lcmF0b3JQcm90b3R5cGVBc3luY0dlbmVyYXRvclJlc3VtZU5leHRDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2FzeW5jR2VuZXJhdG9y
UHJvdG90eXBlQXN5bmNHZW5lcmF0b3JSZXN1bWVOZXh0Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5l
cmF0b3JFbnF1ZXVlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19hc3luY0dlbmVyYXRvclByb3Rv
dHlwZUFzeW5jR2VuZXJhdG9yRW5xdWV1ZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVBc3luY0dlbmVyYXRvckVu
cXVldWVDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9y
S2luZCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JFbnF1ZXVlQ29kZUNv
bnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2FzeW5jR2VuZXJhdG9y
UHJvdG90eXBlTmV4dENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXN5bmNHZW5lcmF0b3JQcm90
b3R5cGVOZXh0Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19hc3luY0dlbmVyYXRvclByb3RvdHlwZU5leHRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlTmV4
dENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19hc3luY0dl
bmVyYXRvclByb3RvdHlwZVJldHVybkNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfYXN5bmNHZW5l
cmF0b3JQcm90b3R5cGVSZXR1cm5Db2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlUmV0dXJuQ29kZUNvbnN0cnVjdEFi
aWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19hc3luY0dlbmVyYXRv
clByb3RvdHlwZVJldHVybkNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciog
Y29uc3Qgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZVRocm93Q29kZTsNCmV4dGVybiBjb25zdCBp
bnQgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZVRocm93Q29kZUxlbmd0aDsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19hc3luY0dlbmVyYXRvclByb3RvdHlwZVRocm93Q29k
ZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19h
c3luY0dlbmVyYXRvclByb3RvdHlwZVRocm93Q29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNf
YXN5bmNJdGVyYXRvclByb3RvdHlwZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJDb2RlOw0KZXh0
ZXJuIGNvbnN0IGludCBzX2FzeW5jSXRlcmF0b3JQcm90b3R5cGVTeW1ib2xBc3luY0l0ZXJhdG9y
R2V0dGVyQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19h
c3luY0l0ZXJhdG9yUHJvdG90eXBlU3ltYm9sQXN5bmNJdGVyYXRvckdldHRlckNvZGVDb25zdHJ1
Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfYXN5bmNJdGVy
YXRvclByb3RvdHlwZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJDb2RlQ29uc3RydWN0b3JLaW5k
Ow0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2RhdGVQcm90b3R5cGVUb0xv
Y2FsZVN0cmluZ0NvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfZGF0ZVByb3RvdHlwZVRvTG9jYWxl
U3RyaW5nQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19k
YXRlUHJvdG90eXBlVG9Mb2NhbGVTdHJpbmdDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2RhdGVQcm90b3R5cGVUb0xvY2FsZVN0cmluZ0Nv
ZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19kYXRlUHJvdG90
eXBlVG9Mb2NhbGVEYXRlU3RyaW5nQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19kYXRlUHJvdG90
eXBlVG9Mb2NhbGVEYXRlU3RyaW5nQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19kYXRlUHJvdG90eXBlVG9Mb2NhbGVEYXRlU3RyaW5nQ29kZUNvbnN0cnVj
dEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19kYXRlUHJvdG90
eXBlVG9Mb2NhbGVEYXRlU3RyaW5nQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBj
aGFyKiBjb25zdCBzX2RhdGVQcm90b3R5cGVUb0xvY2FsZVRpbWVTdHJpbmdDb2RlOw0KZXh0ZXJu
IGNvbnN0IGludCBzX2RhdGVQcm90b3R5cGVUb0xvY2FsZVRpbWVTdHJpbmdDb2RlTGVuZ3RoOw0K
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2RhdGVQcm90b3R5cGVUb0xvY2Fs
ZVRpbWVTdHJpbmdDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdG9yS2luZCBzX2RhdGVQcm90b3R5cGVUb0xvY2FsZVRpbWVTdHJpbmdDb2RlQ29uc3RydWN0
b3JLaW5kOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19mdW5jdGlv
blByb3RvdHlwZUNhbGxDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2Z1bmN0aW9uUHJvdG90eXBl
Q2FsbENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZnVu
Y3Rpb25Qcm90b3R5cGVDYWxsQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RvcktpbmQgc19mdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfZnVuY3Rpb25Qcm90b3R5cGVBcHBseUNv
ZGU7DQpleHRlcm4gY29uc3QgaW50IHNfZnVuY3Rpb25Qcm90b3R5cGVBcHBseUNvZGVMZW5ndGg7
DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZnVuY3Rpb25Qcm90b3R5cGVB
cHBseUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JL
aW5kIHNfZnVuY3Rpb25Qcm90b3R5cGVBcHBseUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4g
Y29uc3QgY2hhciogY29uc3Qgc19mdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlQ29k
ZTsNCmV4dGVybiBjb25zdCBpbnQgc19mdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNl
Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19mdW5jdGlv
blByb3RvdHlwZVN5bWJvbEhhc0luc3RhbmNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19mdW5jdGlvblByb3RvdHlwZVN5bWJvbEhhc0lu
c3RhbmNlQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2Z1
bmN0aW9uUHJvdG90eXBlQmluZENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfZnVuY3Rpb25Qcm90
b3R5cGVCaW5kQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19mdW5jdGlvblByb3RvdHlwZUJpbmRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2Z1bmN0aW9uUHJvdG90eXBlQmluZENvZGVDb25zdHJ1
Y3RvcktpbmQ7DQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfZ2Vu
ZXJhdG9yUHJvdG90eXBlR2VuZXJhdG9yUmVzdW1lQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19n
ZW5lcmF0b3JQcm90b3R5cGVHZW5lcmF0b3JSZXN1bWVDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2dlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3Vt
ZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5k
IHNfZ2VuZXJhdG9yUHJvdG90eXBlR2VuZXJhdG9yUmVzdW1lQ29kZUNvbnN0cnVjdG9yS2luZDsN
CmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2dlbmVyYXRvclByb3RvdHlwZU5leHRDb2RlOw0K
ZXh0ZXJuIGNvbnN0IGludCBzX2dlbmVyYXRvclByb3RvdHlwZU5leHRDb2RlTGVuZ3RoOw0KZXh0
ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2dlbmVyYXRvclByb3RvdHlwZU5leHRD
b2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBz
X2dlbmVyYXRvclByb3RvdHlwZU5leHRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IHNfZ2VuZXJhdG9yUHJvdG90eXBlUmV0dXJuQ29kZTsNCmV4dGVybiBjb25z
dCBpbnQgc19nZW5lcmF0b3JQcm90b3R5cGVSZXR1cm5Db2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2dlbmVyYXRvclByb3RvdHlwZVJldHVybkNvZGVDb25z
dHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfZ2VuZXJh
dG9yUHJvdG90eXBlUmV0dXJuQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBzX2dlbmVyYXRvclByb3RvdHlwZVRocm93Q29kZTsNCmV4dGVybiBjb25zdCBpbnQg
c19nZW5lcmF0b3JQcm90b3R5cGVUaHJvd0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfZ2VuZXJhdG9yUHJvdG90eXBlVGhyb3dDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2dlbmVyYXRvclByb3Rv
dHlwZVRocm93Q29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc19nbG9iYWxPYmplY3RJc0Zpbml0ZUNvZGU7DQpleHRlcm4gY29uc3Qg
aW50IHNfZ2xvYmFsT2JqZWN0SXNGaW5pdGVDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2dsb2JhbE9iamVjdElzRmluaXRlQ29kZUNvbnN0cnVjdEFiaWxp
dHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19nbG9iYWxPYmplY3RJc0Zp
bml0ZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19nbG9i
YWxPYmplY3RJc05hTkNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfZ2xvYmFsT2JqZWN0SXNOYU5D
b2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2dsb2JhbE9i
amVjdElzTmFOQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RvcktpbmQgc19nbG9iYWxPYmplY3RJc05hTkNvZGVDb25zdHJ1Y3RvcktpbmQ7DQoNCg0KDQoN
Cg0KDQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19nbG9iYWxPcGVyYXRpb25zVG9JbnRlZ2Vy
Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19nbG9iYWxPcGVyYXRpb25zVG9JbnRlZ2VyQ29kZUxl
bmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19nbG9iYWxPcGVyYXRp
b25zVG9JbnRlZ2VyQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19nbG9iYWxPcGVyYXRpb25zVG9JbnRlZ2VyQ29kZUNvbnN0cnVjdG9yS2lu
ZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2dsb2JhbE9wZXJhdGlvbnNUb0xlbmd0aENv
ZGU7DQpleHRlcm4gY29uc3QgaW50IHNfZ2xvYmFsT3BlcmF0aW9uc1RvTGVuZ3RoQ29kZUxlbmd0
aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19nbG9iYWxPcGVyYXRpb25z
VG9MZW5ndGhDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVj
dG9yS2luZCBzX2dsb2JhbE9wZXJhdGlvbnNUb0xlbmd0aENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpl
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19nbG9iYWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNv
ZGU7DQpleHRlcm4gY29uc3QgaW50IHNfZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJDb2Rl
TGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2dsb2JhbE9wZXJh
dGlvbnNTcGVjaWVzR2V0dGVyQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RvcktpbmQgc19nbG9iYWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVDb25z
dHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19nbG9iYWxPcGVyYXRpb25z
U3BlY2llc0NvbnN0cnVjdG9yQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19nbG9iYWxPcGVyYXRp
b25zU3BlY2llc0NvbnN0cnVjdG9yQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19nbG9iYWxPcGVyYXRpb25zU3BlY2llc0NvbnN0cnVjdG9yQ29kZUNvbnN0
cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19nbG9iYWxP
cGVyYXRpb25zU3BlY2llc0NvbnN0cnVjdG9yQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBj
b25zdCBjaGFyKiBjb25zdCBzX2dsb2JhbE9wZXJhdGlvbnNDb3B5RGF0YVByb3BlcnRpZXNDb2Rl
Ow0KZXh0ZXJuIGNvbnN0IGludCBzX2dsb2JhbE9wZXJhdGlvbnNDb3B5RGF0YVByb3BlcnRpZXND
b2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2dsb2JhbE9w
ZXJhdGlvbnNDb3B5RGF0YVByb3BlcnRpZXNDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2dsb2JhbE9wZXJhdGlvbnNDb3B5RGF0YVByb3Bl
cnRpZXNDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfZ2xv
YmFsT3BlcmF0aW9uc0NvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9uc0NvZGU7DQpleHRlcm4g
Y29uc3QgaW50IHNfZ2xvYmFsT3BlcmF0aW9uc0NvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9u
c0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ2xvYmFs
T3BlcmF0aW9uc0NvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9uc0NvZGVDb25zdHJ1Y3RBYmls
aXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfZ2xvYmFsT3BlcmF0aW9u
c0NvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9uc0NvZGVDb25zdHJ1Y3RvcktpbmQ7DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdFByb21pc2VGdWxmaWxsZWRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBz
X2luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdFByb21pc2VGdWxmaWxsZWRDb2RlTGVuZ3Ro
Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2luc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdFByb21pc2VGdWxmaWxsZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdFByb21pc2VGdWxmaWxsZWRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNo
YXIqIGNvbnN0IHNfaW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0UHJvbWlzZVJlamVjdGVk
Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19pbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3RQ
cm9taXNlUmVqZWN0ZWRDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX2luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdFByb21pc2VSZWplY3RlZENvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfaW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0UHJvbWlzZVJlamVjdGVkQ29kZUNvbnN0cnVjdG9y
S2luZDsNCg0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9ySW50ZXJuYWxBbGxDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9ySW50ZXJuYWxBbGxDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9ySW50ZXJu
YWxBbGxDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9y
S2luZCBzX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9ySW50ZXJuYWxBbGxDb2RlQ29uc3RydWN0
b3JLaW5kOw0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX2l0ZXJhdG9ySGVs
cGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2l0ZXJhdG9ySGVs
cGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2l0ZXJhdG9ySGVscGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlQ29uc3RydWN0
QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2l0ZXJhdG9ySGVs
cGVyc1BlcmZvcm1JdGVyYXRpb25Db2RlQ29uc3RydWN0b3JLaW5kOw0KDQoNCg0KDQoNCmV4dGVy
biBjb25zdCBjaGFyKiBjb25zdCBzX2l0ZXJhdG9yUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JHZXR0
ZXJDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX2l0ZXJhdG9yUHJvdG90eXBlU3ltYm9sSXRlcmF0
b3JHZXR0ZXJDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2l0ZXJhdG9yUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JHZXR0ZXJDb2RlQ29uc3RydWN0QWJpbGl0
eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX2l0ZXJhdG9yUHJvdG90eXBl
U3ltYm9sSXRlcmF0b3JHZXR0ZXJDb2RlQ29uc3RydWN0b3JLaW5kOw0KDQoNCg0KDQoNCmV4dGVy
biBjb25zdCBjaGFyKiBjb25zdCBzX21hcEl0ZXJhdG9yUHJvdG90eXBlTWFwSXRlcmF0b3JOZXh0
Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19tYXBJdGVyYXRvclByb3RvdHlwZU1hcEl0ZXJhdG9y
TmV4dENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfbWFw
SXRlcmF0b3JQcm90b3R5cGVNYXBJdGVyYXRvck5leHRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX21hcEl0ZXJhdG9yUHJvdG90eXBlTWFw
SXRlcmF0b3JOZXh0Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25z
dCBzX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfbWFw
SXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19tYXBJdGVyYXRvclByb3RvdHlwZU5leHRDb2RlQ29uc3RydWN0QWJpbGl0
eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX21hcEl0ZXJhdG9yUHJvdG90
eXBlTmV4dENvZGVDb25zdHJ1Y3RvcktpbmQ7DQoNCg0KDQoNCg0KDQpleHRlcm4gY29uc3QgY2hh
ciogY29uc3Qgc19tYXBQcm90b3R5cGVGb3JFYWNoQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19t
YXBQcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19tYXBQcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19tYXBQcm90b3R5cGVGb3JFYWNoQ29kZUNv
bnN0cnVjdG9yS2luZDsNCg0KDQoNCg0KDQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19tb2R1
bGVMb2FkZXJTZXRTdGF0ZVRvTWF4Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19tb2R1bGVMb2Fk
ZXJTZXRTdGF0ZVRvTWF4Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19tb2R1bGVMb2FkZXJTZXRTdGF0ZVRvTWF4Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19tb2R1bGVMb2FkZXJTZXRTdGF0ZVRv
TWF4Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX21vZHVs
ZUxvYWRlck5ld1JlZ2lzdHJ5RW50cnlDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX21vZHVsZUxv
YWRlck5ld1JlZ2lzdHJ5RW50cnlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX21vZHVsZUxvYWRlck5ld1JlZ2lzdHJ5RW50cnlDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX21vZHVsZUxvYWRlck5l
d1JlZ2lzdHJ5RW50cnlDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IHNfbW9kdWxlTG9hZGVyRW5zdXJlUmVnaXN0ZXJlZENvZGU7DQpleHRlcm4gY29uc3QgaW50
IHNfbW9kdWxlTG9hZGVyRW5zdXJlUmVnaXN0ZXJlZENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfbW9kdWxlTG9hZGVyRW5zdXJlUmVnaXN0ZXJlZENvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfbW9k
dWxlTG9hZGVyRW5zdXJlUmVnaXN0ZXJlZENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc19tb2R1bGVMb2FkZXJGb3JjZUZ1bGZpbGxQcm9taXNlQ29kZTsNCmV4
dGVybiBjb25zdCBpbnQgc19tb2R1bGVMb2FkZXJGb3JjZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0
aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19tb2R1bGVMb2FkZXJGb3Jj
ZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RvcktpbmQgc19tb2R1bGVMb2FkZXJGb3JjZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0
cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX21vZHVsZUxvYWRlckZ1bGZp
bGxGZXRjaENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfbW9kdWxlTG9hZGVyRnVsZmlsbEZldGNo
Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19tb2R1bGVM
b2FkZXJGdWxmaWxsRmV0Y2hDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdG9yS2luZCBzX21vZHVsZUxvYWRlckZ1bGZpbGxGZXRjaENvZGVDb25zdHJ1Y3Rv
cktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19tb2R1bGVMb2FkZXJSZXF1ZXN0RmV0
Y2hDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX21vZHVsZUxvYWRlclJlcXVlc3RGZXRjaENvZGVM
ZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfbW9kdWxlTG9hZGVy
UmVxdWVzdEZldGNoQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19tb2R1bGVMb2FkZXJSZXF1ZXN0RmV0Y2hDb2RlQ29uc3RydWN0b3JLaW5k
Ow0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfbW9kdWxlTG9hZGVyUmVxdWVzdEluc3RhbnRp
YXRlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19tb2R1bGVMb2FkZXJSZXF1ZXN0SW5zdGFudGlh
dGVDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX21vZHVs
ZUxvYWRlclJlcXVlc3RJbnN0YW50aWF0ZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfbW9kdWxlTG9hZGVyUmVxdWVzdEluc3RhbnRpYXRl
Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX21vZHVsZUxv
YWRlclJlcXVlc3RTYXRpc2Z5Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19tb2R1bGVMb2FkZXJS
ZXF1ZXN0U2F0aXNmeUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfbW9kdWxlTG9hZGVyUmVxdWVzdFNhdGlzZnlDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX21vZHVsZUxvYWRlclJlcXVlc3RTYXRp
c2Z5Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX21vZHVs
ZUxvYWRlckxpbmtDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX21vZHVsZUxvYWRlckxpbmtDb2Rl
TGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX21vZHVsZUxvYWRl
ckxpbmtDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9y
S2luZCBzX21vZHVsZUxvYWRlckxpbmtDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IHNfbW9kdWxlTG9hZGVyTW9kdWxlRXZhbHVhdGlvbkNvZGU7DQpleHRlcm4g
Y29uc3QgaW50IHNfbW9kdWxlTG9hZGVyTW9kdWxlRXZhbHVhdGlvbkNvZGVMZW5ndGg7DQpleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfbW9kdWxlTG9hZGVyTW9kdWxlRXZhbHVh
dGlvbkNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JL
aW5kIHNfbW9kdWxlTG9hZGVyTW9kdWxlRXZhbHVhdGlvbkNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpl
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19tb2R1bGVMb2FkZXJQcm92aWRlRmV0Y2hDb2RlOw0K
ZXh0ZXJuIGNvbnN0IGludCBzX21vZHVsZUxvYWRlclByb3ZpZGVGZXRjaENvZGVMZW5ndGg7DQpl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfbW9kdWxlTG9hZGVyUHJvdmlkZUZl
dGNoQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3Rvcktp
bmQgc19tb2R1bGVMb2FkZXJQcm92aWRlRmV0Y2hDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJu
IGNvbnN0IGNoYXIqIGNvbnN0IHNfbW9kdWxlTG9hZGVyTG9hZE1vZHVsZUNvZGU7DQpleHRlcm4g
Y29uc3QgaW50IHNfbW9kdWxlTG9hZGVyTG9hZE1vZHVsZUNvZGVMZW5ndGg7DQpleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfbW9kdWxlTG9hZGVyTG9hZE1vZHVsZUNvZGVDb25z
dHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfbW9kdWxl
TG9hZGVyTG9hZE1vZHVsZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciog
Y29uc3Qgc19tb2R1bGVMb2FkZXJMaW5rQW5kRXZhbHVhdGVNb2R1bGVDb2RlOw0KZXh0ZXJuIGNv
bnN0IGludCBzX21vZHVsZUxvYWRlckxpbmtBbmRFdmFsdWF0ZU1vZHVsZUNvZGVMZW5ndGg7DQpl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfbW9kdWxlTG9hZGVyTGlua0FuZEV2
YWx1YXRlTW9kdWxlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19tb2R1bGVMb2FkZXJMaW5rQW5kRXZhbHVhdGVNb2R1bGVDb2RlQ29uc3Ry
dWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfbW9kdWxlTG9hZGVyTG9hZEFu
ZEV2YWx1YXRlTW9kdWxlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19tb2R1bGVMb2FkZXJMb2Fk
QW5kRXZhbHVhdGVNb2R1bGVDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX21vZHVsZUxvYWRlckxvYWRBbmRFdmFsdWF0ZU1vZHVsZUNvZGVDb25zdHJ1Y3RB
YmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfbW9kdWxlTG9hZGVy
TG9hZEFuZEV2YWx1YXRlTW9kdWxlQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBj
aGFyKiBjb25zdCBzX21vZHVsZUxvYWRlclJlcXVlc3RJbXBvcnRNb2R1bGVDb2RlOw0KZXh0ZXJu
IGNvbnN0IGludCBzX21vZHVsZUxvYWRlclJlcXVlc3RJbXBvcnRNb2R1bGVDb2RlTGVuZ3RoOw0K
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX21vZHVsZUxvYWRlclJlcXVlc3RJ
bXBvcnRNb2R1bGVDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdG9yS2luZCBzX21vZHVsZUxvYWRlclJlcXVlc3RJbXBvcnRNb2R1bGVDb2RlQ29uc3RydWN0
b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfbW9kdWxlTG9hZGVyRGVwZW5kZW5j
eUtleXNJZkV2YWx1YXRlZENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfbW9kdWxlTG9hZGVyRGVw
ZW5kZW5jeUtleXNJZkV2YWx1YXRlZENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfbW9kdWxlTG9hZGVyRGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZENvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfbW9k
dWxlTG9hZGVyRGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZENvZGVDb25zdHJ1Y3RvcktpbmQ7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IHNfbnVtYmVyQ29uc3RydWN0b3JJc0Zpbml0ZUNvZGU7DQpleHRlcm4gY29uc3QgaW50
IHNfbnVtYmVyQ29uc3RydWN0b3JJc0Zpbml0ZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfbnVtYmVyQ29uc3RydWN0b3JJc0Zpbml0ZUNvZGVDb25zdHJ1
Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfbnVtYmVyQ29u
c3RydWN0b3JJc0Zpbml0ZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciog
Y29uc3Qgc19udW1iZXJDb25zdHJ1Y3RvcklzTmFOQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19u
dW1iZXJDb25zdHJ1Y3RvcklzTmFOQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19udW1iZXJDb25zdHJ1Y3RvcklzTmFOQ29kZUNvbnN0cnVjdEFiaWxpdHk7
DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19udW1iZXJDb25zdHJ1Y3Rvcklz
TmFOQ29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBzX29iamVjdENvbnN0cnVjdG9yRW50cmllc0NvZGU7DQpleHRlcm4gY29uc3QgaW50IHNf
b2JqZWN0Q29uc3RydWN0b3JFbnRyaWVzQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19vYmplY3RDb25zdHJ1Y3RvckVudHJpZXNDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX29iamVjdENvbnN0cnVj
dG9yRW50cmllc0NvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c19vYmplY3RDb25zdHJ1Y3RvckZyb21FbnRyaWVzQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19v
YmplY3RDb25zdHJ1Y3RvckZyb21FbnRyaWVzQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19vYmplY3RDb25zdHJ1Y3RvckZyb21FbnRyaWVzQ29kZUNvbnN0
cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19vYmplY3RD
b25zdHJ1Y3RvckZyb21FbnRyaWVzQ29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0KDQoNCmV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VDb25zdHJ1Y3RvckFsbENvZGU7DQpleHRl
cm4gY29uc3QgaW50IHNfcHJvbWlzZUNvbnN0cnVjdG9yQWxsQ29kZUxlbmd0aDsNCmV4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9taXNlQ29uc3RydWN0b3JBbGxDb2RlQ29u
c3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3Byb21p
c2VDb25zdHJ1Y3RvckFsbENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciog
Y29uc3Qgc19wcm9taXNlQ29uc3RydWN0b3JBbGxTZXR0bGVkQ29kZTsNCmV4dGVybiBjb25zdCBp
bnQgc19wcm9taXNlQ29uc3RydWN0b3JBbGxTZXR0bGVkQ29kZUxlbmd0aDsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9taXNlQ29uc3RydWN0b3JBbGxTZXR0bGVkQ29k
ZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19w
cm9taXNlQ29uc3RydWN0b3JBbGxTZXR0bGVkQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBj
b25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VDb25zdHJ1Y3RvckFueUNvZGU7DQpleHRlcm4gY29u
c3QgaW50IHNfcHJvbWlzZUNvbnN0cnVjdG9yQW55Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9taXNlQ29uc3RydWN0b3JBbnlDb2RlQ29uc3RydWN0
QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3Byb21pc2VDb25z
dHJ1Y3RvckFueUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c19wcm9taXNlQ29uc3RydWN0b3JSYWNlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19wcm9taXNl
Q29uc3RydWN0b3JSYWNlQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19wcm9taXNlQ29uc3RydWN0b3JSYWNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19wcm9taXNlQ29uc3RydWN0b3JSYWNlQ29k
ZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VDb25z
dHJ1Y3RvclJlamVjdENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcHJvbWlzZUNvbnN0cnVjdG9y
UmVqZWN0Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19w
cm9taXNlQ29uc3RydWN0b3JSZWplY3RDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3Byb21pc2VDb25zdHJ1Y3RvclJlamVjdENvZGVDb25z
dHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNlQ29uc3RydWN0
b3JSZXNvbHZlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19wcm9taXNlQ29uc3RydWN0b3JSZXNv
bHZlQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9t
aXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RvcktpbmQgc19wcm9taXNlQ29uc3RydWN0b3JSZXNvbHZlQ29kZUNvbnN0
cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VDb25zdHJ1Y3Rv
clByb21pc2VDb25zdHJ1Y3RvckNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcHJvbWlzZUNvbnN0
cnVjdG9yUHJvbWlzZUNvbnN0cnVjdG9yQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19wcm9taXNlQ29uc3RydWN0b3JQcm9taXNlQ29uc3RydWN0b3JDb2Rl
Q29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3By
b21pc2VDb25zdHJ1Y3RvclByb21pc2VDb25zdHJ1Y3RvckNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpl
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNlQ29uc3RydWN0b3JJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3RvckNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcHJvbWlzZUNvbnN0cnVjdG9y
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3JDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX3Byb21pc2VDb25zdHJ1Y3RvckludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3Rv
cktpbmQgc19wcm9taXNlQ29uc3RydWN0b3JJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvckNvZGVD
b25zdHJ1Y3RvcktpbmQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY29uc3QgY2hh
ciogY29uc3Qgc19wcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VSZWFjdGlvbkNvZGU7DQpleHRl
cm4gY29uc3QgaW50IHNfcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlUmVhY3Rpb25Db2RlTGVu
Z3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3Byb21pc2VPcGVyYXRp
b25zTmV3UHJvbWlzZVJlYWN0aW9uQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RvcktpbmQgc19wcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VSZWFjdGlv
bkNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNl
T3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5U2xvd0NvZGU7DQpleHRlcm4gY29uc3QgaW50
IHNfcHJvbWlzZU9wZXJhdGlvbnNOZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3dDb2RlTGVuZ3RoOw0K
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3Byb21pc2VPcGVyYXRpb25zTmV3
UHJvbWlzZUNhcGFiaWxpdHlTbG93Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RvcktpbmQgc19wcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmls
aXR5U2xvd0NvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19w
cm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5Q29kZTsNCmV4dGVybiBjb25zdCBp
bnQgc19wcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUxlbmd0aDsNCmV4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9taXNlT3BlcmF0aW9uc05ld1By
b21pc2VDYXBhYmlsaXR5Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RvcktpbmQgc19wcm9taXNlT3BlcmF0aW9uc05ld1Byb21pc2VDYXBhYmlsaXR5Q29k
ZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VPcGVy
YXRpb25zUHJvbWlzZVJlc29sdmVTbG93Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19wcm9taXNl
T3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlU2xvd0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVNsb3dD
b2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBz
X3Byb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVTbG93Q29kZUNvbnN0cnVjdG9yS2luZDsN
CmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlamVj
dFNsb3dDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21pc2VPcGVyYXRpb25zUHJvbWlzZVJl
amVjdFNsb3dDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X3Byb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlamVjdFNsb3dDb2RlQ29uc3RydWN0QWJpbGl0eTsN
CmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3Byb21pc2VPcGVyYXRpb25zUHJv
bWlzZVJlamVjdFNsb3dDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNOZXdIYW5kbGVkUmVqZWN0ZWRQcm9taXNlQ29kZTsNCmV4
dGVybiBjb25zdCBpbnQgc19wcm9taXNlT3BlcmF0aW9uc05ld0hhbmRsZWRSZWplY3RlZFByb21p
c2VDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3Byb21p
c2VPcGVyYXRpb25zTmV3SGFuZGxlZFJlamVjdGVkUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5
Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcHJvbWlzZU9wZXJhdGlvbnNO
ZXdIYW5kbGVkUmVqZWN0ZWRQcm9taXNlQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25z
dCBjaGFyKiBjb25zdCBzX3Byb21pc2VPcGVyYXRpb25zVHJpZ2dlclByb21pc2VSZWFjdGlvbnND
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21pc2VPcGVyYXRpb25zVHJpZ2dlclByb21pc2VS
ZWFjdGlvbnNDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X3Byb21pc2VPcGVyYXRpb25zVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3Byb21pc2VPcGVyYXRp
b25zVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNv
bnN0IGNoYXIqIGNvbnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNSZXNvbHZlUHJvbWlzZUNvZGU7DQpl
eHRlcm4gY29uc3QgaW50IHNfcHJvbWlzZU9wZXJhdGlvbnNSZXNvbHZlUHJvbWlzZUNvZGVMZW5n
dGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfcHJvbWlzZU9wZXJhdGlv
bnNSZXNvbHZlUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0b3JLaW5kIHNfcHJvbWlzZU9wZXJhdGlvbnNSZXNvbHZlUHJvbWlzZUNvZGVDb25z
dHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNlT3BlcmF0aW9u
c1JlamVjdFByb21pc2VDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21pc2VPcGVyYXRpb25z
UmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7
DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19wcm9taXNlT3BlcmF0aW9uc1Jl
amVjdFByb21pc2VDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IHNfcHJvbWlzZU9wZXJhdGlvbnNGdWxmaWxsUHJvbWlzZUNvZGU7DQpleHRlcm4gY29uc3QgaW50
IHNfcHJvbWlzZU9wZXJhdGlvbnNGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGg7DQpleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNGdWxmaWxsUHJvbWlz
ZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5k
IHNfcHJvbWlzZU9wZXJhdGlvbnNGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpl
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNlT3BlcmF0aW9uc1Jlc29sdmVQcm9taXNl
V2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2tDb2RlOw0KZXh0ZXJuIGNvbnN0IGlu
dCBzX3Byb21pc2VPcGVyYXRpb25zUmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5j
dGlvbkNhbGxDaGVja0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNSZXNvbHZlUHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1
bmN0aW9uQ2FsbENoZWNrQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RvcktpbmQgc19wcm9taXNlT3BlcmF0aW9uc1Jlc29sdmVQcm9taXNlV2l0aEZpcnN0
UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2tDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNv
bnN0IGNoYXIqIGNvbnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNSZWplY3RQcm9taXNlV2l0aEZpcnN0
UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2tDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21p
c2VPcGVyYXRpb25zUmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENo
ZWNrQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9t
aXNlT3BlcmF0aW9uc1JlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxD
aGVja0NvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JL
aW5kIHNfcHJvbWlzZU9wZXJhdGlvbnNSZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVu
Y3Rpb25DYWxsQ2hlY2tDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlOw0KZXh0
ZXJuIGNvbnN0IGludCBzX3Byb21pc2VPcGVyYXRpb25zQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25z
Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9taXNl
T3BlcmF0aW9uc0NyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0K
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcHJvbWlzZU9wZXJhdGlvbnNDcmVh
dGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNo
YXIqIGNvbnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JXaXRob3V0UHJv
bWlzZUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVh
Y3Rpb25Kb2JXaXRob3V0UHJvbWlzZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JXaXRob3V0
UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
b3JLaW5kIHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JXaXRob3V0UHJvbWlz
ZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNl
T3BlcmF0aW9uc1Jlc29sdmVXaXRob3V0UHJvbWlzZUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNf
cHJvbWlzZU9wZXJhdGlvbnNSZXNvbHZlV2l0aG91dFByb21pc2VDb2RlTGVuZ3RoOw0KZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3Byb21pc2VPcGVyYXRpb25zUmVzb2x2ZVdp
dGhvdXRQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19wcm9taXNlT3BlcmF0aW9uc1Jlc29sdmVXaXRob3V0UHJvbWlzZUNvZGVD
b25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNlT3BlcmF0
aW9uc1JlamVjdFdpdGhvdXRQcm9taXNlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19wcm9taXNl
T3BlcmF0aW9uc1JlamVjdFdpdGhvdXRQcm9taXNlQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9taXNlT3BlcmF0aW9uc1JlamVjdFdpdGhvdXRQcm9t
aXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3Rvcktp
bmQgc19wcm9taXNlT3BlcmF0aW9uc1JlamVjdFdpdGhvdXRQcm9taXNlQ29kZUNvbnN0cnVjdG9y
S2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VPcGVyYXRpb25zRnVsZmls
bFdpdGhvdXRQcm9taXNlQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19wcm9taXNlT3BlcmF0aW9u
c0Z1bGZpbGxXaXRob3V0UHJvbWlzZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNGdWxmaWxsV2l0aG91dFByb21pc2VDb2Rl
Q29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3By
b21pc2VPcGVyYXRpb25zRnVsZmlsbFdpdGhvdXRQcm9taXNlQ29kZUNvbnN0cnVjdG9yS2luZDsN
CmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VPcGVyYXRpb25zQ3JlYXRlUmVzb2x2
aW5nRnVuY3Rpb25zV2l0aG91dFByb21pc2VDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21p
c2VPcGVyYXRpb25zQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zV2l0aG91dFByb21pc2VDb2RlTGVu
Z3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3Byb21pc2VPcGVyYXRp
b25zQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zV2l0aG91dFByb21pc2VDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3Byb21pc2VPcGVyYXRp
b25zQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zV2l0aG91dFByb21pc2VDb2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNl
UmVhY3Rpb25Kb2JDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21pc2VPcGVyYXRpb25zUHJv
bWlzZVJlYWN0aW9uSm9iQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19wcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZWFjdGlvbkpvYkNvZGVDb25zdHJ1Y3RB
YmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcHJvbWlzZU9wZXJh
dGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9i
RmFzdENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVz
b2x2ZVRoZW5hYmxlSm9iRmFzdENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iRmFz
dENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5k
IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iRmFzdENvZGVDb25z
dHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19wcm9taXNlT3BlcmF0aW9u
c1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JXaXRob3V0UHJvbWlzZUZhc3RDb2RlOw0KZXh0ZXJu
IGNvbnN0IGludCBzX3Byb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYldp
dGhvdXRQcm9taXNlRmFzdENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iV2l0aG91
dFByb21pc2VGYXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19wcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JX
aXRob3V0UHJvbWlzZUZhc3RDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IHNfcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZTsN
CmV4dGVybiBjb25zdCBpbnQgc19wcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFi
bGVKb2JDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3By
b21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVDb25zdHJ1Y3RBYmls
aXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcHJvbWlzZU9wZXJhdGlv
bnNQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY29uc3Qg
Y2hhciogY29uc3Qgc19wcm9taXNlUHJvdG90eXBlQ2F0Y2hDb2RlOw0KZXh0ZXJuIGNvbnN0IGlu
dCBzX3Byb21pc2VQcm90b3R5cGVDYXRjaENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfcHJvbWlzZVByb3RvdHlwZUNhdGNoQ29kZUNvbnN0cnVjdEFiaWxp
dHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19wcm9taXNlUHJvdG90eXBl
Q2F0Y2hDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcHJv
bWlzZVByb3RvdHlwZVRoZW5Db2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21pc2VQcm90b3R5
cGVUaGVuQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19w
cm9taXNlUHJvdG90eXBlVGhlbkNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0b3JLaW5kIHNfcHJvbWlzZVByb3RvdHlwZVRoZW5Db2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcHJvbWlzZVByb3RvdHlwZUZpbmFsbHlD
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21pc2VQcm90b3R5cGVGaW5hbGx5Q29kZUxlbmd0
aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19wcm9taXNlUHJvdG90eXBl
RmluYWxseUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
b3JLaW5kIHNfcHJvbWlzZVByb3RvdHlwZUZpbmFsbHlDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcHJvbWlzZVByb3RvdHlwZUdldFRoZW5GaW5hbGx5Q29k
ZTsNCmV4dGVybiBjb25zdCBpbnQgc19wcm9taXNlUHJvdG90eXBlR2V0VGhlbkZpbmFsbHlDb2Rl
TGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3Byb21pc2VQcm90
b3R5cGVHZXRUaGVuRmluYWxseUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0b3JLaW5kIHNfcHJvbWlzZVByb3RvdHlwZUdldFRoZW5GaW5hbGx5Q29kZUNv
bnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Byb21pc2VQcm90b3R5
cGVHZXRDYXRjaEZpbmFsbHlDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Byb21pc2VQcm90b3R5
cGVHZXRDYXRjaEZpbmFsbHlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3Byb21pc2VQcm90b3R5cGVHZXRDYXRjaEZpbmFsbHlDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3Byb21pc2VQcm90b3R5
cGVHZXRDYXRjaEZpbmFsbHlDb2RlQ29uc3RydWN0b3JLaW5kOw0KDQoNCg0KDQoNCg0KDQoNCg0K
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcmVmbGVjdE9iamVjdEFwcGx5Q29kZTsNCmV4dGVy
biBjb25zdCBpbnQgc19yZWZsZWN0T2JqZWN0QXBwbHlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3JlZmxlY3RPYmplY3RBcHBseUNvZGVDb25zdHJ1Y3RB
YmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVmbGVjdE9iamVj
dEFwcGx5Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3Jl
ZmxlY3RPYmplY3REZWxldGVQcm9wZXJ0eUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcmVmbGVj
dE9iamVjdERlbGV0ZVByb3BlcnR5Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19yZWZsZWN0T2JqZWN0RGVsZXRlUHJvcGVydHlDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3JlZmxlY3RPYmplY3RE
ZWxldGVQcm9wZXJ0eUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29u
c3Qgc19yZWZsZWN0T2JqZWN0SGFzQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19yZWZsZWN0T2Jq
ZWN0SGFzQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19y
ZWZsZWN0T2JqZWN0SGFzQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RvcktpbmQgc19yZWZsZWN0T2JqZWN0SGFzQ29kZUNvbnN0cnVjdG9yS2luZDsNCg0K
DQoNCg0KDQoNCg0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcmVnRXhwUHJvdG90eXBlUmVn
RXhwU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvckNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcmVn
RXhwUHJvdG90eXBlUmVnRXhwU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvckNvZGVMZW5ndGg7DQpl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfcmVnRXhwUHJvdG90eXBlUmVnRXhw
U3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvckNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVnRXhwUHJvdG90eXBlUmVnRXhwU3RyaW5nSXRl
cmF0b3JDb25zdHJ1Y3RvckNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciog
Y29uc3Qgc19yZWdFeHBQcm90b3R5cGVBZHZhbmNlU3RyaW5nSW5kZXhDb2RlOw0KZXh0ZXJuIGNv
bnN0IGludCBzX3JlZ0V4cFByb3RvdHlwZUFkdmFuY2VTdHJpbmdJbmRleENvZGVMZW5ndGg7DQpl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfcmVnRXhwUHJvdG90eXBlQWR2YW5j
ZVN0cmluZ0luZGV4Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19yZWdFeHBQcm90b3R5cGVBZHZhbmNlU3RyaW5nSW5kZXhDb2RlQ29uc3Ry
dWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcmVnRXhwUHJvdG90eXBlUmVn
RXhwRXhlY0NvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcmVnRXhwUHJvdG90eXBlUmVnRXhwRXhl
Y0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfcmVnRXhw
UHJvdG90eXBlUmVnRXhwRXhlY0NvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0b3JLaW5kIHNfcmVnRXhwUHJvdG90eXBlUmVnRXhwRXhlY0NvZGVDb25zdHJ1
Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19yZWdFeHBQcm90b3R5cGVIYXNP
YnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBNYXRjaENvZGU7DQpleHRlcm4gY29uc3QgaW50
IHNfcmVnRXhwUHJvdG90eXBlSGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2hD
b2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3JlZ0V4cFBy
b3RvdHlwZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cE1hdGNoQ29kZUNvbnN0cnVj
dEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19yZWdFeHBQcm90
b3R5cGVIYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBNYXRjaENvZGVDb25zdHJ1Y3Rv
cktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19yZWdFeHBQcm90b3R5cGVNYXRjaFNs
b3dDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3JlZ0V4cFByb3RvdHlwZU1hdGNoU2xvd0NvZGVM
ZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfcmVnRXhwUHJvdG90
eXBlTWF0Y2hTbG93Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19yZWdFeHBQcm90b3R5cGVNYXRjaFNsb3dDb2RlQ29uc3RydWN0b3JLaW5k
Ow0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcmVnRXhwUHJvdG90eXBlTWF0Y2hDb2RlOw0K
ZXh0ZXJuIGNvbnN0IGludCBzX3JlZ0V4cFByb3RvdHlwZU1hdGNoQ29kZUxlbmd0aDsNCmV4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19yZWdFeHBQcm90b3R5cGVNYXRjaENvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVn
RXhwUHJvdG90eXBlTWF0Y2hDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIq
IGNvbnN0IHNfcmVnRXhwUHJvdG90eXBlTWF0Y2hBbGxDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBz
X3JlZ0V4cFByb3RvdHlwZU1hdGNoQWxsQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19yZWdFeHBQcm90b3R5cGVNYXRjaEFsbENvZGVDb25zdHJ1Y3RBYmls
aXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVnRXhwUHJvdG90eXBl
TWF0Y2hBbGxDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNf
cmVnRXhwUHJvdG90eXBlUmVwbGFjZUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcmVnRXhwUHJv
dG90eXBlUmVwbGFjZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfcmVnRXhwUHJvdG90eXBlUmVwbGFjZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVnRXhwUHJvdG90eXBlUmVwbGFjZUNvZGVD
b25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19yZWdFeHBQcm90b3R5
cGVTZWFyY2hDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3JlZ0V4cFByb3RvdHlwZVNlYXJjaENv
ZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfcmVnRXhwUHJv
dG90eXBlU2VhcmNoQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19yZWdFeHBQcm90b3R5cGVTZWFyY2hDb2RlQ29uc3RydWN0b3JLaW5kOw0K
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcmVnRXhwUHJvdG90eXBlSGFzT2JzZXJ2YWJsZVNp
ZGVFZmZlY3RzRm9yUmVnRXhwU3BsaXRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3JlZ0V4cFBy
b3RvdHlwZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cFNwbGl0Q29kZUxlbmd0aDsN
CmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19yZWdFeHBQcm90b3R5cGVIYXNP
YnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0K
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVnRXhwUHJvdG90eXBlSGFzT2Jz
ZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwU3BsaXRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfcmVnRXhwUHJvdG90eXBlU3BsaXRDb2RlOw0KZXh0ZXJu
IGNvbnN0IGludCBzX3JlZ0V4cFByb3RvdHlwZVNwbGl0Q29kZUxlbmd0aDsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19yZWdFeHBQcm90b3R5cGVTcGxpdENvZGVDb25zdHJ1
Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVnRXhwUHJv
dG90eXBlU3BsaXRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IHNfcmVnRXhwUHJvdG90eXBlVGVzdENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfcmVnRXhwUHJv
dG90eXBlVGVzdENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfcmVnRXhwUHJvdG90eXBlVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfcmVnRXhwUHJvdG90eXBlVGVzdENvZGVDb25zdHJ1Y3Rv
cktpbmQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBzX3JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dENvZGU7DQpleHRlcm4g
Y29uc3QgaW50IHNfcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUxlbmd0aDsN
CmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19yZWdFeHBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZU5leHRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdG9yS2luZCBzX3JlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dENvZGVDb25z
dHJ1Y3RvcktpbmQ7DQoNCg0KDQoNCg0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc2V0SXRl
cmF0b3JQcm90b3R5cGVTZXRJdGVyYXRvck5leHRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3Nl
dEl0ZXJhdG9yUHJvdG90eXBlU2V0SXRlcmF0b3JOZXh0Q29kZUxlbmd0aDsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19zZXRJdGVyYXRvclByb3RvdHlwZVNldEl0ZXJhdG9y
TmV4dENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JL
aW5kIHNfc2V0SXRlcmF0b3JQcm90b3R5cGVTZXRJdGVyYXRvck5leHRDb2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0
Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19zZXRJdGVyYXRvclByb3RvdHlwZU5leHRDb2RlTGVu
Z3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3NldEl0ZXJhdG9yUHJv
dG90eXBlTmV4dENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0b3JLaW5kIHNfc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUNvbnN0cnVjdG9yS2luZDsN
Cg0KDQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3NldFByb3RvdHlwZUZvckVh
Y2hDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3NldFByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3Ro
Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3NldFByb3RvdHlwZUZvckVh
Y2hDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2lu
ZCBzX3NldFByb3RvdHlwZUZvckVhY2hDb2RlQ29uc3RydWN0b3JLaW5kOw0KDQoNCg0KDQoNCmV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3N0cmluZ0NvbnN0cnVjdG9yUmF3Q29kZTsNCmV4dGVy
biBjb25zdCBpbnQgc19zdHJpbmdDb25zdHJ1Y3RvclJhd0NvZGVMZW5ndGg7DQpleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nQ29uc3RydWN0b3JSYXdDb2RlQ29uc3Ry
dWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ0Nv
bnN0cnVjdG9yUmF3Q29kZUNvbnN0cnVjdG9yS2luZDsNCg0KDQoNCg0KDQpleHRlcm4gY29uc3Qg
Y2hhciogY29uc3Qgc19zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRDb2RlOw0KZXh0ZXJuIGNv
bnN0IGludCBzX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dENvZGVMZW5ndGg7DQpleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0
Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQg
c19zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRDb2RlQ29uc3RydWN0b3JLaW5kOw0KDQoNCg0K
DQoNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3N0cmluZ1Byb3RvdHlwZU1hdGNoQ29kZTsN
CmV4dGVybiBjb25zdCBpbnQgc19zdHJpbmdQcm90b3R5cGVNYXRjaENvZGVMZW5ndGg7DQpleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlTWF0Y2hDb2Rl
Q29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0
cmluZ1Byb3RvdHlwZU1hdGNoQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBzX3N0cmluZ1Byb3RvdHlwZU1hdGNoQWxsQ29kZTsNCmV4dGVybiBjb25zdCBpbnQg
c19zdHJpbmdQcm90b3R5cGVNYXRjaEFsbENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlTWF0Y2hBbGxDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlw
ZU1hdGNoQWxsQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBz
X3N0cmluZ1Byb3RvdHlwZVJlcGVhdFNsb3dQYXRoQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19z
dHJpbmdQcm90b3R5cGVSZXBlYXRTbG93UGF0aENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlUmVwZWF0U2xvd1BhdGhDb2RlQ29u
c3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmlu
Z1Byb3RvdHlwZVJlcGVhdFNsb3dQYXRoQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25z
dCBjaGFyKiBjb25zdCBzX3N0cmluZ1Byb3RvdHlwZVJlcGVhdENoYXJhY3RlcnNTbG93UGF0aENv
ZGU7DQpleHRlcm4gY29uc3QgaW50IHNfc3RyaW5nUHJvdG90eXBlUmVwZWF0Q2hhcmFjdGVyc1Ns
b3dQYXRoQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19z
dHJpbmdQcm90b3R5cGVSZXBlYXRDaGFyYWN0ZXJzU2xvd1BhdGhDb2RlQ29uc3RydWN0QWJpbGl0
eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlwZVJl
cGVhdENoYXJhY3RlcnNTbG93UGF0aENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3Qg
Y2hhciogY29uc3Qgc19zdHJpbmdQcm90b3R5cGVSZXBlYXRDb2RlOw0KZXh0ZXJuIGNvbnN0IGlu
dCBzX3N0cmluZ1Byb3RvdHlwZVJlcGVhdENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlUmVwZWF0Q29kZUNvbnN0cnVjdEFiaWxp
dHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19zdHJpbmdQcm90b3R5cGVS
ZXBlYXRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc3Ry
aW5nUHJvdG90eXBlUGFkU3RhcnRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3N0cmluZ1Byb3Rv
dHlwZVBhZFN0YXJ0Q29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19zdHJpbmdQcm90b3R5cGVQYWRTdGFydENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfc3RyaW5nUHJvdG90eXBlUGFkU3RhcnRDb2Rl
Q29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc3RyaW5nUHJvdG90
eXBlUGFkRW5kQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19zdHJpbmdQcm90b3R5cGVQYWRFbmRD
b2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3N0cmluZ1By
b3RvdHlwZVBhZEVuZENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0b3JLaW5kIHNfc3RyaW5nUHJvdG90eXBlUGFkRW5kQ29kZUNvbnN0cnVjdG9yS2luZDsN
CmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3N0cmluZ1Byb3RvdHlwZUhhc09ic2VydmFibGVT
aWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2VDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3N0cmlu
Z1Byb3RvdHlwZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2VDb2RlTGVu
Z3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3N0cmluZ1Byb3RvdHlw
ZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2VDb2RlQ29uc3RydWN0QWJp
bGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlw
ZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclN0cmluZ1JlcGxhY2VDb2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc3RyaW5nUHJvdG90eXBlUmVwbGFjZUNv
ZGU7DQpleHRlcm4gY29uc3QgaW50IHNfc3RyaW5nUHJvdG90eXBlUmVwbGFjZUNvZGVMZW5ndGg7
DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlUmVw
bGFjZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JL
aW5kIHNfc3RyaW5nUHJvdG90eXBlUmVwbGFjZUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4g
Y29uc3QgY2hhciogY29uc3Qgc19zdHJpbmdQcm90b3R5cGVSZXBsYWNlQWxsQ29kZTsNCmV4dGVy
biBjb25zdCBpbnQgc19zdHJpbmdQcm90b3R5cGVSZXBsYWNlQWxsQ29kZUxlbmd0aDsNCmV4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19zdHJpbmdQcm90b3R5cGVSZXBsYWNlQWxs
Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQg
c19zdHJpbmdQcm90b3R5cGVSZXBsYWNlQWxsQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBj
b25zdCBjaGFyKiBjb25zdCBzX3N0cmluZ1Byb3RvdHlwZVNlYXJjaENvZGU7DQpleHRlcm4gY29u
c3QgaW50IHNfc3RyaW5nUHJvdG90eXBlU2VhcmNoQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19zdHJpbmdQcm90b3R5cGVTZWFyY2hDb2RlQ29uc3RydWN0
QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3Rv
dHlwZVNlYXJjaENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c19zdHJpbmdQcm90b3R5cGVTcGxpdENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfc3RyaW5nUHJv
dG90eXBlU3BsaXRDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX3N0cmluZ1Byb3RvdHlwZVNwbGl0Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19zdHJpbmdQcm90b3R5cGVTcGxpdENvZGVDb25zdHJ1
Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19zdHJpbmdQcm90b3R5cGVTdHJp
bmdDb25jYXRTbG93UGF0aENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfc3RyaW5nUHJvdG90eXBl
U3RyaW5nQ29uY2F0U2xvd1BhdGhDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX3N0cmluZ1Byb3RvdHlwZVN0cmluZ0NvbmNhdFNsb3dQYXRoQ29kZUNvbnN0
cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19zdHJpbmdQ
cm90b3R5cGVTdHJpbmdDb25jYXRTbG93UGF0aENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4g
Y29uc3QgY2hhciogY29uc3Qgc19zdHJpbmdQcm90b3R5cGVDb25jYXRDb2RlOw0KZXh0ZXJuIGNv
bnN0IGludCBzX3N0cmluZ1Byb3RvdHlwZUNvbmNhdENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlQ29uY2F0Q29kZUNvbnN0cnVj
dEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19zdHJpbmdQcm90
b3R5cGVDb25jYXRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IHNfc3RyaW5nUHJvdG90eXBlQ3JlYXRlSFRNTENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfc3Ry
aW5nUHJvdG90eXBlQ3JlYXRlSFRNTENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlQ3JlYXRlSFRNTENvZGVDb25zdHJ1Y3RBYmls
aXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfc3RyaW5nUHJvdG90eXBl
Q3JlYXRlSFRNTENvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qg
c19zdHJpbmdQcm90b3R5cGVBbmNob3JDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3N0cmluZ1By
b3RvdHlwZUFuY2hvckNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfc3RyaW5nUHJvdG90eXBlQW5jaG9yQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19zdHJpbmdQcm90b3R5cGVBbmNob3JDb2RlQ29u
c3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc3RyaW5nUHJvdG90eXBl
QmlnQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19zdHJpbmdQcm90b3R5cGVCaWdDb2RlTGVuZ3Ro
Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3N0cmluZ1Byb3RvdHlwZUJp
Z0NvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5k
IHNfc3RyaW5nUHJvdG90eXBlQmlnQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBj
aGFyKiBjb25zdCBzX3N0cmluZ1Byb3RvdHlwZUJsaW5rQ29kZTsNCmV4dGVybiBjb25zdCBpbnQg
c19zdHJpbmdQcm90b3R5cGVCbGlua0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlQmxpbmtDb2RlQ29uc3RydWN0QWJpbGl0eTsN
CmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlwZUJsaW5r
Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3N0cmluZ1By
b3RvdHlwZUJvbGRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3N0cmluZ1Byb3RvdHlwZUJvbGRD
b2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3N0cmluZ1By
b3RvdHlwZUJvbGRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlwZUJvbGRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc3RyaW5nUHJvdG90eXBlRml4ZWRDb2RlOw0KZXh0ZXJu
IGNvbnN0IGludCBzX3N0cmluZ1Byb3RvdHlwZUZpeGVkQ29kZUxlbmd0aDsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19zdHJpbmdQcm90b3R5cGVGaXhlZENvZGVDb25zdHJ1
Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfc3RyaW5nUHJv
dG90eXBlRml4ZWRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IHNfc3RyaW5nUHJvdG90eXBlRm9udGNvbG9yQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19zdHJp
bmdQcm90b3R5cGVGb250Y29sb3JDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX3N0cmluZ1Byb3RvdHlwZUZvbnRjb2xvckNvZGVDb25zdHJ1Y3RBYmlsaXR5
Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfc3RyaW5nUHJvdG90eXBlRm9u
dGNvbG9yQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3N0
cmluZ1Byb3RvdHlwZUZvbnRzaXplQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc19zdHJpbmdQcm90
b3R5cGVGb250c2l6ZUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfc3RyaW5nUHJvdG90eXBlRm9udHNpemVDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlwZUZvbnRzaXplQ29k
ZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3N0cmluZ1Byb3Rv
dHlwZUl0YWxpY3NDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3N0cmluZ1Byb3RvdHlwZUl0YWxp
Y3NDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3N0cmlu
Z1Byb3RvdHlwZUl0YWxpY3NDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlwZUl0YWxpY3NDb2RlQ29uc3RydWN0b3JL
aW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc3RyaW5nUHJvdG90eXBlTGlua0NvZGU7
DQpleHRlcm4gY29uc3QgaW50IHNfc3RyaW5nUHJvdG90eXBlTGlua0NvZGVMZW5ndGg7DQpleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJvdG90eXBlTGlua0NvZGVD
b25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfc3Ry
aW5nUHJvdG90eXBlTGlua0NvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciog
Y29uc3Qgc19zdHJpbmdQcm90b3R5cGVTbWFsbENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfc3Ry
aW5nUHJvdG90eXBlU21hbGxDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3N0cmluZ1Byb3RvdHlwZVNtYWxsQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc19zdHJpbmdQcm90b3R5cGVTbWFsbENvZGVD
b25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc19zdHJpbmdQcm90b3R5
cGVTdHJpa2VDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3N0cmluZ1Byb3RvdHlwZVN0cmlrZUNv
ZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfc3RyaW5nUHJv
dG90eXBlU3RyaWtlQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc19zdHJpbmdQcm90b3R5cGVTdHJpa2VDb2RlQ29uc3RydWN0b3JLaW5kOw0K
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfc3RyaW5nUHJvdG90eXBlU3ViQ29kZTsNCmV4dGVy
biBjb25zdCBpbnQgc19zdHJpbmdQcm90b3R5cGVTdWJDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3N0cmluZ1Byb3RvdHlwZVN1YkNvZGVDb25zdHJ1Y3RB
YmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfc3RyaW5nUHJvdG90
eXBlU3ViQ29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3N0
cmluZ1Byb3RvdHlwZVN1cENvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfc3RyaW5nUHJvdG90eXBl
U3VwQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19zdHJp
bmdQcm90b3R5cGVTdXBDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdG9yS2luZCBzX3N0cmluZ1Byb3RvdHlwZVN1cENvZGVDb25zdHJ1Y3RvcktpbmQ7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yT2ZD
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlDb25zdHJ1Y3Rvck9mQ29kZUxlbmd0
aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc190eXBlZEFycmF5Q29uc3Ry
dWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
b3JLaW5kIHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yT2ZDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yRnJvbUNvZGU7DQpl
eHRlcm4gY29uc3QgaW50IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGg7DQpl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9y
RnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JL
aW5kIHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRl
cm4gY29uc3QgY2hhciogY29uc3Qgc190eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZUludDhB
cnJheUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2Nh
dGVJbnQ4QXJyYXlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX3R5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlSW50OEFycmF5Q29kZUNvbnN0cnVjdEFi
aWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc190eXBlZEFycmF5Q29u
c3RydWN0b3JBbGxvY2F0ZUludDhBcnJheUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc190eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZUludDE2QXJyYXlD
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlSW50
MTZBcnJheUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
dHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVJbnQxNkFycmF5Q29kZUNvbnN0cnVjdEFiaWxp
dHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc190eXBlZEFycmF5Q29uc3Ry
dWN0b3JBbGxvY2F0ZUludDE2QXJyYXlDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVJbnQzMkFycmF5Q29k
ZTsNCmV4dGVybiBjb25zdCBpbnQgc190eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZUludDMy
QXJyYXlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5
cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlSW50MzJBcnJheUNvZGVDb25zdHJ1Y3RBYmlsaXR5
Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheUNvbnN0cnVj
dG9yQWxsb2NhdGVJbnQzMkFycmF5Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBj
aGFyKiBjb25zdCBzX3R5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlVWludDMyQXJyYXlDb2Rl
Ow0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlVWludDMy
QXJyYXlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5
cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlVWludDMyQXJyYXlDb2RlQ29uc3RydWN0QWJpbGl0
eTsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3R5cGVkQXJyYXlDb25zdHJ1
Y3RvckFsbG9jYXRlVWludDMyQXJyYXlDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50MTZBcnJheUNv
ZGU7DQpleHRlcm4gY29uc3QgaW50IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50
MTZBcnJheUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
dHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50MTZBcnJheUNvZGVDb25zdHJ1Y3RBYmls
aXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheUNvbnN0
cnVjdG9yQWxsb2NhdGVVaW50MTZBcnJheUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc190eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZVVpbnQ4QXJyYXlD
b2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlVWlu
dDhBcnJheUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
dHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50OEFycmF5Q29kZUNvbnN0cnVjdEFiaWxp
dHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc190eXBlZEFycmF5Q29uc3Ry
dWN0b3JBbGxvY2F0ZVVpbnQ4QXJyYXlDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50OENsYW1wZWRB
cnJheUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2Nh
dGVVaW50OENsYW1wZWRBcnJheUNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50OENsYW1wZWRBcnJh
eUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5k
IHNfdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50OENsYW1wZWRBcnJheUNvZGVDb25z
dHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc190eXBlZEFycmF5Q29uc3Ry
dWN0b3JBbGxvY2F0ZUZsb2F0MzJBcnJheUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfdHlwZWRB
cnJheUNvbnN0cnVjdG9yQWxsb2NhdGVGbG9hdDMyQXJyYXlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRl
RmxvYXQzMkFycmF5Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RvcktpbmQgc190eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZUZsb2F0MzJBcnJheUNv
ZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc190eXBlZEFycmF5
Q29uc3RydWN0b3JBbGxvY2F0ZUZsb2F0NjRBcnJheUNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNf
dHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVGbG9hdDY0QXJyYXlDb2RlTGVuZ3RoOw0KZXh0
ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5cGVkQXJyYXlDb25zdHJ1Y3RvckFs
bG9jYXRlRmxvYXQ2NEFycmF5Q29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RvcktpbmQgc190eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZUZsb2F0NjRB
cnJheUNvZGVDb25zdHJ1Y3RvcktpbmQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpl
eHRlcm4gY29uc3QgY2hhciogY29uc3Qgc190eXBlZEFycmF5UHJvdG90eXBlVHlwZWRBcnJheVNw
ZWNpZXNDb25zdHJ1Y3RvckNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfdHlwZWRBcnJheVByb3Rv
dHlwZVR5cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3JDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5cGVkQXJyYXlQcm90b3R5cGVUeXBlZEFycmF5U3Bl
Y2llc0NvbnN0cnVjdG9yQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RvcktpbmQgc190eXBlZEFycmF5UHJvdG90eXBlVHlwZWRBcnJheVNwZWNpZXNDb25z
dHJ1Y3RvckNvZGVDb25zdHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc190
eXBlZEFycmF5UHJvdG90eXBlVHlwZWRBcnJheUNsYW1wQXJndW1lbnRUb1N0YXJ0T3JFbmRDb2Rl
Ow0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQcm90b3R5cGVUeXBlZEFycmF5Q2xhbXBB
cmd1bWVudFRvU3RhcnRPckVuZENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfdHlwZWRBcnJheVByb3RvdHlwZVR5cGVkQXJyYXlDbGFtcEFyZ3VtZW50VG9T
dGFydE9yRW5kQ29kZUNvbnN0cnVjdEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RvcktpbmQgc190eXBlZEFycmF5UHJvdG90eXBlVHlwZWRBcnJheUNsYW1wQXJndW1lbnRUb1N0
YXJ0T3JFbmRDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNf
dHlwZWRBcnJheVByb3RvdHlwZUV2ZXJ5Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc190eXBlZEFy
cmF5UHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3R5cGVkQXJyYXlQcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0K
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheVByb3RvdHlwZUV2
ZXJ5Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVk
QXJyYXlQcm90b3R5cGVGaWxsQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc190eXBlZEFycmF5UHJv
dG90eXBlRmlsbENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfdHlwZWRBcnJheVByb3RvdHlwZUZpbGxDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3R5cGVkQXJyYXlQcm90b3R5cGVGaWxsQ29kZUNv
bnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVkQXJyYXlQcm90
b3R5cGVGaW5kQ29kZTsNCmV4dGVybiBjb25zdCBpbnQgc190eXBlZEFycmF5UHJvdG90eXBlRmlu
ZENvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdHlwZWRB
cnJheVByb3RvdHlwZUZpbmRDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdG9yS2luZCBzX3R5cGVkQXJyYXlQcm90b3R5cGVGaW5kQ29kZUNvbnN0cnVjdG9y
S2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVkQXJyYXlQcm90b3R5cGVGaW5k
SW5kZXhDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQcm90b3R5cGVGaW5kSW5k
ZXhDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5cGVk
QXJyYXlQcm90b3R5cGVGaW5kSW5kZXhDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3R5cGVkQXJyYXlQcm90b3R5cGVGaW5kSW5kZXhDb2Rl
Q29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheVBy
b3RvdHlwZUZvckVhY2hDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQcm90b3R5
cGVGb3JFYWNoQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c190eXBlZEFycmF5UHJvdG90eXBlRm9yRWFjaENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheVByb3RvdHlwZUZvckVhY2hD
b2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJh
eVByb3RvdHlwZVNvbWVDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQcm90b3R5
cGVTb21lQ29kZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc190
eXBlZEFycmF5UHJvdG90eXBlU29tZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheVByb3RvdHlwZVNvbWVDb2RlQ29uc3Ry
dWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheVByb3RvdHlw
ZVNvcnRDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQcm90b3R5cGVTb3J0Q29k
ZUxlbmd0aDsNCmV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc190eXBlZEFycmF5
UHJvdG90eXBlU29ydENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheVByb3RvdHlwZVNvcnRDb2RlQ29uc3RydWN0b3JLaW5k
Ow0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheVByb3RvdHlwZVN1YmFycmF5
Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc190eXBlZEFycmF5UHJvdG90eXBlU3ViYXJyYXlDb2Rl
TGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5cGVkQXJyYXlQ
cm90b3R5cGVTdWJhcnJheUNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheVByb3RvdHlwZVN1YmFycmF5Q29kZUNvbnN0cnVj
dG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVkQXJyYXlQcm90b3R5cGVS
ZWR1Y2VDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQcm90b3R5cGVSZWR1Y2VD
b2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3R5cGVkQXJy
YXlQcm90b3R5cGVSZWR1Y2VDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdG9yS2luZCBzX3R5cGVkQXJyYXlQcm90b3R5cGVSZWR1Y2VDb2RlQ29uc3RydWN0
b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheVByb3RvdHlwZVJl
ZHVjZVJpZ2h0Q29kZTsNCmV4dGVybiBjb25zdCBpbnQgc190eXBlZEFycmF5UHJvdG90eXBlUmVk
dWNlUmlnaHRDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X3R5cGVkQXJyYXlQcm90b3R5cGVSZWR1Y2VSaWdodENvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0
ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheVByb3RvdHlwZVJlZHVj
ZVJpZ2h0Q29kZUNvbnN0cnVjdG9yS2luZDsNCmV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzX3R5
cGVkQXJyYXlQcm90b3R5cGVNYXBDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQ
cm90b3R5cGVNYXBDb2RlTGVuZ3RoOw0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX3R5cGVkQXJyYXlQcm90b3R5cGVNYXBDb2RlQ29uc3RydWN0QWJpbGl0eTsNCmV4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdG9yS2luZCBzX3R5cGVkQXJyYXlQcm90b3R5cGVNYXBDb2RlQ29u
c3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IHNfdHlwZWRBcnJheVByb3Rv
dHlwZUZpbHRlckNvZGU7DQpleHRlcm4gY29uc3QgaW50IHNfdHlwZWRBcnJheVByb3RvdHlwZUZp
bHRlckNvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdHlw
ZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0b3JLaW5kIHNfdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVDb25z
dHJ1Y3RvcktpbmQ7DQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc190eXBlZEFycmF5UHJvdG90
eXBlVG9Mb2NhbGVTdHJpbmdDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3R5cGVkQXJyYXlQcm90
b3R5cGVUb0xvY2FsZVN0cmluZ0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfdHlwZWRBcnJheVByb3RvdHlwZVRvTG9jYWxlU3RyaW5nQ29kZUNvbnN0cnVj
dEFiaWxpdHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc190eXBlZEFycmF5
UHJvdG90eXBlVG9Mb2NhbGVTdHJpbmdDb2RlQ29uc3RydWN0b3JLaW5kOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc193ZWJB
c3NlbWJseUNvbXBpbGVTdHJlYW1pbmdDb2RlOw0KZXh0ZXJuIGNvbnN0IGludCBzX3dlYkFzc2Vt
Ymx5Q29tcGlsZVN0cmVhbWluZ0NvZGVMZW5ndGg7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nQ29kZUNvbnN0cnVjdEFiaWxp
dHk7DQpleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RvcktpbmQgc193ZWJBc3NlbWJseUNvbXBp
bGVTdHJlYW1pbmdDb2RlQ29uc3RydWN0b3JLaW5kOw0KZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IHNfd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0NvZGU7DQpleHRlcm4gY29uc3QgaW50
IHNfd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0NvZGVMZW5ndGg7DQpleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWlu
Z0NvZGVDb25zdHJ1Y3RBYmlsaXR5Ow0KZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0b3JLaW5k
IHNfd2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0NvZGVDb25zdHJ1Y3RvcktpbmQ7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZUFzeW5j
RnJvbVN5bmNJdGVyYXRvckNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9taXNlQ29uc3RydWN0b3JJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3RvckNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSog
cHJvbWlzZUNvbnN0cnVjdG9yUHJvbWlzZUNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcihKU0M6OlZN
Jik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiByZWdFeHBQcm90b3R5cGVSZWdFeHBTdHJpbmdJ
dGVyYXRvckNvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiByZWdFeHBQcm90b3R5cGVBZHZhbmNlU3RyaW5nSW5kZXhDb2RlR2VuZXJhdG9y
KEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHByb21pc2VDb25zdHJ1Y3RvckFs
bENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJvbWlz
ZUNvbnN0cnVjdG9yQWxsU2V0dGxlZENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxsb2NhdGVGbG9hdDMyQXJyYXlD
b2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJy
YXlDb25zdHJ1Y3RvckFsbG9jYXRlRmxvYXQ2NEFycmF5Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiB0eXBlZEFycmF5Q29uc3RydWN0b3JBbGxvY2F0ZUlu
dDE2QXJyYXlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IHR5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlSW50MzJBcnJheUNvZGVHZW5lcmF0b3IoSlND
OjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogdHlwZWRBcnJheUNvbnN0cnVjdG9yQWxs
b2NhdGVJbnQ4QXJyYXlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIHR5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlVWludDE2QXJyYXlDb2RlR2VuZXJh
dG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlDb25zdHJ1
Y3RvckFsbG9jYXRlVWludDMyQXJyYXlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlDb25zdHJ1Y3RvckFsbG9jYXRlVWludDhBcnJheUNv
ZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogdHlwZWRBcnJh
eUNvbnN0cnVjdG9yQWxsb2NhdGVVaW50OENsYW1wZWRBcnJheUNvZGVHZW5lcmF0b3IoSlNDOjpW
TSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogc3RyaW5nUHJvdG90eXBlQW5jaG9yQ29kZUdl
bmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9taXNlQ29uc3Ry
dWN0b3JBbnlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uUHJvdG90eXBlQXBwbHlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIHJlZmxlY3RPYmplY3RBcHBseUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYp
OyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlJdGVyYXRvclByb3RvdHlwZUFycmF5SXRl
cmF0b3JOZXh0SGVscGVyQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlQXN5bmNGdW5jdGlvblJlc3VtZUNvZGVHZW5l
cmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGVBc3luY0dlbmVyYXRvckVucXVldWVDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0
b3JRdWV1ZURlcXVldWVDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIGFzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JRdWV1ZUVucXVldWVD
b2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JRdWV1ZUlzRW1wdHlDb2RlR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFzeW5jR2VuZXJhdG9yUHJvdG90eXBl
QXN5bmNHZW5lcmF0b3JSZWplY3RDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGFzeW5jR2VuZXJhdG9yUHJvdG90eXBlQXN5bmNHZW5lcmF0b3JSZXNvbHZl
Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBhc3luY0dl
bmVyYXRvclByb3RvdHlwZUFzeW5jR2VuZXJhdG9yUmVzdW1lTmV4dENvZGVHZW5lcmF0b3IoSlND
OjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVB
c3luY0dlbmVyYXRvcllpZWxkQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiBhc3luY0dlbmVyYXRvclByb3RvdHlwZUF3YWl0VmFsdWVDb2RlR2VuZXJhdG9y
KEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHN0cmluZ1Byb3RvdHlwZUJpZ0Nv
ZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25Q
cm90b3R5cGVCaW5kQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBzdHJpbmdQcm90b3R5cGVCbGlua0NvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogc3RyaW5nUHJvdG90eXBlQm9sZENvZGVHZW5lcmF0b3IoSlNDOjpW
TSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdl
bmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9taXNlUHJvdG90
eXBlQ2F0Y2hDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0NvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQcm90b3R5cGVDb25jYXRDb2RlR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHN0cmluZ1Byb3RvdHlwZUNvbmNhdENv
ZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQcm90
b3R5cGVDb25jYXRTbG93UGF0aENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogZ2xvYmFsT3BlcmF0aW9uc0NvcHlEYXRhUHJvcGVydGllc0NvZGVHZW5lcmF0
b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogZ2xvYmFsT3BlcmF0aW9uc0Nv
cHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9uc0NvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQcm90b3R5cGVDb3B5V2l0aGluQ29kZUdlbmVyYXRv
cihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBhc3luY0Zyb21TeW5jSXRlcmF0
b3JQcm90b3R5cGVDcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3JDb2RlR2VuZXJhdG9yKEpTQzo6
Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHN0cmluZ1Byb3RvdHlwZUNyZWF0ZUhUTUxD
b2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHByb21pc2VP
cGVyYXRpb25zQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9taXNlT3BlcmF0aW9uc0NyZWF0ZVJlc29sdmlu
Z0Z1bmN0aW9uc1dpdGhvdXRQcm9taXNlQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiByZWZsZWN0T2JqZWN0RGVsZXRlUHJvcGVydHlDb2RlR2VuZXJhdG9y
KEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIG1vZHVsZUxvYWRlckRlcGVuZGVu
Y3lLZXlzSWZFdmFsdWF0ZWRDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGFzeW5jR2VuZXJhdG9yUHJvdG90eXBlRG9Bc3luY0dlbmVyYXRvckJvZHlDYWxs
Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBtb2R1bGVM
b2FkZXJFbnN1cmVSZWdpc3RlcmVkQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiBvYmplY3RDb25zdHJ1Y3RvckVudHJpZXNDb2RlR2VuZXJhdG9yKEpTQzo6
Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFycmF5UHJvdG90eXBlRXZlcnlDb2RlR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlQcm90
b3R5cGVFdmVyeUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogYXJyYXlQcm90b3R5cGVGaWxsQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiB0eXBlZEFycmF5UHJvdG90eXBlRmlsbENvZGVHZW5lcmF0b3IoSlNDOjpW
TSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQcm90b3R5cGVGaWx0ZXJDb2RlR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlQcm90
b3R5cGVGaWx0ZXJDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIHByb21pc2VQcm90b3R5cGVGaW5hbGx5Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBhcnJheVByb3RvdHlwZUZpbmRDb2RlR2VuZXJhdG9yKEpTQzo6
Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlQcm90b3R5cGVGaW5kQ29k
ZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBhcnJheVByb3Rv
dHlwZUZpbmRJbmRleENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogdHlwZWRBcnJheVByb3RvdHlwZUZpbmRJbmRleENvZGVHZW5lcmF0b3IoSlNDOjpWTSYp
OyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogc3RyaW5nUHJvdG90eXBlRml4ZWRDb2RlR2VuZXJh
dG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFycmF5UHJvdG90eXBlRmxh
dENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQ
cm90b3R5cGVGbGF0SW50b0FycmF5Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiBhcnJheVByb3RvdHlwZUZsYXRJbnRvQXJyYXlXaXRoQ2FsbGJhY2tDb2Rl
R2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFycmF5UHJvdG90
eXBlRmxhdE1hcENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogc3RyaW5nUHJvdG90eXBlRm9udGNvbG9yQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5cGVGb250c2l6ZUNvZGVHZW5lcmF0b3Io
SlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQcm90b3R5cGVGb3JFYWNo
Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBtYXBQcm90
b3R5cGVGb3JFYWNoQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBzZXRQcm90b3R5cGVGb3JFYWNoQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiB0eXBlZEFycmF5UHJvdG90eXBlRm9yRWFjaENvZGVHZW5lcmF0b3Io
SlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogbW9kdWxlTG9hZGVyRm9yY2VGdWxm
aWxsUHJvbWlzZUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogYXJyYXlDb25zdHJ1Y3RvckZyb21Db2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlDb25zdHJ1Y3RvckZyb21Db2RlR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIG9iamVjdENvbnN0cnVjdG9yRnJvbUVu
dHJpZXNDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIG1v
ZHVsZUxvYWRlckZ1bGZpbGxGZXRjaENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogcHJvbWlzZU9wZXJhdGlvbnNGdWxmaWxsUHJvbWlzZUNvZGVHZW5lcmF0
b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJvbWlzZU9wZXJhdGlvbnNG
dWxmaWxsV2l0aG91dFByb21pc2VDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGdlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0
b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJvbWlzZVByb3RvdHlwZUdl
dENhdGNoRmluYWxseUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogcHJvbWlzZVByb3RvdHlwZUdldFRoZW5GaW5hbGx5Q29kZUdlbmVyYXRvcihKU0M6OlZN
Jik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiByZWZsZWN0T2JqZWN0SGFzQ29kZUdlbmVyYXRv
cihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiByZWdFeHBQcm90b3R5cGVIYXNP
YnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBNYXRjaENvZGVHZW5lcmF0b3IoSlNDOjpWTSYp
OyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcmVnRXhwUHJvdG90eXBlSGFzT2JzZXJ2YWJsZVNp
ZGVFZmZlY3RzRm9yUmVnRXhwU3BsaXRDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIHN0cmluZ1Byb3RvdHlwZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0Zv
clN0cmluZ1JlcGxhY2VDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIGFycmF5UHJvdG90eXBlSW5jbHVkZXNDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdDb2Rl
R2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9ySW50ZXJuYWxBbGxDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGFycmF5Q29uc3RydWN0b3JJc0FycmF5Q29kZUdlbmVyYXRvcihK
U0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBhc3luY0dlbmVyYXRvclByb3RvdHlw
ZUlzRXhlY3V0aW9uU3RhdGVDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGdsb2JhbE9iamVjdElzRmluaXRlQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBudW1iZXJDb25zdHJ1Y3RvcklzRmluaXRlQ29kZUdlbmVy
YXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBnbG9iYWxPYmplY3RJc05h
TkNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogbnVtYmVy
Q29uc3RydWN0b3JJc05hTkNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSogYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVJc1N1c3BlbmRZaWVsZFN0YXRlQ29kZUdl
bmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5
cGVJdGFsaWNzQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBtb2R1bGVMb2FkZXJMaW5rQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5cGVMaW5rQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBtb2R1bGVMb2FkZXJMaW5rQW5kRXZhbHVhdGVNb2R1bGVD
b2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIG1vZHVsZUxv
YWRlckxvYWRBbmRFdmFsdWF0ZU1vZHVsZUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogbW9kdWxlTG9hZGVyTG9hZE1vZHVsZUNvZGVHZW5lcmF0b3IoSlND
OjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQcm90b3R5cGVNYXBDb2RlR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlQcm90
b3R5cGVNYXBDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IG1hcEl0ZXJhdG9yUHJvdG90eXBlTWFwSXRlcmF0b3JOZXh0Q29kZUdlbmVyYXRvcihKU0M6OlZN
Jik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiByZWdFeHBQcm90b3R5cGVNYXRjaENvZGVHZW5l
cmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogc3RyaW5nUHJvdG90eXBl
TWF0Y2hDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHJl
Z0V4cFByb3RvdHlwZU1hdGNoQWxsQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5cGVNYXRjaEFsbENvZGVHZW5lcmF0b3IoSlNDOjpW
TSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcmVnRXhwUHJvdG90eXBlTWF0Y2hTbG93Q29k
ZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBtb2R1bGVMb2Fk
ZXJNb2R1bGVFdmFsdWF0aW9uQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiBwcm9taXNlT3BlcmF0aW9uc05ld0hhbmRsZWRSZWplY3RlZFByb21pc2VDb2Rl
R2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHByb21pc2VPcGVy
YXRpb25zTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIHByb21pc2VPcGVyYXRpb25zTmV3UHJvbWlzZUNhcGFiaWxpdHlT
bG93Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9t
aXNlT3BlcmF0aW9uc05ld1Byb21pc2VSZWFjdGlvbkNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogbW9kdWxlTG9hZGVyTmV3UmVnaXN0cnlFbnRyeUNvZGVH
ZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlJdGVyYXRv
clByb3RvdHlwZU5leHRDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZU5leHRDb2RlR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFzeW5jR2VuZXJhdG9yUHJvdG90eXBl
TmV4dENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogZ2Vu
ZXJhdG9yUHJvdG90eXBlTmV4dENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUdlbmVyYXRvcihKU0M6OlZN
Jik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiByZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZU5leHRDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHNl
dEl0ZXJhdG9yUHJvdG90eXBlTmV4dENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUdlbmVyYXRvcihK
U0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBhcnJheUNvbnN0cnVjdG9yT2ZDb2Rl
R2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlD
b25zdHJ1Y3Rvck9mQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBzdHJpbmdQcm90b3R5cGVQYWRFbmRDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIHN0cmluZ1Byb3RvdHlwZVBhZFN0YXJ0Q29kZUdlbmVyYXRvcihK
U0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBpdGVyYXRvckhlbHBlcnNQZXJmb3Jt
SXRlcmF0aW9uQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3RQcm9taXNlRnVsZmlsbGVkQ29kZUdlbmVy
YXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9taXNlT3BlcmF0aW9u
c1Byb21pc2VSZWFjdGlvbkpvYkNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JXaXRob3V0UHJv
bWlzZUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJv
bWlzZU9wZXJhdGlvbnNQcm9taXNlUmVqZWN0U2xvd0NvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0UHJv
bWlzZVJlamVjdGVkQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBwcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlU2xvd0NvZGVHZW5lcmF0b3IoSlND
OjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNl
UmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiBwcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JGYXN0
Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9taXNl
T3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JXaXRob3V0UHJvbWlzZUZhc3RDb2Rl
R2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIG1vZHVsZUxvYWRl
clByb3ZpZGVGZXRjaENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogcHJvbWlzZUNvbnN0cnVjdG9yUmFjZUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogc3RyaW5nQ29uc3RydWN0b3JSYXdDb2RlR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGFycmF5UHJvdG90eXBlUmVkdWNlQ29k
ZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiB0eXBlZEFycmF5
UHJvdG90eXBlUmVkdWNlQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBhcnJheVByb3RvdHlwZVJlZHVjZVJpZ2h0Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiB0eXBlZEFycmF5UHJvdG90eXBlUmVkdWNlUmlnaHRD
b2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHJlZ0V4cFBy
b3RvdHlwZVJlZ0V4cEV4ZWNDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIHByb21pc2VDb25zdHJ1Y3RvclJlamVjdENvZGVHZW5lcmF0b3IoSlNDOjpWTSYp
OyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJvbWlzZU9wZXJhdGlvbnNSZWplY3RQcm9taXNl
Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBwcm9taXNl
T3BlcmF0aW9uc1JlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVj
a0NvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJvbWlz
ZU9wZXJhdGlvbnNSZWplY3RXaXRob3V0UHJvbWlzZUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogc3RyaW5nUHJvdG90eXBlUmVwZWF0Q29kZUdlbmVyYXRv
cihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5cGVSZXBl
YXRDaGFyYWN0ZXJzU2xvd1BhdGhDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIHN0cmluZ1Byb3RvdHlwZVJlcGVhdFNsb3dQYXRoQ29kZUdlbmVyYXRvcihK
U0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiByZWdFeHBQcm90b3R5cGVSZXBsYWNl
Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBzdHJpbmdQ
cm90b3R5cGVSZXBsYWNlQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBzdHJpbmdQcm90b3R5cGVSZXBsYWNlQWxsQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBtb2R1bGVMb2FkZXJSZXF1ZXN0RmV0Y2hDb2RlR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIG1vZHVsZUxvYWRlclJl
cXVlc3RJbXBvcnRNb2R1bGVDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIG1vZHVsZUxvYWRlclJlcXVlc3RJbnN0YW50aWF0ZUNvZGVHZW5lcmF0b3IoSlND
OjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogbW9kdWxlTG9hZGVyUmVxdWVzdFNhdGlz
ZnlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHByb21p
c2VDb25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIHByb21pc2VPcGVyYXRpb25zUmVzb2x2ZVByb21pc2VDb2RlR2VuZXJhdG9y
KEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHByb21pc2VPcGVyYXRpb25zUmVz
b2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVja0NvZGVHZW5lcmF0
b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcHJvbWlzZU9wZXJhdGlvbnNS
ZXNvbHZlV2l0aG91dFByb21pc2VDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZVJldHVybkNvZGVHZW5l
cmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGVSZXR1cm5Db2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIGdlbmVyYXRvclByb3RvdHlwZVJldHVybkNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogcmVnRXhwUHJvdG90eXBlU2VhcmNoQ29kZUdlbmVyYXRv
cihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5cGVTZWFy
Y2hDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHNldEl0
ZXJhdG9yUHJvdG90eXBlU2V0SXRlcmF0b3JOZXh0Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBtb2R1bGVMb2FkZXJTZXRTdGF0ZVRvTWF4Q29kZUdlbmVy
YXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5cGVT
bWFsbENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJy
YXlQcm90b3R5cGVTb21lQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiB0eXBlZEFycmF5UHJvdG90eXBlU29tZUNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXJyYXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRvcihK
U0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiB0eXBlZEFycmF5UHJvdG90eXBlU29y
dENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogZ2xvYmFs
T3BlcmF0aW9uc1NwZWNpZXNDb25zdHJ1Y3RvckNvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJDb2RlR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHJlZ0V4cFByb3RvdHlw
ZVNwbGl0Q29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBz
dHJpbmdQcm90b3R5cGVTcGxpdENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogc3RyaW5nUHJvdG90eXBlU3RyaWtlQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBzdHJpbmdQcm90b3R5cGVTdHJpbmdDb25jYXRTbG93
UGF0aENvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogc3Ry
aW5nUHJvdG90eXBlU3ViQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiB0eXBlZEFycmF5UHJvdG90eXBlU3ViYXJyYXlDb2RlR2VuZXJhdG9yKEpTQzo6Vk0m
KTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHN0cmluZ1Byb3RvdHlwZVN1cENvZGVHZW5lcmF0
b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogYXN5bmNJdGVyYXRvclByb3Rv
dHlwZVN5bWJvbEFzeW5jSXRlcmF0b3JHZXR0ZXJDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VD
b2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGl0ZXJhdG9y
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JHZXR0ZXJDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIHJlZ0V4cFByb3RvdHlwZVRlc3RDb2RlR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHByb21pc2VQcm90b3R5cGVUaGVuQ29k
ZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBhc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGVUaHJvd0NvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogYXN5bmNHZW5lcmF0b3JQcm90b3R5cGVUaHJvd0NvZGVHZW5lcmF0
b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogZ2VuZXJhdG9yUHJvdG90eXBl
VGhyb3dDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGds
b2JhbE9wZXJhdGlvbnNUb0ludGVnZXJDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGdsb2JhbE9wZXJhdGlvbnNUb0xlbmd0aENvZGVHZW5lcmF0b3IoSlND
OjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogZGF0ZVByb3RvdHlwZVRvTG9jYWxlRGF0
ZVN0cmluZ0NvZGVHZW5lcmF0b3IoSlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSog
ZGF0ZVByb3RvdHlwZVRvTG9jYWxlU3RyaW5nQ29kZUdlbmVyYXRvcihKU0M6OlZNJik7IEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiB0eXBlZEFycmF5UHJvdG90eXBlVG9Mb2NhbGVTdHJpbmdDb2Rl
R2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGRhdGVQcm90b3R5
cGVUb0xvY2FsZVRpbWVTdHJpbmdDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIHByb21pc2VPcGVyYXRpb25zVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2Rl
R2VuZXJhdG9yKEpTQzo6Vk0mKTsgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIHR5cGVkQXJyYXlQ
cm90b3R5cGVUeXBlZEFycmF5Q2xhbXBBcmd1bWVudFRvU3RhcnRPckVuZENvZGVHZW5lcmF0b3Io
SlNDOjpWTSYpOyBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogdHlwZWRBcnJheVByb3RvdHlwZVR5
cGVkQXJyYXlTcGVjaWVzQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9yKEpTQzo6Vk0mKTsNCg0KDQp9
IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcYnl0ZWNvZGVcXExpbmtUaW1lQ29uc3RhbnQuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoN
CmNsYXNzIENvZGVCbG9jazsNCmNsYXNzIEpTR2xvYmFsT2JqZWN0Ow0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDog
aW50MzJfdCB7DQogICAgQXN5bmNGcm9tU3luY0l0ZXJhdG9yLCBSZWdFeHBTdHJpbmdJdGVyYXRv
ciwgYWR2YW5jZVN0cmluZ0luZGV4LCBhcnJheUl0ZXJhdG9yTmV4dEhlbHBlciwgYXN5bmNGdW5j
dGlvblJlc3VtZSwgYXN5bmNHZW5lcmF0b3JFbnF1ZXVlLCBhc3luY0dlbmVyYXRvclF1ZXVlRGVx
dWV1ZSwgYXN5bmNHZW5lcmF0b3JRdWV1ZUVucXVldWUsIGFzeW5jR2VuZXJhdG9yUXVldWVJc0Vt
cHR5LCBhc3luY0dlbmVyYXRvclJlamVjdCwgYXN5bmNHZW5lcmF0b3JSZXNvbHZlLCBhc3luY0dl
bmVyYXRvclJlc3VtZU5leHQsIGFzeW5jR2VuZXJhdG9yWWllbGQsIGF3YWl0VmFsdWUsIGNvbmNh
dFNsb3dQYXRoLCBjb3B5RGF0YVByb3BlcnRpZXMsIGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVz
aW9ucywgY3JlYXRlQXN5bmNGcm9tU3luY0l0ZXJhdG9yLCBjcmVhdGVIVE1MLCBjcmVhdGVSZXNv
bHZpbmdGdW5jdGlvbnMsIGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc1dpdGhvdXRQcm9taXNlLCBk
b0FzeW5jR2VuZXJhdG9yQm9keUNhbGwsIGZsYXRJbnRvQXJyYXksIGZsYXRJbnRvQXJyYXlXaXRo
Q2FsbGJhY2ssIGZ1bGZpbGxQcm9taXNlLCBmdWxmaWxsV2l0aG91dFByb21pc2UsIGdlbmVyYXRv
clJlc3VtZSwgZ2V0Q2F0Y2hGaW5hbGx5LCBnZXRUaGVuRmluYWxseSwgaGFzT2JzZXJ2YWJsZVNp
ZGVFZmZlY3RzRm9yUmVnRXhwTWF0Y2gsIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4
cFNwbGl0LCBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JTdHJpbmdSZXBsYWNlLCBpc0V4ZWN1
dGlvblN0YXRlLCBpc0Zpbml0ZSwgaXNOYU4sIGlzU3VzcGVuZFlpZWxkU3RhdGUsIG1hcEl0ZXJh
dG9yTmV4dCwgbWF0Y2hTbG93LCBuZXdIYW5kbGVkUmVqZWN0ZWRQcm9taXNlLCBuZXdQcm9taXNl
Q2FwYWJpbGl0eSwgbmV3UHJvbWlzZUNhcGFiaWxpdHlTbG93LCBuZXdQcm9taXNlUmVhY3Rpb24s
IG5ld1JlZ2lzdHJ5RW50cnksIHByb21pc2VSZWFjdGlvbkpvYiwgcHJvbWlzZVJlYWN0aW9uSm9i
V2l0aG91dFByb21pc2UsIHByb21pc2VSZWplY3RTbG93LCBwcm9taXNlUmVzb2x2ZVNsb3csIHBy
b21pc2VSZXNvbHZlVGhlbmFibGVKb2IsIHByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JGYXN0LCBw
cm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iV2l0aG91dFByb21pc2VGYXN0LCByZWdFeHBFeGVjLCBy
ZWplY3RQcm9taXNlLCByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxs
Q2hlY2ssIHJlamVjdFdpdGhvdXRQcm9taXNlLCByZXBlYXRDaGFyYWN0ZXJzU2xvd1BhdGgsIHJl
cGVhdFNsb3dQYXRoLCByZXNvbHZlUHJvbWlzZSwgcmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNv
bHZpbmdGdW5jdGlvbkNhbGxDaGVjaywgcmVzb2x2ZVdpdGhvdXRQcm9taXNlLCBzZXRJdGVyYXRv
ck5leHQsIHNldFN0YXRlVG9NYXgsIHNwZWNpZXNDb25zdHJ1Y3Rvciwgc3RyaW5nQ29uY2F0U2xv
d1BhdGgsIHRvSW50ZWdlciwgdG9MZW5ndGgsIHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zLCB0eXBl
ZEFycmF5Q2xhbXBBcmd1bWVudFRvU3RhcnRPckVuZCwgdHlwZWRBcnJheVNwZWNpZXNDb25zdHJ1
Y3RvciwgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwgaW1wb3J0TW9kdWxlLCBtYXBCdWNrZXRIZWFk
LCBtYXBCdWNrZXROZXh0LCBtYXBCdWNrZXRLZXksIG1hcEJ1Y2tldFZhbHVlLCBzZXRCdWNrZXRI
ZWFkLCBzZXRCdWNrZXROZXh0LCBzZXRCdWNrZXRLZXksIHByb3BlcnR5SXNFbnVtZXJhYmxlLCBv
d25LZXlzLCBlbnF1ZXVlSm9iLCBtYWtlVHlwZUVycm9yLCBBZ2dyZWdhdGVFcnJvciwgdHlwZWRB
cnJheUxlbmd0aCwgdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IsIHR5cGVkQXJyYXlT
b3J0LCBpc1R5cGVkQXJyYXlWaWV3LCB0eXBlZEFycmF5U3ViYXJyYXlDcmVhdGUsIGlzQm91bmRG
dW5jdGlvbiwgaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9uLCBpbnN0YW5jZU9mLCBCdWlsdGluTG9n
LCBCdWlsdGluRGVzY3JpYmUsIFJlZ0V4cCwgdHJ1bmMsIFByb21pc2UsIEludGVybmFsUHJvbWlz
ZSwgZGVmYXVsdFByb21pc2VUaGVuLCByZXBlYXRDaGFyYWN0ZXIsIGFycmF5U3BlY2llc0NyZWF0
ZSwgaXNBcnJheSwgaXNBcnJheVNsb3csIGNvbmNhdE1lbWNweSwgYXBwZW5kTWVtY3B5LCBob3N0
UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiwgU2V0LCB0
aGlzVGltZVZhbHVlLCBpc0NvbnN0cnVjdG9yLCBzYW1lVmFsdWUsIHJlZ0V4cFByb3RvRmxhZ3NH
ZXR0ZXIsIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0
ZXIsIHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyLCByZWdFeHBQcm90b1NvdXJjZUdldHRlciwg
cmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIsIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlciwgcmVnRXhw
QnVpbHRpbkV4ZWMsIHJlZ0V4cENyZWF0ZSwgaXNSZWdFeHAsIHJlZ0V4cE1hdGNoRmFzdCwgcmVn
RXhwU2VhcmNoRmFzdCwgcmVnRXhwU3BsaXRGYXN0LCByZWdFeHBQcm90b3R5cGVTeW1ib2xNYXRj
aCwgcmVnRXhwUHJvdG90eXBlU3ltYm9sUmVwbGFjZSwgcmVnRXhwVGVzdEZhc3QsIHN0cmluZ0lu
Y2x1ZGVzSW50ZXJuYWwsIHN0cmluZ0luZGV4T2ZJbnRlcm5hbCwgc3RyaW5nU3BsaXRGYXN0LCBz
dHJpbmdTdWJzdHJpbmdJbnRlcm5hbCwgbWFrZUJvdW5kRnVuY3Rpb24sIGhhc093bkxlbmd0aFBy
b3BlcnR5LCBkYXRlVGltZUZvcm1hdCwgd2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJu
YWwsIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCwgT2JqZWN0LCBBcnJh
eSwgYXBwbHlGdW5jdGlvbiwgY2FsbEZ1bmN0aW9uLCBoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uLCBj
cmVhdGVQcml2YXRlU3ltYm9sLA0KfTsNCg0KDQpzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51
bWJlck9mTGlua1RpbWVDb25zdGFudHMgPSAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSAr
IDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsg
MSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAx
ICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEg
KyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSAr
IDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsg
MSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAx
ICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEg
KyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSAr
IDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsgMSArIDEgKyAxICsg
MSArIDEgKyAxICsgMSArIDA7DQoNCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIFBy
aW50U3RyZWFtOw0KDQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkxpbmtU
aW1lQ29uc3RhbnQpOw0KDQp9IA0KI2xpbmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgi
DQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVj
dDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKCkNCnsNCiAgICByZXR1cm4gIWhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKG1fb2JqZWN0UHJvdG90eXBlLT5pbmRleGluZ1R5cGUoKSkNCiAgICAgICAgJiYgbV9v
YmplY3RQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCh2bSgpKS5pc051bGwoKTsNCn0NCg0K
X19mb3JjZWlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvdHlwZUNoYWluSXNT
YW5lKCkNCnsNCiAgICByZXR1cm4gIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG1fYXJyYXlQcm90b3R5
cGUtPmluZGV4aW5nVHlwZSgpKQ0KICAgICAgICAmJiBtX2FycmF5UHJvdG90eXBlLT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0oKSkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkNCiAgICAgICAgJiYg
b2JqZWN0UHJvdG90eXBlSXNTYW5lKCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBKU0dsb2Jh
bE9iamVjdDo6c3RyaW5nUHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQ0Kew0KICAgIHJldHVybiAhaGFz
SW5kZXhlZFByb3BlcnRpZXMobV9zdHJpbmdQcm90b3R5cGUtPmluZGV4aW5nVHlwZSgpKQ0KICAg
ICAgICAmJiBtX3N0cmluZ1Byb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKCkpID09IG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpDQogICAgICAgICYmIG9iamVjdFByb3RvdHlwZUlzU2FuZSgp
Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmlzQXJyYXlQcm90b3R5
cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKQ0Kew0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KDQogICAgcmV0dXJuIGFycmF5SXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQoKS5pc1N0aWxsVmFsaWQoKSAmJiAhaXNIYXZpbmdBQmFkVGlt
ZSgpICYmIGFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsNCn0NCg0KDQoNCg0KDQoNCg0KX19m
b3JjZWlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0Ojppc01hcFByb3RvdHlwZUl0ZXJhdG9yUHJv
dG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpDQp7DQogICAgcmV0dXJuIG1hcEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlkKCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUg
Ym9vbCBKU0dsb2JhbE9iamVjdDo6aXNTZXRQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFu
ZE5vbk9ic2VydmFibGUoKQ0Kew0KICAgIHJldHVybiBzZXRJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldCgpLmlzU3RpbGxWYWxpZCgpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNHbG9i
YWxPYmplY3Q6OmlzU3RyaW5nUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNl
cnZhYmxlKCkNCnsNCiAgICByZXR1cm4gc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQoKS5pc1N0aWxsVmFsaWQoKTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIEpTR2xvYmFsT2Jq
ZWN0Ojppc01hcFByb3RvdHlwZVNldEZhc3RBbmROb25PYnNlcnZhYmxlKCkNCnsNCiAgICByZXR1
cm4gbWFwU2V0V2F0Y2hwb2ludFNldCgpLmlzU3RpbGxWYWxpZCgpOw0KfQ0KDQpfX2ZvcmNlaW5s
aW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmlzU2V0UHJvdG90eXBlQWRkRmFzdEFuZE5vbk9ic2Vy
dmFibGUoKQ0Kew0KICAgIHJldHVybiBzZXRBZGRXYXRjaHBvaW50U2V0KCkuaXNTdGlsbFZhbGlk
KCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgU3RydWN0dXJlKiBKU0dsb2JhbE9iamVjdDo6YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIEpTVmFsdWUgbmV3VGFyZ2V0
KSBjb25zdA0Kew0KICAgIHJldHVybiAhbmV3VGFyZ2V0IHx8IG5ld1RhcmdldCA9PSBnbG9iYWxP
YmplY3QtPmFycmF5Q29uc3RydWN0b3IoKQ0KICAgICAgICA/IGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkNCiAg
ICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxP
YmplY3QsIGFzT2JqZWN0KG5ld1RhcmdldCksIGdldEZ1bmN0aW9uUmVhbG0oZ2xvYmFsT2JqZWN0
LT52bSgpLCBhc09iamVjdChuZXdUYXJnZXQpKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpOw0KfQ0KDQppbmxpbmUgSlNGdW5jdGlv
biogSlNHbG9iYWxPYmplY3Q6OnRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBqc0Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbikpOyB9DQppbmxpbmUgSlNGdW5jdGlvbiogSlNHbG9iYWxP
YmplY3Q6Om5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6bmV3UHJv
bWlzZUNhcGFiaWxpdHkpKTsgfQ0KaW5saW5lIEpTRnVuY3Rpb24qIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNvbHZlUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTRnVuY3Rpb24q
PihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlc29sdmVQcm9taXNlKSk7IH0N
CmlubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6cmVqZWN0UHJvbWlzZUZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTRnVuY3Rpb24qPihsaW5rVGltZUNvbnN0YW50KExp
bmtUaW1lQ29uc3RhbnQ6OnJlamVjdFByb21pc2UpKTsgfQ0KaW5saW5lIEpTRnVuY3Rpb24qIEpT
R2xvYmFsT2JqZWN0Ojpwcm9taXNlUHJvdG9UaGVuRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6ZGVm
YXVsdFByb21pc2VUaGVuKSk7IH0NCmlubGluZSBKU0Z1bmN0aW9uKiBKU0dsb2JhbE9iamVjdDo6
cmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwQnVpbHRpbkV4ZWMp
KTsgfQ0KaW5saW5lIEdldHRlclNldHRlciogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvR2xv
YmFsR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEdldHRlclNldHRlcio+KGxp
bmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6cmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIp
KTsgfQ0KaW5saW5lIEdldHRlclNldHRlciogSlNHbG9iYWxPYmplY3Q6OnJlZ0V4cFByb3RvVW5p
Y29kZUdldHRlcigpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxHZXR0ZXJTZXR0ZXIqPihs
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvVW5pY29kZUdldHRl
cikpOyB9DQoNCl9fZm9yY2VpbmxpbmUgVk0mIGdldFZNKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpDQp7DQogICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+dm0oKTsNCn0NCg0KfSANCiNsaW5l
IDQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXEpTQ0lubGluZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmplY3RJbmxpbmVzLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
CiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcQXV4aWxpYXJ5QmFycmllcklubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQp0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPg0KQXV4aWxpYXJ5QmFycmllcjxUPjo6QXV4aWxpYXJ5QmFycmllcihWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIFUmJiB2YWx1ZSkNCnsNCiAgICBtX3ZhbHVlID0gc3RkOjpmb3J3YXJkPFU+KHZh
bHVlKTsNCiAgICB2bS5oZWFwLndyaXRlQmFycmllcihvd25lcik7DQp9DQoNCnRlbXBsYXRlPHR5
cGVuYW1lIFQ+DQp0ZW1wbGF0ZTx0eXBlbmFtZSBVPg0Kdm9pZCBBdXhpbGlhcnlCYXJyaWVyPFQ+
OjpzZXQoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBVJiYgdmFsdWUpDQp7DQogICAgbV92YWx1ZSA9
IHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7DQogICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIp
Ow0KfQ0KDQp9IA0KDQojbGluZSAyNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
QnV0dGVyZmx5SW5saW5lcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxBcnJheVN0b3JhZ2VJbmxp
bmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlSW5saW5lcy5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdXNpbmcgUHJvcGVydHlUYWJsZU1h
bGxvYyA9IEZhc3RNYWxsb2M7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDU4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWVcXFByb3BlcnR5TWFwSGFzaFRhYmxlLmgiDQoNCmlubGluZSBib29sIGlzUG93ZXJPZjIo
dW5zaWduZWQgdikNCnsNCiAgICByZXR1cm4gaGFzT25lQml0U2V0KHYpOw0KfQ0KDQppbmxpbmUg
dW5zaWduZWQgbmV4dFBvd2VyT2YyKHVuc2lnbmVkIHYpDQp7DQogICAgDQogICAgDQoNCiAgICB2
LS07DQogICAgdiB8PSB2ID4+IDE7DQogICAgdiB8PSB2ID4+IDI7DQogICAgdiB8PSB2ID4+IDQ7
DQogICAgdiB8PSB2ID4+IDg7DQogICAgdiB8PSB2ID4+IDE2Ow0KICAgIHYrKzsNCg0KICAgIHJl
dHVybiB2Ow0KfQ0KDQpjbGFzcyBQcm9wZXJ0eVRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
DQoNCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KICAgIGNsYXNzIG9yZGVy
ZWRfaXRlcmF0b3Igew0KICAgIHB1YmxpYzoNCiAgICAgICAgb3JkZXJlZF9pdGVyYXRvcjxUPiYg
b3BlcmF0b3IrKygpDQogICAgICAgIHsNCiAgICAgICAgICAgIG1fdmFsdWVQdHIgPSBza2lwRGVs
ZXRlZEVudHJpZXMobV92YWx1ZVB0ciArIDEsIG1fZW5kVmFsdWVQdHIpOw0KICAgICAgICAgICAg
cmV0dXJuICp0aGlzOw0KICAgICAgICB9DQoNCiAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1
cm4gbV92YWx1ZVB0ciA9PSBvdGhlci5tX3ZhbHVlUHRyOw0KICAgICAgICB9DQoNCiAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90aGVyKQ0KICAgICAg
ICB7DQogICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciAhPSBvdGhlci5tX3ZhbHVlUHRyOw0K
ICAgICAgICB9DQoNCiAgICAgICAgVCYgb3BlcmF0b3IqKCkNCiAgICAgICAgew0KICAgICAgICAg
ICAgcmV0dXJuICptX3ZhbHVlUHRyOw0KICAgICAgICB9DQoNCiAgICAgICAgVCogb3BlcmF0b3It
PigpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlUHRyOw0KICAgICAgICB9
DQoNCiAgICAgICAgb3JkZXJlZF9pdGVyYXRvcihUKiB2YWx1ZVB0ciwgVCogZW5kVmFsdWVQdHIp
DQogICAgICAgICAgICA6IG1fdmFsdWVQdHIodmFsdWVQdHIpDQogICAgICAgICAgICAsIG1fZW5k
VmFsdWVQdHIoZW5kVmFsdWVQdHIpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgcHJpdmF0
ZToNCiAgICAgICAgVCogbV92YWx1ZVB0cjsNCiAgICAgICAgVCogbV9lbmRWYWx1ZVB0cjsNCiAg
ICB9Ow0KDQpwdWJsaWM6DQogICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsNCiAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZt
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICZ2bS5wcm9wZXJ0eVRhYmxlU3BhY2U7DQogICAgfQ0K
DQogICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOw0KICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7DQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJu
ICZzX2luZm87IH07DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkNCiAg
ICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQog
ICAgfQ0KDQogICAgdHlwZWRlZiBVbmlxdWVkU3RyaW5nSW1wbCogS2V5VHlwZTsNCiAgICB0eXBl
ZGVmIFByb3BlcnR5TWFwRW50cnkgVmFsdWVUeXBlOw0KDQogICAgDQogICAgdHlwZWRlZiBvcmRl
cmVkX2l0ZXJhdG9yPFZhbHVlVHlwZT4gaXRlcmF0b3I7DQogICAgdHlwZWRlZiBvcmRlcmVkX2l0
ZXJhdG9yPGNvbnN0IFZhbHVlVHlwZT4gY29uc3RfaXRlcmF0b3I7DQoNCiAgICANCiAgICANCiAg
ICANCiAgICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVy
YXRvcjsNCg0KICAgIA0KICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjcmVhdGUoVk0mLCB1bnNp
Z25lZCBpbml0aWFsQ2FwYWNpdHkpOw0KICAgIHN0YXRpYyBQcm9wZXJ0eVRhYmxlKiBjbG9uZShW
TSYsIGNvbnN0IFByb3BlcnR5VGFibGUmKTsNCiAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xv
bmUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsN
CiAgICB+UHJvcGVydHlUYWJsZSgpOw0KDQogICAgDQogICAgaXRlcmF0b3IgYmVnaW4oKTsNCiAg
ICBpdGVyYXRvciBlbmQoKTsNCiAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0Ow0KICAg
IGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0Ow0KDQogICAgDQogICAgZmluZF9pdGVyYXRvciBm
aW5kKGNvbnN0IEtleVR5cGUmKTsNCiAgICBWYWx1ZVR5cGUqIGdldChjb25zdCBLZXlUeXBlJik7
DQogICAgDQogICAgc3RkOjpwYWlyPGZpbmRfaXRlcmF0b3IsIGJvb2w+ICBhZGQoVk0mLCBjb25z
dCBWYWx1ZVR5cGUmIGVudHJ5KTsNCiAgICANCiAgICB2b2lkIHJlbW92ZShWTSYsIGNvbnN0IGZp
bmRfaXRlcmF0b3ImIGl0ZXIpOw0KICAgIHZvaWQgcmVtb3ZlKFZNJiwgY29uc3QgS2V5VHlwZSYg
a2V5KTsNCg0KICAgIA0KICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsNCg0KICAgIA0KICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0Ow0KDQogICAgDQogICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdl
U2l6ZSgpIGNvbnN0Ow0KDQogICAgDQogICAgdm9pZCBjbGVhckRlbGV0ZWRPZmZzZXRzKCk7DQog
ICAgYm9vbCBoYXNEZWxldGVkT2Zmc2V0KCk7DQogICAgUHJvcGVydHlPZmZzZXQgZ2V0RGVsZXRl
ZE9mZnNldCgpOw0KICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCk7DQog
ICAgDQogICAgUHJvcGVydHlPZmZzZXQgbmV4dE9mZnNldChQcm9wZXJ0eU9mZnNldCBpbmxpbmVD
YXBhY2l0eSk7DQoNCiAgICANCiAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5KFZNJiwgdW5zaWduZWQg
bmV3Q2FwYWNpdHkpOw0KDQoNCg0KDQoNCiAgICANCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mSW5kZXhTaXplKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJl
aW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUYWJsZSo+KDB4NDAwMCktPm1faW5kZXhTaXplKSkgLSAw
eDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkluZGV4TWFzaygpIHsgcmV0
dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFByb3Bl
cnR5VGFibGUqPigweDQwMDApLT5tX2luZGV4TWFzaykpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJbmRleCgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0
cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFByb3BlcnR5VGFibGUqPigweDQwMDApLT5tX2lu
ZGV4KSkgLSAweDQwMDApOyB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEVtcHR5
RW50cnlJbmRleCA9IDA7DQoNCnByaXZhdGU6DQogICAgUHJvcGVydHlUYWJsZShWTSYsIHVuc2ln
bmVkIGluaXRpYWxDYXBhY2l0eSk7DQogICAgUHJvcGVydHlUYWJsZShWTSYsIGNvbnN0IFByb3Bl
cnR5VGFibGUmKTsNCiAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFj
aXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7DQoNCiAgICBQcm9wZXJ0eVRhYmxlKGNvbnN0IFBy
b3BlcnR5VGFibGUmKTsNCg0KICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsNCg0KICAgIA0K
ICAgIHZvaWQgcmVpbnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7DQoNCiAgICANCiAgICB2
b2lkIHJlaGFzaChWTSYsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsNCg0KICAgIA0KICAgIHVuc2ln
bmVkIHRhYmxlQ2FwYWNpdHkoKSBjb25zdDsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIHVuc2lnbmVkIGRlbGV0ZWRFbnRyeUluZGV4KCkgY29uc3Q7DQoN
CiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KICAgIHN0YXRpYyBUKiBza2lwRGVsZXRl
ZEVudHJpZXMoVCogdmFsdWVQdHIsIFQqIGVuZFZhbHVlUHRyKTsNCg0KICAgIA0KICAgIFZhbHVl
VHlwZSogdGFibGUoKTsNCiAgICBjb25zdCBWYWx1ZVR5cGUqIHRhYmxlKCkgY29uc3Q7DQoNCiAg
ICBWYWx1ZVR5cGUqIHRhYmxlRW5kKCkgeyByZXR1cm4gdGFibGUoKSArIHVzZWRDb3VudCgpOyB9
DQogICAgY29uc3QgVmFsdWVUeXBlKiB0YWJsZUVuZCgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlKCkg
KyB1c2VkQ291bnQoKTsgfQ0KDQogICAgDQogICAgdW5zaWduZWQgdXNlZENvdW50KCkgY29uc3Q7
DQoNCiAgICANCiAgICBzaXplX3QgZGF0YVNpemUoKTsNCg0KICAgIA0KICAgIHN0YXRpYyB1bnNp
Z25lZCBzaXplRm9yQ2FwYWNpdHkodW5zaWduZWQgY2FwYWNpdHkpOw0KDQogICAgDQogICAgYm9v
bCBjYW5JbnNlcnQoKTsNCg0KICAgIHVuc2lnbmVkIG1faW5kZXhTaXplOw0KICAgIHVuc2lnbmVk
IG1faW5kZXhNYXNrOw0KICAgIHVuc2lnbmVkKiBtX2luZGV4Ow0KICAgIHVuc2lnbmVkIG1fa2V5
Q291bnQ7DQogICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7DQogICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+IG1fZGVsZXRlZE9mZnNldHM7DQoNCiAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIE1pbmltdW1UYWJsZVNpemUgPSAxNjsNCn07DQoNCmlubGluZSBQ
cm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpiZWdpbigpDQp7DQogICAgYXV0
byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOw0KICAgIHJldHVybiBpdGVyYXRvcihza2lw
RGVsZXRlZEVudHJpZXModGFibGUoKSwgdGFibGVFbmQpLCB0YWJsZUVuZCk7DQp9DQoNCmlubGlu
ZSBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjplbmQoKQ0Kew0KICAgIGF1
dG8qIHRhYmxlRW5kID0gdGhpcy0+dGFibGVFbmQoKTsNCiAgICByZXR1cm4gaXRlcmF0b3IodGFi
bGVFbmQsIHRhYmxlRW5kKTsNCn0NCg0KaW5saW5lIFByb3BlcnR5VGFibGU6OmNvbnN0X2l0ZXJh
dG9yIFByb3BlcnR5VGFibGU6OmJlZ2luKCkgY29uc3QNCnsNCiAgICBhdXRvKiB0YWJsZUVuZCA9
IHRoaXMtPnRhYmxlRW5kKCk7DQogICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHNraXBEZWxldGVk
RW50cmllcyh0YWJsZSgpLCB0YWJsZUVuZCksIHRhYmxlRW5kKTsNCn0NCg0KaW5saW5lIFByb3Bl
cnR5VGFibGU6OmNvbnN0X2l0ZXJhdG9yIFByb3BlcnR5VGFibGU6OmVuZCgpIGNvbnN0DQp7DQog
ICAgYXV0byogdGFibGVFbmQgPSB0aGlzLT50YWJsZUVuZCgpOw0KICAgIHJldHVybiBjb25zdF9p
dGVyYXRvcih0YWJsZUVuZCwgdGFibGVFbmQpOw0KfQ0KDQppbmxpbmUgUHJvcGVydHlUYWJsZTo6
ZmluZF9pdGVyYXRvciBQcm9wZXJ0eVRhYmxlOjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkNCnsN
CiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIHVuc2lnbmVkIGhhc2ggPSBJZGVu
dGlmaWVyUmVwSGFzaDo6aGFzaChrZXkpOw0KDQoNCg0KI2xpbmUgMzAyICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFByb3BlcnR5TWFw
SGFzaFRhYmxlLmgiDQoNCiAgICB3aGlsZSAodHJ1ZSkgew0KICAgICAgICB1bnNpZ25lZCBlbnRy
eUluZGV4ID0gbV9pbmRleFtoYXNoICYgbV9pbmRleE1hc2tdOw0KICAgICAgICBpZiAoZW50cnlJ
bmRleCA9PSBFbXB0eUVudHJ5SW5kZXgpDQogICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoKFZhbHVlVHlwZSopbnVsbHB0ciwgaGFzaCAmIG1faW5kZXhNYXNrKTsNCiAgICAgICAgaWYg
KGtleSA9PSB0YWJsZSgpW2VudHJ5SW5kZXggLSAxXS5rZXkpDQogICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoJnRhYmxlKClbZW50cnlJbmRleCAtIDFdLCBoYXNoICYgbV9pbmRleE1h
c2spOw0KDQoNCg0KI2xpbmUgMzEzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFByb3BlcnR5TWFwSGFzaFRhYmxlLmgiDQoNCg0KDQoN
CiNsaW5lIDMxOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIg0KDQogICAgICAgIGhhc2grKzsN
CiAgICB9DQp9DQoNCmlubGluZSBQcm9wZXJ0eVRhYmxlOjpWYWx1ZVR5cGUqIFByb3BlcnR5VGFi
bGU6OmdldChjb25zdCBLZXlUeXBlJiBrZXkpDQp7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9p
ZCkwKTsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBpZiAoIW1fa2V5Q291bnQpDQogICAgICAgIHJl
dHVybiBudWxscHRyOw0KDQogICAgdW5zaWduZWQgaGFzaCA9IElkZW50aWZpZXJSZXBIYXNoOjpo
YXNoKGtleSk7DQoNCg0KDQojbGluZSAzMzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUHJvcGVydHlNYXBIYXNoVGFibGUuaCINCg0K
ICAgIHdoaWxlICh0cnVlKSB7DQogICAgICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4
W2hhc2ggJiBtX2luZGV4TWFza107DQogICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50
cnlJbmRleCkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICAgICBpZiAoa2V5ID09
IHRhYmxlKClbZW50cnlJbmRleCAtIDFdLmtleSkgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICAgICAgcmV0dXJuICZ0YWJsZSgpW2VudHJ5SW5kZXggLSAxXTsNCiAgICAgICAgfQ0K
DQoNCg0KI2xpbmUgMzUwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFByb3BlcnR5TWFwSGFzaFRhYmxlLmgiDQoNCiAgICAgICAgaGFz
aCsrOw0KICAgIH0NCn0NCg0KaW5saW5lIHN0ZDo6cGFpcjxQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0
ZXJhdG9yLCBib29sPiAgUHJvcGVydHlUYWJsZTo6YWRkKFZNJiB2bSwgY29uc3QgVmFsdWVUeXBl
JiBlbnRyeSkNCnsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICANCiAgICBmaW5kX2l0ZXJhdG9yIGl0
ZXIgPSBmaW5kKGVudHJ5LmtleSk7DQogICAgaWYgKGl0ZXIuZmlyc3QpDQogICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihpdGVyLCBmYWxzZSk7DQoNCg0KDQojbGluZSAzNjcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCINCg0KICAgIA0KICAgIGVudHJ5LmtleS0+cmVmKCk7DQoNCiAgICAN
CiAgICBpZiAoIWNhbkluc2VydCgpKSB7DQogICAgICAgIHJlaGFzaCh2bSwgbV9rZXlDb3VudCAr
IDEpOw0KICAgICAgICBpdGVyID0gZmluZChlbnRyeS5rZXkpOw0KICAgICAgICAoKHZvaWQpMCk7
DQogICAgfQ0KDQogICAgDQogICAgdW5zaWduZWQgZW50cnlJbmRleCA9IHVzZWRDb3VudCgpICsg
MTsNCiAgICBtX2luZGV4W2l0ZXIuc2Vjb25kXSA9IGVudHJ5SW5kZXg7DQogICAgaXRlci5maXJz
dCA9ICZ0YWJsZSgpW2VudHJ5SW5kZXggLSAxXTsNCiAgICAqaXRlci5maXJzdCA9IGVudHJ5Ow0K
DQogICAgKyttX2tleUNvdW50Ow0KICAgIA0KICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihpdGVy
LCB0cnVlKTsNCn0NCg0KaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6cmVtb3ZlKFZNJiB2bSwg
Y29uc3QgZmluZF9pdGVyYXRvciYgaXRlcikNCnsNCiAgICANCiAgICBpZiAoIWl0ZXIuZmlyc3Qp
DQogICAgICAgIHJldHVybjsNCg0KDQoNCiNsaW5lIDM5OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxQcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIg0KDQogICAgDQogICAgDQogICAgbV9pbmRleFtpdGVyLnNlY29uZF0gPSBkZWxldGVkRW50
cnlJbmRleCgpOw0KICAgIGl0ZXIuZmlyc3QtPmtleS0+ZGVyZWYoKTsNCiAgICBpdGVyLmZpcnN0
LT5rZXkgPSAoKFVuaXF1ZWRTdHJpbmdJbXBsKikxKTsNCg0KICAgICgodm9pZCkwKTsNCiAgICAt
LW1fa2V5Q291bnQ7DQogICAgKyttX2RlbGV0ZWRDb3VudDsNCg0KICAgIGlmIChtX2RlbGV0ZWRD
b3VudCAqIDQgPj0gbV9pbmRleFNpemUpDQogICAgICAgIHJlaGFzaCh2bSwgbV9rZXlDb3VudCk7
DQp9DQoNCmlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OnJlbW92ZShWTSYgdm0sIGNvbnN0IEtl
eVR5cGUmIGtleSkNCnsNCiAgICByZW1vdmUodm0sIGZpbmQoa2V5KSk7DQp9DQoNCg0KaW5saW5l
IHVuc2lnbmVkIFByb3BlcnR5VGFibGU6OnNpemUoKSBjb25zdA0Kew0KICAgIHJldHVybiBtX2tl
eUNvdW50Ow0KfQ0KDQppbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjppc0VtcHR5KCkgY29uc3QN
CnsNCiAgICByZXR1cm4gIW1fa2V5Q291bnQ7DQp9DQoNCmlubGluZSB1bnNpZ25lZCBQcm9wZXJ0
eVRhYmxlOjpwcm9wZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3QNCnsNCiAgICByZXR1cm4gc2l6ZSgp
ICsgKG1fZGVsZXRlZE9mZnNldHMgPyBtX2RlbGV0ZWRPZmZzZXRzLT5zaXplKCkgOiAwKTsNCn0N
Cg0KaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6Y2xlYXJEZWxldGVkT2Zmc2V0cygpDQp7DQog
ICAgbV9kZWxldGVkT2Zmc2V0cyA9IG51bGxwdHI7DQp9DQoNCmlubGluZSBib29sIFByb3BlcnR5
VGFibGU6Omhhc0RlbGV0ZWRPZmZzZXQoKQ0Kew0KICAgIHJldHVybiBtX2RlbGV0ZWRPZmZzZXRz
ICYmICFtX2RlbGV0ZWRPZmZzZXRzLT5pc0VtcHR5KCk7DQp9DQoNCmlubGluZSBQcm9wZXJ0eU9m
ZnNldCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkNCnsNCiAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBtX2RlbGV0ZWRPZmZzZXRzLT5sYXN0KCk7DQogICAgbV9kZWxldGVkT2Zm
c2V0cy0+cmVtb3ZlTGFzdCgpOw0KICAgIHJldHVybiBvZmZzZXQ7DQp9DQoNCmlubGluZSB2b2lk
IFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0K
ew0KICAgIGlmICghbV9kZWxldGVkT2Zmc2V0cykNCiAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9
IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsNCiAgICAoKHZvaWQpMCk7DQog
ICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7DQp9DQoNCmlubGluZSBQcm9wZXJ0
eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpuZXh0T2Zmc2V0KFByb3BlcnR5T2Zmc2V0IGlubGluZUNh
cGFjaXR5KQ0Kew0KICAgIGlmIChoYXNEZWxldGVkT2Zmc2V0KCkpDQogICAgICAgIHJldHVybiBn
ZXREZWxldGVkT2Zmc2V0KCk7DQoNCiAgICByZXR1cm4gb2Zmc2V0Rm9yUHJvcGVydHlOdW1iZXIo
c2l6ZSgpLCBpbmxpbmVDYXBhY2l0eSk7DQp9DQoNCmlubGluZSBQcm9wZXJ0eVRhYmxlKiBQcm9w
ZXJ0eVRhYmxlOjpjb3B5KFZNJiB2bSwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpDQp7DQogICAgKCh2
b2lkKTApOw0KDQogICAgDQogICAgDQogICAgaWYgKHNpemVGb3JDYXBhY2l0eShuZXdDYXBhY2l0
eSkgPT0gbV9pbmRleFNpemUpDQogICAgICAgIHJldHVybiBQcm9wZXJ0eVRhYmxlOjpjbG9uZSh2
bSwgKnRoaXMpOw0KICAgIHJldHVybiBQcm9wZXJ0eVRhYmxlOjpjbG9uZSh2bSwgbmV3Q2FwYWNp
dHksICp0aGlzKTsNCn0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQppbmxpbmUgdm9pZCBQcm9wZXJ0
eVRhYmxlOjpyZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KQ0Kew0KDQoNCiNsaW5lIDQ5
MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIg0KDQogICAgDQogICAgDQogICAgKCh2b2lkKTAp
Ow0KICAgIGZpbmRfaXRlcmF0b3IgaXRlciA9IGZpbmQoZW50cnkua2V5KTsNCiAgICAoKHZvaWQp
MCk7DQoNCiAgICB1bnNpZ25lZCBlbnRyeUluZGV4ID0gdXNlZENvdW50KCkgKyAxOw0KICAgIG1f
aW5kZXhbaXRlci5zZWNvbmRdID0gZW50cnlJbmRleDsNCiAgICB0YWJsZSgpW2VudHJ5SW5kZXgg
LSAxXSA9IGVudHJ5Ow0KDQogICAgKyttX2tleUNvdW50Ow0KfQ0KDQppbmxpbmUgdm9pZCBQcm9w
ZXJ0eVRhYmxlOjpyZWhhc2goVk0mIHZtLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkNCnsNCg0KDQoj
bGluZSA1MTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcUHJvcGVydHlNYXBIYXNoVGFibGUuaCINCg0KICAgIHNpemVfdCBvbGREYXRh
U2l6ZSA9IGRhdGFTaXplKCk7DQogICAgdW5zaWduZWQqIG9sZEVudHJ5SW5kaWNlcyA9IG1faW5k
ZXg7DQogICAgaXRlcmF0b3IgaXRlciA9IHRoaXMtPmJlZ2luKCk7DQogICAgaXRlcmF0b3IgZW5k
ID0gdGhpcy0+ZW5kKCk7DQoNCiAgICBtX2luZGV4U2l6ZSA9IHNpemVGb3JDYXBhY2l0eShuZXdD
YXBhY2l0eSk7DQogICAgbV9pbmRleE1hc2sgPSBtX2luZGV4U2l6ZSAtIDE7DQogICAgbV9rZXlD
b3VudCA9IDA7DQogICAgbV9kZWxldGVkQ291bnQgPSAwOw0KDQogICAgbV9pbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkKj4oUHJvcGVydHlUYWJsZU1hbGxvYzo6emVyb2VkTWFsbG9jKGRhdGFT
aXplKCkpKTsNCg0KICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICAgICAgcmVpbnNlcnQoKml0ZXIpOw0KICAgIH0NCg0KICAgIFByb3BlcnR5
VGFibGVNYWxsb2M6OmZyZWUob2xkRW50cnlJbmRpY2VzKTsNCg0KICAgIGlmIChvbGREYXRhU2l6
ZSA8IGRhdGFTaXplKCkpDQogICAgICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0
ZWQoZGF0YVNpemUoKSAtIG9sZERhdGFTaXplKTsNCn0NCg0KaW5saW5lIHVuc2lnbmVkIFByb3Bl
cnR5VGFibGU6OnRhYmxlQ2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4U2l6ZSA+PiAx
OyB9DQoNCmlubGluZSB1bnNpZ25lZCBQcm9wZXJ0eVRhYmxlOjpkZWxldGVkRW50cnlJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIHRhYmxlQ2FwYWNpdHkoKSArIDE7IH0NCg0KdGVtcGxhdGU8dHlwZW5h
bWUgVD4NCmlubGluZSBUKiBQcm9wZXJ0eVRhYmxlOjpza2lwRGVsZXRlZEVudHJpZXMoVCogdmFs
dWVQdHIsIFQqIGVuZFZhbHVlUHRyKQ0Kew0KICAgIHdoaWxlICh2YWx1ZVB0ciA8IGVuZFZhbHVl
UHRyICYmIHZhbHVlUHRyLT5rZXkgPT0gKChVbmlxdWVkU3RyaW5nSW1wbCopMSkpDQogICAgICAg
ICsrdmFsdWVQdHI7DQogICAgcmV0dXJuIHZhbHVlUHRyOw0KfQ0KDQppbmxpbmUgUHJvcGVydHlU
YWJsZTo6VmFsdWVUeXBlKiBQcm9wZXJ0eVRhYmxlOjp0YWJsZSgpDQp7DQogICAgDQogICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmFsdWVUeXBlKj4obV9pbmRleCArIG1faW5kZXhTaXplKTsN
Cn0NCg0KaW5saW5lIGNvbnN0IFByb3BlcnR5VGFibGU6OlZhbHVlVHlwZSogUHJvcGVydHlUYWJs
ZTo6dGFibGUoKSBjb25zdA0Kew0KICAgIA0KICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IFZhbHVlVHlwZSo+KG1faW5kZXggKyBtX2luZGV4U2l6ZSk7DQp9DQoNCmlubGluZSB1bnNp
Z25lZCBQcm9wZXJ0eVRhYmxlOjp1c2VkQ291bnQoKSBjb25zdA0Kew0KICAgIA0KICAgIHJldHVy
biBtX2tleUNvdW50ICsgbV9kZWxldGVkQ291bnQ7DQp9DQoNCmlubGluZSBzaXplX3QgUHJvcGVy
dHlUYWJsZTo6ZGF0YVNpemUoKQ0Kew0KICAgIA0KICAgIA0KICAgIHVuc2lnbmVkIGluZGV4U2l6
ZSA9IG1faW5kZXhTaXplOw0KICAgIHJldHVybiBpbmRleFNpemUgKiBzaXplb2YodW5zaWduZWQp
ICsgKChpbmRleFNpemUgPj4gMSkgKyAxKSAqIHNpemVvZihWYWx1ZVR5cGUpOw0KfQ0KDQppbmxp
bmUgdW5zaWduZWQgUHJvcGVydHlUYWJsZTo6c2l6ZUZvckNhcGFjaXR5KHVuc2lnbmVkIGNhcGFj
aXR5KQ0Kew0KICAgIGlmIChjYXBhY2l0eSA8IE1pbmltdW1UYWJsZVNpemUgLyAyKQ0KICAgICAg
ICByZXR1cm4gTWluaW11bVRhYmxlU2l6ZTsNCiAgICByZXR1cm4gbmV4dFBvd2VyT2YyKGNhcGFj
aXR5ICsgMSkgKiAyOw0KfQ0KDQppbmxpbmUgYm9vbCBQcm9wZXJ0eVRhYmxlOjpjYW5JbnNlcnQo
KQ0Kew0KICAgIHJldHVybiB1c2VkQ291bnQoKSA8IHRhYmxlQ2FwYWNpdHkoKTsNCn0NCg0KfSAN
CiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXFN0cnVjdHVyZUlubGluZXMuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTdHJ1Y3R1cmVD
aGFpbi5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsNCmNsYXNzIFN0cnVjdHVyZTsNCg0KY2xhc3MgU3RydWN0dXJl
Q2hhaW4gZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsNCiAgICBmcmllbmQgY2xhc3MgSklUOw0KDQpw
dWJsaWM6DQogICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOw0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuICZ2bS5zdHJ1Y3R1cmVDaGFpblNwYWNlOw0KICAgIH0NCg0KICAgIHN0
YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKFZNJiwgSlNPYmplY3QqKTsNCiAgICBTdHJ1Y3R1
cmVJRCogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9DQogICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KDQogICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHByb3RlY3RlZDogc3RhdGljIGNv
bnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCnByaXZh
dGU6DQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCg0KICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU09iamVjdCogaGVhZCk7DQoNCiAgICBTdHJ1Y3R1cmVDaGFp
bihWTSYsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKik7DQogICAgQXV4aWxpYXJ5QmFycmllcjxT
dHJ1Y3R1cmVJRCo+IG1fdmVjdG9yOw0KfTsNCg0KfSANCiNsaW5lIDM0ICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN0cnVjdHVyZUlu
bGluZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXEpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBKU0ltbXV0YWJsZUJ1dHRlcmZseSA6IHB1Ymxp
YyBKU0NlbGwgew0KICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7DQoNCnB1YmxpYzoNCiAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOw0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3Qg
OjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6
OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSlNJbW11dGFibGVCdXR0ZXJmbHlUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgaW5kZXhpbmdUeXBlKTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5l
IHN0YXRpYyBKU0ltbXV0YWJsZUJ1dHRlcmZseSogdHJ5Q3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7DQogICAgICAgIGlmICgobGVuZ3Ro
ID4gSW5kZXhpbmdIZWFkZXI6Om1heGltdW1MZW5ndGgpKQ0KICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7DQoNCiAgICAgICAgDQogICAgICAgIHZvaWQqIGJ1ZmZlciA9IHRyeUFsbG9jYXRlQ2Vs
bDxKU0ltbXV0YWJsZUJ1dHRlcmZseT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUobGVuZ3RoKS51
bnNhZmVHZXQoKSk7DQogICAgICAgIGlmICgoIWJ1ZmZlcikpDQogICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsNCiAgICAgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIHJlc3VsdCA9IG5ldyAoTm90
TnVsbCwgYnVmZmVyKSBKU0ltbXV0YWJsZUJ1dHRlcmZseSh2bSwgc3RydWN0dXJlLCBsZW5ndGgp
Ow0KICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICAgICAgcmV0dXJuIHJl
c3VsdDsNCiAgICB9DQoNCiAgICBzdGF0aWMgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNyZWF0ZShW
TSYgdm0sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7
DQogICAgICAgIGF1dG8qIGFycmF5ID0gdHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0ZXJm
bHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKGluZGV4aW5nVHlwZSkgLSBO
dW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgbGVuZ3RoKTsNCiAgICAgICAgZG8geyBpZiAo
KCEoYXJyYXkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVy
RmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDY3LCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0ltbXV0YWJsZUJ1dHRl
cmZseS5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxNDYgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxl
ICgwKTsNCiAgICAgICAgcmV0dXJuIGFycmF5Ow0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUg
c3RhdGljIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjcmVhdGVGcm9tQXJyYXkoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU0FycmF5KiBhcnJheSkNCiAgICB7DQogICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCg0KICAgICAgICBJbmRl
eGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gYXJyYXktPmluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdT
aGFwZU1hc2s7DQogICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5LT5sZW5ndGgoKTsNCg0K
ICAgICAgICANCiAgICAgICAgaWYgKGlzQ29weU9uV3JpdGUoaW5kZXhpbmdUeXBlKSkgew0KICAg
ICAgICAgICAgaWYgKGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKSkNCiAgICAgICAgICAgICAg
ICByZXR1cm4gSlNJbW11dGFibGVCdXR0ZXJmbHk6OmZyb21CdXR0ZXJmbHkoYXJyYXktPmJ1dHRl
cmZseSgpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiByZXN1
bHQgPSBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCB2bS5pbW11dGFibGVCdXR0
ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJy
YXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5nZXQoKSwgbGVuZ3Ro
KTsNCiAgICAgICAgaWYgKCghcmVzdWx0KSkgew0KICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7DQogICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghbGVuZ3RoKQ0KICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsNCg0KICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IENvbnRpZ3VvdXNTaGFw
ZSB8fCBpbmRleGluZ1R5cGUgPT0gSW50MzJTaGFwZSkgew0KICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGFycmF5LT5idXR0ZXJmbHkoKS0+Y29udGlndW91cygpLmF0KGFycmF5LCBpKS5nZXQo
KTsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9ICEhdmFsdWUgPyB2YWx1ZSA6IGpzVW5kZWZpbmVk
KCk7DQogICAgICAgICAgICAgICAgcmVzdWx0LT5zZXRJbmRleCh2bSwgaSwgdmFsdWUpOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGlmIChpbmRleGluZ1R5cGUgPT0gRG91YmxlU2hhcGUpIHsNCiAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgIGRvdWJs
ZSBkID0gYXJyYXktPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKCkuYXQoYXJyYXksIGkp
Ow0KICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzdGQ6OmlzbmFuKGQpID8ganNVbmRl
ZmluZWQoKSA6IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpOw0KICAgICAgICAg
ICAgICAgIHJlc3VsdC0+c2V0SW5kZXgodm0sIGksIHZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBhcnJheS0+Z2V0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKTsNCiAgICAgICAgICAgIGlm
ICghdmFsdWUpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICANCiAgICAgICAgICAgICAgICB2YWx1ZSA9IGpzVW5kZWZpbmVkKCk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBkbyB7IGlmICgoKHRocm93U2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJu
IG51bGxwdHI7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIHJlc3VsdC0+c2V0SW5kZXgo
dm0sIGksIHZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0N
Cg0KICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyLnB1
YmxpY0xlbmd0aCgpOyB9DQogICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9oZWFkZXIudmVjdG9yTGVuZ3RoKCk7IH0NCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2hlYWRlci5wdWJsaWNMZW5ndGgoKTsgfQ0KDQogICAgQnV0dGVyZmx5KiB0
b0J1dHRlcmZseSgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxCdXR0ZXJmbHkqPihiaXR3
aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZEYXRhKCkpOyB9DQogICAgc3RhdGljIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBmcm9tQnV0dGVyZmx5KEJ1dHRlcmZseSogYnV0dGVyZmx5KSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihiaXR3aXNlX2Nhc3Q8
Y2hhcio+KGJ1dHRlcmZseSkgLSBvZmZzZXRPZkRhdGEoKSk7IH0NCg0KICAgIEpTVmFsdWUgZ2V0
KHVuc2lnbmVkIGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCFoYXNEb3VibGUoaW5k
ZXhpbmdNb2RlKCkpKQ0KICAgICAgICAgICAgcmV0dXJuIHRvQnV0dGVyZmx5KCktPmNvbnRpZ3Vv
dXMoKS5hdCh0aGlzLCBpbmRleCkuZ2V0KCk7DQogICAgICAgIGRvdWJsZSB2YWx1ZSA9IHRvQnV0
dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpbmRleCk7DQogICAgICAgIA0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7DQogICAg
fQ0KDQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
Ow0KDQogICAgdm9pZCBjb3B5VG9Bcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBm
aXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIENvbXBsZXRl
U3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIA0KICAgICAgICBy
ZXR1cm4gJnZtLmltbXV0YWJsZUJ1dHRlcmZseUpTVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
Ow0KICAgIH0NCg0KICAgIA0KICAgIHZvaWQgc2V0SW5kZXgoVk0mIHZtLCB1bnNpZ25lZCBpbmRl
eCwgSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmIChoYXNEb3VibGUoaW5kZXhpbmdU
eXBlKCkpKQ0KICAgICAgICAgICAgdG9CdXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpLmF0
VW5zYWZlKGluZGV4KSA9IHZhbHVlLmFzTnVtYmVyKCk7DQogICAgICAgIGVsc2UNCiAgICAgICAg
ICAgIHRvQnV0dGVyZmx5KCktPmNvbnRpZ3VvdXMoKS5hdFVuc2FmZShpbmRleCkuc2V0KHZtLCB0
aGlzLCB2YWx1ZSk7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0
T2ZEYXRhKCkNCiAgICB7DQogICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihKU0ltbXV0YWJsZUJ1dHRlcmZs
eSkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihy
ZWludGVycHJldF9jYXN0PEpTSW1tdXRhYmxlQnV0dGVyZmx5Kj4oMHg0MDAwKS0+bV9oZWFkZXIp
KSAtIDB4NDAwMCkgKyBJbmRleGluZ0hlYWRlcjo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKTsNCiAg
ICB9DQoNCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVmVjdG9yTGVuZ3RoKCkNCiAgICB7
DQogICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnBy
ZXRfY2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KDB4NDAwMCktPm1faGVhZGVyKSkgLSAweDQw
MDApICsgSW5kZXhpbmdIZWFkZXI6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCk7DQogICAgfQ0KDQog
ICAgc3RhdGljIENoZWNrZWQ8c2l6ZV90PiBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4g
bnVtSXRlbXMpDQogICAgew0KICAgICAgICByZXR1cm4gb2Zmc2V0T2ZEYXRhKCkgKyBudW1JdGVt
cyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNp
Z25lZCBsZW5ndGgpDQogICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQ0KICAgIHsNCiAgICAg
ICAgbV9oZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7DQogICAgICAgIG1faGVhZGVyLnNl
dFB1YmxpY0xlbmd0aChsZW5ndGgpOw0KICAgICAgICBpZiAoaGFzQ29udGlndW91cyhpbmRleGlu
Z1R5cGUoKSkpIHsNCiAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IGxlbmd0aDsgKytpbmRleCkNCiAgICAgICAgICAgICAgICB0b0J1dHRlcmZseSgpLT5jb250aWd1
b3VzKCkuYXQodGhpcywgaW5kZXgpLnNldFN0YXJ0aW5nVmFsdWUoSlNWYWx1ZSgpKTsNCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIEluZGV4aW5nSGVhZGVyIG1faGVhZGVyOw0KfTsNCg0KfSANCiNs
aW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPcGVyYXRpb25zLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KX19kZWNsc3BlYyhub2lubGluZSkg
SlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7
DQpKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
DQpKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsNCmJvb2wganNJc09iamVjdFR5cGVPck51bGwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsNCnNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCosIGJvb2wmIHNhd1BvbHlQcm90byk7DQoNCl9fZm9yY2VpbmxpbmUgSlNTdHJpbmcqIGpzU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdTEsIEpTU3Ry
aW5nKiBzMikNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgIGF1dG8g
c2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICB1bnNpZ25lZCBsZW5ndGgxID0g
dTEubGVuZ3RoKCk7DQogICAgaWYgKCFsZW5ndGgxKQ0KICAgICAgICByZXR1cm4gczI7DQogICAg
dW5zaWduZWQgbGVuZ3RoMiA9IHMyLT5sZW5ndGgoKTsNCiAgICBpZiAoIWxlbmd0aDIpDQogICAg
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgdTEpOw0KICAgIHN0YXRpY19hc3NlcnQoSlNTdHJpbmc6
Ok1heExlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSwgIiIpOw0K
ICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMikpIHsNCiAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOw0KICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICBpZiAoczItPmlzUm9wZSgpIHx8IChTdHJpbmdJbXBsOjpoZWFkZXJTaXplPExDaGFyPigpICsg
bGVuZ3RoMSArIGxlbmd0aDIpID49IHNpemVvZihKU1JvcGVTdHJpbmcpKQ0KICAgICAgICByZXR1
cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUodm0sIGpzU3RyaW5nKHZtLCB1MSksIHMyKTsNCg0KICAg
ICgodm9pZCkwKTsNCiAgICBjb25zdCBTdHJpbmcmIHUyID0gczItPnZhbHVlKGdsb2JhbE9iamVj
dCk7DQogICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsNCiAgICBTdHJpbmcgbmV3U3RyaW5n
ID0gdHJ5TWFrZVN0cmluZyh1MSwgdTIpOw0KICAgIGlmICghbmV3U3RyaW5nKSB7DQogICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsNCiAgICAgICAgcmV0
dXJuIG51bGxwdHI7DQogICAgfQ0KICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKHZtLCBuZXdT
dHJpbmcucmVsZWFzZUltcGwoKS5yZWxlYXNlTm9uTnVsbCgpKTsNCn0NCg0KX19mb3JjZWlubGlu
ZSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJp
bmcqIHMxLCBjb25zdCBTdHJpbmcmIHUyKQ0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCg0KICAgIHVu
c2lnbmVkIGxlbmd0aDEgPSBzMS0+bGVuZ3RoKCk7DQogICAgaWYgKCFsZW5ndGgxKQ0KICAgICAg
ICByZXR1cm4ganNTdHJpbmcodm0sIHUyKTsNCiAgICB1bnNpZ25lZCBsZW5ndGgyID0gdTIubGVu
Z3RoKCk7DQogICAgaWYgKCFsZW5ndGgyKQ0KICAgICAgICByZXR1cm4gczE7DQogICAgc3RhdGlj
X2Fzc2VydChKU1N0cmluZzo6TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpLCAiIik7DQogICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBs
ZW5ndGgyKSkgew0KICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSk7DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAg
IGlmIChzMS0+aXNSb3BlKCkgfHwgKFN0cmluZ0ltcGw6OmhlYWRlclNpemU8TENoYXI+KCkgKyBs
ZW5ndGgxICsgbGVuZ3RoMikgPj0gc2l6ZW9mKEpTUm9wZVN0cmluZykpDQogICAgICAgIHJldHVy
biBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgczEsIGpzU3RyaW5nKHZtLCB1MikpOw0KDQogICAg
KCh2b2lkKTApOw0KICAgIGNvbnN0IFN0cmluZyYgdTEgPSBzMS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KTsNCiAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOw0KICAgIFN0cmluZyBuZXdTdHJpbmcg
PSB0cnlNYWtlU3RyaW5nKHUxLCB1Mik7DQogICAgaWYgKCFuZXdTdHJpbmcpIHsNCiAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOw0KICAgICAgICByZXR1
cm4gbnVsbHB0cjsNCiAgICB9DQogICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0sIG5ld1N0
cmluZy5yZWxlYXNlSW1wbCgpLnJlbGVhc2VOb25OdWxsKCkpOw0KfQ0KDQpfX2ZvcmNlaW5saW5l
IEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmlu
ZyogczEsIEpTU3RyaW5nKiBzMikNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
Ow0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICB1bnNpZ25l
ZCBsZW5ndGgxID0gczEtPmxlbmd0aCgpOw0KICAgIGlmICghbGVuZ3RoMSkNCiAgICAgICAgcmV0
dXJuIHMyOw0KICAgIHVuc2lnbmVkIGxlbmd0aDIgPSBzMi0+bGVuZ3RoKCk7DQogICAgaWYgKCFs
ZW5ndGgyKQ0KICAgICAgICByZXR1cm4gczE7DQogICAgc3RhdGljX2Fzc2VydChKU1N0cmluZzo6
TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpLCAiIik7DQog
ICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBsZW5ndGgyKSkgew0KICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7DQogICAgICAgIHJl
dHVybiBudWxscHRyOw0KICAgIH0NCg0KICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2
bSwgczEsIHMyKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3Ry
aW5nKiBzMykNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgIGF1dG8g
c2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICB1bnNpZ25lZCBsZW5ndGgxID0g
czEtPmxlbmd0aCgpOw0KICAgIGlmICghbGVuZ3RoMSkNCiAgICAgICAgZG8geyBzY29wZS5yZWxl
YXNlKCk7IHJldHVybiBqc1N0cmluZyhnbG9iYWxPYmplY3QsIHMyLCBzMyk7IH0gd2hpbGUgKGZh
bHNlKTsNCg0KICAgIHVuc2lnbmVkIGxlbmd0aDIgPSBzMi0+bGVuZ3RoKCk7DQogICAgaWYgKCFs
ZW5ndGgyKQ0KICAgICAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIGpzU3RyaW5nKGds
b2JhbE9iamVjdCwgczEsIHMzKTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgdW5zaWduZWQgbGVu
Z3RoMyA9IHMzLT5sZW5ndGgoKTsNCiAgICBpZiAoIWxlbmd0aDMpDQogICAgICAgIGRvIHsgc2Nv
cGUucmVsZWFzZSgpOyByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCBzMSwgczIpOyB9IHdo
aWxlIChmYWxzZSk7DQoNCiAgICBzdGF0aWNfYXNzZXJ0KEpTU3RyaW5nOjpNYXhMZW5ndGggPT0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIiKTsNCiAgICBpZiAoc3VtT3Zl
cmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIsIGxlbmd0aDMpKSB7DQogICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsNCiAgICAgICAgcmV0dXJu
IG51bGxwdHI7DQogICAgfQ0KDQogICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKHZtLCBz
MSwgczIsIHMzKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1N0cmluZyoganNTdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB1MSwgY29uc3QgU3RyaW5nJiB1
MikNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgIGF1dG8gc2NvcGUg
PSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICB1bnNpZ25lZCBsZW5ndGgxID0gdTEubGVu
Z3RoKCk7DQogICAgaWYgKCFsZW5ndGgxKQ0KICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIHUy
KTsNCiAgICB1bnNpZ25lZCBsZW5ndGgyID0gdTIubGVuZ3RoKCk7DQogICAgaWYgKCFsZW5ndGgy
KQ0KICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIHUxKTsNCiAgICBzdGF0aWNfYXNzZXJ0KEpT
U3RyaW5nOjpNYXhMZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCks
ICIiKTsNCiAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIpKSB7
DQogICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsNCiAg
ICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgaWYgKChTdHJp
bmdJbXBsOjpoZWFkZXJTaXplPExDaGFyPigpICsgbGVuZ3RoMSArIGxlbmd0aDIpID49IChzaXpl
b2YoSlNSb3BlU3RyaW5nKSArIHNpemVvZihKU1N0cmluZykpKQ0KICAgICAgICByZXR1cm4gSlNS
b3BlU3RyaW5nOjpjcmVhdGUodm0sIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1Mikp
Ow0KDQogICAgU3RyaW5nIG5ld1N0cmluZyA9IHRyeU1ha2VTdHJpbmcodTEsIHUyKTsNCiAgICBp
ZiAoIW5ld1N0cmluZykgew0KICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCiAgICByZXR1cm4g
SlNTdHJpbmc6OmNyZWF0ZSh2bSwgbmV3U3RyaW5nLnJlbGVhc2VJbXBsKCkucmVsZWFzZU5vbk51
bGwoKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZyYgdTIsIGNv
bnN0IFN0cmluZyYgdTMpDQp7DQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAg
ICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgdW5zaWduZWQgbGVu
Z3RoMSA9IHUxLmxlbmd0aCgpOw0KICAgIHVuc2lnbmVkIGxlbmd0aDIgPSB1Mi5sZW5ndGgoKTsN
CiAgICB1bnNpZ25lZCBsZW5ndGgzID0gdTMubGVuZ3RoKCk7DQogICAgKCh2b2lkKTApOw0KICAg
ICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBpZiAoIWxlbmd0aDEpDQogICAgICAg
IGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCB1Miwg
dTMpOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICBpZiAoIWxlbmd0aDIpDQogICAgICAgIGRvIHsg
c2NvcGUucmVsZWFzZSgpOyByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCB1MSwgdTMpOyB9
IHdoaWxlIChmYWxzZSk7DQoNCiAgICBpZiAoIWxlbmd0aDMpDQogICAgICAgIGRvIHsgc2NvcGUu
cmVsZWFzZSgpOyByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0LCB1MSwgdTIpOyB9IHdoaWxl
IChmYWxzZSk7DQoNCiAgICBzdGF0aWNfYXNzZXJ0KEpTU3RyaW5nOjpNYXhMZW5ndGggPT0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCksICIiKTsNCiAgICBpZiAoc3VtT3ZlcmZs
b3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIsIGxlbmd0aDMpKSB7DQogICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsNCiAgICAgICAgcmV0dXJuIG51
bGxwdHI7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgaWYgKChTdHJpbmdJbXBsOjpoZWFkZXJT
aXplPExDaGFyPigpICsgbGVuZ3RoMSArIGxlbmd0aDIgKyBsZW5ndGgzKSA+PSAoc2l6ZW9mKEpT
Um9wZVN0cmluZykgKyBzaXplb2YoSlNTdHJpbmcpICogMikpDQogICAgICAgIHJldHVybiBKU1Jv
cGVTdHJpbmc6OmNyZWF0ZSh2bSwganNTdHJpbmcodm0sIHUxKSwganNTdHJpbmcodm0sIHUyKSwg
anNTdHJpbmcodm0sIHUzKSk7DQoNCiAgICBTdHJpbmcgbmV3U3RyaW5nID0gdHJ5TWFrZVN0cmlu
Zyh1MSwgdTIsIHUzKTsNCiAgICBpZiAoIW5ld1N0cmluZykgew0KICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7DQogICAgICAgIHJldHVybiBudWxscHRy
Ow0KICAgIH0NCiAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgbmV3U3RyaW5nLnJlbGVh
c2VJbXBsKCkucmVsZWFzZU5vbk51bGwoKSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBq
c1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
Z2lzdGVyKiBzdHJpbmdzLCB1bnNpZ25lZCBjb3VudCkNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShn
bG9iYWxPYmplY3QpOw0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQog
ICAgSlNSb3BlU3RyaW5nOjpSb3BlQnVpbGRlcjxSZWNvcmRPdmVyZmxvdz4gcm9wZUJ1aWxkZXIo
dm0pOw0KDQogICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsNCiAgICAg
ICAgSlNWYWx1ZSB2ID0gc3RyaW5nc1stc3RhdGljX2Nhc3Q8aW50PihpKV0uanNWYWx1ZSgpOw0K
ICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gdi50b1N0cmluZyhnbG9iYWxPYmplY3QpOw0KICAg
ICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB7IH07IH0gd2hpbGUg
KGZhbHNlKTsNCiAgICAgICAgaWYgKCFyb3BlQnVpbGRlci5hcHBlbmQoc3RyaW5nKSkNCiAgICAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
DQogICAgfQ0KDQogICAgcmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsNCn0NCg0KX19mb3Jj
ZWlubGluZSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50KEpTVmFsdWUg
bGVmdCwgSlNWYWx1ZSByaWdodCkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPcGVyYXRpb25zLmgiDQogICAgcmV0
dXJuIEpTQmlnSW50Ojpjb21wYXJlKGxlZnQuYXNIZWFwQmlnSW50KCksIHJpZ2h0LmFzSGVhcEJp
Z0ludCgpKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBj
b21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0JpZ0ludCogdjEsIEpTVmFsdWUgcHJpbVZhbHVlKQ0Kew0KICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0K
DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCg0KICAgIGlmIChwcmltVmFsdWUuaXNT
dHJpbmcoKSkgew0KICAgICAgICBTdHJpbmcgc3RyaW5nID0gYXNTdHJpbmcocHJpbVZhbHVlKS0+
dmFsdWUoZ2xvYmFsT2JqZWN0KTsNCiAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9u
KCkpKSByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsgfSB3aGls
ZSAoZmFsc2UpOw0KICAgICAgICBKU1ZhbHVlIGJpZ0ludFZhbHVlID0gSlNCaWdJbnQ6OnN0cmlu
Z1RvQmlnSW50KGdsb2JhbE9iamVjdCwgc3RyaW5nKTsNCiAgICAgICAgZG8geyBpZiAoKChzY29w
ZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVm
aW5lZDsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICBpZiAoIWJpZ0ludFZhbHVlKQ0KICAgICAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpVbmRlZmluZWQ7DQoNCiAg
ICAgICAgaWYgKGJpZ0ludFZhbHVlLmlzSGVhcEJpZ0ludCgpKQ0KICAgICAgICAgICAgcmV0dXJu
IEpTQmlnSW50Ojpjb21wYXJlKHYxLCBiaWdJbnRWYWx1ZS5hc0hlYXBCaWdJbnQoKSk7DQoNCiAg
ICAgICAgKCh2b2lkKTApOw0KDQoNCg0KI2xpbmUgMjg0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE9wZXJhdGlvbnMuaCINCiAgICB9
DQoNCiAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2Jq
ZWN0KTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBKU0JpZ0lu
dDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOyB9IHdoaWxlIChmYWxzZSk7DQogICAgcmV0
dXJuIEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUodjEsIG51bWJlclZhbHVlKTsNCn0NCg0KX19m
b3JjZWlubGluZSBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJlQmlnSW50MzJUb090
aGVyUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDMyX3QgdjEsIEpT
VmFsdWUgcHJpbVZhbHVlKQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAg
ICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgKCh2b2lkKTApOw0K
ICAgICgodm9pZCkwKTsNCg0KICAgIGF1dG8gY29tcGFyZSA9IFsmXSAoYXV0byB2MSwgYXV0byB2
Mikgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PGRlY2x0eXBlKHYxKSwg
ZGVjbHR5cGUodjIpPik7DQogICAgICAgIGlmICh2MSA9PSB2MikNCiAgICAgICAgICAgIHJldHVy
biBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6RXF1YWw7DQogICAgICAgIGlmICh2MSA8IHYy
KQ0KICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhh
bjsNCiAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpHcmVhdGVyVGhh
bjsNCiAgICB9Ow0KDQogICAgaWYgKHByaW1WYWx1ZS5pc1N0cmluZygpKSB7DQogICAgICAgIFN0
cmluZyBzdHJpbmcgPSBhc1N0cmluZyhwcmltVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpOw0K
ICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBKU0JpZ0ludDo6
Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIEpT
VmFsdWUgYmlnSW50VmFsdWUgPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZ2xvYmFsT2JqZWN0
LCBzdHJpbmcpOw0KICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVy
biBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3VsdDo6VW5kZWZpbmVkOyB9IHdoaWxlIChmYWxzZSk7
DQogICAgICAgIGlmICghYmlnSW50VmFsdWUpDQogICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVmaW5lZDsNCg0KICAgICAgICBpZiAoYmlnSW50VmFsdWUu
aXNIZWFwQmlnSW50KCkpDQogICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNvbXBhcmUodjEs
IGJpZ0ludFZhbHVlLmFzSGVhcEJpZ0ludCgpKTsNCg0KICAgICAgICAoKHZvaWQpMCk7DQoNCg0K
I2xpbmUgMzIzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXE9wZXJhdGlvbnMuaCINCiAgICB9DQoNCiAgICANCiAgICBkb3VibGUgbnVt
YmVyVmFsdWUgPSBwcmltVmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsNCiAgICBkbyB7IGlm
ICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBKU0JpZ0ludDo6Q29tcGFyaXNvblJlc3Vs
dDo6VW5kZWZpbmVkOyB9IHdoaWxlIChmYWxzZSk7DQogICAgaWYgKHN0ZDo6aXNuYW4obnVtYmVy
VmFsdWUpKQ0KICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OkNvbXBhcmlzb25SZXN1bHQ6OlVuZGVm
aW5lZDsNCiAgICByZXR1cm4gY29tcGFyZShzdGF0aWNfY2FzdDxkb3VibGU+KHYxKSwgbnVtYmVy
VmFsdWUpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgYmlnSW50Q29tcGFyZVJlc3VsdChKU0Jp
Z0ludDo6Q29tcGFyaXNvblJlc3VsdCBjb21wYXJpc29uUmVzdWx0LCBKU0JpZ0ludDo6Q29tcGFy
aXNvbk1vZGUgY29tcGFyaXNvbk1vZGUpDQp7DQogICAgaWYgKGNvbXBhcmlzb25Nb2RlID09IEpT
QmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4pDQogICAgICAgIHJldHVybiBjb21wYXJp
c29uUmVzdWx0ID09IEpTQmlnSW50OjpDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbjsNCg0KICAg
ICgodm9pZCkwKTsNCiAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6Q29t
cGFyaXNvblJlc3VsdDo6TGVzc1RoYW4gfHwgY29tcGFyaXNvblJlc3VsdCA9PSBKU0JpZ0ludDo6
Q29tcGFyaXNvblJlc3VsdDo6RXF1YWw7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBiaWdJbnRD
b21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZSBjb21wYXJpc29uTW9kZSkNCnsNCiAgICAoKHZv
aWQpMCk7DQogICAgKCh2b2lkKTApOw0KDQogICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
Ow0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICBpZiAodjEu
aXNCaWdJbnQoKSAmJiB2Mi5pc0JpZ0ludCgpKQ0KICAgICAgICByZXR1cm4gYmlnSW50Q29tcGFy
ZVJlc3VsdChjb21wYXJlQmlnSW50KHYxLCB2MiksIGNvbXBhcmlzb25Nb2RlKTsNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDM2OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPcGVyYXRpb25zLmgiDQoNCiAgICBp
ZiAodjEuaXNIZWFwQmlnSW50KCkpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBhdXRv
IGNvbXBhcmlzb25SZXN1bHQgPSBjb21wYXJlQmlnSW50VG9PdGhlclByaW1pdGl2ZShnbG9iYWxP
YmplY3QsIHYxLmFzSGVhcEJpZ0ludCgpLCB2Mik7DQogICAgICAgIGRvIHsgaWYgKCgoc2NvcGUp
LmV4Y2VwdGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHJl
dHVybiBiaWdJbnRDb21wYXJlUmVzdWx0KGNvbXBhcmlzb25SZXN1bHQsIGNvbXBhcmlzb25Nb2Rl
KTsNCiAgICB9DQoNCiAgICANCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgIGF1
dG8gY29tcGFyaXNvblJlc3VsdCA9IGNvbXBhcmVCaWdJbnRUb090aGVyUHJpbWl0aXZlKGdsb2Jh
bE9iamVjdCwgdjIuYXNIZWFwQmlnSW50KCksIHYxKTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5l
eGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJldHVybiBi
aWdJbnRDb21wYXJlUmVzdWx0KGludmVydEJpZ0ludENvbXBhcmVSZXN1bHQoY29tcGFyaXNvblJl
c3VsdCksIGNvbXBhcmlzb25Nb2RlKTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIHRvUHJpbWl0
aXZlTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYsIEpTVmFs
dWUmIHAsIGRvdWJsZSYgbikNCnsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQog
ICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICANCiAgICBwID0gdi50
b1ByaW1pdGl2ZShnbG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7DQogICAgZG8geyBpZiAoKChz
Y29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gZmFsc2U7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICBp
ZiAocC5pc0JpZ0ludCgpKQ0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICANCiAgICBuID0gcC50
b051bWJlcihnbG9iYWxPYmplY3QpOw0KICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigp
KSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgcmV0dXJuICFwLmlzU3RyaW5n
KCk7DQp9DQoNCg0KDQoNCnRlbXBsYXRlPGJvb2wgbGVmdEZpcnN0Pg0KX19mb3JjZWlubGluZSBi
b29sIGpzTGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAgICBhdXRvIHNj
b3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgaWYgKHYxLmlzSW50MzIoKSAmJiB2
Mi5pc0ludDMyKCkpDQogICAgICAgIHJldHVybiB2MS5hc0ludDMyKCkgPCB2Mi5hc0ludDMyKCk7
DQoNCiAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQ0KICAgICAgICByZXR1
cm4gdjEuYXNOdW1iZXIoKSA8IHYyLmFzTnVtYmVyKCk7DQoNCiAgICBpZiAoaXNKU1N0cmluZyh2
MSkgJiYgaXNKU1N0cmluZyh2MikpIHsNCiAgICAgICAgU3RyaW5nIHMxID0gYXNTdHJpbmcodjEp
LT52YWx1ZShnbG9iYWxPYmplY3QpOw0KICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRp
b24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICBTdHJpbmcgczIg
PSBhc1N0cmluZyh2MiktPnZhbHVlKGdsb2JhbE9iamVjdCk7DQogICAgICAgIGRvIHsgaWYgKCgo
c2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAg
ICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oczEsIHMyKTsNCiAgICB9DQoNCiAg
ICBkb3VibGUgbjE7DQogICAgZG91YmxlIG4yOw0KICAgIEpTVmFsdWUgcDE7DQogICAgSlNWYWx1
ZSBwMjsNCiAgICBib29sIHdhc05vdFN0cmluZzE7DQogICAgYm9vbCB3YXNOb3RTdHJpbmcyOw0K
ICAgIGlmIChsZWZ0Rmlyc3QpIHsNCiAgICAgICAgd2FzTm90U3RyaW5nMSA9IHRvUHJpbWl0aXZl
TnVtZXJpYyhnbG9iYWxPYmplY3QsIHYxLCBwMSwgbjEpOw0KICAgICAgICBkbyB7IGlmICgoKHNj
b3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAg
ICB3YXNOb3RTdHJpbmcyID0gdG9QcmltaXRpdmVOdW1lcmljKGdsb2JhbE9iamVjdCwgdjIsIHAy
LCBuMik7DQogICAgfSBlbHNlIHsNCiAgICAgICAgd2FzTm90U3RyaW5nMiA9IHRvUHJpbWl0aXZl
TnVtZXJpYyhnbG9iYWxPYmplY3QsIHYyLCBwMiwgbjIpOw0KICAgICAgICBkbyB7IGlmICgoKHNj
b3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAg
ICB3YXNOb3RTdHJpbmcxID0gdG9QcmltaXRpdmVOdW1lcmljKGdsb2JhbE9iamVjdCwgdjEsIHAx
LCBuMSk7DQogICAgfQ0KICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJu
IGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICBpZiAod2FzTm90U3RyaW5nMSB8fCB3YXNO
b3RTdHJpbmcyKSB7DQogICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkp
DQogICAgICAgICAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIGJpZ0ludENvbXBhcmUo
Z2xvYmFsT2JqZWN0LCBwMSwgcDIsIEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW4p
OyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICAgICAgcmV0dXJuIG4xIDwgbjI7DQogICAgfQ0KDQog
ICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihhc1N0cmluZyhwMSktPnZhbHVlKGds
b2JhbE9iamVjdCksIGFzU3RyaW5nKHAyKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7DQp9DQoNCg0K
DQoNCnRlbXBsYXRlPGJvb2wgbGVmdEZpcnN0Pg0KX19mb3JjZWlubGluZSBib29sIGpzTGVzc0Vx
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpDQp7
DQogICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOw0KICAgIGF1dG8gc2NvcGUgPSBKU0M6
OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICBpZiAodjEuaXNJbnQzMigpICYmIHYyLmlzSW50MzIo
KSkNCiAgICAgICAgcmV0dXJuIHYxLmFzSW50MzIoKSA8PSB2Mi5hc0ludDMyKCk7DQoNCiAgICBp
ZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQ0KICAgICAgICByZXR1cm4gdjEuYXNO
dW1iZXIoKSA8PSB2Mi5hc051bWJlcigpOw0KDQogICAgaWYgKGlzSlNTdHJpbmcodjEpICYmIGlz
SlNTdHJpbmcodjIpKSB7DQogICAgICAgIFN0cmluZyBzMSA9IGFzU3RyaW5nKHYxKS0+dmFsdWUo
Z2xvYmFsT2JqZWN0KTsNCiAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSBy
ZXR1cm4gZmFsc2U7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgU3RyaW5nIHMyID0gYXNTdHJp
bmcodjIpLT52YWx1ZShnbG9iYWxPYmplY3QpOw0KICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5l
eGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1
cm4gIWNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihzMiwgczEpOw0KICAgIH0NCg0KICAgIGRvdWJs
ZSBuMTsNCiAgICBkb3VibGUgbjI7DQogICAgSlNWYWx1ZSBwMTsNCiAgICBKU1ZhbHVlIHAyOw0K
ICAgIGJvb2wgd2FzTm90U3RyaW5nMTsNCiAgICBib29sIHdhc05vdFN0cmluZzI7DQogICAgaWYg
KGxlZnRGaXJzdCkgew0KICAgICAgICB3YXNOb3RTdHJpbmcxID0gdG9QcmltaXRpdmVOdW1lcmlj
KGdsb2JhbE9iamVjdCwgdjEsIHAxLCBuMSk7DQogICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4
Y2VwdGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHdhc05v
dFN0cmluZzIgPSB0b1ByaW1pdGl2ZU51bWVyaWMoZ2xvYmFsT2JqZWN0LCB2MiwgcDIsIG4yKTsN
CiAgICB9IGVsc2Ugew0KICAgICAgICB3YXNOb3RTdHJpbmcyID0gdG9QcmltaXRpdmVOdW1lcmlj
KGdsb2JhbE9iamVjdCwgdjIsIHAyLCBuMik7DQogICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4
Y2VwdGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHdhc05v
dFN0cmluZzEgPSB0b1ByaW1pdGl2ZU51bWVyaWMoZ2xvYmFsT2JqZWN0LCB2MSwgcDEsIG4xKTsN
CiAgICB9DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gZmFsc2U7
IH0gd2hpbGUgKGZhbHNlKTsNCg0KICAgIGlmICh3YXNOb3RTdHJpbmcxIHx8IHdhc05vdFN0cmlu
ZzIpIHsNCiAgICAgICAgaWYgKHAxLmlzQmlnSW50KCkgfHwgcDIuaXNCaWdJbnQoKSkNCiAgICAg
ICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gYmlnSW50Q29tcGFyZShnbG9iYWxP
YmplY3QsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwp
OyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICAgICAgcmV0dXJuIG4xIDw9IG4yOw0KICAgIH0NCiAg
ICByZXR1cm4gIWNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihhc1N0cmluZyhwMiktPnZhbHVlKGds
b2JhbE9iamVjdCksIGFzU3RyaW5nKHAxKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7DQp9DQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIGpzQWRkTm9uTnVtYmVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpDQp7DQog
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOw0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRo
cm93U2NvcGUoKHZtKSk7DQogICAgKCh2b2lkKTApOw0KDQogICAgaWYgKCh2MS5pc1N0cmluZygp
ICYmICF2Mi5pc09iamVjdCgpKSkgew0KICAgICAgICBpZiAodjIuaXNTdHJpbmcoKSkNCiAgICAg
ICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0
LCBhc1N0cmluZyh2MSksIGFzU3RyaW5nKHYyKSk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAg
U3RyaW5nIHMyID0gdjIudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsNCiAgICAgICAgZG8geyBp
ZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4geyB9OyB9IHdoaWxlIChmYWxzZSk7DQog
ICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4ganNTdHJpbmcoZ2xvYmFsT2JqZWN0
LCBhc1N0cmluZyh2MSksIHMyKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIH0NCg0KICAgIA0KICAg
IGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4ganNBZGRTbG93Q2FzZShnbG9iYWxPYmplY3Qs
IHYxLCB2Mik7IH0gd2hpbGUgKGZhbHNlKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIGpz
QWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
DQp7DQogICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkNCiAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKTsNCiAgICAgICAgDQog
ICAgcmV0dXJuIGpzQWRkTm9uTnVtYmVyKGdsb2JhbE9iamVjdCwgdjEsIHYyKTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgRG91YmxlT3BlcmF0aW9uLCB0eXBlbmFtZSBCaWdJbnRPcD4NCl9fZm9y
Y2VpbmxpbmUgSlNWYWx1ZSBhcml0aG1ldGljQmluYXJ5T3AoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgRG91YmxlT3BlcmF0aW9uJiYgZG91Ymxl
T3AsIEJpZ0ludE9wJiYgYmlnSW50T3AsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkNCnsNCiAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhy
b3dTY29wZSgodm0pKTsNCg0KICAgIEpTVmFsdWUgbGVmdE51bWVyaWMgPSB2MS50b051bWVyaWMo
Z2xvYmFsT2JqZWN0KTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVy
biB7IH07IH0gd2hpbGUgKGZhbHNlKTsNCiAgICBKU1ZhbHVlIHJpZ2h0TnVtZXJpYyA9IHYyLnRv
TnVtZXJpYyhnbG9iYWxPYmplY3QpOw0KICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigp
KSkgcmV0dXJuIHsgfTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgaWYgKGxlZnROdW1lcmljLmlz
TnVtYmVyKCkgJiYgcmlnaHROdW1lcmljLmlzTnVtYmVyKCkpDQogICAgICAgIHJldHVybiBqc051
bWJlcihkb3VibGVPcChsZWZ0TnVtZXJpYy5hc051bWJlcigpLCByaWdodE51bWVyaWMuYXNOdW1i
ZXIoKSkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NjEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcT3BlcmF0aW9u
cy5oIg0KICAgIGlmIChsZWZ0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSAmJiByaWdodE51bWVyaWMu
aXNIZWFwQmlnSW50KCkpDQogICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gYmln
SW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHROdW1l
cmljLmFzSGVhcEJpZ0ludCgpKTsgfSB3aGlsZSAoZmFsc2UpOw0KI2xpbmUgNTY0ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE9wZXJh
dGlvbnMuaCINCg0KICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBlcnJvck1lc3NhZ2UpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTVmFsdWUganNTdWIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikNCnsNCiAgICBh
dXRvIGRvdWJsZU9wID0gW10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7
DQogICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQ7DQogICAgfTsNCg0KICAgIGF1dG8gYmlnSW50
T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgYXV0byBsZWZ0LCBhdXRvIHJp
Z2h0KSB7DQogICAgICAgIHJldHVybiBKU0JpZ0ludDo6c3ViKGdsb2JhbE9iamVjdCwgbGVmdCwg
cmlnaHQpOw0KICAgIH07DQoNCiAgICByZXR1cm4gYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9i
amVjdCwgdjEsIHYyLCBkb3VibGVPcCwgYmlnSW50T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQg
YW5kIG90aGVyIHR5cGUgaW4gc3VidHJhY3Rpb24uIl9zKTsNCn0NCg0KX19mb3JjZWlubGluZSBK
U1ZhbHVlIGpzTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpT
VmFsdWUgdjIpDQp7DQogICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91Ymxl
IHJpZ2h0KSAtPiBkb3VibGUgew0KICAgICAgICByZXR1cm4gbGVmdCAqIHJpZ2h0Ow0KICAgIH07
DQoNCiAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGF1dG8gbGVmdCwgYXV0byByaWdodCkgew0KICAgICAgICByZXR1cm4gSlNCaWdJbnQ6Om11bHRp
cGx5KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOw0KICAgIH07DQoNCiAgICByZXR1cm4gYXJp
dGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgdjEsIHYyLCBkb3VibGVPcCwgYmlnSW50T3As
ICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gbXVsdGlwbGljYXRpb24u
Il9zKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpDQp7DQogICAgYXV0byBkb3VibGVP
cCA9IFtdIChkb3VibGUgbGVmdCwgZG91YmxlIHJpZ2h0KSAtPiBkb3VibGUgew0KICAgICAgICBy
ZXR1cm4gbGVmdCAvIHJpZ2h0Ow0KICAgIH07DQoNCiAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGF1dG8gbGVmdCwgYXV0byByaWdodCkgew0KICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsN
CiAgICB9Ow0KDQogICAgcmV0dXJuIGFyaXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYx
LCB2MiwgZG91YmxlT3AsIGJpZ0ludE9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGRpdmlzaW9uLiJfcyk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBqc1Jl
bWFpbmRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVl
IHYyKQ0Kew0KICAgIGF1dG8gZG91YmxlT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJsZSByaWdo
dCkgLT4gZG91YmxlIHsNCiAgICAgICAgcmV0dXJuIGZtb2QobGVmdCwgcmlnaHQpOw0KICAgIH07
DQoNCiAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGF1dG8gbGVmdCwgYXV0byByaWdodCkgew0KICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnJlbWFp
bmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsNCiAgICB9Ow0KDQogICAgcmV0dXJuIGFy
aXRobWV0aWNCaW5hcnlPcChnbG9iYWxPYmplY3QsIHYxLCB2MiwgZG91YmxlT3AsIGJpZ0ludE9w
LCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhlciB0eXBlIGluIHJlbWFpbmRlci4iX3Mp
Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTVmFsdWUganNQb3coSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikNCnsNCiAgICBhdXRvIGRvdWJsZU9wID0g
W10gKGRvdWJsZSBsZWZ0LCBkb3VibGUgcmlnaHQpIC0+IGRvdWJsZSB7DQogICAgICAgIHJldHVy
biBvcGVyYXRpb25NYXRoUG93KGxlZnQsIHJpZ2h0KTsNCiAgICB9Ow0KDQogICAgYXV0byBiaWdJ
bnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBhdXRvIGxlZnQsIGF1dG8g
cmlnaHQpIHsNCiAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpleHBvbmVudGlhdGUoZ2xvYmFsT2Jq
ZWN0LCBsZWZ0LCByaWdodCk7DQogICAgfTsNCg0KICAgIHJldHVybiBhcml0aG1ldGljQmluYXJ5
T3AoZ2xvYmFsT2JqZWN0LCB2MSwgdjIsIGRvdWJsZU9wLCBiaWdJbnRPcCwgIkludmFsaWQgbWl4
IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBleHBvbmVudGlhdGlvbi4iX3MpOw0KfQ0KDQpf
X2ZvcmNlaW5saW5lIEpTVmFsdWUganNJbmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2KQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAgICBhdXRv
IHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgYXV0byBvcGVyYW5kTnVtZXJp
YyA9IHYudG9OdW1lcmljKGdsb2JhbE9iamVjdCk7DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhj
ZXB0aW9uKCkpKSByZXR1cm4geyB9OyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICBpZiAob3BlcmFu
ZE51bWVyaWMuaXNOdW1iZXIoKSkNCiAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG9wZXJhbmROdW1l
cmljLmFzTnVtYmVyKCkgKyAxKTsNCg0KDQoNCg0KI2xpbmUgNjQ4ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE9wZXJhdGlvbnMuaCIN
Cg0KICAgICgodm9pZCkwKTsNCiAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIEpTQmln
SW50OjppbmMoZ2xvYmFsT2JqZWN0LCBvcGVyYW5kTnVtZXJpYy5hc0hlYXBCaWdJbnQoKSk7IH0g
d2hpbGUgKGZhbHNlKTsNCn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIGpzRGVjKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikNCnsNCiAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCg0K
ICAgIGF1dG8gb3BlcmFuZE51bWVyaWMgPSB2LnRvTnVtZXJpYyhnbG9iYWxPYmplY3QpOw0KICAg
IGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIHsgfTsgfSB3aGlsZSAoZmFs
c2UpOw0KDQogICAgaWYgKG9wZXJhbmROdW1lcmljLmlzTnVtYmVyKCkpDQogICAgICAgIHJldHVy
biBqc051bWJlcihvcGVyYW5kTnVtZXJpYy5hc051bWJlcigpIC0gMSk7DQoNCg0KDQoNCiNsaW5l
IDY2OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxPcGVyYXRpb25zLmgiDQoNCiAgICAoKHZvaWQpMCk7DQogICAgZG8geyBzY29wZS5y
ZWxlYXNlKCk7IHJldHVybiBKU0JpZ0ludDo6ZGVjKGdsb2JhbE9iamVjdCwgb3BlcmFuZE51bWVy
aWMuYXNIZWFwQmlnSW50KCkpOyB9IHdoaWxlIChmYWxzZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUg
SlNWYWx1ZSBqc0JpdHdpc2VOb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2KQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAgICBhdXRvIHNjb3Bl
ID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgYXV0byBvcGVyYW5kTnVtZXJpYyA9IHYu
dG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhj
ZXB0aW9uKCkpKSByZXR1cm4geyB9OyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICBpZiAob3BlcmFu
ZE51bWVyaWMuaXNJbnQzMigpKQ0KICAgICAgICByZXR1cm4ganNOdW1iZXIofm9wZXJhbmROdW1l
cmljLmFzSW50MzIoKSk7DQoNCg0KDQoNCiNsaW5lIDY4OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPcGVyYXRpb25zLmgiDQoNCiAg
ICAoKHZvaWQpMCk7DQogICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBKU0JpZ0ludDo6
Yml0d2lzZU5vdChnbG9iYWxPYmplY3QsIG9wZXJhbmROdW1lcmljLmFzSGVhcEJpZ0ludCgpKTsg
fSB3aGlsZSAoZmFsc2UpOw0KfQ0KDQp0ZW1wbGF0ZSA8Ym9vbCBpc0xlZnQ+DQpfX2ZvcmNlaW5s
aW5lIEpTVmFsdWUgc2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MikNCnsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAg
YXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCg0KICAgIGF1dG8gbGVmdE51bWVy
aWMgPSB2MS50b0JpZ0ludE9ySW50MzIoZ2xvYmFsT2JqZWN0KTsNCiAgICBkbyB7IGlmICgoKHNj
b3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB7IH07IH0gd2hpbGUgKGZhbHNlKTsNCiAgICBhdXRv
IHJpZ2h0TnVtZXJpYyA9IHYyLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOw0KICAgIGRv
IHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIHsgfTsgfSB3aGlsZSAoZmFsc2Up
Ow0KDQogICAgaWYgKGxlZnROdW1lcmljLmlzSW50MzIoKSAmJiByaWdodE51bWVyaWMuaXNJbnQz
MigpKSB7DQogICAgICAgIGludDMyX3QgbGVmdEludDMyID0gbGVmdE51bWVyaWMuYXNJbnQzMigp
Ow0KICAgICAgICBpbnQzMl90IHJpZ2h0SW50MzIgPSByaWdodE51bWVyaWMuYXNJbnQzMigpICYg
MzE7DQogICAgICAgIGludDMyX3QgcmVzdWx0ID0gaXNMZWZ0ID8gKGxlZnRJbnQzMiA8PCByaWdo
dEludDMyKSA6IChsZWZ0SW50MzIgPj4gcmlnaHRJbnQzMik7DQogICAgICAgIHJldHVybiBqc051
bWJlcihyZXN1bHQpOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDczNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxPcGVyYXRpb25zLmgiDQogICAgaWYgKGxlZnROdW1l
cmljLmlzSGVhcEJpZ0ludCgpICYmIHJpZ2h0TnVtZXJpYy5pc0hlYXBCaWdJbnQoKSkgew0KICAg
ICAgICBpZiAoaXNMZWZ0KQ0KICAgICAgICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVy
biBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdE51bWVyaWMuYXNIZWFwQmln
SW50KCksIHJpZ2h0TnVtZXJpYy5hc0hlYXBCaWdJbnQoKSk7IH0gd2hpbGUgKGZhbHNlKTsNCiAg
ICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBKU0JpZ0ludDo6c2lnbmVkUmlnaHRT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnROdW1lcmljLmFzSGVhcEJpZ0ludCgpLCByaWdodE51bWVy
aWMuYXNIZWFwQmlnSW50KCkpOyB9IHdoaWxlIChmYWxzZSk7DQogICAgfQ0KI2xpbmUgNzQxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XE9wZXJhdGlvbnMuaCINCg0KICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gaXNMZWZ0ID8gIkludmFs
aWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBsZWZ0IHNoaWZ0IG9wZXJhdGlvbi4i
IDogIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBzaWduZWQgcmlnaHQg
c2hpZnQgb3BlcmF0aW9uLiI7DQogICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBqc0xT
aGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYy
KQ0Kew0KICAgIGNvbnN0ZXhwciBib29sIGlzTGVmdCA9IHRydWU7DQogICAgcmV0dXJuIHNoaWZ0
PGlzTGVmdD4oZ2xvYmFsT2JqZWN0LCB2MSwgdjIpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIEpTVmFs
dWUganNSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNW
YWx1ZSB2MikNCnsNCiAgICBjb25zdGV4cHIgYm9vbCBpc0xlZnQgPSBmYWxzZTsNCiAgICByZXR1
cm4gc2hpZnQ8aXNMZWZ0PihnbG9iYWxPYmplY3QsIHYxLCB2Mik7DQp9DQoNCl9fZm9yY2Vpbmxp
bmUgSlNWYWx1ZSBqc1VSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBsZWZ0LCBKU1ZhbHVlIHJpZ2h0KQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgT3B0aW9u
YWw8dWludDMyX3Q+IGxlZnRVaW50MzIgPSBsZWZ0LnRvVUludDMyQWZ0ZXJUb051bWVyaWMoZ2xv
YmFsT2JqZWN0KTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB7
IH07IH0gd2hpbGUgKGZhbHNlKTsNCiAgICBPcHRpb25hbDx1aW50MzJfdD4gcmlnaHRVaW50MzIg
PSByaWdodC50b1VJbnQzMkFmdGVyVG9OdW1lcmljKGdsb2JhbE9iamVjdCk7DQogICAgZG8geyBp
ZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4geyB9OyB9IHdoaWxlIChmYWxzZSk7DQoN
CiAgICBpZiAoKCFsZWZ0VWludDMyIHx8ICFyaWdodFVpbnQzMikpIHsNCiAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBkb2VzIG5vdCBzdXBwb3J0ID4+
PiBvcGVyYXRvciJfcyk7DQogICAgICAgIHJldHVybiB7IH07DQogICAgfQ0KDQogICAgcmV0dXJu
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGxlZnRVaW50MzIudmFsdWUoKSA+PiAocmln
aHRVaW50MzIudmFsdWUoKSAmIDMxKSkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQzMk9w
ZXJhdGlvbiwgdHlwZW5hbWUgQmlnSW50T3A+DQpfX2ZvcmNlaW5saW5lIEpTVmFsdWUgYml0d2lz
ZUJpbmFyeU9wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIsIEludDMyT3BlcmF0aW9uJiYgaW50MzJPcCwgQmlnSW50T3AmJiBiaWdJbnRPcCwgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgYXV0byBs
ZWZ0TnVtZXJpYyA9IHYxLnRvQmlnSW50T3JJbnQzMihnbG9iYWxPYmplY3QpOw0KICAgIGRvIHsg
aWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIHsgfTsgfSB3aGlsZSAoZmFsc2UpOw0K
ICAgIGF1dG8gcmlnaHROdW1lcmljID0gdjIudG9CaWdJbnRPckludDMyKGdsb2JhbE9iamVjdCk7
DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4geyB9OyB9IHdoaWxl
IChmYWxzZSk7DQoNCiAgICBpZiAobGVmdE51bWVyaWMuaXNJbnQzMigpICYmIHJpZ2h0TnVtZXJp
Yy5pc0ludDMyKCkpDQogICAgICAgIHJldHVybiBqc051bWJlcihpbnQzMk9wKGxlZnROdW1lcmlj
LmFzSW50MzIoKSwgcmlnaHROdW1lcmljLmFzSW50MzIoKSkpOw0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA4MDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZVxcT3BlcmF0aW9ucy5oIg0KICAgIGlmIChsZWZ0TnVtZXJpYy5p
c0hlYXBCaWdJbnQoKSAmJiByaWdodE51bWVyaWMuaXNIZWFwQmlnSW50KCkpDQogICAgICAgIGRv
IHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gYmlnSW50T3AoZ2xvYmFsT2JqZWN0LCBsZWZ0TnVt
ZXJpYy5hc0hlYXBCaWdJbnQoKSwgcmlnaHROdW1lcmljLmFzSGVhcEJpZ0ludCgpKTsgfSB3aGls
ZSAoZmFsc2UpOw0KI2xpbmUgODA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE9wZXJhdGlvbnMuaCINCg0KICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOw0KfQ0KDQpfX2Zv
cmNlaW5saW5lIEpTVmFsdWUganNCaXR3aXNlQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpDQp7DQogICAgYXV0byBpbnQzMk9wID0gW10gKGlu
dDMyX3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7DQogICAgICAgIHJldHVybiBs
ZWZ0ICYgcmlnaHQ7DQogICAgfTsNCg0KICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgYXV0byBsZWZ0LCBhdXRvIHJpZ2h0KSB7DQogICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsNCiAg
ICB9Ow0KDQogICAgDQogICAgDQogICAgcmV0dXJuIGJpdHdpc2VCaW5hcnlPcChnbG9iYWxPYmpl
Y3QsIHYxLCB2MiwgaW50MzJPcCwgYmlnSW50T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5k
IG90aGVyIHR5cGUgaW4gYml0d2lzZSAnYW5kJyBvcGVyYXRpb24uIl9zKTsNCn0NCg0KX19mb3Jj
ZWlubGluZSBKU1ZhbHVlIGpzQml0d2lzZU9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpDQp7DQogICAgYXV0byBpbnQzMk9wID0gW10gKGludDMy
X3QgbGVmdCwgaW50MzJfdCByaWdodCkgLT4gaW50MzJfdCB7DQogICAgICAgIHJldHVybiBsZWZ0
IHwgcmlnaHQ7DQogICAgfTsNCg0KICAgIA0KICAgIA0KDQogICAgYXV0byBiaWdJbnRPcCA9IFtd
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBhdXRvIGxlZnQsIGF1dG8gcmlnaHQpIHsN
CiAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCBy
aWdodCk7DQogICAgfTsNCg0KICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0
LCB2MSwgdjIsIGludDMyT3AsIGJpZ0ludE9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBv
dGhlciB0eXBlIGluIGJpdHdpc2UgJ29yJyBvcGVyYXRpb24uIl9zKTsNCn0NCg0KX19mb3JjZWlu
bGluZSBKU1ZhbHVlIGpzQml0d2lzZVhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQ0Kew0KICAgIGF1dG8gaW50MzJPcCA9IFtdIChpbnQzMl90
IGxlZnQsIGludDMyX3QgcmlnaHQpIC0+IGludDMyX3Qgew0KICAgICAgICByZXR1cm4gbGVmdCBe
IHJpZ2h0Ow0KICAgIH07DQoNCiAgICANCiAgICANCiAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGF1dG8gbGVmdCwgYXV0byByaWdodCkgew0KICAg
ICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3IoZ2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdo
dCk7DQogICAgfTsNCg0KICAgIHJldHVybiBiaXR3aXNlQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCB2
MSwgdjIsIGludDMyT3AsIGJpZ0ludE9wLCAiSW52YWxpZCBtaXggb2YgQmlnSW50IGFuZCBvdGhl
ciB0eXBlIGluIGJpdHdpc2UgJ3hvcicgb3BlcmF0aW9uLiJfcyk7DQp9DQoNCl9fZm9yY2Vpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxXaXRoSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkNCnsNCiAgICBpZiAoYmFzZS0+
aXNPYmplY3QoKSkgew0KICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7
DQogICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpbmRleCkpDQogICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGluZGV4
KSk7DQogICAgfQ0KDQogICAgaWYgKGlzSlNTdHJpbmcoYmFzZSkgJiYgYXNTdHJpbmcoYmFzZSkt
PmNhbkdldEluZGV4KGluZGV4KSkNCiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1N0
cmluZyhiYXNlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCkpOw0KDQogICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGJhc2UpLmdldChnbG9iYWxPYmplY3QsIGluZGV4KSk7
DQp9DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCINCg0KDQoN
Cm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNDZWxsOw0KICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiAmdm0ucHJvcGVydHlOYW1l
RW51bWVyYXRvclNwYWNlOw0KICAgIH0NCg0KICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90LCB1aW50MzJfdCwgUHJvcGVy
dHlOYW1lQXJyYXkmJik7DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkN
CiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
DQogICAgfQ0KDQogICAgcHJvdGVjdGVkOiBzdGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNv
bnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBK
U1N0cmluZyogcHJvcGVydHlOYW1lQXRJbmRleCh1aW50MzJfdCBpbmRleCkNCiAgICB7DQogICAg
ICAgIGlmIChpbmRleCA+PSBzaXplT2ZQcm9wZXJ0eU5hbWVzKCkpDQogICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsNCiAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlOYW1lcy5nZXQoKVtpbmRleF0u
Z2V0KCk7DQogICAgfQ0KDQogICAgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGVDaGFpbi5nZXQoKTsgfQ0KICAgIHZvaWQgc2V0
Q2FjaGVkUHJvdG90eXBlQ2hhaW4oVk0mIHZtLCBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hh
aW4pIHsgcmV0dXJuIG1fcHJvdG90eXBlQ2hhaW4uc2V0KHZtLCB0aGlzLCBwcm90b3R5cGVDaGFp
bik7IH0NCg0KICAgIFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlKFZNJiB2bSkgY29uc3QNCiAg
ICB7DQogICAgICAgIGlmICghbV9jYWNoZWRTdHJ1Y3R1cmVJRCkNCiAgICAgICAgICAgIHJldHVy
biBudWxscHRyOw0KICAgICAgICByZXR1cm4gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1fY2FjaGVkU3RydWN0dXJlSUQpOw0KICAgIH0NCiAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1
Y3R1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU3RydWN0dXJlSUQ7IH0NCiAgICB1aW50
MzJfdCBpbmRleGVkTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkTGVuZ3RoOyB9DQog
ICAgdWludDMyX3QgZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleDsgfQ0KICAgIHVpbnQzMl90IGVuZEdlbmVyaWNQcm9w
ZXJ0eUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9lbmRHZW5lcmljUHJvcGVydHlJbmRleDsgfQ0K
ICAgIHVpbnQzMl90IGNhY2hlZElubGluZUNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNo
ZWRJbmxpbmVDYXBhY2l0eTsgfQ0KICAgIHVpbnQzMl90IHNpemVPZlByb3BlcnR5TmFtZXMoKSBj
b25zdCB7IHJldHVybiBlbmRHZW5lcmljUHJvcGVydHlJbmRleCgpOyB9DQogICAgc3RhdGljIHB0
cmRpZmZfdCBjYWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgpIHsgcmV0dXJuIChyZWludGVycHJldF9j
YXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cio+KDB4NDAwMCktPm1fY2FjaGVkU3RydWN0dXJlSUQpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0
aWMgcHRyZGlmZl90IGluZGV4ZWRMZW5ndGhPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRf
Y2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqPigweDQwMDApLT5tX2luZGV4ZWRMZW5ndGgpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMg
cHRyZGlmZl90IGVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXhPZmZzZXQoKSB7IHJldHVybiAocmVp
bnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IqPigweDQwMDApLT5tX2VuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgpKSAtIDB4
NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IGVuZEdlbmVyaWNQcm9wZXJ0eUluZGV4T2Zm
c2V0KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0
X2Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKj4oMHg0MDAwKS0+bV9lbmRHZW5lcmljUHJv
cGVydHlJbmRleCkpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3QgY2FjaGVkSW5s
aW5lQ2FwYWNpdHlPZmZzZXQoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+
KCYocmVpbnRlcnByZXRfY2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqPigweDQwMDApLT5t
X2NhY2hlZElubGluZUNhcGFjaXR5KSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZf
dCBjYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yT2Zmc2V0KCkNCiAgICB7DQogICAgICAgIHJldHVy
biAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IqPigweDQwMDApLT5tX3Byb3BlcnR5TmFtZXMpKSAtIDB4NDAwMCk7
DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOw0KDQpwcml2YXRlOg0KICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7DQoNCiAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50
MzJfdCwgdWludDMyX3QsIFdyaXRlQmFycmllcjxKU1N0cmluZz4qLCB1bnNpZ25lZCk7DQogICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZlB0cjxQcm9wZXJ0eU5hbWVBcnJheURhdGE+JiYp
Ow0KDQogICAgQXV4aWxpYXJ5QmFycmllcjxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+Kj4gbV9wcm9w
ZXJ0eU5hbWVzOw0KICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9wcm90b3R5cGVD
aGFpbjsNCiAgICBTdHJ1Y3R1cmVJRCBtX2NhY2hlZFN0cnVjdHVyZUlEOw0KICAgIHVpbnQzMl90
IG1faW5kZXhlZExlbmd0aDsNCiAgICB1aW50MzJfdCBtX2VuZFN0cnVjdHVyZVByb3BlcnR5SW5k
ZXg7DQogICAgdWludDMyX3QgbV9lbmRHZW5lcmljUHJvcGVydHlJbmRleDsNCiAgICB1aW50MzJf
dCBtX2NhY2hlZElubGluZUNhcGFjaXR5Ow0KfTsNCg0KaW5saW5lIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciogcHJvcGVydHlOYW1lRW51bWVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogYmFzZSkNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
Ow0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICB1aW50MzJf
dCBpbmRleGVkTGVuZ3RoID0gYmFzZS0+bWV0aG9kVGFibGUodm0pLT5nZXRFbnVtZXJhYmxlTGVu
Z3RoKGdsb2JhbE9iamVjdCwgYmFzZSk7DQoNCiAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IGVudW1lcmF0b3IgPSBudWxscHRyOw0KDQogICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
LT5zdHJ1Y3R1cmUodm0pOw0KICAgIGlmICghaW5kZXhlZExlbmd0aA0KICAgICAgICAmJiAoZW51
bWVyYXRvciA9IHN0cnVjdHVyZS0+Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKQ0KICAg
ICAgICAmJiBlbnVtZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpID09IHN0cnVjdHVyZS0+
cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlKSkNCiAgICAgICAgcmV0dXJuIGVudW1l
cmF0b3I7DQoNCiAgICB1aW50MzJfdCBudW1iZXJTdHJ1Y3R1cmVQcm9wZXJ0aWVzID0gMDsNCg0K
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXModm0sIFByb3BlcnR5TmFtZU1vZGU6
OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsNCg0KICAgIGlmIChzdHJ1Y3R1
cmUtPmNhbkFjY2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSAmJiBpbmRleGVk
TGVuZ3RoID09IGJhc2UtPmdldEFycmF5TGVuZ3RoKCkpIHsNCiAgICAgICAgYmFzZS0+bWV0aG9k
VGFibGUodm0pLT5nZXRTdHJ1Y3R1cmVQcm9wZXJ0eU5hbWVzKGJhc2UsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOw0KICAgICAgICBzY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOw0KDQogICAgICAgIG51bWJlclN0cnVjdHVyZVByb3BlcnRpZXMgPSBwcm9w
ZXJ0eU5hbWVzLnNpemUoKTsNCg0KICAgICAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmdldEdl
bmVyaWNQcm9wZXJ0eU5hbWVzKGJhc2UsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlKCkpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIA0KICAgICAgICANCiAgICAg
ICAgaW5kZXhlZExlbmd0aCA9IDA7DQogICAgICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
UHJvcGVydHlOYW1lcyhiYXNlLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSgpKTsNCiAgICB9DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSBy
ZXR1cm4gbnVsbHB0cjsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgKCh2b2lkKTApOw0KDQogICAg
Ym9vbCBzYXdQb2x5UHJvdG87DQogICAgYm9vbCBzdWNjZXNzZnVsbHlOb3JtYWxpemVkQ2hhaW4g
PSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGJhc2UsIHNhd1BvbHlQcm90
bykgIT0gKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOw0KDQogICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmVBZnRlckdldHRpbmdQcm9wZXJ0eU5hbWVzID0gYmFzZS0+c3RydWN0dXJl
KHZtKTsNCiAgICBlbnVtZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZUFmdGVyR2V0dGluZ1Byb3BlcnR5TmFtZXMsIGluZGV4ZWRMZW5ndGgsIG51
bWJlclN0cnVjdHVyZVByb3BlcnRpZXMsIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRl
cj4ocHJvcGVydHlOYW1lcykpOw0KICAgIGlmICghaW5kZXhlZExlbmd0aCAmJiBzdWNjZXNzZnVs
bHlOb3JtYWxpemVkQ2hhaW4gJiYgc3RydWN0dXJlQWZ0ZXJHZXR0aW5nUHJvcGVydHlOYW1lcyA9
PSBzdHJ1Y3R1cmUpIHsNCiAgICAgICAgZW51bWVyYXRvci0+c2V0Q2FjaGVkUHJvdG90eXBlQ2hh
aW4odm0sIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZ2xvYmFsT2JqZWN0LCBiYXNlKSk7DQog
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSkp
DQogICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3Io
dm0sIGVudW1lcmF0b3IpOw0KICAgIH0NCiAgICByZXR1cm4gZW51bWVyYXRvcjsNCn0NCg0KfSAN
CiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIg0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCmlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRQcmV2aW91c0lEKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQp7DQogICAgbV9wcmV2aW91cy5zZXQodm0sIHRo
aXMsIHN0cnVjdHVyZSk7DQp9DQoNCmlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpjbGVh
clByZXZpb3VzSUQoKQ0Kew0KICAgIG1fcHJldmlvdXMuY2xlYXIoKTsNCn0NCg0KaW5saW5lIEpT
U3RyaW5nKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2JqZWN0VG9TdHJpbmdWYWx1ZSgpIGNvbnN0DQp7
DQogICAgYXV0byogdmFsdWUgPSBtX29iamVjdFRvU3RyaW5nVmFsdWUudW52YWxpZGF0ZWRHZXQo
KTsNCiAgICBpZiAodmFsdWUgPT0gb2JqZWN0VG9TdHJpbmdDYWNoZUdpdmVVcE1hcmtlcigpKQ0K
ICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICBpZiAodmFsdWUpDQogICAgICAgIHZhbGlkYXRl
Q2VsbCh2YWx1ZSk7DQogICAgcmV0dXJuIHZhbHVlOw0KfQ0KDQppbmxpbmUgSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVy
YXRvcigpIGNvbnN0DQp7DQogICAgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5nZXQoKTsNCn0NCg0KaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFBy
b3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVu
dW1lcmF0b3IpDQp7DQogICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLnNldCh2bSwg
dGhpcywgZW51bWVyYXRvcik7DQp9DQoNCmlubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3Ry
dWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXMoKSBjb25zdA0Kew0KICAgICgodm9pZCkwKTsN
CiAgICBhdXRvKiBidXR0ZXJmbHkgPSBtX2NhY2hlZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsN
CiAgICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZE93bktleXNTZW50aW5lbCgpKQ0KICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsNCiAgICByZXR1cm4gYnV0dGVyZmx5Ow0KfQ0KDQppbmxpbmUgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzSWdub3JpbmdT
ZW50aW5lbCgpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBtX2NhY2hlZE93
bktleXMudW52YWxpZGF0ZWRHZXQoKTsNCn0NCg0KaW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5
KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpIGNvbnN0DQp7
DQogICAgYXV0byogYnV0dGVyZmx5ID0gbV9jYWNoZWRPd25LZXlzLnVudmFsaWRhdGVkR2V0KCk7
DQogICAgaWYgKGJ1dHRlcmZseSA9PSBjYWNoZWRPd25LZXlzU2VudGluZWwoKSkNCiAgICAgICAg
cmV0dXJuIG51bGxwdHI7DQogICAgcmV0dXJuIGJ1dHRlcmZseTsNCn0NCg0KaW5saW5lIHZvaWQg
U3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZE93bktleXMoVk0mIHZtLCBKU0ltbXV0YWJsZUJ1
dHRlcmZseSogYnV0dGVyZmx5KQ0Kew0KICAgIGlmIChidXR0ZXJmbHkgPT0gY2FjaGVkT3duS2V5
c1NlbnRpbmVsKCkpIHsNCiAgICAgICAgbV9jYWNoZWRPd25LZXlzLnNldFdpdGhvdXRXcml0ZUJh
cnJpZXIoYnV0dGVyZmx5KTsNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7DQogICAgbV9jYWNoZWRPd25LZXlzLnNldCh2bSwgdGhpcywgYnV0dGVy
Zmx5KTsNCn0NCg0KfSANCiNsaW5lIDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFN0cnVjdHVyZUlubGluZXMuaCINCg0KDQpuYW1l
c3BhY2UgSlNDIHsNCg0KaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
VHlwZUluZm8mIHR5cGVJbmZvLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdU
eXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5
KQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKGF1dG8qIG9iamVj
dCA9IHByb3RvdHlwZS5nZXRPYmplY3QoKSkgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IG9iamVjdC0+ZGlkQmVjb21lUHJvdG90eXBlKCk7DQogICAgfQ0KDQogICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXAp
KSBTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCB0eXBlSW5mbywgY2xhc3NJ
bmZvLCBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBpbmxpbmVDYXBhY2l0eSk7DQogICAg
c3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSk7DQogICAgcmV0dXJuIHN0cnVjdHVyZTsNCn0N
Cg0KaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQ0K
ew0KICAgICgodm9pZCkwKTsNCiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkpIFN0cnVjdHVyZSh2bSk7DQogICAg
c3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgQ3JlYXRpbmdFYXJseUNlbGwpOw0KICAgIHJl
dHVybiBzdHJ1Y3R1cmU7DQp9DQoNCmlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBwcmV2aW91cywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4o
dm0uaGVhcCkpIFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGRlZmVycmVkKTsNCiAgICBuZXdTdHJ1
Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBwcmV2aW91cyk7DQogICAgcmV0dXJuIG5ld1N0cnVj
dHVyZTsNCn0NCg0KaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMoKSBjb25zdA0Kew0KICAgIGlmIChpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkg
JiBNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycykNCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCg0KICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmpl
Y3QoKTsNCiAgICBpZiAoIWdsb2JhbE9iamVjdCkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKTsNCn0NCg0KaW5saW5lIEpT
T2JqZWN0KiBTdHJ1Y3R1cmU6OnN0b3JlZFByb3RvdHlwZU9iamVjdCgpIGNvbnN0DQp7DQogICAg
KCh2b2lkKTApOw0KICAgIEpTVmFsdWUgdmFsdWUgPSBtX3Byb3RvdHlwZS5nZXQoKTsNCiAgICBp
ZiAodmFsdWUuaXNOdWxsKCkpDQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIHJldHVybiBh
c09iamVjdCh2YWx1ZSk7DQp9DQoNCmlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6c3RvcmVk
UHJvdG90eXBlU3RydWN0dXJlKCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHN0b3JlZFByb3RvdHlwZU9iamVjdCgpOw0KICAgIGlmICghb2JqZWN0KQ0K
ICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICByZXR1cm4gb2JqZWN0LT5zdHJ1Y3R1cmUoKTsN
Cn0NCg0KX19mb3JjZWlubGluZSBKU1ZhbHVlIFN0cnVjdHVyZTo6c3RvcmVkUHJvdG90eXBlKGNv
bnN0IEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0KICAgIGlmICho
YXNNb25vUHJvdG8oKSkNCiAgICAgICAgcmV0dXJuIHN0b3JlZFByb3RvdHlwZSgpOw0KICAgIHJl
dHVybiBvYmplY3QtPmdldERpcmVjdChrbm93blBvbHlQcm90b09mZnNldCk7DQp9DQoNCl9fZm9y
Y2VpbmxpbmUgSlNPYmplY3QqIFN0cnVjdHVyZTo6c3RvcmVkUHJvdG90eXBlT2JqZWN0KGNvbnN0
IEpTT2JqZWN0KiBvYmplY3QpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0KICAgIGlmIChoYXNN
b25vUHJvdG8oKSkNCiAgICAgICAgcmV0dXJuIHN0b3JlZFByb3RvdHlwZU9iamVjdCgpOw0KICAg
IEpTVmFsdWUgcHJvdG8gPSBvYmplY3QtPmdldERpcmVjdChrbm93blBvbHlQcm90b09mZnNldCk7
DQogICAgaWYgKHByb3RvLmlzTnVsbCgpKQ0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICBy
ZXR1cm4gYXNPYmplY3QocHJvdG8pOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIFN0cnVjdHVyZSogU3Ry
dWN0dXJlOjpzdG9yZWRQcm90b3R5cGVTdHJ1Y3R1cmUoY29uc3QgSlNPYmplY3QqIG9iamVjdCkg
Y29uc3QNCnsNCiAgICBpZiAoSlNPYmplY3QqIHByb3RvID0gc3RvcmVkUHJvdG90eXBlT2JqZWN0
KG9iamVjdCkpDQogICAgICAgIHJldHVybiBwcm90by0+c3RydWN0dXJlKCk7DQogICAgcmV0dXJu
IG51bGxwdHI7DQp9DQoNCl9fZm9yY2VpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpn
ZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQ0Kew0KICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7DQogICAgcmV0dXJuIGdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsN
Cn0NCiAgICANCl9fZm9yY2VpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykNCnsN
CiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KDQogICAgaWYgKG1fc2VlblByb3BlcnRp
ZXMucnVsZU91dChiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihwcm9wZXJ0eU5hbWUudWlkKCkpKSkN
CiAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7DQoNCiAgICBQcm9wZXJ0eVRhYmxlKiBwcm9w
ZXJ0eVRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZUlmTm90RW1wdHkodm0pOw0KICAgIGlmICgh
cHJvcGVydHlUYWJsZSkNCiAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7DQoNCiAgICBQcm9w
ZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHByb3BlcnR5VGFibGUtPmdldChwcm9wZXJ0eU5hbWUudWlk
KCkpOw0KICAgIGlmICghZW50cnkpDQogICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0Ow0KDQog
ICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOw0KICAgIHJldHVybiBlbnRyeS0+b2Zm
c2V0Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0Kdm9pZCBTdHJ1Y3R1cmU6OmZv
ckVhY2hQcm9wZXJ0eUNvbmN1cnJlbnRseShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQ0Kew0KICAg
IFZlY3RvcjxTdHJ1Y3R1cmUqLCA4PiBzdHJ1Y3R1cmVzOw0KICAgIFN0cnVjdHVyZSogdGFibGVT
dHJ1Y3R1cmU7DQogICAgUHJvcGVydHlUYWJsZSogdGFibGU7DQogICAgDQogICAgZmluZFN0cnVj
dHVyZXNBbmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oc3RydWN0dXJlcywgdGFibGVTdHJ1Y3R1cmUs
IHRhYmxlKTsNCg0KICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiBzZWVuUHJvcGVydGll
czsNCg0KICAgIGZvciAoYXV0byogc3RydWN0dXJlIDogc3RydWN0dXJlcykgew0KICAgICAgICBp
ZiAoIXN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lIHx8IHNlZW5Qcm9wZXJ0aWVz
LmNvbnRhaW5zKHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKSkNCiAg
ICAgICAgICAgIGNvbnRpbnVlOw0KDQogICAgICAgIHNlZW5Qcm9wZXJ0aWVzLmFkZChzdHJ1Y3R1
cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSk7DQoNCiAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKQ0KICAgICAgICAgICAgY29udGlu
dWU7DQoNCiAgICAgICAgaWYgKCFmdW5jdG9yKFByb3BlcnR5TWFwRW50cnkoc3RydWN0dXJlLT5t
X3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNl
dCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSkpKSB7DQogICAg
ICAgICAgICBpZiAodGFibGUpDQogICAgICAgICAgICAgICAgdGFibGVTdHJ1Y3R1cmUtPm1fbG9j
ay51bmxvY2soKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAN
CiAgICBpZiAodGFibGUpIHsNCiAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICp0YWJsZSkgew0K
ICAgICAgICAgICAgaWYgKHNlZW5Qcm9wZXJ0aWVzLmNvbnRhaW5zKGVudHJ5LmtleSkpDQogICAg
ICAgICAgICAgICAgY29udGludWU7DQoNCiAgICAgICAgICAgIGlmICghZnVuY3RvcihlbnRyeSkp
IHsNCiAgICAgICAgICAgICAgICB0YWJsZVN0cnVjdHVyZS0+bV9sb2NrLnVubG9jaygpOw0KICAg
ICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICB0
YWJsZVN0cnVjdHVyZS0+bV9sb2NrLnVubG9jaygpOw0KICAgIH0NCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4NCnZvaWQgU3RydWN0dXJlOjpmb3JFYWNoUHJvcGVydHkoVk0mIHZtLCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQ0Kew0KICAgIGlmIChQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9
IGVuc3VyZVByb3BlcnR5VGFibGVJZk5vdEVtcHR5KHZtKSkgew0KICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogKnRhYmxlKSB7DQogICAgICAgICAgICBpZiAoIWZ1bmN0b3IoZW50cnkpKQ0KICAg
ICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KaW5saW5lIFByb3Bl
cnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpDQp7DQogICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7DQogICAgcmV0dXJuIGdldENv
bmN1cnJlbnRseSh1aWQsIGF0dHJpYnV0ZXNJZ25vcmVkKTsNCn0NCg0KaW5saW5lIGJvb2wgU3Ry
dWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwpIGNvbnN0DQp7DQog
ICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkNCiAgICAgICAgcmV0
dXJuIHRydWU7DQogICAgDQogICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5
cGUobV9ibG9iLnR5cGUoKSkpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICByZXR1cm4g
anNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0ZWZ1
bFR5cGVkQXJyYXk7DQp9DQoNCmlubGluZSBib29sIFN0cnVjdHVyZTo6bWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkNCnsNCiAgICByZXR1
cm4gdHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgJiYgZ2xvYmFsT2JqZWN0KCkg
PT0gbGV4aWNhbEdsb2JhbE9iamVjdDsNCn0NCg0KaW5saW5lIGJvb2wgU3RydWN0dXJlOjp0cmFu
c2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9tKFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKQ0Kew0K
ICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gdGhpczsgY3VycmVudDsgY3VycmVudCA9IGN1
cnJlbnQtPnByZXZpb3VzSUQoKSkgew0KICAgICAgICBpZiAoY3VycmVudCA9PSBzdHJ1Y3R1cmVU
b0ZpbmQpDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgcmV0dXJuIGZhbHNl
Ow0KfQ0KDQppbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMoVk0mIHZtLCBK
U0ltbXV0YWJsZUJ1dHRlcmZseSogb3duS2V5cykNCnsNCiAgICBlbnN1cmVSYXJlRGF0YSh2bSkt
PnNldENhY2hlZE93bktleXModm0sIG93bktleXMpOw0KfQ0KDQppbmxpbmUgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIFN0cnVjdHVyZTo6Y2FjaGVkT3duS2V5cygpIGNvbnN0DQp7DQogICAgaWYgKCFo
YXNSYXJlRGF0YSgpKQ0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICByZXR1cm4gcmFyZURh
dGEoKS0+Y2FjaGVkT3duS2V5cygpOw0KfQ0KDQppbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkq
IFN0cnVjdHVyZTo6Y2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25zdA0Kew0KICAg
IGlmICghaGFzUmFyZURhdGEoKSkNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgcmV0dXJu
IHJhcmVEYXRhKCktPmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsKCk7DQp9DQoNCmlubGlu
ZSBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVPd25LZXlzKCkgY29uc3QNCnsNCiAgICBpZiAoaXNE
aWN0aW9uYXJ5KCkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICBpZiAoaGFzSW5kZXhlZFBy
b3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgaWYg
KHR5cGVJbmZvKCkub3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lcygpKQ0KICAgICAg
ICByZXR1cm4gZmFsc2U7DQogICAgcmV0dXJuIHRydWU7DQp9DQoNCl9fZm9yY2VpbmxpbmUgSlNW
YWx1ZSBwcm90b3R5cGVGb3JMb29rdXBQcmltaXRpdmVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlKQ0Kew0KICAgICgodm9pZCkwKTsN
Cg0KICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGUpDQog
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPnN0cmluZ1Byb3RvdHlwZSgpOw0KICAgIA0KICAg
IGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKQ0KICAg
ICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5iaWdJbnRQcm90b3R5cGUoKTsNCg0KICAgICgodm9p
ZCkwKTsNCiAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5zeW1ib2xQcm90b3R5cGUoKTsNCn0NCg0K
aW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKGlzT2Jq
ZWN0KCkpDQogICAgICAgIHJldHVybiBzdG9yZWRQcm90b3R5cGUoKTsNCiAgICByZXR1cm4gcHJv
dG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChnbG9iYWxPYmplY3QsIHRoaXMpOw0KfQ0KDQpp
bmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UpIGNvbnN0DQp7DQogICAgKCh2b2lkKTApOw0K
ICAgIGlmIChpc09iamVjdCgpKQ0KICAgICAgICByZXR1cm4gc3RvcmVkUHJvdG90eXBlKGFzT2Jq
ZWN0KGJhc2UpKTsNCiAgICByZXR1cm4gcHJvdG90eXBlRm9yTG9va3VwUHJpbWl0aXZlSW1wbChn
bG9iYWxPYmplY3QsIHRoaXMpOw0KfQ0KDQppbmxpbmUgU3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVy
ZTo6cHJvdG90eXBlQ2hhaW4oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U09iamVjdCogYmFzZSkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgDQogICAgaWYgKCFp
c1ZhbGlkKGdsb2JhbE9iamVjdCwgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSwgYmFzZSkp
IHsNCiAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFs
T2JqZWN0LCBiYXNlKTsNCiAgICAgICAgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXQodm0sIHRo
aXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGUodm0sIHByb3RvdHlwZS5pc051bGwoKSA/IG51bGxw
dHIgOiBhc09iamVjdChwcm90b3R5cGUpKSk7DQogICAgfQ0KICAgIHJldHVybiBtX2NhY2hlZFBy
b3RvdHlwZUNoYWluLmdldCgpOw0KfQ0KDQppbmxpbmUgU3RydWN0dXJlQ2hhaW4qIFN0cnVjdHVy
ZTo6cHJvdG90eXBlQ2hhaW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGJhc2UpIGNvbnN0DQp7DQogICAgcmV0dXJuIHByb3RvdHlwZUNoYWluKGdsb2JhbE9iamVjdC0+
dm0oKSwgZ2xvYmFsT2JqZWN0LCBiYXNlKTsNCn0NCg0KaW5saW5lIGJvb2wgU3RydWN0dXJlOjpp
c1ZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZUNoYWluKiBjYWNo
ZWRQcm90b3R5cGVDaGFpbiwgSlNPYmplY3QqIGJhc2UpIGNvbnN0DQp7DQogICAgaWYgKCFjYWNo
ZWRQcm90b3R5cGVDaGFpbikNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOw0KICAgIEpTVmFsdWUgcHJvdG90eXBlID0gcHJvdG90eXBlRm9y
TG9va3VwKGdsb2JhbE9iamVjdCwgYmFzZSk7DQogICAgU3RydWN0dXJlSUQqIGNhY2hlZFN0cnVj
dHVyZSA9IGNhY2hlZFByb3RvdHlwZUNoYWluLT5oZWFkKCk7DQogICAgd2hpbGUgKCpjYWNoZWRT
dHJ1Y3R1cmUgJiYgIXByb3RvdHlwZS5pc051bGwoKSkgew0KICAgICAgICBpZiAoYXNPYmplY3Qo
cHJvdG90eXBlKS0+c3RydWN0dXJlSUQoKSAhPSAqY2FjaGVkU3RydWN0dXJlKQ0KICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICArK2NhY2hlZFN0cnVjdHVyZTsNCiAgICAgICAgcHJv
dG90eXBlID0gYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsNCiAg
ICB9DQogICAgcmV0dXJuIHByb3RvdHlwZS5pc051bGwoKSAmJiAhKmNhY2hlZFN0cnVjdHVyZTsN
Cn0NCg0KaW5saW5lIHZvaWQgU3RydWN0dXJlOjpkaWRSZXBsYWNlUHJvcGVydHkoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQ0Kew0KICAgIGlmICgoIWhhc1JhcmVEYXRhKCkpKQ0KICAgICAgICByZXR1
cm47DQogICAgU3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcCogbWFwID0g
cmFyZURhdGEoKS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLmdldCgpOw0KICAgIGlmICgo
IW1hcCkpDQogICAgICAgIHJldHVybjsNCiAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBtYXAtPmdl
dChvZmZzZXQpOw0KICAgIGlmICgoIXNldCkpDQogICAgICAgIHJldHVybjsNCiAgICBzZXQtPmZp
cmVBbGwodm0oKSwgIlByb3BlcnR5IGRpZCBnZXQgcmVwbGFjZWQiKTsNCn0NCg0KaW5saW5lIFdh
dGNocG9pbnRTZXQqIFN0cnVjdHVyZTo6cHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQ0Kew0KICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsNCiAgICBpZiAoIWhhc1JhcmVEYXRhKCkpDQogICAgICAgIHJldHVybiBudWxscHRy
Ow0KICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOw0KICAgIFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9w
ZXJ0eVdhdGNocG9pbnRNYXAqIG1hcCA9IHJhcmVEYXRhKCktPm1fcmVwbGFjZW1lbnRXYXRjaHBv
aW50U2V0cy5nZXQoKTsNCiAgICBpZiAoIW1hcCkNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQog
ICAgcmV0dXJuIG1hcC0+Z2V0KG9mZnNldCk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIERldGFp
bHNGdW5jPg0KX19mb3JjZWlubGluZSBib29sIFN0cnVjdHVyZTo6Y2hlY2tPZmZzZXRDb25zaXN0
ZW5jeShQcm9wZXJ0eVRhYmxlKiBwcm9wZXJ0eVRhYmxlLCBjb25zdCBEZXRhaWxzRnVuYyYgZGV0
YWlsc0Z1bmMpIGNvbnN0DQp7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgaWYgKGlzQ29t
cGlsYXRpb25UaHJlYWQoKSkNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgDQogICAgdW5zaWdu
ZWQgdG90YWxTaXplID0gcHJvcGVydHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOw0KICAg
IHVuc2lnbmVkIGlubGluZU92ZXJmbG93QWNjb3JkaW5nVG9Ub3RhbFNpemUgPSB0b3RhbFNpemUg
PCBtX2lubGluZUNhcGFjaXR5ID8gMCA6IHRvdGFsU2l6ZSAtIG1faW5saW5lQ2FwYWNpdHk7DQoN
CiAgICBhdXRvIGZhaWwgPSBbJl0gKGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKSB7DQogICAgICAg
IGRhdGFMb2coIkRldGVjdGVkIG9mZnNldCBpbmNvbnNpc3RlbmN5OiAiLCBkZXNjcmlwdGlvbiwg
IiFcbiIpOw0KICAgICAgICBkYXRhTG9nKCJ0aGlzID0gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxu
Iik7DQogICAgICAgIGRhdGFMb2coInRyYW5zaXRpb25PZmZzZXQgPSAiLCB0cmFuc2l0aW9uT2Zm
c2V0KCksICJcbiIpOw0KICAgICAgICBkYXRhTG9nKCJtYXhPZmZzZXQgPSAiLCBtYXhPZmZzZXQo
KSwgIlxuIik7DQogICAgICAgIGRhdGFMb2coIm1faW5saW5lQ2FwYWNpdHkgPSAiLCBtX2lubGlu
ZUNhcGFjaXR5LCAiXG4iKTsNCiAgICAgICAgZGF0YUxvZygicHJvcGVydHlUYWJsZSA9ICIsIFJh
d1BvaW50ZXIocHJvcGVydHlUYWJsZSksICJcbiIpOw0KICAgICAgICBkYXRhTG9nKCJudW1iZXJP
ZlNsb3RzRm9yTWF4T2Zmc2V0ID0gIiwgbnVtYmVyT2ZTbG90c0Zvck1heE9mZnNldChtYXhPZmZz
ZXQoKSwgbV9pbmxpbmVDYXBhY2l0eSksICJcbiIpOw0KICAgICAgICBkYXRhTG9nKCJ0b3RhbFNp
emUgPSAiLCB0b3RhbFNpemUsICJcbiIpOw0KICAgICAgICBkYXRhTG9nKCJpbmxpbmVPdmVyZmxv
d0FjY29yZGluZ1RvVG90YWxTaXplID0gIiwgaW5saW5lT3ZlcmZsb3dBY2NvcmRpbmdUb1RvdGFs
U2l6ZSwgIlxuIik7DQogICAgICAgIGRhdGFMb2coIm51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JN
YXhPZmZzZXQgPSAiLCBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTWF4T2Zmc2V0KG1heE9mZnNl
dCgpKSwgIlxuIik7DQogICAgICAgIGRldGFpbHNGdW5jKCk7DQogICAgICAgIGRvIHsgV1RGOjpp
c0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jh
c2hXaXRoSW5mbygzODgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXFN0cnVjdHVyZUlubGluZXMuaCIsICBfX0ZVTkNUSU9OX18gICwg
MTQ3ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9Ow0KICAgIA0KICAgIGlmIChudW1iZXJPZlNs
b3RzRm9yTWF4T2Zmc2V0KG1heE9mZnNldCgpLCBtX2lubGluZUNhcGFjaXR5KSAhPSB0b3RhbFNp
emUpDQogICAgICAgIGZhaWwoIm51bWJlck9mU2xvdHNGb3JNYXhPZmZzZXQgZG9lc24ndCBtYXRj
aCB0b3RhbFNpemUiKTsNCiAgICBpZiAoaW5saW5lT3ZlcmZsb3dBY2NvcmRpbmdUb1RvdGFsU2l6
ZSAhPSBudW1iZXJPZk91dE9mTGluZVNsb3RzRm9yTWF4T2Zmc2V0KG1heE9mZnNldCgpKSkNCiAg
ICAgICAgZmFpbCgiaW5saW5lT3ZlcmZsb3dBY2NvcmRpbmdUb1RvdGFsU2l6ZSBkb2Vzbid0IG1h
dGNoIG51bWJlck9mT3V0T2ZMaW5lU2xvdHNGb3JNYXhPZmZzZXQiKTsNCg0KICAgIHJldHVybiB0
cnVlOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgU3RydWN0dXJlOjpjaGVja09mZnNldENvbnNp
c3RlbmN5KCkgY29uc3QNCnsNCiAgICBQcm9wZXJ0eVRhYmxlKiBwcm9wZXJ0eVRhYmxlID0gcHJv
cGVydHlUYWJsZU9yTnVsbCgpOw0KDQogICAgaWYgKCFwcm9wZXJ0eVRhYmxlKSB7DQogICAgICAg
ICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgaWYgKGlzQ29tcGlsYXRpb25UaHJlYWQoKSkNCiAgICAgICAgcmV0dXJu
IHRydWU7DQoNCiAgICByZXR1cm4gY2hlY2tPZmZzZXRDb25zaXN0ZW5jeShwcm9wZXJ0eVRhYmxl
LCBbXSAoKSB7IH0pOw0KfQ0KDQppbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OmNoZWNrQ29uc2lzdGVu
Y3koKQ0Kew0KICAgIGNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsNCn0NCg0KaW5saW5lIHNpemVf
dCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBjdXJyZW50Q2FwYWNpdHkpDQp7
DQogICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpDQogICAgICAgIHJldHVybiBpbml0aWFsT3V0T2ZM
aW5lQ2FwYWNpdHk7DQogICAgcmV0dXJuIGN1cnJlbnRDYXBhY2l0eSAqIG91dE9mTGluZUdyb3d0
aEZhY3RvcjsNCn0NCg0KaW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRPYmplY3RUb1N0cmluZ1Zh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNTdHJpbmcqIHZhbHVl
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHRvU3RyaW5nVGFnU3ltYm9sU2xvdCkNCnsNCiAgICBpZiAo
IWhhc1JhcmVEYXRhKCkpDQogICAgICAgIGFsbG9jYXRlUmFyZURhdGEodm0pOw0KICAgIHJhcmVE
YXRhKCktPnNldE9iamVjdFRvU3RyaW5nVmFsdWUoZ2xvYmFsT2JqZWN0LCB2bSwgdGhpcywgdmFs
dWUsIHRvU3RyaW5nVGFnU3ltYm9sU2xvdCk7DQp9DQoNCnRlbXBsYXRlPFN0cnVjdHVyZTo6U2hv
dWxkUGluIHNob3VsZFBpbiwgdHlwZW5hbWUgRnVuYz4NCmlubGluZSBQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OmFkZChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMmIGZ1bmMpDQp7DQogICAgUHJvcGVydHlUYWJsZSogdGFi
bGUgPSBlbnN1cmVQcm9wZXJ0eVRhYmxlKHZtKTsNCg0KICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrLCB2bS5oZWFwKTsNCg0KICAgIHN3aXRjaCAoc2hvdWxkUGluKSB7
DQogICAgY2FzZSBTaG91bGRQaW46OlllczoNCiAgICAgICAgcGluKGxvY2tlciwgdm0sIHRhYmxl
KTsNCiAgICAgICAgYnJlYWs7DQogICAgY2FzZSBTaG91bGRQaW46Ok5vOg0KICAgICAgICBzZXRQ
cm9wZXJ0eVRhYmxlKHZtLCB0YWJsZSk7DQogICAgICAgIGJyZWFrOw0KICAgIH0NCiAgICANCiAg
ICAoKHZvaWQpMCk7DQoNCiAgICBjaGVja0NvbnNpc3RlbmN5KCk7DQogICAgaWYgKGF0dHJpYnV0
ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfHwgcHJvcGVydHlOYW1lLmlzU3ltYm9s
KCkpDQogICAgICAgIHNldElzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlv
bihmYWxzZSk7DQogICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRl
cnNjb3JlUHJvdG8pDQogICAgICAgIHNldEhhc1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVk
aW5nT3JpZ2luYWxQcm90byh0cnVlKTsNCg0KICAgIGF1dG8gcmVwID0gcHJvcGVydHlOYW1lLnVp
ZCgpOw0KDQogICAgUHJvcGVydHlPZmZzZXQgbmV3T2Zmc2V0ID0gdGFibGUtPm5leHRPZmZzZXQo
bV9pbmxpbmVDYXBhY2l0eSk7DQoNCiAgICBtX3Byb3BlcnR5SGFzaCA9IG1fcHJvcGVydHlIYXNo
IF4gcmVwLT5leGlzdGluZ1N5bWJvbEF3YXJlSGFzaCgpOw0KICAgIG1fc2VlblByb3BlcnRpZXMu
YWRkKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHJlcCkpOw0KDQogICAgYXV0byByZXN1bHQgPSB0
YWJsZS0+YWRkKHZtLCBQcm9wZXJ0eU1hcEVudHJ5KHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVz
KSk7DQogICAgKCh2b2lkKXJlc3VsdCk7DQogICAgKCh2b2lkKXJlc3VsdCk7DQogICAgYXV0byBu
ZXdNYXhPZmZzZXQgPSBzdGQ6Om1heChuZXdPZmZzZXQsIG1heE9mZnNldCgpKTsNCiAgICANCiAg
ICBmdW5jKGxvY2tlciwgbmV3T2Zmc2V0LCBuZXdNYXhPZmZzZXQpOw0KICAgIA0KICAgICgodm9p
ZCkwKTsNCg0KICAgIGNoZWNrQ29uc2lzdGVuY3koKTsNCiAgICByZXR1cm4gbmV3T2Zmc2V0Ow0K
fQ0KDQp0ZW1wbGF0ZTxTdHJ1Y3R1cmU6OlNob3VsZFBpbiBzaG91bGRQaW4sIHR5cGVuYW1lIEZ1
bmM+DQppbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBGdW5jJiBmdW5jKQ0Kew0KICAgIFByb3BlcnR5
VGFibGUqIHRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZSh2bSk7DQogICAgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2ssIHZtLmhlYXApOw0KDQogICAgc3dpdGNoIChzaG91
bGRQaW4pIHsNCiAgICBjYXNlIFNob3VsZFBpbjo6WWVzOg0KICAgICAgICBwaW4obG9ja2VyLCB2
bSwgdGFibGUpOw0KICAgICAgICBicmVhazsNCiAgICBjYXNlIFNob3VsZFBpbjo6Tm86DQogICAg
ICAgIHNldFByb3BlcnR5VGFibGUodm0sIHRhYmxlKTsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0K
DQogICAgKCh2b2lkKTApOw0KDQogICAgY2hlY2tDb25zaXN0ZW5jeSgpOw0KDQogICAgYXV0byBy
ZXAgPSBwcm9wZXJ0eU5hbWUudWlkKCk7DQoNCiAgICBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJh
dG9yIHBvc2l0aW9uID0gdGFibGUtPmZpbmQocmVwKTsNCiAgICBpZiAoIXBvc2l0aW9uLmZpcnN0
KQ0KICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsNCg0KICAgIHNldElzUXVpY2tQcm9wZXJ0
eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbihmYWxzZSk7DQogICAgDQogICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gcG9zaXRpb24uZmlyc3QtPm9mZnNldDsNCg0KICAgIHRhYmxlLT5yZW1v
dmUodm0sIHBvc2l0aW9uKTsNCiAgICB0YWJsZS0+YWRkRGVsZXRlZE9mZnNldChvZmZzZXQpOw0K
DQogICAgUHJvcGVydHlPZmZzZXQgbmV3TWF4T2Zmc2V0ID0gbWF4T2Zmc2V0KCk7DQoNCiAgICBm
dW5jKGxvY2tlciwgb2Zmc2V0LCBuZXdNYXhPZmZzZXQpOw0KDQogICAgKCh2b2lkKTApOw0KICAg
ICgodm9pZCkwKTsNCg0KICAgIGNoZWNrQ29uc2lzdGVuY3koKTsNCiAgICByZXR1cm4gb2Zmc2V0
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0KaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMmIGZ1bmMpDQp7
DQogICAgcmV0dXJuIGFkZDxTaG91bGRQaW46Olllcz4odm0sIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgZnVuYyk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQppbmxpbmUgUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgRnVuYyYgZnVuYykNCnsNCiAgICAo
KHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICANCiAgICByZXR1
cm4gcmVtb3ZlPFNob3VsZFBpbjo6WWVzPih2bSwgcHJvcGVydHlOYW1lLCBmdW5jKTsNCn0NCg0K
X19mb3JjZWlubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRp
b24oVk0mIHZtLCBKU1ZhbHVlIHByb3RvdHlwZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgbV9w
cm90b3R5cGUuc2V0KHZtLCB0aGlzLCBwcm90b3R5cGUpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIHZv
aWQgU3RydWN0dXJlOjpzZXRHbG9iYWxPYmplY3QoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQ0Kew0KICAgIG1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgdGhpcywgZ2xvYmFsT2Jq
ZWN0KTsNCn0NCg0KX19mb3JjZWlubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0UHJvcGVydHlUYWJs
ZShWTSYgdm0sIFByb3BlcnR5VGFibGUqIHRhYmxlKQ0Kew0KICAgIG1fcHJvcGVydHlUYWJsZVVu
c2FmZS5zZXRNYXlCZU51bGwodm0sIHRoaXMsIHRhYmxlKTsNCn0NCg0KX19mb3JjZWlubGluZSB2
b2lkIFN0cnVjdHVyZTo6c2V0UHJldmlvdXNJRChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQ0Kew0KICAgIGlmIChoYXNSYXJlRGF0YSgpKQ0KICAgICAgICByYXJlRGF0YSgpLT5zZXRQcmV2
aW91c0lEKHZtLCBzdHJ1Y3R1cmUpOw0KICAgIGVsc2UNCiAgICAgICAgbV9wcmV2aW91c09yUmFy
ZURhdGEuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOw0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wg
U3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oY29uc3QgU3RydWN0dXJlKiBhLCBj
b25zdCBTdHJ1Y3R1cmUqIGIpDQp7DQogICAgaWYgKCFhIHx8ICFiKQ0KICAgICAgICByZXR1cm4g
ZmFsc2U7DQoNCiAgICBpZiAoYSA9PSBiKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICBp
ZiAoYS0+cHJvcGVydHlIYXNoKCkgIT0gYi0+cHJvcGVydHlIYXNoKCkpDQogICAgICAgIHJldHVy
biBmYWxzZTsNCg0KICAgIA0KICAgIA0KICAgIGlmICghYS0+aGFzUmFyZURhdGEoKSB8fCAhYi0+
aGFzUmFyZURhdGEoKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgDQogICAgDQogICAg
Y29uc3QgQm94PElubGluZVdhdGNocG9pbnRTZXQ+JiBhSW5saW5lV2F0Y2hwb2ludFNldCA9IGEt
PnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKTsNCiAgICBjb25zdCBCb3g8
SW5saW5lV2F0Y2hwb2ludFNldD4mIGJJbmxpbmVXYXRjaHBvaW50U2V0ID0gYi0+cmFyZURhdGEo
KS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpOw0KICAgIGlmIChhSW5saW5lV2F0Y2hwb2lu
dFNldC5nZXQoKSAhPSBiSW5saW5lV2F0Y2hwb2ludFNldC5nZXQoKSB8fCAhYUlubGluZVdhdGNo
cG9pbnRTZXQpDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBp
ZiAoYS0+aGFzUG9seVByb3RvKCkgfHwgYi0+aGFzUG9seVByb3RvKCkpDQogICAgICAgIHJldHVy
biBmYWxzZTsNCg0KICAgIGlmIChhLT5zdG9yZWRQcm90b3R5cGUoKSA9PSBiLT5zdG9yZWRQcm90
b3R5cGUoKSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgVk0mIHZtID0gYS0+dm0oKTsN
CiAgICBKU09iamVjdCogYU9iaiA9IGEtPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpOw0KICAgIEpT
T2JqZWN0KiBiT2JqID0gYi0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCk7DQogICAgd2hpbGUgKGFP
YmogJiYgYk9iaikgew0KICAgICAgICBhID0gYU9iai0+c3RydWN0dXJlKHZtKTsNCiAgICAgICAg
YiA9IGJPYmotPnN0cnVjdHVyZSh2bSk7DQoNCiAgICAgICAgaWYgKGEtPnByb3BlcnR5SGFzaCgp
ICE9IGItPnByb3BlcnR5SGFzaCgpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAg
ICAgIGFPYmogPSBhLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoYU9iaik7DQogICAgICAgIGJPYmog
PSBiLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoYk9iaik7DQogICAgfQ0KDQogICAgcmV0dXJuICFh
T2JqICYmICFiT2JqOw0KfQ0KDQppbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3Bl
cnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOb25Qcm9wZXJ0eVRy
YW5zaXRpb24gdHJhbnNpdGlvbktpbmQpDQp7DQogICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nTW9k
ZUluY2x1ZGluZ0hpc3RvcnkgPSBuZXdJbmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ01v
ZGVJbmNsdWRpbmdIaXN0b3J5KCksIHRyYW5zaXRpb25LaW5kKTsNCg0KICAgIGlmIChjaGFuZ2Vz
SW5kZXhpbmdUeXBlKHRyYW5zaXRpb25LaW5kKSkgew0KICAgICAgICBpZiAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZS0+bV9nbG9iYWxPYmplY3QuZ2V0KCkpIHsNCiAg
ICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1
Y3R1cmUpKSB7DQogICAgICAgICAgICAgICAgU3RydWN0dXJlKiByZXN1bHQgPSBnbG9iYWxPYmpl
Y3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoaW5kZXhpbmdNb2RlSW5j
bHVkaW5nSGlzdG9yeSk7DQogICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+aW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeSgpID09IGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpIHsNCiAg
ICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5kaWRUcmFuc2l0aW9uRnJvbVRoaXNTdHJ1Y3R1
cmUoKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gbm9uUHJv
cGVydHlUcmFuc2l0aW9uU2xvdyh2bSwgc3RydWN0dXJlLCB0cmFuc2l0aW9uS2luZCk7DQp9DQoN
Cn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxBcnJheVN0b3JhZ2VJbmxpbmVzLmgiDQoNCm5hbWVzcGFjZSBKU0Mg
ew0KDQppbmxpbmUgdW5zaWduZWQgQXJyYXlTdG9yYWdlOjphdmFpbGFibGVWZWN0b3JMZW5ndGgo
dW5zaWduZWQgaW5kZXhCaWFzLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgdmVjdG9y
TGVuZ3RoKQ0Kew0KICAgIHJldHVybiBhdmFpbGFibGVWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHZlY3Rvckxlbmd0aCk7DQp9DQoNCmlubGlu
ZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6OmF2YWlsYWJsZVZlY3Rvckxlbmd0aChzaXplX3QgcHJv
cGVydHlDYXBhY2l0eSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQ0Kew0KICAgIHJldHVybiBhdmFp
bGFibGVWZWN0b3JMZW5ndGgobV9pbmRleEJpYXMsIHByb3BlcnR5Q2FwYWNpdHksIHZlY3Rvckxl
bmd0aCk7DQp9DQoNCmlubGluZSB1bnNpZ25lZCBBcnJheVN0b3JhZ2U6OmF2YWlsYWJsZVZlY3Rv
ckxlbmd0aChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQ0Kew0K
ICAgIHJldHVybiBhdmFpbGFibGVWZWN0b3JMZW5ndGgoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCB2ZWN0b3JMZW5ndGgpOw0KfQ0KDQppbmxpbmUgdW5zaWduZWQgQXJyYXlTdG9yYWdl
OjpvcHRpbWFsVmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGluZGV4Qmlhcywgc2l6ZV90IHByb3BlcnR5
Q2FwYWNpdHksIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkNCnsNCiAgICB2ZWN0b3JMZW5ndGggPSBz
dGQ6Om1heCg0VSwgdmVjdG9yTGVuZ3RoKTsNCiAgICByZXR1cm4gYXZhaWxhYmxlVmVjdG9yTGVu
Z3RoKGluZGV4QmlhcywgcHJvcGVydHlDYXBhY2l0eSwgdmVjdG9yTGVuZ3RoKTsNCn0NCg0KaW5s
aW5lIHVuc2lnbmVkIEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aCh1bnNpZ25lZCBp
bmRleEJpYXMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpDQp7
DQogICAgcmV0dXJuIG9wdGltYWxWZWN0b3JMZW5ndGgoaW5kZXhCaWFzLCBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCksIHZlY3Rvckxlbmd0aCk7DQp9DQoNCmlubGluZSB1bnNpZ25lZCBB
cnJheVN0b3JhZ2U6Om9wdGltYWxWZWN0b3JMZW5ndGgoc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHks
IHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkNCnsNCiAgICByZXR1cm4gb3B0aW1hbFZlY3Rvckxlbmd0
aChtX2luZGV4QmlhcywgcHJvcGVydHlDYXBhY2l0eSwgdmVjdG9yTGVuZ3RoKTsNCn0NCg0KaW5s
aW5lIHVuc2lnbmVkIEFycmF5U3RvcmFnZTo6b3B0aW1hbFZlY3Rvckxlbmd0aChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQ0Kew0KICAgIHJldHVybiBvcHRpbWFs
VmVjdG9yTGVuZ3RoKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdmVjdG9yTGVuZ3Ro
KTsNCn0NCg0KaW5saW5lIHNpemVfdCBBcnJheVN0b3JhZ2U6OnRvdGFsU2l6ZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3QNCnsNCiAgICByZXR1cm4gdG90YWxTaXplKHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSk7DQp9DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxCdXR0ZXJmbHlJbmxpbmVz
LmgiDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQpj
b25zdCB0eXBlbmFtZSBDb250aWd1b3VzRGF0YTxUPjo6RGF0YSBDb250aWd1b3VzRGF0YTxUPjo6
YXQoY29uc3QgSlNDZWxsKiBvd25lciwgc2l6ZV90IGluZGV4KSBjb25zdA0Kew0KICAgICgodm9p
ZCkwKTsNCiAgICByZXR1cm4gRGF0YShtX2RhdGFbaW5kZXhdLCBvd25lci0+aW5kZXhpbmdNb2Rl
KCkpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0KdHlwZW5hbWUgQ29udGlndW91c0RhdGE8
VD46OkRhdGEgQ29udGlndW91c0RhdGE8VD46OmF0KGNvbnN0IEpTQ2VsbCogb3duZXIsIHNpemVf
dCBpbmRleCkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIERhdGEobV9kYXRhW2luZGV4
XSwgb3duZXItPmluZGV4aW5nTW9kZSgpKTsNCn0NCg0KX19mb3JjZWlubGluZSB1bnNpZ25lZCBC
dXR0ZXJmbHk6OmF2YWlsYWJsZUNvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc2l6ZV90IHByb3BlcnR5
Q2FwYWNpdHksIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkNCnsNCiAgICBzaXplX3QgY2VsbFNpemUg
PSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSAqIHZlY3Rvckxlbmd0aCk7DQogICAgY2VsbFNpemUgPSBNYXJrZWRTcGFjZTo6b3B0aW1h
bFNpemVGb3IoY2VsbFNpemUpOw0KICAgIHZlY3Rvckxlbmd0aCA9IChjZWxsU2l6ZSAtIHRvdGFs
U2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCAwKSkgLyBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpOw0KICAgIHJldHVybiB2ZWN0b3JMZW5ndGg7DQp9DQoNCl9fZm9yY2VpbmxpbmUgdW5zaWdu
ZWQgQnV0dGVyZmx5OjphdmFpbGFibGVDb250aWd1b3VzVmVjdG9yTGVuZ3RoKFN0cnVjdHVyZSog
c3RydWN0dXJlLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpDQp7DQogICAgcmV0dXJuIGF2YWlsYWJs
ZUNvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlID8gc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpIDogMCwgdmVjdG9yTGVuZ3RoKTsNCn0NCg0KX19mb3JjZWlubGluZSB1bnNpZ25l
ZCBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHNpemVfdCBwcm9wZXJ0
eUNhcGFjaXR5LCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpDQp7DQogICAgaWYgKCF2ZWN0b3JMZW5n
dGgpDQogICAgICAgIHZlY3Rvckxlbmd0aCA9IDVVOw0KICAgIGVsc2UNCiAgICAgICAgdmVjdG9y
TGVuZ3RoID0gc3RkOjptYXgoM1UsIHZlY3Rvckxlbmd0aCk7DQogICAgcmV0dXJuIGF2YWlsYWJs
ZUNvbnRpZ3VvdXNWZWN0b3JMZW5ndGgocHJvcGVydHlDYXBhY2l0eSwgdmVjdG9yTGVuZ3RoKTsN
Cn0NCg0KX19mb3JjZWlubGluZSB1bnNpZ25lZCBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3Vz
VmVjdG9yTGVuZ3RoKFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgp
DQp7DQogICAgcmV0dXJuIG9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZSA/
IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA6IDAsIHZlY3Rvckxlbmd0aCk7DQp9DQoN
CmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChWTSYg
dm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0
eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0KQ0Kew0KICAgIHNpemVfdCBz
aXplID0gdG90YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGlu
Z0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOw0KICAgIHZvaWQqIGJhc2UgPSB2
bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNp
emUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsN
CiAgICBpZiAoKCFiYXNlKSkNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQoNCiAgICBCdXR0ZXJm
bHkqIHJlc3VsdCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5
KTsNCg0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZs
eTo6Y3JlYXRlVW5pbml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFj
aXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6
ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQ0Kew0KICAgIHNpemVfdCBzaXplID0gdG90
YWxTaXplKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwg
aW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOw0KICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVl
R2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIHNpemUsIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsNCiAgICBCdXR0ZXJmbHkqIHJlc3Vs
dCA9IGZyb21CYXNlKGJhc2UsIHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KTsNCg0KICAg
IHJldHVybiByZXN1bHQ7DQp9DQoNCmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6dHJ5Q3Jl
YXRlKFZNJiB2bSwgSlNPYmplY3QqLCBzaXplX3QgcHJlQ2FwYWNpdHksIHNpemVfdCBwcm9wZXJ0
eUNhcGFjaXR5LCBib29sIGhhc0luZGV4aW5nSGVhZGVyLCBjb25zdCBJbmRleGluZ0hlYWRlciYg
aW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcykNCnsNCiAg
ICBzaXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwg
aGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsNCiAgICB2b2lk
KiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0
dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwp
Ow0KICAgIGlmICghYmFzZSkNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgQnV0dGVyZmx5
KiByZXN1bHQgPSBmcm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7
DQogICAgaWYgKGhhc0luZGV4aW5nSGVhZGVyKQ0KICAgICAgICAqcmVzdWx0LT5pbmRleGluZ0hl
YWRlcigpID0gaW5kZXhpbmdIZWFkZXI7DQogICAgZ2NTYWZlWmVyb01lbW9yeShyZXN1bHQtPnBy
b3BlcnR5U3RvcmFnZSgpIC0gcHJvcGVydHlDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCmlubGluZSBC
dXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqIGludGVuZGVkT3du
ZXIsIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFz
SW5kZXhpbmdIZWFkZXIsIGNvbnN0IEluZGV4aW5nSGVhZGVyJiBpbmRleGluZ0hlYWRlciwgc2l6
ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQ0Kew0KICAgIEJ1dHRlcmZseSogcmVzdWx0
ID0gdHJ5Q3JlYXRlKHZtLCBpbnRlbmRlZE93bmVyLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBh
Y2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRT
aXplSW5CeXRlcyk7DQoNCiAgICBkbyB7IGlmICgoIShyZXN1bHQpKSkgZG8geyBXVEY6OmlzSW50
ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdp
dGhJbmZvKDExNSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcQnV0dGVyZmx5SW5saW5lcy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxNDgg
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0K
DQppbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZShWTSYgdm0sIEpTT2JqZWN0KiBp
bnRlbmRlZE93bmVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCnsNCiAgICByZXR1cm4gY3JlYXRl
KA0KICAgICAgICB2bSwgaW50ZW5kZWRPd25lciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLA0KICAgICAgICBzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKGludGVuZGVkT3du
ZXIpLCBJbmRleGluZ0hlYWRlcigpLCAwKTsNCn0NCg0KaW5saW5lIHZvaWQqIEJ1dHRlcmZseTo6
YmFzZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCnsNCiAgICByZXR1cm4gYmFzZShpbmRleGluZ0hl
YWRlcigpLT5wcmVDYXBhY2l0eShzdHJ1Y3R1cmUpLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpOw0KfQ0KDQppbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd1By
b3BlcnR5U3RvcmFnZSgNCiAgICBCdXR0ZXJmbHkqIG9sZEJ1dHRlcmZseSwgVk0mIHZtLCBKU09i
amVjdCogaW50ZW5kZWRPd25lciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBvbGRQcm9w
ZXJ0eUNhcGFjaXR5LCBzaXplX3QgbmV3UHJvcGVydHlDYXBhY2l0eSkNCnsNCiAgICBkbyB7IGlm
ICgoIShuZXdQcm9wZXJ0eUNhcGFjaXR5ID4gb2xkUHJvcGVydHlDYXBhY2l0eSkpKSBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oMTM0LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxCdXR0ZXJmbHlJbmxpbmVzLmgiLCAgX19GVU5DVElPTl9f
ICAsIDE0OSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgIGlmICghb2xkQnV0
dGVyZmx5KQ0KICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBpbnRlbmRlZE93bmVyLCAwLCBuZXdQ
cm9wZXJ0eUNhcGFjaXR5LCBmYWxzZSwgSW5kZXhpbmdIZWFkZXIoKSwgMCk7DQoNCiAgICBzaXpl
X3QgcHJlQ2FwYWNpdHkgPSBvbGRCdXR0ZXJmbHktPmluZGV4aW5nSGVhZGVyKCktPnByZUNhcGFj
aXR5KHN0cnVjdHVyZSk7DQogICAgc2l6ZV90IGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzID0g
b2xkQnV0dGVyZmx5LT5pbmRleGluZ0hlYWRlcigpLT5pbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyhzdHJ1Y3R1cmUpOw0KICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBzdHJ1Y3R1cmUtPmhh
c0luZGV4aW5nSGVhZGVyKGludGVuZGVkT3duZXIpOw0KICAgIEJ1dHRlcmZseSogcmVzdWx0ID0g
Y3JlYXRlVW5pbml0aWFsaXplZCh2bSwgaW50ZW5kZWRPd25lciwgcHJlQ2FwYWNpdHksIG5ld1By
b3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVhZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5C
eXRlcyk7DQogICAgZ2NTYWZlTWVtY3B5KA0KICAgICAgICByZXN1bHQtPnByb3BlcnR5U3RvcmFn
ZSgpIC0gb2xkUHJvcGVydHlDYXBhY2l0eSwNCiAgICAgICAgb2xkQnV0dGVyZmx5LT5wcm9wZXJ0
eVN0b3JhZ2UoKSAtIG9sZFByb3BlcnR5Q2FwYWNpdHksDQogICAgICAgIHRvdGFsU2l6ZSgwLCBv
bGRQcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXlsb2FkU2l6
ZUluQnl0ZXMpKTsNCiAgICBnY1NhZmVaZXJvTWVtb3J5KA0KICAgICAgICByZXN1bHQtPnByb3Bl
cnR5U3RvcmFnZSgpIC0gbmV3UHJvcGVydHlDYXBhY2l0eSwNCiAgICAgICAgKG5ld1Byb3BlcnR5
Q2FwYWNpdHkgLSBvbGRQcm9wZXJ0eUNhcGFjaXR5KSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
Ow0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6
Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgNCiAgICBCdXR0ZXJmbHkqIG9sZEJ1dHRlcmZseSwgVk0m
IHZtLCBKU09iamVjdCogaW50ZW5kZWRPd25lciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsDQog
ICAgc2l6ZV90IHByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFkSW5kZXhpbmdIZWFkZXIsIHNpemVf
dCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywNCiAgICBzaXplX3QgbmV3SW5kZXhpbmdQ
YXlsb2FkU2l6ZUluQnl0ZXMpDQp7DQogICAgaWYgKCFvbGRCdXR0ZXJmbHkpIHsNCiAgICAgICAg
cmV0dXJuIGNyZWF0ZSgNCiAgICAgICAgICAgIHZtLCBpbnRlbmRlZE93bmVyLCAwLCBwcm9wZXJ0
eUNhcGFjaXR5LCB0cnVlLCBJbmRleGluZ0hlYWRlcigpLA0KICAgICAgICAgICAgbmV3SW5kZXhp
bmdQYXlsb2FkU2l6ZUluQnl0ZXMpOw0KICAgIH0NCiAgICByZXR1cm4gb2xkQnV0dGVyZmx5LT5n
cm93QXJyYXlSaWdodCgNCiAgICAgICAgdm0sIGludGVuZGVkT3duZXIsIG9sZFN0cnVjdHVyZSwg
cHJvcGVydHlDYXBhY2l0eSwgaGFkSW5kZXhpbmdIZWFkZXIsDQogICAgICAgIG9sZEluZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzLCBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7DQp9DQoN
CmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Z3Jvd0FycmF5UmlnaHQoDQogICAgVk0mIHZt
LCBKU09iamVjdCogaW50ZW5kZWRPd25lciwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIHNpemVf
dCBwcm9wZXJ0eUNhcGFjaXR5LA0KICAgIGJvb2wgaGFkSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBv
bGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywNCiAgICBzaXplX3QgbmV3SW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMpDQp7DQogICAgKCh2b2lkKW9sZFN0cnVjdHVyZSk7DQogICAgKCh2b2lk
KWludGVuZGVkT3duZXIpOw0KICAgIHZvaWQqIHRoZUJhc2UgPSBiYXNlKDAsIHByb3BlcnR5Q2Fw
YWNpdHkpOw0KICAgIHNpemVfdCBvbGRTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNp
dHksIGhhZEluZGV4aW5nSGVhZGVyLCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7DQog
ICAgc2l6ZV90IG5ld1NpemUgPSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwg
bmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpOw0KICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5q
c1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1Np
emUsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7DQogICAgaWYg
KCFuZXdCYXNlKQ0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICANCiAgICBnY1NhZmVNZW1j
cHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jhc2UpLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4o
dGhlQmFzZSksIG9sZFNpemUpOw0KICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNlLCAwLCBwcm9w
ZXJ0eUNhcGFjaXR5KTsNCn0NCg0KaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojpncm93QXJy
YXlSaWdodCgNCiAgICBWTSYgdm0sIEpTT2JqZWN0KiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwNCiAgICBzaXplX3QgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMp
DQp7DQogICAgcmV0dXJuIGdyb3dBcnJheVJpZ2h0KA0KICAgICAgICB2bSwgaW50ZW5kZWRPd25l
ciwgb2xkU3RydWN0dXJlLCBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksDQogICAg
ICAgIG9sZFN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIoaW50ZW5kZWRPd25lciksIA0KICAg
ICAgICBpbmRleGluZ0hlYWRlcigpLT5pbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyhvbGRTdHJ1
Y3R1cmUpLA0KICAgICAgICBuZXdJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7DQp9DQoNCmlu
bGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6cmVhbGxvY0FycmF5UmlnaHRJZlBvc3NpYmxlKA0K
ICAgIFZNJiB2bSwgR0NEZWZlcnJhbENvbnRleHQmIGRlZmVycmFsQ29udGV4dCwgSlNPYmplY3Qq
IGludGVuZGVkT3duZXIsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBzaXplX3QgcHJvcGVydHlD
YXBhY2l0eSwNCiAgICBib29sIGhhZEluZGV4aW5nSGVhZGVyLCBzaXplX3Qgb2xkSW5kZXhpbmdQ
YXlsb2FkU2l6ZUluQnl0ZXMsDQogICAgc2l6ZV90IG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5
dGVzKQ0Kew0KICAgICgodm9pZClvbGRTdHJ1Y3R1cmUpOw0KICAgICgodm9pZClpbnRlbmRlZE93
bmVyKTsNCg0KICAgIHZvaWQqIHRoZUJhc2UgPSBiYXNlKDAsIHByb3BlcnR5Q2FwYWNpdHkpOw0K
ICAgIHNpemVfdCBvbGRTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIGhhZElu
ZGV4aW5nSGVhZGVyLCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7DQogICAgc2l6ZV90
IG5ld1NpemUgPSB0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgbmV3SW5kZXhp
bmdQYXlsb2FkU2l6ZUluQnl0ZXMpOw0KICAgICgodm9pZCkwKTsNCg0KICAgIA0KICAgIA0KICAg
IA0KICAgIGJvb2wgY2FuUmVhbGxvYyA9ICFwcm9wZXJ0eUNhcGFjaXR5ICYmICF2bS5oZWFwLm11
dGF0b3JTaG91bGRCZUZlbmNlZCgpICYmIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+KHRoZUJhc2Up
LT5pc1ByZWNpc2VBbGxvY2F0aW9uKCk7DQogICAgaWYgKGNhblJlYWxsb2MpIHsNCiAgICAgICAg
dm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlLnJlYWxsb2Nh
dGVQcmVjaXNlQWxsb2NhdGlvbk5vblZpcnR1YWwodm0sIGJpdHdpc2VfY2FzdDxIZWFwQ2VsbCo+
KHRoZUJhc2UpLCBuZXdTaXplLCAmZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OlJldHVybk51bGwpOw0KICAgICAgICBpZiAoIW5ld0Jhc2UpDQogICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsNCiAgICAgICAgcmV0dXJuIGZyb21CYXNlKG5ld0Jhc2UsIDAsIHByb3BlcnR5
Q2FwYWNpdHkpOw0KICAgIH0NCg0KICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNh
Z2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5ld1NpemUsICZkZWZlcnJh
bENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7DQogICAgaWYgKCFu
ZXdCYXNlKQ0KICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICBnY1NhZmVNZW1jcHkoc3RhdGlj
X2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jhc2UpLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4odGhlQmFzZSks
IG9sZFNpemUpOw0KICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNlLCAwLCBwcm9wZXJ0eUNhcGFj
aXR5KTsNCn0NCg0KaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5OjpyZXNpemVBcnJheSgNCiAg
ICBWTSYgdm0sIEpTT2JqZWN0KiBpbnRlbmRlZE93bmVyLCBzaXplX3QgcHJvcGVydHlDYXBhY2l0
eSwgYm9vbCBvbGRIYXNJbmRleGluZ0hlYWRlciwNCiAgICBzaXplX3Qgb2xkSW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMsIHNpemVfdCBuZXdQcmVDYXBhY2l0eSwgYm9vbCBuZXdIYXNJbmRleGlu
Z0hlYWRlciwNCiAgICBzaXplX3QgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpDQp7DQog
ICAgQnV0dGVyZmx5KiByZXN1bHQgPSBjcmVhdGVVbmluaXRpYWxpemVkKHZtLCBpbnRlbmRlZE93
bmVyLCBuZXdQcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgbmV3SGFzSW5kZXhpbmdIZWFk
ZXIsIG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsNCiAgICANCiAgICANCiAgICB2b2lk
KiB0byA9IHJlc3VsdC0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eUNhcGFjaXR5Ow0KICAg
IHZvaWQqIGZyb20gPSBwcm9wZXJ0eVN0b3JhZ2UoKSAtIHByb3BlcnR5Q2FwYWNpdHk7DQogICAg
c2l6ZV90IHNpemUgPSBzdGQ6Om1pbigNCiAgICAgICAgdG90YWxTaXplKDAsIHByb3BlcnR5Q2Fw
YWNpdHksIG9sZEhhc0luZGV4aW5nSGVhZGVyLCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRl
cyksDQogICAgICAgIHRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCBuZXdIYXNJbmRleGlu
Z0hlYWRlciwgbmV3SW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpKTsNCiAgICBnY1NhZmVNZW1j
cHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KHRvKSwgc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KGZyb20p
LCBzaXplKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQppbmxpbmUgQnV0dGVyZmx5KiBCdXR0
ZXJmbHk6OnJlc2l6ZUFycmF5KA0KICAgIFZNJiB2bSwgSlNPYmplY3QqIGludGVuZGVkT3duZXIs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbmV3UHJlQ2FwYWNpdHksDQogICAgc2l6ZV90
IG5ld0luZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKQ0Kew0KICAgIGJvb2wgaGFzSW5kZXhpbmdI
ZWFkZXIgPSBzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKGludGVuZGVkT3duZXIpOw0KICAg
IHJldHVybiByZXNpemVBcnJheSgNCiAgICAgICAgdm0sIGludGVuZGVkT3duZXIsIHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgaGFzSW5kZXhpbmdIZWFkZXIsDQogICAgICAgIGluZGV4
aW5nSGVhZGVyKCktPmluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKHN0cnVjdHVyZSksIG5ld1By
ZUNhcGFjaXR5LA0KICAgICAgICBoYXNJbmRleGluZ0hlYWRlciwgbmV3SW5kZXhpbmdQYXlsb2Fk
U2l6ZUluQnl0ZXMpOw0KfQ0KDQppbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnVuc2hpZnQo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBudW1iZXJPZlNsb3RzKQ0Kew0KICAgICgodm9p
ZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgdW5zaWduZWQgcHJvcGVydHlDYXBhY2l0eSA9IHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICBnY1NhZmVNZW1tb3ZlKA0KICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UoKSAtIG51bWJlck9mU2xvdHMgLSBwcm9wZXJ0eUNhcGFjaXR5LA0KICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UoKSAtIHByb3BlcnR5Q2FwYWNpdHksDQogICAgICAgIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBwcm9wZXJ0eUNhcGFjaXR5ICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSArIEFycmF5
U3RvcmFnZTo6c2l6ZUZvcigwKSk7DQogICAgcmV0dXJuIEluZGV4aW5nSGVhZGVyOjpmcm9tRW5k
T2YocHJvcGVydHlTdG9yYWdlKCkgLSBudW1iZXJPZlNsb3RzKS0+YnV0dGVyZmx5KCk7DQp9DQoN
CmlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6c2hpZnQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHNpemVfdCBudW1iZXJPZlNsb3RzKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICB1bnNpZ25lZCBw
cm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOw0KICAgIA0K
ICAgIGdjU2FmZU1lbW1vdmUoDQogICAgICAgIHByb3BlcnR5U3RvcmFnZSgpIC0gcHJvcGVydHlD
YXBhY2l0eSArIG51bWJlck9mU2xvdHMsDQogICAgICAgIHByb3BlcnR5U3RvcmFnZSgpIC0gcHJv
cGVydHlDYXBhY2l0eSwNCiAgICAgICAgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIHByb3BlcnR5
Q2FwYWNpdHkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpICsgQXJyYXlTdG9yYWdlOjpzaXplRm9y
KDApKTsNCiAgICByZXR1cm4gSW5kZXhpbmdIZWFkZXI6OmZyb21FbmRPZihwcm9wZXJ0eVN0b3Jh
Z2UoKSArIG51bWJlck9mU2xvdHMpLT5idXR0ZXJmbHkoKTsNCn0NCg0KfSANCiNsaW5lIDI4ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEpTT2JqZWN0SW5saW5lcy5oIg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1R5cGVkQXJyYXlzLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEg
b25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxUb05hdGl2ZUZyb21WYWx1ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPg0KdHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSB0b05hdGl2ZUZyb21WYWx1ZShKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpDQogICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMih2YWx1
ZS5hc0ludDMyKCkpOw0KICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFs
dWUuYXNEb3VibGUoKSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+DQp0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlIHRvTmF0aXZlRnJvbVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUpDQp7DQogICAgaWYgKHZhbHVlLmlzSW50MzIoKSkNCiAgICAg
ICAgcmV0dXJuIEFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyKHZhbHVlLmFzSW50MzIoKSk7DQog
ICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpDQogICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2
ZUZyb21Eb3VibGUodmFsdWUuYXNEb3VibGUoKSk7DQogICAgcmV0dXJuIEFkYXB0b3I6OnRvTmF0
aXZlRnJvbURvdWJsZSh2YWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpKTsNCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4NCk9wdGlvbmFsPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGU+IHRv
TmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUgdmFsdWUpDQp7DQogICAgaWYg
KCF2YWx1ZS5pc051bWJlcigpKQ0KICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpDQogICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21J
bnQzMldpdGhvdXRDb2VyY2lvbih2YWx1ZS5hc0ludDMyKCkpOw0KICAgIHJldHVybiBBZGFwdG9y
Ojp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24odmFsdWUuYXNEb3VibGUoKSk7DQp9
DQoNCn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IENsYXNzSW5mbyogZ2V0SW50
OEFycmF5Q2xhc3NJbmZvKCk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgQ2xhc3NJbmZv
KiBnZXRJbnQxNkFycmF5Q2xhc3NJbmZvKCk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3Qg
Q2xhc3NJbmZvKiBnZXRJbnQzMkFycmF5Q2xhc3NJbmZvKCk7DQpfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgY29uc3QgQ2xhc3NJbmZvKiBnZXRVaW50OEFycmF5Q2xhc3NJbmZvKCk7DQpfX2RlY2xzcGVj
KGRsbGV4cG9ydCkgY29uc3QgQ2xhc3NJbmZvKiBnZXRVaW50OENsYW1wZWRBcnJheUNsYXNzSW5m
bygpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IENsYXNzSW5mbyogZ2V0VWludDE2QXJy
YXlDbGFzc0luZm8oKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCBDbGFzc0luZm8qIGdl
dFVpbnQzMkFycmF5Q2xhc3NJbmZvKCk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgQ2xh
c3NJbmZvKiBnZXRGbG9hdDMyQXJyYXlDbGFzc0luZm8oKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBjb25zdCBDbGFzc0luZm8qIGdldEZsb2F0NjRBcnJheUNsYXNzSW5mbygpOw0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQplbnVtIGNsYXNzIENvcHlUeXBlIHsNCiAgICBMZWZ0VG9SaWdo
dCwNCiAgICBVbm9ic2VydmFibGUsDQp9Ow0KDQpzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIHR5
cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UgeyAiVW5kZXJseWluZyBB
cnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zIH07DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+DQpjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyBmaW5h
bCA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7DQpwdWJsaWM6DQogICAgdXNpbmcgQmFzZSA9
IEpTQXJyYXlCdWZmZXJWaWV3Ow0KICAgIHR5cGVkZWYgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSBF
bGVtZW50VHlwZTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0FueUZvcm1PZkdldFByb3BlcnR5
TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOw0KDQogICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBlbGVtZW50U2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsNCg0KICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdpdGhGYXN0VmVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOw0KICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7DQogICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
DQogICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7DQogICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxP
YmplY3QqLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7DQogICAg
DQogICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6
ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOyB9DQogICAgc2l6ZV90IGJ5dGVTaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSkpOyB9DQogICAgDQogICAgY29uc3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogdHlwZWRWZWN0
b3IoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCB0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKj4odmVjdG9yKCkpOw0KICAgIH0NCiAgICB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlKiB0eXBlZFZlY3RvcigpDQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUqPih2ZWN0b3IoKSk7DQogICAgfQ0KDQogICAgDQog
ICAgDQogICAgYm9vbCBjYW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGg7DQogICAgfQ0KICAgIGJvb2wgY2FuU2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmIHZhbHVlLmlzTnVtYmVyKCk7DQogICAgfQ0KICAgIA0K
ICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZSh1
bnNpZ25lZCBpKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1
cm4gdHlwZWRWZWN0b3IoKVtpXTsNCiAgICB9DQogICAgDQogICAgZG91YmxlIGdldEluZGV4UXVp
Y2tseUFzRG91YmxlKHVuc2lnbmVkIGkpDQogICAgew0KICAgICAgICByZXR1cm4gQWRhcHRvcjo6
dG9Eb3VibGUoZ2V0SW5kZXhRdWlja2x5QXNOYXRpdmVWYWx1ZShpKSk7DQogICAgfQ0KICAgIA0K
ICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gQWRhcHRvcjo6dG9KU1ZhbHVlKGdldEluZGV4UXVpY2tseUFzTmF0aXZlVmFs
dWUoaSkpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFs
dWUodW5zaWduZWQgaSwgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSB2YWx1ZSkNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgdHlwZWRWZWN0b3IoKVtpXSA9IHZhbHVlOw0KICAgIH0N
CiAgICANCiAgICB2b2lkIHNldEluZGV4UXVpY2tseVRvRG91YmxlKHVuc2lnbmVkIGksIGRvdWJs
ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZlVmFsdWUoaSwg
dG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oanNOdW1iZXIodmFsdWUpKSk7DQogICAgfQ0KICAg
IA0KICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpDQog
ICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHNldEluZGV4UXVpY2tseVRvTmF0aXZl
VmFsdWUoaSwgdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4odmFsdWUpKTsNCiAgICB9DQogICAg
DQogICAgYm9vbCBzZXRJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIGpzVmFsdWUpDQogICAgew0KICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOw0KICAgICAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0K
DQogICAgICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUgPSB0b05hdGl2ZUZyb21WYWx1
ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOw0KICAgICAgICBkbyB7IGlmICgoKHNj
b3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAg
ICAgIGlmIChpc05ldXRlcmVkKCkpIHsNCiAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYg
KGkgPj0gbV9sZW5ndGgpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQoNCiAgICAgICAgc2V0
SW5kZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShpLCB2YWx1ZSk7DQogICAgICAgIHJldHVybiB0cnVl
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBFbGVtZW50VHlwZSB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVy
biB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihnbG9iYWxPYmplY3QsIGpzVmFsdWUpOyB9DQoN
CiAgICBzdGF0aWMgT3B0aW9uYWw8RWxlbWVudFR5cGU+IHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1
ZVdpdGhvdXRDb2VyY2lvbihKU1ZhbHVlIGpzVmFsdWUpIHsgcmV0dXJuIHRvTmF0aXZlRnJvbVZh
bHVlV2l0aG91dENvZXJjaW9uPEFkYXB0b3I+KGpzVmFsdWUpOyB9DQoNCiAgICB2b2lkIHNvcnQo
KQ0KICAgIHsNCiAgICAgICAgZG8geyBpZiAoKCEoIWlzTmV1dGVyZWQoKSkpKSBkbyB7IFdURjo6
aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNy
YXNoV2l0aEluZm8oMTkyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIiwgIF9fRlVOQ1RJ
T05fXyAgLCAxNTAgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgc3dp
dGNoIChBZGFwdG9yOjp0eXBlVmFsdWUpIHsNCiAgICAgICAgY2FzZSBUeXBlRmxvYXQzMjoNCiAg
ICAgICAgICAgIHNvcnRGbG9hdDxpbnQzMl90PigpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAg
ICAgIGNhc2UgVHlwZUZsb2F0NjQ6DQogICAgICAgICAgICBzb3J0RmxvYXQ8aW50NjRfdD4oKTsN
CiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBkZWZhdWx0OiB7DQogICAgICAgICAgICBFbGVt
ZW50VHlwZSogYXJyYXkgPSB0eXBlZFZlY3RvcigpOw0KICAgICAgICAgICAgc3RkOjpzb3J0KGFy
cmF5LCBhcnJheSArIG1fbGVuZ3RoKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQog
ICAgICAgIH0NCiAgICB9DQoNCiAgICBib29sIGNhbkFjY2Vzc1JhbmdlUXVpY2tseSh1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkNCiAgICB7DQogICAgICAgIHJldHVybiBvZmZzZXQg
PD0gbV9sZW5ndGgNCiAgICAgICAgICAgICYmIG9mZnNldCArIGxlbmd0aCA8PSBtX2xlbmd0aA0K
ICAgICAgICAgICAgDQogICAgICAgICAgICAmJiBvZmZzZXQgKyBsZW5ndGggPj0gb2Zmc2V0Ow0K
ICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICBib29sIHZhbGlkYXRlUmFuZ2UoSlNHbG9iYWxP
YmplY3QqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAgICANCiAgICAN
CiAgICBib29sIHNldChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3Qq
LCB1bnNpZ25lZCBvYmplY3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9
IENvcHlUeXBlOjpVbm9ic2VydmFibGUpOw0KICAgIA0KICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsNCiAgICBSZWZQdHI8dHlw
ZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVkVHlwZWRJbXBsKCk7DQoNCiAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKHR5cGVG
b3JUeXBlZEFycmF5VHlwZShBZGFwdG9yOjp0eXBlVmFsdWUpLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSwgTm9uQXJyYXkpOw0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsgDQogICAgDQogICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyogaW5mbygpDQogICAg
ew0KICAgICAgICBzd2l0Y2ggKEFkYXB0b3I6OnR5cGVWYWx1ZSkgew0KICAgICAgICBjYXNlIFR5
cGVJbnQ4Og0KICAgICAgICAgICAgcmV0dXJuIGdldEludDhBcnJheUNsYXNzSW5mbygpOw0KICAg
ICAgICBjYXNlIFR5cGVJbnQxNjoNCiAgICAgICAgICAgIHJldHVybiBnZXRJbnQxNkFycmF5Q2xh
c3NJbmZvKCk7DQogICAgICAgIGNhc2UgVHlwZUludDMyOg0KICAgICAgICAgICAgcmV0dXJuIGdl
dEludDMyQXJyYXlDbGFzc0luZm8oKTsNCiAgICAgICAgY2FzZSBUeXBlVWludDg6DQogICAgICAg
ICAgICByZXR1cm4gZ2V0VWludDhBcnJheUNsYXNzSW5mbygpOw0KICAgICAgICBjYXNlIFR5cGVV
aW50OENsYW1wZWQ6DQogICAgICAgICAgICByZXR1cm4gZ2V0VWludDhDbGFtcGVkQXJyYXlDbGFz
c0luZm8oKTsNCiAgICAgICAgY2FzZSBUeXBlVWludDE2Og0KICAgICAgICAgICAgcmV0dXJuIGdl
dFVpbnQxNkFycmF5Q2xhc3NJbmZvKCk7DQogICAgICAgIGNhc2UgVHlwZVVpbnQzMjoNCiAgICAg
ICAgICAgIHJldHVybiBnZXRVaW50MzJBcnJheUNsYXNzSW5mbygpOw0KICAgICAgICBjYXNlIFR5
cGVGbG9hdDMyOg0KICAgICAgICAgICAgcmV0dXJuIGdldEZsb2F0MzJBcnJheUNsYXNzSW5mbygp
Ow0KICAgICAgICBjYXNlIFR5cGVGbG9hdDY0Og0KICAgICAgICAgICAgcmV0dXJuIGdldEZsb2F0
NjRBcnJheUNsYXNzSW5mbygpOw0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgZG8geyBX
VEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBX
VEZDcmFzaFdpdGhJbmZvKDI1NiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIsICBfX0ZV
TkNUSU9OX18gICwgMTUxICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICBzd2l0Y2ggKEFkYXB0b3I6OnR5cGVWYWx1ZSkg
ew0KICAgICAgICBjYXNlIFR5cGVJbnQ4Og0KICAgICAgICAgICAgcmV0dXJuIHZtLmludDhBcnJh
eVNwYWNlPG1vZGU+KCk7DQogICAgICAgIGNhc2UgVHlwZUludDE2Og0KICAgICAgICAgICAgcmV0
dXJuIHZtLmludDE2QXJyYXlTcGFjZTxtb2RlPigpOw0KICAgICAgICBjYXNlIFR5cGVJbnQzMjoN
CiAgICAgICAgICAgIHJldHVybiB2bS5pbnQzMkFycmF5U3BhY2U8bW9kZT4oKTsNCiAgICAgICAg
Y2FzZSBUeXBlVWludDg6DQogICAgICAgICAgICByZXR1cm4gdm0udWludDhBcnJheVNwYWNlPG1v
ZGU+KCk7DQogICAgICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDoNCiAgICAgICAgICAgIHJldHVy
biB2bS51aW50OENsYW1wZWRBcnJheVNwYWNlPG1vZGU+KCk7DQogICAgICAgIGNhc2UgVHlwZVVp
bnQxNjoNCiAgICAgICAgICAgIHJldHVybiB2bS51aW50MTZBcnJheVNwYWNlPG1vZGU+KCk7DQog
ICAgICAgIGNhc2UgVHlwZVVpbnQzMjoNCiAgICAgICAgICAgIHJldHVybiB2bS51aW50MzJBcnJh
eVNwYWNlPG1vZGU+KCk7DQogICAgICAgIGNhc2UgVHlwZUZsb2F0MzI6DQogICAgICAgICAgICBy
ZXR1cm4gdm0uZmxvYXQzMkFycmF5U3BhY2U8bW9kZT4oKTsNCiAgICAgICAgY2FzZSBUeXBlRmxv
YXQ2NDoNCiAgICAgICAgICAgIHJldHVybiB2bS5mbG9hdDY0QXJyYXlTcGFjZTxtb2RlPigpOw0K
ICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50
ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI4NCwg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCIsICBfX0ZVTkNUSU9OX18gICwgMTUyICk7IH0g
d2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICAgICB9DQog
ICAgfQ0KICAgIA0KICAgIEFycmF5QnVmZmVyKiBleGlzdGluZ0J1ZmZlcigpOw0KDQogICAgc3Rh
dGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IEFkYXB0b3I6
OnR5cGVWYWx1ZTsNCg0KICAgIA0KICAgIHN0YXRpYyBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6
Vmlld1R5cGU+IHRvV3JhcHBlZChWTSYsIEpTVmFsdWUpOw0KICAgIA0KcHJpdmF0ZToNCiAgICBm
cmllbmQgc3RydWN0IFR5cGVkQXJyYXlDbGFzc0luZm9zOw0KDQogICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcoVk0mLCBDb25zdHJ1Y3Rpb25Db250ZXh0Jik7DQoNCiAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgdGhyb3dOZXV0ZXJlZFR5cGVkQXJyYXlUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsNCg0KICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsNCiAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOw0KICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOw0K
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBEZWxldGVQcm9wZXJ0eVNsb3QmKTsNCg0KICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgc3RhdGljIGJvb2wgcHV0QnlJ
bmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7DQogICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsN
CiAgICANCiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7DQoNCiAg
ICBzdGF0aWMgc2l6ZV90IGVzdGltYXRlZFNpemUoSlNDZWxsKiwgVk0mKTsNCiAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7DQoNCiAgICANCiAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlckFkYXB0b3I+DQogICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNU
eXBlKA0KICAgICAgICBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8T3RoZXJBZGFwdG9yPiosDQogICAgICAgIHVuc2lnbmVkIG9iamVjdE9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSk7DQoNCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCg0KICAgIHZvaWQgcHVyaWZ5QXJyYXkoKQ0KICAgIHsNCiAgICAgICAgRWxlbWVu
dFR5cGUqIGFycmF5ID0gdHlwZWRWZWN0b3IoKTsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbGVuZ3RoOyBpKyspDQogICAgICAgICAgICBhcnJheVtpXSA9IHB1cmlmeU5hTihh
cnJheVtpXSk7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPg0K
ICAgIHZvaWQgc29ydEZsb2F0KCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHB1cmlm
eUFycmF5KCk7DQoNCiAgICAgICAgSW50ZWdyYWxUeXBlKiBhcnJheSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SW50ZWdyYWxUeXBlKj4odHlwZWRWZWN0b3IoKSk7DQogICAgICAgIHN0ZDo6c29ydChhcnJh
eSwgYXJyYXkgKyBtX2xlbmd0aCwgW10gKEludGVncmFsVHlwZSBhLCBJbnRlZ3JhbFR5cGUgYikg
ew0KICAgICAgICAgICAgaWYgKGEgPj0gMCB8fCBiID49IDApDQogICAgICAgICAgICAgICAgcmV0
dXJuIGEgPCBiOw0KICAgICAgICAgICAgcmV0dXJuIGEgPiBiOw0KICAgICAgICB9KTsNCg0KICAg
IH0NCg0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4NCmlubGluZSBSZWZQdHI8dHlw
ZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHRvUG9zc2libHlTaGFyZWROYXRpdmVUeXBlZFZpZXco
Vk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgIHR5cGVuYW1lIEFkYXB0b3I6OkpTVmlld1R5
cGUqIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PHR5cGVuYW1lIEFkYXB0b3I6OkpTVmlld1R5cGUq
Pih2bSwgdmFsdWUpOw0KICAgIGlmICghd3JhcHBlcikNCiAgICAgICAgcmV0dXJuIG51bGxwdHI7
DQogICAgcmV0dXJuIHdyYXBwZXItPnBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7DQp9DQoNCnRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+DQppbmxpbmUgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiB0b1Vuc2hhcmVkTmF0aXZlVHlwZWRWaWV3KFZNJiB2bSwgSlNWYWx1ZSB2YWx1
ZSkNCnsNCiAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHJlc3VsdCA9IHRv
UG9zc2libHlTaGFyZWROYXRpdmVUeXBlZFZpZXc8QWRhcHRvcj4odm0sIHZhbHVlKTsNCiAgICBp
ZiAoIXJlc3VsdCB8fCByZXN1bHQtPmlzU2hhcmVkKCkpDQogICAgICAgIHJldHVybiBudWxscHRy
Ow0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+DQpS
ZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQ0Kew0KICAgIHJldHVy
biBKU0M6OnRvVW5zaGFyZWROYXRpdmVUeXBlZFZpZXc8QWRhcHRvcj4odm0sIHZhbHVlKTsNCn0N
Cg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXEpTVHlwZWRBcnJheXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVHlwZWRBcnJh
eUFkYXB0b3JzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnRlbXBs
YXRlPA0KICAgIHR5cGVuYW1lIFR5cGVBcmcsIHR5cGVuYW1lIFZpZXdUeXBlQXJnLCB0eXBlbmFt
ZSBKU1ZpZXdUeXBlQXJnLA0KICAgIFR5cGVkQXJyYXlUeXBlIHR5cGVWYWx1ZUFyZz4NCnN0cnVj
dCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsNCiAgICB0eXBlZGVmIFR5cGVBcmcgVHlwZTsN
CiAgICB0eXBlZGVmIFZpZXdUeXBlQXJnIFZpZXdUeXBlOw0KICAgIHR5cGVkZWYgSlNWaWV3VHlw
ZUFyZyBKU1ZpZXdUeXBlOw0KICAgIHN0YXRpYyBjb25zdCBUeXBlZEFycmF5VHlwZSB0eXBlVmFs
dWUgPSB0eXBlVmFsdWVBcmc7DQogICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBUeXBlQXJnIG1p
blZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxUeXBlQXJnPjo6bG93ZXN0KCk7DQogICAgY29u
c3RleHByIHN0YXRpYyBjb25zdCBUeXBlQXJnIG1heFZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0
czxUeXBlQXJnPjo6bWF4KCk7DQoNCiAgICBzdGF0aWMgSlNWYWx1ZSB0b0pTVmFsdWUoVHlwZSB2
YWx1ZSkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfZmxvYXRpbmdfcG9p
bnQ8VHlwZT46OnZhbHVlLCAiIik7DQogICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7DQog
ICAgfQ0KICAgIA0KICAgIHN0YXRpYyBkb3VibGUgdG9Eb3VibGUoVHlwZSB2YWx1ZSkNCiAgICB7
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKTsNCiAgICB9DQogICAg
DQogICAgc3RhdGljIFR5cGUgdG9OYXRpdmVGcm9tSW50MzIoaW50MzJfdCB2YWx1ZSkNCiAgICB7
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7DQogICAgfQ0KICAgIA0K
ICAgIHN0YXRpYyBUeXBlIHRvTmF0aXZlRnJvbVVpbnQzMih1aW50MzJfdCB2YWx1ZSkNCiAgICB7
DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7DQogICAgfQ0KICAgIA0K
ICAgIHN0YXRpYyBUeXBlIHRvTmF0aXZlRnJvbURvdWJsZShkb3VibGUgdmFsdWUpDQogICAgew0K
ICAgICAgICBpbnQzMl90IHJlc3VsdCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsNCiAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0KSAhPSB2YWx1ZSkNCiAgICAgICAg
ICAgIHJlc3VsdCA9IHRvSW50MzIodmFsdWUpOw0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VHlwZT4ocmVzdWx0KTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJB
ZGFwdG9yPg0KICAgIHN0YXRpYyB0eXBlbmFtZSBPdGhlckFkYXB0b3I6OlR5cGUgY29udmVydFRv
KFR5cGUgdmFsdWUpDQogICAgew0KICAgICAgICBpZiAodHlwZVZhbHVlID09IFR5cGVVaW50MzIp
DQogICAgICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZyb21VaW50MzIodmFs
dWUpOw0KICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMih2YWx1
ZSk7DQogICAgfQ0KDQogICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMy
V2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpDQogICAgew0KICAgICAgICBpZiAoKHZhbHVl
ID49IDAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtYXhWYWx1ZSkpIHx8IHZhbHVlIDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obWluVmFsdWUp
KQ0KICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFR5cGU+KHZhbHVlKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4g
dG9OYXRpdmVGcm9tVWludDMyV2l0aG91dENvZXJjaW9uKHVpbnQzMl90IHZhbHVlKQ0KICAgIHsN
CiAgICAgICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFZhbHVlKSkNCiAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7DQoNCiAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFR5cGU+KHZhbHVlKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9O
YXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkNCiAgICB7DQogICAg
ICAgIFR5cGUgaW50ZWdlciA9IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsNCiAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpDQogICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0Ow0KDQogICAgICAgIGlmICh2YWx1ZSA8IDApDQogICAgICAgICAgICBy
ZXR1cm4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oc3RhdGljX2Nhc3Q8aW50MzJf
dD4odmFsdWUpKTsNCiAgICAgICAgDQogICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21VaW50MzJX
aXRob3V0Q29lcmNpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSk7DQogICAgfQ0KfTsN
Cg0KdGVtcGxhdGU8DQogICAgdHlwZW5hbWUgVHlwZUFyZywgdHlwZW5hbWUgVmlld1R5cGVBcmcs
IHR5cGVuYW1lIEpTVmlld1R5cGVBcmcsDQogICAgVHlwZWRBcnJheVR5cGUgdHlwZVZhbHVlQXJn
Pg0Kc3RydWN0IEZsb2F0VHlwZWRBcnJheUFkYXB0b3Igew0KICAgIHR5cGVkZWYgVHlwZUFyZyBU
eXBlOw0KICAgIHR5cGVkZWYgVmlld1R5cGVBcmcgVmlld1R5cGU7DQogICAgdHlwZWRlZiBKU1Zp
ZXdUeXBlQXJnIEpTVmlld1R5cGU7DQogICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIHR5
cGVWYWx1ZSA9IHR5cGVWYWx1ZUFyZzsNCiAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFR5cGVB
cmcgbWluVmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGVBcmc+Ojpsb3dlc3QoKTsNCiAg
ICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFR5cGVBcmcgbWF4VmFsdWUgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPFR5cGVBcmc+OjptYXgoKTsNCg0KICAgIHN0YXRpYyBKU1ZhbHVlIHRvSlNWYWx1ZShU
eXBlIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGpzRG91YmxlTnVtYmVyKHB1cmlmeU5h
Tih2YWx1ZSkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBkb3VibGUgdG9Eb3VibGUoVHlwZSB2YWx1
ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKTsNCiAg
ICB9DQoNCiAgICBzdGF0aWMgVHlwZSB0b05hdGl2ZUZyb21JbnQzMihpbnQzMl90IHZhbHVlKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgVHlwZSB0b05hdGl2ZUZyb21VaW50MzIodWludDMyX3QgdmFsdWUpDQogICAg
ew0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOw0KICAgIH0NCg0KICAg
IHN0YXRpYyBUeXBlIHRvTmF0aXZlRnJvbURvdWJsZShkb3VibGUgdmFsdWUpDQogICAgew0KICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4NCiAgICBzdGF0aWMgdHlwZW5hbWUgT3RoZXJBZGFw
dG9yOjpUeXBlIGNvbnZlcnRUbyhUeXBlIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIE90
aGVyQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsNCiAgICB9DQoNCiAgICBzdGF0
aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJf
dCB2YWx1ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7
DQogICAgfQ0KDQogICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdp
dGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAgICBpZiAoc3RkOjppc25h
bih2YWx1ZSkgfHwgc3RkOjppc2luZih2YWx1ZSkpDQogICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VHlwZT4odmFsdWUpOw0KDQogICAgICAgIFR5cGUgdmFsdWVSZXN1bHQgPSBzdGF0aWNf
Y2FzdDxUeXBlPih2YWx1ZSk7DQoNCiAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4odmFs
dWVSZXN1bHQpICE9IHZhbHVlKQ0KICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCg0K
ICAgICAgICBpZiAodmFsdWUgPCBtaW5WYWx1ZSB8fCB2YWx1ZSA+IG1heFZhbHVlKQ0KICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCg0KICAgICAgICByZXR1cm4gdmFsdWVSZXN1bHQ7
DQogICAgfQ0KfTsNCg0Kc3RydWN0IEludDhBZGFwdG9yOw0Kc3RydWN0IEludDE2QWRhcHRvcjsN
CnN0cnVjdCBJbnQzMkFkYXB0b3I7DQpzdHJ1Y3QgVWludDhBZGFwdG9yOw0Kc3RydWN0IFVpbnQ4
Q2xhbXBlZEFkYXB0b3I7DQpzdHJ1Y3QgVWludDE2QWRhcHRvcjsNCnN0cnVjdCBVaW50MzJBZGFw
dG9yOw0Kc3RydWN0IEZsb2F0MzJBZGFwdG9yOw0Kc3RydWN0IEZsb2F0NjRBZGFwdG9yOw0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXc7DQp0
eXBlZGVmIEdlbmVyaWNUeXBlZEFycmF5VmlldzxJbnQ4QWRhcHRvcj4gSW50OEFycmF5Ow0KdHlw
ZWRlZiBHZW5lcmljVHlwZWRBcnJheVZpZXc8SW50MTZBZGFwdG9yPiBJbnQxNkFycmF5Ow0KdHlw
ZWRlZiBHZW5lcmljVHlwZWRBcnJheVZpZXc8SW50MzJBZGFwdG9yPiBJbnQzMkFycmF5Ow0KdHlw
ZWRlZiBHZW5lcmljVHlwZWRBcnJheVZpZXc8VWludDhBZGFwdG9yPiBVaW50OEFycmF5Ow0KdHlw
ZWRlZiBHZW5lcmljVHlwZWRBcnJheVZpZXc8VWludDhDbGFtcGVkQWRhcHRvcj4gVWludDhDbGFt
cGVkQXJyYXk7DQp0eXBlZGVmIEdlbmVyaWNUeXBlZEFycmF5VmlldzxVaW50MTZBZGFwdG9yPiBV
aW50MTZBcnJheTsNCnR5cGVkZWYgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PFVpbnQzMkFkYXB0b3I+
IFVpbnQzMkFycmF5Ow0KdHlwZWRlZiBHZW5lcmljVHlwZWRBcnJheVZpZXc8RmxvYXQzMkFkYXB0
b3I+IEZsb2F0MzJBcnJheTsNCnR5cGVkZWYgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEZsb2F0NjRB
ZGFwdG9yPiBGbG9hdDY0QXJyYXk7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+IGNsYXNz
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Ow0KdXNpbmcgSlNJbnQ4QXJyYXkgPSBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxJbnQ4QWRhcHRvcj47DQp1c2luZyBKU0ludDE2QXJyYXkgPSBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxJbnQxNkFkYXB0b3I+Ow0KdXNpbmcgSlNJbnQzMkFycmF5ID0gSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8SW50MzJBZGFwdG9yPjsNCnVzaW5nIEpTVWludDhBcnJheSA9
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PFVpbnQ4QWRhcHRvcj47DQp1c2luZyBKU1VpbnQ4Q2xh
bXBlZEFycmF5ID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8VWludDhDbGFtcGVkQWRhcHRvcj47
DQp1c2luZyBKU1VpbnQxNkFycmF5ID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8VWludDE2QWRh
cHRvcj47DQp1c2luZyBKU1VpbnQzMkFycmF5ID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8VWlu
dDMyQWRhcHRvcj47DQp1c2luZyBKU0Zsb2F0MzJBcnJheSA9IEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEZsb2F0MzJBZGFwdG9yPjsNCnVzaW5nIEpTRmxvYXQ2NEFycmF5ID0gSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8RmxvYXQ2NEFkYXB0b3I+Ow0KDQpzdHJ1Y3QgSW50OEFkYXB0b3IgOiBJbnRl
Z3JhbFR5cGVkQXJyYXlBZGFwdG9yPGludDhfdCwgSW50OEFycmF5LCBKU0ludDhBcnJheSwgVHlw
ZUludDg+IHsgfTsNCnN0cnVjdCBJbnQxNkFkYXB0b3IgOiBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFw
dG9yPGludDE2X3QsIEludDE2QXJyYXksIEpTSW50MTZBcnJheSwgVHlwZUludDE2PiB7IH07DQpz
dHJ1Y3QgSW50MzJBZGFwdG9yIDogSW50ZWdyYWxUeXBlZEFycmF5QWRhcHRvcjxpbnQzMl90LCBJ
bnQzMkFycmF5LCBKU0ludDMyQXJyYXksIFR5cGVJbnQzMj4geyB9Ow0Kc3RydWN0IFVpbnQ4QWRh
cHRvciA6IEludGVncmFsVHlwZWRBcnJheUFkYXB0b3I8dWludDhfdCwgVWludDhBcnJheSwgSlNV
aW50OEFycmF5LCBUeXBlVWludDg+IHsgfTsNCnN0cnVjdCBVaW50MTZBZGFwdG9yIDogSW50ZWdy
YWxUeXBlZEFycmF5QWRhcHRvcjx1aW50MTZfdCwgVWludDE2QXJyYXksIEpTVWludDE2QXJyYXks
IFR5cGVVaW50MTY+IHsgfTsNCnN0cnVjdCBVaW50MzJBZGFwdG9yIDogSW50ZWdyYWxUeXBlZEFy
cmF5QWRhcHRvcjx1aW50MzJfdCwgVWludDMyQXJyYXksIEpTVWludDMyQXJyYXksIFR5cGVVaW50
MzI+IHsgfTsNCnN0cnVjdCBGbG9hdDMyQWRhcHRvciA6IEZsb2F0VHlwZWRBcnJheUFkYXB0b3I8
ZmxvYXQsIEZsb2F0MzJBcnJheSwgSlNGbG9hdDMyQXJyYXksIFR5cGVGbG9hdDMyPiB7IH07DQpz
dHJ1Y3QgRmxvYXQ2NEFkYXB0b3IgOiBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yPGRvdWJsZSwgRmxv
YXQ2NEFycmF5LCBKU0Zsb2F0NjRBcnJheSwgVHlwZUZsb2F0NjQ+IHsgfTsNCg0Kc3RydWN0IFVp
bnQ4Q2xhbXBlZEFkYXB0b3Igew0KICAgIHR5cGVkZWYgdWludDhfdCBUeXBlOw0KICAgIHR5cGVk
ZWYgVWludDhDbGFtcGVkQXJyYXkgVmlld1R5cGU7DQogICAgdHlwZWRlZiBKU1VpbnQ4Q2xhbXBl
ZEFycmF5IEpTVmlld1R5cGU7DQogICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIHR5cGVW
YWx1ZSA9IFR5cGVVaW50OENsYW1wZWQ7DQogICAgY29uc3RleHByIHN0YXRpYyBjb25zdCB1aW50
OF90IG1pblZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bG93ZXN0KCk7DQog
ICAgY29uc3RleHByIHN0YXRpYyBjb25zdCB1aW50OF90IG1heFZhbHVlID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50OF90Pjo6bWF4KCk7DQoNCiAgICBzdGF0aWMgSlNWYWx1ZSB0b0pTVmFsdWUo
dWludDhfdCB2YWx1ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZSk7DQog
ICAgfQ0KDQogICAgc3RhdGljIGRvdWJsZSB0b0RvdWJsZSh1aW50OF90IHZhbHVlKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpOw0KICAgIH0NCg0KICAg
IHN0YXRpYyBUeXBlIHRvTmF0aXZlRnJvbUludDMyKGludDMyX3QgdmFsdWUpDQogICAgew0KICAg
ICAgICByZXR1cm4gY2xhbXAodmFsdWUpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBUeXBlIHRvTmF0
aXZlRnJvbVVpbnQzMih1aW50MzJfdCB2YWx1ZSkNCiAgICB7DQogICAgICAgIHJldHVybiBzdGQ6
Om1pbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oMjU1KSwgdmFsdWUpOw0KICAgIH0NCg0KICAgIHN0
YXRpYyBUeXBlIHRvTmF0aXZlRnJvbURvdWJsZShkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAg
ICBpZiAoc3RkOjppc25hbih2YWx1ZSkgfHwgdmFsdWUgPCAwKQ0KICAgICAgICAgICAgcmV0dXJu
IDA7DQogICAgICAgIGlmICh2YWx1ZSA+IDI1NSkNCiAgICAgICAgICAgIHJldHVybiAyNTU7DQog
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihscmludCh2YWx1ZSkpOw0KICAgIH0N
Cg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQWRhcHRvcj4NCiAgICBzdGF0aWMgdHlwZW5h
bWUgT3RoZXJBZGFwdG9yOjpUeXBlIGNvbnZlcnRUbyh1aW50OF90IHZhbHVlKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIE90aGVyQWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzIodmFsdWUpOw0KICAg
IH0NCiAgICANCiAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRo
b3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmICh2YWx1ZSA+IG1h
eFZhbHVlIHx8IHZhbHVlIDwgbWluVmFsdWUpDQogICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0Ow0KDQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7DQogICAgfQ0K
DQogICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2Vy
Y2lvbihkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAgICB1aW50OF90IGludGVnZXIgPSBzdGF0
aWNfY2FzdDx1aW50OF90Pih2YWx1ZSk7DQogICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+
KGludGVnZXIpICE9IHZhbHVlKQ0KICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCg0K
ICAgICAgICByZXR1cm4gaW50ZWdlcjsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgc3RhdGljIHVp
bnQ4X3QgY2xhbXAoaW50MzJfdCB2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmICh2YWx1ZSA8IDAp
DQogICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgaWYgKHZhbHVlID4gMjU1KQ0KICAgICAg
ICAgICAgcmV0dXJuIDI1NTsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZh
bHVlKTsNCiAgICB9DQp9Ow0KDQp9IA0KI2xpbmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNUeXBlZEFycmF5cy5oIg0KDQpu
YW1lc3BhY2UgSlNDIHsNCg0KdXNpbmcgSlNJbnQ4QXJyYXkgPSBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxJbnQ4QWRhcHRvcj47DQp1c2luZyBKU0ludDE2QXJyYXkgPSBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxJbnQxNkFkYXB0b3I+Ow0KdXNpbmcgSlNJbnQzMkFycmF5ID0gSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8SW50MzJBZGFwdG9yPjsNCnVzaW5nIEpTVWludDhBcnJheSA9IEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PFVpbnQ4QWRhcHRvcj47DQp1c2luZyBKU1VpbnQ4Q2xhbXBlZEFycmF5
ID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8VWludDhDbGFtcGVkQWRhcHRvcj47DQp1c2luZyBK
U1VpbnQxNkFycmF5ID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8VWludDE2QWRhcHRvcj47DQp1
c2luZyBKU1VpbnQzMkFycmF5ID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8VWludDMyQWRhcHRv
cj47DQp1c2luZyBKU0Zsb2F0MzJBcnJheSA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEZsb2F0
MzJBZGFwdG9yPjsNCnVzaW5nIEpTRmxvYXQ2NEFycmF5ID0gSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8RmxvYXQ2NEFkYXB0b3I+Ow0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNVaW50OEFycmF5
KiBjcmVhdGVVaW50OFR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
DQoNCn0gDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTG9va3Vw
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciB7
DQogICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIoY29uc3QgQmF0Y2hlZFRyYW5zaXRpb25P
cHRpbWl6ZXImKSA9IGRlbGV0ZTsgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXImIG9wZXJhdG9y
PShjb25zdCBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciYpID0gZGVsZXRlOzsNCnB1YmxpYzoN
CiAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3Qp
DQogICAgew0KICAgICAgICBpZiAoIW9iamVjdC0+c3RydWN0dXJlKHZtKS0+aXNEaWN0aW9uYXJ5
KCkpDQogICAgICAgICAgICBvYmplY3QtPmNvbnZlcnRUb0RpY3Rpb25hcnkodm0pOw0KICAgIH0N
Cn07DQoNCn0gDQojbGluZSAyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxMb29rdXAuaCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRvbWppdFxcRE9NSklUR2V0
dGVyU2V0dGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRvbWppdFxcRE9NSklUQ2FsbERPTUdldHRlclNuaXBw
ZXQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGRvbWppdFxcRE9NSklURWZmZWN0LmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGRvbWppdFxcRE9NSklUSGVhcFJhbmdlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERPTUpJVCB7DQoNCmNsYXNzIEhlYXBSYW5nZSB7DQpwdWJsaWM6DQogICAg
Y29uc3RleHByIEhlYXBSYW5nZSgpDQogICAgICAgIDogbV9iZWdpbigweGZmZmZ1aTE2KQ0KICAg
ICAgICAsIG1fZW5kKDB4ZmZmZnVpMTYpDQogICAgew0KICAgIH0NCg0KICAgIEhlYXBSYW5nZSh1
aW50MTZfdCBiZWdpbiwgdWludDE2X3QgZW5kKQ0KICAgICAgICA6IG1fYmVnaW4oYmVnaW4pDQog
ICAgICAgICwgbV9lbmQoZW5kKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0K
ICAgIGVudW0gQ29uc3RFeHByVGFnIHsgQ29uc3RFeHByIH07DQogICAgY29uc3RleHByIEhlYXBS
YW5nZShDb25zdEV4cHJUYWcsIHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQpDQogICAgICAg
IDogbV9iZWdpbihiZWdpbikNCiAgICAgICAgLCBtX2VuZChlbmQpDQogICAgew0KICAgIH0NCg0K
ICAgIGVudW0gUmF3UmVwcmVzZW50YXRpb25UYWcgeyBSYXdSZXByZXNlbnRhdGlvbiB9Ow0KICAg
IGV4cGxpY2l0IGNvbnN0ZXhwciBIZWFwUmFuZ2UoUmF3UmVwcmVzZW50YXRpb25UYWcsIHVpbnQz
Ml90IHZhbHVlKQ0KICAgICAgICA6IG1fcmF3KHZhbHVlKQ0KICAgIHsNCiAgICB9DQoNCiAgICBj
b25zdGV4cHIgc3RhdGljIEhlYXBSYW5nZSBmcm9tUmF3KHVpbnQzMl90IHZhbHVlKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShSYXdSZXByZXNlbnRhdGlvbiwgdmFsdWUpOw0KICAg
IH0NCg0KICAgIHVpbnQxNl90IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQ0KICAg
IHVpbnQxNl90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9DQogICAgdWludDMyX3QgcmF3
UmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBtX3JhdzsgfQ0KDQogICAgY29uc3RleHByIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYmVnaW4g
IT0gbV9lbmQ7DQogICAgfQ0KDQogICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBI
ZWFwUmFuZ2UmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0g
b3RoZXIubV9iZWdpbiAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsNCiAgICB9DQoNCiAgICBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0DQogICAg
ew0KICAgICAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOw0KICAgIH0NCg0KICAgIHRlbXBs
YXRlPHVpbnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+DQogICAgc3RhdGljIGNvbnN0ZXhwciBI
ZWFwUmFuZ2UgZnJvbUNvbnN0YW50KCkNCiAgICB7DQogICAgICAgIHN0YXRpY19hc3NlcnQoYmVn
aW4gPCBlbmQgfHwgKGJlZ2luID09IDB4ZmZmZnVpMTYgJiYgZW5kID09IDB4ZmZmZnVpMTYpLCAi
YmVnaW4gPCBlbmQgb3IgdGhlIGJvdGggYXJlIFVJTlQxNl9NQVggaXMgdGhlIGludmFyaWFudCBv
ZiB0aGlzIEhlYXBSYW5nZS4iKTsNCiAgICAgICAgcmV0dXJuIEhlYXBSYW5nZShDb25zdEV4cHIs
IGJlZ2luLCBlbmQpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIHRv
cCgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwwLCAweGZmZmZ1aTE2PigpOyB9DQogICAgc3RhdGlj
IGNvbnN0ZXhwciBIZWFwUmFuZ2Ugbm9uZSgpIHsgcmV0dXJuIGZyb21Db25zdGFudDwweGZmZmZ1
aTE2LCAweGZmZmZ1aTE2PigpOyB9IA0KDQogICAgYm9vbCBpc1N0cmljdFN1YnR5cGVPZihjb25z
dCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKCEqdGhpcyB8fCAh
b3RoZXIpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIGlmICgqdGhpcyA9PSBv
dGhlcikNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgcmV0dXJuIG90aGVyLm1f
YmVnaW4gPD0gbV9iZWdpbiAmJiBtX2VuZCA8PSBvdGhlci5tX2VuZDsNCiAgICB9DQoNCiAgICBi
b29sIGlzU3VidHlwZU9mKGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0DQogICAgew0KICAg
ICAgICBpZiAoISp0aGlzIHx8ICFvdGhlcikNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICAgICAgaWYgKCp0aGlzID09IG90aGVyKQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAg
ICAgIHJldHVybiBpc1N0cmljdFN1YnR5cGVPZihvdGhlcik7DQogICAgfQ0KDQogICAgYm9vbCBv
dmVybGFwcyhjb25zdCBIZWFwUmFuZ2UmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIFdURjo6cmFuZ2VzT3ZlcmxhcChtX2JlZ2luLCBtX2VuZCwgb3RoZXIubV9iZWdpbiwgb3Ro
ZXIubV9lbmQpOw0KICAgIH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICB1bmlvbiB7DQogICAgICAgIHN0
cnVjdCB7DQogICAgICAgICAgICB1aW50MTZfdCBtX2JlZ2luOw0KICAgICAgICAgICAgdWludDE2
X3QgbV9lbmQ7DQogICAgICAgIH07DQogICAgICAgIHVpbnQzMl90IG1fcmF3Ow0KICAgIH07DQp9
Ow0KDQp9IH0NCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGRvbWppdFxcRE9NSklURWZmZWN0LmgiDQoNCm5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRE9NSklUIHsNCg0Kc3RydWN0IEVmZmVjdCB7DQoNCiAgICBjb25zdGV4cHIgc3Rh
dGljIEVmZmVjdCBmb3JXcml0ZShIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkNCiAgICB7DQogICAgICAg
IHJldHVybiB7IEhlYXBSYW5nZTo6bm9uZSgpLCB3cml0ZVJhbmdlIH07DQogICAgfQ0KDQogICAg
Y29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZChIZWFwUmFuZ2UgcmVhZFJhbmdlKQ0KICAg
IHsNCiAgICAgICAgcmV0dXJuIHsgcmVhZFJhbmdlLCBIZWFwUmFuZ2U6Om5vbmUoKSB9Ow0KICAg
IH0NCg0KICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclJlYWRXcml0ZShIZWFwUmFuZ2Ug
cmVhZFJhbmdlLCBIZWFwUmFuZ2Ugd3JpdGVSYW5nZSkNCiAgICB7DQogICAgICAgIHJldHVybiB7
IHJlYWRSYW5nZSwgd3JpdGVSYW5nZSB9Ow0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBzdGF0aWMg
RWZmZWN0IGZvclB1cmUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHsgSGVhcFJhbmdlOjpub25l
KCksIEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUoKSB9Ow0KICAgIH0NCg0KICAg
IGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIHsgZGVmLCBIZWFwUmFuZ2U6Om5vbmUoKSwgZGVmIH07DQogICAgfQ0KDQog
ICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5nZSBkZWYsIEhlYXBSYW5n
ZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IHsgcmVhZFJhbmdlLCB3cml0ZVJhbmdlLCBkZWYgfTsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIg
Ym9vbCBtdXN0R2VuZXJhdGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICEhd3JpdGVz
Ow0KICAgIH0NCg0KICAgIEhlYXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsNCiAg
ICBIZWFwUmFuZ2Ugd3JpdGVzIHsgSGVhcFJhbmdlOjp0b3AoKSB9Ow0KICAgIEhlYXBSYW5nZSBk
ZWYgeyBIZWFwUmFuZ2U6OnRvcCgpIH07DQp9Ow0KDQp9IH0NCiNsaW5lIDMxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRvbWppdFxcRE9NSklUQ2Fs
bERPTUdldHRlclNuaXBwZXQuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxTbmlwcGV0LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGppdFxcQ0NhbGxIZWxwZXJzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVy
cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxpbnRlcnByZXRlclxcRW50cnlGcmFtZS5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UN
Cg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxTdGFja0FsaWdubWVudC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0KDQpjb25zdGV4cHIgdW5zaWduZWQgc3RhY2tBbGlnbm1lbnRCeXRlcygpIHsg
cmV0dXJuIDE2OyB9DQoNCmNvbnN0ZXhwciB1bnNpZ25lZCBzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpDQp7DQogICAgcmV0dXJuIHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSAvIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSk7DQp9DQoNCg0KDQppbmxpbmUgdW5zaWduZWQgcm91bmRBcmd1bWVudENvdW50VG9B
bGlnbkZyYW1lKHVuc2lnbmVkIGFyZ3VtZW50Q291bnQpDQp7DQogICAgcmV0dXJuIFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBhcmd1bWVudENvdW50
ICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpIC0gQ2FsbEZyYW1lOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnM7DQp9DQoNCg0KDQppbmxpbmUgdW5zaWduZWQgcm91bmRMb2NhbFJlZ2lz
dGVyQ291bnRGb3JGcmFtZVBvaW50ZXJPZmZzZXQodW5zaWduZWQgbG9jYWxSZWdpc3RlckNvdW50
KQ0Kew0KICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSwgbG9jYWxSZWdpc3RlckNvdW50ICsgQ2FsbGVyRnJhbWVBbmRQQzo6c2l6ZUlu
UmVnaXN0ZXJzKSAtIENhbGxlckZyYW1lQW5kUEM6OnNpemVJblJlZ2lzdGVyczsNCn0NCg0KaW5s
aW5lIHVuc2lnbmVkIGxvZ1N0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkNCnsNCiAgICByZXR1cm4g
V1RGOjpmYXN0TG9nMihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpKTsNCn0NCg0KfSANCiNsaW5l
IDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGlu
dGVycHJldGVyXFxFbnRyeUZyYW1lLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnN0cnVjdCBF
bnRyeUZyYW1lIHsNCg0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgdm1FbnRyeVJlY29yZE9mZnNldCgp
DQogICAgew0KICAgICAgICBFbnRyeUZyYW1lKiBmYWtlRW50cnlGcmFtZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RW50cnlGcmFtZSo+KDB4MTAwMCk7DQogICAgICAgIFZNRW50cnlSZWNvcmQqIHJlY29y
ZCA9IHZtRW50cnlSZWNvcmQoZmFrZUVudHJ5RnJhbWUpOw0KICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PigNCiAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJl
Y29yZCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihmYWtlRW50cnlGcmFtZSkpOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyBwdHJkaWZmX3QgY2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgp
DQogICAgew0KICAgICAgICByZXR1cm4gdm1FbnRyeVJlY29yZE9mZnNldCgpICsgKHJlaW50ZXJw
cmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Vk1FbnRyeVJlY29yZCo+KDB4
NDAwMCktPmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXIpKSAtIDB4NDAwMCk7DQogICAgfQ0KI2xp
bmUgNDggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aW50ZXJwcmV0ZXJcXEVudHJ5RnJhbWUuaCINCn07DQoNCn0gDQojbGluZSAzMiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVs
cGVycy5oIg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUQWxsb2NhdG9yLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEpJVEFsbG9jYXRvciB7DQpwdWJsaWM6DQogICAgZW51bSBL
aW5kIHsNCiAgICAgICAgQ29uc3RhbnQsDQogICAgICAgIFZhcmlhYmxlDQogICAgfTsNCiAgICAN
CiAgICBKSVRBbGxvY2F0b3IoKSB7IH0NCiAgICANCiAgICBzdGF0aWMgSklUQWxsb2NhdG9yIGNv
bnN0YW50KEFsbG9jYXRvciBhbGxvY2F0b3IpDQogICAgew0KICAgICAgICBKSVRBbGxvY2F0b3Ig
cmVzdWx0Ow0KICAgICAgICByZXN1bHQubV9raW5kID0gQ29uc3RhbnQ7DQogICAgICAgIHJlc3Vs
dC5tX2FsbG9jYXRvciA9IGFsbG9jYXRvcjsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9
DQogICAgDQogICAgc3RhdGljIEpJVEFsbG9jYXRvciB2YXJpYWJsZSgpDQogICAgew0KICAgICAg
ICBKSVRBbGxvY2F0b3IgcmVzdWx0Ow0KICAgICAgICByZXN1bHQubV9raW5kID0gVmFyaWFibGU7
DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBKSVRBbGxvY2F0b3ImIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJu
IG1fa2luZCA9PSBvdGhlci5tX2tpbmQNCiAgICAgICAgICAgICYmIG1fYWxsb2NhdG9yID09IG90
aGVyLm1fYWxsb2NhdG9yOw0KICAgIH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SklUQWxsb2NhdG9yJiBvdGhlcikgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsNCiAgICB9DQogICAgDQogICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gKnRoaXMgIT0gSklUQWxsb2NhdG9yKCk7DQogICAg
fQ0KICAgIA0KICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQ0KICAgIGJv
b2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBDb25zdGFudDsgfQ0KICAg
IGJvb2wgaXNWYXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSBWYXJpYWJsZTsgfQ0K
ICAgIA0KICAgIEFsbG9jYXRvciBhbGxvY2F0b3IoKSBjb25zdA0KICAgIHsNCiAgICAgICAgZG8g
eyBpZiAoKCEoaXNDb25zdGFudCgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlw
ZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg3OCwgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRBbGxv
Y2F0b3IuaCIsICBfX0ZVTkNUSU9OX18gICwgMTUzICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7DQogICAgICAgIHJldHVybiBtX2FsbG9jYXRvcjsNCiAgICB9DQogICAgDQpwcml2YXRl
Og0KICAgIEtpbmQgbV9raW5kIHsgQ29uc3RhbnQgfTsNCiAgICBBbGxvY2F0b3IgbV9hbGxvY2F0
b3I7DQp9Ow0KDQp9IA0KDQojbGluZSAzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KDQoNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcUmVnaXN0ZXJBdE9mZnNldExpc3QuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcUmVnaXN0ZXJB
dE9mZnNldC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBS
ZWdpc3RlckF0T2Zmc2V0IHsNCnB1YmxpYzoNCiAgICBSZWdpc3RlckF0T2Zmc2V0KCkNCiAgICAg
ICAgOiBtX29mZnNldCgwKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgUmVnaXN0ZXJBdE9mZnNl
dChSZWcgcmVnLCBwdHJkaWZmX3Qgb2Zmc2V0KQ0KICAgICAgICA6IG1fcmVnKHJlZykNCiAgICAg
ICAgLCBtX29mZnNldChvZmZzZXQpDQogICAgew0KICAgIH0NCiAgICANCiAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3JlZzsgfQ0KICAgIA0KICAgIFJlZyByZWcoKSBjb25z
dCB7IHJldHVybiBtX3JlZzsgfQ0KICAgIHB0cmRpZmZfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQ0KICAgIGludCBvZmZzZXRBc0luZGV4KCkgY29uc3QgeyAoKHZvaWQpMCk7
IHJldHVybiBvZmZzZXQoKSAvIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKENQVVJlZ2lzdGVyKSk7
IH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgb3Ro
ZXIpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gcmVnKCkgPT0gb3RoZXIucmVnKCkgJiYg
b2Zmc2V0KCkgPT0gb3RoZXIub2Zmc2V0KCk7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXQmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAg
aWYgKHJlZygpICE9IG90aGVyLnJlZygpKQ0KICAgICAgICAgICAgcmV0dXJuIHJlZygpIDwgb3Ro
ZXIucmVnKCk7DQogICAgICAgIHJldHVybiBvZmZzZXQoKSA8IG90aGVyLm9mZnNldCgpOw0KICAg
IH0NCiAgICANCiAgICBzdGF0aWMgUmVnIGdldFJlZyhSZWdpc3RlckF0T2Zmc2V0KiB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUtPnJlZygpOyB9DQogICAgDQogICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Ow0KDQpwcml2YXRlOg0KICAgIFJlZyBtX3JlZzsNCiAgICBwdHJkaWZmX3Qg
bV9vZmZzZXQgOiAoc2l6ZW9mKHB0cmRpZmZfdCkgLSBzaXplb2YoUmVnKSkgKiA4Ow0KfTsNCg0K
fSANCg0KI2xpbmUgNzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaml0XFxSZWdpc3RlckF0T2Zmc2V0LmgiDQojbGluZSAzMSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnVzaW5nIFJlZ2lzdGVyQXRPZmZzZXRM
aXN0TWFsbG9jID0gRmFzdE1hbGxvYzsNCmNsYXNzIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHsNCiAg
ICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7
IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Mo
c2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUo
cCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpm
YXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldU
Rjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywg
dm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Vi
a2l0RmFzdE1hbGxvY2VkID0gaW50OyB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc01hY3JvID0gaW50Ow0KcHVibGljOg0KICAgIGVudW0gT2Zmc2V0QmFzZVR5cGUg
eyBGcmFtZVBvaW50ZXJCYXNlZCwgWmVyb0Jhc2VkIH07DQoNCiAgICBSZWdpc3RlckF0T2Zmc2V0
TGlzdCgpOw0KICAgIGV4cGxpY2l0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KFJlZ2lzdGVyU2V0LCBP
ZmZzZXRCYXNlVHlwZSA9IEZyYW1lUG9pbnRlckJhc2VkKTsNCg0KICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0Ow0KDQogICAgdm9pZCBjbGVhcigpDQogICAgew0KICAgICAgICBtX3Jl
Z2lzdGVycy5jbGVhcigpOw0KICAgIH0NCg0KICAgIHNpemVfdCBzaXplKCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBtX3JlZ2lzdGVycy5zaXplKCk7DQogICAgfQ0KDQogICAgY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldCYgYXQoc2l6ZV90IGluZGV4KSBjb25zdA0KICAgIHsNCiAgICAgICAg
cmV0dXJuIG1fcmVnaXN0ZXJzLmF0KGluZGV4KTsNCiAgICB9DQoNCiAgICBSZWdpc3RlckF0T2Zm
c2V0JiBhdChzaXplX3QgaW5kZXgpDQogICAgew0KICAgICAgICByZXR1cm4gbV9yZWdpc3RlcnMu
YXQoaW5kZXgpOw0KICAgIH0NCiAgICANCiAgICBSZWdpc3RlckF0T2Zmc2V0KiBmaW5kKFJlZykg
Y29uc3Q7DQogICAgdW5zaWduZWQgaW5kZXhPZihSZWcpIGNvbnN0OyANCg0KICAgIFZlY3RvcjxS
ZWdpc3RlckF0T2Zmc2V0Pjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X3JlZ2lzdGVycy5iZWdpbigpOyB9DQogICAgVmVjdG9yPFJlZ2lzdGVyQXRPZmZzZXQ+Ojpjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVycy5lbmQoKTsgfQ0KDQog
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpOyANCg0KcHJpdmF0ZToNCiAgICBWZWN0b3I8UmVnaXN0ZXJBdE9mZnNl
dD4gbV9yZWdpc3RlcnM7DQp9Ow0KDQp9IA0KDQojbGluZSA4MSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXFJlZ2lzdGVyQXRPZmZzZXRMaXN0
LmgiDQojbGluZSA0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxUYWdSZWdpc3RlcnNN
b2RlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51bSBUYWdSZWdpc3RlcnNNb2Rl
IHsNCiAgICBEb05vdEhhdmVUYWdSZWdpc3RlcnMsDQogICAgSGF2ZVRhZ1JlZ2lzdGVycw0KfTsN
Cg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIFByaW50U3RyZWFtOw0Kdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpUYWdSZWdpc3RlcnNNb2RlKTsNCg0KfSANCiNs
aW5lIDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp0eXBl
ZGVmIHZvaWQgKCpWX0RlYnVnT3BlcmF0aW9uX0VQUCkoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQq
KTsNCg0KY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsNCnB1
YmxpYzoNCiAgICBBc3NlbWJseUhlbHBlcnMoQ29kZUJsb2NrKiBjb2RlQmxvY2spDQogICAgICAg
IDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQ0KICAgICAgICAsIG1fYmFzZWxpbmVDb2RlQmxvY2so
Y29kZUJsb2NrID8gY29kZUJsb2NrLT5iYXNlbGluZUFsdGVybmF0aXZlKCkgOiBudWxscHRyKQ0K
ICAgIHsNCiAgICAgICAgaWYgKG1fY29kZUJsb2NrKSB7DQogICAgICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IH0NCiAgICB9DQoNCiAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIHsgcmV0dXJuIG1fY29kZUJs
b2NrOyB9DQogICAgVk0mIHZtKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPnZtKCk7IH0NCiAgICBB
c3NlbWJsZXJUeXBlX1QmIGFzc2VtYmxlcigpIHsgcmV0dXJuIG1fYXNzZW1ibGVyOyB9DQoNCiAg
ICB2b2lkIHByZXBhcmVDYWxsT3BlcmF0aW9uKFZNJiB2bSkNCiAgICB7DQogICAgICAgICh2b2lk
KXZtOw0KDQogICAgICAgIHN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0u
dG9wQ2FsbEZyYW1lKTsNCiNsaW5lIDc2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQogICAg
dm9pZCBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpDQogICAgew0KICAgICAgICANCg0KDQoN
Cg0KI2xpbmUgODYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCg0KICAgIHZvaWQgc3RvcmU2
NEZyb21SZWcoUmVnIHNyYywgQWRkcmVzcyBkc3QpDQogICAgew0KICAgICAgICBpZiAoc3JjLmlz
RlBSKCkpDQogICAgICAgICAgICBzdG9yZURvdWJsZShzcmMuZnByKCksIGRzdCk7DQogICAgICAg
IGVsc2UNCiAgICAgICAgICAgIHN0b3JlNjQoc3JjLmdwcigpLCBkc3QpOw0KICAgIH0NCiNsaW5l
IDk3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgDQogICAgdm9pZCBzdG9yZTMyRnJvbVJlZyhSZWcg
c3JjLCBBZGRyZXNzIGRzdCkNCiAgICB7DQogICAgICAgIGlmIChzcmMuaXNGUFIoKSkNCiAgICAg
ICAgICAgIHN0b3JlRmxvYXQoc3JjLmZwcigpLCBkc3QpOw0KICAgICAgICBlbHNlDQogICAgICAg
ICAgICBzdG9yZTMyKHNyYy5ncHIoKSwgZHN0KTsNCiAgICB9DQoNCiAgICB2b2lkIHN0b3JlUmVn
KFJlZyBzcmMsIEFkZHJlc3MgZHN0KQ0KICAgIHsNCg0KICAgICAgICBzdG9yZTY0RnJvbVJlZyhz
cmMsIGRzdCk7DQoNCg0KI2xpbmUgMTEzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQoNCiAg
ICB2b2lkIGxvYWQ2NFRvUmVnKEFkZHJlc3Mgc3JjLCBSZWcgZHN0KQ0KICAgIHsNCiAgICAgICAg
aWYgKGRzdC5pc0ZQUigpKQ0KICAgICAgICAgICAgbG9hZERvdWJsZShzcmMsIGRzdC5mcHIoKSk7
DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIGxvYWQ2NChzcmMsIGRzdC5ncHIoKSk7DQogICAg
fQ0KI2xpbmUgMTI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgDQogICAgdm9pZCBsb2FkMzJUb1Jl
ZyhBZGRyZXNzIHNyYywgUmVnIGRzdCkNCiAgICB7DQogICAgICAgIGlmIChkc3QuaXNGUFIoKSkN
CiAgICAgICAgICAgIGxvYWRGbG9hdChzcmMsIGRzdC5mcHIoKSk7DQogICAgICAgIGVsc2UNCiAg
ICAgICAgICAgIGxvYWQzMihzcmMsIGRzdC5ncHIoKSk7DQogICAgfQ0KDQogICAgdm9pZCBsb2Fk
UmVnKEFkZHJlc3Mgc3JjLCBSZWcgZHN0KQ0KICAgIHsNCg0KICAgICAgICBsb2FkNjRUb1JlZyhz
cmMsIGRzdCk7DQoNCg0KI2xpbmUgMTQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4NCiAgICB2b2lkIHN0b3JlQ2VsbChUIGNlbGwsIEFkZHJlc3Mg
YWRkcmVzcykNCiAgICB7DQoNCiAgICAgICAgc3RvcmU2NChjZWxsLCBhZGRyZXNzKTsNCg0KDQoN
CiNsaW5lIDE1MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCiAgICANCiAgICB2b2lkIGxvYWRD
ZWxsKEFkZHJlc3MgYWRkcmVzcywgR1BSUmVnIGdwcikNCiAgICB7DQoNCiAgICAgICAgbG9hZDY0
KGFkZHJlc3MsIGdwcik7DQoNCg0KI2xpbmUgMTYwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0K
ICAgIA0KICAgIHZvaWQgc3RvcmVWYWx1ZShKU1ZhbHVlUmVncyByZWdzLCBBZGRyZXNzIGFkZHJl
c3MpDQogICAgew0KDQogICAgICAgIHN0b3JlNjQocmVncy5ncHIoKSwgYWRkcmVzcyk7DQoNCg0K
DQojbGluZSAxNzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQogICAgDQogICAgdm9pZCBzdG9y
ZVZhbHVlKEpTVmFsdWVSZWdzIHJlZ3MsIEJhc2VJbmRleCBhZGRyZXNzKQ0KICAgIHsNCg0KICAg
ICAgICBzdG9yZTY0KHJlZ3MuZ3ByKCksIGFkZHJlc3MpOw0KDQoNCg0KI2xpbmUgMTgwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1i
bHlIZWxwZXJzLmgiDQogICAgfQ0KICAgIA0KICAgIHZvaWQgc3RvcmVWYWx1ZShKU1ZhbHVlUmVn
cyByZWdzLCB2b2lkKiBhZGRyZXNzKQ0KICAgIHsNCg0KICAgICAgICBzdG9yZTY0KHJlZ3MuZ3By
KCksIGFkZHJlc3MpOw0KDQoNCg0KI2xpbmUgMTkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0K
ICAgIA0KICAgIHZvaWQgbG9hZFZhbHVlKEFkZHJlc3MgYWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVn
cykNCiAgICB7DQoNCiAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOw0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDIwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCiAgICANCiAgICB2
b2lkIGxvYWRWYWx1ZShCYXNlSW5kZXggYWRkcmVzcywgSlNWYWx1ZVJlZ3MgcmVncykNCiAgICB7
DQoNCiAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHJlZ3MuZ3ByKCkpOw0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAyMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCiAgICB2b2lk
IGxvYWRWYWx1ZSh2b2lkKiBhZGRyZXNzLCBKU1ZhbHVlUmVncyByZWdzKQ0KICAgIHsNCg0KICAg
ICAgICBsb2FkNjQoYWRkcmVzcywgcmVncy5ncHIoKSk7DQoNCg0KDQojbGluZSAyMzUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJs
eUhlbHBlcnMuaCINCiAgICB9DQogICAgDQogICAgDQogICAgdm9pZCBsb2FkUHJvcGVydHkoR1BS
UmVnIG9iamVjdCwgR1BSUmVnIG9mZnNldCwgSlNWYWx1ZVJlZ3MgcmVzdWx0KTsNCg0KICAgIHZv
aWQgbW92ZVZhbHVlUmVncyhKU1ZhbHVlUmVncyBzcmNSZWdzLCBKU1ZhbHVlUmVncyBkZXN0UmVn
cykNCiAgICB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNTUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBl
cnMuaCINCiAgICAgICAgbW92ZShzcmNSZWdzLmdwcigpLCBkZXN0UmVncy5ncHIoKSk7DQojbGlu
ZSAyNTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCiAgICB2b2lkIG1vdmVWYWx1ZShKU1Zh
bHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQ0KICAgIHsNCg0KICAgICAgICBtb3ZlKEltbTY0
KEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpLCByZWdzLmdwcigpKTsNCg0KDQoNCiNsaW5lIDI2NyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFz
c2VtYmx5SGVscGVycy5oIg0KICAgIH0NCg0KICAgIHZvaWQgbW92ZVRydXN0ZWRWYWx1ZShKU1Zh
bHVlIHZhbHVlLCBKU1ZhbHVlUmVncyByZWdzKQ0KICAgIHsNCg0KICAgICAgICBtb3ZlKFRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUodmFsdWUpKSwgcmVncy5ncHIoKSk7DQoNCg0KDQojbGlu
ZSAyNzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQogICAgDQogICAgdm9pZCBzdG9yZVRydXN0
ZWRWYWx1ZShKU1ZhbHVlIHZhbHVlLCBBZGRyZXNzIGFkZHJlc3MpDQogICAgew0KDQogICAgICAg
IHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpLCBhZGRyZXNzKTsN
Cg0KDQoNCiNsaW5lIDI4NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCg0KICAgIHZvaWQgc3Rv
cmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSB2YWx1ZSwgQmFzZUluZGV4IGFkZHJlc3MpDQogICAgew0K
DQogICAgICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpLCBh
ZGRyZXNzKTsNCg0KDQoNCiNsaW5lIDI5NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCiAgICAN
CiAgICBBZGRyZXNzIGFkZHJlc3NGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgZW50cnkpDQog
ICAgew0KICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
ZW50cnkub2Zmc2V0KCkpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGVtaXRTYXZlKGNvbnN0IFJl
Z2lzdGVyQXRPZmZzZXRMaXN0JiBsaXN0KQ0KICAgIHsNCiAgICAgICAgZm9yIChjb25zdCBSZWdp
c3RlckF0T2Zmc2V0JiBlbnRyeSA6IGxpc3QpIHsNCiAgICAgICAgICAgIGlmIChlbnRyeS5yZWco
KS5pc0dQUigpKQ0KICAgICAgICAgICAgICAgIHN0b3JlUHRyKGVudHJ5LnJlZygpLmdwcigpLCBh
ZGRyZXNzRm9yKGVudHJ5KSk7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgc3Rv
cmVEb3VibGUoZW50cnkucmVnKCkuZnByKCksIGFkZHJlc3NGb3IoZW50cnkpKTsNCiAgICAgICAg
fQ0KICAgIH0NCiAgICANCiAgICB2b2lkIGVtaXRSZXN0b3JlKGNvbnN0IFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0JiBsaXN0KQ0KICAgIHsNCiAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0
JiBlbnRyeSA6IGxpc3QpIHsNCiAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5pc0dQUigpKQ0K
ICAgICAgICAgICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihlbnRyeSksIGVudHJ5LnJlZygpLmdw
cigpKTsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBsb2FkRG91YmxlKGFkZHJl
c3NGb3IoZW50cnkpLCBlbnRyeS5yZWcoKS5mcHIoKSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAg
ICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7DQogICAg
ICAgIFJlZ2lzdGVyU2V0IGRvbnRTYXZlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0ZXJT
ZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOw0KICAgICAgICB1
bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsNCg0KICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVnaXN0ZXJDb3VudDsgaSsrKSB7DQogICAgICAgICAg
ICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0gY2FsbGVlU2F2ZXMtPmF0KGkpOw0KICAgICAgICAg
ICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdldChlbnRyeS5yZWcoKSkpDQogICAgICAgICAgICAg
ICAgY29udGludWU7DQogICAgICAgICAgICBzdG9yZVB0cihlbnRyeS5yZWcoKS5ncHIoKSwgQWRk
cmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpKTsNCiAgICAgICAgfQ0K
ICAgIH0NCiAgICANCiAgICBlbnVtIFJlc3RvcmVUYWdSZWdpc3Rlck1vZGUgeyBVc2VFeGlzdGlu
Z1RhZ1JlZ2lzdGVyQ29udGVudHMsIENvcHlCYXNlbGluZUNhbGxlZVNhdmVkUmVnaXN0ZXJzRnJv
bUJhc2VGcmFtZSB9Ow0KDQogICAgdm9pZCBlbWl0U2F2ZU9yQ29weUNhbGxlZVNhdmVzRm9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWaXJ0dWFsUmVnaXN0ZXIgb2Zmc2V0VmlydHVhbFJlZ2lzdGVy
LCBSZXN0b3JlVGFnUmVnaXN0ZXJNb2RlIHRhZ1JlZ2lzdGVyTW9kZSwgR1BSUmVnIHRlbXApDQog
ICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIA0KICAgICAgICBjb25zdCBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCogY2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKTsNCiAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFNhdmVSZWdpc3RlcnMgPSBSZWdpc3RlclNl
dChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKSk7
DQogICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZlcy0+c2l6ZSgpOw0K
DQoNCiAgICAgICAgUmVnaXN0ZXJTZXQgYmFzZWxpbmVDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOw0KI2xpbmUgMzUzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlI
ZWxwZXJzLmgiDQogICAgICAgIA0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVn
aXN0ZXJDb3VudDsgaSsrKSB7DQogICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5ID0g
Y2FsbGVlU2F2ZXMtPmF0KGkpOw0KICAgICAgICAgICAgaWYgKGRvbnRTYXZlUmVnaXN0ZXJzLmdl
dChlbnRyeS5yZWcoKSkpDQogICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAN
CiAgICAgICAgICAgIEdQUlJlZyByZWdpc3RlclRvV3JpdGU7DQogICAgICAgICAgICANCg0KDQoN
CiNsaW5lIDM2NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgICAgICAgICAgaWYgKHRhZ1JlZ2lzdGVy
TW9kZSA9PSBDb3B5QmFzZWxpbmVDYWxsZWVTYXZlZFJlZ2lzdGVyc0Zyb21CYXNlRnJhbWUgJiYg
YmFzZWxpbmVDYWxsZWVTYXZlcy5nZXQoZW50cnkucmVnKCkpKSB7DQogICAgICAgICAgICAgICAg
cmVnaXN0ZXJUb1dyaXRlID0gdGVtcDsNCiAgICAgICAgICAgICAgICBsb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zmc2V0
KCkpLCByZWdpc3RlclRvV3JpdGUpOw0KICAgICAgICAgICAgfSBlbHNlDQojbGluZSAzNzAgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3Nl
bWJseUhlbHBlcnMuaCINCiAgICAgICAgICAgICAgICByZWdpc3RlclRvV3JpdGUgPSBlbnRyeS5y
ZWcoKS5ncHIoKTsNCg0KICAgICAgICAgICAgc3RvcmVQdHIocmVnaXN0ZXJUb1dyaXRlLCBBZGRy
ZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBvZmZzZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0SW5C
eXRlcygpICsgZW50cnkub2Zmc2V0KCkpKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICB2
b2lkIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExp
c3QqIGNhbGxlZVNhdmVzID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7DQogICAg
ICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlUmVnaXN0ZXJzID0gUmVnaXN0ZXJTZXQoUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCksIFJlZ2lzdGVyU2V0OjphbGxGUFJzKCkpOw0KICAgICAg
ICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gY2FsbGVlU2F2ZXMtPnNpemUoKTsNCiAgICAgICAg
DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpc3RlckNvdW50OyBpKyspIHsN
CiAgICAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQgZW50cnkgPSBjYWxsZWVTYXZlcy0+YXQoaSk7
DQogICAgICAgICAgICBpZiAoZG9udFJlc3RvcmVSZWdpc3RlcnMuZ2V0KGVudHJ5LnJlZygpKSkN
CiAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhm
cmFtZVBvaW50ZXJSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkpLCBlbnRyeS5yZWcoKS5ncHIoKSk7
DQogICAgICAgIH0NCiAgICB9DQoNCiAgICB2b2lkIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQ0KICAg
IHsNCiAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0Zvcihjb2RlQmxvY2soKSk7DQogICAgfQ0K
DQogICAgdm9pZCBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVycygpDQogICAgew0K
DQoNCg0KI2xpbmUgNDAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgICAgIHB1c2goR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpOw0KICAgICAgICBwdXNoKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpOw0KI2xpbmUgNDA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgICAgIGVtaXRNYXRlcmlh
bGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7DQojbGluZSA0MDggIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAg
ICB9DQogICAgDQogICAgdm9pZCBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCkNCiAgICB7DQogICAg
ICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29kZUJsb2NrKCkpOw0KICAgIH0NCg0KICAg
IHZvaWQgZW1pdFJlc3RvcmVTYXZlZFRhZ1JlZ2lzdGVycygpDQogICAgew0KDQoNCg0KI2xpbmUg
NDIxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgICAgIHBvcChHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKTsNCiAgICAgICAgcG9wKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsNCiNsaW5l
IDQyNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxq
aXRcXEFzc2VtYmx5SGVscGVycy5oIg0KI2xpbmUgNDI1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAg
fQ0KDQogICAgDQogICAgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKEdQUlJlZyB2bUdQUikNCiAgICB7DQoNCiAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHZtR1BSLCBWTTo6dG9wRW50cnlGcmFtZU9mZnNldCgpKSwgdm1HUFIpOw0KICAgICAgICBjb3B5
Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwodm1HUFIpOw0KDQoN
CiNsaW5lIDQzNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCg0KICAgIHZvaWQgY29weUNhbGxl
ZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5
RnJhbWUpDQogICAgew0KDQogICAgICAgIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycyA9IHsgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH07DQogICAg
ICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsNCiAgICAgICAg
bG9hZFB0cigmdG9wRW50cnlGcmFtZSwgdGVtcDEpOw0KICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNU
b0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlckltcGwodGVtcDEpOw0KDQoNCiNsaW5lIDQ0OCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFz
c2VtYmx5SGVscGVycy5oIg0KICAgIH0NCiAgICANCiAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKEdQUlJlZyB0b3BFbnRyeUZyYW1lKQ0KICAgIHsN
Cg0KICAgICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcklt
cGwodG9wRW50cnlGcmFtZSk7DQoNCg0KI2xpbmUgNDU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAg
fQ0KDQogICAgdm9pZCByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKEVudHJ5RnJhbWUqJik7DQoNCiAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc0Zyb21GcmFt
ZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYgdG9w
RW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzID0geyBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkNCiAgICB7DQoNCiAgICAgICAg
R1BSUmVnIHRlbXAxID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDApOw0KICAgICAgICBHUFJS
ZWcgdGVtcDIgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVHUFIoMSk7DQogICAgICAgIEZQUlJlZyBm
cFRlbXAgPSB1c2VkUmVnaXN0ZXJzLmdldEZyZWVGUFIoKTsNCiAgICAgICAgKCh2b2lkKTApOw0K
DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICANCiAgICAgICAgbG9hZFB0cigmdG9wRW50
cnlGcmFtZSwgdGVtcDEpOw0KICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6
OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSksIHRlbXAxKTsNCg0KICAgICAgICBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxs
ZWVTYXZlUmVnaXN0ZXJPZmZzZXRzKCk7DQogICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRM
aXN0KiBjdXJyZW50Q2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2soKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
cygpOw0KICAgICAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpOw0KICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxs
Q2FsbGVlU2F2ZXMtPnNpemUoKTsNCg0KICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cmVnaXN0ZXJDb3VudDsgaSsrKSB7DQogICAgICAgICAgICBSZWdpc3RlckF0T2Zmc2V0IGVudHJ5
ID0gYWxsQ2FsbGVlU2F2ZXMtPmF0KGkpOw0KICAgICAgICAgICAgaWYgKGRvbnRDb3B5UmVnaXN0
ZXJzLmdldChlbnRyeS5yZWcoKSkpDQogICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAg
ICAgICBSZWdpc3RlckF0T2Zmc2V0KiBjdXJyZW50RnJhbWVFbnRyeSA9IGN1cnJlbnRDYWxsZWVT
YXZlcy0+ZmluZChlbnRyeS5yZWcoKSk7DQoNCiAgICAgICAgICAgIGlmIChlbnRyeS5yZWcoKS5p
c0dQUigpKSB7DQogICAgICAgICAgICAgICAgR1BSUmVnIHJlZ1RvU3RvcmU7DQogICAgICAgICAg
ICAgICAgaWYgKGN1cnJlbnRGcmFtZUVudHJ5KSB7DQogICAgICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gdGVtcDI7DQogICAgICAgICAgICAgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgY3VycmVudEZyYW1lRW50cnkt
Pm9mZnNldCgpKSwgcmVnVG9TdG9yZSk7DQogICAgICAgICAgICAgICAgfSBlbHNlDQogICAgICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICByZWdUb1N0b3JlID0gZW50cnkucmVn
KCkuZ3ByKCk7DQoNCiAgICAgICAgICAgICAgICBzdG9yZVB0cihyZWdUb1N0b3JlLCBBZGRyZXNz
KHRlbXAxLCBlbnRyeS5vZmZzZXQoKSkpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAg
ICAgICAgICBGUFJSZWcgZnBSZWdUb1N0b3JlOw0KICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
RnJhbWVFbnRyeSkgew0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ZnBSZWdUb1N0b3JlID0gZnBUZW1wOw0KICAgICAgICAgICAgICAgICAgICBsb2FkRG91YmxlKEFk
ZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGN1cnJlbnRGcmFtZUVudHJ5LT5vZmZzZXQoKSks
IGZwUmVnVG9TdG9yZSk7DQogICAgICAgICAgICAgICAgfSBlbHNlDQogICAgICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgICAgICBmcFJlZ1RvU3RvcmUgPSBlbnRyeS5yZWcoKS5mcHIo
KTsNCg0KICAgICAgICAgICAgICAgIHN0b3JlRG91YmxlKGZwUmVnVG9TdG9yZSwgQWRkcmVzcyh0
ZW1wMSwgZW50cnkub2Zmc2V0KCkpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0K
I2xpbmUgNTE0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQogICAgdm9pZCBlbWl0TWF0ZXJp
YWxpemVUYWdDaGVja1JlZ2lzdGVycygpDQogICAgew0KDQogICAgICAgIG1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3Rlcik7DQogICAgICAgIG9yNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpPdGhlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKTsNCiNsaW5lIDUyMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0N
Cg0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpDQogICAgew0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHNpemVvZih2b2lkKik7DQogICAg
fQ0KDQogICAgdm9pZCBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpDQogICAgew0KICAgICAgICBwdXNo
KGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsNCiAgICAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOw0KICAgIH0NCg0KICAgIHZvaWQgZW1pdEZ1bmN0aW9u
RXBpbG9ndWVXaXRoRW1wdHlGcmFtZSgpDQogICAgew0KICAgICAgICBwb3AoZnJhbWVQb2ludGVy
UmVnaXN0ZXIpOw0KICAgIH0NCg0KICAgIHZvaWQgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKQ0KICAg
IHsNCiAgICAgICAgbW92ZShmcmFtZVBvaW50ZXJSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOw0KICAgICAgICBwb3AoZnJhbWVQb2ludGVyUmVnaXN0ZXIpOw0KICAgIH0NCg0KICAgIHZv
aWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUlJlZyByZWcpDQogICAgew0KICAg
ICAgICBwb3AocmVnKTsNCiAgICB9DQoNCiAgICB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKEdQUlJlZyByZWcpDQogICAgew0KICAgICAgICBwdXNoKHJlZyk7DQogICAgfQ0K
DQogICAgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJl
c3MpDQogICAgew0KICAgICAgICBwdXNoKGFkZHJlc3MpOw0KICAgIH0NCg0KICAgIA0KICAgIHZv
aWQgc2hpZnRBbmRBZGQoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCB1aW50OF90
IHNoaWZ0LCBSZWdpc3RlcklEIGRlc3QsIE9wdGlvbmFsPFJlZ2lzdGVySUQ+IG9wdGlvbmFsU2Ny
YXRjaCA9IHsgfSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgaWYgKHNoaWZ0
IDw9IDMpIHsNCiAgICAgICAgICAgIHg4NkxlYTY0KEJhc2VJbmRleChiYXNlLCBpbmRleCwgc3Rh
dGljX2Nhc3Q8U2NhbGU+KHNoaWZ0KSksIGRlc3QpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAg
ICAgICB9DQoNCiAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoID0gZGVzdDsNCiAgICAgICAgYm9v
bCBuZWVkVG9QcmVzZXJ2ZUluZGV4UmVnaXN0ZXIgPSBmYWxzZTsNCiAgICAgICAgaWYgKGJhc2Ug
PT0gZGVzdCkgew0KICAgICAgICAgICAgc2NyYXRjaCA9IG9wdGlvbmFsU2NyYXRjaCA/IG9wdGlv
bmFsU2NyYXRjaC52YWx1ZSgpIDogc2NyYXRjaFJlZ2lzdGVyKCk7DQogICAgICAgICAgICBpZiAo
YmFzZSA9PSBzY3JhdGNoKSB7DQogICAgICAgICAgICAgICAgc2NyYXRjaCA9IGluZGV4Ow0KICAg
ICAgICAgICAgICAgIG5lZWRUb1ByZXNlcnZlSW5kZXhSZWdpc3RlciA9IHRydWU7DQogICAgICAg
ICAgICB9IGVsc2UgaWYgKGluZGV4ID09IHNjcmF0Y2gpDQogICAgICAgICAgICAgICAgbmVlZFRv
UHJlc2VydmVJbmRleFJlZ2lzdGVyID0gdHJ1ZTsNCiAgICAgICAgICAgIGlmIChuZWVkVG9QcmVz
ZXJ2ZUluZGV4UmVnaXN0ZXIpDQogICAgICAgICAgICAgICAgcHVzaChpbmRleCk7DQogICAgICAg
IH0NCg0KICAgICAgICBtb3ZlKGluZGV4LCBzY3JhdGNoKTsNCiAgICAgICAgbHNoaWZ0NjQoVHJ1
c3RlZEltbTMyKHNoaWZ0KSwgc2NyYXRjaCk7DQogICAgICAgIG1fYXNzZW1ibGVyLmxlYXFfbXIo
MCwgYmFzZSwgc2NyYXRjaCwgMCwgZGVzdCk7DQoNCiAgICAgICAgaWYgKG5lZWRUb1ByZXNlcnZl
SW5kZXhSZWdpc3RlcikNCiAgICAgICAgICAgIHBvcChpbmRleCk7DQogICAgfQ0KDQojbGluZSA1
OTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0
XFxBc3NlbWJseUhlbHBlcnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojbGluZSA2NDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDY4NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KDQogICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxG
cmFtZUhlYWRlclB0cihWaXJ0dWFsUmVnaXN0ZXIgZW50cnksIEdQUlJlZyB0bywgR1BSUmVnIGZy
b20gPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcikNCiAgICB7DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyb20sIGVudHJ5Lm9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSksIHRvKTsNCiAgICB9DQogICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlcjMyKFZpcnR1YWxSZWdpc3RlciBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJvbSA9IEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhmcm9tLCBlbnRyeS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpLCB0byk7DQogICAgfQ0KDQogICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjY0
KFZpcnR1YWxSZWdpc3RlciBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJvbSA9IEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBs
b2FkNjQoQWRkcmVzcyhmcm9tLCBlbnRyeS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCB0
byk7DQogICAgfQ0KI2xpbmUgNzAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgdm9pZCBlbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIoR1BSUmVnIGZyb20sIFZpcnR1YWxSZWdpc3RlciBlbnRyeSkNCiAg
ICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0
ZXIpKSk7DQogICAgfQ0KDQogICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCog
dmFsdWUsIFZpcnR1YWxSZWdpc3RlciBlbnRyeSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOw0K
ICAgIH0NCg0KICAgIHZvaWQgZW1pdEdldENhbGxlckZyYW1lRnJvbUNhbGxGcmFtZUhlYWRlclB0
cihSZWdpc3RlcklEIHRvKQ0KICAgIHsNCiAgICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpLCB0byk7
DQogICAgfQ0KICAgIHZvaWQgZW1pdFB1dENhbGxlckZyYW1lVG9DYWxsRnJhbWVIZWFkZXIoUmVn
aXN0ZXJJRCBmcm9tKQ0KICAgIHsNCiAgICAgICAgc3RvcmVQdHIoZnJvbSwgQWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZU9mZnNldCgpKSk7
DQogICAgfQ0KDQogICAgdm9pZCBlbWl0UHV0UmV0dXJuUENUb0NhbGxGcmFtZUhlYWRlcihSZWdp
c3RlcklEIGZyb20pDQogICAgew0KICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpKTsNCiAg
ICB9DQogICAgdm9pZCBlbWl0UHV0UmV0dXJuUENUb0NhbGxGcmFtZUhlYWRlcihUcnVzdGVkSW1t
UHRyIGZyb20pDQogICAgew0KICAgICAgICBzdG9yZVB0cihmcm9tLCBBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpKTsNCiAgICB9
DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAgIHZvaWQgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyQmVmb3JlUHJvbG9ndWUoR1BSUmVnIGZyb20sIFZpcnR1YWxSZWdp
c3RlciBlbnRyeSkNCiAgICB7DQogICAgICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3Moc3RhY2tQ
b2ludGVyUmVnaXN0ZXIsIGVudHJ5Lm9mZnNldCgpICogc3RhdGljX2Nhc3Q8cHRyZGlmZl90Pihz
aXplb2YoUmVnaXN0ZXIpKSAtIHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSkpOw0KICAgIH0N
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzU1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgDQog
ICAgSnVtcExpc3QgYnJhbmNoSWZOb3RFcXVhbChKU1ZhbHVlUmVncyByZWdzLCBKU1ZhbHVlIHZh
bHVlKQ0KICAgIHsNCg0KICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIHJlZ3MuZ3By
KCksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUodmFsdWUpKSk7DQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDc2OCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCiAgICANCiAgICBKdW1wIGJyYW5j
aElmRXF1YWwoSlNWYWx1ZVJlZ3MgcmVncywgSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQoNCiAgICAg
ICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCByZWdzLmdwcigpLCBUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6ZW5jb2RlKHZhbHVlKSkpOw0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzg0ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlI
ZWxwZXJzLmgiDQogICAgfQ0KDQogICAgSnVtcCBicmFuY2hJZk5vdENlbGwoR1BSUmVnIHJlZywg
VGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICB7DQoNCiAgICAg
ICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICAgICAgICAgIHJldHVybiBicmFu
Y2hUZXN0NjQoTm9uWmVybywgcmVnLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsNCiAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWcsIFRydXN0ZWRJbW02NChKU1Zh
bHVlOjpOb3RDZWxsTWFzaykpOw0KDQoNCg0KI2xpbmUgNzk2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQog
ICAgfQ0KDQogICAgSnVtcCBicmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVn
aXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICB7DQoNCiAgICAgICAgcmV0
dXJuIGJyYW5jaElmTm90Q2VsbChyZWdzLmdwcigpLCBtb2RlKTsNCg0KDQojbGluZSA4MDUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3Nl
bWJseUhlbHBlcnMuaCINCiAgICB9DQogICAgDQogICAgSnVtcCBicmFuY2hJZkNlbGwoR1BSUmVn
IHJlZywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICB7DQoN
CiAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICAgICAgICAgIHJldHVy
biBicmFuY2hUZXN0NjQoWmVybywgcmVnLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsN
CiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcsIFRydXN0ZWRJbW02NChKU1Zh
bHVlOjpOb3RDZWxsTWFzaykpOw0KDQoNCg0KI2xpbmUgODE3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQog
ICAgfQ0KICAgIEp1bXAgYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzIHJlZ3MsIFRhZ1JlZ2lzdGVy
c01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpDQogICAgew0KDQogICAgICAgIHJldHVybiBi
cmFuY2hJZkNlbGwocmVncy5ncHIoKSwgbW9kZSk7DQoNCg0KI2xpbmUgODI1ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxw
ZXJzLmgiDQogICAgfQ0KICAgIA0KICAgIEp1bXAgYnJhbmNoSWZPdGhlcihKU1ZhbHVlUmVncyBy
ZWdzLCBHUFJSZWcgdGVtcEdQUikNCiAgICB7DQoNCiAgICAgICAgbW92ZShyZWdzLmdwcigpLCB0
ZW1wR1BSKTsNCiAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRU
YWcpLCB0ZW1wR1BSKTsNCiAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1wR1BSLCBU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSk7DQoNCg0KDQojbGluZSA4MzcgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJs
eUhlbHBlcnMuaCINCiAgICB9DQogICAgDQogICAgSnVtcCBicmFuY2hJZk5vdE90aGVyKEpTVmFs
dWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQ0KICAgIHsNCg0KICAgICAgICBtb3ZlKHJlZ3Mu
Z3ByKCksIHRlbXBHUFIpOw0KICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofkpTVmFsdWU6OlVu
ZGVmaW5lZFRhZyksIHRlbXBHUFIpOw0KICAgICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWws
IHRlbXBHUFIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsNCg0KDQoNCiNsaW5l
IDg0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxq
aXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCiAgICANCiAgICBKdW1wIGJyYW5jaElmSW50
MzIoR1BSUmVnIGdwciwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykN
CiAgICB7DQoNCiAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICAgICAg
ICAgIHJldHVybiBicmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOw0KICAgICAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIFRy
dXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpKTsNCg0KDQoNCiNsaW5lIDg2MSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5
SGVscGVycy5oIg0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoSWZJbnQzMihKU1ZhbHVlUmVncyBy
ZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJzKQ0KICAgIHsNCg0K
ICAgICAgICByZXR1cm4gYnJhbmNoSWZJbnQzMihyZWdzLmdwcigpLCBtb2RlKTsNCg0KDQojbGlu
ZSA4NzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaElmTm90SW50
MzIoR1BSUmVnIGdwciwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykN
CiAgICB7DQoNCiAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICAgICAg
ICAgIHJldHVybiBicmFuY2g2NChCZWxvdywgZ3ByLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cik7DQogICAgICAgIHJldHVybiBicmFuY2g2NChCZWxvdywgZ3ByLCBUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6TnVtYmVyVGFnKSk7DQoNCg0KDQojbGluZSA4ODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAg
ICB9DQoNCiAgICBKdW1wIGJyYW5jaElmTm90SW50MzIoSlNWYWx1ZVJlZ3MgcmVncywgVGFnUmVn
aXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICB7DQoNCiAgICAgICAgcmV0
dXJuIGJyYW5jaElmTm90SW50MzIocmVncy5ncHIoKSwgbW9kZSk7DQoNCg0KI2xpbmUgODkxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNz
ZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQogICAgDQogICAgSnVtcCBicmFuY2hJZk51bWJlcihK
U1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0g
SGF2ZVRhZ1JlZ2lzdGVycykNCiAgICB7DQoNCiAgICAgICAgKHZvaWQpdGVtcEdQUjsNCiAgICAg
ICAgcmV0dXJuIGJyYW5jaElmTnVtYmVyKHJlZ3MuZ3ByKCksIG1vZGUpOw0KDQoNCg0KDQoNCiNs
aW5lIDkwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCg0KDQogICAgSnVtcCBicmFuY2hJZk51
bWJlcihHUFJSZWcgZ3ByLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0ZXJz
KQ0KICAgIHsNCiAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgZ3ByLCBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7DQogICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgZ3ByLCBUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSk7DQogICAgfQ0KI2xpbmUgOTE1ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlI
ZWxwZXJzLmgiDQogICAgDQogICAgDQogICAgSnVtcCBicmFuY2hJZk5vdE51bWJlcihKU1ZhbHVl
UmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUiwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycykNCiAgICB7DQoNCiAgICAgICAgKHZvaWQpdGVtcEdQUjsNCiAgICAgICAgcmV0
dXJuIGJyYW5jaElmTm90TnVtYmVyKHJlZ3MuZ3ByKCksIG1vZGUpOw0KDQoNCg0KDQojbGluZSA5
MjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0
XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCg0KICAgIEp1bXAgYnJhbmNoSWZOb3ROdW1i
ZXIoR1BSUmVnIGdwciwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykN
CiAgICB7DQogICAgICAgIGlmIChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMpDQogICAgICAgICAg
ICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIGdwciwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpOw0KICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIGdwciwgVHJ1c3RlZEltbTY0
KEpTVmFsdWU6Ok51bWJlclRhZykpOw0KICAgIH0NCiNsaW5lIDkzNyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5o
Ig0KDQogICAgSnVtcCBicmFuY2hJZk5vdERvdWJsZUtub3duTm90SW50MzIoSlNWYWx1ZVJlZ3Mg
cmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICB7DQoN
CiAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICAgICAgICAgIHJldHVy
biBicmFuY2hUZXN0NjQoWmVybywgcmVncy5ncHIoKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpOw0KICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIHJlZ3MuZ3ByKCksIFRydXN0
ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpKTsNCg0KDQoNCiNsaW5lIDk0OCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVs
cGVycy5oIg0KICAgIH0NCg0KICAgIA0KICAgIEp1bXAgYnJhbmNoSWZCb29sZWFuKEdQUlJlZyBn
cHIsIEdQUlJlZyB0ZW1wR1BSKQ0KICAgIHsNCg0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IG1vdmUoZ3ByLCB0ZW1wR1BSKTsNCiAgICAgICAgeG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OlZhbHVlRmFsc2UpLCB0ZW1wR1BSKTsNCiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJv
LCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSk7DQoNCg0K
DQojbGluZSA5NjIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCiAgICANCiAgICBKdW1wIGJy
YW5jaElmQm9vbGVhbihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikNCiAgICB7DQoN
CiAgICAgICAgcmV0dXJuIGJyYW5jaElmQm9vbGVhbihyZWdzLmdwcigpLCB0ZW1wR1BSKTsNCg0K
DQojbGluZSA5NzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQogICAgDQogICAgDQogICAgSnVt
cCBicmFuY2hJZk5vdEJvb2xlYW4oR1BSUmVnIGdwciwgR1BSUmVnIHRlbXBHUFIpDQogICAgew0K
DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgbW92ZShncHIsIHRlbXBHUFIpOw0KICAgICAg
ICB4b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHRlbXBHUFIpOw0KICAg
ICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKTsNCg0KDQoNCiNsaW5lIDk4NiAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVy
cy5oIg0KICAgIH0NCg0KICAgIA0KICAgIEp1bXAgYnJhbmNoSWZOb3RCb29sZWFuKEpTVmFsdWVS
ZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQ0KICAgIHsNCg0KICAgICAgICByZXR1cm4gYnJhbmNo
SWZOb3RCb29sZWFuKHJlZ3MuZ3ByKCksIHRlbXBHUFIpOw0KDQoNCiNsaW5lIDk5NiAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5
SGVscGVycy5oIg0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEwMzQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBl
cnMuaCINCg0KICAgIA0KICAgIEp1bXAgYnJhbmNoSWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpDQog
ICAgew0KICAgICAgICByZXR1cm4gYnJhbmNoOCgNCiAgICAgICAgICAgIEFib3ZlT3JFcXVhbCwg
QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE9iamVjdFR5cGUpKTsNCiAgICB9DQogICAgDQogICAgSnVtcCBicmFuY2hJZk5vdE9iamVj
dChHUFJSZWcgY2VsbEdQUikNCiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2g4KA0KICAgICAg
ICAgICAgQmVsb3csIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIEp1
bXAgYnJhbmNoSWZUeXBlKEdQUlJlZyBjZWxsR1BSLCBKU1R5cGVSYW5nZSByYW5nZSkNCiAgICB7
DQogICAgICAgIGlmIChyYW5nZS5sYXN0ID09IHJhbmdlLmZpcnN0KQ0KICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihyYW5nZS5maXJzdCkpOw0KDQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBzY3JhdGNoUmVnaXN0ZXIoKTsNCiAgICAgICAg
bG9hZDgoQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2Ny
YXRjaCk7DQogICAgICAgIHN1YjMyKFRydXN0ZWRJbW0zMihyYW5nZS5maXJzdCksIHNjcmF0Y2gp
Ow0KICAgICAgICByZXR1cm4gYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBzY3JhdGNoLCBUcnVzdGVk
SW1tMzIocmFuZ2UubGFzdCAtIHJhbmdlLmZpcnN0KSk7DQogICAgfQ0KDQogICAgSnVtcCBicmFu
Y2hJZlR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZSB0eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU1R5cGVSYW5nZSB7IHR5cGUsIHR5cGUgfSk7DQog
ICAgfQ0KDQogICAgSnVtcCBicmFuY2hJZk5vdFR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZVJh
bmdlIHJhbmdlKQ0KICAgIHsNCiAgICAgICAgaWYgKHJhbmdlLmxhc3QgPT0gcmFuZ2UuZmlyc3Qp
DQogICAgICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHJhbmdlLmZpcnN0KSk7
DQoNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHNjcmF0Y2hS
ZWdpc3RlcigpOw0KICAgICAgICBsb2FkOChBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsNCiAgICAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKHJh
bmdlLmZpcnN0KSwgc2NyYXRjaCk7DQogICAgICAgIHJldHVybiBicmFuY2gzMihBYm92ZSwgc2Ny
YXRjaCwgVHJ1c3RlZEltbTMyKHJhbmdlLmxhc3QgLSByYW5nZS5maXJzdCkpOw0KICAgIH0NCg0K
ICAgIEp1bXAgYnJhbmNoSWZOb3RUeXBlKEdQUlJlZyBjZWxsR1BSLCBKU1R5cGUgdHlwZSkNCiAg
ICB7DQogICAgICAgIHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNUeXBlUmFuZ2Ug
eyB0eXBlLCB0eXBlIH0pOw0KICAgIH0NCg0KICAgIA0KICAgIEp1bXAgYnJhbmNoSWZTdHJpbmco
R1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBTdHJpbmdUeXBl
KTsgfQ0KICAgIEp1bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJu
IGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQ0KICAgIEp1bXAgYnJhbmNo
SWZTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBT
eW1ib2xUeXBlKTsgfQ0KICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2woR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQ0KICAgIEp1
bXAgYnJhbmNoSWZIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5
cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9DQogICAgSnVtcCBicmFuY2hJZk5vdEhlYXBC
aWdJbnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBI
ZWFwQmlnSW50VHlwZSk7IH0NCiAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxH
UFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0NCiAg
ICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5j
aElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0NCiAgICANCiAgICB2b2lkIGlz
RW1wdHkoR1BSUmVnIGdwciwgR1BSUmVnIGRzdCkNCiAgICB7DQoNCiAgICAgICAgdGVzdDY0KFpl
cm8sIGdwciwgZ3ByLCBkc3QpOw0KDQoNCiNsaW5lIDExMDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAg
ICB9DQoNCiAgICB2b2lkIGlzTm90RW1wdHkoR1BSUmVnIGdwciwgR1BSUmVnIGRzdCkNCiAgICB7
DQoNCiAgICAgICAgdGVzdDY0KE5vblplcm8sIGdwciwgZ3ByLCBkc3QpOw0KDQoNCiNsaW5lIDEx
MDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0
XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaElmRW1wdHkoR1BS
UmVnIGdwcikNCiAgICB7DQoNCiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIp
Ow0KDQoNCiNsaW5lIDExMTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCiAgICBKdW1wIGJy
YW5jaElmRW1wdHkoSlNWYWx1ZVJlZ3MgcmVncykNCiAgICB7DQoNCiAgICAgICAgcmV0dXJuIGJy
YW5jaElmRW1wdHkocmVncy5ncHIoKSk7DQoNCg0KI2xpbmUgMTEyNyAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5o
Ig0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoSWZOb3RFbXB0eShHUFJSZWcgZ3ByKQ0KICAgIHsN
Cg0KICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIGdwcik7DQoNCg0KI2xpbmUg
MTEzNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxq
aXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoSWZOb3RFbXB0
eShKU1ZhbHVlUmVncyByZWdzKQ0KICAgIHsNCg0KICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3RF
bXB0eShyZWdzLmdwcigpKTsNCg0KDQojbGluZSAxMTQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAg
fQ0KDQogICAgDQogICAgSnVtcCBicmFuY2hJZlVuZGVmaW5lZChHUFJSZWcgZ3ByKQ0KICAgIHsN
Cg0KICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOw0KDQoNCiNsaW5lIDExNTUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBl
cnMuaCINCiAgICB9DQoNCiAgICANCiAgICBKdW1wIGJyYW5jaElmVW5kZWZpbmVkKEpTVmFsdWVS
ZWdzIHJlZ3MpDQogICAgew0KDQogICAgICAgIHJldHVybiBicmFuY2hJZlVuZGVmaW5lZChyZWdz
LmdwcigpKTsNCg0KDQojbGluZSAxMTY1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQogICAg
DQogICAgSnVtcCBicmFuY2hJZk5vdFVuZGVmaW5lZChHUFJSZWcgZ3ByKQ0KICAgIHsNCg0KICAg
ICAgICByZXR1cm4gYnJhbmNoNjQoTm90RXF1YWwsIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOw0KDQoNCiNsaW5lIDExNzUgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMu
aCINCiAgICB9DQoNCiAgICANCiAgICBKdW1wIGJyYW5jaElmTm90VW5kZWZpbmVkKEpTVmFsdWVS
ZWdzIHJlZ3MpDQogICAgew0KDQogICAgICAgIHJldHVybiBicmFuY2hJZk5vdFVuZGVmaW5lZChy
ZWdzLmdwcigpKTsNCg0KDQojbGluZSAxMTg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQog
ICAgSnVtcCBicmFuY2hJZk51bGwoR1BSUmVnIGdwcikNCiAgICB7DQoNCiAgICAgICAgcmV0dXJu
IGJyYW5jaDY0KEVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpKSk7DQoNCg0KI2xpbmUgMTE5NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAgIH0NCg0KICAgIEp1
bXAgYnJhbmNoSWZOdWxsKEpTVmFsdWVSZWdzIHJlZ3MpDQogICAgew0KDQogICAgICAgIHJldHVy
biBicmFuY2hJZk51bGwocmVncy5ncHIoKSk7DQoNCg0KI2xpbmUgMTIwMyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVy
cy5oIg0KICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoSWZOb3ROdWxsKEdQUlJlZyBncHIpDQogICAg
ew0KDQogICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOw0KDQoNCiNsaW5lIDEyMTIgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBl
cnMuaCINCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaElmTm90TnVsbChKU1ZhbHVlUmVncyByZWdz
KQ0KICAgIHsNCg0KICAgICAgICByZXR1cm4gYnJhbmNoSWZOb3ROdWxsKHJlZ3MuZ3ByKCkpOw0K
DQoNCiNsaW5lIDEyMjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPg0KICAgIEp1bXAgYnJhbmNoU3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZGl0aW9uLCBUIGxlZnRIYW5kU2lkZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgew0K
DQogICAgICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgVHJ1c3Rl
ZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOw0KDQoNCiNsaW5lIDEyMzEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMu
aCINCiAgICB9DQoNCiAgICBKdW1wIGJyYW5jaElmRmFzdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2VH
UFIpOw0KICAgIEp1bXAgYnJhbmNoSWZOb3RGYXN0VHlwZWRBcnJheShHUFJSZWcgYmFzZUdQUik7
DQoNCiAgICBKdW1wIGJyYW5jaElmTmFOKEZQUlJlZyBmcHIpDQogICAgew0KICAgICAgICByZXR1
cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZwciwgZnByKTsNCiAg
ICB9DQoNCiAgICBKdW1wIGJyYW5jaElmTm90TmFOKEZQUlJlZyBmcHIpDQogICAgew0KICAgICAg
ICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFsQW5kT3JkZXJlZCwgZnByLCBmcHIpOw0K
ICAgIH0NCg0KICAgIEp1bXAgYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChHUFJSZWcgc3RyaW5nSW1w
bEdQUikNCiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2hUZXN0UHRyKE5vblplcm8sIHN0cmlu
Z0ltcGxHUFIsIFRydXN0ZWRJbW0zMihKU1N0cmluZzo6aXNSb3BlSW5Qb2ludGVyKSk7DQogICAg
fQ0KDQogICAgSnVtcCBicmFuY2hJZk5vdFJvcGVTdHJpbmdJbXBsKEdQUlJlZyBzdHJpbmdJbXBs
R1BSKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3RQdHIoWmVybywgc3RyaW5nSW1w
bEdQUiwgVHJ1c3RlZEltbTMyKEpTU3RyaW5nOjppc1JvcGVJblBvaW50ZXIpKTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgQWRkcmVzcyBhZGRyZXNzRm9yQnl0ZU9mZnNldChwdHJkaWZmX3QgYnl0ZU9m
ZnNldCkNCiAgICB7DQogICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBieXRlT2Zmc2V0KTsNCiAgICB9DQogICAgc3RhdGljIEFkZHJlc3MgYWRkcmVzc0Zv
cihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyLCBHUFJSZWcgYmFzZVJlZykNCiAgICB7
DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZVJlZywgdmly
dHVhbFJlZ2lzdGVyLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSk7DQogICAgfQ0KICAgIHN0
YXRpYyBBZGRyZXNzIGFkZHJlc3NGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikN
CiAgICB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgIHJldHVybiBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKTsNCiAgICB9
DQogICAgc3RhdGljIEFkZHJlc3MgYWRkcmVzc0ZvcihPcGVyYW5kIG9wZXJhbmQpDQogICAgew0K
ICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBhZGRyZXNzRm9yKG9wZXJhbmQudmly
dHVhbFJlZ2lzdGVyKCkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBBZGRyZXNzIHRhZ0ZvcihWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyLCBHUFJSZWcgYmFzZUdQUikNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZUdQUiwgdmlydHVhbFJl
Z2lzdGVyLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSArIChfX2J1aWx0aW5fb2Zmc2V0b2Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcixhc0JpdHMudGFnKSkpOw0KICAgIH0NCiAgICBzdGF0aWMg
QWRkcmVzcyB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikNCiAgICB7DQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikg
KyAoX19idWlsdGluX29mZnNldG9mKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsYXNCaXRzLnRhZykp
KTsNCiAgICB9DQogICAgc3RhdGljIEFkZHJlc3MgdGFnRm9yKE9wZXJhbmQgb3BlcmFuZCkNCiAg
ICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIHRhZ0ZvcihvcGVyYW5kLnZp
cnR1YWxSZWdpc3RlcigpKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9y
KFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIsIEdQUlJlZyBiYXNlR1BSKQ0KICAgIHsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlR1BSLCB2aXJ0
dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgKF9fYnVpbHRpbl9vZmZz
ZXRvZihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLGFzQml0cy5wYXlsb2FkKSkpOw0KICAgIH0NCiAg
ICBzdGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBBZGRyZXNzKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXpl
b2YoUmVnaXN0ZXIpICsgKF9fYnVpbHRpbl9vZmZzZXRvZihFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
LGFzQml0cy5wYXlsb2FkKSkpOw0KICAgIH0NCiAgICBzdGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9y
KE9wZXJhbmQgb3BlcmFuZCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0
dXJuIHBheWxvYWRGb3Iob3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7DQogICAgfQ0KDQogICAg
DQogICAgc3RhdGljIEFkZHJlc3MgY2FsbGVlRnJhbWVTbG90KFZpcnR1YWxSZWdpc3RlciBzbG90
KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gQWRkcmVzcyhzdGFj
a1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIChzbG90IC0gQ2FsbGVyRnJhbWVB
bmRQQzo6c2l6ZUluUmVnaXN0ZXJzKS5vZmZzZXQoKSk7DQogICAgfQ0KDQogICAgDQogICAgc3Rh
dGljIEFkZHJlc3MgY2FsbGVlQXJndW1lbnRTbG90KGludCBhcmd1bWVudCkNCiAgICB7DQogICAg
ICAgIHJldHVybiBjYWxsZWVGcmFtZVNsb3QodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNs
dWRpbmdUaGlzKGFyZ3VtZW50KSk7DQogICAgfQ0KDQogICAgc3RhdGljIEFkZHJlc3MgY2FsbGVl
RnJhbWVUYWdTbG90KFZpcnR1YWxSZWdpc3RlciBzbG90KQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IGNhbGxlZUZyYW1lU2xvdChzbG90KS53aXRoT2Zmc2V0KChfX2J1aWx0aW5fb2Zmc2V0b2YoRW5j
b2RlZFZhbHVlRGVzY3JpcHRvcixhc0JpdHMudGFnKSkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBB
ZGRyZXNzIGNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoVmlydHVhbFJlZ2lzdGVyIHNsb3QpDQogICAg
ew0KICAgICAgICByZXR1cm4gY2FsbGVlRnJhbWVTbG90KHNsb3QpLndpdGhPZmZzZXQoKF9fYnVp
bHRpbl9vZmZzZXRvZihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLGFzQml0cy5wYXlsb2FkKSkpOw0K
ICAgIH0NCg0KICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUFyZ3VtZW50VGFnU2xvdChpbnQgYXJn
dW1lbnQpDQogICAgew0KICAgICAgICByZXR1cm4gY2FsbGVlQXJndW1lbnRTbG90KGFyZ3VtZW50
KS53aXRoT2Zmc2V0KChfX2J1aWx0aW5fb2Zmc2V0b2YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvcixh
c0JpdHMudGFnKSkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBBZGRyZXNzIGNhbGxlZUFyZ3VtZW50
UGF5bG9hZFNsb3QoaW50IGFyZ3VtZW50KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGNhbGxlZUFy
Z3VtZW50U2xvdChhcmd1bWVudCkud2l0aE9mZnNldCgoX19idWlsdGluX29mZnNldG9mKEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IsYXNCaXRzLnBheWxvYWQpKSk7DQogICAgfQ0KDQogICAgc3RhdGlj
IEFkZHJlc3MgY2FsbGVlRnJhbWVDYWxsZXJGcmFtZSgpDQogICAgew0KICAgICAgICByZXR1cm4g
Y2FsbGVlRnJhbWVTbG90KFZpcnR1YWxSZWdpc3RlcigwKSkud2l0aE9mZnNldChDYWxsRnJhbWU6
OmNhbGxlckZyYW1lT2Zmc2V0KCkpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0
U2NyYXRjaEdQUihSZWdpc3RlclNldCBwcmVzZXJ2ZWQpDQogICAgew0KICAgICAgICBHUFJSZWcg
cmVnaXN0ZXJzW10gPSB7DQogICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwNCiAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QxLA0KICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDIsDQogICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMywNCiAgICAgICAgICAgIEdQUkluZm86OnJlZ1Q0LA0KICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDUsDQogICAgICAgIH07DQoNCiAgICAgICAgZm9yIChHUFJSZWcgcmVn
IDogcmVnaXN0ZXJzKSB7DQogICAgICAgICAgICBpZiAoIXByZXNlcnZlZC5jb250YWlucyhyZWcp
KQ0KICAgICAgICAgICAgICAgIHJldHVybiByZWc7DQogICAgICAgIH0NCiAgICAgICAgZG8geyBX
VEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBX
VEZDcmFzaFdpdGhJbmZvKDEzNjUsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiLCAgX19GVU5DVElPTl9fICAs
IDE1NCApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOw0K
ICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFJlZ3M+DQogICAgc3RhdGljIEdQUlJl
ZyBzZWxlY3RTY3JhdGNoR1BSKFJlZ3MuLi4gYXJncykNCiAgICB7DQogICAgICAgIFJlZ2lzdGVy
U2V0IHNldDsNCiAgICAgICAgY29uc3RydWN0UmVnaXN0ZXJTZXQoc2V0LCBhcmdzLi4uKTsNCiAg
ICAgICAgcmV0dXJuIHNlbGVjdFNjcmF0Y2hHUFIoc2V0KTsNCiAgICB9DQoNCiAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3RSZWdpc3RlclNldChSZWdpc3RlclNldCYpDQogICAgew0KICAgIH0NCg0K
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFJlZ3M+DQogICAgc3RhdGljIHZvaWQgY29uc3RydWN0
UmVnaXN0ZXJTZXQoUmVnaXN0ZXJTZXQmIHNldCwgSlNWYWx1ZVJlZ3MgcmVncywgUmVncy4uLiBh
cmdzKQ0KICAgIHsNCiAgICAgICAgaWYgKHJlZ3MudGFnR1BSKCkgIT0gSW52YWxpZEdQUlJlZykN
CiAgICAgICAgICAgIHNldC5zZXQocmVncy50YWdHUFIoKSk7DQogICAgICAgIGlmIChyZWdzLnBh
eWxvYWRHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQ0KICAgICAgICAgICAgc2V0LnNldChyZWdzLnBh
eWxvYWRHUFIoKSk7DQogICAgICAgIGNvbnN0cnVjdFJlZ2lzdGVyU2V0KHNldCwgYXJncy4uLik7
DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUmVncz4NCiAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3RSZWdpc3RlclNldChSZWdpc3RlclNldCYgc2V0LCBHUFJSZWcgcmVnLCBSZWdz
Li4uIGFyZ3MpDQogICAgew0KICAgICAgICBpZiAocmVnICE9IEludmFsaWRHUFJSZWcpDQogICAg
ICAgICAgICBzZXQuc2V0KHJlZyk7DQogICAgICAgIGNvbnN0cnVjdFJlZ2lzdGVyU2V0KHNldCwg
YXJncy4uLik7DQogICAgfQ0KDQogICAgDQogICAgdm9pZCBkZWJ1Z0NhbGwoVk0mLCBWX0RlYnVn
T3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOw0KDQogICAgDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDE0MTQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB2b2lkIGppdEFz
c2VydElzSW50MzIoR1BSUmVnKSB7IH0NCiAgICB2b2lkIGppdEFzc2VydElzSlNJbnQzMihHUFJS
ZWcpIHsgfQ0KICAgIHZvaWQgaml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcpIHsgfQ0KICAgIHZv
aWQgaml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcpIHsgfQ0KICAgIHZvaWQgaml0QXNzZXJ0SXND
ZWxsKEdQUlJlZykgeyB9DQogICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpIHsg
fQ0KICAgIHZvaWQgaml0QXNzZXJ0SXNOdWxsKEdQUlJlZykgeyB9DQogICAgdm9pZCBqaXRBc3Nl
cnRUYWdzSW5QbGFjZSgpIHsgfQ0KICAgIHZvaWQgaml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUo
KSB7IH0NCiNsaW5lIDE0MjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCg0KICAgIHZvaWQgaml0UmVsZWFz
ZUFzc2VydE5vRXhjZXB0aW9uKFZNJik7DQoNCiAgICB2b2lkIGluY3JlbWVudFN1cGVyU2FtcGxl
ckNvdW50KCk7DQogICAgdm9pZCBkZWNyZW1lbnRTdXBlclNhbXBsZXJDb3VudCgpOw0KICAgIA0K
ICAgIHZvaWQgcHVyaWZ5TmFOKEZQUlJlZyk7DQoNCiAgICANCg0KICAgIEdQUlJlZyBib3hEb3Vi
bGUoRlBSUmVnIGZwciwgR1BSUmVnIGdwciwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRh
Z1JlZ2lzdGVycykNCiAgICB7DQogICAgICAgIG1vdmVEb3VibGVUbzY0KGZwciwgZ3ByKTsNCiAg
ICAgICAgaWYgKG1vZGUgPT0gRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKQ0KICAgICAgICAgICAgc3Vi
NjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIGdwcik7DQogICAgICAgIGVsc2Ug
ew0KICAgICAgICAgICAgc3ViNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGdwcik7DQog
ICAgICAgICAgICBqaXRBc3NlcnRJc0pTRG91YmxlKGdwcik7DQogICAgICAgIH0NCiAgICAgICAg
cmV0dXJuIGdwcjsNCiAgICB9DQogICAgRlBSUmVnIHVuYm94RG91YmxlV2l0aG91dEFzc2VydGlv
bnMoR1BSUmVnIGdwciwgR1BSUmVnIHJlc3VsdEdQUiwgRlBSUmVnIGZwcikNCiAgICB7DQogICAg
ICAgIGFkZDY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBncHIsIHJlc3VsdEdQUik7DQog
ICAgICAgIG1vdmU2NFRvRG91YmxlKHJlc3VsdEdQUiwgZnByKTsNCiAgICAgICAgcmV0dXJuIGZw
cjsNCiAgICB9DQogICAgRlBSUmVnIHVuYm94RG91YmxlKEdQUlJlZyBncHIsIEdQUlJlZyByZXN1
bHRHUFIsIEZQUlJlZyBmcHIpDQogICAgew0KICAgICAgICBqaXRBc3NlcnRJc0pTRG91YmxlKGdw
cik7DQogICAgICAgIHJldHVybiB1bmJveERvdWJsZVdpdGhvdXRBc3NlcnRpb25zKGdwciwgcmVz
dWx0R1BSLCBmcHIpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGJveERvdWJsZShGUFJSZWcgZnBy
LCBKU1ZhbHVlUmVncyByZWdzLCBUYWdSZWdpc3RlcnNNb2RlIG1vZGUgPSBIYXZlVGFnUmVnaXN0
ZXJzKQ0KICAgIHsNCiAgICAgICAgYm94RG91YmxlKGZwciwgcmVncy5ncHIoKSwgbW9kZSk7DQog
ICAgfQ0KDQogICAgdm9pZCB1bmJveERvdWJsZU5vbkRlc3RydWN0aXZlKEpTVmFsdWVSZWdzIHJl
Z3MsIEZQUlJlZyBkZXN0RlBSLCBHUFJSZWcgcmVzdWx0R1BSLCBGUFJSZWcpDQogICAgew0KICAg
ICAgICB1bmJveERvdWJsZShyZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0R1BSLCBkZXN0RlBSKTsN
CiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICB2b2lkIGJveEludDUyKEdQUlJl
ZyBzb3VyY2UsIEdQUlJlZyB0YXJnZXQsIEdQUlJlZyBzY3JhdGNoLCBGUFJSZWcgZnBTY3JhdGNo
KQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKHNvdXJjZSwgc2Ny
YXRjaCk7DQogICAgICAgIEp1bXAgaXNJbnQzMiA9IGJyYW5jaDY0KEVxdWFsLCBzb3VyY2UsIHNj
cmF0Y2gpOw0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIGNvbnZlcnRJbnQ2NFRvRG91Ymxl
KHNvdXJjZSwgZnBTY3JhdGNoKTsNCiAgICAgICAgYm94RG91YmxlKGZwU2NyYXRjaCwgdGFyZ2V0
KTsNCiAgICAgICAgSnVtcCBkb25lID0ganVtcCgpOw0KICAgICAgICANCiAgICAgICAgaXNJbnQz
Mi5saW5rKHRoaXMpOw0KICAgICAgICB6ZXJvRXh0ZW5kMzJUb1dvcmQoc291cmNlLCB0YXJnZXQp
Ow0KICAgICAgICBvcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCB0YXJnZXQpOw0KICAg
ICAgICANCiAgICAgICAgZG9uZS5saW5rKHRoaXMpOw0KICAgIH0NCiNsaW5lIDE0ODkgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJs
eUhlbHBlcnMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNTA3
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxc
QXNzZW1ibHlIZWxwZXJzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxNTMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgDQogICAgdm9pZCBi
b3hCb29sZWFuUGF5bG9hZChHUFJSZWcgYm9vbEdQUiwgR1BSUmVnIHBheWxvYWRHUFIpDQogICAg
ew0KDQogICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgYm9v
bEdQUiwgcGF5bG9hZEdQUik7DQoNCg0KI2xpbmUgMTU0MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIg0KICAg
IH0NCg0KICAgIHZvaWQgYm94Qm9vbGVhblBheWxvYWQoYm9vbCB2YWx1ZSwgR1BSUmVnIHBheWxv
YWRHUFIpDQogICAgew0KDQogICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVl
RmFsc2UgKyB2YWx1ZSksIHBheWxvYWRHUFIpOw0KDQoNCiNsaW5lIDE1NDkgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBl
cnMuaCINCiAgICB9DQoNCiAgICB2b2lkIGJveEJvb2xlYW4oR1BSUmVnIGJvb2xHUFIsIEpTVmFs
dWVSZWdzIGJveGVkUmVncykNCiAgICB7DQogICAgICAgIGJveEJvb2xlYW5QYXlsb2FkKGJvb2xH
UFIsIGJveGVkUmVncy5wYXlsb2FkR1BSKCkpOw0KDQoNCiNsaW5lIDE1NTcgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBl
cnMuaCINCiAgICB9DQoNCiAgICB2b2lkIGJveEJvb2xlYW4oYm9vbCB2YWx1ZSwgSlNWYWx1ZVJl
Z3MgYm94ZWRSZWdzKQ0KICAgIHsNCiAgICAgICAgYm94Qm9vbGVhblBheWxvYWQodmFsdWUsIGJv
eGVkUmVncy5wYXlsb2FkR1BSKCkpOw0KDQoNCiNsaW5lIDE1NjUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCIN
CiAgICB9DQoNCiAgICB2b2lkIGJveEludDMyKEdQUlJlZyBpbnRHUFIsIEpTVmFsdWVSZWdzIGJv
eGVkUmVncywgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykNCiAgICB7
DQoNCiAgICAgICAgaWYgKG1vZGUgPT0gRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKSB7DQogICAgICAg
ICAgICBtb3ZlKGludEdQUiwgYm94ZWRSZWdzLmdwcigpKTsNCiAgICAgICAgICAgIG9yNjQoVHJ1
c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIGJveGVkUmVncy5ncHIoKSk7DQogICAgICAg
IH0gZWxzZQ0KICAgICAgICAgICAgb3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgaW50
R1BSLCBib3hlZFJlZ3MuZ3ByKCkpOw0KDQoNCg0KDQojbGluZSAxNTgwICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJz
LmgiDQogICAgfQ0KDQogICAgdm9pZCBib3hDZWxsKEdQUlJlZyBjZWxsR1BSLCBKU1ZhbHVlUmVn
cyBib3hlZFJlZ3MpDQogICAgew0KDQogICAgICAgIG1vdmUoY2VsbEdQUiwgYm94ZWRSZWdzLmdw
cigpKTsNCg0KDQoNCiNsaW5lIDE1OTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICB9DQogICAgDQog
ICAgdm9pZCBjYWxsRXhjZXB0aW9uRnV6eihWTSYpOw0KICAgIA0KICAgIGVudW0gRXhjZXB0aW9u
Q2hlY2tLaW5kIHsgTm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEludmVydGVkRXhjZXB0aW9uQ2hlY2sg
fTsNCiAgICBlbnVtIEV4Y2VwdGlvbkp1bXBXaWR0aCB7IE5vcm1hbEp1bXBXaWR0aCwgRmFySnVt
cFdpZHRoIH07DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEp1bXAgZW1pdEV4Y2VwdGlvbkNo
ZWNrKA0KICAgICAgICBWTSYsIEV4Y2VwdGlvbkNoZWNrS2luZCA9IE5vcm1hbEV4Y2VwdGlvbkNo
ZWNrLCBFeGNlcHRpb25KdW1wV2lkdGggPSBOb3JtYWxKdW1wV2lkdGgpOw0KICAgIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KSBKdW1wIGVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayhWTSYpOw0K
ICAgIEp1bXAgZW1pdEp1bXBJZkV4Y2VwdGlvbihWTSYpOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
bGluZSAxNjExICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQoNCg0KDQoNCiNsaW5lIDE2MTYgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhl
bHBlcnMuaCINCg0KICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9yaWdp
biBjb2RlT3JpZ2luKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbik7DQogICAgfQ0KICAgIA0KICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pOw0KICAgIA0KICAgIENv
ZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
bikNCiAgICB7DQogICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJh
c2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKCkpOw0KICAgIH0N
CiAgICANCiAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lKQ0KICAgIHsNCiAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUp
DQogICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2soKTsNCiAgICAgICAgcmV0dXJu
IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7DQog
ICAgfQ0KICAgIA0KICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2soKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIG1fYmFzZWxpbmVDb2RlQmxvY2s7DQogICAgfQ0KICAgIA0KICAgIHN0YXRp
YyBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzU3RhcnQoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUpDQogICAgew0KICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkNCiAgICAgICAg
ICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKSk7
DQogICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dpdGhGaXh1cC5zaXplKCkg
PD0gMSkNCiAgICAgICAgICAgIHJldHVybiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKTsNCiAg
ICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
V2l0aEZpeHVwWzFdOw0KICAgICAgICBkbyB7IGlmICgoIShyZWNvdmVyeS50ZWNobmlxdWUoKSA9
PSBEaXNwbGFjZWRJbkpTU3RhY2spKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBl
KCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE2NDgsICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1i
bHlIZWxwZXJzLmgiLCAgX19GVU5DVElPTl9fICAsIDE1NSApOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOw0KICAgICAgICByZXR1cm4gcmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCk7DQog
ICAgfQ0KICAgIA0KICAgIHN0YXRpYyBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzU3RhcnQoY29u
c3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikNCiAgICB7DQogICAgICAgIHJldHVybiBhcmd1bWVu
dHNTdGFydChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpKTsNCiAgICB9DQoNCiAgICBzdGF0
aWMgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50Q291bnQoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmICghaW5saW5l
Q2FsbEZyYW1lKQ0KICAgICAgICAgICAgcmV0dXJuIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOw0KICAgICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50UmVnaXN0ZXI7DQogICAgfQ0KDQogICAgc3RhdGljIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudENvdW50KGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pDQogICAgew0KICAgICAgICBy
ZXR1cm4gYXJndW1lbnRDb3VudChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpKTsNCiAgICB9
DQogICAgDQogICAgdm9pZCBlbWl0TG9hZFN0cnVjdHVyZShWTSYsIFJlZ2lzdGVySUQgc291cmNl
LCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7DQogICAgdm9pZCBlbWl0TG9h
ZFByb3RvdHlwZShWTSYsIEdQUlJlZyBvYmplY3RHUFIsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Ms
IEdQUlJlZyBzY3JhdGNoR1BSLCBKdW1wTGlzdCYgc2xvd1BhdGgpOw0KDQogICAgdm9pZCBlbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lz
dGVySUQgZGVzdCwgUmVnaXN0ZXJJRCkNCiAgICB7DQogICAgICAgIGVtaXRTdG9yZVN0cnVjdHVy
ZVdpdGhUeXBlSW5mbygqdGhpcywgc3RydWN0dXJlLCBkZXN0KTsNCiAgICB9DQoNCiAgICB2b2lk
IGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhSZWdpc3RlcklEIHN0cnVjdHVyZSwgUmVn
aXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpDQogICAgew0KDQogICAgICAgIGxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHNjcmF0Y2gpOw0KICAgICAgICBzdG9yZTY0KHNjcmF0Y2gsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOw0KDQoN
Cg0KDQoNCg0KDQojbGluZSAxNjkxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgfQ0KDQogICAgc3Rh
dGljIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYg
aml0LCBUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0KTsNCg0KICAgIEp1
bXAgYmFycmllckJyYW5jaFdpdGhvdXRGZW5jZShHUFJSZWcgY2VsbCkNCiAgICB7DQogICAgICAg
IHJldHVybiBicmFuY2g4KEFib3ZlLCBBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6Y2VsbFN0YXRlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoYmxhY2tUaHJlc2hvbGQpKTsNCiAgICB9DQoNCiAgICBKdW1w
IGJhcnJpZXJCcmFuY2hXaXRob3V0RmVuY2UoSlNDZWxsKiBjZWxsKQ0KICAgIHsNCiAgICAgICAg
dWludDhfdCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGNlbGwpICsgSlND
ZWxsOjpjZWxsU3RhdGVPZmZzZXQoKTsNCiAgICAgICAgcmV0dXJuIGJyYW5jaDgoQWJvdmUsIEFi
c29sdXRlQWRkcmVzcyhhZGRyZXNzKSwgVHJ1c3RlZEltbTMyKGJsYWNrVGhyZXNob2xkKSk7DQog
ICAgfQ0KICAgIA0KICAgIEp1bXAgYmFycmllckJyYW5jaChWTSYgdm0sIEdQUlJlZyBjZWxsLCBH
UFJSZWcgc2NyYXRjaEdQUikNCiAgICB7DQogICAgICAgIGxvYWQ4KEFkZHJlc3MoY2VsbCwgSlND
ZWxsOjpjZWxsU3RhdGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOw0KICAgICAgICByZXR1cm4gYnJh
bmNoMzIoQWJvdmUsIHNjcmF0Y2hHUFIsIEFic29sdXRlQWRkcmVzcyh2bS5oZWFwLmFkZHJlc3NP
ZkJhcnJpZXJUaHJlc2hvbGQoKSkpOw0KICAgIH0NCg0KICAgIEp1bXAgYmFycmllckJyYW5jaChW
TSYgdm0sIEpTQ2VsbCogY2VsbCwgR1BSUmVnIHNjcmF0Y2hHUFIpDQogICAgew0KICAgICAgICB1
aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY2VsbCkgKyBKU0Nl
bGw6OmNlbGxTdGF0ZU9mZnNldCgpOw0KICAgICAgICBsb2FkOChhZGRyZXNzLCBzY3JhdGNoR1BS
KTsNCiAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEFib3ZlLCBzY3JhdGNoR1BSLCBBYnNvbHV0ZUFk
ZHJlc3Modm0uaGVhcC5hZGRyZXNzT2ZCYXJyaWVyVGhyZXNob2xkKCkpKTsNCiAgICB9DQogICAg
DQogICAgdm9pZCBiYXJyaWVyU3RvcmVMb2FkRmVuY2UoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAg
SnVtcCBvayA9IGp1bXBJZk11dGF0b3JGZW5jZU5vdE5lZWRlZCh2bSk7DQogICAgICAgIG1lbW9y
eUZlbmNlKCk7DQogICAgICAgIG9rLmxpbmsodGhpcyk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQg
bXV0YXRvckZlbmNlKFZNJiB2bSkNCiAgICB7DQogICAgICAgIGlmIChpc1g4NigpKQ0KICAgICAg
ICAgICAgcmV0dXJuOw0KICAgICAgICBKdW1wIG9rID0ganVtcElmTXV0YXRvckZlbmNlTm90TmVl
ZGVkKHZtKTsNCiAgICAgICAgc3RvcmVGZW5jZSgpOw0KICAgICAgICBvay5saW5rKHRoaXMpOw0K
ICAgIH0NCg0KICAgIHZvaWQgY2FnZVdpdGhvdXRVbnRhZ2dpbmcoR2lnYWNhZ2U6OktpbmQga2lu
ZCwgR1BSUmVnIHN0b3JhZ2UpDQogICAgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDE3NTggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCiAgICAgICAgKHZvaWQpa2lu
ZDsNCiAgICAgICAgKHZvaWQpc3RvcmFnZTsNCiNsaW5lIDE3NjEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCIN
CiAgICB9DQoNCiAgICANCiAgICB2b2lkIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpLaW5k
IGtpbmQsIEdQUlJlZyBzdG9yYWdlLCBHUFJSZWcgbGVuZ3RoLCBHUFJSZWcgc2NyYXRjaCkNCiAg
ICB7DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNsaW5lIDE3OTUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaml0XFxBc3NlbWJseUhlbHBlcnMuaCINCg0KDQoNCg0KI2xpbmUgMTgwMCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2Vt
Ymx5SGVscGVycy5oIg0KICAgICAgICAodm9pZClraW5kOw0KICAgICAgICAodm9pZClzdG9yYWdl
Ow0KICAgICAgICAodm9pZClsZW5ndGg7DQogICAgICAgICh2b2lkKXNjcmF0Y2g7DQogICAgfQ0K
DQogICAgdm9pZCBlbWl0Q29tcHV0ZUJ1dHRlcmZseUluZGV4aW5nTWFzayhHUFJSZWcgdmVjdG9y
TGVuZ3RoR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHJlc3VsdEdQUikNCiAgICB7DQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgSnVtcCBkb25lOw0KICAgICAgICANCiAgICAgICAg
Y291bnRMZWFkaW5nWmVyb3MzMih2ZWN0b3JMZW5ndGhHUFIsIHNjcmF0Y2hHUFIpOw0KICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMigtMSksIHJlc3VsdEdQUik7DQogICAgICAgIHVyc2hpZnRQdHIo
c2NyYXRjaEdQUiwgcmVzdWx0R1BSKTsNCiAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkNCiAgICAg
ICAgICAgIGRvbmUubGluayh0aGlzKTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICB2b2lkIG51
a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseShWTSYgdm0sIEdQUlJlZyBidXR0ZXJmbHksIEdQ
UlJlZyBvYmplY3QpDQogICAgew0KICAgICAgICBpZiAoaXNYODYoKSkgew0KICAgICAgICAgICAg
b3IzMihUcnVzdGVkSW1tMzIoYml0d2lzZV9jYXN0PGludDMyX3Q+KG51a2VkU3RydWN0dXJlSURC
aXQoKSkpLCBBZGRyZXNzKG9iamVjdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7DQog
ICAgICAgICAgICBzdG9yZVB0cihidXR0ZXJmbHksIEFkZHJlc3Mob2JqZWN0LCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQog
ICAgICAgIEp1bXAgb2sgPSBqdW1wSWZNdXRhdG9yRmVuY2VOb3ROZWVkZWQodm0pOw0KICAgICAg
ICBvcjMyKFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4obnVrZWRTdHJ1Y3R1cmVJ
REJpdCgpKSksIEFkZHJlc3Mob2JqZWN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsN
CiAgICAgICAgc3RvcmVGZW5jZSgpOw0KICAgICAgICBzdG9yZVB0cihidXR0ZXJmbHksIEFkZHJl
c3Mob2JqZWN0LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsNCiAgICAgICAgc3RvcmVG
ZW5jZSgpOw0KICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7DQogICAgICAgIG9rLmxpbmsodGhp
cyk7DQogICAgICAgIHN0b3JlUHRyKGJ1dHRlcmZseSwgQWRkcmVzcyhvYmplY3QsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSkpOw0KICAgICAgICBkb25lLmxpbmsodGhpcyk7DQogICAgfQ0K
ICAgIA0KICAgIEp1bXAganVtcElmTXV0YXRvckZlbmNlTm90TmVlZGVkKFZNJiB2bSkNCiAgICB7
DQogICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBBYnNvbHV0ZUFkZHJlc3Modm0uaGVh
cC5hZGRyZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkpOw0KICAgIH0NCiAgICANCiAgICB2
b2lkIHNhbml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcgc2NyYXRjaCk7DQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvciwg
dHlwZW5hbWUgU2xvd1BhdGhGdW5jdG9yPg0KICAgIHZvaWQgZW1pdFR5cGVPZigNCiAgICAgICAg
SlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Is
DQogICAgICAgIGNvbnN0IFNsb3dQYXRoRnVuY3RvciYgc2xvd1BhdGhGdW5jdG9yKQ0KICAgIHsN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQog
ICAgICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdzKTsNCiAgICAgICAgDQog
ICAgICAgIEdQUlJlZyBjZWxsR1BSID0gcmVncy5wYXlsb2FkR1BSKCk7DQogICAgICAgIEp1bXAg
bm90T2JqZWN0ID0gYnJhbmNoSWZOb3RPYmplY3QoY2VsbEdQUik7DQogICAgICAgIA0KICAgICAg
ICBKdW1wIG5vdEZ1bmN0aW9uID0gYnJhbmNoSWZOb3RGdW5jdGlvbihjZWxsR1BSKTsNCiAgICAg
ICAgZnVuY3RvcihUeXBlb2ZUeXBlOjpGdW5jdGlvbiwgZmFsc2UpOw0KICAgICAgICANCiAgICAg
ICAgbm90RnVuY3Rpb24ubGluayh0aGlzKTsNCiAgICAgICAgc2xvd1BhdGhGdW5jdG9yKA0KICAg
ICAgICAgICAgYnJhbmNoVGVzdDgoDQogICAgICAgICAgICAgICAgTm9uWmVybywNCiAgICAgICAg
ICAgICAgICBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwN
CiAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB8IE92
ZXJyaWRlc0dldENhbGxEYXRhKSkpOw0KICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6Ok9iamVj
dCwgZmFsc2UpOw0KICAgICAgICANCiAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7DQogICAg
ICAgIA0KICAgICAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaElmTm90U3RyaW5nKGNlbGxHUFIp
Ow0KICAgICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlN0cmluZywgZmFsc2UpOw0KDQogICAgICAg
IG5vdFN0cmluZy5saW5rKHRoaXMpOw0KDQogICAgICAgIEp1bXAgbm90SGVhcEJpZ0ludCA9IGJy
YW5jaElmTm90SGVhcEJpZ0ludChjZWxsR1BSKTsNCiAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBl
OjpCaWdJbnQsIGZhbHNlKTsNCg0KICAgICAgICBub3RIZWFwQmlnSW50LmxpbmsodGhpcyk7DQog
ICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6U3ltYm9sLCBmYWxzZSk7DQogICAgICAgIA0KICAg
ICAgICBub3RDZWxsLmxpbmsodGhpcyk7DQoNCiAgICAgICAgSnVtcCBub3ROdW1iZXIgPSBicmFu
Y2hJZk5vdE51bWJlcihyZWdzLCB0ZW1wR1BSKTsNCiAgICAgICAgZnVuY3RvcihUeXBlb2ZUeXBl
OjpOdW1iZXIsIGZhbHNlKTsNCiAgICAgICAgbm90TnVtYmVyLmxpbmsodGhpcyk7DQogICAgICAg
IA0KICAgICAgICBKdW1wTGlzdCBub3ROdWxsID0gYnJhbmNoSWZOb3RFcXVhbChyZWdzLCBqc051
bGwoKSk7DQogICAgICAgIGZ1bmN0b3IoVHlwZW9mVHlwZTo6T2JqZWN0LCBmYWxzZSk7DQogICAg
ICAgIG5vdE51bGwubGluayh0aGlzKTsNCiAgICAgICAgDQogICAgICAgIEp1bXAgbm90Qm9vbGVh
biA9IGJyYW5jaElmTm90Qm9vbGVhbihyZWdzLCB0ZW1wR1BSKTsNCiAgICAgICAgZnVuY3RvcihU
eXBlb2ZUeXBlOjpCb29sZWFuLCBmYWxzZSk7DQogICAgICAgIG5vdEJvb2xlYW4ubGluayh0aGlz
KTsNCg0KDQoNCg0KDQojbGluZSAxOTM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQogICAgICAgIA0KICAg
ICAgICBmdW5jdG9yKFR5cGVvZlR5cGU6OlVuZGVmaW5lZCwgdHJ1ZSk7DQogICAgfQ0KICAgIA0K
ICAgIHZvaWQgZW1pdER1bWJWaXJ0dWFsQ2FsbChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExp
bmtJbmZvKik7DQogICAgDQogICAgdm9pZCBtYWtlU3BhY2VPblN0YWNrRm9yQ0NhbGwoKTsNCiAg
ICB2b2lkIHJlY2xhaW1TcGFjZU9uU3RhY2tGb3JDQ2FsbCgpOw0KDQoNCiAgICB2b2lkIGVtaXRS
YW5kb21UaHVuayhKU0dsb2JhbE9iamVjdCosIEdQUlJlZyBzY3JhdGNoMCwgR1BSUmVnIHNjcmF0
Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIEZQUlJlZyByZXN1bHQpOw0KICAgIHZvaWQgZW1pdFJhbmRv
bVRodW5rKFZNJiwgR1BSUmVnIHNjcmF0Y2gwLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3Jh
dGNoMiwgR1BSUmVnIHNjcmF0Y2gzLCBGUFJSZWcgcmVzdWx0KTsNCiNsaW5lIDE5NTEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxBc3NlbWJs
eUhlbHBlcnMuaCINCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHZvaWQgZW1pdEFsbG9j
YXRlV2l0aE5vbk51bGxBbGxvY2F0b3IoR1BSUmVnIHJlc3VsdEdQUiwgY29uc3QgSklUQWxsb2Nh
dG9yJiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEp1bXBMaXN0JiBz
bG93UGF0aCwgT3B0aW9uYWw8R1BSUmVnPiBzY3JhdGNoR1BSMiA9IHsgfSwgT3B0aW9uYWw8R1BS
UmVnPiBzY3JhdGNoR1BSMyA9IHsgfSk7DQoNCiAgICB2b2lkIGVtaXRBbGxvY2F0ZShHUFJSZWcg
cmVzdWx0R1BSLCBjb25zdCBKSVRBbGxvY2F0b3ImIGFsbG9jYXRvciwgR1BSUmVnIGFsbG9jYXRv
ckdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEp1bXBMaXN0JiBzbG93UGF0aCk7DQogICAgDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJlVHlwZT4NCiAgICB2b2lkIGVtaXRBbGxvY2F0ZUpT
Q2VsbChHUFJSZWcgcmVzdWx0R1BSLCBjb25zdCBKSVRBbGxvY2F0b3ImIGFsbG9jYXRvciwgR1BS
UmVnIGFsbG9jYXRvckdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNo
R1BSLCBKdW1wTGlzdCYgc2xvd1BhdGgpDQogICAgew0KICAgICAgICBlbWl0QWxsb2NhdGUocmVz
dWx0R1BSLCBhbGxvY2F0b3IsIGFsbG9jYXRvckdQUiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOw0K
ICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRH
UFIsIHNjcmF0Y2hHUFIpOw0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJ1
Y3R1cmVUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4NCiAgICB2b2lkIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIGNvbnN0IEpJVEFsbG9jYXRvciYgYWxsb2NhdG9yLCBH
UFJSZWcgYWxsb2NhdG9yR1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgU3RvcmFnZVR5cGUg
c3RvcmFnZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIEp1bXBMaXN0JiBzbG93UGF0aCkNCiAgICB7DQog
ICAgICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIGFsbG9jYXRvciwgYWxsb2NhdG9y
R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsNCiAgICAgICAgc3RvcmVQdHIo
c3RvcmFnZSwgQWRkcmVzcyhyZXN1bHRHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkp
Ow0KICAgIH0NCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1l
IFN0cnVjdHVyZVR5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPg0KICAgIHZvaWQgZW1pdEFsbG9j
YXRlSlNPYmplY3RXaXRoS25vd25TaXplKA0KICAgICAgICBWTSYgdm0sIEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLCBTdG9yYWdlVHlwZSBzdG9yYWdlLCBHUFJSZWcg
c2NyYXRjaEdQUjEsDQogICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMiwgSnVtcExpc3QmIHNsb3dQ
YXRoLCBzaXplX3Qgc2l6ZSkNCiAgICB7DQogICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSBh
bGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVudGx5PENsYXNzVHlwZT4odm0sIHNpemUsIEFs
bG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsNCiAgICAgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3QocmVzdWx0R1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvciksIHNj
cmF0Y2hHUFIxLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7DQog
ICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3Ry
dWN0dXJlVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+DQogICAgdm9pZCBlbWl0QWxsb2NhdGVK
U09iamVjdChWTSYgdm0sIEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJl
LCBTdG9yYWdlVHlwZSBzdG9yYWdlLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNo
R1BSMiwgSnVtcExpc3QmIHNsb3dQYXRoKQ0KICAgIHsNCiAgICAgICAgZW1pdEFsbG9jYXRlSlNP
YmplY3RXaXRoS25vd25TaXplPENsYXNzVHlwZT4odm0sIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBz
dG9yYWdlLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoLCBDbGFzc1R5cGU6OmFs
bG9jYXRpb25TaXplKDApKTsNCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgdm9pZCBlbWl0
QWxsb2NhdGVWYXJpYWJsZVNpemVkKEdQUlJlZyByZXN1bHRHUFIsIENvbXBsZXRlU3Vic3BhY2Um
IHN1YnNwYWNlLCBHUFJSZWcgYWxsb2NhdGlvblNpemUsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BS
UmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpOw0KICAgIA0KICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4NCiAgICB2b2lkIGVt
aXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsKFZNJiB2bSwgR1BSUmVnIHJlc3VsdEdQUiwgU3Ry
dWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhbGxvY2F0aW9uU2l6ZSwgR1BSUmVnIHNjcmF0
Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIEp1bXBMaXN0JiBzbG93UGF0aCkNCiAgICB7DQog
ICAgICAgIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlID0gc3Vic3BhY2VGb3JDb25jdXJyZW50
bHk8Q2xhc3NUeXBlPih2bSk7DQogICAgICAgIGRvIHsgaWYgKCghKHN1YnNwYWNlKSkpIGRvIHsg
V1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsg
V1RGQ3Jhc2hXaXRoSW5mbygxOTk3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxqaXRcXEFzc2VtYmx5SGVscGVycy5oIiwgIF9fRlVOQ1RJT05fXyAg
LCAxNTYgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgZW1pdEFsbG9j
YXRlVmFyaWFibGVTaXplZChyZXN1bHRHUFIsICpzdWJzcGFjZSwgYWxsb2NhdGlvblNpemUsIHNj
cmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOw0KICAgICAgICBlbWl0U3RvcmVTdHJ1
Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIyKTsNCiAg
ICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVy
ZVR5cGU+DQogICAgdm9pZCBlbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkSlNPYmplY3QoVk0mIHZt
LCBHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgR1BSUmVnIGFsbG9j
YXRpb25TaXplLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgSnVtcExp
c3QmIHNsb3dQYXRoKQ0KICAgIHsNCiAgICAgICAgZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZENl
bGw8Q2xhc3NUeXBlPih2bSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGFsbG9jYXRpb25TaXplLCBz
Y3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsNCiAgICAgICAgc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cihudWxscHRyKSwgQWRkcmVzcyhyZXN1bHRHUFIsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSkpOw0KICAgIH0NCg0KICAgIEp1bXBMaXN0IGJyYW5jaElmVmFsdWUoVk0mLCBK
U1ZhbHVlUmVncywgR1BSUmVnIHNjcmF0Y2gsIEdQUlJlZyBzY3JhdGNoSWZTaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIEZQUlJlZywgRlBSUmVnLCBib29sIHNob3VsZENoZWNrTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgSlNHbG9iYWxPYmplY3QqLCBib29sIG5lZ2F0ZVJlc3VsdCk7
DQogICAgSnVtcExpc3QgYnJhbmNoSWZUcnV0aHkoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWx1ZSwg
R1BSUmVnIHNjcmF0Y2gsIEdQUlJlZyBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIEZQUlJlZyBzY3JhdGNoRlBSMCwgRlBSUmVnIHNjcmF0Y2hGUFIxLCBib29sIHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkNCiAgICB7DQogICAgICAgIHJldHVybiBicmFuY2hJZlZhbHVlKHZtLCB2YWx1ZSwgc2Ny
YXRjaCwgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBzY3JhdGNo
RlBSMCwgc2NyYXRjaEZQUjEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgZ2xv
YmFsT2JqZWN0LCBmYWxzZSk7DQogICAgfQ0KICAgIEp1bXBMaXN0IGJyYW5jaElmRmFsc2V5KFZN
JiB2bSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaElm
U2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBGUFJSZWcgc2NyYXRjaEZQUjAsIEZQ
UlJlZyBzY3JhdGNoRlBSMSwgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpDQogICAgew0KICAgICAgICByZXR1cm4gYnJh
bmNoSWZWYWx1ZSh2bSwgdmFsdWUsIHNjcmF0Y2gsIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgc2NyYXRjaEZQUjAsIHNjcmF0Y2hGUFIxLCBzaG91bGRDaGVja01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdCwgdHJ1ZSk7DQogICAgfQ0KICAgIHZv
aWQgZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihWTSYsIEpTVmFsdWVSZWdzLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBG
UFJSZWcsIEZQUlJlZywgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIEpT
R2xvYmFsT2JqZWN0KiwgYm9vbCBuZWdhdGVSZXN1bHQgPSBmYWxzZSk7DQogICAgDQogICAgdm9p
ZCBlbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UoR1BSUmVnIGJhc2VHUFIsIHVuc2lnbmVkIGlu
bGluZUNhcGFjaXR5KQ0KICAgIHsNCiAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlu
bGluZUNhcGFjaXR5OyArK2kpDQogICAgICAgICAgICBzdG9yZVRydXN0ZWRWYWx1ZShKU1ZhbHVl
KCksIEFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsg
aSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsNCiAgICB9DQoNCiAgICB2b2lkIGVtaXRJbml0
aWFsaXplSW5saW5lU3RvcmFnZShHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIGlubGluZUNhcGFjaXR5
KQ0KICAgIHsNCiAgICAgICAgSnVtcCBlbXB0eSA9IGJyYW5jaFRlc3QzMihaZXJvLCBpbmxpbmVD
YXBhY2l0eSk7DQogICAgICAgIExhYmVsIGxvb3AgPSBsYWJlbCgpOw0KICAgICAgICBzdWIzMihU
cnVzdGVkSW1tMzIoMSksIGlubGluZUNhcGFjaXR5KTsNCiAgICAgICAgc3RvcmVUcnVzdGVkVmFs
dWUoSlNWYWx1ZSgpLCBCYXNlSW5kZXgoYmFzZUdQUiwgaW5saW5lQ2FwYWNpdHksIFRpbWVzRWln
aHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSkpOw0KICAgICAgICBicmFuY2hU
ZXN0MzIoTm9uWmVybywgaW5saW5lQ2FwYWNpdHkpLmxpbmtUbyhsb29wLCB0aGlzKTsNCiAgICAg
ICAgZW1wdHkubGluayh0aGlzKTsNCiAgICB9DQoNCiAgICB2b2lkIGVtaXRJbml0aWFsaXplT3V0
T2ZMaW5lU3RvcmFnZShHUFJSZWcgYnV0dGVyZmx5R1BSLCB1bnNpZ25lZCBvdXRPZkxpbmVDYXBh
Y2l0eSkNCiAgICB7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRPZkxpbmVD
YXBhY2l0eTsgKytpKQ0KICAgICAgICAgICAgc3RvcmVUcnVzdGVkVmFsdWUoSlNWYWx1ZSgpLCBB
ZGRyZXNzKGJ1dHRlcmZseUdQUiwgLXNpemVvZihJbmRleGluZ0hlYWRlcikgLSAoaSArIDEpICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOw0KICAgIH0NCiAgICANCg0KICAgIHZvaWQgd2FuZ3NJ
bnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7DQojbGluZSAy
MDQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcQXNzZW1ibHlIZWxwZXJzLmgiDQoNCg0KDQoNCg0KDQojbGluZSAyMDUyICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxw
ZXJzLmgiDQoNCnByb3RlY3RlZDoNCiAgICB2b2lkIGNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFt
ZUNhbGxlZVNhdmVzQnVmZmVySW1wbChHUFJSZWcgY2FsbGVlU2F2ZXNCdWZmZXIpOw0KDQogICAg
Q29kZUJsb2NrKiBtX2NvZGVCbG9jazsNCiAgICBDb2RlQmxvY2sqIG1fYmFzZWxpbmVDb2RlQmxv
Y2s7DQp9Ow0KDQp9IA0KDQojbGluZSAyMDYzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQXNzZW1ibHlIZWxwZXJzLmgiDQojbGluZSAzMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEND
YWxsSGVscGVycy5oIg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRnVuY3Rpb25UcmFpdHMuaCINCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoN
Cg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnN0cnVjdCBGdW5j
dGlvblRyYWl0czsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDU2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9GdW5jdGlvblRyYWl0cy5oIg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lLi4uIEFyZ3M+DQpzdHJ1Y3QgRnVuY3Rpb25UcmFpdHM8UmVzdWx0KEFyZ3MuLi4pPiB7
DQogICAgdXNpbmcgUmVzdWx0VHlwZSA9IFJlc3VsdDsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBoYXNSZXN1bHQgPSAhc3RkOjppc19zYW1lPFJlc3VsdFR5cGUsIHZvaWQ+Ojp2YWx1ZTsN
Cg0KICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzaXplX3QgYXJpdHkgPSBzaXplb2YuLi4oQXJn
cyk7DQoNCiAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgbiwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJs
ZV9pZl90PChuIDwgYXJpdHkpPj4NCiAgICB1c2luZyBBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBz
dGQ6OnR1cGxlX2VsZW1lbnQ8biwgc3RkOjp0dXBsZTxBcmdzLi4uPj46OnR5cGU7DQogICAgdXNp
bmcgQXJndW1lbnRUeXBlcyA9IHN0ZDo6dHVwbGU8QXJncy4uLj47DQoNCg0KDQogICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBjQ2FsbEFyaXR5KCkgeyByZXR1cm4gYXJpdHk7IH0NCg0KDQoN
CiNsaW5lIDc2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhl
YWRlcnNcXHd0Zi9GdW5jdGlvblRyYWl0cy5oIg0KDQp9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZXN1bHQsIHR5cGVuYW1lLi4uIEFyZ3M+DQpzdHJ1Y3QgRnVuY3Rpb25UcmFpdHM8UmVzdWx0KCop
KEFyZ3MuLi4pPiA6IHB1YmxpYyBGdW5jdGlvblRyYWl0czxSZXN1bHQoQXJncy4uLik+IHsNCn07
DQoNCn0gDQoNCnVzaW5nIFdURjo6RnVuY3Rpb25UcmFpdHM7DQojbGluZSAzNSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXENDYWxsSGVscGVy
cy5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KDQoNCg0KDQojbGluZSA0MyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXENDYWxsSGVscGVycy5o
Ig0KDQpjbGFzcyBDYWxsRnJhbWU7DQpjbGFzcyBTdHJ1Y3R1cmU7DQpuYW1lc3BhY2UgREZHIHsN
CmNsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU7DQp9Ow0KDQpjbGFzcyBDQ2FsbEhlbHBlcnMgOiBw
dWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsNCnB1YmxpYzoNCiAgICBDQ2FsbEhlbHBlcnMoQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBudWxscHRyKQ0KICAgICAgICA6IEFzc2VtYmx5SGVscGVycyhjb2Rl
QmxvY2spDQogICAgew0KICAgIH0NCg0KICAgIA0KICAgIGNsYXNzIENlbGxWYWx1ZSB7DQogICAg
cHVibGljOg0KICAgICAgICBleHBsaWNpdCBDZWxsVmFsdWUoR1BSUmVnIGdwcikNCiAgICAgICAg
ICAgIDogbV9ncHIoZ3ByKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICBHUFJSZWcg
Z3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0NCg0KICAgIHByaXZhdGU6DQogICAgICAgIEdQ
UlJlZyBtX2dwcjsNCiAgICB9Ow0KDQogICAgDQogICAgDQogICAgDQogICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4NCiAgICB2b2lkIHNldHVwQXJndW1lbnQodW5zaWduZWQgYXJndW1lbnRJ
bmRleCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikNCiAgICB7DQogICAgICAgIHVuc2lnbmVkIG51
bWJlck9mUmVncyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7IA0KICAgICAg
ICBpZiAoYXJndW1lbnRJbmRleCA8IG51bWJlck9mUmVncykgew0KICAgICAgICAgICAgZnVuY3Rv
cihHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRJbmRleCkpOw0KICAgICAgICAg
ICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3RvcihHUFJJbmZvOjpub25BcmdH
UFIwKTsNCiAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCA0ICsgYXJndW1lbnRJbmRl
eCAtIEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpOw0KICAgIH0NCg0KcHJpdmF0
ZToNCg0KICAgIHRlbXBsYXRlPHVuc2lnbmVkIE51bWJlck9mUmVnaXN0ZXJzLCB0eXBlbmFtZSBS
ZWdUeXBlPg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXR1cFN0dWJBcmdzKHN0ZDo6YXJyYXk8
UmVnVHlwZSwgTnVtYmVyT2ZSZWdpc3RlcnM+IGRlc3RpbmF0aW9ucywgc3RkOjphcnJheTxSZWdU
eXBlLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykNCiAgICB7DQogICAgICAgIGlmICgwKSB7
DQogICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7DQogICAgICAgICAgICBmb3IgKFJlZ1R5cGUg
ZGVzdCA6IGRlc3RpbmF0aW9ucykNCiAgICAgICAgICAgICAgICBzZXQuc2V0KGRlc3QpOw0KICAg
ICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICB9DQoNCiAgICAgICAgdHlwZWRlZiBzdGQ6OnBh
aXI8UmVnVHlwZSwgUmVnVHlwZT4gUmVnUGFpcjsNCiAgICAgICAgVmVjdG9yPFJlZ1BhaXIsIE51
bWJlck9mUmVnaXN0ZXJzPiBwYWlyczsNCg0KICAgICAgICANCiAgICAgICAgaWYgY29uc3RleHBy
IChOdW1iZXJPZlJlZ2lzdGVycyA+IDApIHsNCiAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBOdW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7DQogICAgICAgICAgICAgICAgaWYgKHNv
dXJjZXNbaV0gIT0gZGVzdGluYXRpb25zW2ldKQ0KICAgICAgICAgICAgICAgICAgICBwYWlycy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoc291cmNlc1tpXSwgZGVzdGluYXRpb25zW2ldKSk7DQogICAg
ICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgICh2
b2lkKXNvdXJjZXM7DQogICAgICAgICAgICAodm9pZClkZXN0aW5hdGlvbnM7DQogICAgICAgIH0N
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTMzICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxw
ZXJzLmgiDQoNCiAgICAgICAgd2hpbGUgKHBhaXJzLnNpemUoKSkgew0KICAgICAgICAgICAgUmVn
aXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsNCiAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IHBhaXJzKSB7DQogICAgICAgICAgICAgICAgUmVnVHlwZSBkZXN0ID0gcGFpci5zZWNvbmQ7DQog
ICAgICAgICAgICAgICAgZnJlZURlc3RpbmF0aW9ucy5zZXQoZGVzdCk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgew0KICAgICAgICAgICAgICAg
IFJlZ1R5cGUgc291cmNlID0gcGFpci5maXJzdDsNCiAgICAgICAgICAgICAgICBmcmVlRGVzdGlu
YXRpb25zLmNsZWFyKHNvdXJjZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChm
cmVlRGVzdGluYXRpb25zLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpIHsNCiAgICAgICAgICAgICAg
ICBib29sIG1hZGVNb3ZlID0gZmFsc2U7DQogICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGF1dG8m
IHBhaXIgPSBwYWlyc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgUmVnVHlwZSBzb3VyY2UgPSBw
YWlyLmZpcnN0Ow0KICAgICAgICAgICAgICAgICAgICBSZWdUeXBlIGRlc3QgPSBwYWlyLnNlY29u
ZDsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7
DQogICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZSwgZGVzdCk7DQogICAgICAgICAg
ICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7DQogICAgICAgICAgICAgICAgICAgICAgICBt
YWRlTW92ZSA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAoKHZvaWQp
bWFkZU1vdmUpOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQog
ICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAg
ICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCiAgICAgICAgICAgIFJlZ1R5cGUgc291
cmNlID0gcGFpcnNbMF0uZmlyc3Q7DQogICAgICAgICAgICBSZWdUeXBlIGRlc3QgPSBwYWlyc1sw
XS5zZWNvbmQ7DQogICAgICAgICAgICBzd2FwKHNvdXJjZSwgZGVzdCk7DQogICAgICAgICAgICBw
YWlycy5yZW1vdmUoMCk7DQoNCiAgICAgICAgICAgIFJlZ1R5cGUgbmV3U291cmNlID0gc291cmNl
Ow0KICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsNCiAgICAgICAgICAgICAg
ICBSZWdUeXBlIHNvdXJjZSA9IHBhaXIuZmlyc3Q7DQogICAgICAgICAgICAgICAgaWYgKHNvdXJj
ZSA9PSBkZXN0KSB7DQogICAgICAgICAgICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7
DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsNCiAgICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFp
cnNbaV07DQogICAgICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsN
CiAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOw0KICAgICAgICAgICAgICAgICAg
ICBpLS07DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAg
fQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDIwNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXENDYWxsSGVscGVycy5oIg0KDQogICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4NCiAgICB1c2luZyBJbmZvVHlwZUZvclJlZyA9IGRl
Y2x0eXBlKHRvSW5mb0Zyb21SZWcoUmVnVHlwZSgtMSkpKTsNCg0KICAgIA0KICAgIA0KICAgIHRl
bXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+DQogICAg
c3RydWN0IEFyZ0NvbGxlY3Rpb24gew0KICAgICAgICBBcmdDb2xsZWN0aW9uKCkNCiAgICAgICAg
ew0KICAgICAgICAgICAgZ3ByU291cmNlcy5maWxsKEludmFsaWRHUFJSZWcpOw0KICAgICAgICAg
ICAgZ3ByRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7DQogICAgICAgICAgICBmcHJT
b3VyY2VzLmZpbGwoSW52YWxpZEZQUlJlZyk7DQogICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMu
ZmlsbChJbnZhbGlkRlBSUmVnKTsNCiAgICAgICAgICAgIGNyb3NzU291cmNlcy5maWxsKEludmFs
aWRGUFJSZWcpOw0KICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BS
UmVnKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVk
IGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2ln
bmVkIGc+DQogICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBl
LCBmLCBnPiYgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhl
ci5ncHJTb3VyY2VzOw0KICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVz
dGluYXRpb25zOw0KICAgICAgICAgICAgZnByU291cmNlcyA9IG90aGVyLmZwclNvdXJjZXM7DQog
ICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMgPSBvdGhlci5mcHJEZXN0aW5hdGlvbnM7DQogICAg
ICAgICAgICBjcm9zc1NvdXJjZXMgPSBvdGhlci5jcm9zc1NvdXJjZXM7DQogICAgICAgICAgICBj
cm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOw0KICAgICAgICB9DQoN
CiAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRp
b24pDQogICAgICAgIHsNCiAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEs
IG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOw0KDQogICAgICAg
ICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50Ow0KICAgICAg
ICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9u
Ow0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQ
UlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBw
dXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQ0KICAgICAgICB7
DQogICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsNCg0KICAgICAgICAgICAgcmVzdWx0LmZw
clNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsNCiAgICAgICAgICAgIHJlc3VsdC5m
cHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsNCiAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJS
ZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IHJlc3VsdCgqdGhpcyk7DQoNCiAgICAgICAgICAgIHJlc3VsdC5jcm9zc1NvdXJjZXNbbnVt
Q3Jvc3NTb3VyY2VzXSA9IGFyZ3VtZW50Ow0KICAgICAgICAgICAgcmVzdWx0LmNyb3NzRGVzdGlu
YXRpb25zW251bUNyb3NzU291cmNlc10gPSBkZXN0aW5hdGlvbjsNCiAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gcHVzaEV4dHJhUmVnQXJnKEdQUlJl
ZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQ0KICAgICAgICB7DQogICAgICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9r
ZT4gcmVzdWx0KCp0aGlzKTsNCg0KICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVtR1BS
U291cmNlc10gPSBhcmd1bWVudDsNCiAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNb
bnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
DQogICAgICAgIH0NCg0KICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQ0KICAgICAgICB7DQogICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4oKnRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQ0K
ICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOw0KICAgICAgICB9DQoNCiAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRo
aXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQ0KICAgICAgICB7
DQogICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9r
ZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7DQogICAgICAgIH0NCg0K
DQogICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEdQUlJlZykgeyByZXR1cm4gbnVtR1BSQXJncyAr
IG51bUZQUkFyZ3M7IH0NCiAgICAgICAgdW5zaWduZWQgYXJnQ291bnQoRlBSUmVnKSB7IHJldHVy
biBudW1HUFJBcmdzICsgbnVtRlBSQXJnczsgfQ0KDQoNCg0KI2xpbmUgMzAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxwZXJz
LmgiDQoNCiAgICAgICAgDQogICAgICAgIHN0ZDo6YXJyYXk8R1BSUmVnLCBHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVycz4gZ3ByU291cmNlczsNCiAgICAgICAgc3RkOjphcnJheTxHUFJSZWcsIEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBncHJEZXN0aW5hdGlvbnM7DQoNCiAgICAgICAgDQog
ICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycz4gZnBy
U291cmNlczsNCiAgICAgICAgc3RkOjphcnJheTxGUFJSZWcsIEZQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzPiBmcHJEZXN0aW5hdGlvbnM7DQoNCiAgICAgICAgDQogICAgICAgIHN0ZDo6YXJyYXk8
RlBSUmVnLCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycz4gY3Jvc3NTb3VyY2VzOw0KICAgICAg
ICBzdGQ6OmFycmF5PEdQUlJlZywgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM+IGNyb3NzRGVz
dGluYXRpb25zOw0KICAgIH07DQoNCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBUYXJnZXRTaXplLCB0
eXBlbmFtZSBSZWdUeXBlPg0KICAgIHN0ZDo6YXJyYXk8UmVnVHlwZSwgVGFyZ2V0U2l6ZT4gY2xh
bXBBcnJheVRvU2l6ZShzdGQ6OmFycmF5PFJlZ1R5cGUsIEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+
OjpudW1iZXJPZlJlZ2lzdGVycz4gc291cmNlQXJyYXkpDQogICAgew0KICAgICAgICBzdGF0aWNf
YXNzZXJ0KFRhcmdldFNpemUgPD0gc291cmNlQXJyYXkuc2l6ZSgpLCAiVGFyZ2V0U2l6ZSBpcyBi
aWdnZXIgdGhhbiBzb3VyY2Uuc2l6ZSgpIik7DQogICAgICAgIGRvIHsgaWYgKCghKFRhcmdldFNp
emUgPD0gSW5mb1R5cGVGb3JSZWc8UmVnVHlwZT46Om51bWJlck9mUmVnaXN0ZXJzKSkpIGRvIHsg
V1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsg
V1RGQ3Jhc2hXaXRoSW5mbygzMTksICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxwZXJzLmgiLCAgX19GVU5DVElPTl9fICAsIDE1
NyApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KDQogICAgICAgIHN0ZDo6YXJyYXk8
UmVnVHlwZSwgVGFyZ2V0U2l6ZT4gcmVzdWx0IHsgfTsNCg0KICAgICAgICANCiAgICAgICAgaWYg
Y29uc3RleHByIChUYXJnZXRTaXplID4gMCkgew0KICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IFRhcmdldFNpemU7IGkrKykgew0KICAgICAgICAgICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBzb3VyY2VBcnJheVtpXTsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQ0KDQogICAgX19m
b3JjZWlubGluZSB1bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRH
UFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQ0KICAg
IHsNCiAgICAgICAgDQogICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVy
cyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7DQogICAgICAgIHVuc2lnbmVk
IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7DQoNCiAgICAgICAgY3VycmVudEdQUkFyZ3VtZW50ICs9IGV4dHJhR1BSQXJnczsN
CiAgICAgICAgY3VycmVudEZQUkFyZ3VtZW50IC09IG51bUNyb3NzU291cmNlczsNCiAgICAgICAg
DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgDQoNCiAgICAgICAgdW5zaWduZWQgcG9rZU9m
ZnNldCA9IDQgKyBleHRyYVBva2U7DQogICAgICAgIHBva2VPZmZzZXQgKz0gc3RkOjptYXgoY3Vy
cmVudEdQUkFyZ3VtZW50LCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMpIC0gbnVtYmVyT2ZH
UEFyZ3VtZW50UmVnaXN0ZXJzOw0KICAgICAgICBwb2tlT2Zmc2V0ICs9IHN0ZDo6bWF4KGN1cnJl
bnRGUFJBcmd1bWVudCwgbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzKSAtIG51bWJlck9mRlBB
cmd1bWVudFJlZ2lzdGVyczsNCiAgICAgICAgcmV0dXJuIHBva2VPZmZzZXQ7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4NCiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgcG9r
ZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVu
c2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkNCiAgICB7DQogICAgICAgIHVu
c2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVu
dCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlKTsNCiAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOw0KICAgIH0NCg0KICAgIF9f
Zm9yY2VpbmxpbmUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpDQogICAgew0KICAgICAg
ICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJn
dW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSk7DQogICAgICAgIHJldHVybiAhKHBva2VPZmZzZXQgJiAxKTsNCiAgICB9DQoN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCg0KDQoNCg0KDQoNCiAg
ICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPg0KICAgIGlubGluZSB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpDQogICAgew0KICAgICAgICB1c2luZyBJbmZv
VHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+Ow0KICAgICAgICB1bnNpZ25lZCBudW1BcmdS
ZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsNCg0KICAgICAg
ICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZykg
KyAoc3RkOjppc19zYW1lPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpS
ZXN1bHRUeXBlLCBTbG93UGF0aFJldHVyblR5cGU+Ojp2YWx1ZSA/IDEgOiAwKTsNCg0KDQojbGlu
ZSAzODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aml0XFxDQ2FsbEhlbHBlcnMuaCINCiAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCA8IG51bUFy
Z1JlZ2lzdGVycykgew0KICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFy
Z1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEluZm9UeXBlOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
Y3VycmVudEFyZ0NvdW50KSk7DQogICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOw0KICAgICAgICAgICAgcmV0
dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7
DQogICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+DQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykNCiAgICB7DQog
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRz
PE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8bnVtR1BSQXJncyArIG51bUZQ
UkFyZ3M+LCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVn
cyB0byBhIGRvdWJsZSIpOw0KICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsNCiAgICB9DQoNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgIF9fZm9yY2VpbmxpbmUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
DQogICAgew0KICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykNCiAg
ICB7DQogICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+DQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIENlbGxWYWx1ZSBhcmcsIEFyZ3MuLi4gYXJncykNCiAg
ICB7DQogICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOw0KICAgIH0NCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDU3
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRc
XENDYWxsSGVscGVycy5oIg0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJn
LCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgIF9fZm9yY2VpbmxpbmUgc3RkOjplbmFibGVfaWZfdDwN
CiAgICAgICAgc3RkOjppc19iYXNlX29mPFRydXN0ZWRJbW0sIEFyZz46OnZhbHVlDQogICAgICAg
IHx8IHN0ZDo6aXNfY29udmVydGlibGU8QXJnLCBUcnVzdGVkSW1tPjo6dmFsdWU+IA0KICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykNCiAgICB7
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHN0YXRpY19hc3NlcnQoIXN0
ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTxudW1HUFJBcmdzICsgbnVtRlBSQXJncz4+Ojp2YWx1
ZSwgIldlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0cy9kb3VibGVzIGluIHNldHVwQXJn
dW1lbnRzIik7DQogICAgICAgIGF1dG8gbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVyczsNCg0KICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51
bUdQUkFyZ3MgKyBudW1GUFJBcmdzICsgKHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBGdW5jdGlvblRy
YWl0czxPcGVyYXRpb25UeXBlPjo6UmVzdWx0VHlwZSwgU2xvd1BhdGhSZXR1cm5UeXBlPjo6dmFs
dWUgPyAxIDogMCk7DQoNCg0KI2xpbmUgNTg4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxwZXJzLmgiDQogICAgICAgIGlmIChj
dXJyZW50QXJnQ291bnQgPCBudW1BcmdSZWdpc3RlcnMpIHsNCiAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdz
Li4uKTsNCiAgICAgICAgICAgIG1vdmUoYXJnLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
Y3VycmVudEFyZ0NvdW50KSk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsNCiAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4p
Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5h
bWUuLi4gQXJncz4NCiAgICBfX2ZvcmNlaW5saW5lIHN0ZDo6ZW5hYmxlX2lmX3Q8DQogICAgICAg
IHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6dGVt
cGxhdGUgQXJndW1lbnRUeXBlPG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzPiwgQXJnPjo6dmFsdWUN
CiAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVy
YXRpb25UeXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPG51bUdQUkFyZ3MgKyBudW1GUFJBcmdz
Pj46OnZhbHVlDQogICAgICAgICYmIChzaXplb2YodHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTxudW1HUFJBcmdzICsgbnVtRlBSQXJn
cz4pIDw9IDQpPg0KICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFy
Z3MuLi4gYXJncykNCiAgICB7DQogICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7DQogICAgfQ0K
DQogICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdz
Pg0KICAgIF9fZm9yY2VpbmxpbmUgc3RkOjplbmFibGVfaWZfdDwNCiAgICAgICAgc3RkOjppc19z
YW1lPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBBcmd1
bWVudFR5cGU8bnVtR1BSQXJncyArIG51bUZQUkFyZ3M+LCBBcmc+Ojp2YWx1ZQ0KICAgICAgICAm
JiBzdGQ6OmlzX2ludGVncmFsPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
Ojp0ZW1wbGF0ZSBBcmd1bWVudFR5cGU8bnVtR1BSQXJncyArIG51bUZQUkFyZ3M+Pjo6dmFsdWUN
CiAgICAgICAgJiYgKHNpemVvZih0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzPikgPT0gOCk+
DQogICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdz
KQ0KICAgIHsNCiAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIFRydXN0ZWRJbW02NChhcmcpLCBhcmdzLi4uKTsNCiAgICB9DQoNCiAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+DQogICAgX19m
b3JjZWlubGluZSBzdGQ6OmVuYWJsZV9pZl90PA0KICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8dHlw
ZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlw
ZTxudW1HUFJBcmdzICsgbnVtRlBSQXJncz4+Ojp2YWx1ZQ0KICAgICAgICAmJiAoKHN0ZDo6aXNf
cG9pbnRlcjxBcmc+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPHN0ZDo6cmVtb3ZlX2Nv
bnN0X3Q8c3RkOjpyZW1vdmVfcG9pbnRlcl90PEFyZz4+KiwgdHlwZW5hbWUgRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OnRlbXBsYXRlIEFyZ3VtZW50VHlwZTxudW1HUFJBcmdzICsgbnVt
RlBSQXJncz4+Ojp2YWx1ZSkNCiAgICAgICAgICAgIHx8IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6
bnVsbHB0cl90Pjo6dmFsdWUpPg0KICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykNCiAgICB7DQogICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4p
Ow0KICAgIH0NCg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4NCiAgICBfX2ZvcmNlaW5saW5lIHN0ZDo6ZW5hYmxlX2lmX3Q8DQog
ICAgICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzPiwgU3RydWN0
dXJlKj46OnZhbHVlDQogICAgICAgICYmIHN0ZDo6aXNfc2FtZTxBcmcsIERGRzo6UmVnaXN0ZXJl
ZFN0cnVjdHVyZT46OnZhbHVlPg0KICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykNCiAgICB7DQogICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFy
Z3MuLi4pOw0KICAgIH0NCg0KDQoNCg0KICAgIA0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+DQog
ICAgX19mb3JjZWlubGluZSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpDQogICAg
ew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojph
cml0eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNhbml0eSBjaGVjayIp
Ow0KDQogICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46
OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncyArIGV4dHJhUG9rZSwgIkNo
ZWNrIHRoZSBDQ2FsbCBhcml0eSIpOw0KI2xpbmUgNjQ5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxwZXJzLmgiDQogICAgICAg
IHNldHVwU3R1YkFyZ3M8bnVtR1BSU291cmNlcywgR1BSUmVnPihjbGFtcEFycmF5VG9TaXplPG51
bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJEZXN0aW5hdGlvbnMpLCBjbGFt
cEFycmF5VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJTb3Vy
Y2VzKSk7DQoNCg0KI2xpbmUgNjUzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxwZXJzLmgiDQogICAgICAgIHN0YXRpY19hc3Nl
cnQoIW51bUNyb3NzU291cmNlcywgInNob3VsZG4ndCBiZSB1c2VkIG9uIHRoaXMgYXJjaGl0ZWN0
dXJlLiIpOw0KI2xpbmUgNjU1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxwZXJzLmgiDQogICAgICAgIHNldHVwU3R1YkFyZ3M8
bnVtRlBSU291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQ
UlJlZz4oYXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51
bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2VzKSk7DQogICAgfQ0K
DQpwdWJsaWM6DQoNCg0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlw
ZW5hbWUuLi4gQXJncz4NCiAgICBfX2ZvcmNlaW5saW5lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19zYW1lPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojp0ZW1wbGF0ZSBB
cmd1bWVudFR5cGU8MD4sIENhbGxGcmFtZSo+Ojp2YWx1ZT4gc2V0dXBBcmd1bWVudHMoQXJncy4u
LiBhcmdzKQ0KICAgIHsNCg0KICAgICAgICANCiAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlv
blRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSAr
IDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsNCiNsaW5lIDY2OSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXENDYWxsSGVscGVycy5oIg0KICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwg
MD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgYXJncy4uLik7DQogICAgfQ0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4NCiAgICBfX2ZvcmNlaW5saW5lIHN0ZDo6ZW5h
YmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBGdW5jdGlvblRyYWl0czxPcGVyYXRpb25U
eXBlPjo6dGVtcGxhdGUgQXJndW1lbnRUeXBlPDA+LCBDYWxsRnJhbWUqPjo6dmFsdWU+IHNldHVw
QXJndW1lbnRzKEFyZ3MuLi4gYXJncykNCiAgICB7DQoNCiAgICAgICAgDQogICAgICAgIHN0YXRp
Y19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBz
aXplb2YuLi4oQXJncyksICJCYXNpYyBzYW5pdHkgY2hlY2siKTsNCiNsaW5lIDY3OSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXENDYWxsSGVs
cGVycy5oIg0KICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwg
MCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBhcmdz
Li4uKTsNCiAgICB9DQoNCg0KDQogICAgdm9pZCBzZXR1cFJlc3VsdHMoR1BSUmVnIGRlc3RBLCBH
UFJSZWcgZGVzdEIpDQogICAgew0KICAgICAgICBHUFJSZWcgc3JjQSA9IEdQUkluZm86OnJldHVy
blZhbHVlR1BSOw0KICAgICAgICBHUFJSZWcgc3JjQiA9IEdQUkluZm86OnJldHVyblZhbHVlR1BS
MjsNCg0KICAgICAgICBpZiAoZGVzdEEgPT0gSW52YWxpZEdQUlJlZykNCiAgICAgICAgICAgIG1v
dmUoc3JjQiwgZGVzdEIpOw0KICAgICAgICBlbHNlIGlmIChkZXN0QiA9PSBJbnZhbGlkR1BSUmVn
KQ0KICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0QSk7DQogICAgICAgIGVsc2UgaWYgKHNyY0Ig
IT0gZGVzdEEpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0QSk7
DQogICAgICAgICAgICBtb3ZlKHNyY0IsIGRlc3RCKTsNCiAgICAgICAgfSBlbHNlIGlmIChzcmNB
ICE9IGRlc3RCKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIG1vdmUoc3JjQiwgZGVzdEIp
Ow0KICAgICAgICAgICAgbW92ZShzcmNBLCBkZXN0QSk7DQogICAgICAgIH0gZWxzZQ0KICAgICAg
ICAgICAgc3dhcChkZXN0QSwgZGVzdEIpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIHNldHVwUmVz
dWx0cyhKU1ZhbHVlUmVncyByZWdzKQ0KICAgIHsNCg0KICAgICAgICBtb3ZlKEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCByZWdzLmdwcigpKTsNCg0KDQojbGluZSA3MTIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxDQ2FsbEhlbHBlcnMuaCIN
CiAgICB9DQogICAgDQogICAgdm9pZCBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKFZNJiB2bSkNCiAg
ICB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgbG9hZFB0cigmdm0udGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3csIEdQUkluZm86OnJlZ1QxKTsNCiAgICAgICAgZmFySnVtcChHUFJJbmZvOjpy
ZWdUMSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7DQogICAgfQ0KDQogICAgdm9pZCBwcmVwYXJl
Rm9yVGFpbENhbGxTbG93KEdQUlJlZyBjYWxsZWVHUFIgPSBJbnZhbGlkR1BSUmVnKQ0KICAgIHsN
CiAgICAgICAgR1BSUmVnIHRlbXAxID0gY2FsbGVlR1BSID09IEdQUkluZm86OnJlZ1QwID8gR1BS
SW5mbzo6cmVnVDMgOiBHUFJJbmZvOjpyZWdUMDsNCiAgICAgICAgR1BSUmVnIHRlbXAyID0gY2Fs
bGVlR1BSID09IEdQUkluZm86OnJlZ1QxID8gR1BSSW5mbzo6cmVnVDMgOiBHUFJJbmZvOjpyZWdU
MTsNCiAgICAgICAgR1BSUmVnIHRlbXAzID0gY2FsbGVlR1BSID09IEdQUkluZm86OnJlZ1QyID8g
R1BSSW5mbzo6cmVnVDMgOiBHUFJJbmZvOjpyZWdUMjsNCg0KICAgICAgICBHUFJSZWcgbmV3RnJh
bWVQb2ludGVyID0gdGVtcDE7DQogICAgICAgIEdQUlJlZyBuZXdGcmFtZVNpemVHUFIgPSB0ZW1w
MjsNCiAgICAgICAgew0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgR1BSUmVnIG9sZEZyYW1lU2l6ZUdQUiA9IHRlbXAyOw0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIEdQUlJlZyBhcmdDb3VudEdQUiA9IG9sZEZyYW1lU2l6ZUdQUjsN
CiAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpICsgKF9fYnVpbHRpbl9vZmZzZXRvZihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLGFzQml0cy5wYXlsb2FkKSkpLCBhcmdDb3VudEdQUik7DQoNCiAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgIEdQUlJlZyBudW1QYXJhbWV0ZXJzR1BSID0gdGVtcDE7
DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBj
b2RlQmxvY2tHUFIgPSBudW1QYXJhbWV0ZXJzR1BSOw0KICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgY29kZUJsb2NrR1BS
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKGNvZGVCbG9ja0dQUiwg
Q29kZUJsb2NrOjpvZmZzZXRPZk51bVBhcmFtZXRlcnMoKSksIG51bVBhcmFtZXRlcnNHUFIpOw0K
ICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICAgICAgICAgICAgICBKdW1wIGFyZ3VtZW50Q291bnRXYXNOb3RGaXhlZFVwID0gYnJh
bmNoMzIoQmVsb3dPckVxdWFsLCBudW1QYXJhbWV0ZXJzR1BSLCBhcmdDb3VudEdQUik7DQogICAg
ICAgICAgICAgICAgICAgIG1vdmUobnVtUGFyYW1ldGVyc0dQUiwgYXJnQ291bnRHUFIpOw0KICAg
ICAgICAgICAgICAgICAgICBhcmd1bWVudENvdW50V2FzTm90Rml4ZWRVcC5saW5rKHRoaXMpOw0K
ICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihz
dGFja0FsaWdubWVudFJlZ2lzdGVycygpICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnMgLSAxKSwgYXJnQ291bnRHUFIsIG9sZEZyYW1lU2l6ZUdQUik7DQogICAgICAgICAgICAgICAg
YW5kMzIoVHJ1c3RlZEltbTMyKC1zdGFja0FsaWdubWVudFJlZ2lzdGVycygpKSwgb2xkRnJhbWVT
aXplR1BSKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBtdWwzMihUcnVzdGVk
SW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSksIG9sZEZyYW1lU2l6ZUdQUiwgb2xkRnJhbWVTaXplR1BS
KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgDQogICAgICAgICAgICAoKHZvaWQpMCk7
DQogICAgICAgICAgICBhZGRQdHIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIG9sZEZyYW1lU2l6ZUdQ
UiwgbmV3RnJhbWVQb2ludGVyKTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAg
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIGxvYWQzMihBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyAoX19idWlsdGluX29mZnNldG9mKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsYXNCaXRzLnBheWxvYWQpKSAtIHNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSksDQogICAgICAgICAgICAgICAgbmV3RnJhbWVTaXplR1BSKTsNCiAgICAgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpICsgQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgLSAxKSwgbmV3RnJhbWVTaXplR1BSKTsNCiAgICAgICAg
ICAgIGFuZDMyKFRydXN0ZWRJbW0zMigtc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSksIG5ld0Zy
YW1lU2l6ZUdQUik7DQogICAgICAgICAgICANCiAgICAgICAgICAgIG11bDMyKFRydXN0ZWRJbW0z
MihzaXplb2YoUmVnaXN0ZXIpKSwgbmV3RnJhbWVTaXplR1BSLCBuZXdGcmFtZVNpemVHUFIpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wMzsNCiAgICAgICAgKCh2
b2lkKTApOw0KDQogICAgICAgIA0KICAgICAgICANCg0KDQoNCg0KDQoNCg0KI2xpbmUgNzg3ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQ0Nh
bGxIZWxwZXJzLmgiDQoNCg0KI2xpbmUgNzkwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcQ0NhbGxIZWxwZXJzLmgiDQogICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKHZvaWQqKSksIHRlbXBHUFIp
Ow0KICAgICAgICBwdXNoKHRlbXBHUFIpOw0KICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKHNp
emVvZih2b2lkKikpLCBuZXdGcmFtZVNpemVHUFIpOw0KDQoNCiNsaW5lIDc5NiAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXENDYWxsSGVscGVy
cy5oIg0KICAgICAgICBzdWJQdHIobmV3RnJhbWVTaXplR1BSLCBuZXdGcmFtZVBvaW50ZXIpOw0K
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQb2ludGVyUmVnaXN0ZXIpLCBmcmFtZVBvaW50
ZXJSZWdpc3Rlcik7DQoNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBjb3B5TG9vcChsYWJlbCgpKTsNCg0KICAgICAgICBzdWJQdHIoVHJ1c3RlZElt
bTMyKHNpemVvZih2b2lkKikpLCBuZXdGcmFtZVNpemVHUFIpOw0KICAgICAgICBsb2FkUHRyKEJh
c2VJbmRleChzdGFja1BvaW50ZXJSZWdpc3RlciwgbmV3RnJhbWVTaXplR1BSLCBUaW1lc09uZSks
IHRlbXBHUFIpOw0KICAgICAgICBzdG9yZVB0cih0ZW1wR1BSLCBCYXNlSW5kZXgobmV3RnJhbWVQ
b2ludGVyLCBuZXdGcmFtZVNpemVHUFIsIFRpbWVzT25lKSk7DQoNCiAgICAgICAgYnJhbmNoVGVz
dDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBuZXdGcmFtZVNpemVHUFIpLmxpbmtUbyhjb3B5
TG9vcCwgdGhpcyk7DQoNCiAgICAgICAgDQogICAgICAgIG1vdmUobmV3RnJhbWVQb2ludGVyLCBz
dGFja1BvaW50ZXJSZWdpc3Rlcik7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIA0KICAgIHZvaWQg
bG9nU2hhZG93Q2hpY2tlblByb2xvZ3VlUGFja2V0KEdQUlJlZyBzaGFkb3dQYWNrZXQsIEdQUlJl
ZyBzY3JhdGNoMSwgR1BSUmVnIHNjb3BlKTsNCiAgICB2b2lkIGxvZ1NoYWRvd0NoaWNrZW5UYWls
UGFja2V0KEdQUlJlZyBzaGFkb3dQYWNrZXQsIEpTVmFsdWVSZWdzIHRoaXNSZWdzLCBHUFJSZWcg
c2NvcGUsIENvZGVCbG9jayosIENhbGxTaXRlSW5kZXgpOw0KICAgIA0KICAgIHZvaWQgZW5zdXJl
U2hhZG93Q2hpY2tlblBhY2tldChWTSYsIEdQUlJlZyBzaGFkb3dQYWNrZXQsIEdQUlJlZyBzY3Jh
dGNoMU5vbkFyZ0dQUiwgR1BSUmVnIHNjcmF0Y2gyKTsNCn07DQoNCn0gDQoNCiNsaW5lIDgyNSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEND
YWxsSGVscGVycy5oIg0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaml0XFxTbmlwcGV0LmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpj
bGFzcyBTbmlwcGV0UGFyYW1zOw0KDQp0eXBlZGVmIENDYWxsSGVscGVyczo6SnVtcExpc3QgU25p
cHBldENvbXBpbGVyRnVuY3Rpb24oQ0NhbGxIZWxwZXJzJiwgU25pcHBldFBhcmFtcyYpOw0KdHlw
ZWRlZiBTaGFyZWRUYXNrPFNuaXBwZXRDb21waWxlckZ1bmN0aW9uPiBTbmlwcGV0Q29tcGlsZXI7
DQoNCg0KDQoNCg0KDQoNCg0KY2xhc3MgU25pcHBldCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTbmlwcGV0PiB7DQpwdWJsaWM6DQogICAgc3RhdGljIFJlZjxTbmlwcGV0PiBjcmVhdGUo
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU25pcHBldCgpKTsNCiAgICB9
DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0KICAgIHZvaWQgc2V0R2VuZXJhdG9y
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpDQogICAgew0KICAgICAgICBtX2dlbmVyYXRvciA9IGNy
ZWF0ZVNoYXJlZFRhc2s8U25pcHBldENvbXBpbGVyRnVuY3Rpb24+KGZ1bmN0b3IpOw0KICAgIH0N
Cg0KICAgIFJlZlB0cjxTbmlwcGV0Q29tcGlsZXI+IGdlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fZ2VuZXJhdG9yOyB9DQoNCiAgICB1aW50OF90IG51bUdQU2NyYXRjaFJlZ2lzdGVycyB7IDAg
fTsNCiAgICB1aW50OF90IG51bUZQU2NyYXRjaFJlZ2lzdGVycyB7IDAgfTsNCg0KcHJvdGVjdGVk
Og0KICAgIFNuaXBwZXQoKSA9IGRlZmF1bHQ7DQoNCnByaXZhdGU6DQogICAgUmVmUHRyPFNuaXBw
ZXRDb21waWxlcj4gbV9nZW5lcmF0b3I7DQp9Ow0KDQp9DQoNCiNsaW5lIDc1ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcU25pcHBldC5oIg0K
I2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcZG9taml0XFxET01KSVRDYWxsRE9NR2V0dGVyU25pcHBldC5oIg0KDQpuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERPTUpJVCB7DQoNCmNsYXNzIENhbGxET01HZXR0ZXJTbmlwcGV0IDogcHVi
bGljIFNuaXBwZXQgew0KcHVibGljOg0KICAgIHN0YXRpYyBSZWY8Q2FsbERPTUdldHRlclNuaXBw
ZXQ+IGNyZWF0ZSgpDQogICAgew0KICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWxsRE9N
R2V0dGVyU25pcHBldCgpKTsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBi
b29sIHJlcXVpcmVHbG9iYWxPYmplY3QgeyB0cnVlIH07DQoNCiAgICBFZmZlY3QgZWZmZWN0IHsg
fTsNCg0KcHJpdmF0ZToNCiAgICBDYWxsRE9NR2V0dGVyU25pcHBldCgpID0gZGVmYXVsdDsNCn07
DQoNCn0gfQ0KDQojbGluZSA1NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxkb21qaXRcXERPTUpJVENhbGxET01HZXR0ZXJTbmlwcGV0LmgiDQojbGlu
ZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxk
b21qaXRcXERPTUpJVEdldHRlclNldHRlci5oIg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERPTUpJVCB7DQoNCmNsYXNzIENhbGxET01HZXR0ZXJTbmlwcGV0Ow0KDQpjbGFzcyBH
ZXR0ZXJTZXR0ZXIgew0KcHVibGljOg0KICAgIHVzaW5nIEN1c3RvbUdldHRlciA9IFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jOw0KICAgIHVzaW5nIEN1c3RvbVNldHRlciA9IFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jOw0KICAgIHVzaW5nIFNuaXBwZXRDb21waWxlciA9IFJlZjxET01K
SVQ6OkNhbGxET01HZXR0ZXJTbmlwcGV0PigqKSgpOw0KDQogICAgY29uc3RleHByIEdldHRlclNl
dHRlcihDdXN0b21HZXR0ZXIgZ2V0dGVyLCBTbmlwcGV0Q29tcGlsZXIgY29tcGlsZXIsIFNwZWN1
bGF0ZWRUeXBlIHJlc3VsdFR5cGUpDQogICAgICAgIDogbV9nZXR0ZXIoZ2V0dGVyKQ0KICAgICAg
ICAsIG1fY29tcGlsZXIoY29tcGlsZXIpDQogICAgICAgICwgbV9yZXN1bHRUeXBlKHJlc3VsdFR5
cGUpDQogICAgew0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBDdXN0b21HZXR0ZXIgZ2V0dGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9nZXR0ZXI7IH0NCiAgICBjb25zdGV4cHIgU25pcHBldENvbXBpbGVy
IGNvbXBpbGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxlcjsgfQ0KICAgIGNvbnN0ZXhwciBT
cGVjdWxhdGVkVHlwZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRUeXBlOyB9
DQoNCnByaXZhdGU6DQogICAgQ3VzdG9tR2V0dGVyIG1fZ2V0dGVyOw0KICAgIFNuaXBwZXRDb21w
aWxlciBtX2NvbXBpbGVyOw0KICAgIFNwZWN1bGF0ZWRUeXBlIG1fcmVzdWx0VHlwZTsNCn07DQoN
Cn0gfQ0KI2xpbmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcTG9va3VwLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRvbWppdFxcRE9NSklUU2lnbmF0dXJlLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsNCg0K
DQoNCg0KDQoNCg0KdXNpbmcgRnVuY3Rpb25QdHIgPSB2b2lkICgqKSgpOw0KDQpjbGFzcyBTaWdu
YXR1cmUgew0KcHVibGljOg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4NCiAg
ICBjb25zdGV4cHIgU2lnbmF0dXJlKENGdW5jdGlvblB0ciBmdW5jdGlvbldpdGhvdXRUeXBlQ2hl
Y2ssIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBFZmZlY3QgZWZmZWN0LCBTcGVjdWxhdGVk
VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpDQogICAgICAgIDogZnVuY3Rpb25X
aXRob3V0VHlwZUNoZWNrKGZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjay5nZXQoKSkNCiAgICAgICAg
LCBjbGFzc0luZm8oY2xhc3NJbmZvKQ0KICAgICAgICAsIHJlc3VsdChyZXN1bHQpDQogICAgICAg
ICwgYXJndW1lbnRzIHtzdGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlwZT4oYXJndW1lbnRzKS4uLn0N
CiAgICAgICAgLCBhcmd1bWVudENvdW50KHNpemVvZi4uLihBcmd1bWVudHMpKQ0KICAgICAgICAs
IGVmZmVjdChlZmZlY3QpDQogICAgew0KICAgIH0NCg0KICAgIGNvbnN0IEZ1bmN0aW9uUHRyIGZ1
bmN0aW9uV2l0aG91dFR5cGVDaGVjazsNCiAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGNsYXNz
SW5mbzsNCiAgICBjb25zdCBTcGVjdWxhdGVkVHlwZSByZXN1bHQ7DQogICAgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgYXJndW1lbnRzWzJdOw0KICAgIGNvbnN0IHVuc2lnbmVkIGFyZ3VtZW50Q291bnQ7
DQogICAgY29uc3QgRWZmZWN0IGVmZmVjdDsNCn07DQoNCn0gfQ0KI2xpbmUgMjggIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTG9va3Vw
LmgiDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxUeXBlRXJyb3IuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQppbmxpbmUgYm9vbCB0eXBlRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGJvb2wgdGhyb3dFeGNlcHRpb24s
IEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQ0Kew0KICAgIGlmICh0aHJvd0V4Y2VwdGlvbikNCiAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWVzc2FnZSk7DQogICAgcmV0
dXJuIGZhbHNlOw0KfQ0KDQp9IA0KI2xpbmUgMzcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTG9va3VwLmgiDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCnN0cnVjdCBDb21wYWN0SGFzaEluZGV4IHsNCiAgICBjb25zdCBpbnQxNl90IHZh
bHVlOw0KICAgIGNvbnN0IGludDE2X3QgbmV4dDsNCn07DQoNCg0KDQp0eXBlZGVmIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOw0KdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsNCnR5cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxlKiAo
KkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7DQp0eXBlZGVmIEpTVmFsdWUgKCpMYXp5UHJvcGVydHlD
YWxsYmFjaykoVk0mLCBKU09iamVjdCopOw0KDQoNCnN0cnVjdCBIYXNoVGFibGVWYWx1ZSB7DQog
ICAgY29uc3QgY2hhciogbV9rZXk7IA0KICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlczsgDQogICAg
SW50cmluc2ljIG1faW50cmluc2ljOw0KICAgIHVuaW9uIFZhbHVlU3RvcmFnZSB7DQogICAgICAg
IGNvbnN0ZXhwciBWYWx1ZVN0b3JhZ2UoaW50cHRyX3QgdmFsdWUxLCBpbnRwdHJfdCB2YWx1ZTIp
DQogICAgICAgICAgICA6IHZhbHVlMSh2YWx1ZTEpDQogICAgICAgICAgICAsIHZhbHVlMih2YWx1
ZTIpDQogICAgICAgIHsgfQ0KICAgICAgICBjb25zdGV4cHIgVmFsdWVTdG9yYWdlKGxvbmcgbG9u
ZyBjb25zdGFudCkNCiAgICAgICAgICAgIDogY29uc3RhbnQoY29uc3RhbnQpDQogICAgICAgIHsg
fQ0KDQogICAgICAgIHN0cnVjdCB7DQogICAgICAgICAgICBpbnRwdHJfdCB2YWx1ZTE7DQogICAg
ICAgICAgICBpbnRwdHJfdCB2YWx1ZTI7DQogICAgICAgIH07DQogICAgICAgIGxvbmcgbG9uZyBj
b25zdGFudDsNCiAgICB9IG1fdmFsdWVzOw0KDQogICAgdW5zaWduZWQgYXR0cmlidXRlcygpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQ0KDQogICAgSW50cmluc2ljIGludHJpbnNpYygp
IGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gbV9pbnRyaW5zaWM7IH0NCiAgICBCdWlsdGluR2Vu
ZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUxKTsgfQ0KICAgIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiBOYXRpdmVG
dW5jdGlvbihtX3ZhbHVlcy52YWx1ZTEpOyB9DQogICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxl
bmd0aCgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmIChtX2F0
dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklURnVuY3Rpb24pDQogICAgICAgICAg
ICByZXR1cm4gc2lnbmF0dXJlKCktPmFyZ3VtZW50Q291bnQ7DQogICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3ZhbHVlcy52YWx1ZTIpOw0KICAgIH0NCg0KICAgIEdl
dEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PEdldEZ1bmN0aW9uPihtX3ZhbHVlcy52YWx1ZTEpOyB9DQogICAgUHV0RnVu
Y3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8UHV0RnVuY3Rpb24+KG1fdmFsdWVzLnZhbHVlMik7IH0NCg0KICAgIGNvbnN0IERP
TUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqPihtX3ZhbHVlcy52YWx1
ZTEpOyB9DQogICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSgpIGNvbnN0IHsg
KCh2b2lkKTApOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSo+KG1fdmFsdWVzLnZhbHVlMik7IH0NCg0KICAgIE5hdGl2ZUZ1bmN0aW9uIGFjY2Vzc29yR2V0
dGVyKCkgY29uc3QgeyAoKHZvaWQpMCk7IHJldHVybiBOYXRpdmVGdW5jdGlvbihtX3ZhbHVlcy52
YWx1ZTEpOyB9DQogICAgTmF0aXZlRnVuY3Rpb24gYWNjZXNzb3JTZXR0ZXIoKSBjb25zdCB7ICgo
dm9pZCkwKTsgcmV0dXJuIE5hdGl2ZUZ1bmN0aW9uKG1fdmFsdWVzLnZhbHVlMik7IH0NCiAgICBC
dWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5BY2Nlc3NvckdldHRlckdlbmVyYXRvcigpIGNvbnN0Ow0K
ICAgIEJ1aWx0aW5HZW5lcmF0b3IgYnVpbHRpbkFjY2Vzc29yU2V0dGVyR2VuZXJhdG9yKCkgY29u
c3Q7DQoNCiAgICBsb25nIGxvbmcgY29uc3RhbnRJbnRlZ2VyKCkgY29uc3QgeyAoKHZvaWQpMCk7
IHJldHVybiBtX3ZhbHVlcy5jb25zdGFudDsgfQ0KDQogICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgp
IGNvbnN0IHsgKCh2b2lkKTApOyByZXR1cm4gbV92YWx1ZXMudmFsdWUxOyB9DQogICAgDQogICAg
cHRyZGlmZl90IGxhenlDZWxsUHJvcGVydHlPZmZzZXQoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0
dXJuIG1fdmFsdWVzLnZhbHVlMTsgfQ0KICAgIHB0cmRpZmZfdCBsYXp5Q2xhc3NTdHJ1Y3R1cmVP
ZmZzZXQoKSBjb25zdCB7ICgodm9pZCkwKTsgcmV0dXJuIG1fdmFsdWVzLnZhbHVlMTsgfQ0KICAg
IExhenlQcm9wZXJ0eUNhbGxiYWNrIGxhenlQcm9wZXJ0eUNhbGxiYWNrKCkgY29uc3QgeyAoKHZv
aWQpMCk7IHJldHVybiByZWludGVycHJldF9jYXN0PExhenlQcm9wZXJ0eUNhbGxiYWNrPihtX3Zh
bHVlcy52YWx1ZTEpOyB9DQp9Ow0KDQpzdHJ1Y3QgSGFzaFRhYmxlIHsNCiAgICBpbnQgbnVtYmVy
T2ZWYWx1ZXM7DQogICAgaW50IGluZGV4TWFzazsNCiAgICBib29sIGhhc1NldHRlck9yUmVhZG9u
bHlQcm9wZXJ0aWVzOw0KICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NGb3JUaGlzOyANCg0KICAg
IGNvbnN0IEhhc2hUYWJsZVZhbHVlKiB2YWx1ZXM7IA0KICAgIGNvbnN0IENvbXBhY3RIYXNoSW5k
ZXgqIGluZGV4Ow0KDQogICAgDQogICAgX19mb3JjZWlubGluZSBjb25zdCBIYXNoVGFibGVWYWx1
ZSogZW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QNCiAgICB7DQogICAgICAg
IGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRy
Ow0KDQogICAgICAgIGF1dG8gdWlkID0gcHJvcGVydHlOYW1lLnVpZCgpOw0KICAgICAgICBpZiAo
IXVpZCkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KDQogICAgICAgIGludCBpbmRleEVu
dHJ5ID0gSWRlbnRpZmllclJlcEhhc2g6Omhhc2godWlkKSAmIGluZGV4TWFzazsNCiAgICAgICAg
aW50IHZhbHVlSW5kZXggPSBpbmRleFtpbmRleEVudHJ5XS52YWx1ZTsNCiAgICAgICAgaWYgKHZh
bHVlSW5kZXggPT0gLTEpDQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCg0KICAgICAgICB3
aGlsZSAodHJ1ZSkgew0KICAgICAgICAgICAgaWYgKFdURjo6ZXF1YWwodWlkLCB2YWx1ZXNbdmFs
dWVJbmRleF0ubV9rZXkpKQ0KICAgICAgICAgICAgICAgIHJldHVybiAmdmFsdWVzW3ZhbHVlSW5k
ZXhdOw0KDQogICAgICAgICAgICBpbmRleEVudHJ5ID0gaW5kZXhbaW5kZXhFbnRyeV0ubmV4dDsN
CiAgICAgICAgICAgIGlmIChpbmRleEVudHJ5ID09IC0xKQ0KICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOw0KICAgICAgICAgICAgdmFsdWVJbmRleCA9IGluZGV4W2luZGV4RW50cnldLnZh
bHVlOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICB9Ow0KICAgIH0NCg0KICAgIGNs
YXNzIENvbnN0SXRlcmF0b3Igew0KICAgIHB1YmxpYzoNCiAgICAgICAgQ29uc3RJdGVyYXRvcihj
b25zdCBIYXNoVGFibGUqIHRhYmxlLCBpbnQgcG9zaXRpb24pDQogICAgICAgICAgICA6IG1fdGFi
bGUodGFibGUpDQogICAgICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pDQogICAgICAgIHsN
CiAgICAgICAgICAgIHNraXBJbnZhbGlkS2V5cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgY29u
c3QgSGFzaFRhYmxlVmFsdWUqIHZhbHVlKCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAg
cmV0dXJuICZtX3RhYmxlLT52YWx1ZXNbbV9wb3NpdGlvbl07DQogICAgICAgIH0NCg0KICAgICAg
ICBjb25zdCBIYXNoVGFibGVWYWx1ZSYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnZhbHVl
KCk7IH0NCg0KICAgICAgICBjb25zdCBjaGFyKiBrZXkoKSBjb25zdA0KICAgICAgICB7DQogICAg
ICAgICAgICByZXR1cm4gbV90YWJsZS0+dmFsdWVzW21fcG9zaXRpb25dLm1fa2V5Ow0KICAgICAg
ICB9DQoNCiAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIG9wZXJhdG9yLT4oKSBjb25zdA0K
ICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gdmFsdWUoKTsNCiAgICAgICAgfQ0KDQogICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QNCiAg
ICAgICAgew0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAgcmV0dXJuIG1fcG9z
aXRpb24gIT0gb3RoZXIubV9wb3NpdGlvbjsNCiAgICAgICAgfQ0KDQogICAgICAgIENvbnN0SXRl
cmF0b3ImIG9wZXJhdG9yKysoKQ0KICAgICAgICB7DQogICAgICAgICAgICAoKHZvaWQpMCk7DQog
ICAgICAgICAgICArK21fcG9zaXRpb247DQogICAgICAgICAgICBza2lwSW52YWxpZEtleXMoKTsN
CiAgICAgICAgICAgIHJldHVybiAqdGhpczsNCiAgICAgICAgfQ0KDQogICAgcHJpdmF0ZToNCiAg
ICAgICAgdm9pZCBza2lwSW52YWxpZEtleXMoKQ0KICAgICAgICB7DQogICAgICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgICAgICB3aGlsZSAobV9wb3NpdGlvbiA8IG1fdGFibGUtPm51bWJlck9m
VmFsdWVzICYmICFtX3RhYmxlLT52YWx1ZXNbbV9wb3NpdGlvbl0ubV9rZXkpDQogICAgICAgICAg
ICAgICAgKyttX3Bvc2l0aW9uOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICB9DQoN
CiAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBtX3RhYmxlOw0KICAgICAgICBpbnQgbV9wb3NpdGlv
bjsNCiAgICB9Ow0KDQogICAgQ29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gQ29uc3RJdGVyYXRvcih0aGlzLCAwKTsNCiAgICB9DQogICAgQ29uc3RJdGVy
YXRvciBlbmQoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIENvbnN0SXRlcmF0b3IodGhp
cywgbnVtYmVyT2ZWYWx1ZXMpOw0KICAgIH0NCn07DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBi
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KFZNJiwgY29uc3QgQ2xhc3NJbmZvKiwgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIHJlaWZ5U3RhdGljQWNjZXNz
b3IoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSYsIEpTT2JqZWN0JiB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUpOw0KDQppbmxpbmUgQnVpbHRpbkdlbmVyYXRvciBIYXNoVGFibGVWYWx1ZTo6YnVp
bHRpbkFjY2Vzc29yR2V0dGVyR2VuZXJhdG9yKCkgY29uc3QNCnsNCiAgICAoKHZvaWQpMCk7DQog
ICAgKCh2b2lkKTApOw0KICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJ1aWx0aW5HZW5lcmF0
b3I+KG1fdmFsdWVzLnZhbHVlMSk7DQp9DQoNCmlubGluZSBCdWlsdGluR2VuZXJhdG9yIEhhc2hU
YWJsZVZhbHVlOjpidWlsdGluQWNjZXNzb3JTZXR0ZXJHZW5lcmF0b3IoKSBjb25zdA0Kew0KICAg
ICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
QnVpbHRpbkdlbmVyYXRvcj4obV92YWx1ZXMudmFsdWUyKTsNCn0NCg0KaW5saW5lIGJvb2wgZ2V0
U3RhdGljUHJvcGVydHlTbG90RnJvbVRhYmxlKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8sIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7DQogICAgaWYgKHRo
aXNPYmplY3QtPnN0YXRpY1Byb3BlcnRpZXNSZWlmaWVkKHZtKSkNCiAgICAgICAgcmV0dXJuIGZh
bHNlOw0KDQogICAgYXV0byogZW50cnkgPSB0YWJsZS5lbnRyeShwcm9wZXJ0eU5hbWUpOw0KICAg
IGlmICghZW50cnkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW5PckZ1bmN0aW9uT3JBY2Nlc3Nv
ck9yTGF6eVByb3BlcnR5KQ0KICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
dm0sIGNsYXNzSW5mbywgZW50cnksIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7DQoN
CiAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpDb25zdGFu
dEludGVnZXIpIHsNCiAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKGVudHJ5LT5hdHRyaWJ1dGVzKCkpLCBqc051bWJlcihlbnRyeS0+Y29uc3Rh
bnRJbnRlZ2VyKCkpKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgaWYgKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSB7
DQogICAgICAgIGNvbnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSBlbnRyeS0+ZG9t
SklUKCk7DQogICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGRvbUpJVC0+Z2V0dGVyKCks
IERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBjbGFzc0luZm8sIGRvbUpJVCB9KTsNCiAgICAgICAg
cmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSB7DQogICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxl
Q3VzdG9tKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0
ZXMoKSksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsg
Y2xhc3NJbmZvLCBudWxscHRyIH0pOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAg
ICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKGVudHJ5LT5hdHRyaWJ1dGVzKCkpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7DQogICAg
cmV0dXJuIHRydWU7DQp9DQoNCmlubGluZSBib29sIHJlcGxhY2VTdGF0aWNQcm9wZXJ0eVNsb3Qo
Vk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSkNCnsNCiAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSkpDQogICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgIGlmICghdGhp
c09iamVjdC0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKQ0KICAgICAgICB0aGlzT2JqZWN0
LT5KU09iamVjdDo6c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRy
YW5zaXRpb24odm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSksIHByb3BlcnR5TmFtZSwgMCkp
Ow0KDQogICAgcmV0dXJuIHRydWU7DQp9DQoNCg0KDQoNCmlubGluZSBib29sIHB1dEVudHJ5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5mbyosIGNvbnN0IEhhc2hU
YWJsZVZhbHVlKiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIEpTT2JqZWN0KiB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgIGF1dG8gc2Nv
cGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMo
KSAmIFByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluT3JGdW5jdGlvbk9yTGF6eVByb3BlcnR5KSB7
DQogICAgICAgIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYg
KEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB0aGlz
VmFsdWUpKQ0KICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAg
ICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RN
b2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsNCiAgICB9DQoNCiAgICBpZiAoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikNCiAgICAgICAg
cmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgp
LCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7DQoNCiAgICBpZiAoIShlbnRyeS0+YXR0cmli
dXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSkgew0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIGJvb2wgaXNBY2Nlc3NvciA9IGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3I7DQogICAgICAgIEpTVmFsdWUgdXBkYXRlVGhp
c1ZhbHVlID0gZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciA/IHNsb3QudGhpc1ZhbHVlKCkgOiBKU1ZhbHVlKGJhc2UpOw0KICAgICAgICANCiAg
ICAgICAgaWYgKGlzQWNjZXNzb3IpDQogICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vzc29y
KGJhc2UsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAg
ICAgc2xvdC5zZXRDdXN0b21WYWx1ZShiYXNlLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7DQoN
CiAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsQ3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgZW50
cnktPnByb3BlcnR5UHV0dGVyKCksIGlzQWNjZXNzb3IsIHVwZGF0ZVRoaXNWYWx1ZSwgdmFsdWUp
Ow0KICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsg
fSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgIH0NCg0KICAgIHJl
dHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwg
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOw0KfQ0KDQoNCg0KDQoNCg0KaW5saW5lIGJvb2wg
bG9va3VwUHV0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTT2JqZWN0KiBiYXNlLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUm
IHRhYmxlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHB1dFJlc3VsdCkNCnsNCiAgICBj
b25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSB0YWJsZS5lbnRyeShwcm9wZXJ0eU5hbWUpOw0K
DQogICAgaWYgKCFlbnRyeSkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgcHV0UmVzdWx0
ID0gcHV0RW50cnkoZ2xvYmFsT2JqZWN0LCB0YWJsZS5jbGFzc0ZvclRoaXMsIGVudHJ5LCBiYXNl
LCBiYXNlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsNCiAgICByZXR1cm4gdHJ1ZTsNCn0N
Cg0KaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0eShWTSYgdm0sIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvLCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgY29uc3QgSGFz
aFRhYmxlVmFsdWUmIHZhbHVlLCBKU09iamVjdCYgdGhpc09iaikNCnsNCiAgICBpZiAodmFsdWUu
YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkJ1aWx0aW4pIHsNCiAgICAgICAgaWYg
KHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikNCiAgICAg
ICAgICAgIHJlaWZ5U3RhdGljQWNjZXNzb3Iodm0sIHZhbHVlLCB0aGlzT2JqLCBwcm9wZXJ0eU5h
bWUpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICB0aGlzT2JqLnB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbih2bSwgdGhpc09iai5nbG9iYWxPYmplY3Qodm0pLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0
cmlidXRlcygpKSk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBpZiAodmFsdWUuYXR0
cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSB7DQogICAgICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklURnVuY3Rpb24pIHsN
CiAgICAgICAgICAgIHRoaXNPYmoucHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oDQogICAgICAgICAg
ICAgICAgdm0sIHRoaXNPYmouZ2xvYmFsT2JqZWN0KHZtKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5m
dW5jdGlvbkxlbmd0aCgpLA0KICAgICAgICAgICAgICAgIHZhbHVlLmZ1bmN0aW9uKCksIHZhbHVl
LmludHJpbnNpYygpLCB2YWx1ZS5zaWduYXR1cmUoKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2
YWx1ZS5hdHRyaWJ1dGVzKCkpKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAg
ICAgICB0aGlzT2JqLnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKA0KICAgICAgICAgICAgdm0sIHRo
aXNPYmouZ2xvYmFsT2JqZWN0KHZtKSwgcHJvcGVydHlOYW1lLCB2YWx1ZS5mdW5jdGlvbkxlbmd0
aCgpLA0KICAgICAgICAgICAgdmFsdWUuZnVuY3Rpb24oKSwgdmFsdWUuaW50cmluc2ljKCksIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7DQogICAgICAgIHJldHVy
bjsNCiAgICB9DQoNCiAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkNvbnN0YW50SW50ZWdlcikgew0KICAgICAgICB0aGlzT2JqLnB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCBqc051bWJlcih2YWx1ZS5jb25zdGFudEludGVnZXIoKSksIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7DQogICAgICAgIHJldHVybjsNCiAgICB9
DQoNCiAgICBpZiAodmFsdWUuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yKSB7DQogICAgICAgIHJlaWZ5U3RhdGljQWNjZXNzb3Iodm0sIHZhbHVlLCB0aGlzT2JqLCBw
cm9wZXJ0eU5hbWUpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIA0KICAgIGlmICh2YWx1
ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q2VsbFByb3BlcnR5KSB7DQogICAg
ICAgIExhenlDZWxsUHJvcGVydHkqIHByb3BlcnR5ID0gYml0d2lzZV9jYXN0PExhenlDZWxsUHJv
cGVydHkqPigNCiAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oJnRoaXNPYmopICsgdmFs
dWUubGF6eUNlbGxQcm9wZXJ0eU9mZnNldCgpKTsNCiAgICAgICAgSlNDZWxsKiByZXN1bHQgPSBw
cm9wZXJ0eS0+Z2V0KCZ0aGlzT2JqKTsNCiAgICAgICAgdGhpc09iai5wdXREaXJlY3Qodm0sIHBy
b3BlcnR5TmFtZSwgcmVzdWx0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0
ZXMoKSkpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIA0KICAgIGlmICh2YWx1ZS5hdHRy
aWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q2xhc3NTdHJ1Y3R1cmUpIHsNCiAgICAgICAg
TGF6eUNsYXNzU3RydWN0dXJlKiBsYXp5U3RydWN0dXJlID0gYml0d2lzZV9jYXN0PExhenlDbGFz
c1N0cnVjdHVyZSo+KA0KICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPigmdGhpc09iaikg
KyB2YWx1ZS5sYXp5Q2xhc3NTdHJ1Y3R1cmVPZmZzZXQoKSk7DQogICAgICAgIEpTT2JqZWN0KiBj
b25zdHJ1Y3RvciA9IGxhenlTdHJ1Y3R1cmUtPmNvbnN0cnVjdG9yKGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KCZ0aGlzT2JqKSk7DQogICAgICAgIHRoaXNPYmoucHV0RGlyZWN0KHZtLCBwcm9wZXJ0
eU5hbWUsIGNvbnN0cnVjdG9yLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0
ZXMoKSkpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIA0KICAgIGlmICh2YWx1ZS5hdHRy
aWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UHJvcGVydHlDYWxsYmFjaykgew0KICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHZhbHVlLmxhenlQcm9wZXJ0eUNhbGxiYWNrKCkodm0sICZ0aGlz
T2JqKTsNCiAgICAgICAgdGhpc09iai5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgcmVzdWx0
LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOw0KICAgICAgICBy
ZXR1cm47DQogICAgfQ0KDQogICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0
cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBj
b25zdCBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUID0gdmFsdWUuZG9tSklUKCk7DQogICAg
ICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IERPTUF0dHJpYnV0ZUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRlcigpLCB2YWx1ZS5wcm9wZXJ0eVB1dHRlcigpLCBET01B
dHRyaWJ1dGVBbm5vdGF0aW9uIHsgY2xhc3NJbmZvLCBkb21KSVQgfSk7DQogICAgICAgIHRoaXNP
YmoucHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVy
U2V0dGVyLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHZhbHVlLmF0dHJpYnV0ZXMoKSkpOw0KICAg
ICAgICByZXR1cm47DQogICAgfQ0KDQogICAgaWYgKHZhbHVlLmF0dHJpYnV0ZXMoKSAmIFByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICBhdXRvKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgdmFsdWUucHJvcGVydHlHZXR0ZXIoKSwgdmFsdWUucHJvcGVydHlQdXR0ZXIoKSwg
RE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IGNsYXNzSW5mbywgbnVsbHB0ciB9KTsNCiAgICAgICAg
dGhpc09iai5wdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgcHJvcGVydHlOYW1lLCBjdXN0b21H
ZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUodmFsdWUuYXR0cmlidXRlcygpKSk7
DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3Rv
bUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCB2YWx1ZS5wcm9w
ZXJ0eUdldHRlcigpLCB2YWx1ZS5wcm9wZXJ0eVB1dHRlcigpKTsNCiAgICB0aGlzT2JqLnB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZSh2YWx1ZS5hdHRyaWJ1dGVzKCkpKTsNCn0NCg0KdGVtcGxh
dGU8dW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXM+DQppbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3Bl
cnRpZXMoVk0mIHZtLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgY29uc3QgSGFzaFRhYmxl
VmFsdWUgKCZ2YWx1ZXMpW251bWJlck9mVmFsdWVzXSwgSlNPYmplY3QmIHRoaXNPYmopDQp7DQog
ICAgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIgdHJhbnNpdGlvbk9wdGltaXplcih2bSwgJnRo
aXNPYmopOw0KICAgIGZvciAoYXV0byYgdmFsdWUgOiB2YWx1ZXMpIHsNCiAgICAgICAgaWYgKCF2
YWx1ZS5tX2tleSkNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICBhdXRvIGtleSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih2
YWx1ZS5tX2tleSksIHN0cmxlbih2YWx1ZS5tX2tleSkpOw0KICAgICAgICByZWlmeVN0YXRpY1By
b3BlcnR5KHZtLCBjbGFzc0luZm8sIGtleSwgdmFsdWUsIHRoaXNPYmopOw0KICAgIH0NCn0NCg0K
dGVtcGxhdGU8UmF3TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+IEVu
Y29kZWRKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkNCnsNCiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZShnbG9i
YWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpLCBuYXRpdmVGdW5jdGlvbikpOw0KfQ0KDQp9IA0KI2xpbmUgMzMgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmplY3RJ
bmxpbmVzLmgiDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KQ29tcGxldGVTdWJzcGFjZSogSlNGaW5hbE9iamVjdDo6
c3Vic3BhY2VGb3IoVk0mIHZtKQ0Kew0KICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVk
c0Rlc3RydWN0aW9uKTsNCiAgICByZXR1cm4gJnZtLmNlbGxTcGFjZTsNCn0NCg0KDQp0ZW1wbGF0
ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IA0Kdm9pZCBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFycmF5TGlrZVZhbHVlLCBSdW50
aW1lVHlwZU1hc2sgbGVnYWxUeXBlc0ZpbHRlciwgY29uc3QgU3RyaW5nJiBub3RBbk9iamVjdEVy
cm9NZXNzYWdlLCBjb25zdCBTdHJpbmcmIGlsbGVnYWxUeXBlRXJyb3JNZXNzYWdlLCBBZGRGdW5j
dGlvbiBhZGRGdW5jdGlvbikNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0K
ICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoNCiAgICBpZiAoIWFycmF5
TGlrZVZhbHVlLmlzT2JqZWN0KCkpIHsNCiAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgbm90QW5PYmplY3RFcnJvTWVzc2FnZSk7DQogICAgICAgIHJldHVybjsNCiAg
ICB9DQogICAgDQogICAgVmVjdG9yPEpTVmFsdWU+IHJlc3VsdDsNCiAgICBKU1ZhbHVlIGxlbmd0
aFByb3BlcnR5ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVy
biB2b2lkKCk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICBkb3VibGUgbGVuZ3RoQXNEb3VibGUgPSBs
ZW5ndGhQcm9wZXJ0eS50b0xlbmd0aChnbG9iYWxPYmplY3QpOw0KICAgIGRvIHsgaWYgKCgoc2Nv
cGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIHZvaWQoKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIGRv
IHsgaWYgKCghKGxlbmd0aEFzRG91YmxlID49IDAuMCAmJiBsZW5ndGhBc0RvdWJsZSA9PSBzdGQ6
OnRydW5jKGxlbmd0aEFzRG91YmxlKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5
cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNjIsICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpT
T2JqZWN0SW5saW5lcy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxNTggKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsNCiAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4obGVuZ3RoQXNEb3VibGUpOw0KICAgIGZvciAodWludDY0X3QgaW5kZXggPSAwOyBpbmRleCA8
IGxlbmd0aDsgaW5kZXgrKykgew0KICAgICAgICBKU1ZhbHVlIG5leHQgPSBhcnJheUxpa2VWYWx1
ZS5nZXQoZ2xvYmFsT2JqZWN0LCBpbmRleCk7DQogICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4
Y2VwdGlvbigpKSkgcmV0dXJuIHZvaWQoKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICANCiAg
ICAgICAgUnVudGltZVR5cGUgdHlwZSA9IHJ1bnRpbWVUeXBlRm9yVmFsdWUodm0sIG5leHQpOw0K
ICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsNCiAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGlsbGVnYWxUeXBlRXJyb3JNZXNzYWdl
KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgYm9v
bCBleGl0RWFybHkgPSBhZGRGdW5jdGlvbihuZXh0LCB0eXBlKTsNCiAgICAgICAgaWYgKGV4aXRF
YXJseSkNCiAgICAgICAgICAgIHJldHVybjsNCiAgICB9DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9v
bCBKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYgdm0p
DQp7DQogICAgDQogICAgSlNWYWx1ZSBwcm90b3R5cGU7DQogICAgSlNPYmplY3QqIG9iaiA9IHRo
aXM7DQogICAgd2hpbGUgKHRydWUpIHsNCiAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBv
YmotPnN0cnVjdHVyZSh2bSk7DQogICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1JlYWRPbmx5T3JH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSB8fCBzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzR2V0UHJvdG90eXBlKCkpDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7
DQoNCiAgICAgICAgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOw0KICAg
ICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQoN
CiAgICAgICAgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKTsNCiAgICB9DQoNCiAgICAoKHZvaWQp
MCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJ
bmxpbmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQ0Kew0KICAgIGlmICgocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykpDQogICAgICAg
IHJldHVybiBmYWxzZTsNCiAgICByZXR1cm4gY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmVFeGNsdWRp
bmdQcm90byh2bSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hlbk5vRXhjZXB0
aW9uPg0KX19mb3JjZWlubGluZSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5O
b0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgSlNPYmplY3Q6OmdldFByb3Bl
cnR5U2xvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbiBjYWxsYmFjaykgY29uc3QNCnsNCiAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0KTsNCiAgICByZXR1cm4gZ2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90LCBjYWxsYmFjayk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hl
bk5vRXhjZXB0aW9uPg0KX19mb3JjZWlubGluZSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxs
YmFja1doZW5Ob0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QmKT46OnR5cGUgSlNPYmplY3Q6
OmdldFByb3BlcnR5U2xvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIENhbGxiYWNrV2hlbk5vRXhjZXB0
aW9uIGNhbGxiYWNrKSBjb25zdA0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICBib29sIGZvdW5k
ID0gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOw0KICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlv
bigpKSkgcmV0dXJuIHsgfTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIGRvIHsgc2NvcGUucmVsZWFz
ZSgpOyByZXR1cm4gY2FsbGJhY2soZm91bmQsIHNsb3QpOyB9IHdoaWxlIChmYWxzZSk7DQp9DQoN
Cl9fZm9yY2VpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQ0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgYXV0byBzY29w
ZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICBhdXRvJiBzdHJ1Y3R1cmVJRFRhYmxlID0g
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCk7DQogICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7
DQogICAgd2hpbGUgKHRydWUpIHsNCiAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmVJRFRhYmxlLmdldChvYmplY3QtPnN0cnVjdHVyZUlEKCkpOw0KICAgICAgICBib29sIGhh
c1Nsb3QgPSBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOw0K
ICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3
aGlsZSAoZmFsc2UpOw0KICAgICAgICBpZiAoaGFzU2xvdCkNCiAgICAgICAgICAgIHJldHVybiB0
cnVlOw0KICAgICAgICBpZiAoKHNsb3QuaXNWTUlucXVpcnkoKSAmJiBzbG90LmlzVGFpbnRlZEJ5
T3BhcXVlT2JqZWN0KCkpKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBpZiAo
b2JqZWN0LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHNsb3QuaW50ZXJuYWxNZXRob2RU
eXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KQ0K
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsNCiAg
ICAgICAgaWYgKCghc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3RvdHlwZSgp
IHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSkpDQogICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdCh2bSk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgcHJvdG90
eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7DQogICAgICAgICAg
ICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAo
ZmFsc2UpOw0KICAgICAgICB9DQogICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpDQog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3Rv
dHlwZSk7DQogICAgfQ0KfQ0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByb3Bl
cnR5U2xvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkNCnsNCiAgICBpZiAoKHByb3BlcnR5TmFtZSA8PSAweEZG
RkZGRkZFVSkpDQogICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvcGVydHlOYW1lKSwgc2xvdCk7DQogICAgcmV0dXJuIGdl
dFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20oZ2xvYmFsT2JqZWN0
LT52bSgpLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIEpT
T2JqZWN0OjpnZXROb25JbmRleFByb3BlcnR5U2xvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7DQog
ICAgDQogICAgKCh2b2lkKTApOw0KDQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsN
CiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIGF1dG8mIHN0cnVj
dHVyZUlEVGFibGUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKTsNCiAgICBKU09iamVjdCog
b2JqZWN0ID0gdGhpczsNCiAgICB3aGlsZSAodHJ1ZSkgew0KICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHN0cnVjdHVyZUlEVGFibGUuZ2V0KG9iamVjdC0+c3RydWN0dXJlSUQoKSk7DQog
ICAgICAgIGlmICgoIVR5cGVJbmZvOjpvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0
LT5pbmxpbmVUeXBlRmxhZ3MoKSkpKSB7DQogICAgICAgICAgICBpZiAob2JqZWN0LT5nZXRPd25O
b25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQ0K
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAg
ICAgYm9vbCBoYXNTbG90ID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0
T3duUHJvcGVydHlTbG90KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
Ow0KICAgICAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gZmFs
c2U7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIGlmIChoYXNTbG90KQ0KICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgaWYgKChzbG90LmlzVk1JbnF1aXJ5KCkg
JiYgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKSkNCiAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgICAgICAgICBpZiAob2JqZWN0LT50eXBlKCkgPT0gUHJveHlPYmplY3RU
eXBlICYmIHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KQ0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICAgICAgfQ0KICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsNCiAgICAgICAgaWYgKCghc3Ry
dWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3RvdHlwZSgpIHx8IHNsb3QuaW50ZXJu
YWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSkpDQogICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCh2bSk7DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5n
ZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7DQogICAgICAgICAgICBkbyB7IGlmICgoKHNj
b3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAg
ICB9DQogICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpDQogICAgICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7DQogICAgfQ0K
fQ0KDQppbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90SW5saW5lKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAg
IGlmICgoVHlwZUluZm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChpbmxpbmVUeXBlRmxh
Z3MoKSkpKQ0KICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOw0KICAgIHJldHVybiBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTsNCn0NCg0KaW5saW5lIGJvb2wgSlNPYmplY3Q6Om1heUludGVyY2VwdEluZGV4
ZWRBY2Nlc3NlcyhWTSYgdm0pDQp7DQogICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPm1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3NlcygpOw0KfQ0KDQppbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQ0Kew0KICAgICgodm9pZCkwKTsNCiAg
ICAoKHZvaWQpMCk7DQogICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1
cmVJRCgpOw0KICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsNCiAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwcmVw
YXJlVG9QdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzdHJ1Y3R1cmVJRCwgc3RydWN0dXJlKTsNCiAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwg
dmFsdWUpOw0KICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KQ0KICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7DQp9
DQoNCl9fZm9yY2VpbmxpbmUgUHJvcGVydHlPZmZzZXQgSlNPYmplY3Q6OnByZXBhcmVUb1B1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQ0Kew0KICAgIHVuc2lnbmVkIG9sZE91dE9mTGluZUNhcGFjaXR5ID0gc3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOw0KICAgIFByb3BlcnR5T2Zmc2V0IHJlc3VsdDsNCiAg
ICBzdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oDQogICAgICAgIHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsDQogICAgICAgIFsmXSAoY29uc3QgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCBuZXdN
YXhPZmZzZXQpIHsNCiAgICAgICAgICAgIHVuc2lnbmVkIG5ld091dE9mTGluZUNhcGFjaXR5ID0g
U3RydWN0dXJlOjpvdXRPZkxpbmVDYXBhY2l0eShuZXdNYXhPZmZzZXQpOw0KICAgICAgICAgICAg
aWYgKG5ld091dE9mTGluZUNhcGFjaXR5ICE9IG9sZE91dE9mTGluZUNhcGFjaXR5KSB7DQogICAg
ICAgICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBhbGxvY2F0ZU1vcmVPdXRPZkxpbmVT
dG9yYWdlKHZtLCBvbGRPdXRPZkxpbmVDYXBhY2l0eSwgbmV3T3V0T2ZMaW5lQ2FwYWNpdHkpOw0K
ICAgICAgICAgICAgICAgIG51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIHN0cnVjdHVy
ZUlELCBidXR0ZXJmbHkpOw0KICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+c2V0TWF4T2Zmc2V0
KHZtLCBuZXdNYXhPZmZzZXQpOw0KICAgICAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7DQogICAgICAgICAgICAgICAgc2V0U3RydWN0dXJlSUREaXJlY3RseShzdHJ1Y3R1cmVJRCk7
DQogICAgICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldE1heE9m
ZnNldCh2bSwgbmV3TWF4T2Zmc2V0KTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAg
ICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgIHJlc3VsdCA9IG9mZnNldDsNCiAgICAg
ICAgfSk7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KDQpfX2ZvcmNlaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dElubGluZUZvckpTT2JqZWN0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQ0Kew0KICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7DQogICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCg0KICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7DQogICAgKCh2b2lkKTAp
Ow0KICAgICgodm9pZCkwKTsNCg0KICAgIGlmICgoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRo
aXNPYmplY3QpKSkNCiAgICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBvcmRpbmFy
eVNldFNsb3coZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsgfSB3aGlsZSAoZmFsc2UpOw0K
DQogICAgDQogICAgDQogICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkNCiAgICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBw
dXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IHNsb3QuaXNTdHJpY3RNb2RlKCkpOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICBpZiAodGhpc09i
amVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUodm0sIHByb3BlcnR5TmFtZSkpIHsNCiAgICAg
ICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkNCiAgICAgICAg
ICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsN
CiAgICB9DQoNCiAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIHRoaXNPYmplY3QtPnB1
dElubGluZVNsb3coZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsgfSB3
aGlsZSAoZmFsc2UpOw0KfQ0KDQoNCg0KX19mb3JjZWlubGluZSBib29sIEpTT2JqZWN0OjpoYXNP
d25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0DQp7DQogICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKChjb25zdF9jYXN0PEpT
T2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90ID09IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpKQ0KICAgICAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsNCiAgICByZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+
KHRoaXMpLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpT
T2JqZWN0Kj4odGhpcyksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsNCn0NCg0K
X19mb3JjZWlubGluZSBib29sIEpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdA0Kew0KICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXRPd25Qcm9wZXJ0eSk7DQogICAgcmV0dXJuIGhhc093blByb3BlcnR5KGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsNCn0NCg0KX19mb3JjZWlubGluZSBib29sIEpTT2JqZWN0
OjpoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUpIGNvbnN0DQp7DQogICAgUHJvcGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsNCiAgICByZXR1cm4g
Y29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmpl
Y3QpKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhp
cyksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsNCn0NCg0KdGVtcGxhdGU8SlNP
YmplY3Q6OlB1dE1vZGUgbW9kZT4NCl9fZm9yY2VpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7DQogICAg
KCh2b2lkKTApOw0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTAp
Ow0KICAgICgodm9pZCkwKTsNCg0KICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gdGhpcy0+
c3RydWN0dXJlSUQoKTsNCiAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCk7DQogICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICANCiAgICAgICAgdW5zaWdu
ZWQgY3VycmVudEF0dHJpYnV0ZXM7DQogICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsNCiAgICAg
ICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7DQogICAgICAgICAgICBpZiAoKG1vZGUg
PT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgICAgICBw
dXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOw0KICAgICAgICAgICAgc3RydWN0dXJlLT5kaWRS
ZXBsYWNlUHJvcGVydHkob2Zmc2V0KTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAg
ICAgICAgICAgIGlmIChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSAmJiAoYXR0cmli
dXRlcyAhPSBjdXJyZW50QXR0cmlidXRlcyB8fCAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmli
dXRlOjpBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVlKSkpDQogICAgICAgICAgICAgICAg
c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7DQogICAgICAgICAgICBlbHNl
DQogICAgICAgICAgICAgICAgc2xvdC5zZXRFeGlzdGluZ1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7
DQoNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCht
b2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQ0KICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgIG9mZnNldCA9IHByZXBhcmVUb1B1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHN0cnVjdHVy
ZUlELCBzdHJ1Y3R1cmUpOw0KICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOw0KICAgICAg
ICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOw0KICAgICAgICBzbG90LnNldE5ld1Byb3Bl
cnR5KHRoaXMsIG9mZnNldCk7DQogICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KQ0KICAgICAgICAgICAgdGhpcy0+c3RydWN0dXJlKHZtKS0+c2V0Q29u
dGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0K
DQogICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0Ow0KICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkg
PSB0aGlzLT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpOw0KICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlKA0KICAgICAgICBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgb2Zmc2V0KTsNCiAgICBpZiAobmV3U3RydWN0dXJlKSB7DQogICAgICAgIEJ1dHRlcmZseSog
bmV3QnV0dGVyZmx5ID0gYnV0dGVyZmx5KCk7DQogICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkg
IT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7DQogICAgICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBhbGxvY2F0ZU1vcmVPdXRPZkxpbmVT
dG9yYWdlKHZtLCBjdXJyZW50Q2FwYWNpdHksIG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSk7DQogICAgICAgICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBzdHJ1
Y3R1cmVJRCwgbmV3QnV0dGVyZmx5KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhbGlkYXRlT2Zm
c2V0KG9mZnNldCk7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICANCiAgICAgICAgDQog
ICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsN
CiAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOw0KICAgICAgICBzbG90LnNl
dE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0N
Cg0KICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOw0KICAgIG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsNCiAgICBpZiAob2Zm
c2V0ICE9IGludmFsaWRPZmZzZXQpIHsNCiAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQp
ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQ0KICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgIHN0cnVjdHVyZS0+ZGlkUmVwbGFjZVBy
b3BlcnR5KG9mZnNldCk7DQogICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7DQoN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpZiAobW9kZSA9PSBQdXRNb2RlRGVmaW5lT3du
UHJvcGVydHkgJiYgKGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0
ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkp
KQ0KICAgICAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5n
ZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7DQog
ICAgICAgIGVsc2UNCiAgICAgICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBv
ZmZzZXQpOw0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIGlmICgobW9kZSA9
PSBQdXRNb2RlUHV0KSAmJiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkNCiAgICAgICAgcmV0
dXJuIGZhbHNlOw0KDQogICAgDQogICAgDQogICAgDQogICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwgc3RydWN0dXJl
KTsNCiAgICANCiAgICBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5VHJh
bnNpdGlvbigNCiAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBvZmZzZXQsIHNsb3QuY29udGV4dCgpLCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7DQogICAg
DQogICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsNCiAgICAoKHZvaWQpMCk7DQogICAgc2l6ZV90
IG9sZENhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOw0KICAgIHNpemVf
dCBuZXdDYXBhY2l0eSA9IG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsNCiAgICAo
KHZvaWQpMCk7DQogICAgaWYgKG9sZENhcGFjaXR5ICE9IG5ld0NhcGFjaXR5KSB7DQogICAgICAg
IEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2
bSwgb2xkQ2FwYWNpdHksIG5ld0NhcGFjaXR5KTsNCiAgICAgICAgbnVrZVN0cnVjdHVyZUFuZFNl
dEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7DQogICAgfQ0KDQogICAg
DQogICAgDQogICAgKCh2b2lkKTApOw0KICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7
DQogICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOw0KICAgIHNsb3Quc2V0TmV3UHJv
cGVydHkodGhpcywgb2Zmc2V0KTsNCiAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSkNCiAgICAgICAgbmV3U3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5
UHJvcGVydGllcygpOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQppbmxpbmUgYm9vbCBKU09iamVj
dDo6bWF5QmVQcm90b3R5cGUoKSBjb25zdA0Kew0KICAgIHJldHVybiBwZXJDZWxsQml0KCk7DQp9
DQoNCmlubGluZSB2b2lkIEpTT2JqZWN0OjpkaWRCZWNvbWVQcm90b3R5cGUoKQ0Kew0KICAgIHNl
dFBlckNlbGxCaXQodHJ1ZSk7DQp9DQoNCmlubGluZSBib29sIEpTT2JqZWN0OjpjYW5HZXRJbmRl
eFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0DQp7DQogICAgc3dpdGNoICh0
eXBlKCkpIHsNCg0KDQoNCiAgICAgICAgY2FzZSBJbnQ4QXJyYXlUeXBlIDogcmV0dXJuIGpzQ2Fz
dDxjb25zdCBKU0ludDhBcnJheSAqPih0aGlzKS0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpOyBjYXNl
IFVpbnQ4QXJyYXlUeXBlIDogcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1VpbnQ4QXJyYXkgKj4odGhp
cyktPmNhbkdldEluZGV4UXVpY2tseShpKTsgY2FzZSBVaW50OENsYW1wZWRBcnJheVR5cGUgOiBy
ZXR1cm4ganNDYXN0PGNvbnN0IEpTVWludDhDbGFtcGVkQXJyYXkgKj4odGhpcyktPmNhbkdldElu
ZGV4UXVpY2tseShpKTsgY2FzZSBJbnQxNkFycmF5VHlwZSA6IHJldHVybiBqc0Nhc3Q8Y29uc3Qg
SlNJbnQxNkFycmF5ICo+KHRoaXMpLT5jYW5HZXRJbmRleFF1aWNrbHkoaSk7IGNhc2UgVWludDE2
QXJyYXlUeXBlIDogcmV0dXJuIGpzQ2FzdDxjb25zdCBKU1VpbnQxNkFycmF5ICo+KHRoaXMpLT5j
YW5HZXRJbmRleFF1aWNrbHkoaSk7IGNhc2UgSW50MzJBcnJheVR5cGUgOiByZXR1cm4ganNDYXN0
PGNvbnN0IEpTSW50MzJBcnJheSAqPih0aGlzKS0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpOyBjYXNl
IFVpbnQzMkFycmF5VHlwZSA6IHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNVaW50MzJBcnJheSAqPih0
aGlzKS0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpOyBjYXNlIEZsb2F0MzJBcnJheVR5cGUgOiByZXR1
cm4ganNDYXN0PGNvbnN0IEpTRmxvYXQzMkFycmF5ICo+KHRoaXMpLT5jYW5HZXRJbmRleFF1aWNr
bHkoaSk7IGNhc2UgRmxvYXQ2NEFycmF5VHlwZSA6IHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNGbG9h
dDY0QXJyYXkgKj4odGhpcyktPmNhbkdldEluZGV4UXVpY2tseShpKTsNCg0KICAgIGRlZmF1bHQ6
DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQp9DQoNCmlubGluZSBib29sIEpTT2JqZWN0
OjpjYW5TZXRJbmRleFF1aWNrbHlGb3JUeXBlZEFycmF5KHVuc2lnbmVkIGksIEpTVmFsdWUgdmFs
dWUpIGNvbnN0DQp7DQogICAgc3dpdGNoICh0eXBlKCkpIHsNCg0KDQoNCiAgICAgICAgY2FzZSBJ
bnQ4QXJyYXlUeXBlIDogcmV0dXJuIGpzQ2FzdDxjb25zdCBKU0ludDhBcnJheSAqPih0aGlzKS0+
Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsgY2FzZSBVaW50OEFycmF5VHlwZSA6IHJldHVy
biBqc0Nhc3Q8Y29uc3QgSlNVaW50OEFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHko
aSwgdmFsdWUpOyBjYXNlIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA6IHJldHVybiBqc0Nhc3Q8Y29u
c3QgSlNVaW50OENsYW1wZWRBcnJheSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZh
bHVlKTsgY2FzZSBJbnQxNkFycmF5VHlwZSA6IHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNJbnQxNkFy
cmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpOyBjYXNlIFVpbnQxNkFy
cmF5VHlwZSA6IHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNVaW50MTZBcnJheSAqPih0aGlzKS0+Y2Fu
U2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsgY2FzZSBJbnQzMkFycmF5VHlwZSA6IHJldHVybiBq
c0Nhc3Q8Y29uc3QgSlNJbnQzMkFycmF5ICo+KHRoaXMpLT5jYW5TZXRJbmRleFF1aWNrbHkoaSwg
dmFsdWUpOyBjYXNlIFVpbnQzMkFycmF5VHlwZSA6IHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNVaW50
MzJBcnJheSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsgY2FzZSBGbG9h
dDMyQXJyYXlUeXBlIDogcmV0dXJuIGpzQ2FzdDxjb25zdCBKU0Zsb2F0MzJBcnJheSAqPih0aGlz
KS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsgY2FzZSBGbG9hdDY0QXJyYXlUeXBlIDog
cmV0dXJuIGpzQ2FzdDxjb25zdCBKU0Zsb2F0NjRBcnJheSAqPih0aGlzKS0+Y2FuU2V0SW5kZXhR
dWlja2x5KGksIHZhbHVlKTsNCg0KICAgIGRlZmF1bHQ6DQogICAgICAgIHJldHVybiBmYWxzZTsN
CiAgICB9DQp9DQoNCmlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHlGb3JU
eXBlZEFycmF5KHVuc2lnbmVkIGkpIGNvbnN0DQp7DQogICAgc3dpdGNoICh0eXBlKCkpIHsNCg0K
DQoNCg0KDQoNCiAgICAgICAgY2FzZSBJbnQ4QXJyYXlUeXBlIDogeyBhdXRvKiB0eXBlZEFycmF5
ID0ganNDYXN0PGNvbnN0IEpTSW50OEFycmF5ICo+KHRoaXMpOyBkbyB7IGlmICgoISh0eXBlZEFy
cmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50
ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQ2Mywg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcSlNPYmplY3RJbmxpbmVzLmgiLCAgX19GVU5DVElPTl9fICAsIDE1OSApOyB9IHdoaWxlIChm
YWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gdHlwZWRBcnJheS0+Z2V0SW5kZXhRdWlja2x5KGkp
OyB9IGNhc2UgVWludDhBcnJheVR5cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8Y29u
c3QgSlNVaW50OEFycmF5ICo+KHRoaXMpOyBkbyB7IGlmICgoISh0eXBlZEFycmF5LT5jYW5HZXRJ
bmRleFF1aWNrbHkoaSkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNv
bXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQ2MywgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNPYmplY3RJ
bmxpbmVzLmgiLCAgX19GVU5DVElPTl9fICAsIDE2MCApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOyByZXR1cm4gdHlwZWRBcnJheS0+Z2V0SW5kZXhRdWlja2x5KGkpOyB9IGNhc2UgVWlu
dDhDbGFtcGVkQXJyYXlUeXBlIDogeyBhdXRvKiB0eXBlZEFycmF5ID0ganNDYXN0PGNvbnN0IEpT
VWludDhDbGFtcGVkQXJyYXkgKj4odGhpcyk7IGRvIHsgaWYgKCghKHR5cGVkQXJyYXktPmNhbkdl
dEluZGV4UXVpY2tseShpKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsg
Y29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDYzLCAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVj
dElubGluZXMuaCIsICBfX0ZVTkNUSU9OX18gICwgMTYxICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3
aGlsZSAoMCk7IHJldHVybiB0eXBlZEFycmF5LT5nZXRJbmRleFF1aWNrbHkoaSk7IH0gY2FzZSBJ
bnQxNkFycmF5VHlwZSA6IHsgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxjb25zdCBKU0ludDE2
QXJyYXkgKj4odGhpcyk7IGRvIHsgaWYgKCghKHR5cGVkQXJyYXktPmNhbkdldEluZGV4UXVpY2ts
eShpKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5j
ZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDYzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIs
ICBfX0ZVTkNUSU9OX18gICwgMTYyICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHJl
dHVybiB0eXBlZEFycmF5LT5nZXRJbmRleFF1aWNrbHkoaSk7IH0gY2FzZSBVaW50MTZBcnJheVR5
cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8Y29uc3QgSlNVaW50MTZBcnJheSAqPih0
aGlzKTsgZG8geyBpZiAoKCEodHlwZWRBcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKSkpIGRv
IHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2go
KTsgV1RGQ3Jhc2hXaXRoSW5mbyg0NjMsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5saW5lcy5oIiwgIF9fRlVOQ1RJ
T05fXyAgLCAxNjMgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIHR5cGVk
QXJyYXktPmdldEluZGV4UXVpY2tseShpKTsgfSBjYXNlIEludDMyQXJyYXlUeXBlIDogeyBhdXRv
KiB0eXBlZEFycmF5ID0ganNDYXN0PGNvbnN0IEpTSW50MzJBcnJheSAqPih0aGlzKTsgZG8geyBp
ZiAoKCEodHlwZWRBcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKSkpIGRvIHsgV1RGOjppc0lu
dGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hX
aXRoSW5mbyg0NjMsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5saW5lcy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxNjQg
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgcmV0dXJuIHR5cGVkQXJyYXktPmdldElu
ZGV4UXVpY2tseShpKTsgfSBjYXNlIFVpbnQzMkFycmF5VHlwZSA6IHsgYXV0byogdHlwZWRBcnJh
eSA9IGpzQ2FzdDxjb25zdCBKU1VpbnQzMkFycmF5ICo+KHRoaXMpOyBkbyB7IGlmICgoISh0eXBl
ZEFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQ2
MywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcSlNPYmplY3RJbmxpbmVzLmgiLCAgX19GVU5DVElPTl9fICAsIDE2NSApOyB9IHdoaWxl
IChmYWxzZSk7IH0gd2hpbGUgKDApOyByZXR1cm4gdHlwZWRBcnJheS0+Z2V0SW5kZXhRdWlja2x5
KGkpOyB9IGNhc2UgRmxvYXQzMkFycmF5VHlwZSA6IHsgYXV0byogdHlwZWRBcnJheSA9IGpzQ2Fz
dDxjb25zdCBKU0Zsb2F0MzJBcnJheSAqPih0aGlzKTsgZG8geyBpZiAoKCEodHlwZWRBcnJheS0+
Y2FuR2V0SW5kZXhRdWlja2x5KGkpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlw
ZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg0NjMsICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpT
T2JqZWN0SW5saW5lcy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxNjYgKTsgfSB3aGlsZSAoZmFsc2Up
OyB9IHdoaWxlICgwKTsgcmV0dXJuIHR5cGVkQXJyYXktPmdldEluZGV4UXVpY2tseShpKTsgfSBj
YXNlIEZsb2F0NjRBcnJheVR5cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8Y29uc3Qg
SlNGbG9hdDY0QXJyYXkgKj4odGhpcyk7IGRvIHsgaWYgKCghKHR5cGVkQXJyYXktPmNhbkdldElu
ZGV4UXVpY2tseShpKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29t
cGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDYzLCAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElu
bGluZXMuaCIsICBfX0ZVTkNUSU9OX18gICwgMTY3ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGls
ZSAoMCk7IHJldHVybiB0eXBlZEFycmF5LT5nZXRJbmRleFF1aWNrbHkoaSk7IH0NCg0KICAgIGRl
ZmF1bHQ6DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21w
aWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg0NjYsICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5s
aW5lcy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxNjggKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOw0KICAgIH0NCn0NCg0KaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNl
dEluZGV4UXVpY2tseUZvclR5cGVkQXJyYXkodW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkNCnsN
CiAgICBzd2l0Y2ggKHR5cGUoKSkgew0KDQoNCg0KDQoNCg0KDQogICAgICAgIGNhc2UgSW50OEFy
cmF5VHlwZSA6IHsgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKU0ludDhBcnJheSAqPih0aGlz
KTsgZG8geyBpZiAoKCEodHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkp
KSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNy
YXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDgxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIsICBfX0ZV
TkNUSU9OX18gICwgMTY5ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHR5cGVkQXJy
YXktPnNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7IGJyZWFrOyB9IGNhc2UgVWludDhBcnJheVR5
cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlNVaW50OEFycmF5ICo+KHRoaXMpOyBk
byB7IGlmICgoISh0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSkpIGRv
IHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2go
KTsgV1RGQ3Jhc2hXaXRoSW5mbyg0ODEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5saW5lcy5oIiwgIF9fRlVOQ1RJ
T05fXyAgLCAxNzAgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgdHlwZWRBcnJheS0+
c2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsgYnJlYWs7IH0gY2FzZSBVaW50OENsYW1wZWRBcnJh
eVR5cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheSAq
Pih0aGlzKTsgZG8geyBpZiAoKCEodHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZh
bHVlKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5j
ZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDgxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIs
ICBfX0ZVTkNUSU9OX18gICwgMTcxICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHR5
cGVkQXJyYXktPnNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7IGJyZWFrOyB9IGNhc2UgSW50MTZB
cnJheVR5cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlNJbnQxNkFycmF5ICo+KHRo
aXMpOyBkbyB7IGlmICgoISh0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUp
KSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9y
Q3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg0ODEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5saW5lcy5oIiwgIF9f
RlVOQ1RJT05fXyAgLCAxNzIgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgdHlwZWRB
cnJheS0+c2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsgYnJlYWs7IH0gY2FzZSBVaW50MTZBcnJh
eVR5cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlNVaW50MTZBcnJheSAqPih0aGlz
KTsgZG8geyBpZiAoKCEodHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkp
KSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNy
YXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDgxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIsICBfX0ZV
TkNUSU9OX18gICwgMTczICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHR5cGVkQXJy
YXktPnNldEluZGV4UXVpY2tseShpLCB2YWx1ZSk7IGJyZWFrOyB9IGNhc2UgSW50MzJBcnJheVR5
cGUgOiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlNJbnQzMkFycmF5ICo+KHRoaXMpOyBk
byB7IGlmICgoISh0eXBlZEFycmF5LT5jYW5TZXRJbmRleFF1aWNrbHkoaSwgdmFsdWUpKSkpIGRv
IHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2go
KTsgV1RGQ3Jhc2hXaXRoSW5mbyg0ODEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5saW5lcy5oIiwgIF9fRlVOQ1RJ
T05fXyAgLCAxNzQgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsgdHlwZWRBcnJheS0+
c2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKTsgYnJlYWs7IH0gY2FzZSBVaW50MzJBcnJheVR5cGUg
OiB7IGF1dG8qIHR5cGVkQXJyYXkgPSBqc0Nhc3Q8SlNVaW50MzJBcnJheSAqPih0aGlzKTsgZG8g
eyBpZiAoKCEodHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkpKSBkbyB7
IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7
IFdURkNyYXNoV2l0aEluZm8oNDgxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIsICBfX0ZVTkNUSU9O
X18gICwgMTc1ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHR5cGVkQXJyYXktPnNl
dEluZGV4UXVpY2tseShpLCB2YWx1ZSk7IGJyZWFrOyB9IGNhc2UgRmxvYXQzMkFycmF5VHlwZSA6
IHsgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKU0Zsb2F0MzJBcnJheSAqPih0aGlzKTsgZG8g
eyBpZiAoKCEodHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkpKSBkbyB7
IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7
IFdURkNyYXNoV2l0aEluZm8oNDgxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIsICBfX0ZVTkNUSU9O
X18gICwgMTc2ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHR5cGVkQXJyYXktPnNl
dEluZGV4UXVpY2tseShpLCB2YWx1ZSk7IGJyZWFrOyB9IGNhc2UgRmxvYXQ2NEFycmF5VHlwZSA6
IHsgYXV0byogdHlwZWRBcnJheSA9IGpzQ2FzdDxKU0Zsb2F0NjRBcnJheSAqPih0aGlzKTsgZG8g
eyBpZiAoKCEodHlwZWRBcnJheS0+Y2FuU2V0SW5kZXhRdWlja2x5KGksIHZhbHVlKSkpKSBkbyB7
IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7
IFdURkNyYXNoV2l0aEluZm8oNDgxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIsICBfX0ZVTkNUSU9O
X18gICwgMTc3ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7IHR5cGVkQXJyYXktPnNl
dEluZGV4UXVpY2tseShpLCB2YWx1ZSk7IGJyZWFrOyB9DQoNCiAgICBkZWZhdWx0Og0KICAgICAg
ICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNy
YXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNDg0LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCIsICBfX0ZV
TkNUSU9OX18gICwgMTc4ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuOw0KICAg
IH0NCn0NCiAgICANCmlubGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQcm9w
ZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpDQp7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNTAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5saW5lcy5oIg0K
ICAgICh2b2lkKXZtOw0KICAgICh2b2lkKXByb3BlcnR5TmFtZTsNCiAgICAodm9pZCl2YWx1ZTsN
CiNsaW5lIDUwNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxKU09iamVjdElubGluZXMuaCINCn0NCg0KaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkNCnsNCiAgICB2YWxpZGF0ZVB1
dE93bkRhdGFQcm9wZXJ0eSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7DQogICAgcmV0dXJuIHB1
dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBz
bG90KTsNCn0NCg0KaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJl
SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQ0Kew0KICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgdmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHko
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOw0KICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpDQogICAgICAgIHJldHVybiBwdXREaXJlY3RJ
bmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBQdXREaXJlY3RJbmRl
eExpa2VQdXREaXJlY3QpOw0KDQogICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQ
dXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsNCn0NCg0KaW5saW5lIENhbGxE
YXRhIGdldENhbGxEYXRhKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkNCnsNCiAgICBpZiAoIXZhbHVl
LmlzQ2VsbCgpKQ0KICAgICAgICByZXR1cm4geyB9Ow0KICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVl
LmFzQ2VsbCgpOw0KICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpDQogICAg
ICAgIHJldHVybiBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShjZWxsKTsNCiAgICBDYWxsRGF0YSBy
ZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGNlbGwpOw0KICAgICgo
dm9pZCkwKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQppbmxpbmUgQ2FsbERhdGEgZ2V0Q29u
c3RydWN0RGF0YShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpDQp7DQogICAgaWYgKCF2YWx1ZS5pc0Nl
bGwoKSkNCiAgICAgICAgcmV0dXJuIHsgfTsNCiAgICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5hc0Nl
bGwoKTsNCiAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQ0KICAgICAgICBy
ZXR1cm4gSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGF0YShjZWxsKTsNCiAgICBDYWxsRGF0YSBy
ZXN1bHQgPSBjZWxsLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEoY2VsbCk7DQog
ICAgKCh2b2lkKTApOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCmlubGluZSBib29sIEpTT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQ0Kew0KICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90Ow0KICAg
IHJldHVybiB0aGlzLT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7DQp9DQoNCmlubGlu
ZSBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB1aW50MzJfdCBwcm9wZXJ0eU5hbWUpDQp7DQogICAgcmV0dXJuIHRoaXMtPm1ldGhvZFRh
YmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7DQp9DQoNCmlubGluZSBib29sIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0
eU5hbWUpDQp7DQogICAgaWYgKChwcm9wZXJ0eU5hbWUgPD0gMHhGRkZGRkZGRVUpKQ0KICAgICAg
ICByZXR1cm4gZGVsZXRlUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocHJvcGVydHlOYW1lKSk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBkZWxldGVQcm9w
ZXJ0eShnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20oZ2xvYmFsT2JqZWN0LT52bSgpLCBw
cm9wZXJ0eU5hbWUpKTsNCn0NCg0KaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNvbnN0DQp7DQog
ICAgaWYgKChwcm9wZXJ0eU5hbWUgPD0gMHhGRkZGRkZGRVUpKQ0KICAgICAgICByZXR1cm4gZ2V0
KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5TmFtZSkpOw0KICAg
ICgodm9pZCkwKTsNCiAgICByZXR1cm4gZ2V0KGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bShnbG9iYWxPYmplY3QtPnZtKCksIHByb3BlcnR5TmFtZSkpOw0KfQ0KDQpKU09iamVjdCogY3Jl
YXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsNCkpTT2JqZWN0KiBj
cmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7DQoNCl9fZm9y
Y2VpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7DQogICAgKCh2b2lkKTApOw0KICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3Qt
PnN0cnVjdHVyZSh2bSk7DQoNCiAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOw0KICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMpOw0KICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkNCiAgICAgICAgcmV0dXJuIGZh
bHNlOw0KDQogICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNjAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTT2JqZWN0SW5saW5lcy5oIg0KDQog
ICAgc2xvdC5zZXRWYWx1ZShvYmplY3QsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOw0KICAg
IHJldHVybiB0cnVlOw0KfQ0KDQppbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3Qp
Ow0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQogICAgKCh2b2lkKTAp
Ow0KICAgIGlmICghSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7DQogICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVj
dCkpOw0KICAgICAgICBkbyB7IHNjb3BlLnJlbGVhc2UoKTsgcmV0dXJuIGZhbHNlOyB9IHdoaWxl
IChmYWxzZSk7DQogICAgfQ0KICAgICgodm9pZCkwKTsNCiAgICBkbyB7IHNjb3BlLnJlbGVhc2Uo
KTsgcmV0dXJuIHRydWU7IH0gd2hpbGUgKGZhbHNlKTsNCn0NCg0KaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNs
b3QpDQp7DQogICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3Bl
ID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7DQogICAgaWYgKCFK
U09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpIHsNCiAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7DQogICAgICAg
IGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChmYWxzZSk7DQog
ICAgfQ0KICAgICgodm9pZCkwKTsNCg0KICAgIHNjb3BlLnJlbGVhc2UoKTsNCiAgICBwdXREaXJl
Y3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFNsb3QpOw0KfQ0KDQppbmxpbmUgdm9pZCBK
U09iamVjdDo6ZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgcHV0U2xvdCkNCnsNCiAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgIGF1
dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQogICAgUHJvcGVydHlTbG90IHNsb3Qo
dGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsNCiAg
ICBpZiAoSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKSB7DQogICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7
DQogICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChm
YWxzZSk7DQogICAgfQ0KICAgICgodm9pZCkwKTsNCg0KICAgIHNjb3BlLnJlbGVhc2UoKTsNCiAg
ICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFNsb3QpOw0KfQ0KDQp9IA0K
I2xpbmUgNDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcSlNDSW5saW5lcy5oIg0KDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXFN0cm9uZ0lubGluZXMu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JH
cmFiTG9jaz4NCmlubGluZSBTdHJvbmc8VCwgc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2Nr
Pjo6U3Ryb25nKFZNJiB2bSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQ0KICAgIDogSGFuZGxlPFQ+KHZt
LmhlYXAuaGFuZGxlU2V0KCktPmFsbG9jYXRlKCkpDQp7DQogICAgc2V0KHZhbHVlKTsNCn0NCg0K
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayBzaG91
bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+DQppbmxpbmUgU3Ryb25nPFQsIHNob3VsZFN0cm9u
Z0Rlc3RydWN0b3JHcmFiTG9jaz46OlN0cm9uZyhWTSYgdm0sIEhhbmRsZTxUPiBoYW5kbGUpDQog
ICAgOiBIYW5kbGU8VD4odm0uaGVhcC5oYW5kbGVTZXQoKS0+YWxsb2NhdGUoKSkNCnsNCiAgICBz
ZXQoaGFuZGxlLmdldCgpKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFNob3VsZFN0cm9u
Z0Rlc3RydWN0b3JHcmFiTG9jayBzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+DQppbmxp
bmUgdm9pZCBTdHJvbmc8VCwgc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPjo6c2V0KFZN
JiB2bSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQ0Kew0KICAgIGlmICghc2xvdCgpKQ0KICAgICAgICBz
ZXRTbG90KHZtLmhlYXAuaGFuZGxlU2V0KCktPmFsbG9jYXRlKCkpOw0KICAgIHNldCh2YWx1ZSk7
DQp9DQoNCn0gDQojbGluZSA1NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU0NJbmxpbmVzLmgiDQoNCg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxXZWFr
R0NNYXBJbmxpbmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+DQppbmxpbmUgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVB
cmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OldlYWtHQ01hcChWTSYgdm0pDQogICAgOiBtX3Zt
KHZtKQ0Kew0KICAgIHZtLmhlYXAucmVnaXN0ZXJXZWFrR0NNYXAodGhpcyk7DQp9DQoNCnRlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcs
IHR5cGVuYW1lIEtleVRyYWl0c0FyZz4NCmlubGluZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFy
ZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6fldlYWtHQ01hcCgpDQp7DQogICAgbV92bS5oZWFw
LnVucmVnaXN0ZXJXZWFrR0NNYXAodGhpcyk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFy
ZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0
c0FyZz4NCmlubGluZSB0eXBlbmFtZSBXZWFrR0NNYXA8S2V5QXJnLCBWYWx1ZUFyZywgSGFzaEFy
ZywgS2V5VHJhaXRzQXJnPjo6aXRlcmF0b3IgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhh
c2hBcmcsIEtleVRyYWl0c0FyZz46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQ0Kew0KICAgIGl0
ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOw0KICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFwLmVu
ZCgpOw0KICAgIGlmIChpdCAhPSBlbmQgJiYgIWl0LT52YWx1ZSkgDQogICAgICAgIHJldHVybiBl
bmQ7DQogICAgcmV0dXJuIGl0Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVu
YW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+DQpp
bmxpbmUgdHlwZW5hbWUgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRy
YWl0c0FyZz46OmNvbnN0X2l0ZXJhdG9yIFdlYWtHQ01hcDxLZXlBcmcsIFZhbHVlQXJnLCBIYXNo
QXJnLCBLZXlUcmFpdHNBcmc+OjpmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgY29uc3QNCnsNCiAg
ICByZXR1cm4gY29uc3RfY2FzdDxXZWFrR0NNYXAqPih0aGlzKS0+ZmluZChrZXkpOw0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNo
QXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+DQppbmxpbmUgYm9vbCBXZWFrR0NNYXA8S2V5QXJn
LCBWYWx1ZUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPjo6Y29udGFpbnMoY29uc3QgS2V5VHlw
ZSYga2V5KSBjb25zdA0Kew0KICAgIHJldHVybiBmaW5kKGtleSkgIT0gbV9tYXAuZW5kKCk7DQp9
DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1l
IEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZz4NCl9fZGVjbHNwZWMobm9pbmxpbmUpIHZv
aWQgV2Vha0dDTWFwPEtleUFyZywgVmFsdWVBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz46OnBy
dW5lU3RhbGVFbnRyaWVzKCkNCnsNCiAgICBtX21hcC5yZW1vdmVJZihbXSh0eXBlbmFtZSBIYXNo
TWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlwZSYgZW50cnkpIHsNCiAgICAgICAgcmV0dXJuICFlbnRy
eS52YWx1ZTsNCiAgICB9KTsNCn0NCg0KfSANCiNsaW5lIDU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEpTQ0lubGluZXMuaCINCiNs
aW5lIDM3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGxsaW50XFxMTEludFBDUmFuZ2VzLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCm5hbWVzcGFjZSBMTEludCB7DQoNCg0K
ZXh0ZXJuICJDIiB7DQogICAgdm9pZCBsbGludFBDUmFuZ2VTdGFydCgpOw0KICAgIHZvaWQgbGxp
bnRQQ1JhbmdlRW5kKCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBpc0xMSW50UEModm9pZCog
cGMpDQp7DQogICAgdWludHB0cl90IHBjQXNJbnQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihw
Yyk7DQogICAgdWludHB0cl90IGxsaW50U3RhcnQgPSB1bnRhZ0NvZGVQdHI8dWludHB0cl90Pihs
bGludFBDUmFuZ2VTdGFydCwgQ0Z1bmN0aW9uUHRyVGFnKTsNCiAgICB1aW50cHRyX3QgbGxpbnRF
bmQgPSB1bnRhZ0NvZGVQdHI8dWludHB0cl90PihsbGludFBDUmFuZ2VFbmQsIENGdW5jdGlvblB0
clRhZyk7DQogICAgZG8geyBpZiAoKCEobGxpbnRTdGFydCA8IGxsaW50RW5kKSkpIGRvIHsgV1RG
Ojppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RG
Q3Jhc2hXaXRoSW5mbyg0NSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcbGxpbnRcXExMSW50UENSYW5nZXMuaCIsICBfX0ZVTkNUSU9OX18gICwgMTc5
ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgcmV0dXJuIGxsaW50U3RhcnQg
PD0gcGNBc0ludCAmJiBwY0FzSW50IDw9IGxsaW50RW5kOw0KfQ0KDQoNCnN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIExMSW50UEMgPSBHUFJJbmZvOjpyZWdUNDsNCiNsaW5lIDUyICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGxsaW50XFxMTEludFBDUmFu
Z2VzLmgiDQoNCn0gfSANCiNsaW5lIDM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiDQojbGluZSAx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Qb2lu
dGVyUHJlcGFyYXRpb25zLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMzEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BvaW50ZXJQcmVwYXJh
dGlvbnMuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KDQojbGluZSA0MCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oIg0KDQoNCg0KDQojbGluZSA0NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
Ig0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCl9fZm9yY2VpbmxpbmUgY29uc3Qgdm9pZCogZ2V0VlRh
YmxlUG9pbnRlcihUKiBvKSB7IHJldHVybiAoKihyZWludGVycHJldF9jYXN0PHZvaWQqKj4obykp
KTsgfQ0KI2xpbmUgNDggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaCINCg0KI2xpbmUgNTAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1BvaW50
ZXJQcmVwYXJhdGlvbnMuaCINCg0KfSANCg0KdXNpbmcgV1RGOjpnZXRWVGFibGVQb2ludGVyOw0K
I2xpbmUgMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCm5hbWVz
cGFjZSBNYWNoaW5lQ29udGV4dCB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4gVCBz
dGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsNCg0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBUID0gdm9pZCo+IHZvaWQgc2V0U3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwg
VCk7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IFQgZnJhbWVQb2ludGVyKGNvbnN0IFBs
YXRmb3JtUmVnaXN0ZXJzJik7DQp0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHZvaWQgc2V0
RnJhbWVQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiwgVCk7DQppbmxpbmUgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzTFJQdHJUYWc+IGxpbmtSZWdpc3Rlcihjb25zdCBQ
bGF0Zm9ybVJlZ2lzdGVycyYpOw0KaW5saW5lIHZvaWQgc2V0TGlua1JlZ2lzdGVyKFBsYXRmb3Jt
UmVnaXN0ZXJzJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4pOw0KaW5s
aW5lIE9wdGlvbmFsPE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRy
VGFnPj4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7DQppbmxp
bmUgdm9pZCBzZXRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPik7DQoNCnRlbXBsYXRlPHNpemVfdCBOPiB2
b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7DQp0ZW1wbGF0ZTxzaXpl
X3QgTj4gdm9pZCogYXJndW1lbnRQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7DQoN
CnZvaWQqJiBsbGludEluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOw0Kdm9p
ZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsNCiNs
aW5lIDU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgODQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCiNs
aW5lIDg1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQoNCnN0YXRpYyBpbmxpbmUgdm9pZCom
IHN0YWNrUG9pbnRlckltcGwoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpDQp7DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTIx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQojbGluZSAxMjUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQu
aCINCg0KI2xpbmUgMTI3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCiNsaW5lIDEyOSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNo
aW5lQ29udGV4dC5oIg0KICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIHJlZ3MuUnNwKTsNCg0KDQojbGluZSAxMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCg0K
DQoNCiNsaW5lIDEzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KfQ0KI2xpbmUgMTM5ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hp
bmVDb250ZXh0LmgiDQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgVCBzdGFja1BvaW50
ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpDQp7DQoNCg0KDQoNCiNsaW5lIDE0OCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxNYWNoaW5lQ29udGV4dC5oIg0KDQojbGluZSAxNTAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCiAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHN0YWNrUG9pbnRlckltcGwoY29uc3RfY2FzdDxQbGF0
Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKSk7DQojbGluZSAxNTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCIN
Cn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmlubGluZSB2b2lkIHNldFN0YWNrUG9pbnRlcihQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVncywgVCB2YWx1ZSkNCnsNCg0KDQoNCiNsaW5lIDE2MSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxN
YWNoaW5lQ29udGV4dC5oIg0KDQojbGluZSAxNjMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCiAgICBz
dGFja1BvaW50ZXJJbXBsKHJlZ3MpID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7DQojbGlu
ZSAxNjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCn0NCg0KDQoNCg0KDQoNCg0KDQojbGluZSAxNzUg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcTWFjaGluZUNvbnRleHQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI0NSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxNYWNoaW5lQ29udGV4dC5oIg0KDQoNCg0KDQoNCnN0YXRpYyBpbmxpbmUgdm9pZComIGZyYW1l
UG9pbnRlckltcGwoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpDQp7DQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyODMgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
TWFjaGluZUNvbnRleHQuaCINCg0KDQoNCiNsaW5lIDI4NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0K
DQojbGluZSAyODkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCg0KI2xpbmUgMjkxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVD
b250ZXh0LmgiDQogICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgcmVncy5SYnApOw0KDQoNCiNsaW5lIDI5NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KDQoNCg0K
I2xpbmUgMjk5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQp9DQojbGluZSAzMDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNv
bnRleHQuaCINCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCmlubGluZSBUIGZyYW1lUG9pbnRlcihj
b25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykNCnsNCg0KDQoNCg0KI2xpbmUgMzEwICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1h
Y2hpbmVDb250ZXh0LmgiDQogICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihmcmFtZVBvaW50ZXJJ
bXBsKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSkpOw0KI2xpbmUgMzEyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XE1hY2hpbmVDb250ZXh0LmgiDQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+DQppbmxpbmUgdm9p
ZCBzZXRGcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIFQgdmFsdWUpDQp7DQoN
Cg0KDQojbGluZSAzMjEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCiAgICBmcmFtZVBvaW50ZXJJbXBs
KHJlZ3MpID0gYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSk7DQojbGluZSAzMjMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGlu
ZUNvbnRleHQuaCINCn0NCiNsaW5lIDMyNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQojbGluZSAzOTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCg0KDQoNCg0K
DQpzdGF0aWMgaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKFBsYXRmb3JtUmVn
aXN0ZXJzJiByZWdzKQ0Kew0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI2xpbmUgNDI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQojbGluZSA0MzIg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcTWFjaGluZUNvbnRleHQuaCINCg0KI2xpbmUgNDM0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoN
CiNsaW5lIDQzNiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmlwKTsNCg0KDQojbGluZSA0NDAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFj
aGluZUNvbnRleHQuaCINCg0KDQoNCiNsaW5lIDQ0NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KfQ0K
I2xpbmUgNDQ2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENv
cmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCmlubGluZSBPcHRpb25hbDxNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4+IGluc3RydWN0aW9uUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykNCnsNCg0KDQojbGluZSA0NTIgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
TWFjaGluZUNvbnRleHQuaCINCg0KI2xpbmUgNDU0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQogICAg
dm9pZCogdmFsdWUgPSBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKGNvbnN0X2Nhc3Q8UGxhdGZvcm1S
ZWdpc3RlcnMmPihyZWdzKSk7DQojbGluZSA0NTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCiAgICBp
ZiAoIXZhbHVlKQ0KICAgICAgICByZXR1cm4gbWFrZU9wdGlvbmFsKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnPihudWxscHRyKSk7DQogICAgaWYgKCF1c2Vz
UG9pbnRlclRhZ2dpbmcoKSkNCiAgICAgICAgcmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4odmFsdWUpKTsNCiAgICBpZiAo
aXNUYWdnZWRXaXRoKHZhbHVlLCBQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnKSkNCiAgICAgICAg
cmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3Rl
cnNQQ1B0clRhZz4odmFsdWUpKTsNCiAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KfQ0KDQppbmxp
bmUgdm9pZCBzZXRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IHZhbHVlKQ0Kew0KDQoNCiNsaW5l
IDQ3MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxy
dW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KDQojbGluZSA0NzIgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQu
aCINCiAgICBpbnN0cnVjdGlvblBvaW50ZXJJbXBsKHJlZ3MpID0gdmFsdWUuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsNCiNsaW5lIDQ3NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KfQ0KI2xpbmUgNDc2ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNTUxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA1NzYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCg0KDQoN
CiNsaW5lIDU4MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KDQp0ZW1wbGF0ZTw+DQppbmxpbmUgdm9p
ZComIGFyZ3VtZW50UG9pbnRlcjwxPihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykNCnsNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDYx
MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KDQoNCg0KI2xpbmUgNjE2ICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0
LmgiDQoNCiNsaW5lIDYxOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KDQojbGluZSA2MjAgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFj
aGluZUNvbnRleHQuaCINCiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSByZWdzLlJkeCk7DQoNCg0KI2xpbmUgNjI0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQoN
Cg0KDQojbGluZSA2MjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQuaCINCn0NCg0KdGVtcGxhdGU8c2l6ZV90
IE4+DQppbmxpbmUgdm9pZCogYXJndW1lbnRQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdzKQ0Kew0KICAgIHJldHVybiBhcmd1bWVudFBvaW50ZXI8Tj4oY29uc3RfY2FzdDxQbGF0
Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsNCn0NCiNsaW5lIDYzNiAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDY4NyAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxNYWNoaW5lQ29udGV4dC5oIg0KDQoNCg0KaW5saW5lIHZvaWQqJiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykNCnsNCiAgICANCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA3
MjYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZVxcTWFjaGluZUNvbnRleHQuaCINCg0KDQoNCg0KI2xpbmUgNzMxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250
ZXh0LmgiDQoNCiNsaW5lIDczMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxydW50aW1lXFxNYWNoaW5lQ29udGV4dC5oIg0KDQoNCiNsaW5lIDczNiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
XFxNYWNoaW5lQ29udGV4dC5oIg0KICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0g
WDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsNCiAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlIxMCk7DQoNCg0KI2xpbmUgNzQx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRp
bWVcXE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQojbGluZSA3NDUgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGluZUNvbnRleHQu
aCINCn0NCg0KaW5saW5lIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzKQ0Kew0KICAgIHJldHVybiBsbGludEluc3RydWN0aW9uUG9pbnRl
cihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOw0KfQ0KI2xpbmUgNzUyICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XE1hY2hpbmVDb250ZXh0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI2xpbmUgODAzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHJ1bnRpbWVcXE1hY2hpbmVDb250ZXh0LmgiDQojbGluZSA4MDQgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcTWFjaGlu
ZUNvbnRleHQuaCINCg0KfQ0KfQ0KI2xpbmUgMzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcTWFya2VkQmxvY2tJbmxpbmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
U2NyaWJibGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmlubGluZSBi
b29sIHNjcmliYmxlRnJlZUNlbGxzKCkNCnsNCiAgICByZXR1cm4gMCB8fCBPcHRpb25zOjpzY3Jp
YmJsZUZyZWVDZWxscygpOw0KfQ0KDQoNCg0KaW5saW5lIGJvb2wgaXNTY3JpYmJsZWRWYWx1ZShK
U1ZhbHVlIHZhbHVlKQ0Kew0KICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFsdWUpID09IEpT
VmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KDB4YmFkYmVlZjApKSk7DQp9DQoNCmlubGluZSB2b2lkIHNjcmliYmxlKHZvaWQqIGJhc2UsIHNp
emVfdCBzaXplKQ0Kew0KICAgIGZvciAoc2l6ZV90IGkgPSBzaXplIC8gc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsgaS0tOykgew0KICAgICAgICANCiAgICAgICAgc3RhdGljX2Nhc3Q8RW5jb2RlZEpT
VmFsdWUqPihiYXNlKVtpXSA9IEpTVmFsdWU6OmVuY29kZShiaXR3aXNlX2Nhc3Q8SlNDZWxsKj4o
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4YmFkYmVlZjApKSk7DQogICAgfQ0KfQ0KDQp9DQojbGlu
ZSAzMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxo
ZWFwXFxNYXJrZWRCbG9ja0lubGluZXMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFN1cGVyU2FtcGxlci5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIE1hY3JvQXNzZW1ibGVyOw0KDQpleHRl
cm4gX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvbGF0aWxlIHVpbnQzMl90IGdfc3VwZXJTYW1wbGVy
Q291bnQ7DQoNCnZvaWQgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOw0KDQpjbGFzcyBTdXBlclNh
bXBsZXJTY29wZSB7DQpwdWJsaWM6DQogICAgU3VwZXJTYW1wbGVyU2NvcGUoYm9vbCBkb1NhbXBs
ZSA9IHRydWUpDQogICAgICAgIDogbV9kb1NhbXBsZShkb1NhbXBsZSkNCiAgICB7DQogICAgICAg
IGlmIChtX2RvU2FtcGxlKQ0KICAgICAgICAgICAgZ19zdXBlclNhbXBsZXJDb3VudCsrOw0KICAg
IH0NCg0KICAgIH5TdXBlclNhbXBsZXJTY29wZSgpDQogICAgew0KICAgICAgICBpZiAobV9kb1Nh
bXBsZSkNCiAgICAgICAgICAgIGdfc3VwZXJTYW1wbGVyQ291bnQtLTsNCiAgICB9DQoNCiAgICB2
b2lkIHJlbGVhc2UoKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBnX3N1cGVy
U2FtcGxlckNvdW50LS07DQogICAgICAgIG1fZG9TYW1wbGUgPSBmYWxzZTsNCiAgICB9DQoNCnBy
aXZhdGU6DQogICAgYm9vbCBtX2RvU2FtcGxlOw0KfTsNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQp
IHZvaWQgcmVzZXRTdXBlclNhbXBsZXJTdGF0ZSgpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZv
aWQgcHJpbnRTdXBlclNhbXBsZXJTdGF0ZSgpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQg
ZW5hYmxlU3VwZXJTYW1wbGVyKCk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgdm9pZCBkaXNhYmxl
U3VwZXJTYW1wbGVyKCk7DQoNCn0gDQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxNYXJrZWRCbG9ja0lubGluZXMuaCINCg0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KaW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmNlbGxzUGVyQmxvY2soKQ0Kew0KICAgIHJldHVybiBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2Fk
IC8gY2VsbFNpemUoKTsNCn0NCg0KaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTmV3bHlBbGxv
Y2F0ZWRTdGFsZSgpIGNvbnN0DQp7DQogICAgcmV0dXJuIGZvb3RlcigpLm1fbmV3bHlBbGxvY2F0
ZWRWZXJzaW9uICE9IHNwYWNlKCktPm5ld2x5QWxsb2NhdGVkVmVyc2lvbigpOw0KfQ0KDQppbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aGFzQW55TmV3bHlBbGxvY2F0ZWQoKQ0Kew0KICAgIHJldHVy
biAhaXNOZXdseUFsbG9jYXRlZFN0YWxlKCk7DQp9DQoNCmlubGluZSBIZWFwKiBNYXJrZWRCbG9j
azo6aGVhcCgpIGNvbnN0DQp7DQogICAgcmV0dXJuICZ2bSgpLmhlYXA7DQp9DQoNCmlubGluZSBN
YXJrZWRTcGFjZSogTWFya2VkQmxvY2s6OnNwYWNlKCkgY29uc3QNCnsNCiAgICByZXR1cm4gJmhl
YXAoKS0+b2JqZWN0U3BhY2UoKTsNCn0NCg0KaW5saW5lIE1hcmtlZFNwYWNlKiBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzcGFjZSgpIGNvbnN0DQp7DQogICAgcmV0dXJuICZoZWFwKCktPm9iamVjdFNw
YWNlKCk7DQp9DQoNCmlubGluZSBib29sIE1hcmtlZEJsb2NrOjptYXJrc0NvbnZleUxpdmVuZXNz
RHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikNCnsNCiAgICByZXR1cm4g
bWFya3NDb252ZXlMaXZlbmVzc0R1cmluZ01hcmtpbmcoZm9vdGVyKCkubV9tYXJraW5nVmVyc2lv
biwgbWFya2luZ1ZlcnNpb24pOw0KfQ0KDQppbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bWFya3ND
b252ZXlMaXZlbmVzc0R1cmluZ01hcmtpbmcoSGVhcFZlcnNpb24gbXlNYXJraW5nVmVyc2lvbiwg
SGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pDQp7DQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgKCh2b2lk
KTApOw0KICAgIGlmIChoZWFwKCktPmNvbGxlY3Rpb25TY29wZSgpICE9IENvbGxlY3Rpb25TY29w
ZTo6RnVsbCkNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIHJldHVybiBteU1hcmtpbmdWZXJz
aW9uID09IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbg0KICAgICAgICB8fCBNYXJrZWRTcGFjZTo6
bmV4dFZlcnNpb24obXlNYXJraW5nVmVyc2lvbikgPT0gbWFya2luZ1ZlcnNpb247DQp9DQoNCmlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzQWxsb2NhdGVkKCkNCnsNCiAgICByZXR1
cm4gbV9kaXJlY3RvcnktPmlzQWxsb2NhdGVkKE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhpcyk7DQp9
DQoNCl9fZm9yY2VpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZl
cnNpb24gbWFya2luZ1ZlcnNpb24sIEhlYXBWZXJzaW9uIG5ld2x5QWxsb2NhdGVkVmVyc2lvbiwg
Ym9vbCBpc01hcmtpbmcsIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQ0Kew0KICAgIGlmIChkaXJlY3Rv
cnkoKS0+aXNBbGxvY2F0ZWQoTm9Mb2NraW5nTmVjZXNzYXJ5LCB0aGlzKSkNCiAgICAgICAgcmV0
dXJuIHRydWU7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQoN
CiAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOw0KICAgIE1hcmtlZEJsb2Nr
OjpGb290ZXImIGZvb3RlciA9IGJsb2NrLmZvb3RlcigpOw0KICAgIA0KICAgIGF1dG8gY291bnQg
PSBmb290ZXIubV9sb2NrLnRyeU9wdGltaXN0aWNGZW5jZWxlc3NSZWFkKCk7DQogICAgaWYgKGNv
dW50LnZhbHVlKSB7DQogICAgICAgIERlcGVuZGVuY3kgZmVuY2VCZWZvcmUgPSBEZXBlbmRlbmN5
OjpmZW5jZShjb3VudC5pbnB1dCk7DQogICAgICAgIE1hcmtlZEJsb2NrJiBmZW5jZWRCbG9jayA9
ICpmZW5jZUJlZm9yZS5jb25zdW1lKCZibG9jayk7DQogICAgICAgIE1hcmtlZEJsb2NrOjpGb290
ZXImIGZlbmNlZEZvb3RlciA9IGZlbmNlZEJsb2NrLmZvb3RlcigpOw0KICAgICAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiBmZW5jZWRUaGlzID0gZmVuY2VCZWZvcmUuY29uc3VtZSh0aGlzKTsNCiAg
ICAgICAgDQogICAgICAgICgodm9pZClmZW5jZWRUaGlzKTsNCiAgICAgICAgDQogICAgICAgIEhl
YXBWZXJzaW9uIG15TmV3bHlBbGxvY2F0ZWRWZXJzaW9uID0gZmVuY2VkRm9vdGVyLm1fbmV3bHlB
bGxvY2F0ZWRWZXJzaW9uOw0KICAgICAgICBpZiAobXlOZXdseUFsbG9jYXRlZFZlcnNpb24gPT0g
bmV3bHlBbGxvY2F0ZWRWZXJzaW9uKSB7DQogICAgICAgICAgICBib29sIHJlc3VsdCA9IGZlbmNl
ZEJsb2NrLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCk7DQogICAgICAgICAgICBpZiAoZm9vdGVyLm1f
bG9jay5mZW5jZWxlc3NWYWxpZGF0ZShjb3VudC52YWx1ZSwgRGVwZW5kZW5jeTo6ZmVuY2UocmVz
dWx0KSkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfSBlbHNlIHsN
CiAgICAgICAgICAgIEhlYXBWZXJzaW9uIG15TWFya2luZ1ZlcnNpb24gPSBmZW5jZWRGb290ZXIu
bV9tYXJraW5nVmVyc2lvbjsNCiAgICAgICAgICAgIGlmIChteU1hcmtpbmdWZXJzaW9uICE9IG1h
cmtpbmdWZXJzaW9uDQogICAgICAgICAgICAgICAgJiYgKCFpc01hcmtpbmcgfHwgIWZlbmNlZEJs
b2NrLm1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKG15TWFya2luZ1ZlcnNpb24sIG1h
cmtpbmdWZXJzaW9uKSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoZm9vdGVyLm1fbG9jay5mZW5j
ZWxlc3NWYWxpZGF0ZShjb3VudC52YWx1ZSwgRGVwZW5kZW5jeTo6ZmVuY2UobXlNYXJraW5nVmVy
c2lvbikpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmVuY2VkRm9vdGVyLm1fbWFy
a3MuZ2V0KGJsb2NrLmF0b21OdW1iZXIoY2VsbCkpOw0KICAgICAgICAgICAgICAgIGlmIChmb290
ZXIubV9sb2NrLmZlbmNlbGVzc1ZhbGlkYXRlKGNvdW50LnZhbHVlLCBEZXBlbmRlbmN5OjpmZW5j
ZShyZXN1bHQpKSkNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGZvb3Rlci5tX2xvY2spOw0KDQogICAgKCh2b2lkKTApOw0KICAgIA0KICAgIEhlYXBWZXJzaW9u
IG15TmV3bHlBbGxvY2F0ZWRWZXJzaW9uID0gZm9vdGVyLm1fbmV3bHlBbGxvY2F0ZWRWZXJzaW9u
Ow0KICAgIGlmIChteU5ld2x5QWxsb2NhdGVkVmVyc2lvbiA9PSBuZXdseUFsbG9jYXRlZFZlcnNp
b24pDQogICAgICAgIHJldHVybiBibG9jay5pc05ld2x5QWxsb2NhdGVkKGNlbGwpOw0KICAgIA0K
ICAgIGlmIChibG9jay5hcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkgew0KICAgICAgICBp
ZiAoIWlzTWFya2luZykNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgaWYgKCFi
bG9jay5tYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5nVmVyc2lvbikpDQog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIHJldHVybiBmb290ZXIu
bV9tYXJrcy5nZXQoYmxvY2suYXRvbU51bWJlcihjZWxsKSk7DQp9DQoNCmlubGluZSBib29sIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24s
IEhlYXBWZXJzaW9uIG5ld2x5QWxsb2NhdGVkVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0
IHZvaWQqIHApDQp7DQogICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpDQogICAgICAgIHJldHVy
biBmYWxzZTsNCiAgICByZXR1cm4gaXNMaXZlKG1hcmtpbmdWZXJzaW9uLCBuZXdseUFsbG9jYXRl
ZFZlcnNpb24sIGlzTWFya2luZywgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7DQp9
DQoNCmlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2Vs
bCogY2VsbCkNCnsNCiAgICByZXR1cm4gaXNMaXZlKHNwYWNlKCktPm1hcmtpbmdWZXJzaW9uKCks
IHNwYWNlKCktPm5ld2x5QWxsb2NhdGVkVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwg
Y2VsbCk7DQp9DQoNCmlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwo
Y29uc3Qgdm9pZCogcCkNCnsNCiAgICByZXR1cm4gaXNMaXZlQ2VsbChzcGFjZSgpLT5tYXJraW5n
VmVyc2lvbigpLCBzcGFjZSgpLT5uZXdseUFsbG9jYXRlZFZlcnNpb24oKSwgc3BhY2UoKS0+aXNN
YXJraW5nKCksIHApOw0KfQ0KDQppbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjphcmVN
YXJrc1N0YWxlRm9yU3dlZXAoKQ0Kew0KICAgIHJldHVybiBtYXJrc01vZGUoKSA9PSBNYXJrc1N0
YWxlOw0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZW1w
bGF0ZTxib29sIHNwZWNpYWxpemUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBzcGVj
aWFsaXplZEVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHNwZWNpYWxp
emVkU3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTd2VlcERlc3RydWN0aW9uTW9kZSBz
cGVjaWFsaXplZERlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVN
b2RlIHNwZWNpYWxpemVkU2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFs
bG9jYXRlZE1vZGUgc3BlY2lhbGl6ZWROZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6Ok1hcmtzTW9kZSBzcGVjaWFsaXplZE1hcmtzTW9kZSwgdHlwZW5hbWUgRGVzdHJveUZ1
bmM+DQp2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXAoRnJlZUxpc3Qq
IGZyZWVMaXN0LCBNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTd2VlcE1vZGUgc3dlZXBNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpTd2VlcERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok5ld2x5
QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6Ok1h
cmtzTW9kZSBtYXJrc01vZGUsIGNvbnN0IERlc3Ryb3lGdW5jJiBkZXN0cm95RnVuYykNCnsNCiAg
ICBpZiAoc3BlY2lhbGl6ZSkgew0KICAgICAgICBlbXB0eU1vZGUgPSBzcGVjaWFsaXplZEVtcHR5
TW9kZTsNCiAgICAgICAgc3dlZXBNb2RlID0gc3BlY2lhbGl6ZWRTd2VlcE1vZGU7DQogICAgICAg
IGRlc3RydWN0aW9uTW9kZSA9IHNwZWNpYWxpemVkRGVzdHJ1Y3Rpb25Nb2RlOw0KICAgICAgICBz
Y3JpYmJsZU1vZGUgPSBzcGVjaWFsaXplZFNjcmliYmxlTW9kZTsNCiAgICAgICAgbmV3bHlBbGxv
Y2F0ZWRNb2RlID0gc3BlY2lhbGl6ZWROZXdseUFsbG9jYXRlZE1vZGU7DQogICAgICAgIG1hcmtz
TW9kZSA9IHNwZWNpYWxpemVkTWFya3NNb2RlOw0KICAgIH0NCiAgICANCiAgICBkbyB7IGlmICgo
ISghKGRlc3RydWN0aW9uTW9kZSA9PSBCbG9ja0hhc05vRGVzdHJ1Y3RvcnMgJiYgc3dlZXBNb2Rl
ID09IFN3ZWVwT25seSkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNv
bXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI0NCwgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkQmxvY2tJ
bmxpbmVzLmgiLCAgX19GVU5DVElPTl9fICAsIDE4MCApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOw0KICAgIA0KICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsNCg0KICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7DQogICAgTWFy
a2VkQmxvY2s6OkZvb3RlciYgZm9vdGVyID0gYmxvY2suZm9vdGVyKCk7DQogICAgDQogICAgaWYg
KGZhbHNlKQ0KICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIodGhpcyksICIvIiwgUmF3UG9pbnRl
cigmYmxvY2spLCAiOiBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplZFN3ZWVwIVxuIik7
DQogICAgDQogICAgdW5zaWduZWQgY2VsbFNpemUgPSB0aGlzLT5jZWxsU2l6ZSgpOw0KICAgIA0K
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7DQogICAgYXV0byBkZXN0cm95ID0gWyZdICh2b2lkKiBj
ZWxsKSB7DQogICAgICAgIEpTQ2VsbCoganNDZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2Vs
bCk7DQogICAgICAgIGlmICghanNDZWxsLT5pc1phcHBlZCgpKSB7DQogICAgICAgICAgICBkZXN0
cm95RnVuYyh2bSwganNDZWxsKTsNCiAgICAgICAgICAgIGpzQ2VsbC0+emFwKEhlYXBDZWxsOjpE
ZXN0cnVjdGlvbik7DQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAgIG1fZGlyZWN0b3J5LT5z
ZXRJc0Rlc3RydWN0aWJsZShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMsIGZhbHNlKTsNCiAgICAN
CiAgICBjaGFyKiBzdGFydE9mTGFzdENlbGwgPSBzdGF0aWNfY2FzdDxjaGFyKj4oY2VsbEFsaWdu
KGJsb2NrLmF0b21zKCkgKyBtX2VuZEF0b20gLSAxKSk7DQogICAgY2hhciogcGF5bG9hZEVuZCA9
IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplOw0KICAgIGRvIHsgaWYgKCghKHBheWxvYWRFbmQg
LSBNYXJrZWRCbG9jazo6YmxvY2tTaXplIDw9IGJpdHdpc2VfY2FzdDxjaGFyKj4oJmJsb2NrKSkp
KSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNy
YXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMjY5LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxoZWFwXFxNYXJrZWRCbG9ja0lubGluZXMuaCIsICBfX0ZV
TkNUSU9OX18gICwgMTgxICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgY2hh
ciogcGF5bG9hZEJlZ2luID0gYml0d2lzZV9jYXN0PGNoYXIqPihibG9jay5hdG9tcygpKTsNCg0K
ICAgIGlmIChPcHRpb25zOjp1c2VCdW1wQWxsb2NhdG9yKCkNCiAgICAgICAgJiYgZW1wdHlNb2Rl
ID09IElzRW1wdHkNCiAgICAgICAgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IERvZXNOb3RIYXZl
TmV3bHlBbGxvY2F0ZWQpIHsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpZiAobWFya3NN
b2RlID09IE1hcmtzTm90U3RhbGUgJiYgIWZvb3Rlci5tX21hcmtzLmlzRW1wdHkoKSkgew0KICAg
ICAgICAgICAgV1RGOjpkYXRhRmlsZSgpLmF0b21pY2FsbHkoDQogICAgICAgICAgICAgICAgWyZd
IChQcmludFN0cmVhbSYgb3V0KSB7DQogICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiQmxv
Y2sgIiwgUmF3UG9pbnRlcigmYmxvY2spLCAiOiBtYXJrcyBub3QgZW1wdHkhXG4iKTsNCiAgICAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCJCbG9jayBsb2NrIGlzIGhlbGQ6ICIsIGZvb3Rlci5t
X2xvY2suaXNIZWxkKCksICJcbiIpOw0KICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIk1h
cmtpbmcgdmVyc2lvbiBvZiBibG9jazogIiwgZm9vdGVyLm1fbWFya2luZ1ZlcnNpb24sICJcbiIp
Ow0KICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIk1hcmtpbmcgdmVyc2lvbiBvZiBoZWFw
OiAiLCBzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpLCAiXG4iKTsNCiAgICAgICAgICAgICAgICAg
ICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JD
cmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI4NCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcTWFya2VkQmxvY2tJbmxpbmVzLmgiLCAgX19G
VU5DVElPTl9fICAsIDE4MiApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICAgICAgfSk7
DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0Zy
ZWVMaXN0KQ0KICAgICAgICAgICAgc2V0SXNGcmVlTGlzdGVkKCk7DQogICAgICAgIGlmIChzcGFj
ZSgpLT5pc01hcmtpbmcoKSkNCiAgICAgICAgICAgIGZvb3Rlci5tX2xvY2sudW5sb2NrKCk7DQog
ICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgIT0gQmxvY2tIYXNOb0Rlc3RydWN0b3JzKSB7DQog
ICAgICAgICAgICBmb3IgKGNoYXIqIGNlbGwgPSBwYXlsb2FkQmVnaW47IGNlbGwgPCBwYXlsb2Fk
RW5kOyBjZWxsICs9IGNlbGxTaXplKQ0KICAgICAgICAgICAgICAgIGRlc3Ryb3koY2VsbCk7DQog
ICAgICAgIH0NCiAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsNCiAg
ICAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUgPT0gU2NyaWJibGUpDQogICAgICAgICAgICAgICAg
c2NyaWJibGUocGF5bG9hZEJlZ2luLCBwYXlsb2FkRW5kIC0gcGF5bG9hZEJlZ2luKTsNCiAgICAg
ICAgICAgIGZyZWVMaXN0LT5pbml0aWFsaXplQnVtcChwYXlsb2FkRW5kLCBwYXlsb2FkRW5kIC0g
cGF5bG9hZEJlZ2luKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZmFsc2UpDQogICAgICAgICAg
ICBkYXRhTG9nKCJRdWlja2x5IHN3ZXB0IGJsb2NrICIsIFJhd1BvaW50ZXIodGhpcyksICIgd2l0
aCBjZWxsIHNpemUgIiwgY2VsbFNpemUsICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVz
LCAiOiAiLCBwb2ludGVyRHVtcChmcmVlTGlzdCksICJcbiIpOw0KICAgICAgICByZXR1cm47DQog
ICAgfQ0KDQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICANCg0KICAgIEF0b21zQml0bWFwIGxvY2FsRnJlZUF0b21zOw0K
ICAgIEF0b21zQml0bWFwJiBmcmVlQXRvbXMgPSBmcmVlTGlzdCA/IGZyZWVMaXN0LT5hdG9tc0Jp
dG1hcCgpIDogbG9jYWxGcmVlQXRvbXM7DQoNCiAgICBBdG9tc0JpdG1hcDo6V29yZCogZnJlZSA9
IGZyZWVBdG9tcy53b3JkcygpOw0KICAgIEF0b21zQml0bWFwOjpXb3JkKiBtYXJrcyA9IGZvb3Rl
ci5tX21hcmtzLndvcmRzKCk7DQogICAgQXRvbXNCaXRtYXA6OldvcmQqIG5ld2x5QWxsb2NhdGVk
ID0gZm9vdGVyLm1fbmV3bHlBbGxvY2F0ZWQud29yZHMoKTsNCg0KICAgIHVuc2lnbmVkIHJvdW5k
ZWRVcEVuZEF0b21zID0gcm91bmRVcFRvTXVsdGlwbGVPZjxBdG9tc0JpdG1hcDo6Yml0c0luV29y
ZD4obV9lbmRBdG9tKTsNCiAgICB1bnNpZ25lZCBlbmRXb3JkSW5kZXggPSByb3VuZGVkVXBFbmRB
dG9tcyAvIEF0b21zQml0bWFwOjpiaXRzSW5Xb3JkOw0KICAgICgodm9pZCkwKTsNCg0KICAgIGlm
IChmcmVlTGlzdCkNCiAgICAgICAgZnJlZUF0b21zLmNsZWFyQWxsKCk7DQogICAgZnJlZUF0b21z
LnNldEVhY2hOdGhCaXQobV9hdG9tc1BlckNlbGwsIDAsIG1fZW5kQXRvbSk7DQoNCiAgICBpZiAo
ZW1wdHlNb2RlID09IE5vdEVtcHR5KSB7DQogICAgICAgIGlmIChtYXJrc01vZGUgPT0gTWFya3NO
b3RTdGFsZSAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQpIHsNCiAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbmRXb3JkSW5kZXg7ICsraSkNCiAg
ICAgICAgICAgICAgICBmcmVlW2ldIF49IG1hcmtzW2ldIHwgbmV3bHlBbGxvY2F0ZWRbaV07DQoN
CiAgICAgICAgfSBlbHNlIGlmIChtYXJrc01vZGUgPT0gTWFya3NOb3RTdGFsZSkgew0KICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVuZFdvcmRJbmRleDsgKytpKQ0KICAgICAg
ICAgICAgICAgIGZyZWVbaV0gXj0gbWFya3NbaV07DQoNCiAgICAgICAgfSBlbHNlIGlmIChuZXds
eUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQpIHsNCiAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBlbmRXb3JkSW5kZXg7ICsraSkNCiAgICAgICAgICAgICAgICBm
cmVlW2ldIF49IG5ld2x5QWxsb2NhdGVkW2ldOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgDQoN
CiAgICANCiAgICANCiAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCAmJiBuZXds
eUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQpDQogICAgICAgIGZvb3Rlci5tX25l
d2x5QWxsb2NhdGVkVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsNCg0KICAgIGlm
IChzcGFjZSgpLT5pc01hcmtpbmcoKSkNCiAgICAgICAgZm9vdGVyLm1fbG9jay51bmxvY2soKTsN
Cg0KICAgIA0KICAgIHVuc2lnbmVkIGRlYWRDZWxsQ291bnQgPSAwOw0KICAgIGZyZWVBdG9tcy5m
b3JFYWNoU2V0Qml0KFsmXSAoc2l6ZV90IGkpIHsNCiAgICAgICAgSGVhcENlbGwqIGNlbGwgPSBy
ZWludGVycHJldF9jYXN0PEhlYXBDZWxsKj4oYXRvbUF0KGkpKTsNCg0KICAgICAgICBpZiAoZGVz
dHJ1Y3Rpb25Nb2RlICE9IEJsb2NrSGFzTm9EZXN0cnVjdG9ycykNCiAgICAgICAgICAgIGRlc3Ry
b3koY2VsbCk7DQoNCiAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QpIHsN
CiAgICAgICAgICAgIGlmIChzY3JpYmJsZU1vZGUgPT0gU2NyaWJibGUpDQogICAgICAgICAgICAg
ICAgc2NyaWJibGUoY2VsbCwgY2VsbFNpemUpOw0KICAgICAgICB9DQogICAgICAgICsrZGVhZENl
bGxDb3VudDsNCiAgICB9KTsNCg0KICAgIHVuc2lnbmVkIG51bWJlck9mQ2VsbHNJbkJsb2NrID0g
KHBheWxvYWRFbmQgLSBwYXlsb2FkQmVnaW4pIC8gY2VsbFNpemU7DQogICAgYm9vbCBpc0VtcHR5
ID0gKGRlYWRDZWxsQ291bnQgPT0gbnVtYmVyT2ZDZWxsc0luQmxvY2spOw0KICAgIGlmIChzd2Vl
cE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KSB7DQogICAgICAgIGZyZWVMaXN0LT5pbml0aWFsaXpl
QXRvbXNCaXRtYXAodGhpcywgZnJlZUF0b21zLCBkZWFkQ2VsbENvdW50ICogY2VsbFNpemUpOw0K
ICAgICAgICBzZXRJc0ZyZWVMaXN0ZWQoKTsNCiAgICB9IGVsc2UgaWYgKGlzRW1wdHkpDQogICAg
ICAgIG1fZGlyZWN0b3J5LT5zZXRJc0VtcHR5KE5vTG9ja2luZ05lY2Vzc2FyeSwgdGhpcywgdHJ1
ZSk7DQogICAgaWYgKGZhbHNlKQ0KICAgICAgICBkYXRhTG9nKCJTbG93bHkgc3dlcHQgYmxvY2sg
IiwgUmF3UG9pbnRlcigmYmxvY2spLCAiIHdpdGggY2VsbCBzaXplICIsIGNlbGxTaXplLCAiIGFu
ZCBhdHRyaWJ1dGVzICIsIG1fYXR0cmlidXRlcywgIjogIiwgcG9pbnRlckR1bXAoZnJlZUxpc3Qp
LCAiXG4iKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDU1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBcXE1hcmtlZEJsb2NrSW5saW5lcy5oIg0KfQ0KDQp0
ZW1wbGF0ZTx0eXBlbmFtZSBEZXN0cm95RnVuYz4NCnZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
ZmluaXNoU3dlZXBLbm93aW5nSGVhcENlbGxUeXBlKEZyZWVMaXN0KiBmcmVlTGlzdCwgY29uc3Qg
RGVzdHJveUZ1bmMmIGRlc3Ryb3lGdW5jKQ0Kew0KICAgIFN3ZWVwTW9kZSBzd2VlcE1vZGUgPSBm
cmVlTGlzdCA/IFN3ZWVwVG9GcmVlTGlzdCA6IFN3ZWVwT25seTsNCiAgICBTd2VlcERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUgPSB0aGlzLT5zd2VlcERlc3RydWN0aW9uTW9kZSgpOw0K
ICAgIEVtcHR5TW9kZSBlbXB0eU1vZGUgPSB0aGlzLT5lbXB0eU1vZGUoKTsNCiAgICBTY3JpYmJs
ZU1vZGUgc2NyaWJibGVNb2RlID0gdGhpcy0+c2NyaWJibGVNb2RlKCk7DQogICAgTmV3bHlBbGxv
Y2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSA9IHRoaXMtPm5ld2x5QWxsb2NhdGVkTW9kZSgp
Ow0KICAgIE1hcmtzTW9kZSBtYXJrc01vZGUgPSB0aGlzLT5tYXJrc01vZGUoKTsNCg0KICAgIGF1
dG8gdHJ5U3BlY2lhbGl6ZWQgPSBbJl0gKCkgLT4gYm9vbCB7DQogICAgICAgIGlmIChzY3JpYmJs
ZU1vZGUgIT0gRG9udFNjcmliYmxlKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAg
ICBpZiAobmV3bHlBbGxvY2F0ZWRNb2RlICE9IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQpDQog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIGlmIChkZXN0cnVjdGlvbk1vZGUgIT0g
QmxvY2tIYXNEZXN0cnVjdG9ycykNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAg
DQogICAgICAgIHN3aXRjaCAoZW1wdHlNb2RlKSB7DQogICAgICAgIGNhc2UgSXNFbXB0eToNCiAg
ICAgICAgICAgIHN3aXRjaCAoc3dlZXBNb2RlKSB7DQogICAgICAgICAgICBjYXNlIFN3ZWVwT25s
eToNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcmtzTW9kZSkgew0KICAgICAgICAgICAgICAg
IGNhc2UgTWFya3NOb3RTdGFsZToNCiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2Vl
cDx0cnVlLCBJc0VtcHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3Jp
YmJsZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NOb3RTdGFsZT4oZnJlZUxpc3Qs
IElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBE
b2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7DQog
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIGNhc2UgTWFy
a3NTdGFsZToNCiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBJc0Vt
cHR5LCBTd2VlcE9ubHksIEJsb2NrSGFzRGVzdHJ1Y3RvcnMsIERvbnRTY3JpYmJsZSwgRG9lc05v
dEhhdmVOZXdseUFsbG9jYXRlZCwgTWFya3NTdGFsZT4oZnJlZUxpc3QsIElzRW1wdHksIFN3ZWVw
T25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5
QWxsb2NhdGVkLCBNYXJrc1N0YWxlLCBkZXN0cm95RnVuYyk7DQogICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBkbyB7IFdU
Rjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdU
RkNyYXNoV2l0aEluZm8oNDg3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxoZWFwXFxNYXJrZWRCbG9ja0lubGluZXMuaCIsICBfX0ZVTkNUSU9OX18g
ICwgMTgzICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIGNhc2UgU3dlZXBUb0ZyZWVM
aXN0Og0KICAgICAgICAgICAgICAgIHN3aXRjaCAobWFya3NNb2RlKSB7DQogICAgICAgICAgICAg
ICAgY2FzZSBNYXJrc05vdFN0YWxlOg0KICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3
ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywg
RG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihm
cmVlTGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBE
b250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzTm90U3RhbGUsIGRl
c3Ryb3lGdW5jKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAg
ICAgICAgY2FzZSBNYXJrc1N0YWxlOg0KICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZFN3
ZWVwPHRydWUsIElzRW1wdHksIFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywg
RG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc1N0YWxlPihmcmVl
TGlzdCwgSXNFbXB0eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250
U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGRlc3Ryb3lG
dW5jKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50
ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQ5OCwg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxc
TWFya2VkQmxvY2tJbmxpbmVzLmgiLCAgX19GVU5DVElPTl9fICAsIDE4NCApOyB9IHdoaWxlIChm
YWxzZSk7DQogICAgICAgIGNhc2UgTm90RW1wdHk6DQogICAgICAgICAgICBzd2l0Y2ggKHN3ZWVw
TW9kZSkgew0KICAgICAgICAgICAgY2FzZSBTd2VlcE9ubHk6DQogICAgICAgICAgICAgICAgc3dp
dGNoIChtYXJrc01vZGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlIE1hcmtzTm90U3RhbGU6DQog
ICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHksIFN3ZWVw
T25seSwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5
QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHksIFN3ZWVwT25seSwg
QmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2Nh
dGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7DQogICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIGNhc2UgTWFya3NTdGFsZToNCiAgICAgICAgICAg
ICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9j
a0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQs
IE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwgU3dlZXBPbmx5LCBCbG9ja0hhc0Rlc3Ry
dWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3Rh
bGUsIGRlc3Ryb3lGdW5jKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2lu
dGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg1MTAs
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGhlYXBc
XE1hcmtlZEJsb2NrSW5saW5lcy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAxODUgKTsgfSB3aGlsZSAo
ZmFsc2UpOw0KICAgICAgICAgICAgY2FzZSBTd2VlcFRvRnJlZUxpc3Q6DQogICAgICAgICAgICAg
ICAgc3dpdGNoIChtYXJrc01vZGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlIE1hcmtzTm90U3Rh
bGU6DQogICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkU3dlZXA8dHJ1ZSwgTm90RW1wdHks
IFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlPihmcmVlTGlzdCwgTm90RW1wdHks
IFN3ZWVwVG9GcmVlTGlzdCwgQmxvY2tIYXNEZXN0cnVjdG9ycywgRG9udFNjcmliYmxlLCBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkLCBNYXJrc05vdFN0YWxlLCBkZXN0cm95RnVuYyk7DQogICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIGNhc2UgTWFya3NT
dGFsZToNCiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbGl6ZWRTd2VlcDx0cnVlLCBOb3RFbXB0
eSwgU3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGU+KGZyZWVMaXN0LCBOb3RFbXB0eSwg
U3dlZXBUb0ZyZWVMaXN0LCBCbG9ja0hhc0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIERvZXNO
b3RIYXZlTmV3bHlBbGxvY2F0ZWQsIE1hcmtzU3RhbGUsIGRlc3Ryb3lGdW5jKTsNCiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfTsNCiAg
ICANCiAgICBpZiAodHJ5U3BlY2lhbGl6ZWQoKSkNCiAgICAgICAgcmV0dXJuOw0KICAgIA0KICAg
IA0KICAgIHNwZWNpYWxpemVkU3dlZXA8ZmFsc2UsIElzRW1wdHksIFN3ZWVwT25seSwgQmxvY2tI
YXNOb0Rlc3RydWN0b3JzLCBEb250U2NyaWJibGUsIEhhc05ld2x5QWxsb2NhdGVkLCBNYXJrc1N0
YWxlPihmcmVlTGlzdCwgZW1wdHlNb2RlLCBzd2VlcE1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIG1hcmtzTW9kZSwgZGVzdHJveUZ1bmMpOw0K
fQ0KDQppbmxpbmUgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBEZXN0cnVjdGlvbk1vZGUgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBEZXN0cnVjdGlvbk1vZGUoKQ0Kew0KICAgIGlmIChtX2F0
dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbikgew0KICAgICAgICBpZiAo
c3BhY2UoKS0+aXNNYXJraW5nKCkpDQogICAgICAgICAgICByZXR1cm4gQmxvY2tIYXNEZXN0cnVj
dG9yc0FuZENvbGxlY3RvcklzUnVubmluZzsNCiAgICAgICAgcmV0dXJuIEJsb2NrSGFzRGVzdHJ1
Y3RvcnM7DQogICAgfQ0KICAgIHJldHVybiBCbG9ja0hhc05vRGVzdHJ1Y3RvcnM7DQp9DQoNCmlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkoKQ0Kew0KICAgIHJldHVybiBt
X2RpcmVjdG9yeS0+aXNFbXB0eShOb0xvY2tpbmdOZWNlc3NhcnksIHRoaXMpOw0KfQ0KDQppbmxp
bmUgTWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmVt
cHR5TW9kZSgpDQp7DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgcmV0dXJuIGlz
RW1wdHkoKSA/IElzRW1wdHkgOiBOb3RFbXB0eTsNCn0NCg0KaW5saW5lIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OlNjcmliYmxlTW9kZSBNYXJrZWRCbG9jazo6SGFuZGxlOjpzY3JpYmJsZU1vZGUoKQ0K
ew0KICAgIHJldHVybiBzY3JpYmJsZUZyZWVDZWxscygpID8gU2NyaWJibGUgOiBEb250U2NyaWJi
bGU7DQp9DQoNCmlubGluZSBNYXJrZWRCbG9jazo6SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUg
TWFya2VkQmxvY2s6OkhhbmRsZTo6bmV3bHlBbGxvY2F0ZWRNb2RlKCkNCnsNCiAgICByZXR1cm4g
YmxvY2soKS5oYXNBbnlOZXdseUFsbG9jYXRlZCgpID8gSGFzTmV3bHlBbGxvY2F0ZWQgOiBEb2Vz
Tm90SGF2ZU5ld2x5QWxsb2NhdGVkOw0KfQ0KDQppbmxpbmUgTWFya2VkQmxvY2s6OkhhbmRsZTo6
TWFya3NNb2RlIE1hcmtlZEJsb2NrOjpIYW5kbGU6Om1hcmtzTW9kZSgpDQp7DQogICAgSGVhcFZl
cnNpb24gbWFya2luZ1ZlcnNpb24gPSBzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpOw0KICAgIGJv
b2wgbWFya3NBcmVVc2VmdWwgPSAhYmxvY2soKS5hcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9u
KTsNCiAgICBpZiAoc3BhY2UoKS0+aXNNYXJraW5nKCkpDQogICAgICAgIG1hcmtzQXJlVXNlZnVs
IHw9IGJsb2NrKCkubWFya3NDb252ZXlMaXZlbmVzc0R1cmluZ01hcmtpbmcobWFya2luZ1ZlcnNp
b24pOw0KICAgIHJldHVybiBtYXJrc0FyZVVzZWZ1bCA/IE1hcmtzTm90U3RhbGUgOiBNYXJrc1N0
YWxlOw0KfQ0KDQppbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXRJc0ZyZWVMaXN0
ZWQoKQ0Kew0KICAgIG1fZGlyZWN0b3J5LT5zZXRJc0VtcHR5KE5vTG9ja2luZ05lY2Vzc2FyeSwg
dGhpcywgZmFsc2UpOw0KICAgIG1faXNGcmVlTGlzdGVkID0gdHJ1ZTsNCn0NCg0KdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+DQppbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQ0Kew0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAg
IA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2F0
dHJpYnV0ZXMuY2VsbEtpbmQ7DQogICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VuZEF0b207
IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsNCiAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVy
cHJldF9jYXN0PEhlYXBDZWxsKj4oJm1fYmxvY2stPmF0b21zKClbaV0pOw0KICAgICAgICBpZiAo
IWlzTGl2ZShjZWxsKSkNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KDQogICAgICAgIGlmIChmdW5j
dG9yKGksIGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkNCiAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7DQogICAgfQ0KICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOw0KfQ0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4NCmlu
bGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmRsZTo6Zm9yRWFjaERlYWRDZWxs
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpDQp7DQogICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1f
YXR0cmlidXRlcy5jZWxsS2luZDsNCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW5kQXRv
bTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgew0KICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SGVhcENlbGwqPigmbV9ibG9jay0+YXRvbXMoKVtpXSk7DQogICAgICAgIGlm
IChpc0xpdmUoY2VsbCkpDQogICAgICAgICAgICBjb250aW51ZTsNCg0KICAgICAgICBpZiAoZnVu
Y3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpDQogICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOw0KICAgIH0NCiAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpDb250aW51ZTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+DQppbmxp
bmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hNYXJrZWRDZWxs
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpDQp7DQogICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1f
YXR0cmlidXRlcy5jZWxsS2luZDsNCiAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9j
aygpOw0KICAgIGJvb2wgYXJlTWFya3NTdGFsZSA9IGJsb2NrLmFyZU1hcmtzU3RhbGUoKTsNCiAg
ICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsNCiAgICBpZiAoYXJlTWFya3NTdGFsZSkNCiAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7DQogICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsNCiAgICAgICAgaWYgKCFibG9j
ay5mb290ZXIoKS5tX21hcmtzLmdldChpKSkNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KDQogICAg
ICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdDxIZWFwQ2VsbCo+KCZtX2Jsb2Nr
LT5hdG9tcygpW2ldKTsNCg0KICAgICAgICBpZiAoZnVuY3RvcihpLCBjZWxsLCBraW5kKSA9PSBJ
dGVyYXRpb25TdGF0dXM6OkRvbmUpDQogICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpEb25lOw0KICAgIH0NCiAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsNCn0N
Cg0KfSANCg0KI2xpbmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCINCg0KDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcd2FzbVxc
V2FzbUNhbGxlZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDI1NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFx3YXNtXFxXYXNtQ2FsbGVlLmgiDQojbGluZSA0NCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFx3YXNtXFxXYXNtQ2FsbGVlUmVnaXN0cnkuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5l
IDgwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHdh
c21cXFdhc21DYWxsZWVSZWdpc3RyeS5oIg0KI2xpbmUgNDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcd2FzbVxcV2FzbUNhcGFiaWxpdGllcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQpuYW1lc3BhY2UgV2FzbSB7DQoNCmlubGluZSBib29sIGlzU3VwcG9ydGVkKCkNCnsN
CiAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKTsNCn0NCg0KfSB9IA0KI2xpbmUg
NDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL0ZpbGVQcmludFN0cmVhbS5oIg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21h
IG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIEZpbGVQcmludFN0cmVhbSBm
aW5hbCA6IHB1YmxpYyBQcmludFN0cmVhbSB7DQpwdWJsaWM6DQogICAgZW51bSBBZG9wdGlvbk1v
ZGUgew0KICAgICAgICBBZG9wdCwNCiAgICAgICAgQm9ycm93DQogICAgfTsNCiAgICANCiAgICBG
aWxlUHJpbnRTdHJlYW0oRklMRSosIEFkb3B0aW9uTW9kZSA9IEFkb3B0KTsNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgfkZpbGVQcmludFN0cmVhbSgpIGZpbmFsOw0KICAgIA0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVhbT4g
b3Blbihjb25zdCBjaGFyKiBmaWxlbmFtZSwgY29uc3QgY2hhciogbW9kZSk7DQogICAgDQogICAg
RklMRSogZmlsZSgpIHsgcmV0dXJuIG1fZmlsZTsgfQ0KICAgIA0KICAgIHZvaWQgdnByaW50Zihj
b25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIGZpbmFsIDsNCiAgICB2b2lkIGZsdXNoKCkgZmlu
YWw7DQoNCnByaXZhdGU6DQogICAgRklMRSogbV9maWxlOw0KICAgIEFkb3B0aW9uTW9kZSBtX2Fk
b3B0aW9uTW9kZTsNCn07DQoNCn0gDQoNCnVzaW5nIFdURjo6RmlsZVByaW50U3RyZWFtOw0KI2xp
bmUgNDcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9TdGFja1RyYWNlLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9h
bWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvU3lzdGVtRnJlZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVz
cGFjZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPg0Kc3RydWN0IFN5c3RlbUZyZWUgew0K
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1
ZSwgIiIpOw0KDQogICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0DQogICAgew0K
ICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUq
Pihwb2ludGVyKSk7DQogICAgfQ0KfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4NCnN0cnVjdCBT
eXN0ZW1GcmVlPFRbXT4gew0KICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOw0KDQogICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50
ZXIpIGNvbnN0DQogICAgew0KICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7DQogICAgfQ0KfTsNCg0KfSANCiNsaW5lIDMx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9TdGFja1RyYWNlLmgiDQoNCm5hbWVzcGFjZSBXVEYgew0KDQpjbGFzcyBQcmludFN0cmVhbTsN
Cg0KY2xhc3MgU3RhY2tUcmFjZSB7DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0
dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTog
dXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsN
CnB1YmxpYzoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTdGFja1RyYWNlPiBjYXB0dXJlU3RhY2tUcmFjZShpbnQgbWF4RnJhbWVzLCBpbnQgZnJhbWVz
VG9Ta2lwID0gMCk7DQoNCiAgICANCiAgICBTdGFja1RyYWNlKHZvaWQqKiBzdGFjaywgaW50IHNp
emUpDQogICAgICAgIDogbV9zaXplKHNpemUpDQogICAgICAgICwgbV9jYXBhY2l0eSgwKQ0KICAg
ICAgICAsIG1fYm9ycm93ZWRTdGFjayhzdGFjaykNCiAgICB7IH0NCg0KICAgIGludCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9DQogICAgdm9pZCogY29uc3QgKiBzdGFjaygpIGNvbnN0
DQogICAgew0KICAgICAgICBpZiAoIW1fY2FwYWNpdHkpDQogICAgICAgICAgICByZXR1cm4gbV9i
b3Jyb3dlZFN0YWNrOw0KICAgICAgICByZXR1cm4gbV9zdGFjazsNCiAgICB9DQoNCiAgICBjbGFz
cyBEZW1hbmdsZUVudHJ5IHsNCiAgICAgICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwg
dm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsg
cmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVf
dCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QsIE5vdE51bGxUYWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0
dXJuIGxvY2F0aW9uOyB9IHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTog
dXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsN
CiAgICBwdWJsaWM6DQogICAgICAgIGZyaWVuZCBjbGFzcyBTdGFja1RyYWNlOw0KICAgICAgICBj
b25zdCBjaGFyKiBtYW5nbGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFuZ2xlZE5hbWU7IH0N
CiAgICAgICAgY29uc3QgY2hhciogZGVtYW5nbGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVt
YW5nbGVkTmFtZS5nZXQoKTsgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAgRGVtYW5nbGVFbnRy
eShjb25zdCBjaGFyKiBtYW5nbGVkTmFtZSwgY29uc3QgY2hhciogZGVtYW5nbGVkTmFtZSkNCiAg
ICAgICAgICAgIDogbV9tYW5nbGVkTmFtZShtYW5nbGVkTmFtZSkNCiAgICAgICAgICAgICwgbV9k
ZW1hbmdsZWROYW1lKGRlbWFuZ2xlZE5hbWUpDQogICAgICAgIHsgfQ0KDQogICAgICAgIGNvbnN0
IGNoYXIqIG1fbWFuZ2xlZE5hbWUgeyBudWxscHRyIH07DQogICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxjb25zdCBjaGFyW10sIFN5c3RlbUZyZWU8Y29uc3QgY2hhcltdPj4gbV9kZW1hbmdsZWROYW1l
Ow0KICAgIH07DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGljIE9wdGlvbmFsPERl
bWFuZ2xlRW50cnk+IGRlbWFuZ2xlKHZvaWQqKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBpbmRlbnRTdHJpbmcgPSBudWxs
cHRyKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBpbnN0YW5j
ZVNpemUoaW50IGNhcGFjaXR5KTsNCg0KICAgIFN0YWNrVHJhY2UoKQ0KICAgICAgICA6IG1fc2l6
ZSgwKQ0KICAgIHsgfQ0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgdW5pb24gew0KICAg
ICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgaW50IG1fc2l6ZTsNCiAgICAgICAgICAgIGludCBt
X2NhcGFjaXR5Ow0KICAgICAgICB9Ow0KICAgICAgICBzdHJ1Y3Qgew0KICAgICAgICAgICAgdm9p
ZCogbV9za2lwcGVkRnJhbWUwOw0KICAgICAgICAgICAgdm9pZCogbV9za2lwcGVkRnJhbWUxOw0K
ICAgICAgICB9Ow0KICAgIH07DQogICAgdW5pb24gew0KICAgICAgICB2b2lkKiogbV9ib3Jyb3dl
ZFN0YWNrOw0KICAgICAgICB2b2lkKiBtX3N0YWNrWzFdOw0KICAgIH07DQp9Ow0KDQp9IA0KDQp1
c2luZyBXVEY6OlN0YWNrVHJhY2U7DQojbGluZSA1MCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpzdGF0aWMgZG91YmxlIHNOdW1Ub3RhbFN0YWNrVHJhY2Vz
ID0gMDsNCnN0YXRpYyBkb3VibGUgc051bVRvdGFsV2Fsa3MgPSAwOw0Kc3RhdGljIGRvdWJsZSBz
TnVtRmFpbGVkV2Fsa3MgPSAwOw0Kc3RhdGljIGNvbnN0IHVpbnQzMl90IHNOdW1XYWxrUmVwb3J0
aW5nRnJlcXVlbmN5ID0gNTA7DQpzdGF0aWMgY29uc3QgZG91YmxlIHNXYWxrRXJyb3JQZXJjZW50
YWdlID0gLjA1Ow0Kc3RhdGljIGNvbnN0ZXhwciBib29sIHNSZXBvcnRTdGF0c09ubHlXaGVuVGhl
eXJlQWJvdmVUaHJlc2hvbGQgPSBmYWxzZTsNCnN0YXRpYyBjb25zdGV4cHIgYm9vbCBzUmVwb3J0
U3RhdHMgPSBmYWxzZTsNCg0KdXNpbmcgRnJhbWVUeXBlID0gU2FtcGxpbmdQcm9maWxlcjo6RnJh
bWVUeXBlOw0KdXNpbmcgVW5wcm9jZXNzZWRTdGFja0ZyYW1lID0gU2FtcGxpbmdQcm9maWxlcjo6
VW5wcm9jZXNzZWRTdGFja0ZyYW1lOw0KDQpfX2ZvcmNlaW5saW5lIHN0YXRpYyB2b2lkIHJlcG9y
dFN0YXRzKCkNCnsNCiAgICBpZiAoc1JlcG9ydFN0YXRzICYmIHNOdW1Ub3RhbFdhbGtzICYmIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihzTnVtVG90YWxXYWxrcykgJSBzTnVtV2Fsa1JlcG9ydGluZ0Zy
ZXF1ZW5jeSA9PSAwKSB7DQogICAgICAgIGlmICghc1JlcG9ydFN0YXRzT25seVdoZW5UaGV5cmVB
Ym92ZVRocmVzaG9sZCB8fCAoc051bUZhaWxlZFdhbGtzIC8gc051bVRvdGFsV2Fsa3MgPiBzV2Fs
a0Vycm9yUGVyY2VudGFnZSkpIHsNCiAgICAgICAgICAgIGRhdGFMb2dGKCJOdW0gdG90YWwgd2Fs
a3M6ICVsbHUuIEZhaWxlZCB3YWxrcyBwZXJjZW50OiAlbGZcbiIsDQogICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzTnVtVG90YWxXYWxrcyksIHNOdW1GYWls
ZWRXYWxrcyAvIHNOdW1Ub3RhbFdhbGtzKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KY2xhc3Mg
RnJhbWVXYWxrZXIgew0KcHVibGljOg0KICAgIEZyYW1lV2Fsa2VyKFZNJiB2bSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEFic3RyYWN0TG9ja2VyJiBjb2RlQmxvY2tTZXRMb2NrZXIsIGNv
bnN0IEFic3RyYWN0TG9ja2VyJiBtYWNoaW5lVGhyZWFkc0xvY2tlciwgY29uc3QgT3B0aW9uYWw8
TG9ja0hvbGRlcj4mIHdhc21DYWxsZWVMb2NrZXIpDQogICAgICAgIDogbV92bSh2bSkNCiAgICAg
ICAgLCBtX2NhbGxGcmFtZShjYWxsRnJhbWUpDQogICAgICAgICwgbV9lbnRyeUZyYW1lKHZtLnRv
cEVudHJ5RnJhbWUpDQogICAgICAgICwgbV9jb2RlQmxvY2tTZXRMb2NrZXIoY29kZUJsb2NrU2V0
TG9ja2VyKQ0KICAgICAgICAsIG1fbWFjaGluZVRocmVhZHNMb2NrZXIobWFjaGluZVRocmVhZHNM
b2NrZXIpDQogICAgICAgICwgbV93YXNtQ2FsbGVlTG9ja2VyKHdhc21DYWxsZWVMb2NrZXIpDQog
ICAgew0KICAgIH0NCg0KICAgIA0KICAgIHNpemVfdCB3YWxrKFZlY3RvcjxVbnByb2Nlc3NlZFN0
YWNrRnJhbWU+JiBzdGFja1RyYWNlLCBib29sJiBkaWRSdW5PdXRPZlNwYWNlKQ0KICAgIHsNCiAg
ICAgICAgaWYgKHNSZXBvcnRTdGF0cykNCiAgICAgICAgICAgIHNOdW1Ub3RhbFdhbGtzKys7DQog
ICAgICAgIHJlc2V0QXRNYWNoaW5lRnJhbWUoKTsNCiAgICAgICAgc2l6ZV90IG1heFN0YWNrVHJh
Y2VTaXplID0gc3RhY2tUcmFjZS5zaXplKCk7DQogICAgICAgIHdoaWxlICghaXNBdFRvcCgpICYm
ICFtX2JhaWxpbmdPdXQgJiYgbV9kZXB0aCA8IG1heFN0YWNrVHJhY2VTaXplKSB7DQogICAgICAg
ICAgICByZWNvcmRKSVRGcmFtZShzdGFja1RyYWNlKTsNCiAgICAgICAgICAgIGFkdmFuY2VUb1Bh
cmVudEZyYW1lKCk7DQogICAgICAgICAgICByZXNldEF0TWFjaGluZUZyYW1lKCk7DQogICAgICAg
IH0NCiAgICAgICAgZGlkUnVuT3V0T2ZTcGFjZSA9IG1fZGVwdGggPj0gbWF4U3RhY2tUcmFjZVNp
emUgJiYgIWlzQXRUb3AoKTsNCiAgICAgICAgcmVwb3J0U3RhdHMoKTsNCiAgICAgICAgcmV0dXJu
IG1fZGVwdGg7DQogICAgfQ0KDQogICAgYm9vbCB3YXNWYWxpZFdhbGsoKSBjb25zdA0KICAgIHsN
CiAgICAgICAgcmV0dXJuICFtX2JhaWxpbmdPdXQ7DQogICAgfQ0KDQpwcm90ZWN0ZWQ6DQoNCiAg
ICANCiAgICB2b2lkIHJlY29yZEpJVEZyYW1lKFZlY3RvcjxVbnByb2Nlc3NlZFN0YWNrRnJhbWU+
JiBzdGFja1RyYWNlKQ0KICAgIHsNCiAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
Ow0KICAgICAgICBDYWxsZWVCaXRzIHVuc2FmZUNhbGxlZSA9IG1fY2FsbEZyYW1lLT51bnNhZmVD
YWxsZWUoKTsNCiAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NhbGxGcmFtZS0+dW5z
YWZlQ29kZUJsb2NrKCk7DQogICAgICAgIGlmICh1bnNhZmVDYWxsZWUuaXNXYXNtKCkpDQogICAg
ICAgICAgICBjb2RlQmxvY2sgPSBudWxscHRyOw0KICAgICAgICBpZiAoY29kZUJsb2NrKSB7DQog
ICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICBjYWxsU2l0ZUluZGV4ID0gbV9jYWxs
RnJhbWUtPnVuc2FmZUNhbGxTaXRlSW5kZXgoKTsNCiAgICAgICAgfQ0KICAgICAgICBzdGFja1Ry
YWNlW21fZGVwdGhdID0gVW5wcm9jZXNzZWRTdGFja0ZyYW1lKGNvZGVCbG9jaywgdW5zYWZlQ2Fs
bGVlLCBjYWxsU2l0ZUluZGV4KTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTM1ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAiDQogICAgICAgIG1fZGVwdGgrKzsNCiAgICB9DQoNCiAgICANCiAg
ICB2b2lkIGFkdmFuY2VUb1BhcmVudEZyYW1lKCkNCiAgICB7DQogICAgICAgIG1fY2FsbEZyYW1l
ID0gbV9jYWxsRnJhbWUtPnVuc2FmZUNhbGxlckZyYW1lKG1fZW50cnlGcmFtZSk7DQogICAgfQ0K
DQogICAgYm9vbCBpc0F0VG9wKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAhbV9jYWxs
RnJhbWU7DQogICAgfQ0KDQogICAgDQogICAgdm9pZCByZXNldEF0TWFjaGluZUZyYW1lKCkNCiAg
ICB7DQogICAgICAgIGlmIChpc0F0VG9wKCkpDQogICAgICAgICAgICByZXR1cm47DQoNCiAgICAg
ICAgaWYgKCFpc1ZhbGlkRnJhbWVQb2ludGVyKG1fY2FsbEZyYW1lKSkgew0KICAgICAgICAgICAg
DQogICAgICAgICAgICBtX2JhaWxpbmdPdXQgPSB0cnVlOw0KICAgICAgICAgICAgaWYgKHNSZXBv
cnRTdGF0cykNCiAgICAgICAgICAgICAgICBzTnVtRmFpbGVkV2Fsa3MrKzsNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9j
YWxsRnJhbWUtPnVuc2FmZUNvZGVCbG9jaygpOw0KICAgICAgICBpZiAoIWNvZGVCbG9jayB8fCBt
X2NhbGxGcmFtZS0+dW5zYWZlQ2FsbGVlKCkuaXNXYXNtKCkpDQogICAgICAgICAgICByZXR1cm47
DQoNCiAgICAgICAgaWYgKCFpc1ZhbGlkQ29kZUJsb2NrKGNvZGVCbG9jaykpIHsNCiAgICAgICAg
ICAgIG1fYmFpbGluZ091dCA9IHRydWU7DQogICAgICAgICAgICBpZiAoc1JlcG9ydFN0YXRzKQ0K
ICAgICAgICAgICAgICAgIHNOdW1GYWlsZWRXYWxrcysrOw0KICAgICAgICAgICAgcmV0dXJuOw0K
ICAgICAgICB9DQogICAgfQ0KDQogICAgYm9vbCBpc1ZhbGlkRnJhbWVQb2ludGVyKHZvaWQqIGNh
bGxGcmFtZSkNCiAgICB7DQogICAgICAgIHVpbnQ4X3QqIGZwQ2FzdCA9IGJpdHdpc2VfY2FzdDx1
aW50OF90Kj4oY2FsbEZyYW1lKTsNCiAgICAgICAgZm9yIChhdXRvJiB0aHJlYWQgOiBtX3ZtLmhl
YXAubWFjaGluZVRocmVhZHMoKS50aHJlYWRzKG1fbWFjaGluZVRocmVhZHNMb2NrZXIpKSB7DQog
ICAgICAgICAgICB1aW50OF90KiBzdGFja0Jhc2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4odGhy
ZWFkLT5zdGFjaygpLm9yaWdpbigpKTsNCiAgICAgICAgICAgIHVpbnQ4X3QqIHN0YWNrTGltaXQg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4odGhyZWFkLT5zdGFjaygpLmVuZCgpKTsNCiAgICAgICAg
ICAgIGRvIHsgaWYgKCghKHN0YWNrQmFzZSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRl
clR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMTgxLCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwIiwgIF9fRlVOQ1RJT05fXyAgLCAxODYgKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgICAgIGRvIHsgaWYgKCghKHN0YWNrTGltaXQp
KSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JD
cmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE4MiwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCIsICBf
X0ZVTkNUSU9OX18gICwgMTg3ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAg
ICAgICAgICBkbyB7IGlmICgoIShzdGFja0xpbWl0IDw9IHN0YWNrQmFzZSkpKSBkbyB7IFdURjo6
aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNy
YXNoV2l0aEluZm8oMTgzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIiwgIF9fRlVOQ1RJT05fXyAg
LCAxODggKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgICAgIGlmIChm
cENhc3QgPCBzdGFja0Jhc2UgJiYgZnBDYXN0ID49IHN0YWNrTGltaXQpDQogICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0N
Cg0KICAgIGJvb2wgaXNWYWxpZENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykNCiAgICB7
DQogICAgICAgIGlmICghY29kZUJsb2NrKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
ICAgICBib29sIHJlc3VsdCA9IG1fdm0uaGVhcC5jb2RlQmxvY2tTZXQoKS5jb250YWlucyhtX2Nv
ZGVCbG9ja1NldExvY2tlciwgY29kZUJsb2NrKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAg
ICB9DQoNCiAgICBWTSYgbV92bTsNCiAgICBDYWxsRnJhbWUqIG1fY2FsbEZyYW1lOw0KICAgIEVu
dHJ5RnJhbWUqIG1fZW50cnlGcmFtZTsNCiAgICBjb25zdCBBYnN0cmFjdExvY2tlciYgbV9jb2Rl
QmxvY2tTZXRMb2NrZXI7DQogICAgY29uc3QgQWJzdHJhY3RMb2NrZXImIG1fbWFjaGluZVRocmVh
ZHNMb2NrZXI7DQogICAgY29uc3QgT3B0aW9uYWw8TG9ja0hvbGRlcj4mIG1fd2FzbUNhbGxlZUxv
Y2tlcjsNCiAgICBib29sIG1fYmFpbGluZ091dCB7IGZhbHNlIH07DQogICAgc2l6ZV90IG1fZGVw
dGggeyAwIH07DQp9Ow0KDQpjbGFzcyBDRnJhbWVXYWxrZXIgOiBwdWJsaWMgRnJhbWVXYWxrZXIg
ew0KcHVibGljOg0KICAgIHR5cGVkZWYgRnJhbWVXYWxrZXIgQmFzZTsNCg0KICAgIENGcmFtZVdh
bGtlcihWTSYgdm0sIHZvaWQqIG1hY2hpbmVGcmFtZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEFic3RyYWN0TG9ja2VyJiBjb2RlQmxvY2tTZXRMb2NrZXIsIGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBtYWNoaW5lVGhyZWFkc0xvY2tlciwgY29uc3QgT3B0aW9uYWw8TG9ja0hvbGRlcj4mIHdh
c21DYWxsZWVMb2NrZXIpDQogICAgICAgIDogQmFzZSh2bSwgY2FsbEZyYW1lLCBjb2RlQmxvY2tT
ZXRMb2NrZXIsIG1hY2hpbmVUaHJlYWRzTG9ja2VyLCB3YXNtQ2FsbGVlTG9ja2VyKQ0KICAgICAg
ICAsIG1fbWFjaGluZUZyYW1lKG1hY2hpbmVGcmFtZSkNCiAgICB7DQogICAgfQ0KDQogICAgc2l6
ZV90IHdhbGsoVmVjdG9yPFVucHJvY2Vzc2VkU3RhY2tGcmFtZT4mIHN0YWNrVHJhY2UsIGJvb2wm
IGRpZFJ1bk91dE9mU3BhY2UpDQogICAgew0KICAgICAgICBpZiAoc1JlcG9ydFN0YXRzKQ0KICAg
ICAgICAgICAgc051bVRvdGFsV2Fsa3MrKzsNCiAgICAgICAgcmVzZXRBdE1hY2hpbmVGcmFtZSgp
Ow0KICAgICAgICBzaXplX3QgbWF4U3RhY2tUcmFjZVNpemUgPSBzdGFja1RyYWNlLnNpemUoKTsN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpZiAoIWlzQXRUb3AoKSAmJiAhbV9iYWlsaW5n
T3V0ICYmIG1fbWFjaGluZUZyYW1lID09IG1fY2FsbEZyYW1lKSB7DQogICAgICAgICAgICByZWNv
cmRKSVRGcmFtZShzdGFja1RyYWNlKTsNCiAgICAgICAgICAgIEJhc2U6OmFkdmFuY2VUb1BhcmVu
dEZyYW1lKCk7DQogICAgICAgICAgICByZXNldEF0TWFjaGluZUZyYW1lKCk7DQogICAgICAgIH0N
Cg0KICAgICAgICB3aGlsZSAoIWlzQXRUb3AoKSAmJiAhbV9iYWlsaW5nT3V0ICYmIG1fZGVwdGgg
PCBtYXhTdGFja1RyYWNlU2l6ZSkgew0KICAgICAgICAgICAgaWYgKG1fbWFjaGluZUZyYW1lID49
IG1fY2FsbEZyYW1lKSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgbV9iYWls
aW5nT3V0ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCg0K
ICAgICAgICAgICAgaWYgKGlzQ0ZyYW1lKCkpIHsNCiAgICAgICAgICAgICAgICBkbyB7IGlmICgo
ISghTExJbnQ6OmlzTExJbnRQQyhmcmFtZSgpLT5jYWxsZXJGcmFtZSkpKSkgZG8geyBXVEY6Omlz
SW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFz
aFdpdGhJbmZvKDI0MCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCIsICBfX0ZVTkNUSU9OX18gICwg
MTg5ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgICAgICAgICAgc3Rh
Y2tUcmFjZVttX2RlcHRoXSA9IFVucHJvY2Vzc2VkU3RhY2tGcmFtZShmcmFtZSgpLT5yZXR1cm5Q
Qyk7DQogICAgICAgICAgICAgICAgbV9kZXB0aCsrOw0KICAgICAgICAgICAgfSBlbHNlDQogICAg
ICAgICAgICAgICAgcmVjb3JkSklURnJhbWUoc3RhY2tUcmFjZSk7DQogICAgICAgICAgICBhZHZh
bmNlVG9QYXJlbnRGcmFtZSgpOw0KICAgICAgICAgICAgcmVzZXRBdE1hY2hpbmVGcmFtZSgpOw0K
ICAgICAgICB9DQogICAgICAgIGRpZFJ1bk91dE9mU3BhY2UgPSBtX2RlcHRoID49IG1heFN0YWNr
VHJhY2VTaXplICYmICFpc0F0VG9wKCk7DQogICAgICAgIHJlcG9ydFN0YXRzKCk7DQogICAgICAg
IHJldHVybiBtX2RlcHRoOw0KICAgIH0NCg0KcHJpdmF0ZToNCg0KICAgIGJvb2wgaXNDRnJhbWUo
KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGZyYW1lKCktPmNhbGxlckZyYW1lICE9IG1fY2FsbEZy
YW1lOw0KICAgIH0NCg0KICAgIHZvaWQgYWR2YW5jZVRvUGFyZW50RnJhbWUoKQ0KICAgIHsNCiAg
ICAgICAgaWYgKCFpc0NGcmFtZSgpKQ0KICAgICAgICAgICAgQmFzZTo6YWR2YW5jZVRvUGFyZW50
RnJhbWUoKTsNCiAgICAgICAgbV9tYWNoaW5lRnJhbWUgPSBmcmFtZSgpLT5jYWxsZXJGcmFtZTsN
CiAgICB9DQoNCiAgICB2b2lkIHJlc2V0QXRNYWNoaW5lRnJhbWUoKQ0KICAgIHsNCiAgICAgICAg
aWYgKCFpc1ZhbGlkRnJhbWVQb2ludGVyKG1fbWFjaGluZUZyYW1lKSkgew0KICAgICAgICAgICAg
DQogICAgICAgICAgICBtX2JhaWxpbmdPdXQgPSB0cnVlOw0KICAgICAgICAgICAgaWYgKHNSZXBv
cnRTdGF0cykNCiAgICAgICAgICAgICAgICBzTnVtRmFpbGVkV2Fsa3MrKzsNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBCYXNlOjpyZXNldEF0TWFjaGluZUZyYW1lKCk7
DQogICAgfQ0KDQogICAgQ2FsbGVyRnJhbWVBbmRQQyogZnJhbWUoKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbGVyRnJhbWVBbmRQQyo+KG1fbWFjaGluZUZyYW1l
KTsNCiAgICB9DQoNCiAgICB2b2lkKiBtX21hY2hpbmVGcmFtZTsNCn07DQoNClNhbXBsaW5nUHJv
ZmlsZXI6OlNhbXBsaW5nUHJvZmlsZXIoVk0mIHZtLCBSZWY8U3RvcHdhdGNoPiYmIHN0b3B3YXRj
aCkNCiAgICA6IG1faXNQYXVzZWQoZmFsc2UpDQogICAgLCBtX2lzU2h1dERvd24oZmFsc2UpDQog
ICAgLCBtX3ZtKHZtKQ0KICAgICwgbV93ZWFrUmFuZG9tKCkNCiAgICAsIG1fc3RvcHdhdGNoKHN0
ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4oc3RvcHdhdGNoKSkNCiAgICAsIG1fdGlt
aW5nSW50ZXJ2YWwoU2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyhPcHRpb25zOjpzYW1wbGVJbnRl
cnZhbCgpKSkNCnsNCiAgICBpZiAoc1JlcG9ydFN0YXRzKSB7DQogICAgICAgIHNOdW1Ub3RhbFdh
bGtzID0gMDsNCiAgICAgICAgc051bUZhaWxlZFdhbGtzID0gMDsNCiAgICB9DQoNCiAgICBtX2N1
cnJlbnRGcmFtZXMuZ3JvdygyNTYpOw0KICAgIHZtLmhlYXAub2JqZWN0U3BhY2UoKS5lbmFibGVQ
cmVjaXNlQWxsb2NhdGlvblRyYWNraW5nKCk7DQp9DQoNClNhbXBsaW5nUHJvZmlsZXI6On5TYW1w
bGluZ1Byb2ZpbGVyKCkNCnsNCn0NCg0Kdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpjcmVhdGVUaHJl
YWRJZk5lY2Vzc2FyeShjb25zdCBBYnN0cmFjdExvY2tlciYpDQp7DQogICAgKCh2b2lkKTApOw0K
DQogICAgaWYgKG1fdGhyZWFkKQ0KICAgICAgICByZXR1cm47DQoNCiAgICBSZWZQdHI8U2FtcGxp
bmdQcm9maWxlcj4gcHJvZmlsZXIgPSB0aGlzOw0KICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoImpzYy5zYW1wbGluZy1wcm9maWxlci50aHJlYWQiLCBbcHJvZmlsZXJdIHsNCiAgICAgICAg
cHJvZmlsZXItPnRpbWVyTG9vcCgpOw0KICAgIH0pOw0KfQ0KDQp2b2lkIFNhbXBsaW5nUHJvZmls
ZXI6OnRpbWVyTG9vcCgpDQp7DQogICAgd2hpbGUgKHRydWUpIHsNCiAgICAgICAgU2Vjb25kcyBz
dGFja1RyYWNlUHJvY2Vzc2luZ1RpbWUgPSAwX3M7DQogICAgICAgIHsNCiAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7DQogICAgICAgICAgICBpZiAoKG1faXNTaHV0RG93bikp
DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KDQogICAgICAgICAgICBpZiAoIW1faXNQYXVzZWQg
JiYgbV9qc2NFeGVjdXRpb25UaHJlYWQpDQogICAgICAgICAgICAgICAgdGFrZVNhbXBsZShsb2Nr
ZXIsIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGltZSk7DQoNCiAgICAgICAgICAgIG1fbGFzdFRpbWUg
PSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIA0KICAg
ICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBkb3VibGUgcmFuZG9tU2lnbmVkTnVt
YmVyID0gKG1fd2Vha1JhbmRvbS5nZXQoKSAqIDIuMCkgLSAxLjA7IA0KICAgICAgICBTZWNvbmRz
IHJhbmRvbUZsdWN0dWF0aW9uID0gbV90aW1pbmdJbnRlcnZhbCAqIDAuMiAqIHJhbmRvbVNpZ25l
ZE51bWJlcjsNCiAgICAgICAgV1RGOjpzbGVlcChtX3RpbWluZ0ludGVydmFsIC0gc3RkOjptaW4o
bV90aW1pbmdJbnRlcnZhbCwgc3RhY2tUcmFjZVByb2Nlc3NpbmdUaW1lKSArIHJhbmRvbUZsdWN0
dWF0aW9uKTsNCiAgICB9DQp9DQoNCnZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dGFrZVNhbXBsZShj
b25zdCBBYnN0cmFjdExvY2tlciYsIFNlY29uZHMmIHN0YWNrVHJhY2VQcm9jZXNzaW5nVGltZSkN
CnsNCiAgICAoKHZvaWQpMCk7DQogICAgaWYgKG1fdm0uZW50cnlTY29wZSkgew0KICAgICAgICBT
ZWNvbmRzIG5vd1RpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsNCg0KICAgICAgICBh
dXRvIG1hY2hpbmVUaHJlYWRzTG9ja2VyID0gaG9sZExvY2sobV92bS5oZWFwLm1hY2hpbmVUaHJl
YWRzKCkuZ2V0TG9jaygpKTsNCiAgICAgICAgYXV0byBjb2RlQmxvY2tTZXRMb2NrZXIgPSBob2xk
TG9jayhtX3ZtLmhlYXAuY29kZUJsb2NrU2V0KCkuZ2V0TG9jaygpKTsNCiAgICAgICAgYXV0byBl
eGVjdXRhYmxlQWxsb2NhdG9yTG9ja2VyID0gaG9sZExvY2soRXhlY3V0YWJsZUFsbG9jYXRvcjo6
c2luZ2xldG9uKCkuZ2V0TG9jaygpKTsNCiAgICAgICAgT3B0aW9uYWw8TG9ja0hvbGRlcj4gd2Fz
bUNhbGxlZXNMb2NrZXI7DQoNCg0KDQojbGluZSAzNjAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCIN
Cg0KICAgICAgICBhdXRvIGRpZFN1c3BlbmQgPSBtX2pzY0V4ZWN1dGlvblRocmVhZC0+c3VzcGVu
ZCgpOw0KICAgICAgICBpZiAoZGlkU3VzcGVuZCkgew0KICAgICAgICAgICAgDQogICAgICAgICAg
ICANCiAgICAgICAgICAgIHZvaWQqIG1hY2hpbmVGcmFtZTsNCiAgICAgICAgICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lOw0KICAgICAgICAgICAgdm9pZCogbWFjaGluZVBDOw0KICAgICAgICAgICAg
Ym9vbCB0b3BGcmFtZUlzTExJbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHZvaWQqIGxsaW50UEM7
DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUGxhdGZvcm1SZWdpc3RlcnMgcmVnaXN0
ZXJzOw0KICAgICAgICAgICAgICAgIG1fanNjRXhlY3V0aW9uVGhyZWFkLT5nZXRSZWdpc3RlcnMo
cmVnaXN0ZXJzKTsNCiAgICAgICAgICAgICAgICBtYWNoaW5lRnJhbWUgPSBNYWNoaW5lQ29udGV4
dDo6ZnJhbWVQb2ludGVyKHJlZ2lzdGVycyk7DQogICAgICAgICAgICAgICAgY2FsbEZyYW1lID0g
c3RhdGljX2Nhc3Q8Q2FsbEZyYW1lKj4obWFjaGluZUZyYW1lKTsNCiAgICAgICAgICAgICAgICBh
dXRvIGluc3RydWN0aW9uUG9pbnRlciA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50
ZXIocmVnaXN0ZXJzKTsNCiAgICAgICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb25Qb2ludGVyKQ0K
ICAgICAgICAgICAgICAgICAgICBtYWNoaW5lUEMgPSBpbnN0cnVjdGlvblBvaW50ZXItPnVudGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsNCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAg
ICAgICAgICAgIG1hY2hpbmVQQyA9IG51bGxwdHI7DQogICAgICAgICAgICAgICAgbGxpbnRQQyA9
IHJlbW92ZUNvZGVQdHJUYWcoTWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVy
KHJlZ2lzdGVycykpOw0KICAgICAgICAgICAgICAgIGFzc2VydElzTm90VGFnZ2VkKG1hY2hpbmVQ
Qyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICAg
ICAgaWYgKEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmdsZXRvbigpLmlzVmFsaWRFeGVjdXRhYmxl
TWVtb3J5KGV4ZWN1dGFibGVBbGxvY2F0b3JMb2NrZXIsIG1hY2hpbmVQQykpIHsNCiAgICAgICAg
ICAgICAgICBpZiAobV92bS5pc0V4ZWN1dGluZ0luUmVnRXhwSklUKSB7DQogICAgICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgY2FsbEZy
YW1lID0gbV92bS50b3BDYWxsRnJhbWU7IA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0gZWxzZSBpZiAoTExJbnQ6OmlzTExJbnRQQyhtYWNoaW5lUEMpKSB7DQogICAgICAgICAgICAg
ICAgdG9wRnJhbWVJc0xMSW50ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgY2FsbEZyYW1lID0gbV92bS50b3BDYWxsRnJhbWU7DQog
ICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHNpemVfdCB3YWxrU2l6ZTsNCiAgICAgICAgICAg
IGJvb2wgd2FzVmFsaWRXYWxrOw0KICAgICAgICAgICAgYm9vbCBkaWRSdW5PdXRPZlZlY3RvclNw
YWNlOw0KICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnNhbXBsZUNDb2RlKCkpIHsNCiAgICAgICAg
ICAgICAgICBDRnJhbWVXYWxrZXIgd2Fsa2VyKG1fdm0sIG1hY2hpbmVGcmFtZSwgY2FsbEZyYW1l
LCBjb2RlQmxvY2tTZXRMb2NrZXIsIG1hY2hpbmVUaHJlYWRzTG9ja2VyLCB3YXNtQ2FsbGVlc0xv
Y2tlcik7DQogICAgICAgICAgICAgICAgd2Fsa1NpemUgPSB3YWxrZXIud2FsayhtX2N1cnJlbnRG
cmFtZXMsIGRpZFJ1bk91dE9mVmVjdG9yU3BhY2UpOw0KICAgICAgICAgICAgICAgIHdhc1ZhbGlk
V2FsayA9IHdhbGtlci53YXNWYWxpZFdhbGsoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgICAgICAgRnJhbWVXYWxrZXIgd2Fsa2VyKG1fdm0sIGNhbGxGcmFtZSwgY29kZUJsb2Nr
U2V0TG9ja2VyLCBtYWNoaW5lVGhyZWFkc0xvY2tlciwgd2FzbUNhbGxlZXNMb2NrZXIpOw0KICAg
ICAgICAgICAgICAgIHdhbGtTaXplID0gd2Fsa2VyLndhbGsobV9jdXJyZW50RnJhbWVzLCBkaWRS
dW5PdXRPZlZlY3RvclNwYWNlKTsNCiAgICAgICAgICAgICAgICB3YXNWYWxpZFdhbGsgPSB3YWxr
ZXIud2FzVmFsaWRXYWxrKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIG1fanNjRXhl
Y3V0aW9uVGhyZWFkLT5yZXN1bWUoKTsNCg0KICAgICAgICAgICAgYXV0byBzdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsNCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICANCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgaWYgKHdhc1ZhbGlkV2FsayAmJiB3YWxrU2l6ZSkgew0KICAg
ICAgICAgICAgICAgIGlmIChzUmVwb3J0U3RhdHMpDQogICAgICAgICAgICAgICAgICAgIHNOdW1U
b3RhbFN0YWNrVHJhY2VzKys7DQogICAgICAgICAgICAgICAgVmVjdG9yPFVucHJvY2Vzc2VkU3Rh
Y2tGcmFtZT4gc3RhY2tUcmFjZTsNCiAgICAgICAgICAgICAgICBzdGFja1RyYWNlLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkod2Fsa1NpemUpOw0KICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd2Fsa1NpemU7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICBVbnByb2Nlc3Nl
ZFN0YWNrRnJhbWUgZnJhbWUgPSBtX2N1cnJlbnRGcmFtZXNbaV07DQogICAgICAgICAgICAgICAg
ICAgIHN0YWNrVHJhY2UudW5jaGVja2VkQXBwZW5kKGZyYW1lKTsNCiAgICAgICAgICAgICAgICB9
DQoNCiAgICAgICAgICAgICAgICBtX3VucHJvY2Vzc2VkU3RhY2tUcmFjZXMuYXBwZW5kKFVucHJv
Y2Vzc2VkU3RhY2tUcmFjZSB7IG5vd1RpbWUsIG1hY2hpbmVQQywgdG9wRnJhbWVJc0xMSW50LCBs
bGludFBDLCBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHN0YWNrVHJhY2UpIH0p
Ow0KDQogICAgICAgICAgICAgICAgaWYgKGRpZFJ1bk91dE9mVmVjdG9yU3BhY2UpDQogICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lcy5ncm93KG1fY3VycmVudEZyYW1lcy5zaXplKCkg
KiAxLjI1KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgYXV0byBlbmRUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7DQogICAgICAgICAgICBzdGFja1RyYWNlUHJvY2Vzc2luZ1RpbWUg
PSBlbmRUaW1lIC0gc3RhcnRUaW1lOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpzdGF0aWMgX19m
b3JjZWlubGluZSBCeXRlY29kZUluZGV4IHRyeUdldEJ5dGVjb2RlSW5kZXgodW5zaWduZWQgbGxp
bnRQQywgQ29kZUJsb2NrKiBjb2RlQmxvY2spDQp7DQoNCiAgICBkbyB7IGlmICgoISghY29kZUJs
b2NrLT5oYXNDb2RlT3JpZ2lucygpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlw
ZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg0NDYsICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAiLCAgX19GVU5DVElPTl9fICAsIDE5MCApOyB9IHdoaWxlIChmYWxz
ZSk7IH0gd2hpbGUgKDApOw0KI2xpbmUgNDQ4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiDQoNCiAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGxsaW50UEM7DQogICAgaWYgKGJ5dGVjb2RlT2Zm
c2V0IDwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCkpDQogICAgICAgIHJldHVybiBCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KTsNCiAgICByZXR1cm4gQnl0ZWNvZGVJbmRleCgpOw0K
fQ0KDQp2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMo
Y29uc3QgQWJzdHJhY3RMb2NrZXImKQ0Kew0KICAgIA0KICAgIGRvIHsgaWYgKCghKG1fbG9jay5p
c0xvY2tlZCgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxl
ckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg0NTgsICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAiLCAgX19GVU5DVElPTl9fICAsIDE5MSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUg
KDApOw0KDQogICAgVGlueUJsb29tRmlsdGVyIGZpbHRlciA9IG1fdm0uaGVhcC5vYmplY3RTcGFj
ZSgpLmJsb2NrcygpLmZpbHRlcigpOw0KDQogICAgZm9yIChVbnByb2Nlc3NlZFN0YWNrVHJhY2Um
IHVucHJvY2Vzc2VkU3RhY2tUcmFjZSA6IG1fdW5wcm9jZXNzZWRTdGFja1RyYWNlcykgew0KICAg
ICAgICBtX3N0YWNrVHJhY2VzLmFwcGVuZChTdGFja1RyYWNlKCkpOw0KICAgICAgICBTdGFja1Ry
YWNlJiBzdGFja1RyYWNlID0gbV9zdGFja1RyYWNlcy5sYXN0KCk7DQogICAgICAgIHN0YWNrVHJh
Y2UudGltZXN0YW1wID0gdW5wcm9jZXNzZWRTdGFja1RyYWNlLnRpbWVzdGFtcDsNCg0KICAgICAg
ICBhdXRvIHBvcHVsYXRlQ29kZUxvY2F0aW9uID0gW10gKENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiYgbG9j
YXRpb24pIHsNCiAgICAgICAgICAgIGlmIChieXRlY29kZUluZGV4Lm9mZnNldCgpIDwgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnNTaXplKCkpIHsNCiAgICAgICAgICAgICAgICBpbnQgZGl2b3Q7DQog
ICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0Ow0KICAgICAgICAgICAgICAgIGludCBlbmRP
ZmZzZXQ7DQogICAgICAgICAgICAgICAgY29kZUJsb2NrLT5leHByZXNzaW9uUmFuZ2VGb3JCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlSW5kZXgsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LA0K
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5O
dW1iZXIpOw0KICAgICAgICAgICAgICAgIGxvY2F0aW9uLmJ5dGVjb2RlSW5kZXggPSBieXRlY29k
ZUluZGV4Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmNvbGxlY3RT
YW1wbGluZ1Byb2ZpbGVyRGF0YUZvckpTQ1NoZWxsKCkpIHsNCiAgICAgICAgICAgICAgICBsb2Nh
dGlvbi5jb2RlQmxvY2tIYXNoID0gY29kZUJsb2NrLT5oYXNoKCk7DQogICAgICAgICAgICAgICAg
bG9jYXRpb24uaml0VHlwZSA9IGNvZGVCbG9jay0+aml0VHlwZSgpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9Ow0KDQogICAgICAgIGF1dG8gYXBwZW5kQ29kZUJsb2NrID0gWyZdIChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KSB7DQogICAgICAgICAg
ICBzdGFja1RyYWNlLmZyYW1lcy5hcHBlbmQoU3RhY2tGcmFtZShjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpKSk7DQogICAgICAgICAgICBtX2xpdmVDZWxsUG9pbnRlcnMuYWRkKGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCkpOw0KICAgICAgICAgICAgcG9wdWxhdGVDb2RlTG9jYXRpb24o
Y29kZUJsb2NrLCBieXRlY29kZUluZGV4LCBzdGFja1RyYWNlLmZyYW1lcy5sYXN0KCkuc2VtYW50
aWNMb2NhdGlvbik7DQogICAgICAgIH07DQoNCiAgICAgICAgYXV0byBhcHBlbmRFbXB0eUZyYW1l
ID0gWyZdIHsNCiAgICAgICAgICAgIHN0YWNrVHJhY2UuZnJhbWVzLmFwcGVuZChTdGFja0ZyYW1l
KCkpOw0KICAgICAgICB9Ow0KDQogICAgICAgIGF1dG8gc3RvcmVDYWxsZWVJbnRvTGFzdEZyYW1l
ID0gWyZdIChVbnByb2Nlc3NlZFN0YWNrRnJhbWUmIHVucHJvY2Vzc2VkU3RhY2tGcmFtZSkgew0K
ICAgICAgICAgICAgDQogICAgICAgICAgICBDYWxsZWVCaXRzIGNhbGxlZUJpdHMgPSB1bnByb2Nl
c3NlZFN0YWNrRnJhbWUudW52ZXJpZmllZENhbGxlZTsNCiAgICAgICAgICAgIFN0YWNrRnJhbWUm
IHN0YWNrRnJhbWUgPSBzdGFja1RyYWNlLmZyYW1lcy5sYXN0KCk7DQogICAgICAgICAgICBib29s
IGFscmVhZHlIYXNFeGVjdXRhYmxlID0gISFzdGFja0ZyYW1lLmV4ZWN1dGFibGU7DQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDUwNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIg0KDQogICAgICAgICAgICBK
U1ZhbHVlIGNhbGxlZSA9IGNhbGxlZUJpdHMuYXNDZWxsKCk7DQogICAgICAgICAgICBpZiAoIUhl
YXBVdGlsOjppc1ZhbHVlR0NPYmplY3QobV92bS5oZWFwLCBmaWx0ZXIsIGNhbGxlZSkpIHsNCiAg
ICAgICAgICAgICAgICBpZiAoIWFscmVhZHlIYXNFeGVjdXRhYmxlKQ0KICAgICAgICAgICAgICAg
ICAgICBzdGFja0ZyYW1lLmZyYW1lVHlwZSA9IEZyYW1lVHlwZTo6VW5rbm93bjsNCiAgICAgICAg
ICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEpTQ2VsbCogY2Fs
bGVlQ2VsbCA9IGNhbGxlZS5hc0NlbGwoKTsNCiAgICAgICAgICAgIGF1dG8gc2V0RmFsbGJhY2tG
cmFtZVR5cGUgPSBbJl0gew0KICAgICAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAg
ICAgICBGcmFtZVR5cGUgcmVzdWx0ID0gRnJhbWVUeXBlOjpVbmtub3duOw0KICAgICAgICAgICAg
ICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YShtX3ZtLCBjYWxsZWVDZWxsKTsNCiAgICAg
ICAgICAgICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlKQ0K
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGcmFtZVR5cGU6Okhvc3Q7DQoNCiAgICAgICAg
ICAgICAgICBzdGFja0ZyYW1lLmZyYW1lVHlwZSA9IHJlc3VsdDsNCiAgICAgICAgICAgIH07DQoN
CiAgICAgICAgICAgIGF1dG8gYWRkQ2FsbGVlID0gWyZdIChKU09iamVjdCogY2FsbGVlKSB7DQog
ICAgICAgICAgICAgICAgc3RhY2tGcmFtZS5jYWxsZWUgPSBjYWxsZWU7DQogICAgICAgICAgICAg
ICAgbV9saXZlQ2VsbFBvaW50ZXJzLmFkZChjYWxsZWUpOw0KICAgICAgICAgICAgfTsNCg0KICAg
ICAgICAgICAgaWYgKGNhbGxlZUNlbGwtPnR5cGUoKSAhPSBKU0Z1bmN0aW9uVHlwZSkgew0KICAg
ICAgICAgICAgICAgIGlmIChKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KGNhbGxlZUNlbGwtPnZtKCksIGNhbGxlZUNlbGwpKQ0KICAgICAgICAgICAgICAgICAgICBh
ZGRDYWxsZWUob2JqZWN0KTsNCg0KICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeUhhc0V4ZWN1
dGFibGUpDQogICAgICAgICAgICAgICAgICAgIHNldEZhbGxiYWNrRnJhbWVUeXBlKCk7DQoNCiAg
ICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGFkZENh
bGxlZShqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUNlbGwpKTsNCg0KICAgICAgICAgICAgaWYg
KGFscmVhZHlIYXNFeGVjdXRhYmxlKQ0KICAgICAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAg
ICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNh
bGxlZUNlbGwpLT5leGVjdXRhYmxlKCk7DQogICAgICAgICAgICBpZiAoIWV4ZWN1dGFibGUpIHsN
CiAgICAgICAgICAgICAgICBzZXRGYWxsYmFja0ZyYW1lVHlwZSgpOw0KICAgICAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgZG8geyBpZiAoKCEoSGVhcFV0
aWw6OmlzUG9pbnRlckdDT2JqZWN0SlNDZWxsKG1fdm0uaGVhcCwgZmlsdGVyLCBleGVjdXRhYmxl
KSkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZv
ckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNTUwLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIiwg
IF9fRlVOQ1RJT05fXyAgLCAxOTIgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAg
ICAgICAgICAgIHN0YWNrRnJhbWUuZnJhbWVUeXBlID0gRnJhbWVUeXBlOjpFeGVjdXRhYmxlOw0K
ICAgICAgICAgICAgc3RhY2tGcmFtZS5leGVjdXRhYmxlID0gZXhlY3V0YWJsZTsNCiAgICAgICAg
ICAgIG1fbGl2ZUNlbGxQb2ludGVycy5hZGQoZXhlY3V0YWJsZSk7DQogICAgICAgIH07DQoNCiAg
ICAgICAgYXV0byBhcHBlbmRDb2RlT3JpZ2luID0gWyZdIChDb2RlQmxvY2sqIG1hY2hpbmVDb2Rl
QmxvY2ssIENvZGVPcmlnaW4gb3JpZ2luKSB7DQogICAgICAgICAgICBzaXplX3Qgc3RhcnRJbmRl
eCA9IHN0YWNrVHJhY2UuZnJhbWVzLnNpemUoKTsgDQoNCiAgICAgICAgICAgIENvZGVPcmlnaW4g
bWFjaGluZU9yaWdpbjsNCiAgICAgICAgICAgIG9yaWdpbi53YWxrVXBJbmxpbmVTdGFjayhbJl0g
KGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pIHsNCiAgICAgICAgICAgICAgICBtYWNoaW5l
T3JpZ2luID0gY29kZU9yaWdpbjsNCiAgICAgICAgICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJh
bWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOw0KICAgICAgICAgICAgICAgIGFwcGVu
ZENvZGVCbG9jayhpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLmdldCgpIDogbWFjaGluZUNvZGVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KCkpOw0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgIGlmIChPcHRpb25zOjpjb2xsZWN0
U2FtcGxpbmdQcm9maWxlckRhdGFGb3JKU0NTaGVsbCgpKSB7DQogICAgICAgICAgICAgICAgZG8g
eyBpZiAoKCEobWFjaGluZU9yaWdpbi5pc1NldCgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg1
NjcsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiLCAgX19GVU5DVElPTl9fICAsIDE5MyApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICAgICAgICAgIGRvIHsgaWYgKCghKCFt
YWNoaW5lT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg1
NjgsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiLCAgX19GVU5DVElPTl9fICAsIDE5NCApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KDQogICAgICAgICAgICAgICAgU3RhY2tGcmFtZTo6
Q29kZUxvY2F0aW9uIG1hY2hpbmVMb2NhdGlvbiA9IHN0YWNrVHJhY2UuZnJhbWVzLmxhc3QoKS5z
ZW1hbnRpY0xvY2F0aW9uOw0KDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgZG8geyBp
ZiAoKCEoc3RhY2tUcmFjZS5mcmFtZXMuc2l6ZSgpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg1
NzYsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiLCAgX19GVU5DVElPTl9fICAsIDE5NSApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICAgICAgICAgIG1fbGl2ZUNlbGxQb2lu
dGVycy5hZGQobWFjaGluZUNvZGVCbG9jayk7DQogICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IHN0YXJ0SW5kZXg7IGkgPCBzdGFja1RyYWNlLmZyYW1lcy5zaXplKCkgLSAxOyBpKyspDQog
ICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UuZnJhbWVzW2ldLm1hY2hpbmVMb2NhdGlvbiA9
IHN0ZDo6bWFrZV9wYWlyKG1hY2hpbmVMb2NhdGlvbiwgbWFjaGluZUNvZGVCbG9jayk7DQogICAg
ICAgICAgICB9DQogICAgICAgIH07DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBzaXpl
X3Qgc3RhcnRJbmRleCA9IDA7DQogICAgICAgIGlmICh1bnByb2Nlc3NlZFN0YWNrVHJhY2UuZnJh
bWVzLnNpemUoKSAmJiAhIXVucHJvY2Vzc2VkU3RhY2tUcmFjZS5mcmFtZXNbMF0udmVyaWZpZWRD
b2RlQmxvY2spIHsNCiAgICAgICAgICAgIENvZGVCbG9jayogdG9wQ29kZUJsb2NrID0gdW5wcm9j
ZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXS52ZXJpZmllZENvZGVCbG9jazsNCiAgICAgICAgICAg
IGlmICh1bnByb2Nlc3NlZFN0YWNrVHJhY2UudG9wRnJhbWVJc0xMSW50KSB7DQogICAgICAgICAg
ICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleCgwKTsNCiAgICAgICAg
ICAgICAgICBpZiAodG9wQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0
ZXJUaHVuayB8fCB0b3BDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJ
VCkgew0KICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBiaXRzID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5sbGlu
dFBDKSk7DQogICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlSW5kZXggPSB0cnlHZXRCeXRlY29k
ZUluZGV4KGJpdHMsIHRvcENvZGVCbG9jayk7DQoNCiAgICAgICAgICAgICAgICAgICAgKHZvaWQp
Ynl0ZWNvZGVJbmRleDsgDQoNCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ29kZUJsb2NrKHRv
cENvZGVCbG9jaywgYnl0ZWNvZGVJbmRleCk7DQogICAgICAgICAgICAgICAgICAgIHN0b3JlQ2Fs
bGVlSW50b0xhc3RGcmFtZSh1bnByb2Nlc3NlZFN0YWNrVHJhY2UuZnJhbWVzWzBdKTsNCiAgICAg
ICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IDE7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxDb2RlT3JpZ2lu
PiBjb2RlT3JpZ2luID0gdG9wQ29kZUJsb2NrLT5maW5kUEModW5wcm9jZXNzZWRTdGFja1RyYWNl
LnRvcFBDKSkgew0KICAgICAgICAgICAgICAgICAgICBhcHBlbmRDb2RlT3JpZ2luKHRvcENvZGVC
bG9jaywgKmNvZGVPcmlnaW4pOw0KICAgICAgICAgICAgICAgICAgICBzdG9yZUNhbGxlZUludG9M
YXN0RnJhbWUodW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1swXSk7DQogICAgICAgICAgICAg
ICAgICAgIHN0YXJ0SW5kZXggPSAxOw0KICAgICAgICAgICAgICAgIH0NCiNsaW5lIDYxNCAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuY3BwIg0KICAgICAgICAgICAgICAgICh2b2lkKWFwcGVuZENvZGVPcmln
aW47DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmb3IgKHNpemVfdCBpID0g
c3RhcnRJbmRleDsgaSA8IHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5mcmFtZXMuc2l6ZSgpOyBpKysp
IHsNCiAgICAgICAgICAgIFVucHJvY2Vzc2VkU3RhY2tGcmFtZSYgdW5wcm9jZXNzZWRTdGFja0Zy
YW1lID0gdW5wcm9jZXNzZWRTdGFja1RyYWNlLmZyYW1lc1tpXTsNCiAgICAgICAgICAgIGlmIChD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHVucHJvY2Vzc2VkU3RhY2tGcmFtZS52ZXJpZmllZENvZGVC
bG9jaykgew0KICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHVu
cHJvY2Vzc2VkU3RhY2tGcmFtZS5jYWxsU2l0ZUluZGV4Ow0KDQogICAgICAgICAgICAgICAgYXV0
byBhcHBlbmRDb2RlQmxvY2tOb0lubGluaW5nID0gWyZdIHsNCiAgICAgICAgICAgICAgICAgICAg
YXBwZW5kQ29kZUJsb2NrKGNvZGVCbG9jaywgdHJ5R2V0Qnl0ZWNvZGVJbmRleChjYWxsU2l0ZUlu
ZGV4LmJpdHMoKSwgY29kZUJsb2NrKSk7DQogICAgICAgICAgICAgICAgfTsNCg0KDQogICAgICAg
ICAgICAgICAgaWYgKGNvZGVCbG9jay0+aGFzQ29kZU9yaWdpbnMoKSkgew0KICAgICAgICAgICAg
ICAgICAgICBpZiAoY29kZUJsb2NrLT5jYW5HZXRDb2RlT3JpZ2luKGNhbGxTaXRlSW5kZXgpKQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ29kZU9yaWdpbihjb2RlQmxvY2ssIGNvZGVC
bG9jay0+Y29kZU9yaWdpbihjYWxsU2l0ZUluZGV4KSk7DQogICAgICAgICAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENvZGVCbG9jayhjb2RlQmxvY2ssIEJ5
dGVjb2RlSW5kZXgoKSk7DQogICAgICAgICAgICAgICAgfSBlbHNlDQogICAgICAgICAgICAgICAg
ICAgIGFwcGVuZENvZGVCbG9ja05vSW5saW5pbmcoKTsNCg0KDQojbGluZSA2MzggIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGlu
Z1Byb2ZpbGVyLmNwcCINCiAgICAgICAgICAgIH0gZWxzZSBpZiAodW5wcm9jZXNzZWRTdGFja0Zy
YW1lLmNDb2RlUEMpIHsNCiAgICAgICAgICAgICAgICBhcHBlbmRFbXB0eUZyYW1lKCk7DQogICAg
ICAgICAgICAgICAgc3RhY2tUcmFjZS5mcmFtZXMubGFzdCgpLmNDb2RlUEMgPSB1bnByb2Nlc3Nl
ZFN0YWNrRnJhbWUuY0NvZGVQQzsNCiAgICAgICAgICAgICAgICBzdGFja1RyYWNlLmZyYW1lcy5s
YXN0KCkuZnJhbWVUeXBlID0gRnJhbWVUeXBlOjpDOw0KICAgICAgICAgICAgfSBlbHNlDQogICAg
ICAgICAgICAgICAgYXBwZW5kRW1wdHlGcmFtZSgpOw0KDQogICAgICAgICAgICANCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgaWYgKCF1bnByb2Nlc3NlZFN0YWNrRnJhbWUuY0NvZGVQQykNCiAg
ICAgICAgICAgICAgICBzdG9yZUNhbGxlZUludG9MYXN0RnJhbWUodW5wcm9jZXNzZWRTdGFja0Zy
YW1lKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIG1fdW5wcm9jZXNzZWRTdGFja1RyYWNlcy5j
bGVhcigpOw0KfQ0KDQp2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnZpc2l0KFNsb3RWaXNpdG9yJiBz
bG90VmlzaXRvcikNCnsNCiAgICBkbyB7IGlmICgoIShtX2xvY2suaXNMb2NrZWQoKSkpKSBkbyB7
IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7
IFdURkNyYXNoV2l0aEluZm8oNjU3LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIiwgIF9fRlVOQ1RJ
T05fXyAgLCAxOTYgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICBmb3IgKEpT
Q2VsbCogY2VsbCA6IG1fbGl2ZUNlbGxQb2ludGVycykNCiAgICAgICAgc2xvdFZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQoY2VsbCk7DQp9DQoNCnZvaWQgU2FtcGxpbmdQcm9maWxlcjo6c2h1dGRv
d24oKQ0Kew0KICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7DQogICAgbV9pc1NodXREb3du
ID0gdHJ1ZTsNCn0NCg0Kdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpzdGFydCgpDQp7DQogICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsNCiAgICBzdGFydChsb2NrZXIpOw0KfQ0KDQp2b2lkIFNh
bXBsaW5nUHJvZmlsZXI6OnN0YXJ0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpDQp7DQog
ICAgKCh2b2lkKTApOw0KICAgIG1faXNQYXVzZWQgPSBmYWxzZTsNCiAgICBjcmVhdGVUaHJlYWRJ
Zk5lY2Vzc2FyeShsb2NrZXIpOw0KfQ0KDQp2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnBhdXNlKGNv
bnN0IEFic3RyYWN0TG9ja2VyJikNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgbV9pc1BhdXNlZCA9
IHRydWU7DQogICAgcmVwb3J0U3RhdHMoKTsNCn0NCg0Kdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpu
b3RpY2VDdXJyZW50VGhyZWFkQXNKU0NFeGVjdXRpb25UaHJlYWQoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImKQ0Kew0KICAgICgodm9pZCkwKTsNCiAgICBtX2pzY0V4ZWN1dGlvblRocmVhZCA9ICZUaHJl
YWQ6OmN1cnJlbnQoKTsNCn0NCg0Kdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpub3RpY2VDdXJyZW50
VGhyZWFkQXNKU0NFeGVjdXRpb25UaHJlYWQoKQ0Kew0KICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7DQogICAgbm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tl
cik7DQp9DQoNCnZvaWQgU2FtcGxpbmdQcm9maWxlcjo6bm90aWNlSlNMb2NrQWNxdWlzaXRpb24o
KQ0Kew0KICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7DQogICAgbm90aWNlQ3VycmVudFRo
cmVhZEFzSlNDRXhlY3V0aW9uVGhyZWFkKGxvY2tlcik7DQp9DQoNCnZvaWQgU2FtcGxpbmdQcm9m
aWxlcjo6bm90aWNlVk1FbnRyeSgpDQp7DQogICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsN
CiAgICAoKHZvaWQpMCk7DQogICAgbm90aWNlQ3VycmVudFRocmVhZEFzSlNDRXhlY3V0aW9uVGhy
ZWFkKGxvY2tlcik7DQogICAgbV9sYXN0VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgp
Ow0KICAgIGNyZWF0ZVRocmVhZElmTmVjZXNzYXJ5KGxvY2tlcik7DQp9DQoNCnZvaWQgU2FtcGxp
bmdQcm9maWxlcjo6Y2xlYXJEYXRhKGNvbnN0IEFic3RyYWN0TG9ja2VyJikNCnsNCiAgICAoKHZv
aWQpMCk7DQogICAgbV9zdGFja1RyYWNlcy5jbGVhcigpOw0KICAgIG1fbGl2ZUNlbGxQb2ludGVy
cy5jbGVhcigpOw0KICAgIG1fdW5wcm9jZXNzZWRTdGFja1RyYWNlcy5jbGVhcigpOw0KfQ0KDQpT
dHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6bmFtZUZyb21DYWxsZWUoVk0mIHZt
KQ0Kew0KICAgIGlmICghY2FsbGVlKQ0KICAgICAgICByZXR1cm4gU3RyaW5nKCk7DQoNCiAgICBh
dXRvIHNjb3BlID0gSlNDOjpDYXRjaFNjb3BlKCh2bSkpOw0KICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2bSk7DQogICAgYXV0byBnZXRQcm9w
ZXJ0eUlmUHVyZU9wZXJhdGlvbiA9IFsmXSAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIC0+IFN0
cmluZyB7DQogICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGNhbGxlZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsNCiAgICAgICAgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZShpZGVudCk7DQogICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBjYWxsZWUt
PmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7DQogICAg
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7DQogICAgICAgIGlmIChoYXNQcm9wZXJ0eSkg
ew0KICAgICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpKSB7DQogICAgICAgICAgICAgICAgSlNW
YWx1ZSBuYW1lVmFsdWUgPSBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KTsNCiAgICAgICAgICAgICAgICBpZiAoaXNKU1N0cmluZyhuYW1lVmFsdWUpKQ0KICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcobmFtZVZhbHVlKS0+dHJ5R2V0VmFsdWUoKTsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gU3RyaW5nKCk7DQogICAgfTsN
Cg0KICAgIFN0cmluZyBuYW1lID0gZ2V0UHJvcGVydHlJZlB1cmVPcGVyYXRpb24odm0ucHJvcGVy
dHlOYW1lcy0+ZGlzcGxheU5hbWUpOw0KICAgIGlmICghbmFtZS5pc0VtcHR5KCkpDQogICAgICAg
IHJldHVybiBuYW1lOw0KDQogICAgcmV0dXJuIGdldFByb3BlcnR5SWZQdXJlT3BlcmF0aW9uKHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUpOw0KfQ0KDQpTdHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6U3Rh
Y2tGcmFtZTo6ZGlzcGxheU5hbWUoVk0mIHZtKQ0Kew0KICAgIHsNCiAgICAgICAgU3RyaW5nIG5h
bWUgPSBuYW1lRnJvbUNhbGxlZSh2bSk7DQogICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkpDQog
ICAgICAgICAgICByZXR1cm4gbmFtZTsNCiAgICB9DQoNCiAgICBzd2l0Y2ggKGZyYW1lVHlwZSkg
ew0KICAgIGNhc2UgRnJhbWVUeXBlOjpVbmtub3duOg0KICAgIGNhc2UgRnJhbWVUeXBlOjpDOg0K
DQoNCg0KDQoNCg0KDQojbGluZSA3NzEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCINCiAgICAgICAg
cmV0dXJuICIodW5rbm93bikiX3M7DQoNCiAgICBjYXNlIEZyYW1lVHlwZTo6SG9zdDoNCiAgICAg
ICAgcmV0dXJuICIoaG9zdCkiX3M7DQoNCiAgICBjYXNlIEZyYW1lVHlwZTo6V2FzbToNCg0KDQoN
CiNsaW5lIDc4MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIg0KICAgICAgICByZXR1cm4gIih3YXNt
KSJfczsNCg0KICAgIGNhc2UgRnJhbWVUeXBlOjpFeGVjdXRhYmxlOg0KICAgICAgICBpZiAoZXhl
Y3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkNCiAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPm5hbWUoKTsNCg0KICAgICAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNGdW5jdGlvbkV4ZWN1dGFibGUoKSkNCiAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+ZWNtYU5hbWUoKS5z
dHJpbmcoKTsNCiAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzUHJvZ3JhbUV4ZWN1dGFibGUoKSB8
fCBleGVjdXRhYmxlLT5pc0V2YWxFeGVjdXRhYmxlKCkpDQogICAgICAgICAgICByZXR1cm4gIihw
cm9ncmFtKSJfczsNCiAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUoKSkNCiAgICAgICAgICAgIHJldHVybiAiKG1vZHVsZSkiX3M7DQoNCiAgICAgICAgZG8g
eyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgp
OyBXVEZDcmFzaFdpdGhJbmZvKDc5NCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCIsICBfX0ZVTkNU
SU9OX18gICwgMTk3ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgcmV0dXJuIFN0cmluZygp
Ow0KICAgIH0NCiAgICBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGls
ZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oNzk3LCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwIiwgIF9fRlVOQ1RJT05fXyAgLCAxOTggKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJl
dHVybiBTdHJpbmcoKTsNCn0NCg0KU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6
OmRpc3BsYXlOYW1lRm9ySlNPTlRlc3RzKFZNJiB2bSkNCnsNCiAgICB7DQogICAgICAgIFN0cmlu
ZyBuYW1lID0gbmFtZUZyb21DYWxsZWUodm0pOw0KICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgp
KQ0KICAgICAgICAgICAgcmV0dXJuIG5hbWU7DQogICAgfQ0KDQogICAgc3dpdGNoIChmcmFtZVR5
cGUpIHsNCiAgICBjYXNlIEZyYW1lVHlwZTo6VW5rbm93bjoNCiAgICBjYXNlIEZyYW1lVHlwZTo6
QzoNCiAgICAgICAgcmV0dXJuICIodW5rbm93bikiX3M7DQoNCiAgICBjYXNlIEZyYW1lVHlwZTo6
SG9zdDoNCiAgICAgICAgcmV0dXJuICIoaG9zdCkiX3M7DQoNCiAgICBjYXNlIEZyYW1lVHlwZTo6
V2FzbTogew0KDQoNCg0KI2xpbmUgODIyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAiDQogICAgICAg
IHJldHVybiAiKHdhc20pIl9zOw0KICAgIH0NCg0KICAgIGNhc2UgRnJhbWVUeXBlOjpFeGVjdXRh
YmxlOg0KICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkNCiAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPm5h
bWUoKTsNCg0KICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNGdW5jdGlvbkV4ZWN1dGFibGUoKSkg
ew0KICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpLT5lY21hTmFtZSgpLnN0cmluZygpOw0KICAgICAgICAgICAgaWYg
KHJlc3VsdC5pc0VtcHR5KCkpDQogICAgICAgICAgICAgICAgcmV0dXJuICIoYW5vbnltb3VzIGZ1
bmN0aW9uKSJfczsNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICAg
ICAgaWYgKGV4ZWN1dGFibGUtPmlzRXZhbEV4ZWN1dGFibGUoKSkNCiAgICAgICAgICAgIHJldHVy
biAiKGV2YWwpIl9zOw0KICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNQcm9ncmFtRXhlY3V0YWJs
ZSgpKQ0KICAgICAgICAgICAgcmV0dXJuICIocHJvZ3JhbSkiX3M7DQogICAgICAgIGlmIChleGVj
dXRhYmxlLT5pc01vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkpDQogICAgICAgICAgICByZXR1cm4g
Iihtb2R1bGUpIl9zOw0KDQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlw
ZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg4NDIsICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAiLCAgX19GVU5DVElPTl9fICAsIDE5OSApOyB9IHdoaWxlIChmYWxz
ZSk7DQogICAgICAgIHJldHVybiBTdHJpbmcoKTsNCiAgICB9DQogICAgZG8geyBXVEY6OmlzSW50
ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdp
dGhJbmZvKDg0NSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCIsICBfX0ZVTkNUSU9OX18gICwgMjAw
ICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICByZXR1cm4gU3RyaW5nKCk7DQp9DQoNCmludCBTYW1w
bGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpmdW5jdGlvblN0YXJ0TGluZSgpDQp7DQogICAgc3dp
dGNoIChmcmFtZVR5cGUpIHsNCiAgICBjYXNlIEZyYW1lVHlwZTo6VW5rbm93bjoNCiAgICBjYXNl
IEZyYW1lVHlwZTo6SG9zdDoNCiAgICBjYXNlIEZyYW1lVHlwZTo6QzoNCiAgICBjYXNlIEZyYW1l
VHlwZTo6V2FzbToNCiAgICAgICAgcmV0dXJuIC0xOw0KDQogICAgY2FzZSBGcmFtZVR5cGU6OkV4
ZWN1dGFibGU6DQogICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQ0KICAg
ICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NyaXB0RXhl
Y3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5maXJzdExpbmUoKTsNCiAgICB9DQogICAgZG8geyBXVEY6
OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZD
cmFzaFdpdGhJbmZvKDg2MywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCIsICBfX0ZVTkNUSU9OX18g
ICwgMjAxICk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICByZXR1cm4gLTE7DQp9DQoNCnVuc2lnbmVk
IFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmZ1bmN0aW9uU3RhcnRDb2x1bW4oKQ0Kew0K
ICAgIHN3aXRjaCAoZnJhbWVUeXBlKSB7DQogICAgY2FzZSBGcmFtZVR5cGU6OlVua25vd246DQog
ICAgY2FzZSBGcmFtZVR5cGU6Okhvc3Q6DQogICAgY2FzZSBGcmFtZVR5cGU6OkM6DQogICAgY2Fz
ZSBGcmFtZVR5cGU6Oldhc206DQogICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCk7DQoNCiAgICBjYXNlIEZyYW1lVHlwZTo6RXhlY3V0YWJsZToNCiAgICAg
ICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpDQogICAgICAgICAgICByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOw0KDQogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPnN0YXJ0Q29sdW1uKCk7
DQogICAgfQ0KICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxl
ckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbyg4ODIsICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxl
ci5jcHAiLCAgX19GVU5DVElPTl9fICAsIDIwMiApOyB9IHdoaWxlIChmYWxzZSk7DQogICAgcmV0
dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsNCn0NCg0KaW50cHRyX3Qg
U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6c291cmNlSUQoKQ0Kew0KICAgIHN3aXRjaCAo
ZnJhbWVUeXBlKSB7DQogICAgY2FzZSBGcmFtZVR5cGU6OlVua25vd246DQogICAgY2FzZSBGcmFt
ZVR5cGU6Okhvc3Q6DQogICAgY2FzZSBGcmFtZVR5cGU6OkM6DQogICAgY2FzZSBGcmFtZVR5cGU6
Oldhc206DQogICAgICAgIHJldHVybiAtMTsNCg0KICAgIGNhc2UgRnJhbWVUeXBlOjpFeGVjdXRh
YmxlOg0KICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkNCiAgICAgICAg
ICAgIHJldHVybiAtMTsNCg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpLT5zb3VyY2VJRCgpOw0KICAgIH0NCiAgICBkbyB7IFdURjo6aXNJ
bnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNo
V2l0aEluZm8oOTAxLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIiwgIF9fRlVOQ1RJT05fXyAgLCAy
MDMgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJldHVybiAtMTsNCn0NCg0KU3RyaW5nIFNhbXBs
aW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OnVybCgpDQp7DQogICAgc3dpdGNoIChmcmFtZVR5cGUp
IHsNCiAgICBjYXNlIEZyYW1lVHlwZTo6VW5rbm93bjoNCiAgICBjYXNlIEZyYW1lVHlwZTo6SG9z
dDoNCiAgICBjYXNlIEZyYW1lVHlwZTo6QzoNCiAgICBjYXNlIEZyYW1lVHlwZTo6V2FzbToNCiAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7DQogICAgY2FzZSBGcmFtZVR5cGU6OkV4ZWN1dGFi
bGU6DQogICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQ0KICAgICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7DQoNCiAgICAgICAgU3RyaW5nIHVybCA9IHN0YXRpY19j
YXN0PFNjcmlwdEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+c291cmNlVVJMKCk7DQogICAgICAg
IGlmICh1cmwuaXNFbXB0eSgpKQ0KICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNjcmlw
dEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlVVJM
RGlyZWN0aXZlKCk7IA0KICAgICAgICByZXR1cm4gdXJsOw0KICAgIH0NCiAgICBkbyB7IFdURjo6
aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNy
YXNoV2l0aEluZm8oOTIyLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIiwgIF9fRlVOQ1RJT05fXyAg
LCAyMDQgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJldHVybiBTdHJpbmcoKTsNCn0NCg0KVmVj
dG9yPFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrVHJhY2U+IFNhbXBsaW5nUHJvZmlsZXI6OnJlbGVh
c2VTdGFja1RyYWNlcyhjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQ0Kew0KICAgICgodm9p
ZCkwKTsNCiAgICB7DQogICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2Nv
cGUobV92bS5oZWFwKTsNCiAgICAgICAgcHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyhsb2Nr
ZXIpOw0KICAgIH0NCg0KICAgIFZlY3RvcjxTdGFja1RyYWNlPiByZXN1bHQoc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihtX3N0YWNrVHJhY2VzKSk7DQogICAgY2xlYXJEYXRhKGxv
Y2tlcik7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6
OnN0YWNrVHJhY2VzQXNKU09OKCkNCnsNCiAgICBEZWZlckdDIGRlZmVyR0MobV92bS5oZWFwKTsN
CiAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7DQoNCiAgICB7DQogICAgICAgIEhl
YXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2NvcGUobV92bS5oZWFwKTsNCiAgICAgICAg
cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyhsb2NrZXIpOw0KICAgIH0NCg0KICAgIFN0cmlu
Z0J1aWxkZXIganNvbjsNCiAgICBqc29uLmFwcGVuZCgnWycpOw0KDQogICAgYm9vbCBsb29wZWRP
bmNlID0gZmFsc2U7DQogICAgYXV0byBjb21tYSA9IFsmXSB7DQogICAgICAgIGlmIChsb29wZWRP
bmNlKQ0KICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsNCiAgICB9Ow0KICAgIGZvciAoU3Rh
Y2tUcmFjZSYgc3RhY2tUcmFjZSA6IG1fc3RhY2tUcmFjZXMpIHsNCiAgICAgICAgY29tbWEoKTsN
CiAgICAgICAganNvbi5hcHBlbmQoJ1snKTsNCiAgICAgICAgbG9vcGVkT25jZSA9IGZhbHNlOw0K
ICAgICAgICBmb3IgKFN0YWNrRnJhbWUmIHN0YWNrRnJhbWUgOiBzdGFja1RyYWNlLmZyYW1lcykg
ew0KICAgICAgICAgICAgY29tbWEoKTsNCiAgICAgICAgICAgIGpzb24uYXBwZW5kUXVvdGVkSlNP
TlN0cmluZyhzdGFja0ZyYW1lLmRpc3BsYXlOYW1lRm9ySlNPTlRlc3RzKG1fdm0pKTsNCiAgICAg
ICAgICAgIGxvb3BlZE9uY2UgPSB0cnVlOw0KICAgICAgICB9DQogICAgICAgIGpzb24uYXBwZW5k
KCddJyk7DQogICAgICAgIGxvb3BlZE9uY2UgPSB0cnVlOw0KICAgIH0NCg0KICAgIGpzb24uYXBw
ZW5kKCddJyk7DQoNCiAgICBjbGVhckRhdGEobG9ja2VyKTsNCg0KICAgIHJldHVybiBqc29uLnRv
U3RyaW5nKCk7DQp9DQoNCnZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cmVnaXN0ZXJGb3JSZXBvcnRB
dEV4aXQoKQ0Kew0KICAgIHN0YXRpYyBMb2NrIHJlZ2lzdHJhdGlvbkxvY2s7DQogICAgc3RhdGlj
IEhhc2hTZXQ8UmVmUHRyPFNhbXBsaW5nUHJvZmlsZXI+PiogcHJvZmlsZXNUb1JlcG9ydDsNCg0K
ICAgIExvY2tIb2xkZXIgaG9sZGVyKHJlZ2lzdHJhdGlvbkxvY2spOw0KDQogICAgaWYgKCFwcm9m
aWxlc1RvUmVwb3J0KSB7DQogICAgICAgIHByb2ZpbGVzVG9SZXBvcnQgPSBuZXcgSGFzaFNldDxS
ZWZQdHI8U2FtcGxpbmdQcm9maWxlcj4+KCk7DQogICAgICAgIGF0ZXhpdChbXSgpIHsNCiAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcHJvZmlsZSA6ICpwcm9maWxlc1RvUmVwb3J0KQ0KICAg
ICAgICAgICAgICAgIHByb2ZpbGUtPnJlcG9ydERhdGFUb09wdGlvbkZpbGUoKTsNCiAgICAgICAg
fSk7DQogICAgfQ0KDQogICAgcHJvZmlsZXNUb1JlcG9ydC0+YWRkKGFkb3B0UmVmKHRoaXMpKTsN
CiAgICBtX25lZWRzUmVwb3J0QXRFeGl0ID0gdHJ1ZTsNCn0NCg0Kdm9pZCBTYW1wbGluZ1Byb2Zp
bGVyOjpyZXBvcnREYXRhVG9PcHRpb25GaWxlKCkNCnsNCiAgICBpZiAobV9uZWVkc1JlcG9ydEF0
RXhpdCkgew0KICAgICAgICBtX25lZWRzUmVwb3J0QXRFeGl0ID0gZmFsc2U7DQogICAgICAgIEpT
TG9ja0hvbGRlciBob2xkZXIobV92bSk7DQogICAgICAgIGNvbnN0IGNoYXIqIHBhdGggPSBPcHRp
b25zOjpzYW1wbGluZ1Byb2ZpbGVyUGF0aCgpOw0KICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBw
YXRoT3V0Ow0KICAgICAgICBwYXRoT3V0LnByaW50KHBhdGgsICIvIik7DQogICAgICAgIHBhdGhP
dXQucHJpbnQoIkpTQ1NhbXBpbGluZ1Byb2ZpbGUtIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHRoaXMpLCAiLnR4dCIpOw0KICAgICAgICBhdXRvIG91dCA9IEZpbGVQcmludFN0cmVhbTo6
b3BlbihwYXRoT3V0LnRvQ1N0cmluZygpLmRhdGEoKSwgInciKTsNCiAgICAgICAgcmVwb3J0VG9w
RnVuY3Rpb25zKCpvdXQpOw0KICAgICAgICByZXBvcnRUb3BCeXRlY29kZXMoKm91dCk7DQogICAg
fQ0KfQ0KDQp2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0aW9ucygpDQp7DQog
ICAgcmVwb3J0VG9wRnVuY3Rpb25zKFdURjo6ZGF0YUZpbGUoKSk7DQp9DQoNCnZvaWQgU2FtcGxp
bmdQcm9maWxlcjo6cmVwb3J0VG9wRnVuY3Rpb25zKFByaW50U3RyZWFtJiBvdXQpDQp7DQogICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOw0KICAgIERlZmVyR0NGb3JBV2hpbGUgZGVm
ZXJHQyhtX3ZtLmhlYXApOw0KDQogICAgew0KICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaGVh
cEl0ZXJhdGlvblNjb3BlKG1fdm0uaGVhcCk7DQogICAgICAgIHByb2Nlc3NVbnZlcmlmaWVkU3Rh
Y2tUcmFjZXMobG9ja2VyKTsNCiAgICB9DQoNCg0KICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+
IGZ1bmN0aW9uQ291bnRzOw0KICAgIGZvciAoU3RhY2tUcmFjZSYgc3RhY2tUcmFjZSA6IG1fc3Rh
Y2tUcmFjZXMpIHsNCiAgICAgICAgaWYgKCFzdGFja1RyYWNlLmZyYW1lcy5zaXplKCkpDQogICAg
ICAgICAgICBjb250aW51ZTsNCg0KICAgICAgICBTdGFja0ZyYW1lJiBmcmFtZSA9IHN0YWNrVHJh
Y2UuZnJhbWVzLmZpcnN0KCk7DQogICAgICAgIFN0cmluZyBmcmFtZURlc2NyaXB0aW9uID0gbWFr
ZVN0cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgJzonLCBmcmFtZS5zb3VyY2VJRCgpKTsN
CiAgICAgICAgZnVuY3Rpb25Db3VudHMuYWRkKGZyYW1lRGVzY3JpcHRpb24sIDApLml0ZXJhdG9y
LT52YWx1ZSsrOw0KICAgIH0NCg0KICAgIGF1dG8gdGFrZU1heCA9IFsmXSAoKSAtPiBzdGQ6OnBh
aXI8U3RyaW5nLCBzaXplX3Q+IHsNCiAgICAgICAgU3RyaW5nIG1heEZyYW1lRGVzY3JpcHRpb247
DQogICAgICAgIHNpemVfdCBtYXhGcmFtZUNvdW50ID0gMDsNCiAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBlbnRyeSA6IGZ1bmN0aW9uQ291bnRzKSB7DQogICAgICAgICAgICBpZiAoZW50cnkudmFs
dWUgPiBtYXhGcmFtZUNvdW50KSB7DQogICAgICAgICAgICAgICAgbWF4RnJhbWVDb3VudCA9IGVu
dHJ5LnZhbHVlOw0KICAgICAgICAgICAgICAgIG1heEZyYW1lRGVzY3JpcHRpb24gPSBlbnRyeS5r
ZXk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFtYXhGcmFtZURlc2Ny
aXB0aW9uLmlzRW1wdHkoKSkNCiAgICAgICAgICAgIGZ1bmN0aW9uQ291bnRzLnJlbW92ZShtYXhG
cmFtZURlc2NyaXB0aW9uKTsNCiAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1heEZyYW1l
RGVzY3JpcHRpb24sIG1heEZyYW1lQ291bnQpOw0KICAgIH07DQoNCiAgICBpZiAoT3B0aW9uczo6
c2FtcGxpbmdQcm9maWxlclRvcEZ1bmN0aW9uc0NvdW50KCkpIHsNCiAgICAgICAgb3V0LnByaW50
KCJcblxuU2FtcGxpbmcgcmF0ZTogIiwgbV90aW1pbmdJbnRlcnZhbC5taWNyb3NlY29uZHMoKSwg
IiBtaWNyb3NlY29uZHNcbiIpOw0KICAgICAgICBvdXQucHJpbnQoIlRvcCBmdW5jdGlvbnMgYXMg
PG51bVNhbXBsZXMgICdmdW5jdGlvbk5hbWU6c291cmNlSUQnPlxuIik7DQogICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgT3B0aW9uczo6c2FtcGxpbmdQcm9maWxlclRvcEZ1bmN0aW9uc0Nv
dW50KCk7IGkrKykgew0KICAgICAgICAgICAgYXV0byBwYWlyID0gdGFrZU1heCgpOw0KICAgICAg
ICAgICAgaWYgKHBhaXIuZmlyc3QuaXNFbXB0eSgpKQ0KICAgICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgICAgb3V0LnByaW50ZigiJTZ6dSAiLCBwYWlyLnNlY29uZCk7DQogICAgICAgICAg
ICBvdXQucHJpbnQoIiAgICciLCBwYWlyLmZpcnN0LCAiJ1xuIik7DQogICAgICAgIH0NCiAgICB9
DQp9DQoNCnZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0ZWNvZGVzKCkNCnsNCiAg
ICByZXBvcnRUb3BCeXRlY29kZXMoV1RGOjpkYXRhRmlsZSgpKTsNCn0NCg0Kdm9pZCBTYW1wbGlu
Z1Byb2ZpbGVyOjpyZXBvcnRUb3BCeXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkNCnsNCiAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7DQogICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZl
ckdDKG1fdm0uaGVhcCk7DQoNCiAgICB7DQogICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFw
SXRlcmF0aW9uU2NvcGUobV92bS5oZWFwKTsNCiAgICAgICAgcHJvY2Vzc1VudmVyaWZpZWRTdGFj
a1RyYWNlcyhsb2NrZXIpOw0KICAgIH0NCg0KICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IGJ5
dGVjb2RlQ291bnRzOw0KICAgIGZvciAoU3RhY2tUcmFjZSYgc3RhY2tUcmFjZSA6IG1fc3RhY2tU
cmFjZXMpIHsNCiAgICAgICAgaWYgKCFzdGFja1RyYWNlLmZyYW1lcy5zaXplKCkpDQogICAgICAg
ICAgICBjb250aW51ZTsNCg0KICAgICAgICBhdXRvIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24gPSBb
Jl0gKFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiBsb2NhdGlvbiwgT3B0aW9uYWw8V2FzbTo6Q29t
cGlsYXRpb25Nb2RlPiB3YXNtQ29tcGlsYXRpb25Nb2RlKSAtPiBTdHJpbmcgew0KICAgICAgICAg
ICAgU3RyaW5nIGJ5dGVjb2RlSW5kZXg7DQogICAgICAgICAgICBTdHJpbmcgY29kZUJsb2NrSGFz
aDsNCiAgICAgICAgICAgIFN0cmluZyBqaXRUeXBlOw0KICAgICAgICAgICAgaWYgKGxvY2F0aW9u
Lmhhc0J5dGVjb2RlSW5kZXgoKSkNCiAgICAgICAgICAgICAgICBieXRlY29kZUluZGV4ID0gdG9T
dHJpbmcobG9jYXRpb24uYnl0ZWNvZGVJbmRleCk7DQogICAgICAgICAgICBlbHNlDQogICAgICAg
ICAgICAgICAgYnl0ZWNvZGVJbmRleCA9ICI8bmlsPiI7DQoNCiAgICAgICAgICAgIGlmIChsb2Nh
dGlvbi5oYXNDb2RlQmxvY2tIYXNoKCkpIHsNCiAgICAgICAgICAgICAgICBTdHJpbmdQcmludFN0
cmVhbSBzdHJlYW07DQogICAgICAgICAgICAgICAgbG9jYXRpb24uY29kZUJsb2NrSGFzaC5kdW1w
KHN0cmVhbSk7DQogICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9IHN0cmVhbS50b1N0cmlu
ZygpOw0KICAgICAgICAgICAgfSBlbHNlDQogICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9
ICI8bmlsPiI7DQoNCiAgICAgICAgICAgIGlmICh3YXNtQ29tcGlsYXRpb25Nb2RlKQ0KICAgICAg
ICAgICAgICAgIGppdFR5cGUgPSBXYXNtOjptYWtlU3RyaW5nKHdhc21Db21waWxhdGlvbk1vZGUu
dmFsdWUoKSk7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgaml0VHlwZSA9IEpJ
VENvZGU6OnR5cGVOYW1lKGxvY2F0aW9uLmppdFR5cGUpOw0KDQogICAgICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygiIyIsIGNvZGVCbG9ja0hhc2gsICI6Iiwgaml0VHlwZSwgIjoiLCBieXRlY29k
ZUluZGV4KTsNCiAgICAgICAgfTsNCg0KICAgICAgICBTdGFja0ZyYW1lJiBmcmFtZSA9IHN0YWNr
VHJhY2UuZnJhbWVzLmZpcnN0KCk7DQogICAgICAgIFN0cmluZyBmcmFtZURlc2NyaXB0aW9uID0g
bWFrZVN0cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlv
bihmcmFtZS5zZW1hbnRpY0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRpb25Nb2RlKSk7DQog
ICAgICAgIGlmIChPcHRpb25hbDxzdGQ6OnBhaXI8U3RhY2tGcmFtZTo6Q29kZUxvY2F0aW9uLCBD
b2RlQmxvY2sqPj4gbWFjaGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxvY2F0aW9uKSB7DQog
ICAgICAgICAgICBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFtZURlc2NyaXB0aW9u
LCAiIDwtLSAiLA0KICAgICAgICAgICAgICAgIG1hY2hpbmVMb2NhdGlvbi0+c2Vjb25kLT5pbmZl
cnJlZE5hbWUoKS5kYXRhKCksIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24obWFjaGluZUxvY2F0aW9u
LT5maXJzdCwgV1RGOjpudWxsb3B0KSk7DQogICAgICAgIH0NCiAgICAgICAgYnl0ZWNvZGVDb3Vu
dHMuYWRkKGZyYW1lRGVzY3JpcHRpb24sIDApLml0ZXJhdG9yLT52YWx1ZSsrOw0KICAgIH0NCg0K
ICAgIGF1dG8gdGFrZU1heCA9IFsmXSAoKSAtPiBzdGQ6OnBhaXI8U3RyaW5nLCBzaXplX3Q+IHsN
CiAgICAgICAgU3RyaW5nIG1heEZyYW1lRGVzY3JpcHRpb247DQogICAgICAgIHNpemVfdCBtYXhG
cmFtZUNvdW50ID0gMDsNCiAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGJ5dGVjb2Rl
Q291bnRzKSB7DQogICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPiBtYXhGcmFtZUNvdW50KSB7
DQogICAgICAgICAgICAgICAgbWF4RnJhbWVDb3VudCA9IGVudHJ5LnZhbHVlOw0KICAgICAgICAg
ICAgICAgIG1heEZyYW1lRGVzY3JpcHRpb24gPSBlbnRyeS5rZXk7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICAgICAgaWYgKCFtYXhGcmFtZURlc2NyaXB0aW9uLmlzRW1wdHkoKSkNCiAg
ICAgICAgICAgIGJ5dGVjb2RlQ291bnRzLnJlbW92ZShtYXhGcmFtZURlc2NyaXB0aW9uKTsNCiAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1heEZyYW1lRGVzY3JpcHRpb24sIG1heEZyYW1l
Q291bnQpOw0KICAgIH07DQoNCiAgICBpZiAoT3B0aW9uczo6c2FtcGxpbmdQcm9maWxlclRvcEJ5
dGVjb2Rlc0NvdW50KCkpIHsNCiAgICAgICAgb3V0LnByaW50KCJcblxuU2FtcGxpbmcgcmF0ZTog
IiwgbV90aW1pbmdJbnRlcnZhbC5taWNyb3NlY29uZHMoKSwgIiBtaWNyb3NlY29uZHNcbiIpOw0K
ICAgICAgICBvdXQucHJpbnQoIkhvdHRlc3QgYnl0ZWNvZGVzIGFzIDxudW1TYW1wbGVzICAgJ2Z1
bmN0aW9uTmFtZSNoYXNoOkpJVFR5cGU6Ynl0ZWNvZGVJbmRleCc+XG4iKTsNCiAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBPcHRpb25zOjpzYW1wbGluZ1Byb2ZpbGVyVG9wQnl0ZWNvZGVz
Q291bnQoKTsgaSsrKSB7DQogICAgICAgICAgICBhdXRvIHBhaXIgPSB0YWtlTWF4KCk7DQogICAg
ICAgICAgICBpZiAocGFpci5maXJzdC5pc0VtcHR5KCkpDQogICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICBvdXQucHJpbnRmKCIlNnp1ICIsIHBhaXIuc2Vjb25kKTsNCiAgICAgICAg
ICAgIG91dC5wcmludCgiICAgJyIsIHBhaXIuZmlyc3QsICInXG4iKTsNCiAgICAgICAgfQ0KICAg
IH0NCn0NCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDExNTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cCINCg0KfSANCg0KbmFtZXNwYWNlIFdURiB7DQoNCnVzaW5nIG5hbWVzcGFjZSBKU0M7DQoNCnZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBTYW1wbGluZ1Byb2ZpbGVyOjpGcmFt
ZVR5cGUgZnJhbWVUeXBlKQ0Kew0KICAgIHN3aXRjaCAoZnJhbWVUeXBlKSB7DQogICAgY2FzZSBT
YW1wbGluZ1Byb2ZpbGVyOjpGcmFtZVR5cGU6OkV4ZWN1dGFibGU6DQogICAgICAgIG91dC5wcmlu
dCgiRXhlY3V0YWJsZSIpOw0KICAgICAgICBicmVhazsNCiAgICBjYXNlIFNhbXBsaW5nUHJvZmls
ZXI6OkZyYW1lVHlwZTo6V2FzbToNCiAgICAgICAgb3V0LnByaW50KCJXYXNtIik7DQogICAgICAg
IGJyZWFrOw0KICAgIGNhc2UgU2FtcGxpbmdQcm9maWxlcjo6RnJhbWVUeXBlOjpIb3N0Og0KICAg
ICAgICBvdXQucHJpbnQoIkhvc3QiKTsNCiAgICAgICAgYnJlYWs7DQogICAgY2FzZSBTYW1wbGlu
Z1Byb2ZpbGVyOjpGcmFtZVR5cGU6OkM6DQogICAgY2FzZSBTYW1wbGluZ1Byb2ZpbGVyOjpGcmFt
ZVR5cGU6OlVua25vd246DQogICAgICAgIG91dC5wcmludCgiVW5rbm93biIpOw0KICAgICAgICBi
cmVhazsNCiAgICB9DQp9DQoNCn0gDQoNCiNsaW5lIDExODIgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cCINCiNsaW5lIDMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXEphdmFT
Y3JpcHRDb3JlXFxEZXJpdmVkU291cmNlc1xcdW5pZmllZC1zb3VyY2VzXFxVbmlmaWVkU291cmNl
LWYyZTE4ZmZjLTMyLmNwcCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TY29wZU9mZnNldC5jcHAiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KI2xpbmUgMjcgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9T
Y29wZU9mZnNldC5jcHAiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnZvaWQgU2NvcGVPZmZzZXQ6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QNCnsNCiAgICBpZiAoISp0aGlzKSB7DQogICAg
ICAgIG91dC5wcmludCgic2NvcGVJbnZhbGlkIik7DQogICAgICAgIHJldHVybjsNCiAgICB9DQog
ICAgDQogICAgb3V0LnByaW50KCJzY29wZSIsIG9mZnNldCgpKTsNCn0NCg0KfSANCg0KI2xpbmUg
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2YVNjcmlwdENvcmVc
XERlcml2ZWRTb3VyY2VzXFx1bmlmaWVkLXNvdXJjZXNcXFVuaWZpZWRTb3VyY2UtZjJlMThmZmMt
MzIuY3BwIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjUgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
U291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KI2xpbmUgMjcgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TY29wZWRB
cmd1bWVudHMuY3BwIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTY29wZWRBcmd1bWVudHMuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcR2VuZXJpY0FyZ3VtZW50cy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpT
QyB7DQoNCg0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPg0KY2xhc3MgR2VuZXJpY0FyZ3VtZW50
cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgT3ZlcnJpZGVzQW55Rm9ybU9mR2V0UHJvcGVydHlOYW1lczsNCg0KcHJvdGVjdGVk
Og0KICAgIEdlbmVyaWNBcmd1bWVudHMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpDQogICAgew0KICAgIH0NCg0KICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCiAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7DQogICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9u
TW9kZSk7DQogICAgc3RhdGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsNCiAgICBzdGF0aWMgYm9vbCBw
dXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsNCiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVy
dHlTbG90Jik7DQogICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsNCiAgICBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsNCiAgICAN
CiAgICB2b2lkIGluaXRNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBsZW5ndGgpOw0KICAgIHZvaWQgaW5pdE1vZGlmaWVkQXJndW1lbnRzRGVzY3Jp
cHRvcklmTmVjZXNzYXJ5KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbGVuZ3RoKTsNCiAgICB2
b2lkIHNldE1vZGlmaWVkQXJndW1lbnREZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCk7DQogICAgYm9vbCBpc01vZGlmaWVkQXJndW1lbnRE
ZXNjcmlwdG9yKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5ndGgpOw0KDQogICAgdm9pZCBj
b3B5VG9Bcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBmaXJzdEVsZW1lbnREZXN0
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAgICB1c2luZyBNb2RpZmll
ZEFyZ3VtZW50c1B0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBib29s
PjsNCiAgICBNb2RpZmllZEFyZ3VtZW50c1B0ciBtX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRv
cjsNCn07DQoNCn0gDQojbGluZSAyOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxTY29wZWRBcmd1bWVudHMuaCINCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxc
SlNMZXhpY2FsRW52aXJvbm1lbnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQoNCmNsYXNzIEpTTGV4aWNh
bEVudmlyb25tZW50IDogcHVibGljIEpTU3ltYm9sVGFibGVPYmplY3Qgew0KICAgIGZyaWVuZCBj
bGFzcyBKSVQ7DQogICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCnB1Ymxp
YzoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAg
c3RhdGljIENvbXBsZXRlU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQogICAg
ICAgIHN0YXRpY19hc3NlcnQoIUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7DQogICAg
ICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsNCiAgICB9DQoNCiAgICB1c2lu
ZyBCYXNlID0gSlNTeW1ib2xUYWJsZU9iamVjdDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNBbnlGb3JtT2ZHZXRQcm9wZXJ0eU5hbWVzOw0KDQog
ICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogdmFyaWFibGVzKCkNCiAgICB7DQogICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2Vf
Y2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZlZhcmlhYmxlcygpKTsNCiAgICB9DQoNCiAgICBi
b29sIGlzVmFsaWRTY29wZU9mZnNldChTY29wZU9mZnNldCBvZmZzZXQpDQogICAgew0KICAgICAg
ICByZXR1cm4gISFvZmZzZXQgJiYgb2Zmc2V0Lm9mZnNldCgpIDwgc3ltYm9sVGFibGUoKS0+c2Nv
cGVTaXplKCk7DQogICAgfQ0KDQogICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgdmFyaWFi
bGVBdChTY29wZU9mZnNldCBvZmZzZXQpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIHJldHVybiB2YXJpYWJsZXMoKVtvZmZzZXQub2Zmc2V0KCldOw0KICAgIH0NCg0KICAgIHN0
YXRpYyBzaXplX3Qgb2Zmc2V0T2ZWYXJpYWJsZXMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6
ZW9mKEpTTGV4aWNhbEVudmlyb25tZW50KSk7DQogICAgfQ0KDQogICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZlZhcmlhYmxlKFNjb3BlT2Zmc2V0IG9mZnNldCkNCiAgICB7DQogICAgICAgIENoZWNr
ZWQ8c2l6ZV90PiBzY29wZU9mZnNldCA9IG9mZnNldC5vZmZzZXQoKTsNCiAgICAgICAgcmV0dXJu
IChvZmZzZXRPZlZhcmlhYmxlcygpICsgc2NvcGVPZmZzZXQgKiBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSkudW5zYWZlR2V0KCk7DQogICAgfQ0KDQogICAgc3RhdGljIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZUZvclNjb3BlU2l6ZShDaGVja2VkPHNpemVfdD4gc2NvcGVTaXplKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIChvZmZzZXRPZlZhcmlhYmxlcygpICsgc2NvcGVTaXplICogc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPikpLnVuc2FmZUdldCgpOw0KICAgIH0NCg0KICAgIHN0YXRp
YyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQ0KICAgIHsN
CiAgICAgICAgcmV0dXJuIGFsbG9jYXRpb25TaXplRm9yU2NvcGVTaXplKHN5bWJvbFRhYmxlLT5z
Y29wZVNpemUoKSk7DQogICAgfQ0KDQogICAgc3RhdGljIEpTTGV4aWNhbEVudmlyb25tZW50KiBj
cmVhdGUoDQogICAgICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1
cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1
ZSkNCiAgICB7DQogICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiByZXN1bHQgPSANCiAgICAg
ICAgICAgIG5ldyAoDQogICAgICAgICAgICAgICAgTm90TnVsbCwNCiAgICAgICAgICAgICAgICBh
bGxvY2F0ZUNlbGw8SlNMZXhpY2FsRW52aXJvbm1lbnQ+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXpl
KHN5bWJvbFRhYmxlKSkpDQogICAgICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCh2bSwgc3Ry
dWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsNCiAgICAgICAgcmVzdWx0LT5maW5p
c2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAg
ICB9DQoNCiAgICBzdGF0aWMgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSkNCiAgICB7DQogICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hY3RpdmF0aW9uU3RydWN0dXJl
KCk7DQogICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBz
eW1ib2xUYWJsZSwgaW5pdGlhbFZhbHVlKTsNCiAgICB9DQogICAgICAgIA0KICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsNCiAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsNCg0KICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7DQoN
CiAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgRGVsZXRlUHJvcGVydHlTbG90Jik7DQoNCiAgICBwcm90ZWN0ZWQ6IHN0
YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0K
DQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwganNOdWxsKCksIFR5cGVJbmZvKExleGljYWxFbnZpcm9ubWVudFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsgfQ0KDQpwcm90ZWN0ZWQ6DQogICAgSlNMZXhpY2FsRW52aXJv
bm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsNCg0KICAgIHZv
aWQgZmluaXNoQ3JlYXRpb25VbmluaXRpYWxpemVkKFZNJiB2bSkNCiAgICB7DQogICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICB9DQoNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIGZpbmlzaENyZWF0aW9uVW5p
bml0aWFsaXplZCh2bSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gc3ltYm9sVGFibGUoKS0+c2NvcGVTaXplKCk7IGktLTspIHsNCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgdmFyaWFibGVBdChTY29wZU9mZnNldChpKSkuc2V0U3RhcnRpbmdWYWx1ZSh2
YWx1ZSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7DQogICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSGVhcEFuYWx5emVyJik7DQp9Ow0KDQppbmxpbmUgSlNMZXhpY2FsRW52aXJvbm1lbnQ6
OkpTTGV4aWNhbEVudmlyb25tZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2Nv
cGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQ0KICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKQ0Kew0KfQ0KDQp9IA0KI2xp
bmUgMzAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZVxcU2NvcGVkQXJndW1lbnRzLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KDQoN
Cg0KDQpjbGFzcyBTY29wZWRBcmd1bWVudHMgZmluYWwgOiBwdWJsaWMgR2VuZXJpY0FyZ3VtZW50
czxTY29wZWRBcmd1bWVudHM+IHsNCnByaXZhdGU6DQogICAgU2NvcGVkQXJndW1lbnRzKFZNJiwg
U3RydWN0dXJlKiwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzdG9yYWdlLCB1bnNpZ25lZCB0b3Rh
bExlbmd0aCk7DQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTRnVuY3Rpb24qIGNhbGxl
ZSwgU2NvcGVkQXJndW1lbnRzVGFibGUqLCBKU0xleGljYWxFbnZpcm9ubWVudCopOw0KICAgIHVz
aW5nIEJhc2UgPSBHZW5lcmljQXJndW1lbnRzPFNjb3BlZEFyZ3VtZW50cz47DQoNCnB1YmxpYzoN
CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOw0KICAgICAgICByZXR1
cm4gJnZtLnNjb3BlZEFyZ3VtZW50c1NwYWNlOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIHN0
YXRpYyBTY29wZWRBcmd1bWVudHMqIGNyZWF0ZVVuaW5pdGlhbGl6ZWQoVk0mLCBTdHJ1Y3R1cmUq
LCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiwgSlNMZXhpY2FsRW52
aXJvbm1lbnQqLCB1bnNpZ25lZCB0b3RhbExlbmd0aCk7DQogICAgDQogICAgDQogICAgDQogICAg
c3RhdGljIFNjb3BlZEFyZ3VtZW50cyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNGdW5jdGlv
biogY2FsbGVlLCBTY29wZWRBcmd1bWVudHNUYWJsZSosIEpTTGV4aWNhbEVudmlyb25tZW50Kiwg
dW5zaWduZWQgdG90YWxMZW5ndGgpOw0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBTY29wZWRBcmd1
bWVudHMqIGNyZWF0ZUJ5Q29weWluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIFNjb3Bl
ZEFyZ3VtZW50c1RhYmxlKiwgSlNMZXhpY2FsRW52aXJvbm1lbnQqKTsNCiAgICANCiAgICANCiAg
ICBzdGF0aWMgU2NvcGVkQXJndW1lbnRzKiBjcmVhdGVCeUNvcHlpbmdGcm9tKFZNJiwgU3RydWN0
dXJlKiwgUmVnaXN0ZXIqIGFyZ3VtZW50c1N0YXJ0LCB1bnNpZ25lZCB0b3RhbExlbmd0aCwgSlNG
dW5jdGlvbiogY2FsbGVlLCBTY29wZWRBcmd1bWVudHNUYWJsZSosIEpTTGV4aWNhbEVudmlyb25t
ZW50Kik7DQogICAgDQogICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOw0KICAgIA0KICAgIHVpbnQzMl90IGludGVybmFsTGVuZ3RoKCkgY29uc3QNCiAg
ICB7DQogICAgICAgIHJldHVybiBtX3RvdGFsTGVuZ3RoOw0KICAgIH0NCiAgICANCiAgICB1aW50
MzJfdCBsZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QNCiAgICB7DQog
ICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7DQogICAgICAgIGF1dG8gc2NvcGUg
PSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQogICAgICAgIGlmICgobV9vdmVycm9kZVRoaW5ncykp
IHsNCiAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBnZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgpOw0KICAgICAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9u
KCkpKSByZXR1cm4gMDsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICAgICAgZG8geyBzY29wZS5y
ZWxlYXNlKCk7IHJldHVybiB2YWx1ZS50b1VJbnQzMihnbG9iYWxPYmplY3QpOyB9IHdoaWxlIChm
YWxzZSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGludGVybmFsTGVuZ3RoKCk7DQogICAg
fQ0KICAgIA0KICAgIGJvb2wgaXNNYXBwZWRBcmd1bWVudCh1aW50MzJfdCBpKSBjb25zdA0KICAg
IHsNCiAgICAgICAgaWYgKGkgPj0gbV90b3RhbExlbmd0aCkNCiAgICAgICAgICAgIHJldHVybiBm
YWxzZTsNCiAgICAgICAgdW5zaWduZWQgbmFtZWRMZW5ndGggPSBtX3RhYmxlLT5sZW5ndGgoKTsN
CiAgICAgICAgaWYgKGkgPCBuYW1lZExlbmd0aCkNCiAgICAgICAgICAgIHJldHVybiAhIW1fdGFi
bGUtPmdldChpKTsNCiAgICAgICAgcmV0dXJuICEhc3RvcmFnZSgpW2kgLSBuYW1lZExlbmd0aF0u
Z2V0KCk7DQogICAgfQ0KDQogICAgYm9vbCBpc01hcHBlZEFyZ3VtZW50SW5ERkcodWludDMyX3Qg
aSkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBpc01hcHBlZEFyZ3VtZW50KGkpOw0KICAg
IH0NCiAgICANCiAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1aW50MzJfdCBpKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICB1bnNpZ25lZCBuYW1lZExlbmd0aCA9
IG1fdGFibGUtPmxlbmd0aCgpOw0KICAgICAgICBpZiAoaSA8IG5hbWVkTGVuZ3RoKQ0KICAgICAg
ICAgICAgcmV0dXJuIG1fc2NvcGUtPnZhcmlhYmxlQXQobV90YWJsZS0+Z2V0KGkpKS5nZXQoKTsN
CiAgICAgICAgcmV0dXJuIHN0b3JhZ2UoKVtpIC0gbmFtZWRMZW5ndGhdLmdldCgpOw0KICAgIH0N
Cg0KICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdWludDMyX3QgaSwgSlNWYWx1ZSB2
YWx1ZSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgdW5zaWduZWQgbmFtZWRM
ZW5ndGggPSBtX3RhYmxlLT5sZW5ndGgoKTsNCiAgICAgICAgaWYgKGkgPCBuYW1lZExlbmd0aCkN
CiAgICAgICAgICAgIG1fc2NvcGUtPnZhcmlhYmxlQXQobV90YWJsZS0+Z2V0KGkpKS5zZXQodm0s
IG1fc2NvcGUuZ2V0KCksIHZhbHVlKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgc3RvcmFn
ZSgpW2kgLSBuYW1lZExlbmd0aF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7DQogICAgfQ0KDQogICAg
SlNGdW5jdGlvbiogY2FsbGVlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX2NhbGxlZS5nZXQo
KTsNCiAgICB9DQoNCiAgICBib29sIG92ZXJyb2RlVGhpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9v
dmVycm9kZVRoaW5nczsgfQ0KICAgIHZvaWQgb3ZlcnJpZGVUaGluZ3MoSlNHbG9iYWxPYmplY3Qq
KTsNCiAgICB2b2lkIG92ZXJyaWRlVGhpbmdzSWZOZWNlc3NhcnkoSlNHbG9iYWxPYmplY3QqKTsN
CiAgICB2b2lkIHVubWFwQXJndW1lbnQoSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCBpbmRleCk7
DQogICAgDQogICAgdm9pZCBpbml0TW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9ySWZOZWNlc3Nh
cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkNCiAgICB7DQogICAgICAgIEdlbmVyaWNB
cmd1bWVudHM8U2NvcGVkQXJndW1lbnRzPjo6aW5pdE1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRv
cklmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCwgbV90YWJsZS0+bGVuZ3RoKCkpOw0KICAgIH0NCg0K
ICAgIHZvaWQgc2V0TW9kaWZpZWRBcmd1bWVudERlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgpDQogICAgew0KICAgICAgICBHZW5lcmljQXJndW1l
bnRzPFNjb3BlZEFyZ3VtZW50cz46OnNldE1vZGlmaWVkQXJndW1lbnREZXNjcmlwdG9yKGdsb2Jh
bE9iamVjdCwgaW5kZXgsIG1fdGFibGUtPmxlbmd0aCgpKTsNCiAgICB9DQoNCiAgICBib29sIGlz
TW9kaWZpZWRBcmd1bWVudERlc2NyaXB0b3IodW5zaWduZWQgaW5kZXgpDQogICAgew0KICAgICAg
ICByZXR1cm4gR2VuZXJpY0FyZ3VtZW50czxTY29wZWRBcmd1bWVudHM+Ojppc01vZGlmaWVkQXJn
dW1lbnREZXNjcmlwdG9yKGluZGV4LCBtX3RhYmxlLT5sZW5ndGgoKSk7DQogICAgfQ0KDQogICAg
dm9pZCBjb3B5VG9Bcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBmaXJzdEVsZW1l
bnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAgICBwcm90ZWN0
ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZv
OyB9Ow0KICAgIA0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOw0KICAgIA0KICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZPdmVycm9kZVRoaW5ncygpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFNjb3BlZEFyZ3VtZW50cyo+KDB4NDAwMCkt
Pm1fb3ZlcnJvZGVUaGluZ3MpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mVG90YWxMZW5ndGgoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+
KCYocmVpbnRlcnByZXRfY2FzdDxTY29wZWRBcmd1bWVudHMqPigweDQwMDApLT5tX3RvdGFsTGVu
Z3RoKSkgLSAweDQwMDApOyB9DQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkg
eyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8
U2NvcGVkQXJndW1lbnRzKj4oMHg0MDAwKS0+bV90YWJsZSkpIC0gMHg0MDAwKTsgfQ0KICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZSgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PFNjb3BlZEFyZ3VtZW50cyo+KDB4NDAwMCkt
Pm1fc2NvcGUpKSAtIDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3Rv
cmFnZSgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJl
dF9jYXN0PFNjb3BlZEFyZ3VtZW50cyo+KDB4NDAwMCktPm1fc3RvcmFnZSkpIC0gMHg0MDAwKTsg
fQ0KICAgIA0KcHJpdmF0ZToNCiAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2UoKSBj
b25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fc3RvcmFnZS5nZXQoKTsNCiAgICB9DQogICAg
DQogICAgYm9vbCBtX292ZXJyb2RlVGhpbmdzIHsgZmFsc2UgfTsgDQogICAgdW5zaWduZWQgbV90
b3RhbExlbmd0aDsgDQogICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbGVlOw0KICAg
IFdyaXRlQmFycmllcjxTY29wZWRBcmd1bWVudHNUYWJsZT4gbV90YWJsZTsNCiAgICBXcml0ZUJh
cnJpZXI8SlNMZXhpY2FsRW52aXJvbm1lbnQ+IG1fc2NvcGU7DQogICAgDQogICAgQXV4aWxpYXJ5
QmFycmllcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPiBtX3N0b3JhZ2U7DQp9Ow0KDQp9IA0KI2xp
bmUgMjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwIg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEdlbmVyaWNBcmd1bWVu
dHNJbmxpbmVzLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KdGVtcGxhdGU8
dHlwZW5hbWUgVHlwZT4NCnZvaWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIHRoaXNDZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikNCnsNCiAgICBUeXBlKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8VHlwZSo+KHRoaXNDZWxsKTsNCiAgICBkbyB7ICh2b2lk
KXRoaXNPYmplY3Q7ICh2b2lkKWluZm8oKTsgfSB3aGlsZSAoMCk7DQogICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzQ2VsbCwgdmlzaXRvcik7DQogICAgDQogICAgaWYgKHRoaXNPYmplY3QtPm1f
bW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yKQ0KICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlh
cnkodGhpc09iamVjdC0+bV9tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IuZ2V0VW5zYWZlKCkp
Ow0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPg0KYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5
cGU+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIGlkZW50LCBQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7
DQogICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4ob2JqZWN0KTsNCiAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgDQogICAgaWYgKCF0aGlzT2JqZWN0LT5vdmVy
cm9kZVRoaW5ncygpKSB7DQogICAgICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgpIHsNCiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIGpzTnVtYmVyKHRoaXNP
YmplY3QtPmludGVybmFsTGVuZ3RoKCkpKTsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAg
ICAgICB9DQogICAgICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUpIHsN
CiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHRoaXNPYmplY3QtPmNhbGxlZSgpKTsN
CiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIGlmIChpZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgew0KICAgICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKS0+YXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uKCkpOw0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAg
ICB9DQogICAgDQogICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
aWRlbnQpKQ0KICAgICAgICByZXR1cm4gR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbmRleCwgc2xvdCk7
DQoNCiAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHNsb3QpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPg0KYm9v
bCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluZGV4
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpDQp7DQogICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxU
eXBlKj4ob2JqZWN0KTsNCiAgICANCiAgICBpZiAoIXRoaXNPYmplY3QtPmlzTW9kaWZpZWRBcmd1
bWVudERlc2NyaXB0b3IoaW5kZXgpICYmIHRoaXNPYmplY3QtPmlzTWFwcGVkQXJndW1lbnQoaW5k
ZXgpKSB7DQogICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSwgdGhpc09iamVjdC0+Z2V0SW5kZXhRdWlj
a2x5KGluZGV4KSk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCiAgICANCiAgICBib29s
IHJlc3VsdCA9IEJhc2U6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBnbG9iYWxP
YmplY3QsIGluZGV4LCBzbG90KTsNCiAgICANCiAgICBpZiAodGhpc09iamVjdC0+aXNNYXBwZWRB
cmd1bWVudChpbmRleCkpIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHNsb3QuYXR0cmlidXRlcygpLCB0aGlzT2JqZWN0LT5nZXRJbmRleFF1
aWNrbHkoaW5kZXgpKTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIA0KICAgIHJl
dHVybiByZXN1bHQ7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+DQp2b2lkIEdlbmVyaWNB
cmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5LCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkNCnsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQog
ICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4ob2JqZWN0KTsNCg0KICAgIGlmIChh
cnJheS5pbmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7DQogICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5pbnRlcm5hbExlbmd0aCgpOyArK2kpIHsNCiAgICAgICAg
ICAgIGlmICghdGhpc09iamVjdC0+aXNNYXBwZWRBcmd1bWVudChpKSkNCiAgICAgICAgICAgICAg
ICBjb250aW51ZTsNCiAgICAgICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyOjpmcm9tKHZtLCBp
KSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkpIHsNCiAgICAgICAgYXJy
YXkuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7DQogICAgICAgIGFycmF5LmFkZCh2bS5w
cm9wZXJ0eU5hbWVzLT5jYWxsZWUpOw0KICAgICAgICBpZiAoYXJyYXkuaW5jbHVkZVN5bWJvbFBy
b3BlcnRpZXMoKSkNCiAgICAgICAgICAgIGFycmF5LmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5pdGVy
YXRvclN5bWJvbCk7DQogICAgfQ0KICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBhcnJheSwgbW9kZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1l
IFR5cGU+DQpib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBpZGVudCwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQ0Kew0KICAgIFR5cGUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8VHlwZSo+KGNlbGwpOw0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAg
ICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIA0KICAgIGlmICghdGhp
c09iamVjdC0+b3ZlcnJvZGVUaGluZ3MoKQ0KICAgICAgICAmJiAoaWRlbnQgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoDQogICAgICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5jYWxsZWUNCiAgICAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sKSkgew0KICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5ncyhnbG9iYWxP
YmplY3QpOw0KICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBm
YWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZHVtbXkgPSBz
bG90OyANCiAgICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIGR1bW15KTsgfSB3aGlsZSAoZmFs
c2UpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIGlmICgoaXNUaGlzVmFsdWVBbHRlcmVkKHNs
b3QsIHRoaXNPYmplY3QpKSkNCiAgICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBv
cmRpbmFyeVNldFNsb3coZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNs
b3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOyB9IHdoaWxlIChmYWxzZSk7DQog
ICAgDQogICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7DQog
ICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmlzTWFwcGVkQXJndW1lbnQoaW5kZXgudmFsdWUo
KSkpIHsNCiAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSk7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIGF1dG8gcmVz
dWx0ID0gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBz
bG90KTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsg
fSB3aGlsZSAoZmFsc2UpOw0KICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gcmVzdWx0
OyB9IHdoaWxlIChmYWxzZSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+DQpib29sIEdl
bmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBz
aG91bGRUaHJvdykNCnsNCiAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5cGUqPihjZWxs
KTsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQoNCiAgICBpZiAodGhpc09iamVj
dC0+aXNNYXBwZWRBcmd1bWVudChpbmRleCkpIHsNCiAgICAgICAgdGhpc09iamVjdC0+c2V0SW5k
ZXhRdWlja2x5KHZtLCBpbmRleCwgdmFsdWUpOw0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9
DQogICAgDQogICAgcmV0dXJuIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgZ2xvYmFsT2JqZWN0LCBp
bmRleCwgdmFsdWUsIHNob3VsZFRocm93KTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4N
CmJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgaWRlbnQsIERlbGV0
ZVByb3BlcnR5U2xvdCYgc2xvdCkNCnsNCiAgICBUeXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFR5
cGUqPihjZWxsKTsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgYXV0byBz
Y29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICANCiAgICBpZiAoIXRoaXNPYmplY3Qt
Pm92ZXJyb2RlVGhpbmdzKCkNCiAgICAgICAgJiYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aA0KICAgICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVl
DQogICAgICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCkpIHsNCiAgICAgICAgdGhpc09iamVjdC0+b3ZlcnJpZGVUaGluZ3MoZ2xvYmFsT2JqZWN0KTsN
CiAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gZmFsc2U7IH0g
d2hpbGUgKGZhbHNlKTsNCiAgICB9DQoNCiAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChpZGVudCkpDQogICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1
cm4gR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgKmluZGV4KTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgZG8geyBz
Y29wZS5yZWxlYXNlKCk7IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsgfSB3aGlsZSAoZmFsc2UpOw0KfQ0KDQp0ZW1wbGF0
ZTx0eXBlbmFtZSBUeXBlPg0KYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBpbmRleCkNCnsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAg
YXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCg0KICAgIFR5cGUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8VHlwZSo+KGNlbGwpOw0KDQogICAgYm9vbCBwcm9wZXJ0eU1pZ2h0QmVJbkpT
T2JqZWN0U3RvcmFnZSA9IHRoaXNPYmplY3QtPmlzTW9kaWZpZWRBcmd1bWVudERlc2NyaXB0b3Io
aW5kZXgpIHx8ICF0aGlzT2JqZWN0LT5pc01hcHBlZEFyZ3VtZW50KGluZGV4KTsNCiAgICBib29s
IGRlbGV0ZWRQcm9wZXJ0eSA9IHRydWU7DQogICAgaWYgKHByb3BlcnR5TWlnaHRCZUluSlNPYmpl
Y3RTdG9yYWdlKSB7DQogICAgICAgIGRlbGV0ZWRQcm9wZXJ0eSA9IEJhc2U6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChjZWxsLCBnbG9iYWxPYmplY3QsIGluZGV4KTsNCiAgICAgICAgZG8geyBpZiAo
KChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gdHJ1ZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAg
IH0NCg0KICAgIGlmIChkZWxldGVkUHJvcGVydHkpIHsNCiAgICAgICAgDQogICAgICAgIGlmICh0
aGlzT2JqZWN0LT5pc01hcHBlZEFyZ3VtZW50KGluZGV4KSkgew0KICAgICAgICAgICAgDQogICAg
ICAgICAgICB0aGlzT2JqZWN0LT51bm1hcEFyZ3VtZW50KGdsb2JhbE9iamVjdCwgaW5kZXgpOw0K
ICAgICAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gdHJ1ZTsg
fSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICB9DQogICAgICAgIHRoaXNPYmplY3QtPnNldE1vZGlm
aWVkQXJndW1lbnREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgaW5kZXgpOw0KICAgICAgICBkbyB7
IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB0cnVlOyB9IHdoaWxlIChmYWxzZSk7
DQogICAgfQ0KDQogICAgcmV0dXJuIGRlbGV0ZWRQcm9wZXJ0eTsNCn0NCg0KdGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZT4NCmJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIGlkZW50LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpDQp7DQogICAgVHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDxUeXBlKj4ob2Jq
ZWN0KTsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgYXV0byBzY29wZSA9
IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICANCiAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoDQogICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNh
bGxlZQ0KICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCkgew0KICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5nc0lmTmVjZXNzYXJ5KGdsb2Jh
bE9iamVjdCk7DQogICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJu
IGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgT3B0aW9uYWw8
dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsNCiAgICAgICAgaWYg
KG9wdGlvbmFsSW5kZXgpIHsNCiAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gb3B0aW9uYWxJ
bmRleC52YWx1ZSgpOw0KICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkgJiYgdGhpc09iamVjdC0+aXNNYXBwZWRBcmd1bWVudChvcHRpb25hbEluZGV4LnZh
bHVlKCkpKSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgaWYgKGRlc2NyaXB0b3IudmFsdWUoKSkNCiAgICAgICAgICAgICAgICAgICAgdGhpc09i
amVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleCwgZGVzY3JpcHRvci52YWx1ZSgpKTsNCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlKCkgJiYgZGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAmJiAhdGhp
c09iamVjdC0+aXNNb2RpZmllZEFyZ3VtZW50RGVzY3JpcHRvcihpbmRleCkpDQogICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
IGlmICghdGhpc09iamVjdC0+aXNNb2RpZmllZEFyZ3VtZW50RGVzY3JpcHRvcihpbmRleCkpIHsN
CiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSB0aGlzT2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaW5kZXgpOw0KICAgICAgICAgICAgICAgICAg
ICAoKHZvaWQpMCk7DQogICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0TWF5QmVJ
bmRleChnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgIHNj
b3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7DQoNCiAgICAgICAgICAgICAgICAgICAgdGhpc09iamVj
dC0+c2V0TW9kaWZpZWRBcmd1bWVudERlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0LCBpbmRleCk7DQog
ICAgICAgICAgICAgICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJu
IGZhbHNlOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAodGhpc09iamVjdC0+aXNNYXBwZWRBcmd1
bWVudChpbmRleCkpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoKGRlc2Ny
aXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgfHwgZGVz
Y3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gdGhpc09iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGluZGV4
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdC0+cHV0RGlyZWN0TWF5QmVJbmRleChnbG9iYWxPYmplY3QsIGlkZW50LCB2
YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHRoaXNPYmplY3Qt
PnVubWFwQXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBpbmRleCk7DQogICAgICAgICAgICAgICAgICAg
IGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIGZhbHNlOyB9IHdoaWxlIChm
YWxzZSk7DQogICAgICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnNldE1vZGlmaWVkQXJndW1l
bnREZXNjcmlwdG9yKGdsb2JhbE9iamVjdCwgaW5kZXgpOw0KICAgICAgICAgICAgICAgICAgICBk
byB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFs
c2UpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0N
Cg0KICAgIA0KICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gQmFzZTo6ZGVmaW5lT3du
UHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBkZXNjcmlwdG9yLCBzaG91bGRU
aHJvdyk7IH0gd2hpbGUgKGZhbHNlKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4NCnZv
aWQgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6aW5pdE1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBhcmdzTGVuZ3RoKQ0Kew0K
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpU
aHJvd1Njb3BlKCh2bSkpOw0KDQogICAgZG8geyBpZiAoKCEoIW1fbW9kaWZpZWRBcmd1bWVudHNE
ZXNjcmlwdG9yKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxl
ckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygyODMsICJGOlxcZ2l0UFxcV2ViS2l0
XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEdlbmVyaWNBcmd1bWVu
dHNJbmxpbmVzLmgiLCAgX19GVU5DVElPTl9fICAsIDIwNSApOyB9IHdoaWxlIChmYWxzZSk7IH0g
d2hpbGUgKDApOw0KDQogICAgaWYgKGFyZ3NMZW5ndGgpIHsNCiAgICAgICAgdm9pZCogYmFja2lu
Z1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX21vZGlmaWVkQXJndW1lbnRzRGVz
Y3JpcHRvci5raW5kKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjw4PihhcmdzTGVuZ3RoKSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsNCiAgICAgICAgaWYgKCghYmFja2luZ1N0b3JlKSkgew0KICAgICAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOw0KICAgICAgICAgICAgcmV0
dXJuOw0KICAgICAgICB9DQogICAgICAgIGJvb2wqIG1vZGlmaWVkQXJndW1lbnRzID0gc3RhdGlj
X2Nhc3Q8Ym9vbCo+KGJhY2tpbmdTdG9yZSk7DQogICAgICAgIG1fbW9kaWZpZWRBcmd1bWVudHNE
ZXNjcmlwdG9yLnNldCh2bSwgdGhpcywgbW9kaWZpZWRBcmd1bWVudHMsIGFyZ3NMZW5ndGgpOw0K
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmdzTGVuZ3RoOyBpLS07KQ0KICAgICAgICAgICAg
bW9kaWZpZWRBcmd1bWVudHNbaV0gPSBmYWxzZTsNCiAgICB9DQp9DQoNCnRlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+DQp2b2lkIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmluaXRNb2RpZmllZEFyZ3Vt
ZW50c0Rlc2NyaXB0b3JJZk5lY2Vzc2FyeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1
bnNpZ25lZCBhcmdzTGVuZ3RoKQ0Kew0KICAgIGlmICghbV9tb2RpZmllZEFyZ3VtZW50c0Rlc2Ny
aXB0b3IpDQogICAgICAgIGluaXRNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoZ2xvYmFsT2Jq
ZWN0LCBhcmdzTGVuZ3RoKTsNCn0NCg0KdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4NCnZvaWQgR2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6c2V0TW9kaWZpZWRBcmd1bWVudERlc2NyaXB0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCkN
CnsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgYXV0byBzY29wZSA9IEpT
Qzo6VGhyb3dTY29wZSgodm0pKTsNCg0KICAgIGluaXRNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0
b3JJZk5lY2Vzc2FyeShnbG9iYWxPYmplY3QsIGxlbmd0aCk7DQogICAgZG8geyBpZiAoKChzY29w
ZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChmYWxzZSk7DQogICAgaWYg
KGluZGV4IDwgbGVuZ3RoKQ0KICAgICAgICBtX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvci5h
dChpbmRleCwgbGVuZ3RoKSA9IHRydWU7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+DQpi
b29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmlzTW9kaWZpZWRBcmd1bWVudERlc2NyaXB0b3Io
dW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAgICBpZiAoIW1fbW9kaWZpZWRB
cmd1bWVudHNEZXNjcmlwdG9yKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgaWYgKGluZGV4
IDwgbGVuZ3RoKQ0KICAgICAgICByZXR1cm4gbV9tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3Iu
YXQoaW5kZXgsIGxlbmd0aCk7DQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPg0Kdm9pZCBHZW5lcmljQXJndW1lbnRzPFR5cGU+Ojpjb3B5VG9Bcmd1bWVudHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSogZmlyc3RFbGVtZW50RGVzdCwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpDQp7DQogICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOw0KICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoN
CiAgICBUeXBlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8VHlwZSo+KHRoaXMpOw0KICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgew0KICAgICAgICBpZiAodGhpc09i
amVjdC0+aXNNYXBwZWRBcmd1bWVudChpICsgb2Zmc2V0KSkNCiAgICAgICAgICAgIGZpcnN0RWxl
bWVudERlc3RbaV0gPSB0aGlzT2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSArIG9mZnNldCk7DQog
ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZmlyc3RFbGVtZW50RGVzdFtpXSA9IGdldChnbG9i
YWxPYmplY3QsIGkgKyBvZmZzZXQpOw0KICAgICAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhj
ZXB0aW9uKCkpKSByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIH0NCiAg
ICB9DQp9DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAiDQoNCm5hbWVzcGFj
ZSBKU0Mgew0KDQpzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxT
Y29wZWRBcmd1bWVudHM+Ojp2YWx1ZSwgIlNjb3BlZEFyZ3VtZW50cyIgIiBtdXN0IGhhdmUgYSB0
cml2aWFsIGRlc3RydWN0b3IiKTsNCg0KY29uc3QgQ2xhc3NJbmZvIFNjb3BlZEFyZ3VtZW50czo6
c19pbmZvID0geyAiQXJndW1lbnRzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
SlNDYXN0aW5nSGVscGVyczo6SW5oZXJpdHNUcmFpdHM8U2NvcGVkQXJndW1lbnRzPjo6dHlwZVJh
bmdlLCB7ICZTY29wZWRBcmd1bWVudHM6OmRlc3Ryb3ksICZTY29wZWRBcmd1bWVudHM6OnZpc2l0
Q2hpbGRyZW4sICZTY29wZWRBcmd1bWVudHM6OmdldENhbGxEYXRhLCAmU2NvcGVkQXJndW1lbnRz
OjpnZXRDb25zdHJ1Y3REYXRhLCAmU2NvcGVkQXJndW1lbnRzOjpwdXQsICZTY29wZWRBcmd1bWVu
dHM6OnB1dEJ5SW5kZXgsICZTY29wZWRBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5LCAmU2NvcGVk
QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgsICZTY29wZWRBcmd1bWVudHM6OmdldE93
blByb3BlcnR5U2xvdCwgJlNjb3BlZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCwgJlNjb3BlZEFyZ3VtZW50czo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2ssICZTY29wZWRB
cmd1bWVudHM6OnRvVGhpcywgJlNjb3BlZEFyZ3VtZW50czo6ZGVmYXVsdFZhbHVlLCAmU2NvcGVk
QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCAmU2NvcGVkQXJndW1lbnRzOjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMsICZTY29wZWRBcmd1bWVudHM6OmdldFByb3BlcnR5TmFtZXMs
ICZTY29wZWRBcmd1bWVudHM6OmdldEVudW1lcmFibGVMZW5ndGgsICZTY29wZWRBcmd1bWVudHM6
OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMsICZTY29wZWRBcmd1bWVudHM6OmdldEdlbmVyaWNQ
cm9wZXJ0eU5hbWVzLCAmU2NvcGVkQXJndW1lbnRzOjpjbGFzc05hbWUsICZTY29wZWRBcmd1bWVu
dHM6OnRvU3RyaW5nTmFtZSwgJlNjb3BlZEFyZ3VtZW50czo6Y3VzdG9tSGFzSW5zdGFuY2UsICZT
Y29wZWRBcmd1bWVudHM6OmRlZmluZU93blByb3BlcnR5LCAmU2NvcGVkQXJndW1lbnRzOjpwcmV2
ZW50RXh0ZW5zaW9ucywgJlNjb3BlZEFyZ3VtZW50czo6aXNFeHRlbnNpYmxlLCAmU2NvcGVkQXJn
dW1lbnRzOjpzZXRQcm90b3R5cGUsICZTY29wZWRBcmd1bWVudHM6OmdldFByb3RvdHlwZSwgJlNj
b3BlZEFyZ3VtZW50czo6ZHVtcFRvU3RyZWFtLCAmU2NvcGVkQXJndW1lbnRzOjphbmFseXplSGVh
cCwgJlNjb3BlZEFyZ3VtZW50czo6ZXN0aW1hdGVkU2l6ZSwgJlNjb3BlZEFyZ3VtZW50czo6dmlz
aXRPdXRwdXRDb25zdHJhaW50cywgfSwgU2NvcGVkQXJndW1lbnRzOjpUeXBlZEFycmF5U3RvcmFn
ZVR5cGUsIHNpemVvZihTY29wZWRBcmd1bWVudHMpLCB9Ow0KDQpTY29wZWRBcmd1bWVudHM6OlNj
b3BlZEFyZ3VtZW50cyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHN0b3JhZ2UsIHVuc2lnbmVkIHRvdGFsTGVuZ3RoKQ0KICAgIDogR2VuZXJpY0Fy
Z3VtZW50cyh2bSwgc3RydWN0dXJlKQ0KICAgICwgbV90b3RhbExlbmd0aCh0b3RhbExlbmd0aCkN
CnsNCiAgICBpZiAoc3RvcmFnZSkNCiAgICAgICAgbV9zdG9yYWdlLnNldCh2bSwgdGhpcywgc3Rv
cmFnZSk7DQp9DQoNCnZvaWQgU2NvcGVkQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTRnVuY3Rpb24qIGNhbGxlZSwgU2NvcGVkQXJndW1lbnRzVGFibGUqIHRhYmxlLCBKU0xleGlj
YWxFbnZpcm9ubWVudCogc2NvcGUpDQp7DQogICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOw0K
ICAgIG1fY2FsbGVlLnNldCh2bSwgdGhpcywgY2FsbGVlKTsNCiAgICBtX3RhYmxlLnNldCh2bSwg
dGhpcywgdGFibGUpOw0KICAgIG1fc2NvcGUuc2V0KHZtLCB0aGlzLCBzY29wZSk7DQp9DQoNClNj
b3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1lbnRzOjpjcmVhdGVVbmluaXRpYWxpemVkKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRnVuY3Rpb24qIGNhbGxlZSwgU2NvcGVkQXJndW1l
bnRzVGFibGUqIHRhYmxlLCBKU0xleGljYWxFbnZpcm9ubWVudCogc2NvcGUsIHVuc2lnbmVkIHRv
dGFsTGVuZ3RoKQ0Kew0KICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IG51bGxw
dHI7DQogICAgaWYgKHRvdGFsTGVuZ3RoID4gdGFibGUtPmxlbmd0aCgpKSB7DQogICAgICAgIENo
ZWNrZWQ8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoID0gdG90YWxMZW5ndGggLSB0YWJsZS0+bGVu
Z3RoKCk7DQogICAgICAgIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93
bj4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwo
dm0sIChvdmVyZmxvd0xlbmd0aCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKS51bnNh
ZmVHZXQoKSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsNCiAgICB9
DQoNCiAgICBTY29wZWRBcmd1bWVudHMqIHJlc3VsdCA9IG5ldyAoDQogICAgICAgIE5vdE51bGws
DQogICAgICAgIGFsbG9jYXRlQ2VsbDxTY29wZWRBcmd1bWVudHM+KHZtLmhlYXApKQ0KICAgICAg
ICBTY29wZWRBcmd1bWVudHModm0sIHN0cnVjdHVyZSwgc3RvcmFnZSwgdG90YWxMZW5ndGgpOw0K
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGNhbGxlZSwgdGFibGUsIHNjb3BlKTsNCiAg
ICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQpTY29wZWRBcmd1bWVudHMqIFNjb3BlZEFyZ3VtZW50czo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRnVuY3Rpb24qIGNhbGxlZSwg
U2NvcGVkQXJndW1lbnRzVGFibGUqIHRhYmxlLCBKU0xleGljYWxFbnZpcm9ubWVudCogc2NvcGUs
IHVuc2lnbmVkIHRvdGFsTGVuZ3RoKQ0Kew0KICAgIFNjb3BlZEFyZ3VtZW50cyogcmVzdWx0ID0N
CiAgICAgICAgY3JlYXRlVW5pbml0aWFsaXplZCh2bSwgc3RydWN0dXJlLCBjYWxsZWUsIHRhYmxl
LCBzY29wZSwgdG90YWxMZW5ndGgpOw0KDQogICAgdW5zaWduZWQgbmFtZWRMZW5ndGggPSB0YWJs
ZS0+bGVuZ3RoKCk7DQogICAgZm9yICh1bnNpZ25lZCBpID0gbmFtZWRMZW5ndGg7IGkgPCB0b3Rh
bExlbmd0aDsgKytpKQ0KICAgICAgICByZXN1bHQtPnN0b3JhZ2UoKVtpIC0gbmFtZWRMZW5ndGhd
LmNsZWFyKCk7DQogICAgDQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KU2NvcGVkQXJndW1lbnRz
KiBTY29wZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgU2NvcGVkQXJndW1lbnRzVGFibGUqIHRhYmxl
LCBKU0xleGljYWxFbnZpcm9ubWVudCogc2NvcGUpDQp7DQogICAgcmV0dXJuIGNyZWF0ZUJ5Q29w
eWluZ0Zyb20oDQogICAgICAgIGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5zY29w
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSwNCiAgICAgICAgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAr
IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
LA0KICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSksIHRh
YmxlLCBzY29wZSk7DQp9DQoNClNjb3BlZEFyZ3VtZW50cyogU2NvcGVkQXJndW1lbnRzOjpjcmVh
dGVCeUNvcHlpbmdGcm9tKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ2lzdGVyKiBh
cmd1bWVudHNTdGFydCwgdW5zaWduZWQgdG90YWxMZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSwg
U2NvcGVkQXJndW1lbnRzVGFibGUqIHRhYmxlLCBKU0xleGljYWxFbnZpcm9ubWVudCogc2NvcGUp
DQp7DQogICAgU2NvcGVkQXJndW1lbnRzKiByZXN1bHQgPQ0KICAgICAgICBjcmVhdGVVbmluaXRp
YWxpemVkKHZtLCBzdHJ1Y3R1cmUsIGNhbGxlZSwgdGFibGUsIHNjb3BlLCB0b3RhbExlbmd0aCk7
DQogICAgDQogICAgdW5zaWduZWQgbmFtZWRMZW5ndGggPSB0YWJsZS0+bGVuZ3RoKCk7DQogICAg
Zm9yICh1bnNpZ25lZCBpID0gbmFtZWRMZW5ndGg7IGkgPCB0b3RhbExlbmd0aDsgKytpKQ0KICAg
ICAgICByZXN1bHQtPnN0b3JhZ2UoKVtpIC0gbmFtZWRMZW5ndGhdLnNldCh2bSwgcmVzdWx0LCBh
cmd1bWVudHNTdGFydFtpXS5qc1ZhbHVlKCkpOw0KICAgIA0KICAgIHJldHVybiByZXN1bHQ7DQp9
DQoNCnZvaWQgU2NvcGVkQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpDQp7DQogICAgU2NvcGVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8U2NvcGVkQXJndW1lbnRzKj4oY2VsbCk7DQogICAgZG8geyAodm9pZCl0aGlz
T2JqZWN0OyAodm9pZClpbmZvKCk7IH0gd2hpbGUgKDApOw0KICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7DQoNCiAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2NhbGxlZSk7DQogICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZSk7DQog
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zY29wZSk7DQogICAgDQogICAgaWYgKFdy
aXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IHRoaXNPYmplY3QtPm1fc3RvcmFnZS5nZXQo
KSkgew0KICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlhcnkoc3RvcmFnZSk7DQogICAgICAgIGlm
ICh0aGlzT2JqZWN0LT5tX3RvdGFsTGVuZ3RoID4gdGhpc09iamVjdC0+bV90YWJsZS0+bGVuZ3Ro
KCkpDQogICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCB0aGlzT2JqZWN0
LT5tX3RvdGFsTGVuZ3RoIC0gdGhpc09iamVjdC0+bV90YWJsZS0+bGVuZ3RoKCkpOw0KICAgIH0N
Cn0NCg0KU3RydWN0dXJlKiBTY29wZWRBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0Kew0KICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKFNjb3BlZEFyZ3VtZW50c1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCn0N
Cg0Kdm9pZCBTY29wZWRBcmd1bWVudHM6Om92ZXJyaWRlVGhpbmdzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpDQp7DQogICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOw0KDQogICAg
ZG8geyBpZiAoKCEoIW1fb3ZlcnJvZGVUaGluZ3MpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDEy
NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZS9TY29wZWRBcmd1bWVudHMuY3BwIiwgIF9fRlVOQ1RJT05fXyAgLCAyMDYgKTsgfSB3aGls
ZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICANCiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV90YWJsZS0+bGVuZ3RoKCkpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7DQogICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIG1fY2FsbGVlLmdldCgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7DQogICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOw0KICAgIA0KICAgIG1fb3ZlcnJvZGVUaGluZ3MgPSB0cnVlOw0K
fQ0KDQp2b2lkIFNjb3BlZEFyZ3VtZW50czo6b3ZlcnJpZGVUaGluZ3NJZk5lY2Vzc2FyeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQ0Kew0KICAgIGlmICghbV9vdmVycm9kZVRoaW5ncykN
CiAgICAgICAgb3ZlcnJpZGVUaGluZ3MoZ2xvYmFsT2JqZWN0KTsNCn0NCg0Kdm9pZCBTY29wZWRB
cmd1bWVudHM6OnVubWFwQXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWlu
dDMyX3QgaSkNCnsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgYXV0byBz
Y29wZSA9IEpTQzo6VGhyb3dTY29wZSgodm0pKTsNCiAgICAoKHZvaWQpMCk7DQogICAgdW5zaWdu
ZWQgbmFtZWRMZW5ndGggPSBtX3RhYmxlLT5sZW5ndGgoKTsNCiAgICBpZiAoaSA8IG5hbWVkTGVu
Z3RoKSB7DQogICAgICAgIGF1dG8qIG1heWJlQ2xvbmVkID0gbV90YWJsZS0+dHJ5U2V0KHZtLCBp
LCBTY29wZU9mZnNldCgpKTsNCiAgICAgICAgaWYgKCghbWF5YmVDbG9uZWQpKSB7DQogICAgICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7DQogICAgICAg
ICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgbV90YWJsZS5zZXQodm0sIHRoaXMsIG1h
eWJlQ2xvbmVkKTsNCiAgICB9IGVsc2UNCiAgICAgICAgc3RvcmFnZSgpW2kgLSBuYW1lZExlbmd0
aF0uY2xlYXIoKTsNCn0NCg0Kdm9pZCBTY29wZWRBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKiBmaXJzdEVsZW1lbnREZXN0LCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkNCnsNCiAgICBHZW5lcmljQXJndW1lbnRz
Ojpjb3B5VG9Bcmd1bWVudHMoZ2xvYmFsT2JqZWN0LCBmaXJzdEVsZW1lbnREZXN0LCBvZmZzZXQs
IGxlbmd0aCk7DQp9DQoNCn0gDQoNCiNsaW5lIDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxc
YnVpbGRfYW1kNjRcXEphdmFTY3JpcHRDb3JlXFxEZXJpdmVkU291cmNlc1xcdW5pZmllZC1zb3Vy
Y2VzXFxVbmlmaWVkU291cmNlLWYyZTE4ZmZjLTMyLmNwcCINCiNsaW5lIDEgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TY29wZWRBcmd1
bWVudHNUYWJsZS5jcHAiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xp
bmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
Y29uZmlnLmgiDQoNCg0KI2xpbmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5jcHAiDQoNCg0K
DQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY29uc3QgQ2xhc3NJbmZvIFNjb3BlZEFyZ3VtZW50
c1RhYmxlOjpzX2luZm8gPSB7ICJTY29wZWRBcmd1bWVudHNUYWJsZSIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIEpTQ2FzdGluZ0hlbHBlcnM6OkluaGVyaXRzVHJhaXRzPFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlPjo6dHlwZVJhbmdlLCB7ICZTY29wZWRBcmd1bWVudHNUYWJsZTo6ZGVzdHJveSwg
JlNjb3BlZEFyZ3VtZW50c1RhYmxlOjp2aXNpdENoaWxkcmVuLCAmU2NvcGVkQXJndW1lbnRzVGFi
bGU6OmdldENhbGxEYXRhLCAmU2NvcGVkQXJndW1lbnRzVGFibGU6OmdldENvbnN0cnVjdERhdGEs
ICZTY29wZWRBcmd1bWVudHNUYWJsZTo6cHV0LCAmU2NvcGVkQXJndW1lbnRzVGFibGU6OnB1dEJ5
SW5kZXgsICZTY29wZWRBcmd1bWVudHNUYWJsZTo6ZGVsZXRlUHJvcGVydHksICZTY29wZWRBcmd1
bWVudHNUYWJsZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4LCAmU2NvcGVkQXJndW1lbnRzVGFibGU6
OmdldE93blByb3BlcnR5U2xvdCwgJlNjb3BlZEFyZ3VtZW50c1RhYmxlOjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4LCAmU2NvcGVkQXJndW1lbnRzVGFibGU6OmRvUHV0UHJvcGVydHlTZWN1cml0
eUNoZWNrLCAmU2NvcGVkQXJndW1lbnRzVGFibGU6OnRvVGhpcywgJlNjb3BlZEFyZ3VtZW50c1Rh
YmxlOjpkZWZhdWx0VmFsdWUsICZTY29wZWRBcmd1bWVudHNUYWJsZTo6Z2V0T3duUHJvcGVydHlO
YW1lcywgJlNjb3BlZEFyZ3VtZW50c1RhYmxlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMs
ICZTY29wZWRBcmd1bWVudHNUYWJsZTo6Z2V0UHJvcGVydHlOYW1lcywgJlNjb3BlZEFyZ3VtZW50
c1RhYmxlOjpnZXRFbnVtZXJhYmxlTGVuZ3RoLCAmU2NvcGVkQXJndW1lbnRzVGFibGU6OmdldFN0
cnVjdHVyZVByb3BlcnR5TmFtZXMsICZTY29wZWRBcmd1bWVudHNUYWJsZTo6Z2V0R2VuZXJpY1By
b3BlcnR5TmFtZXMsICZTY29wZWRBcmd1bWVudHNUYWJsZTo6Y2xhc3NOYW1lLCAmU2NvcGVkQXJn
dW1lbnRzVGFibGU6OnRvU3RyaW5nTmFtZSwgJlNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjdXN0b21I
YXNJbnN0YW5jZSwgJlNjb3BlZEFyZ3VtZW50c1RhYmxlOjpkZWZpbmVPd25Qcm9wZXJ0eSwgJlNj
b3BlZEFyZ3VtZW50c1RhYmxlOjpwcmV2ZW50RXh0ZW5zaW9ucywgJlNjb3BlZEFyZ3VtZW50c1Rh
YmxlOjppc0V4dGVuc2libGUsICZTY29wZWRBcmd1bWVudHNUYWJsZTo6c2V0UHJvdG90eXBlLCAm
U2NvcGVkQXJndW1lbnRzVGFibGU6OmdldFByb3RvdHlwZSwgJlNjb3BlZEFyZ3VtZW50c1RhYmxl
OjpkdW1wVG9TdHJlYW0sICZTY29wZWRBcmd1bWVudHNUYWJsZTo6YW5hbHl6ZUhlYXAsICZTY29w
ZWRBcmd1bWVudHNUYWJsZTo6ZXN0aW1hdGVkU2l6ZSwgJlNjb3BlZEFyZ3VtZW50c1RhYmxlOjp2
aXNpdE91dHB1dENvbnN0cmFpbnRzLCB9LCBTY29wZWRBcmd1bWVudHNUYWJsZTo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlLCBzaXplb2YoU2NvcGVkQXJndW1lbnRzVGFibGUpLCB9Ow0KDQpTY29wZWRB
cmd1bWVudHNUYWJsZTo6U2NvcGVkQXJndW1lbnRzVGFibGUoVk0mIHZtKQ0KICAgIDogQmFzZSh2
bSwgdm0uc2NvcGVkQXJndW1lbnRzVGFibGVTdHJ1Y3R1cmUuZ2V0KCkpDQogICAgLCBtX2xlbmd0
aCgwKQ0KICAgICwgbV9sb2NrZWQoZmFsc2UpDQp7DQp9DQoNClNjb3BlZEFyZ3VtZW50c1RhYmxl
Ojp+U2NvcGVkQXJndW1lbnRzVGFibGUoKQ0Kew0KfQ0KDQp2b2lkIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkNCnsNCiAgICBzdGF0aWNfY2FzdDxTY29wZWRBcmd1
bWVudHNUYWJsZSo+KGNlbGwpLT5TY29wZWRBcmd1bWVudHNUYWJsZTo6flNjb3BlZEFyZ3VtZW50
c1RhYmxlKCk7DQp9DQoNClNjb3BlZEFyZ3VtZW50c1RhYmxlKiBTY29wZWRBcmd1bWVudHNUYWJs
ZTo6Y3JlYXRlKFZNJiB2bSkNCnsNCiAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogcmVzdWx0ID0N
CiAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2NvcGVkQXJndW1lbnRzVGFibGU+
KHZtLmhlYXApKSBTY29wZWRBcmd1bWVudHNUYWJsZSh2bSk7DQogICAgcmVzdWx0LT5maW5pc2hD
cmVhdGlvbih2bSk7DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KU2NvcGVkQXJndW1lbnRzVGFi
bGUqIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjp0cnlDcmVhdGUoVk0mIHZtLCB1aW50MzJfdCBsZW5n
dGgpDQp7DQogICAgdm9pZCogYnVmZmVyID0gdHJ5QWxsb2NhdGVDZWxsPFNjb3BlZEFyZ3VtZW50
c1RhYmxlPih2bS5oZWFwKTsNCiAgICBpZiAoKCFidWZmZXIpKQ0KICAgICAgICByZXR1cm4gbnVs
bHB0cjsNCiAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBi
dWZmZXIpIFNjb3BlZEFyZ3VtZW50c1RhYmxlKHZtKTsNCiAgICByZXN1bHQtPmZpbmlzaENyZWF0
aW9uKHZtKTsNCg0KICAgIHJlc3VsdC0+bV9sZW5ndGggPSBsZW5ndGg7DQogICAgcmVzdWx0LT5t
X2FyZ3VtZW50cyA9IEFyZ3VtZW50c1B0cjo6dHJ5Q3JlYXRlKGxlbmd0aCk7DQogICAgaWYgKCgh
cmVzdWx0LT5tX2FyZ3VtZW50cykpDQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIHJldHVy
biByZXN1bHQ7DQp9DQoNClNjb3BlZEFyZ3VtZW50c1RhYmxlKiBTY29wZWRBcmd1bWVudHNUYWJs
ZTo6dHJ5Q2xvbmUoVk0mIHZtKQ0Kew0KICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiByZXN1bHQg
PSB0cnlDcmVhdGUodm0sIG1fbGVuZ3RoKTsNCiAgICBpZiAoKCFyZXN1bHQpKQ0KICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsNCiAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xlbmd0aDsgaS0tOykNCiAg
ICAgICAgcmVzdWx0LT5hdChpKSA9IHRoaXMtPmF0KGkpOw0KICAgIHJldHVybiByZXN1bHQ7DQp9
DQoNClNjb3BlZEFyZ3VtZW50c1RhYmxlKiBTY29wZWRBcmd1bWVudHNUYWJsZTo6dHJ5U2V0TGVu
Z3RoKFZNJiB2bSwgdWludDMyX3QgbmV3TGVuZ3RoKQ0Kew0KICAgIGlmICgoIW1fbG9ja2VkKSkg
ew0KICAgICAgICBBcmd1bWVudHNQdHIgbmV3QXJndW1lbnRzID0gQXJndW1lbnRzUHRyOjp0cnlD
cmVhdGUobmV3TGVuZ3RoLCBuZXdMZW5ndGgpOw0KICAgICAgICBpZiAoKCFuZXdBcmd1bWVudHMp
KQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQogICAgICAgIGZvciAodW5zaWduZWQgaSA9
IHN0ZDo6bWluKG1fbGVuZ3RoLCBuZXdMZW5ndGgpOyBpLS07KQ0KICAgICAgICAgICAgbmV3QXJn
dW1lbnRzLmF0KGksIG5ld0xlbmd0aCkgPSB0aGlzLT5hdChpKTsNCiAgICAgICAgbV9sZW5ndGgg
PSBuZXdMZW5ndGg7DQogICAgICAgIG1fYXJndW1lbnRzID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tN
b3ZlUGFyYW1ldGVyPihuZXdBcmd1bWVudHMpOw0KICAgICAgICByZXR1cm4gdGhpczsNCiAgICB9
DQogICAgDQogICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHJlc3VsdCA9IHRyeUNyZWF0ZSh2bSwg
bmV3TGVuZ3RoKTsNCiAgICBpZiAoKCFyZXN1bHQpKQ0KICAgICAgICByZXR1cm4gbnVsbHB0cjsN
CiAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihtX2xlbmd0aCwgbmV3TGVuZ3RoKTsgaS0t
OykNCiAgICAgICAgcmVzdWx0LT5hdChpKSA9IHRoaXMtPmF0KGkpOw0KICAgIHJldHVybiByZXN1
bHQ7DQp9DQoNCnN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFNj
b3BlT2Zmc2V0Pjo6dmFsdWUsICIiKTsNCg0KU2NvcGVkQXJndW1lbnRzVGFibGUqIFNjb3BlZEFy
Z3VtZW50c1RhYmxlOjp0cnlTZXQoVk0mIHZtLCB1aW50MzJfdCBpLCBTY29wZU9mZnNldCB2YWx1
ZSkNCnsNCiAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogcmVzdWx0Ow0KICAgIGlmICgobV9sb2Nr
ZWQpKSB7DQogICAgICAgIHJlc3VsdCA9IHRyeUNsb25lKHZtKTsNCiAgICAgICAgaWYgKCghcmVz
dWx0KSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0gZWxzZQ0KICAgICAgICBy
ZXN1bHQgPSB0aGlzOw0KICAgIHJlc3VsdC0+YXQoaSkgPSB2YWx1ZTsNCiAgICByZXR1cm4gcmVz
dWx0Ow0KfQ0KDQpTdHJ1Y3R1cmUqIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkNCnsNCiAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KfQ0K
DQp9IA0KDQojbGluZSA2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxK
YXZhU2NyaXB0Q29yZVxcRGVyaXZlZFNvdXJjZXNcXHVuaWZpZWQtc291cmNlc1xcVW5pZmllZFNv
dXJjZS1mMmUxOGZmYy0zMi5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmln
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUg
MjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29u
ZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgNDAgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KI2xp
bmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCINCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRlYnVnZ2VyXFxEZWJ1Z2dlci5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcZGVidWdnZXJcXEJyZWFrcG9pbnQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcZGVidWdnZXJcXERlYnVn
Z2VyUHJpbWl0aXZlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQp0eXBlZGVm
IHNpemVfdCBTb3VyY2VJRDsNCnN0YXRpYyBjb25zdGV4cHIgU291cmNlSUQgbm9Tb3VyY2VJRCA9
IDA7DQoNCnR5cGVkZWYgc2l6ZV90IEJyZWFrcG9pbnRJRDsNCnN0YXRpYyBjb25zdGV4cHIgQnJl
YWtwb2ludElEIG5vQnJlYWtwb2ludElEID0gMDsNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRlYnVnZ2VyXFxCcmVha3Bv
aW50LmgiDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpzdHJ1Y3QgQnJlYWtwb2ludCA6IHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxCcmVha3BvaW50PiB7DQogICAgQnJlYWtwb2ludCgp
DQogICAgew0KICAgIH0NCg0KICAgIEJyZWFrcG9pbnQoU291cmNlSUQgc291cmNlSUQsIHVuc2ln
bmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbiwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wg
YXV0b0NvbnRpbnVlLCB1bnNpZ25lZCBpZ25vcmVDb3VudCkNCiAgICAgICAgOiBzb3VyY2VJRChz
b3VyY2VJRCkNCiAgICAgICAgLCBsaW5lKGxpbmUpDQogICAgICAgICwgY29sdW1uKGNvbHVtbikN
CiAgICAgICAgLCBjb25kaXRpb24oY29uZGl0aW9uKQ0KICAgICAgICAsIGF1dG9Db250aW51ZShh
dXRvQ29udGludWUpDQogICAgICAgICwgaWdub3JlQ291bnQoaWdub3JlQ291bnQpDQogICAgew0K
ICAgIH0NCg0KICAgIEJyZWFrcG9pbnRJRCBpZCB7IG5vQnJlYWtwb2ludElEIH07DQogICAgU291
cmNlSUQgc291cmNlSUQgeyBub1NvdXJjZUlEIH07DQogICAgdW5zaWduZWQgbGluZSB7IDAgfTsN
CiAgICB1bnNpZ25lZCBjb2x1bW4geyAwIH07DQogICAgU3RyaW5nIGNvbmRpdGlvbjsNCiAgICBi
b29sIGF1dG9Db250aW51ZSB7IGZhbHNlIH07DQogICAgdW5zaWduZWQgaWdub3JlQ291bnQgeyAw
IH07DQogICAgdW5zaWduZWQgaGl0Q291bnQgeyAwIH07DQogICAgYm9vbCByZXNvbHZlZCB7IGZh
bHNlIH07DQoNCnByaXZhdGU6DQogICAgQnJlYWtwb2ludCogbV9wcmV2Ow0KICAgIEJyZWFrcG9p
bnQqIG1fbmV4dDsNCg0KICAgIGZyaWVuZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtlZExpc3ROb2Rl
PEJyZWFrcG9pbnQ+Ow0KfTsNCg0KY2xhc3MgQnJlYWtwb2ludHNMaXN0IDogcHVibGljIERvdWJs
eUxpbmtlZExpc3Q8QnJlYWtwb2ludD4sDQogICAgcHVibGljIFJlZkNvdW50ZWQ8QnJlYWtwb2lu
dHNMaXN0PiB7DQpwdWJsaWM6DQogICAgfkJyZWFrcG9pbnRzTGlzdCgpDQogICAgew0KICAgICAg
ICBCcmVha3BvaW50KiBicmVha3BvaW50Ow0KICAgICAgICB3aGlsZSAoKGJyZWFrcG9pbnQgPSBy
ZW1vdmVIZWFkKCkpKQ0KICAgICAgICAgICAgZGVsZXRlIGJyZWFrcG9pbnQ7DQogICAgICAgICgo
dm9pZCkwKTsNCiAgICB9DQp9Ow0KDQp9IA0KI2xpbmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcZGVidWdnZXJcXERlYnVnZ2VyLmgiDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
ZGVidWdnZXJcXERlYnVnZ2VyQ2FsbEZyYW1lLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaW50
ZXJwcmV0ZXJcXFNoYWRvd0NoaWNrZW4uaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQpuYW1l
c3BhY2UgSlNDIHsNCg0KY2xhc3MgQ2FsbEZyYW1lOw0KY2xhc3MgQ29kZUJsb2NrOw0KY2xhc3Mg
SlNBcnJheTsNCmNsYXNzIEpTT2JqZWN0Ow0KY2xhc3MgSlNTY29wZTsNCmNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsNCmNsYXNzIFNsb3RWaXNpdG9yOw0KY2xhc3MgVk07DQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KY2xhc3MgU2hhZG93Q2hpY2tlbiB7
DQogICAgU2hhZG93Q2hpY2tlbihjb25zdCBTaGFkb3dDaGlja2VuJikgPSBkZWxldGU7IFNoYWRv
d0NoaWNrZW4mIG9wZXJhdG9yPShjb25zdCBTaGFkb3dDaGlja2VuJikgPSBkZWxldGU7Ow0KICAg
IHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhz
aXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShw
KTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZh
c3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RG
OjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2
b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJr
aXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VB
U2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgc3RydWN0IFBhY2tl
dCB7DQogICAgICAgIFBhY2tldCgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB1bmxpa2VseVZhbHVlID0gMHg3YTExOw0K
DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50cHRyX3QgdGFpbE1hcmtlclZhbHVlID0gc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KHVubGlrZWx5VmFsdWUpOw0KICAgICAgICBzdGF0aWMgSlNPYmpl
Y3QqIHRhaWxNYXJrZXIoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PEpTT2JqZWN0Kj4odGFpbE1hcmtlclZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgc3RhdGljIEpTT2JqZWN0KiB0aHJvd01hcmtlcigpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
dW5saWtlbHlWYWx1ZSArIDEpKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgc3RhdGlj
IFBhY2tldCBwcm9sb2d1ZShKU09iamVjdCogY2FsbGVlLCBDYWxsRnJhbWUqIGZyYW1lLCBDYWxs
RnJhbWUqIGNhbGxlckZyYW1lLCBKU1Njb3BlKiBzY29wZSkNCiAgICAgICAgew0KICAgICAgICAg
ICAgUGFja2V0IHJlc3VsdDsNCiAgICAgICAgICAgIHJlc3VsdC5jYWxsZWUgPSBjYWxsZWU7DQog
ICAgICAgICAgICByZXN1bHQuZnJhbWUgPSBmcmFtZTsNCiAgICAgICAgICAgIHJlc3VsdC5jYWxs
ZXJGcmFtZSA9IGNhbGxlckZyYW1lOw0KICAgICAgICAgICAgcmVzdWx0LnNjb3BlID0gc2NvcGU7
DQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICBzdGF0aWMgUGFja2V0IHRhaWwoQ2FsbEZyYW1lKiBmcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUs
IEpTU2NvcGUqIHNjb3BlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4KQ0KICAgICAgICB7DQogICAgICAgICAgICBQYWNrZXQgcmVzdWx0Ow0KICAgICAg
ICAgICAgcmVzdWx0LmNhbGxlZSA9IHRhaWxNYXJrZXIoKTsNCiAgICAgICAgICAgIHJlc3VsdC5m
cmFtZSA9IGZyYW1lOw0KICAgICAgICAgICAgcmVzdWx0LnRoaXNWYWx1ZSA9IHRoaXNWYWx1ZTsN
CiAgICAgICAgICAgIHJlc3VsdC5zY29wZSA9IHNjb3BlOw0KICAgICAgICAgICAgcmVzdWx0LmNv
ZGVCbG9jayA9IGNvZGVCbG9jazsNCiAgICAgICAgICAgIHJlc3VsdC5jYWxsU2l0ZUluZGV4ID0g
Y2FsbFNpdGVJbmRleDsNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAg
ICAgICAgDQogICAgICAgIHN0YXRpYyBQYWNrZXQgdGhyb3dQYWNrZXQoKQ0KICAgICAgICB7DQog
ICAgICAgICAgICBQYWNrZXQgcmVzdWx0Ow0KICAgICAgICAgICAgcmVzdWx0LmNhbGxlZSA9IHRo
cm93TWFya2VyKCk7DQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAg
ICAgIA0KICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFj
YWxsZWU7IH0NCiAgICAgICAgDQogICAgICAgIGJvb2wgaXNQcm9sb2d1ZSgpIGNvbnN0IHsgcmV0
dXJuICp0aGlzICYmIGNhbGxlZSAhPSB0YWlsTWFya2VyKCkgJiYgY2FsbGVlICE9IHRocm93TWFy
a2VyKCk7IH0NCiAgICAgICAgYm9vbCBpc1RhaWwoKSBjb25zdCB7IHJldHVybiAqdGhpcyAmJiBj
YWxsZWUgPT0gdGFpbE1hcmtlcigpOyB9DQogICAgICAgIGJvb2wgaXNUaHJvdygpIGNvbnN0IHsg
cmV0dXJuICp0aGlzICYmIGNhbGxlZSA9PSB0aHJvd01hcmtlcigpOyB9DQogICAgICAgIA0KICAg
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSB7IEpTVmFsdWUoKSB9Ow0KICAgICAgICBKU09iamVj
dCogY2FsbGVlIHsgbnVsbHB0ciB9Ow0KICAgICAgICBDYWxsRnJhbWUqIGZyYW1lIHsgbnVsbHB0
ciB9Ow0KICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lIHsgbnVsbHB0ciB9Ow0KICAgICAg
ICBKU1Njb3BlKiBzY29wZSB7IG51bGxwdHIgfTsNCiAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgeyBudWxscHRyIH07DQogICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleDsNCiAg
ICB9Ow0KICAgIA0KICAgIHN0cnVjdCBGcmFtZSB7DQogICAgICAgIEZyYW1lKCkNCiAgICAgICAg
ew0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBGcmFtZShKU09iamVjdCogY2FsbGVlLCBD
YWxsRnJhbWUqIGZyYW1lLCBib29sIGlzVGFpbERlbGV0ZWQsIEpTVmFsdWUgdGhpc1ZhbHVlID0g
SlNWYWx1ZSgpLCBKU1Njb3BlKiBzY29wZSA9IG51bGxwdHIsIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gbnVsbHB0ciwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gQ2FsbFNpdGVJbmRleCgp
KQ0KICAgICAgICAgICAgOiBjYWxsZWUoY2FsbGVlKQ0KICAgICAgICAgICAgLCBmcmFtZShmcmFt
ZSkNCiAgICAgICAgICAgICwgdGhpc1ZhbHVlKHRoaXNWYWx1ZSkNCiAgICAgICAgICAgICwgc2Nv
cGUoc2NvcGUpDQogICAgICAgICAgICAsIGNvZGVCbG9jayhjb2RlQmxvY2spDQogICAgICAgICAg
ICAsIGNhbGxTaXRlSW5kZXgoY2FsbFNpdGVJbmRleCkNCiAgICAgICAgICAgICwgaXNUYWlsRGVs
ZXRlZChpc1RhaWxEZWxldGVkKQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICAgICAgDQogICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFtZSYgb3RoZXIpIGNvbnN0DQogICAgICAgIHsN
CiAgICAgICAgICAgIHJldHVybiBjYWxsZWUgPT0gb3RoZXIuY2FsbGVlDQogICAgICAgICAgICAg
ICAgJiYgZnJhbWUgPT0gb3RoZXIuZnJhbWUNCiAgICAgICAgICAgICAgICAmJiB0aGlzVmFsdWUg
PT0gb3RoZXIudGhpc1ZhbHVlDQogICAgICAgICAgICAgICAgJiYgc2NvcGUgPT0gb3RoZXIuc2Nv
cGUNCiAgICAgICAgICAgICAgICAmJiBjb2RlQmxvY2sgPT0gb3RoZXIuY29kZUJsb2NrDQogICAg
ICAgICAgICAgICAgJiYgY2FsbFNpdGVJbmRleC5iaXRzKCkgPT0gb3RoZXIuY2FsbFNpdGVJbmRl
eC5iaXRzKCkNCiAgICAgICAgICAgICAgICAmJiBpc1RhaWxEZWxldGVkID09IG90aGVyLmlzVGFp
bERlbGV0ZWQ7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBGcmFtZSYgb3RoZXIpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIA0KICAgICAgICBKU09iamVjdCogY2FsbGVlIHsgbnVsbHB0ciB9Ow0KICAgICAgICBDYWxs
RnJhbWUqIGZyYW1lIHsgbnVsbHB0ciB9Ow0KICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSB7IEpT
VmFsdWUoKSB9Ow0KICAgICAgICBKU1Njb3BlKiBzY29wZSB7IG51bGxwdHIgfTsNCiAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgeyBudWxscHRyIH07DQogICAgICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleDsNCiAgICAgICAgYm9vbCBpc1RhaWxEZWxldGVkIHsgZmFsc2UgfTsNCiAg
ICB9Ow0KICAgIA0KICAgIFNoYWRvd0NoaWNrZW4oKTsNCiAgICB+U2hhZG93Q2hpY2tlbigpOw0K
ICAgIA0KICAgIHZvaWQgbG9nKFZNJiB2bSwgQ2FsbEZyYW1lKiwgY29uc3QgUGFja2V0Jik7DQog
ICAgDQogICAgdm9pZCB1cGRhdGUoVk0mLCBDYWxsRnJhbWUqKTsNCiAgICANCiAgICANCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPg0KICAgIHZv
aWQgaXRlcmF0ZShWTSYsIENhbGxGcmFtZSosIGNvbnN0IEZ1bmN0b3ImKTsNCiAgICANCiAgICB2
b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsNCiAgICB2b2lkIHJlc2V0KCk7DQogICAg
DQogICAgDQogICAgUGFja2V0KiBsb2coKSBjb25zdCB7IHJldHVybiBtX2xvZzsgfQ0KICAgIHVu
c2lnbmVkIGxvZ1NpemUoKSBjb25zdCB7IHJldHVybiBtX2xvZ1NpemU7IH0NCiAgICBQYWNrZXQq
KiBhZGRyZXNzT2ZMb2dDdXJzb3IoKSB7IHJldHVybiAmbV9sb2dDdXJzb3I7IH0NCiAgICBQYWNr
ZXQqIGxvZ0VuZCgpIHsgcmV0dXJuIG1fbG9nRW5kOyB9DQogICAgDQogICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIEpTQXJy
YXkqIGZ1bmN0aW9uc09uU3RhY2soSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCg0KcHJp
dmF0ZToNCiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KICAgIA0KICAg
IFBhY2tldCogbV9sb2cgeyBudWxscHRyIH07DQogICAgdW5zaWduZWQgbV9sb2dTaXplIHsgMCB9
Ow0KICAgIFBhY2tldCogbV9sb2dDdXJzb3IgeyBudWxscHRyIH07DQogICAgUGFja2V0KiBtX2xv
Z0VuZCB7IG51bGxwdHIgfTsNCiAgICANCiAgICBWZWN0b3I8RnJhbWU+IG1fc3RhY2s7DQp9Ow0K
DQp9IA0KDQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxkZWJ1Z2dlclxcRGVidWdnZXJDYWxsRnJhbWUuaCINCg0KDQoNCg0KDQpuYW1l
c3BhY2UgSlNDIHsNCg0KY2xhc3MgRGVidWdnZXJTY29wZTsNCmNsYXNzIEV4Y2VwdGlvbjsNCg0K
Y2xhc3MgRGVidWdnZXJDYWxsRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxEZWJ1Z2dlckNhbGxG
cmFtZT4gew0KcHVibGljOg0KICAgIGVudW0gVHlwZSB7IFByb2dyYW1UeXBlLCBGdW5jdGlvblR5
cGUgfTsNCg0KICAgIHN0YXRpYyBSZWY8RGVidWdnZXJDYWxsRnJhbWU+IGNyZWF0ZShWTSYsIENh
bGxGcmFtZSopOw0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFJlZlB0cjxEZWJ1Z2dlckNh
bGxGcmFtZT4gY2FsbGVyRnJhbWUoKTsNCiAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KCk7DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIFNvdXJjZUlEIHNvdXJjZUlEKCkgY29uc3Q7
DQoNCiAgICANCiAgICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubV9saW5l
Lnplcm9CYXNlZEludCgpOyB9DQogICAgaW50IGNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb24ubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7IH0NCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRp
b247IH0NCg0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBKU0dsb2JhbE9iamVjdCogZGVwcmVj
YXRlZFZNRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkgRGVidWdnZXJTY29wZSogc2NvcGUoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU3Ry
aW5nIGZ1bmN0aW9uTmFtZSgpIGNvbnN0Ow0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBUeXBl
IHR5cGUoKSBjb25zdDsNCiAgICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZSB0aGlzVmFs
dWUoVk0mKSBjb25zdDsNCiAgICBKU1ZhbHVlIGV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYsIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCwgTmFrZWRQdHI8RXhj
ZXB0aW9uPiYpOw0KDQogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3ZhbGlk
TWFjaGluZUZyYW1lIHx8IGlzVGFpbERlbGV0ZWQoKTsgfQ0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSB2b2lkIGludmFsaWRhdGUoKTsNCg0KICAgIA0KICAgIA0KDQogICAgX19kZWNsc3BlYyhk
bGxleHBvcnQpIFRleHRQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24oVk0mKTsNCiAgICBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgc3RhdGljIFRleHRQb3NpdGlvbiBwb3NpdGlvbkZvckNhbGxGcmFtZShW
TSYsIENhbGxGcmFtZSopOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBzdGF0aWMgU291cmNl
SUQgc291cmNlSURGb3JDYWxsRnJhbWUoQ2FsbEZyYW1lKik7DQoNCiAgICBib29sIGlzVGFpbERl
bGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0NoaWNrZW5GcmFtZS5pc1RhaWxEZWxldGVk
OyB9DQoNCnByaXZhdGU6DQogICAgRGVidWdnZXJDYWxsRnJhbWUoVk0mLCBDYWxsRnJhbWUqLCBj
b25zdCBTaGFkb3dDaGlja2VuOjpGcmFtZSYpOw0KDQogICAgQ2FsbEZyYW1lKiBtX3ZhbGlkTWFj
aGluZUZyYW1lOw0KICAgIFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gbV9jYWxsZXI7DQogICAg
VGV4dFBvc2l0aW9uIG1fcG9zaXRpb247DQogICAgDQogICAgDQogICAgU3Ryb25nPERlYnVnZ2Vy
U2NvcGU+IG1fc2NvcGU7DQogICAgU2hhZG93Q2hpY2tlbjo6RnJhbWUgbV9zaGFkb3dDaGlja2Vu
RnJhbWU7DQp9Ow0KDQp9IA0KI2xpbmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcZGVidWdnZXJcXERlYnVnZ2VyLmgiDQojbGluZSAxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGRlYnVnZ2VyXFxE
ZWJ1Z2dlclBhcnNlRGF0YS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNs
YXNzIFNvdXJjZVByb3ZpZGVyOw0KY2xhc3MgVk07DQoNCg0KDQplbnVtIGNsYXNzIERlYnVnZ2Vy
UGF1c2VQb3NpdGlvblR5cGUgeyBJbnZhbGlkLCBFbnRlciwgUGF1c2UsIExlYXZlIH07DQpzdHJ1
Y3QgRGVidWdnZXJQYXVzZVBvc2l0aW9uIHsNCiAgICBEZWJ1Z2dlclBhdXNlUG9zaXRpb25UeXBl
IHR5cGUgeyBEZWJ1Z2dlclBhdXNlUG9zaXRpb25UeXBlOjpJbnZhbGlkIH07DQogICAgSlNUZXh0
UG9zaXRpb24gcG9zaXRpb247DQp9Ow0KDQpjbGFzcyBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zIHsN
CnB1YmxpYzoNCiAgICBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zKCkgeyB9DQogICAgfkRlYnVnZ2Vy
UGF1c2VQb3NpdGlvbnMoKSB7IH0NCg0KICAgIHZvaWQgYXBwZW5kUGF1c2UoY29uc3QgSlNUZXh0
UG9zaXRpb24mIHBvc2l0aW9uKQ0KICAgIHsNCiAgICAgICAgbV9wb3NpdGlvbnMuYXBwZW5kKHsg
RGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6UGF1c2UsIHBvc2l0aW9uIH0pOw0KICAgIH0NCg0K
ICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQ0KICAg
IHsNCiAgICAgICAgbV9wb3NpdGlvbnMuYXBwZW5kKHsgRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlw
ZTo6RW50ZXIsIHBvc2l0aW9uIH0pOw0KICAgIH0NCg0KICAgIHZvaWQgYXBwZW5kTGVhdmUoY29u
c3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQ0KICAgIHsNCiAgICAgICAgbV9wb3NpdGlvbnMu
YXBwZW5kKHsgRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6TGVhdmUsIHBvc2l0aW9uIH0pOw0K
ICAgIH0NCg0KICAgIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBicmVha3BvaW50TG9jYXRpb25G
b3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQgY29sdW1uKTsNCg0KICAgIHZvaWQgc29ydCgpOw0K
DQpwcml2YXRlOg0KICAgIFZlY3RvcjxEZWJ1Z2dlclBhdXNlUG9zaXRpb24+IG1fcG9zaXRpb25z
Ow0KfTsNCg0KDQpzdHJ1Y3QgRGVidWdnZXJQYXJzZURhdGEgew0KICAgIERlYnVnZ2VyUGFyc2VE
YXRhKCkgeyB9DQogICAgfkRlYnVnZ2VyUGFyc2VEYXRhKCkgeyB9DQoNCiAgICBEZWJ1Z2dlclBh
dXNlUG9zaXRpb25zIHBhdXNlUG9zaXRpb25zOw0KfTsNCg0KYm9vbCBnYXRoZXJEZWJ1Z2dlclBh
cnNlRGF0YUZvclNvdXJjZShWTSYsIFNvdXJjZVByb3ZpZGVyKiwgRGVidWdnZXJQYXJzZURhdGEm
KTsNCg0KfSANCiNsaW5lIDI4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGRlYnVnZ2VyXFxEZWJ1Z2dlci5oIg0KDQoNCg0KDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0KY2xhc3MgQ2FsbEZyYW1lOw0KY2xhc3MgQ29kZUJsb2NrOw0KY2xhc3MgRXhj
ZXB0aW9uOw0KY2xhc3MgSlNHbG9iYWxPYmplY3Q7DQpjbGFzcyBTb3VyY2VQcm92aWRlcjsNCmNs
YXNzIFZNOw0KDQpjbGFzcyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgRGVidWdnZXIgew0KICAgIHB1
YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCog
b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXpl
KTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsg
fSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RN
YWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpm
YXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRG
YXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgRGVidWdnZXIoVk0mKTsN
CiAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOw0KDQogICAgVk0mIHZtKCkgeyByZXR1cm4gbV92bTsg
fQ0KDQogICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1l
KCk7DQogICAgYm9vbCBoYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2soKSBjb25zdA0KICAg
IHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gbV9oYXNIYW5kbGVyRm9yRXhj
ZXB0aW9uQ2FsbGJhY2s7DQogICAgfQ0KICAgIEpTVmFsdWUgY3VycmVudEV4Y2VwdGlvbigpDQog
ICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX2N1cnJlbnRFeGNlcHRp
b247DQogICAgfQ0KDQogICAgYm9vbCBuZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcygpIGNvbnN0IHsg
cmV0dXJuIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQgJiYgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRl
ICE9IERvbnRQYXVzZU9uRXhjZXB0aW9uczsgfQ0KICAgIGJvb2wgaXNJbnRlcmFjdGl2ZWx5RGVi
dWdnaW5nKCkgY29uc3QgeyByZXR1cm4gbV9icmVha3BvaW50c0FjdGl2YXRlZDsgfQ0KDQogICAg
ZW51bSBSZWFzb25Gb3JEZXRhY2ggew0KICAgICAgICBUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Np
b24sDQogICAgICAgIEdsb2JhbE9iamVjdElzRGVzdHJ1Y3RpbmcNCiAgICB9Ow0KICAgIHZvaWQg
YXR0YWNoKEpTR2xvYmFsT2JqZWN0Kik7DQogICAgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3Qq
LCBSZWFzb25Gb3JEZXRhY2gpOw0KICAgIGJvb2wgaXNBdHRhY2hlZChKU0dsb2JhbE9iamVjdCop
Ow0KDQogICAgdm9pZCByZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiwgU291cmNlUHJvdmlk
ZXIqKTsNCiAgICBCcmVha3BvaW50SUQgc2V0QnJlYWtwb2ludChCcmVha3BvaW50JiwgYm9vbCYg
ZXhpc3RpbmcpOw0KICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChCcmVha3BvaW50SUQpOw0KICAg
IHZvaWQgY2xlYXJCcmVha3BvaW50cygpOw0KDQogICAgdm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRz
KCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsgfQ0KICAgIHZvaWQgZGVhY3RpdmF0
ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZChmYWxzZSk7IH0NCiAgICBi
b29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9icmVha3BvaW50c0FjdGl2
YXRlZDsgfQ0KDQogICAgZW51bSBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHsNCiAgICAgICAgRG9u
dFBhdXNlT25FeGNlcHRpb25zLA0KICAgICAgICBQYXVzZU9uQWxsRXhjZXB0aW9ucywNCiAgICAg
ICAgUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucw0KICAgIH07DQogICAgUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSBwYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZU9u
RXhjZXB0aW9uc1N0YXRlOyB9DQogICAgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBh
dXNlT25FeGNlcHRpb25zU3RhdGUpOw0KDQogICAgdm9pZCBzZXRQYXVzZU9uRGVidWdnZXJTdGF0
ZW1lbnRzKGJvb2wgZW5hYmxlZCkgeyBtX3BhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMgPSBlbmFi
bGVkOyB9DQoNCiAgICBlbnVtIFJlYXNvbkZvclBhdXNlIHsNCiAgICAgICAgTm90UGF1c2VkLA0K
ICAgICAgICBQYXVzZWRGb3JFeGNlcHRpb24sDQogICAgICAgIFBhdXNlZEF0U3RhdGVtZW50LA0K
ICAgICAgICBQYXVzZWRBdEV4cHJlc3Npb24sDQogICAgICAgIFBhdXNlZEJlZm9yZVJldHVybiwN
CiAgICAgICAgUGF1c2VkQXRFbmRPZlByb2dyYW0sDQogICAgICAgIFBhdXNlZEZvckJyZWFrcG9p
bnQsDQogICAgICAgIFBhdXNlZEZvckRlYnVnZ2VyU3RhdGVtZW50LA0KICAgICAgICBQYXVzZWRB
ZnRlckJsYWNrYm94ZWRTY3JpcHQsDQogICAgfTsNCiAgICBSZWFzb25Gb3JQYXVzZSByZWFzb25G
b3JQYXVzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uRm9yUGF1c2U7IH0NCiAgICBCcmVha3Bv
aW50SUQgcGF1c2luZ0JyZWFrcG9pbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2luZ0JyZWFr
cG9pbnRJRDsgfQ0KDQogICAgdm9pZCBzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sKTsNCiAg
ICB2b2lkIGJyZWFrUHJvZ3JhbSgpOw0KICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7DQogICAg
dm9pZCBzdGVwTmV4dEV4cHJlc3Npb24oKTsNCiAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50KCk7
DQogICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOw0KICAgIHZvaWQgc3RlcE91dE9mRnVuY3Rp
b24oKTsNCg0KICAgIGVudW0gY2xhc3MgQmxhY2tib3hUeXBlIHsgRGVmZXJyZWQsIElnbm9yZWQg
fTsNCiAgICB2b2lkIHNldEJsYWNrYm94VHlwZShTb3VyY2VJRCwgT3B0aW9uYWw8QmxhY2tib3hU
eXBlPik7DQogICAgdm9pZCBjbGVhckJsYWNrYm94KCk7DQoNCiAgICBib29sIGlzUGF1c2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BhdXNlZDsgfQ0KICAgIGJvb2wgaXNTdGVwcGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RlcHBpbmdNb2RlID09IFN0ZXBwaW5nTW9kZUVuYWJsZWQ7IH0NCg0KICAg
IGJvb2wgc3VwcHJlc3NBbGxQYXVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N1cHByZXNzQWxsUGF1
c2VzOyB9DQogICAgdm9pZCBzZXRTdXBwcmVzc0FsbFBhdXNlcyhib29sIHN1cHByZXNzKSB7IG1f
c3VwcHJlc3NBbGxQYXVzZXMgPSBzdXBwcmVzczsgfQ0KDQogICAgdmlydHVhbCB2b2lkIHNvdXJj
ZVBhcnNlZChKU0dsb2JhbE9iamVjdCosIFNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51
bWJlciwgY29uc3QgV1RGOjpTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOw0KICAgIHZpcnR1YWwg
dm9pZCB3aWxsUnVuTWljcm90YXNrKCkgeyB9DQogICAgdmlydHVhbCB2b2lkIGRpZFJ1bk1pY3Jv
dGFzaygpIHsgfQ0KDQogICAgdm9pZCBleGNlcHRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBib29sIGhhc0NhdGNoSGFuZGxlcik7DQogICAg
dm9pZCBhdFN0YXRlbWVudChDYWxsRnJhbWUqKTsNCiAgICB2b2lkIGF0RXhwcmVzc2lvbihDYWxs
RnJhbWUqKTsNCiAgICB2b2lkIGNhbGxFdmVudChDYWxsRnJhbWUqKTsNCiAgICB2b2lkIHJldHVy
bkV2ZW50KENhbGxGcmFtZSopOw0KICAgIHZvaWQgdW53aW5kRXZlbnQoQ2FsbEZyYW1lKik7DQog
ICAgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oQ2FsbEZyYW1lKik7DQogICAgdm9pZCBkaWRFeGVj
dXRlUHJvZ3JhbShDYWxsRnJhbWUqKTsNCiAgICB2b2lkIGRpZFJlYWNoRGVidWdnZXJTdGF0ZW1l
bnQoQ2FsbEZyYW1lKik7DQoNCiAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlv
bnMoKTsNCg0KICAgIHZvaWQgcmVnaXN0ZXJDb2RlQmxvY2soQ29kZUJsb2NrKik7DQoNCiAgICBj
bGFzcyBQcm9maWxpbmdDbGllbnQgew0KICAgIHB1YmxpYzoNCiAgICAgICAgdmlydHVhbCB+UHJv
ZmlsaW5nQ2xpZW50KCk7DQogICAgICAgIHZpcnR1YWwgYm9vbCBpc0FscmVhZHlQcm9maWxpbmco
KSBjb25zdCA9IDA7DQogICAgICAgIHZpcnR1YWwgU2Vjb25kcyB3aWxsRXZhbHVhdGVTY3JpcHQo
KSA9IDA7DQogICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChTZWNvbmRzIHN0
YXJ0VGltZSwgUHJvZmlsaW5nUmVhc29uKSA9IDA7DQogICAgfTsNCg0KICAgIHZvaWQgc2V0UHJv
ZmlsaW5nQ2xpZW50KFByb2ZpbGluZ0NsaWVudCopOw0KICAgIGJvb2wgaGFzUHJvZmlsaW5nQ2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxpbmdDbGllbnQgIT0gbnVsbHB0cjsgfQ0KICAg
IGJvb2wgaXNBbHJlYWR5UHJvZmlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxpbmdDbGll
bnQgJiYgbV9wcm9maWxpbmdDbGllbnQtPmlzQWxyZWFkeVByb2ZpbGluZygpOyB9DQogICAgU2Vj
b25kcyB3aWxsRXZhbHVhdGVTY3JpcHQoKTsNCiAgICB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KFNl
Y29uZHMgc3RhcnRUaW1lLCBQcm9maWxpbmdSZWFzb24pOw0KDQpwcm90ZWN0ZWQ6DQogICAgdmly
dHVhbCB2b2lkIGhhbmRsZUJyZWFrcG9pbnRIaXQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBCcmVh
a3BvaW50JikgeyB9DQogICAgdmlydHVhbCB2b2lkIGhhbmRsZUV4Y2VwdGlvbkluQnJlYWtwb2lu
dENvbmRpdGlvbihKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopIGNvbnN0IHsgfQ0KICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZvclBhdXNlKSB7
IH0NCiAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygp
IHsgfQ0KDQpwcml2YXRlOg0KICAgIHR5cGVkZWYgSGFzaE1hcDxCcmVha3BvaW50SUQsIEJyZWFr
cG9pbnQqPiBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXA7DQoNCiAgICB0eXBlZGVmIEhhc2hN
YXA8dW5zaWduZWQsIFJlZlB0cjxCcmVha3BvaW50c0xpc3Q+LCBXVEY6OkludEhhc2g8aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBMaW5lVG9CcmVha3BvaW50
c01hcDsNCiAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlSUQsIExpbmVUb0JyZWFrcG9pbnRzTWFw
LCBXVEY6OkludEhhc2g8U291cmNlSUQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPFNvdXJjZUlEPj4gU291cmNlSURUb0JyZWFrcG9pbnRzTWFwOw0KDQogICAgY2xhc3MgQ2xl
YXJDb2RlQmxvY2tEZWJ1Z2dlclJlcXVlc3RzRnVuY3RvcjsNCiAgICBjbGFzcyBDbGVhckRlYnVn
Z2VyUmVxdWVzdHNGdW5jdG9yOw0KICAgIGNsYXNzIFNldFN0ZXBwaW5nTW9kZUZ1bmN0b3I7DQog
ICAgY2xhc3MgVG9nZ2xlQnJlYWtwb2ludEZ1bmN0b3I7DQoNCiAgICBjbGFzcyBQYXVzZVJlYXNv
bkRlY2xhcmF0aW9uIHsNCiAgICBwdWJsaWM6DQogICAgICAgIFBhdXNlUmVhc29uRGVjbGFyYXRp
b24oRGVidWdnZXImIGRlYnVnZ2VyLCBSZWFzb25Gb3JQYXVzZSByZWFzb24pDQogICAgICAgICAg
ICA6IG1fZGVidWdnZXIoZGVidWdnZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIG1fZGVidWdn
ZXIubV9yZWFzb25Gb3JQYXVzZSA9IHJlYXNvbjsNCiAgICAgICAgfQ0KDQogICAgICAgIH5QYXVz
ZVJlYXNvbkRlY2xhcmF0aW9uKCkNCiAgICAgICAgew0KICAgICAgICAgICAgbV9kZWJ1Z2dlci5t
X3JlYXNvbkZvclBhdXNlID0gTm90UGF1c2VkOw0KICAgICAgICB9DQogICAgcHJpdmF0ZToNCiAg
ICAgICAgRGVidWdnZXImIG1fZGVidWdnZXI7DQogICAgfTsNCg0KICAgIGJvb2wgaGFzQnJlYWtw
b2ludChTb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiwgQnJlYWtwb2ludCogaGl0QnJlYWtw
b2ludCk7DQoNCiAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgZGVidWdnZXJQYXJzZURhdGEoU291cmNl
SUQsIFNvdXJjZVByb3ZpZGVyKik7DQoNCiAgICB2b2lkIHVwZGF0ZU5lZWRGb3JPcERlYnVnQ2Fs
bGJhY2tzKCk7DQoNCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICBlbnVtIENhbGxG
cmFtZVVwZGF0ZUFjdGlvbiB7IEF0dGVtcHRQYXVzZSwgTm9QYXVzZSB9Ow0KICAgIHZvaWQgdXBk
YXRlQ2FsbEZyYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSosIENhbGxG
cmFtZVVwZGF0ZUFjdGlvbik7DQogICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVJbnRlcm5hbChKU0M6
OkNhbGxGcmFtZSopOw0KICAgIHZvaWQgcGF1c2VJZk5lZWRlZChKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7DQogICAgdm9pZCBjbGVhck5leHRQYXVzZVN0YXRlKCk7DQoNCiAgICBlbnVtIFN0ZXBwaW5n
TW9kZSB7DQogICAgICAgIFN0ZXBwaW5nTW9kZURpc2FibGVkLA0KICAgICAgICBTdGVwcGluZ01v
ZGVFbmFibGVkDQogICAgfTsNCiAgICB2b2lkIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGUp
Ow0KDQogICAgZW51bSBCcmVha3BvaW50U3RhdGUgew0KICAgICAgICBCcmVha3BvaW50RGlzYWJs
ZWQsDQogICAgICAgIEJyZWFrcG9pbnRFbmFibGVkDQogICAgfTsNCiAgICB2b2lkIHNldEJyZWFr
cG9pbnRzQWN0aXZhdGVkKGJvb2wpOw0KICAgIHZvaWQgdG9nZ2xlQnJlYWtwb2ludChDb2RlQmxv
Y2sqLCBCcmVha3BvaW50JiwgQnJlYWtwb2ludFN0YXRlKTsNCiAgICB2b2lkIGFwcGx5QnJlYWtw
b2ludHMoQ29kZUJsb2NrKik7DQogICAgdm9pZCB0b2dnbGVCcmVha3BvaW50KEJyZWFrcG9pbnQm
LCBCcmVha3BvaW50U3RhdGUpOw0KDQogICAgdm9pZCBjbGVhckRlYnVnZ2VyUmVxdWVzdHMoSlNH
bG9iYWxPYmplY3QqKTsNCiAgICB2b2lkIGNsZWFyUGFyc2VkRGF0YSgpOw0KDQogICAgVk0mIG1f
dm07DQogICAgSGFzaFNldDxKU0dsb2JhbE9iamVjdCo+IG1fZ2xvYmFsT2JqZWN0czsNCiAgICBI
YXNoTWFwPFNvdXJjZUlELCBEZWJ1Z2dlclBhcnNlRGF0YSwgV1RGOjpJbnRIYXNoPFNvdXJjZUlE
PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJRD4+IG1fcGFyc2VE
YXRhTWFwOw0KICAgIEhhc2hNYXA8U291cmNlSUQsIEJsYWNrYm94VHlwZSwgV1RGOjpJbnRIYXNo
PFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJRD4+
IG1fYmxhY2tib3hlZFNjcmlwdHM7DQoNCiAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZTsNCiAgICBib29sIG1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50
cyA6IDE7DQogICAgYm9vbCBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgOiAxOw0KICAgIGJvb2wg
bV9wYXVzZU9uU3RlcE5leHQgOiAxOw0KICAgIGJvb2wgbV9wYXVzZU9uU3RlcE91dCA6IDE7DQog
ICAgYm9vbCBtX3Bhc3RGaXJzdEV4cHJlc3Npb25JblN0YXRlbWVudCA6IDE7DQogICAgYm9vbCBt
X2lzUGF1c2VkIDogMTsNCiAgICBib29sIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQgOiAxOw0KICAg
IGJvb2wgbV9oYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2sgOiAxOw0KICAgIGJvb2wgbV9z
dXBwcmVzc0FsbFBhdXNlcyA6IDE7DQogICAgdW5zaWduZWQgbV9zdGVwcGluZ01vZGUgOiAxOyAN
Cg0KICAgIFJlYXNvbkZvclBhdXNlIG1fcmVhc29uRm9yUGF1c2U7DQogICAgSlNWYWx1ZSBtX2N1
cnJlbnRFeGNlcHRpb247DQogICAgQ2FsbEZyYW1lKiBtX3BhdXNlT25DYWxsRnJhbWUgeyBudWxs
cHRyIH07DQogICAgQ2FsbEZyYW1lKiBtX2N1cnJlbnRDYWxsRnJhbWUgeyBudWxscHRyIH07DQog
ICAgdW5zaWduZWQgbV9sYXN0RXhlY3V0ZWRMaW5lOw0KICAgIFNvdXJjZUlEIG1fbGFzdEV4ZWN1
dGVkU291cmNlSUQ7DQogICAgYm9vbCBtX2FmdGVyQmxhY2tib3hlZFNjcmlwdCB7IGZhbHNlIH07
DQoNCiAgICBCcmVha3BvaW50SUQgbV90b3BCcmVha3BvaW50SUQ7DQogICAgQnJlYWtwb2ludElE
IG1fcGF1c2luZ0JyZWFrcG9pbnRJRDsNCiAgICBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXAg
bV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQ7DQogICAgU291cmNlSURUb0JyZWFrcG9pbnRzTWFw
IG1fc291cmNlSURUb0JyZWFrcG9pbnRzOw0KDQogICAgUmVmUHRyPEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU+IG1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lOw0KDQogICAgUHJvZmlsaW5nQ2xpZW50
KiBtX3Byb2ZpbGluZ0NsaWVudCB7IG51bGxwdHIgfTsNCg0KICAgIGZyaWVuZCBjbGFzcyBEZWJ1
Z2dlclBhdXNlZFNjb3BlOw0KICAgIGZyaWVuZCBjbGFzcyBUZW1wb3JhcnlQYXVzZWRTdGF0ZTsN
CiAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOw0KfTsNCg0KfSANCiNsaW5l
IDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxFdmFsQ29kZUJsb2NrLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KI3ByYWdtYSBvbmNlDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEdsb2JhbENvZGVCbG9jay5oIg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCg0KDQoNCmNsYXNzIEdsb2JhbENvZGVC
bG9jayA6IHB1YmxpYyBDb2RlQmxvY2sgew0KICAgIHR5cGVkZWYgQ29kZUJsb2NrIEJhc2U7DQoN
CnByb3RlY3RlZDoNCiAgICBHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29weVBhcnNlZEJsb2NrVGFnLCBHbG9iYWxDb2RlQmxvY2smIG90aGVyKQ0KICAgICAg
ICA6IENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKQ0KICAg
IHsNCiAgICB9DQoNCiAgICBHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlKQ0KICAgICAgICA6IENvZGVCbG9j
ayh2bSwgc3RydWN0dXJlLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29w
ZSkNCiAgICB7DQogICAgfQ0KfTsNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKEdsb2JhbENvZGVCbG9j
aykgPT0gc2l6ZW9mKENvZGVCbG9jayksICJTdWJjbGFzc2VzIG9mIENvZGVCbG9jayBzaG91bGQg
YmUgdGhlIHNhbWUgc2l6ZSB0byBzaGFyZSBJc29TdWJzcGFjZSIpOw0KDQp9IA0KI2xpbmUgMzMg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNv
ZGVcXEV2YWxDb2RlQmxvY2suaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEV2YWxDb2Rl
QmxvY2sgZmluYWwgOiBwdWJsaWMgR2xvYmFsQ29kZUJsb2NrIHsNCnB1YmxpYzoNCiAgICB0eXBl
ZGVmIEdsb2JhbENvZGVCbG9jayBCYXNlOw0KICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6
SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpK
U0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNl
LnNwYWNlOw0KICAgIH0NCg0KICAgIHN0YXRpYyBFdmFsQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZt
LCBDb3B5UGFyc2VkQmxvY2tUYWcsIEV2YWxDb2RlQmxvY2smIG90aGVyKQ0KICAgIHsNCiAgICAg
ICAgRXZhbENvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxF
dmFsQ29kZUJsb2NrPih2bS5oZWFwKSkNCiAgICAgICAgICAgIEV2YWxDb2RlQmxvY2sodm0sIHZt
LmV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOw0K
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3Ro
ZXIpOw0KICAgICAgICByZXR1cm4gaW5zdGFuY2U7DQogICAgfQ0KDQogICAgc3RhdGljIEV2YWxD
b2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIEV2YWxFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3Bl
KQ0KICAgIHsNCiAgICAgICAgRXZhbENvZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxFdmFsQ29kZUJsb2NrPih2bS5oZWFwKSkNCiAgICAgICAgICAgIEV2YWxD
b2RlQmxvY2sodm0sIHZtLmV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIG93bmVyRXhlY3V0
YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsNCiAgICAgICAgaWYgKCFpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24odm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNj
b3BlKSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0KICAgICAgICByZXR1cm4gaW5zdGFu
Y2U7DQogICAgfQ0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAg
ew0KICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhDb2RlQmxvY2tUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
DQogICAgfQ0KDQogICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlQmxv
Y2soKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8VW5saW5rZWRFdmFsQ29kZUJsb2NrKj4odW5saW5r
ZWRDb2RlQmxvY2soKSk7IH0NCg0KcHJpdmF0ZToNCiAgICBFdmFsQ29kZUJsb2NrKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvcHlQYXJzZWRCbG9ja1RhZywgRXZhbENvZGVCbG9jayYg
b3RoZXIpDQogICAgICAgIDogR2xvYmFsQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1cmUsIENvcHlQYXJz
ZWRCbG9jaywgb3RoZXIpDQogICAgew0KICAgIH0NCiAgICAgICAgDQogICAgRXZhbENvZGVCbG9j
ayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFdmFsRXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3Bl
KiBzY29wZSkNCiAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0cnVjdHVyZSwgb3duZXJF
eGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpDQogICAgew0KICAgIH0NCn07DQpz
dGF0aWNfYXNzZXJ0KHNpemVvZihFdmFsQ29kZUJsb2NrKSA9PSBzaXplb2YoQ29kZUJsb2NrKSwg
IlN1YmNsYXNzZXMgb2YgQ29kZUJsb2NrIHNob3VsZCBiZSB0aGUgc2FtZSBzaXplIHRvIHNoYXJl
IElzb1N1YnNwYWNlIik7DQoNCn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxieXRlY29kZVxcRnVuY3Rpb25Db2RlQmxvY2suaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5
dGVjb2RlXFxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNw
YWNlIEpTQyB7DQoNCmNsYXNzIENhY2hlZEZ1bmN0aW9uQ29kZUJsb2NrOw0KDQpjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkQ29kZUJsb2NrIHsN
CnB1YmxpYzoNCiAgICB0eXBlZGVmIFVubGlua2VkQ29kZUJsb2NrIEJhc2U7DQogICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2VzcyBtb2RlPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIHZtLnVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2tTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb2RlVHlwZSBjb2RlVHlwZSwgY29uc3QgRXhlY3V0
YWJsZUluZm8mIGluZm8sIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSkNCiAgICB7DQogICAgICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
az4odm0uaGVhcCkpIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLnVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGNvZGVUeXBlLCBpbmZvLCBjb2RlR2VuZXJh
dGlvbk1vZGUpOw0KICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0pOw0KICAgICAg
ICByZXR1cm4gaW5zdGFuY2U7DQogICAgfQ0KDQogICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsNCg0KcHJpdmF0ZToNCiAgICBmcmllbmQgQ2FjaGVkRnVuY3Rpb25Db2RlQmxvY2s7DQoN
CiAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVUeXBlIGNvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbywgT3B0aW9u
U2V0PENvZGVHZW5lcmF0aW9uTW9kZT4gY29kZUdlbmVyYXRpb25Nb2RlKQ0KICAgICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSwgY29kZVR5cGUsIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSkNCiAg
ICB7DQogICAgfQ0KDQogICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayhEZWNvZGVyJiwgY29u
c3QgQ2FjaGVkRnVuY3Rpb25Db2RlQmxvY2smKTsNCiAgICANCnB1YmxpYzoNCiAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHBy
b3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZz
X2luZm87IH07DQp9Ow0KDQp9DQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcRnVuY3Rpb25Db2RlQmxvY2suaCINCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrIGZpbmFsIDogcHVibGlj
IENvZGVCbG9jayB7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBDb2RlQmxvY2sgQmFzZTsNCiAgICBw
cm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBz
dGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAm
c19pbmZvOyB9Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPg0KICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuICZ2bS5jb2RlQmxvY2tTcGFjZS5zcGFjZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgRnVu
Y3Rpb25Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgRnVuY3Rp
b25Db2RlQmxvY2smIG90aGVyKQ0KICAgIHsNCiAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db2RlQmxvY2s+KHZt
LmhlYXApKQ0KICAgICAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2sodm0sIHZtLmZ1bmN0aW9uQ29k
ZUJsb2NrU3RydWN0dXJlLmdldCgpLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKTsNCiAgICAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVyKTsNCiAg
ICAgICAgcmV0dXJuIGluc3RhbmNlOw0KICAgIH0NCg0KICAgIHN0YXRpYyBGdW5jdGlvbkNvZGVC
bG9jayogY3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLCBKU1Njb3BlKiBz
Y29wZSkNCiAgICB7DQogICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1bmN0aW9uQ29kZUJsb2NrPih2bS5oZWFwKSkNCiAgICAg
ICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB2bS5mdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVy
ZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpOw0KICAg
ICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgb3duZXJFeGVjdXRhYmxlLCB1
bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpKQ0KICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7DQog
ICAgICAgIHJldHVybiBpbnN0YW5jZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvZGVCbG9ja1R5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgRnVuY3Rpb25Db2Rl
QmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29weVBhcnNlZEJsb2NrVGFnLCBG
dW5jdGlvbkNvZGVCbG9jayYgb3RoZXIpDQogICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1
cmUsIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpDQogICAgew0KICAgIH0NCg0KICAgIEZ1bmN0aW9u
Q29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywgSlNTY29wZSogc2NvcGUpDQogICAgICAgIDogQ29kZUJsb2NrKHZtLCBzdHJ1Y3R1
cmUsIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKQ0KICAgIHsNCiAg
ICB9DQp9Ow0Kc3RhdGljX2Fzc2VydChzaXplb2YoRnVuY3Rpb25Db2RlQmxvY2spID09IHNpemVv
ZihDb2RlQmxvY2spLCAiU3ViY2xhc3NlcyBvZiBDb2RlQmxvY2sgc2hvdWxkIGJlIHRoZSBzYW1l
IHNpemUgdG8gc2hhcmUgSXNvU3Vic3BhY2UiKTsNCg0KfSANCiNsaW5lIDMyICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSXNvQ2VsbFNldElubGluZXMuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aGVhcFxcQXRvbUluZGljZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0Kc3Ry
dWN0IEF0b21JbmRpY2VzIHsNCiAgICBBdG9tSW5kaWNlcygpIHsgfQ0KICAgIA0KICAgIEF0b21J
bmRpY2VzKEhlYXBDZWxsKiBjZWxsKQ0KICAgICAgICA6IGJsb2NrKE1hcmtlZEJsb2NrOjpibG9j
a0ZvcihjZWxsKSkNCiAgICAgICAgLCBibG9ja0luZGV4KGJsb2NrLT5oYW5kbGUoKS5pbmRleCgp
KQ0KICAgICAgICAsIGF0b21OdW1iZXIoYmxvY2stPmF0b21OdW1iZXIoY2VsbCkpDQogICAgew0K
ICAgIH0NCiAgICANCiAgICBNYXJrZWRCbG9jayogYmxvY2s7DQogICAgdW5zaWduZWQgYmxvY2tJ
bmRleDsNCiAgICB1bnNpZ25lZCBhdG9tTnVtYmVyOw0KfTsNCg0KfSANCg0KI2xpbmUgMjkgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaGVhcFxcSXNv
Q2VsbFNldElubGluZXMuaCINCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQppbmxpbmUgYm9vbCBJ
c29DZWxsU2V0OjphZGQoSGVhcENlbGwqIGNlbGwpDQp7DQogICAgaWYgKGNlbGwtPmlzUHJlY2lz
ZUFsbG9jYXRpb24oKSkNCiAgICAgICAgcmV0dXJuICFtX2xvd2VyVGllckJpdHMuY29uY3VycmVu
dFRlc3RBbmRTZXQoY2VsbC0+cHJlY2lzZUFsbG9jYXRpb24oKS5sb3dlclRpZXJJbmRleCgpKTsN
CiAgICBBdG9tSW5kaWNlcyBhdG9tSW5kaWNlcyhjZWxsKTsNCiAgICBhdXRvJiBiaXRzUHRyUmVm
ID0gbV9iaXRzW2F0b21JbmRpY2VzLmJsb2NrSW5kZXhdOw0KICAgIGF1dG8qIGJpdHMgPSBiaXRz
UHRyUmVmLmdldCgpOw0KICAgIGlmICgoIWJpdHMpKQ0KICAgICAgICBiaXRzID0gYWRkU2xvdyhh
dG9tSW5kaWNlcy5ibG9ja0luZGV4KTsNCiAgICByZXR1cm4gIWJpdHMtPmNvbmN1cnJlbnRUZXN0
QW5kU2V0KGF0b21JbmRpY2VzLmF0b21OdW1iZXIpOw0KfQ0KDQppbmxpbmUgYm9vbCBJc29DZWxs
U2V0OjpyZW1vdmUoSGVhcENlbGwqIGNlbGwpDQp7DQogICAgaWYgKGNlbGwtPmlzUHJlY2lzZUFs
bG9jYXRpb24oKSkNCiAgICAgICAgcmV0dXJuICFtX2xvd2VyVGllckJpdHMuY29uY3VycmVudFRl
c3RBbmRDbGVhcihjZWxsLT5wcmVjaXNlQWxsb2NhdGlvbigpLmxvd2VyVGllckluZGV4KCkpOw0K
ICAgIEF0b21JbmRpY2VzIGF0b21JbmRpY2VzKGNlbGwpOw0KICAgIGF1dG8mIGJpdHNQdHJSZWYg
PSBtX2JpdHNbYXRvbUluZGljZXMuYmxvY2tJbmRleF07DQogICAgYXV0byogYml0cyA9IGJpdHNQ
dHJSZWYuZ2V0KCk7DQogICAgaWYgKCFiaXRzKQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
cmV0dXJuIGJpdHMtPmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoYXRvbUluZGljZXMuYXRvbU51bWJl
cik7DQp9DQoNCmlubGluZSBib29sIElzb0NlbGxTZXQ6OmNvbnRhaW5zKEhlYXBDZWxsKiBjZWxs
KSBjb25zdA0Kew0KICAgIGlmIChjZWxsLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCkpDQogICAgICAg
IHJldHVybiAhbV9sb3dlclRpZXJCaXRzLmdldChjZWxsLT5wcmVjaXNlQWxsb2NhdGlvbigpLmxv
d2VyVGllckluZGV4KCkpOw0KICAgIEF0b21JbmRpY2VzIGF0b21JbmRpY2VzKGNlbGwpOw0KICAg
IGF1dG8qIGJpdHMgPSBtX2JpdHNbYXRvbUluZGljZXMuYmxvY2tJbmRleF0uZ2V0KCk7DQogICAg
aWYgKGJpdHMpDQogICAgICAgIHJldHVybiBiaXRzLT5nZXQoYXRvbUluZGljZXMuYXRvbU51bWJl
cik7DQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0Kdm9p
ZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQ0Kew0KICAg
IEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkgPSBtX3N1YnNwYWNlLm1fZGlyZWN0b3J5Ow0KICAg
IChkaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9ibG9ja3NXaXRoQml0cyku
Zm9yRWFjaFNldEJpdCgNCiAgICAgICAgWyZdICh1bnNpZ25lZCBibG9ja0luZGV4KSB7DQogICAg
ICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9yeS5tX2Jsb2Nrc1ti
bG9ja0luZGV4XTsNCg0KICAgICAgICAgICAgYXV0byogYml0cyA9IG1fYml0c1tibG9ja0luZGV4
XS5nZXQoKTsNCiAgICAgICAgICAgIGJsb2NrLT5mb3JFYWNoTWFya2VkQ2VsbCgNCiAgICAgICAg
ICAgICAgICBbJl0gKHVuc2lnbmVkIGF0b21OdW1iZXIsIEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2Vs
bDo6S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgew0KICAgICAgICAgICAgICAgICAgICBp
ZiAoYml0cy0+Z2V0KGF0b21OdW1iZXIpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhj
ZWxsLCBraW5kKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KDQogICAgQ2VsbEF0
dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fc3Vic3BhY2UuYXR0cmlidXRlcygpOw0KICAgIG1fc3Vi
c3BhY2UuZm9yRWFjaFByZWNpc2VBbGxvY2F0aW9uKA0KICAgICAgICBbJl0gKFByZWNpc2VBbGxv
Y2F0aW9uKiBhbGxvY2F0aW9uKSB7DQogICAgICAgICAgICBpZiAobV9sb3dlclRpZXJCaXRzLmdl
dChhbGxvY2F0aW9uLT5sb3dlclRpZXJJbmRleCgpKSAmJiBhbGxvY2F0aW9uLT5pc01hcmtlZCgp
KQ0KICAgICAgICAgICAgICAgIGZ1bmMoYWxsb2NhdGlvbi0+Y2VsbCgpLCBhdHRyaWJ1dGVzLmNl
bGxLaW5kKTsNCiAgICAgICAgfSk7DQp9DQoNCnRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+DQpSZWY8
U2hhcmVkVGFzazx2b2lkKFNsb3RWaXNpdG9yJik+PiBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2Vk
Q2VsbEluUGFyYWxsZWwoY29uc3QgRnVuYyYgZnVuYykNCnsNCiAgICBjbGFzcyBUYXNrIGZpbmFs
IDogcHVibGljIFNoYXJlZFRhc2s8dm9pZChTbG90VmlzaXRvciYpPiB7DQogICAgcHVibGljOg0K
ICAgICAgICBUYXNrKElzb0NlbGxTZXQmIHNldCwgY29uc3QgRnVuYyYgZnVuYykNCiAgICAgICAg
ICAgIDogbV9zZXQoc2V0KQ0KICAgICAgICAgICAgLCBtX2Jsb2NrU291cmNlKHNldC5wYXJhbGxl
bE5vdEVtcHR5TWFya2VkQmxvY2tTb3VyY2UoKSkNCiAgICAgICAgICAgICwgbV9mdW5jKGZ1bmMp
DQogICAgICAgIHsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdm9pZCBydW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpIGZpbmFsDQogICAgICAgIHsNCiAgICAgICAgICAgIHdoaWxlIChNYXJr
ZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBtX2Jsb2NrU291cmNlLT5ydW4oKSkgew0KICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGJsb2NrSW5kZXggPSBoYW5kbGUtPmluZGV4KCk7DQogICAgICAg
ICAgICAgICAgYXV0byogYml0cyA9IG1fc2V0Lm1fYml0c1tibG9ja0luZGV4XS5nZXQoKTsNCiAg
ICAgICAgICAgICAgICBoYW5kbGUtPmZvckVhY2hNYXJrZWRDZWxsKA0KICAgICAgICAgICAgICAg
ICAgICBbJl0gKHVuc2lnbmVkIGF0b21OdW1iZXIsIEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6
S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgew0KICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGJpdHMtPmdldChhdG9tTnVtYmVyKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2Z1bmModmlzaXRvciwgY2VsbCwga2luZCk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQog
ICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fbG9jayk7DQogICAgICAgICAgICAgICAgaWYgKCFtX25lZWRUb1Zpc2l0
UHJlY2lzZUFsbG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAg
ICAgICAgICAgbV9uZWVkVG9WaXNpdFByZWNpc2VBbGxvY2F0aW9ucyA9IGZhbHNlOw0KICAgICAg
ICAgICAgfQ0KDQogICAgICAgICAgICBDZWxsQXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gbV9zZXQu
bV9zdWJzcGFjZS5hdHRyaWJ1dGVzKCk7DQogICAgICAgICAgICBtX3NldC5tX3N1YnNwYWNlLmZv
ckVhY2hQcmVjaXNlQWxsb2NhdGlvbigNCiAgICAgICAgICAgICAgICBbJl0gKFByZWNpc2VBbGxv
Y2F0aW9uKiBhbGxvY2F0aW9uKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChtX3NldC5tX2xv
d2VyVGllckJpdHMuZ2V0KGFsbG9jYXRpb24tPmxvd2VyVGllckluZGV4KCkpICYmIGFsbG9jYXRp
b24tPmlzTWFya2VkKCkpDQogICAgICAgICAgICAgICAgICAgICAgICBtX2Z1bmModmlzaXRvciwg
YWxsb2NhdGlvbi0+Y2VsbCgpLCBhdHRyaWJ1dGVzLmNlbGxLaW5kKTsNCiAgICAgICAgICAgICAg
ICB9KTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICBwcml2YXRlOg0KICAgICAgICBJc29DZWxs
U2V0JiBtX3NldDsNCiAgICAgICAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSoo
KT4+IG1fYmxvY2tTb3VyY2U7DQogICAgICAgIEZ1bmMgbV9mdW5jOw0KICAgICAgICBMb2NrIG1f
bG9jazsNCiAgICAgICAgYm9vbCBtX25lZWRUb1Zpc2l0UHJlY2lzZUFsbG9jYXRpb25zIHsgdHJ1
ZSB9Ow0KICAgIH07DQogICAgDQogICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGFzaygqdGhpcywg
ZnVuYykpOw0KfQ0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPg0Kdm9pZCBJc29DZWxsU2V0Ojpm
b3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuYyYgZnVuYykNCnsNCiAgICBCbG9ja0RpcmVjdG9yeSYg
ZGlyZWN0b3J5ID0gbV9zdWJzcGFjZS5tX2RpcmVjdG9yeTsNCiAgICBtX2Jsb2Nrc1dpdGhCaXRz
LmZvckVhY2hTZXRCaXQoDQogICAgICAgIFsmXSAodW5zaWduZWQgYmxvY2tJbmRleCkgew0KICAg
ICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3Nb
YmxvY2tJbmRleF07DQoNCiAgICAgICAgICAgIGF1dG8qIGJpdHMgPSBtX2JpdHNbYmxvY2tJbmRl
eF0uZ2V0KCk7DQogICAgICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoDQogICAgICAgICAgICAg
ICAgWyZdICh1bnNpZ25lZCBhdG9tTnVtYmVyLCBIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6Oktp
bmQga2luZCkgLT4gSXRlcmF0aW9uU3RhdHVzIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGJp
dHMtPmdldChhdG9tTnVtYmVyKSAmJiBibG9jay0+aXNMaXZlKGNlbGwpKQ0KICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuYyhjZWxsLCBraW5kKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAg
IH0pOw0KDQogICAgQ2VsbEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fc3Vic3BhY2UuYXR0cmli
dXRlcygpOw0KICAgIG1fc3Vic3BhY2UuZm9yRWFjaFByZWNpc2VBbGxvY2F0aW9uKA0KICAgICAg
ICBbJl0gKFByZWNpc2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKSB7DQogICAgICAgICAgICBpZiAo
bV9sb3dlclRpZXJCaXRzLmdldChhbGxvY2F0aW9uLT5sb3dlclRpZXJJbmRleCgpKSAmJiBhbGxv
Y2F0aW9uLT5pc0xpdmUoKSkNCiAgICAgICAgICAgICAgICBmdW5jKGFsbG9jYXRpb24tPmNlbGwo
KSwgYXR0cmlidXRlcy5jZWxsS2luZCk7DQogICAgICAgIH0pOw0KfQ0KDQppbmxpbmUgdm9pZCBJ
c29DZWxsU2V0OjpjbGVhckxvd2VyVGllckNlbGwodW5zaWduZWQgaW5kZXgpDQp7DQogICAgbV9s
b3dlclRpZXJCaXRzLmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoaW5kZXgpOw0KfQ0KDQp9IA0KDQoj
bGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVC5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCg0KDQoNCg0KI2xpbmUgMzUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCg0KI2xpbmUgMzcgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCg0KDQoNCiNsaW5l
IDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0
ZWNvZGVcXEJ5VmFsSW5mby5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDYWNoZWFibGVJZGVudGlm
aWVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIFdURiB7DQoNCmNsYXNzIFByaW50U3RyZWFt
Ow0KY2xhc3MgVW5pcXVlZFN0cmluZ0ltcGw7DQoNCn0gDQoNCnVzaW5nIFdURjo6UHJpbnRTdHJl
YW07DQp1c2luZyBXVEY6OlVuaXF1ZWRTdHJpbmdJbXBsOw0KDQpuYW1lc3BhY2UgSlNDIHsNCg0K
Y2xhc3MgQ29kZUJsb2NrOw0KY2xhc3MgSWRlbnRpZmllcjsNCmNsYXNzIEpTQ2VsbDsNCmNsYXNz
IFNsb3RWaXNpdG9yOw0KDQpjbGFzcyBDYWNoZWFibGVJZGVudGlmaWVyIHsNCnB1YmxpYzoNCiAg
ICBDYWNoZWFibGVJZGVudGlmaWVyKCkgPSBkZWZhdWx0Ow0KDQogICAgc3RhdGljIGlubGluZSBD
YWNoZWFibGVJZGVudGlmaWVyIGNyZWF0ZUZyb21DZWxsKEpTQ2VsbCogaWRlbnRpZmllcik7DQog
ICAgc3RhdGljIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyIGNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhDb2RlQmxvY2sqLCBjb25zdCBJZGVudGlmaWVyJik7DQogICAgc3Rh
dGljIGlubGluZSBDYWNoZWFibGVJZGVudGlmaWVyIGNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhDb2RlQmxvY2sqLCBVbmlxdWVkU3RyaW5nSW1wbCopOw0KICAgIHN0YXRpYyBp
bmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllciBjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKFVu
aXF1ZWRTdHJpbmdJbXBsKik7DQogICAgc3RhdGljIGNvbnN0ZXhwciBDYWNoZWFibGVJZGVudGlm
aWVyIGNyZWF0ZUZyb21SYXdCaXRzKHVpbnRwdHJfdCByYXdCaXRzKSB7IHJldHVybiBDYWNoZWFi
bGVJZGVudGlmaWVyKHJhd0JpdHMpOyB9DQoNCiAgICBDYWNoZWFibGVJZGVudGlmaWVyKGNvbnN0
IENhY2hlYWJsZUlkZW50aWZpZXImKSA9IGRlZmF1bHQ7DQogICAgQ2FjaGVhYmxlSWRlbnRpZmll
cihDYWNoZWFibGVJZGVudGlmaWVyJiYpID0gZGVmYXVsdDsNCg0KICAgIENhY2hlYWJsZUlkZW50
aWZpZXIoc3RkOjpudWxscHRyX3QpDQogICAgICAgIDogbV9iaXRzKDApDQogICAgeyB9DQoNCiAg
ICBib29sIGlzVWlkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgc191aWRUYWc7IH0NCiAgICBi
b29sIGlzQ2VsbCgpIGNvbnN0IHsgcmV0dXJuICFpc1VpZCgpOyB9DQogICAgaW5saW5lIGJvb2wg
aXNTeW1ib2xDZWxsKCkgY29uc3Q7DQogICAgaW5saW5lIGJvb2wgaXNTdHJpbmdDZWxsKCkgY29u
c3Q7DQoNCiAgICBib29sIGlzU3ltYm9sKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYmIHVpZCgp
LT5pc1N5bWJvbCgpOyB9DQoNCiAgICBpbmxpbmUgSlNDZWxsKiBjZWxsKCkgY29uc3Q7DQogICAg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCgpIGNvbnN0Ow0KDQogICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQ0KDQogICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0IHsgcmV0dXJuIHVpZCgpLT5zeW1ib2xBd2FyZUhhc2goKTsgfQ0KDQogICAgQ2FjaGVhYmxl
SWRlbnRpZmllciYgb3BlcmF0b3I9KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImKSA9IGRlZmF1
bHQ7DQogICAgQ2FjaGVhYmxlSWRlbnRpZmllciYgb3BlcmF0b3I9KENhY2hlYWJsZUlkZW50aWZp
ZXImJikgPSBkZWZhdWx0Ow0KDQogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlYWJsZUlk
ZW50aWZpZXImIG90aGVyKSBjb25zdDsNCiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2FjaGVh
YmxlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0Ow0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
ZGVudGlmaWVyJiBvdGhlcikgY29uc3Q7DQoNCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNDYWNo
ZWFibGVJZGVudGlmaWVyQ2VsbChKU0NlbGwqKTsNCiAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXND
YWNoZWFibGVJZGVudGlmaWVyQ2VsbChKU1ZhbHVlKTsNCg0KICAgIHVpbnRwdHJfdCByYXdCaXRz
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9DQoNCiAgICBpbmxpbmUgdm9pZCB2aXNpdEFnZ3Jl
Z2F0ZShTbG90VmlzaXRvciYpIGNvbnN0Ow0KDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZv
aWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Ow0KDQpwcml2YXRlOg0KICAgIGV4cGxpY2l0IGlu
bGluZSBDYWNoZWFibGVJZGVudGlmaWVyKFVuaXF1ZWRTdHJpbmdJbXBsKik7DQogICAgZXhwbGlj
aXQgaW5saW5lIENhY2hlYWJsZUlkZW50aWZpZXIoSlNDZWxsKiBpZGVudGlmaWVyKTsNCiAgICBl
eHBsaWNpdCBjb25zdGV4cHIgQ2FjaGVhYmxlSWRlbnRpZmllcih1aW50cHRyX3QgcmF3Qml0cykN
CiAgICAgICAgOiBtX2JpdHMocmF3Qml0cykNCiAgICB7IH0NCg0KICAgIGlubGluZSB2b2lkIHNl
dENlbGxCaXRzKEpTQ2VsbCopOw0KICAgIGlubGluZSB2b2lkIHNldFVpZEJpdHMoVW5pcXVlZFN0
cmluZ0ltcGwqKTsNCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludHB0cl90IHNfdWlkVGFnID0gMTsNCiAgICB1aW50cHRyX3QgbV9iaXRzIHsg
MCB9Ow0KfTsNCg0KfSANCiNsaW5lIDI5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxCeVZhbEluZm8uaCINCg0KDQoNCg0KDQoNCm5h
bWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBTeW1ib2w7DQoNCg0KDQpjbGFzcyBBcnJheVByb2ZpbGU7
DQpjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsNCg0KZW51bSBKSVRBcnJheU1vZGUgOiB1aW50OF90
IHsNCiAgICBKSVRJbnQzMiwNCiAgICBKSVREb3VibGUsDQogICAgSklUQ29udGlndW91cywNCiAg
ICBKSVRBcnJheVN0b3JhZ2UsDQogICAgSklURGlyZWN0QXJndW1lbnRzLA0KICAgIEpJVFNjb3Bl
ZEFyZ3VtZW50cywNCiAgICBKSVRJbnQ4QXJyYXksDQogICAgSklUSW50MTZBcnJheSwNCiAgICBK
SVRJbnQzMkFycmF5LA0KICAgIEpJVFVpbnQ4QXJyYXksDQogICAgSklUVWludDhDbGFtcGVkQXJy
YXksDQogICAgSklUVWludDE2QXJyYXksDQogICAgSklUVWludDMyQXJyYXksDQogICAgSklURmxv
YXQzMkFycmF5LA0KICAgIEpJVEZsb2F0NjRBcnJheQ0KfTsNCg0KaW5saW5lIGJvb2wgaXNPcHRp
bWl6YWJsZUluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQ0Kew0KICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKSB7DQogICAgY2FzZSBOb25BcnJheVdpdGhJbnQzMjogY2FzZSBB
cnJheVdpdGhJbnQzMjogY2FzZSBDb3B5T25Xcml0ZUFycmF5V2l0aEludDMyOg0KICAgIGNhc2Ug
Tm9uQXJyYXlXaXRoRG91YmxlOiBjYXNlIEFycmF5V2l0aERvdWJsZTogY2FzZSBDb3B5T25Xcml0
ZUFycmF5V2l0aERvdWJsZToNCiAgICBjYXNlIE5vbkFycmF5V2l0aENvbnRpZ3VvdXM6IGNhc2Ug
QXJyYXlXaXRoQ29udGlndW91czogY2FzZSBDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXM6
DQogICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFy
cmF5U3RvcmFnZToNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoNCiAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KaW5saW5lIGJvb2wgaGFzT3B0aW1pemFibGVJbmRl
eGluZ0ZvckpTVHlwZShKU1R5cGUgdHlwZSkNCnsNCiAgICBzd2l0Y2ggKHR5cGUpIHsNCiAgICBj
YXNlIERpcmVjdEFyZ3VtZW50c1R5cGU6DQogICAgY2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOg0K
ICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7
DQogICAgfQ0KfQ0KDQppbmxpbmUgYm9vbCBoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJ
bmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQ0Kew0KICAgIHJldHVybiBpc1R5cGVkVmll
dyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7DQp9DQoNCmlubGluZSBib29sIGhh
c09wdGltaXphYmxlSW5kZXhpbmcoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQp7DQogICAgcmV0dXJu
IGlzT3B0aW1pemFibGVJbmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkNCiAg
ICAgICAgfHwgaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckpTVHlwZShzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpKQ0KICAgICAgICB8fCBoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJ
bmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOw0KfQ0KDQppbmxpbmUgSklUQXJyYXlNb2RlIGpp
dEFycmF5TW9kZUZvckluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQ0Kew0K
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7DQogICAgY2FzZSBOb25BcnJheVdpdGhJbnQzMjog
Y2FzZSBBcnJheVdpdGhJbnQzMjogY2FzZSBDb3B5T25Xcml0ZUFycmF5V2l0aEludDMyOg0KICAg
ICAgICByZXR1cm4gSklUSW50MzI7DQogICAgY2FzZSBOb25BcnJheVdpdGhEb3VibGU6IGNhc2Ug
QXJyYXlXaXRoRG91YmxlOiBjYXNlIENvcHlPbldyaXRlQXJyYXlXaXRoRG91YmxlOg0KICAgICAg
ICByZXR1cm4gSklURG91YmxlOw0KICAgIGNhc2UgTm9uQXJyYXlXaXRoQ29udGlndW91czogY2Fz
ZSBBcnJheVdpdGhDb250aWd1b3VzOiBjYXNlIENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91
czoNCiAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7DQogICAgY2FzZSBBcnJheVdpdGhBcnJh
eVN0b3JhZ2U6IGNhc2UgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToNCiAgICAgICAgcmV0
dXJuIEpJVEFycmF5U3RvcmFnZTsNCiAgICBkZWZhdWx0Og0KICAgICAgICBXVEZDcmFzaCgpOw0K
ICAgICAgICByZXR1cm4gSklUQ29udGlndW91czsNCiAgICB9DQp9DQoNCmlubGluZSBKSVRBcnJh
eU1vZGUgaml0QXJyYXlNb2RlRm9ySlNUeXBlKEpTVHlwZSB0eXBlKQ0Kew0KICAgIHN3aXRjaCAo
dHlwZSkgew0KICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVHlwZToNCiAgICAgICAgcmV0dXJuIEpJ
VERpcmVjdEFyZ3VtZW50czsNCiAgICBjYXNlIFNjb3BlZEFyZ3VtZW50c1R5cGU6DQogICAgICAg
IHJldHVybiBKSVRTY29wZWRBcmd1bWVudHM7DQogICAgZGVmYXVsdDoNCiAgICAgICAgZG8geyBX
VEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBX
VEZDcmFzaFdpdGhJbmZvKDEyMywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEJ5VmFsSW5mby5oIiwgIF9fRlVOQ1RJT05fXyAgLCAy
MDcgKTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAgICByZXR1cm4gSklUQ29udGlndW91czsNCiAg
ICB9DQp9DQoNCmlubGluZSBKSVRBcnJheU1vZGUgaml0QXJyYXlNb2RlRm9yQ2xhc3NJbmZvKGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQ0Kew0KICAgIHN3aXRjaCAoY2xhc3NJbmZvLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGUpIHsNCiAgICBjYXNlIFR5cGVJbnQ4Og0KICAgICAgICByZXR1cm4g
SklUSW50OEFycmF5Ow0KICAgIGNhc2UgVHlwZUludDE2Og0KICAgICAgICByZXR1cm4gSklUSW50
MTZBcnJheTsNCiAgICBjYXNlIFR5cGVJbnQzMjoNCiAgICAgICAgcmV0dXJuIEpJVEludDMyQXJy
YXk7DQogICAgY2FzZSBUeXBlVWludDg6DQogICAgICAgIHJldHVybiBKSVRVaW50OEFycmF5Ow0K
ICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDoNCiAgICAgICAgcmV0dXJuIEpJVFVpbnQ4Q2xhbXBl
ZEFycmF5Ow0KICAgIGNhc2UgVHlwZVVpbnQxNjoNCiAgICAgICAgcmV0dXJuIEpJVFVpbnQxNkFy
cmF5Ow0KICAgIGNhc2UgVHlwZVVpbnQzMjoNCiAgICAgICAgcmV0dXJuIEpJVFVpbnQzMkFycmF5
Ow0KICAgIGNhc2UgVHlwZUZsb2F0MzI6DQogICAgICAgIHJldHVybiBKSVRGbG9hdDMyQXJyYXk7
DQogICAgY2FzZSBUeXBlRmxvYXQ2NDoNCiAgICAgICAgcmV0dXJuIEpJVEZsb2F0NjRBcnJheTsN
CiAgICBkZWZhdWx0Og0KICAgICAgICBXVEZDcmFzaCgpOw0KICAgICAgICByZXR1cm4gSklUQ29u
dGlndW91czsNCiAgICB9DQp9DQoNCmlubGluZSBib29sIGppdEFycmF5TW9kZVBlcm1pdHNQdXQo
SklUQXJyYXlNb2RlIG1vZGUpDQp7DQogICAgc3dpdGNoIChtb2RlKSB7DQogICAgY2FzZSBKSVRE
aXJlY3RBcmd1bWVudHM6DQogICAgY2FzZSBKSVRTY29wZWRBcmd1bWVudHM6DQogICAgICAgIA0K
ICAgICAgICANCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIGRlZmF1bHQ6DQogICAgICAgIHJl
dHVybiB0cnVlOw0KICAgIH0NCn0NCg0KaW5saW5lIGJvb2wgaml0QXJyYXlNb2RlUGVybWl0c1B1
dERpcmVjdChKSVRBcnJheU1vZGUgbW9kZSkNCnsNCiAgICANCiAgICANCiAgICANCiAgICANCiAg
ICANCiAgICANCiAgICANCiAgICBzd2l0Y2ggKG1vZGUpIHsNCiAgICBjYXNlIEpJVEludDMyOg0K
ICAgIGNhc2UgSklURG91YmxlOg0KICAgIGNhc2UgSklUQ29udGlndW91czoNCiAgICBjYXNlIEpJ
VEFycmF5U3RvcmFnZToNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgZGVmYXVsdDoNCiAgICAg
ICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCn0NCg0KaW5saW5lIFR5cGVkQXJyYXlUeXBlIHR5cGVk
QXJyYXlUeXBlRm9ySklUQXJyYXlNb2RlKEpJVEFycmF5TW9kZSBtb2RlKQ0Kew0KICAgIHN3aXRj
aCAobW9kZSkgew0KICAgIGNhc2UgSklUSW50OEFycmF5Og0KICAgICAgICByZXR1cm4gVHlwZUlu
dDg7DQogICAgY2FzZSBKSVRJbnQxNkFycmF5Og0KICAgICAgICByZXR1cm4gVHlwZUludDE2Ow0K
ICAgIGNhc2UgSklUSW50MzJBcnJheToNCiAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsNCiAgICBj
YXNlIEpJVFVpbnQ4QXJyYXk6DQogICAgICAgIHJldHVybiBUeXBlVWludDg7DQogICAgY2FzZSBK
SVRVaW50OENsYW1wZWRBcnJheToNCiAgICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7DQog
ICAgY2FzZSBKSVRVaW50MTZBcnJheToNCiAgICAgICAgcmV0dXJuIFR5cGVVaW50MTY7DQogICAg
Y2FzZSBKSVRVaW50MzJBcnJheToNCiAgICAgICAgcmV0dXJuIFR5cGVVaW50MzI7DQogICAgY2Fz
ZSBKSVRGbG9hdDMyQXJyYXk6DQogICAgICAgIHJldHVybiBUeXBlRmxvYXQzMjsNCiAgICBjYXNl
IEpJVEZsb2F0NjRBcnJheToNCiAgICAgICAgcmV0dXJuIFR5cGVGbG9hdDY0Ow0KICAgIGRlZmF1
bHQ6DQogICAgICAgIFdURkNyYXNoKCk7DQogICAgICAgIHJldHVybiBOb3RUeXBlZEFycmF5Ow0K
ICAgIH0NCn0NCg0KaW5saW5lIEpJVEFycmF5TW9kZSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQp7DQogICAgaWYgKGlzT3B0aW1pemFibGVJbmRleGluZ1R5
cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpDQogICAgICAgIHJldHVybiBqaXRBcnJheU1v
ZGVGb3JJbmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7DQogICAgDQogICAg
aWYgKGhhc09wdGltaXphYmxlSW5kZXhpbmdGb3JKU1R5cGUoc3RydWN0dXJlLT50eXBlSW5mbygp
LnR5cGUoKSkpDQogICAgICAgIHJldHVybiBqaXRBcnJheU1vZGVGb3JKU1R5cGUoc3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSk7DQogICAgDQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBq
aXRBcnJheU1vZGVGb3JDbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7DQp9DQoNCnN0
cnVjdCBCeVZhbEluZm8gew0KICAgIEJ5VmFsSW5mbygpIHsgfQ0KDQogICAgQnlWYWxJbmZvKEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPiBub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFk
VHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2Vw
dGlvbkhhbmRsZXIsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQ
cm9maWxlLCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0LCBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhUYXJn
ZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNsb3dQYXRoVGFyZ2V0KQ0K
ICAgICAgICA6IG5vdEluZGV4SnVtcChub3RJbmRleEp1bXApDQogICAgICAgICwgYmFkVHlwZUp1
bXAoYmFkVHlwZUp1bXApDQogICAgICAgICwgZXhjZXB0aW9uSGFuZGxlcihleGNlcHRpb25IYW5k
bGVyKQ0KICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdldCkNCiAgICAgICAgLCBiYWRUeXBl
TmV4dEhvdFBhdGhUYXJnZXQoYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0KQ0KICAgICAgICAsIHNs
b3dQYXRoVGFyZ2V0KHNsb3dQYXRoVGFyZ2V0KQ0KICAgICAgICAsIGFycmF5UHJvZmlsZShhcnJh
eVByb2ZpbGUpDQogICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQ0KICAgICAg
ICAsIHNsb3dQYXRoQ291bnQoMCkNCiAgICAgICAgLCBzdHViSW5mbyhudWxscHRyKQ0KICAgICAg
ICAsIGFycmF5TW9kZShhcnJheU1vZGUpDQogICAgICAgICwgdG9va1Nsb3dQYXRoKGZhbHNlKQ0K
ICAgICAgICAsIHNlZW4oZmFsc2UpDQogICAgew0KICAgIH0NCg0KICAgIHZvaWQgdmlzaXRBZ2dy
ZWdhdGUoU2xvdFZpc2l0b3ImKTsNCg0KICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0
clRhZz4gbm90SW5kZXhKdW1wOw0KICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gYmFkVHlwZUp1bXA7DQogICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4gZXhjZXB0aW9uSGFuZGxlcjsNCiAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFs
UHRyVGFnPiBkb25lVGFyZ2V0Ow0KICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJU
YWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldDsNCiAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0lu
dGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldDsNCiAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJv
ZmlsZTsNCiAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7DQogICAgdW5zaWduZWQgc2xv
d1BhdGhDb3VudDsNCiAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOw0KICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgY2FjaGVkSWQ7IA0KICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbzsNCiAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlOyANCiAgICBib29sIHRvb2tTbG93
UGF0aCA6IDE7DQogICAgYm9vbCBzZWVuIDogMTsNCn07DQoNCmlubGluZSBCeXRlY29kZUluZGV4
IGdldEJ5VmFsSW5mb0J5dGVjb2RlSW5kZXgoQnlWYWxJbmZvKiBpbmZvKQ0Kew0KICAgIHJldHVy
biBpbmZvLT5ieXRlY29kZUluZGV4Ow0KfQ0KDQojbGluZSAyNzIgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEJ5VmFsSW5mby5oIg0K
DQp9IA0KI2xpbmUgNDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2Ny
aXB0Q29yZVxcaml0XFxKSVQuaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxDb21tb25TbG93UGF0aHMuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHJ1bnRpbWVcXERpcmVjdEFyZ3VtZW50cy5oIg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KDQoNCg0KDQoNCg0KDQpjbGFzcyBEaXJlY3RBcmd1
bWVudHMgZmluYWwgOiBwdWJsaWMgR2VuZXJpY0FyZ3VtZW50czxEaXJlY3RBcmd1bWVudHM+IHsN
CnByaXZhdGU6DQogICAgRGlyZWN0QXJndW1lbnRzKFZNJiwgU3RydWN0dXJlKiwgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBjYXBhY2l0eSk7DQogICAgDQpwdWJsaWM6DQogICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAgIHN0YXRpYyBDb21wbGV0ZVN1
YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0
KCFDZWxsVHlwZTo6bmVlZHNEZXN0cnVjdGlvbiwgIiIpOw0KICAgICAgICByZXR1cm4gJnZtLnZh
cmlhYmxlU2l6ZWRDZWxsU3BhY2U7DQogICAgfQ0KDQogICAgDQogICAgDQogICAgc3RhdGljIERp
cmVjdEFyZ3VtZW50cyogY3JlYXRlVW5pbml0aWFsaXplZChWTSYsIFN0cnVjdHVyZSosIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgY2FwYWNpdHkpOw0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0
YXRpYyBEaXJlY3RBcmd1bWVudHMqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgY2FwYWNpdHkpOw0KICAgIA0KICAgIA0KICAgIHN0YXRpYyBEaXJlY3RB
cmd1bWVudHMqIGNyZWF0ZUJ5Q29weWluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0K
DQogICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCosIFZNJik7DQogICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOw0KICAgIA0KICAg
IHVpbnQzMl90IGludGVybmFsTGVuZ3RoKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBt
X2xlbmd0aDsNCiAgICB9DQogICAgDQogICAgdWludDMyX3QgbGVuZ3RoKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoKG1fbWFwcGVkQXJndW1l
bnRzKSkgew0KICAgICAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICAg
ICAgICAgIGF1dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQogICAgICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
KTsNCiAgICAgICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIDA7
IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAgICAgICAgIGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1
cm4gdmFsdWUudG9VSW50MzIoZ2xvYmFsT2JqZWN0KTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgICAg
ICB9DQogICAgICAgIHJldHVybiBtX2xlbmd0aDsNCiAgICB9DQogICAgDQogICAgYm9vbCBpc01h
cHBlZEFyZ3VtZW50KHVpbnQzMl90IGkpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gaSA8
IG1fbGVuZ3RoICYmICghbV9tYXBwZWRBcmd1bWVudHMgfHwgIW1fbWFwcGVkQXJndW1lbnRzLmF0
KGksIG1fbGVuZ3RoKSk7DQogICAgfQ0KDQogICAgYm9vbCBpc01hcHBlZEFyZ3VtZW50SW5ERkco
dWludDMyX3QgaSkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBpIDwgbV9sZW5ndGggJiYg
IW92ZXJyb2RlVGhpbmdzKCk7DQogICAgfQ0KDQogICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHko
dWludDMyX3QgaSkgY29uc3QNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8RGlyZWN0QXJndW1lbnRzKj4odGhpcyktPnN0b3JhZ2UoKVtpXS5nZXQo
KTsNCiAgICB9DQogICAgDQogICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1aW50MzJf
dCBpLCBKU1ZhbHVlIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBz
dG9yYWdlKClbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7DQogICAgfQ0KICAgIA0KICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSgpDQogICAgew0KICAgICAgICByZXR1cm4gbV9jYWxsZWUuZ2V0KCk7DQog
ICAgfQ0KICAgIA0KICAgIHZvaWQgc2V0Q2FsbGVlKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rp
b24pDQogICAgew0KICAgICAgICBtX2NhbGxlZS5zZXQodm0sIHRoaXMsIGZ1bmN0aW9uKTsNCiAg
ICB9DQogICAgDQogICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBhcmd1bWVudChEaXJlY3RBcmd1
bWVudHNPZmZzZXQgb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAo
KHZvaWQpMCk7DQogICAgICAgIHJldHVybiBzdG9yYWdlKClbb2Zmc2V0Lm9mZnNldCgpXTsNCiAg
ICB9DQogICAgDQogICAgDQogICAgYm9vbCBvdmVycm9kZVRoaW5ncygpIGNvbnN0IHsgcmV0dXJu
ICEhbV9tYXBwZWRBcmd1bWVudHM7IH0NCiAgICB2b2lkIG92ZXJyaWRlVGhpbmdzKEpTR2xvYmFs
T2JqZWN0Kik7DQogICAgdm9pZCBvdmVycmlkZVRoaW5nc0lmTmVjZXNzYXJ5KEpTR2xvYmFsT2Jq
ZWN0Kik7DQogICAgdm9pZCB1bm1hcEFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
aW5kZXgpOw0KDQogICAgdm9pZCBpbml0TW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9ySWZOZWNl
c3NhcnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkNCiAgICB7DQogICAgICAgIEdlbmVy
aWNBcmd1bWVudHM8RGlyZWN0QXJndW1lbnRzPjo6aW5pdE1vZGlmaWVkQXJndW1lbnRzRGVzY3Jp
cHRvcklmTmVjZXNzYXJ5KGdsb2JhbE9iamVjdCwgbV9sZW5ndGgpOw0KICAgIH0NCg0KICAgIHZv
aWQgc2V0TW9kaWZpZWRBcmd1bWVudERlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgaW5kZXgpDQogICAgew0KICAgICAgICBHZW5lcmljQXJndW1lbnRzPERp
cmVjdEFyZ3VtZW50cz46OnNldE1vZGlmaWVkQXJndW1lbnREZXNjcmlwdG9yKGdsb2JhbE9iamVj
dCwgaW5kZXgsIG1fbGVuZ3RoKTsNCiAgICB9DQoNCiAgICBib29sIGlzTW9kaWZpZWRBcmd1bWVu
dERlc2NyaXB0b3IodW5zaWduZWQgaW5kZXgpDQogICAgew0KICAgICAgICByZXR1cm4gR2VuZXJp
Y0FyZ3VtZW50czxEaXJlY3RBcmd1bWVudHM+Ojppc01vZGlmaWVkQXJndW1lbnREZXNjcmlwdG9y
KGluZGV4LCBtX2xlbmd0aCk7DQogICAgfQ0KDQogICAgdm9pZCBjb3B5VG9Bcmd1bWVudHMoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKiBmaXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7DQoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6
Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpD
bGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KICAgIA0KICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUpOw0KICAgIA0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7
IHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxE
aXJlY3RBcmd1bWVudHMqPigweDQwMDApLT5tX2NhbGxlZSkpIC0gMHg0MDAwKTsgfQ0KICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxEaXJlY3RBcmd1bWVudHMqPigweDQwMDAp
LT5tX2xlbmd0aCkpIC0gMHg0MDAwKTsgfQ0KICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZN
aW5DYXBhY2l0eSgpIHsgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWlu
dGVycHJldF9jYXN0PERpcmVjdEFyZ3VtZW50cyo+KDB4NDAwMCktPm1fbWluQ2FwYWNpdHkpKSAt
IDB4NDAwMCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWFwcGVkQXJndW1lbnRz
KCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nh
c3Q8RGlyZWN0QXJndW1lbnRzKj4oMHg0MDAwKS0+bV9tYXBwZWRBcmd1bWVudHMpKSAtIDB4NDAw
MCk7IH0NCiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTW9kaWZpZWRBcmd1bWVudHNEZXNj
cmlwdG9yKCkgeyByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJw
cmV0X2Nhc3Q8RGlyZWN0QXJndW1lbnRzKj4oMHg0MDAwKS0+bV9tb2RpZmllZEFyZ3VtZW50c0Rl
c2NyaXB0b3IpKSAtIDB4NDAwMCk7IH0NCiAgICANCiAgICBzdGF0aWMgc2l6ZV90IHN0b3JhZ2VP
ZmZzZXQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKERpcmVjdEFyZ3VtZW50cykpOw0K
ICAgIH0NCiAgICANCiAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mU2xvdChDaGVja2VkPHNpemVf
dD4gaW5kZXgpDQogICAgew0KICAgICAgICByZXR1cm4gKHN0b3JhZ2VPZmZzZXQoKSArIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICogaW5kZXgpLnVuc2FmZUdldCgpOw0KICAgIH0NCiAg
ICANCiAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBjYXBh
Y2l0eSkNCiAgICB7DQogICAgICAgIHJldHVybiBvZmZzZXRPZlNsb3QoY2FwYWNpdHkpOw0KICAg
IH0NCiAgICANCnByaXZhdGU6DQogICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzdG9yYWdlKCkN
CiAgICB7DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+
Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIHN0b3JhZ2VPZmZzZXQoKSk7DQogICAgfQ0K
ICAgIA0KICAgIHVuc2lnbmVkIG1hcHBlZEFyZ3VtZW50c1NpemUoKTsNCiAgICANCiAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsZWU7DQogICAgdWludDMyX3QgbV9sZW5ndGg7IA0K
ICAgIHVpbnQzMl90IG1fbWluQ2FwYWNpdHk7IA0KICAgIHVzaW5nIE1hcHBlZEFyZ3VtZW50cyA9
IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBib29sPjsNCiAgICBNYXBwZWRB
cmd1bWVudHMgbV9tYXBwZWRBcmd1bWVudHM7IA0KDQogICAgZnJpZW5kIHNpemVfdCBjZWxsU2l6
ZShWTSYsIEpTQ2VsbCopOw0KfTsNCg0KfSANCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXENvbW1vblNsb3dQYXRocy5o
Ig0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxWTUlubGluZXMuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxwcm9m
aWxlclxcUHJvZmlsZXJEYXRhYmFzZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2ZpbGVyXFxQcm9maWxl
ckJ5dGVjb2Rlcy5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJCeXRlY29kZS5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gT3Bjb2RlSUQgOiB1bnNpZ25lZDsN
Cg0KbmFtZXNwYWNlIFByb2ZpbGVyIHsNCg0KY2xhc3MgQnl0ZWNvZGUgew0KcHVibGljOg0KICAg
IEJ5dGVjb2RlKCkNCiAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQ0KICAgIHsNCiAgICB9DQogICAgDQogICAgQnl0ZWNvZGUodW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IENTdHJpbmcmIGRl
c2NyaXB0aW9uKQ0KICAgICAgICA6IG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQ0KICAg
ICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpDQogICAgICAgICwgbV9kZXNjcmlwdGlvbihkZXNj
cmlwdGlvbikNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlSW5kZXg7IH0NCiAgICBPcGNvZGVJRCBvcGNvZGVJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlSUQ7IH0NCiAgICBjb25zdCBDU3RyaW5nJiBkZXNj
cmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0NCiAgICANCiAgICBKU1Zh
bHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCnByaXZhdGU6DQogICAgdW5zaWduZWQg
bV9ieXRlY29kZUluZGV4Ow0KICAgIE9wY29kZUlEIG1fb3Bjb2RlSUQ7DQogICAgQ1N0cmluZyBt
X2Rlc2NyaXB0aW9uOw0KfTsNCg0KaW5saW5lIHVuc2lnbmVkIGdldEJ5dGVjb2RlSW5kZXhGb3JC
eXRlY29kZShCeXRlY29kZSogYnl0ZWNvZGUpIHsgcmV0dXJuIGJ5dGVjb2RlLT5ieXRlY29kZUlu
ZGV4KCk7IH0NCg0KfSB9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5o
Ig0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQ29kZUJsb2NrOw0KDQpuYW1lc3Bh
Y2UgUHJvZmlsZXIgew0KDQpjbGFzcyBCeXRlY29kZVNlcXVlbmNlIHsNCnB1YmxpYzoNCiAgICBC
eXRlY29kZVNlcXVlbmNlKENvZGVCbG9jayopOw0KICAgIH5CeXRlY29kZVNlcXVlbmNlKCk7DQog
ICAgDQogICAgDQogICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VxdWVuY2Uu
c2l6ZSgpOyB9DQogICAgY29uc3QgQnl0ZWNvZGUmIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0
dXJuIG1fc2VxdWVuY2VbaV07IH0NCg0KICAgIHVuc2lnbmVkIGluZGV4Rm9yQnl0ZWNvZGVJbmRl
eCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsNCiAgICBjb25zdCBCeXRlY29kZSYgZm9y
Qnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsNCg0KcHJvdGVjdGVk
Og0KICAgIHZvaWQgYWRkU2VxdWVuY2VQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqKSBjb25zdDsNCiAgICANCnByaXZhdGU6DQogICAgVmVjdG9yPENTdHJpbmc+IG1faGVhZGVy
Ow0KICAgIFZlY3RvcjxCeXRlY29kZT4gbV9zZXF1ZW5jZTsNCn07DQoNCn0gfSANCiNsaW5lIDMx
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2Zp
bGVyXFxQcm9maWxlckJ5dGVjb2Rlcy5oIg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBQcm9maWxlciB7DQoNCmNsYXNzIEJ5dGVjb2RlcyA6IHB1YmxpYyBCeXRlY29kZVNlcXVlbmNl
IHsNCnB1YmxpYzoNCiAgICBCeXRlY29kZXMoc2l6ZV90IGlkLCBDb2RlQmxvY2sqKTsNCiAgICB+
Qnl0ZWNvZGVzKCk7DQogICAgDQogICAgc2l6ZV90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQ0KICAgIGNvbnN0IENTdHJpbmcmIGluZmVycmVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5m
ZXJyZWROYW1lOyB9DQogICAgY29uc3QgQ1N0cmluZyYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlQ29kZTsgfQ0KICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0NCiAgICBDb2RlQmxvY2tIYXNoIGhhc2go
KSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0NCg0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0Ow0KICAgIA0KICAgIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0K
ICAgIA0KcHJpdmF0ZToNCiAgICBzaXplX3QgbV9pZDsNCiAgICBDU3RyaW5nIG1faW5mZXJyZWRO
YW1lOw0KICAgIENTdHJpbmcgbV9zb3VyY2VDb2RlOw0KICAgIENvZGVCbG9ja0hhc2ggbV9oYXNo
Ow0KICAgIHVuc2lnbmVkIG1faW5zdHJ1Y3Rpb25Db3VudDsNCn07DQoNCn0gfSANCiNsaW5lIDMw
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2Zp
bGVyXFxQcm9maWxlckRhdGFiYXNlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2ZpbGVyXFxQcm9maWxlckNvbXBpbGF0aW9u
LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNw
cmFnbWEgb25jZQ0KDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdt
YSBvbmNlDQoNCm5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgew0KDQplbnVtIENv
bXBpbGF0aW9uS2luZCB7DQogICAgTExJbnQsDQogICAgQmFzZWxpbmUsDQogICAgREZHLA0KICAg
IEZUTCwNCiAgICBGVExGb3JPU1JFbnRyeQ0KfTsNCg0KfSB9IA0KDQpuYW1lc3BhY2UgV1RGIHsN
Cg0KY2xhc3MgUHJpbnRTdHJlYW07DQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbktpbmQpOw0KDQp9IA0KI2xpbmUgMzEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccHJvZmlsZXJcXFByb2Zp
bGVyQ29tcGlsYXRpb24uaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5o
Ig0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJh
Z21hIG9uY2UNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHByb2ZpbGVyXFxQcm9maWxlck9yaWdpblN0YWNrLmgiDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0K
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVyT3JpZ2luLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENvZGVCbG9jazsNCg0KbmFtZXNwYWNlIFByb2ZpbGVyIHsN
Cg0KY2xhc3MgQnl0ZWNvZGVzOw0KY2xhc3MgRGF0YWJhc2U7DQoNCmNsYXNzIE9yaWdpbiB7DQpw
dWJsaWM6DQogICAgT3JpZ2luKCkgPSBkZWZhdWx0Ow0KICAgIE9yaWdpbihXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpDQogICAgICAgIDogbV9ieXRlY29kZUluZGV4KFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlKQ0KICAgIHsgfQ0KICAgIA0KICAgIE9yaWdpbihCeXRlY29kZXMqIGJ5
dGVjb2RlcywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQ0KICAgICAgICA6IG1fYnl0ZWNv
ZGVzKGJ5dGVjb2RlcykNCiAgICAgICAgLCBtX2J5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkN
CiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICB9DQogICAgDQogICAgT3JpZ2luKERhdGFi
YXNlJiwgQ29kZUJsb2NrKiwgQnl0ZWNvZGVJbmRleCk7DQogICAgDQogICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9ieXRlY29kZUluZGV4OyB9DQogICAgDQogICAgQnl0ZWNv
ZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQ0KICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsg
fQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmlnaW4mKSBjb25zdDsNCiAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgT3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0NCiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7DQogICAgDQogICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Ow0KICAgIA0KICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0Ow0KICAgIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCopIGNv
bnN0Ow0KDQpwcml2YXRlOg0KICAgIEJ5dGVjb2RlcyogbV9ieXRlY29kZXM7DQogICAgQnl0ZWNv
ZGVJbmRleCBtX2J5dGVjb2RlSW5kZXg7DQp9Ow0KDQppbmxpbmUgYm9vbCBPcmlnaW46Om9wZXJh
dG9yPT0oY29uc3QgT3JpZ2luJiBvdGhlcikgY29uc3QNCnsNCiAgICByZXR1cm4gbV9ieXRlY29k
ZXMgPT0gb3RoZXIubV9ieXRlY29kZXMNCiAgICAgICAgJiYgbV9ieXRlY29kZUluZGV4ID09IG90
aGVyLm1fYnl0ZWNvZGVJbmRleDsNCn0NCg0KaW5saW5lIHVuc2lnbmVkIE9yaWdpbjo6aGFzaCgp
IGNvbnN0DQp7DQogICAgcmV0dXJuIFdURjo6UHRySGFzaDxCeXRlY29kZXMqPjo6aGFzaChtX2J5
dGVjb2RlcykgKyBtX2J5dGVjb2RlSW5kZXguaGFzaCgpOw0KfQ0KDQppbmxpbmUgYm9vbCBPcmln
aW46OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QNCnsNCiAgICByZXR1cm4gbV9ieXRl
Y29kZUluZGV4LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7DQp9DQoNCnN0cnVjdCBPcmlnaW5I
YXNoIHsNCiAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBPcmlnaW4mIGtleSkgeyByZXR1
cm4ga2V5Lmhhc2goKTsgfQ0KICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE9yaWdpbiYgYSwg
Y29uc3QgT3JpZ2luJiBiKSB7IHJldHVybiBhID09IGI7IH0NCiAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOw0KfTsNCg0KfSB9IA0K
DQpuYW1lc3BhY2UgV1RGIHsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRI
YXNoOw0KdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpQcm9maWxlcjo6T3JpZ2lu
PiA6IEpTQzo6UHJvZmlsZXI6Ok9yaWdpbkhhc2ggeyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czsNCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpQ
cm9maWxlcjo6T3JpZ2luPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OlByb2ZpbGVyOjpP
cmlnaW4+IHsgfTsNCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2ZpbGVyXFxQcm9maWxlck9yaWdpblN0YWNrLmgiDQoN
Cg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgQ29kZUJsb2NrOw0KY2xhc3MgQ29kZU9yaWdp
bjsNCg0KbmFtZXNwYWNlIFByb2ZpbGVyIHsNCg0KY2xhc3MgRGF0YWJhc2U7DQoNCmNsYXNzIE9y
aWdpblN0YWNrIHsNCnB1YmxpYzoNCiAgICBPcmlnaW5TdGFjaygpIHsgfQ0KICAgIA0KICAgIE9y
aWdpblN0YWNrKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSk7DQogICAgDQogICAgZXhw
bGljaXQgT3JpZ2luU3RhY2soY29uc3QgT3JpZ2luJik7DQogICAgDQogICAgZXhwbGljaXQgT3Jp
Z2luU3RhY2soRGF0YWJhc2UmLCBDb2RlQmxvY2sqLCBjb25zdCBDb2RlT3JpZ2luJik7DQogICAg
DQogICAgfk9yaWdpblN0YWNrKCk7DQogICAgDQogICAgdm9pZCBhcHBlbmQoY29uc3QgT3JpZ2lu
Jik7DQogICAgDQogICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLmlz
RW1wdHkoKTsgfQ0KICAgIA0KICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0
YWNrLnNpemUoKTsgfQ0KICAgIGNvbnN0IE9yaWdpbiYgZnJvbUJvdHRvbSh1bnNpZ25lZCBpKSBj
b25zdCB7IHJldHVybiBtX3N0YWNrW2ldOyB9DQogICAgY29uc3QgT3JpZ2luJiBmcm9tVG9wKHVu
c2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tbbV9zdGFjay5zaXplKCkgLSBpIC0gMV07
IH0NCiAgICANCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3JpZ2luU3RhY2smKSBjb25zdDsN
CiAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7DQogICAgDQogICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0Ow0KICAgIA0KICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0Ow0KICAgIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIA0KcHJp
dmF0ZToNCiAgICBWZWN0b3I8T3JpZ2luLCAxPiBtX3N0YWNrOw0KfTsNCg0KaW5saW5lIGJvb2wg
T3JpZ2luU3RhY2s6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QNCnsNCiAgICByZXR1
cm4gbV9zdGFjay5zaXplKCkgPT0gMSAmJiBtX3N0YWNrWzBdLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7DQp9DQoNCnN0cnVjdCBPcmlnaW5TdGFja0hhc2ggew0KICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IE9yaWdpblN0YWNrJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0NCiAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBPcmlnaW5TdGFjayYgYSwgY29uc3QgT3JpZ2luU3Rh
Y2smIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7DQp9Ow0KDQp9IH0gDQoNCm5hbWVzcGFj
ZSBXVEYgew0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7DQp0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlByb2ZpbGVyOjpPcmlnaW5TdGFjaz4gOiBK
U0M6OlByb2ZpbGVyOjpPcmlnaW5TdGFja0hhc2ggeyB9Ow0KDQp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSGFzaFRyYWl0czsNCnRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpQ
cm9maWxlcjo6T3JpZ2luU3RhY2s+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6UHJvZmls
ZXI6Ok9yaWdpblN0YWNrPiB7IH07DQoNCn0gDQojbGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJDb21waWxl
ZEJ5dGVjb2RlLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7DQoN
CmNsYXNzIENvbXBpbGVkQnl0ZWNvZGUgew0KcHVibGljOg0KICAgIA0KICAgIA0KICAgIENvbXBp
bGVkQnl0ZWNvZGUoY29uc3QgT3JpZ2luU3RhY2smLCBjb25zdCBDU3RyaW5nJiBkZXNjcmlwdGlv
bik7DQogICAgfkNvbXBpbGVkQnl0ZWNvZGUoKTsNCiAgICANCiAgICBjb25zdCBPcmlnaW5TdGFj
ayYgb3JpZ2luU3RhY2soKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQ0KICAgIGNvbnN0IENT
dHJpbmcmIGRlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQ0KICAg
IA0KICAgIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCopIGNvbnN0Ow0KICAgIA0KcHJpdmF0
ZToNCiAgICBPcmlnaW5TdGFjayBtX29yaWdpbjsNCiAgICBDU3RyaW5nIG1fZGVzY3JpcHRpb247
DQp9Ow0KDQp9IH0gDQojbGluZSAzMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJDb21waWxhdGlvbi5oIg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxwcm9m
aWxlclxcUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsNCg0KY2xhc3MgRXhlY3V0aW9uQ291bnRlciB7
DQogICAgcHVibGljOiB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVy
biBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsg
fSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFs
bG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsgOjpXVEY6OmZhc3RG
cmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSB7IHJldHVybiA6OldU
Rjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApIHsg
OjpXVEY6OmZhc3RGcmVlKHApOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51bGxU
YWcsIHZvaWQqIGxvY2F0aW9uKSB7ICgodm9pZCkwKTsgcmV0dXJuIGxvY2F0aW9uOyB9IHVzaW5n
IHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgcHJpdmF0ZTogdXNpbmcgX190aGlzSXNIZXJlVG9G
b3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludDsgRXhlY3V0aW9uQ291bnRlcihjb25z
dCBFeGVjdXRpb25Db3VudGVyJikgPSBkZWxldGU7IEV4ZWN1dGlvbkNvdW50ZXImIG9wZXJhdG9y
PShjb25zdCBFeGVjdXRpb25Db3VudGVyJikgPSBkZWxldGU7Ow0KcHVibGljOg0KICAgIEV4ZWN1
dGlvbkNvdW50ZXIoKSA6IG1fY291bnRlcigwKSB7IH0NCiAgICANCiAgICB1aW50NjRfdCogYWRk
cmVzcygpIHsgcmV0dXJuICZtX2NvdW50ZXI7IH0NCiAgICANCiAgICB1aW50NjRfdCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY291bnRlcjsgfQ0KDQpwcml2YXRlOg0KICAgIHVpbnQ2NF90IG1f
Y291bnRlcjsNCn07DQoNCn0gfSANCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2ZpbGVyXFxQcm9maWxlckNvbXBpbGF0aW9uLmgi
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVyT1NSRXhpdC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQpuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsNCg0KY2xhc3MgT1NSRXhpdCB7DQpwdWJs
aWM6DQogICAgT1NSRXhpdCh1bnNpZ25lZCBpZCwgY29uc3QgT3JpZ2luU3RhY2smLCBFeGl0S2lu
ZCwgYm9vbCBpc1dhdGNocG9pbnQpOw0KICAgIH5PU1JFeGl0KCk7DQogICAgDQogICAgdW5zaWdu
ZWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9DQogICAgY29uc3QgT3JpZ2luU3RhY2smIG9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9DQogICAgRXhpdEtpbmQgZXhpdEtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2V4aXRLaW5kOyB9DQogICAgYm9vbCBpc1dhdGNocG9pbnQoKSBj
b25zdCB7IHJldHVybiBtX2lzV2F0Y2hwb2ludDsgfQ0KICAgIA0KICAgIHVpbnQ2NF90KiBjb3Vu
dGVyQWRkcmVzcygpIHsgcmV0dXJuICZtX2NvdW50ZXI7IH0NCiAgICB1aW50NjRfdCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY291bnRlcjsgfQ0KICAgIHZvaWQgaW5jQ291bnQoKSB7IG1fY291
bnRlcisrOyB9DQoNCiAgICBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCg0K
cHJpdmF0ZToNCiAgICBPcmlnaW5TdGFjayBtX29yaWdpbjsNCiAgICB1bnNpZ25lZCBtX2lkOw0K
ICAgIEV4aXRLaW5kIG1fZXhpdEtpbmQ7DQogICAgYm9vbCBtX2lzV2F0Y2hwb2ludDsNCiAgICB1
aW50NjRfdCBtX2NvdW50ZXI7DQp9Ow0KDQp9IH0gDQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJDb21w
aWxhdGlvbi5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJPU1JFeGl0U2l0ZS5oIg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0K
DQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsNCg0KY2xhc3MgT1NS
RXhpdFNpdGUgew0KcHVibGljOg0KICAgIGV4cGxpY2l0IE9TUkV4aXRTaXRlKGNvbnN0IFZlY3Rv
cjxNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNJbnRlcm5hbFB0clRhZz4+JiBjb2RlQWRkcmVzc2Vz
KQ0KICAgICAgICA6IG1fY29kZUFkZHJlc3Nlcyhjb2RlQWRkcmVzc2VzKQ0KICAgIHsNCiAgICB9
DQogICAgDQogICAgY29uc3QgVmVjdG9yPE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFs
UHRyVGFnPj4mIGNvZGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQWRkcmVzc2VzOyB9
DQogICAgDQogICAgSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7DQoNCnByaXZh
dGU6DQogICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0ludGVybmFsUHRyVGFnPj4g
bV9jb2RlQWRkcmVzc2VzOw0KfTsNCg0KfSB9IA0KI2xpbmUgMzYgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVyQ29tcGls
YXRpb24uaCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9u
Y2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7DQoNCmNsYXNz
IFByb2ZpbGVkQnl0ZWNvZGVzIDogcHVibGljIEJ5dGVjb2RlU2VxdWVuY2Ugew0KcHVibGljOg0K
ICAgIFByb2ZpbGVkQnl0ZWNvZGVzKEJ5dGVjb2RlcyosIENvZGVCbG9jayopOw0KICAgIH5Qcm9m
aWxlZEJ5dGVjb2RlcygpOw0KICAgIA0KICAgIGNvbnN0IEJ5dGVjb2RlcyogYnl0ZWNvZGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9ieXRlY29kZXM7IH0NCiAgICANCiAgICBKU1ZhbHVlIHRvSlMoSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsNCg0KcHJpdmF0ZToNCiAgICBCeXRlY29kZXMqIG1fYnl0ZWNv
ZGVzOw0KfTsNCg0KfSB9IA0KI2xpbmUgMzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVyQ29tcGlsYXRpb24uaCINCiNs
aW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cHJvZmlsZXJcXFByb2ZpbGVyVUlELmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFByb2ZpbGVyIHsNCg0KY2xhc3MgVUlEIHsNCnB1YmxpYzoNCiAgICBVSUQoKQ0K
ICAgICAgICA6IG1fdWlkKDApDQogICAgew0KICAgIH0NCiAgICANCiAgICBzdGF0aWMgVUlEIGZy
b21JbnQodWludDY0X3QgdmFsdWUpDQogICAgew0KICAgICAgICBVSUQgcmVzdWx0Ow0KICAgICAg
ICByZXN1bHQubV91aWQgPSB2YWx1ZTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQog
ICAgDQogICAgVUlEKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkNCiAgICAgICAgOiBt
X3VpZChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpDQogICAgew0KICAgIH0N
CiAgICANCiAgICBzdGF0aWMgVUlEIGNyZWF0ZSgpOw0KICAgIA0KICAgIHVpbnQ2NF90IHRvSW50
KCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX3VpZDsNCiAgICB9DQogICAgDQogICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVJRCYgb3RoZXIpIGNvbnN0DQogICAgew0KICAgICAgICBy
ZXR1cm4gbV91aWQgPT0gb3RoZXIubV91aWQ7DQogICAgfQ0KICAgIA0KICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBVSUQmIG90aGVyKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOw0KICAgIH0NCiAgICANCiAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiAqdGhpcyAhPSBVSUQoKTsNCiAgICB9DQogICAg
DQogICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0DQogICAgew0KICAgICAg
ICByZXR1cm4gKnRoaXMgIT0gVUlEKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsNCiAgICB9
DQogICAgDQogICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4g
SW50SGFzaDx1aW50NjRfdD46Omhhc2gobV91aWQpOw0KICAgIH0NCiAgICANCiAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsNCiAgICBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsNCiAgICANCnByaXZhdGU6DQogICAgdWludDY0X3QgbV91aWQ7DQp9Ow0KDQpzdHJ1
Y3QgVUlESGFzaCB7DQogICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVUlEJiBrZXkpIHsg
cmV0dXJuIGtleS5oYXNoKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVSUQmIGEs
IGNvbnN0IFVJRCYgYikgeyByZXR1cm4gYSA9PSBiOyB9DQogICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsNCn07DQoNCn0gfSANCg0K
bmFtZXNwYWNlIFdURiB7DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFz
aDsNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6UHJvZmlsZXI6OlVJRD4gOiBK
U0M6OlByb2ZpbGVyOjpVSURIYXNoIHsgfTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEhhc2hUcmFpdHM7DQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UHJvZmlsZXI6
OlVJRD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpQcm9maWxlcjo6VUlEPiB7IH07DQoN
Cn0gDQojbGluZSAzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxwcm9maWxlclxcUHJvZmlsZXJDb21waWxhdGlvbi5oIg0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCmNsYXNzIEZpcmVEZXRhaWw7DQoNCm5hbWVzcGFjZSBQcm9maWxlciB7DQoNCmNs
YXNzIEJ5dGVjb2RlczsNCmNsYXNzIERhdGFiYXNlOw0KDQoNCg0KDQpjbGFzcyBDb21waWxhdGlv
biA6IHB1YmxpYyBSZWZDb3VudGVkPENvbXBpbGF0aW9uPiB7DQpwdWJsaWM6DQogICAgQ29tcGls
YXRpb24oQnl0ZWNvZGVzKiwgQ29tcGlsYXRpb25LaW5kKTsNCiAgICB+Q29tcGlsYXRpb24oKTsN
CiAgICANCiAgICB2b2lkIGFkZFByb2ZpbGVkQnl0ZWNvZGVzKERhdGFiYXNlJiwgQ29kZUJsb2Nr
Kik7DQogICAgdW5zaWduZWQgcHJvZmlsZWRCeXRlY29kZXNTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9maWxlZEJ5dGVjb2Rlcy5zaXplKCk7IH0NCiAgICBjb25zdCBQcm9maWxlZEJ5dGVjb2Rl
cyYgcHJvZmlsZWRCeXRlY29kZXNBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3Byb2Zp
bGVkQnl0ZWNvZGVzW2ldOyB9DQogICAgDQogICAgdm9pZCBub3RpY2VJbmxpbmVkR2V0QnlJZCgp
IHsgbV9udW1JbmxpbmVkR2V0QnlJZHMrKzsgfQ0KICAgIHZvaWQgbm90aWNlSW5saW5lZFB1dEJ5
SWQoKSB7IG1fbnVtSW5saW5lZFB1dEJ5SWRzKys7IH0NCiAgICB2b2lkIG5vdGljZUlubGluZWRD
YWxsKCkgeyBtX251bUlubGluZWRDYWxscysrOyB9DQogICAgDQogICAgQnl0ZWNvZGVzKiBieXRl
Y29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQ0KICAgIENvbXBpbGF0aW9uS2lu
ZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9DQogICAgDQogICAgdm9pZCBhZGREZXNj
cmlwdGlvbihjb25zdCBDb21waWxlZEJ5dGVjb2RlJik7DQogICAgdm9pZCBhZGREZXNjcmlwdGlv
bihjb25zdCBPcmlnaW5TdGFjayYsIGNvbnN0IENTdHJpbmcmIGRlc2NyaXB0aW9uKTsNCiAgICBF
eGVjdXRpb25Db3VudGVyKiBleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJik7
DQogICAgdm9pZCBhZGRPU1JFeGl0U2l0ZShjb25zdCBWZWN0b3I8TWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTSW50ZXJuYWxQdHJUYWc+PiYgY29kZUFkZHJlc3Nlcyk7DQogICAgT1NSRXhpdCogYWRk
T1NSRXhpdCh1bnNpZ25lZCBpZCwgY29uc3QgT3JpZ2luU3RhY2smLCBFeGl0S2luZCwgYm9vbCBp
c1dhdGNocG9pbnQpOw0KICAgIA0KICAgIHZvaWQgc2V0SmV0dGlzb25SZWFzb24oSmV0dGlzb25S
ZWFzb24sIGNvbnN0IEZpcmVEZXRhaWwqKTsNCiAgICANCiAgICBVSUQgdWlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91aWQ7IH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsN
CiAgICBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICANCnByaXZhdGU6
DQogICAgQ29tcGlsYXRpb25LaW5kIG1fa2luZDsNCiAgICBCeXRlY29kZXMqIG1fYnl0ZWNvZGVz
Ow0KICAgIFZlY3RvcjxQcm9maWxlZEJ5dGVjb2Rlcz4gbV9wcm9maWxlZEJ5dGVjb2RlczsNCiAg
ICBWZWN0b3I8Q29tcGlsZWRCeXRlY29kZT4gbV9kZXNjcmlwdGlvbnM7DQogICAgSGFzaE1hcDxP
cmlnaW5TdGFjaywgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+PiBtX2NvdW50ZXJz
Ow0KICAgIFZlY3RvcjxPU1JFeGl0U2l0ZT4gbV9vc3JFeGl0U2l0ZXM7DQogICAgU2VnbWVudGVk
VmVjdG9yPE9TUkV4aXQ+IG1fb3NyRXhpdHM7DQogICAgdW5zaWduZWQgbV9udW1JbmxpbmVkR2V0
QnlJZHM7DQogICAgdW5zaWduZWQgbV9udW1JbmxpbmVkUHV0QnlJZHM7DQogICAgdW5zaWduZWQg
bV9udW1JbmxpbmVkQ2FsbHM7DQogICAgSmV0dGlzb25SZWFzb24gbV9qZXR0aXNvblJlYXNvbjsN
CiAgICBDU3RyaW5nIG1fYWRkaXRpb25hbEpldHRpc29uUmVhc29uOw0KICAgIFVJRCBtX3VpZDsN
Cn07DQoNCn0gfSANCiNsaW5lIDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHByb2ZpbGVyXFxQcm9maWxlckRhdGFiYXNlLmgiDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHByb2ZpbGVy
XFxQcm9maWxlckV2ZW50LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBQcm9maWxlciB7DQoNCmNsYXNzIEJ5dGVjb2RlczsNCmNsYXNzIENvbXBpbGF0aW9u
Ow0KDQpjbGFzcyBFdmVudCB7DQpwdWJsaWM6DQogICAgRXZlbnQoKQ0KICAgIHsNCiAgICB9DQog
ICAgDQogICAgRXZlbnQoV2FsbFRpbWUgdGltZSwgQnl0ZWNvZGVzKiBieXRlY29kZXMsIENvbXBp
bGF0aW9uKiBjb21waWxhdGlvbiwgY29uc3QgY2hhciogc3VtbWFyeSwgY29uc3QgQ1N0cmluZyYg
ZGV0YWlsKQ0KICAgICAgICA6IG1fdGltZSh0aW1lKQ0KICAgICAgICAsIG1fYnl0ZWNvZGVzKGJ5
dGVjb2RlcykNCiAgICAgICAgLCBtX2NvbXBpbGF0aW9uKGNvbXBpbGF0aW9uKQ0KICAgICAgICAs
IG1fc3VtbWFyeShzdW1tYXJ5KQ0KICAgICAgICAsIG1fZGV0YWlsKGRldGFpbCkNCiAgICB7DQog
ICAgfQ0KICAgIA0KICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdA0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIG1fYnl0ZWNvZGVzOw0KICAgIH0NCiAgICANCiAgICBXYWxsVGltZSB0aW1l
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lOyB9DQogICAgQnl0ZWNvZGVzKiBieXRlY29kZXMoKSBj
b25zdCB7IHJldHVybiBtX2J5dGVjb2RlczsgfQ0KICAgIENvbXBpbGF0aW9uKiBjb21waWxhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcGlsYXRpb247IH0NCiAgICBjb25zdCBjaGFyKiBzdW1t
YXJ5KCkgY29uc3QgeyByZXR1cm4gbV9zdW1tYXJ5OyB9DQogICAgY29uc3QgQ1N0cmluZyYgZGV0
YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0NCiAgICANCiAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsNCiAgICBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqKSBjb25z
dDsNCiAgICANCnByaXZhdGU6DQogICAgV2FsbFRpbWUgbV90aW1lIHsgfTsNCiAgICBCeXRlY29k
ZXMqIG1fYnl0ZWNvZGVzIHsgbnVsbHB0ciB9Ow0KICAgIENvbXBpbGF0aW9uKiBtX2NvbXBpbGF0
aW9uIHsgbnVsbHB0ciB9Ow0KICAgIGNvbnN0IGNoYXIqIG1fc3VtbWFyeSB7IG51bGxwdHIgfTsN
CiAgICBDU3RyaW5nIG1fZGV0YWlsOw0KfTsNCg0KfSB9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccHJvZmlsZXJcXFByb2ZpbGVy
RGF0YWJhc2UuaCINCg0KDQoNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9m
aWxlciB7DQoNCmNsYXNzIERhdGFiYXNlIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5l
dyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6
ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxl
dGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3Bl
cmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTAp
OyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2
YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0g
aW50OyBEYXRhYmFzZShjb25zdCBEYXRhYmFzZSYpID0gZGVsZXRlOyBEYXRhYmFzZSYgb3BlcmF0
b3I9KGNvbnN0IERhdGFiYXNlJikgPSBkZWxldGU7Ow0KcHVibGljOg0KICAgIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KSBEYXRhYmFzZShWTSYpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB+RGF0
YWJhc2UoKTsNCiAgICANCiAgICBpbnQgZGF0YWJhc2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YWJhc2VJRDsgfQ0KICAgIA0KICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0ZWNvZGVzRm9yKENvZGVC
bG9jayopOw0KICAgIHZvaWQgbm90aWZ5RGVzdHJ1Y3Rpb24oQ29kZUJsb2NrKik7DQogICAgDQog
ICAgdm9pZCBhZGRDb21waWxhdGlvbihDb2RlQmxvY2sqLCBSZWY8Q29tcGlsYXRpb24+JiYpOw0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBK
U1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsNCiAgICANCiAgICANCiAgICANCiAg
ICBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgU3RyaW5nIHRvSlNPTigpIGNvbnN0Ow0KICAgIA0KICAg
IA0KICAgIA0KICAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBib29sIHNhdmUoY29uc3QgY2hhciog
ZmlsZW5hbWUpIGNvbnN0Ow0KDQogICAgdm9pZCByZWdpc3RlclRvU2F2ZUF0RXhpdChjb25zdCBj
aGFyKiBmaWxlbmFtZSk7DQogICAgDQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgbG9n
RXZlbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIqIHN1bW1hcnksIGNvbnN0IENT
dHJpbmcmIGRldGFpbCk7DQogICAgDQpwcml2YXRlOg0KICAgIEJ5dGVjb2RlcyogZW5zdXJlQnl0
ZWNvZGVzRm9yKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgQ29kZUJsb2NrKik7DQogICAgDQogICAg
dm9pZCBhZGREYXRhYmFzZVRvQXRFeGl0KCk7DQogICAgdm9pZCByZW1vdmVEYXRhYmFzZUZyb21B
dEV4aXQoKTsNCiAgICB2b2lkIHBlcmZvcm1BdEV4aXRTYXZlKCkgY29uc3Q7DQogICAgc3RhdGlj
IERhdGFiYXNlKiByZW1vdmVGaXJzdEF0RXhpdERhdGFiYXNlKCk7DQogICAgc3RhdGljIHZvaWQg
YXRFeGl0Q2FsbGJhY2soKTsNCiAgICANCiAgICBpbnQgbV9kYXRhYmFzZUlEOw0KICAgIFZNJiBt
X3ZtOw0KICAgIFNlZ21lbnRlZFZlY3RvcjxCeXRlY29kZXM+IG1fYnl0ZWNvZGVzOw0KICAgIEhh
c2hNYXA8Q29kZUJsb2NrKiwgQnl0ZWNvZGVzKj4gbV9ieXRlY29kZXNNYXA7DQogICAgVmVjdG9y
PFJlZjxDb21waWxhdGlvbj4+IG1fY29tcGlsYXRpb25zOw0KICAgIEhhc2hNYXA8Q29kZUJsb2Nr
KiwgUmVmPENvbXBpbGF0aW9uPj4gbV9jb21waWxhdGlvbk1hcDsNCiAgICBWZWN0b3I8RXZlbnQ+
IG1fZXZlbnRzOw0KICAgIGJvb2wgbV9zaG91bGRTYXZlQXRFeGl0Ow0KICAgIENTdHJpbmcgbV9h
dEV4aXRTYXZlRmlsZW5hbWU7DQogICAgRGF0YWJhc2UqIG1fbmV4dFJlZ2lzdGVyZWREYXRhYmFz
ZTsNCiAgICBMb2NrIG1fbG9jazsNCn07DQoNCn0gfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFZNSW5saW5lcy5o
Ig0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXHJ1bnRpbWVcXFdhdGNoZG9nLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1dv
cmtRdWV1ZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmgi
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFn
bWEgb25jZQ0KDQoNCg0KDQpuYW1lc3BhY2UgV1RGIHsNCg0KDQoNCg0KY2xhc3MgRnVuY3Rpb25E
aXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uRGlzcGF0Y2hl
cj4gew0KcHVibGljOg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2aXJ0dWFsIH5GdW5jdGlv
bkRpc3BhdGNoZXIoKTsNCg0KICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lk
ICgpPiYmKSA9IDA7DQoNCnByb3RlY3RlZDoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgRnVu
Y3Rpb25EaXNwYXRjaGVyKCk7DQp9Ow0KDQp9IA0KDQp1c2luZyBXVEY6OkZ1bmN0aW9uRGlzcGF0
Y2hlcjsNCiNsaW5lIDMyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9Xb3JrUXVldWUuaCINCg0KDQoNCg0KDQojbGluZSAzOCAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvV29ya1F1
ZXVlLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxX
VEZcXEhlYWRlcnNcXHd0Zi9SdW5Mb29wLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcV2ViS2l0TGlicmFyaWVz
XFx3aW5cXGluY2x1ZGVcXENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDIxNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxXZWJLaXRM
aWJyYXJpZXNcXHdpblxcaW5jbHVkZVxcQ29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmgiDQoNCiNs
aW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRl
cnNcXHd0Zi9SdW5Mb29wLmgiDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxi
dWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUnVuTG9vcC5oIg0KDQoNCg0KI2xpbmUgNDcg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3Rm
L1J1bkxvb3AuaCINCg0KbmFtZXNwYWNlIFdURiB7DQoNCg0KDQoNCg0KI2xpbmUgNTUgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1J1bkxv
b3AuaCINCg0KDQp1c2luZyBSdW5Mb29wTW9kZSA9IENGU3RyaW5nUmVmOw0KDQoNCg0KDQojbGlu
ZSA2MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJz
XFx3dGYvUnVuTG9vcC5oIg0KDQpjbGFzcyBSdW5Mb29wIGZpbmFsIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7DQogICAgUnVuTG9vcChjb25zdCBSdW5Mb29wJikgPSBkZWxldGU7IFJ1bkxv
b3AmIG9wZXJhdG9yPShjb25zdCBSdW5Mb29wJikgPSBkZWxldGU7Ow0KcHVibGljOg0KICAgIA0K
ICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBzdGF0aWMgdm9pZCBpbml0aWFsaXplTWFpbigpOw0K
DQoNCiNsaW5lIDcyICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZc
XEhlYWRlcnNcXHd0Zi9SdW5Mb29wLmgiDQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3Rh
dGljIFJ1bkxvb3AmIGN1cnJlbnQoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgc3RhdGlj
IFJ1bkxvb3AmIG1haW4oKTsNCg0KDQoNCiNsaW5lIDc5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SdW5Mb29wLmgiDQogICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIHN0YXRpYyBib29sIGlzTWFpbigpOw0KICAgIH5SdW5Mb29wKCkgZmlu
YWw7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2
b2lkKCk+JiYpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGRpc3BhdGNoQWZ0ZXIo
U2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmKTsNCg0KDQojbGluZSA4NyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUnVuTG9vcC5oIg0K
DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyB2b2lkIHJ1bigpOw0KICAgIF9fZGVj
bHNwZWMoZGxsaW1wb3J0KSB2b2lkIHN0b3AoKTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
dm9pZCB3YWtlVXAoKTsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHN1c3BlbmRG
dW5jdGlvbkRpc3BhdGNoRm9yQ3VycmVudEN5Y2xlKCk7DQoNCiAgICBlbnVtIGNsYXNzIEN5Y2xl
UmVzdWx0IHsgQ29udGludWUsIFN0b3AgfTsNCiAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgQ3lj
bGVSZXN1bHQgc3RhdGljIGN5Y2xlKFJ1bkxvb3BNb2RlID0ga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsNCg0KDQoNCiNsaW5lIDEwMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2
NFxcV1RGXFxIZWFkZXJzXFx3dGYvUnVuTG9vcC5oIg0KDQoNCiAgICANCiAgICBfX2RlY2xzcGVj
KGRsbGltcG9ydCkgc3RhdGljIHZvaWQgaXRlcmF0ZSgpOw0KICAgIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBzdGF0aWMgdm9pZCBzZXRXYWtlVXBDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jik7DQojbGluZSAxMDYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdU
RlxcSGVhZGVyc1xcd3RmL1J1bkxvb3AuaCINCg0KDQogICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJS
dW5Mb29wTWVzc2FnZVdpbmRvd0NsYXNzKCk7DQojbGluZSAxMTAgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVyc1xcd3RmL1J1bkxvb3AuaCINCg0KICAg
IGNsYXNzIFRpbWVyQmFzZSB7DQogICAgICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJl
dHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6
IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7
DQogICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOw0KICAgIHB1YmxpYzoNCiAgICAgICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIGV4cGxpY2l0IFRpbWVyQmFzZShSdW5Mb29wJik7DQogICAgICAg
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2aXJ0dWFsIH5UaW1lckJhc2UoKTsNCg0KICAgICAgICB2
b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50
ZXJ2YWwsIDBfcyksIHRydWUpOyB9DQogICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KFNlY29uZHMg
aW50ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50ZXJ2YWwsIDBfcyksIGZhbHNlKTsgfQ0KDQog
ICAgICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIHN0b3AoKTsNCiAgICAgICAgX19kZWNs
c3BlYyhkbGxpbXBvcnQpIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsNCiAgICAgICAgX19kZWNsc3Bl
YyhkbGxpbXBvcnQpIFNlY29uZHMgc2Vjb25kc1VudGlsRmlyZSgpIGNvbnN0Ow0KDQogICAgICAg
IHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsNCg0KDQoNCg0KI2xpbmUgMTMxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SdW5Mb29wLmgi
DQoNCiAgICBwcml2YXRlOg0KICAgICAgICBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBzdGFy
dChTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCk7DQoNCiAgICAgICAgUmVmPFJ1bkxvb3A+
IG1fcnVuTG9vcDsNCg0KDQogICAgICAgIGJvb2wgaXNBY3RpdmUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImKSBjb25zdDsNCiAgICAgICAgdm9pZCB0aW1lckZpcmVkKCk7DQogICAgICAgIE1vbm90b25p
Y1RpbWUgbV9uZXh0RmlyZURhdGU7DQogICAgICAgIFNlY29uZHMgbV9pbnRlcnZhbDsNCiAgICAg
ICAgYm9vbCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsNCiAgICAgICAgYm9vbCBtX2lzQWN0aXZl
IHsgZmFsc2UgfTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMTU4ICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SdW5Mb29w
LmgiDQogICAgfTsNCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUaW1lckZpcmVkQ2xhc3M+DQog
ICAgY2xhc3MgVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsNCiAgICBwdWJsaWM6DQogICAgICAg
IHR5cGVkZWYgdm9pZCAoVGltZXJGaXJlZENsYXNzOjoqVGltZXJGaXJlZEZ1bmN0aW9uKSgpOw0K
DQogICAgICAgIFRpbWVyKFJ1bkxvb3AmIHJ1bkxvb3AsIFRpbWVyRmlyZWRDbGFzcyogbywgVGlt
ZXJGaXJlZEZ1bmN0aW9uIGYpDQogICAgICAgICAgICA6IFRpbWVyQmFzZShydW5Mb29wKQ0KICAg
ICAgICAgICAgLCBtX2Z1bmN0aW9uKGYpDQogICAgICAgICAgICAsIG1fb2JqZWN0KG8pDQogICAg
ICAgIHsNCiAgICAgICAgfQ0KDQogICAgcHJpdmF0ZToNCiAgICAgICAgdm9pZCBmaXJlZCgpIG92
ZXJyaWRlIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikoKTsgfQ0KDQogICAgICAgIA0KICAgICAg
ICANCiAgICAgICAgVGltZXJGaXJlZEZ1bmN0aW9uIG1fZnVuY3Rpb247DQogICAgICAgIFRpbWVy
RmlyZWRDbGFzcyogbV9vYmplY3Q7DQogICAgfTsNCg0KcHJpdmF0ZToNCiAgICBjbGFzcyBIb2xk
ZXI7DQoNCiAgICBjbGFzcyBEaXNwYXRjaFRpbWVyIGZpbmFsIDogcHVibGljIFRpbWVyQmFzZSB7
DQogICAgcHVibGljOg0KICAgICAgICBEaXNwYXRjaFRpbWVyKFJ1bkxvb3AmIHJ1bkxvb3ApDQog
ICAgICAgICAgICA6IFRpbWVyQmFzZShydW5Mb29wKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0K
ICAgICAgICB2b2lkIHNldEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikNCiAg
ICAgICAgew0KICAgICAgICAgICAgbV9mdW5jdGlvbiA9IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92
ZVBhcmFtZXRlcj4oZnVuY3Rpb24pOw0KICAgICAgICB9DQogICAgcHJpdmF0ZToNCiAgICAgICAg
dm9pZCBmaXJlZCgpIGZpbmFsIHsgbV9mdW5jdGlvbigpOyB9DQoNCiAgICAgICAgRnVuY3Rpb248
dm9pZCgpPiBtX2Z1bmN0aW9uOw0KICAgIH07DQoNCiAgICBSdW5Mb29wKCk7DQoNCiAgICB2b2lk
IHBlcmZvcm1Xb3JrKCk7DQoNCiAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX2N1cnJlbnRJ
dGVyYXRpb247DQoNCiAgICBMb2NrIG1fbmV4dEl0ZXJhdGlvbkxvY2s7DQogICAgRGVxdWU8RnVu
Y3Rpb248dm9pZCgpPj4gbV9uZXh0SXRlcmF0aW9uOw0KDQogICAgYm9vbCBtX2lzRnVuY3Rpb25E
aXNwYXRjaFN1c3BlbmRlZCB7IGZhbHNlIH07DQogICAgYm9vbCBtX2hhc1N1c3BlbmRlZEZ1bmN0
aW9ucyB7IGZhbHNlIH07DQoNCg0KICAgIHN0YXRpYyBMUkVTVUxUIF9fc3RkY2FsbCBSdW5Mb29w
V25kUHJvYyhIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSk7DQogICAgTFJFU1VMVCB3bmRQcm9j
KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKTsN
CiAgICBIV05EIG1fcnVuTG9vcE1lc3NhZ2VXaW5kb3c7DQoNCiAgICBMb2NrIG1fbG9vcExvY2s7
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMjU1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9SdW5Mb29wLmgiDQoNCg0KICAgIEZ1bmN0aW9uPHZv
aWQoKT4gbV93YWtlVXBDYWxsYmFjazsNCiNsaW5lIDI1OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvUnVuTG9vcC5oIg0KfTsNCg0KfSAN
Cg0KdXNpbmcgV1RGOjpSdW5Mb29wOw0KdXNpbmcgV1RGOjpSdW5Mb29wTW9kZTsNCiNsaW5lIDM5
ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0
Zi9Xb3JrUXVldWUuaCINCiNsaW5lIDQwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXGJ1aWxk
X2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Xb3JrUXVldWUuaCINCg0KbmFtZXNwYWNlIFdURiB7
DQoNCmNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgew0K
DQpwdWJsaWM6DQogICAgZW51bSBjbGFzcyBUeXBlIHsNCiAgICAgICAgU2VyaWFsLA0KICAgICAg
ICBDb25jdXJyZW50DQogICAgfTsNCiAgICBlbnVtIGNsYXNzIFFPUyB7DQogICAgICAgIFVzZXJJ
bnRlcmFjdGl2ZSwNCiAgICAgICAgVXNlckluaXRpYXRlZCwNCiAgICAgICAgRGVmYXVsdCwNCiAg
ICAgICAgVXRpbGl0eSwNCiAgICAgICAgQmFja2dyb3VuZA0KICAgIH07DQoNCiAgICBfX2RlY2xz
cGVjKGRsbGltcG9ydCkgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNyZWF0ZShjb25zdCBjaGFyKiBu
YW1lLCBUeXBlID0gVHlwZTo6U2VyaWFsLCBRT1MgPSBRT1M6OkRlZmF1bHQpOw0KICAgIH5Xb3Jr
UXVldWUoKSBmaW5hbDsNCg0KICAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIGRpc3BhdGNo
KEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7DQogICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZv
aWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYpOw0KDQogICAgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRl
cmF0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lkKHNpemVfdCBpbmRleCk+JiYpOw0KDQoNCg0KI2xp
bmUgNjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcYnVpbGRfYW1kNjRcXFdURlxcSGVhZGVy
c1xcd3RmL1dvcmtRdWV1ZS5oIg0KICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVy
biAqbV9ydW5Mb29wOyB9DQojbGluZSA3MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWls
ZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvV29ya1F1ZXVlLmgiDQoNCnByaXZhdGU6DQogICAg
ZXhwbGljaXQgV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7DQoNCiAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOw0KICAg
IHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7DQoNCg0KDQoNCiNsaW5lIDgyICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXGJ1aWxkX2FtZDY0XFxXVEZcXEhlYWRlcnNcXHd0Zi9Xb3JrUXVldWUu
aCINCiAgICBSdW5Mb29wKiBtX3J1bkxvb3A7DQojbGluZSA4NCAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxidWlsZF9hbWQ2NFxcV1RGXFxIZWFkZXJzXFx3dGYvV29ya1F1ZXVlLmgiDQp9Ow0K
DQp9DQoNCnVzaW5nIFdURjo6V29ya1F1ZXVlOw0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcV2F0Y2hkb2cuaCINCg0K
bmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENhbGxGcmFtZTsNCmNsYXNzIEpTR2xvYmFsT2JqZWN0
Ow0KY2xhc3MgVk07DQoNCmNsYXNzIFdhdGNoZG9nIDogcHVibGljIFdURjo6VGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V2F0Y2hkb2c+IHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2
b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9p
ZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3Ig
ZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1
cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1
c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0K
cHVibGljOg0KICAgIGNsYXNzIFNjb3BlOw0KDQogICAgV2F0Y2hkb2coVk0qKTsNCiAgICB2b2lk
IHdpbGxEZXN0cm95Vk0oVk0qKTsNCg0KICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZFRlcm1pbmF0
ZUNhbGxiYWNrKShKU0dsb2JhbE9iamVjdCosIHZvaWQqIGRhdGExLCB2b2lkKiBkYXRhMik7DQog
ICAgdm9pZCBzZXRUaW1lTGltaXQoU2Vjb25kcyBsaW1pdCwgU2hvdWxkVGVybWluYXRlQ2FsbGJh
Y2sgPSBudWxscHRyLCB2b2lkKiBkYXRhMSA9IG51bGxwdHIsIHZvaWQqIGRhdGEyID0gbnVsbHB0
cik7DQoNCiAgICBib29sIHNob3VsZFRlcm1pbmF0ZShKU0dsb2JhbE9iamVjdCopOw0KDQogICAg
Ym9vbCBoYXNUaW1lTGltaXQoKTsNCiAgICB2b2lkIGVudGVyZWRWTSgpOw0KICAgIHZvaWQgZXhp
dGVkVk0oKTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBub1RpbWVMaW1pdCA9IFNl
Y29uZHM6OmluZmluaXR5KCk7DQoNCnByaXZhdGU6DQogICAgdm9pZCBzdGFydFRpbWVyKFNlY29u
ZHMgdGltZUxpbWl0KTsNCiAgICB2b2lkIHN0b3BUaW1lcigpOw0KDQogICAgYm9vbCBtX2hhc0Vu
dGVyZWRWTSB7IGZhbHNlIH07DQoNCiAgICBMb2NrIG1fbG9jazsgDQogICAgVk0qIG1fdm07DQoN
CiAgICBTZWNvbmRzIG1fdGltZUxpbWl0Ow0KDQogICAgU2Vjb25kcyBtX2NwdURlYWRsaW5lOw0K
ICAgIE1vbm90b25pY1RpbWUgbV9kZWFkbGluZTsNCg0KICAgIFNob3VsZFRlcm1pbmF0ZUNhbGxi
YWNrIG1fY2FsbGJhY2s7DQogICAgdm9pZCogbV9jYWxsYmFja0RhdGExOw0KICAgIHZvaWQqIG1f
Y2FsbGJhY2tEYXRhMjsNCg0KICAgIFJlZjxXb3JrUXVldWU+IG1fdGltZXJRdWV1ZTsNCg0KICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7DQp9Ow0KDQp9IA0KI2xpbmUgMzIg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZVxcVk1JbmxpbmVzLmgiDQoNCm5hbWVzcGFjZSBKU0Mgew0KICAgIA0KYm9vbCBWTTo6ZW5zdXJl
U3RhY2tDYXBhY2l0eUZvcihSZWdpc3RlciogbmV3VG9wT2ZTdGFjaykNCnsNCg0KICAgIHJldHVy
biBuZXdUb3BPZlN0YWNrID49IG1fc29mdFN0YWNrTGltaXQ7DQoNCg0KI2xpbmUgNDIgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVk1J
bmxpbmVzLmgiDQogICAgDQp9DQoNCmJvb2wgVk06OmlzU2FmZVRvUmVjdXJzZVNvZnQoKSBjb25z
dA0Kew0KICAgIGJvb2wgc2FmZSA9IGlzU2FmZVRvUmVjdXJzZShtX3NvZnRTdGFja0xpbWl0KTsN
Cg0KDQojbGluZSA1MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxydW50aW1lXFxWTUlubGluZXMuaCINCiAgICByZXR1cm4gc2FmZTsNCn0NCg0KdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4NCnZvaWQgVk06OmxvZ0V2ZW50KENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBjaGFyKiBzdW1tYXJ5LCBjb25zdCBGdW5jJiBmdW5jKQ0Kew0KICAgIGlmICgo
IW1fcGVyQnl0ZWNvZGVQcm9maWxlcikpDQogICAgICAgIHJldHVybjsNCiAgICANCiAgICBtX3Bl
ckJ5dGVjb2RlUHJvZmlsZXItPmxvZ0V2ZW50KGNvZGVCbG9jaywgc3VtbWFyeSwgZnVuYygpKTsN
Cn0NCg0KaW5saW5lIENhbGxGcmFtZSogVk06OnRvcEpTQ2FsbEZyYW1lKCkgY29uc3QNCnsNCiAg
ICBDYWxsRnJhbWUqIGZyYW1lID0gdG9wQ2FsbEZyYW1lOw0KICAgIGlmICgoIWZyYW1lKSkNCiAg
ICAgICAgcmV0dXJuIGZyYW1lOw0KICAgIGlmICgoIWZyYW1lLT5pc1dhc21GcmFtZSgpICYmICFm
cmFtZS0+aXNTdGFja092ZXJmbG93RnJhbWUoKSkpDQogICAgICAgIHJldHVybiBmcmFtZTsNCiAg
ICBFbnRyeUZyYW1lKiBlbnRyeUZyYW1lID0gdG9wRW50cnlGcmFtZTsNCiAgICBkbyB7DQogICAg
ICAgIGZyYW1lID0gZnJhbWUtPmNhbGxlckZyYW1lKGVudHJ5RnJhbWUpOw0KICAgICAgICAoKHZv
aWQpMCk7DQogICAgfSB3aGlsZSAoZnJhbWUgJiYgZnJhbWUtPmlzV2FzbUZyYW1lKCkpOw0KICAg
IHJldHVybiBmcmFtZTsNCn0NCg0KfSANCiNsaW5lIDM4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXENvbW1vblNsb3dQYXRocy5oIg0K
DQoNCm5hbWVzcGFjZSBKU0Mgew0KDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBDb21tb25TbG93
UGF0aHMgew0KDQpfX2ZvcmNlaW5saW5lIGludCBudW1iZXJPZkV4dHJhU2xvdHMoaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKQ0Kew0KICAgIGludCBmcmFtZVNpemUgPSBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOw0KICAg
IGludCBhbGlnbmVkRnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxp
Z25tZW50UmVnaXN0ZXJzKCksIGZyYW1lU2l6ZSk7DQogICAgcmV0dXJuIGFsaWduZWRGcmFtZVNp
emUgLSBmcmFtZVNpemU7DQp9DQoNCl9fZm9yY2VpbmxpbmUgaW50IG51bWJlck9mU3RhY2tQYWRk
aW5nU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykNCnsNCiAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpDQogICAgICAgIHJldHVybiAwOw0KICAgIGludCBhbGlnbmVkRnJh
bWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCksIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5S
ZWdpc3RlcnMpOw0KICAgIGludCBhbGlnbmVkRnJhbWVTaXplRm9yUGFyYW1ldGVycyA9IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSArIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKTsNCiAg
ICByZXR1cm4gYWxpZ25lZEZyYW1lU2l6ZUZvclBhcmFtZXRlcnMgLSBhbGlnbmVkRnJhbWVTaXpl
Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lIGludCBudW1iZXJPZlN0YWNrUGFkZGluZ1Nsb3RzV2l0aEV4
dHJhU2xvdHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcykNCnsNCiAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPj0gY29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpDQogICAgICAgIHJldHVybiAwOw0KICAgIHJldHVybiBudW1iZXJP
ZlN0YWNrUGFkZGluZ1Nsb3RzKGNvZGVCbG9jaywgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
ICsgbnVtYmVyT2ZFeHRyYVNsb3RzKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsNCn0NCg0K
X19mb3JjZWlubGluZSBDb2RlQmxvY2sqIGNvZGVCbG9ja0Zyb21DYWxsRnJhbWVDYWxsZWUoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkNCnsNCiAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBjYWxsZWUtPmpzRXhlY3V0YWJsZSgp
LT5jb2RlQmxvY2tGb3Ioa2luZCk7DQp9DQoNCl9fZm9yY2VpbmxpbmUgaW50IGFyaXR5Q2hlY2tG
b3IoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQ0Kew0KICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY29kZUJsb2NrRnJvbUNhbGxG
cmFtZUNhbGxlZShjYWxsRnJhbWUsIGtpbmQpOw0KICAgICgodm9pZCkwKTsNCiAgICBpbnQgcGFk
ZGluZyA9IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHNXaXRoRXh0cmFTbG90cyhuZXdDb2RlQmxv
Y2ssIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7DQogICAgDQogICAg
UmVnaXN0ZXIqIG5ld1N0YWNrID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBwYWRkaW5nKTsNCg0KICAg
IGlmICgoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IobmV3U3RhY2spKSkNCiAgICAgICAgcmV0
dXJuIC0xOw0KICAgIHJldHVybiBwYWRkaW5nOw0KfQ0KDQppbmxpbmUgYm9vbCBvcEluQnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHBy
b3BOYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpDQp7DQogICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Nj
b3BlKCh2bSkpOw0KICAgIGlmICghYmFzZVZhbC5pc09iamVjdCgpKSB7DQogICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVy
cm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbCkpOw0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg
fQ0KDQogICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChiYXNlVmFsKTsNCiAgICBpZiAo
YXJyYXlQcm9maWxlKQ0KICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFz
ZU9iai0+c3RydWN0dXJlKHZtKSk7DQoNCiAgICB1aW50MzJfdCBpOw0KICAgIGlmIChwcm9wTmFt
ZS5nZXRVSW50MzIoaSkpIHsNCiAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkNCiAgICAgICAgICAg
IGFycmF5UHJvZmlsZS0+b2JzZXJ2ZUluZGV4ZWRSZWFkKHZtLCBiYXNlT2JqLCBpKTsNCiAgICAg
ICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBiYXNlT2JqLT5oYXNQcm9wZXJ0eShnbG9i
YWxPYmplY3QsIGkpOyB9IHdoaWxlIChmYWxzZSk7DQogICAgfQ0KDQogICAgYXV0byBwcm9wZXJ0
eSA9IHByb3BOYW1lLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsNCiAgICBkbyB7IGlmICgo
KHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBmYWxzZTsgfSB3aGlsZSAoZmFsc2UpOw0KICAg
IGRvIHsgc2NvcGUucmVsZWFzZSgpOyByZXR1cm4gYmFzZU9iai0+aGFzUHJvcGVydHkoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSk7IH0gd2hpbGUgKGZhbHNlKTsNCn0NCg0KaW5saW5lIGJvb2wgY2Fu
QWNjZXNzQXJndW1lbnRJbmRleFF1aWNrbHkoSlNPYmplY3QmIG9iamVjdCwgdWludDMyX3QgaW5k
ZXgpDQp7DQogICAgc3dpdGNoIChvYmplY3QudHlwZSgpKSB7DQogICAgY2FzZSBEaXJlY3RBcmd1
bWVudHNUeXBlOiB7DQogICAgICAgIERpcmVjdEFyZ3VtZW50cyogZGlyZWN0QXJndW1lbnRzID0g
anNDYXN0PERpcmVjdEFyZ3VtZW50cyo+KCZvYmplY3QpOw0KICAgICAgICBpZiAoZGlyZWN0QXJn
dW1lbnRzLT5pc01hcHBlZEFyZ3VtZW50SW5ERkcoaW5kZXgpKQ0KICAgICAgICAgICAgcmV0dXJu
IHRydWU7DQogICAgICAgIGJyZWFrOw0KICAgIH0NCiAgICBjYXNlIFNjb3BlZEFyZ3VtZW50c1R5
cGU6IHsNCiAgICAgICAgU2NvcGVkQXJndW1lbnRzKiBzY29wZWRBcmd1bWVudHMgPSBqc0Nhc3Q8
U2NvcGVkQXJndW1lbnRzKj4oJm9iamVjdCk7DQogICAgICAgIGlmIChzY29wZWRBcmd1bWVudHMt
PmlzTWFwcGVkQXJndW1lbnRJbkRGRyhpbmRleCkpDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsN
CiAgICAgICAgYnJlYWs7DQogICAgfQ0KICAgIGRlZmF1bHQ6DQogICAgICAgIGJyZWFrOw0KICAg
IH0NCiAgICByZXR1cm4gZmFsc2U7DQp9DQoNCnN0YXRpYyBfX2ZvcmNlaW5saW5lIHZvaWQgcHV0
RGlyZWN0V2l0aFJlaWZ5KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlKiogcmVzdWx0ID0gbnVsbHB0cikN
CnsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIGlmIChiYXNl
T2JqZWN0LT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsNCiAgICAgICAganNDYXN0PEpTRnVu
Y3Rpb24qPihiYXNlT2JqZWN0KS0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUpOw0KICAgICAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRp
b24oKSkpIHJldHVybiB2b2lkKCk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICB9DQogICAgaWYgKHJl
c3VsdCkNCiAgICAgICAgKnJlc3VsdCA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7DQogICAg
c2NvcGUucmVsZWFzZSgpOw0KICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7DQp9DQoNCnN0YXRpYyBfX2ZvcmNlaW5saW5lIHZvaWQgcHV0RGly
ZWN0QWNjZXNzb3JXaXRoUmVpZnkoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogYmFzZU9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0dGVy
U2V0dGVyKiBhY2Nlc3NvciwgdW5zaWduZWQgYXR0cmlidXRlKQ0Kew0KICAgIGF1dG8gc2NvcGUg
PSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQogICAgaWYgKGJhc2VPYmplY3QtPmluaGVyaXRzPEpT
RnVuY3Rpb24+KHZtKSkgew0KICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KGJhc2VPYmplY3Qp
LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7DQogICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIHZvaWQo
KTsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIH0NCiAgICBzY29wZS5yZWxlYXNlKCk7DQogICAgYmFz
ZU9iamVjdC0+cHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGFj
Y2Vzc29yLCBhdHRyaWJ1dGUpOw0KfQ0KDQppbmxpbmUgSlNBcnJheSogYWxsb2NhdGVOZXdBcnJh
eUJ1ZmZlcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogaW1tdXRhYmxlQnV0dGVyZmx5KQ0Kew0KICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpOw0KICAgIFN0cnVjdHVyZSogb3JpZ2luYWxT
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGUoaW1tdXRhYmxlQnV0dGVyZmx5LT5pbmRleGluZ01vZGUoKSk7DQogICAgKCh2b2lkKTAp
Ow0KICAgICgodm9pZCkwKTsNCiAgICAoKHZvaWQpMCk7DQoNCiAgICBKU0FycmF5KiByZXN1bHQg
PSBKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxscHRyLCBvcmlnaW5hbFN0cnVj
dHVyZSwgaW1tdXRhYmxlQnV0dGVyZmx5LT50b0J1dHRlcmZseSgpKTsNCiAgICANCiAgICBpZiAo
KG9yaWdpbmFsU3RydWN0dXJlICE9IHN0cnVjdHVyZSkpIHsNCiAgICAgICAgKCh2b2lkKTApOw0K
ICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAgcmVzdWx0LT5zd2l0Y2hUb1Nsb3dQdXRBcnJh
eVN0b3JhZ2Uodm0pOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCn0gDQoN
CmNsYXNzIENhbGxGcmFtZTsNCnN0cnVjdCBJbnN0cnVjdGlvbjsNCg0KDQogICAgDQoNCg0KICAg
IA0KDQoNCiAgICANCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfY2Fs
bF9hcml0eUNoZWNrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMp
IDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfY29uc3RydWN0X2Fy
aXR5Q2hlY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0K
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9jcmVhdGVfZGlyZWN0X2Fy
Z3VtZW50cyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2NyZWF0ZV9zY29wZWRfYXJn
dW1lbnRzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1
bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzX2J1
dHRlcmZseShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2NyZWF0ZV90aGlzKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfZW50ZXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNs
b3dfcGF0aF9nZXRfY2FsbGVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfdG9fdGhp
cyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX3Rocm93X3Rkel9lcnJvcihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2NoZWNrX3RkeihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAg
c2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9y
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfbm90KENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
ICBzbG93X3BhdGhfZXEoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBw
YykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9uZXEoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9zdHJpY3RlcShDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAg
c2xvd19wYXRoX25zdHJpY3RlcShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2xlc3Mo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9sZXNzZXEoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgIHNsb3dfcGF0aF9ncmVhdGVyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfZ3Jl
YXRlcmVxKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfaW5jKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlICBzbG93X3BhdGhfZGVjKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfdG9f
bnVtYmVyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfdG9fbnVtZXJpYyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX3RvX3N0cmluZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAg
c2xvd19wYXRoX3RvX29iamVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX25lZ2F0
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2FkZChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSAgc2xvd19wYXRoX211bChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX3N1YihDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNs
b3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2RpdihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xv
d19wYXRoX21vZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7
DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX3BvdyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSAgc2xvd19wYXRoX2xzaGlmdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19w
YXRoX3JzaGlmdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7
DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX3Vyc2hpZnQoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93
UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF91bnNpZ25lZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAg
c2xvd19wYXRoX2JpdG5vdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24q
IHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2JpdGFuZChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2JpdG9yKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
ICBzbG93X3BhdGhfYml0eG9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfdHlwZW9m
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfaXNfb2JqZWN0KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlICBzbG93X3BhdGhfaXNfb2JqZWN0X29yX251bGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
IHNsb3dfcGF0aF9pc19mdW5jdGlvbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2lz
X2NvbnN0cnVjdG9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMp
IDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfaW5fYnlfaWQoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9pbl9ieV92YWwoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgIHNsb3dfcGF0aF9kZWxfYnlfdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhf
c3RyY2F0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfdG9fcHJpbWl0aXZlKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfdG9fcHJvcGVydHlfa2V5KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlICBzbG93X3BhdGhfZ2V0X2VudW1lcmFibGVfbGVuZ3RoKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlICBzbG93X3BhdGhfaGFzX2dlbmVyaWNfcHJvcGVydHkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
IHNsb3dfcGF0aF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBj
b25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBz
bG93X3BhdGhfaGFzX293bl9zdHJ1Y3R1cmVfcHJvcGVydHkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
IHNsb3dfcGF0aF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNs
b3dfcGF0aF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19w
YXRoX2dldF9kaXJlY3RfcG5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX2VudW1l
cmF0b3Jfc3RydWN0dXJlX3BuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfZW51
bWVyYXRvcl9nZW5lcmljX3BuYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfdG9f
aW5kZXhfc3RyaW5nKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMp
IDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfcHJvZmlsZV90eXBl
X2NsZWFyX2xvZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7
DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgc2xvd19wYXRoX3VucmVhY2hhYmxlKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgIHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
ICBzbG93X3BhdGhfaXNfdmFyX3Njb3BlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhf
cmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgIHNsb3dfcGF0aF9jcmVhdGVfcHJvbWlzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAg
c2xvd19wYXRoX2NyZWF0ZV9nZW5lcmF0b3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0
aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhf
Y3JlYXRlX3Jlc3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykg
Ow0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0
aF90aGlzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3Ro
aXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfZ2V0X3Byb3RvdHlwZV9vZihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSAgc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgIHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAg
c2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93
X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93
X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhf
bmV3X3Byb21pc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykg
Ow0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlICBzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSAgc2xvd19wYXRoX3NwcmVhZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjKSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYykgOw0KZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIGl0ZXJhdG9yX29w
ZW5fdHJ5X2Zhc3Rfd2lkZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlv
biogcGMpIDsNCmV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBpdGVyYXRvcl9vcGVuX3Ry
eV9mYXN0X3dpZGUzMihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
KSA7DQpleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSAgaXRlcmF0b3JfbmV4dF90cnlfZmFz
dF9uYXJyb3coQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYykgOw0K
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lk
ZTE2KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpIDsNCmV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlICBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMihD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjKSA7DQoNCnVzaW5nIFNs
b3dQYXRoRnVuY3Rpb24gPSBTbG93UGF0aFJldHVyblR5cGUoICopKENhbGxGcmFtZSosIGNvbnN0
IEluc3RydWN0aW9uKik7DQoNCn0gDQojbGluZSA0MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0
XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVERpc2Fzc2Vt
Ymxlci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3Mg
Q29kZUJsb2NrOw0KY2xhc3MgTGlua0J1ZmZlcjsNCg0KbmFtZXNwYWNlIFByb2ZpbGVyIHsNCmNs
YXNzIENvbXBpbGF0aW9uOw0KfQ0KDQpjbGFzcyBKSVREaXNhc3NlbWJsZXIgew0KICAgIHB1Ymxp
Yzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lk
KiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3Bl
cmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsg
fSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2
b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxs
b2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0
RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBs
b2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0
TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgSklURGlzYXNzZW1ibGVyKENv
ZGVCbG9jayopOw0KICAgIH5KSVREaXNhc3NlbWJsZXIoKTsNCiAgICANCiAgICB2b2lkIHNldFN0
YXJ0T2ZDb2RlKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbCkgeyBtX3N0YXJ0T2ZDb2RlID0g
bGFiZWw7IH0NCiAgICB2b2lkIHNldEZvckJ5dGVjb2RlTWFpblBhdGgodW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxhYmVsKQ0KICAgIHsNCiAgICAgICAgbV9s
YWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRoW2J5dGVjb2RlSW5kZXhdID0gbGFiZWw7DQog
ICAgfQ0KICAgIHZvaWQgc2V0Rm9yQnl0ZWNvZGVTbG93UGF0aCh1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWwpDQogICAgew0KICAgICAgICBtX2xhYmVs
Rm9yQnl0ZWNvZGVJbmRleEluU2xvd1BhdGhbYnl0ZWNvZGVJbmRleF0gPSBsYWJlbDsNCiAgICB9
DQogICAgdm9pZCBzZXRFbmRPZlNsb3dQYXRoKE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJlbCkg
eyBtX2VuZE9mU2xvd1BhdGggPSBsYWJlbDsgfQ0KICAgIHZvaWQgc2V0RW5kT2ZDb2RlKE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBsYWJlbCkgeyBtX2VuZE9mQ29kZSA9IGxhYmVsOyB9DQogICAgDQog
ICAgdm9pZCBkdW1wKExpbmtCdWZmZXImKTsNCiAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBM
aW5rQnVmZmVyJik7DQogICAgdm9pZCByZXBvcnRUb1Byb2ZpbGVyKFByb2ZpbGVyOjpDb21waWxh
dGlvbiosIExpbmtCdWZmZXImKTsNCg0KcHJpdmF0ZToNCiAgICB2b2lkIGR1bXBIZWFkZXIoUHJp
bnRTdHJlYW0mLCBMaW5rQnVmZmVyJik7DQogICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGZpcnN0
U2xvd0xhYmVsKCk7DQogICAgDQogICAgc3RydWN0IER1bXBlZE9wIHsNCiAgICAgICAgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4Ow0KICAgICAgICBDU3RyaW5nIGRpc2Fzc2VtYmx5Ow0KICAg
IH07DQogICAgVmVjdG9yPER1bXBlZE9wPiBkdW1wVmVjdG9yRm9ySW5zdHJ1Y3Rpb25zKExpbmtC
dWZmZXImLCBjb25zdCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+
JiBsYWJlbHMsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7DQogICAgICAgIA0KICAg
IHZvaWQgZHVtcEZvckluc3RydWN0aW9ucyhQcmludFN0cmVhbSYsIExpbmtCdWZmZXImLCBjb25z
dCBjaGFyKiBwcmVmaXgsIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+JiBsYWJlbHMsIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBlbmRMYWJlbCk7DQogICAgdm9pZCByZXBvcnRJbnN0cnVjdGlv
bnMoUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiwgTGlua0J1ZmZlciYsIGNvbnN0IGNoYXIqIHByZWZp
eCwgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4mIGxhYmVscywgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIGVuZExhYmVsKTsNCiAgICANCiAgICB2b2lkIGR1bXBEaXNhc3NlbWJseShQcmludFN0
cmVhbSYsIExpbmtCdWZmZXImLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZnJvbSwgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIHRvKTsNCiAgICANCiAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOw0KICAg
IE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0T2ZDb2RlOw0KICAgIFZlY3RvcjxNYWNyb0Fz
c2VtYmxlcjo6TGFiZWw+IG1fbGFiZWxGb3JCeXRlY29kZUluZGV4SW5NYWluUGF0aDsNCiAgICBW
ZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiBtX2xhYmVsRm9yQnl0ZWNvZGVJbmRleEluU2xv
d1BhdGg7DQogICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZW5kT2ZTbG93UGF0aDsNCiAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9lbmRPZkNvZGU7DQp9Ow0KDQp9IA0KDQojbGluZSA5MiAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJ
VERpc2Fzc2VtYmxlci5oIg0KI2xpbmUgNDQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRc
XHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFB1dEJ5VmFsRmxhZ3Mu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoj
cHJhZ21hIG9uY2UNCg0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmVudW0gY2xhc3MgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCA6IHVpbnQ4X3Qgew0KICAgIE5vbmUsDQogICAgUHV0LA0KICAgIENy
ZWF0ZSwNCn07DQoNCmNsYXNzIFB1dEJ5VmFsRmxhZ3Mgew0KcHVibGljOg0KICAgIGNvbnN0ZXhw
ciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpDQogICAgew0K
ICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhmYWxzZSwgZWNtYU1vZGUpOw0KICAgIH0NCg0K
ICAgIA0KICAgIA0KICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJl
Y3QoRUNNQU1vZGUgZWNtYU1vZGUpDQogICAgew0KICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFn
cyh0cnVlLCBlY21hTW9kZSk7DQogICAgfQ0KDQogICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZh
bEZsYWdzIGNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkNCiAgICB7
DQogICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNy
ZWF0ZSwgZWNtYU1vZGUpOw0KICAgIH0NCg0KICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxG
bGFncyBjcmVhdGVQdXRQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpDQogICAgew0KICAg
ICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVj
bWFNb2RlKTsNCiAgICB9DQoNCiAgICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9p
c0RpcmVjdDsgfQ0KICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21h
TW9kZTsgfQ0KICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQ0KICAgIGJvb2wg
aXNQcml2YXRlRmllbGRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsgfQ0KICAgIGJvb2wgaXNQcml2
YXRlRmllbGRQdXQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0g
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0OyB9DQogICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFk
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpDcmVhdGU7IH0NCg0KcHJpdmF0ZToNCg0KICAgIGNvbnN0ZXhwciBQdXRC
eVZhbEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQ0KICAgICAgICA6IG1f
aXNEaXJlY3QoaXNEaXJlY3QpDQogICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpDQogICAgICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkNCiAgICB7DQogICAgfQ0KDQogICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFNb2RlKQ0KICAgICAgICA6IG1faXNE
aXJlY3QodHJ1ZSkNCiAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQ0K
ICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpDQogICAgew0KICAgIH0NCg0KICAgIGJvb2wg
bV9pc0RpcmVjdDsNCiAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDsNCiAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOw0KfTsNCg0KfSANCg0KbmFtZXNwYWNl
IFdURiB7DQoNCmNsYXNzIFByaW50U3RyZWFtOw0KDQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOw0KDQp9IA0KI2xpbmUgMzQgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcUHV0S2luZC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCmVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRl
RmllbGRDcmVhdGUsIERpcmVjdFByaXZhdGVGaWVsZFB1dCB9Ow0KDQp9IA0KI2xpbmUgMzUgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBDYWNo
ZWFibGVJZGVudGlmaWVyOw0KY2xhc3MgQ2FsbFNpdGVJbmRleDsNCmNsYXNzIENvZGVCbG9jazsN
CmNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOw0KDQplbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4
X3Q7DQoNCmNsYXNzIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsNCnByb3RlY3RlZDoNCiAgICBK
SVRJbmxpbmVDYWNoZUdlbmVyYXRvcigpIHsgfQ0KICAgIEpJVElubGluZUNhY2hlR2VuZXJhdG9y
KA0KICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NU
eXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyk7DQogICAgDQpwdWJsaWM6DQog
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zdHViSW5m
bzsgfQ0KDQogICAgdm9pZCByZXBvcnRTbG93UGF0aENhbGwoTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IHNsb3dQYXRoQmVnaW4sIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwpDQogICAgew0KICAgICAg
ICBtX3Nsb3dQYXRoQmVnaW4gPSBzbG93UGF0aEJlZ2luOw0KICAgICAgICBtX3Nsb3dQYXRoQ2Fs
bCA9IGNhbGw7DQogICAgfQ0KICAgIA0KICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzbG93UGF0
aEJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zbG93UGF0aEJlZ2luOyB9DQoNCiAgICB2b2lkIGZp
bmFsaXplKA0KICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZm
ZXImIHNsb3dQYXRoTGlua0J1ZmZlciwNCiAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+IHN0YXJ0KTsNCiAgICANCnByb3RlY3RlZDoNCiAgICBDb2RlQmxvY2sq
IG1fY29kZUJsb2NrOw0KICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBtX3N0dWJJbmZvOw0KDQogICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fZG9uZTsNCiAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bV9zbG93UGF0aEJlZ2luOw0KICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIG1fc2xvd1BhdGhDYWxs
Ow0KfTsNCg0KY2xhc3MgSklUQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdl
bmVyYXRvciB7DQpwcm90ZWN0ZWQ6DQogICAgSklUQnlJZEdlbmVyYXRvcigpIHsgfQ0KDQogICAg
SklUQnlJZEdlbmVyYXRvcigNCiAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNp
dGVJbmRleCwgQWNjZXNzVHlwZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsDQog
ICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKTsNCg0KcHVibGljOg0K
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0DQogICAgew0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcDsNCiAgICB9DQoN
CiAgICB2b2lkIGZpbmFsaXplKA0KICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZm
ZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7DQogICAgDQpwcm90ZWN0ZWQ6DQog
ICAgDQogICAgdm9pZCBnZW5lcmF0ZUZhc3RDb21tb24oTWFjcm9Bc3NlbWJsZXImLCBzaXplX3Qg
c2l6ZSk7DQogICAgDQogICAgSlNWYWx1ZVJlZ3MgbV9iYXNlOw0KICAgIEpTVmFsdWVSZWdzIG1f
dmFsdWU7DQoNCiAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFydDsNCiAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBtX3Nsb3dQYXRoSnVtcDsNCn07DQoNCmNsYXNzIEpJVEdldEJ5SWRHZW5l
cmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7DQpwdWJsaWM6DQogICAgSklUR2V0QnlJ
ZEdlbmVyYXRvcigpIHsgfQ0KDQogICAgSklUR2V0QnlJZEdlbmVyYXRvcigNCiAgICAgICAgQ29k
ZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVz
ZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsDQogICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBBY2Nlc3NUeXBlKTsNCiAgICANCiAgICB2b2lkIGdlbmVy
YXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsNCg0KcHJpdmF0ZToNCiAgICBib29sIG1faXNM
ZW5ndGhBY2Nlc3M7DQp9Ow0KDQpjbGFzcyBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IgOiBw
dWJsaWMgSklUQnlJZEdlbmVyYXRvciB7DQpwdWJsaWM6DQogICAgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yKCkgeyB9DQoNCiAgICBKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3IoDQogICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLA0KICAgICAgICBKU1ZhbHVl
UmVncyB2YWx1ZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdGhpc1JlZ3MpOw0KDQog
ICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7DQp9Ow0KDQpjbGFzcyBK
SVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Igew0KcHVibGljOg0K
ICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQ0KICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6
OnN0cmljdCgpKQ0KICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lKQ0KICAgIHsgfQ0KDQogICAgSklUUHV0QnlJZEdlbmVyYXRvcigN
CiAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdz
IGJhc2UsDQogICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1v
ZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7DQogICAg
DQogICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7DQogICAgDQogICAg
Vl9KSVRPcGVyYXRpb25fR1NzaUpKQyBzbG93UGF0aEZ1bmN0aW9uKCk7DQoNCnByaXZhdGU6DQog
ICAgRUNNQU1vZGUgbV9lY21hTW9kZTsNCiAgICBQdXRLaW5kIG1fcHV0S2luZDsNCiAgICBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsNCn07DQoNCmNsYXNz
IEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsN
CiAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7DQpwdWJsaWM6DQogICAg
SklURGVsQnlWYWxHZW5lcmF0b3IoKSB7IH0NCg0KICAgIEpJVERlbEJ5VmFsR2VuZXJhdG9yKA0K
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywNCiAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1
ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOw0KDQog
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QNCiAgICB7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsNCiAg
ICB9DQoNCiAgICB2b2lkIGZpbmFsaXplKA0KICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExp
bmtCdWZmZXIsIExpbmtCdWZmZXImIHNsb3dQYXRoTGlua0J1ZmZlcik7DQoNCiAgICB2b2lkIGdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsNCg0KcHJpdmF0ZToNCiAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgbV9zdGFydDsNCiAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVt
cCBtX3Nsb3dQYXRoSnVtcDsNCn07DQoNCmNsYXNzIEpJVERlbEJ5SWRHZW5lcmF0b3IgOiBwdWJs
aWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Igew0KICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVD
YWNoZUdlbmVyYXRvcjsNCnB1YmxpYzoNCiAgICBKSVREZWxCeUlkR2VuZXJhdG9yKCkgeyB9DQoN
CiAgICBKSVREZWxCeUlkR2VuZXJhdG9yKA0KICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVh
YmxlSWRlbnRpZmllciwNCiAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgc2NyYXRjaCk7DQoNCiAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0
aEp1bXAoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4g
bV9zbG93UGF0aEp1bXAubV9qdW1wOw0KICAgIH0NCg0KICAgIHZvaWQgZmluYWxpemUoDQogICAg
ICAgIExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhM
aW5rQnVmZmVyKTsNCg0KICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYp
Ow0KDQpwcml2YXRlOg0KICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBtX3N0YXJ0Ow0KICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG1fc2xvd1BhdGhKdW1wOw0KfTsNCg0KY2xhc3Mg
SklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Igew0KcHVibGljOg0K
ICAgIEpJVEluQnlJZEdlbmVyYXRvcigpIHsgfQ0KDQogICAgSklUSW5CeUlkR2VuZXJhdG9yKA0K
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwNCiAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpOw0KDQogICAgdm9pZCBnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7DQp9Ow0KDQpjbGFzcyBKSVRJbnN0YW5jZU9mR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsNCnB1YmxpYzoNCiAgICBKSVRJ
bnN0YW5jZU9mR2VuZXJhdG9yKCkgeyB9DQogICAgDQogICAgSklUSW5zdGFuY2VPZkdlbmVyYXRv
cigNCiAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQsDQogICAgICAgIEdQUlJl
ZyB2YWx1ZSwgR1BSUmVnIHByb3RvdHlwZSwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRj
aDIsDQogICAgICAgIGJvb2wgcHJvdG90eXBlSXNLbm93bk9iamVjdCA9IGZhbHNlKTsNCiAgICAN
CiAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsNCg0KICAgIHZvaWQg
ZmluYWxpemUoTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93
UGF0aExpbmtCdWZmZXIpOw0KDQpwcml2YXRlOg0KICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFi
bGVKdW1wIG1fanVtcDsNCn07DQoNCmNsYXNzIEpJVEdldEJ5VmFsR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsNCiAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3I7DQpwdWJsaWM6DQogICAgSklUR2V0QnlWYWxHZW5lcmF0b3IoKSB7IH0NCg0K
ICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yKA0KICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2lu
LCBDYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVycywNCiAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpT
VmFsdWVSZWdzIHJlc3VsdCk7DQoNCiAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1
bXAoKSBjb25zdA0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gbV9z
bG93UGF0aEp1bXAubV9qdW1wOw0KICAgIH0NCg0KICAgIHZvaWQgZmluYWxpemUoDQogICAgICAg
IExpbmtCdWZmZXImIGZhc3RQYXRoTGlua0J1ZmZlciwgTGlua0J1ZmZlciYgc2xvd1BhdGhMaW5r
QnVmZmVyKTsNCiAgICANCiAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXIm
KTsNCg0KcHJpdmF0ZToNCiAgICBKU1ZhbHVlUmVncyBtX2Jhc2U7DQogICAgSlNWYWx1ZVJlZ3Mg
bV9yZXN1bHQ7DQogICAgSlNWYWx1ZVJlZ3MgbV87DQoNCiAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbV9zdGFydDsNCiAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRo
SnVtcDsNCn07DQoNCnRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+DQp2b2lkIGZpbmFsaXpl
SW5saW5lQ2FjaGVzKFZlY3RvclR5cGUmIHZlY3RvciwgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExp
bmtCdWZmZXImIHNsb3dQYXRoKQ0Kew0KICAgIGZvciAoYXV0byYgZW50cnkgOiB2ZWN0b3IpDQog
ICAgICAgIGVudHJ5LmZpbmFsaXplKGZhc3RQYXRoLCBzbG93UGF0aCk7DQp9DQoNCnRlbXBsYXRl
PHR5cGVuYW1lIFZlY3RvclR5cGU+DQp2b2lkIGZpbmFsaXplSW5saW5lQ2FjaGVzKFZlY3RvclR5
cGUmIHZlY3RvciwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikNCnsNCiAgICBmaW5hbGl6ZUlubGlu
ZUNhY2hlcyh2ZWN0b3IsIGxpbmtCdWZmZXIsIGxpbmtCdWZmZXIpOw0KfQ0KDQp9IA0KDQojbGlu
ZSAyNzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aml0XFxKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIg0KI2xpbmUgNDUgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxK
SVRNYXRoSUMuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxBcml0aFByb2ZpbGUuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXHBhcnNlclxcUmVzdWx0VHlwZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KbmFtZXNwYWNlIEpT
QyB7DQoNCiAgICANCiAgICANCiAgICBzdHJ1Y3QgUmVzdWx0VHlwZSB7DQogICAgcHJpdmF0ZToN
CiAgICAgICAgZnJpZW5kIHN0cnVjdCBPcGVyYW5kVHlwZXM7DQoNCiAgICAgICAgdXNpbmcgVHlw
ZSA9IHVpbnQ4X3Q7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZSBUeXBlSW50MzIgICAg
ICAgPSAweDEgPDwgMDsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBUeXBlIFR5cGVNYXliZU51
bWJlciA9IDB4MSA8PCAxOw0KICAgICAgICBzdGF0aWMgY29uc3RleHByIFR5cGUgVHlwZU1heWJl
U3RyaW5nID0gMHgxIDw8IDI7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZSBUeXBlTWF5
YmVCaWdJbnQgPSAweDEgPDwgMzsNCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBUeXBlIFR5cGVN
YXliZU51bGwgICA9IDB4MSA8PCA0Ow0KICAgICAgICBzdGF0aWMgY29uc3RleHByIFR5cGUgVHlw
ZU1heWJlQm9vbCAgID0gMHgxIDw8IDU7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZSBU
eXBlTWF5YmVPdGhlciAgPSAweDEgPDwgNjsNCg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIFR5
cGUgVHlwZUJpdHMgPSBUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcgfCBUeXBlTWF5
YmVCaWdJbnQgfCBUeXBlTWF5YmVOdWxsIHwgVHlwZU1heWJlQm9vbCB8IFR5cGVNYXliZU90aGVy
Ow0KDQogICAgcHVibGljOg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBudW1CaXRzTmVl
ZGVkID0gNzsNCiAgICAgICAgc3RhdGljX2Fzc2VydCgoVHlwZUJpdHMgJiAoKDEgPDwgbnVtQml0
c05lZWRlZCkgLSAxKSkgPT0gVHlwZUJpdHMsICJUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVj
dG5lc3MuIik7DQoNCiAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IFJlc3VsdFR5cGUoKQ0KICAg
ICAgICAgICAgOiBSZXN1bHRUeXBlKHVua25vd25UeXBlKCkpDQogICAgICAgIHsNCiAgICAgICAg
fQ0KICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgUmVzdWx0VHlwZShUeXBlIHR5cGUpDQogICAg
ICAgICAgICA6IG1fYml0cyh0eXBlKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICBj
b25zdGV4cHIgYm9vbCBpc0ludDMyKCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0
dXJuIG1fYml0cyAmIFR5cGVJbnQzMjsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0ZXhwciBi
b29sIGRlZmluaXRlbHlJc051bWJlcigpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJl
dHVybiAobV9iaXRzICYgVHlwZUJpdHMpID09IFR5cGVNYXliZU51bWJlcjsNCiAgICAgICAgfQ0K
ICAgICAgICANCiAgICAgICAgY29uc3RleHByIGJvb2wgZGVmaW5pdGVseUlzU3RyaW5nKCkgY29u
c3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBUeXBlQml0cykgPT0g
VHlwZU1heWJlU3RyaW5nOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3RleHByIGJvb2wgZGVm
aW5pdGVseUlzQm9vbGVhbigpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAo
bV9iaXRzICYgVHlwZUJpdHMpID09IFR5cGVNYXliZUJvb2w7DQogICAgICAgIH0NCg0KICAgICAg
ICBjb25zdGV4cHIgYm9vbCBkZWZpbml0ZWx5SXNCaWdJbnQoKSBjb25zdA0KICAgICAgICB7DQog
ICAgICAgICAgICByZXR1cm4gKG1fYml0cyAmIFR5cGVCaXRzKSA9PSBUeXBlTWF5YmVCaWdJbnQ7
DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdGV4cHIgYm9vbCBkZWZpbml0ZWx5SXNOdWxsKCkg
Y29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChtX2JpdHMgJiBUeXBlQml0cykg
PT0gVHlwZU1heWJlTnVsbDsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0ZXhwciBib29sIG1p
Z2h0QmVVbmRlZmluZWRPck51bGwoKSBjb25zdA0KICAgICAgICB7DQogICAgICAgICAgICByZXR1
cm4gbV9iaXRzICYgKFR5cGVNYXliZU51bGwgfCBUeXBlTWF5YmVPdGhlcik7DQogICAgICAgIH0N
Cg0KICAgICAgICBjb25zdGV4cHIgYm9vbCBtaWdodEJlTnVtYmVyKCkgY29uc3QNCiAgICAgICAg
ew0KICAgICAgICAgICAgcmV0dXJuIG1fYml0cyAmIFR5cGVNYXliZU51bWJlcjsNCiAgICAgICAg
fQ0KDQogICAgICAgIGNvbnN0ZXhwciBib29sIGlzTm90TnVtYmVyKCkgY29uc3QNCiAgICAgICAg
ew0KICAgICAgICAgICAgcmV0dXJuICFtaWdodEJlTnVtYmVyKCk7DQogICAgICAgIH0NCiAgICAg
ICAgDQogICAgICAgIGNvbnN0ZXhwciBib29sIG1pZ2h0QmVCaWdJbnQoKSBjb25zdA0KICAgICAg
ICB7DQogICAgICAgICAgICByZXR1cm4gbV9iaXRzICYgVHlwZU1heWJlQmlnSW50Ow0KICAgICAg
ICB9DQoNCiAgICAgICAgY29uc3RleHByIGJvb2wgaXNOb3RCaWdJbnQoKSBjb25zdA0KICAgICAg
ICB7DQogICAgICAgICAgICByZXR1cm4gIW1pZ2h0QmVCaWdJbnQoKTsNCiAgICAgICAgfQ0KICAg
ICAgICANCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBSZXN1bHRUeXBlIG51bGxUeXBlKCkNCiAg
ICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1heWJlTnVsbCk7DQog
ICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgUmVzdWx0VHlwZSBi
b29sZWFuVHlwZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5
cGVNYXliZUJvb2wpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIFJlc3VsdFR5cGUgbnVtYmVyVHlwZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVy
biBSZXN1bHRUeXBlKFR5cGVNYXliZU51bWJlcik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgUmVzdWx0VHlwZSBudW1iZXJUeXBlSXNJbnQzMigpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVJbnQzMiB8IFR5cGVNYXli
ZU51bWJlcik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
UmVzdWx0VHlwZSBzdHJpbmdPck51bWJlclR5cGUoKQ0KICAgICAgICB7DQogICAgICAgICAgICBy
ZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcpOw0KICAg
ICAgICB9DQogICAgICAgIA0KICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlc3VsdFR5cGUgYWRk
UmVzdWx0VHlwZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5
cGVNYXliZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyB8IFR5cGVNYXliZUJpZ0ludCk7DQogICAg
ICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgUmVzdWx0VHlwZSBzdHJp
bmdUeXBlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1h
eWJlU3RyaW5nKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZXN1bHRUeXBlIGJpZ0ludFR5cGUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4g
UmVzdWx0VHlwZShUeXBlTWF5YmVCaWdJbnQpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFJlc3VsdFR5cGUgYmlnSW50T3JJbnQzMlR5cGUoKQ0KICAgICAg
ICB7DQogICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlTWF5YmVCaWdJbnQgfCBUeXBl
SW50MzIgfCBUeXBlTWF5YmVOdW1iZXIpOw0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBSZXN1bHRUeXBlIGJpZ0ludE9yTnVtYmVyVHlwZSgpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXliZUJpZ0ludCB8IFR5cGVNYXliZU51bWJl
cik7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlc3VsdFR5cGUgdW5r
bm93blR5cGUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBl
Qml0cyk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgUmVz
dWx0VHlwZSBmb3JBZGQoUmVzdWx0VHlwZSBvcDEsIFJlc3VsdFR5cGUgb3AyKQ0KICAgICAgICB7
DQogICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJc051bWJlcigpICYmIG9wMi5kZWZpbml0
ZWx5SXNOdW1iZXIoKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyVHlwZSgpOw0KICAg
ICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNTdHJpbmcoKSB8fCBvcDIuZGVmaW5pdGVseUlz
U3RyaW5nKCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1R5cGUoKTsNCiAgICAgICAg
ICAgIGlmIChvcDEuZGVmaW5pdGVseUlzQmlnSW50KCkgJiYgb3AyLmRlZmluaXRlbHlJc0JpZ0lu
dCgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBiaWdJbnRUeXBlKCk7DQogICAgICAgICAgICBy
ZXR1cm4gYWRkUmVzdWx0VHlwZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBSZXN1bHRUeXBlIGZvck5vbkFkZEFyaXRoKFJlc3VsdFR5cGUgb3AxLCBSZXN1bHRUeXBl
IG9wMikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNOdW1iZXIo
KSAmJiBvcDIuZGVmaW5pdGVseUlzTnVtYmVyKCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIG51
bWJlclR5cGUoKTsNCiAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVseUlzQmlnSW50KCkgJiYg
b3AyLmRlZmluaXRlbHlJc0JpZ0ludCgpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBiaWdJbnRU
eXBlKCk7DQogICAgICAgICAgICByZXR1cm4gYmlnSW50T3JOdW1iZXJUeXBlKCk7DQogICAgICAg
IH0NCg0KICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlc3VsdFR5cGUgZm9yVW5hcnlBcml0aChS
ZXN1bHRUeXBlIG9wKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3AuZGVmaW5pdGVseUlz
TnVtYmVyKCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGUoKTsNCiAgICAgICAg
ICAgIGlmIChvcC5kZWZpbml0ZWx5SXNCaWdJbnQoKSkNCiAgICAgICAgICAgICAgICByZXR1cm4g
YmlnSW50VHlwZSgpOw0KICAgICAgICAgICAgcmV0dXJuIGJpZ0ludE9yTnVtYmVyVHlwZSgpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBzdGF0aWMgY29uc3RleHBy
IFJlc3VsdFR5cGUgZm9yTG9naWNhbE9wKFJlc3VsdFR5cGUgb3AxLCBSZXN1bHRUeXBlIG9wMikN
CiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNCb29sZWFuKCkgJiYg
b3AyLmRlZmluaXRlbHlJc0Jvb2xlYW4oKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gYm9vbGVh
blR5cGUoKTsNCiAgICAgICAgICAgIGlmIChvcDEuZGVmaW5pdGVseUlzTnVtYmVyKCkgJiYgb3Ay
LmRlZmluaXRlbHlJc051bWJlcigpKQ0KICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJUeXBl
KCk7DQogICAgICAgICAgICBpZiAob3AxLmRlZmluaXRlbHlJc1N0cmluZygpICYmIG9wMi5kZWZp
bml0ZWx5SXNTdHJpbmcoKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nVHlwZSgpOw0K
ICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNCaWdJbnQoKSAmJiBvcDIuZGVmaW5pdGVs
eUlzQmlnSW50KCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGJpZ0ludFR5cGUoKTsNCiAgICAg
ICAgICAgIHJldHVybiB1bmtub3duVHlwZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBSZXN1bHRUeXBlIGZvckNvYWxlc2NlKFJlc3VsdFR5cGUgb3AxLCBSZXN1bHRU
eXBlIG9wMikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNOdWxs
KCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIG9wMjsNCiAgICAgICAgICAgIGlmICghb3AxLm1p
Z2h0QmVVbmRlZmluZWRPck51bGwoKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gb3AxOw0KICAg
ICAgICAgICAgcmV0dXJuIHVua25vd25UeXBlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBzdGF0
aWMgY29uc3RleHByIFJlc3VsdFR5cGUgZm9yQml0T3AoKQ0KICAgICAgICB7DQogICAgICAgICAg
ICByZXR1cm4gYmlnSW50T3JJbnQzMlR5cGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0
ZXhwciBUeXBlIGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0NCg0KICAgICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QNCiAgICAgICAgew0KICAgICAgICAgICAgDQog
ICAgICAgICAgICANCiAgICAgICAgICAgIG91dC5wcmludChiaXRzKCkpOw0KICAgICAgICB9DQoN
CiAgICBwcml2YXRlOg0KICAgICAgICBUeXBlIG1fYml0czsNCiAgICB9Ow0KICAgIA0KICAgIHN0
cnVjdCBPcGVyYW5kVHlwZXMNCiAgICB7DQogICAgICAgIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBl
IGZpcnN0ID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgUmVzdWx0VHlwZSBzZWNvbmQgPSBS
ZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKQ0KICAgICAgICB7DQogICAgICAgICAgICBtX2ZpcnN0
ID0gZmlyc3QubV9iaXRzOw0KICAgICAgICAgICAgbV9zZWNvbmQgPSBzZWNvbmQubV9iaXRzOw0K
ICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBSZXN1bHRUeXBlOjpUeXBlIG1fZmlyc3Q7DQog
ICAgICAgIFJlc3VsdFR5cGU6OlR5cGUgbV9zZWNvbmQ7DQoNCiAgICAgICAgUmVzdWx0VHlwZSBm
aXJzdCgpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKG1f
Zmlyc3QpOw0KICAgICAgICB9DQoNCiAgICAgICAgUmVzdWx0VHlwZSBzZWNvbmQoKSBjb25zdA0K
ICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShtX3NlY29uZCk7DQogICAg
ICAgIH0NCg0KICAgICAgICB1aW50MTZfdCBiaXRzKCkNCiAgICAgICAgew0KICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoT3BlcmFuZFR5cGVzKSA9PSBzaXplb2YodWludDE2X3QpKTsN
CiAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDE2X3Q+KCp0aGlzKTsNCiAgICAg
ICAgfQ0KDQogICAgICAgIHN0YXRpYyBPcGVyYW5kVHlwZXMgZnJvbUJpdHModWludDE2X3QgYml0
cykNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxPcGVyYW5kVHlw
ZXM+KGJpdHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0DQogICAgICAgIHsNCiAgICAgICAgICAgIG91dC5wcmludCgiT3BlcmFuZFR5cGVz
KCIsIGZpcnN0KCksICAiLCAiLCBzZWNvbmQoKSwgIikiKTsNCiAgICAgICAgfQ0KICAgIH07DQoN
Cn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxieXRlY29kZVxcQXJpdGhQcm9maWxlLmgiDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoN
CmNsYXNzIENDYWxsSGVscGVyczsNCg0Kc3RydWN0IE9ic2VydmVkVHlwZSB7DQogICAgY29uc3Rl
eHByIE9ic2VydmVkVHlwZSh1aW50OF90IGJpdHMgPSBUeXBlRW1wdHkpDQogICAgICAgIDogbV9i
aXRzKGJpdHMpDQogICAgeyB9DQoNCiAgICBjb25zdGV4cHIgYm9vbCBzYXdJbnQzMigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0cyAmIFR5cGVJbnQzMjsgfQ0KICAgIGNvbnN0ZXhwciBib29sIGlzT25s
eUludDMyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzID09IFR5cGVJbnQzMjsgfQ0KICAgIGNvbnN0
ZXhwciBib29sIHNhd051bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIFR5cGVOdW1iZXI7
IH0NCiAgICBjb25zdGV4cHIgYm9vbCBpc09ubHlOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgPT0gVHlwZU51bWJlcjsgfQ0KICAgIGNvbnN0ZXhwciBib29sIHNhd05vbk51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIFR5cGVOb25OdW1iZXI7IH0NCiAgICBjb25zdGV4cHIgYm9v
bCBpc09ubHlOb25OdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgPT0gVHlwZU5vbk51bWJl
cjsgfQ0KICAgIGNvbnN0ZXhwciBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9iaXRz
OyB9DQogICAgY29uc3RleHByIHVpbnQ4X3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsg
fQ0KDQogICAgY29uc3RleHByIE9ic2VydmVkVHlwZSB3aXRoSW50MzIoKSBjb25zdCB7IHJldHVy
biBPYnNlcnZlZFR5cGUobV9iaXRzIHwgVHlwZUludDMyKTsgfQ0KICAgIGNvbnN0ZXhwciBPYnNl
cnZlZFR5cGUgd2l0aE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZShtX2JpdHMg
fCBUeXBlTnVtYmVyKTsgfQ0KICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgd2l0aE5vbk51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZShtX2JpdHMgfCBUeXBlTm9uTnVtYmVyKTsg
fQ0KICAgIGNvbnN0ZXhwciBPYnNlcnZlZFR5cGUgd2l0aG91dE5vbk51bWJlcigpIGNvbnN0IHsg
cmV0dXJuIE9ic2VydmVkVHlwZShtX2JpdHMgJiB+VHlwZU5vbk51bWJlcik7IH0NCg0KICAgIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT2JzZXJ2ZWRUeXBlJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9iaXRzID09IG90aGVyLm1fYml0czsgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50OF90IFR5cGVFbXB0eSA9IDB4MDsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qg
VHlwZUludDMyID0gMHgxOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBUeXBlTnVtYmVy
ID0gMHgwMjsNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgVHlwZU5vbk51bWJlciA9IDB4
MDQ7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG51bUJpdHNOZWVkZWQgPSAzOw0K
DQpwcml2YXRlOg0KICAgIHVpbnQ4X3QgbV9iaXRzIHsgMCB9Ow0KfTsNCg0KY2xhc3MgT2JzZXJ2
ZWRSZXN1bHRzIHsNCnB1YmxpYzoNCiAgICBlbnVtIFRhZ3MgOiB1aW50OF90IHsNCiAgICAgICAg
Tm9uTmVnWmVyb0RvdWJsZSA9IDEgPDwgMCwNCiAgICAgICAgTmVnWmVyb0RvdWJsZSAgICA9IDEg
PDwgMSwNCiAgICAgICAgTm9uTnVtZXJpYyAgICAgICA9IDEgPDwgMiwNCiAgICAgICAgSW50MzJP
dmVyZmxvdyAgICA9IDEgPDwgMywNCiAgICAgICAgSW50NTJPdmVyZmxvdyAgICA9IDEgPDwgNCwN
CiAgICAgICAgSGVhcEJpZ0ludCAgICAgICA9IDEgPDwgNSwNCiAgICAgICAgQmlnSW50MzIgICAg
ICAgICA9IDEgPDwgNiwNCiAgICB9Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbnVt
Qml0c05lZWRlZCA9IDc7DQoNCiAgICBPYnNlcnZlZFJlc3VsdHMoKSA9IGRlZmF1bHQ7DQogICAg
ZXhwbGljaXQgT2JzZXJ2ZWRSZXN1bHRzKHVpbnQ4X3QgYml0cykNCiAgICAgICAgOiBtX2JpdHMo
Yml0cykNCiAgICB7IH0NCg0KICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgeyByZXR1cm4g
bV9iaXRzICYgKE5vbk5lZ1plcm9Eb3VibGUgfCBOZWdaZXJvRG91YmxlIHwgTm9uTnVtZXJpYyB8
IEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0NCiAgICBib29sIGRpZE9ic2VydmVEb3VibGUoKSB7
IHJldHVybiBtX2JpdHMgJiAoTm9uTmVnWmVyb0RvdWJsZSB8IE5lZ1plcm9Eb3VibGUpOyB9DQog
ICAgYm9vbCBkaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpIHsgcmV0dXJuIG1fYml0cyAmIE5v
bk5lZ1plcm9Eb3VibGU7IH0NCiAgICBib29sIGRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCkgeyBy
ZXR1cm4gbV9iaXRzICYgTmVnWmVyb0RvdWJsZTsgfQ0KICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk51
bWVyaWMoKSB7IHJldHVybiBtX2JpdHMgJiBOb25OdW1lcmljOyB9DQogICAgYm9vbCBkaWRPYnNl
cnZlQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgKEhlYXBCaWdJbnQgfCBCaWdJbnQzMik7IH0N
CiAgICBib29sIGRpZE9ic2VydmVIZWFwQmlnSW50KCkgeyByZXR1cm4gbV9iaXRzICYgSGVhcEJp
Z0ludDsgfQ0KICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludDMyKCkgeyByZXR1cm4gbV9iaXRzICYg
QmlnSW50MzI7IH0NCiAgICBib29sIGRpZE9ic2VydmVJbnQzMk92ZXJmbG93KCkgeyByZXR1cm4g
bV9iaXRzICYgSW50MzJPdmVyZmxvdzsgfQ0KICAgIGJvb2wgZGlkT2JzZXJ2ZUludDUyT3ZlcmZs
b3coKSB7IHJldHVybiBtX2JpdHMgJiBJbnQ1Mk92ZXJmbG93OyB9DQoNCnByaXZhdGU6DQogICAg
dWludDhfdCBtX2JpdHMgeyAwIH07DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgQml0ZmllbGRU
eXBlPg0KY2xhc3MgQXJpdGhQcm9maWxlIHsNCnB1YmxpYzoNCiAgICBPYnNlcnZlZFJlc3VsdHMg
b2JzZXJ2ZWRSZXN1bHRzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBPYnNlcnZlZFJl
c3VsdHMobV9iaXRzICYgKCgxIDw8IE9ic2VydmVkUmVzdWx0czo6bnVtQml0c05lZWRlZCkgLSAx
KSk7DQogICAgfQ0KICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbkludDMyKCkgY29uc3QgeyByZXR1cm4g
b2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2JzZXJ2ZU5vbkludDMyKCk7fQ0KICAgIGJvb2wgZGlkT2Jz
ZXJ2ZURvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVE
b3VibGUoKTsgfQ0KICAgIGJvb2wgZGlkT2JzZXJ2ZU5vbk5lZ1plcm9Eb3VibGUoKSBjb25zdCB7
IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlTm9uTmVnWmVyb0RvdWJsZSgpOyB9
DQogICAgYm9vbCBkaWRPYnNlcnZlTmVnWmVyb0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJuIG9ic2Vy
dmVkUmVzdWx0cygpLmRpZE9ic2VydmVOZWdaZXJvRG91YmxlKCk7IH0NCiAgICBib29sIGRpZE9i
c2VydmVOb25OdW1lcmljKCkgY29uc3QgeyByZXR1cm4gb2JzZXJ2ZWRSZXN1bHRzKCkuZGlkT2Jz
ZXJ2ZU5vbk51bWVyaWMoKTsgfQ0KICAgIGJvb2wgZGlkT2JzZXJ2ZUJpZ0ludCgpIGNvbnN0IHsg
cmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9ic2VydmVCaWdJbnQoKTsgfQ0KICAgIGJvb2wg
ZGlkT2JzZXJ2ZUhlYXBCaWdJbnQoKSBjb25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5k
aWRPYnNlcnZlSGVhcEJpZ0ludCgpOyB9DQogICAgYm9vbCBkaWRPYnNlcnZlQmlnSW50MzIoKSBj
b25zdCB7IHJldHVybiBvYnNlcnZlZFJlc3VsdHMoKS5kaWRPYnNlcnZlQmlnSW50MzIoKTsgfQ0K
ICAgIGJvb2wgZGlkT2JzZXJ2ZUludDMyT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBvYnNlcnZl
ZFJlc3VsdHMoKS5kaWRPYnNlcnZlSW50MzJPdmVyZmxvdygpOyB9DQogICAgYm9vbCBkaWRPYnNl
cnZlSW50NTJPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG9ic2VydmVkUmVzdWx0cygpLmRpZE9i
c2VydmVJbnQ1Mk92ZXJmbG93KCk7IH0NCg0KICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OZWdaZXJv
RG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlKTsgfQ0K
ICAgIHZvaWQgc2V0T2JzZXJ2ZWROZWdaZXJvRG91YmxlKCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1
bHRzOjpOZWdaZXJvRG91YmxlKTsgfQ0KICAgIHZvaWQgc2V0T2JzZXJ2ZWROb25OdW1lcmljKCkg
eyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmljKTsgfQ0KICAgIHZvaWQgc2V0T2Jz
ZXJ2ZWRIZWFwQmlnSW50KCkgeyBzZXRCaXQoT2JzZXJ2ZWRSZXN1bHRzOjpIZWFwQmlnSW50KTsg
fQ0KICAgIHZvaWQgc2V0T2JzZXJ2ZWRCaWdJbnQzMigpIHsgc2V0Qml0KE9ic2VydmVkUmVzdWx0
czo6QmlnSW50MzIpOyB9DQogICAgdm9pZCBzZXRPYnNlcnZlZEludDMyT3ZlcmZsb3coKSB7IHNl
dEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDMyT3ZlcmZsb3cpOyB9DQogICAgdm9pZCBzZXRPYnNl
cnZlZEludDUyT3ZlcmZsb3coKSB7IHNldEJpdChPYnNlcnZlZFJlc3VsdHM6OkludDUyT3ZlcmZs
b3cpOyB9DQoNCiAgICB2b2lkIG9ic2VydmVSZXN1bHQoSlNWYWx1ZSB2YWx1ZSkNCiAgICB7DQog
ICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpDQogICAgICAgICAgICByZXR1cm47DQogICAgICAg
IGlmICh2YWx1ZS5pc051bWJlcigpKSB7DQogICAgICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRS
ZXN1bHRzOjpJbnQzMk92ZXJmbG93IHwgT2JzZXJ2ZWRSZXN1bHRzOjpJbnQ1Mk92ZXJmbG93IHwg
T2JzZXJ2ZWRSZXN1bHRzOjpOb25OZWdaZXJvRG91YmxlIHwgT2JzZXJ2ZWRSZXN1bHRzOjpOZWda
ZXJvRG91YmxlOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIGlmICh2
YWx1ZS5pc0JpZ0ludDMyKCkpIHsNCiAgICAgICAgICAgIG1fYml0cyB8PSBPYnNlcnZlZFJlc3Vs
dHM6OkJpZ0ludDMyOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIGlm
ICh2YWx1ZSAmJiB2YWx1ZS5pc0hlYXBCaWdJbnQoKSkgew0KICAgICAgICAgICAgbV9iaXRzIHw9
IE9ic2VydmVkUmVzdWx0czo6SGVhcEJpZ0ludDsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAg
ICAgfQ0KICAgICAgICBtX2JpdHMgfD0gT2JzZXJ2ZWRSZXN1bHRzOjpOb25OdW1lcmljOw0KICAg
IH0NCg0KICAgIGNvbnN0IHZvaWQqIGFkZHJlc3NPZkJpdHMoKSBjb25zdCB7IHJldHVybiAmbV9i
aXRzOyB9DQoNCg0KICAgIA0KICAgIA0KICAgIHZvaWQgZW1pdE9ic2VydmVSZXN1bHQoQ0NhbGxI
ZWxwZXJzJiwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSLCBUYWdSZWdpc3RlcnNNb2RlID0g
SGF2ZVRhZ1JlZ2lzdGVycyk7DQoNCiAgICANCiAgICBib29sIHNob3VsZEVtaXRTZXREb3VibGUo
KSBjb25zdDsNCiAgICB2b2lkIGVtaXRTZXREb3VibGUoQ0NhbGxIZWxwZXJzJikgY29uc3Q7DQoN
CiAgICB2b2lkIGVtaXRTZXROb25OdW1lcmljKENDYWxsSGVscGVycyYpIGNvbnN0Ow0KICAgIGJv
b2wgc2hvdWxkRW1pdFNldE5vbk51bWVyaWMoKSBjb25zdDsNCg0KICAgIGJvb2wgc2hvdWxkRW1p
dFNldEhlYXBCaWdJbnQoKSBjb25zdDsNCiAgICB2b2lkIGVtaXRTZXRIZWFwQmlnSW50KENDYWxs
SGVscGVycyYpIGNvbnN0Ow0KDQogICAgYm9vbCBzaG91bGRFbWl0U2V0QmlnSW50MzIoKSBjb25z
dDsNCg0KDQojbGluZSAxNjggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcYnl0ZWNvZGVcXEFyaXRoUHJvZmlsZS5oIg0KDQogICAgdm9pZCBlbWl0VW5j
b25kaXRpb25hbFNldChDQ2FsbEhlbHBlcnMmLCBCaXRmaWVsZFR5cGUpIGNvbnN0Ow0KI2xpbmUg
MTcxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGJ5
dGVjb2RlXFxBcml0aFByb2ZpbGUuaCINCg0KICAgIGNvbnN0ZXhwciB1aW50MzJfdCBiaXRzKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzOyB9DQoNCnByb3RlY3RlZDoNCiAgICBBcml0aFByb2ZpbGUo
KSA9IGRlZmF1bHQ7DQoNCiAgICBib29sIGhhc0JpdHMoaW50IG1hc2spIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIG1hc2s7IH0NCiAgICB2b2lkIHNldEJpdChpbnQgbWFzaykgeyBtX2JpdHMgfD0g
bWFzazsgfQ0KDQogICAgQml0ZmllbGRUeXBlIG1fYml0cyB7IDAgfTsgDQp9Ow0KDQoNCg0KDQoN
CnVzaW5nIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSA9IHVpbnQxNl90Ow0KY2xhc3MgVW5hcnlBcml0
aFByb2ZpbGUgOiBwdWJsaWMgQXJpdGhQcm9maWxlPFVuYXJ5QXJpdGhQcm9maWxlQmFzZT4gew0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQgPSBPYnNl
cnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7DQoNCiAgICBzdGF0aWNfYXNzZXJ0KGFyZ09ic2Vy
dmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkIDw9IHNpemVvZihVbmFy
eUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhlIHR5cGUgb2YgdGhlIHVu
ZGVybHlpbmcgYml0ZmllbGQuIik7DQoNCiAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQ
cm9maWxlQmFzZSBjbGVhckFyZ09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxVbmFy
eUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQpKTsNCg0K
ICAgIHN0YXRpYyBjb25zdGV4cHIgVW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkVHlwZU1h
c2sgPSAoMSA8PCBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpIC0gMTsNCg0KcHVibGljOg0K
ICAgIFVuYXJ5QXJpdGhQcm9maWxlKCkNCiAgICAgICAgOiBBcml0aFByb2ZpbGU8VW5hcnlBcml0
aFByb2ZpbGVCYXNlPigpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICgodm9p
ZCkwKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFz
ZSBvYnNlcnZlZEludEJpdHMoKQ0KICAgIHsNCiAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlw
ZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2ZWRUeXBlKCkud2l0aEludDMyKCkgfTsNCiAgICAgICAg
Y29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gb2JzZXJ2ZWRJbnQzMi5iaXRz
KCkgPDwgYXJnT2JzZXJ2ZWRUeXBlU2hpZnQ7DQogICAgICAgIHJldHVybiBiaXRzOw0KICAgIH0N
CiAgICBzdGF0aWMgY29uc3RleHByIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZE51bWJl
ckJpdHMoKQ0KICAgIHsNCiAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51
bWJlciB7IE9ic2VydmVkVHlwZSgpLndpdGhOdW1iZXIoKSB9Ow0KICAgICAgICBjb25zdGV4cHIg
VW5hcnlBcml0aFByb2ZpbGVCYXNlIGJpdHMgPSBvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgYXJn
T2JzZXJ2ZWRUeXBlU2hpZnQ7DQogICAgICAgIHJldHVybiBiaXRzOw0KICAgIH0NCg0KICAgIGNv
bnN0ZXhwciBPYnNlcnZlZFR5cGUgYXJnT2JzZXJ2ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gT2Jz
ZXJ2ZWRUeXBlKChtX2JpdHMgPj4gYXJnT2JzZXJ2ZWRUeXBlU2hpZnQpICYgb2JzZXJ2ZWRUeXBl
TWFzayk7IH0NCiAgICB2b2lkIHNldEFyZ09ic2VydmVkVHlwZShPYnNlcnZlZFR5cGUgdHlwZSkN
CiAgICB7DQogICAgICAgIFVuYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gbV9iaXRzOw0KICAg
ICAgICBiaXRzICY9IGNsZWFyQXJnT2JzZXJ2ZWRUeXBlQml0TWFzazsNCiAgICAgICAgYml0cyB8
PSB0eXBlLmJpdHMoKSA8PCBhcmdPYnNlcnZlZFR5cGVTaGlmdDsNCiAgICAgICAgbV9iaXRzID0g
Yml0czsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIHZvaWQgYXJnU2F3SW50MzIo
KSB7IHNldEFyZ09ic2VydmVkVHlwZShhcmdPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSk7IH0N
CiAgICB2b2lkIGFyZ1Nhd051bWJlcigpIHsgc2V0QXJnT2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVk
VHlwZSgpLndpdGhOdW1iZXIoKSk7IH0NCiAgICB2b2lkIGFyZ1Nhd05vbk51bWJlcigpIHsgc2V0
QXJnT2JzZXJ2ZWRUeXBlKGFyZ09ic2VydmVkVHlwZSgpLndpdGhOb25OdW1iZXIoKSk7IH0NCg0K
ICAgIHZvaWQgb2JzZXJ2ZUFyZyhKU1ZhbHVlIGFyZykNCiAgICB7DQogICAgICAgIFVuYXJ5QXJp
dGhQcm9maWxlIG5ld1Byb2ZpbGUgPSAqdGhpczsNCiAgICAgICAgaWYgKGFyZy5pc051bWJlcigp
KSB7DQogICAgICAgICAgICBpZiAoYXJnLmlzSW50MzIoKSkNCiAgICAgICAgICAgICAgICBuZXdQ
cm9maWxlLmFyZ1Nhd0ludDMyKCk7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAg
bmV3UHJvZmlsZS5hcmdTYXdOdW1iZXIoKTsNCiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBu
ZXdQcm9maWxlLmFyZ1Nhd05vbk51bWJlcigpOw0KDQogICAgICAgIG1fYml0cyA9IG5ld1Byb2Zp
bGUuYml0cygpOw0KICAgIH0NCg0KICAgIGJvb2wgaXNPYnNlcnZlZFR5cGVFbXB0eSgpDQogICAg
ew0KICAgICAgICByZXR1cm4gYXJnT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOw0KICAgIH0NCg0K
ICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCn07DQoNCg0KDQoN
Cg0KDQoNCnVzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UgPSB1aW50MTZfdDsNCmNsYXNzIEJp
bmFyeUFyaXRoUHJvZmlsZSA6IHB1YmxpYyBBcml0aFByb2ZpbGU8QmluYXJ5QXJpdGhQcm9maWxl
QmFzZT4gew0KICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQgPSBPYnNlcnZlZFJlc3VsdHM6Om51bUJpdHNOZWVkZWQ7DQogICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBsaHNPYnNlcnZlZFR5cGVTaGlmdCA9IHJoc09ic2VydmVkVHlwZVNoaWZ0ICsg
T2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkOw0KDQogICAgc3RhdGljX2Fzc2VydChPYnNlcnZl
ZFR5cGU6Om51bUJpdHNOZWVkZWQgPT0gMywgIldlIG1ha2UgYSBoYXJkIGFzc3VtcHRpb24gYWJv
dXQgdGhhdCBoZXJlLiIpOw0KICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxl
QmFzZSBjbGVhclJoc09ic2VydmVkVHlwZUJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaW5hcnlBcml0
aFByb2ZpbGVCYXNlPih+KDBiMTExIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KSk7DQogICAgc3Rh
dGljIGNvbnN0ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIGNsZWFyTGhzT2JzZXJ2ZWRUeXBl
Qml0TWFzayA9IHN0YXRpY19jYXN0PEJpbmFyeUFyaXRoUHJvZmlsZUJhc2U+KH4oMGIxMTEgPDwg
bGhzT2JzZXJ2ZWRUeXBlU2hpZnQpKTsNCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5QXJp
dGhQcm9maWxlQmFzZSBvYnNlcnZlZFR5cGVNYXNrID0gKDEgPDwgT2JzZXJ2ZWRUeXBlOjpudW1C
aXRzTmVlZGVkKSAtIDE7DQoNCnB1YmxpYzoNCiAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFy
aXRoUHJvZmlsZUJhc2Ugc3BlY2lhbEZhc3RQYXRoQml0ID0gMSA8PCAobGhzT2JzZXJ2ZWRUeXBl
U2hpZnQgKyBPYnNlcnZlZFR5cGU6Om51bUJpdHNOZWVkZWQpOw0KICAgIHN0YXRpY19hc3NlcnQo
KGxoc09ic2VydmVkVHlwZVNoaWZ0ICsgT2JzZXJ2ZWRUeXBlOjpudW1CaXRzTmVlZGVkICsgMSkg
PD0gc2l6ZW9mKEJpbmFyeUFyaXRoUHJvZmlsZUJhc2UpICogOCwgIlNob3VsZCBmaXQgaW4gdGhl
IHVuZGVybHlpbmcgdHlwZS4iKTsNCiAgICBzdGF0aWNfYXNzZXJ0KCEoc3BlY2lhbEZhc3RQYXRo
Qml0ICYgfmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzayksICJUaGVzZSBiaXRzIHNob3VsZCBu
b3QgaW50ZXJzZWN0LiIpOw0KICAgIHN0YXRpY19hc3NlcnQoc3BlY2lhbEZhc3RQYXRoQml0ICYg
Y2xlYXJMaHNPYnNlcnZlZFR5cGVCaXRNYXNrLCAiVGhlc2UgYml0cyBzaG91bGQgaW50ZXJzZWN0
LiIpOw0KICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNwZWNpYWxGYXN0
UGF0aEJpdCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGljX2Nhc3Q8QmluYXJ5QXJpdGhQ
cm9maWxlQmFzZT4ofmNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzaykpLCAiVGhlc2UgYml0cyBz
aG91bGQgbm90IGludGVyc2VjdCBhbmQgc3BlY2lhbEZhc3RQYXRoQml0IHNob3VsZCBiZSBhIGhp
Z2hlciBiaXQuIik7DQoNCiAgICBCaW5hcnlBcml0aFByb2ZpbGUoKQ0KICAgICAgICA6IEFyaXRo
UHJvZmlsZTxCaW5hcnlBcml0aFByb2ZpbGVCYXNlPiAoKQ0KICAgIHsNCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgc3RhdGljIGNvbnN0ZXhwciBC
aW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkSW50SW50Qml0cygpDQogICAgew0KICAgICAg
ICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50MzIgeyBPYnNlcnZlZFR5cGUoKS53
aXRoSW50MzIoKSB9Ow0KICAgICAgICBjb25zdGV4cHIgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBi
aXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09ic2VydmVkVHlwZVNoaWZ0KSB8IChv
YnNlcnZlZEludDMyLmJpdHMoKSA8PCByaHNPYnNlcnZlZFR5cGVTaGlmdCk7DQogICAgICAgIHJl
dHVybiBiaXRzOw0KICAgIH0NCiAgICBzdGF0aWMgY29uc3RleHByIEJpbmFyeUFyaXRoUHJvZmls
ZUJhc2Ugb2JzZXJ2ZWROdW1iZXJJbnRCaXRzKCkNCiAgICB7DQogICAgICAgIGNvbnN0ZXhwciBP
YnNlcnZlZFR5cGUgb2JzZXJ2ZWROdW1iZXIgeyBPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkg
fTsNCiAgICAgICAgY29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZEludDMyIHsgT2JzZXJ2
ZWRUeXBlKCkud2l0aEludDMyKCkgfTsNCiAgICAgICAgY29uc3RleHByIEJpbmFyeUFyaXRoUHJv
ZmlsZUJhc2UgYml0cyA9IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgbGhzT2JzZXJ2ZWRUeXBl
U2hpZnQpIHwgKG9ic2VydmVkSW50MzIuYml0cygpIDw8IHJoc09ic2VydmVkVHlwZVNoaWZ0KTsN
CiAgICAgICAgcmV0dXJuIGJpdHM7DQogICAgfQ0KICAgIHN0YXRpYyBjb25zdGV4cHIgQmluYXJ5
QXJpdGhQcm9maWxlQmFzZSBvYnNlcnZlZEludE51bWJlckJpdHMoKQ0KICAgIHsNCiAgICAgICAg
Y29uc3RleHByIE9ic2VydmVkVHlwZSBvYnNlcnZlZE51bWJlciB7IE9ic2VydmVkVHlwZSgpLndp
dGhOdW1iZXIoKSB9Ow0KICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkSW50
MzIgeyBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSB9Ow0KICAgICAgICBjb25zdGV4cHIgQmlu
YXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gKG9ic2VydmVkSW50MzIuYml0cygpIDw8IGxoc09i
c2VydmVkVHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRU
eXBlU2hpZnQpOw0KICAgICAgICByZXR1cm4gYml0czsNCiAgICB9DQogICAgc3RhdGljIGNvbnN0
ZXhwciBCaW5hcnlBcml0aFByb2ZpbGVCYXNlIG9ic2VydmVkTnVtYmVyTnVtYmVyQml0cygpDQog
ICAgew0KICAgICAgICBjb25zdGV4cHIgT2JzZXJ2ZWRUeXBlIG9ic2VydmVkTnVtYmVyIHsgT2Jz
ZXJ2ZWRUeXBlKCkud2l0aE51bWJlcigpIH07DQogICAgICAgIGNvbnN0ZXhwciBCaW5hcnlBcml0
aFByb2ZpbGVCYXNlIGJpdHMgPSAob2JzZXJ2ZWROdW1iZXIuYml0cygpIDw8IGxoc09ic2VydmVk
VHlwZVNoaWZ0KSB8IChvYnNlcnZlZE51bWJlci5iaXRzKCkgPDwgcmhzT2JzZXJ2ZWRUeXBlU2hp
ZnQpOw0KICAgICAgICByZXR1cm4gYml0czsNCiAgICB9DQoNCiAgICBjb25zdGV4cHIgT2JzZXJ2
ZWRUeXBlIGxoc09ic2VydmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE9ic2VydmVkVHlwZSgobV9i
aXRzID4+IGxoc09ic2VydmVkVHlwZVNoaWZ0KSAmIG9ic2VydmVkVHlwZU1hc2spOyB9DQogICAg
Y29uc3RleHByIE9ic2VydmVkVHlwZSByaHNPYnNlcnZlZFR5cGUoKSBjb25zdCB7IHJldHVybiBP
YnNlcnZlZFR5cGUoKG1fYml0cyA+PiByaHNPYnNlcnZlZFR5cGVTaGlmdCkgJiBvYnNlcnZlZFR5
cGVNYXNrKTsgfQ0KICAgIHZvaWQgc2V0TGhzT2JzZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBl
KQ0KICAgIHsNCiAgICAgICAgQmluYXJ5QXJpdGhQcm9maWxlQmFzZSBiaXRzID0gbV9iaXRzOw0K
ICAgICAgICBiaXRzICY9IGNsZWFyTGhzT2JzZXJ2ZWRUeXBlQml0TWFzazsNCiAgICAgICAgYml0
cyB8PSB0eXBlLmJpdHMoKSA8PCBsaHNPYnNlcnZlZFR5cGVTaGlmdDsNCiAgICAgICAgbV9iaXRz
ID0gYml0czsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgIH0NCg0KICAgIHZvaWQgc2V0UmhzT2Jz
ZXJ2ZWRUeXBlKE9ic2VydmVkVHlwZSB0eXBlKQ0KICAgIHsgDQogICAgICAgIEJpbmFyeUFyaXRo
UHJvZmlsZUJhc2UgYml0cyA9IG1fYml0czsNCiAgICAgICAgYml0cyAmPSBjbGVhclJoc09ic2Vy
dmVkVHlwZUJpdE1hc2s7DQogICAgICAgIGJpdHMgfD0gdHlwZS5iaXRzKCkgPDwgcmhzT2JzZXJ2
ZWRUeXBlU2hpZnQ7DQogICAgICAgIG1fYml0cyA9IGJpdHM7DQogICAgICAgICgodm9pZCkwKTsN
CiAgICB9DQoNCiAgICBib29sIHRvb2tTcGVjaWFsRmFzdFBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBzcGVjaWFsRmFzdFBhdGhCaXQ7IH0NCg0KICAgIHZvaWQgbGhzU2F3SW50MzIoKSB7
IHNldExoc09ic2VydmVkVHlwZShsaHNPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKSk7IH0NCiAg
ICB2b2lkIGxoc1Nhd051bWJlcigpIHsgc2V0TGhzT2JzZXJ2ZWRUeXBlKGxoc09ic2VydmVkVHlw
ZSgpLndpdGhOdW1iZXIoKSk7IH0NCiAgICB2b2lkIGxoc1Nhd05vbk51bWJlcigpIHsgc2V0TGhz
T2JzZXJ2ZWRUeXBlKGxoc09ic2VydmVkVHlwZSgpLndpdGhOb25OdW1iZXIoKSk7IH0NCiAgICB2
b2lkIHJoc1Nhd0ludDMyKCkgeyBzZXRSaHNPYnNlcnZlZFR5cGUocmhzT2JzZXJ2ZWRUeXBlKCku
d2l0aEludDMyKCkpOyB9DQogICAgdm9pZCByaHNTYXdOdW1iZXIoKSB7IHNldFJoc09ic2VydmVk
VHlwZShyaHNPYnNlcnZlZFR5cGUoKS53aXRoTnVtYmVyKCkpOyB9DQogICAgdm9pZCByaHNTYXdO
b25OdW1iZXIoKSB7IHNldFJoc09ic2VydmVkVHlwZShyaHNPYnNlcnZlZFR5cGUoKS53aXRoTm9u
TnVtYmVyKCkpOyB9DQoNCiAgICB2b2lkIG9ic2VydmVMSFMoSlNWYWx1ZSBsaHMpDQogICAgew0K
ICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlzOw0KICAgICAgICBp
ZiAobGhzLmlzTnVtYmVyKCkpIHsNCiAgICAgICAgICAgIGlmIChsaHMuaXNJbnQzMigpKQ0KICAg
ICAgICAgICAgICAgIG5ld1Byb2ZpbGUubGhzU2F3SW50MzIoKTsNCiAgICAgICAgICAgIGVsc2UN
CiAgICAgICAgICAgICAgICBuZXdQcm9maWxlLmxoc1Nhd051bWJlcigpOw0KICAgICAgICB9IGVs
c2UNCiAgICAgICAgICAgIG5ld1Byb2ZpbGUubGhzU2F3Tm9uTnVtYmVyKCk7DQoNCiAgICAgICAg
bV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7DQogICAgfQ0KDQogICAgdm9pZCBvYnNlcnZlTEhT
QW5kUkhTKEpTVmFsdWUgbGhzLCBKU1ZhbHVlIHJocykNCiAgICB7DQogICAgICAgIG9ic2VydmVM
SFMobGhzKTsNCg0KICAgICAgICBCaW5hcnlBcml0aFByb2ZpbGUgbmV3UHJvZmlsZSA9ICp0aGlz
Ow0KICAgICAgICBpZiAocmhzLmlzTnVtYmVyKCkpIHsNCiAgICAgICAgICAgIGlmIChyaHMuaXNJ
bnQzMigpKQ0KICAgICAgICAgICAgICAgIG5ld1Byb2ZpbGUucmhzU2F3SW50MzIoKTsNCiAgICAg
ICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBuZXdQcm9maWxlLnJoc1Nhd051bWJlcigpOw0K
ICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgIG5ld1Byb2ZpbGUucmhzU2F3Tm9uTnVtYmVyKCk7
DQoNCiAgICAgICAgbV9iaXRzID0gbmV3UHJvZmlsZS5iaXRzKCk7DQogICAgfQ0KDQogICAgYm9v
bCBpc09ic2VydmVkVHlwZUVtcHR5KCkNCiAgICB7DQogICAgICAgIHJldHVybiBsaHNPYnNlcnZl
ZFR5cGUoKS5pc0VtcHR5KCkgJiYgcmhzT2JzZXJ2ZWRUeXBlKCkuaXNFbXB0eSgpOw0KICAgIH0N
Cg0KICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsNCn07DQoNCn0g
DQoNCm5hbWVzcGFjZSBXVEYgew0KDQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBj
b25zdCBKU0M6OlVuYXJ5QXJpdGhQcm9maWxlJik7DQp2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBKU0M6OkJpbmFyeUFyaXRoUHJvZmlsZSYpOw0Kdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiwgY29uc3QgSlNDOjpPYnNlcnZlZFR5cGUmKTsNCg0KfSANCiNsaW5l
IDMxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcSklUTWF0aElDLmgiDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRBZGRHZW5lcmF0b3IuaCINCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
DQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxcaml0XFxKSVRNYXRoSUNJbmxpbmVSZXN1bHQuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQpuYW1lc3Bh
Y2UgSlNDIHsNCg0KZW51bSBjbGFzcyBKSVRNYXRoSUNJbmxpbmVSZXN1bHQgew0KICAgIEdlbmVy
YXRlZEZhc3RQYXRoLA0KICAgIEdlbmVyYXRlRnVsbFNuaXBwZXQsDQogICAgRG9udEdlbmVyYXRl
DQp9Ow0KDQp9IA0KDQojbGluZSA0MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oIg0KI2xpbmUgMzIg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxK
SVRBZGRHZW5lcmF0b3IuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxTbmlwcGV0T3BlcmFuZC5oIg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBTbmlwcGV0T3BlcmFuZCB7DQogICAgZW51
bSBDb25zdE9yVmFyVHlwZSA6IHVpbnQ4X3Qgew0KICAgICAgICBWYXJpYWJsZSwNCiAgICAgICAg
Q29uc3RJbnQzMiwNCiAgICAgICAgQ29uc3REb3VibGUNCiAgICB9Ow0KDQpwdWJsaWM6DQogICAg
U25pcHBldE9wZXJhbmQoKQ0KICAgICAgICA6IG1fcmVzdWx0VHlwZShSZXN1bHRUeXBlOjp1bmtu
b3duVHlwZSgpKQ0KICAgIHsgfQ0KDQogICAgU25pcHBldE9wZXJhbmQoUmVzdWx0VHlwZSByZXN1
bHRUeXBlKQ0KICAgICAgICA6IG1fcmVzdWx0VHlwZShyZXN1bHRUeXBlKQ0KICAgIHsgfQ0KDQog
ICAgYm9vbCBtaWdodEJlTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRUeXBlLm1pZ2h0
QmVOdW1iZXIoKTsgfQ0KICAgIGJvb2wgZGVmaW5pdGVseUlzTnVtYmVyKCkgY29uc3QgeyByZXR1
cm4gbV9yZXN1bHRUeXBlLmRlZmluaXRlbHlJc051bWJlcigpOyB9DQoNCiAgICBib29sIGlzQ29u
c3QoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gVmFyaWFibGU7IH0NCiAgICBib29sIGlzQ29u
c3RJbnQzMigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDb25zdEludDMyOyB9DQogICAgYm9v
bCBpc0NvbnN0RG91YmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENvbnN0RG91YmxlOyB9
DQogICAgYm9vbCBpc1Bvc2l0aXZlQ29uc3RJbnQzMigpIGNvbnN0IHsgcmV0dXJuIGlzQ29uc3RJ
bnQzMigpICYmIGFzQ29uc3RJbnQzMigpID4gMDsgfQ0KDQogICAgaW50NjRfdCBhc1Jhd0JpdHMo
KSBjb25zdCB7IHJldHVybiBtX3ZhbC5nZXQoKS5yYXdCaXRzOyB9DQoNCiAgICBpbnQzMl90IGFz
Q29uc3RJbnQzMigpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJl
dHVybiBtX3ZhbC5nZXQoKS5pbnQzMlZhbDsNCiAgICB9DQoNCiAgICBkb3VibGUgYXNDb25zdERv
dWJsZSgpIGNvbnN0DQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBt
X3ZhbC5nZXQoKS5kb3VibGVWYWw7DQogICAgfQ0KDQogICAgZG91YmxlIGFzQ29uc3ROdW1iZXIo
KSBjb25zdA0KICAgIHsNCiAgICAgICAgaWYgKGlzQ29uc3RJbnQzMigpKQ0KICAgICAgICAgICAg
cmV0dXJuIGFzQ29uc3RJbnQzMigpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVy
biBhc0NvbnN0RG91YmxlKCk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRDb25zdEludDMyKGludDMy
X3QgdmFsdWUpDQogICAgew0KICAgICAgICBtX3R5cGUgPSBDb25zdEludDMyOw0KICAgICAgICBV
bmlvblR5cGUgdTsNCiAgICAgICAgdS5pbnQzMlZhbCA9IHZhbHVlOw0KICAgICAgICBtX3ZhbCA9
IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odSk7DQogICAgfQ0KDQogICAgdm9p
ZCBzZXRDb25zdERvdWJsZShkb3VibGUgdmFsdWUpDQogICAgew0KICAgICAgICBtX3R5cGUgPSBD
b25zdERvdWJsZTsNCiAgICAgICAgVW5pb25UeXBlIHU7DQogICAgICAgIHUuZG91YmxlVmFsID0g
dmFsdWU7DQogICAgICAgIG1fdmFsID0gc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVy
Pih1KTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgUmVzdWx0VHlwZSBtX3Jlc3VsdFR5cGU7DQog
ICAgQ29uc3RPclZhclR5cGUgbV90eXBlIHsgVmFyaWFibGUgfTsNCiAgICB1bmlvbiBVbmlvblR5
cGUgew0KICAgICAgICBpbnQzMl90IGludDMyVmFsOw0KICAgICAgICBkb3VibGUgZG91YmxlVmFs
Ow0KICAgICAgICBpbnQ2NF90IHJhd0JpdHM7DQogICAgfTsNCiAgICBQYWNrZWQ8VW5pb25UeXBl
PiBtX3ZhbDsNCn07DQpzdGF0aWNfYXNzZXJ0KGFsaWdub2YoU25pcHBldE9wZXJhbmQpID09IDEp
Ow0KDQp9IA0KDQojbGluZSAxMTIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaml0XFxTbmlwcGV0T3BlcmFuZC5oIg0KI2xpbmUgMzMgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRBZGRHZW5l
cmF0b3IuaCINCg0KbmFtZXNwYWNlIEpTQyB7DQoNCnN0cnVjdCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGU7DQoNCmNsYXNzIEpJVEFkZEdlbmVyYXRvciB7DQpwdWJsaWM6DQogICAgSklUQWRkR2VuZXJh
dG9yKCkgeyB9DQoNCiAgICBKSVRBZGRHZW5lcmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJh
bmQsIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCwNCiAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwNCiAgICAgICAgRlBSUmVn
IGxlZnRGUFIsIEZQUlJlZyByaWdodEZQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3Jh
dGNoRlBSKQ0KICAgICAgICA6IG1fbGVmdE9wZXJhbmQobGVmdE9wZXJhbmQpDQogICAgICAgICwg
bV9yaWdodE9wZXJhbmQocmlnaHRPcGVyYW5kKQ0KICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkN
CiAgICAgICAgLCBtX2xlZnQobGVmdCkNCiAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQ0KICAgICAg
ICAsIG1fbGVmdEZQUihsZWZ0RlBSKQ0KICAgICAgICAsIG1fcmlnaHRGUFIocmlnaHRGUFIpDQog
ICAgICAgICwgbV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpDQogICAgICAgICwgbV9zY3JhdGNoRlBS
KHNjcmF0Y2hGUFIpDQogICAgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgSklU
TWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dl
bmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSopOw0KICAgIGJvb2wgZ2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRK
dW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgY29uc3Qg
QmluYXJ5QXJpdGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsNCg0KICAgIHN0
YXRpYyBib29sIGlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5kIGxlZnRP
cGVyYW5kKSB7IHJldHVybiBsZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpOyB9DQog
ICAgc3RhdGljIGJvb2wgaXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KFNuaXBwZXRPcGVyYW5k
IHJpZ2h0T3BlcmFuZCkgeyByZXR1cm4gcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMy
KCk7IH0NCg0KcHJpdmF0ZToNCiAgICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOw0KICAg
IFNuaXBwZXRPcGVyYW5kIG1fcmlnaHRPcGVyYW5kOw0KICAgIEpTVmFsdWVSZWdzIG1fcmVzdWx0
Ow0KICAgIEpTVmFsdWVSZWdzIG1fbGVmdDsNCiAgICBKU1ZhbHVlUmVncyBtX3JpZ2h0Ow0KICAg
IEZQUlJlZyBtX2xlZnRGUFI7DQogICAgRlBSUmVnIG1fcmlnaHRGUFI7DQogICAgR1BSUmVnIG1f
c2NyYXRjaEdQUjsNCiAgICBGUFJSZWcgbV9zY3JhdGNoRlBSOw0KfTsNCg0KfSANCg0KI2xpbmUg
NzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0
XFxKSVRBZGRHZW5lcmF0b3IuaCINCiNsaW5lIDMzICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRc
XFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUTWF0aElDLmgiDQoNCiNsaW5lIDEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRN
dWxHZW5lcmF0b3IuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpz
dHJ1Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRlOw0KDQpjbGFzcyBKSVRNdWxHZW5lcmF0b3Igew0K
cHVibGljOg0KICAgIEpJVE11bEdlbmVyYXRvcigpDQogICAgeyB9DQoNCiAgICBKSVRNdWxHZW5l
cmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQsIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3Bl
cmFuZCwNCiAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1Zh
bHVlUmVncyByaWdodCwNCiAgICAgICAgRlBSUmVnIGxlZnRGUFIsIEZQUlJlZyByaWdodEZQUiwg
R1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBSKQ0KICAgICAgICA6IG1fbGVmdE9w
ZXJhbmQobGVmdE9wZXJhbmQpDQogICAgICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVyYW5k
KQ0KICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkNCiAgICAgICAgLCBtX2xlZnQobGVmdCkNCiAg
ICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQ0KICAgICAgICAsIG1fbGVmdEZQUihsZWZ0RlBSKQ0KICAg
ICAgICAsIG1fcmlnaHRGUFIocmlnaHRGUFIpDQogICAgICAgICwgbV9zY3JhdGNoR1BSKHNjcmF0
Y2hHUFIpDQogICAgICAgICwgbV9zY3JhdGNoRlBSKHNjcmF0Y2hGUFIpDQogICAgew0KICAgICAg
ICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRl
SW5saW5lKENDYWxsSGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IEJpbmFy
eUFyaXRoUHJvZmlsZSopOw0KICAgIGJvb2wgZ2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMm
LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCYgc2xvd0p1bXBMaXN0LCBjb25zdCBCaW5hcnlBcml0aFByb2ZpbGUqLCBib29sIHNob3Vs
ZEVtaXRQcm9maWxpbmcpOw0KDQogICAgc3RhdGljIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29u
c3RhbnQoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQpIHsgcmV0dXJuIGxlZnRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCk7IH0NCiAgICBzdGF0aWMgYm9vbCBpc1JpZ2h0T3BlcmFuZFZh
bGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKSB7IHJldHVybiByaWdodE9w
ZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKTsgfQ0KICAgIA0KcHJpdmF0ZToNCiAgICBTbmlw
cGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOw0KICAgIFNuaXBwZXRPcGVyYW5kIG1fcmlnaHRPcGVy
YW5kOw0KICAgIEpTVmFsdWVSZWdzIG1fcmVzdWx0Ow0KICAgIEpTVmFsdWVSZWdzIG1fbGVmdDsN
CiAgICBKU1ZhbHVlUmVncyBtX3JpZ2h0Ow0KICAgIEZQUlJlZyBtX2xlZnRGUFI7DQogICAgRlBS
UmVnIG1fcmlnaHRGUFI7DQogICAgR1BSUmVnIG1fc2NyYXRjaEdQUjsNCiAgICBGUFJSZWcgbV9z
Y3JhdGNoRlBSOw0KfTsNCg0KfSANCg0KI2xpbmUgODAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRNdWxHZW5lcmF0b3IuaCINCiNsaW5l
IDM1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcSklUTWF0aElDLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUTmVnR2VuZXJhdG9yLmgiDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0K
DQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSklUTmVnR2VuZXJhdG9yIHsNCnB1Ymxp
YzoNCiAgICBKSVROZWdHZW5lcmF0b3IoKSA9IGRlZmF1bHQ7DQoNCiAgICBKSVROZWdHZW5lcmF0
b3IoSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBzcmMsIEdQUlJlZyBzY3JhdGNoR1BS
KQ0KICAgICAgICA6IG1fcmVzdWx0KHJlc3VsdCkNCiAgICAgICAgLCBtX3NyYyhzcmMpDQogICAg
ICAgICwgbV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpDQogICAgeyB9DQoNCiAgICBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgZ2VuZXJhdGVJbmxpbmUoQ0NhbGxIZWxwZXJzJiwgTWF0aElDR2VuZXJhdGlv
blN0YXRlJiwgY29uc3QgVW5hcnlBcml0aFByb2ZpbGUqKTsNCiAgICBib29sIGdlbmVyYXRlRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3Qs
IENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IFVuYXJ5QXJp
dGhQcm9maWxlKiwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKTsNCg0KcHJpdmF0ZToNCiAgICBK
U1ZhbHVlUmVncyBtX3Jlc3VsdDsNCiAgICBKU1ZhbHVlUmVncyBtX3NyYzsNCiAgICBHUFJSZWcg
bV9zY3JhdGNoR1BSOw0KfTsNCg0KfSANCg0KI2xpbmUgNTggIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVROZWdHZW5lcmF0b3IuaCINCiNs
aW5lIDM2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGppdFxcSklUTWF0aElDLmgiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUU3ViR2VuZXJhdG9yLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0Kc3RydWN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0
ZTsNCg0KY2xhc3MgSklUU3ViR2VuZXJhdG9yIHsNCnB1YmxpYzoNCiAgICBKSVRTdWJHZW5lcmF0
b3IoKSB7IH0NCg0KICAgIEpJVFN1YkdlbmVyYXRvcihTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFu
ZCwgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kLA0KICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHQsIEpTVmFsdWVSZWdzIGxlZnQsIEpTVmFsdWVSZWdzIHJpZ2h0LA0KICAgICAgICBGUFJSZWcg
bGVmdEZQUiwgRlBSUmVnIHJpZ2h0RlBSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRlBSUmVnIHNjcmF0
Y2hGUFIpDQogICAgICAgIDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkNCiAgICAgICAgLCBt
X3JpZ2h0T3BlcmFuZChyaWdodE9wZXJhbmQpDQogICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQ0K
ICAgICAgICAsIG1fbGVmdChsZWZ0KQ0KICAgICAgICAsIG1fcmlnaHQocmlnaHQpDQogICAgICAg
ICwgbV9sZWZ0RlBSKGxlZnRGUFIpDQogICAgICAgICwgbV9yaWdodEZQUihyaWdodEZQUikNCiAg
ICAgICAgLCBtX3NjcmF0Y2hHUFIoc2NyYXRjaEdQUikNCiAgICAgICAgLCBtX3NjcmF0Y2hGUFIo
c2NyYXRjaEZQUikNCiAgICB7IH0NCg0KICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBnZW5lcmF0
ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBCaW5h
cnlBcml0aFByb2ZpbGUqKTsNCiAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVt
cExpc3QmIHNsb3dQYXRoSnVtcExpc3QsIGNvbnN0IEJpbmFyeUFyaXRoUHJvZmlsZSosIGJvb2wg
c2hvdWxkRW1pdFByb2ZpbGluZyk7DQoNCiAgICBzdGF0aWMgYm9vbCBpc0xlZnRPcGVyYW5kVmFs
aWRDb25zdGFudChTbmlwcGV0T3BlcmFuZCkgeyByZXR1cm4gZmFsc2U7IH0NCiAgICBzdGF0aWMg
Ym9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoU25pcHBldE9wZXJhbmQpIHsgcmV0dXJu
IGZhbHNlOyB9DQoNCnByaXZhdGU6DQogICAgU25pcHBldE9wZXJhbmQgbV9sZWZ0T3BlcmFuZDsN
CiAgICBTbmlwcGV0T3BlcmFuZCBtX3JpZ2h0T3BlcmFuZDsNCiAgICBKU1ZhbHVlUmVncyBtX3Jl
c3VsdDsNCiAgICBKU1ZhbHVlUmVncyBtX2xlZnQ7DQogICAgSlNWYWx1ZVJlZ3MgbV9yaWdodDsN
CiAgICBGUFJSZWcgbV9sZWZ0RlBSOw0KICAgIEZQUlJlZyBtX3JpZ2h0RlBSOw0KICAgIEdQUlJl
ZyBtX3NjcmF0Y2hHUFI7DQogICAgRlBSUmVnIG1fc2NyYXRjaEZQUjsNCn07DQoNCn0gDQoNCiNs
aW5lIDc3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGppdFxcSklUU3ViR2VuZXJhdG9yLmgiDQojbGluZSAzNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVE1hdGhJQy5oIg0KI2xpbmUgMSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJs
ZXJcXExpbmtCdWZmZXIuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KbmFtZXNwYWNlIEpTQyB7DQoNCm5hbWVzcGFjZSBXYXNtIHsNCmVudW0gY2xhc3MgQ29tcGls
YXRpb25Nb2RlIDogdWludDhfdDsNCn0NCg0KY2xhc3MgQ29kZUJsb2NrOw0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KY2xhc3MgTGlua0J1ZmZlciB7DQogICAgTGlua0J1ZmZlcihjb25z
dCBMaW5rQnVmZmVyJikgPSBkZWxldGU7IExpbmtCdWZmZXImIG9wZXJhdG9yPShjb25zdCBMaW5r
QnVmZmVyJikgPSBkZWxldGU7OyBwdWJsaWM6IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZv
aWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkKiBw
KSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
OjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogcCkg
eyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
IHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2b2lkKTApOyByZXR1cm4gbG9j
YXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBwcml2YXRlOiB1c2luZyBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50Ow0KICAgIA0K
ICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+IHVzaW5nIENvZGVQdHIgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8dGFnPjsNCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPiB1c2luZyBDb2RlUmVmID0gTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz47DQogICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgTGFiZWw7DQogICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBKdW1wOw0KICAgIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgUGF0Y2hhYmxlSnVtcDsNCiAgICB0
eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBKdW1wTGlzdDsNCiAgICB0eXBlZGVmIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIENhbGw7DQogICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsQ29tcGFjdCBEYXRhTGFiZWxDb21wYWN0Ow0KICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJlbDMyOw0KICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQdHI7DQogICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6
Q29udmVydGlibGVMb2FkTGFiZWwgQ29udmVydGlibGVMb2FkTGFiZWw7DQoNCg0KDQojbGluZSA4
NCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3Nl
bWJsZXJcXExpbmtCdWZmZXIuaCINCg0KcHVibGljOg0KICAgIExpbmtCdWZmZXIoTWFjcm9Bc3Nl
bWJsZXImIG1hY3JvQXNzZW1ibGVyLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkNCiAgICAgICAgOiBtX3NpemUo
MCkNCiAgICAgICAgLCBtX2RpZEFsbG9jYXRlKGZhbHNlKQ0KDQoNCg0KICAgIHsNCiAgICAgICAg
KHZvaWQpb3duZXJVSUQ7DQogICAgICAgIGxpbmtDb2RlKG1hY3JvQXNzZW1ibGVyLCBlZmZvcnQp
Ow0KICAgIH0NCg0KICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+DQogICAgTGlua0J1ZmZlcihNYWNy
b0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGNv
ZGUsIHNpemVfdCBzaXplLCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQgPSBKSVRDb21waWxh
dGlvbk11c3RTdWNjZWVkLCBib29sIHNob3VsZFBlcmZvcm1CcmFuY2hDb21wYWN0aW9uID0gdHJ1
ZSkNCiAgICAgICAgOiBtX3NpemUoc2l6ZSkNCiAgICAgICAgLCBtX2RpZEFsbG9jYXRlKGZhbHNl
KQ0KDQoNCg0KICAgICAgICAsIG1fY29kZShjb2RlLnRlbXBsYXRlIHJldGFnZ2VkPExpbmtCdWZm
ZXJQdHJUYWc+KCkpDQogICAgew0KDQoNCiNsaW5lIDEwOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXExpbmtCdWZmZXIuaCINCiAg
ICAgICAgKHZvaWQpc2hvdWxkUGVyZm9ybUJyYW5jaENvbXBhY3Rpb247DQojbGluZSAxMTEgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVy
XFxMaW5rQnVmZmVyLmgiDQogICAgICAgIGxpbmtDb2RlKG1hY3JvQXNzZW1ibGVyLCBlZmZvcnQp
Ow0KICAgIH0NCg0KICAgIH5MaW5rQnVmZmVyKCkNCiAgICB7DQogICAgfQ0KICAgIA0KICAgIGJv
b2wgZGlkRmFpbFRvQWxsb2NhdGUoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0dXJuICFtX2Rp
ZEFsbG9jYXRlOw0KICAgIH0NCg0KICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0DQogICAgew0KICAg
ICAgICByZXR1cm4gIWRpZEZhaWxUb0FsbG9jYXRlKCk7DQogICAgfQ0KDQogICAgdm9pZCBzZXRJ
c0p1bXBJc2xhbmQoKQ0KICAgIHsNCg0KDQojbGluZSAxMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxMaW5rQnVmZmVyLmgiDQog
ICAgfQ0KICAgIA0KICAgIA0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZywgdHlwZW5hbWUgRnVu
YywgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUg
c3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jPjo6dHlwZT46OnZhbHVlPj4NCiAgICB2b2lkIGxpbmso
Q2FsbCBjYWxsLCBGdW5jIGZ1bmNOYW1lKQ0KICAgIHsNCiAgICAgICAgRnVuY3Rpb25QdHI8dGFn
PiBmdW5jdGlvbihmdW5jTmFtZSk7DQogICAgICAgIGxpbmsoY2FsbCwgZnVuY3Rpb24pOw0KICAg
IH0NCg0KICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+DQogICAgdm9pZCBsaW5rKENhbGwgY2FsbCwg
RnVuY3Rpb25QdHI8dGFnPiBmdW5jdGlvbikNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAg
ICAgICAgY2FsbC5tX2xhYmVsID0gYXBwbHlPZmZzZXQoY2FsbC5tX2xhYmVsKTsNCiAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OmxpbmtDYWxsKGNvZGUoKSwgY2FsbCwgZnVuY3Rpb24pOw0KICAgIH0N
CiAgICANCiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KICAgIHZvaWQgbGluayhDYWxsIGNhbGws
IENvZGVMb2NhdGlvbkxhYmVsPHRhZz4gbGFiZWwpDQogICAgew0KICAgICAgICBsaW5rKGNhbGws
IEZ1bmN0aW9uUHRyPHRhZz4obGFiZWwpKTsNCiAgICB9DQogICAgDQogICAgdGVtcGxhdGU8UHRy
VGFnIHRhZz4NCiAgICB2b2lkIGxpbmsoSnVtcCBqdW1wLCBDb2RlTG9jYXRpb25MYWJlbDx0YWc+
IGxhYmVsKQ0KICAgIHsNCiAgICAgICAganVtcC5tX2xhYmVsID0gYXBwbHlPZmZzZXQoanVtcC5t
X2xhYmVsKTsNCiAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmxpbmtKdW1wKGNvZGUoKSwganVtcCwg
bGFiZWwpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+DQogICAgdm9pZCBsaW5r
KGNvbnN0IEp1bXBMaXN0JiBsaXN0LCBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IGxhYmVsKQ0KICAg
IHsNCiAgICAgICAgZm9yIChjb25zdCBKdW1wJiBqdW1wIDogbGlzdC5qdW1wcygpKQ0KICAgICAg
ICAgICAgbGluayhqdW1wLCBsYWJlbCk7DQogICAgfQ0KDQogICAgdm9pZCBwYXRjaChEYXRhTGFi
ZWxQdHIgbGFiZWwsIHZvaWQqIHZhbHVlKQ0KICAgIHsNCiAgICAgICAgQXNzZW1ibGVyTGFiZWwg
dGFyZ2V0ID0gYXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCk7DQogICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpsaW5rUG9pbnRlcihjb2RlKCksIHRhcmdldCwgdmFsdWUpOw0KICAgIH0NCg0KICAgIHRl
bXBsYXRlPFB0clRhZyB0YWc+DQogICAgdm9pZCBwYXRjaChEYXRhTGFiZWxQdHIgbGFiZWwsIENv
ZGVMb2NhdGlvbkxhYmVsPHRhZz4gdmFsdWUpDQogICAgew0KICAgICAgICBBc3NlbWJsZXJMYWJl
bCB0YXJnZXQgPSBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKTsNCiAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwgdGFyZ2V0LCB2YWx1ZSk7DQogICAgfQ0KDQogICAg
DQogICAgDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBDb2RlTG9jYXRpb25MYWJlbDx0
YWc+IGVudHJ5cG9pbnQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVs
PHRhZz4odGFnQ29kZVB0cjx0YWc+KGNvZGUoKSkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPFB0
clRhZyB0YWc+DQogICAgQ29kZUxvY2F0aW9uQ2FsbDx0YWc+IGxvY2F0aW9uT2YoQ2FsbCBjYWxs
KQ0KICAgIHsNCiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAg
IHJldHVybiBDb2RlTG9jYXRpb25DYWxsPHRhZz4oTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFk
ZHJlc3M8dGFnPihjb2RlKCksIGFwcGx5T2Zmc2V0KGNhbGwubV9sYWJlbCkpKTsNCiAgICB9DQoN
CiAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPg0KICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsPHRhZz4g
bG9jYXRpb25PZk5lYXJDYWxsKENhbGwgY2FsbCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGw8
dGFnPihNYWNyb0Fzc2VtYmxlcjo6Z2V0TGlua2VyQWRkcmVzczx0YWc+KGNvZGUoKSwgYXBwbHlP
ZmZzZXQoY2FsbC5tX2xhYmVsKSksDQogICAgICAgICAgICBjYWxsLmlzRmxhZ1NldChDYWxsOjpU
YWlsKSA/IE5lYXJDYWxsTW9kZTo6VGFpbCA6IE5lYXJDYWxsTW9kZTo6UmVndWxhcik7DQogICAg
fQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBDb2RlTG9jYXRpb25MYWJlbDx0YWc+
IGxvY2F0aW9uT2YoUGF0Y2hhYmxlSnVtcCBqdW1wKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIENv
ZGVMb2NhdGlvbkxhYmVsPHRhZz4oTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJlc3M8dGFn
Pihjb2RlKCksIGFwcGx5T2Zmc2V0KGp1bXAubV9qdW1wLm1fbGFiZWwpKSk7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IGxvY2F0
aW9uT2YoTGFiZWwgbGFiZWwpDQogICAgew0KICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFi
ZWw8dGFnPihNYWNyb0Fzc2VtYmxlcjo6Z2V0TGlua2VyQWRkcmVzczx0YWc+KGNvZGUoKSwgYXBw
bHlPZmZzZXQobGFiZWwubV9sYWJlbCkpKTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTxQdHJUYWcg
dGFnPg0KICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjx0YWc+IGxvY2F0aW9uT2YoRGF0YUxh
YmVsUHRyIGxhYmVsKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJl
bFB0cjx0YWc+KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzPHRhZz4oY29kZSgpLCBh
cHBseU9mZnNldChsYWJlbC5tX2xhYmVsKSkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPFB0clRh
ZyB0YWc+DQogICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzI8dGFnPiBsb2NhdGlvbk9mKERhdGFM
YWJlbDMyIGxhYmVsKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJl
bDMyPHRhZz4oTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJlc3M8dGFnPihjb2RlKCksIGFw
cGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpKSk7DQogICAgfQ0KICAgIA0KICAgIHRlbXBsYXRlPFB0
clRhZyB0YWc+DQogICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdDx0YWc+IGxvY2F0aW9u
T2YoRGF0YUxhYmVsQ29tcGFjdCBsYWJlbCkNCiAgICB7DQogICAgICAgIHJldHVybiBDb2RlTG9j
YXRpb25EYXRhTGFiZWxDb21wYWN0PHRhZz4oTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJl
c3M8dGFnPihjb2RlKCksIGFwcGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpKSk7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQ8
dGFnPiBsb2NhdGlvbk9mKENvbnZlcnRpYmxlTG9hZExhYmVsIGxhYmVsKQ0KICAgIHsNCiAgICAg
ICAgcmV0dXJuIENvZGVMb2NhdGlvbkNvbnZlcnRpYmxlTG9hZDx0YWc+KE1hY3JvQXNzZW1ibGVy
OjpnZXRMaW5rZXJBZGRyZXNzPHRhZz4oY29kZSgpLCBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVs
KSkpOw0KICAgIH0NCg0KICAgIA0KICAgIA0KICAgIHVuc2lnbmVkIHJldHVybkFkZHJlc3NPZmZz
ZXQoQ2FsbCBjYWxsKQ0KICAgIHsNCiAgICAgICAgY2FsbC5tX2xhYmVsID0gYXBwbHlPZmZzZXQo
Y2FsbC5tX2xhYmVsKTsNCiAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJD
YWxsUmV0dXJuT2Zmc2V0KGNhbGwpOw0KICAgIH0NCg0KICAgIHVpbnQzMl90IG9mZnNldE9mKExh
YmVsIGxhYmVsKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGFwcGx5T2Zmc2V0KGxhYmVsLm1fbGFi
ZWwpLm1fb2Zmc2V0Ow0KICAgIH0NCg0KICAgIHVuc2lnbmVkIG9mZnNldE9mKFBhdGNoYWJsZUp1
bXAganVtcCkNCiAgICB7DQogICAgICAgIHJldHVybiBhcHBseU9mZnNldChqdW1wLm1fanVtcC5t
X2xhYmVsKS5tX29mZnNldDsNCiAgICB9DQoNCiAgICANCiAgICANCiAgICANCiAgICANCg0KICAg
IHRlbXBsYXRlPFB0clRhZyB0YWc+DQogICAgQ29kZVJlZjx0YWc+IGZpbmFsaXplQ29kZVdpdGhv
dXREaXNhc3NlbWJseSgpDQogICAgew0KICAgICAgICByZXR1cm4gZmluYWxpemVDb2RlV2l0aG91
dERpc2Fzc2VtYmx5SW1wbCgpLnRlbXBsYXRlIHJldGFnZ2VkPHRhZz4oKTsNCiAgICB9DQoNCiAg
ICB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgIENvZGVSZWY8dGFn
PiBmaW5hbGl6ZUNvZGVXaXRoRGlzYXNzZW1ibHkoYm9vbCBkdW1wRGlzYXNzZW1ibHksIGNvbnN0
IGNoYXIqIGZvcm1hdCwgQXJncy4uLiBhcmdzKQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIA0K
ICAgICAgICByZXR1cm4gZmluYWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5SW1wbChkdW1wRGlzYXNz
ZW1ibHksIGZvcm1hdCwgYXJncy4uLikudGVtcGxhdGUgcmV0YWdnZWQ8dGFnPigpOw0KICAgICAg
ICANCiAgICAgICAgDQogICAgfQ0KDQogICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4NCiAgICBDb2Rl
UHRyPHRhZz4gdHJhbXBvbGluZUF0KExhYmVsIGxhYmVsKQ0KICAgIHsNCiAgICAgICAgcmV0dXJu
IENvZGVQdHI8dGFnPihNYWNyb0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlwZV9UOjpnZXRSZWxvY2F0
ZWRBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCkpKTsNCiAgICB9DQoN
CiAgICB2b2lkKiBkZWJ1Z0FkZHJlc3MoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG1fY29kZS5k
YXRhTG9jYXRpb24oKTsNCiAgICB9DQoNCiAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQ0KICAgIA0KICAgIGJvb2wgd2FzQWxyZWFkeURpc2Fzc2VtYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWxyZWFkeURpc2Fzc2VtYmxlZDsgfQ0KICAgIHZvaWQgZGlkQWxyZWFkeURp
c2Fzc2VtYmxlKCkgeyBtX2FscmVhZHlEaXNhc3NlbWJsZWQgPSB0cnVlOyB9DQoNCnByaXZhdGU6
DQogICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIENvZGVSZWY8TGlua0J1ZmZlclB0clRhZz4gZmlu
YWxpemVDb2RlV2l0aG91dERpc2Fzc2VtYmx5SW1wbCgpOw0KICAgIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KSBDb2RlUmVmPExpbmtCdWZmZXJQdHJUYWc+IGZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJs
eUltcGwoYm9vbCBkdW1wRGlzYXNzZW1ibHksIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSA7DQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAzMTcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxMaW5rQnVmZmVyLmgiDQogICAg
DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgYXBwbHlPZmZzZXQoVCBzcmMpDQogICAgew0K
DQoNCiNsaW5lIDMyMyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxhc3NlbWJsZXJcXExpbmtCdWZmZXIuaCINCiAgICAgICAgcmV0dXJuIHNyYzsNCiAg
ICB9DQoNCiAgICANCiAgICB2b2lkKiBjb2RlKCkNCiAgICB7DQogICAgICAgIHJldHVybiBtX2Nv
ZGUuZGF0YUxvY2F0aW9uKCk7DQogICAgfQ0KICAgIA0KICAgIHZvaWQgYWxsb2NhdGUoTWFjcm9B
c3NlbWJsZXImLCBKSVRDb21waWxhdGlvbkVmZm9ydCk7DQoNCiAgICBfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgdm9pZCBsaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYsIEpJVENvbXBpbGF0aW9uRWZmb3J0
KTsNCg0KDQoNCiNsaW5lIDMzOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXExpbmtCdWZmZXIuaCINCg0KICAgIHZvaWQgcGVyZm9y
bUZpbmFsaXphdGlvbigpOw0KDQoNCg0KI2xpbmUgMzQ1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTGlua0J1ZmZlci5oIg0KICAg
IA0KDQoNCiNsaW5lIDM0OSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxhc3NlbWJsZXJcXExpbmtCdWZmZXIuaCINCiAgICANCiAgICBSZWZQdHI8RXhl
Y3V0YWJsZU1lbW9yeUhhbmRsZT4gbV9leGVjdXRhYmxlTWVtb3J5Ow0KICAgIHNpemVfdCBtX3Np
emU7DQoNCg0KDQojbGluZSAzNTYgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcYXNzZW1ibGVyXFxMaW5rQnVmZmVyLmgiDQogICAgYm9vbCBtX2RpZEFs
bG9jYXRlOw0KDQoNCg0KDQoNCiNsaW5lIDM2MyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxhc3NlbWJsZXJcXExpbmtCdWZmZXIuaCINCiAgICBib29s
IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCB7IGZhbHNlIH07DQogICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPExpbmtCdWZmZXJQdHJUYWc+IG1fY29kZTsNCiAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZFRh
c2s8dm9pZChMaW5rQnVmZmVyJik+Pj4gbV9saW5rVGFza3M7DQp9Ow0KDQoNCg0KDQoNCg0KDQoN
CiNsaW5lIDM3NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxhc3NlbWJsZXJcXExpbmtCdWZmZXIuaCINCg0KDQoNCg0KI2xpbmUgMzgxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTGlu
a0J1ZmZlci5oIg0KDQpib29sIHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihDb2RlQmxvY2sqKTsN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQpib29sIHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihXYXNtOjpDb21waWxhdGlvbk1vZGUpOw0K
DQoNCg0KDQoNCg0KDQoNCg0KfSANCg0KI2xpbmUgNDI1ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGFzc2VtYmxlclxcTGlua0J1ZmZlci5oIg0KI2xp
bmUgMzggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
aml0XFxKSVRNYXRoSUMuaCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxSZXBhdGNoLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KDQoNCg0K
DQpuYW1lc3BhY2UgSlNDIHsNCg0KZW51bSBjbGFzcyBHZXRCeUtpbmQgew0KICAgIE5vcm1hbCwN
CiAgICBOb3JtYWxCeVZhbCwNCiAgICBUcnksDQogICAgV2l0aFRoaXMsDQogICAgRGlyZWN0LA0K
ICAgIFByaXZhdGVOYW1lLA0KfTsNCg0KZW51bSBjbGFzcyBEZWxCeUtpbmQgew0KICAgIE5vcm1h
bCwNCiAgICBOb3JtYWxCeVZhbA0KfTsNCg0Kdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsNCnZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90
JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOw0Kdm9pZCByZXBhdGNoUHV0QnlJRChK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJs
ZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwg
UHV0S2luZCk7DQp2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9j
ayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlk
ZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBFQ01BTW9kZSk7DQp2b2lk
IHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENh
Y2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0
cnVjdHVyZVN0dWJJbmZvJik7DQp2b2lkIHJlcGF0Y2hJbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGUsIFN0cnVjdHVy
ZVN0dWJJbmZvJiwgYm9vbCB3YXNGb3VuZCk7DQp2b2lkIGxpbmtGb3IoVk0mLCBDYWxsRnJhbWUq
LCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVlLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4pOw0Kdm9pZCBsaW5rRGlyZWN0Rm9yKENhbGxGcmFt
ZSosIENhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPik7DQp2b2lkIGxpbmtTbG93Rm9yKENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYp
Ow0Kdm9pZCB1bmxpbmtGb3IoVk0mLCBDYWxsTGlua0luZm8mKTsNCnZvaWQgbGlua1BvbHltb3Jw
aGljQ2FsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIENhbGxMaW5rSW5mbyYsIENhbGxW
YXJpYW50KTsNCnZvaWQgcmVzZXRHZXRCeShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IEdldEJ5S2luZCk7DQp2b2lkIHJlc2V0UHV0QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOw0Kdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwg
RGVsQnlLaW5kKTsNCnZvaWQgcmVzZXRJbkJ5SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsNCnZvaWQgcmVzZXRJbnN0YW5jZU9mKFN0cnVjdHVyZVN0dWJJbmZvJik7DQp2b2lkIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50
ZXJuYWxQdHJUYWc+LCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IG5ld0NhbGxlZUZ1bmN0
aW9uKTsNCk1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29k
ZVB0cihWTSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpTT2JqZWN0KiBjYWxsZWUpOw0KDQoN
Cn0gDQoNCiNsaW5lIDczICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGppdFxcUmVwYXRjaC5oIg0KI2xpbmUgMzkgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVRNYXRoSUMuaCINCg0KbmFtZXNw
YWNlIEpTQyB7DQoNCmNsYXNzIExpbmtCdWZmZXI7DQoNCnN0cnVjdCBNYXRoSUNHZW5lcmF0aW9u
U3RhdGUgew0KICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBmYXN0UGF0aFN0YXJ0Ow0KICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBmYXN0UGF0aEVuZDsNCiAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgc2xvd1BhdGhTdGFydDsNCiAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBzbG93UGF0aENhbGw7
DQogICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoSnVtcHM7DQogICAgYm9vbCBz
aG91bGRTbG93UGF0aFJlcGF0Y2g7DQp9Ow0KDQoNCg0KdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVy
YXRvclR5cGUsIHR5cGVuYW1lIEFyaXRoUHJvZmlsZVR5cGU+DQpjbGFzcyBKSVRNYXRoSUMgew0K
ICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCogcCkgeyByZXR1cm4g
cDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0g
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiA6OldURjo6ZmFzdE1hbGxv
YyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJl
ZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6
OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6
V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFn
LCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJldHVybiBsb2NhdGlvbjsgfSB1c2luZyB3
ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9y
Y2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7DQpwdWJsaWM6DQogICAgSklUTWF0aElD
KEFyaXRoUHJvZmlsZVR5cGUqIGFyaXRoUHJvZmlsZSkNCiAgICAgICAgOiBtX2FyaXRoUHJvZmls
ZShhcml0aFByb2ZpbGUpDQogICAgew0KICAgIH0NCg0KICAgIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbigpIHsgcmV0dXJuIG1faW5saW5lRW5kOyB9DQog
ICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aENhbGxMb2NhdGlv
bigpIHsgcmV0dXJuIG1fc2xvd1BhdGhDYWxsTG9jYXRpb247IH0NCiAgICBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7IHJldHVybiBt
X3Nsb3dQYXRoU3RhcnRMb2NhdGlvbjsgfQ0KDQogICAgYm9vbCBnZW5lcmF0ZUlubGluZShDQ2Fs
bEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgYm9vbCBzaG91bGRF
bWl0UHJvZmlsaW5nID0gdHJ1ZSkNCiAgICB7DQogICAgICAgIHN0YXRlLmZhc3RQYXRoU3RhcnQg
PSBqaXQubGFiZWwoKTsNCiAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxl
ci5idWZmZXIoKS5jb2RlU2l6ZSgpOw0KDQogICAgICAgIGlmIChtX2FyaXRoUHJvZmlsZSAmJiBt
X2FyaXRoUHJvZmlsZS0+aXNPYnNlcnZlZFR5cGVFbXB0eSgpKSB7DQogICAgICAgICAgICANCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIHN0YXRl
LnNsb3dQYXRoSnVtcHMuYXBwZW5kKGppdC5wYXRjaGFibGVKdW1wKCkpOw0KICAgICAgICAgICAg
c2l6ZV90IGlubGluZVNpemUgPSBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSAt
IHN0YXJ0U2l6ZTsNCiAgICAgICAgICAgICgodm9pZClpbmxpbmVTaXplKTsNCiAgICAgICAgICAg
IHN0YXRlLnNob3VsZFNsb3dQYXRoUmVwYXRjaCA9IHRydWU7DQogICAgICAgICAgICBzdGF0ZS5m
YXN0UGF0aEVuZCA9IGppdC5sYWJlbCgpOw0KICAgICAgICAgICAgKCh2b2lkKTApOyANCiAgICAg
ICAgICAgIG1fZ2VuZXJhdGVGYXN0UGF0aE9uUmVwYXRjaCA9IHRydWU7DQogICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIEpJVE1hdGhJQ0lubGluZVJlc3VsdCBy
ZXN1bHQgPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUlubGluZShqaXQsIHN0YXRlLCBtX2FyaXRoUHJv
ZmlsZSk7DQoNCiAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsNCiAgICAgICAgY2FzZSBKSVRNYXRo
SUNJbmxpbmVSZXN1bHQ6OkdlbmVyYXRlZEZhc3RQYXRoOiB7DQogICAgICAgICAgICBzaXplX3Qg
aW5saW5lU2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpIC0gc3RhcnRT
aXplOw0KICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHB0cmRpZmZfdD4oaW5saW5lU2l6ZSkg
PCBNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxlSnVtcFNpemUoKSkgew0KICAgICAgICAgICAgICAg
IHNpemVfdCBub3BzVG9FbWl0SW5CeXRlcyA9IE1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVKdW1w
U2l6ZSgpIC0gaW5saW5lU2l6ZTsNCiAgICAgICAgICAgICAgICBqaXQuZW1pdE5vcHMobm9wc1Rv
RW1pdEluQnl0ZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc3RhdGUuc2hvdWxkU2xv
d1BhdGhSZXBhdGNoID0gdHJ1ZTsNCiAgICAgICAgICAgIHN0YXRlLmZhc3RQYXRoRW5kID0gaml0
LmxhYmVsKCk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICBj
YXNlIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDogew0KICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGVuZEp1bXBMaXN0Ow0KICAgICAgICAgICAg
Ym9vbCByZXN1bHQgPSBtX2dlbmVyYXRvci5nZW5lcmF0ZUZhc3RQYXRoKGppdCwgZW5kSnVtcExp
c3QsIHN0YXRlLnNsb3dQYXRoSnVtcHMsIG1fYXJpdGhQcm9maWxlLCBzaG91bGRFbWl0UHJvZmls
aW5nKTsNCiAgICAgICAgICAgIGlmIChyZXN1bHQpIHsNCiAgICAgICAgICAgICAgICBzdGF0ZS5m
YXN0UGF0aEVuZCA9IGppdC5sYWJlbCgpOw0KICAgICAgICAgICAgICAgIHN0YXRlLnNob3VsZFNs
b3dQYXRoUmVwYXRjaCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIGVuZEp1bXBMaXN0Lmxpbmso
JmppdCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAg
ICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgY2FzZSBKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQ6OkRvbnRHZW5lcmF0ZTogew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgICAgICB9DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAg
ICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgdm9pZCBnZW5lcmF0
ZU91dE9mTGluZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPiBjYWxsUmVwbGFjZW1lbnQpDQogICAgew0KICAgICAgICBhdXRvIGxpbmtKdW1wVG9PdXRP
ZkxpbmVTbmlwcGV0ID0gWyZdICgpIHsNCiAgICAgICAgICAgIENDYWxsSGVscGVycyBqaXQoY29k
ZUJsb2NrKTsNCiAgICAgICAgICAgIGF1dG8ganVtcCA9IGppdC5qdW1wKCk7DQogICAgICAgICAg
ICANCiAgICAgICAgICAgIGJvb2wgbmVlZHNCcmFuY2hDb21wYWN0aW9uID0gZmFsc2U7DQogICAg
ICAgICAgICBkbyB7IGlmICgoIShqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSA8
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNv
ZGVQdHIobV9pbmxpbmVTdGFydCwgbV9pbmxpbmVFbmQpKSkpKSBkbyB7IFdURjo6aXNJbnRlZ3Jh
bE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aElu
Zm8oMTI5LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxqaXRcXEpJVE1hdGhJQy5oIiwgIF9fRlVOQ1RJT05fXyAgLCAyMDggKTsgfSB3aGlsZSAoZmFs
c2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQs
IG1faW5saW5lU3RhcnQsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCBKSVRD
b21waWxhdGlvbk11c3RTdWNjZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOw0KICAgICAgICAg
ICAgZG8geyBpZiAoKCEobGlua0J1ZmZlci5pc1ZhbGlkKCkpKSkgZG8geyBXVEY6OmlzSW50ZWdy
YWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJ
bmZvKDEzMSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcaml0XFxKSVRNYXRoSUMuaCIsICBfX0ZVTkNUSU9OX18gICwgMjA5ICk7IH0gd2hpbGUgKGZh
bHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fY29kZS5jb2RlKCkpKTsNCiAg
ICAgICAgICAgICgoKChKU0M6Ok9wdGlvbnM6OmFzeW5jRGlzYXNzZW1ibHkoKSB8fCBKU0M6Ok9w
dGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSkpID8gKGxpbmtCdWZmZXIpLmZpbmFsaXplQ29kZVdp
dGhEaXNhc3NlbWJseTxOb1B0clRhZz4odHJ1ZSwgIkpJVE1hdGhJQzogbGlua2luZyBjb25zdGFu
dCBqdW1wIHRvIG91dCBvZiBsaW5lIHN0dWIiKSA6IChsaW5rQnVmZmVyKS5maW5hbGl6ZUNvZGVX
aXRob3V0RGlzYXNzZW1ibHk8Tm9QdHJUYWc+KCkpOw0KICAgICAgICB9Ow0KDQogICAgICAgIGF1
dG8gcmVwbGFjZUNhbGwgPSBbJl0gKCkgew0KDQogICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzbG93UGF0aENhbGxMb2NhdGlvbigpLnJldGFnZ2VkPEpTSW50
ZXJuYWxQdHJUYWc+KCksIGNhbGxSZXBsYWNlbWVudCk7DQoNCg0KI2xpbmUgMTQyICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUTWF0aElD
LmgiDQogICAgICAgIH07DQoNCiAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nID0gIUpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSk7DQoNCiAgICAgICAg
aWYgKG1fZ2VuZXJhdGVGYXN0UGF0aE9uUmVwYXRjaCkgew0KDQogICAgICAgICAgICBDQ2FsbEhl
bHBlcnMgaml0KGNvZGVCbG9jayk7DQogICAgICAgICAgICBNYXRoSUNHZW5lcmF0aW9uU3RhdGUg
Z2VuZXJhdGlvblN0YXRlOw0KICAgICAgICAgICAgYm9vbCBnZW5lcmF0ZWRJbmxpbmUgPSBnZW5l
cmF0ZUlubGluZShqaXQsIGdlbmVyYXRpb25TdGF0ZSwgc2hvdWxkRW1pdFByb2ZpbGluZyk7DQoN
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgbV9nZW5lcmF0ZUZhc3RQYXRoT25SZXBhdGNoID0g
ZmFsc2U7DQoNCiAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRJbmxpbmUpIHsNCiAgICAgICAgICAg
ICAgICBhdXRvIGp1bXBUb0RvbmUgPSBqaXQuanVtcCgpOw0KDQogICAgICAgICAgICAgICAgTGlu
a0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
Ow0KICAgICAgICAgICAgICAgIGlmICghbGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7
DQogICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhnZW5lcmF0aW9uU3RhdGUuc2xv
d1BhdGhKdW1wcywgc2xvd1BhdGhTdGFydExvY2F0aW9uKCkpOw0KICAgICAgICAgICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRG9uZSwgZG9uZUxvY2F0aW9uKCkpOw0KDQogICAgICAg
ICAgICAgICAgICAgIG1fY29kZSA9ICgoKChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY29kZUJs
b2NrKSB8fCBPcHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5KCkpKSkgPyAobGlua0J1ZmZlcikuZmlu
YWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5PEpJVFN0dWJSb3V0aW5lUHRyVGFnPih0cnVlLCAiSklU
TWF0aElDOiBnZW5lcmF0aW5nIG91dCBvZiBsaW5lIGZhc3QgSUMgc25pcHBldCIpIDogKGxpbmtC
dWZmZXIpLmZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseTxKSVRTdHViUm91dGluZVB0clRh
Zz4oKSk7DQojbGluZSAxNjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxcaml0XFxKSVRNYXRoSUMuaCINCg0KICAgICAgICAgICAgICAgICAgICBpZiAo
IWdlbmVyYXRpb25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpIHsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlQ2FsbCgpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAg
ICAgICAgICAgbGlua0p1bXBUb091dE9mTGluZVNuaXBwZXQoKTsNCg0KICAgICAgICAgICAgICAg
ICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgDQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICB9DQoNCiAgICAgICAgDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgcmVwbGFjZUNhbGwoKTsNCg0KICAgICAgICB7DQog
ICAgICAgICAgICBDQ2FsbEhlbHBlcnMgaml0KGNvZGVCbG9jayk7DQoNCiAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbmRKdW1wTGlzdDsgDQogICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGhKdW1wTGlzdDsgDQoNCiAgICAgICAgICAgIGJvb2wg
ZW1pdHRlZEZhc3RQYXRoID0gbV9nZW5lcmF0b3IuZ2VuZXJhdGVGYXN0UGF0aChqaXQsIGVuZEp1
bXBMaXN0LCBzbG93UGF0aEp1bXBMaXN0LCBtX2FyaXRoUHJvZmlsZSwgc2hvdWxkRW1pdFByb2Zp
bGluZyk7DQogICAgICAgICAgICBpZiAoIWVtaXR0ZWRGYXN0UGF0aCkNCiAgICAgICAgICAgICAg
ICByZXR1cm47DQogICAgICAgICAgICBlbmRKdW1wTGlzdC5hcHBlbmQoaml0Lmp1bXAoKSk7DQoN
CiAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsNCiAgICAgICAgICAgIGlmIChsaW5rQnVmZmVyLmRpZEZhaWxUb0Fs
bG9jYXRlKCkpDQogICAgICAgICAgICAgICAgcmV0dXJuOw0KDQogICAgICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoZW5kSnVtcExpc3QsIGRvbmVMb2NhdGlvbigpKTsNCiAgICAgICAgICAgIGxpbmtC
dWZmZXIubGluayhzbG93UGF0aEp1bXBMaXN0LCBzbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7DQoN
CiAgICAgICAgICAgIG1fY29kZSA9ICgoKChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY29kZUJs
b2NrKSB8fCBPcHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5KCkpKSkgPyAobGlua0J1ZmZlcikuZmlu
YWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5PEpJVFN0dWJSb3V0aW5lUHRyVGFnPih0cnVlLCAiSklU
TWF0aElDOiBnZW5lcmF0aW5nIG91dCBvZiBsaW5lIElDIHNuaXBwZXQiKSA6IChsaW5rQnVmZmVy
KS5maW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHk8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCkp
Ow0KI2xpbmUgMjA3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGppdFxcSklUTWF0aElDLmgiDQogICAgICAgIH0NCg0KICAgICAgICBsaW5rSnVtcFRv
T3V0T2ZMaW5lU25pcHBldCgpOw0KICAgIH0NCg0KICAgIHZvaWQgZmluYWxpemVJbmxpbmVDb2Rl
KGNvbnN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpDQogICAgew0KICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBz
dGFydCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihzdGF0ZS5mYXN0
UGF0aFN0YXJ0KTsNCiAgICAgICAgbV9pbmxpbmVTdGFydCA9IHN0YXJ0Ow0KDQogICAgICAgIG1f
aW5saW5lRW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHN0YXRl
LmZhc3RQYXRoRW5kKTsNCiAgICAgICAgKCh2b2lkKTApOw0KDQogICAgICAgIG1fc2xvd1BhdGhD
YWxsTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oc3Rh
dGUuc2xvd1BhdGhDYWxsKTsNCiAgICAgICAgbV9zbG93UGF0aFN0YXJ0TG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oc3RhdGUuc2xvd1BhdGhTdGFydCk7
DQogICAgfQ0KDQogICAgQXJpdGhQcm9maWxlVHlwZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcml0aFByb2ZpbGU7IH0NCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMjM2ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklU
TWF0aElDLmgiDQoNCiAgICBBcml0aFByb2ZpbGVUeXBlKiBtX2FyaXRoUHJvZmlsZTsNCiAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fY29kZTsNCiAgICBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX2lubGluZVN0YXJ0Ow0KICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1faW5saW5lRW5kOw0KICAgIENvZGVM
b2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1fc2xvd1BhdGhDYWxsTG9jYXRpb247DQog
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gbV9zbG93UGF0aFN0YXJ0TG9j
YXRpb247DQogICAgYm9vbCBtX2dlbmVyYXRlRmFzdFBhdGhPblJlcGF0Y2ggeyBmYWxzZSB9Ow0K
ICAgIEdlbmVyYXRvclR5cGUgbV9nZW5lcmF0b3I7DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUg
R2VuZXJhdG9yVHlwZT4NCmNsYXNzIEpJVEJpbmFyeU1hdGhJQyA6IHB1YmxpYyBKSVRNYXRoSUM8
R2VuZXJhdG9yVHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlPiB7DQpwdWJsaWM6DQogICAgSklUQmlu
YXJ5TWF0aElDKEJpbmFyeUFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQ0KICAgICAgICA6IEpJ
VE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBCaW5hcnlBcml0aFByb2ZpbGU+KGFyaXRoUHJvZmlsZSkN
CiAgICB7DQogICAgfQ0KfTsNCg0KdHlwZWRlZiBKSVRCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJh
dG9yPiBKSVRBZGRJQzsNCnR5cGVkZWYgSklUQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4g
SklUTXVsSUM7DQp0eXBlZGVmIEpJVEJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+IEpJVFN1
YklDOw0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4NCmNsYXNzIEpJVFVuYXJ5
TWF0aElDIDogcHVibGljIEpJVE1hdGhJQzxHZW5lcmF0b3JUeXBlLCBVbmFyeUFyaXRoUHJvZmls
ZT4gew0KcHVibGljOg0KICAgIEpJVFVuYXJ5TWF0aElDKFVuYXJ5QXJpdGhQcm9maWxlKiBhcml0
aFByb2ZpbGUpDQogICAgICAgIDogSklUTWF0aElDPEdlbmVyYXRvclR5cGUsIFVuYXJ5QXJpdGhQ
cm9maWxlPihhcml0aFByb2ZpbGUpDQogICAgew0KICAgIH0NCn07DQoNCnR5cGVkZWYgSklUVW5h
cnlNYXRoSUM8SklUTmVnR2VuZXJhdG9yPiBKSVROZWdJQzsNCg0KfSANCg0KI2xpbmUgMjc0ICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklU
TWF0aElDLmgiDQojbGluZSA0NiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxqaXRcXEpJVC5oIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Vi
a2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3By
YWdtYSBvbmNlDQoNCg0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUQml0QmluYXJ5T3BHZW5lcmF0b3IuaCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNl
DQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSklUQml0QmluYXJ5T3BHZW5l
cmF0b3Igew0KcHVibGljOg0KICAgIEpJVEJpdEJpbmFyeU9wR2VuZXJhdG9yKGNvbnN0IFNuaXBw
ZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFu
ZCwNCiAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1ZhbHVl
UmVncyByaWdodCwgR1BSUmVnIHNjcmF0Y2hHUFIpDQogICAgICAgIDogbV9sZWZ0T3BlcmFuZChs
ZWZ0T3BlcmFuZCkNCiAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChyaWdodE9wZXJhbmQpDQogICAg
ICAgICwgbV9yZXN1bHQocmVzdWx0KQ0KICAgICAgICAsIG1fbGVmdChsZWZ0KQ0KICAgICAgICAs
IG1fcmlnaHQocmlnaHQpDQogICAgICAgICwgbV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpDQogICAg
ew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgYm9vbCBkaWRFbWl0RmFzdFBhdGgo
KSBjb25zdCB7IHJldHVybiBtX2RpZEVtaXRGYXN0UGF0aDsgfQ0KICAgIENDYWxsSGVscGVyczo6
SnVtcExpc3QmIGVuZEp1bXBMaXN0KCkgeyByZXR1cm4gbV9lbmRKdW1wTGlzdDsgfQ0KICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRoSnVtcExpc3QoKSB7IHJldHVybiBtX3Nsb3dQ
YXRoSnVtcExpc3Q7IH0NCg0KcHJvdGVjdGVkOg0KICAgIFNuaXBwZXRPcGVyYW5kIG1fbGVmdE9w
ZXJhbmQ7DQogICAgU25pcHBldE9wZXJhbmQgbV9yaWdodE9wZXJhbmQ7DQogICAgSlNWYWx1ZVJl
Z3MgbV9yZXN1bHQ7DQogICAgSlNWYWx1ZVJlZ3MgbV9sZWZ0Ow0KICAgIEpTVmFsdWVSZWdzIG1f
cmlnaHQ7DQogICAgR1BSUmVnIG1fc2NyYXRjaEdQUjsNCiAgICBib29sIG1fZGlkRW1pdEZhc3RQ
YXRoIHsgZmFsc2UgfTsNCg0KICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9lbmRKdW1wTGlz
dDsNCiAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fc2xvd1BhdGhKdW1wTGlzdDsNCn07DQoN
Cn0gDQoNCiNsaW5lIDY5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGppdFxcSklUQml0QmluYXJ5T3BHZW5lcmF0b3IuaCINCiNsaW5lIDMxICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklUUmln
aHRTaGlmdEdlbmVyYXRvci5oIg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSklUUmlnaHRT
aGlmdEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCaXRCaW5hcnlPcEdlbmVyYXRvciB7DQpwdWJsaWM6
DQogICAgZW51bSBTaGlmdFR5cGUgew0KICAgICAgICBTaWduZWRTaGlmdCwNCiAgICAgICAgVW5z
aWduZWRTaGlmdA0KICAgIH07DQoNCiAgICBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yKGNvbnN0IFNu
aXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3Bl
cmFuZCwNCiAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1Zh
bHVlUmVncyByaWdodCwNCiAgICAgICAgRlBSUmVnIGxlZnRGUFIsIEdQUlJlZyBzY3JhdGNoR1BS
LCBGUFJSZWcgc2NyYXRjaEZQUiwgU2hpZnRUeXBlIHR5cGUgPSBTaWduZWRTaGlmdCkNCiAgICAg
ICAgOiBKSVRCaXRCaW5hcnlPcEdlbmVyYXRvcihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCBy
ZXN1bHQsIGxlZnQsIHJpZ2h0LCBzY3JhdGNoR1BSKQ0KICAgICAgICAsIG1fc2hpZnRUeXBlKHR5
cGUpDQogICAgICAgICwgbV9sZWZ0RlBSKGxlZnRGUFIpDQogICAgICAgICwgbV9zY3JhdGNoRlBS
KHNjcmF0Y2hGUFIpDQogICAgeyB9DQoNCiAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJik7DQoNCnByaXZhdGU6DQogICAgU2hpZnRUeXBlIG1fc2hpZnRUeXBlOw0KICAgIEZQ
UlJlZyBtX2xlZnRGUFI7DQogICAgRlBSUmVnIG1fc2NyYXRjaEZQUjsNCn07DQoNCn0gDQoNCiNs
aW5lIDYxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XGppdFxcSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oIg0KI2xpbmUgNDcgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCiNsaW5lIDEg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxK
U0ludGVyZmFjZUpJVC5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2Ug
SlNDIHsNCiAgICBjbGFzcyBKU0ludGVyZmFjZUpJVCA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMsIHB1
YmxpYyBHUFJJbmZvLCBwdWJsaWMgRlBSSW5mbyB7DQogICAgcHVibGljOg0KDQogICAgICAgIEpT
SW50ZXJmYWNlSklUKFZNKiB2bSA9IG51bGxwdHIsIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVs
bHB0cikNCiAgICAgICAgICAgIDogQ0NhbGxIZWxwZXJzKGNvZGVCbG9jaykNCiAgICAgICAgICAg
ICwgbV92bSh2bSkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgaW5saW5lIEp1bXAg
ZW1pdExvYWRKU0NlbGwoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3RlcklEIHBheWxvYWQpOw0KICAg
ICAgICBpbmxpbmUgSnVtcCBlbWl0TG9hZEludDMyKFZpcnR1YWxSZWdpc3RlciwgUmVnaXN0ZXJJ
RCBkc3QpOw0KICAgICAgICBpbmxpbmUgSnVtcCBlbWl0TG9hZERvdWJsZShWaXJ0dWFsUmVnaXN0
ZXIsIEZQUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7DQoNCg0KDQojbGluZSA1
NSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRc
XEpTSW50ZXJmYWNlSklULmgiDQoNCiAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihWaXJ0dWFsUmVnaXN0ZXIgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQg
ZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsNCiAgICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJh
bWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBWaXJ0dWFsUmVnaXN0ZXIgZW50cnkpOw0KICAgICAg
ICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgVmlydHVhbFJlZ2lz
dGVyIGVudHJ5KTsNCiAgICAgICAgdm9pZCBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJl
Z2lzdGVySUQgZnJvbSwgVmlydHVhbFJlZ2lzdGVyIGVudHJ5KTsNCg0KICAgICAgICBWTSogdm0o
KSBjb25zdCB7IHJldHVybiBtX3ZtOyB9DQoNCiAgICAgICAgVk0qIG1fdm07DQogICAgfTsNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEwMiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2Vc
XEphdmFTY3JpcHRDb3JlXFxqaXRcXEpTSW50ZXJmYWNlSklULmgiDQoNCg0KICAgIGlubGluZSBK
U0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRKU0NlbGwoVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCBkc3QpDQogICAgew0KICAgICAg
ICBsb2FkNjQoYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBkc3QpOw0KICAgICAgICByZXR1
cm4gYnJhbmNoSWZOb3RDZWxsKGRzdCk7DQogICAgfQ0KICAgIA0KICAgIGlubGluZSBKU0ludGVy
ZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRJbnQzMihWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyLCBSZWdpc3RlcklEIGRzdCkNCiAgICB7DQogICAgICAgIGxvYWQ2
NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGRzdCk7DQogICAgICAgIEp1bXAgbm90SW50
MzIgPSBicmFuY2hJZk5vdEludDMyKGRzdCk7DQogICAgICAgIHplcm9FeHRlbmQzMlRvV29yZChk
c3QsIGRzdCk7DQogICAgICAgIHJldHVybiBub3RJbnQzMjsNCiAgICB9DQoNCiAgICBpbmxpbmUg
SlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIsIEZQUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQg
c2NyYXRjaCkNCiAgICB7DQogICAgICAgIGxvYWQ2NChhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHNjcmF0Y2gpOw0KICAgICAgICBKdW1wIG5vdE51bWJlciA9IGJyYW5jaElmTm90TnVtYmVy
KHNjcmF0Y2gpOw0KICAgICAgICBKdW1wIG5vdEludCA9IGJyYW5jaElmTm90SW50MzIoc2NyYXRj
aCk7DQogICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHNjcmF0Y2gsIGRzdCk7DQogICAgICAg
IEp1bXAgZG9uZSA9IGp1bXAoKTsNCiAgICAgICAgbm90SW50LmxpbmsodGhpcyk7DQogICAgICAg
IHVuYm94RG91YmxlKHNjcmF0Y2gsIHNjcmF0Y2gsIGRzdCk7DQogICAgICAgIGRvbmUubGluayh0
aGlzKTsNCiAgICAgICAgcmV0dXJuIG5vdE51bWJlcjsNCiAgICB9DQojbGluZSAxMzEgIkY6XFxn
aXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKU0ludGVy
ZmFjZUpJVC5oIg0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihWaXJ0dWFsUmVnaXN0ZXIgZW50cnksIFJlZ2lzdGVy
SUQgdG8sIFJlZ2lzdGVySUQgZnJvbSkNCiAgICB7DQogICAgICAgIGxvYWRQdHIoQWRkcmVzcyhm
cm9tLCBlbnRyeS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7DQogICAgfQ0KDQog
ICAgX19mb3JjZWlubGluZSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBWaXJ0dWFsUmVnaXN0ZXIgZW50cnkpDQogICAgew0KDQoN
CiNsaW5lIDE0MiAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxqaXRcXEpTSW50ZXJmYWNlSklULmgiDQogICAgICAgIHN0b3JlNjQoZnJvbSwgYWRkcmVz
c0ZvcihlbnRyeSkpOw0KI2xpbmUgMTQ0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSlNJbnRlcmZhY2VKSVQuaCINCiAgICB9DQoNCiAgICBf
X2ZvcmNlaW5saW5lIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRl
cih2b2lkKiB2YWx1ZSwgVmlydHVhbFJlZ2lzdGVyIGVudHJ5KQ0KICAgIHsNCiAgICAgICAgc3Rv
cmVQdHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIGFkZHJlc3NGb3IoZW50cnkpKTsNCiAgICB9DQoN
CiAgICBfX2ZvcmNlaW5saW5lIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxs
RnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBWaXJ0dWFsUmVnaXN0ZXIgZW50cnkpDQogICAg
ew0KDQoNCg0KI2xpbmUgMTU3ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGppdFxcSlNJbnRlcmZhY2VKSVQuaCINCiAgICAgICAgc3RvcmU2NChmcm9t
LCBhZGRyZXNzRm9yKGVudHJ5KSk7DQojbGluZSAxNTkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKU0ludGVyZmFjZUpJVC5oIg0KICAgIH0N
Cg0KfSANCg0KI2xpbmUgMTY0ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2
YVNjcmlwdENvcmVcXGppdFxcSlNJbnRlcmZhY2VKSVQuaCINCiNsaW5lIDQ4ICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklULmgiDQojbGlu
ZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGpp
dFxcUENUb0NvZGVPcmlnaW5NYXAuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCg0KDQoNCg0KI2xpbmUgNDIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxQQ1RvQ29kZU9yaWdpbk1hcC5oIg0KDQpjbGFzcyBM
aW5rQnVmZmVyOw0KY2xhc3MgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyOw0KDQpjbGFzcyBQQ1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXIgew0KICAgIHB1YmxpYzogdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgdm9pZCogcCkgeyByZXR1cm4gcDsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qs
IHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7
IHJldHVybiA6OldURjo6ZmFzdE1hbGxvYyhzaXplKTsgfSB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2
b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGVbXSh2b2lkKiBwKSB7IDo6V1RGOjpmYXN0RnJlZShwKTsgfSB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lkKiBsb2NhdGlvbikgeyAoKHZvaWQpMCk7IHJl
dHVybiBsb2NhdGlvbjsgfSB1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBpbnQ7IHByaXZhdGU6
IHVzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQ7
DQogICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKGNvbnN0IFBDVG9Db2RlT3JpZ2luTWFwQnVp
bGRlciYpID0gZGVsZXRlOyBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXImIG9wZXJhdG9yPShjb25z
dCBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXImKSA9IGRlbGV0ZTs7DQogICAgZnJpZW5kIGNsYXNz
IFBDVG9Db2RlT3JpZ2luTWFwOw0KDQpwdWJsaWM6DQogICAgUENUb0NvZGVPcmlnaW5NYXBCdWls
ZGVyKFZNJik7DQogICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKFBDVG9Db2RlT3JpZ2luTWFw
QnVpbGRlciYmIG90aGVyKTsNCg0KDQoNCiNsaW5lIDU4ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcUENUb0NvZGVPcmlnaW5NYXAuaCINCg0K
ICAgIHZvaWQgYXBwZW5kSXRlbShNYWNyb0Fzc2VtYmxlcjo6TGFiZWwsIGNvbnN0IENvZGVPcmln
aW4mKTsNCiAgICBzdGF0aWMgQ29kZU9yaWdpbiBkZWZhdWx0Q29kZU9yaWdpbigpIHsgcmV0dXJu
IENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSk7IH0NCg0KICAgIGJvb2wgZGlkQnVpbGRNYXBw
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRCdWlsZE1hcHBpbmc7IH0NCg0KcHJpdmF0ZToN
Cg0KICAgIHN0cnVjdCBDb2RlUmFuZ2Ugew0KICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
c3RhcnQ7DQogICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBlbmQ7DQogICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbjsNCiAgICB9Ow0KDQogICAgVk0mIG1fdm07DQogICAgVmVjdG9yPENv
ZGVSYW5nZT4gbV9jb2RlUmFuZ2VzOw0KICAgIGJvb2wgbV9zaG91bGRCdWlsZE1hcHBpbmc7DQp9
Ow0KDQoNCmNsYXNzIFBDVG9Db2RlT3JpZ2luTWFwIHsNCiAgICBwdWJsaWM6IHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3QsIHZvaWQqIHApIHsgcmV0dXJuIHA7IH0gdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkKiBwKSB7IHJldHVybiBwOyB9IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gOjpXVEY6OmZhc3RNYWxsb2Moc2l6ZSk7IH0gdm9pZCBvcGVyYXRv
ciBkZWxldGUodm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9pZCogb3BlcmF0b3Ig
bmV3W10oc2l6ZV90IHNpemUpIHsgcmV0dXJuIDo6V1RGOjpmYXN0TWFsbG9jKHNpemUpOyB9IHZv
aWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgeyA6OldURjo6ZmFzdEZyZWUocCk7IH0gdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHsgKCh2
b2lkKTApOyByZXR1cm4gbG9jYXRpb247IH0gdXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50
OyBwcml2YXRlOiB1c2luZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01h
Y3JvID0gaW50Ow0KICAgIFBDVG9Db2RlT3JpZ2luTWFwKGNvbnN0IFBDVG9Db2RlT3JpZ2luTWFw
JikgPSBkZWxldGU7IFBDVG9Db2RlT3JpZ2luTWFwJiBvcGVyYXRvcj0oY29uc3QgUENUb0NvZGVP
cmlnaW5NYXAmKSA9IGRlbGV0ZTs7DQpwdWJsaWM6DQogICAgUENUb0NvZGVPcmlnaW5NYXAoUENU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyJiYsIExpbmtCdWZmZXImKTsNCiAgICB+UENUb0NvZGVPcmln
aW5NYXAoKTsNCg0KICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lkKiBwYykgY29u
c3Q7DQoNCiAgICBkb3VibGUgbWVtb3J5U2l6ZSgpOw0KDQpwcml2YXRlOg0KICAgIHNpemVfdCBt
X2NvbXByZXNzZWRQQ0J1ZmZlclNpemU7DQogICAgc2l6ZV90IG1fY29tcHJlc3NlZENvZGVPcmln
aW5zU2l6ZTsNCiAgICB1aW50OF90KiBtX2NvbXByZXNzZWRQQ3M7DQogICAgdWludDhfdCogbV9j
b21wcmVzc2VkQ29kZU9yaWdpbnM7DQogICAgdWludHB0cl90IG1fcGNSYW5nZVN0YXJ0Ow0KICAg
IHVpbnRwdHJfdCBtX3BjUmFuZ2VFbmQ7DQp9Ow0KDQp9IA0KDQojbGluZSAxMDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxQQ1RvQ29kZU9y
aWdpbk1hcC5oIg0KI2xpbmUgNDkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KICAgIGVu
dW0gT3Bjb2RlSUQgOiB1bnNpZ25lZDsNCg0KICAgIGNsYXNzIEFycmF5QWxsb2NhdGlvblByb2Zp
bGU7DQogICAgY2xhc3MgQ2FsbExpbmtJbmZvOw0KICAgIGNsYXNzIENvZGVCbG9jazsNCiAgICBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7DQogICAgY2xhc3MgSklUOw0KICAgIGNsYXNzIElkZW50
aWZpZXI7DQogICAgY2xhc3MgSW50ZXJwcmV0ZXI7DQogICAgY2xhc3MgQmxvY2tEaXJlY3Rvcnk7
DQogICAgY2xhc3MgUmVnaXN0ZXI7DQogICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47DQogICAgY2xh
c3MgU3RydWN0dXJlU3R1YkluZm87DQoNCiAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247DQogICAgc3Ry
dWN0IE9wZXJhbmRUeXBlczsNCiAgICBzdHJ1Y3QgU2ltcGxlSnVtcFRhYmxlOw0KICAgIHN0cnVj
dCBTdHJpbmdKdW1wVGFibGU7DQoNCiAgICBzdHJ1Y3QgT3BQdXRCeVZhbDsNCiAgICBzdHJ1Y3Qg
T3BQdXRCeVZhbERpcmVjdDsNCiAgICBzdHJ1Y3QgT3BQdXRUb1Njb3BlOw0KDQogICAgc3RydWN0
IENhbGxSZWNvcmQgew0KICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmcm9tOw0KICAgICAg
ICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7DQogICAgICAgIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4gY2FsbGVlOw0KDQogICAgICAgIENhbGxSZWNvcmQoKQ0KICAgICAgICB7DQog
ICAgICAgIH0NCg0KICAgICAgICBDYWxsUmVjb3JkKE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZyb20s
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PiBjYWxsZWUpDQogICAgICAgICAgICA6IGZyb20oZnJvbSkNCiAgICAgICAgICAgICwgYnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KQ0KICAgICAgICAgICAgLCBjYWxsZWUoY2FsbGVlKQ0KICAg
ICAgICB7DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgc3RydWN0IEp1bXBUYWJsZSB7DQogICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZyb207DQogICAgICAgIHVuc2lnbmVkIHRvQnl0ZWNv
ZGVPZmZzZXQ7DQoNCiAgICAgICAgSnVtcFRhYmxlKE1hY3JvQXNzZW1ibGVyOjpKdW1wIGYsIHVu
c2lnbmVkIHQpDQogICAgICAgICAgICA6IGZyb20oZikNCiAgICAgICAgICAgICwgdG9CeXRlY29k
ZU9mZnNldCh0KQ0KICAgICAgICB7DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgc3RydWN0IFNs
b3dDYXNlRW50cnkgew0KICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmcm9tOw0KICAgICAg
ICBCeXRlY29kZUluZGV4IHRvOw0KICAgICAgICANCiAgICAgICAgU2xvd0Nhc2VFbnRyeShNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBmLCBCeXRlY29kZUluZGV4IHQpDQogICAgICAgICAgICA6IGZyb20o
ZikNCiAgICAgICAgICAgICwgdG8odCkNCiAgICAgICAgew0KICAgICAgICB9DQogICAgfTsNCg0K
ICAgIHN0cnVjdCBTd2l0Y2hSZWNvcmQgew0KICAgICAgICBlbnVtIFR5cGUgew0KICAgICAgICAg
ICAgSW1tZWRpYXRlLA0KICAgICAgICAgICAgQ2hhcmFjdGVyLA0KICAgICAgICAgICAgU3RyaW5n
DQogICAgICAgIH07DQoNCiAgICAgICAgVHlwZSB0eXBlOw0KDQogICAgICAgIHVuaW9uIHsNCiAg
ICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSogc2ltcGxlSnVtcFRhYmxlOw0KICAgICAgICAgICAg
U3RyaW5nSnVtcFRhYmxlKiBzdHJpbmdKdW1wVGFibGU7DQogICAgICAgIH0ganVtcFRhYmxlOw0K
DQogICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsNCiAgICAgICAgdW5zaWduZWQg
ZGVmYXVsdE9mZnNldDsNCg0KICAgICAgICBTd2l0Y2hSZWNvcmQoU2ltcGxlSnVtcFRhYmxlKiBq
dW1wVGFibGUsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgZGVmYXVsdE9m
ZnNldCwgVHlwZSB0eXBlKQ0KICAgICAgICAgICAgOiB0eXBlKHR5cGUpDQogICAgICAgICAgICAs
IGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkNCiAgICAgICAgICAgICwgZGVmYXVsdE9mZnNl
dChkZWZhdWx0T2Zmc2V0KQ0KICAgICAgICB7DQogICAgICAgICAgICB0aGlzLT5qdW1wVGFibGUu
c2ltcGxlSnVtcFRhYmxlID0ganVtcFRhYmxlOw0KICAgICAgICB9DQoNCiAgICAgICAgU3dpdGNo
UmVjb3JkKFN0cmluZ0p1bXBUYWJsZSoganVtcFRhYmxlLCBCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgsIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQpDQogICAgICAgICAgICA6IHR5cGUoU3RyaW5n
KQ0KICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpDQogICAgICAgICAg
ICAsIGRlZmF1bHRPZmZzZXQoZGVmYXVsdE9mZnNldCkNCiAgICAgICAgew0KICAgICAgICAgICAg
dGhpcy0+anVtcFRhYmxlLnN0cmluZ0p1bXBUYWJsZSA9IGp1bXBUYWJsZTsNCiAgICAgICAgfQ0K
ICAgIH07DQoNCiAgICBzdHJ1Y3QgQnlWYWxDb21waWxhdGlvbkluZm8gew0KICAgICAgICBCeVZh
bENvbXBpbGF0aW9uSW5mbygpIHsgfQ0KICAgICAgICANCiAgICAgICAgQnlWYWxDb21waWxhdGlv
bkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNyb0Fzc2VtYmxl
cjo6UGF0Y2hhYmxlSnVtcCBiYWRUeXBlSnVtcCwgSklUQXJyYXlNb2RlIGFycmF5TW9kZSwgQXJy
YXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpDQogICAgICAgICAgICA6
IGJ5VmFsSW5mbyhieVZhbEluZm8pDQogICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCkNCiAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkNCiAgICAg
ICAgICAgICwgYmFkVHlwZUp1bXAoYmFkVHlwZUp1bXApDQogICAgICAgICAgICAsIGFycmF5TW9k
ZShhcnJheU1vZGUpDQogICAgICAgICAgICAsIGFycmF5UHJvZmlsZShhcnJheVByb2ZpbGUpDQog
ICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdldCkNCiAgICAgICAgICAgICwgbmV4dEhv
dFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQog
ICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOw0KICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXg7DQogICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdEluZGV4
SnVtcDsNCiAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgYmFkVHlwZUp1bXA7
DQogICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGU7DQogICAgICAgIEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlOw0KICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldDsN
CiAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFyZ2V0Ow0KICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc2xvd1BhdGhUYXJnZXQ7DQogICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIHJldHVybkFkZHJlc3M7DQogICAgfTsNCg0KICAgIHN0cnVjdCBDYWxsQ29t
cGlsYXRpb25JbmZvIHsNCiAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBob3RQ
YXRoQmVnaW47DQogICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGhvdFBhdGhPdGhlcjsNCiAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbFJldHVybkxvY2F0aW9uOw0KICAgICAgICBD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsNCiAgICB9Ow0KDQogICAgdm9pZCBjdGlQYXRjaENh
bGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0ciwgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7DQoNCiAgICBjbGFzcyAgSklUIDogcHJpdmF0ZSBK
U0ludGVyZmFjZUpJVCB7DQogICAgICAgIGZyaWVuZCBjbGFzcyBKSVRTbG93UGF0aENhbGw7DQog
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVRTdHViQ2FsbDsNCg0KICAgICAgICB1c2luZyBNYWNyb0Fz
c2VtYmxlcjo6SnVtcDsNCiAgICAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Ow0K
ICAgICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlcjo6TGFiZWw7DQoNCiAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50cHRyX3QgcGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSA9IHVudXNlZFBv
aW50ZXI7DQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHBhdGNoR2V0QnlJZERlZmF1bHRP
ZmZzZXQgPSAwOw0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHBhdGNoUHV0QnlJZERlZmF1bHRPZmZzZXQgPSAyNTY7DQoNCiAgICBwdWJsaWM6DQogICAg
ICAgIEpJVChWTSYsIENvZGVCbG9jayogPSBudWxscHRyLCBCeXRlY29kZUluZGV4IGxvb3BPU1JF
bnRyeUJ5dGVjb2RlT2Zmc2V0ID0gQnl0ZWNvZGVJbmRleCgwKSk7DQogICAgICAgIH5KSVQoKTsN
Cg0KICAgICAgICBWTSYgdm0oKSB7IHJldHVybiAqSlNJbnRlcmZhY2VKSVQ6OnZtKCk7IH0NCg0K
ICAgICAgICB2b2lkIGNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCk7
DQogICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IGxpbmsoKTsNCg0KICAgICAgICB2b2lkIGRvTWFp
blRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpOw0KICAgICAgICANCiAgICAgICAgc3Rh
dGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGUoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlT2Zm
c2V0ID0gQnl0ZWNvZGVJbmRleCgwKSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIEpJ
VCh2bSwgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCkucHJpdmF0ZUNvbXBpbGUoZWZmb3J0KTsN
CiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5VmFs
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBKSVQg
aml0KHZtLCBjb2RlQmxvY2spOw0KICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRleCA9IGJ5
VmFsSW5mby0+Ynl0ZWNvZGVJbmRleDsNCiAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZVB1
dEJ5VmFsPE9wUHV0QnlWYWw+KGxvY2tlciwgYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBhcnJh
eU1vZGUpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxl
RGlyZWN0UHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUpDQogICAgICAgIHsNCiAg
ICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7DQogICAgICAgICAgICBqaXQubV9ieXRl
Y29kZUluZGV4ID0gYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4Ow0KICAgICAgICAgICAgaml0LnBy
aXZhdGVDb21waWxlUHV0QnlWYWw8T3BQdXRCeVZhbERpcmVjdD4obG9ja2VyLCBieVZhbEluZm8s
IHJldHVybkFkZHJlc3MsIGFycmF5TW9kZSk7DQogICAgICAgIH0NCg0KICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4NCiAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVB1dEJ5VmFsV2l0aENh
Y2hlZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVh
YmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIEpJVCBq
aXQodm0sIGNvZGVCbG9jayk7DQogICAgICAgICAgICBqaXQubV9ieXRlY29kZUluZGV4ID0gYnlW
YWxJbmZvLT5ieXRlY29kZUluZGV4Ow0KICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0
QnlWYWxXaXRoQ2FjaGVkSWQ8T3A+KGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywgcHV0S2luZCwg
cHJvcGVydHlOYW1lKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVI
YXNJbmRleGVkUHJvcGVydHkoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2Rl
IGFycmF5TW9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2Nr
KTsNCiAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlSW5kZXggPSBieVZhbEluZm8tPmJ5dGVjb2Rl
SW5kZXg7DQogICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHko
YnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBhcnJheU1vZGUpOw0KICAgICAgICB9DQoNCiAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqKTsNCiAg
ICAgICAgc3RhdGljIGludCBzdGFja1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKik7DQoNCiAg
ICAgICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0YXRpYyBIYXNoTWFwPENTdHJpbmcsIFNlY29u
ZHM+IGNvbXBpbGVUaW1lU3RhdHMoKTsNCiAgICAgICAgX19kZWNsc3BlYyhkbGxleHBvcnQpIHN0
YXRpYyBTZWNvbmRzIHRvdGFsQ29tcGlsZVRpbWUoKTsNCg0KICAgIHByaXZhdGU6DQogICAgICAg
IHZvaWQgcHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpOw0KICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlTGlua1Bhc3MoKTsNCiAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOw0K
ICAgICAgICBDb21waWxhdGlvblJlc3VsdCBwcml2YXRlQ29tcGlsZShKSVRDb21waWxhdGlvbkVm
Zm9ydCk7DQogICAgICAgIA0KICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlWYWwoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklU
QXJyYXlNb2RlKTsNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQogICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbElu
Zm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBKSVRBcnJheU1vZGUpOw0KICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4NCiAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5VmFsV2l0aENhY2hl
ZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50
aWZpZXIpOw0KDQogICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHko
QnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsNCg0KICAgICAgICB2
b2lkIHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpOw0KDQogICAgICAgIA0KICAgICAgICBDYWxsIGFwcGVuZENhbGwoY29uc3Qg
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikNCiAgICAgICAgew0KICAgICAg
ICAgICAgQ2FsbCBmdW5jdGlvbkNhbGwgPSBjYWxsKE9wZXJhdGlvblB0clRhZyk7DQogICAgICAg
ICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgbV9ieXRlY29kZUlu
ZGV4LCBmdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpKTsNCiAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbkNhbGw7DQogICAgICAgIH0NCg0KDQogICAgICAgIENhbGwgYXBwZW5k
Q2FsbFdpdGhTbG93UGF0aFJldHVyblR5cGUoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPiBmdW5jdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAgQ2FsbCBmdW5jdGlvbkNhbGwg
PSBjYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShPcGVyYXRpb25QdHJUYWcpOw0KICAgICAgICAg
ICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChmdW5jdGlvbkNhbGwsIG1fYnl0ZWNvZGVJbmRl
eCwgZnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKSk7DQogICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25DYWxsOw0KICAgICAgICB9DQojbGluZSAyODIgIkY6XFxnaXRQXFxXZWJL
aXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCg0KICAgICAg
ICB2b2lkIGV4Y2VwdGlvbkNoZWNrKEp1bXAganVtcFRvSGFuZGxlcikNCiAgICAgICAgew0KICAg
ICAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGp1bXBUb0hhbmRsZXIpOw0KICAgICAg
ICB9DQoNCiAgICAgICAgdm9pZCBleGNlcHRpb25DaGVjaygpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOw0K
ICAgICAgICB9DQoNCiAgICAgICAgdm9pZCBleGNlcHRpb25DaGVja1dpdGhDYWxsRnJhbWVSb2xs
YmFjaygpDQogICAgICAgIHsNCiAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzV2l0aENhbGxG
cmFtZVJvbGxiYWNrLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2sodm0oKSkpOw0KICAgICAgICB9
DQoNCiAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCk7DQoNCiAg
ICAgICAgdm9pZCBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOw0KICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChKdW1wKTsNCg0KICAgICAgICB2b2lkIGFkZFNsb3dD
YXNlKEp1bXApOw0KICAgICAgICB2b2lkIGFkZFNsb3dDYXNlKGNvbnN0IEp1bXBMaXN0Jik7DQog
ICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoKTsNCiAgICAgICAgdm9pZCBhZGRKdW1wKEp1bXAsIGlu
dCk7DQogICAgICAgIHZvaWQgYWRkSnVtcChjb25zdCBKdW1wTGlzdCYsIGludCk7DQogICAgICAg
IHZvaWQgZW1pdEp1bXBTbG93VG9Ib3QoSnVtcCwgaW50KTsNCg0KICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4NCiAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9u
KiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOw0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4NCiAgICAgICAgdm9pZCBjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgY2FsbExpbmtJ
bmZvSW5kZXgpOw0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4NCiAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDwNCiAgICAgICAgICAgIE9wOjpvcGNvZGVJRCAhPSBvcF9jYWxsX3ZhcmFyZ3Mg
JiYgT3A6Om9wY29kZUlEICE9IG9wX2NvbnN0cnVjdF92YXJhcmdzDQogICAgICAgICAgICAmJiBP
cDo6b3Bjb2RlSUQgIT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgJiYgT3A6Om9wY29kZUlEICE9IG9w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cw0KICAgICAgICAsIHZvaWQ+IGNvbXBpbGVTZXR1
cEZyYW1lKGNvbnN0IE9wJiwgQ2FsbExpbmtJbmZvKik7DQoNCiAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+DQogICAgICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8DQogICAgICAgICAgICBPcDo6b3Bj
b2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzIHx8IE9wOjpvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3Rf
dmFyYXJncw0KICAgICAgICAgICAgfHwgT3A6Om9wY29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJh
cmdzIHx8IE9wOjpvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMNCiAg
ICAgICAgLCB2b2lkPiBjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYsIENhbGxMaW5rSW5mbyop
Ow0KDQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPg0KICAgICAgICBib29sIGNvbXBpbGVU
YWlsQ2FsbChjb25zdCBPcCYsIENhbGxMaW5rSW5mbyosIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0lu
ZGV4KTsNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQogICAgICAgIGJvb2wgY29tcGls
ZUNhbGxFdmFsKGNvbnN0IE9wJik7DQogICAgICAgIHZvaWQgY29tcGlsZUNhbGxFdmFsU2xvd0Nh
c2UoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPg0KICAgICAgICB2b2lkIGVtaXRQdXRDYWxs
UmVzdWx0KGNvbnN0IE9wJik7DQoNCiAgICAgICAgZW51bSBjbGFzcyBDb21waWxlT3BTdHJpY3RF
cVR5cGUgeyBTdHJpY3RFcSwgTlN0cmljdEVxIH07DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPg0KICAgICAgICB2b2lkIGNvbXBpbGVPcFN0cmljdEVxKGNvbnN0IEluc3RydWN0aW9uKiwg
Q29tcGlsZU9wU3RyaWN0RXFUeXBlKTsNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQog
ICAgICAgIHZvaWQgY29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiwgQ29t
cGlsZU9wU3RyaWN0RXFUeXBlKTsNCiAgICAgICAgZW51bSBjbGFzcyBDb21waWxlT3BFcVR5cGUg
eyBFcSwgTkVxIH07DQogICAgICAgIHZvaWQgY29tcGlsZU9wRXFKdW1wU2xvdyhWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgQ29tcGlsZU9wRXFUeXBlLCBpbnQganVtcFRhcmdldCk7
DQogICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnREb3VibGUoVmlydHVhbFJlZ2lzdGVyKTsN
CiAgICAgICAgDQogICAgICAgIGVudW0gV3JpdGVCYXJyaWVyTW9kZSB7IFVuY29uZGl0aW9uYWxX
cml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2UsIFNob3VsZEZpbHRlclZhbHVlLCBTaG91bGRG
aWx0ZXJCYXNlQW5kVmFsdWUgfTsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICB2b2lkIGVt
aXRXcml0ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlKTsN
CiAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKFZpcnR1YWxSZWdpc3RlciBvd25lciwgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlKTsNCiAgICAgICAgdm9pZCBlbWl0
V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV3JpdGVC
YXJyaWVyTW9kZSk7DQogICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVy
KTsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShWYWx1ZVByb2ZpbGUmKTsNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWV0YWRhdGE+
IHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShNZXRhZGF0YSYpOw0KICAgICAgICB2b2lkIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGVJZlByb2ZpbGVkT3Bjb2RlKC4uLik7DQogICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPg0KICAgICAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxk
ZWNsdHlwZShPcDo6TWV0YWRhdGE6Om1fcHJvZmlsZSksIFZhbHVlUHJvZmlsZT46OnZhbHVlLCB2
b2lkPg0KICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlSWZQcm9maWxlZE9wY29kZShPcCBi
eXRlY29kZSk7DQoNCiAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwo
UmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgQXJyYXlQcm9maWxlKik7
DQogICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJy
YXlQcm9maWxlKik7DQogICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3Bl
Y2lhbENhc2UoQXJyYXlQcm9maWxlKik7DQogICAgICAgIA0KICAgICAgICBKSVRBcnJheU1vZGUg
Y2hvb3NlQXJyYXlNb2RlKEFycmF5UHJvZmlsZSopOw0KICAgICAgICANCiAgICAgICAgDQogICAg
ICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIEp1bXBMaXN0IGVtaXRJbnQzMkxvYWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKSB7
IHJldHVybiBlbWl0Q29udGlndW91c0xvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUsIEludDMyU2hh
cGUpOyB9DQogICAgICAgIEp1bXBMaXN0IGVtaXREb3VibGVMb2FkKGNvbnN0IEluc3RydWN0aW9u
KiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSk7DQogICAgICAgIEp1bXBMaXN0IGVtaXRDb250aWd1
b3VzTG9hZChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIEluZGV4
aW5nVHlwZSBleHBlY3RlZFNoYXBlID0gQ29udGlndW91c1NoYXBlKTsNCiAgICAgICAgSnVtcExp
c3QgZW1pdEFycmF5U3RvcmFnZUxvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlKTsNCiAgICAgICAgSnVtcExpc3QgZW1pdExvYWRGb3JBcnJheU1vZGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBKSVRBcnJheU1vZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpOw0KDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4NCiAgICAgICAgSnVtcExpc3QgZW1pdEludDMyUHV0QnlWYWwoT3AgYnl0ZWNv
ZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVy
biBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChieXRlY29kZSwgYmFkVHlwZSwgSW50MzJT
aGFwZSk7DQogICAgICAgIH0NCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQogICAgICAg
IEp1bXBMaXN0IGVtaXREb3VibGVQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGVtaXRHZW5lcmljQ29udGln
dW91c1B1dEJ5VmFsKGJ5dGVjb2RlLCBiYWRUeXBlLCBEb3VibGVTaGFwZSk7DQogICAgICAgIH0N
CiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQogICAgICAgIEp1bXBMaXN0IGVtaXRDb250
aWd1b3VzUHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIHJldHVybiBlbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChi
eXRlY29kZSwgYmFkVHlwZSk7DQogICAgICAgIH0NCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3A+DQogICAgICAgIEp1bXBMaXN0IGVtaXRHZW5lcmljQ29udGlndW91c1B1dEJ5VmFsKE9wLCBQ
YXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSA9IENvbnRp
Z3VvdXNTaGFwZSk7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPg0KICAgICAgICBKdW1w
TGlzdCBlbWl0QXJyYXlTdG9yYWdlUHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUp
Ow0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4NCiAgICAgICAgSnVtcExpc3QgZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJh
eVR5cGUpOw0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4NCiAgICAgICAgSnVtcExpc3Qg
ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBU
eXBlZEFycmF5VHlwZSk7DQoNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQogICAgICAg
IEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsNCg0KICAgICAgICANCiAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+DQogICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZChPcCk7DQoNCiAgICAgICAgDQogICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmll
ckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsNCg0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4NCiAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQoT3AsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMs
IEp1bXBMaXN0JiBzbG93Q2FzZXMpOw0KDQogICAgICAgIGVudW0gRmluYWxPYmplY3RNb2RlIHsg
TWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9Ow0KDQogICAgICAgIHZvaWQgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgc3JjLCBKU1ZhbHVlUmVncyBkc3QpOw0KICAgICAg
ICB2b2lkIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGRzdCwgSlNWYWx1
ZVJlZ3Mgc3JjKTsNCg0KICAgICAgICBpbnQzMl90IGdldE9wZXJhbmRDb25zdGFudEludChWaXJ0
dWFsUmVnaXN0ZXIgc3JjKTsNCiAgICAgICAgZG91YmxlIGdldE9wZXJhbmRDb25zdGFudERvdWJs
ZShWaXJ0dWFsUmVnaXN0ZXIgc3JjKTsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNsaW5lIDQ1NSAiRjpcXGdpdFBcXFdlYktpdFxc
d2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVC5oIg0KICAgICAgICB2b2lk
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHNyYywgUmVnaXN0ZXJJRCBk
c3QpOw0KICAgICAgICB2b2lkIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKFZpcnR1YWxSZWdpc3Rl
ciBzcmMxLCBSZWdpc3RlcklEIGRzdDEsIFZpcnR1YWxSZWdpc3RlciBzcmMyLCBSZWdpc3RlcklE
IGRzdDIpOw0KICAgICAgICB2b2lkIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lz
dGVyIGRzdCwgUmVnaXN0ZXJJRCBmcm9tID0gcmVnVDApOw0KICAgICAgICB2b2lkIGVtaXRTdG9y
ZUNlbGwoVmlydHVhbFJlZ2lzdGVyIGRzdCwgUmVnaXN0ZXJJRCBwYXlsb2FkLCBib29sICA9IGZh
bHNlKQ0KICAgICAgICB7DQogICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
cGF5bG9hZCk7DQogICAgICAgIH0NCg0KICAgICAgICBKdW1wIGVtaXRKdW1wSWZCb3RoSlNDZWxs
cyhSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsNCiAgICAgICAgdm9pZCBlbWl0
SnVtcFNsb3dDYXNlSWZKU0NlbGwoUmVnaXN0ZXJJRCk7DQogICAgICAgIHZvaWQgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQpOw0KICAgICAgICB2b2lkIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklELCBWaXJ0dWFsUmVnaXN0ZXIpOw0KICAgICAgICBK
dW1wIGVtaXRKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKTsNCiAgICAgICAgUGF0Y2hhYmxlSnVtcCBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50
KFJlZ2lzdGVySUQpOw0KICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChSZWdp
c3RlcklEKTsNCiAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIoUmVnaXN0
ZXJJRCk7DQogICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KFJlZ2lzdGVySUQs
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7DQoNCiAgICAgICAgdm9pZCBjb21waWxl
R2V0QnlJZEhvdFBhdGgoVmlydHVhbFJlZ2lzdGVyIGJhc2VSZWcsIGNvbnN0IElkZW50aWZpZXIq
KTsNCg0KI2xpbmUgNDc2ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXGppdFxcSklULmgiDQoNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQog
ICAgICAgIHZvaWQgZW1pdF9jb21wYXJlQW5kSnVtcChjb25zdCBJbnN0cnVjdGlvbiosIFJlbGF0
aW9uYWxDb25kaXRpb24pOw0KICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBJbXBsKFZp
cnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIHVuc2lnbmVkIHRhcmdldCwg
UmVsYXRpb25hbENvbmRpdGlvbik7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPg0KICAg
ICAgICB2b2lkIGVtaXRfY29tcGFyZVVuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiwgUmVsYXRp
b25hbENvbmRpdGlvbik7DQogICAgICAgIHZvaWQgZW1pdF9jb21wYXJlVW5zaWduZWRJbXBsKFZp
cnR1YWxSZWdpc3RlciBkc3QsIFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBv
cDIsIFJlbGF0aW9uYWxDb25kaXRpb24pOw0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4N
CiAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXAoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBSZWxhdGlvbmFsQ29uZGl0aW9uKTsNCiAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVVbnNp
Z25lZEFuZEp1bXBJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIs
IHVuc2lnbmVkIHRhcmdldCwgUmVsYXRpb25hbENvbmRpdGlvbik7DQogICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPg0KICAgICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0
IEluc3RydWN0aW9uKiwgRG91YmxlQ29uZGl0aW9uLCBzaXplX3QgKCAqb3BlcmF0aW9uKShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSksIGJvb2wgaW52ZXJ0
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1pdF9j
b21wYXJlQW5kSnVtcFNsb3dJbXBsKFZpcnR1YWxSZWdpc3RlciBvcDEsIFZpcnR1YWxSZWdpc3Rl
ciBvcDIsIHVuc2lnbmVkIHRhcmdldCwgc2l6ZV90IGluc3RydWN0aW9uU2l6ZSwgRG91YmxlQ29u
ZGl0aW9uLCBzaXplX3QgKCAqb3BlcmF0aW9uKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSksIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7DQogICAgICAgIA0KICAgICAgICB2b2lkIGFzc2VydFN0YWNrUG9pbnRlck9m
ZnNldCgpOw0KDQogICAgICAgIHZvaWQgZW1pdF9vcF9hZGQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsN
CiAgICAgICAgdm9pZCBlbWl0X29wX2JpdGFuZChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAg
ICB2b2lkIGVtaXRfb3BfYml0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBl
bWl0X29wX2JpdHhvcihjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bf
Yml0bm90KGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9jYWxsKGNv
bnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGwoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2NhbGxfZXZhbChjb25zdCBJbnN0
cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfY2FsbF92YXJhcmdzKGNvbnN0IEluc3Ry
dWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfdmFyYXJncyhjb25zdCBJ
bnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1
Y3RfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfY2F0
Y2goY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChj
b25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudChjb25zdCBJbnN0
cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfYXJndW1lbnRfY291bnQoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChjb25zdCBJ
bnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEluc3Ry
dWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9pZGVudGl0eV93aXRoX3Byb2ZpbGUoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKGNvbnN0IEluc3Ry
dWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1p
dF9vcF9kZWxfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZGVsX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2Rpdihjb25zdCBJbnN0cnVjdGlv
biopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZW5kKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAg
ICAgIHZvaWQgZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1p
dF9vcF9lcShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZXFfbnVs
bChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfYmVsb3coY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2JlbG93ZXEoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX2RpcmVjdChjb25zdCBJ
bnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJ
bnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9v
Zihjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5z
dGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNl
b2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2Zf
Y3VzdG9tKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9pc19lbXB0
eShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfdHlwZW9mX2lzX3Vu
ZGVmaW5lZChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfaXNfdW5k
ZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29w
X2lzX2Jvb2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2lz
X251bWJlcihjb25zdCBJbnN0cnVjdGlvbiopOw0KDQoNCiNsaW5lIDU0NyAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVC5oIg0KICAgICAg
ICBfX2RlY2xzcGVjKG5vcmV0dXJuKSB2b2lkIGVtaXRfb3BfaXNfYmlnX2ludChjb25zdCBJbnN0
cnVjdGlvbiopOw0KI2xpbmUgNTQ5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXGppdFxcSklULmgiDQogICAgICAgIHZvaWQgZW1pdF9vcF9pc19vYmpl
Y3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2lzX2NlbGxfd2l0
aF90eXBlKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9qZXFfbnVs
bChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfamZhbHNlKGNvbnN0
IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9qbXAoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfbnVsbChjb25zdCBJbnN0cnVjdGlvbiop
Ow0KICAgICAgICB2b2lkIGVtaXRfb3BfanVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IEluc3RydWN0
aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKGNvbnN0IElu
c3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxX3B0cihjb25zdCBJbnN0cnVj
dGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsN
CiAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAg
ICAgdm9pZCBlbWl0X29wX2pncmVhdGVyKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZv
aWQgZW1pdF9vcF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQg
ZW1pdF9vcF9qbmxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29w
X2pubGVzc2VxKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9qbmdy
ZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2puZ3JlYXRl
cmVxKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9qZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2puZXEoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2pzdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiop
Ow0KICAgICAgICB2b2lkIGVtaXRfb3Bfam5zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiopOw0K
ICAgICAgICB2b2lkIGVtaXRfb3BfamJlbG93KGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAg
IHZvaWQgZW1pdF9vcF9qYmVsb3dlcShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lk
IGVtaXRfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29w
X2xvb3BfaGludChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfY2hl
Y2tfdHJhcHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX25vcChj
b25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bfc3VwZXJfc2FtcGxlcl9i
ZWdpbihjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bfc3VwZXJfc2Ft
cGxlcl9lbmQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2xzaGlm
dChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfbW9kKGNvbnN0IElu
c3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9tb3YoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsNCiAgICAgICAgdm9pZCBlbWl0X29wX211bChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAg
ICB2b2lkIGVtaXRfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXEoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX25l
cV9udWxsKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJy
YXkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX25ld19hcnJheV93
aXRoX3NpemUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX25ld19m
dW5jKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19l
eHAoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0
b3JfZnVuYyhjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X2FzeW5jX2Z1bmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0
X29wX25ld19hc3luY19mdW5jX2V4cChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2FzeW5jX2dlbmVyYXRvcl9mdW5jKGNvbnN0IEluc3RydWN0aW9uKik7DQog
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZ2VuZXJhdG9yX2Z1bmNfZXhwKGNvbnN0IElu
c3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3Ry
dWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKGNvbnN0IEluc3RydWN0
aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAg
ICAgICAgdm9pZCBlbWl0X29wX25zdHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVjKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1p
dF9vcF9pbmMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX3Byb2Zp
bGVfdHlwZShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfcHJvZmls
ZV9jb250cm9sX2Zsb3coY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29w
X2dldF9wYXJlbnRfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcCA9IE9wUHV0QnlWYWw+DQogICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX2RpcmVj
dChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRl
cl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dl
dHRlcl9zZXR0ZXJfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9nZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2
b2lkIGVtaXRfb3BfcmV0KGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9v
cF9yc2hpZnQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX3NldF9m
dW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9z
dHJpY3RlcShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bfc3ViKGNv
bnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25z
dCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX2ltbShjb25zdCBJ
bnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bfc3dpdGNoX3N0cmluZyhjb25zdCBJ
bnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKGNv
bnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF90aHJvdyhjb25zdCBJbnN0
cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfdG9fbnVtYmVyKGNvbnN0IEluc3RydWN0
aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9u
Kik7DQogICAgICAgIHZvaWQgZW1pdF9vcF90b19zdHJpbmcoY29uc3QgSW5zdHJ1Y3Rpb24qKTsN
CiAgICAgICAgdm9pZCBlbWl0X29wX3RvX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAg
ICAgICB2b2lkIGVtaXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAg
ICAgIHZvaWQgZW1pdF9vcF91bmV4cGVjdGVkX2xvYWQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAg
ICAgICAgdm9pZCBlbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAg
IHZvaWQgZW1pdF9vcF91cnNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBPcENvZGVUeXBlPg0KICAgICAgICB2b2lkIGVtaXRfb3BfaGFzX3N0cnVj
dHVyZV9wcm9wZXJ0eUltcGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0
X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAg
dm9pZCBlbWl0X29wX2hhc19vd25fc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9u
Kik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9pbl9zdHJ1Y3R1cmVfcHJvcGVydHkoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsNCiAgICAgICAgdm9pZCBlbWl0X29wX2hhc19pbmRleGVkX3Byb3BlcnR5KGNv
bnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZGlyZWN0X3BuYW1l
KGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX3N0
cnVjdHVyZV9wbmFtZShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3Bf
ZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiopOw0K
ICAgICAgICB2b2lkIGVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKGNvbnN0IElu
c3RydWN0aW9uKik7DQogICAgICAgIHZvaWQgZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFp
bChjb25zdCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRfb3BfdG9fcHJvcGVydHlf
a2V5KGNvbnN0IEluc3RydWN0aW9uKik7DQoNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQog
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWls
X2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2FsbF9ldmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRT
bG93X29wX2NhbGxfdmFyYXJncyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfdmFy
YXJncyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQog
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY29uc3RydWN0X3ZhcmFyZ3MoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY29uc3RydWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VxKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9jYWxsZWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdHJ5X2dldF9i
eV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlf
aWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRf
YXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFu
Y2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1p
dFNsb3dfb3Bfamxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZ3JlYXRlcihjb25zdCBJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9qZ3JlYXRlcmVxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pubGVz
cyhjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsN
CiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3NlcShjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9qbmdyZWF0ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfamVxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfanN0cmljdGVxKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puc3RyaWN0
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfanRydWUoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
bG9vcF9oaW50KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lk
IGVtaXRTbG93X29wX21vZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfbmVnYXRlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lcShjb25zdCBJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCiAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsN
CiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOw0KICAgICAgICB2b2lkIGVtaXRTbG93
X29wX3N1Yihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsNCiAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25z
dCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCg0KICAg
ICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsNCiAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOw0KICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7
DQogICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9u
Kik7DQogICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQogICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOw0KDQogICAgICAgIHZvaWQgZW1pdFNsb3dDYXNlQ2FsbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBTbG93
UGF0aEZ1bmN0aW9uKTsNCg0KICAgICAgICB2b2lkIGVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25z
dCBJbnN0cnVjdGlvbiopOw0KICAgICAgICB2b2lkIGVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7DQog
ICAgICAgIHZvaWQgZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKik7DQog
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsNCg0KICAgICAgICB2b2lkIGVtaXRS
aWdodFNoaWZ0KGNvbnN0IEluc3RydWN0aW9uKiwgYm9vbCBpc1Vuc2lnbmVkKTsNCiAgICAgICAg
dm9pZCBlbWl0UmlnaHRTaGlmdFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYsIGJvb2wgaXNVbnNpZ25lZCk7DQoNCiAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3A+DQogICAgICAgIHZvaWQgZW1pdE5ld0Z1bmNDb21tb24oY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+DQogICAgICAgIHZv
aWQgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGNvbnN0IEluc3RydWN0aW9uKik7DQogICAgICAgIHZv
aWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOw0K
ICAgICAgICB2b2lkIGVtaXRSZXNvbHZlQ2xvc3VyZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0
dWFsUmVnaXN0ZXIgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVk
IGRlcHRoKTsNCiAgICAgICAgdm9pZCBlbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhWaXJ0dWFs
UmVnaXN0ZXIgc2NvcGUsIFN0cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QpOw0KDQogICAgICAgIHZv
aWQgZW1pdEdldFZhckZyb21Qb2ludGVyKEpTVmFsdWUqIG9wZXJhbmQsIEdQUlJlZyk7DQogICAg
ICAgIHZvaWQgZW1pdEdldFZhckZyb21JbmRpcmVjdFBvaW50ZXIoSlNWYWx1ZSoqIG9wZXJhbmQs
IEdQUlJlZyk7DQoNCg0KDQojbGluZSA3MjQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCiAgICAgICAgdm9pZCBlbWl0R2V0Q2xv
c3VyZVZhcihWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUsIHVpbnRwdHJfdCBvcGVyYW5kKTsNCiAgICAg
ICAgdm9pZCBlbWl0Tm90aWZ5V3JpdGUoV2F0Y2hwb2ludFNldCopOw0KICAgICAgICB2b2lkIGVt
aXROb3RpZnlXcml0ZShHUFJSZWcgcG9pbnRlclRvU2V0KTsNCiAgICAgICAgdm9pZCBlbWl0UHV0
R2xvYmFsVmFyaWFibGUoSlNWYWx1ZSogb3BlcmFuZCwgVmlydHVhbFJlZ2lzdGVyIHZhbHVlLCBX
YXRjaHBvaW50U2V0Kik7DQogICAgICAgIHZvaWQgZW1pdFB1dEdsb2JhbFZhcmlhYmxlSW5kaXJl
Y3QoSlNWYWx1ZSoqIGFkZHJlc3NPZk9wZXJhbmQsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV2F0
Y2hwb2ludFNldCoqKTsNCiAgICAgICAgdm9pZCBlbWl0UHV0Q2xvc3VyZVZhcihWaXJ0dWFsUmVn
aXN0ZXIgc2NvcGUsIHVpbnRwdHJfdCBvcGVyYW5kLCBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUsIFdh
dGNocG9pbnRTZXQqKTsNCg0KICAgICAgICB2b2lkIGVtaXRJbml0UmVnaXN0ZXIoVmlydHVhbFJl
Z2lzdGVyKTsNCg0KICAgICAgICB2b2lkIGVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdp
c3RlcklEIGZyb20sIFZpcnR1YWxSZWdpc3Rlcik7DQoNCiAgICAgICAgSlNWYWx1ZSBnZXRDb25z
dGFudE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKTsNCiAgICAgICAgYm9vbCBpc09wZXJhbmRDb25z
dGFudEludChWaXJ0dWFsUmVnaXN0ZXIpOw0KICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50
Q2hhcihWaXJ0dWFsUmVnaXN0ZXIpOw0KDQogICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcCwg
dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBO
b25Qcm9maWxlZEZ1bmN0aW9uPg0KICAgICAgICB2b2lkIGVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5
TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBJbnN0cnVjdGlvbiosIFByb2ZpbGVkRnVuY3Rpb24s
IE5vblByb2ZpbGVkRnVuY3Rpb24pOw0KICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5
cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRGdW5jdGlvbiwgdHlwZW5hbWUgTm9u
UHJvZmlsZWRGdW5jdGlvbj4NCiAgICAgICAgdm9pZCBlbWl0TWF0aElDRmFzdChKSVRCaW5hcnlN
YXRoSUM8R2VuZXJhdG9yPiosIGNvbnN0IEluc3RydWN0aW9uKiwgUHJvZmlsZWRGdW5jdGlvbiwg
Tm9uUHJvZmlsZWRGdW5jdGlvbik7DQoNCiAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wLCB0
eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCB0eXBl
bmFtZSBQcm9maWxlZEZ1bmN0aW9uLCB0eXBlbmFtZSBSZXBhdGNoRnVuY3Rpb24+DQogICAgICAg
IHZvaWQgZW1pdE1hdGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBjb25zdCBJ
bnN0cnVjdGlvbiosIFByb2ZpbGVkUmVwYXRjaEZ1bmN0aW9uLCBQcm9maWxlZEZ1bmN0aW9uLCBS
ZXBhdGNoRnVuY3Rpb24pOw0KICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3AsIHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIHR5cGVuYW1lIFBy
b2ZpbGVkRnVuY3Rpb24sIHR5cGVuYW1lIFJlcGF0Y2hGdW5jdGlvbj4NCiAgICAgICAgdm9pZCBl
bWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiwgY29uc3QgSW5zdHJ1Y3Rp
b24qLCBQcm9maWxlZFJlcGF0Y2hGdW5jdGlvbiwgUHJvZmlsZWRGdW5jdGlvbiwgUmVwYXRjaEZ1
bmN0aW9uKTsNCg0KICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBpdGVyKyst
PmZyb207DQogICAgICAgIH0NCiAgICAgICAgdm9pZCBsaW5rU2xvd0Nhc2UoVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGl0
ZXItPmZyb20uaXNTZXQoKSkNCiAgICAgICAgICAgICAgICBpdGVyLT5mcm9tLmxpbmsodGhpcyk7
DQogICAgICAgICAgICArK2l0ZXI7DQogICAgICAgIH0NCiAgICAgICAgdm9pZCBsaW5rRHVtbXlT
bG93Q2FzZShWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQ0KICAgICAgICB7
DQogICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgICAgICArK2l0ZXI7DQogICAgICAgIH0N
CiAgICAgICAgdm9pZCBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiwgVmlydHVhbFJlZ2lzdGVyKTsNCiAgICAgICAgdm9pZCBsaW5rQWxsU2xv
d0Nhc2VzRm9yQnl0ZWNvZGVJbmRleChWZWN0b3I8U2xvd0Nhc2VFbnRyeT4mIHNsb3dDYXNlcywN
CiAgICAgICAgICAgIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlT2Zmc2V0KTsNCg0KICAgICAgICB2b2lkIGxpbmtBbGxTbG93Q2FzZXMoVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikNCiAgICAgICAgew0KICAgICAgICAg
ICAgbGlua0FsbFNsb3dDYXNlc0ZvckJ5dGVjb2RlSW5kZXgobV9zbG93Q2FzZXMsIGl0ZXIsIG1f
Ynl0ZWNvZGVJbmRleCk7DQogICAgICAgIH0NCg0KICAgICAgICBib29sIGhhc0FueVNsb3dDYXNl
cyhWZWN0b3I8U2xvd0Nhc2VFbnRyeT4mIHNsb3dDYXNlcywgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVPZmZzZXQpOw0KICAgICAgICBib29s
IGhhc0FueVNsb3dDYXNlcyhWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQ0K
ICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gaGFzQW55U2xvd0Nhc2VzKG1fc2xvd0Nhc2Vz
LCBpdGVyLCBtX2J5dGVjb2RlSW5kZXgpOw0KICAgICAgICB9DQoNCiAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+KTsNCg0KICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKGNvbnN0IEZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4pOw0KI2xpbmUgNzgzICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklULmgiDQogICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlv
bihjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KTsNCiAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQo
Y29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCk7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPg0KICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3Vs
dFdpdGhQcm9maWxlKE1ldGFkYXRhJiwgY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCk7DQogICAgICAgIA0KICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgICAgICBzdGQ6OmVu
YWJsZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsPg0KICAgICAgICBjYWxsT3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgb3Bl
cmF0aW9uLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBBcmdzLi4uIGFyZ3MpDQogICAgICAgIHsN
CiAgICAgICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4pOw0KICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4NCiAgICAgICAgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9u
VHlwZT46OlJlc3VsdFR5cGUsIFNsb3dQYXRoUmV0dXJuVHlwZT46OnZhbHVlLCBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbD4NCiAgICAgICAgY2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9wZXJhdGlv
biwgQXJncy4uLiBhcmdzKQ0KICAgICAgICB7DQogICAgICAgICAgICBzZXR1cEFyZ3VtZW50czxP
cGVyYXRpb25UeXBlPihhcmdzLi4uKTsNCiAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrQW5kU2xvd1BhdGhSZXR1cm5UeXBlKG9wZXJhdGlvbik7DQogICAgICAg
IH0NCg0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPg0KICAgICAgICBzdHJ1Y3QgaXM2
NEJpdFR5cGUgew0KICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZhbHVlID0gc2l6
ZW9mKFR5cGUpIDw9IDg7DQogICAgICAgIH07DQoNCiAgICAgICAgdGVtcGxhdGU8Pg0KICAgICAg
ICBzdHJ1Y3QgaXM2NEJpdFR5cGU8dm9pZD4gew0KICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHZhbHVlID0gdHJ1ZTsNCiAgICAgICAgfTsNCg0KICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgICAgICBzdGQ6OmVuYWJs
ZV9pZl90PCFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlw
ZT46OlJlc3VsdFR5cGUsIFNsb3dQYXRoUmV0dXJuVHlwZT46OnZhbHVlLCBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbD4NCiAgICAgICAgY2FsbE9wZXJhdGlvbihPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwg
QXJncy4uLiBhcmdzKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KGlzNjRC
aXRUeXBlPHR5cGVuYW1lIEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpSZXN1bHRUeXBl
Pjo6dmFsdWUsICJXaW42NCBjYW5ub3QgdXNlIHN0YW5kYXJkIGNhbGwgd2hlbiByZXR1cm4gdHlw
ZSBpcyBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOw0KICAgICAgICAgICAgc2V0dXBBcmd1bWVudHM8
T3BlcmF0aW9uVHlwZT4oYXJncy4uLik7DQogICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOw0KICAgICAgICB9DQoNCg0KDQoNCg0KDQoNCiNs
aW5lIDgzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxqaXRcXEpJVC5oIg0KDQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhLCB0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgICAgICBzdGQ6OmVuYWJs
ZV9pZl90PEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpoYXNSZXN1bHQsIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsPg0KICAgICAgICBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoTWV0YWRhdGEm
IG1ldGFkYXRhLCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dCwgQXJncy4uLiBhcmdzKQ0KICAgICAgICB7DQogICAgICAgICAgICBzZXR1cEFyZ3VtZW50czxP
cGVyYXRpb25UeXBlPihhcmdzLi4uKTsNCiAgICAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVy
YXRpb24sIHJlc3VsdCk7DQogICAgICAgIH0NCg0KICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPg0KICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aFJlc3VsdChPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncywgQXJncy4uLiBhcmdzKQ0KICAgICAgICB7DQogICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50czxPcGVyYXRpb25UeXBlPihhcmdzLi4uKTsNCiAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOw0KICAg
ICAgICAgICAgc2V0dXBSZXN1bHRzKHJlc3VsdFJlZ3MpOw0KICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3M+DQogICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBBcmdzLi4u
IGFyZ3MpDQogICAgICAgIHsNCiAgICAgICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5
cGU+KGFyZ3MuLi4pOw0KICAgICAgICAgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7DQogICAgICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOw0KICAgICAgICB9DQoNCiAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4NCiAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFj
a09uRXhjZXB0aW9uKE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBBcmdzLi4uIGFyZ3MpDQogICAg
ICAgIHsNCiAgICAgICAgICAgIHNldHVwQXJndW1lbnRzPE9wZXJhdGlvblR5cGU+KGFyZ3MuLi4p
Ow0KICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4
Y2VwdGlvbihvcGVyYXRpb24pOw0KICAgICAgICB9DQoNCiAgICAgICAgZW51bSBjbGFzcyBQcm9m
aWxpbmdQb2xpY3kgew0KICAgICAgICAgICAgU2hvdWxkRW1pdFByb2ZpbGluZywNCiAgICAgICAg
ICAgIE5vUHJvZmlsaW5nDQogICAgICAgIH07DQoNCiAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3AsIHR5cGVuYW1lIFNuaXBwZXRHZW5lcmF0b3I+DQogICAgICAgIHZvaWQgZW1pdEJpdEJpbmFy
eU9wRmFzdFBhdGgoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUHJvZmls
aW5nUG9saWN5IHNob3VsZEVtaXRQcm9maWxpbmcgPSBQcm9maWxpbmdQb2xpY3k6Ok5vUHJvZmls
aW5nKTsNCg0KICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgT3Bjb2RlSUQpOw0KDQogICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPg0KICAgICAgICB2b2lkIGVtaXRSaWdodFNoaWZ0RmFzdFBhdGgoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgSklUUmlnaHRTaGlmdEdlbmVyYXRvcjo6
U2hpZnRUeXBlKTsNCg0KICAgICAgICB2b2lkIHVwZGF0ZVRvcENhbGxGcmFtZSgpOw0KDQogICAg
ICAgIENhbGwgZW1pdE5ha2VkQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiBmdW5jdGlvbiA9IENvZGVQ
dHI8Tm9QdHJUYWc+KCkpOw0KICAgICAgICBDYWxsIGVtaXROYWtlZFRhaWxDYWxsKENvZGVQdHI8
Tm9QdHJUYWc+IGZ1bmN0aW9uID0gQ29kZVB0cjxOb1B0clRhZz4oKSk7DQoNCiAgICAgICAgDQog
ICAgICAgIHZvaWQgZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0LCBKdW1wTGlzdCYgZmFpbHVyZXMpOw0KDQogICAgICAgIGludCBqdW1wVGFyZ2V0
KGNvbnN0IEluc3RydWN0aW9uKiwgaW50IHRhcmdldCk7DQogICAgICAgIA0KDQogICAgICAgIHZv
aWQgZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKTsNCg0KDQojbGluZSA4OTIgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCg0K
DQoNCg0KDQoNCg0KDQojbGluZSA5MDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCg0KDQoNCiNsaW5lIDkwNSAiRjpcXGdpdFBc
XFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVC5oIg0KDQoN
Cg0KI2xpbmUgOTA5ICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGppdFxcSklULmgiDQoNCg0KDQojbGluZSA5MTMgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQuaCINCiAgICAgICAgdm9pZCBz
YW1wbGVDb2RlQmxvY2soQ29kZUJsb2NrKikge30NCiNsaW5lIDkxNSAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxqaXRcXEpJVC5oIg0KDQoNCiAgICAg
ICAgYm9vbCBjYW5CZU9wdGltaXplZCgpIHsgcmV0dXJuIG1fY2FuQmVPcHRpbWl6ZWQ7IH0NCiAg
ICAgICAgYm9vbCBjYW5CZU9wdGltaXplZE9ySW5saW5lZCgpIHsgcmV0dXJuIG1fY2FuQmVPcHRp
bWl6ZWRPcklubGluZWQ7IH0NCiAgICAgICAgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nKCkgeyBy
ZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsaW5nOyB9DQoNCg0KDQoNCg0KDQojbGluZSA5MjcgIkY6
XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcaml0XFxKSVQu
aCINCg0KICAgICAgICBzdGF0aWMgYm9vbCByZXBvcnRDb21waWxlVGltZXMoKTsNCiAgICAgICAg
c3RhdGljIGJvb2wgY29tcHV0ZUNvbXBpbGVUaW1lcygpOw0KICAgICAgICANCiAgICAgICAgDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgR2V0UHV0SW5mbyBjb3BpZWRHZXRQdXRJbmZvKE9w
UHV0VG9TY29wZSk7DQogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJpbmFyeU9wPg0KICAgICAg
ICBCaW5hcnlBcml0aFByb2ZpbGUgY29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wKTsNCg0KICAg
ICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsNCg0KICAgICAgICBWZWN0b3I8Q2FsbFJl
Y29yZD4gbV9jYWxsczsNCiAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsNCiAgICAgICAg
SGFzaE1hcDxCeXRlY29kZUluZGV4LCBMYWJlbD4gbV9jaGVja3BvaW50TGFiZWxzOw0KICAgICAg
ICBWZWN0b3I8SklUR2V0QnlJZEdlbmVyYXRvcj4gbV9nZXRCeUlkczsNCiAgICAgICAgVmVjdG9y
PEpJVEdldEJ5VmFsR2VuZXJhdG9yPiBtX2dldEJ5VmFsczsNCiAgICAgICAgVmVjdG9yPEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcj4gbV9nZXRCeUlkc1dpdGhUaGlzOw0KICAgICAgICBWZWN0
b3I8SklUUHV0QnlJZEdlbmVyYXRvcj4gbV9wdXRCeUlkczsNCiAgICAgICAgVmVjdG9yPEpJVElu
QnlJZEdlbmVyYXRvcj4gbV9pbkJ5SWRzOw0KICAgICAgICBWZWN0b3I8SklURGVsQnlJZEdlbmVy
YXRvcj4gbV9kZWxCeUlkczsNCiAgICAgICAgVmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBt
X2RlbEJ5VmFsczsNCiAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5z
dGFuY2VPZnM7DQogICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENv
bXBpbGF0aW9uSW5mbzsNCiAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2Fs
bENvbXBpbGF0aW9uSW5mbzsNCiAgICAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qbXBUYWJsZTsN
Cg0KICAgICAgICBCeXRlY29kZUluZGV4IG1fYnl0ZWNvZGVJbmRleDsNCiAgICAgICAgVmVjdG9y
PFNsb3dDYXNlRW50cnk+IG1fc2xvd0Nhc2VzOw0KICAgICAgICBWZWN0b3I8U3dpdGNoUmVjb3Jk
PiBtX3N3aXRjaGVzOw0KDQogICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVuc2lnbmVkPiBtX2Nv
cGllZEdldFB1dEluZm9zOw0KICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBCaW5hcnlBcml0aFBy
b2ZpbGU+IG1fY29waWVkQXJpdGhQcm9maWxlczsNCg0KICAgICAgICBKdW1wTGlzdCBtX2V4Y2Vw
dGlvbkNoZWNrczsNCiAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NXaXRoQ2FsbEZy
YW1lUm9sbGJhY2s7DQogICAgICAgIExhYmVsIG1fZXhjZXB0aW9uSGFuZGxlcjsNCg0KICAgICAg
ICB1bnNpZ25lZCBtX2dldEJ5SWRJbmRleCB7IDB4ZmZmZmZmZmYgfTsNCiAgICAgICAgdW5zaWdu
ZWQgbV9nZXRCeVZhbEluZGV4IHsgMHhmZmZmZmZmZiB9Ow0KICAgICAgICB1bnNpZ25lZCBtX2dl
dEJ5SWRXaXRoVGhpc0luZGV4IHsgMHhmZmZmZmZmZiB9Ow0KICAgICAgICB1bnNpZ25lZCBtX3B1
dEJ5SWRJbmRleCB7IDB4ZmZmZmZmZmYgfTsNCiAgICAgICAgdW5zaWduZWQgbV9pbkJ5SWRJbmRl
eCB7IDB4ZmZmZmZmZmYgfTsNCiAgICAgICAgdW5zaWduZWQgbV9kZWxCeVZhbEluZGV4IHsgMHhm
ZmZmZmZmZiB9Ow0KICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IDB4ZmZmZmZmZmYg
fTsNCiAgICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyAweGZmZmZmZmZmIH07DQog
ICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4IHsgMHhmZmZmZmZmZiB9Ow0K
ICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgMHhmZmZmZmZmZiB9Ow0KICAg
ICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSB7IDAgfTsNCiAgICAg
ICAgDQogICAgICAgIExhYmVsIG1fYXJpdHlDaGVjazsNCiAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PExpbmtCdWZmZXI+IG1fbGlua0J1ZmZlcjsNCg0KICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SklU
RGlzYXNzZW1ibGVyPiBtX2Rpc2Fzc2VtYmxlcjsNCiAgICAgICAgUmVmUHRyPFByb2ZpbGVyOjpD
b21waWxhdGlvbj4gbV9jb21waWxhdGlvbjsNCg0KICAgICAgICBQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXI7DQoNCiAgICAgICAgSGFzaE1hcDxjb25z
dCBJbnN0cnVjdGlvbiosIHZvaWQqPiBtX2luc3RydWN0aW9uVG9NYXRoSUM7DQogICAgICAgIEhh
c2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCBNYXRoSUNHZW5lcmF0aW9uU3RhdGU+IG1faW5zdHJ1
Y3Rpb25Ub01hdGhJQ0dlbmVyYXRpb25TdGF0ZTsNCg0KICAgICAgICBib29sIG1fY2FuQmVPcHRp
bWl6ZWQ7DQogICAgICAgIGJvb2wgbV9jYW5CZU9wdGltaXplZE9ySW5saW5lZDsNCiAgICAgICAg
Ym9vbCBtX3Nob3VsZEVtaXRQcm9maWxpbmc7DQogICAgICAgIEJ5dGVjb2RlSW5kZXggbV9sb29w
T1NSRW50cnlCeXRlY29kZUluZGV4Ow0KICAgIH07DQoNCn0gDQoNCg0KI2xpbmUgOTk5ICJGOlxc
Z2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXGppdFxcSklULmgi
DQojbGluZSAzNSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIg0KDQoNCg0KI2xpbmUgMSAiRjpcXGdp
dFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KDQoNCg0KDQpuYW1lc3BhY2UgSlND
IHsNCg0KY2xhc3MgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yVGFibGU7DQoNCmNsYXNzIFRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcj4gew0KcHVibGljOg0KICAgIHR5cGVkZWYgVmVjdG9yPFN0cmluZywgND4gU3RyaW5n
VmVjdG9yOw0KICAgIHR5cGVkZWYgVmVjdG9yPE9wdGlvbmFsPFN0cmluZz4sIDQ+IE9wdGlvbmFs
U3RyaW5nVmVjdG9yOw0KDQogICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUg
fTsNCiAgICBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoRGVsZXRlZFZhbHVlVGFnKTsNCiAgICBl
bnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07DQogICAgVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yKEVtcHR5VmFsdWVUYWcpOw0KDQogICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmF3U3RyaW5ncy5pc0VtcHR5KCkgJiYgbV9oYXNoID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsgfQ0KDQogICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3MuaXNFbXB0eSgpICYmICFtX2hhc2g7IH0NCg0KICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0NCg0KICAgIGNvbnN0IFN0
cmluZ1ZlY3RvciYgcmF3U3RyaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fcmF3U3RyaW5nczsgfQ0K
ICAgIGNvbnN0IE9wdGlvbmFsU3RyaW5nVmVjdG9yJiBjb29rZWRTdHJpbmdzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb29rZWRTdHJpbmdzOyB9DQoNCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9oYXNoID09IG90
aGVyLm1faGFzaCAmJiBtX3Jhd1N0cmluZ3MgPT0gb3RoZXIubV9yYXdTdHJpbmdzOyB9DQogICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1faGFzaCAhPSBvdGhlci5tX2hhc2ggfHwgbV9yYXdTdHJpbmdzICE9IG90
aGVyLm1fcmF3U3RyaW5nczsgfQ0KDQogICAgc3RydWN0IEhhc2hlciB7DQogICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYga2V5KSB7IHJl
dHVybiBrZXkuaGFzaCgpOyB9DQogICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvciYgYSwgY29uc3QgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yJiBi
KSB7IHJldHVybiBhID09IGI7IH0NCiAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7DQogICAgfTsNCg0KICAgIHN0YXRpYyB1
bnNpZ25lZCBjYWxjdWxhdGVIYXNoKGNvbnN0IFN0cmluZ1ZlY3RvciYgcmF3U3RyaW5ncyk7DQog
ICAgflRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcigpOw0KDQogICAgc3RhdGljIFJlZjxUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3I+IGNyZWF0ZShTdHJpbmdWZWN0b3ImJiByYXdTdHJpbmdzLCBPcHRp
b25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpDQogICAgew0KICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Ioc3RkOjptb3ZlPFdURjo6Q2hl
Y2tNb3ZlUGFyYW1ldGVyPihyYXdTdHJpbmdzKSwgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFy
YW1ldGVyPihjb29rZWRTdHJpbmdzKSkpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3IoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9uYWxTdHJp
bmdWZWN0b3ImJiBjb29rZWRTdHJpbmdzKTsNCg0KICAgIFN0cmluZ1ZlY3RvciBtX3Jhd1N0cmlu
Z3M7DQogICAgT3B0aW9uYWxTdHJpbmdWZWN0b3IgbV9jb29rZWRTdHJpbmdzOw0KICAgIHVuc2ln
bmVkIG1faGFzaCB7IDAgfTsNCn07DQoNCmlubGluZSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6
OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcihTdHJpbmdWZWN0b3ImJiByYXdTdHJpbmdzLCBPcHRp
b25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpDQogICAgOiBtX3Jhd1N0cmluZ3Moc3Rk
Ojptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPihyYXdTdHJpbmdzKSkNCiAgICAsIG1fY29v
a2VkU3RyaW5ncyhzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KGNvb2tlZFN0cmlu
Z3MpKQ0KICAgICwgbV9oYXNoKGNhbGN1bGF0ZUhhc2gobV9yYXdTdHJpbmdzKSkNCnsNCn0NCg0K
aW5saW5lIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
KERlbGV0ZWRWYWx1ZVRhZykNCiAgICA6IG1faGFzaChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpDQp7DQp9DQoNCmlubGluZSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OlRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcihFbXB0eVZhbHVlVGFnKQ0KICAgIDogbV9oYXNoKDApDQp7
DQp9DQoNCmlubGluZSB1bnNpZ25lZCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNhbGN1bGF0
ZUhhc2goY29uc3QgU3RyaW5nVmVjdG9yJiByYXdTdHJpbmdzKQ0Kew0KICAgIFN0cmluZ0hhc2hl
ciBoYXNoZXI7DQogICAgZm9yIChjb25zdCBTdHJpbmcmIHN0cmluZyA6IHJhd1N0cmluZ3MpIHsN
CiAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkNCiAgICAgICAgICAgIGhhc2hlci5hZGRDaGFy
YWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOw0KICAgICAgICBl
bHNlDQogICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczE2
KCksIHN0cmluZy5sZW5ndGgoKSk7DQogICAgfQ0KICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOw0K
fQ0KDQp9IA0KDQpuYW1lc3BhY2UgV1RGIHsNCnRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVm
YXVsdEhhc2g7DQoNCnRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6VGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yPiA6IEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpIYXNoZXIg
eyB9Ow0KDQp0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6VGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yPiA6IEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3I+IHsNCn07DQoNCn0gDQojbGluZSAzMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lXFxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
Ig0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Ig
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsNCnB1YmxpYzoNCiAgICB1c2luZyBCYXNlID0gSlNDZWxs
Ow0KDQogICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsNCiAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7DQogICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pDQogICAgew0KICAgICAgICByZXR1cm4gdm0udGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yU3BhY2U8bW9kZT4oKTsNCiAgICB9DQogICAgcHJvdGVjdGVkOiBzdGF0aWMg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1YmxpYzogc3RhdGljIGNvbnN0ZXhwciBj
b25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAg
IHN0YXRpYyBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciogY3JlYXRlKFZNJiwgUmVmPFRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcj4mJiwgaW50KTsNCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCiAgICBjb25zdCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0NCg0K
ICAgIEpTQXJyYXkqIGNyZWF0ZVRlbXBsYXRlT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kik7DQoNCiAg
ICBpbnQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0NCg0KcHJpdmF0
ZToNCiAgICBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcihWTSYsIFJlZjxUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3I+JiYsIGludCk7DQoNCiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
Ow0KDQogICAgUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4gbV9kZXNjcmlwdG9yOw0KICAg
IGludCBtX2VuZE9mZnNldCB7IDAgfTsNCn07DQoNCn0gDQojbGluZSAzOSAiRjpcXGdpdFBcXFdl
YktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NjcmlwdEV4ZWN1
dGFibGUuY3BwIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEph
dmFTY3JpcHRDb3JlXFxsbGludFxcTExJbnRFbnRyeXBvaW50LmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCm5hbWVz
cGFjZSBKU0Mgew0KDQpjbGFzcyBDb2RlQmxvY2s7DQpjbGFzcyBWTTsNCg0KbmFtZXNwYWNlIExM
SW50IHsNCg0Kdm9pZCBzZXRFbnRyeXBvaW50KENvZGVCbG9jayopOw0KDQp1bnNpZ25lZCBmcmFt
ZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7DQoNCn0gfSANCiNsaW5lIDQwICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJj
ZVxcSmF2YVNjcmlwdENvcmVcXGJ5dGVjb2RlXFxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgiDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxieXRlY29kZVxcVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
CiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIERlY29kZXI7DQpj
bGFzcyBDYWNoZWRNb2R1bGVDb2RlQmxvY2s7DQoNCmNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7DQpwdWJs
aWM6DQogICAgdHlwZWRlZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNlOw0KICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiB2bS51bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2tTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBVbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZv
JiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUp
DQogICAgew0KICAgICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrPih2bS5oZWFwKSkgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5l
cmF0aW9uTW9kZSk7DQogICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7DQogICAg
ICAgIHJldHVybiBpbnN0YW5jZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOw0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAg
DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgaW50IG1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9t
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldDsgfQ0KICAg
IHZvaWQgc2V0TW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZz
ZXQoaW50IG9mZnNldCkNCiAgICB7DQogICAgICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgPSBvZmZzZXQ7DQogICAgfQ0KDQpwcml2YXRlOg0K
ICAgIGZyaWVuZCBDYWNoZWRNb2R1bGVDb2RlQmxvY2s7DQoNCiAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgRXhlY3V0
YWJsZUluZm8mIGluZm8sIE9wdGlvblNldDxDb2RlR2VuZXJhdGlvbk1vZGU+IGNvZGVHZW5lcmF0
aW9uTW9kZSkNCiAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIE1vZHVsZUNvZGUsIGluZm8s
IGNvZGVHZW5lcmF0aW9uTW9kZSkNCiAgICB7DQogICAgfQ0KDQogICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKERlY29kZXImLCBjb25zdCBDYWNoZWRNb2R1bGVDb2RlQmxvY2smKTsN
Cg0KICAgIGludCBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVy
T2Zmc2V0IHsgMCB9Ow0KDQpwdWJsaWM6DQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
bykNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KICAgIHByb3RlY3RlZDogc3RhdGlj
IGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQp9Ow0K
DQp9DQojbGluZSAzNCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3Jp
cHRDb3JlXFxieXRlY29kZVxcTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIg0KDQpuYW1lc3BhY2Ug
SlNDIHsNCg0KY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBHbG9i
YWxDb2RlQmxvY2sgew0KcHVibGljOg0KICAgIHR5cGVkZWYgR2xvYmFsQ29kZUJsb2NrIEJhc2U7
DQogICAgcHJvdGVjdGVkOiBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyBzX2luZm87IHB1
YmxpYzogc3RhdGljIGNvbnN0ZXhwciBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyBy
ZXR1cm4gJnNfaW5mbzsgfTsNCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vz
cz4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQog
ICAgICAgIHJldHVybiAmdm0uY29kZUJsb2NrU3BhY2Uuc3BhY2U7DQogICAgfQ0KDQogICAgc3Rh
dGljIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIENvcHlQYXJzZWRCbG9j
a1RhZywgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayYgb3RoZXIpDQogICAgew0KICAgICAgICBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLmhlYXApKQ0KICAgICAgICAgICAgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayh2bSwgdm0ubW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5nZXQo
KSwgQ29weVBhcnNlZEJsb2NrLCBvdGhlcik7DQogICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbih2bSwgQ29weVBhcnNlZEJsb2NrLCBvdGhlcik7DQogICAgICAgIHJldHVybiBpbnN0YW5j
ZTsNCiAgICB9DQoNCiAgICBzdGF0aWMgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY3JlYXRlKFZN
JiB2bSwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywgSlNTY29wZSogc2NvcGUp
DQogICAgew0KICAgICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+KHZtLmhlYXApKQ0K
ICAgICAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayh2bSwgdm0ubW9kdWxlUHJvZ3JhbUNv
ZGVCbG9ja1N0cnVjdHVyZS5nZXQoKSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9j
aywgc2NvcGUpOw0KICAgICAgICBpZiAoIWluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgb3du
ZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpKQ0KICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7DQogICAgICAgIHJldHVybiBpbnN0YW5jZTsNCiAgICB9DQoNCiAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvZGVC
bG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCnByaXZhdGU6DQog
ICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2smIG90aGVyKQ0KICAgICAg
ICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBDb3B5UGFyc2VkQmxvY2ssIG90aGVy
KQ0KICAgIHsNCiAgICB9DQoNCiAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpT
U2NvcGUqIHNjb3BlKQ0KICAgICAgICA6IEdsb2JhbENvZGVCbG9jayh2bSwgc3RydWN0dXJlLCBv
d25lckV4ZWN1dGFibGUsIHVubGlua2VkQ29kZUJsb2NrLCBzY29wZSkNCiAgICB7DQogICAgfQ0K
fTsNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKE1vZHVsZVByb2dyYW1Db2RlQmxvY2spID09IHNpemVv
ZihDb2RlQmxvY2spLCAiU3ViY2xhc3NlcyBvZiBDb2RlQmxvY2sgc2hvdWxkIGJlIHRoZSBzYW1l
IHNpemUgdG8gc2hhcmUgSXNvU3Vic3BhY2UiKTsNCg0KfSANCiNsaW5lIDQxICJGOlxcZ2l0UFxc
V2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHBhcnNlclxcUGFyc2VyRXJyb3IuaCINCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0KI2xpbmUg
MSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lXFxFcnJvckhhbmRsaW5nU2NvcGUuaCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpj
bGFzcyBWTTsNCg0KY2xhc3MgRXJyb3JIYW5kbGluZ1Njb3BlIHsNCnB1YmxpYzoNCiAgICBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgRXJyb3JIYW5kbGluZ1Njb3BlKFZNJik7DQogICAgX19kZWNsc3Bl
YyhkbGxleHBvcnQpIH5FcnJvckhhbmRsaW5nU2NvcGUoKTsNCnByaXZhdGU6DQogICAgVk0mIG1f
dm07DQogICAgc2l6ZV90IG1fc2F2ZWRTb2Z0UmVzZXJ2ZWRab25lU2l6ZTsNCn07DQoNCn0gDQoj
bGluZSAzMCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxwYXJzZXJcXFBhcnNlckVycm9yLmgiDQoNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFz
cyBQYXJzZXJFcnJvciB7DQpwdWJsaWM6DQogICAgZW51bSBTeW50YXhFcnJvclR5cGUgOiB1aW50
OF90IHsNCiAgICAgICAgU3ludGF4RXJyb3JOb25lLA0KICAgICAgICBTeW50YXhFcnJvcklycmVj
b3ZlcmFibGUsDQogICAgICAgIFN5bnRheEVycm9yVW50ZXJtaW5hdGVkTGl0ZXJhbCwNCiAgICAg
ICAgU3ludGF4RXJyb3JSZWNvdmVyYWJsZQ0KICAgIH07DQoNCiAgICBlbnVtIEVycm9yVHlwZSA6
IHVpbnQ4X3Qgew0KICAgICAgICBFcnJvck5vbmUsDQogICAgICAgIFN0YWNrT3ZlcmZsb3csDQog
ICAgICAgIEV2YWxFcnJvciwNCiAgICAgICAgT3V0T2ZNZW1vcnksDQogICAgICAgIFN5bnRheEVy
cm9yDQogICAgfTsNCg0KICAgIFBhcnNlckVycm9yKCkNCiAgICAgICAgOiBtX3R5cGUoRXJyb3JO
b25lKQ0KICAgICAgICAsIG1fc3ludGF4RXJyb3JUeXBlKFN5bnRheEVycm9yTm9uZSkNCiAgICB7
DQogICAgfQ0KICAgIA0KICAgIGV4cGxpY2l0IFBhcnNlckVycm9yKEVycm9yVHlwZSB0eXBlKQ0K
ICAgICAgICA6IG1fdHlwZSh0eXBlKQ0KICAgICAgICAsIG1fc3ludGF4RXJyb3JUeXBlKFN5bnRh
eEVycm9yTm9uZSkNCiAgICB7DQogICAgfQ0KDQogICAgUGFyc2VyRXJyb3IoRXJyb3JUeXBlIHR5
cGUsIFN5bnRheEVycm9yVHlwZSBzeW50YXhFcnJvciwgSlNUb2tlbiB0b2tlbikNCiAgICAgICAg
OiBtX3Rva2VuKHRva2VuKQ0KICAgICAgICAsIG1fdHlwZSh0eXBlKQ0KICAgICAgICAsIG1fc3lu
dGF4RXJyb3JUeXBlKHN5bnRheEVycm9yKQ0KICAgIHsNCiAgICB9DQoNCiAgICBQYXJzZXJFcnJv
cihFcnJvclR5cGUgdHlwZSwgU3ludGF4RXJyb3JUeXBlIHN5bnRheEVycm9yLCBKU1Rva2VuIHRv
a2VuLCBjb25zdCBTdHJpbmcmIG1zZywgaW50IGxpbmUpDQogICAgICAgIDogbV90b2tlbih0b2tl
bikNCiAgICAgICAgLCBtX21lc3NhZ2UobXNnKQ0KICAgICAgICAsIG1fbGluZShsaW5lKQ0KICAg
ICAgICAsIG1fdHlwZSh0eXBlKQ0KICAgICAgICAsIG1fc3ludGF4RXJyb3JUeXBlKHN5bnRheEVy
cm9yKQ0KICAgIHsNCiAgICB9DQoNCiAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgIT0gRXJyb3JOb25lOyB9DQogICAgU3ludGF4RXJyb3JUeXBlIHN5bnRheEVycm9yVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGF4RXJyb3JUeXBlOyB9DQogICAgY29uc3QgSlNUb2tl
biYgdG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3Rva2VuOyB9DQogICAgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9DQogICAgaW50IGxpbmUoKSBjb25z
dCB7IHJldHVybiBtX2xpbmU7IH0NCiAgICBFcnJvclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQ0KDQogICAgSlNPYmplY3QqIHRvRXJyb3JPYmplY3QoDQogICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsDQogICAgICAgIFNvdXJjZUNvZGUgc291cmNlLCANCiAg
ICAgICAgaW50IG92ZXJyaWRlTGluZU51bWJlciA9IC0xKQ0KICAgIHsNCiAgICAgICAgc3dpdGNo
IChtX3R5cGUpIHsNCiAgICAgICAgY2FzZSBFcnJvck5vbmU6DQogICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsNCiAgICAgICAgY2FzZSBTeW50YXhFcnJvcjoNCiAgICAgICAgICAgIHJldHVybiBh
ZGRFcnJvckluZm8oDQogICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT52bSgpLCANCiAgICAg
ICAgICAgICAgICBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIG1fbWVzc2FnZSksIA0K
ICAgICAgICAgICAgICAgIG92ZXJyaWRlTGluZU51bWJlciA9PSAtMSA/IG1fbGluZSA6IG92ZXJy
aWRlTGluZU51bWJlciwgc291cmNlKTsNCiAgICAgICAgY2FzZSBFdmFsRXJyb3I6DQogICAgICAg
ICAgICByZXR1cm4gY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBtX21lc3NhZ2UpOw0K
ICAgICAgICBjYXNlIFN0YWNrT3ZlcmZsb3c6IHsNCiAgICAgICAgICAgIEVycm9ySGFuZGxpbmdT
Y29wZSBlcnJvclNjb3BlKGdldFZNKGdsb2JhbE9iamVjdCkpOw0KICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QpOw0KICAgICAgICB9DQogICAg
ICAgIGNhc2UgT3V0T2ZNZW1vcnk6DQogICAgICAgICAgICByZXR1cm4gY3JlYXRlT3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QpOw0KICAgICAgICB9DQogICAgICAgIFdURkNyYXNoKCk7DQog
ICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBKU1Rva2VuIG1f
dG9rZW47DQogICAgU3RyaW5nIG1fbWVzc2FnZTsNCiAgICBpbnQgbV9saW5lIHsgLTEgfTsNCiAg
ICBFcnJvclR5cGUgbV90eXBlOw0KICAgIFN5bnRheEVycm9yVHlwZSBtX3N5bnRheEVycm9yVHlw
ZTsNCn07DQoNCn0gDQoNCm5hbWVzcGFjZSBXVEYgew0KDQppbmxpbmUgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlwZSB0
eXBlKQ0Kew0KICAgIHN3aXRjaCAodHlwZSkgew0KICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6
U3ludGF4RXJyb3JOb25lOg0KICAgICAgICBvdXQucHJpbnQoIlN5bnRheEVycm9yTm9uZSIpOw0K
ICAgICAgICByZXR1cm47DQogICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvckly
cmVjb3ZlcmFibGU6DQogICAgICAgIG91dC5wcmludCgiU3ludGF4RXJyb3JJcnJlY292ZXJhYmxl
Iik7DQogICAgICAgIHJldHVybjsNCiAgICBjYXNlIEpTQzo6UGFyc2VyRXJyb3I6OlN5bnRheEVy
cm9yVW50ZXJtaW5hdGVkTGl0ZXJhbDoNCiAgICAgICAgb3V0LnByaW50KCJTeW50YXhFcnJvclVu
dGVybWluYXRlZExpdGVyYWwiKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIGNhc2UgSlNDOjpQYXJz
ZXJFcnJvcjo6U3ludGF4RXJyb3JSZWNvdmVyYWJsZToNCiAgICAgICAgb3V0LnByaW50KCJTeW50
YXhFcnJvclJlY292ZXJhYmxlIik7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgDQogICAg
ZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFz
aCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE0MywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccGFyc2VyXFxQYXJzZXJFcnJvci5oIiwgIF9fRlVOQ1RJT05f
XyAgLCAyMTAgKTsgfSB3aGlsZSAoZmFsc2UpOw0KfQ0KDQppbmxpbmUgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UGFyc2VyRXJyb3I6OkVycm9yVHlwZSB0eXBlKQ0K
ew0KICAgIHN3aXRjaCAodHlwZSkgew0KICAgIGNhc2UgSlNDOjpQYXJzZXJFcnJvcjo6RXJyb3JO
b25lOg0KICAgICAgICBvdXQucHJpbnQoIkVycm9yTm9uZSIpOw0KICAgICAgICByZXR1cm47DQog
ICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpTdGFja092ZXJmbG93Og0KICAgICAgICBvdXQucHJp
bnQoIlN0YWNrT3ZlcmZsb3ciKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIGNhc2UgSlNDOjpQYXJz
ZXJFcnJvcjo6RXZhbEVycm9yOg0KICAgICAgICBvdXQucHJpbnQoIkV2YWxFcnJvciIpOw0KICAg
ICAgICByZXR1cm47DQogICAgY2FzZSBKU0M6OlBhcnNlckVycm9yOjpPdXRPZk1lbW9yeToNCiAg
ICAgICAgb3V0LnByaW50KCJPdXRPZk1lbW9yeSIpOw0KICAgICAgICByZXR1cm47DQogICAgY2Fz
ZSBKU0M6OlBhcnNlckVycm9yOjpTeW50YXhFcnJvcjoNCiAgICAgICAgb3V0LnByaW50KCJTeW50
YXhFcnJvciIpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIA0KICAgIGRvIHsgV1RGOjpp
c0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jh
c2hXaXRoSW5mbygxNjYsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNj
cmlwdENvcmVcXHBhcnNlclxcUGFyc2VyRXJyb3IuaCIsICBfX0ZVTkNUSU9OX18gICwgMjExICk7
IH0gd2hpbGUgKGZhbHNlKTsNCn0NCg0KfSANCiNsaW5lIDQyICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAiDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlw
dENvcmVcXGJ5dGVjb2RlXFxQcm9ncmFtQ29kZUJsb2NrLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBvbmNlDQoNCg0K
I2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3Jl
XFxieXRlY29kZVxcVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmgiDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNsYXNzIENhY2hlZFByb2dyYW1Db2RlQmxvY2s7DQoNCmNsYXNzIFVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVC
bG9jayB7DQpwdWJsaWM6DQogICAgdHlwZWRlZiBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayBCYXNl
Ow0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7DQoNCiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4NCiAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiB2bS51bmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2tTcGFjZTxtb2RlPigpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIGNvbnN0IEV4ZWN1dGFibGVJbmZv
JiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUp
DQogICAgew0KICAgICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGluc3RhbmNlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFw
KSkgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKHZtLCB2bS51bmxpbmtlZFByb2dyYW1Db2RlQmxv
Y2tTdHJ1Y3R1cmUuZ2V0KCksIGluZm8sIGNvZGVHZW5lcmF0aW9uTW9kZSk7DQogICAgICAgIGlu
c3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7DQogICAgICAgIHJldHVybiBpbnN0YW5jZTsNCiAg
ICB9DQoNCiAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOw0KDQogICAgdm9pZCBzZXRW
YXJpYWJsZURlY2xhcmF0aW9ucyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVu
dCkgeyBtX3ZhckRlY2xhcmF0aW9ucyA9IGVudmlyb25tZW50OyB9DQogICAgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Zh
ckRlY2xhcmF0aW9uczsgfQ0KDQogICAgdm9pZCBzZXRMZXhpY2FsRGVjbGFyYXRpb25zKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50KSB7IG1fbGV4aWNhbERlY2xhcmF0aW9u
cyA9IGVudmlyb25tZW50OyB9DQogICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bERlY2xhcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbERlY2xhcmF0aW9uczsgfQ0K
DQpwcml2YXRlOg0KICAgIGZyaWVuZCBDYWNoZWRQcm9ncmFtQ29kZUJsb2NrOw0KDQogICAgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IEV4ZWN1dGFibGVJbmZvJiBpbmZvLCBPcHRpb25TZXQ8Q29kZUdlbmVyYXRpb25Nb2RlPiBjb2Rl
R2VuZXJhdGlvbk1vZGUpDQogICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBHbG9iYWxDb2Rl
LCBpbmZvLCBjb2RlR2VuZXJhdGlvbk1vZGUpDQogICAgew0KICAgIH0NCg0KICAgIFVubGlua2Vk
UHJvZ3JhbUNvZGVCbG9jayhEZWNvZGVyJiwgY29uc3QgQ2FjaGVkUHJvZ3JhbUNvZGVCbG9jayYp
Ow0KDQogICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX3ZhckRlY2xhcmF0aW9uczsNCiAgICBWYXJp
YWJsZUVudmlyb25tZW50IG1fbGV4aWNhbERlY2xhcmF0aW9uczsNCg0KcHVibGljOg0KICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pDQogICAgew0KICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCiAg
ICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGlj
OiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVy
biAmc19pbmZvOyB9Ow0KfTsNCg0KfQ0KI2xpbmUgMzQgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxcYnl0ZWNvZGVcXFByb2dyYW1Db2RlQmxvY2suaCIN
Cg0KbmFtZXNwYWNlIEpTQyB7DQoNCmNsYXNzIFByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJs
aWMgR2xvYmFsQ29kZUJsb2NrIHsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIEdsb2JhbENvZGVCbG9j
ayBCYXNlOw0KICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19p
bmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5m
bygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3Bh
Y2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pDQog
ICAgew0KICAgICAgICByZXR1cm4gJnZtLmNvZGVCbG9ja1NwYWNlLnNwYWNlOw0KICAgIH0NCg0K
ICAgIHN0YXRpYyBQcm9ncmFtQ29kZUJsb2NrKiBjcmVhdGUoVk0mIHZtLCBDb3B5UGFyc2VkQmxv
Y2tUYWcsIFByb2dyYW1Db2RlQmxvY2smIG90aGVyKQ0KICAgIHsNCiAgICAgICAgUHJvZ3JhbUNv
ZGVCbG9jayogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9ncmFtQ29k
ZUJsb2NrPih2bS5oZWFwKSkNCiAgICAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sodm0sIHZtLnBy
b2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCksIENvcHlQYXJzZWRCbG9jaywgb3RoZXIpOw0K
ICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIENvcHlQYXJzZWRCbG9jaywgb3Ro
ZXIpOw0KICAgICAgICByZXR1cm4gaW5zdGFuY2U7DQogICAgfQ0KDQogICAgc3RhdGljIFByb2dy
YW1Db2RlQmxvY2sqIGNyZWF0ZShWTSYgdm0sIFByb2dyYW1FeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssIEpTU2Nv
cGUqIHNjb3BlKQ0KICAgIHsNCiAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9ncmFtQ29kZUJsb2NrPih2bS5oZWFwKSkNCiAg
ICAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sodm0sIHZtLnByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuZ2V0KCksIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKTsNCiAg
ICAgICAgaWYgKCFpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIG93bmVyRXhlY3V0YWJsZSwg
dW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlKSkNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0K
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7DQogICAgfQ0KDQogICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb2RlQmxvY2tUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0KDQpwcml2YXRlOg0KICAgIFByb2dyYW1Db2Rl
QmxvY2soVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29weVBhcnNlZEJsb2NrVGFnLCBQ
cm9ncmFtQ29kZUJsb2NrJiBvdGhlcikNCiAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sodm0sIHN0
cnVjdHVyZSwgQ29weVBhcnNlZEJsb2NrLCBvdGhlcikNCiAgICB7DQogICAgfQ0KDQogICAgUHJv
Z3JhbUNvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9ncmFtRXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2Vk
Q29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSkNCiAgICAgICAgOiBHbG9iYWxDb2RlQmxvY2sodm0s
IHN0cnVjdHVyZSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUpDQog
ICAgew0KICAgIH0NCn07DQpzdGF0aWNfYXNzZXJ0KHNpemVvZihQcm9ncmFtQ29kZUJsb2NrKSA9
PSBzaXplb2YoQ29kZUJsb2NrKSwgIlN1YmNsYXNzZXMgb2YgQ29kZUJsb2NrIHNob3VsZCBiZSB0
aGUgc2FtZSBzaXplIHRvIHNoYXJlIElzb1N1YnNwYWNlIik7DQoNCn0gDQojbGluZSA0MyAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwIg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjb25zdCBDbGFzc0lu
Zm8gU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVj
dXRhYmxlQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBKU0Nhc3RpbmdIZWxwZXJzOjpJ
bmhlcml0c1RyYWl0czxTY3JpcHRFeGVjdXRhYmxlPjo6dHlwZVJhbmdlLCB7ICZTY3JpcHRFeGVj
dXRhYmxlOjpkZXN0cm95LCAmU2NyaXB0RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbiwgJlNjcmlw
dEV4ZWN1dGFibGU6OmdldENhbGxEYXRhLCAmU2NyaXB0RXhlY3V0YWJsZTo6Z2V0Q29uc3RydWN0
RGF0YSwgJlNjcmlwdEV4ZWN1dGFibGU6OnB1dCwgJlNjcmlwdEV4ZWN1dGFibGU6OnB1dEJ5SW5k
ZXgsICZTY3JpcHRFeGVjdXRhYmxlOjpkZWxldGVQcm9wZXJ0eSwgJlNjcmlwdEV4ZWN1dGFibGU6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleCwgJlNjcmlwdEV4ZWN1dGFibGU6OmdldE93blByb3BlcnR5
U2xvdCwgJlNjcmlwdEV4ZWN1dGFibGU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsICZTY3Jp
cHRFeGVjdXRhYmxlOjpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaywgJlNjcmlwdEV4ZWN1dGFi
bGU6OnRvVGhpcywgJlNjcmlwdEV4ZWN1dGFibGU6OmRlZmF1bHRWYWx1ZSwgJlNjcmlwdEV4ZWN1
dGFibGU6OmdldE93blByb3BlcnR5TmFtZXMsICZTY3JpcHRFeGVjdXRhYmxlOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMsICZTY3JpcHRFeGVjdXRhYmxlOjpnZXRQcm9wZXJ0eU5hbWVzLCAm
U2NyaXB0RXhlY3V0YWJsZTo6Z2V0RW51bWVyYWJsZUxlbmd0aCwgJlNjcmlwdEV4ZWN1dGFibGU6
OmdldFN0cnVjdHVyZVByb3BlcnR5TmFtZXMsICZTY3JpcHRFeGVjdXRhYmxlOjpnZXRHZW5lcmlj
UHJvcGVydHlOYW1lcywgJlNjcmlwdEV4ZWN1dGFibGU6OmNsYXNzTmFtZSwgJlNjcmlwdEV4ZWN1
dGFibGU6OnRvU3RyaW5nTmFtZSwgJlNjcmlwdEV4ZWN1dGFibGU6OmN1c3RvbUhhc0luc3RhbmNl
LCAmU2NyaXB0RXhlY3V0YWJsZTo6ZGVmaW5lT3duUHJvcGVydHksICZTY3JpcHRFeGVjdXRhYmxl
OjpwcmV2ZW50RXh0ZW5zaW9ucywgJlNjcmlwdEV4ZWN1dGFibGU6OmlzRXh0ZW5zaWJsZSwgJlNj
cmlwdEV4ZWN1dGFibGU6OnNldFByb3RvdHlwZSwgJlNjcmlwdEV4ZWN1dGFibGU6OmdldFByb3Rv
dHlwZSwgJlNjcmlwdEV4ZWN1dGFibGU6OmR1bXBUb1N0cmVhbSwgJlNjcmlwdEV4ZWN1dGFibGU6
OmFuYWx5emVIZWFwLCAmU2NyaXB0RXhlY3V0YWJsZTo6ZXN0aW1hdGVkU2l6ZSwgJlNjcmlwdEV4
ZWN1dGFibGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMsIH0sIFNjcmlwdEV4ZWN1dGFibGU6OlR5
cGVkQXJyYXlTdG9yYWdlVHlwZSwgc2l6ZW9mKFNjcmlwdEV4ZWN1dGFibGUpLCB9Ow0KDQpTY3Jp
cHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlLCBJbnRyaW5zaWMgaW50cmluc2ljKQ0KICAgIDogRXhlY3V0YWJsZUJh
c2Uodm0sIHN0cnVjdHVyZSkNCiAgICAsIG1fc291cmNlKHNvdXJjZSkNCiAgICAsIG1faW50cmlu
c2ljKGludHJpbnNpYykNCiAgICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJp
Y3RNb2RlRmVhdHVyZSA6IDApDQogICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQ0K
ICAgICwgbV9uZXZlcklubGluZShmYWxzZSkNCiAgICAsIG1fbmV2ZXJPcHRpbWl6ZShmYWxzZSkN
CiAgICAsIG1fbmV2ZXJGVExPcHRpbWl6ZShmYWxzZSkNCiAgICAsIG1faXNBcnJvd0Z1bmN0aW9u
Q29udGV4dChpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpDQogICAgLCBtX2NhblVzZU9TUkV4aXRG
dXp6aW5nKHRydWUpDQogICAgLCBtX2NvZGVGb3JHZW5lcmF0b3JCb2R5V2FzR2VuZXJhdGVkKGZh
bHNlKQ0KICAgICwgbV9pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKQ0KICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlcml2ZWRDb250ZXh0VHlwZSkpDQogICAgLCBtX2V2YWxDb250ZXh0VHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZXZhbENvbnRleHRUeXBlKSkNCnsNCn0NCg0Kdm9pZCBTY3JpcHRFeGVjdXRh
YmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkNCnsNCiAgICBzdGF0aWNfY2FzdDxTY3JpcHRFeGVj
dXRhYmxlKj4oY2VsbCktPlNjcmlwdEV4ZWN1dGFibGU6On5TY3JpcHRFeGVjdXRhYmxlKCk7DQp9
DQoNCnZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6Y2xlYXJDb2RlKElzb0NlbGxTZXQmIGNsZWFyYWJs
ZUNvZGVTZXQpDQp7DQogICAgbV9qaXRDb2RlRm9yQ2FsbCA9IG51bGxwdHI7DQogICAgbV9qaXRD
b2RlRm9yQ29uc3RydWN0ID0gbnVsbHB0cjsNCiAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4oKTsNCiAgICBtX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPigpOw0KDQogICAgc3dpdGNoICh0eXBlKCkpIHsNCiAgICBjYXNlIEZ1bmN0
aW9uRXhlY3V0YWJsZVR5cGU6IHsNCiAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyk7DQogICAgICAgIGV4
ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ2FsbC5jbGVhcigpOw0KICAgICAgICBleGVjdXRhYmxl
LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5jbGVhcigpOw0KICAgICAgICBicmVhazsNCiAgICB9
DQogICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6IHsNCiAgICAgICAgRXZhbEV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOw0KICAgICAg
ICBleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suY2xlYXIoKTsNCiAgICAgICAgZXhlY3V0YWJs
ZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suY2xlYXIoKTsNCiAgICAgICAgYnJlYWs7DQogICAg
fQ0KICAgIGNhc2UgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOiB7DQogICAgICAgIFByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPih0aGlz
KTsNCiAgICAgICAgZXhlY3V0YWJsZS0+bV9wcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7DQogICAg
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrLmNsZWFyKCk7DQogICAg
ICAgIGJyZWFrOw0KICAgIH0NCiAgICBjYXNlIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlVHlwZTog
ew0KICAgICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHN0YXRpY19j
YXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7DQogICAgICAgIGV4ZWN1dGFibGUt
Pm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jbGVhcigpOw0KICAgICAgICBleGVjdXRhYmxlLT5t
X3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5jbGVhcigpOw0KICAgICAgICBleGVjdXRh
YmxlLT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuY2xlYXIoKTsNCiAgICAgICAgYnJl
YWs7DQogICAgfQ0KICAgIGRlZmF1bHQ6DQogICAgICAgIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygx
MDYsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAiLCAgX19GVU5DVElPTl9fICAsIDIxMiApOyB9IHdo
aWxlIChmYWxzZSk7DQogICAgICAgIGJyZWFrOw0KICAgIH0NCg0KICAgICgodm9pZCkwKTsNCiAg
ICBjbGVhcmFibGVDb2RlU2V0LnJlbW92ZSh0aGlzKTsNCn0NCg0Kdm9pZCBTY3JpcHRFeGVjdXRh
YmxlOjppbnN0YWxsQ29kZShDb2RlQmxvY2sqIGNvZGVCbG9jaykNCnsNCiAgICBpbnN0YWxsQ29k
ZShjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9jaywgY29kZUJsb2NrLT5jb2RlVHlwZSgpLCBjb2Rl
QmxvY2stPnNwZWNpYWxpemF0aW9uS2luZCgpKTsNCn0NCg0Kdm9pZCBTY3JpcHRFeGVjdXRhYmxl
OjppbnN0YWxsQ29kZShWTSYgdm0sIENvZGVCbG9jayogZ2VuZXJpY0NvZGVCbG9jaywgQ29kZVR5
cGUgY29kZVR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkNCnsNCiAgICBpZiAoZ2Vu
ZXJpY0NvZGVCbG9jaykNCiAgICAgICAgZG8geyBpZiAoZ2VuZXJpY0NvZGVCbG9jaykgKGdlbmVy
aWNDb2RlQmxvY2stPnZtKCkubG9nRXZlbnQoZ2VuZXJpY0NvZGVCbG9jaywgImluc3RhbGxDb2Rl
IiwgWyZdICgpIHsgcmV0dXJuIHRvQ1N0cmluZyAoKTsgfSkpOyB9IHdoaWxlICgwKTsNCiAgICAN
CiAgICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IG51bGxwdHI7DQogICAgDQogICAgc3dpdGNo
IChjb2RlVHlwZSkgew0KICAgIGNhc2UgR2xvYmFsQ29kZTogew0KICAgICAgICBQcm9ncmFtRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KHRoaXMpOw0K
ICAgICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxQcm9ncmFt
Q29kZUJsb2NrKj4oZ2VuZXJpY0NvZGVCbG9jayk7DQogICAgICAgIA0KICAgICAgICAoKHZvaWQp
MCk7DQogICAgICAgIA0KICAgICAgICBvbGRDb2RlQmxvY2sgPSBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjpkZWFjdGl2YXRlQW5kVW53cmFwKGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9j
ay5nZXQoKSk7DQogICAgICAgIGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVCbG9jay5zZXRNYXlC
ZU51bGwodm0sIHRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OndyYXBBbmRBY3RpdmF0
ZShjb2RlQmxvY2spKTsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KDQogICAgY2FzZSBNb2R1bGVD
b2RlOiB7DQogICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganND
YXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7DQogICAgICAgIE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqPihnZW5lcmljQ29kZUJsb2NrKTsNCg0KICAgICAgICAoKHZvaWQpMCk7DQoNCiAgICAgICAg
b2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVu
d3JhcChleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCkpOw0KICAgICAg
ICBleGVjdXRhYmxlLT5tX21vZHVsZVByb2dyYW1Db2RlQmxvY2suc2V0TWF5QmVOdWxsKHZtLCB0
aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2Nr
KSk7DQogICAgICAgIGJyZWFrOw0KICAgIH0NCg0KICAgIGNhc2UgRXZhbENvZGU6IHsNCiAgICAg
ICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0
aGlzKTsNCiAgICAgICAgRXZhbENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8RXZh
bENvZGVCbG9jayo+KGdlbmVyaWNDb2RlQmxvY2spOw0KICAgICAgICANCiAgICAgICAgKCh2b2lk
KTApOw0KICAgICAgICANCiAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2su
Z2V0KCkpOw0KICAgICAgICBleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2suc2V0TWF5QmVOdWxs
KHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29k
ZUJsb2NrKSk7DQogICAgICAgIGJyZWFrOw0KICAgIH0NCiAgICAgICAgDQogICAgY2FzZSBGdW5j
dGlvbkNvZGU6IHsNCiAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganND
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpOw0KICAgICAgICBGdW5jdGlvbkNvZGVCbG9j
ayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihnZW5lcmljQ29k
ZUJsb2NrKTsNCiAgICAgICAgDQogICAgICAgIHN3aXRjaCAoa2luZCkgew0KICAgICAgICBjYXNl
IENvZGVGb3JDYWxsOg0KICAgICAgICAgICAgb2xkQ29kZUJsb2NrID0gRXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZTo6ZGVhY3RpdmF0ZUFuZFVud3JhcChleGVjdXRhYmxlLT5tX2NvZGVCbG9ja0Zv
ckNhbGwuZ2V0KCkpOw0KICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tGb3JDYWxs
LnNldE1heUJlTnVsbCh2bSwgdGhpcywgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6d3JhcEFu
ZEFjdGl2YXRlKGNvZGVCbG9jaykpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2Ug
Q29kZUZvckNvbnN0cnVjdDoNCiAgICAgICAgICAgIG9sZENvZGVCbG9jayA9IEV4ZWN1dGFibGVU
b0NvZGVCbG9ja0VkZ2U6OmRlYWN0aXZhdGVBbmRVbndyYXAoZXhlY3V0YWJsZS0+bV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QuZ2V0KCkpOw0KICAgICAgICAgICAgZXhlY3V0YWJsZS0+bV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3Quc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBFeGVjdXRhYmxlVG9Db2RlQmxv
Y2tFZGdlOjp3cmFwQW5kQWN0aXZhdGUoY29kZUJsb2NrKSk7DQogICAgICAgICAgICBicmVhazsN
CiAgICAgICAgfQ0KICAgICAgICBicmVhazsNCiAgICB9DQogICAgfQ0KDQogICAgc3dpdGNoIChr
aW5kKSB7DQogICAgY2FzZSBDb2RlRm9yQ2FsbDoNCiAgICAgICAgbV9qaXRDb2RlRm9yQ2FsbCA9
IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmljQ29kZUJsb2NrLT5qaXRDb2RlKCkgOiBudWxscHRy
Ow0KICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBudWxscHRyOw0KICAg
ICAgICBicmVhazsNCiAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6DQogICAgICAgIG1faml0Q29k
ZUZvckNvbnN0cnVjdCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmljQ29kZUJsb2NrLT5qaXRD
b2RlKCkgOiBudWxscHRyOw0KICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlD
aGVjayA9IG51bGxwdHI7DQogICAgICAgIGJyZWFrOw0KICAgIH0NCg0KICAgIGF1dG8mIGNsZWFy
YWJsZUNvZGVTZXQgPSBWTTo6U3BhY2VBbmRTZXQ6OnNldEZvcigqc3Vic3BhY2UoKSk7DQogICAg
aWYgKGhhc0NsZWFyYWJsZUNvZGUodm0pKQ0KICAgICAgICBjbGVhcmFibGVDb2RlU2V0LmFkZCh0
aGlzKTsNCiAgICBlbHNlDQogICAgICAgIGNsZWFyYWJsZUNvZGVTZXQucmVtb3ZlKHRoaXMpOw0K
DQogICAgaWYgKGdlbmVyaWNDb2RlQmxvY2spIHsNCiAgICAgICAgZG8geyBpZiAoKCEoZ2VuZXJp
Y0NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkgPT0gdGhpcykpKSBkbyB7IFdURjo6aXNJbnRl
Z3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0
aEluZm8oMTk2LCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIiwgIF9fRlVOQ1RJT05fXyAgLCAyMTMg
KTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgZG8geyBpZiAoKCEoSklU
Q29kZTo6aXNFeGVjdXRhYmxlU2NyaXB0KGdlbmVyaWNDb2RlQmxvY2stPmppdFR5cGUoKSkpKSkg
ZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFz
aCgpOyBXVEZDcmFzaFdpdGhJbmZvKDE5NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZV
TkNUSU9OX18gICwgMjE0ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAg
IA0KICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJJbnN0YWxsaW5n
ICIsICpnZW5lcmljQ29kZUJsb2NrKTsNCiAgICAgICAgDQogICAgICAgIGlmICgodm0ubV9wZXJC
eXRlY29kZVByb2ZpbGVyKSkNCiAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlci0+
ZW5zdXJlQnl0ZWNvZGVzRm9yKGdlbmVyaWNDb2RlQmxvY2spOw0KICAgICAgICANCiAgICAgICAg
RGVidWdnZXIqIGRlYnVnZ2VyID0gZ2VuZXJpY0NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRl
YnVnZ2VyKCk7DQogICAgICAgIGlmICgoZGVidWdnZXIpKQ0KICAgICAgICAgICAgZGVidWdnZXIt
PnJlZ2lzdGVyQ29kZUJsb2NrKGdlbmVyaWNDb2RlQmxvY2spOw0KICAgIH0NCg0KICAgIGlmIChv
bGRDb2RlQmxvY2spDQogICAgICAgIG9sZENvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygp
Ow0KDQogICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcyk7DQp9DQoNCmJvb2wgU2NyaXB0RXhl
Y3V0YWJsZTo6aGFzQ2xlYXJhYmxlQ29kZShWTSYgdm0pIGNvbnN0DQp7DQogICAgaWYgKG1faml0
Q29kZUZvckNhbGwNCiAgICAgICAgfHwgbV9qaXRDb2RlRm9yQ29uc3RydWN0DQogICAgICAgIHx8
IG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaw0KICAgICAgICB8fCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3RXaXRoQXJpdHlDaGVjaykNCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICBpZiAo
c3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkp
IHsNCiAgICAgICAgYXV0byogZXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KHRoaXMpOw0KICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9jb2RlQmxvY2tG
b3JDYWxsIHx8IGV4ZWN1dGFibGUtPm1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQ0KICAgICAgICAg
ICAgcmV0dXJuIHRydWU7DQoNCiAgICB9IGVsc2UgaWYgKHN0cnVjdHVyZSh2bSktPmNsYXNzSW5m
bygpID09IEV2YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsNCiAgICAgICAgYXV0byogZXhlY3V0YWJs
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEV2YWxFeGVjdXRhYmxlKj4odGhpcyk7DQogICAgICAgIGlm
IChleGVjdXRhYmxlLT5tX2V2YWxDb2RlQmxvY2sgfHwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2
YWxDb2RlQmxvY2spDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgIH0gZWxzZSBpZiAo
c3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCkgPT0gUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkg
ew0KICAgICAgICBhdXRvKiBleGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgUHJvZ3JhbUV4
ZWN1dGFibGUqPih0aGlzKTsNCiAgICAgICAgaWYgKGV4ZWN1dGFibGUtPm1fcHJvZ3JhbUNvZGVC
bG9jayB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jaykNCiAgICAgICAg
ICAgIHJldHVybiB0cnVlOw0KDQogICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUodm0pLT5jbGFzc0lu
Zm8oKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7DQogICAgICAgIGF1dG8q
IGV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxjb25zdCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+
KHRoaXMpOw0KICAgICAgICBpZiAoZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
DQogICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaw0KICAgICAgICAgICAgfHwgZXhlY3V0YWJsZS0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJv
bFRhYmxlKQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIHJldHVybiBmYWxz
ZTsNCn0NCg0KQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoDQog
ICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNT
Y29wZSogc2NvcGUsIEV4Y2VwdGlvbiomIGV4Y2VwdGlvbikNCnsNCiAgICBWTSYgdm0gPSBzY29w
ZS0+dm0oKTsNCiAgICBhdXRvIHRocm93U2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQoN
CiAgICAoKHZvaWQpMCk7DQogICAgKCh2b2lkKTApOw0KDQogICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOw0KDQogICAgaWYgKGNsYXNzSW5m
byh2bSkgPT0gRXZhbEV4ZWN1dGFibGU6OmluZm8oKSkgew0KICAgICAgICBFdmFsRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpOw0KICAgICAgICBk
byB7IGlmICgoIShraW5kID09IENvZGVGb3JDYWxsKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQ
b2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygy
NjEsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAiLCAgX19GVU5DVElPTl9fICAsIDIxNSApOyB9IHdo
aWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KICAgICAgICBkbyB7IGlmICgoISghZXhlY3V0YWJs
ZS0+bV9ldmFsQ29kZUJsb2NrKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgp
OyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygyNjIsICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5jcHAiLCAgX19GVU5DVElPTl9fICAsIDIxNiApOyB9IHdoaWxlIChmYWxzZSk7
IH0gd2hpbGUgKDApOw0KICAgICAgICBkbyB7IGlmICgoISghZnVuY3Rpb24pKSkgZG8geyBXVEY6
OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZD
cmFzaFdpdGhJbmZvKDI2MywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZVTkNUSU9OX18g
ICwgMjE3ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIGF1dG8gY29k
ZUJsb2NrID0gRXZhbENvZGVCbG9jazo6Y3JlYXRlKHZtLA0KICAgICAgICAgICAgZXhlY3V0YWJs
ZSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2suZ2V0KCksIHNjb3BlKTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoIWNvZGVCbG9jaykgew0KICAgICAgICAgICAg
ZXhjZXB0aW9uID0gdGhyb3dFeGNlcHRpb24oDQogICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLA0KICAgICAgICAgICAgICAgIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xv
YmFsT2JqZWN0KSk7DQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgfQ0KICAg
ICAgICByZXR1cm4gY29kZUJsb2NrOw0KICAgIH0NCiAgICANCiAgICBpZiAoY2xhc3NJbmZvKHZt
KSA9PSBQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7DQogICAgICAgIFByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7DQogICAg
ICAgIGRvIHsgaWYgKCghKGtpbmQgPT0gQ29kZUZvckNhbGwpKSkgZG8geyBXVEY6OmlzSW50ZWdy
YWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJ
bmZvKDI3OCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxccnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZVTkNUSU9OX18gICwgMjE4ICk7
IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIGRvIHsgaWYgKCghKCFleGVj
dXRhYmxlLT5tX3Byb2dyYW1Db2RlQmxvY2spKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50
ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI3OSwg
IkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZVTkNUSU9OX18gICwgMjE5ICk7IH0gd2hpbGUg
KGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIGRvIHsgaWYgKCghKCFmdW5jdGlvbikpKSBk
byB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNo
KCk7IFdURkNyYXNoV2l0aEluZm8oMjgwLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3Vy
Y2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIiwgIF9fRlVO
Q1RJT05fXyAgLCAyMjAgKTsgfSB3aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAg
YXV0byBjb2RlQmxvY2sgPSBQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGUodm0sDQogICAgICAgICAg
ICBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jay5nZXQo
KSwgc2NvcGUpOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIGlmICghY29kZUJsb2NrKSB7
DQogICAgICAgICAgICBleGNlcHRpb24gPSB0aHJvd0V4Y2VwdGlvbigNCiAgICAgICAgICAgICAg
ICBnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsDQogICAgICAgICAgICAgICAgY3JlYXRlT3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsNCiAgICAgICAgICAgIHJldHVybiBudWxscHRyOw0K
ICAgICAgICB9DQogICAgICAgIHJldHVybiBjb2RlQmxvY2s7DQogICAgfQ0KDQogICAgaWYgKGNs
YXNzSW5mbyh2bSkgPT0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmluZm8oKSkgew0KICAgICAg
ICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSo+KHRoaXMpOw0KICAgICAgICBkbyB7IGlmICgoIShraW5kID09IENvZGVG
b3JDYWxsKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZl
bmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygyOTUsICJGOlxcZ2l0UFxcV2ViS2l0XFx3
ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAiLCAgX19GVU5DVElPTl9fICAsIDIyMSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDAp
Ow0KICAgICAgICBkbyB7IGlmICgoISghZXhlY3V0YWJsZS0+bV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNl
Rm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygyOTYsICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJr
aXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAi
LCAgX19GVU5DVElPTl9fICAsIDIyMiApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0K
ICAgICAgICBkbyB7IGlmICgoISghZnVuY3Rpb24pKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBv
aW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDI5
NywgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZVTkNUSU9OX18gICwgMjIzICk7IH0gd2hp
bGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIGF1dG8gY29kZUJsb2NrID0gTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLA0KICAgICAgICAgICAgZXhlY3V0YWJsZSwgZXhl
Y3V0YWJsZS0+bV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCksIHNjb3BlKTsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICBpZiAoIWNvZGVCbG9jaykgew0KICAgICAgICAg
ICAgZXhjZXB0aW9uID0gdGhyb3dFeGNlcHRpb24oDQogICAgICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLA0KICAgICAgICAgICAgICAgIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
Z2xvYmFsT2JqZWN0KSk7DQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgfQ0K
ICAgICAgICByZXR1cm4gY29kZUJsb2NrOw0KICAgIH0NCg0KICAgIGRvIHsgaWYgKCghKGNsYXNz
SW5mbyh2bSkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlOjppbmZvKCkpKSkgZG8geyBXVEY6OmlzSW50
ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdp
dGhJbmZvKDMxMCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0
Q29yZVxccnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZVTkNUSU9OX18gICwgMjI0
ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgZG8geyBpZiAoKCEoZnVuY3Rp
b24pKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VG
b3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDMxMSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIs
ICBfX0ZVTkNUSU9OX18gICwgMjI1ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQog
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KHRoaXMpOw0KICAgIGRvIHsgaWYgKCghKCFleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Io
a2luZCkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVu
Y2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDMxMywgIkY6XFxnaXRQXFxXZWJLaXRcXHdl
YmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cCIsICBfX0ZVTkNUSU9OX18gICwgMjI2ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7
DQogICAgUGFyc2VyRXJyb3IgZXJyb3I7DQogICAgT3B0aW9uU2V0PENvZGVHZW5lcmF0aW9uTW9k
ZT4gY29kZUdlbmVyYXRpb25Nb2RlID0gZ2xvYmFsT2JqZWN0LT5kZWZhdWx0Q29kZUdlbmVyYXRp
b25Nb2RlKCk7DQogICAgDQogICAgDQogICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9u
Qm9keVBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpIHsNCiAgICAgICAgaWYgKCFt
X2NvZGVGb3JHZW5lcmF0b3JCb2R5V2FzR2VuZXJhdGVkKSB7DQogICAgICAgICAgICBtX2NvZGVH
ZW5lcmF0aW9uTW9kZUZvckdlbmVyYXRvckJvZHkgPSBjb2RlR2VuZXJhdGlvbk1vZGU7DQogICAg
ICAgICAgICBtX2NvZGVGb3JHZW5lcmF0b3JCb2R5V2FzR2VuZXJhdGVkID0gdHJ1ZTsNCiAgICAg
ICAgfSBlbHNlDQogICAgICAgICAgICBjb2RlR2VuZXJhdGlvbk1vZGUgPSBtX2NvZGVHZW5lcmF0
aW9uTW9kZUZvckdlbmVyYXRvckJvZHk7DQogICAgfQ0KICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gDQogICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5r
ZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0ZvcigNCiAgICAgICAgICAgIHZtLCBleGVj
dXRhYmxlLT5zb3VyY2UoKSwga2luZCwgY29kZUdlbmVyYXRpb25Nb2RlLCBlcnJvciwgDQogICAg
ICAgICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7DQogICAgcmVjb3JkUGFyc2UoDQogICAg
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCANCiAgICAg
ICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCksDQogICAgICAgIGxhc3RMaW5lKCksIGVuZENvbHVtbigpKTsgDQogICAgaWYgKCF1bmxpbmtl
ZENvZGVCbG9jaykgew0KICAgICAgICBleGNlcHRpb24gPSB0aHJvd0V4Y2VwdGlvbigNCiAgICAg
ICAgICAgIGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwNCiAgICAgICAgICAgIGVycm9yLnRvRXJy
b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOw0KICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsNCiAgICB9DQoNCiAgICBkbyB7IHRocm93U2NvcGUucmVsZWFzZSgpOyBy
ZXR1cm4gRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRD
b2RlQmxvY2ssIHNjb3BlKTsgfSB3aGlsZSAoZmFsc2UpOw0KfQ0KDQpDb2RlQmxvY2sqIFNjcmlw
dEV4ZWN1dGFibGU6Om5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9yKA0KICAgIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkNCnsNCiAgICBWTSYgdm0gPSB0aGlzLT52bSgpOw0KICAgIGlmIChj
bGFzc0luZm8odm0pID09IEV2YWxFeGVjdXRhYmxlOjppbmZvKCkpIHsNCiAgICAgICAgZG8geyBp
ZiAoKCEoa2luZCA9PSBDb2RlRm9yQ2FsbCkpKSBkbyB7IFdURjo6aXNJbnRlZ3JhbE9yUG9pbnRl
clR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0aEluZm8oMzQ4LCAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuY3BwIiwgIF9fRlVOQ1RJT05fXyAgLCAyMjcgKTsgfSB3aGlsZSAo
ZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKTsNCiAgICAgICAgRXZhbENvZGVCbG9jayog
YmFzZWxpbmUgPSBzdGF0aWNfY2FzdDxFdmFsQ29kZUJsb2NrKj4oDQogICAgICAgICAgICBleGVj
dXRhYmxlLT5jb2RlQmxvY2soKS0+YmFzZWxpbmVWZXJzaW9uKCkpOw0KICAgICAgICBFdmFsQ29k
ZUJsb2NrKiByZXN1bHQgPSBFdmFsQ29kZUJsb2NrOjpjcmVhdGUodm0sDQogICAgICAgICAgICBD
b2RlQmxvY2s6OkNvcHlQYXJzZWRCbG9jaywgKmJhc2VsaW5lKTsNCiAgICAgICAgcmVzdWx0LT5z
ZXRBbHRlcm5hdGl2ZSh2bSwgYmFzZWxpbmUpOw0KICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAg
IH0NCiAgICANCiAgICBpZiAoY2xhc3NJbmZvKHZtKSA9PSBQcm9ncmFtRXhlY3V0YWJsZTo6aW5m
bygpKSB7DQogICAgICAgIGRvIHsgaWYgKCghKGtpbmQgPT0gQ29kZUZvckNhbGwpKSkgZG8geyBX
VEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBX
VEZDcmFzaFdpdGhJbmZvKDM1OSwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZVTkNUSU9O
X18gICwgMjI4ICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIFByb2dy
YW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4odGhp
cyk7DQogICAgICAgIFByb2dyYW1Db2RlQmxvY2sqIGJhc2VsaW5lID0gc3RhdGljX2Nhc3Q8UHJv
Z3JhbUNvZGVCbG9jayo+KA0KICAgICAgICAgICAgZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCktPmJh
c2VsaW5lVmVyc2lvbigpKTsNCiAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayogcmVzdWx0ID0gUHJv
Z3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLA0KICAgICAgICAgICAgQ29kZUJsb2NrOjpDb3B5UGFy
c2VkQmxvY2ssICpiYXNlbGluZSk7DQogICAgICAgIHJlc3VsdC0+c2V0QWx0ZXJuYXRpdmUodm0s
IGJhc2VsaW5lKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICB9DQoNCiAgICBpZiAoY2xh
c3NJbmZvKHZtKSA9PSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6aW5mbygpKSB7DQogICAgICAg
IGRvIHsgaWYgKCghKGtpbmQgPT0gQ29kZUZvckNhbGwpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxP
clBvaW50ZXJUeXBlKCk7IGNvbXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZv
KDM3MCwgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCIsICBfX0ZVTkNUSU9OX18gICwgMjI5ICk7IH0g
d2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAoMCk7DQogICAgICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4odGhpcyk7
DQogICAgICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGJhc2VsaW5lID0gc3RhdGljX2Nhc3Q8
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KA0KICAgICAgICAgICAgZXhlY3V0YWJsZS0+Y29kZUJs
b2NrKCktPmJhc2VsaW5lVmVyc2lvbigpKTsNCiAgICAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogcmVzdWx0ID0gTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlKHZtLA0KICAgICAgICAg
ICAgQ29kZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNlbGluZSk7DQogICAgICAgIHJlc3Vs
dC0+c2V0QWx0ZXJuYXRpdmUodm0sIGJhc2VsaW5lKTsNCiAgICAgICAgcmV0dXJuIHJlc3VsdDsN
CiAgICB9DQoNCiAgICBkbyB7IGlmICgoIShjbGFzc0luZm8odm0pID09IEZ1bmN0aW9uRXhlY3V0
YWJsZTo6aW5mbygpKSkpIGRvIHsgV1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21w
aWxlckZlbmNlRm9yQ3Jhc2goKTsgV1RGQ3Jhc2hXaXRoSW5mbygzODAsICJGOlxcZ2l0UFxcV2Vi
S2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAiLCAgX19GVU5DVElPTl9fICAsIDIzMCApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hp
bGUgKDApOw0KICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPih0aGlzKTsNCiAgICBGdW5jdGlvbkNvZGVCbG9jayogYmFzZWxpbmUg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KA0KICAgICAgICBleGVjdXRhYmxlLT5j
b2RlQmxvY2tGb3Ioa2luZCktPmJhc2VsaW5lVmVyc2lvbigpKTsNCiAgICBGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwNCiAgICAgICAgQ29k
ZUJsb2NrOjpDb3B5UGFyc2VkQmxvY2ssICpiYXNlbGluZSk7DQogICAgcmVzdWx0LT5zZXRBbHRl
cm5hdGl2ZSh2bSwgYmFzZWxpbmUpOw0KICAgIHJldHVybiByZXN1bHQ7DQp9DQoNCnN0YXRpYyB2
b2lkIHNldHVwTExJbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spDQp7DQogICAgTExJbnQ6OnNldEVu
dHJ5cG9pbnQoY29kZUJsb2NrKTsNCn0NCg0Kc3RhdGljIHZvaWQgc2V0dXBKSVQoVk0mIHZtLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykNCnsNCg0KICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9
IEpJVDo6Y29tcGlsZSh2bSwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKTsN
CiAgICBkbyB7IGlmICgoIShyZXN1bHQgPT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKSkpIGRvIHsg
V1RGOjppc0ludGVncmFsT3JQb2ludGVyVHlwZSgpOyBjb21waWxlckZlbmNlRm9yQ3Jhc2goKTsg
V1RGQ3Jhc2hXaXRoSW5mbygzOTksICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAiLCAgX19GVU5DVElP
Tl9fICAsIDIzMSApOyB9IHdoaWxlIChmYWxzZSk7IH0gd2hpbGUgKDApOw0KDQoNCg0KDQojbGlu
ZSA0MDUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxc
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCINCn0NCg0KRXhjZXB0aW9uKiBTY3JpcHRFeGVj
dXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgNCiAgICBWTSYgdm0sIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBD
b2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spDQp7DQogICAgYXV0byB0aHJvd1Njb3BlID0gSlND
OjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFw
KTsNCg0KICAgIGlmICgodm0uZ2V0QW5kQ2xlYXJGYWlsTmV4dE5ld0NvZGVCbG9jaygpKSkgew0K
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc2NvcGUtPmdsb2JhbE9iamVj
dCh2bSk7DQogICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkZvcmNlZCBGYWlsdXJlIl9zKSk7DQog
ICAgfQ0KDQogICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBudWxscHRyOw0KICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gbmV3Q29kZUJsb2NrRm9yKGtpbmQsIGZ1bmN0aW9uLCBzY29wZSwgZXhj
ZXB0aW9uKTsNCiAgICByZXN1bHRDb2RlQmxvY2sgPSBjb2RlQmxvY2s7DQogICAgKCh2b2lkKTAp
Ow0KICAgIGlmICgoIWNvZGVCbG9jaykpDQogICAgICAgIHJldHVybiBleGNlcHRpb247DQogICAg
DQogICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlQnl0ZWNvZGUoKSkNCiAgICAgICAgY29kZUJsb2Nr
LT52YWxpZGF0ZSgpOw0KICAgIA0KICAgIGlmIChPcHRpb25zOjp1c2VMTEludCgpKQ0KICAgICAg
ICBzZXR1cExMSW50KGNvZGVCbG9jayk7DQogICAgZWxzZQ0KICAgICAgICBzZXR1cEpJVCh2bSwg
Y29kZUJsb2NrKTsNCiAgICANCiAgICBpbnN0YWxsQ29kZSh2bSwgY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmNvZGVUeXBlKCksIGNvZGVCbG9jay0+c3BlY2lhbGl6YXRpb25LaW5kKCkpOw0KICAgIHJl
dHVybiBudWxscHRyOw0KfQ0KDQpTY3JpcHRFeGVjdXRhYmxlKiBTY3JpcHRFeGVjdXRhYmxlOjp0
b3BMZXZlbEV4ZWN1dGFibGUoKQ0Kew0KICAgIHN3aXRjaCAodHlwZSgpKSB7DQogICAgY2FzZSBG
dW5jdGlvbkV4ZWN1dGFibGVUeXBlOg0KICAgICAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KHRoaXMpLT50b3BMZXZlbEV4ZWN1dGFibGUoKTsNCiAgICBkZWZhdWx0Og0KICAg
ICAgICByZXR1cm4gdGhpczsNCiAgICB9DQp9DQoNCkpTQXJyYXkqIFNjcmlwdEV4ZWN1dGFibGU6
OmNyZWF0ZVRlbXBsYXRlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQ0Kew0KICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0K
DQogICAgVGVtcGxhdGVPYmplY3RNYXAmIHRlbXBsYXRlT2JqZWN0TWFwID0gZW5zdXJlVGVtcGxh
dGVPYmplY3RNYXAodm0pOw0KICAgIFRlbXBsYXRlT2JqZWN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0
Ow0KICAgIHsNCiAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxsTG9jaygpKTsNCiAg
ICAgICAgcmVzdWx0ID0gdGVtcGxhdGVPYmplY3RNYXAuYWRkKGRlc2NyaXB0b3ItPmVuZE9mZnNl
dCgpLCBXcml0ZUJhcnJpZXI8SlNBcnJheT4oKSk7DQogICAgfQ0KICAgIGlmIChKU0FycmF5KiBh
cnJheSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpDQogICAgICAgIHJldHVybiBhcnJh
eTsNCiAgICBKU0FycmF5KiB0ZW1wbGF0ZU9iamVjdCA9IGRlc2NyaXB0b3ItPmNyZWF0ZVRlbXBs
YXRlT2JqZWN0KGdsb2JhbE9iamVjdCk7DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9u
KCkpKSByZXR1cm4gbnVsbHB0cjsgfSB3aGlsZSAoZmFsc2UpOw0KICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuc2V0KHZtLCB0aGlzLCB0ZW1wbGF0ZU9iamVjdCk7DQogICAgcmV0dXJuIHRlbXBs
YXRlT2JqZWN0Ow0KfQ0KDQphdXRvIFNjcmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRlbXBsYXRlT2Jq
ZWN0TWFwSW1wbChzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplY3RNYXA+JiBkZXN0KSAtPiBU
ZW1wbGF0ZU9iamVjdE1hcCYNCnsNCiAgICBpZiAoZGVzdCkNCiAgICAgICAgcmV0dXJuICpkZXN0
Ow0KICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsNCiAg
ICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOw0KICAgIGRlc3QgPSBzdGQ6Om1vdmU8V1RGOjpDaGVj
a01vdmVQYXJhbWV0ZXI+KHJlc3VsdCk7DQogICAgcmV0dXJuICpkZXN0Ow0KfQ0KDQphdXRvIFNj
cmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKFZNJiB2bSkgLT4gVGVtcGxh
dGVPYmplY3RNYXAmDQp7DQogICAgc3dpdGNoICh0eXBlKCkpIHsNCiAgICBjYXNlIEZ1bmN0aW9u
RXhlY3V0YWJsZVR5cGU6DQogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPih0aGlzKS0+ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAodm0pOw0KICAgIGNhc2UgRXZh
bEV4ZWN1dGFibGVUeXBlOg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFi
bGUqPih0aGlzKS0+ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAodm0pOw0KICAgIGNhc2UgUHJvZ3Jh
bUV4ZWN1dGFibGVUeXBlOg0KICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1
dGFibGUqPih0aGlzKS0+ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXAodm0pOw0KICAgIGNhc2UgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOg0KICAgIGRlZmF1bHQ6DQogICAgICAgICgodm9pZCkw
KTsNCiAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4o
dGhpcyktPmVuc3VyZVRlbXBsYXRlT2JqZWN0TWFwKHZtKTsNCiAgICB9DQp9DQoNCkNvZGVCbG9j
a0hhc2ggU2NyaXB0RXhlY3V0YWJsZTo6aGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpIGNvbnN0DQp7DQogICAgcmV0dXJuIENvZGVCbG9ja0hhc2goc291cmNlKCksIGtpbmQpOw0K
fQ0KDQpPcHRpb25hbDxpbnQ+IFNjcmlwdEV4ZWN1dGFibGU6Om92ZXJyaWRlTGluZU51bWJlcihW
TSYgdm0pIGNvbnN0DQp7DQogICAgaWYgKGluaGVyaXRzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0p
KQ0KICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMp
LT5vdmVycmlkZUxpbmVOdW1iZXIoKTsNCiAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KfQ0KDQp1
bnNpZ25lZCBTY3JpcHRFeGVjdXRhYmxlOjp0eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoVk0mIHZt
KSBjb25zdA0Kew0KICAgIGlmIChpbmhlcml0czxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKSkNCiAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKS0+dHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KHZtKTsNCiAgICBpZiAoaW5oZXJpdHM8RXZhbEV4ZWN1dGFi
bGU+KHZtKSkNCiAgICAgICAgcmV0dXJuIDB4ZmZmZmZmZmY7DQogICAgcmV0dXJuIDA7DQp9DQoN
CnVuc2lnbmVkIFNjcmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoVk0mIHZt
KSBjb25zdA0Kew0KICAgIGlmIChpbmhlcml0czxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtKSkNCiAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBGdW5jdGlvbkV4ZWN1dGFibGUqPih0aGlzKS0+dHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCh2bSk7DQogICAgaWYgKGluaGVyaXRzPEV2YWxFeGVjdXRhYmxl
Pih2bSkpDQogICAgICAgIHJldHVybiAweGZmZmZmZmZmOw0KICAgIHJldHVybiBzb3VyY2UoKS5s
ZW5ndGgoKSAtIDE7DQp9DQoNCnZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6cmVjb3JkUGFyc2UoQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzLCBpbnQgbGFzdExp
bmUsIHVuc2lnbmVkIGVuZENvbHVtbikNCnsNCiAgICBzd2l0Y2ggKHR5cGUoKSkgew0KICAgIGNh
c2UgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZToNCiAgICAgICAgDQogICAgICAgIGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPih0aGlzKS0+cmVjb3JkUGFyc2UoZmVhdHVyZXMsIGhhc0NhcHR1cmVk
VmFyaWFibGVzKTsNCiAgICAgICAgcmV0dXJuOw0KICAgIGRlZmF1bHQ6DQogICAgICAgIGpzQ2Fz
dDxHbG9iYWxFeGVjdXRhYmxlKj4odGhpcyktPnJlY29yZFBhcnNlKGZlYXR1cmVzLCBoYXNDYXB0
dXJlZFZhcmlhYmxlcywgbGFzdExpbmUsIGVuZENvbHVtbik7DQogICAgICAgIHJldHVybjsNCiAg
ICB9DQp9DQoNCmludCBTY3JpcHRFeGVjdXRhYmxlOjpsYXN0TGluZSgpIGNvbnN0DQp7DQogICAg
c3dpdGNoICh0eXBlKCkpIHsNCiAgICBjYXNlIEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU6DQogICAg
ICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgRnVuY3Rpb25FeGVjdXRhYmxlKj4odGhpcyktPmxhc3RM
aW5lKCk7DQogICAgZGVmYXVsdDoNCiAgICAgICAgcmV0dXJuIGpzQ2FzdDxjb25zdCBHbG9iYWxF
eGVjdXRhYmxlKj4odGhpcyktPmxhc3RMaW5lKCk7DQogICAgfQ0KICAgIHJldHVybiAwOw0KfQ0K
DQp1bnNpZ25lZCBTY3JpcHRFeGVjdXRhYmxlOjplbmRDb2x1bW4oKSBjb25zdA0Kew0KICAgIHN3
aXRjaCAodHlwZSgpKSB7DQogICAgY2FzZSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOg0KICAgICAg
ICByZXR1cm4ganNDYXN0PGNvbnN0IEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpLT5lbmRDb2x1
bW4oKTsNCiAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEdsb2JhbEV4
ZWN1dGFibGUqPih0aGlzKS0+ZW5kQ29sdW1uKCk7DQogICAgfQ0KICAgIHJldHVybiAwOw0KfQ0K
DQp9IA0KI2xpbmUgNyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2
YVNjcmlwdENvcmVcXERlcml2ZWRTb3VyY2VzXFx1bmlmaWVkLXNvdXJjZXNcXFVuaWZpZWRTb3Vy
Y2UtZjJlMThmZmMtMzIuY3BwIg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxT
b3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCINCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI2xpbmUgMSAiRjpc
XGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxjb25maWcuaCIN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSAyNSAi
RjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxjb25maWcu
aCINCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojbGluZSA0MCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxjb25maWcuaCINCg0KDQojbGluZSAy
NyAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50
aW1lL1NldENvbnN0cnVjdG9yLmNwcCINCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcU2V0Q29uc3RydWN0b3IuaCINCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBv
bmNlDQoNCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0KY2xhc3MgU2V0UHJvdG90eXBlOw0KY2xhc3Mg
R2V0dGVyU2V0dGVyOw0KDQpjbGFzcyBTZXRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsNCnB1YmxpYzoNCiAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsNCg0KICAgIHN0YXRpYyBTZXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFNldFByb3RvdHlwZSogc2V0UHJvdG90eXBlLCBHZXR0ZXJTZXR0ZXIqIHNw
ZWNpZXNTeW1ib2wpDQogICAgew0KICAgICAgICBTZXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTZXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFNl
dENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNo
Q3JlYXRpb24odm0sIHNldFByb3RvdHlwZSwgc3BlY2llc1N5bWJvbCk7DQogICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsNCiAgICB9DQoNCiAgICBwcm90ZWN0ZWQ6IHN0YXRpYyBjb25zdCA6OkpT
Qzo6Q2xhc3NJbmZvIHNfaW5mbzsgcHVibGljOiBzdGF0aWMgY29uc3RleHByIGNvbnN0IDo6SlND
OjpDbGFzc0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9Ow0KDQogICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0KICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1
bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0NCg0KcHJpdmF0ZToN
CiAgICBTZXRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOw0KICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBTZXRQcm90b3R5cGUqLCBHZXR0ZXJTZXR0ZXIqIHNwZWNpZXNTeW1ib2wpOw0K
fTsNCnN0YXRpY19hc3NlcnQoc2l6ZW9mKFNldENvbnN0cnVjdG9yKSA9PSBzaXplb2YoSW50ZXJu
YWxGdW5jdGlvbikpOyBzdGF0aWNfYXNzZXJ0KFNldENvbnN0cnVjdG9yOjpkZXN0cm95ID09IElu
dGVybmFsRnVuY3Rpb246OmRlc3Ryb3kpOzsNCg0KRW5jb2RlZEpTVmFsdWUgIHNldFByaXZhdGVG
dW5jU2V0QnVja2V0SGVhZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOw0KRW5jb2RlZEpT
VmFsdWUgIHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOw0KRW5jb2RlZEpTVmFsdWUgIHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQoNCn0gDQojbGluZSAyOCAiRjpcXGdpdFBcXFdlYktp
dFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRDb3JlXFxydW50aW1lL1NldENvbnN0cnVjdG9y
LmNwcCINCg0KI2xpbmUgMSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lXFxJdGVyYXRvck9wZXJhdGlvbnMuaCINCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojcHJhZ21hIG9uY2UNCg0KDQoN
Cg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0Kc3RydWN0IEl0ZXJhdGlvblJlY29yZCB7DQogICAgSlNW
YWx1ZSBpdGVyYXRvcjsNCiAgICBKU1ZhbHVlIG5leHRNZXRob2Q7DQp9Ow0KDQpKU1ZhbHVlIGl0
ZXJhdG9yTmV4dChKU0dsb2JhbE9iamVjdCosIEl0ZXJhdGlvblJlY29yZCwgSlNWYWx1ZSBhcmd1
bWVudCA9IEpTVmFsdWUoKSk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgSlNWYWx1ZSBpdGVyYXRv
clZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBpdGVyUmVzdWx0KTsNCmJvb2wgaXRlcmF0
b3JDb21wbGV0ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaXRlclJlc3VsdCk7DQpfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgSlNWYWx1ZSBpdGVyYXRvclN0ZXAoSlNHbG9iYWxPYmplY3QqLCBJdGVy
YXRpb25SZWNvcmQpOw0KX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQgaXRlcmF0b3JDbG9zZShK
U0dsb2JhbE9iamVjdCosIEl0ZXJhdGlvblJlY29yZCk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
SlNPYmplY3QqIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSwgYm9vbCBkb25lKTsNCg0KU3RydWN0dXJlKiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVj
dFN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Jik7DQoNCl9fZGVjbHNwZWMoZGxsZXhwb3J0
KSBKU1ZhbHVlIGl0ZXJhdG9yTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsNCl9f
ZGVjbHNwZWMoZGxsZXhwb3J0KSBJdGVyYXRpb25SZWNvcmQgaXRlcmF0b3JGb3JJdGVyYWJsZShK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgSlNWYWx1ZSBpdGVyYXRvck1ldGhvZCk7DQpfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdG9yRm9ySXRlcmFibGUoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIGl0ZXJhYmxlKTsNCg0KX19kZWNsc3BlYyhkbGxleHBvcnQp
IEpTVmFsdWUgaXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOw0KX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsNCg0KdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbEJhY2tUeXBlPg0Kdm9pZCBmb3JF
YWNoSW5JdGVyYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZXJh
YmxlLCBjb25zdCBDYWxsQmFja1R5cGUmIGNhbGxiYWNrKQ0Kew0KICAgIGF1dG8mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkp
Ow0KDQogICAgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY29yZCA9IGl0ZXJhdG9yRm9ySXRl
cmFibGUoZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSk7DQogICAgZG8geyBpZiAoKChzY29wZSkuZXhj
ZXB0aW9uKCkpKSByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChmYWxzZSk7DQogICAgd2hpbGUgKHRy
dWUpIHsNCiAgICAgICAgSlNWYWx1ZSBuZXh0ID0gaXRlcmF0b3JTdGVwKGdsb2JhbE9iamVjdCwg
aXRlcmF0aW9uUmVjb3JkKTsNCiAgICAgICAgaWYgKChzY29wZS5leGNlcHRpb24oKSkgfHwgbmV4
dC5pc0ZhbHNlKCkpDQogICAgICAgICAgICByZXR1cm47DQoNCiAgICAgICAgSlNWYWx1ZSBuZXh0
VmFsdWUgPSBpdGVyYXRvclZhbHVlKGdsb2JhbE9iamVjdCwgbmV4dCk7DQogICAgICAgIGRvIHsg
aWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIHZvaWQoKTsgfSB3aGlsZSAoZmFsc2Up
Ow0KDQogICAgICAgIGNhbGxiYWNrKHZtLCBnbG9iYWxPYmplY3QsIG5leHRWYWx1ZSk7DQogICAg
ICAgIGlmICgoc2NvcGUuZXhjZXB0aW9uKCkpKSB7DQogICAgICAgICAgICBzY29wZS5yZWxlYXNl
KCk7DQogICAgICAgICAgICBpdGVyYXRvckNsb3NlKGdsb2JhbE9iamVjdCwgaXRlcmF0aW9uUmVj
b3JkKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbEJhY2tUeXBlPg0Kdm9pZCBmb3JFYWNoSW5JdGVyYWJsZShKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaXRlcmFibGUsIEpTVmFsdWUgaXRlcmF0
b3JNZXRob2QsIGNvbnN0IENhbGxCYWNrVHlwZSYgY2FsbGJhY2spDQp7DQogICAgYXV0byYgdm0g
PSBnZXRWTSgmZ2xvYmFsT2JqZWN0KTsNCiAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3Bl
KCh2bSkpOw0KDQogICAgYXV0byBpdGVyYXRpb25SZWNvcmQgPSBpdGVyYXRvckZvckl0ZXJhYmxl
KCZnbG9iYWxPYmplY3QsIGl0ZXJhYmxlLCBpdGVyYXRvck1ldGhvZCk7DQogICAgZG8geyBpZiAo
KChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChmYWxzZSk7DQog
ICAgd2hpbGUgKHRydWUpIHsNCiAgICAgICAgSlNWYWx1ZSBuZXh0ID0gaXRlcmF0b3JTdGVwKCZn
bG9iYWxPYmplY3QsIGl0ZXJhdGlvblJlY29yZCk7DQogICAgICAgIGlmICgoc2NvcGUuZXhjZXB0
aW9uKCkpIHx8IG5leHQuaXNGYWxzZSgpKQ0KICAgICAgICAgICAgcmV0dXJuOw0KDQogICAgICAg
IEpTVmFsdWUgbmV4dFZhbHVlID0gaXRlcmF0b3JWYWx1ZSgmZ2xvYmFsT2JqZWN0LCBuZXh0KTsN
CiAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkpKSByZXR1cm4gdm9pZCgpOyB9
IHdoaWxlIChmYWxzZSk7DQoNCiAgICAgICAgY2FsbGJhY2sodm0sIGdsb2JhbE9iamVjdCwgbmV4
dFZhbHVlKTsNCiAgICAgICAgaWYgKChzY29wZS5leGNlcHRpb24oKSkpIHsNCiAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsNCiAgICAgICAgICAgIGl0ZXJhdG9yQ2xvc2UoJmdsb2JhbE9iamVj
dCwgaXRlcmF0aW9uUmVjb3JkKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAg
IH0NCn0NCg0KfSANCiNsaW5lIDMwICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxc
SmF2YVNjcmlwdENvcmVcXHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIg0KDQojbGluZSAxICJG
OlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVc
XEpTU2V0LmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCiNwcmFnbWEgb25jZQ0KDQojbGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNv
dXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXEhhc2hNYXBJbXBsLmgiDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoN
Cg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgQ2xh
c3NJbmZvKiBnZXRIYXNoTWFwQnVja2V0S2V5Q2xhc3NJbmZvKCk7DQpfX2RlY2xzcGVjKGRsbGV4
cG9ydCkgY29uc3QgQ2xhc3NJbmZvKiBnZXRIYXNoTWFwQnVja2V0S2V5VmFsdWVDbGFzc0luZm8o
KTsNCl9fZGVjbHNwZWMoZGxsZXhwb3J0KSBjb25zdCBDbGFzc0luZm8qIGdldEhhc2hNYXBJbXBs
S2V5Q2xhc3NJbmZvKCk7DQpfX2RlY2xzcGVjKGRsbGV4cG9ydCkgY29uc3QgQ2xhc3NJbmZvKiBn
ZXRIYXNoTWFwSW1wbEtleVZhbHVlQ2xhc3NJbmZvKCk7DQoNCmVudW0gY2xhc3MgSGFzaFRhYmxl
VHlwZSB7DQogICAgS2V5LA0KICAgIEtleVZhbHVlDQp9Ow0KDQpzdHJ1Y3QgSGFzaE1hcEJ1Y2tl
dERhdGFLZXkgew0KICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGVUeXBlIFR5cGUgPSBIYXNoVGFi
bGVUeXBlOjpLZXk7DQogICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGtleTsNCn07DQoNCnN0cnVj
dCBIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVlIHsNCiAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VHlwZSBUeXBlID0gSGFzaFRhYmxlVHlwZTo6S2V5VmFsdWU7DQogICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+IGtleTsNCiAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gdmFsdWU7DQp9Ow0KDQp0ZW1w
bGF0ZSA8dHlwZW5hbWUgRGF0YT4NCmNsYXNzIEhhc2hNYXBCdWNrZXQgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsNCiAgICB1c2luZyBCYXNlID0gSlNDZWxsOw0KDQogICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQgPSBEYXRhPg0KICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8VCwgSGFzaE1hcEJ1Y2tldERhdGFLZXk+Ojp2YWx1ZSwgU3RydWN0dXJlKj46OnR5cGUg
c2VsZWN0U3RydWN0dXJlKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiB2bS5oYXNoTWFw
QnVja2V0U2V0U3RydWN0dXJlLmdldCgpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUID0gRGF0YT4NCiAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19z
YW1lPFQsIEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+Ojp2YWx1ZSwgU3RydWN0dXJlKj46OnR5
cGUgc2VsZWN0U3RydWN0dXJlKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiB2bS5oYXNo
TWFwQnVja2V0TWFwU3RydWN0dXJlLmdldCgpOw0KICAgIH0NCg0KcHVibGljOg0KICAgIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVUeXBlIFR5cGUgPSBEYXRhOjpUeXBlOw0KICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gc19pbmZvOyANCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2VzcyBtb2RlPg0KICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
Vk0mIHZtKQ0KICAgIHsNCiAgICAgICAgaWYgY29uc3RleHByIChUeXBlID09IEhhc2hUYWJsZVR5
cGU6OktleSkNCiAgICAgICAgICAgIHJldHVybiB2bS5zZXRCdWNrZXRTcGFjZTxtb2RlPigpOw0K
ICAgICAgICBlbHNlDQogICAgICAgICAgICByZXR1cm4gdm0ubWFwQnVja2V0U3BhY2U8bW9kZT4o
KTsNCiAgICB9DQoNCiAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvKiBpbmZvKCkNCiAgICB7DQog
ICAgICAgIGlmIGNvbnN0ZXhwciAoVHlwZSA9PSBIYXNoVGFibGVUeXBlOjpLZXkpDQogICAgICAg
ICAgICByZXR1cm4gZ2V0SGFzaE1hcEJ1Y2tldEtleUNsYXNzSW5mbygpOw0KICAgICAgICBlbHNl
DQogICAgICAgICAgICByZXR1cm4gZ2V0SGFzaE1hcEJ1Y2tldEtleVZhbHVlQ2xhc3NJbmZvKCk7
DQogICAgfQ0KDQogICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpDQogICAgew0K
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOw0KICAgIH0N
Cg0KICAgIHN0YXRpYyBIYXNoTWFwQnVja2V0KiBjcmVhdGUoVk0mIHZtKQ0KICAgIHsNCiAgICAg
ICAgSGFzaE1hcEJ1Y2tldCogYnVja2V0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SGFz
aE1hcEJ1Y2tldDxEYXRhPj4odm0uaGVhcCkpIEhhc2hNYXBCdWNrZXQodm0sIHNlbGVjdFN0cnVj
dHVyZSh2bSkpOw0KICAgICAgICBidWNrZXQtPmZpbmlzaENyZWF0aW9uKHZtKTsNCiAgICAgICAg
KCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJldHVybiBidWNrZXQ7DQog
ICAgfQ0KDQogICAgc3RhdGljIEhhc2hNYXBCdWNrZXQqIGNyZWF0ZVNlbnRpbmVsKFZNJiB2bSkN
CiAgICB7DQogICAgICAgIGF1dG8qIGJ1Y2tldCA9IGNyZWF0ZSh2bSk7DQogICAgICAgIGJ1Y2tl
dC0+c2V0S2V5KHZtLCBqc1VuZGVmaW5lZCgpKTsNCiAgICAgICAgYnVja2V0LT5zZXRWYWx1ZSh2
bSwganNVbmRlZmluZWQoKSk7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGJ1
Y2tldDsNCiAgICB9DQoNCiAgICBIYXNoTWFwQnVja2V0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpDQogICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQ0KICAgIHsNCiAgICAgICAgKCh2
b2lkKTApOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXROZXh0KFZNJiB2bSwg
SGFzaE1hcEJ1Y2tldCogYnVja2V0KQ0KICAgIHsNCiAgICAgICAgbV9uZXh0LnNldCh2bSwgdGhp
cywgYnVja2V0KTsNCiAgICB9DQogICAgX19mb3JjZWlubGluZSB2b2lkIHNldFByZXYoVk0mIHZt
LCBIYXNoTWFwQnVja2V0KiBidWNrZXQpDQogICAgew0KICAgICAgICBtX3ByZXYuc2V0KHZtLCB0
aGlzLCBidWNrZXQpOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBzZXRLZXkoVk0m
IHZtLCBKU1ZhbHVlIGtleSkNCiAgICB7DQogICAgICAgIG1fZGF0YS5rZXkuc2V0KHZtLCB0aGlz
LCBrZXkpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUID0gRGF0YT4NCiAgICBf
X2ZvcmNlaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBIYXNo
TWFwQnVja2V0RGF0YUtleVZhbHVlPjo6dmFsdWU+Ojp0eXBlIHNldFZhbHVlKFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkNCiAgICB7DQogICAgICAgIG1fZGF0YS52YWx1ZS5zZXQodm0sIHRoaXMsIHZh
bHVlKTsNCiAgICB9DQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBEYXRhPg0KICAgIF9fZm9y
Y2VpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIEhhc2hNYXBC
dWNrZXREYXRhS2V5Pjo6dmFsdWU+Ojp0eXBlIHNldFZhbHVlKFZNJiwgSlNWYWx1ZSkgeyB9DQoN
CiAgICBfX2ZvcmNlaW5saW5lIEpTVmFsdWUga2V5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmtl
eS5nZXQoKTsgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBEYXRhPg0KICAgIF9fZm9y
Y2VpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIEhhc2hNYXBC
dWNrZXREYXRhS2V5VmFsdWU+Ojp2YWx1ZSwgSlNWYWx1ZT46OnR5cGUgdmFsdWUoKSBjb25zdA0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIG1fZGF0YS52YWx1ZS5nZXQoKTsNCiAgICB9DQoNCiAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7DQoNCiAgICBf
X2ZvcmNlaW5saW5lIEhhc2hNYXBCdWNrZXQqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQu
Z2V0KCk7IH0NCiAgICBfX2ZvcmNlaW5saW5lIEhhc2hNYXBCdWNrZXQqIHByZXYoKSBjb25zdCB7
IHJldHVybiBtX3ByZXYuZ2V0KCk7IH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCBkZWxldGVk
KCkgY29uc3QgeyByZXR1cm4gIWtleSgpOyB9DQogICAgX19mb3JjZWlubGluZSB2b2lkIG1ha2VE
ZWxldGVkKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHNldEtleSh2bSwgSlNWYWx1ZSgpKTsNCiAg
ICAgICAgc2V0VmFsdWUodm0sIEpTVmFsdWUoKSk7DQogICAgfQ0KDQogICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZktleSgpDQogICAgew0KICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nh
c3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8SGFzaE1hcEJ1Y2tldCo+KDB4NDAwMCkt
Pm1fZGF0YSkpIC0gMHg0MDAwKSArIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWlu
dGVycHJldF9jYXN0PERhdGEqPigweDQwMDApLT5rZXkpKSAtIDB4NDAwMCk7DQogICAgfQ0KDQog
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBEYXRhPg0KICAgIHN0YXRpYyB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgSGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OnZh
bHVlLCBwdHJkaWZmX3Q+Ojp0eXBlIG9mZnNldE9mVmFsdWUoKQ0KICAgIHsNCiAgICAgICAgcmV0
dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEhhc2hN
YXBCdWNrZXQqPigweDQwMDApLT5tX2RhdGEpKSAtIDB4NDAwMCkgKyAocmVpbnRlcnByZXRfY2Fz
dDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxEYXRhKj4oMHg0MDAwKS0+dmFsdWUpKSAt
IDB4NDAwMCk7DQogICAgfQ0KDQogICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5leHQoKQ0K
ICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWlu
dGVycHJldF9jYXN0PEhhc2hNYXBCdWNrZXQqPigweDQwMDApLT5tX25leHQpKSAtIDB4NDAwMCk7
DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBEYXRhPg0KICAgIF9fZm9yY2Vp
bmxpbmUgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBIYXNo
TWFwQnVja2V0RGF0YUtleVZhbHVlPjo6dmFsdWUsIEpTVmFsdWU+Ojp0eXBlIGV4dHJhY3RWYWx1
ZShjb25zdCBIYXNoTWFwQnVja2V0JiBidWNrZXQpDQogICAgew0KICAgICAgICByZXR1cm4gYnVj
a2V0LnZhbHVlKCk7DQogICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBEYXRhPg0K
ICAgIF9fZm9yY2VpbmxpbmUgc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTxULCBIYXNoTWFwQnVja2V0RGF0YUtleT46OnZhbHVlLCBKU1ZhbHVlPjo6dHlwZSBleHRy
YWN0VmFsdWUoY29uc3QgSGFzaE1hcEJ1Y2tldCYpDQogICAgew0KICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOw0KICAgIH0NCg0KcHJpdmF0ZToNCiAgICBXcml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tl
dD4gbV9uZXh0Ow0KICAgIFdyaXRlQmFycmllcjxIYXNoTWFwQnVja2V0PiBtX3ByZXY7DQogICAg
RGF0YSBtX2RhdGE7DQp9Ow0KDQp0ZW1wbGF0ZSA8dHlwZW5hbWUgQnVja2V0VHlwZT4NCmNsYXNz
IEhhc2hNYXBCdWZmZXIgew0KcHVibGljOg0KICAgIEhhc2hNYXBCdWZmZXIoKSA9IGRlbGV0ZTsN
Cg0KICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGNhcGFj
aXR5KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChjYXBhY2l0eSAqIHNpemVvZihCdWNrZXRUeXBl
KikpLnVuc2FmZUdldCgpOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgQnVja2V0VHlwZSoq
IGJ1ZmZlcigpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEJ1Y2tl
dFR5cGUqKj4odGhpcyk7DQogICAgfQ0KDQogICAgc3RhdGljIEhhc2hNYXBCdWZmZXIqIGNyZWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTQ2VsbCosIHVpbnQzMl90
IGNhcGFjaXR5KQ0KICAgIHsNCiAgICAgICAgYXV0byBzY29wZSA9IEpTQzo6VGhyb3dTY29wZSgo
dm0pKTsNCiAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSGFzaE1hcEJ1ZmZlcjo6YWxs
b2NhdGlvblNpemUoY2FwYWNpdHkpOw0KICAgICAgICB2b2lkKiBkYXRhID0gdm0uanNWYWx1ZUdp
Z2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6
ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsNCiAgICAgICAg
aWYgKCFkYXRhKSB7DQogICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7DQogICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsNCiAgICAgICAgfQ0KDQog
ICAgICAgIEhhc2hNYXBCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEhhc2hNYXBCdWZmZXIq
PihkYXRhKTsNCiAgICAgICAgYnVmZmVyLT5yZXNldChjYXBhY2l0eSk7DQogICAgICAgIHJldHVy
biBidWZmZXI7DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSB2b2lkIHJlc2V0KHVpbnQzMl90
IGNhcGFjaXR5KQ0KICAgIHsNCiAgICAgICAgbWVtc2V0KHRoaXMsIC0xLCBhbGxvY2F0aW9uU2l6
ZShjYXBhY2l0eSkpOw0KICAgIH0NCn07DQoNCl9fZm9yY2VpbmxpbmUgc3RhdGljIGJvb2wgYXJl
S2V5c0VxdWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYSwgSlNWYWx1
ZSBiKQ0Kew0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgIHJldHVybiBzYW1lVmFsdWUoZ2xv
YmFsT2JqZWN0LCBhLCBiKTsNCn0NCg0KDQoNCl9fZm9yY2VpbmxpbmUgSlNWYWx1ZSBub3JtYWxp
emVNYXBLZXkoSlNWYWx1ZSBrZXkpDQp7DQogICAgaWYgKCFrZXkuaXNOdW1iZXIoKSkNCiAgICAg
ICAgcmV0dXJuIGtleTsNCg0KICAgIGlmIChrZXkuaXNJbnQzMigpKQ0KICAgICAgICByZXR1cm4g
a2V5Ow0KDQogICAgZG91YmxlIGQgPSBrZXkuYXNEb3VibGUoKTsNCiAgICBpZiAoc3RkOjppc25h
bihkKSkNCiAgICAgICAgcmV0dXJuIGpzTmFOKCk7DQoNCiAgICBpbnQgaSA9IHN0YXRpY19jYXN0
PGludD4oZCk7DQogICAgaWYgKGkgPT0gZCkgew0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IHJldHVybiBqc051bWJlcihpKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIGtleTsNCn0NCg0K
c3RhdGljIF9fZm9yY2VpbmxpbmUgdWludDMyX3Qgd2FuZ3NJbnQ2NEhhc2godWludDY0X3Qga2V5
KQ0Kew0KICAgIGtleSArPSB+KGtleSA8PCAzMik7DQogICAga2V5IF49IChrZXkgPj4gMjIpOw0K
ICAgIGtleSArPSB+KGtleSA8PCAxMyk7DQogICAga2V5IF49IChrZXkgPj4gOCk7DQogICAga2V5
ICs9IChrZXkgPDwgMyk7DQogICAga2V5IF49IChrZXkgPj4gMTUpOw0KICAgIGtleSArPSB+KGtl
eSA8PCAyNyk7DQogICAga2V5IF49IChrZXkgPj4gMzEpOw0KICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oa2V5KTsNCn0NCg0KX19mb3JjZWlubGluZSB1aW50MzJfdCBqc01hcEhhc2go
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQ0Kew0K
ICAgICgodm9pZCkwKTsNCg0KICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7DQogICAgICAgIGF1
dG8gc2NvcGUgPSBKU0M6OlRocm93U2NvcGUoKHZtKSk7DQogICAgICAgIGNvbnN0IFN0cmluZyYg
d3RmU3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpOw0KICAgICAg
ICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiAweGZmZmZmZmZmOyB9IHdo
aWxlIChmYWxzZSk7DQogICAgICAgIHJldHVybiB3dGZTdHJpbmcuaW1wbCgpLT5oYXNoKCk7DQog
ICAgfQ0KDQogICAgcmV0dXJuIHdhbmdzSW50NjRIYXNoKEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkp
Ow0KfQ0KDQpfX2ZvcmNlaW5saW5lIE9wdGlvbmFsPHVpbnQzMl90PiBjb25jdXJyZW50SlNNYXBI
YXNoKEpTVmFsdWUga2V5KQ0Kew0KICAgIGtleSA9IG5vcm1hbGl6ZU1hcEtleShrZXkpOw0KICAg
IGlmIChrZXkuaXNTdHJpbmcoKSkgew0KICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJp
bmcoa2V5KTsNCiAgICAgICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkgPiAxMCAqIDEwMjQpDQogICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Ow0KICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBp
bXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKTsNCiAgICAgICAgaWYgKCFpbXBsKQ0KICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsNCiAgICAgICAgcmV0dXJuIGltcGwtPmNvbmN1
cnJlbnRIYXNoKCk7DQogICAgfQ0KDQogICAgdWludDY0X3QgcmF3VmFsdWUgPSBKU1ZhbHVlOjpl
bmNvZGUoa2V5KTsNCiAgICByZXR1cm4gd2FuZ3NJbnQ2NEhhc2gocmF3VmFsdWUpOw0KfQ0KDQpf
X2ZvcmNlaW5saW5lIHVpbnQzMl90IHNob3VsZFNocmluayh1aW50MzJfdCBjYXBhY2l0eSwgdWlu
dDMyX3Qga2V5Q291bnQpDQp7DQogICAgcmV0dXJuIDggKiBrZXlDb3VudCA8PSBjYXBhY2l0eSAm
JiBjYXBhY2l0eSA+IDQ7DQp9DQoNCl9fZm9yY2VpbmxpbmUgdWludDMyX3Qgc2hvdWxkUmVoYXNo
QWZ0ZXJBZGQodWludDMyX3QgY2FwYWNpdHksIHVpbnQzMl90IGtleUNvdW50LCB1aW50MzJfdCBk
ZWxldGVDb3VudCkNCnsNCiAgICByZXR1cm4gMiAqIChrZXlDb3VudCArIGRlbGV0ZUNvdW50KSA+
PSBjYXBhY2l0eTsNCn0NCg0KX19mb3JjZWlubGluZSB1aW50MzJfdCBuZXh0Q2FwYWNpdHkodWlu
dDMyX3QgY2FwYWNpdHksIHVpbnQzMl90IGtleUNvdW50KQ0Kew0KICAgIGlmIChzaG91bGRTaHJp
bmsoY2FwYWNpdHksIGtleUNvdW50KSkgew0KICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIHJl
dHVybiBjYXBhY2l0eSAvIDI7DQogICAgfQ0KDQogICAgaWYgKDMgKiBrZXlDb3VudCA8PSBjYXBh
Y2l0eSAmJiBjYXBhY2l0eSA+IDY0KSB7DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQog
ICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIHJldHVybiBjYXBhY2l0eTsN
CiAgICB9DQogICAgcmV0dXJuIChDaGVja2VkPHVpbnQzMl90PihjYXBhY2l0eSkgKiAyKS51bnNh
ZmVHZXQoKTsNCn0NCg0KdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBCdWNrZXRUeXBlPg0KY2xh
c3MgSGFzaE1hcEltcGwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7DQogICAgdXNpbmcgQmFz
ZSA9IEpTTm9uRmluYWxPYmplY3Q7DQogICAgdXNpbmcgSGFzaE1hcEJ1ZmZlclR5cGUgPSBIYXNo
TWFwQnVmZmVyPEhhc2hNYXBCdWNrZXRUeXBlPjsNCg0KcHVibGljOg0KICAgIHVzaW5nIEJ1Y2tl
dFR5cGUgPSBIYXNoTWFwQnVja2V0VHlwZTsNCg0KICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsNCg0KICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVk
U2l6ZShKU0NlbGwqLCBWTSYpOw0KDQogICAgSGFzaE1hcEltcGwoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkNCiAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpDQogICAgICAgICwgbV9r
ZXlDb3VudCgwKQ0KICAgICAgICAsIG1fZGVsZXRlQ291bnQoMCkNCiAgICAgICAgLCBtX2NhcGFj
aXR5KDQpDQogICAgew0KICAgIH0NCg0KICAgIEhhc2hNYXBJbXBsKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVpbnQzMl90IHNpemVIaW50KQ0KICAgICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSkNCiAgICAgICAgLCBtX2tleUNvdW50KDApDQogICAgICAgICwgbV9kZWxldGVDb3VudCgw
KQ0KICAgIHsNCiAgICAgICAgdWludDMyX3QgY2FwYWNpdHkgPSAoKENoZWNrZWQ8dWludDMyX3Q+
KHNpemVIaW50KSAqIDIpICsgMSkudW5zYWZlR2V0KCk7DQogICAgICAgIGNhcGFjaXR5ID0gc3Rk
OjptYXg8dWludDMyX3Q+KFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhjYXBhY2l0eSksIDRVKTsN
CiAgICAgICAgbV9jYXBhY2l0eSA9IGNhcGFjaXR5Ow0KICAgIH0NCg0KICAgIF9fZm9yY2Vpbmxp
bmUgSGFzaE1hcEJ1Y2tldFR5cGUqKiBidWZmZXIoKSBjb25zdA0KICAgIHsNCiAgICAgICAgcmV0
dXJuIG1fYnVmZmVyLT5idWZmZXIoKTsNCiAgICB9DQoNCiAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSkNCiAgICB7DQogICAgICAgICgo
dm9pZCkwKTsNCg0KICAgICAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0K
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7DQoNCiAgICAgICAgbWFrZUFuZFNldE5l
d0J1ZmZlcihnbG9iYWxPYmplY3QsIHZtKTsNCiAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhj
ZXB0aW9uKCkpKSByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICAgICAgc2V0
VXBIZWFkQW5kVGFpbChnbG9iYWxPYmplY3QsIHZtKTsNCiAgICB9DQoNCiAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSGFzaE1hcElt
cGwqIGJhc2UpDQogICAgew0KICAgICAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3BlKCh2
bSkpOw0KICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7DQoNCiAgICAgICAgDQogICAg
ICAgIHVpbnQzMl90IGNhcGFjaXR5ID0gKChDaGVja2VkPHVpbnQzMl90PihiYXNlLT5tX2tleUNv
dW50KSAqIDIpICsgMSkudW5zYWZlR2V0KCk7DQogICAgICAgIGRvIHsgaWYgKCghKGNhcGFjaXR5
IDw9ICgxVSA8PCAzMSkpKSkgZG8geyBXVEY6OmlzSW50ZWdyYWxPclBvaW50ZXJUeXBlKCk7IGNv
bXBpbGVyRmVuY2VGb3JDcmFzaCgpOyBXVEZDcmFzaFdpdGhJbmZvKDQwMCwgIkY6XFxnaXRQXFxX
ZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZVxcSGFzaE1hcElt
cGwuaCIsICBfX0ZVTkNUSU9OX18gICwgMjMyICk7IH0gd2hpbGUgKGZhbHNlKTsgfSB3aGlsZSAo
MCk7DQogICAgICAgIGNhcGFjaXR5ID0gc3RkOjptYXg8dWludDMyX3Q+KFdURjo6cm91bmRVcFRv
UG93ZXJPZlR3byhjYXBhY2l0eSksIDRVKTsNCiAgICAgICAgbV9jYXBhY2l0eSA9IGNhcGFjaXR5
Ow0KICAgICAgICBtYWtlQW5kU2V0TmV3QnVmZmVyKGdsb2JhbE9iamVjdCwgdm0pOw0KICAgICAg
ICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB2b2lkKCk7IH0gd2hpbGUg
KGZhbHNlKTsNCg0KICAgICAgICBzZXRVcEhlYWRBbmRUYWlsKGdsb2JhbE9iamVjdCwgdm0pOw0K
DQogICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBiYXNlLT5tX2hlYWQuZ2V0KCkt
Pm5leHQoKTsNCiAgICAgICAgd2hpbGUgKGJ1Y2tldCkgew0KICAgICAgICAgICAgaWYgKCFidWNr
ZXQtPmRlbGV0ZWQoKSkgew0KICAgICAgICAgICAgICAgIGFkZE5vcm1hbGl6ZWROb25FeGlzdGlu
Z0ZvckNsb25pbmcoZ2xvYmFsT2JqZWN0LCBidWNrZXQtPmtleSgpLCBIYXNoTWFwQnVja2V0VHlw
ZTo6ZXh0cmFjdFZhbHVlKCpidWNrZXQpKTsNCiAgICAgICAgICAgICAgICBkbyB7IGlmICgoKHNj
b3BlKS5leGNlcHRpb24oKSkpIHJldHVybiB2b2lkKCk7IH0gd2hpbGUgKGZhbHNlKTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOw0KICAgICAgICB9
DQogICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsNCiAgICB9DQoNCiAgICBzdGF0aWMgSGFzaE1h
cEJ1Y2tldFR5cGUqIGVtcHR5VmFsdWUoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oLTEpKTsNCiAg
ICB9DQoNCiAgICBzdGF0aWMgX19mb3JjZWlubGluZSBib29sIGlzRW1wdHkoSGFzaE1hcEJ1Y2tl
dFR5cGUqIGJ1Y2tldCkNCiAgICB7DQogICAgICAgIHJldHVybiBidWNrZXQgPT0gZW1wdHlWYWx1
ZSgpOw0KICAgIH0NCg0KICAgIHN0YXRpYyBIYXNoTWFwQnVja2V0VHlwZSogZGVsZXRlZFZhbHVl
KCkNCiAgICB7DQogICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SGFzaE1hcEJ1Y2tldFR5cGUq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KC0zKSk7DQogICAgfQ0KDQogICAgc3RhdGljIF9fZm9y
Y2VpbmxpbmUgYm9vbCBpc0RlbGV0ZWQoSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCkNCiAgICB7
DQogICAgICAgIHJldHVybiBidWNrZXQgPT0gZGVsZXRlZFZhbHVlKCk7DQogICAgfQ0KDQogICAg
X19mb3JjZWlubGluZSBIYXNoTWFwQnVja2V0VHlwZSoqIGZpbmRCdWNrZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBrZXkpDQogICAgew0KICAgICAgICBWTSYgdm0gPSBn
ZXRWTShnbG9iYWxPYmplY3QpOw0KICAgICAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJvd1Njb3Bl
KCh2bSkpOw0KICAgICAgICBrZXkgPSBub3JtYWxpemVNYXBLZXkoa2V5KTsNCiAgICAgICAgdWlu
dDMyX3QgaGFzaCA9IGpzTWFwSGFzaChnbG9iYWxPYmplY3QsIHZtLCBrZXkpOw0KICAgICAgICBk
byB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24oKSkpIHJldHVybiBudWxscHRyOyB9IHdoaWxlIChm
YWxzZSk7DQogICAgICAgIHJldHVybiBmaW5kQnVja2V0KGdsb2JhbE9iamVjdCwga2V5LCBoYXNo
KTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5saW5lIEhhc2hNYXBCdWNrZXRUeXBlKiogZmluZEJ1
Y2tldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgdWludDMyX3Qg
aGFzaCkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCiAgICAgICAgcmV0dXJuIGZpbmRCdWNr
ZXRBbHJlYWR5SGFzaGVkQW5kTm9ybWFsaXplZChnbG9iYWxPYmplY3QsIGtleSwgaGFzaCk7DQog
ICAgfQ0KDQogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBIYXNoTWFwQnVja2V0VHlwZT4NCiAg
ICBfX2ZvcmNlaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBI
YXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+Pjo6dmFsdWUsIEpTVmFsdWU+
Ojp0eXBlIGdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSkNCiAg
ICB7DQogICAgICAgIGlmIChIYXNoTWFwQnVja2V0VHlwZSoqIGJ1Y2tldCA9IGZpbmRCdWNrZXQo
Z2xvYmFsT2JqZWN0LCBrZXkpKQ0KICAgICAgICAgICAgcmV0dXJuICgqYnVja2V0KS0+dmFsdWUo
KTsNCiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7DQogICAgfQ0KDQogICAgX19mb3JjZWlu
bGluZSBib29sIGhhcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSkN
CiAgICB7DQogICAgICAgIHJldHVybiAhIWZpbmRCdWNrZXQoZ2xvYmFsT2JqZWN0LCBrZXkpOw0K
ICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgdm9pZCBhZGQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlKCkpDQogICAgew0K
ICAgICAgICBrZXkgPSBub3JtYWxpemVNYXBLZXkoa2V5KTsNCiAgICAgICAgYWRkTm9ybWFsaXpl
ZEludGVybmFsKGdsb2JhbE9iamVjdCwga2V5LCB2YWx1ZSwgWyZdIChIYXNoTWFwQnVja2V0VHlw
ZSogYnVja2V0KSB7DQogICAgICAgICAgICByZXR1cm4gIWlzRGVsZXRlZChidWNrZXQpICYmIGFy
ZUtleXNFcXVhbChnbG9iYWxPYmplY3QsIGtleSwgYnVja2V0LT5rZXkoKSk7DQogICAgICAgIH0p
Ow0KICAgICAgICBpZiAoc2hvdWxkUmVoYXNoQWZ0ZXJBZGQoKSkNCiAgICAgICAgICAgIHJlaGFz
aChnbG9iYWxPYmplY3QpOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgSGFzaE1hcEJ1Y2tl
dFR5cGUqIGFkZE5vcm1hbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBrZXksIEpTVmFsdWUgdmFsdWUsIHVpbnQzMl90IGhhc2gpDQogICAgew0KICAgICAgICAoKHZv
aWQpMCk7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAgICAgICBhdXRvKiBidWNrZXQgPSBhZGRO
b3JtYWxpemVkSW50ZXJuYWwoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwga2V5LCB2YWx1ZSwgaGFzaCwg
WyZdIChIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0KSB7DQogICAgICAgICAgICByZXR1cm4gIWlz
RGVsZXRlZChidWNrZXQpICYmIGFyZUtleXNFcXVhbChnbG9iYWxPYmplY3QsIGtleSwgYnVja2V0
LT5rZXkoKSk7DQogICAgICAgIH0pOw0KICAgICAgICBpZiAoc2hvdWxkUmVoYXNoQWZ0ZXJBZGQo
KSkNCiAgICAgICAgICAgIHJlaGFzaChnbG9iYWxPYmplY3QpOw0KICAgICAgICByZXR1cm4gYnVj
a2V0Ow0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgYm9vbCByZW1vdmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBrZXkpDQogICAgew0KICAgICAgICBIYXNoTWFwQnVj
a2V0VHlwZSoqIGJ1Y2tldCA9IGZpbmRCdWNrZXQoZ2xvYmFsT2JqZWN0LCBrZXkpOw0KICAgICAg
ICBpZiAoIWJ1Y2tldCkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCg0KICAgICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogaW1w
bCA9ICpidWNrZXQ7DQogICAgICAgIGltcGwtPm5leHQoKS0+c2V0UHJldih2bSwgaW1wbC0+cHJl
digpKTsNCiAgICAgICAgaW1wbC0+cHJldigpLT5zZXROZXh0KHZtLCBpbXBsLT5uZXh0KCkpOw0K
ICAgICAgICBpbXBsLT5tYWtlRGVsZXRlZCh2bSk7DQoNCiAgICAgICAgKmJ1Y2tldCA9IGRlbGV0
ZWRWYWx1ZSgpOw0KDQogICAgICAgICsrbV9kZWxldGVDb3VudDsNCiAgICAgICAgKCh2b2lkKTAp
Ow0KICAgICAgICAtLW1fa2V5Q291bnQ7DQoNCiAgICAgICAgaWYgKHNob3VsZFNocmluaygpKQ0K
ICAgICAgICAgICAgcmVoYXNoKGdsb2JhbE9iamVjdCk7DQoNCiAgICAgICAgcmV0dXJuIHRydWU7
DQogICAgfQ0KDQogICAgX19mb3JjZWlubGluZSB1aW50MzJfdCBzaXplKCkgY29uc3QNCiAgICB7
DQogICAgICAgIHJldHVybiBtX2tleUNvdW50Ow0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUg
dm9pZCBjbGVhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQ0KICAgIHsNCiAgICAgICAg
Vk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsNCiAgICAgICAgbV9rZXlDb3VudCA9IDA7DQog
ICAgICAgIG1fZGVsZXRlQ291bnQgPSAwOw0KICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogaGVh
ZCA9IG1faGVhZC5nZXQoKTsNCiAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IG1f
aGVhZC0+bmV4dCgpOw0KICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogdGFpbCA9IG1fdGFpbC5n
ZXQoKTsNCiAgICAgICAgd2hpbGUgKGJ1Y2tldCAhPSB0YWlsKSB7DQogICAgICAgICAgICBIYXNo
TWFwQnVja2V0VHlwZSogbmV4dCA9IGJ1Y2tldC0+bmV4dCgpOw0KICAgICAgICAgICAgDQogICAg
ICAgICAgICBidWNrZXQtPnNldE5leHQodm0sIGhlYWQpOw0KICAgICAgICAgICAgYnVja2V0LT5t
YWtlRGVsZXRlZCh2bSk7DQogICAgICAgICAgICBidWNrZXQgPSBuZXh0Ow0KICAgICAgICB9DQog
ICAgICAgIG1faGVhZC0+c2V0TmV4dCh2bSwgbV90YWlsLmdldCgpKTsNCiAgICAgICAgbV90YWls
LT5zZXRQcmV2KHZtLCBtX2hlYWQuZ2V0KCkpOw0KICAgICAgICBtX2NhcGFjaXR5ID0gNDsNCiAg
ICAgICAgbWFrZUFuZFNldE5ld0J1ZmZlcihnbG9iYWxPYmplY3QsIHZtKTsNCiAgICAgICAgY2hl
Y2tDb25zaXN0ZW5jeSgpOw0KICAgIH0NCg0KICAgIF9fZm9yY2VpbmxpbmUgc2l6ZV90IGJ1ZmZl
clNpemVJbkJ5dGVzKCkgY29uc3QNCiAgICB7DQogICAgICAgIHJldHVybiBtX2NhcGFjaXR5ICog
c2l6ZW9mKEhhc2hNYXBCdWNrZXRUeXBlKik7DQogICAgfQ0KDQogICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkhlYWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXRU
eXBlPio+KDB4NDAwMCktPm1faGVhZCkpIC0gMHg0MDAwKTsNCiAgICB9DQoNCiAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mQnVmZmVyKCkNCiAgICB7DQogICAgICAgIHJldHVybiAocmVpbnRl
cnByZXRfY2FzdDxwdHJkaWZmX3Q+KCYocmVpbnRlcnByZXRfY2FzdDxIYXNoTWFwSW1wbDxIYXNo
TWFwQnVja2V0VHlwZT4qPigweDQwMDApLT5tX2J1ZmZlcikpIC0gMHg0MDAwKTsNCiAgICB9DQoN
CiAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FwYWNpdHkoKQ0KICAgIHsNCiAgICAgICAg
cmV0dXJuIChyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oJihyZWludGVycHJldF9jYXN0PEhh
c2hNYXBJbXBsPEhhc2hNYXBCdWNrZXRUeXBlPio+KDB4NDAwMCktPm1fY2FwYWNpdHkpKSAtIDB4
NDAwMCk7DQogICAgfQ0KDQogICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGhlYWQoKSB7IHJldHVybiBt
X2hlYWQuZ2V0KCk7IH0NCiAgICBIYXNoTWFwQnVja2V0VHlwZSogdGFpbCgpIHsgcmV0dXJuIG1f
dGFpbC5nZXQoKTsgfQ0KDQogICAgc2l6ZV90IGFwcHJveGltYXRlU2l6ZSgpIGNvbnN0DQogICAg
ew0KICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihIYXNoTWFwSW1wbCk7DQogICAgICAgIHNp
emUgKz0gYnVmZmVyU2l6ZUluQnl0ZXMoKTsNCiAgICAgICAgc2l6ZSArPSAyICogc2l6ZW9mKEhh
c2hNYXBCdWNrZXRUeXBlKTsgDQogICAgICAgIHNpemUgKz0gbV9rZXlDb3VudCAqIHNpemVvZihI
YXNoTWFwQnVja2V0VHlwZSk7IA0KICAgICAgICByZXR1cm4gc2l6ZTsNCiAgICB9DQoNCnByaXZh
dGU6DQogICAgX19mb3JjZWlubGluZSB1aW50MzJfdCBzaG91bGRSZWhhc2hBZnRlckFkZCgpIGNv
bnN0DQogICAgew0KICAgICAgICByZXR1cm4gSlNDOjpzaG91bGRSZWhhc2hBZnRlckFkZChtX2Nh
cGFjaXR5LCBtX2tleUNvdW50LCBtX2RlbGV0ZUNvdW50KTsNCiAgICB9DQoNCiAgICBfX2ZvcmNl
aW5saW5lIHVpbnQzMl90IHNob3VsZFNocmluaygpIGNvbnN0DQogICAgew0KICAgICAgICByZXR1
cm4gSlNDOjpzaG91bGRTaHJpbmsobV9jYXBhY2l0eSwgbV9rZXlDb3VudCk7DQogICAgfQ0KDQog
ICAgX19mb3JjZWlubGluZSB2b2lkIHNldFVwSGVhZEFuZFRhaWwoSlNHbG9iYWxPYmplY3QqLCBW
TSYgdm0pDQogICAgew0KICAgICAgICBtX2hlYWQuc2V0KHZtLCB0aGlzLCBIYXNoTWFwQnVja2V0
VHlwZTo6Y3JlYXRlKHZtKSk7DQogICAgICAgIG1fdGFpbC5zZXQodm0sIHRoaXMsIEhhc2hNYXBC
dWNrZXRUeXBlOjpjcmVhdGUodm0pKTsNCg0KICAgICAgICBtX2hlYWQtPnNldE5leHQodm0sIG1f
dGFpbC5nZXQoKSk7DQogICAgICAgIG1fdGFpbC0+c2V0UHJldih2bSwgbV9oZWFkLmdldCgpKTsN
CiAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAoKHZvaWQpMCk7DQogICAgfQ0KDQogICAgX19m
b3JjZWlubGluZSB2b2lkIGFkZE5vcm1hbGl6ZWROb25FeGlzdGluZ0ZvckNsb25pbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlKCkpDQogICAgew0KICAgICAgICBhZGROb3JtYWxpemVkSW50ZXJuYWwoZ2xvYmFsT2JqZWN0
LCBrZXksIHZhbHVlLCBbJl0gKEhhc2hNYXBCdWNrZXRUeXBlKikgew0KICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOw0KICAgICAgICB9KTsNCiAgICB9DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
YW5Vc2VCdWNrZXQ+DQogICAgX19mb3JjZWlubGluZSB2b2lkIGFkZE5vcm1hbGl6ZWRJbnRlcm5h
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgQ2FuVXNlQnVja2V0JiBjYW5Vc2VCdWNrZXQpDQogICAgew0KICAgICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgICAgICBhdXRvIHNjb3BlID0gSlNDOjpUaHJv
d1Njb3BlKCh2bSkpOw0KDQogICAgICAgIHVpbnQzMl90IGhhc2ggPSBqc01hcEhhc2goZ2xvYmFs
T2JqZWN0LCB2bSwga2V5KTsNCiAgICAgICAgZG8geyBpZiAoKChzY29wZSkuZXhjZXB0aW9uKCkp
KSByZXR1cm4gdm9pZCgpOyB9IHdoaWxlIChmYWxzZSk7DQogICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsNCiAgICAgICAgYWRkTm9ybWFsaXplZEludGVybmFsKHZtLCBrZXksIHZhbHVlLCBoYXNoLCBj
YW5Vc2VCdWNrZXQpOw0KICAgIH0NCg0KICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhblVzZUJ1Y2tl
dD4NCiAgICBfX2ZvcmNlaW5saW5lIEhhc2hNYXBCdWNrZXRUeXBlKiBhZGROb3JtYWxpemVkSW50
ZXJuYWwoVk0mIHZtLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSwgdWludDMyX3QgaGFzaCwg
Y29uc3QgQ2FuVXNlQnVja2V0JiBjYW5Vc2VCdWNrZXQpDQogICAgew0KICAgICAgICAoKHZvaWQp
MCk7DQoNCiAgICAgICAgY29uc3QgdWludDMyX3QgbWFzayA9IG1fY2FwYWNpdHkgLSAxOw0KICAg
ICAgICB1aW50MzJfdCBpbmRleCA9IGhhc2ggJiBtYXNrOw0KICAgICAgICBIYXNoTWFwQnVja2V0
VHlwZSoqIGJ1ZmZlciA9IHRoaXMtPmJ1ZmZlcigpOw0KICAgICAgICBIYXNoTWFwQnVja2V0VHlw
ZSogYnVja2V0ID0gYnVmZmVyW2luZGV4XTsNCiAgICAgICAgd2hpbGUgKCFpc0VtcHR5KGJ1Y2tl
dCkpIHsNCiAgICAgICAgICAgIGlmIChjYW5Vc2VCdWNrZXQoYnVja2V0KSkgew0KICAgICAgICAg
ICAgICAgIGJ1Y2tldC0+c2V0VmFsdWUodm0sIHZhbHVlKTsNCiAgICAgICAgICAgICAgICByZXR1
cm4gYnVja2V0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaW5kZXggPSAoaW5kZXggKyAx
KSAmIG1hc2s7DQogICAgICAgICAgICBidWNrZXQgPSBidWZmZXJbaW5kZXhdOw0KICAgICAgICB9
DQoNCiAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIG5ld0VudHJ5ID0gbV90YWlsLmdldCgpOw0K
ICAgICAgICBidWZmZXJbaW5kZXhdID0gbmV3RW50cnk7DQogICAgICAgIG5ld0VudHJ5LT5zZXRL
ZXkodm0sIGtleSk7DQogICAgICAgIG5ld0VudHJ5LT5zZXRWYWx1ZSh2bSwgdmFsdWUpOw0KICAg
ICAgICAoKHZvaWQpMCk7DQogICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBuZXdUYWlsID0gSGFz
aE1hcEJ1Y2tldFR5cGU6OmNyZWF0ZSh2bSk7DQogICAgICAgIG1fdGFpbC5zZXQodm0sIHRoaXMs
IG5ld1RhaWwpOw0KICAgICAgICBuZXdUYWlsLT5zZXRQcmV2KHZtLCBuZXdFbnRyeSk7DQogICAg
ICAgICgodm9pZCkwKTsNCiAgICAgICAgbmV3RW50cnktPnNldE5leHQodm0sIG5ld1RhaWwpOw0K
DQogICAgICAgICsrbV9rZXlDb3VudDsNCiAgICAgICAgcmV0dXJuIG5ld0VudHJ5Ow0KICAgIH0N
Cg0KICAgIF9fZm9yY2VpbmxpbmUgSGFzaE1hcEJ1Y2tldFR5cGUqKiBmaW5kQnVja2V0QWxyZWFk
eUhhc2hlZEFuZE5vcm1hbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBrZXksIHVpbnQzMl90IGhhc2gpDQogICAgew0KICAgICAgICBjb25zdCB1aW50MzJfdCBtYXNr
ID0gbV9jYXBhY2l0eSAtIDE7DQogICAgICAgIHVpbnQzMl90IGluZGV4ID0gaGFzaCAmIG1hc2s7
DQogICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiogYnVmZmVyID0gdGhpcy0+YnVmZmVyKCk7DQog
ICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBidWZmZXJbaW5kZXhdOw0KDQogICAg
ICAgIHdoaWxlICghaXNFbXB0eShidWNrZXQpKSB7DQogICAgICAgICAgICBpZiAoIWlzRGVsZXRl
ZChidWNrZXQpICYmIGFyZUtleXNFcXVhbChnbG9iYWxPYmplY3QsIGtleSwgYnVja2V0LT5rZXko
KSkpDQogICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlciArIGluZGV4Ow0KICAgICAgICAgICAg
aW5kZXggPSAoaW5kZXggKyAxKSAmIG1hc2s7DQogICAgICAgICAgICBidWNrZXQgPSBidWZmZXJb
aW5kZXhdOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBudWxscHRyOw0KICAgIH0NCg0KICAg
IHZvaWQgcmVoYXNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpDQogICAgew0KICAgICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOw0KICAgICAgICBhdXRvIHNjb3BlID0gSlND
OjpUaHJvd1Njb3BlKCh2bSkpOw0KDQogICAgICAgIHVpbnQzMl90IG9sZENhcGFjaXR5ID0gbV9j
YXBhY2l0eTsNCiAgICAgICAgbV9jYXBhY2l0eSA9IG5leHRDYXBhY2l0eShtX2NhcGFjaXR5LCBt
X2tleUNvdW50KTsNCg0KICAgICAgICBpZiAobV9jYXBhY2l0eSAhPSBvbGRDYXBhY2l0eSkgew0K
ICAgICAgICAgICAgbWFrZUFuZFNldE5ld0J1ZmZlcihnbG9iYWxPYmplY3QsIHZtKTsNCiAgICAg
ICAgICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkgcmV0dXJuIHZvaWQoKTsgfSB3
aGlsZSAoZmFsc2UpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgbV9idWZmZXItPnJl
c2V0KG1fY2FwYWNpdHkpOw0KICAgICAgICAgICAgYXNzZXJ0QnVmZmVySXNFbXB0eSgpOw0KICAg
ICAgICB9DQoNCiAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGl0ZXIgPSBtX2hlYWQtPm5leHQo
KTsNCiAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGVuZCA9IG1fdGFpbC5nZXQoKTsNCiAgICAg
ICAgY29uc3QgdWludDMyX3QgbWFzayA9IG1fY2FwYWNpdHkgLSAxOw0KICAgICAgICBkbyB7IGlm
ICgoISghKG1fY2FwYWNpdHkgJiAobV9jYXBhY2l0eSAtIDEpKSkpKSBkbyB7IFdURjo6aXNJbnRl
Z3JhbE9yUG9pbnRlclR5cGUoKTsgY29tcGlsZXJGZW5jZUZvckNyYXNoKCk7IFdURkNyYXNoV2l0
aEluZm8oNjgzLCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFTY3JpcHRD
b3JlXFxydW50aW1lXFxIYXNoTWFwSW1wbC5oIiwgIF9fRlVOQ1RJT05fXyAgLCAyMzMgKTsgfSB3
aGlsZSAoZmFsc2UpOyB9IHdoaWxlICgwKTsNCiAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqKiBi
dWZmZXIgPSB0aGlzLT5idWZmZXIoKTsNCiAgICAgICAgd2hpbGUgKGl0ZXIgIT0gZW5kKSB7DQog
ICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IGpzTWFwSGFzaChnbG9iYWxPYmplY3QsIHZtLCBp
dGVyLT5rZXkoKSkgJiBtYXNrOw0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBidWZmZXJbaW5k
ZXhdOw0KICAgICAgICAgICAgICAgIHdoaWxlICghaXNFbXB0eShidWNrZXQpKSB7DQogICAgICAg
ICAgICAgICAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJiBtYXNrOw0KICAgICAgICAgICAgICAg
ICAgICBidWNrZXQgPSBidWZmZXJbaW5kZXhdOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIGJ1ZmZlcltpbmRleF0gPSBpdGVyOw0KICAgICAgICAgICAgaXRl
ciA9IGl0ZXItPm5leHQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIG1fZGVsZXRlQ291bnQgPSAw
Ow0KDQogICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsNCiAgICB9DQoNCiAgICBfX2ZvcmNlaW5s
aW5lIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0DQogICAgew0KICAgICAgICBpZiAoMCkg
ew0KICAgICAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGl0ZXIgPSBtX2hlYWQtPm5leHQoKTsN
CiAgICAgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBlbmQgPSBtX3RhaWwuZ2V0KCk7DQogICAg
ICAgICAgICB1aW50MzJfdCBzaXplID0gMDsNCiAgICAgICAgICAgIHdoaWxlIChpdGVyICE9IGVu
ZCkgew0KICAgICAgICAgICAgICAgICsrc2l6ZTsNCiAgICAgICAgICAgICAgICBpdGVyID0gaXRl
ci0+bmV4dCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgKCh2b2lkKTApOw0KICAgICAg
ICB9DQogICAgfQ0KDQogICAgdm9pZCBtYWtlQW5kU2V0TmV3QnVmZmVyKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSkNCiAgICB7DQogICAgICAgICgodm9pZCkwKTsNCg0KICAg
ICAgICBIYXNoTWFwQnVmZmVyVHlwZSogYnVmZmVyID0gSGFzaE1hcEJ1ZmZlclR5cGU6OmNyZWF0
ZShnbG9iYWxPYmplY3QsIHZtLCB0aGlzLCBtX2NhcGFjaXR5KTsNCiAgICAgICAgaWYgKCghYnVm
ZmVyKSkNCiAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICBtX2J1ZmZlci5zZXQodm0sIHRo
aXMsIGJ1ZmZlcik7DQogICAgICAgIGFzc2VydEJ1ZmZlcklzRW1wdHkoKTsNCiAgICB9DQoNCiAg
ICBfX2ZvcmNlaW5saW5lIHZvaWQgYXNzZXJ0QnVmZmVySXNFbXB0eSgpIGNvbnN0DQogICAgew0K
ICAgICAgICBpZiAoMCkgew0KICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Y2FwYWNpdHk7IGkrKykNCiAgICAgICAgICAgICAgICAoKHZvaWQpMCk7DQogICAgICAgIH0NCiAg
ICB9DQoNCiAgICBXcml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1faGVhZDsNCiAgICBX
cml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1fdGFpbDsNCiAgICBBdXhpbGlhcnlCYXJy
aWVyPEhhc2hNYXBCdWZmZXJUeXBlKj4gbV9idWZmZXI7DQogICAgdWludDMyX3QgbV9rZXlDb3Vu
dDsNCiAgICB1aW50MzJfdCBtX2RlbGV0ZUNvdW50Ow0KICAgIHVpbnQzMl90IG1fY2FwYWNpdHk7
DQp9Ow0KDQp9IA0KI2xpbmUgMjkgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxccnVudGltZVxcSlNTZXQuaCINCg0KDQpuYW1lc3BhY2UgSlNDIHsNCg0K
Y2xhc3MgSlNTZXQgZmluYWwgOiBwdWJsaWMgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNo
TWFwQnVja2V0RGF0YUtleT4+IHsNCiAgICB1c2luZyBCYXNlID0gSGFzaE1hcEltcGw8SGFzaE1h
cEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+Ow0KcHVibGljOg0KDQogICAgcHJvdGVjdGVk
OiBzdGF0aWMgX19kZWNsc3BlYyhkbGxleHBvcnQpIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19p
bmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5m
bygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4NCiAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkNCiAgICB7DQogICAgICAgIHJldHVybiB2bS5zZXRTcGFjZTxtb2RlPigpOw0K
ICAgIH0NCg0KICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQ0KICAgIHsNCiAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSlNTZXRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7DQogICAgfQ0K
DQogICAgc3RhdGljIEpTU2V0KiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICB7DQogICAgICAgIHJldHVybiBjcmVh
dGUoZ2xvYmFsT2JqZWN0LCB2bSwgc3RydWN0dXJlLCAwKTsNCiAgICB9DQoNCiAgICBzdGF0aWMg
SlNTZXQqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBzaXplKQ0KICAgIHsNCiAgICAgICAgSlNTZXQqIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXQ+KHZtLmhlYXApKSBKU1Nl
dCh2bSwgc3RydWN0dXJlLCBzaXplKTsNCiAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdCwgdm0pOw0KICAgICAgICByZXR1cm4gaW5zdGFuY2U7DQogICAgfQ0KDQog
ICAgYm9vbCBpc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOw0KICAgIGJv
b2wgY2FuQ2xvbmVGYXN0QW5kTm9uT2JzZXJ2YWJsZShTdHJ1Y3R1cmUqKTsNCiAgICBKU1NldCog
Y2xvbmUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cnVjdHVyZSopOw0KDQpwcml2YXRlOg0KICAg
IEpTU2V0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQ0KICAgIHsNCiAgICB9DQoNCiAgICBKU1NldChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCB1aW50MzJfdCBzaXplSGludCkNCiAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUsIHNpemVIaW50KQ0KICAgIHsNCiAgICB9DQp9Ow0KDQpzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
ZmluYWw8SlNTZXQ+Ojp2YWx1ZSwgIlJlcXVpcmVkIGZvciBKU1R5cGUgYmFzZWQgY2FzdGluZyIp
Ow0KDQp9IA0KI2xpbmUgMzIgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZh
U2NyaXB0Q29yZVxccnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAiDQojbGluZSAxICJGOlxcZ2l0
UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVcXHJ1bnRpbWVcXFNldFBy
b3RvdHlwZS5oIg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQojcHJhZ21hIG9uY2UNCg0KDQoNCm5hbWVzcGFjZSBKU0Mgew0KDQpjbGFzcyBTZXRQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7DQpwdWJsaWM6DQogICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7DQoNCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+DQogICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pDQogICAgew0KICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihTZXRQcm90b3R5
cGUpID09IHNpemVvZihCYXNlKSk7IHN0YXRpY19hc3NlcnQoU2V0UHJvdG90eXBlOjpkZXN0cm95
ID09IEJhc2U6OmRlc3Ryb3kpOzsNCiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
Ow0KICAgIH0NCg0KICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7DQoNCiAgICBz
dGF0aWMgU2V0UHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICB7DQogICAgICAgIFNldFByb3RvdHlw
ZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0UHJvdG90eXBlPih2
bS5oZWFwKSkgU2V0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBwcm90b3R5cGUt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOw0KICAgICAgICByZXR1cm4gcHJvdG90
eXBlOw0KICAgIH0NCg0KICAgIHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0lu
Zm8gc19pbmZvOyBwdWJsaWM6IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5m
byogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH07DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkNCiAgICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsNCiAgICB9DQoNCnByaXZhdGU6DQogICAgU2V0UHJvdG90eXBlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpDQogICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQ0KICAgIHsNCiAgICB9DQogICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0Kik7DQp9Ow0KDQp9IA0KI2xpbmUgMzMgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAiDQoNCm5hbWVz
cGFjZSBKU0Mgew0KDQpjb25zdCBDbGFzc0luZm8gU2V0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgSlNDYXN0aW5nSGVs
cGVyczo6SW5oZXJpdHNUcmFpdHM8U2V0Q29uc3RydWN0b3I+Ojp0eXBlUmFuZ2UsIHsgJlNldENv
bnN0cnVjdG9yOjpkZXN0cm95LCAmU2V0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4sICZTZXRD
b25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEsICZTZXRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YSwgJlNldENvbnN0cnVjdG9yOjpwdXQsICZTZXRDb25zdHJ1Y3Rvcjo6cHV0QnlJbmRleCwgJlNl
dENvbnN0cnVjdG9yOjpkZWxldGVQcm9wZXJ0eSwgJlNldENvbnN0cnVjdG9yOjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgsICZTZXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90LCAmU2V0Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsICZTZXRDb25zdHJ1Y3Rvcjo6ZG9Q
dXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2ssICZTZXRDb25zdHJ1Y3Rvcjo6dG9UaGlzLCAmU2V0Q29u
c3RydWN0b3I6OmRlZmF1bHRWYWx1ZSwgJlNldENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eU5h
bWVzLCAmU2V0Q29uc3RydWN0b3I6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcywgJlNldENv
bnN0cnVjdG9yOjpnZXRQcm9wZXJ0eU5hbWVzLCAmU2V0Q29uc3RydWN0b3I6OmdldEVudW1lcmFi
bGVMZW5ndGgsICZTZXRDb25zdHJ1Y3Rvcjo6Z2V0U3RydWN0dXJlUHJvcGVydHlOYW1lcywgJlNl
dENvbnN0cnVjdG9yOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcywgJlNldENvbnN0cnVjdG9yOjpj
bGFzc05hbWUsICZTZXRDb25zdHJ1Y3Rvcjo6dG9TdHJpbmdOYW1lLCAmU2V0Q29uc3RydWN0b3I6
OmN1c3RvbUhhc0luc3RhbmNlLCAmU2V0Q29uc3RydWN0b3I6OmRlZmluZU93blByb3BlcnR5LCAm
U2V0Q29uc3RydWN0b3I6OnByZXZlbnRFeHRlbnNpb25zLCAmU2V0Q29uc3RydWN0b3I6OmlzRXh0
ZW5zaWJsZSwgJlNldENvbnN0cnVjdG9yOjpzZXRQcm90b3R5cGUsICZTZXRDb25zdHJ1Y3Rvcjo6
Z2V0UHJvdG90eXBlLCAmU2V0Q29uc3RydWN0b3I6OmR1bXBUb1N0cmVhbSwgJlNldENvbnN0cnVj
dG9yOjphbmFseXplSGVhcCwgJlNldENvbnN0cnVjdG9yOjplc3RpbWF0ZWRTaXplLCAmU2V0Q29u
c3RydWN0b3I6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMsIH0sIFNldENvbnN0cnVjdG9yOjpUeXBl
ZEFycmF5U3RvcmFnZVR5cGUsIHNpemVvZihTZXRDb25zdHJ1Y3RvciksIH07DQoNCnZvaWQgU2V0
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2V0UHJvdG90eXBlKiBzZXRQcm90
b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkNCnsNCiAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U2V0LnN0cmluZygpLCBOYW1lQWRkaXRpb25N
b2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7DQogICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2V0UHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7DQogICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7DQog
ICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOw0KfQ0KDQpzdGF0aWMgRW5jb2RlZEpTVmFsdWUgIGNhbGxTZXQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsNCnN0YXRpYyBFbmNvZGVkSlNWYWx1ZSAgY29uc3Ry
dWN0U2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7DQoNClNldENvbnN0cnVjdG9yOjpT
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQ0KICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBjYWxsU2V0LCBjb25zdHJ1Y3RTZXQpDQp7DQp9DQoNCnN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSAgY2FsbFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQ0Kew0KICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsNCiAgICBhdXRvIHNjb3Bl
ID0gSlNDOjpUaHJvd1Njb3BlKCh2bSkpOw0KICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiU2V0IikpOw0KfQ0KDQpzdGF0aWMgRW5jb2RlZEpTVmFsdWUgIGNvbnN0cnVj
dFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkN
CnsNCiAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7DQogICAgYXV0byBzY29wZSA9IEpT
Qzo6VGhyb3dTY29wZSgodm0pKTsNCg0KICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVj
dChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsNCiAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSA9
IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkNCiAgICAgICAgPyBnbG9iYWxPYmpl
Y3QtPnNldFN0cnVjdHVyZSgpDQogICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0o
dm0sIG5ld1RhcmdldCktPnNldFN0cnVjdHVyZSgpKTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5l
eGNlcHRpb24oKSkpIHJldHVybiB7IH07IH0gd2hpbGUgKGZhbHNlKTsNCg0KICAgIEpTVmFsdWUg
aXRlcmFibGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOw0KICAgIGlmIChpdGVyYWJsZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSANCiAgICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBzZXRTdHJ1Y3R1
cmUpKTsgfSB3aGlsZSAoZmFsc2UpOw0KDQogICAgaWYgKGF1dG8qIGl0ZXJhYmxlU2V0ID0ganNE
eW5hbWljQ2FzdDxKU1NldCo+KHZtLCBpdGVyYWJsZSkpIHsNCiAgICAgICAgaWYgKGl0ZXJhYmxl
U2V0LT5jYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKHNldFN0cnVjdHVyZSkpIA0KICAgICAg
ICAgICAgZG8geyBzY29wZS5yZWxlYXNlKCk7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmFi
bGVTZXQtPmNsb25lKGdsb2JhbE9iamVjdCwgdm0sIHNldFN0cnVjdHVyZSkpOyB9IHdoaWxlIChm
YWxzZSk7DQogICAgfQ0KDQogICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUoZ2xvYmFsT2Jq
ZWN0LCB2bSwgc2V0U3RydWN0dXJlKTsNCiAgICBkbyB7IGlmICgoKHNjb3BlKS5leGNlcHRpb24o
KSkpIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOyB9IHdoaWxlIChmYWxzZSk7DQoNCiAgICBKU1Zh
bHVlIGFkZGVyRnVuY3Rpb24gPSBzZXQtPkpTT2JqZWN0OjpnZXQoZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5hZGQpOw0KICAgIGRvIHsgaWYgKCgoc2NvcGUpLmV4Y2VwdGlvbigpKSkg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7IH0gd2hpbGUgKGZhbHNlKTsNCg0KICAgIGF1dG8gYWRk
ZXJGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24pOw0KICAg
IGlmICgoYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUp
KQ0KICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpKTsNCg0KICAgIHNjb3BlLnJlbGVhc2UoKTsNCiAgICBmb3JFYWNoSW5JdGVy
YWJsZShnbG9iYWxPYmplY3QsIGl0ZXJhYmxlLCBbJl0oVk0mLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIG5leHRWYWx1ZSkgew0KICAgICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7DQogICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobmV4dFZhbHVlKTsNCiAg
ICAgICAgKCh2b2lkKTApOw0KICAgICAgICBjYWxsKGdsb2JhbE9iamVjdCwgYWRkZXJGdW5jdGlv
biwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhLCBzZXQsIGFyZ3VtZW50cyk7DQogICAgfSk7DQoNCiAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldCk7DQp9DQoNCkVuY29kZWRKU1ZhbHVlICBzZXRQ
cml2YXRlRnVuY1NldEJ1Y2tldEhlYWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpDQp7DQogICAgKCh2b2lkKWdsb2JhbE9iamVjdCk7DQogICAgSlNT
ZXQqIHNldCA9IGpzQ2FzdDxKU1NldCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
Ow0KICAgIGF1dG8qIGhlYWQgPSBzZXQtPmhlYWQoKTsNCiAgICAoKHZvaWQpMCk7DQogICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShoZWFkKTsNCn0NCg0KRW5jb2RlZEpTVmFsdWUgIHNldFByaXZh
dGVGdW5jU2V0QnVja2V0TmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkNCnsNCiAgICAoKHZvaWQpMCk7DQogICAgYXV0byogYnVja2V0ID0ganND
YXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
DQogICAgKCh2b2lkKTApOw0KICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOw0KICAgIHdoaWxl
IChidWNrZXQpIHsNCiAgICAgICAgaWYgKCFidWNrZXQtPmRlbGV0ZWQoKSkNCiAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVja2V0KTsNCiAgICAgICAgYnVja2V0ID0gYnVja2V0
LT5uZXh0KCk7DQogICAgfQ0KICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0
LT52bSgpLnNlbnRpbmVsU2V0QnVja2V0KCkpOw0KfQ0KDQpFbmNvZGVkSlNWYWx1ZSAgc2V0UHJp
dmF0ZUZ1bmNTZXRCdWNrZXRLZXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpDQp7DQogICAgKCh2b2lkKWdsb2JhbE9iamVjdCk7DQogICAgYXV0byog
YnVja2V0ID0ganNDYXN0PEpTU2V0OjpCdWNrZXRUeXBlKj4oY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7DQogICAgKCh2b2lkKTApOw0KICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YnVja2V0LT5rZXkoKSk7DQp9DQoNCn0NCiNsaW5lIDggIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtp
dFxcYnVpbGRfYW1kNjRcXEphdmFTY3JpcHRDb3JlXFxEZXJpdmVkU291cmNlc1xcdW5pZmllZC1z
b3VyY2VzXFxVbmlmaWVkU291cmNlLWYyZTE4ZmZjLTMyLmNwcCINCiNsaW5lIDEgIkY6XFxnaXRQ
XFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TZXRJdGVy
YXRvclByb3RvdHlwZS5jcHAiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCiNsaW5lIDEgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxK
YXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KI2xpbmUgMjUgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNl
XFxKYXZhU2NyaXB0Q29yZVxcY29uZmlnLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
I2xpbmUgNDAgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291cmNlXFxKYXZhU2NyaXB0Q29y
ZVxcY29uZmlnLmgiDQoNCg0KI2xpbmUgMjcgIkY6XFxnaXRQXFxXZWJLaXRcXHdlYmtpdFxcU291
cmNlXFxKYXZhU2NyaXB0Q29yZVxccnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAiDQoj
bGluZSAxICJGOlxcZ2l0UFxcV2ViS2l0XFx3ZWJraXRcXFNvdXJjZVxcSmF2YVNjcmlwdENvcmVc
XHJ1bnRpbWVcXFNldEl0ZXJhdG9yUHJvdG90eXBlLmgiDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgb25jZQ0KDQoNCg0KbmFtZXNwYWNl
IEpTQyB7DQoNCmNsYXNzIFNldEl0ZXJhdG9yUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3Qgew0KcHVibGljOg0KICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0
Ow0KDQogICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPg0KICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQ0KICAgIHsNCiAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoU2V0SXRlcmF0b3JQcm90b3R5cGUpID09IHNpemVvZihCYXNl
KSk7IHN0YXRpY19hc3NlcnQoU2V0SXRlcmF0b3JQcm90b3R5cGU6OmRlc3Ryb3kgPT0gQmFzZTo6
ZGVzdHJveSk7Ow0KICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7DQogICAgfQ0K
DQogICAgc3RhdGljIFNldEl0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICB7DQogICAg
ICAgIFNldEl0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxTZXRJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIFNldEl0ZXJhdG9yUHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOw0KICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOw0KICAgICAgICByZXR1cm4gcHJvdG90eXBlOw0KICAgIH0NCg0KICAg
IHByb3RlY3RlZDogc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFzc0luZm8gc19pbmZvOyBwdWJsaWM6
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJu
ICZzX2luZm87IH07DQoNCiAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkNCiAg
ICB7DQogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsN
CiAgICB9DQoNCnByaXZhdGU6DQogICAgU2V0SXRlcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkNCiAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpDQogICAgew0K
ICAgIH0NCiAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsNCn07
DQoNCn0gDQojbGluZSAyOCAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxTb3VyY2VcXEphdmFT
Y3JpcHRDb3JlXFxydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcCINCg0KDQoNCg0KbmFt
ZXNwYWNlIEpTQyB7DQoNCmNvbnN0IENsYXNzSW5mbyBTZXRJdGVyYXRvclByb3RvdHlwZTo6c19p
bmZvID0geyAiU2V0IEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
SlNDYXN0aW5nSGVscGVyczo6SW5oZXJpdHNUcmFpdHM8U2V0SXRlcmF0b3JQcm90b3R5cGU+Ojp0
eXBlUmFuZ2UsIHsgJlNldEl0ZXJhdG9yUHJvdG90eXBlOjpkZXN0cm95LCAmU2V0SXRlcmF0b3JQ
cm90b3R5cGU6OnZpc2l0Q2hpbGRyZW4sICZTZXRJdGVyYXRvclByb3RvdHlwZTo6Z2V0Q2FsbERh
dGEsICZTZXRJdGVyYXRvclByb3RvdHlwZTo6Z2V0Q29uc3RydWN0RGF0YSwgJlNldEl0ZXJhdG9y
UHJvdG90eXBlOjpwdXQsICZTZXRJdGVyYXRvclByb3RvdHlwZTo6cHV0QnlJbmRleCwgJlNldEl0
ZXJhdG9yUHJvdG90eXBlOjpkZWxldGVQcm9wZXJ0eSwgJlNldEl0ZXJhdG9yUHJvdG90eXBlOjpk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgsICZTZXRJdGVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90LCAmU2V0SXRlcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgs
ICZTZXRJdGVyYXRvclByb3RvdHlwZTo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2ssICZTZXRJ
dGVyYXRvclByb3RvdHlwZTo6dG9UaGlzLCAmU2V0SXRlcmF0b3JQcm90b3R5cGU6OmRlZmF1bHRW
YWx1ZSwgJlNldEl0ZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCAmU2V0SXRl
cmF0b3JQcm90b3R5cGU6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcywgJlNldEl0ZXJhdG9y
UHJvdG90eXBlOjpnZXRQcm9wZXJ0eU5hbWVzLCAmU2V0SXRlcmF0b3JQcm90b3R5cGU6OmdldEVu
dW1lcmFibGVMZW5ndGgsICZTZXRJdGVyYXRvclByb3RvdHlwZTo6Z2V0U3RydWN0dXJlUHJvcGVy
dHlOYW1lcywgJlNldEl0ZXJhdG9yUHJvdG90eXBlOjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcywg
JlNldEl0ZXJhdG9yUHJvdG90eXBlOjpjbGFzc05hbWUsICZTZXRJdGVyYXRvclByb3RvdHlwZTo6
dG9TdHJpbmdOYW1lLCAmU2V0SXRlcmF0b3JQcm90b3R5cGU6OmN1c3RvbUhhc0luc3RhbmNlLCAm
U2V0SXRlcmF0b3JQcm90b3R5cGU6OmRlZmluZU93blByb3BlcnR5LCAmU2V0SXRlcmF0b3JQcm90
b3R5cGU6OnByZXZlbnRFeHRlbnNpb25zLCAmU2V0SXRlcmF0b3JQcm90b3R5cGU6OmlzRXh0ZW5z
aWJsZSwgJlNldEl0ZXJhdG9yUHJvdG90eXBlOjpzZXRQcm90b3R5cGUsICZTZXRJdGVyYXRvclBy
b3RvdHlwZTo6Z2V0UHJvdG90eXBlLCAmU2V0SXRlcmF0b3JQcm90b3R5cGU6OmR1bXBUb1N0cmVh
bSwgJlNldEl0ZXJhdG9yUHJvdG90eXBlOjphbmFseXplSGVhcCwgJlNldEl0ZXJhdG9yUHJvdG90
eXBlOjplc3RpbWF0ZWRTaXplLCAmU2V0SXRlcmF0b3JQcm90b3R5cGU6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHMsIH0sIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUs
IHNpemVvZihTZXRJdGVyYXRvclByb3RvdHlwZSksIH07DQoNCnZvaWQgU2V0SXRlcmF0b3JQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkNCnsNCiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7DQogICAgKCh2b2lkKTApOw0KDQog
ICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oIHZtLCBnbG9iYWxP
YmplY3QsIG1ha2VJZGVudGlmaWVyKHZtLCAodm0ucHJvcGVydHlOYW1lcy0+bmV4dCkpLCAoc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0Q29kZUdlbmVyYXRvcikodm0pLCAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpKTsNCiAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgaW5mbygpLT5jbGFzc05hbWUpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsNCn0N
Cg0KfQ0KI2xpbmUgOSAiRjpcXGdpdFBcXFdlYktpdFxcd2Via2l0XFxidWlsZF9hbWQ2NFxcSmF2
YVNjcmlwdENvcmVcXERlcml2ZWRTb3VyY2VzXFx1bmlmaWVkLXNvdXJjZXNcXFVuaWZpZWRTb3Vy
Y2UtZjJlMThmZmMtMzIuY3BwIg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405940</attachid>
            <date>2020-08-04 13:38:44 -0700</date>
            <delta_ts>2020-08-04 15:54:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215003-20200805053843.patch</filename>
            <type>text/plain</type>
            <size>2265</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY4Y2ExZmE5YWE0Mzk0NDJjNTg3OWY2
ZGM2Njg3ODUxMDg5N2U0MjQuLmVjZTk3NTU5MTAyNzI3NGI3ZTdmM2FlYTEzMzNiMWMwMmUwMWYy
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDgtMDQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW01TVkNdIHd0Zi9PcHRpb25hbC5oOiBl
cnJvciBDMjI4MDogJ1dURjo6Y29uc3RleHByX3N0b3JhZ2VfdDxUPiAmV1RGOjpjb25zdGV4cHJf
c3RvcmFnZV90PFQ+OjpvcGVyYXRvciA9KGNvbnN0IFdURjo6Y29uc3RleHByX3N0b3JhZ2VfdDxU
PiAmKSc6IGF0dGVtcHRpbmcgdG8gcmVmZXJlbmNlIGEgZGVsZXRlZCBmdW5jdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MDAzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWljcm9zb2Z0IHJlcG9y
dGVkIHRoZSB1cGNvbWluZyBNU1ZDIGNhbid0IGNvbXBpbGUKKyAgICAgICAgT3B0aW9uYWw8c3Rk
OjpwYWlyPEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6Q29kZUxvY2F0aW9uLEpT
Qzo6Q29kZUJsb2NrICo+Pi4KKworICAgICAgICA+IHd0Zi9PcHRpb25hbC5oKDQxOSwzOSk6IGVy
cm9yIEMyMjgwOiAnV1RGOjpjb25zdGV4cHJfc3RvcmFnZV90PFQ+ICZXVEY6OmNvbnN0ZXhwcl9z
dG9yYWdlX3Q8VD46Om9wZXJhdG9yID0oY29uc3QgV1RGOjpjb25zdGV4cHJfc3RvcmFnZV90PFQ+
ICYpJzogYXR0ZW1wdGluZyB0byByZWZlcmVuY2UgYSBkZWxldGVkIGZ1bmN0aW9uCisKKyAgICAg
ICAgVGhleSBzdWdnZXN0cyB1c2luZyBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5X2Fzc2lnbmFibGVf
diBpbgorICAgICAgICBPcHRpb25hbCBjdG9yIGluc3RlYWQgb2Ygc3RkOjppc190cml2aWFsbHlf
Y29weWFibGVfdi4KKworICAgICAgICAqIHd0Zi9PcHRpb25hbC5oOgorICAgICAgICAoV1RGOjpP
cHRpb25hbDo6T3B0aW9uYWwpOiBSZXBsYWNlZCBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZV92
IHdpdGggc3RkOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlX3YuCisKIDIwMjAtMDgtMDQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBh
Ym91dDogc2NoZW1lIFVSTCBjb25zdGFudHMgc2hvdWxkIGJlIGJhY2tlZCBieSBTdGF0aWNTdHJp
bmdJbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dU
Ri93dGYvT3B0aW9uYWwuaAppbmRleCA3YmYwZWNhNGI3MDc3YzhlYzU4MTQ0N2ZiNTg0MjRmNjY4
MWFlZjAzLi42N2FiYTExYWYxOTczYTM5NTFmNWMzM2M1MDZkMjA5ZjdhNmI1ZmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlv
bmFsLmgKQEAgLTQxNSw3ICs0MTUsNyBAQCBwdWJsaWM6CiAgIDogT3B0aW9uYWxCYXNlPFQ+KCkK
ICAgewogICAgIGlmIChyaHMuaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlX3Y8VD4pCisgICAgICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlX3Y8VD4pCiAgICAgICAgICAgICBPcHRp
b25hbEJhc2U8VD46OnN0b3JhZ2VfID0gKnJoczsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
OjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKCpyaHMpOwpAQCAtNDI3LDcg
KzQyNyw3IEBAIHB1YmxpYzoKICAgOiBPcHRpb25hbEJhc2U8VD4oKQogICB7CiAgICAgaWYgKHJo
cy5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc190cml2aWFs
bHlfY29weWFibGVfdjxUPikKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3RyaXZpYWxs
eV9jb3B5X2Fzc2lnbmFibGVfdjxUPikKICAgICAgICAgICAgIE9wdGlvbmFsQmFzZTxUPjo6c3Rv
cmFnZV8gPSAqcmhzOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICA6Om5ldyAoc3RhdGljX2Nh
c3Q8dm9pZCo+KGRhdGFwdHIoKSkpIFQoc3RkOjptb3ZlKCpyaHMpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>